diff --git a/.github/workflows/check-dist.yml b/.github/workflows/check-dist.yml index 1d2ce66..0d60636 100644 --- a/.github/workflows/check-dist.yml +++ b/.github/workflows/check-dist.yml @@ -45,11 +45,11 @@ jobs: id: build run: | rm -Rf dist - npm run package + npm run build # This will fail the workflow if the `dist/` directory is different than # expected. - - name: Compare Directories + - name: Compare dist/ Directories id: diff run: | if [ ! -d dist/ ]; then @@ -71,4 +71,4 @@ jobs: uses: actions/upload-artifact@v5 with: name: dist - path: dist/ + path: dist/ \ No newline at end of file diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index c458e17..4403f37 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -28,8 +28,20 @@ jobs: node-version-file: .node-version cache: npm + - name: Install Dependencies Common + id: npm-install-common + working-directory: ./packages/bicep-deploy-common + run: npm ci + + - name: Build bicep-deploy-common Package + id: build + working-directory: ./packages/bicep-deploy-common + run: | + rm -Rf dist + npm run build + - name: Install Dependencies - id: npm-ci + id: npm-install run: npm ci - name: Lint @@ -77,6 +89,18 @@ jobs: node-version-file: .node-version cache: npm + - name: Install Dependencies Common + id: npm-install-common + working-directory: ./packages/bicep-deploy-common + run: npm ci + + - name: Build bicep-deploy-common Package + id: build + working-directory: ./packages/bicep-deploy-common + run: | + rm -Rf dist + npm run build + - name: Install Dependencies id: npm-ci run: npm ci @@ -121,6 +145,13 @@ jobs: id: checkout uses: actions/checkout@v5 + - name: Setup Node.js + id: setup-node + uses: actions/setup-node@v6 + with: + node-version-file: .node-version + cache: npm + - uses: azure/login@v2 with: client-id: ${{ secrets.AZURE_CLIENT_ID }} diff --git a/.github/workflows/upload-package.yml b/.github/workflows/upload-package.yml new file mode 100644 index 0000000..6ee81e0 --- /dev/null +++ b/.github/workflows/upload-package.yml @@ -0,0 +1,59 @@ +name: Upload bicep-deploy-common Package + +on: workflow_dispatch + +permissions: + contents: read + +jobs: + upload-package: + name: Upload bicep-deploy-common Package + runs-on: ubuntu-latest + + steps: + - name: Checkout + id: checkout + uses: actions/checkout@v5 + + - name: Setup Node.js + id: setup-node + uses: actions/setup-node@v6 + with: + node-version-file: .node-version + cache: npm + + - name: Install Dependencies for bicep-deploy-common + id: install-common + working-directory: ./packages/bicep-deploy-common + run: npm ci + + - name: Build bicep-deploy-common Package + id: build + working-directory: ./packages/bicep-deploy-common + run: | + rm -Rf dist + npm run build + + - name: Create package tarball + id: pack + working-directory: ./packages/bicep-deploy-common + run: | + packOutput=$(npm pack --json) + echo "filename=$(echo $packOutput | jq -r '.[0].filename')" >> $GITHUB_OUTPUT + echo "version=$(echo $packOutput | jq -r '.[0].version')" >> $GITHUB_OUTPUT + + # Using upload steps defined for the Partner Release Pipeline (https://aka.ms/azsdk/partner-release-pipeline) + # azuresdkpartnerdrops is the managed identity that we use to upload to the partner drop folder + - name: Login to azuresdkpartnerdrops + uses: azure/login@v2 + with: + client-id: ${{ secrets.AZURESDKPARTNERDROPS_CLIENT_ID }} + tenant-id: ${{ secrets.AZURESDKPARTNERDROPS_TENANT_ID }} + subscription-id: ${{ secrets.AZURESDKPARTNERDROPS_SUBSCRIPTION_ID }} + + # Upload bicep-deploy-common package to partner drop folder to allow external distribution under the @azure scope + - name: Upload files to partner drop folder + working-directory: ./packages/bicep-deploy-common + run: | + echo "Uploading ${{ steps.pack.outputs.filename }} to partner drop folder at drops/bicep-deploy-common/npm/${{ steps.pack.outputs.version }}..." + az storage blob upload -f ${{ steps.pack.outputs.filename }} -c drops/bicep-deploy-common/npm/${{ steps.pack.outputs.version }} --account-name azuresdkpartnerdrops --auth-mode login \ No newline at end of file diff --git a/.gitignore b/.gitignore index 7ff6930..4f50967 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,6 @@ # Dependency directory node_modules +packages/**/node_modules # Rest pulled from https://github.com/github/gitignore/blob/master/Node.gitignore # Logs @@ -102,4 +103,7 @@ __tests__/runner/* *.code-workspace # build output -/out \ No newline at end of file +/out + +# Ignore package dist/ +packages/bicep-deploy-common/dist/ \ No newline at end of file diff --git a/.node-version b/.node-version index 9d67327..1d9b783 100644 --- a/.node-version +++ b/.node-version @@ -1 +1 @@ -22.8.0 +22.12.0 diff --git a/action.yml b/action.yml index 5fc7e8f..07486a6 100644 --- a/action.yml +++ b/action.yml @@ -108,4 +108,4 @@ inputs: runs: using: node20 - main: dist/index.js + main: dist/index.cjs diff --git a/dist/index.cjs b/dist/index.cjs new file mode 100644 index 0000000..857f7a7 --- /dev/null +++ b/dist/index.cjs @@ -0,0 +1,327 @@ +var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=Object.getOwnPropertyNames,i=Object.getPrototypeOf,a=Object.prototype.hasOwnProperty,o=(e,t)=>()=>(e&&(t=e(e=0)),t),s=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),c=(e,n)=>{let r={};for(var i in e)t(r,i,{get:e[i],enumerable:!0});return n&&t(r,Symbol.toStringTag,{value:`Module`}),r},l=(e,i,o,s)=>{if(i&&typeof i==`object`||typeof i==`function`)for(var c=r(i),l=0,u=c.length,d;li[e]).bind(null,d),enumerable:!(s=n(i,d))||s.enumerable});return e},u=(n,r,a)=>(a=n==null?{}:e(i(n)),l(r||!n||!n.__esModule?t(a,`default`,{value:n,enumerable:!0}):a,n)),d=e=>a.call(e,`module.exports`)?e[`module.exports`]:l(t({},`__esModule`,{value:!0}),e);let f=require(`crypto`);f=u(f);let p=require(`node:util`),m=require(`node:os`);m=u(m);let h=require(`node:process`);h=u(h);let g=require(`node:buffer`),_=require(`node:path`);_=u(_);let v=require(`node:url`),y=require(`node:child_process`);y=u(y);let b=require(`node:fs/promises`);b=u(b);let x=require(`node:fs`);x=u(x);var S=s((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.toCommandProperties=e.toCommandValue=void 0;function t(e){return e==null?``:typeof e==`string`||e instanceof String?e:JSON.stringify(e)}e.toCommandValue=t;function n(e){return Object.keys(e).length?{title:e.title,file:e.file,line:e.startLine,endLine:e.endLine,col:e.startColumn,endColumn:e.endColumn}:{}}e.toCommandProperties=n})),C=s((e=>{var t=e&&e.__createBinding||(Object.create?(function(e,t,n,r){r===void 0&&(r=n);var i=Object.getOwnPropertyDescriptor(t,n);(!i||(`get`in i?!t.__esModule:i.writable||i.configurable))&&(i={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,r,i)}):(function(e,t,n,r){r===void 0&&(r=n),e[r]=t[n]})),n=e&&e.__setModuleDefault||(Object.create?(function(e,t){Object.defineProperty(e,`default`,{enumerable:!0,value:t})}):function(e,t){e.default=t}),r=e&&e.__importStar||function(e){if(e&&e.__esModule)return e;var r={};if(e!=null)for(var i in e)i!==`default`&&Object.prototype.hasOwnProperty.call(e,i)&&t(r,e,i);return n(r,e),r};Object.defineProperty(e,`__esModule`,{value:!0}),e.issue=e.issueCommand=void 0;let i=r(require(`os`)),a=S();function o(e,t,n){let r=new c(e,t,n);process.stdout.write(r.toString()+i.EOL)}e.issueCommand=o;function s(e,t=``){o(e,{},t)}e.issue=s;var c=class{constructor(e,t,n){e||=`missing.command`,this.command=e,this.properties=t,this.message=n}toString(){let e=`::`+this.command;if(this.properties&&Object.keys(this.properties).length>0){e+=` `;let t=!0;for(let n in this.properties)if(this.properties.hasOwnProperty(n)){let r=this.properties[n];r&&(t?t=!1:e+=`,`,e+=`${n}=${u(r)}`)}}return e+=`::${l(this.message)}`,e}};function l(e){return(0,a.toCommandValue)(e).replace(/%/g,`%25`).replace(/\r/g,`%0D`).replace(/\n/g,`%0A`)}function u(e){return(0,a.toCommandValue)(e).replace(/%/g,`%25`).replace(/\r/g,`%0D`).replace(/\n/g,`%0A`).replace(/:/g,`%3A`).replace(/,/g,`%2C`)}})),w=s((e=>{var t=e&&e.__createBinding||(Object.create?(function(e,t,n,r){r===void 0&&(r=n);var i=Object.getOwnPropertyDescriptor(t,n);(!i||(`get`in i?!t.__esModule:i.writable||i.configurable))&&(i={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,r,i)}):(function(e,t,n,r){r===void 0&&(r=n),e[r]=t[n]})),n=e&&e.__setModuleDefault||(Object.create?(function(e,t){Object.defineProperty(e,`default`,{enumerable:!0,value:t})}):function(e,t){e.default=t}),r=e&&e.__importStar||function(e){if(e&&e.__esModule)return e;var r={};if(e!=null)for(var i in e)i!==`default`&&Object.prototype.hasOwnProperty.call(e,i)&&t(r,e,i);return n(r,e),r};Object.defineProperty(e,`__esModule`,{value:!0}),e.prepareKeyValueMessage=e.issueFileCommand=void 0;let i=r(require(`crypto`)),a=r(require(`fs`)),o=r(require(`os`)),s=S();function c(e,t){let n=process.env[`GITHUB_${e}`];if(!n)throw Error(`Unable to find environment variable for file command ${e}`);if(!a.existsSync(n))throw Error(`Missing file at path: ${n}`);a.appendFileSync(n,`${(0,s.toCommandValue)(t)}${o.EOL}`,{encoding:`utf8`})}e.issueFileCommand=c;function l(e,t){let n=`ghadelimiter_${i.randomUUID()}`,r=(0,s.toCommandValue)(t);if(e.includes(n))throw Error(`Unexpected input: name should not contain the delimiter "${n}"`);if(r.includes(n))throw Error(`Unexpected input: value should not contain the delimiter "${n}"`);return`${e}<<${n}${o.EOL}${r}${o.EOL}${n}`}e.prepareKeyValueMessage=l})),T=s((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.checkBypass=e.getProxyUrl=void 0;function t(e){let t=e.protocol===`https:`;if(n(e))return;let r=(()=>t?process.env.https_proxy||process.env.HTTPS_PROXY:process.env.http_proxy||process.env.HTTP_PROXY)();if(r)try{return new i(r)}catch{if(!r.startsWith(`http://`)&&!r.startsWith(`https://`))return new i(`http://${r}`)}else return}e.getProxyUrl=t;function n(e){if(!e.hostname)return!1;let t=e.hostname;if(r(t))return!0;let n=process.env.no_proxy||process.env.NO_PROXY||``;if(!n)return!1;let i;e.port?i=Number(e.port):e.protocol===`http:`?i=80:e.protocol===`https:`&&(i=443);let a=[e.hostname.toUpperCase()];typeof i==`number`&&a.push(`${a[0]}:${i}`);for(let e of n.split(`,`).map(e=>e.trim().toUpperCase()).filter(e=>e))if(e===`*`||a.some(t=>t===e||t.endsWith(`.${e}`)||e.startsWith(`.`)&&t.endsWith(`${e}`)))return!0;return!1}e.checkBypass=n;function r(e){let t=e.toLowerCase();return t===`localhost`||t.startsWith(`127.`)||t.startsWith(`[::1]`)||t.startsWith(`[0:0:0:0:0:0:0:1]`)}var i=class extends URL{constructor(e,t){super(e,t),this._decodedUsername=decodeURIComponent(super.username),this._decodedPassword=decodeURIComponent(super.password)}get username(){return this._decodedUsername}get password(){return this._decodedPassword}}})),E=s((e=>{require(`net`);var t=require(`tls`),n=require(`http`),r=require(`https`),i=require(`events`);require(`assert`);var a=require(`util`);e.httpOverHttp=o,e.httpsOverHttp=s,e.httpOverHttps=c,e.httpsOverHttps=l;function o(e){var t=new u(e);return t.request=n.request,t}function s(e){var t=new u(e);return t.request=n.request,t.createSocket=d,t.defaultPort=443,t}function c(e){var t=new u(e);return t.request=r.request,t}function l(e){var t=new u(e);return t.request=r.request,t.createSocket=d,t.defaultPort=443,t}function u(e){var t=this;t.options=e||{},t.proxyOptions=t.options.proxy||{},t.maxSockets=t.options.maxSockets||n.Agent.defaultMaxSockets,t.requests=[],t.sockets=[],t.on(`free`,function(e,n,r,i){for(var a=f(n,r,i),o=0,s=t.requests.length;o=this.maxSockets){i.requests.push(a);return}i.createSocket(a,function(t){t.on(`free`,n),t.on(`close`,r),t.on(`agentRemove`,r),e.onSocket(t);function n(){i.emit(`free`,t,a)}function r(e){i.removeSocket(t),t.removeListener(`free`,n),t.removeListener(`close`,r),t.removeListener(`agentRemove`,r)}})},u.prototype.createSocket=function(e,t){var n=this,r={};n.sockets.push(r);var i=p({},n.proxyOptions,{method:`CONNECT`,path:e.host+`:`+e.port,agent:!1,headers:{host:e.host+`:`+e.port}});e.localAddress&&(i.localAddress=e.localAddress),i.proxyAuth&&(i.headers=i.headers||{},i.headers[`Proxy-Authorization`]=`Basic `+new Buffer(i.proxyAuth).toString(`base64`)),m(`making CONNECT request`);var a=n.request(i);a.useChunkedEncodingByDefault=!1,a.once(`response`,o),a.once(`upgrade`,s),a.once(`connect`,c),a.once(`error`,l),a.end();function o(e){e.upgrade=!0}function s(e,t,n){process.nextTick(function(){c(e,t,n)})}function c(i,o,s){if(a.removeAllListeners(),o.removeAllListeners(),i.statusCode!==200){m(`tunneling socket could not be established, statusCode=%d`,i.statusCode),o.destroy();var c=Error(`tunneling socket could not be established, statusCode=`+i.statusCode);c.code=`ECONNRESET`,e.request.emit(`error`,c),n.removeSocket(r);return}if(s.length>0){m(`got illegal response body from proxy`),o.destroy();var c=Error(`got illegal response body from proxy`);c.code=`ECONNRESET`,e.request.emit(`error`,c),n.removeSocket(r);return}return m(`tunneling connection has established`),n.sockets[n.sockets.indexOf(r)]=o,t(o)}function l(t){a.removeAllListeners(),m(`tunneling socket could not be established, cause=%s +`,t.message,t.stack);var i=Error(`tunneling socket could not be established, cause=`+t.message);i.code=`ECONNRESET`,e.request.emit(`error`,i),n.removeSocket(r)}},u.prototype.removeSocket=function(e){var t=this.sockets.indexOf(e);if(t!==-1){this.sockets.splice(t,1);var n=this.requests.shift();n&&this.createSocket(n,function(e){n.request.onSocket(e)})}};function d(e,n){var r=this;u.prototype.createSocket.call(r,e,function(i){var a=e.request.getHeader(`host`),o=p({},r.options,{socket:i,servername:a?a.replace(/:.*$/,``):e.host}),s=t.connect(0,o);r.sockets[r.sockets.indexOf(i)]=s,n(s)})}function f(e,t,n){return typeof e==`string`?{host:e,port:t,localAddress:n}:e}function p(e){for(var t=1,n=arguments.length;t{t.exports=E()})),O=s(((e,t)=>{t.exports={kClose:Symbol(`close`),kDestroy:Symbol(`destroy`),kDispatch:Symbol(`dispatch`),kUrl:Symbol(`url`),kWriting:Symbol(`writing`),kResuming:Symbol(`resuming`),kQueue:Symbol(`queue`),kConnect:Symbol(`connect`),kConnecting:Symbol(`connecting`),kHeadersList:Symbol(`headers list`),kKeepAliveDefaultTimeout:Symbol(`default keep alive timeout`),kKeepAliveMaxTimeout:Symbol(`max keep alive timeout`),kKeepAliveTimeoutThreshold:Symbol(`keep alive timeout threshold`),kKeepAliveTimeoutValue:Symbol(`keep alive timeout`),kKeepAlive:Symbol(`keep alive`),kHeadersTimeout:Symbol(`headers timeout`),kBodyTimeout:Symbol(`body timeout`),kServerName:Symbol(`server name`),kLocalAddress:Symbol(`local address`),kHost:Symbol(`host`),kNoRef:Symbol(`no ref`),kBodyUsed:Symbol(`used`),kRunning:Symbol(`running`),kBlocking:Symbol(`blocking`),kPending:Symbol(`pending`),kSize:Symbol(`size`),kBusy:Symbol(`busy`),kQueued:Symbol(`queued`),kFree:Symbol(`free`),kConnected:Symbol(`connected`),kClosed:Symbol(`closed`),kNeedDrain:Symbol(`need drain`),kReset:Symbol(`reset`),kDestroyed:Symbol.for(`nodejs.stream.destroyed`),kMaxHeadersSize:Symbol(`max headers size`),kRunningIdx:Symbol(`running index`),kPendingIdx:Symbol(`pending index`),kError:Symbol(`error`),kClients:Symbol(`clients`),kClient:Symbol(`client`),kParser:Symbol(`parser`),kOnDestroyed:Symbol(`destroy callbacks`),kPipelining:Symbol(`pipelining`),kSocket:Symbol(`socket`),kHostHeader:Symbol(`host header`),kConnector:Symbol(`connector`),kStrictContentLength:Symbol(`strict content length`),kMaxRedirections:Symbol(`maxRedirections`),kMaxRequests:Symbol(`maxRequestsPerClient`),kProxy:Symbol(`proxy agent options`),kCounter:Symbol(`socket request counter`),kInterceptors:Symbol(`dispatch interceptors`),kMaxResponseSize:Symbol(`max response size`),kHTTP2Session:Symbol(`http2Session`),kHTTP2SessionState:Symbol(`http2Session state`),kHTTP2BuildRequest:Symbol(`http2 build request`),kHTTP1BuildRequest:Symbol(`http1 build request`),kHTTP2CopyHeaders:Symbol(`http2 copy headers`),kHTTPConnVersion:Symbol(`http connection version`),kRetryHandlerDefaultRetry:Symbol(`retry agent default retry`),kConstruct:Symbol(`constructable`)}})),k=s(((e,t)=>{var n=class extends Error{constructor(e){super(e),this.name=`UndiciError`,this.code=`UND_ERR`}},r=class e extends n{constructor(t){super(t),Error.captureStackTrace(this,e),this.name=`ConnectTimeoutError`,this.message=t||`Connect Timeout Error`,this.code=`UND_ERR_CONNECT_TIMEOUT`}},i=class e extends n{constructor(t){super(t),Error.captureStackTrace(this,e),this.name=`HeadersTimeoutError`,this.message=t||`Headers Timeout Error`,this.code=`UND_ERR_HEADERS_TIMEOUT`}},a=class e extends n{constructor(t){super(t),Error.captureStackTrace(this,e),this.name=`HeadersOverflowError`,this.message=t||`Headers Overflow Error`,this.code=`UND_ERR_HEADERS_OVERFLOW`}},o=class e extends n{constructor(t){super(t),Error.captureStackTrace(this,e),this.name=`BodyTimeoutError`,this.message=t||`Body Timeout Error`,this.code=`UND_ERR_BODY_TIMEOUT`}},s=class e extends n{constructor(t,n,r,i){super(t),Error.captureStackTrace(this,e),this.name=`ResponseStatusCodeError`,this.message=t||`Response Status Code Error`,this.code=`UND_ERR_RESPONSE_STATUS_CODE`,this.body=i,this.status=n,this.statusCode=n,this.headers=r}},c=class e extends n{constructor(t){super(t),Error.captureStackTrace(this,e),this.name=`InvalidArgumentError`,this.message=t||`Invalid Argument Error`,this.code=`UND_ERR_INVALID_ARG`}},l=class e extends n{constructor(t){super(t),Error.captureStackTrace(this,e),this.name=`InvalidReturnValueError`,this.message=t||`Invalid Return Value Error`,this.code=`UND_ERR_INVALID_RETURN_VALUE`}},u=class e extends n{constructor(t){super(t),Error.captureStackTrace(this,e),this.name=`AbortError`,this.message=t||`Request aborted`,this.code=`UND_ERR_ABORTED`}},d=class e extends n{constructor(t){super(t),Error.captureStackTrace(this,e),this.name=`InformationalError`,this.message=t||`Request information`,this.code=`UND_ERR_INFO`}},f=class e extends n{constructor(t){super(t),Error.captureStackTrace(this,e),this.name=`RequestContentLengthMismatchError`,this.message=t||`Request body length does not match content-length header`,this.code=`UND_ERR_REQ_CONTENT_LENGTH_MISMATCH`}},p=class e extends n{constructor(t){super(t),Error.captureStackTrace(this,e),this.name=`ResponseContentLengthMismatchError`,this.message=t||`Response body length does not match content-length header`,this.code=`UND_ERR_RES_CONTENT_LENGTH_MISMATCH`}},m=class e extends n{constructor(t){super(t),Error.captureStackTrace(this,e),this.name=`ClientDestroyedError`,this.message=t||`The client is destroyed`,this.code=`UND_ERR_DESTROYED`}},h=class e extends n{constructor(t){super(t),Error.captureStackTrace(this,e),this.name=`ClientClosedError`,this.message=t||`The client is closed`,this.code=`UND_ERR_CLOSED`}},g=class e extends n{constructor(t,n){super(t),Error.captureStackTrace(this,e),this.name=`SocketError`,this.message=t||`Socket error`,this.code=`UND_ERR_SOCKET`,this.socket=n}},_=class e extends n{constructor(t){super(t),Error.captureStackTrace(this,e),this.name=`NotSupportedError`,this.message=t||`Not supported error`,this.code=`UND_ERR_NOT_SUPPORTED`}},v=class extends n{constructor(e){super(e),Error.captureStackTrace(this,_),this.name=`MissingUpstreamError`,this.message=e||`No upstream has been added to the BalancedPool`,this.code=`UND_ERR_BPL_MISSING_UPSTREAM`}};t.exports={HTTPParserError:class e extends Error{constructor(t,n,r){super(t),Error.captureStackTrace(this,e),this.name=`HTTPParserError`,this.code=n?`HPE_${n}`:void 0,this.data=r?r.toString():void 0}},UndiciError:n,HeadersTimeoutError:i,HeadersOverflowError:a,BodyTimeoutError:o,RequestContentLengthMismatchError:f,ConnectTimeoutError:r,ResponseStatusCodeError:s,InvalidArgumentError:c,InvalidReturnValueError:l,RequestAbortedError:u,ClientDestroyedError:m,ClientClosedError:h,InformationalError:d,SocketError:g,NotSupportedError:_,ResponseContentLengthMismatchError:p,BalancedPoolMissingUpstreamError:v,ResponseExceededMaxSizeError:class e extends n{constructor(t){super(t),Error.captureStackTrace(this,e),this.name=`ResponseExceededMaxSizeError`,this.message=t||`Response content exceeded max size`,this.code=`UND_ERR_RES_EXCEEDED_MAX_SIZE`}},RequestRetryError:class e extends n{constructor(t,n,{headers:r,data:i}){super(t),Error.captureStackTrace(this,e),this.name=`RequestRetryError`,this.message=t||`Request retry error`,this.code=`UND_ERR_REQ_RETRY`,this.statusCode=n,this.data=i,this.headers=r}}}})),A=s(((e,t)=>{let n={},r=`Accept.Accept-Encoding.Accept-Language.Accept-Ranges.Access-Control-Allow-Credentials.Access-Control-Allow-Headers.Access-Control-Allow-Methods.Access-Control-Allow-Origin.Access-Control-Expose-Headers.Access-Control-Max-Age.Access-Control-Request-Headers.Access-Control-Request-Method.Age.Allow.Alt-Svc.Alt-Used.Authorization.Cache-Control.Clear-Site-Data.Connection.Content-Disposition.Content-Encoding.Content-Language.Content-Length.Content-Location.Content-Range.Content-Security-Policy.Content-Security-Policy-Report-Only.Content-Type.Cookie.Cross-Origin-Embedder-Policy.Cross-Origin-Opener-Policy.Cross-Origin-Resource-Policy.Date.Device-Memory.Downlink.ECT.ETag.Expect.Expect-CT.Expires.Forwarded.From.Host.If-Match.If-Modified-Since.If-None-Match.If-Range.If-Unmodified-Since.Keep-Alive.Last-Modified.Link.Location.Max-Forwards.Origin.Permissions-Policy.Pragma.Proxy-Authenticate.Proxy-Authorization.RTT.Range.Referer.Referrer-Policy.Refresh.Retry-After.Sec-WebSocket-Accept.Sec-WebSocket-Extensions.Sec-WebSocket-Key.Sec-WebSocket-Protocol.Sec-WebSocket-Version.Server.Server-Timing.Service-Worker-Allowed.Service-Worker-Navigation-Preload.Set-Cookie.SourceMap.Strict-Transport-Security.Supports-Loading-Mode.TE.Timing-Allow-Origin.Trailer.Transfer-Encoding.Upgrade.Upgrade-Insecure-Requests.User-Agent.Vary.Via.WWW-Authenticate.X-Content-Type-Options.X-DNS-Prefetch-Control.X-Frame-Options.X-Permitted-Cross-Domain-Policies.X-Powered-By.X-Requested-With.X-XSS-Protection`.split(`.`);for(let e=0;e{let n=require(`assert`),{kDestroyed:r,kBodyUsed:i}=O(),{IncomingMessage:a}=require(`http`),o=require(`stream`),s=require(`net`),{InvalidArgumentError:c}=k(),{Blob:l}=require(`buffer`),u=require(`util`),{stringify:d}=require(`querystring`),{headerNameLowerCasedRecord:f}=A(),[p,m]=process.versions.node.split(`.`).map(e=>Number(e));function h(){}function g(e){return e&&typeof e==`object`&&typeof e.pipe==`function`&&typeof e.on==`function`}function _(e){return l&&e instanceof l||e&&typeof e==`object`&&(typeof e.stream==`function`||typeof e.arrayBuffer==`function`)&&/^(Blob|File)$/.test(e[Symbol.toStringTag])}function v(e,t){if(e.includes(`?`)||e.includes(`#`))throw Error(`Query params cannot be passed when url already contains "?" or "#".`);let n=d(t);return n&&(e+=`?`+n),e}function y(e){if(typeof e==`string`){if(e=new URL(e),!/^https?:/.test(e.origin||e.protocol))throw new c("Invalid URL protocol: the URL must start with `http:` or `https:`.");return e}if(!e||typeof e!=`object`)throw new c(`Invalid URL: The URL argument must be a non-null object.`);if(!/^https?:/.test(e.origin||e.protocol))throw new c("Invalid URL protocol: the URL must start with `http:` or `https:`.");if(!(e instanceof URL)){if(e.port!=null&&e.port!==``&&!Number.isFinite(parseInt(e.port)))throw new c(`Invalid URL: port must be a valid integer or a string representation of an integer.`);if(e.path!=null&&typeof e.path!=`string`)throw new c(`Invalid URL path: the path must be a string or null/undefined.`);if(e.pathname!=null&&typeof e.pathname!=`string`)throw new c(`Invalid URL pathname: the pathname must be a string or null/undefined.`);if(e.hostname!=null&&typeof e.hostname!=`string`)throw new c(`Invalid URL hostname: the hostname must be a string or null/undefined.`);if(e.origin!=null&&typeof e.origin!=`string`)throw new c(`Invalid URL origin: the origin must be a string or null/undefined.`);let t=e.port==null?e.protocol===`https:`?443:80:e.port,n=e.origin==null?`${e.protocol}//${e.hostname}:${t}`:e.origin,r=e.path==null?`${e.pathname||``}${e.search||``}`:e.path;n.endsWith(`/`)&&(n=n.substring(0,n.length-1)),r&&!r.startsWith(`/`)&&(r=`/${r}`),e=new URL(n+r)}return e}function b(e){if(e=y(e),e.pathname!==`/`||e.search||e.hash)throw new c(`invalid url`);return e}function x(e){if(e[0]===`[`){let t=e.indexOf(`]`);return n(t!==-1),e.substring(1,t)}let t=e.indexOf(`:`);return t===-1?e:e.substring(0,t)}function S(e){if(!e)return null;n.strictEqual(typeof e,`string`);let t=x(e);return s.isIP(t)?``:t}function C(e){return JSON.parse(JSON.stringify(e))}function w(e){return e!=null&&typeof e[Symbol.asyncIterator]==`function`}function T(e){return e!=null&&(typeof e[Symbol.iterator]==`function`||typeof e[Symbol.asyncIterator]==`function`)}function E(e){if(e==null)return 0;if(g(e)){let t=e._readableState;return t&&t.objectMode===!1&&t.ended===!0&&Number.isFinite(t.length)?t.length:null}else if(_(e))return e.size==null?null:e.size;else if(L(e))return e.byteLength;return null}function D(e){return!e||!!(e.destroyed||e[r])}function j(e){let t=e&&e._readableState;return D(e)&&t&&!t.endEmitted}function M(e,t){e==null||!g(e)||D(e)||(typeof e.destroy==`function`?(Object.getPrototypeOf(e).constructor===a&&(e.socket=null),e.destroy(t)):t&&process.nextTick((e,t)=>{e.emit(`error`,t)},e,t),e.destroyed!==!0&&(e[r]=!0))}let N=/timeout=(\d+)/;function ee(e){let t=e.toString().match(N);return t?parseInt(t[1],10)*1e3:null}function P(e){return f[e]||e.toLowerCase()}function F(e,t={}){if(!Array.isArray(e))return e;for(let n=0;ne.toString(`utf8`)):t[r]=e[n+1].toString(`utf8`)}return`content-length`in t&&`content-disposition`in t&&(t[`content-disposition`]=Buffer.from(t[`content-disposition`]).toString(`latin1`)),t}function I(e){let t=[],n=!1,r=-1;for(let i=0;i{e.close()});else{let t=Buffer.isBuffer(r)?r:Buffer.from(r);e.enqueue(new Uint8Array(t))}return e.desiredSize>0},async cancel(e){await t.return()}},0)}function ie(e){return e&&typeof e==`object`&&typeof e.append==`function`&&typeof e.delete==`function`&&typeof e.get==`function`&&typeof e.getAll==`function`&&typeof e.has==`function`&&typeof e.set==`function`&&e[Symbol.toStringTag]===`FormData`}function U(e){if(e){if(typeof e.throwIfAborted==`function`)e.throwIfAborted();else if(e.aborted){let e=Error(`The operation was aborted`);throw e.name=`AbortError`,e}}}function W(e,t){return`addEventListener`in e?(e.addEventListener(`abort`,t,{once:!0}),()=>e.removeEventListener(`abort`,t)):(e.addListener(`abort`,t),()=>e.removeListener(`abort`,t))}let ae=!!String.prototype.toWellFormed;function G(e){return ae?`${e}`.toWellFormed():u.toUSVString?u.toUSVString(e):`${e}`}function oe(e){if(e==null||e===``)return{start:0,end:null,size:null};let t=e?e.match(/^bytes (\d+)-(\d+)\/(\d+)?$/):null;return t?{start:parseInt(t[1]),end:t[2]?parseInt(t[2]):null,size:t[3]?parseInt(t[3]):null}:null}let se=Object.create(null);se.enumerable=!0,t.exports={kEnumerableProperty:se,nop:h,isDisturbed:z,isErrored:B,isReadable:te,toUSVString:G,isReadableAborted:j,isBlobLike:_,parseOrigin:b,parseURL:y,getServerName:S,isStream:g,isIterable:T,isAsyncIterable:w,isDestroyed:D,headerNameToString:P,parseRawHeaders:I,parseHeaders:F,parseKeepAliveTimeout:ee,destroy:M,bodyLength:E,deepClone:C,ReadableStreamFrom:H,isBuffer:L,validateHandler:R,getSocketInfo:V,isFormDataLike:ie,buildURL:v,throwIfAborted:U,addAbortListener:W,parseRangeHeader:oe,nodeMajor:p,nodeMinor:m,nodeHasAutoSelectFamily:p>18||p===18&&m>=13,safeHTTPMethods:[`GET`,`HEAD`,`OPTIONS`,`TRACE`]}})),M=s(((e,t)=>{let n=Date.now(),r,i=[];function a(){n=Date.now();let e=i.length,t=0;for(;t0&&n>=r.state&&(r.state=-1,r.callback(r.opaque)),r.state===-1?(r.state=-2,t===e-1?i.pop():i[t]=i.pop(),--e):t+=1}i.length>0&&o()}function o(){r&&r.refresh?r.refresh():(clearTimeout(r),r=setTimeout(a,1e3),r.unref&&r.unref())}var s=class{constructor(e,t,n){this.callback=e,this.delay=t,this.opaque=n,this.state=-2,this.refresh()}refresh(){this.state===-2&&(i.push(this),(!r||i.length===1)&&o()),this.state=0}clear(){this.state=-1}};t.exports={setTimeout(e,t,n){return t<1e3?setTimeout(e,t,n):new s(e,t,n)},clearTimeout(e){e instanceof s?e.clear():clearTimeout(e)}}})),N=s(((e,t)=>{let n=require(`node:events`).EventEmitter,r=require(`node:util`).inherits;function i(e){if(typeof e==`string`&&(e=Buffer.from(e)),!Buffer.isBuffer(e))throw TypeError(`The needle has to be a String or a Buffer.`);let t=e.length;if(t===0)throw Error(`The needle cannot be an empty String/Buffer.`);if(t>256)throw Error(`The needle cannot have a length bigger than 256.`);this.maxMatches=1/0,this.matches=0,this._occ=Array(256).fill(t),this._lookbehind_size=0,this._needle=e,this._bufpos=0,this._lookbehind=Buffer.alloc(t);for(var n=0;n=0)this.emit(`info`,!1,this._lookbehind,0,this._lookbehind_size),this._lookbehind_size=0;else{let n=this._lookbehind_size+a;return n>0&&this.emit(`info`,!1,this._lookbehind,0,n),this._lookbehind.copy(this._lookbehind,0,n,this._lookbehind_size-n),this._lookbehind_size-=n,e.copy(this._lookbehind,this._lookbehind_size),this._lookbehind_size+=t,this._bufpos=t,t}}if(a+=(a>=0)*this._bufpos,e.indexOf(n,a)!==-1)return a=e.indexOf(n,a),++this.matches,a>0?this.emit(`info`,!0,e,this._bufpos,a):this.emit(`info`,!0),this._bufpos=a+r;for(a=t-r;a0&&this.emit(`info`,!1,e,this._bufpos,a{let n=require(`node:util`).inherits,r=require(`node:stream`).Readable;function i(e){r.call(this,e)}n(i,r),i.prototype._read=function(e){},t.exports=i})),P=s(((e,t)=>{t.exports=function(e,t,n){if(!e||e[t]===void 0||e[t]===null)return n;if(typeof e[t]!=`number`||isNaN(e[t]))throw TypeError(`Limit `+t+` is not a valid number`);return e[t]}})),F=s(((e,t)=>{let n=require(`node:events`).EventEmitter,r=require(`node:util`).inherits,i=P(),a=N(),o=Buffer.from(`\r +\r +`),s=/\r\n/g,c=/^([^:]+):[ \t]?([\x00-\xFF]+)?$/;function l(e){n.call(this),e||={};let t=this;this.nread=0,this.maxed=!1,this.npairs=0,this.maxHeaderPairs=i(e,`maxHeaderPairs`,2e3),this.maxHeaderSize=i(e,`maxHeaderSize`,80*1024),this.buffer=``,this.header={},this.finished=!1,this.ss=new a(o),this.ss.on(`info`,function(e,n,r,i){n&&!t.maxed&&(t.nread+i-r>=t.maxHeaderSize?(i=t.maxHeaderSize-t.nread+r,t.nread=t.maxHeaderSize,t.maxed=!0):t.nread+=i-r,t.buffer+=n.toString(`binary`,r,i)),e&&t._finish()})}r(l,n),l.prototype.push=function(e){let t=this.ss.push(e);if(this.finished)return t},l.prototype.reset=function(){this.finished=!1,this.buffer=``,this.header={},this.ss.reset()},l.prototype._finish=function(){this.buffer&&this._parseHeader(),this.ss.matches=this.ss.maxMatches;let e=this.header;this.header={},this.buffer=``,this.finished=!0,this.nread=this.npairs=0,this.maxed=!1,this.emit(`header`,e)},l.prototype._parseHeader=function(){if(this.npairs===this.maxHeaderPairs)return;let e=this.buffer.split(s),t=e.length,n,r;for(var i=0;i{let n=require(`node:stream`).Writable,r=require(`node:util`).inherits,i=N(),a=ee(),o=F(),s=Buffer.from(`-`),c=Buffer.from(`\r +`),l=function(){};function u(e){if(!(this instanceof u))return new u(e);if(n.call(this,e),!e||!e.headerFirst&&typeof e.boundary!=`string`)throw TypeError(`Boundary required`);typeof e.boundary==`string`?this.setBoundary(e.boundary):this._bparser=void 0,this._headerFirst=e.headerFirst,this._dashes=0,this._parts=0,this._finished=!1,this._realFinish=!1,this._isPreamble=!0,this._justMatched=!1,this._firstWrite=!0,this._inHeader=!0,this._part=void 0,this._cb=void 0,this._ignoreData=!1,this._partOpts={highWaterMark:e.partHwm},this._pause=!1;let t=this;this._hparser=new o(e),this._hparser.on(`header`,function(e){t._inHeader=!1,t._part.emit(`header`,e)})}r(u,n),u.prototype.emit=function(e){if(e===`finish`&&!this._realFinish){if(!this._finished){let e=this;process.nextTick(function(){if(e.emit(`error`,Error(`Unexpected end of multipart data`)),e._part&&!e._ignoreData){let t=e._isPreamble?`Preamble`:`Part`;e._part.emit(`error`,Error(t+` terminated early due to unexpected end of multipart data`)),e._part.push(null),process.nextTick(function(){e._realFinish=!0,e.emit(`finish`),e._realFinish=!1});return}e._realFinish=!0,e.emit(`finish`),e._realFinish=!1})}}else n.prototype.emit.apply(this,arguments)},u.prototype._write=function(e,t,n){if(!this._hparser&&!this._bparser)return n();if(this._headerFirst&&this._isPreamble){this._part||(this._part=new a(this._partOpts),this.listenerCount(`preamble`)===0?this._ignore():this.emit(`preamble`,this._part));let t=this._hparser.push(e);if(!this._inHeader&&t!==void 0&&t{let n=new TextDecoder(`utf-8`),r=new Map([[`utf-8`,n],[`utf8`,n]]);function i(e){let t;for(;;)switch(e){case`utf-8`:case`utf8`:return a.utf8;case`latin1`:case`ascii`:case`us-ascii`:case`iso-8859-1`:case`iso8859-1`:case`iso88591`:case`iso_8859-1`:case`windows-1252`:case`iso_8859-1:1987`:case`cp1252`:case`x-cp1252`:return a.latin1;case`utf16le`:case`utf-16le`:case`ucs2`:case`ucs-2`:return a.utf16le;case`base64`:return a.base64;default:if(t===void 0){t=!0,e=e.toLowerCase();continue}return a.other.bind(e)}}let a={utf8:(e,t)=>e.length===0?``:(typeof e==`string`&&(e=Buffer.from(e,t)),e.utf8Slice(0,e.length)),latin1:(e,t)=>e.length===0?``:typeof e==`string`?e:e.latin1Slice(0,e.length),utf16le:(e,t)=>e.length===0?``:(typeof e==`string`&&(e=Buffer.from(e,t)),e.ucs2Slice(0,e.length)),base64:(e,t)=>e.length===0?``:(typeof e==`string`&&(e=Buffer.from(e,t)),e.base64Slice(0,e.length)),other:(t,n)=>{if(t.length===0)return``;if(typeof t==`string`&&(t=Buffer.from(t,n)),r.has(e.toString()))try{return r.get(e).decode(t)}catch{}return typeof t==`string`?t:t.toString()}};function o(e,t,n){return e&&i(n)(e,t)}t.exports=o})),R=s(((e,t)=>{let n=L(),r=/%[a-fA-F0-9][a-fA-F0-9]/g,i={"%00":`\0`,"%01":``,"%02":``,"%03":``,"%04":``,"%05":``,"%06":``,"%07":`\x07`,"%08":`\b`,"%09":` `,"%0a":` +`,"%0A":` +`,"%0b":`\v`,"%0B":`\v`,"%0c":`\f`,"%0C":`\f`,"%0d":`\r`,"%0D":`\r`,"%0e":``,"%0E":``,"%0f":``,"%0F":``,"%10":``,"%11":``,"%12":``,"%13":``,"%14":``,"%15":``,"%16":``,"%17":``,"%18":``,"%19":``,"%1a":``,"%1A":``,"%1b":`\x1B`,"%1B":`\x1B`,"%1c":``,"%1C":``,"%1d":``,"%1D":``,"%1e":``,"%1E":``,"%1f":``,"%1F":``,"%20":` `,"%21":`!`,"%22":`"`,"%23":`#`,"%24":`$`,"%25":`%`,"%26":`&`,"%27":`'`,"%28":`(`,"%29":`)`,"%2a":`*`,"%2A":`*`,"%2b":`+`,"%2B":`+`,"%2c":`,`,"%2C":`,`,"%2d":`-`,"%2D":`-`,"%2e":`.`,"%2E":`.`,"%2f":`/`,"%2F":`/`,"%30":`0`,"%31":`1`,"%32":`2`,"%33":`3`,"%34":`4`,"%35":`5`,"%36":`6`,"%37":`7`,"%38":`8`,"%39":`9`,"%3a":`:`,"%3A":`:`,"%3b":`;`,"%3B":`;`,"%3c":`<`,"%3C":`<`,"%3d":`=`,"%3D":`=`,"%3e":`>`,"%3E":`>`,"%3f":`?`,"%3F":`?`,"%40":`@`,"%41":`A`,"%42":`B`,"%43":`C`,"%44":`D`,"%45":`E`,"%46":`F`,"%47":`G`,"%48":`H`,"%49":`I`,"%4a":`J`,"%4A":`J`,"%4b":`K`,"%4B":`K`,"%4c":`L`,"%4C":`L`,"%4d":`M`,"%4D":`M`,"%4e":`N`,"%4E":`N`,"%4f":`O`,"%4F":`O`,"%50":`P`,"%51":`Q`,"%52":`R`,"%53":`S`,"%54":`T`,"%55":`U`,"%56":`V`,"%57":`W`,"%58":`X`,"%59":`Y`,"%5a":`Z`,"%5A":`Z`,"%5b":`[`,"%5B":`[`,"%5c":`\\`,"%5C":`\\`,"%5d":`]`,"%5D":`]`,"%5e":`^`,"%5E":`^`,"%5f":`_`,"%5F":`_`,"%60":"`","%61":`a`,"%62":`b`,"%63":`c`,"%64":`d`,"%65":`e`,"%66":`f`,"%67":`g`,"%68":`h`,"%69":`i`,"%6a":`j`,"%6A":`j`,"%6b":`k`,"%6B":`k`,"%6c":`l`,"%6C":`l`,"%6d":`m`,"%6D":`m`,"%6e":`n`,"%6E":`n`,"%6f":`o`,"%6F":`o`,"%70":`p`,"%71":`q`,"%72":`r`,"%73":`s`,"%74":`t`,"%75":`u`,"%76":`v`,"%77":`w`,"%78":`x`,"%79":`y`,"%7a":`z`,"%7A":`z`,"%7b":`{`,"%7B":`{`,"%7c":`|`,"%7C":`|`,"%7d":`}`,"%7D":`}`,"%7e":`~`,"%7E":`~`,"%7f":``,"%7F":``,"%80":`€`,"%81":``,"%82":`‚`,"%83":`ƒ`,"%84":`„`,"%85":`…`,"%86":`†`,"%87":`‡`,"%88":`ˆ`,"%89":`‰`,"%8a":`Š`,"%8A":`Š`,"%8b":`‹`,"%8B":`‹`,"%8c":`Œ`,"%8C":`Œ`,"%8d":``,"%8D":``,"%8e":`Ž`,"%8E":`Ž`,"%8f":``,"%8F":``,"%90":``,"%91":`‘`,"%92":`’`,"%93":`“`,"%94":`”`,"%95":`•`,"%96":`–`,"%97":`—`,"%98":`˜`,"%99":`™`,"%9a":`š`,"%9A":`š`,"%9b":`›`,"%9B":`›`,"%9c":`œ`,"%9C":`œ`,"%9d":``,"%9D":``,"%9e":`ž`,"%9E":`ž`,"%9f":`Ÿ`,"%9F":`Ÿ`,"%a0":`\xA0`,"%A0":`\xA0`,"%a1":`¡`,"%A1":`¡`,"%a2":`¢`,"%A2":`¢`,"%a3":`£`,"%A3":`£`,"%a4":`¤`,"%A4":`¤`,"%a5":`¥`,"%A5":`¥`,"%a6":`¦`,"%A6":`¦`,"%a7":`§`,"%A7":`§`,"%a8":`¨`,"%A8":`¨`,"%a9":`©`,"%A9":`©`,"%aa":`ª`,"%Aa":`ª`,"%aA":`ª`,"%AA":`ª`,"%ab":`«`,"%Ab":`«`,"%aB":`«`,"%AB":`«`,"%ac":`¬`,"%Ac":`¬`,"%aC":`¬`,"%AC":`¬`,"%ad":`­`,"%Ad":`­`,"%aD":`­`,"%AD":`­`,"%ae":`®`,"%Ae":`®`,"%aE":`®`,"%AE":`®`,"%af":`¯`,"%Af":`¯`,"%aF":`¯`,"%AF":`¯`,"%b0":`°`,"%B0":`°`,"%b1":`±`,"%B1":`±`,"%b2":`²`,"%B2":`²`,"%b3":`³`,"%B3":`³`,"%b4":`´`,"%B4":`´`,"%b5":`µ`,"%B5":`µ`,"%b6":`¶`,"%B6":`¶`,"%b7":`·`,"%B7":`·`,"%b8":`¸`,"%B8":`¸`,"%b9":`¹`,"%B9":`¹`,"%ba":`º`,"%Ba":`º`,"%bA":`º`,"%BA":`º`,"%bb":`»`,"%Bb":`»`,"%bB":`»`,"%BB":`»`,"%bc":`¼`,"%Bc":`¼`,"%bC":`¼`,"%BC":`¼`,"%bd":`½`,"%Bd":`½`,"%bD":`½`,"%BD":`½`,"%be":`¾`,"%Be":`¾`,"%bE":`¾`,"%BE":`¾`,"%bf":`¿`,"%Bf":`¿`,"%bF":`¿`,"%BF":`¿`,"%c0":`À`,"%C0":`À`,"%c1":`Á`,"%C1":`Á`,"%c2":`Â`,"%C2":`Â`,"%c3":`Ã`,"%C3":`Ã`,"%c4":`Ä`,"%C4":`Ä`,"%c5":`Å`,"%C5":`Å`,"%c6":`Æ`,"%C6":`Æ`,"%c7":`Ç`,"%C7":`Ç`,"%c8":`È`,"%C8":`È`,"%c9":`É`,"%C9":`É`,"%ca":`Ê`,"%Ca":`Ê`,"%cA":`Ê`,"%CA":`Ê`,"%cb":`Ë`,"%Cb":`Ë`,"%cB":`Ë`,"%CB":`Ë`,"%cc":`Ì`,"%Cc":`Ì`,"%cC":`Ì`,"%CC":`Ì`,"%cd":`Í`,"%Cd":`Í`,"%cD":`Í`,"%CD":`Í`,"%ce":`Î`,"%Ce":`Î`,"%cE":`Î`,"%CE":`Î`,"%cf":`Ï`,"%Cf":`Ï`,"%cF":`Ï`,"%CF":`Ï`,"%d0":`Ð`,"%D0":`Ð`,"%d1":`Ñ`,"%D1":`Ñ`,"%d2":`Ò`,"%D2":`Ò`,"%d3":`Ó`,"%D3":`Ó`,"%d4":`Ô`,"%D4":`Ô`,"%d5":`Õ`,"%D5":`Õ`,"%d6":`Ö`,"%D6":`Ö`,"%d7":`×`,"%D7":`×`,"%d8":`Ø`,"%D8":`Ø`,"%d9":`Ù`,"%D9":`Ù`,"%da":`Ú`,"%Da":`Ú`,"%dA":`Ú`,"%DA":`Ú`,"%db":`Û`,"%Db":`Û`,"%dB":`Û`,"%DB":`Û`,"%dc":`Ü`,"%Dc":`Ü`,"%dC":`Ü`,"%DC":`Ü`,"%dd":`Ý`,"%Dd":`Ý`,"%dD":`Ý`,"%DD":`Ý`,"%de":`Þ`,"%De":`Þ`,"%dE":`Þ`,"%DE":`Þ`,"%df":`ß`,"%Df":`ß`,"%dF":`ß`,"%DF":`ß`,"%e0":`à`,"%E0":`à`,"%e1":`á`,"%E1":`á`,"%e2":`â`,"%E2":`â`,"%e3":`ã`,"%E3":`ã`,"%e4":`ä`,"%E4":`ä`,"%e5":`å`,"%E5":`å`,"%e6":`æ`,"%E6":`æ`,"%e7":`ç`,"%E7":`ç`,"%e8":`è`,"%E8":`è`,"%e9":`é`,"%E9":`é`,"%ea":`ê`,"%Ea":`ê`,"%eA":`ê`,"%EA":`ê`,"%eb":`ë`,"%Eb":`ë`,"%eB":`ë`,"%EB":`ë`,"%ec":`ì`,"%Ec":`ì`,"%eC":`ì`,"%EC":`ì`,"%ed":`í`,"%Ed":`í`,"%eD":`í`,"%ED":`í`,"%ee":`î`,"%Ee":`î`,"%eE":`î`,"%EE":`î`,"%ef":`ï`,"%Ef":`ï`,"%eF":`ï`,"%EF":`ï`,"%f0":`ð`,"%F0":`ð`,"%f1":`ñ`,"%F1":`ñ`,"%f2":`ò`,"%F2":`ò`,"%f3":`ó`,"%F3":`ó`,"%f4":`ô`,"%F4":`ô`,"%f5":`õ`,"%F5":`õ`,"%f6":`ö`,"%F6":`ö`,"%f7":`÷`,"%F7":`÷`,"%f8":`ø`,"%F8":`ø`,"%f9":`ù`,"%F9":`ù`,"%fa":`ú`,"%Fa":`ú`,"%fA":`ú`,"%FA":`ú`,"%fb":`û`,"%Fb":`û`,"%fB":`û`,"%FB":`û`,"%fc":`ü`,"%Fc":`ü`,"%fC":`ü`,"%FC":`ü`,"%fd":`ý`,"%Fd":`ý`,"%fD":`ý`,"%FD":`ý`,"%fe":`þ`,"%Fe":`þ`,"%fE":`þ`,"%FE":`þ`,"%ff":`ÿ`,"%Ff":`ÿ`,"%fF":`ÿ`,"%FF":`ÿ`};function a(e){return i[e]}function o(e){let t=[],i=0,o=``,s=!1,c=!1,l=0,u=``,d=e.length;for(var f=0;f{t.exports=function(e){if(typeof e!=`string`)return``;for(var t=e.length-1;t>=0;--t)switch(e.charCodeAt(t)){case 47:case 92:return e=e.slice(t+1),e===`..`||e===`.`?``:e}return e===`..`||e===`.`?``:e}})),B=s(((e,t)=>{let{Readable:n}=require(`node:stream`),{inherits:r}=require(`node:util`),i=I(),a=R(),o=L(),s=z(),c=P(),l=/^boundary$/i,u=/^form-data$/i,d=/^charset$/i,f=/^filename$/i,p=/^name$/i;m.detect=/^multipart\/form-data/i;function m(e,t){let n,r,m=this,_,v=t.limits,y=t.isPartAFile||((e,t,n)=>t===`application/octet-stream`||n!==void 0),b=t.parsedConType||[],x=t.defCharset||`utf8`,S=t.preservePath,C={highWaterMark:t.fileHwm};for(n=0,r=b.length;nk)return m.parser.removeListener(`part`,t),m.parser.on(`part`,h),e.hitPartsLimit=!0,e.emit(`partsLimit`),h(i);if(F){let e=F;e.emit(`end`),e.removeAllListeners(`end`)}i.on(`header`,function(t){let c,l,_,v,b,k,A=0;if(t[`content-type`]&&(_=a(t[`content-type`][0]),_[0])){for(c=_[0].toLowerCase(),n=0,r=_.length;nE){let n=E-A+e.length;n>0&&t.push(e.slice(0,n)),t.truncated=!0,t.bytesRead=E,i.removeAllListeners(`data`),t.emit(`limit`);return}else t.push(e)||(m._pause=!0);t.bytesRead=A},I=function(){P=void 0,t.push(null)}}else{if(N===O)return e.hitFieldsLimit||(e.hitFieldsLimit=!0,e.emit(`fieldsLimit`)),h(i);++N,++ee;let t=``,n=!1;F=i,j=function(e){if((A+=e.length)>T){let r=T-(A-e.length);t+=e.toString(`binary`,0,r),n=!0,i.removeAllListeners(`data`)}else t+=e.toString(`binary`)},I=function(){F=void 0,t.length&&(t=o(t,`binary`,v)),e.emit(`field`,l,t,!1,n,b,c),--ee,w()}}i._readableState.sync=!1,i.on(`data`,j),i.on(`end`,I)}).on(`error`,function(e){P&&P.emit(`error`,e)})}).on(`error`,function(t){e.emit(`error`,t)}).on(`finish`,function(){I=!0,w()})}m.prototype.write=function(e,t){let n=this.parser.write(e);n&&!this._pause?t():(this._needDrain=!n,this._cb=t)},m.prototype.end=function(){let e=this;e.parser.writable?e.parser.end():e._boy._done||process.nextTick(function(){e._boy._done=!0,e._boy.emit(`finish`)})};function h(e){e.resume()}function g(e){n.call(this,e),this.bytesRead=0,this.truncated=!1}r(g,n),g.prototype._read=function(e){},t.exports=m})),te=s(((e,t)=>{let n=/\+/g,r=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0];function i(){this.buffer=void 0}i.prototype.write=function(e){e=e.replace(n,` `);let t=``,i=0,a=0,o=e.length;for(;ia&&(t+=e.substring(a,i),a=i),this.buffer=``,++a):r[e.charCodeAt(i)]?(this.buffer+=e[i],++a,this.buffer.length===2&&(t+=String.fromCharCode(parseInt(this.buffer,16)),this.buffer=void 0)):(t+=`%`+this.buffer,this.buffer=void 0,--i);return a{let n=te(),r=L(),i=P(),a=/^charset$/i;o.detect=/^application\/x-www-form-urlencoded/i;function o(e,t){let r=t.limits,o=t.parsedConType;this.boy=e,this.fieldSizeLimit=i(r,`fieldSize`,1*1024*1024),this.fieldNameSizeLimit=i(r,`fieldNameSize`,100),this.fieldsLimit=i(r,`fields`,1/0);let s;for(var c=0,l=o.length;co&&(this._key+=this.decoder.write(e.toString(`binary`,o,n))),this._state=`val`,this._hitLimit=!1,this._checkingBytes=!0,this._val=``,this._bytesVal=0,this._valTrunc=!1,this.decoder.reset(),o=n+1;else if(i!==void 0){++this._fields;let n,a=this._keyTrunc;if(n=i>o?this._key+=this.decoder.write(e.toString(`binary`,o,i)):this._key,this._hitLimit=!1,this._checkingBytes=!0,this._key=``,this._bytesKey=0,this._keyTrunc=!1,this.decoder.reset(),n.length&&this.boy.emit(`field`,r(n,`binary`,this.charset),``,a,!1),o=i+1,this._fields===this.fieldsLimit)return t()}else this._hitLimit?(a>o&&(this._key+=this.decoder.write(e.toString(`binary`,o,a))),o=a,(this._bytesKey=this._key.length)===this.fieldNameSizeLimit&&(this._checkingBytes=!1,this._keyTrunc=!0)):(oo&&(this._val+=this.decoder.write(e.toString(`binary`,o,i))),this.boy.emit(`field`,r(this._key,`binary`,this.charset),r(this._val,`binary`,this.charset),this._keyTrunc,this._valTrunc),this._state=`key`,this._hitLimit=!1,this._checkingBytes=!0,this._key=``,this._bytesKey=0,this._keyTrunc=!1,this.decoder.reset(),o=i+1,this._fields===this.fieldsLimit)return t()}else this._hitLimit?(a>o&&(this._val+=this.decoder.write(e.toString(`binary`,o,a))),o=a,(this._val===``&&this.fieldSizeLimit===0||(this._bytesVal=this._val.length)===this.fieldSizeLimit)&&(this._checkingBytes=!1,this._valTrunc=!0)):(o0?this.boy.emit(`field`,r(this._key,`binary`,this.charset),``,this._keyTrunc,!1):this._state===`val`&&this.boy.emit(`field`,r(this._key,`binary`,this.charset),r(this._val,`binary`,this.charset),this._keyTrunc,this._valTrunc),this.boy._done=!0,this.boy.emit(`finish`))},t.exports=o})),ne=s(((e,t)=>{let n=require(`node:stream`).Writable,{inherits:r}=require(`node:util`),i=I(),a=B(),o=V(),s=R();function c(e){if(!(this instanceof c))return new c(e);if(typeof e!=`object`)throw TypeError(`Busboy expected an options-Object.`);if(typeof e.headers!=`object`)throw TypeError(`Busboy expected an options-Object with headers-attribute.`);if(typeof e.headers[`content-type`]!=`string`)throw TypeError(`Missing Content-Type-header.`);let{headers:t,...r}=e;this.opts={autoDestroy:!1,...r},n.call(this,this.opts),this._done=!1,this._parser=this.getParserByHeaders(t),this._finished=!1}r(c,n),c.prototype.emit=function(e){if(e===`finish`){if(this._done){if(this._finished)return}else{this._parser?.end();return}this._finished=!0}n.prototype.emit.apply(this,arguments)},c.prototype.getParserByHeaders=function(e){let t=s(e[`content-type`]),n={defCharset:this.opts.defCharset,fileHwm:this.opts.fileHwm,headers:e,highWaterMark:this.opts.highWaterMark,isPartAFile:this.opts.isPartAFile,limits:this.opts.limits,parsedConType:t,preservePath:this.opts.preservePath};if(a.detect.test(t[0]))return new a(this,n);if(o.detect.test(t[0]))return new o(this,n);throw Error(`Unsupported Content-Type.`)},c.prototype._write=function(e,t,n){this._parser.write(e,n)},t.exports=c,t.exports.default=c,t.exports.Busboy=c,t.exports.Dicer=i})),re=s(((e,t)=>{let{MessageChannel:n,receiveMessageOnPort:r}=require(`worker_threads`),i=[`GET`,`HEAD`,`POST`],a=new Set(i),o=[101,204,205,304],s=[301,302,303,307,308],c=new Set(s),l=`1.7.9.11.13.15.17.19.20.21.22.23.25.37.42.43.53.69.77.79.87.95.101.102.103.104.109.110.111.113.115.117.119.123.135.137.139.143.161.179.389.427.465.512.513.514.515.526.530.531.532.540.548.554.556.563.587.601.636.989.990.993.995.1719.1720.1723.2049.3659.4045.5060.5061.6000.6566.6665.6666.6667.6668.6669.6697.10080`.split(`.`),u=new Set(l),d=[``,`no-referrer`,`no-referrer-when-downgrade`,`same-origin`,`origin`,`strict-origin`,`origin-when-cross-origin`,`strict-origin-when-cross-origin`,`unsafe-url`],f=new Set(d),p=[`follow`,`manual`,`error`],m=[`GET`,`HEAD`,`OPTIONS`,`TRACE`],h=new Set(m),g=[`navigate`,`same-origin`,`no-cors`,`cors`],_=[`omit`,`same-origin`,`include`],v=[`default`,`no-store`,`reload`,`no-cache`,`force-cache`,`only-if-cached`],y=[`content-encoding`,`content-language`,`content-location`,`content-type`,`content-length`],b=[`half`],x=[`CONNECT`,`TRACE`,`TRACK`],S=new Set(x),C=[`audio`,`audioworklet`,`font`,`image`,`manifest`,`paintworklet`,`script`,`style`,`track`,`video`,`xslt`,``],w=new Set(C),T=globalThis.DOMException??(()=>{try{atob(`~`)}catch(e){return Object.getPrototypeOf(e).constructor}})(),E;t.exports={DOMException:T,structuredClone:globalThis.structuredClone??function(e,t=void 0){if(arguments.length===0)throw TypeError(`missing argument`);return E||=new n,E.port1.unref(),E.port2.unref(),E.port1.postMessage(e,t?.transfer),r(E.port2).message},subresource:C,forbiddenMethods:x,requestBodyHeader:y,referrerPolicy:d,requestRedirect:p,requestMode:g,requestCredentials:_,requestCache:v,redirectStatus:s,corsSafeListedMethods:i,nullBodyStatus:o,safeMethods:m,badPorts:l,requestDuplex:b,subresourceSet:w,badPortsSet:u,redirectStatusSet:c,corsSafeListedMethodsSet:a,safeMethodsSet:h,forbiddenMethodsSet:S,referrerPolicySet:f}})),H=s(((e,t)=>{let n=Symbol.for(`undici.globalOrigin.1`);function r(){return globalThis[n]}function i(e){if(e===void 0){Object.defineProperty(globalThis,n,{value:void 0,writable:!0,enumerable:!1,configurable:!1});return}let t=new URL(e);if(t.protocol!==`http:`&&t.protocol!==`https:`)throw TypeError(`Only http & https urls are allowed, received ${t.protocol}`);Object.defineProperty(globalThis,n,{value:t,writable:!0,enumerable:!1,configurable:!1})}t.exports={getGlobalOrigin:r,setGlobalOrigin:i}})),ie=s(((e,t)=>{let{redirectStatusSet:n,referrerPolicySet:r,badPortsSet:i}=re(),{getGlobalOrigin:a}=H(),{performance:o}=require(`perf_hooks`),{isBlobLike:s,toUSVString:c,ReadableStreamFrom:l}=j(),u=require(`assert`),{isUint8Array:d}=require(`util/types`),f=[],p;try{p=require(`crypto`);let e=[`sha256`,`sha384`,`sha512`];f=p.getHashes().filter(t=>e.includes(t))}catch{}function m(e){let t=e.urlList,n=t.length;return n===0?null:t[n-1].toString()}function h(e,t){if(!n.has(e.status))return null;let r=e.headersList.get(`location`);return r!==null&&C(r)&&(r=new URL(r,m(e))),r&&!r.hash&&(r.hash=t),r}function g(e){return e.urlList[e.urlList.length-1]}function _(e){let t=g(e);return be(t)&&i.has(t.port)?`blocked`:`allowed`}function v(e){return e instanceof Error||e?.constructor?.name===`Error`||e?.constructor?.name===`DOMException`}function y(e){for(let t=0;t=32&&n<=126||n>=128&&n<=255))return!1}return!0}function b(e){switch(e){case 34:case 40:case 41:case 44:case 47:case 58:case 59:case 60:case 61:case 62:case 63:case 64:case 91:case 92:case 93:case 123:case 125:return!1;default:return e>=33&&e<=126}}function x(e){if(e.length===0)return!1;for(let t=0;t0)for(let e=i.length;e!==0;e--){let t=i[e-1].trim();if(r.has(t)){a=t;break}}a!==``&&(e.referrerPolicy=a)}function T(){return`allowed`}function E(){return`success`}function D(){return`success`}function O(e){let t=null;t=e.mode,e.headersList.set(`sec-fetch-mode`,t)}function k(e){let t=e.origin;if(e.responseTainting===`cors`||e.mode===`websocket`)t&&e.headersList.append(`origin`,t);else if(e.method!==`GET`&&e.method!==`HEAD`){switch(e.referrerPolicy){case`no-referrer`:t=null;break;case`no-referrer-when-downgrade`:case`strict-origin`:case`strict-origin-when-cross-origin`:e.origin&&ye(e.origin)&&!ye(g(e))&&(t=null);break;case`same-origin`:ie(e,g(e))||(t=null);break;default:}t&&e.headersList.append(`origin`,t)}}function A(e){return o.now()}function M(e){return{startTime:e.startTime??0,redirectStartTime:0,redirectEndTime:0,postRedirectStartTime:e.startTime??0,finalServiceWorkerStartTime:0,finalNetworkResponseStartTime:0,finalNetworkRequestStartTime:0,endTime:0,encodedBodySize:0,decodedBodySize:0,finalConnectionTimingInfo:null}}function N(){return{referrerPolicy:`strict-origin-when-cross-origin`}}function ee(e){return{referrerPolicy:e.referrerPolicy}}function P(e){let t=e.referrerPolicy;u(t);let n=null;if(e.referrer===`client`){let e=a();if(!e||e.origin===`null`)return`no-referrer`;n=new URL(e)}else e.referrer instanceof URL&&(n=e.referrer);let r=F(n),i=F(n,!0);r.toString().length>4096&&(r=i);let o=ie(e,r),s=I(r)&&!I(e.url);switch(t){case`origin`:return i??F(n,!0);case`unsafe-url`:return r;case`same-origin`:return o?i:`no-referrer`;case`origin-when-cross-origin`:return o?r:i;case`strict-origin-when-cross-origin`:{let t=g(e);return ie(r,t)?r:I(r)&&!I(t)?`no-referrer`:i}case`strict-origin`:case`no-referrer-when-downgrade`:default:return s?`no-referrer`:i}}function F(e,t){return u(e instanceof URL),e.protocol===`file:`||e.protocol===`about:`||e.protocol===`blank:`?`no-referrer`:(e.username=``,e.password=``,e.hash=``,t&&(e.pathname=``,e.search=``),e)}function I(e){if(!(e instanceof URL))return!1;if(e.href===`about:blank`||e.href===`about:srcdoc`||e.protocol===`data:`||e.protocol===`file:`)return!0;return t(e.origin);function t(e){if(e==null||e===`null`)return!1;let t=new URL(e);return!!(t.protocol===`https:`||t.protocol===`wss:`||/^127(?:\.[0-9]+){0,2}\.[0-9]+$|^\[(?:0*:)*?:?0*1\]$/.test(t.hostname)||t.hostname===`localhost`||t.hostname.includes(`localhost.`)||t.hostname.endsWith(`.localhost`))}}function L(e,t){if(p===void 0)return!0;let n=z(t);if(n===`no metadata`||n.length===0)return!0;let r=te(n,B(n));for(let t of r){let n=t.algo,r=t.hash,i=p.createHash(n).update(e).digest(`base64`);if(i[i.length-1]===`=`&&(i=i[i.length-2]===`=`?i.slice(0,-2):i.slice(0,-1)),V(i,r))return!0}return!1}let R=/(?sha256|sha384|sha512)-((?[A-Za-z0-9+/]+|[A-Za-z0-9_-]+)={0,2}(?:\s|$)( +[!-~]*)?)?/i;function z(e){let t=[],n=!0;for(let r of e.split(` `)){n=!1;let e=R.exec(r);if(e===null||e.groups===void 0||e.groups.algo===void 0)continue;let i=e.groups.algo.toLowerCase();f.includes(i)&&t.push(e.groups)}return n===!0?`no metadata`:t}function B(e){let t=e[0].algo;if(t[3]===`5`)return t;for(let n=1;n{e=n,t=r}),resolve:e,reject:t}}function W(e){return e.controller.state===`aborted`}function ae(e){return e.controller.state===`aborted`||e.controller.state===`terminated`}let G={delete:`DELETE`,DELETE:`DELETE`,get:`GET`,GET:`GET`,head:`HEAD`,HEAD:`HEAD`,options:`OPTIONS`,OPTIONS:`OPTIONS`,post:`POST`,POST:`POST`,put:`PUT`,PUT:`PUT`};Object.setPrototypeOf(G,null);function oe(e){return G[e.toLowerCase()]??e}function se(e){let t=JSON.stringify(e);if(t===void 0)throw TypeError(`Value is not JSON serializable`);return u(typeof t==`string`),t}let ce=Object.getPrototypeOf(Object.getPrototypeOf([][Symbol.iterator]()));function le(e,t,n){let r={index:0,kind:n,target:e},i={next(){if(Object.getPrototypeOf(this)!==i)throw TypeError(`'next' called on an object that does not implement interface ${t} Iterator.`);let{index:e,kind:n,target:a}=r,o=a();if(e>=o.length)return{value:void 0,done:!0};let s=o[e];return r.index=e+1,ue(s,n)},[Symbol.toStringTag]:`${t} Iterator`};return Object.setPrototypeOf(i,ce),Object.setPrototypeOf({},i)}function ue(e,t){let n;switch(t){case`key`:n=e[0];break;case`value`:n=e[1];break;case`key+value`:n=e;break}return{value:n,done:!1}}async function de(e,t,n){let r=t,i=n,a;try{a=e.stream.getReader()}catch(e){i(e);return}try{r(await _e(a))}catch(e){i(e)}}let fe=globalThis.ReadableStream;function pe(e){return fe||=require(`stream/web`).ReadableStream,e instanceof fe||e[Symbol.toStringTag]===`ReadableStream`&&typeof e.tee==`function`}function me(e){return e.length<65535?String.fromCharCode(...e):e.reduce((e,t)=>e+String.fromCharCode(t),``)}function he(e){try{e.close()}catch(e){if(!e.message.includes(`Controller is already closed`))throw e}}function ge(e){for(let t=0;tObject.prototype.hasOwnProperty.call(e,t)),isErrorLike:v,fullyReadBody:de,bytesMatch:L,isReadableStreamLike:pe,readableStreamClose:he,isomorphicEncode:ge,isomorphicDecode:me,urlIsLocal:ve,urlHasHttpsScheme:ye,urlIsHttpHttpsScheme:be,readAllBytes:_e,normalizeMethodRecord:G,parseMetadata:z}})),U=s(((e,t)=>{t.exports={kUrl:Symbol(`url`),kHeaders:Symbol(`headers`),kSignal:Symbol(`signal`),kState:Symbol(`state`),kGuard:Symbol(`guard`),kRealm:Symbol(`realm`)}})),W=s(((e,t)=>{let{types:n}=require(`util`),{hasOwn:r,toUSVString:i}=ie(),a={};a.converters={},a.util={},a.errors={},a.errors.exception=function(e){return TypeError(`${e.header}: ${e.message}`)},a.errors.conversionFailed=function(e){let t=e.types.length===1?``:` one of`,n=`${e.argument} could not be converted to${t}: ${e.types.join(`, `)}.`;return a.errors.exception({header:e.prefix,message:n})},a.errors.invalidArgument=function(e){return a.errors.exception({header:e.prefix,message:`"${e.value}" is an invalid ${e.type}.`})},a.brandCheck=function(e,t,n=void 0){if(n?.strict!==!1&&!(e instanceof t))throw TypeError(`Illegal invocation`);return e?.[Symbol.toStringTag]===t.prototype[Symbol.toStringTag]},a.argumentLengthCheck=function({length:e},t,n){if(ei)throw a.errors.exception({header:`Integer conversion`,message:`Value must be between ${o}-${i}, got ${s}.`});return s}return!Number.isNaN(s)&&r.clamp===!0?(s=Math.min(Math.max(s,o),i),s=Math.floor(s)%2==0?Math.floor(s):Math.ceil(s),s):Number.isNaN(s)||s===0&&Object.is(0,s)||s===1/0||s===-1/0?0:(s=a.util.IntegerPart(s),s%=2**t,n===`signed`&&s>=2**t-1?s-2**t:s)},a.util.IntegerPart=function(e){let t=Math.floor(Math.abs(e));return e<0?-1*t:t},a.sequenceConverter=function(e){return t=>{if(a.util.Type(t)!==`Object`)throw a.errors.exception({header:`Sequence`,message:`Value of type ${a.util.Type(t)} is not an Object.`});let n=t?.[Symbol.iterator]?.(),r=[];if(n===void 0||typeof n.next!=`function`)throw a.errors.exception({header:`Sequence`,message:`Object is not an iterator.`});for(;;){let{done:t,value:i}=n.next();if(t)break;r.push(e(i))}return r}},a.recordConverter=function(e,t){return r=>{if(a.util.Type(r)!==`Object`)throw a.errors.exception({header:`Record`,message:`Value of type ${a.util.Type(r)} is not an Object.`});let i={};if(!n.isProxy(r)){let n=Object.keys(r);for(let a of n){let n=e(a);i[n]=t(r[a])}return i}let o=Reflect.ownKeys(r);for(let n of o)if(Reflect.getOwnPropertyDescriptor(r,n)?.enumerable){let a=e(n);i[a]=t(r[n])}return i}},a.interfaceConverter=function(e){return(t,n={})=>{if(n.strict!==!1&&!(t instanceof e))throw a.errors.exception({header:e.name,message:`Expected ${t} to be an instance of ${e.name}.`});return t}},a.dictionaryConverter=function(e){return t=>{let n=a.util.Type(t),i={};if(n===`Null`||n===`Undefined`)return i;if(n!==`Object`)throw a.errors.exception({header:`Dictionary`,message:`Expected ${t} to be one of: Null, Undefined, Object.`});for(let n of e){let{key:e,defaultValue:o,required:s,converter:c}=n;if(s===!0&&!r(t,e))throw a.errors.exception({header:`Dictionary`,message:`Missing required key "${e}".`});let l=t[e],u=r(n,`defaultValue`);if(u&&l!==null&&(l??=o),s||u||l!==void 0){if(l=c(l),n.allowedValues&&!n.allowedValues.includes(l))throw a.errors.exception({header:`Dictionary`,message:`${l} is not an accepted type. Expected one of ${n.allowedValues.join(`, `)}.`});i[e]=l}}return i}},a.nullableConverter=function(e){return t=>t===null?t:e(t)},a.converters.DOMString=function(e,t={}){if(e===null&&t.legacyNullToEmptyString)return``;if(typeof e==`symbol`)throw TypeError(`Could not convert argument of type symbol to string.`);return String(e)},a.converters.ByteString=function(e){let t=a.converters.DOMString(e);for(let e=0;e255)throw TypeError(`Cannot convert argument to a ByteString because the character at index ${e} has a value of ${t.charCodeAt(e)} which is greater than 255.`);return t},a.converters.USVString=i,a.converters.boolean=function(e){return!!e},a.converters.any=function(e){return e},a.converters[`long long`]=function(e){return a.util.ConvertToInt(e,64,`signed`)},a.converters[`unsigned long long`]=function(e){return a.util.ConvertToInt(e,64,`unsigned`)},a.converters[`unsigned long`]=function(e){return a.util.ConvertToInt(e,32,`unsigned`)},a.converters[`unsigned short`]=function(e,t){return a.util.ConvertToInt(e,16,`unsigned`,t)},a.converters.ArrayBuffer=function(e,t={}){if(a.util.Type(e)!==`Object`||!n.isAnyArrayBuffer(e))throw a.errors.conversionFailed({prefix:`${e}`,argument:`${e}`,types:[`ArrayBuffer`]});if(t.allowShared===!1&&n.isSharedArrayBuffer(e))throw a.errors.exception({header:`ArrayBuffer`,message:`SharedArrayBuffer is not allowed.`});return e},a.converters.TypedArray=function(e,t,r={}){if(a.util.Type(e)!==`Object`||!n.isTypedArray(e)||e.constructor.name!==t.name)throw a.errors.conversionFailed({prefix:`${t.name}`,argument:`${e}`,types:[t.name]});if(r.allowShared===!1&&n.isSharedArrayBuffer(e.buffer))throw a.errors.exception({header:`ArrayBuffer`,message:`SharedArrayBuffer is not allowed.`});return e},a.converters.DataView=function(e,t={}){if(a.util.Type(e)!==`Object`||!n.isDataView(e))throw a.errors.exception({header:`DataView`,message:`Object is not a DataView.`});if(t.allowShared===!1&&n.isSharedArrayBuffer(e.buffer))throw a.errors.exception({header:`ArrayBuffer`,message:`SharedArrayBuffer is not allowed.`});return e},a.converters.BufferSource=function(e,t={}){if(n.isAnyArrayBuffer(e))return a.converters.ArrayBuffer(e,t);if(n.isTypedArray(e))return a.converters.TypedArray(e,e.constructor);if(n.isDataView(e))return a.converters.DataView(e,t);throw TypeError(`Could not convert ${e} to a BufferSource.`)},a.converters[`sequence`]=a.sequenceConverter(a.converters.ByteString),a.converters[`sequence>`]=a.sequenceConverter(a.converters[`sequence`]),a.converters[`record`]=a.recordConverter(a.converters.ByteString,a.converters.ByteString),t.exports={webidl:a}})),ae=s(((e,t)=>{let n=require(`assert`),{atob:r}=require(`buffer`),{isomorphicDecode:i}=ie(),a=new TextEncoder,o=/^[!#$%&'*+-.^_|~A-Za-z0-9]+$/,s=/(\u000A|\u000D|\u0009|\u0020)/,c=/[\u0009|\u0020-\u007E|\u0080-\u00FF]/;function l(e){n(e.protocol===`data:`);let t=u(e,!0);t=t.slice(5);let r={position:0},a=f(`,`,t,r),o=a.length;if(a=S(a,!0,!0),r.position>=t.length)return`failure`;r.position++;let s=p(t.slice(o+1));if(/;(\u0020){0,}base64$/i.test(a)){if(s=g(i(s)),s===`failure`)return`failure`;a=a.slice(0,-6),a=a.replace(/(\u0020)+$/,``),a=a.slice(0,-1)}a.startsWith(`;`)&&(a=`text/plain`+a);let c=h(a);return c===`failure`&&(c=h(`text/plain;charset=US-ASCII`)),{mimeType:c,body:s}}function u(e,t=!1){if(!t)return e.href;let n=e.href,r=e.hash.length;return r===0?n:n.substring(0,n.length-r)}function d(e,t,n){let r=``;for(;n.positione.length)return`failure`;t.position++;let r=f(`;`,e,t);if(r=b(r,!1,!0),r.length===0||!o.test(r))return`failure`;let i=n.toLowerCase(),a=r.toLowerCase(),l={type:i,subtype:a,parameters:new Map,essence:`${i}/${a}`};for(;t.positions.test(e),e,t);let n=d(e=>e!==`;`&&e!==`=`,e,t);if(n=n.toLowerCase(),t.positione.length)break;let r=null;if(e[t.position]===`"`)r=_(e,t,!0),f(`;`,e,t);else if(r=f(`;`,e,t),r=b(r,!1,!0),r.length===0)continue;n.length!==0&&o.test(n)&&(r.length===0||c.test(r))&&!l.parameters.has(n)&&l.parameters.set(n,r)}return l}function g(e){if(e=e.replace(/[\u0009\u000A\u000C\u000D\u0020]/g,``),e.length%4==0&&(e=e.replace(/=?=$/,``)),e.length%4==1||/[^+/0-9A-Za-z]/.test(e))return`failure`;let t=r(e),n=new Uint8Array(t.length);for(let e=0;ee!==`"`&&e!==`\\`,e,t),!(t.position>=e.length);){let r=e[t.position];if(t.position++,r===`\\`){if(t.position>=e.length){a+=`\\`;break}a+=e[t.position],t.position++}else{n(r===`"`);break}}return r?a:e.slice(i,t.position)}function v(e){n(e!==`failure`);let{parameters:t,essence:r}=e,i=r;for(let[e,n]of t.entries())i+=`;`,i+=e,i+=`=`,o.test(n)||(n=n.replace(/(\\|")/g,`\\$1`),n=`"`+n,n+=`"`),i+=n;return i}function y(e){return e===`\r`||e===` +`||e===` `||e===` `}function b(e,t=!0,n=!0){let r=0,i=e.length-1;if(t)for(;r0&&y(e[i]);i--);return e.slice(r,i+1)}function x(e){return e===`\r`||e===` +`||e===` `||e===`\f`||e===` `}function S(e,t=!0,n=!0){let r=0,i=e.length-1;if(t)for(;r0&&x(e[i]);i--);return e.slice(r,i+1)}t.exports={dataURLProcessor:l,URLSerializer:u,collectASequenceOfCodePoints:d,collectASequenceOfCodePointsFast:f,stringPercentDecode:p,parseMIMEType:h,collectAnHTTPQuotedString:_,serializeAMimeType:v}})),G=s(((e,t)=>{let{Blob:n,File:r}=require(`buffer`),{types:i}=require(`util`),{kState:a}=U(),{isBlobLike:o}=ie(),{webidl:s}=W(),{parseMIMEType:c,serializeAMimeType:l}=ae(),{kEnumerableProperty:u}=j(),d=new TextEncoder;var f=class e extends n{constructor(e,t,n={}){s.argumentLengthCheck(arguments,2,{header:`File constructor`}),e=s.converters[`sequence`](e),t=s.converters.USVString(t),n=s.converters.FilePropertyBag(n);let r=t,i=n.type,o;substep:{if(i){if(i=c(i),i===`failure`){i=``;break substep}i=l(i).toLowerCase()}o=n.lastModified}super(m(e,n),{type:i}),this[a]={name:r,lastModified:o,type:i}}get name(){return s.brandCheck(this,e),this[a].name}get lastModified(){return s.brandCheck(this,e),this[a].lastModified}get type(){return s.brandCheck(this,e),this[a].type}},p=class e{constructor(e,t,n={}){this[a]={blobLike:e,name:t,type:n.type,lastModified:n.lastModified??Date.now()}}stream(...t){return s.brandCheck(this,e),this[a].blobLike.stream(...t)}arrayBuffer(...t){return s.brandCheck(this,e),this[a].blobLike.arrayBuffer(...t)}slice(...t){return s.brandCheck(this,e),this[a].blobLike.slice(...t)}text(...t){return s.brandCheck(this,e),this[a].blobLike.text(...t)}get size(){return s.brandCheck(this,e),this[a].blobLike.size}get type(){return s.brandCheck(this,e),this[a].blobLike.type}get name(){return s.brandCheck(this,e),this[a].name}get lastModified(){return s.brandCheck(this,e),this[a].lastModified}get[Symbol.toStringTag](){return`File`}};Object.defineProperties(f.prototype,{[Symbol.toStringTag]:{value:`File`,configurable:!0},name:u,lastModified:u}),s.converters.Blob=s.interfaceConverter(n),s.converters.BlobPart=function(e,t){if(s.util.Type(e)===`Object`){if(o(e))return s.converters.Blob(e,{strict:!1});if(ArrayBuffer.isView(e)||i.isAnyArrayBuffer(e))return s.converters.BufferSource(e,t)}return s.converters.USVString(e,t)},s.converters[`sequence`]=s.sequenceConverter(s.converters.BlobPart),s.converters.FilePropertyBag=s.dictionaryConverter([{key:`lastModified`,converter:s.converters[`long long`],get defaultValue(){return Date.now()}},{key:`type`,converter:s.converters.DOMString,defaultValue:``},{key:`endings`,converter:e=>(e=s.converters.DOMString(e),e=e.toLowerCase(),e!==`native`&&(e=`transparent`),e),defaultValue:`transparent`}]);function m(e,t){let n=[];for(let r of e)if(typeof r==`string`){let e=r;t.endings===`native`&&(e=h(e)),n.push(d.encode(e))}else i.isAnyArrayBuffer(r)||i.isTypedArray(r)?r.buffer?n.push(new Uint8Array(r.buffer,r.byteOffset,r.byteLength)):n.push(new Uint8Array(r)):o(r)&&n.push(r);return n}function h(e){let t=` +`;return process.platform===`win32`&&(t=`\r +`),e.replace(/\r?\n/g,t)}function g(e){return r&&e instanceof r||e instanceof f||e&&(typeof e.stream==`function`||typeof e.arrayBuffer==`function`)&&e[Symbol.toStringTag]===`File`}t.exports={File:f,FileLike:p,isFileLike:g}})),oe=s(((e,t)=>{let{isBlobLike:n,toUSVString:r,makeIterator:i}=ie(),{kState:a}=U(),{File:o,FileLike:s,isFileLike:c}=G(),{webidl:l}=W(),{Blob:u,File:d}=require(`buffer`),f=d??o;var p=class e{constructor(e){if(e!==void 0)throw l.errors.conversionFailed({prefix:`FormData constructor`,argument:`Argument 1`,types:[`undefined`]});this[a]=[]}append(t,r,i=void 0){if(l.brandCheck(this,e),l.argumentLengthCheck(arguments,2,{header:`FormData.append`}),arguments.length===3&&!n(r))throw TypeError(`Failed to execute 'append' on 'FormData': parameter 2 is not of type 'Blob'`);t=l.converters.USVString(t),r=n(r)?l.converters.Blob(r,{strict:!1}):l.converters.USVString(r),i=arguments.length===3?l.converters.USVString(i):void 0;let o=m(t,r,i);this[a].push(o)}delete(t){l.brandCheck(this,e),l.argumentLengthCheck(arguments,1,{header:`FormData.delete`}),t=l.converters.USVString(t),this[a]=this[a].filter(e=>e.name!==t)}get(t){l.brandCheck(this,e),l.argumentLengthCheck(arguments,1,{header:`FormData.get`}),t=l.converters.USVString(t);let n=this[a].findIndex(e=>e.name===t);return n===-1?null:this[a][n].value}getAll(t){return l.brandCheck(this,e),l.argumentLengthCheck(arguments,1,{header:`FormData.getAll`}),t=l.converters.USVString(t),this[a].filter(e=>e.name===t).map(e=>e.value)}has(t){return l.brandCheck(this,e),l.argumentLengthCheck(arguments,1,{header:`FormData.has`}),t=l.converters.USVString(t),this[a].findIndex(e=>e.name===t)!==-1}set(t,i,o=void 0){if(l.brandCheck(this,e),l.argumentLengthCheck(arguments,2,{header:`FormData.set`}),arguments.length===3&&!n(i))throw TypeError(`Failed to execute 'set' on 'FormData': parameter 2 is not of type 'Blob'`);t=l.converters.USVString(t),i=n(i)?l.converters.Blob(i,{strict:!1}):l.converters.USVString(i),o=arguments.length===3?r(o):void 0;let s=m(t,i,o),c=this[a].findIndex(e=>e.name===t);c===-1?this[a].push(s):this[a]=[...this[a].slice(0,c),s,...this[a].slice(c+1).filter(e=>e.name!==t)]}entries(){return l.brandCheck(this,e),i(()=>this[a].map(e=>[e.name,e.value]),`FormData`,`key+value`)}keys(){return l.brandCheck(this,e),i(()=>this[a].map(e=>[e.name,e.value]),`FormData`,`key`)}values(){return l.brandCheck(this,e),i(()=>this[a].map(e=>[e.name,e.value]),`FormData`,`value`)}forEach(t,n=globalThis){if(l.brandCheck(this,e),l.argumentLengthCheck(arguments,1,{header:`FormData.forEach`}),typeof t!=`function`)throw TypeError(`Failed to execute 'forEach' on 'FormData': parameter 1 is not of type 'Function'.`);for(let[e,r]of this)t.apply(n,[r,e,this])}};p.prototype[Symbol.iterator]=p.prototype.entries,Object.defineProperties(p.prototype,{[Symbol.toStringTag]:{value:`FormData`,configurable:!0}});function m(e,t,n){if(e=Buffer.from(e).toString(`utf8`),typeof t==`string`)t=Buffer.from(t).toString(`utf8`);else if(c(t)||(t=t instanceof u?new f([t],`blob`,{type:t.type}):new s(t,`blob`,{type:t.type})),n!==void 0){let e={type:t.type,lastModified:t.lastModified};t=d&&t instanceof d||t instanceof o?new f([t],n,e):new s(t,n,e)}return{name:e,value:t}}t.exports={FormData:p}})),se=s(((e,t)=>{let n=ne(),r=j(),{ReadableStreamFrom:i,isBlobLike:a,isReadableStreamLike:o,readableStreamClose:s,createDeferredPromise:c,fullyReadBody:l}=ie(),{FormData:u}=oe(),{kState:d}=U(),{webidl:f}=W(),{DOMException:p,structuredClone:m}=re(),{Blob:h,File:g}=require(`buffer`),{kBodyUsed:_}=O(),v=require(`assert`),{isErrored:y}=j(),{isUint8Array:b,isArrayBuffer:x}=require(`util/types`),{File:S}=G(),{parseMIMEType:C,serializeAMimeType:w}=ae(),T;try{let e=require(`node:crypto`);T=t=>e.randomInt(0,t)}catch{T=e=>Math.floor(Math.random(e))}let E=globalThis.ReadableStream,D=g??S,k=new TextEncoder,A=new TextDecoder;function M(e,t=!1){E||=require(`stream/web`).ReadableStream;let n=null;n=e instanceof E?e:a(e)?e.stream():new E({async pull(e){e.enqueue(typeof l==`string`?k.encode(l):l),queueMicrotask(()=>s(e))},start(){},type:void 0}),v(o(n));let c=null,l=null,u=null,d=null;if(typeof e==`string`)l=e,d=`text/plain;charset=UTF-8`;else if(e instanceof URLSearchParams)l=e.toString(),d=`application/x-www-form-urlencoded;charset=UTF-8`;else if(x(e))l=new Uint8Array(e.slice());else if(ArrayBuffer.isView(e))l=new Uint8Array(e.buffer.slice(e.byteOffset,e.byteOffset+e.byteLength));else if(r.isFormDataLike(e)){let t=`----formdata-undici-0${`${T(1e11)}`.padStart(11,`0`)}`,n=`--${t}\r\nContent-Disposition: form-data`,r=e=>e.replace(/\n/g,`%0A`).replace(/\r/g,`%0D`).replace(/"/g,`%22`),i=e=>e.replace(/\r?\n|\r/g,`\r +`),a=[],o=new Uint8Array([13,10]);u=0;let s=!1;for(let[t,c]of e)if(typeof c==`string`){let e=k.encode(n+`; name="${r(i(t))}"\r\n\r\n${i(c)}\r\n`);a.push(e),u+=e.byteLength}else{let e=k.encode(`${n}; name="${r(i(t))}"`+(c.name?`; filename="${r(c.name)}"`:``)+`\r +Content-Type: ${c.type||`application/octet-stream`}\r\n\r\n`);a.push(e,c,o),typeof c.size==`number`?u+=e.byteLength+c.size+o.byteLength:s=!0}let f=k.encode(`--${t}--`);a.push(f),u+=f.byteLength,s&&(u=null),l=e,c=async function*(){for(let e of a)e.stream?yield*e.stream():yield e},d=`multipart/form-data; boundary=`+t}else if(a(e))l=e,u=e.size,e.type&&(d=e.type);else if(typeof e[Symbol.asyncIterator]==`function`){if(t)throw TypeError(`keepalive`);if(r.isDisturbed(e)||e.locked)throw TypeError(`Response body object should not be disturbed or locked`);n=e instanceof E?e:i(e)}if((typeof l==`string`||r.isBuffer(l))&&(u=Buffer.byteLength(l)),c!=null){let t;n=new E({async start(){t=c(e)[Symbol.asyncIterator]()},async pull(e){let{value:r,done:i}=await t.next();return i?queueMicrotask(()=>{e.close()}):y(n)||e.enqueue(new Uint8Array(r)),e.desiredSize>0},async cancel(e){await t.return()},type:void 0})}return[{stream:n,source:l,length:u},d]}function N(e,t=!1){return E||=require(`stream/web`).ReadableStream,e instanceof E&&(v(!r.isDisturbed(e),`The body has already been consumed.`),v(!e.locked,`The stream is locked.`)),M(e,t)}function ee(e){let[t,n]=e.stream.tee(),[,r]=m(n,{transfer:[n]}).tee();return e.stream=t,{stream:r,length:e.length,source:e.source}}async function*P(e){if(e)if(b(e))yield e;else{let t=e.stream;if(r.isDisturbed(t))throw TypeError(`The body has already been consumed.`);if(t.locked)throw TypeError(`The stream is locked.`);t[_]=!0,yield*t}}function F(e){if(e.aborted)throw new p(`The operation was aborted.`,`AbortError`)}function I(e){return{blob(){return R(this,e=>{let t=V(this);return t===`failure`?t=``:t&&=w(t),new h([e],{type:t})},e)},arrayBuffer(){return R(this,e=>new Uint8Array(e).buffer,e)},text(){return R(this,B,e)},json(){return R(this,te,e)},async formData(){f.brandCheck(this,e),F(this[d]);let t=this.headers.get(`Content-Type`);if(/multipart\/form-data/.test(t)){let e={};for(let[t,n]of this.headers)e[t.toLowerCase()]=n;let t=new u,r;try{r=new n({headers:e,preservePath:!0})}catch(e){throw new p(`${e}`,`AbortError`)}r.on(`field`,(e,n)=>{t.append(e,n)}),r.on(`file`,(e,n,r,i,a)=>{let o=[];if(i===`base64`||i.toLowerCase()===`base64`){let i=``;n.on(`data`,e=>{i+=e.toString().replace(/[\r\n]/gm,``);let t=i.length-i.length%4;o.push(Buffer.from(i.slice(0,t),`base64`)),i=i.slice(t)}),n.on(`end`,()=>{o.push(Buffer.from(i,`base64`)),t.append(e,new D(o,r,{type:a}))})}else n.on(`data`,e=>{o.push(e)}),n.on(`end`,()=>{t.append(e,new D(o,r,{type:a}))})});let i=new Promise((e,t)=>{r.on(`finish`,e),r.on(`error`,e=>t(TypeError(e)))});if(this.body!==null)for await(let e of P(this[d].body))r.write(e);return r.end(),await i,t}else if(/application\/x-www-form-urlencoded/.test(t)){let e;try{let t=``,n=new TextDecoder(`utf-8`,{ignoreBOM:!0});for await(let e of P(this[d].body)){if(!b(e))throw TypeError(`Expected Uint8Array chunk`);t+=n.decode(e,{stream:!0})}t+=n.decode(),e=new URLSearchParams(t)}catch(e){throw Object.assign(TypeError(),{cause:e})}let t=new u;for(let[n,r]of e)t.append(n,r);return t}else throw await Promise.resolve(),F(this[d]),f.errors.exception({header:`${e.name}.formData`,message:`Could not parse content as FormData.`})}}}function L(e){Object.assign(e.prototype,I(e))}async function R(e,t,n){if(f.brandCheck(e,n),F(e[d]),z(e[d].body))throw TypeError(`Body is unusable`);let r=c(),i=e=>r.reject(e),a=e=>{try{r.resolve(t(e))}catch(e){i(e)}};return e[d].body==null?(a(new Uint8Array),r.promise):(await l(e[d].body,a,i),r.promise)}function z(e){return e!=null&&(e.stream.locked||r.isDisturbed(e.stream))}function B(e){return e.length===0?``:(e[0]===239&&e[1]===187&&e[2]===191&&(e=e.subarray(3)),A.decode(e))}function te(e){return JSON.parse(B(e))}function V(e){let{headersList:t}=e[d],n=t.get(`content-type`);return n===null?`failure`:C(n)}t.exports={extractBody:M,safelyExtractBody:N,cloneBody:ee,mixinBody:L}})),ce=s(((e,t)=>{let{InvalidArgumentError:n,NotSupportedError:r}=k(),i=require(`assert`),{kHTTP2BuildRequest:a,kHTTP2CopyHeaders:o,kHTTP1BuildRequest:s}=O(),c=j(),l=/^[\^_`a-zA-Z\-0-9!#$%&'*+.|~]+$/,u=/[^\t\x20-\x7e\x80-\xff]/,d=/[^\u0021-\u00ff]/,f=Symbol(`handler`),p={},m;try{let e=require(`diagnostics_channel`);p.create=e.channel(`undici:request:create`),p.bodySent=e.channel(`undici:request:bodySent`),p.headers=e.channel(`undici:request:headers`),p.trailers=e.channel(`undici:request:trailers`),p.error=e.channel(`undici:request:error`)}catch{p.create={hasSubscribers:!1},p.bodySent={hasSubscribers:!1},p.headers={hasSubscribers:!1},p.trailers={hasSubscribers:!1},p.error={hasSubscribers:!1}}var h=class e{constructor(e,{path:t,method:r,body:i,headers:a,query:o,idempotent:s,blocking:u,upgrade:h,headersTimeout:g,bodyTimeout:v,reset:y,throwOnError:b,expectContinue:x},S){if(typeof t!=`string`)throw new n(`path must be a string`);if(t[0]!==`/`&&!(t.startsWith(`http://`)||t.startsWith(`https://`))&&r!==`CONNECT`)throw new n(`path must be an absolute URL or start with a slash`);if(d.exec(t)!==null)throw new n(`invalid request path`);if(typeof r!=`string`)throw new n(`method must be a string`);if(l.exec(r)===null)throw new n(`invalid request method`);if(h&&typeof h!=`string`)throw new n(`upgrade must be a string`);if(g!=null&&(!Number.isFinite(g)||g<0))throw new n(`invalid headersTimeout`);if(v!=null&&(!Number.isFinite(v)||v<0))throw new n(`invalid bodyTimeout`);if(y!=null&&typeof y!=`boolean`)throw new n(`invalid reset`);if(x!=null&&typeof x!=`boolean`)throw new n(`invalid expectContinue`);if(this.headersTimeout=g,this.bodyTimeout=v,this.throwOnError=b===!0,this.method=r,this.abort=null,i==null)this.body=null;else if(c.isStream(i)){this.body=i;let e=this.body._readableState;(!e||!e.autoDestroy)&&(this.endHandler=function(){c.destroy(this)},this.body.on(`end`,this.endHandler)),this.errorHandler=e=>{this.abort?this.abort(e):this.error=e},this.body.on(`error`,this.errorHandler)}else if(c.isBuffer(i))this.body=i.byteLength?i:null;else if(ArrayBuffer.isView(i))this.body=i.buffer.byteLength?Buffer.from(i.buffer,i.byteOffset,i.byteLength):null;else if(i instanceof ArrayBuffer)this.body=i.byteLength?Buffer.from(i):null;else if(typeof i==`string`)this.body=i.length?Buffer.from(i):null;else if(c.isFormDataLike(i)||c.isIterable(i)||c.isBlobLike(i))this.body=i;else throw new n(`body must be a string, a Buffer, a Readable stream, an iterable, or an async iterable`);if(this.completed=!1,this.aborted=!1,this.upgrade=h||null,this.path=o?c.buildURL(t,o):t,this.origin=e,this.idempotent=s??(r===`HEAD`||r===`GET`),this.blocking=u??!1,this.reset=y??null,this.host=null,this.contentLength=null,this.contentType=null,this.headers=``,this.expectContinue=x??!1,Array.isArray(a)){if(a.length%2!=0)throw new n(`headers array must be even`);for(let e=0;e{let n=require(`events`);t.exports=class extends n{dispatch(){throw Error(`not implemented`)}close(){throw Error(`not implemented`)}destroy(){throw Error(`not implemented`)}}})),ue=s(((e,t)=>{let n=le(),{ClientDestroyedError:r,ClientClosedError:i,InvalidArgumentError:a}=k(),{kDestroy:o,kClose:s,kDispatch:c,kInterceptors:l}=O(),u=Symbol(`destroyed`),d=Symbol(`closed`),f=Symbol(`onDestroyed`),p=Symbol(`onClosed`),m=Symbol(`Intercepted Dispatch`);t.exports=class extends n{constructor(){super(),this[u]=!1,this[f]=null,this[d]=!1,this[p]=[]}get destroyed(){return this[u]}get closed(){return this[d]}get interceptors(){return this[l]}set interceptors(e){if(e){for(let t=e.length-1;t>=0;t--)if(typeof this[l][t]!=`function`)throw new a(`interceptor must be an function`)}this[l]=e}close(e){if(e===void 0)return new Promise((e,t)=>{this.close((n,r)=>n?t(n):e(r))});if(typeof e!=`function`)throw new a(`invalid callback`);if(this[u]){queueMicrotask(()=>e(new r,null));return}if(this[d]){this[p]?this[p].push(e):queueMicrotask(()=>e(null,null));return}this[d]=!0,this[p].push(e);let t=()=>{let e=this[p];this[p]=null;for(let t=0;tthis.destroy()).then(()=>{queueMicrotask(t)})}destroy(e,t){if(typeof e==`function`&&(t=e,e=null),t===void 0)return new Promise((t,n)=>{this.destroy(e,(e,r)=>e?n(e):t(r))});if(typeof t!=`function`)throw new a(`invalid callback`);if(this[u]){this[f]?this[f].push(t):queueMicrotask(()=>t(null,null));return}e||=new r,this[u]=!0,this[f]=this[f]||[],this[f].push(t);let n=()=>{let e=this[f];this[f]=null;for(let t=0;t{queueMicrotask(n)})}[m](e,t){if(!this[l]||this[l].length===0)return this[m]=this[c],this[c](e,t);let n=this[c].bind(this);for(let e=this[l].length-1;e>=0;e--)n=this[l][e](n);return this[m]=n,n(e,t)}dispatch(e,t){if(!t||typeof t!=`object`)throw new a(`handler must be an object`);try{if(!e||typeof e!=`object`)throw new a(`opts must be an object.`);if(this[u]||this[f])throw new r;if(this[d])throw new i;return this[m](e,t)}catch(e){if(typeof t.onError!=`function`)throw new a(`invalid onError method`);return t.onError(e),!1}}}})),de=s(((e,t)=>{let n=require(`net`),r=require(`assert`),i=j(),{InvalidArgumentError:a,ConnectTimeoutError:o}=k(),s,c;c=global.FinalizationRegistry&&!process.env.NODE_V8_COVERAGE?class{constructor(e){this._maxCachedSessions=e,this._sessionCache=new Map,this._sessionRegistry=new global.FinalizationRegistry(e=>{if(this._sessionCache.size=this._maxCachedSessions){let{value:e}=this._sessionCache.keys().next();this._sessionCache.delete(e)}this._sessionCache.set(e,t)}}};function l({allowH2:e,maxCachedSessions:t,socketPath:o,timeout:l,...f}){if(t!=null&&(!Number.isInteger(t)||t<0))throw new a(`maxCachedSessions must be a positive integer or zero`);let p={path:o,...f},m=new c(t??100);return l??=1e4,e??=!1,function({hostname:t,host:a,protocol:o,port:c,servername:f,localAddress:h,httpSocket:g},_){let v;if(o===`https:`){s||=require(`tls`),f=f||p.servername||i.getServerName(a)||null;let n=f||t,o=m.get(n)||null;r(n),v=s.connect({highWaterMark:16384,...p,servername:f,session:o,localAddress:h,ALPNProtocols:e?[`http/1.1`,`h2`]:[`http/1.1`],socket:g,port:c||443,host:t}),v.on(`session`,function(e){m.set(n,e)})}else r(!g,`httpSocket can only be sent on TLS update`),v=n.connect({highWaterMark:64*1024,...p,localAddress:h,port:c||80,host:t});if(p.keepAlive==null||p.keepAlive){let e=p.keepAliveInitialDelay===void 0?6e4:p.keepAliveInitialDelay;v.setKeepAlive(!0,e)}let y=u(()=>d(v),l);return v.setNoDelay(!0).once(o===`https:`?`secureConnect`:`connect`,function(){if(y(),_){let e=_;_=null,e(null,this)}}).on(`error`,function(e){if(y(),_){let t=_;_=null,t(e)}}),v}}function u(e,t){if(!t)return()=>{};let n=null,r=null,i=setTimeout(()=>{n=setImmediate(()=>{process.platform===`win32`?r=setImmediate(()=>e()):e()})},t);return()=>{clearTimeout(i),clearImmediate(n),clearImmediate(r)}}function d(e){i.destroy(e,new o)}t.exports=l})),fe=s((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.enumToMap=void 0;function t(e){let t={};return Object.keys(e).forEach(n=>{let r=e[n];typeof r==`number`&&(t[n]=r)}),t}e.enumToMap=t})),pe=s((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.SPECIAL_HEADERS=e.HEADER_STATE=e.MINOR=e.MAJOR=e.CONNECTION_TOKEN_CHARS=e.HEADER_CHARS=e.TOKEN=e.STRICT_TOKEN=e.HEX=e.URL_CHAR=e.STRICT_URL_CHAR=e.USERINFO_CHARS=e.MARK=e.ALPHANUM=e.NUM=e.HEX_MAP=e.NUM_MAP=e.ALPHA=e.FINISH=e.H_METHOD_MAP=e.METHOD_MAP=e.METHODS_RTSP=e.METHODS_ICE=e.METHODS_HTTP=e.METHODS=e.LENIENT_FLAGS=e.FLAGS=e.TYPE=e.ERROR=void 0;let t=fe();(function(e){e[e.OK=0]=`OK`,e[e.INTERNAL=1]=`INTERNAL`,e[e.STRICT=2]=`STRICT`,e[e.LF_EXPECTED=3]=`LF_EXPECTED`,e[e.UNEXPECTED_CONTENT_LENGTH=4]=`UNEXPECTED_CONTENT_LENGTH`,e[e.CLOSED_CONNECTION=5]=`CLOSED_CONNECTION`,e[e.INVALID_METHOD=6]=`INVALID_METHOD`,e[e.INVALID_URL=7]=`INVALID_URL`,e[e.INVALID_CONSTANT=8]=`INVALID_CONSTANT`,e[e.INVALID_VERSION=9]=`INVALID_VERSION`,e[e.INVALID_HEADER_TOKEN=10]=`INVALID_HEADER_TOKEN`,e[e.INVALID_CONTENT_LENGTH=11]=`INVALID_CONTENT_LENGTH`,e[e.INVALID_CHUNK_SIZE=12]=`INVALID_CHUNK_SIZE`,e[e.INVALID_STATUS=13]=`INVALID_STATUS`,e[e.INVALID_EOF_STATE=14]=`INVALID_EOF_STATE`,e[e.INVALID_TRANSFER_ENCODING=15]=`INVALID_TRANSFER_ENCODING`,e[e.CB_MESSAGE_BEGIN=16]=`CB_MESSAGE_BEGIN`,e[e.CB_HEADERS_COMPLETE=17]=`CB_HEADERS_COMPLETE`,e[e.CB_MESSAGE_COMPLETE=18]=`CB_MESSAGE_COMPLETE`,e[e.CB_CHUNK_HEADER=19]=`CB_CHUNK_HEADER`,e[e.CB_CHUNK_COMPLETE=20]=`CB_CHUNK_COMPLETE`,e[e.PAUSED=21]=`PAUSED`,e[e.PAUSED_UPGRADE=22]=`PAUSED_UPGRADE`,e[e.PAUSED_H2_UPGRADE=23]=`PAUSED_H2_UPGRADE`,e[e.USER=24]=`USER`})(e.ERROR||={}),(function(e){e[e.BOTH=0]=`BOTH`,e[e.REQUEST=1]=`REQUEST`,e[e.RESPONSE=2]=`RESPONSE`})(e.TYPE||={}),(function(e){e[e.CONNECTION_KEEP_ALIVE=1]=`CONNECTION_KEEP_ALIVE`,e[e.CONNECTION_CLOSE=2]=`CONNECTION_CLOSE`,e[e.CONNECTION_UPGRADE=4]=`CONNECTION_UPGRADE`,e[e.CHUNKED=8]=`CHUNKED`,e[e.UPGRADE=16]=`UPGRADE`,e[e.CONTENT_LENGTH=32]=`CONTENT_LENGTH`,e[e.SKIPBODY=64]=`SKIPBODY`,e[e.TRAILING=128]=`TRAILING`,e[e.TRANSFER_ENCODING=512]=`TRANSFER_ENCODING`})(e.FLAGS||={}),(function(e){e[e.HEADERS=1]=`HEADERS`,e[e.CHUNKED_LENGTH=2]=`CHUNKED_LENGTH`,e[e.KEEP_ALIVE=4]=`KEEP_ALIVE`})(e.LENIENT_FLAGS||={});var n;(function(e){e[e.DELETE=0]=`DELETE`,e[e.GET=1]=`GET`,e[e.HEAD=2]=`HEAD`,e[e.POST=3]=`POST`,e[e.PUT=4]=`PUT`,e[e.CONNECT=5]=`CONNECT`,e[e.OPTIONS=6]=`OPTIONS`,e[e.TRACE=7]=`TRACE`,e[e.COPY=8]=`COPY`,e[e.LOCK=9]=`LOCK`,e[e.MKCOL=10]=`MKCOL`,e[e.MOVE=11]=`MOVE`,e[e.PROPFIND=12]=`PROPFIND`,e[e.PROPPATCH=13]=`PROPPATCH`,e[e.SEARCH=14]=`SEARCH`,e[e.UNLOCK=15]=`UNLOCK`,e[e.BIND=16]=`BIND`,e[e.REBIND=17]=`REBIND`,e[e.UNBIND=18]=`UNBIND`,e[e.ACL=19]=`ACL`,e[e.REPORT=20]=`REPORT`,e[e.MKACTIVITY=21]=`MKACTIVITY`,e[e.CHECKOUT=22]=`CHECKOUT`,e[e.MERGE=23]=`MERGE`,e[e[`M-SEARCH`]=24]=`M-SEARCH`,e[e.NOTIFY=25]=`NOTIFY`,e[e.SUBSCRIBE=26]=`SUBSCRIBE`,e[e.UNSUBSCRIBE=27]=`UNSUBSCRIBE`,e[e.PATCH=28]=`PATCH`,e[e.PURGE=29]=`PURGE`,e[e.MKCALENDAR=30]=`MKCALENDAR`,e[e.LINK=31]=`LINK`,e[e.UNLINK=32]=`UNLINK`,e[e.SOURCE=33]=`SOURCE`,e[e.PRI=34]=`PRI`,e[e.DESCRIBE=35]=`DESCRIBE`,e[e.ANNOUNCE=36]=`ANNOUNCE`,e[e.SETUP=37]=`SETUP`,e[e.PLAY=38]=`PLAY`,e[e.PAUSE=39]=`PAUSE`,e[e.TEARDOWN=40]=`TEARDOWN`,e[e.GET_PARAMETER=41]=`GET_PARAMETER`,e[e.SET_PARAMETER=42]=`SET_PARAMETER`,e[e.REDIRECT=43]=`REDIRECT`,e[e.RECORD=44]=`RECORD`,e[e.FLUSH=45]=`FLUSH`})(n=e.METHODS||={}),e.METHODS_HTTP=[n.DELETE,n.GET,n.HEAD,n.POST,n.PUT,n.CONNECT,n.OPTIONS,n.TRACE,n.COPY,n.LOCK,n.MKCOL,n.MOVE,n.PROPFIND,n.PROPPATCH,n.SEARCH,n.UNLOCK,n.BIND,n.REBIND,n.UNBIND,n.ACL,n.REPORT,n.MKACTIVITY,n.CHECKOUT,n.MERGE,n[`M-SEARCH`],n.NOTIFY,n.SUBSCRIBE,n.UNSUBSCRIBE,n.PATCH,n.PURGE,n.MKCALENDAR,n.LINK,n.UNLINK,n.PRI,n.SOURCE],e.METHODS_ICE=[n.SOURCE],e.METHODS_RTSP=[n.OPTIONS,n.DESCRIBE,n.ANNOUNCE,n.SETUP,n.PLAY,n.PAUSE,n.TEARDOWN,n.GET_PARAMETER,n.SET_PARAMETER,n.REDIRECT,n.RECORD,n.FLUSH,n.GET,n.POST],e.METHOD_MAP=t.enumToMap(n),e.H_METHOD_MAP={},Object.keys(e.METHOD_MAP).forEach(t=>{/^H/.test(t)&&(e.H_METHOD_MAP[t]=e.METHOD_MAP[t])}),(function(e){e[e.SAFE=0]=`SAFE`,e[e.SAFE_WITH_CB=1]=`SAFE_WITH_CB`,e[e.UNSAFE=2]=`UNSAFE`})(e.FINISH||={}),e.ALPHA=[];for(let t=65;t<=90;t++)e.ALPHA.push(String.fromCharCode(t)),e.ALPHA.push(String.fromCharCode(t+32));e.NUM_MAP={0:0,1:1,2:2,3:3,4:4,5:5,6:6,7:7,8:8,9:9},e.HEX_MAP={0:0,1:1,2:2,3:3,4:4,5:5,6:6,7:7,8:8,9:9,A:10,B:11,C:12,D:13,E:14,F:15,a:10,b:11,c:12,d:13,e:14,f:15},e.NUM=[`0`,`1`,`2`,`3`,`4`,`5`,`6`,`7`,`8`,`9`],e.ALPHANUM=e.ALPHA.concat(e.NUM),e.MARK=[`-`,`_`,`.`,`!`,`~`,`*`,`'`,`(`,`)`],e.USERINFO_CHARS=e.ALPHANUM.concat(e.MARK).concat([`%`,`;`,`:`,`&`,`=`,`+`,`$`,`,`]),e.STRICT_URL_CHAR=`!"$%&'()*+,-./:;<=>@[\\]^_\`{|}~`.split(``).concat(e.ALPHANUM),e.URL_CHAR=e.STRICT_URL_CHAR.concat([` `,`\f`]);for(let t=128;t<=255;t++)e.URL_CHAR.push(t);e.HEX=e.NUM.concat([`a`,`b`,`c`,`d`,`e`,`f`,`A`,`B`,`C`,`D`,`E`,`F`]),e.STRICT_TOKEN=[`!`,`#`,`$`,`%`,`&`,`'`,`*`,`+`,`-`,`.`,`^`,`_`,"`",`|`,`~`].concat(e.ALPHANUM),e.TOKEN=e.STRICT_TOKEN.concat([` `]),e.HEADER_CHARS=[` `];for(let t=32;t<=255;t++)t!==127&&e.HEADER_CHARS.push(t);e.CONNECTION_TOKEN_CHARS=e.HEADER_CHARS.filter(e=>e!==44),e.MAJOR=e.NUM_MAP,e.MINOR=e.MAJOR;var r;(function(e){e[e.GENERAL=0]=`GENERAL`,e[e.CONNECTION=1]=`CONNECTION`,e[e.CONTENT_LENGTH=2]=`CONTENT_LENGTH`,e[e.TRANSFER_ENCODING=3]=`TRANSFER_ENCODING`,e[e.UPGRADE=4]=`UPGRADE`,e[e.CONNECTION_KEEP_ALIVE=5]=`CONNECTION_KEEP_ALIVE`,e[e.CONNECTION_CLOSE=6]=`CONNECTION_CLOSE`,e[e.CONNECTION_UPGRADE=7]=`CONNECTION_UPGRADE`,e[e.TRANSFER_ENCODING_CHUNKED=8]=`TRANSFER_ENCODING_CHUNKED`})(r=e.HEADER_STATE||={}),e.SPECIAL_HEADERS={connection:r.CONNECTION,"content-length":r.CONTENT_LENGTH,"proxy-connection":r.CONNECTION,"transfer-encoding":r.TRANSFER_ENCODING,upgrade:r.UPGRADE}})),me=s(((e,t)=>{let n=j(),{kBodyUsed:r}=O(),i=require(`assert`),{InvalidArgumentError:a}=k(),o=require(`events`),s=[300,301,302,303,307,308],c=Symbol(`body`);var l=class{constructor(e){this[c]=e,this[r]=!1}async*[Symbol.asyncIterator](){i(!this[r],`disturbed`),this[r]=!0,yield*this[c]}},u=class{constructor(e,t,s,c){if(t!=null&&(!Number.isInteger(t)||t<0))throw new a(`maxRedirections must be a positive number`);n.validateHandler(c,s.method,s.upgrade),this.dispatch=e,this.location=null,this.abort=null,this.opts={...s,maxRedirections:0},this.maxRedirections=t,this.handler=c,this.history=[],n.isStream(this.opts.body)?(n.bodyLength(this.opts.body)===0&&this.opts.body.on(`data`,function(){i(!1)}),typeof this.opts.body.readableDidRead!=`boolean`&&(this.opts.body[r]=!1,o.prototype.on.call(this.opts.body,`data`,function(){this[r]=!0}))):(this.opts.body&&typeof this.opts.body.pipeTo==`function`||this.opts.body&&typeof this.opts.body!=`string`&&!ArrayBuffer.isView(this.opts.body)&&n.isIterable(this.opts.body))&&(this.opts.body=new l(this.opts.body))}onConnect(e){this.abort=e,this.handler.onConnect(e,{history:this.history})}onUpgrade(e,t,n){this.handler.onUpgrade(e,t,n)}onError(e){this.handler.onError(e)}onHeaders(e,t,r,i){if(this.location=this.history.length>=this.maxRedirections||n.isDisturbed(this.opts.body)?null:d(e,t),this.opts.origin&&this.history.push(new URL(this.opts.path,this.opts.origin)),!this.location)return this.handler.onHeaders(e,t,r,i);let{origin:a,pathname:o,search:s}=n.parseURL(new URL(this.location,this.opts.origin&&new URL(this.opts.path,this.opts.origin))),c=s?`${o}${s}`:o;this.opts.headers=p(this.opts.headers,e===303,this.opts.origin!==a),this.opts.path=c,this.opts.origin=a,this.opts.maxRedirections=0,this.opts.query=null,e===303&&this.opts.method!==`HEAD`&&(this.opts.method=`GET`,this.opts.body=null)}onData(e){if(!this.location)return this.handler.onData(e)}onComplete(e){this.location?(this.location=null,this.abort=null,this.dispatch(this.opts,this)):this.handler.onComplete(e)}onBodySent(e){this.handler.onBodySent&&this.handler.onBodySent(e)}};function d(e,t){if(s.indexOf(e)===-1)return null;for(let e=0;e{let n=me();function r({maxRedirections:e}){return t=>function(r,i){let{maxRedirections:a=e}=r;if(!a)return t(r,i);let o=new n(t,a,r,i);return r={...r,maxRedirections:0},t(r,o)}}t.exports=r})),ge=s(((e,t)=>{t.exports=`AGFzbQEAAAABMAhgAX8Bf2ADf39/AX9gBH9/f38Bf2AAAGADf39/AGABfwBgAn9/AGAGf39/f39/AALLAQgDZW52GHdhc21fb25faGVhZGVyc19jb21wbGV0ZQACA2VudhV3YXNtX29uX21lc3NhZ2VfYmVnaW4AAANlbnYLd2FzbV9vbl91cmwAAQNlbnYOd2FzbV9vbl9zdGF0dXMAAQNlbnYUd2FzbV9vbl9oZWFkZXJfZmllbGQAAQNlbnYUd2FzbV9vbl9oZWFkZXJfdmFsdWUAAQNlbnYMd2FzbV9vbl9ib2R5AAEDZW52GHdhc21fb25fbWVzc2FnZV9jb21wbGV0ZQAAA0ZFAwMEAAAFAAAAAAAABQEFAAUFBQAABgAAAAAGBgYGAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAAABAQcAAAUFAwABBAUBcAESEgUDAQACBggBfwFBgNQECwfRBSIGbWVtb3J5AgALX2luaXRpYWxpemUACRlfX2luZGlyZWN0X2Z1bmN0aW9uX3RhYmxlAQALbGxodHRwX2luaXQAChhsbGh0dHBfc2hvdWxkX2tlZXBfYWxpdmUAQQxsbGh0dHBfYWxsb2MADAZtYWxsb2MARgtsbGh0dHBfZnJlZQANBGZyZWUASA9sbGh0dHBfZ2V0X3R5cGUADhVsbGh0dHBfZ2V0X2h0dHBfbWFqb3IADxVsbGh0dHBfZ2V0X2h0dHBfbWlub3IAEBFsbGh0dHBfZ2V0X21ldGhvZAARFmxsaHR0cF9nZXRfc3RhdHVzX2NvZGUAEhJsbGh0dHBfZ2V0X3VwZ3JhZGUAEwxsbGh0dHBfcmVzZXQAFA5sbGh0dHBfZXhlY3V0ZQAVFGxsaHR0cF9zZXR0aW5nc19pbml0ABYNbGxodHRwX2ZpbmlzaAAXDGxsaHR0cF9wYXVzZQAYDWxsaHR0cF9yZXN1bWUAGRtsbGh0dHBfcmVzdW1lX2FmdGVyX3VwZ3JhZGUAGhBsbGh0dHBfZ2V0X2Vycm5vABsXbGxodHRwX2dldF9lcnJvcl9yZWFzb24AHBdsbGh0dHBfc2V0X2Vycm9yX3JlYXNvbgAdFGxsaHR0cF9nZXRfZXJyb3JfcG9zAB4RbGxodHRwX2Vycm5vX25hbWUAHxJsbGh0dHBfbWV0aG9kX25hbWUAIBJs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ADcDACAAQShqQgA3AwAgAEEgakIANwMAIABBEGpCADcDACAAQQhqQgA3AwAgAEHdATYCHEEAC3sBAX8CQCAAKAIMIgMNAAJAIAAoAgRFDQAgACABNgIECwJAIAAgASACEMSAgIAAIgMNACAAKAIMDwsgACADNgIcQQAhAyAAKAIEIgFFDQAgACABIAIgACgCCBGBgICAAAAiAUUNACAAIAI2AhQgACABNgIMIAEhAwsgAwvk8wEDDn8DfgR/I4CAgIAAQRBrIgMkgICAgAAgASEEIAEhBSABIQYgASEHIAEhCCABIQkgASEKIAEhCyABIQwgASENIAEhDiABIQ8CQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgACgCHCIQQX9qDt0B2gEB2QECAwQFBgcICQoLDA0O2AEPENcBERLWARMUFRYXGBkaG+AB3wEcHR7VAR8gISIjJCXUASYnKCkqKyzTAdIBLS7RAdABLzAxMjM0NTY3ODk6Ozw9Pj9AQUJDREVG2wFHSElKzwHOAUvNAUzMAU1OT1BRUlNUVVZXWFlaW1xdXl9gYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXp7fH1+f4ABgQGCAYMBhAGFAYYBhwGIAYkB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QAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAC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FCAAIBA2AgxBACEQDLIBCyAAKAIEIRAgAEEANgIEAkAgACAQIAEQp4CAgAAiEA0AIAEhAQxNCyAAQdMANgIcIAAgATYCFCAAIBA2AgxBACEQDLEBCyAAKAIEIRAgAEEANgIEAkAgACAQIAEQp4CAgAAiEA0AIAEhAQxRCyAAQeUANgIcIAAgATYCFCAAIBA2AgxBACEQDLABCyAAQQA2AhwgACABNgIUIABBxoqAgAA2AhAgAEEHNgIMQQAhEAyvAQsgACgCBCEQIABBADYCBAJAIAAgECABEKeAgIAAIhANACABIQEMSQsgAEHSADYCHCAAIAE2AhQgACAQNgIMQQAhEAyuAQsgACgCBCEQIABBADYCBAJAIAAgECABEKeAgIAAIhANACABIQEMSQsgAEHTADYCHCAAIAE2AhQgACAQNgIMQQAhEAytAQsgACgCBCEQIABBADYCBAJAIAAgECABEKeAgIAAIhANACABIQEMTQsgAEHlADYCHCAAIAE2AhQgACAQNgIMQQAhEAysAQsgAEEANgIcIAAgATYCFCAAQdyIgIAANgIQIABBBzYCDEEAIRAMqwELIBBBP0cNASABQQFqIQELQQUhEAyQAQtBACEQIABBADYCHCAAIAE2AhQgAEH9koCAADYCECAAQQc2AgwMqAELIAAoAgQhECAAQQA2AgQCQCAAIBAgARCngICAACIQDQAgASEBDEILIABB0gA2AhwgACABNgIUIAAgEDYCDEEAIRAMpwELIAAoAgQhECAAQQA2AgQCQCAAIBAgARCngICAACIQDQAgASEBDEILIABB0wA2AhwgACABNgIUIAAgEDYCDEEAIRAMpgELIAAoAgQhECAAQQA2AgQCQCAAIBAgARCngICAACIQDQAgASEBDEYLIABB5QA2AhwgACABNgIUIAAgEDYCDEEAIRAMpQELIAAoAgQhASAAQQA2AgQCQCAAIAEgFBCngICAACIBDQAgFCEBDD8LIABB0gA2AhwgACAUNgIUIAAgATYCDEEAIRAMpAELIAAoAgQhASAAQQA2AgQCQCAAIAEgFBCngICAACIBDQAgFCEBDD8LIABB0wA2AhwgACAUNgIUIAAgATYCDEEAIRAMowELIAAoAgQhASAAQQA2AgQCQCAAIAEgFBCngICAACIBDQAgFCEBDEMLIABB5QA2AhwgACAU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YWdlX2JlZ2luYCBjYWxsYmFjayBlcnJvcgBgb25fY2h1bmtfZXh0ZW5zaW9uX3ZhbHVlYCBjYWxsYmFjayBlcnJvcgBgb25fc3RhdHVzX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fdmVyc2lvbl9jb21wbGV0ZWAgY2FsbGJhY2sgZXJyb3IAYG9uX3VybF9jb21wbGV0ZWAgY2FsbGJhY2sgZXJyb3IAYG9uX2NodW5rX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25faGVhZGVyX3ZhbHVlX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fbWVzc2FnZV9jb21wbGV0ZWAgY2FsbGJhY2sgZXJyb3IAYG9uX21ldGhvZF9jb21wbGV0ZWAgY2FsbGJhY2sgZXJyb3IAYG9uX2hlYWRlcl9maWVsZF9jb21wbGV0ZWAgY2FsbGJhY2sgZXJyb3IAYG9uX2NodW5rX2V4dGVuc2lvbl9uYW1lYCBjYWxsYmFjayBlcnJvcgBVbmV4cGVjdGVkIGNoYXIgaW4gdXJsIHNlcnZlcgBJbnZhbGlkIGhlYWRlciB2YWx1ZSBjaGFyAEludmFsaWQgaGVhZGVyIGZpZWxkIGNoYXIAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl92ZXJzaW9uAEludmFsaWQgbWlub3IgdmVyc2lvbgBJbnZhbGlkIG1ham9yIHZlcnNpb24ARXhwZWN0ZWQgc3BhY2UgYWZ0ZXIgdmVyc2lvbgBFeHBlY3RlZCBDUkxGIGFmdGVyIHZlcnNpb24ASW52YWxpZCBIVFRQIHZlcnNpb24ASW52YWxpZCBoZWFkZXIgdG9rZW4AU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl91cmwASW52YWxpZCBjaGFyYWN0ZXJzIGluIHVybABVbmV4cGVjdGVkIHN0YXJ0IGNoYXIgaW4gdXJsAERvdWJsZSBAIGluIHVybABFbXB0eSBDb250ZW50LUxlbmd0aABJbnZhbGlkIGNoYXJhY3RlciBpbiBDb250ZW50LUxlbmd0aABEdXBsaWNhdGUgQ29udGVudC1MZW5ndGgASW52YWxpZCBjaGFyIGluIHVybCBwYXRoAENvbnRlbnQtTGVuZ3RoIGNhbid0IGJlIHByZXNlbnQgd2l0aCBUcmFuc2Zlci1FbmNvZGluZwBJbnZhbGlkIGNoYXJhY3RlciBpbiBjaHVuayBzaXplAFNwYW4gY2FsbGJhY2sgZXJyb3IgaW4gb25faGVhZGVyX3ZhbHVlAFNwYW4gY2FsbGJhY2sgZXJyb3IgaW4gb25fY2h1bmtfZXh0ZW5zaW9uX3ZhbHVlAEludmFsaWQgY2hhcmFjdGVyIGluIGNodW5rIGV4dGVuc2lvbnMgdmFsdWUATWlzc2luZyBleHBlY3RlZCBMRiBhZnRlciBoZWFkZXIgdmFsdWUASW52YWxpZCBgVHJhbnNmZXItRW5jb2RpbmdgIGhlYWRlciB2YWx1ZQBJbnZhbGlkIGNoYXJhY3RlciBpbiBjaHVuayBleHRlbnNpb25zIHF1b3RlIHZhbHVlAEludmFsaWQgY2hhcmFjdGVyIGluIGNodW5rIGV4dGVuc2lvbnMgcXVvdGVkIHZhbHVlAFBhdXNlZCBieSBvbl9oZWFkZXJzX2NvbXBsZXRlAEludmFsaWQgRU9GIHN0YXRlAG9uX3Jlc2V0IHBhdXNlAG9uX2NodW5rX2hlYWRlciBwYXVzZQBvbl9tZXNzYWdlX2JlZ2luIHBhdXNlAG9uX2NodW5rX2V4dGVuc2lvbl92YWx1ZSBwYXVzZQBvbl9zdGF0dXNfY29tcGxldGUgcGF1c2UAb25fdmVyc2lvbl9jb21wbGV0ZSBwYXVzZQBvbl91cmxfY29tcGxldGUgcGF1c2UAb25fY2h1bmtfY29tcGxldGUgcGF1c2UAb25faGVhZGVyX3ZhbHVlX2NvbXBsZXRlIHBhdXNlAG9uX21lc3NhZ2VfY29tcGxldGUgcGF1c2UAb25fbWV0aG9kX2NvbXBsZXRlIHBhdXNlAG9uX2hlYWRlcl9maWVsZF9jb21wbGV0ZSBwYXVzZQBvbl9jaHVua19leHRlbnNpb25fbmFtZSBwYXVzZQBVbmV4cGVjdGVkIHNwYWNlIGFmdGVyIHN0YXJ0IGxpbmUAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9jaHVua19leHRlbnNpb25fbmFtZQBJbnZhbGlkIGNoYXJhY3RlciBpbiBjaHVuayBleHRlbnNpb25zIG5hbWUAUGF1c2Ugb24gQ09OTkVDVC9VcGdyYWRlAFBhdXNlIG9uIFBSSS9VcGdyYWRlAEV4cGVjdGVkIEhUVFAvMiBDb25uZWN0aW9uIFByZWZhY2UAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9tZXRob2QARXhwZWN0ZWQgc3BhY2UgYWZ0ZXIgbWV0aG9kAFNwYW4gY2FsbGJhY2sgZXJyb3IgaW4gb25faGVhZGVyX2ZpZWxkAFBhdXNlZABJbnZhbGlkIHdvcmQgZW5jb3VudGVyZWQASW52YWxpZCBtZXRob2QgZW5jb3VudGVyZWQAVW5leHBlY3RlZCBjaGFyIGluIHVybCBzY2hlbWEAUmVxdWVzdCBoYXMgaW52YWxpZCBgVHJhbnNmZXItRW5jb2RpbmdgAFNXSVRDSF9QUk9YWQBVU0VfUFJPWFkATUtBQ1RJVklUWQBVTlBST0NFU1NBQkxFX0VOVElUWQBDT1BZAE1PVkVEX1BFUk1BTkVOVExZAFRPT19FQVJMWQBOT1RJRlkARkFJTEVEX0RFUEVOREVOQ1kAQkFEX0dBVEVXQVkAUExBWQBQVVQAQ0hFQ0tPVVQAR0FURVdBWV9USU1FT1VUAFJFUVVFU1RfVElNRU9VVABORVRXT1JLX0NPTk5FQ1RfVElNRU9VVABDT05ORUNUSU9OX1RJTUVPVVQATE9HSU5fVElNRU9VVABORVRXT1JLX1JFQURfVElNRU9VVABQT1NUAE1JU0RJUkVDVEVEX1JFUVVFU1QAQ0xJRU5UX0NMT1NFRF9SRVFVRVNUAENMSUVOVF9DTE9TRURfTE9BRF9CQUxBTkNFRF9SRVFVRVNUAEJBRF9SRVFVRVNUAEhUVFBfUkVRVUVTVF9TRU5UX1RPX0hUVFBTX1BPUlQAUkVQT1JUAElNX0FfVEVBUE9UAFJFU0VUX0NPTlRFTlQATk9fQ09OVEVOVABQQVJUSUFMX0NPTlRFTlQASFBFX0lOVkFMSURfQ09OU1RBTlQASFBFX0NCX1JFU0VUAEdFVABIUEVfU1RSSUNUAENPTkZMSUNUAFRFTVBPUkFSWV9SRURJUkVDVABQRVJNQU5FTlRfUkVESVJFQ1QAQ09OTkVDVABNVUxUSV9TVEFUVVMASFBFX0lOVkFMSURfU1RBVFVTAFRPT19NQU5ZX1JFUVVFU1RTAEVBUkxZX0hJTlRTAFVOQVZBSUxBQkxFX0ZPUl9MRUdBTF9SRUFTT05TAE9QVElPTlMAU1dJVENISU5HX1BST1RPQ09MUwBWQVJJQU5UX0FMU09fTkVHT1RJQVRFUwBNVUxUSVBMRV9DSE9JQ0VTAElOVEVSTkFMX1NFUlZFUl9FUlJPUgBXRUJfU0VSVkVSX1VOS05PV05fRVJST1IAUkFJTEdVTl9FUlJPUgBJREVOVElUWV9QUk9WSURFUl9BVVRIRU5USUNBVElPTl9FUlJPUgBTU0xfQ0VSVElGSUNBVEVfRVJST1IASU5WQUxJRF9YX0ZPUldBUkRFRF9GT1IAU0VUX1BBUkFNRVRFUgBHRVRfUEFSQU1FVEVSAEhQRV9VU0VSAFNFRV9PVEhFUgBIUEVfQ0JfQ0hVTktfSEVBREVSAE1LQ0FMRU5EQVIAU0VUVVAAV0VCX1NFUlZFUl9JU19ET1dOAFRFQVJET1dOAEhQRV9DTE9TRURfQ09OTkVDVElPTgBIRVVSSVNUSUNfRVhQSVJBVElPTgBESVNDT05ORUNURURfT1BFUkFUSU9OAE5PTl9BVVRIT1JJVEFUSVZFX0lORk9STUFUSU9OAEhQRV9JTlZBTElEX1ZFUlNJT04ASFBFX0NCX01FU1NBR0VfQkVHSU4AU0lURV9JU19GUk9aRU4ASFBFX0lOVkFMSURfSEVBREVSX1RPS0VOAElOVkFMSURfVE9LRU4ARk9SQklEREVOAEVOSEFOQ0VfWU9VUl9DQUxNAEhQRV9JTlZBTElEX1VSTABCTE9DS0VEX0JZX1BBUkVOVEFMX0NPTlRST0wATUtDT0wAQUNMAEhQRV9JTlRFUk5BTABSRVFVRVNUX0hFQURFUl9GSUVMRFNfVE9PX0xBUkdFX1VOT0ZGSUNJQUwASFBFX09LAFVOTElOSwBVTkxPQ0sAUFJJAFJFVFJZX1dJVEgASFBFX0lOVkFMSURfQ09OVEVOVF9MRU5HVEgASFBFX1VORVhQRUNURURfQ09OVEVOVF9MRU5HVEgARkxVU0gAUFJPUFBBVENIAE0tU0VBUkNIAFVSSV9UT09fTE9ORwBQUk9DRVNTSU5HAE1JU0NFTExBTkVPVVNfUEVSU0lTVEVOVF9XQVJOSU5HAE1JU0NFTExBTkVPVVNfV0FSTklORwBIUEVfSU5WQUxJRF9UUkFOU0ZFUl9FTkNPRElORwBFeHBlY3RlZCBDUkxGAEhQRV9JTlZBTElEX0NIVU5LX1NJWkUATU9WRQBDT05USU5VRQBIUEVfQ0JfU1RBVFVTX0NPTVBMRVRFAEhQRV9DQl9IRUFERVJTX0NPTVBMRVRFAEhQRV9DQl9WRVJTSU9OX0NPTVBMRVRFAEhQRV9DQl9VUkxfQ09NUExFVEUASFBFX0NCX0NIVU5LX0NPTVBMRVRFAEhQRV9DQl9IRUFERVJfVkFMVUVfQ09NUExFVEUASFBFX0NCX0NIVU5LX0VYVEVOU0lPTl9WQUxVRV9DT01QTEVURQBIUEVfQ0JfQ0hVTktfRVhURU5TSU9OX05BTUVfQ09NUExFVEUASFBFX0NCX01FU1NBR0VfQ09NUExFVEUASFBFX0NCX01FVEhPRF9DT01QTEVURQBIUEVfQ0JfSEVBREVSX0ZJRUxEX0NPTVBMRVRFAERFTEVURQBIUEVfSU5WQUxJRF9FT0ZfU1RBVEUASU5WQUxJRF9TU0xfQ0VSVElGSUNBVEUAUEFVU0UATk9fUkVTUE9OU0UAVU5TVVBQT1JURURfTUVESUFfVFlQRQBHT05FAE5PVF9BQ0NFUFRBQkxFAFNFUlZJQ0VfVU5BVkFJTEFCTEUAUkFOR0VfTk9UX1NBVElTRklBQkxFAE9SSUdJTl9JU19VTlJFQUNIQUJMRQBSRVNQT05TRV9JU19TVEFMRQBQVVJHRQBNRVJHRQBSRVFVRVNUX0hFQURFUl9GSUVMRFNfVE9PX0xBUkdFAFJFUVVFU1RfSEVBREVSX1RPT19MQVJHRQBQQVlMT0FEX1RPT19MQVJHRQBJTlNVRkZJQ0lFTlRfU1RPUkFHRQBIUEVfUEFVU0VEX1VQR1JBREUASFBFX1BBVVNFRF9IMl9VUEdSQURFAFNPVVJDRQBBTk5PVU5DRQBUUkFDRQBIUEVfVU5FWFBFQ1RFRF9TUEFDRQBERVNDUklCRQBVTlNVQlNDUklCRQBSRUNPUkQASFBFX0lOVkFMSURfTUVUSE9EAE5PVF9GT1VORABQUk9QRklORABVTkJJTkQAUkVCSU5EAFVOQVVUSE9SSVpFRABNRVRIT0RfTk9UX0FMTE9XRUQASFRUUF9WRVJTSU9OX05PVF9TVVBQT1JURUQAQUxSRUFEWV9SRVBPUlRFRABBQ0NFUFRFRABOT1RfSU1QTEVNRU5URUQATE9PUF9ERVRFQ1RFRABIUEVfQ1JfRVhQRUNURUQASFBFX0xGX0VYUEVDVEVEAENSRUFURUQASU1fVVNFRABIUEVfUEFVU0VEAFRJTUVPVVRfT0NDVVJFRABQQVlNRU5UX1JFUVVJUkVEAFBSRUNPTkRJVElPTl9SRVFVSVJFRABQUk9YWV9BVVRIRU5USUNBVElPTl9SRVFVSVJFRABORVRXT1JLX0FVVEhFTlRJQ0FUSU9OX1JFUVVJUkVEAExFTkdUSF9SRVFVSVJFRABTU0xfQ0VSVElGSUNBVEVfUkVRVUlSRUQAVVBHUkFERV9SRVFVSVJFRABQQUdFX0VYUElSRUQAUFJFQ09ORElUSU9OX0ZBSUxFRABFWFBFQ1RBVElPTl9GQUlMRUQAUkVWQUxJREFUSU9OX0ZBSUxFRABTU0xfSEFORFNIQUtFX0ZBSUxFRABMT0NLRUQAVFJBTlNGT1JNQVRJT05fQVBQTElFRABOT1RfTU9ESUZJRUQATk9UX0VYVEVOREVEAEJBTkRXSURUSF9MSU1JVF9FWENFRURFRABTSVRFX0lTX09WRVJMT0FERUQASEVBRABFeHBlY3RlZCBIVFRQLwAAXhMAACYTAAAwEAAA8BcAAJ0TAAAVEgAAORcAAPASAAAKEAAAdRIAAK0SAACCEwAATxQAAH8QAACgFQAAIxQAAIkSAACLFAAATRUAANQRAADPFAAAEBgAAMkWAADcFgAAwREAAOAXAAC7FAAAdBQAAHwVAADlFAAACBcAAB8QAABlFQAAoxQAACgVAAACFQAAmRUAACwQAACLGQAATw8AANQOAABqEAAAzhAAAAIXAACJDgAAbhMAABwTAABmFAAAVhcAAMETAADNEwAAbBMAAGgXAABmFwAAXxcAACITAADODwAAaQ4AANgOAABjFgAAyxMAAKoOAAAoFwAAJhcAAMUTAABdFgAA6BEAAGcTAABlEwAA8hYAAHMTAAAdFwAA+RYAAPMRAADPDgAAzhUAAAwSAACzEQAApREAAGEQAAAyFwAAuxMAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQIBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAIDAgICAgIAAAICAAICAAICAgICAgICAgIABAAAAAAAAgICAgICAgICAgICAgICAgICAgICAgICAgIAAAACAgICAgICAgICAgICAgICAgICAgICAgICAgICAgACAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAACAAICAgICAAACAgACAgACAgICAgICAgICAAMABAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAAgACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbG9zZWVlcC1hbGl2ZQAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQIBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBY2h1bmtlZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEAAQEBAQEAAAEBAAEBAAEBAQEBAQEBAQEAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABlY3Rpb25lbnQtbGVuZ3Rob25yb3h5LWNvbm5lY3Rpb24AAAAAAAAAAAAAAAAAAAByYW5zZmVyLWVuY29kaW5ncGdyYWRlDQoNCg0KU00NCg0KVFRQL0NFL1RTUC8AAAAAAAAAAAAAAAABAgABAwAAAAAAAAAAAAAAAAAAAAAAAAQBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAQIAAQMAAAAAAAAAAAAAAAAAAAAAAAAEAQEFAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAEAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAQAAAgAAAAAAAAAAAAAAAAAAAAAAAAMEAAAEBAQEBAQEBAQEBAUEBAQEBAQEBAQEBAQABAAGBwQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEAAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAEAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAADAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwAAAAAAAAMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAABAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAIAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAAAAAAAADAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABOT1VOQ0VFQ0tPVVRORUNURVRFQ1JJQkVMVVNIRVRFQURTRUFSQ0hSR0VDVElWSVRZTEVOREFSVkVPVElGWVBUSU9OU0NIU0VBWVNUQVRDSEdFT1JESVJFQ1RPUlRSQ0hQQVJBTUVURVJVUkNFQlNDUklCRUFSRE9XTkFDRUlORE5LQ0tVQlNDUklCRUhUVFAvQURUUC8=`})),_e=s(((e,t)=>{t.exports=`AGFzbQEAAAABMAhgAX8Bf2ADf39/AX9gBH9/f38Bf2AAAGADf39/AGABfwBgAn9/AGAGf39/f39/AALLAQgDZW52GHdhc21fb25faGVhZGVyc19jb21wbGV0ZQACA2VudhV3YXNtX29uX21lc3NhZ2VfYmVnaW4AAANlbnYLd2FzbV9vbl91cmwAAQNlbnYOd2FzbV9vbl9zdGF0dXMAAQNlbnYUd2FzbV9vbl9oZWFkZXJfZmllbGQAAQNlbnYUd2FzbV9vbl9oZWFkZXJfdmFsdWUAAQNlbnYMd2FzbV9vbl9ib2R5AAEDZW52GHdhc21fb25fbWVzc2FnZV9jb21wbGV0ZQAAA0ZFAwMEAAAFAAAAAAAABQEFAAUFBQAABgAAAAAGBgYGAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAAABAQcAAAUFAwABBAUBcAESEgUDAQACBggBfwFBgNQECwfRBSIGbWVtb3J5AgALX2luaXRpYWxpemUACRlfX2luZGlyZWN0X2Z1bmN0aW9uX3RhYmxlAQALbGxodHRwX2luaXQAChhsbGh0dHBfc2hvdWxkX2tlZXBfYWxpdmUAQQxsbGh0dHBfYWxsb2MADAZtYWxsb2MARgtsbGh0dHBfZnJlZQANBGZyZWUASA9sbGh0dHBfZ2V0X3R5cGUADhVsbGh0dHBfZ2V0X2h0dHBfbWFqb3IADxVsbGh0dHBfZ2V0X2h0dHBfbWlub3IAEBFsbGh0dHBfZ2V0X21ldGhvZAARFmxsaHR0cF9nZXRfc3RhdHVzX2NvZGUAEhJsbGh0dHBfZ2V0X3VwZ3JhZGUAEwxsbGh0dHBfcmVzZXQAFA5sbGh0dHBfZXhlY3V0ZQAVFGxsaHR0cF9zZXR0aW5nc19pbml0ABYNbGxodHRwX2ZpbmlzaAAXDGxsaHR0cF9wYXVzZQAYDWxsaHR0cF9yZXN1bWUAGRtsbGh0dHBfcmVzdW1lX2FmdGVyX3VwZ3JhZGUAGhBsbGh0dHBfZ2V0X2Vycm5vABsXbGxodHRwX2dldF9lcnJvcl9yZWFzb24AHBdsbGh0dHBfc2V0X2Vycm9yX3JlYXNvbgAdFGxsaHR0cF9nZXRfZXJyb3JfcG9zAB4RbGxodHRwX2Vycm5vX25hbWUAHxJsbGh0dHBfbWV0aG9kX25hbWUAIBJs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IAH9CwMAIABBMGogAf0LAwAgAEEgaiAB/QsDACAAQd0BNgIcQQALewEBfwJAIAAoAgwiAw0AAkAgACgCBEUNACAAIAE2AgQLAkAgACABIAIQxICAgAAiAw0AIAAoAgwPCyAAIAM2AhxBACEDIAAoAgQiAUUNACAAIAEgAiAAKAIIEYGAgIAAACIBRQ0AIAAgAjYCFCAAIAE2AgwgASEDCyADC+TzAQMOfwN+BH8jgICAgABBEGsiAySAgICAACABIQQgASEFIAEhBiABIQcgASEIIAEhCSABIQogASELIAEhDCABIQ0gASEOIAEhDwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCAAKAIcIhBBf2oO3QHaAQHZAQIDBAUGBwgJCgsMDQ7YAQ8Q1wEREtYBExQVFhcYGRob4AHfARwdHtUBHyAhIiMkJdQBJicoKSorLNMB0gEtLtEB0AEvMDEyMzQ1Njc4OTo7PD0+P0BBQkNERUbbAUdISUrPAc4BS80BTMwBTU5PUFFSU1RVVldYWVpbXF1eX2BhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ent8fX5/gAGBAYIBgwGEAYUBhgGHAYgBiQGKAYsBjAGNAY4BjwGQAZEB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QAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIBAOxwEAAQID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YWNrIGVycm9yAGBvbl9jaHVua19leHRlbnNpb25fdmFsdWVgIGNhbGxiYWNrIGVycm9yAGBvbl9zdGF0dXNfY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl92ZXJzaW9uX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fdXJsX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fY2h1bmtfY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl9oZWFkZXJfdmFsdWVfY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl9tZXNzYWdlX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fbWV0aG9kX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25faGVhZGVyX2ZpZWxkX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fY2h1bmtfZXh0ZW5zaW9uX25hbWVgIGNhbGxiYWNrIGVycm9yAFVuZXhwZWN0ZWQgY2hhciBpbiB1cmwgc2VydmVyAEludmFsaWQgaGVhZGVyIHZhbHVlIGNoYXIASW52YWxpZCBoZWFkZXIgZmllbGQgY2hhcgBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX3ZlcnNpb24ASW52YWxpZCBtaW5vciB2ZXJzaW9uAEludmFsaWQgbWFqb3IgdmVyc2lvbgBFeHBlY3RlZCBzcGFjZSBhZnRlciB2ZXJzaW9uAEV4cGVjdGVkIENSTEYgYWZ0ZXIgdmVyc2lvbgBJbnZhbGlkIEhUVFAgdmVyc2lvbgBJbnZhbGlkIGhlYWRlciB0b2tlbgBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX3VybABJbnZhbGlkIGNoYXJhY3RlcnMgaW4gdXJsAFVuZXhwZWN0ZWQgc3RhcnQgY2hhciBpbiB1cmwARG91YmxlIEAgaW4gdXJsAEVtcHR5IENvbnRlbnQtTGVuZ3RoAEludmFsaWQgY2hhcmFjdGVyIGluIENvbnRlbnQtTGVuZ3RoAER1cGxpY2F0ZSBDb250ZW50LUxlbmd0aABJbnZhbGlkIGNoYXIgaW4gdXJsIHBhdGgAQ29udGVudC1MZW5ndGggY2FuJ3QgYmUgcHJlc2VudCB3aXRoIFRyYW5zZmVyLUVuY29kaW5nAEludmFsaWQgY2hhcmFjdGVyIGluIGNodW5rIHNpemUAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9oZWFkZXJfdmFsdWUAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9jaHVua19leHRlbnNpb25fdmFsdWUASW52YWxpZCBjaGFyYWN0ZXIgaW4gY2h1bmsgZXh0ZW5zaW9ucyB2YWx1ZQBNaXNzaW5nIGV4cGVjdGVkIExGIGFmdGVyIGhlYWRlciB2YWx1ZQBJbnZhbGlkIGBUcmFuc2Zlci1FbmNvZGluZ2AgaGVhZGVyIHZhbHVlAEludmFsaWQgY2hhcmFjdGVyIGluIGNodW5rIGV4dGVuc2lvbnMgcXVvdGUgdmFsdWUASW52YWxpZCBjaGFyYWN0ZXIgaW4gY2h1bmsgZXh0ZW5zaW9ucyBxdW90ZWQgdmFsdWUAUGF1c2VkIGJ5IG9uX2hlYWRlcnNfY29tcGxldGUASW52YWxpZCBFT0Ygc3RhdGUAb25fcmVzZXQgcGF1c2UAb25fY2h1bmtfaGVhZGVyIHBhdXNlAG9uX21lc3NhZ2VfYmVnaW4gcGF1c2UAb25fY2h1bmtfZXh0ZW5zaW9uX3ZhbHVlIHBhdXNlAG9uX3N0YXR1c19jb21wbGV0ZSBwYXVzZQBvbl92ZXJzaW9uX2NvbXBsZXRlIHBhdXNlAG9uX3VybF9jb21wbGV0ZSBwYXVzZQBvbl9jaHVua19jb21wbGV0ZSBwYXVzZQBvbl9oZWFkZXJfdmFsdWVfY29tcGxldGUgcGF1c2UAb25fbWVzc2FnZV9jb21wbGV0ZSBwYXVzZQBvbl9tZXRob2RfY29tcGxldGUgcGF1c2UAb25faGVhZGVyX2ZpZWxkX2NvbXBsZXRlIHBhdXNlAG9uX2NodW5rX2V4dGVuc2lvbl9uYW1lIHBhdXNlAFVuZXhwZWN0ZWQgc3BhY2UgYWZ0ZXIgc3RhcnQgbGluZQBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX2NodW5rX2V4dGVuc2lvbl9uYW1lAEludmFsaWQgY2hhcmFjdGVyIGluIGNodW5rIGV4dGVuc2lvbnMgbmFtZQBQYXVzZSBvbiBDT05ORUNUL1VwZ3JhZGUAUGF1c2Ugb24gUFJJL1VwZ3JhZGUARXhwZWN0ZWQgSFRUUC8yIENvbm5lY3Rpb24gUHJlZmFjZQBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX21ldGhvZABFeHBlY3RlZCBzcGFjZSBhZnRlciBtZXRob2QAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9oZWFkZXJfZmllbGQAUGF1c2VkAEludmFsaWQgd29yZCBlbmNvdW50ZXJlZABJbnZhbGlkIG1ldGhvZCBlbmNvdW50ZXJlZABVbmV4cGVjdGVkIGNoYXIgaW4gdXJsIHNjaGVtYQBSZXF1ZXN0IGhhcyBpbnZhbGlkIGBUcmFuc2Zlci1FbmNvZGluZ2AAU1dJVENIX1BST1hZAFVTRV9QUk9YWQBNS0FDVElWSVRZAFVOUFJPQ0VTU0FCTEVfRU5USVRZAENPUFkATU9WRURfUEVSTUFORU5UTFkAVE9PX0VBUkxZAE5PVElGWQBGQUlMRURfREVQRU5ERU5DWQBCQURfR0FURVdBWQBQTEFZAFBVVABDSEVDS09VVABHQVRFV0FZX1RJTUVPVVQAUkVRVUVTVF9USU1FT1VUAE5FVFdPUktfQ09OTkVDVF9USU1FT1VUAENPTk5FQ1RJT05fVElNRU9VVABMT0dJTl9USU1FT1VUAE5FVFdPUktfUkVBRF9USU1FT1VUAFBPU1QATUlTRElSRUNURURfUkVRVUVTVABDTElFTlRfQ0xPU0VEX1JFUVVFU1QAQ0xJRU5UX0NMT1NFRF9MT0FEX0JBTEFOQ0VEX1JFUVVFU1QAQkFEX1JFUVVFU1QASFRUUF9SRVFVRVNUX1NFTlRfVE9fSFRUUFNfUE9SVABSRVBPUlQASU1fQV9URUFQT1QAUkVTRVRfQ09OVEVOVABOT19DT05URU5UAFBBUlRJQUxfQ09OVEVOVABIUEVfSU5WQUxJRF9DT05TVEFOVABIUEVfQ0JfUkVTRVQAR0VUAEhQRV9TVFJJQ1QAQ09ORkxJQ1QAVEVNUE9SQVJZX1JFRElSRUNUAFBFUk1BTkVOVF9SRURJUkVDVABDT05ORUNUAE1VTFRJX1NUQVRVUwBIUEVfSU5WQUxJRF9TVEFUVVMAVE9PX01BTllfUkVRVUVTVFMARUFSTFlfSElOVFMAVU5BVkFJTEFCTEVfRk9SX0xFR0FMX1JFQVNPTlMAT1BUSU9OUwBTV0lUQ0hJTkdfUFJPVE9DT0xTAFZBUklBTlRfQUxTT19ORUdPVElBVEVTAE1VTFRJUExFX0NIT0lDRVMASU5URVJOQUxfU0VSVkVSX0VSUk9SAFdFQl9TRVJWRVJfVU5LTk9XTl9FUlJPUgBSQUlMR1VOX0VSUk9SAElERU5USVRZX1BST1ZJREVSX0FVVEhFTlRJQ0FUSU9OX0VSUk9SAFNTTF9DRVJUSUZJQ0FURV9FUlJPUgBJTlZBTElEX1hfRk9SV0FSREVEX0ZPUgBTRVRfUEFSQU1FVEVSAEdFVF9QQVJBTUVURVIASFBFX1VTRVIAU0VFX09USEVSAEhQRV9DQl9DSFVOS19IRUFERVIATUtDQUxFTkRBUgBTRVRVUABXRUJfU0VSVkVSX0lTX0RPV04AVEVBUkRPV04ASFBFX0NMT1NFRF9DT05ORUNUSU9OAEhFVVJJU1RJQ19FWFBJUkFUSU9OAERJU0NPTk5FQ1RFRF9PUEVSQVRJT04ATk9OX0FVVEhPUklUQVRJVkVfSU5GT1JNQVRJT04ASFBFX0lOVkFMSURfVkVSU0lPTgBIUEVfQ0JfTUVTU0FHRV9CRUdJTgBTSVRFX0lTX0ZST1pFTgBIUEVfSU5WQUxJRF9IRUFERVJfVE9LRU4ASU5WQUxJRF9UT0tFTgBGT1JCSURERU4ARU5IQU5DRV9ZT1VSX0NBTE0ASFBFX0lOVkFMSURfVVJMAEJMT0NLRURfQllfUEFSRU5UQUxfQ09OVFJPTABNS0NPTABBQ0wASFBFX0lOVEVSTkFMAFJFUVVFU1RfSEVBREVSX0ZJRUxEU19UT09fTEFSR0VfVU5PRkZJQ0lBTABIUEVfT0sAVU5MSU5LAFVOTE9DSwBQUkkAUkVUUllfV0lUSABIUEVfSU5WQUxJRF9DT05URU5UX0xFTkdUSABIUEVfVU5FWFBFQ1RFRF9DT05URU5UX0xFTkdUSABGTFVTSABQUk9QUEFUQ0gATS1TRUFSQ0gAVVJJX1RPT19MT05HAFBST0NFU1NJTkcATUlTQ0VMTEFORU9VU19QRVJTSVNURU5UX1dBUk5JTkcATUlTQ0VMTEFORU9VU19XQVJOSU5HAEhQRV9JTlZBTElEX1RSQU5TRkVSX0VOQ09ESU5HAEV4cGVjdGVkIENSTEYASFBFX0lOVkFMSURfQ0hVTktfU0laRQBNT1ZFAENPTlRJTlVFAEhQRV9DQl9TVEFUVVNfQ09NUExFVEUASFBFX0NCX0hFQURFUlNfQ09NUExFVEUASFBFX0NCX1ZFUlNJT05fQ09NUExFVEUASFBFX0NCX1VSTF9DT01QTEVURQBIUEVfQ0JfQ0hVTktfQ09NUExFVEUASFBFX0NCX0hFQURFUl9WQUxVRV9DT01QTEVURQBIUEVfQ0JfQ0hVTktfRVhURU5TSU9OX1ZBTFVFX0NPTVBMRVRFAEhQRV9DQl9DSFVOS19FWFRFTlNJT05fTkFNRV9DT01QTEVURQBIUEVfQ0JfTUVTU0FHRV9DT01QTEVURQBIUEVfQ0JfTUVUSE9EX0NPTVBMRVRFAEhQRV9DQl9IRUFERVJfRklFTERfQ09NUExFVEUAREVMRVRFAEhQRV9JTlZBTElEX0VPRl9TVEFURQBJTlZBTElEX1NTTF9DRVJUSUZJQ0FURQBQQVVTRQBOT19SRVNQT05TRQBVTlNVUFBPUlRFRF9NRURJQV9UWVBFAEdPTkUATk9UX0FDQ0VQVEFCTEUAU0VSVklDRV9VTkFWQUlMQUJMRQBSQU5HRV9OT1RfU0FUSVNGSUFCTEUAT1JJR0lOX0lTX1VOUkVBQ0hBQkxFAFJFU1BPTlNFX0lTX1NUQUxFAFBVUkdFAE1FUkdFAFJFUVVFU1RfSEVBREVSX0ZJRUxEU19UT09fTEFSR0UAUkVRVUVTVF9IRUFERVJfVE9PX0xBUkdFAFBBWUxPQURfVE9PX0xBUkdFAElOU1VGRklDSUVOVF9TVE9SQUdFAEhQRV9QQVVTRURfVVBHUkFERQBIUEVfUEFVU0VEX0gyX1VQR1JBREUAU09VUkNFAEFOTk9VTkNFAFRSQUNFAEhQRV9VTkVYUEVDVEVEX1NQQUNFAERFU0NSSUJFAFVOU1VCU0NSSUJFAFJFQ09SRABIUEVfSU5WQUxJRF9NRVRIT0QATk9UX0ZPVU5EAFBST1BGSU5EAFVOQklORABSRUJJTkQAVU5BVVRIT1JJWkVEAE1FVEhPRF9OT1RfQUxMT1dFRABIVFRQX1ZFUlNJT05fTk9UX1NVUFBPUlRFRABBTFJFQURZX1JFUE9SVEVEAEFDQ0VQVEVEAE5PVF9JTVBMRU1FTlRFRABMT09QX0RFVEVDVEVEAEhQRV9DUl9FWFBFQ1RFRABIUEVfTEZfRVhQRUNURUQAQ1JFQVRFRABJTV9VU0VEAEhQRV9QQVVTRUQAVElNRU9VVF9PQ0NVUkVEAFBBWU1FTlRfUkVRVUlSRUQAUFJFQ09ORElUSU9OX1JFUVVJUkVEAFBST1hZX0FVVEhFTlRJQ0FUSU9OX1JFUVVJUkVEAE5FVFdPUktfQVVUSEVOVElDQVRJT05fUkVRVUlSRUQATEVOR1RIX1JFUVVJUkVEAFNTTF9DRVJUSUZJQ0FURV9SRVFVSVJFRABVUEdSQURFX1JFUVVJUkVEAFBBR0VfRVhQSVJFRABQUkVDT05ESVRJT05fRkFJTEVEAEVYUEVDVEFUSU9OX0ZBSUxFRABSRVZBTElEQVRJT05fRkFJTEVEAFNTTF9IQU5EU0hBS0VfRkFJTEVEAExPQ0tFRABUUkFOU0ZPUk1BVElPTl9BUFBMSUVEAE5PVF9NT0RJRklFRABOT1RfRVhURU5ERUQAQkFORFdJRFRIX0xJTUlUX0VYQ0VFREVEAFNJVEVfSVNfT1ZFUkxPQURFRABIRUFEAEV4cGVjdGVkIEhUVFAvAABeEwAAJhMAADAQAADwFwAAnRMAABUSAAA5FwAA8BIAAAoQAAB1EgAArRIAAIITAABPFAAAfxAAAKAVAAAjFAAAiRIAAIsUAABNFQAA1BEAAM8UAAAQGAAAyRYAANwWAADBEQAA4BcAALsUAAB0FAAAfBUAAOUUAAAIFwAAHxAAAGUVAACjFAAAKBUAAAIVAACZFQAALBAAAIsZAABPDwAA1A4AAGoQAADOEAAAAhcAAIkOAABuEwAAHBMAAGYUAABWFwAAwRMAAM0TAABsEwAAaBcAAGYXAABfFwAAIhMAAM4PAABpDgAA2A4AAGMWAADLEwAAqg4AACgXAAAmFwAAxRMAAF0WAADoEQAAZxMAAGUTAADyFgAAcxMAAB0XAAD5FgAA8xEAAM8OAADOFQAADBIAALMRAAClEQAAYRAAADIXAAC7EwAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAgMCAgICAgAAAgIAAgIAAgICAgICAgICAgAEAAAAAAACAgICAgICAgICAgICAgICAgICAgICAgICAgAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAIAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAIAAgICAgIAAAICAAICAAICAgICAgICAgIAAwAEAAAAAgICAgICAgICAgICAgICAgICAgICAgICAgIAAAACAgICAgICAgICAgICAgICAgICAgICAgICAgICAgACAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABsb3NlZWVwLWFsaXZlAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQFjaHVua2VkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQABAQEBAQAAAQEAAQEAAQEBAQEBAQEBAQAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGVjdGlvbmVudC1sZW5ndGhvbnJveHktY29ubmVjdGlvbgAAAAAAAAAAAAAAAAAAAHJhbnNmZXItZW5jb2RpbmdwZ3JhZGUNCg0KDQpTTQ0KDQpUVFAvQ0UvVFNQLwAAAAAAAAAAAAAAAAECAAEDAAAAAAAAAAAAAAAAAAAAAAAABAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAABAgABAwAAAAAAAAAAAAAAAAAAAAAAAAQBAQUBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAQAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAABAAACAAAAAAAAAAAAAAAAAAAAAAAAAwQAAAQEBAQEBAQEBAQEBQQEBAQEBAQEBAQEBAAEAAYHBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQABAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAQAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAAAAAAAAAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAEAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAgAAAAACAAAAAAAAAAAAAAAAAAAAAAADAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwAAAAAAAAMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAE5PVU5DRUVDS09VVE5FQ1RFVEVDUklCRUxVU0hFVEVBRFNFQVJDSFJHRUNUSVZJVFlMRU5EQVJWRU9USUZZUFRJT05TQ0hTRUFZU1RBVENIR0VPUkRJUkVDVE9SVFJDSFBBUkFNRVRFUlVSQ0VCU0NSSUJFQVJET1dOQUNFSU5ETktDS1VCU0NSSUJFSFRUUC9BRFRQLw==`})),ve=s(((e,t)=>{let n=require(`assert`),r=require(`net`),i=require(`http`),{pipeline:a}=require(`stream`),o=j(),s=M(),c=ce(),l=ue(),{RequestContentLengthMismatchError:u,ResponseContentLengthMismatchError:d,InvalidArgumentError:f,RequestAbortedError:p,HeadersTimeoutError:m,HeadersOverflowError:h,SocketError:g,InformationalError:_,BodyTimeoutError:v,HTTPParserError:y,ResponseExceededMaxSizeError:b,ClientDestroyedError:x}=k(),S=de(),{kUrl:C,kReset:w,kServerName:T,kClient:E,kBusy:D,kParser:A,kConnect:N,kBlocking:ee,kResuming:P,kRunning:F,kPending:I,kSize:L,kWriting:R,kQueue:z,kConnected:B,kConnecting:te,kNeedDrain:V,kNoRef:ne,kKeepAliveDefaultTimeout:re,kHostHeader:H,kPendingIdx:ie,kRunningIdx:U,kError:W,kPipelining:ae,kSocket:G,kKeepAliveTimeoutValue:oe,kMaxHeadersSize:se,kKeepAliveMaxTimeout:le,kKeepAliveTimeoutThreshold:fe,kHeadersTimeout:me,kBodyTimeout:ve,kStrictContentLength:ye,kConnector:be,kMaxRedirections:xe,kMaxRequests:Se,kCounter:Ce,kClose:we,kDestroy:Te,kDispatch:Ee,kInterceptors:De,kLocalAddress:Oe,kMaxResponseSize:ke,kHTTPConnVersion:Ae,kHost:je,kHTTP2Session:Me,kHTTP2SessionState:Ne,kHTTP2BuildRequest:Pe,kHTTP2CopyHeaders:Fe,kHTTP1BuildRequest:K}=O(),Ie;try{Ie=require(`http2`)}catch{Ie={constants:{}}}let{constants:{HTTP2_HEADER_AUTHORITY:Le,HTTP2_HEADER_METHOD:Re,HTTP2_HEADER_PATH:q,HTTP2_HEADER_SCHEME:ze,HTTP2_HEADER_CONTENT_LENGTH:Be,HTTP2_HEADER_EXPECT:J,HTTP2_HEADER_STATUS:Ve}}=Ie,Y=!1,He=Buffer[Symbol.species],Ue=Symbol(`kClosedResolve`),X={};try{let e=require(`diagnostics_channel`);X.sendHeaders=e.channel(`undici:client:sendHeaders`),X.beforeConnect=e.channel(`undici:client:beforeConnect`),X.connectError=e.channel(`undici:client:connectError`),X.connected=e.channel(`undici:client:connected`)}catch{X.sendHeaders={hasSubscribers:!1},X.beforeConnect={hasSubscribers:!1},X.connectError={hasSubscribers:!1},X.connected={hasSubscribers:!1}}var We=class extends l{constructor(e,{interceptors:t,maxHeaderSize:n,headersTimeout:a,socketTimeout:s,requestTimeout:c,connectTimeout:l,bodyTimeout:u,idleTimeout:d,keepAlive:p,keepAliveTimeout:m,maxKeepAliveTimeout:h,keepAliveMaxTimeout:g,keepAliveTimeoutThreshold:_,socketPath:v,pipelining:y,tls:b,strictContentLength:x,maxCachedSessions:w,maxRedirections:E,connect:D,maxRequestsPerClient:O,localAddress:k,maxResponseSize:A,autoSelectFamily:j,autoSelectFamilyAttemptTimeout:M,allowH2:N,maxConcurrentStreams:ee}={}){if(super(),p!==void 0)throw new f(`unsupported keepAlive, use pipelining=0 instead`);if(s!==void 0)throw new f(`unsupported socketTimeout, use headersTimeout & bodyTimeout instead`);if(c!==void 0)throw new f(`unsupported requestTimeout, use headersTimeout & bodyTimeout instead`);if(d!==void 0)throw new f(`unsupported idleTimeout, use keepAliveTimeout instead`);if(h!==void 0)throw new f(`unsupported maxKeepAliveTimeout, use keepAliveMaxTimeout instead`);if(n!=null&&!Number.isFinite(n))throw new f(`invalid maxHeaderSize`);if(v!=null&&typeof v!=`string`)throw new f(`invalid socketPath`);if(l!=null&&(!Number.isFinite(l)||l<0))throw new f(`invalid connectTimeout`);if(m!=null&&(!Number.isFinite(m)||m<=0))throw new f(`invalid keepAliveTimeout`);if(g!=null&&(!Number.isFinite(g)||g<=0))throw new f(`invalid keepAliveMaxTimeout`);if(_!=null&&!Number.isFinite(_))throw new f(`invalid keepAliveTimeoutThreshold`);if(a!=null&&(!Number.isInteger(a)||a<0))throw new f(`headersTimeout must be a positive integer or zero`);if(u!=null&&(!Number.isInteger(u)||u<0))throw new f(`bodyTimeout must be a positive integer or zero`);if(D!=null&&typeof D!=`function`&&typeof D!=`object`)throw new f(`connect must be a function or an object`);if(E!=null&&(!Number.isInteger(E)||E<0))throw new f(`maxRedirections must be a positive number`);if(O!=null&&(!Number.isInteger(O)||O<0))throw new f(`maxRequestsPerClient must be a positive number`);if(k!=null&&(typeof k!=`string`||r.isIP(k)===0))throw new f(`localAddress must be valid string IP address`);if(A!=null&&(!Number.isInteger(A)||A<-1))throw new f(`maxResponseSize must be a positive number`);if(M!=null&&(!Number.isInteger(M)||M<-1))throw new f(`autoSelectFamilyAttemptTimeout must be a positive number`);if(N!=null&&typeof N!=`boolean`)throw new f(`allowH2 must be a valid boolean value`);if(ee!=null&&(typeof ee!=`number`||ee<1))throw new f(`maxConcurrentStreams must be a possitive integer, greater than 0`);typeof D!=`function`&&(D=S({...b,maxCachedSessions:w,allowH2:N,socketPath:v,timeout:l,...o.nodeHasAutoSelectFamily&&j?{autoSelectFamily:j,autoSelectFamilyAttemptTimeout:M}:void 0,...D})),this[De]=t&&t.Client&&Array.isArray(t.Client)?t.Client:[Xe({maxRedirections:E})],this[C]=o.parseOrigin(e),this[be]=D,this[G]=null,this[ae]=y??1,this[se]=n||i.maxHeaderSize,this[re]=m??4e3,this[le]=g??6e5,this[fe]=_??1e3,this[oe]=this[re],this[T]=null,this[Oe]=k??null,this[P]=0,this[V]=0,this[H]=`host: ${this[C].hostname}${this[C].port?`:${this[C].port}`:``}\r\n`,this[ve]=u??3e5,this[me]=a??3e5,this[ye]=x??!0,this[xe]=E,this[Se]=O,this[Ue]=null,this[ke]=A>-1?A:-1,this[Ae]=`h1`,this[Me]=null,this[Ne]=N?{openStreams:0,maxConcurrentStreams:ee??100}:null,this[je]=`${this[C].hostname}${this[C].port?`:${this[C].port}`:``}`,this[z]=[],this[U]=0,this[ie]=0}get pipelining(){return this[ae]}set pipelining(e){this[ae]=e,pt(this,!0)}get[I](){return this[z].length-this[ie]}get[F](){return this[ie]-this[U]}get[L](){return this[z].length-this[U]}get[B](){return!!this[G]&&!this[te]&&!this[G].destroyed}get[D](){let e=this[G];return e&&(e[w]||e[R]||e[ee])||this[L]>=(this[ae]||1)||this[I]>0}[N](e){dt(this),this.once(`connect`,e)}[Ee](e,t){let n=e.origin||this[C].origin,r=this[Ae]===`h2`?c[Pe](n,e,t):c[K](n,e,t);return this[z].push(r),this[P]||(o.bodyLength(r.body)==null&&o.isIterable(r.body)?(this[P]=1,process.nextTick(pt,this)):pt(this,!0)),this[P]&&this[V]!==2&&this[D]&&(this[V]=2),this[V]<2}async[we](){return new Promise(e=>{this[L]?this[Ue]=e:e(null)})}async[Te](e){return new Promise(t=>{let n=this[z].splice(this[ie]);for(let t=0;t{this[Ue]&&(this[Ue](),this[Ue]=null),t()};this[Me]!=null&&(o.destroy(this[Me],e),this[Me]=null,this[Ne]=null),this[G]?o.destroy(this[G].on(`close`,r),e):queueMicrotask(r),pt(this)})}};function Ge(e){n(e.code!==`ERR_TLS_CERT_ALTNAME_INVALID`),this[G][W]=e,ct(this[E],e)}function Ke(e,t,n){let r=new _(`HTTP/2: "frameError" received - type ${e}, code ${t}`);n===0&&(this[G][W]=r,ct(this[E],r))}function qe(){o.destroy(this,new g(`other side closed`)),o.destroy(this[G],new g(`other side closed`))}function Je(e){let t=this[E],r=new _(`HTTP/2: "GOAWAY" frame received with code ${e}`);if(t[G]=null,t[Me]=null,t.destroyed){n(this[I]===0);let e=t[z].splice(t[U]);for(let t=0;t0){let e=t[z][t[U]];t[z][t[U]++]=null,St(t,e,r)}t[ie]=t[U],n(t[F]===0),t.emit(`disconnect`,t[C],[t],r),pt(t)}let Ye=pe(),Xe=he(),Ze=Buffer.alloc(0);async function Qe(){let e=process.env.JEST_WORKER_ID?ge():void 0,t;try{t=await WebAssembly.compile(Buffer.from(_e(),`base64`))}catch{t=await WebAssembly.compile(Buffer.from(e||ge(),`base64`))}return await WebAssembly.instantiate(t,{env:{wasm_on_url:(e,t,n)=>0,wasm_on_status:(e,t,r)=>{n.strictEqual(tt.ptr,e);let i=t-Z+nt.byteOffset;return tt.onStatus(new He(nt.buffer,i,r))||0},wasm_on_message_begin:e=>(n.strictEqual(tt.ptr,e),tt.onMessageBegin()||0),wasm_on_header_field:(e,t,r)=>{n.strictEqual(tt.ptr,e);let i=t-Z+nt.byteOffset;return tt.onHeaderField(new He(nt.buffer,i,r))||0},wasm_on_header_value:(e,t,r)=>{n.strictEqual(tt.ptr,e);let i=t-Z+nt.byteOffset;return tt.onHeaderValue(new He(nt.buffer,i,r))||0},wasm_on_headers_complete:(e,t,r,i)=>(n.strictEqual(tt.ptr,e),tt.onHeadersComplete(t,!!r,!!i)||0),wasm_on_body:(e,t,r)=>{n.strictEqual(tt.ptr,e);let i=t-Z+nt.byteOffset;return tt.onBody(new He(nt.buffer,i,r))||0},wasm_on_message_complete:e=>(n.strictEqual(tt.ptr,e),tt.onMessageComplete()||0)}})}let $e=null,et=Qe();et.catch();let tt=null,nt=null,rt=0,Z=null;var it=class{constructor(e,t,{exports:r}){n(Number.isFinite(e[se])&&e[se]>0),this.llhttp=r,this.ptr=this.llhttp.llhttp_alloc(Ye.TYPE.RESPONSE),this.client=e,this.socket=t,this.timeout=null,this.timeoutValue=null,this.timeoutType=null,this.statusCode=null,this.statusText=``,this.upgrade=!1,this.headers=[],this.headersSize=0,this.headersMaxSize=e[se],this.shouldKeepAlive=!1,this.paused=!1,this.resume=this.resume.bind(this),this.bytesRead=0,this.keepAlive=``,this.contentLength=``,this.connection=``,this.maxResponseSize=e[ke]}setTimeout(e,t){this.timeoutType=t,e===this.timeoutValue?this.timeout&&this.timeout.refresh&&this.timeout.refresh():(s.clearTimeout(this.timeout),e?(this.timeout=s.setTimeout(at,e,this),this.timeout.unref&&this.timeout.unref()):this.timeout=null,this.timeoutValue=e)}resume(){this.socket.destroyed||!this.paused||(n(this.ptr!=null),n(tt==null),this.llhttp.llhttp_resume(this.ptr),n(this.timeoutType===2),this.timeout&&this.timeout.refresh&&this.timeout.refresh(),this.paused=!1,this.execute(this.socket.read()||Ze),this.readMore())}readMore(){for(;!this.paused&&this.ptr;){let e=this.socket.read();if(e===null)break;this.execute(e)}}execute(e){n(this.ptr!=null),n(tt==null),n(!this.paused);let{socket:t,llhttp:r}=this;e.length>rt&&(Z&&r.free(Z),rt=Math.ceil(e.length/4096)*4096,Z=r.malloc(rt)),new Uint8Array(r.memory.buffer,Z,rt).set(e);try{let n;try{nt=e,tt=this,n=r.llhttp_execute(this.ptr,Z,e.length)}catch(e){throw e}finally{tt=null,nt=null}let i=r.llhttp_get_error_pos(this.ptr)-Z;if(n===Ye.ERROR.PAUSED_UPGRADE)this.onUpgrade(e.slice(i));else if(n===Ye.ERROR.PAUSED)this.paused=!0,t.unshift(e.slice(i));else if(n!==Ye.ERROR.OK){let t=r.llhttp_get_error_reason(this.ptr),a=``;if(t){let e=new Uint8Array(r.memory.buffer,t).indexOf(0);a=`Response does not match the HTTP/1.1 protocol (`+Buffer.from(r.memory.buffer,t,e).toString()+`)`}throw new y(a,Ye.ERROR[n],e.slice(i))}}catch(e){o.destroy(t,e)}}destroy(){n(this.ptr!=null),n(tt==null),this.llhttp.llhttp_free(this.ptr),this.ptr=null,s.clearTimeout(this.timeout),this.timeout=null,this.timeoutValue=null,this.timeoutType=null,this.paused=!1}onStatus(e){this.statusText=e.toString()}onMessageBegin(){let{socket:e,client:t}=this;if(e.destroyed||!t[z][t[U]])return-1}onHeaderField(e){let t=this.headers.length;t&1?this.headers[t-1]=Buffer.concat([this.headers[t-1],e]):this.headers.push(e),this.trackHeader(e.length)}onHeaderValue(e){let t=this.headers.length;(t&1)==1?(this.headers.push(e),t+=1):this.headers[t-1]=Buffer.concat([this.headers[t-1],e]);let n=this.headers[t-2];n.length===10&&n.toString().toLowerCase()===`keep-alive`?this.keepAlive+=e.toString():n.length===10&&n.toString().toLowerCase()===`connection`?this.connection+=e.toString():n.length===14&&n.toString().toLowerCase()===`content-length`&&(this.contentLength+=e.toString()),this.trackHeader(e.length)}trackHeader(e){this.headersSize+=e,this.headersSize>=this.headersMaxSize&&o.destroy(this.socket,new h)}onUpgrade(e){let{upgrade:t,client:r,socket:i,headers:a,statusCode:s}=this;n(t);let c=r[z][r[U]];n(c),n(!i.destroyed),n(i===r[G]),n(!this.paused),n(c.upgrade||c.method===`CONNECT`),this.statusCode=null,this.statusText=``,this.shouldKeepAlive=null,n(this.headers.length%2==0),this.headers=[],this.headersSize=0,i.unshift(e),i[A].destroy(),i[A]=null,i[E]=null,i[W]=null,i.removeListener(`error`,st).removeListener(`readable`,ot).removeListener(`end`,lt).removeListener(`close`,ut),r[G]=null,r[z][r[U]++]=null,r.emit(`disconnect`,r[C],[r],new _(`upgrade`));try{c.onUpgrade(s,a,i)}catch(e){o.destroy(i,e)}pt(r)}onHeadersComplete(e,t,r){let{client:i,socket:a,headers:s,statusText:c}=this;if(a.destroyed)return-1;let l=i[z][i[U]];if(!l)return-1;if(n(!this.upgrade),n(this.statusCode<200),e===100)return o.destroy(a,new g(`bad response`,o.getSocketInfo(a))),-1;if(t&&!l.upgrade)return o.destroy(a,new g(`bad upgrade`,o.getSocketInfo(a))),-1;if(n.strictEqual(this.timeoutType,1),this.statusCode=e,this.shouldKeepAlive=r||l.method===`HEAD`&&!a[w]&&this.connection.toLowerCase()===`keep-alive`,this.statusCode>=200){let e=l.bodyTimeout==null?i[ve]:l.bodyTimeout;this.setTimeout(e,2)}else this.timeout&&this.timeout.refresh&&this.timeout.refresh();if(l.method===`CONNECT`||t)return n(i[F]===1),this.upgrade=!0,2;if(n(this.headers.length%2==0),this.headers=[],this.headersSize=0,this.shouldKeepAlive&&i[ae]){let e=this.keepAlive?o.parseKeepAliveTimeout(this.keepAlive):null;if(e!=null){let t=Math.min(e-i[fe],i[le]);t<=0?a[w]=!0:i[oe]=t}else i[oe]=i[re]}else a[w]=!0;let u=l.onHeaders(e,s,this.resume,c)===!1;return l.aborted?-1:l.method===`HEAD`||e<200?1:(a[ee]&&(a[ee]=!1,pt(i)),u?Ye.ERROR.PAUSED:0)}onBody(e){let{client:t,socket:r,statusCode:i,maxResponseSize:a}=this;if(r.destroyed)return-1;let s=t[z][t[U]];if(n(s),n.strictEqual(this.timeoutType,2),this.timeout&&this.timeout.refresh&&this.timeout.refresh(),n(i>=200),a>-1&&this.bytesRead+e.length>a)return o.destroy(r,new b),-1;if(this.bytesRead+=e.length,s.onData(e)===!1)return Ye.ERROR.PAUSED}onMessageComplete(){let{client:e,socket:t,statusCode:r,upgrade:i,headers:a,contentLength:s,bytesRead:c,shouldKeepAlive:l}=this;if(t.destroyed&&(!r||l))return-1;if(i)return;let u=e[z][e[U]];if(n(u),n(r>=100),this.statusCode=null,this.statusText=``,this.bytesRead=0,this.contentLength=``,this.keepAlive=``,this.connection=``,n(this.headers.length%2==0),this.headers=[],this.headersSize=0,!(r<200)){if(u.method!==`HEAD`&&s&&c!==parseInt(s,10))return o.destroy(t,new d),-1;if(u.onComplete(a),e[z][e[U]++]=null,t[R])return n.strictEqual(e[F],0),o.destroy(t,new _(`reset`)),Ye.ERROR.PAUSED;if(l){if(t[w]&&e[F]===0)return o.destroy(t,new _(`reset`)),Ye.ERROR.PAUSED;e[ae]===1?setImmediate(pt,e):pt(e)}else return o.destroy(t,new _(`reset`)),Ye.ERROR.PAUSED}}};function at(e){let{socket:t,timeoutType:r,client:i}=e;r===1?(!t[R]||t.writableNeedDrain||i[F]>1)&&(n(!e.paused,`cannot be paused while waiting for headers`),o.destroy(t,new m)):r===2?e.paused||o.destroy(t,new v):r===3&&(n(i[F]===0&&i[oe]),o.destroy(t,new _(`socket idle timeout`)))}function ot(){let{[A]:e}=this;e&&e.readMore()}function st(e){let{[E]:t,[A]:r}=this;if(n(e.code!==`ERR_TLS_CERT_ALTNAME_INVALID`),t[Ae]!==`h2`&&e.code===`ECONNRESET`&&r.statusCode&&!r.shouldKeepAlive){r.onMessageComplete();return}this[W]=e,ct(this[E],e)}function ct(e,t){if(e[F]===0&&t.code!==`UND_ERR_INFO`&&t.code!==`UND_ERR_SOCKET`){n(e[ie]===e[U]);let r=e[z].splice(e[U]);for(let n=0;n0&&r.code!==`UND_ERR_INFO`){let t=e[z][e[U]];e[z][e[U]++]=null,St(e,t,r)}e[ie]=e[U],n(e[F]===0),e.emit(`disconnect`,e[C],[e],r),pt(e)}async function dt(e){n(!e[te]),n(!e[G]);let{host:t,hostname:i,protocol:a,port:s}=e[C];if(i[0]===`[`){let e=i.indexOf(`]`);n(e!==-1);let t=i.substring(1,e);n(r.isIP(t)),i=t}e[te]=!0,X.beforeConnect.hasSubscribers&&X.beforeConnect.publish({connectParams:{host:t,hostname:i,protocol:a,port:s,servername:e[T],localAddress:e[Oe]},connector:e[be]});try{let r=await new Promise((n,r)=>{e[be]({host:t,hostname:i,protocol:a,port:s,servername:e[T],localAddress:e[Oe]},(e,t)=>{e?r(e):n(t)})});if(e.destroyed){o.destroy(r.on(`error`,()=>{}),new x);return}if(e[te]=!1,n(r),r.alpnProtocol===`h2`){Y||(Y=!0,process.emitWarning(`H2 support is experimental, expect them to change at any time.`,{code:`UNDICI-H2`}));let t=Ie.connect(e[C],{createConnection:()=>r,peerMaxConcurrentStreams:e[Ne].maxConcurrentStreams});e[Ae]=`h2`,t[E]=e,t[G]=r,t.on(`error`,Ge),t.on(`frameError`,Ke),t.on(`end`,qe),t.on(`goaway`,Je),t.on(`close`,ut),t.unref(),e[Me]=t,r[Me]=t}else $e||($e=await et,et=null),r[ne]=!1,r[R]=!1,r[w]=!1,r[ee]=!1,r[A]=new it(e,r,$e);r[Ce]=0,r[Se]=e[Se],r[E]=e,r[W]=null,r.on(`error`,st).on(`readable`,ot).on(`end`,lt).on(`close`,ut),e[G]=r,X.connected.hasSubscribers&&X.connected.publish({connectParams:{host:t,hostname:i,protocol:a,port:s,servername:e[T],localAddress:e[Oe]},connector:e[be],socket:r}),e.emit(`connect`,e[C],[e])}catch(r){if(e.destroyed)return;if(e[te]=!1,X.connectError.hasSubscribers&&X.connectError.publish({connectParams:{host:t,hostname:i,protocol:a,port:s,servername:e[T],localAddress:e[Oe]},connector:e[be],error:r}),r.code===`ERR_TLS_CERT_ALTNAME_INVALID`)for(n(e[F]===0);e[I]>0&&e[z][e[ie]].servername===e[T];){let t=e[z][e[ie]++];St(e,t,r)}else ct(e,r);e.emit(`connectionError`,e[C],[e],r)}pt(e)}function ft(e){e[V]=0,e.emit(`drain`,e[C],[e])}function pt(e,t){e[P]!==2&&(e[P]=2,mt(e,t),e[P]=0,e[U]>256&&(e[z].splice(0,e[U]),e[ie]-=e[U],e[U]=0))}function mt(e,t){for(;;){if(e.destroyed){n(e[I]===0);return}if(e[Ue]&&!e[L]){e[Ue](),e[Ue]=null;return}let r=e[G];if(r&&!r.destroyed&&r.alpnProtocol!==`h2`){if(e[L]===0?!r[ne]&&r.unref&&(r.unref(),r[ne]=!0):r[ne]&&r.ref&&(r.ref(),r[ne]=!1),e[L]===0)r[A].timeoutType!==3&&r[A].setTimeout(e[oe],3);else if(e[F]>0&&r[A].statusCode<200&&r[A].timeoutType!==1){let t=e[z][e[U]],n=t.headersTimeout==null?e[me]:t.headersTimeout;r[A].setTimeout(n,1)}}if(e[D])e[V]=2;else if(e[V]===2){t?(e[V]=1,process.nextTick(ft,e)):ft(e);continue}if(e[I]===0||e[F]>=(e[ae]||1))return;let i=e[z][e[ie]];if(e[C].protocol===`https:`&&e[T]!==i.servername){if(e[F]>0)return;if(e[T]=i.servername,r&&r.servername!==i.servername){o.destroy(r,new _(`servername changed`));return}}if(e[te])return;if(!r&&!e[Me]){dt(e);return}if(r.destroyed||r[R]||r[w]||r[ee]||e[F]>0&&!i.idempotent||e[F]>0&&(i.upgrade||i.method===`CONNECT`)||e[F]>0&&o.bodyLength(i.body)!==0&&(o.isStream(i.body)||o.isAsyncIterable(i.body)))return;!i.aborted&>(e,i)?e[ie]++:e[z].splice(e[ie],1)}}function ht(e){return e!==`GET`&&e!==`HEAD`&&e!==`OPTIONS`&&e!==`TRACE`&&e!==`CONNECT`}function gt(e,t){if(e[Ae]===`h2`){_t(e,e[Me],t);return}let{body:r,method:i,path:a,host:s,upgrade:c,headers:l,blocking:d,reset:f}=t,m=i===`PUT`||i===`POST`||i===`PATCH`;r&&typeof r.read==`function`&&r.read(0);let h=o.bodyLength(r),g=h;if(g===null&&(g=t.contentLength),g===0&&!m&&(g=null),ht(i)&&g>0&&t.contentLength!==null&&t.contentLength!==g){if(e[ye])return St(e,t,new u),!1;process.emitWarning(new u)}let v=e[G];try{t.onConnect(n=>{t.aborted||t.completed||(St(e,t,n||new p),o.destroy(v,new _(`aborted`)))})}catch(n){St(e,t,n)}if(t.aborted)return!1;i===`HEAD`&&(v[w]=!0),(c||i===`CONNECT`)&&(v[w]=!0),f!=null&&(v[w]=f),e[Se]&&v[Ce]++>=e[Se]&&(v[w]=!0),d&&(v[ee]=!0);let y=`${i} ${a} HTTP/1.1\r\n`;return typeof s==`string`?y+=`host: ${s}\r\n`:y+=e[H],c?y+=`connection: upgrade\r\nupgrade: ${c}\r\n`:e[ae]&&!v[w]?y+=`connection: keep-alive\r +`:y+=`connection: close\r +`,l&&(y+=l),X.sendHeaders.hasSubscribers&&X.sendHeaders.publish({request:t,headers:y,socket:v}),!r||h===0?(g===0?v.write(`${y}content-length: 0\r\n\r\n`,`latin1`):(n(g===null,`no body must not have content length`),v.write(`${y}\r\n`,`latin1`)),t.onRequestSent()):o.isBuffer(r)?(n(g===r.byteLength,`buffer body must have content length`),v.cork(),v.write(`${y}content-length: ${g}\r\n\r\n`,`latin1`),v.write(r),v.uncork(),t.onBodySent(r),t.onRequestSent(),m||(v[w]=!0)):o.isBlobLike(r)?typeof r.stream==`function`?bt({body:r.stream(),client:e,request:t,socket:v,contentLength:g,header:y,expectsPayload:m}):yt({body:r,client:e,request:t,socket:v,contentLength:g,header:y,expectsPayload:m}):o.isStream(r)?vt({body:r,client:e,request:t,socket:v,contentLength:g,header:y,expectsPayload:m}):o.isIterable(r)?bt({body:r,client:e,request:t,socket:v,contentLength:g,header:y,expectsPayload:m}):n(!1),!0}function _t(e,t,r){let{body:i,method:a,path:s,host:l,upgrade:d,expectContinue:f,signal:m,headers:h}=r,g;if(g=typeof h==`string`?c[Fe](h.trim()):h,d)return St(e,r,Error(`Upgrade not supported for H2`)),!1;try{r.onConnect(t=>{r.aborted||r.completed||St(e,r,t||new p)})}catch(t){St(e,r,t)}if(r.aborted)return!1;let v,y=e[Ne];if(g[Le]=l||e[je],g[Re]=a,a===`CONNECT`)return t.ref(),v=t.request(g,{endStream:!1,signal:m}),v.id&&!v.pending?(r.onUpgrade(null,null,v),++y.openStreams):v.once(`ready`,()=>{r.onUpgrade(null,null,v),++y.openStreams}),v.once(`close`,()=>{--y.openStreams,y.openStreams===0&&t.unref()}),!0;g[q]=s,g[ze]=`https`;let b=a===`PUT`||a===`POST`||a===`PATCH`;i&&typeof i.read==`function`&&i.read(0);let x=o.bodyLength(i);if(x??=r.contentLength,(x===0||!b)&&(x=null),ht(a)&&x>0&&r.contentLength!=null&&r.contentLength!==x){if(e[ye])return St(e,r,new u),!1;process.emitWarning(new u)}x!=null&&(n(i,`no body must not have content length`),g[Be]=`${x}`),t.ref();let S=a===`GET`||a===`HEAD`;return f?(g[J]=`100-continue`,v=t.request(g,{endStream:S,signal:m}),v.once(`continue`,C)):(v=t.request(g,{endStream:S,signal:m}),C()),++y.openStreams,v.once(`response`,e=>{let{[Ve]:t,...n}=e;r.onHeaders(Number(t),n,v.resume.bind(v),``)===!1&&v.pause()}),v.once(`end`,()=>{r.onComplete([])}),v.on(`data`,e=>{r.onData(e)===!1&&v.pause()}),v.once(`close`,()=>{--y.openStreams,y.openStreams===0&&t.unref()}),v.once(`error`,function(t){e[Me]&&!e[Me].destroyed&&!this.closed&&!this.destroyed&&(--y.streams,o.destroy(v,t))}),v.once(`frameError`,(t,n)=>{let i=new _(`HTTP/2: "frameError" received - type ${t}, code ${n}`);St(e,r,i),e[Me]&&!e[Me].destroyed&&!this.closed&&!this.destroyed&&(--y.streams,o.destroy(v,i))}),!0;function C(){i?o.isBuffer(i)?(n(x===i.byteLength,`buffer body must have content length`),v.cork(),v.write(i),v.uncork(),v.end(),r.onBodySent(i),r.onRequestSent()):o.isBlobLike(i)?typeof i.stream==`function`?bt({client:e,request:r,contentLength:x,h2stream:v,expectsPayload:b,body:i.stream(),socket:e[G],header:``}):yt({body:i,client:e,request:r,contentLength:x,expectsPayload:b,h2stream:v,header:``,socket:e[G]}):o.isStream(i)?vt({body:i,client:e,request:r,contentLength:x,expectsPayload:b,socket:e[G],h2stream:v,header:``}):o.isIterable(i)?bt({body:i,client:e,request:r,contentLength:x,expectsPayload:b,header:``,h2stream:v,socket:e[G]}):n(!1):r.onRequestSent()}}function vt({h2stream:e,body:t,client:r,request:i,socket:s,contentLength:c,header:l,expectsPayload:u}){if(n(c!==0||r[F]===0,`stream body cannot be pipelined`),r[Ae]===`h2`){let n=a(t,e,n=>{n?(o.destroy(t,n),o.destroy(e,n)):i.onRequestSent()});n.on(`data`,r),n.once(`end`,()=>{n.removeListener(`data`,r),o.destroy(n)});function r(e){i.onBodySent(e)}return}let d=!1,f=new xt({socket:s,request:i,contentLength:c,client:r,expectsPayload:u,header:l}),m=function(e){if(!d)try{!f.write(e)&&this.pause&&this.pause()}catch(e){o.destroy(this,e)}},h=function(){d||t.resume&&t.resume()},g=function(){if(d)return;let e=new p;queueMicrotask(()=>_(e))},_=function(e){if(!d){if(d=!0,n(s.destroyed||s[R]&&r[F]<=1),s.off(`drain`,h).off(`error`,_),t.removeListener(`data`,m).removeListener(`end`,_).removeListener(`error`,_).removeListener(`close`,g),!e)try{f.end()}catch(t){e=t}f.destroy(e),e&&(e.code!==`UND_ERR_INFO`||e.message!==`reset`)?o.destroy(t,e):o.destroy(t)}};t.on(`data`,m).on(`end`,_).on(`error`,_).on(`close`,g),t.resume&&t.resume(),s.on(`drain`,h).on(`error`,_)}async function yt({h2stream:e,body:t,client:r,request:i,socket:a,contentLength:s,header:c,expectsPayload:l}){n(s===t.size,`blob body must have content length`);let d=r[Ae]===`h2`;try{if(s!=null&&s!==t.size)throw new u;let n=Buffer.from(await t.arrayBuffer());d?(e.cork(),e.write(n),e.uncork()):(a.cork(),a.write(`${c}content-length: ${s}\r\n\r\n`,`latin1`),a.write(n),a.uncork()),i.onBodySent(n),i.onRequestSent(),l||(a[w]=!0),pt(r)}catch(t){o.destroy(d?e:a,t)}}async function bt({h2stream:e,body:t,client:r,request:i,socket:a,contentLength:o,header:s,expectsPayload:c}){n(o!==0||r[F]===0,`iterator body cannot be pipelined`);let l=null;function u(){if(l){let e=l;l=null,e()}}let d=()=>new Promise((e,t)=>{n(l===null),a[W]?t(a[W]):l=e});if(r[Ae]===`h2`){e.on(`close`,u).on(`drain`,u);try{for await(let n of t){if(a[W])throw a[W];let t=e.write(n);i.onBodySent(n),t||await d()}}catch(t){e.destroy(t)}finally{i.onRequestSent(),e.end(),e.off(`close`,u).off(`drain`,u)}return}a.on(`close`,u).on(`drain`,u);let f=new xt({socket:a,request:i,contentLength:o,client:r,expectsPayload:c,header:s});try{for await(let e of t){if(a[W])throw a[W];f.write(e)||await d()}f.end()}catch(e){f.destroy(e)}finally{a.off(`close`,u).off(`drain`,u)}}var xt=class{constructor({socket:e,request:t,contentLength:n,client:r,expectsPayload:i,header:a}){this.socket=e,this.request=t,this.contentLength=n,this.client=r,this.bytesWritten=0,this.expectsPayload=i,this.header=a,e[R]=!0}write(e){let{socket:t,request:n,contentLength:r,client:i,bytesWritten:a,expectsPayload:o,header:s}=this;if(t[W])throw t[W];if(t.destroyed)return!1;let c=Buffer.byteLength(e);if(!c)return!0;if(r!==null&&a+c>r){if(i[ye])throw new u;process.emitWarning(new u)}t.cork(),a===0&&(o||(t[w]=!0),r===null?t.write(`${s}transfer-encoding: chunked\r\n`,`latin1`):t.write(`${s}content-length: ${r}\r\n\r\n`,`latin1`)),r===null&&t.write(`\r\n${c.toString(16)}\r\n`,`latin1`),this.bytesWritten+=c;let l=t.write(e);return t.uncork(),n.onBodySent(e),l||t[A].timeout&&t[A].timeoutType===1&&t[A].timeout.refresh&&t[A].timeout.refresh(),l}end(){let{socket:e,contentLength:t,client:n,bytesWritten:r,expectsPayload:i,header:a,request:o}=this;if(o.onRequestSent(),e[R]=!1,e[W])throw e[W];if(!e.destroyed){if(r===0?i?e.write(`${a}content-length: 0\r\n\r\n`,`latin1`):e.write(`${a}\r\n`,`latin1`):t===null&&e.write(`\r +0\r +\r +`,`latin1`),t!==null&&r!==t){if(n[ye])throw new u;process.emitWarning(new u)}e[A].timeout&&e[A].timeoutType===1&&e[A].timeout.refresh&&e[A].timeout.refresh(),pt(n)}}destroy(e){let{socket:t,client:r}=this;t[R]=!1,e&&(n(r[F]<=1,`pipeline should only contain this request`),o.destroy(t,e))}};function St(e,t,r){try{t.onError(r),n(t.aborted)}catch(t){e.emit(`error`,t)}}t.exports=We})),ye=s(((e,t)=>{let n=2048,r=n-1;var i=class{constructor(){this.bottom=0,this.top=0,this.list=Array(n),this.next=null}isEmpty(){return this.top===this.bottom}isFull(){return(this.top+1&r)===this.bottom}push(e){this.list[this.top]=e,this.top=this.top+1&r}shift(){let e=this.list[this.bottom];return e===void 0?null:(this.list[this.bottom]=void 0,this.bottom=this.bottom+1&r,e)}};t.exports=class{constructor(){this.head=this.tail=new i}isEmpty(){return this.head.isEmpty()}push(e){this.head.isFull()&&(this.head=this.head.next=new i),this.head.push(e)}shift(){let e=this.tail,t=e.shift();return e.isEmpty()&&e.next!==null&&(this.tail=e.next),t}}})),be=s(((e,t)=>{let{kFree:n,kConnected:r,kPending:i,kQueued:a,kRunning:o,kSize:s}=O(),c=Symbol(`pool`);t.exports=class{constructor(e){this[c]=e}get connected(){return this[c][r]}get free(){return this[c][n]}get pending(){return this[c][i]}get queued(){return this[c][a]}get running(){return this[c][o]}get size(){return this[c][s]}}})),xe=s(((e,t)=>{let n=ue(),r=ye(),{kConnected:i,kSize:a,kRunning:o,kPending:s,kQueued:c,kBusy:l,kFree:u,kUrl:d,kClose:f,kDestroy:p,kDispatch:m}=O(),h=be(),g=Symbol(`clients`),_=Symbol(`needDrain`),v=Symbol(`queue`),y=Symbol(`closed resolve`),b=Symbol(`onDrain`),x=Symbol(`onConnect`),S=Symbol(`onDisconnect`),C=Symbol(`onConnectionError`),w=Symbol(`get dispatcher`),T=Symbol(`add client`),E=Symbol(`remove client`),D=Symbol(`stats`);t.exports={PoolBase:class extends n{constructor(){super(),this[v]=new r,this[g]=[],this[c]=0;let e=this;this[b]=function(t,n){let r=e[v],i=!1;for(;!i;){let t=r.shift();if(!t)break;e[c]--,i=!this.dispatch(t.opts,t.handler)}this[_]=i,!this[_]&&e[_]&&(e[_]=!1,e.emit(`drain`,t,[e,...n])),e[y]&&r.isEmpty()&&Promise.all(e[g].map(e=>e.close())).then(e[y])},this[x]=(t,n)=>{e.emit(`connect`,t,[e,...n])},this[S]=(t,n,r)=>{e.emit(`disconnect`,t,[e,...n],r)},this[C]=(t,n,r)=>{e.emit(`connectionError`,t,[e,...n],r)},this[D]=new h(this)}get[l](){return this[_]}get[i](){return this[g].filter(e=>e[i]).length}get[u](){return this[g].filter(e=>e[i]&&!e[_]).length}get[s](){let e=this[c];for(let{[s]:t}of this[g])e+=t;return e}get[o](){let e=0;for(let{[o]:t}of this[g])e+=t;return e}get[a](){let e=this[c];for(let{[a]:t}of this[g])e+=t;return e}get stats(){return this[D]}async[f](){return this[v].isEmpty()?Promise.all(this[g].map(e=>e.close())):new Promise(e=>{this[y]=e})}async[p](e){for(;;){let t=this[v].shift();if(!t)break;t.handler.onError(e)}return Promise.all(this[g].map(t=>t.destroy(e)))}[m](e,t){let n=this[w]();return n?n.dispatch(e,t)||(n[_]=!0,this[_]=!this[w]()):(this[_]=!0,this[v].push({opts:e,handler:t}),this[c]++),!this[_]}[T](e){return e.on(`drain`,this[b]).on(`connect`,this[x]).on(`disconnect`,this[S]).on(`connectionError`,this[C]),this[g].push(e),this[_]&&process.nextTick(()=>{this[_]&&this[b](e[d],[this,e])}),this}[E](e){e.close(()=>{let t=this[g].indexOf(e);t!==-1&&this[g].splice(t,1)}),this[_]=this[g].some(e=>!e[_]&&e.closed!==!0&&e.destroyed!==!0)}},kClients:g,kNeedDrain:_,kAddClient:T,kRemoveClient:E,kGetDispatcher:w}})),Se=s(((e,t)=>{let{PoolBase:n,kClients:r,kNeedDrain:i,kAddClient:a,kGetDispatcher:o}=xe(),s=ve(),{InvalidArgumentError:c}=k(),l=j(),{kUrl:u,kInterceptors:d}=O(),f=de(),p=Symbol(`options`),m=Symbol(`connections`),h=Symbol(`factory`);function g(e,t){return new s(e,t)}t.exports=class extends n{constructor(e,{connections:t,factory:n=g,connect:i,connectTimeout:a,tls:o,maxCachedSessions:s,socketPath:_,autoSelectFamily:v,autoSelectFamilyAttemptTimeout:y,allowH2:b,...x}={}){if(super(),t!=null&&(!Number.isFinite(t)||t<0))throw new c(`invalid connections`);if(typeof n!=`function`)throw new c(`factory must be a function.`);if(i!=null&&typeof i!=`function`&&typeof i!=`object`)throw new c(`connect must be a function or an object`);typeof i!=`function`&&(i=f({...o,maxCachedSessions:s,allowH2:b,socketPath:_,timeout:a,...l.nodeHasAutoSelectFamily&&v?{autoSelectFamily:v,autoSelectFamilyAttemptTimeout:y}:void 0,...i})),this[d]=x.interceptors&&x.interceptors.Pool&&Array.isArray(x.interceptors.Pool)?x.interceptors.Pool:[],this[m]=t||null,this[u]=l.parseOrigin(e),this[p]={...l.deepClone(x),connect:i,allowH2:b},this[p].interceptors=x.interceptors?{...x.interceptors}:void 0,this[h]=n,this.on(`connectionError`,(e,t,n)=>{for(let e of t){let t=this[r].indexOf(e);t!==-1&&this[r].splice(t,1)}})}[o](){let e=this[r].find(e=>!e[i]);return e||((!this[m]||this[r].length{let{BalancedPoolMissingUpstreamError:n,InvalidArgumentError:r}=k(),{PoolBase:i,kClients:a,kNeedDrain:o,kAddClient:s,kRemoveClient:c,kGetDispatcher:l}=xe(),u=Se(),{kUrl:d,kInterceptors:f}=O(),{parseOrigin:p}=j(),m=Symbol(`factory`),h=Symbol(`options`),g=Symbol(`kGreatestCommonDivisor`),_=Symbol(`kCurrentWeight`),v=Symbol(`kIndex`),y=Symbol(`kWeight`),b=Symbol(`kMaxWeightPerServer`),x=Symbol(`kErrorPenalty`);function S(e,t){return t===0?e:S(t,e%t)}function C(e,t){return new u(e,t)}t.exports=class extends i{constructor(e=[],{factory:t=C,...n}={}){if(super(),this[h]=n,this[v]=-1,this[_]=0,this[b]=this[h].maxWeightPerServer||100,this[x]=this[h].errorPenalty||15,Array.isArray(e)||(e=[e]),typeof t!=`function`)throw new r(`factory must be a function.`);this[f]=n.interceptors&&n.interceptors.BalancedPool&&Array.isArray(n.interceptors.BalancedPool)?n.interceptors.BalancedPool:[],this[m]=t;for(let t of e)this.addUpstream(t);this._updateBalancedPoolStats()}addUpstream(e){let t=p(e).origin;if(this[a].find(e=>e[d].origin===t&&e.closed!==!0&&e.destroyed!==!0))return this;let n=this[m](t,Object.assign({},this[h]));this[s](n),n.on(`connect`,()=>{n[y]=Math.min(this[b],n[y]+this[x])}),n.on(`connectionError`,()=>{n[y]=Math.max(1,n[y]-this[x]),this._updateBalancedPoolStats()}),n.on(`disconnect`,(...e)=>{let t=e[2];t&&t.code===`UND_ERR_SOCKET`&&(n[y]=Math.max(1,n[y]-this[x]),this._updateBalancedPoolStats())});for(let e of this[a])e[y]=this[b];return this._updateBalancedPoolStats(),this}_updateBalancedPoolStats(){this[g]=this[a].map(e=>e[y]).reduce(S,0)}removeUpstream(e){let t=p(e).origin,n=this[a].find(e=>e[d].origin===t&&e.closed!==!0&&e.destroyed!==!0);return n&&this[c](n),this}get upstreams(){return this[a].filter(e=>e.closed!==!0&&e.destroyed!==!0).map(e=>e[d].origin)}[l](){if(this[a].length===0)throw new n;if(!this[a].find(e=>!e[o]&&e.closed!==!0&&e.destroyed!==!0)||this[a].map(e=>e[o]).reduce((e,t)=>e&&t,!0))return;let e=0,t=this[a].findIndex(e=>!e[o]);for(;e++this[a][t][y]&&!e[o]&&(t=this[v]),this[v]===0&&(this[_]=this[_]-this[g],this[_]<=0&&(this[_]=this[b])),e[y]>=this[_]&&!e[o])return e}return this[_]=this[a][t][y],this[v]=t,this[a][t]}}})),we=s(((e,t)=>{let{kConnected:n,kSize:r}=O();var i=class{constructor(e){this.value=e}deref(){return this.value[n]===0&&this.value[r]===0?void 0:this.value}},a=class{constructor(e){this.finalizer=e}register(e,t){e.on&&e.on(`disconnect`,()=>{e[n]===0&&e[r]===0&&this.finalizer(t)})}};t.exports=function(){return process.env.NODE_V8_COVERAGE?{WeakRef:i,FinalizationRegistry:a}:{WeakRef:global.WeakRef||i,FinalizationRegistry:global.FinalizationRegistry||a}}})),Te=s(((e,t)=>{let{InvalidArgumentError:n}=k(),{kClients:r,kRunning:i,kClose:a,kDestroy:o,kDispatch:s,kInterceptors:c}=O(),l=ue(),u=Se(),d=ve(),f=j(),p=he(),{WeakRef:m,FinalizationRegistry:h}=we()(),g=Symbol(`onConnect`),_=Symbol(`onDisconnect`),v=Symbol(`onConnectionError`),y=Symbol(`maxRedirections`),b=Symbol(`onDrain`),x=Symbol(`factory`),S=Symbol(`finalizer`),C=Symbol(`options`);function w(e,t){return t&&t.connections===1?new d(e,t):new u(e,t)}t.exports=class extends l{constructor({factory:e=w,maxRedirections:t=0,connect:i,...a}={}){if(super(),typeof e!=`function`)throw new n(`factory must be a function.`);if(i!=null&&typeof i!=`function`&&typeof i!=`object`)throw new n(`connect must be a function or an object`);if(!Number.isInteger(t)||t<0)throw new n(`maxRedirections must be a positive number`);i&&typeof i!=`function`&&(i={...i}),this[c]=a.interceptors&&a.interceptors.Agent&&Array.isArray(a.interceptors.Agent)?a.interceptors.Agent:[p({maxRedirections:t})],this[C]={...f.deepClone(a),connect:i},this[C].interceptors=a.interceptors?{...a.interceptors}:void 0,this[y]=t,this[x]=e,this[r]=new Map,this[S]=new h(e=>{let t=this[r].get(e);t!==void 0&&t.deref()===void 0&&this[r].delete(e)});let o=this;this[b]=(e,t)=>{o.emit(`drain`,e,[o,...t])},this[g]=(e,t)=>{o.emit(`connect`,e,[o,...t])},this[_]=(e,t,n)=>{o.emit(`disconnect`,e,[o,...t],n)},this[v]=(e,t,n)=>{o.emit(`connectionError`,e,[o,...t],n)}}get[i](){let e=0;for(let t of this[r].values()){let n=t.deref();n&&(e+=n[i])}return e}[s](e,t){let i;if(e.origin&&(typeof e.origin==`string`||e.origin instanceof URL))i=String(e.origin);else throw new n(`opts.origin must be a non-empty string or URL.`);let a=this[r].get(i),o=a?a.deref():null;return o||(o=this[x](e.origin,this[C]).on(`drain`,this[b]).on(`connect`,this[g]).on(`disconnect`,this[_]).on(`connectionError`,this[v]),this[r].set(i,new m(o)),this[S].register(o,i)),o.dispatch(e,t)}async[a](){let e=[];for(let t of this[r].values()){let n=t.deref();n&&e.push(n.close())}await Promise.all(e)}async[o](e){let t=[];for(let n of this[r].values()){let r=n.deref();r&&t.push(r.destroy(e))}await Promise.all(t)}}})),Ee=s(((e,t)=>{let n=require(`assert`),{Readable:r}=require(`stream`),{RequestAbortedError:i,NotSupportedError:a,InvalidArgumentError:o}=k(),s=j(),{ReadableStreamFrom:c,toUSVString:l}=j(),u,d=Symbol(`kConsume`),f=Symbol(`kReading`),p=Symbol(`kBody`),m=Symbol(`abort`),h=Symbol(`kContentType`),g=()=>{};t.exports=class extends r{constructor({resume:e,abort:t,contentType:n=``,highWaterMark:r=64*1024}){super({autoDestroy:!0,read:e,highWaterMark:r}),this._readableState.dataEmitted=!1,this[m]=t,this[d]=null,this[p]=null,this[h]=n,this[f]=!1}destroy(e){return this.destroyed?this:(!e&&!this._readableState.endEmitted&&(e=new i),e&&this[m](),super.destroy(e))}emit(e,...t){return e===`data`?this._readableState.dataEmitted=!0:e===`error`&&(this._readableState.errorEmitted=!0),super.emit(e,...t)}on(e,...t){return(e===`data`||e===`readable`)&&(this[f]=!0),super.on(e,...t)}addListener(e,...t){return this.on(e,...t)}off(e,...t){let n=super.off(e,...t);return(e===`data`||e===`readable`)&&(this[f]=this.listenerCount(`data`)>0||this.listenerCount(`readable`)>0),n}removeListener(e,...t){return this.off(e,...t)}push(e){return this[d]&&e!==null&&this.readableLength===0?(S(this[d],e),this[f]?super.push(e):!0):super.push(e)}async text(){return y(this,`text`)}async json(){return y(this,`json`)}async blob(){return y(this,`blob`)}async arrayBuffer(){return y(this,`arrayBuffer`)}async formData(){throw new a}get bodyUsed(){return s.isDisturbed(this)}get body(){return this[p]||(this[p]=c(this),this[d]&&(this[p].getReader(),n(this[p].locked))),this[p]}dump(e){let t=e&&Number.isFinite(e.limit)?e.limit:262144,n=e&&e.signal;if(n)try{if(typeof n!=`object`||!(`aborted`in n))throw new o(`signal must be an AbortSignal`);s.throwIfAborted(n)}catch(e){return Promise.reject(e)}return this.closed?Promise.resolve(null):new Promise((e,r)=>{let i=n?s.addAbortListener(n,()=>{this.destroy()}):g;this.on(`close`,function(){i(),n&&n.aborted?r(n.reason||Object.assign(Error(`The operation was aborted`),{name:`AbortError`})):e(null)}).on(`error`,g).on(`data`,function(e){t-=e.length,t<=0&&this.destroy()}).resume()})}};function _(e){return e[p]&&e[p].locked===!0||e[d]}function v(e){return s.isDisturbed(e)||_(e)}async function y(e,t){if(v(e))throw TypeError(`unusable`);return n(!e[d]),new Promise((n,r)=>{e[d]={type:t,stream:e,resolve:n,reject:r,length:0,body:[]},e.on(`error`,function(e){C(this[d],e)}).on(`close`,function(){this[d].body!==null&&C(this[d],new i)}),process.nextTick(b,e[d])})}function b(e){if(e.body===null)return;let{_readableState:t}=e.stream;for(let n of t.buffer)S(e,n);for(t.endEmitted?x(this[d]):e.stream.on(`end`,function(){x(this[d])}),e.stream.resume();e.stream.read()!=null;);}function x(e){let{type:t,body:n,resolve:r,stream:i,length:a}=e;try{if(t===`text`)r(l(Buffer.concat(n)));else if(t===`json`)r(JSON.parse(Buffer.concat(n)));else if(t===`arrayBuffer`){let e=new Uint8Array(a),t=0;for(let r of n)e.set(r,t),t+=r.byteLength;r(e.buffer)}else t===`blob`&&(u||=require(`buffer`).Blob,r(new u(n,{type:i[h]})));C(e)}catch(e){i.destroy(e)}}function S(e,t){e.length+=t.length,e.body.push(t)}function C(e,t){e.body!==null&&(t?e.reject(t):e.resolve(),e.type=null,e.stream=null,e.resolve=null,e.reject=null,e.length=0,e.body=null)}})),De=s(((e,t)=>{let n=require(`assert`),{ResponseStatusCodeError:r}=k(),{toUSVString:i}=j();async function a({callback:e,body:t,contentType:a,statusCode:o,statusMessage:s,headers:c}){n(t);let l=[],u=0;for await(let e of t)if(l.push(e),u+=e.length,u>128*1024){l=null;break}if(o===204||!a||!l){process.nextTick(e,new r(`Response status code ${o}${s?`: ${s}`:``}`,o,c));return}try{if(a.startsWith(`application/json`)){let t=JSON.parse(i(Buffer.concat(l)));process.nextTick(e,new r(`Response status code ${o}${s?`: ${s}`:``}`,o,c,t));return}if(a.startsWith(`text/`)){let t=i(Buffer.concat(l));process.nextTick(e,new r(`Response status code ${o}${s?`: ${s}`:``}`,o,c,t));return}}catch{}process.nextTick(e,new r(`Response status code ${o}${s?`: ${s}`:``}`,o,c))}t.exports={getResolveErrorBodyCallback:a}})),Oe=s(((e,t)=>{let{addAbortListener:n}=j(),{RequestAbortedError:r}=k(),i=Symbol(`kListener`),a=Symbol(`kSignal`);function o(e){e.abort?e.abort():e.onError(new r)}function s(e,t){if(e[a]=null,e[i]=null,t){if(t.aborted){o(e);return}e[a]=t,e[i]=()=>{o(e)},n(e[a],e[i])}}function c(e){e[a]&&(`removeEventListener`in e[a]?e[a].removeEventListener(`abort`,e[i]):e[a].removeListener(`abort`,e[i]),e[a]=null,e[i]=null)}t.exports={addSignal:s,removeSignal:c}})),ke=s(((e,t)=>{let n=Ee(),{InvalidArgumentError:r,RequestAbortedError:i}=k(),a=j(),{getResolveErrorBodyCallback:o}=De(),{AsyncResource:s}=require(`async_hooks`),{addSignal:c,removeSignal:l}=Oe();var u=class extends s{constructor(e,t){if(!e||typeof e!=`object`)throw new r(`invalid opts`);let{signal:n,method:i,opaque:o,body:s,onInfo:l,responseHeaders:u,throwOnError:d,highWaterMark:f}=e;try{if(typeof t!=`function`)throw new r(`invalid callback`);if(f&&(typeof f!=`number`||f<0))throw new r(`invalid highWaterMark`);if(n&&typeof n.on!=`function`&&typeof n.addEventListener!=`function`)throw new r(`signal must be an EventEmitter or EventTarget`);if(i===`CONNECT`)throw new r(`invalid method`);if(l&&typeof l!=`function`)throw new r(`invalid onInfo callback`);super(`UNDICI_REQUEST`)}catch(e){throw a.isStream(s)&&a.destroy(s.on(`error`,a.nop),e),e}this.responseHeaders=u||null,this.opaque=o||null,this.callback=t,this.res=null,this.abort=null,this.body=s,this.trailers={},this.context=null,this.onInfo=l||null,this.throwOnError=d,this.highWaterMark=f,a.isStream(s)&&s.on(`error`,e=>{this.onError(e)}),c(this,n)}onConnect(e,t){if(!this.callback)throw new i;this.abort=e,this.context=t}onHeaders(e,t,r,i){let{callback:s,opaque:c,abort:l,context:u,responseHeaders:d,highWaterMark:f}=this,p=d===`raw`?a.parseRawHeaders(t):a.parseHeaders(t);if(e<200){this.onInfo&&this.onInfo({statusCode:e,headers:p});return}let m=(d===`raw`?a.parseHeaders(t):p)[`content-type`],h=new n({resume:r,abort:l,contentType:m,highWaterMark:f});this.callback=null,this.res=h,s!==null&&(this.throwOnError&&e>=400?this.runInAsyncScope(o,null,{callback:s,body:h,contentType:m,statusCode:e,statusMessage:i,headers:p}):this.runInAsyncScope(s,null,null,{statusCode:e,headers:p,trailers:this.trailers,opaque:c,body:h,context:u}))}onData(e){let{res:t}=this;return t.push(e)}onComplete(e){let{res:t}=this;l(this),a.parseHeaders(e,this.trailers),t.push(null)}onError(e){let{res:t,callback:n,body:r,opaque:i}=this;l(this),n&&(this.callback=null,queueMicrotask(()=>{this.runInAsyncScope(n,null,e,{opaque:i})})),t&&(this.res=null,queueMicrotask(()=>{a.destroy(t,e)})),r&&(this.body=null,a.destroy(r,e))}};function d(e,t){if(t===void 0)return new Promise((t,n)=>{d.call(this,e,(e,r)=>e?n(e):t(r))});try{this.dispatch(e,new u(e,t))}catch(n){if(typeof t!=`function`)throw n;let r=e&&e.opaque;queueMicrotask(()=>t(n,{opaque:r}))}}t.exports=d,t.exports.RequestHandler=u})),Ae=s(((e,t)=>{let{finished:n,PassThrough:r}=require(`stream`),{InvalidArgumentError:i,InvalidReturnValueError:a,RequestAbortedError:o}=k(),s=j(),{getResolveErrorBodyCallback:c}=De(),{AsyncResource:l}=require(`async_hooks`),{addSignal:u,removeSignal:d}=Oe();var f=class extends l{constructor(e,t,n){if(!e||typeof e!=`object`)throw new i(`invalid opts`);let{signal:r,method:a,opaque:o,body:c,onInfo:l,responseHeaders:d,throwOnError:f}=e;try{if(typeof n!=`function`)throw new i(`invalid callback`);if(typeof t!=`function`)throw new i(`invalid factory`);if(r&&typeof r.on!=`function`&&typeof r.addEventListener!=`function`)throw new i(`signal must be an EventEmitter or EventTarget`);if(a===`CONNECT`)throw new i(`invalid method`);if(l&&typeof l!=`function`)throw new i(`invalid onInfo callback`);super(`UNDICI_STREAM`)}catch(e){throw s.isStream(c)&&s.destroy(c.on(`error`,s.nop),e),e}this.responseHeaders=d||null,this.opaque=o||null,this.factory=t,this.callback=n,this.res=null,this.abort=null,this.context=null,this.trailers=null,this.body=c,this.onInfo=l||null,this.throwOnError=f||!1,s.isStream(c)&&c.on(`error`,e=>{this.onError(e)}),u(this,r)}onConnect(e,t){if(!this.callback)throw new o;this.abort=e,this.context=t}onHeaders(e,t,i,o){let{factory:l,opaque:u,context:d,callback:f,responseHeaders:p}=this,m=p===`raw`?s.parseRawHeaders(t):s.parseHeaders(t);if(e<200){this.onInfo&&this.onInfo({statusCode:e,headers:m});return}this.factory=null;let h;if(this.throwOnError&&e>=400){let n=(p===`raw`?s.parseHeaders(t):m)[`content-type`];h=new r,this.callback=null,this.runInAsyncScope(c,null,{callback:f,body:h,contentType:n,statusCode:e,statusMessage:o,headers:m})}else{if(l===null)return;if(h=this.runInAsyncScope(l,null,{statusCode:e,headers:m,opaque:u,context:d}),!h||typeof h.write!=`function`||typeof h.end!=`function`||typeof h.on!=`function`)throw new a(`expected Writable`);n(h,{readable:!1},e=>{let{callback:t,res:n,opaque:r,trailers:i,abort:a}=this;this.res=null,(e||!n.readable)&&s.destroy(n,e),this.callback=null,this.runInAsyncScope(t,null,e||null,{opaque:r,trailers:i}),e&&a()})}return h.on(`drain`,i),this.res=h,(h.writableNeedDrain===void 0?h._writableState&&h._writableState.needDrain:h.writableNeedDrain)!==!0}onData(e){let{res:t}=this;return t?t.write(e):!0}onComplete(e){let{res:t}=this;d(this),t&&(this.trailers=s.parseHeaders(e),t.end())}onError(e){let{res:t,callback:n,opaque:r,body:i}=this;d(this),this.factory=null,t?(this.res=null,s.destroy(t,e)):n&&(this.callback=null,queueMicrotask(()=>{this.runInAsyncScope(n,null,e,{opaque:r})})),i&&(this.body=null,s.destroy(i,e))}};function p(e,t,n){if(n===void 0)return new Promise((n,r)=>{p.call(this,e,t,(e,t)=>e?r(e):n(t))});try{this.dispatch(e,new f(e,t,n))}catch(t){if(typeof n!=`function`)throw t;let r=e&&e.opaque;queueMicrotask(()=>n(t,{opaque:r}))}}t.exports=p})),je=s(((e,t)=>{let{Readable:n,Duplex:r,PassThrough:i}=require(`stream`),{InvalidArgumentError:a,InvalidReturnValueError:o,RequestAbortedError:s}=k(),c=j(),{AsyncResource:l}=require(`async_hooks`),{addSignal:u,removeSignal:d}=Oe(),f=require(`assert`),p=Symbol(`resume`);var m=class extends n{constructor(){super({autoDestroy:!0}),this[p]=null}_read(){let{[p]:e}=this;e&&(this[p]=null,e())}_destroy(e,t){this._read(),t(e)}},h=class extends n{constructor(e){super({autoDestroy:!0}),this[p]=e}_read(){this[p]()}_destroy(e,t){!e&&!this._readableState.endEmitted&&(e=new s),t(e)}},g=class extends l{constructor(e,t){if(!e||typeof e!=`object`)throw new a(`invalid opts`);if(typeof t!=`function`)throw new a(`invalid handler`);let{signal:n,method:i,opaque:o,onInfo:l,responseHeaders:f}=e;if(n&&typeof n.on!=`function`&&typeof n.addEventListener!=`function`)throw new a(`signal must be an EventEmitter or EventTarget`);if(i===`CONNECT`)throw new a(`invalid method`);if(l&&typeof l!=`function`)throw new a(`invalid onInfo callback`);super(`UNDICI_PIPELINE`),this.opaque=o||null,this.responseHeaders=f||null,this.handler=t,this.abort=null,this.context=null,this.onInfo=l||null,this.req=new m().on(`error`,c.nop),this.ret=new r({readableObjectMode:e.objectMode,autoDestroy:!0,read:()=>{let{body:e}=this;e&&e.resume&&e.resume()},write:(e,t,n)=>{let{req:r}=this;r.push(e,t)||r._readableState.destroyed?n():r[p]=n},destroy:(e,t)=>{let{body:n,req:r,res:i,ret:a,abort:o}=this;!e&&!a._readableState.endEmitted&&(e=new s),o&&e&&o(),c.destroy(n,e),c.destroy(r,e),c.destroy(i,e),d(this),t(e)}}).on(`prefinish`,()=>{let{req:e}=this;e.push(null)}),this.res=null,u(this,n)}onConnect(e,t){let{ret:n,res:r}=this;if(f(!r,`pipeline cannot be retried`),n.destroyed)throw new s;this.abort=e,this.context=t}onHeaders(e,t,n){let{opaque:r,handler:i,context:a}=this;if(e<200){if(this.onInfo){let n=this.responseHeaders===`raw`?c.parseRawHeaders(t):c.parseHeaders(t);this.onInfo({statusCode:e,headers:n})}return}this.res=new h(n);let l;try{this.handler=null;let n=this.responseHeaders===`raw`?c.parseRawHeaders(t):c.parseHeaders(t);l=this.runInAsyncScope(i,null,{statusCode:e,headers:n,opaque:r,body:this.res,context:a})}catch(e){throw this.res.on(`error`,c.nop),e}if(!l||typeof l.on!=`function`)throw new o(`expected Readable`);l.on(`data`,e=>{let{ret:t,body:n}=this;!t.push(e)&&n.pause&&n.pause()}).on(`error`,e=>{let{ret:t}=this;c.destroy(t,e)}).on(`end`,()=>{let{ret:e}=this;e.push(null)}).on(`close`,()=>{let{ret:e}=this;e._readableState.ended||c.destroy(e,new s)}),this.body=l}onData(e){let{res:t}=this;return t.push(e)}onComplete(e){let{res:t}=this;t.push(null)}onError(e){let{ret:t}=this;this.handler=null,c.destroy(t,e)}};function _(e,t){try{let n=new g(e,t);return this.dispatch({...e,body:n.req},n),n.ret}catch(e){return new i().destroy(e)}}t.exports=_})),Me=s(((e,t)=>{let{InvalidArgumentError:n,RequestAbortedError:r,SocketError:i}=k(),{AsyncResource:a}=require(`async_hooks`),o=j(),{addSignal:s,removeSignal:c}=Oe(),l=require(`assert`);var u=class extends a{constructor(e,t){if(!e||typeof e!=`object`)throw new n(`invalid opts`);if(typeof t!=`function`)throw new n(`invalid callback`);let{signal:r,opaque:i,responseHeaders:a}=e;if(r&&typeof r.on!=`function`&&typeof r.addEventListener!=`function`)throw new n(`signal must be an EventEmitter or EventTarget`);super(`UNDICI_UPGRADE`),this.responseHeaders=a||null,this.opaque=i||null,this.callback=t,this.abort=null,this.context=null,s(this,r)}onConnect(e,t){if(!this.callback)throw new r;this.abort=e,this.context=null}onHeaders(){throw new i(`bad upgrade`,null)}onUpgrade(e,t,n){let{callback:r,opaque:i,context:a}=this;l.strictEqual(e,101),c(this),this.callback=null;let s=this.responseHeaders===`raw`?o.parseRawHeaders(t):o.parseHeaders(t);this.runInAsyncScope(r,null,null,{headers:s,socket:n,opaque:i,context:a})}onError(e){let{callback:t,opaque:n}=this;c(this),t&&(this.callback=null,queueMicrotask(()=>{this.runInAsyncScope(t,null,e,{opaque:n})}))}};function d(e,t){if(t===void 0)return new Promise((t,n)=>{d.call(this,e,(e,r)=>e?n(e):t(r))});try{let n=new u(e,t);this.dispatch({...e,method:e.method||`GET`,upgrade:e.protocol||`Websocket`},n)}catch(n){if(typeof t!=`function`)throw n;let r=e&&e.opaque;queueMicrotask(()=>t(n,{opaque:r}))}}t.exports=d})),Ne=s(((e,t)=>{let{AsyncResource:n}=require(`async_hooks`),{InvalidArgumentError:r,RequestAbortedError:i,SocketError:a}=k(),o=j(),{addSignal:s,removeSignal:c}=Oe();var l=class extends n{constructor(e,t){if(!e||typeof e!=`object`)throw new r(`invalid opts`);if(typeof t!=`function`)throw new r(`invalid callback`);let{signal:n,opaque:i,responseHeaders:a}=e;if(n&&typeof n.on!=`function`&&typeof n.addEventListener!=`function`)throw new r(`signal must be an EventEmitter or EventTarget`);super(`UNDICI_CONNECT`),this.opaque=i||null,this.responseHeaders=a||null,this.callback=t,this.abort=null,s(this,n)}onConnect(e,t){if(!this.callback)throw new i;this.abort=e,this.context=t}onHeaders(){throw new a(`bad connect`,null)}onUpgrade(e,t,n){let{callback:r,opaque:i,context:a}=this;c(this),this.callback=null;let s=t;s!=null&&(s=this.responseHeaders===`raw`?o.parseRawHeaders(t):o.parseHeaders(t)),this.runInAsyncScope(r,null,null,{statusCode:e,headers:s,socket:n,opaque:i,context:a})}onError(e){let{callback:t,opaque:n}=this;c(this),t&&(this.callback=null,queueMicrotask(()=>{this.runInAsyncScope(t,null,e,{opaque:n})}))}};function u(e,t){if(t===void 0)return new Promise((t,n)=>{u.call(this,e,(e,r)=>e?n(e):t(r))});try{let n=new l(e,t);this.dispatch({...e,method:`CONNECT`},n)}catch(n){if(typeof t!=`function`)throw n;let r=e&&e.opaque;queueMicrotask(()=>t(n,{opaque:r}))}}t.exports=u})),Pe=s(((e,t)=>{t.exports.request=ke(),t.exports.stream=Ae(),t.exports.pipeline=je(),t.exports.upgrade=Me(),t.exports.connect=Ne()})),Fe=s(((e,t)=>{let{UndiciError:n}=k();t.exports={MockNotMatchedError:class e extends n{constructor(t){super(t),Error.captureStackTrace(this,e),this.name=`MockNotMatchedError`,this.message=t||`The request does not match any registered mock dispatches`,this.code=`UND_MOCK_ERR_MOCK_NOT_MATCHED`}}}})),K=s(((e,t)=>{t.exports={kAgent:Symbol(`agent`),kOptions:Symbol(`options`),kFactory:Symbol(`factory`),kDispatches:Symbol(`dispatches`),kDispatchKey:Symbol(`dispatch key`),kDefaultHeaders:Symbol(`default headers`),kDefaultTrailers:Symbol(`default trailers`),kContentLength:Symbol(`content length`),kMockAgent:Symbol(`mock agent`),kMockAgentSet:Symbol(`mock agent set`),kMockAgentGet:Symbol(`mock agent get`),kMockDispatch:Symbol(`mock dispatch`),kClose:Symbol(`close`),kOriginalClose:Symbol(`original agent close`),kOrigin:Symbol(`origin`),kIsMockActive:Symbol(`is mock active`),kNetConnect:Symbol(`net connect`),kGetNetConnect:Symbol(`get net connect`),kConnected:Symbol(`connected`)}})),Ie=s(((e,t)=>{let{MockNotMatchedError:n}=Fe(),{kDispatches:r,kMockAgent:i,kOriginalDispatch:a,kOrigin:o,kGetNetConnect:s}=K(),{buildURL:c,nop:l}=j(),{STATUS_CODES:u}=require(`http`),{types:{isPromise:d}}=require(`util`);function f(e,t){return typeof e==`string`?e===t:e instanceof RegExp?e.test(t):typeof e==`function`?e(t)===!0:!1}function p(e){return Object.fromEntries(Object.entries(e).map(([e,t])=>[e.toLocaleLowerCase(),t]))}function m(e,t){if(Array.isArray(e)){for(let n=0;n!e).filter(({path:e})=>f(_(e),i));if(a.length===0)throw new n(`Mock dispatch not matched for path '${i}'`);if(a=a.filter(({method:e})=>f(e,t.method)),a.length===0)throw new n(`Mock dispatch not matched for method '${t.method}'`);if(a=a.filter(({body:e})=>e===void 0?!0:f(e,t.body)),a.length===0)throw new n(`Mock dispatch not matched for body '${t.body}'`);if(a=a.filter(e=>g(e,t.headers)),a.length===0)throw new n(`Mock dispatch not matched for headers '${typeof t.headers==`object`?JSON.stringify(t.headers):t.headers}'`);return a[0]}function x(e,t,n){let r={timesInvoked:0,times:1,persist:!1,consumed:!1},i=typeof n==`function`?{callback:n}:{...n},a={...r,...t,pending:!0,data:{error:null,...i}};return e.push(a),a}function S(e,t){let n=e.findIndex(e=>e.consumed?v(e,t):!1);n!==-1&&e.splice(n,1)}function C(e){let{path:t,method:n,body:r,headers:i,query:a}=e;return{path:t,method:n,body:r,headers:i,query:a}}function w(e){return Object.entries(e).reduce((e,[t,n])=>[...e,Buffer.from(`${t}`),Array.isArray(n)?n.map(e=>Buffer.from(`${e}`)):Buffer.from(`${n}`)],[])}function T(e){return u[e]||`unknown`}async function E(e){let t=[];for await(let n of e)t.push(n);return Buffer.concat(t).toString(`utf8`)}function D(e,t){let n=C(e),i=b(this[r],n);i.timesInvoked++,i.data.callback&&(i.data={...i.data,...i.data.callback(e)});let{data:{statusCode:a,data:o,headers:s,trailers:c,error:u},delay:f,persist:p}=i,{timesInvoked:m,times:g}=i;if(i.consumed=!p&&m>=g,i.pending=m0?setTimeout(()=>{_(this[r])},f):_(this[r]);function _(r,i=o){let u=Array.isArray(e.headers)?h(e.headers):e.headers,f=typeof i==`function`?i({...e,headers:u}):i;if(d(f)){f.then(e=>_(r,e));return}let p=y(f),m=w(s),g=w(c);t.abort=l,t.onHeaders(a,m,v,T(a)),t.onData(Buffer.from(p)),t.onComplete(g),S(r,n)}function v(){}return!0}function O(){let e=this[i],t=this[o],r=this[a];return function(i,a){if(e.isMockActive)try{D.call(this,i,a)}catch(o){if(o instanceof n){let c=e[s]();if(c===!1)throw new n(`${o.message}: subsequent request to origin ${t} was not allowed (net.connect disabled)`);if(k(c,t))r.call(this,i,a);else throw new n(`${o.message}: subsequent request to origin ${t} was not allowed (net.connect is not enabled for this origin)`)}else throw o}else r.call(this,i,a)}}function k(e,t){let n=new URL(t);return e===!0?!0:!!(Array.isArray(e)&&e.some(e=>f(e,n.host)))}function A(e){if(e){let{agent:t,...n}=e;return n}}t.exports={getResponseData:y,getMockDispatch:b,addMockDispatch:x,deleteMockDispatch:S,buildKey:C,generateKeyValues:w,matchValue:f,getResponse:E,getStatusText:T,mockDispatch:D,buildMockDispatch:O,checkNetConnect:k,buildMockOptions:A,getHeaderByName:m}})),Le=s(((e,t)=>{let{getResponseData:n,buildKey:r,addMockDispatch:i}=Ie(),{kDispatches:a,kDispatchKey:o,kDefaultHeaders:s,kDefaultTrailers:c,kContentLength:l,kMockDispatch:u}=K(),{InvalidArgumentError:d}=k(),{buildURL:f}=j();var p=class{constructor(e){this[u]=e}delay(e){if(typeof e!=`number`||!Number.isInteger(e)||e<=0)throw new d(`waitInMs must be a valid integer > 0`);return this[u].delay=e,this}persist(){return this[u].persist=!0,this}times(e){if(typeof e!=`number`||!Number.isInteger(e)||e<=0)throw new d(`repeatTimes must be a valid integer > 0`);return this[u].times=e,this}},m=class{constructor(e,t){if(typeof e!=`object`)throw new d(`opts must be an object`);if(e.path===void 0)throw new d(`opts.path must be defined`);if(e.method===void 0&&(e.method=`GET`),typeof e.path==`string`)if(e.query)e.path=f(e.path,e.query);else{let t=new URL(e.path,`data://`);e.path=t.pathname+t.search}typeof e.method==`string`&&(e.method=e.method.toUpperCase()),this[o]=r(e),this[a]=t,this[s]={},this[c]={},this[l]=!1}createMockScopeDispatchData(e,t,r={}){let i=n(t),a=this[l]?{"content-length":i.length}:{};return{statusCode:e,data:t,headers:{...this[s],...a,...r.headers},trailers:{...this[c],...r.trailers}}}validateReplyParameters(e,t,n){if(e===void 0)throw new d(`statusCode must be defined`);if(t===void 0)throw new d(`data must be defined`);if(typeof n!=`object`)throw new d(`responseOptions must be an object`)}reply(e){if(typeof e==`function`)return new p(i(this[a],this[o],t=>{let n=e(t);if(typeof n!=`object`)throw new d(`reply options callback must return an object`);let{statusCode:r,data:i=``,responseOptions:a={}}=n;return this.validateReplyParameters(r,i,a),{...this.createMockScopeDispatchData(r,i,a)}}));let[t,n=``,r={}]=[...arguments];this.validateReplyParameters(t,n,r);let s=this.createMockScopeDispatchData(t,n,r);return new p(i(this[a],this[o],s))}replyWithError(e){if(e===void 0)throw new d(`error must be defined`);return new p(i(this[a],this[o],{error:e}))}defaultReplyHeaders(e){if(e===void 0)throw new d(`headers must be defined`);return this[s]=e,this}defaultReplyTrailers(e){if(e===void 0)throw new d(`trailers must be defined`);return this[c]=e,this}replyContentLength(){return this[l]=!0,this}};t.exports.MockInterceptor=m,t.exports.MockScope=p})),Re=s(((e,t)=>{let{promisify:n}=require(`util`),r=ve(),{buildMockDispatch:i}=Ie(),{kDispatches:a,kMockAgent:o,kClose:s,kOriginalClose:c,kOrigin:l,kOriginalDispatch:u,kConnected:d}=K(),{MockInterceptor:f}=Le(),p=O(),{InvalidArgumentError:m}=k();t.exports=class extends r{constructor(e,t){if(super(e,t),!t||!t.agent||typeof t.agent.dispatch!=`function`)throw new m(`Argument opts.agent must implement Agent`);this[o]=t.agent,this[l]=e,this[a]=[],this[d]=1,this[u]=this.dispatch,this[c]=this.close.bind(this),this.dispatch=i.call(this),this.close=this[s]}get[p.kConnected](){return this[d]}intercept(e){return new f(e,this[a])}async[s](){await n(this[c])(),this[d]=0,this[o][p.kClients].delete(this[l])}}})),q=s(((e,t)=>{let{promisify:n}=require(`util`),r=Se(),{buildMockDispatch:i}=Ie(),{kDispatches:a,kMockAgent:o,kClose:s,kOriginalClose:c,kOrigin:l,kOriginalDispatch:u,kConnected:d}=K(),{MockInterceptor:f}=Le(),p=O(),{InvalidArgumentError:m}=k();t.exports=class extends r{constructor(e,t){if(super(e,t),!t||!t.agent||typeof t.agent.dispatch!=`function`)throw new m(`Argument opts.agent must implement Agent`);this[o]=t.agent,this[l]=e,this[a]=[],this[d]=1,this[u]=this.dispatch,this[c]=this.close.bind(this),this.dispatch=i.call(this),this.close=this[s]}get[p.kConnected](){return this[d]}intercept(e){return new f(e,this[a])}async[s](){await n(this[c])(),this[d]=0,this[o][p.kClients].delete(this[l])}}})),ze=s(((e,t)=>{let n={pronoun:`it`,is:`is`,was:`was`,this:`this`},r={pronoun:`they`,is:`are`,was:`were`,this:`these`};t.exports=class{constructor(e,t){this.singular=e,this.plural=t}pluralize(e){let t=e===1,i=t?n:r,a=t?this.singular:this.plural;return{...i,count:e,noun:a}}}})),Be=s(((e,t)=>{let{Transform:n}=require(`stream`),{Console:r}=require(`console`);t.exports=class{constructor({disableColors:e}={}){this.transform=new n({transform(e,t,n){n(null,e)}}),this.logger=new r({stdout:this.transform,inspectOptions:{colors:!e&&!process.env.CI}})}format(e){let t=e.map(({method:e,path:t,data:{statusCode:n},persist:r,times:i,timesInvoked:a,origin:o})=>({Method:e,Origin:o,Path:t,"Status code":n,Persistent:r?`✅`:`❌`,Invocations:a,Remaining:r?1/0:i-a}));return this.logger.table(t),this.transform.read().toString()}}})),J=s(((e,t)=>{let{kClients:n}=O(),r=Te(),{kAgent:i,kMockAgentSet:a,kMockAgentGet:o,kDispatches:s,kIsMockActive:c,kNetConnect:l,kGetNetConnect:u,kOptions:d,kFactory:f}=K(),p=Re(),m=q(),{matchValue:h,buildMockOptions:g}=Ie(),{InvalidArgumentError:_,UndiciError:v}=k(),y=le(),b=ze(),x=Be();var S=class{constructor(e){this.value=e}deref(){return this.value}};t.exports=class extends y{constructor(e){if(super(e),this[l]=!0,this[c]=!0,e&&e.agent&&typeof e.agent.dispatch!=`function`)throw new _(`Argument opts.agent must implement Agent`);let t=e&&e.agent?e.agent:new r(e);this[i]=t,this[n]=t[n],this[d]=g(e)}get(e){let t=this[o](e);return t||(t=this[f](e),this[a](e,t)),t}dispatch(e,t){return this.get(e.origin),this[i].dispatch(e,t)}async close(){await this[i].close(),this[n].clear()}deactivate(){this[c]=!1}activate(){this[c]=!0}enableNetConnect(e){if(typeof e==`string`||typeof e==`function`||e instanceof RegExp)Array.isArray(this[l])?this[l].push(e):this[l]=[e];else if(e===void 0)this[l]=!0;else throw new _(`Unsupported matcher. Must be one of String|Function|RegExp.`)}disableNetConnect(){this[l]=!1}get isMockActive(){return this[c]}[a](e,t){this[n].set(e,new S(t))}[f](e){let t=Object.assign({agent:this},this[d]);return this[d]&&this[d].connections===1?new p(e,t):new m(e,t)}[o](e){let t=this[n].get(e);if(t)return t.deref();if(typeof e!=`string`){let t=this[f](`http://localhost:9999`);return this[a](e,t),t}for(let[t,r]of Array.from(this[n])){let n=r.deref();if(n&&typeof t!=`string`&&h(t,e)){let t=this[f](e);return this[a](e,t),t[s]=n[s],t}}}[u](){return this[l]}pendingInterceptors(){let e=this[n];return Array.from(e.entries()).flatMap(([e,t])=>t.deref()[s].map(t=>({...t,origin:e}))).filter(({pending:e})=>e)}assertNoPendingInterceptors({pendingInterceptorsFormatter:e=new x}={}){let t=this.pendingInterceptors();if(t.length===0)return;let n=new b(`interceptor`,`interceptors`).pluralize(t.length);throw new v(` +${n.count} ${n.noun} ${n.is} pending: + +${e.format(t)} +`.trim())}}})),Ve=s(((e,t)=>{let{kProxy:n,kClose:r,kDestroy:i,kInterceptors:a}=O(),{URL:o}=require(`url`),s=Te(),c=Se(),l=ue(),{InvalidArgumentError:u,RequestAbortedError:d}=k(),f=de(),p=Symbol(`proxy agent`),m=Symbol(`proxy client`),h=Symbol(`proxy headers`),g=Symbol(`request tls settings`),_=Symbol(`proxy tls settings`),v=Symbol(`connect endpoint function`);function y(e){return e===`https:`?443:80}function b(e){if(typeof e==`string`&&(e={uri:e}),!e||!e.uri)throw new u(`Proxy opts.uri is mandatory`);return{uri:e.uri,protocol:e.protocol||`https`}}function x(e,t){return new c(e,t)}var S=class extends l{constructor(e){if(super(e),this[n]=b(e),this[p]=new s(e),this[a]=e.interceptors&&e.interceptors.ProxyAgent&&Array.isArray(e.interceptors.ProxyAgent)?e.interceptors.ProxyAgent:[],typeof e==`string`&&(e={uri:e}),!e||!e.uri)throw new u(`Proxy opts.uri is mandatory`);let{clientFactory:t=x}=e;if(typeof t!=`function`)throw new u(`Proxy opts.clientFactory must be a function.`);this[g]=e.requestTls,this[_]=e.proxyTls,this[h]=e.headers||{};let r=new o(e.uri),{origin:i,port:c,host:l,username:S,password:C}=r;if(e.auth&&e.token)throw new u(`opts.auth cannot be used in combination with opts.token`);e.auth?this[h][`proxy-authorization`]=`Basic ${e.auth}`:e.token?this[h][`proxy-authorization`]=e.token:S&&C&&(this[h][`proxy-authorization`]=`Basic ${Buffer.from(`${decodeURIComponent(S)}:${decodeURIComponent(C)}`).toString(`base64`)}`);let w=f({...e.proxyTls});this[v]=f({...e.requestTls}),this[m]=t(r,{connect:w}),this[p]=new s({...e,connect:async(e,t)=>{let n=e.host;e.port||(n+=`:${y(e.protocol)}`);try{let{socket:r,statusCode:a}=await this[m].connect({origin:i,port:c,path:n,signal:e.signal,headers:{...this[h],host:l}});if(a!==200&&(r.on(`error`,()=>{}).destroy(),t(new d(`Proxy response (${a}) !== 200 when HTTP Tunneling`))),e.protocol!==`https:`){t(null,r);return}let o;o=this[g]?this[g].servername:e.servername,this[v]({...e,servername:o,httpSocket:r},t)}catch(e){t(e)}}})}dispatch(e,t){let{host:n}=new o(e.origin),r=C(e.headers);return w(r),this[p].dispatch({...e,headers:{...r,host:n}},t)}async[r](){await this[p].close(),await this[m].close()}async[i](){await this[p].destroy(),await this[m].destroy()}};function C(e){if(Array.isArray(e)){let t={};for(let n=0;ne.toLowerCase()===`proxy-authorization`))throw new u(`Proxy-Authorization should be sent in ProxyAgent constructor`)}t.exports=S})),Y=s(((e,t)=>{let n=require(`assert`),{kRetryHandlerDefaultRetry:r}=O(),{RequestRetryError:i}=k(),{isDisturbed:a,parseHeaders:o,parseRangeHeader:s}=j();function c(e){let t=Date.now();return new Date(e).getTime()-t}t.exports=class e{constructor(t,n){let{retryOptions:i,...a}=t,{retry:o,maxRetries:s,maxTimeout:c,minTimeout:l,timeoutFactor:u,methods:d,errorCodes:f,retryAfter:p,statusCodes:m}=i??{};this.dispatch=n.dispatch,this.handler=n.handler,this.opts=a,this.abort=null,this.aborted=!1,this.retryOpts={retry:o??e[r],retryAfter:p??!0,maxTimeout:c??30*1e3,timeout:l??500,timeoutFactor:u??2,maxRetries:s??5,methods:d??[`GET`,`HEAD`,`OPTIONS`,`PUT`,`DELETE`,`TRACE`],statusCodes:m??[500,502,503,504,429],errorCodes:f??[`ECONNRESET`,`ECONNREFUSED`,`ENOTFOUND`,`ENETDOWN`,`ENETUNREACH`,`EHOSTDOWN`,`EHOSTUNREACH`,`EPIPE`]},this.retryCount=0,this.start=0,this.end=null,this.etag=null,this.resume=null,this.handler.onConnect(e=>{this.aborted=!0,this.abort?this.abort(e):this.reason=e})}onRequestSent(){this.handler.onRequestSent&&this.handler.onRequestSent()}onUpgrade(e,t,n){this.handler.onUpgrade&&this.handler.onUpgrade(e,t,n)}onConnect(e){this.aborted?e(this.reason):this.abort=e}onBodySent(e){if(this.handler.onBodySent)return this.handler.onBodySent(e)}static[r](e,{state:t,opts:n},r){let{statusCode:i,code:a,headers:o}=e,{method:s,retryOptions:l}=n,{maxRetries:u,timeout:d,maxTimeout:f,timeoutFactor:p,statusCodes:m,errorCodes:h,methods:g}=l,{counter:_,currentTimeout:v}=t;if(v=v!=null&&v>0?v:d,a&&a!==`UND_ERR_REQ_RETRY`&&a!==`UND_ERR_SOCKET`&&!h.includes(a)){r(e);return}if(Array.isArray(g)&&!g.includes(s)){r(e);return}if(i!=null&&Array.isArray(m)&&!m.includes(i)){r(e);return}if(_>u){r(e);return}let y=o!=null&&o[`retry-after`];y&&=(y=Number(y),isNaN(y)?c(y):y*1e3);let b=y>0?Math.min(y,f):Math.min(v*p**_,f);t.currentTimeout=b,setTimeout(()=>r(null),b)}onHeaders(e,t,r,a){let c=o(t);if(this.retryCount+=1,e>=300)return this.abort(new i(`Request failed`,e,{headers:c,count:this.retryCount})),!1;if(this.resume!=null){if(this.resume=null,e!==206)return!0;let t=s(c[`content-range`]);if(!t)return this.abort(new i(`Content-Range mismatch`,e,{headers:c,count:this.retryCount})),!1;if(this.etag!=null&&this.etag!==c.etag)return this.abort(new i(`ETag mismatch`,e,{headers:c,count:this.retryCount})),!1;let{start:a,size:o,end:l=o}=t;return n(this.start===a,`content-range mismatch`),n(this.end==null||this.end===l,`content-range mismatch`),this.resume=r,!0}if(this.end==null){if(e===206){let i=s(c[`content-range`]);if(i==null)return this.handler.onHeaders(e,t,r,a);let{start:o,size:l,end:u=l}=i;n(o!=null&&Number.isFinite(o)&&this.start!==o,`content-range mismatch`),n(Number.isFinite(o)),n(u!=null&&Number.isFinite(u)&&this.end!==u,`invalid content-length`),this.start=o,this.end=u}if(this.end==null){let e=c[`content-length`];this.end=e==null?null:Number(e)}return n(Number.isFinite(this.start)),n(this.end==null||Number.isFinite(this.end),`invalid content-length`),this.resume=r,this.etag=c.etag==null?null:c.etag,this.handler.onHeaders(e,t,r,a)}let l=new i(`Request failed`,e,{headers:c,count:this.retryCount});return this.abort(l),!1}onData(e){return this.start+=e.length,this.handler.onData(e)}onComplete(e){return this.retryCount=0,this.handler.onComplete(e)}onError(e){if(this.aborted||a(this.opts.body))return this.handler.onError(e);this.retryOpts.retry(e,{state:{counter:this.retryCount++,currentTimeout:this.retryAfter},opts:{retryOptions:this.retryOpts,...this.opts}},t.bind(this));function t(e){if(e!=null||this.aborted||a(this.opts.body))return this.handler.onError(e);this.start!==0&&(this.opts={...this.opts,headers:{...this.opts.headers,range:`bytes=${this.start}-${this.end??``}`}});try{this.dispatch(this.opts,this)}catch(e){this.handler.onError(e)}}}}})),He=s(((e,t)=>{let n=Symbol.for(`undici.globalDispatcher.1`),{InvalidArgumentError:r}=k(),i=Te();o()===void 0&&a(new i);function a(e){if(!e||typeof e.dispatch!=`function`)throw new r(`Argument agent must implement Agent`);Object.defineProperty(globalThis,n,{value:e,writable:!0,enumerable:!1,configurable:!1})}function o(){return globalThis[n]}t.exports={setGlobalDispatcher:a,getGlobalDispatcher:o}})),Ue=s(((e,t)=>{t.exports=class{constructor(e){this.handler=e}onConnect(...e){return this.handler.onConnect(...e)}onError(...e){return this.handler.onError(...e)}onUpgrade(...e){return this.handler.onUpgrade(...e)}onHeaders(...e){return this.handler.onHeaders(...e)}onData(...e){return this.handler.onData(...e)}onComplete(...e){return this.handler.onComplete(...e)}onBodySent(...e){return this.handler.onBodySent(...e)}}})),X=s(((e,t)=>{let n,{kHeadersList:r,kConstruct:i}=O(),{kGuard:a}=U(),{kEnumerableProperty:o}=j(),{makeIterator:s,isValidHeaderName:c,isValidHeaderValue:l}=ie(),u=require(`util`),{webidl:d}=W(),f=require(`assert`),p=Symbol(`headers map`),m=Symbol(`headers map sorted`);function h(e){return e===10||e===13||e===9||e===32}function g(e){let t=0,n=e.length;for(;n>t&&h(e.charCodeAt(n-1));)--n;for(;n>t&&h(e.charCodeAt(t));)++t;return t===0&&n===e.length?e:e.substring(t,n)}function _(e,t){if(Array.isArray(t))for(let n=0;n>`,`record`]})}function v(e,t,n){if(n=g(n),c(t)){if(!l(n))throw d.errors.invalidArgument({prefix:`Headers.append`,value:n,type:`header value`})}else throw d.errors.invalidArgument({prefix:`Headers.append`,value:t,type:`header name`});if(e[a]===`immutable`)throw TypeError(`immutable`);return e[a],e[r].append(t,n)}n=Symbol.iterator;var y=class e{constructor(t){this.cookies=null,t instanceof e?(this[p]=new Map(t[p]),this[m]=t[m],this.cookies=t.cookies===null?null:[...t.cookies]):(this[p]=new Map(t),this[m]=null)}contains(e){return e=e.toLowerCase(),this[p].has(e)}clear(){this[p].clear(),this[m]=null,this.cookies=null}append(e,t){this[m]=null;let n=e.toLowerCase(),r=this[p].get(n);if(r){let e=n===`cookie`?`; `:`, `;this[p].set(n,{name:r.name,value:`${r.value}${e}${t}`})}else this[p].set(n,{name:e,value:t});n===`set-cookie`&&(this.cookies??=[],this.cookies.push(t))}set(e,t){this[m]=null;let n=e.toLowerCase();n===`set-cookie`&&(this.cookies=[t]),this[p].set(n,{name:e,value:t})}delete(e){this[m]=null,e=e.toLowerCase(),e===`set-cookie`&&(this.cookies=null),this[p].delete(e)}get(e){let t=this[p].get(e.toLowerCase());return t===void 0?null:t.value}*[n](){for(let[e,{value:t}]of this[p])yield[e,t]}get entries(){let e={};if(this[p].size)for(let{name:t,value:n}of this[p].values())e[t]=n;return e}},b=class e{constructor(e=void 0){e!==i&&(this[r]=new y,this[a]=`none`,e!==void 0&&(e=d.converters.HeadersInit(e),_(this,e)))}append(t,n){return d.brandCheck(this,e),d.argumentLengthCheck(arguments,2,{header:`Headers.append`}),t=d.converters.ByteString(t),n=d.converters.ByteString(n),v(this,t,n)}delete(t){if(d.brandCheck(this,e),d.argumentLengthCheck(arguments,1,{header:`Headers.delete`}),t=d.converters.ByteString(t),!c(t))throw d.errors.invalidArgument({prefix:`Headers.delete`,value:t,type:`header name`});if(this[a]===`immutable`)throw TypeError(`immutable`);this[a],this[r].contains(t)&&this[r].delete(t)}get(t){if(d.brandCheck(this,e),d.argumentLengthCheck(arguments,1,{header:`Headers.get`}),t=d.converters.ByteString(t),!c(t))throw d.errors.invalidArgument({prefix:`Headers.get`,value:t,type:`header name`});return this[r].get(t)}has(t){if(d.brandCheck(this,e),d.argumentLengthCheck(arguments,1,{header:`Headers.has`}),t=d.converters.ByteString(t),!c(t))throw d.errors.invalidArgument({prefix:`Headers.has`,value:t,type:`header name`});return this[r].contains(t)}set(t,n){if(d.brandCheck(this,e),d.argumentLengthCheck(arguments,2,{header:`Headers.set`}),t=d.converters.ByteString(t),n=d.converters.ByteString(n),n=g(n),c(t)){if(!l(n))throw d.errors.invalidArgument({prefix:`Headers.set`,value:n,type:`header value`})}else throw d.errors.invalidArgument({prefix:`Headers.set`,value:t,type:`header name`});if(this[a]===`immutable`)throw TypeError(`immutable`);this[a],this[r].set(t,n)}getSetCookie(){d.brandCheck(this,e);let t=this[r].cookies;return t?[...t]:[]}get[m](){if(this[r][m])return this[r][m];let e=[],t=[...this[r]].sort((e,t)=>e[0]e,`Headers`,`key`)}return s(()=>[...this[m].values()],`Headers`,`key`)}values(){if(d.brandCheck(this,e),this[a]===`immutable`){let e=this[m];return s(()=>e,`Headers`,`value`)}return s(()=>[...this[m].values()],`Headers`,`value`)}entries(){if(d.brandCheck(this,e),this[a]===`immutable`){let e=this[m];return s(()=>e,`Headers`,`key+value`)}return s(()=>[...this[m].values()],`Headers`,`key+value`)}forEach(t,n=globalThis){if(d.brandCheck(this,e),d.argumentLengthCheck(arguments,1,{header:`Headers.forEach`}),typeof t!=`function`)throw TypeError(`Failed to execute 'forEach' on 'Headers': parameter 1 is not of type 'Function'.`);for(let[e,r]of this)t.apply(n,[r,e,this])}[Symbol.for(`nodejs.util.inspect.custom`)](){return d.brandCheck(this,e),this[r]}};b.prototype[Symbol.iterator]=b.prototype.entries,Object.defineProperties(b.prototype,{append:o,delete:o,get:o,has:o,set:o,getSetCookie:o,keys:o,values:o,entries:o,forEach:o,[Symbol.iterator]:{enumerable:!1},[Symbol.toStringTag]:{value:`Headers`,configurable:!0},[u.inspect.custom]:{enumerable:!1}}),d.converters.HeadersInit=function(e){if(d.util.Type(e)===`Object`)return e[Symbol.iterator]?d.converters[`sequence>`](e):d.converters[`record`](e);throw d.errors.conversionFailed({prefix:`Headers constructor`,argument:`Argument 1`,types:[`sequence>`,`record`]})},t.exports={fill:_,Headers:b,HeadersList:y}})),We=s(((e,t)=>{let{Headers:n,HeadersList:r,fill:i}=X(),{extractBody:a,cloneBody:o,mixinBody:s}=se(),c=j(),{kEnumerableProperty:l}=c,{isValidReasonPhrase:u,isCancelled:d,isAborted:f,isBlobLike:p,serializeJavascriptValueToJSONString:m,isErrorLike:h,isomorphicEncode:g}=ie(),{redirectStatusSet:_,nullBodyStatus:v,DOMException:y}=re(),{kState:b,kHeaders:x,kGuard:S,kRealm:C}=U(),{webidl:w}=W(),{FormData:T}=oe(),{getGlobalOrigin:E}=H(),{URLSerializer:D}=ae(),{kHeadersList:k,kConstruct:A}=O(),M=require(`assert`),{types:N}=require(`util`),ee=globalThis.ReadableStream||require(`stream/web`).ReadableStream,P=new TextEncoder(`utf-8`);var F=class e{static error(){let t={settingsObject:{}},n=new e;return n[b]=R(),n[C]=t,n[x][k]=n[b].headersList,n[x][S]=`immutable`,n[x][C]=t,n}static json(t,n={}){w.argumentLengthCheck(arguments,1,{header:`Response.json`}),n!==null&&(n=w.converters.ResponseInit(n));let r=a(P.encode(m(t))),i={settingsObject:{}},o=new e;return o[C]=i,o[x][S]=`response`,o[x][C]=i,V(o,n,{body:r[0],type:`application/json`}),o}static redirect(t,n=302){let r={settingsObject:{}};w.argumentLengthCheck(arguments,1,{header:`Response.redirect`}),t=w.converters.USVString(t),n=w.converters[`unsigned short`](n);let i;try{i=new URL(t,E())}catch(e){throw Object.assign(TypeError(`Failed to parse URL from `+t),{cause:e})}if(!_.has(n))throw RangeError(`Invalid status code `+n);let a=new e;a[C]=r,a[x][S]=`immutable`,a[x][C]=r,a[b].status=n;let o=g(D(i));return a[b].headersList.append(`location`,o),a}constructor(e=null,t={}){e!==null&&(e=w.converters.BodyInit(e)),t=w.converters.ResponseInit(t),this[C]={settingsObject:{}},this[b]=L({}),this[x]=new n(A),this[x][S]=`response`,this[x][k]=this[b].headersList,this[x][C]=this[C];let r=null;if(e!=null){let[t,n]=a(e);r={body:t,type:n}}V(this,t,r)}get type(){return w.brandCheck(this,e),this[b].type}get url(){w.brandCheck(this,e);let t=this[b].urlList,n=t[t.length-1]??null;return n===null?``:D(n,!0)}get redirected(){return w.brandCheck(this,e),this[b].urlList.length>1}get status(){return w.brandCheck(this,e),this[b].status}get ok(){return w.brandCheck(this,e),this[b].status>=200&&this[b].status<=299}get statusText(){return w.brandCheck(this,e),this[b].statusText}get headers(){return w.brandCheck(this,e),this[x]}get body(){return w.brandCheck(this,e),this[b].body?this[b].body.stream:null}get bodyUsed(){return w.brandCheck(this,e),!!this[b].body&&c.isDisturbed(this[b].body.stream)}clone(){if(w.brandCheck(this,e),this.bodyUsed||this.body&&this.body.locked)throw w.errors.exception({header:`Response.clone`,message:`Body has already been consumed.`});let t=I(this[b]),n=new e;return n[b]=t,n[C]=this[C],n[x][k]=t.headersList,n[x][S]=this[x][S],n[x][C]=this[x][C],n}};s(F),Object.defineProperties(F.prototype,{type:l,url:l,status:l,ok:l,redirected:l,statusText:l,headers:l,clone:l,body:l,bodyUsed:l,[Symbol.toStringTag]:{value:`Response`,configurable:!0}}),Object.defineProperties(F,{json:l,redirect:l,error:l});function I(e){if(e.internalResponse)return B(I(e.internalResponse),e.type);let t=L({...e,body:null});return e.body!=null&&(t.body=o(e.body)),t}function L(e){return{aborted:!1,rangeRequested:!1,timingAllowPassed:!1,requestIncludesCredentials:!1,type:`default`,status:200,timingInfo:null,cacheState:``,statusText:``,...e,headersList:e.headersList?new r(e.headersList):new r,urlList:e.urlList?[...e.urlList]:[]}}function R(e){return L({type:`error`,status:0,error:h(e)?e:Error(e&&String(e)),aborted:e&&e.name===`AbortError`})}function z(e,t){return t={internalResponse:e,...t},new Proxy(e,{get(e,n){return n in t?t[n]:e[n]},set(e,n,r){return M(!(n in t)),e[n]=r,!0}})}function B(e,t){if(t===`basic`)return z(e,{type:`basic`,headersList:e.headersList});if(t===`cors`)return z(e,{type:`cors`,headersList:e.headersList});if(t===`opaque`)return z(e,{type:`opaque`,urlList:Object.freeze([]),status:0,statusText:``,body:null});if(t===`opaqueredirect`)return z(e,{type:`opaqueredirect`,status:0,statusText:``,headersList:[],body:null});M(!1)}function te(e,t=null){return M(d(e)),f(e)?R(Object.assign(new y(`The operation was aborted.`,`AbortError`),{cause:t})):R(Object.assign(new y(`Request was cancelled.`),{cause:t}))}function V(e,t,n){if(t.status!==null&&(t.status<200||t.status>599))throw RangeError(`init["status"] must be in the range of 200 to 599, inclusive.`);if(`statusText`in t&&t.statusText!=null&&!u(String(t.statusText)))throw TypeError(`Invalid statusText`);if(`status`in t&&t.status!=null&&(e[b].status=t.status),`statusText`in t&&t.statusText!=null&&(e[b].statusText=t.statusText),`headers`in t&&t.headers!=null&&i(e[x],t.headers),n){if(v.includes(e.status))throw w.errors.exception({header:`Response constructor`,message:`Invalid response status code `+e.status});e[b].body=n.body,n.type!=null&&!e[b].headersList.contains(`Content-Type`)&&e[b].headersList.append(`content-type`,n.type)}}w.converters.ReadableStream=w.interfaceConverter(ee),w.converters.FormData=w.interfaceConverter(T),w.converters.URLSearchParams=w.interfaceConverter(URLSearchParams),w.converters.XMLHttpRequestBodyInit=function(e){return typeof e==`string`?w.converters.USVString(e):p(e)?w.converters.Blob(e,{strict:!1}):N.isArrayBuffer(e)||N.isTypedArray(e)||N.isDataView(e)?w.converters.BufferSource(e):c.isFormDataLike(e)?w.converters.FormData(e,{strict:!1}):e instanceof URLSearchParams?w.converters.URLSearchParams(e):w.converters.DOMString(e)},w.converters.BodyInit=function(e){return e instanceof ee?w.converters.ReadableStream(e):e?.[Symbol.asyncIterator]?e:w.converters.XMLHttpRequestBodyInit(e)},w.converters.ResponseInit=w.dictionaryConverter([{key:`status`,converter:w.converters[`unsigned short`],defaultValue:200},{key:`statusText`,converter:w.converters.ByteString,defaultValue:``},{key:`headers`,converter:w.converters.HeadersInit}]),t.exports={makeNetworkError:R,makeResponse:L,makeAppropriateNetworkError:te,filterResponse:B,Response:F,cloneResponse:I}})),Ge=s(((e,t)=>{let{extractBody:n,mixinBody:r,cloneBody:i}=se(),{Headers:a,fill:o,HeadersList:s}=X(),{FinalizationRegistry:c}=we()(),l=j(),{isValidHTTPToken:u,sameOrigin:d,normalizeMethod:f,makePolicyContainer:p,normalizeMethodRecord:m}=ie(),{forbiddenMethodsSet:h,corsSafeListedMethodsSet:g,referrerPolicy:_,requestRedirect:v,requestMode:y,requestCredentials:b,requestCache:x,requestDuplex:S}=re(),{kEnumerableProperty:C}=l,{kHeaders:w,kSignal:T,kState:E,kGuard:D,kRealm:k}=U(),{webidl:A}=W(),{getGlobalOrigin:M}=H(),{URLSerializer:N}=ae(),{kHeadersList:ee,kConstruct:P}=O(),F=require(`assert`),{getMaxListeners:I,setMaxListeners:L,getEventListeners:R,defaultMaxListeners:z}=require(`events`),B=globalThis.TransformStream,te=Symbol(`abortController`),V=new c(({signal:e,abort:t})=>{e.removeEventListener(`abort`,t)});var ne=class e{constructor(t,r={}){if(t===P)return;A.argumentLengthCheck(arguments,1,{header:`Request constructor`}),t=A.converters.RequestInfo(t),r=A.converters.RequestInit(r),this[k]={settingsObject:{baseUrl:M(),get origin(){return this.baseUrl?.origin},policyContainer:p()}};let i=null,c=null,_=this[k].settingsObject.baseUrl,v=null;if(typeof t==`string`){let e;try{e=new URL(t,_)}catch(e){throw TypeError(`Failed to parse URL from `+t,{cause:e})}if(e.username||e.password)throw TypeError(`Request cannot be constructed from a URL that includes credentials: `+t);i=G({urlList:[e]}),c=`cors`}else F(t instanceof e),i=t[E],v=t[T];let y=this[k].settingsObject.origin,b=`client`;if(i.window?.constructor?.name===`EnvironmentSettingsObject`&&d(i.window,y)&&(b=i.window),r.window!=null)throw TypeError(`'window' option '${b}' must be null`);`window`in r&&(b=`no-window`),i=G({method:i.method,headersList:i.headersList,unsafeRequest:i.unsafeRequest,client:this[k].settingsObject,window:b,priority:i.priority,origin:i.origin,referrer:i.referrer,referrerPolicy:i.referrerPolicy,mode:i.mode,credentials:i.credentials,cache:i.cache,redirect:i.redirect,integrity:i.integrity,keepalive:i.keepalive,reloadNavigation:i.reloadNavigation,historyNavigation:i.historyNavigation,urlList:[...i.urlList]});let x=Object.keys(r).length!==0;if(x&&(i.mode===`navigate`&&(i.mode=`same-origin`),i.reloadNavigation=!1,i.historyNavigation=!1,i.origin=`client`,i.referrer=`client`,i.referrerPolicy=``,i.url=i.urlList[i.urlList.length-1],i.urlList=[i.url]),r.referrer!==void 0){let e=r.referrer;if(e===``)i.referrer=`no-referrer`;else{let t;try{t=new URL(e,_)}catch(t){throw TypeError(`Referrer "${e}" is not a valid URL.`,{cause:t})}t.protocol===`about:`&&t.hostname===`client`||y&&!d(t,this[k].settingsObject.baseUrl)?i.referrer=`client`:i.referrer=t}}r.referrerPolicy!==void 0&&(i.referrerPolicy=r.referrerPolicy);let S;if(S=r.mode===void 0?c:r.mode,S===`navigate`)throw A.errors.exception({header:`Request constructor`,message:`invalid request mode navigate.`});if(S!=null&&(i.mode=S),r.credentials!==void 0&&(i.credentials=r.credentials),r.cache!==void 0&&(i.cache=r.cache),i.cache===`only-if-cached`&&i.mode!==`same-origin`)throw TypeError(`'only-if-cached' can be set only with 'same-origin' mode`);if(r.redirect!==void 0&&(i.redirect=r.redirect),r.integrity!=null&&(i.integrity=String(r.integrity)),r.keepalive!==void 0&&(i.keepalive=!!r.keepalive),r.method!==void 0){let e=r.method;if(!u(e))throw TypeError(`'${e}' is not a valid HTTP method.`);if(h.has(e.toUpperCase()))throw TypeError(`'${e}' HTTP method is unsupported.`);e=m[e]??f(e),i.method=e}r.signal!==void 0&&(v=r.signal),this[E]=i;let C=new AbortController;if(this[T]=C.signal,this[T][k]=this[k],v!=null){if(!v||typeof v.aborted!=`boolean`||typeof v.addEventListener!=`function`)throw TypeError(`Failed to construct 'Request': member signal is not of type AbortSignal.`);if(v.aborted)C.abort(v.reason);else{this[te]=C;let e=new WeakRef(C),t=function(){let t=e.deref();t!==void 0&&t.abort(this.reason)};try{(typeof I==`function`&&I(v)===z||R(v,`abort`).length>=z)&&L(100,v)}catch{}l.addAbortListener(v,t),V.register(C,{signal:v,abort:t})}}if(this[w]=new a(P),this[w][ee]=i.headersList,this[w][D]=`request`,this[w][k]=this[k],S===`no-cors`){if(!g.has(i.method))throw TypeError(`'${i.method} is unsupported in no-cors mode.`);this[w][D]=`request-no-cors`}if(x){let e=this[w][ee],t=r.headers===void 0?new s(e):r.headers;if(e.clear(),t instanceof s){for(let[n,r]of t)e.append(n,r);e.cookies=t.cookies}else o(this[w],t)}let O=t instanceof e?t[E].body:null;if((r.body!=null||O!=null)&&(i.method===`GET`||i.method===`HEAD`))throw TypeError(`Request with GET/HEAD method cannot have body.`);let j=null;if(r.body!=null){let[e,t]=n(r.body,i.keepalive);j=e,t&&!this[w][ee].contains(`content-type`)&&this[w].append(`content-type`,t)}let N=j??O;if(N!=null&&N.source==null){if(j!=null&&r.duplex==null)throw TypeError(`RequestInit: duplex option is required when sending a body.`);if(i.mode!==`same-origin`&&i.mode!==`cors`)throw TypeError(`If request is made from ReadableStream, mode should be "same-origin" or "cors"`);i.useCORSPreflightFlag=!0}let ne=N;if(j==null&&O!=null){if(l.isDisturbed(O.stream)||O.stream.locked)throw TypeError(`Cannot construct a Request with a Request object that has already been used.`);B||=require(`stream/web`).TransformStream;let e=new B;O.stream.pipeThrough(e),ne={source:O.source,length:O.length,stream:e.readable}}this[E].body=ne}get method(){return A.brandCheck(this,e),this[E].method}get url(){return A.brandCheck(this,e),N(this[E].url)}get headers(){return A.brandCheck(this,e),this[w]}get destination(){return A.brandCheck(this,e),this[E].destination}get referrer(){return A.brandCheck(this,e),this[E].referrer===`no-referrer`?``:this[E].referrer===`client`?`about:client`:this[E].referrer.toString()}get referrerPolicy(){return A.brandCheck(this,e),this[E].referrerPolicy}get mode(){return A.brandCheck(this,e),this[E].mode}get credentials(){return this[E].credentials}get cache(){return A.brandCheck(this,e),this[E].cache}get redirect(){return A.brandCheck(this,e),this[E].redirect}get integrity(){return A.brandCheck(this,e),this[E].integrity}get keepalive(){return A.brandCheck(this,e),this[E].keepalive}get isReloadNavigation(){return A.brandCheck(this,e),this[E].reloadNavigation}get isHistoryNavigation(){return A.brandCheck(this,e),this[E].historyNavigation}get signal(){return A.brandCheck(this,e),this[T]}get body(){return A.brandCheck(this,e),this[E].body?this[E].body.stream:null}get bodyUsed(){return A.brandCheck(this,e),!!this[E].body&&l.isDisturbed(this[E].body.stream)}get duplex(){return A.brandCheck(this,e),`half`}clone(){if(A.brandCheck(this,e),this.bodyUsed||this.body?.locked)throw TypeError(`unusable`);let t=oe(this[E]),n=new e(P);n[E]=t,n[k]=this[k],n[w]=new a(P),n[w][ee]=t.headersList,n[w][D]=this[w][D],n[w][k]=this[w][k];let r=new AbortController;return this.signal.aborted?r.abort(this.signal.reason):l.addAbortListener(this.signal,()=>{r.abort(this.signal.reason)}),n[T]=r.signal,n}};r(ne);function G(e){let t={method:`GET`,localURLsOnly:!1,unsafeRequest:!1,body:null,client:null,reservedClient:null,replacesClientId:``,window:`client`,keepalive:!1,serviceWorkers:`all`,initiator:``,destination:``,priority:null,origin:`client`,policyContainer:`client`,referrer:`client`,referrerPolicy:``,mode:`no-cors`,useCORSPreflightFlag:!1,credentials:`same-origin`,useCredentials:!1,cache:`default`,redirect:`follow`,integrity:``,cryptoGraphicsNonceMetadata:``,parserMetadata:``,reloadNavigation:!1,historyNavigation:!1,userActivation:!1,taintedOrigin:!1,redirectCount:0,responseTainting:`basic`,preventNoCacheCacheControlHeaderModification:!1,done:!1,timingAllowFailed:!1,...e,headersList:e.headersList?new s(e.headersList):new s};return t.url=t.urlList[0],t}function oe(e){let t=G({...e,body:null});return e.body!=null&&(t.body=i(e.body)),t}Object.defineProperties(ne.prototype,{method:C,url:C,headers:C,redirect:C,clone:C,signal:C,duplex:C,destination:C,body:C,bodyUsed:C,isHistoryNavigation:C,isReloadNavigation:C,keepalive:C,integrity:C,cache:C,credentials:C,attribute:C,referrerPolicy:C,referrer:C,mode:C,[Symbol.toStringTag]:{value:`Request`,configurable:!0}}),A.converters.Request=A.interfaceConverter(ne),A.converters.RequestInfo=function(e){return typeof e==`string`?A.converters.USVString(e):e instanceof ne?A.converters.Request(e):A.converters.USVString(e)},A.converters.AbortSignal=A.interfaceConverter(AbortSignal),A.converters.RequestInit=A.dictionaryConverter([{key:`method`,converter:A.converters.ByteString},{key:`headers`,converter:A.converters.HeadersInit},{key:`body`,converter:A.nullableConverter(A.converters.BodyInit)},{key:`referrer`,converter:A.converters.USVString},{key:`referrerPolicy`,converter:A.converters.DOMString,allowedValues:_},{key:`mode`,converter:A.converters.DOMString,allowedValues:y},{key:`credentials`,converter:A.converters.DOMString,allowedValues:b},{key:`cache`,converter:A.converters.DOMString,allowedValues:x},{key:`redirect`,converter:A.converters.DOMString,allowedValues:v},{key:`integrity`,converter:A.converters.DOMString},{key:`keepalive`,converter:A.converters.boolean},{key:`signal`,converter:A.nullableConverter(e=>A.converters.AbortSignal(e,{strict:!1}))},{key:`window`,converter:A.converters.any},{key:`duplex`,converter:A.converters.DOMString,allowedValues:S}]),t.exports={Request:ne,makeRequest:G}})),Ke=s(((e,t)=>{let{Response:n,makeNetworkError:r,makeAppropriateNetworkError:i,filterResponse:a,makeResponse:o}=We(),{Headers:s}=X(),{Request:c,makeRequest:l}=Ge(),u=require(`zlib`),{bytesMatch:d,makePolicyContainer:f,clonePolicyContainer:p,requestBadPort:m,TAOCheck:h,appendRequestOriginHeader:g,responseLocationURL:_,requestCurrentURL:v,setRequestReferrerPolicyOnRedirect:y,tryUpgradeRequestToAPotentiallyTrustworthyURL:b,createOpaqueTimingInfo:x,appendFetchMetadata:S,corsCheck:C,crossOriginResourcePolicyCheck:w,determineRequestsReferrer:T,coarsenedSharedCurrentTime:E,createDeferredPromise:D,isBlobLike:k,sameOrigin:A,isCancelled:M,isAborted:N,isErrorLike:ee,fullyReadBody:P,readableStreamClose:F,isomorphicEncode:I,urlIsLocal:L,urlIsHttpHttpsScheme:R,urlHasHttpsScheme:z}=ie(),{kState:B,kHeaders:te,kGuard:V,kRealm:ne}=U(),H=require(`assert`),{safelyExtractBody:G}=se(),{redirectStatusSet:oe,nullBodyStatus:ce,safeMethodsSet:le,requestBodyHeader:ue,subresourceSet:de,DOMException:fe}=re(),{kHeadersList:pe}=O(),me=require(`events`),{Readable:he,pipeline:ge}=require(`stream`),{addAbortListener:_e,isErrored:ve,isReadable:ye,nodeMajor:be,nodeMinor:xe}=j(),{dataURLProcessor:Se,serializeAMimeType:Ce}=ae(),{TransformStream:we}=require(`stream/web`),{getGlobalDispatcher:Te}=He(),{webidl:Ee}=W(),{STATUS_CODES:De}=require(`http`),Oe=[`GET`,`HEAD`],ke,Ae=globalThis.ReadableStream;var je=class extends me{constructor(e){super(),this.dispatcher=e,this.connection=null,this.dump=!1,this.state=`ongoing`,this.setMaxListeners(21)}terminate(e){this.state===`ongoing`&&(this.state=`terminated`,this.connection?.destroy(e),this.emit(`terminated`,e))}abort(e){this.state===`ongoing`&&(this.state=`aborted`,e||=new fe(`The operation was aborted.`,`AbortError`),this.serializedAbortReason=e,this.connection?.destroy(e),this.emit(`terminated`,e))}};function Me(e,t={}){Ee.argumentLengthCheck(arguments,1,{header:`globalThis.fetch`});let r=D(),i;try{i=new c(e,t)}catch(e){return r.reject(e),r.promise}let a=i[B];if(i.signal.aborted)return Fe(r,a,null,i.signal.reason),r.promise;a.client.globalObject?.constructor?.name===`ServiceWorkerGlobalScope`&&(a.serviceWorkers=`none`);let o=null,s=!1,l=null;return _e(i.signal,()=>{s=!0,H(l!=null),l.abort(i.signal.reason),Fe(r,a,o,i.signal.reason)}),l=K({request:a,processResponseEndOfBody:e=>Ne(e,`fetch`),processResponse:e=>{if(s)return Promise.resolve();if(e.aborted)return Fe(r,a,o,l.serializedAbortReason),Promise.resolve();if(e.type===`error`)return r.reject(Object.assign(TypeError(`fetch failed`),{cause:e.error})),Promise.resolve();o=new n,o[B]=e,o[ne]=null,o[te][pe]=e.headersList,o[te][V]=`immutable`,o[te][ne]=null,r.resolve(o)},dispatcher:t.dispatcher??Te()}),r.promise}function Ne(e,t=`other`){if(e.type===`error`&&e.aborted||!e.urlList?.length)return;let n=e.urlList[0],r=e.timingInfo,i=e.cacheState;R(n)&&r!==null&&(e.timingAllowPassed||(r=x({startTime:r.startTime}),i=``),r.endTime=E(),e.timingInfo=r,Pe(r,n,t,globalThis,i))}function Pe(e,t,n,r,i){(be>18||be===18&&xe>=2)&&performance.markResourceTiming(e,t.href,n,r,i)}function Fe(e,t,n,r){if(r||=new fe(`The operation was aborted.`,`AbortError`),e.reject(r),t.body!=null&&ye(t.body?.stream)&&t.body.stream.cancel(r).catch(e=>{if(e.code!==`ERR_INVALID_STATE`)throw e}),n==null)return;let i=n[B];i.body!=null&&ye(i.body?.stream)&&i.body.stream.cancel(r).catch(e=>{if(e.code!==`ERR_INVALID_STATE`)throw e})}function K({request:e,processRequestBodyChunkLength:t,processRequestEndOfBody:n,processResponse:r,processResponseEndOfBody:i,processResponseConsumeBody:a,useParallelQueue:o=!1,dispatcher:s}){let c=null,l=!1;e.client!=null&&(c=e.client.globalObject,l=e.client.crossOriginIsolatedCapability);let u=x({startTime:E(l)}),d={controller:new je(s),request:e,timingInfo:u,processRequestBodyChunkLength:t,processRequestEndOfBody:n,processResponse:r,processResponseConsumeBody:a,processResponseEndOfBody:i,taskDestination:c,crossOriginIsolatedCapability:l};return H(!e.body||e.body.stream),e.window===`client`&&(e.window=e.client?.globalObject?.constructor?.name===`Window`?e.client:`no-window`),e.origin===`client`&&(e.origin=e.client?.origin),e.policyContainer===`client`&&(e.client==null?e.policyContainer=f():e.policyContainer=p(e.client.policyContainer)),e.headersList.contains(`accept`)||e.headersList.append(`accept`,`*/*`),e.headersList.contains(`accept-language`)||e.headersList.append(`accept-language`,`*`),e.priority,de.has(e.destination),Ie(d).catch(e=>{d.controller.terminate(e)}),d.controller}async function Ie(e,t=!1){let n=e.request,i=null;if(n.localURLsOnly&&!L(v(n))&&(i=r(`local URLs only`)),b(n),m(n)===`blocked`&&(i=r(`bad port`)),n.referrerPolicy===``&&(n.referrerPolicy=n.policyContainer.referrerPolicy),n.referrer!==`no-referrer`&&(n.referrer=T(n)),i===null&&(i=await(async()=>{let t=v(n);return A(t,n.url)&&n.responseTainting===`basic`||t.protocol===`data:`||n.mode===`navigate`||n.mode===`websocket`?(n.responseTainting=`basic`,await Le(e)):n.mode===`same-origin`?r(`request mode cannot be "same-origin"`):n.mode===`no-cors`?n.redirect===`follow`?(n.responseTainting=`opaque`,await Le(e)):r(`redirect mode cannot be "follow" for "no-cors" request`):R(v(n))?(n.responseTainting=`cors`,await ze(e)):r(`URL scheme must be a HTTP(S) scheme`)})()),t)return i;i.status!==0&&!i.internalResponse&&(n.responseTainting,n.responseTainting===`basic`?i=a(i,`basic`):n.responseTainting===`cors`?i=a(i,`cors`):n.responseTainting===`opaque`?i=a(i,`opaque`):H(!1));let o=i.status===0?i:i.internalResponse;if(o.urlList.length===0&&o.urlList.push(...n.urlList),n.timingAllowFailed||(i.timingAllowPassed=!0),i.type===`opaque`&&o.status===206&&o.rangeRequested&&!n.headers.contains(`range`)&&(i=o=r()),i.status!==0&&(n.method===`HEAD`||n.method===`CONNECT`||ce.includes(o.status))&&(o.body=null,e.controller.dump=!0),n.integrity){let t=t=>q(e,r(t));if(n.responseTainting===`opaque`||i.body==null){t(i.error);return}await P(i.body,r=>{if(!d(r,n.integrity)){t(`integrity mismatch`);return}i.body=G(r)[0],q(e,i)},t)}else q(e,i)}function Le(e){if(M(e)&&e.request.redirectCount===0)return Promise.resolve(i(e));let{request:t}=e,{protocol:n}=v(t);switch(n){case`about:`:return Promise.resolve(r(`about scheme is not supported`));case`blob:`:{ke||=require(`buffer`).resolveObjectURL;let e=v(t);if(e.search.length!==0)return Promise.resolve(r(`NetworkError when attempting to fetch resource.`));let n=ke(e.toString());if(t.method!==`GET`||!k(n))return Promise.resolve(r(`invalid method`));let i=G(n),a=i[0],s=I(`${a.length}`),c=i[1]??``,l=o({statusText:`OK`,headersList:[[`content-length`,{name:`Content-Length`,value:s}],[`content-type`,{name:`Content-Type`,value:c}]]});return l.body=a,Promise.resolve(l)}case`data:`:{let e=Se(v(t));if(e===`failure`)return Promise.resolve(r(`failed to fetch the data URL`));let n=Ce(e.mimeType);return Promise.resolve(o({statusText:`OK`,headersList:[[`content-type`,{name:`Content-Type`,value:n}]],body:G(e.body)[0]}))}case`file:`:return Promise.resolve(r(`not implemented... yet...`));case`http:`:case`https:`:return ze(e).catch(e=>r(e));default:return Promise.resolve(r(`unknown scheme`))}}function Re(e,t){e.request.done=!0,e.processResponseDone!=null&&queueMicrotask(()=>e.processResponseDone(t))}function q(e,t){t.type===`error`&&(t.urlList=[e.request.urlList[0]],t.timingInfo=x({startTime:e.timingInfo.startTime}));let n=()=>{e.request.done=!0,e.processResponseEndOfBody!=null&&queueMicrotask(()=>e.processResponseEndOfBody(t))};if(e.processResponse!=null&&queueMicrotask(()=>e.processResponse(t)),t.body==null)n();else{let e=new we({start(){},transform:(e,t)=>{t.enqueue(e)},flush:n},{size(){return 1}},{size(){return 1}});t.body={stream:t.body.stream.pipeThrough(e)}}if(e.processResponseConsumeBody!=null){let n=n=>e.processResponseConsumeBody(t,n),r=n=>e.processResponseConsumeBody(t,n);if(t.body==null)queueMicrotask(()=>n(null));else return P(t.body,n,r);return Promise.resolve()}}async function ze(e){let t=e.request,n=null,i=null,a=e.timingInfo;if(t.serviceWorkers,n===null){if(t.redirect===`follow`&&(t.serviceWorkers=`none`),i=n=await J(e),t.responseTainting===`cors`&&C(t,n)===`failure`)return r(`cors failure`);h(t,n)===`failure`&&(t.timingAllowFailed=!0)}return(t.responseTainting===`opaque`||n.type===`opaque`)&&w(t.origin,t.client,t.destination,i)===`blocked`?r(`blocked`):(oe.has(i.status)&&(t.redirect!==`manual`&&e.controller.connection.destroy(),t.redirect===`error`?n=r(`unexpected redirect`):t.redirect===`manual`?n=i:t.redirect===`follow`?n=await Be(e,n):H(!1)),n.timingInfo=a,n)}function Be(e,t){let n=e.request,i=t.internalResponse?t.internalResponse:t,a;try{if(a=_(i,v(n).hash),a==null)return t}catch(e){return Promise.resolve(r(e))}if(!R(a))return Promise.resolve(r(`URL scheme must be a HTTP(S) scheme`));if(n.redirectCount===20)return Promise.resolve(r(`redirect count exceeded`));if(n.redirectCount+=1,n.mode===`cors`&&(a.username||a.password)&&!A(n,a))return Promise.resolve(r(`cross origin not allowed for request mode "cors"`));if(n.responseTainting===`cors`&&(a.username||a.password))return Promise.resolve(r(`URL cannot contain credentials for request mode "cors"`));if(i.status!==303&&n.body!=null&&n.body.source==null)return Promise.resolve(r());if([301,302].includes(i.status)&&n.method===`POST`||i.status===303&&!Oe.includes(n.method)){n.method=`GET`,n.body=null;for(let e of ue)n.headersList.delete(e)}A(v(n),a)||(n.headersList.delete(`authorization`),n.headersList.delete(`proxy-authorization`,!0),n.headersList.delete(`cookie`),n.headersList.delete(`host`)),n.body!=null&&(H(n.body.source!=null),n.body=G(n.body.source)[0]);let o=e.timingInfo;return o.redirectEndTime=o.postRedirectStartTime=E(e.crossOriginIsolatedCapability),o.redirectStartTime===0&&(o.redirectStartTime=o.startTime),n.urlList.push(a),y(n,i),Ie(e,!0)}async function J(e,t=!1,n=!1){let a=e.request,o=null,s=null,c=null;a.window===`no-window`&&a.redirect===`error`?(o=e,s=a):(s=l(a),o={...e},o.request=s);let u=a.credentials===`include`||a.credentials===`same-origin`&&a.responseTainting===`basic`,d=s.body?s.body.length:null,f=null;if(s.body==null&&[`POST`,`PUT`].includes(s.method)&&(f=`0`),d!=null&&(f=I(`${d}`)),f!=null&&s.headersList.append(`content-length`,f),d!=null&&s.keepalive,s.referrer instanceof URL&&s.headersList.append(`referer`,I(s.referrer.href)),g(s),S(s),s.headersList.contains(`user-agent`)||s.headersList.append(`user-agent`,typeof esbuildDetection>`u`?`undici`:`node`),s.cache===`default`&&(s.headersList.contains(`if-modified-since`)||s.headersList.contains(`if-none-match`)||s.headersList.contains(`if-unmodified-since`)||s.headersList.contains(`if-match`)||s.headersList.contains(`if-range`))&&(s.cache=`no-store`),s.cache===`no-cache`&&!s.preventNoCacheCacheControlHeaderModification&&!s.headersList.contains(`cache-control`)&&s.headersList.append(`cache-control`,`max-age=0`),(s.cache===`no-store`||s.cache===`reload`)&&(s.headersList.contains(`pragma`)||s.headersList.append(`pragma`,`no-cache`),s.headersList.contains(`cache-control`)||s.headersList.append(`cache-control`,`no-cache`)),s.headersList.contains(`range`)&&s.headersList.append(`accept-encoding`,`identity`),s.headersList.contains(`accept-encoding`)||(z(v(s))?s.headersList.append(`accept-encoding`,`br, gzip, deflate`):s.headersList.append(`accept-encoding`,`gzip, deflate`)),s.headersList.delete(`host`),s.cache=`no-store`,s.mode!==`no-store`&&s.mode,c==null){if(s.mode===`only-if-cached`)return r(`only if cached`);let e=await Ve(o,u,n);!le.has(s.method)&&e.status>=200&&e.status,c??=e}if(c.urlList=[...s.urlList],s.headersList.contains(`range`)&&(c.rangeRequested=!0),c.requestIncludesCredentials=u,c.status===407)return a.window===`no-window`?r():M(e)?i(e):r(`proxy authentication required`);if(c.status===421&&!n&&(a.body==null||a.body.source!=null)){if(M(e))return i(e);e.controller.connection.destroy(),c=await J(e,t,!0)}return c}async function Ve(e,t=!1,n=!1){H(!e.controller.connection||e.controller.connection.destroyed),e.controller.connection={abort:null,destroyed:!1,destroy(e){this.destroyed||(this.destroyed=!0,this.abort?.(e??new fe(`The operation was aborted.`,`AbortError`)))}};let a=e.request,c=null,l=e.timingInfo;a.cache=`no-store`,a.mode;let d=null;if(a.body==null&&e.processRequestEndOfBody)queueMicrotask(()=>e.processRequestEndOfBody());else if(a.body!=null){let t=async function*(t){M(e)||(yield t,e.processRequestBodyChunkLength?.(t.byteLength))},n=()=>{M(e)||e.processRequestEndOfBody&&e.processRequestEndOfBody()},r=t=>{M(e)||(t.name===`AbortError`?e.controller.abort():e.controller.terminate(t))};d=(async function*(){try{for await(let e of a.body.stream)yield*t(e);n()}catch(e){r(e)}})()}try{let{body:t,status:n,statusText:r,headersList:i,socket:a}=await g({body:d});if(a)c=o({status:n,statusText:r,headersList:i,socket:a});else{let a=t[Symbol.asyncIterator]();e.controller.next=()=>a.next(),c=o({status:n,statusText:r,headersList:i})}}catch(t){return t.name===`AbortError`?(e.controller.connection.destroy(),i(e,t)):r(t)}let f=()=>{e.controller.resume()},p=t=>{e.controller.abort(t)};Ae||=require(`stream/web`).ReadableStream;let m=new Ae({async start(t){e.controller.controller=t},async pull(e){await f(e)},async cancel(e){await p(e)}},{highWaterMark:0,size(){return 1}});c.body={stream:m},e.controller.on(`terminated`,h),e.controller.resume=async()=>{for(;;){let t,n;try{let{done:n,value:r}=await e.controller.next();if(N(e))break;t=n?void 0:r}catch(r){e.controller.ended&&!l.encodedBodySize?t=void 0:(t=r,n=!0)}if(t===void 0){F(e.controller.controller),Re(e,c);return}if(l.decodedBodySize+=t?.byteLength??0,n){e.controller.terminate(t);return}if(e.controller.controller.enqueue(new Uint8Array(t)),ve(m)){e.controller.terminate();return}if(!e.controller.controller.desiredSize)return}};function h(t){N(e)?(c.aborted=!0,ye(m)&&e.controller.controller.error(e.controller.serializedAbortReason)):ye(m)&&e.controller.controller.error(TypeError(`terminated`,{cause:ee(t)?t:void 0})),e.controller.connection.destroy()}return c;async function g({body:t}){let n=v(a),r=e.controller.dispatcher;return new Promise((i,o)=>r.dispatch({path:n.pathname+n.search,origin:n.origin,method:a.method,body:e.controller.dispatcher.isMockActive?a.body&&(a.body.source||a.body.stream):t,headers:a.headersList.entries,maxRedirections:0,upgrade:a.mode===`websocket`?`websocket`:void 0},{body:null,abort:null,onConnect(t){let{connection:n}=e.controller;n.destroyed?t(new fe(`The operation was aborted.`,`AbortError`)):(e.controller.on(`terminated`,t),this.abort=n.abort=t)},onHeaders(e,t,n,r){if(e<200)return;let o=[],c=``,l=new s;if(Array.isArray(t))for(let e=0;ee.trim()):n.toLowerCase()===`location`&&(c=r),l[pe].append(n,r)}else{let e=Object.keys(t);for(let n of e){let e=t[n];n.toLowerCase()===`content-encoding`?o=e.toLowerCase().split(`,`).map(e=>e.trim()).reverse():n.toLowerCase()===`location`&&(c=e),l[pe].append(n,e)}}this.body=new he({read:n});let d=[],f=a.redirect===`follow`&&c&&oe.has(e);if(a.method!==`HEAD`&&a.method!==`CONNECT`&&!ce.includes(e)&&!f)for(let e of o)if(e===`x-gzip`||e===`gzip`)d.push(u.createGunzip({flush:u.constants.Z_SYNC_FLUSH,finishFlush:u.constants.Z_SYNC_FLUSH}));else if(e===`deflate`)d.push(u.createInflate());else if(e===`br`)d.push(u.createBrotliDecompress());else{d.length=0;break}return i({status:e,statusText:r,headersList:l[pe],body:d.length?ge(this.body,...d,()=>{}):this.body.on(`error`,()=>{})}),!0},onData(t){if(e.controller.dump)return;let n=t;return l.encodedBodySize+=n.byteLength,this.body.push(n)},onComplete(){this.abort&&e.controller.off(`terminated`,this.abort),e.controller.ended=!0,this.body.push(null)},onError(t){this.abort&&e.controller.off(`terminated`,this.abort),this.body?.destroy(t),e.controller.terminate(t),o(t)},onUpgrade(e,t,n){if(e!==101)return;let r=new s;for(let e=0;e{t.exports={kState:Symbol(`FileReader state`),kResult:Symbol(`FileReader result`),kError:Symbol(`FileReader error`),kLastProgressEventFired:Symbol(`FileReader last progress event fired timestamp`),kEvents:Symbol(`FileReader events`),kAborted:Symbol(`FileReader aborted`)}})),Je=s(((e,t)=>{let{webidl:n}=W(),r=Symbol(`ProgressEvent state`);var i=class e extends Event{constructor(e,t={}){e=n.converters.DOMString(e),t=n.converters.ProgressEventInit(t??{}),super(e,t),this[r]={lengthComputable:t.lengthComputable,loaded:t.loaded,total:t.total}}get lengthComputable(){return n.brandCheck(this,e),this[r].lengthComputable}get loaded(){return n.brandCheck(this,e),this[r].loaded}get total(){return n.brandCheck(this,e),this[r].total}};n.converters.ProgressEventInit=n.dictionaryConverter([{key:`lengthComputable`,converter:n.converters.boolean,defaultValue:!1},{key:`loaded`,converter:n.converters[`unsigned long long`],defaultValue:0},{key:`total`,converter:n.converters[`unsigned long long`],defaultValue:0},{key:`bubbles`,converter:n.converters.boolean,defaultValue:!1},{key:`cancelable`,converter:n.converters.boolean,defaultValue:!1},{key:`composed`,converter:n.converters.boolean,defaultValue:!1}]),t.exports={ProgressEvent:i}})),Ye=s(((e,t)=>{function n(e){if(!e)return`failure`;switch(e.trim().toLowerCase()){case`unicode-1-1-utf-8`:case`unicode11utf8`:case`unicode20utf8`:case`utf-8`:case`utf8`:case`x-unicode20utf8`:return`UTF-8`;case`866`:case`cp866`:case`csibm866`:case`ibm866`:return`IBM866`;case`csisolatin2`:case`iso-8859-2`:case`iso-ir-101`:case`iso8859-2`:case`iso88592`:case`iso_8859-2`:case`iso_8859-2:1987`:case`l2`:case`latin2`:return`ISO-8859-2`;case`csisolatin3`:case`iso-8859-3`:case`iso-ir-109`:case`iso8859-3`:case`iso88593`:case`iso_8859-3`:case`iso_8859-3:1988`:case`l3`:case`latin3`:return`ISO-8859-3`;case`csisolatin4`:case`iso-8859-4`:case`iso-ir-110`:case`iso8859-4`:case`iso88594`:case`iso_8859-4`:case`iso_8859-4:1988`:case`l4`:case`latin4`:return`ISO-8859-4`;case`csisolatincyrillic`:case`cyrillic`:case`iso-8859-5`:case`iso-ir-144`:case`iso8859-5`:case`iso88595`:case`iso_8859-5`:case`iso_8859-5:1988`:return`ISO-8859-5`;case`arabic`:case`asmo-708`:case`csiso88596e`:case`csiso88596i`:case`csisolatinarabic`:case`ecma-114`:case`iso-8859-6`:case`iso-8859-6-e`:case`iso-8859-6-i`:case`iso-ir-127`:case`iso8859-6`:case`iso88596`:case`iso_8859-6`:case`iso_8859-6:1987`:return`ISO-8859-6`;case`csisolatingreek`:case`ecma-118`:case`elot_928`:case`greek`:case`greek8`:case`iso-8859-7`:case`iso-ir-126`:case`iso8859-7`:case`iso88597`:case`iso_8859-7`:case`iso_8859-7:1987`:case`sun_eu_greek`:return`ISO-8859-7`;case`csiso88598e`:case`csisolatinhebrew`:case`hebrew`:case`iso-8859-8`:case`iso-8859-8-e`:case`iso-ir-138`:case`iso8859-8`:case`iso88598`:case`iso_8859-8`:case`iso_8859-8:1988`:case`visual`:return`ISO-8859-8`;case`csiso88598i`:case`iso-8859-8-i`:case`logical`:return`ISO-8859-8-I`;case`csisolatin6`:case`iso-8859-10`:case`iso-ir-157`:case`iso8859-10`:case`iso885910`:case`l6`:case`latin6`:return`ISO-8859-10`;case`iso-8859-13`:case`iso8859-13`:case`iso885913`:return`ISO-8859-13`;case`iso-8859-14`:case`iso8859-14`:case`iso885914`:return`ISO-8859-14`;case`csisolatin9`:case`iso-8859-15`:case`iso8859-15`:case`iso885915`:case`iso_8859-15`:case`l9`:return`ISO-8859-15`;case`iso-8859-16`:return`ISO-8859-16`;case`cskoi8r`:case`koi`:case`koi8`:case`koi8-r`:case`koi8_r`:return`KOI8-R`;case`koi8-ru`:case`koi8-u`:return`KOI8-U`;case`csmacintosh`:case`mac`:case`macintosh`:case`x-mac-roman`:return`macintosh`;case`iso-8859-11`:case`iso8859-11`:case`iso885911`:case`tis-620`:case`windows-874`:return`windows-874`;case`cp1250`:case`windows-1250`:case`x-cp1250`:return`windows-1250`;case`cp1251`:case`windows-1251`:case`x-cp1251`:return`windows-1251`;case`ansi_x3.4-1968`:case`ascii`:case`cp1252`:case`cp819`:case`csisolatin1`:case`ibm819`:case`iso-8859-1`:case`iso-ir-100`:case`iso8859-1`:case`iso88591`:case`iso_8859-1`:case`iso_8859-1:1987`:case`l1`:case`latin1`:case`us-ascii`:case`windows-1252`:case`x-cp1252`:return`windows-1252`;case`cp1253`:case`windows-1253`:case`x-cp1253`:return`windows-1253`;case`cp1254`:case`csisolatin5`:case`iso-8859-9`:case`iso-ir-148`:case`iso8859-9`:case`iso88599`:case`iso_8859-9`:case`iso_8859-9:1989`:case`l5`:case`latin5`:case`windows-1254`:case`x-cp1254`:return`windows-1254`;case`cp1255`:case`windows-1255`:case`x-cp1255`:return`windows-1255`;case`cp1256`:case`windows-1256`:case`x-cp1256`:return`windows-1256`;case`cp1257`:case`windows-1257`:case`x-cp1257`:return`windows-1257`;case`cp1258`:case`windows-1258`:case`x-cp1258`:return`windows-1258`;case`x-mac-cyrillic`:case`x-mac-ukrainian`:return`x-mac-cyrillic`;case`chinese`:case`csgb2312`:case`csiso58gb231280`:case`gb2312`:case`gb_2312`:case`gb_2312-80`:case`gbk`:case`iso-ir-58`:case`x-gbk`:return`GBK`;case`gb18030`:return`gb18030`;case`big5`:case`big5-hkscs`:case`cn-big5`:case`csbig5`:case`x-x-big5`:return`Big5`;case`cseucpkdfmtjapanese`:case`euc-jp`:case`x-euc-jp`:return`EUC-JP`;case`csiso2022jp`:case`iso-2022-jp`:return`ISO-2022-JP`;case`csshiftjis`:case`ms932`:case`ms_kanji`:case`shift-jis`:case`shift_jis`:case`sjis`:case`windows-31j`:case`x-sjis`:return`Shift_JIS`;case`cseuckr`:case`csksc56011987`:case`euc-kr`:case`iso-ir-149`:case`korean`:case`ks_c_5601-1987`:case`ks_c_5601-1989`:case`ksc5601`:case`ksc_5601`:case`windows-949`:return`EUC-KR`;case`csiso2022kr`:case`hz-gb-2312`:case`iso-2022-cn`:case`iso-2022-cn-ext`:case`iso-2022-kr`:case`replacement`:return`replacement`;case`unicodefffe`:case`utf-16be`:return`UTF-16BE`;case`csunicode`:case`iso-10646-ucs-2`:case`ucs-2`:case`unicode`:case`unicodefeff`:case`utf-16`:case`utf-16le`:return`UTF-16LE`;case`x-user-defined`:return`x-user-defined`;default:return`failure`}}t.exports={getEncoding:n}})),Xe=s(((e,t)=>{let{kState:n,kError:r,kResult:i,kAborted:a,kLastProgressEventFired:o}=qe(),{ProgressEvent:s}=Je(),{getEncoding:c}=Ye(),{DOMException:l}=re(),{serializeAMimeType:u,parseMIMEType:d}=ae(),{types:f}=require(`util`),{StringDecoder:p}=require(`string_decoder`),{btoa:m}=require(`buffer`),h={enumerable:!0,writable:!1,configurable:!1};function g(e,t,s,c){if(e[n]===`loading`)throw new l(`Invalid state`,`InvalidStateError`);e[n]=`loading`,e[i]=null,e[r]=null;let u=t.stream().getReader(),d=[],p=u.read(),m=!0;(async()=>{for(;!e[a];)try{let{done:l,value:h}=await p;if(m&&!e[a]&&queueMicrotask(()=>{_(`loadstart`,e)}),m=!1,!l&&f.isUint8Array(h))d.push(h),(e[o]===void 0||Date.now()-e[o]>=50)&&!e[a]&&(e[o]=Date.now(),queueMicrotask(()=>{_(`progress`,e)})),p=u.read();else if(l){queueMicrotask(()=>{e[n]=`done`;try{let n=v(d,s,t.type,c);if(e[a])return;e[i]=n,_(`load`,e)}catch(t){e[r]=t,_(`error`,e)}e[n]!==`loading`&&_(`loadend`,e)});break}}catch(t){if(e[a])return;queueMicrotask(()=>{e[n]=`done`,e[r]=t,_(`error`,e),e[n]!==`loading`&&_(`loadend`,e)});break}})()}function _(e,t){let n=new s(e,{bubbles:!1,cancelable:!1});t.dispatchEvent(n)}function v(e,t,n,r){switch(t){case`DataURL`:{let t=`data:`,r=d(n||`application/octet-stream`);r!==`failure`&&(t+=u(r)),t+=`;base64,`;let i=new p(`latin1`);for(let n of e)t+=m(i.write(n));return t+=m(i.end()),t}case`Text`:{let t=`failure`;if(r&&(t=c(r)),t===`failure`&&n){let e=d(n);e!==`failure`&&(t=c(e.parameters.get(`charset`)))}return t===`failure`&&(t=`UTF-8`),y(e,t)}case`ArrayBuffer`:return x(e).buffer;case`BinaryString`:{let t=``,n=new p(`latin1`);for(let r of e)t+=n.write(r);return t+=n.end(),t}}}function y(e,t){let n=x(e),r=b(n),i=0;r!==null&&(t=r,i=r===`UTF-8`?3:2);let a=n.slice(i);return new TextDecoder(t).decode(a)}function b(e){let[t,n,r]=e;return t===239&&n===187&&r===191?`UTF-8`:t===254&&n===255?`UTF-16BE`:t===255&&n===254?`UTF-16LE`:null}function x(e){let t=e.reduce((e,t)=>e+t.byteLength,0),n=0;return e.reduce((e,t)=>(e.set(t,n),n+=t.byteLength,e),new Uint8Array(t))}t.exports={staticPropertyDescriptors:h,readOperation:g,fireAProgressEvent:_}})),Ze=s(((e,t)=>{let{staticPropertyDescriptors:n,readOperation:r,fireAProgressEvent:i}=Xe(),{kState:a,kError:o,kResult:s,kEvents:c,kAborted:l}=qe(),{webidl:u}=W(),{kEnumerableProperty:d}=j();var f=class e extends EventTarget{constructor(){super(),this[a]=`empty`,this[s]=null,this[o]=null,this[c]={loadend:null,error:null,abort:null,load:null,progress:null,loadstart:null}}readAsArrayBuffer(t){u.brandCheck(this,e),u.argumentLengthCheck(arguments,1,{header:`FileReader.readAsArrayBuffer`}),t=u.converters.Blob(t,{strict:!1}),r(this,t,`ArrayBuffer`)}readAsBinaryString(t){u.brandCheck(this,e),u.argumentLengthCheck(arguments,1,{header:`FileReader.readAsBinaryString`}),t=u.converters.Blob(t,{strict:!1}),r(this,t,`BinaryString`)}readAsText(t,n=void 0){u.brandCheck(this,e),u.argumentLengthCheck(arguments,1,{header:`FileReader.readAsText`}),t=u.converters.Blob(t,{strict:!1}),n!==void 0&&(n=u.converters.DOMString(n)),r(this,t,`Text`,n)}readAsDataURL(t){u.brandCheck(this,e),u.argumentLengthCheck(arguments,1,{header:`FileReader.readAsDataURL`}),t=u.converters.Blob(t,{strict:!1}),r(this,t,`DataURL`)}abort(){if(this[a]===`empty`||this[a]===`done`){this[s]=null;return}this[a]===`loading`&&(this[a]=`done`,this[s]=null),this[l]=!0,i(`abort`,this),this[a]!==`loading`&&i(`loadend`,this)}get readyState(){switch(u.brandCheck(this,e),this[a]){case`empty`:return this.EMPTY;case`loading`:return this.LOADING;case`done`:return this.DONE}}get result(){return u.brandCheck(this,e),this[s]}get error(){return u.brandCheck(this,e),this[o]}get onloadend(){return u.brandCheck(this,e),this[c].loadend}set onloadend(t){u.brandCheck(this,e),this[c].loadend&&this.removeEventListener(`loadend`,this[c].loadend),typeof t==`function`?(this[c].loadend=t,this.addEventListener(`loadend`,t)):this[c].loadend=null}get onerror(){return u.brandCheck(this,e),this[c].error}set onerror(t){u.brandCheck(this,e),this[c].error&&this.removeEventListener(`error`,this[c].error),typeof t==`function`?(this[c].error=t,this.addEventListener(`error`,t)):this[c].error=null}get onloadstart(){return u.brandCheck(this,e),this[c].loadstart}set onloadstart(t){u.brandCheck(this,e),this[c].loadstart&&this.removeEventListener(`loadstart`,this[c].loadstart),typeof t==`function`?(this[c].loadstart=t,this.addEventListener(`loadstart`,t)):this[c].loadstart=null}get onprogress(){return u.brandCheck(this,e),this[c].progress}set onprogress(t){u.brandCheck(this,e),this[c].progress&&this.removeEventListener(`progress`,this[c].progress),typeof t==`function`?(this[c].progress=t,this.addEventListener(`progress`,t)):this[c].progress=null}get onload(){return u.brandCheck(this,e),this[c].load}set onload(t){u.brandCheck(this,e),this[c].load&&this.removeEventListener(`load`,this[c].load),typeof t==`function`?(this[c].load=t,this.addEventListener(`load`,t)):this[c].load=null}get onabort(){return u.brandCheck(this,e),this[c].abort}set onabort(t){u.brandCheck(this,e),this[c].abort&&this.removeEventListener(`abort`,this[c].abort),typeof t==`function`?(this[c].abort=t,this.addEventListener(`abort`,t)):this[c].abort=null}};f.EMPTY=f.prototype.EMPTY=0,f.LOADING=f.prototype.LOADING=1,f.DONE=f.prototype.DONE=2,Object.defineProperties(f.prototype,{EMPTY:n,LOADING:n,DONE:n,readAsArrayBuffer:d,readAsBinaryString:d,readAsText:d,readAsDataURL:d,abort:d,readyState:d,result:d,error:d,onloadstart:d,onprogress:d,onload:d,onabort:d,onerror:d,onloadend:d,[Symbol.toStringTag]:{value:`FileReader`,writable:!1,enumerable:!1,configurable:!0}}),Object.defineProperties(f,{EMPTY:n,LOADING:n,DONE:n}),t.exports={FileReader:f}}));function Qe(e,t){if(t.has(e))throw TypeError(`Cannot initialize the same private elements twice on an object`)}var $e=o((()=>{}));function et(e,t,n){Qe(e,t),t.set(e,n)}var tt=o((()=>{$e()}));function nt(e,t,n){if(typeof e==`function`?e===t:e.has(t))return arguments.length<3?t:n;throw TypeError(`Private element is not present on this object`)}var rt=o((()=>{}));function Z(e,t){return e.get(nt(e,t))}var it=o((()=>{rt()})),at=s(((e,t)=>{t.exports={kConstruct:O().kConstruct}}));function ot(e,t){Qe(e,t),t.add(e)}var st=o((()=>{$e()}));function ct(e,t,n){return e.set(nt(e,t),n),n}var lt=o((()=>{rt()})),ut=s(((e,t)=>{let n=require(`assert`),{URLSerializer:r}=ae(),{isValidHeaderName:i}=ie();function a(e,t,n=!1){return r(e,n)===r(t,n)}function o(e){n(e!==null);let t=[];for(let n of e.split(`,`)){if(n=n.trim(),n.length){if(!i(n))continue}else continue;t.push(n)}return t}t.exports={urlEquals:a,fieldValues:o}})),dt=s(((e,t)=>{st(),tt(),lt(),it(),rt();let{kConstruct:n}=at(),{urlEquals:r,fieldValues:i}=ut(),{kEnumerableProperty:a,isDisturbed:o}=j(),{kHeadersList:s}=O(),{webidl:c}=W(),{Response:l,cloneResponse:u}=We(),{Request:d}=Ge(),{kState:f,kHeaders:p,kGuard:m,kRealm:h}=U(),{fetching:g}=Ke(),{urlIsHttpHttpsScheme:_,createDeferredPromise:v,readAllBytes:y}=ie(),b=require(`assert`),{getGlobalDispatcher:x}=He();var S=new WeakMap,C=new WeakSet,w=class e{constructor(){ot(this,C),et(this,S,void 0),arguments[0]!==n&&c.illegalConstructor(),ct(S,this,arguments[1])}async match(t,n={}){c.brandCheck(this,e),c.argumentLengthCheck(arguments,1,{header:`Cache.match`}),t=c.converters.RequestInfo(t),n=c.converters.CacheQueryOptions(n);let r=await this.matchAll(t,n);if(r.length!==0)return r[0]}async matchAll(t=void 0,n={}){c.brandCheck(this,e),t!==void 0&&(t=c.converters.RequestInfo(t)),n=c.converters.CacheQueryOptions(n);let r=null;if(t!==void 0)if(t instanceof d){if(r=t[f],r.method!==`GET`&&!n.ignoreMethod)return[]}else typeof t==`string`&&(r=new d(t)[f]);let i=[];if(t===void 0)for(let e of Z(S,this))i.push(e[1]);else{let e=nt(C,this,E).call(this,r,n);for(let t of e)i.push(t[1])}let a=[];for(let e of i){let t=new l(e.body?.source??null),n=t[f].body;t[f]=e,t[f].body=n,t[p][s]=e.headersList,t[p][m]=`immutable`,a.push(t)}return Object.freeze(a)}async add(t){c.brandCheck(this,e),c.argumentLengthCheck(arguments,1,{header:`Cache.add`}),t=c.converters.RequestInfo(t);let n=[t];return await this.addAll(n)}async addAll(t){c.brandCheck(this,e),c.argumentLengthCheck(arguments,1,{header:`Cache.addAll`}),t=c.converters[`sequence`](t);let n=[],r=[];for(let e of t){if(typeof e==`string`)continue;let t=e[f];if(!_(t.url)||t.method!==`GET`)throw c.errors.exception({header:`Cache.addAll`,message:`Expected http/s scheme when method is not GET.`})}let a=[];for(let e of t){let t=new d(e)[f];if(!_(t.url))throw c.errors.exception({header:`Cache.addAll`,message:`Expected http/s scheme.`});t.initiator=`fetch`,t.destination=`subresource`,r.push(t);let o=v();a.push(g({request:t,dispatcher:x(),processResponse(e){if(e.type===`error`||e.status===206||e.status<200||e.status>299)o.reject(c.errors.exception({header:`Cache.addAll`,message:`Received an invalid status code or the request failed.`}));else if(e.headersList.contains(`vary`)){let t=i(e.headersList.get(`vary`));for(let e of t)if(e===`*`){o.reject(c.errors.exception({header:`Cache.addAll`,message:`invalid vary field value`}));for(let e of a)e.abort();return}}},processResponseEndOfBody(e){if(e.aborted){o.reject(new DOMException(`aborted`,`AbortError`));return}o.resolve(e)}})),n.push(o.promise)}let o=await Promise.all(n),s=[],l=0;for(let e of o){let t={type:`put`,request:r[l],response:e};s.push(t),l++}let u=v(),p=null;try{nt(C,this,T).call(this,s)}catch(e){p=e}return queueMicrotask(()=>{p===null?u.resolve(void 0):u.reject(p)}),u.promise}async put(t,n){c.brandCheck(this,e),c.argumentLengthCheck(arguments,2,{header:`Cache.put`}),t=c.converters.RequestInfo(t),n=c.converters.Response(n);let r=null;if(r=t instanceof d?t[f]:new d(t)[f],!_(r.url)||r.method!==`GET`)throw c.errors.exception({header:`Cache.put`,message:`Expected an http/s scheme when method is not GET`});let a=n[f];if(a.status===206)throw c.errors.exception({header:`Cache.put`,message:`Got 206 status`});if(a.headersList.contains(`vary`)){let e=i(a.headersList.get(`vary`));for(let t of e)if(t===`*`)throw c.errors.exception({header:`Cache.put`,message:`Got * vary field value`})}if(a.body&&(o(a.body.stream)||a.body.stream.locked))throw c.errors.exception({header:`Cache.put`,message:`Response body is locked or disturbed`});let s=u(a),l=v();a.body==null?l.resolve(void 0):y(a.body.stream.getReader()).then(l.resolve,l.reject);let p=[],m={type:`put`,request:r,response:s};p.push(m);let h=await l.promise;s.body!=null&&(s.body.source=h);let g=v(),b=null;try{nt(C,this,T).call(this,p)}catch(e){b=e}return queueMicrotask(()=>{b===null?g.resolve():g.reject(b)}),g.promise}async delete(t,n={}){c.brandCheck(this,e),c.argumentLengthCheck(arguments,1,{header:`Cache.delete`}),t=c.converters.RequestInfo(t),n=c.converters.CacheQueryOptions(n);let r=null;if(t instanceof d){if(r=t[f],r.method!==`GET`&&!n.ignoreMethod)return!1}else b(typeof t==`string`),r=new d(t)[f];let i=[],a={type:`delete`,request:r,options:n};i.push(a);let o=v(),s=null,l;try{l=nt(C,this,T).call(this,i)}catch(e){s=e}return queueMicrotask(()=>{s===null?o.resolve(!!l?.length):o.reject(s)}),o.promise}async keys(t=void 0,n={}){c.brandCheck(this,e),t!==void 0&&(t=c.converters.RequestInfo(t)),n=c.converters.CacheQueryOptions(n);let r=null;if(t!==void 0)if(t instanceof d){if(r=t[f],r.method!==`GET`&&!n.ignoreMethod)return[]}else typeof t==`string`&&(r=new d(t)[f]);let i=v(),a=[];if(t===void 0)for(let e of Z(S,this))a.push(e[0]);else{let e=nt(C,this,E).call(this,r,n);for(let t of e)a.push(t[0])}return queueMicrotask(()=>{let e=[];for(let t of a){let n=new d(`https://a`);n[f]=t,n[p][s]=t.headersList,n[p][m]=`immutable`,n[h]=t.client,e.push(n)}i.resolve(Object.freeze(e))}),i.promise}};function T(e){let t=Z(S,this),n=[...t],r=[],i=[];try{for(let n of e){if(n.type!==`delete`&&n.type!==`put`)throw c.errors.exception({header:`Cache.#batchCacheOperations`,message:`operation type does not match "delete" or "put"`});if(n.type===`delete`&&n.response!=null)throw c.errors.exception({header:`Cache.#batchCacheOperations`,message:`delete operation should not have an associated response`});if(nt(C,this,E).call(this,n.request,n.options,r).length)throw new DOMException(`???`,`InvalidStateError`);let e;if(n.type===`delete`){if(e=nt(C,this,E).call(this,n.request,n.options),e.length===0)return[];for(let n of e){let e=t.indexOf(n);b(e!==-1),t.splice(e,1)}}else if(n.type===`put`){if(n.response==null)throw c.errors.exception({header:`Cache.#batchCacheOperations`,message:`put operation should have an associated response`});let i=n.request;if(!_(i.url))throw c.errors.exception({header:`Cache.#batchCacheOperations`,message:`expected http or https scheme`});if(i.method!==`GET`)throw c.errors.exception({header:`Cache.#batchCacheOperations`,message:`not get method`});if(n.options!=null)throw c.errors.exception({header:`Cache.#batchCacheOperations`,message:`options must not be defined`});e=nt(C,this,E).call(this,n.request);for(let n of e){let e=t.indexOf(n);b(e!==-1),t.splice(e,1)}t.push([n.request,n.response]),r.push([n.request,n.response])}i.push([n.request,n.response])}return i}catch(e){throw Z(S,this).length=0,ct(S,this,n),e}}function E(e,t,n){let r=[],i=n??Z(S,this);for(let n of i){let[i,a]=n;nt(C,this,D).call(this,e,i,a,t)&&r.push(n)}return r}function D(e,t,n=null,a){let o=new URL(e.url),s=new URL(t.url);if(a?.ignoreSearch&&(s.search=``,o.search=``),!r(o,s,!0))return!1;if(n==null||a?.ignoreVary||!n.headersList.contains(`vary`))return!0;let c=i(n.headersList.get(`vary`));for(let n of c)if(n===`*`||t.headersList.get(n)!==e.headersList.get(n))return!1;return!0}Object.defineProperties(w.prototype,{[Symbol.toStringTag]:{value:`Cache`,configurable:!0},match:a,matchAll:a,add:a,addAll:a,put:a,delete:a,keys:a});let k=[{key:`ignoreSearch`,converter:c.converters.boolean,defaultValue:!1},{key:`ignoreMethod`,converter:c.converters.boolean,defaultValue:!1},{key:`ignoreVary`,converter:c.converters.boolean,defaultValue:!1}];c.converters.CacheQueryOptions=c.dictionaryConverter(k),c.converters.MultiCacheQueryOptions=c.dictionaryConverter([...k,{key:`cacheName`,converter:c.converters.DOMString}]),c.converters.Response=c.interfaceConverter(l),c.converters[`sequence`]=c.sequenceConverter(c.converters.RequestInfo),t.exports={Cache:w}})),ft=s(((e,t)=>{tt(),it();let{kConstruct:n}=at(),{Cache:r}=dt(),{webidl:i}=W(),{kEnumerableProperty:a}=j();var o=new WeakMap,s=class e{constructor(){et(this,o,new Map),arguments[0]!==n&&i.illegalConstructor()}async match(t,a={}){if(i.brandCheck(this,e),i.argumentLengthCheck(arguments,1,{header:`CacheStorage.match`}),t=i.converters.RequestInfo(t),a=i.converters.MultiCacheQueryOptions(a),a.cacheName!=null){if(Z(o,this).has(a.cacheName))return await new r(n,Z(o,this).get(a.cacheName)).match(t,a)}else for(let e of Z(o,this).values()){let i=await new r(n,e).match(t,a);if(i!==void 0)return i}}async has(t){return i.brandCheck(this,e),i.argumentLengthCheck(arguments,1,{header:`CacheStorage.has`}),t=i.converters.DOMString(t),Z(o,this).has(t)}async open(t){if(i.brandCheck(this,e),i.argumentLengthCheck(arguments,1,{header:`CacheStorage.open`}),t=i.converters.DOMString(t),Z(o,this).has(t))return new r(n,Z(o,this).get(t));let a=[];return Z(o,this).set(t,a),new r(n,a)}async delete(t){return i.brandCheck(this,e),i.argumentLengthCheck(arguments,1,{header:`CacheStorage.delete`}),t=i.converters.DOMString(t),Z(o,this).delete(t)}async keys(){return i.brandCheck(this,e),[...Z(o,this).keys()]}};Object.defineProperties(s.prototype,{[Symbol.toStringTag]:{value:`CacheStorage`,configurable:!0},match:a,has:a,open:a,delete:a,keys:a}),t.exports={CacheStorage:s}})),pt=s(((e,t)=>{t.exports={maxAttributeValueSize:1024,maxNameValuePairSize:4096}})),mt=s(((e,t)=>{function n(e){if(e.length===0)return!1;for(let t of e){let e=t.charCodeAt(0);if(e>=0||e<=8||e>=10||e<=31||e===127)return!1}}function r(e){for(let t of e){let e=t.charCodeAt(0);if(e<=32||e>127||t===`(`||t===`)`||t===`>`||t===`<`||t===`@`||t===`,`||t===`;`||t===`:`||t===`\\`||t===`"`||t===`/`||t===`[`||t===`]`||t===`?`||t===`=`||t===`{`||t===`}`)throw Error(`Invalid cookie name`)}}function i(e){for(let t of e){let e=t.charCodeAt(0);if(e<33||e===34||e===44||e===59||e===92||e>126)throw Error(`Invalid header value`)}}function a(e){for(let t of e)if(t.charCodeAt(0)<33||t===`;`)throw Error(`Invalid cookie path`)}function o(e){if(e.startsWith(`-`)||e.endsWith(`.`)||e.endsWith(`-`))throw Error(`Invalid cookie domain`)}function s(e){return typeof e==`number`&&(e=new Date(e)),`${[`Sun`,`Mon`,`Tue`,`Wed`,`Thu`,`Fri`,`Sat`][e.getUTCDay()]}, ${e.getUTCDate().toString().padStart(2,`0`)} ${[`Jan`,`Feb`,`Mar`,`Apr`,`May`,`Jun`,`Jul`,`Aug`,`Sep`,`Oct`,`Nov`,`Dec`][e.getUTCMonth()]} ${e.getUTCFullYear()} ${e.getUTCHours().toString().padStart(2,`0`)}:${e.getUTCMinutes().toString().padStart(2,`0`)}:${e.getUTCSeconds().toString().padStart(2,`0`)} GMT`}function c(e){if(e<0)throw Error(`Invalid cookie max-age`)}function l(e){if(e.name.length===0)return null;r(e.name),i(e.value);let t=[`${e.name}=${e.value}`];e.name.startsWith(`__Secure-`)&&(e.secure=!0),e.name.startsWith(`__Host-`)&&(e.secure=!0,e.domain=null,e.path=`/`),e.secure&&t.push(`Secure`),e.httpOnly&&t.push(`HttpOnly`),typeof e.maxAge==`number`&&(c(e.maxAge),t.push(`Max-Age=${e.maxAge}`)),e.domain&&(o(e.domain),t.push(`Domain=${e.domain}`)),e.path&&(a(e.path),t.push(`Path=${e.path}`)),e.expires&&e.expires.toString()!==`Invalid Date`&&t.push(`Expires=${s(e.expires)}`),e.sameSite&&t.push(`SameSite=${e.sameSite}`);for(let n of e.unparsed){if(!n.includes(`=`))throw Error(`Invalid unparsed`);let[e,...r]=n.split(`=`);t.push(`${e.trim()}=${r.join(`=`)}`)}return t.join(`; `)}t.exports={isCTLExcludingHtab:n,validateCookieName:r,validateCookiePath:a,validateCookieValue:i,toIMFDate:s,stringify:l}})),ht=s(((e,t)=>{let{maxNameValuePairSize:n,maxAttributeValueSize:r}=pt(),{isCTLExcludingHtab:i}=mt(),{collectASequenceOfCodePointsFast:a}=ae(),o=require(`assert`);function s(e){if(i(e))return null;let t=``,r=``,o=``,s=``;if(e.includes(`;`)){let n={position:0};t=a(`;`,e,n),r=e.slice(n.position)}else t=e;if(!t.includes(`=`))s=t;else{let e={position:0};o=a(`=`,t,e),s=t.slice(e.position+1)}return o=o.trim(),s=s.trim(),o.length+s.length>n?null:{name:o,value:s,...c(r)}}function c(e,t={}){if(e.length===0)return t;o(e[0]===`;`),e=e.slice(1);let n=``;e.includes(`;`)?(n=a(`;`,e,{position:0}),e=e.slice(n.length)):(n=e,e=``);let i=``,s=``;if(n.includes(`=`)){let e={position:0};i=a(`=`,n,e),s=n.slice(e.position+1)}else i=n;if(i=i.trim(),s=s.trim(),s.length>r)return c(e,t);let l=i.toLowerCase();if(l===`expires`)t.expires=new Date(s);else if(l===`max-age`){let n=s.charCodeAt(0);if((n<48||n>57)&&s[0]!==`-`||!/^\d+$/.test(s))return c(e,t);t.maxAge=Number(s)}else if(l===`domain`){let e=s;e[0]===`.`&&(e=e.slice(1)),e=e.toLowerCase(),t.domain=e}else if(l===`path`){let e=``;e=s.length===0||s[0]!==`/`?`/`:s,t.path=e}else if(l===`secure`)t.secure=!0;else if(l===`httponly`)t.httpOnly=!0;else if(l===`samesite`){let e=`Default`,n=s.toLowerCase();n.includes(`none`)&&(e=`None`),n.includes(`strict`)&&(e=`Strict`),n.includes(`lax`)&&(e=`Lax`),t.sameSite=e}else t.unparsed??=[],t.unparsed.push(`${i}=${s}`);return c(e,t)}t.exports={parseSetCookie:s,parseUnparsedAttributes:c}})),gt=s(((e,t)=>{let{parseSetCookie:n}=ht(),{stringify:r}=mt(),{webidl:i}=W(),{Headers:a}=X();function o(e){i.argumentLengthCheck(arguments,1,{header:`getCookies`}),i.brandCheck(e,a,{strict:!1});let t=e.get(`cookie`),n={};if(!t)return n;for(let e of t.split(`;`)){let[t,...r]=e.split(`=`);n[t.trim()]=r.join(`=`)}return n}function s(e,t,n){i.argumentLengthCheck(arguments,2,{header:`deleteCookie`}),i.brandCheck(e,a,{strict:!1}),t=i.converters.DOMString(t),n=i.converters.DeleteCookieAttributes(n),l(e,{name:t,value:``,expires:new Date(0),...n})}function c(e){i.argumentLengthCheck(arguments,1,{header:`getSetCookies`}),i.brandCheck(e,a,{strict:!1});let t=e.getSetCookie();return t?t.map(e=>n(e)):[]}function l(e,t){i.argumentLengthCheck(arguments,2,{header:`setCookie`}),i.brandCheck(e,a,{strict:!1}),t=i.converters.Cookie(t),r(t)&&e.append(`Set-Cookie`,r(t))}i.converters.DeleteCookieAttributes=i.dictionaryConverter([{converter:i.nullableConverter(i.converters.DOMString),key:`path`,defaultValue:null},{converter:i.nullableConverter(i.converters.DOMString),key:`domain`,defaultValue:null}]),i.converters.Cookie=i.dictionaryConverter([{converter:i.converters.DOMString,key:`name`},{converter:i.converters.DOMString,key:`value`},{converter:i.nullableConverter(e=>typeof e==`number`?i.converters[`unsigned long long`](e):new Date(e)),key:`expires`,defaultValue:null},{converter:i.nullableConverter(i.converters[`long long`]),key:`maxAge`,defaultValue:null},{converter:i.nullableConverter(i.converters.DOMString),key:`domain`,defaultValue:null},{converter:i.nullableConverter(i.converters.DOMString),key:`path`,defaultValue:null},{converter:i.nullableConverter(i.converters.boolean),key:`secure`,defaultValue:null},{converter:i.nullableConverter(i.converters.boolean),key:`httpOnly`,defaultValue:null},{converter:i.converters.USVString,key:`sameSite`,allowedValues:[`Strict`,`Lax`,`None`]},{converter:i.sequenceConverter(i.converters.DOMString),key:`unparsed`,defaultValue:[]}]),t.exports={getCookies:o,deleteCookie:s,getSetCookies:c,setCookie:l}})),_t=s(((e,t)=>{t.exports={uid:`258EAFA5-E914-47DA-95CA-C5AB0DC85B11`,staticPropertyDescriptors:{enumerable:!0,writable:!1,configurable:!1},states:{CONNECTING:0,OPEN:1,CLOSING:2,CLOSED:3},opcodes:{CONTINUATION:0,TEXT:1,BINARY:2,CLOSE:8,PING:9,PONG:10},maxUnsigned16Bit:2**16-1,parserStates:{INFO:0,PAYLOADLENGTH_16:2,PAYLOADLENGTH_64:3,READ_DATA:4},emptyBuffer:Buffer.allocUnsafe(0)}})),vt=s(((e,t)=>{t.exports={kWebSocketURL:Symbol(`url`),kReadyState:Symbol(`ready state`),kController:Symbol(`controller`),kResponse:Symbol(`response`),kBinaryType:Symbol(`binary type`),kSentClose:Symbol(`sent close`),kReceivedClose:Symbol(`received close`),kByteParser:Symbol(`byte parser`)}})),yt=s(((e,t)=>{tt(),lt(),it();let{webidl:n}=W(),{kEnumerableProperty:r}=j(),{MessagePort:i}=require(`worker_threads`);var a=new WeakMap,o=class e extends Event{constructor(e,t={}){n.argumentLengthCheck(arguments,1,{header:`MessageEvent constructor`}),e=n.converters.DOMString(e),t=n.converters.MessageEventInit(t),super(e,t),et(this,a,void 0),ct(a,this,t)}get data(){return n.brandCheck(this,e),Z(a,this).data}get origin(){return n.brandCheck(this,e),Z(a,this).origin}get lastEventId(){return n.brandCheck(this,e),Z(a,this).lastEventId}get source(){return n.brandCheck(this,e),Z(a,this).source}get ports(){return n.brandCheck(this,e),Object.isFrozen(Z(a,this).ports)||Object.freeze(Z(a,this).ports),Z(a,this).ports}initMessageEvent(t,r=!1,i=!1,a=null,o=``,s=``,c=null,l=[]){return n.brandCheck(this,e),n.argumentLengthCheck(arguments,1,{header:`MessageEvent.initMessageEvent`}),new e(t,{bubbles:r,cancelable:i,data:a,origin:o,lastEventId:s,source:c,ports:l})}},s=new WeakMap,c=class e extends Event{constructor(e,t={}){n.argumentLengthCheck(arguments,1,{header:`CloseEvent constructor`}),e=n.converters.DOMString(e),t=n.converters.CloseEventInit(t),super(e,t),et(this,s,void 0),ct(s,this,t)}get wasClean(){return n.brandCheck(this,e),Z(s,this).wasClean}get code(){return n.brandCheck(this,e),Z(s,this).code}get reason(){return n.brandCheck(this,e),Z(s,this).reason}},l=new WeakMap,u=class e extends Event{constructor(e,t){n.argumentLengthCheck(arguments,1,{header:`ErrorEvent constructor`}),super(e,t),et(this,l,void 0),e=n.converters.DOMString(e),t=n.converters.ErrorEventInit(t??{}),ct(l,this,t)}get message(){return n.brandCheck(this,e),Z(l,this).message}get filename(){return n.brandCheck(this,e),Z(l,this).filename}get lineno(){return n.brandCheck(this,e),Z(l,this).lineno}get colno(){return n.brandCheck(this,e),Z(l,this).colno}get error(){return n.brandCheck(this,e),Z(l,this).error}};Object.defineProperties(o.prototype,{[Symbol.toStringTag]:{value:`MessageEvent`,configurable:!0},data:r,origin:r,lastEventId:r,source:r,ports:r,initMessageEvent:r}),Object.defineProperties(c.prototype,{[Symbol.toStringTag]:{value:`CloseEvent`,configurable:!0},reason:r,code:r,wasClean:r}),Object.defineProperties(u.prototype,{[Symbol.toStringTag]:{value:`ErrorEvent`,configurable:!0},message:r,filename:r,lineno:r,colno:r,error:r}),n.converters.MessagePort=n.interfaceConverter(i),n.converters[`sequence`]=n.sequenceConverter(n.converters.MessagePort);let d=[{key:`bubbles`,converter:n.converters.boolean,defaultValue:!1},{key:`cancelable`,converter:n.converters.boolean,defaultValue:!1},{key:`composed`,converter:n.converters.boolean,defaultValue:!1}];n.converters.MessageEventInit=n.dictionaryConverter([...d,{key:`data`,converter:n.converters.any,defaultValue:null},{key:`origin`,converter:n.converters.USVString,defaultValue:``},{key:`lastEventId`,converter:n.converters.DOMString,defaultValue:``},{key:`source`,converter:n.nullableConverter(n.converters.MessagePort),defaultValue:null},{key:`ports`,converter:n.converters[`sequence`],get defaultValue(){return[]}}]),n.converters.CloseEventInit=n.dictionaryConverter([...d,{key:`wasClean`,converter:n.converters.boolean,defaultValue:!1},{key:`code`,converter:n.converters[`unsigned short`],defaultValue:0},{key:`reason`,converter:n.converters.USVString,defaultValue:``}]),n.converters.ErrorEventInit=n.dictionaryConverter([...d,{key:`message`,converter:n.converters.DOMString,defaultValue:``},{key:`filename`,converter:n.converters.USVString,defaultValue:``},{key:`lineno`,converter:n.converters[`unsigned long`],defaultValue:0},{key:`colno`,converter:n.converters[`unsigned long`],defaultValue:0},{key:`error`,converter:n.converters.any}]),t.exports={MessageEvent:o,CloseEvent:c,ErrorEvent:u}})),bt=s(((e,t)=>{let{kReadyState:n,kController:r,kResponse:i,kBinaryType:a,kWebSocketURL:o}=vt(),{states:s,opcodes:c}=_t(),{MessageEvent:l,ErrorEvent:u}=yt();function d(e){return e[n]===s.OPEN}function f(e){return e[n]===s.CLOSING}function p(e){return e[n]===s.CLOSED}function m(e,t,n=Event,r){let i=new n(e,r);t.dispatchEvent(i)}function h(e,t,r){if(e[n]!==s.OPEN)return;let i;if(t===c.TEXT)try{i=new TextDecoder(`utf-8`,{fatal:!0}).decode(r)}catch{v(e,`Received invalid UTF-8 in text frame.`);return}else t===c.BINARY&&(i=e[a]===`blob`?new Blob([r]):new Uint8Array(r).buffer);m(`message`,e,l,{origin:e[o].origin,data:i})}function g(e){if(e.length===0)return!1;for(let t of e){let e=t.charCodeAt(0);if(e<33||e>126||t===`(`||t===`)`||t===`<`||t===`>`||t===`@`||t===`,`||t===`;`||t===`:`||t===`\\`||t===`"`||t===`/`||t===`[`||t===`]`||t===`?`||t===`=`||t===`{`||t===`}`||e===32||e===9)return!1}return!0}function _(e){return e>=1e3&&e<1015?e!==1004&&e!==1005&&e!==1006:e>=3e3&&e<=4999}function v(e,t){let{[r]:n,[i]:a}=e;n.abort(),a?.socket&&!a.socket.destroyed&&a.socket.destroy(),t&&m(`error`,e,u,{error:Error(t)})}t.exports={isEstablished:d,isClosing:f,isClosed:p,fireEvent:m,isValidSubprotocol:g,isValidStatusCode:_,failWebsocketConnection:v,websocketMessageReceived:h}})),xt=s(((e,t)=>{let n=require(`diagnostics_channel`),{uid:r,states:i}=_t(),{kReadyState:a,kSentClose:o,kByteParser:s,kReceivedClose:c}=vt(),{fireEvent:l,failWebsocketConnection:u}=bt(),{CloseEvent:d}=yt(),{makeRequest:f}=Ge(),{fetching:p}=Ke(),{Headers:m}=X(),{getGlobalDispatcher:h}=He(),{kHeadersList:g}=O(),_={};_.open=n.channel(`undici:websocket:open`),_.close=n.channel(`undici:websocket:close`),_.socketError=n.channel(`undici:websocket:socket_error`);let v;try{v=require(`crypto`)}catch{}function y(e,t,n,i,a){let o=e;o.protocol=e.protocol===`ws:`?`http:`:`https:`;let s=f({urlList:[o],serviceWorkers:`none`,referrer:`no-referrer`,mode:`websocket`,credentials:`include`,cache:`no-store`,redirect:`error`});a.headers&&(s.headersList=new m(a.headers)[g]);let c=v.randomBytes(16).toString(`base64`);s.headersList.append(`sec-websocket-key`,c),s.headersList.append(`sec-websocket-version`,`13`);for(let e of t)s.headersList.append(`sec-websocket-protocol`,e);return p({request:s,useParallelQueue:!0,dispatcher:a.dispatcher??h(),processResponse(e){if(e.type===`error`||e.status!==101){u(n,`Received network error or non-101 status code.`);return}if(t.length!==0&&!e.headersList.get(`Sec-WebSocket-Protocol`)){u(n,`Server did not respond with sent protocols.`);return}if(e.headersList.get(`Upgrade`)?.toLowerCase()!==`websocket`){u(n,`Server did not set Upgrade header to "websocket".`);return}if(e.headersList.get(`Connection`)?.toLowerCase()!==`upgrade`){u(n,`Server did not set Connection header to "upgrade".`);return}if(e.headersList.get(`Sec-WebSocket-Accept`)!==v.createHash(`sha1`).update(c+r).digest(`base64`)){u(n,`Incorrect hash received in Sec-WebSocket-Accept header.`);return}let a=e.headersList.get(`Sec-WebSocket-Extensions`);if(a!==null&&a!==``){u(n,`Received different permessage-deflate than the one set.`);return}let o=e.headersList.get(`Sec-WebSocket-Protocol`);if(o!==null&&o!==s.headersList.get(`Sec-WebSocket-Protocol`)){u(n,`Protocol was not set in the opening handshake.`);return}e.socket.on(`data`,b),e.socket.on(`close`,x),e.socket.on(`error`,S),_.open.hasSubscribers&&_.open.publish({address:e.socket.address(),protocol:o,extensions:a}),i(e)}})}function b(e){this.ws[s].write(e)||this.pause()}function x(){let{ws:e}=this,t=e[o]&&e[c],n=1005,r=``,u=e[s].closingInfo;u?(n=u.code??1005,r=u.reason):e[o]||(n=1006),e[a]=i.CLOSED,l(`close`,e,d,{wasClean:t,code:n,reason:r}),_.close.hasSubscribers&&_.close.publish({websocket:e,code:n,reason:r})}function S(e){let{ws:t}=this;t[a]=i.CLOSING,_.socketError.hasSubscribers&&_.socketError.publish(e),this.destroy()}t.exports={establishWebSocketConnection:y}})),St=s(((e,t)=>{let{maxUnsigned16Bit:n}=_t(),r;try{r=require(`crypto`)}catch{}t.exports={WebsocketFrameSend:class{constructor(e){this.frameData=e,this.maskKey=r.randomBytes(4)}createFrame(e){let t=this.frameData?.byteLength??0,r=t,i=6;t>n?(i+=8,r=127):t>125&&(i+=2,r=126);let a=Buffer.allocUnsafe(t+i);a[0]=a[1]=0,a[0]|=128,a[0]=(a[0]&240)+e,a[i-4]=this.maskKey[0],a[i-3]=this.maskKey[1],a[i-2]=this.maskKey[2],a[i-1]=this.maskKey[3],a[1]=r,r===126?a.writeUInt16BE(t,2):r===127&&(a[2]=a[3]=0,a.writeUIntBE(t,4,6)),a[1]|=128;for(let e=0;e{tt(),it(),lt();let{Writable:n}=require(`stream`),r=require(`diagnostics_channel`),{parserStates:i,opcodes:a,states:o,emptyBuffer:s}=_t(),{kReadyState:c,kSentClose:l,kResponse:u,kReceivedClose:d}=vt(),{isValidStatusCode:f,failWebsocketConnection:p,websocketMessageReceived:m}=bt(),{WebsocketFrameSend:h}=St(),g={};g.ping=r.channel(`undici:websocket:ping`),g.pong=r.channel(`undici:websocket:pong`);var _=new WeakMap,v=new WeakMap,y=new WeakMap,b=new WeakMap,x=new WeakMap;t.exports={ByteParser:class extends n{constructor(e){super(),et(this,_,[]),et(this,v,0),et(this,y,i.INFO),et(this,b,{}),et(this,x,[]),this.ws=e}_write(e,t,n){Z(_,this).push(e),ct(v,this,Z(v,this)+e.length),this.run(n)}run(e){for(;;){if(Z(y,this)===i.INFO){if(Z(v,this)<2)return e();let t=this.consume(2);if(Z(b,this).fin=(t[0]&128)!=0,Z(b,this).opcode=t[0]&15,Z(b,this).originalOpcode??=Z(b,this).opcode,Z(b,this).fragmented=!Z(b,this).fin&&Z(b,this).opcode!==a.CONTINUATION,Z(b,this).fragmented&&Z(b,this).opcode!==a.BINARY&&Z(b,this).opcode!==a.TEXT){p(this.ws,`Invalid frame type was fragmented.`);return}let n=t[1]&127;if(n<=125?(Z(b,this).payloadLength=n,ct(y,this,i.READ_DATA)):n===126?ct(y,this,i.PAYLOADLENGTH_16):n===127&&ct(y,this,i.PAYLOADLENGTH_64),Z(b,this).fragmented&&n>125){p(this.ws,`Fragmented frame exceeded 125 bytes.`);return}else if((Z(b,this).opcode===a.PING||Z(b,this).opcode===a.PONG||Z(b,this).opcode===a.CLOSE)&&n>125){p(this.ws,`Payload length for control frame exceeded 125 bytes.`);return}else if(Z(b,this).opcode===a.CLOSE){if(n===1){p(this.ws,`Received close frame with a 1-byte body.`);return}let e=this.consume(n);if(Z(b,this).closeInfo=this.parseCloseBody(!1,e),!this.ws[l]){let e=Buffer.allocUnsafe(2);e.writeUInt16BE(Z(b,this).closeInfo.code,0);let t=new h(e);this.ws[u].socket.write(t.createFrame(a.CLOSE),e=>{e||(this.ws[l]=!0)})}this.ws[c]=o.CLOSING,this.ws[d]=!0,this.end();return}else if(Z(b,this).opcode===a.PING){let t=this.consume(n);if(!this.ws[d]){let e=new h(t);this.ws[u].socket.write(e.createFrame(a.PONG)),g.ping.hasSubscribers&&g.ping.publish({payload:t})}if(ct(y,this,i.INFO),Z(v,this)>0)continue;e();return}else if(Z(b,this).opcode===a.PONG){let t=this.consume(n);if(g.pong.hasSubscribers&&g.pong.publish({payload:t}),Z(v,this)>0)continue;e();return}}else if(Z(y,this)===i.PAYLOADLENGTH_16){if(Z(v,this)<2)return e();let t=this.consume(2);Z(b,this).payloadLength=t.readUInt16BE(0),ct(y,this,i.READ_DATA)}else if(Z(y,this)===i.PAYLOADLENGTH_64){if(Z(v,this)<8)return e();let t=this.consume(8),n=t.readUInt32BE(0);if(n>2**31-1){p(this.ws,`Received payload length > 2^31 bytes.`);return}let r=t.readUInt32BE(4);Z(b,this).payloadLength=(n<<8)+r,ct(y,this,i.READ_DATA)}else if(Z(y,this)===i.READ_DATA){if(Z(v,this)=Z(b,this).payloadLength){let e=this.consume(Z(b,this).payloadLength);if(Z(x,this).push(e),!Z(b,this).fragmented||Z(b,this).fin&&Z(b,this).opcode===a.CONTINUATION){let e=Buffer.concat(Z(x,this));m(this.ws,Z(b,this).originalOpcode,e),ct(b,this,{}),Z(x,this).length=0}ct(y,this,i.INFO)}}if(!(Z(v,this)>0)){e();break}}}consume(e){if(e>Z(v,this))return null;if(e===0)return s;if(Z(_,this)[0].length===e)return ct(v,this,Z(v,this)-Z(_,this)[0].length),Z(_,this).shift();let t=Buffer.allocUnsafe(e),n=0;for(;n!==e;){let r=Z(_,this)[0],{length:i}=r;if(i+n===e){t.set(Z(_,this).shift(),n);break}else if(i+n>e){t.set(r.subarray(0,e-n),n),Z(_,this)[0]=r.subarray(e-n);break}else t.set(Z(_,this).shift(),n),n+=r.length}return ct(v,this,Z(v,this)-e),t}parseCloseBody(e,t){let n;if(t.length>=2&&(n=t.readUInt16BE(0)),e)return f(n)?{code:n}:null;let r=t.subarray(2);if(r[0]===239&&r[1]===187&&r[2]===191&&(r=r.subarray(3)),n!==void 0&&!f(n))return null;try{r=new TextDecoder(`utf-8`,{fatal:!0}).decode(r)}catch{return null}return{code:n,reason:r}}get closingInfo(){return Z(b,this).closeInfo}}}})),wt=s(((e,t)=>{st(),tt(),rt(),it(),lt();let{webidl:n}=W(),{DOMException:r}=re(),{URLSerializer:i}=ae(),{getGlobalOrigin:a}=H(),{staticPropertyDescriptors:o,states:s,opcodes:c,emptyBuffer:l}=_t(),{kWebSocketURL:u,kReadyState:d,kController:f,kBinaryType:p,kResponse:m,kSentClose:h,kByteParser:g}=vt(),{isEstablished:_,isClosing:v,isValidSubprotocol:y,failWebsocketConnection:b,fireEvent:x}=bt(),{establishWebSocketConnection:S}=xt(),{WebsocketFrameSend:C}=St(),{ByteParser:w}=Ct(),{kEnumerableProperty:T,isBlobLike:E}=j(),{getGlobalDispatcher:D}=He(),{types:O}=require(`util`),k=!1;var A=new WeakMap,M=new WeakMap,N=new WeakMap,ee=new WeakMap,P=new WeakSet,F=class e extends EventTarget{constructor(t,i=[]){super(),ot(this,P),et(this,A,{open:null,error:null,close:null,message:null}),et(this,M,0),et(this,N,``),et(this,ee,``),n.argumentLengthCheck(arguments,1,{header:`WebSocket constructor`}),k||(k=!0,process.emitWarning(`WebSockets are experimental, expect them to change at any time.`,{code:`UNDICI-WS`}));let o=n.converters[`DOMString or sequence or WebSocketInit`](i);t=n.converters.USVString(t),i=o.protocols;let s=a(),c;try{c=new URL(t,s)}catch(e){throw new r(e,`SyntaxError`)}if(c.protocol===`http:`?c.protocol=`ws:`:c.protocol===`https:`&&(c.protocol=`wss:`),c.protocol!==`ws:`&&c.protocol!==`wss:`)throw new r(`Expected a ws: or wss: protocol, got ${c.protocol}`,`SyntaxError`);if(c.hash||c.href.endsWith(`#`))throw new r(`Got fragment`,`SyntaxError`);if(typeof i==`string`&&(i=[i]),i.length!==new Set(i.map(e=>e.toLowerCase())).size||i.length>0&&!i.every(e=>y(e)))throw new r(`Invalid Sec-WebSocket-Protocol value`,`SyntaxError`);this[u]=new URL(c.href),this[f]=S(c,i,this,e=>nt(P,this,I).call(this,e),o),this[d]=e.CONNECTING,this[p]=`blob`}close(t=void 0,i=void 0){if(n.brandCheck(this,e),t!==void 0&&(t=n.converters[`unsigned short`](t,{clamp:!0})),i!==void 0&&(i=n.converters.USVString(i)),t!==void 0&&t!==1e3&&(t<3e3||t>4999))throw new r(`invalid code`,`InvalidAccessError`);let a=0;if(i!==void 0&&(a=Buffer.byteLength(i),a>123))throw new r(`Reason must be less than 123 bytes; received ${a}`,`SyntaxError`);if(!(this[d]===e.CLOSING||this[d]===e.CLOSED))if(!_(this))b(this,`Connection was closed before it was established.`),this[d]=e.CLOSING;else if(v(this))this[d]=e.CLOSING;else{let e=new C;t!==void 0&&i===void 0?(e.frameData=Buffer.allocUnsafe(2),e.frameData.writeUInt16BE(t,0)):t!==void 0&&i!==void 0?(e.frameData=Buffer.allocUnsafe(2+a),e.frameData.writeUInt16BE(t,0),e.frameData.write(i,2,`utf-8`)):e.frameData=l,this[m].socket.write(e.createFrame(c.CLOSE),e=>{e||(this[h]=!0)}),this[d]=s.CLOSING}}send(t){if(n.brandCheck(this,e),n.argumentLengthCheck(arguments,1,{header:`WebSocket.send`}),t=n.converters.WebSocketSendData(t),this[d]===e.CONNECTING)throw new r(`Sent before connected.`,`InvalidStateError`);if(!_(this)||v(this))return;let i=this[m].socket;if(typeof t==`string`){let e=Buffer.from(t),n=new C(e).createFrame(c.TEXT);ct(M,this,Z(M,this)+e.byteLength),i.write(n,()=>{ct(M,this,Z(M,this)-e.byteLength)})}else if(O.isArrayBuffer(t)){let e=Buffer.from(t),n=new C(e).createFrame(c.BINARY);ct(M,this,Z(M,this)+e.byteLength),i.write(n,()=>{ct(M,this,Z(M,this)-e.byteLength)})}else if(ArrayBuffer.isView(t)){let e=Buffer.from(t,t.byteOffset,t.byteLength),n=new C(e).createFrame(c.BINARY);ct(M,this,Z(M,this)+e.byteLength),i.write(n,()=>{ct(M,this,Z(M,this)-e.byteLength)})}else if(E(t)){let e=new C;t.arrayBuffer().then(t=>{let n=Buffer.from(t);e.frameData=n;let r=e.createFrame(c.BINARY);ct(M,this,Z(M,this)+n.byteLength),i.write(r,()=>{ct(M,this,Z(M,this)-n.byteLength)})})}}get readyState(){return n.brandCheck(this,e),this[d]}get bufferedAmount(){return n.brandCheck(this,e),Z(M,this)}get url(){return n.brandCheck(this,e),i(this[u])}get extensions(){return n.brandCheck(this,e),Z(ee,this)}get protocol(){return n.brandCheck(this,e),Z(N,this)}get onopen(){return n.brandCheck(this,e),Z(A,this).open}set onopen(t){n.brandCheck(this,e),Z(A,this).open&&this.removeEventListener(`open`,Z(A,this).open),typeof t==`function`?(Z(A,this).open=t,this.addEventListener(`open`,t)):Z(A,this).open=null}get onerror(){return n.brandCheck(this,e),Z(A,this).error}set onerror(t){n.brandCheck(this,e),Z(A,this).error&&this.removeEventListener(`error`,Z(A,this).error),typeof t==`function`?(Z(A,this).error=t,this.addEventListener(`error`,t)):Z(A,this).error=null}get onclose(){return n.brandCheck(this,e),Z(A,this).close}set onclose(t){n.brandCheck(this,e),Z(A,this).close&&this.removeEventListener(`close`,Z(A,this).close),typeof t==`function`?(Z(A,this).close=t,this.addEventListener(`close`,t)):Z(A,this).close=null}get onmessage(){return n.brandCheck(this,e),Z(A,this).message}set onmessage(t){n.brandCheck(this,e),Z(A,this).message&&this.removeEventListener(`message`,Z(A,this).message),typeof t==`function`?(Z(A,this).message=t,this.addEventListener(`message`,t)):Z(A,this).message=null}get binaryType(){return n.brandCheck(this,e),this[p]}set binaryType(t){n.brandCheck(this,e),t!==`blob`&&t!==`arraybuffer`?this[p]=`blob`:this[p]=t}};function I(e){this[m]=e;let t=new w(this);t.on(`drain`,function(){this.ws[m].socket.resume()}),e.socket.ws=this,this[g]=t,this[d]=s.OPEN;let n=e.headersList.get(`sec-websocket-extensions`);n!==null&&ct(ee,this,n);let r=e.headersList.get(`sec-websocket-protocol`);r!==null&&ct(N,this,r),x(`open`,this)}F.CONNECTING=F.prototype.CONNECTING=s.CONNECTING,F.OPEN=F.prototype.OPEN=s.OPEN,F.CLOSING=F.prototype.CLOSING=s.CLOSING,F.CLOSED=F.prototype.CLOSED=s.CLOSED,Object.defineProperties(F.prototype,{CONNECTING:o,OPEN:o,CLOSING:o,CLOSED:o,url:T,readyState:T,bufferedAmount:T,onopen:T,onerror:T,onclose:T,close:T,onmessage:T,binaryType:T,send:T,extensions:T,protocol:T,[Symbol.toStringTag]:{value:`WebSocket`,writable:!1,enumerable:!1,configurable:!0}}),Object.defineProperties(F,{CONNECTING:o,OPEN:o,CLOSING:o,CLOSED:o}),n.converters[`sequence`]=n.sequenceConverter(n.converters.DOMString),n.converters[`DOMString or sequence`]=function(e){return n.util.Type(e)===`Object`&&Symbol.iterator in e?n.converters[`sequence`](e):n.converters.DOMString(e)},n.converters.WebSocketInit=n.dictionaryConverter([{key:`protocols`,converter:n.converters[`DOMString or sequence`],get defaultValue(){return[]}},{key:`dispatcher`,converter:e=>e,get defaultValue(){return D()}},{key:`headers`,converter:n.nullableConverter(n.converters.HeadersInit)}]),n.converters[`DOMString or sequence or WebSocketInit`]=function(e){return n.util.Type(e)===`Object`&&!(Symbol.iterator in e)?n.converters.WebSocketInit(e):{protocols:n.converters[`DOMString or sequence`](e)}},n.converters.WebSocketSendData=function(e){if(n.util.Type(e)===`Object`){if(E(e))return n.converters.Blob(e,{strict:!1});if(ArrayBuffer.isView(e)||O.isAnyArrayBuffer(e))return n.converters.BufferSource(e)}return n.converters.USVString(e)},t.exports={WebSocket:F}})),Tt=s(((e,t)=>{let n=ve(),r=le(),i=k(),a=Se(),o=Ce(),s=Te(),c=j(),{InvalidArgumentError:l}=i,u=Pe(),d=de(),f=Re(),p=J(),m=q(),h=Fe(),g=Ve(),_=Y(),{getGlobalDispatcher:v,setGlobalDispatcher:y}=He(),b=Ue(),x=me(),S=he(),C;try{require(`crypto`),C=!0}catch{C=!1}Object.assign(r.prototype,u),t.exports.Dispatcher=r,t.exports.Client=n,t.exports.Pool=a,t.exports.BalancedPool=o,t.exports.Agent=s,t.exports.ProxyAgent=g,t.exports.RetryHandler=_,t.exports.DecoratorHandler=b,t.exports.RedirectHandler=x,t.exports.createRedirectInterceptor=S,t.exports.buildConnector=d,t.exports.errors=i;function w(e){return(t,n,r)=>{if(typeof n==`function`&&(r=n,n=null),!t||typeof t!=`string`&&typeof t!=`object`&&!(t instanceof URL))throw new l(`invalid url`);if(n!=null&&typeof n!=`object`)throw new l(`invalid opts`);if(n&&n.path!=null){if(typeof n.path!=`string`)throw new l(`invalid opts.path`);let e=n.path;n.path.startsWith(`/`)||(e=`/${e}`),t=new URL(c.parseOrigin(t).origin+e)}else n||=typeof t==`object`?t:{},t=c.parseURL(t);let{agent:i,dispatcher:a=v()}=n;if(i)throw new l(`unsupported opts.agent. Did you mean opts.client?`);return e.call(a,{...n,origin:t.origin,path:t.search?`${t.pathname}${t.search}`:t.pathname,method:n.method||(n.body?`PUT`:`GET`)},r)}}if(t.exports.setGlobalDispatcher=y,t.exports.getGlobalDispatcher=v,c.nodeMajor>16||c.nodeMajor===16&&c.nodeMinor>=8){let e=null;t.exports.fetch=async function(t){e||=Ke().fetch;try{return await e(...arguments)}catch(e){throw typeof e==`object`&&Error.captureStackTrace(e,this),e}},t.exports.Headers=X().Headers,t.exports.Response=We().Response,t.exports.Request=Ge().Request,t.exports.FormData=oe().FormData,t.exports.File=G().File,t.exports.FileReader=Ze().FileReader;let{setGlobalOrigin:n,getGlobalOrigin:r}=H();t.exports.setGlobalOrigin=n,t.exports.getGlobalOrigin=r;let{CacheStorage:i}=ft(),{kConstruct:a}=at();t.exports.caches=new i(a)}if(c.nodeMajor>=16){let{deleteCookie:e,getCookies:n,getSetCookies:r,setCookie:i}=gt();t.exports.deleteCookie=e,t.exports.getCookies=n,t.exports.getSetCookies=r,t.exports.setCookie=i;let{parseMIMEType:a,serializeAMimeType:o}=ae();t.exports.parseMIMEType=a,t.exports.serializeAMimeType=o}if(c.nodeMajor>=18&&C){let{WebSocket:e}=wt();t.exports.WebSocket=e}t.exports.request=w(u.request),t.exports.stream=w(u.stream),t.exports.pipeline=w(u.pipeline),t.exports.connect=w(u.connect),t.exports.upgrade=w(u.upgrade),t.exports.MockClient=f,t.exports.MockPool=m,t.exports.MockAgent=p,t.exports.mockErrors=h})),Et=s((e=>{var t=e&&e.__createBinding||(Object.create?(function(e,t,n,r){r===void 0&&(r=n);var i=Object.getOwnPropertyDescriptor(t,n);(!i||(`get`in i?!t.__esModule:i.writable||i.configurable))&&(i={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,r,i)}):(function(e,t,n,r){r===void 0&&(r=n),e[r]=t[n]})),n=e&&e.__setModuleDefault||(Object.create?(function(e,t){Object.defineProperty(e,`default`,{enumerable:!0,value:t})}):function(e,t){e.default=t}),r=e&&e.__importStar||function(e){if(e&&e.__esModule)return e;var r={};if(e!=null)for(var i in e)i!==`default`&&Object.prototype.hasOwnProperty.call(e,i)&&t(r,e,i);return n(r,e),r},i=e&&e.__awaiter||function(e,t,n,r){function i(e){return e instanceof n?e:new n(function(t){t(e)})}return new(n||=Promise)(function(n,a){function o(e){try{c(r.next(e))}catch(e){a(e)}}function s(e){try{c(r.throw(e))}catch(e){a(e)}}function c(e){e.done?n(e.value):i(e.value).then(o,s)}c((r=r.apply(e,t||[])).next())})};Object.defineProperty(e,`__esModule`,{value:!0}),e.HttpClient=e.isHttps=e.HttpClientResponse=e.HttpClientError=e.getProxyUrl=e.MediaTypes=e.Headers=e.HttpCodes=void 0;let a=r(require(`http`)),o=r(require(`https`)),s=r(T()),c=r(D()),l=Tt();var u;(function(e){e[e.OK=200]=`OK`,e[e.MultipleChoices=300]=`MultipleChoices`,e[e.MovedPermanently=301]=`MovedPermanently`,e[e.ResourceMoved=302]=`ResourceMoved`,e[e.SeeOther=303]=`SeeOther`,e[e.NotModified=304]=`NotModified`,e[e.UseProxy=305]=`UseProxy`,e[e.SwitchProxy=306]=`SwitchProxy`,e[e.TemporaryRedirect=307]=`TemporaryRedirect`,e[e.PermanentRedirect=308]=`PermanentRedirect`,e[e.BadRequest=400]=`BadRequest`,e[e.Unauthorized=401]=`Unauthorized`,e[e.PaymentRequired=402]=`PaymentRequired`,e[e.Forbidden=403]=`Forbidden`,e[e.NotFound=404]=`NotFound`,e[e.MethodNotAllowed=405]=`MethodNotAllowed`,e[e.NotAcceptable=406]=`NotAcceptable`,e[e.ProxyAuthenticationRequired=407]=`ProxyAuthenticationRequired`,e[e.RequestTimeout=408]=`RequestTimeout`,e[e.Conflict=409]=`Conflict`,e[e.Gone=410]=`Gone`,e[e.TooManyRequests=429]=`TooManyRequests`,e[e.InternalServerError=500]=`InternalServerError`,e[e.NotImplemented=501]=`NotImplemented`,e[e.BadGateway=502]=`BadGateway`,e[e.ServiceUnavailable=503]=`ServiceUnavailable`,e[e.GatewayTimeout=504]=`GatewayTimeout`})(u||(e.HttpCodes=u={}));var d;(function(e){e.Accept=`accept`,e.ContentType=`content-type`})(d||(e.Headers=d={}));var f;(function(e){e.ApplicationJson=`application/json`})(f||(e.MediaTypes=f={}));function p(e){let t=s.getProxyUrl(new URL(e));return t?t.href:``}e.getProxyUrl=p;let m=[u.MovedPermanently,u.ResourceMoved,u.SeeOther,u.TemporaryRedirect,u.PermanentRedirect],h=[u.BadGateway,u.ServiceUnavailable,u.GatewayTimeout],g=[`OPTIONS`,`GET`,`DELETE`,`HEAD`];var _=class e extends Error{constructor(t,n){super(t),this.name=`HttpClientError`,this.statusCode=n,Object.setPrototypeOf(this,e.prototype)}};e.HttpClientError=_;var v=class{constructor(e){this.message=e}readBody(){return i(this,void 0,void 0,function*(){return new Promise(e=>i(this,void 0,void 0,function*(){let t=Buffer.alloc(0);this.message.on(`data`,e=>{t=Buffer.concat([t,e])}),this.message.on(`end`,()=>{e(t.toString())})}))})}readBodyBuffer(){return i(this,void 0,void 0,function*(){return new Promise(e=>i(this,void 0,void 0,function*(){let t=[];this.message.on(`data`,e=>{t.push(e)}),this.message.on(`end`,()=>{e(Buffer.concat(t))})}))})}};e.HttpClientResponse=v;function y(e){return new URL(e).protocol===`https:`}e.isHttps=y,e.HttpClient=class{constructor(e,t,n){this._ignoreSslError=!1,this._allowRedirects=!0,this._allowRedirectDowngrade=!1,this._maxRedirects=50,this._allowRetries=!1,this._maxRetries=1,this._keepAlive=!1,this._disposed=!1,this.userAgent=e,this.handlers=t||[],this.requestOptions=n,n&&(n.ignoreSslError!=null&&(this._ignoreSslError=n.ignoreSslError),this._socketTimeout=n.socketTimeout,n.allowRedirects!=null&&(this._allowRedirects=n.allowRedirects),n.allowRedirectDowngrade!=null&&(this._allowRedirectDowngrade=n.allowRedirectDowngrade),n.maxRedirects!=null&&(this._maxRedirects=Math.max(n.maxRedirects,0)),n.keepAlive!=null&&(this._keepAlive=n.keepAlive),n.allowRetries!=null&&(this._allowRetries=n.allowRetries),n.maxRetries!=null&&(this._maxRetries=n.maxRetries))}options(e,t){return i(this,void 0,void 0,function*(){return this.request(`OPTIONS`,e,null,t||{})})}get(e,t){return i(this,void 0,void 0,function*(){return this.request(`GET`,e,null,t||{})})}del(e,t){return i(this,void 0,void 0,function*(){return this.request(`DELETE`,e,null,t||{})})}post(e,t,n){return i(this,void 0,void 0,function*(){return this.request(`POST`,e,t,n||{})})}patch(e,t,n){return i(this,void 0,void 0,function*(){return this.request(`PATCH`,e,t,n||{})})}put(e,t,n){return i(this,void 0,void 0,function*(){return this.request(`PUT`,e,t,n||{})})}head(e,t){return i(this,void 0,void 0,function*(){return this.request(`HEAD`,e,null,t||{})})}sendStream(e,t,n,r){return i(this,void 0,void 0,function*(){return this.request(e,t,n,r)})}getJson(e,t={}){return i(this,void 0,void 0,function*(){t[d.Accept]=this._getExistingOrDefaultHeader(t,d.Accept,f.ApplicationJson);let n=yield this.get(e,t);return this._processResponse(n,this.requestOptions)})}postJson(e,t,n={}){return i(this,void 0,void 0,function*(){let r=JSON.stringify(t,null,2);n[d.Accept]=this._getExistingOrDefaultHeader(n,d.Accept,f.ApplicationJson),n[d.ContentType]=this._getExistingOrDefaultHeader(n,d.ContentType,f.ApplicationJson);let i=yield this.post(e,r,n);return this._processResponse(i,this.requestOptions)})}putJson(e,t,n={}){return i(this,void 0,void 0,function*(){let r=JSON.stringify(t,null,2);n[d.Accept]=this._getExistingOrDefaultHeader(n,d.Accept,f.ApplicationJson),n[d.ContentType]=this._getExistingOrDefaultHeader(n,d.ContentType,f.ApplicationJson);let i=yield this.put(e,r,n);return this._processResponse(i,this.requestOptions)})}patchJson(e,t,n={}){return i(this,void 0,void 0,function*(){let r=JSON.stringify(t,null,2);n[d.Accept]=this._getExistingOrDefaultHeader(n,d.Accept,f.ApplicationJson),n[d.ContentType]=this._getExistingOrDefaultHeader(n,d.ContentType,f.ApplicationJson);let i=yield this.patch(e,r,n);return this._processResponse(i,this.requestOptions)})}request(e,t,n,r){return i(this,void 0,void 0,function*(){if(this._disposed)throw Error(`Client has already been disposed.`);let i=new URL(t),a=this._prepareRequest(e,i,r),o=this._allowRetries&&g.includes(e)?this._maxRetries+1:1,s=0,c;do{if(c=yield this.requestRaw(a,n),c&&c.message&&c.message.statusCode===u.Unauthorized){let e;for(let t of this.handlers)if(t.canHandleAuthentication(c)){e=t;break}return e?e.handleAuthentication(this,a,n):c}let t=this._maxRedirects;for(;c.message.statusCode&&m.includes(c.message.statusCode)&&this._allowRedirects&&t>0;){let o=c.message.headers.location;if(!o)break;let s=new URL(o);if(i.protocol===`https:`&&i.protocol!==s.protocol&&!this._allowRedirectDowngrade)throw Error(`Redirect from HTTPS to HTTP protocol. This downgrade is not allowed for security reasons. If you want to allow this behavior, set the allowRedirectDowngrade option to true.`);if(yield c.readBody(),s.hostname!==i.hostname)for(let e in r)e.toLowerCase()===`authorization`&&delete r[e];a=this._prepareRequest(e,s,r),c=yield this.requestRaw(a,n),t--}if(!c.message.statusCode||!h.includes(c.message.statusCode))return c;s+=1,s{function i(e,t){e?r(e):t?n(t):r(Error(`Unknown error`))}this.requestRawWithCallback(e,t,i)})})}requestRawWithCallback(e,t,n){typeof t==`string`&&(e.options.headers||(e.options.headers={}),e.options.headers[`Content-Length`]=Buffer.byteLength(t,`utf8`));let r=!1;function i(e,t){r||(r=!0,n(e,t))}let a=e.httpModule.request(e.options,e=>{i(void 0,new v(e))}),o;a.on(`socket`,e=>{o=e}),a.setTimeout(this._socketTimeout||3*6e4,()=>{o&&o.end(),i(Error(`Request timeout: ${e.options.path}`))}),a.on(`error`,function(e){i(e)}),t&&typeof t==`string`&&a.write(t,`utf8`),t&&typeof t!=`string`?(t.on(`close`,function(){a.end()}),t.pipe(a)):a.end()}getAgent(e){let t=new URL(e);return this._getAgent(t)}getAgentDispatcher(e){let t=new URL(e),n=s.getProxyUrl(t);if(n&&n.hostname)return this._getProxyAgentDispatcher(t,n)}_prepareRequest(e,t,n){let r={};r.parsedUrl=t;let i=r.parsedUrl.protocol===`https:`;r.httpModule=i?o:a;let s=i?443:80;if(r.options={},r.options.host=r.parsedUrl.hostname,r.options.port=r.parsedUrl.port?parseInt(r.parsedUrl.port):s,r.options.path=(r.parsedUrl.pathname||``)+(r.parsedUrl.search||``),r.options.method=e,r.options.headers=this._mergeHeaders(n),this.userAgent!=null&&(r.options.headers[`user-agent`]=this.userAgent),r.options.agent=this._getAgent(r.parsedUrl),this.handlers)for(let e of this.handlers)e.prepareRequest(r.options);return r}_mergeHeaders(e){return this.requestOptions&&this.requestOptions.headers?Object.assign({},b(this.requestOptions.headers),b(e||{})):b(e||{})}_getExistingOrDefaultHeader(e,t,n){let r;return this.requestOptions&&this.requestOptions.headers&&(r=b(this.requestOptions.headers)[t]),e[t]||r||n}_getAgent(e){let t,n=s.getProxyUrl(e),r=n&&n.hostname;if(this._keepAlive&&r&&(t=this._proxyAgent),r||(t=this._agent),t)return t;let i=e.protocol===`https:`,l=100;if(this.requestOptions&&(l=this.requestOptions.maxSockets||a.globalAgent.maxSockets),n&&n.hostname){let e={maxSockets:l,keepAlive:this._keepAlive,proxy:Object.assign(Object.assign({},(n.username||n.password)&&{proxyAuth:`${n.username}:${n.password}`}),{host:n.hostname,port:n.port})},r,a=n.protocol===`https:`;r=i?a?c.httpsOverHttps:c.httpsOverHttp:a?c.httpOverHttps:c.httpOverHttp,t=r(e),this._proxyAgent=t}if(!t){let e={keepAlive:this._keepAlive,maxSockets:l};t=i?new o.Agent(e):new a.Agent(e),this._agent=t}return i&&this._ignoreSslError&&(t.options=Object.assign(t.options||{},{rejectUnauthorized:!1})),t}_getProxyAgentDispatcher(e,t){let n;if(this._keepAlive&&(n=this._proxyAgentDispatcher),n)return n;let r=e.protocol===`https:`;return n=new l.ProxyAgent(Object.assign({uri:t.href,pipelining:this._keepAlive?1:0},(t.username||t.password)&&{token:`Basic ${Buffer.from(`${t.username}:${t.password}`).toString(`base64`)}`})),this._proxyAgentDispatcher=n,r&&this._ignoreSslError&&(n.options=Object.assign(n.options.requestTls||{},{rejectUnauthorized:!1})),n}_performExponentialBackoff(e){return i(this,void 0,void 0,function*(){e=Math.min(10,e);let t=5*2**e;return new Promise(e=>setTimeout(()=>e(),t))})}_processResponse(e,t){return i(this,void 0,void 0,function*(){return new Promise((n,r)=>i(this,void 0,void 0,function*(){let i=e.message.statusCode||0,a={statusCode:i,result:null,headers:{}};i===u.NotFound&&n(a);function o(e,t){if(typeof t==`string`){let e=new Date(t);if(!isNaN(e.valueOf()))return e}return t}let s,c;try{c=yield e.readBody(),c&&c.length>0&&(s=t&&t.deserializeDates?JSON.parse(c,o):JSON.parse(c),a.result=s),a.headers=e.message.headers}catch{}if(i>299){let e;e=s&&s.message?s.message:c&&c.length>0?c:`Failed request: (${i})`;let t=new _(e,i);t.result=a.result,r(t)}else n(a)}))})}};let b=e=>Object.keys(e).reduce((t,n)=>(t[n.toLowerCase()]=e[n],t),{})})),Dt=s((e=>{var t=e&&e.__awaiter||function(e,t,n,r){function i(e){return e instanceof n?e:new n(function(t){t(e)})}return new(n||=Promise)(function(n,a){function o(e){try{c(r.next(e))}catch(e){a(e)}}function s(e){try{c(r.throw(e))}catch(e){a(e)}}function c(e){e.done?n(e.value):i(e.value).then(o,s)}c((r=r.apply(e,t||[])).next())})};Object.defineProperty(e,`__esModule`,{value:!0}),e.PersonalAccessTokenCredentialHandler=e.BearerCredentialHandler=e.BasicCredentialHandler=void 0,e.BasicCredentialHandler=class{constructor(e,t){this.username=e,this.password=t}prepareRequest(e){if(!e.headers)throw Error(`The request has no headers`);e.headers.Authorization=`Basic ${Buffer.from(`${this.username}:${this.password}`).toString(`base64`)}`}canHandleAuthentication(){return!1}handleAuthentication(){return t(this,void 0,void 0,function*(){throw Error(`not implemented`)})}},e.BearerCredentialHandler=class{constructor(e){this.token=e}prepareRequest(e){if(!e.headers)throw Error(`The request has no headers`);e.headers.Authorization=`Bearer ${this.token}`}canHandleAuthentication(){return!1}handleAuthentication(){return t(this,void 0,void 0,function*(){throw Error(`not implemented`)})}},e.PersonalAccessTokenCredentialHandler=class{constructor(e){this.token=e}prepareRequest(e){if(!e.headers)throw Error(`The request has no headers`);e.headers.Authorization=`Basic ${Buffer.from(`PAT:${this.token}`).toString(`base64`)}`}canHandleAuthentication(){return!1}handleAuthentication(){return t(this,void 0,void 0,function*(){throw Error(`not implemented`)})}}})),Ot=s((e=>{var t=e&&e.__awaiter||function(e,t,n,r){function i(e){return e instanceof n?e:new n(function(t){t(e)})}return new(n||=Promise)(function(n,a){function o(e){try{c(r.next(e))}catch(e){a(e)}}function s(e){try{c(r.throw(e))}catch(e){a(e)}}function c(e){e.done?n(e.value):i(e.value).then(o,s)}c((r=r.apply(e,t||[])).next())})};Object.defineProperty(e,`__esModule`,{value:!0}),e.OidcClient=void 0;let n=Et(),r=Dt(),i=It();e.OidcClient=class e{static createHttpClient(t=!0,i=10){let a={allowRetries:t,maxRetries:i};return new n.HttpClient(`actions/oidc-client`,[new r.BearerCredentialHandler(e.getRequestToken())],a)}static getRequestToken(){let e=process.env.ACTIONS_ID_TOKEN_REQUEST_TOKEN;if(!e)throw Error(`Unable to get ACTIONS_ID_TOKEN_REQUEST_TOKEN env variable`);return e}static getIDTokenUrl(){let e=process.env.ACTIONS_ID_TOKEN_REQUEST_URL;if(!e)throw Error(`Unable to get ACTIONS_ID_TOKEN_REQUEST_URL env variable`);return e}static getCall(n){return t(this,void 0,void 0,function*(){let t=(yield e.createHttpClient().getJson(n).catch(e=>{throw Error(`Failed to get ID Token. \n + Error Code : ${e.statusCode}\n + Error Message: ${e.message}`)})).result?.value;if(!t)throw Error(`Response json body do not have ID Token field`);return t})}static getIDToken(n){return t(this,void 0,void 0,function*(){try{let t=e.getIDTokenUrl();n&&(t=`${t}&audience=${encodeURIComponent(n)}`),(0,i.debug)(`ID token url is ${t}`);let r=yield e.getCall(t);return(0,i.setSecret)(r),r}catch(e){throw Error(`Error message: ${e.message}`)}})}}})),kt=s((e=>{var t=e&&e.__awaiter||function(e,t,n,r){function i(e){return e instanceof n?e:new n(function(t){t(e)})}return new(n||=Promise)(function(n,a){function o(e){try{c(r.next(e))}catch(e){a(e)}}function s(e){try{c(r.throw(e))}catch(e){a(e)}}function c(e){e.done?n(e.value):i(e.value).then(o,s)}c((r=r.apply(e,t||[])).next())})};Object.defineProperty(e,`__esModule`,{value:!0}),e.summary=e.markdownSummary=e.SUMMARY_DOCS_URL=e.SUMMARY_ENV_VAR=void 0;let n=require(`os`),r=require(`fs`),{access:i,appendFile:a,writeFile:o}=r.promises;e.SUMMARY_ENV_VAR=`GITHUB_STEP_SUMMARY`,e.SUMMARY_DOCS_URL=`https://docs.github.com/actions/using-workflows/workflow-commands-for-github-actions#adding-a-job-summary`;let s=new class{constructor(){this._buffer=``}filePath(){return t(this,void 0,void 0,function*(){if(this._filePath)return this._filePath;let t=process.env[e.SUMMARY_ENV_VAR];if(!t)throw Error(`Unable to find environment variable for $${e.SUMMARY_ENV_VAR}. Check if your runtime environment supports job summaries.`);try{yield i(t,r.constants.R_OK|r.constants.W_OK)}catch{throw Error(`Unable to access summary file: '${t}'. Check if the file has correct read/write permissions.`)}return this._filePath=t,this._filePath})}wrap(e,t,n={}){let r=Object.entries(n).map(([e,t])=>` ${e}="${t}"`).join(``);return t?`<${e}${r}>${t}`:`<${e}${r}>`}write(e){return t(this,void 0,void 0,function*(){let t=!!e?.overwrite,n=yield this.filePath();return yield(t?o:a)(n,this._buffer,{encoding:`utf8`}),this.emptyBuffer()})}clear(){return t(this,void 0,void 0,function*(){return this.emptyBuffer().write({overwrite:!0})})}stringify(){return this._buffer}isEmptyBuffer(){return this._buffer.length===0}emptyBuffer(){return this._buffer=``,this}addRaw(e,t=!1){return this._buffer+=e,t?this.addEOL():this}addEOL(){return this.addRaw(n.EOL)}addCodeBlock(e,t){let n=Object.assign({},t&&{lang:t}),r=this.wrap(`pre`,this.wrap(`code`,e),n);return this.addRaw(r).addEOL()}addList(e,t=!1){let n=t?`ol`:`ul`,r=e.map(e=>this.wrap(`li`,e)).join(``),i=this.wrap(n,r);return this.addRaw(i).addEOL()}addTable(e){let t=e.map(e=>{let t=e.map(e=>{if(typeof e==`string`)return this.wrap(`td`,e);let{header:t,data:n,colspan:r,rowspan:i}=e,a=t?`th`:`td`,o=Object.assign(Object.assign({},r&&{colspan:r}),i&&{rowspan:i});return this.wrap(a,n,o)}).join(``);return this.wrap(`tr`,t)}).join(``),n=this.wrap(`table`,t);return this.addRaw(n).addEOL()}addDetails(e,t){let n=this.wrap(`details`,this.wrap(`summary`,e)+t);return this.addRaw(n).addEOL()}addImage(e,t,n){let{width:r,height:i}=n||{},a=Object.assign(Object.assign({},r&&{width:r}),i&&{height:i}),o=this.wrap(`img`,null,Object.assign({src:e,alt:t},a));return this.addRaw(o).addEOL()}addHeading(e,t){let n=`h${t}`,r=[`h1`,`h2`,`h3`,`h4`,`h5`,`h6`].includes(n)?n:`h1`,i=this.wrap(r,e);return this.addRaw(i).addEOL()}addSeparator(){let e=this.wrap(`hr`,null);return this.addRaw(e).addEOL()}addBreak(){let e=this.wrap(`br`,null);return this.addRaw(e).addEOL()}addQuote(e,t){let n=Object.assign({},t&&{cite:t}),r=this.wrap(`blockquote`,e,n);return this.addRaw(r).addEOL()}addLink(e,t){let n=this.wrap(`a`,e,{href:t});return this.addRaw(n).addEOL()}};e.markdownSummary=s,e.summary=s})),At=s((e=>{var t=e&&e.__createBinding||(Object.create?(function(e,t,n,r){r===void 0&&(r=n);var i=Object.getOwnPropertyDescriptor(t,n);(!i||(`get`in i?!t.__esModule:i.writable||i.configurable))&&(i={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,r,i)}):(function(e,t,n,r){r===void 0&&(r=n),e[r]=t[n]})),n=e&&e.__setModuleDefault||(Object.create?(function(e,t){Object.defineProperty(e,`default`,{enumerable:!0,value:t})}):function(e,t){e.default=t}),r=e&&e.__importStar||function(e){if(e&&e.__esModule)return e;var r={};if(e!=null)for(var i in e)i!==`default`&&Object.prototype.hasOwnProperty.call(e,i)&&t(r,e,i);return n(r,e),r};Object.defineProperty(e,`__esModule`,{value:!0}),e.toPlatformPath=e.toWin32Path=e.toPosixPath=void 0;let i=r(require(`path`));function a(e){return e.replace(/[\\]/g,`/`)}e.toPosixPath=a;function o(e){return e.replace(/[/]/g,`\\`)}e.toWin32Path=o;function s(e){return e.replace(/[/\\]/g,i.sep)}e.toPlatformPath=s})),jt=s((e=>{var t=e&&e.__createBinding||(Object.create?(function(e,t,n,r){r===void 0&&(r=n),Object.defineProperty(e,r,{enumerable:!0,get:function(){return t[n]}})}):(function(e,t,n,r){r===void 0&&(r=n),e[r]=t[n]})),n=e&&e.__setModuleDefault||(Object.create?(function(e,t){Object.defineProperty(e,`default`,{enumerable:!0,value:t})}):function(e,t){e.default=t}),r=e&&e.__importStar||function(e){if(e&&e.__esModule)return e;var r={};if(e!=null)for(var i in e)i!==`default`&&Object.hasOwnProperty.call(e,i)&&t(r,e,i);return n(r,e),r},i=e&&e.__awaiter||function(e,t,n,r){function i(e){return e instanceof n?e:new n(function(t){t(e)})}return new(n||=Promise)(function(n,a){function o(e){try{c(r.next(e))}catch(e){a(e)}}function s(e){try{c(r.throw(e))}catch(e){a(e)}}function c(e){e.done?n(e.value):i(e.value).then(o,s)}c((r=r.apply(e,t||[])).next())})},a;Object.defineProperty(e,`__esModule`,{value:!0}),e.getCmdPath=e.tryGetExecutablePath=e.isRooted=e.isDirectory=e.exists=e.READONLY=e.UV_FS_O_EXLOCK=e.IS_WINDOWS=e.unlink=e.symlink=e.stat=e.rmdir=e.rm=e.rename=e.readlink=e.readdir=e.open=e.mkdir=e.lstat=e.copyFile=e.chmod=void 0;let o=r(require(`fs`)),s=r(require(`path`));a=o.promises,e.chmod=a.chmod,e.copyFile=a.copyFile,e.lstat=a.lstat,e.mkdir=a.mkdir,e.open=a.open,e.readdir=a.readdir,e.readlink=a.readlink,e.rename=a.rename,e.rm=a.rm,e.rmdir=a.rmdir,e.stat=a.stat,e.symlink=a.symlink,e.unlink=a.unlink,e.IS_WINDOWS=process.platform===`win32`,e.UV_FS_O_EXLOCK=268435456,e.READONLY=o.constants.O_RDONLY;function c(t){return i(this,void 0,void 0,function*(){try{yield e.stat(t)}catch(e){if(e.code===`ENOENT`)return!1;throw e}return!0})}e.exists=c;function l(t,n=!1){return i(this,void 0,void 0,function*(){return(n?yield e.stat(t):yield e.lstat(t)).isDirectory()})}e.isDirectory=l;function u(t){if(t=f(t),!t)throw Error(`isRooted() parameter "p" cannot be empty`);return e.IS_WINDOWS?t.startsWith(`\\`)||/^[A-Z]:/i.test(t):t.startsWith(`/`)}e.isRooted=u;function d(t,n){return i(this,void 0,void 0,function*(){let r;try{r=yield e.stat(t)}catch(e){e.code!==`ENOENT`&&console.log(`Unexpected error attempting to determine if executable file exists '${t}': ${e}`)}if(r&&r.isFile()){if(e.IS_WINDOWS){let e=s.extname(t).toUpperCase();if(n.some(t=>t.toUpperCase()===e))return t}else if(p(r))return t}let i=t;for(let a of n){t=i+a,r=void 0;try{r=yield e.stat(t)}catch(e){e.code!==`ENOENT`&&console.log(`Unexpected error attempting to determine if executable file exists '${t}': ${e}`)}if(r&&r.isFile()){if(e.IS_WINDOWS){try{let n=s.dirname(t),r=s.basename(t).toUpperCase();for(let i of yield e.readdir(n))if(r===i.toUpperCase()){t=s.join(n,i);break}}catch(e){console.log(`Unexpected error attempting to determine the actual case of the file '${t}': ${e}`)}return t}else if(p(r))return t}}return``})}e.tryGetExecutablePath=d;function f(t){return t||=``,e.IS_WINDOWS?(t=t.replace(/\//g,`\\`),t.replace(/\\\\+/g,`\\`)):t.replace(/\/\/+/g,`/`)}function p(e){return(e.mode&1)>0||(e.mode&8)>0&&e.gid===process.getgid()||(e.mode&64)>0&&e.uid===process.getuid()}function m(){return process.env.COMSPEC??`cmd.exe`}e.getCmdPath=m})),Mt=s((e=>{var t=e&&e.__createBinding||(Object.create?(function(e,t,n,r){r===void 0&&(r=n),Object.defineProperty(e,r,{enumerable:!0,get:function(){return t[n]}})}):(function(e,t,n,r){r===void 0&&(r=n),e[r]=t[n]})),n=e&&e.__setModuleDefault||(Object.create?(function(e,t){Object.defineProperty(e,`default`,{enumerable:!0,value:t})}):function(e,t){e.default=t}),r=e&&e.__importStar||function(e){if(e&&e.__esModule)return e;var r={};if(e!=null)for(var i in e)i!==`default`&&Object.hasOwnProperty.call(e,i)&&t(r,e,i);return n(r,e),r},i=e&&e.__awaiter||function(e,t,n,r){function i(e){return e instanceof n?e:new n(function(t){t(e)})}return new(n||=Promise)(function(n,a){function o(e){try{c(r.next(e))}catch(e){a(e)}}function s(e){try{c(r.throw(e))}catch(e){a(e)}}function c(e){e.done?n(e.value):i(e.value).then(o,s)}c((r=r.apply(e,t||[])).next())})};Object.defineProperty(e,`__esModule`,{value:!0}),e.findInPath=e.which=e.mkdirP=e.rmRF=e.mv=e.cp=void 0;let a=require(`assert`),o=r(require(`path`)),s=r(jt());function c(e,t,n={}){return i(this,void 0,void 0,function*(){let{force:r,recursive:i,copySourceDirectory:a}=m(n),c=(yield s.exists(t))?yield s.stat(t):null;if(c&&c.isFile()&&!r)return;let l=c&&c.isDirectory()&&a?o.join(t,o.basename(e)):t;if(!(yield s.exists(e)))throw Error(`no such file or directory: ${e}`);if((yield s.stat(e)).isDirectory())if(i)yield h(e,l,0,r);else throw Error(`Failed to copy. ${e} is a directory, but tried to copy without recursive flag.`);else{if(o.relative(e,l)===``)throw Error(`'${l}' and '${e}' are the same file`);yield g(e,l,r)}})}e.cp=c;function l(e,t,n={}){return i(this,void 0,void 0,function*(){if(yield s.exists(t)){let r=!0;if((yield s.isDirectory(t))&&(t=o.join(t,o.basename(e)),r=yield s.exists(t)),r)if(n.force==null||n.force)yield u(t);else throw Error(`Destination already exists`)}yield d(o.dirname(t)),yield s.rename(e,t)})}e.mv=l;function u(e){return i(this,void 0,void 0,function*(){if(s.IS_WINDOWS&&/[*"<>|]/.test(e))throw Error('File path must not contain `*`, `"`, `<`, `>` or `|` on Windows');try{yield s.rm(e,{force:!0,maxRetries:3,recursive:!0,retryDelay:300})}catch(e){throw Error(`File was unable to be removed ${e}`)}})}e.rmRF=u;function d(e){return i(this,void 0,void 0,function*(){a.ok(e,`a path argument must be provided`),yield s.mkdir(e,{recursive:!0})})}e.mkdirP=d;function f(e,t){return i(this,void 0,void 0,function*(){if(!e)throw Error(`parameter 'tool' is required`);if(t){let t=yield f(e,!1);if(!t)throw s.IS_WINDOWS?Error(`Unable to locate executable file: ${e}. Please verify either the file path exists or the file can be found within a directory specified by the PATH environment variable. Also verify the file has a valid extension for an executable file.`):Error(`Unable to locate executable file: ${e}. Please verify either the file path exists or the file can be found within a directory specified by the PATH environment variable. Also check the file mode to verify the file is executable.`);return t}let n=yield p(e);return n&&n.length>0?n[0]:``})}e.which=f;function p(e){return i(this,void 0,void 0,function*(){if(!e)throw Error(`parameter 'tool' is required`);let t=[];if(s.IS_WINDOWS&&process.env.PATHEXT)for(let e of process.env.PATHEXT.split(o.delimiter))e&&t.push(e);if(s.isRooted(e)){let n=yield s.tryGetExecutablePath(e,t);return n?[n]:[]}if(e.includes(o.sep))return[];let n=[];if(process.env.PATH)for(let e of process.env.PATH.split(o.delimiter))e&&n.push(e);let r=[];for(let i of n){let n=yield s.tryGetExecutablePath(o.join(i,e),t);n&&r.push(n)}return r})}e.findInPath=p;function m(e){return{force:e.force==null?!0:e.force,recursive:!!e.recursive,copySourceDirectory:e.copySourceDirectory==null?!0:!!e.copySourceDirectory}}function h(e,t,n,r){return i(this,void 0,void 0,function*(){if(n>=255)return;n++,yield d(t);let i=yield s.readdir(e);for(let a of i){let i=`${e}/${a}`,o=`${t}/${a}`;(yield s.lstat(i)).isDirectory()?yield h(i,o,n,r):yield g(i,o,r)}yield s.chmod(t,(yield s.stat(e)).mode)})}function g(e,t,n){return i(this,void 0,void 0,function*(){if((yield s.lstat(e)).isSymbolicLink()){try{yield s.lstat(t),yield s.unlink(t)}catch(e){e.code===`EPERM`&&(yield s.chmod(t,`0666`),yield s.unlink(t))}let n=yield s.readlink(e);yield s.symlink(n,t,s.IS_WINDOWS?`junction`:null)}else (!(yield s.exists(t))||n)&&(yield s.copyFile(e,t))})}})),Nt=s((e=>{var t=e&&e.__createBinding||(Object.create?(function(e,t,n,r){r===void 0&&(r=n),Object.defineProperty(e,r,{enumerable:!0,get:function(){return t[n]}})}):(function(e,t,n,r){r===void 0&&(r=n),e[r]=t[n]})),n=e&&e.__setModuleDefault||(Object.create?(function(e,t){Object.defineProperty(e,`default`,{enumerable:!0,value:t})}):function(e,t){e.default=t}),r=e&&e.__importStar||function(e){if(e&&e.__esModule)return e;var r={};if(e!=null)for(var i in e)i!==`default`&&Object.hasOwnProperty.call(e,i)&&t(r,e,i);return n(r,e),r},i=e&&e.__awaiter||function(e,t,n,r){function i(e){return e instanceof n?e:new n(function(t){t(e)})}return new(n||=Promise)(function(n,a){function o(e){try{c(r.next(e))}catch(e){a(e)}}function s(e){try{c(r.throw(e))}catch(e){a(e)}}function c(e){e.done?n(e.value):i(e.value).then(o,s)}c((r=r.apply(e,t||[])).next())})};Object.defineProperty(e,`__esModule`,{value:!0}),e.argStringToArray=e.ToolRunner=void 0;let a=r(require(`os`)),o=r(require(`events`)),s=r(require(`child_process`)),c=r(require(`path`)),l=r(Mt()),u=r(jt()),d=require(`timers`),f=process.platform===`win32`;e.ToolRunner=class extends o.EventEmitter{constructor(e,t,n){if(super(),!e)throw Error(`Parameter 'toolPath' cannot be null or empty.`);this.toolPath=e,this.args=t||[],this.options=n||{}}_debug(e){this.options.listeners&&this.options.listeners.debug&&this.options.listeners.debug(e)}_getCommandString(e,t){let n=this._getSpawnFileName(),r=this._getSpawnArgs(e),i=t?``:`[command]`;if(f)if(this._isCmdFile()){i+=n;for(let e of r)i+=` ${e}`}else if(e.windowsVerbatimArguments){i+=`"${n}"`;for(let e of r)i+=` ${e}`}else{i+=this._windowsQuoteCmdArg(n);for(let e of r)i+=` ${this._windowsQuoteCmdArg(e)}`}else{i+=n;for(let e of r)i+=` ${e}`}return i}_processLineBuffer(e,t,n){try{let r=t+e.toString(),i=r.indexOf(a.EOL);for(;i>-1;)n(r.substring(0,i)),r=r.substring(i+a.EOL.length),i=r.indexOf(a.EOL);return r}catch(e){return this._debug(`error processing line. Failed with error ${e}`),``}}_getSpawnFileName(){return f&&this._isCmdFile()?process.env.COMSPEC||`cmd.exe`:this.toolPath}_getSpawnArgs(e){if(f&&this._isCmdFile()){let t=`/D /S /C "${this._windowsQuoteCmdArg(this.toolPath)}`;for(let n of this.args)t+=` `,t+=e.windowsVerbatimArguments?n:this._windowsQuoteCmdArg(n);return t+=`"`,[t]}return this.args}_endsWith(e,t){return e.endsWith(t)}_isCmdFile(){let e=this.toolPath.toUpperCase();return this._endsWith(e,`.CMD`)||this._endsWith(e,`.BAT`)}_windowsQuoteCmdArg(e){if(!this._isCmdFile())return this._uvQuoteCmdArg(e);if(!e)return`""`;let t=[` `,` `,`&`,`(`,`)`,`[`,`]`,`{`,`}`,`^`,`=`,`;`,`!`,`'`,`+`,`,`,"`",`~`,`|`,`<`,`>`,`"`],n=!1;for(let r of e)if(t.some(e=>e===r)){n=!0;break}if(!n)return e;let r=`"`,i=!0;for(let t=e.length;t>0;t--)r+=e[t-1],i&&e[t-1]===`\\`?r+=`\\`:e[t-1]===`"`?(i=!0,r+=`"`):i=!1;return r+=`"`,r.split(``).reverse().join(``)}_uvQuoteCmdArg(e){if(!e)return`""`;if(!e.includes(` `)&&!e.includes(` `)&&!e.includes(`"`))return e;if(!e.includes(`"`)&&!e.includes(`\\`))return`"${e}"`;let t=`"`,n=!0;for(let r=e.length;r>0;r--)t+=e[r-1],n&&e[r-1]===`\\`?t+=`\\`:e[r-1]===`"`?(n=!0,t+=`\\`):n=!1;return t+=`"`,t.split(``).reverse().join(``)}_cloneExecOptions(e){e||={};let t={cwd:e.cwd||process.cwd(),env:e.env||process.env,silent:e.silent||!1,windowsVerbatimArguments:e.windowsVerbatimArguments||!1,failOnStdErr:e.failOnStdErr||!1,ignoreReturnCode:e.ignoreReturnCode||!1,delay:e.delay||1e4};return t.outStream=e.outStream||process.stdout,t.errStream=e.errStream||process.stderr,t}_getSpawnOptions(e,t){e||={};let n={};return n.cwd=e.cwd,n.env=e.env,n.windowsVerbatimArguments=e.windowsVerbatimArguments||this._isCmdFile(),e.windowsVerbatimArguments&&(n.argv0=`"${t}"`),n}exec(){return i(this,void 0,void 0,function*(){return!u.isRooted(this.toolPath)&&(this.toolPath.includes(`/`)||f&&this.toolPath.includes(`\\`))&&(this.toolPath=c.resolve(process.cwd(),this.options.cwd||process.cwd(),this.toolPath)),this.toolPath=yield l.which(this.toolPath,!0),new Promise((e,t)=>i(this,void 0,void 0,function*(){this._debug(`exec tool: ${this.toolPath}`),this._debug(`arguments:`);for(let e of this.args)this._debug(` ${e}`);let n=this._cloneExecOptions(this.options);!n.silent&&n.outStream&&n.outStream.write(this._getCommandString(n)+a.EOL);let r=new m(n,this.toolPath);if(r.on(`debug`,e=>{this._debug(e)}),this.options.cwd&&!(yield u.exists(this.options.cwd)))return t(Error(`The cwd: ${this.options.cwd} does not exist!`));let i=this._getSpawnFileName(),o=s.spawn(i,this._getSpawnArgs(n),this._getSpawnOptions(this.options,i)),c=``;o.stdout&&o.stdout.on(`data`,e=>{this.options.listeners&&this.options.listeners.stdout&&this.options.listeners.stdout(e),!n.silent&&n.outStream&&n.outStream.write(e),c=this._processLineBuffer(e,c,e=>{this.options.listeners&&this.options.listeners.stdline&&this.options.listeners.stdline(e)})});let l=``;if(o.stderr&&o.stderr.on(`data`,e=>{r.processStderr=!0,this.options.listeners&&this.options.listeners.stderr&&this.options.listeners.stderr(e),!n.silent&&n.errStream&&n.outStream&&(n.failOnStdErr?n.errStream:n.outStream).write(e),l=this._processLineBuffer(e,l,e=>{this.options.listeners&&this.options.listeners.errline&&this.options.listeners.errline(e)})}),o.on(`error`,e=>{r.processError=e.message,r.processExited=!0,r.processClosed=!0,r.CheckComplete()}),o.on(`exit`,e=>{r.processExitCode=e,r.processExited=!0,this._debug(`Exit code ${e} received from tool '${this.toolPath}'`),r.CheckComplete()}),o.on(`close`,e=>{r.processExitCode=e,r.processExited=!0,r.processClosed=!0,this._debug(`STDIO streams have closed for tool '${this.toolPath}'`),r.CheckComplete()}),r.on(`done`,(n,r)=>{c.length>0&&this.emit(`stdline`,c),l.length>0&&this.emit(`errline`,l),o.removeAllListeners(),n?t(n):e(r)}),this.options.input){if(!o.stdin)throw Error(`child process missing stdin`);o.stdin.end(this.options.input)}}))})}};function p(e){let t=[],n=!1,r=!1,i=``;function a(e){r&&e!==`"`&&(i+=`\\`),i+=e,r=!1}for(let o=0;o0&&(t.push(i),i=``);continue}a(s)}return i.length>0&&t.push(i.trim()),t}e.argStringToArray=p;var m=class e extends o.EventEmitter{constructor(e,t){if(super(),this.processClosed=!1,this.processError=``,this.processExitCode=0,this.processExited=!1,this.processStderr=!1,this.delay=1e4,this.done=!1,this.timeout=null,!t)throw Error(`toolPath must not be empty`);this.options=e,this.toolPath=t,e.delay&&(this.delay=e.delay)}CheckComplete(){this.done||(this.processClosed?this._setResult():this.processExited&&(this.timeout=d.setTimeout(e.HandleTimeout,this.delay,this)))}_debug(e){this.emit(`debug`,e)}_setResult(){let e;this.processExited&&(this.processError?e=Error(`There was an error when attempting to execute the process '${this.toolPath}'. This may indicate the process failed to start. Error: ${this.processError}`):this.processExitCode!==0&&!this.options.ignoreReturnCode?e=Error(`The process '${this.toolPath}' failed with exit code ${this.processExitCode}`):this.processStderr&&this.options.failOnStdErr&&(e=Error(`The process '${this.toolPath}' failed because one or more lines were written to the STDERR stream`))),this.timeout&&=(clearTimeout(this.timeout),null),this.done=!0,this.emit(`done`,e,this.processExitCode)}static HandleTimeout(e){if(!e.done){if(!e.processClosed&&e.processExited){let t=`The STDIO streams did not close within ${e.delay/1e3} seconds of the exit event from process '${e.toolPath}'. This may indicate a child process inherited the STDIO streams and has not yet exited.`;e._debug(t)}e._setResult()}}}})),Pt=s((e=>{var t=e&&e.__createBinding||(Object.create?(function(e,t,n,r){r===void 0&&(r=n),Object.defineProperty(e,r,{enumerable:!0,get:function(){return t[n]}})}):(function(e,t,n,r){r===void 0&&(r=n),e[r]=t[n]})),n=e&&e.__setModuleDefault||(Object.create?(function(e,t){Object.defineProperty(e,`default`,{enumerable:!0,value:t})}):function(e,t){e.default=t}),r=e&&e.__importStar||function(e){if(e&&e.__esModule)return e;var r={};if(e!=null)for(var i in e)i!==`default`&&Object.hasOwnProperty.call(e,i)&&t(r,e,i);return n(r,e),r},i=e&&e.__awaiter||function(e,t,n,r){function i(e){return e instanceof n?e:new n(function(t){t(e)})}return new(n||=Promise)(function(n,a){function o(e){try{c(r.next(e))}catch(e){a(e)}}function s(e){try{c(r.throw(e))}catch(e){a(e)}}function c(e){e.done?n(e.value):i(e.value).then(o,s)}c((r=r.apply(e,t||[])).next())})};Object.defineProperty(e,`__esModule`,{value:!0}),e.getExecOutput=e.exec=void 0;let a=require(`string_decoder`),o=r(Nt());function s(e,t,n){return i(this,void 0,void 0,function*(){let r=o.argStringToArray(e);if(r.length===0)throw Error(`Parameter 'commandLine' cannot be null or empty.`);let i=r[0];return t=r.slice(1).concat(t||[]),new o.ToolRunner(i,t,n).exec()})}e.exec=s;function c(e,t,n){return i(this,void 0,void 0,function*(){let r=``,i=``,o=new a.StringDecoder(`utf8`),c=new a.StringDecoder(`utf8`),l=n?.listeners?.stdout,u=n?.listeners?.stderr,d=Object.assign(Object.assign({},n?.listeners),{stdout:e=>{r+=o.write(e),l&&l(e)},stderr:e=>{i+=c.write(e),u&&u(e)}}),f=yield s(e,t,Object.assign(Object.assign({},n),{listeners:d}));return r+=o.end(),i+=c.end(),{exitCode:f,stdout:r,stderr:i}})}e.getExecOutput=c})),Ft=s((e=>{var t=e&&e.__createBinding||(Object.create?(function(e,t,n,r){r===void 0&&(r=n);var i=Object.getOwnPropertyDescriptor(t,n);(!i||(`get`in i?!t.__esModule:i.writable||i.configurable))&&(i={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,r,i)}):(function(e,t,n,r){r===void 0&&(r=n),e[r]=t[n]})),n=e&&e.__setModuleDefault||(Object.create?(function(e,t){Object.defineProperty(e,`default`,{enumerable:!0,value:t})}):function(e,t){e.default=t}),r=e&&e.__importStar||function(e){if(e&&e.__esModule)return e;var r={};if(e!=null)for(var i in e)i!==`default`&&Object.prototype.hasOwnProperty.call(e,i)&&t(r,e,i);return n(r,e),r},i=e&&e.__awaiter||function(e,t,n,r){function i(e){return e instanceof n?e:new n(function(t){t(e)})}return new(n||=Promise)(function(n,a){function o(e){try{c(r.next(e))}catch(e){a(e)}}function s(e){try{c(r.throw(e))}catch(e){a(e)}}function c(e){e.done?n(e.value):i(e.value).then(o,s)}c((r=r.apply(e,t||[])).next())})},a=e&&e.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(e,`__esModule`,{value:!0}),e.getDetails=e.isLinux=e.isMacOS=e.isWindows=e.arch=e.platform=void 0;let o=a(require(`os`)),s=r(Pt()),c=()=>i(void 0,void 0,void 0,function*(){let{stdout:e}=yield s.getExecOutput(`powershell -command "(Get-CimInstance -ClassName Win32_OperatingSystem).Version"`,void 0,{silent:!0}),{stdout:t}=yield s.getExecOutput(`powershell -command "(Get-CimInstance -ClassName Win32_OperatingSystem).Caption"`,void 0,{silent:!0});return{name:t.trim(),version:e.trim()}}),l=()=>i(void 0,void 0,void 0,function*(){let{stdout:e}=yield s.getExecOutput(`sw_vers`,void 0,{silent:!0}),t=e.match(/ProductVersion:\s*(.+)/)?.[1]??``;return{name:e.match(/ProductName:\s*(.+)/)?.[1]??``,version:t}}),u=()=>i(void 0,void 0,void 0,function*(){let{stdout:e}=yield s.getExecOutput(`lsb_release`,[`-i`,`-r`,`-s`],{silent:!0}),[t,n]=e.trim().split(` +`);return{name:t,version:n}});e.platform=o.default.platform(),e.arch=o.default.arch(),e.isWindows=e.platform===`win32`,e.isMacOS=e.platform===`darwin`,e.isLinux=e.platform===`linux`;function d(){return i(this,void 0,void 0,function*(){return Object.assign(Object.assign({},yield e.isWindows?c():e.isMacOS?l():u()),{platform:e.platform,arch:e.arch,isWindows:e.isWindows,isMacOS:e.isMacOS,isLinux:e.isLinux})})}e.getDetails=d})),It=s((e=>{var t=e&&e.__createBinding||(Object.create?(function(e,t,n,r){r===void 0&&(r=n);var i=Object.getOwnPropertyDescriptor(t,n);(!i||(`get`in i?!t.__esModule:i.writable||i.configurable))&&(i={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,r,i)}):(function(e,t,n,r){r===void 0&&(r=n),e[r]=t[n]})),n=e&&e.__setModuleDefault||(Object.create?(function(e,t){Object.defineProperty(e,`default`,{enumerable:!0,value:t})}):function(e,t){e.default=t}),r=e&&e.__importStar||function(e){if(e&&e.__esModule)return e;var r={};if(e!=null)for(var i in e)i!==`default`&&Object.prototype.hasOwnProperty.call(e,i)&&t(r,e,i);return n(r,e),r},i=e&&e.__awaiter||function(e,t,n,r){function i(e){return e instanceof n?e:new n(function(t){t(e)})}return new(n||=Promise)(function(n,a){function o(e){try{c(r.next(e))}catch(e){a(e)}}function s(e){try{c(r.throw(e))}catch(e){a(e)}}function c(e){e.done?n(e.value):i(e.value).then(o,s)}c((r=r.apply(e,t||[])).next())})};Object.defineProperty(e,`__esModule`,{value:!0}),e.platform=e.toPlatformPath=e.toWin32Path=e.toPosixPath=e.markdownSummary=e.summary=e.getIDToken=e.getState=e.saveState=e.group=e.endGroup=e.startGroup=e.info=e.notice=e.warning=e.error=e.debug=e.isDebug=e.setFailed=e.setCommandEcho=e.setOutput=e.getBooleanInput=e.getMultilineInput=e.getInput=e.addPath=e.setSecret=e.exportVariable=e.ExitCode=void 0;let a=C(),o=w(),s=S(),c=r(require(`os`)),l=r(require(`path`)),u=Ot();var d;(function(e){e[e.Success=0]=`Success`,e[e.Failure=1]=`Failure`})(d||(e.ExitCode=d={}));function f(e,t){let n=(0,s.toCommandValue)(t);if(process.env[e]=n,process.env.GITHUB_ENV)return(0,o.issueFileCommand)(`ENV`,(0,o.prepareKeyValueMessage)(e,t));(0,a.issueCommand)(`set-env`,{name:e},n)}e.exportVariable=f;function p(e){(0,a.issueCommand)(`add-mask`,{},e)}e.setSecret=p;function m(e){process.env.GITHUB_PATH?(0,o.issueFileCommand)(`PATH`,e):(0,a.issueCommand)(`add-path`,{},e),process.env.PATH=`${e}${l.delimiter}${process.env.PATH}`}e.addPath=m;function h(e,t){let n=process.env[`INPUT_${e.replace(/ /g,`_`).toUpperCase()}`]||``;if(t&&t.required&&!n)throw Error(`Input required and not supplied: ${e}`);return t&&t.trimWhitespace===!1?n:n.trim()}e.getInput=h;function g(e,t){let n=h(e,t).split(` +`).filter(e=>e!==``);return t&&t.trimWhitespace===!1?n:n.map(e=>e.trim())}e.getMultilineInput=g;function _(e,t){let n=[`true`,`True`,`TRUE`],r=[`false`,`False`,`FALSE`],i=h(e,t);if(n.includes(i))return!0;if(r.includes(i))return!1;throw TypeError(`Input does not meet YAML 1.2 "Core Schema" specification: ${e}\nSupport boolean input list: \`true | True | TRUE | false | False | FALSE\``)}e.getBooleanInput=_;function v(e,t){if(process.env.GITHUB_OUTPUT)return(0,o.issueFileCommand)(`OUTPUT`,(0,o.prepareKeyValueMessage)(e,t));process.stdout.write(c.EOL),(0,a.issueCommand)(`set-output`,{name:e},(0,s.toCommandValue)(t))}e.setOutput=v;function y(e){(0,a.issue)(`echo`,e?`on`:`off`)}e.setCommandEcho=y;function b(e){process.exitCode=d.Failure,E(e)}e.setFailed=b;function x(){return process.env.RUNNER_DEBUG===`1`}e.isDebug=x;function T(e){(0,a.issueCommand)(`debug`,{},e)}e.debug=T;function E(e,t={}){(0,a.issueCommand)(`error`,(0,s.toCommandProperties)(t),e instanceof Error?e.toString():e)}e.error=E;function D(e,t={}){(0,a.issueCommand)(`warning`,(0,s.toCommandProperties)(t),e instanceof Error?e.toString():e)}e.warning=D;function O(e,t={}){(0,a.issueCommand)(`notice`,(0,s.toCommandProperties)(t),e instanceof Error?e.toString():e)}e.notice=O;function k(e){process.stdout.write(e+c.EOL)}e.info=k;function A(e){(0,a.issue)(`group`,e)}e.startGroup=A;function j(){(0,a.issue)(`endgroup`)}e.endGroup=j;function M(e,t){return i(this,void 0,void 0,function*(){A(e);let n;try{n=yield t()}finally{j()}return n})}e.group=M;function N(e,t){if(process.env.GITHUB_STATE)return(0,o.issueFileCommand)(`STATE`,(0,o.prepareKeyValueMessage)(e,t));(0,a.issueCommand)(`save-state`,{name:e},(0,s.toCommandValue)(t))}e.saveState=N;function ee(e){return process.env[`STATE_${e}`]||``}e.getState=ee;function P(e){return i(this,void 0,void 0,function*(){return yield u.OidcClient.getIDToken(e)})}e.getIDToken=P;var F=kt();Object.defineProperty(e,`summary`,{enumerable:!0,get:function(){return F.summary}});var I=kt();Object.defineProperty(e,`markdownSummary`,{enumerable:!0,get:function(){return I.markdownSummary}});var L=At();Object.defineProperty(e,`toPosixPath`,{enumerable:!0,get:function(){return L.toPosixPath}}),Object.defineProperty(e,`toWin32Path`,{enumerable:!0,get:function(){return L.toWin32Path}}),Object.defineProperty(e,`toPlatformPath`,{enumerable:!0,get:function(){return L.toPlatformPath}}),e.platform=r(Ft())})),Lt=s((e=>{let t=Symbol.for(`yaml.alias`),n=Symbol.for(`yaml.document`),r=Symbol.for(`yaml.map`),i=Symbol.for(`yaml.pair`),a=Symbol.for(`yaml.scalar`),o=Symbol.for(`yaml.seq`),s=Symbol.for(`yaml.node.type`),c=e=>!!e&&typeof e==`object`&&e[s]===t,l=e=>!!e&&typeof e==`object`&&e[s]===n,u=e=>!!e&&typeof e==`object`&&e[s]===r,d=e=>!!e&&typeof e==`object`&&e[s]===i,f=e=>!!e&&typeof e==`object`&&e[s]===a,p=e=>!!e&&typeof e==`object`&&e[s]===o;function m(e){if(e&&typeof e==`object`)switch(e[s]){case r:case o:return!0}return!1}function h(e){if(e&&typeof e==`object`)switch(e[s]){case t:case r:case a:case o:return!0}return!1}e.ALIAS=t,e.DOC=n,e.MAP=r,e.NODE_TYPE=s,e.PAIR=i,e.SCALAR=a,e.SEQ=o,e.hasAnchor=e=>(f(e)||m(e))&&!!e.anchor,e.isAlias=c,e.isCollection=m,e.isDocument=l,e.isMap=u,e.isNode=h,e.isPair=d,e.isScalar=f,e.isSeq=p})),Rt=s((e=>{var t=Lt();let n=Symbol(`break visit`),r=Symbol(`skip children`),i=Symbol(`remove node`);function a(e,n){let r=l(n);t.isDocument(e)?o(null,e.contents,r,Object.freeze([e]))===i&&(e.contents=null):o(null,e,r,Object.freeze([]))}a.BREAK=n,a.SKIP=r,a.REMOVE=i;function o(e,r,a,s){let c=u(e,r,a,s);if(t.isNode(c)||t.isPair(c))return d(e,s,c),o(e,c,a,s);if(typeof c!=`symbol`){if(t.isCollection(r)){s=Object.freeze(s.concat(r));for(let e=0;e{var t=Lt(),n=Rt();let r={"!":`%21`,",":`%2C`,"[":`%5B`,"]":`%5D`,"{":`%7B`,"}":`%7D`},i=e=>e.replace(/[!,[\]{}]/g,e=>r[e]);var a=class e{constructor(t,n){this.docStart=null,this.docEnd=!1,this.yaml=Object.assign({},e.defaultYaml,t),this.tags=Object.assign({},e.defaultTags,n)}clone(){let t=new e(this.yaml,this.tags);return t.docStart=this.docStart,t}atDocument(){let t=new e(this.yaml,this.tags);switch(this.yaml.version){case`1.1`:this.atNextDocument=!0;break;case`1.2`:this.atNextDocument=!1,this.yaml={explicit:e.defaultYaml.explicit,version:`1.2`},this.tags=Object.assign({},e.defaultTags);break}return t}add(t,n){this.atNextDocument&&=(this.yaml={explicit:e.defaultYaml.explicit,version:`1.1`},this.tags=Object.assign({},e.defaultTags),!1);let r=t.trim().split(/[ \t]+/),i=r.shift();switch(i){case`%TAG`:{if(r.length!==2&&(n(0,`%TAG directive should contain exactly two parts`),r.length<2))return!1;let[e,t]=r;return this.tags[e]=t,!0}case`%YAML`:{if(this.yaml.explicit=!0,r.length!==1)return n(0,`%YAML directive should contain exactly one part`),!1;let[e]=r;if(e===`1.1`||e===`1.2`)return this.yaml.version=e,!0;{let t=/^\d+\.\d+$/.test(e);return n(6,`Unsupported YAML version ${e}`,t),!1}}default:return n(0,`Unknown directive ${i}`,!0),!1}}tagName(e,t){if(e===`!`)return`!`;if(e[0]!==`!`)return t(`Not a valid tag: ${e}`),null;if(e[1]===`<`){let n=e.slice(2,-1);return n===`!`||n===`!!`?(t(`Verbatim tags aren't resolved, so ${e} is invalid.`),null):(e[e.length-1]!==`>`&&t(`Verbatim tags must end with a >`),n)}let[,n,r]=e.match(/^(.*!)([^!]*)$/s);r||t(`The ${e} tag has no suffix`);let i=this.tags[n];if(i)try{return i+decodeURIComponent(r)}catch(e){return t(String(e)),null}return n===`!`?e:(t(`Could not resolve tag: ${e}`),null)}tagString(e){for(let[t,n]of Object.entries(this.tags))if(e.startsWith(n))return t+i(e.substring(n.length));return e[0]===`!`?e:`!<${e}>`}toString(e){let r=this.yaml.explicit?[`%YAML ${this.yaml.version||`1.2`}`]:[],i=Object.entries(this.tags),a;if(e&&i.length>0&&t.isNode(e.contents)){let r={};n.visit(e.contents,(e,n)=>{t.isNode(n)&&n.tag&&(r[n.tag]=!0)}),a=Object.keys(r)}else a=[];for(let[t,n]of i)t===`!!`&&n===`tag:yaml.org,2002:`||(!e||a.some(e=>e.startsWith(n)))&&r.push(`%TAG ${t} ${n}`);return r.join(` +`)}};a.defaultYaml={explicit:!1,version:`1.2`},a.defaultTags={"!!":`tag:yaml.org,2002:`},e.Directives=a})),zt=s((e=>{var t=Lt(),n=Rt();function r(e){if(/[\x00-\x19\s,[\]{}]/.test(e)){let t=`Anchor must not contain whitespace or control characters: ${JSON.stringify(e)}`;throw Error(t)}return!0}function i(e){let t=new Set;return n.visit(e,{Value(e,n){n.anchor&&t.add(n.anchor)}}),t}function a(e,t){for(let n=1;;++n){let r=`${e}${n}`;if(!t.has(r))return r}}function o(e,n){let r=[],o=new Map,s=null;return{onAnchor:t=>{r.push(t),s??=i(e);let o=a(n,s);return s.add(o),o},setAnchors:()=>{for(let e of r){let n=o.get(e);if(typeof n==`object`&&n.anchor&&(t.isScalar(n.node)||t.isCollection(n.node)))n.node.anchor=n.anchor;else{let t=Error(`Failed to resolve repeated object (this should not happen)`);throw t.source=e,t}}},sourceObjects:o}}e.anchorIsValid=r,e.anchorNames=i,e.createNodeAnchors=o,e.findNewAnchor=a})),Bt=s((e=>{function t(e,n,r,i){if(i&&typeof i==`object`)if(Array.isArray(i))for(let n=0,r=i.length;n{var t=Lt();function n(e,r,i){if(Array.isArray(e))return e.map((e,t)=>n(e,String(t),i));if(e&&typeof e.toJSON==`function`){if(!i||!t.hasAnchor(e))return e.toJSON(r,i);let n={aliasCount:0,count:1,res:void 0};i.anchors.set(e,n),i.onCreate=e=>{n.res=e,delete i.onCreate};let a=e.toJSON(r,i);return i.onCreate&&i.onCreate(a),a}return typeof e==`bigint`&&!i?.keep?Number(e):e}e.toJS=n})),Ht=s((e=>{var t=Bt(),n=Lt(),r=Vt();e.NodeBase=class{constructor(e){Object.defineProperty(this,n.NODE_TYPE,{value:e})}clone(){let e=Object.create(Object.getPrototypeOf(this),Object.getOwnPropertyDescriptors(this));return this.range&&(e.range=this.range.slice()),e}toJS(e,{mapAsMap:i,maxAliasCount:a,onAnchor:o,reviver:s}={}){if(!n.isDocument(e))throw TypeError(`A document argument is required`);let c={anchors:new Map,doc:e,keep:!0,mapAsMap:i===!0,mapKeyWarned:!1,maxAliasCount:typeof a==`number`?a:100},l=r.toJS(this,``,c);if(typeof o==`function`)for(let{count:e,res:t}of c.anchors.values())o(t,e);return typeof s==`function`?t.applyReviver(s,{"":l},``,l):l}}})),Ut=s((e=>{var t=zt(),n=Rt(),r=Lt(),i=Ht(),a=Vt(),o=class extends i.NodeBase{constructor(e){super(r.ALIAS),this.source=e,Object.defineProperty(this,`tag`,{set(){throw Error(`Alias nodes cannot have tags`)}})}resolve(e,t){let i;t?.aliasResolveCache?i=t.aliasResolveCache:(i=[],n.visit(e,{Node:(e,t)=>{(r.isAlias(t)||r.hasAnchor(t))&&i.push(t)}}),t&&(t.aliasResolveCache=i));let a;for(let e of i){if(e===this)break;e.anchor===this.source&&(a=e)}return a}toJSON(e,t){if(!t)return{source:this.source};let{anchors:n,doc:r,maxAliasCount:i}=t,o=this.resolve(r,t);if(!o){let e=`Unresolved alias (the anchor must be set before the alias): ${this.source}`;throw ReferenceError(e)}let c=n.get(o);if(c||=(a.toJS(o,null,t),n.get(o)),!c||c.res===void 0)throw ReferenceError(`This should not happen: Alias anchor was not resolved?`);if(i>=0&&(c.count+=1,c.aliasCount===0&&(c.aliasCount=s(r,o,n)),c.count*c.aliasCount>i))throw ReferenceError(`Excessive alias count indicates a resource exhaustion attack`);return c.res}toString(e,n,r){let i=`*${this.source}`;if(e){if(t.anchorIsValid(this.source),e.options.verifyAliasOrder&&!e.anchors.has(this.source)){let e=`Unresolved alias (the anchor must be set before the alias): ${this.source}`;throw Error(e)}if(e.implicitKey)return`${i} `}return i}};function s(e,t,n){if(r.isAlias(t)){let r=t.resolve(e),i=n&&r&&n.get(r);return i?i.count*i.aliasCount:0}else if(r.isCollection(t)){let r=0;for(let i of t.items){let t=s(e,i,n);t>r&&(r=t)}return r}else if(r.isPair(t)){let r=s(e,t.key,n),i=s(e,t.value,n);return Math.max(r,i)}return 1}e.Alias=o})),Wt=s((e=>{var t=Lt(),n=Ht(),r=Vt();let i=e=>!e||typeof e!=`function`&&typeof e!=`object`;var a=class extends n.NodeBase{constructor(e){super(t.SCALAR),this.value=e}toJSON(e,t){return t?.keep?this.value:r.toJS(this.value,e,t)}toString(){return String(this.value)}};a.BLOCK_FOLDED=`BLOCK_FOLDED`,a.BLOCK_LITERAL=`BLOCK_LITERAL`,a.PLAIN=`PLAIN`,a.QUOTE_DOUBLE=`QUOTE_DOUBLE`,a.QUOTE_SINGLE=`QUOTE_SINGLE`,e.Scalar=a,e.isScalarValue=i})),Gt=s((e=>{var t=Ut(),n=Lt(),r=Wt();function i(e,t,n){if(t){let e=n.filter(e=>e.tag===t),r=e.find(e=>!e.format)??e[0];if(!r)throw Error(`Tag ${t} not found`);return r}return n.find(t=>t.identify?.(e)&&!t.format)}function a(e,a,o){if(n.isDocument(e)&&(e=e.contents),n.isNode(e))return e;if(n.isPair(e)){let t=o.schema[n.MAP].createNode?.(o.schema,null,o);return t.items.push(e),t}(e instanceof String||e instanceof Number||e instanceof Boolean||typeof BigInt<`u`&&e instanceof BigInt)&&(e=e.valueOf());let{aliasDuplicateObjects:s,onAnchor:c,onTagObj:l,schema:u,sourceObjects:d}=o,f;if(s&&e&&typeof e==`object`){if(f=d.get(e),f)return f.anchor??=c(e),new t.Alias(f.anchor);f={anchor:null,node:null},d.set(e,f)}a?.startsWith(`!!`)&&(a=`tag:yaml.org,2002:`+a.slice(2));let p=i(e,a,u.tags);if(!p){if(e&&typeof e.toJSON==`function`&&(e=e.toJSON()),!e||typeof e!=`object`){let t=new r.Scalar(e);return f&&(f.node=t),t}p=e instanceof Map?u[n.MAP]:Symbol.iterator in Object(e)?u[n.SEQ]:u[n.MAP]}l&&(l(p),delete o.onTagObj);let m=p?.createNode?p.createNode(o.schema,e,o):typeof p?.nodeClass?.from==`function`?p.nodeClass.from(o.schema,e,o):new r.Scalar(e);return a?m.tag=a:p.default||(m.tag=p.tag),f&&(f.node=m),m}e.createNode=a})),Kt=s((e=>{var t=Gt(),n=Lt(),r=Ht();function i(e,n,r){let i=r;for(let e=n.length-1;e>=0;--e){let t=n[e];if(typeof t==`number`&&Number.isInteger(t)&&t>=0){let e=[];e[t]=i,i=e}else i=new Map([[t,i]])}return t.createNode(i,void 0,{aliasDuplicateObjects:!1,keepUndefined:!1,onAnchor:()=>{throw Error(`This should not happen, please report a bug.`)},schema:e,sourceObjects:new Map})}let a=e=>e==null||typeof e==`object`&&!!e[Symbol.iterator]().next().done;e.Collection=class extends r.NodeBase{constructor(e,t){super(e),Object.defineProperty(this,`schema`,{value:t,configurable:!0,enumerable:!1,writable:!0})}clone(e){let t=Object.create(Object.getPrototypeOf(this),Object.getOwnPropertyDescriptors(this));return e&&(t.schema=e),t.items=t.items.map(t=>n.isNode(t)||n.isPair(t)?t.clone(e):t),this.range&&(t.range=this.range.slice()),t}addIn(e,t){if(a(e))this.add(t);else{let[r,...a]=e,o=this.get(r,!0);if(n.isCollection(o))o.addIn(a,t);else if(o===void 0&&this.schema)this.set(r,i(this.schema,a,t));else throw Error(`Expected YAML collection at ${r}. Remaining path: ${a}`)}}deleteIn(e){let[t,...r]=e;if(r.length===0)return this.delete(t);let i=this.get(t,!0);if(n.isCollection(i))return i.deleteIn(r);throw Error(`Expected YAML collection at ${t}. Remaining path: ${r}`)}getIn(e,t){let[r,...i]=e,a=this.get(r,!0);return i.length===0?!t&&n.isScalar(a)?a.value:a:n.isCollection(a)?a.getIn(i,t):void 0}hasAllNullValues(e){return this.items.every(t=>{if(!n.isPair(t))return!1;let r=t.value;return r==null||e&&n.isScalar(r)&&r.value==null&&!r.commentBefore&&!r.comment&&!r.tag})}hasIn(e){let[t,...r]=e;if(r.length===0)return this.has(t);let i=this.get(t,!0);return n.isCollection(i)?i.hasIn(r):!1}setIn(e,t){let[r,...a]=e;if(a.length===0)this.set(r,t);else{let e=this.get(r,!0);if(n.isCollection(e))e.setIn(a,t);else if(e===void 0&&this.schema)this.set(r,i(this.schema,a,t));else throw Error(`Expected YAML collection at ${r}. Remaining path: ${a}`)}}},e.collectionFromPath=i,e.isEmptyPath=a})),qt=s((e=>{let t=e=>e.replace(/^(?!$)(?: $)?/gm,`#`);function n(e,t){return/^\n+$/.test(e)?e.substring(1):t?e.replace(/^(?! *$)/gm,t):e}e.indentComment=n,e.lineComment=(e,t,r)=>e.endsWith(` +`)?n(r,t):r.includes(` +`)?` +`+n(r,t):(e.endsWith(` `)?``:` `)+r,e.stringifyComment=t})),Jt=s((e=>{let t=`block`,n=`quoted`;function r(e,r,a=`flow`,{indentAtStart:o,lineWidth:s=80,minContentWidth:c=20,onFold:l,onOverflow:u}={}){if(!s||s<0)return e;ss-Math.max(2,c)?f.push(0):m=s-o);let h,g,_=!1,v=-1,y=-1,b=-1;a===t&&(v=i(e,v,r.length),v!==-1&&(m=v+d));for(let o;o=e[v+=1];){if(a===n&&o===`\\`){switch(y=v,e[v+1]){case`x`:v+=3;break;case`u`:v+=5;break;case`U`:v+=9;break;default:v+=1}b=v}if(o===` +`)a===t&&(v=i(e,v,r.length)),m=v+r.length+d,h=void 0;else{if(o===` `&&g&&g!==` `&&g!==` +`&&g!==` `){let t=e[v+1];t&&t!==` `&&t!==` +`&&t!==` `&&(h=v)}if(v>=m)if(h)f.push(h),m=h+d,h=void 0;else if(a===n){for(;g===` `||g===` `;)g=o,o=e[v+=1],_=!0;let t=v>b+1?v-2:y-1;if(p[t])return e;f.push(t),p[t]=!0,m=t+d,h=void 0}else _=!0}g=o}if(_&&u&&u(),f.length===0)return e;l&&l();let x=e.slice(0,f[0]);for(let t=0;t{var t=Wt(),n=Jt();let r=(e,t)=>({indentAtStart:t?e.indent.length:e.indentAtStart,lineWidth:e.options.lineWidth,minContentWidth:e.options.minContentWidth}),i=e=>/^(%|---|\.\.\.)/m.test(e);function a(e,t,n){if(!t||t<0)return!1;let r=t-n,i=e.length;if(i<=r)return!1;for(let t=0,n=0;tr)return!0;if(n=t+1,i-n<=r)return!1}return!0}function o(e,t){let a=JSON.stringify(e);if(t.options.doubleQuotedAsJSON)return a;let{implicitKey:o}=t,s=t.options.doubleQuotedMinMultiLineLength,c=t.indent||(i(e)?` `:``),l=``,u=0;for(let e=0,t=a[e];t;t=a[++e])if(t===` `&&a[e+1]===`\\`&&a[e+2]===`n`&&(l+=a.slice(u,e)+`\\ `,e+=1,u=e,t=`\\`),t===`\\`)switch(a[e+1]){case`u`:{l+=a.slice(u,e);let t=a.substr(e+2,4);switch(t){case`0000`:l+=`\\0`;break;case`0007`:l+=`\\a`;break;case`000b`:l+=`\\v`;break;case`001b`:l+=`\\e`;break;case`0085`:l+=`\\N`;break;case`00a0`:l+=`\\_`;break;case`2028`:l+=`\\L`;break;case`2029`:l+=`\\P`;break;default:t.substr(0,2)===`00`?l+=`\\x`+t.substr(2):l+=a.substr(e,6)}e+=5,u=e+1}break;case`n`:if(o||a[e+2]===`"`||a.length +`;let v,y;for(y=s.length;y>0;--y){let e=s[y-1];if(e!==` +`&&e!==` `&&e!==` `)break}let b=s.substring(y),x=b.indexOf(` +`);x===-1?v=`-`:s===b||x!==b.length-1?(v=`+`,f&&f()):v=``,b&&=(s=s.slice(0,-b.length),b[b.length-1]===` +`&&(b=b.slice(0,-1)),b.replace(l,`$&${g}`));let S=!1,C,w=-1;for(C=0;C{i=!0});let c=n.foldFlowLines(`${T}${e}${b}`,g,n.FOLD_BLOCK,a);if(!i)return`>${E}\n${g}${c}`}return s=s.replace(/\n+/g,`$&${g}`),`|${E}\n${g}${T}${s}${b}`}function d(e,a,o,s){let{type:l,value:d}=e,{actualString:f,implicitKey:p,indent:m,indentStep:h,inFlow:g}=a;if(p&&d.includes(` +`)||g&&/[[\]{},]/.test(d))return c(d,a);if(/^[\n\t ,[\]{}#&*!|>'"%@`]|^[?-]$|^[?-][ \t]|[\n:][ \t]|[ \t]\n|[\n\t ]#|[\n\t :]$/.test(d))return p||g||!d.includes(` +`)?c(d,a):u(e,a,o,s);if(!p&&!g&&l!==t.Scalar.PLAIN&&d.includes(` +`))return u(e,a,o,s);if(i(d)){if(m===``)return a.forceBlockIndent=!0,u(e,a,o,s);if(p&&m===h)return c(d,a)}let _=d.replace(/\n+/g,`$&\n${m}`);if(f){let e=e=>e.default&&e.tag!==`tag:yaml.org,2002:str`&&e.test?.test(_),{compat:t,tags:n}=a.doc.schema;if(n.some(e)||t?.some(e))return c(d,a)}return p?_:n.foldFlowLines(_,m,n.FOLD_FLOW,r(a,!1))}function f(e,n,r,i){let{implicitKey:a,inFlow:l}=n,f=typeof e.value==`string`?e:Object.assign({},e,{value:String(e.value)}),{type:p}=e;p!==t.Scalar.QUOTE_DOUBLE&&/[\x00-\x08\x0b-\x1f\x7f-\x9f\u{D800}-\u{DFFF}]/u.test(f.value)&&(p=t.Scalar.QUOTE_DOUBLE);let m=e=>{switch(e){case t.Scalar.BLOCK_FOLDED:case t.Scalar.BLOCK_LITERAL:return a||l?c(f.value,n):u(f,n,r,i);case t.Scalar.QUOTE_DOUBLE:return o(f.value,n);case t.Scalar.QUOTE_SINGLE:return s(f.value,n);case t.Scalar.PLAIN:return d(f,n,r,i);default:return null}},h=m(p);if(h===null){let{defaultKeyType:e,defaultStringType:t}=n.options,r=a&&e||t;if(h=m(r),h===null)throw Error(`Unsupported default string type ${r}`)}return h}e.stringifyString=f})),Xt=s((e=>{var t=zt(),n=Lt(),r=qt(),i=Yt();function a(e,t){let n=Object.assign({blockQuote:!0,commentString:r.stringifyComment,defaultKeyType:null,defaultStringType:`PLAIN`,directives:null,doubleQuotedAsJSON:!1,doubleQuotedMinMultiLineLength:40,falseStr:`false`,flowCollectionPadding:!0,indentSeq:!0,lineWidth:80,minContentWidth:20,nullStr:`null`,simpleKeys:!1,singleQuote:null,trueStr:`true`,verifyAliasOrder:!0},e.schema.toStringOptions,t),i;switch(n.collectionStyle){case`block`:i=!1;break;case`flow`:i=!0;break;default:i=null}return{anchors:new Set,doc:e,flowCollectionPadding:n.flowCollectionPadding?` `:``,indent:``,indentStep:typeof n.indent==`number`?` `.repeat(n.indent):` `,inFlow:i,options:n}}function o(e,t){if(t.tag){let n=e.filter(e=>e.tag===t.tag);if(n.length>0)return n.find(e=>e.format===t.format)??n[0]}let r,i;if(n.isScalar(t)){i=t.value;let n=e.filter(e=>e.identify?.(i));if(n.length>1){let e=n.filter(e=>e.test);e.length>0&&(n=e)}r=n.find(e=>e.format===t.format)??n.find(e=>!e.format)}else i=t,r=e.find(e=>e.nodeClass&&i instanceof e.nodeClass);if(!r){let e=i?.constructor?.name??(i===null?`null`:typeof i);throw Error(`Tag not resolved for ${e} value`)}return r}function s(e,r,{anchors:i,doc:a}){if(!a.directives)return``;let o=[],s=(n.isScalar(e)||n.isCollection(e))&&e.anchor;s&&t.anchorIsValid(s)&&(i.add(s),o.push(`&${s}`));let c=e.tag??(r.default?null:r.tag);return c&&o.push(a.directives.tagString(c)),o.join(` `)}function c(e,t,r,a){if(n.isPair(e))return e.toString(t,r,a);if(n.isAlias(e)){if(t.doc.directives)return e.toString(t);if(t.resolvedAliases?.has(e))throw TypeError(`Cannot stringify circular structure without alias nodes`);t.resolvedAliases?t.resolvedAliases.add(e):t.resolvedAliases=new Set([e]),e=e.resolve(t.doc)}let c,l=n.isNode(e)?e:t.doc.createNode(e,{onTagObj:e=>c=e});c??=o(t.doc.schema.tags,l);let u=s(l,c,t);u.length>0&&(t.indentAtStart=(t.indentAtStart??0)+u.length+1);let d=typeof c.stringify==`function`?c.stringify(l,t,r,a):n.isScalar(l)?i.stringifyString(l,t,r,a):l.toString(t,r,a);return u?n.isScalar(l)||d[0]===`{`||d[0]===`[`?`${u} ${d}`:`${u}\n${t.indent}${d}`:d}e.createStringifyContext=a,e.stringify=c})),Zt=s((e=>{var t=Lt(),n=Wt(),r=Xt(),i=qt();function a({key:e,value:a},o,s,c){let{allNullValues:l,doc:u,indent:d,indentStep:f,options:{commentString:p,indentSeq:m,simpleKeys:h}}=o,g=t.isNode(e)&&e.comment||null;if(h){if(g)throw Error(`With simple keys, key nodes cannot have comments`);if(t.isCollection(e)||!t.isNode(e)&&typeof e==`object`)throw Error(`With simple keys, collection cannot be used as a key value`)}let _=!h&&(!e||g&&a==null&&!o.inFlow||t.isCollection(e)||(t.isScalar(e)?e.type===n.Scalar.BLOCK_FOLDED||e.type===n.Scalar.BLOCK_LITERAL:typeof e==`object`));o=Object.assign({},o,{allNullValues:!1,implicitKey:!_&&(h||!l),indent:d+f});let v=!1,y=!1,b=r.stringify(e,o,()=>v=!0,()=>y=!0);if(!_&&!o.inFlow&&b.length>1024){if(h)throw Error(`With simple keys, single line scalar must not span more than 1024 characters`);_=!0}if(o.inFlow){if(l||a==null)return v&&s&&s(),b===``?`?`:_?`? ${b}`:b}else if(l&&!h||a==null&&_)return b=`? ${b}`,g&&!v?b+=i.lineComment(b,o.indent,p(g)):y&&c&&c(),b;v&&(g=null),_?(g&&(b+=i.lineComment(b,o.indent,p(g))),b=`? ${b}\n${d}:`):(b=`${b}:`,g&&(b+=i.lineComment(b,o.indent,p(g))));let x,S,C;t.isNode(a)?(x=!!a.spaceBefore,S=a.commentBefore,C=a.comment):(x=!1,S=null,C=null,a&&typeof a==`object`&&(a=u.createNode(a))),o.implicitKey=!1,!_&&!g&&t.isScalar(a)&&(o.indentAtStart=b.length+1),y=!1,!m&&f.length>=2&&!o.inFlow&&!_&&t.isSeq(a)&&!a.flow&&!a.tag&&!a.anchor&&(o.indent=o.indent.substring(2));let w=!1,T=r.stringify(a,o,()=>w=!0,()=>y=!0),E=` `;if(g||x||S){if(E=x?` +`:``,S){let e=p(S);E+=`\n${i.indentComment(e,o.indent)}`}T===``&&!o.inFlow?E===` +`&&(E=` + +`):E+=`\n${o.indent}`}else if(!_&&t.isCollection(a)){let e=T[0],t=T.indexOf(` +`),n=t!==-1,r=o.inFlow??a.flow??a.items.length===0;if(n||!r){let r=!1;if(n&&(e===`&`||e===`!`)){let n=T.indexOf(` `);e===`&`&&n!==-1&&n{var t=require(`process`);function n(e,...t){e===`debug`&&console.log(...t)}function r(e,n){(e===`debug`||e===`warn`)&&(typeof t.emitWarning==`function`?t.emitWarning(n):console.warn(n))}e.debug=n,e.warn=r})),$t=s((e=>{var t=Lt(),n=Wt();let r={identify:e=>e===`<<`||typeof e==`symbol`&&e.description===`<<`,default:`key`,tag:`tag:yaml.org,2002:merge`,test:/^<<$/,resolve:()=>Object.assign(new n.Scalar(Symbol(`<<`)),{addToJSMap:a}),stringify:()=>`<<`},i=(e,i)=>(r.identify(i)||t.isScalar(i)&&(!i.type||i.type===n.Scalar.PLAIN)&&r.identify(i.value))&&e?.doc.schema.tags.some(e=>e.tag===r.tag&&e.default);function a(e,n,r){if(r=e&&t.isAlias(r)?r.resolve(e.doc):r,t.isSeq(r))for(let t of r.items)o(e,n,t);else if(Array.isArray(r))for(let t of r)o(e,n,t);else o(e,n,r)}function o(e,n,r){let i=e&&t.isAlias(r)?r.resolve(e.doc):r;if(!t.isMap(i))throw Error(`Merge sources must be maps or map aliases`);let a=i.toJSON(null,e,Map);for(let[e,t]of a)n instanceof Map?n.has(e)||n.set(e,t):n instanceof Set?n.add(e):Object.prototype.hasOwnProperty.call(n,e)||Object.defineProperty(n,e,{value:t,writable:!0,enumerable:!0,configurable:!0});return n}e.addMergeToJSMap=a,e.isMergeKey=i,e.merge=r})),en=s((e=>{var t=Qt(),n=$t(),r=Xt(),i=Lt(),a=Vt();function o(e,t,{key:r,value:o}){if(i.isNode(r)&&r.addToJSMap)r.addToJSMap(e,t,o);else if(n.isMergeKey(e,r))n.addMergeToJSMap(e,t,o);else{let n=a.toJS(r,``,e);if(t instanceof Map)t.set(n,a.toJS(o,n,e));else if(t instanceof Set)t.add(n);else{let i=s(r,n,e),c=a.toJS(o,i,e);i in t?Object.defineProperty(t,i,{value:c,writable:!0,enumerable:!0,configurable:!0}):t[i]=c}}return t}function s(e,n,a){if(n===null)return``;if(typeof n!=`object`)return String(n);if(i.isNode(e)&&a?.doc){let n=r.createStringifyContext(a.doc,{});n.anchors=new Set;for(let e of a.anchors.keys())n.anchors.add(e.anchor);n.inFlow=!0,n.inStringifyKey=!0;let i=e.toString(n);if(!a.mapKeyWarned){let e=JSON.stringify(i);e.length>40&&(e=e.substring(0,36)+`..."`),t.warn(a.doc.options.logLevel,`Keys with collection values will be stringified due to JS Object restrictions: ${e}. Set mapAsMap: true to use object keys.`),a.mapKeyWarned=!0}return i}return JSON.stringify(n)}e.addPairToJSMap=o})),$=s((e=>{var t=Gt(),n=Zt(),r=en(),i=Lt();function a(e,n,r){return new o(t.createNode(e,void 0,r),t.createNode(n,void 0,r))}var o=class e{constructor(e,t=null){Object.defineProperty(this,i.NODE_TYPE,{value:i.PAIR}),this.key=e,this.value=t}clone(t){let{key:n,value:r}=this;return i.isNode(n)&&(n=n.clone(t)),i.isNode(r)&&(r=r.clone(t)),new e(n,r)}toJSON(e,t){let n=t?.mapAsMap?new Map:{};return r.addPairToJSMap(t,n,this)}toString(e,t,r){return e?.doc?n.stringifyPair(this,e,t,r):JSON.stringify(this)}};e.Pair=o,e.createPair=a})),tn=s((e=>{var t=Lt(),n=Xt(),r=qt();function i(e,t,n){return(t.inFlow??e.flow?o:a)(e,t,n)}function a({comment:e,items:i},a,{blockItemPrefix:o,flowChars:c,itemIndent:l,onChompKeep:u,onComment:d}){let{indent:f,options:{commentString:p}}=a,m=Object.assign({},a,{indent:l,type:null}),h=!1,g=[];for(let e=0;eu=null,()=>h=!0);u&&(d+=r.lineComment(d,l,p(u))),h&&u&&(h=!1),g.push(o+d)}let _;if(g.length===0)_=c.start+c.end;else{_=g[0];for(let e=1;el=null);am||u.includes(` +`))&&(p=!0),h.push(u),m=h.length}let{start:g,end:_}=a;if(h.length===0)return g+_;if(!p){let e=h.reduce((e,t)=>e+t.length+2,2);p=i.options.lineWidth>0&&e>i.options.lineWidth}if(p){let e=g;for(let t of h)e+=t?`\n${l}${c}${t}`:` +`;return`${e}\n${c}${_}`}else return`${g}${u}${h.join(` `)}${u}${_}`}function s({indent:e,options:{commentString:t}},n,i,a){if(i&&a&&(i=i.replace(/^\n+/,``)),i){let a=r.indentComment(t(i),e);n.push(a.trimStart())}}e.stringifyCollection=i})),nn=s((e=>{var t=tn(),n=en(),r=Kt(),i=Lt(),a=$(),o=Wt();function s(e,t){let n=i.isScalar(t)?t.value:t;for(let r of e)if(i.isPair(r)&&(r.key===t||r.key===n||i.isScalar(r.key)&&r.key.value===n))return r}e.YAMLMap=class extends r.Collection{static get tagName(){return`tag:yaml.org,2002:map`}constructor(e){super(i.MAP,e),this.items=[]}static from(e,t,n){let{keepUndefined:r,replacer:i}=n,o=new this(e),s=(e,s)=>{if(typeof i==`function`)s=i.call(t,e,s);else if(Array.isArray(i)&&!i.includes(e))return;(s!==void 0||r)&&o.items.push(a.createPair(e,s,n))};if(t instanceof Map)for(let[e,n]of t)s(e,n);else if(t&&typeof t==`object`)for(let e of Object.keys(t))s(e,t[e]);return typeof e.sortMapEntries==`function`&&o.items.sort(e.sortMapEntries),o}add(e,t){let n;n=i.isPair(e)?e:!e||typeof e!=`object`||!(`key`in e)?new a.Pair(e,e?.value):new a.Pair(e.key,e.value);let r=s(this.items,n.key),c=this.schema?.sortMapEntries;if(r){if(!t)throw Error(`Key ${n.key} already set`);i.isScalar(r.value)&&o.isScalarValue(n.value)?r.value.value=n.value:r.value=n.value}else if(c){let e=this.items.findIndex(e=>c(n,e)<0);e===-1?this.items.push(n):this.items.splice(e,0,n)}else this.items.push(n)}delete(e){let t=s(this.items,e);return t?this.items.splice(this.items.indexOf(t),1).length>0:!1}get(e,t){let n=s(this.items,e)?.value;return(!t&&i.isScalar(n)?n.value:n)??void 0}has(e){return!!s(this.items,e)}set(e,t){this.add(new a.Pair(e,t),!0)}toJSON(e,t,r){let i=r?new r:t?.mapAsMap?new Map:{};t?.onCreate&&t.onCreate(i);for(let e of this.items)n.addPairToJSMap(t,i,e);return i}toString(e,n,r){if(!e)return JSON.stringify(this);for(let e of this.items)if(!i.isPair(e))throw Error(`Map items must all be pairs; found ${JSON.stringify(e)} instead`);return!e.allNullValues&&this.hasAllNullValues(!1)&&(e=Object.assign({},e,{allNullValues:!0})),t.stringifyCollection(this,e,{blockItemPrefix:``,flowChars:{start:`{`,end:`}`},itemIndent:e.indent||``,onChompKeep:r,onComment:n})}},e.findPair=s})),rn=s((e=>{var t=Lt(),n=nn();e.map={collection:`map`,default:!0,nodeClass:n.YAMLMap,tag:`tag:yaml.org,2002:map`,resolve(e,n){return t.isMap(e)||n(`Expected a mapping for this tag`),e},createNode:(e,t,r)=>n.YAMLMap.from(e,t,r)}})),an=s((e=>{var t=Gt(),n=tn(),r=Kt(),i=Lt(),a=Wt(),o=Vt(),s=class extends r.Collection{static get tagName(){return`tag:yaml.org,2002:seq`}constructor(e){super(i.SEQ,e),this.items=[]}add(e){this.items.push(e)}delete(e){let t=c(e);return typeof t==`number`?this.items.splice(t,1).length>0:!1}get(e,t){let n=c(e);if(typeof n!=`number`)return;let r=this.items[n];return!t&&i.isScalar(r)?r.value:r}has(e){let t=c(e);return typeof t==`number`&&t=0?t:null}e.YAMLSeq=s})),on=s((e=>{var t=Lt(),n=an();e.seq={collection:`seq`,default:!0,nodeClass:n.YAMLSeq,tag:`tag:yaml.org,2002:seq`,resolve(e,n){return t.isSeq(e)||n(`Expected a sequence for this tag`),e},createNode:(e,t,r)=>n.YAMLSeq.from(e,t,r)}})),sn=s((e=>{var t=Yt();e.string={identify:e=>typeof e==`string`,default:!0,tag:`tag:yaml.org,2002:str`,resolve:e=>e,stringify(e,n,r,i){return n=Object.assign({actualString:!0},n),t.stringifyString(e,n,r,i)}}})),cn=s((e=>{var t=Wt();let n={identify:e=>e==null,createNode:()=>new t.Scalar(null),default:!0,tag:`tag:yaml.org,2002:null`,test:/^(?:~|[Nn]ull|NULL)?$/,resolve:()=>new t.Scalar(null),stringify:({source:e},t)=>typeof e==`string`&&n.test.test(e)?e:t.options.nullStr};e.nullTag=n})),ln=s((e=>{var t=Wt();let n={identify:e=>typeof e==`boolean`,default:!0,tag:`tag:yaml.org,2002:bool`,test:/^(?:[Tt]rue|TRUE|[Ff]alse|FALSE)$/,resolve:e=>new t.Scalar(e[0]===`t`||e[0]===`T`),stringify({source:e,value:t},r){return e&&n.test.test(e)&&t===(e[0]===`t`||e[0]===`T`)?e:t?r.options.trueStr:r.options.falseStr}};e.boolTag=n})),un=s((e=>{function t({format:e,minFractionDigits:t,tag:n,value:r}){if(typeof r==`bigint`)return String(r);let i=typeof r==`number`?r:Number(r);if(!isFinite(i))return isNaN(i)?`.nan`:i<0?`-.inf`:`.inf`;let a=JSON.stringify(r);if(!e&&t&&(!n||n===`tag:yaml.org,2002:float`)&&/^\d/.test(a)){let e=a.indexOf(`.`);e<0&&(e=a.length,a+=`.`);let n=t-(a.length-e-1);for(;n-- >0;)a+=`0`}return a}e.stringifyNumber=t})),dn=s((e=>{var t=Wt(),n=un();let r={identify:e=>typeof e==`number`,default:!0,tag:`tag:yaml.org,2002:float`,test:/^(?:[-+]?\.(?:inf|Inf|INF)|\.nan|\.NaN|\.NAN)$/,resolve:e=>e.slice(-3).toLowerCase()===`nan`?NaN:e[0]===`-`?-1/0:1/0,stringify:n.stringifyNumber};e.float={identify:e=>typeof e==`number`,default:!0,tag:`tag:yaml.org,2002:float`,test:/^[-+]?(?:\.[0-9]+|[0-9]+\.[0-9]*)$/,resolve(e){let n=new t.Scalar(parseFloat(e)),r=e.indexOf(`.`);return r!==-1&&e[e.length-1]===`0`&&(n.minFractionDigits=e.length-r-1),n},stringify:n.stringifyNumber},e.floatExp={identify:e=>typeof e==`number`,default:!0,tag:`tag:yaml.org,2002:float`,format:`EXP`,test:/^[-+]?(?:\.[0-9]+|[0-9]+(?:\.[0-9]*)?)[eE][-+]?[0-9]+$/,resolve:e=>parseFloat(e),stringify(e){let t=Number(e.value);return isFinite(t)?t.toExponential():n.stringifyNumber(e)}},e.floatNaN=r})),fn=s((e=>{var t=un();let n=e=>typeof e==`bigint`||Number.isInteger(e),r=(e,t,n,{intAsBigInt:r})=>r?BigInt(e):parseInt(e.substring(t),n);function i(e,r,i){let{value:a}=e;return n(a)&&a>=0?i+a.toString(r):t.stringifyNumber(e)}e.int={identify:n,default:!0,tag:`tag:yaml.org,2002:int`,test:/^[-+]?[0-9]+$/,resolve:(e,t,n)=>r(e,0,10,n),stringify:t.stringifyNumber},e.intHex={identify:e=>n(e)&&e>=0,default:!0,tag:`tag:yaml.org,2002:int`,format:`HEX`,test:/^0x[0-9a-fA-F]+$/,resolve:(e,t,n)=>r(e,2,16,n),stringify:e=>i(e,16,`0x`)},e.intOct={identify:e=>n(e)&&e>=0,default:!0,tag:`tag:yaml.org,2002:int`,format:`OCT`,test:/^0o[0-7]+$/,resolve:(e,t,n)=>r(e,2,8,n),stringify:e=>i(e,8,`0o`)}})),pn=s((e=>{var t=rn(),n=cn(),r=on(),i=sn(),a=ln(),o=dn(),s=fn();e.schema=[t.map,r.seq,i.string,n.nullTag,a.boolTag,s.intOct,s.int,s.intHex,o.floatNaN,o.floatExp,o.float]})),mn=s((e=>{var t=Wt(),n=rn(),r=on();function i(e){return typeof e==`bigint`||Number.isInteger(e)}let a=({value:e})=>JSON.stringify(e),o=[{identify:e=>typeof e==`string`,default:!0,tag:`tag:yaml.org,2002:str`,resolve:e=>e,stringify:a},{identify:e=>e==null,createNode:()=>new t.Scalar(null),default:!0,tag:`tag:yaml.org,2002:null`,test:/^null$/,resolve:()=>null,stringify:a},{identify:e=>typeof e==`boolean`,default:!0,tag:`tag:yaml.org,2002:bool`,test:/^true$|^false$/,resolve:e=>e===`true`,stringify:a},{identify:i,default:!0,tag:`tag:yaml.org,2002:int`,test:/^-?(?:0|[1-9][0-9]*)$/,resolve:(e,t,{intAsBigInt:n})=>n?BigInt(e):parseInt(e,10),stringify:({value:e})=>i(e)?e.toString():JSON.stringify(e)},{identify:e=>typeof e==`number`,default:!0,tag:`tag:yaml.org,2002:float`,test:/^-?(?:0|[1-9][0-9]*)(?:\.[0-9]*)?(?:[eE][-+]?[0-9]+)?$/,resolve:e=>parseFloat(e),stringify:a}];e.schema=[n.map,r.seq].concat(o,{default:!0,tag:``,test:/^/,resolve(e,t){return t(`Unresolved plain scalar ${JSON.stringify(e)}`),e}})})),hn=s((e=>{var t=require(`buffer`),n=Wt(),r=Yt();e.binary={identify:e=>e instanceof Uint8Array,default:!1,tag:`tag:yaml.org,2002:binary`,resolve(e,n){if(typeof t.Buffer==`function`)return t.Buffer.from(e,`base64`);if(typeof atob==`function`){let t=atob(e.replace(/[\n\r]/g,``)),n=new Uint8Array(t.length);for(let e=0;e{var t=Lt(),n=$(),r=Wt(),i=an();function a(e,i){if(t.isSeq(e))for(let a=0;a1&&i(`Each pair must have its own sequence indicator`);let e=o.items[0]||new n.Pair(new r.Scalar(null));if(o.commentBefore&&(e.key.commentBefore=e.key.commentBefore?`${o.commentBefore}\n${e.key.commentBefore}`:o.commentBefore),o.comment){let t=e.value??e.key;t.comment=t.comment?`${o.comment}\n${t.comment}`:o.comment}o=e}e.items[a]=t.isPair(o)?o:new n.Pair(o)}}else i(`Expected a sequence for this tag`);return e}function o(e,t,r){let{replacer:a}=r,o=new i.YAMLSeq(e);o.tag=`tag:yaml.org,2002:pairs`;let s=0;if(t&&Symbol.iterator in Object(t))for(let e of t){typeof a==`function`&&(e=a.call(t,String(s++),e));let i,c;if(Array.isArray(e))if(e.length===2)i=e[0],c=e[1];else throw TypeError(`Expected [key, value] tuple: ${e}`);else if(e&&e instanceof Object){let t=Object.keys(e);if(t.length===1)i=t[0],c=e[i];else throw TypeError(`Expected tuple with one key, not ${t.length} keys`)}else i=e;o.items.push(n.createPair(i,c,r))}return o}let s={collection:`seq`,default:!1,tag:`tag:yaml.org,2002:pairs`,resolve:a,createNode:o};e.createPairs=o,e.pairs=s,e.resolvePairs=a})),_n=s((e=>{var t=Lt(),n=Vt(),r=nn(),i=an(),a=gn(),o=class e extends i.YAMLSeq{constructor(){super(),this.add=r.YAMLMap.prototype.add.bind(this),this.delete=r.YAMLMap.prototype.delete.bind(this),this.get=r.YAMLMap.prototype.get.bind(this),this.has=r.YAMLMap.prototype.has.bind(this),this.set=r.YAMLMap.prototype.set.bind(this),this.tag=e.tag}toJSON(e,r){if(!r)return super.toJSON(e);let i=new Map;r?.onCreate&&r.onCreate(i);for(let e of this.items){let a,o;if(t.isPair(e)?(a=n.toJS(e.key,``,r),o=n.toJS(e.value,a,r)):a=n.toJS(e,``,r),i.has(a))throw Error(`Ordered maps must not include duplicate keys`);i.set(a,o)}return i}static from(e,t,n){let r=a.createPairs(e,t,n),i=new this;return i.items=r.items,i}};o.tag=`tag:yaml.org,2002:omap`;let s={collection:`seq`,identify:e=>e instanceof Map,nodeClass:o,default:!1,tag:`tag:yaml.org,2002:omap`,resolve(e,n){let r=a.resolvePairs(e,n),i=[];for(let{key:e}of r.items)t.isScalar(e)&&(i.includes(e.value)?n(`Ordered maps must not include duplicate keys: ${e.value}`):i.push(e.value));return Object.assign(new o,r)},createNode:(e,t,n)=>o.from(e,t,n)};e.YAMLOMap=o,e.omap=s})),vn=s((e=>{var t=Wt();function n({value:e,source:t},n){return t&&(e?r:i).test.test(t)?t:e?n.options.trueStr:n.options.falseStr}let r={identify:e=>e===!0,default:!0,tag:`tag:yaml.org,2002:bool`,test:/^(?:Y|y|[Yy]es|YES|[Tt]rue|TRUE|[Oo]n|ON)$/,resolve:()=>new t.Scalar(!0),stringify:n},i={identify:e=>e===!1,default:!0,tag:`tag:yaml.org,2002:bool`,test:/^(?:N|n|[Nn]o|NO|[Ff]alse|FALSE|[Oo]ff|OFF)$/,resolve:()=>new t.Scalar(!1),stringify:n};e.falseTag=i,e.trueTag=r})),yn=s((e=>{var t=Wt(),n=un();let r={identify:e=>typeof e==`number`,default:!0,tag:`tag:yaml.org,2002:float`,test:/^(?:[-+]?\.(?:inf|Inf|INF)|\.nan|\.NaN|\.NAN)$/,resolve:e=>e.slice(-3).toLowerCase()===`nan`?NaN:e[0]===`-`?-1/0:1/0,stringify:n.stringifyNumber};e.float={identify:e=>typeof e==`number`,default:!0,tag:`tag:yaml.org,2002:float`,test:/^[-+]?(?:[0-9][0-9_]*)?\.[0-9_]*$/,resolve(e){let n=new t.Scalar(parseFloat(e.replace(/_/g,``))),r=e.indexOf(`.`);if(r!==-1){let t=e.substring(r+1).replace(/_/g,``);t[t.length-1]===`0`&&(n.minFractionDigits=t.length)}return n},stringify:n.stringifyNumber},e.floatExp={identify:e=>typeof e==`number`,default:!0,tag:`tag:yaml.org,2002:float`,format:`EXP`,test:/^[-+]?(?:[0-9][0-9_]*)?(?:\.[0-9_]*)?[eE][-+]?[0-9]+$/,resolve:e=>parseFloat(e.replace(/_/g,``)),stringify(e){let t=Number(e.value);return isFinite(t)?t.toExponential():n.stringifyNumber(e)}},e.floatNaN=r})),bn=s((e=>{var t=un();let n=e=>typeof e==`bigint`||Number.isInteger(e);function r(e,t,n,{intAsBigInt:r}){let i=e[0];if((i===`-`||i===`+`)&&(t+=1),e=e.substring(t).replace(/_/g,``),r){switch(n){case 2:e=`0b${e}`;break;case 8:e=`0o${e}`;break;case 16:e=`0x${e}`;break}let t=BigInt(e);return i===`-`?BigInt(-1)*t:t}let a=parseInt(e,n);return i===`-`?-1*a:a}function i(e,r,i){let{value:a}=e;if(n(a)){let e=a.toString(r);return a<0?`-`+i+e.substr(1):i+e}return t.stringifyNumber(e)}let a={identify:n,default:!0,tag:`tag:yaml.org,2002:int`,format:`BIN`,test:/^[-+]?0b[0-1_]+$/,resolve:(e,t,n)=>r(e,2,2,n),stringify:e=>i(e,2,`0b`)},o={identify:n,default:!0,tag:`tag:yaml.org,2002:int`,format:`OCT`,test:/^[-+]?0[0-7_]+$/,resolve:(e,t,n)=>r(e,1,8,n),stringify:e=>i(e,8,`0`)},s={identify:n,default:!0,tag:`tag:yaml.org,2002:int`,test:/^[-+]?[0-9][0-9_]*$/,resolve:(e,t,n)=>r(e,0,10,n),stringify:t.stringifyNumber},c={identify:n,default:!0,tag:`tag:yaml.org,2002:int`,format:`HEX`,test:/^[-+]?0x[0-9a-fA-F_]+$/,resolve:(e,t,n)=>r(e,2,16,n),stringify:e=>i(e,16,`0x`)};e.int=s,e.intBin=a,e.intHex=c,e.intOct=o})),xn=s((e=>{var t=Lt(),n=$(),r=nn(),i=class e extends r.YAMLMap{constructor(t){super(t),this.tag=e.tag}add(e){let i;i=t.isPair(e)?e:e&&typeof e==`object`&&`key`in e&&`value`in e&&e.value===null?new n.Pair(e.key,null):new n.Pair(e,null),r.findPair(this.items,i.key)||this.items.push(i)}get(e,n){let i=r.findPair(this.items,e);return!n&&t.isPair(i)?t.isScalar(i.key)?i.key.value:i.key:i}set(e,t){if(typeof t!=`boolean`)throw Error(`Expected boolean value for set(key, value) in a YAML set, not ${typeof t}`);let i=r.findPair(this.items,e);i&&!t?this.items.splice(this.items.indexOf(i),1):!i&&t&&this.items.push(new n.Pair(e))}toJSON(e,t){return super.toJSON(e,t,Set)}toString(e,t,n){if(!e)return JSON.stringify(this);if(this.hasAllNullValues(!0))return super.toString(Object.assign({},e,{allNullValues:!0}),t,n);throw Error(`Set items must all have null values`)}static from(e,t,r){let{replacer:i}=r,a=new this(e);if(t&&Symbol.iterator in Object(t))for(let e of t)typeof i==`function`&&(e=i.call(t,e,e)),a.items.push(n.createPair(e,null,r));return a}};i.tag=`tag:yaml.org,2002:set`;let a={collection:`map`,identify:e=>e instanceof Set,nodeClass:i,default:!1,tag:`tag:yaml.org,2002:set`,createNode:(e,t,n)=>i.from(e,t,n),resolve(e,n){if(t.isMap(e)){if(e.hasAllNullValues(!0))return Object.assign(new i,e);n(`Set items must all have null values`)}else n(`Expected a mapping for this tag`);return e}};e.YAMLSet=i,e.set=a})),Sn=s((e=>{var t=un();function n(e,t){let n=e[0],r=n===`-`||n===`+`?e.substring(1):e,i=e=>t?BigInt(e):Number(e),a=r.replace(/_/g,``).split(`:`).reduce((e,t)=>e*i(60)+i(t),i(0));return n===`-`?i(-1)*a:a}function r(e){let{value:n}=e,r=e=>e;if(typeof n==`bigint`)r=e=>BigInt(e);else if(isNaN(n)||!isFinite(n))return t.stringifyNumber(e);let i=``;n<0&&(i=`-`,n*=r(-1));let a=r(60),o=[n%a];return n<60?o.unshift(0):(n=(n-o[0])/a,o.unshift(n%a),n>=60&&(n=(n-o[0])/a,o.unshift(n))),i+o.map(e=>String(e).padStart(2,`0`)).join(`:`).replace(/000000\d*$/,``)}let i={identify:e=>typeof e==`bigint`||Number.isInteger(e),default:!0,tag:`tag:yaml.org,2002:int`,format:`TIME`,test:/^[-+]?[0-9][0-9_]*(?::[0-5]?[0-9])+$/,resolve:(e,t,{intAsBigInt:r})=>n(e,r),stringify:r},a={identify:e=>typeof e==`number`,default:!0,tag:`tag:yaml.org,2002:float`,format:`TIME`,test:/^[-+]?[0-9][0-9_]*(?::[0-5]?[0-9])+\.[0-9_]*$/,resolve:e=>n(e,!1),stringify:r},o={identify:e=>e instanceof Date,default:!0,tag:`tag:yaml.org,2002:timestamp`,test:RegExp(`^([0-9]{4})-([0-9]{1,2})-([0-9]{1,2})(?:(?:t|T|[ \\t]+)([0-9]{1,2}):([0-9]{1,2}):([0-9]{1,2}(\\.[0-9]+)?)(?:[ \\t]*(Z|[-+][012]?[0-9](?::[0-9]{2})?))?)?$`),resolve(e){let t=e.match(o.test);if(!t)throw Error(`!!timestamp expects a date, starting with yyyy-mm-dd`);let[,r,i,a,s,c,l]=t.map(Number),u=t[7]?Number((t[7]+`00`).substr(1,3)):0,d=Date.UTC(r,i-1,a,s||0,c||0,l||0,u),f=t[8];if(f&&f!==`Z`){let e=n(f,!1);Math.abs(e)<30&&(e*=60),d-=6e4*e}return new Date(d)},stringify:({value:e})=>e?.toISOString().replace(/(T00:00:00)?\.000Z$/,``)??``};e.floatTime=a,e.intTime=i,e.timestamp=o})),Cn=s((e=>{var t=rn(),n=cn(),r=on(),i=sn(),a=hn(),o=vn(),s=yn(),c=bn(),l=$t(),u=_n(),d=gn(),f=xn(),p=Sn();e.schema=[t.map,r.seq,i.string,n.nullTag,o.trueTag,o.falseTag,c.intBin,c.intOct,c.int,c.intHex,s.floatNaN,s.floatExp,s.float,a.binary,l.merge,u.omap,d.pairs,f.set,p.intTime,p.floatTime,p.timestamp]})),wn=s((e=>{var t=rn(),n=cn(),r=on(),i=sn(),a=ln(),o=dn(),s=fn(),c=pn(),l=mn(),u=hn(),d=$t(),f=_n(),p=gn(),m=Cn(),h=xn(),g=Sn();let _=new Map([[`core`,c.schema],[`failsafe`,[t.map,r.seq,i.string]],[`json`,l.schema],[`yaml11`,m.schema],[`yaml-1.1`,m.schema]]),v={binary:u.binary,bool:a.boolTag,float:o.float,floatExp:o.floatExp,floatNaN:o.floatNaN,floatTime:g.floatTime,int:s.int,intHex:s.intHex,intOct:s.intOct,intTime:g.intTime,map:t.map,merge:d.merge,null:n.nullTag,omap:f.omap,pairs:p.pairs,seq:r.seq,set:h.set,timestamp:g.timestamp},y={"tag:yaml.org,2002:binary":u.binary,"tag:yaml.org,2002:merge":d.merge,"tag:yaml.org,2002:omap":f.omap,"tag:yaml.org,2002:pairs":p.pairs,"tag:yaml.org,2002:set":h.set,"tag:yaml.org,2002:timestamp":g.timestamp};function b(e,t,n){let r=_.get(t);if(r&&!e)return n&&!r.includes(d.merge)?r.concat(d.merge):r.slice();let i=r;if(!i)if(Array.isArray(e))i=[];else{let e=Array.from(_.keys()).filter(e=>e!==`yaml11`).map(e=>JSON.stringify(e)).join(`, `);throw Error(`Unknown schema "${t}"; use one of ${e} or define customTags array`)}if(Array.isArray(e))for(let t of e)i=i.concat(t);else typeof e==`function`&&(i=e(i.slice()));return n&&(i=i.concat(d.merge)),i.reduce((e,t)=>{let n=typeof t==`string`?v[t]:t;if(!n){let e=JSON.stringify(t),n=Object.keys(v).map(e=>JSON.stringify(e)).join(`, `);throw Error(`Unknown custom tag ${e}; use one of ${n}`)}return e.includes(n)||e.push(n),e},[])}e.coreKnownTags=y,e.getTags=b})),Tn=s((e=>{var t=Lt(),n=rn(),r=on(),i=sn(),a=wn();let o=(e,t)=>e.keyt.key?1:0;e.Schema=class e{constructor({compat:e,customTags:s,merge:c,resolveKnownTags:l,schema:u,sortMapEntries:d,toStringDefaults:f}){this.compat=Array.isArray(e)?a.getTags(e,`compat`):e?a.getTags(null,e):null,this.name=typeof u==`string`&&u||`core`,this.knownTags=l?a.coreKnownTags:{},this.tags=a.getTags(s,this.name,c),this.toStringOptions=f??null,Object.defineProperty(this,t.MAP,{value:n.map}),Object.defineProperty(this,t.SCALAR,{value:i.string}),Object.defineProperty(this,t.SEQ,{value:r.seq}),this.sortMapEntries=typeof d==`function`?d:d===!0?o:null}clone(){let t=Object.create(e.prototype,Object.getOwnPropertyDescriptors(this));return t.tags=this.tags.slice(),t}}})),En=s((e=>{var t=Lt(),n=Xt(),r=qt();function i(e,i){let a=[],o=i.directives===!0;if(i.directives!==!1&&e.directives){let t=e.directives.toString(e);t?(a.push(t),o=!0):e.directives.docStart&&(o=!0)}o&&a.push(`---`);let s=n.createStringifyContext(e,i),{commentString:c}=s.options;if(e.commentBefore){a.length!==1&&a.unshift(``);let t=c(e.commentBefore);a.unshift(r.indentComment(t,``))}let l=!1,u=null;if(e.contents){if(t.isNode(e.contents)){if(e.contents.spaceBefore&&o&&a.push(``),e.contents.commentBefore){let t=c(e.contents.commentBefore);a.push(r.indentComment(t,``))}s.forceBlockIndent=!!e.comment,u=e.contents.comment}let i=u?void 0:()=>l=!0,d=n.stringify(e.contents,s,()=>u=null,i);u&&(d+=r.lineComment(d,``,c(u))),(d[0]===`|`||d[0]===`>`)&&a[a.length-1]===`---`?a[a.length-1]=`--- ${d}`:a.push(d)}else a.push(n.stringify(e.contents,s));if(e.directives?.docEnd)if(e.comment){let t=c(e.comment);t.includes(` +`)?(a.push(`...`),a.push(r.indentComment(t,``))):a.push(`... ${t}`)}else a.push(`...`);else{let t=e.comment;t&&l&&(t=t.replace(/^\n+/,``)),t&&((!l||u)&&a[a.length-1]!==``&&a.push(``),a.push(r.indentComment(c(t),``)))}return a.join(` +`)+` +`}e.stringifyDocument=i})),Dn=s((e=>{var t=Ut(),n=Kt(),r=Lt(),i=$(),a=Vt(),o=Tn(),s=En(),c=zt(),l=Bt(),u=Gt(),d=Q(),f=class e{constructor(e,t,n){this.commentBefore=null,this.comment=null,this.errors=[],this.warnings=[],Object.defineProperty(this,r.NODE_TYPE,{value:r.DOC});let i=null;typeof t==`function`||Array.isArray(t)?i=t:n===void 0&&t&&(n=t,t=void 0);let a=Object.assign({intAsBigInt:!1,keepSourceTokens:!1,logLevel:`warn`,prettyErrors:!0,strict:!0,stringKeys:!1,uniqueKeys:!0,version:`1.2`},n);this.options=a;let{version:o}=a;n?._directives?(this.directives=n._directives.atDocument(),this.directives.yaml.explicit&&(o=this.directives.yaml.version)):this.directives=new d.Directives({version:o}),this.setSchema(o,n),this.contents=e===void 0?null:this.createNode(e,i,n)}clone(){let t=Object.create(e.prototype,{[r.NODE_TYPE]:{value:r.DOC}});return t.commentBefore=this.commentBefore,t.comment=this.comment,t.errors=this.errors.slice(),t.warnings=this.warnings.slice(),t.options=Object.assign({},this.options),this.directives&&(t.directives=this.directives.clone()),t.schema=this.schema.clone(),t.contents=r.isNode(this.contents)?this.contents.clone(t.schema):this.contents,this.range&&(t.range=this.range.slice()),t}add(e){p(this.contents)&&this.contents.add(e)}addIn(e,t){p(this.contents)&&this.contents.addIn(e,t)}createAlias(e,n){if(!e.anchor){let t=c.anchorNames(this);e.anchor=!n||t.has(n)?c.findNewAnchor(n||`a`,t):n}return new t.Alias(e.anchor)}createNode(e,t,n){let i;if(typeof t==`function`)e=t.call({"":e},``,e),i=t;else if(Array.isArray(t)){let e=t.filter(e=>typeof e==`number`||e instanceof String||e instanceof Number).map(String);e.length>0&&(t=t.concat(e)),i=t}else n===void 0&&t&&(n=t,t=void 0);let{aliasDuplicateObjects:a,anchorPrefix:o,flow:s,keepUndefined:l,onTagObj:d,tag:f}=n??{},{onAnchor:p,setAnchors:m,sourceObjects:h}=c.createNodeAnchors(this,o||`a`),g={aliasDuplicateObjects:a??!0,keepUndefined:l??!1,onAnchor:p,onTagObj:d,replacer:i,schema:this.schema,sourceObjects:h},_=u.createNode(e,f,g);return s&&r.isCollection(_)&&(_.flow=!0),m(),_}createPair(e,t,n={}){let r=this.createNode(e,null,n),a=this.createNode(t,null,n);return new i.Pair(r,a)}delete(e){return p(this.contents)?this.contents.delete(e):!1}deleteIn(e){return n.isEmptyPath(e)?this.contents==null?!1:(this.contents=null,!0):p(this.contents)?this.contents.deleteIn(e):!1}get(e,t){return r.isCollection(this.contents)?this.contents.get(e,t):void 0}getIn(e,t){return n.isEmptyPath(e)?!t&&r.isScalar(this.contents)?this.contents.value:this.contents:r.isCollection(this.contents)?this.contents.getIn(e,t):void 0}has(e){return r.isCollection(this.contents)?this.contents.has(e):!1}hasIn(e){return n.isEmptyPath(e)?this.contents!==void 0:r.isCollection(this.contents)?this.contents.hasIn(e):!1}set(e,t){this.contents==null?this.contents=n.collectionFromPath(this.schema,[e],t):p(this.contents)&&this.contents.set(e,t)}setIn(e,t){n.isEmptyPath(e)?this.contents=t:this.contents==null?this.contents=n.collectionFromPath(this.schema,Array.from(e),t):p(this.contents)&&this.contents.setIn(e,t)}setSchema(e,t={}){typeof e==`number`&&(e=String(e));let n;switch(e){case`1.1`:this.directives?this.directives.yaml.version=`1.1`:this.directives=new d.Directives({version:`1.1`}),n={resolveKnownTags:!1,schema:`yaml-1.1`};break;case`1.2`:case`next`:this.directives?this.directives.yaml.version=e:this.directives=new d.Directives({version:e}),n={resolveKnownTags:!0,schema:`core`};break;case null:this.directives&&delete this.directives,n=null;break;default:{let t=JSON.stringify(e);throw Error(`Expected '1.1', '1.2' or null as first argument, but found: ${t}`)}}if(t.schema instanceof Object)this.schema=t.schema;else if(n)this.schema=new o.Schema(Object.assign(n,t));else throw Error(`With a null YAML version, the { schema: Schema } option is required`)}toJS({json:e,jsonArg:t,mapAsMap:n,maxAliasCount:r,onAnchor:i,reviver:o}={}){let s={anchors:new Map,doc:this,keep:!e,mapAsMap:n===!0,mapKeyWarned:!1,maxAliasCount:typeof r==`number`?r:100},c=a.toJS(this.contents,t??``,s);if(typeof i==`function`)for(let{count:e,res:t}of s.anchors.values())i(t,e);return typeof o==`function`?l.applyReviver(o,{"":c},``,c):c}toJSON(e,t){return this.toJS({json:!0,jsonArg:e,mapAsMap:!1,onAnchor:t})}toString(e={}){if(this.errors.length>0)throw Error(`Document with errors cannot be stringified`);if(`indent`in e&&(!Number.isInteger(e.indent)||Number(e.indent)<=0)){let t=JSON.stringify(e.indent);throw Error(`"indent" option must be a positive integer, not ${t}`)}return s.stringifyDocument(this,e)}};function p(e){if(r.isCollection(e))return!0;throw Error(`Expected a YAML collection as document contents`)}e.Document=f})),On=s((e=>{var t=class extends Error{constructor(e,t,n,r){super(),this.name=e,this.code=n,this.message=r,this.pos=t}},n=class extends t{constructor(e,t,n){super(`YAMLParseError`,e,t,n)}},r=class extends t{constructor(e,t,n){super(`YAMLWarning`,e,t,n)}};e.YAMLError=t,e.YAMLParseError=n,e.YAMLWarning=r,e.prettifyError=(e,t)=>n=>{if(n.pos[0]===-1)return;n.linePos=n.pos.map(e=>t.linePos(e));let{line:r,col:i}=n.linePos[0];n.message+=` at line ${r}, column ${i}`;let a=i-1,o=e.substring(t.lineStarts[r-1],t.lineStarts[r]).replace(/[\n\r]+$/,``);if(a>=60&&o.length>80){let e=Math.min(a-39,o.length-79);o=`…`+o.substring(e),a-=e-1}if(o.length>80&&(o=o.substring(0,79)+`…`),r>1&&/^ *$/.test(o.substring(0,a))){let n=e.substring(t.lineStarts[r-2],t.lineStarts[r-1]);n.length>80&&(n=n.substring(0,79)+`… +`),o=n+o}if(/[^ ]/.test(o)){let e=1,t=n.linePos[1];t&&t.line===r&&t.col>i&&(e=Math.max(1,Math.min(t.col-i,80-a)));let s=` `.repeat(a)+`^`.repeat(e);n.message+=`:\n\n${o}\n${s}\n`}}})),kn=s((e=>{function t(e,{flow:t,indicator:n,next:r,offset:i,onError:a,parentIndent:o,startOnNewline:s}){let c=!1,l=s,u=s,d=``,f=``,p=!1,m=!1,h=null,g=null,_=null,v=null,y=null,b=null,x=null;for(let i of e)switch(m&&=(i.type!==`space`&&i.type!==`newline`&&i.type!==`comma`&&a(i.offset,`MISSING_CHAR`,`Tags and anchors must be separated from the next token by white space`),!1),h&&=(l&&i.type!==`comment`&&i.type!==`newline`&&a(h,`TAB_AS_INDENT`,`Tabs are not allowed as indentation`),null),i.type){case`space`:!t&&(n!==`doc-start`||r?.type!==`flow-collection`)&&i.source.includes(` `)&&(h=i),u=!0;break;case`comment`:{u||a(i,`MISSING_CHAR`,`Comments must be separated from other tokens by white space characters`);let e=i.source.substring(1)||` `;d?d+=f+e:d=e,f=``,l=!1;break}case`newline`:l?d?d+=i.source:(!b||n!==`seq-item-ind`)&&(c=!0):f+=i.source,l=!0,p=!0,(g||_)&&(v=i),u=!0;break;case`anchor`:g&&a(i,`MULTIPLE_ANCHORS`,`A node can have at most one anchor`),i.source.endsWith(`:`)&&a(i.offset+i.source.length-1,`BAD_ALIAS`,`Anchor ending in : is ambiguous`,!0),g=i,x??=i.offset,l=!1,u=!1,m=!0;break;case`tag`:_&&a(i,`MULTIPLE_TAGS`,`A node can have at most one tag`),_=i,x??=i.offset,l=!1,u=!1,m=!0;break;case n:(g||_)&&a(i,`BAD_PROP_ORDER`,`Anchors and tags must be after the ${i.source} indicator`),b&&a(i,`UNEXPECTED_TOKEN`,`Unexpected ${i.source} in ${t??`collection`}`),b=i,l=n===`seq-item-ind`||n===`explicit-key-ind`,u=!1;break;case`comma`:if(t){y&&a(i,`UNEXPECTED_TOKEN`,`Unexpected , in ${t}`),y=i,l=!1,u=!1;break}default:a(i,`UNEXPECTED_TOKEN`,`Unexpected ${i.type} token`),l=!1,u=!1}let S=e[e.length-1],C=S?S.offset+S.source.length:i;return m&&r&&r.type!==`space`&&r.type!==`newline`&&r.type!==`comma`&&(r.type!==`scalar`||r.source!==``)&&a(r.offset,`MISSING_CHAR`,`Tags and anchors must be separated from the next token by white space`),h&&(l&&h.indent<=o||r?.type===`block-map`||r?.type===`block-seq`)&&a(h,`TAB_AS_INDENT`,`Tabs are not allowed as indentation`),{comma:y,found:b,spaceBefore:c,comment:d,hasNewline:p,anchor:g,tag:_,newlineAfterProp:v,end:C,start:x??C}}e.resolveProps=t})),An=s((e=>{function t(e){if(!e)return null;switch(e.type){case`alias`:case`scalar`:case`double-quoted-scalar`:case`single-quoted-scalar`:if(e.source.includes(` +`))return!0;if(e.end){for(let t of e.end)if(t.type===`newline`)return!0}return!1;case`flow-collection`:for(let n of e.items){for(let e of n.start)if(e.type===`newline`)return!0;if(n.sep){for(let e of n.sep)if(e.type===`newline`)return!0}if(t(n.key)||t(n.value))return!0}return!1;default:return!0}}e.containsNewline=t})),jn=s((e=>{var t=An();function n(e,n,r){if(n?.type===`flow-collection`){let i=n.end[0];i.indent===e&&(i.source===`]`||i.source===`}`)&&t.containsNewline(n)&&r(i,`BAD_INDENT`,`Flow end indicator should be more indented than parent`,!0)}}e.flowIndentCheck=n})),Mn=s((e=>{var t=Lt();function n(e,n,r){let{uniqueKeys:i}=e.options;if(i===!1)return!1;let a=typeof i==`function`?i:(e,n)=>e===n||t.isScalar(e)&&t.isScalar(n)&&e.value===n.value;return n.some(e=>a(e.key,r))}e.mapIncludes=n})),Nn=s((e=>{var t=$(),n=nn(),r=kn(),i=An(),a=jn(),o=Mn();let s=`All mapping items must start at the same column`;function c({composeNode:e,composeEmptyNode:c},l,u,d,f){let p=new(f?.nodeClass??n.YAMLMap)(l.schema);l.atRoot&&=!1;let m=u.offset,h=null;for(let n of u.items){let{start:f,key:g,sep:_,value:v}=n,y=r.resolveProps(f,{indicator:`explicit-key-ind`,next:g??_?.[0],offset:m,onError:d,parentIndent:u.indent,startOnNewline:!0}),b=!y.found;if(b){if(g&&(g.type===`block-seq`?d(m,`BLOCK_AS_IMPLICIT_KEY`,`A block sequence may not be used as an implicit map key`):`indent`in g&&g.indent!==u.indent&&d(m,`BAD_INDENT`,s)),!y.anchor&&!y.tag&&!_){h=y.end,y.comment&&(p.comment?p.comment+=` +`+y.comment:p.comment=y.comment);continue}(y.newlineAfterProp||i.containsNewline(g))&&d(g??f[f.length-1],`MULTILINE_IMPLICIT_KEY`,`Implicit keys need to be on a single line`)}else y.found?.indent!==u.indent&&d(m,`BAD_INDENT`,s);l.atKey=!0;let x=y.end,S=g?e(l,g,y,d):c(l,x,f,null,y,d);l.schema.compat&&a.flowIndentCheck(u.indent,g,d),l.atKey=!1,o.mapIncludes(l,p.items,S)&&d(x,`DUPLICATE_KEY`,`Map keys must be unique`);let C=r.resolveProps(_??[],{indicator:`map-value-ind`,next:v,offset:S.range[2],onError:d,parentIndent:u.indent,startOnNewline:!g||g.type===`block-scalar`});if(m=C.end,C.found){b&&(v?.type===`block-map`&&!C.hasNewline&&d(m,`BLOCK_AS_IMPLICIT_KEY`,`Nested mappings are not allowed in compact mappings`),l.options.strict&&y.start{var t=an(),n=kn(),r=jn();function i({composeNode:e,composeEmptyNode:i},a,o,s,c){let l=new(c?.nodeClass??t.YAMLSeq)(a.schema);a.atRoot&&=!1,a.atKey&&=!1;let u=o.offset,d=null;for(let{start:t,value:c}of o.items){let f=n.resolveProps(t,{indicator:`seq-item-ind`,next:c,offset:u,onError:s,parentIndent:o.indent,startOnNewline:!0});if(!f.found)if(f.anchor||f.tag||c)c&&c.type===`block-seq`?s(f.end,`BAD_INDENT`,`All sequence items must start at the same column`):s(u,`MISSING_CHAR`,`Sequence item without - indicator`);else{d=f.end,f.comment&&(l.comment=f.comment);continue}let p=c?e(a,c,f,s):i(a,f.end,t,null,f,s);a.schema.compat&&r.flowIndentCheck(o.indent,c,s),u=p.range[2],l.items.push(p)}return l.range=[o.offset,u,d??u],l}e.resolveBlockSeq=i})),Fn=s((e=>{function t(e,t,n,r){let i=``;if(e){let a=!1,o=``;for(let s of e){let{source:e,type:c}=s;switch(c){case`space`:a=!0;break;case`comment`:{n&&!a&&r(s,`MISSING_CHAR`,`Comments must be separated from other tokens by white space characters`);let t=e.substring(1)||` `;i?i+=o+t:i=t,o=``;break}case`newline`:i&&(o+=e),a=!0;break;default:r(s,`UNEXPECTED_TOKEN`,`Unexpected ${c} at node end`)}t+=e.length}}return{comment:i,offset:t}}e.resolveEnd=t})),In=s((e=>{var t=Lt(),n=$(),r=nn(),i=an(),a=Fn(),o=kn(),s=An(),c=Mn();let l=`Block collections are not allowed within flow collections`,u=e=>e&&(e.type===`block-map`||e.type===`block-seq`);function d({composeNode:e,composeEmptyNode:d},f,p,m,h){let g=p.start.source===`{`,_=g?`flow map`:`flow sequence`,v=new(h?.nodeClass??(g?r.YAMLMap:i.YAMLSeq))(f.schema);v.flow=!0;let y=f.atRoot;y&&(f.atRoot=!1),f.atKey&&=!1;let b=p.offset+p.start.source.length;for(let i=0;i0){let e=a.resolveEnd(C,w,f.options.strict,m);e.comment&&(v.comment?v.comment+=` +`+e.comment:v.comment=e.comment),v.range=[p.offset,w,e.offset]}else v.range=[p.offset,w,w];return v}e.resolveFlowCollection=d})),Ln=s((e=>{var t=Lt(),n=Wt(),r=nn(),i=an(),a=Nn(),o=Pn(),s=In();function c(e,t,n,r,i,c){let l=n.type===`block-map`?a.resolveBlockMap(e,t,n,r,c):n.type===`block-seq`?o.resolveBlockSeq(e,t,n,r,c):s.resolveFlowCollection(e,t,n,r,c),u=l.constructor;return i===`!`||i===u.tagName?(l.tag=u.tagName,l):(i&&(l.tag=i),l)}function l(e,a,o,s,l){let u=s.tag,d=u?a.directives.tagName(u.source,e=>l(u,`TAG_RESOLVE_FAILED`,e)):null;if(o.type===`block-seq`){let{anchor:e,newlineAfterProp:t}=s,n=e&&u?e.offset>u.offset?e:u:e??u;n&&(!t||t.offsete.tag===d&&e.collection===f);if(!p){let t=a.schema.knownTags[d];if(t&&t.collection===f)a.schema.tags.push(Object.assign({},t,{default:!1})),p=t;else return t?l(u,`BAD_COLLECTION_TYPE`,`${t.tag} used for ${f} collection, but expects ${t.collection??`scalar`}`,!0):l(u,`TAG_RESOLVE_FAILED`,`Unresolved tag: ${d}`,!0),c(e,a,o,l,d)}let m=c(e,a,o,l,d,p),h=p.resolve?.(m,e=>l(u,`TAG_RESOLVE_FAILED`,e),a.options)??m,g=t.isNode(h)?h:new n.Scalar(h);return g.range=m.range,g.tag=d,p?.format&&(g.format=p.format),g}e.composeCollection=l})),Rn=s((e=>{var t=Wt();function n(e,n,a){let o=n.offset,s=r(n,e.options.strict,a);if(!s)return{value:``,type:null,comment:``,range:[o,o,o]};let c=s.mode===`>`?t.Scalar.BLOCK_FOLDED:t.Scalar.BLOCK_LITERAL,l=n.source?i(n.source):[],u=l.length;for(let e=l.length-1;e>=0;--e){let t=l[e][1];if(t===``||t===`\r`)u=e;else break}if(u===0){let e=s.chomp===`+`&&l.length>0?` +`.repeat(Math.max(1,l.length-1)):``,t=o+s.length;return n.source&&(t+=n.source.length),{value:e,type:c,comment:s.comment,range:[o,t,t]}}let d=n.indent+s.indent,f=n.offset+s.length,p=0;for(let t=0;td&&(d=n.length);else{n.length=u;--e)l[e][0].length>d&&(u=e+1);let m=``,h=``,g=!1;for(let e=0;ed||r[0]===` `?(h===` `?h=` +`:!g&&h===` +`&&(h=` + +`),m+=h+n.slice(d)+r,h=` +`,g=!0):r===``?h===` +`?m+=` +`:h=` +`:(m+=h+r,h=` `,g=!1)}switch(s.chomp){case`-`:break;case`+`:for(let e=u;e{var t=Wt(),n=Fn();function r(e,r,o){let{offset:c,type:l,source:u,end:d}=e,f,p,m=(e,t,n)=>o(c+e,t,n);switch(l){case`scalar`:f=t.Scalar.PLAIN,p=i(u,m);break;case`single-quoted-scalar`:f=t.Scalar.QUOTE_SINGLE,p=a(u,m);break;case`double-quoted-scalar`:f=t.Scalar.QUOTE_DOUBLE,p=s(u,m);break;default:return o(e,`UNEXPECTED_TOKEN`,`Expected a flow scalar value, but found: ${l}`),{value:``,type:null,comment:``,range:[c,c+u.length,c+u.length]}}let h=c+u.length,g=n.resolveEnd(d,h,r,o);return{value:p,type:f,comment:g.comment,range:[c,h,g.offset]}}function i(e,t){let n=``;switch(e[0]){case` `:n=`a tab character`;break;case`,`:n=`flow indicator character ,`;break;case`%`:n=`directive indicator character %`;break;case`|`:case`>`:n=`block scalar indicator ${e[0]}`;break;case`@`:case"`":n=`reserved character ${e[0]}`;break}return n&&t(0,`BAD_SCALAR_START`,`Plain value cannot start with ${n}`),o(e)}function a(e,t){return(e[e.length-1]!==`'`||e.length===1)&&t(e.length,`MISSING_CHAR`,`Missing closing 'quote`),o(e.slice(1,-1)).replace(/''/g,`'`)}function o(e){let t,n;try{t=RegExp(`(.*?)(?t?e.slice(t,r+1):i)}else n+=i}return(e[e.length-1]!==`"`||e.length===1)&&t(e.length,`MISSING_CHAR`,`Missing closing "quote`),n}function c(e,t){let n=``,r=e[t+1];for(;(r===` `||r===` `||r===` +`||r===`\r`)&&!(r===`\r`&&e[t+2]!==` +`);)r===` +`&&(n+=` +`),t+=1,r=e[t+1];return n||=` `,{fold:n,offset:t}}let l={0:`\0`,a:`\x07`,b:`\b`,e:`\x1B`,f:`\f`,n:` +`,r:`\r`,t:` `,v:`\v`,N:`…`,_:`\xA0`,L:`\u2028`,P:`\u2029`," ":` `,'"':`"`,"/":`/`,"\\":`\\`," ":` `};function u(e,t,n,r){let i=e.substr(t,n),a=i.length===n&&/^[0-9a-fA-F]+$/.test(i)?parseInt(i,16):NaN;if(isNaN(a)){let i=e.substr(t-2,n+2);return r(t-2,`BAD_DQ_ESCAPE`,`Invalid escape sequence ${i}`),i}return String.fromCodePoint(a)}e.resolveFlowScalar=r})),Bn=s((e=>{var t=Lt(),n=Wt(),r=Rn(),i=zn();function a(e,a,c,l){let{value:u,type:d,comment:f,range:p}=a.type===`block-scalar`?r.resolveBlockScalar(e,a,l):i.resolveFlowScalar(a,e.options.strict,l),m=c?e.directives.tagName(c.source,e=>l(c,`TAG_RESOLVE_FAILED`,e)):null,h;h=e.options.stringKeys&&e.atKey?e.schema[t.SCALAR]:m?o(e.schema,u,m,c,l):a.type===`scalar`?s(e,u,a,l):e.schema[t.SCALAR];let g;try{let r=h.resolve(u,e=>l(c??a,`TAG_RESOLVE_FAILED`,e),e.options);g=t.isScalar(r)?r:new n.Scalar(r)}catch(e){let t=e instanceof Error?e.message:String(e);l(c??a,`TAG_RESOLVE_FAILED`,t),g=new n.Scalar(u)}return g.range=p,g.source=u,d&&(g.type=d),m&&(g.tag=m),h.format&&(g.format=h.format),f&&(g.comment=f),g}function o(e,n,r,i,a){if(r===`!`)return e[t.SCALAR];let o=[];for(let t of e.tags)if(!t.collection&&t.tag===r)if(t.default&&t.test)o.push(t);else return t;for(let e of o)if(e.test?.test(n))return e;let s=e.knownTags[r];return s&&!s.collection?(e.tags.push(Object.assign({},s,{default:!1,test:void 0})),s):(a(i,`TAG_RESOLVE_FAILED`,`Unresolved tag: ${r}`,r!==`tag:yaml.org,2002:str`),e[t.SCALAR])}function s({atKey:e,directives:n,schema:r},i,a,o){let s=r.tags.find(t=>(t.default===!0||e&&t.default===`key`)&&t.test?.test(i))||r[t.SCALAR];if(r.compat){let e=r.compat.find(e=>e.default&&e.test?.test(i))??r[t.SCALAR];s.tag!==e.tag&&o(a,`TAG_RESOLVE_FAILED`,`Value may be parsed as either ${n.tagString(s.tag)} or ${n.tagString(e.tag)}`,!0)}return s}e.composeScalar=a})),Vn=s((e=>{function t(e,t,n){if(t){n??=t.length;for(let r=n-1;r>=0;--r){let n=t[r];switch(n.type){case`space`:case`comment`:case`newline`:e-=n.source.length;continue}for(n=t[++r];n?.type===`space`;)e+=n.source.length,n=t[++r];break}}return e}e.emptyScalarPosition=t})),Hn=s((e=>{var t=Ut(),n=Lt(),r=Ln(),i=Bn(),a=Fn(),o=Vn();let s={composeNode:c,composeEmptyNode:l};function c(e,t,a,o){let c=e.atKey,{spaceBefore:d,comment:f,anchor:p,tag:m}=a,h,g=!0;switch(t.type){case`alias`:h=u(e,t,o),(p||m)&&o(t,`ALIAS_PROPS`,`An alias node must not specify any properties`);break;case`scalar`:case`single-quoted-scalar`:case`double-quoted-scalar`:case`block-scalar`:h=i.composeScalar(e,t,m,o),p&&(h.anchor=p.source.substring(1));break;case`block-map`:case`block-seq`:case`flow-collection`:h=r.composeCollection(s,e,t,a,o),p&&(h.anchor=p.source.substring(1));break;default:o(t,`UNEXPECTED_TOKEN`,t.type===`error`?t.message:`Unsupported token (type: ${t.type})`),h=l(e,t.offset,void 0,null,a,o),g=!1}return p&&h.anchor===``&&o(p,`BAD_ALIAS`,`Anchor cannot be an empty string`),c&&e.options.stringKeys&&(!n.isScalar(h)||typeof h.value!=`string`||h.tag&&h.tag!==`tag:yaml.org,2002:str`)&&o(m??t,`NON_STRING_KEY`,`With stringKeys, all keys must be strings`),d&&(h.spaceBefore=!0),f&&(t.type===`scalar`&&t.source===``?h.comment=f:h.commentBefore=f),e.options.keepSourceTokens&&g&&(h.srcToken=t),h}function l(e,t,n,r,{spaceBefore:a,comment:s,anchor:c,tag:l,end:u},d){let f={type:`scalar`,offset:o.emptyScalarPosition(t,n,r),indent:-1,source:``},p=i.composeScalar(e,f,l,d);return c&&(p.anchor=c.source.substring(1),p.anchor===``&&d(c,`BAD_ALIAS`,`Anchor cannot be an empty string`)),a&&(p.spaceBefore=!0),s&&(p.comment=s,p.range[2]=u),p}function u({options:e},{offset:n,source:r,end:i},o){let s=new t.Alias(r.substring(1));s.source===``&&o(n,`BAD_ALIAS`,`Alias cannot be an empty string`),s.source.endsWith(`:`)&&o(n+r.length-1,`BAD_ALIAS`,`Alias ending in : is ambiguous`,!0);let c=n+r.length,l=a.resolveEnd(i,c,e.strict,o);return s.range=[n,c,l.offset],l.comment&&(s.comment=l.comment),s}e.composeEmptyNode=l,e.composeNode=c})),Un=s((e=>{var t=Dn(),n=Hn(),r=Fn(),i=kn();function a(e,a,{offset:o,start:s,value:c,end:l},u){let d=Object.assign({_directives:a},e),f=new t.Document(void 0,d),p={atKey:!1,atRoot:!0,directives:f.directives,options:f.options,schema:f.schema},m=i.resolveProps(s,{indicator:`doc-start`,next:c??l?.[0],offset:o,onError:u,parentIndent:0,startOnNewline:!0});m.found&&(f.directives.docStart=!0,c&&(c.type===`block-map`||c.type===`block-seq`)&&!m.hasNewline&&u(m.end,`MISSING_CHAR`,`Block collection cannot start on same line with directives-end marker`)),f.contents=c?n.composeNode(p,c,m,u):n.composeEmptyNode(p,m.end,s,null,m,u);let h=f.contents.range[2],g=r.resolveEnd(l,h,!1,u);return g.comment&&(f.comment=g.comment),f.range=[o,h,g.offset],f}e.composeDoc=a})),Wn=s((e=>{var t=require(`process`),n=Q(),r=Dn(),i=On(),a=Lt(),o=Un(),s=Fn();function c(e){if(typeof e==`number`)return[e,e+1];if(Array.isArray(e))return e.length===2?e:[e[0],e[1]];let{offset:t,source:n}=e;return[t,t+(typeof n==`string`?n.length:1)]}function l(e){let t=``,n=!1,r=!1;for(let i=0;i{let a=c(e);r?this.warnings.push(new i.YAMLWarning(a,t,n)):this.errors.push(new i.YAMLParseError(a,t,n))},this.directives=new n.Directives({version:e.version||`1.2`}),this.options=e}decorate(e,t){let{comment:n,afterEmptyLine:r}=l(this.prelude);if(n){let i=e.contents;if(t)e.comment=e.comment?`${e.comment}\n${n}`:n;else if(r||e.directives.docStart||!i)e.commentBefore=n;else if(a.isCollection(i)&&!i.flow&&i.items.length>0){let e=i.items[0];a.isPair(e)&&(e=e.key);let t=e.commentBefore;e.commentBefore=t?`${n}\n${t}`:n}else{let e=i.commentBefore;i.commentBefore=e?`${n}\n${e}`:n}}t?(Array.prototype.push.apply(e.errors,this.errors),Array.prototype.push.apply(e.warnings,this.warnings)):(e.errors=this.errors,e.warnings=this.warnings),this.prelude=[],this.errors=[],this.warnings=[]}streamInfo(){return{comment:l(this.prelude).comment,directives:this.directives,errors:this.errors,warnings:this.warnings}}*compose(e,t=!1,n=-1){for(let t of e)yield*this.next(t);yield*this.end(t,n)}*next(e){switch(t.env.LOG_STREAM&&console.dir(e,{depth:null}),e.type){case`directive`:this.directives.add(e.source,(t,n,r)=>{let i=c(e);i[0]+=t,this.onError(i,`BAD_DIRECTIVE`,n,r)}),this.prelude.push(e.source),this.atDirectives=!0;break;case`document`:{let t=o.composeDoc(this.options,this.directives,e,this.onError);this.atDirectives&&!t.directives.docStart&&this.onError(e,`MISSING_CHAR`,`Missing directives-end/doc-start indicator line`),this.decorate(t,!1),this.doc&&(yield this.doc),this.doc=t,this.atDirectives=!1;break}case`byte-order-mark`:case`space`:break;case`comment`:case`newline`:this.prelude.push(e.source);break;case`error`:{let t=e.source?`${e.message}: ${JSON.stringify(e.source)}`:e.message,n=new i.YAMLParseError(c(e),`UNEXPECTED_TOKEN`,t);this.atDirectives||!this.doc?this.errors.push(n):this.doc.errors.push(n);break}case`doc-end`:{if(!this.doc){this.errors.push(new i.YAMLParseError(c(e),`UNEXPECTED_TOKEN`,`Unexpected doc-end without preceding document`));break}this.doc.directives.docEnd=!0;let t=s.resolveEnd(e.end,e.offset+e.source.length,this.doc.options.strict,this.onError);if(this.decorate(this.doc,!0),t.comment){let e=this.doc.comment;this.doc.comment=e?`${e}\n${t.comment}`:t.comment}this.doc.range[2]=t.offset;break}default:this.errors.push(new i.YAMLParseError(c(e),`UNEXPECTED_TOKEN`,`Unsupported token ${e.type}`))}}*end(e=!1,t=-1){if(this.doc)this.decorate(this.doc,!0),yield this.doc,this.doc=null;else if(e){let e=Object.assign({_directives:this.directives},this.options),n=new r.Document(void 0,e);this.atDirectives&&this.onError(t,`MISSING_CHAR`,`Missing directives-end indicator line`),n.range=[0,t,t],this.decorate(n,!1),yield n}}}})),Gn=s((e=>{var t=Rn(),n=zn(),r=On(),i=Yt();function a(e,i=!0,a){if(e){let o=(e,t,n)=>{let i=typeof e==`number`?e:Array.isArray(e)?e[0]:e.offset;if(a)a(i,t,n);else throw new r.YAMLParseError([i,i+1],t,n)};switch(e.type){case`scalar`:case`single-quoted-scalar`:case`double-quoted-scalar`:return n.resolveFlowScalar(e,i,o);case`block-scalar`:return t.resolveBlockScalar({options:{strict:i}},e,o)}}return null}function o(e,t){let{implicitKey:n=!1,indent:r,inFlow:a=!1,offset:o=-1,type:s=`PLAIN`}=t,c=i.stringifyString({type:s,value:e},{implicitKey:n,indent:r>0?` `.repeat(r):``,inFlow:a,options:{blockQuote:!0,lineWidth:-1}}),u=t.end??[{type:`newline`,offset:-1,indent:r,source:` +`}];switch(c[0]){case`|`:case`>`:{let e=c.indexOf(` +`),t=c.substring(0,e),n=c.substring(e+1)+` +`,i=[{type:`block-scalar-header`,offset:o,indent:r,source:t}];return l(i,u)||i.push({type:`newline`,offset:-1,indent:r,source:` +`}),{type:`block-scalar`,offset:o,indent:r,props:i,source:n}}case`"`:return{type:`double-quoted-scalar`,offset:o,indent:r,source:c,end:u};case`'`:return{type:`single-quoted-scalar`,offset:o,indent:r,source:c,end:u};default:return{type:`scalar`,offset:o,indent:r,source:c,end:u}}}function s(e,t,n={}){let{afterKey:r=!1,implicitKey:a=!1,inFlow:o=!1,type:s}=n,l=`indent`in e?e.indent:null;if(r&&typeof l==`number`&&(l+=2),!s)switch(e.type){case`single-quoted-scalar`:s=`QUOTE_SINGLE`;break;case`double-quoted-scalar`:s=`QUOTE_DOUBLE`;break;case`block-scalar`:{let t=e.props[0];if(t.type!==`block-scalar-header`)throw Error(`Invalid block scalar header`);s=t.source[0]===`>`?`BLOCK_FOLDED`:`BLOCK_LITERAL`;break}default:s=`PLAIN`}let d=i.stringifyString({type:s,value:t},{implicitKey:a||l===null,indent:l!==null&&l>0?` `.repeat(l):``,inFlow:o,options:{blockQuote:!0,lineWidth:-1}});switch(d[0]){case`|`:case`>`:c(e,d);break;case`"`:u(e,d,`double-quoted-scalar`);break;case`'`:u(e,d,`single-quoted-scalar`);break;default:u(e,d,`scalar`)}}function c(e,t){let n=t.indexOf(` +`),r=t.substring(0,n),i=t.substring(n+1)+` +`;if(e.type===`block-scalar`){let t=e.props[0];if(t.type!==`block-scalar-header`)throw Error(`Invalid block scalar header`);t.source=r,e.source=i}else{let{offset:t}=e,n=`indent`in e?e.indent:-1,a=[{type:`block-scalar-header`,offset:t,indent:n,source:r}];l(a,`end`in e?e.end:void 0)||a.push({type:`newline`,offset:-1,indent:n,source:` +`});for(let t of Object.keys(e))t!==`type`&&t!==`offset`&&delete e[t];Object.assign(e,{type:`block-scalar`,indent:n,props:a,source:i})}}function l(e,t){if(t)for(let n of t)switch(n.type){case`space`:case`comment`:e.push(n);break;case`newline`:return e.push(n),!0}return!1}function u(e,t,n){switch(e.type){case`scalar`:case`double-quoted-scalar`:case`single-quoted-scalar`:e.type=n,e.source=t;break;case`block-scalar`:{let r=e.props.slice(1),i=t.length;e.props[0].type===`block-scalar-header`&&(i-=e.props[0].source.length);for(let e of r)e.offset+=i;delete e.props,Object.assign(e,{type:n,source:t,end:r});break}case`block-map`:case`block-seq`:{let r={type:`newline`,offset:e.offset+t.length,indent:e.indent,source:` +`};delete e.items,Object.assign(e,{type:n,source:t,end:[r]});break}default:{let r=`indent`in e?e.indent:-1,i=`end`in e&&Array.isArray(e.end)?e.end.filter(e=>e.type===`space`||e.type===`comment`||e.type===`newline`):[];for(let t of Object.keys(e))t!==`type`&&t!==`offset`&&delete e[t];Object.assign(e,{type:n,indent:r,source:t,end:i})}}}e.createScalarToken=o,e.resolveAsScalar=a,e.setScalarValue=s})),Kn=s((e=>{let t=e=>`type`in e?n(e):r(e);function n(e){switch(e.type){case`block-scalar`:{let t=``;for(let r of e.props)t+=n(r);return t+e.source}case`block-map`:case`block-seq`:{let t=``;for(let n of e.items)t+=r(n);return t}case`flow-collection`:{let t=e.start.source;for(let n of e.items)t+=r(n);for(let n of e.end)t+=n.source;return t}case`document`:{let t=r(e);if(e.end)for(let n of e.end)t+=n.source;return t}default:{let t=e.source;if(`end`in e&&e.end)for(let n of e.end)t+=n.source;return t}}}function r({start:e,key:t,sep:r,value:i}){let a=``;for(let t of e)a+=t.source;if(t&&(a+=n(t)),r)for(let e of r)a+=e.source;return i&&(a+=n(i)),a}e.stringify=t})),qn=s((e=>{let t=Symbol(`break visit`),n=Symbol(`skip children`),r=Symbol(`remove item`);function i(e,t){`type`in e&&e.type===`document`&&(e={start:e.start,value:e.value}),a(Object.freeze([]),e,t)}i.BREAK=t,i.SKIP=n,i.REMOVE=r,i.itemAtPath=(e,t)=>{let n=e;for(let[e,r]of t){let t=n?.[e];if(t&&`items`in t)n=t.items[r];else return}return n},i.parentCollection=(e,t)=>{let n=i.itemAtPath(e,t.slice(0,-1)),r=t[t.length-1][0],a=n?.[r];if(a&&`items`in a)return a;throw Error(`Parent collection not found`)};function a(e,n,i){let o=i(n,e);if(typeof o==`symbol`)return o;for(let s of[`key`,`value`]){let c=n[s];if(c&&`items`in c){for(let n=0;n{var t=Gn(),n=Kn(),r=qn();let i=e=>!!e&&`items`in e,a=e=>!!e&&(e.type===`scalar`||e.type===`single-quoted-scalar`||e.type===`double-quoted-scalar`||e.type===`block-scalar`);function o(e){switch(e){case``:return``;case``:return``;case``:return``;case``:return``;default:return JSON.stringify(e)}}function s(e){switch(e){case``:return`byte-order-mark`;case``:return`doc-mode`;case``:return`flow-error-end`;case``:return`scalar`;case`---`:return`doc-start`;case`...`:return`doc-end`;case``:case` +`:case`\r +`:return`newline`;case`-`:return`seq-item-ind`;case`?`:return`explicit-key-ind`;case`:`:return`map-value-ind`;case`{`:return`flow-map-start`;case`}`:return`flow-map-end`;case`[`:return`flow-seq-start`;case`]`:return`flow-seq-end`;case`,`:return`comma`}switch(e[0]){case` `:case` `:return`space`;case`#`:return`comment`;case`%`:return`directive-line`;case`*`:return`alias`;case`&`:return`anchor`;case`!`:return`tag`;case`'`:return`single-quoted-scalar`;case`"`:return`double-quoted-scalar`;case`|`:case`>`:return`block-scalar-header`}return null}e.createScalarToken=t.createScalarToken,e.resolveAsScalar=t.resolveAsScalar,e.setScalarValue=t.setScalarValue,e.stringify=n.stringify,e.visit=r.visit,e.BOM=``,e.DOCUMENT=``,e.FLOW_END=``,e.SCALAR=``,e.isCollection=i,e.isScalar=a,e.prettyToken=o,e.tokenType=s})),Yn=s((e=>{var t=Jn();function n(e){switch(e){case void 0:case` `:case` +`:case`\r`:case` `:return!0;default:return!1}}let r=new Set(`0123456789ABCDEFabcdef`),i=new Set(`0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-#;/?:@&=+$_.!~*'()`),a=new Set(`,[]{}`),o=new Set(` ,[]{} +\r `),s=e=>!e||o.has(e);e.Lexer=class{constructor(){this.atEnd=!1,this.blockScalarIndent=-1,this.blockScalarKeep=!1,this.buffer=``,this.flowKey=!1,this.flowLevel=0,this.indentNext=0,this.indentValue=0,this.lineEndPos=null,this.next=null,this.pos=0}*lex(e,t=!1){if(e){if(typeof e!=`string`)throw TypeError(`source is not a string`);this.buffer=this.buffer?this.buffer+e:e,this.lineEndPos=null}this.atEnd=!t;let n=this.next??`stream`;for(;n&&(t||this.hasChars(1));)n=yield*this.parseNext(n)}atLineEnd(){let e=this.pos,t=this.buffer[e];for(;t===` `||t===` `;)t=this.buffer[++e];return!t||t===`#`||t===` +`?!0:t===`\r`?this.buffer[e+1]===` +`:!1}charAt(e){return this.buffer[this.pos+e]}continueScalar(e){let t=this.buffer[e];if(this.indentNext>0){let n=0;for(;t===` `;)t=this.buffer[++n+e];if(t===`\r`){let t=this.buffer[n+e+1];if(t===` +`||!t&&!this.atEnd)return e+n+1}return t===` +`||n>=this.indentNext||!t&&!this.atEnd?e+n:-1}if(t===`-`||t===`.`){let t=this.buffer.substr(e,3);if((t===`---`||t===`...`)&&n(this.buffer[e+3]))return-1}return e}getLine(){let e=this.lineEndPos;return(typeof e!=`number`||e!==-1&&ethis.indentValue&&!n(this.charAt(1))&&(this.indentNext=this.indentValue),yield*this.parseBlockStart()}*parseBlockStart(){let[e,t]=this.peek(2);if(!t&&!this.atEnd)return this.setNext(`block-start`);if((e===`-`||e===`?`||e===`:`)&&n(t)){let e=(yield*this.pushCount(1))+(yield*this.pushSpaces(!0));return this.indentNext=this.indentValue+1,this.indentValue+=e,yield*this.parseBlockStart()}return`doc`}*parseDocument(){yield*this.pushSpaces(!0);let e=this.getLine();if(e===null)return this.setNext(`doc`);let t=yield*this.pushIndicators();switch(e[t]){case`#`:yield*this.pushCount(e.length-t);case void 0:return yield*this.pushNewline(),yield*this.parseLineStart();case`{`:case`[`:return yield*this.pushCount(1),this.flowKey=!1,this.flowLevel=1,`flow`;case`}`:case`]`:return yield*this.pushCount(1),`doc`;case`*`:return yield*this.pushUntil(s),`doc`;case`"`:case`'`:return yield*this.parseQuotedScalar();case`|`:case`>`:return t+=yield*this.parseBlockScalarHeader(),t+=yield*this.pushSpaces(!0),yield*this.pushCount(e.length-t),yield*this.pushNewline(),yield*this.parseBlockScalar();default:return yield*this.parsePlainScalar()}}*parseFlowCollection(){let e,r,i=-1;do e=yield*this.pushNewline(),e>0?(r=yield*this.pushSpaces(!1),this.indentValue=i=r):r=0,r+=yield*this.pushSpaces(!0);while(e+r>0);let a=this.getLine();if(a===null)return this.setNext(`flow`);if((i!==-1&&i`0`&&t<=`9`)this.blockScalarIndent=Number(t)-1;else if(t!==`-`)break}return yield*this.pushUntil(e=>n(e)||e===`#`)}*parseBlockScalar(){let e=this.pos-1,n=0,r;loop:for(let t=this.pos;r=this.buffer[t];++t)switch(r){case` `:n+=1;break;case` +`:e=t,n=0;break;case`\r`:{let e=this.buffer[t+1];if(!e&&!this.atEnd)return this.setNext(`block-scalar`);if(e===` +`)break}default:break loop}if(!r&&!this.atEnd)return this.setNext(`block-scalar`);if(n>=this.indentNext){this.blockScalarIndent===-1?this.indentNext=n:this.indentNext=this.blockScalarIndent+(this.indentNext===0?1:this.indentNext);do{let t=this.continueScalar(e+1);if(t===-1)break;e=this.buffer.indexOf(` +`,t)}while(e!==-1);if(e===-1){if(!this.atEnd)return this.setNext(`block-scalar`);e=this.buffer.length}}let i=e+1;for(r=this.buffer[i];r===` `;)r=this.buffer[++i];if(r===` `){for(;r===` `||r===` `||r===`\r`||r===` +`;)r=this.buffer[++i];e=i-1}else if(!this.blockScalarKeep)do{let t=e-1,r=this.buffer[t];r===`\r`&&(r=this.buffer[--t]);let i=t;for(;r===` `;)r=this.buffer[--t];if(r===` +`&&t>=this.pos&&t+1+n>i)e=t;else break}while(!0);return yield t.SCALAR,yield*this.pushToIndex(e+1,!0),yield*this.parseLineStart()}*parsePlainScalar(){let e=this.flowLevel>0,r=this.pos-1,i=this.pos-1,o;for(;o=this.buffer[++i];)if(o===`:`){let t=this.buffer[i+1];if(n(t)||e&&a.has(t))break;r=i}else if(n(o)){let t=this.buffer[i+1];if(o===`\r`&&(t===` +`?(i+=1,o=` +`,t=this.buffer[i+1]):r=i),t===`#`||e&&a.has(t))break;if(o===` +`){let e=this.continueScalar(i+1);if(e===-1)break;i=Math.max(i,e-2)}}else{if(e&&a.has(o))break;r=i}return!o&&!this.atEnd?this.setNext(`plain-scalar`):(yield t.SCALAR,yield*this.pushToIndex(r+1,!0),e?`flow`:`doc`)}*pushCount(e){return e>0?(yield this.buffer.substr(this.pos,e),this.pos+=e,e):0}*pushToIndex(e,t){let n=this.buffer.slice(this.pos,e);return n?(yield n,this.pos+=n.length,n.length):(t&&(yield``),0)}*pushIndicators(){switch(this.charAt(0)){case`!`:return(yield*this.pushTag())+(yield*this.pushSpaces(!0))+(yield*this.pushIndicators());case`&`:return(yield*this.pushUntil(s))+(yield*this.pushSpaces(!0))+(yield*this.pushIndicators());case`-`:case`?`:case`:`:{let e=this.flowLevel>0,t=this.charAt(1);if(n(t)||e&&a.has(t))return e?this.flowKey&&=!1:this.indentNext=this.indentValue+1,(yield*this.pushCount(1))+(yield*this.pushSpaces(!0))+(yield*this.pushIndicators())}}return 0}*pushTag(){if(this.charAt(1)===`<`){let e=this.pos+2,t=this.buffer[e];for(;!n(t)&&t!==`>`;)t=this.buffer[++e];return yield*this.pushToIndex(t===`>`?e+1:e,!1)}else{let e=this.pos+1,t=this.buffer[e];for(;t;)if(i.has(t))t=this.buffer[++e];else if(t===`%`&&r.has(this.buffer[e+1])&&r.has(this.buffer[e+2]))t=this.buffer[e+=3];else break;return yield*this.pushToIndex(e,!1)}}*pushNewline(){let e=this.buffer[this.pos];return e===` +`?yield*this.pushCount(1):e===`\r`&&this.charAt(1)===` +`?yield*this.pushCount(2):0}*pushSpaces(e){let t=this.pos-1,n;do n=this.buffer[++t];while(n===` `||e&&n===` `);let r=t-this.pos;return r>0&&(yield this.buffer.substr(this.pos,r),this.pos=t),r}*pushUntil(e){let t=this.pos,n=this.buffer[t];for(;!e(n);)n=this.buffer[++t];return yield*this.pushToIndex(t,!1)}}})),Xn=s((e=>{e.LineCounter=class{constructor(){this.lineStarts=[],this.addNewLine=e=>this.lineStarts.push(e),this.linePos=e=>{let t=0,n=this.lineStarts.length;for(;t>1;this.lineStarts[r]{var t=require(`process`),n=Jn(),r=Yn();function i(e,t){for(let n=0;n=0;)switch(e[t].type){case`doc-start`:case`explicit-key-ind`:case`map-value-ind`:case`seq-item-ind`:case`newline`:break loop}for(;e[++t]?.type===`space`;);return e.splice(t,e.length)}function l(e){if(e.start.type===`flow-seq-start`)for(let t of e.items)t.sep&&!t.value&&!i(t.start,`explicit-key-ind`)&&!i(t.sep,`map-value-ind`)&&(t.key&&(t.value=t.key),delete t.key,o(t.value)?t.value.end?Array.prototype.push.apply(t.value.end,t.sep):t.value.end=t.sep:Array.prototype.push.apply(t.start,t.sep),delete t.sep)}e.Parser=class{constructor(e){this.atNewLine=!0,this.atScalar=!1,this.indent=0,this.offset=0,this.onKeyLine=!1,this.stack=[],this.source=``,this.type=``,this.lexer=new r.Lexer,this.onNewLine=e}*parse(e,t=!1){this.onNewLine&&this.offset===0&&this.onNewLine(0);for(let n of this.lexer.lex(e,t))yield*this.next(n);t||(yield*this.end())}*next(e){if(this.source=e,t.env.LOG_TOKENS&&console.log(`|`,n.prettyToken(e)),this.atScalar){this.atScalar=!1,yield*this.step(),this.offset+=e.length;return}let r=n.tokenType(e);if(r)if(r===`scalar`)this.atNewLine=!1,this.atScalar=!0,this.type=`scalar`;else{switch(this.type=r,yield*this.step(),r){case`newline`:this.atNewLine=!0,this.indent=0,this.onNewLine&&this.onNewLine(this.offset+e.length);break;case`space`:this.atNewLine&&e[0]===` `&&(this.indent+=e.length);break;case`explicit-key-ind`:case`map-value-ind`:case`seq-item-ind`:this.atNewLine&&(this.indent+=e.length);break;case`doc-mode`:case`flow-error-end`:return;default:this.atNewLine=!1}this.offset+=e.length}else{let t=`Not a YAML token: ${e}`;yield*this.pop({type:`error`,offset:this.offset,message:t,source:e}),this.offset+=e.length}}*end(){for(;this.stack.length>0;)yield*this.pop()}get sourceToken(){return{type:this.type,offset:this.offset,indent:this.indent,source:this.source}}*step(){let e=this.peek(1);if(this.type===`doc-end`&&(!e||e.type!==`doc-end`)){for(;this.stack.length>0;)yield*this.pop();this.stack.push({type:`doc-end`,offset:this.offset,source:this.source});return}if(!e)return yield*this.stream();switch(e.type){case`document`:return yield*this.document(e);case`alias`:case`scalar`:case`single-quoted-scalar`:case`double-quoted-scalar`:return yield*this.scalar(e);case`block-scalar`:return yield*this.blockScalar(e);case`block-map`:return yield*this.blockMap(e);case`block-seq`:return yield*this.blockSequence(e);case`flow-collection`:return yield*this.flowCollection(e);case`doc-end`:return yield*this.documentEnd(e)}yield*this.pop()}peek(e){return this.stack[this.stack.length-e]}*pop(e){let t=e??this.stack.pop();if(!t)yield{type:`error`,offset:this.offset,source:``,message:`Tried to pop an empty stack`};else if(this.stack.length===0)yield t;else{let e=this.peek(1);switch(t.type===`block-scalar`?t.indent=`indent`in e?e.indent:0:t.type===`flow-collection`&&e.type===`document`&&(t.indent=0),t.type===`flow-collection`&&l(t),e.type){case`document`:e.value=t;break;case`block-scalar`:e.props.push(t);break;case`block-map`:{let n=e.items[e.items.length-1];if(n.value){e.items.push({start:[],key:t,sep:[]}),this.onKeyLine=!0;return}else if(n.sep)n.value=t;else{Object.assign(n,{key:t,sep:[]}),this.onKeyLine=!n.explicitKey;return}break}case`block-seq`:{let n=e.items[e.items.length-1];n.value?e.items.push({start:[],value:t}):n.value=t;break}case`flow-collection`:{let n=e.items[e.items.length-1];!n||n.value?e.items.push({start:[],key:t,sep:[]}):n.sep?n.value=t:Object.assign(n,{key:t,sep:[]});return}default:yield*this.pop(),yield*this.pop(t)}if((e.type===`document`||e.type===`block-map`||e.type===`block-seq`)&&(t.type===`block-map`||t.type===`block-seq`)){let n=t.items[t.items.length-1];n&&!n.sep&&!n.value&&n.start.length>0&&a(n.start)===-1&&(t.indent===0||n.start.every(e=>e.type!==`comment`||e.indent=e.indent){let n=!this.onKeyLine&&this.indent===e.indent,r=n&&(t.sep||t.explicitKey)&&this.type!==`seq-item-ind`,a=[];if(r&&t.sep&&!t.value){let n=[];for(let r=0;re.indent&&(n.length=0);break;default:n.length=0}}n.length>=2&&(a=t.sep.splice(n[1]))}switch(this.type){case`anchor`:case`tag`:r||t.value?(a.push(this.sourceToken),e.items.push({start:a}),this.onKeyLine=!0):t.sep?t.sep.push(this.sourceToken):t.start.push(this.sourceToken);return;case`explicit-key-ind`:!t.sep&&!t.explicitKey?(t.start.push(this.sourceToken),t.explicitKey=!0):r||t.value?(a.push(this.sourceToken),e.items.push({start:a,explicitKey:!0})):this.stack.push({type:`block-map`,offset:this.offset,indent:this.indent,items:[{start:[this.sourceToken],explicitKey:!0}]}),this.onKeyLine=!0;return;case`map-value-ind`:if(t.explicitKey)if(t.sep)if(t.value)e.items.push({start:[],key:null,sep:[this.sourceToken]});else if(i(t.sep,`map-value-ind`))this.stack.push({type:`block-map`,offset:this.offset,indent:this.indent,items:[{start:a,key:null,sep:[this.sourceToken]}]});else if(o(t.key)&&!i(t.sep,`newline`)){let e=c(t.start),n=t.key,r=t.sep;r.push(this.sourceToken),delete t.key,delete t.sep,this.stack.push({type:`block-map`,offset:this.offset,indent:this.indent,items:[{start:e,key:n,sep:r}]})}else a.length>0?t.sep=t.sep.concat(a,this.sourceToken):t.sep.push(this.sourceToken);else if(i(t.start,`newline`))Object.assign(t,{key:null,sep:[this.sourceToken]});else{let e=c(t.start);this.stack.push({type:`block-map`,offset:this.offset,indent:this.indent,items:[{start:e,key:null,sep:[this.sourceToken]}]})}else t.sep?t.value||r?e.items.push({start:a,key:null,sep:[this.sourceToken]}):i(t.sep,`map-value-ind`)?this.stack.push({type:`block-map`,offset:this.offset,indent:this.indent,items:[{start:[],key:null,sep:[this.sourceToken]}]}):t.sep.push(this.sourceToken):Object.assign(t,{key:null,sep:[this.sourceToken]});this.onKeyLine=!0;return;case`alias`:case`scalar`:case`single-quoted-scalar`:case`double-quoted-scalar`:{let n=this.flowScalar(this.type);r||t.value?(e.items.push({start:a,key:n,sep:[]}),this.onKeyLine=!0):t.sep?this.stack.push(n):(Object.assign(t,{key:n,sep:[]}),this.onKeyLine=!0);return}default:{let r=this.startBlockValue(e);if(r){if(r.type===`block-seq`){if(!t.explicitKey&&t.sep&&!i(t.sep,`newline`)){yield*this.pop({type:`error`,offset:this.offset,message:`Unexpected block-seq-ind on same line with key`,source:this.source});return}}else n&&e.items.push({start:a});this.stack.push(r);return}}}}yield*this.pop(),yield*this.step()}*blockSequence(e){let t=e.items[e.items.length-1];switch(this.type){case`newline`:if(t.value){let n=`end`in t.value?t.value.end:void 0;(Array.isArray(n)?n[n.length-1]:void 0)?.type===`comment`?n?.push(this.sourceToken):e.items.push({start:[this.sourceToken]})}else t.start.push(this.sourceToken);return;case`space`:case`comment`:if(t.value)e.items.push({start:[this.sourceToken]});else{if(this.atIndentedComment(t.start,e.indent)){let n=e.items[e.items.length-2]?.value?.end;if(Array.isArray(n)){Array.prototype.push.apply(n,t.start),n.push(this.sourceToken),e.items.pop();return}}t.start.push(this.sourceToken)}return;case`anchor`:case`tag`:if(t.value||this.indent<=e.indent)break;t.start.push(this.sourceToken);return;case`seq-item-ind`:if(this.indent!==e.indent)break;t.value||i(t.start,`seq-item-ind`)?e.items.push({start:[this.sourceToken]}):t.start.push(this.sourceToken);return}if(this.indent>e.indent){let t=this.startBlockValue(e);if(t){this.stack.push(t);return}}yield*this.pop(),yield*this.step()}*flowCollection(e){let t=e.items[e.items.length-1];if(this.type===`flow-error-end`){let e;do yield*this.pop(),e=this.peek(1);while(e&&e.type===`flow-collection`)}else if(e.end.length===0){switch(this.type){case`comma`:case`explicit-key-ind`:!t||t.sep?e.items.push({start:[this.sourceToken]}):t.start.push(this.sourceToken);return;case`map-value-ind`:!t||t.value?e.items.push({start:[],key:null,sep:[this.sourceToken]}):t.sep?t.sep.push(this.sourceToken):Object.assign(t,{key:null,sep:[this.sourceToken]});return;case`space`:case`comment`:case`newline`:case`anchor`:case`tag`:!t||t.value?e.items.push({start:[this.sourceToken]}):t.sep?t.sep.push(this.sourceToken):t.start.push(this.sourceToken);return;case`alias`:case`scalar`:case`single-quoted-scalar`:case`double-quoted-scalar`:{let n=this.flowScalar(this.type);!t||t.value?e.items.push({start:[],key:n,sep:[]}):t.sep?this.stack.push(n):Object.assign(t,{key:n,sep:[]});return}case`flow-map-end`:case`flow-seq-end`:e.end.push(this.sourceToken);return}let n=this.startBlockValue(e);n?this.stack.push(n):(yield*this.pop(),yield*this.step())}else{let t=this.peek(2);if(t.type===`block-map`&&(this.type===`map-value-ind`&&t.indent===e.indent||this.type===`newline`&&!t.items[t.items.length-1].sep))yield*this.pop(),yield*this.step();else if(this.type===`map-value-ind`&&t.type!==`flow-collection`){let n=c(s(t));l(e);let r=e.end.splice(1,e.end.length);r.push(this.sourceToken);let i={type:`block-map`,offset:e.offset,indent:e.indent,items:[{start:n,key:e,sep:r}]};this.onKeyLine=!0,this.stack[this.stack.length-1]=i}else yield*this.lineEnd(e)}}flowScalar(e){if(this.onNewLine){let e=this.source.indexOf(` +`)+1;for(;e!==0;)this.onNewLine(this.offset+e),e=this.source.indexOf(` +`,e)+1}return{type:e,offset:this.offset,indent:this.indent,source:this.source}}startBlockValue(e){switch(this.type){case`alias`:case`scalar`:case`single-quoted-scalar`:case`double-quoted-scalar`:return this.flowScalar(this.type);case`block-scalar-header`:return{type:`block-scalar`,offset:this.offset,indent:this.indent,props:[this.sourceToken],source:``};case`flow-map-start`:case`flow-seq-start`:return{type:`flow-collection`,offset:this.offset,indent:this.indent,start:this.sourceToken,items:[],end:[]};case`seq-item-ind`:return{type:`block-seq`,offset:this.offset,indent:this.indent,items:[{start:[this.sourceToken]}]};case`explicit-key-ind`:{this.onKeyLine=!0;let t=c(s(e));return t.push(this.sourceToken),{type:`block-map`,offset:this.offset,indent:this.indent,items:[{start:t,explicitKey:!0}]}}case`map-value-ind`:{this.onKeyLine=!0;let t=c(s(e));return{type:`block-map`,offset:this.offset,indent:this.indent,items:[{start:t,key:null,sep:[this.sourceToken]}]}}}return null}atIndentedComment(e,t){return this.type!==`comment`||this.indent<=t?!1:e.every(e=>e.type===`newline`||e.type===`space`)}*documentEnd(e){this.type!==`doc-mode`&&(e.end?e.end.push(this.sourceToken):e.end=[this.sourceToken],this.type===`newline`&&(yield*this.pop()))}*lineEnd(e){switch(this.type){case`comma`:case`doc-start`:case`doc-end`:case`flow-seq-end`:case`flow-map-end`:case`map-value-ind`:yield*this.pop(),yield*this.step();break;case`newline`:this.onKeyLine=!1;case`space`:case`comment`:default:e.end?e.end.push(this.sourceToken):e.end=[this.sourceToken],this.type===`newline`&&(yield*this.pop())}}}})),Qn=s((e=>{var t=Wn(),n=Dn(),r=On(),i=Qt(),a=Lt(),o=Xn(),s=Zn();function c(e){let t=e.prettyErrors!==!1;return{lineCounter:e.lineCounter||t&&new o.LineCounter||null,prettyErrors:t}}function l(e,n={}){let{lineCounter:i,prettyErrors:a}=c(n),o=new s.Parser(i?.addNewLine),l=new t.Composer(n),u=Array.from(l.compose(o.parse(e)));if(a&&i)for(let t of u)t.errors.forEach(r.prettifyError(e,i)),t.warnings.forEach(r.prettifyError(e,i));return u.length>0?u:Object.assign([],{empty:!0},l.streamInfo())}function u(e,n={}){let{lineCounter:i,prettyErrors:a}=c(n),o=new s.Parser(i?.addNewLine),l=new t.Composer(n),u=null;for(let t of l.compose(o.parse(e),!0,e.length))if(!u)u=t;else if(u.options.logLevel!==`silent`){u.errors.push(new r.YAMLParseError(t.range.slice(0,2),`MULTIPLE_DOCS`,`Source contains multiple documents; please use YAML.parseAllDocuments()`));break}return a&&i&&(u.errors.forEach(r.prettifyError(e,i)),u.warnings.forEach(r.prettifyError(e,i))),u}function d(e,t,n){let r;typeof t==`function`?r=t:n===void 0&&t&&typeof t==`object`&&(n=t);let a=u(e,n);if(!a)return null;if(a.warnings.forEach(e=>i.warn(a.options.logLevel,e)),a.errors.length>0){if(a.options.logLevel!==`silent`)throw a.errors[0];a.errors=[]}return a.toJS(Object.assign({reviver:r},n))}function f(e,t,r){let i=null;if(typeof t==`function`||Array.isArray(t)?i=t:r===void 0&&t&&(r=t),typeof r==`string`&&(r=r.length),typeof r==`number`){let e=Math.round(r);r=e<1?void 0:e>8?{indent:8}:{indent:e}}if(e===void 0){let{keepUndefined:e}=r??t??{};if(!e)return}return a.isDocument(e)&&!i?e.toString(r):new n.Document(e,i,r).toString(r)}e.parse=d,e.parseAllDocuments=l,e.parseDocument=u,e.stringify=f})),$n=s((e=>{var t=Wn(),n=Dn(),r=Tn(),i=On(),a=Ut(),o=Lt(),s=$(),c=Wt(),l=nn(),u=an(),d=Jn(),f=Yn(),p=Xn(),m=Zn(),h=Qn(),g=Rt();e.Composer=t.Composer,e.Document=n.Document,e.Schema=r.Schema,e.YAMLError=i.YAMLError,e.YAMLParseError=i.YAMLParseError,e.YAMLWarning=i.YAMLWarning,e.Alias=a.Alias,e.isAlias=o.isAlias,e.isCollection=o.isCollection,e.isDocument=o.isDocument,e.isMap=o.isMap,e.isNode=o.isNode,e.isPair=o.isPair,e.isScalar=o.isScalar,e.isSeq=o.isSeq,e.Pair=s.Pair,e.Scalar=c.Scalar,e.YAMLMap=l.YAMLMap,e.YAMLSeq=u.YAMLSeq,e.CST=d,e.Lexer=f.Lexer,e.LineCounter=p.LineCounter,e.Parser=m.Parser,e.parse=h.parse,e.parseAllDocuments=h.parseAllDocuments,e.parseDocument=h.parseDocument,e.stringify=h.stringify,e.visit=g.visit,e.visitAsync=g.visitAsync})),er=s(((e,t)=>{var n={};t.exports=n;function r(e){return e<0?-1:1}function i(e){return e%1==.5&&!(e&1)?Math.floor(e):Math.round(e)}function a(e,t){t.unsigned||--e;let n=t.unsigned?0:-(2**e),a=2**e-1,o=t.moduloBitLength?2**t.moduloBitLength:2**e,s=t.moduloBitLength?2**(t.moduloBitLength-1):2**(e-1);return function(e,c){c||={};let l=+e;if(c.enforceRange){if(!Number.isFinite(l))throw TypeError(`Argument is not a finite number`);if(l=r(l)*Math.floor(Math.abs(l)),la)throw TypeError(`Argument is not in byte range`);return l}if(!isNaN(l)&&c.clamp)return l=i(l),la&&(l=a),l;if(!Number.isFinite(l)||l===0)return 0;if(l=r(l)*Math.floor(Math.abs(l)),l%=o,!t.unsigned&&l>=s)return l-o;if(t.unsigned){if(l<0)l+=o;else if(l===-0)return 0}return l}}n.void=function(){},n.boolean=function(e){return!!e},n.byte=a(8,{unsigned:!1}),n.octet=a(8,{unsigned:!0}),n.short=a(16,{unsigned:!1}),n[`unsigned short`]=a(16,{unsigned:!0}),n.long=a(32,{unsigned:!1}),n[`unsigned long`]=a(32,{unsigned:!0}),n[`long long`]=a(32,{unsigned:!1,moduloBitLength:64}),n[`unsigned long long`]=a(32,{unsigned:!0,moduloBitLength:64}),n.double=function(e){let t=+e;if(!Number.isFinite(t))throw TypeError(`Argument is not a finite floating-point value`);return t},n[`unrestricted double`]=function(e){let t=+e;if(isNaN(t))throw TypeError(`Argument is NaN`);return t},n.float=n.double,n[`unrestricted float`]=n[`unrestricted double`],n.DOMString=function(e,t){return t||={},t.treatNullAsEmptyString&&e===null?``:String(e)},n.ByteString=function(e,t){let n=String(e),r;for(let e=0;(r=n.codePointAt(e))!==void 0;++e)if(r>255)throw TypeError(`Argument is not a valid bytestring`);return n},n.USVString=function(e){let t=String(e),n=t.length,r=[];for(let e=0;e57343)r.push(String.fromCodePoint(i));else if(56320<=i&&i<=57343)r.push(String.fromCodePoint(65533));else if(e===n-1)r.push(String.fromCodePoint(65533));else{let n=t.charCodeAt(e+1);if(56320<=n&&n<=57343){let t=i&1023,a=n&1023;r.push(String.fromCodePoint(65536+1024*t+a)),++e}else r.push(String.fromCodePoint(65533))}}return r.join(``)},n.Date=function(e,t){if(!(e instanceof Date))throw TypeError(`Argument is not a Date object`);if(!isNaN(e))return e},n.RegExp=function(e,t){return e instanceof RegExp||(e=new RegExp(e)),e}})),tr=s(((e,t)=>{t.exports.mixin=function(e,t){let n=Object.getOwnPropertyNames(t);for(let r=0;r{t.exports=[[[0,44],`disallowed_STD3_valid`],[[45,46],`valid`],[[47,47],`disallowed_STD3_valid`],[[48,57],`valid`],[[58,64],`disallowed_STD3_valid`],[[65,65],`mapped`,[97]],[[66,66],`mapped`,[98]],[[67,67],`mapped`,[99]],[[68,68],`mapped`,[100]],[[69,69],`mapped`,[101]],[[70,70],`mapped`,[102]],[[71,71],`mapped`,[103]],[[72,72],`mapped`,[104]],[[73,73],`mapped`,[105]],[[74,74],`mapped`,[106]],[[75,75],`mapped`,[107]],[[76,76],`mapped`,[108]],[[77,77],`mapped`,[109]],[[78,78],`mapped`,[110]],[[79,79],`mapped`,[111]],[[80,80],`mapped`,[112]],[[81,81],`mapped`,[113]],[[82,82],`mapped`,[114]],[[83,83],`mapped`,[115]],[[84,84],`mapped`,[116]],[[85,85],`mapped`,[117]],[[86,86],`mapped`,[118]],[[87,87],`mapped`,[119]],[[88,88],`mapped`,[120]],[[89,89],`mapped`,[121]],[[90,90],`mapped`,[122]],[[91,96],`disallowed_STD3_valid`],[[97,122],`valid`],[[123,127],`disallowed_STD3_valid`],[[128,159],`disallowed`],[[160,160],`disallowed_STD3_mapped`,[32]],[[161,167],`valid`,[],`NV8`],[[168,168],`disallowed_STD3_mapped`,[32,776]],[[169,169],`valid`,[],`NV8`],[[170,170],`mapped`,[97]],[[171,172],`valid`,[],`NV8`],[[173,173],`ignored`],[[174,174],`valid`,[],`NV8`],[[175,175],`disallowed_STD3_mapped`,[32,772]],[[176,177],`valid`,[],`NV8`],[[178,178],`mapped`,[50]],[[179,179],`mapped`,[51]],[[180,180],`disallowed_STD3_mapped`,[32,769]],[[181,181],`mapped`,[956]],[[182,182],`valid`,[],`NV8`],[[183,183],`valid`],[[184,184],`disallowed_STD3_mapped`,[32,807]],[[185,185],`mapped`,[49]],[[186,186],`mapped`,[111]],[[187,187],`valid`,[],`NV8`],[[188,188],`mapped`,[49,8260,52]],[[189,189],`mapped`,[49,8260,50]],[[190,190],`mapped`,[51,8260,52]],[[191,191],`valid`,[],`NV8`],[[192,192],`mapped`,[224]],[[193,193],`mapped`,[225]],[[194,194],`mapped`,[226]],[[195,195],`mapped`,[227]],[[196,196],`mapped`,[228]],[[197,197],`mapped`,[229]],[[198,198],`mapped`,[230]],[[199,199],`mapped`,[231]],[[200,200],`mapped`,[232]],[[201,201],`mapped`,[233]],[[202,202],`mapped`,[234]],[[203,203],`mapped`,[235]],[[204,204],`mapped`,[236]],[[205,205],`mapped`,[237]],[[206,206],`mapped`,[238]],[[207,207],`mapped`,[239]],[[208,208],`mapped`,[240]],[[209,209],`mapped`,[241]],[[210,210],`mapped`,[242]],[[211,211],`mapped`,[243]],[[212,212],`mapped`,[244]],[[213,213],`mapped`,[245]],[[214,214],`mapped`,[246]],[[215,215],`valid`,[],`NV8`],[[216,216],`mapped`,[248]],[[217,217],`mapped`,[249]],[[218,218],`mapped`,[250]],[[219,219],`mapped`,[251]],[[220,220],`mapped`,[252]],[[221,221],`mapped`,[253]],[[222,222],`mapped`,[254]],[[223,223],`deviation`,[115,115]],[[224,246],`valid`],[[247,247],`valid`,[],`NV8`],[[248,255],`valid`],[[256,256],`mapped`,[257]],[[257,257],`valid`],[[258,258],`mapped`,[259]],[[259,259],`valid`],[[260,260],`mapped`,[261]],[[261,261],`valid`],[[262,262],`mapped`,[263]],[[263,263],`valid`],[[264,264],`mapped`,[265]],[[265,265],`valid`],[[266,266],`mapped`,[267]],[[267,267],`valid`],[[268,268],`mapped`,[269]],[[269,269],`valid`],[[270,270],`mapped`,[271]],[[271,271],`valid`],[[272,272],`mapped`,[273]],[[273,273],`valid`],[[274,274],`mapped`,[275]],[[275,275],`valid`],[[276,276],`mapped`,[277]],[[277,277],`valid`],[[278,278],`mapped`,[279]],[[279,279],`valid`],[[280,280],`mapped`,[281]],[[281,281],`valid`],[[282,282],`mapped`,[283]],[[283,283],`valid`],[[284,284],`mapped`,[285]],[[285,285],`valid`],[[286,286],`mapped`,[287]],[[287,287],`valid`],[[288,288],`mapped`,[289]],[[289,289],`valid`],[[290,290],`mapped`,[291]],[[291,291],`valid`],[[292,292],`mapped`,[293]],[[293,293],`valid`],[[294,294],`mapped`,[295]],[[295,295],`valid`],[[296,296],`mapped`,[297]],[[297,297],`valid`],[[298,298],`mapped`,[299]],[[299,299],`valid`],[[300,300],`mapped`,[301]],[[301,301],`valid`],[[302,302],`mapped`,[303]],[[303,303],`valid`],[[304,304],`mapped`,[105,775]],[[305,305],`valid`],[[306,307],`mapped`,[105,106]],[[308,308],`mapped`,[309]],[[309,309],`valid`],[[310,310],`mapped`,[311]],[[311,312],`valid`],[[313,313],`mapped`,[314]],[[314,314],`valid`],[[315,315],`mapped`,[316]],[[316,316],`valid`],[[317,317],`mapped`,[318]],[[318,318],`valid`],[[319,320],`mapped`,[108,183]],[[321,321],`mapped`,[322]],[[322,322],`valid`],[[323,323],`mapped`,[324]],[[324,324],`valid`],[[325,325],`mapped`,[326]],[[326,326],`valid`],[[327,327],`mapped`,[328]],[[328,328],`valid`],[[329,329],`mapped`,[700,110]],[[330,330],`mapped`,[331]],[[331,331],`valid`],[[332,332],`mapped`,[333]],[[333,333],`valid`],[[334,334],`mapped`,[335]],[[335,335],`valid`],[[336,336],`mapped`,[337]],[[337,337],`valid`],[[338,338],`mapped`,[339]],[[339,339],`valid`],[[340,340],`mapped`,[341]],[[341,341],`valid`],[[342,342],`mapped`,[343]],[[343,343],`valid`],[[344,344],`mapped`,[345]],[[345,345],`valid`],[[346,346],`mapped`,[347]],[[347,347],`valid`],[[348,348],`mapped`,[349]],[[349,349],`valid`],[[350,350],`mapped`,[351]],[[351,351],`valid`],[[352,352],`mapped`,[353]],[[353,353],`valid`],[[354,354],`mapped`,[355]],[[355,355],`valid`],[[356,356],`mapped`,[357]],[[357,357],`valid`],[[358,358],`mapped`,[359]],[[359,359],`valid`],[[360,360],`mapped`,[361]],[[361,361],`valid`],[[362,362],`mapped`,[363]],[[363,363],`valid`],[[364,364],`mapped`,[365]],[[365,365],`valid`],[[366,366],`mapped`,[367]],[[367,367],`valid`],[[368,368],`mapped`,[369]],[[369,369],`valid`],[[370,370],`mapped`,[371]],[[371,371],`valid`],[[372,372],`mapped`,[373]],[[373,373],`valid`],[[374,374],`mapped`,[375]],[[375,375],`valid`],[[376,376],`mapped`,[255]],[[377,377],`mapped`,[378]],[[378,378],`valid`],[[379,379],`mapped`,[380]],[[380,380],`valid`],[[381,381],`mapped`,[382]],[[382,382],`valid`],[[383,383],`mapped`,[115]],[[384,384],`valid`],[[385,385],`mapped`,[595]],[[386,386],`mapped`,[387]],[[387,387],`valid`],[[388,388],`mapped`,[389]],[[389,389],`valid`],[[390,390],`mapped`,[596]],[[391,391],`mapped`,[392]],[[392,392],`valid`],[[393,393],`mapped`,[598]],[[394,394],`mapped`,[599]],[[395,395],`mapped`,[396]],[[396,397],`valid`],[[398,398],`mapped`,[477]],[[399,399],`mapped`,[601]],[[400,400],`mapped`,[603]],[[401,401],`mapped`,[402]],[[402,402],`valid`],[[403,403],`mapped`,[608]],[[404,404],`mapped`,[611]],[[405,405],`valid`],[[406,406],`mapped`,[617]],[[407,407],`mapped`,[616]],[[408,408],`mapped`,[409]],[[409,411],`valid`],[[412,412],`mapped`,[623]],[[413,413],`mapped`,[626]],[[414,414],`valid`],[[415,415],`mapped`,[629]],[[416,416],`mapped`,[417]],[[417,417],`valid`],[[418,418],`mapped`,[419]],[[419,419],`valid`],[[420,420],`mapped`,[421]],[[421,421],`valid`],[[422,422],`mapped`,[640]],[[423,423],`mapped`,[424]],[[424,424],`valid`],[[425,425],`mapped`,[643]],[[426,427],`valid`],[[428,428],`mapped`,[429]],[[429,429],`valid`],[[430,430],`mapped`,[648]],[[431,431],`mapped`,[432]],[[432,432],`valid`],[[433,433],`mapped`,[650]],[[434,434],`mapped`,[651]],[[435,435],`mapped`,[436]],[[436,436],`valid`],[[437,437],`mapped`,[438]],[[438,438],`valid`],[[439,439],`mapped`,[658]],[[440,440],`mapped`,[441]],[[441,443],`valid`],[[444,444],`mapped`,[445]],[[445,451],`valid`],[[452,454],`mapped`,[100,382]],[[455,457],`mapped`,[108,106]],[[458,460],`mapped`,[110,106]],[[461,461],`mapped`,[462]],[[462,462],`valid`],[[463,463],`mapped`,[464]],[[464,464],`valid`],[[465,465],`mapped`,[466]],[[466,466],`valid`],[[467,467],`mapped`,[468]],[[468,468],`valid`],[[469,469],`mapped`,[470]],[[470,470],`valid`],[[471,471],`mapped`,[472]],[[472,472],`valid`],[[473,473],`mapped`,[474]],[[474,474],`valid`],[[475,475],`mapped`,[476]],[[476,477],`valid`],[[478,478],`mapped`,[479]],[[479,479],`valid`],[[480,480],`mapped`,[481]],[[481,481],`valid`],[[482,482],`mapped`,[483]],[[483,483],`valid`],[[484,484],`mapped`,[485]],[[485,485],`valid`],[[486,486],`mapped`,[487]],[[487,487],`valid`],[[488,488],`mapped`,[489]],[[489,489],`valid`],[[490,490],`mapped`,[491]],[[491,491],`valid`],[[492,492],`mapped`,[493]],[[493,493],`valid`],[[494,494],`mapped`,[495]],[[495,496],`valid`],[[497,499],`mapped`,[100,122]],[[500,500],`mapped`,[501]],[[501,501],`valid`],[[502,502],`mapped`,[405]],[[503,503],`mapped`,[447]],[[504,504],`mapped`,[505]],[[505,505],`valid`],[[506,506],`mapped`,[507]],[[507,507],`valid`],[[508,508],`mapped`,[509]],[[509,509],`valid`],[[510,510],`mapped`,[511]],[[511,511],`valid`],[[512,512],`mapped`,[513]],[[513,513],`valid`],[[514,514],`mapped`,[515]],[[515,515],`valid`],[[516,516],`mapped`,[517]],[[517,517],`valid`],[[518,518],`mapped`,[519]],[[519,519],`valid`],[[520,520],`mapped`,[521]],[[521,521],`valid`],[[522,522],`mapped`,[523]],[[523,523],`valid`],[[524,524],`mapped`,[525]],[[525,525],`valid`],[[526,526],`mapped`,[527]],[[527,527],`valid`],[[528,528],`mapped`,[529]],[[529,529],`valid`],[[530,530],`mapped`,[531]],[[531,531],`valid`],[[532,532],`mapped`,[533]],[[533,533],`valid`],[[534,534],`mapped`,[535]],[[535,535],`valid`],[[536,536],`mapped`,[537]],[[537,537],`valid`],[[538,538],`mapped`,[539]],[[539,539],`valid`],[[540,540],`mapped`,[541]],[[541,541],`valid`],[[542,542],`mapped`,[543]],[[543,543],`valid`],[[544,544],`mapped`,[414]],[[545,545],`valid`],[[546,546],`mapped`,[547]],[[547,547],`valid`],[[548,548],`mapped`,[549]],[[549,549],`valid`],[[550,550],`mapped`,[551]],[[551,551],`valid`],[[552,552],`mapped`,[553]],[[553,553],`valid`],[[554,554],`mapped`,[555]],[[555,555],`valid`],[[556,556],`mapped`,[557]],[[557,557],`valid`],[[558,558],`mapped`,[559]],[[559,559],`valid`],[[560,560],`mapped`,[561]],[[561,561],`valid`],[[562,562],`mapped`,[563]],[[563,563],`valid`],[[564,566],`valid`],[[567,569],`valid`],[[570,570],`mapped`,[11365]],[[571,571],`mapped`,[572]],[[572,572],`valid`],[[573,573],`mapped`,[410]],[[574,574],`mapped`,[11366]],[[575,576],`valid`],[[577,577],`mapped`,[578]],[[578,578],`valid`],[[579,579],`mapped`,[384]],[[580,580],`mapped`,[649]],[[581,581],`mapped`,[652]],[[582,582],`mapped`,[583]],[[583,583],`valid`],[[584,584],`mapped`,[585]],[[585,585],`valid`],[[586,586],`mapped`,[587]],[[587,587],`valid`],[[588,588],`mapped`,[589]],[[589,589],`valid`],[[590,590],`mapped`,[591]],[[591,591],`valid`],[[592,680],`valid`],[[681,685],`valid`],[[686,687],`valid`],[[688,688],`mapped`,[104]],[[689,689],`mapped`,[614]],[[690,690],`mapped`,[106]],[[691,691],`mapped`,[114]],[[692,692],`mapped`,[633]],[[693,693],`mapped`,[635]],[[694,694],`mapped`,[641]],[[695,695],`mapped`,[119]],[[696,696],`mapped`,[121]],[[697,705],`valid`],[[706,709],`valid`,[],`NV8`],[[710,721],`valid`],[[722,727],`valid`,[],`NV8`],[[728,728],`disallowed_STD3_mapped`,[32,774]],[[729,729],`disallowed_STD3_mapped`,[32,775]],[[730,730],`disallowed_STD3_mapped`,[32,778]],[[731,731],`disallowed_STD3_mapped`,[32,808]],[[732,732],`disallowed_STD3_mapped`,[32,771]],[[733,733],`disallowed_STD3_mapped`,[32,779]],[[734,734],`valid`,[],`NV8`],[[735,735],`valid`,[],`NV8`],[[736,736],`mapped`,[611]],[[737,737],`mapped`,[108]],[[738,738],`mapped`,[115]],[[739,739],`mapped`,[120]],[[740,740],`mapped`,[661]],[[741,745],`valid`,[],`NV8`],[[746,747],`valid`,[],`NV8`],[[748,748],`valid`],[[749,749],`valid`,[],`NV8`],[[750,750],`valid`],[[751,767],`valid`,[],`NV8`],[[768,831],`valid`],[[832,832],`mapped`,[768]],[[833,833],`mapped`,[769]],[[834,834],`valid`],[[835,835],`mapped`,[787]],[[836,836],`mapped`,[776,769]],[[837,837],`mapped`,[953]],[[838,846],`valid`],[[847,847],`ignored`],[[848,855],`valid`],[[856,860],`valid`],[[861,863],`valid`],[[864,865],`valid`],[[866,866],`valid`],[[867,879],`valid`],[[880,880],`mapped`,[881]],[[881,881],`valid`],[[882,882],`mapped`,[883]],[[883,883],`valid`],[[884,884],`mapped`,[697]],[[885,885],`valid`],[[886,886],`mapped`,[887]],[[887,887],`valid`],[[888,889],`disallowed`],[[890,890],`disallowed_STD3_mapped`,[32,953]],[[891,893],`valid`],[[894,894],`disallowed_STD3_mapped`,[59]],[[895,895],`mapped`,[1011]],[[896,899],`disallowed`],[[900,900],`disallowed_STD3_mapped`,[32,769]],[[901,901],`disallowed_STD3_mapped`,[32,776,769]],[[902,902],`mapped`,[940]],[[903,903],`mapped`,[183]],[[904,904],`mapped`,[941]],[[905,905],`mapped`,[942]],[[906,906],`mapped`,[943]],[[907,907],`disallowed`],[[908,908],`mapped`,[972]],[[909,909],`disallowed`],[[910,910],`mapped`,[973]],[[911,911],`mapped`,[974]],[[912,912],`valid`],[[913,913],`mapped`,[945]],[[914,914],`mapped`,[946]],[[915,915],`mapped`,[947]],[[916,916],`mapped`,[948]],[[917,917],`mapped`,[949]],[[918,918],`mapped`,[950]],[[919,919],`mapped`,[951]],[[920,920],`mapped`,[952]],[[921,921],`mapped`,[953]],[[922,922],`mapped`,[954]],[[923,923],`mapped`,[955]],[[924,924],`mapped`,[956]],[[925,925],`mapped`,[957]],[[926,926],`mapped`,[958]],[[927,927],`mapped`,[959]],[[928,928],`mapped`,[960]],[[929,929],`mapped`,[961]],[[930,930],`disallowed`],[[931,931],`mapped`,[963]],[[932,932],`mapped`,[964]],[[933,933],`mapped`,[965]],[[934,934],`mapped`,[966]],[[935,935],`mapped`,[967]],[[936,936],`mapped`,[968]],[[937,937],`mapped`,[969]],[[938,938],`mapped`,[970]],[[939,939],`mapped`,[971]],[[940,961],`valid`],[[962,962],`deviation`,[963]],[[963,974],`valid`],[[975,975],`mapped`,[983]],[[976,976],`mapped`,[946]],[[977,977],`mapped`,[952]],[[978,978],`mapped`,[965]],[[979,979],`mapped`,[973]],[[980,980],`mapped`,[971]],[[981,981],`mapped`,[966]],[[982,982],`mapped`,[960]],[[983,983],`valid`],[[984,984],`mapped`,[985]],[[985,985],`valid`],[[986,986],`mapped`,[987]],[[987,987],`valid`],[[988,988],`mapped`,[989]],[[989,989],`valid`],[[990,990],`mapped`,[991]],[[991,991],`valid`],[[992,992],`mapped`,[993]],[[993,993],`valid`],[[994,994],`mapped`,[995]],[[995,995],`valid`],[[996,996],`mapped`,[997]],[[997,997],`valid`],[[998,998],`mapped`,[999]],[[999,999],`valid`],[[1e3,1e3],`mapped`,[1001]],[[1001,1001],`valid`],[[1002,1002],`mapped`,[1003]],[[1003,1003],`valid`],[[1004,1004],`mapped`,[1005]],[[1005,1005],`valid`],[[1006,1006],`mapped`,[1007]],[[1007,1007],`valid`],[[1008,1008],`mapped`,[954]],[[1009,1009],`mapped`,[961]],[[1010,1010],`mapped`,[963]],[[1011,1011],`valid`],[[1012,1012],`mapped`,[952]],[[1013,1013],`mapped`,[949]],[[1014,1014],`valid`,[],`NV8`],[[1015,1015],`mapped`,[1016]],[[1016,1016],`valid`],[[1017,1017],`mapped`,[963]],[[1018,1018],`mapped`,[1019]],[[1019,1019],`valid`],[[1020,1020],`valid`],[[1021,1021],`mapped`,[891]],[[1022,1022],`mapped`,[892]],[[1023,1023],`mapped`,[893]],[[1024,1024],`mapped`,[1104]],[[1025,1025],`mapped`,[1105]],[[1026,1026],`mapped`,[1106]],[[1027,1027],`mapped`,[1107]],[[1028,1028],`mapped`,[1108]],[[1029,1029],`mapped`,[1109]],[[1030,1030],`mapped`,[1110]],[[1031,1031],`mapped`,[1111]],[[1032,1032],`mapped`,[1112]],[[1033,1033],`mapped`,[1113]],[[1034,1034],`mapped`,[1114]],[[1035,1035],`mapped`,[1115]],[[1036,1036],`mapped`,[1116]],[[1037,1037],`mapped`,[1117]],[[1038,1038],`mapped`,[1118]],[[1039,1039],`mapped`,[1119]],[[1040,1040],`mapped`,[1072]],[[1041,1041],`mapped`,[1073]],[[1042,1042],`mapped`,[1074]],[[1043,1043],`mapped`,[1075]],[[1044,1044],`mapped`,[1076]],[[1045,1045],`mapped`,[1077]],[[1046,1046],`mapped`,[1078]],[[1047,1047],`mapped`,[1079]],[[1048,1048],`mapped`,[1080]],[[1049,1049],`mapped`,[1081]],[[1050,1050],`mapped`,[1082]],[[1051,1051],`mapped`,[1083]],[[1052,1052],`mapped`,[1084]],[[1053,1053],`mapped`,[1085]],[[1054,1054],`mapped`,[1086]],[[1055,1055],`mapped`,[1087]],[[1056,1056],`mapped`,[1088]],[[1057,1057],`mapped`,[1089]],[[1058,1058],`mapped`,[1090]],[[1059,1059],`mapped`,[1091]],[[1060,1060],`mapped`,[1092]],[[1061,1061],`mapped`,[1093]],[[1062,1062],`mapped`,[1094]],[[1063,1063],`mapped`,[1095]],[[1064,1064],`mapped`,[1096]],[[1065,1065],`mapped`,[1097]],[[1066,1066],`mapped`,[1098]],[[1067,1067],`mapped`,[1099]],[[1068,1068],`mapped`,[1100]],[[1069,1069],`mapped`,[1101]],[[1070,1070],`mapped`,[1102]],[[1071,1071],`mapped`,[1103]],[[1072,1103],`valid`],[[1104,1104],`valid`],[[1105,1116],`valid`],[[1117,1117],`valid`],[[1118,1119],`valid`],[[1120,1120],`mapped`,[1121]],[[1121,1121],`valid`],[[1122,1122],`mapped`,[1123]],[[1123,1123],`valid`],[[1124,1124],`mapped`,[1125]],[[1125,1125],`valid`],[[1126,1126],`mapped`,[1127]],[[1127,1127],`valid`],[[1128,1128],`mapped`,[1129]],[[1129,1129],`valid`],[[1130,1130],`mapped`,[1131]],[[1131,1131],`valid`],[[1132,1132],`mapped`,[1133]],[[1133,1133],`valid`],[[1134,1134],`mapped`,[1135]],[[1135,1135],`valid`],[[1136,1136],`mapped`,[1137]],[[1137,1137],`valid`],[[1138,1138],`mapped`,[1139]],[[1139,1139],`valid`],[[1140,1140],`mapped`,[1141]],[[1141,1141],`valid`],[[1142,1142],`mapped`,[1143]],[[1143,1143],`valid`],[[1144,1144],`mapped`,[1145]],[[1145,1145],`valid`],[[1146,1146],`mapped`,[1147]],[[1147,1147],`valid`],[[1148,1148],`mapped`,[1149]],[[1149,1149],`valid`],[[1150,1150],`mapped`,[1151]],[[1151,1151],`valid`],[[1152,1152],`mapped`,[1153]],[[1153,1153],`valid`],[[1154,1154],`valid`,[],`NV8`],[[1155,1158],`valid`],[[1159,1159],`valid`],[[1160,1161],`valid`,[],`NV8`],[[1162,1162],`mapped`,[1163]],[[1163,1163],`valid`],[[1164,1164],`mapped`,[1165]],[[1165,1165],`valid`],[[1166,1166],`mapped`,[1167]],[[1167,1167],`valid`],[[1168,1168],`mapped`,[1169]],[[1169,1169],`valid`],[[1170,1170],`mapped`,[1171]],[[1171,1171],`valid`],[[1172,1172],`mapped`,[1173]],[[1173,1173],`valid`],[[1174,1174],`mapped`,[1175]],[[1175,1175],`valid`],[[1176,1176],`mapped`,[1177]],[[1177,1177],`valid`],[[1178,1178],`mapped`,[1179]],[[1179,1179],`valid`],[[1180,1180],`mapped`,[1181]],[[1181,1181],`valid`],[[1182,1182],`mapped`,[1183]],[[1183,1183],`valid`],[[1184,1184],`mapped`,[1185]],[[1185,1185],`valid`],[[1186,1186],`mapped`,[1187]],[[1187,1187],`valid`],[[1188,1188],`mapped`,[1189]],[[1189,1189],`valid`],[[1190,1190],`mapped`,[1191]],[[1191,1191],`valid`],[[1192,1192],`mapped`,[1193]],[[1193,1193],`valid`],[[1194,1194],`mapped`,[1195]],[[1195,1195],`valid`],[[1196,1196],`mapped`,[1197]],[[1197,1197],`valid`],[[1198,1198],`mapped`,[1199]],[[1199,1199],`valid`],[[1200,1200],`mapped`,[1201]],[[1201,1201],`valid`],[[1202,1202],`mapped`,[1203]],[[1203,1203],`valid`],[[1204,1204],`mapped`,[1205]],[[1205,1205],`valid`],[[1206,1206],`mapped`,[1207]],[[1207,1207],`valid`],[[1208,1208],`mapped`,[1209]],[[1209,1209],`valid`],[[1210,1210],`mapped`,[1211]],[[1211,1211],`valid`],[[1212,1212],`mapped`,[1213]],[[1213,1213],`valid`],[[1214,1214],`mapped`,[1215]],[[1215,1215],`valid`],[[1216,1216],`disallowed`],[[1217,1217],`mapped`,[1218]],[[1218,1218],`valid`],[[1219,1219],`mapped`,[1220]],[[1220,1220],`valid`],[[1221,1221],`mapped`,[1222]],[[1222,1222],`valid`],[[1223,1223],`mapped`,[1224]],[[1224,1224],`valid`],[[1225,1225],`mapped`,[1226]],[[1226,1226],`valid`],[[1227,1227],`mapped`,[1228]],[[1228,1228],`valid`],[[1229,1229],`mapped`,[1230]],[[1230,1230],`valid`],[[1231,1231],`valid`],[[1232,1232],`mapped`,[1233]],[[1233,1233],`valid`],[[1234,1234],`mapped`,[1235]],[[1235,1235],`valid`],[[1236,1236],`mapped`,[1237]],[[1237,1237],`valid`],[[1238,1238],`mapped`,[1239]],[[1239,1239],`valid`],[[1240,1240],`mapped`,[1241]],[[1241,1241],`valid`],[[1242,1242],`mapped`,[1243]],[[1243,1243],`valid`],[[1244,1244],`mapped`,[1245]],[[1245,1245],`valid`],[[1246,1246],`mapped`,[1247]],[[1247,1247],`valid`],[[1248,1248],`mapped`,[1249]],[[1249,1249],`valid`],[[1250,1250],`mapped`,[1251]],[[1251,1251],`valid`],[[1252,1252],`mapped`,[1253]],[[1253,1253],`valid`],[[1254,1254],`mapped`,[1255]],[[1255,1255],`valid`],[[1256,1256],`mapped`,[1257]],[[1257,1257],`valid`],[[1258,1258],`mapped`,[1259]],[[1259,1259],`valid`],[[1260,1260],`mapped`,[1261]],[[1261,1261],`valid`],[[1262,1262],`mapped`,[1263]],[[1263,1263],`valid`],[[1264,1264],`mapped`,[1265]],[[1265,1265],`valid`],[[1266,1266],`mapped`,[1267]],[[1267,1267],`valid`],[[1268,1268],`mapped`,[1269]],[[1269,1269],`valid`],[[1270,1270],`mapped`,[1271]],[[1271,1271],`valid`],[[1272,1272],`mapped`,[1273]],[[1273,1273],`valid`],[[1274,1274],`mapped`,[1275]],[[1275,1275],`valid`],[[1276,1276],`mapped`,[1277]],[[1277,1277],`valid`],[[1278,1278],`mapped`,[1279]],[[1279,1279],`valid`],[[1280,1280],`mapped`,[1281]],[[1281,1281],`valid`],[[1282,1282],`mapped`,[1283]],[[1283,1283],`valid`],[[1284,1284],`mapped`,[1285]],[[1285,1285],`valid`],[[1286,1286],`mapped`,[1287]],[[1287,1287],`valid`],[[1288,1288],`mapped`,[1289]],[[1289,1289],`valid`],[[1290,1290],`mapped`,[1291]],[[1291,1291],`valid`],[[1292,1292],`mapped`,[1293]],[[1293,1293],`valid`],[[1294,1294],`mapped`,[1295]],[[1295,1295],`valid`],[[1296,1296],`mapped`,[1297]],[[1297,1297],`valid`],[[1298,1298],`mapped`,[1299]],[[1299,1299],`valid`],[[1300,1300],`mapped`,[1301]],[[1301,1301],`valid`],[[1302,1302],`mapped`,[1303]],[[1303,1303],`valid`],[[1304,1304],`mapped`,[1305]],[[1305,1305],`valid`],[[1306,1306],`mapped`,[1307]],[[1307,1307],`valid`],[[1308,1308],`mapped`,[1309]],[[1309,1309],`valid`],[[1310,1310],`mapped`,[1311]],[[1311,1311],`valid`],[[1312,1312],`mapped`,[1313]],[[1313,1313],`valid`],[[1314,1314],`mapped`,[1315]],[[1315,1315],`valid`],[[1316,1316],`mapped`,[1317]],[[1317,1317],`valid`],[[1318,1318],`mapped`,[1319]],[[1319,1319],`valid`],[[1320,1320],`mapped`,[1321]],[[1321,1321],`valid`],[[1322,1322],`mapped`,[1323]],[[1323,1323],`valid`],[[1324,1324],`mapped`,[1325]],[[1325,1325],`valid`],[[1326,1326],`mapped`,[1327]],[[1327,1327],`valid`],[[1328,1328],`disallowed`],[[1329,1329],`mapped`,[1377]],[[1330,1330],`mapped`,[1378]],[[1331,1331],`mapped`,[1379]],[[1332,1332],`mapped`,[1380]],[[1333,1333],`mapped`,[1381]],[[1334,1334],`mapped`,[1382]],[[1335,1335],`mapped`,[1383]],[[1336,1336],`mapped`,[1384]],[[1337,1337],`mapped`,[1385]],[[1338,1338],`mapped`,[1386]],[[1339,1339],`mapped`,[1387]],[[1340,1340],`mapped`,[1388]],[[1341,1341],`mapped`,[1389]],[[1342,1342],`mapped`,[1390]],[[1343,1343],`mapped`,[1391]],[[1344,1344],`mapped`,[1392]],[[1345,1345],`mapped`,[1393]],[[1346,1346],`mapped`,[1394]],[[1347,1347],`mapped`,[1395]],[[1348,1348],`mapped`,[1396]],[[1349,1349],`mapped`,[1397]],[[1350,1350],`mapped`,[1398]],[[1351,1351],`mapped`,[1399]],[[1352,1352],`mapped`,[1400]],[[1353,1353],`mapped`,[1401]],[[1354,1354],`mapped`,[1402]],[[1355,1355],`mapped`,[1403]],[[1356,1356],`mapped`,[1404]],[[1357,1357],`mapped`,[1405]],[[1358,1358],`mapped`,[1406]],[[1359,1359],`mapped`,[1407]],[[1360,1360],`mapped`,[1408]],[[1361,1361],`mapped`,[1409]],[[1362,1362],`mapped`,[1410]],[[1363,1363],`mapped`,[1411]],[[1364,1364],`mapped`,[1412]],[[1365,1365],`mapped`,[1413]],[[1366,1366],`mapped`,[1414]],[[1367,1368],`disallowed`],[[1369,1369],`valid`],[[1370,1375],`valid`,[],`NV8`],[[1376,1376],`disallowed`],[[1377,1414],`valid`],[[1415,1415],`mapped`,[1381,1410]],[[1416,1416],`disallowed`],[[1417,1417],`valid`,[],`NV8`],[[1418,1418],`valid`,[],`NV8`],[[1419,1420],`disallowed`],[[1421,1422],`valid`,[],`NV8`],[[1423,1423],`valid`,[],`NV8`],[[1424,1424],`disallowed`],[[1425,1441],`valid`],[[1442,1442],`valid`],[[1443,1455],`valid`],[[1456,1465],`valid`],[[1466,1466],`valid`],[[1467,1469],`valid`],[[1470,1470],`valid`,[],`NV8`],[[1471,1471],`valid`],[[1472,1472],`valid`,[],`NV8`],[[1473,1474],`valid`],[[1475,1475],`valid`,[],`NV8`],[[1476,1476],`valid`],[[1477,1477],`valid`],[[1478,1478],`valid`,[],`NV8`],[[1479,1479],`valid`],[[1480,1487],`disallowed`],[[1488,1514],`valid`],[[1515,1519],`disallowed`],[[1520,1524],`valid`],[[1525,1535],`disallowed`],[[1536,1539],`disallowed`],[[1540,1540],`disallowed`],[[1541,1541],`disallowed`],[[1542,1546],`valid`,[],`NV8`],[[1547,1547],`valid`,[],`NV8`],[[1548,1548],`valid`,[],`NV8`],[[1549,1551],`valid`,[],`NV8`],[[1552,1557],`valid`],[[1558,1562],`valid`],[[1563,1563],`valid`,[],`NV8`],[[1564,1564],`disallowed`],[[1565,1565],`disallowed`],[[1566,1566],`valid`,[],`NV8`],[[1567,1567],`valid`,[],`NV8`],[[1568,1568],`valid`],[[1569,1594],`valid`],[[1595,1599],`valid`],[[1600,1600],`valid`,[],`NV8`],[[1601,1618],`valid`],[[1619,1621],`valid`],[[1622,1624],`valid`],[[1625,1630],`valid`],[[1631,1631],`valid`],[[1632,1641],`valid`],[[1642,1645],`valid`,[],`NV8`],[[1646,1647],`valid`],[[1648,1652],`valid`],[[1653,1653],`mapped`,[1575,1652]],[[1654,1654],`mapped`,[1608,1652]],[[1655,1655],`mapped`,[1735,1652]],[[1656,1656],`mapped`,[1610,1652]],[[1657,1719],`valid`],[[1720,1721],`valid`],[[1722,1726],`valid`],[[1727,1727],`valid`],[[1728,1742],`valid`],[[1743,1743],`valid`],[[1744,1747],`valid`],[[1748,1748],`valid`,[],`NV8`],[[1749,1756],`valid`],[[1757,1757],`disallowed`],[[1758,1758],`valid`,[],`NV8`],[[1759,1768],`valid`],[[1769,1769],`valid`,[],`NV8`],[[1770,1773],`valid`],[[1774,1775],`valid`],[[1776,1785],`valid`],[[1786,1790],`valid`],[[1791,1791],`valid`],[[1792,1805],`valid`,[],`NV8`],[[1806,1806],`disallowed`],[[1807,1807],`disallowed`],[[1808,1836],`valid`],[[1837,1839],`valid`],[[1840,1866],`valid`],[[1867,1868],`disallowed`],[[1869,1871],`valid`],[[1872,1901],`valid`],[[1902,1919],`valid`],[[1920,1968],`valid`],[[1969,1969],`valid`],[[1970,1983],`disallowed`],[[1984,2037],`valid`],[[2038,2042],`valid`,[],`NV8`],[[2043,2047],`disallowed`],[[2048,2093],`valid`],[[2094,2095],`disallowed`],[[2096,2110],`valid`,[],`NV8`],[[2111,2111],`disallowed`],[[2112,2139],`valid`],[[2140,2141],`disallowed`],[[2142,2142],`valid`,[],`NV8`],[[2143,2207],`disallowed`],[[2208,2208],`valid`],[[2209,2209],`valid`],[[2210,2220],`valid`],[[2221,2226],`valid`],[[2227,2228],`valid`],[[2229,2274],`disallowed`],[[2275,2275],`valid`],[[2276,2302],`valid`],[[2303,2303],`valid`],[[2304,2304],`valid`],[[2305,2307],`valid`],[[2308,2308],`valid`],[[2309,2361],`valid`],[[2362,2363],`valid`],[[2364,2381],`valid`],[[2382,2382],`valid`],[[2383,2383],`valid`],[[2384,2388],`valid`],[[2389,2389],`valid`],[[2390,2391],`valid`],[[2392,2392],`mapped`,[2325,2364]],[[2393,2393],`mapped`,[2326,2364]],[[2394,2394],`mapped`,[2327,2364]],[[2395,2395],`mapped`,[2332,2364]],[[2396,2396],`mapped`,[2337,2364]],[[2397,2397],`mapped`,[2338,2364]],[[2398,2398],`mapped`,[2347,2364]],[[2399,2399],`mapped`,[2351,2364]],[[2400,2403],`valid`],[[2404,2405],`valid`,[],`NV8`],[[2406,2415],`valid`],[[2416,2416],`valid`,[],`NV8`],[[2417,2418],`valid`],[[2419,2423],`valid`],[[2424,2424],`valid`],[[2425,2426],`valid`],[[2427,2428],`valid`],[[2429,2429],`valid`],[[2430,2431],`valid`],[[2432,2432],`valid`],[[2433,2435],`valid`],[[2436,2436],`disallowed`],[[2437,2444],`valid`],[[2445,2446],`disallowed`],[[2447,2448],`valid`],[[2449,2450],`disallowed`],[[2451,2472],`valid`],[[2473,2473],`disallowed`],[[2474,2480],`valid`],[[2481,2481],`disallowed`],[[2482,2482],`valid`],[[2483,2485],`disallowed`],[[2486,2489],`valid`],[[2490,2491],`disallowed`],[[2492,2492],`valid`],[[2493,2493],`valid`],[[2494,2500],`valid`],[[2501,2502],`disallowed`],[[2503,2504],`valid`],[[2505,2506],`disallowed`],[[2507,2509],`valid`],[[2510,2510],`valid`],[[2511,2518],`disallowed`],[[2519,2519],`valid`],[[2520,2523],`disallowed`],[[2524,2524],`mapped`,[2465,2492]],[[2525,2525],`mapped`,[2466,2492]],[[2526,2526],`disallowed`],[[2527,2527],`mapped`,[2479,2492]],[[2528,2531],`valid`],[[2532,2533],`disallowed`],[[2534,2545],`valid`],[[2546,2554],`valid`,[],`NV8`],[[2555,2555],`valid`,[],`NV8`],[[2556,2560],`disallowed`],[[2561,2561],`valid`],[[2562,2562],`valid`],[[2563,2563],`valid`],[[2564,2564],`disallowed`],[[2565,2570],`valid`],[[2571,2574],`disallowed`],[[2575,2576],`valid`],[[2577,2578],`disallowed`],[[2579,2600],`valid`],[[2601,2601],`disallowed`],[[2602,2608],`valid`],[[2609,2609],`disallowed`],[[2610,2610],`valid`],[[2611,2611],`mapped`,[2610,2620]],[[2612,2612],`disallowed`],[[2613,2613],`valid`],[[2614,2614],`mapped`,[2616,2620]],[[2615,2615],`disallowed`],[[2616,2617],`valid`],[[2618,2619],`disallowed`],[[2620,2620],`valid`],[[2621,2621],`disallowed`],[[2622,2626],`valid`],[[2627,2630],`disallowed`],[[2631,2632],`valid`],[[2633,2634],`disallowed`],[[2635,2637],`valid`],[[2638,2640],`disallowed`],[[2641,2641],`valid`],[[2642,2648],`disallowed`],[[2649,2649],`mapped`,[2582,2620]],[[2650,2650],`mapped`,[2583,2620]],[[2651,2651],`mapped`,[2588,2620]],[[2652,2652],`valid`],[[2653,2653],`disallowed`],[[2654,2654],`mapped`,[2603,2620]],[[2655,2661],`disallowed`],[[2662,2676],`valid`],[[2677,2677],`valid`],[[2678,2688],`disallowed`],[[2689,2691],`valid`],[[2692,2692],`disallowed`],[[2693,2699],`valid`],[[2700,2700],`valid`],[[2701,2701],`valid`],[[2702,2702],`disallowed`],[[2703,2705],`valid`],[[2706,2706],`disallowed`],[[2707,2728],`valid`],[[2729,2729],`disallowed`],[[2730,2736],`valid`],[[2737,2737],`disallowed`],[[2738,2739],`valid`],[[2740,2740],`disallowed`],[[2741,2745],`valid`],[[2746,2747],`disallowed`],[[2748,2757],`valid`],[[2758,2758],`disallowed`],[[2759,2761],`valid`],[[2762,2762],`disallowed`],[[2763,2765],`valid`],[[2766,2767],`disallowed`],[[2768,2768],`valid`],[[2769,2783],`disallowed`],[[2784,2784],`valid`],[[2785,2787],`valid`],[[2788,2789],`disallowed`],[[2790,2799],`valid`],[[2800,2800],`valid`,[],`NV8`],[[2801,2801],`valid`,[],`NV8`],[[2802,2808],`disallowed`],[[2809,2809],`valid`],[[2810,2816],`disallowed`],[[2817,2819],`valid`],[[2820,2820],`disallowed`],[[2821,2828],`valid`],[[2829,2830],`disallowed`],[[2831,2832],`valid`],[[2833,2834],`disallowed`],[[2835,2856],`valid`],[[2857,2857],`disallowed`],[[2858,2864],`valid`],[[2865,2865],`disallowed`],[[2866,2867],`valid`],[[2868,2868],`disallowed`],[[2869,2869],`valid`],[[2870,2873],`valid`],[[2874,2875],`disallowed`],[[2876,2883],`valid`],[[2884,2884],`valid`],[[2885,2886],`disallowed`],[[2887,2888],`valid`],[[2889,2890],`disallowed`],[[2891,2893],`valid`],[[2894,2901],`disallowed`],[[2902,2903],`valid`],[[2904,2907],`disallowed`],[[2908,2908],`mapped`,[2849,2876]],[[2909,2909],`mapped`,[2850,2876]],[[2910,2910],`disallowed`],[[2911,2913],`valid`],[[2914,2915],`valid`],[[2916,2917],`disallowed`],[[2918,2927],`valid`],[[2928,2928],`valid`,[],`NV8`],[[2929,2929],`valid`],[[2930,2935],`valid`,[],`NV8`],[[2936,2945],`disallowed`],[[2946,2947],`valid`],[[2948,2948],`disallowed`],[[2949,2954],`valid`],[[2955,2957],`disallowed`],[[2958,2960],`valid`],[[2961,2961],`disallowed`],[[2962,2965],`valid`],[[2966,2968],`disallowed`],[[2969,2970],`valid`],[[2971,2971],`disallowed`],[[2972,2972],`valid`],[[2973,2973],`disallowed`],[[2974,2975],`valid`],[[2976,2978],`disallowed`],[[2979,2980],`valid`],[[2981,2983],`disallowed`],[[2984,2986],`valid`],[[2987,2989],`disallowed`],[[2990,2997],`valid`],[[2998,2998],`valid`],[[2999,3001],`valid`],[[3002,3005],`disallowed`],[[3006,3010],`valid`],[[3011,3013],`disallowed`],[[3014,3016],`valid`],[[3017,3017],`disallowed`],[[3018,3021],`valid`],[[3022,3023],`disallowed`],[[3024,3024],`valid`],[[3025,3030],`disallowed`],[[3031,3031],`valid`],[[3032,3045],`disallowed`],[[3046,3046],`valid`],[[3047,3055],`valid`],[[3056,3058],`valid`,[],`NV8`],[[3059,3066],`valid`,[],`NV8`],[[3067,3071],`disallowed`],[[3072,3072],`valid`],[[3073,3075],`valid`],[[3076,3076],`disallowed`],[[3077,3084],`valid`],[[3085,3085],`disallowed`],[[3086,3088],`valid`],[[3089,3089],`disallowed`],[[3090,3112],`valid`],[[3113,3113],`disallowed`],[[3114,3123],`valid`],[[3124,3124],`valid`],[[3125,3129],`valid`],[[3130,3132],`disallowed`],[[3133,3133],`valid`],[[3134,3140],`valid`],[[3141,3141],`disallowed`],[[3142,3144],`valid`],[[3145,3145],`disallowed`],[[3146,3149],`valid`],[[3150,3156],`disallowed`],[[3157,3158],`valid`],[[3159,3159],`disallowed`],[[3160,3161],`valid`],[[3162,3162],`valid`],[[3163,3167],`disallowed`],[[3168,3169],`valid`],[[3170,3171],`valid`],[[3172,3173],`disallowed`],[[3174,3183],`valid`],[[3184,3191],`disallowed`],[[3192,3199],`valid`,[],`NV8`],[[3200,3200],`disallowed`],[[3201,3201],`valid`],[[3202,3203],`valid`],[[3204,3204],`disallowed`],[[3205,3212],`valid`],[[3213,3213],`disallowed`],[[3214,3216],`valid`],[[3217,3217],`disallowed`],[[3218,3240],`valid`],[[3241,3241],`disallowed`],[[3242,3251],`valid`],[[3252,3252],`disallowed`],[[3253,3257],`valid`],[[3258,3259],`disallowed`],[[3260,3261],`valid`],[[3262,3268],`valid`],[[3269,3269],`disallowed`],[[3270,3272],`valid`],[[3273,3273],`disallowed`],[[3274,3277],`valid`],[[3278,3284],`disallowed`],[[3285,3286],`valid`],[[3287,3293],`disallowed`],[[3294,3294],`valid`],[[3295,3295],`disallowed`],[[3296,3297],`valid`],[[3298,3299],`valid`],[[3300,3301],`disallowed`],[[3302,3311],`valid`],[[3312,3312],`disallowed`],[[3313,3314],`valid`],[[3315,3328],`disallowed`],[[3329,3329],`valid`],[[3330,3331],`valid`],[[3332,3332],`disallowed`],[[3333,3340],`valid`],[[3341,3341],`disallowed`],[[3342,3344],`valid`],[[3345,3345],`disallowed`],[[3346,3368],`valid`],[[3369,3369],`valid`],[[3370,3385],`valid`],[[3386,3386],`valid`],[[3387,3388],`disallowed`],[[3389,3389],`valid`],[[3390,3395],`valid`],[[3396,3396],`valid`],[[3397,3397],`disallowed`],[[3398,3400],`valid`],[[3401,3401],`disallowed`],[[3402,3405],`valid`],[[3406,3406],`valid`],[[3407,3414],`disallowed`],[[3415,3415],`valid`],[[3416,3422],`disallowed`],[[3423,3423],`valid`],[[3424,3425],`valid`],[[3426,3427],`valid`],[[3428,3429],`disallowed`],[[3430,3439],`valid`],[[3440,3445],`valid`,[],`NV8`],[[3446,3448],`disallowed`],[[3449,3449],`valid`,[],`NV8`],[[3450,3455],`valid`],[[3456,3457],`disallowed`],[[3458,3459],`valid`],[[3460,3460],`disallowed`],[[3461,3478],`valid`],[[3479,3481],`disallowed`],[[3482,3505],`valid`],[[3506,3506],`disallowed`],[[3507,3515],`valid`],[[3516,3516],`disallowed`],[[3517,3517],`valid`],[[3518,3519],`disallowed`],[[3520,3526],`valid`],[[3527,3529],`disallowed`],[[3530,3530],`valid`],[[3531,3534],`disallowed`],[[3535,3540],`valid`],[[3541,3541],`disallowed`],[[3542,3542],`valid`],[[3543,3543],`disallowed`],[[3544,3551],`valid`],[[3552,3557],`disallowed`],[[3558,3567],`valid`],[[3568,3569],`disallowed`],[[3570,3571],`valid`],[[3572,3572],`valid`,[],`NV8`],[[3573,3584],`disallowed`],[[3585,3634],`valid`],[[3635,3635],`mapped`,[3661,3634]],[[3636,3642],`valid`],[[3643,3646],`disallowed`],[[3647,3647],`valid`,[],`NV8`],[[3648,3662],`valid`],[[3663,3663],`valid`,[],`NV8`],[[3664,3673],`valid`],[[3674,3675],`valid`,[],`NV8`],[[3676,3712],`disallowed`],[[3713,3714],`valid`],[[3715,3715],`disallowed`],[[3716,3716],`valid`],[[3717,3718],`disallowed`],[[3719,3720],`valid`],[[3721,3721],`disallowed`],[[3722,3722],`valid`],[[3723,3724],`disallowed`],[[3725,3725],`valid`],[[3726,3731],`disallowed`],[[3732,3735],`valid`],[[3736,3736],`disallowed`],[[3737,3743],`valid`],[[3744,3744],`disallowed`],[[3745,3747],`valid`],[[3748,3748],`disallowed`],[[3749,3749],`valid`],[[3750,3750],`disallowed`],[[3751,3751],`valid`],[[3752,3753],`disallowed`],[[3754,3755],`valid`],[[3756,3756],`disallowed`],[[3757,3762],`valid`],[[3763,3763],`mapped`,[3789,3762]],[[3764,3769],`valid`],[[3770,3770],`disallowed`],[[3771,3773],`valid`],[[3774,3775],`disallowed`],[[3776,3780],`valid`],[[3781,3781],`disallowed`],[[3782,3782],`valid`],[[3783,3783],`disallowed`],[[3784,3789],`valid`],[[3790,3791],`disallowed`],[[3792,3801],`valid`],[[3802,3803],`disallowed`],[[3804,3804],`mapped`,[3755,3737]],[[3805,3805],`mapped`,[3755,3745]],[[3806,3807],`valid`],[[3808,3839],`disallowed`],[[3840,3840],`valid`],[[3841,3850],`valid`,[],`NV8`],[[3851,3851],`valid`],[[3852,3852],`mapped`,[3851]],[[3853,3863],`valid`,[],`NV8`],[[3864,3865],`valid`],[[3866,3871],`valid`,[],`NV8`],[[3872,3881],`valid`],[[3882,3892],`valid`,[],`NV8`],[[3893,3893],`valid`],[[3894,3894],`valid`,[],`NV8`],[[3895,3895],`valid`],[[3896,3896],`valid`,[],`NV8`],[[3897,3897],`valid`],[[3898,3901],`valid`,[],`NV8`],[[3902,3906],`valid`],[[3907,3907],`mapped`,[3906,4023]],[[3908,3911],`valid`],[[3912,3912],`disallowed`],[[3913,3916],`valid`],[[3917,3917],`mapped`,[3916,4023]],[[3918,3921],`valid`],[[3922,3922],`mapped`,[3921,4023]],[[3923,3926],`valid`],[[3927,3927],`mapped`,[3926,4023]],[[3928,3931],`valid`],[[3932,3932],`mapped`,[3931,4023]],[[3933,3944],`valid`],[[3945,3945],`mapped`,[3904,4021]],[[3946,3946],`valid`],[[3947,3948],`valid`],[[3949,3952],`disallowed`],[[3953,3954],`valid`],[[3955,3955],`mapped`,[3953,3954]],[[3956,3956],`valid`],[[3957,3957],`mapped`,[3953,3956]],[[3958,3958],`mapped`,[4018,3968]],[[3959,3959],`mapped`,[4018,3953,3968]],[[3960,3960],`mapped`,[4019,3968]],[[3961,3961],`mapped`,[4019,3953,3968]],[[3962,3968],`valid`],[[3969,3969],`mapped`,[3953,3968]],[[3970,3972],`valid`],[[3973,3973],`valid`,[],`NV8`],[[3974,3979],`valid`],[[3980,3983],`valid`],[[3984,3986],`valid`],[[3987,3987],`mapped`,[3986,4023]],[[3988,3989],`valid`],[[3990,3990],`valid`],[[3991,3991],`valid`],[[3992,3992],`disallowed`],[[3993,3996],`valid`],[[3997,3997],`mapped`,[3996,4023]],[[3998,4001],`valid`],[[4002,4002],`mapped`,[4001,4023]],[[4003,4006],`valid`],[[4007,4007],`mapped`,[4006,4023]],[[4008,4011],`valid`],[[4012,4012],`mapped`,[4011,4023]],[[4013,4013],`valid`],[[4014,4016],`valid`],[[4017,4023],`valid`],[[4024,4024],`valid`],[[4025,4025],`mapped`,[3984,4021]],[[4026,4028],`valid`],[[4029,4029],`disallowed`],[[4030,4037],`valid`,[],`NV8`],[[4038,4038],`valid`],[[4039,4044],`valid`,[],`NV8`],[[4045,4045],`disallowed`],[[4046,4046],`valid`,[],`NV8`],[[4047,4047],`valid`,[],`NV8`],[[4048,4049],`valid`,[],`NV8`],[[4050,4052],`valid`,[],`NV8`],[[4053,4056],`valid`,[],`NV8`],[[4057,4058],`valid`,[],`NV8`],[[4059,4095],`disallowed`],[[4096,4129],`valid`],[[4130,4130],`valid`],[[4131,4135],`valid`],[[4136,4136],`valid`],[[4137,4138],`valid`],[[4139,4139],`valid`],[[4140,4146],`valid`],[[4147,4149],`valid`],[[4150,4153],`valid`],[[4154,4159],`valid`],[[4160,4169],`valid`],[[4170,4175],`valid`,[],`NV8`],[[4176,4185],`valid`],[[4186,4249],`valid`],[[4250,4253],`valid`],[[4254,4255],`valid`,[],`NV8`],[[4256,4293],`disallowed`],[[4294,4294],`disallowed`],[[4295,4295],`mapped`,[11559]],[[4296,4300],`disallowed`],[[4301,4301],`mapped`,[11565]],[[4302,4303],`disallowed`],[[4304,4342],`valid`],[[4343,4344],`valid`],[[4345,4346],`valid`],[[4347,4347],`valid`,[],`NV8`],[[4348,4348],`mapped`,[4316]],[[4349,4351],`valid`],[[4352,4441],`valid`,[],`NV8`],[[4442,4446],`valid`,[],`NV8`],[[4447,4448],`disallowed`],[[4449,4514],`valid`,[],`NV8`],[[4515,4519],`valid`,[],`NV8`],[[4520,4601],`valid`,[],`NV8`],[[4602,4607],`valid`,[],`NV8`],[[4608,4614],`valid`],[[4615,4615],`valid`],[[4616,4678],`valid`],[[4679,4679],`valid`],[[4680,4680],`valid`],[[4681,4681],`disallowed`],[[4682,4685],`valid`],[[4686,4687],`disallowed`],[[4688,4694],`valid`],[[4695,4695],`disallowed`],[[4696,4696],`valid`],[[4697,4697],`disallowed`],[[4698,4701],`valid`],[[4702,4703],`disallowed`],[[4704,4742],`valid`],[[4743,4743],`valid`],[[4744,4744],`valid`],[[4745,4745],`disallowed`],[[4746,4749],`valid`],[[4750,4751],`disallowed`],[[4752,4782],`valid`],[[4783,4783],`valid`],[[4784,4784],`valid`],[[4785,4785],`disallowed`],[[4786,4789],`valid`],[[4790,4791],`disallowed`],[[4792,4798],`valid`],[[4799,4799],`disallowed`],[[4800,4800],`valid`],[[4801,4801],`disallowed`],[[4802,4805],`valid`],[[4806,4807],`disallowed`],[[4808,4814],`valid`],[[4815,4815],`valid`],[[4816,4822],`valid`],[[4823,4823],`disallowed`],[[4824,4846],`valid`],[[4847,4847],`valid`],[[4848,4878],`valid`],[[4879,4879],`valid`],[[4880,4880],`valid`],[[4881,4881],`disallowed`],[[4882,4885],`valid`],[[4886,4887],`disallowed`],[[4888,4894],`valid`],[[4895,4895],`valid`],[[4896,4934],`valid`],[[4935,4935],`valid`],[[4936,4954],`valid`],[[4955,4956],`disallowed`],[[4957,4958],`valid`],[[4959,4959],`valid`],[[4960,4960],`valid`,[],`NV8`],[[4961,4988],`valid`,[],`NV8`],[[4989,4991],`disallowed`],[[4992,5007],`valid`],[[5008,5017],`valid`,[],`NV8`],[[5018,5023],`disallowed`],[[5024,5108],`valid`],[[5109,5109],`valid`],[[5110,5111],`disallowed`],[[5112,5112],`mapped`,[5104]],[[5113,5113],`mapped`,[5105]],[[5114,5114],`mapped`,[5106]],[[5115,5115],`mapped`,[5107]],[[5116,5116],`mapped`,[5108]],[[5117,5117],`mapped`,[5109]],[[5118,5119],`disallowed`],[[5120,5120],`valid`,[],`NV8`],[[5121,5740],`valid`],[[5741,5742],`valid`,[],`NV8`],[[5743,5750],`valid`],[[5751,5759],`valid`],[[5760,5760],`disallowed`],[[5761,5786],`valid`],[[5787,5788],`valid`,[],`NV8`],[[5789,5791],`disallowed`],[[5792,5866],`valid`],[[5867,5872],`valid`,[],`NV8`],[[5873,5880],`valid`],[[5881,5887],`disallowed`],[[5888,5900],`valid`],[[5901,5901],`disallowed`],[[5902,5908],`valid`],[[5909,5919],`disallowed`],[[5920,5940],`valid`],[[5941,5942],`valid`,[],`NV8`],[[5943,5951],`disallowed`],[[5952,5971],`valid`],[[5972,5983],`disallowed`],[[5984,5996],`valid`],[[5997,5997],`disallowed`],[[5998,6e3],`valid`],[[6001,6001],`disallowed`],[[6002,6003],`valid`],[[6004,6015],`disallowed`],[[6016,6067],`valid`],[[6068,6069],`disallowed`],[[6070,6099],`valid`],[[6100,6102],`valid`,[],`NV8`],[[6103,6103],`valid`],[[6104,6107],`valid`,[],`NV8`],[[6108,6108],`valid`],[[6109,6109],`valid`],[[6110,6111],`disallowed`],[[6112,6121],`valid`],[[6122,6127],`disallowed`],[[6128,6137],`valid`,[],`NV8`],[[6138,6143],`disallowed`],[[6144,6149],`valid`,[],`NV8`],[[6150,6150],`disallowed`],[[6151,6154],`valid`,[],`NV8`],[[6155,6157],`ignored`],[[6158,6158],`disallowed`],[[6159,6159],`disallowed`],[[6160,6169],`valid`],[[6170,6175],`disallowed`],[[6176,6263],`valid`],[[6264,6271],`disallowed`],[[6272,6313],`valid`],[[6314,6314],`valid`],[[6315,6319],`disallowed`],[[6320,6389],`valid`],[[6390,6399],`disallowed`],[[6400,6428],`valid`],[[6429,6430],`valid`],[[6431,6431],`disallowed`],[[6432,6443],`valid`],[[6444,6447],`disallowed`],[[6448,6459],`valid`],[[6460,6463],`disallowed`],[[6464,6464],`valid`,[],`NV8`],[[6465,6467],`disallowed`],[[6468,6469],`valid`,[],`NV8`],[[6470,6509],`valid`],[[6510,6511],`disallowed`],[[6512,6516],`valid`],[[6517,6527],`disallowed`],[[6528,6569],`valid`],[[6570,6571],`valid`],[[6572,6575],`disallowed`],[[6576,6601],`valid`],[[6602,6607],`disallowed`],[[6608,6617],`valid`],[[6618,6618],`valid`,[],`XV8`],[[6619,6621],`disallowed`],[[6622,6623],`valid`,[],`NV8`],[[6624,6655],`valid`,[],`NV8`],[[6656,6683],`valid`],[[6684,6685],`disallowed`],[[6686,6687],`valid`,[],`NV8`],[[6688,6750],`valid`],[[6751,6751],`disallowed`],[[6752,6780],`valid`],[[6781,6782],`disallowed`],[[6783,6793],`valid`],[[6794,6799],`disallowed`],[[6800,6809],`valid`],[[6810,6815],`disallowed`],[[6816,6822],`valid`,[],`NV8`],[[6823,6823],`valid`],[[6824,6829],`valid`,[],`NV8`],[[6830,6831],`disallowed`],[[6832,6845],`valid`],[[6846,6846],`valid`,[],`NV8`],[[6847,6911],`disallowed`],[[6912,6987],`valid`],[[6988,6991],`disallowed`],[[6992,7001],`valid`],[[7002,7018],`valid`,[],`NV8`],[[7019,7027],`valid`],[[7028,7036],`valid`,[],`NV8`],[[7037,7039],`disallowed`],[[7040,7082],`valid`],[[7083,7085],`valid`],[[7086,7097],`valid`],[[7098,7103],`valid`],[[7104,7155],`valid`],[[7156,7163],`disallowed`],[[7164,7167],`valid`,[],`NV8`],[[7168,7223],`valid`],[[7224,7226],`disallowed`],[[7227,7231],`valid`,[],`NV8`],[[7232,7241],`valid`],[[7242,7244],`disallowed`],[[7245,7293],`valid`],[[7294,7295],`valid`,[],`NV8`],[[7296,7359],`disallowed`],[[7360,7367],`valid`,[],`NV8`],[[7368,7375],`disallowed`],[[7376,7378],`valid`],[[7379,7379],`valid`,[],`NV8`],[[7380,7410],`valid`],[[7411,7414],`valid`],[[7415,7415],`disallowed`],[[7416,7417],`valid`],[[7418,7423],`disallowed`],[[7424,7467],`valid`],[[7468,7468],`mapped`,[97]],[[7469,7469],`mapped`,[230]],[[7470,7470],`mapped`,[98]],[[7471,7471],`valid`],[[7472,7472],`mapped`,[100]],[[7473,7473],`mapped`,[101]],[[7474,7474],`mapped`,[477]],[[7475,7475],`mapped`,[103]],[[7476,7476],`mapped`,[104]],[[7477,7477],`mapped`,[105]],[[7478,7478],`mapped`,[106]],[[7479,7479],`mapped`,[107]],[[7480,7480],`mapped`,[108]],[[7481,7481],`mapped`,[109]],[[7482,7482],`mapped`,[110]],[[7483,7483],`valid`],[[7484,7484],`mapped`,[111]],[[7485,7485],`mapped`,[547]],[[7486,7486],`mapped`,[112]],[[7487,7487],`mapped`,[114]],[[7488,7488],`mapped`,[116]],[[7489,7489],`mapped`,[117]],[[7490,7490],`mapped`,[119]],[[7491,7491],`mapped`,[97]],[[7492,7492],`mapped`,[592]],[[7493,7493],`mapped`,[593]],[[7494,7494],`mapped`,[7426]],[[7495,7495],`mapped`,[98]],[[7496,7496],`mapped`,[100]],[[7497,7497],`mapped`,[101]],[[7498,7498],`mapped`,[601]],[[7499,7499],`mapped`,[603]],[[7500,7500],`mapped`,[604]],[[7501,7501],`mapped`,[103]],[[7502,7502],`valid`],[[7503,7503],`mapped`,[107]],[[7504,7504],`mapped`,[109]],[[7505,7505],`mapped`,[331]],[[7506,7506],`mapped`,[111]],[[7507,7507],`mapped`,[596]],[[7508,7508],`mapped`,[7446]],[[7509,7509],`mapped`,[7447]],[[7510,7510],`mapped`,[112]],[[7511,7511],`mapped`,[116]],[[7512,7512],`mapped`,[117]],[[7513,7513],`mapped`,[7453]],[[7514,7514],`mapped`,[623]],[[7515,7515],`mapped`,[118]],[[7516,7516],`mapped`,[7461]],[[7517,7517],`mapped`,[946]],[[7518,7518],`mapped`,[947]],[[7519,7519],`mapped`,[948]],[[7520,7520],`mapped`,[966]],[[7521,7521],`mapped`,[967]],[[7522,7522],`mapped`,[105]],[[7523,7523],`mapped`,[114]],[[7524,7524],`mapped`,[117]],[[7525,7525],`mapped`,[118]],[[7526,7526],`mapped`,[946]],[[7527,7527],`mapped`,[947]],[[7528,7528],`mapped`,[961]],[[7529,7529],`mapped`,[966]],[[7530,7530],`mapped`,[967]],[[7531,7531],`valid`],[[7532,7543],`valid`],[[7544,7544],`mapped`,[1085]],[[7545,7578],`valid`],[[7579,7579],`mapped`,[594]],[[7580,7580],`mapped`,[99]],[[7581,7581],`mapped`,[597]],[[7582,7582],`mapped`,[240]],[[7583,7583],`mapped`,[604]],[[7584,7584],`mapped`,[102]],[[7585,7585],`mapped`,[607]],[[7586,7586],`mapped`,[609]],[[7587,7587],`mapped`,[613]],[[7588,7588],`mapped`,[616]],[[7589,7589],`mapped`,[617]],[[7590,7590],`mapped`,[618]],[[7591,7591],`mapped`,[7547]],[[7592,7592],`mapped`,[669]],[[7593,7593],`mapped`,[621]],[[7594,7594],`mapped`,[7557]],[[7595,7595],`mapped`,[671]],[[7596,7596],`mapped`,[625]],[[7597,7597],`mapped`,[624]],[[7598,7598],`mapped`,[626]],[[7599,7599],`mapped`,[627]],[[7600,7600],`mapped`,[628]],[[7601,7601],`mapped`,[629]],[[7602,7602],`mapped`,[632]],[[7603,7603],`mapped`,[642]],[[7604,7604],`mapped`,[643]],[[7605,7605],`mapped`,[427]],[[7606,7606],`mapped`,[649]],[[7607,7607],`mapped`,[650]],[[7608,7608],`mapped`,[7452]],[[7609,7609],`mapped`,[651]],[[7610,7610],`mapped`,[652]],[[7611,7611],`mapped`,[122]],[[7612,7612],`mapped`,[656]],[[7613,7613],`mapped`,[657]],[[7614,7614],`mapped`,[658]],[[7615,7615],`mapped`,[952]],[[7616,7619],`valid`],[[7620,7626],`valid`],[[7627,7654],`valid`],[[7655,7669],`valid`],[[7670,7675],`disallowed`],[[7676,7676],`valid`],[[7677,7677],`valid`],[[7678,7679],`valid`],[[7680,7680],`mapped`,[7681]],[[7681,7681],`valid`],[[7682,7682],`mapped`,[7683]],[[7683,7683],`valid`],[[7684,7684],`mapped`,[7685]],[[7685,7685],`valid`],[[7686,7686],`mapped`,[7687]],[[7687,7687],`valid`],[[7688,7688],`mapped`,[7689]],[[7689,7689],`valid`],[[7690,7690],`mapped`,[7691]],[[7691,7691],`valid`],[[7692,7692],`mapped`,[7693]],[[7693,7693],`valid`],[[7694,7694],`mapped`,[7695]],[[7695,7695],`valid`],[[7696,7696],`mapped`,[7697]],[[7697,7697],`valid`],[[7698,7698],`mapped`,[7699]],[[7699,7699],`valid`],[[7700,7700],`mapped`,[7701]],[[7701,7701],`valid`],[[7702,7702],`mapped`,[7703]],[[7703,7703],`valid`],[[7704,7704],`mapped`,[7705]],[[7705,7705],`valid`],[[7706,7706],`mapped`,[7707]],[[7707,7707],`valid`],[[7708,7708],`mapped`,[7709]],[[7709,7709],`valid`],[[7710,7710],`mapped`,[7711]],[[7711,7711],`valid`],[[7712,7712],`mapped`,[7713]],[[7713,7713],`valid`],[[7714,7714],`mapped`,[7715]],[[7715,7715],`valid`],[[7716,7716],`mapped`,[7717]],[[7717,7717],`valid`],[[7718,7718],`mapped`,[7719]],[[7719,7719],`valid`],[[7720,7720],`mapped`,[7721]],[[7721,7721],`valid`],[[7722,7722],`mapped`,[7723]],[[7723,7723],`valid`],[[7724,7724],`mapped`,[7725]],[[7725,7725],`valid`],[[7726,7726],`mapped`,[7727]],[[7727,7727],`valid`],[[7728,7728],`mapped`,[7729]],[[7729,7729],`valid`],[[7730,7730],`mapped`,[7731]],[[7731,7731],`valid`],[[7732,7732],`mapped`,[7733]],[[7733,7733],`valid`],[[7734,7734],`mapped`,[7735]],[[7735,7735],`valid`],[[7736,7736],`mapped`,[7737]],[[7737,7737],`valid`],[[7738,7738],`mapped`,[7739]],[[7739,7739],`valid`],[[7740,7740],`mapped`,[7741]],[[7741,7741],`valid`],[[7742,7742],`mapped`,[7743]],[[7743,7743],`valid`],[[7744,7744],`mapped`,[7745]],[[7745,7745],`valid`],[[7746,7746],`mapped`,[7747]],[[7747,7747],`valid`],[[7748,7748],`mapped`,[7749]],[[7749,7749],`valid`],[[7750,7750],`mapped`,[7751]],[[7751,7751],`valid`],[[7752,7752],`mapped`,[7753]],[[7753,7753],`valid`],[[7754,7754],`mapped`,[7755]],[[7755,7755],`valid`],[[7756,7756],`mapped`,[7757]],[[7757,7757],`valid`],[[7758,7758],`mapped`,[7759]],[[7759,7759],`valid`],[[7760,7760],`mapped`,[7761]],[[7761,7761],`valid`],[[7762,7762],`mapped`,[7763]],[[7763,7763],`valid`],[[7764,7764],`mapped`,[7765]],[[7765,7765],`valid`],[[7766,7766],`mapped`,[7767]],[[7767,7767],`valid`],[[7768,7768],`mapped`,[7769]],[[7769,7769],`valid`],[[7770,7770],`mapped`,[7771]],[[7771,7771],`valid`],[[7772,7772],`mapped`,[7773]],[[7773,7773],`valid`],[[7774,7774],`mapped`,[7775]],[[7775,7775],`valid`],[[7776,7776],`mapped`,[7777]],[[7777,7777],`valid`],[[7778,7778],`mapped`,[7779]],[[7779,7779],`valid`],[[7780,7780],`mapped`,[7781]],[[7781,7781],`valid`],[[7782,7782],`mapped`,[7783]],[[7783,7783],`valid`],[[7784,7784],`mapped`,[7785]],[[7785,7785],`valid`],[[7786,7786],`mapped`,[7787]],[[7787,7787],`valid`],[[7788,7788],`mapped`,[7789]],[[7789,7789],`valid`],[[7790,7790],`mapped`,[7791]],[[7791,7791],`valid`],[[7792,7792],`mapped`,[7793]],[[7793,7793],`valid`],[[7794,7794],`mapped`,[7795]],[[7795,7795],`valid`],[[7796,7796],`mapped`,[7797]],[[7797,7797],`valid`],[[7798,7798],`mapped`,[7799]],[[7799,7799],`valid`],[[7800,7800],`mapped`,[7801]],[[7801,7801],`valid`],[[7802,7802],`mapped`,[7803]],[[7803,7803],`valid`],[[7804,7804],`mapped`,[7805]],[[7805,7805],`valid`],[[7806,7806],`mapped`,[7807]],[[7807,7807],`valid`],[[7808,7808],`mapped`,[7809]],[[7809,7809],`valid`],[[7810,7810],`mapped`,[7811]],[[7811,7811],`valid`],[[7812,7812],`mapped`,[7813]],[[7813,7813],`valid`],[[7814,7814],`mapped`,[7815]],[[7815,7815],`valid`],[[7816,7816],`mapped`,[7817]],[[7817,7817],`valid`],[[7818,7818],`mapped`,[7819]],[[7819,7819],`valid`],[[7820,7820],`mapped`,[7821]],[[7821,7821],`valid`],[[7822,7822],`mapped`,[7823]],[[7823,7823],`valid`],[[7824,7824],`mapped`,[7825]],[[7825,7825],`valid`],[[7826,7826],`mapped`,[7827]],[[7827,7827],`valid`],[[7828,7828],`mapped`,[7829]],[[7829,7833],`valid`],[[7834,7834],`mapped`,[97,702]],[[7835,7835],`mapped`,[7777]],[[7836,7837],`valid`],[[7838,7838],`mapped`,[115,115]],[[7839,7839],`valid`],[[7840,7840],`mapped`,[7841]],[[7841,7841],`valid`],[[7842,7842],`mapped`,[7843]],[[7843,7843],`valid`],[[7844,7844],`mapped`,[7845]],[[7845,7845],`valid`],[[7846,7846],`mapped`,[7847]],[[7847,7847],`valid`],[[7848,7848],`mapped`,[7849]],[[7849,7849],`valid`],[[7850,7850],`mapped`,[7851]],[[7851,7851],`valid`],[[7852,7852],`mapped`,[7853]],[[7853,7853],`valid`],[[7854,7854],`mapped`,[7855]],[[7855,7855],`valid`],[[7856,7856],`mapped`,[7857]],[[7857,7857],`valid`],[[7858,7858],`mapped`,[7859]],[[7859,7859],`valid`],[[7860,7860],`mapped`,[7861]],[[7861,7861],`valid`],[[7862,7862],`mapped`,[7863]],[[7863,7863],`valid`],[[7864,7864],`mapped`,[7865]],[[7865,7865],`valid`],[[7866,7866],`mapped`,[7867]],[[7867,7867],`valid`],[[7868,7868],`mapped`,[7869]],[[7869,7869],`valid`],[[7870,7870],`mapped`,[7871]],[[7871,7871],`valid`],[[7872,7872],`mapped`,[7873]],[[7873,7873],`valid`],[[7874,7874],`mapped`,[7875]],[[7875,7875],`valid`],[[7876,7876],`mapped`,[7877]],[[7877,7877],`valid`],[[7878,7878],`mapped`,[7879]],[[7879,7879],`valid`],[[7880,7880],`mapped`,[7881]],[[7881,7881],`valid`],[[7882,7882],`mapped`,[7883]],[[7883,7883],`valid`],[[7884,7884],`mapped`,[7885]],[[7885,7885],`valid`],[[7886,7886],`mapped`,[7887]],[[7887,7887],`valid`],[[7888,7888],`mapped`,[7889]],[[7889,7889],`valid`],[[7890,7890],`mapped`,[7891]],[[7891,7891],`valid`],[[7892,7892],`mapped`,[7893]],[[7893,7893],`valid`],[[7894,7894],`mapped`,[7895]],[[7895,7895],`valid`],[[7896,7896],`mapped`,[7897]],[[7897,7897],`valid`],[[7898,7898],`mapped`,[7899]],[[7899,7899],`valid`],[[7900,7900],`mapped`,[7901]],[[7901,7901],`valid`],[[7902,7902],`mapped`,[7903]],[[7903,7903],`valid`],[[7904,7904],`mapped`,[7905]],[[7905,7905],`valid`],[[7906,7906],`mapped`,[7907]],[[7907,7907],`valid`],[[7908,7908],`mapped`,[7909]],[[7909,7909],`valid`],[[7910,7910],`mapped`,[7911]],[[7911,7911],`valid`],[[7912,7912],`mapped`,[7913]],[[7913,7913],`valid`],[[7914,7914],`mapped`,[7915]],[[7915,7915],`valid`],[[7916,7916],`mapped`,[7917]],[[7917,7917],`valid`],[[7918,7918],`mapped`,[7919]],[[7919,7919],`valid`],[[7920,7920],`mapped`,[7921]],[[7921,7921],`valid`],[[7922,7922],`mapped`,[7923]],[[7923,7923],`valid`],[[7924,7924],`mapped`,[7925]],[[7925,7925],`valid`],[[7926,7926],`mapped`,[7927]],[[7927,7927],`valid`],[[7928,7928],`mapped`,[7929]],[[7929,7929],`valid`],[[7930,7930],`mapped`,[7931]],[[7931,7931],`valid`],[[7932,7932],`mapped`,[7933]],[[7933,7933],`valid`],[[7934,7934],`mapped`,[7935]],[[7935,7935],`valid`],[[7936,7943],`valid`],[[7944,7944],`mapped`,[7936]],[[7945,7945],`mapped`,[7937]],[[7946,7946],`mapped`,[7938]],[[7947,7947],`mapped`,[7939]],[[7948,7948],`mapped`,[7940]],[[7949,7949],`mapped`,[7941]],[[7950,7950],`mapped`,[7942]],[[7951,7951],`mapped`,[7943]],[[7952,7957],`valid`],[[7958,7959],`disallowed`],[[7960,7960],`mapped`,[7952]],[[7961,7961],`mapped`,[7953]],[[7962,7962],`mapped`,[7954]],[[7963,7963],`mapped`,[7955]],[[7964,7964],`mapped`,[7956]],[[7965,7965],`mapped`,[7957]],[[7966,7967],`disallowed`],[[7968,7975],`valid`],[[7976,7976],`mapped`,[7968]],[[7977,7977],`mapped`,[7969]],[[7978,7978],`mapped`,[7970]],[[7979,7979],`mapped`,[7971]],[[7980,7980],`mapped`,[7972]],[[7981,7981],`mapped`,[7973]],[[7982,7982],`mapped`,[7974]],[[7983,7983],`mapped`,[7975]],[[7984,7991],`valid`],[[7992,7992],`mapped`,[7984]],[[7993,7993],`mapped`,[7985]],[[7994,7994],`mapped`,[7986]],[[7995,7995],`mapped`,[7987]],[[7996,7996],`mapped`,[7988]],[[7997,7997],`mapped`,[7989]],[[7998,7998],`mapped`,[7990]],[[7999,7999],`mapped`,[7991]],[[8e3,8005],`valid`],[[8006,8007],`disallowed`],[[8008,8008],`mapped`,[8e3]],[[8009,8009],`mapped`,[8001]],[[8010,8010],`mapped`,[8002]],[[8011,8011],`mapped`,[8003]],[[8012,8012],`mapped`,[8004]],[[8013,8013],`mapped`,[8005]],[[8014,8015],`disallowed`],[[8016,8023],`valid`],[[8024,8024],`disallowed`],[[8025,8025],`mapped`,[8017]],[[8026,8026],`disallowed`],[[8027,8027],`mapped`,[8019]],[[8028,8028],`disallowed`],[[8029,8029],`mapped`,[8021]],[[8030,8030],`disallowed`],[[8031,8031],`mapped`,[8023]],[[8032,8039],`valid`],[[8040,8040],`mapped`,[8032]],[[8041,8041],`mapped`,[8033]],[[8042,8042],`mapped`,[8034]],[[8043,8043],`mapped`,[8035]],[[8044,8044],`mapped`,[8036]],[[8045,8045],`mapped`,[8037]],[[8046,8046],`mapped`,[8038]],[[8047,8047],`mapped`,[8039]],[[8048,8048],`valid`],[[8049,8049],`mapped`,[940]],[[8050,8050],`valid`],[[8051,8051],`mapped`,[941]],[[8052,8052],`valid`],[[8053,8053],`mapped`,[942]],[[8054,8054],`valid`],[[8055,8055],`mapped`,[943]],[[8056,8056],`valid`],[[8057,8057],`mapped`,[972]],[[8058,8058],`valid`],[[8059,8059],`mapped`,[973]],[[8060,8060],`valid`],[[8061,8061],`mapped`,[974]],[[8062,8063],`disallowed`],[[8064,8064],`mapped`,[7936,953]],[[8065,8065],`mapped`,[7937,953]],[[8066,8066],`mapped`,[7938,953]],[[8067,8067],`mapped`,[7939,953]],[[8068,8068],`mapped`,[7940,953]],[[8069,8069],`mapped`,[7941,953]],[[8070,8070],`mapped`,[7942,953]],[[8071,8071],`mapped`,[7943,953]],[[8072,8072],`mapped`,[7936,953]],[[8073,8073],`mapped`,[7937,953]],[[8074,8074],`mapped`,[7938,953]],[[8075,8075],`mapped`,[7939,953]],[[8076,8076],`mapped`,[7940,953]],[[8077,8077],`mapped`,[7941,953]],[[8078,8078],`mapped`,[7942,953]],[[8079,8079],`mapped`,[7943,953]],[[8080,8080],`mapped`,[7968,953]],[[8081,8081],`mapped`,[7969,953]],[[8082,8082],`mapped`,[7970,953]],[[8083,8083],`mapped`,[7971,953]],[[8084,8084],`mapped`,[7972,953]],[[8085,8085],`mapped`,[7973,953]],[[8086,8086],`mapped`,[7974,953]],[[8087,8087],`mapped`,[7975,953]],[[8088,8088],`mapped`,[7968,953]],[[8089,8089],`mapped`,[7969,953]],[[8090,8090],`mapped`,[7970,953]],[[8091,8091],`mapped`,[7971,953]],[[8092,8092],`mapped`,[7972,953]],[[8093,8093],`mapped`,[7973,953]],[[8094,8094],`mapped`,[7974,953]],[[8095,8095],`mapped`,[7975,953]],[[8096,8096],`mapped`,[8032,953]],[[8097,8097],`mapped`,[8033,953]],[[8098,8098],`mapped`,[8034,953]],[[8099,8099],`mapped`,[8035,953]],[[8100,8100],`mapped`,[8036,953]],[[8101,8101],`mapped`,[8037,953]],[[8102,8102],`mapped`,[8038,953]],[[8103,8103],`mapped`,[8039,953]],[[8104,8104],`mapped`,[8032,953]],[[8105,8105],`mapped`,[8033,953]],[[8106,8106],`mapped`,[8034,953]],[[8107,8107],`mapped`,[8035,953]],[[8108,8108],`mapped`,[8036,953]],[[8109,8109],`mapped`,[8037,953]],[[8110,8110],`mapped`,[8038,953]],[[8111,8111],`mapped`,[8039,953]],[[8112,8113],`valid`],[[8114,8114],`mapped`,[8048,953]],[[8115,8115],`mapped`,[945,953]],[[8116,8116],`mapped`,[940,953]],[[8117,8117],`disallowed`],[[8118,8118],`valid`],[[8119,8119],`mapped`,[8118,953]],[[8120,8120],`mapped`,[8112]],[[8121,8121],`mapped`,[8113]],[[8122,8122],`mapped`,[8048]],[[8123,8123],`mapped`,[940]],[[8124,8124],`mapped`,[945,953]],[[8125,8125],`disallowed_STD3_mapped`,[32,787]],[[8126,8126],`mapped`,[953]],[[8127,8127],`disallowed_STD3_mapped`,[32,787]],[[8128,8128],`disallowed_STD3_mapped`,[32,834]],[[8129,8129],`disallowed_STD3_mapped`,[32,776,834]],[[8130,8130],`mapped`,[8052,953]],[[8131,8131],`mapped`,[951,953]],[[8132,8132],`mapped`,[942,953]],[[8133,8133],`disallowed`],[[8134,8134],`valid`],[[8135,8135],`mapped`,[8134,953]],[[8136,8136],`mapped`,[8050]],[[8137,8137],`mapped`,[941]],[[8138,8138],`mapped`,[8052]],[[8139,8139],`mapped`,[942]],[[8140,8140],`mapped`,[951,953]],[[8141,8141],`disallowed_STD3_mapped`,[32,787,768]],[[8142,8142],`disallowed_STD3_mapped`,[32,787,769]],[[8143,8143],`disallowed_STD3_mapped`,[32,787,834]],[[8144,8146],`valid`],[[8147,8147],`mapped`,[912]],[[8148,8149],`disallowed`],[[8150,8151],`valid`],[[8152,8152],`mapped`,[8144]],[[8153,8153],`mapped`,[8145]],[[8154,8154],`mapped`,[8054]],[[8155,8155],`mapped`,[943]],[[8156,8156],`disallowed`],[[8157,8157],`disallowed_STD3_mapped`,[32,788,768]],[[8158,8158],`disallowed_STD3_mapped`,[32,788,769]],[[8159,8159],`disallowed_STD3_mapped`,[32,788,834]],[[8160,8162],`valid`],[[8163,8163],`mapped`,[944]],[[8164,8167],`valid`],[[8168,8168],`mapped`,[8160]],[[8169,8169],`mapped`,[8161]],[[8170,8170],`mapped`,[8058]],[[8171,8171],`mapped`,[973]],[[8172,8172],`mapped`,[8165]],[[8173,8173],`disallowed_STD3_mapped`,[32,776,768]],[[8174,8174],`disallowed_STD3_mapped`,[32,776,769]],[[8175,8175],`disallowed_STD3_mapped`,[96]],[[8176,8177],`disallowed`],[[8178,8178],`mapped`,[8060,953]],[[8179,8179],`mapped`,[969,953]],[[8180,8180],`mapped`,[974,953]],[[8181,8181],`disallowed`],[[8182,8182],`valid`],[[8183,8183],`mapped`,[8182,953]],[[8184,8184],`mapped`,[8056]],[[8185,8185],`mapped`,[972]],[[8186,8186],`mapped`,[8060]],[[8187,8187],`mapped`,[974]],[[8188,8188],`mapped`,[969,953]],[[8189,8189],`disallowed_STD3_mapped`,[32,769]],[[8190,8190],`disallowed_STD3_mapped`,[32,788]],[[8191,8191],`disallowed`],[[8192,8202],`disallowed_STD3_mapped`,[32]],[[8203,8203],`ignored`],[[8204,8205],`deviation`,[]],[[8206,8207],`disallowed`],[[8208,8208],`valid`,[],`NV8`],[[8209,8209],`mapped`,[8208]],[[8210,8214],`valid`,[],`NV8`],[[8215,8215],`disallowed_STD3_mapped`,[32,819]],[[8216,8227],`valid`,[],`NV8`],[[8228,8230],`disallowed`],[[8231,8231],`valid`,[],`NV8`],[[8232,8238],`disallowed`],[[8239,8239],`disallowed_STD3_mapped`,[32]],[[8240,8242],`valid`,[],`NV8`],[[8243,8243],`mapped`,[8242,8242]],[[8244,8244],`mapped`,[8242,8242,8242]],[[8245,8245],`valid`,[],`NV8`],[[8246,8246],`mapped`,[8245,8245]],[[8247,8247],`mapped`,[8245,8245,8245]],[[8248,8251],`valid`,[],`NV8`],[[8252,8252],`disallowed_STD3_mapped`,[33,33]],[[8253,8253],`valid`,[],`NV8`],[[8254,8254],`disallowed_STD3_mapped`,[32,773]],[[8255,8262],`valid`,[],`NV8`],[[8263,8263],`disallowed_STD3_mapped`,[63,63]],[[8264,8264],`disallowed_STD3_mapped`,[63,33]],[[8265,8265],`disallowed_STD3_mapped`,[33,63]],[[8266,8269],`valid`,[],`NV8`],[[8270,8274],`valid`,[],`NV8`],[[8275,8276],`valid`,[],`NV8`],[[8277,8278],`valid`,[],`NV8`],[[8279,8279],`mapped`,[8242,8242,8242,8242]],[[8280,8286],`valid`,[],`NV8`],[[8287,8287],`disallowed_STD3_mapped`,[32]],[[8288,8288],`ignored`],[[8289,8291],`disallowed`],[[8292,8292],`ignored`],[[8293,8293],`disallowed`],[[8294,8297],`disallowed`],[[8298,8303],`disallowed`],[[8304,8304],`mapped`,[48]],[[8305,8305],`mapped`,[105]],[[8306,8307],`disallowed`],[[8308,8308],`mapped`,[52]],[[8309,8309],`mapped`,[53]],[[8310,8310],`mapped`,[54]],[[8311,8311],`mapped`,[55]],[[8312,8312],`mapped`,[56]],[[8313,8313],`mapped`,[57]],[[8314,8314],`disallowed_STD3_mapped`,[43]],[[8315,8315],`mapped`,[8722]],[[8316,8316],`disallowed_STD3_mapped`,[61]],[[8317,8317],`disallowed_STD3_mapped`,[40]],[[8318,8318],`disallowed_STD3_mapped`,[41]],[[8319,8319],`mapped`,[110]],[[8320,8320],`mapped`,[48]],[[8321,8321],`mapped`,[49]],[[8322,8322],`mapped`,[50]],[[8323,8323],`mapped`,[51]],[[8324,8324],`mapped`,[52]],[[8325,8325],`mapped`,[53]],[[8326,8326],`mapped`,[54]],[[8327,8327],`mapped`,[55]],[[8328,8328],`mapped`,[56]],[[8329,8329],`mapped`,[57]],[[8330,8330],`disallowed_STD3_mapped`,[43]],[[8331,8331],`mapped`,[8722]],[[8332,8332],`disallowed_STD3_mapped`,[61]],[[8333,8333],`disallowed_STD3_mapped`,[40]],[[8334,8334],`disallowed_STD3_mapped`,[41]],[[8335,8335],`disallowed`],[[8336,8336],`mapped`,[97]],[[8337,8337],`mapped`,[101]],[[8338,8338],`mapped`,[111]],[[8339,8339],`mapped`,[120]],[[8340,8340],`mapped`,[601]],[[8341,8341],`mapped`,[104]],[[8342,8342],`mapped`,[107]],[[8343,8343],`mapped`,[108]],[[8344,8344],`mapped`,[109]],[[8345,8345],`mapped`,[110]],[[8346,8346],`mapped`,[112]],[[8347,8347],`mapped`,[115]],[[8348,8348],`mapped`,[116]],[[8349,8351],`disallowed`],[[8352,8359],`valid`,[],`NV8`],[[8360,8360],`mapped`,[114,115]],[[8361,8362],`valid`,[],`NV8`],[[8363,8363],`valid`,[],`NV8`],[[8364,8364],`valid`,[],`NV8`],[[8365,8367],`valid`,[],`NV8`],[[8368,8369],`valid`,[],`NV8`],[[8370,8373],`valid`,[],`NV8`],[[8374,8376],`valid`,[],`NV8`],[[8377,8377],`valid`,[],`NV8`],[[8378,8378],`valid`,[],`NV8`],[[8379,8381],`valid`,[],`NV8`],[[8382,8382],`valid`,[],`NV8`],[[8383,8399],`disallowed`],[[8400,8417],`valid`,[],`NV8`],[[8418,8419],`valid`,[],`NV8`],[[8420,8426],`valid`,[],`NV8`],[[8427,8427],`valid`,[],`NV8`],[[8428,8431],`valid`,[],`NV8`],[[8432,8432],`valid`,[],`NV8`],[[8433,8447],`disallowed`],[[8448,8448],`disallowed_STD3_mapped`,[97,47,99]],[[8449,8449],`disallowed_STD3_mapped`,[97,47,115]],[[8450,8450],`mapped`,[99]],[[8451,8451],`mapped`,[176,99]],[[8452,8452],`valid`,[],`NV8`],[[8453,8453],`disallowed_STD3_mapped`,[99,47,111]],[[8454,8454],`disallowed_STD3_mapped`,[99,47,117]],[[8455,8455],`mapped`,[603]],[[8456,8456],`valid`,[],`NV8`],[[8457,8457],`mapped`,[176,102]],[[8458,8458],`mapped`,[103]],[[8459,8462],`mapped`,[104]],[[8463,8463],`mapped`,[295]],[[8464,8465],`mapped`,[105]],[[8466,8467],`mapped`,[108]],[[8468,8468],`valid`,[],`NV8`],[[8469,8469],`mapped`,[110]],[[8470,8470],`mapped`,[110,111]],[[8471,8472],`valid`,[],`NV8`],[[8473,8473],`mapped`,[112]],[[8474,8474],`mapped`,[113]],[[8475,8477],`mapped`,[114]],[[8478,8479],`valid`,[],`NV8`],[[8480,8480],`mapped`,[115,109]],[[8481,8481],`mapped`,[116,101,108]],[[8482,8482],`mapped`,[116,109]],[[8483,8483],`valid`,[],`NV8`],[[8484,8484],`mapped`,[122]],[[8485,8485],`valid`,[],`NV8`],[[8486,8486],`mapped`,[969]],[[8487,8487],`valid`,[],`NV8`],[[8488,8488],`mapped`,[122]],[[8489,8489],`valid`,[],`NV8`],[[8490,8490],`mapped`,[107]],[[8491,8491],`mapped`,[229]],[[8492,8492],`mapped`,[98]],[[8493,8493],`mapped`,[99]],[[8494,8494],`valid`,[],`NV8`],[[8495,8496],`mapped`,[101]],[[8497,8497],`mapped`,[102]],[[8498,8498],`disallowed`],[[8499,8499],`mapped`,[109]],[[8500,8500],`mapped`,[111]],[[8501,8501],`mapped`,[1488]],[[8502,8502],`mapped`,[1489]],[[8503,8503],`mapped`,[1490]],[[8504,8504],`mapped`,[1491]],[[8505,8505],`mapped`,[105]],[[8506,8506],`valid`,[],`NV8`],[[8507,8507],`mapped`,[102,97,120]],[[8508,8508],`mapped`,[960]],[[8509,8510],`mapped`,[947]],[[8511,8511],`mapped`,[960]],[[8512,8512],`mapped`,[8721]],[[8513,8516],`valid`,[],`NV8`],[[8517,8518],`mapped`,[100]],[[8519,8519],`mapped`,[101]],[[8520,8520],`mapped`,[105]],[[8521,8521],`mapped`,[106]],[[8522,8523],`valid`,[],`NV8`],[[8524,8524],`valid`,[],`NV8`],[[8525,8525],`valid`,[],`NV8`],[[8526,8526],`valid`],[[8527,8527],`valid`,[],`NV8`],[[8528,8528],`mapped`,[49,8260,55]],[[8529,8529],`mapped`,[49,8260,57]],[[8530,8530],`mapped`,[49,8260,49,48]],[[8531,8531],`mapped`,[49,8260,51]],[[8532,8532],`mapped`,[50,8260,51]],[[8533,8533],`mapped`,[49,8260,53]],[[8534,8534],`mapped`,[50,8260,53]],[[8535,8535],`mapped`,[51,8260,53]],[[8536,8536],`mapped`,[52,8260,53]],[[8537,8537],`mapped`,[49,8260,54]],[[8538,8538],`mapped`,[53,8260,54]],[[8539,8539],`mapped`,[49,8260,56]],[[8540,8540],`mapped`,[51,8260,56]],[[8541,8541],`mapped`,[53,8260,56]],[[8542,8542],`mapped`,[55,8260,56]],[[8543,8543],`mapped`,[49,8260]],[[8544,8544],`mapped`,[105]],[[8545,8545],`mapped`,[105,105]],[[8546,8546],`mapped`,[105,105,105]],[[8547,8547],`mapped`,[105,118]],[[8548,8548],`mapped`,[118]],[[8549,8549],`mapped`,[118,105]],[[8550,8550],`mapped`,[118,105,105]],[[8551,8551],`mapped`,[118,105,105,105]],[[8552,8552],`mapped`,[105,120]],[[8553,8553],`mapped`,[120]],[[8554,8554],`mapped`,[120,105]],[[8555,8555],`mapped`,[120,105,105]],[[8556,8556],`mapped`,[108]],[[8557,8557],`mapped`,[99]],[[8558,8558],`mapped`,[100]],[[8559,8559],`mapped`,[109]],[[8560,8560],`mapped`,[105]],[[8561,8561],`mapped`,[105,105]],[[8562,8562],`mapped`,[105,105,105]],[[8563,8563],`mapped`,[105,118]],[[8564,8564],`mapped`,[118]],[[8565,8565],`mapped`,[118,105]],[[8566,8566],`mapped`,[118,105,105]],[[8567,8567],`mapped`,[118,105,105,105]],[[8568,8568],`mapped`,[105,120]],[[8569,8569],`mapped`,[120]],[[8570,8570],`mapped`,[120,105]],[[8571,8571],`mapped`,[120,105,105]],[[8572,8572],`mapped`,[108]],[[8573,8573],`mapped`,[99]],[[8574,8574],`mapped`,[100]],[[8575,8575],`mapped`,[109]],[[8576,8578],`valid`,[],`NV8`],[[8579,8579],`disallowed`],[[8580,8580],`valid`],[[8581,8584],`valid`,[],`NV8`],[[8585,8585],`mapped`,[48,8260,51]],[[8586,8587],`valid`,[],`NV8`],[[8588,8591],`disallowed`],[[8592,8682],`valid`,[],`NV8`],[[8683,8691],`valid`,[],`NV8`],[[8692,8703],`valid`,[],`NV8`],[[8704,8747],`valid`,[],`NV8`],[[8748,8748],`mapped`,[8747,8747]],[[8749,8749],`mapped`,[8747,8747,8747]],[[8750,8750],`valid`,[],`NV8`],[[8751,8751],`mapped`,[8750,8750]],[[8752,8752],`mapped`,[8750,8750,8750]],[[8753,8799],`valid`,[],`NV8`],[[8800,8800],`disallowed_STD3_valid`],[[8801,8813],`valid`,[],`NV8`],[[8814,8815],`disallowed_STD3_valid`],[[8816,8945],`valid`,[],`NV8`],[[8946,8959],`valid`,[],`NV8`],[[8960,8960],`valid`,[],`NV8`],[[8961,8961],`valid`,[],`NV8`],[[8962,9e3],`valid`,[],`NV8`],[[9001,9001],`mapped`,[12296]],[[9002,9002],`mapped`,[12297]],[[9003,9082],`valid`,[],`NV8`],[[9083,9083],`valid`,[],`NV8`],[[9084,9084],`valid`,[],`NV8`],[[9085,9114],`valid`,[],`NV8`],[[9115,9166],`valid`,[],`NV8`],[[9167,9168],`valid`,[],`NV8`],[[9169,9179],`valid`,[],`NV8`],[[9180,9191],`valid`,[],`NV8`],[[9192,9192],`valid`,[],`NV8`],[[9193,9203],`valid`,[],`NV8`],[[9204,9210],`valid`,[],`NV8`],[[9211,9215],`disallowed`],[[9216,9252],`valid`,[],`NV8`],[[9253,9254],`valid`,[],`NV8`],[[9255,9279],`disallowed`],[[9280,9290],`valid`,[],`NV8`],[[9291,9311],`disallowed`],[[9312,9312],`mapped`,[49]],[[9313,9313],`mapped`,[50]],[[9314,9314],`mapped`,[51]],[[9315,9315],`mapped`,[52]],[[9316,9316],`mapped`,[53]],[[9317,9317],`mapped`,[54]],[[9318,9318],`mapped`,[55]],[[9319,9319],`mapped`,[56]],[[9320,9320],`mapped`,[57]],[[9321,9321],`mapped`,[49,48]],[[9322,9322],`mapped`,[49,49]],[[9323,9323],`mapped`,[49,50]],[[9324,9324],`mapped`,[49,51]],[[9325,9325],`mapped`,[49,52]],[[9326,9326],`mapped`,[49,53]],[[9327,9327],`mapped`,[49,54]],[[9328,9328],`mapped`,[49,55]],[[9329,9329],`mapped`,[49,56]],[[9330,9330],`mapped`,[49,57]],[[9331,9331],`mapped`,[50,48]],[[9332,9332],`disallowed_STD3_mapped`,[40,49,41]],[[9333,9333],`disallowed_STD3_mapped`,[40,50,41]],[[9334,9334],`disallowed_STD3_mapped`,[40,51,41]],[[9335,9335],`disallowed_STD3_mapped`,[40,52,41]],[[9336,9336],`disallowed_STD3_mapped`,[40,53,41]],[[9337,9337],`disallowed_STD3_mapped`,[40,54,41]],[[9338,9338],`disallowed_STD3_mapped`,[40,55,41]],[[9339,9339],`disallowed_STD3_mapped`,[40,56,41]],[[9340,9340],`disallowed_STD3_mapped`,[40,57,41]],[[9341,9341],`disallowed_STD3_mapped`,[40,49,48,41]],[[9342,9342],`disallowed_STD3_mapped`,[40,49,49,41]],[[9343,9343],`disallowed_STD3_mapped`,[40,49,50,41]],[[9344,9344],`disallowed_STD3_mapped`,[40,49,51,41]],[[9345,9345],`disallowed_STD3_mapped`,[40,49,52,41]],[[9346,9346],`disallowed_STD3_mapped`,[40,49,53,41]],[[9347,9347],`disallowed_STD3_mapped`,[40,49,54,41]],[[9348,9348],`disallowed_STD3_mapped`,[40,49,55,41]],[[9349,9349],`disallowed_STD3_mapped`,[40,49,56,41]],[[9350,9350],`disallowed_STD3_mapped`,[40,49,57,41]],[[9351,9351],`disallowed_STD3_mapped`,[40,50,48,41]],[[9352,9371],`disallowed`],[[9372,9372],`disallowed_STD3_mapped`,[40,97,41]],[[9373,9373],`disallowed_STD3_mapped`,[40,98,41]],[[9374,9374],`disallowed_STD3_mapped`,[40,99,41]],[[9375,9375],`disallowed_STD3_mapped`,[40,100,41]],[[9376,9376],`disallowed_STD3_mapped`,[40,101,41]],[[9377,9377],`disallowed_STD3_mapped`,[40,102,41]],[[9378,9378],`disallowed_STD3_mapped`,[40,103,41]],[[9379,9379],`disallowed_STD3_mapped`,[40,104,41]],[[9380,9380],`disallowed_STD3_mapped`,[40,105,41]],[[9381,9381],`disallowed_STD3_mapped`,[40,106,41]],[[9382,9382],`disallowed_STD3_mapped`,[40,107,41]],[[9383,9383],`disallowed_STD3_mapped`,[40,108,41]],[[9384,9384],`disallowed_STD3_mapped`,[40,109,41]],[[9385,9385],`disallowed_STD3_mapped`,[40,110,41]],[[9386,9386],`disallowed_STD3_mapped`,[40,111,41]],[[9387,9387],`disallowed_STD3_mapped`,[40,112,41]],[[9388,9388],`disallowed_STD3_mapped`,[40,113,41]],[[9389,9389],`disallowed_STD3_mapped`,[40,114,41]],[[9390,9390],`disallowed_STD3_mapped`,[40,115,41]],[[9391,9391],`disallowed_STD3_mapped`,[40,116,41]],[[9392,9392],`disallowed_STD3_mapped`,[40,117,41]],[[9393,9393],`disallowed_STD3_mapped`,[40,118,41]],[[9394,9394],`disallowed_STD3_mapped`,[40,119,41]],[[9395,9395],`disallowed_STD3_mapped`,[40,120,41]],[[9396,9396],`disallowed_STD3_mapped`,[40,121,41]],[[9397,9397],`disallowed_STD3_mapped`,[40,122,41]],[[9398,9398],`mapped`,[97]],[[9399,9399],`mapped`,[98]],[[9400,9400],`mapped`,[99]],[[9401,9401],`mapped`,[100]],[[9402,9402],`mapped`,[101]],[[9403,9403],`mapped`,[102]],[[9404,9404],`mapped`,[103]],[[9405,9405],`mapped`,[104]],[[9406,9406],`mapped`,[105]],[[9407,9407],`mapped`,[106]],[[9408,9408],`mapped`,[107]],[[9409,9409],`mapped`,[108]],[[9410,9410],`mapped`,[109]],[[9411,9411],`mapped`,[110]],[[9412,9412],`mapped`,[111]],[[9413,9413],`mapped`,[112]],[[9414,9414],`mapped`,[113]],[[9415,9415],`mapped`,[114]],[[9416,9416],`mapped`,[115]],[[9417,9417],`mapped`,[116]],[[9418,9418],`mapped`,[117]],[[9419,9419],`mapped`,[118]],[[9420,9420],`mapped`,[119]],[[9421,9421],`mapped`,[120]],[[9422,9422],`mapped`,[121]],[[9423,9423],`mapped`,[122]],[[9424,9424],`mapped`,[97]],[[9425,9425],`mapped`,[98]],[[9426,9426],`mapped`,[99]],[[9427,9427],`mapped`,[100]],[[9428,9428],`mapped`,[101]],[[9429,9429],`mapped`,[102]],[[9430,9430],`mapped`,[103]],[[9431,9431],`mapped`,[104]],[[9432,9432],`mapped`,[105]],[[9433,9433],`mapped`,[106]],[[9434,9434],`mapped`,[107]],[[9435,9435],`mapped`,[108]],[[9436,9436],`mapped`,[109]],[[9437,9437],`mapped`,[110]],[[9438,9438],`mapped`,[111]],[[9439,9439],`mapped`,[112]],[[9440,9440],`mapped`,[113]],[[9441,9441],`mapped`,[114]],[[9442,9442],`mapped`,[115]],[[9443,9443],`mapped`,[116]],[[9444,9444],`mapped`,[117]],[[9445,9445],`mapped`,[118]],[[9446,9446],`mapped`,[119]],[[9447,9447],`mapped`,[120]],[[9448,9448],`mapped`,[121]],[[9449,9449],`mapped`,[122]],[[9450,9450],`mapped`,[48]],[[9451,9470],`valid`,[],`NV8`],[[9471,9471],`valid`,[],`NV8`],[[9472,9621],`valid`,[],`NV8`],[[9622,9631],`valid`,[],`NV8`],[[9632,9711],`valid`,[],`NV8`],[[9712,9719],`valid`,[],`NV8`],[[9720,9727],`valid`,[],`NV8`],[[9728,9747],`valid`,[],`NV8`],[[9748,9749],`valid`,[],`NV8`],[[9750,9751],`valid`,[],`NV8`],[[9752,9752],`valid`,[],`NV8`],[[9753,9753],`valid`,[],`NV8`],[[9754,9839],`valid`,[],`NV8`],[[9840,9841],`valid`,[],`NV8`],[[9842,9853],`valid`,[],`NV8`],[[9854,9855],`valid`,[],`NV8`],[[9856,9865],`valid`,[],`NV8`],[[9866,9873],`valid`,[],`NV8`],[[9874,9884],`valid`,[],`NV8`],[[9885,9885],`valid`,[],`NV8`],[[9886,9887],`valid`,[],`NV8`],[[9888,9889],`valid`,[],`NV8`],[[9890,9905],`valid`,[],`NV8`],[[9906,9906],`valid`,[],`NV8`],[[9907,9916],`valid`,[],`NV8`],[[9917,9919],`valid`,[],`NV8`],[[9920,9923],`valid`,[],`NV8`],[[9924,9933],`valid`,[],`NV8`],[[9934,9934],`valid`,[],`NV8`],[[9935,9953],`valid`,[],`NV8`],[[9954,9954],`valid`,[],`NV8`],[[9955,9955],`valid`,[],`NV8`],[[9956,9959],`valid`,[],`NV8`],[[9960,9983],`valid`,[],`NV8`],[[9984,9984],`valid`,[],`NV8`],[[9985,9988],`valid`,[],`NV8`],[[9989,9989],`valid`,[],`NV8`],[[9990,9993],`valid`,[],`NV8`],[[9994,9995],`valid`,[],`NV8`],[[9996,10023],`valid`,[],`NV8`],[[10024,10024],`valid`,[],`NV8`],[[10025,10059],`valid`,[],`NV8`],[[10060,10060],`valid`,[],`NV8`],[[10061,10061],`valid`,[],`NV8`],[[10062,10062],`valid`,[],`NV8`],[[10063,10066],`valid`,[],`NV8`],[[10067,10069],`valid`,[],`NV8`],[[10070,10070],`valid`,[],`NV8`],[[10071,10071],`valid`,[],`NV8`],[[10072,10078],`valid`,[],`NV8`],[[10079,10080],`valid`,[],`NV8`],[[10081,10087],`valid`,[],`NV8`],[[10088,10101],`valid`,[],`NV8`],[[10102,10132],`valid`,[],`NV8`],[[10133,10135],`valid`,[],`NV8`],[[10136,10159],`valid`,[],`NV8`],[[10160,10160],`valid`,[],`NV8`],[[10161,10174],`valid`,[],`NV8`],[[10175,10175],`valid`,[],`NV8`],[[10176,10182],`valid`,[],`NV8`],[[10183,10186],`valid`,[],`NV8`],[[10187,10187],`valid`,[],`NV8`],[[10188,10188],`valid`,[],`NV8`],[[10189,10189],`valid`,[],`NV8`],[[10190,10191],`valid`,[],`NV8`],[[10192,10219],`valid`,[],`NV8`],[[10220,10223],`valid`,[],`NV8`],[[10224,10239],`valid`,[],`NV8`],[[10240,10495],`valid`,[],`NV8`],[[10496,10763],`valid`,[],`NV8`],[[10764,10764],`mapped`,[8747,8747,8747,8747]],[[10765,10867],`valid`,[],`NV8`],[[10868,10868],`disallowed_STD3_mapped`,[58,58,61]],[[10869,10869],`disallowed_STD3_mapped`,[61,61]],[[10870,10870],`disallowed_STD3_mapped`,[61,61,61]],[[10871,10971],`valid`,[],`NV8`],[[10972,10972],`mapped`,[10973,824]],[[10973,11007],`valid`,[],`NV8`],[[11008,11021],`valid`,[],`NV8`],[[11022,11027],`valid`,[],`NV8`],[[11028,11034],`valid`,[],`NV8`],[[11035,11039],`valid`,[],`NV8`],[[11040,11043],`valid`,[],`NV8`],[[11044,11084],`valid`,[],`NV8`],[[11085,11087],`valid`,[],`NV8`],[[11088,11092],`valid`,[],`NV8`],[[11093,11097],`valid`,[],`NV8`],[[11098,11123],`valid`,[],`NV8`],[[11124,11125],`disallowed`],[[11126,11157],`valid`,[],`NV8`],[[11158,11159],`disallowed`],[[11160,11193],`valid`,[],`NV8`],[[11194,11196],`disallowed`],[[11197,11208],`valid`,[],`NV8`],[[11209,11209],`disallowed`],[[11210,11217],`valid`,[],`NV8`],[[11218,11243],`disallowed`],[[11244,11247],`valid`,[],`NV8`],[[11248,11263],`disallowed`],[[11264,11264],`mapped`,[11312]],[[11265,11265],`mapped`,[11313]],[[11266,11266],`mapped`,[11314]],[[11267,11267],`mapped`,[11315]],[[11268,11268],`mapped`,[11316]],[[11269,11269],`mapped`,[11317]],[[11270,11270],`mapped`,[11318]],[[11271,11271],`mapped`,[11319]],[[11272,11272],`mapped`,[11320]],[[11273,11273],`mapped`,[11321]],[[11274,11274],`mapped`,[11322]],[[11275,11275],`mapped`,[11323]],[[11276,11276],`mapped`,[11324]],[[11277,11277],`mapped`,[11325]],[[11278,11278],`mapped`,[11326]],[[11279,11279],`mapped`,[11327]],[[11280,11280],`mapped`,[11328]],[[11281,11281],`mapped`,[11329]],[[11282,11282],`mapped`,[11330]],[[11283,11283],`mapped`,[11331]],[[11284,11284],`mapped`,[11332]],[[11285,11285],`mapped`,[11333]],[[11286,11286],`mapped`,[11334]],[[11287,11287],`mapped`,[11335]],[[11288,11288],`mapped`,[11336]],[[11289,11289],`mapped`,[11337]],[[11290,11290],`mapped`,[11338]],[[11291,11291],`mapped`,[11339]],[[11292,11292],`mapped`,[11340]],[[11293,11293],`mapped`,[11341]],[[11294,11294],`mapped`,[11342]],[[11295,11295],`mapped`,[11343]],[[11296,11296],`mapped`,[11344]],[[11297,11297],`mapped`,[11345]],[[11298,11298],`mapped`,[11346]],[[11299,11299],`mapped`,[11347]],[[11300,11300],`mapped`,[11348]],[[11301,11301],`mapped`,[11349]],[[11302,11302],`mapped`,[11350]],[[11303,11303],`mapped`,[11351]],[[11304,11304],`mapped`,[11352]],[[11305,11305],`mapped`,[11353]],[[11306,11306],`mapped`,[11354]],[[11307,11307],`mapped`,[11355]],[[11308,11308],`mapped`,[11356]],[[11309,11309],`mapped`,[11357]],[[11310,11310],`mapped`,[11358]],[[11311,11311],`disallowed`],[[11312,11358],`valid`],[[11359,11359],`disallowed`],[[11360,11360],`mapped`,[11361]],[[11361,11361],`valid`],[[11362,11362],`mapped`,[619]],[[11363,11363],`mapped`,[7549]],[[11364,11364],`mapped`,[637]],[[11365,11366],`valid`],[[11367,11367],`mapped`,[11368]],[[11368,11368],`valid`],[[11369,11369],`mapped`,[11370]],[[11370,11370],`valid`],[[11371,11371],`mapped`,[11372]],[[11372,11372],`valid`],[[11373,11373],`mapped`,[593]],[[11374,11374],`mapped`,[625]],[[11375,11375],`mapped`,[592]],[[11376,11376],`mapped`,[594]],[[11377,11377],`valid`],[[11378,11378],`mapped`,[11379]],[[11379,11379],`valid`],[[11380,11380],`valid`],[[11381,11381],`mapped`,[11382]],[[11382,11383],`valid`],[[11384,11387],`valid`],[[11388,11388],`mapped`,[106]],[[11389,11389],`mapped`,[118]],[[11390,11390],`mapped`,[575]],[[11391,11391],`mapped`,[576]],[[11392,11392],`mapped`,[11393]],[[11393,11393],`valid`],[[11394,11394],`mapped`,[11395]],[[11395,11395],`valid`],[[11396,11396],`mapped`,[11397]],[[11397,11397],`valid`],[[11398,11398],`mapped`,[11399]],[[11399,11399],`valid`],[[11400,11400],`mapped`,[11401]],[[11401,11401],`valid`],[[11402,11402],`mapped`,[11403]],[[11403,11403],`valid`],[[11404,11404],`mapped`,[11405]],[[11405,11405],`valid`],[[11406,11406],`mapped`,[11407]],[[11407,11407],`valid`],[[11408,11408],`mapped`,[11409]],[[11409,11409],`valid`],[[11410,11410],`mapped`,[11411]],[[11411,11411],`valid`],[[11412,11412],`mapped`,[11413]],[[11413,11413],`valid`],[[11414,11414],`mapped`,[11415]],[[11415,11415],`valid`],[[11416,11416],`mapped`,[11417]],[[11417,11417],`valid`],[[11418,11418],`mapped`,[11419]],[[11419,11419],`valid`],[[11420,11420],`mapped`,[11421]],[[11421,11421],`valid`],[[11422,11422],`mapped`,[11423]],[[11423,11423],`valid`],[[11424,11424],`mapped`,[11425]],[[11425,11425],`valid`],[[11426,11426],`mapped`,[11427]],[[11427,11427],`valid`],[[11428,11428],`mapped`,[11429]],[[11429,11429],`valid`],[[11430,11430],`mapped`,[11431]],[[11431,11431],`valid`],[[11432,11432],`mapped`,[11433]],[[11433,11433],`valid`],[[11434,11434],`mapped`,[11435]],[[11435,11435],`valid`],[[11436,11436],`mapped`,[11437]],[[11437,11437],`valid`],[[11438,11438],`mapped`,[11439]],[[11439,11439],`valid`],[[11440,11440],`mapped`,[11441]],[[11441,11441],`valid`],[[11442,11442],`mapped`,[11443]],[[11443,11443],`valid`],[[11444,11444],`mapped`,[11445]],[[11445,11445],`valid`],[[11446,11446],`mapped`,[11447]],[[11447,11447],`valid`],[[11448,11448],`mapped`,[11449]],[[11449,11449],`valid`],[[11450,11450],`mapped`,[11451]],[[11451,11451],`valid`],[[11452,11452],`mapped`,[11453]],[[11453,11453],`valid`],[[11454,11454],`mapped`,[11455]],[[11455,11455],`valid`],[[11456,11456],`mapped`,[11457]],[[11457,11457],`valid`],[[11458,11458],`mapped`,[11459]],[[11459,11459],`valid`],[[11460,11460],`mapped`,[11461]],[[11461,11461],`valid`],[[11462,11462],`mapped`,[11463]],[[11463,11463],`valid`],[[11464,11464],`mapped`,[11465]],[[11465,11465],`valid`],[[11466,11466],`mapped`,[11467]],[[11467,11467],`valid`],[[11468,11468],`mapped`,[11469]],[[11469,11469],`valid`],[[11470,11470],`mapped`,[11471]],[[11471,11471],`valid`],[[11472,11472],`mapped`,[11473]],[[11473,11473],`valid`],[[11474,11474],`mapped`,[11475]],[[11475,11475],`valid`],[[11476,11476],`mapped`,[11477]],[[11477,11477],`valid`],[[11478,11478],`mapped`,[11479]],[[11479,11479],`valid`],[[11480,11480],`mapped`,[11481]],[[11481,11481],`valid`],[[11482,11482],`mapped`,[11483]],[[11483,11483],`valid`],[[11484,11484],`mapped`,[11485]],[[11485,11485],`valid`],[[11486,11486],`mapped`,[11487]],[[11487,11487],`valid`],[[11488,11488],`mapped`,[11489]],[[11489,11489],`valid`],[[11490,11490],`mapped`,[11491]],[[11491,11492],`valid`],[[11493,11498],`valid`,[],`NV8`],[[11499,11499],`mapped`,[11500]],[[11500,11500],`valid`],[[11501,11501],`mapped`,[11502]],[[11502,11505],`valid`],[[11506,11506],`mapped`,[11507]],[[11507,11507],`valid`],[[11508,11512],`disallowed`],[[11513,11519],`valid`,[],`NV8`],[[11520,11557],`valid`],[[11558,11558],`disallowed`],[[11559,11559],`valid`],[[11560,11564],`disallowed`],[[11565,11565],`valid`],[[11566,11567],`disallowed`],[[11568,11621],`valid`],[[11622,11623],`valid`],[[11624,11630],`disallowed`],[[11631,11631],`mapped`,[11617]],[[11632,11632],`valid`,[],`NV8`],[[11633,11646],`disallowed`],[[11647,11647],`valid`],[[11648,11670],`valid`],[[11671,11679],`disallowed`],[[11680,11686],`valid`],[[11687,11687],`disallowed`],[[11688,11694],`valid`],[[11695,11695],`disallowed`],[[11696,11702],`valid`],[[11703,11703],`disallowed`],[[11704,11710],`valid`],[[11711,11711],`disallowed`],[[11712,11718],`valid`],[[11719,11719],`disallowed`],[[11720,11726],`valid`],[[11727,11727],`disallowed`],[[11728,11734],`valid`],[[11735,11735],`disallowed`],[[11736,11742],`valid`],[[11743,11743],`disallowed`],[[11744,11775],`valid`],[[11776,11799],`valid`,[],`NV8`],[[11800,11803],`valid`,[],`NV8`],[[11804,11805],`valid`,[],`NV8`],[[11806,11822],`valid`,[],`NV8`],[[11823,11823],`valid`],[[11824,11824],`valid`,[],`NV8`],[[11825,11825],`valid`,[],`NV8`],[[11826,11835],`valid`,[],`NV8`],[[11836,11842],`valid`,[],`NV8`],[[11843,11903],`disallowed`],[[11904,11929],`valid`,[],`NV8`],[[11930,11930],`disallowed`],[[11931,11934],`valid`,[],`NV8`],[[11935,11935],`mapped`,[27597]],[[11936,12018],`valid`,[],`NV8`],[[12019,12019],`mapped`,[40863]],[[12020,12031],`disallowed`],[[12032,12032],`mapped`,[19968]],[[12033,12033],`mapped`,[20008]],[[12034,12034],`mapped`,[20022]],[[12035,12035],`mapped`,[20031]],[[12036,12036],`mapped`,[20057]],[[12037,12037],`mapped`,[20101]],[[12038,12038],`mapped`,[20108]],[[12039,12039],`mapped`,[20128]],[[12040,12040],`mapped`,[20154]],[[12041,12041],`mapped`,[20799]],[[12042,12042],`mapped`,[20837]],[[12043,12043],`mapped`,[20843]],[[12044,12044],`mapped`,[20866]],[[12045,12045],`mapped`,[20886]],[[12046,12046],`mapped`,[20907]],[[12047,12047],`mapped`,[20960]],[[12048,12048],`mapped`,[20981]],[[12049,12049],`mapped`,[20992]],[[12050,12050],`mapped`,[21147]],[[12051,12051],`mapped`,[21241]],[[12052,12052],`mapped`,[21269]],[[12053,12053],`mapped`,[21274]],[[12054,12054],`mapped`,[21304]],[[12055,12055],`mapped`,[21313]],[[12056,12056],`mapped`,[21340]],[[12057,12057],`mapped`,[21353]],[[12058,12058],`mapped`,[21378]],[[12059,12059],`mapped`,[21430]],[[12060,12060],`mapped`,[21448]],[[12061,12061],`mapped`,[21475]],[[12062,12062],`mapped`,[22231]],[[12063,12063],`mapped`,[22303]],[[12064,12064],`mapped`,[22763]],[[12065,12065],`mapped`,[22786]],[[12066,12066],`mapped`,[22794]],[[12067,12067],`mapped`,[22805]],[[12068,12068],`mapped`,[22823]],[[12069,12069],`mapped`,[22899]],[[12070,12070],`mapped`,[23376]],[[12071,12071],`mapped`,[23424]],[[12072,12072],`mapped`,[23544]],[[12073,12073],`mapped`,[23567]],[[12074,12074],`mapped`,[23586]],[[12075,12075],`mapped`,[23608]],[[12076,12076],`mapped`,[23662]],[[12077,12077],`mapped`,[23665]],[[12078,12078],`mapped`,[24027]],[[12079,12079],`mapped`,[24037]],[[12080,12080],`mapped`,[24049]],[[12081,12081],`mapped`,[24062]],[[12082,12082],`mapped`,[24178]],[[12083,12083],`mapped`,[24186]],[[12084,12084],`mapped`,[24191]],[[12085,12085],`mapped`,[24308]],[[12086,12086],`mapped`,[24318]],[[12087,12087],`mapped`,[24331]],[[12088,12088],`mapped`,[24339]],[[12089,12089],`mapped`,[24400]],[[12090,12090],`mapped`,[24417]],[[12091,12091],`mapped`,[24435]],[[12092,12092],`mapped`,[24515]],[[12093,12093],`mapped`,[25096]],[[12094,12094],`mapped`,[25142]],[[12095,12095],`mapped`,[25163]],[[12096,12096],`mapped`,[25903]],[[12097,12097],`mapped`,[25908]],[[12098,12098],`mapped`,[25991]],[[12099,12099],`mapped`,[26007]],[[12100,12100],`mapped`,[26020]],[[12101,12101],`mapped`,[26041]],[[12102,12102],`mapped`,[26080]],[[12103,12103],`mapped`,[26085]],[[12104,12104],`mapped`,[26352]],[[12105,12105],`mapped`,[26376]],[[12106,12106],`mapped`,[26408]],[[12107,12107],`mapped`,[27424]],[[12108,12108],`mapped`,[27490]],[[12109,12109],`mapped`,[27513]],[[12110,12110],`mapped`,[27571]],[[12111,12111],`mapped`,[27595]],[[12112,12112],`mapped`,[27604]],[[12113,12113],`mapped`,[27611]],[[12114,12114],`mapped`,[27663]],[[12115,12115],`mapped`,[27668]],[[12116,12116],`mapped`,[27700]],[[12117,12117],`mapped`,[28779]],[[12118,12118],`mapped`,[29226]],[[12119,12119],`mapped`,[29238]],[[12120,12120],`mapped`,[29243]],[[12121,12121],`mapped`,[29247]],[[12122,12122],`mapped`,[29255]],[[12123,12123],`mapped`,[29273]],[[12124,12124],`mapped`,[29275]],[[12125,12125],`mapped`,[29356]],[[12126,12126],`mapped`,[29572]],[[12127,12127],`mapped`,[29577]],[[12128,12128],`mapped`,[29916]],[[12129,12129],`mapped`,[29926]],[[12130,12130],`mapped`,[29976]],[[12131,12131],`mapped`,[29983]],[[12132,12132],`mapped`,[29992]],[[12133,12133],`mapped`,[3e4]],[[12134,12134],`mapped`,[30091]],[[12135,12135],`mapped`,[30098]],[[12136,12136],`mapped`,[30326]],[[12137,12137],`mapped`,[30333]],[[12138,12138],`mapped`,[30382]],[[12139,12139],`mapped`,[30399]],[[12140,12140],`mapped`,[30446]],[[12141,12141],`mapped`,[30683]],[[12142,12142],`mapped`,[30690]],[[12143,12143],`mapped`,[30707]],[[12144,12144],`mapped`,[31034]],[[12145,12145],`mapped`,[31160]],[[12146,12146],`mapped`,[31166]],[[12147,12147],`mapped`,[31348]],[[12148,12148],`mapped`,[31435]],[[12149,12149],`mapped`,[31481]],[[12150,12150],`mapped`,[31859]],[[12151,12151],`mapped`,[31992]],[[12152,12152],`mapped`,[32566]],[[12153,12153],`mapped`,[32593]],[[12154,12154],`mapped`,[32650]],[[12155,12155],`mapped`,[32701]],[[12156,12156],`mapped`,[32769]],[[12157,12157],`mapped`,[32780]],[[12158,12158],`mapped`,[32786]],[[12159,12159],`mapped`,[32819]],[[12160,12160],`mapped`,[32895]],[[12161,12161],`mapped`,[32905]],[[12162,12162],`mapped`,[33251]],[[12163,12163],`mapped`,[33258]],[[12164,12164],`mapped`,[33267]],[[12165,12165],`mapped`,[33276]],[[12166,12166],`mapped`,[33292]],[[12167,12167],`mapped`,[33307]],[[12168,12168],`mapped`,[33311]],[[12169,12169],`mapped`,[33390]],[[12170,12170],`mapped`,[33394]],[[12171,12171],`mapped`,[33400]],[[12172,12172],`mapped`,[34381]],[[12173,12173],`mapped`,[34411]],[[12174,12174],`mapped`,[34880]],[[12175,12175],`mapped`,[34892]],[[12176,12176],`mapped`,[34915]],[[12177,12177],`mapped`,[35198]],[[12178,12178],`mapped`,[35211]],[[12179,12179],`mapped`,[35282]],[[12180,12180],`mapped`,[35328]],[[12181,12181],`mapped`,[35895]],[[12182,12182],`mapped`,[35910]],[[12183,12183],`mapped`,[35925]],[[12184,12184],`mapped`,[35960]],[[12185,12185],`mapped`,[35997]],[[12186,12186],`mapped`,[36196]],[[12187,12187],`mapped`,[36208]],[[12188,12188],`mapped`,[36275]],[[12189,12189],`mapped`,[36523]],[[12190,12190],`mapped`,[36554]],[[12191,12191],`mapped`,[36763]],[[12192,12192],`mapped`,[36784]],[[12193,12193],`mapped`,[36789]],[[12194,12194],`mapped`,[37009]],[[12195,12195],`mapped`,[37193]],[[12196,12196],`mapped`,[37318]],[[12197,12197],`mapped`,[37324]],[[12198,12198],`mapped`,[37329]],[[12199,12199],`mapped`,[38263]],[[12200,12200],`mapped`,[38272]],[[12201,12201],`mapped`,[38428]],[[12202,12202],`mapped`,[38582]],[[12203,12203],`mapped`,[38585]],[[12204,12204],`mapped`,[38632]],[[12205,12205],`mapped`,[38737]],[[12206,12206],`mapped`,[38750]],[[12207,12207],`mapped`,[38754]],[[12208,12208],`mapped`,[38761]],[[12209,12209],`mapped`,[38859]],[[12210,12210],`mapped`,[38893]],[[12211,12211],`mapped`,[38899]],[[12212,12212],`mapped`,[38913]],[[12213,12213],`mapped`,[39080]],[[12214,12214],`mapped`,[39131]],[[12215,12215],`mapped`,[39135]],[[12216,12216],`mapped`,[39318]],[[12217,12217],`mapped`,[39321]],[[12218,12218],`mapped`,[39340]],[[12219,12219],`mapped`,[39592]],[[12220,12220],`mapped`,[39640]],[[12221,12221],`mapped`,[39647]],[[12222,12222],`mapped`,[39717]],[[12223,12223],`mapped`,[39727]],[[12224,12224],`mapped`,[39730]],[[12225,12225],`mapped`,[39740]],[[12226,12226],`mapped`,[39770]],[[12227,12227],`mapped`,[40165]],[[12228,12228],`mapped`,[40565]],[[12229,12229],`mapped`,[40575]],[[12230,12230],`mapped`,[40613]],[[12231,12231],`mapped`,[40635]],[[12232,12232],`mapped`,[40643]],[[12233,12233],`mapped`,[40653]],[[12234,12234],`mapped`,[40657]],[[12235,12235],`mapped`,[40697]],[[12236,12236],`mapped`,[40701]],[[12237,12237],`mapped`,[40718]],[[12238,12238],`mapped`,[40723]],[[12239,12239],`mapped`,[40736]],[[12240,12240],`mapped`,[40763]],[[12241,12241],`mapped`,[40778]],[[12242,12242],`mapped`,[40786]],[[12243,12243],`mapped`,[40845]],[[12244,12244],`mapped`,[40860]],[[12245,12245],`mapped`,[40864]],[[12246,12271],`disallowed`],[[12272,12283],`disallowed`],[[12284,12287],`disallowed`],[[12288,12288],`disallowed_STD3_mapped`,[32]],[[12289,12289],`valid`,[],`NV8`],[[12290,12290],`mapped`,[46]],[[12291,12292],`valid`,[],`NV8`],[[12293,12295],`valid`],[[12296,12329],`valid`,[],`NV8`],[[12330,12333],`valid`],[[12334,12341],`valid`,[],`NV8`],[[12342,12342],`mapped`,[12306]],[[12343,12343],`valid`,[],`NV8`],[[12344,12344],`mapped`,[21313]],[[12345,12345],`mapped`,[21316]],[[12346,12346],`mapped`,[21317]],[[12347,12347],`valid`,[],`NV8`],[[12348,12348],`valid`],[[12349,12349],`valid`,[],`NV8`],[[12350,12350],`valid`,[],`NV8`],[[12351,12351],`valid`,[],`NV8`],[[12352,12352],`disallowed`],[[12353,12436],`valid`],[[12437,12438],`valid`],[[12439,12440],`disallowed`],[[12441,12442],`valid`],[[12443,12443],`disallowed_STD3_mapped`,[32,12441]],[[12444,12444],`disallowed_STD3_mapped`,[32,12442]],[[12445,12446],`valid`],[[12447,12447],`mapped`,[12424,12426]],[[12448,12448],`valid`,[],`NV8`],[[12449,12542],`valid`],[[12543,12543],`mapped`,[12467,12488]],[[12544,12548],`disallowed`],[[12549,12588],`valid`],[[12589,12589],`valid`],[[12590,12592],`disallowed`],[[12593,12593],`mapped`,[4352]],[[12594,12594],`mapped`,[4353]],[[12595,12595],`mapped`,[4522]],[[12596,12596],`mapped`,[4354]],[[12597,12597],`mapped`,[4524]],[[12598,12598],`mapped`,[4525]],[[12599,12599],`mapped`,[4355]],[[12600,12600],`mapped`,[4356]],[[12601,12601],`mapped`,[4357]],[[12602,12602],`mapped`,[4528]],[[12603,12603],`mapped`,[4529]],[[12604,12604],`mapped`,[4530]],[[12605,12605],`mapped`,[4531]],[[12606,12606],`mapped`,[4532]],[[12607,12607],`mapped`,[4533]],[[12608,12608],`mapped`,[4378]],[[12609,12609],`mapped`,[4358]],[[12610,12610],`mapped`,[4359]],[[12611,12611],`mapped`,[4360]],[[12612,12612],`mapped`,[4385]],[[12613,12613],`mapped`,[4361]],[[12614,12614],`mapped`,[4362]],[[12615,12615],`mapped`,[4363]],[[12616,12616],`mapped`,[4364]],[[12617,12617],`mapped`,[4365]],[[12618,12618],`mapped`,[4366]],[[12619,12619],`mapped`,[4367]],[[12620,12620],`mapped`,[4368]],[[12621,12621],`mapped`,[4369]],[[12622,12622],`mapped`,[4370]],[[12623,12623],`mapped`,[4449]],[[12624,12624],`mapped`,[4450]],[[12625,12625],`mapped`,[4451]],[[12626,12626],`mapped`,[4452]],[[12627,12627],`mapped`,[4453]],[[12628,12628],`mapped`,[4454]],[[12629,12629],`mapped`,[4455]],[[12630,12630],`mapped`,[4456]],[[12631,12631],`mapped`,[4457]],[[12632,12632],`mapped`,[4458]],[[12633,12633],`mapped`,[4459]],[[12634,12634],`mapped`,[4460]],[[12635,12635],`mapped`,[4461]],[[12636,12636],`mapped`,[4462]],[[12637,12637],`mapped`,[4463]],[[12638,12638],`mapped`,[4464]],[[12639,12639],`mapped`,[4465]],[[12640,12640],`mapped`,[4466]],[[12641,12641],`mapped`,[4467]],[[12642,12642],`mapped`,[4468]],[[12643,12643],`mapped`,[4469]],[[12644,12644],`disallowed`],[[12645,12645],`mapped`,[4372]],[[12646,12646],`mapped`,[4373]],[[12647,12647],`mapped`,[4551]],[[12648,12648],`mapped`,[4552]],[[12649,12649],`mapped`,[4556]],[[12650,12650],`mapped`,[4558]],[[12651,12651],`mapped`,[4563]],[[12652,12652],`mapped`,[4567]],[[12653,12653],`mapped`,[4569]],[[12654,12654],`mapped`,[4380]],[[12655,12655],`mapped`,[4573]],[[12656,12656],`mapped`,[4575]],[[12657,12657],`mapped`,[4381]],[[12658,12658],`mapped`,[4382]],[[12659,12659],`mapped`,[4384]],[[12660,12660],`mapped`,[4386]],[[12661,12661],`mapped`,[4387]],[[12662,12662],`mapped`,[4391]],[[12663,12663],`mapped`,[4393]],[[12664,12664],`mapped`,[4395]],[[12665,12665],`mapped`,[4396]],[[12666,12666],`mapped`,[4397]],[[12667,12667],`mapped`,[4398]],[[12668,12668],`mapped`,[4399]],[[12669,12669],`mapped`,[4402]],[[12670,12670],`mapped`,[4406]],[[12671,12671],`mapped`,[4416]],[[12672,12672],`mapped`,[4423]],[[12673,12673],`mapped`,[4428]],[[12674,12674],`mapped`,[4593]],[[12675,12675],`mapped`,[4594]],[[12676,12676],`mapped`,[4439]],[[12677,12677],`mapped`,[4440]],[[12678,12678],`mapped`,[4441]],[[12679,12679],`mapped`,[4484]],[[12680,12680],`mapped`,[4485]],[[12681,12681],`mapped`,[4488]],[[12682,12682],`mapped`,[4497]],[[12683,12683],`mapped`,[4498]],[[12684,12684],`mapped`,[4500]],[[12685,12685],`mapped`,[4510]],[[12686,12686],`mapped`,[4513]],[[12687,12687],`disallowed`],[[12688,12689],`valid`,[],`NV8`],[[12690,12690],`mapped`,[19968]],[[12691,12691],`mapped`,[20108]],[[12692,12692],`mapped`,[19977]],[[12693,12693],`mapped`,[22235]],[[12694,12694],`mapped`,[19978]],[[12695,12695],`mapped`,[20013]],[[12696,12696],`mapped`,[19979]],[[12697,12697],`mapped`,[30002]],[[12698,12698],`mapped`,[20057]],[[12699,12699],`mapped`,[19993]],[[12700,12700],`mapped`,[19969]],[[12701,12701],`mapped`,[22825]],[[12702,12702],`mapped`,[22320]],[[12703,12703],`mapped`,[20154]],[[12704,12727],`valid`],[[12728,12730],`valid`],[[12731,12735],`disallowed`],[[12736,12751],`valid`,[],`NV8`],[[12752,12771],`valid`,[],`NV8`],[[12772,12783],`disallowed`],[[12784,12799],`valid`],[[12800,12800],`disallowed_STD3_mapped`,[40,4352,41]],[[12801,12801],`disallowed_STD3_mapped`,[40,4354,41]],[[12802,12802],`disallowed_STD3_mapped`,[40,4355,41]],[[12803,12803],`disallowed_STD3_mapped`,[40,4357,41]],[[12804,12804],`disallowed_STD3_mapped`,[40,4358,41]],[[12805,12805],`disallowed_STD3_mapped`,[40,4359,41]],[[12806,12806],`disallowed_STD3_mapped`,[40,4361,41]],[[12807,12807],`disallowed_STD3_mapped`,[40,4363,41]],[[12808,12808],`disallowed_STD3_mapped`,[40,4364,41]],[[12809,12809],`disallowed_STD3_mapped`,[40,4366,41]],[[12810,12810],`disallowed_STD3_mapped`,[40,4367,41]],[[12811,12811],`disallowed_STD3_mapped`,[40,4368,41]],[[12812,12812],`disallowed_STD3_mapped`,[40,4369,41]],[[12813,12813],`disallowed_STD3_mapped`,[40,4370,41]],[[12814,12814],`disallowed_STD3_mapped`,[40,44032,41]],[[12815,12815],`disallowed_STD3_mapped`,[40,45208,41]],[[12816,12816],`disallowed_STD3_mapped`,[40,45796,41]],[[12817,12817],`disallowed_STD3_mapped`,[40,46972,41]],[[12818,12818],`disallowed_STD3_mapped`,[40,47560,41]],[[12819,12819],`disallowed_STD3_mapped`,[40,48148,41]],[[12820,12820],`disallowed_STD3_mapped`,[40,49324,41]],[[12821,12821],`disallowed_STD3_mapped`,[40,50500,41]],[[12822,12822],`disallowed_STD3_mapped`,[40,51088,41]],[[12823,12823],`disallowed_STD3_mapped`,[40,52264,41]],[[12824,12824],`disallowed_STD3_mapped`,[40,52852,41]],[[12825,12825],`disallowed_STD3_mapped`,[40,53440,41]],[[12826,12826],`disallowed_STD3_mapped`,[40,54028,41]],[[12827,12827],`disallowed_STD3_mapped`,[40,54616,41]],[[12828,12828],`disallowed_STD3_mapped`,[40,51452,41]],[[12829,12829],`disallowed_STD3_mapped`,[40,50724,51204,41]],[[12830,12830],`disallowed_STD3_mapped`,[40,50724,54980,41]],[[12831,12831],`disallowed`],[[12832,12832],`disallowed_STD3_mapped`,[40,19968,41]],[[12833,12833],`disallowed_STD3_mapped`,[40,20108,41]],[[12834,12834],`disallowed_STD3_mapped`,[40,19977,41]],[[12835,12835],`disallowed_STD3_mapped`,[40,22235,41]],[[12836,12836],`disallowed_STD3_mapped`,[40,20116,41]],[[12837,12837],`disallowed_STD3_mapped`,[40,20845,41]],[[12838,12838],`disallowed_STD3_mapped`,[40,19971,41]],[[12839,12839],`disallowed_STD3_mapped`,[40,20843,41]],[[12840,12840],`disallowed_STD3_mapped`,[40,20061,41]],[[12841,12841],`disallowed_STD3_mapped`,[40,21313,41]],[[12842,12842],`disallowed_STD3_mapped`,[40,26376,41]],[[12843,12843],`disallowed_STD3_mapped`,[40,28779,41]],[[12844,12844],`disallowed_STD3_mapped`,[40,27700,41]],[[12845,12845],`disallowed_STD3_mapped`,[40,26408,41]],[[12846,12846],`disallowed_STD3_mapped`,[40,37329,41]],[[12847,12847],`disallowed_STD3_mapped`,[40,22303,41]],[[12848,12848],`disallowed_STD3_mapped`,[40,26085,41]],[[12849,12849],`disallowed_STD3_mapped`,[40,26666,41]],[[12850,12850],`disallowed_STD3_mapped`,[40,26377,41]],[[12851,12851],`disallowed_STD3_mapped`,[40,31038,41]],[[12852,12852],`disallowed_STD3_mapped`,[40,21517,41]],[[12853,12853],`disallowed_STD3_mapped`,[40,29305,41]],[[12854,12854],`disallowed_STD3_mapped`,[40,36001,41]],[[12855,12855],`disallowed_STD3_mapped`,[40,31069,41]],[[12856,12856],`disallowed_STD3_mapped`,[40,21172,41]],[[12857,12857],`disallowed_STD3_mapped`,[40,20195,41]],[[12858,12858],`disallowed_STD3_mapped`,[40,21628,41]],[[12859,12859],`disallowed_STD3_mapped`,[40,23398,41]],[[12860,12860],`disallowed_STD3_mapped`,[40,30435,41]],[[12861,12861],`disallowed_STD3_mapped`,[40,20225,41]],[[12862,12862],`disallowed_STD3_mapped`,[40,36039,41]],[[12863,12863],`disallowed_STD3_mapped`,[40,21332,41]],[[12864,12864],`disallowed_STD3_mapped`,[40,31085,41]],[[12865,12865],`disallowed_STD3_mapped`,[40,20241,41]],[[12866,12866],`disallowed_STD3_mapped`,[40,33258,41]],[[12867,12867],`disallowed_STD3_mapped`,[40,33267,41]],[[12868,12868],`mapped`,[21839]],[[12869,12869],`mapped`,[24188]],[[12870,12870],`mapped`,[25991]],[[12871,12871],`mapped`,[31631]],[[12872,12879],`valid`,[],`NV8`],[[12880,12880],`mapped`,[112,116,101]],[[12881,12881],`mapped`,[50,49]],[[12882,12882],`mapped`,[50,50]],[[12883,12883],`mapped`,[50,51]],[[12884,12884],`mapped`,[50,52]],[[12885,12885],`mapped`,[50,53]],[[12886,12886],`mapped`,[50,54]],[[12887,12887],`mapped`,[50,55]],[[12888,12888],`mapped`,[50,56]],[[12889,12889],`mapped`,[50,57]],[[12890,12890],`mapped`,[51,48]],[[12891,12891],`mapped`,[51,49]],[[12892,12892],`mapped`,[51,50]],[[12893,12893],`mapped`,[51,51]],[[12894,12894],`mapped`,[51,52]],[[12895,12895],`mapped`,[51,53]],[[12896,12896],`mapped`,[4352]],[[12897,12897],`mapped`,[4354]],[[12898,12898],`mapped`,[4355]],[[12899,12899],`mapped`,[4357]],[[12900,12900],`mapped`,[4358]],[[12901,12901],`mapped`,[4359]],[[12902,12902],`mapped`,[4361]],[[12903,12903],`mapped`,[4363]],[[12904,12904],`mapped`,[4364]],[[12905,12905],`mapped`,[4366]],[[12906,12906],`mapped`,[4367]],[[12907,12907],`mapped`,[4368]],[[12908,12908],`mapped`,[4369]],[[12909,12909],`mapped`,[4370]],[[12910,12910],`mapped`,[44032]],[[12911,12911],`mapped`,[45208]],[[12912,12912],`mapped`,[45796]],[[12913,12913],`mapped`,[46972]],[[12914,12914],`mapped`,[47560]],[[12915,12915],`mapped`,[48148]],[[12916,12916],`mapped`,[49324]],[[12917,12917],`mapped`,[50500]],[[12918,12918],`mapped`,[51088]],[[12919,12919],`mapped`,[52264]],[[12920,12920],`mapped`,[52852]],[[12921,12921],`mapped`,[53440]],[[12922,12922],`mapped`,[54028]],[[12923,12923],`mapped`,[54616]],[[12924,12924],`mapped`,[52280,44256]],[[12925,12925],`mapped`,[51452,51032]],[[12926,12926],`mapped`,[50864]],[[12927,12927],`valid`,[],`NV8`],[[12928,12928],`mapped`,[19968]],[[12929,12929],`mapped`,[20108]],[[12930,12930],`mapped`,[19977]],[[12931,12931],`mapped`,[22235]],[[12932,12932],`mapped`,[20116]],[[12933,12933],`mapped`,[20845]],[[12934,12934],`mapped`,[19971]],[[12935,12935],`mapped`,[20843]],[[12936,12936],`mapped`,[20061]],[[12937,12937],`mapped`,[21313]],[[12938,12938],`mapped`,[26376]],[[12939,12939],`mapped`,[28779]],[[12940,12940],`mapped`,[27700]],[[12941,12941],`mapped`,[26408]],[[12942,12942],`mapped`,[37329]],[[12943,12943],`mapped`,[22303]],[[12944,12944],`mapped`,[26085]],[[12945,12945],`mapped`,[26666]],[[12946,12946],`mapped`,[26377]],[[12947,12947],`mapped`,[31038]],[[12948,12948],`mapped`,[21517]],[[12949,12949],`mapped`,[29305]],[[12950,12950],`mapped`,[36001]],[[12951,12951],`mapped`,[31069]],[[12952,12952],`mapped`,[21172]],[[12953,12953],`mapped`,[31192]],[[12954,12954],`mapped`,[30007]],[[12955,12955],`mapped`,[22899]],[[12956,12956],`mapped`,[36969]],[[12957,12957],`mapped`,[20778]],[[12958,12958],`mapped`,[21360]],[[12959,12959],`mapped`,[27880]],[[12960,12960],`mapped`,[38917]],[[12961,12961],`mapped`,[20241]],[[12962,12962],`mapped`,[20889]],[[12963,12963],`mapped`,[27491]],[[12964,12964],`mapped`,[19978]],[[12965,12965],`mapped`,[20013]],[[12966,12966],`mapped`,[19979]],[[12967,12967],`mapped`,[24038]],[[12968,12968],`mapped`,[21491]],[[12969,12969],`mapped`,[21307]],[[12970,12970],`mapped`,[23447]],[[12971,12971],`mapped`,[23398]],[[12972,12972],`mapped`,[30435]],[[12973,12973],`mapped`,[20225]],[[12974,12974],`mapped`,[36039]],[[12975,12975],`mapped`,[21332]],[[12976,12976],`mapped`,[22812]],[[12977,12977],`mapped`,[51,54]],[[12978,12978],`mapped`,[51,55]],[[12979,12979],`mapped`,[51,56]],[[12980,12980],`mapped`,[51,57]],[[12981,12981],`mapped`,[52,48]],[[12982,12982],`mapped`,[52,49]],[[12983,12983],`mapped`,[52,50]],[[12984,12984],`mapped`,[52,51]],[[12985,12985],`mapped`,[52,52]],[[12986,12986],`mapped`,[52,53]],[[12987,12987],`mapped`,[52,54]],[[12988,12988],`mapped`,[52,55]],[[12989,12989],`mapped`,[52,56]],[[12990,12990],`mapped`,[52,57]],[[12991,12991],`mapped`,[53,48]],[[12992,12992],`mapped`,[49,26376]],[[12993,12993],`mapped`,[50,26376]],[[12994,12994],`mapped`,[51,26376]],[[12995,12995],`mapped`,[52,26376]],[[12996,12996],`mapped`,[53,26376]],[[12997,12997],`mapped`,[54,26376]],[[12998,12998],`mapped`,[55,26376]],[[12999,12999],`mapped`,[56,26376]],[[13e3,13e3],`mapped`,[57,26376]],[[13001,13001],`mapped`,[49,48,26376]],[[13002,13002],`mapped`,[49,49,26376]],[[13003,13003],`mapped`,[49,50,26376]],[[13004,13004],`mapped`,[104,103]],[[13005,13005],`mapped`,[101,114,103]],[[13006,13006],`mapped`,[101,118]],[[13007,13007],`mapped`,[108,116,100]],[[13008,13008],`mapped`,[12450]],[[13009,13009],`mapped`,[12452]],[[13010,13010],`mapped`,[12454]],[[13011,13011],`mapped`,[12456]],[[13012,13012],`mapped`,[12458]],[[13013,13013],`mapped`,[12459]],[[13014,13014],`mapped`,[12461]],[[13015,13015],`mapped`,[12463]],[[13016,13016],`mapped`,[12465]],[[13017,13017],`mapped`,[12467]],[[13018,13018],`mapped`,[12469]],[[13019,13019],`mapped`,[12471]],[[13020,13020],`mapped`,[12473]],[[13021,13021],`mapped`,[12475]],[[13022,13022],`mapped`,[12477]],[[13023,13023],`mapped`,[12479]],[[13024,13024],`mapped`,[12481]],[[13025,13025],`mapped`,[12484]],[[13026,13026],`mapped`,[12486]],[[13027,13027],`mapped`,[12488]],[[13028,13028],`mapped`,[12490]],[[13029,13029],`mapped`,[12491]],[[13030,13030],`mapped`,[12492]],[[13031,13031],`mapped`,[12493]],[[13032,13032],`mapped`,[12494]],[[13033,13033],`mapped`,[12495]],[[13034,13034],`mapped`,[12498]],[[13035,13035],`mapped`,[12501]],[[13036,13036],`mapped`,[12504]],[[13037,13037],`mapped`,[12507]],[[13038,13038],`mapped`,[12510]],[[13039,13039],`mapped`,[12511]],[[13040,13040],`mapped`,[12512]],[[13041,13041],`mapped`,[12513]],[[13042,13042],`mapped`,[12514]],[[13043,13043],`mapped`,[12516]],[[13044,13044],`mapped`,[12518]],[[13045,13045],`mapped`,[12520]],[[13046,13046],`mapped`,[12521]],[[13047,13047],`mapped`,[12522]],[[13048,13048],`mapped`,[12523]],[[13049,13049],`mapped`,[12524]],[[13050,13050],`mapped`,[12525]],[[13051,13051],`mapped`,[12527]],[[13052,13052],`mapped`,[12528]],[[13053,13053],`mapped`,[12529]],[[13054,13054],`mapped`,[12530]],[[13055,13055],`disallowed`],[[13056,13056],`mapped`,[12450,12497,12540,12488]],[[13057,13057],`mapped`,[12450,12523,12501,12449]],[[13058,13058],`mapped`,[12450,12531,12506,12450]],[[13059,13059],`mapped`,[12450,12540,12523]],[[13060,13060],`mapped`,[12452,12491,12531,12464]],[[13061,13061],`mapped`,[12452,12531,12481]],[[13062,13062],`mapped`,[12454,12457,12531]],[[13063,13063],`mapped`,[12456,12473,12463,12540,12489]],[[13064,13064],`mapped`,[12456,12540,12459,12540]],[[13065,13065],`mapped`,[12458,12531,12473]],[[13066,13066],`mapped`,[12458,12540,12512]],[[13067,13067],`mapped`,[12459,12452,12522]],[[13068,13068],`mapped`,[12459,12521,12483,12488]],[[13069,13069],`mapped`,[12459,12525,12522,12540]],[[13070,13070],`mapped`,[12460,12525,12531]],[[13071,13071],`mapped`,[12460,12531,12510]],[[13072,13072],`mapped`,[12462,12460]],[[13073,13073],`mapped`,[12462,12491,12540]],[[13074,13074],`mapped`,[12461,12517,12522,12540]],[[13075,13075],`mapped`,[12462,12523,12480,12540]],[[13076,13076],`mapped`,[12461,12525]],[[13077,13077],`mapped`,[12461,12525,12464,12521,12512]],[[13078,13078],`mapped`,[12461,12525,12513,12540,12488,12523]],[[13079,13079],`mapped`,[12461,12525,12527,12483,12488]],[[13080,13080],`mapped`,[12464,12521,12512]],[[13081,13081],`mapped`,[12464,12521,12512,12488,12531]],[[13082,13082],`mapped`,[12463,12523,12476,12452,12525]],[[13083,13083],`mapped`,[12463,12525,12540,12493]],[[13084,13084],`mapped`,[12465,12540,12473]],[[13085,13085],`mapped`,[12467,12523,12490]],[[13086,13086],`mapped`,[12467,12540,12509]],[[13087,13087],`mapped`,[12469,12452,12463,12523]],[[13088,13088],`mapped`,[12469,12531,12481,12540,12512]],[[13089,13089],`mapped`,[12471,12522,12531,12464]],[[13090,13090],`mapped`,[12475,12531,12481]],[[13091,13091],`mapped`,[12475,12531,12488]],[[13092,13092],`mapped`,[12480,12540,12473]],[[13093,13093],`mapped`,[12487,12471]],[[13094,13094],`mapped`,[12489,12523]],[[13095,13095],`mapped`,[12488,12531]],[[13096,13096],`mapped`,[12490,12494]],[[13097,13097],`mapped`,[12494,12483,12488]],[[13098,13098],`mapped`,[12495,12452,12484]],[[13099,13099],`mapped`,[12497,12540,12475,12531,12488]],[[13100,13100],`mapped`,[12497,12540,12484]],[[13101,13101],`mapped`,[12496,12540,12524,12523]],[[13102,13102],`mapped`,[12500,12450,12473,12488,12523]],[[13103,13103],`mapped`,[12500,12463,12523]],[[13104,13104],`mapped`,[12500,12467]],[[13105,13105],`mapped`,[12499,12523]],[[13106,13106],`mapped`,[12501,12449,12521,12483,12489]],[[13107,13107],`mapped`,[12501,12451,12540,12488]],[[13108,13108],`mapped`,[12502,12483,12471,12455,12523]],[[13109,13109],`mapped`,[12501,12521,12531]],[[13110,13110],`mapped`,[12504,12463,12479,12540,12523]],[[13111,13111],`mapped`,[12506,12477]],[[13112,13112],`mapped`,[12506,12491,12498]],[[13113,13113],`mapped`,[12504,12523,12484]],[[13114,13114],`mapped`,[12506,12531,12473]],[[13115,13115],`mapped`,[12506,12540,12472]],[[13116,13116],`mapped`,[12505,12540,12479]],[[13117,13117],`mapped`,[12509,12452,12531,12488]],[[13118,13118],`mapped`,[12508,12523,12488]],[[13119,13119],`mapped`,[12507,12531]],[[13120,13120],`mapped`,[12509,12531,12489]],[[13121,13121],`mapped`,[12507,12540,12523]],[[13122,13122],`mapped`,[12507,12540,12531]],[[13123,13123],`mapped`,[12510,12452,12463,12525]],[[13124,13124],`mapped`,[12510,12452,12523]],[[13125,13125],`mapped`,[12510,12483,12495]],[[13126,13126],`mapped`,[12510,12523,12463]],[[13127,13127],`mapped`,[12510,12531,12471,12519,12531]],[[13128,13128],`mapped`,[12511,12463,12525,12531]],[[13129,13129],`mapped`,[12511,12522]],[[13130,13130],`mapped`,[12511,12522,12496,12540,12523]],[[13131,13131],`mapped`,[12513,12460]],[[13132,13132],`mapped`,[12513,12460,12488,12531]],[[13133,13133],`mapped`,[12513,12540,12488,12523]],[[13134,13134],`mapped`,[12516,12540,12489]],[[13135,13135],`mapped`,[12516,12540,12523]],[[13136,13136],`mapped`,[12518,12450,12531]],[[13137,13137],`mapped`,[12522,12483,12488,12523]],[[13138,13138],`mapped`,[12522,12521]],[[13139,13139],`mapped`,[12523,12500,12540]],[[13140,13140],`mapped`,[12523,12540,12502,12523]],[[13141,13141],`mapped`,[12524,12512]],[[13142,13142],`mapped`,[12524,12531,12488,12466,12531]],[[13143,13143],`mapped`,[12527,12483,12488]],[[13144,13144],`mapped`,[48,28857]],[[13145,13145],`mapped`,[49,28857]],[[13146,13146],`mapped`,[50,28857]],[[13147,13147],`mapped`,[51,28857]],[[13148,13148],`mapped`,[52,28857]],[[13149,13149],`mapped`,[53,28857]],[[13150,13150],`mapped`,[54,28857]],[[13151,13151],`mapped`,[55,28857]],[[13152,13152],`mapped`,[56,28857]],[[13153,13153],`mapped`,[57,28857]],[[13154,13154],`mapped`,[49,48,28857]],[[13155,13155],`mapped`,[49,49,28857]],[[13156,13156],`mapped`,[49,50,28857]],[[13157,13157],`mapped`,[49,51,28857]],[[13158,13158],`mapped`,[49,52,28857]],[[13159,13159],`mapped`,[49,53,28857]],[[13160,13160],`mapped`,[49,54,28857]],[[13161,13161],`mapped`,[49,55,28857]],[[13162,13162],`mapped`,[49,56,28857]],[[13163,13163],`mapped`,[49,57,28857]],[[13164,13164],`mapped`,[50,48,28857]],[[13165,13165],`mapped`,[50,49,28857]],[[13166,13166],`mapped`,[50,50,28857]],[[13167,13167],`mapped`,[50,51,28857]],[[13168,13168],`mapped`,[50,52,28857]],[[13169,13169],`mapped`,[104,112,97]],[[13170,13170],`mapped`,[100,97]],[[13171,13171],`mapped`,[97,117]],[[13172,13172],`mapped`,[98,97,114]],[[13173,13173],`mapped`,[111,118]],[[13174,13174],`mapped`,[112,99]],[[13175,13175],`mapped`,[100,109]],[[13176,13176],`mapped`,[100,109,50]],[[13177,13177],`mapped`,[100,109,51]],[[13178,13178],`mapped`,[105,117]],[[13179,13179],`mapped`,[24179,25104]],[[13180,13180],`mapped`,[26157,21644]],[[13181,13181],`mapped`,[22823,27491]],[[13182,13182],`mapped`,[26126,27835]],[[13183,13183],`mapped`,[26666,24335,20250,31038]],[[13184,13184],`mapped`,[112,97]],[[13185,13185],`mapped`,[110,97]],[[13186,13186],`mapped`,[956,97]],[[13187,13187],`mapped`,[109,97]],[[13188,13188],`mapped`,[107,97]],[[13189,13189],`mapped`,[107,98]],[[13190,13190],`mapped`,[109,98]],[[13191,13191],`mapped`,[103,98]],[[13192,13192],`mapped`,[99,97,108]],[[13193,13193],`mapped`,[107,99,97,108]],[[13194,13194],`mapped`,[112,102]],[[13195,13195],`mapped`,[110,102]],[[13196,13196],`mapped`,[956,102]],[[13197,13197],`mapped`,[956,103]],[[13198,13198],`mapped`,[109,103]],[[13199,13199],`mapped`,[107,103]],[[13200,13200],`mapped`,[104,122]],[[13201,13201],`mapped`,[107,104,122]],[[13202,13202],`mapped`,[109,104,122]],[[13203,13203],`mapped`,[103,104,122]],[[13204,13204],`mapped`,[116,104,122]],[[13205,13205],`mapped`,[956,108]],[[13206,13206],`mapped`,[109,108]],[[13207,13207],`mapped`,[100,108]],[[13208,13208],`mapped`,[107,108]],[[13209,13209],`mapped`,[102,109]],[[13210,13210],`mapped`,[110,109]],[[13211,13211],`mapped`,[956,109]],[[13212,13212],`mapped`,[109,109]],[[13213,13213],`mapped`,[99,109]],[[13214,13214],`mapped`,[107,109]],[[13215,13215],`mapped`,[109,109,50]],[[13216,13216],`mapped`,[99,109,50]],[[13217,13217],`mapped`,[109,50]],[[13218,13218],`mapped`,[107,109,50]],[[13219,13219],`mapped`,[109,109,51]],[[13220,13220],`mapped`,[99,109,51]],[[13221,13221],`mapped`,[109,51]],[[13222,13222],`mapped`,[107,109,51]],[[13223,13223],`mapped`,[109,8725,115]],[[13224,13224],`mapped`,[109,8725,115,50]],[[13225,13225],`mapped`,[112,97]],[[13226,13226],`mapped`,[107,112,97]],[[13227,13227],`mapped`,[109,112,97]],[[13228,13228],`mapped`,[103,112,97]],[[13229,13229],`mapped`,[114,97,100]],[[13230,13230],`mapped`,[114,97,100,8725,115]],[[13231,13231],`mapped`,[114,97,100,8725,115,50]],[[13232,13232],`mapped`,[112,115]],[[13233,13233],`mapped`,[110,115]],[[13234,13234],`mapped`,[956,115]],[[13235,13235],`mapped`,[109,115]],[[13236,13236],`mapped`,[112,118]],[[13237,13237],`mapped`,[110,118]],[[13238,13238],`mapped`,[956,118]],[[13239,13239],`mapped`,[109,118]],[[13240,13240],`mapped`,[107,118]],[[13241,13241],`mapped`,[109,118]],[[13242,13242],`mapped`,[112,119]],[[13243,13243],`mapped`,[110,119]],[[13244,13244],`mapped`,[956,119]],[[13245,13245],`mapped`,[109,119]],[[13246,13246],`mapped`,[107,119]],[[13247,13247],`mapped`,[109,119]],[[13248,13248],`mapped`,[107,969]],[[13249,13249],`mapped`,[109,969]],[[13250,13250],`disallowed`],[[13251,13251],`mapped`,[98,113]],[[13252,13252],`mapped`,[99,99]],[[13253,13253],`mapped`,[99,100]],[[13254,13254],`mapped`,[99,8725,107,103]],[[13255,13255],`disallowed`],[[13256,13256],`mapped`,[100,98]],[[13257,13257],`mapped`,[103,121]],[[13258,13258],`mapped`,[104,97]],[[13259,13259],`mapped`,[104,112]],[[13260,13260],`mapped`,[105,110]],[[13261,13261],`mapped`,[107,107]],[[13262,13262],`mapped`,[107,109]],[[13263,13263],`mapped`,[107,116]],[[13264,13264],`mapped`,[108,109]],[[13265,13265],`mapped`,[108,110]],[[13266,13266],`mapped`,[108,111,103]],[[13267,13267],`mapped`,[108,120]],[[13268,13268],`mapped`,[109,98]],[[13269,13269],`mapped`,[109,105,108]],[[13270,13270],`mapped`,[109,111,108]],[[13271,13271],`mapped`,[112,104]],[[13272,13272],`disallowed`],[[13273,13273],`mapped`,[112,112,109]],[[13274,13274],`mapped`,[112,114]],[[13275,13275],`mapped`,[115,114]],[[13276,13276],`mapped`,[115,118]],[[13277,13277],`mapped`,[119,98]],[[13278,13278],`mapped`,[118,8725,109]],[[13279,13279],`mapped`,[97,8725,109]],[[13280,13280],`mapped`,[49,26085]],[[13281,13281],`mapped`,[50,26085]],[[13282,13282],`mapped`,[51,26085]],[[13283,13283],`mapped`,[52,26085]],[[13284,13284],`mapped`,[53,26085]],[[13285,13285],`mapped`,[54,26085]],[[13286,13286],`mapped`,[55,26085]],[[13287,13287],`mapped`,[56,26085]],[[13288,13288],`mapped`,[57,26085]],[[13289,13289],`mapped`,[49,48,26085]],[[13290,13290],`mapped`,[49,49,26085]],[[13291,13291],`mapped`,[49,50,26085]],[[13292,13292],`mapped`,[49,51,26085]],[[13293,13293],`mapped`,[49,52,26085]],[[13294,13294],`mapped`,[49,53,26085]],[[13295,13295],`mapped`,[49,54,26085]],[[13296,13296],`mapped`,[49,55,26085]],[[13297,13297],`mapped`,[49,56,26085]],[[13298,13298],`mapped`,[49,57,26085]],[[13299,13299],`mapped`,[50,48,26085]],[[13300,13300],`mapped`,[50,49,26085]],[[13301,13301],`mapped`,[50,50,26085]],[[13302,13302],`mapped`,[50,51,26085]],[[13303,13303],`mapped`,[50,52,26085]],[[13304,13304],`mapped`,[50,53,26085]],[[13305,13305],`mapped`,[50,54,26085]],[[13306,13306],`mapped`,[50,55,26085]],[[13307,13307],`mapped`,[50,56,26085]],[[13308,13308],`mapped`,[50,57,26085]],[[13309,13309],`mapped`,[51,48,26085]],[[13310,13310],`mapped`,[51,49,26085]],[[13311,13311],`mapped`,[103,97,108]],[[13312,19893],`valid`],[[19894,19903],`disallowed`],[[19904,19967],`valid`,[],`NV8`],[[19968,40869],`valid`],[[40870,40891],`valid`],[[40892,40899],`valid`],[[40900,40907],`valid`],[[40908,40908],`valid`],[[40909,40917],`valid`],[[40918,40959],`disallowed`],[[40960,42124],`valid`],[[42125,42127],`disallowed`],[[42128,42145],`valid`,[],`NV8`],[[42146,42147],`valid`,[],`NV8`],[[42148,42163],`valid`,[],`NV8`],[[42164,42164],`valid`,[],`NV8`],[[42165,42176],`valid`,[],`NV8`],[[42177,42177],`valid`,[],`NV8`],[[42178,42180],`valid`,[],`NV8`],[[42181,42181],`valid`,[],`NV8`],[[42182,42182],`valid`,[],`NV8`],[[42183,42191],`disallowed`],[[42192,42237],`valid`],[[42238,42239],`valid`,[],`NV8`],[[42240,42508],`valid`],[[42509,42511],`valid`,[],`NV8`],[[42512,42539],`valid`],[[42540,42559],`disallowed`],[[42560,42560],`mapped`,[42561]],[[42561,42561],`valid`],[[42562,42562],`mapped`,[42563]],[[42563,42563],`valid`],[[42564,42564],`mapped`,[42565]],[[42565,42565],`valid`],[[42566,42566],`mapped`,[42567]],[[42567,42567],`valid`],[[42568,42568],`mapped`,[42569]],[[42569,42569],`valid`],[[42570,42570],`mapped`,[42571]],[[42571,42571],`valid`],[[42572,42572],`mapped`,[42573]],[[42573,42573],`valid`],[[42574,42574],`mapped`,[42575]],[[42575,42575],`valid`],[[42576,42576],`mapped`,[42577]],[[42577,42577],`valid`],[[42578,42578],`mapped`,[42579]],[[42579,42579],`valid`],[[42580,42580],`mapped`,[42581]],[[42581,42581],`valid`],[[42582,42582],`mapped`,[42583]],[[42583,42583],`valid`],[[42584,42584],`mapped`,[42585]],[[42585,42585],`valid`],[[42586,42586],`mapped`,[42587]],[[42587,42587],`valid`],[[42588,42588],`mapped`,[42589]],[[42589,42589],`valid`],[[42590,42590],`mapped`,[42591]],[[42591,42591],`valid`],[[42592,42592],`mapped`,[42593]],[[42593,42593],`valid`],[[42594,42594],`mapped`,[42595]],[[42595,42595],`valid`],[[42596,42596],`mapped`,[42597]],[[42597,42597],`valid`],[[42598,42598],`mapped`,[42599]],[[42599,42599],`valid`],[[42600,42600],`mapped`,[42601]],[[42601,42601],`valid`],[[42602,42602],`mapped`,[42603]],[[42603,42603],`valid`],[[42604,42604],`mapped`,[42605]],[[42605,42607],`valid`],[[42608,42611],`valid`,[],`NV8`],[[42612,42619],`valid`],[[42620,42621],`valid`],[[42622,42622],`valid`,[],`NV8`],[[42623,42623],`valid`],[[42624,42624],`mapped`,[42625]],[[42625,42625],`valid`],[[42626,42626],`mapped`,[42627]],[[42627,42627],`valid`],[[42628,42628],`mapped`,[42629]],[[42629,42629],`valid`],[[42630,42630],`mapped`,[42631]],[[42631,42631],`valid`],[[42632,42632],`mapped`,[42633]],[[42633,42633],`valid`],[[42634,42634],`mapped`,[42635]],[[42635,42635],`valid`],[[42636,42636],`mapped`,[42637]],[[42637,42637],`valid`],[[42638,42638],`mapped`,[42639]],[[42639,42639],`valid`],[[42640,42640],`mapped`,[42641]],[[42641,42641],`valid`],[[42642,42642],`mapped`,[42643]],[[42643,42643],`valid`],[[42644,42644],`mapped`,[42645]],[[42645,42645],`valid`],[[42646,42646],`mapped`,[42647]],[[42647,42647],`valid`],[[42648,42648],`mapped`,[42649]],[[42649,42649],`valid`],[[42650,42650],`mapped`,[42651]],[[42651,42651],`valid`],[[42652,42652],`mapped`,[1098]],[[42653,42653],`mapped`,[1100]],[[42654,42654],`valid`],[[42655,42655],`valid`],[[42656,42725],`valid`],[[42726,42735],`valid`,[],`NV8`],[[42736,42737],`valid`],[[42738,42743],`valid`,[],`NV8`],[[42744,42751],`disallowed`],[[42752,42774],`valid`,[],`NV8`],[[42775,42778],`valid`],[[42779,42783],`valid`],[[42784,42785],`valid`,[],`NV8`],[[42786,42786],`mapped`,[42787]],[[42787,42787],`valid`],[[42788,42788],`mapped`,[42789]],[[42789,42789],`valid`],[[42790,42790],`mapped`,[42791]],[[42791,42791],`valid`],[[42792,42792],`mapped`,[42793]],[[42793,42793],`valid`],[[42794,42794],`mapped`,[42795]],[[42795,42795],`valid`],[[42796,42796],`mapped`,[42797]],[[42797,42797],`valid`],[[42798,42798],`mapped`,[42799]],[[42799,42801],`valid`],[[42802,42802],`mapped`,[42803]],[[42803,42803],`valid`],[[42804,42804],`mapped`,[42805]],[[42805,42805],`valid`],[[42806,42806],`mapped`,[42807]],[[42807,42807],`valid`],[[42808,42808],`mapped`,[42809]],[[42809,42809],`valid`],[[42810,42810],`mapped`,[42811]],[[42811,42811],`valid`],[[42812,42812],`mapped`,[42813]],[[42813,42813],`valid`],[[42814,42814],`mapped`,[42815]],[[42815,42815],`valid`],[[42816,42816],`mapped`,[42817]],[[42817,42817],`valid`],[[42818,42818],`mapped`,[42819]],[[42819,42819],`valid`],[[42820,42820],`mapped`,[42821]],[[42821,42821],`valid`],[[42822,42822],`mapped`,[42823]],[[42823,42823],`valid`],[[42824,42824],`mapped`,[42825]],[[42825,42825],`valid`],[[42826,42826],`mapped`,[42827]],[[42827,42827],`valid`],[[42828,42828],`mapped`,[42829]],[[42829,42829],`valid`],[[42830,42830],`mapped`,[42831]],[[42831,42831],`valid`],[[42832,42832],`mapped`,[42833]],[[42833,42833],`valid`],[[42834,42834],`mapped`,[42835]],[[42835,42835],`valid`],[[42836,42836],`mapped`,[42837]],[[42837,42837],`valid`],[[42838,42838],`mapped`,[42839]],[[42839,42839],`valid`],[[42840,42840],`mapped`,[42841]],[[42841,42841],`valid`],[[42842,42842],`mapped`,[42843]],[[42843,42843],`valid`],[[42844,42844],`mapped`,[42845]],[[42845,42845],`valid`],[[42846,42846],`mapped`,[42847]],[[42847,42847],`valid`],[[42848,42848],`mapped`,[42849]],[[42849,42849],`valid`],[[42850,42850],`mapped`,[42851]],[[42851,42851],`valid`],[[42852,42852],`mapped`,[42853]],[[42853,42853],`valid`],[[42854,42854],`mapped`,[42855]],[[42855,42855],`valid`],[[42856,42856],`mapped`,[42857]],[[42857,42857],`valid`],[[42858,42858],`mapped`,[42859]],[[42859,42859],`valid`],[[42860,42860],`mapped`,[42861]],[[42861,42861],`valid`],[[42862,42862],`mapped`,[42863]],[[42863,42863],`valid`],[[42864,42864],`mapped`,[42863]],[[42865,42872],`valid`],[[42873,42873],`mapped`,[42874]],[[42874,42874],`valid`],[[42875,42875],`mapped`,[42876]],[[42876,42876],`valid`],[[42877,42877],`mapped`,[7545]],[[42878,42878],`mapped`,[42879]],[[42879,42879],`valid`],[[42880,42880],`mapped`,[42881]],[[42881,42881],`valid`],[[42882,42882],`mapped`,[42883]],[[42883,42883],`valid`],[[42884,42884],`mapped`,[42885]],[[42885,42885],`valid`],[[42886,42886],`mapped`,[42887]],[[42887,42888],`valid`],[[42889,42890],`valid`,[],`NV8`],[[42891,42891],`mapped`,[42892]],[[42892,42892],`valid`],[[42893,42893],`mapped`,[613]],[[42894,42894],`valid`],[[42895,42895],`valid`],[[42896,42896],`mapped`,[42897]],[[42897,42897],`valid`],[[42898,42898],`mapped`,[42899]],[[42899,42899],`valid`],[[42900,42901],`valid`],[[42902,42902],`mapped`,[42903]],[[42903,42903],`valid`],[[42904,42904],`mapped`,[42905]],[[42905,42905],`valid`],[[42906,42906],`mapped`,[42907]],[[42907,42907],`valid`],[[42908,42908],`mapped`,[42909]],[[42909,42909],`valid`],[[42910,42910],`mapped`,[42911]],[[42911,42911],`valid`],[[42912,42912],`mapped`,[42913]],[[42913,42913],`valid`],[[42914,42914],`mapped`,[42915]],[[42915,42915],`valid`],[[42916,42916],`mapped`,[42917]],[[42917,42917],`valid`],[[42918,42918],`mapped`,[42919]],[[42919,42919],`valid`],[[42920,42920],`mapped`,[42921]],[[42921,42921],`valid`],[[42922,42922],`mapped`,[614]],[[42923,42923],`mapped`,[604]],[[42924,42924],`mapped`,[609]],[[42925,42925],`mapped`,[620]],[[42926,42927],`disallowed`],[[42928,42928],`mapped`,[670]],[[42929,42929],`mapped`,[647]],[[42930,42930],`mapped`,[669]],[[42931,42931],`mapped`,[43859]],[[42932,42932],`mapped`,[42933]],[[42933,42933],`valid`],[[42934,42934],`mapped`,[42935]],[[42935,42935],`valid`],[[42936,42998],`disallowed`],[[42999,42999],`valid`],[[43e3,43e3],`mapped`,[295]],[[43001,43001],`mapped`,[339]],[[43002,43002],`valid`],[[43003,43007],`valid`],[[43008,43047],`valid`],[[43048,43051],`valid`,[],`NV8`],[[43052,43055],`disallowed`],[[43056,43065],`valid`,[],`NV8`],[[43066,43071],`disallowed`],[[43072,43123],`valid`],[[43124,43127],`valid`,[],`NV8`],[[43128,43135],`disallowed`],[[43136,43204],`valid`],[[43205,43213],`disallowed`],[[43214,43215],`valid`,[],`NV8`],[[43216,43225],`valid`],[[43226,43231],`disallowed`],[[43232,43255],`valid`],[[43256,43258],`valid`,[],`NV8`],[[43259,43259],`valid`],[[43260,43260],`valid`,[],`NV8`],[[43261,43261],`valid`],[[43262,43263],`disallowed`],[[43264,43309],`valid`],[[43310,43311],`valid`,[],`NV8`],[[43312,43347],`valid`],[[43348,43358],`disallowed`],[[43359,43359],`valid`,[],`NV8`],[[43360,43388],`valid`,[],`NV8`],[[43389,43391],`disallowed`],[[43392,43456],`valid`],[[43457,43469],`valid`,[],`NV8`],[[43470,43470],`disallowed`],[[43471,43481],`valid`],[[43482,43485],`disallowed`],[[43486,43487],`valid`,[],`NV8`],[[43488,43518],`valid`],[[43519,43519],`disallowed`],[[43520,43574],`valid`],[[43575,43583],`disallowed`],[[43584,43597],`valid`],[[43598,43599],`disallowed`],[[43600,43609],`valid`],[[43610,43611],`disallowed`],[[43612,43615],`valid`,[],`NV8`],[[43616,43638],`valid`],[[43639,43641],`valid`,[],`NV8`],[[43642,43643],`valid`],[[43644,43647],`valid`],[[43648,43714],`valid`],[[43715,43738],`disallowed`],[[43739,43741],`valid`],[[43742,43743],`valid`,[],`NV8`],[[43744,43759],`valid`],[[43760,43761],`valid`,[],`NV8`],[[43762,43766],`valid`],[[43767,43776],`disallowed`],[[43777,43782],`valid`],[[43783,43784],`disallowed`],[[43785,43790],`valid`],[[43791,43792],`disallowed`],[[43793,43798],`valid`],[[43799,43807],`disallowed`],[[43808,43814],`valid`],[[43815,43815],`disallowed`],[[43816,43822],`valid`],[[43823,43823],`disallowed`],[[43824,43866],`valid`],[[43867,43867],`valid`,[],`NV8`],[[43868,43868],`mapped`,[42791]],[[43869,43869],`mapped`,[43831]],[[43870,43870],`mapped`,[619]],[[43871,43871],`mapped`,[43858]],[[43872,43875],`valid`],[[43876,43877],`valid`],[[43878,43887],`disallowed`],[[43888,43888],`mapped`,[5024]],[[43889,43889],`mapped`,[5025]],[[43890,43890],`mapped`,[5026]],[[43891,43891],`mapped`,[5027]],[[43892,43892],`mapped`,[5028]],[[43893,43893],`mapped`,[5029]],[[43894,43894],`mapped`,[5030]],[[43895,43895],`mapped`,[5031]],[[43896,43896],`mapped`,[5032]],[[43897,43897],`mapped`,[5033]],[[43898,43898],`mapped`,[5034]],[[43899,43899],`mapped`,[5035]],[[43900,43900],`mapped`,[5036]],[[43901,43901],`mapped`,[5037]],[[43902,43902],`mapped`,[5038]],[[43903,43903],`mapped`,[5039]],[[43904,43904],`mapped`,[5040]],[[43905,43905],`mapped`,[5041]],[[43906,43906],`mapped`,[5042]],[[43907,43907],`mapped`,[5043]],[[43908,43908],`mapped`,[5044]],[[43909,43909],`mapped`,[5045]],[[43910,43910],`mapped`,[5046]],[[43911,43911],`mapped`,[5047]],[[43912,43912],`mapped`,[5048]],[[43913,43913],`mapped`,[5049]],[[43914,43914],`mapped`,[5050]],[[43915,43915],`mapped`,[5051]],[[43916,43916],`mapped`,[5052]],[[43917,43917],`mapped`,[5053]],[[43918,43918],`mapped`,[5054]],[[43919,43919],`mapped`,[5055]],[[43920,43920],`mapped`,[5056]],[[43921,43921],`mapped`,[5057]],[[43922,43922],`mapped`,[5058]],[[43923,43923],`mapped`,[5059]],[[43924,43924],`mapped`,[5060]],[[43925,43925],`mapped`,[5061]],[[43926,43926],`mapped`,[5062]],[[43927,43927],`mapped`,[5063]],[[43928,43928],`mapped`,[5064]],[[43929,43929],`mapped`,[5065]],[[43930,43930],`mapped`,[5066]],[[43931,43931],`mapped`,[5067]],[[43932,43932],`mapped`,[5068]],[[43933,43933],`mapped`,[5069]],[[43934,43934],`mapped`,[5070]],[[43935,43935],`mapped`,[5071]],[[43936,43936],`mapped`,[5072]],[[43937,43937],`mapped`,[5073]],[[43938,43938],`mapped`,[5074]],[[43939,43939],`mapped`,[5075]],[[43940,43940],`mapped`,[5076]],[[43941,43941],`mapped`,[5077]],[[43942,43942],`mapped`,[5078]],[[43943,43943],`mapped`,[5079]],[[43944,43944],`mapped`,[5080]],[[43945,43945],`mapped`,[5081]],[[43946,43946],`mapped`,[5082]],[[43947,43947],`mapped`,[5083]],[[43948,43948],`mapped`,[5084]],[[43949,43949],`mapped`,[5085]],[[43950,43950],`mapped`,[5086]],[[43951,43951],`mapped`,[5087]],[[43952,43952],`mapped`,[5088]],[[43953,43953],`mapped`,[5089]],[[43954,43954],`mapped`,[5090]],[[43955,43955],`mapped`,[5091]],[[43956,43956],`mapped`,[5092]],[[43957,43957],`mapped`,[5093]],[[43958,43958],`mapped`,[5094]],[[43959,43959],`mapped`,[5095]],[[43960,43960],`mapped`,[5096]],[[43961,43961],`mapped`,[5097]],[[43962,43962],`mapped`,[5098]],[[43963,43963],`mapped`,[5099]],[[43964,43964],`mapped`,[5100]],[[43965,43965],`mapped`,[5101]],[[43966,43966],`mapped`,[5102]],[[43967,43967],`mapped`,[5103]],[[43968,44010],`valid`],[[44011,44011],`valid`,[],`NV8`],[[44012,44013],`valid`],[[44014,44015],`disallowed`],[[44016,44025],`valid`],[[44026,44031],`disallowed`],[[44032,55203],`valid`],[[55204,55215],`disallowed`],[[55216,55238],`valid`,[],`NV8`],[[55239,55242],`disallowed`],[[55243,55291],`valid`,[],`NV8`],[[55292,55295],`disallowed`],[[55296,57343],`disallowed`],[[57344,63743],`disallowed`],[[63744,63744],`mapped`,[35912]],[[63745,63745],`mapped`,[26356]],[[63746,63746],`mapped`,[36554]],[[63747,63747],`mapped`,[36040]],[[63748,63748],`mapped`,[28369]],[[63749,63749],`mapped`,[20018]],[[63750,63750],`mapped`,[21477]],[[63751,63752],`mapped`,[40860]],[[63753,63753],`mapped`,[22865]],[[63754,63754],`mapped`,[37329]],[[63755,63755],`mapped`,[21895]],[[63756,63756],`mapped`,[22856]],[[63757,63757],`mapped`,[25078]],[[63758,63758],`mapped`,[30313]],[[63759,63759],`mapped`,[32645]],[[63760,63760],`mapped`,[34367]],[[63761,63761],`mapped`,[34746]],[[63762,63762],`mapped`,[35064]],[[63763,63763],`mapped`,[37007]],[[63764,63764],`mapped`,[27138]],[[63765,63765],`mapped`,[27931]],[[63766,63766],`mapped`,[28889]],[[63767,63767],`mapped`,[29662]],[[63768,63768],`mapped`,[33853]],[[63769,63769],`mapped`,[37226]],[[63770,63770],`mapped`,[39409]],[[63771,63771],`mapped`,[20098]],[[63772,63772],`mapped`,[21365]],[[63773,63773],`mapped`,[27396]],[[63774,63774],`mapped`,[29211]],[[63775,63775],`mapped`,[34349]],[[63776,63776],`mapped`,[40478]],[[63777,63777],`mapped`,[23888]],[[63778,63778],`mapped`,[28651]],[[63779,63779],`mapped`,[34253]],[[63780,63780],`mapped`,[35172]],[[63781,63781],`mapped`,[25289]],[[63782,63782],`mapped`,[33240]],[[63783,63783],`mapped`,[34847]],[[63784,63784],`mapped`,[24266]],[[63785,63785],`mapped`,[26391]],[[63786,63786],`mapped`,[28010]],[[63787,63787],`mapped`,[29436]],[[63788,63788],`mapped`,[37070]],[[63789,63789],`mapped`,[20358]],[[63790,63790],`mapped`,[20919]],[[63791,63791],`mapped`,[21214]],[[63792,63792],`mapped`,[25796]],[[63793,63793],`mapped`,[27347]],[[63794,63794],`mapped`,[29200]],[[63795,63795],`mapped`,[30439]],[[63796,63796],`mapped`,[32769]],[[63797,63797],`mapped`,[34310]],[[63798,63798],`mapped`,[34396]],[[63799,63799],`mapped`,[36335]],[[63800,63800],`mapped`,[38706]],[[63801,63801],`mapped`,[39791]],[[63802,63802],`mapped`,[40442]],[[63803,63803],`mapped`,[30860]],[[63804,63804],`mapped`,[31103]],[[63805,63805],`mapped`,[32160]],[[63806,63806],`mapped`,[33737]],[[63807,63807],`mapped`,[37636]],[[63808,63808],`mapped`,[40575]],[[63809,63809],`mapped`,[35542]],[[63810,63810],`mapped`,[22751]],[[63811,63811],`mapped`,[24324]],[[63812,63812],`mapped`,[31840]],[[63813,63813],`mapped`,[32894]],[[63814,63814],`mapped`,[29282]],[[63815,63815],`mapped`,[30922]],[[63816,63816],`mapped`,[36034]],[[63817,63817],`mapped`,[38647]],[[63818,63818],`mapped`,[22744]],[[63819,63819],`mapped`,[23650]],[[63820,63820],`mapped`,[27155]],[[63821,63821],`mapped`,[28122]],[[63822,63822],`mapped`,[28431]],[[63823,63823],`mapped`,[32047]],[[63824,63824],`mapped`,[32311]],[[63825,63825],`mapped`,[38475]],[[63826,63826],`mapped`,[21202]],[[63827,63827],`mapped`,[32907]],[[63828,63828],`mapped`,[20956]],[[63829,63829],`mapped`,[20940]],[[63830,63830],`mapped`,[31260]],[[63831,63831],`mapped`,[32190]],[[63832,63832],`mapped`,[33777]],[[63833,63833],`mapped`,[38517]],[[63834,63834],`mapped`,[35712]],[[63835,63835],`mapped`,[25295]],[[63836,63836],`mapped`,[27138]],[[63837,63837],`mapped`,[35582]],[[63838,63838],`mapped`,[20025]],[[63839,63839],`mapped`,[23527]],[[63840,63840],`mapped`,[24594]],[[63841,63841],`mapped`,[29575]],[[63842,63842],`mapped`,[30064]],[[63843,63843],`mapped`,[21271]],[[63844,63844],`mapped`,[30971]],[[63845,63845],`mapped`,[20415]],[[63846,63846],`mapped`,[24489]],[[63847,63847],`mapped`,[19981]],[[63848,63848],`mapped`,[27852]],[[63849,63849],`mapped`,[25976]],[[63850,63850],`mapped`,[32034]],[[63851,63851],`mapped`,[21443]],[[63852,63852],`mapped`,[22622]],[[63853,63853],`mapped`,[30465]],[[63854,63854],`mapped`,[33865]],[[63855,63855],`mapped`,[35498]],[[63856,63856],`mapped`,[27578]],[[63857,63857],`mapped`,[36784]],[[63858,63858],`mapped`,[27784]],[[63859,63859],`mapped`,[25342]],[[63860,63860],`mapped`,[33509]],[[63861,63861],`mapped`,[25504]],[[63862,63862],`mapped`,[30053]],[[63863,63863],`mapped`,[20142]],[[63864,63864],`mapped`,[20841]],[[63865,63865],`mapped`,[20937]],[[63866,63866],`mapped`,[26753]],[[63867,63867],`mapped`,[31975]],[[63868,63868],`mapped`,[33391]],[[63869,63869],`mapped`,[35538]],[[63870,63870],`mapped`,[37327]],[[63871,63871],`mapped`,[21237]],[[63872,63872],`mapped`,[21570]],[[63873,63873],`mapped`,[22899]],[[63874,63874],`mapped`,[24300]],[[63875,63875],`mapped`,[26053]],[[63876,63876],`mapped`,[28670]],[[63877,63877],`mapped`,[31018]],[[63878,63878],`mapped`,[38317]],[[63879,63879],`mapped`,[39530]],[[63880,63880],`mapped`,[40599]],[[63881,63881],`mapped`,[40654]],[[63882,63882],`mapped`,[21147]],[[63883,63883],`mapped`,[26310]],[[63884,63884],`mapped`,[27511]],[[63885,63885],`mapped`,[36706]],[[63886,63886],`mapped`,[24180]],[[63887,63887],`mapped`,[24976]],[[63888,63888],`mapped`,[25088]],[[63889,63889],`mapped`,[25754]],[[63890,63890],`mapped`,[28451]],[[63891,63891],`mapped`,[29001]],[[63892,63892],`mapped`,[29833]],[[63893,63893],`mapped`,[31178]],[[63894,63894],`mapped`,[32244]],[[63895,63895],`mapped`,[32879]],[[63896,63896],`mapped`,[36646]],[[63897,63897],`mapped`,[34030]],[[63898,63898],`mapped`,[36899]],[[63899,63899],`mapped`,[37706]],[[63900,63900],`mapped`,[21015]],[[63901,63901],`mapped`,[21155]],[[63902,63902],`mapped`,[21693]],[[63903,63903],`mapped`,[28872]],[[63904,63904],`mapped`,[35010]],[[63905,63905],`mapped`,[35498]],[[63906,63906],`mapped`,[24265]],[[63907,63907],`mapped`,[24565]],[[63908,63908],`mapped`,[25467]],[[63909,63909],`mapped`,[27566]],[[63910,63910],`mapped`,[31806]],[[63911,63911],`mapped`,[29557]],[[63912,63912],`mapped`,[20196]],[[63913,63913],`mapped`,[22265]],[[63914,63914],`mapped`,[23527]],[[63915,63915],`mapped`,[23994]],[[63916,63916],`mapped`,[24604]],[[63917,63917],`mapped`,[29618]],[[63918,63918],`mapped`,[29801]],[[63919,63919],`mapped`,[32666]],[[63920,63920],`mapped`,[32838]],[[63921,63921],`mapped`,[37428]],[[63922,63922],`mapped`,[38646]],[[63923,63923],`mapped`,[38728]],[[63924,63924],`mapped`,[38936]],[[63925,63925],`mapped`,[20363]],[[63926,63926],`mapped`,[31150]],[[63927,63927],`mapped`,[37300]],[[63928,63928],`mapped`,[38584]],[[63929,63929],`mapped`,[24801]],[[63930,63930],`mapped`,[20102]],[[63931,63931],`mapped`,[20698]],[[63932,63932],`mapped`,[23534]],[[63933,63933],`mapped`,[23615]],[[63934,63934],`mapped`,[26009]],[[63935,63935],`mapped`,[27138]],[[63936,63936],`mapped`,[29134]],[[63937,63937],`mapped`,[30274]],[[63938,63938],`mapped`,[34044]],[[63939,63939],`mapped`,[36988]],[[63940,63940],`mapped`,[40845]],[[63941,63941],`mapped`,[26248]],[[63942,63942],`mapped`,[38446]],[[63943,63943],`mapped`,[21129]],[[63944,63944],`mapped`,[26491]],[[63945,63945],`mapped`,[26611]],[[63946,63946],`mapped`,[27969]],[[63947,63947],`mapped`,[28316]],[[63948,63948],`mapped`,[29705]],[[63949,63949],`mapped`,[30041]],[[63950,63950],`mapped`,[30827]],[[63951,63951],`mapped`,[32016]],[[63952,63952],`mapped`,[39006]],[[63953,63953],`mapped`,[20845]],[[63954,63954],`mapped`,[25134]],[[63955,63955],`mapped`,[38520]],[[63956,63956],`mapped`,[20523]],[[63957,63957],`mapped`,[23833]],[[63958,63958],`mapped`,[28138]],[[63959,63959],`mapped`,[36650]],[[63960,63960],`mapped`,[24459]],[[63961,63961],`mapped`,[24900]],[[63962,63962],`mapped`,[26647]],[[63963,63963],`mapped`,[29575]],[[63964,63964],`mapped`,[38534]],[[63965,63965],`mapped`,[21033]],[[63966,63966],`mapped`,[21519]],[[63967,63967],`mapped`,[23653]],[[63968,63968],`mapped`,[26131]],[[63969,63969],`mapped`,[26446]],[[63970,63970],`mapped`,[26792]],[[63971,63971],`mapped`,[27877]],[[63972,63972],`mapped`,[29702]],[[63973,63973],`mapped`,[30178]],[[63974,63974],`mapped`,[32633]],[[63975,63975],`mapped`,[35023]],[[63976,63976],`mapped`,[35041]],[[63977,63977],`mapped`,[37324]],[[63978,63978],`mapped`,[38626]],[[63979,63979],`mapped`,[21311]],[[63980,63980],`mapped`,[28346]],[[63981,63981],`mapped`,[21533]],[[63982,63982],`mapped`,[29136]],[[63983,63983],`mapped`,[29848]],[[63984,63984],`mapped`,[34298]],[[63985,63985],`mapped`,[38563]],[[63986,63986],`mapped`,[40023]],[[63987,63987],`mapped`,[40607]],[[63988,63988],`mapped`,[26519]],[[63989,63989],`mapped`,[28107]],[[63990,63990],`mapped`,[33256]],[[63991,63991],`mapped`,[31435]],[[63992,63992],`mapped`,[31520]],[[63993,63993],`mapped`,[31890]],[[63994,63994],`mapped`,[29376]],[[63995,63995],`mapped`,[28825]],[[63996,63996],`mapped`,[35672]],[[63997,63997],`mapped`,[20160]],[[63998,63998],`mapped`,[33590]],[[63999,63999],`mapped`,[21050]],[[64e3,64e3],`mapped`,[20999]],[[64001,64001],`mapped`,[24230]],[[64002,64002],`mapped`,[25299]],[[64003,64003],`mapped`,[31958]],[[64004,64004],`mapped`,[23429]],[[64005,64005],`mapped`,[27934]],[[64006,64006],`mapped`,[26292]],[[64007,64007],`mapped`,[36667]],[[64008,64008],`mapped`,[34892]],[[64009,64009],`mapped`,[38477]],[[64010,64010],`mapped`,[35211]],[[64011,64011],`mapped`,[24275]],[[64012,64012],`mapped`,[20800]],[[64013,64013],`mapped`,[21952]],[[64014,64015],`valid`],[[64016,64016],`mapped`,[22618]],[[64017,64017],`valid`],[[64018,64018],`mapped`,[26228]],[[64019,64020],`valid`],[[64021,64021],`mapped`,[20958]],[[64022,64022],`mapped`,[29482]],[[64023,64023],`mapped`,[30410]],[[64024,64024],`mapped`,[31036]],[[64025,64025],`mapped`,[31070]],[[64026,64026],`mapped`,[31077]],[[64027,64027],`mapped`,[31119]],[[64028,64028],`mapped`,[38742]],[[64029,64029],`mapped`,[31934]],[[64030,64030],`mapped`,[32701]],[[64031,64031],`valid`],[[64032,64032],`mapped`,[34322]],[[64033,64033],`valid`],[[64034,64034],`mapped`,[35576]],[[64035,64036],`valid`],[[64037,64037],`mapped`,[36920]],[[64038,64038],`mapped`,[37117]],[[64039,64041],`valid`],[[64042,64042],`mapped`,[39151]],[[64043,64043],`mapped`,[39164]],[[64044,64044],`mapped`,[39208]],[[64045,64045],`mapped`,[40372]],[[64046,64046],`mapped`,[37086]],[[64047,64047],`mapped`,[38583]],[[64048,64048],`mapped`,[20398]],[[64049,64049],`mapped`,[20711]],[[64050,64050],`mapped`,[20813]],[[64051,64051],`mapped`,[21193]],[[64052,64052],`mapped`,[21220]],[[64053,64053],`mapped`,[21329]],[[64054,64054],`mapped`,[21917]],[[64055,64055],`mapped`,[22022]],[[64056,64056],`mapped`,[22120]],[[64057,64057],`mapped`,[22592]],[[64058,64058],`mapped`,[22696]],[[64059,64059],`mapped`,[23652]],[[64060,64060],`mapped`,[23662]],[[64061,64061],`mapped`,[24724]],[[64062,64062],`mapped`,[24936]],[[64063,64063],`mapped`,[24974]],[[64064,64064],`mapped`,[25074]],[[64065,64065],`mapped`,[25935]],[[64066,64066],`mapped`,[26082]],[[64067,64067],`mapped`,[26257]],[[64068,64068],`mapped`,[26757]],[[64069,64069],`mapped`,[28023]],[[64070,64070],`mapped`,[28186]],[[64071,64071],`mapped`,[28450]],[[64072,64072],`mapped`,[29038]],[[64073,64073],`mapped`,[29227]],[[64074,64074],`mapped`,[29730]],[[64075,64075],`mapped`,[30865]],[[64076,64076],`mapped`,[31038]],[[64077,64077],`mapped`,[31049]],[[64078,64078],`mapped`,[31048]],[[64079,64079],`mapped`,[31056]],[[64080,64080],`mapped`,[31062]],[[64081,64081],`mapped`,[31069]],[[64082,64082],`mapped`,[31117]],[[64083,64083],`mapped`,[31118]],[[64084,64084],`mapped`,[31296]],[[64085,64085],`mapped`,[31361]],[[64086,64086],`mapped`,[31680]],[[64087,64087],`mapped`,[32244]],[[64088,64088],`mapped`,[32265]],[[64089,64089],`mapped`,[32321]],[[64090,64090],`mapped`,[32626]],[[64091,64091],`mapped`,[32773]],[[64092,64092],`mapped`,[33261]],[[64093,64094],`mapped`,[33401]],[[64095,64095],`mapped`,[33879]],[[64096,64096],`mapped`,[35088]],[[64097,64097],`mapped`,[35222]],[[64098,64098],`mapped`,[35585]],[[64099,64099],`mapped`,[35641]],[[64100,64100],`mapped`,[36051]],[[64101,64101],`mapped`,[36104]],[[64102,64102],`mapped`,[36790]],[[64103,64103],`mapped`,[36920]],[[64104,64104],`mapped`,[38627]],[[64105,64105],`mapped`,[38911]],[[64106,64106],`mapped`,[38971]],[[64107,64107],`mapped`,[24693]],[[64108,64108],`mapped`,[148206]],[[64109,64109],`mapped`,[33304]],[[64110,64111],`disallowed`],[[64112,64112],`mapped`,[20006]],[[64113,64113],`mapped`,[20917]],[[64114,64114],`mapped`,[20840]],[[64115,64115],`mapped`,[20352]],[[64116,64116],`mapped`,[20805]],[[64117,64117],`mapped`,[20864]],[[64118,64118],`mapped`,[21191]],[[64119,64119],`mapped`,[21242]],[[64120,64120],`mapped`,[21917]],[[64121,64121],`mapped`,[21845]],[[64122,64122],`mapped`,[21913]],[[64123,64123],`mapped`,[21986]],[[64124,64124],`mapped`,[22618]],[[64125,64125],`mapped`,[22707]],[[64126,64126],`mapped`,[22852]],[[64127,64127],`mapped`,[22868]],[[64128,64128],`mapped`,[23138]],[[64129,64129],`mapped`,[23336]],[[64130,64130],`mapped`,[24274]],[[64131,64131],`mapped`,[24281]],[[64132,64132],`mapped`,[24425]],[[64133,64133],`mapped`,[24493]],[[64134,64134],`mapped`,[24792]],[[64135,64135],`mapped`,[24910]],[[64136,64136],`mapped`,[24840]],[[64137,64137],`mapped`,[24974]],[[64138,64138],`mapped`,[24928]],[[64139,64139],`mapped`,[25074]],[[64140,64140],`mapped`,[25140]],[[64141,64141],`mapped`,[25540]],[[64142,64142],`mapped`,[25628]],[[64143,64143],`mapped`,[25682]],[[64144,64144],`mapped`,[25942]],[[64145,64145],`mapped`,[26228]],[[64146,64146],`mapped`,[26391]],[[64147,64147],`mapped`,[26395]],[[64148,64148],`mapped`,[26454]],[[64149,64149],`mapped`,[27513]],[[64150,64150],`mapped`,[27578]],[[64151,64151],`mapped`,[27969]],[[64152,64152],`mapped`,[28379]],[[64153,64153],`mapped`,[28363]],[[64154,64154],`mapped`,[28450]],[[64155,64155],`mapped`,[28702]],[[64156,64156],`mapped`,[29038]],[[64157,64157],`mapped`,[30631]],[[64158,64158],`mapped`,[29237]],[[64159,64159],`mapped`,[29359]],[[64160,64160],`mapped`,[29482]],[[64161,64161],`mapped`,[29809]],[[64162,64162],`mapped`,[29958]],[[64163,64163],`mapped`,[30011]],[[64164,64164],`mapped`,[30237]],[[64165,64165],`mapped`,[30239]],[[64166,64166],`mapped`,[30410]],[[64167,64167],`mapped`,[30427]],[[64168,64168],`mapped`,[30452]],[[64169,64169],`mapped`,[30538]],[[64170,64170],`mapped`,[30528]],[[64171,64171],`mapped`,[30924]],[[64172,64172],`mapped`,[31409]],[[64173,64173],`mapped`,[31680]],[[64174,64174],`mapped`,[31867]],[[64175,64175],`mapped`,[32091]],[[64176,64176],`mapped`,[32244]],[[64177,64177],`mapped`,[32574]],[[64178,64178],`mapped`,[32773]],[[64179,64179],`mapped`,[33618]],[[64180,64180],`mapped`,[33775]],[[64181,64181],`mapped`,[34681]],[[64182,64182],`mapped`,[35137]],[[64183,64183],`mapped`,[35206]],[[64184,64184],`mapped`,[35222]],[[64185,64185],`mapped`,[35519]],[[64186,64186],`mapped`,[35576]],[[64187,64187],`mapped`,[35531]],[[64188,64188],`mapped`,[35585]],[[64189,64189],`mapped`,[35582]],[[64190,64190],`mapped`,[35565]],[[64191,64191],`mapped`,[35641]],[[64192,64192],`mapped`,[35722]],[[64193,64193],`mapped`,[36104]],[[64194,64194],`mapped`,[36664]],[[64195,64195],`mapped`,[36978]],[[64196,64196],`mapped`,[37273]],[[64197,64197],`mapped`,[37494]],[[64198,64198],`mapped`,[38524]],[[64199,64199],`mapped`,[38627]],[[64200,64200],`mapped`,[38742]],[[64201,64201],`mapped`,[38875]],[[64202,64202],`mapped`,[38911]],[[64203,64203],`mapped`,[38923]],[[64204,64204],`mapped`,[38971]],[[64205,64205],`mapped`,[39698]],[[64206,64206],`mapped`,[40860]],[[64207,64207],`mapped`,[141386]],[[64208,64208],`mapped`,[141380]],[[64209,64209],`mapped`,[144341]],[[64210,64210],`mapped`,[15261]],[[64211,64211],`mapped`,[16408]],[[64212,64212],`mapped`,[16441]],[[64213,64213],`mapped`,[152137]],[[64214,64214],`mapped`,[154832]],[[64215,64215],`mapped`,[163539]],[[64216,64216],`mapped`,[40771]],[[64217,64217],`mapped`,[40846]],[[64218,64255],`disallowed`],[[64256,64256],`mapped`,[102,102]],[[64257,64257],`mapped`,[102,105]],[[64258,64258],`mapped`,[102,108]],[[64259,64259],`mapped`,[102,102,105]],[[64260,64260],`mapped`,[102,102,108]],[[64261,64262],`mapped`,[115,116]],[[64263,64274],`disallowed`],[[64275,64275],`mapped`,[1396,1398]],[[64276,64276],`mapped`,[1396,1381]],[[64277,64277],`mapped`,[1396,1387]],[[64278,64278],`mapped`,[1406,1398]],[[64279,64279],`mapped`,[1396,1389]],[[64280,64284],`disallowed`],[[64285,64285],`mapped`,[1497,1460]],[[64286,64286],`valid`],[[64287,64287],`mapped`,[1522,1463]],[[64288,64288],`mapped`,[1506]],[[64289,64289],`mapped`,[1488]],[[64290,64290],`mapped`,[1491]],[[64291,64291],`mapped`,[1492]],[[64292,64292],`mapped`,[1499]],[[64293,64293],`mapped`,[1500]],[[64294,64294],`mapped`,[1501]],[[64295,64295],`mapped`,[1512]],[[64296,64296],`mapped`,[1514]],[[64297,64297],`disallowed_STD3_mapped`,[43]],[[64298,64298],`mapped`,[1513,1473]],[[64299,64299],`mapped`,[1513,1474]],[[64300,64300],`mapped`,[1513,1468,1473]],[[64301,64301],`mapped`,[1513,1468,1474]],[[64302,64302],`mapped`,[1488,1463]],[[64303,64303],`mapped`,[1488,1464]],[[64304,64304],`mapped`,[1488,1468]],[[64305,64305],`mapped`,[1489,1468]],[[64306,64306],`mapped`,[1490,1468]],[[64307,64307],`mapped`,[1491,1468]],[[64308,64308],`mapped`,[1492,1468]],[[64309,64309],`mapped`,[1493,1468]],[[64310,64310],`mapped`,[1494,1468]],[[64311,64311],`disallowed`],[[64312,64312],`mapped`,[1496,1468]],[[64313,64313],`mapped`,[1497,1468]],[[64314,64314],`mapped`,[1498,1468]],[[64315,64315],`mapped`,[1499,1468]],[[64316,64316],`mapped`,[1500,1468]],[[64317,64317],`disallowed`],[[64318,64318],`mapped`,[1502,1468]],[[64319,64319],`disallowed`],[[64320,64320],`mapped`,[1504,1468]],[[64321,64321],`mapped`,[1505,1468]],[[64322,64322],`disallowed`],[[64323,64323],`mapped`,[1507,1468]],[[64324,64324],`mapped`,[1508,1468]],[[64325,64325],`disallowed`],[[64326,64326],`mapped`,[1510,1468]],[[64327,64327],`mapped`,[1511,1468]],[[64328,64328],`mapped`,[1512,1468]],[[64329,64329],`mapped`,[1513,1468]],[[64330,64330],`mapped`,[1514,1468]],[[64331,64331],`mapped`,[1493,1465]],[[64332,64332],`mapped`,[1489,1471]],[[64333,64333],`mapped`,[1499,1471]],[[64334,64334],`mapped`,[1508,1471]],[[64335,64335],`mapped`,[1488,1500]],[[64336,64337],`mapped`,[1649]],[[64338,64341],`mapped`,[1659]],[[64342,64345],`mapped`,[1662]],[[64346,64349],`mapped`,[1664]],[[64350,64353],`mapped`,[1658]],[[64354,64357],`mapped`,[1663]],[[64358,64361],`mapped`,[1657]],[[64362,64365],`mapped`,[1700]],[[64366,64369],`mapped`,[1702]],[[64370,64373],`mapped`,[1668]],[[64374,64377],`mapped`,[1667]],[[64378,64381],`mapped`,[1670]],[[64382,64385],`mapped`,[1671]],[[64386,64387],`mapped`,[1677]],[[64388,64389],`mapped`,[1676]],[[64390,64391],`mapped`,[1678]],[[64392,64393],`mapped`,[1672]],[[64394,64395],`mapped`,[1688]],[[64396,64397],`mapped`,[1681]],[[64398,64401],`mapped`,[1705]],[[64402,64405],`mapped`,[1711]],[[64406,64409],`mapped`,[1715]],[[64410,64413],`mapped`,[1713]],[[64414,64415],`mapped`,[1722]],[[64416,64419],`mapped`,[1723]],[[64420,64421],`mapped`,[1728]],[[64422,64425],`mapped`,[1729]],[[64426,64429],`mapped`,[1726]],[[64430,64431],`mapped`,[1746]],[[64432,64433],`mapped`,[1747]],[[64434,64449],`valid`,[],`NV8`],[[64450,64466],`disallowed`],[[64467,64470],`mapped`,[1709]],[[64471,64472],`mapped`,[1735]],[[64473,64474],`mapped`,[1734]],[[64475,64476],`mapped`,[1736]],[[64477,64477],`mapped`,[1735,1652]],[[64478,64479],`mapped`,[1739]],[[64480,64481],`mapped`,[1733]],[[64482,64483],`mapped`,[1737]],[[64484,64487],`mapped`,[1744]],[[64488,64489],`mapped`,[1609]],[[64490,64491],`mapped`,[1574,1575]],[[64492,64493],`mapped`,[1574,1749]],[[64494,64495],`mapped`,[1574,1608]],[[64496,64497],`mapped`,[1574,1735]],[[64498,64499],`mapped`,[1574,1734]],[[64500,64501],`mapped`,[1574,1736]],[[64502,64504],`mapped`,[1574,1744]],[[64505,64507],`mapped`,[1574,1609]],[[64508,64511],`mapped`,[1740]],[[64512,64512],`mapped`,[1574,1580]],[[64513,64513],`mapped`,[1574,1581]],[[64514,64514],`mapped`,[1574,1605]],[[64515,64515],`mapped`,[1574,1609]],[[64516,64516],`mapped`,[1574,1610]],[[64517,64517],`mapped`,[1576,1580]],[[64518,64518],`mapped`,[1576,1581]],[[64519,64519],`mapped`,[1576,1582]],[[64520,64520],`mapped`,[1576,1605]],[[64521,64521],`mapped`,[1576,1609]],[[64522,64522],`mapped`,[1576,1610]],[[64523,64523],`mapped`,[1578,1580]],[[64524,64524],`mapped`,[1578,1581]],[[64525,64525],`mapped`,[1578,1582]],[[64526,64526],`mapped`,[1578,1605]],[[64527,64527],`mapped`,[1578,1609]],[[64528,64528],`mapped`,[1578,1610]],[[64529,64529],`mapped`,[1579,1580]],[[64530,64530],`mapped`,[1579,1605]],[[64531,64531],`mapped`,[1579,1609]],[[64532,64532],`mapped`,[1579,1610]],[[64533,64533],`mapped`,[1580,1581]],[[64534,64534],`mapped`,[1580,1605]],[[64535,64535],`mapped`,[1581,1580]],[[64536,64536],`mapped`,[1581,1605]],[[64537,64537],`mapped`,[1582,1580]],[[64538,64538],`mapped`,[1582,1581]],[[64539,64539],`mapped`,[1582,1605]],[[64540,64540],`mapped`,[1587,1580]],[[64541,64541],`mapped`,[1587,1581]],[[64542,64542],`mapped`,[1587,1582]],[[64543,64543],`mapped`,[1587,1605]],[[64544,64544],`mapped`,[1589,1581]],[[64545,64545],`mapped`,[1589,1605]],[[64546,64546],`mapped`,[1590,1580]],[[64547,64547],`mapped`,[1590,1581]],[[64548,64548],`mapped`,[1590,1582]],[[64549,64549],`mapped`,[1590,1605]],[[64550,64550],`mapped`,[1591,1581]],[[64551,64551],`mapped`,[1591,1605]],[[64552,64552],`mapped`,[1592,1605]],[[64553,64553],`mapped`,[1593,1580]],[[64554,64554],`mapped`,[1593,1605]],[[64555,64555],`mapped`,[1594,1580]],[[64556,64556],`mapped`,[1594,1605]],[[64557,64557],`mapped`,[1601,1580]],[[64558,64558],`mapped`,[1601,1581]],[[64559,64559],`mapped`,[1601,1582]],[[64560,64560],`mapped`,[1601,1605]],[[64561,64561],`mapped`,[1601,1609]],[[64562,64562],`mapped`,[1601,1610]],[[64563,64563],`mapped`,[1602,1581]],[[64564,64564],`mapped`,[1602,1605]],[[64565,64565],`mapped`,[1602,1609]],[[64566,64566],`mapped`,[1602,1610]],[[64567,64567],`mapped`,[1603,1575]],[[64568,64568],`mapped`,[1603,1580]],[[64569,64569],`mapped`,[1603,1581]],[[64570,64570],`mapped`,[1603,1582]],[[64571,64571],`mapped`,[1603,1604]],[[64572,64572],`mapped`,[1603,1605]],[[64573,64573],`mapped`,[1603,1609]],[[64574,64574],`mapped`,[1603,1610]],[[64575,64575],`mapped`,[1604,1580]],[[64576,64576],`mapped`,[1604,1581]],[[64577,64577],`mapped`,[1604,1582]],[[64578,64578],`mapped`,[1604,1605]],[[64579,64579],`mapped`,[1604,1609]],[[64580,64580],`mapped`,[1604,1610]],[[64581,64581],`mapped`,[1605,1580]],[[64582,64582],`mapped`,[1605,1581]],[[64583,64583],`mapped`,[1605,1582]],[[64584,64584],`mapped`,[1605,1605]],[[64585,64585],`mapped`,[1605,1609]],[[64586,64586],`mapped`,[1605,1610]],[[64587,64587],`mapped`,[1606,1580]],[[64588,64588],`mapped`,[1606,1581]],[[64589,64589],`mapped`,[1606,1582]],[[64590,64590],`mapped`,[1606,1605]],[[64591,64591],`mapped`,[1606,1609]],[[64592,64592],`mapped`,[1606,1610]],[[64593,64593],`mapped`,[1607,1580]],[[64594,64594],`mapped`,[1607,1605]],[[64595,64595],`mapped`,[1607,1609]],[[64596,64596],`mapped`,[1607,1610]],[[64597,64597],`mapped`,[1610,1580]],[[64598,64598],`mapped`,[1610,1581]],[[64599,64599],`mapped`,[1610,1582]],[[64600,64600],`mapped`,[1610,1605]],[[64601,64601],`mapped`,[1610,1609]],[[64602,64602],`mapped`,[1610,1610]],[[64603,64603],`mapped`,[1584,1648]],[[64604,64604],`mapped`,[1585,1648]],[[64605,64605],`mapped`,[1609,1648]],[[64606,64606],`disallowed_STD3_mapped`,[32,1612,1617]],[[64607,64607],`disallowed_STD3_mapped`,[32,1613,1617]],[[64608,64608],`disallowed_STD3_mapped`,[32,1614,1617]],[[64609,64609],`disallowed_STD3_mapped`,[32,1615,1617]],[[64610,64610],`disallowed_STD3_mapped`,[32,1616,1617]],[[64611,64611],`disallowed_STD3_mapped`,[32,1617,1648]],[[64612,64612],`mapped`,[1574,1585]],[[64613,64613],`mapped`,[1574,1586]],[[64614,64614],`mapped`,[1574,1605]],[[64615,64615],`mapped`,[1574,1606]],[[64616,64616],`mapped`,[1574,1609]],[[64617,64617],`mapped`,[1574,1610]],[[64618,64618],`mapped`,[1576,1585]],[[64619,64619],`mapped`,[1576,1586]],[[64620,64620],`mapped`,[1576,1605]],[[64621,64621],`mapped`,[1576,1606]],[[64622,64622],`mapped`,[1576,1609]],[[64623,64623],`mapped`,[1576,1610]],[[64624,64624],`mapped`,[1578,1585]],[[64625,64625],`mapped`,[1578,1586]],[[64626,64626],`mapped`,[1578,1605]],[[64627,64627],`mapped`,[1578,1606]],[[64628,64628],`mapped`,[1578,1609]],[[64629,64629],`mapped`,[1578,1610]],[[64630,64630],`mapped`,[1579,1585]],[[64631,64631],`mapped`,[1579,1586]],[[64632,64632],`mapped`,[1579,1605]],[[64633,64633],`mapped`,[1579,1606]],[[64634,64634],`mapped`,[1579,1609]],[[64635,64635],`mapped`,[1579,1610]],[[64636,64636],`mapped`,[1601,1609]],[[64637,64637],`mapped`,[1601,1610]],[[64638,64638],`mapped`,[1602,1609]],[[64639,64639],`mapped`,[1602,1610]],[[64640,64640],`mapped`,[1603,1575]],[[64641,64641],`mapped`,[1603,1604]],[[64642,64642],`mapped`,[1603,1605]],[[64643,64643],`mapped`,[1603,1609]],[[64644,64644],`mapped`,[1603,1610]],[[64645,64645],`mapped`,[1604,1605]],[[64646,64646],`mapped`,[1604,1609]],[[64647,64647],`mapped`,[1604,1610]],[[64648,64648],`mapped`,[1605,1575]],[[64649,64649],`mapped`,[1605,1605]],[[64650,64650],`mapped`,[1606,1585]],[[64651,64651],`mapped`,[1606,1586]],[[64652,64652],`mapped`,[1606,1605]],[[64653,64653],`mapped`,[1606,1606]],[[64654,64654],`mapped`,[1606,1609]],[[64655,64655],`mapped`,[1606,1610]],[[64656,64656],`mapped`,[1609,1648]],[[64657,64657],`mapped`,[1610,1585]],[[64658,64658],`mapped`,[1610,1586]],[[64659,64659],`mapped`,[1610,1605]],[[64660,64660],`mapped`,[1610,1606]],[[64661,64661],`mapped`,[1610,1609]],[[64662,64662],`mapped`,[1610,1610]],[[64663,64663],`mapped`,[1574,1580]],[[64664,64664],`mapped`,[1574,1581]],[[64665,64665],`mapped`,[1574,1582]],[[64666,64666],`mapped`,[1574,1605]],[[64667,64667],`mapped`,[1574,1607]],[[64668,64668],`mapped`,[1576,1580]],[[64669,64669],`mapped`,[1576,1581]],[[64670,64670],`mapped`,[1576,1582]],[[64671,64671],`mapped`,[1576,1605]],[[64672,64672],`mapped`,[1576,1607]],[[64673,64673],`mapped`,[1578,1580]],[[64674,64674],`mapped`,[1578,1581]],[[64675,64675],`mapped`,[1578,1582]],[[64676,64676],`mapped`,[1578,1605]],[[64677,64677],`mapped`,[1578,1607]],[[64678,64678],`mapped`,[1579,1605]],[[64679,64679],`mapped`,[1580,1581]],[[64680,64680],`mapped`,[1580,1605]],[[64681,64681],`mapped`,[1581,1580]],[[64682,64682],`mapped`,[1581,1605]],[[64683,64683],`mapped`,[1582,1580]],[[64684,64684],`mapped`,[1582,1605]],[[64685,64685],`mapped`,[1587,1580]],[[64686,64686],`mapped`,[1587,1581]],[[64687,64687],`mapped`,[1587,1582]],[[64688,64688],`mapped`,[1587,1605]],[[64689,64689],`mapped`,[1589,1581]],[[64690,64690],`mapped`,[1589,1582]],[[64691,64691],`mapped`,[1589,1605]],[[64692,64692],`mapped`,[1590,1580]],[[64693,64693],`mapped`,[1590,1581]],[[64694,64694],`mapped`,[1590,1582]],[[64695,64695],`mapped`,[1590,1605]],[[64696,64696],`mapped`,[1591,1581]],[[64697,64697],`mapped`,[1592,1605]],[[64698,64698],`mapped`,[1593,1580]],[[64699,64699],`mapped`,[1593,1605]],[[64700,64700],`mapped`,[1594,1580]],[[64701,64701],`mapped`,[1594,1605]],[[64702,64702],`mapped`,[1601,1580]],[[64703,64703],`mapped`,[1601,1581]],[[64704,64704],`mapped`,[1601,1582]],[[64705,64705],`mapped`,[1601,1605]],[[64706,64706],`mapped`,[1602,1581]],[[64707,64707],`mapped`,[1602,1605]],[[64708,64708],`mapped`,[1603,1580]],[[64709,64709],`mapped`,[1603,1581]],[[64710,64710],`mapped`,[1603,1582]],[[64711,64711],`mapped`,[1603,1604]],[[64712,64712],`mapped`,[1603,1605]],[[64713,64713],`mapped`,[1604,1580]],[[64714,64714],`mapped`,[1604,1581]],[[64715,64715],`mapped`,[1604,1582]],[[64716,64716],`mapped`,[1604,1605]],[[64717,64717],`mapped`,[1604,1607]],[[64718,64718],`mapped`,[1605,1580]],[[64719,64719],`mapped`,[1605,1581]],[[64720,64720],`mapped`,[1605,1582]],[[64721,64721],`mapped`,[1605,1605]],[[64722,64722],`mapped`,[1606,1580]],[[64723,64723],`mapped`,[1606,1581]],[[64724,64724],`mapped`,[1606,1582]],[[64725,64725],`mapped`,[1606,1605]],[[64726,64726],`mapped`,[1606,1607]],[[64727,64727],`mapped`,[1607,1580]],[[64728,64728],`mapped`,[1607,1605]],[[64729,64729],`mapped`,[1607,1648]],[[64730,64730],`mapped`,[1610,1580]],[[64731,64731],`mapped`,[1610,1581]],[[64732,64732],`mapped`,[1610,1582]],[[64733,64733],`mapped`,[1610,1605]],[[64734,64734],`mapped`,[1610,1607]],[[64735,64735],`mapped`,[1574,1605]],[[64736,64736],`mapped`,[1574,1607]],[[64737,64737],`mapped`,[1576,1605]],[[64738,64738],`mapped`,[1576,1607]],[[64739,64739],`mapped`,[1578,1605]],[[64740,64740],`mapped`,[1578,1607]],[[64741,64741],`mapped`,[1579,1605]],[[64742,64742],`mapped`,[1579,1607]],[[64743,64743],`mapped`,[1587,1605]],[[64744,64744],`mapped`,[1587,1607]],[[64745,64745],`mapped`,[1588,1605]],[[64746,64746],`mapped`,[1588,1607]],[[64747,64747],`mapped`,[1603,1604]],[[64748,64748],`mapped`,[1603,1605]],[[64749,64749],`mapped`,[1604,1605]],[[64750,64750],`mapped`,[1606,1605]],[[64751,64751],`mapped`,[1606,1607]],[[64752,64752],`mapped`,[1610,1605]],[[64753,64753],`mapped`,[1610,1607]],[[64754,64754],`mapped`,[1600,1614,1617]],[[64755,64755],`mapped`,[1600,1615,1617]],[[64756,64756],`mapped`,[1600,1616,1617]],[[64757,64757],`mapped`,[1591,1609]],[[64758,64758],`mapped`,[1591,1610]],[[64759,64759],`mapped`,[1593,1609]],[[64760,64760],`mapped`,[1593,1610]],[[64761,64761],`mapped`,[1594,1609]],[[64762,64762],`mapped`,[1594,1610]],[[64763,64763],`mapped`,[1587,1609]],[[64764,64764],`mapped`,[1587,1610]],[[64765,64765],`mapped`,[1588,1609]],[[64766,64766],`mapped`,[1588,1610]],[[64767,64767],`mapped`,[1581,1609]],[[64768,64768],`mapped`,[1581,1610]],[[64769,64769],`mapped`,[1580,1609]],[[64770,64770],`mapped`,[1580,1610]],[[64771,64771],`mapped`,[1582,1609]],[[64772,64772],`mapped`,[1582,1610]],[[64773,64773],`mapped`,[1589,1609]],[[64774,64774],`mapped`,[1589,1610]],[[64775,64775],`mapped`,[1590,1609]],[[64776,64776],`mapped`,[1590,1610]],[[64777,64777],`mapped`,[1588,1580]],[[64778,64778],`mapped`,[1588,1581]],[[64779,64779],`mapped`,[1588,1582]],[[64780,64780],`mapped`,[1588,1605]],[[64781,64781],`mapped`,[1588,1585]],[[64782,64782],`mapped`,[1587,1585]],[[64783,64783],`mapped`,[1589,1585]],[[64784,64784],`mapped`,[1590,1585]],[[64785,64785],`mapped`,[1591,1609]],[[64786,64786],`mapped`,[1591,1610]],[[64787,64787],`mapped`,[1593,1609]],[[64788,64788],`mapped`,[1593,1610]],[[64789,64789],`mapped`,[1594,1609]],[[64790,64790],`mapped`,[1594,1610]],[[64791,64791],`mapped`,[1587,1609]],[[64792,64792],`mapped`,[1587,1610]],[[64793,64793],`mapped`,[1588,1609]],[[64794,64794],`mapped`,[1588,1610]],[[64795,64795],`mapped`,[1581,1609]],[[64796,64796],`mapped`,[1581,1610]],[[64797,64797],`mapped`,[1580,1609]],[[64798,64798],`mapped`,[1580,1610]],[[64799,64799],`mapped`,[1582,1609]],[[64800,64800],`mapped`,[1582,1610]],[[64801,64801],`mapped`,[1589,1609]],[[64802,64802],`mapped`,[1589,1610]],[[64803,64803],`mapped`,[1590,1609]],[[64804,64804],`mapped`,[1590,1610]],[[64805,64805],`mapped`,[1588,1580]],[[64806,64806],`mapped`,[1588,1581]],[[64807,64807],`mapped`,[1588,1582]],[[64808,64808],`mapped`,[1588,1605]],[[64809,64809],`mapped`,[1588,1585]],[[64810,64810],`mapped`,[1587,1585]],[[64811,64811],`mapped`,[1589,1585]],[[64812,64812],`mapped`,[1590,1585]],[[64813,64813],`mapped`,[1588,1580]],[[64814,64814],`mapped`,[1588,1581]],[[64815,64815],`mapped`,[1588,1582]],[[64816,64816],`mapped`,[1588,1605]],[[64817,64817],`mapped`,[1587,1607]],[[64818,64818],`mapped`,[1588,1607]],[[64819,64819],`mapped`,[1591,1605]],[[64820,64820],`mapped`,[1587,1580]],[[64821,64821],`mapped`,[1587,1581]],[[64822,64822],`mapped`,[1587,1582]],[[64823,64823],`mapped`,[1588,1580]],[[64824,64824],`mapped`,[1588,1581]],[[64825,64825],`mapped`,[1588,1582]],[[64826,64826],`mapped`,[1591,1605]],[[64827,64827],`mapped`,[1592,1605]],[[64828,64829],`mapped`,[1575,1611]],[[64830,64831],`valid`,[],`NV8`],[[64832,64847],`disallowed`],[[64848,64848],`mapped`,[1578,1580,1605]],[[64849,64850],`mapped`,[1578,1581,1580]],[[64851,64851],`mapped`,[1578,1581,1605]],[[64852,64852],`mapped`,[1578,1582,1605]],[[64853,64853],`mapped`,[1578,1605,1580]],[[64854,64854],`mapped`,[1578,1605,1581]],[[64855,64855],`mapped`,[1578,1605,1582]],[[64856,64857],`mapped`,[1580,1605,1581]],[[64858,64858],`mapped`,[1581,1605,1610]],[[64859,64859],`mapped`,[1581,1605,1609]],[[64860,64860],`mapped`,[1587,1581,1580]],[[64861,64861],`mapped`,[1587,1580,1581]],[[64862,64862],`mapped`,[1587,1580,1609]],[[64863,64864],`mapped`,[1587,1605,1581]],[[64865,64865],`mapped`,[1587,1605,1580]],[[64866,64867],`mapped`,[1587,1605,1605]],[[64868,64869],`mapped`,[1589,1581,1581]],[[64870,64870],`mapped`,[1589,1605,1605]],[[64871,64872],`mapped`,[1588,1581,1605]],[[64873,64873],`mapped`,[1588,1580,1610]],[[64874,64875],`mapped`,[1588,1605,1582]],[[64876,64877],`mapped`,[1588,1605,1605]],[[64878,64878],`mapped`,[1590,1581,1609]],[[64879,64880],`mapped`,[1590,1582,1605]],[[64881,64882],`mapped`,[1591,1605,1581]],[[64883,64883],`mapped`,[1591,1605,1605]],[[64884,64884],`mapped`,[1591,1605,1610]],[[64885,64885],`mapped`,[1593,1580,1605]],[[64886,64887],`mapped`,[1593,1605,1605]],[[64888,64888],`mapped`,[1593,1605,1609]],[[64889,64889],`mapped`,[1594,1605,1605]],[[64890,64890],`mapped`,[1594,1605,1610]],[[64891,64891],`mapped`,[1594,1605,1609]],[[64892,64893],`mapped`,[1601,1582,1605]],[[64894,64894],`mapped`,[1602,1605,1581]],[[64895,64895],`mapped`,[1602,1605,1605]],[[64896,64896],`mapped`,[1604,1581,1605]],[[64897,64897],`mapped`,[1604,1581,1610]],[[64898,64898],`mapped`,[1604,1581,1609]],[[64899,64900],`mapped`,[1604,1580,1580]],[[64901,64902],`mapped`,[1604,1582,1605]],[[64903,64904],`mapped`,[1604,1605,1581]],[[64905,64905],`mapped`,[1605,1581,1580]],[[64906,64906],`mapped`,[1605,1581,1605]],[[64907,64907],`mapped`,[1605,1581,1610]],[[64908,64908],`mapped`,[1605,1580,1581]],[[64909,64909],`mapped`,[1605,1580,1605]],[[64910,64910],`mapped`,[1605,1582,1580]],[[64911,64911],`mapped`,[1605,1582,1605]],[[64912,64913],`disallowed`],[[64914,64914],`mapped`,[1605,1580,1582]],[[64915,64915],`mapped`,[1607,1605,1580]],[[64916,64916],`mapped`,[1607,1605,1605]],[[64917,64917],`mapped`,[1606,1581,1605]],[[64918,64918],`mapped`,[1606,1581,1609]],[[64919,64920],`mapped`,[1606,1580,1605]],[[64921,64921],`mapped`,[1606,1580,1609]],[[64922,64922],`mapped`,[1606,1605,1610]],[[64923,64923],`mapped`,[1606,1605,1609]],[[64924,64925],`mapped`,[1610,1605,1605]],[[64926,64926],`mapped`,[1576,1582,1610]],[[64927,64927],`mapped`,[1578,1580,1610]],[[64928,64928],`mapped`,[1578,1580,1609]],[[64929,64929],`mapped`,[1578,1582,1610]],[[64930,64930],`mapped`,[1578,1582,1609]],[[64931,64931],`mapped`,[1578,1605,1610]],[[64932,64932],`mapped`,[1578,1605,1609]],[[64933,64933],`mapped`,[1580,1605,1610]],[[64934,64934],`mapped`,[1580,1581,1609]],[[64935,64935],`mapped`,[1580,1605,1609]],[[64936,64936],`mapped`,[1587,1582,1609]],[[64937,64937],`mapped`,[1589,1581,1610]],[[64938,64938],`mapped`,[1588,1581,1610]],[[64939,64939],`mapped`,[1590,1581,1610]],[[64940,64940],`mapped`,[1604,1580,1610]],[[64941,64941],`mapped`,[1604,1605,1610]],[[64942,64942],`mapped`,[1610,1581,1610]],[[64943,64943],`mapped`,[1610,1580,1610]],[[64944,64944],`mapped`,[1610,1605,1610]],[[64945,64945],`mapped`,[1605,1605,1610]],[[64946,64946],`mapped`,[1602,1605,1610]],[[64947,64947],`mapped`,[1606,1581,1610]],[[64948,64948],`mapped`,[1602,1605,1581]],[[64949,64949],`mapped`,[1604,1581,1605]],[[64950,64950],`mapped`,[1593,1605,1610]],[[64951,64951],`mapped`,[1603,1605,1610]],[[64952,64952],`mapped`,[1606,1580,1581]],[[64953,64953],`mapped`,[1605,1582,1610]],[[64954,64954],`mapped`,[1604,1580,1605]],[[64955,64955],`mapped`,[1603,1605,1605]],[[64956,64956],`mapped`,[1604,1580,1605]],[[64957,64957],`mapped`,[1606,1580,1581]],[[64958,64958],`mapped`,[1580,1581,1610]],[[64959,64959],`mapped`,[1581,1580,1610]],[[64960,64960],`mapped`,[1605,1580,1610]],[[64961,64961],`mapped`,[1601,1605,1610]],[[64962,64962],`mapped`,[1576,1581,1610]],[[64963,64963],`mapped`,[1603,1605,1605]],[[64964,64964],`mapped`,[1593,1580,1605]],[[64965,64965],`mapped`,[1589,1605,1605]],[[64966,64966],`mapped`,[1587,1582,1610]],[[64967,64967],`mapped`,[1606,1580,1610]],[[64968,64975],`disallowed`],[[64976,65007],`disallowed`],[[65008,65008],`mapped`,[1589,1604,1746]],[[65009,65009],`mapped`,[1602,1604,1746]],[[65010,65010],`mapped`,[1575,1604,1604,1607]],[[65011,65011],`mapped`,[1575,1603,1576,1585]],[[65012,65012],`mapped`,[1605,1581,1605,1583]],[[65013,65013],`mapped`,[1589,1604,1593,1605]],[[65014,65014],`mapped`,[1585,1587,1608,1604]],[[65015,65015],`mapped`,[1593,1604,1610,1607]],[[65016,65016],`mapped`,[1608,1587,1604,1605]],[[65017,65017],`mapped`,[1589,1604,1609]],[[65018,65018],`disallowed_STD3_mapped`,[1589,1604,1609,32,1575,1604,1604,1607,32,1593,1604,1610,1607,32,1608,1587,1604,1605]],[[65019,65019],`disallowed_STD3_mapped`,[1580,1604,32,1580,1604,1575,1604,1607]],[[65020,65020],`mapped`,[1585,1740,1575,1604]],[[65021,65021],`valid`,[],`NV8`],[[65022,65023],`disallowed`],[[65024,65039],`ignored`],[[65040,65040],`disallowed_STD3_mapped`,[44]],[[65041,65041],`mapped`,[12289]],[[65042,65042],`disallowed`],[[65043,65043],`disallowed_STD3_mapped`,[58]],[[65044,65044],`disallowed_STD3_mapped`,[59]],[[65045,65045],`disallowed_STD3_mapped`,[33]],[[65046,65046],`disallowed_STD3_mapped`,[63]],[[65047,65047],`mapped`,[12310]],[[65048,65048],`mapped`,[12311]],[[65049,65049],`disallowed`],[[65050,65055],`disallowed`],[[65056,65059],`valid`],[[65060,65062],`valid`],[[65063,65069],`valid`],[[65070,65071],`valid`],[[65072,65072],`disallowed`],[[65073,65073],`mapped`,[8212]],[[65074,65074],`mapped`,[8211]],[[65075,65076],`disallowed_STD3_mapped`,[95]],[[65077,65077],`disallowed_STD3_mapped`,[40]],[[65078,65078],`disallowed_STD3_mapped`,[41]],[[65079,65079],`disallowed_STD3_mapped`,[123]],[[65080,65080],`disallowed_STD3_mapped`,[125]],[[65081,65081],`mapped`,[12308]],[[65082,65082],`mapped`,[12309]],[[65083,65083],`mapped`,[12304]],[[65084,65084],`mapped`,[12305]],[[65085,65085],`mapped`,[12298]],[[65086,65086],`mapped`,[12299]],[[65087,65087],`mapped`,[12296]],[[65088,65088],`mapped`,[12297]],[[65089,65089],`mapped`,[12300]],[[65090,65090],`mapped`,[12301]],[[65091,65091],`mapped`,[12302]],[[65092,65092],`mapped`,[12303]],[[65093,65094],`valid`,[],`NV8`],[[65095,65095],`disallowed_STD3_mapped`,[91]],[[65096,65096],`disallowed_STD3_mapped`,[93]],[[65097,65100],`disallowed_STD3_mapped`,[32,773]],[[65101,65103],`disallowed_STD3_mapped`,[95]],[[65104,65104],`disallowed_STD3_mapped`,[44]],[[65105,65105],`mapped`,[12289]],[[65106,65106],`disallowed`],[[65107,65107],`disallowed`],[[65108,65108],`disallowed_STD3_mapped`,[59]],[[65109,65109],`disallowed_STD3_mapped`,[58]],[[65110,65110],`disallowed_STD3_mapped`,[63]],[[65111,65111],`disallowed_STD3_mapped`,[33]],[[65112,65112],`mapped`,[8212]],[[65113,65113],`disallowed_STD3_mapped`,[40]],[[65114,65114],`disallowed_STD3_mapped`,[41]],[[65115,65115],`disallowed_STD3_mapped`,[123]],[[65116,65116],`disallowed_STD3_mapped`,[125]],[[65117,65117],`mapped`,[12308]],[[65118,65118],`mapped`,[12309]],[[65119,65119],`disallowed_STD3_mapped`,[35]],[[65120,65120],`disallowed_STD3_mapped`,[38]],[[65121,65121],`disallowed_STD3_mapped`,[42]],[[65122,65122],`disallowed_STD3_mapped`,[43]],[[65123,65123],`mapped`,[45]],[[65124,65124],`disallowed_STD3_mapped`,[60]],[[65125,65125],`disallowed_STD3_mapped`,[62]],[[65126,65126],`disallowed_STD3_mapped`,[61]],[[65127,65127],`disallowed`],[[65128,65128],`disallowed_STD3_mapped`,[92]],[[65129,65129],`disallowed_STD3_mapped`,[36]],[[65130,65130],`disallowed_STD3_mapped`,[37]],[[65131,65131],`disallowed_STD3_mapped`,[64]],[[65132,65135],`disallowed`],[[65136,65136],`disallowed_STD3_mapped`,[32,1611]],[[65137,65137],`mapped`,[1600,1611]],[[65138,65138],`disallowed_STD3_mapped`,[32,1612]],[[65139,65139],`valid`],[[65140,65140],`disallowed_STD3_mapped`,[32,1613]],[[65141,65141],`disallowed`],[[65142,65142],`disallowed_STD3_mapped`,[32,1614]],[[65143,65143],`mapped`,[1600,1614]],[[65144,65144],`disallowed_STD3_mapped`,[32,1615]],[[65145,65145],`mapped`,[1600,1615]],[[65146,65146],`disallowed_STD3_mapped`,[32,1616]],[[65147,65147],`mapped`,[1600,1616]],[[65148,65148],`disallowed_STD3_mapped`,[32,1617]],[[65149,65149],`mapped`,[1600,1617]],[[65150,65150],`disallowed_STD3_mapped`,[32,1618]],[[65151,65151],`mapped`,[1600,1618]],[[65152,65152],`mapped`,[1569]],[[65153,65154],`mapped`,[1570]],[[65155,65156],`mapped`,[1571]],[[65157,65158],`mapped`,[1572]],[[65159,65160],`mapped`,[1573]],[[65161,65164],`mapped`,[1574]],[[65165,65166],`mapped`,[1575]],[[65167,65170],`mapped`,[1576]],[[65171,65172],`mapped`,[1577]],[[65173,65176],`mapped`,[1578]],[[65177,65180],`mapped`,[1579]],[[65181,65184],`mapped`,[1580]],[[65185,65188],`mapped`,[1581]],[[65189,65192],`mapped`,[1582]],[[65193,65194],`mapped`,[1583]],[[65195,65196],`mapped`,[1584]],[[65197,65198],`mapped`,[1585]],[[65199,65200],`mapped`,[1586]],[[65201,65204],`mapped`,[1587]],[[65205,65208],`mapped`,[1588]],[[65209,65212],`mapped`,[1589]],[[65213,65216],`mapped`,[1590]],[[65217,65220],`mapped`,[1591]],[[65221,65224],`mapped`,[1592]],[[65225,65228],`mapped`,[1593]],[[65229,65232],`mapped`,[1594]],[[65233,65236],`mapped`,[1601]],[[65237,65240],`mapped`,[1602]],[[65241,65244],`mapped`,[1603]],[[65245,65248],`mapped`,[1604]],[[65249,65252],`mapped`,[1605]],[[65253,65256],`mapped`,[1606]],[[65257,65260],`mapped`,[1607]],[[65261,65262],`mapped`,[1608]],[[65263,65264],`mapped`,[1609]],[[65265,65268],`mapped`,[1610]],[[65269,65270],`mapped`,[1604,1570]],[[65271,65272],`mapped`,[1604,1571]],[[65273,65274],`mapped`,[1604,1573]],[[65275,65276],`mapped`,[1604,1575]],[[65277,65278],`disallowed`],[[65279,65279],`ignored`],[[65280,65280],`disallowed`],[[65281,65281],`disallowed_STD3_mapped`,[33]],[[65282,65282],`disallowed_STD3_mapped`,[34]],[[65283,65283],`disallowed_STD3_mapped`,[35]],[[65284,65284],`disallowed_STD3_mapped`,[36]],[[65285,65285],`disallowed_STD3_mapped`,[37]],[[65286,65286],`disallowed_STD3_mapped`,[38]],[[65287,65287],`disallowed_STD3_mapped`,[39]],[[65288,65288],`disallowed_STD3_mapped`,[40]],[[65289,65289],`disallowed_STD3_mapped`,[41]],[[65290,65290],`disallowed_STD3_mapped`,[42]],[[65291,65291],`disallowed_STD3_mapped`,[43]],[[65292,65292],`disallowed_STD3_mapped`,[44]],[[65293,65293],`mapped`,[45]],[[65294,65294],`mapped`,[46]],[[65295,65295],`disallowed_STD3_mapped`,[47]],[[65296,65296],`mapped`,[48]],[[65297,65297],`mapped`,[49]],[[65298,65298],`mapped`,[50]],[[65299,65299],`mapped`,[51]],[[65300,65300],`mapped`,[52]],[[65301,65301],`mapped`,[53]],[[65302,65302],`mapped`,[54]],[[65303,65303],`mapped`,[55]],[[65304,65304],`mapped`,[56]],[[65305,65305],`mapped`,[57]],[[65306,65306],`disallowed_STD3_mapped`,[58]],[[65307,65307],`disallowed_STD3_mapped`,[59]],[[65308,65308],`disallowed_STD3_mapped`,[60]],[[65309,65309],`disallowed_STD3_mapped`,[61]],[[65310,65310],`disallowed_STD3_mapped`,[62]],[[65311,65311],`disallowed_STD3_mapped`,[63]],[[65312,65312],`disallowed_STD3_mapped`,[64]],[[65313,65313],`mapped`,[97]],[[65314,65314],`mapped`,[98]],[[65315,65315],`mapped`,[99]],[[65316,65316],`mapped`,[100]],[[65317,65317],`mapped`,[101]],[[65318,65318],`mapped`,[102]],[[65319,65319],`mapped`,[103]],[[65320,65320],`mapped`,[104]],[[65321,65321],`mapped`,[105]],[[65322,65322],`mapped`,[106]],[[65323,65323],`mapped`,[107]],[[65324,65324],`mapped`,[108]],[[65325,65325],`mapped`,[109]],[[65326,65326],`mapped`,[110]],[[65327,65327],`mapped`,[111]],[[65328,65328],`mapped`,[112]],[[65329,65329],`mapped`,[113]],[[65330,65330],`mapped`,[114]],[[65331,65331],`mapped`,[115]],[[65332,65332],`mapped`,[116]],[[65333,65333],`mapped`,[117]],[[65334,65334],`mapped`,[118]],[[65335,65335],`mapped`,[119]],[[65336,65336],`mapped`,[120]],[[65337,65337],`mapped`,[121]],[[65338,65338],`mapped`,[122]],[[65339,65339],`disallowed_STD3_mapped`,[91]],[[65340,65340],`disallowed_STD3_mapped`,[92]],[[65341,65341],`disallowed_STD3_mapped`,[93]],[[65342,65342],`disallowed_STD3_mapped`,[94]],[[65343,65343],`disallowed_STD3_mapped`,[95]],[[65344,65344],`disallowed_STD3_mapped`,[96]],[[65345,65345],`mapped`,[97]],[[65346,65346],`mapped`,[98]],[[65347,65347],`mapped`,[99]],[[65348,65348],`mapped`,[100]],[[65349,65349],`mapped`,[101]],[[65350,65350],`mapped`,[102]],[[65351,65351],`mapped`,[103]],[[65352,65352],`mapped`,[104]],[[65353,65353],`mapped`,[105]],[[65354,65354],`mapped`,[106]],[[65355,65355],`mapped`,[107]],[[65356,65356],`mapped`,[108]],[[65357,65357],`mapped`,[109]],[[65358,65358],`mapped`,[110]],[[65359,65359],`mapped`,[111]],[[65360,65360],`mapped`,[112]],[[65361,65361],`mapped`,[113]],[[65362,65362],`mapped`,[114]],[[65363,65363],`mapped`,[115]],[[65364,65364],`mapped`,[116]],[[65365,65365],`mapped`,[117]],[[65366,65366],`mapped`,[118]],[[65367,65367],`mapped`,[119]],[[65368,65368],`mapped`,[120]],[[65369,65369],`mapped`,[121]],[[65370,65370],`mapped`,[122]],[[65371,65371],`disallowed_STD3_mapped`,[123]],[[65372,65372],`disallowed_STD3_mapped`,[124]],[[65373,65373],`disallowed_STD3_mapped`,[125]],[[65374,65374],`disallowed_STD3_mapped`,[126]],[[65375,65375],`mapped`,[10629]],[[65376,65376],`mapped`,[10630]],[[65377,65377],`mapped`,[46]],[[65378,65378],`mapped`,[12300]],[[65379,65379],`mapped`,[12301]],[[65380,65380],`mapped`,[12289]],[[65381,65381],`mapped`,[12539]],[[65382,65382],`mapped`,[12530]],[[65383,65383],`mapped`,[12449]],[[65384,65384],`mapped`,[12451]],[[65385,65385],`mapped`,[12453]],[[65386,65386],`mapped`,[12455]],[[65387,65387],`mapped`,[12457]],[[65388,65388],`mapped`,[12515]],[[65389,65389],`mapped`,[12517]],[[65390,65390],`mapped`,[12519]],[[65391,65391],`mapped`,[12483]],[[65392,65392],`mapped`,[12540]],[[65393,65393],`mapped`,[12450]],[[65394,65394],`mapped`,[12452]],[[65395,65395],`mapped`,[12454]],[[65396,65396],`mapped`,[12456]],[[65397,65397],`mapped`,[12458]],[[65398,65398],`mapped`,[12459]],[[65399,65399],`mapped`,[12461]],[[65400,65400],`mapped`,[12463]],[[65401,65401],`mapped`,[12465]],[[65402,65402],`mapped`,[12467]],[[65403,65403],`mapped`,[12469]],[[65404,65404],`mapped`,[12471]],[[65405,65405],`mapped`,[12473]],[[65406,65406],`mapped`,[12475]],[[65407,65407],`mapped`,[12477]],[[65408,65408],`mapped`,[12479]],[[65409,65409],`mapped`,[12481]],[[65410,65410],`mapped`,[12484]],[[65411,65411],`mapped`,[12486]],[[65412,65412],`mapped`,[12488]],[[65413,65413],`mapped`,[12490]],[[65414,65414],`mapped`,[12491]],[[65415,65415],`mapped`,[12492]],[[65416,65416],`mapped`,[12493]],[[65417,65417],`mapped`,[12494]],[[65418,65418],`mapped`,[12495]],[[65419,65419],`mapped`,[12498]],[[65420,65420],`mapped`,[12501]],[[65421,65421],`mapped`,[12504]],[[65422,65422],`mapped`,[12507]],[[65423,65423],`mapped`,[12510]],[[65424,65424],`mapped`,[12511]],[[65425,65425],`mapped`,[12512]],[[65426,65426],`mapped`,[12513]],[[65427,65427],`mapped`,[12514]],[[65428,65428],`mapped`,[12516]],[[65429,65429],`mapped`,[12518]],[[65430,65430],`mapped`,[12520]],[[65431,65431],`mapped`,[12521]],[[65432,65432],`mapped`,[12522]],[[65433,65433],`mapped`,[12523]],[[65434,65434],`mapped`,[12524]],[[65435,65435],`mapped`,[12525]],[[65436,65436],`mapped`,[12527]],[[65437,65437],`mapped`,[12531]],[[65438,65438],`mapped`,[12441]],[[65439,65439],`mapped`,[12442]],[[65440,65440],`disallowed`],[[65441,65441],`mapped`,[4352]],[[65442,65442],`mapped`,[4353]],[[65443,65443],`mapped`,[4522]],[[65444,65444],`mapped`,[4354]],[[65445,65445],`mapped`,[4524]],[[65446,65446],`mapped`,[4525]],[[65447,65447],`mapped`,[4355]],[[65448,65448],`mapped`,[4356]],[[65449,65449],`mapped`,[4357]],[[65450,65450],`mapped`,[4528]],[[65451,65451],`mapped`,[4529]],[[65452,65452],`mapped`,[4530]],[[65453,65453],`mapped`,[4531]],[[65454,65454],`mapped`,[4532]],[[65455,65455],`mapped`,[4533]],[[65456,65456],`mapped`,[4378]],[[65457,65457],`mapped`,[4358]],[[65458,65458],`mapped`,[4359]],[[65459,65459],`mapped`,[4360]],[[65460,65460],`mapped`,[4385]],[[65461,65461],`mapped`,[4361]],[[65462,65462],`mapped`,[4362]],[[65463,65463],`mapped`,[4363]],[[65464,65464],`mapped`,[4364]],[[65465,65465],`mapped`,[4365]],[[65466,65466],`mapped`,[4366]],[[65467,65467],`mapped`,[4367]],[[65468,65468],`mapped`,[4368]],[[65469,65469],`mapped`,[4369]],[[65470,65470],`mapped`,[4370]],[[65471,65473],`disallowed`],[[65474,65474],`mapped`,[4449]],[[65475,65475],`mapped`,[4450]],[[65476,65476],`mapped`,[4451]],[[65477,65477],`mapped`,[4452]],[[65478,65478],`mapped`,[4453]],[[65479,65479],`mapped`,[4454]],[[65480,65481],`disallowed`],[[65482,65482],`mapped`,[4455]],[[65483,65483],`mapped`,[4456]],[[65484,65484],`mapped`,[4457]],[[65485,65485],`mapped`,[4458]],[[65486,65486],`mapped`,[4459]],[[65487,65487],`mapped`,[4460]],[[65488,65489],`disallowed`],[[65490,65490],`mapped`,[4461]],[[65491,65491],`mapped`,[4462]],[[65492,65492],`mapped`,[4463]],[[65493,65493],`mapped`,[4464]],[[65494,65494],`mapped`,[4465]],[[65495,65495],`mapped`,[4466]],[[65496,65497],`disallowed`],[[65498,65498],`mapped`,[4467]],[[65499,65499],`mapped`,[4468]],[[65500,65500],`mapped`,[4469]],[[65501,65503],`disallowed`],[[65504,65504],`mapped`,[162]],[[65505,65505],`mapped`,[163]],[[65506,65506],`mapped`,[172]],[[65507,65507],`disallowed_STD3_mapped`,[32,772]],[[65508,65508],`mapped`,[166]],[[65509,65509],`mapped`,[165]],[[65510,65510],`mapped`,[8361]],[[65511,65511],`disallowed`],[[65512,65512],`mapped`,[9474]],[[65513,65513],`mapped`,[8592]],[[65514,65514],`mapped`,[8593]],[[65515,65515],`mapped`,[8594]],[[65516,65516],`mapped`,[8595]],[[65517,65517],`mapped`,[9632]],[[65518,65518],`mapped`,[9675]],[[65519,65528],`disallowed`],[[65529,65531],`disallowed`],[[65532,65532],`disallowed`],[[65533,65533],`disallowed`],[[65534,65535],`disallowed`],[[65536,65547],`valid`],[[65548,65548],`disallowed`],[[65549,65574],`valid`],[[65575,65575],`disallowed`],[[65576,65594],`valid`],[[65595,65595],`disallowed`],[[65596,65597],`valid`],[[65598,65598],`disallowed`],[[65599,65613],`valid`],[[65614,65615],`disallowed`],[[65616,65629],`valid`],[[65630,65663],`disallowed`],[[65664,65786],`valid`],[[65787,65791],`disallowed`],[[65792,65794],`valid`,[],`NV8`],[[65795,65798],`disallowed`],[[65799,65843],`valid`,[],`NV8`],[[65844,65846],`disallowed`],[[65847,65855],`valid`,[],`NV8`],[[65856,65930],`valid`,[],`NV8`],[[65931,65932],`valid`,[],`NV8`],[[65933,65935],`disallowed`],[[65936,65947],`valid`,[],`NV8`],[[65948,65951],`disallowed`],[[65952,65952],`valid`,[],`NV8`],[[65953,65999],`disallowed`],[[66e3,66044],`valid`,[],`NV8`],[[66045,66045],`valid`],[[66046,66175],`disallowed`],[[66176,66204],`valid`],[[66205,66207],`disallowed`],[[66208,66256],`valid`],[[66257,66271],`disallowed`],[[66272,66272],`valid`],[[66273,66299],`valid`,[],`NV8`],[[66300,66303],`disallowed`],[[66304,66334],`valid`],[[66335,66335],`valid`],[[66336,66339],`valid`,[],`NV8`],[[66340,66351],`disallowed`],[[66352,66368],`valid`],[[66369,66369],`valid`,[],`NV8`],[[66370,66377],`valid`],[[66378,66378],`valid`,[],`NV8`],[[66379,66383],`disallowed`],[[66384,66426],`valid`],[[66427,66431],`disallowed`],[[66432,66461],`valid`],[[66462,66462],`disallowed`],[[66463,66463],`valid`,[],`NV8`],[[66464,66499],`valid`],[[66500,66503],`disallowed`],[[66504,66511],`valid`],[[66512,66517],`valid`,[],`NV8`],[[66518,66559],`disallowed`],[[66560,66560],`mapped`,[66600]],[[66561,66561],`mapped`,[66601]],[[66562,66562],`mapped`,[66602]],[[66563,66563],`mapped`,[66603]],[[66564,66564],`mapped`,[66604]],[[66565,66565],`mapped`,[66605]],[[66566,66566],`mapped`,[66606]],[[66567,66567],`mapped`,[66607]],[[66568,66568],`mapped`,[66608]],[[66569,66569],`mapped`,[66609]],[[66570,66570],`mapped`,[66610]],[[66571,66571],`mapped`,[66611]],[[66572,66572],`mapped`,[66612]],[[66573,66573],`mapped`,[66613]],[[66574,66574],`mapped`,[66614]],[[66575,66575],`mapped`,[66615]],[[66576,66576],`mapped`,[66616]],[[66577,66577],`mapped`,[66617]],[[66578,66578],`mapped`,[66618]],[[66579,66579],`mapped`,[66619]],[[66580,66580],`mapped`,[66620]],[[66581,66581],`mapped`,[66621]],[[66582,66582],`mapped`,[66622]],[[66583,66583],`mapped`,[66623]],[[66584,66584],`mapped`,[66624]],[[66585,66585],`mapped`,[66625]],[[66586,66586],`mapped`,[66626]],[[66587,66587],`mapped`,[66627]],[[66588,66588],`mapped`,[66628]],[[66589,66589],`mapped`,[66629]],[[66590,66590],`mapped`,[66630]],[[66591,66591],`mapped`,[66631]],[[66592,66592],`mapped`,[66632]],[[66593,66593],`mapped`,[66633]],[[66594,66594],`mapped`,[66634]],[[66595,66595],`mapped`,[66635]],[[66596,66596],`mapped`,[66636]],[[66597,66597],`mapped`,[66637]],[[66598,66598],`mapped`,[66638]],[[66599,66599],`mapped`,[66639]],[[66600,66637],`valid`],[[66638,66717],`valid`],[[66718,66719],`disallowed`],[[66720,66729],`valid`],[[66730,66815],`disallowed`],[[66816,66855],`valid`],[[66856,66863],`disallowed`],[[66864,66915],`valid`],[[66916,66926],`disallowed`],[[66927,66927],`valid`,[],`NV8`],[[66928,67071],`disallowed`],[[67072,67382],`valid`],[[67383,67391],`disallowed`],[[67392,67413],`valid`],[[67414,67423],`disallowed`],[[67424,67431],`valid`],[[67432,67583],`disallowed`],[[67584,67589],`valid`],[[67590,67591],`disallowed`],[[67592,67592],`valid`],[[67593,67593],`disallowed`],[[67594,67637],`valid`],[[67638,67638],`disallowed`],[[67639,67640],`valid`],[[67641,67643],`disallowed`],[[67644,67644],`valid`],[[67645,67646],`disallowed`],[[67647,67647],`valid`],[[67648,67669],`valid`],[[67670,67670],`disallowed`],[[67671,67679],`valid`,[],`NV8`],[[67680,67702],`valid`],[[67703,67711],`valid`,[],`NV8`],[[67712,67742],`valid`],[[67743,67750],`disallowed`],[[67751,67759],`valid`,[],`NV8`],[[67760,67807],`disallowed`],[[67808,67826],`valid`],[[67827,67827],`disallowed`],[[67828,67829],`valid`],[[67830,67834],`disallowed`],[[67835,67839],`valid`,[],`NV8`],[[67840,67861],`valid`],[[67862,67865],`valid`,[],`NV8`],[[67866,67867],`valid`,[],`NV8`],[[67868,67870],`disallowed`],[[67871,67871],`valid`,[],`NV8`],[[67872,67897],`valid`],[[67898,67902],`disallowed`],[[67903,67903],`valid`,[],`NV8`],[[67904,67967],`disallowed`],[[67968,68023],`valid`],[[68024,68027],`disallowed`],[[68028,68029],`valid`,[],`NV8`],[[68030,68031],`valid`],[[68032,68047],`valid`,[],`NV8`],[[68048,68049],`disallowed`],[[68050,68095],`valid`,[],`NV8`],[[68096,68099],`valid`],[[68100,68100],`disallowed`],[[68101,68102],`valid`],[[68103,68107],`disallowed`],[[68108,68115],`valid`],[[68116,68116],`disallowed`],[[68117,68119],`valid`],[[68120,68120],`disallowed`],[[68121,68147],`valid`],[[68148,68151],`disallowed`],[[68152,68154],`valid`],[[68155,68158],`disallowed`],[[68159,68159],`valid`],[[68160,68167],`valid`,[],`NV8`],[[68168,68175],`disallowed`],[[68176,68184],`valid`,[],`NV8`],[[68185,68191],`disallowed`],[[68192,68220],`valid`],[[68221,68223],`valid`,[],`NV8`],[[68224,68252],`valid`],[[68253,68255],`valid`,[],`NV8`],[[68256,68287],`disallowed`],[[68288,68295],`valid`],[[68296,68296],`valid`,[],`NV8`],[[68297,68326],`valid`],[[68327,68330],`disallowed`],[[68331,68342],`valid`,[],`NV8`],[[68343,68351],`disallowed`],[[68352,68405],`valid`],[[68406,68408],`disallowed`],[[68409,68415],`valid`,[],`NV8`],[[68416,68437],`valid`],[[68438,68439],`disallowed`],[[68440,68447],`valid`,[],`NV8`],[[68448,68466],`valid`],[[68467,68471],`disallowed`],[[68472,68479],`valid`,[],`NV8`],[[68480,68497],`valid`],[[68498,68504],`disallowed`],[[68505,68508],`valid`,[],`NV8`],[[68509,68520],`disallowed`],[[68521,68527],`valid`,[],`NV8`],[[68528,68607],`disallowed`],[[68608,68680],`valid`],[[68681,68735],`disallowed`],[[68736,68736],`mapped`,[68800]],[[68737,68737],`mapped`,[68801]],[[68738,68738],`mapped`,[68802]],[[68739,68739],`mapped`,[68803]],[[68740,68740],`mapped`,[68804]],[[68741,68741],`mapped`,[68805]],[[68742,68742],`mapped`,[68806]],[[68743,68743],`mapped`,[68807]],[[68744,68744],`mapped`,[68808]],[[68745,68745],`mapped`,[68809]],[[68746,68746],`mapped`,[68810]],[[68747,68747],`mapped`,[68811]],[[68748,68748],`mapped`,[68812]],[[68749,68749],`mapped`,[68813]],[[68750,68750],`mapped`,[68814]],[[68751,68751],`mapped`,[68815]],[[68752,68752],`mapped`,[68816]],[[68753,68753],`mapped`,[68817]],[[68754,68754],`mapped`,[68818]],[[68755,68755],`mapped`,[68819]],[[68756,68756],`mapped`,[68820]],[[68757,68757],`mapped`,[68821]],[[68758,68758],`mapped`,[68822]],[[68759,68759],`mapped`,[68823]],[[68760,68760],`mapped`,[68824]],[[68761,68761],`mapped`,[68825]],[[68762,68762],`mapped`,[68826]],[[68763,68763],`mapped`,[68827]],[[68764,68764],`mapped`,[68828]],[[68765,68765],`mapped`,[68829]],[[68766,68766],`mapped`,[68830]],[[68767,68767],`mapped`,[68831]],[[68768,68768],`mapped`,[68832]],[[68769,68769],`mapped`,[68833]],[[68770,68770],`mapped`,[68834]],[[68771,68771],`mapped`,[68835]],[[68772,68772],`mapped`,[68836]],[[68773,68773],`mapped`,[68837]],[[68774,68774],`mapped`,[68838]],[[68775,68775],`mapped`,[68839]],[[68776,68776],`mapped`,[68840]],[[68777,68777],`mapped`,[68841]],[[68778,68778],`mapped`,[68842]],[[68779,68779],`mapped`,[68843]],[[68780,68780],`mapped`,[68844]],[[68781,68781],`mapped`,[68845]],[[68782,68782],`mapped`,[68846]],[[68783,68783],`mapped`,[68847]],[[68784,68784],`mapped`,[68848]],[[68785,68785],`mapped`,[68849]],[[68786,68786],`mapped`,[68850]],[[68787,68799],`disallowed`],[[68800,68850],`valid`],[[68851,68857],`disallowed`],[[68858,68863],`valid`,[],`NV8`],[[68864,69215],`disallowed`],[[69216,69246],`valid`,[],`NV8`],[[69247,69631],`disallowed`],[[69632,69702],`valid`],[[69703,69709],`valid`,[],`NV8`],[[69710,69713],`disallowed`],[[69714,69733],`valid`,[],`NV8`],[[69734,69743],`valid`],[[69744,69758],`disallowed`],[[69759,69759],`valid`],[[69760,69818],`valid`],[[69819,69820],`valid`,[],`NV8`],[[69821,69821],`disallowed`],[[69822,69825],`valid`,[],`NV8`],[[69826,69839],`disallowed`],[[69840,69864],`valid`],[[69865,69871],`disallowed`],[[69872,69881],`valid`],[[69882,69887],`disallowed`],[[69888,69940],`valid`],[[69941,69941],`disallowed`],[[69942,69951],`valid`],[[69952,69955],`valid`,[],`NV8`],[[69956,69967],`disallowed`],[[69968,70003],`valid`],[[70004,70005],`valid`,[],`NV8`],[[70006,70006],`valid`],[[70007,70015],`disallowed`],[[70016,70084],`valid`],[[70085,70088],`valid`,[],`NV8`],[[70089,70089],`valid`,[],`NV8`],[[70090,70092],`valid`],[[70093,70093],`valid`,[],`NV8`],[[70094,70095],`disallowed`],[[70096,70105],`valid`],[[70106,70106],`valid`],[[70107,70107],`valid`,[],`NV8`],[[70108,70108],`valid`],[[70109,70111],`valid`,[],`NV8`],[[70112,70112],`disallowed`],[[70113,70132],`valid`,[],`NV8`],[[70133,70143],`disallowed`],[[70144,70161],`valid`],[[70162,70162],`disallowed`],[[70163,70199],`valid`],[[70200,70205],`valid`,[],`NV8`],[[70206,70271],`disallowed`],[[70272,70278],`valid`],[[70279,70279],`disallowed`],[[70280,70280],`valid`],[[70281,70281],`disallowed`],[[70282,70285],`valid`],[[70286,70286],`disallowed`],[[70287,70301],`valid`],[[70302,70302],`disallowed`],[[70303,70312],`valid`],[[70313,70313],`valid`,[],`NV8`],[[70314,70319],`disallowed`],[[70320,70378],`valid`],[[70379,70383],`disallowed`],[[70384,70393],`valid`],[[70394,70399],`disallowed`],[[70400,70400],`valid`],[[70401,70403],`valid`],[[70404,70404],`disallowed`],[[70405,70412],`valid`],[[70413,70414],`disallowed`],[[70415,70416],`valid`],[[70417,70418],`disallowed`],[[70419,70440],`valid`],[[70441,70441],`disallowed`],[[70442,70448],`valid`],[[70449,70449],`disallowed`],[[70450,70451],`valid`],[[70452,70452],`disallowed`],[[70453,70457],`valid`],[[70458,70459],`disallowed`],[[70460,70468],`valid`],[[70469,70470],`disallowed`],[[70471,70472],`valid`],[[70473,70474],`disallowed`],[[70475,70477],`valid`],[[70478,70479],`disallowed`],[[70480,70480],`valid`],[[70481,70486],`disallowed`],[[70487,70487],`valid`],[[70488,70492],`disallowed`],[[70493,70499],`valid`],[[70500,70501],`disallowed`],[[70502,70508],`valid`],[[70509,70511],`disallowed`],[[70512,70516],`valid`],[[70517,70783],`disallowed`],[[70784,70853],`valid`],[[70854,70854],`valid`,[],`NV8`],[[70855,70855],`valid`],[[70856,70863],`disallowed`],[[70864,70873],`valid`],[[70874,71039],`disallowed`],[[71040,71093],`valid`],[[71094,71095],`disallowed`],[[71096,71104],`valid`],[[71105,71113],`valid`,[],`NV8`],[[71114,71127],`valid`,[],`NV8`],[[71128,71133],`valid`],[[71134,71167],`disallowed`],[[71168,71232],`valid`],[[71233,71235],`valid`,[],`NV8`],[[71236,71236],`valid`],[[71237,71247],`disallowed`],[[71248,71257],`valid`],[[71258,71295],`disallowed`],[[71296,71351],`valid`],[[71352,71359],`disallowed`],[[71360,71369],`valid`],[[71370,71423],`disallowed`],[[71424,71449],`valid`],[[71450,71452],`disallowed`],[[71453,71467],`valid`],[[71468,71471],`disallowed`],[[71472,71481],`valid`],[[71482,71487],`valid`,[],`NV8`],[[71488,71839],`disallowed`],[[71840,71840],`mapped`,[71872]],[[71841,71841],`mapped`,[71873]],[[71842,71842],`mapped`,[71874]],[[71843,71843],`mapped`,[71875]],[[71844,71844],`mapped`,[71876]],[[71845,71845],`mapped`,[71877]],[[71846,71846],`mapped`,[71878]],[[71847,71847],`mapped`,[71879]],[[71848,71848],`mapped`,[71880]],[[71849,71849],`mapped`,[71881]],[[71850,71850],`mapped`,[71882]],[[71851,71851],`mapped`,[71883]],[[71852,71852],`mapped`,[71884]],[[71853,71853],`mapped`,[71885]],[[71854,71854],`mapped`,[71886]],[[71855,71855],`mapped`,[71887]],[[71856,71856],`mapped`,[71888]],[[71857,71857],`mapped`,[71889]],[[71858,71858],`mapped`,[71890]],[[71859,71859],`mapped`,[71891]],[[71860,71860],`mapped`,[71892]],[[71861,71861],`mapped`,[71893]],[[71862,71862],`mapped`,[71894]],[[71863,71863],`mapped`,[71895]],[[71864,71864],`mapped`,[71896]],[[71865,71865],`mapped`,[71897]],[[71866,71866],`mapped`,[71898]],[[71867,71867],`mapped`,[71899]],[[71868,71868],`mapped`,[71900]],[[71869,71869],`mapped`,[71901]],[[71870,71870],`mapped`,[71902]],[[71871,71871],`mapped`,[71903]],[[71872,71913],`valid`],[[71914,71922],`valid`,[],`NV8`],[[71923,71934],`disallowed`],[[71935,71935],`valid`],[[71936,72383],`disallowed`],[[72384,72440],`valid`],[[72441,73727],`disallowed`],[[73728,74606],`valid`],[[74607,74648],`valid`],[[74649,74649],`valid`],[[74650,74751],`disallowed`],[[74752,74850],`valid`,[],`NV8`],[[74851,74862],`valid`,[],`NV8`],[[74863,74863],`disallowed`],[[74864,74867],`valid`,[],`NV8`],[[74868,74868],`valid`,[],`NV8`],[[74869,74879],`disallowed`],[[74880,75075],`valid`],[[75076,77823],`disallowed`],[[77824,78894],`valid`],[[78895,82943],`disallowed`],[[82944,83526],`valid`],[[83527,92159],`disallowed`],[[92160,92728],`valid`],[[92729,92735],`disallowed`],[[92736,92766],`valid`],[[92767,92767],`disallowed`],[[92768,92777],`valid`],[[92778,92781],`disallowed`],[[92782,92783],`valid`,[],`NV8`],[[92784,92879],`disallowed`],[[92880,92909],`valid`],[[92910,92911],`disallowed`],[[92912,92916],`valid`],[[92917,92917],`valid`,[],`NV8`],[[92918,92927],`disallowed`],[[92928,92982],`valid`],[[92983,92991],`valid`,[],`NV8`],[[92992,92995],`valid`],[[92996,92997],`valid`,[],`NV8`],[[92998,93007],`disallowed`],[[93008,93017],`valid`],[[93018,93018],`disallowed`],[[93019,93025],`valid`,[],`NV8`],[[93026,93026],`disallowed`],[[93027,93047],`valid`],[[93048,93052],`disallowed`],[[93053,93071],`valid`],[[93072,93951],`disallowed`],[[93952,94020],`valid`],[[94021,94031],`disallowed`],[[94032,94078],`valid`],[[94079,94094],`disallowed`],[[94095,94111],`valid`],[[94112,110591],`disallowed`],[[110592,110593],`valid`],[[110594,113663],`disallowed`],[[113664,113770],`valid`],[[113771,113775],`disallowed`],[[113776,113788],`valid`],[[113789,113791],`disallowed`],[[113792,113800],`valid`],[[113801,113807],`disallowed`],[[113808,113817],`valid`],[[113818,113819],`disallowed`],[[113820,113820],`valid`,[],`NV8`],[[113821,113822],`valid`],[[113823,113823],`valid`,[],`NV8`],[[113824,113827],`ignored`],[[113828,118783],`disallowed`],[[118784,119029],`valid`,[],`NV8`],[[119030,119039],`disallowed`],[[119040,119078],`valid`,[],`NV8`],[[119079,119080],`disallowed`],[[119081,119081],`valid`,[],`NV8`],[[119082,119133],`valid`,[],`NV8`],[[119134,119134],`mapped`,[119127,119141]],[[119135,119135],`mapped`,[119128,119141]],[[119136,119136],`mapped`,[119128,119141,119150]],[[119137,119137],`mapped`,[119128,119141,119151]],[[119138,119138],`mapped`,[119128,119141,119152]],[[119139,119139],`mapped`,[119128,119141,119153]],[[119140,119140],`mapped`,[119128,119141,119154]],[[119141,119154],`valid`,[],`NV8`],[[119155,119162],`disallowed`],[[119163,119226],`valid`,[],`NV8`],[[119227,119227],`mapped`,[119225,119141]],[[119228,119228],`mapped`,[119226,119141]],[[119229,119229],`mapped`,[119225,119141,119150]],[[119230,119230],`mapped`,[119226,119141,119150]],[[119231,119231],`mapped`,[119225,119141,119151]],[[119232,119232],`mapped`,[119226,119141,119151]],[[119233,119261],`valid`,[],`NV8`],[[119262,119272],`valid`,[],`NV8`],[[119273,119295],`disallowed`],[[119296,119365],`valid`,[],`NV8`],[[119366,119551],`disallowed`],[[119552,119638],`valid`,[],`NV8`],[[119639,119647],`disallowed`],[[119648,119665],`valid`,[],`NV8`],[[119666,119807],`disallowed`],[[119808,119808],`mapped`,[97]],[[119809,119809],`mapped`,[98]],[[119810,119810],`mapped`,[99]],[[119811,119811],`mapped`,[100]],[[119812,119812],`mapped`,[101]],[[119813,119813],`mapped`,[102]],[[119814,119814],`mapped`,[103]],[[119815,119815],`mapped`,[104]],[[119816,119816],`mapped`,[105]],[[119817,119817],`mapped`,[106]],[[119818,119818],`mapped`,[107]],[[119819,119819],`mapped`,[108]],[[119820,119820],`mapped`,[109]],[[119821,119821],`mapped`,[110]],[[119822,119822],`mapped`,[111]],[[119823,119823],`mapped`,[112]],[[119824,119824],`mapped`,[113]],[[119825,119825],`mapped`,[114]],[[119826,119826],`mapped`,[115]],[[119827,119827],`mapped`,[116]],[[119828,119828],`mapped`,[117]],[[119829,119829],`mapped`,[118]],[[119830,119830],`mapped`,[119]],[[119831,119831],`mapped`,[120]],[[119832,119832],`mapped`,[121]],[[119833,119833],`mapped`,[122]],[[119834,119834],`mapped`,[97]],[[119835,119835],`mapped`,[98]],[[119836,119836],`mapped`,[99]],[[119837,119837],`mapped`,[100]],[[119838,119838],`mapped`,[101]],[[119839,119839],`mapped`,[102]],[[119840,119840],`mapped`,[103]],[[119841,119841],`mapped`,[104]],[[119842,119842],`mapped`,[105]],[[119843,119843],`mapped`,[106]],[[119844,119844],`mapped`,[107]],[[119845,119845],`mapped`,[108]],[[119846,119846],`mapped`,[109]],[[119847,119847],`mapped`,[110]],[[119848,119848],`mapped`,[111]],[[119849,119849],`mapped`,[112]],[[119850,119850],`mapped`,[113]],[[119851,119851],`mapped`,[114]],[[119852,119852],`mapped`,[115]],[[119853,119853],`mapped`,[116]],[[119854,119854],`mapped`,[117]],[[119855,119855],`mapped`,[118]],[[119856,119856],`mapped`,[119]],[[119857,119857],`mapped`,[120]],[[119858,119858],`mapped`,[121]],[[119859,119859],`mapped`,[122]],[[119860,119860],`mapped`,[97]],[[119861,119861],`mapped`,[98]],[[119862,119862],`mapped`,[99]],[[119863,119863],`mapped`,[100]],[[119864,119864],`mapped`,[101]],[[119865,119865],`mapped`,[102]],[[119866,119866],`mapped`,[103]],[[119867,119867],`mapped`,[104]],[[119868,119868],`mapped`,[105]],[[119869,119869],`mapped`,[106]],[[119870,119870],`mapped`,[107]],[[119871,119871],`mapped`,[108]],[[119872,119872],`mapped`,[109]],[[119873,119873],`mapped`,[110]],[[119874,119874],`mapped`,[111]],[[119875,119875],`mapped`,[112]],[[119876,119876],`mapped`,[113]],[[119877,119877],`mapped`,[114]],[[119878,119878],`mapped`,[115]],[[119879,119879],`mapped`,[116]],[[119880,119880],`mapped`,[117]],[[119881,119881],`mapped`,[118]],[[119882,119882],`mapped`,[119]],[[119883,119883],`mapped`,[120]],[[119884,119884],`mapped`,[121]],[[119885,119885],`mapped`,[122]],[[119886,119886],`mapped`,[97]],[[119887,119887],`mapped`,[98]],[[119888,119888],`mapped`,[99]],[[119889,119889],`mapped`,[100]],[[119890,119890],`mapped`,[101]],[[119891,119891],`mapped`,[102]],[[119892,119892],`mapped`,[103]],[[119893,119893],`disallowed`],[[119894,119894],`mapped`,[105]],[[119895,119895],`mapped`,[106]],[[119896,119896],`mapped`,[107]],[[119897,119897],`mapped`,[108]],[[119898,119898],`mapped`,[109]],[[119899,119899],`mapped`,[110]],[[119900,119900],`mapped`,[111]],[[119901,119901],`mapped`,[112]],[[119902,119902],`mapped`,[113]],[[119903,119903],`mapped`,[114]],[[119904,119904],`mapped`,[115]],[[119905,119905],`mapped`,[116]],[[119906,119906],`mapped`,[117]],[[119907,119907],`mapped`,[118]],[[119908,119908],`mapped`,[119]],[[119909,119909],`mapped`,[120]],[[119910,119910],`mapped`,[121]],[[119911,119911],`mapped`,[122]],[[119912,119912],`mapped`,[97]],[[119913,119913],`mapped`,[98]],[[119914,119914],`mapped`,[99]],[[119915,119915],`mapped`,[100]],[[119916,119916],`mapped`,[101]],[[119917,119917],`mapped`,[102]],[[119918,119918],`mapped`,[103]],[[119919,119919],`mapped`,[104]],[[119920,119920],`mapped`,[105]],[[119921,119921],`mapped`,[106]],[[119922,119922],`mapped`,[107]],[[119923,119923],`mapped`,[108]],[[119924,119924],`mapped`,[109]],[[119925,119925],`mapped`,[110]],[[119926,119926],`mapped`,[111]],[[119927,119927],`mapped`,[112]],[[119928,119928],`mapped`,[113]],[[119929,119929],`mapped`,[114]],[[119930,119930],`mapped`,[115]],[[119931,119931],`mapped`,[116]],[[119932,119932],`mapped`,[117]],[[119933,119933],`mapped`,[118]],[[119934,119934],`mapped`,[119]],[[119935,119935],`mapped`,[120]],[[119936,119936],`mapped`,[121]],[[119937,119937],`mapped`,[122]],[[119938,119938],`mapped`,[97]],[[119939,119939],`mapped`,[98]],[[119940,119940],`mapped`,[99]],[[119941,119941],`mapped`,[100]],[[119942,119942],`mapped`,[101]],[[119943,119943],`mapped`,[102]],[[119944,119944],`mapped`,[103]],[[119945,119945],`mapped`,[104]],[[119946,119946],`mapped`,[105]],[[119947,119947],`mapped`,[106]],[[119948,119948],`mapped`,[107]],[[119949,119949],`mapped`,[108]],[[119950,119950],`mapped`,[109]],[[119951,119951],`mapped`,[110]],[[119952,119952],`mapped`,[111]],[[119953,119953],`mapped`,[112]],[[119954,119954],`mapped`,[113]],[[119955,119955],`mapped`,[114]],[[119956,119956],`mapped`,[115]],[[119957,119957],`mapped`,[116]],[[119958,119958],`mapped`,[117]],[[119959,119959],`mapped`,[118]],[[119960,119960],`mapped`,[119]],[[119961,119961],`mapped`,[120]],[[119962,119962],`mapped`,[121]],[[119963,119963],`mapped`,[122]],[[119964,119964],`mapped`,[97]],[[119965,119965],`disallowed`],[[119966,119966],`mapped`,[99]],[[119967,119967],`mapped`,[100]],[[119968,119969],`disallowed`],[[119970,119970],`mapped`,[103]],[[119971,119972],`disallowed`],[[119973,119973],`mapped`,[106]],[[119974,119974],`mapped`,[107]],[[119975,119976],`disallowed`],[[119977,119977],`mapped`,[110]],[[119978,119978],`mapped`,[111]],[[119979,119979],`mapped`,[112]],[[119980,119980],`mapped`,[113]],[[119981,119981],`disallowed`],[[119982,119982],`mapped`,[115]],[[119983,119983],`mapped`,[116]],[[119984,119984],`mapped`,[117]],[[119985,119985],`mapped`,[118]],[[119986,119986],`mapped`,[119]],[[119987,119987],`mapped`,[120]],[[119988,119988],`mapped`,[121]],[[119989,119989],`mapped`,[122]],[[119990,119990],`mapped`,[97]],[[119991,119991],`mapped`,[98]],[[119992,119992],`mapped`,[99]],[[119993,119993],`mapped`,[100]],[[119994,119994],`disallowed`],[[119995,119995],`mapped`,[102]],[[119996,119996],`disallowed`],[[119997,119997],`mapped`,[104]],[[119998,119998],`mapped`,[105]],[[119999,119999],`mapped`,[106]],[[12e4,12e4],`mapped`,[107]],[[120001,120001],`mapped`,[108]],[[120002,120002],`mapped`,[109]],[[120003,120003],`mapped`,[110]],[[120004,120004],`disallowed`],[[120005,120005],`mapped`,[112]],[[120006,120006],`mapped`,[113]],[[120007,120007],`mapped`,[114]],[[120008,120008],`mapped`,[115]],[[120009,120009],`mapped`,[116]],[[120010,120010],`mapped`,[117]],[[120011,120011],`mapped`,[118]],[[120012,120012],`mapped`,[119]],[[120013,120013],`mapped`,[120]],[[120014,120014],`mapped`,[121]],[[120015,120015],`mapped`,[122]],[[120016,120016],`mapped`,[97]],[[120017,120017],`mapped`,[98]],[[120018,120018],`mapped`,[99]],[[120019,120019],`mapped`,[100]],[[120020,120020],`mapped`,[101]],[[120021,120021],`mapped`,[102]],[[120022,120022],`mapped`,[103]],[[120023,120023],`mapped`,[104]],[[120024,120024],`mapped`,[105]],[[120025,120025],`mapped`,[106]],[[120026,120026],`mapped`,[107]],[[120027,120027],`mapped`,[108]],[[120028,120028],`mapped`,[109]],[[120029,120029],`mapped`,[110]],[[120030,120030],`mapped`,[111]],[[120031,120031],`mapped`,[112]],[[120032,120032],`mapped`,[113]],[[120033,120033],`mapped`,[114]],[[120034,120034],`mapped`,[115]],[[120035,120035],`mapped`,[116]],[[120036,120036],`mapped`,[117]],[[120037,120037],`mapped`,[118]],[[120038,120038],`mapped`,[119]],[[120039,120039],`mapped`,[120]],[[120040,120040],`mapped`,[121]],[[120041,120041],`mapped`,[122]],[[120042,120042],`mapped`,[97]],[[120043,120043],`mapped`,[98]],[[120044,120044],`mapped`,[99]],[[120045,120045],`mapped`,[100]],[[120046,120046],`mapped`,[101]],[[120047,120047],`mapped`,[102]],[[120048,120048],`mapped`,[103]],[[120049,120049],`mapped`,[104]],[[120050,120050],`mapped`,[105]],[[120051,120051],`mapped`,[106]],[[120052,120052],`mapped`,[107]],[[120053,120053],`mapped`,[108]],[[120054,120054],`mapped`,[109]],[[120055,120055],`mapped`,[110]],[[120056,120056],`mapped`,[111]],[[120057,120057],`mapped`,[112]],[[120058,120058],`mapped`,[113]],[[120059,120059],`mapped`,[114]],[[120060,120060],`mapped`,[115]],[[120061,120061],`mapped`,[116]],[[120062,120062],`mapped`,[117]],[[120063,120063],`mapped`,[118]],[[120064,120064],`mapped`,[119]],[[120065,120065],`mapped`,[120]],[[120066,120066],`mapped`,[121]],[[120067,120067],`mapped`,[122]],[[120068,120068],`mapped`,[97]],[[120069,120069],`mapped`,[98]],[[120070,120070],`disallowed`],[[120071,120071],`mapped`,[100]],[[120072,120072],`mapped`,[101]],[[120073,120073],`mapped`,[102]],[[120074,120074],`mapped`,[103]],[[120075,120076],`disallowed`],[[120077,120077],`mapped`,[106]],[[120078,120078],`mapped`,[107]],[[120079,120079],`mapped`,[108]],[[120080,120080],`mapped`,[109]],[[120081,120081],`mapped`,[110]],[[120082,120082],`mapped`,[111]],[[120083,120083],`mapped`,[112]],[[120084,120084],`mapped`,[113]],[[120085,120085],`disallowed`],[[120086,120086],`mapped`,[115]],[[120087,120087],`mapped`,[116]],[[120088,120088],`mapped`,[117]],[[120089,120089],`mapped`,[118]],[[120090,120090],`mapped`,[119]],[[120091,120091],`mapped`,[120]],[[120092,120092],`mapped`,[121]],[[120093,120093],`disallowed`],[[120094,120094],`mapped`,[97]],[[120095,120095],`mapped`,[98]],[[120096,120096],`mapped`,[99]],[[120097,120097],`mapped`,[100]],[[120098,120098],`mapped`,[101]],[[120099,120099],`mapped`,[102]],[[120100,120100],`mapped`,[103]],[[120101,120101],`mapped`,[104]],[[120102,120102],`mapped`,[105]],[[120103,120103],`mapped`,[106]],[[120104,120104],`mapped`,[107]],[[120105,120105],`mapped`,[108]],[[120106,120106],`mapped`,[109]],[[120107,120107],`mapped`,[110]],[[120108,120108],`mapped`,[111]],[[120109,120109],`mapped`,[112]],[[120110,120110],`mapped`,[113]],[[120111,120111],`mapped`,[114]],[[120112,120112],`mapped`,[115]],[[120113,120113],`mapped`,[116]],[[120114,120114],`mapped`,[117]],[[120115,120115],`mapped`,[118]],[[120116,120116],`mapped`,[119]],[[120117,120117],`mapped`,[120]],[[120118,120118],`mapped`,[121]],[[120119,120119],`mapped`,[122]],[[120120,120120],`mapped`,[97]],[[120121,120121],`mapped`,[98]],[[120122,120122],`disallowed`],[[120123,120123],`mapped`,[100]],[[120124,120124],`mapped`,[101]],[[120125,120125],`mapped`,[102]],[[120126,120126],`mapped`,[103]],[[120127,120127],`disallowed`],[[120128,120128],`mapped`,[105]],[[120129,120129],`mapped`,[106]],[[120130,120130],`mapped`,[107]],[[120131,120131],`mapped`,[108]],[[120132,120132],`mapped`,[109]],[[120133,120133],`disallowed`],[[120134,120134],`mapped`,[111]],[[120135,120137],`disallowed`],[[120138,120138],`mapped`,[115]],[[120139,120139],`mapped`,[116]],[[120140,120140],`mapped`,[117]],[[120141,120141],`mapped`,[118]],[[120142,120142],`mapped`,[119]],[[120143,120143],`mapped`,[120]],[[120144,120144],`mapped`,[121]],[[120145,120145],`disallowed`],[[120146,120146],`mapped`,[97]],[[120147,120147],`mapped`,[98]],[[120148,120148],`mapped`,[99]],[[120149,120149],`mapped`,[100]],[[120150,120150],`mapped`,[101]],[[120151,120151],`mapped`,[102]],[[120152,120152],`mapped`,[103]],[[120153,120153],`mapped`,[104]],[[120154,120154],`mapped`,[105]],[[120155,120155],`mapped`,[106]],[[120156,120156],`mapped`,[107]],[[120157,120157],`mapped`,[108]],[[120158,120158],`mapped`,[109]],[[120159,120159],`mapped`,[110]],[[120160,120160],`mapped`,[111]],[[120161,120161],`mapped`,[112]],[[120162,120162],`mapped`,[113]],[[120163,120163],`mapped`,[114]],[[120164,120164],`mapped`,[115]],[[120165,120165],`mapped`,[116]],[[120166,120166],`mapped`,[117]],[[120167,120167],`mapped`,[118]],[[120168,120168],`mapped`,[119]],[[120169,120169],`mapped`,[120]],[[120170,120170],`mapped`,[121]],[[120171,120171],`mapped`,[122]],[[120172,120172],`mapped`,[97]],[[120173,120173],`mapped`,[98]],[[120174,120174],`mapped`,[99]],[[120175,120175],`mapped`,[100]],[[120176,120176],`mapped`,[101]],[[120177,120177],`mapped`,[102]],[[120178,120178],`mapped`,[103]],[[120179,120179],`mapped`,[104]],[[120180,120180],`mapped`,[105]],[[120181,120181],`mapped`,[106]],[[120182,120182],`mapped`,[107]],[[120183,120183],`mapped`,[108]],[[120184,120184],`mapped`,[109]],[[120185,120185],`mapped`,[110]],[[120186,120186],`mapped`,[111]],[[120187,120187],`mapped`,[112]],[[120188,120188],`mapped`,[113]],[[120189,120189],`mapped`,[114]],[[120190,120190],`mapped`,[115]],[[120191,120191],`mapped`,[116]],[[120192,120192],`mapped`,[117]],[[120193,120193],`mapped`,[118]],[[120194,120194],`mapped`,[119]],[[120195,120195],`mapped`,[120]],[[120196,120196],`mapped`,[121]],[[120197,120197],`mapped`,[122]],[[120198,120198],`mapped`,[97]],[[120199,120199],`mapped`,[98]],[[120200,120200],`mapped`,[99]],[[120201,120201],`mapped`,[100]],[[120202,120202],`mapped`,[101]],[[120203,120203],`mapped`,[102]],[[120204,120204],`mapped`,[103]],[[120205,120205],`mapped`,[104]],[[120206,120206],`mapped`,[105]],[[120207,120207],`mapped`,[106]],[[120208,120208],`mapped`,[107]],[[120209,120209],`mapped`,[108]],[[120210,120210],`mapped`,[109]],[[120211,120211],`mapped`,[110]],[[120212,120212],`mapped`,[111]],[[120213,120213],`mapped`,[112]],[[120214,120214],`mapped`,[113]],[[120215,120215],`mapped`,[114]],[[120216,120216],`mapped`,[115]],[[120217,120217],`mapped`,[116]],[[120218,120218],`mapped`,[117]],[[120219,120219],`mapped`,[118]],[[120220,120220],`mapped`,[119]],[[120221,120221],`mapped`,[120]],[[120222,120222],`mapped`,[121]],[[120223,120223],`mapped`,[122]],[[120224,120224],`mapped`,[97]],[[120225,120225],`mapped`,[98]],[[120226,120226],`mapped`,[99]],[[120227,120227],`mapped`,[100]],[[120228,120228],`mapped`,[101]],[[120229,120229],`mapped`,[102]],[[120230,120230],`mapped`,[103]],[[120231,120231],`mapped`,[104]],[[120232,120232],`mapped`,[105]],[[120233,120233],`mapped`,[106]],[[120234,120234],`mapped`,[107]],[[120235,120235],`mapped`,[108]],[[120236,120236],`mapped`,[109]],[[120237,120237],`mapped`,[110]],[[120238,120238],`mapped`,[111]],[[120239,120239],`mapped`,[112]],[[120240,120240],`mapped`,[113]],[[120241,120241],`mapped`,[114]],[[120242,120242],`mapped`,[115]],[[120243,120243],`mapped`,[116]],[[120244,120244],`mapped`,[117]],[[120245,120245],`mapped`,[118]],[[120246,120246],`mapped`,[119]],[[120247,120247],`mapped`,[120]],[[120248,120248],`mapped`,[121]],[[120249,120249],`mapped`,[122]],[[120250,120250],`mapped`,[97]],[[120251,120251],`mapped`,[98]],[[120252,120252],`mapped`,[99]],[[120253,120253],`mapped`,[100]],[[120254,120254],`mapped`,[101]],[[120255,120255],`mapped`,[102]],[[120256,120256],`mapped`,[103]],[[120257,120257],`mapped`,[104]],[[120258,120258],`mapped`,[105]],[[120259,120259],`mapped`,[106]],[[120260,120260],`mapped`,[107]],[[120261,120261],`mapped`,[108]],[[120262,120262],`mapped`,[109]],[[120263,120263],`mapped`,[110]],[[120264,120264],`mapped`,[111]],[[120265,120265],`mapped`,[112]],[[120266,120266],`mapped`,[113]],[[120267,120267],`mapped`,[114]],[[120268,120268],`mapped`,[115]],[[120269,120269],`mapped`,[116]],[[120270,120270],`mapped`,[117]],[[120271,120271],`mapped`,[118]],[[120272,120272],`mapped`,[119]],[[120273,120273],`mapped`,[120]],[[120274,120274],`mapped`,[121]],[[120275,120275],`mapped`,[122]],[[120276,120276],`mapped`,[97]],[[120277,120277],`mapped`,[98]],[[120278,120278],`mapped`,[99]],[[120279,120279],`mapped`,[100]],[[120280,120280],`mapped`,[101]],[[120281,120281],`mapped`,[102]],[[120282,120282],`mapped`,[103]],[[120283,120283],`mapped`,[104]],[[120284,120284],`mapped`,[105]],[[120285,120285],`mapped`,[106]],[[120286,120286],`mapped`,[107]],[[120287,120287],`mapped`,[108]],[[120288,120288],`mapped`,[109]],[[120289,120289],`mapped`,[110]],[[120290,120290],`mapped`,[111]],[[120291,120291],`mapped`,[112]],[[120292,120292],`mapped`,[113]],[[120293,120293],`mapped`,[114]],[[120294,120294],`mapped`,[115]],[[120295,120295],`mapped`,[116]],[[120296,120296],`mapped`,[117]],[[120297,120297],`mapped`,[118]],[[120298,120298],`mapped`,[119]],[[120299,120299],`mapped`,[120]],[[120300,120300],`mapped`,[121]],[[120301,120301],`mapped`,[122]],[[120302,120302],`mapped`,[97]],[[120303,120303],`mapped`,[98]],[[120304,120304],`mapped`,[99]],[[120305,120305],`mapped`,[100]],[[120306,120306],`mapped`,[101]],[[120307,120307],`mapped`,[102]],[[120308,120308],`mapped`,[103]],[[120309,120309],`mapped`,[104]],[[120310,120310],`mapped`,[105]],[[120311,120311],`mapped`,[106]],[[120312,120312],`mapped`,[107]],[[120313,120313],`mapped`,[108]],[[120314,120314],`mapped`,[109]],[[120315,120315],`mapped`,[110]],[[120316,120316],`mapped`,[111]],[[120317,120317],`mapped`,[112]],[[120318,120318],`mapped`,[113]],[[120319,120319],`mapped`,[114]],[[120320,120320],`mapped`,[115]],[[120321,120321],`mapped`,[116]],[[120322,120322],`mapped`,[117]],[[120323,120323],`mapped`,[118]],[[120324,120324],`mapped`,[119]],[[120325,120325],`mapped`,[120]],[[120326,120326],`mapped`,[121]],[[120327,120327],`mapped`,[122]],[[120328,120328],`mapped`,[97]],[[120329,120329],`mapped`,[98]],[[120330,120330],`mapped`,[99]],[[120331,120331],`mapped`,[100]],[[120332,120332],`mapped`,[101]],[[120333,120333],`mapped`,[102]],[[120334,120334],`mapped`,[103]],[[120335,120335],`mapped`,[104]],[[120336,120336],`mapped`,[105]],[[120337,120337],`mapped`,[106]],[[120338,120338],`mapped`,[107]],[[120339,120339],`mapped`,[108]],[[120340,120340],`mapped`,[109]],[[120341,120341],`mapped`,[110]],[[120342,120342],`mapped`,[111]],[[120343,120343],`mapped`,[112]],[[120344,120344],`mapped`,[113]],[[120345,120345],`mapped`,[114]],[[120346,120346],`mapped`,[115]],[[120347,120347],`mapped`,[116]],[[120348,120348],`mapped`,[117]],[[120349,120349],`mapped`,[118]],[[120350,120350],`mapped`,[119]],[[120351,120351],`mapped`,[120]],[[120352,120352],`mapped`,[121]],[[120353,120353],`mapped`,[122]],[[120354,120354],`mapped`,[97]],[[120355,120355],`mapped`,[98]],[[120356,120356],`mapped`,[99]],[[120357,120357],`mapped`,[100]],[[120358,120358],`mapped`,[101]],[[120359,120359],`mapped`,[102]],[[120360,120360],`mapped`,[103]],[[120361,120361],`mapped`,[104]],[[120362,120362],`mapped`,[105]],[[120363,120363],`mapped`,[106]],[[120364,120364],`mapped`,[107]],[[120365,120365],`mapped`,[108]],[[120366,120366],`mapped`,[109]],[[120367,120367],`mapped`,[110]],[[120368,120368],`mapped`,[111]],[[120369,120369],`mapped`,[112]],[[120370,120370],`mapped`,[113]],[[120371,120371],`mapped`,[114]],[[120372,120372],`mapped`,[115]],[[120373,120373],`mapped`,[116]],[[120374,120374],`mapped`,[117]],[[120375,120375],`mapped`,[118]],[[120376,120376],`mapped`,[119]],[[120377,120377],`mapped`,[120]],[[120378,120378],`mapped`,[121]],[[120379,120379],`mapped`,[122]],[[120380,120380],`mapped`,[97]],[[120381,120381],`mapped`,[98]],[[120382,120382],`mapped`,[99]],[[120383,120383],`mapped`,[100]],[[120384,120384],`mapped`,[101]],[[120385,120385],`mapped`,[102]],[[120386,120386],`mapped`,[103]],[[120387,120387],`mapped`,[104]],[[120388,120388],`mapped`,[105]],[[120389,120389],`mapped`,[106]],[[120390,120390],`mapped`,[107]],[[120391,120391],`mapped`,[108]],[[120392,120392],`mapped`,[109]],[[120393,120393],`mapped`,[110]],[[120394,120394],`mapped`,[111]],[[120395,120395],`mapped`,[112]],[[120396,120396],`mapped`,[113]],[[120397,120397],`mapped`,[114]],[[120398,120398],`mapped`,[115]],[[120399,120399],`mapped`,[116]],[[120400,120400],`mapped`,[117]],[[120401,120401],`mapped`,[118]],[[120402,120402],`mapped`,[119]],[[120403,120403],`mapped`,[120]],[[120404,120404],`mapped`,[121]],[[120405,120405],`mapped`,[122]],[[120406,120406],`mapped`,[97]],[[120407,120407],`mapped`,[98]],[[120408,120408],`mapped`,[99]],[[120409,120409],`mapped`,[100]],[[120410,120410],`mapped`,[101]],[[120411,120411],`mapped`,[102]],[[120412,120412],`mapped`,[103]],[[120413,120413],`mapped`,[104]],[[120414,120414],`mapped`,[105]],[[120415,120415],`mapped`,[106]],[[120416,120416],`mapped`,[107]],[[120417,120417],`mapped`,[108]],[[120418,120418],`mapped`,[109]],[[120419,120419],`mapped`,[110]],[[120420,120420],`mapped`,[111]],[[120421,120421],`mapped`,[112]],[[120422,120422],`mapped`,[113]],[[120423,120423],`mapped`,[114]],[[120424,120424],`mapped`,[115]],[[120425,120425],`mapped`,[116]],[[120426,120426],`mapped`,[117]],[[120427,120427],`mapped`,[118]],[[120428,120428],`mapped`,[119]],[[120429,120429],`mapped`,[120]],[[120430,120430],`mapped`,[121]],[[120431,120431],`mapped`,[122]],[[120432,120432],`mapped`,[97]],[[120433,120433],`mapped`,[98]],[[120434,120434],`mapped`,[99]],[[120435,120435],`mapped`,[100]],[[120436,120436],`mapped`,[101]],[[120437,120437],`mapped`,[102]],[[120438,120438],`mapped`,[103]],[[120439,120439],`mapped`,[104]],[[120440,120440],`mapped`,[105]],[[120441,120441],`mapped`,[106]],[[120442,120442],`mapped`,[107]],[[120443,120443],`mapped`,[108]],[[120444,120444],`mapped`,[109]],[[120445,120445],`mapped`,[110]],[[120446,120446],`mapped`,[111]],[[120447,120447],`mapped`,[112]],[[120448,120448],`mapped`,[113]],[[120449,120449],`mapped`,[114]],[[120450,120450],`mapped`,[115]],[[120451,120451],`mapped`,[116]],[[120452,120452],`mapped`,[117]],[[120453,120453],`mapped`,[118]],[[120454,120454],`mapped`,[119]],[[120455,120455],`mapped`,[120]],[[120456,120456],`mapped`,[121]],[[120457,120457],`mapped`,[122]],[[120458,120458],`mapped`,[97]],[[120459,120459],`mapped`,[98]],[[120460,120460],`mapped`,[99]],[[120461,120461],`mapped`,[100]],[[120462,120462],`mapped`,[101]],[[120463,120463],`mapped`,[102]],[[120464,120464],`mapped`,[103]],[[120465,120465],`mapped`,[104]],[[120466,120466],`mapped`,[105]],[[120467,120467],`mapped`,[106]],[[120468,120468],`mapped`,[107]],[[120469,120469],`mapped`,[108]],[[120470,120470],`mapped`,[109]],[[120471,120471],`mapped`,[110]],[[120472,120472],`mapped`,[111]],[[120473,120473],`mapped`,[112]],[[120474,120474],`mapped`,[113]],[[120475,120475],`mapped`,[114]],[[120476,120476],`mapped`,[115]],[[120477,120477],`mapped`,[116]],[[120478,120478],`mapped`,[117]],[[120479,120479],`mapped`,[118]],[[120480,120480],`mapped`,[119]],[[120481,120481],`mapped`,[120]],[[120482,120482],`mapped`,[121]],[[120483,120483],`mapped`,[122]],[[120484,120484],`mapped`,[305]],[[120485,120485],`mapped`,[567]],[[120486,120487],`disallowed`],[[120488,120488],`mapped`,[945]],[[120489,120489],`mapped`,[946]],[[120490,120490],`mapped`,[947]],[[120491,120491],`mapped`,[948]],[[120492,120492],`mapped`,[949]],[[120493,120493],`mapped`,[950]],[[120494,120494],`mapped`,[951]],[[120495,120495],`mapped`,[952]],[[120496,120496],`mapped`,[953]],[[120497,120497],`mapped`,[954]],[[120498,120498],`mapped`,[955]],[[120499,120499],`mapped`,[956]],[[120500,120500],`mapped`,[957]],[[120501,120501],`mapped`,[958]],[[120502,120502],`mapped`,[959]],[[120503,120503],`mapped`,[960]],[[120504,120504],`mapped`,[961]],[[120505,120505],`mapped`,[952]],[[120506,120506],`mapped`,[963]],[[120507,120507],`mapped`,[964]],[[120508,120508],`mapped`,[965]],[[120509,120509],`mapped`,[966]],[[120510,120510],`mapped`,[967]],[[120511,120511],`mapped`,[968]],[[120512,120512],`mapped`,[969]],[[120513,120513],`mapped`,[8711]],[[120514,120514],`mapped`,[945]],[[120515,120515],`mapped`,[946]],[[120516,120516],`mapped`,[947]],[[120517,120517],`mapped`,[948]],[[120518,120518],`mapped`,[949]],[[120519,120519],`mapped`,[950]],[[120520,120520],`mapped`,[951]],[[120521,120521],`mapped`,[952]],[[120522,120522],`mapped`,[953]],[[120523,120523],`mapped`,[954]],[[120524,120524],`mapped`,[955]],[[120525,120525],`mapped`,[956]],[[120526,120526],`mapped`,[957]],[[120527,120527],`mapped`,[958]],[[120528,120528],`mapped`,[959]],[[120529,120529],`mapped`,[960]],[[120530,120530],`mapped`,[961]],[[120531,120532],`mapped`,[963]],[[120533,120533],`mapped`,[964]],[[120534,120534],`mapped`,[965]],[[120535,120535],`mapped`,[966]],[[120536,120536],`mapped`,[967]],[[120537,120537],`mapped`,[968]],[[120538,120538],`mapped`,[969]],[[120539,120539],`mapped`,[8706]],[[120540,120540],`mapped`,[949]],[[120541,120541],`mapped`,[952]],[[120542,120542],`mapped`,[954]],[[120543,120543],`mapped`,[966]],[[120544,120544],`mapped`,[961]],[[120545,120545],`mapped`,[960]],[[120546,120546],`mapped`,[945]],[[120547,120547],`mapped`,[946]],[[120548,120548],`mapped`,[947]],[[120549,120549],`mapped`,[948]],[[120550,120550],`mapped`,[949]],[[120551,120551],`mapped`,[950]],[[120552,120552],`mapped`,[951]],[[120553,120553],`mapped`,[952]],[[120554,120554],`mapped`,[953]],[[120555,120555],`mapped`,[954]],[[120556,120556],`mapped`,[955]],[[120557,120557],`mapped`,[956]],[[120558,120558],`mapped`,[957]],[[120559,120559],`mapped`,[958]],[[120560,120560],`mapped`,[959]],[[120561,120561],`mapped`,[960]],[[120562,120562],`mapped`,[961]],[[120563,120563],`mapped`,[952]],[[120564,120564],`mapped`,[963]],[[120565,120565],`mapped`,[964]],[[120566,120566],`mapped`,[965]],[[120567,120567],`mapped`,[966]],[[120568,120568],`mapped`,[967]],[[120569,120569],`mapped`,[968]],[[120570,120570],`mapped`,[969]],[[120571,120571],`mapped`,[8711]],[[120572,120572],`mapped`,[945]],[[120573,120573],`mapped`,[946]],[[120574,120574],`mapped`,[947]],[[120575,120575],`mapped`,[948]],[[120576,120576],`mapped`,[949]],[[120577,120577],`mapped`,[950]],[[120578,120578],`mapped`,[951]],[[120579,120579],`mapped`,[952]],[[120580,120580],`mapped`,[953]],[[120581,120581],`mapped`,[954]],[[120582,120582],`mapped`,[955]],[[120583,120583],`mapped`,[956]],[[120584,120584],`mapped`,[957]],[[120585,120585],`mapped`,[958]],[[120586,120586],`mapped`,[959]],[[120587,120587],`mapped`,[960]],[[120588,120588],`mapped`,[961]],[[120589,120590],`mapped`,[963]],[[120591,120591],`mapped`,[964]],[[120592,120592],`mapped`,[965]],[[120593,120593],`mapped`,[966]],[[120594,120594],`mapped`,[967]],[[120595,120595],`mapped`,[968]],[[120596,120596],`mapped`,[969]],[[120597,120597],`mapped`,[8706]],[[120598,120598],`mapped`,[949]],[[120599,120599],`mapped`,[952]],[[120600,120600],`mapped`,[954]],[[120601,120601],`mapped`,[966]],[[120602,120602],`mapped`,[961]],[[120603,120603],`mapped`,[960]],[[120604,120604],`mapped`,[945]],[[120605,120605],`mapped`,[946]],[[120606,120606],`mapped`,[947]],[[120607,120607],`mapped`,[948]],[[120608,120608],`mapped`,[949]],[[120609,120609],`mapped`,[950]],[[120610,120610],`mapped`,[951]],[[120611,120611],`mapped`,[952]],[[120612,120612],`mapped`,[953]],[[120613,120613],`mapped`,[954]],[[120614,120614],`mapped`,[955]],[[120615,120615],`mapped`,[956]],[[120616,120616],`mapped`,[957]],[[120617,120617],`mapped`,[958]],[[120618,120618],`mapped`,[959]],[[120619,120619],`mapped`,[960]],[[120620,120620],`mapped`,[961]],[[120621,120621],`mapped`,[952]],[[120622,120622],`mapped`,[963]],[[120623,120623],`mapped`,[964]],[[120624,120624],`mapped`,[965]],[[120625,120625],`mapped`,[966]],[[120626,120626],`mapped`,[967]],[[120627,120627],`mapped`,[968]],[[120628,120628],`mapped`,[969]],[[120629,120629],`mapped`,[8711]],[[120630,120630],`mapped`,[945]],[[120631,120631],`mapped`,[946]],[[120632,120632],`mapped`,[947]],[[120633,120633],`mapped`,[948]],[[120634,120634],`mapped`,[949]],[[120635,120635],`mapped`,[950]],[[120636,120636],`mapped`,[951]],[[120637,120637],`mapped`,[952]],[[120638,120638],`mapped`,[953]],[[120639,120639],`mapped`,[954]],[[120640,120640],`mapped`,[955]],[[120641,120641],`mapped`,[956]],[[120642,120642],`mapped`,[957]],[[120643,120643],`mapped`,[958]],[[120644,120644],`mapped`,[959]],[[120645,120645],`mapped`,[960]],[[120646,120646],`mapped`,[961]],[[120647,120648],`mapped`,[963]],[[120649,120649],`mapped`,[964]],[[120650,120650],`mapped`,[965]],[[120651,120651],`mapped`,[966]],[[120652,120652],`mapped`,[967]],[[120653,120653],`mapped`,[968]],[[120654,120654],`mapped`,[969]],[[120655,120655],`mapped`,[8706]],[[120656,120656],`mapped`,[949]],[[120657,120657],`mapped`,[952]],[[120658,120658],`mapped`,[954]],[[120659,120659],`mapped`,[966]],[[120660,120660],`mapped`,[961]],[[120661,120661],`mapped`,[960]],[[120662,120662],`mapped`,[945]],[[120663,120663],`mapped`,[946]],[[120664,120664],`mapped`,[947]],[[120665,120665],`mapped`,[948]],[[120666,120666],`mapped`,[949]],[[120667,120667],`mapped`,[950]],[[120668,120668],`mapped`,[951]],[[120669,120669],`mapped`,[952]],[[120670,120670],`mapped`,[953]],[[120671,120671],`mapped`,[954]],[[120672,120672],`mapped`,[955]],[[120673,120673],`mapped`,[956]],[[120674,120674],`mapped`,[957]],[[120675,120675],`mapped`,[958]],[[120676,120676],`mapped`,[959]],[[120677,120677],`mapped`,[960]],[[120678,120678],`mapped`,[961]],[[120679,120679],`mapped`,[952]],[[120680,120680],`mapped`,[963]],[[120681,120681],`mapped`,[964]],[[120682,120682],`mapped`,[965]],[[120683,120683],`mapped`,[966]],[[120684,120684],`mapped`,[967]],[[120685,120685],`mapped`,[968]],[[120686,120686],`mapped`,[969]],[[120687,120687],`mapped`,[8711]],[[120688,120688],`mapped`,[945]],[[120689,120689],`mapped`,[946]],[[120690,120690],`mapped`,[947]],[[120691,120691],`mapped`,[948]],[[120692,120692],`mapped`,[949]],[[120693,120693],`mapped`,[950]],[[120694,120694],`mapped`,[951]],[[120695,120695],`mapped`,[952]],[[120696,120696],`mapped`,[953]],[[120697,120697],`mapped`,[954]],[[120698,120698],`mapped`,[955]],[[120699,120699],`mapped`,[956]],[[120700,120700],`mapped`,[957]],[[120701,120701],`mapped`,[958]],[[120702,120702],`mapped`,[959]],[[120703,120703],`mapped`,[960]],[[120704,120704],`mapped`,[961]],[[120705,120706],`mapped`,[963]],[[120707,120707],`mapped`,[964]],[[120708,120708],`mapped`,[965]],[[120709,120709],`mapped`,[966]],[[120710,120710],`mapped`,[967]],[[120711,120711],`mapped`,[968]],[[120712,120712],`mapped`,[969]],[[120713,120713],`mapped`,[8706]],[[120714,120714],`mapped`,[949]],[[120715,120715],`mapped`,[952]],[[120716,120716],`mapped`,[954]],[[120717,120717],`mapped`,[966]],[[120718,120718],`mapped`,[961]],[[120719,120719],`mapped`,[960]],[[120720,120720],`mapped`,[945]],[[120721,120721],`mapped`,[946]],[[120722,120722],`mapped`,[947]],[[120723,120723],`mapped`,[948]],[[120724,120724],`mapped`,[949]],[[120725,120725],`mapped`,[950]],[[120726,120726],`mapped`,[951]],[[120727,120727],`mapped`,[952]],[[120728,120728],`mapped`,[953]],[[120729,120729],`mapped`,[954]],[[120730,120730],`mapped`,[955]],[[120731,120731],`mapped`,[956]],[[120732,120732],`mapped`,[957]],[[120733,120733],`mapped`,[958]],[[120734,120734],`mapped`,[959]],[[120735,120735],`mapped`,[960]],[[120736,120736],`mapped`,[961]],[[120737,120737],`mapped`,[952]],[[120738,120738],`mapped`,[963]],[[120739,120739],`mapped`,[964]],[[120740,120740],`mapped`,[965]],[[120741,120741],`mapped`,[966]],[[120742,120742],`mapped`,[967]],[[120743,120743],`mapped`,[968]],[[120744,120744],`mapped`,[969]],[[120745,120745],`mapped`,[8711]],[[120746,120746],`mapped`,[945]],[[120747,120747],`mapped`,[946]],[[120748,120748],`mapped`,[947]],[[120749,120749],`mapped`,[948]],[[120750,120750],`mapped`,[949]],[[120751,120751],`mapped`,[950]],[[120752,120752],`mapped`,[951]],[[120753,120753],`mapped`,[952]],[[120754,120754],`mapped`,[953]],[[120755,120755],`mapped`,[954]],[[120756,120756],`mapped`,[955]],[[120757,120757],`mapped`,[956]],[[120758,120758],`mapped`,[957]],[[120759,120759],`mapped`,[958]],[[120760,120760],`mapped`,[959]],[[120761,120761],`mapped`,[960]],[[120762,120762],`mapped`,[961]],[[120763,120764],`mapped`,[963]],[[120765,120765],`mapped`,[964]],[[120766,120766],`mapped`,[965]],[[120767,120767],`mapped`,[966]],[[120768,120768],`mapped`,[967]],[[120769,120769],`mapped`,[968]],[[120770,120770],`mapped`,[969]],[[120771,120771],`mapped`,[8706]],[[120772,120772],`mapped`,[949]],[[120773,120773],`mapped`,[952]],[[120774,120774],`mapped`,[954]],[[120775,120775],`mapped`,[966]],[[120776,120776],`mapped`,[961]],[[120777,120777],`mapped`,[960]],[[120778,120779],`mapped`,[989]],[[120780,120781],`disallowed`],[[120782,120782],`mapped`,[48]],[[120783,120783],`mapped`,[49]],[[120784,120784],`mapped`,[50]],[[120785,120785],`mapped`,[51]],[[120786,120786],`mapped`,[52]],[[120787,120787],`mapped`,[53]],[[120788,120788],`mapped`,[54]],[[120789,120789],`mapped`,[55]],[[120790,120790],`mapped`,[56]],[[120791,120791],`mapped`,[57]],[[120792,120792],`mapped`,[48]],[[120793,120793],`mapped`,[49]],[[120794,120794],`mapped`,[50]],[[120795,120795],`mapped`,[51]],[[120796,120796],`mapped`,[52]],[[120797,120797],`mapped`,[53]],[[120798,120798],`mapped`,[54]],[[120799,120799],`mapped`,[55]],[[120800,120800],`mapped`,[56]],[[120801,120801],`mapped`,[57]],[[120802,120802],`mapped`,[48]],[[120803,120803],`mapped`,[49]],[[120804,120804],`mapped`,[50]],[[120805,120805],`mapped`,[51]],[[120806,120806],`mapped`,[52]],[[120807,120807],`mapped`,[53]],[[120808,120808],`mapped`,[54]],[[120809,120809],`mapped`,[55]],[[120810,120810],`mapped`,[56]],[[120811,120811],`mapped`,[57]],[[120812,120812],`mapped`,[48]],[[120813,120813],`mapped`,[49]],[[120814,120814],`mapped`,[50]],[[120815,120815],`mapped`,[51]],[[120816,120816],`mapped`,[52]],[[120817,120817],`mapped`,[53]],[[120818,120818],`mapped`,[54]],[[120819,120819],`mapped`,[55]],[[120820,120820],`mapped`,[56]],[[120821,120821],`mapped`,[57]],[[120822,120822],`mapped`,[48]],[[120823,120823],`mapped`,[49]],[[120824,120824],`mapped`,[50]],[[120825,120825],`mapped`,[51]],[[120826,120826],`mapped`,[52]],[[120827,120827],`mapped`,[53]],[[120828,120828],`mapped`,[54]],[[120829,120829],`mapped`,[55]],[[120830,120830],`mapped`,[56]],[[120831,120831],`mapped`,[57]],[[120832,121343],`valid`,[],`NV8`],[[121344,121398],`valid`],[[121399,121402],`valid`,[],`NV8`],[[121403,121452],`valid`],[[121453,121460],`valid`,[],`NV8`],[[121461,121461],`valid`],[[121462,121475],`valid`,[],`NV8`],[[121476,121476],`valid`],[[121477,121483],`valid`,[],`NV8`],[[121484,121498],`disallowed`],[[121499,121503],`valid`],[[121504,121504],`disallowed`],[[121505,121519],`valid`],[[121520,124927],`disallowed`],[[124928,125124],`valid`],[[125125,125126],`disallowed`],[[125127,125135],`valid`,[],`NV8`],[[125136,125142],`valid`],[[125143,126463],`disallowed`],[[126464,126464],`mapped`,[1575]],[[126465,126465],`mapped`,[1576]],[[126466,126466],`mapped`,[1580]],[[126467,126467],`mapped`,[1583]],[[126468,126468],`disallowed`],[[126469,126469],`mapped`,[1608]],[[126470,126470],`mapped`,[1586]],[[126471,126471],`mapped`,[1581]],[[126472,126472],`mapped`,[1591]],[[126473,126473],`mapped`,[1610]],[[126474,126474],`mapped`,[1603]],[[126475,126475],`mapped`,[1604]],[[126476,126476],`mapped`,[1605]],[[126477,126477],`mapped`,[1606]],[[126478,126478],`mapped`,[1587]],[[126479,126479],`mapped`,[1593]],[[126480,126480],`mapped`,[1601]],[[126481,126481],`mapped`,[1589]],[[126482,126482],`mapped`,[1602]],[[126483,126483],`mapped`,[1585]],[[126484,126484],`mapped`,[1588]],[[126485,126485],`mapped`,[1578]],[[126486,126486],`mapped`,[1579]],[[126487,126487],`mapped`,[1582]],[[126488,126488],`mapped`,[1584]],[[126489,126489],`mapped`,[1590]],[[126490,126490],`mapped`,[1592]],[[126491,126491],`mapped`,[1594]],[[126492,126492],`mapped`,[1646]],[[126493,126493],`mapped`,[1722]],[[126494,126494],`mapped`,[1697]],[[126495,126495],`mapped`,[1647]],[[126496,126496],`disallowed`],[[126497,126497],`mapped`,[1576]],[[126498,126498],`mapped`,[1580]],[[126499,126499],`disallowed`],[[126500,126500],`mapped`,[1607]],[[126501,126502],`disallowed`],[[126503,126503],`mapped`,[1581]],[[126504,126504],`disallowed`],[[126505,126505],`mapped`,[1610]],[[126506,126506],`mapped`,[1603]],[[126507,126507],`mapped`,[1604]],[[126508,126508],`mapped`,[1605]],[[126509,126509],`mapped`,[1606]],[[126510,126510],`mapped`,[1587]],[[126511,126511],`mapped`,[1593]],[[126512,126512],`mapped`,[1601]],[[126513,126513],`mapped`,[1589]],[[126514,126514],`mapped`,[1602]],[[126515,126515],`disallowed`],[[126516,126516],`mapped`,[1588]],[[126517,126517],`mapped`,[1578]],[[126518,126518],`mapped`,[1579]],[[126519,126519],`mapped`,[1582]],[[126520,126520],`disallowed`],[[126521,126521],`mapped`,[1590]],[[126522,126522],`disallowed`],[[126523,126523],`mapped`,[1594]],[[126524,126529],`disallowed`],[[126530,126530],`mapped`,[1580]],[[126531,126534],`disallowed`],[[126535,126535],`mapped`,[1581]],[[126536,126536],`disallowed`],[[126537,126537],`mapped`,[1610]],[[126538,126538],`disallowed`],[[126539,126539],`mapped`,[1604]],[[126540,126540],`disallowed`],[[126541,126541],`mapped`,[1606]],[[126542,126542],`mapped`,[1587]],[[126543,126543],`mapped`,[1593]],[[126544,126544],`disallowed`],[[126545,126545],`mapped`,[1589]],[[126546,126546],`mapped`,[1602]],[[126547,126547],`disallowed`],[[126548,126548],`mapped`,[1588]],[[126549,126550],`disallowed`],[[126551,126551],`mapped`,[1582]],[[126552,126552],`disallowed`],[[126553,126553],`mapped`,[1590]],[[126554,126554],`disallowed`],[[126555,126555],`mapped`,[1594]],[[126556,126556],`disallowed`],[[126557,126557],`mapped`,[1722]],[[126558,126558],`disallowed`],[[126559,126559],`mapped`,[1647]],[[126560,126560],`disallowed`],[[126561,126561],`mapped`,[1576]],[[126562,126562],`mapped`,[1580]],[[126563,126563],`disallowed`],[[126564,126564],`mapped`,[1607]],[[126565,126566],`disallowed`],[[126567,126567],`mapped`,[1581]],[[126568,126568],`mapped`,[1591]],[[126569,126569],`mapped`,[1610]],[[126570,126570],`mapped`,[1603]],[[126571,126571],`disallowed`],[[126572,126572],`mapped`,[1605]],[[126573,126573],`mapped`,[1606]],[[126574,126574],`mapped`,[1587]],[[126575,126575],`mapped`,[1593]],[[126576,126576],`mapped`,[1601]],[[126577,126577],`mapped`,[1589]],[[126578,126578],`mapped`,[1602]],[[126579,126579],`disallowed`],[[126580,126580],`mapped`,[1588]],[[126581,126581],`mapped`,[1578]],[[126582,126582],`mapped`,[1579]],[[126583,126583],`mapped`,[1582]],[[126584,126584],`disallowed`],[[126585,126585],`mapped`,[1590]],[[126586,126586],`mapped`,[1592]],[[126587,126587],`mapped`,[1594]],[[126588,126588],`mapped`,[1646]],[[126589,126589],`disallowed`],[[126590,126590],`mapped`,[1697]],[[126591,126591],`disallowed`],[[126592,126592],`mapped`,[1575]],[[126593,126593],`mapped`,[1576]],[[126594,126594],`mapped`,[1580]],[[126595,126595],`mapped`,[1583]],[[126596,126596],`mapped`,[1607]],[[126597,126597],`mapped`,[1608]],[[126598,126598],`mapped`,[1586]],[[126599,126599],`mapped`,[1581]],[[126600,126600],`mapped`,[1591]],[[126601,126601],`mapped`,[1610]],[[126602,126602],`disallowed`],[[126603,126603],`mapped`,[1604]],[[126604,126604],`mapped`,[1605]],[[126605,126605],`mapped`,[1606]],[[126606,126606],`mapped`,[1587]],[[126607,126607],`mapped`,[1593]],[[126608,126608],`mapped`,[1601]],[[126609,126609],`mapped`,[1589]],[[126610,126610],`mapped`,[1602]],[[126611,126611],`mapped`,[1585]],[[126612,126612],`mapped`,[1588]],[[126613,126613],`mapped`,[1578]],[[126614,126614],`mapped`,[1579]],[[126615,126615],`mapped`,[1582]],[[126616,126616],`mapped`,[1584]],[[126617,126617],`mapped`,[1590]],[[126618,126618],`mapped`,[1592]],[[126619,126619],`mapped`,[1594]],[[126620,126624],`disallowed`],[[126625,126625],`mapped`,[1576]],[[126626,126626],`mapped`,[1580]],[[126627,126627],`mapped`,[1583]],[[126628,126628],`disallowed`],[[126629,126629],`mapped`,[1608]],[[126630,126630],`mapped`,[1586]],[[126631,126631],`mapped`,[1581]],[[126632,126632],`mapped`,[1591]],[[126633,126633],`mapped`,[1610]],[[126634,126634],`disallowed`],[[126635,126635],`mapped`,[1604]],[[126636,126636],`mapped`,[1605]],[[126637,126637],`mapped`,[1606]],[[126638,126638],`mapped`,[1587]],[[126639,126639],`mapped`,[1593]],[[126640,126640],`mapped`,[1601]],[[126641,126641],`mapped`,[1589]],[[126642,126642],`mapped`,[1602]],[[126643,126643],`mapped`,[1585]],[[126644,126644],`mapped`,[1588]],[[126645,126645],`mapped`,[1578]],[[126646,126646],`mapped`,[1579]],[[126647,126647],`mapped`,[1582]],[[126648,126648],`mapped`,[1584]],[[126649,126649],`mapped`,[1590]],[[126650,126650],`mapped`,[1592]],[[126651,126651],`mapped`,[1594]],[[126652,126703],`disallowed`],[[126704,126705],`valid`,[],`NV8`],[[126706,126975],`disallowed`],[[126976,127019],`valid`,[],`NV8`],[[127020,127023],`disallowed`],[[127024,127123],`valid`,[],`NV8`],[[127124,127135],`disallowed`],[[127136,127150],`valid`,[],`NV8`],[[127151,127152],`disallowed`],[[127153,127166],`valid`,[],`NV8`],[[127167,127167],`valid`,[],`NV8`],[[127168,127168],`disallowed`],[[127169,127183],`valid`,[],`NV8`],[[127184,127184],`disallowed`],[[127185,127199],`valid`,[],`NV8`],[[127200,127221],`valid`,[],`NV8`],[[127222,127231],`disallowed`],[[127232,127232],`disallowed`],[[127233,127233],`disallowed_STD3_mapped`,[48,44]],[[127234,127234],`disallowed_STD3_mapped`,[49,44]],[[127235,127235],`disallowed_STD3_mapped`,[50,44]],[[127236,127236],`disallowed_STD3_mapped`,[51,44]],[[127237,127237],`disallowed_STD3_mapped`,[52,44]],[[127238,127238],`disallowed_STD3_mapped`,[53,44]],[[127239,127239],`disallowed_STD3_mapped`,[54,44]],[[127240,127240],`disallowed_STD3_mapped`,[55,44]],[[127241,127241],`disallowed_STD3_mapped`,[56,44]],[[127242,127242],`disallowed_STD3_mapped`,[57,44]],[[127243,127244],`valid`,[],`NV8`],[[127245,127247],`disallowed`],[[127248,127248],`disallowed_STD3_mapped`,[40,97,41]],[[127249,127249],`disallowed_STD3_mapped`,[40,98,41]],[[127250,127250],`disallowed_STD3_mapped`,[40,99,41]],[[127251,127251],`disallowed_STD3_mapped`,[40,100,41]],[[127252,127252],`disallowed_STD3_mapped`,[40,101,41]],[[127253,127253],`disallowed_STD3_mapped`,[40,102,41]],[[127254,127254],`disallowed_STD3_mapped`,[40,103,41]],[[127255,127255],`disallowed_STD3_mapped`,[40,104,41]],[[127256,127256],`disallowed_STD3_mapped`,[40,105,41]],[[127257,127257],`disallowed_STD3_mapped`,[40,106,41]],[[127258,127258],`disallowed_STD3_mapped`,[40,107,41]],[[127259,127259],`disallowed_STD3_mapped`,[40,108,41]],[[127260,127260],`disallowed_STD3_mapped`,[40,109,41]],[[127261,127261],`disallowed_STD3_mapped`,[40,110,41]],[[127262,127262],`disallowed_STD3_mapped`,[40,111,41]],[[127263,127263],`disallowed_STD3_mapped`,[40,112,41]],[[127264,127264],`disallowed_STD3_mapped`,[40,113,41]],[[127265,127265],`disallowed_STD3_mapped`,[40,114,41]],[[127266,127266],`disallowed_STD3_mapped`,[40,115,41]],[[127267,127267],`disallowed_STD3_mapped`,[40,116,41]],[[127268,127268],`disallowed_STD3_mapped`,[40,117,41]],[[127269,127269],`disallowed_STD3_mapped`,[40,118,41]],[[127270,127270],`disallowed_STD3_mapped`,[40,119,41]],[[127271,127271],`disallowed_STD3_mapped`,[40,120,41]],[[127272,127272],`disallowed_STD3_mapped`,[40,121,41]],[[127273,127273],`disallowed_STD3_mapped`,[40,122,41]],[[127274,127274],`mapped`,[12308,115,12309]],[[127275,127275],`mapped`,[99]],[[127276,127276],`mapped`,[114]],[[127277,127277],`mapped`,[99,100]],[[127278,127278],`mapped`,[119,122]],[[127279,127279],`disallowed`],[[127280,127280],`mapped`,[97]],[[127281,127281],`mapped`,[98]],[[127282,127282],`mapped`,[99]],[[127283,127283],`mapped`,[100]],[[127284,127284],`mapped`,[101]],[[127285,127285],`mapped`,[102]],[[127286,127286],`mapped`,[103]],[[127287,127287],`mapped`,[104]],[[127288,127288],`mapped`,[105]],[[127289,127289],`mapped`,[106]],[[127290,127290],`mapped`,[107]],[[127291,127291],`mapped`,[108]],[[127292,127292],`mapped`,[109]],[[127293,127293],`mapped`,[110]],[[127294,127294],`mapped`,[111]],[[127295,127295],`mapped`,[112]],[[127296,127296],`mapped`,[113]],[[127297,127297],`mapped`,[114]],[[127298,127298],`mapped`,[115]],[[127299,127299],`mapped`,[116]],[[127300,127300],`mapped`,[117]],[[127301,127301],`mapped`,[118]],[[127302,127302],`mapped`,[119]],[[127303,127303],`mapped`,[120]],[[127304,127304],`mapped`,[121]],[[127305,127305],`mapped`,[122]],[[127306,127306],`mapped`,[104,118]],[[127307,127307],`mapped`,[109,118]],[[127308,127308],`mapped`,[115,100]],[[127309,127309],`mapped`,[115,115]],[[127310,127310],`mapped`,[112,112,118]],[[127311,127311],`mapped`,[119,99]],[[127312,127318],`valid`,[],`NV8`],[[127319,127319],`valid`,[],`NV8`],[[127320,127326],`valid`,[],`NV8`],[[127327,127327],`valid`,[],`NV8`],[[127328,127337],`valid`,[],`NV8`],[[127338,127338],`mapped`,[109,99]],[[127339,127339],`mapped`,[109,100]],[[127340,127343],`disallowed`],[[127344,127352],`valid`,[],`NV8`],[[127353,127353],`valid`,[],`NV8`],[[127354,127354],`valid`,[],`NV8`],[[127355,127356],`valid`,[],`NV8`],[[127357,127358],`valid`,[],`NV8`],[[127359,127359],`valid`,[],`NV8`],[[127360,127369],`valid`,[],`NV8`],[[127370,127373],`valid`,[],`NV8`],[[127374,127375],`valid`,[],`NV8`],[[127376,127376],`mapped`,[100,106]],[[127377,127386],`valid`,[],`NV8`],[[127387,127461],`disallowed`],[[127462,127487],`valid`,[],`NV8`],[[127488,127488],`mapped`,[12411,12363]],[[127489,127489],`mapped`,[12467,12467]],[[127490,127490],`mapped`,[12469]],[[127491,127503],`disallowed`],[[127504,127504],`mapped`,[25163]],[[127505,127505],`mapped`,[23383]],[[127506,127506],`mapped`,[21452]],[[127507,127507],`mapped`,[12487]],[[127508,127508],`mapped`,[20108]],[[127509,127509],`mapped`,[22810]],[[127510,127510],`mapped`,[35299]],[[127511,127511],`mapped`,[22825]],[[127512,127512],`mapped`,[20132]],[[127513,127513],`mapped`,[26144]],[[127514,127514],`mapped`,[28961]],[[127515,127515],`mapped`,[26009]],[[127516,127516],`mapped`,[21069]],[[127517,127517],`mapped`,[24460]],[[127518,127518],`mapped`,[20877]],[[127519,127519],`mapped`,[26032]],[[127520,127520],`mapped`,[21021]],[[127521,127521],`mapped`,[32066]],[[127522,127522],`mapped`,[29983]],[[127523,127523],`mapped`,[36009]],[[127524,127524],`mapped`,[22768]],[[127525,127525],`mapped`,[21561]],[[127526,127526],`mapped`,[28436]],[[127527,127527],`mapped`,[25237]],[[127528,127528],`mapped`,[25429]],[[127529,127529],`mapped`,[19968]],[[127530,127530],`mapped`,[19977]],[[127531,127531],`mapped`,[36938]],[[127532,127532],`mapped`,[24038]],[[127533,127533],`mapped`,[20013]],[[127534,127534],`mapped`,[21491]],[[127535,127535],`mapped`,[25351]],[[127536,127536],`mapped`,[36208]],[[127537,127537],`mapped`,[25171]],[[127538,127538],`mapped`,[31105]],[[127539,127539],`mapped`,[31354]],[[127540,127540],`mapped`,[21512]],[[127541,127541],`mapped`,[28288]],[[127542,127542],`mapped`,[26377]],[[127543,127543],`mapped`,[26376]],[[127544,127544],`mapped`,[30003]],[[127545,127545],`mapped`,[21106]],[[127546,127546],`mapped`,[21942]],[[127547,127551],`disallowed`],[[127552,127552],`mapped`,[12308,26412,12309]],[[127553,127553],`mapped`,[12308,19977,12309]],[[127554,127554],`mapped`,[12308,20108,12309]],[[127555,127555],`mapped`,[12308,23433,12309]],[[127556,127556],`mapped`,[12308,28857,12309]],[[127557,127557],`mapped`,[12308,25171,12309]],[[127558,127558],`mapped`,[12308,30423,12309]],[[127559,127559],`mapped`,[12308,21213,12309]],[[127560,127560],`mapped`,[12308,25943,12309]],[[127561,127567],`disallowed`],[[127568,127568],`mapped`,[24471]],[[127569,127569],`mapped`,[21487]],[[127570,127743],`disallowed`],[[127744,127776],`valid`,[],`NV8`],[[127777,127788],`valid`,[],`NV8`],[[127789,127791],`valid`,[],`NV8`],[[127792,127797],`valid`,[],`NV8`],[[127798,127798],`valid`,[],`NV8`],[[127799,127868],`valid`,[],`NV8`],[[127869,127869],`valid`,[],`NV8`],[[127870,127871],`valid`,[],`NV8`],[[127872,127891],`valid`,[],`NV8`],[[127892,127903],`valid`,[],`NV8`],[[127904,127940],`valid`,[],`NV8`],[[127941,127941],`valid`,[],`NV8`],[[127942,127946],`valid`,[],`NV8`],[[127947,127950],`valid`,[],`NV8`],[[127951,127955],`valid`,[],`NV8`],[[127956,127967],`valid`,[],`NV8`],[[127968,127984],`valid`,[],`NV8`],[[127985,127991],`valid`,[],`NV8`],[[127992,127999],`valid`,[],`NV8`],[[128e3,128062],`valid`,[],`NV8`],[[128063,128063],`valid`,[],`NV8`],[[128064,128064],`valid`,[],`NV8`],[[128065,128065],`valid`,[],`NV8`],[[128066,128247],`valid`,[],`NV8`],[[128248,128248],`valid`,[],`NV8`],[[128249,128252],`valid`,[],`NV8`],[[128253,128254],`valid`,[],`NV8`],[[128255,128255],`valid`,[],`NV8`],[[128256,128317],`valid`,[],`NV8`],[[128318,128319],`valid`,[],`NV8`],[[128320,128323],`valid`,[],`NV8`],[[128324,128330],`valid`,[],`NV8`],[[128331,128335],`valid`,[],`NV8`],[[128336,128359],`valid`,[],`NV8`],[[128360,128377],`valid`,[],`NV8`],[[128378,128378],`disallowed`],[[128379,128419],`valid`,[],`NV8`],[[128420,128420],`disallowed`],[[128421,128506],`valid`,[],`NV8`],[[128507,128511],`valid`,[],`NV8`],[[128512,128512],`valid`,[],`NV8`],[[128513,128528],`valid`,[],`NV8`],[[128529,128529],`valid`,[],`NV8`],[[128530,128532],`valid`,[],`NV8`],[[128533,128533],`valid`,[],`NV8`],[[128534,128534],`valid`,[],`NV8`],[[128535,128535],`valid`,[],`NV8`],[[128536,128536],`valid`,[],`NV8`],[[128537,128537],`valid`,[],`NV8`],[[128538,128538],`valid`,[],`NV8`],[[128539,128539],`valid`,[],`NV8`],[[128540,128542],`valid`,[],`NV8`],[[128543,128543],`valid`,[],`NV8`],[[128544,128549],`valid`,[],`NV8`],[[128550,128551],`valid`,[],`NV8`],[[128552,128555],`valid`,[],`NV8`],[[128556,128556],`valid`,[],`NV8`],[[128557,128557],`valid`,[],`NV8`],[[128558,128559],`valid`,[],`NV8`],[[128560,128563],`valid`,[],`NV8`],[[128564,128564],`valid`,[],`NV8`],[[128565,128576],`valid`,[],`NV8`],[[128577,128578],`valid`,[],`NV8`],[[128579,128580],`valid`,[],`NV8`],[[128581,128591],`valid`,[],`NV8`],[[128592,128639],`valid`,[],`NV8`],[[128640,128709],`valid`,[],`NV8`],[[128710,128719],`valid`,[],`NV8`],[[128720,128720],`valid`,[],`NV8`],[[128721,128735],`disallowed`],[[128736,128748],`valid`,[],`NV8`],[[128749,128751],`disallowed`],[[128752,128755],`valid`,[],`NV8`],[[128756,128767],`disallowed`],[[128768,128883],`valid`,[],`NV8`],[[128884,128895],`disallowed`],[[128896,128980],`valid`,[],`NV8`],[[128981,129023],`disallowed`],[[129024,129035],`valid`,[],`NV8`],[[129036,129039],`disallowed`],[[129040,129095],`valid`,[],`NV8`],[[129096,129103],`disallowed`],[[129104,129113],`valid`,[],`NV8`],[[129114,129119],`disallowed`],[[129120,129159],`valid`,[],`NV8`],[[129160,129167],`disallowed`],[[129168,129197],`valid`,[],`NV8`],[[129198,129295],`disallowed`],[[129296,129304],`valid`,[],`NV8`],[[129305,129407],`disallowed`],[[129408,129412],`valid`,[],`NV8`],[[129413,129471],`disallowed`],[[129472,129472],`valid`,[],`NV8`],[[129473,131069],`disallowed`],[[131070,131071],`disallowed`],[[131072,173782],`valid`],[[173783,173823],`disallowed`],[[173824,177972],`valid`],[[177973,177983],`disallowed`],[[177984,178205],`valid`],[[178206,178207],`disallowed`],[[178208,183969],`valid`],[[183970,194559],`disallowed`],[[194560,194560],`mapped`,[20029]],[[194561,194561],`mapped`,[20024]],[[194562,194562],`mapped`,[20033]],[[194563,194563],`mapped`,[131362]],[[194564,194564],`mapped`,[20320]],[[194565,194565],`mapped`,[20398]],[[194566,194566],`mapped`,[20411]],[[194567,194567],`mapped`,[20482]],[[194568,194568],`mapped`,[20602]],[[194569,194569],`mapped`,[20633]],[[194570,194570],`mapped`,[20711]],[[194571,194571],`mapped`,[20687]],[[194572,194572],`mapped`,[13470]],[[194573,194573],`mapped`,[132666]],[[194574,194574],`mapped`,[20813]],[[194575,194575],`mapped`,[20820]],[[194576,194576],`mapped`,[20836]],[[194577,194577],`mapped`,[20855]],[[194578,194578],`mapped`,[132380]],[[194579,194579],`mapped`,[13497]],[[194580,194580],`mapped`,[20839]],[[194581,194581],`mapped`,[20877]],[[194582,194582],`mapped`,[132427]],[[194583,194583],`mapped`,[20887]],[[194584,194584],`mapped`,[20900]],[[194585,194585],`mapped`,[20172]],[[194586,194586],`mapped`,[20908]],[[194587,194587],`mapped`,[20917]],[[194588,194588],`mapped`,[168415]],[[194589,194589],`mapped`,[20981]],[[194590,194590],`mapped`,[20995]],[[194591,194591],`mapped`,[13535]],[[194592,194592],`mapped`,[21051]],[[194593,194593],`mapped`,[21062]],[[194594,194594],`mapped`,[21106]],[[194595,194595],`mapped`,[21111]],[[194596,194596],`mapped`,[13589]],[[194597,194597],`mapped`,[21191]],[[194598,194598],`mapped`,[21193]],[[194599,194599],`mapped`,[21220]],[[194600,194600],`mapped`,[21242]],[[194601,194601],`mapped`,[21253]],[[194602,194602],`mapped`,[21254]],[[194603,194603],`mapped`,[21271]],[[194604,194604],`mapped`,[21321]],[[194605,194605],`mapped`,[21329]],[[194606,194606],`mapped`,[21338]],[[194607,194607],`mapped`,[21363]],[[194608,194608],`mapped`,[21373]],[[194609,194611],`mapped`,[21375]],[[194612,194612],`mapped`,[133676]],[[194613,194613],`mapped`,[28784]],[[194614,194614],`mapped`,[21450]],[[194615,194615],`mapped`,[21471]],[[194616,194616],`mapped`,[133987]],[[194617,194617],`mapped`,[21483]],[[194618,194618],`mapped`,[21489]],[[194619,194619],`mapped`,[21510]],[[194620,194620],`mapped`,[21662]],[[194621,194621],`mapped`,[21560]],[[194622,194622],`mapped`,[21576]],[[194623,194623],`mapped`,[21608]],[[194624,194624],`mapped`,[21666]],[[194625,194625],`mapped`,[21750]],[[194626,194626],`mapped`,[21776]],[[194627,194627],`mapped`,[21843]],[[194628,194628],`mapped`,[21859]],[[194629,194630],`mapped`,[21892]],[[194631,194631],`mapped`,[21913]],[[194632,194632],`mapped`,[21931]],[[194633,194633],`mapped`,[21939]],[[194634,194634],`mapped`,[21954]],[[194635,194635],`mapped`,[22294]],[[194636,194636],`mapped`,[22022]],[[194637,194637],`mapped`,[22295]],[[194638,194638],`mapped`,[22097]],[[194639,194639],`mapped`,[22132]],[[194640,194640],`mapped`,[20999]],[[194641,194641],`mapped`,[22766]],[[194642,194642],`mapped`,[22478]],[[194643,194643],`mapped`,[22516]],[[194644,194644],`mapped`,[22541]],[[194645,194645],`mapped`,[22411]],[[194646,194646],`mapped`,[22578]],[[194647,194647],`mapped`,[22577]],[[194648,194648],`mapped`,[22700]],[[194649,194649],`mapped`,[136420]],[[194650,194650],`mapped`,[22770]],[[194651,194651],`mapped`,[22775]],[[194652,194652],`mapped`,[22790]],[[194653,194653],`mapped`,[22810]],[[194654,194654],`mapped`,[22818]],[[194655,194655],`mapped`,[22882]],[[194656,194656],`mapped`,[136872]],[[194657,194657],`mapped`,[136938]],[[194658,194658],`mapped`,[23020]],[[194659,194659],`mapped`,[23067]],[[194660,194660],`mapped`,[23079]],[[194661,194661],`mapped`,[23e3]],[[194662,194662],`mapped`,[23142]],[[194663,194663],`mapped`,[14062]],[[194664,194664],`disallowed`],[[194665,194665],`mapped`,[23304]],[[194666,194667],`mapped`,[23358]],[[194668,194668],`mapped`,[137672]],[[194669,194669],`mapped`,[23491]],[[194670,194670],`mapped`,[23512]],[[194671,194671],`mapped`,[23527]],[[194672,194672],`mapped`,[23539]],[[194673,194673],`mapped`,[138008]],[[194674,194674],`mapped`,[23551]],[[194675,194675],`mapped`,[23558]],[[194676,194676],`disallowed`],[[194677,194677],`mapped`,[23586]],[[194678,194678],`mapped`,[14209]],[[194679,194679],`mapped`,[23648]],[[194680,194680],`mapped`,[23662]],[[194681,194681],`mapped`,[23744]],[[194682,194682],`mapped`,[23693]],[[194683,194683],`mapped`,[138724]],[[194684,194684],`mapped`,[23875]],[[194685,194685],`mapped`,[138726]],[[194686,194686],`mapped`,[23918]],[[194687,194687],`mapped`,[23915]],[[194688,194688],`mapped`,[23932]],[[194689,194689],`mapped`,[24033]],[[194690,194690],`mapped`,[24034]],[[194691,194691],`mapped`,[14383]],[[194692,194692],`mapped`,[24061]],[[194693,194693],`mapped`,[24104]],[[194694,194694],`mapped`,[24125]],[[194695,194695],`mapped`,[24169]],[[194696,194696],`mapped`,[14434]],[[194697,194697],`mapped`,[139651]],[[194698,194698],`mapped`,[14460]],[[194699,194699],`mapped`,[24240]],[[194700,194700],`mapped`,[24243]],[[194701,194701],`mapped`,[24246]],[[194702,194702],`mapped`,[24266]],[[194703,194703],`mapped`,[172946]],[[194704,194704],`mapped`,[24318]],[[194705,194706],`mapped`,[140081]],[[194707,194707],`mapped`,[33281]],[[194708,194709],`mapped`,[24354]],[[194710,194710],`mapped`,[14535]],[[194711,194711],`mapped`,[144056]],[[194712,194712],`mapped`,[156122]],[[194713,194713],`mapped`,[24418]],[[194714,194714],`mapped`,[24427]],[[194715,194715],`mapped`,[14563]],[[194716,194716],`mapped`,[24474]],[[194717,194717],`mapped`,[24525]],[[194718,194718],`mapped`,[24535]],[[194719,194719],`mapped`,[24569]],[[194720,194720],`mapped`,[24705]],[[194721,194721],`mapped`,[14650]],[[194722,194722],`mapped`,[14620]],[[194723,194723],`mapped`,[24724]],[[194724,194724],`mapped`,[141012]],[[194725,194725],`mapped`,[24775]],[[194726,194726],`mapped`,[24904]],[[194727,194727],`mapped`,[24908]],[[194728,194728],`mapped`,[24910]],[[194729,194729],`mapped`,[24908]],[[194730,194730],`mapped`,[24954]],[[194731,194731],`mapped`,[24974]],[[194732,194732],`mapped`,[25010]],[[194733,194733],`mapped`,[24996]],[[194734,194734],`mapped`,[25007]],[[194735,194735],`mapped`,[25054]],[[194736,194736],`mapped`,[25074]],[[194737,194737],`mapped`,[25078]],[[194738,194738],`mapped`,[25104]],[[194739,194739],`mapped`,[25115]],[[194740,194740],`mapped`,[25181]],[[194741,194741],`mapped`,[25265]],[[194742,194742],`mapped`,[25300]],[[194743,194743],`mapped`,[25424]],[[194744,194744],`mapped`,[142092]],[[194745,194745],`mapped`,[25405]],[[194746,194746],`mapped`,[25340]],[[194747,194747],`mapped`,[25448]],[[194748,194748],`mapped`,[25475]],[[194749,194749],`mapped`,[25572]],[[194750,194750],`mapped`,[142321]],[[194751,194751],`mapped`,[25634]],[[194752,194752],`mapped`,[25541]],[[194753,194753],`mapped`,[25513]],[[194754,194754],`mapped`,[14894]],[[194755,194755],`mapped`,[25705]],[[194756,194756],`mapped`,[25726]],[[194757,194757],`mapped`,[25757]],[[194758,194758],`mapped`,[25719]],[[194759,194759],`mapped`,[14956]],[[194760,194760],`mapped`,[25935]],[[194761,194761],`mapped`,[25964]],[[194762,194762],`mapped`,[143370]],[[194763,194763],`mapped`,[26083]],[[194764,194764],`mapped`,[26360]],[[194765,194765],`mapped`,[26185]],[[194766,194766],`mapped`,[15129]],[[194767,194767],`mapped`,[26257]],[[194768,194768],`mapped`,[15112]],[[194769,194769],`mapped`,[15076]],[[194770,194770],`mapped`,[20882]],[[194771,194771],`mapped`,[20885]],[[194772,194772],`mapped`,[26368]],[[194773,194773],`mapped`,[26268]],[[194774,194774],`mapped`,[32941]],[[194775,194775],`mapped`,[17369]],[[194776,194776],`mapped`,[26391]],[[194777,194777],`mapped`,[26395]],[[194778,194778],`mapped`,[26401]],[[194779,194779],`mapped`,[26462]],[[194780,194780],`mapped`,[26451]],[[194781,194781],`mapped`,[144323]],[[194782,194782],`mapped`,[15177]],[[194783,194783],`mapped`,[26618]],[[194784,194784],`mapped`,[26501]],[[194785,194785],`mapped`,[26706]],[[194786,194786],`mapped`,[26757]],[[194787,194787],`mapped`,[144493]],[[194788,194788],`mapped`,[26766]],[[194789,194789],`mapped`,[26655]],[[194790,194790],`mapped`,[26900]],[[194791,194791],`mapped`,[15261]],[[194792,194792],`mapped`,[26946]],[[194793,194793],`mapped`,[27043]],[[194794,194794],`mapped`,[27114]],[[194795,194795],`mapped`,[27304]],[[194796,194796],`mapped`,[145059]],[[194797,194797],`mapped`,[27355]],[[194798,194798],`mapped`,[15384]],[[194799,194799],`mapped`,[27425]],[[194800,194800],`mapped`,[145575]],[[194801,194801],`mapped`,[27476]],[[194802,194802],`mapped`,[15438]],[[194803,194803],`mapped`,[27506]],[[194804,194804],`mapped`,[27551]],[[194805,194805],`mapped`,[27578]],[[194806,194806],`mapped`,[27579]],[[194807,194807],`mapped`,[146061]],[[194808,194808],`mapped`,[138507]],[[194809,194809],`mapped`,[146170]],[[194810,194810],`mapped`,[27726]],[[194811,194811],`mapped`,[146620]],[[194812,194812],`mapped`,[27839]],[[194813,194813],`mapped`,[27853]],[[194814,194814],`mapped`,[27751]],[[194815,194815],`mapped`,[27926]],[[194816,194816],`mapped`,[27966]],[[194817,194817],`mapped`,[28023]],[[194818,194818],`mapped`,[27969]],[[194819,194819],`mapped`,[28009]],[[194820,194820],`mapped`,[28024]],[[194821,194821],`mapped`,[28037]],[[194822,194822],`mapped`,[146718]],[[194823,194823],`mapped`,[27956]],[[194824,194824],`mapped`,[28207]],[[194825,194825],`mapped`,[28270]],[[194826,194826],`mapped`,[15667]],[[194827,194827],`mapped`,[28363]],[[194828,194828],`mapped`,[28359]],[[194829,194829],`mapped`,[147153]],[[194830,194830],`mapped`,[28153]],[[194831,194831],`mapped`,[28526]],[[194832,194832],`mapped`,[147294]],[[194833,194833],`mapped`,[147342]],[[194834,194834],`mapped`,[28614]],[[194835,194835],`mapped`,[28729]],[[194836,194836],`mapped`,[28702]],[[194837,194837],`mapped`,[28699]],[[194838,194838],`mapped`,[15766]],[[194839,194839],`mapped`,[28746]],[[194840,194840],`mapped`,[28797]],[[194841,194841],`mapped`,[28791]],[[194842,194842],`mapped`,[28845]],[[194843,194843],`mapped`,[132389]],[[194844,194844],`mapped`,[28997]],[[194845,194845],`mapped`,[148067]],[[194846,194846],`mapped`,[29084]],[[194847,194847],`disallowed`],[[194848,194848],`mapped`,[29224]],[[194849,194849],`mapped`,[29237]],[[194850,194850],`mapped`,[29264]],[[194851,194851],`mapped`,[149e3]],[[194852,194852],`mapped`,[29312]],[[194853,194853],`mapped`,[29333]],[[194854,194854],`mapped`,[149301]],[[194855,194855],`mapped`,[149524]],[[194856,194856],`mapped`,[29562]],[[194857,194857],`mapped`,[29579]],[[194858,194858],`mapped`,[16044]],[[194859,194859],`mapped`,[29605]],[[194860,194861],`mapped`,[16056]],[[194862,194862],`mapped`,[29767]],[[194863,194863],`mapped`,[29788]],[[194864,194864],`mapped`,[29809]],[[194865,194865],`mapped`,[29829]],[[194866,194866],`mapped`,[29898]],[[194867,194867],`mapped`,[16155]],[[194868,194868],`mapped`,[29988]],[[194869,194869],`mapped`,[150582]],[[194870,194870],`mapped`,[30014]],[[194871,194871],`mapped`,[150674]],[[194872,194872],`mapped`,[30064]],[[194873,194873],`mapped`,[139679]],[[194874,194874],`mapped`,[30224]],[[194875,194875],`mapped`,[151457]],[[194876,194876],`mapped`,[151480]],[[194877,194877],`mapped`,[151620]],[[194878,194878],`mapped`,[16380]],[[194879,194879],`mapped`,[16392]],[[194880,194880],`mapped`,[30452]],[[194881,194881],`mapped`,[151795]],[[194882,194882],`mapped`,[151794]],[[194883,194883],`mapped`,[151833]],[[194884,194884],`mapped`,[151859]],[[194885,194885],`mapped`,[30494]],[[194886,194887],`mapped`,[30495]],[[194888,194888],`mapped`,[30538]],[[194889,194889],`mapped`,[16441]],[[194890,194890],`mapped`,[30603]],[[194891,194891],`mapped`,[16454]],[[194892,194892],`mapped`,[16534]],[[194893,194893],`mapped`,[152605]],[[194894,194894],`mapped`,[30798]],[[194895,194895],`mapped`,[30860]],[[194896,194896],`mapped`,[30924]],[[194897,194897],`mapped`,[16611]],[[194898,194898],`mapped`,[153126]],[[194899,194899],`mapped`,[31062]],[[194900,194900],`mapped`,[153242]],[[194901,194901],`mapped`,[153285]],[[194902,194902],`mapped`,[31119]],[[194903,194903],`mapped`,[31211]],[[194904,194904],`mapped`,[16687]],[[194905,194905],`mapped`,[31296]],[[194906,194906],`mapped`,[31306]],[[194907,194907],`mapped`,[31311]],[[194908,194908],`mapped`,[153980]],[[194909,194910],`mapped`,[154279]],[[194911,194911],`disallowed`],[[194912,194912],`mapped`,[16898]],[[194913,194913],`mapped`,[154539]],[[194914,194914],`mapped`,[31686]],[[194915,194915],`mapped`,[31689]],[[194916,194916],`mapped`,[16935]],[[194917,194917],`mapped`,[154752]],[[194918,194918],`mapped`,[31954]],[[194919,194919],`mapped`,[17056]],[[194920,194920],`mapped`,[31976]],[[194921,194921],`mapped`,[31971]],[[194922,194922],`mapped`,[32e3]],[[194923,194923],`mapped`,[155526]],[[194924,194924],`mapped`,[32099]],[[194925,194925],`mapped`,[17153]],[[194926,194926],`mapped`,[32199]],[[194927,194927],`mapped`,[32258]],[[194928,194928],`mapped`,[32325]],[[194929,194929],`mapped`,[17204]],[[194930,194930],`mapped`,[156200]],[[194931,194931],`mapped`,[156231]],[[194932,194932],`mapped`,[17241]],[[194933,194933],`mapped`,[156377]],[[194934,194934],`mapped`,[32634]],[[194935,194935],`mapped`,[156478]],[[194936,194936],`mapped`,[32661]],[[194937,194937],`mapped`,[32762]],[[194938,194938],`mapped`,[32773]],[[194939,194939],`mapped`,[156890]],[[194940,194940],`mapped`,[156963]],[[194941,194941],`mapped`,[32864]],[[194942,194942],`mapped`,[157096]],[[194943,194943],`mapped`,[32880]],[[194944,194944],`mapped`,[144223]],[[194945,194945],`mapped`,[17365]],[[194946,194946],`mapped`,[32946]],[[194947,194947],`mapped`,[33027]],[[194948,194948],`mapped`,[17419]],[[194949,194949],`mapped`,[33086]],[[194950,194950],`mapped`,[23221]],[[194951,194951],`mapped`,[157607]],[[194952,194952],`mapped`,[157621]],[[194953,194953],`mapped`,[144275]],[[194954,194954],`mapped`,[144284]],[[194955,194955],`mapped`,[33281]],[[194956,194956],`mapped`,[33284]],[[194957,194957],`mapped`,[36766]],[[194958,194958],`mapped`,[17515]],[[194959,194959],`mapped`,[33425]],[[194960,194960],`mapped`,[33419]],[[194961,194961],`mapped`,[33437]],[[194962,194962],`mapped`,[21171]],[[194963,194963],`mapped`,[33457]],[[194964,194964],`mapped`,[33459]],[[194965,194965],`mapped`,[33469]],[[194966,194966],`mapped`,[33510]],[[194967,194967],`mapped`,[158524]],[[194968,194968],`mapped`,[33509]],[[194969,194969],`mapped`,[33565]],[[194970,194970],`mapped`,[33635]],[[194971,194971],`mapped`,[33709]],[[194972,194972],`mapped`,[33571]],[[194973,194973],`mapped`,[33725]],[[194974,194974],`mapped`,[33767]],[[194975,194975],`mapped`,[33879]],[[194976,194976],`mapped`,[33619]],[[194977,194977],`mapped`,[33738]],[[194978,194978],`mapped`,[33740]],[[194979,194979],`mapped`,[33756]],[[194980,194980],`mapped`,[158774]],[[194981,194981],`mapped`,[159083]],[[194982,194982],`mapped`,[158933]],[[194983,194983],`mapped`,[17707]],[[194984,194984],`mapped`,[34033]],[[194985,194985],`mapped`,[34035]],[[194986,194986],`mapped`,[34070]],[[194987,194987],`mapped`,[160714]],[[194988,194988],`mapped`,[34148]],[[194989,194989],`mapped`,[159532]],[[194990,194990],`mapped`,[17757]],[[194991,194991],`mapped`,[17761]],[[194992,194992],`mapped`,[159665]],[[194993,194993],`mapped`,[159954]],[[194994,194994],`mapped`,[17771]],[[194995,194995],`mapped`,[34384]],[[194996,194996],`mapped`,[34396]],[[194997,194997],`mapped`,[34407]],[[194998,194998],`mapped`,[34409]],[[194999,194999],`mapped`,[34473]],[[195e3,195e3],`mapped`,[34440]],[[195001,195001],`mapped`,[34574]],[[195002,195002],`mapped`,[34530]],[[195003,195003],`mapped`,[34681]],[[195004,195004],`mapped`,[34600]],[[195005,195005],`mapped`,[34667]],[[195006,195006],`mapped`,[34694]],[[195007,195007],`disallowed`],[[195008,195008],`mapped`,[34785]],[[195009,195009],`mapped`,[34817]],[[195010,195010],`mapped`,[17913]],[[195011,195011],`mapped`,[34912]],[[195012,195012],`mapped`,[34915]],[[195013,195013],`mapped`,[161383]],[[195014,195014],`mapped`,[35031]],[[195015,195015],`mapped`,[35038]],[[195016,195016],`mapped`,[17973]],[[195017,195017],`mapped`,[35066]],[[195018,195018],`mapped`,[13499]],[[195019,195019],`mapped`,[161966]],[[195020,195020],`mapped`,[162150]],[[195021,195021],`mapped`,[18110]],[[195022,195022],`mapped`,[18119]],[[195023,195023],`mapped`,[35488]],[[195024,195024],`mapped`,[35565]],[[195025,195025],`mapped`,[35722]],[[195026,195026],`mapped`,[35925]],[[195027,195027],`mapped`,[162984]],[[195028,195028],`mapped`,[36011]],[[195029,195029],`mapped`,[36033]],[[195030,195030],`mapped`,[36123]],[[195031,195031],`mapped`,[36215]],[[195032,195032],`mapped`,[163631]],[[195033,195033],`mapped`,[133124]],[[195034,195034],`mapped`,[36299]],[[195035,195035],`mapped`,[36284]],[[195036,195036],`mapped`,[36336]],[[195037,195037],`mapped`,[133342]],[[195038,195038],`mapped`,[36564]],[[195039,195039],`mapped`,[36664]],[[195040,195040],`mapped`,[165330]],[[195041,195041],`mapped`,[165357]],[[195042,195042],`mapped`,[37012]],[[195043,195043],`mapped`,[37105]],[[195044,195044],`mapped`,[37137]],[[195045,195045],`mapped`,[165678]],[[195046,195046],`mapped`,[37147]],[[195047,195047],`mapped`,[37432]],[[195048,195048],`mapped`,[37591]],[[195049,195049],`mapped`,[37592]],[[195050,195050],`mapped`,[37500]],[[195051,195051],`mapped`,[37881]],[[195052,195052],`mapped`,[37909]],[[195053,195053],`mapped`,[166906]],[[195054,195054],`mapped`,[38283]],[[195055,195055],`mapped`,[18837]],[[195056,195056],`mapped`,[38327]],[[195057,195057],`mapped`,[167287]],[[195058,195058],`mapped`,[18918]],[[195059,195059],`mapped`,[38595]],[[195060,195060],`mapped`,[23986]],[[195061,195061],`mapped`,[38691]],[[195062,195062],`mapped`,[168261]],[[195063,195063],`mapped`,[168474]],[[195064,195064],`mapped`,[19054]],[[195065,195065],`mapped`,[19062]],[[195066,195066],`mapped`,[38880]],[[195067,195067],`mapped`,[168970]],[[195068,195068],`mapped`,[19122]],[[195069,195069],`mapped`,[169110]],[[195070,195071],`mapped`,[38923]],[[195072,195072],`mapped`,[38953]],[[195073,195073],`mapped`,[169398]],[[195074,195074],`mapped`,[39138]],[[195075,195075],`mapped`,[19251]],[[195076,195076],`mapped`,[39209]],[[195077,195077],`mapped`,[39335]],[[195078,195078],`mapped`,[39362]],[[195079,195079],`mapped`,[39422]],[[195080,195080],`mapped`,[19406]],[[195081,195081],`mapped`,[170800]],[[195082,195082],`mapped`,[39698]],[[195083,195083],`mapped`,[4e4]],[[195084,195084],`mapped`,[40189]],[[195085,195085],`mapped`,[19662]],[[195086,195086],`mapped`,[19693]],[[195087,195087],`mapped`,[40295]],[[195088,195088],`mapped`,[172238]],[[195089,195089],`mapped`,[19704]],[[195090,195090],`mapped`,[172293]],[[195091,195091],`mapped`,[172558]],[[195092,195092],`mapped`,[172689]],[[195093,195093],`mapped`,[40635]],[[195094,195094],`mapped`,[19798]],[[195095,195095],`mapped`,[40697]],[[195096,195096],`mapped`,[40702]],[[195097,195097],`mapped`,[40709]],[[195098,195098],`mapped`,[40719]],[[195099,195099],`mapped`,[40726]],[[195100,195100],`mapped`,[40763]],[[195101,195101],`mapped`,[173568]],[[195102,196605],`disallowed`],[[196606,196607],`disallowed`],[[196608,262141],`disallowed`],[[262142,262143],`disallowed`],[[262144,327677],`disallowed`],[[327678,327679],`disallowed`],[[327680,393213],`disallowed`],[[393214,393215],`disallowed`],[[393216,458749],`disallowed`],[[458750,458751],`disallowed`],[[458752,524285],`disallowed`],[[524286,524287],`disallowed`],[[524288,589821],`disallowed`],[[589822,589823],`disallowed`],[[589824,655357],`disallowed`],[[655358,655359],`disallowed`],[[655360,720893],`disallowed`],[[720894,720895],`disallowed`],[[720896,786429],`disallowed`],[[786430,786431],`disallowed`],[[786432,851965],`disallowed`],[[851966,851967],`disallowed`],[[851968,917501],`disallowed`],[[917502,917503],`disallowed`],[[917504,917504],`disallowed`],[[917505,917505],`disallowed`],[[917506,917535],`disallowed`],[[917536,917631],`disallowed`],[[917632,917759],`disallowed`],[[917760,917999],`ignored`],[[918e3,983037],`disallowed`],[[983038,983039],`disallowed`],[[983040,1048573],`disallowed`],[[1048574,1048575],`disallowed`],[[1048576,1114109],`disallowed`],[[1114110,1114111],`disallowed`]]})),rr=s(((e,t)=>{var n=require(`punycode`),r=nr(),i={TRANSITIONAL:0,NONTRANSITIONAL:1};function a(e){return e.split(`\0`).map(function(e){return e.normalize(`NFC`)}).join(`\0`)}function o(e){for(var t=0,n=r.length-1;t<=n;){var i=Math.floor((t+n)/2),a=r[i];if(a[0][0]<=e&&a[0][1]>=e)return a;a[0][0]>e?n=i-1:t=i+1}return null}var s=/[\uD800-\uDBFF][\uDC00-\uDFFF]/g;function c(e){return e.replace(s,`_`).length}function l(e,t,n){for(var r=!1,a=``,s=c(e),l=0;l253||s.length===0)&&(a.error=!0);for(var c=0;c63||o.length===0){a.error=!0;break}}return a.error?null:o.join(`.`)},t.exports.toUnicode=function(e,t){var n=f(e,t,i.NONTRANSITIONAL);return{domain:n.string,error:n.error}},t.exports.PROCESSING_OPTIONS=i})),ir=s(((e,t)=>{let n=require(`punycode`),r=rr(),i={ftp:21,file:null,gopher:70,http:80,https:443,ws:80,wss:443},a=Symbol(`failure`);function o(e){return n.ucs2.decode(e).length}function s(e,t){let n=e[t];return isNaN(n)?void 0:String.fromCodePoint(n)}function c(e){return e>=48&&e<=57}function l(e){return e>=65&&e<=90||e>=97&&e<=122}function u(e){return l(e)||c(e)}function d(e){return c(e)||e>=65&&e<=70||e>=97&&e<=102}function f(e){return e===`.`||e.toLowerCase()===`%2e`}function p(e){return e=e.toLowerCase(),e===`..`||e===`%2e.`||e===`.%2e`||e===`%2e%2e`}function m(e,t){return l(e)&&(t===58||t===124)}function h(e){return e.length===2&&l(e.codePointAt(0))&&(e[1]===`:`||e[1]===`|`)}function g(e){return e.length===2&&l(e.codePointAt(0))&&e[1]===`:`}function _(e){return e.search(/\u0000|\u0009|\u000A|\u000D|\u0020|#|%|\/|:|\?|@|\[|\\|\]/)!==-1}function v(e){return e.search(/\u0000|\u0009|\u000A|\u000D|\u0020|#|\/|:|\?|@|\[|\\|\]/)!==-1}function y(e){return i[e]!==void 0}function b(e){return y(e.scheme)}function x(e){return i[e]}function S(e){let t=e.toString(16).toUpperCase();return t.length===1&&(t=`0`+t),`%`+t}function C(e){let t=new Buffer(e),n=``;for(let e=0;e126}let E=new Set([32,34,35,60,62,63,96,123,125]);function D(e){return T(e)||E.has(e)}let O=new Set([47,58,59,61,64,91,92,93,94,124]);function k(e){return D(e)||O.has(e)}function A(e,t){let n=String.fromCodePoint(e);return t(e)?C(n):n}function j(e){let t=10;return e.length>=2&&e.charAt(0)===`0`&&e.charAt(1).toLowerCase()===`x`?(e=e.substring(2),t=16):e.length>=2&&e.charAt(0)===`0`&&(e=e.substring(1),t=8),e===``?0:(t===10?/[^0-9]/:t===16?/[^0-9A-Fa-f]/:/[^0-7]/).test(e)?a:parseInt(e,t)}function M(e){let t=e.split(`.`);if(t[t.length-1]===``&&t.length>1&&t.pop(),t.length>4)return e;let n=[];for(let r of t){if(r===``)return e;let t=j(r);if(t===a)return e;n.push(t)}for(let e=0;e255)return a;if(n[n.length-1]>=256**(5-n.length))return a;let r=n.pop(),i=0;for(let e of n)r+=e*256**(3-i),++i;return r}function N(e){let t=``,n=e;for(let e=1;e<=4;++e)t=String(n%256)+t,e!==4&&(t=`.`+t),n=Math.floor(n/256);return t}function ee(e){let t=[0,0,0,0,0,0,0,0],r=0,i=null,o=0;if(e=n.ucs2.decode(e),e[o]===58){if(e[o+1]!==58)return a;o+=2,++r,i=r}for(;o6))return a;let n=0;for(;e[o]!==void 0;){let i=null;if(n>0)if(e[o]===46&&n<4)++o;else return a;if(!c(e[o]))return a;for(;c(e[o]);){let t=parseInt(s(e,o));if(i===null)i=t;else if(i===0)return a;else i=i*10+t;if(i>255)return a;++o}t[r]=t[r]*256+i,++n,(n===2||n===4)&&++r}if(n!==4)return a;break}else if(e[o]===58){if(++o,e[o]===void 0)return a}else if(e[o]!==void 0)return a;t[r]=n,++r}if(i!==null){let e=r-i;for(r=7;r!==0&&e>0;){let n=t[i+e-1];t[i+e-1]=t[r],t[r]=n,--r,--e}}else if(i===null&&r!==8)return a;return t}function P(e){let t=``,n=L(e).idx,r=!1;for(let i=0;i<=7;++i)if(!(r&&e[i]===0)){if(r&&=!1,n===i){t+=i===0?`::`:`:`,r=!0;continue}t+=e[i].toString(16),i!==7&&(t+=`:`)}return t}function F(e,t){if(e[0]===`[`)return e[e.length-1]===`]`?ee(e.substring(1,e.length-1)):a;if(!t)return I(e);let n=w(e),i=r.toASCII(n,!1,r.PROCESSING_OPTIONS.NONTRANSITIONAL,!1);if(i===null||_(i))return a;let o=M(i);return typeof o==`number`||o===a?o:i}function I(e){if(v(e))return a;let t=``,r=n.ucs2.decode(e);for(let e=0;en&&(t=r,n=i),r=null,i=0);return i>n&&(t=r,n=i),{idx:t,len:n}}function R(e){return typeof e==`number`?N(e):e instanceof Array?`[`+P(e)+`]`:e}function z(e){return e.replace(/^[\u0000-\u001F\u0020]+|[\u0000-\u001F\u0020]+$/g,``)}function B(e){return e.replace(/\u0009|\u000A|\u000D/g,``)}function te(e){let t=e.path;t.length!==0&&(e.scheme===`file`&&t.length===1&&re(t[0])||t.pop())}function V(e){return e.username!==``||e.password!==``}function ne(e){return e.host===null||e.host===``||e.cannotBeABaseURL||e.scheme===`file`}function re(e){return/^[A-Za-z]:$/.test(e)}function H(e,t,r,i,o){if(this.pointer=0,this.input=e,this.base=t||null,this.encodingOverride=r||`utf-8`,this.stateOverride=o,this.url=i,this.failure=!1,this.parseError=!1,!this.url){this.url={scheme:``,username:``,password:``,host:null,port:null,path:[],query:null,fragment:null,cannotBeABaseURL:!1};let e=z(this.input);e!==this.input&&(this.parseError=!0),this.input=e}let s=B(this.input);for(s!==this.input&&(this.parseError=!0),this.input=s,this.state=o||`scheme start`,this.buffer=``,this.atFlag=!1,this.arrFlag=!1,this.passwordTokenSeenFlag=!1,this.input=n.ucs2.decode(this.input);this.pointer<=this.input.length;++this.pointer){let e=this.input[this.pointer],t=isNaN(e)?void 0:String.fromCodePoint(e),n=this[`parse `+this.state](e,t);if(n){if(n===a){this.failure=!0;break}}else break}}H.prototype[`parse scheme start`]=function(e,t){if(l(e))this.buffer+=t.toLowerCase(),this.state=`scheme`;else if(!this.stateOverride)this.state=`no scheme`,--this.pointer;else return this.parseError=!0,a;return!0},H.prototype[`parse scheme`]=function(e,t){if(u(e)||e===43||e===45||e===46)this.buffer+=t.toLowerCase();else if(e===58){if(this.stateOverride&&(b(this.url)&&!y(this.buffer)||!b(this.url)&&y(this.buffer)||(V(this.url)||this.url.port!==null)&&this.buffer===`file`||this.url.scheme===`file`&&(this.url.host===``||this.url.host===null))||(this.url.scheme=this.buffer,this.buffer=``,this.stateOverride))return!1;this.url.scheme===`file`?((this.input[this.pointer+1]!==47||this.input[this.pointer+2]!==47)&&(this.parseError=!0),this.state=`file`):b(this.url)&&this.base!==null&&this.base.scheme===this.url.scheme?this.state=`special relative or authority`:b(this.url)?this.state=`special authority slashes`:this.input[this.pointer+1]===47?(this.state=`path or authority`,++this.pointer):(this.url.cannotBeABaseURL=!0,this.url.path.push(``),this.state=`cannot-be-a-base-URL path`)}else if(!this.stateOverride)this.buffer=``,this.state=`no scheme`,this.pointer=-1;else return this.parseError=!0,a;return!0},H.prototype[`parse no scheme`]=function(e){return this.base===null||this.base.cannotBeABaseURL&&e!==35?a:(this.base.cannotBeABaseURL&&e===35?(this.url.scheme=this.base.scheme,this.url.path=this.base.path.slice(),this.url.query=this.base.query,this.url.fragment=``,this.url.cannotBeABaseURL=!0,this.state=`fragment`):this.base.scheme===`file`?(this.state=`file`,--this.pointer):(this.state=`relative`,--this.pointer),!0)},H.prototype[`parse special relative or authority`]=function(e){return e===47&&this.input[this.pointer+1]===47?(this.state=`special authority ignore slashes`,++this.pointer):(this.parseError=!0,this.state=`relative`,--this.pointer),!0},H.prototype[`parse path or authority`]=function(e){return e===47?this.state=`authority`:(this.state=`path`,--this.pointer),!0},H.prototype[`parse relative`]=function(e){return this.url.scheme=this.base.scheme,isNaN(e)?(this.url.username=this.base.username,this.url.password=this.base.password,this.url.host=this.base.host,this.url.port=this.base.port,this.url.path=this.base.path.slice(),this.url.query=this.base.query):e===47?this.state=`relative slash`:e===63?(this.url.username=this.base.username,this.url.password=this.base.password,this.url.host=this.base.host,this.url.port=this.base.port,this.url.path=this.base.path.slice(),this.url.query=``,this.state=`query`):e===35?(this.url.username=this.base.username,this.url.password=this.base.password,this.url.host=this.base.host,this.url.port=this.base.port,this.url.path=this.base.path.slice(),this.url.query=this.base.query,this.url.fragment=``,this.state=`fragment`):b(this.url)&&e===92?(this.parseError=!0,this.state=`relative slash`):(this.url.username=this.base.username,this.url.password=this.base.password,this.url.host=this.base.host,this.url.port=this.base.port,this.url.path=this.base.path.slice(0,this.base.path.length-1),this.state=`path`,--this.pointer),!0},H.prototype[`parse relative slash`]=function(e){return b(this.url)&&(e===47||e===92)?(e===92&&(this.parseError=!0),this.state=`special authority ignore slashes`):e===47?this.state=`authority`:(this.url.username=this.base.username,this.url.password=this.base.password,this.url.host=this.base.host,this.url.port=this.base.port,this.state=`path`,--this.pointer),!0},H.prototype[`parse special authority slashes`]=function(e){return e===47&&this.input[this.pointer+1]===47?(this.state=`special authority ignore slashes`,++this.pointer):(this.parseError=!0,this.state=`special authority ignore slashes`,--this.pointer),!0},H.prototype[`parse special authority ignore slashes`]=function(e){return e!==47&&e!==92?(this.state=`authority`,--this.pointer):this.parseError=!0,!0},H.prototype[`parse authority`]=function(e,t){if(e===64){this.parseError=!0,this.atFlag&&(this.buffer=`%40`+this.buffer),this.atFlag=!0;let e=o(this.buffer);for(let t=0;t2**16-1)return this.parseError=!0,a;this.url.port=e===x(this.url.scheme)?null:e,this.buffer=``}if(this.stateOverride)return!1;this.state=`path start`,--this.pointer}else return this.parseError=!0,a;return!0};let ie=new Set([47,92,63,35]);H.prototype[`parse file`]=function(e){return this.url.scheme=`file`,e===47||e===92?(e===92&&(this.parseError=!0),this.state=`file slash`):this.base!==null&&this.base.scheme===`file`?isNaN(e)?(this.url.host=this.base.host,this.url.path=this.base.path.slice(),this.url.query=this.base.query):e===63?(this.url.host=this.base.host,this.url.path=this.base.path.slice(),this.url.query=``,this.state=`query`):e===35?(this.url.host=this.base.host,this.url.path=this.base.path.slice(),this.url.query=this.base.query,this.url.fragment=``,this.state=`fragment`):(this.input.length-this.pointer-1==0||!m(e,this.input[this.pointer+1])||this.input.length-this.pointer-1>=2&&!ie.has(this.input[this.pointer+2])?(this.url.host=this.base.host,this.url.path=this.base.path.slice(),te(this.url)):this.parseError=!0,this.state=`path`,--this.pointer):(this.state=`path`,--this.pointer),!0},H.prototype[`parse file slash`]=function(e){return e===47||e===92?(e===92&&(this.parseError=!0),this.state=`file host`):(this.base!==null&&this.base.scheme===`file`&&(g(this.base.path[0])?this.url.path.push(this.base.path[0]):this.url.host=this.base.host),this.state=`path`,--this.pointer),!0},H.prototype[`parse file host`]=function(e,t){if(isNaN(e)||e===47||e===92||e===63||e===35)if(--this.pointer,!this.stateOverride&&h(this.buffer))this.parseError=!0,this.state=`path`;else if(this.buffer===``){if(this.url.host=``,this.stateOverride)return!1;this.state=`path start`}else{let e=F(this.buffer,b(this.url));if(e===a)return a;if(e===`localhost`&&(e=``),this.url.host=e,this.stateOverride)return!1;this.buffer=``,this.state=`path start`}else this.buffer+=t;return!0},H.prototype[`parse path start`]=function(e){return b(this.url)?(e===92&&(this.parseError=!0),this.state=`path`,e!==47&&e!==92&&--this.pointer):!this.stateOverride&&e===63?(this.url.query=``,this.state=`query`):!this.stateOverride&&e===35?(this.url.fragment=``,this.state=`fragment`):e!==void 0&&(this.state=`path`,e!==47&&--this.pointer),!0},H.prototype[`parse path`]=function(e){if(isNaN(e)||e===47||b(this.url)&&e===92||!this.stateOverride&&(e===63||e===35)){if(b(this.url)&&e===92&&(this.parseError=!0),p(this.buffer)?(te(this.url),e!==47&&!(b(this.url)&&e===92)&&this.url.path.push(``)):f(this.buffer)&&e!==47&&!(b(this.url)&&e===92)?this.url.path.push(``):f(this.buffer)||(this.url.scheme===`file`&&this.url.path.length===0&&h(this.buffer)&&(this.url.host!==``&&this.url.host!==null&&(this.parseError=!0,this.url.host=``),this.buffer=this.buffer[0]+`:`),this.url.path.push(this.buffer)),this.buffer=``,this.url.scheme===`file`&&(e===void 0||e===63||e===35))for(;this.url.path.length>1&&this.url.path[0]===``;)this.parseError=!0,this.url.path.shift();e===63&&(this.url.query=``,this.state=`query`),e===35&&(this.url.fragment=``,this.state=`fragment`)}else e===37&&(!d(this.input[this.pointer+1])||!d(this.input[this.pointer+2]))&&(this.parseError=!0),this.buffer+=A(e,D);return!0},H.prototype[`parse cannot-be-a-base-URL path`]=function(e){return e===63?(this.url.query=``,this.state=`query`):e===35?(this.url.fragment=``,this.state=`fragment`):(!isNaN(e)&&e!==37&&(this.parseError=!0),e===37&&(!d(this.input[this.pointer+1])||!d(this.input[this.pointer+2]))&&(this.parseError=!0),isNaN(e)||(this.url.path[0]=this.url.path[0]+A(e,T))),!0},H.prototype[`parse query`]=function(e,t){if(isNaN(e)||!this.stateOverride&&e===35){(!b(this.url)||this.url.scheme===`ws`||this.url.scheme===`wss`)&&(this.encodingOverride=`utf-8`);let t=new Buffer(this.buffer);for(let e=0;e126||t[e]===34||t[e]===35||t[e]===60||t[e]===62?this.url.query+=S(t[e]):this.url.query+=String.fromCodePoint(t[e]);this.buffer=``,e===35&&(this.url.fragment=``,this.state=`fragment`)}else e===37&&(!d(this.input[this.pointer+1])||!d(this.input[this.pointer+2]))&&(this.parseError=!0),this.buffer+=t;return!0},H.prototype[`parse fragment`]=function(e){return isNaN(e)||(e===0?this.parseError=!0:(e===37&&(!d(this.input[this.pointer+1])||!d(this.input[this.pointer+2]))&&(this.parseError=!0),this.url.fragment+=A(e,T))),!0};function U(e,t){let n=e.scheme+`:`;if(e.host===null?e.host===null&&e.scheme===`file`&&(n+=`//`):(n+=`//`,(e.username!==``||e.password!==``)&&(n+=e.username,e.password!==``&&(n+=`:`+e.password),n+=`@`),n+=R(e.host),e.port!==null&&(n+=`:`+e.port)),e.cannotBeABaseURL)n+=e.path[0];else for(let t of e.path)n+=`/`+t;return e.query!==null&&(n+=`?`+e.query),!t&&e.fragment!==null&&(n+=`#`+e.fragment),n}function W(e){let t=e.scheme+`://`;return t+=R(e.host),e.port!==null&&(t+=`:`+e.port),t}t.exports.serializeURL=U,t.exports.serializeURLOrigin=function(e){switch(e.scheme){case`blob`:try{return t.exports.serializeURLOrigin(t.exports.parseURL(e.path[0]))}catch{return`null`}case`ftp`:case`gopher`:case`http`:case`https`:case`ws`:case`wss`:return W({scheme:e.scheme,host:e.host,port:e.port});case`file`:return`file://`;default:return`null`}},t.exports.basicURLParse=function(e,t){t===void 0&&(t={});let n=new H(e,t.baseURL,t.encodingOverride,t.url,t.stateOverride);return n.failure?`failure`:n.url},t.exports.setTheUsername=function(e,t){e.username=``;let r=n.ucs2.decode(t);for(let t=0;t{let t=ir();e.implementation=class{constructor(e){let n=e[0],r=e[1],i=null;if(r!==void 0&&(i=t.basicURLParse(r),i===`failure`))throw TypeError(`Invalid base URL`);let a=t.basicURLParse(n,{baseURL:i});if(a===`failure`)throw TypeError(`Invalid URL`);this._url=a}get href(){return t.serializeURL(this._url)}set href(e){let n=t.basicURLParse(e);if(n===`failure`)throw TypeError(`Invalid URL`);this._url=n}get origin(){return t.serializeURLOrigin(this._url)}get protocol(){return this._url.scheme+`:`}set protocol(e){t.basicURLParse(e+`:`,{url:this._url,stateOverride:`scheme start`})}get username(){return this._url.username}set username(e){t.cannotHaveAUsernamePasswordPort(this._url)||t.setTheUsername(this._url,e)}get password(){return this._url.password}set password(e){t.cannotHaveAUsernamePasswordPort(this._url)||t.setThePassword(this._url,e)}get host(){let e=this._url;return e.host===null?``:e.port===null?t.serializeHost(e.host):t.serializeHost(e.host)+`:`+t.serializeInteger(e.port)}set host(e){this._url.cannotBeABaseURL||t.basicURLParse(e,{url:this._url,stateOverride:`host`})}get hostname(){return this._url.host===null?``:t.serializeHost(this._url.host)}set hostname(e){this._url.cannotBeABaseURL||t.basicURLParse(e,{url:this._url,stateOverride:`hostname`})}get port(){return this._url.port===null?``:t.serializeInteger(this._url.port)}set port(e){t.cannotHaveAUsernamePasswordPort(this._url)||(e===``?this._url.port=null:t.basicURLParse(e,{url:this._url,stateOverride:`port`}))}get pathname(){return this._url.cannotBeABaseURL?this._url.path[0]:this._url.path.length===0?``:`/`+this._url.path.join(`/`)}set pathname(e){this._url.cannotBeABaseURL||(this._url.path=[],t.basicURLParse(e,{url:this._url,stateOverride:`path start`}))}get search(){return this._url.query===null||this._url.query===``?``:`?`+this._url.query}set search(e){let n=this._url;if(e===``){n.query=null;return}let r=e[0]===`?`?e.substring(1):e;n.query=``,t.basicURLParse(r,{url:n,stateOverride:`query`})}get hash(){return this._url.fragment===null||this._url.fragment===``?``:`#`+this._url.fragment}set hash(e){if(e===``){this._url.fragment=null;return}let n=e[0]===`#`?e.substring(1):e;this._url.fragment=``,t.basicURLParse(n,{url:this._url,stateOverride:`fragment`})}toJSON(){return this.href}}})),or=s(((e,t)=>{let n=er(),r=tr(),i=ar(),a=r.implSymbol;function o(e){if(!this||this[a]||!(this instanceof o))throw TypeError(`Failed to construct 'URL': Please use the 'new' operator, this DOM object constructor cannot be called as a function.`);if(arguments.length<1)throw TypeError(`Failed to construct 'URL': 1 argument required, but only `+arguments.length+` present.`);let r=[];for(let e=0;e{e.URL=or().interface,e.serializeURL=ir().serializeURL,e.serializeURLOrigin=ir().serializeURLOrigin,e.basicURLParse=ir().basicURLParse,e.setTheUsername=ir().setTheUsername,e.setThePassword=ir().setThePassword,e.serializeHost=ir().serializeHost,e.serializeInteger=ir().serializeInteger,e.parseURL=ir().parseURL})),cr=s(((e,t)=>{Object.defineProperty(e,`__esModule`,{value:!0});function n(e){return e&&typeof e==`object`&&`default`in e?e.default:e}var r=n(require(`stream`)),i=n(require(`http`)),a=n(require(`url`)),o=n(sr()),s=n(require(`https`)),c=n(require(`zlib`));let l=r.Readable,u=Symbol(`buffer`),d=Symbol(`type`);var f=class e{constructor(){this[d]=``;let t=arguments[0],n=arguments[1],r=[],i=0;if(t){let n=t,a=Number(n.length);for(let t=0;t1&&arguments[1]!==void 0?arguments[1]:{},i=n.size;let a=i===void 0?0:i;var o=n.timeout;let s=o===void 0?0:o;e==null?e=null:b(e)?e=Buffer.from(e.toString()):x(e)||Buffer.isBuffer(e)||(Object.prototype.toString.call(e)===`[object ArrayBuffer]`?e=Buffer.from(e):ArrayBuffer.isView(e)?e=Buffer.from(e.buffer,e.byteOffset,e.byteLength):e instanceof r||(e=Buffer.from(String(e)))),this[h]={body:e,disturbed:!1,error:null},this.size=a,this.timeout=s,e instanceof r&&e.on(`error`,function(e){let n=e.name===`AbortError`?e:new p(`Invalid response body while trying to fetch ${t.url}: ${e.message}`,`system`,e);t[h].error=n})}_.prototype={get body(){return this[h].body},get bodyUsed(){return this[h].disturbed},arrayBuffer(){return v.call(this).then(function(e){return e.buffer.slice(e.byteOffset,e.byteOffset+e.byteLength)})},blob(){let e=this.headers&&this.headers.get(`content-type`)||``;return v.call(this).then(function(t){return Object.assign(new f([],{type:e.toLowerCase()}),{[u]:t})})},json(){var e=this;return v.call(this).then(function(t){try{return JSON.parse(t.toString())}catch(t){return _.Promise.reject(new p(`invalid json response body at ${e.url} reason: ${t.message}`,`invalid-json`))}})},text(){return v.call(this).then(function(e){return e.toString()})},buffer(){return v.call(this)},textConverted(){var e=this;return v.call(this).then(function(t){return y(t,e.headers)})}},Object.defineProperties(_.prototype,{body:{enumerable:!0},bodyUsed:{enumerable:!0},arrayBuffer:{enumerable:!0},blob:{enumerable:!0},json:{enumerable:!0},text:{enumerable:!0}}),_.mixIn=function(e){for(let t of Object.getOwnPropertyNames(_.prototype))if(!(t in e)){let n=Object.getOwnPropertyDescriptor(_.prototype,t);Object.defineProperty(e,t,n)}};function v(){var e=this;if(this[h].disturbed)return _.Promise.reject(TypeError(`body used already for: ${this.url}`));if(this[h].disturbed=!0,this[h].error)return _.Promise.reject(this[h].error);let t=this.body;if(t===null)return _.Promise.resolve(Buffer.alloc(0));if(x(t)&&(t=t.stream()),Buffer.isBuffer(t))return _.Promise.resolve(t);if(!(t instanceof r))return _.Promise.resolve(Buffer.alloc(0));let n=[],i=0,a=!1;return new _.Promise(function(r,o){let s;e.timeout&&(s=setTimeout(function(){a=!0,o(new p(`Response timeout while trying to fetch ${e.url} (over ${e.timeout}ms)`,`body-timeout`))},e.timeout)),t.on(`error`,function(t){t.name===`AbortError`?(a=!0,o(t)):o(new p(`Invalid response body while trying to fetch ${e.url}: ${t.message}`,`system`,t))}),t.on(`data`,function(t){if(!(a||t===null)){if(e.size&&i+t.length>e.size){a=!0,o(new p(`content size at ${e.url} over limit: ${e.size}`,`max-size`));return}i+=t.length,n.push(t)}}),t.on(`end`,function(){if(!a){clearTimeout(s);try{r(Buffer.concat(n,i))}catch(t){o(new p(`Could not create Buffer from response body for ${e.url}: ${t.message}`,`system`,t))}}})})}function y(e,t){if(typeof m!=`function`)throw Error("The package `encoding` must be installed to use the textConverted() function");let n=t.get(`content-type`),r=`utf-8`,i,a;return n&&(i=/charset=([^;]*)/i.exec(n)),a=e.slice(0,1024).toString(),!i&&a&&(i=/0&&arguments[0]!==void 0?arguments[0]:void 0;if(this[j]=Object.create(null),t instanceof e){let e=t.raw(),n=Object.keys(e);for(let t of n)for(let n of e[t])this.append(t,n);return}if(t!=null)if(typeof t==`object`){let e=t[Symbol.iterator];if(e!=null){if(typeof e!=`function`)throw TypeError(`Header pairs must be iterable`);let n=[];for(let e of t){if(typeof e!=`object`||typeof e[Symbol.iterator]!=`function`)throw TypeError(`Each header pair must be iterable`);n.push(Array.from(e))}for(let e of n){if(e.length!==2)throw TypeError(`Each header pair must be a name/value tuple`);this.append(e[0],e[1])}}else for(let e of Object.keys(t)){let n=t[e];this.append(e,n)}}else throw TypeError(`Provided initializer must be an object`)}get(e){e=`${e}`,O(e);let t=A(this[j],e);return t===void 0?null:this[j][t].join(`, `)}forEach(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:void 0,n=N(this),r=0;for(;r1&&arguments[1]!==void 0?arguments[1]:`key+value`;return Object.keys(e[j]).sort().map(t===`key`?function(e){return e.toLowerCase()}:t===`value`?function(t){return e[j][t].join(`, `)}:function(t){return[t.toLowerCase(),e[j][t].join(`, `)]})}let ee=Symbol(`internal`);function P(e,t){let n=Object.create(F);return n[ee]={target:e,kind:t,index:0},n}let F=Object.setPrototypeOf({next(){if(!this||Object.getPrototypeOf(this)!==F)throw TypeError("Value of `this` is not a HeadersIterator");var e=this[ee];let t=e.target,n=e.kind,r=e.index,i=N(t,n);return r>=i.length?{value:void 0,done:!0}:(this[ee].index=r+1,{value:i[r],done:!1})}},Object.getPrototypeOf(Object.getPrototypeOf([][Symbol.iterator]())));Object.defineProperty(F,Symbol.toStringTag,{value:`HeadersIterator`,writable:!1,enumerable:!1,configurable:!0});function I(e){let t=Object.assign({__proto__:null},e[j]),n=A(e[j],`Host`);return n!==void 0&&(t[n]=t[n][0]),t}function L(e){let t=new M;for(let n of Object.keys(e))if(!E.test(n))if(Array.isArray(e[n]))for(let r of e[n])D.test(r)||(t[j][n]===void 0?t[j][n]=[r]:t[j][n].push(r));else D.test(e[n])||(t[j][n]=[e[n]]);return t}let R=Symbol(`Response internals`),z=i.STATUS_CODES;var B=class e{constructor(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:null,t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};_.call(this,e,t);let n=t.status||200,r=new M(t.headers);if(e!=null&&!r.has(`Content-Type`)){let t=C(e);t&&r.append(`Content-Type`,t)}this[R]={url:t.url,status:n,statusText:t.statusText||z[n],headers:r,counter:t.counter}}get url(){return this[R].url||``}get status(){return this[R].status}get ok(){return this[R].status>=200&&this[R].status<300}get redirected(){return this[R].counter>0}get statusText(){return this[R].statusText}get headers(){return this[R].headers}clone(){return new e(S(this),{url:this.url,status:this.status,statusText:this.statusText,headers:this.headers,ok:this.ok,redirected:this.redirected})}};_.mixIn(B.prototype),Object.defineProperties(B.prototype,{url:{enumerable:!0},status:{enumerable:!0},ok:{enumerable:!0},redirected:{enumerable:!0},statusText:{enumerable:!0},headers:{enumerable:!0},clone:{enumerable:!0}}),Object.defineProperty(B.prototype,Symbol.toStringTag,{value:`Response`,writable:!1,enumerable:!1,configurable:!0});let te=Symbol(`Request internals`),V=a.URL||o.URL,ne=a.parse,re=a.format;function H(e){return/^[a-zA-Z][a-zA-Z\d+\-.]*:/.exec(e)&&(e=new V(e).toString()),ne(e)}let ie=`destroy`in r.Readable.prototype;function U(e){return typeof e==`object`&&typeof e[te]==`object`}function W(e){let t=e&&typeof e==`object`&&Object.getPrototypeOf(e);return!!(t&&t.constructor.name===`AbortSignal`)}var ae=class e{constructor(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},n;U(e)?n=H(e.url):(n=e&&e.href?H(e.href):H(`${e}`),e={});let r=t.method||e.method||`GET`;if(r=r.toUpperCase(),(t.body!=null||U(e)&&e.body!==null)&&(r===`GET`||r===`HEAD`))throw TypeError(`Request with GET/HEAD method cannot have body`);let i=t.body==null?U(e)&&e.body!==null?S(e):null:t.body;_.call(this,i,{timeout:t.timeout||e.timeout||0,size:t.size||e.size||0});let a=new M(t.headers||e.headers||{});if(i!=null&&!a.has(`Content-Type`)){let e=C(i);e&&a.append(`Content-Type`,e)}let o=U(e)?e.signal:null;if(`signal`in t&&(o=t.signal),o!=null&&!W(o))throw TypeError(`Expected signal to be an instanceof AbortSignal`);this[te]={method:r,redirect:t.redirect||e.redirect||`follow`,headers:a,parsedURL:n,signal:o},this.follow=t.follow===void 0?e.follow===void 0?20:e.follow:t.follow,this.compress=t.compress===void 0?e.compress===void 0?!0:e.compress:t.compress,this.counter=t.counter||e.counter||0,this.agent=t.agent||e.agent}get method(){return this[te].method}get url(){return re(this[te].parsedURL)}get headers(){return this[te].headers}get redirect(){return this[te].redirect}get signal(){return this[te].signal}clone(){return new e(this)}};_.mixIn(ae.prototype),Object.defineProperty(ae.prototype,Symbol.toStringTag,{value:`Request`,writable:!1,enumerable:!1,configurable:!0}),Object.defineProperties(ae.prototype,{method:{enumerable:!0},url:{enumerable:!0},headers:{enumerable:!0},redirect:{enumerable:!0},clone:{enumerable:!0},signal:{enumerable:!0}});function G(e){let t=e[te].parsedURL,n=new M(e[te].headers);if(n.has(`Accept`)||n.set(`Accept`,`*/*`),!t.protocol||!t.hostname)throw TypeError(`Only absolute URLs are supported`);if(!/^https?:$/.test(t.protocol))throw TypeError(`Only HTTP(S) protocols are supported`);if(e.signal&&e.body instanceof r.Readable&&!ie)throw Error(`Cancellation of streamed requests with AbortSignal is not supported in node < 8`);let i=null;if(e.body==null&&/^(POST|PUT)$/i.test(e.method)&&(i=`0`),e.body!=null){let t=w(e);typeof t==`number`&&(i=String(t))}i&&n.set(`Content-Length`,i),n.has(`User-Agent`)||n.set(`User-Agent`,`node-fetch/1.0 (+https://github.com/bitinn/node-fetch)`),e.compress&&!n.has(`Accept-Encoding`)&&n.set(`Accept-Encoding`,`gzip,deflate`);let a=e.agent;return typeof a==`function`&&(a=a(t)),Object.assign({},t,{method:e.method,headers:I(n),agent:a})}function oe(e){Error.call(this,e),this.type=`aborted`,this.message=e,Error.captureStackTrace(this,this.constructor)}oe.prototype=Object.create(Error.prototype),oe.prototype.constructor=oe,oe.prototype.name=`AbortError`;let se=a.URL||o.URL,ce=r.PassThrough,le=function(e,t){let n=new se(t).hostname,r=new se(e).hostname;return n===r||n[n.length-r.length-1]===`.`&&n.endsWith(r)},ue=function(e,t){return new se(t).protocol===new se(e).protocol};function de(e,t){if(!de.Promise)throw Error(`native promise missing, set fetch.Promise to your favorite alternative`);return _.Promise=de.Promise,new de.Promise(function(n,a){let o=new ae(e,t),l=G(o),u=(l.protocol===`https:`?s:i).request,d=o.signal,f=null,m=function(){let e=new oe(`The user aborted a request.`);a(e),o.body&&o.body instanceof r.Readable&&pe(o.body,e),!(!f||!f.body)&&f.body.emit(`error`,e)};if(d&&d.aborted){m();return}let h=function(){m(),v()},g=u(l),_;d&&d.addEventListener(`abort`,h);function v(){g.abort(),d&&d.removeEventListener(`abort`,h),clearTimeout(_)}o.timeout&&g.once(`socket`,function(e){_=setTimeout(function(){a(new p(`network timeout at: ${o.url}`,`request-timeout`)),v()},o.timeout)}),g.on(`error`,function(e){a(new p(`request to ${o.url} failed, reason: ${e.message}`,`system`,e)),f&&f.body&&pe(f.body,e),v()}),fe(g,function(e){d&&d.aborted||f&&f.body&&pe(f.body,e)}),parseInt(process.version.substring(1))<14&&g.on(`socket`,function(e){e.addListener(`close`,function(t){let n=e.listenerCount(`data`)>0;if(f&&n&&!t&&!(d&&d.aborted)){let e=Error(`Premature close`);e.code=`ERR_STREAM_PREMATURE_CLOSE`,f.body.emit(`error`,e)}})}),g.on(`response`,function(e){clearTimeout(_);let t=L(e.headers);if(de.isRedirect(e.statusCode)){let r=t.get(`Location`),i=null;try{i=r===null?null:new se(r,o.url).toString()}catch{if(o.redirect!==`manual`){a(new p(`uri requested responds with an invalid redirect URL: ${r}`,`invalid-redirect`)),v();return}}switch(o.redirect){case`error`:a(new p(`uri requested responds with a redirect, redirect mode is set to error: ${o.url}`,`no-redirect`)),v();return;case`manual`:if(i!==null)try{t.set(`Location`,i)}catch(e){a(e)}break;case`follow`:if(i===null)break;if(o.counter>=o.follow){a(new p(`maximum redirect reached at: ${o.url}`,`max-redirect`)),v();return}let r={headers:new M(o.headers),follow:o.follow,counter:o.counter+1,agent:o.agent,compress:o.compress,method:o.method,body:o.body,signal:o.signal,timeout:o.timeout,size:o.size};if(!le(o.url,i)||!ue(o.url,i))for(let e of[`authorization`,`www-authenticate`,`cookie`,`cookie2`])r.headers.delete(e);if(e.statusCode!==303&&o.body&&w(o)===null){a(new p(`Cannot follow redirect with body being a readable stream`,`unsupported-redirect`)),v();return}(e.statusCode===303||(e.statusCode===301||e.statusCode===302)&&o.method===`POST`)&&(r.method=`GET`,r.body=void 0,r.headers.delete(`content-length`)),n(de(new ae(i,r))),v();return}}e.once(`end`,function(){d&&d.removeEventListener(`abort`,h)});let r=e.pipe(new ce),i={url:o.url,status:e.statusCode,statusText:e.statusMessage,headers:t,size:o.size,timeout:o.timeout,counter:o.counter},s=t.get(`Content-Encoding`);if(!o.compress||o.method===`HEAD`||s===null||e.statusCode===204||e.statusCode===304){f=new B(r,i),n(f);return}let l={flush:c.Z_SYNC_FLUSH,finishFlush:c.Z_SYNC_FLUSH};if(s==`gzip`||s==`x-gzip`){r=r.pipe(c.createGunzip(l)),f=new B(r,i),n(f);return}if(s==`deflate`||s==`x-deflate`){let t=e.pipe(new ce);t.once(`data`,function(e){r=(e[0]&15)==8?r.pipe(c.createInflate()):r.pipe(c.createInflateRaw()),f=new B(r,i),n(f)}),t.on(`end`,function(){f||(f=new B(r,i),n(f))});return}if(s==`br`&&typeof c.createBrotliDecompress==`function`){r=r.pipe(c.createBrotliDecompress()),f=new B(r,i),n(f);return}f=new B(r,i),n(f)}),T(g,o)})}function fe(e,t){let n;e.on(`socket`,function(e){n=e}),e.on(`response`,function(e){let r=e.headers;r[`transfer-encoding`]===`chunked`&&!r[`content-length`]&&e.once(`close`,function(e){if(n&&n.listenerCount(`data`)>0&&!e){let e=Error(`Premature close`);e.code=`ERR_STREAM_PREMATURE_CLOSE`,t(e)}})})}function pe(e,t){e.destroy?e.destroy(t):(e.emit(`error`,t),e.end())}de.isRedirect=function(e){return e===301||e===302||e===303||e===307||e===308},de.Promise=global.Promise,t.exports=e=de,Object.defineProperty(e,`__esModule`,{value:!0}),e.default=e,e.Headers=M,e.Request=ae,e.Response=B,e.FetchError=p,e.AbortError=oe})),lr=s((e=>{var t=e&&e.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(e,`__esModule`,{value:!0}),e.installBicepCliWithArch=e.getBicepCliDownloadUrl=void 0;let n=t(require(`path`)),r=t(require(`fs/promises`)),i=t(cr()),a=`https://downloads.bicep.azure.com`,o=`${a}/releases/latest`,s=(e,t)=>`${a}/${e}/${t}`;async function c(){let e=await(0,i.default)(o);if(!e.ok)throw`Failed to find latest release of Bicep CLI. Status code: ${e.status}`;return(await e.json()).tag_name}function l(e,t,n){switch(`${e}_${t}`.toLowerCase()){case`win32_x64`:return s(n,`bicep-win-x64.exe`);case`win32_arm64`:return s(n,`bicep-win-arm64.exe`);case`linux_x64`:return s(n,`bicep-linux-x64`);case`linux_arm64`:return s(n,`bicep-linux-arm64`);case`darwin_x64`:return s(n,`bicep-osx-x64`);case`darwin_arm64`:return s(n,`bicep-osx-arm64`);default:throw`Bicep CLI is not available for platform ${e} and architecture ${t}`}}async function u(e,t,n){return l(e,t,n?`v${n}`:await c())}e.getBicepCliDownloadUrl=u;async function d(e,t,a,o){let s=t===`win32`?`bicep.exe`:`bicep`,c=await u(t,a,o),l=await(0,i.default)(c);if(!l.ok)throw`Failed to download Bicep CLI. Status code: ${l.status}`;let d=await l.arrayBuffer(),f=n.default.join(e,s);return await r.default.writeFile(f,Buffer.from(d)),await r.default.chmod(f,493),f}e.installBicepCliWithArch=d})),ur=s((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.stringArray=e.array=e.func=e.error=e.number=e.string=e.boolean=void 0;function t(e){return e===!0||e===!1}e.boolean=t;function n(e){return typeof e==`string`||e instanceof String}e.string=n;function r(e){return typeof e==`number`||e instanceof Number}e.number=r;function i(e){return e instanceof Error}e.error=i;function a(e){return typeof e==`function`}e.func=a;function o(e){return Array.isArray(e)}e.array=o;function s(e){return o(e)&&e.every(e=>n(e))}e.stringArray=s})),dr=s((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.Message=e.NotificationType9=e.NotificationType8=e.NotificationType7=e.NotificationType6=e.NotificationType5=e.NotificationType4=e.NotificationType3=e.NotificationType2=e.NotificationType1=e.NotificationType0=e.NotificationType=e.RequestType9=e.RequestType8=e.RequestType7=e.RequestType6=e.RequestType5=e.RequestType4=e.RequestType3=e.RequestType2=e.RequestType1=e.RequestType=e.RequestType0=e.AbstractMessageSignature=e.ParameterStructures=e.ResponseError=e.ErrorCodes=void 0;let t=ur();var n;(function(e){e.ParseError=-32700,e.InvalidRequest=-32600,e.MethodNotFound=-32601,e.InvalidParams=-32602,e.InternalError=-32603,e.jsonrpcReservedErrorRangeStart=-32099,e.serverErrorStart=-32099,e.MessageWriteError=-32099,e.MessageReadError=-32098,e.PendingResponseRejected=-32097,e.ConnectionInactive=-32096,e.ServerNotInitialized=-32002,e.UnknownErrorCode=-32001,e.jsonrpcReservedErrorRangeEnd=-32e3,e.serverErrorEnd=-32e3})(n||(e.ErrorCodes=n={})),e.ResponseError=class e extends Error{constructor(r,i,a){super(i),this.code=t.number(r)?r:n.UnknownErrorCode,this.data=a,Object.setPrototypeOf(this,e.prototype)}toJson(){let e={code:this.code,message:this.message};return this.data!==void 0&&(e.data=this.data),e}};var r=class e{constructor(e){this.kind=e}static is(t){return t===e.auto||t===e.byName||t===e.byPosition}toString(){return this.kind}};e.ParameterStructures=r,r.auto=new r(`auto`),r.byPosition=new r(`byPosition`),r.byName=new r(`byName`);var i=class{constructor(e,t){this.method=e,this.numberOfParams=t}get parameterStructures(){return r.auto}};e.AbstractMessageSignature=i,e.RequestType0=class extends i{constructor(e){super(e,0)}},e.RequestType=class extends i{constructor(e,t=r.auto){super(e,1),this._parameterStructures=t}get parameterStructures(){return this._parameterStructures}},e.RequestType1=class extends i{constructor(e,t=r.auto){super(e,1),this._parameterStructures=t}get parameterStructures(){return this._parameterStructures}},e.RequestType2=class extends i{constructor(e){super(e,2)}},e.RequestType3=class extends i{constructor(e){super(e,3)}},e.RequestType4=class extends i{constructor(e){super(e,4)}},e.RequestType5=class extends i{constructor(e){super(e,5)}},e.RequestType6=class extends i{constructor(e){super(e,6)}},e.RequestType7=class extends i{constructor(e){super(e,7)}},e.RequestType8=class extends i{constructor(e){super(e,8)}},e.RequestType9=class extends i{constructor(e){super(e,9)}},e.NotificationType=class extends i{constructor(e,t=r.auto){super(e,1),this._parameterStructures=t}get parameterStructures(){return this._parameterStructures}},e.NotificationType0=class extends i{constructor(e){super(e,0)}},e.NotificationType1=class extends i{constructor(e,t=r.auto){super(e,1),this._parameterStructures=t}get parameterStructures(){return this._parameterStructures}},e.NotificationType2=class extends i{constructor(e){super(e,2)}},e.NotificationType3=class extends i{constructor(e){super(e,3)}},e.NotificationType4=class extends i{constructor(e){super(e,4)}},e.NotificationType5=class extends i{constructor(e){super(e,5)}},e.NotificationType6=class extends i{constructor(e){super(e,6)}},e.NotificationType7=class extends i{constructor(e){super(e,7)}},e.NotificationType8=class extends i{constructor(e){super(e,8)}},e.NotificationType9=class extends i{constructor(e){super(e,9)}};var a;(function(e){function n(e){let n=e;return n&&t.string(n.method)&&(t.string(n.id)||t.number(n.id))}e.isRequest=n;function r(e){let n=e;return n&&t.string(n.method)&&e.id===void 0}e.isNotification=r;function i(e){let n=e;return n&&(n.result!==void 0||!!n.error)&&(t.string(n.id)||t.number(n.id)||n.id===null)}e.isResponse=i})(a||(e.Message=a={}))})),fr=s((e=>{var t;Object.defineProperty(e,`__esModule`,{value:!0}),e.LRUCache=e.LinkedMap=e.Touch=void 0;var n;(function(e){e.None=0,e.First=1,e.AsOld=e.First,e.Last=2,e.AsNew=e.Last})(n||(e.Touch=n={}));var r=class{constructor(){this[t]=`LinkedMap`,this._map=new Map,this._head=void 0,this._tail=void 0,this._size=0,this._state=0}clear(){this._map.clear(),this._head=void 0,this._tail=void 0,this._size=0,this._state++}isEmpty(){return!this._head&&!this._tail}get size(){return this._size}get first(){return this._head?.value}get last(){return this._tail?.value}has(e){return this._map.has(e)}get(e,t=n.None){let r=this._map.get(e);if(r)return t!==n.None&&this.touch(r,t),r.value}set(e,t,r=n.None){let i=this._map.get(e);if(i)i.value=t,r!==n.None&&this.touch(i,r);else{switch(i={key:e,value:t,next:void 0,previous:void 0},r){case n.None:this.addItemLast(i);break;case n.First:this.addItemFirst(i);break;case n.Last:this.addItemLast(i);break;default:this.addItemLast(i);break}this._map.set(e,i),this._size++}return this}delete(e){return!!this.remove(e)}remove(e){let t=this._map.get(e);if(t)return this._map.delete(e),this.removeItem(t),this._size--,t.value}shift(){if(!this._head&&!this._tail)return;if(!this._head||!this._tail)throw Error(`Invalid list`);let e=this._head;return this._map.delete(e.key),this.removeItem(e),this._size--,e.value}forEach(e,t){let n=this._state,r=this._head;for(;r;){if(t?e.bind(t)(r.value,r.key,this):e(r.value,r.key,this),this._state!==n)throw Error(`LinkedMap got modified during iteration.`);r=r.next}}keys(){let e=this._state,t=this._head,n={[Symbol.iterator]:()=>n,next:()=>{if(this._state!==e)throw Error(`LinkedMap got modified during iteration.`);if(t){let e={value:t.key,done:!1};return t=t.next,e}else return{value:void 0,done:!0}}};return n}values(){let e=this._state,t=this._head,n={[Symbol.iterator]:()=>n,next:()=>{if(this._state!==e)throw Error(`LinkedMap got modified during iteration.`);if(t){let e={value:t.value,done:!1};return t=t.next,e}else return{value:void 0,done:!0}}};return n}entries(){let e=this._state,t=this._head,n={[Symbol.iterator]:()=>n,next:()=>{if(this._state!==e)throw Error(`LinkedMap got modified during iteration.`);if(t){let e={value:[t.key,t.value],done:!1};return t=t.next,e}else return{value:void 0,done:!0}}};return n}[(t=Symbol.toStringTag,Symbol.iterator)](){return this.entries()}trimOld(e){if(e>=this.size)return;if(e===0){this.clear();return}let t=this._head,n=this.size;for(;t&&n>e;)this._map.delete(t.key),t=t.next,n--;this._head=t,this._size=n,t&&(t.previous=void 0),this._state++}addItemFirst(e){if(!this._head&&!this._tail)this._tail=e;else if(this._head)e.next=this._head,this._head.previous=e;else throw Error(`Invalid list`);this._head=e,this._state++}addItemLast(e){if(!this._head&&!this._tail)this._head=e;else if(this._tail)e.previous=this._tail,this._tail.next=e;else throw Error(`Invalid list`);this._tail=e,this._state++}removeItem(e){if(e===this._head&&e===this._tail)this._head=void 0,this._tail=void 0;else if(e===this._head){if(!e.next)throw Error(`Invalid list`);e.next.previous=void 0,this._head=e.next}else if(e===this._tail){if(!e.previous)throw Error(`Invalid list`);e.previous.next=void 0,this._tail=e.previous}else{let t=e.next,n=e.previous;if(!t||!n)throw Error(`Invalid list`);t.previous=n,n.next=t}e.next=void 0,e.previous=void 0,this._state++}touch(e,t){if(!this._head||!this._tail)throw Error(`Invalid list`);if(!(t!==n.First&&t!==n.Last)){if(t===n.First){if(e===this._head)return;let t=e.next,n=e.previous;e===this._tail?(n.next=void 0,this._tail=n):(t.previous=n,n.next=t),e.previous=void 0,e.next=this._head,this._head.previous=e,this._head=e,this._state++}else if(t===n.Last){if(e===this._tail)return;let t=e.next,n=e.previous;e===this._head?(t.previous=void 0,this._head=t):(t.previous=n,n.next=t),e.next=void 0,e.previous=this._tail,this._tail.next=e,this._tail=e,this._state++}}}toJSON(){let e=[];return this.forEach((t,n)=>{e.push([n,t])}),e}fromJSON(e){this.clear();for(let[t,n]of e)this.set(t,n)}};e.LinkedMap=r,e.LRUCache=class extends r{constructor(e,t=1){super(),this._limit=e,this._ratio=Math.min(Math.max(0,t),1)}get limit(){return this._limit}set limit(e){this._limit=e,this.checkTrim()}get ratio(){return this._ratio}set ratio(e){this._ratio=Math.min(Math.max(0,e),1),this.checkTrim()}get(e,t=n.AsNew){return super.get(e,t)}peek(e){return super.get(e,n.None)}set(e,t){return super.set(e,t,n.Last),this.checkTrim(),this}checkTrim(){this.size>this._limit&&this.trimOld(Math.round(this._limit*this._ratio))}}})),pr=s((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.Disposable=void 0;var t;(function(e){function t(e){return{dispose:e}}e.create=t})(t||(e.Disposable=t={}))})),mr=s((e=>{Object.defineProperty(e,`__esModule`,{value:!0});let t;function n(){if(t===void 0)throw Error(`No runtime abstraction layer installed`);return t}(function(e){function n(e){if(e===void 0)throw Error(`No runtime abstraction layer provided`);t=e}e.install=n})(n||={}),e.default=n})),hr=s((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.Emitter=e.Event=void 0;let t=mr();var n;(function(e){let t={dispose(){}};e.None=function(){return t}})(n||(e.Event=n={}));var r=class{add(e,t=null,n){this._callbacks||(this._callbacks=[],this._contexts=[]),this._callbacks.push(e),this._contexts.push(t),Array.isArray(n)&&n.push({dispose:()=>this.remove(e,t)})}remove(e,t=null){if(!this._callbacks)return;let n=!1;for(let r=0,i=this._callbacks.length;r{this._callbacks||=new r,this._options&&this._options.onFirstListenerAdd&&this._callbacks.isEmpty()&&this._options.onFirstListenerAdd(this),this._callbacks.add(t,n);let a={dispose:()=>{this._callbacks&&(this._callbacks.remove(t,n),a.dispose=e._noop,this._options&&this._options.onLastListenerRemove&&this._callbacks.isEmpty()&&this._options.onLastListenerRemove(this))}};return Array.isArray(i)&&i.push(a),a},this._event}fire(e){this._callbacks&&this._callbacks.invoke.call(this._callbacks,e)}dispose(){this._callbacks&&=(this._callbacks.dispose(),void 0)}};e.Emitter=i,i._noop=function(){}})),gr=s((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.CancellationTokenSource=e.CancellationToken=void 0;let t=mr(),n=ur(),r=hr();var i;(function(e){e.None=Object.freeze({isCancellationRequested:!1,onCancellationRequested:r.Event.None}),e.Cancelled=Object.freeze({isCancellationRequested:!0,onCancellationRequested:r.Event.None});function t(t){let r=t;return r&&(r===e.None||r===e.Cancelled||n.boolean(r.isCancellationRequested)&&!!r.onCancellationRequested)}e.is=t})(i||(e.CancellationToken=i={}));let a=Object.freeze(function(e,n){let r=(0,t.default)().timer.setTimeout(e.bind(n),0);return{dispose(){r.dispose()}}});var o=class{constructor(){this._isCancelled=!1}cancel(){this._isCancelled||(this._isCancelled=!0,this._emitter&&(this._emitter.fire(void 0),this.dispose()))}get isCancellationRequested(){return this._isCancelled}get onCancellationRequested(){return this._isCancelled?a:(this._emitter||=new r.Emitter,this._emitter.event)}dispose(){this._emitter&&=(this._emitter.dispose(),void 0)}};e.CancellationTokenSource=class{get token(){return this._token||=new o,this._token}cancel(){this._token?this._token.cancel():this._token=i.Cancelled}dispose(){this._token?this._token instanceof o&&this._token.dispose():this._token=i.None}}})),_r=s((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.SharedArrayReceiverStrategy=e.SharedArraySenderStrategy=void 0;let t=gr();var n;(function(e){e.Continue=0,e.Cancelled=1})(n||={}),e.SharedArraySenderStrategy=class{constructor(){this.buffers=new Map}enableCancellation(e){if(e.id===null)return;let t=new SharedArrayBuffer(4),r=new Int32Array(t,0,1);r[0]=n.Continue,this.buffers.set(e.id,t),e.$cancellationData=t}async sendCancellation(e,t){let r=this.buffers.get(t);if(r===void 0)return;let i=new Int32Array(r,0,1);Atomics.store(i,0,n.Cancelled)}cleanup(e){this.buffers.delete(e)}dispose(){this.buffers.clear()}};var r=class{constructor(e){this.data=new Int32Array(e,0,1)}get isCancellationRequested(){return Atomics.load(this.data,0)===n.Cancelled}get onCancellationRequested(){throw Error(`Cancellation over SharedArrayBuffer doesn't support cancellation events`)}},i=class{constructor(e){this.token=new r(e)}cancel(){}dispose(){}};e.SharedArrayReceiverStrategy=class{constructor(){this.kind=`request`}createCancellationTokenSource(e){let n=e.$cancellationData;return n===void 0?new t.CancellationTokenSource:new i(n)}}})),vr=s((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.Semaphore=void 0;let t=mr();e.Semaphore=class{constructor(e=1){if(e<=0)throw Error(`Capacity must be greater than 0`);this._capacity=e,this._active=0,this._waiting=[]}lock(e){return new Promise((t,n)=>{this._waiting.push({thunk:e,resolve:t,reject:n}),this.runNext()})}get active(){return this._active}runNext(){this._waiting.length===0||this._active===this._capacity||(0,t.default)().timer.setImmediate(()=>this.doRunNext())}doRunNext(){if(this._waiting.length===0||this._active===this._capacity)return;let e=this._waiting.shift();if(this._active++,this._active>this._capacity)throw Error(`To many thunks active`);try{let t=e.thunk();t instanceof Promise?t.then(t=>{this._active--,e.resolve(t),this.runNext()},t=>{this._active--,e.reject(t),this.runNext()}):(this._active--,e.resolve(t),this.runNext())}catch(t){this._active--,e.reject(t),this.runNext()}}}})),yr=s((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.ReadableStreamMessageReader=e.AbstractMessageReader=e.MessageReader=void 0;let t=mr(),n=ur(),r=hr(),i=vr();var a;(function(e){function t(e){let t=e;return t&&n.func(t.listen)&&n.func(t.dispose)&&n.func(t.onError)&&n.func(t.onClose)&&n.func(t.onPartialMessage)}e.is=t})(a||(e.MessageReader=a={}));var o=class{constructor(){this.errorEmitter=new r.Emitter,this.closeEmitter=new r.Emitter,this.partialMessageEmitter=new r.Emitter}dispose(){this.errorEmitter.dispose(),this.closeEmitter.dispose()}get onError(){return this.errorEmitter.event}fireError(e){this.errorEmitter.fire(this.asError(e))}get onClose(){return this.closeEmitter.event}fireClose(){this.closeEmitter.fire(void 0)}get onPartialMessage(){return this.partialMessageEmitter.event}firePartialMessage(e){this.partialMessageEmitter.fire(e)}asError(e){return e instanceof Error?e:Error(`Reader received error. Reason: ${n.string(e.message)?e.message:`unknown`}`)}};e.AbstractMessageReader=o;var s;(function(e){function n(e){let n,r,i=new Map,a,o=new Map;if(e===void 0||typeof e==`string`)n=e??`utf-8`;else{if(n=e.charset??`utf-8`,e.contentDecoder!==void 0&&(r=e.contentDecoder,i.set(r.name,r)),e.contentDecoders!==void 0)for(let t of e.contentDecoders)i.set(t.name,t);if(e.contentTypeDecoder!==void 0&&(a=e.contentTypeDecoder,o.set(a.name,a)),e.contentTypeDecoders!==void 0)for(let t of e.contentTypeDecoders)o.set(t.name,t)}return a===void 0&&(a=(0,t.default)().applicationJson.decoder,o.set(a.name,a)),{charset:n,contentDecoder:r,contentDecoders:i,contentTypeDecoder:a,contentTypeDecoders:o}}e.fromOptions=n})(s||={}),e.ReadableStreamMessageReader=class extends o{constructor(e,n){super(),this.readable=e,this.options=s.fromOptions(n),this.buffer=(0,t.default)().messageBuffer.create(this.options.charset),this._partialMessageTimeout=1e4,this.nextMessageLength=-1,this.messageToken=0,this.readSemaphore=new i.Semaphore(1)}set partialMessageTimeout(e){this._partialMessageTimeout=e}get partialMessageTimeout(){return this._partialMessageTimeout}listen(e){this.nextMessageLength=-1,this.messageToken=0,this.partialMessageTimer=void 0,this.callback=e;let t=this.readable.onData(e=>{this.onData(e)});return this.readable.onError(e=>this.fireError(e)),this.readable.onClose(()=>this.fireClose()),t}onData(e){try{for(this.buffer.append(e);;){if(this.nextMessageLength===-1){let e=this.buffer.tryReadHeaders(!0);if(!e)return;let t=e.get(`content-length`);if(!t){this.fireError(Error(`Header must provide a Content-Length property.\n${JSON.stringify(Object.fromEntries(e))}`));return}let n=parseInt(t);if(isNaN(n)){this.fireError(Error(`Content-Length value must be a number. Got ${t}`));return}this.nextMessageLength=n}let e=this.buffer.tryReadBody(this.nextMessageLength);if(e===void 0){this.setPartialMessageTimer();return}this.clearPartialMessageTimer(),this.nextMessageLength=-1,this.readSemaphore.lock(async()=>{let t=this.options.contentDecoder===void 0?e:await this.options.contentDecoder.decode(e),n=await this.options.contentTypeDecoder.decode(t,this.options);this.callback(n)}).catch(e=>{this.fireError(e)})}}catch(e){this.fireError(e)}}clearPartialMessageTimer(){this.partialMessageTimer&&=(this.partialMessageTimer.dispose(),void 0)}setPartialMessageTimer(){this.clearPartialMessageTimer(),!(this._partialMessageTimeout<=0)&&(this.partialMessageTimer=(0,t.default)().timer.setTimeout((e,t)=>{this.partialMessageTimer=void 0,e===this.messageToken&&(this.firePartialMessage({messageToken:e,waitingTime:t}),this.setPartialMessageTimer())},this._partialMessageTimeout,this.messageToken,this._partialMessageTimeout))}}})),br=s((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.WriteableStreamMessageWriter=e.AbstractMessageWriter=e.MessageWriter=void 0;let t=mr(),n=ur(),r=vr(),i=hr();var a;(function(e){function t(e){let t=e;return t&&n.func(t.dispose)&&n.func(t.onClose)&&n.func(t.onError)&&n.func(t.write)}e.is=t})(a||(e.MessageWriter=a={}));var o=class{constructor(){this.errorEmitter=new i.Emitter,this.closeEmitter=new i.Emitter}dispose(){this.errorEmitter.dispose(),this.closeEmitter.dispose()}get onError(){return this.errorEmitter.event}fireError(e,t,n){this.errorEmitter.fire([this.asError(e),t,n])}get onClose(){return this.closeEmitter.event}fireClose(){this.closeEmitter.fire(void 0)}asError(e){return e instanceof Error?e:Error(`Writer received error. Reason: ${n.string(e.message)?e.message:`unknown`}`)}};e.AbstractMessageWriter=o;var s;(function(e){function n(e){return e===void 0||typeof e==`string`?{charset:e??`utf-8`,contentTypeEncoder:(0,t.default)().applicationJson.encoder}:{charset:e.charset??`utf-8`,contentEncoder:e.contentEncoder,contentTypeEncoder:e.contentTypeEncoder??(0,t.default)().applicationJson.encoder}}e.fromOptions=n})(s||={}),e.WriteableStreamMessageWriter=class extends o{constructor(e,t){super(),this.writable=e,this.options=s.fromOptions(t),this.errorCount=0,this.writeSemaphore=new r.Semaphore(1),this.writable.onError(e=>this.fireError(e)),this.writable.onClose(()=>this.fireClose())}async write(e){return this.writeSemaphore.lock(async()=>this.options.contentTypeEncoder.encode(e,this.options).then(e=>this.options.contentEncoder===void 0?e:this.options.contentEncoder.encode(e)).then(t=>{let n=[];return n.push(`Content-Length: `,t.byteLength.toString(),`\r +`),n.push(`\r +`),this.doWrite(e,n,t)},e=>{throw this.fireError(e),e}))}async doWrite(e,t,n){try{return await this.writable.write(t.join(``),`ascii`),this.writable.write(n)}catch(t){return this.handleError(t,e),Promise.reject(t)}}handleError(e,t){this.errorCount++,this.fireError(e,t,this.errorCount)}end(){this.writable.end()}}})),xr=s((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.AbstractMessageBuffer=void 0,e.AbstractMessageBuffer=class{constructor(e=`utf-8`){this._encoding=e,this._chunks=[],this._totalLength=0}get encoding(){return this._encoding}append(e){let t=typeof e==`string`?this.fromString(e,this._encoding):e;this._chunks.push(t),this._totalLength+=t.byteLength}tryReadHeaders(e=!1){if(this._chunks.length===0)return;let t=0,n=0,r=0,i=0;row:for(;nthis._totalLength)throw Error(`Cannot read so many bytes!`);if(this._chunks[0].byteLength===e){let t=this._chunks[0];return this._chunks.shift(),this._totalLength-=e,this.asNative(t)}if(this._chunks[0].byteLength>e){let t=this._chunks[0],n=this.asNative(t,e);return this._chunks[0]=t.slice(e),this._totalLength-=e,n}let t=this.allocNative(e),n=0;for(;e>0;){let r=this._chunks[0];if(r.byteLength>e){let i=r.slice(0,e);t.set(i,n),n+=e,this._chunks[0]=r.slice(e),this._totalLength-=e,e-=e}else t.set(r,n),n+=r.byteLength,this._chunks.shift(),this._totalLength-=r.byteLength,e-=r.byteLength}return t}}})),Sr=s((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.createMessageConnection=e.ConnectionOptions=e.MessageStrategy=e.CancellationStrategy=e.CancellationSenderStrategy=e.CancellationReceiverStrategy=e.RequestCancellationReceiverStrategy=e.IdCancellationReceiverStrategy=e.ConnectionStrategy=e.ConnectionError=e.ConnectionErrors=e.LogTraceNotification=e.SetTraceNotification=e.TraceFormat=e.TraceValues=e.Trace=e.NullLogger=e.ProgressType=e.ProgressToken=void 0;let t=mr(),n=ur(),r=dr(),i=fr(),a=hr(),o=gr();var s;(function(e){e.type=new r.NotificationType(`$/cancelRequest`)})(s||={});var c;(function(e){function t(e){return typeof e==`string`||typeof e==`number`}e.is=t})(c||(e.ProgressToken=c={}));var l;(function(e){e.type=new r.NotificationType(`$/progress`)})(l||={}),e.ProgressType=class{constructor(){}};var u;(function(e){function t(e){return n.func(e)}e.is=t})(u||={}),e.NullLogger=Object.freeze({error:()=>{},warn:()=>{},info:()=>{},log:()=>{}});var d;(function(e){e[e.Off=0]=`Off`,e[e.Messages=1]=`Messages`,e[e.Compact=2]=`Compact`,e[e.Verbose=3]=`Verbose`})(d||(e.Trace=d={}));var f;(function(e){e.Off=`off`,e.Messages=`messages`,e.Compact=`compact`,e.Verbose=`verbose`})(f||(e.TraceValues=f={})),(function(e){function t(t){if(!n.string(t))return e.Off;switch(t=t.toLowerCase(),t){case`off`:return e.Off;case`messages`:return e.Messages;case`compact`:return e.Compact;case`verbose`:return e.Verbose;default:return e.Off}}e.fromString=t;function r(t){switch(t){case e.Off:return`off`;case e.Messages:return`messages`;case e.Compact:return`compact`;case e.Verbose:return`verbose`;default:return`off`}}e.toString=r})(d||(e.Trace=d={}));var p;(function(e){e.Text=`text`,e.JSON=`json`})(p||(e.TraceFormat=p={})),(function(e){function t(t){return n.string(t)?(t=t.toLowerCase(),t===`json`?e.JSON:e.Text):e.Text}e.fromString=t})(p||(e.TraceFormat=p={}));var m;(function(e){e.type=new r.NotificationType(`$/setTrace`)})(m||(e.SetTraceNotification=m={}));var h;(function(e){e.type=new r.NotificationType(`$/logTrace`)})(h||(e.LogTraceNotification=h={}));var g;(function(e){e[e.Closed=1]=`Closed`,e[e.Disposed=2]=`Disposed`,e[e.AlreadyListening=3]=`AlreadyListening`})(g||(e.ConnectionErrors=g={}));var _=class e extends Error{constructor(t,n){super(n),this.code=t,Object.setPrototypeOf(this,e.prototype)}};e.ConnectionError=_;var v;(function(e){function t(e){let t=e;return t&&n.func(t.cancelUndispatched)}e.is=t})(v||(e.ConnectionStrategy=v={}));var y;(function(e){function t(e){let t=e;return t&&(t.kind===void 0||t.kind===`id`)&&n.func(t.createCancellationTokenSource)&&(t.dispose===void 0||n.func(t.dispose))}e.is=t})(y||(e.IdCancellationReceiverStrategy=y={}));var b;(function(e){function t(e){let t=e;return t&&t.kind===`request`&&n.func(t.createCancellationTokenSource)&&(t.dispose===void 0||n.func(t.dispose))}e.is=t})(b||(e.RequestCancellationReceiverStrategy=b={}));var x;(function(e){e.Message=Object.freeze({createCancellationTokenSource(e){return new o.CancellationTokenSource}});function t(e){return y.is(e)||b.is(e)}e.is=t})(x||(e.CancellationReceiverStrategy=x={}));var S;(function(e){e.Message=Object.freeze({sendCancellation(e,t){return e.sendNotification(s.type,{id:t})},cleanup(e){}});function t(e){let t=e;return t&&n.func(t.sendCancellation)&&n.func(t.cleanup)}e.is=t})(S||(e.CancellationSenderStrategy=S={}));var C;(function(e){e.Message=Object.freeze({receiver:x.Message,sender:S.Message});function t(e){let t=e;return t&&x.is(t.receiver)&&S.is(t.sender)}e.is=t})(C||(e.CancellationStrategy=C={}));var w;(function(e){function t(e){let t=e;return t&&n.func(t.handleMessage)}e.is=t})(w||(e.MessageStrategy=w={}));var T;(function(e){function t(e){let t=e;return t&&(C.is(t.cancellationStrategy)||v.is(t.connectionStrategy)||w.is(t.messageStrategy))}e.is=t})(T||(e.ConnectionOptions=T={}));var E;(function(e){e[e.New=1]=`New`,e[e.Listening=2]=`Listening`,e[e.Closed=3]=`Closed`,e[e.Disposed=4]=`Disposed`})(E||={});function D(f,v,b,x){let S=b===void 0?e.NullLogger:b,T=0,D=0,O=0,k,A=new Map,j,M=new Map,N=new Map,ee,P=new i.LinkedMap,F=new Map,I=new Set,L=new Map,R=d.Off,z=p.Text,B,te=E.New,V=new a.Emitter,ne=new a.Emitter,re=new a.Emitter,H=new a.Emitter,ie=new a.Emitter,U=x&&x.cancellationStrategy?x.cancellationStrategy:C.Message;function W(e){if(e===null)throw Error(`Can't send requests with id null since the response can't be correlated.`);return`req-`+e.toString()}function ae(e){return e===null?`res-unknown-`+(++O).toString():`res-`+e.toString()}function G(){return`not-`+(++D).toString()}function oe(e,t){r.Message.isRequest(t)?e.set(W(t.id),t):r.Message.isResponse(t)?e.set(ae(t.id),t):e.set(G(),t)}function se(e){}function ce(){return te===E.Listening}function le(){return te===E.Closed}function ue(){return te===E.Disposed}function de(){(te===E.New||te===E.Listening)&&(te=E.Closed,ne.fire(void 0))}function fe(e){V.fire([e,void 0,void 0])}function pe(e){V.fire(e)}f.onClose(de),f.onError(fe),v.onClose(de),v.onError(pe);function me(){ee||P.size===0||(ee=(0,t.default)().timer.setImmediate(()=>{ee=void 0,ge()}))}function he(e){r.Message.isRequest(e)?ve(e):r.Message.isNotification(e)?be(e):r.Message.isResponse(e)?ye(e):xe(e)}function ge(){if(P.size===0)return;let e=P.shift();try{let t=x?.messageStrategy;w.is(t)?t.handleMessage(e,he):he(e)}finally{me()}}let _e=e=>{try{if(r.Message.isNotification(e)&&e.method===s.type.method){let t=e.params.id,n=W(t),i=P.get(n);if(r.Message.isRequest(i)){let r=x?.connectionStrategy,a=r&&r.cancelUndispatched?r.cancelUndispatched(i,se):void 0;if(a&&(a.error!==void 0||a.result!==void 0)){P.delete(n),L.delete(t),a.id=i.id,Te(a,e.method,Date.now()),v.write(a).catch(()=>S.error(`Sending response for canceled message failed.`));return}}let a=L.get(t);if(a!==void 0){a.cancel(),De(e);return}else I.add(t)}oe(P,e)}finally{me()}};function ve(e){if(ue())return;function t(t,n,i){let a={jsonrpc:`2.0`,id:e.id};t instanceof r.ResponseError?a.error=t.toJson():a.result=t===void 0?null:t,Te(a,n,i),v.write(a).catch(()=>S.error(`Sending response failed.`))}function i(t,n,r){let i={jsonrpc:`2.0`,id:e.id,error:t.toJson()};Te(i,n,r),v.write(i).catch(()=>S.error(`Sending response failed.`))}function a(t,n,r){t===void 0&&(t=null);let i={jsonrpc:`2.0`,id:e.id,result:t};Te(i,n,r),v.write(i).catch(()=>S.error(`Sending response failed.`))}Ee(e);let o=A.get(e.method),s,c;o&&(s=o.type,c=o.handler);let l=Date.now();if(c||k){let o=e.id??String(Date.now()),u=y.is(U.receiver)?U.receiver.createCancellationTokenSource(o):U.receiver.createCancellationTokenSource(e);e.id!==null&&I.has(e.id)&&u.cancel(),e.id!==null&&L.set(o,u);try{let d;if(c)if(e.params===void 0){if(s!==void 0&&s.numberOfParams!==0){i(new r.ResponseError(r.ErrorCodes.InvalidParams,`Request ${e.method} defines ${s.numberOfParams} params but received none.`),e.method,l);return}d=c(u.token)}else if(Array.isArray(e.params)){if(s!==void 0&&s.parameterStructures===r.ParameterStructures.byName){i(new r.ResponseError(r.ErrorCodes.InvalidParams,`Request ${e.method} defines parameters by name but received parameters by position`),e.method,l);return}d=c(...e.params,u.token)}else{if(s!==void 0&&s.parameterStructures===r.ParameterStructures.byPosition){i(new r.ResponseError(r.ErrorCodes.InvalidParams,`Request ${e.method} defines parameters by position but received parameters by name`),e.method,l);return}d=c(e.params,u.token)}else k&&(d=k(e.method,e.params,u.token));let f=d;d?f.then?f.then(n=>{L.delete(o),t(n,e.method,l)},t=>{L.delete(o),t instanceof r.ResponseError?i(t,e.method,l):t&&n.string(t.message)?i(new r.ResponseError(r.ErrorCodes.InternalError,`Request ${e.method} failed with message: ${t.message}`),e.method,l):i(new r.ResponseError(r.ErrorCodes.InternalError,`Request ${e.method} failed unexpectedly without providing any details.`),e.method,l)}):(L.delete(o),t(d,e.method,l)):(L.delete(o),a(d,e.method,l))}catch(a){L.delete(o),a instanceof r.ResponseError?t(a,e.method,l):a&&n.string(a.message)?i(new r.ResponseError(r.ErrorCodes.InternalError,`Request ${e.method} failed with message: ${a.message}`),e.method,l):i(new r.ResponseError(r.ErrorCodes.InternalError,`Request ${e.method} failed unexpectedly without providing any details.`),e.method,l)}}else i(new r.ResponseError(r.ErrorCodes.MethodNotFound,`Unhandled method ${e.method}`),e.method,l)}function ye(e){if(!ue())if(e.id===null)e.error?S.error(`Received response message without id: Error is: \n${JSON.stringify(e.error,void 0,4)}`):S.error(`Received response message without id. No further error information provided.`);else{let t=e.id,n=F.get(t);if(Oe(e,n),n!==void 0){F.delete(t);try{if(e.error){let t=e.error;n.reject(new r.ResponseError(t.code,t.message,t.data))}else if(e.result!==void 0)n.resolve(e.result);else throw Error(`Should never happen.`)}catch(e){e.message?S.error(`Response handler '${n.method}' failed with message: ${e.message}`):S.error(`Response handler '${n.method}' failed unexpectedly.`)}}}}function be(e){if(ue())return;let t,n;if(e.method===s.type.method){let t=e.params.id;I.delete(t),De(e);return}else{let r=M.get(e.method);r&&(n=r.handler,t=r.type)}if(n||j)try{if(De(e),n)if(e.params===void 0)t!==void 0&&t.numberOfParams!==0&&t.parameterStructures!==r.ParameterStructures.byName&&S.error(`Notification ${e.method} defines ${t.numberOfParams} params but received none.`),n();else if(Array.isArray(e.params)){let i=e.params;e.method===l.type.method&&i.length===2&&c.is(i[0])?n({token:i[0],value:i[1]}):(t!==void 0&&(t.parameterStructures===r.ParameterStructures.byName&&S.error(`Notification ${e.method} defines parameters by name but received parameters by position`),t.numberOfParams!==e.params.length&&S.error(`Notification ${e.method} defines ${t.numberOfParams} params but received ${i.length} arguments`)),n(...i))}else t!==void 0&&t.parameterStructures===r.ParameterStructures.byPosition&&S.error(`Notification ${e.method} defines parameters by position but received parameters by name`),n(e.params);else j&&j(e.method,e.params)}catch(t){t.message?S.error(`Notification handler '${e.method}' failed with message: ${t.message}`):S.error(`Notification handler '${e.method}' failed unexpectedly.`)}else re.fire(e)}function xe(e){if(!e){S.error(`Received empty message.`);return}S.error(`Received message which is neither a response nor a notification message:\n${JSON.stringify(e,null,4)}`);let t=e;if(n.string(t.id)||n.number(t.id)){let e=t.id,n=F.get(e);n&&n.reject(Error(`The received response has neither a result nor an error property.`))}}function Se(e){if(e!=null)switch(R){case d.Verbose:return JSON.stringify(e,null,4);case d.Compact:return JSON.stringify(e);default:return}}function Ce(e){if(!(R===d.Off||!B))if(z===p.Text){let t;(R===d.Verbose||R===d.Compact)&&e.params&&(t=`Params: ${Se(e.params)}\n\n`),B.log(`Sending request '${e.method} - (${e.id})'.`,t)}else ke(`send-request`,e)}function we(e){if(!(R===d.Off||!B))if(z===p.Text){let t;(R===d.Verbose||R===d.Compact)&&(t=e.params?`Params: ${Se(e.params)}\n\n`:`No parameters provided. + +`),B.log(`Sending notification '${e.method}'.`,t)}else ke(`send-notification`,e)}function Te(e,t,n){if(!(R===d.Off||!B))if(z===p.Text){let r;(R===d.Verbose||R===d.Compact)&&(e.error&&e.error.data?r=`Error data: ${Se(e.error.data)}\n\n`:e.result?r=`Result: ${Se(e.result)}\n\n`:e.error===void 0&&(r=`No result returned. + +`)),B.log(`Sending response '${t} - (${e.id})'. Processing request took ${Date.now()-n}ms`,r)}else ke(`send-response`,e)}function Ee(e){if(!(R===d.Off||!B))if(z===p.Text){let t;(R===d.Verbose||R===d.Compact)&&e.params&&(t=`Params: ${Se(e.params)}\n\n`),B.log(`Received request '${e.method} - (${e.id})'.`,t)}else ke(`receive-request`,e)}function De(e){if(!(R===d.Off||!B||e.method===h.type.method))if(z===p.Text){let t;(R===d.Verbose||R===d.Compact)&&(t=e.params?`Params: ${Se(e.params)}\n\n`:`No parameters provided. + +`),B.log(`Received notification '${e.method}'.`,t)}else ke(`receive-notification`,e)}function Oe(e,t){if(!(R===d.Off||!B))if(z===p.Text){let n;if((R===d.Verbose||R===d.Compact)&&(e.error&&e.error.data?n=`Error data: ${Se(e.error.data)}\n\n`:e.result?n=`Result: ${Se(e.result)}\n\n`:e.error===void 0&&(n=`No result returned. + +`)),t){let r=e.error?` Request failed: ${e.error.message} (${e.error.code}).`:``;B.log(`Received response '${t.method} - (${e.id})' in ${Date.now()-t.timerStart}ms.${r}`,n)}else B.log(`Received response ${e.id} without active response promise.`,n)}else ke(`receive-response`,e)}function ke(e,t){if(!B||R===d.Off)return;let n={isLSPMessage:!0,type:e,message:t,timestamp:Date.now()};B.log(n)}function Ae(){if(le())throw new _(g.Closed,`Connection is closed.`);if(ue())throw new _(g.Disposed,`Connection is disposed.`)}function je(){if(ce())throw new _(g.AlreadyListening,`Connection is already listening`)}function Me(){if(!ce())throw Error(`Call listen() first.`)}function Ne(e){return e===void 0?null:e}function Pe(e){if(e!==null)return e}function Fe(e){return e!=null&&!Array.isArray(e)&&typeof e==`object`}function K(e,t){switch(e){case r.ParameterStructures.auto:return Fe(t)?Pe(t):[Ne(t)];case r.ParameterStructures.byName:if(!Fe(t))throw Error(`Received parameters by name but param is not an object literal.`);return Pe(t);case r.ParameterStructures.byPosition:return[Ne(t)];default:throw Error(`Unknown parameter structure ${e.toString()}`)}}function Ie(e,t){let n,r=e.numberOfParams;switch(r){case 0:n=void 0;break;case 1:n=K(e.parameterStructures,t[0]);break;default:n=[];for(let e=0;e{Ae();let i,a;if(n.string(e)){i=e;let n=t[0],o=0,s=r.ParameterStructures.auto;r.ParameterStructures.is(n)&&(o=1,s=n);let c=t.length,l=c-o;switch(l){case 0:a=void 0;break;case 1:a=K(s,t[o]);break;default:if(s===r.ParameterStructures.byName)throw Error(`Received ${l} parameters for 'by Name' notification parameter structure.`);a=t.slice(o,c).map(e=>Ne(e));break}}else{let n=t;i=e.method,a=Ie(e,n)}let o={jsonrpc:`2.0`,method:i,params:a};return we(o),v.write(o).catch(e=>{throw S.error(`Sending notification failed.`),e})},onNotification:(e,t)=>{Ae();let r;return n.func(e)?j=e:t&&(n.string(e)?(r=e,M.set(e,{type:void 0,handler:t})):(r=e.method,M.set(e.method,{type:e,handler:t}))),{dispose:()=>{r===void 0?j=void 0:M.delete(r)}}},onProgress:(e,t,n)=>{if(N.has(t))throw Error(`Progress handler for token ${t} already registered`);return N.set(t,n),{dispose:()=>{N.delete(t)}}},sendProgress:(e,t,n)=>Le.sendNotification(l.type,{token:t,value:n}),onUnhandledProgress:H.event,sendRequest:(e,...t)=>{Ae(),Me();let i,a,s;if(n.string(e)){i=e;let n=t[0],c=t[t.length-1],l=0,u=r.ParameterStructures.auto;r.ParameterStructures.is(n)&&(l=1,u=n);let d=t.length;o.CancellationToken.is(c)&&(--d,s=c);let f=d-l;switch(f){case 0:a=void 0;break;case 1:a=K(u,t[l]);break;default:if(u===r.ParameterStructures.byName)throw Error(`Received ${f} parameters for 'by Name' request parameter structure.`);a=t.slice(l,d).map(e=>Ne(e));break}}else{let n=t;i=e.method,a=Ie(e,n);let r=e.numberOfParams;s=o.CancellationToken.is(n[r])?n[r]:void 0}let c=T++,l;s&&(l=s.onCancellationRequested(()=>{let e=U.sender.sendCancellation(Le,c);return e===void 0?(S.log(`Received no promise from cancellation strategy when cancelling id ${c}`),Promise.resolve()):e.catch(()=>{S.log(`Sending cancellation messages for id ${c} failed`)})}));let u={jsonrpc:`2.0`,id:c,method:i,params:a};return Ce(u),typeof U.sender.enableCancellation==`function`&&U.sender.enableCancellation(u),new Promise(async(e,t)=>{let n={method:i,timerStart:Date.now(),resolve:t=>{e(t),U.sender.cleanup(c),l?.dispose()},reject:e=>{t(e),U.sender.cleanup(c),l?.dispose()}};try{F.set(c,n),await v.write(u)}catch(e){throw F.delete(c),n.reject(new r.ResponseError(r.ErrorCodes.MessageWriteError,e.message?e.message:`Unknown reason`)),S.error(`Sending request failed.`),e}})},onRequest:(e,t)=>{Ae();let r=null;return u.is(e)?(r=void 0,k=e):n.string(e)?(r=null,t!==void 0&&(r=e,A.set(e,{handler:t,type:void 0}))):t!==void 0&&(r=e.method,A.set(e.method,{type:e,handler:t})),{dispose:()=>{r!==null&&(r===void 0?k=void 0:A.delete(r))}}},hasPendingResponse:()=>F.size>0,trace:async(e,t,r)=>{let i=!1,a=p.Text;r!==void 0&&(n.boolean(r)?i=r:(i=r.sendNotification||!1,a=r.traceFormat||p.Text)),R=e,z=a,B=R===d.Off?void 0:t,i&&!le()&&!ue()&&await Le.sendNotification(m.type,{value:d.toString(e)})},onError:V.event,onClose:ne.event,onUnhandledNotification:re.event,onDispose:ie.event,end:()=>{v.end()},dispose:()=>{if(ue())return;te=E.Disposed,ie.fire(void 0);let e=new r.ResponseError(r.ErrorCodes.PendingResponseRejected,`Pending response rejected since connection got disposed`);for(let t of F.values())t.reject(e);F=new Map,L=new Map,I=new Set,P=new i.LinkedMap,n.func(v.dispose)&&v.dispose(),n.func(f.dispose)&&f.dispose()},listen:()=>{Ae(),je(),te=E.Listening,f.listen(_e)},inspect:()=>{(0,t.default)().console.log(`inspect`)}};return Le.onNotification(h.type,e=>{if(R===d.Off||!B)return;let t=R===d.Verbose||R===d.Compact;B.log(e.message,t?e.verbose:void 0)}),Le.onNotification(l.type,e=>{let t=N.get(e.token);t?t(e.value):H.fire(e)}),Le}e.createMessageConnection=D})),Cr=s((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.ProgressType=e.ProgressToken=e.createMessageConnection=e.NullLogger=e.ConnectionOptions=e.ConnectionStrategy=e.AbstractMessageBuffer=e.WriteableStreamMessageWriter=e.AbstractMessageWriter=e.MessageWriter=e.ReadableStreamMessageReader=e.AbstractMessageReader=e.MessageReader=e.SharedArrayReceiverStrategy=e.SharedArraySenderStrategy=e.CancellationToken=e.CancellationTokenSource=e.Emitter=e.Event=e.Disposable=e.LRUCache=e.Touch=e.LinkedMap=e.ParameterStructures=e.NotificationType9=e.NotificationType8=e.NotificationType7=e.NotificationType6=e.NotificationType5=e.NotificationType4=e.NotificationType3=e.NotificationType2=e.NotificationType1=e.NotificationType0=e.NotificationType=e.ErrorCodes=e.ResponseError=e.RequestType9=e.RequestType8=e.RequestType7=e.RequestType6=e.RequestType5=e.RequestType4=e.RequestType3=e.RequestType2=e.RequestType1=e.RequestType0=e.RequestType=e.Message=e.RAL=void 0,e.MessageStrategy=e.CancellationStrategy=e.CancellationSenderStrategy=e.CancellationReceiverStrategy=e.ConnectionError=e.ConnectionErrors=e.LogTraceNotification=e.SetTraceNotification=e.TraceFormat=e.TraceValues=e.Trace=void 0;let t=dr();Object.defineProperty(e,`Message`,{enumerable:!0,get:function(){return t.Message}}),Object.defineProperty(e,`RequestType`,{enumerable:!0,get:function(){return t.RequestType}}),Object.defineProperty(e,`RequestType0`,{enumerable:!0,get:function(){return t.RequestType0}}),Object.defineProperty(e,`RequestType1`,{enumerable:!0,get:function(){return t.RequestType1}}),Object.defineProperty(e,`RequestType2`,{enumerable:!0,get:function(){return t.RequestType2}}),Object.defineProperty(e,`RequestType3`,{enumerable:!0,get:function(){return t.RequestType3}}),Object.defineProperty(e,`RequestType4`,{enumerable:!0,get:function(){return t.RequestType4}}),Object.defineProperty(e,`RequestType5`,{enumerable:!0,get:function(){return t.RequestType5}}),Object.defineProperty(e,`RequestType6`,{enumerable:!0,get:function(){return t.RequestType6}}),Object.defineProperty(e,`RequestType7`,{enumerable:!0,get:function(){return t.RequestType7}}),Object.defineProperty(e,`RequestType8`,{enumerable:!0,get:function(){return t.RequestType8}}),Object.defineProperty(e,`RequestType9`,{enumerable:!0,get:function(){return t.RequestType9}}),Object.defineProperty(e,`ResponseError`,{enumerable:!0,get:function(){return t.ResponseError}}),Object.defineProperty(e,`ErrorCodes`,{enumerable:!0,get:function(){return t.ErrorCodes}}),Object.defineProperty(e,`NotificationType`,{enumerable:!0,get:function(){return t.NotificationType}}),Object.defineProperty(e,`NotificationType0`,{enumerable:!0,get:function(){return t.NotificationType0}}),Object.defineProperty(e,`NotificationType1`,{enumerable:!0,get:function(){return t.NotificationType1}}),Object.defineProperty(e,`NotificationType2`,{enumerable:!0,get:function(){return t.NotificationType2}}),Object.defineProperty(e,`NotificationType3`,{enumerable:!0,get:function(){return t.NotificationType3}}),Object.defineProperty(e,`NotificationType4`,{enumerable:!0,get:function(){return t.NotificationType4}}),Object.defineProperty(e,`NotificationType5`,{enumerable:!0,get:function(){return t.NotificationType5}}),Object.defineProperty(e,`NotificationType6`,{enumerable:!0,get:function(){return t.NotificationType6}}),Object.defineProperty(e,`NotificationType7`,{enumerable:!0,get:function(){return t.NotificationType7}}),Object.defineProperty(e,`NotificationType8`,{enumerable:!0,get:function(){return t.NotificationType8}}),Object.defineProperty(e,`NotificationType9`,{enumerable:!0,get:function(){return t.NotificationType9}}),Object.defineProperty(e,`ParameterStructures`,{enumerable:!0,get:function(){return t.ParameterStructures}});let n=fr();Object.defineProperty(e,`LinkedMap`,{enumerable:!0,get:function(){return n.LinkedMap}}),Object.defineProperty(e,`LRUCache`,{enumerable:!0,get:function(){return n.LRUCache}}),Object.defineProperty(e,`Touch`,{enumerable:!0,get:function(){return n.Touch}});let r=pr();Object.defineProperty(e,`Disposable`,{enumerable:!0,get:function(){return r.Disposable}});let i=hr();Object.defineProperty(e,`Event`,{enumerable:!0,get:function(){return i.Event}}),Object.defineProperty(e,`Emitter`,{enumerable:!0,get:function(){return i.Emitter}});let a=gr();Object.defineProperty(e,`CancellationTokenSource`,{enumerable:!0,get:function(){return a.CancellationTokenSource}}),Object.defineProperty(e,`CancellationToken`,{enumerable:!0,get:function(){return a.CancellationToken}});let o=_r();Object.defineProperty(e,`SharedArraySenderStrategy`,{enumerable:!0,get:function(){return o.SharedArraySenderStrategy}}),Object.defineProperty(e,`SharedArrayReceiverStrategy`,{enumerable:!0,get:function(){return o.SharedArrayReceiverStrategy}});let s=yr();Object.defineProperty(e,`MessageReader`,{enumerable:!0,get:function(){return s.MessageReader}}),Object.defineProperty(e,`AbstractMessageReader`,{enumerable:!0,get:function(){return s.AbstractMessageReader}}),Object.defineProperty(e,`ReadableStreamMessageReader`,{enumerable:!0,get:function(){return s.ReadableStreamMessageReader}});let c=br();Object.defineProperty(e,`MessageWriter`,{enumerable:!0,get:function(){return c.MessageWriter}}),Object.defineProperty(e,`AbstractMessageWriter`,{enumerable:!0,get:function(){return c.AbstractMessageWriter}}),Object.defineProperty(e,`WriteableStreamMessageWriter`,{enumerable:!0,get:function(){return c.WriteableStreamMessageWriter}});let l=xr();Object.defineProperty(e,`AbstractMessageBuffer`,{enumerable:!0,get:function(){return l.AbstractMessageBuffer}});let u=Sr();Object.defineProperty(e,`ConnectionStrategy`,{enumerable:!0,get:function(){return u.ConnectionStrategy}}),Object.defineProperty(e,`ConnectionOptions`,{enumerable:!0,get:function(){return u.ConnectionOptions}}),Object.defineProperty(e,`NullLogger`,{enumerable:!0,get:function(){return u.NullLogger}}),Object.defineProperty(e,`createMessageConnection`,{enumerable:!0,get:function(){return u.createMessageConnection}}),Object.defineProperty(e,`ProgressToken`,{enumerable:!0,get:function(){return u.ProgressToken}}),Object.defineProperty(e,`ProgressType`,{enumerable:!0,get:function(){return u.ProgressType}}),Object.defineProperty(e,`Trace`,{enumerable:!0,get:function(){return u.Trace}}),Object.defineProperty(e,`TraceValues`,{enumerable:!0,get:function(){return u.TraceValues}}),Object.defineProperty(e,`TraceFormat`,{enumerable:!0,get:function(){return u.TraceFormat}}),Object.defineProperty(e,`SetTraceNotification`,{enumerable:!0,get:function(){return u.SetTraceNotification}}),Object.defineProperty(e,`LogTraceNotification`,{enumerable:!0,get:function(){return u.LogTraceNotification}}),Object.defineProperty(e,`ConnectionErrors`,{enumerable:!0,get:function(){return u.ConnectionErrors}}),Object.defineProperty(e,`ConnectionError`,{enumerable:!0,get:function(){return u.ConnectionError}}),Object.defineProperty(e,`CancellationReceiverStrategy`,{enumerable:!0,get:function(){return u.CancellationReceiverStrategy}}),Object.defineProperty(e,`CancellationSenderStrategy`,{enumerable:!0,get:function(){return u.CancellationSenderStrategy}}),Object.defineProperty(e,`CancellationStrategy`,{enumerable:!0,get:function(){return u.CancellationStrategy}}),Object.defineProperty(e,`MessageStrategy`,{enumerable:!0,get:function(){return u.MessageStrategy}}),e.RAL=mr().default})),wr=s((e=>{Object.defineProperty(e,`__esModule`,{value:!0});let t=require(`util`),n=Cr();var r=class e extends n.AbstractMessageBuffer{constructor(e=`utf-8`){super(e)}emptyBuffer(){return e.emptyBuffer}fromString(e,t){return Buffer.from(e,t)}toString(e,n){return e instanceof Buffer?e.toString(n):new t.TextDecoder(n).decode(e)}asNative(e,t){return t===void 0?e instanceof Buffer?e:Buffer.from(e):e instanceof Buffer?e.slice(0,t):Buffer.from(e,0,t)}allocNative(e){return Buffer.allocUnsafe(e)}};r.emptyBuffer=Buffer.allocUnsafe(0);var i=class{constructor(e){this.stream=e}onClose(e){return this.stream.on(`close`,e),n.Disposable.create(()=>this.stream.off(`close`,e))}onError(e){return this.stream.on(`error`,e),n.Disposable.create(()=>this.stream.off(`error`,e))}onEnd(e){return this.stream.on(`end`,e),n.Disposable.create(()=>this.stream.off(`end`,e))}onData(e){return this.stream.on(`data`,e),n.Disposable.create(()=>this.stream.off(`data`,e))}},a=class{constructor(e){this.stream=e}onClose(e){return this.stream.on(`close`,e),n.Disposable.create(()=>this.stream.off(`close`,e))}onError(e){return this.stream.on(`error`,e),n.Disposable.create(()=>this.stream.off(`error`,e))}onEnd(e){return this.stream.on(`end`,e),n.Disposable.create(()=>this.stream.off(`end`,e))}write(e,t){return new Promise((n,r)=>{let i=e=>{e==null?n():r(e)};typeof e==`string`?this.stream.write(e,t,i):this.stream.write(e,i)})}end(){this.stream.end()}};let o=Object.freeze({messageBuffer:Object.freeze({create:e=>new r(e)}),applicationJson:Object.freeze({encoder:Object.freeze({name:`application/json`,encode:(e,t)=>{try{return Promise.resolve(Buffer.from(JSON.stringify(e,void 0,0),t.charset))}catch(e){return Promise.reject(e)}}}),decoder:Object.freeze({name:`application/json`,decode:(e,n)=>{try{return e instanceof Buffer?Promise.resolve(JSON.parse(e.toString(n.charset))):Promise.resolve(JSON.parse(new t.TextDecoder(n.charset).decode(e)))}catch(e){return Promise.reject(e)}}})}),stream:Object.freeze({asReadableStream:e=>new i(e),asWritableStream:e=>new a(e)}),console,timer:Object.freeze({setTimeout(e,t,...n){let r=setTimeout(e,t,...n);return{dispose:()=>clearTimeout(r)}},setImmediate(e,...t){let n=setImmediate(e,...t);return{dispose:()=>clearImmediate(n)}},setInterval(e,t,...n){let r=setInterval(e,t,...n);return{dispose:()=>clearInterval(r)}}})});function s(){return o}(function(e){function t(){n.RAL.install(o)}e.install=t})(s||={}),e.default=s})),Tr=s((e=>{var t=e&&e.__createBinding||(Object.create?(function(e,t,n,r){r===void 0&&(r=n);var i=Object.getOwnPropertyDescriptor(t,n);(!i||(`get`in i?!t.__esModule:i.writable||i.configurable))&&(i={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,r,i)}):(function(e,t,n,r){r===void 0&&(r=n),e[r]=t[n]})),n=e&&e.__exportStar||function(e,n){for(var r in e)r!==`default`&&!Object.prototype.hasOwnProperty.call(n,r)&&t(n,e,r)};Object.defineProperty(e,`__esModule`,{value:!0}),e.createMessageConnection=e.createServerSocketTransport=e.createClientSocketTransport=e.createServerPipeTransport=e.createClientPipeTransport=e.generateRandomPipeName=e.StreamMessageWriter=e.StreamMessageReader=e.SocketMessageWriter=e.SocketMessageReader=e.PortMessageWriter=e.PortMessageReader=e.IPCMessageWriter=e.IPCMessageReader=void 0;let r=wr();r.default.install();let i=require(`path`),a=require(`os`),o=require(`crypto`),s=require(`net`),c=Cr();n(Cr(),e),e.IPCMessageReader=class extends c.AbstractMessageReader{constructor(e){super(),this.process=e;let t=this.process;t.on(`error`,e=>this.fireError(e)),t.on(`close`,()=>this.fireClose())}listen(e){return this.process.on(`message`,e),c.Disposable.create(()=>this.process.off(`message`,e))}},e.IPCMessageWriter=class extends c.AbstractMessageWriter{constructor(e){super(),this.process=e,this.errorCount=0;let t=this.process;t.on(`error`,e=>this.fireError(e)),t.on(`close`,()=>this.fireClose)}write(e){try{return typeof this.process.send==`function`&&this.process.send(e,void 0,void 0,t=>{t?(this.errorCount++,this.handleError(t,e)):this.errorCount=0}),Promise.resolve()}catch(t){return this.handleError(t,e),Promise.reject(t)}}handleError(e,t){this.errorCount++,this.fireError(e,t,this.errorCount)}end(){}},e.PortMessageReader=class extends c.AbstractMessageReader{constructor(e){super(),this.onData=new c.Emitter,e.on(`close`,()=>this.fireClose),e.on(`error`,e=>this.fireError(e)),e.on(`message`,e=>{this.onData.fire(e)})}listen(e){return this.onData.event(e)}},e.PortMessageWriter=class extends c.AbstractMessageWriter{constructor(e){super(),this.port=e,this.errorCount=0,e.on(`close`,()=>this.fireClose()),e.on(`error`,e=>this.fireError(e))}write(e){try{return this.port.postMessage(e),Promise.resolve()}catch(t){return this.handleError(t,e),Promise.reject(t)}}handleError(e,t){this.errorCount++,this.fireError(e,t,this.errorCount)}end(){}};var l=class extends c.ReadableStreamMessageReader{constructor(e,t=`utf-8`){super((0,r.default)().stream.asReadableStream(e),t)}};e.SocketMessageReader=l;var u=class extends c.WriteableStreamMessageWriter{constructor(e,t){super((0,r.default)().stream.asWritableStream(e),t),this.socket=e}dispose(){super.dispose(),this.socket.destroy()}};e.SocketMessageWriter=u;var d=class extends c.ReadableStreamMessageReader{constructor(e,t){super((0,r.default)().stream.asReadableStream(e),t)}};e.StreamMessageReader=d;var f=class extends c.WriteableStreamMessageWriter{constructor(e,t){super((0,r.default)().stream.asWritableStream(e),t)}};e.StreamMessageWriter=f;let p=process.env.XDG_RUNTIME_DIR,m=new Map([[`linux`,107],[`darwin`,103]]);function h(){let e=(0,o.randomBytes)(21).toString(`hex`);if(process.platform===`win32`)return`\\\\.\\pipe\\vscode-jsonrpc-${e}-sock`;let t;t=p?i.join(p,`vscode-ipc-${e}.sock`):i.join(a.tmpdir(),`vscode-${e}.sock`);let n=m.get(process.platform);return n!==void 0&&t.length>n&&(0,r.default)().console.warn(`WARNING: IPC handle "${t}" is longer than ${n} characters.`),t}e.generateRandomPipeName=h;function g(e,t=`utf-8`){let n,r=new Promise((e,t)=>{n=e});return new Promise((i,a)=>{let o=(0,s.createServer)(e=>{o.close(),n([new l(e,t),new u(e,t)])});o.on(`error`,a),o.listen(e,()=>{o.removeListener(`error`,a),i({onConnected:()=>r})})})}e.createClientPipeTransport=g;function _(e,t=`utf-8`){let n=(0,s.createConnection)(e);return[new l(n,t),new u(n,t)]}e.createServerPipeTransport=_;function v(e,t=`utf-8`){let n,r=new Promise((e,t)=>{n=e});return new Promise((i,a)=>{let o=(0,s.createServer)(e=>{o.close(),n([new l(e,t),new u(e,t)])});o.on(`error`,a),o.listen(e,`127.0.0.1`,()=>{o.removeListener(`error`,a),i({onConnected:()=>r})})})}e.createClientSocketTransport=v;function y(e,t=`utf-8`){let n=(0,s.createConnection)(e,`127.0.0.1`);return[new l(n,t),new u(n,t)]}e.createServerSocketTransport=y;function b(e){let t=e;return t.read!==void 0&&t.addListener!==void 0}function x(e){let t=e;return t.write!==void 0&&t.addListener!==void 0}function S(e,t,n,r){n||=c.NullLogger;let i=b(e)?new d(e):e,a=x(t)?new f(t):t;return c.ConnectionStrategy.is(r)&&(r={connectionStrategy:r}),(0,c.createMessageConnection)(i,a,n,r)}e.createMessageConnection=S})),Er=s(((e,t)=>{t.exports=Tr()})),Dr=s((e=>{var t=e&&e.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(e,`__esModule`,{value:!0}),e.openConnection=e.hasMinimumVersion=e.getFileReferencesRequestType=e.getDeploymentGraphRequestType=e.getMetadataRequestType=e.compileParamsRequestType=e.compileRequestType=e.versionRequestType=void 0;let n=t(require(`path`)),r=t(require(`os`)),i=require(`child_process`),a=require(`crypto`),o=require(`net`),s=Er();e.versionRequestType=new s.RequestType(`bicep/version`),e.compileRequestType=new s.RequestType(`bicep/compile`),e.compileParamsRequestType=new s.RequestType(`bicep/compileParams`),e.getMetadataRequestType=new s.RequestType(`bicep/getMetadata`),e.getDeploymentGraphRequestType=new s.RequestType(`bicep/getDeploymentGraph`),e.getFileReferencesRequestType=new s.RequestType(`bicep/getFileReferences`);function c(e){let t=`0.25.3`;return{success:e.localeCompare(t,void 0,{numeric:!0,sensitivity:`base`})>=0,minimumVersion:t}}e.hasMinimumVersion=c;function l(e){let t=(0,i.spawnSync)(e,[`--version`],{encoding:`utf-8`});if(t.status!==0)return`Failed to obtain valid Bicep version from '${e} --version'`;let n=t.stdout.match(/Bicep CLI version ([^ ]+) /);if(!n)return`Failed to obtain valid Bicep version from '${e} --version'`;let r=n[1],{success:a,minimumVersion:o}=c(r);if(!a)return`A minimum Bicep version of ${o} is required. Detected version ${r} from '${e} --version'`}function u(){let e=(0,a.randomBytes)(21).toString(`hex`);return process.platform===`win32`?`\\\\.\\pipe\\bicep-${e}-sock`:n.default.join(r.default.tmpdir(),`bicep-${e}.sock`)}function d(e,t){return new Promise((n,r)=>{let i=()=>{a.close(),r()},a=(0,o.createServer)(e=>{t.removeListener(`exit`,i),a.close(),n([new s.SocketMessageReader(e,`utf-8`),new s.SocketMessageWriter(e,`utf-8`)])});t.on(`exit`,i),t.on(`error`,i),a.on(`error`,i),a.listen(e,()=>a.removeListener(`error`,i))})}async function f(e){let t=u(),n=(0,i.spawn)(e,[`jsonrpc`,`--pipe`,t]),r=``;n.stderr.on(`data`,e=>r+=e.toString());let a=new Promise((t,i)=>{n.on(`error`,t=>{i(`Failed to invoke '${e} jsonrpc'. Error: ${t}`)}),n.on(`exit`,()=>{i(l(e)||`Failed to invoke '${e} jsonrpc'. Error: ${r}`)})}),o=d(t,n),[c,f]=await Promise.race([o,a]),p=(0,s.createMessageConnection)(c,f,console);return p.onDispose(()=>n.kill()),n.on(`exit`,()=>p.dispose()),p.listen(),p}e.openConnection=f})),Or=s((e=>{var t=e&&e.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(e,`__esModule`,{value:!0}),e.Bicep=void 0;let n=t(require(`os`)),r=lr(),i=Dr();e.Bicep=class e{constructor(e){this.connection=e}static async initialize(t){let n=new e(await(0,i.openConnection)(t));try{let e=await n.version(),{success:t,minimumVersion:r}=(0,i.hasMinimumVersion)(e);if(!t)throw Error(`Bicep CLI version ${e} is not supported. Please install version ${r} or later.`);return n}catch(e){throw n.dispose(),e}}static async getDownloadUrl(e,t,i){return t??=n.default.platform(),i??=n.default.arch(),await(0,r.getBicepCliDownloadUrl)(t,i,e)}static async install(e,t,i,a){return i??=n.default.platform(),a??=n.default.arch(),await(0,r.installBicepCliWithArch)(e,i,a,t)}async version(){return(await this.connection.sendRequest(i.versionRequestType,{})).version}async compile(e){return await this.connection.sendRequest(i.compileRequestType,e)}async compileParams(e){return await this.connection.sendRequest(i.compileParamsRequestType,e)}async getMetadata(e){return await this.connection.sendRequest(i.getMetadataRequestType,e)}async getDeploymentGraph(e){return await this.connection.sendRequest(i.getDeploymentGraphRequestType,e)}async getFileReferences(e){return await this.connection.sendRequest(i.getFileReferencesRequestType,e)}dispose(){this.connection.dispose()}}})),kr=s((e=>{Object.defineProperty(e,`__esModule`,{value:!0})})),Ar=s((e=>{var t=e&&e.__createBinding||(Object.create?(function(e,t,n,r){r===void 0&&(r=n);var i=Object.getOwnPropertyDescriptor(t,n);(!i||(`get`in i?!t.__esModule:i.writable||i.configurable))&&(i={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,r,i)}):(function(e,t,n,r){r===void 0&&(r=n),e[r]=t[n]})),n=e&&e.__exportStar||function(e,n){for(var r in e)r!==`default`&&!Object.prototype.hasOwnProperty.call(n,r)&&t(n,e,r)};Object.defineProperty(e,`__esModule`,{value:!0}),n(Or(),e),n(kr(),e)})),jr=c({__addDisposableResource:()=>ai,__assign:()=>li,__asyncDelegator:()=>Zr,__asyncGenerator:()=>Xr,__asyncValues:()=>Qr,__await:()=>Yr,__awaiter:()=>Vr,__classPrivateFieldGet:()=>ni,__classPrivateFieldIn:()=>ii,__classPrivateFieldSet:()=>ri,__createBinding:()=>ui,__decorate:()=>Pr,__disposeResources:()=>oi,__esDecorate:()=>Ir,__exportStar:()=>Ur,__extends:()=>Mr,__generator:()=>Hr,__importDefault:()=>ti,__importStar:()=>ei,__makeTemplateObject:()=>$r,__metadata:()=>Br,__param:()=>Fr,__propKey:()=>Rr,__read:()=>Gr,__rest:()=>Nr,__rewriteRelativeImportExtension:()=>si,__runInitializers:()=>Lr,__setFunctionName:()=>zr,__spread:()=>Kr,__spreadArray:()=>Jr,__spreadArrays:()=>qr,__values:()=>Wr,default:()=>mi});function Mr(e,t){if(typeof t!=`function`&&t!==null)throw TypeError(`Class extends value `+String(t)+` is not a constructor or null`);ci(e,t);function n(){this.constructor=e}e.prototype=t===null?Object.create(t):(n.prototype=t.prototype,new n)}function Nr(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(e!=null&&typeof Object.getOwnPropertySymbols==`function`)for(var i=0,r=Object.getOwnPropertySymbols(e);i=0;s--)(o=e[s])&&(a=(i<3?o(a):i>3?o(t,n,a):o(t,n))||a);return i>3&&a&&Object.defineProperty(t,n,a),a}function Fr(e,t){return function(n,r){t(n,r,e)}}function Ir(e,t,n,r,i,a){function o(e){if(e!==void 0&&typeof e!=`function`)throw TypeError(`Function expected`);return e}for(var s=r.kind,c=s===`getter`?`get`:s===`setter`?`set`:`value`,l=!t&&e?r.static?e:e.prototype:null,u=t||(l?Object.getOwnPropertyDescriptor(l,r.name):{}),d,f=!1,p=n.length-1;p>=0;p--){var m={};for(var h in r)m[h]=h===`access`?{}:r[h];for(var h in r.access)m.access[h]=r.access[h];m.addInitializer=function(e){if(f)throw TypeError(`Cannot add initializers after decoration has completed`);a.push(o(e||null))};var g=(0,n[p])(s===`accessor`?{get:u.get,set:u.set}:u[c],m);if(s===`accessor`){if(g===void 0)continue;if(typeof g!=`object`||!g)throw TypeError(`Object expected`);(d=o(g.get))&&(u.get=d),(d=o(g.set))&&(u.set=d),(d=o(g.init))&&i.unshift(d)}else (d=o(g))&&(s===`field`?i.unshift(d):u[c]=d)}l&&Object.defineProperty(l,r.name,u),f=!0}function Lr(e,t,n){for(var r=arguments.length>2,i=0;i0&&a[a.length-1]))&&(s[0]===6||s[0]===2)){n=0;continue}if(s[0]===3&&(!a||s[1]>a[0]&&s[1]=e.length&&(e=void 0),{value:e&&e[r++],done:!e}}};throw TypeError(t?`Object is not iterable.`:`Symbol.iterator is not defined.`)}function Gr(e,t){var n=typeof Symbol==`function`&&e[Symbol.iterator];if(!n)return e;var r=n.call(e),i,a=[],o;try{for(;(t===void 0||t-- >0)&&!(i=r.next()).done;)a.push(i.value)}catch(e){o={error:e}}finally{try{i&&!i.done&&(n=r.return)&&n.call(r)}finally{if(o)throw o.error}}return a}function Kr(){for(var e=[],t=0;t1||c(e,t)})},t&&(i[e]=t(i[e])))}function c(e,t){try{l(r[e](t))}catch(e){f(a[0][3],e)}}function l(e){e.value instanceof Yr?Promise.resolve(e.value.v).then(u,d):f(a[0][2],e)}function u(e){c(`next`,e)}function d(e){c(`throw`,e)}function f(e,t){e(t),a.shift(),a.length&&c(a[0][0],a[0][1])}}function Zr(e){var t,n;return t={},r(`next`),r(`throw`,function(e){throw e}),r(`return`),t[Symbol.iterator]=function(){return this},t;function r(r,i){t[r]=e[r]?function(t){return(n=!n)?{value:Yr(e[r](t)),done:!1}:i?i(t):t}:i}}function Qr(e){if(!Symbol.asyncIterator)throw TypeError(`Symbol.asyncIterator is not defined.`);var t=e[Symbol.asyncIterator],n;return t?t.call(e):(e=typeof Wr==`function`?Wr(e):e[Symbol.iterator](),n={},r(`next`),r(`throw`),r(`return`),n[Symbol.asyncIterator]=function(){return this},n);function r(t){n[t]=e[t]&&function(n){return new Promise(function(r,a){n=e[t](n),i(r,a,n.done,n.value)})}}function i(e,t,n,r){Promise.resolve(r).then(function(t){e({value:t,done:n})},t)}}function $r(e,t){return Object.defineProperty?Object.defineProperty(e,`raw`,{value:t}):e.raw=t,e}function ei(e){if(e&&e.__esModule)return e;var t={};if(e!=null)for(var n=fi(e),r=0;r{ci=function(e,t){return ci=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])},ci(e,t)},li=function(){return li=Object.assign||function(e){for(var t,n=1,r=arguments.length;n{Object.defineProperty(e,`__esModule`,{value:!0}),e.getContinuationToken=n,e.setContinuationToken=r;let t=new WeakMap;function n(e){if(!(typeof e!=`object`||!e))return t.get(e)?.continuationToken}function r(e,n){if(typeof e!=`object`||!e||!n)return;let r=t.get(e)??{};r.continuationToken=n,t.set(e,r)}})),_i=s((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.KnownTagsPatchOperation=e.KnownExportTemplateOutputFormat=e.KnownExtendedLocationType=e.KnownLevel=e.KnownProviderAuthorizationConsentState=e.KnownAliasPathAttributes=e.KnownAliasPathTokenType=e.KnownProvisioningState=e.KnownValidationLevel=e.KnownExpressionEvaluationOptionsScopeType=e.KnownExtensionConfigPropertyType=void 0;var t;(function(e){e.String=`String`,e.Int=`Int`,e.Bool=`Bool`,e.Array=`Array`,e.Object=`Object`,e.SecureString=`SecureString`,e.SecureObject=`SecureObject`})(t||(e.KnownExtensionConfigPropertyType=t={}));var n;(function(e){e.NotSpecified=`NotSpecified`,e.Outer=`Outer`,e.Inner=`Inner`})(n||(e.KnownExpressionEvaluationOptionsScopeType=n={}));var r;(function(e){e.Template=`Template`,e.Provider=`Provider`,e.ProviderNoRbac=`ProviderNoRbac`})(r||(e.KnownValidationLevel=r={}));var i;(function(e){e.NotSpecified=`NotSpecified`,e.Accepted=`Accepted`,e.Running=`Running`,e.Ready=`Ready`,e.Creating=`Creating`,e.Created=`Created`,e.Deleting=`Deleting`,e.Deleted=`Deleted`,e.Canceled=`Canceled`,e.Failed=`Failed`,e.Succeeded=`Succeeded`,e.Updating=`Updating`})(i||(e.KnownProvisioningState=i={}));var a;(function(e){e.NotSpecified=`NotSpecified`,e.Any=`Any`,e.String=`String`,e.Object=`Object`,e.Array=`Array`,e.Integer=`Integer`,e.Number=`Number`,e.Boolean=`Boolean`})(a||(e.KnownAliasPathTokenType=a={}));var o;(function(e){e.None=`None`,e.Modifiable=`Modifiable`})(o||(e.KnownAliasPathAttributes=o={}));var s;(function(e){e.NotSpecified=`NotSpecified`,e.Required=`Required`,e.NotRequired=`NotRequired`,e.Consented=`Consented`})(s||(e.KnownProviderAuthorizationConsentState=s={}));var c;(function(e){e.Warning=`Warning`,e.Info=`Info`,e.Error=`Error`})(c||(e.KnownLevel=c={}));var l;(function(e){e.EdgeZone=`EdgeZone`})(l||(e.KnownExtendedLocationType=l={}));var u;(function(e){e.Json=`Json`,e.Bicep=`Bicep`})(u||(e.KnownExportTemplateOutputFormat=u={}));var d;(function(e){e.Replace=`Replace`,e.Merge=`Merge`,e.Delete=`Delete`})(d||(e.KnownTagsPatchOperation=d={}))})),vi=s((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.encodeString=t,e.encodeByteArray=n,e.decodeString=r,e.decodeStringToString=i;function t(e){return Buffer.from(e).toString(`base64`)}function n(e){return(e instanceof Buffer?e:Buffer.from(e.buffer)).toString(`base64`)}function r(e){return Buffer.from(e,`base64`)}function i(e){return Buffer.from(e,`base64`).toString()}})),yi=s((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.XML_CHARKEY=e.XML_ATTRKEY=void 0,e.XML_ATTRKEY=`$`,e.XML_CHARKEY=`_`})),bi=s((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.isPrimitiveBody=t,e.isDuration=r,e.isValidUuid=a,e.flattenResponse=s;function t(e,t){return t!==`Composite`&&t!==`Dictionary`&&(typeof e==`string`||typeof e==`number`||typeof e==`boolean`||t?.match(/^(Date|DateTime|DateTimeRfc1123|UnixTime|ByteArray|Base64Url)$/i)!==null||e==null)}let n=/^(-|\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/;function r(e){return n.test(e)}let i=/^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/i;function a(e){return i.test(e)}function o(e){let t={...e.headers,...e.body};return e.hasNullableType&&Object.getOwnPropertyNames(t).length===0?e.shouldWrapBody?{body:null}:null:e.shouldWrapBody?{...e.headers,body:e.body}:t}function s(e,n){let r=e.parsedHeaders;if(e.request.method===`HEAD`)return{...r,body:e.parsedBody};let i=n&&n.bodyMapper,a=!!i?.nullable,s=i?.type.name;if(s===`Stream`)return{...r,blobBody:e.blobBody,readableStreamBody:e.readableStreamBody};let c=s===`Composite`&&i.type.modelProperties||{},l=Object.keys(c).some(e=>c[e].serializedName===``);if(s===`Sequence`||l){let t=e.parsedBody??[];for(let n of Object.keys(c))c[n].serializedName&&(t[n]=e.parsedBody?.[n]);if(r)for(let e of Object.keys(r))t[e]=r[e];return a&&!e.parsedBody&&!r&&Object.getOwnPropertyNames(c).length===0?null:t}return o({body:e.parsedBody,headers:r,hasNullableType:a,shouldWrapBody:t(e.parsedBody,s)})}})),xi=s((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.MapperTypeNames=void 0,e.createSerializer=a;let t=(hi(),d(jr)).__importStar(vi()),n=yi(),r=bi();var i=class{constructor(e={},t=!1){this.modelMappers=e,this.isXML=t}validateConstraints(e,t,n){let r=(e,r)=>{throw Error(`"${n}" with value "${t}" should satisfy the constraint "${e}": ${r}.`)};if(e.constraints&&t!=null){let{ExclusiveMaximum:n,ExclusiveMinimum:i,InclusiveMaximum:a,InclusiveMinimum:o,MaxItems:s,MaxLength:c,MinItems:l,MinLength:u,MultipleOf:d,Pattern:f,UniqueItems:p}=e.constraints;if(n!==void 0&&t>=n&&r(`ExclusiveMaximum`,n),i!==void 0&&t<=i&&r(`ExclusiveMinimum`,i),a!==void 0&&t>a&&r(`InclusiveMaximum`,a),o!==void 0&&ts&&r(`MaxItems`,s),c!==void 0&&t.length>c&&r(`MaxLength`,c),l!==void 0&&t.lengthn.indexOf(e)!==t)&&r(`UniqueItems`,p)}}serialize(e,t,r,i={xml:{}}){let a={xml:{rootName:i.xml.rootName??``,includeRoot:i.xml.includeRoot??!1,xmlCharKey:i.xml.xmlCharKey??n.XML_CHARKEY}},o={},s=e.type.name;r||=e.serializedName,s.match(/^Sequence$/i)!==null&&(o=[]),e.isConstant&&(t=e.defaultValue);let{required:c,nullable:l}=e;if(c&&l&&t===void 0)throw Error(`${r} cannot be undefined.`);if(c&&!l&&t==null)throw Error(`${r} cannot be null or undefined.`);if(!c&&l===!1&&t===null)throw Error(`${r} cannot be null.`);return t==null?o=t:s.match(/^any$/i)===null?s.match(/^(Number|String|Boolean|Object|Stream|Uuid)$/i)===null?s.match(/^Enum$/i)===null?s.match(/^(Date|DateTime|TimeSpan|DateTimeRfc1123|UnixTime)$/i)===null?s.match(/^ByteArray$/i)===null?s.match(/^Base64Url$/i)===null?s.match(/^Sequence$/i)===null?s.match(/^Dictionary$/i)===null?s.match(/^Composite$/i)!==null&&(o=C(this,e,t,r,!!this.isXML,a)):o=y(this,e,t,r,!!this.isXML,a):o=v(this,e,t,r,!!this.isXML,a):o=g(r,t):o=h(r,t):o=_(s,t,r):o=m(r,e.type.allowedValues,t):o=p(s,r,t):o=t,o}deserialize(e,r,i,a={xml:{}}){let o={xml:{rootName:a.xml.rootName??``,includeRoot:a.xml.includeRoot??!1,xmlCharKey:a.xml.xmlCharKey??n.XML_CHARKEY},ignoreUnknownProperties:a.ignoreUnknownProperties??!1};if(r==null)return this.isXML&&e.type.name===`Sequence`&&!e.xmlIsWrapped&&(r=[]),e.defaultValue!==void 0&&(r=e.defaultValue),r;let s,l=e.type.name;if(i||=e.serializedName,l.match(/^Composite$/i)!==null)s=E(this,e,r,i,o);else{if(this.isXML){let e=o.xml.xmlCharKey;r[n.XML_ATTRKEY]!==void 0&&r[e]!==void 0&&(r=r[e])}l.match(/^Number$/i)===null?l.match(/^Boolean$/i)===null?l.match(/^(String|Enum|Object|Stream|Uuid|TimeSpan|any)$/i)===null?l.match(/^(Date|DateTime|DateTimeRfc1123)$/i)===null?l.match(/^UnixTime$/i)===null?l.match(/^ByteArray$/i)===null?l.match(/^Base64Url$/i)===null?l.match(/^Sequence$/i)===null?l.match(/^Dictionary$/i)!==null&&(s=D(this,e,r,i,o)):s=O(this,e,r,i,o):s=c(r):s=t.decodeString(r):s=f(r):s=new Date(r):s=r:s=r===`true`?!0:r===`false`?!1:r:(s=parseFloat(r),isNaN(s)&&(s=r))}return e.isConstant&&(s=e.defaultValue),s}};function a(e={},t=!1){return new i(e,t)}function o(e,t){let n=e.length;for(;n-1>=0&&e[n-1]===t;)--n;return e.substr(0,n)}function s(e){if(e){if(!(e instanceof Uint8Array))throw Error(`Please provide an input of type Uint8Array for converting to Base64Url.`);return o(t.encodeByteArray(e),`=`).replace(/\+/g,`-`).replace(/\//g,`_`)}}function c(e){if(e){if(e&&typeof e.valueOf()!=`string`)throw Error(`Please provide an input of type string for converting to Uint8Array`);return e=e.replace(/-/g,`+`).replace(/_/g,`/`),t.decodeString(e)}}function l(e){let t=[],n=``;if(e){let r=e.split(`.`);for(let e of r)e.charAt(e.length-1)===`\\`?n+=e.substr(0,e.length-1)+`.`:(n+=e,t.push(n),n=``)}return t}function u(e){if(e)return typeof e.valueOf()==`string`&&(e=new Date(e)),Math.floor(e.getTime()/1e3)}function f(e){if(e)return new Date(e*1e3)}function p(e,t,n){if(n!=null){if(e.match(/^Number$/i)!==null){if(typeof n!=`number`)throw Error(`${t} with value ${n} must be of type number.`)}else if(e.match(/^String$/i)!==null){if(typeof n.valueOf()!=`string`)throw Error(`${t} with value "${n}" must be of type string.`)}else if(e.match(/^Uuid$/i)!==null){if(!(typeof n.valueOf()==`string`&&(0,r.isValidUuid)(n)))throw Error(`${t} with value "${n}" must be of type string and a valid uuid.`)}else if(e.match(/^Boolean$/i)!==null){if(typeof n!=`boolean`)throw Error(`${t} with value ${n} must be of type boolean.`)}else if(e.match(/^Stream$/i)!==null){let e=typeof n;if(e!==`string`&&typeof n.pipe!=`function`&&typeof n.tee!=`function`&&!(n instanceof ArrayBuffer)&&!ArrayBuffer.isView(n)&&!((typeof Blob==`function`||typeof Blob==`object`)&&n instanceof Blob)&&e!==`function`)throw Error(`${t} must be a string, Blob, ArrayBuffer, ArrayBufferView, ReadableStream, or () => ReadableStream.`)}}return n}function m(e,t,n){if(!t)throw Error(`Please provide a set of allowedValues to validate ${e} as an Enum Type.`);if(!t.some(e=>typeof e.valueOf()==`string`?e.toLowerCase()===n.toLowerCase():e===n))throw Error(`${n} is not a valid value for ${e}. The valid values are: ${JSON.stringify(t)}.`);return n}function h(e,n){if(n!=null){if(!(n instanceof Uint8Array))throw Error(`${e} must be of type Uint8Array.`);n=t.encodeByteArray(n)}return n}function g(e,t){if(t!=null){if(!(t instanceof Uint8Array))throw Error(`${e} must be of type Uint8Array.`);t=s(t)}return t}function _(e,t,n){if(t!=null){if(e.match(/^Date$/i)!==null){if(!(t instanceof Date||typeof t.valueOf()==`string`&&!isNaN(Date.parse(t))))throw Error(`${n} must be an instanceof Date or a string in ISO8601 format.`);t=t instanceof Date?t.toISOString().substring(0,10):new Date(t).toISOString().substring(0,10)}else if(e.match(/^DateTime$/i)!==null){if(!(t instanceof Date||typeof t.valueOf()==`string`&&!isNaN(Date.parse(t))))throw Error(`${n} must be an instanceof Date or a string in ISO8601 format.`);t=t instanceof Date?t.toISOString():new Date(t).toISOString()}else if(e.match(/^DateTimeRfc1123$/i)!==null){if(!(t instanceof Date||typeof t.valueOf()==`string`&&!isNaN(Date.parse(t))))throw Error(`${n} must be an instanceof Date or a string in RFC-1123 format.`);t=t instanceof Date?t.toUTCString():new Date(t).toUTCString()}else if(e.match(/^UnixTime$/i)!==null){if(!(t instanceof Date||typeof t.valueOf()==`string`&&!isNaN(Date.parse(t))))throw Error(`${n} must be an instanceof Date or a string in RFC-1123/ISO8601 format for it to be serialized in UnixTime/Epoch format.`);t=u(t)}else if(e.match(/^TimeSpan$/i)!==null&&!(0,r.isDuration)(t))throw Error(`${n} must be a string in ISO 8601 format. Instead was "${t}".`)}return t}function v(e,t,r,i,a,o){if(!Array.isArray(r))throw Error(`${i} must be of type Array.`);let s=t.type.element;if(!s||typeof s!=`object`)throw Error(`element" metadata for an Array must be defined in the mapper and it must of type "object" in ${i}.`);s.type.name===`Composite`&&s.type.className&&(s=e.modelMappers[s.type.className]??s);let c=[];for(let t=0;te!==n)&&(s[n]=e.serialize(u,r[n],i+`["`+n+`"]`,o))}return s}return r}function w(e,t,r,i){if(!r||!e.xmlNamespace)return t;let a={[e.xmlNamespacePrefix?`xmlns:${e.xmlNamespacePrefix}`:`xmlns`]:e.xmlNamespace};if([`Composite`].includes(e.type.name)){if(t[n.XML_ATTRKEY])return t;{let e={...t};return e[n.XML_ATTRKEY]=a,e}}let o={};return o[i.xml.xmlCharKey]=t,o[n.XML_ATTRKEY]=a,o}function T(e,t){return[n.XML_ATTRKEY,t.xml.xmlCharKey].includes(e)}function E(e,t,r,i,a){let o=a.xml.xmlCharKey??n.XML_CHARKEY;j(e,t)&&(t=A(e,t,r,`serializedName`));let s=S(e,t,i),c={},u=[];for(let d of Object.keys(s)){let f=s[d],p=l(s[d].serializedName);u.push(p[0]);let{serializedName:m,xmlName:h,xmlElementName:g}=f,_=i;m!==``&&m!==void 0&&(_=i+`.`+m);let v=f.headerCollectionPrefix;if(v){let t={};for(let n of Object.keys(r))n.startsWith(v)&&(t[n.substring(v.length)]=e.deserialize(f.type.value,r[n],_,a)),u.push(n);c[d]=t}else if(e.isXML)if(f.xmlIsAttribute&&r[n.XML_ATTRKEY])c[d]=e.deserialize(f,r[n.XML_ATTRKEY][h],_,a);else if(f.xmlIsMsText)r[o]===void 0?typeof r==`string`&&(c[d]=r):c[d]=r[o];else{let t=g||h||m;if(f.xmlIsWrapped){let t=r[h]?.[g]??[];c[d]=e.deserialize(f,t,_,a),u.push(h)}else{let n=r[t];c[d]=e.deserialize(f,n,_,a),u.push(t)}}else{let n,i=r,o=0;for(let e of p){if(!i)break;o++,i=i[e]}i===null&&o{for(let t in s)if(l(s[t].serializedName)[0]===e)return!1;return!0};for(let n in r)t(n)&&(c[n]=e.deserialize(d,r[n],i+`["`+n+`"]`,a))}else if(r&&!a.ignoreUnknownProperties)for(let e of Object.keys(r))c[e]===void 0&&!u.includes(e)&&!T(e,a)&&(c[e]=r[e]);return c}function D(e,t,n,r,i){let a=t.type.value;if(!a||typeof a!=`object`)throw Error(`"value" metadata for a Dictionary must be defined in the mapper and it must of type "object" in ${r}`);if(n){let t={};for(let o of Object.keys(n))t[o]=e.deserialize(a,n[o],r,i);return t}return n}function O(e,t,n,r,i){let a=t.type.element;if(!a||typeof a!=`object`)throw Error(`element" metadata for an Array must be defined in the mapper and it must of type "object" in ${r}`);if(n){Array.isArray(n)||(n=[n]),a.type.name===`Composite`&&a.type.className&&(a=e.modelMappers[a.type.className]??a);let t=[];for(let o=0;o{Object.defineProperty(e,`__esModule`,{value:!0}),e.AbortError=void 0,e.AbortError=class extends Error{constructor(e){super(e),this.name=`AbortError`}}})),Ci=s((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.log=a;let t=(hi(),d(jr)),n=require(`node:os`),r=t.__importDefault(require(`node:util`)),i=t.__importDefault(require(`node:process`));function a(e,...t){i.default.stderr.write(`${r.default.format(e,...t)}${n.EOL}`)}})),wi=s((e=>{Object.defineProperty(e,`__esModule`,{value:!0});let t=Ci(),n=typeof process<`u`&&process.env&&process.env.DEBUG||void 0,r,i=[],a=[],o=[];n&&c(n);let s=Object.assign(e=>f(e),{enable:c,enabled:l,disable:d,log:t.log});function c(e){r=e,i=[],a=[];let t=e.split(`,`).map(e=>e.trim());for(let e of t)e.startsWith(`-`)?a.push(e.substring(1)):i.push(e);for(let e of o)e.enabled=l(e.namespace)}function l(e){if(e.endsWith(`*`))return!0;for(let t of a)if(u(e,t))return!1;for(let t of i)if(u(e,t))return!0;return!1}function u(e,t){if(t.indexOf(`*`)===-1)return e===t;let n=t;if(t.indexOf(`**`)!==-1){let e=[],r=``;for(let n of t)if(n===`*`&&r===`*`)continue;else r=n,e.push(n);n=e.join(``)}let r=0,i=0,a=n.length,o=e.length,s=-1,c=-1;for(;r=0){if(i=s+1,r=c+1,r===o)return!1;for(;e[r]!==n[i];)if(r++,r===o)return!1;c=r,r++,i++;continue}else return!1;let l=r===e.length,u=i===n.length,d=i===n.length-1&&n[i]===`*`;return l&&(u||d)}function d(){let e=r||``;return c(``),e}function f(e){let t=Object.assign(n,{enabled:l(e),destroy:p,log:s.log,namespace:e,extend:m});function n(...n){t.enabled&&(n.length>0&&(n[0]=`${e} ${n[0]}`),t.log(...n))}return o.push(t),t}function p(){let e=o.indexOf(this);return e>=0?(o.splice(e,1),!0):!1}function m(e){let t=f(`${this.namespace}:${e}`);return t.log=this.log,t}e.default=s})),Ti=s((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.TypeSpecRuntimeLogger=void 0,e.createLoggerContext=o,e.setLogLevel=c,e.getLogLevel=l,e.createClientLogger=u;let t=(hi(),d(jr)).__importDefault(wi()),n=[`verbose`,`info`,`warning`,`error`],r={verbose:400,info:300,warning:200,error:100};function i(e,t){t.log=(...t)=>{e.log(...t)}}function a(e){return n.includes(e)}function o(e){let o=new Set,s=typeof process<`u`&&process.env&&process.env[e.logLevelEnvVarName]||void 0,c,l=(0,t.default)(e.namespace);l.log=(...e)=>{t.default.log(...e)};function u(e){if(e&&!a(e))throw Error(`Unknown log level '${e}'. Acceptable values: ${n.join(`,`)}`);c=e;let r=[];for(let e of o)d(e)&&r.push(e.namespace);t.default.enable(r.join(`,`))}s&&(a(s)?u(s):console.error(`${e.logLevelEnvVarName} set to unknown log level '${s}'; logging is not enabled. Acceptable values: ${n.join(`, `)}.`));function d(e){return!!(c&&r[e.level]<=r[c])}function f(e,n){let r=Object.assign(e.extend(n),{level:n});if(i(e,r),d(r)){let e=t.default.disable();t.default.enable(e+`,`+r.namespace)}return o.add(r),r}function p(){return c}function m(e){let t=l.extend(e);return i(l,t),{error:f(t,`error`),warning:f(t,`warning`),info:f(t,`info`),verbose:f(t,`verbose`)}}return{setLogLevel:u,getLogLevel:p,createClientLogger:m,logger:l}}let s=o({logLevelEnvVarName:`TYPESPEC_RUNTIME_LOG_LEVEL`,namespace:`typeSpecRuntime`});e.TypeSpecRuntimeLogger=s.logger;function c(e){s.setLogLevel(e)}function l(){return s.getLogLevel()}function u(e){return s.createClientLogger(e)}})),Ei=s((e=>{let t;Object.defineProperty(e,`__esModule`,{value:!0}),e.createHttpHeaders=a;function n(e){return e.toLowerCase()}function*r(e){for(let t of e.values())yield[t.name,t.value]}t=Symbol.iterator;var i=class{constructor(e){if(this._headersMap=new Map,e)for(let t of Object.keys(e))this.set(t,e[t])}set(e,t){this._headersMap.set(n(e),{name:e,value:String(t).trim()})}get(e){return this._headersMap.get(n(e))?.value}has(e){return this._headersMap.has(n(e))}delete(e){this._headersMap.delete(n(e))}toJSON(e={}){let t={};if(e.preserveCase)for(let e of this._headersMap.values())t[e.name]=e.value;else for(let[e,n]of this._headersMap)t[e]=n.value;return t}toString(){return JSON.stringify(this.toJSON({preserveCase:!0}))}[t](){return r(this._headersMap)}};function a(e){return new i(e)}})),Di=s((e=>{Object.defineProperty(e,`__esModule`,{value:!0})})),Oi=s((e=>{Object.defineProperty(e,`__esModule`,{value:!0})})),ki=s((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.randomUUID=t;function t(){return crypto.randomUUID()}})),Ai=s((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.createPipelineRequest=i;let t=Ei(),n=ki();var r=class{constructor(e){this.url=e.url,this.body=e.body,this.headers=e.headers??(0,t.createHttpHeaders)(),this.method=e.method??`GET`,this.timeout=e.timeout??0,this.multipartBody=e.multipartBody,this.formData=e.formData,this.disableKeepAlive=e.disableKeepAlive??!1,this.proxySettings=e.proxySettings,this.streamResponseStatusCodes=e.streamResponseStatusCodes,this.withCredentials=e.withCredentials??!1,this.abortSignal=e.abortSignal,this.onUploadProgress=e.onUploadProgress,this.onDownloadProgress=e.onDownloadProgress,this.requestId=e.requestId||(0,n.randomUUID)(),this.allowInsecureConnection=e.allowInsecureConnection??!1,this.enableBrowserStreams=e.enableBrowserStreams??!1,this.requestOverrides=e.requestOverrides,this.authSchemes=e.authSchemes}};function i(e){return new r(e)}})),ji=s((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.createEmptyPipeline=r;let t=new Set([`Deserialize`,`Serialize`,`Retry`,`Sign`]);var n=class e{constructor(e){this._policies=[],this._policies=e?.slice(0)??[],this._orderedPolicies=void 0}addPolicy(e,n={}){if(n.phase&&n.afterPhase)throw Error(`Policies inside a phase cannot specify afterPhase.`);if(n.phase&&!t.has(n.phase))throw Error(`Invalid phase name: ${n.phase}`);if(n.afterPhase&&!t.has(n.afterPhase))throw Error(`Invalid afterPhase name: ${n.afterPhase}`);this._policies.push({policy:e,options:n}),this._orderedPolicies=void 0}removePolicy(e){let t=[];return this._policies=this._policies.filter(n=>e.name&&n.policy.name===e.name||e.phase&&n.options.phase===e.phase?(t.push(n.policy),!1):!0),this._orderedPolicies=void 0,t}sendRequest(e,t){return this.getOrderedPolicies().reduceRight((e,t)=>n=>t.sendRequest(n,e),t=>e.sendRequest(t))(t)}getOrderedPolicies(){return this._orderedPolicies||=this.orderPolicies(),this._orderedPolicies}clone(){return new e(this._policies)}static create(){return new e}orderPolicies(){let e=[],t=new Map;function n(e){return{name:e,policies:new Set,hasRun:!1,hasAfterPolicies:!1}}let r=n(`Serialize`),i=n(`None`),a=n(`Deserialize`),o=n(`Retry`),s=n(`Sign`),c=[r,i,a,o,s];function l(e){return e===`Retry`?o:e===`Serialize`?r:e===`Deserialize`?a:e===`Sign`?s:i}for(let e of this._policies){let n=e.policy,r=e.options,i=n.name;if(t.has(i))throw Error(`Duplicate policy names not allowed in pipeline`);let a={policy:n,dependsOn:new Set,dependants:new Set};r.afterPhase&&(a.afterPhase=l(r.afterPhase),a.afterPhase.hasAfterPolicies=!0),t.set(i,a),l(r.phase).policies.add(a)}for(let e of this._policies){let{policy:n,options:r}=e,i=n.name,a=t.get(i);if(!a)throw Error(`Missing node for policy ${i}`);if(r.afterPolicies)for(let e of r.afterPolicies){let n=t.get(e);n&&(a.dependsOn.add(n),n.dependants.add(a))}if(r.beforePolicies)for(let e of r.beforePolicies){let n=t.get(e);n&&(n.dependsOn.add(a),a.dependants.add(n))}}function u(n){n.hasRun=!0;for(let r of n.policies)if(!(r.afterPhase&&(!r.afterPhase.hasRun||r.afterPhase.policies.size))&&r.dependsOn.size===0){e.push(r.policy);for(let e of r.dependants)e.dependsOn.delete(r);t.delete(r.policy.name),n.policies.delete(r)}}function d(){for(let e of c){if(u(e),e.policies.size>0&&e!==i){i.hasRun||u(i);return}e.hasAfterPolicies&&u(i)}}let f=0;for(;t.size>0;){f++;let t=e.length;if(d(),e.length<=t&&f>1)throw Error(`Cannot satisfy policy dependencies due to requirements cycle.`)}return e}};function r(){return n.create()}})),Mi=s((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.isObject=t;function t(e){return typeof e==`object`&&!!e&&!Array.isArray(e)&&!(e instanceof RegExp)&&!(e instanceof Date)}})),Ni=s((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.isError=n;let t=Mi();function n(e){if((0,t.isObject)(e)){let t=typeof e.name==`string`,n=typeof e.message==`string`;return t&&n}return!1}})),Pi=s((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.custom=void 0,e.custom=require(`node:util`).inspect.custom})),Fi=s((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.Sanitizer=void 0;let t=Mi(),n=`REDACTED`,r=`x-ms-client-request-id.x-ms-return-client-request-id.x-ms-useragent.x-ms-correlation-request-id.x-ms-request-id.client-request-id.ms-cv.return-client-request-id.traceparent.Access-Control-Allow-Credentials.Access-Control-Allow-Headers.Access-Control-Allow-Methods.Access-Control-Allow-Origin.Access-Control-Expose-Headers.Access-Control-Max-Age.Access-Control-Request-Headers.Access-Control-Request-Method.Origin.Accept.Accept-Encoding.Cache-Control.Connection.Content-Length.Content-Type.Date.ETag.Expires.If-Match.If-Modified-Since.If-None-Match.If-Unmodified-Since.Last-Modified.Pragma.Request-Id.Retry-After.Server.Transfer-Encoding.User-Agent.WWW-Authenticate`.split(`.`),i=[`api-version`];e.Sanitizer=class{constructor({additionalAllowedHeaderNames:e=[],additionalAllowedQueryParameters:t=[]}={}){e=r.concat(e),t=i.concat(t),this.allowedHeaderNames=new Set(e.map(e=>e.toLowerCase())),this.allowedQueryParameters=new Set(t.map(e=>e.toLowerCase()))}sanitize(e){let n=new Set;return JSON.stringify(e,(e,r)=>{if(r instanceof Error)return{...r,name:r.name,message:r.message};if(e===`headers`)return this.sanitizeHeaders(r);if(e===`url`)return this.sanitizeUrl(r);if(e===`query`)return this.sanitizeQuery(r);if(e!==`body`&&e!==`response`&&e!==`operationSpec`){if(Array.isArray(r)||(0,t.isObject)(r)){if(n.has(r))return`[Circular]`;n.add(r)}return r}},2)}sanitizeUrl(e){if(typeof e!=`string`||e===null||e===``)return e;let t=new URL(e);if(!t.search)return e;for(let[e]of t.searchParams)this.allowedQueryParameters.has(e.toLowerCase())||t.searchParams.set(e,n);return t.toString()}sanitizeHeaders(e){let t={};for(let r of Object.keys(e))this.allowedHeaderNames.has(r.toLowerCase())?t[r]=e[r]:t[r]=n;return t}sanitizeQuery(e){if(typeof e!=`object`||!e)return e;let t={};for(let r of Object.keys(e))this.allowedQueryParameters.has(r.toLowerCase())?t[r]=e[r]:t[r]=n;return t}}})),Ii=s((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.RestError=void 0,e.isRestError=a;let t=Ni(),n=Pi(),r=new(Fi()).Sanitizer;var i=class e extends Error{constructor(t,i={}){super(t),this.name=`RestError`,this.code=i.code,this.statusCode=i.statusCode,Object.defineProperty(this,`request`,{value:i.request,enumerable:!1}),Object.defineProperty(this,`response`,{value:i.response,enumerable:!1});let a=this.request?.agent?{maxFreeSockets:this.request.agent.maxFreeSockets,maxSockets:this.request.agent.maxSockets}:void 0;Object.defineProperty(this,n.custom,{value:()=>`RestError: ${this.message} \n ${r.sanitize({...this,request:{...this.request,agent:a},response:this.response})}`,enumerable:!1}),Object.setPrototypeOf(this,e.prototype)}};i.REQUEST_SEND_ERROR=`REQUEST_SEND_ERROR`,i.PARSE_ERROR=`PARSE_ERROR`,e.RestError=i;function a(e){return e instanceof i?!0:(0,t.isError)(e)&&e.name===`RestError`}})),Li=s((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.uint8ArrayToString=t,e.stringToUint8Array=n;function t(e,t){return Buffer.from(e).toString(t)}function n(e,t){return Buffer.from(e,t)}})),Ri=s((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.logger=void 0,e.logger=(0,Ti().createClientLogger)(`ts-http-runtime`)})),zi=s((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.getBodyLength=x,e.createNodeHttpClient=S;let t=(hi(),d(jr)),n=t.__importDefault(require(`node:http`)),r=t.__importDefault(require(`node:https`)),i=t.__importDefault(require(`node:zlib`)),a=require(`node:stream`),o=Si(),s=Ei(),c=Ii(),l=Ri(),u=Fi(),f={};function p(e){return e&&typeof e.pipe==`function`}function m(e){return e.readable===!1?Promise.resolve():new Promise(t=>{let n=()=>{t(),e.removeListener(`close`,n),e.removeListener(`end`,n),e.removeListener(`error`,n)};e.on(`close`,n),e.on(`end`,n),e.on(`error`,n)})}function h(e){return e&&typeof e.byteLength==`number`}var g=class extends a.Transform{_transform(e,t,n){this.push(e),this.loadedBytes+=e.length;try{this.progressCallback({loadedBytes:this.loadedBytes}),n()}catch(e){n(e)}}constructor(e){super(),this.loadedBytes=0,this.progressCallback=e}},_=class{constructor(){this.cachedHttpsAgents=new WeakMap}async sendRequest(e){let t=new AbortController,n;if(e.abortSignal){if(e.abortSignal.aborted)throw new o.AbortError(`The operation was aborted. Request has already been canceled.`);n=e=>{e.type===`abort`&&t.abort()},e.abortSignal.addEventListener(`abort`,n)}let r;e.timeout>0&&(r=setTimeout(()=>{let n=new u.Sanitizer;l.logger.info(`request to '${n.sanitizeUrl(e.url)}' timed out. canceling...`),t.abort()},e.timeout));let i=e.headers.get(`Accept-Encoding`),a=i?.includes(`gzip`)||i?.includes(`deflate`),s=typeof e.body==`function`?e.body():e.body;if(s&&!e.headers.has(`Content-Length`)){let t=x(s);t!==null&&e.headers.set(`Content-Length`,t)}let c;try{if(s&&e.onUploadProgress){let t=e.onUploadProgress,n=new g(t);n.on(`error`,e=>{l.logger.error(`Error in upload progress`,e)}),p(s)?s.pipe(n):n.end(s),s=n}let n=await this.makeRequest(e,t,s);r!==void 0&&clearTimeout(r);let i=v(n),o={status:n.statusCode??0,headers:i,request:e};if(e.method===`HEAD`)return n.resume(),o;c=a?y(n,i):n;let u=e.onDownloadProgress;if(u){let e=new g(u);e.on(`error`,e=>{l.logger.error(`Error in download progress`,e)}),c.pipe(e),c=e}return e.streamResponseStatusCodes?.has(1/0)||e.streamResponseStatusCodes?.has(o.status)?o.readableStreamBody=c:o.bodyAsText=await b(c),o}finally{if(e.abortSignal&&n){let t=Promise.resolve();p(s)&&(t=m(s));let r=Promise.resolve();p(c)&&(r=m(c)),Promise.all([t,r]).then(()=>{n&&e.abortSignal?.removeEventListener(`abort`,n)}).catch(e=>{l.logger.warning(`Error when cleaning up abortListener on httpRequest`,e)})}}}makeRequest(e,t,i){let a=new URL(e.url),s=a.protocol!==`https:`;if(s&&!e.allowInsecureConnection)throw Error(`Cannot connect to ${e.url} while allowInsecureConnection is false.`);let u={agent:e.agent??this.getOrCreateAgent(e,s),hostname:a.hostname,path:`${a.pathname}${a.search}`,port:a.port,method:e.method,headers:e.headers.toJSON({preserveCase:!0}),...e.requestOverrides};return new Promise((a,d)=>{let f=s?n.default.request(u,a):r.default.request(u,a);f.once(`error`,t=>{d(new c.RestError(t.message,{code:t.code??c.RestError.REQUEST_SEND_ERROR,request:e}))}),t.signal.addEventListener(`abort`,()=>{let e=new o.AbortError(`The operation was aborted. Rejecting from abort signal callback while making request.`);f.destroy(e),d(e)}),i&&p(i)?i.pipe(f):i?typeof i==`string`||Buffer.isBuffer(i)?f.end(i):h(i)?f.end(ArrayBuffer.isView(i)?Buffer.from(i.buffer):Buffer.from(i)):(l.logger.error(`Unrecognized body type`,i),d(new c.RestError(`Unrecognized body type`))):f.end()})}getOrCreateAgent(e,t){let i=e.disableKeepAlive;if(t)return i?n.default.globalAgent:(this.cachedHttpAgent||=new n.default.Agent({keepAlive:!0}),this.cachedHttpAgent);{if(i&&!e.tlsSettings)return r.default.globalAgent;let t=e.tlsSettings??f,n=this.cachedHttpsAgents.get(t);return n&&n.options.keepAlive===!i?n:(l.logger.info(`No cached TLS Agent exist, creating a new Agent`),n=new r.default.Agent({keepAlive:!i,...t}),this.cachedHttpsAgents.set(t,n),n)}}};function v(e){let t=(0,s.createHttpHeaders)();for(let n of Object.keys(e.headers)){let r=e.headers[n];Array.isArray(r)?r.length>0&&t.set(n,r[0]):r&&t.set(n,r)}return t}function y(e,t){let n=t.get(`Content-Encoding`);if(n===`gzip`){let t=i.default.createGunzip();return e.pipe(t),t}else if(n===`deflate`){let t=i.default.createInflate();return e.pipe(t),t}return e}function b(e){return new Promise((t,n)=>{let r=[];e.on(`data`,e=>{Buffer.isBuffer(e)?r.push(e):r.push(Buffer.from(e))}),e.on(`end`,()=>{t(Buffer.concat(r).toString(`utf8`))}),e.on(`error`,e=>{e&&e?.name===`AbortError`?n(e):n(new c.RestError(`Error reading response as text: ${e.message}`,{code:c.RestError.PARSE_ERROR}))})})}function x(e){return e?Buffer.isBuffer(e)?e.length:p(e)?null:h(e)?e.byteLength:typeof e==`string`?Buffer.from(e).length:null:0}function S(){return new _}})),Bi=s((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.createDefaultHttpClient=n;let t=zi();function n(){return(0,t.createNodeHttpClient)()}})),Vi=s((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.logPolicyName=void 0,e.logPolicy=r;let t=Ri(),n=Fi();e.logPolicyName=`logPolicy`;function r(r={}){let i=r.logger??t.logger.info,a=new n.Sanitizer({additionalAllowedHeaderNames:r.additionalAllowedHeaderNames,additionalAllowedQueryParameters:r.additionalAllowedQueryParameters});return{name:e.logPolicyName,async sendRequest(e,t){if(!i.enabled)return t(e);i(`Request: ${a.sanitize(e)}`);let n=await t(e);return i(`Response status code: ${n.status}`),i(`Headers: ${a.sanitize(n.headers)}`),n}}}})),Hi=s((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.redirectPolicyName=void 0,e.redirectPolicy=n,e.redirectPolicyName=`redirectPolicy`;let t=[`GET`,`HEAD`];function n(t={}){let{maxRetries:n=20}=t;return{name:e.redirectPolicyName,async sendRequest(e,t){return r(t,await t(e),n)}}}async function r(e,n,i,a=0){let{request:o,status:s,headers:c}=n,l=c.get(`location`);return l&&(s===300||s===301&&t.includes(o.method)||s===302&&t.includes(o.method)||s===303&&o.method===`POST`||s===307)&&a{Object.defineProperty(e,`__esModule`,{value:!0}),e.getHeaderName=i,e.setPlatformSpecificData=a;let t=(hi(),d(jr)),n=t.__importDefault(require(`node:os`)),r=t.__importDefault(require(`node:process`));function i(){return`User-Agent`}async function a(e){if(r.default&&r.default.versions){let t=`${n.default.type()} ${n.default.release()}; ${n.default.arch()}`,i=r.default.versions;i.bun?e.set(`Bun`,`${i.bun} (${t})`):i.deno?e.set(`Deno`,`${i.deno} (${t})`):i.node&&e.set(`Node`,`${i.node} (${t})`)}}})),Wi=s((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.DEFAULT_RETRY_POLICY_COUNT=e.SDK_VERSION=void 0,e.SDK_VERSION=`0.3.2`,e.DEFAULT_RETRY_POLICY_COUNT=3})),Gi=s((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.getUserAgentHeaderName=i,e.getUserAgentValue=a;let t=Ui(),n=Wi();function r(e){let t=[];for(let[n,r]of e){let e=r?`${n}/${r}`:n;t.push(e)}return t.join(` `)}function i(){return(0,t.getHeaderName)()}async function a(e){let i=new Map;i.set(`ts-http-runtime`,n.SDK_VERSION),await(0,t.setPlatformSpecificData)(i);let a=r(i);return e?`${e} ${a}`:a}})),Ki=s((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.userAgentPolicyName=void 0,e.userAgentPolicy=r;let t=Gi(),n=(0,t.getUserAgentHeaderName)();e.userAgentPolicyName=`userAgentPolicy`;function r(r={}){let i=(0,t.getUserAgentValue)(r.userAgentPrefix);return{name:e.userAgentPolicyName,async sendRequest(e,t){return e.headers.has(n)||e.headers.set(n,await i),t(e)}}}})),qi=s((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.decompressResponsePolicyName=void 0,e.decompressResponsePolicy=t,e.decompressResponsePolicyName=`decompressResponsePolicy`;function t(){return{name:e.decompressResponsePolicyName,async sendRequest(e,t){return e.method!==`HEAD`&&e.headers.set(`Accept-Encoding`,`gzip,deflate`),t(e)}}}})),Ji=s((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.getRandomIntegerInclusive=t;function t(e,t){return e=Math.ceil(e),t=Math.floor(t),Math.floor(Math.random()*(t-e+1))+e}})),Yi=s((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.calculateRetryDelay=n;let t=Ji();function n(e,n){let r=n.retryDelayInMs*2**e,i=Math.min(n.maxRetryDelayInMs,r);return{retryAfterInMs:i/2+(0,t.getRandomIntegerInclusive)(0,i/2)}}})),Xi=s((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.delay=n,e.parseHeaderValueAsNumber=r;let t=Si();function n(e,n,r){return new Promise((i,a)=>{let o,s,c=()=>a(new t.AbortError(r?.abortErrorMsg?r?.abortErrorMsg:`The operation was aborted.`)),l=()=>{r?.abortSignal&&s&&r.abortSignal.removeEventListener(`abort`,s)};if(s=()=>(o&&clearTimeout(o),l(),c()),r?.abortSignal&&r.abortSignal.aborted)return c();o=setTimeout(()=>{l(),i(n)},e),r?.abortSignal&&r.abortSignal.addEventListener(`abort`,s)})}function r(e,t){let n=e.headers.get(t);if(!n)return;let r=Number(n);if(!Number.isNaN(r))return r}})),Zi=s((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.isThrottlingRetryResponse=a,e.throttlingRetryStrategy=o;let t=Xi(),n=`Retry-After`,r=[`retry-after-ms`,`x-ms-retry-after-ms`,n];function i(e){if(e&&[429,503].includes(e.status))try{for(let i of r){let r=(0,t.parseHeaderValueAsNumber)(e,i);if(r===0||r)return r*(i===n?1e3:1)}let i=e.headers.get(n);if(!i)return;let a=Date.parse(i)-Date.now();return Number.isFinite(a)?Math.max(0,a):void 0}catch{return}}function a(e){return Number.isFinite(i(e))}function o(){return{name:`throttlingRetryStrategy`,retry({response:e}){let t=i(e);return Number.isFinite(t)?{retryAfterInMs:t}:{skipStrategy:!0}}}}})),Qi=s((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.exponentialRetryStrategy=r,e.isExponentialRetryResponse=i,e.isSystemError=a;let t=Yi(),n=Zi();function r(e={}){let r=e.retryDelayInMs??1e3,o=e.maxRetryDelayInMs??64e3;return{name:`exponentialRetryStrategy`,retry({retryCount:s,response:c,responseError:l}){let u=a(l),d=u&&e.ignoreSystemErrors,f=i(c),p=f&&e.ignoreHttpStatusCodes;return c&&((0,n.isThrottlingRetryResponse)(c)||!f)||p||d?{skipStrategy:!0}:l&&!u&&!f?{errorToThrow:l}:(0,t.calculateRetryDelay)(s,{retryDelayInMs:r,maxRetryDelayInMs:o})}}}function i(e){return!!(e&&e.status!==void 0&&(e.status>=500||e.status===408)&&e.status!==501&&e.status!==505)}function a(e){return e?e.code===`ETIMEDOUT`||e.code===`ESOCKETTIMEDOUT`||e.code===`ECONNREFUSED`||e.code===`ECONNRESET`||e.code===`ENOENT`||e.code===`ENOTFOUND`:!1}})),$i=s((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.retryPolicy=o;let t=Xi(),n=Si(),r=Ti(),i=Wi(),a=(0,r.createClientLogger)(`ts-http-runtime retryPolicy`);function o(e,r={maxRetries:i.DEFAULT_RETRY_POLICY_COUNT}){let o=r.logger||a;return{name:`retryPolicy`,async sendRequest(a,s){let c,l,u=-1;retryRequest:for(;;){u+=1,c=void 0,l=void 0;try{o.info(`Retry ${u}: Attempting to send request`,a.requestId),c=await s(a),o.info(`Retry ${u}: Received a response from request`,a.requestId)}catch(e){if(o.error(`Retry ${u}: Received an error from request`,a.requestId),l=e,!e||l.name!==`RestError`)throw e;c=l.response}if(a.abortSignal?.aborted)throw o.error(`Retry ${u}: Request aborted.`),new n.AbortError;if(u>=(r.maxRetries??i.DEFAULT_RETRY_POLICY_COUNT)){if(o.info(`Retry ${u}: Maximum retries reached. Returning the last received response, or throwing the last received error.`),l)throw l;if(c)return c;throw Error(`Maximum retries reached with no response or error to throw`)}o.info(`Retry ${u}: Processing ${e.length} retry strategies.`);strategiesLoop:for(let n of e){let e=n.logger||o;e.info(`Retry ${u}: Processing retry strategy ${n.name}.`);let r=n.retry({retryCount:u,response:c,responseError:l});if(r.skipStrategy){e.info(`Retry ${u}: Skipped.`);continue strategiesLoop}let{errorToThrow:i,retryAfterInMs:s,redirectTo:d}=r;if(i)throw e.error(`Retry ${u}: Retry strategy ${n.name} throws error:`,i),i;if(s||s===0){e.info(`Retry ${u}: Retry strategy ${n.name} retries after ${s}`),await(0,t.delay)(s,void 0,{abortSignal:a.abortSignal});continue retryRequest}if(d){e.info(`Retry ${u}: Retry strategy ${n.name} redirects to ${d}`),a.url=d;continue retryRequest}}if(l)throw o.info(`None of the retry strategies could work with the received error. Throwing it.`),l;if(c)return o.info(`None of the retry strategies could work with the received response. Returning it.`),c}}}}})),ea=s((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.defaultRetryPolicyName=void 0,e.defaultRetryPolicy=a;let t=Qi(),n=Zi(),r=$i(),i=Wi();e.defaultRetryPolicyName=`defaultRetryPolicy`;function a(a={}){return{name:e.defaultRetryPolicyName,sendRequest:(0,r.retryPolicy)([(0,n.throttlingRetryStrategy)(),(0,t.exponentialRetryStrategy)(a)],{maxRetries:a.maxRetries??i.DEFAULT_RETRY_POLICY_COUNT}).sendRequest}}})),ta=s((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.isReactNative=e.isNodeRuntime=e.isNodeLike=e.isBun=e.isDeno=e.isWebWorker=e.isBrowser=void 0,e.isBrowser=typeof window<`u`&&window.document!==void 0,e.isWebWorker=typeof self==`object`&&typeof self?.importScripts==`function`&&(self.constructor?.name===`DedicatedWorkerGlobalScope`||self.constructor?.name===`ServiceWorkerGlobalScope`||self.constructor?.name===`SharedWorkerGlobalScope`),e.isDeno=typeof Deno<`u`&&Deno.version!==void 0&&Deno.version.deno!==void 0,e.isBun=typeof Bun<`u`&&Bun.version!==void 0,e.isNodeLike=globalThis.process!==void 0&&!!globalThis.process.version&&!!globalThis.process.versions?.node,e.isNodeRuntime=e.isNodeLike&&!e.isBun&&!e.isDeno,e.isReactNative=typeof navigator<`u`&&navigator?.product===`ReactNative`})),na=s((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.formDataPolicyName=void 0,e.formDataPolicy=a;let t=Li(),n=ta(),r=Ei();e.formDataPolicyName=`formDataPolicy`;function i(e){let t={};for(let[n,r]of e.entries())t[n]??=[],t[n].push(r);return t}function a(){return{name:e.formDataPolicyName,async sendRequest(e,t){if(n.isNodeLike&&typeof FormData<`u`&&e.body instanceof FormData&&(e.formData=i(e.body),e.body=void 0),e.formData){let t=e.headers.get(`Content-Type`);t&&t.indexOf(`application/x-www-form-urlencoded`)!==-1?e.body=o(e.formData):await s(e.formData,e),e.formData=void 0}return t(e)}}}function o(e){let t=new URLSearchParams;for(let[n,r]of Object.entries(e))if(Array.isArray(r))for(let e of r)t.append(n,e.toString());else t.append(n,r.toString());return t.toString()}async function s(e,n){let i=n.headers.get(`Content-Type`);if(i&&!i.startsWith(`multipart/form-data`))return;n.headers.set(`Content-Type`,i??`multipart/form-data`);let a=[];for(let[n,i]of Object.entries(e))for(let e of Array.isArray(i)?i:[i])if(typeof e==`string`)a.push({headers:(0,r.createHttpHeaders)({"Content-Disposition":`form-data; name="${n}"`}),body:(0,t.stringToUint8Array)(e,`utf-8`)});else if(typeof e!=`object`||!e)throw Error(`Unexpected value for key ${n}: ${e}. Value should be serialized to string first.`);else{let t=e.name||`blob`,i=(0,r.createHttpHeaders)();i.set(`Content-Disposition`,`form-data; name="${n}"; filename="${t}"`),i.set(`Content-Type`,e.type||`application/octet-stream`),a.push({headers:i,body:e})}n.multipartBody={parts:a}}})),ra=s(((e,t)=>{var n=1e3,r=n*60,i=r*60,a=i*24,o=a*7,s=a*365.25;t.exports=function(e,t){t||={};var n=typeof e;if(n===`string`&&e.length>0)return c(e);if(n===`number`&&isFinite(e))return t.long?u(e):l(e);throw Error(`val is not a non-empty string or a valid number. val=`+JSON.stringify(e))};function c(e){if(e=String(e),!(e.length>100)){var t=/^(-?(?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(e);if(t){var c=parseFloat(t[1]);switch((t[2]||`ms`).toLowerCase()){case`years`:case`year`:case`yrs`:case`yr`:case`y`:return c*s;case`weeks`:case`week`:case`w`:return c*o;case`days`:case`day`:case`d`:return c*a;case`hours`:case`hour`:case`hrs`:case`hr`:case`h`:return c*i;case`minutes`:case`minute`:case`mins`:case`min`:case`m`:return c*r;case`seconds`:case`second`:case`secs`:case`sec`:case`s`:return c*n;case`milliseconds`:case`millisecond`:case`msecs`:case`msec`:case`ms`:return c;default:return}}}}function l(e){var t=Math.abs(e);return t>=a?Math.round(e/a)+`d`:t>=i?Math.round(e/i)+`h`:t>=r?Math.round(e/r)+`m`:t>=n?Math.round(e/n)+`s`:e+`ms`}function u(e){var t=Math.abs(e);return t>=a?d(e,t,a,`day`):t>=i?d(e,t,i,`hour`):t>=r?d(e,t,r,`minute`):t>=n?d(e,t,n,`second`):e+` ms`}function d(e,t,n,r){var i=t>=n*1.5;return Math.round(e/n)+` `+r+(i?`s`:``)}})),ia=s(((e,t)=>{function n(e){n.debug=n,n.default=n,n.coerce=c,n.disable=o,n.enable=i,n.enabled=s,n.humanize=ra(),n.destroy=l,Object.keys(e).forEach(t=>{n[t]=e[t]}),n.names=[],n.skips=[],n.formatters={};function t(e){let t=0;for(let n=0;n{if(t===`%%`)return`%`;a++;let o=n.formatters[i];if(typeof o==`function`){let n=e[a];t=o.call(r,n),e.splice(a,1),a--}return t}),n.formatArgs.call(r,e),(r.log||n.log).apply(r,e)}return s.namespace=e,s.useColors=n.useColors(),s.color=n.selectColor(e),s.extend=r,s.destroy=n.destroy,Object.defineProperty(s,`enabled`,{enumerable:!0,configurable:!1,get:()=>i===null?(a!==n.namespaces&&(a=n.namespaces,o=n.enabled(e)),o):i,set:e=>{i=e}}),typeof n.init==`function`&&n.init(s),s}function r(e,t){let r=n(this.namespace+(t===void 0?`:`:t)+e);return r.log=this.log,r}function i(e){n.save(e),n.namespaces=e,n.names=[],n.skips=[];let t=(typeof e==`string`?e:``).trim().replace(/\s+/g,`,`).split(`,`).filter(Boolean);for(let e of t)e[0]===`-`?n.skips.push(e.slice(1)):n.names.push(e)}function a(e,t){let n=0,r=0,i=-1,a=0;for(;n`-`+e)].join(`,`);return n.enable(``),e}function s(e){for(let t of n.skips)if(a(e,t))return!1;for(let t of n.names)if(a(e,t))return!0;return!1}function c(e){return e instanceof Error?e.stack||e.message:e}function l(){console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.")}return n.enable(n.load()),n}t.exports=n})),aa=s(((e,t)=>{e.formatArgs=r,e.save=i,e.load=a,e.useColors=n,e.storage=o(),e.destroy=(()=>{let e=!1;return()=>{e||(e=!0,console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`."))}})(),e.colors=`#0000CC.#0000FF.#0033CC.#0033FF.#0066CC.#0066FF.#0099CC.#0099FF.#00CC00.#00CC33.#00CC66.#00CC99.#00CCCC.#00CCFF.#3300CC.#3300FF.#3333CC.#3333FF.#3366CC.#3366FF.#3399CC.#3399FF.#33CC00.#33CC33.#33CC66.#33CC99.#33CCCC.#33CCFF.#6600CC.#6600FF.#6633CC.#6633FF.#66CC00.#66CC33.#9900CC.#9900FF.#9933CC.#9933FF.#99CC00.#99CC33.#CC0000.#CC0033.#CC0066.#CC0099.#CC00CC.#CC00FF.#CC3300.#CC3333.#CC3366.#CC3399.#CC33CC.#CC33FF.#CC6600.#CC6633.#CC9900.#CC9933.#CCCC00.#CCCC33.#FF0000.#FF0033.#FF0066.#FF0099.#FF00CC.#FF00FF.#FF3300.#FF3333.#FF3366.#FF3399.#FF33CC.#FF33FF.#FF6600.#FF6633.#FF9900.#FF9933.#FFCC00.#FFCC33`.split(`.`);function n(){if(typeof window<`u`&&window.process&&(window.process.type===`renderer`||window.process.__nwjs))return!0;if(typeof navigator<`u`&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/(edge|trident)\/(\d+)/))return!1;let e;return typeof document<`u`&&document.documentElement&&document.documentElement.style&&document.documentElement.style.WebkitAppearance||typeof window<`u`&&window.console&&(window.console.firebug||window.console.exception&&window.console.table)||typeof navigator<`u`&&navigator.userAgent&&(e=navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/))&&parseInt(e[1],10)>=31||typeof navigator<`u`&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/)}function r(e){if(e[0]=(this.useColors?`%c`:``)+this.namespace+(this.useColors?` %c`:` `)+e[0]+(this.useColors?`%c `:` `)+`+`+t.exports.humanize(this.diff),!this.useColors)return;let n=`color: `+this.color;e.splice(1,0,n,`color: inherit`);let r=0,i=0;e[0].replace(/%[a-zA-Z%]/g,e=>{e!==`%%`&&(r++,e===`%c`&&(i=r))}),e.splice(i,0,n)}e.log=console.debug||console.log||(()=>{});function i(t){try{t?e.storage.setItem(`debug`,t):e.storage.removeItem(`debug`)}catch{}}function a(){let t;try{t=e.storage.getItem(`debug`)||e.storage.getItem(`DEBUG`)}catch{}return!t&&typeof process<`u`&&`env`in process&&(t=process.env.DEBUG),t}function o(){try{return localStorage}catch{}}t.exports=ia()(e);let{formatters:s}=t.exports;s.j=function(e){try{return JSON.stringify(e)}catch(e){return`[UnexpectedJSONParseError]: `+e.message}}})),oa=s(((e,t)=>{t.exports=(e,t=process.argv)=>{let n=e.startsWith(`-`)?``:e.length===1?`-`:`--`,r=t.indexOf(n+e),i=t.indexOf(`--`);return r!==-1&&(i===-1||r{let n=require(`os`),r=require(`tty`),i=oa(),{env:a}=process,o;i(`no-color`)||i(`no-colors`)||i(`color=false`)||i(`color=never`)?o=0:(i(`color`)||i(`colors`)||i(`color=true`)||i(`color=always`))&&(o=1),`FORCE_COLOR`in a&&(o=a.FORCE_COLOR===`true`?1:a.FORCE_COLOR===`false`?0:a.FORCE_COLOR.length===0?1:Math.min(parseInt(a.FORCE_COLOR,10),3));function s(e){return e===0?!1:{level:e,hasBasic:!0,has256:e>=2,has16m:e>=3}}function c(e,t){if(o===0)return 0;if(i(`color=16m`)||i(`color=full`)||i(`color=truecolor`))return 3;if(i(`color=256`))return 2;if(e&&!t&&o===void 0)return 0;let r=o||0;if(a.TERM===`dumb`)return r;if(process.platform===`win32`){let e=n.release().split(`.`);return Number(e[0])>=10&&Number(e[2])>=10586?Number(e[2])>=14931?3:2:1}if(`CI`in a)return[`TRAVIS`,`CIRCLECI`,`APPVEYOR`,`GITLAB_CI`,`GITHUB_ACTIONS`,`BUILDKITE`].some(e=>e in a)||a.CI_NAME===`codeship`?1:r;if(`TEAMCITY_VERSION`in a)return/^(9\.(0*[1-9]\d*)\.|\d{2,}\.)/.test(a.TEAMCITY_VERSION)?1:0;if(a.COLORTERM===`truecolor`)return 3;if(`TERM_PROGRAM`in a){let e=parseInt((a.TERM_PROGRAM_VERSION||``).split(`.`)[0],10);switch(a.TERM_PROGRAM){case`iTerm.app`:return e>=3?3:2;case`Apple_Terminal`:return 2}}return/-256(color)?$/i.test(a.TERM)?2:/^screen|^xterm|^vt100|^vt220|^rxvt|color|ansi|cygwin|linux/i.test(a.TERM)||`COLORTERM`in a?1:r}function l(e){return s(c(e,e&&e.isTTY))}t.exports={supportsColor:l,stdout:s(c(!0,r.isatty(1))),stderr:s(c(!0,r.isatty(2)))}})),ca=s(((e,t)=>{let n=require(`tty`),r=require(`util`);e.init=u,e.log=s,e.formatArgs=a,e.save=c,e.load=l,e.useColors=i,e.destroy=r.deprecate(()=>{},"Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`."),e.colors=[6,2,3,4,5,1];try{let t=sa();t&&(t.stderr||t).level>=2&&(e.colors=[20,21,26,27,32,33,38,39,40,41,42,43,44,45,56,57,62,63,68,69,74,75,76,77,78,79,80,81,92,93,98,99,112,113,128,129,134,135,148,149,160,161,162,163,164,165,166,167,168,169,170,171,172,173,178,179,184,185,196,197,198,199,200,201,202,203,204,205,206,207,208,209,214,215,220,221])}catch{}e.inspectOpts=Object.keys(process.env).filter(e=>/^debug_/i.test(e)).reduce((e,t)=>{let n=t.substring(6).toLowerCase().replace(/_([a-z])/g,(e,t)=>t.toUpperCase()),r=process.env[t];return r=/^(yes|on|true|enabled)$/i.test(r)?!0:/^(no|off|false|disabled)$/i.test(r)?!1:r===`null`?null:Number(r),e[n]=r,e},{});function i(){return`colors`in e.inspectOpts?!!e.inspectOpts.colors:n.isatty(process.stderr.fd)}function a(e){let{namespace:n,useColors:r}=this;if(r){let r=this.color,i=`\x1B[3`+(r<8?r:`8;5;`+r),a=` ${i};1m${n} \u001B[0m`;e[0]=a+e[0].split(` +`).join(` +`+a),e.push(i+`m+`+t.exports.humanize(this.diff)+`\x1B[0m`)}else e[0]=o()+n+` `+e[0]}function o(){return e.inspectOpts.hideDate?``:new Date().toISOString()+` `}function s(...t){return process.stderr.write(r.formatWithOptions(e.inspectOpts,...t)+` +`)}function c(e){e?process.env.DEBUG=e:delete process.env.DEBUG}function l(){return process.env.DEBUG}function u(t){t.inspectOpts={};let n=Object.keys(e.inspectOpts);for(let r=0;re.trim()).join(` `)},d.O=function(e){return this.inspectOpts.colors=this.useColors,r.inspect(e,this.inspectOpts)}})),la=s(((e,t)=>{typeof process>`u`||process.type===`renderer`||process.browser===!0||process.__nwjs?t.exports=aa():t.exports=ca()})),ua=s((e=>{var t=e&&e.__createBinding||(Object.create?(function(e,t,n,r){r===void 0&&(r=n);var i=Object.getOwnPropertyDescriptor(t,n);(!i||(`get`in i?!t.__esModule:i.writable||i.configurable))&&(i={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,r,i)}):(function(e,t,n,r){r===void 0&&(r=n),e[r]=t[n]})),n=e&&e.__setModuleDefault||(Object.create?(function(e,t){Object.defineProperty(e,`default`,{enumerable:!0,value:t})}):function(e,t){e.default=t}),r=e&&e.__importStar||function(e){if(e&&e.__esModule)return e;var r={};if(e!=null)for(var i in e)i!==`default`&&Object.prototype.hasOwnProperty.call(e,i)&&t(r,e,i);return n(r,e),r};Object.defineProperty(e,`__esModule`,{value:!0}),e.req=e.json=e.toBuffer=void 0;let i=r(require(`http`)),a=r(require(`https`));async function o(e){let t=0,n=[];for await(let r of e)t+=r.length,n.push(r);return Buffer.concat(n,t)}e.toBuffer=o;async function s(e){let t=(await o(e)).toString(`utf8`);try{return JSON.parse(t)}catch(e){let n=e;throw n.message+=` (input: ${t})`,n}}e.json=s;function c(e,t={}){let n=((typeof e==`string`?e:e.href).startsWith(`https:`)?a:i).request(e,t),r=new Promise((e,t)=>{n.once(`response`,e).once(`error`,t).end()});return n.then=r.then.bind(r),n}e.req=c})),da=s((e=>{var t=e&&e.__createBinding||(Object.create?(function(e,t,n,r){r===void 0&&(r=n);var i=Object.getOwnPropertyDescriptor(t,n);(!i||(`get`in i?!t.__esModule:i.writable||i.configurable))&&(i={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,r,i)}):(function(e,t,n,r){r===void 0&&(r=n),e[r]=t[n]})),n=e&&e.__setModuleDefault||(Object.create?(function(e,t){Object.defineProperty(e,`default`,{enumerable:!0,value:t})}):function(e,t){e.default=t}),r=e&&e.__importStar||function(e){if(e&&e.__esModule)return e;var r={};if(e!=null)for(var i in e)i!==`default`&&Object.prototype.hasOwnProperty.call(e,i)&&t(r,e,i);return n(r,e),r},i=e&&e.__exportStar||function(e,n){for(var r in e)r!==`default`&&!Object.prototype.hasOwnProperty.call(n,r)&&t(n,e,r)};Object.defineProperty(e,`__esModule`,{value:!0}),e.Agent=void 0;let a=r(require(`net`)),o=r(require(`http`)),s=require(`https`);i(ua(),e);let c=Symbol(`AgentBaseInternalState`);e.Agent=class extends o.Agent{constructor(e){super(e),this[c]={}}isSecureEndpoint(e){if(e){if(typeof e.secureEndpoint==`boolean`)return e.secureEndpoint;if(typeof e.protocol==`string`)return e.protocol===`https:`}let{stack:t}=Error();return typeof t==`string`?t.split(` +`).some(e=>e.indexOf(`(https.js:`)!==-1||e.indexOf(`node:https:`)!==-1):!1}incrementSockets(e){if(this.maxSockets===1/0&&this.maxTotalSockets===1/0)return null;this.sockets[e]||(this.sockets[e]=[]);let t=new a.Socket({writable:!1});return this.sockets[e].push(t),this.totalSocketCount++,t}decrementSockets(e,t){if(!this.sockets[e]||t===null)return;let n=this.sockets[e],r=n.indexOf(t);r!==-1&&(n.splice(r,1),this.totalSocketCount--,n.length===0&&delete this.sockets[e])}getName(e){return this.isSecureEndpoint(e)?s.Agent.prototype.getName.call(this,e):super.getName(e)}createSocket(e,t,n){let r={...t,secureEndpoint:this.isSecureEndpoint(t)},i=this.getName(r),a=this.incrementSockets(i);Promise.resolve().then(()=>this.connect(e,r)).then(s=>{if(this.decrementSockets(i,a),s instanceof o.Agent)try{return s.addRequest(e,r)}catch(e){return n(e)}this[c].currentSocket=s,super.createSocket(e,t,n)},e=>{this.decrementSockets(i,a),n(e)})}createConnection(){let e=this[c].currentSocket;if(this[c].currentSocket=void 0,!e)throw Error("No socket was returned in the `connect()` function");return e}get defaultPort(){return this[c].defaultPort??(this.protocol===`https:`?443:80)}set defaultPort(e){this[c]&&(this[c].defaultPort=e)}get protocol(){return this[c].protocol??(this.isSecureEndpoint()?`https:`:`http:`)}set protocol(e){this[c]&&(this[c].protocol=e)}}})),fa=s((e=>{var t=e&&e.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(e,`__esModule`,{value:!0}),e.parseProxyResponse=void 0;let n=(0,t(la()).default)(`https-proxy-agent:parse-proxy-response`);function r(e){return new Promise((t,r)=>{let i=0,a=[];function o(){let t=e.read();t?u(t):e.once(`readable`,o)}function s(){e.removeListener(`end`,c),e.removeListener(`error`,l),e.removeListener(`readable`,o)}function c(){s(),n(`onend`),r(Error(`Proxy connection ended before receiving CONNECT response`))}function l(e){s(),n(`onerror %o`,e),r(e)}function u(c){a.push(c),i+=c.length;let l=Buffer.concat(a,i),u=l.indexOf(`\r +\r +`);if(u===-1){n(`have not received end of HTTP headers yet...`),o();return}let d=l.slice(0,u).toString(`ascii`).split(`\r +`),f=d.shift();if(!f)return e.destroy(),r(Error(`No header received from proxy CONNECT response`));let p=f.split(` `),m=+p[1],h=p.slice(2).join(` `),g={};for(let t of d){if(!t)continue;let n=t.indexOf(`:`);if(n===-1)return e.destroy(),r(Error(`Invalid header from proxy CONNECT response: "${t}"`));let i=t.slice(0,n).toLowerCase(),a=t.slice(n+1).trimStart(),o=g[i];typeof o==`string`?g[i]=[o,a]:Array.isArray(o)?o.push(a):g[i]=a}n(`got proxy server response: %o %o`,f,g),s(),t({connect:{statusCode:m,statusText:h,headers:g},buffered:l})}e.on(`error`,l),e.on(`end`,c),o()})}e.parseProxyResponse=r})),pa=s((e=>{var t=e&&e.__createBinding||(Object.create?(function(e,t,n,r){r===void 0&&(r=n);var i=Object.getOwnPropertyDescriptor(t,n);(!i||(`get`in i?!t.__esModule:i.writable||i.configurable))&&(i={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,r,i)}):(function(e,t,n,r){r===void 0&&(r=n),e[r]=t[n]})),n=e&&e.__setModuleDefault||(Object.create?(function(e,t){Object.defineProperty(e,`default`,{enumerable:!0,value:t})}):function(e,t){e.default=t}),r=e&&e.__importStar||function(e){if(e&&e.__esModule)return e;var r={};if(e!=null)for(var i in e)i!==`default`&&Object.prototype.hasOwnProperty.call(e,i)&&t(r,e,i);return n(r,e),r},i=e&&e.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(e,`__esModule`,{value:!0}),e.HttpsProxyAgent=void 0;let a=r(require(`net`)),o=r(require(`tls`)),s=i(require(`assert`)),c=i(la()),l=da(),u=require(`url`),d=fa(),f=(0,c.default)(`https-proxy-agent`),p=e=>e.servername===void 0&&e.host&&!a.isIP(e.host)?{...e,servername:e.host}:e;var m=class extends l.Agent{constructor(e,t){super(t),this.options={path:void 0},this.proxy=typeof e==`string`?new u.URL(e):e,this.proxyHeaders=t?.headers??{},f(`Creating new HttpsProxyAgent instance: %o`,this.proxy.href);let n=(this.proxy.hostname||this.proxy.host).replace(/^\[|\]$/g,``),r=this.proxy.port?parseInt(this.proxy.port,10):this.proxy.protocol===`https:`?443:80;this.connectOpts={ALPNProtocols:[`http/1.1`],...t?g(t,`headers`):null,host:n,port:r}}async connect(e,t){let{proxy:n}=this;if(!t.host)throw TypeError(`No "host" provided`);let r;n.protocol===`https:`?(f("Creating `tls.Socket`: %o",this.connectOpts),r=o.connect(p(this.connectOpts))):(f("Creating `net.Socket`: %o",this.connectOpts),r=a.connect(this.connectOpts));let i=typeof this.proxyHeaders==`function`?this.proxyHeaders():{...this.proxyHeaders},c=a.isIPv6(t.host)?`[${t.host}]`:t.host,l=`CONNECT ${c}:${t.port} HTTP/1.1\r\n`;if(n.username||n.password){let e=`${decodeURIComponent(n.username)}:${decodeURIComponent(n.password)}`;i[`Proxy-Authorization`]=`Basic ${Buffer.from(e).toString(`base64`)}`}i.Host=`${c}:${t.port}`,i[`Proxy-Connection`]||=this.keepAlive?`Keep-Alive`:`close`;for(let e of Object.keys(i))l+=`${e}: ${i[e]}\r\n`;let u=(0,d.parseProxyResponse)(r);r.write(`${l}\r\n`);let{connect:m,buffered:_}=await u;if(e.emit(`proxyConnect`,m),this.emit(`proxyConnect`,m,e),m.statusCode===200)return e.once(`socket`,h),t.secureEndpoint?(f(`Upgrading socket connection to TLS`),o.connect({...g(p(t),`host`,`path`,`port`),socket:r})):r;r.destroy();let v=new a.Socket({writable:!1});return v.readable=!0,e.once(`socket`,e=>{f(`Replaying proxy buffer for failed request`),(0,s.default)(e.listenerCount(`data`)>0),e.push(_),e.push(null)}),v}};m.protocols=[`http`,`https`],e.HttpsProxyAgent=m;function h(e){e.resume()}function g(e,...t){let n={},r;for(r in e)t.includes(r)||(n[r]=e[r]);return n}})),ma=s((e=>{var t=e&&e.__createBinding||(Object.create?(function(e,t,n,r){r===void 0&&(r=n);var i=Object.getOwnPropertyDescriptor(t,n);(!i||(`get`in i?!t.__esModule:i.writable||i.configurable))&&(i={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,r,i)}):(function(e,t,n,r){r===void 0&&(r=n),e[r]=t[n]})),n=e&&e.__setModuleDefault||(Object.create?(function(e,t){Object.defineProperty(e,`default`,{enumerable:!0,value:t})}):function(e,t){e.default=t}),r=e&&e.__importStar||function(e){if(e&&e.__esModule)return e;var r={};if(e!=null)for(var i in e)i!==`default`&&Object.prototype.hasOwnProperty.call(e,i)&&t(r,e,i);return n(r,e),r},i=e&&e.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(e,`__esModule`,{value:!0}),e.HttpProxyAgent=void 0;let a=r(require(`net`)),o=r(require(`tls`)),s=i(la()),c=require(`events`),l=da(),u=require(`url`),d=(0,s.default)(`http-proxy-agent`);var f=class extends l.Agent{constructor(e,t){super(t),this.proxy=typeof e==`string`?new u.URL(e):e,this.proxyHeaders=t?.headers??{},d(`Creating new HttpProxyAgent instance: %o`,this.proxy.href);let n=(this.proxy.hostname||this.proxy.host).replace(/^\[|\]$/g,``),r=this.proxy.port?parseInt(this.proxy.port,10):this.proxy.protocol===`https:`?443:80;this.connectOpts={...t?p(t,`headers`):null,host:n,port:r}}addRequest(e,t){e._header=null,this.setRequestProps(e,t),super.addRequest(e,t)}setRequestProps(e,t){let{proxy:n}=this,r=`${t.secureEndpoint?`https:`:`http:`}//${e.getHeader(`host`)||`localhost`}`,i=new u.URL(e.path,r);t.port!==80&&(i.port=String(t.port)),e.path=String(i);let a=typeof this.proxyHeaders==`function`?this.proxyHeaders():{...this.proxyHeaders};if(n.username||n.password){let e=`${decodeURIComponent(n.username)}:${decodeURIComponent(n.password)}`;a[`Proxy-Authorization`]=`Basic ${Buffer.from(e).toString(`base64`)}`}a[`Proxy-Connection`]||=this.keepAlive?`Keep-Alive`:`close`;for(let t of Object.keys(a)){let n=a[t];n&&e.setHeader(t,n)}}async connect(e,t){e._header=null,e.path.includes(`://`)||this.setRequestProps(e,t);let n,r;d(`Regenerating stored HTTP header string for request`),e._implicitHeader(),e.outputData&&e.outputData.length>0&&(d(`Patching connection write() output buffer with updated header`),n=e.outputData[0].data,r=n.indexOf(`\r +\r +`)+4,e.outputData[0].data=e._header+n.substring(r),d(`Output buffer: %o`,e.outputData[0].data));let i;return this.proxy.protocol===`https:`?(d("Creating `tls.Socket`: %o",this.connectOpts),i=o.connect(this.connectOpts)):(d("Creating `net.Socket`: %o",this.connectOpts),i=a.connect(this.connectOpts)),await(0,c.once)(i,`connect`),i}};f.protocols=[`http`,`https`],e.HttpProxyAgent=f;function p(e,...t){let n={},r;for(r in e)t.includes(r)||(n[r]=e[r]);return n}})),ha=s((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.globalNoProxyList=e.proxyPolicyName=void 0,e.loadNoProxy=l,e.getDefaultProxySettings=u,e.proxyPolicy=m;let t=pa(),n=ma(),r=Ri();e.proxyPolicyName=`proxyPolicy`,e.globalNoProxyList=[];let i=!1,a=new Map;function o(e){if(process.env[e])return process.env[e];if(process.env[e.toLowerCase()])return process.env[e.toLowerCase()]}function s(){if(!process)return;let e=o(`HTTPS_PROXY`),t=o(`ALL_PROXY`),n=o(`HTTP_PROXY`);return e||t||n}function c(e,t,n){if(t.length===0)return!1;let r=new URL(e).hostname;if(n?.has(r))return n.get(r);let i=!1;for(let e of t)e[0]===`.`?(r.endsWith(e)||r.length===e.length-1&&r===e.slice(1))&&(i=!0):r===e&&(i=!0);return n?.set(r,i),i}function l(){let e=o(`NO_PROXY`);return i=!0,e?e.split(`,`).map(e=>e.trim()).filter(e=>e.length):[]}function u(e){if(!e&&(e=s(),!e))return;let t=new URL(e);return{host:(t.protocol?t.protocol+`//`:``)+t.hostname,port:Number.parseInt(t.port||`80`),username:t.username,password:t.password}}function d(){let e=s();return e?new URL(e):void 0}function f(e){let t;try{t=new URL(e.host)}catch{throw Error(`Expecting a valid host string in proxy settings, but found "${e.host}".`)}return t.port=String(e.port),e.username&&(t.username=e.username),e.password&&(t.password=e.password),t}function p(e,i,a){if(e.agent)return;let o=new URL(e.url).protocol!==`https:`;e.tlsSettings&&r.logger.warning(`TLS settings are not supported in combination with custom Proxy, certificates provided to the client will be ignored.`);let s=e.headers.toJSON();o?(i.httpProxyAgent||=new n.HttpProxyAgent(a,{headers:s}),e.agent=i.httpProxyAgent):(i.httpsProxyAgent||=new t.HttpsProxyAgent(a,{headers:s}),e.agent=i.httpsProxyAgent)}function m(t,n){i||e.globalNoProxyList.push(...l());let r=t?f(t):d(),o={};return{name:e.proxyPolicyName,async sendRequest(t,i){return!t.proxySettings&&r&&!c(t.url,n?.customNoProxyList??e.globalNoProxyList,n?.customNoProxyList?void 0:a)?p(t,o,r):t.proxySettings&&p(t,o,f(t.proxySettings)),i(t)}}}})),ga=s((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.agentPolicyName=void 0,e.agentPolicy=t,e.agentPolicyName=`agentPolicy`;function t(t){return{name:e.agentPolicyName,sendRequest:async(e,n)=>(e.agent||=t,n(e))}}})),_a=s((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.tlsPolicyName=void 0,e.tlsPolicy=t,e.tlsPolicyName=`tlsPolicy`;function t(t){return{name:e.tlsPolicyName,sendRequest:async(e,n)=>(e.tlsSettings||=t,n(e))}}})),va=s((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.isNodeReadableStream=t,e.isWebReadableStream=n,e.isBinaryBody=r,e.isReadableStream=i,e.isBlob=a;function t(e){return!!(e&&typeof e.pipe==`function`)}function n(e){return!!(e&&typeof e.getReader==`function`&&typeof e.tee==`function`)}function r(e){return e!==void 0&&(e instanceof Uint8Array||i(e)||typeof e==`function`||e instanceof Blob)}function i(e){return t(e)||n(e)}function a(e){return typeof e.stream==`function`}})),ya=s((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.concat=s;let t=require(`stream`),n=va();async function*r(){let e=this.getReader();try{for(;;){let{done:t,value:n}=await e.read();if(t)return;yield n}}finally{e.releaseLock()}}function i(e){e[Symbol.asyncIterator]||(e[Symbol.asyncIterator]=r.bind(e)),e.values||=r.bind(e)}function a(e){return e instanceof ReadableStream?(i(e),t.Readable.fromWeb(e)):e}function o(e){return e instanceof Uint8Array?t.Readable.from(Buffer.from(e)):(0,n.isBlob)(e)?a(e.stream()):a(e)}async function s(e){return function(){let n=e.map(e=>typeof e==`function`?e():e).map(o);return t.Readable.from((async function*(){for(let e of n)for await(let t of e)yield t})())}}})),ba=s((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.multipartPolicyName=void 0,e.multipartPolicy=f;let t=Li(),n=va(),r=ki(),i=ya();function a(){return`----AzSDKFormBoundary${(0,r.randomUUID)()}`}function o(e){let t=``;for(let[n,r]of e)t+=`${n}: ${r}\r\n`;return t}function s(e){if(e instanceof Uint8Array)return e.byteLength;if((0,n.isBlob)(e))return e.size===-1?void 0:e.size}function c(e){let t=0;for(let n of e){let e=s(n);if(e===void 0)return;t+=e}return t}async function l(e,n,r){let a=[(0,t.stringToUint8Array)(`--${r}`,`utf-8`),...n.flatMap(e=>[(0,t.stringToUint8Array)(`\r +`,`utf-8`),(0,t.stringToUint8Array)(o(e.headers),`utf-8`),(0,t.stringToUint8Array)(`\r +`,`utf-8`),e.body,(0,t.stringToUint8Array)(`\r\n--${r}`,`utf-8`)]),(0,t.stringToUint8Array)(`--\r +\r +`,`utf-8`)],s=c(a);s&&e.headers.set(`Content-Length`,s),e.body=await(0,i.concat)(a)}e.multipartPolicyName=`multipartPolicy`;let u=new Set(`abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789'()+,-./:=?`);function d(e){if(e.length>70)throw Error(`Multipart boundary "${e}" exceeds maximum length of 70 characters`);if(Array.from(e).some(e=>!u.has(e)))throw Error(`Multipart boundary "${e}" contains invalid characters`)}function f(){return{name:e.multipartPolicyName,async sendRequest(e,t){if(!e.multipartBody)return t(e);if(e.body)throw Error(`multipartBody and regular body cannot be set at the same time`);let n=e.multipartBody.boundary,r=e.headers.get(`Content-Type`)??`multipart/mixed`,i=r.match(/^(multipart\/[^ ;]+)(?:; *boundary=(.+))?$/);if(!i)throw Error(`Got multipart request body, but content-type header was not multipart: ${r}`);let[,o,s]=i;if(s&&n&&s!==n)throw Error(`Multipart boundary was specified as ${s} in the header, but got ${n} in the request body`);return n??=s,n?d(n):n=a(),e.headers.set(`Content-Type`,`${o}; boundary=${n}`),await l(e,e.multipartBody.parts,n),e.multipartBody=void 0,t(e)}}}})),xa=s((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.createPipelineFromOptions=p;let t=Vi(),n=ji(),r=Hi(),i=Ki(),a=qi(),o=ea(),s=na(),c=ta(),l=ha(),u=ga(),d=_a(),f=ba();function p(e){let p=(0,n.createEmptyPipeline)();return c.isNodeLike&&(e.agent&&p.addPolicy((0,u.agentPolicy)(e.agent)),e.tlsOptions&&p.addPolicy((0,d.tlsPolicy)(e.tlsOptions)),p.addPolicy((0,l.proxyPolicy)(e.proxyOptions)),p.addPolicy((0,a.decompressResponsePolicy)())),p.addPolicy((0,s.formDataPolicy)(),{beforePolicies:[f.multipartPolicyName]}),p.addPolicy((0,i.userAgentPolicy)(e.userAgentOptions)),p.addPolicy((0,f.multipartPolicy)(),{afterPhase:`Deserialize`}),p.addPolicy((0,o.defaultRetryPolicy)(e.retryOptions),{phase:`Retry`}),c.isNodeLike&&p.addPolicy((0,r.redirectPolicy)(e.redirectOptions),{afterPhase:`Retry`}),p.addPolicy((0,t.logPolicy)(e.loggingOptions),{afterPhase:`Sign`}),p}})),Sa=s((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.apiVersionPolicyName=void 0,e.apiVersionPolicy=t,e.apiVersionPolicyName=`ApiVersionPolicy`;function t(t){return{name:e.apiVersionPolicyName,sendRequest:(e,n)=>{let r=new URL(e.url);return!r.searchParams.get(`api-version`)&&t.apiVersion&&(e.url=`${e.url}${Array.from(r.searchParams.keys()).length>0?`&`:`?`}api-version=${t.apiVersion}`),n(e)}}}})),Ca=s((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.isOAuth2TokenCredential=t,e.isBearerTokenCredential=n,e.isBasicCredential=r,e.isApiKeyCredential=i;function t(e){return`getOAuth2Token`in e}function n(e){return`getBearerToken`in e}function r(e){return`username`in e&&`password`in e}function i(e){return`key`in e}})),wa=s((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.ensureSecureConnection=a;let t=Ri(),n=!1;function r(e,t){if(t.allowInsecureConnection&&e.allowInsecureConnection){let t=new URL(e.url);if(t.hostname===`localhost`||t.hostname===`127.0.0.1`)return!0}return!1}function i(){let e=`Sending token over insecure transport. Assume any token issued is compromised.`;t.logger.warning(e),typeof process?.emitWarning==`function`&&!n&&(n=!0,process.emitWarning(e))}function a(e,t){if(!e.url.toLowerCase().startsWith(`https://`))if(r(e,t))i();else throw Error(`Authentication is not permitted for non-TLS protected (non-https) URLs when allowInsecureConnection is false.`)}})),Ta=s((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.apiKeyAuthenticationPolicyName=void 0,e.apiKeyAuthenticationPolicy=n;let t=wa();e.apiKeyAuthenticationPolicyName=`apiKeyAuthenticationPolicy`;function n(n){return{name:e.apiKeyAuthenticationPolicyName,async sendRequest(e,r){(0,t.ensureSecureConnection)(e,n);let i=(e.authSchemes??n.authSchemes)?.find(e=>e.kind===`apiKey`);if(!i)return r(e);if(i.apiKeyLocation!==`header`)throw Error(`Unsupported API key location: ${i.apiKeyLocation}`);return e.headers.set(i.name,n.credential.key),r(e)}}}})),Ea=s((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.basicAuthenticationPolicyName=void 0,e.basicAuthenticationPolicy=r;let t=Li(),n=wa();e.basicAuthenticationPolicyName=`bearerAuthenticationPolicy`;function r(r){return{name:e.basicAuthenticationPolicyName,async sendRequest(e,i){if((0,n.ensureSecureConnection)(e,r),!(e.authSchemes??r.authSchemes)?.find(e=>e.kind===`http`&&e.scheme===`basic`))return i(e);let{username:a,password:o}=r.credential,s=(0,t.uint8ArrayToString)((0,t.stringToUint8Array)(`${a}:${o}`,`utf-8`),`base64`);return e.headers.set(`Authorization`,`Basic ${s}`),i(e)}}}})),Da=s((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.bearerAuthenticationPolicyName=void 0,e.bearerAuthenticationPolicy=n;let t=wa();e.bearerAuthenticationPolicyName=`bearerAuthenticationPolicy`;function n(n){return{name:e.bearerAuthenticationPolicyName,async sendRequest(e,r){if((0,t.ensureSecureConnection)(e,n),!(e.authSchemes??n.authSchemes)?.find(e=>e.kind===`http`&&e.scheme===`bearer`))return r(e);let i=await n.credential.getBearerToken({abortSignal:e.abortSignal});return e.headers.set(`Authorization`,`Bearer ${i}`),r(e)}}}})),Oa=s((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.oauth2AuthenticationPolicyName=void 0,e.oauth2AuthenticationPolicy=n;let t=wa();e.oauth2AuthenticationPolicyName=`oauth2AuthenticationPolicy`;function n(n){return{name:e.oauth2AuthenticationPolicyName,async sendRequest(e,r){(0,t.ensureSecureConnection)(e,n);let i=(e.authSchemes??n.authSchemes)?.find(e=>e.kind===`oauth2`);if(!i)return r(e);let a=await n.credential.getOAuth2Token(i.flows,{abortSignal:e.abortSignal});return e.headers.set(`Authorization`,`Bearer ${a}`),r(e)}}}})),ka=s((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.createDefaultPipeline=u,e.getCachedDefaultHttpsClient=d;let t=Bi(),n=xa(),r=Sa(),i=Ca(),a=Ta(),o=Ea(),s=Da(),c=Oa(),l;function u(e={}){let t=(0,n.createPipelineFromOptions)(e);t.addPolicy((0,r.apiVersionPolicy)(e));let{credential:l,authSchemes:u,allowInsecureConnection:d}=e;return l&&((0,i.isApiKeyCredential)(l)?t.addPolicy((0,a.apiKeyAuthenticationPolicy)({authSchemes:u,credential:l,allowInsecureConnection:d})):(0,i.isBasicCredential)(l)?t.addPolicy((0,o.basicAuthenticationPolicy)({authSchemes:u,credential:l,allowInsecureConnection:d})):(0,i.isBearerTokenCredential)(l)?t.addPolicy((0,s.bearerAuthenticationPolicy)({authSchemes:u,credential:l,allowInsecureConnection:d})):(0,i.isOAuth2TokenCredential)(l)&&t.addPolicy((0,c.oauth2AuthenticationPolicy)({authSchemes:u,credential:l,allowInsecureConnection:d}))),t}function d(){return l||=(0,t.createDefaultHttpClient)(),l}})),Aa=s((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.buildBodyPart=u,e.buildMultipartBody=d;let t=Ii(),n=Ei(),r=Li(),i=va();function a(e,t){if(e.headers){let n=Object.keys(e.headers).find(e=>e.toLowerCase()===t.toLowerCase());if(n)return e.headers[n]}}function o(e){let t=a(e,`content-type`);if(t)return t;if(e.contentType===null)return;if(e.contentType)return e.contentType;let{body:n}=e;if(n!=null)return typeof n==`string`||typeof n==`number`||typeof n==`boolean`?`text/plain; charset=UTF-8`:n instanceof Blob?n.type||`application/octet-stream`:(0,i.isBinaryBody)(n)?`application/octet-stream`:`application/json`}function s(e){return JSON.stringify(e)}function c(e){let t=a(e,`content-disposition`);if(t)return t;if(e.dispositionType===void 0&&e.name===void 0&&e.filename===void 0)return;let n=e.dispositionType??`form-data`;e.name&&(n+=`; name=${s(e.name)}`);let r;if(e.filename)r=e.filename;else if(typeof File<`u`&&e.body instanceof File){let t=e.body.name;t!==``&&(r=t)}return r&&(n+=`; filename=${s(r)}`),n}function l(e,n){if(e===void 0)return new Uint8Array([]);if((0,i.isBinaryBody)(e))return e;if(typeof e==`string`||typeof e==`number`||typeof e==`boolean`)return(0,r.stringToUint8Array)(String(e),`utf-8`);if(n&&/application\/(.+\+)?json(;.+)?/i.test(String(n)))return(0,r.stringToUint8Array)(JSON.stringify(e),`utf-8`);throw new t.RestError(`Unsupported body/content-type combination: ${e}, ${n}`)}function u(e){let t=o(e),r=c(e),i=(0,n.createHttpHeaders)(e.headers??{});return t&&i.set(`content-type`,t),r&&i.set(`content-disposition`,r),{headers:i,body:l(e.body,t)}}function d(e){return{parts:e.map(u)}}})),ja=s((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.sendRequest=s;let t=Ii(),n=Ei(),r=Ai(),i=ka(),a=va(),o=Aa();async function s(e,n,r,a={},o){let s=o??(0,i.getCachedDefaultHttpsClient)(),c=u(e,n,a);try{let e=await r.sendRequest(s,c),t=e.headers.toJSON(),n=e.readableStreamBody??e.browserStreamBody,i=a.responseAsStream||n!==void 0?void 0:f(e),o=n??i;return a?.onResponse&&a.onResponse({...e,request:c,rawHeaders:t,parsedBody:i}),{request:c,headers:t,status:`${e.status}`,body:o}}catch(e){if((0,t.isRestError)(e)&&e.response&&a.onResponse){let{response:t}=e,n=t.headers.toJSON();a?.onResponse({...t,request:c,rawHeaders:n},e)}throw e}}function c(e={}){return e.contentType??e.headers?.[`content-type`]??l(e.body)}function l(e){if(ArrayBuffer.isView(e))return`application/octet-stream`;if(typeof e==`string`)try{return JSON.parse(e),`application/json`}catch{return}return`application/json`}function u(e,t,i={}){let a=c(i),{body:o,multipartBody:s}=d(i.body,a),l=o!==void 0||s!==void 0,u=(0,n.createHttpHeaders)({...i.headers?i.headers:{},accept:i.accept??i.headers?.accept??`application/json`,...l&&a&&{"content-type":a}});return(0,r.createPipelineRequest)({url:t,method:e,body:o,multipartBody:s,headers:u,allowInsecureConnection:i.allowInsecureConnection,abortSignal:i.abortSignal,onUploadProgress:i.onUploadProgress,onDownloadProgress:i.onDownloadProgress,timeout:i.timeout,enableBrowserStreams:!0,streamResponseStatusCodes:i.responseAsStream?new Set([1/0]):void 0})}function d(e,t=``){if(e===void 0)return{body:void 0};if(typeof FormData<`u`&&e instanceof FormData||(0,a.isReadableStream)(e))return{body:e};if(ArrayBuffer.isView(e))return{body:e instanceof Uint8Array?e:JSON.stringify(e)};switch(t.split(`;`)[0]){case`application/json`:return{body:JSON.stringify(e)};case`multipart/form-data`:return Array.isArray(e)?{multipartBody:(0,o.buildMultipartBody)(e)}:{body:JSON.stringify(e)};case`text/plain`:return{body:String(e)};default:return typeof e==`string`?{body:e}:{body:JSON.stringify(e)}}}function f(e){let t=(e.headers.get(`content-type`)??``).split(`;`)[0],n=e.bodyAsText??``;if(t===`text/plain`)return String(n);try{return n?JSON.parse(n):void 0}catch(r){if(t===`application/json`)throw p(e,r);return String(n)}}function p(e,n){let r=`Error "${n}" occurred while parsing the response body - ${e.bodyAsText}.`,i=n.code??t.RestError.PARSE_ERROR;return new t.RestError(r,{code:i,statusCode:e.status,request:e.request,response:e})}})),Ma=s((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.buildRequestUrl=n,e.buildBaseUrl=a,e.replaceAll=s;function t(e){let t=e.value;return t!==void 0&&t.toString!==void 0&&typeof t.toString==`function`}function n(e,t,n,r={}){if(t.startsWith(`https://`)||t.startsWith(`http://`))return t;e=a(e,r),t=o(t,n,r);let s=i(`${e}/${t}`,r);return new URL(s).toString().replace(/([^:]\/)\/+/g,`$1`)}function r(e,t,n,r){let i;i=n===`pipeDelimited`?`|`:n===`spaceDelimited`?`%20`:`,`;let a;a=Array.isArray(r)?r:typeof r==`object`&&r.toString===Object.prototype.toString?Object.entries(r).flat():[r];let o=a.map(n=>{if(n==null)return``;if(!n.toString||typeof n.toString!=`function`)throw Error(`Query parameters must be able to be represented as string, ${e} can't`);let r=n.toISOString===void 0?n.toString():n.toISOString();return t?r:encodeURIComponent(r)}).join(i);return`${t?e:encodeURIComponent(e)}=${o}`}function i(e,n={}){if(!n.queryParameters)return e;let i=new URL(e),a=n.queryParameters,o=[];for(let e of Object.keys(a)){let i=a[e];if(i==null)continue;let s=t(i),c=s?i.value:i,l=s?i.explode??!1:!1,u=s&&i.style?i.style:`form`;if(l)if(Array.isArray(c))for(let t of c)o.push(r(e,n.skipUrlEncoding??!1,u,t));else if(typeof c==`object`)for(let[e,t]of Object.entries(c))o.push(r(e,n.skipUrlEncoding??!1,u,t));else throw Error(`explode can only be set to true for objects and arrays`);else o.push(r(e,n.skipUrlEncoding??!1,u,c))}return i.search!==``&&(i.search+=`&`),i.search+=o.join(`&`),i.toString()}function a(e,t){if(!t.pathParameters)return e;let n=t.pathParameters;for(let[r,i]of Object.entries(n)){if(i==null)throw Error(`Path parameters ${r} must not be undefined or null`);if(!i.toString||typeof i.toString!=`function`)throw Error(`Path parameters must be able to be represented as string, ${r} can't`);let n=i.toISOString===void 0?String(i):i.toISOString();t.skipUrlEncoding||(n=encodeURIComponent(i)),e=s(e,`{${r}}`,n)??``}return e}function o(e,t,n={}){for(let r of t){let t=typeof r==`object`&&(r.allowReserved??!1),i=typeof r==`object`?r.value:r;!n.skipUrlEncoding&&!t&&(i=encodeURIComponent(i)),e=e.replace(/\{[\w-]+\}/,String(i))}return e}function s(e,t,n){return!e||!t?e:e.split(t).join(n||``)}})),Na=s((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.getClient=a;let t=ka(),n=ja(),r=Ma(),i=ta();function a(e,n={}){let i=n.pipeline??(0,t.createDefaultPipeline)(n);if(n.additionalPolicies?.length)for(let{policy:e,position:t}of n.additionalPolicies){let n=t===`perRetry`?`Sign`:void 0;i.addPolicy(e,{afterPhase:n})}let{allowInsecureConnection:a,httpClient:s}=n,c=n.endpoint??e,l=(e,...t)=>{let n=n=>(0,r.buildRequestUrl)(c,e,t,{allowInsecureConnection:a,...n});return{get:(e={})=>o(`GET`,n(e),i,e,a,s),post:(e={})=>o(`POST`,n(e),i,e,a,s),put:(e={})=>o(`PUT`,n(e),i,e,a,s),patch:(e={})=>o(`PATCH`,n(e),i,e,a,s),delete:(e={})=>o(`DELETE`,n(e),i,e,a,s),head:(e={})=>o(`HEAD`,n(e),i,e,a,s),options:(e={})=>o(`OPTIONS`,n(e),i,e,a,s),trace:(e={})=>o(`TRACE`,n(e),i,e,a,s)}};return{path:l,pathUnchecked:l,pipeline:i}}function o(e,t,r,a,o,s){return o=a.allowInsecureConnection??o,{then:function(i,c){return(0,n.sendRequest)(e,t,r,{...a,allowInsecureConnection:o},s).then(i,c)},async asBrowserStream(){if(i.isNodeLike)throw Error("`asBrowserStream` is supported only in the browser environment. Use `asNodeStream` instead to obtain the response body stream. If you require a Web stream of the response in Node, consider using `Readable.toWeb` on the result of `asNodeStream`.");return(0,n.sendRequest)(e,t,r,{...a,allowInsecureConnection:o,responseAsStream:!0},s)},async asNodeStream(){if(i.isNodeLike)return(0,n.sendRequest)(e,t,r,{...a,allowInsecureConnection:o,responseAsStream:!0},s);throw Error("`isNodeStream` is not supported in the browser environment. Use `asBrowserStream` to obtain the response body stream.")}}}})),Pa=s((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.operationOptionsToRequestParameters=t;function t(e){return{allowInsecureConnection:e.requestOptions?.allowInsecureConnection,timeout:e.requestOptions?.timeout,skipUrlEncoding:e.requestOptions?.skipUrlEncoding,abortSignal:e.abortSignal,onUploadProgress:e.requestOptions?.onUploadProgress,onDownloadProgress:e.requestOptions?.onDownloadProgress,headers:{...e.requestOptions?.headers},onResponse:e.onResponse}}})),Fa=s((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.createRestError=r;let t=Ii(),n=Ei();function r(e,n){let r=typeof e==`string`?n:e,o=r.body?.error??r.body,s=typeof e==`string`?e:o?.message??`Unexpected status code: ${r.status}`;return new t.RestError(s,{statusCode:a(r.status),code:o?.code,request:r.request,response:i(r)})}function i(e){return{headers:(0,n.createHttpHeaders)(e.headers),request:e.request,status:a(e.status)??-1}}function a(e){let t=Number.parseInt(e);return Number.isNaN(t)?void 0:t}})),Ia=s((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.createRestError=e.operationOptionsToRequestParameters=e.getClient=e.createDefaultHttpClient=e.uint8ArrayToString=e.stringToUint8Array=e.isRestError=e.RestError=e.createEmptyPipeline=e.createPipelineRequest=e.createHttpHeaders=e.TypeSpecRuntimeLogger=e.setLogLevel=e.getLogLevel=e.createClientLogger=e.AbortError=void 0;let t=(hi(),d(jr));var n=Si();Object.defineProperty(e,`AbortError`,{enumerable:!0,get:function(){return n.AbortError}});var r=Ti();Object.defineProperty(e,`createClientLogger`,{enumerable:!0,get:function(){return r.createClientLogger}}),Object.defineProperty(e,`getLogLevel`,{enumerable:!0,get:function(){return r.getLogLevel}}),Object.defineProperty(e,`setLogLevel`,{enumerable:!0,get:function(){return r.setLogLevel}}),Object.defineProperty(e,`TypeSpecRuntimeLogger`,{enumerable:!0,get:function(){return r.TypeSpecRuntimeLogger}});var i=Ei();Object.defineProperty(e,`createHttpHeaders`,{enumerable:!0,get:function(){return i.createHttpHeaders}}),t.__exportStar(Di(),e),t.__exportStar(Oi(),e);var a=Ai();Object.defineProperty(e,`createPipelineRequest`,{enumerable:!0,get:function(){return a.createPipelineRequest}});var o=ji();Object.defineProperty(e,`createEmptyPipeline`,{enumerable:!0,get:function(){return o.createEmptyPipeline}});var s=Ii();Object.defineProperty(e,`RestError`,{enumerable:!0,get:function(){return s.RestError}}),Object.defineProperty(e,`isRestError`,{enumerable:!0,get:function(){return s.isRestError}});var c=Li();Object.defineProperty(e,`stringToUint8Array`,{enumerable:!0,get:function(){return c.stringToUint8Array}}),Object.defineProperty(e,`uint8ArrayToString`,{enumerable:!0,get:function(){return c.uint8ArrayToString}});var l=Bi();Object.defineProperty(e,`createDefaultHttpClient`,{enumerable:!0,get:function(){return l.createDefaultHttpClient}});var u=Na();Object.defineProperty(e,`getClient`,{enumerable:!0,get:function(){return u.getClient}});var f=Pa();Object.defineProperty(e,`operationOptionsToRequestParameters`,{enumerable:!0,get:function(){return f.operationOptionsToRequestParameters}});var p=Fa();Object.defineProperty(e,`createRestError`,{enumerable:!0,get:function(){return p.createRestError}})})),La=s((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.createEmptyPipeline=n;let t=Ia();function n(){return(0,t.createEmptyPipeline)()}})),Ra=s((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.createLoggerContext=void 0;var t=Ti();Object.defineProperty(e,`createLoggerContext`,{enumerable:!0,get:function(){return t.createLoggerContext}})})),za=s((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.AzureLogger=void 0,e.setLogLevel=n,e.getLogLevel=r,e.createClientLogger=i;let t=(0,Ra().createLoggerContext)({logLevelEnvVarName:`AZURE_LOG_LEVEL`,namespace:`azure`});e.AzureLogger=t.logger;function n(e){t.setLogLevel(e)}function r(){return t.getLogLevel()}function i(e){return t.createClientLogger(e)}})),Ba=s((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.logger=void 0,e.logger=(0,za().createClientLogger)(`core-rest-pipeline`)})),Va=s((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.exponentialRetryPolicyName=void 0,e.exponentialRetryPolicy=i;let t=Qi(),n=$i(),r=Wi();e.exponentialRetryPolicyName=`exponentialRetryPolicy`;function i(e={}){return(0,n.retryPolicy)([(0,t.exponentialRetryStrategy)({...e,ignoreSystemErrors:!0})],{maxRetries:e.maxRetries??r.DEFAULT_RETRY_POLICY_COUNT})}})),Ha=s((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.systemErrorRetryPolicyName=void 0,e.systemErrorRetryPolicy=i;let t=Qi(),n=$i(),r=Wi();e.systemErrorRetryPolicyName=`systemErrorRetryPolicy`;function i(i={}){return{name:e.systemErrorRetryPolicyName,sendRequest:(0,n.retryPolicy)([(0,t.exponentialRetryStrategy)({...i,ignoreHttpStatusCodes:!0})],{maxRetries:i.maxRetries??r.DEFAULT_RETRY_POLICY_COUNT}).sendRequest}}})),Ua=s((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.throttlingRetryPolicyName=void 0,e.throttlingRetryPolicy=i;let t=Zi(),n=$i(),r=Wi();e.throttlingRetryPolicyName=`throttlingRetryPolicy`;function i(i={}){return{name:e.throttlingRetryPolicyName,sendRequest:(0,n.retryPolicy)([(0,t.throttlingRetryStrategy)()],{maxRetries:i.maxRetries??r.DEFAULT_RETRY_POLICY_COUNT}).sendRequest}}})),Wa=s((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.userAgentPolicyName=e.userAgentPolicy=e.tlsPolicyName=e.tlsPolicy=e.redirectPolicyName=e.redirectPolicy=e.getDefaultProxySettings=e.proxyPolicyName=e.proxyPolicy=e.multipartPolicyName=e.multipartPolicy=e.logPolicyName=e.logPolicy=e.formDataPolicyName=e.formDataPolicy=e.throttlingRetryPolicyName=e.throttlingRetryPolicy=e.systemErrorRetryPolicyName=e.systemErrorRetryPolicy=e.retryPolicy=e.exponentialRetryPolicyName=e.exponentialRetryPolicy=e.defaultRetryPolicyName=e.defaultRetryPolicy=e.decompressResponsePolicyName=e.decompressResponsePolicy=e.agentPolicyName=e.agentPolicy=void 0;var t=ga();Object.defineProperty(e,`agentPolicy`,{enumerable:!0,get:function(){return t.agentPolicy}}),Object.defineProperty(e,`agentPolicyName`,{enumerable:!0,get:function(){return t.agentPolicyName}});var n=qi();Object.defineProperty(e,`decompressResponsePolicy`,{enumerable:!0,get:function(){return n.decompressResponsePolicy}}),Object.defineProperty(e,`decompressResponsePolicyName`,{enumerable:!0,get:function(){return n.decompressResponsePolicyName}});var r=ea();Object.defineProperty(e,`defaultRetryPolicy`,{enumerable:!0,get:function(){return r.defaultRetryPolicy}}),Object.defineProperty(e,`defaultRetryPolicyName`,{enumerable:!0,get:function(){return r.defaultRetryPolicyName}});var i=Va();Object.defineProperty(e,`exponentialRetryPolicy`,{enumerable:!0,get:function(){return i.exponentialRetryPolicy}}),Object.defineProperty(e,`exponentialRetryPolicyName`,{enumerable:!0,get:function(){return i.exponentialRetryPolicyName}});var a=$i();Object.defineProperty(e,`retryPolicy`,{enumerable:!0,get:function(){return a.retryPolicy}});var o=Ha();Object.defineProperty(e,`systemErrorRetryPolicy`,{enumerable:!0,get:function(){return o.systemErrorRetryPolicy}}),Object.defineProperty(e,`systemErrorRetryPolicyName`,{enumerable:!0,get:function(){return o.systemErrorRetryPolicyName}});var s=Ua();Object.defineProperty(e,`throttlingRetryPolicy`,{enumerable:!0,get:function(){return s.throttlingRetryPolicy}}),Object.defineProperty(e,`throttlingRetryPolicyName`,{enumerable:!0,get:function(){return s.throttlingRetryPolicyName}});var c=na();Object.defineProperty(e,`formDataPolicy`,{enumerable:!0,get:function(){return c.formDataPolicy}}),Object.defineProperty(e,`formDataPolicyName`,{enumerable:!0,get:function(){return c.formDataPolicyName}});var l=Vi();Object.defineProperty(e,`logPolicy`,{enumerable:!0,get:function(){return l.logPolicy}}),Object.defineProperty(e,`logPolicyName`,{enumerable:!0,get:function(){return l.logPolicyName}});var u=ba();Object.defineProperty(e,`multipartPolicy`,{enumerable:!0,get:function(){return u.multipartPolicy}}),Object.defineProperty(e,`multipartPolicyName`,{enumerable:!0,get:function(){return u.multipartPolicyName}});var d=ha();Object.defineProperty(e,`proxyPolicy`,{enumerable:!0,get:function(){return d.proxyPolicy}}),Object.defineProperty(e,`proxyPolicyName`,{enumerable:!0,get:function(){return d.proxyPolicyName}}),Object.defineProperty(e,`getDefaultProxySettings`,{enumerable:!0,get:function(){return d.getDefaultProxySettings}});var f=Hi();Object.defineProperty(e,`redirectPolicy`,{enumerable:!0,get:function(){return f.redirectPolicy}}),Object.defineProperty(e,`redirectPolicyName`,{enumerable:!0,get:function(){return f.redirectPolicyName}});var p=_a();Object.defineProperty(e,`tlsPolicy`,{enumerable:!0,get:function(){return p.tlsPolicy}}),Object.defineProperty(e,`tlsPolicyName`,{enumerable:!0,get:function(){return p.tlsPolicyName}});var m=Ki();Object.defineProperty(e,`userAgentPolicy`,{enumerable:!0,get:function(){return m.userAgentPolicy}}),Object.defineProperty(e,`userAgentPolicyName`,{enumerable:!0,get:function(){return m.userAgentPolicyName}})})),Ga=s((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.logPolicyName=void 0,e.logPolicy=r;let t=Ba(),n=Wa();e.logPolicyName=n.logPolicyName;function r(e={}){return(0,n.logPolicy)({logger:t.logger.info,...e})}})),Ka=s((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.redirectPolicyName=void 0,e.redirectPolicy=n;let t=Wa();e.redirectPolicyName=t.redirectPolicyName;function n(e={}){return(0,t.redirectPolicy)(e)}})),qa=s((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.getHeaderName=i,e.setPlatformSpecificData=a;let t=(hi(),d(jr)),n=t.__importDefault(require(`node:os`)),r=t.__importDefault(require(`node:process`));function i(){return`User-Agent`}async function a(e){if(r.default&&r.default.versions){let t=`${n.default.type()} ${n.default.release()}; ${n.default.arch()}`,i=r.default.versions;i.bun?e.set(`Bun`,`${i.bun} (${t})`):i.deno?e.set(`Deno`,`${i.deno} (${t})`):i.node&&e.set(`Node`,`${i.node} (${t})`)}}})),Ja=s((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.DEFAULT_RETRY_POLICY_COUNT=e.SDK_VERSION=void 0,e.SDK_VERSION=`1.22.2`,e.DEFAULT_RETRY_POLICY_COUNT=3})),Ya=s((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.getUserAgentHeaderName=i,e.getUserAgentValue=a;let t=qa(),n=Ja();function r(e){let t=[];for(let[n,r]of e){let e=r?`${n}/${r}`:n;t.push(e)}return t.join(` `)}function i(){return(0,t.getHeaderName)()}async function a(e){let i=new Map;i.set(`core-rest-pipeline`,n.SDK_VERSION),await(0,t.setPlatformSpecificData)(i);let a=r(i);return e?`${e} ${a}`:a}})),Xa=s((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.userAgentPolicyName=void 0,e.userAgentPolicy=r;let t=Ya(),n=(0,t.getUserAgentHeaderName)();e.userAgentPolicyName=`userAgentPolicy`;function r(r={}){let i=(0,t.getUserAgentValue)(r.userAgentPrefix);return{name:e.userAgentPolicyName,async sendRequest(e,t){return e.headers.has(n)||e.headers.set(n,await i),t(e)}}}})),Za=s((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.computeSha256Hmac=n,e.computeSha256Hash=r;let t=require(`node:crypto`);async function n(e,n,r){let i=Buffer.from(e,`base64`);return(0,t.createHmac)(`sha256`,i).update(n).digest(r)}async function r(e,n){return(0,t.createHash)(`sha256`).update(e).digest(n)}})),Qa=s((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.Sanitizer=e.uint8ArrayToString=e.stringToUint8Array=e.isWebWorker=e.isReactNative=e.isDeno=e.isNodeRuntime=e.isNodeLike=e.isBun=e.isBrowser=e.randomUUID=e.computeSha256Hmac=e.computeSha256Hash=e.isError=e.isObject=e.getRandomIntegerInclusive=e.calculateRetryDelay=void 0;var t=Yi();Object.defineProperty(e,`calculateRetryDelay`,{enumerable:!0,get:function(){return t.calculateRetryDelay}});var n=Ji();Object.defineProperty(e,`getRandomIntegerInclusive`,{enumerable:!0,get:function(){return n.getRandomIntegerInclusive}});var r=Mi();Object.defineProperty(e,`isObject`,{enumerable:!0,get:function(){return r.isObject}});var i=Ni();Object.defineProperty(e,`isError`,{enumerable:!0,get:function(){return i.isError}});var a=Za();Object.defineProperty(e,`computeSha256Hash`,{enumerable:!0,get:function(){return a.computeSha256Hash}}),Object.defineProperty(e,`computeSha256Hmac`,{enumerable:!0,get:function(){return a.computeSha256Hmac}});var o=ki();Object.defineProperty(e,`randomUUID`,{enumerable:!0,get:function(){return o.randomUUID}});var s=ta();Object.defineProperty(e,`isBrowser`,{enumerable:!0,get:function(){return s.isBrowser}}),Object.defineProperty(e,`isBun`,{enumerable:!0,get:function(){return s.isBun}}),Object.defineProperty(e,`isNodeLike`,{enumerable:!0,get:function(){return s.isNodeLike}}),Object.defineProperty(e,`isNodeRuntime`,{enumerable:!0,get:function(){return s.isNodeRuntime}}),Object.defineProperty(e,`isDeno`,{enumerable:!0,get:function(){return s.isDeno}}),Object.defineProperty(e,`isReactNative`,{enumerable:!0,get:function(){return s.isReactNative}}),Object.defineProperty(e,`isWebWorker`,{enumerable:!0,get:function(){return s.isWebWorker}});var c=Li();Object.defineProperty(e,`stringToUint8Array`,{enumerable:!0,get:function(){return c.stringToUint8Array}}),Object.defineProperty(e,`uint8ArrayToString`,{enumerable:!0,get:function(){return c.uint8ArrayToString}});var l=Fi();Object.defineProperty(e,`Sanitizer`,{enumerable:!0,get:function(){return l.Sanitizer}})})),$a=s((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.cancelablePromiseRace=t;async function t(e,t){let n=new AbortController;function r(){n.abort()}t?.abortSignal?.addEventListener(`abort`,r);try{return await Promise.race(e.map(e=>e({abortSignal:n.signal})))}finally{n.abort(),t?.abortSignal?.removeEventListener(`abort`,r)}}})),eo=s((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.AbortError=void 0,e.AbortError=class extends Error{constructor(e){super(e),this.name=`AbortError`}}})),to=s((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.AbortError=void 0;var t=eo();Object.defineProperty(e,`AbortError`,{enumerable:!0,get:function(){return t.AbortError}})})),no=s((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.createAbortablePromise=n;let t=to();function n(e,n){let{cleanupBeforeAbort:r,abortSignal:i,abortErrorMsg:a}=n??{};return new Promise((n,o)=>{function s(){o(new t.AbortError(a??`The operation was aborted.`))}function c(){i?.removeEventListener(`abort`,l)}function l(){r?.(),c(),s()}if(i?.aborted)return s();try{e(e=>{c(),n(e)},e=>{c(),o(e)})}catch(e){o(e)}i?.addEventListener(`abort`,l)})}})),ro=s((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.delay=r,e.calculateRetryDelay=i;let t=no(),n=Qa();function r(e,n){let r,{abortSignal:i,abortErrorMsg:a}=n??{};return(0,t.createAbortablePromise)(t=>{r=setTimeout(t,e)},{cleanupBeforeAbort:()=>clearTimeout(r),abortSignal:i,abortErrorMsg:a??`The delay was aborted.`})}function i(e,t){let r=t.retryDelayInMs*2**e,i=Math.min(t.maxRetryDelayInMs,r);return{retryAfterInMs:i/2+(0,n.getRandomIntegerInclusive)(0,i/2)}}})),io=s((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.getErrorMessage=n;let t=Qa();function n(e){if((0,t.isError)(e))return e.message;{let t;try{t=typeof e==`object`&&e?JSON.stringify(e):String(e)}catch{t=`[unable to stringify input]`}return`Unknown error ${t}`}}})),ao=s((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.isDefined=t,e.isObjectWithProperties=n,e.objectHasProperty=r;function t(e){return e!=null}function n(e,n){if(!t(e)||typeof e!=`object`)return!1;for(let t of n)if(!r(e,t))return!1;return!0}function r(e,n){return t(e)&&typeof e==`object`&&n in e}})),oo=s((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.isWebWorker=e.isReactNative=e.isNodeRuntime=e.isNodeLike=e.isNode=e.isDeno=e.isBun=e.isBrowser=e.objectHasProperty=e.isObjectWithProperties=e.isDefined=e.getErrorMessage=e.delay=e.createAbortablePromise=e.cancelablePromiseRace=void 0,e.calculateRetryDelay=s,e.computeSha256Hash=c,e.computeSha256Hmac=l,e.getRandomIntegerInclusive=u,e.isError=f,e.isObject=p,e.randomUUID=m,e.uint8ArrayToString=h,e.stringToUint8Array=g;let t=(hi(),d(jr)).__importStar(Qa());var n=$a();Object.defineProperty(e,`cancelablePromiseRace`,{enumerable:!0,get:function(){return n.cancelablePromiseRace}});var r=no();Object.defineProperty(e,`createAbortablePromise`,{enumerable:!0,get:function(){return r.createAbortablePromise}});var i=ro();Object.defineProperty(e,`delay`,{enumerable:!0,get:function(){return i.delay}});var a=io();Object.defineProperty(e,`getErrorMessage`,{enumerable:!0,get:function(){return a.getErrorMessage}});var o=ao();Object.defineProperty(e,`isDefined`,{enumerable:!0,get:function(){return o.isDefined}}),Object.defineProperty(e,`isObjectWithProperties`,{enumerable:!0,get:function(){return o.isObjectWithProperties}}),Object.defineProperty(e,`objectHasProperty`,{enumerable:!0,get:function(){return o.objectHasProperty}});function s(e,n){return t.calculateRetryDelay(e,n)}function c(e,n){return t.computeSha256Hash(e,n)}function l(e,n,r){return t.computeSha256Hmac(e,n,r)}function u(e,n){return t.getRandomIntegerInclusive(e,n)}function f(e){return t.isError(e)}function p(e){return t.isObject(e)}function m(){return t.randomUUID()}e.isBrowser=t.isBrowser,e.isBun=t.isBun,e.isDeno=t.isDeno,e.isNode=t.isNodeLike,e.isNodeLike=t.isNodeLike,e.isNodeRuntime=t.isNodeRuntime,e.isReactNative=t.isReactNative,e.isWebWorker=t.isWebWorker;function h(e,n){return t.uint8ArrayToString(e,n)}function g(e,n){return t.stringToUint8Array(e,n)}})),so=s((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.hasRawContent=a,e.getRawContent=o,e.createFileFromStream=s,e.createFile=c;let t=oo();function n(e){return!!(e&&typeof e.pipe==`function`)}let r={arrayBuffer:()=>{throw Error(`Not implemented`)},bytes:()=>{throw Error(`Not implemented`)},slice:()=>{throw Error(`Not implemented`)},text:()=>{throw Error(`Not implemented`)}},i=Symbol(`rawContent`);function a(e){return typeof e[i]==`function`}function o(e){return a(e)?e[i]():e}function s(e,t,a={}){return{...r,type:a.type??``,lastModified:a.lastModified??new Date().getTime(),webkitRelativePath:a.webkitRelativePath??``,size:a.size??-1,name:t,stream:()=>{let t=e();if(n(t))throw Error(`Not supported: a Node stream was provided as input to createFileFromStream.`);return t},[i]:e}}function c(e,n,a={}){return t.isNodeLike?{...r,type:a.type??``,lastModified:a.lastModified??new Date().getTime(),webkitRelativePath:a.webkitRelativePath??``,size:e.byteLength,name:n,arrayBuffer:async()=>e.buffer,stream:()=>new Blob([l(e)]).stream(),[i]:()=>e}:new File([l(e)],n,a)}function l(e){return`resize`in e.buffer?e:e.map(e=>e)}})),co=s((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.multipartPolicyName=void 0,e.multipartPolicy=r;let t=Wa(),n=so();e.multipartPolicyName=t.multipartPolicyName;function r(){let r=(0,t.multipartPolicy)();return{name:e.multipartPolicyName,sendRequest:async(e,t)=>{if(e.multipartBody)for(let t of e.multipartBody.parts)(0,n.hasRawContent)(t.body)&&(t.body=(0,n.getRawContent)(t.body));return r.sendRequest(e,t)}}}})),lo=s((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.decompressResponsePolicyName=void 0,e.decompressResponsePolicy=n;let t=Wa();e.decompressResponsePolicyName=t.decompressResponsePolicyName;function n(){return(0,t.decompressResponsePolicy)()}})),uo=s((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.defaultRetryPolicyName=void 0,e.defaultRetryPolicy=n;let t=Wa();e.defaultRetryPolicyName=t.defaultRetryPolicyName;function n(e={}){return(0,t.defaultRetryPolicy)(e)}})),fo=s((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.formDataPolicyName=void 0,e.formDataPolicy=n;let t=Wa();e.formDataPolicyName=t.formDataPolicyName;function n(){return(0,t.formDataPolicy)()}})),po=s((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.proxyPolicyName=void 0,e.getDefaultProxySettings=n,e.proxyPolicy=r;let t=Wa();e.proxyPolicyName=t.proxyPolicyName;function n(e){return(0,t.getDefaultProxySettings)(e)}function r(e,n){return(0,t.proxyPolicy)(e,n)}})),mo=s((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.setClientRequestIdPolicyName=void 0,e.setClientRequestIdPolicy=t,e.setClientRequestIdPolicyName=`setClientRequestIdPolicy`;function t(t=`x-ms-client-request-id`){return{name:e.setClientRequestIdPolicyName,async sendRequest(e,n){return e.headers.has(t)||e.headers.set(t,e.requestId),n(e)}}}})),ho=s((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.agentPolicyName=void 0,e.agentPolicy=n;let t=Wa();e.agentPolicyName=t.agentPolicyName;function n(e){return(0,t.agentPolicy)(e)}})),go=s((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.tlsPolicyName=void 0,e.tlsPolicy=n;let t=Wa();e.tlsPolicyName=t.tlsPolicyName;function n(e){return(0,t.tlsPolicy)(e)}})),_o=s((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.TracingContextImpl=e.knownContextKeys=void 0,e.createTracingContext=t,e.knownContextKeys={span:Symbol.for(`@azure/core-tracing span`),namespace:Symbol.for(`@azure/core-tracing namespace`)};function t(t={}){let r=new n(t.parentContext);return t.span&&(r=r.setValue(e.knownContextKeys.span,t.span)),t.namespace&&(r=r.setValue(e.knownContextKeys.namespace,t.namespace)),r}var n=class e{constructor(t){this._contextMap=t instanceof e?new Map(t._contextMap):new Map}setValue(t,n){let r=new e(this);return r._contextMap.set(t,n),r}getValue(e){return this._contextMap.get(e)}deleteValue(t){let n=new e(this);return n._contextMap.delete(t),n}};e.TracingContextImpl=n})),vo=s((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.state=void 0,e.state={instrumenterImplementation:void 0}})),yo=s((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.createDefaultTracingSpan=r,e.createDefaultInstrumenter=i,e.useInstrumenter=a,e.getInstrumenter=o;let t=_o(),n=vo();function r(){return{end:()=>{},isRecording:()=>!1,recordException:()=>{},setAttribute:()=>{},setStatus:()=>{},addEvent:()=>{}}}function i(){return{createRequestHeaders:()=>({}),parseTraceparentHeader:()=>{},startSpan:(e,n)=>({span:r(),tracingContext:(0,t.createTracingContext)({parentContext:n.tracingContext})}),withContext(e,t,...n){return t(...n)}}}function a(e){n.state.instrumenterImplementation=e}function o(){return n.state.instrumenterImplementation||(n.state.instrumenterImplementation=i()),n.state.instrumenterImplementation}})),bo=s((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.createTracingClient=r;let t=yo(),n=_o();function r(e){let{namespace:r,packageName:i,packageVersion:a}=e;function o(e,o,s){let c=(0,t.getInstrumenter)().startSpan(e,{...s,packageName:i,packageVersion:a,tracingContext:o?.tracingOptions?.tracingContext}),l=c.tracingContext,u=c.span;return l.getValue(n.knownContextKeys.namespace)||(l=l.setValue(n.knownContextKeys.namespace,r)),u.setAttribute(`az.namespace`,l.getValue(n.knownContextKeys.namespace)),{span:u,updatedOptions:Object.assign({},o,{tracingOptions:{...o?.tracingOptions,tracingContext:l}})}}async function s(e,t,n,r){let{span:i,updatedOptions:a}=o(e,t,r);try{let e=await c(a.tracingOptions.tracingContext,()=>Promise.resolve(n(a,i)));return i.setStatus({status:`success`}),e}catch(e){throw i.setStatus({status:`error`,error:e}),e}finally{i.end()}}function c(e,n,...r){return(0,t.getInstrumenter)().withContext(e,n,...r)}function l(e){return(0,t.getInstrumenter)().parseTraceparentHeader(e)}function u(e){return(0,t.getInstrumenter)().createRequestHeaders(e)}return{startSpan:o,withSpan:s,withContext:c,parseTraceparentHeader:l,createRequestHeaders:u}}})),xo=s((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.createTracingClient=e.useInstrumenter=void 0;var t=yo();Object.defineProperty(e,`useInstrumenter`,{enumerable:!0,get:function(){return t.useInstrumenter}});var n=bo();Object.defineProperty(e,`createTracingClient`,{enumerable:!0,get:function(){return n.createTracingClient}})})),So=s((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.RestError=void 0,e.isRestError=n;let t=Ia();e.RestError=t.RestError;function n(e){return(0,t.isRestError)(e)}})),Co=s((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.tracingPolicyName=void 0,e.tracingPolicy=c;let t=xo(),n=Ja(),r=Ya(),i=Ba(),a=oo(),o=So(),s=Qa();e.tracingPolicyName=`tracingPolicy`;function c(t={}){let n=(0,r.getUserAgentValue)(t.userAgentPrefix),i=new s.Sanitizer({additionalAllowedQueryParameters:t.additionalAllowedQueryParameters}),a=l();return{name:e.tracingPolicyName,async sendRequest(e,t){if(!a)return t(e);let r=await n,o={"http.url":i.sanitizeUrl(e.url),"http.method":e.method,"http.user_agent":r,requestId:e.requestId};r&&(o[`http.user_agent`]=r);let{span:s,tracingContext:c}=u(a,e,o)??{};if(!s||!c)return t(e);try{let n=await a.withContext(c,t,e);return f(s,n),n}catch(e){throw d(s,e),e}}}}function l(){try{return(0,t.createTracingClient)({namespace:``,packageName:`@azure/core-rest-pipeline`,packageVersion:n.SDK_VERSION})}catch(e){i.logger.warning(`Error when creating the TracingClient: ${(0,a.getErrorMessage)(e)}`);return}}function u(e,t,n){try{let{span:r,updatedOptions:i}=e.startSpan(`HTTP ${t.method}`,{tracingOptions:t.tracingOptions},{spanKind:`client`,spanAttributes:n});if(!r.isRecording()){r.end();return}let a=e.createRequestHeaders(i.tracingOptions.tracingContext);for(let[e,n]of Object.entries(a))t.headers.set(e,n);return{span:r,tracingContext:i.tracingOptions.tracingContext}}catch(e){i.logger.warning(`Skipping creating a tracing span due to an error: ${(0,a.getErrorMessage)(e)}`);return}}function d(e,t){try{e.setStatus({status:`error`,error:(0,a.isError)(t)?t:void 0}),(0,o.isRestError)(t)&&t.statusCode&&e.setAttribute(`http.status_code`,t.statusCode),e.end()}catch(e){i.logger.warning(`Skipping tracing span processing due to an error: ${(0,a.getErrorMessage)(e)}`)}}function f(e,t){try{e.setAttribute(`http.status_code`,t.status);let n=t.headers.get(`x-ms-request-id`);n&&e.setAttribute(`serviceRequestId`,n),t.status>=400&&e.setStatus({status:`error`}),e.end()}catch(e){i.logger.warning(`Skipping tracing span processing due to an error: ${(0,a.getErrorMessage)(e)}`)}}})),wo=s((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.wrapAbortSignalLike=t;function t(e){if(e instanceof AbortSignal)return{abortSignal:e};if(e.aborted)return{abortSignal:AbortSignal.abort(e.reason)};let t=new AbortController,n=!0;function r(){n&&=(e.removeEventListener(`abort`,i),!1)}function i(){t.abort(e.reason),r()}return e.addEventListener(`abort`,i),{abortSignal:t.signal,cleanup:r}}})),To=s((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.wrapAbortSignalLikePolicyName=void 0,e.wrapAbortSignalLikePolicy=n;let t=wo();e.wrapAbortSignalLikePolicyName=`wrapAbortSignalLikePolicy`;function n(){return{name:e.wrapAbortSignalLikePolicyName,sendRequest:async(e,n)=>{if(!e.abortSignal)return n(e);let{abortSignal:r,cleanup:i}=(0,t.wrapAbortSignalLike)(e.abortSignal);e.abortSignal=r;try{return await n(e)}finally{i?.()}}}}})),Eo=s((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.createPipelineFromOptions=g;let t=Ga(),n=La(),r=Ka(),i=Xa(),a=co(),o=lo(),s=uo(),c=fo(),l=oo(),u=po(),d=mo(),f=ho(),p=go(),m=Co(),h=To();function g(e){let g=(0,n.createEmptyPipeline)();return l.isNodeLike&&(e.agent&&g.addPolicy((0,f.agentPolicy)(e.agent)),e.tlsOptions&&g.addPolicy((0,p.tlsPolicy)(e.tlsOptions)),g.addPolicy((0,u.proxyPolicy)(e.proxyOptions)),g.addPolicy((0,o.decompressResponsePolicy)())),g.addPolicy((0,h.wrapAbortSignalLikePolicy)()),g.addPolicy((0,c.formDataPolicy)(),{beforePolicies:[a.multipartPolicyName]}),g.addPolicy((0,i.userAgentPolicy)(e.userAgentOptions)),g.addPolicy((0,d.setClientRequestIdPolicy)(e.telemetryOptions?.clientRequestIdHeaderName)),g.addPolicy((0,a.multipartPolicy)(),{afterPhase:`Deserialize`}),g.addPolicy((0,s.defaultRetryPolicy)(e.retryOptions),{phase:`Retry`}),g.addPolicy((0,m.tracingPolicy)({...e.userAgentOptions,...e.loggingOptions}),{afterPhase:`Retry`}),l.isNodeLike&&g.addPolicy((0,r.redirectPolicy)(e.redirectOptions),{afterPhase:`Retry`}),g.addPolicy((0,t.logPolicy)(e.loggingOptions),{afterPhase:`Sign`}),g}})),Do=s((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.createDefaultHttpClient=r;let t=Ia(),n=wo();function r(){let e=(0,t.createDefaultHttpClient)();return{async sendRequest(t){let{abortSignal:r,cleanup:i}=t.abortSignal?(0,n.wrapAbortSignalLike)(t.abortSignal):{};try{return t.abortSignal=r,await e.sendRequest(t)}finally{i?.()}}}}})),Oo=s((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.createHttpHeaders=n;let t=Ia();function n(e){return(0,t.createHttpHeaders)(e)}})),ko=s((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.createPipelineRequest=n;let t=Ia();function n(e){return(0,t.createPipelineRequest)(e)}})),Ao=s((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.exponentialRetryPolicyName=void 0,e.exponentialRetryPolicy=n;let t=Wa();e.exponentialRetryPolicyName=t.exponentialRetryPolicyName;function n(e={}){return(0,t.exponentialRetryPolicy)(e)}})),jo=s((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.systemErrorRetryPolicyName=void 0,e.systemErrorRetryPolicy=n;let t=Wa();e.systemErrorRetryPolicyName=t.systemErrorRetryPolicyName;function n(e={}){return(0,t.systemErrorRetryPolicy)(e)}})),Mo=s((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.throttlingRetryPolicyName=void 0,e.throttlingRetryPolicy=n;let t=Wa();e.throttlingRetryPolicyName=t.throttlingRetryPolicyName;function n(e={}){return(0,t.throttlingRetryPolicy)(e)}})),No=s((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.retryPolicy=a;let t=za(),n=Ja(),r=Wa(),i=(0,t.createClientLogger)(`core-rest-pipeline retryPolicy`);function a(e,t={maxRetries:n.DEFAULT_RETRY_POLICY_COUNT}){return(0,r.retryPolicy)(e,{logger:i,...t})}})),Po=s((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.DEFAULT_CYCLER_OPTIONS=void 0,e.createTokenCycler=r;let t=oo();e.DEFAULT_CYCLER_OPTIONS={forcedRefreshWindowInMs:1e3,retryIntervalInMs:3e3,refreshWindowInMs:1e3*60*2};async function n(e,n,r){async function i(){if(Date.now()t.getToken(e,r),s.retryIntervalInMs,a?.expiresOnTimestamp??Date.now()).then(e=>(i=null,a=e,o=r.tenantId,a)).catch(e=>{throw i=null,a=null,o=void 0,e})),i}return async(e,t)=>{let n=!!t.claims,r=o!==t.tenantId;return n&&(a=null),r||n||c.mustRefresh?l(e,t):(c.shouldRefresh&&l(e,t),a)}}})),Fo=s((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.bearerTokenAuthenticationPolicyName=void 0,e.bearerTokenAuthenticationPolicy=c,e.parseChallenges=l;let t=Po(),n=Ba(),r=So();e.bearerTokenAuthenticationPolicyName=`bearerTokenAuthenticationPolicy`;async function i(e,t){try{return[await t(e),void 0]}catch(e){if((0,r.isRestError)(e)&&e.response)return[e.response,e];throw e}}async function a(e){let{scopes:t,getAccessToken:n,request:r}=e,i=await n(t,{abortSignal:r.abortSignal,tracingOptions:r.tracingOptions,enableCae:!0});i&&e.request.headers.set(`Authorization`,`Bearer ${i.token}`)}function o(e){return e.status===401&&e.headers.has(`WWW-Authenticate`)}async function s(e,t){let{scopes:n}=e,r=await e.getAccessToken(n,{enableCae:!0,claims:t});return r?(e.request.headers.set(`Authorization`,`${r.tokenType??`Bearer`} ${r.token}`),!0):!1}function c(r){let{credential:c,scopes:l,challengeCallbacks:d}=r,f=r.logger||n.logger,p={authorizeRequest:d?.authorizeRequest?.bind(d)??a,authorizeRequestOnChallenge:d?.authorizeRequestOnChallenge?.bind(d)},m=c?(0,t.createTokenCycler)(c):()=>Promise.resolve(null);return{name:e.bearerTokenAuthenticationPolicyName,async sendRequest(e,t){if(!e.url.toLowerCase().startsWith(`https://`))throw Error(`Bearer token authentication is not permitted for non-TLS protected (non-https) URLs.`);await p.authorizeRequest({scopes:Array.isArray(l)?l:[l],request:e,getAccessToken:m,logger:f});let n,r,a;if([n,r]=await i(e,t),o(n)){let c=u(n.headers.get(`WWW-Authenticate`));if(c){let o;try{o=atob(c)}catch{return f.warning(`The WWW-Authenticate header contains "claims" that cannot be parsed. Unable to perform the Continuous Access Evaluation authentication flow. Unparsable claims: ${c}`),n}a=await s({scopes:Array.isArray(l)?l:[l],response:n,request:e,getAccessToken:m,logger:f},o),a&&([n,r]=await i(e,t))}else if(p.authorizeRequestOnChallenge&&(a=await p.authorizeRequestOnChallenge({scopes:Array.isArray(l)?l:[l],request:e,response:n,getAccessToken:m,logger:f}),a&&([n,r]=await i(e,t)),o(n)&&(c=u(n.headers.get(`WWW-Authenticate`)),c))){let o;try{o=atob(c)}catch{return f.warning(`The WWW-Authenticate header contains "claims" that cannot be parsed. Unable to perform the Continuous Access Evaluation authentication flow. Unparsable claims: ${c}`),n}a=await s({scopes:Array.isArray(l)?l:[l],response:n,request:e,getAccessToken:m,logger:f},o),a&&([n,r]=await i(e,t))}}if(r)throw r;return n}}}function l(e){let t=/(\w+)\s+((?:\w+=(?:"[^"]*"|[^,]*),?\s*)+)/g,n=/(\w+)="([^"]*)"/g,r=[],i;for(;(i=t.exec(e))!==null;){let e=i[1],t=i[2],a={},o;for(;(o=n.exec(t))!==null;)a[o[1]]=o[2];r.push({scheme:e,params:a})}return r}function u(e){if(e)return l(e).find(e=>e.scheme===`Bearer`&&e.params.claims&&e.params.error===`insufficient_claims`)?.params.claims}})),Io=s((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.ndJsonPolicyName=void 0,e.ndJsonPolicy=t,e.ndJsonPolicyName=`ndJsonPolicy`;function t(){return{name:e.ndJsonPolicyName,async sendRequest(e,t){if(typeof e.body==`string`&&e.body.startsWith(`[`)){let t=JSON.parse(e.body);Array.isArray(t)&&(e.body=t.map(e=>JSON.stringify(e)+` +`).join(``))}return t(e)}}}})),Lo=s((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.auxiliaryAuthenticationHeaderPolicyName=void 0,e.auxiliaryAuthenticationHeaderPolicy=a;let t=Po(),n=Ba();e.auxiliaryAuthenticationHeaderPolicyName=`auxiliaryAuthenticationHeaderPolicy`;let r=`x-ms-authorization-auxiliary`;async function i(e){let{scopes:t,getAccessToken:n,request:r}=e;return(await n(t,{abortSignal:r.abortSignal,tracingOptions:r.tracingOptions}))?.token??``}function a(a){let{credentials:o,scopes:s}=a,c=a.logger||n.logger,l=new WeakMap;return{name:e.auxiliaryAuthenticationHeaderPolicyName,async sendRequest(n,a){if(!n.url.toLowerCase().startsWith(`https://`))throw Error(`Bearer token authentication for auxiliary header is not permitted for non-TLS protected (non-https) URLs.`);if(!o||o.length===0)return c.info(`${e.auxiliaryAuthenticationHeaderPolicyName} header will not be set due to empty credentials.`),a(n);let u=[];for(let e of o){let r=l.get(e);r||(r=(0,t.createTokenCycler)(e),l.set(e,r)),u.push(i({scopes:Array.isArray(s)?s:[s],request:n,getAccessToken:r,logger:c}))}let d=(await Promise.all(u)).filter(e=>!!e);return d.length===0?(c.warning(`None of the auxiliary tokens are valid. ${r} header will not be set.`),a(n)):(n.headers.set(r,d.map(e=>`Bearer ${e}`).join(`, `)),a(n))}}}})),Ro=s((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.createFileFromStream=e.createFile=e.agentPolicyName=e.agentPolicy=e.auxiliaryAuthenticationHeaderPolicyName=e.auxiliaryAuthenticationHeaderPolicy=e.ndJsonPolicyName=e.ndJsonPolicy=e.bearerTokenAuthenticationPolicyName=e.bearerTokenAuthenticationPolicy=e.formDataPolicyName=e.formDataPolicy=e.tlsPolicyName=e.tlsPolicy=e.userAgentPolicyName=e.userAgentPolicy=e.defaultRetryPolicy=e.tracingPolicyName=e.tracingPolicy=e.retryPolicy=e.throttlingRetryPolicyName=e.throttlingRetryPolicy=e.systemErrorRetryPolicyName=e.systemErrorRetryPolicy=e.redirectPolicyName=e.redirectPolicy=e.getDefaultProxySettings=e.proxyPolicyName=e.proxyPolicy=e.multipartPolicyName=e.multipartPolicy=e.logPolicyName=e.logPolicy=e.setClientRequestIdPolicyName=e.setClientRequestIdPolicy=e.exponentialRetryPolicyName=e.exponentialRetryPolicy=e.decompressResponsePolicyName=e.decompressResponsePolicy=e.isRestError=e.RestError=e.createPipelineRequest=e.createHttpHeaders=e.createDefaultHttpClient=e.createPipelineFromOptions=e.createEmptyPipeline=void 0;var t=La();Object.defineProperty(e,`createEmptyPipeline`,{enumerable:!0,get:function(){return t.createEmptyPipeline}});var n=Eo();Object.defineProperty(e,`createPipelineFromOptions`,{enumerable:!0,get:function(){return n.createPipelineFromOptions}});var r=Do();Object.defineProperty(e,`createDefaultHttpClient`,{enumerable:!0,get:function(){return r.createDefaultHttpClient}});var i=Oo();Object.defineProperty(e,`createHttpHeaders`,{enumerable:!0,get:function(){return i.createHttpHeaders}});var a=ko();Object.defineProperty(e,`createPipelineRequest`,{enumerable:!0,get:function(){return a.createPipelineRequest}});var o=So();Object.defineProperty(e,`RestError`,{enumerable:!0,get:function(){return o.RestError}}),Object.defineProperty(e,`isRestError`,{enumerable:!0,get:function(){return o.isRestError}});var s=lo();Object.defineProperty(e,`decompressResponsePolicy`,{enumerable:!0,get:function(){return s.decompressResponsePolicy}}),Object.defineProperty(e,`decompressResponsePolicyName`,{enumerable:!0,get:function(){return s.decompressResponsePolicyName}});var c=Ao();Object.defineProperty(e,`exponentialRetryPolicy`,{enumerable:!0,get:function(){return c.exponentialRetryPolicy}}),Object.defineProperty(e,`exponentialRetryPolicyName`,{enumerable:!0,get:function(){return c.exponentialRetryPolicyName}});var l=mo();Object.defineProperty(e,`setClientRequestIdPolicy`,{enumerable:!0,get:function(){return l.setClientRequestIdPolicy}}),Object.defineProperty(e,`setClientRequestIdPolicyName`,{enumerable:!0,get:function(){return l.setClientRequestIdPolicyName}});var u=Ga();Object.defineProperty(e,`logPolicy`,{enumerable:!0,get:function(){return u.logPolicy}}),Object.defineProperty(e,`logPolicyName`,{enumerable:!0,get:function(){return u.logPolicyName}});var d=co();Object.defineProperty(e,`multipartPolicy`,{enumerable:!0,get:function(){return d.multipartPolicy}}),Object.defineProperty(e,`multipartPolicyName`,{enumerable:!0,get:function(){return d.multipartPolicyName}});var f=po();Object.defineProperty(e,`proxyPolicy`,{enumerable:!0,get:function(){return f.proxyPolicy}}),Object.defineProperty(e,`proxyPolicyName`,{enumerable:!0,get:function(){return f.proxyPolicyName}}),Object.defineProperty(e,`getDefaultProxySettings`,{enumerable:!0,get:function(){return f.getDefaultProxySettings}});var p=Ka();Object.defineProperty(e,`redirectPolicy`,{enumerable:!0,get:function(){return p.redirectPolicy}}),Object.defineProperty(e,`redirectPolicyName`,{enumerable:!0,get:function(){return p.redirectPolicyName}});var m=jo();Object.defineProperty(e,`systemErrorRetryPolicy`,{enumerable:!0,get:function(){return m.systemErrorRetryPolicy}}),Object.defineProperty(e,`systemErrorRetryPolicyName`,{enumerable:!0,get:function(){return m.systemErrorRetryPolicyName}});var h=Mo();Object.defineProperty(e,`throttlingRetryPolicy`,{enumerable:!0,get:function(){return h.throttlingRetryPolicy}}),Object.defineProperty(e,`throttlingRetryPolicyName`,{enumerable:!0,get:function(){return h.throttlingRetryPolicyName}});var g=No();Object.defineProperty(e,`retryPolicy`,{enumerable:!0,get:function(){return g.retryPolicy}});var _=Co();Object.defineProperty(e,`tracingPolicy`,{enumerable:!0,get:function(){return _.tracingPolicy}}),Object.defineProperty(e,`tracingPolicyName`,{enumerable:!0,get:function(){return _.tracingPolicyName}});var v=uo();Object.defineProperty(e,`defaultRetryPolicy`,{enumerable:!0,get:function(){return v.defaultRetryPolicy}});var y=Xa();Object.defineProperty(e,`userAgentPolicy`,{enumerable:!0,get:function(){return y.userAgentPolicy}}),Object.defineProperty(e,`userAgentPolicyName`,{enumerable:!0,get:function(){return y.userAgentPolicyName}});var b=go();Object.defineProperty(e,`tlsPolicy`,{enumerable:!0,get:function(){return b.tlsPolicy}}),Object.defineProperty(e,`tlsPolicyName`,{enumerable:!0,get:function(){return b.tlsPolicyName}});var x=fo();Object.defineProperty(e,`formDataPolicy`,{enumerable:!0,get:function(){return x.formDataPolicy}}),Object.defineProperty(e,`formDataPolicyName`,{enumerable:!0,get:function(){return x.formDataPolicyName}});var S=Fo();Object.defineProperty(e,`bearerTokenAuthenticationPolicy`,{enumerable:!0,get:function(){return S.bearerTokenAuthenticationPolicy}}),Object.defineProperty(e,`bearerTokenAuthenticationPolicyName`,{enumerable:!0,get:function(){return S.bearerTokenAuthenticationPolicyName}});var C=Io();Object.defineProperty(e,`ndJsonPolicy`,{enumerable:!0,get:function(){return C.ndJsonPolicy}}),Object.defineProperty(e,`ndJsonPolicyName`,{enumerable:!0,get:function(){return C.ndJsonPolicyName}});var w=Lo();Object.defineProperty(e,`auxiliaryAuthenticationHeaderPolicy`,{enumerable:!0,get:function(){return w.auxiliaryAuthenticationHeaderPolicy}}),Object.defineProperty(e,`auxiliaryAuthenticationHeaderPolicyName`,{enumerable:!0,get:function(){return w.auxiliaryAuthenticationHeaderPolicyName}});var T=ho();Object.defineProperty(e,`agentPolicy`,{enumerable:!0,get:function(){return T.agentPolicy}}),Object.defineProperty(e,`agentPolicyName`,{enumerable:!0,get:function(){return T.agentPolicyName}});var E=so();Object.defineProperty(e,`createFile`,{enumerable:!0,get:function(){return E.createFile}}),Object.defineProperty(e,`createFileFromStream`,{enumerable:!0,get:function(){return E.createFileFromStream}})})),zo=s((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.state=void 0,e.state={operationRequestMap:new WeakMap}})),Bo=s((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.getOperationArgumentValueFromParameter=n,e.getOperationRequestInfo=o;let t=zo();function n(e,t,i){let a=t.parameterPath,o=t.mapper,s;if(typeof a==`string`&&(a=[a]),Array.isArray(a)){if(a.length>0)if(o.isConstant)s=o.defaultValue;else{let t=r(e,a);!t.propertyFound&&i&&(t=r(i,a));let n=!1;t.propertyFound||(n=o.required||a[0]===`options`&&a.length===2),s=n?o.defaultValue:t.propertyValue}}else for(let t in o.required&&(s={}),a){let r=o.type.modelProperties[t],c=a[t],l=n(e,{parameterPath:c,mapper:r},i);l!==void 0&&(s||={},s[t]=l)}return s}function r(e,t){let n={propertyFound:!1},r=0;for(;r{Object.defineProperty(e,`__esModule`,{value:!0}),e.deserializationPolicyName=void 0,e.deserializationPolicy=s;let t=yi(),n=Ro(),r=xi(),i=Bo(),a=[`application/json`,`text/json`],o=[`application/xml`,`application/atom+xml`];e.deserializationPolicyName=`deserializationPolicy`;function s(n={}){let r=n.expectedContentTypes?.json??a,i=n.expectedContentTypes?.xml??o,s=n.parseXML,c=n.serializerOptions,l={xml:{rootName:c?.xml.rootName??``,includeRoot:c?.xml.includeRoot??!1,xmlCharKey:c?.xml.xmlCharKey??t.XML_CHARKEY}};return{name:e.deserializationPolicyName,async sendRequest(e,t){return u(r,i,await t(e),l,s)}}}function c(e){let t,n=e.request,r=(0,i.getOperationRequestInfo)(n),a=r?.operationSpec;return a&&(t=r?.operationResponseGetter?r?.operationResponseGetter(a,e):a.responses[e.status]),t}function l(e){let t=e.request,n=(0,i.getOperationRequestInfo)(t)?.shouldDeserialize,r;return r=n===void 0?!0:typeof n==`boolean`?n:n(e),r}async function u(e,t,a,o,s){let u=await p(e,t,a,o,s);if(!l(u))return u;let d=(0,i.getOperationRequestInfo)(u.request)?.operationSpec;if(!d||!d.responses)return u;let m=c(u),{error:h,shouldReturnResponse:g}=f(u,d,m,o);if(h)throw h;if(g)return u;if(m){if(m.bodyMapper){let e=u.parsedBody;d.isXML&&m.bodyMapper.type.name===r.MapperTypeNames.Sequence&&(e=typeof e==`object`?e[m.bodyMapper.xmlElementName]:[]);try{u.parsedBody=d.serializer.deserialize(m.bodyMapper,e,`operationRes.parsedBody`,o)}catch(e){throw new n.RestError(`Error ${e} occurred in deserializing the responseBody - ${u.bodyAsText}`,{statusCode:u.status,request:u.request,response:u})}}else d.httpMethod===`HEAD`&&(u.parsedBody=a.status>=200&&a.status<300);m.headersMapper&&(u.parsedHeaders=d.serializer.deserialize(m.headersMapper,u.headers.toJSON(),`operationRes.parsedHeaders`,{xml:{},ignoreUnknownProperties:!0}))}return u}function d(e){let t=Object.keys(e.responses);return t.length===0||t.length===1&&t[0]===`default`}function f(e,t,i,a){let o=200<=e.status&&e.status<300;if(d(t)?o:i)if(i){if(!i.isError)return{error:null,shouldReturnResponse:!1}}else return{error:null,shouldReturnResponse:!1};let s=i??t.responses.default,c=e.request.streamResponseStatusCodes?.has(e.status)?`Unexpected status code: ${e.status}`:e.bodyAsText,l=new n.RestError(c,{statusCode:e.status,request:e.request,response:e});if(!s&&!(e.parsedBody?.error?.code&&e.parsedBody?.error?.message))throw l;let u=s?.bodyMapper,f=s?.headersMapper;try{if(e.parsedBody){let n=e.parsedBody,i;if(u){let e=n;if(t.isXML&&u.type.name===r.MapperTypeNames.Sequence){e=[];let t=u.xmlElementName;typeof n==`object`&&t&&(e=n[t])}i=t.serializer.deserialize(u,e,`error.response.parsedBody`,a)}let o=n.error||i||n;l.code=o.code,o.message&&(l.message=o.message),u&&(l.response.parsedBody=i)}e.headers&&f&&(l.response.parsedHeaders=t.serializer.deserialize(f,e.headers.toJSON(),`operationRes.parsedHeaders`))}catch(t){l.message=`Error "${t.message}" occurred in deserializing the responseBody - "${e.bodyAsText}" for the default response.`}return{error:l,shouldReturnResponse:!1}}async function p(e,t,r,i,a){if(!r.request.streamResponseStatusCodes?.has(r.status)&&r.bodyAsText){let o=r.bodyAsText,s=r.headers.get(`Content-Type`)||``,c=s?s.split(`;`).map(e=>e.toLowerCase()):[];try{if(c.length===0||c.some(t=>e.indexOf(t)!==-1))return r.parsedBody=JSON.parse(o),r;if(c.some(e=>t.indexOf(e)!==-1)){if(!a)throw Error(`Parsing XML not supported.`);return r.parsedBody=await a(o,i.xml),r}}catch(e){let t=`Error "${e}" occurred while parsing the response body - ${r.bodyAsText}.`,i=e.code||n.RestError.PARSE_ERROR;throw new n.RestError(t,{code:i,statusCode:r.status,request:r.request,response:r})}}return r}})),Ho=s((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.getStreamingResponseStatusCodes=n,e.getPathStringFromParameter=r;let t=xi();function n(e){let n=new Set;for(let r in e.responses){let i=e.responses[r];i.bodyMapper&&i.bodyMapper.type.name===t.MapperTypeNames.Stream&&n.add(Number(r))}return n}function r(e){let{parameterPath:t,mapper:n}=e,r;return r=typeof t==`string`?t:Array.isArray(t)?t.join(`.`):n.serializedName,r}})),Uo=s((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.serializationPolicyName=void 0,e.serializationPolicy=a,e.serializeHeaders=o,e.serializeRequestBody=s;let t=yi(),n=Bo(),r=xi(),i=Ho();e.serializationPolicyName=`serializationPolicy`;function a(t={}){let r=t.stringifyXML;return{name:e.serializationPolicyName,async sendRequest(e,t){let i=(0,n.getOperationRequestInfo)(e),a=i?.operationSpec,c=i?.operationArguments;return a&&c&&(o(e,c,a),s(e,c,a,r)),t(e)}}}function o(e,t,r){if(r.headerParameters)for(let a of r.headerParameters){let o=(0,n.getOperationArgumentValueFromParameter)(t,a);if(o!=null||a.mapper.required){o=r.serializer.serialize(a.mapper,o,(0,i.getPathStringFromParameter)(a));let t=a.mapper.headerCollectionPrefix;if(t)for(let n of Object.keys(o))e.headers.set(t+n,o[n]);else e.headers.set(a.mapper.serializedName||(0,i.getPathStringFromParameter)(a),o)}}let a=t.options?.requestOptions?.customHeaders;if(a)for(let t of Object.keys(a))e.headers.set(t,a[t])}function s(e,a,o,s=function(){throw Error(`XML serialization unsupported!`)}){let u=a.options?.serializerOptions,d={xml:{rootName:u?.xml.rootName??``,includeRoot:u?.xml.includeRoot??!1,xmlCharKey:u?.xml.xmlCharKey??t.XML_CHARKEY}},f=d.xml.xmlCharKey;if(o.requestBody&&o.requestBody.mapper){e.body=(0,n.getOperationArgumentValueFromParameter)(a,o.requestBody);let t=o.requestBody.mapper,{required:u,serializedName:p,xmlName:m,xmlElementName:h,xmlNamespace:g,xmlNamespacePrefix:_,nullable:v}=t,y=t.type.name;try{if(e.body!==void 0&&e.body!==null||v&&e.body===null||u){let n=(0,i.getPathStringFromParameter)(o.requestBody);e.body=o.serializer.serialize(t,e.body,n,d);let a=y===r.MapperTypeNames.Stream;if(o.isXML){let t=_?`xmlns:${_}`:`xmlns`,n=c(g,t,y,e.body,d);y===r.MapperTypeNames.Sequence?e.body=s(l(n,h||m||p,t,g),{rootName:m||p,xmlCharKey:f}):a||(e.body=s(n,{rootName:m||p,xmlCharKey:f}))}else if(y===r.MapperTypeNames.String&&(o.contentType?.match(`text/plain`)||o.mediaType===`text`))return;else a||(e.body=JSON.stringify(e.body))}}catch(e){throw Error(`Error "${e.message}" occurred in serializing the payload - ${JSON.stringify(p,void 0,` `)}.`)}}else if(o.formDataParameters&&o.formDataParameters.length>0){e.formData={};for(let t of o.formDataParameters){let r=(0,n.getOperationArgumentValueFromParameter)(a,t);if(r!=null){let n=t.mapper.serializedName||(0,i.getPathStringFromParameter)(t);e.formData[n]=o.serializer.serialize(t.mapper,r,(0,i.getPathStringFromParameter)(t),d)}}}}function c(e,n,r,i,a){if(e&&![`Composite`,`Sequence`,`Dictionary`].includes(r)){let r={};return r[a.xml.xmlCharKey]=i,r[t.XML_ATTRKEY]={[n]:e},r}return i}function l(e,n,r,i){if(Array.isArray(e)||(e=[e]),!r||!i)return{[n]:e};let a={[n]:e};return a[t.XML_ATTRKEY]={[r]:i},a}})),Wo=s((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.createClientPipeline=i;let t=Vo(),n=Ro(),r=Uo();function i(e={}){let i=(0,n.createPipelineFromOptions)(e??{});return e.credentialOptions&&i.addPolicy((0,n.bearerTokenAuthenticationPolicy)({credential:e.credentialOptions.credential,scopes:e.credentialOptions.credentialScopes})),i.addPolicy((0,r.serializationPolicy)(e.serializationOptions),{phase:`Serialize`}),i.addPolicy((0,t.deserializationPolicy)(e.deserializationOptions),{phase:`Deserialize`}),i}})),Go=s((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.getCachedDefaultHttpClient=r;let t=Ro(),n;function r(){return n||=(0,t.createDefaultHttpClient)(),n}})),Ko=s((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.getRequestUrl=i,e.appendQueryParams=d;let t=Bo(),n=Ho(),r={CSV:`,`,SSV:` `,Multi:`Multi`,TSV:` `,Pipes:`|`};function i(e,t,n,r){let i=o(t,n,r),u=!1,f=a(e,i);if(t.path){let e=a(t.path,i);t.path===`/{nextLink}`&&e.startsWith(`/`)&&(e=e.substring(1)),s(e)?(f=e,u=!0):f=c(f,e)}let{queryParams:p,sequenceParams:m}=l(t,n,r);return f=d(f,p,m,u),f}function a(e,t){let n=e;for(let[e,r]of t)n=n.split(e).join(r);return n}function o(e,r,i){let a=new Map;if(e.urlParameters?.length)for(let o of e.urlParameters){let s=(0,t.getOperationArgumentValueFromParameter)(r,o,i),c=(0,n.getPathStringFromParameter)(o);s=e.serializer.serialize(o.mapper,s,c),o.skipEncoding||(s=encodeURIComponent(s)),a.set(`{${o.mapper.serializedName||c}}`,s)}return a}function s(e){return e.includes(`://`)}function c(e,t){if(!t)return e;let n=new URL(e),r=n.pathname;r.endsWith(`/`)||(r=`${r}/`),t.startsWith(`/`)&&(t=t.substring(1));let i=t.indexOf(`?`);if(i!==-1){let e=t.substring(0,i),a=t.substring(i+1);r+=e,a&&(n.search=n.search?`${n.search}&${a}`:a)}else r+=t;return n.pathname=r,n.toString()}function l(e,i,a){let o=new Map,s=new Set;if(e.queryParameters?.length)for(let c of e.queryParameters){c.mapper.type.name===`Sequence`&&c.mapper.serializedName&&s.add(c.mapper.serializedName);let l=(0,t.getOperationArgumentValueFromParameter)(i,c,a);if(l!=null||c.mapper.required){l=e.serializer.serialize(c.mapper,l,(0,n.getPathStringFromParameter)(c));let t=c.collectionFormat?r[c.collectionFormat]:``;if(Array.isArray(l)&&(l=l.map(e=>e??``)),c.collectionFormat===`Multi`&&l.length===0)continue;Array.isArray(l)&&(c.collectionFormat===`SSV`||c.collectionFormat===`TSV`)&&(l=l.join(t)),c.skipEncoding||(l=Array.isArray(l)?l.map(e=>encodeURIComponent(e)):encodeURIComponent(l)),Array.isArray(l)&&(c.collectionFormat===`CSV`||c.collectionFormat===`Pipes`)&&(l=l.join(t)),o.set(c.mapper.serializedName||(0,n.getPathStringFromParameter)(c),l)}}return{queryParams:o,sequenceParams:s}}function u(e){let t=new Map;if(!e||e[0]!==`?`)return t;e=e.slice(1);let n=e.split(`&`);for(let e of n){let[n,r]=e.split(`=`,2),i=t.get(n);i?Array.isArray(i)?i.push(r):t.set(n,[i,r]):t.set(n,r)}return t}function d(e,t,n,r=!1){if(t.size===0)return e;let i=new URL(e),a=u(i.search);for(let[e,i]of t){let t=a.get(e);if(Array.isArray(t))if(Array.isArray(i)){t.push(...i);let n=new Set(t);a.set(e,Array.from(n))}else t.push(i);else t?(Array.isArray(i)?i.unshift(t):n.has(e)&&a.set(e,[t,i]),r||a.set(e,i)):a.set(e,i)}let o=[];for(let[e,t]of a)if(typeof t==`string`)o.push(`${e}=${t}`);else if(Array.isArray(t))for(let n of t)o.push(`${e}=${n}`);else o.push(`${e}=${t}`);return i.search=o.length?`?${o.join(`&`)}`:``,i.toString()}})),qo=s((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.logger=void 0,e.logger=(0,za().createClientLogger)(`core-client`)})),Jo=s((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.ServiceClient=void 0;let t=Ro(),n=Wo(),r=bi(),i=Go(),a=Bo(),o=Ko(),s=Ho(),c=qo();e.ServiceClient=class{constructor(e={}){if(this._requestContentType=e.requestContentType,this._endpoint=e.endpoint??e.baseUri,e.baseUri&&c.logger.warning(`The baseUri option for SDK Clients has been deprecated, please use endpoint instead.`),this._allowInsecureConnection=e.allowInsecureConnection,this._httpClient=e.httpClient||(0,i.getCachedDefaultHttpClient)(),this.pipeline=e.pipeline||l(e),e.additionalPolicies?.length)for(let{policy:t,position:n}of e.additionalPolicies){let e=n===`perRetry`?`Sign`:void 0;this.pipeline.addPolicy(t,{afterPhase:e})}}async sendRequest(e){return this.pipeline.sendRequest(this._httpClient,e)}async sendOperationRequest(e,n){let i=n.baseUrl||this._endpoint;if(!i)throw Error(`If operationSpec.baseUrl is not specified, then the ServiceClient must have a endpoint string property that contains the base URL to use.`);let c=(0,o.getRequestUrl)(i,n,e,this),l=(0,t.createPipelineRequest)({url:c});l.method=n.httpMethod;let u=(0,a.getOperationRequestInfo)(l);u.operationSpec=n,u.operationArguments=e;let d=n.contentType||this._requestContentType;d&&n.requestBody&&l.headers.set(`Content-Type`,d);let f=e.options;if(f){let e=f.requestOptions;e&&(e.timeout&&(l.timeout=e.timeout),e.onUploadProgress&&(l.onUploadProgress=e.onUploadProgress),e.onDownloadProgress&&(l.onDownloadProgress=e.onDownloadProgress),e.shouldDeserialize!==void 0&&(u.shouldDeserialize=e.shouldDeserialize),e.allowInsecureConnection&&(l.allowInsecureConnection=!0)),f.abortSignal&&(l.abortSignal=f.abortSignal),f.tracingOptions&&(l.tracingOptions=f.tracingOptions)}this._allowInsecureConnection&&(l.allowInsecureConnection=!0),l.streamResponseStatusCodes===void 0&&(l.streamResponseStatusCodes=(0,s.getStreamingResponseStatusCodes)(n));try{let e=await this.sendRequest(l),t=(0,r.flattenResponse)(e,n.responses[e.status]);return f?.onResponse&&f.onResponse(e,t),t}catch(e){if(typeof e==`object`&&e?.response){let t=e.response,i=(0,r.flattenResponse)(t,n.responses[e.statusCode]||n.responses.default);e.details=i,f?.onResponse&&f.onResponse(t,i,e)}throw e}}};function l(e){let t=u(e),r=e.credential&&t?{credentialScopes:t,credential:e.credential}:void 0;return(0,n.createClientPipeline)({...e,credentialOptions:r})}function u(e){if(e.credentialScopes)return e.credentialScopes;if(e.endpoint)return`${e.endpoint}/.default`;if(e.baseUri)return`${e.baseUri}/.default`;if(e.credential&&!e.credentialScopes)throw Error(`When using credentials, the ServiceClientOptions must contain either a endpoint or a credentialScopes. Unable to create a bearerTokenAuthenticationPolicy`)}})),Yo=s((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.parseCAEChallenge=r,e.authorizeRequestOnClaimChallenge=i;let t=qo(),n=vi();function r(e){return`, ${e.trim()}`.split(`, Bearer `).filter(e=>e).map(e=>`${e.trim()}, `.split(`", `).filter(e=>e).map(e=>(([e,t])=>({[e]:t}))(e.trim().split(`="`))).reduce((e,t)=>({...e,...t}),{}))}async function i(e){let{scopes:i,response:a}=e,o=e.logger||t.logger,s=a.headers.get(`WWW-Authenticate`);if(!s)return o.info(`The WWW-Authenticate header was missing. Failed to perform the Continuous Access Evaluation authentication flow.`),!1;let c=(r(s)||[]).find(e=>e.claims);if(!c)return o.info(`The WWW-Authenticate header was missing the necessary "claims" to perform the Continuous Access Evaluation authentication flow.`),!1;let l=await e.getAccessToken(c.scope?[c.scope]:i,{claims:(0,n.decodeStringToString)(c.claims)});return l?(e.request.headers.set(`Authorization`,`${l.tokenType??`Bearer`} ${l.token}`),!0):!1}})),Xo=s((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.authorizeRequestOnTenantChallenge=void 0;let t={DefaultScope:`/.default`,HeaderConstants:{AUTHORIZATION:`authorization`}};function n(e){return/^[0-9a-fA-F]{8}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{12}$/.test(e)}e.authorizeRequestOnTenantChallenge=async e=>{let n=s(e.request),c=a(e.response);if(c){let a=o(c),s=i(e,a),l=r(a);if(!l)return!1;let u=await e.getAccessToken(s,{...n,tenantId:l});return u?(e.request.headers.set(t.HeaderConstants.AUTHORIZATION,`${u.tokenType??`Bearer`} ${u.token}`),!0):!1}return!1};function r(e){let t=new URL(e.authorization_uri).pathname.split(`/`)[1];if(t&&n(t))return t}function i(e,n){if(!n.resource_id)return e.scopes;let r=new URL(n.resource_id);r.pathname=t.DefaultScope;let i=r.toString();return i===`https://disk.azure.com/.default`&&(i=`https://disk.azure.com//.default`),[i]}function a(e){let t=e.headers.get(`WWW-Authenticate`);if(e.status===401&&t)return t}function o(e){return`${e.slice(7).trim()} `.split(` `).filter(e=>e).map(e=>(([e,t])=>({[e]:t}))(e.trim().split(`=`))).reduce((e,t)=>({...e,...t}),{})}function s(e){return{abortSignal:e.abortSignal,requestOptions:{timeout:e.timeout},tracingOptions:e.tracingOptions}}})),Zo=s((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.authorizeRequestOnTenantChallenge=e.authorizeRequestOnClaimChallenge=e.serializationPolicyName=e.serializationPolicy=e.deserializationPolicyName=e.deserializationPolicy=e.XML_CHARKEY=e.XML_ATTRKEY=e.createClientPipeline=e.ServiceClient=e.MapperTypeNames=e.createSerializer=void 0;var t=xi();Object.defineProperty(e,`createSerializer`,{enumerable:!0,get:function(){return t.createSerializer}}),Object.defineProperty(e,`MapperTypeNames`,{enumerable:!0,get:function(){return t.MapperTypeNames}});var n=Jo();Object.defineProperty(e,`ServiceClient`,{enumerable:!0,get:function(){return n.ServiceClient}});var r=Wo();Object.defineProperty(e,`createClientPipeline`,{enumerable:!0,get:function(){return r.createClientPipeline}});var i=yi();Object.defineProperty(e,`XML_ATTRKEY`,{enumerable:!0,get:function(){return i.XML_ATTRKEY}}),Object.defineProperty(e,`XML_CHARKEY`,{enumerable:!0,get:function(){return i.XML_CHARKEY}});var a=Vo();Object.defineProperty(e,`deserializationPolicy`,{enumerable:!0,get:function(){return a.deserializationPolicy}}),Object.defineProperty(e,`deserializationPolicyName`,{enumerable:!0,get:function(){return a.deserializationPolicyName}});var o=Uo();Object.defineProperty(e,`serializationPolicy`,{enumerable:!0,get:function(){return o.serializationPolicy}}),Object.defineProperty(e,`serializationPolicyName`,{enumerable:!0,get:function(){return o.serializationPolicyName}});var s=Yo();Object.defineProperty(e,`authorizeRequestOnClaimChallenge`,{enumerable:!0,get:function(){return s.authorizeRequestOnClaimChallenge}});var c=Xo();Object.defineProperty(e,`authorizeRequestOnTenantChallenge`,{enumerable:!0,get:function(){return c.authorizeRequestOnTenantChallenge}})})),Qo=s((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.ProviderConsentDefinition=e.ProviderRegistrationRequest=e.Permission=e.RoleDefinition=e.ProviderPermission=e.ProviderPermissionListResult=e.DeploymentWhatIf=e.WhatIfPropertyChange=e.WhatIfChange=e.WhatIfOperationResult=e.DeploymentWhatIfSettings=e.ScopedDeploymentWhatIf=e.ScopedDeployment=e.DeploymentListResult=e.DeploymentExportResult=e.DeploymentValidateResult=e.DeploymentDiagnosticsDefinition=e.ResourceReference=e.OnErrorDeploymentExtended=e.DeploymentExtensionDefinition=e.BasicDependency=e.Dependency=e.ApiProfile=e.ZoneMapping=e.AliasPathMetadata=e.AliasPattern=e.AliasPath=e.Alias=e.ProviderExtendedLocation=e.ProviderResourceType=e.Provider=e.DeploymentPropertiesExtended=e.DeploymentExtended=e.ExpressionEvaluationOptions=e.OnErrorDeployment=e.DebugSetting=e.DeploymentExtensionConfigItem=e.ParametersLink=e.KeyVaultReference=e.KeyVaultParameterReference=e.DeploymentParameter=e.TemplateLink=e.DeploymentProperties=e.Deployment=e.ErrorAdditionalInfo=e.ErrorResponse=e.CloudError=e.OperationDisplay=e.Operation=e.OperationListResult=void 0,e.TagsDeleteAtScopeHeaders=e.TagsUpdateAtScopeHeaders=e.TagsCreateOrUpdateAtScopeHeaders=e.ResourceGroupsDeleteHeaders=e.DeploymentsWhatIfHeaders=e.DeploymentsWhatIfAtSubscriptionScopeHeaders=e.DeploymentsWhatIfAtManagementGroupScopeHeaders=e.DeploymentsWhatIfAtTenantScopeHeaders=e.GenericResourceExpanded=e.GenericResource=e.DeploymentWhatIfProperties=e.SubResource=e.ResourceProviderOperationDisplayProperties=e.ResourceGroupFilter=e.GenericResourceFilter=e.DeploymentExtendedFilter=e.TagsPatchResource=e.Tags=e.TagsResource=e.TemplateHashResult=e.DeploymentOperationsListResult=e.HttpMessage=e.TargetResource=e.StatusMessage=e.DeploymentOperationProperties=e.DeploymentOperation=e.TagsListResult=e.TagDetails=e.TagCount=e.TagValue=e.ResourcesMoveInfo=e.ResourceGroupListResult=e.ResourceGroupExportResult=e.ExportTemplateRequest=e.ResourceGroupPatchable=e.ResourceGroupProperties=e.ResourceGroup=e.ExtendedLocation=e.Resource=e.IdentityUserAssignedIdentitiesValue=e.Identity=e.Sku=e.Plan=e.ResourceListResult=e.ProviderResourceTypeListResult=e.ProviderListResult=void 0,e.OperationListResult={type:{name:`Composite`,className:`OperationListResult`,modelProperties:{value:{serializedName:`value`,type:{name:`Sequence`,element:{type:{name:`Composite`,className:`Operation`}}}},nextLink:{serializedName:`nextLink`,type:{name:`String`}}}}},e.Operation={type:{name:`Composite`,className:`Operation`,modelProperties:{name:{serializedName:`name`,type:{name:`String`}},display:{serializedName:`display`,type:{name:`Composite`,className:`OperationDisplay`}}}}},e.OperationDisplay={type:{name:`Composite`,className:`OperationDisplay`,modelProperties:{provider:{serializedName:`provider`,type:{name:`String`}},resource:{serializedName:`resource`,type:{name:`String`}},operation:{serializedName:`operation`,type:{name:`String`}},description:{serializedName:`description`,type:{name:`String`}}}}},e.CloudError={type:{name:`Composite`,className:`CloudError`,modelProperties:{error:{serializedName:`error`,type:{name:`Composite`,className:`ErrorResponse`}}}}},e.ErrorResponse={type:{name:`Composite`,className:`ErrorResponse`,modelProperties:{code:{serializedName:`code`,readOnly:!0,type:{name:`String`}},message:{serializedName:`message`,readOnly:!0,type:{name:`String`}},target:{serializedName:`target`,readOnly:!0,type:{name:`String`}},details:{serializedName:`details`,readOnly:!0,type:{name:`Sequence`,element:{type:{name:`Composite`,className:`ErrorResponse`}}}},additionalInfo:{serializedName:`additionalInfo`,readOnly:!0,type:{name:`Sequence`,element:{type:{name:`Composite`,className:`ErrorAdditionalInfo`}}}}}}},e.ErrorAdditionalInfo={type:{name:`Composite`,className:`ErrorAdditionalInfo`,modelProperties:{type:{serializedName:`type`,readOnly:!0,type:{name:`String`}},info:{serializedName:`info`,readOnly:!0,type:{name:`Dictionary`,value:{type:{name:`any`}}}}}}},e.Deployment={type:{name:`Composite`,className:`Deployment`,modelProperties:{location:{serializedName:`location`,type:{name:`String`}},properties:{serializedName:`properties`,type:{name:`Composite`,className:`DeploymentProperties`}},tags:{serializedName:`tags`,type:{name:`Dictionary`,value:{type:{name:`String`}}}}}}},e.DeploymentProperties={type:{name:`Composite`,className:`DeploymentProperties`,modelProperties:{template:{serializedName:`template`,type:{name:`Dictionary`,value:{type:{name:`any`}}}},templateLink:{serializedName:`templateLink`,type:{name:`Composite`,className:`TemplateLink`}},parameters:{serializedName:`parameters`,type:{name:`Dictionary`,value:{type:{name:`Composite`,className:`DeploymentParameter`}}}},parametersLink:{serializedName:`parametersLink`,type:{name:`Composite`,className:`ParametersLink`}},extensionConfigs:{serializedName:`extensionConfigs`,type:{name:`Dictionary`,value:{type:{name:`Dictionary`,value:{type:{name:`Composite`,className:`DeploymentExtensionConfigItem`}}}}}},mode:{serializedName:`mode`,required:!0,type:{name:`Enum`,allowedValues:[`Incremental`,`Complete`]}},debugSetting:{serializedName:`debugSetting`,type:{name:`Composite`,className:`DebugSetting`}},onErrorDeployment:{serializedName:`onErrorDeployment`,type:{name:`Composite`,className:`OnErrorDeployment`}},expressionEvaluationOptions:{serializedName:`expressionEvaluationOptions`,type:{name:`Composite`,className:`ExpressionEvaluationOptions`}},validationLevel:{serializedName:`validationLevel`,type:{name:`String`}}}}},e.TemplateLink={type:{name:`Composite`,className:`TemplateLink`,modelProperties:{uri:{serializedName:`uri`,type:{name:`String`}},id:{serializedName:`id`,type:{name:`String`}},relativePath:{serializedName:`relativePath`,type:{name:`String`}},contentVersion:{serializedName:`contentVersion`,type:{name:`String`}},queryString:{serializedName:`queryString`,type:{name:`String`}}}}},e.DeploymentParameter={type:{name:`Composite`,className:`DeploymentParameter`,modelProperties:{value:{serializedName:`value`,type:{name:`any`}},reference:{serializedName:`reference`,type:{name:`Composite`,className:`KeyVaultParameterReference`}}}}},e.KeyVaultParameterReference={type:{name:`Composite`,className:`KeyVaultParameterReference`,modelProperties:{keyVault:{serializedName:`keyVault`,type:{name:`Composite`,className:`KeyVaultReference`}},secretName:{serializedName:`secretName`,required:!0,type:{name:`String`}},secretVersion:{serializedName:`secretVersion`,type:{name:`String`}}}}},e.KeyVaultReference={type:{name:`Composite`,className:`KeyVaultReference`,modelProperties:{id:{serializedName:`id`,required:!0,type:{name:`String`}}}}},e.ParametersLink={type:{name:`Composite`,className:`ParametersLink`,modelProperties:{uri:{serializedName:`uri`,required:!0,type:{name:`String`}},contentVersion:{serializedName:`contentVersion`,type:{name:`String`}}}}},e.DeploymentExtensionConfigItem={type:{name:`Composite`,className:`DeploymentExtensionConfigItem`,modelProperties:{type:{serializedName:`type`,readOnly:!0,type:{name:`String`}},value:{serializedName:`value`,type:{name:`any`}},keyVaultReference:{serializedName:`keyVaultReference`,type:{name:`Composite`,className:`KeyVaultParameterReference`}}}}},e.DebugSetting={type:{name:`Composite`,className:`DebugSetting`,modelProperties:{detailLevel:{serializedName:`detailLevel`,type:{name:`String`}}}}},e.OnErrorDeployment={type:{name:`Composite`,className:`OnErrorDeployment`,modelProperties:{type:{serializedName:`type`,type:{name:`Enum`,allowedValues:[`LastSuccessful`,`SpecificDeployment`]}},deploymentName:{serializedName:`deploymentName`,type:{name:`String`}}}}},e.ExpressionEvaluationOptions={type:{name:`Composite`,className:`ExpressionEvaluationOptions`,modelProperties:{scope:{serializedName:`scope`,type:{name:`String`}}}}},e.DeploymentExtended={type:{name:`Composite`,className:`DeploymentExtended`,modelProperties:{id:{serializedName:`id`,readOnly:!0,type:{name:`String`}},name:{serializedName:`name`,readOnly:!0,type:{name:`String`}},type:{serializedName:`type`,readOnly:!0,type:{name:`String`}},location:{serializedName:`location`,type:{name:`String`}},properties:{serializedName:`properties`,type:{name:`Composite`,className:`DeploymentPropertiesExtended`}},tags:{serializedName:`tags`,type:{name:`Dictionary`,value:{type:{name:`String`}}}}}}},e.DeploymentPropertiesExtended={type:{name:`Composite`,className:`DeploymentPropertiesExtended`,modelProperties:{provisioningState:{serializedName:`provisioningState`,readOnly:!0,type:{name:`String`}},correlationId:{serializedName:`correlationId`,readOnly:!0,type:{name:`String`}},timestamp:{serializedName:`timestamp`,readOnly:!0,type:{name:`DateTime`}},duration:{serializedName:`duration`,readOnly:!0,type:{name:`String`}},outputs:{serializedName:`outputs`,readOnly:!0,type:{name:`Dictionary`,value:{type:{name:`any`}}}},providers:{serializedName:`providers`,readOnly:!0,type:{name:`Sequence`,element:{type:{name:`Composite`,className:`Provider`}}}},dependencies:{serializedName:`dependencies`,readOnly:!0,type:{name:`Sequence`,element:{type:{name:`Composite`,className:`Dependency`}}}},templateLink:{serializedName:`templateLink`,type:{name:`Composite`,className:`TemplateLink`}},parameters:{serializedName:`parameters`,readOnly:!0,type:{name:`Dictionary`,value:{type:{name:`any`}}}},parametersLink:{serializedName:`parametersLink`,type:{name:`Composite`,className:`ParametersLink`}},extensions:{serializedName:`extensions`,readOnly:!0,type:{name:`Sequence`,element:{type:{name:`Composite`,className:`DeploymentExtensionDefinition`}}}},mode:{serializedName:`mode`,readOnly:!0,type:{name:`Enum`,allowedValues:[`Incremental`,`Complete`]}},debugSetting:{serializedName:`debugSetting`,type:{name:`Composite`,className:`DebugSetting`}},onErrorDeployment:{serializedName:`onErrorDeployment`,type:{name:`Composite`,className:`OnErrorDeploymentExtended`}},templateHash:{serializedName:`templateHash`,readOnly:!0,type:{name:`String`}},outputResources:{serializedName:`outputResources`,readOnly:!0,type:{name:`Sequence`,element:{type:{name:`Composite`,className:`ResourceReference`}}}},validatedResources:{serializedName:`validatedResources`,readOnly:!0,type:{name:`Sequence`,element:{type:{name:`Composite`,className:`ResourceReference`}}}},error:{serializedName:`error`,type:{name:`Composite`,className:`ErrorResponse`}},diagnostics:{serializedName:`diagnostics`,readOnly:!0,type:{name:`Sequence`,element:{type:{name:`Composite`,className:`DeploymentDiagnosticsDefinition`}}}},validationLevel:{serializedName:`validationLevel`,type:{name:`String`}}}}},e.Provider={type:{name:`Composite`,className:`Provider`,modelProperties:{id:{serializedName:`id`,readOnly:!0,type:{name:`String`}},namespace:{serializedName:`namespace`,type:{name:`String`}},registrationState:{serializedName:`registrationState`,readOnly:!0,type:{name:`String`}},registrationPolicy:{serializedName:`registrationPolicy`,readOnly:!0,type:{name:`String`}},resourceTypes:{serializedName:`resourceTypes`,readOnly:!0,type:{name:`Sequence`,element:{type:{name:`Composite`,className:`ProviderResourceType`}}}},providerAuthorizationConsentState:{serializedName:`providerAuthorizationConsentState`,type:{name:`String`}}}}},e.ProviderResourceType={type:{name:`Composite`,className:`ProviderResourceType`,modelProperties:{resourceType:{serializedName:`resourceType`,type:{name:`String`}},locations:{serializedName:`locations`,type:{name:`Sequence`,element:{type:{name:`String`}}}},locationMappings:{serializedName:`locationMappings`,type:{name:`Sequence`,element:{type:{name:`Composite`,className:`ProviderExtendedLocation`}}}},aliases:{serializedName:`aliases`,type:{name:`Sequence`,element:{type:{name:`Composite`,className:`Alias`}}}},apiVersions:{serializedName:`apiVersions`,type:{name:`Sequence`,element:{type:{name:`String`}}}},defaultApiVersion:{serializedName:`defaultApiVersion`,readOnly:!0,type:{name:`String`}},zoneMappings:{serializedName:`zoneMappings`,type:{name:`Sequence`,element:{type:{name:`Composite`,className:`ZoneMapping`}}}},apiProfiles:{serializedName:`apiProfiles`,readOnly:!0,type:{name:`Sequence`,element:{type:{name:`Composite`,className:`ApiProfile`}}}},capabilities:{serializedName:`capabilities`,type:{name:`String`}},properties:{serializedName:`properties`,type:{name:`Dictionary`,value:{type:{name:`String`}}}}}}},e.ProviderExtendedLocation={type:{name:`Composite`,className:`ProviderExtendedLocation`,modelProperties:{location:{serializedName:`location`,type:{name:`String`}},type:{serializedName:`type`,type:{name:`String`}},extendedLocations:{serializedName:`extendedLocations`,type:{name:`Sequence`,element:{type:{name:`String`}}}}}}},e.Alias={type:{name:`Composite`,className:`Alias`,modelProperties:{name:{serializedName:`name`,type:{name:`String`}},paths:{serializedName:`paths`,type:{name:`Sequence`,element:{type:{name:`Composite`,className:`AliasPath`}}}},type:{serializedName:`type`,type:{name:`Enum`,allowedValues:[`NotSpecified`,`PlainText`,`Mask`]}},defaultPath:{serializedName:`defaultPath`,type:{name:`String`}},defaultPattern:{serializedName:`defaultPattern`,type:{name:`Composite`,className:`AliasPattern`}},defaultMetadata:{serializedName:`defaultMetadata`,type:{name:`Composite`,className:`AliasPathMetadata`}}}}},e.AliasPath={type:{name:`Composite`,className:`AliasPath`,modelProperties:{path:{serializedName:`path`,type:{name:`String`}},apiVersions:{serializedName:`apiVersions`,type:{name:`Sequence`,element:{type:{name:`String`}}}},pattern:{serializedName:`pattern`,type:{name:`Composite`,className:`AliasPattern`}},metadata:{serializedName:`metadata`,type:{name:`Composite`,className:`AliasPathMetadata`}}}}},e.AliasPattern={type:{name:`Composite`,className:`AliasPattern`,modelProperties:{phrase:{serializedName:`phrase`,type:{name:`String`}},variable:{serializedName:`variable`,type:{name:`String`}},type:{serializedName:`type`,type:{name:`Enum`,allowedValues:[`NotSpecified`,`Extract`]}}}}},e.AliasPathMetadata={type:{name:`Composite`,className:`AliasPathMetadata`,modelProperties:{type:{serializedName:`type`,readOnly:!0,type:{name:`String`}},attributes:{serializedName:`attributes`,readOnly:!0,type:{name:`String`}}}}},e.ZoneMapping={type:{name:`Composite`,className:`ZoneMapping`,modelProperties:{location:{serializedName:`location`,type:{name:`String`}},zones:{serializedName:`zones`,type:{name:`Sequence`,element:{type:{name:`String`}}}}}}},e.ApiProfile={type:{name:`Composite`,className:`ApiProfile`,modelProperties:{profileVersion:{serializedName:`profileVersion`,readOnly:!0,type:{name:`String`}},apiVersion:{serializedName:`apiVersion`,readOnly:!0,type:{name:`String`}}}}},e.Dependency={type:{name:`Composite`,className:`Dependency`,modelProperties:{dependsOn:{serializedName:`dependsOn`,type:{name:`Sequence`,element:{type:{name:`Composite`,className:`BasicDependency`}}}},id:{serializedName:`id`,type:{name:`String`}},resourceType:{serializedName:`resourceType`,type:{name:`String`}},resourceName:{serializedName:`resourceName`,type:{name:`String`}}}}},e.BasicDependency={type:{name:`Composite`,className:`BasicDependency`,modelProperties:{id:{serializedName:`id`,type:{name:`String`}},resourceType:{serializedName:`resourceType`,type:{name:`String`}},resourceName:{serializedName:`resourceName`,type:{name:`String`}}}}},e.DeploymentExtensionDefinition={type:{name:`Composite`,className:`DeploymentExtensionDefinition`,modelProperties:{alias:{serializedName:`alias`,readOnly:!0,type:{name:`String`}},name:{serializedName:`name`,readOnly:!0,type:{name:`String`}},version:{serializedName:`version`,readOnly:!0,type:{name:`String`}},configId:{serializedName:`configId`,readOnly:!0,type:{name:`String`}},config:{serializedName:`config`,readOnly:!0,type:{name:`Dictionary`,value:{type:{name:`Composite`,className:`DeploymentExtensionConfigItem`}}}}}}},e.OnErrorDeploymentExtended={type:{name:`Composite`,className:`OnErrorDeploymentExtended`,modelProperties:{provisioningState:{serializedName:`provisioningState`,readOnly:!0,type:{name:`String`}},type:{serializedName:`type`,type:{name:`Enum`,allowedValues:[`LastSuccessful`,`SpecificDeployment`]}},deploymentName:{serializedName:`deploymentName`,type:{name:`String`}}}}},e.ResourceReference={type:{name:`Composite`,className:`ResourceReference`,modelProperties:{id:{serializedName:`id`,readOnly:!0,type:{name:`String`}},extension:{serializedName:`extension`,type:{name:`Composite`,className:`DeploymentExtensionDefinition`}},resourceType:{serializedName:`resourceType`,readOnly:!0,type:{name:`String`}},identifiers:{serializedName:`identifiers`,readOnly:!0,type:{name:`Dictionary`,value:{type:{name:`any`}}}},apiVersion:{serializedName:`apiVersion`,readOnly:!0,type:{name:`String`}}}}},e.DeploymentDiagnosticsDefinition={type:{name:`Composite`,className:`DeploymentDiagnosticsDefinition`,modelProperties:{level:{serializedName:`level`,required:!0,readOnly:!0,type:{name:`String`}},code:{serializedName:`code`,required:!0,readOnly:!0,type:{name:`String`}},message:{serializedName:`message`,required:!0,readOnly:!0,type:{name:`String`}},target:{serializedName:`target`,readOnly:!0,type:{name:`String`}},additionalInfo:{serializedName:`additionalInfo`,readOnly:!0,type:{name:`Sequence`,element:{type:{name:`Composite`,className:`ErrorAdditionalInfo`}}}}}}},e.DeploymentValidateResult={type:{name:`Composite`,className:`DeploymentValidateResult`,modelProperties:{error:{serializedName:`error`,type:{name:`Composite`,className:`ErrorResponse`}},id:{serializedName:`id`,readOnly:!0,type:{name:`String`}},name:{serializedName:`name`,readOnly:!0,type:{name:`String`}},type:{serializedName:`type`,readOnly:!0,type:{name:`String`}},properties:{serializedName:`properties`,type:{name:`Composite`,className:`DeploymentPropertiesExtended`}}}}},e.DeploymentExportResult={type:{name:`Composite`,className:`DeploymentExportResult`,modelProperties:{template:{serializedName:`template`,type:{name:`Dictionary`,value:{type:{name:`any`}}}}}}},e.DeploymentListResult={type:{name:`Composite`,className:`DeploymentListResult`,modelProperties:{value:{serializedName:`value`,type:{name:`Sequence`,element:{type:{name:`Composite`,className:`DeploymentExtended`}}}},nextLink:{serializedName:`nextLink`,readOnly:!0,type:{name:`String`}}}}},e.ScopedDeployment={type:{name:`Composite`,className:`ScopedDeployment`,modelProperties:{location:{serializedName:`location`,required:!0,type:{name:`String`}},properties:{serializedName:`properties`,type:{name:`Composite`,className:`DeploymentProperties`}},tags:{serializedName:`tags`,type:{name:`Dictionary`,value:{type:{name:`String`}}}}}}},e.ScopedDeploymentWhatIf={type:{name:`Composite`,className:`ScopedDeploymentWhatIf`,modelProperties:{location:{serializedName:`location`,required:!0,type:{name:`String`}},properties:{serializedName:`properties`,type:{name:`Composite`,className:`DeploymentWhatIfProperties`}}}}},e.DeploymentWhatIfSettings={type:{name:`Composite`,className:`DeploymentWhatIfSettings`,modelProperties:{resultFormat:{serializedName:`resultFormat`,type:{name:`Enum`,allowedValues:[`ResourceIdOnly`,`FullResourcePayloads`]}}}}},e.WhatIfOperationResult={type:{name:`Composite`,className:`WhatIfOperationResult`,modelProperties:{status:{serializedName:`status`,type:{name:`String`}},error:{serializedName:`error`,type:{name:`Composite`,className:`ErrorResponse`}},changes:{serializedName:`properties.changes`,type:{name:`Sequence`,element:{type:{name:`Composite`,className:`WhatIfChange`}}}},potentialChanges:{serializedName:`properties.potentialChanges`,type:{name:`Sequence`,element:{type:{name:`Composite`,className:`WhatIfChange`}}}},diagnostics:{serializedName:`properties.diagnostics`,readOnly:!0,type:{name:`Sequence`,element:{type:{name:`Composite`,className:`DeploymentDiagnosticsDefinition`}}}}}}},e.WhatIfChange={type:{name:`Composite`,className:`WhatIfChange`,modelProperties:{resourceId:{serializedName:`resourceId`,type:{name:`String`}},deploymentId:{serializedName:`deploymentId`,type:{name:`String`}},symbolicName:{serializedName:`symbolicName`,type:{name:`String`}},identifiers:{serializedName:`identifiers`,type:{name:`Dictionary`,value:{type:{name:`any`}}}},changeType:{serializedName:`changeType`,required:!0,type:{name:`Enum`,allowedValues:[`Create`,`Delete`,`Ignore`,`Deploy`,`NoChange`,`Modify`,`Unsupported`]}},unsupportedReason:{serializedName:`unsupportedReason`,type:{name:`String`}},before:{serializedName:`before`,type:{name:`Dictionary`,value:{type:{name:`any`}}}},after:{serializedName:`after`,type:{name:`Dictionary`,value:{type:{name:`any`}}}},delta:{serializedName:`delta`,type:{name:`Sequence`,element:{type:{name:`Composite`,className:`WhatIfPropertyChange`}}}}}}},e.WhatIfPropertyChange={type:{name:`Composite`,className:`WhatIfPropertyChange`,modelProperties:{path:{serializedName:`path`,required:!0,type:{name:`String`}},propertyChangeType:{serializedName:`propertyChangeType`,required:!0,type:{name:`Enum`,allowedValues:[`Create`,`Delete`,`Modify`,`Array`,`NoEffect`]}},before:{serializedName:`before`,type:{name:`Dictionary`,value:{type:{name:`any`}}}},after:{serializedName:`after`,type:{name:`Dictionary`,value:{type:{name:`any`}}}},children:{serializedName:`children`,type:{name:`Sequence`,element:{type:{name:`Composite`,className:`WhatIfPropertyChange`}}}}}}},e.DeploymentWhatIf={type:{name:`Composite`,className:`DeploymentWhatIf`,modelProperties:{location:{serializedName:`location`,type:{name:`String`}},properties:{serializedName:`properties`,type:{name:`Composite`,className:`DeploymentWhatIfProperties`}}}}},e.ProviderPermissionListResult={type:{name:`Composite`,className:`ProviderPermissionListResult`,modelProperties:{value:{serializedName:`value`,type:{name:`Sequence`,element:{type:{name:`Composite`,className:`ProviderPermission`}}}},nextLink:{serializedName:`nextLink`,readOnly:!0,type:{name:`String`}}}}},e.ProviderPermission={type:{name:`Composite`,className:`ProviderPermission`,modelProperties:{applicationId:{serializedName:`applicationId`,type:{name:`String`}},roleDefinition:{serializedName:`roleDefinition`,type:{name:`Composite`,className:`RoleDefinition`}},managedByRoleDefinition:{serializedName:`managedByRoleDefinition`,type:{name:`Composite`,className:`RoleDefinition`}},providerAuthorizationConsentState:{serializedName:`providerAuthorizationConsentState`,type:{name:`String`}}}}},e.RoleDefinition={type:{name:`Composite`,className:`RoleDefinition`,modelProperties:{id:{serializedName:`id`,type:{name:`String`}},name:{serializedName:`name`,type:{name:`String`}},isServiceRole:{serializedName:`isServiceRole`,type:{name:`Boolean`}},permissions:{serializedName:`permissions`,type:{name:`Sequence`,element:{type:{name:`Composite`,className:`Permission`}}}},scopes:{serializedName:`scopes`,type:{name:`Sequence`,element:{type:{name:`String`}}}}}}},e.Permission={type:{name:`Composite`,className:`Permission`,modelProperties:{actions:{serializedName:`actions`,type:{name:`Sequence`,element:{type:{name:`String`}}}},notActions:{serializedName:`notActions`,type:{name:`Sequence`,element:{type:{name:`String`}}}},dataActions:{serializedName:`dataActions`,type:{name:`Sequence`,element:{type:{name:`String`}}}},notDataActions:{serializedName:`notDataActions`,type:{name:`Sequence`,element:{type:{name:`String`}}}}}}},e.ProviderRegistrationRequest={type:{name:`Composite`,className:`ProviderRegistrationRequest`,modelProperties:{thirdPartyProviderConsent:{serializedName:`thirdPartyProviderConsent`,type:{name:`Composite`,className:`ProviderConsentDefinition`}}}}},e.ProviderConsentDefinition={type:{name:`Composite`,className:`ProviderConsentDefinition`,modelProperties:{consentToAuthorization:{serializedName:`consentToAuthorization`,type:{name:`Boolean`}}}}},e.ProviderListResult={type:{name:`Composite`,className:`ProviderListResult`,modelProperties:{value:{serializedName:`value`,type:{name:`Sequence`,element:{type:{name:`Composite`,className:`Provider`}}}},nextLink:{serializedName:`nextLink`,readOnly:!0,type:{name:`String`}}}}},e.ProviderResourceTypeListResult={type:{name:`Composite`,className:`ProviderResourceTypeListResult`,modelProperties:{value:{serializedName:`value`,type:{name:`Sequence`,element:{type:{name:`Composite`,className:`ProviderResourceType`}}}},nextLink:{serializedName:`nextLink`,readOnly:!0,type:{name:`String`}}}}},e.ResourceListResult={type:{name:`Composite`,className:`ResourceListResult`,modelProperties:{value:{serializedName:`value`,type:{name:`Sequence`,element:{type:{name:`Composite`,className:`GenericResourceExpanded`}}}},nextLink:{serializedName:`nextLink`,readOnly:!0,type:{name:`String`}}}}},e.Plan={type:{name:`Composite`,className:`Plan`,modelProperties:{name:{serializedName:`name`,type:{name:`String`}},publisher:{serializedName:`publisher`,type:{name:`String`}},product:{serializedName:`product`,type:{name:`String`}},promotionCode:{serializedName:`promotionCode`,type:{name:`String`}},version:{serializedName:`version`,type:{name:`String`}}}}},e.Sku={type:{name:`Composite`,className:`Sku`,modelProperties:{name:{serializedName:`name`,type:{name:`String`}},tier:{serializedName:`tier`,type:{name:`String`}},size:{serializedName:`size`,type:{name:`String`}},family:{serializedName:`family`,type:{name:`String`}},model:{serializedName:`model`,type:{name:`String`}},capacity:{serializedName:`capacity`,type:{name:`Number`}}}}},e.Identity={type:{name:`Composite`,className:`Identity`,modelProperties:{principalId:{serializedName:`principalId`,readOnly:!0,type:{name:`String`}},tenantId:{serializedName:`tenantId`,readOnly:!0,type:{name:`String`}},type:{serializedName:`type`,type:{name:`Enum`,allowedValues:[`SystemAssigned`,`UserAssigned`,`SystemAssigned, UserAssigned`,`None`]}},userAssignedIdentities:{serializedName:`userAssignedIdentities`,type:{name:`Dictionary`,value:{type:{name:`Composite`,className:`IdentityUserAssignedIdentitiesValue`}}}}}}},e.IdentityUserAssignedIdentitiesValue={type:{name:`Composite`,className:`IdentityUserAssignedIdentitiesValue`,modelProperties:{principalId:{serializedName:`principalId`,readOnly:!0,type:{name:`String`}},clientId:{serializedName:`clientId`,readOnly:!0,type:{name:`String`}}}}},e.Resource={type:{name:`Composite`,className:`Resource`,modelProperties:{id:{serializedName:`id`,readOnly:!0,type:{name:`String`}},name:{serializedName:`name`,readOnly:!0,type:{name:`String`}},type:{serializedName:`type`,readOnly:!0,type:{name:`String`}},location:{serializedName:`location`,type:{name:`String`}},extendedLocation:{serializedName:`extendedLocation`,type:{name:`Composite`,className:`ExtendedLocation`}},tags:{serializedName:`tags`,type:{name:`Dictionary`,value:{type:{name:`String`}}}}}}},e.ExtendedLocation={type:{name:`Composite`,className:`ExtendedLocation`,modelProperties:{type:{serializedName:`type`,type:{name:`String`}},name:{serializedName:`name`,type:{name:`String`}}}}},e.ResourceGroup={type:{name:`Composite`,className:`ResourceGroup`,modelProperties:{id:{serializedName:`id`,readOnly:!0,type:{name:`String`}},name:{serializedName:`name`,readOnly:!0,type:{name:`String`}},type:{serializedName:`type`,readOnly:!0,type:{name:`String`}},properties:{serializedName:`properties`,type:{name:`Composite`,className:`ResourceGroupProperties`}},location:{serializedName:`location`,required:!0,type:{name:`String`}},managedBy:{serializedName:`managedBy`,type:{name:`String`}},tags:{serializedName:`tags`,type:{name:`Dictionary`,value:{type:{name:`String`}}}}}}},e.ResourceGroupProperties={type:{name:`Composite`,className:`ResourceGroupProperties`,modelProperties:{provisioningState:{serializedName:`provisioningState`,readOnly:!0,type:{name:`String`}}}}},e.ResourceGroupPatchable={type:{name:`Composite`,className:`ResourceGroupPatchable`,modelProperties:{name:{serializedName:`name`,type:{name:`String`}},properties:{serializedName:`properties`,type:{name:`Composite`,className:`ResourceGroupProperties`}},managedBy:{serializedName:`managedBy`,type:{name:`String`}},tags:{serializedName:`tags`,type:{name:`Dictionary`,value:{type:{name:`String`}}}}}}},e.ExportTemplateRequest={type:{name:`Composite`,className:`ExportTemplateRequest`,modelProperties:{resources:{serializedName:`resources`,type:{name:`Sequence`,element:{type:{name:`String`}}}},options:{serializedName:`options`,type:{name:`String`}},outputFormat:{serializedName:`outputFormat`,type:{name:`String`}}}}},e.ResourceGroupExportResult={type:{name:`Composite`,className:`ResourceGroupExportResult`,modelProperties:{template:{serializedName:`template`,type:{name:`Dictionary`,value:{type:{name:`any`}}}},output:{serializedName:`output`,type:{name:`String`}},error:{serializedName:`error`,type:{name:`Composite`,className:`ErrorResponse`}}}}},e.ResourceGroupListResult={type:{name:`Composite`,className:`ResourceGroupListResult`,modelProperties:{value:{serializedName:`value`,type:{name:`Sequence`,element:{type:{name:`Composite`,className:`ResourceGroup`}}}},nextLink:{serializedName:`nextLink`,readOnly:!0,type:{name:`String`}}}}},e.ResourcesMoveInfo={type:{name:`Composite`,className:`ResourcesMoveInfo`,modelProperties:{resources:{serializedName:`resources`,type:{name:`Sequence`,element:{type:{name:`String`}}}},targetResourceGroup:{serializedName:`targetResourceGroup`,type:{name:`String`}}}}},e.TagValue={type:{name:`Composite`,className:`TagValue`,modelProperties:{id:{serializedName:`id`,readOnly:!0,type:{name:`String`}},tagValue:{serializedName:`tagValue`,type:{name:`String`}},count:{serializedName:`count`,type:{name:`Composite`,className:`TagCount`}}}}},e.TagCount={type:{name:`Composite`,className:`TagCount`,modelProperties:{type:{serializedName:`type`,type:{name:`String`}},value:{serializedName:`value`,type:{name:`Number`}}}}},e.TagDetails={type:{name:`Composite`,className:`TagDetails`,modelProperties:{id:{serializedName:`id`,readOnly:!0,type:{name:`String`}},tagName:{serializedName:`tagName`,type:{name:`String`}},count:{serializedName:`count`,type:{name:`Composite`,className:`TagCount`}},values:{serializedName:`values`,type:{name:`Sequence`,element:{type:{name:`Composite`,className:`TagValue`}}}}}}},e.TagsListResult={type:{name:`Composite`,className:`TagsListResult`,modelProperties:{value:{serializedName:`value`,type:{name:`Sequence`,element:{type:{name:`Composite`,className:`TagDetails`}}}},nextLink:{serializedName:`nextLink`,readOnly:!0,type:{name:`String`}}}}},e.DeploymentOperation={type:{name:`Composite`,className:`DeploymentOperation`,modelProperties:{id:{serializedName:`id`,readOnly:!0,type:{name:`String`}},operationId:{serializedName:`operationId`,readOnly:!0,type:{name:`String`}},properties:{serializedName:`properties`,type:{name:`Composite`,className:`DeploymentOperationProperties`}}}}},e.DeploymentOperationProperties={type:{name:`Composite`,className:`DeploymentOperationProperties`,modelProperties:{provisioningOperation:{serializedName:`provisioningOperation`,readOnly:!0,type:{name:`Enum`,allowedValues:[`NotSpecified`,`Create`,`Delete`,`Waiting`,`AzureAsyncOperationWaiting`,`ResourceCacheWaiting`,`Action`,`Read`,`EvaluateDeploymentOutput`,`DeploymentCleanup`]}},provisioningState:{serializedName:`provisioningState`,readOnly:!0,type:{name:`String`}},timestamp:{serializedName:`timestamp`,readOnly:!0,type:{name:`DateTime`}},duration:{serializedName:`duration`,readOnly:!0,type:{name:`String`}},serviceRequestId:{serializedName:`serviceRequestId`,readOnly:!0,type:{name:`String`}},statusCode:{serializedName:`statusCode`,readOnly:!0,type:{name:`String`}},statusMessage:{serializedName:`statusMessage`,type:{name:`Composite`,className:`StatusMessage`}},targetResource:{serializedName:`targetResource`,type:{name:`Composite`,className:`TargetResource`}},request:{serializedName:`request`,type:{name:`Composite`,className:`HttpMessage`}},response:{serializedName:`response`,type:{name:`Composite`,className:`HttpMessage`}}}}},e.StatusMessage={type:{name:`Composite`,className:`StatusMessage`,modelProperties:{status:{serializedName:`status`,type:{name:`String`}},error:{serializedName:`error`,type:{name:`Composite`,className:`ErrorResponse`}}}}},e.TargetResource={type:{name:`Composite`,className:`TargetResource`,modelProperties:{id:{serializedName:`id`,type:{name:`String`}},resourceName:{serializedName:`resourceName`,type:{name:`String`}},resourceType:{serializedName:`resourceType`,type:{name:`String`}},extension:{serializedName:`extension`,type:{name:`Composite`,className:`DeploymentExtensionDefinition`}},identifiers:{serializedName:`identifiers`,type:{name:`Dictionary`,value:{type:{name:`any`}}}},apiVersion:{serializedName:`apiVersion`,type:{name:`String`}},symbolicName:{serializedName:`symbolicName`,type:{name:`String`}}}}},e.HttpMessage={type:{name:`Composite`,className:`HttpMessage`,modelProperties:{content:{serializedName:`content`,type:{name:`Dictionary`,value:{type:{name:`any`}}}}}}},e.DeploymentOperationsListResult={type:{name:`Composite`,className:`DeploymentOperationsListResult`,modelProperties:{value:{serializedName:`value`,type:{name:`Sequence`,element:{type:{name:`Composite`,className:`DeploymentOperation`}}}},nextLink:{serializedName:`nextLink`,readOnly:!0,type:{name:`String`}}}}},e.TemplateHashResult={type:{name:`Composite`,className:`TemplateHashResult`,modelProperties:{minifiedTemplate:{serializedName:`minifiedTemplate`,type:{name:`String`}},templateHash:{serializedName:`templateHash`,type:{name:`String`}}}}},e.TagsResource={type:{name:`Composite`,className:`TagsResource`,modelProperties:{id:{serializedName:`id`,readOnly:!0,type:{name:`String`}},name:{serializedName:`name`,readOnly:!0,type:{name:`String`}},type:{serializedName:`type`,readOnly:!0,type:{name:`String`}},properties:{serializedName:`properties`,type:{name:`Composite`,className:`Tags`}}}}},e.Tags={type:{name:`Composite`,className:`Tags`,modelProperties:{tags:{serializedName:`tags`,type:{name:`Dictionary`,value:{type:{name:`String`}}}}}}},e.TagsPatchResource={type:{name:`Composite`,className:`TagsPatchResource`,modelProperties:{operation:{serializedName:`operation`,type:{name:`String`}},properties:{serializedName:`properties`,type:{name:`Composite`,className:`Tags`}}}}},e.DeploymentExtendedFilter={type:{name:`Composite`,className:`DeploymentExtendedFilter`,modelProperties:{provisioningState:{serializedName:`provisioningState`,type:{name:`String`}}}}},e.GenericResourceFilter={type:{name:`Composite`,className:`GenericResourceFilter`,modelProperties:{resourceType:{serializedName:`resourceType`,type:{name:`String`}},tagname:{serializedName:`tagname`,type:{name:`String`}},tagvalue:{serializedName:`tagvalue`,type:{name:`String`}}}}},e.ResourceGroupFilter={type:{name:`Composite`,className:`ResourceGroupFilter`,modelProperties:{tagName:{serializedName:`tagName`,type:{name:`String`}},tagValue:{serializedName:`tagValue`,type:{name:`String`}}}}},e.ResourceProviderOperationDisplayProperties={type:{name:`Composite`,className:`ResourceProviderOperationDisplayProperties`,modelProperties:{publisher:{serializedName:`publisher`,type:{name:`String`}},provider:{serializedName:`provider`,type:{name:`String`}},resource:{serializedName:`resource`,type:{name:`String`}},operation:{serializedName:`operation`,type:{name:`String`}},description:{serializedName:`description`,type:{name:`String`}}}}},e.SubResource={type:{name:`Composite`,className:`SubResource`,modelProperties:{id:{serializedName:`id`,type:{name:`String`}}}}},e.DeploymentWhatIfProperties={type:{name:`Composite`,className:`DeploymentWhatIfProperties`,modelProperties:Object.assign(Object.assign({},e.DeploymentProperties.type.modelProperties),{whatIfSettings:{serializedName:`whatIfSettings`,type:{name:`Composite`,className:`DeploymentWhatIfSettings`}}})}},e.GenericResource={type:{name:`Composite`,className:`GenericResource`,modelProperties:Object.assign(Object.assign({},e.Resource.type.modelProperties),{plan:{serializedName:`plan`,type:{name:`Composite`,className:`Plan`}},properties:{serializedName:`properties`,type:{name:`Dictionary`,value:{type:{name:`any`}}}},kind:{constraints:{Pattern:RegExp(`^[-\\w\\._,\\(\\)]+$`)},serializedName:`kind`,type:{name:`String`}},managedBy:{serializedName:`managedBy`,type:{name:`String`}},sku:{serializedName:`sku`,type:{name:`Composite`,className:`Sku`}},identity:{serializedName:`identity`,type:{name:`Composite`,className:`Identity`}}})}},e.GenericResourceExpanded={type:{name:`Composite`,className:`GenericResourceExpanded`,modelProperties:Object.assign(Object.assign({},e.GenericResource.type.modelProperties),{createdTime:{serializedName:`createdTime`,readOnly:!0,type:{name:`DateTime`}},changedTime:{serializedName:`changedTime`,readOnly:!0,type:{name:`DateTime`}},provisioningState:{serializedName:`provisioningState`,readOnly:!0,type:{name:`String`}}})}},e.DeploymentsWhatIfAtTenantScopeHeaders={type:{name:`Composite`,className:`DeploymentsWhatIfAtTenantScopeHeaders`,modelProperties:{location:{serializedName:`location`,type:{name:`String`}},retryAfter:{serializedName:`retry-after`,type:{name:`String`}}}}},e.DeploymentsWhatIfAtManagementGroupScopeHeaders={type:{name:`Composite`,className:`DeploymentsWhatIfAtManagementGroupScopeHeaders`,modelProperties:{location:{serializedName:`location`,type:{name:`String`}},retryAfter:{serializedName:`retry-after`,type:{name:`String`}}}}},e.DeploymentsWhatIfAtSubscriptionScopeHeaders={type:{name:`Composite`,className:`DeploymentsWhatIfAtSubscriptionScopeHeaders`,modelProperties:{location:{serializedName:`location`,type:{name:`String`}},retryAfter:{serializedName:`retry-after`,type:{name:`String`}}}}},e.DeploymentsWhatIfHeaders={type:{name:`Composite`,className:`DeploymentsWhatIfHeaders`,modelProperties:{location:{serializedName:`location`,type:{name:`String`}},retryAfter:{serializedName:`retry-after`,type:{name:`String`}}}}},e.ResourceGroupsDeleteHeaders={type:{name:`Composite`,className:`ResourceGroupsDeleteHeaders`,modelProperties:{location:{serializedName:`location`,type:{name:`String`}}}}},e.TagsCreateOrUpdateAtScopeHeaders={type:{name:`Composite`,className:`TagsCreateOrUpdateAtScopeHeaders`,modelProperties:{location:{serializedName:`location`,type:{name:`String`}}}}},e.TagsUpdateAtScopeHeaders={type:{name:`Composite`,className:`TagsUpdateAtScopeHeaders`,modelProperties:{location:{serializedName:`location`,type:{name:`String`}}}}},e.TagsDeleteAtScopeHeaders={type:{name:`Composite`,className:`TagsDeleteAtScopeHeaders`,modelProperties:{location:{serializedName:`location`,type:{name:`String`}}}}}})),$o=s((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.operationId=e.parameters10=e.parameters9=e.tagValue=e.tagName=e.resourceGroupName1=e.parameters8=e.parameters7=e.forceDeletionTypes=e.parameters6=e.resourceId=e.parameters5=e.apiVersion1=e.resourceName=e.resourceType=e.parentResourcePath=e.sourceResourceGroupName=e.parameters4=e.expand=e.properties=e.resourceProviderNamespace=e.template=e.resourceGroupName=e.parameters3=e.subscriptionId=e.groupId=e.parameters2=e.parameters1=e.top=e.filter=e.parameters=e.contentType=e.deploymentName=e.scope=e.nextLink=e.apiVersion=e.$host=e.accept=void 0;let t=Qo();e.accept={parameterPath:`accept`,mapper:{defaultValue:`application/json`,isConstant:!0,serializedName:`Accept`,type:{name:`String`}}},e.$host={parameterPath:`$host`,mapper:{serializedName:`$host`,required:!0,type:{name:`String`}},skipEncoding:!0},e.apiVersion={parameterPath:`apiVersion`,mapper:{defaultValue:`2025-03-01`,isConstant:!0,serializedName:`api-version`,type:{name:`String`}}},e.nextLink={parameterPath:`nextLink`,mapper:{serializedName:`nextLink`,required:!0,type:{name:`String`}},skipEncoding:!0},e.scope={parameterPath:`scope`,mapper:{serializedName:`scope`,required:!0,type:{name:`String`}},skipEncoding:!0},e.deploymentName={parameterPath:`deploymentName`,mapper:{constraints:{Pattern:RegExp(`^[-\\w\\._\\(\\)]+$`),MaxLength:64,MinLength:1},serializedName:`deploymentName`,required:!0,type:{name:`String`}}},e.contentType={parameterPath:[`options`,`contentType`],mapper:{defaultValue:`application/json`,isConstant:!0,serializedName:`Content-Type`,type:{name:`String`}}},e.parameters={parameterPath:`parameters`,mapper:t.Deployment},e.filter={parameterPath:[`options`,`filter`],mapper:{serializedName:`$filter`,type:{name:`String`}}},e.top={parameterPath:[`options`,`top`],mapper:{serializedName:`$top`,type:{name:`Number`}}},e.parameters1={parameterPath:`parameters`,mapper:t.ScopedDeployment},e.parameters2={parameterPath:`parameters`,mapper:t.ScopedDeploymentWhatIf},e.groupId={parameterPath:`groupId`,mapper:{constraints:{MaxLength:90,MinLength:1},serializedName:`groupId`,required:!0,type:{name:`String`}}},e.subscriptionId={parameterPath:`subscriptionId`,mapper:{serializedName:`subscriptionId`,required:!0,type:{name:`String`}}},e.parameters3={parameterPath:`parameters`,mapper:t.DeploymentWhatIf},e.resourceGroupName={parameterPath:`resourceGroupName`,mapper:{constraints:{Pattern:RegExp(`^[-\\w\\._\\(\\)]+$`),MaxLength:90,MinLength:1},serializedName:`resourceGroupName`,required:!0,type:{name:`String`}}},e.template={parameterPath:`template`,mapper:{serializedName:`template`,required:!0,type:{name:`Dictionary`,value:{type:{name:`any`}}}}},e.resourceProviderNamespace={parameterPath:`resourceProviderNamespace`,mapper:{serializedName:`resourceProviderNamespace`,required:!0,type:{name:`String`}}},e.properties={parameterPath:[`options`,`properties`],mapper:t.ProviderRegistrationRequest},e.expand={parameterPath:[`options`,`expand`],mapper:{serializedName:`$expand`,type:{name:`String`}}},e.parameters4={parameterPath:`parameters`,mapper:t.ResourcesMoveInfo},e.sourceResourceGroupName={parameterPath:`sourceResourceGroupName`,mapper:{constraints:{Pattern:RegExp(`^[-\\w\\._\\(\\)]+$`),MaxLength:90,MinLength:1},serializedName:`sourceResourceGroupName`,required:!0,type:{name:`String`}}},e.parentResourcePath={parameterPath:`parentResourcePath`,mapper:{serializedName:`parentResourcePath`,required:!0,type:{name:`String`}},skipEncoding:!0},e.resourceType={parameterPath:`resourceType`,mapper:{serializedName:`resourceType`,required:!0,type:{name:`String`}},skipEncoding:!0},e.resourceName={parameterPath:`resourceName`,mapper:{serializedName:`resourceName`,required:!0,type:{name:`String`}}},e.apiVersion1={parameterPath:`apiVersion`,mapper:{serializedName:`api-version`,required:!0,type:{name:`String`}}},e.parameters5={parameterPath:`parameters`,mapper:t.GenericResource},e.resourceId={parameterPath:`resourceId`,mapper:{serializedName:`resourceId`,required:!0,type:{name:`String`}},skipEncoding:!0},e.parameters6={parameterPath:`parameters`,mapper:t.ResourceGroup},e.forceDeletionTypes={parameterPath:[`options`,`forceDeletionTypes`],mapper:{serializedName:`forceDeletionTypes`,type:{name:`String`}}},e.parameters7={parameterPath:`parameters`,mapper:t.ResourceGroupPatchable},e.parameters8={parameterPath:`parameters`,mapper:t.ExportTemplateRequest},e.resourceGroupName1={parameterPath:`resourceGroupName`,mapper:{constraints:{MaxLength:90,MinLength:1},serializedName:`resourceGroupName`,required:!0,type:{name:`String`}}},e.tagName={parameterPath:`tagName`,mapper:{serializedName:`tagName`,required:!0,type:{name:`String`}}},e.tagValue={parameterPath:`tagValue`,mapper:{serializedName:`tagValue`,required:!0,type:{name:`String`}}},e.parameters9={parameterPath:`parameters`,mapper:t.TagsResource},e.parameters10={parameterPath:`parameters`,mapper:t.TagsPatchResource},e.operationId={parameterPath:`operationId`,mapper:{serializedName:`operationId`,required:!0,type:{name:`String`}}}})),es=s((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.OperationsImpl=void 0;let t=(hi(),d(jr)),n=gi(),r=t.__importStar(Zo()),i=t.__importStar(Qo()),a=t.__importStar($o());e.OperationsImpl=class{constructor(e){this.client=e}list(e){let t=this.listPagingAll(e);return{next(){return t.next()},[Symbol.asyncIterator](){return this},byPage:t=>{if(t?.maxPageSize)throw Error(`maxPageSize is not supported by this operation.`);return this.listPagingPage(e,t)}}}listPagingPage(e,r){return t.__asyncGenerator(this,arguments,function*(){let i,a=r?.continuationToken;if(!a){i=yield t.__await(this._list(e));let r=i.value||[];a=i.nextLink,(0,n.setContinuationToken)(r,a),yield yield t.__await(r)}for(;a;){i=yield t.__await(this._listNext(a,e)),a=i.nextLink;let r=i.value||[];(0,n.setContinuationToken)(r,a),yield yield t.__await(r)}})}listPagingAll(e){return t.__asyncGenerator(this,arguments,function*(){var n,r,i,a;try{for(var o=!0,s=t.__asyncValues(this.listPagingPage(e)),c;c=yield t.__await(s.next()),n=c.done,!n;o=!0){a=c.value,o=!1;let e=a;yield t.__await(yield*t.__asyncDelegator(t.__asyncValues(e)))}}catch(e){r={error:e}}finally{try{!o&&!n&&(i=s.return)&&(yield t.__await(i.call(s)))}finally{if(r)throw r.error}}})}_list(e){return this.client.sendOperationRequest({options:e},s)}_listNext(e,t){return this.client.sendOperationRequest({nextLink:e,options:t},c)}};let o=r.createSerializer(i,!1),s={path:`/providers/Microsoft.Resources/operations`,httpMethod:`GET`,responses:{200:{bodyMapper:i.OperationListResult},default:{bodyMapper:i.CloudError}},queryParameters:[a.apiVersion],urlParameters:[a.$host],headerParameters:[a.accept],serializer:o},c={path:`{nextLink}`,httpMethod:`GET`,responses:{200:{bodyMapper:i.OperationListResult},default:{bodyMapper:i.CloudError}},urlParameters:[a.$host,a.nextLink],headerParameters:[a.accept],serializer:o}})),ts=s((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.logger=void 0,e.logger=(0,za().createClientLogger)(`core-lro`)})),ns=s((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.terminalStates=e.POLL_INTERVAL_IN_MS=void 0,e.POLL_INTERVAL_IN_MS=2e3,e.terminalStates=[`succeeded`,`canceled`,`failed`]})),rs=s((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.pollOperation=e.initOperation=e.deserializeState=void 0;let t=ts(),n=ns();function r(e){try{return JSON.parse(e).state}catch{throw Error(`Unable to deserialize input state: ${e}`)}}e.deserializeState=r;function i(e){let{state:t,stateProxy:n,isOperationError:r}=e;return e=>{throw r(e)&&(n.setError(t,e),n.setFailed(t)),e}}function a(e,t){let n=e;return n.slice(-1)!==`.`&&(n+=`.`),n+` `+t}function o(e){let t=e.message,n=e.code,r=e;for(;r.innererror;)r=r.innererror,n=r.code,t=a(t,r.message);return{code:n,message:t}}function s(e){let{state:n,stateProxy:r,status:i,isDone:a,processResult:s,getError:l,response:u,setErrorAsResult:d}=e;switch(i){case`succeeded`:r.setSucceeded(n);break;case`failed`:{let e=l?.(u),i=``;if(e){let{code:t,message:n}=o(e);i=`. ${t}. ${n}`}let a=`The long-running operation has failed${i}`;r.setError(n,Error(a)),r.setFailed(n),t.logger.warning(a);break}case`canceled`:r.setCanceled(n);break}(a?.(u,n)||a===void 0&&[`succeeded`,`canceled`].concat(d?[]:[`failed`]).includes(i))&&r.setResult(n,c({response:u,state:n,processResult:s}))}function c(e){let{processResult:t,response:n,state:r}=e;return t?t(n,r):n}async function l(e){let{init:n,stateProxy:r,processResult:i,getOperationStatus:a,withOperationLocation:o,setErrorAsResult:c}=e,{operationLocation:l,resourceLocation:u,metadata:d,response:f}=await n();l&&o?.(l,!1);let p={metadata:d,operationLocation:l,resourceLocation:u};t.logger.verbose(`LRO: Operation description:`,p);let m=r.initState(p);return s({state:m,status:a({response:f,state:m,operationLocation:l}),stateProxy:r,response:f,setErrorAsResult:c,processResult:i}),m}e.initOperation=l;async function u(e){let{poll:r,state:a,stateProxy:o,operationLocation:s,getOperationStatus:c,getResourceLocation:l,isOperationError:u,options:d}=e,f=await r(s,d).catch(i({state:a,stateProxy:o,isOperationError:u})),p=c(f,a);if(t.logger.verbose(`LRO: Status:\n\tPolling from: ${a.config.operationLocation}\n\tOperation status: ${p}\n\tPolling status: ${n.terminalStates.includes(p)?`Stopped`:`Running`}`),p===`succeeded`){let e=l(f,a);if(e!==void 0)return{response:await r(e).catch(i({state:a,stateProxy:o,isOperationError:u})),status:p}}return{response:f,status:p}}async function d(e){let{poll:t,state:r,stateProxy:i,options:a,getOperationStatus:o,getResourceLocation:c,getOperationLocation:l,isOperationError:d,withOperationLocation:f,getPollingInterval:p,processResult:m,getError:h,updateState:g,setDelay:_,isDone:v,setErrorAsResult:y}=e,{operationLocation:b}=r.config;if(b!==void 0){let{response:e,status:x}=await u({poll:t,getOperationStatus:o,state:r,stateProxy:i,operationLocation:b,getResourceLocation:c,isOperationError:d,options:a});if(s({status:x,response:e,state:r,stateProxy:i,isDone:v,processResult:m,getError:h,setErrorAsResult:y}),!n.terminalStates.includes(x)){let t=p?.(e);t&&_(t);let n=l?.(e,r);if(n!==void 0){let e=b!==n;r.config.operationLocation=n,f?.(n,e)}else f?.(b,!1)}g?.(r,e)}}e.pollOperation=d})),is=s((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.pollHttpOperation=e.isOperationError=e.getResourceLocation=e.getOperationStatus=e.getOperationLocation=e.initHttpOperation=e.getStatusFromInitialResponse=e.getErrorFromResponse=e.parseRetryAfter=e.inferLroMode=void 0;let t=rs(),n=ts();function r(e){let{azureAsyncOperation:t,operationLocation:n}=e;return n??t}function i(e){return e.headers.location}function a(e){return e.headers[`operation-location`]}function o(e){return e.headers[`azure-asyncoperation`]}function s(e){let{location:t,requestMethod:n,requestPath:r,resourceLocationConfig:i}=e;switch(n){case`PUT`:return r;case`DELETE`:return;case`PATCH`:return a()??r;default:return a()}function a(){switch(i){case`azure-async-operation`:return;case`original-uri`:return r;case`location`:default:return t}}}function c(e){let{rawResponse:t,requestMethod:n,requestPath:c,resourceLocationConfig:l}=e,u=r({operationLocation:a(t),azureAsyncOperation:o(t)}),d=i(t),f=n?.toLocaleUpperCase();if(u!==void 0)return{mode:`OperationLocation`,operationLocation:u,resourceLocation:s({requestMethod:f,location:d,requestPath:c,resourceLocationConfig:l})};if(d!==void 0)return{mode:`ResourceLocation`,operationLocation:d};if(f===`PUT`&&c)return{mode:`Body`,operationLocation:c}}e.inferLroMode=c;function l(e){let{status:t,statusCode:r}=e;if(typeof t!=`string`&&t!==void 0)throw Error(`Polling was unsuccessful. Expected status to have a string value or no value but it has instead: ${t}. This doesn't necessarily indicate the operation has failed. Check your Azure subscription or resource status for more information.`);switch(t?.toLocaleLowerCase()){case void 0:return f(r);case`succeeded`:return`succeeded`;case`failed`:return`failed`;case`running`:case`accepted`:case`started`:case`canceling`:case`cancelling`:return`running`;case`canceled`:case`cancelled`:return`canceled`;default:return n.logger.verbose(`LRO: unrecognized operation status: ${t}`),t}}function u(e){let{status:t}=e.body??{};return l({status:t,statusCode:e.statusCode})}function d(e){let{properties:t,provisioningState:n}=e.body??{};return l({status:t?.provisioningState??n,statusCode:e.statusCode})}function f(e){return e===202?`running`:e<300?`succeeded`:`failed`}function p({rawResponse:e}){let t=e.headers[`retry-after`];if(t!==void 0){let e=parseInt(t);return isNaN(e)?h(new Date(t)):e*1e3}}e.parseRetryAfter=p;function m(e){let t=b(e,`error`);if(!t){n.logger.warning(`The long-running operation failed but there is no error property in the response's body`);return}if(!t.code||!t.message){n.logger.warning(`The long-running operation failed but the error property in the response's body doesn't contain code or message`);return}return t}e.getErrorFromResponse=m;function h(e){let t=Math.floor(new Date().getTime()),n=e.getTime();if(t{let e=await a.sendInitialRequest(),t=c({rawResponse:e.rawResponse,requestPath:a.requestPath,requestMethod:a.requestMethod,resourceLocationConfig:r});return Object.assign({response:e,operationLocation:t?.operationLocation,resourceLocation:t?.resourceLocation},t?.mode?{metadata:{mode:t.mode}}:{})},stateProxy:n,processResult:i?({flatResponse:e},t)=>i(e,t):({flatResponse:e})=>e,getOperationStatus:g,setErrorAsResult:o})}e.initHttpOperation=_;function v({rawResponse:e},t){switch(t.config.metadata?.mode){case`OperationLocation`:return r({operationLocation:a(e),azureAsyncOperation:o(e)});case`ResourceLocation`:return i(e);case`Body`:default:return}}e.getOperationLocation=v;function y({rawResponse:e},t){let n=t.config.metadata?.mode;switch(n){case`OperationLocation`:return u(e);case`ResourceLocation`:return f(e.statusCode);case`Body`:return d(e);default:throw Error(`Internal error: Unexpected operation mode: ${n}`)}}e.getOperationStatus=y;function b({flatResponse:e,rawResponse:t},n){return e?.[n]??t.body?.[n]}function x(e,t){let n=b(e,`resourceLocation`);return n&&typeof n==`string`&&(t.config.resourceLocation=n),t.config.resourceLocation}e.getResourceLocation=x;function S(e){return e.name===`RestError`}e.isOperationError=S;async function C(e){let{lro:n,stateProxy:r,options:i,processResult:a,updateState:o,setDelay:s,state:c,setErrorAsResult:l}=e;return(0,t.pollOperation)({state:c,stateProxy:r,setDelay:s,processResult:a?({flatResponse:e},t)=>a(e,t):({flatResponse:e})=>e,getError:m,updateState:o,getPollingInterval:p,getOperationLocation:v,getOperationStatus:y,isOperationError:S,getResourceLocation:x,options:i,poll:async(e,t)=>n.sendPollRequest(e,t),setErrorAsResult:l})}e.pollHttpOperation=C})),as=s((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.buildCreatePoller=void 0;let t=rs(),n=ns(),r=oo(),i=()=>({initState:e=>({status:`running`,config:e}),setCanceled:e=>e.status=`canceled`,setError:(e,t)=>e.error=t,setResult:(e,t)=>e.result=t,setRunning:e=>e.status=`running`,setSucceeded:e=>e.status=`succeeded`,setFailed:e=>e.status=`failed`,getError:e=>e.error,getResult:e=>e.result,isCanceled:e=>e.status===`canceled`,isFailed:e=>e.status===`failed`,isRunning:e=>e.status===`running`,isSucceeded:e=>e.status===`succeeded`});function a(e){let{getOperationLocation:a,getStatusFromInitialResponse:o,getStatusFromPollResponse:s,isOperationError:c,getResourceLocation:l,getPollingInterval:u,getError:d,resolveOnUnsuccessful:f}=e;return async({init:e,poll:p},m)=>{let{processResult:h,updateState:g,withOperationLocation:_,intervalInMs:v=n.POLL_INTERVAL_IN_MS,restoreFrom:y}=m||{},b=i(),x=_?(()=>{let e=!1;return(t,n)=>{n?_(t):e||_(t),e=!0}})():void 0,S=y?(0,t.deserializeState)(y):await(0,t.initOperation)({init:e,stateProxy:b,processResult:h,getOperationStatus:o,withOperationLocation:x,setErrorAsResult:!f}),C,w=new AbortController,T=new Map,E=async()=>T.forEach(e=>e(S)),D=`Operation was canceled`,O=v,k={getOperationState:()=>S,getResult:()=>S.result,isDone:()=>[`succeeded`,`failed`,`canceled`].includes(S.status),isStopped:()=>C===void 0,stopPolling:()=>{w.abort()},toString:()=>JSON.stringify({state:S}),onProgress:e=>{let t=Symbol();return T.set(t,e),()=>T.delete(t)},pollUntilDone:e=>C??=(async()=>{let{abortSignal:t}=e||{};function n(){w.abort()}let i=w.signal;t?.aborted?w.abort():i.aborted||t?.addEventListener(`abort`,n,{once:!0});try{if(!k.isDone())for(await k.poll({abortSignal:i});!k.isDone();)await(0,r.delay)(O,{abortSignal:i}),await k.poll({abortSignal:i})}finally{t?.removeEventListener(`abort`,n)}if(f)return k.getResult();switch(S.status){case`succeeded`:return k.getResult();case`canceled`:throw Error(D);case`failed`:throw S.error;case`notStarted`:case`running`:throw Error(`Polling completed without succeeding or failing`)}})().finally(()=>{C=void 0}),async poll(e){if(f){if(k.isDone())return}else switch(S.status){case`succeeded`:return;case`canceled`:throw Error(D);case`failed`:throw S.error}if(await(0,t.pollOperation)({poll:p,state:S,stateProxy:b,getOperationLocation:a,isOperationError:c,withOperationLocation:x,getPollingInterval:u,getOperationStatus:s,getResourceLocation:l,processResult:h,getError:d,updateState:g,options:e,setDelay:e=>{O=e},setErrorAsResult:!f}),await E(),!f)switch(S.status){case`canceled`:throw Error(D);case`failed`:throw S.error}}};return k}}e.buildCreatePoller=a})),os=s((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.createHttpPoller=void 0;let t=is(),n=as();async function r(e,r){let{resourceLocationConfig:i,intervalInMs:a,processResult:o,restoreFrom:s,updateState:c,withOperationLocation:l,resolveOnUnsuccessful:u=!1}=r||{};return(0,n.buildCreatePoller)({getStatusFromInitialResponse:t.getStatusFromInitialResponse,getStatusFromPollResponse:t.getOperationStatus,isOperationError:t.isOperationError,getOperationLocation:t.getOperationLocation,getResourceLocation:t.getResourceLocation,getPollingInterval:t.parseRetryAfter,getError:t.getErrorFromResponse,resolveOnUnsuccessful:u})({init:async()=>{let n=await e.sendInitialRequest(),r=(0,t.inferLroMode)({rawResponse:n.rawResponse,requestPath:e.requestPath,requestMethod:e.requestMethod,resourceLocationConfig:i});return Object.assign({response:n,operationLocation:r?.operationLocation,resourceLocation:r?.resourceLocation},r?.mode?{metadata:{mode:r.mode}}:{})},poll:e.sendPollRequest},{intervalInMs:a,withOperationLocation:l,restoreFrom:s,updateState:c,processResult:o?({flatResponse:e},t)=>o(e,t):({flatResponse:e})=>e})}e.createHttpPoller=r})),ss=s((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.GenericPollOperation=void 0;let t=is(),n=ts(),r=()=>({initState:e=>({config:e,isStarted:!0}),setCanceled:e=>e.isCancelled=!0,setError:(e,t)=>e.error=t,setResult:(e,t)=>e.result=t,setRunning:e=>e.isStarted=!0,setSucceeded:e=>e.isCompleted=!0,setFailed:()=>{},getError:e=>e.error,getResult:e=>e.result,isCanceled:e=>!!e.isCancelled,isFailed:e=>!!e.error,isRunning:e=>!!e.isStarted,isSucceeded:e=>!!(e.isCompleted&&!e.isCancelled&&!e.error)});e.GenericPollOperation=class{constructor(e,t,n,r,i,a,o){this.state=e,this.lro=t,this.setErrorAsResult=n,this.lroResourceLocationConfig=r,this.processResult=i,this.updateState=a,this.isDone=o}setPollerConfig(e){this.pollerConfig=e}async update(e){var n;let i=r();this.state.isStarted||(this.state=Object.assign(Object.assign({},this.state),await(0,t.initHttpOperation)({lro:this.lro,stateProxy:i,resourceLocationConfig:this.lroResourceLocationConfig,processResult:this.processResult,setErrorAsResult:this.setErrorAsResult})));let a=this.updateState,o=this.isDone;return!this.state.isCompleted&&this.state.error===void 0&&await(0,t.pollHttpOperation)({lro:this.lro,state:this.state,stateProxy:i,processResult:this.processResult,updateState:a?(e,{rawResponse:t})=>a(e,t):void 0,isDone:o?({flatResponse:e},t)=>o(e,t):void 0,options:e,setDelay:e=>{this.pollerConfig.intervalInMs=e},setErrorAsResult:this.setErrorAsResult}),(n=e?.fireProgress)==null||n.call(e,this.state),this}async cancel(){return n.logger.error("`cancelOperation` is deprecated because it wasn't implemented"),this}toString(){return JSON.stringify({state:this.state})}}})),cs=s((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.Poller=e.PollerCancelledError=e.PollerStoppedError=void 0;var t=class e extends Error{constructor(t){super(t),this.name=`PollerStoppedError`,Object.setPrototypeOf(this,e.prototype)}};e.PollerStoppedError=t;var n=class e extends Error{constructor(t){super(t),this.name=`PollerCancelledError`,Object.setPrototypeOf(this,e.prototype)}};e.PollerCancelledError=n,e.Poller=class{constructor(e){this.resolveOnUnsuccessful=!1,this.stopped=!0,this.pollProgressCallbacks=[],this.operation=e,this.promise=new Promise((e,t)=>{this.resolve=e,this.reject=t}),this.promise.catch(()=>{})}async startPolling(e={}){for(this.stopped&&=!1;!this.isStopped()&&!this.isDone();)await this.poll(e),await this.delay()}async pollOnce(e={}){this.isDone()||(this.operation=await this.operation.update({abortSignal:e.abortSignal,fireProgress:this.fireProgress.bind(this)})),this.processUpdatedState()}fireProgress(e){for(let t of this.pollProgressCallbacks)t(e)}async cancelOnce(e={}){this.operation=await this.operation.cancel(e)}poll(e={}){if(!this.pollOncePromise){this.pollOncePromise=this.pollOnce(e);let t=()=>{this.pollOncePromise=void 0};this.pollOncePromise.then(t,t).catch(this.reject)}return this.pollOncePromise}processUpdatedState(){if(this.operation.state.error&&(this.stopped=!0,!this.resolveOnUnsuccessful))throw this.reject(this.operation.state.error),this.operation.state.error;if(this.operation.state.isCancelled&&(this.stopped=!0,!this.resolveOnUnsuccessful)){let e=new n(`Operation was canceled`);throw this.reject(e),e}this.isDone()&&this.resolve&&this.resolve(this.getResult())}async pollUntilDone(e={}){return this.stopped&&this.startPolling(e).catch(this.reject),this.processUpdatedState(),this.promise}onProgress(e){return this.pollProgressCallbacks.push(e),()=>{this.pollProgressCallbacks=this.pollProgressCallbacks.filter(t=>t!==e)}}isDone(){let e=this.operation.state;return!!(e.isCompleted||e.isCancelled||e.error)}stopPolling(){this.stopped||(this.stopped=!0,this.reject&&this.reject(new t(`This poller is already stopped`)))}isStopped(){return this.stopped}cancelOperation(e={}){if(!this.cancelPromise)this.cancelPromise=this.cancelOnce(e);else if(e.abortSignal)throw Error(`A cancel request is currently pending`);return this.cancelPromise}getOperationState(){return this.operation.state}getResult(){return this.operation.state.result}toString(){return this.operation.toString()}}})),ls=s((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.LroEngine=void 0;let t=ss(),n=ns(),r=cs(),i=rs();e.LroEngine=class extends r.Poller{constructor(e,r){let{intervalInMs:a=n.POLL_INTERVAL_IN_MS,resumeFrom:o,resolveOnUnsuccessful:s=!1,isDone:c,lroResourceLocationConfig:l,processResult:u,updateState:d}=r||{},f=o?(0,i.deserializeState)(o):{},p=new t.GenericPollOperation(f,e,!s,l,u,d,c);super(p),this.resolveOnUnsuccessful=s,this.config={intervalInMs:a},p.setPollerConfig(this.config)}delay(){return new Promise(e=>setTimeout(()=>e(),this.config.intervalInMs))}}})),us=s((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.LroEngine=void 0;var t=ls();Object.defineProperty(e,`LroEngine`,{enumerable:!0,get:function(){return t.LroEngine}})})),ds=s((e=>{Object.defineProperty(e,`__esModule`,{value:!0})})),fs=s((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.createHttpPoller=void 0;let t=(hi(),d(jr));var n=os();Object.defineProperty(e,`createHttpPoller`,{enumerable:!0,get:function(){return n.createHttpPoller}}),t.__exportStar(us(),e),t.__exportStar(cs(),e),t.__exportStar(ds(),e)})),ps=s((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.createLroSpec=n;let t=(hi(),d(jr));function n(e){let{args:n,spec:r,sendOperationFn:i}=e;return{requestMethod:r.httpMethod,requestPath:r.path,sendInitialRequest:()=>i(n,r),sendPollRequest:(e,a)=>{let{requestBody:o}=r,s=t.__rest(r,[`requestBody`]);return i(n,Object.assign(Object.assign({},s),{httpMethod:`GET`,path:e,abortSignal:a?.abortSignal}))}}}})),ms=s((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.DeploymentsImpl=void 0;let t=(hi(),d(jr)),n=gi(),r=t.__importStar(Zo()),i=t.__importStar(Qo()),a=t.__importStar($o()),o=fs(),s=ps();e.DeploymentsImpl=class{constructor(e){this.client=e}listAtScope(e,t){let n=this.listAtScopePagingAll(e,t);return{next(){return n.next()},[Symbol.asyncIterator](){return this},byPage:n=>{if(n?.maxPageSize)throw Error(`maxPageSize is not supported by this operation.`);return this.listAtScopePagingPage(e,t,n)}}}listAtScopePagingPage(e,r,i){return t.__asyncGenerator(this,arguments,function*(){let a,o=i?.continuationToken;if(!o){a=yield t.__await(this._listAtScope(e,r));let i=a.value||[];o=a.nextLink,(0,n.setContinuationToken)(i,o),yield yield t.__await(i)}for(;o;){a=yield t.__await(this._listAtScopeNext(e,o,r)),o=a.nextLink;let i=a.value||[];(0,n.setContinuationToken)(i,o),yield yield t.__await(i)}})}listAtScopePagingAll(e,n){return t.__asyncGenerator(this,arguments,function*(){var r,i,a,o;try{for(var s=!0,c=t.__asyncValues(this.listAtScopePagingPage(e,n)),l;l=yield t.__await(c.next()),r=l.done,!r;s=!0){o=l.value,s=!1;let e=o;yield t.__await(yield*t.__asyncDelegator(t.__asyncValues(e)))}}catch(e){i={error:e}}finally{try{!s&&!r&&(a=c.return)&&(yield t.__await(a.call(c)))}finally{if(i)throw i.error}}})}listAtTenantScope(e){let t=this.listAtTenantScopePagingAll(e);return{next(){return t.next()},[Symbol.asyncIterator](){return this},byPage:t=>{if(t?.maxPageSize)throw Error(`maxPageSize is not supported by this operation.`);return this.listAtTenantScopePagingPage(e,t)}}}listAtTenantScopePagingPage(e,r){return t.__asyncGenerator(this,arguments,function*(){let i,a=r?.continuationToken;if(!a){i=yield t.__await(this._listAtTenantScope(e));let r=i.value||[];a=i.nextLink,(0,n.setContinuationToken)(r,a),yield yield t.__await(r)}for(;a;){i=yield t.__await(this._listAtTenantScopeNext(a,e)),a=i.nextLink;let r=i.value||[];(0,n.setContinuationToken)(r,a),yield yield t.__await(r)}})}listAtTenantScopePagingAll(e){return t.__asyncGenerator(this,arguments,function*(){var n,r,i,a;try{for(var o=!0,s=t.__asyncValues(this.listAtTenantScopePagingPage(e)),c;c=yield t.__await(s.next()),n=c.done,!n;o=!0){a=c.value,o=!1;let e=a;yield t.__await(yield*t.__asyncDelegator(t.__asyncValues(e)))}}catch(e){r={error:e}}finally{try{!o&&!n&&(i=s.return)&&(yield t.__await(i.call(s)))}finally{if(r)throw r.error}}})}listAtManagementGroupScope(e,t){let n=this.listAtManagementGroupScopePagingAll(e,t);return{next(){return n.next()},[Symbol.asyncIterator](){return this},byPage:n=>{if(n?.maxPageSize)throw Error(`maxPageSize is not supported by this operation.`);return this.listAtManagementGroupScopePagingPage(e,t,n)}}}listAtManagementGroupScopePagingPage(e,r,i){return t.__asyncGenerator(this,arguments,function*(){let a,o=i?.continuationToken;if(!o){a=yield t.__await(this._listAtManagementGroupScope(e,r));let i=a.value||[];o=a.nextLink,(0,n.setContinuationToken)(i,o),yield yield t.__await(i)}for(;o;){a=yield t.__await(this._listAtManagementGroupScopeNext(e,o,r)),o=a.nextLink;let i=a.value||[];(0,n.setContinuationToken)(i,o),yield yield t.__await(i)}})}listAtManagementGroupScopePagingAll(e,n){return t.__asyncGenerator(this,arguments,function*(){var r,i,a,o;try{for(var s=!0,c=t.__asyncValues(this.listAtManagementGroupScopePagingPage(e,n)),l;l=yield t.__await(c.next()),r=l.done,!r;s=!0){o=l.value,s=!1;let e=o;yield t.__await(yield*t.__asyncDelegator(t.__asyncValues(e)))}}catch(e){i={error:e}}finally{try{!s&&!r&&(a=c.return)&&(yield t.__await(a.call(c)))}finally{if(i)throw i.error}}})}listAtSubscriptionScope(e){let t=this.listAtSubscriptionScopePagingAll(e);return{next(){return t.next()},[Symbol.asyncIterator](){return this},byPage:t=>{if(t?.maxPageSize)throw Error(`maxPageSize is not supported by this operation.`);return this.listAtSubscriptionScopePagingPage(e,t)}}}listAtSubscriptionScopePagingPage(e,r){return t.__asyncGenerator(this,arguments,function*(){let i,a=r?.continuationToken;if(!a){i=yield t.__await(this._listAtSubscriptionScope(e));let r=i.value||[];a=i.nextLink,(0,n.setContinuationToken)(r,a),yield yield t.__await(r)}for(;a;){i=yield t.__await(this._listAtSubscriptionScopeNext(a,e)),a=i.nextLink;let r=i.value||[];(0,n.setContinuationToken)(r,a),yield yield t.__await(r)}})}listAtSubscriptionScopePagingAll(e){return t.__asyncGenerator(this,arguments,function*(){var n,r,i,a;try{for(var o=!0,s=t.__asyncValues(this.listAtSubscriptionScopePagingPage(e)),c;c=yield t.__await(s.next()),n=c.done,!n;o=!0){a=c.value,o=!1;let e=a;yield t.__await(yield*t.__asyncDelegator(t.__asyncValues(e)))}}catch(e){r={error:e}}finally{try{!o&&!n&&(i=s.return)&&(yield t.__await(i.call(s)))}finally{if(r)throw r.error}}})}listByResourceGroup(e,t){let n=this.listByResourceGroupPagingAll(e,t);return{next(){return n.next()},[Symbol.asyncIterator](){return this},byPage:n=>{if(n?.maxPageSize)throw Error(`maxPageSize is not supported by this operation.`);return this.listByResourceGroupPagingPage(e,t,n)}}}listByResourceGroupPagingPage(e,r,i){return t.__asyncGenerator(this,arguments,function*(){let a,o=i?.continuationToken;if(!o){a=yield t.__await(this._listByResourceGroup(e,r));let i=a.value||[];o=a.nextLink,(0,n.setContinuationToken)(i,o),yield yield t.__await(i)}for(;o;){a=yield t.__await(this._listByResourceGroupNext(e,o,r)),o=a.nextLink;let i=a.value||[];(0,n.setContinuationToken)(i,o),yield yield t.__await(i)}})}listByResourceGroupPagingAll(e,n){return t.__asyncGenerator(this,arguments,function*(){var r,i,a,o;try{for(var s=!0,c=t.__asyncValues(this.listByResourceGroupPagingPage(e,n)),l;l=yield t.__await(c.next()),r=l.done,!r;s=!0){o=l.value,s=!1;let e=o;yield t.__await(yield*t.__asyncDelegator(t.__asyncValues(e)))}}catch(e){i={error:e}}finally{try{!s&&!r&&(a=c.return)&&(yield t.__await(a.call(c)))}finally{if(i)throw i.error}}})}async beginDeleteAtScope(e,t,n){let r=async(e,t)=>this.client.sendOperationRequest(e,t),i=(0,s.createLroSpec)({sendOperationFn:async(e,t)=>{let n,i=e.options?.onResponse;return{flatResponse:await r(Object.assign(Object.assign({},e),{options:Object.assign(Object.assign({},e.options),{onResponse:(e,t)=>{n=e,i?.(e,t)}})}),t),rawResponse:{statusCode:n.status,body:n.parsedBody,headers:n.headers.toJSON()}}},args:{scope:e,deploymentName:t,options:n},spec:l}),a=await(0,o.createHttpPoller)(i,{restoreFrom:n?.resumeFrom,intervalInMs:n?.updateIntervalInMs});return await a.poll(),a}async beginDeleteAtScopeAndWait(e,t,n){return(await this.beginDeleteAtScope(e,t,n)).pollUntilDone()}checkExistenceAtScope(e,t,n){return this.client.sendOperationRequest({scope:e,deploymentName:t,options:n},u)}async beginCreateOrUpdateAtScope(e,t,n,r){let i=async(e,t)=>this.client.sendOperationRequest(e,t),a=(0,s.createLroSpec)({sendOperationFn:async(e,t)=>{let n,r=e.options?.onResponse;return{flatResponse:await i(Object.assign(Object.assign({},e),{options:Object.assign(Object.assign({},e.options),{onResponse:(e,t)=>{n=e,r?.(e,t)}})}),t),rawResponse:{statusCode:n.status,body:n.parsedBody,headers:n.headers.toJSON()}}},args:{scope:e,deploymentName:t,parameters:n,options:r},spec:f}),c=await(0,o.createHttpPoller)(a,{restoreFrom:r?.resumeFrom,intervalInMs:r?.updateIntervalInMs});return await c.poll(),c}async beginCreateOrUpdateAtScopeAndWait(e,t,n,r){return(await this.beginCreateOrUpdateAtScope(e,t,n,r)).pollUntilDone()}getAtScope(e,t,n){return this.client.sendOperationRequest({scope:e,deploymentName:t,options:n},p)}cancelAtScope(e,t,n){return this.client.sendOperationRequest({scope:e,deploymentName:t,options:n},m)}async beginValidateAtScope(e,t,n,r){let i=async(e,t)=>this.client.sendOperationRequest(e,t),a=(0,s.createLroSpec)({sendOperationFn:async(e,t)=>{let n,r=e.options?.onResponse;return{flatResponse:await i(Object.assign(Object.assign({},e),{options:Object.assign(Object.assign({},e.options),{onResponse:(e,t)=>{n=e,r?.(e,t)}})}),t),rawResponse:{statusCode:n.status,body:n.parsedBody,headers:n.headers.toJSON()}}},args:{scope:e,deploymentName:t,parameters:n,options:r},spec:h}),c=await(0,o.createHttpPoller)(a,{restoreFrom:r?.resumeFrom,intervalInMs:r?.updateIntervalInMs});return await c.poll(),c}async beginValidateAtScopeAndWait(e,t,n,r){return(await this.beginValidateAtScope(e,t,n,r)).pollUntilDone()}exportTemplateAtScope(e,t,n){return this.client.sendOperationRequest({scope:e,deploymentName:t,options:n},g)}_listAtScope(e,t){return this.client.sendOperationRequest({scope:e,options:t},_)}async beginDeleteAtTenantScope(e,t){let n=async(e,t)=>this.client.sendOperationRequest(e,t),r=(0,s.createLroSpec)({sendOperationFn:async(e,t)=>{let r,i=e.options?.onResponse;return{flatResponse:await n(Object.assign(Object.assign({},e),{options:Object.assign(Object.assign({},e.options),{onResponse:(e,t)=>{r=e,i?.(e,t)}})}),t),rawResponse:{statusCode:r.status,body:r.parsedBody,headers:r.headers.toJSON()}}},args:{deploymentName:e,options:t},spec:v}),i=await(0,o.createHttpPoller)(r,{restoreFrom:t?.resumeFrom,intervalInMs:t?.updateIntervalInMs});return await i.poll(),i}async beginDeleteAtTenantScopeAndWait(e,t){return(await this.beginDeleteAtTenantScope(e,t)).pollUntilDone()}checkExistenceAtTenantScope(e,t){return this.client.sendOperationRequest({deploymentName:e,options:t},y)}async beginCreateOrUpdateAtTenantScope(e,t,n){let r=async(e,t)=>this.client.sendOperationRequest(e,t),i=(0,s.createLroSpec)({sendOperationFn:async(e,t)=>{let n,i=e.options?.onResponse;return{flatResponse:await r(Object.assign(Object.assign({},e),{options:Object.assign(Object.assign({},e.options),{onResponse:(e,t)=>{n=e,i?.(e,t)}})}),t),rawResponse:{statusCode:n.status,body:n.parsedBody,headers:n.headers.toJSON()}}},args:{deploymentName:e,parameters:t,options:n},spec:b}),a=await(0,o.createHttpPoller)(i,{restoreFrom:n?.resumeFrom,intervalInMs:n?.updateIntervalInMs});return await a.poll(),a}async beginCreateOrUpdateAtTenantScopeAndWait(e,t,n){return(await this.beginCreateOrUpdateAtTenantScope(e,t,n)).pollUntilDone()}getAtTenantScope(e,t){return this.client.sendOperationRequest({deploymentName:e,options:t},x)}cancelAtTenantScope(e,t){return this.client.sendOperationRequest({deploymentName:e,options:t},S)}async beginValidateAtTenantScope(e,t,n){let r=async(e,t)=>this.client.sendOperationRequest(e,t),i=(0,s.createLroSpec)({sendOperationFn:async(e,t)=>{let n,i=e.options?.onResponse;return{flatResponse:await r(Object.assign(Object.assign({},e),{options:Object.assign(Object.assign({},e.options),{onResponse:(e,t)=>{n=e,i?.(e,t)}})}),t),rawResponse:{statusCode:n.status,body:n.parsedBody,headers:n.headers.toJSON()}}},args:{deploymentName:e,parameters:t,options:n},spec:C}),a=await(0,o.createHttpPoller)(i,{restoreFrom:n?.resumeFrom,intervalInMs:n?.updateIntervalInMs});return await a.poll(),a}async beginValidateAtTenantScopeAndWait(e,t,n){return(await this.beginValidateAtTenantScope(e,t,n)).pollUntilDone()}async beginWhatIfAtTenantScope(e,t,n){let r=async(e,t)=>this.client.sendOperationRequest(e,t),i=(0,s.createLroSpec)({sendOperationFn:async(e,t)=>{let n,i=e.options?.onResponse;return{flatResponse:await r(Object.assign(Object.assign({},e),{options:Object.assign(Object.assign({},e.options),{onResponse:(e,t)=>{n=e,i?.(e,t)}})}),t),rawResponse:{statusCode:n.status,body:n.parsedBody,headers:n.headers.toJSON()}}},args:{deploymentName:e,parameters:t,options:n},spec:w}),a=await(0,o.createHttpPoller)(i,{restoreFrom:n?.resumeFrom,intervalInMs:n?.updateIntervalInMs,resourceLocationConfig:`location`});return await a.poll(),a}async beginWhatIfAtTenantScopeAndWait(e,t,n){return(await this.beginWhatIfAtTenantScope(e,t,n)).pollUntilDone()}exportTemplateAtTenantScope(e,t){return this.client.sendOperationRequest({deploymentName:e,options:t},T)}_listAtTenantScope(e){return this.client.sendOperationRequest({options:e},E)}async beginDeleteAtManagementGroupScope(e,t,n){let r=async(e,t)=>this.client.sendOperationRequest(e,t),i=(0,s.createLroSpec)({sendOperationFn:async(e,t)=>{let n,i=e.options?.onResponse;return{flatResponse:await r(Object.assign(Object.assign({},e),{options:Object.assign(Object.assign({},e.options),{onResponse:(e,t)=>{n=e,i?.(e,t)}})}),t),rawResponse:{statusCode:n.status,body:n.parsedBody,headers:n.headers.toJSON()}}},args:{groupId:e,deploymentName:t,options:n},spec:D}),a=await(0,o.createHttpPoller)(i,{restoreFrom:n?.resumeFrom,intervalInMs:n?.updateIntervalInMs});return await a.poll(),a}async beginDeleteAtManagementGroupScopeAndWait(e,t,n){return(await this.beginDeleteAtManagementGroupScope(e,t,n)).pollUntilDone()}checkExistenceAtManagementGroupScope(e,t,n){return this.client.sendOperationRequest({groupId:e,deploymentName:t,options:n},O)}async beginCreateOrUpdateAtManagementGroupScope(e,t,n,r){let i=async(e,t)=>this.client.sendOperationRequest(e,t),a=(0,s.createLroSpec)({sendOperationFn:async(e,t)=>{let n,r=e.options?.onResponse;return{flatResponse:await i(Object.assign(Object.assign({},e),{options:Object.assign(Object.assign({},e.options),{onResponse:(e,t)=>{n=e,r?.(e,t)}})}),t),rawResponse:{statusCode:n.status,body:n.parsedBody,headers:n.headers.toJSON()}}},args:{groupId:e,deploymentName:t,parameters:n,options:r},spec:k}),c=await(0,o.createHttpPoller)(a,{restoreFrom:r?.resumeFrom,intervalInMs:r?.updateIntervalInMs});return await c.poll(),c}async beginCreateOrUpdateAtManagementGroupScopeAndWait(e,t,n,r){return(await this.beginCreateOrUpdateAtManagementGroupScope(e,t,n,r)).pollUntilDone()}getAtManagementGroupScope(e,t,n){return this.client.sendOperationRequest({groupId:e,deploymentName:t,options:n},A)}cancelAtManagementGroupScope(e,t,n){return this.client.sendOperationRequest({groupId:e,deploymentName:t,options:n},j)}async beginValidateAtManagementGroupScope(e,t,n,r){let i=async(e,t)=>this.client.sendOperationRequest(e,t),a=(0,s.createLroSpec)({sendOperationFn:async(e,t)=>{let n,r=e.options?.onResponse;return{flatResponse:await i(Object.assign(Object.assign({},e),{options:Object.assign(Object.assign({},e.options),{onResponse:(e,t)=>{n=e,r?.(e,t)}})}),t),rawResponse:{statusCode:n.status,body:n.parsedBody,headers:n.headers.toJSON()}}},args:{groupId:e,deploymentName:t,parameters:n,options:r},spec:M}),c=await(0,o.createHttpPoller)(a,{restoreFrom:r?.resumeFrom,intervalInMs:r?.updateIntervalInMs});return await c.poll(),c}async beginValidateAtManagementGroupScopeAndWait(e,t,n,r){return(await this.beginValidateAtManagementGroupScope(e,t,n,r)).pollUntilDone()}async beginWhatIfAtManagementGroupScope(e,t,n,r){let i=async(e,t)=>this.client.sendOperationRequest(e,t),a=(0,s.createLroSpec)({sendOperationFn:async(e,t)=>{let n,r=e.options?.onResponse;return{flatResponse:await i(Object.assign(Object.assign({},e),{options:Object.assign(Object.assign({},e.options),{onResponse:(e,t)=>{n=e,r?.(e,t)}})}),t),rawResponse:{statusCode:n.status,body:n.parsedBody,headers:n.headers.toJSON()}}},args:{groupId:e,deploymentName:t,parameters:n,options:r},spec:N}),c=await(0,o.createHttpPoller)(a,{restoreFrom:r?.resumeFrom,intervalInMs:r?.updateIntervalInMs,resourceLocationConfig:`location`});return await c.poll(),c}async beginWhatIfAtManagementGroupScopeAndWait(e,t,n,r){return(await this.beginWhatIfAtManagementGroupScope(e,t,n,r)).pollUntilDone()}exportTemplateAtManagementGroupScope(e,t,n){return this.client.sendOperationRequest({groupId:e,deploymentName:t,options:n},ee)}_listAtManagementGroupScope(e,t){return this.client.sendOperationRequest({groupId:e,options:t},P)}async beginDeleteAtSubscriptionScope(e,t){let n=async(e,t)=>this.client.sendOperationRequest(e,t),r=(0,s.createLroSpec)({sendOperationFn:async(e,t)=>{let r,i=e.options?.onResponse;return{flatResponse:await n(Object.assign(Object.assign({},e),{options:Object.assign(Object.assign({},e.options),{onResponse:(e,t)=>{r=e,i?.(e,t)}})}),t),rawResponse:{statusCode:r.status,body:r.parsedBody,headers:r.headers.toJSON()}}},args:{deploymentName:e,options:t},spec:F}),i=await(0,o.createHttpPoller)(r,{restoreFrom:t?.resumeFrom,intervalInMs:t?.updateIntervalInMs});return await i.poll(),i}async beginDeleteAtSubscriptionScopeAndWait(e,t){return(await this.beginDeleteAtSubscriptionScope(e,t)).pollUntilDone()}checkExistenceAtSubscriptionScope(e,t){return this.client.sendOperationRequest({deploymentName:e,options:t},I)}async beginCreateOrUpdateAtSubscriptionScope(e,t,n){let r=async(e,t)=>this.client.sendOperationRequest(e,t),i=(0,s.createLroSpec)({sendOperationFn:async(e,t)=>{let n,i=e.options?.onResponse;return{flatResponse:await r(Object.assign(Object.assign({},e),{options:Object.assign(Object.assign({},e.options),{onResponse:(e,t)=>{n=e,i?.(e,t)}})}),t),rawResponse:{statusCode:n.status,body:n.parsedBody,headers:n.headers.toJSON()}}},args:{deploymentName:e,parameters:t,options:n},spec:L}),a=await(0,o.createHttpPoller)(i,{restoreFrom:n?.resumeFrom,intervalInMs:n?.updateIntervalInMs});return await a.poll(),a}async beginCreateOrUpdateAtSubscriptionScopeAndWait(e,t,n){return(await this.beginCreateOrUpdateAtSubscriptionScope(e,t,n)).pollUntilDone()}getAtSubscriptionScope(e,t){return this.client.sendOperationRequest({deploymentName:e,options:t},R)}cancelAtSubscriptionScope(e,t){return this.client.sendOperationRequest({deploymentName:e,options:t},z)}async beginValidateAtSubscriptionScope(e,t,n){let r=async(e,t)=>this.client.sendOperationRequest(e,t),i=(0,s.createLroSpec)({sendOperationFn:async(e,t)=>{let n,i=e.options?.onResponse;return{flatResponse:await r(Object.assign(Object.assign({},e),{options:Object.assign(Object.assign({},e.options),{onResponse:(e,t)=>{n=e,i?.(e,t)}})}),t),rawResponse:{statusCode:n.status,body:n.parsedBody,headers:n.headers.toJSON()}}},args:{deploymentName:e,parameters:t,options:n},spec:B}),a=await(0,o.createHttpPoller)(i,{restoreFrom:n?.resumeFrom,intervalInMs:n?.updateIntervalInMs});return await a.poll(),a}async beginValidateAtSubscriptionScopeAndWait(e,t,n){return(await this.beginValidateAtSubscriptionScope(e,t,n)).pollUntilDone()}async beginWhatIfAtSubscriptionScope(e,t,n){let r=async(e,t)=>this.client.sendOperationRequest(e,t),i=(0,s.createLroSpec)({sendOperationFn:async(e,t)=>{let n,i=e.options?.onResponse;return{flatResponse:await r(Object.assign(Object.assign({},e),{options:Object.assign(Object.assign({},e.options),{onResponse:(e,t)=>{n=e,i?.(e,t)}})}),t),rawResponse:{statusCode:n.status,body:n.parsedBody,headers:n.headers.toJSON()}}},args:{deploymentName:e,parameters:t,options:n},spec:te}),a=await(0,o.createHttpPoller)(i,{restoreFrom:n?.resumeFrom,intervalInMs:n?.updateIntervalInMs,resourceLocationConfig:`location`});return await a.poll(),a}async beginWhatIfAtSubscriptionScopeAndWait(e,t,n){return(await this.beginWhatIfAtSubscriptionScope(e,t,n)).pollUntilDone()}exportTemplateAtSubscriptionScope(e,t){return this.client.sendOperationRequest({deploymentName:e,options:t},V)}_listAtSubscriptionScope(e){return this.client.sendOperationRequest({options:e},ne)}async beginDelete(e,t,n){let r=async(e,t)=>this.client.sendOperationRequest(e,t),i=(0,s.createLroSpec)({sendOperationFn:async(e,t)=>{let n,i=e.options?.onResponse;return{flatResponse:await r(Object.assign(Object.assign({},e),{options:Object.assign(Object.assign({},e.options),{onResponse:(e,t)=>{n=e,i?.(e,t)}})}),t),rawResponse:{statusCode:n.status,body:n.parsedBody,headers:n.headers.toJSON()}}},args:{resourceGroupName:e,deploymentName:t,options:n},spec:re}),a=await(0,o.createHttpPoller)(i,{restoreFrom:n?.resumeFrom,intervalInMs:n?.updateIntervalInMs});return await a.poll(),a}async beginDeleteAndWait(e,t,n){return(await this.beginDelete(e,t,n)).pollUntilDone()}checkExistence(e,t,n){return this.client.sendOperationRequest({resourceGroupName:e,deploymentName:t,options:n},H)}async beginCreateOrUpdate(e,t,n,r){let i=async(e,t)=>this.client.sendOperationRequest(e,t),a=(0,s.createLroSpec)({sendOperationFn:async(e,t)=>{let n,r=e.options?.onResponse;return{flatResponse:await i(Object.assign(Object.assign({},e),{options:Object.assign(Object.assign({},e.options),{onResponse:(e,t)=>{n=e,r?.(e,t)}})}),t),rawResponse:{statusCode:n.status,body:n.parsedBody,headers:n.headers.toJSON()}}},args:{resourceGroupName:e,deploymentName:t,parameters:n,options:r},spec:ie}),c=await(0,o.createHttpPoller)(a,{restoreFrom:r?.resumeFrom,intervalInMs:r?.updateIntervalInMs});return await c.poll(),c}async beginCreateOrUpdateAndWait(e,t,n,r){return(await this.beginCreateOrUpdate(e,t,n,r)).pollUntilDone()}get(e,t,n){return this.client.sendOperationRequest({resourceGroupName:e,deploymentName:t,options:n},U)}cancel(e,t,n){return this.client.sendOperationRequest({resourceGroupName:e,deploymentName:t,options:n},W)}async beginValidate(e,t,n,r){let i=async(e,t)=>this.client.sendOperationRequest(e,t),a=(0,s.createLroSpec)({sendOperationFn:async(e,t)=>{let n,r=e.options?.onResponse;return{flatResponse:await i(Object.assign(Object.assign({},e),{options:Object.assign(Object.assign({},e.options),{onResponse:(e,t)=>{n=e,r?.(e,t)}})}),t),rawResponse:{statusCode:n.status,body:n.parsedBody,headers:n.headers.toJSON()}}},args:{resourceGroupName:e,deploymentName:t,parameters:n,options:r},spec:ae}),c=await(0,o.createHttpPoller)(a,{restoreFrom:r?.resumeFrom,intervalInMs:r?.updateIntervalInMs});return await c.poll(),c}async beginValidateAndWait(e,t,n,r){return(await this.beginValidate(e,t,n,r)).pollUntilDone()}async beginWhatIf(e,t,n,r){let i=async(e,t)=>this.client.sendOperationRequest(e,t),a=(0,s.createLroSpec)({sendOperationFn:async(e,t)=>{let n,r=e.options?.onResponse;return{flatResponse:await i(Object.assign(Object.assign({},e),{options:Object.assign(Object.assign({},e.options),{onResponse:(e,t)=>{n=e,r?.(e,t)}})}),t),rawResponse:{statusCode:n.status,body:n.parsedBody,headers:n.headers.toJSON()}}},args:{resourceGroupName:e,deploymentName:t,parameters:n,options:r},spec:G}),c=await(0,o.createHttpPoller)(a,{restoreFrom:r?.resumeFrom,intervalInMs:r?.updateIntervalInMs,resourceLocationConfig:`location`});return await c.poll(),c}async beginWhatIfAndWait(e,t,n,r){return(await this.beginWhatIf(e,t,n,r)).pollUntilDone()}exportTemplate(e,t,n){return this.client.sendOperationRequest({resourceGroupName:e,deploymentName:t,options:n},oe)}_listByResourceGroup(e,t){return this.client.sendOperationRequest({resourceGroupName:e,options:t},se)}calculateTemplateHash(e,t){return this.client.sendOperationRequest({template:e,options:t},ce)}_listAtScopeNext(e,t,n){return this.client.sendOperationRequest({scope:e,nextLink:t,options:n},le)}_listAtTenantScopeNext(e,t){return this.client.sendOperationRequest({nextLink:e,options:t},ue)}_listAtManagementGroupScopeNext(e,t,n){return this.client.sendOperationRequest({groupId:e,nextLink:t,options:n},de)}_listAtSubscriptionScopeNext(e,t){return this.client.sendOperationRequest({nextLink:e,options:t},fe)}_listByResourceGroupNext(e,t,n){return this.client.sendOperationRequest({resourceGroupName:e,nextLink:t,options:n},pe)}};let c=r.createSerializer(i,!1),l={path:`/{scope}/providers/Microsoft.Resources/deployments/{deploymentName}`,httpMethod:`DELETE`,responses:{200:{},201:{},202:{},204:{},default:{bodyMapper:i.CloudError}},queryParameters:[a.apiVersion],urlParameters:[a.$host,a.scope,a.deploymentName],headerParameters:[a.accept],serializer:c},u={path:`/{scope}/providers/Microsoft.Resources/deployments/{deploymentName}`,httpMethod:`HEAD`,responses:{204:{},404:{},default:{bodyMapper:i.CloudError}},queryParameters:[a.apiVersion],urlParameters:[a.$host,a.scope,a.deploymentName],headerParameters:[a.accept],serializer:c},f={path:`/{scope}/providers/Microsoft.Resources/deployments/{deploymentName}`,httpMethod:`PUT`,responses:{200:{bodyMapper:i.DeploymentExtended},201:{bodyMapper:i.DeploymentExtended},202:{bodyMapper:i.DeploymentExtended},204:{bodyMapper:i.DeploymentExtended},default:{bodyMapper:i.CloudError}},requestBody:a.parameters,queryParameters:[a.apiVersion],urlParameters:[a.$host,a.scope,a.deploymentName],headerParameters:[a.accept,a.contentType],mediaType:`json`,serializer:c},p={path:`/{scope}/providers/Microsoft.Resources/deployments/{deploymentName}`,httpMethod:`GET`,responses:{200:{bodyMapper:i.DeploymentExtended},default:{bodyMapper:i.CloudError}},queryParameters:[a.apiVersion],urlParameters:[a.$host,a.scope,a.deploymentName],headerParameters:[a.accept],serializer:c},m={path:`/{scope}/providers/Microsoft.Resources/deployments/{deploymentName}/cancel`,httpMethod:`POST`,responses:{204:{},default:{bodyMapper:i.CloudError}},queryParameters:[a.apiVersion],urlParameters:[a.$host,a.scope,a.deploymentName],headerParameters:[a.accept],serializer:c},h={path:`/{scope}/providers/Microsoft.Resources/deployments/{deploymentName}/validate`,httpMethod:`POST`,responses:{200:{bodyMapper:i.DeploymentValidateResult},201:{bodyMapper:i.DeploymentValidateResult},202:{bodyMapper:i.DeploymentValidateResult},204:{bodyMapper:i.DeploymentValidateResult},default:{bodyMapper:i.CloudError}},requestBody:a.parameters,queryParameters:[a.apiVersion],urlParameters:[a.$host,a.scope,a.deploymentName],headerParameters:[a.accept,a.contentType],mediaType:`json`,serializer:c},g={path:`/{scope}/providers/Microsoft.Resources/deployments/{deploymentName}/exportTemplate`,httpMethod:`POST`,responses:{200:{bodyMapper:i.DeploymentExportResult},default:{bodyMapper:i.CloudError}},queryParameters:[a.apiVersion],urlParameters:[a.$host,a.scope,a.deploymentName],headerParameters:[a.accept],serializer:c},_={path:`/{scope}/providers/Microsoft.Resources/deployments/`,httpMethod:`GET`,responses:{200:{bodyMapper:i.DeploymentListResult},default:{bodyMapper:i.CloudError}},queryParameters:[a.apiVersion,a.filter,a.top],urlParameters:[a.$host,a.scope],headerParameters:[a.accept],serializer:c},v={path:`/providers/Microsoft.Resources/deployments/{deploymentName}`,httpMethod:`DELETE`,responses:{200:{},201:{},202:{},204:{},default:{bodyMapper:i.CloudError}},queryParameters:[a.apiVersion],urlParameters:[a.$host,a.deploymentName],headerParameters:[a.accept],serializer:c},y={path:`/providers/Microsoft.Resources/deployments/{deploymentName}`,httpMethod:`HEAD`,responses:{204:{},404:{},default:{bodyMapper:i.CloudError}},queryParameters:[a.apiVersion],urlParameters:[a.$host,a.deploymentName],headerParameters:[a.accept],serializer:c},b={path:`/providers/Microsoft.Resources/deployments/{deploymentName}`,httpMethod:`PUT`,responses:{200:{bodyMapper:i.DeploymentExtended},201:{bodyMapper:i.DeploymentExtended},202:{bodyMapper:i.DeploymentExtended},204:{bodyMapper:i.DeploymentExtended},default:{bodyMapper:i.CloudError}},requestBody:a.parameters1,queryParameters:[a.apiVersion],urlParameters:[a.$host,a.deploymentName],headerParameters:[a.accept,a.contentType],mediaType:`json`,serializer:c},x={path:`/providers/Microsoft.Resources/deployments/{deploymentName}`,httpMethod:`GET`,responses:{200:{bodyMapper:i.DeploymentExtended},default:{bodyMapper:i.CloudError}},queryParameters:[a.apiVersion],urlParameters:[a.$host,a.deploymentName],headerParameters:[a.accept],serializer:c},S={path:`/providers/Microsoft.Resources/deployments/{deploymentName}/cancel`,httpMethod:`POST`,responses:{204:{},default:{bodyMapper:i.CloudError}},queryParameters:[a.apiVersion],urlParameters:[a.$host,a.deploymentName],headerParameters:[a.accept],serializer:c},C={path:`/providers/Microsoft.Resources/deployments/{deploymentName}/validate`,httpMethod:`POST`,responses:{200:{bodyMapper:i.DeploymentValidateResult},201:{bodyMapper:i.DeploymentValidateResult},202:{bodyMapper:i.DeploymentValidateResult},204:{bodyMapper:i.DeploymentValidateResult},default:{bodyMapper:i.CloudError}},requestBody:a.parameters1,queryParameters:[a.apiVersion],urlParameters:[a.$host,a.deploymentName],headerParameters:[a.accept,a.contentType],mediaType:`json`,serializer:c},w={path:`/providers/Microsoft.Resources/deployments/{deploymentName}/whatIf`,httpMethod:`POST`,responses:{200:{bodyMapper:i.WhatIfOperationResult},201:{bodyMapper:i.WhatIfOperationResult},202:{bodyMapper:i.WhatIfOperationResult},204:{bodyMapper:i.WhatIfOperationResult},default:{bodyMapper:i.CloudError}},requestBody:a.parameters2,queryParameters:[a.apiVersion],urlParameters:[a.$host,a.deploymentName],headerParameters:[a.accept,a.contentType],mediaType:`json`,serializer:c},T={path:`/providers/Microsoft.Resources/deployments/{deploymentName}/exportTemplate`,httpMethod:`POST`,responses:{200:{bodyMapper:i.DeploymentExportResult},default:{bodyMapper:i.CloudError}},queryParameters:[a.apiVersion],urlParameters:[a.$host,a.deploymentName],headerParameters:[a.accept],serializer:c},E={path:`/providers/Microsoft.Resources/deployments/`,httpMethod:`GET`,responses:{200:{bodyMapper:i.DeploymentListResult},default:{bodyMapper:i.CloudError}},queryParameters:[a.apiVersion,a.filter,a.top],urlParameters:[a.$host],headerParameters:[a.accept],serializer:c},D={path:`/providers/Microsoft.Management/managementGroups/{groupId}/providers/Microsoft.Resources/deployments/{deploymentName}`,httpMethod:`DELETE`,responses:{200:{},201:{},202:{},204:{},default:{bodyMapper:i.CloudError}},queryParameters:[a.apiVersion],urlParameters:[a.$host,a.deploymentName,a.groupId],headerParameters:[a.accept],serializer:c},O={path:`/providers/Microsoft.Management/managementGroups/{groupId}/providers/Microsoft.Resources/deployments/{deploymentName}`,httpMethod:`HEAD`,responses:{204:{},404:{},default:{bodyMapper:i.CloudError}},queryParameters:[a.apiVersion],urlParameters:[a.$host,a.deploymentName,a.groupId],headerParameters:[a.accept],serializer:c},k={path:`/providers/Microsoft.Management/managementGroups/{groupId}/providers/Microsoft.Resources/deployments/{deploymentName}`,httpMethod:`PUT`,responses:{200:{bodyMapper:i.DeploymentExtended},201:{bodyMapper:i.DeploymentExtended},202:{bodyMapper:i.DeploymentExtended},204:{bodyMapper:i.DeploymentExtended},default:{bodyMapper:i.CloudError}},requestBody:a.parameters1,queryParameters:[a.apiVersion],urlParameters:[a.$host,a.deploymentName,a.groupId],headerParameters:[a.accept,a.contentType],mediaType:`json`,serializer:c},A={path:`/providers/Microsoft.Management/managementGroups/{groupId}/providers/Microsoft.Resources/deployments/{deploymentName}`,httpMethod:`GET`,responses:{200:{bodyMapper:i.DeploymentExtended},default:{bodyMapper:i.CloudError}},queryParameters:[a.apiVersion],urlParameters:[a.$host,a.deploymentName,a.groupId],headerParameters:[a.accept],serializer:c},j={path:`/providers/Microsoft.Management/managementGroups/{groupId}/providers/Microsoft.Resources/deployments/{deploymentName}/cancel`,httpMethod:`POST`,responses:{204:{},default:{bodyMapper:i.CloudError}},queryParameters:[a.apiVersion],urlParameters:[a.$host,a.deploymentName,a.groupId],headerParameters:[a.accept],serializer:c},M={path:`/providers/Microsoft.Management/managementGroups/{groupId}/providers/Microsoft.Resources/deployments/{deploymentName}/validate`,httpMethod:`POST`,responses:{200:{bodyMapper:i.DeploymentValidateResult},201:{bodyMapper:i.DeploymentValidateResult},202:{bodyMapper:i.DeploymentValidateResult},204:{bodyMapper:i.DeploymentValidateResult},default:{bodyMapper:i.CloudError}},requestBody:a.parameters1,queryParameters:[a.apiVersion],urlParameters:[a.$host,a.deploymentName,a.groupId],headerParameters:[a.accept,a.contentType],mediaType:`json`,serializer:c},N={path:`/providers/Microsoft.Management/managementGroups/{groupId}/providers/Microsoft.Resources/deployments/{deploymentName}/whatIf`,httpMethod:`POST`,responses:{200:{bodyMapper:i.WhatIfOperationResult},201:{bodyMapper:i.WhatIfOperationResult},202:{bodyMapper:i.WhatIfOperationResult},204:{bodyMapper:i.WhatIfOperationResult},default:{bodyMapper:i.CloudError}},requestBody:a.parameters2,queryParameters:[a.apiVersion],urlParameters:[a.$host,a.deploymentName,a.groupId],headerParameters:[a.accept,a.contentType],mediaType:`json`,serializer:c},ee={path:`/providers/Microsoft.Management/managementGroups/{groupId}/providers/Microsoft.Resources/deployments/{deploymentName}/exportTemplate`,httpMethod:`POST`,responses:{200:{bodyMapper:i.DeploymentExportResult},default:{bodyMapper:i.CloudError}},queryParameters:[a.apiVersion],urlParameters:[a.$host,a.deploymentName,a.groupId],headerParameters:[a.accept],serializer:c},P={path:`/providers/Microsoft.Management/managementGroups/{groupId}/providers/Microsoft.Resources/deployments/`,httpMethod:`GET`,responses:{200:{bodyMapper:i.DeploymentListResult},default:{bodyMapper:i.CloudError}},queryParameters:[a.apiVersion,a.filter,a.top],urlParameters:[a.$host,a.groupId],headerParameters:[a.accept],serializer:c},F={path:`/subscriptions/{subscriptionId}/providers/Microsoft.Resources/deployments/{deploymentName}`,httpMethod:`DELETE`,responses:{200:{},201:{},202:{},204:{},default:{bodyMapper:i.CloudError}},queryParameters:[a.apiVersion],urlParameters:[a.$host,a.deploymentName,a.subscriptionId],headerParameters:[a.accept],serializer:c},I={path:`/subscriptions/{subscriptionId}/providers/Microsoft.Resources/deployments/{deploymentName}`,httpMethod:`HEAD`,responses:{204:{},404:{},default:{bodyMapper:i.CloudError}},queryParameters:[a.apiVersion],urlParameters:[a.$host,a.deploymentName,a.subscriptionId],headerParameters:[a.accept],serializer:c},L={path:`/subscriptions/{subscriptionId}/providers/Microsoft.Resources/deployments/{deploymentName}`,httpMethod:`PUT`,responses:{200:{bodyMapper:i.DeploymentExtended},201:{bodyMapper:i.DeploymentExtended},202:{bodyMapper:i.DeploymentExtended},204:{bodyMapper:i.DeploymentExtended},default:{bodyMapper:i.CloudError}},requestBody:a.parameters,queryParameters:[a.apiVersion],urlParameters:[a.$host,a.deploymentName,a.subscriptionId],headerParameters:[a.accept,a.contentType],mediaType:`json`,serializer:c},R={path:`/subscriptions/{subscriptionId}/providers/Microsoft.Resources/deployments/{deploymentName}`,httpMethod:`GET`,responses:{200:{bodyMapper:i.DeploymentExtended},default:{bodyMapper:i.CloudError}},queryParameters:[a.apiVersion],urlParameters:[a.$host,a.deploymentName,a.subscriptionId],headerParameters:[a.accept],serializer:c},z={path:`/subscriptions/{subscriptionId}/providers/Microsoft.Resources/deployments/{deploymentName}/cancel`,httpMethod:`POST`,responses:{204:{},default:{bodyMapper:i.CloudError}},queryParameters:[a.apiVersion],urlParameters:[a.$host,a.deploymentName,a.subscriptionId],headerParameters:[a.accept],serializer:c},B={path:`/subscriptions/{subscriptionId}/providers/Microsoft.Resources/deployments/{deploymentName}/validate`,httpMethod:`POST`,responses:{200:{bodyMapper:i.DeploymentValidateResult},201:{bodyMapper:i.DeploymentValidateResult},202:{bodyMapper:i.DeploymentValidateResult},204:{bodyMapper:i.DeploymentValidateResult},default:{bodyMapper:i.CloudError}},requestBody:a.parameters,queryParameters:[a.apiVersion],urlParameters:[a.$host,a.deploymentName,a.subscriptionId],headerParameters:[a.accept,a.contentType],mediaType:`json`,serializer:c},te={path:`/subscriptions/{subscriptionId}/providers/Microsoft.Resources/deployments/{deploymentName}/whatIf`,httpMethod:`POST`,responses:{200:{bodyMapper:i.WhatIfOperationResult},201:{bodyMapper:i.WhatIfOperationResult},202:{bodyMapper:i.WhatIfOperationResult},204:{bodyMapper:i.WhatIfOperationResult},default:{bodyMapper:i.CloudError}},requestBody:a.parameters3,queryParameters:[a.apiVersion],urlParameters:[a.$host,a.deploymentName,a.subscriptionId],headerParameters:[a.accept,a.contentType],mediaType:`json`,serializer:c},V={path:`/subscriptions/{subscriptionId}/providers/Microsoft.Resources/deployments/{deploymentName}/exportTemplate`,httpMethod:`POST`,responses:{200:{bodyMapper:i.DeploymentExportResult},default:{bodyMapper:i.CloudError}},queryParameters:[a.apiVersion],urlParameters:[a.$host,a.deploymentName,a.subscriptionId],headerParameters:[a.accept],serializer:c},ne={path:`/subscriptions/{subscriptionId}/providers/Microsoft.Resources/deployments/`,httpMethod:`GET`,responses:{200:{bodyMapper:i.DeploymentListResult},default:{bodyMapper:i.CloudError}},queryParameters:[a.apiVersion,a.filter,a.top],urlParameters:[a.$host,a.subscriptionId],headerParameters:[a.accept],serializer:c},re={path:`/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.Resources/deployments/{deploymentName}`,httpMethod:`DELETE`,responses:{200:{},201:{},202:{},204:{},default:{bodyMapper:i.CloudError}},queryParameters:[a.apiVersion],urlParameters:[a.$host,a.deploymentName,a.subscriptionId,a.resourceGroupName],headerParameters:[a.accept],serializer:c},H={path:`/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.Resources/deployments/{deploymentName}`,httpMethod:`HEAD`,responses:{204:{},404:{},default:{bodyMapper:i.CloudError}},queryParameters:[a.apiVersion],urlParameters:[a.$host,a.deploymentName,a.subscriptionId,a.resourceGroupName],headerParameters:[a.accept],serializer:c},ie={path:`/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.Resources/deployments/{deploymentName}`,httpMethod:`PUT`,responses:{200:{bodyMapper:i.DeploymentExtended},201:{bodyMapper:i.DeploymentExtended},202:{bodyMapper:i.DeploymentExtended},204:{bodyMapper:i.DeploymentExtended},default:{bodyMapper:i.CloudError}},requestBody:a.parameters,queryParameters:[a.apiVersion],urlParameters:[a.$host,a.deploymentName,a.subscriptionId,a.resourceGroupName],headerParameters:[a.accept,a.contentType],mediaType:`json`,serializer:c},U={path:`/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.Resources/deployments/{deploymentName}`,httpMethod:`GET`,responses:{200:{bodyMapper:i.DeploymentExtended},default:{bodyMapper:i.CloudError}},queryParameters:[a.apiVersion],urlParameters:[a.$host,a.deploymentName,a.subscriptionId,a.resourceGroupName],headerParameters:[a.accept],serializer:c},W={path:`/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.Resources/deployments/{deploymentName}/cancel`,httpMethod:`POST`,responses:{204:{},default:{bodyMapper:i.CloudError}},queryParameters:[a.apiVersion],urlParameters:[a.$host,a.deploymentName,a.subscriptionId,a.resourceGroupName],headerParameters:[a.accept],serializer:c},ae={path:`/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.Resources/deployments/{deploymentName}/validate`,httpMethod:`POST`,responses:{200:{bodyMapper:i.DeploymentValidateResult},201:{bodyMapper:i.DeploymentValidateResult},202:{bodyMapper:i.DeploymentValidateResult},204:{bodyMapper:i.DeploymentValidateResult},default:{bodyMapper:i.CloudError}},requestBody:a.parameters,queryParameters:[a.apiVersion],urlParameters:[a.$host,a.deploymentName,a.subscriptionId,a.resourceGroupName],headerParameters:[a.accept,a.contentType],mediaType:`json`,serializer:c},G={path:`/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.Resources/deployments/{deploymentName}/whatIf`,httpMethod:`POST`,responses:{200:{bodyMapper:i.WhatIfOperationResult},201:{bodyMapper:i.WhatIfOperationResult},202:{bodyMapper:i.WhatIfOperationResult},204:{bodyMapper:i.WhatIfOperationResult},default:{bodyMapper:i.CloudError}},requestBody:a.parameters3,queryParameters:[a.apiVersion],urlParameters:[a.$host,a.deploymentName,a.subscriptionId,a.resourceGroupName],headerParameters:[a.accept,a.contentType],mediaType:`json`,serializer:c},oe={path:`/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.Resources/deployments/{deploymentName}/exportTemplate`,httpMethod:`POST`,responses:{200:{bodyMapper:i.DeploymentExportResult},default:{bodyMapper:i.CloudError}},queryParameters:[a.apiVersion],urlParameters:[a.$host,a.deploymentName,a.subscriptionId,a.resourceGroupName],headerParameters:[a.accept],serializer:c},se={path:`/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.Resources/deployments/`,httpMethod:`GET`,responses:{200:{bodyMapper:i.DeploymentListResult},default:{bodyMapper:i.CloudError}},queryParameters:[a.apiVersion,a.filter,a.top],urlParameters:[a.$host,a.subscriptionId,a.resourceGroupName],headerParameters:[a.accept],serializer:c},ce={path:`/providers/Microsoft.Resources/calculateTemplateHash`,httpMethod:`POST`,responses:{200:{bodyMapper:i.TemplateHashResult},default:{bodyMapper:i.CloudError}},requestBody:a.template,queryParameters:[a.apiVersion],urlParameters:[a.$host],headerParameters:[a.accept,a.contentType],mediaType:`json`,serializer:c},le={path:`{nextLink}`,httpMethod:`GET`,responses:{200:{bodyMapper:i.DeploymentListResult},default:{bodyMapper:i.CloudError}},urlParameters:[a.$host,a.nextLink,a.scope],headerParameters:[a.accept],serializer:c},ue={path:`{nextLink}`,httpMethod:`GET`,responses:{200:{bodyMapper:i.DeploymentListResult},default:{bodyMapper:i.CloudError}},urlParameters:[a.$host,a.nextLink],headerParameters:[a.accept],serializer:c},de={path:`{nextLink}`,httpMethod:`GET`,responses:{200:{bodyMapper:i.DeploymentListResult},default:{bodyMapper:i.CloudError}},urlParameters:[a.$host,a.nextLink,a.groupId],headerParameters:[a.accept],serializer:c},fe={path:`{nextLink}`,httpMethod:`GET`,responses:{200:{bodyMapper:i.DeploymentListResult},default:{bodyMapper:i.CloudError}},urlParameters:[a.$host,a.nextLink,a.subscriptionId],headerParameters:[a.accept],serializer:c},pe={path:`{nextLink}`,httpMethod:`GET`,responses:{200:{bodyMapper:i.DeploymentListResult},default:{bodyMapper:i.CloudError}},urlParameters:[a.$host,a.nextLink,a.subscriptionId,a.resourceGroupName],headerParameters:[a.accept],serializer:c}})),hs=s((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.ProvidersImpl=void 0;let t=(hi(),d(jr)),n=gi(),r=t.__importStar(Zo()),i=t.__importStar(Qo()),a=t.__importStar($o());e.ProvidersImpl=class{constructor(e){this.client=e}list(e){let t=this.listPagingAll(e);return{next(){return t.next()},[Symbol.asyncIterator](){return this},byPage:t=>{if(t?.maxPageSize)throw Error(`maxPageSize is not supported by this operation.`);return this.listPagingPage(e,t)}}}listPagingPage(e,r){return t.__asyncGenerator(this,arguments,function*(){let i,a=r?.continuationToken;if(!a){i=yield t.__await(this._list(e));let r=i.value||[];a=i.nextLink,(0,n.setContinuationToken)(r,a),yield yield t.__await(r)}for(;a;){i=yield t.__await(this._listNext(a,e)),a=i.nextLink;let r=i.value||[];(0,n.setContinuationToken)(r,a),yield yield t.__await(r)}})}listPagingAll(e){return t.__asyncGenerator(this,arguments,function*(){var n,r,i,a;try{for(var o=!0,s=t.__asyncValues(this.listPagingPage(e)),c;c=yield t.__await(s.next()),n=c.done,!n;o=!0){a=c.value,o=!1;let e=a;yield t.__await(yield*t.__asyncDelegator(t.__asyncValues(e)))}}catch(e){r={error:e}}finally{try{!o&&!n&&(i=s.return)&&(yield t.__await(i.call(s)))}finally{if(r)throw r.error}}})}listAtTenantScope(e){let t=this.listAtTenantScopePagingAll(e);return{next(){return t.next()},[Symbol.asyncIterator](){return this},byPage:t=>{if(t?.maxPageSize)throw Error(`maxPageSize is not supported by this operation.`);return this.listAtTenantScopePagingPage(e,t)}}}listAtTenantScopePagingPage(e,r){return t.__asyncGenerator(this,arguments,function*(){let i,a=r?.continuationToken;if(!a){i=yield t.__await(this._listAtTenantScope(e));let r=i.value||[];a=i.nextLink,(0,n.setContinuationToken)(r,a),yield yield t.__await(r)}for(;a;){i=yield t.__await(this._listAtTenantScopeNext(a,e)),a=i.nextLink;let r=i.value||[];(0,n.setContinuationToken)(r,a),yield yield t.__await(r)}})}listAtTenantScopePagingAll(e){return t.__asyncGenerator(this,arguments,function*(){var n,r,i,a;try{for(var o=!0,s=t.__asyncValues(this.listAtTenantScopePagingPage(e)),c;c=yield t.__await(s.next()),n=c.done,!n;o=!0){a=c.value,o=!1;let e=a;yield t.__await(yield*t.__asyncDelegator(t.__asyncValues(e)))}}catch(e){r={error:e}}finally{try{!o&&!n&&(i=s.return)&&(yield t.__await(i.call(s)))}finally{if(r)throw r.error}}})}unregister(e,t){return this.client.sendOperationRequest({resourceProviderNamespace:e,options:t},s)}registerAtManagementGroupScope(e,t,n){return this.client.sendOperationRequest({resourceProviderNamespace:e,groupId:t,options:n},c)}providerPermissions(e,t){return this.client.sendOperationRequest({resourceProviderNamespace:e,options:t},l)}register(e,t){return this.client.sendOperationRequest({resourceProviderNamespace:e,options:t},u)}_list(e){return this.client.sendOperationRequest({options:e},f)}_listAtTenantScope(e){return this.client.sendOperationRequest({options:e},p)}get(e,t){return this.client.sendOperationRequest({resourceProviderNamespace:e,options:t},m)}getAtTenantScope(e,t){return this.client.sendOperationRequest({resourceProviderNamespace:e,options:t},h)}_listNext(e,t){return this.client.sendOperationRequest({nextLink:e,options:t},g)}_listAtTenantScopeNext(e,t){return this.client.sendOperationRequest({nextLink:e,options:t},_)}};let o=r.createSerializer(i,!1),s={path:`/subscriptions/{subscriptionId}/providers/{resourceProviderNamespace}/unregister`,httpMethod:`POST`,responses:{200:{bodyMapper:i.Provider},default:{bodyMapper:i.CloudError}},queryParameters:[a.apiVersion],urlParameters:[a.$host,a.subscriptionId,a.resourceProviderNamespace],headerParameters:[a.accept],serializer:o},c={path:`/providers/Microsoft.Management/managementGroups/{groupId}/providers/{resourceProviderNamespace}/register`,httpMethod:`POST`,responses:{200:{},default:{bodyMapper:i.CloudError}},queryParameters:[a.apiVersion],urlParameters:[a.$host,a.groupId,a.resourceProviderNamespace],headerParameters:[a.accept],serializer:o},l={path:`/subscriptions/{subscriptionId}/providers/{resourceProviderNamespace}/providerPermissions`,httpMethod:`GET`,responses:{200:{bodyMapper:i.ProviderPermissionListResult},default:{bodyMapper:i.CloudError}},queryParameters:[a.apiVersion],urlParameters:[a.$host,a.subscriptionId,a.resourceProviderNamespace],headerParameters:[a.accept],serializer:o},u={path:`/subscriptions/{subscriptionId}/providers/{resourceProviderNamespace}/register`,httpMethod:`POST`,responses:{200:{bodyMapper:i.Provider},default:{bodyMapper:i.CloudError}},requestBody:a.properties,queryParameters:[a.apiVersion],urlParameters:[a.$host,a.subscriptionId,a.resourceProviderNamespace],headerParameters:[a.accept,a.contentType],mediaType:`json`,serializer:o},f={path:`/subscriptions/{subscriptionId}/providers`,httpMethod:`GET`,responses:{200:{bodyMapper:i.ProviderListResult},default:{bodyMapper:i.CloudError}},queryParameters:[a.apiVersion,a.expand],urlParameters:[a.$host,a.subscriptionId],headerParameters:[a.accept],serializer:o},p={path:`/providers`,httpMethod:`GET`,responses:{200:{bodyMapper:i.ProviderListResult},default:{bodyMapper:i.CloudError}},queryParameters:[a.apiVersion,a.expand],urlParameters:[a.$host],headerParameters:[a.accept],serializer:o},m={path:`/subscriptions/{subscriptionId}/providers/{resourceProviderNamespace}`,httpMethod:`GET`,responses:{200:{bodyMapper:i.Provider},default:{bodyMapper:i.CloudError}},queryParameters:[a.apiVersion,a.expand],urlParameters:[a.$host,a.subscriptionId,a.resourceProviderNamespace],headerParameters:[a.accept],serializer:o},h={path:`/providers/{resourceProviderNamespace}`,httpMethod:`GET`,responses:{200:{bodyMapper:i.Provider},default:{bodyMapper:i.CloudError}},queryParameters:[a.apiVersion,a.expand],urlParameters:[a.$host,a.resourceProviderNamespace],headerParameters:[a.accept],serializer:o},g={path:`{nextLink}`,httpMethod:`GET`,responses:{200:{bodyMapper:i.ProviderListResult},default:{bodyMapper:i.CloudError}},urlParameters:[a.$host,a.nextLink,a.subscriptionId],headerParameters:[a.accept],serializer:o},_={path:`{nextLink}`,httpMethod:`GET`,responses:{200:{bodyMapper:i.ProviderListResult},default:{bodyMapper:i.CloudError}},urlParameters:[a.$host,a.nextLink],headerParameters:[a.accept],serializer:o}})),gs=s((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.ProviderResourceTypesImpl=void 0;let t=(hi(),d(jr)),n=t.__importStar(Zo()),r=t.__importStar(Qo()),i=t.__importStar($o());e.ProviderResourceTypesImpl=class{constructor(e){this.client=e}list(e,t){return this.client.sendOperationRequest({resourceProviderNamespace:e,options:t},o)}};let a=n.createSerializer(r,!1),o={path:`/subscriptions/{subscriptionId}/providers/{resourceProviderNamespace}/resourceTypes`,httpMethod:`GET`,responses:{200:{bodyMapper:r.ProviderResourceTypeListResult},default:{bodyMapper:r.CloudError}},queryParameters:[i.apiVersion,i.expand],urlParameters:[i.$host,i.subscriptionId,i.resourceProviderNamespace],headerParameters:[i.accept],serializer:a}})),_s=s((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.ResourcesImpl=void 0;let t=(hi(),d(jr)),n=gi(),r=t.__importStar(Zo()),i=t.__importStar(Qo()),a=t.__importStar($o()),o=fs(),s=ps();e.ResourcesImpl=class{constructor(e){this.client=e}listByResourceGroup(e,t){let n=this.listByResourceGroupPagingAll(e,t);return{next(){return n.next()},[Symbol.asyncIterator](){return this},byPage:n=>{if(n?.maxPageSize)throw Error(`maxPageSize is not supported by this operation.`);return this.listByResourceGroupPagingPage(e,t,n)}}}listByResourceGroupPagingPage(e,r,i){return t.__asyncGenerator(this,arguments,function*(){let a,o=i?.continuationToken;if(!o){a=yield t.__await(this._listByResourceGroup(e,r));let i=a.value||[];o=a.nextLink,(0,n.setContinuationToken)(i,o),yield yield t.__await(i)}for(;o;){a=yield t.__await(this._listByResourceGroupNext(e,o,r)),o=a.nextLink;let i=a.value||[];(0,n.setContinuationToken)(i,o),yield yield t.__await(i)}})}listByResourceGroupPagingAll(e,n){return t.__asyncGenerator(this,arguments,function*(){var r,i,a,o;try{for(var s=!0,c=t.__asyncValues(this.listByResourceGroupPagingPage(e,n)),l;l=yield t.__await(c.next()),r=l.done,!r;s=!0){o=l.value,s=!1;let e=o;yield t.__await(yield*t.__asyncDelegator(t.__asyncValues(e)))}}catch(e){i={error:e}}finally{try{!s&&!r&&(a=c.return)&&(yield t.__await(a.call(c)))}finally{if(i)throw i.error}}})}list(e){let t=this.listPagingAll(e);return{next(){return t.next()},[Symbol.asyncIterator](){return this},byPage:t=>{if(t?.maxPageSize)throw Error(`maxPageSize is not supported by this operation.`);return this.listPagingPage(e,t)}}}listPagingPage(e,r){return t.__asyncGenerator(this,arguments,function*(){let i,a=r?.continuationToken;if(!a){i=yield t.__await(this._list(e));let r=i.value||[];a=i.nextLink,(0,n.setContinuationToken)(r,a),yield yield t.__await(r)}for(;a;){i=yield t.__await(this._listNext(a,e)),a=i.nextLink;let r=i.value||[];(0,n.setContinuationToken)(r,a),yield yield t.__await(r)}})}listPagingAll(e){return t.__asyncGenerator(this,arguments,function*(){var n,r,i,a;try{for(var o=!0,s=t.__asyncValues(this.listPagingPage(e)),c;c=yield t.__await(s.next()),n=c.done,!n;o=!0){a=c.value,o=!1;let e=a;yield t.__await(yield*t.__asyncDelegator(t.__asyncValues(e)))}}catch(e){r={error:e}}finally{try{!o&&!n&&(i=s.return)&&(yield t.__await(i.call(s)))}finally{if(r)throw r.error}}})}_listByResourceGroup(e,t){return this.client.sendOperationRequest({resourceGroupName:e,options:t},l)}async beginMoveResources(e,t,n){let r=async(e,t)=>this.client.sendOperationRequest(e,t),i=(0,s.createLroSpec)({sendOperationFn:async(e,t)=>{let n,i=e.options?.onResponse;return{flatResponse:await r(Object.assign(Object.assign({},e),{options:Object.assign(Object.assign({},e.options),{onResponse:(e,t)=>{n=e,i?.(e,t)}})}),t),rawResponse:{statusCode:n.status,body:n.parsedBody,headers:n.headers.toJSON()}}},args:{sourceResourceGroupName:e,parameters:t,options:n},spec:u}),a=await(0,o.createHttpPoller)(i,{restoreFrom:n?.resumeFrom,intervalInMs:n?.updateIntervalInMs});return await a.poll(),a}async beginMoveResourcesAndWait(e,t,n){return(await this.beginMoveResources(e,t,n)).pollUntilDone()}async beginValidateMoveResources(e,t,n){let r=async(e,t)=>this.client.sendOperationRequest(e,t),i=(0,s.createLroSpec)({sendOperationFn:async(e,t)=>{let n,i=e.options?.onResponse;return{flatResponse:await r(Object.assign(Object.assign({},e),{options:Object.assign(Object.assign({},e.options),{onResponse:(e,t)=>{n=e,i?.(e,t)}})}),t),rawResponse:{statusCode:n.status,body:n.parsedBody,headers:n.headers.toJSON()}}},args:{sourceResourceGroupName:e,parameters:t,options:n},spec:f}),a=await(0,o.createHttpPoller)(i,{restoreFrom:n?.resumeFrom,intervalInMs:n?.updateIntervalInMs});return await a.poll(),a}async beginValidateMoveResourcesAndWait(e,t,n){return(await this.beginValidateMoveResources(e,t,n)).pollUntilDone()}_list(e){return this.client.sendOperationRequest({options:e},p)}checkExistence(e,t,n,r,i,a,o){return this.client.sendOperationRequest({resourceGroupName:e,resourceProviderNamespace:t,parentResourcePath:n,resourceType:r,resourceName:i,apiVersion:a,options:o},m)}async beginDelete(e,t,n,r,i,a,c){let l=async(e,t)=>this.client.sendOperationRequest(e,t),u=(0,s.createLroSpec)({sendOperationFn:async(e,t)=>{let n,r=e.options?.onResponse;return{flatResponse:await l(Object.assign(Object.assign({},e),{options:Object.assign(Object.assign({},e.options),{onResponse:(e,t)=>{n=e,r?.(e,t)}})}),t),rawResponse:{statusCode:n.status,body:n.parsedBody,headers:n.headers.toJSON()}}},args:{resourceGroupName:e,resourceProviderNamespace:t,parentResourcePath:n,resourceType:r,resourceName:i,apiVersion:a,options:c},spec:h}),d=await(0,o.createHttpPoller)(u,{restoreFrom:c?.resumeFrom,intervalInMs:c?.updateIntervalInMs});return await d.poll(),d}async beginDeleteAndWait(e,t,n,r,i,a,o){return(await this.beginDelete(e,t,n,r,i,a,o)).pollUntilDone()}async beginCreateOrUpdate(e,t,n,r,i,a,c,l){let u=async(e,t)=>this.client.sendOperationRequest(e,t),d=(0,s.createLroSpec)({sendOperationFn:async(e,t)=>{let n,r=e.options?.onResponse;return{flatResponse:await u(Object.assign(Object.assign({},e),{options:Object.assign(Object.assign({},e.options),{onResponse:(e,t)=>{n=e,r?.(e,t)}})}),t),rawResponse:{statusCode:n.status,body:n.parsedBody,headers:n.headers.toJSON()}}},args:{resourceGroupName:e,resourceProviderNamespace:t,parentResourcePath:n,resourceType:r,resourceName:i,apiVersion:a,parameters:c,options:l},spec:g}),f=await(0,o.createHttpPoller)(d,{restoreFrom:l?.resumeFrom,intervalInMs:l?.updateIntervalInMs});return await f.poll(),f}async beginCreateOrUpdateAndWait(e,t,n,r,i,a,o,s){return(await this.beginCreateOrUpdate(e,t,n,r,i,a,o,s)).pollUntilDone()}async beginUpdate(e,t,n,r,i,a,c,l){let u=async(e,t)=>this.client.sendOperationRequest(e,t),d=(0,s.createLroSpec)({sendOperationFn:async(e,t)=>{let n,r=e.options?.onResponse;return{flatResponse:await u(Object.assign(Object.assign({},e),{options:Object.assign(Object.assign({},e.options),{onResponse:(e,t)=>{n=e,r?.(e,t)}})}),t),rawResponse:{statusCode:n.status,body:n.parsedBody,headers:n.headers.toJSON()}}},args:{resourceGroupName:e,resourceProviderNamespace:t,parentResourcePath:n,resourceType:r,resourceName:i,apiVersion:a,parameters:c,options:l},spec:_}),f=await(0,o.createHttpPoller)(d,{restoreFrom:l?.resumeFrom,intervalInMs:l?.updateIntervalInMs});return await f.poll(),f}async beginUpdateAndWait(e,t,n,r,i,a,o,s){return(await this.beginUpdate(e,t,n,r,i,a,o,s)).pollUntilDone()}get(e,t,n,r,i,a,o){return this.client.sendOperationRequest({resourceGroupName:e,resourceProviderNamespace:t,parentResourcePath:n,resourceType:r,resourceName:i,apiVersion:a,options:o},v)}checkExistenceById(e,t,n){return this.client.sendOperationRequest({resourceId:e,apiVersion:t,options:n},y)}async beginDeleteById(e,t,n){let r=async(e,t)=>this.client.sendOperationRequest(e,t),i=(0,s.createLroSpec)({sendOperationFn:async(e,t)=>{let n,i=e.options?.onResponse;return{flatResponse:await r(Object.assign(Object.assign({},e),{options:Object.assign(Object.assign({},e.options),{onResponse:(e,t)=>{n=e,i?.(e,t)}})}),t),rawResponse:{statusCode:n.status,body:n.parsedBody,headers:n.headers.toJSON()}}},args:{resourceId:e,apiVersion:t,options:n},spec:b}),a=await(0,o.createHttpPoller)(i,{restoreFrom:n?.resumeFrom,intervalInMs:n?.updateIntervalInMs});return await a.poll(),a}async beginDeleteByIdAndWait(e,t,n){return(await this.beginDeleteById(e,t,n)).pollUntilDone()}async beginCreateOrUpdateById(e,t,n,r){let i=async(e,t)=>this.client.sendOperationRequest(e,t),a=(0,s.createLroSpec)({sendOperationFn:async(e,t)=>{let n,r=e.options?.onResponse;return{flatResponse:await i(Object.assign(Object.assign({},e),{options:Object.assign(Object.assign({},e.options),{onResponse:(e,t)=>{n=e,r?.(e,t)}})}),t),rawResponse:{statusCode:n.status,body:n.parsedBody,headers:n.headers.toJSON()}}},args:{resourceId:e,apiVersion:t,parameters:n,options:r},spec:x}),c=await(0,o.createHttpPoller)(a,{restoreFrom:r?.resumeFrom,intervalInMs:r?.updateIntervalInMs});return await c.poll(),c}async beginCreateOrUpdateByIdAndWait(e,t,n,r){return(await this.beginCreateOrUpdateById(e,t,n,r)).pollUntilDone()}async beginUpdateById(e,t,n,r){let i=async(e,t)=>this.client.sendOperationRequest(e,t),a=(0,s.createLroSpec)({sendOperationFn:async(e,t)=>{let n,r=e.options?.onResponse;return{flatResponse:await i(Object.assign(Object.assign({},e),{options:Object.assign(Object.assign({},e.options),{onResponse:(e,t)=>{n=e,r?.(e,t)}})}),t),rawResponse:{statusCode:n.status,body:n.parsedBody,headers:n.headers.toJSON()}}},args:{resourceId:e,apiVersion:t,parameters:n,options:r},spec:S}),c=await(0,o.createHttpPoller)(a,{restoreFrom:r?.resumeFrom,intervalInMs:r?.updateIntervalInMs});return await c.poll(),c}async beginUpdateByIdAndWait(e,t,n,r){return(await this.beginUpdateById(e,t,n,r)).pollUntilDone()}getById(e,t,n){return this.client.sendOperationRequest({resourceId:e,apiVersion:t,options:n},C)}_listByResourceGroupNext(e,t,n){return this.client.sendOperationRequest({resourceGroupName:e,nextLink:t,options:n},w)}_listNext(e,t){return this.client.sendOperationRequest({nextLink:e,options:t},T)}};let c=r.createSerializer(i,!1),l={path:`/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/resources`,httpMethod:`GET`,responses:{200:{bodyMapper:i.ResourceListResult},default:{bodyMapper:i.CloudError}},queryParameters:[a.apiVersion,a.filter,a.top,a.expand],urlParameters:[a.$host,a.subscriptionId,a.resourceGroupName],headerParameters:[a.accept],serializer:c},u={path:`/subscriptions/{subscriptionId}/resourceGroups/{sourceResourceGroupName}/moveResources`,httpMethod:`POST`,responses:{200:{},201:{},202:{},204:{},default:{bodyMapper:i.CloudError}},requestBody:a.parameters4,queryParameters:[a.apiVersion],urlParameters:[a.$host,a.subscriptionId,a.sourceResourceGroupName],headerParameters:[a.accept,a.contentType],mediaType:`json`,serializer:c},f={path:`/subscriptions/{subscriptionId}/resourceGroups/{sourceResourceGroupName}/validateMoveResources`,httpMethod:`POST`,responses:{200:{},201:{},202:{},204:{},default:{bodyMapper:i.CloudError}},requestBody:a.parameters4,queryParameters:[a.apiVersion],urlParameters:[a.$host,a.subscriptionId,a.sourceResourceGroupName],headerParameters:[a.accept,a.contentType],mediaType:`json`,serializer:c},p={path:`/subscriptions/{subscriptionId}/resources`,httpMethod:`GET`,responses:{200:{bodyMapper:i.ResourceListResult},default:{bodyMapper:i.CloudError}},queryParameters:[a.apiVersion,a.filter,a.top,a.expand],urlParameters:[a.$host,a.subscriptionId],headerParameters:[a.accept],serializer:c},m={path:`/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{parentResourcePath}/{resourceType}/{resourceName}`,httpMethod:`HEAD`,responses:{204:{},404:{},default:{bodyMapper:i.CloudError}},queryParameters:[a.apiVersion1],urlParameters:[a.$host,a.subscriptionId,a.resourceGroupName,a.resourceProviderNamespace,a.parentResourcePath,a.resourceType,a.resourceName],headerParameters:[a.accept],serializer:c},h={path:`/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{parentResourcePath}/{resourceType}/{resourceName}`,httpMethod:`DELETE`,responses:{200:{},201:{},202:{},204:{},default:{bodyMapper:i.CloudError}},queryParameters:[a.apiVersion1],urlParameters:[a.$host,a.subscriptionId,a.resourceGroupName,a.resourceProviderNamespace,a.parentResourcePath,a.resourceType,a.resourceName],headerParameters:[a.accept],serializer:c},g={path:`/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{parentResourcePath}/{resourceType}/{resourceName}`,httpMethod:`PUT`,responses:{200:{bodyMapper:i.GenericResource},201:{bodyMapper:i.GenericResource},202:{bodyMapper:i.GenericResource},204:{bodyMapper:i.GenericResource},default:{bodyMapper:i.CloudError}},requestBody:a.parameters5,queryParameters:[a.apiVersion1],urlParameters:[a.$host,a.subscriptionId,a.resourceGroupName,a.resourceProviderNamespace,a.parentResourcePath,a.resourceType,a.resourceName],headerParameters:[a.accept,a.contentType],mediaType:`json`,serializer:c},_={path:`/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{parentResourcePath}/{resourceType}/{resourceName}`,httpMethod:`PATCH`,responses:{200:{bodyMapper:i.GenericResource},201:{bodyMapper:i.GenericResource},202:{bodyMapper:i.GenericResource},204:{bodyMapper:i.GenericResource},default:{bodyMapper:i.CloudError}},requestBody:a.parameters5,queryParameters:[a.apiVersion1],urlParameters:[a.$host,a.subscriptionId,a.resourceGroupName,a.resourceProviderNamespace,a.parentResourcePath,a.resourceType,a.resourceName],headerParameters:[a.accept,a.contentType],mediaType:`json`,serializer:c},v={path:`/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{parentResourcePath}/{resourceType}/{resourceName}`,httpMethod:`GET`,responses:{200:{bodyMapper:i.GenericResource},default:{bodyMapper:i.CloudError}},queryParameters:[a.apiVersion1],urlParameters:[a.$host,a.subscriptionId,a.resourceGroupName,a.resourceProviderNamespace,a.parentResourcePath,a.resourceType,a.resourceName],headerParameters:[a.accept],serializer:c},y={path:`/{resourceId}`,httpMethod:`HEAD`,responses:{204:{},404:{},default:{bodyMapper:i.CloudError}},queryParameters:[a.apiVersion1],urlParameters:[a.$host,a.resourceId],headerParameters:[a.accept],serializer:c},b={path:`/{resourceId}`,httpMethod:`DELETE`,responses:{200:{},201:{},202:{},204:{},default:{bodyMapper:i.CloudError}},queryParameters:[a.apiVersion1],urlParameters:[a.$host,a.resourceId],headerParameters:[a.accept],serializer:c},x={path:`/{resourceId}`,httpMethod:`PUT`,responses:{200:{bodyMapper:i.GenericResource},201:{bodyMapper:i.GenericResource},202:{bodyMapper:i.GenericResource},204:{bodyMapper:i.GenericResource},default:{bodyMapper:i.CloudError}},requestBody:a.parameters5,queryParameters:[a.apiVersion1],urlParameters:[a.$host,a.resourceId],headerParameters:[a.accept,a.contentType],mediaType:`json`,serializer:c},S={path:`/{resourceId}`,httpMethod:`PATCH`,responses:{200:{bodyMapper:i.GenericResource},201:{bodyMapper:i.GenericResource},202:{bodyMapper:i.GenericResource},204:{bodyMapper:i.GenericResource},default:{bodyMapper:i.CloudError}},requestBody:a.parameters5,queryParameters:[a.apiVersion1],urlParameters:[a.$host,a.resourceId],headerParameters:[a.accept,a.contentType],mediaType:`json`,serializer:c},C={path:`/{resourceId}`,httpMethod:`GET`,responses:{200:{bodyMapper:i.GenericResource},default:{bodyMapper:i.CloudError}},queryParameters:[a.apiVersion1],urlParameters:[a.$host,a.resourceId],headerParameters:[a.accept],serializer:c},w={path:`{nextLink}`,httpMethod:`GET`,responses:{200:{bodyMapper:i.ResourceListResult},default:{bodyMapper:i.CloudError}},urlParameters:[a.$host,a.nextLink,a.subscriptionId,a.resourceGroupName],headerParameters:[a.accept],serializer:c},T={path:`{nextLink}`,httpMethod:`GET`,responses:{200:{bodyMapper:i.ResourceListResult},default:{bodyMapper:i.CloudError}},urlParameters:[a.$host,a.nextLink,a.subscriptionId],headerParameters:[a.accept],serializer:c}})),vs=s((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.ResourceGroupsImpl=void 0;let t=(hi(),d(jr)),n=gi(),r=t.__importStar(Zo()),i=t.__importStar(Qo()),a=t.__importStar($o()),o=fs(),s=ps();e.ResourceGroupsImpl=class{constructor(e){this.client=e}list(e){let t=this.listPagingAll(e);return{next(){return t.next()},[Symbol.asyncIterator](){return this},byPage:t=>{if(t?.maxPageSize)throw Error(`maxPageSize is not supported by this operation.`);return this.listPagingPage(e,t)}}}listPagingPage(e,r){return t.__asyncGenerator(this,arguments,function*(){let i,a=r?.continuationToken;if(!a){i=yield t.__await(this._list(e));let r=i.value||[];a=i.nextLink,(0,n.setContinuationToken)(r,a),yield yield t.__await(r)}for(;a;){i=yield t.__await(this._listNext(a,e)),a=i.nextLink;let r=i.value||[];(0,n.setContinuationToken)(r,a),yield yield t.__await(r)}})}listPagingAll(e){return t.__asyncGenerator(this,arguments,function*(){var n,r,i,a;try{for(var o=!0,s=t.__asyncValues(this.listPagingPage(e)),c;c=yield t.__await(s.next()),n=c.done,!n;o=!0){a=c.value,o=!1;let e=a;yield t.__await(yield*t.__asyncDelegator(t.__asyncValues(e)))}}catch(e){r={error:e}}finally{try{!o&&!n&&(i=s.return)&&(yield t.__await(i.call(s)))}finally{if(r)throw r.error}}})}checkExistence(e,t){return this.client.sendOperationRequest({resourceGroupName:e,options:t},l)}createOrUpdate(e,t,n){return this.client.sendOperationRequest({resourceGroupName:e,parameters:t,options:n},u)}async beginDelete(e,t){let n=async(e,t)=>this.client.sendOperationRequest(e,t),r=(0,s.createLroSpec)({sendOperationFn:async(e,t)=>{let r,i=e.options?.onResponse;return{flatResponse:await n(Object.assign(Object.assign({},e),{options:Object.assign(Object.assign({},e.options),{onResponse:(e,t)=>{r=e,i?.(e,t)}})}),t),rawResponse:{statusCode:r.status,body:r.parsedBody,headers:r.headers.toJSON()}}},args:{resourceGroupName:e,options:t},spec:f}),i=await(0,o.createHttpPoller)(r,{restoreFrom:t?.resumeFrom,intervalInMs:t?.updateIntervalInMs});return await i.poll(),i}async beginDeleteAndWait(e,t){return(await this.beginDelete(e,t)).pollUntilDone()}get(e,t){return this.client.sendOperationRequest({resourceGroupName:e,options:t},p)}update(e,t,n){return this.client.sendOperationRequest({resourceGroupName:e,parameters:t,options:n},m)}async beginExportTemplate(e,t,n){let r=async(e,t)=>this.client.sendOperationRequest(e,t),i=(0,s.createLroSpec)({sendOperationFn:async(e,t)=>{let n,i=e.options?.onResponse;return{flatResponse:await r(Object.assign(Object.assign({},e),{options:Object.assign(Object.assign({},e.options),{onResponse:(e,t)=>{n=e,i?.(e,t)}})}),t),rawResponse:{statusCode:n.status,body:n.parsedBody,headers:n.headers.toJSON()}}},args:{resourceGroupName:e,parameters:t,options:n},spec:h}),a=await(0,o.createHttpPoller)(i,{restoreFrom:n?.resumeFrom,intervalInMs:n?.updateIntervalInMs,resourceLocationConfig:`location`});return await a.poll(),a}async beginExportTemplateAndWait(e,t,n){return(await this.beginExportTemplate(e,t,n)).pollUntilDone()}_list(e){return this.client.sendOperationRequest({options:e},g)}_listNext(e,t){return this.client.sendOperationRequest({nextLink:e,options:t},_)}};let c=r.createSerializer(i,!1),l={path:`/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}`,httpMethod:`HEAD`,responses:{204:{},404:{},default:{bodyMapper:i.CloudError}},queryParameters:[a.apiVersion],urlParameters:[a.$host,a.subscriptionId,a.resourceGroupName],headerParameters:[a.accept],serializer:c},u={path:`/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}`,httpMethod:`PUT`,responses:{200:{bodyMapper:i.ResourceGroup},201:{bodyMapper:i.ResourceGroup},default:{bodyMapper:i.CloudError}},requestBody:a.parameters6,queryParameters:[a.apiVersion],urlParameters:[a.$host,a.subscriptionId,a.resourceGroupName],headerParameters:[a.accept,a.contentType],mediaType:`json`,serializer:c},f={path:`/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}`,httpMethod:`DELETE`,responses:{200:{},201:{},202:{},204:{},default:{bodyMapper:i.CloudError}},queryParameters:[a.apiVersion,a.forceDeletionTypes],urlParameters:[a.$host,a.subscriptionId,a.resourceGroupName],headerParameters:[a.accept],serializer:c},p={path:`/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}`,httpMethod:`GET`,responses:{200:{bodyMapper:i.ResourceGroup},default:{bodyMapper:i.CloudError}},queryParameters:[a.apiVersion],urlParameters:[a.$host,a.subscriptionId,a.resourceGroupName],headerParameters:[a.accept],serializer:c},m={path:`/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}`,httpMethod:`PATCH`,responses:{200:{bodyMapper:i.ResourceGroup},default:{bodyMapper:i.CloudError}},requestBody:a.parameters7,queryParameters:[a.apiVersion],urlParameters:[a.$host,a.subscriptionId,a.resourceGroupName],headerParameters:[a.accept,a.contentType],mediaType:`json`,serializer:c},h={path:`/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/exportTemplate`,httpMethod:`POST`,responses:{200:{bodyMapper:i.ResourceGroupExportResult},201:{bodyMapper:i.ResourceGroupExportResult},202:{bodyMapper:i.ResourceGroupExportResult},204:{bodyMapper:i.ResourceGroupExportResult},default:{bodyMapper:i.CloudError}},requestBody:a.parameters8,queryParameters:[a.apiVersion],urlParameters:[a.$host,a.subscriptionId,a.resourceGroupName1],headerParameters:[a.accept,a.contentType],mediaType:`json`,serializer:c},g={path:`/subscriptions/{subscriptionId}/resourcegroups`,httpMethod:`GET`,responses:{200:{bodyMapper:i.ResourceGroupListResult},default:{bodyMapper:i.CloudError}},queryParameters:[a.apiVersion,a.filter,a.top],urlParameters:[a.$host,a.subscriptionId],headerParameters:[a.accept],serializer:c},_={path:`{nextLink}`,httpMethod:`GET`,responses:{200:{bodyMapper:i.ResourceGroupListResult},default:{bodyMapper:i.CloudError}},urlParameters:[a.$host,a.nextLink,a.subscriptionId],headerParameters:[a.accept],serializer:c}})),ys=s((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.TagsOperationsImpl=void 0;let t=(hi(),d(jr)),n=gi(),r=t.__importStar(Zo()),i=t.__importStar(Qo()),a=t.__importStar($o()),o=fs(),s=ps();e.TagsOperationsImpl=class{constructor(e){this.client=e}list(e){let t=this.listPagingAll(e);return{next(){return t.next()},[Symbol.asyncIterator](){return this},byPage:t=>{if(t?.maxPageSize)throw Error(`maxPageSize is not supported by this operation.`);return this.listPagingPage(e,t)}}}listPagingPage(e,r){return t.__asyncGenerator(this,arguments,function*(){let i,a=r?.continuationToken;if(!a){i=yield t.__await(this._list(e));let r=i.value||[];a=i.nextLink,(0,n.setContinuationToken)(r,a),yield yield t.__await(r)}for(;a;){i=yield t.__await(this._listNext(a,e)),a=i.nextLink;let r=i.value||[];(0,n.setContinuationToken)(r,a),yield yield t.__await(r)}})}listPagingAll(e){return t.__asyncGenerator(this,arguments,function*(){var n,r,i,a;try{for(var o=!0,s=t.__asyncValues(this.listPagingPage(e)),c;c=yield t.__await(s.next()),n=c.done,!n;o=!0){a=c.value,o=!1;let e=a;yield t.__await(yield*t.__asyncDelegator(t.__asyncValues(e)))}}catch(e){r={error:e}}finally{try{!o&&!n&&(i=s.return)&&(yield t.__await(i.call(s)))}finally{if(r)throw r.error}}})}deleteValue(e,t,n){return this.client.sendOperationRequest({tagName:e,tagValue:t,options:n},l)}createOrUpdateValue(e,t,n){return this.client.sendOperationRequest({tagName:e,tagValue:t,options:n},u)}createOrUpdate(e,t){return this.client.sendOperationRequest({tagName:e,options:t},f)}delete(e,t){return this.client.sendOperationRequest({tagName:e,options:t},p)}_list(e){return this.client.sendOperationRequest({options:e},m)}async beginCreateOrUpdateAtScope(e,t,n){let r=async(e,t)=>this.client.sendOperationRequest(e,t),i=(0,s.createLroSpec)({sendOperationFn:async(e,t)=>{let n,i=e.options?.onResponse;return{flatResponse:await r(Object.assign(Object.assign({},e),{options:Object.assign(Object.assign({},e.options),{onResponse:(e,t)=>{n=e,i?.(e,t)}})}),t),rawResponse:{statusCode:n.status,body:n.parsedBody,headers:n.headers.toJSON()}}},args:{scope:e,parameters:t,options:n},spec:h}),a=await(0,o.createHttpPoller)(i,{restoreFrom:n?.resumeFrom,intervalInMs:n?.updateIntervalInMs});return await a.poll(),a}async beginCreateOrUpdateAtScopeAndWait(e,t,n){return(await this.beginCreateOrUpdateAtScope(e,t,n)).pollUntilDone()}async beginUpdateAtScope(e,t,n){let r=async(e,t)=>this.client.sendOperationRequest(e,t),i=(0,s.createLroSpec)({sendOperationFn:async(e,t)=>{let n,i=e.options?.onResponse;return{flatResponse:await r(Object.assign(Object.assign({},e),{options:Object.assign(Object.assign({},e.options),{onResponse:(e,t)=>{n=e,i?.(e,t)}})}),t),rawResponse:{statusCode:n.status,body:n.parsedBody,headers:n.headers.toJSON()}}},args:{scope:e,parameters:t,options:n},spec:g}),a=await(0,o.createHttpPoller)(i,{restoreFrom:n?.resumeFrom,intervalInMs:n?.updateIntervalInMs});return await a.poll(),a}async beginUpdateAtScopeAndWait(e,t,n){return(await this.beginUpdateAtScope(e,t,n)).pollUntilDone()}getAtScope(e,t){return this.client.sendOperationRequest({scope:e,options:t},_)}async beginDeleteAtScope(e,t){let n=async(e,t)=>this.client.sendOperationRequest(e,t),r=(0,s.createLroSpec)({sendOperationFn:async(e,t)=>{let r,i=e.options?.onResponse;return{flatResponse:await n(Object.assign(Object.assign({},e),{options:Object.assign(Object.assign({},e.options),{onResponse:(e,t)=>{r=e,i?.(e,t)}})}),t),rawResponse:{statusCode:r.status,body:r.parsedBody,headers:r.headers.toJSON()}}},args:{scope:e,options:t},spec:v}),i=await(0,o.createHttpPoller)(r,{restoreFrom:t?.resumeFrom,intervalInMs:t?.updateIntervalInMs});return await i.poll(),i}async beginDeleteAtScopeAndWait(e,t){return(await this.beginDeleteAtScope(e,t)).pollUntilDone()}_listNext(e,t){return this.client.sendOperationRequest({nextLink:e,options:t},y)}};let c=r.createSerializer(i,!1),l={path:`/subscriptions/{subscriptionId}/tagNames/{tagName}/tagValues/{tagValue}`,httpMethod:`DELETE`,responses:{200:{},204:{},default:{bodyMapper:i.CloudError}},queryParameters:[a.apiVersion],urlParameters:[a.$host,a.subscriptionId,a.tagName,a.tagValue],headerParameters:[a.accept],serializer:c},u={path:`/subscriptions/{subscriptionId}/tagNames/{tagName}/tagValues/{tagValue}`,httpMethod:`PUT`,responses:{200:{bodyMapper:i.TagValue},201:{bodyMapper:i.TagValue},default:{bodyMapper:i.CloudError}},queryParameters:[a.apiVersion],urlParameters:[a.$host,a.subscriptionId,a.tagName,a.tagValue],headerParameters:[a.accept],serializer:c},f={path:`/subscriptions/{subscriptionId}/tagNames/{tagName}`,httpMethod:`PUT`,responses:{200:{bodyMapper:i.TagDetails},201:{bodyMapper:i.TagDetails},default:{bodyMapper:i.CloudError}},queryParameters:[a.apiVersion],urlParameters:[a.$host,a.subscriptionId,a.tagName],headerParameters:[a.accept],serializer:c},p={path:`/subscriptions/{subscriptionId}/tagNames/{tagName}`,httpMethod:`DELETE`,responses:{200:{},204:{},default:{bodyMapper:i.CloudError}},queryParameters:[a.apiVersion],urlParameters:[a.$host,a.subscriptionId,a.tagName],headerParameters:[a.accept],serializer:c},m={path:`/subscriptions/{subscriptionId}/tagNames`,httpMethod:`GET`,responses:{200:{bodyMapper:i.TagsListResult},default:{bodyMapper:i.CloudError}},queryParameters:[a.apiVersion],urlParameters:[a.$host,a.subscriptionId],headerParameters:[a.accept],serializer:c},h={path:`/{scope}/providers/Microsoft.Resources/tags/default`,httpMethod:`PUT`,responses:{200:{bodyMapper:i.TagsResource},201:{bodyMapper:i.TagsResource},202:{bodyMapper:i.TagsResource},204:{bodyMapper:i.TagsResource},default:{bodyMapper:i.CloudError}},requestBody:a.parameters9,queryParameters:[a.apiVersion],urlParameters:[a.$host,a.scope],headerParameters:[a.accept,a.contentType],mediaType:`json`,serializer:c},g={path:`/{scope}/providers/Microsoft.Resources/tags/default`,httpMethod:`PATCH`,responses:{200:{bodyMapper:i.TagsResource},201:{bodyMapper:i.TagsResource},202:{bodyMapper:i.TagsResource},204:{bodyMapper:i.TagsResource},default:{bodyMapper:i.CloudError}},requestBody:a.parameters10,queryParameters:[a.apiVersion],urlParameters:[a.$host,a.scope],headerParameters:[a.accept,a.contentType],mediaType:`json`,serializer:c},_={path:`/{scope}/providers/Microsoft.Resources/tags/default`,httpMethod:`GET`,responses:{200:{bodyMapper:i.TagsResource},default:{bodyMapper:i.CloudError}},queryParameters:[a.apiVersion],urlParameters:[a.$host,a.scope],headerParameters:[a.accept],serializer:c},v={path:`/{scope}/providers/Microsoft.Resources/tags/default`,httpMethod:`DELETE`,responses:{200:{},201:{},202:{},204:{},default:{bodyMapper:i.CloudError}},queryParameters:[a.apiVersion],urlParameters:[a.$host,a.scope],headerParameters:[a.accept],serializer:c},y={path:`{nextLink}`,httpMethod:`GET`,responses:{200:{bodyMapper:i.TagsListResult},default:{bodyMapper:i.CloudError}},urlParameters:[a.$host,a.nextLink,a.subscriptionId],headerParameters:[a.accept],serializer:c}})),bs=s((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.DeploymentOperationsImpl=void 0;let t=(hi(),d(jr)),n=gi(),r=t.__importStar(Zo()),i=t.__importStar(Qo()),a=t.__importStar($o());e.DeploymentOperationsImpl=class{constructor(e){this.client=e}listAtScope(e,t,n){let r=this.listAtScopePagingAll(e,t,n);return{next(){return r.next()},[Symbol.asyncIterator](){return this},byPage:r=>{if(r?.maxPageSize)throw Error(`maxPageSize is not supported by this operation.`);return this.listAtScopePagingPage(e,t,n,r)}}}listAtScopePagingPage(e,r,i,a){return t.__asyncGenerator(this,arguments,function*(){let o,s=a?.continuationToken;if(!s){o=yield t.__await(this._listAtScope(e,r,i));let a=o.value||[];s=o.nextLink,(0,n.setContinuationToken)(a,s),yield yield t.__await(a)}for(;s;){o=yield t.__await(this._listAtScopeNext(e,r,s,i)),s=o.nextLink;let a=o.value||[];(0,n.setContinuationToken)(a,s),yield yield t.__await(a)}})}listAtScopePagingAll(e,n,r){return t.__asyncGenerator(this,arguments,function*(){var i,a,o,s;try{for(var c=!0,l=t.__asyncValues(this.listAtScopePagingPage(e,n,r)),u;u=yield t.__await(l.next()),i=u.done,!i;c=!0){s=u.value,c=!1;let e=s;yield t.__await(yield*t.__asyncDelegator(t.__asyncValues(e)))}}catch(e){a={error:e}}finally{try{!c&&!i&&(o=l.return)&&(yield t.__await(o.call(l)))}finally{if(a)throw a.error}}})}listAtTenantScope(e,t){let n=this.listAtTenantScopePagingAll(e,t);return{next(){return n.next()},[Symbol.asyncIterator](){return this},byPage:n=>{if(n?.maxPageSize)throw Error(`maxPageSize is not supported by this operation.`);return this.listAtTenantScopePagingPage(e,t,n)}}}listAtTenantScopePagingPage(e,r,i){return t.__asyncGenerator(this,arguments,function*(){let a,o=i?.continuationToken;if(!o){a=yield t.__await(this._listAtTenantScope(e,r));let i=a.value||[];o=a.nextLink,(0,n.setContinuationToken)(i,o),yield yield t.__await(i)}for(;o;){a=yield t.__await(this._listAtTenantScopeNext(e,o,r)),o=a.nextLink;let i=a.value||[];(0,n.setContinuationToken)(i,o),yield yield t.__await(i)}})}listAtTenantScopePagingAll(e,n){return t.__asyncGenerator(this,arguments,function*(){var r,i,a,o;try{for(var s=!0,c=t.__asyncValues(this.listAtTenantScopePagingPage(e,n)),l;l=yield t.__await(c.next()),r=l.done,!r;s=!0){o=l.value,s=!1;let e=o;yield t.__await(yield*t.__asyncDelegator(t.__asyncValues(e)))}}catch(e){i={error:e}}finally{try{!s&&!r&&(a=c.return)&&(yield t.__await(a.call(c)))}finally{if(i)throw i.error}}})}listAtManagementGroupScope(e,t,n){let r=this.listAtManagementGroupScopePagingAll(e,t,n);return{next(){return r.next()},[Symbol.asyncIterator](){return this},byPage:r=>{if(r?.maxPageSize)throw Error(`maxPageSize is not supported by this operation.`);return this.listAtManagementGroupScopePagingPage(e,t,n,r)}}}listAtManagementGroupScopePagingPage(e,r,i,a){return t.__asyncGenerator(this,arguments,function*(){let o,s=a?.continuationToken;if(!s){o=yield t.__await(this._listAtManagementGroupScope(e,r,i));let a=o.value||[];s=o.nextLink,(0,n.setContinuationToken)(a,s),yield yield t.__await(a)}for(;s;){o=yield t.__await(this._listAtManagementGroupScopeNext(e,r,s,i)),s=o.nextLink;let a=o.value||[];(0,n.setContinuationToken)(a,s),yield yield t.__await(a)}})}listAtManagementGroupScopePagingAll(e,n,r){return t.__asyncGenerator(this,arguments,function*(){var i,a,o,s;try{for(var c=!0,l=t.__asyncValues(this.listAtManagementGroupScopePagingPage(e,n,r)),u;u=yield t.__await(l.next()),i=u.done,!i;c=!0){s=u.value,c=!1;let e=s;yield t.__await(yield*t.__asyncDelegator(t.__asyncValues(e)))}}catch(e){a={error:e}}finally{try{!c&&!i&&(o=l.return)&&(yield t.__await(o.call(l)))}finally{if(a)throw a.error}}})}listAtSubscriptionScope(e,t){let n=this.listAtSubscriptionScopePagingAll(e,t);return{next(){return n.next()},[Symbol.asyncIterator](){return this},byPage:n=>{if(n?.maxPageSize)throw Error(`maxPageSize is not supported by this operation.`);return this.listAtSubscriptionScopePagingPage(e,t,n)}}}listAtSubscriptionScopePagingPage(e,r,i){return t.__asyncGenerator(this,arguments,function*(){let a,o=i?.continuationToken;if(!o){a=yield t.__await(this._listAtSubscriptionScope(e,r));let i=a.value||[];o=a.nextLink,(0,n.setContinuationToken)(i,o),yield yield t.__await(i)}for(;o;){a=yield t.__await(this._listAtSubscriptionScopeNext(e,o,r)),o=a.nextLink;let i=a.value||[];(0,n.setContinuationToken)(i,o),yield yield t.__await(i)}})}listAtSubscriptionScopePagingAll(e,n){return t.__asyncGenerator(this,arguments,function*(){var r,i,a,o;try{for(var s=!0,c=t.__asyncValues(this.listAtSubscriptionScopePagingPage(e,n)),l;l=yield t.__await(c.next()),r=l.done,!r;s=!0){o=l.value,s=!1;let e=o;yield t.__await(yield*t.__asyncDelegator(t.__asyncValues(e)))}}catch(e){i={error:e}}finally{try{!s&&!r&&(a=c.return)&&(yield t.__await(a.call(c)))}finally{if(i)throw i.error}}})}list(e,t,n){let r=this.listPagingAll(e,t,n);return{next(){return r.next()},[Symbol.asyncIterator](){return this},byPage:r=>{if(r?.maxPageSize)throw Error(`maxPageSize is not supported by this operation.`);return this.listPagingPage(e,t,n,r)}}}listPagingPage(e,r,i,a){return t.__asyncGenerator(this,arguments,function*(){let o,s=a?.continuationToken;if(!s){o=yield t.__await(this._list(e,r,i));let a=o.value||[];s=o.nextLink,(0,n.setContinuationToken)(a,s),yield yield t.__await(a)}for(;s;){o=yield t.__await(this._listNext(e,r,s,i)),s=o.nextLink;let a=o.value||[];(0,n.setContinuationToken)(a,s),yield yield t.__await(a)}})}listPagingAll(e,n,r){return t.__asyncGenerator(this,arguments,function*(){var i,a,o,s;try{for(var c=!0,l=t.__asyncValues(this.listPagingPage(e,n,r)),u;u=yield t.__await(l.next()),i=u.done,!i;c=!0){s=u.value,c=!1;let e=s;yield t.__await(yield*t.__asyncDelegator(t.__asyncValues(e)))}}catch(e){a={error:e}}finally{try{!c&&!i&&(o=l.return)&&(yield t.__await(o.call(l)))}finally{if(a)throw a.error}}})}getAtScope(e,t,n,r){return this.client.sendOperationRequest({scope:e,deploymentName:t,operationId:n,options:r},s)}_listAtScope(e,t,n){return this.client.sendOperationRequest({scope:e,deploymentName:t,options:n},c)}getAtTenantScope(e,t,n){return this.client.sendOperationRequest({deploymentName:e,operationId:t,options:n},l)}_listAtTenantScope(e,t){return this.client.sendOperationRequest({deploymentName:e,options:t},u)}getAtManagementGroupScope(e,t,n,r){return this.client.sendOperationRequest({groupId:e,deploymentName:t,operationId:n,options:r},f)}_listAtManagementGroupScope(e,t,n){return this.client.sendOperationRequest({groupId:e,deploymentName:t,options:n},p)}getAtSubscriptionScope(e,t,n){return this.client.sendOperationRequest({deploymentName:e,operationId:t,options:n},m)}_listAtSubscriptionScope(e,t){return this.client.sendOperationRequest({deploymentName:e,options:t},h)}get(e,t,n,r){return this.client.sendOperationRequest({resourceGroupName:e,deploymentName:t,operationId:n,options:r},g)}_list(e,t,n){return this.client.sendOperationRequest({resourceGroupName:e,deploymentName:t,options:n},_)}_listAtScopeNext(e,t,n,r){return this.client.sendOperationRequest({scope:e,deploymentName:t,nextLink:n,options:r},v)}_listAtTenantScopeNext(e,t,n){return this.client.sendOperationRequest({deploymentName:e,nextLink:t,options:n},y)}_listAtManagementGroupScopeNext(e,t,n,r){return this.client.sendOperationRequest({groupId:e,deploymentName:t,nextLink:n,options:r},b)}_listAtSubscriptionScopeNext(e,t,n){return this.client.sendOperationRequest({deploymentName:e,nextLink:t,options:n},x)}_listNext(e,t,n,r){return this.client.sendOperationRequest({resourceGroupName:e,deploymentName:t,nextLink:n,options:r},S)}};let o=r.createSerializer(i,!1),s={path:`/{scope}/providers/Microsoft.Resources/deployments/{deploymentName}/operations/{operationId}`,httpMethod:`GET`,responses:{200:{bodyMapper:i.DeploymentOperation},default:{bodyMapper:i.CloudError}},queryParameters:[a.apiVersion],urlParameters:[a.$host,a.scope,a.deploymentName,a.operationId],headerParameters:[a.accept],serializer:o},c={path:`/{scope}/providers/Microsoft.Resources/deployments/{deploymentName}/operations`,httpMethod:`GET`,responses:{200:{bodyMapper:i.DeploymentOperationsListResult},default:{bodyMapper:i.CloudError}},queryParameters:[a.apiVersion,a.top],urlParameters:[a.$host,a.scope,a.deploymentName],headerParameters:[a.accept],serializer:o},l={path:`/providers/Microsoft.Resources/deployments/{deploymentName}/operations/{operationId}`,httpMethod:`GET`,responses:{200:{bodyMapper:i.DeploymentOperation},default:{bodyMapper:i.CloudError}},queryParameters:[a.apiVersion],urlParameters:[a.$host,a.deploymentName,a.operationId],headerParameters:[a.accept],serializer:o},u={path:`/providers/Microsoft.Resources/deployments/{deploymentName}/operations`,httpMethod:`GET`,responses:{200:{bodyMapper:i.DeploymentOperationsListResult},default:{bodyMapper:i.CloudError}},queryParameters:[a.apiVersion,a.top],urlParameters:[a.$host,a.deploymentName],headerParameters:[a.accept],serializer:o},f={path:`/providers/Microsoft.Management/managementGroups/{groupId}/providers/Microsoft.Resources/deployments/{deploymentName}/operations/{operationId}`,httpMethod:`GET`,responses:{200:{bodyMapper:i.DeploymentOperation},default:{bodyMapper:i.CloudError}},queryParameters:[a.apiVersion],urlParameters:[a.$host,a.deploymentName,a.groupId,a.operationId],headerParameters:[a.accept],serializer:o},p={path:`/providers/Microsoft.Management/managementGroups/{groupId}/providers/Microsoft.Resources/deployments/{deploymentName}/operations`,httpMethod:`GET`,responses:{200:{bodyMapper:i.DeploymentOperationsListResult},default:{bodyMapper:i.CloudError}},queryParameters:[a.apiVersion,a.top],urlParameters:[a.$host,a.deploymentName,a.groupId],headerParameters:[a.accept],serializer:o},m={path:`/subscriptions/{subscriptionId}/providers/Microsoft.Resources/deployments/{deploymentName}/operations/{operationId}`,httpMethod:`GET`,responses:{200:{bodyMapper:i.DeploymentOperation},default:{bodyMapper:i.CloudError}},queryParameters:[a.apiVersion],urlParameters:[a.$host,a.deploymentName,a.subscriptionId,a.operationId],headerParameters:[a.accept],serializer:o},h={path:`/subscriptions/{subscriptionId}/providers/Microsoft.Resources/deployments/{deploymentName}/operations`,httpMethod:`GET`,responses:{200:{bodyMapper:i.DeploymentOperationsListResult},default:{bodyMapper:i.CloudError}},queryParameters:[a.apiVersion,a.top],urlParameters:[a.$host,a.deploymentName,a.subscriptionId],headerParameters:[a.accept],serializer:o},g={path:`/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/deployments/{deploymentName}/operations/{operationId}`,httpMethod:`GET`,responses:{200:{bodyMapper:i.DeploymentOperation},default:{bodyMapper:i.CloudError}},queryParameters:[a.apiVersion],urlParameters:[a.$host,a.deploymentName,a.subscriptionId,a.resourceGroupName,a.operationId],headerParameters:[a.accept],serializer:o},_={path:`/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/deployments/{deploymentName}/operations`,httpMethod:`GET`,responses:{200:{bodyMapper:i.DeploymentOperationsListResult},default:{bodyMapper:i.CloudError}},queryParameters:[a.apiVersion,a.top],urlParameters:[a.$host,a.deploymentName,a.subscriptionId,a.resourceGroupName],headerParameters:[a.accept],serializer:o},v={path:`{nextLink}`,httpMethod:`GET`,responses:{200:{bodyMapper:i.DeploymentOperationsListResult},default:{bodyMapper:i.CloudError}},urlParameters:[a.$host,a.nextLink,a.scope,a.deploymentName],headerParameters:[a.accept],serializer:o},y={path:`{nextLink}`,httpMethod:`GET`,responses:{200:{bodyMapper:i.DeploymentOperationsListResult},default:{bodyMapper:i.CloudError}},urlParameters:[a.$host,a.nextLink,a.deploymentName],headerParameters:[a.accept],serializer:o},b={path:`{nextLink}`,httpMethod:`GET`,responses:{200:{bodyMapper:i.DeploymentOperationsListResult},default:{bodyMapper:i.CloudError}},urlParameters:[a.$host,a.nextLink,a.deploymentName,a.groupId],headerParameters:[a.accept],serializer:o},x={path:`{nextLink}`,httpMethod:`GET`,responses:{200:{bodyMapper:i.DeploymentOperationsListResult},default:{bodyMapper:i.CloudError}},urlParameters:[a.$host,a.nextLink,a.deploymentName,a.subscriptionId],headerParameters:[a.accept],serializer:o},S={path:`{nextLink}`,httpMethod:`GET`,responses:{200:{bodyMapper:i.DeploymentOperationsListResult},default:{bodyMapper:i.CloudError}},urlParameters:[a.$host,a.nextLink,a.deploymentName,a.subscriptionId,a.resourceGroupName],headerParameters:[a.accept],serializer:o}})),xs=s((e=>{Object.defineProperty(e,`__esModule`,{value:!0});let t=(hi(),d(jr));t.__exportStar(es(),e),t.__exportStar(ms(),e),t.__exportStar(hs(),e),t.__exportStar(gs(),e),t.__exportStar(_s(),e),t.__exportStar(vs(),e),t.__exportStar(ys(),e),t.__exportStar(bs(),e)})),Ss=s((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.ResourceManagementClient=void 0;let t=(hi(),d(jr)),n=t.__importStar(Zo()),r=t.__importStar(Ro()),i=xs();e.ResourceManagementClient=class extends n.ServiceClient{constructor(e,t,a){if(e===void 0)throw Error(`'credentials' cannot be null`);let o;typeof t==`string`?o=t:typeof t==`object`&&(a=t),a||={};let s={requestContentType:`application/json; charset=utf-8`,credential:e},c=`azsdk-js-arm-resources/6.1.0`,l=a.userAgentOptions&&a.userAgentOptions.userAgentPrefix?`${a.userAgentOptions.userAgentPrefix} ${c}`:`${c}`,u=Object.assign(Object.assign(Object.assign({},s),a),{userAgentOptions:{userAgentPrefix:l},endpoint:a.endpoint??a.baseUri??`https://management.azure.com`});super(u);let d=!1;a?.pipeline&&a.pipeline.getOrderedPolicies().length>0&&(d=a.pipeline.getOrderedPolicies().some(e=>e.name===r.bearerTokenAuthenticationPolicyName)),(!a||!a.pipeline||a.pipeline.getOrderedPolicies().length==0||!d)&&(this.pipeline.removePolicy({name:r.bearerTokenAuthenticationPolicyName}),this.pipeline.addPolicy(r.bearerTokenAuthenticationPolicy({credential:e,scopes:u.credentialScopes??`${u.endpoint}/.default`,challengeCallbacks:{authorizeRequestOnChallenge:n.authorizeRequestOnClaimChallenge}}))),this.subscriptionId=o,this.$host=a.$host||`https://management.azure.com`,this.apiVersion=a.apiVersion||`2025-03-01`,this.operations=new i.OperationsImpl(this),this.deployments=new i.DeploymentsImpl(this),this.providers=new i.ProvidersImpl(this),this.providerResourceTypes=new i.ProviderResourceTypesImpl(this),this.resources=new i.ResourcesImpl(this),this.resourceGroups=new i.ResourceGroupsImpl(this),this.tagsOperations=new i.TagsOperationsImpl(this),this.deploymentOperations=new i.DeploymentOperationsImpl(this),this.addCustomApiVersionPolicy(a.apiVersion)}addCustomApiVersionPolicy(e){e&&this.pipeline.addPolicy({name:`CustomApiVersionPolicy`,async sendRequest(t,n){let r=t.url.split(`?`);if(r.length>1){let n=r[1].split(`&`).map(t=>t.indexOf(`api-version`)>-1?`api-version=`+e:t);t.url=r[0]+`?`+n.join(`&`)}return n(t)}})}}})),Cs=s((e=>{Object.defineProperty(e,`__esModule`,{value:!0})})),ws=s((e=>{Object.defineProperty(e,`__esModule`,{value:!0})})),Ts=s((e=>{Object.defineProperty(e,`__esModule`,{value:!0})})),Es=s((e=>{Object.defineProperty(e,`__esModule`,{value:!0})})),Ds=s((e=>{Object.defineProperty(e,`__esModule`,{value:!0})})),Os=s((e=>{Object.defineProperty(e,`__esModule`,{value:!0})})),ks=s((e=>{Object.defineProperty(e,`__esModule`,{value:!0})})),As=s((e=>{Object.defineProperty(e,`__esModule`,{value:!0})})),js=s((e=>{Object.defineProperty(e,`__esModule`,{value:!0});let t=(hi(),d(jr));t.__exportStar(Cs(),e),t.__exportStar(ws(),e),t.__exportStar(Ts(),e),t.__exportStar(Es(),e),t.__exportStar(Ds(),e),t.__exportStar(Os(),e),t.__exportStar(ks(),e),t.__exportStar(As(),e)})),Ms=s((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.ResourceManagementClient=e.getContinuationToken=void 0;let t=(hi(),d(jr));var n=gi();Object.defineProperty(e,`getContinuationToken`,{enumerable:!0,get:function(){return n.getContinuationToken}}),t.__exportStar(_i(),e);var r=Ss();Object.defineProperty(e,`ResourceManagementClient`,{enumerable:!0,get:function(){return r.ResourceManagementClient}}),t.__exportStar(js(),e)})),Ns=s((e=>{Object.defineProperty(e,`__esModule`,{value:!0});var t=(hi(),d(jr)),n=Zo(),r=Ro(),i=fs();function a(e){var t=Object.create(null);return e&&Object.keys(e).forEach(function(n){if(n!==`default`){var r=Object.getOwnPropertyDescriptor(e,n);Object.defineProperty(t,n,r.get?r:{enumerable:!0,get:function(){return e[n]}})}}),t.default=e,Object.freeze(t)}var o=a(n),s=a(r);let c=new WeakMap;function l(e){if(!(typeof e!=`object`||!e))return c.get(e)?.continuationToken}function u(e,t){if(typeof e!=`object`||!e||!t)return;let n=c.get(e)??{};n.continuationToken=t,c.set(e,n)}e.KnownDeploymentStacksDeleteDetachEnum=void 0,(function(e){e.Delete=`delete`,e.Detach=`detach`})(e.KnownDeploymentStacksDeleteDetachEnum||={}),e.KnownDenySettingsMode=void 0,(function(e){e.DenyDelete=`denyDelete`,e.DenyWriteAndDelete=`denyWriteAndDelete`,e.None=`none`})(e.KnownDenySettingsMode||={}),e.KnownDeploymentStackProvisioningState=void 0,(function(e){e.Creating=`creating`,e.Validating=`validating`,e.Waiting=`waiting`,e.Deploying=`deploying`,e.Canceling=`canceling`,e.UpdatingDenyAssignments=`updatingDenyAssignments`,e.DeletingResources=`deletingResources`,e.Succeeded=`succeeded`,e.Failed=`failed`,e.Canceled=`canceled`,e.Deleting=`deleting`})(e.KnownDeploymentStackProvisioningState||={}),e.KnownResourceStatusMode=void 0,(function(e){e.Managed=`managed`,e.RemoveDenyFailed=`removeDenyFailed`,e.DeleteFailed=`deleteFailed`})(e.KnownResourceStatusMode||={}),e.KnownDenyStatusMode=void 0,(function(e){e.DenyDelete=`denyDelete`,e.NotSupported=`notSupported`,e.Inapplicable=`inapplicable`,e.DenyWriteAndDelete=`denyWriteAndDelete`,e.RemovedBySystem=`removedBySystem`,e.None=`none`})(e.KnownDenyStatusMode||={}),e.KnownCreatedByType=void 0,(function(e){e.User=`User`,e.Application=`Application`,e.ManagedIdentity=`ManagedIdentity`,e.Key=`Key`})(e.KnownCreatedByType||={}),e.KnownUnmanageActionResourceMode=void 0,(function(e){e.Delete=`delete`,e.Detach=`detach`})(e.KnownUnmanageActionResourceMode||={}),e.KnownUnmanageActionResourceGroupMode=void 0,(function(e){e.Delete=`delete`,e.Detach=`detach`})(e.KnownUnmanageActionResourceGroupMode||={}),e.KnownUnmanageActionManagementGroupMode=void 0,(function(e){e.Delete=`delete`,e.Detach=`detach`})(e.KnownUnmanageActionManagementGroupMode||={});let f={type:{name:`Composite`,className:`DeploymentStackListResult`,modelProperties:{value:{serializedName:`value`,type:{name:`Sequence`,element:{type:{name:`Composite`,className:`DeploymentStack`}}}},nextLink:{serializedName:`nextLink`,readOnly:!0,type:{name:`String`}}}}},p={type:{name:`Composite`,className:`DeploymentStacksTemplateLink`,modelProperties:{uri:{serializedName:`uri`,type:{name:`String`}},id:{serializedName:`id`,type:{name:`String`}},relativePath:{serializedName:`relativePath`,type:{name:`String`}},queryString:{serializedName:`queryString`,type:{name:`String`}},contentVersion:{serializedName:`contentVersion`,type:{name:`String`}}}}},m={type:{name:`Composite`,className:`DeploymentParameter`,modelProperties:{value:{serializedName:`value`,type:{name:`any`}},type:{serializedName:`type`,type:{name:`String`}},reference:{serializedName:`reference`,type:{name:`Composite`,className:`KeyVaultParameterReference`}}}}},h={type:{name:`Composite`,className:`KeyVaultParameterReference`,modelProperties:{keyVault:{serializedName:`keyVault`,type:{name:`Composite`,className:`KeyVaultReference`}},secretName:{serializedName:`secretName`,required:!0,type:{name:`String`}},secretVersion:{serializedName:`secretVersion`,type:{name:`String`}}}}},g={type:{name:`Composite`,className:`KeyVaultReference`,modelProperties:{id:{serializedName:`id`,required:!0,type:{name:`String`}}}}},_={type:{name:`Composite`,className:`DeploymentStacksParametersLink`,modelProperties:{uri:{serializedName:`uri`,required:!0,type:{name:`String`}},contentVersion:{serializedName:`contentVersion`,type:{name:`String`}}}}},v={type:{name:`Composite`,className:`ActionOnUnmanage`,modelProperties:{resources:{serializedName:`resources`,required:!0,type:{name:`String`}},resourceGroups:{serializedName:`resourceGroups`,type:{name:`String`}},managementGroups:{serializedName:`managementGroups`,type:{name:`String`}}}}},y={type:{name:`Composite`,className:`DeploymentStacksDebugSetting`,modelProperties:{detailLevel:{serializedName:`detailLevel`,type:{name:`String`}}}}},b={type:{name:`Composite`,className:`DenySettings`,modelProperties:{mode:{serializedName:`mode`,required:!0,type:{name:`String`}},excludedPrincipals:{serializedName:`excludedPrincipals`,type:{name:`Sequence`,element:{type:{name:`String`}}}},excludedActions:{serializedName:`excludedActions`,type:{name:`Sequence`,element:{type:{name:`String`}}}},applyToChildScopes:{serializedName:`applyToChildScopes`,type:{name:`Boolean`}}}}},x={type:{name:`Composite`,className:`ResourceReference`,modelProperties:{id:{serializedName:`id`,readOnly:!0,type:{name:`String`}}}}},S={type:{name:`Composite`,className:`DeploymentStacksError`,modelProperties:{error:{serializedName:`error`,type:{name:`Composite`,className:`ErrorDetail`}}}}},C={type:{name:`Composite`,className:`ErrorDetail`,modelProperties:{code:{serializedName:`code`,readOnly:!0,type:{name:`String`}},message:{serializedName:`message`,readOnly:!0,type:{name:`String`}},target:{serializedName:`target`,readOnly:!0,type:{name:`String`}},details:{serializedName:`details`,readOnly:!0,type:{name:`Sequence`,element:{type:{name:`Composite`,className:`ErrorDetail`}}}},additionalInfo:{serializedName:`additionalInfo`,readOnly:!0,type:{name:`Sequence`,element:{type:{name:`Composite`,className:`ErrorAdditionalInfo`}}}}}}},w={type:{name:`Composite`,className:`ErrorAdditionalInfo`,modelProperties:{type:{serializedName:`type`,readOnly:!0,type:{name:`String`}},info:{serializedName:`info`,readOnly:!0,type:{name:`Dictionary`,value:{type:{name:`any`}}}}}}},T={type:{name:`Composite`,className:`AzureResourceBase`,modelProperties:{id:{serializedName:`id`,readOnly:!0,type:{name:`String`}},name:{serializedName:`name`,readOnly:!0,type:{name:`String`}},type:{serializedName:`type`,readOnly:!0,type:{name:`String`}},systemData:{serializedName:`systemData`,type:{name:`Composite`,className:`SystemData`}}}}},E={type:{name:`Composite`,className:`SystemData`,modelProperties:{createdBy:{serializedName:`createdBy`,type:{name:`String`}},createdByType:{serializedName:`createdByType`,type:{name:`String`}},createdAt:{serializedName:`createdAt`,type:{name:`DateTime`}},lastModifiedBy:{serializedName:`lastModifiedBy`,type:{name:`String`}},lastModifiedByType:{serializedName:`lastModifiedByType`,type:{name:`String`}},lastModifiedAt:{serializedName:`lastModifiedAt`,type:{name:`DateTime`}}}}},D={type:{name:`Composite`,className:`DeploymentStackTemplateDefinition`,modelProperties:{template:{serializedName:`template`,type:{name:`Dictionary`,value:{type:{name:`any`}}}},templateLink:{serializedName:`templateLink`,type:{name:`Composite`,className:`DeploymentStacksTemplateLink`}}}}},O={type:{name:`Composite`,className:`DeploymentStackValidateProperties`,modelProperties:{actionOnUnmanage:{serializedName:`actionOnUnmanage`,type:{name:`Composite`,className:`ActionOnUnmanage`}},correlationId:{serializedName:`correlationId`,type:{name:`String`}},denySettings:{serializedName:`denySettings`,type:{name:`Composite`,className:`DenySettings`}},deploymentScope:{serializedName:`deploymentScope`,type:{name:`String`}},description:{serializedName:`description`,type:{name:`String`}},parameters:{serializedName:`parameters`,type:{name:`Dictionary`,value:{type:{name:`Composite`,className:`DeploymentParameter`}}}},templateLink:{serializedName:`templateLink`,type:{name:`Composite`,className:`DeploymentStacksTemplateLink`}},validatedResources:{serializedName:`validatedResources`,type:{name:`Sequence`,element:{type:{name:`Composite`,className:`ResourceReference`}}}}}}},k={type:{name:`Composite`,className:`ResourceReferenceExtended`,modelProperties:Object.assign(Object.assign({},x.type.modelProperties),S.type.modelProperties)}},A={type:{name:`Composite`,className:`ManagedResourceReference`,modelProperties:Object.assign(Object.assign({},x.type.modelProperties),{status:{serializedName:`status`,type:{name:`String`}},denyStatus:{defaultValue:`none`,serializedName:`denyStatus`,type:{name:`String`}}})}},j={type:{name:`Composite`,className:`DeploymentStackProperties`,modelProperties:Object.assign(Object.assign({},S.type.modelProperties),{template:{serializedName:`template`,type:{name:`Dictionary`,value:{type:{name:`any`}}}},templateLink:{serializedName:`templateLink`,type:{name:`Composite`,className:`DeploymentStacksTemplateLink`}},parameters:{serializedName:`parameters`,type:{name:`Dictionary`,value:{type:{name:`Composite`,className:`DeploymentParameter`}}}},parametersLink:{serializedName:`parametersLink`,type:{name:`Composite`,className:`DeploymentStacksParametersLink`}},actionOnUnmanage:{serializedName:`actionOnUnmanage`,type:{name:`Composite`,className:`ActionOnUnmanage`}},debugSetting:{serializedName:`debugSetting`,type:{name:`Composite`,className:`DeploymentStacksDebugSetting`}},bypassStackOutOfSyncError:{serializedName:`bypassStackOutOfSyncError`,type:{name:`Boolean`}},deploymentScope:{serializedName:`deploymentScope`,type:{name:`String`}},description:{constraints:{MaxLength:4096},serializedName:`description`,type:{name:`String`}},denySettings:{serializedName:`denySettings`,type:{name:`Composite`,className:`DenySettings`}},provisioningState:{serializedName:`provisioningState`,readOnly:!0,type:{name:`String`}},correlationId:{serializedName:`correlationId`,readOnly:!0,type:{name:`String`}},detachedResources:{serializedName:`detachedResources`,readOnly:!0,type:{name:`Sequence`,element:{type:{name:`Composite`,className:`ResourceReference`}}}},deletedResources:{serializedName:`deletedResources`,readOnly:!0,type:{name:`Sequence`,element:{type:{name:`Composite`,className:`ResourceReference`}}}},failedResources:{serializedName:`failedResources`,readOnly:!0,type:{name:`Sequence`,element:{type:{name:`Composite`,className:`ResourceReferenceExtended`}}}},resources:{serializedName:`resources`,readOnly:!0,type:{name:`Sequence`,element:{type:{name:`Composite`,className:`ManagedResourceReference`}}}},deploymentId:{serializedName:`deploymentId`,readOnly:!0,type:{name:`String`}},outputs:{serializedName:`outputs`,readOnly:!0,type:{name:`Dictionary`,value:{type:{name:`any`}}}},duration:{serializedName:`duration`,readOnly:!0,type:{name:`String`}}})}},M={type:{name:`Composite`,className:`DeploymentStackValidateResult`,modelProperties:Object.assign(Object.assign(Object.assign({},T.type.modelProperties),S.type.modelProperties),{properties:{serializedName:`properties`,type:{name:`Composite`,className:`DeploymentStackValidateProperties`}}})}},N={type:{name:`Composite`,className:`DeploymentStack`,modelProperties:Object.assign(Object.assign({},T.type.modelProperties),{location:{serializedName:`location`,type:{name:`String`}},tags:{serializedName:`tags`,type:{name:`Dictionary`,value:{type:{name:`String`}}}},properties:{serializedName:`properties`,type:{name:`Composite`,className:`DeploymentStackProperties`}}})}};var ee=Object.freeze({__proto__:null,ActionOnUnmanage:v,AzureResourceBase:T,DenySettings:b,DeploymentParameter:m,DeploymentStack:N,DeploymentStackListResult:f,DeploymentStackProperties:j,DeploymentStackTemplateDefinition:D,DeploymentStackValidateProperties:O,DeploymentStackValidateResult:M,DeploymentStacksDebugSetting:y,DeploymentStacksDeleteAtManagementGroupHeaders:{type:{name:`Composite`,className:`DeploymentStacksDeleteAtManagementGroupHeaders`,modelProperties:{location:{serializedName:`location`,type:{name:`String`}}}}},DeploymentStacksDeleteAtResourceGroupHeaders:{type:{name:`Composite`,className:`DeploymentStacksDeleteAtResourceGroupHeaders`,modelProperties:{location:{serializedName:`location`,type:{name:`String`}}}}},DeploymentStacksDeleteAtSubscriptionHeaders:{type:{name:`Composite`,className:`DeploymentStacksDeleteAtSubscriptionHeaders`,modelProperties:{location:{serializedName:`location`,type:{name:`String`}}}}},DeploymentStacksError:S,DeploymentStacksParametersLink:_,DeploymentStacksTemplateLink:p,DeploymentStacksValidateStackAtManagementGroupHeaders:{type:{name:`Composite`,className:`DeploymentStacksValidateStackAtManagementGroupHeaders`,modelProperties:{location:{serializedName:`location`,type:{name:`String`}},retryAfter:{serializedName:`retry-after`,type:{name:`String`}}}}},DeploymentStacksValidateStackAtResourceGroupHeaders:{type:{name:`Composite`,className:`DeploymentStacksValidateStackAtResourceGroupHeaders`,modelProperties:{location:{serializedName:`location`,type:{name:`String`}},retryAfter:{serializedName:`retry-after`,type:{name:`String`}}}}},DeploymentStacksValidateStackAtSubscriptionHeaders:{type:{name:`Composite`,className:`DeploymentStacksValidateStackAtSubscriptionHeaders`,modelProperties:{location:{serializedName:`location`,type:{name:`String`}},retryAfter:{serializedName:`retry-after`,type:{name:`String`}}}}},ErrorAdditionalInfo:w,ErrorDetail:C,KeyVaultParameterReference:h,KeyVaultReference:g,ManagedResourceReference:A,ResourceReference:x,ResourceReferenceExtended:k,SystemData:E});let P={parameterPath:`accept`,mapper:{defaultValue:`application/json`,isConstant:!0,serializedName:`Accept`,type:{name:`String`}}},F={parameterPath:`$host`,mapper:{serializedName:`$host`,required:!0,type:{name:`String`}},skipEncoding:!0},I={parameterPath:`subscriptionId`,mapper:{serializedName:`subscriptionId`,required:!0,type:{name:`Uuid`}}},L={parameterPath:`resourceGroupName`,mapper:{constraints:{MaxLength:90,MinLength:1},serializedName:`resourceGroupName`,required:!0,type:{name:`String`}}},R={parameterPath:`apiVersion`,mapper:{defaultValue:`2024-03-01`,isConstant:!0,serializedName:`api-version`,type:{name:`String`}}},z={parameterPath:`managementGroupId`,mapper:{constraints:{Pattern:RegExp(`^[-\\w\\._\\(\\)]+$`),MaxLength:90,MinLength:1},serializedName:`managementGroupId`,required:!0,type:{name:`String`}}},B={parameterPath:[`options`,`contentType`],mapper:{defaultValue:`application/json`,isConstant:!0,serializedName:`Content-Type`,type:{name:`String`}}},te={parameterPath:`deploymentStack`,mapper:N},V={parameterPath:`deploymentStackName`,mapper:{constraints:{Pattern:RegExp(`^[-\\w\\._\\(\\)]+$`),MaxLength:90,MinLength:1},serializedName:`deploymentStackName`,required:!0,type:{name:`String`}}},ne={parameterPath:[`options`,`unmanageActionResources`],mapper:{serializedName:`unmanageAction.Resources`,type:{name:`String`}}},re={parameterPath:[`options`,`unmanageActionResourceGroups`],mapper:{serializedName:`unmanageAction.ResourceGroups`,type:{name:`String`}}},H={parameterPath:[`options`,`unmanageActionManagementGroups`],mapper:{serializedName:`unmanageAction.ManagementGroups`,type:{name:`String`}}},ie={parameterPath:[`options`,`bypassStackOutOfSyncError`],mapper:{serializedName:`bypassStackOutOfSyncError`,type:{name:`Boolean`}}},U={parameterPath:`nextLink`,mapper:{serializedName:`nextLink`,required:!0,type:{name:`String`}},skipEncoding:!0};function W(e){let{args:n,spec:r,sendOperationFn:i}=e;return{requestMethod:r.httpMethod,requestPath:r.path,sendInitialRequest:()=>i(n,r),sendPollRequest:(e,a)=>{let o=t.__rest(r,[`requestBody`]);return i(n,Object.assign(Object.assign({},o),{httpMethod:`GET`,path:e,abortSignal:a?.abortSignal}))}}}var ae=class{constructor(e){this.client=e}listAtResourceGroup(e,t){let n=this.listAtResourceGroupPagingAll(e,t);return{next(){return n.next()},[Symbol.asyncIterator](){return this},byPage:n=>{if(n?.maxPageSize)throw Error(`maxPageSize is not supported by this operation.`);return this.listAtResourceGroupPagingPage(e,t,n)}}}listAtResourceGroupPagingPage(e,n,r){return t.__asyncGenerator(this,arguments,function*(){let i,a=r?.continuationToken;if(!a){i=yield t.__await(this._listAtResourceGroup(e,n));let r=i.value||[];a=i.nextLink,u(r,a),yield yield t.__await(r)}for(;a;){i=yield t.__await(this._listAtResourceGroupNext(e,a,n)),a=i.nextLink;let r=i.value||[];u(r,a),yield yield t.__await(r)}})}listAtResourceGroupPagingAll(e,n){return t.__asyncGenerator(this,arguments,function*(){var r,i,a,o;try{for(var s=!0,c=t.__asyncValues(this.listAtResourceGroupPagingPage(e,n)),l;l=yield t.__await(c.next()),r=l.done,!r;s=!0){o=l.value,s=!1;let e=o;yield t.__await(yield*t.__asyncDelegator(t.__asyncValues(e)))}}catch(e){i={error:e}}finally{try{!s&&!r&&(a=c.return)&&(yield t.__await(a.call(c)))}finally{if(i)throw i.error}}})}listAtSubscription(e){let t=this.listAtSubscriptionPagingAll(e);return{next(){return t.next()},[Symbol.asyncIterator](){return this},byPage:t=>{if(t?.maxPageSize)throw Error(`maxPageSize is not supported by this operation.`);return this.listAtSubscriptionPagingPage(e,t)}}}listAtSubscriptionPagingPage(e,n){return t.__asyncGenerator(this,arguments,function*(){let r,i=n?.continuationToken;if(!i){r=yield t.__await(this._listAtSubscription(e));let n=r.value||[];i=r.nextLink,u(n,i),yield yield t.__await(n)}for(;i;){r=yield t.__await(this._listAtSubscriptionNext(i,e)),i=r.nextLink;let n=r.value||[];u(n,i),yield yield t.__await(n)}})}listAtSubscriptionPagingAll(e){return t.__asyncGenerator(this,arguments,function*(){var n,r,i,a;try{for(var o=!0,s=t.__asyncValues(this.listAtSubscriptionPagingPage(e)),c;c=yield t.__await(s.next()),n=c.done,!n;o=!0){a=c.value,o=!1;let e=a;yield t.__await(yield*t.__asyncDelegator(t.__asyncValues(e)))}}catch(e){r={error:e}}finally{try{!o&&!n&&(i=s.return)&&(yield t.__await(i.call(s)))}finally{if(r)throw r.error}}})}listAtManagementGroup(e,t){let n=this.listAtManagementGroupPagingAll(e,t);return{next(){return n.next()},[Symbol.asyncIterator](){return this},byPage:n=>{if(n?.maxPageSize)throw Error(`maxPageSize is not supported by this operation.`);return this.listAtManagementGroupPagingPage(e,t,n)}}}listAtManagementGroupPagingPage(e,n,r){return t.__asyncGenerator(this,arguments,function*(){let i,a=r?.continuationToken;if(!a){i=yield t.__await(this._listAtManagementGroup(e,n));let r=i.value||[];a=i.nextLink,u(r,a),yield yield t.__await(r)}for(;a;){i=yield t.__await(this._listAtManagementGroupNext(e,a,n)),a=i.nextLink;let r=i.value||[];u(r,a),yield yield t.__await(r)}})}listAtManagementGroupPagingAll(e,n){return t.__asyncGenerator(this,arguments,function*(){var r,i,a,o;try{for(var s=!0,c=t.__asyncValues(this.listAtManagementGroupPagingPage(e,n)),l;l=yield t.__await(c.next()),r=l.done,!r;s=!0){o=l.value,s=!1;let e=o;yield t.__await(yield*t.__asyncDelegator(t.__asyncValues(e)))}}catch(e){i={error:e}}finally{try{!s&&!r&&(a=c.return)&&(yield t.__await(a.call(c)))}finally{if(i)throw i.error}}})}_listAtResourceGroup(e,t){return this.client.sendOperationRequest({resourceGroupName:e,options:t},oe)}_listAtSubscription(e){return this.client.sendOperationRequest({options:e},se)}_listAtManagementGroup(e,t){return this.client.sendOperationRequest({managementGroupId:e,options:t},ce)}beginCreateOrUpdateAtResourceGroup(e,n,r,a){return t.__awaiter(this,void 0,void 0,function*(){let o=(e,n)=>t.__awaiter(this,void 0,void 0,function*(){return this.client.sendOperationRequest(e,n)}),s=W({sendOperationFn:(e,n)=>t.__awaiter(this,void 0,void 0,function*(){let t,r=e.options?.onResponse;return{flatResponse:yield o(Object.assign(Object.assign({},e),{options:Object.assign(Object.assign({},e.options),{onResponse:(e,n)=>{t=e,r?.(e,n)}})}),n),rawResponse:{statusCode:t.status,body:t.parsedBody,headers:t.headers.toJSON()}}}),args:{resourceGroupName:e,deploymentStackName:n,deploymentStack:r,options:a},spec:le}),c=yield i.createHttpPoller(s,{restoreFrom:a?.resumeFrom,intervalInMs:a?.updateIntervalInMs,resourceLocationConfig:`azure-async-operation`});return yield c.poll(),c})}beginCreateOrUpdateAtResourceGroupAndWait(e,n,r,i){return t.__awaiter(this,void 0,void 0,function*(){return(yield this.beginCreateOrUpdateAtResourceGroup(e,n,r,i)).pollUntilDone()})}getAtResourceGroup(e,t,n){return this.client.sendOperationRequest({resourceGroupName:e,deploymentStackName:t,options:n},ue)}beginDeleteAtResourceGroup(e,n,r){return t.__awaiter(this,void 0,void 0,function*(){let a=(e,n)=>t.__awaiter(this,void 0,void 0,function*(){return this.client.sendOperationRequest(e,n)}),o=W({sendOperationFn:(e,n)=>t.__awaiter(this,void 0,void 0,function*(){let t,r=e.options?.onResponse;return{flatResponse:yield a(Object.assign(Object.assign({},e),{options:Object.assign(Object.assign({},e.options),{onResponse:(e,n)=>{t=e,r?.(e,n)}})}),n),rawResponse:{statusCode:t.status,body:t.parsedBody,headers:t.headers.toJSON()}}}),args:{resourceGroupName:e,deploymentStackName:n,options:r},spec:de}),s=yield i.createHttpPoller(o,{restoreFrom:r?.resumeFrom,intervalInMs:r?.updateIntervalInMs,resourceLocationConfig:`location`});return yield s.poll(),s})}beginDeleteAtResourceGroupAndWait(e,n,r){return t.__awaiter(this,void 0,void 0,function*(){return(yield this.beginDeleteAtResourceGroup(e,n,r)).pollUntilDone()})}beginCreateOrUpdateAtSubscription(e,n,r){return t.__awaiter(this,void 0,void 0,function*(){let a=(e,n)=>t.__awaiter(this,void 0,void 0,function*(){return this.client.sendOperationRequest(e,n)}),o=W({sendOperationFn:(e,n)=>t.__awaiter(this,void 0,void 0,function*(){let t,r=e.options?.onResponse;return{flatResponse:yield a(Object.assign(Object.assign({},e),{options:Object.assign(Object.assign({},e.options),{onResponse:(e,n)=>{t=e,r?.(e,n)}})}),n),rawResponse:{statusCode:t.status,body:t.parsedBody,headers:t.headers.toJSON()}}}),args:{deploymentStackName:e,deploymentStack:n,options:r},spec:fe}),s=yield i.createHttpPoller(o,{restoreFrom:r?.resumeFrom,intervalInMs:r?.updateIntervalInMs,resourceLocationConfig:`azure-async-operation`});return yield s.poll(),s})}beginCreateOrUpdateAtSubscriptionAndWait(e,n,r){return t.__awaiter(this,void 0,void 0,function*(){return(yield this.beginCreateOrUpdateAtSubscription(e,n,r)).pollUntilDone()})}getAtSubscription(e,t){return this.client.sendOperationRequest({deploymentStackName:e,options:t},pe)}beginDeleteAtSubscription(e,n){return t.__awaiter(this,void 0,void 0,function*(){let r=(e,n)=>t.__awaiter(this,void 0,void 0,function*(){return this.client.sendOperationRequest(e,n)}),a=W({sendOperationFn:(e,n)=>t.__awaiter(this,void 0,void 0,function*(){let t,i=e.options?.onResponse;return{flatResponse:yield r(Object.assign(Object.assign({},e),{options:Object.assign(Object.assign({},e.options),{onResponse:(e,n)=>{t=e,i?.(e,n)}})}),n),rawResponse:{statusCode:t.status,body:t.parsedBody,headers:t.headers.toJSON()}}}),args:{deploymentStackName:e,options:n},spec:me}),o=yield i.createHttpPoller(a,{restoreFrom:n?.resumeFrom,intervalInMs:n?.updateIntervalInMs,resourceLocationConfig:`location`});return yield o.poll(),o})}beginDeleteAtSubscriptionAndWait(e,n){return t.__awaiter(this,void 0,void 0,function*(){return(yield this.beginDeleteAtSubscription(e,n)).pollUntilDone()})}beginCreateOrUpdateAtManagementGroup(e,n,r,a){return t.__awaiter(this,void 0,void 0,function*(){let o=(e,n)=>t.__awaiter(this,void 0,void 0,function*(){return this.client.sendOperationRequest(e,n)}),s=W({sendOperationFn:(e,n)=>t.__awaiter(this,void 0,void 0,function*(){let t,r=e.options?.onResponse;return{flatResponse:yield o(Object.assign(Object.assign({},e),{options:Object.assign(Object.assign({},e.options),{onResponse:(e,n)=>{t=e,r?.(e,n)}})}),n),rawResponse:{statusCode:t.status,body:t.parsedBody,headers:t.headers.toJSON()}}}),args:{managementGroupId:e,deploymentStackName:n,deploymentStack:r,options:a},spec:he}),c=yield i.createHttpPoller(s,{restoreFrom:a?.resumeFrom,intervalInMs:a?.updateIntervalInMs,resourceLocationConfig:`azure-async-operation`});return yield c.poll(),c})}beginCreateOrUpdateAtManagementGroupAndWait(e,n,r,i){return t.__awaiter(this,void 0,void 0,function*(){return(yield this.beginCreateOrUpdateAtManagementGroup(e,n,r,i)).pollUntilDone()})}getAtManagementGroup(e,t,n){return this.client.sendOperationRequest({managementGroupId:e,deploymentStackName:t,options:n},ge)}beginDeleteAtManagementGroup(e,n,r){return t.__awaiter(this,void 0,void 0,function*(){let a=(e,n)=>t.__awaiter(this,void 0,void 0,function*(){return this.client.sendOperationRequest(e,n)}),o=W({sendOperationFn:(e,n)=>t.__awaiter(this,void 0,void 0,function*(){let t,r=e.options?.onResponse;return{flatResponse:yield a(Object.assign(Object.assign({},e),{options:Object.assign(Object.assign({},e.options),{onResponse:(e,n)=>{t=e,r?.(e,n)}})}),n),rawResponse:{statusCode:t.status,body:t.parsedBody,headers:t.headers.toJSON()}}}),args:{managementGroupId:e,deploymentStackName:n,options:r},spec:_e}),s=yield i.createHttpPoller(o,{restoreFrom:r?.resumeFrom,intervalInMs:r?.updateIntervalInMs,resourceLocationConfig:`location`});return yield s.poll(),s})}beginDeleteAtManagementGroupAndWait(e,n,r){return t.__awaiter(this,void 0,void 0,function*(){return(yield this.beginDeleteAtManagementGroup(e,n,r)).pollUntilDone()})}exportTemplateAtResourceGroup(e,t,n){return this.client.sendOperationRequest({resourceGroupName:e,deploymentStackName:t,options:n},ve)}exportTemplateAtSubscription(e,t){return this.client.sendOperationRequest({deploymentStackName:e,options:t},ye)}exportTemplateAtManagementGroup(e,t,n){return this.client.sendOperationRequest({managementGroupId:e,deploymentStackName:t,options:n},be)}beginValidateStackAtResourceGroup(e,n,r,a){return t.__awaiter(this,void 0,void 0,function*(){let o=(e,n)=>t.__awaiter(this,void 0,void 0,function*(){return this.client.sendOperationRequest(e,n)}),s=W({sendOperationFn:(e,n)=>t.__awaiter(this,void 0,void 0,function*(){let t,r=e.options?.onResponse;return{flatResponse:yield o(Object.assign(Object.assign({},e),{options:Object.assign(Object.assign({},e.options),{onResponse:(e,n)=>{t=e,r?.(e,n)}})}),n),rawResponse:{statusCode:t.status,body:t.parsedBody,headers:t.headers.toJSON()}}}),args:{resourceGroupName:e,deploymentStackName:n,deploymentStack:r,options:a},spec:xe}),c=yield i.createHttpPoller(s,{restoreFrom:a?.resumeFrom,intervalInMs:a?.updateIntervalInMs,resourceLocationConfig:`location`});return yield c.poll(),c})}beginValidateStackAtResourceGroupAndWait(e,n,r,i){return t.__awaiter(this,void 0,void 0,function*(){return(yield this.beginValidateStackAtResourceGroup(e,n,r,i)).pollUntilDone()})}beginValidateStackAtSubscription(e,n,r){return t.__awaiter(this,void 0,void 0,function*(){let a=(e,n)=>t.__awaiter(this,void 0,void 0,function*(){return this.client.sendOperationRequest(e,n)}),o=W({sendOperationFn:(e,n)=>t.__awaiter(this,void 0,void 0,function*(){let t,r=e.options?.onResponse;return{flatResponse:yield a(Object.assign(Object.assign({},e),{options:Object.assign(Object.assign({},e.options),{onResponse:(e,n)=>{t=e,r?.(e,n)}})}),n),rawResponse:{statusCode:t.status,body:t.parsedBody,headers:t.headers.toJSON()}}}),args:{deploymentStackName:e,deploymentStack:n,options:r},spec:Se}),s=yield i.createHttpPoller(o,{restoreFrom:r?.resumeFrom,intervalInMs:r?.updateIntervalInMs,resourceLocationConfig:`location`});return yield s.poll(),s})}beginValidateStackAtSubscriptionAndWait(e,n,r){return t.__awaiter(this,void 0,void 0,function*(){return(yield this.beginValidateStackAtSubscription(e,n,r)).pollUntilDone()})}beginValidateStackAtManagementGroup(e,n,r,a){return t.__awaiter(this,void 0,void 0,function*(){let o=(e,n)=>t.__awaiter(this,void 0,void 0,function*(){return this.client.sendOperationRequest(e,n)}),s=W({sendOperationFn:(e,n)=>t.__awaiter(this,void 0,void 0,function*(){let t,r=e.options?.onResponse;return{flatResponse:yield o(Object.assign(Object.assign({},e),{options:Object.assign(Object.assign({},e.options),{onResponse:(e,n)=>{t=e,r?.(e,n)}})}),n),rawResponse:{statusCode:t.status,body:t.parsedBody,headers:t.headers.toJSON()}}}),args:{managementGroupId:e,deploymentStackName:n,deploymentStack:r,options:a},spec:Ce}),c=yield i.createHttpPoller(s,{restoreFrom:a?.resumeFrom,intervalInMs:a?.updateIntervalInMs,resourceLocationConfig:`location`});return yield c.poll(),c})}beginValidateStackAtManagementGroupAndWait(e,n,r,i){return t.__awaiter(this,void 0,void 0,function*(){return(yield this.beginValidateStackAtManagementGroup(e,n,r,i)).pollUntilDone()})}_listAtResourceGroupNext(e,t,n){return this.client.sendOperationRequest({resourceGroupName:e,nextLink:t,options:n},we)}_listAtSubscriptionNext(e,t){return this.client.sendOperationRequest({nextLink:e,options:t},Te)}_listAtManagementGroupNext(e,t,n){return this.client.sendOperationRequest({managementGroupId:e,nextLink:t,options:n},Ee)}};let G=o.createSerializer(ee,!1),oe={path:`/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Resources/deploymentStacks`,httpMethod:`GET`,responses:{200:{bodyMapper:f},default:{bodyMapper:S}},queryParameters:[R],urlParameters:[F,I,L],headerParameters:[P],serializer:G},se={path:`/subscriptions/{subscriptionId}/providers/Microsoft.Resources/deploymentStacks`,httpMethod:`GET`,responses:{200:{bodyMapper:f},default:{bodyMapper:S}},queryParameters:[R],urlParameters:[F,I],headerParameters:[P],serializer:G},ce={path:`/providers/Microsoft.Management/managementGroups/{managementGroupId}/providers/Microsoft.Resources/deploymentStacks`,httpMethod:`GET`,responses:{200:{bodyMapper:f},default:{bodyMapper:S}},queryParameters:[R],urlParameters:[F,z],headerParameters:[P],serializer:G},le={path:`/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Resources/deploymentStacks/{deploymentStackName}`,httpMethod:`PUT`,responses:{200:{bodyMapper:N},201:{bodyMapper:N},202:{bodyMapper:N},204:{bodyMapper:N},default:{bodyMapper:S}},requestBody:te,queryParameters:[R],urlParameters:[F,I,L,V],headerParameters:[P,B],mediaType:`json`,serializer:G},ue={path:`/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Resources/deploymentStacks/{deploymentStackName}`,httpMethod:`GET`,responses:{200:{bodyMapper:N},default:{bodyMapper:S}},queryParameters:[R],urlParameters:[F,I,L,V],headerParameters:[P],serializer:G},de={path:`/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Resources/deploymentStacks/{deploymentStackName}`,httpMethod:`DELETE`,responses:{200:{},201:{},202:{},204:{},default:{bodyMapper:S}},queryParameters:[R,ne,re,H,ie],urlParameters:[F,I,L,V],headerParameters:[P],serializer:G},fe={path:`/subscriptions/{subscriptionId}/providers/Microsoft.Resources/deploymentStacks/{deploymentStackName}`,httpMethod:`PUT`,responses:{200:{bodyMapper:N},201:{bodyMapper:N},202:{bodyMapper:N},204:{bodyMapper:N},default:{bodyMapper:S}},requestBody:te,queryParameters:[R],urlParameters:[F,I,V],headerParameters:[P,B],mediaType:`json`,serializer:G},pe={path:`/subscriptions/{subscriptionId}/providers/Microsoft.Resources/deploymentStacks/{deploymentStackName}`,httpMethod:`GET`,responses:{200:{bodyMapper:N},default:{bodyMapper:S}},queryParameters:[R],urlParameters:[F,I,V],headerParameters:[P],serializer:G},me={path:`/subscriptions/{subscriptionId}/providers/Microsoft.Resources/deploymentStacks/{deploymentStackName}`,httpMethod:`DELETE`,responses:{200:{},201:{},202:{},204:{},default:{bodyMapper:S}},queryParameters:[R,ne,re,H,ie],urlParameters:[F,I,V],headerParameters:[P],serializer:G},he={path:`/providers/Microsoft.Management/managementGroups/{managementGroupId}/providers/Microsoft.Resources/deploymentStacks/{deploymentStackName}`,httpMethod:`PUT`,responses:{200:{bodyMapper:N},201:{bodyMapper:N},202:{bodyMapper:N},204:{bodyMapper:N},default:{bodyMapper:S}},requestBody:te,queryParameters:[R],urlParameters:[F,z,V],headerParameters:[P,B],mediaType:`json`,serializer:G},ge={path:`/providers/Microsoft.Management/managementGroups/{managementGroupId}/providers/Microsoft.Resources/deploymentStacks/{deploymentStackName}`,httpMethod:`GET`,responses:{200:{bodyMapper:N},default:{bodyMapper:S}},queryParameters:[R],urlParameters:[F,z,V],headerParameters:[P],serializer:G},_e={path:`/providers/Microsoft.Management/managementGroups/{managementGroupId}/providers/Microsoft.Resources/deploymentStacks/{deploymentStackName}`,httpMethod:`DELETE`,responses:{200:{},201:{},202:{},204:{},default:{bodyMapper:S}},queryParameters:[R,ne,re,H,ie],urlParameters:[F,z,V],headerParameters:[P],serializer:G},ve={path:`/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Resources/deploymentStacks/{deploymentStackName}/exportTemplate`,httpMethod:`POST`,responses:{200:{bodyMapper:D},default:{bodyMapper:S}},queryParameters:[R],urlParameters:[F,I,L,V],headerParameters:[P],serializer:G},ye={path:`/subscriptions/{subscriptionId}/providers/Microsoft.Resources/deploymentStacks/{deploymentStackName}/exportTemplate`,httpMethod:`POST`,responses:{200:{bodyMapper:D},default:{bodyMapper:S}},queryParameters:[R],urlParameters:[F,I,V],headerParameters:[P],serializer:G},be={path:`/providers/Microsoft.Management/managementGroups/{managementGroupId}/providers/Microsoft.Resources/deploymentStacks/{deploymentStackName}/exportTemplate`,httpMethod:`POST`,responses:{200:{bodyMapper:D},default:{bodyMapper:S}},queryParameters:[R],urlParameters:[F,z,V],headerParameters:[P],serializer:G},xe={path:`/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Resources/deploymentStacks/{deploymentStackName}/validate`,httpMethod:`POST`,responses:{200:{bodyMapper:M},201:{bodyMapper:M},202:{bodyMapper:M},204:{bodyMapper:M},default:{bodyMapper:S}},requestBody:te,queryParameters:[R],urlParameters:[F,I,L,V],headerParameters:[P,B],mediaType:`json`,serializer:G},Se={path:`/subscriptions/{subscriptionId}/providers/Microsoft.Resources/deploymentStacks/{deploymentStackName}/validate`,httpMethod:`POST`,responses:{200:{bodyMapper:M},201:{bodyMapper:M},202:{bodyMapper:M},204:{bodyMapper:M},default:{bodyMapper:S}},requestBody:te,queryParameters:[R],urlParameters:[F,I,V],headerParameters:[P,B],mediaType:`json`,serializer:G},Ce={path:`/providers/Microsoft.Management/managementGroups/{managementGroupId}/providers/Microsoft.Resources/deploymentStacks/{deploymentStackName}/validate`,httpMethod:`POST`,responses:{200:{bodyMapper:M},201:{bodyMapper:M},202:{bodyMapper:M},204:{bodyMapper:M},default:{bodyMapper:S}},requestBody:te,queryParameters:[R],urlParameters:[F,z,V],headerParameters:[P,B],mediaType:`json`,serializer:G},we={path:`{nextLink}`,httpMethod:`GET`,responses:{200:{bodyMapper:f},default:{bodyMapper:S}},urlParameters:[F,I,L,U],headerParameters:[P],serializer:G},Te={path:`{nextLink}`,httpMethod:`GET`,responses:{200:{bodyMapper:f},default:{bodyMapper:S}},urlParameters:[F,I,U],headerParameters:[P],serializer:G},Ee={path:`{nextLink}`,httpMethod:`GET`,responses:{200:{bodyMapper:f},default:{bodyMapper:S}},urlParameters:[F,z,U],headerParameters:[P],serializer:G};e.DeploymentStacksClient=class extends o.ServiceClient{constructor(e,t,n){if(e===void 0)throw Error(`'credentials' cannot be null`);let r;typeof t==`string`?r=t:typeof t==`object`&&(n=t),n||={};let i={requestContentType:`application/json; charset=utf-8`,credential:e},a=`azsdk-js-arm-resourcesdeploymentstacks/1.0.0`,c=n.userAgentOptions&&n.userAgentOptions.userAgentPrefix?`${n.userAgentOptions.userAgentPrefix} ${a}`:`${a}`,l=Object.assign(Object.assign(Object.assign({},i),n),{userAgentOptions:{userAgentPrefix:c},endpoint:n.endpoint??n.baseUri??`https://management.azure.com`});super(l);let u=!1;n?.pipeline&&n.pipeline.getOrderedPolicies().length>0&&(u=n.pipeline.getOrderedPolicies().some(e=>e.name===s.bearerTokenAuthenticationPolicyName)),(!n||!n.pipeline||n.pipeline.getOrderedPolicies().length==0||!u)&&(this.pipeline.removePolicy({name:s.bearerTokenAuthenticationPolicyName}),this.pipeline.addPolicy(s.bearerTokenAuthenticationPolicy({credential:e,scopes:l.credentialScopes??`${l.endpoint}/.default`,challengeCallbacks:{authorizeRequestOnChallenge:o.authorizeRequestOnClaimChallenge}}))),this.subscriptionId=r,this.$host=n.$host||`https://management.azure.com`,this.apiVersion=n.apiVersion||`2024-03-01`,this.deploymentStacks=new ae(this),this.addCustomApiVersionPolicy(n.apiVersion)}addCustomApiVersionPolicy(e){e&&this.pipeline.addPolicy({name:`CustomApiVersionPolicy`,sendRequest(n,r){return t.__awaiter(this,void 0,void 0,function*(){let t=n.url.split(`?`);if(t.length>1){let r=t[1].split(`&`).map(t=>t.indexOf(`api-version`)>-1?`api-version=`+e:t);n.url=t[0]+`?`+r.join(`&`)}return r(n)})}})}},e.getContinuationToken=l})),Ps=s((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.DEFAULT_TOKEN_CACHE_NAME=e.CACHE_NON_CAE_SUFFIX=e.CACHE_CAE_SUFFIX=e.ALL_TENANTS=e.DefaultAuthority=e.DefaultAuthorityHost=e.AzureAuthorityHosts=e.DefaultTenantId=e.DeveloperSignOnClientId=e.SDK_VERSION=void 0,e.SDK_VERSION=`4.13.0`,e.DeveloperSignOnClientId=`04b07795-8ddb-461a-bbee-02f9e1bf7b46`,e.DefaultTenantId=`common`;var t;(function(e){e.AzureChina=`https://login.chinacloudapi.cn`,e.AzureGermany=`https://login.microsoftonline.de`,e.AzureGovernment=`https://login.microsoftonline.us`,e.AzurePublicCloud=`https://login.microsoftonline.com`})(t||(e.AzureAuthorityHosts=t={})),e.DefaultAuthorityHost=t.AzurePublicCloud,e.DefaultAuthority=`login.microsoftonline.com`,e.ALL_TENANTS=[`*`],e.CACHE_CAE_SUFFIX=`cae`,e.CACHE_NON_CAE_SUFFIX=`nocae`,e.DEFAULT_TOKEN_CACHE_NAME=`msal.cache`})),Fs=s((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.msalPlugins=e.msalNodeFlowVSCodeCredentialControl=e.msalNodeFlowNativeBrokerControl=e.vsCodeBrokerInfo=e.vsCodeAuthRecordPath=e.nativeBrokerInfo=e.msalNodeFlowCacheControl=e.persistenceProvider=void 0,e.hasNativeBroker=n,e.hasVSCodePlugin=r;let t=Ps();e.persistenceProvider=void 0,e.msalNodeFlowCacheControl={setPersistence(t){e.persistenceProvider=t}},e.nativeBrokerInfo=void 0,e.vsCodeAuthRecordPath=void 0,e.vsCodeBrokerInfo=void 0;function n(){return e.nativeBrokerInfo!==void 0}function r(){return e.vsCodeAuthRecordPath!==void 0&&e.vsCodeBrokerInfo!==void 0}e.msalNodeFlowNativeBrokerControl={setNativeBroker(t){e.nativeBrokerInfo={broker:t}}},e.msalNodeFlowVSCodeCredentialControl={setVSCodeAuthRecordPath(t){e.vsCodeAuthRecordPath=t},setVSCodeBroker(t){e.vsCodeBrokerInfo={broker:t}}};function i(n){let r={cache:{},broker:{...n.brokerOptions,isEnabled:n.brokerOptions?.enabled??!1,enableMsaPassthrough:n.brokerOptions?.legacyEnableMsaPassthrough??!1}};if(n.tokenCachePersistenceOptions?.enabled){if(e.persistenceProvider===void 0)throw Error([`Persistent token caching was requested, but no persistence provider was configured.`,"You must install the identity-cache-persistence plugin package (`npm install --save @azure/identity-cache-persistence`)","and enable it by importing `useIdentityPlugin` from `@azure/identity` and calling","`useIdentityPlugin(cachePersistencePlugin)` before using `tokenCachePersistenceOptions`."].join(` `));let i=n.tokenCachePersistenceOptions.name||t.DEFAULT_TOKEN_CACHE_NAME;r.cache.cachePlugin=(0,e.persistenceProvider)({name:`${i}.${t.CACHE_NON_CAE_SUFFIX}`,...n.tokenCachePersistenceOptions}),r.cache.cachePluginCae=(0,e.persistenceProvider)({name:`${i}.${t.CACHE_CAE_SUFFIX}`,...n.tokenCachePersistenceOptions})}return n.brokerOptions?.enabled&&(r.broker.nativeBrokerPlugin=s(n.isVSCodeCredential||!1)),r}let a={missing:(e,t,n)=>[`${e} was requested, but no plugin was configured or no authentication record was found.`,`You must install the ${t} plugin package (npm install --save ${t})`,"and enable it by importing `useIdentityPlugin` from `@azure/identity` and calling",`useIdentityPlugin(${n}) before using enableBroker.`].join(` `),unavailable:(e,t)=>[`${e} was requested, and the plugin is configured, but the broker is unavailable.`,`Ensure the ${e} plugin is properly installed and configured.`,`Check for missing native dependencies and ensure the package is properly installed.`,`See the README for prerequisites on installing and using ${t}.`].join(` `)},o={vsCode:{credentialName:`Visual Studio Code Credential`,packageName:`@azure/identity-vscode`,pluginVar:`vsCodePlugin`,get brokerInfo(){return e.vsCodeBrokerInfo}},native:{credentialName:`Broker for WAM`,packageName:`@azure/identity-broker`,pluginVar:`nativeBrokerPlugin`,get brokerInfo(){return e.nativeBrokerInfo}}};function s(e){let{credentialName:t,packageName:n,pluginVar:r,brokerInfo:i}=o[e?`vsCode`:`native`];if(i===void 0)throw Error(a.missing(t,n,r));if(i.broker.isBrokerAvailable===!1)throw Error(a.unavailable(t,n));return i.broker}e.msalPlugins={generatePluginConfiguration:i}})),Is=s((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.useIdentityPlugin=r;let t=Fs(),n={cachePluginControl:t.msalNodeFlowCacheControl,nativeBrokerPluginControl:t.msalNodeFlowNativeBrokerControl,vsCodeCredentialControl:t.msalNodeFlowVSCodeCredentialControl};function r(e){e(n)}})),Ls=s((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.AuthenticationRequiredError=e.AggregateAuthenticationError=e.AggregateAuthenticationErrorName=e.AuthenticationError=e.AuthenticationErrorName=e.CredentialUnavailableError=e.CredentialUnavailableErrorName=void 0;function t(e){return e&&typeof e.error==`string`&&typeof e.error_description==`string`}e.CredentialUnavailableErrorName=`CredentialUnavailableError`,e.CredentialUnavailableError=class extends Error{constructor(t,n){super(t,n),this.name=e.CredentialUnavailableErrorName}},e.AuthenticationErrorName=`AuthenticationError`,e.AuthenticationError=class extends Error{constructor(r,i,a){let o={error:`unknown`,errorDescription:`An unknown error occurred and no additional details are available.`};if(t(i))o=n(i);else if(typeof i==`string`)try{o=n(JSON.parse(i))}catch{o=r===400?{error:`invalid_request`,errorDescription:`The service indicated that the request was invalid.\n\n${i}`}:{error:`unknown_error`,errorDescription:`An unknown error has occurred. Response body:\n\n${i}`}}else o={error:`unknown_error`,errorDescription:`An unknown error occurred and no additional details are available.`};super(`${o.error} Status code: ${r}\nMore details:\n${o.errorDescription},`,a),this.statusCode=r,this.errorResponse=o,this.name=e.AuthenticationErrorName}},e.AggregateAuthenticationErrorName=`AggregateAuthenticationError`,e.AggregateAuthenticationError=class extends Error{constructor(t,n){let r=t.join(` +`);super(`${n}\n${r}`),this.errors=t,this.name=e.AggregateAuthenticationErrorName}};function n(e){return{error:e.error,errorDescription:e.error_description,correlationId:e.correlation_id,errorCodes:e.error_codes,timestamp:e.timestamp,traceId:e.trace_id}}e.AuthenticationRequiredError=class extends Error{constructor(e){super(e.message,e.cause?{cause:e.cause}:void 0),this.scopes=e.scopes,this.getTokenOptions=e.getTokenOptions,this.name=`AuthenticationRequiredError`}}})),Rs=s((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.logger=void 0,e.processEnvVars=t,e.logEnvVars=n,e.formatSuccess=r,e.formatError=i,e.credentialLoggerInstance=a,e.credentialLogger=o,e.logger=(0,za().createClientLogger)(`identity`);function t(e){return e.reduce((e,t)=>(process.env[t]?e.assigned.push(t):e.missing.push(t),e),{missing:[],assigned:[]})}function n(n,r){let{assigned:i}=t(r);e.logger.info(`${n} => Found the following environment variables: ${i.join(`, `)}`)}function r(e){return`SUCCESS. Scopes: ${Array.isArray(e)?e.join(`, `):e}.`}function i(e,t){let n=`ERROR.`;return e?.length&&(n+=` Scopes: ${Array.isArray(e)?e.join(`, `):e}.`),`${n} Error message: ${typeof t==`string`?t:t.message}.`}function a(t,n,r=e.logger){let i=n?`${n.fullTitle} ${t}`:t;function a(e){r.info(`${i} =>`,e)}function o(e){r.warning(`${i} =>`,e)}function s(e){r.verbose(`${i} =>`,e)}function c(e){r.error(`${i} =>`,e)}return{title:t,fullTitle:i,info:a,warning:o,verbose:s,error:c}}function o(t,n=e.logger){let r=a(t,void 0,n);return{...r,parent:n,getToken:a(`=> getToken()`,r,n)}}})),zs=s((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.tracingClient=void 0;let t=Ps();e.tracingClient=(0,xo().createTracingClient)({namespace:`Microsoft.AAD`,packageName:`@azure/identity`,packageVersion:t.SDK_VERSION})})),Bs=s((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.ChainedTokenCredential=e.logger=void 0;let t=Ls(),n=Rs(),r=zs();e.logger=(0,n.credentialLogger)(`ChainedTokenCredential`),e.ChainedTokenCredential=class{constructor(...e){this._sources=[],this._sources=e}async getToken(e,t={}){let{token:n}=await this.getTokenInternal(e,t);return n}async getTokenInternal(i,a={}){let o=null,s,c=[];return r.tracingClient.withSpan(`ChainedTokenCredential.getToken`,a,async r=>{for(let t=0;t0){let r=new t.AggregateAuthenticationError(c,`ChainedTokenCredential authentication failed.`);throw e.logger.getToken.info((0,n.formatError)(i,r)),r}if(e.logger.getToken.info(`Result for ${s.constructor.name}: ${(0,n.formatSuccess)(i)}`),o===null)throw new t.CredentialUnavailableError(`Failed to retrieve a valid token`);return{token:o,successfulCredential:s}})}}}));function Vs(){return Us>Hs.length-16&&(f.default.randomFillSync(Hs),Us=0),Hs.slice(Us,Us+=16)}var Hs,Us,Ws=o((()=>{Hs=new Uint8Array(256),Us=Hs.length})),Gs,Ks=o((()=>{Gs=/^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i}));function qs(e){return typeof e==`string`&&Gs.test(e)}var Js,Ys=o((()=>{Ks(),Js=qs}));function Xs(e,t=0){let n=(Zs[e[t+0]]+Zs[e[t+1]]+Zs[e[t+2]]+Zs[e[t+3]]+`-`+Zs[e[t+4]]+Zs[e[t+5]]+`-`+Zs[e[t+6]]+Zs[e[t+7]]+`-`+Zs[e[t+8]]+Zs[e[t+9]]+`-`+Zs[e[t+10]]+Zs[e[t+11]]+Zs[e[t+12]]+Zs[e[t+13]]+Zs[e[t+14]]+Zs[e[t+15]]).toLowerCase();if(!Js(n))throw TypeError(`Stringified UUID is invalid`);return n}var Zs,Qs,$s=o((()=>{Ys(),Zs=[];for(let e=0;e<256;++e)Zs.push((e+256).toString(16).substr(1));Qs=Xs}));function ec(e,t,n){let r=t&&n||0,i=t||Array(16);e||={};let a=e.node||tc,o=e.clockseq===void 0?nc:e.clockseq;if(a==null||o==null){let t=e.random||(e.rng||Vs)();a??=tc=[t[0]|1,t[1],t[2],t[3],t[4],t[5]],o??=nc=(t[6]<<8|t[7])&16383}let s=e.msecs===void 0?Date.now():e.msecs,c=e.nsecs===void 0?ic+1:e.nsecs,l=s-rc+(c-ic)/1e4;if(l<0&&e.clockseq===void 0&&(o=o+1&16383),(l<0||s>rc)&&e.nsecs===void 0&&(c=0),c>=1e4)throw Error(`uuid.v1(): Can't create more than 10M uuids/sec`);rc=s,ic=c,nc=o,s+=0xb1d069b5400;let u=((s&268435455)*1e4+c)%4294967296;i[r++]=u>>>24&255,i[r++]=u>>>16&255,i[r++]=u>>>8&255,i[r++]=u&255;let d=s/4294967296*1e4&268435455;i[r++]=d>>>8&255,i[r++]=d&255,i[r++]=d>>>24&15|16,i[r++]=d>>>16&255,i[r++]=o>>>8|128,i[r++]=o&255;for(let e=0;e<6;++e)i[r+e]=a[e];return t||Qs(i)}var tc,nc,rc,ic,ac,oc=o((()=>{Ws(),$s(),rc=0,ic=0,ac=ec}));function sc(e){if(!Js(e))throw TypeError(`Invalid UUID`);let t,n=new Uint8Array(16);return n[0]=(t=parseInt(e.slice(0,8),16))>>>24,n[1]=t>>>16&255,n[2]=t>>>8&255,n[3]=t&255,n[4]=(t=parseInt(e.slice(9,13),16))>>>8,n[5]=t&255,n[6]=(t=parseInt(e.slice(14,18),16))>>>8,n[7]=t&255,n[8]=(t=parseInt(e.slice(19,23),16))>>>8,n[9]=t&255,n[10]=(t=parseInt(e.slice(24,36),16))/1099511627776&255,n[11]=t/4294967296&255,n[12]=t>>>24&255,n[13]=t>>>16&255,n[14]=t>>>8&255,n[15]=t&255,n}var cc,lc=o((()=>{Ys(),cc=sc}));function uc(e){e=unescape(encodeURIComponent(e));let t=[];for(let n=0;n{$s(),lc(),fc=`6ba7b810-9dad-11d1-80b4-00c04fd430c8`,pc=`6ba7b811-9dad-11d1-80b4-00c04fd430c8`}));function hc(e){return Array.isArray(e)?e=Buffer.from(e):typeof e==`string`&&(e=Buffer.from(e,`utf8`)),f.default.createHash(`md5`).update(e).digest()}var gc,_c=o((()=>{gc=hc})),vc,yc,bc=o((()=>{mc(),_c(),vc=dc(`v3`,48,gc),yc=vc}));function xc(e,t,n){e||={};let r=e.random||(e.rng||Vs)();if(r[6]=r[6]&15|64,r[8]=r[8]&63|128,t){n||=0;for(let e=0;e<16;++e)t[n+e]=r[e];return t}return Qs(r)}var Sc,Cc=o((()=>{Ws(),$s(),Sc=xc}));function wc(e){return Array.isArray(e)?e=Buffer.from(e):typeof e==`string`&&(e=Buffer.from(e,`utf8`)),f.default.createHash(`sha1`).update(e).digest()}var Tc,Ec=o((()=>{Tc=wc})),Dc,Oc,kc=o((()=>{mc(),Ec(),Dc=dc(`v5`,80,Tc),Oc=Dc})),Ac,jc=o((()=>{Ac=`00000000-0000-0000-0000-000000000000`}));function Mc(e){if(!Js(e))throw TypeError(`Invalid UUID`);return parseInt(e.substr(14,1),16)}var Nc,Pc=o((()=>{Ys(),Nc=Mc})),Fc=c({NIL:()=>Ac,parse:()=>cc,stringify:()=>Qs,v1:()=>ac,v3:()=>yc,v4:()=>Sc,v5:()=>Oc,validate:()=>Js,version:()=>Nc}),Ic=o((()=>{oc(),bc(),Cc(),kc(),jc(),Pc(),Ys(),$s(),lc()})),Lc=s((e=>{let t={LIBRARY_NAME:`MSAL.JS`,SKU:`msal.js.common`,DEFAULT_AUTHORITY:`https://login.microsoftonline.com/common/`,DEFAULT_AUTHORITY_HOST:`login.microsoftonline.com`,DEFAULT_COMMON_TENANT:`common`,ADFS:`adfs`,DSTS:`dstsv2`,AAD_INSTANCE_DISCOVERY_ENDPT:`https://login.microsoftonline.com/common/discovery/instance?api-version=1.1&authorization_endpoint=`,CIAM_AUTH_URL:`.ciamlogin.com`,AAD_TENANT_DOMAIN_SUFFIX:`.onmicrosoft.com`,RESOURCE_DELIM:`|`,NO_ACCOUNT:`NO_ACCOUNT`,CLAIMS:`claims`,CONSUMER_UTID:`9188040d-6c67-4c5b-b112-36a304b66dad`,OPENID_SCOPE:`openid`,PROFILE_SCOPE:`profile`,OFFLINE_ACCESS_SCOPE:`offline_access`,EMAIL_SCOPE:`email`,CODE_GRANT_TYPE:`authorization_code`,RT_GRANT_TYPE:`refresh_token`,S256_CODE_CHALLENGE_METHOD:`S256`,URL_FORM_CONTENT_TYPE:`application/x-www-form-urlencoded;charset=utf-8`,AUTHORIZATION_PENDING:`authorization_pending`,NOT_DEFINED:`not_defined`,EMPTY_STRING:``,NOT_APPLICABLE:`N/A`,NOT_AVAILABLE:`Not Available`,FORWARD_SLASH:`/`,IMDS_ENDPOINT:`http://169.254.169.254/metadata/instance/compute/location`,IMDS_VERSION:`2020-06-01`,IMDS_TIMEOUT:2e3,AZURE_REGION_AUTO_DISCOVER_FLAG:`TryAutoDetect`,REGIONAL_AUTH_PUBLIC_CLOUD_SUFFIX:`login.microsoft.com`,KNOWN_PUBLIC_CLOUDS:[`login.microsoftonline.com`,`login.windows.net`,`login.microsoft.com`,`sts.windows.net`],SHR_NONCE_VALIDITY:240,INVALID_INSTANCE:`invalid_instance`},n={SUCCESS:200,SUCCESS_RANGE_START:200,SUCCESS_RANGE_END:299,REDIRECT:302,CLIENT_ERROR:400,CLIENT_ERROR_RANGE_START:400,BAD_REQUEST:400,UNAUTHORIZED:401,NOT_FOUND:404,REQUEST_TIMEOUT:408,GONE:410,TOO_MANY_REQUESTS:429,CLIENT_ERROR_RANGE_END:499,SERVER_ERROR:500,SERVER_ERROR_RANGE_START:500,SERVICE_UNAVAILABLE:503,GATEWAY_TIMEOUT:504,SERVER_ERROR_RANGE_END:599,MULTI_SIDED_ERROR:600},r={GET:`GET`,POST:`POST`},i=[t.OPENID_SCOPE,t.PROFILE_SCOPE,t.OFFLINE_ACCESS_SCOPE],a=[...i,t.EMAIL_SCOPE],o={CONTENT_TYPE:`Content-Type`,CONTENT_LENGTH:`Content-Length`,RETRY_AFTER:`Retry-After`,CCS_HEADER:`X-AnchorMailbox`,WWWAuthenticate:`WWW-Authenticate`,AuthenticationInfo:`Authentication-Info`,X_MS_REQUEST_ID:`x-ms-request-id`,X_MS_HTTP_VERSION:`x-ms-httpver`},s={ACTIVE_ACCOUNT_FILTERS:`active-account-filters`},c={COMMON:`common`,ORGANIZATIONS:`organizations`,CONSUMERS:`consumers`},l={ACCESS_TOKEN:`access_token`,XMS_CC:`xms_cc`},u={LOGIN:`login`,SELECT_ACCOUNT:`select_account`,CONSENT:`consent`,NONE:`none`,CREATE:`create`,NO_SESSION:`no_session`},d={PLAIN:`plain`,S256:`S256`},f={CODE:`code`,IDTOKEN_TOKEN:`id_token token`,IDTOKEN_TOKEN_REFRESHTOKEN:`id_token token refresh_token`},p={QUERY:`query`,FRAGMENT:`fragment`},m={QUERY:`query`,FRAGMENT:`fragment`,FORM_POST:`form_post`},h={IMPLICIT_GRANT:`implicit`,AUTHORIZATION_CODE_GRANT:`authorization_code`,CLIENT_CREDENTIALS_GRANT:`client_credentials`,RESOURCE_OWNER_PASSWORD_GRANT:`password`,REFRESH_TOKEN_GRANT:`refresh_token`,DEVICE_CODE_GRANT:`device_code`,JWT_BEARER:`urn:ietf:params:oauth:grant-type:jwt-bearer`},g={MSSTS_ACCOUNT_TYPE:`MSSTS`,ADFS_ACCOUNT_TYPE:`ADFS`,MSAV1_ACCOUNT_TYPE:`MSA`,GENERIC_ACCOUNT_TYPE:`Generic`},_={CACHE_KEY_SEPARATOR:`-`,CLIENT_INFO_SEPARATOR:`.`},v={ID_TOKEN:`IdToken`,ACCESS_TOKEN:`AccessToken`,ACCESS_TOKEN_WITH_AUTH_SCHEME:`AccessToken_With_AuthScheme`,REFRESH_TOKEN:`RefreshToken`},y={ADFS:1001,MSA:1002,MSSTS:1003,GENERIC:1004,ACCESS_TOKEN:2001,REFRESH_TOKEN:2002,ID_TOKEN:2003,APP_METADATA:3001,UNDEFINED:9999},b=`appmetadata`,x={CACHE_KEY:`authority-metadata`,REFRESH_TIME_SECONDS:3600*24},S={CONFIG:`config`,CACHE:`cache`,NETWORK:`network`,HARDCODED_VALUES:`hardcoded_values`},C={SCHEMA_VERSION:5,MAX_LAST_HEADER_BYTES:330,MAX_CACHED_ERRORS:50,CACHE_KEY:`server-telemetry`,CATEGORY_SEPARATOR:`|`,VALUE_SEPARATOR:`,`,OVERFLOW_TRUE:`1`,OVERFLOW_FALSE:`0`,UNKNOWN_ERROR:`unknown_error`},w={BEARER:`Bearer`,POP:`pop`,SSH:`ssh-cert`},T={DEFAULT_THROTTLE_TIME_SECONDS:60,DEFAULT_MAX_THROTTLE_TIME_SECONDS:3600,THROTTLING_PREFIX:`throttling`,X_MS_LIB_CAPABILITY_VALUE:`retry-after, h429`},E={INVALID_GRANT_ERROR:`invalid_grant`,CLIENT_MISMATCH_ERROR:`client_mismatch`},D={username:`username`,password:`password`},O={FAILED_AUTO_DETECTION:`1`,INTERNAL_CACHE:`2`,ENVIRONMENT_VARIABLE:`3`,IMDS:`4`},k={CONFIGURED_NO_AUTO_DETECTION:`2`,AUTO_DETECTION_REQUESTED_SUCCESSFUL:`4`,AUTO_DETECTION_REQUESTED_FAILED:`5`},A={NOT_APPLICABLE:`0`,FORCE_REFRESH_OR_CLAIMS:`1`,NO_CACHED_ACCESS_TOKEN:`2`,CACHED_ACCESS_TOKEN_EXPIRED:`3`,PROACTIVELY_REFRESHED:`4`},j={Jwt:`JWT`,Jwk:`JWK`,Pop:`pop`},M={BASE64:`base64`,HEX:`hex`,UTF8:`utf-8`},N=`unexpected_error`,ee=`post_request_failed`;var P=Object.freeze({__proto__:null,postRequestFailed:ee,unexpectedError:N});let F={[N]:`Unexpected error in authentication.`,[ee]:`Post request failed from the network, could be a 4xx/5xx or a network unavailability. Please check the exact error code for details.`},I={unexpectedError:{code:N,desc:F[N]},postRequestFailed:{code:ee,desc:F[ee]}};var L=class e extends Error{constructor(n,r,i){let a=r?`${n}: ${r}`:n;super(a),Object.setPrototypeOf(this,e.prototype),this.errorCode=n||t.EMPTY_STRING,this.errorMessage=r||t.EMPTY_STRING,this.subError=i||t.EMPTY_STRING,this.name=`AuthError`}setCorrelationId(e){this.correlationId=e}};function R(e,t){return new L(e,t?`${F[e]} ${t}`:F[e])}let z=`client_info_decoding_error`,B=`client_info_empty_error`,te=`token_parsing_error`,V=`null_or_empty_token`,ne=`endpoints_resolution_error`,re=`network_error`,H=`openid_config_error`,ie=`hash_not_deserialized`,U=`invalid_state`,W=`state_mismatch`,ae=`state_not_found`,G=`nonce_mismatch`,oe=`auth_time_not_found`,se=`max_age_transpired`,ce=`multiple_matching_tokens`,le=`multiple_matching_accounts`,ue=`multiple_matching_appMetadata`,de=`request_cannot_be_made`,fe=`cannot_remove_empty_scope`,pe=`cannot_append_scopeset`,me=`empty_input_scopeset`,he=`device_code_polling_cancelled`,ge=`device_code_expired`,_e=`device_code_unknown_error`,ve=`no_account_in_silent_request`,ye=`invalid_cache_record`,be=`invalid_cache_environment`,xe=`no_account_found`,Se=`no_crypto_object`,Ce=`unexpected_credential_type`,we=`invalid_assertion`,Te=`invalid_client_credential`,Ee=`token_refresh_required`,De=`user_timeout_reached`,Oe=`token_claims_cnf_required_for_signedjwt`,ke=`authorization_code_missing_from_server_response`,Ae=`binding_key_not_removed`,je=`end_session_endpoint_not_supported`,Me=`key_id_missing`,Ne=`no_network_connectivity`,Pe=`user_canceled`,Fe=`missing_tenant_id_error`,K=`method_not_implemented`,Ie=`nested_app_auth_bridge_disabled`,Le=`platform_broker_error`;var Re=Object.freeze({__proto__:null,authTimeNotFound:oe,authorizationCodeMissingFromServerResponse:ke,bindingKeyNotRemoved:Ae,cannotAppendScopeSet:pe,cannotRemoveEmptyScope:fe,clientInfoDecodingError:z,clientInfoEmptyError:B,deviceCodeExpired:ge,deviceCodePollingCancelled:he,deviceCodeUnknownError:_e,emptyInputScopeSet:me,endSessionEndpointNotSupported:je,endpointResolutionError:ne,hashNotDeserialized:ie,invalidAssertion:we,invalidCacheEnvironment:be,invalidCacheRecord:ye,invalidClientCredential:Te,invalidState:U,keyIdMissing:Me,maxAgeTranspired:se,methodNotImplemented:K,missingTenantIdError:Fe,multipleMatchingAccounts:le,multipleMatchingAppMetadata:ue,multipleMatchingTokens:ce,nestedAppAuthBridgeDisabled:Ie,networkError:re,noAccountFound:xe,noAccountInSilentRequest:ve,noCryptoObject:Se,noNetworkConnectivity:Ne,nonceMismatch:G,nullOrEmptyToken:V,openIdConfigError:H,platformBrokerError:Le,requestCannotBeMade:de,stateMismatch:W,stateNotFound:ae,tokenClaimsCnfRequiredForSignedJwt:Oe,tokenParsingError:te,tokenRefreshRequired:Ee,unexpectedCredentialType:Ce,userCanceled:Pe,userTimeoutReached:De});let q={[z]:`The client info could not be parsed/decoded correctly`,[B]:`The client info was empty`,[te]:`Token cannot be parsed`,[V]:`The token is null or empty`,[ne]:`Endpoints cannot be resolved`,[re]:`Network request failed`,[H]:`Could not retrieve endpoints. Check your authority and verify the .well-known/openid-configuration endpoint returns the required endpoints.`,[ie]:`The hash parameters could not be deserialized`,[U]:`State was not the expected format`,[W]:`State mismatch error`,[ae]:`State not found`,[G]:`Nonce mismatch error`,[oe]:`Max Age was requested and the ID token is missing the auth_time variable. auth_time is an optional claim and is not enabled by default - it must be enabled. See https://aka.ms/msaljs/optional-claims for more information.`,[se]:`Max Age is set to 0, or too much time has elapsed since the last end-user authentication.`,[ce]:`The cache contains multiple tokens satisfying the requirements. Call AcquireToken again providing more requirements such as authority or account.`,[le]:`The cache contains multiple accounts satisfying the given parameters. Please pass more info to obtain the correct account`,[ue]:`The cache contains multiple appMetadata satisfying the given parameters. Please pass more info to obtain the correct appMetadata`,[de]:`Token request cannot be made without authorization code or refresh token.`,[fe]:`Cannot remove null or empty scope from ScopeSet`,[pe]:`Cannot append ScopeSet`,[me]:`Empty input ScopeSet cannot be processed`,[he]:`Caller has cancelled token endpoint polling during device code flow by setting DeviceCodeRequest.cancel = true.`,[ge]:`Device code is expired.`,[_e]:`Device code stopped polling for unknown reasons.`,[ve]:`Please pass an account object, silent flow is not supported without account information`,[ye]:`Cache record object was null or undefined.`,[be]:`Invalid environment when attempting to create cache entry`,[xe]:`No account found in cache for given key.`,[Se]:`No crypto object detected.`,[Ce]:`Unexpected credential type.`,[we]:`Client assertion must meet requirements described in https://tools.ietf.org/html/rfc7515`,[Te]:`Client credential (secret, certificate, or assertion) must not be empty when creating a confidential client. An application should at most have one credential`,[Ee]:`Cannot return token from cache because it must be refreshed. This may be due to one of the following reasons: forceRefresh parameter is set to true, claims have been requested, there is no cached access token or it is expired.`,[De]:`User defined timeout for device code polling reached`,[Oe]:`Cannot generate a POP jwt if the token_claims are not populated`,[ke]:`Server response does not contain an authorization code to proceed`,[Ae]:`Could not remove the credential's binding key from storage.`,[je]:`The provided authority does not support logout`,[Me]:`A keyId value is missing from the requested bound token's cache record and is required to match the token to it's stored binding key.`,[Ne]:`No network connectivity. Check your internet connection.`,[Pe]:`User cancelled the flow.`,[Fe]:`A tenant id - not common, organizations, or consumers - must be specified when using the client_credentials flow.`,[K]:`This method has not been implemented`,[Ie]:`The nested app auth bridge is disabled`,[Le]:`An error occurred in the native broker. See the platformBrokerError property for details.`},ze={clientInfoDecodingError:{code:z,desc:q[z]},clientInfoEmptyError:{code:B,desc:q[B]},tokenParsingError:{code:te,desc:q[te]},nullOrEmptyToken:{code:V,desc:q[V]},endpointResolutionError:{code:ne,desc:q[ne]},networkError:{code:re,desc:q[re]},unableToGetOpenidConfigError:{code:H,desc:q[H]},hashNotDeserialized:{code:ie,desc:q[ie]},invalidStateError:{code:U,desc:q[U]},stateMismatchError:{code:W,desc:q[W]},stateNotFoundError:{code:ae,desc:q[ae]},nonceMismatchError:{code:G,desc:q[G]},authTimeNotFoundError:{code:oe,desc:q[oe]},maxAgeTranspired:{code:se,desc:q[se]},multipleMatchingTokens:{code:ce,desc:q[ce]},multipleMatchingAccounts:{code:le,desc:q[le]},multipleMatchingAppMetadata:{code:ue,desc:q[ue]},tokenRequestCannotBeMade:{code:de,desc:q[de]},removeEmptyScopeError:{code:fe,desc:q[fe]},appendScopeSetError:{code:pe,desc:q[pe]},emptyInputScopeSetError:{code:me,desc:q[me]},DeviceCodePollingCancelled:{code:he,desc:q[he]},DeviceCodeExpired:{code:ge,desc:q[ge]},DeviceCodeUnknownError:{code:_e,desc:q[_e]},NoAccountInSilentRequest:{code:ve,desc:q[ve]},invalidCacheRecord:{code:ye,desc:q[ye]},invalidCacheEnvironment:{code:be,desc:q[be]},noAccountFound:{code:xe,desc:q[xe]},noCryptoObj:{code:Se,desc:q[Se]},unexpectedCredentialType:{code:Ce,desc:q[Ce]},invalidAssertion:{code:we,desc:q[we]},invalidClientCredential:{code:Te,desc:q[Te]},tokenRefreshRequired:{code:Ee,desc:q[Ee]},userTimeoutReached:{code:De,desc:q[De]},tokenClaimsRequired:{code:Oe,desc:q[Oe]},noAuthorizationCodeFromServer:{code:ke,desc:q[ke]},bindingKeyNotRemovedError:{code:Ae,desc:q[Ae]},logoutNotSupported:{code:je,desc:q[je]},keyIdMissing:{code:Me,desc:q[Me]},noNetworkConnectivity:{code:Ne,desc:q[Ne]},userCanceledError:{code:Pe,desc:q[Pe]},missingTenantIdError:{code:Fe,desc:q[Fe]},nestedAppAuthBridgeDisabled:{code:Ie,desc:q[Ie]},platformBrokerError:{code:Le,desc:q[Le]}};var Be=class e extends L{constructor(t,n){super(t,n?`${q[t]}: ${n}`:q[t]),this.name=`ClientAuthError`,Object.setPrototypeOf(this,e.prototype)}};function J(e,t){return new Be(e,t)}function Ve(e,t){let n=He(e);try{let e=t(n);return JSON.parse(e)}catch{throw J(te)}}function Y(e){if(!e.signin_state)return!1;let t=[`kmsi`,`dvc_dmjd`];return e.signin_state.some(e=>t.includes(e.trim().toLowerCase()))}function He(e){if(!e)throw J(V);let t=/^([^\.\s]*)\.([^\.\s]+)\.([^\.\s]*)$/.exec(e);if(!t||t.length<4)throw J(te);return t[2]}function Ue(e,t){if(t===0||Date.now()-3e5>e+t)throw J(se)}var X=Object.freeze({__proto__:null,checkMaxAge:Ue,extractTokenClaims:Ve,getJWSPayload:He,isKmsi:Y});let We={Default:0,Adfs:1,Dsts:2,Ciam:3};function Ge(e){return e.hasOwnProperty(`authorization_endpoint`)&&e.hasOwnProperty(`token_endpoint`)&&e.hasOwnProperty(`issuer`)&&e.hasOwnProperty(`jwks_uri`)}let Ke=`redirect_uri_empty`,qe=`claims_request_parsing_error`,Je=`authority_uri_insecure`,Ye=`url_parse_error`,Xe=`empty_url_error`,Ze=`empty_input_scopes_error`,Qe=`invalid_claims`,$e=`token_request_empty`,et=`logout_request_empty`,tt=`invalid_code_challenge_method`,nt=`pkce_params_missing`,rt=`invalid_cloud_discovery_metadata`,Z=`invalid_authority_metadata`,it=`untrusted_authority`,at=`missing_ssh_jwk`,ot=`missing_ssh_kid`,st=`missing_nonce_authentication_header`,ct=`invalid_authentication_header`,lt=`cannot_set_OIDCOptions`,ut=`cannot_allow_platform_broker`,dt=`authority_mismatch`,ft=`invalid_request_method_for_EAR`,pt=`invalid_authorize_post_body_parameters`;var mt=Object.freeze({__proto__:null,authorityMismatch:dt,authorityUriInsecure:Je,cannotAllowPlatformBroker:ut,cannotSetOIDCOptions:lt,claimsRequestParsingError:qe,emptyInputScopesError:Ze,invalidAuthenticationHeader:ct,invalidAuthorityMetadata:Z,invalidAuthorizePostBodyParameters:pt,invalidClaims:Qe,invalidCloudDiscoveryMetadata:rt,invalidCodeChallengeMethod:tt,invalidRequestMethodForEAR:ft,logoutRequestEmpty:et,missingNonceAuthenticationHeader:st,missingSshJwk:at,missingSshKid:ot,pkceParamsMissing:nt,redirectUriEmpty:Ke,tokenRequestEmpty:$e,untrustedAuthority:it,urlEmptyError:Xe,urlParseError:Ye});let ht={[Ke]:`A redirect URI is required for all calls, and none has been set.`,[qe]:`Could not parse the given claims request object.`,[Je]:`Authority URIs must use https. Please see here for valid authority configuration options: https://docs.microsoft.com/en-us/azure/active-directory/develop/msal-js-initializing-client-applications#configuration-options`,[Ye]:`URL could not be parsed into appropriate segments.`,[Xe]:`URL was empty or null.`,[Ze]:`Scopes cannot be passed as null, undefined or empty array because they are required to obtain an access token.`,[Qe]:`Given claims parameter must be a stringified JSON object.`,[$e]:`Token request was empty and not found in cache.`,[et]:`The logout request was null or undefined.`,[tt]:`code_challenge_method passed is invalid. Valid values are "plain" and "S256".`,[nt]:`Both params: code_challenge and code_challenge_method are to be passed if to be sent in the request`,[rt]:`Invalid cloudDiscoveryMetadata provided. Must be a stringified JSON object containing tenant_discovery_endpoint and metadata fields`,[Z]:`Invalid authorityMetadata provided. Must by a stringified JSON object containing authorization_endpoint, token_endpoint, issuer fields.`,[it]:`The provided authority is not a trusted authority. Please include this authority in the knownAuthorities config parameter.`,[at]:`Missing sshJwk in SSH certificate request. A stringified JSON Web Key is required when using the SSH authentication scheme.`,[ot]:`Missing sshKid in SSH certificate request. A string that uniquely identifies the public SSH key is required when using the SSH authentication scheme.`,[st]:`Unable to find an authentication header containing server nonce. Either the Authentication-Info or WWW-Authenticate headers must be present in order to obtain a server nonce.`,[ct]:`Invalid authentication header provided`,[lt]:`Cannot set OIDCOptions parameter. Please change the protocol mode to OIDC or use a non-Microsoft authority.`,[ut]:`Cannot set allowPlatformBroker parameter to true when not in AAD protocol mode.`,[dt]:`Authority mismatch error. Authority provided in login request or PublicClientApplication config does not match the environment of the provided account. Please use a matching account or make an interactive request to login to this authority.`,[pt]:`Invalid authorize post body parameters provided. If you are using authorizePostBodyParameters, the request method must be POST. Please check the request method and parameters.`,[ft]:`Invalid request method for EAR protocol mode. The request method cannot be GET when using EAR protocol mode. Please change the request method to POST.`},gt={redirectUriNotSet:{code:Ke,desc:ht[Ke]},claimsRequestParsingError:{code:qe,desc:ht[qe]},authorityUriInsecure:{code:Je,desc:ht[Je]},urlParseError:{code:Ye,desc:ht[Ye]},urlEmptyError:{code:Xe,desc:ht[Xe]},emptyScopesError:{code:Ze,desc:ht[Ze]},invalidClaimsRequest:{code:Qe,desc:ht[Qe]},tokenRequestEmptyError:{code:$e,desc:ht[$e]},logoutRequestEmptyError:{code:et,desc:ht[et]},invalidCodeChallengeMethod:{code:tt,desc:ht[tt]},invalidCodeChallengeParams:{code:nt,desc:ht[nt]},invalidCloudDiscoveryMetadata:{code:rt,desc:ht[rt]},invalidAuthorityMetadata:{code:Z,desc:ht[Z]},untrustedAuthority:{code:it,desc:ht[it]},missingSshJwk:{code:at,desc:ht[at]},missingSshKid:{code:ot,desc:ht[ot]},missingNonceAuthenticationHeader:{code:st,desc:ht[st]},invalidAuthenticationHeader:{code:ct,desc:ht[ct]},cannotSetOIDCOptions:{code:lt,desc:ht[lt]},cannotAllowPlatformBroker:{code:ut,desc:ht[ut]},authorityMismatch:{code:dt,desc:ht[dt]},invalidAuthorizePostBodyParameters:{code:pt,desc:ht[pt]},invalidRequestMethodForEAR:{code:ft,desc:ht[ft]}};var _t=class e extends L{constructor(t){super(t,ht[t]),this.name=`ClientConfigurationError`,Object.setPrototypeOf(this,e.prototype)}};function vt(e){return new _t(e)}var yt=class{static isEmptyObj(e){if(e)try{let t=JSON.parse(e);return Object.keys(t).length===0}catch{}return!0}static startsWith(e,t){return e.indexOf(t)===0}static endsWith(e,t){return e.length>=t.length&&e.lastIndexOf(t)===e.length-t.length}static queryStringToObject(e){let t={},n=e.split(`&`),r=e=>decodeURIComponent(e.replace(/\+/g,` `));return n.forEach(e=>{if(e.trim()){let[n,i]=e.split(/=(.+)/g,2);n&&i&&(t[r(n)]=r(i))}}),t}static trimArrayEntries(e){return e.map(e=>e.trim())}static removeEmptyStringsFromArray(e){return e.filter(e=>!!e)}static jsonParseHelper(e){try{return JSON.parse(e)}catch{return null}}static matchPattern(e,t){return new RegExp(e.replace(/\\/g,`\\\\`).replace(/\*/g,`[^ ]*`).replace(/\?/g,`\\?`)).test(t)}};function bt(e){if(!e)return e;let t=e.toLowerCase();return yt.endsWith(t,`?`)?t=t.slice(0,-1):yt.endsWith(t,`?/`)&&(t=t.slice(0,-2)),yt.endsWith(t,`/`)||(t+=`/`),t}function xt(e){return e.startsWith(`#/`)?e.substring(2):e.startsWith(`#`)||e.startsWith(`?`)?e.substring(1):e}function St(e){if(!e||e.indexOf(`=`)<0)return null;try{let t=xt(e),n=Object.fromEntries(new URLSearchParams(t));if(n.code||n.ear_jwe||n.error||n.error_description||n.state)return n}catch{throw J(ie)}return null}function Ct(e,t=!0,n){let r=[];return e.forEach((e,i)=>{!t&&n&&i in n?r.push(`${i}=${e}`):r.push(`${i}=${encodeURIComponent(e)}`)}),r.join(`&`)}function wt(e){if(!e)return e;let t=e.split(`#`)[0];try{let e=new URL(t);return bt(e.origin+e.pathname+e.search)}catch{return bt(t)}}var Tt=Object.freeze({__proto__:null,getDeserializedResponse:St,mapToQueryString:Ct,normalizeUrlForComparison:wt,stripLeadingHashOrQuery:xt}),Et=class e{get urlString(){return this._urlString}constructor(t){if(this._urlString=t,!this._urlString)throw vt(Xe);t.includes(`#`)||(this._urlString=e.canonicalizeUri(t))}static canonicalizeUri(e){if(e){let t=e.toLowerCase();return yt.endsWith(t,`?`)?t=t.slice(0,-1):yt.endsWith(t,`?/`)&&(t=t.slice(0,-2)),yt.endsWith(t,`/`)||(t+=`/`),t}return e}validateAsUri(){let e;try{e=this.getUrlComponents()}catch{throw vt(Ye)}if(!e.HostNameAndPort||!e.PathSegments)throw vt(Ye);if(!e.Protocol||e.Protocol.toLowerCase()!==`https:`)throw vt(Je)}static appendQueryString(e,t){return t?e.indexOf(`?`)<0?`${e}?${t}`:`${e}&${t}`:e}static removeHashFromUrl(t){return e.canonicalizeUri(t.split(`#`)[0])}replaceTenantPath(t){let n=this.getUrlComponents(),r=n.PathSegments;return t&&r.length!==0&&(r[0]===c.COMMON||r[0]===c.ORGANIZATIONS)&&(r[0]=t),e.constructAuthorityUriFromObject(n)}getUrlComponents(){let e=RegExp(`^(([^:/?#]+):)?(//([^/?#]*))?([^?#]*)(\\?([^#]*))?(#(.*))?`),t=this.urlString.match(e);if(!t)throw vt(Ye);let n={Protocol:t[1],HostNameAndPort:t[4],AbsolutePath:t[5],QueryString:t[7]},r=n.AbsolutePath.split(`/`);return r=r.filter(e=>e&&e.length>0),n.PathSegments=r,n.QueryString&&n.QueryString.endsWith(`/`)&&(n.QueryString=n.QueryString.substring(0,n.QueryString.length-1)),n}static getDomainFromUrl(e){let t=RegExp(`^([^:/?#]+://)?([^/?#]*)`),n=e.match(t);if(!n)throw vt(Ye);return n[2]}static getAbsoluteUrl(n,r){if(n[0]===t.FORWARD_SLASH){let t=new e(r).getUrlComponents();return t.Protocol+`//`+t.HostNameAndPort+n}return n}static constructAuthorityUriFromObject(t){return new e(t.Protocol+`//`+t.HostNameAndPort+`/`+t.PathSegments.join(`/`))}static hashContainsKnownProperties(e){return!!St(e)}};let Dt={endpointMetadata:{"login.microsoftonline.com":{token_endpoint:`https://login.microsoftonline.com/{tenantid}/oauth2/v2.0/token`,jwks_uri:`https://login.microsoftonline.com/{tenantid}/discovery/v2.0/keys`,issuer:`https://login.microsoftonline.com/{tenantid}/v2.0`,authorization_endpoint:`https://login.microsoftonline.com/{tenantid}/oauth2/v2.0/authorize`,end_session_endpoint:`https://login.microsoftonline.com/{tenantid}/oauth2/v2.0/logout`},"login.chinacloudapi.cn":{token_endpoint:`https://login.chinacloudapi.cn/{tenantid}/oauth2/v2.0/token`,jwks_uri:`https://login.chinacloudapi.cn/{tenantid}/discovery/v2.0/keys`,issuer:`https://login.partner.microsoftonline.cn/{tenantid}/v2.0`,authorization_endpoint:`https://login.chinacloudapi.cn/{tenantid}/oauth2/v2.0/authorize`,end_session_endpoint:`https://login.chinacloudapi.cn/{tenantid}/oauth2/v2.0/logout`},"login.microsoftonline.us":{token_endpoint:`https://login.microsoftonline.us/{tenantid}/oauth2/v2.0/token`,jwks_uri:`https://login.microsoftonline.us/{tenantid}/discovery/v2.0/keys`,issuer:`https://login.microsoftonline.us/{tenantid}/v2.0`,authorization_endpoint:`https://login.microsoftonline.us/{tenantid}/oauth2/v2.0/authorize`,end_session_endpoint:`https://login.microsoftonline.us/{tenantid}/oauth2/v2.0/logout`}},instanceDiscoveryMetadata:{metadata:[{preferred_network:`login.microsoftonline.com`,preferred_cache:`login.windows.net`,aliases:[`login.microsoftonline.com`,`login.windows.net`,`login.microsoft.com`,`sts.windows.net`]},{preferred_network:`login.partner.microsoftonline.cn`,preferred_cache:`login.partner.microsoftonline.cn`,aliases:[`login.partner.microsoftonline.cn`,`login.chinacloudapi.cn`]},{preferred_network:`login.microsoftonline.de`,preferred_cache:`login.microsoftonline.de`,aliases:[`login.microsoftonline.de`]},{preferred_network:`login.microsoftonline.us`,preferred_cache:`login.microsoftonline.us`,aliases:[`login.microsoftonline.us`,`login.usgovcloudapi.net`]},{preferred_network:`login-us.microsoftonline.com`,preferred_cache:`login-us.microsoftonline.com`,aliases:[`login-us.microsoftonline.com`]}]}},Ot=Dt.endpointMetadata,kt=Dt.instanceDiscoveryMetadata,At=new Set;kt.metadata.forEach(e=>{e.aliases.forEach(e=>{At.add(e)})});function jt(e,t){let n,r=e.canonicalAuthority;if(r){let i=new Et(r).getUrlComponents().HostNameAndPort;n=Mt(i,e.cloudDiscoveryMetadata?.metadata,S.CONFIG,t)||Mt(i,kt.metadata,S.HARDCODED_VALUES,t)||e.knownAuthorities}return n||[]}function Mt(e,t,n,r){if(r?.trace(`getAliasesFromMetadata called with source: ${n}`),e&&t){let i=Pt(t,e);if(i)return r?.trace(`getAliasesFromMetadata: found cloud discovery metadata in ${n}, returning aliases`),i.aliases;r?.trace(`getAliasesFromMetadata: did not find cloud discovery metadata in ${n}`)}return null}function Nt(e){return Pt(kt.metadata,e)}function Pt(e,t){for(let n=0;n(...a)=>{n.trace(`Executing function ${t}`);let o=r?.startMeasurement(t,i);if(i){let e=t+`CallCount`;r?.incrementFields({[e]:1},i)}try{let r=e(...a);return o?.end({success:!0}),n.trace(`Returning result from ${t}`),r}catch(e){n.trace(`Error occurred in ${t}`);try{n.trace(JSON.stringify(e))}catch{n.trace(`Unable to print error message.`)}throw o?.end({success:!1},e),e}},Ut=(e,t,n,r,i)=>(...a)=>{n.trace(`Executing function ${t}`);let o=r?.startMeasurement(t,i);if(i){let e=t+`CallCount`;r?.incrementFields({[e]:1},i)}return r?.setPreQueueTime(t,i),e(...a).then(e=>(n.trace(`Returning result from ${t}`),o?.end({success:!0}),e)).catch(e=>{n.trace(`Error occurred in ${t}`);try{n.trace(JSON.stringify(e))}catch{n.trace(`Unable to print error message.`)}throw o?.end({success:!1},e),e})};var Wt=class e{constructor(e,t,n,r){this.networkInterface=e,this.logger=t,this.performanceClient=n,this.correlationId=r}async detectRegion(r,i){this.performanceClient?.addQueueMeasurement(Q.RegionDiscoveryDetectRegion,this.correlationId);let a=r;if(a)i.region_source=O.ENVIRONMENT_VARIABLE;else{let r=e.IMDS_OPTIONS;try{let e=await Ut(this.getRegionFromIMDS.bind(this),Q.RegionDiscoveryGetRegionFromIMDS,this.logger,this.performanceClient,this.correlationId)(t.IMDS_VERSION,r);if(e.status===n.SUCCESS&&(a=e.body,i.region_source=O.IMDS),e.status===n.BAD_REQUEST){let e=await Ut(this.getCurrentVersion.bind(this),Q.RegionDiscoveryGetCurrentVersion,this.logger,this.performanceClient,this.correlationId)(r);if(!e)return i.region_source=O.FAILED_AUTO_DETECTION,null;let t=await Ut(this.getRegionFromIMDS.bind(this),Q.RegionDiscoveryGetRegionFromIMDS,this.logger,this.performanceClient,this.correlationId)(e,r);t.status===n.SUCCESS&&(a=t.body,i.region_source=O.IMDS)}}catch{return i.region_source=O.FAILED_AUTO_DETECTION,null}}return a||(i.region_source=O.FAILED_AUTO_DETECTION),a||null}async getRegionFromIMDS(e,n){return this.performanceClient?.addQueueMeasurement(Q.RegionDiscoveryGetRegionFromIMDS,this.correlationId),this.networkInterface.sendGetRequestAsync(`${t.IMDS_ENDPOINT}?api-version=${e}&format=text`,n,t.IMDS_TIMEOUT)}async getCurrentVersion(e){this.performanceClient?.addQueueMeasurement(Q.RegionDiscoveryGetCurrentVersion,this.correlationId);try{let r=await this.networkInterface.sendGetRequestAsync(`${t.IMDS_ENDPOINT}?format=json`,e);return r.status===n.BAD_REQUEST&&r.body&&r.body[`newest-versions`]&&r.body[`newest-versions`].length>0?r.body[`newest-versions`][0]:null}catch{return null}}};Wt.IMDS_OPTIONS={headers:{Metadata:`true`}};function Gt(){return Math.round(new Date().getTime()/1e3)}function Kt(e){return e.getTime()/1e3}function qt(e){return e?new Date(Number(e)*1e3):new Date}function Jt(e,t){let n=Number(e)||0;return Gt()+t>n}function Yt(e,t){let n=Number(e)+t*24*60*60*1e3;return Date.now()>n}function Xt(e){return Number(e)>Gt()}function Zt(e,t){return new Promise(n=>setTimeout(()=>n(t),e))}var Qt=Object.freeze({__proto__:null,delay:Zt,isCacheExpired:Yt,isTokenExpired:Jt,nowSeconds:Gt,toDateFromSeconds:qt,toSecondsFromDate:Kt,wasClockTurnedBack:Xt});function $t(e,t,n,r,i){return{credentialType:v.ID_TOKEN,homeAccountId:e,environment:t,clientId:r,secret:n,realm:i,lastUpdatedAt:Date.now().toString()}}function en(e,t,n,r,i,a,o,s,c,l,u,d,f,p,m){let h={homeAccountId:e,credentialType:v.ACCESS_TOKEN,secret:n,cachedAt:Gt().toString(),expiresOn:o.toString(),extendedExpiresOn:s.toString(),environment:t,clientId:r,realm:i,target:a,tokenType:u||w.BEARER,lastUpdatedAt:Date.now().toString()};if(d&&(h.userAssertionHash=d),l&&(h.refreshOn=l.toString()),p&&(h.requestedClaims=p,h.requestedClaimsHash=m),h.tokenType?.toLowerCase()!==w.BEARER.toLowerCase())switch(h.credentialType=v.ACCESS_TOKEN_WITH_AUTH_SCHEME,h.tokenType){case w.POP:let e=Ve(n,c);if(!e?.cnf?.kid)throw J(Oe);h.keyId=e.cnf.kid;break;case w.SSH:h.keyId=f}return h}function $(e,t,n,r,i,a,o){let s={credentialType:v.REFRESH_TOKEN,homeAccountId:e,environment:t,clientId:r,secret:n,lastUpdatedAt:Date.now().toString()};return a&&(s.userAssertionHash=a),i&&(s.familyId=i),o&&(s.expiresOn=o.toString()),s}function tn(e){return e.hasOwnProperty(`homeAccountId`)&&e.hasOwnProperty(`environment`)&&e.hasOwnProperty(`credentialType`)&&e.hasOwnProperty(`clientId`)&&e.hasOwnProperty(`secret`)}function nn(e){return e?tn(e)&&e.hasOwnProperty(`realm`)&&e.hasOwnProperty(`target`)&&(e.credentialType===v.ACCESS_TOKEN||e.credentialType===v.ACCESS_TOKEN_WITH_AUTH_SCHEME):!1}function rn(e){return e?tn(e)&&e.hasOwnProperty(`realm`)&&e.credentialType===v.ID_TOKEN:!1}function an(e){return e?tn(e)&&e.credentialType===v.REFRESH_TOKEN:!1}function on(e,t){let n=e.indexOf(C.CACHE_KEY)===0,r=!0;return t&&(r=t.hasOwnProperty(`failedRequests`)&&t.hasOwnProperty(`errors`)&&t.hasOwnProperty(`cacheHits`)),n&&r}function sn(e,t){let n=!1;e&&(n=e.indexOf(T.THROTTLING_PREFIX)===0);let r=!0;return t&&(r=t.hasOwnProperty(`throttleTime`)),n&&r}function cn({environment:e,clientId:t}){return[b,e,t].join(_.CACHE_KEY_SEPARATOR).toLowerCase()}function ln(e,t){return t?e.indexOf(b)===0&&t.hasOwnProperty(`clientId`)&&t.hasOwnProperty(`environment`):!1}function un(e,t){return t?e.indexOf(x.CACHE_KEY)===0&&t.hasOwnProperty(`aliases`)&&t.hasOwnProperty(`preferred_cache`)&&t.hasOwnProperty(`preferred_network`)&&t.hasOwnProperty(`canonical_authority`)&&t.hasOwnProperty(`authorization_endpoint`)&&t.hasOwnProperty(`token_endpoint`)&&t.hasOwnProperty(`issuer`)&&t.hasOwnProperty(`aliasesFromNetwork`)&&t.hasOwnProperty(`endpointsFromNetwork`)&&t.hasOwnProperty(`expiresAt`)&&t.hasOwnProperty(`jwks_uri`):!1}function dn(){return Gt()+x.REFRESH_TIME_SECONDS}function fn(e,t,n){e.authorization_endpoint=t.authorization_endpoint,e.token_endpoint=t.token_endpoint,e.end_session_endpoint=t.end_session_endpoint,e.issuer=t.issuer,e.endpointsFromNetwork=n,e.jwks_uri=t.jwks_uri}function pn(e,t,n){e.aliases=t.aliases,e.preferred_cache=t.preferred_cache,e.preferred_network=t.preferred_network,e.aliasesFromNetwork=n}function mn(e){return e.expiresAt<=Gt()}var hn=Object.freeze({__proto__:null,createAccessTokenEntity:en,createIdTokenEntity:$t,createRefreshTokenEntity:$,generateAppMetadataKey:cn,generateAuthorityMetadataExpiresAt:dn,isAccessTokenEntity:nn,isAppMetadataEntity:ln,isAuthorityMetadataEntity:un,isAuthorityMetadataExpired:mn,isCredentialEntity:tn,isIdTokenEntity:rn,isRefreshTokenEntity:an,isServerTelemetryEntity:on,isThrottlingEntity:sn,updateAuthorityEndpointMetadata:fn,updateCloudDiscoveryMetadata:pn}),gn=class e{constructor(e,t,n,r,i,a,o,s){this.canonicalAuthority=e,this._canonicalAuthority.validateAsUri(),this.networkInterface=t,this.cacheManager=n,this.authorityOptions=r,this.regionDiscoveryMetadata={region_used:void 0,region_source:void 0,region_outcome:void 0},this.logger=i,this.performanceClient=o,this.correlationId=a,this.managedIdentity=s||!1,this.regionDiscovery=new Wt(t,this.logger,this.performanceClient,this.correlationId)}getAuthorityType(e){if(e.HostNameAndPort.endsWith(t.CIAM_AUTH_URL))return We.Ciam;let n=e.PathSegments;if(n.length)switch(n[0].toLowerCase()){case t.ADFS:return We.Adfs;case t.DSTS:return We.Dsts}return We.Default}get authorityType(){return this.getAuthorityType(this.canonicalAuthorityUrlComponents)}get protocolMode(){return this.authorityOptions.protocolMode}get options(){return this.authorityOptions}get canonicalAuthority(){return this._canonicalAuthority.urlString}set canonicalAuthority(e){this._canonicalAuthority=new Et(e),this._canonicalAuthority.validateAsUri(),this._canonicalAuthorityUrlComponents=null}get canonicalAuthorityUrlComponents(){return this._canonicalAuthorityUrlComponents||=this._canonicalAuthority.getUrlComponents(),this._canonicalAuthorityUrlComponents}get hostnameAndPort(){return this.canonicalAuthorityUrlComponents.HostNameAndPort.toLowerCase()}get tenant(){return this.canonicalAuthorityUrlComponents.PathSegments[0]}get authorizationEndpoint(){if(this.discoveryComplete())return this.replacePath(this.metadata.authorization_endpoint);throw J(ne)}get tokenEndpoint(){if(this.discoveryComplete())return this.replacePath(this.metadata.token_endpoint);throw J(ne)}get deviceCodeEndpoint(){if(this.discoveryComplete())return this.replacePath(this.metadata.token_endpoint.replace(`/token`,`/devicecode`));throw J(ne)}get endSessionEndpoint(){if(this.discoveryComplete()){if(!this.metadata.end_session_endpoint)throw J(je);return this.replacePath(this.metadata.end_session_endpoint)}else throw J(ne)}get selfSignedJwtAudience(){if(this.discoveryComplete())return this.replacePath(this.metadata.issuer);throw J(ne)}get jwksUri(){if(this.discoveryComplete())return this.replacePath(this.metadata.jwks_uri);throw J(ne)}canReplaceTenant(t){return t.PathSegments.length===1&&!e.reservedTenantDomains.has(t.PathSegments[0])&&this.getAuthorityType(t)===We.Default&&this.protocolMode!==Ft.OIDC}replaceTenant(e){return e.replace(/{tenant}|{tenantid}/g,this.tenant)}replacePath(e){let t=e,n=new Et(this.metadata.canonical_authority).getUrlComponents(),r=n.PathSegments;return this.canonicalAuthorityUrlComponents.PathSegments.forEach((e,i)=>{let a=r[i];if(i===0&&this.canReplaceTenant(n)){let e=new Et(this.metadata.authorization_endpoint).getUrlComponents().PathSegments[0];a!==e&&(this.logger.verbose(`Replacing tenant domain name ${a} with id ${e}`),a=e)}e!==a&&(t=t.replace(`/${a}/`,`/${e}/`))}),this.replaceTenant(t)}get defaultOpenIdConfigurationEndpoint(){let e=this.hostnameAndPort;return this.canonicalAuthority.endsWith(`v2.0/`)||this.authorityType===We.Adfs||this.protocolMode===Ft.OIDC&&!this.isAliasOfKnownMicrosoftAuthority(e)?`${this.canonicalAuthority}.well-known/openid-configuration`:`${this.canonicalAuthority}v2.0/.well-known/openid-configuration`}discoveryComplete(){return!!this.metadata}async resolveEndpointsAsync(){this.performanceClient?.addQueueMeasurement(Q.AuthorityResolveEndpointsAsync,this.correlationId);let e=this.getCurrentMetadataEntity(),t=await Ut(this.updateCloudDiscoveryMetadata.bind(this),Q.AuthorityUpdateCloudDiscoveryMetadata,this.logger,this.performanceClient,this.correlationId)(e);this.canonicalAuthority=this.canonicalAuthority.replace(this.hostnameAndPort,e.preferred_network);let n=await Ut(this.updateEndpointMetadata.bind(this),Q.AuthorityUpdateEndpointMetadata,this.logger,this.performanceClient,this.correlationId)(e);this.updateCachedMetadata(e,t,{source:n}),this.performanceClient?.addFields({cloudDiscoverySource:t,authorityEndpointSource:n},this.correlationId)}getCurrentMetadataEntity(){let e=this.cacheManager.getAuthorityMetadataByAlias(this.hostnameAndPort);return e||={aliases:[],preferred_cache:this.hostnameAndPort,preferred_network:this.hostnameAndPort,canonical_authority:this.canonicalAuthority,authorization_endpoint:``,token_endpoint:``,end_session_endpoint:``,issuer:``,aliasesFromNetwork:!1,endpointsFromNetwork:!1,expiresAt:dn(),jwks_uri:``},e}updateCachedMetadata(e,t,n){t!==S.CACHE&&n?.source!==S.CACHE&&(e.expiresAt=dn(),e.canonical_authority=this.canonicalAuthority);let r=this.cacheManager.generateAuthorityMetadataCacheKey(e.preferred_cache);this.cacheManager.setAuthorityMetadata(r,e),this.metadata=e}async updateEndpointMetadata(e){this.performanceClient?.addQueueMeasurement(Q.AuthorityUpdateEndpointMetadata,this.correlationId);let t=this.updateEndpointMetadataFromLocalSources(e);if(t)return t.source===S.HARDCODED_VALUES&&this.authorityOptions.azureRegionConfiguration?.azureRegion&&t.metadata&&(fn(e,await Ut(this.updateMetadataWithRegionalInformation.bind(this),Q.AuthorityUpdateMetadataWithRegionalInformation,this.logger,this.performanceClient,this.correlationId)(t.metadata),!1),e.canonical_authority=this.canonicalAuthority),t.source;let n=await Ut(this.getEndpointMetadataFromNetwork.bind(this),Q.AuthorityGetEndpointMetadataFromNetwork,this.logger,this.performanceClient,this.correlationId)();if(n)return this.authorityOptions.azureRegionConfiguration?.azureRegion&&(n=await Ut(this.updateMetadataWithRegionalInformation.bind(this),Q.AuthorityUpdateMetadataWithRegionalInformation,this.logger,this.performanceClient,this.correlationId)(n)),fn(e,n,!0),S.NETWORK;throw J(H,this.defaultOpenIdConfigurationEndpoint)}updateEndpointMetadataFromLocalSources(e){this.logger.verbose(`Attempting to get endpoint metadata from authority configuration`);let t=this.getEndpointMetadataFromConfig();if(t)return this.logger.verbose(`Found endpoint metadata in authority configuration`),fn(e,t,!1),{source:S.CONFIG};if(this.logger.verbose(`Did not find endpoint metadata in the config... Attempting to get endpoint metadata from the hardcoded values.`),this.authorityOptions.skipAuthorityMetadataCache)this.logger.verbose(`Skipping hardcoded metadata cache since skipAuthorityMetadataCache is set to true. Attempting to get endpoint metadata from the network metadata cache.`);else{let t=this.getEndpointMetadataFromHardcodedValues();if(t)return fn(e,t,!1),{source:S.HARDCODED_VALUES,metadata:t};this.logger.verbose(`Did not find endpoint metadata in hardcoded values... Attempting to get endpoint metadata from the network metadata cache.`)}let n=mn(e);return this.isAuthoritySameType(e)&&e.endpointsFromNetwork&&!n?(this.logger.verbose(`Found endpoint metadata in the cache.`),{source:S.CACHE}):(n&&this.logger.verbose(`The metadata entity is expired.`),null)}isAuthoritySameType(e){return new Et(e.canonical_authority).getUrlComponents().PathSegments.length===this.canonicalAuthorityUrlComponents.PathSegments.length}getEndpointMetadataFromConfig(){if(this.authorityOptions.authorityMetadata)try{return JSON.parse(this.authorityOptions.authorityMetadata)}catch{throw vt(Z)}return null}async getEndpointMetadataFromNetwork(){this.performanceClient?.addQueueMeasurement(Q.AuthorityGetEndpointMetadataFromNetwork,this.correlationId);let e={},t=this.defaultOpenIdConfigurationEndpoint;this.logger.verbose(`Authority.getEndpointMetadataFromNetwork: attempting to retrieve OAuth endpoints from ${t}`);try{let n=await this.networkInterface.sendGetRequestAsync(t,e);return Ge(n.body)?n.body:(this.logger.verbose(`Authority.getEndpointMetadataFromNetwork: could not parse response as OpenID configuration`),null)}catch(e){return this.logger.verbose(`Authority.getEndpointMetadataFromNetwork: ${e}`),null}}getEndpointMetadataFromHardcodedValues(){return this.hostnameAndPort in Ot?Ot[this.hostnameAndPort]:null}async updateMetadataWithRegionalInformation(n){this.performanceClient?.addQueueMeasurement(Q.AuthorityUpdateMetadataWithRegionalInformation,this.correlationId);let r=this.authorityOptions.azureRegionConfiguration?.azureRegion;if(r){if(r!==t.AZURE_REGION_AUTO_DISCOVER_FLAG)return this.regionDiscoveryMetadata.region_outcome=k.CONFIGURED_NO_AUTO_DETECTION,this.regionDiscoveryMetadata.region_used=r,e.replaceWithRegionalInformation(n,r);let i=await Ut(this.regionDiscovery.detectRegion.bind(this.regionDiscovery),Q.RegionDiscoveryDetectRegion,this.logger,this.performanceClient,this.correlationId)(this.authorityOptions.azureRegionConfiguration?.environmentRegion,this.regionDiscoveryMetadata);if(i)return this.regionDiscoveryMetadata.region_outcome=k.AUTO_DETECTION_REQUESTED_SUCCESSFUL,this.regionDiscoveryMetadata.region_used=i,e.replaceWithRegionalInformation(n,i);this.regionDiscoveryMetadata.region_outcome=k.AUTO_DETECTION_REQUESTED_FAILED}return n}async updateCloudDiscoveryMetadata(e){this.performanceClient?.addQueueMeasurement(Q.AuthorityUpdateCloudDiscoveryMetadata,this.correlationId);let t=this.updateCloudDiscoveryMetadataFromLocalSources(e);if(t)return t;let n=await Ut(this.getCloudDiscoveryMetadataFromNetwork.bind(this),Q.AuthorityGetCloudDiscoveryMetadataFromNetwork,this.logger,this.performanceClient,this.correlationId)();if(n)return pn(e,n,!0),S.NETWORK;throw vt(it)}updateCloudDiscoveryMetadataFromLocalSources(e){this.logger.verbose(`Attempting to get cloud discovery metadata from authority configuration`),this.logger.verbosePii(`Known Authorities: ${this.authorityOptions.knownAuthorities||t.NOT_APPLICABLE}`),this.logger.verbosePii(`Authority Metadata: ${this.authorityOptions.authorityMetadata||t.NOT_APPLICABLE}`),this.logger.verbosePii(`Canonical Authority: ${e.canonical_authority||t.NOT_APPLICABLE}`);let n=this.getCloudDiscoveryMetadataFromConfig();if(n)return this.logger.verbose(`Found cloud discovery metadata in authority configuration`),pn(e,n,!1),S.CONFIG;if(this.logger.verbose(`Did not find cloud discovery metadata in the config... Attempting to get cloud discovery metadata from the hardcoded values.`),this.options.skipAuthorityMetadataCache)this.logger.verbose(`Skipping hardcoded cloud discovery metadata cache since skipAuthorityMetadataCache is set to true. Attempting to get cloud discovery metadata from the network metadata cache.`);else{let t=Nt(this.hostnameAndPort);if(t)return this.logger.verbose(`Found cloud discovery metadata from hardcoded values.`),pn(e,t,!1),S.HARDCODED_VALUES;this.logger.verbose(`Did not find cloud discovery metadata in hardcoded values... Attempting to get cloud discovery metadata from the network metadata cache.`)}let r=mn(e);return this.isAuthoritySameType(e)&&e.aliasesFromNetwork&&!r?(this.logger.verbose(`Found cloud discovery metadata in the cache.`),S.CACHE):(r&&this.logger.verbose(`The metadata entity is expired.`),null)}getCloudDiscoveryMetadataFromConfig(){if(this.authorityType===We.Ciam)return this.logger.verbose(`CIAM authorities do not support cloud discovery metadata, generate the aliases from authority host.`),e.createCloudDiscoveryMetadataFromHost(this.hostnameAndPort);if(this.authorityOptions.cloudDiscoveryMetadata){this.logger.verbose(`The cloud discovery metadata has been provided as a network response, in the config.`);try{this.logger.verbose(`Attempting to parse the cloud discovery metadata.`);let e=Pt(JSON.parse(this.authorityOptions.cloudDiscoveryMetadata).metadata,this.hostnameAndPort);if(this.logger.verbose(`Parsed the cloud discovery metadata.`),e)return this.logger.verbose(`There is returnable metadata attached to the parsed cloud discovery metadata.`),e;this.logger.verbose(`There is no metadata attached to the parsed cloud discovery metadata.`)}catch{throw this.logger.verbose(`Unable to parse the cloud discovery metadata. Throwing Invalid Cloud Discovery Metadata Error.`),vt(rt)}}return this.isInKnownAuthorities()?(this.logger.verbose(`The host is included in knownAuthorities. Creating new cloud discovery metadata from the host.`),e.createCloudDiscoveryMetadataFromHost(this.hostnameAndPort)):null}async getCloudDiscoveryMetadataFromNetwork(){this.performanceClient?.addQueueMeasurement(Q.AuthorityGetCloudDiscoveryMetadataFromNetwork,this.correlationId);let n=`${t.AAD_INSTANCE_DISCOVERY_ENDPT}${this.canonicalAuthority}oauth2/v2.0/authorize`,r={},i=null;try{let e=await this.networkInterface.sendGetRequestAsync(n,r),a,o;if(Lt(e.body))a=e.body,o=a.metadata,this.logger.verbosePii(`tenant_discovery_endpoint is: ${a.tenant_discovery_endpoint}`);else if(Rt(e.body)){if(this.logger.warning(`A CloudInstanceDiscoveryErrorResponse was returned. The cloud instance discovery network request's status code is: ${e.status}`),a=e.body,a.error===t.INVALID_INSTANCE)return this.logger.error(`The CloudInstanceDiscoveryErrorResponse error is invalid_instance.`),null;this.logger.warning(`The CloudInstanceDiscoveryErrorResponse error is ${a.error}`),this.logger.warning(`The CloudInstanceDiscoveryErrorResponse error description is ${a.error_description}`),this.logger.warning(`Setting the value of the CloudInstanceDiscoveryMetadata (returned from the network) to []`),o=[]}else return this.logger.error(`AAD did not return a CloudInstanceDiscoveryResponse or CloudInstanceDiscoveryErrorResponse`),null;this.logger.verbose(`Attempting to find a match between the developer's authority and the CloudInstanceDiscoveryMetadata returned from the network request.`),i=Pt(o,this.hostnameAndPort)}catch(e){if(e instanceof L)this.logger.error(`There was a network error while attempting to get the cloud discovery instance metadata.\nError: ${e.errorCode}\nError Description: ${e.errorMessage}`);else{let t=e;this.logger.error(`A non-MSALJS error was thrown while attempting to get the cloud instance discovery metadata.\nError: ${t.name}\nError Description: ${t.message}`)}return null}return i||=(this.logger.warning(`The developer's authority was not found within the CloudInstanceDiscoveryMetadata returned from the network request.`),this.logger.verbose(`Creating custom Authority for custom domain scenario.`),e.createCloudDiscoveryMetadataFromHost(this.hostnameAndPort)),i}isInKnownAuthorities(){return this.authorityOptions.knownAuthorities.filter(e=>e&&Et.getDomainFromUrl(e).toLowerCase()===this.hostnameAndPort).length>0}static generateAuthority(e,n){let r;if(n&&n.azureCloudInstance!==It.None){let e=n.tenant?n.tenant:t.DEFAULT_COMMON_TENANT;r=`${n.azureCloudInstance}/${e}/`}return r||e}static createCloudDiscoveryMetadataFromHost(e){return{preferred_network:e,preferred_cache:e,aliases:[e]}}getPreferredCache(){if(this.managedIdentity)return t.DEFAULT_AUTHORITY_HOST;if(this.discoveryComplete())return this.metadata.preferred_cache;throw J(ne)}isAlias(e){return this.metadata.aliases.indexOf(e)>-1}isAliasOfKnownMicrosoftAuthority(e){return At.has(e)}static isPublicCloudAuthority(e){return t.KNOWN_PUBLIC_CLOUDS.indexOf(e)>=0}static buildRegionalAuthorityString(e,n,r){let i=new Et(e);i.validateAsUri();let a=i.getUrlComponents(),o=`${n}.${a.HostNameAndPort}`;this.isPublicCloudAuthority(a.HostNameAndPort)&&(o=`${n}.${t.REGIONAL_AUTH_PUBLIC_CLOUD_SUFFIX}`);let s=Et.constructAuthorityUriFromObject({...i.getUrlComponents(),HostNameAndPort:o}).urlString;return r?`${s}?${r}`:s}static replaceWithRegionalInformation(t,n){let r={...t};return r.authorization_endpoint=e.buildRegionalAuthorityString(r.authorization_endpoint,n),r.token_endpoint=e.buildRegionalAuthorityString(r.token_endpoint,n),r.end_session_endpoint&&=e.buildRegionalAuthorityString(r.end_session_endpoint,n),r}static transformCIAMAuthority(e){let n=e,r=new Et(e).getUrlComponents();if(r.PathSegments.length===0&&r.HostNameAndPort.endsWith(t.CIAM_AUTH_URL)){let e=r.HostNameAndPort.split(`.`)[0];n=`${n}${e}${t.AAD_TENANT_DOMAIN_SUFFIX}`}return n}};gn.reservedTenantDomains=new Set([`{tenant}`,`{tenantid}`,c.COMMON,c.CONSUMERS,c.ORGANIZATIONS]);function _n(e){let t=new Et(e).getUrlComponents().PathSegments.slice(-1)[0]?.toLowerCase();switch(t){case c.COMMON:case c.ORGANIZATIONS:case c.CONSUMERS:return;default:return t}}function vn(e){return e.endsWith(t.FORWARD_SLASH)?e:`${e}${t.FORWARD_SLASH}`}function yn(e){let t=e.cloudDiscoveryMetadata,n;if(t)try{n=JSON.parse(t)}catch{throw vt(rt)}return{canonicalAuthority:e.authority?vn(e.authority):void 0,knownAuthorities:e.knownAuthorities,cloudDiscoveryMetadata:n}}async function bn(e,t,n,r,i,a,o){o?.addQueueMeasurement(Q.AuthorityFactoryCreateDiscoveredInstance,a);let s=new gn(gn.transformCIAMAuthority(vn(e)),t,n,r,i,a,o);try{return await Ut(s.resolveEndpointsAsync.bind(s),Q.AuthorityResolveEndpointsAsync,i,o,a)(),s}catch{throw J(ne)}}var xn=Object.freeze({__proto__:null,createDiscoveredInstance:bn});let Sn=`client_id`,Cn=`redirect_uri`,wn=`response_type`,Tn=`response_mode`,En=`grant_type`,Dn=`claims`,On=`scope`,kn=`refresh_token`,An=`state`,jn=`nonce`,Mn=`prompt`,Nn=`code`,Pn=`code_challenge`,Fn=`code_challenge_method`,In=`code_verifier`,Ln=`client-request-id`,Rn=`x-client-SKU`,zn=`x-client-VER`,Bn=`x-client-OS`,Vn=`x-client-CPU`,Hn=`x-client-current-telemetry`,Un=`x-client-last-telemetry`,Wn=`x-ms-lib-capability`,Gn=`x-app-name`,Kn=`x-app-ver`,qn=`post_logout_redirect_uri`,Jn=`id_token_hint`,Yn=`device_code`,Xn=`client_secret`,Zn=`client_assertion`,Qn=`client_assertion_type`,$n=`token_type`,er=`req_cnf`,tr=`assertion`,nr=`requested_token_use`,rr=`return_spa_code`,ir=`nativebroker`,ar=`logout_hint`,or=`login_hint`,sr=`domain_hint`,cr=`brk_client_id`,lr=`brk_redirect_uri`,ur=`instance_aware`,dr=`ear_jwk`,fr=`ear_jwe_crypto`;var pr=Object.freeze({__proto__:null,ACCESS_TOKEN:`access_token`,BROKER_CLIENT_ID:cr,BROKER_REDIRECT_URI:lr,CCS_HEADER:`X-AnchorMailbox`,CLAIMS:Dn,CLIENT_ASSERTION:Zn,CLIENT_ASSERTION_TYPE:Qn,CLIENT_ID:Sn,CLIENT_INFO:`client_info`,CLIENT_REQUEST_ID:Ln,CLIENT_SECRET:Xn,CODE:Nn,CODE_CHALLENGE:Pn,CODE_CHALLENGE_METHOD:Fn,CODE_VERIFIER:In,DEVICE_CODE:Yn,DOMAIN_HINT:sr,EAR_JWE_CRYPTO:fr,EAR_JWK:dr,ERROR:`error`,ERROR_DESCRIPTION:`error_description`,EXPIRES_IN:`expires_in`,FOCI:`foci`,GRANT_TYPE:En,ID_TOKEN:`id_token`,ID_TOKEN_HINT:Jn,INSTANCE_AWARE:ur,LOGIN_HINT:or,LOGOUT_HINT:ar,NATIVE_BROKER:ir,NONCE:jn,OBO_ASSERTION:tr,ON_BEHALF_OF:`on_behalf_of`,POST_LOGOUT_URI:qn,PROMPT:Mn,REDIRECT_URI:Cn,REFRESH_TOKEN:kn,REFRESH_TOKEN_EXPIRES_IN:`refresh_token_expires_in`,REQUESTED_TOKEN_USE:nr,REQ_CNF:er,RESPONSE_MODE:Tn,RESPONSE_TYPE:wn,RETURN_SPA_CODE:rr,SCOPE:On,SESSION_STATE:`session_state`,SID:`sid`,STATE:An,TOKEN_TYPE:$n,X_APP_NAME:Gn,X_APP_VER:Kn,X_CLIENT_CPU:Vn,X_CLIENT_CURR_TELEM:Hn,X_CLIENT_EXTRA_SKU:`x-client-xtra-sku`,X_CLIENT_LAST_TELEM:Un,X_CLIENT_OS:Bn,X_CLIENT_SKU:Rn,X_CLIENT_VER:zn,X_MS_LIB_CAPABILITY:Wn});let mr={createNewGuid:()=>{throw J(K)},base64Decode:()=>{throw J(K)},base64Encode:()=>{throw J(K)},base64UrlEncode:()=>{throw J(K)},encodeKid:()=>{throw J(K)},async getPublicKeyThumbprint(){throw J(K)},async removeTokenBindingKey(){throw J(K)},async clearKeystore(){throw J(K)},async signJwt(){throw J(K)},async hashString(){throw J(K)}};e.LogLevel=void 0,(function(e){e[e.Error=0]=`Error`,e[e.Warning=1]=`Warning`,e[e.Info=2]=`Info`,e[e.Verbose=3]=`Verbose`,e[e.Trace=4]=`Trace`})(e.LogLevel||={});var hr=class n{constructor(r,i,a){this.level=e.LogLevel.Info;let o=()=>{},s=r||n.createDefaultLoggerOptions();this.localCallback=s.loggerCallback||o,this.piiLoggingEnabled=s.piiLoggingEnabled||!1,this.level=typeof s.logLevel==`number`?s.logLevel:e.LogLevel.Info,this.correlationId=s.correlationId||t.EMPTY_STRING,this.packageName=i||t.EMPTY_STRING,this.packageVersion=a||t.EMPTY_STRING}static createDefaultLoggerOptions(){return{loggerCallback:()=>{},piiLoggingEnabled:!1,logLevel:e.LogLevel.Info}}clone(e,t,r){return new n({loggerCallback:this.localCallback,piiLoggingEnabled:this.piiLoggingEnabled,logLevel:this.level,correlationId:r||this.correlationId},e,t)}logMessage(t,n){if(n.logLevel>this.level||!this.piiLoggingEnabled&&n.containsPii)return;let r=`${`[${new Date().toUTCString()}] : [${n.correlationId||this.correlationId||``}]`} : ${this.packageName}@${this.packageVersion} : ${e.LogLevel[n.logLevel]} - ${t}`;this.executeCallback(n.logLevel,r,n.containsPii||!1)}executeCallback(e,t,n){this.localCallback&&this.localCallback(e,t,n)}error(n,r){this.logMessage(n,{logLevel:e.LogLevel.Error,containsPii:!1,correlationId:r||t.EMPTY_STRING})}errorPii(n,r){this.logMessage(n,{logLevel:e.LogLevel.Error,containsPii:!0,correlationId:r||t.EMPTY_STRING})}warning(n,r){this.logMessage(n,{logLevel:e.LogLevel.Warning,containsPii:!1,correlationId:r||t.EMPTY_STRING})}warningPii(n,r){this.logMessage(n,{logLevel:e.LogLevel.Warning,containsPii:!0,correlationId:r||t.EMPTY_STRING})}info(n,r){this.logMessage(n,{logLevel:e.LogLevel.Info,containsPii:!1,correlationId:r||t.EMPTY_STRING})}infoPii(n,r){this.logMessage(n,{logLevel:e.LogLevel.Info,containsPii:!0,correlationId:r||t.EMPTY_STRING})}verbose(n,r){this.logMessage(n,{logLevel:e.LogLevel.Verbose,containsPii:!1,correlationId:r||t.EMPTY_STRING})}verbosePii(n,r){this.logMessage(n,{logLevel:e.LogLevel.Verbose,containsPii:!0,correlationId:r||t.EMPTY_STRING})}trace(n,r){this.logMessage(n,{logLevel:e.LogLevel.Trace,containsPii:!1,correlationId:r||t.EMPTY_STRING})}tracePii(n,r){this.logMessage(n,{logLevel:e.LogLevel.Trace,containsPii:!0,correlationId:r||t.EMPTY_STRING})}isPiiLoggingEnabled(){return this.piiLoggingEnabled||!1}};let gr=`@azure/msal-common`,_r=`15.13.2`;var vr=class e{constructor(e){let t=e?yt.trimArrayEntries([...e]):[],n=t?yt.removeEmptyStringsFromArray(t):[];if(!n||!n.length)throw vt(Ze);this.scopes=new Set,n.forEach(e=>this.scopes.add(e))}static fromString(n){return new e((n||t.EMPTY_STRING).split(` `))}static createSearchScopes(n){let r=new e(n&&n.length>0?n:[...i]);return r.containsOnlyOIDCScopes()?r.removeScope(t.OFFLINE_ACCESS_SCOPE):r.removeOIDCScopes(),r}containsScope(t){let n=new e(this.printScopesLowerCase().split(` `));return t?n.scopes.has(t.toLowerCase()):!1}containsScopeSet(e){return!e||e.scopes.size<=0?!1:this.scopes.size>=e.scopes.size&&e.asArray().every(e=>this.containsScope(e))}containsOnlyOIDCScopes(){let e=0;return a.forEach(t=>{this.containsScope(t)&&(e+=1)}),this.scopes.size===e}appendScope(e){e&&this.scopes.add(e.trim())}appendScopes(e){try{e.forEach(e=>this.appendScope(e))}catch{throw J(pe)}}removeScope(e){if(!e)throw J(fe);this.scopes.delete(e.trim())}removeOIDCScopes(){a.forEach(e=>{this.scopes.delete(e)})}unionScopeSets(e){if(!e)throw J(me);let t=new Set;return e.scopes.forEach(e=>t.add(e.toLowerCase())),this.scopes.forEach(e=>t.add(e.toLowerCase())),t}intersectingScopeSets(e){if(!e)throw J(me);e.containsOnlyOIDCScopes()||e.removeOIDCScopes();let t=this.unionScopeSets(e),n=e.getScopeCount(),r=this.getScopeCount();return t.sizee.push(t)),e}printScopes(){return this.scopes?this.asArray().join(` `):t.EMPTY_STRING}printScopesLowerCase(){return this.printScopes().toLowerCase()}};function yr(e,t){if(!e)throw J(B);try{let n=t(e);return JSON.parse(n)}catch{throw J(z)}}function br(e){if(!e)throw J(z);let n=e.split(_.CLIENT_INFO_SEPARATOR,2);return{uid:n[0],utid:n.length<2?t.EMPTY_STRING:n[1]}}function xr(e,t){return!!e&&!!t&&e===t.split(`.`)[1]}function Sr(e,t,n,r){if(r){let{oid:t,sub:n,tid:i,name:a,tfp:o,acr:s,preferred_username:c,upn:l,login_hint:u}=r,d=i||o||s||``;return{tenantId:d,localAccountId:t||n||``,name:a,username:c||l||``,loginHint:u,isHomeTenant:xr(d,e)}}else return{tenantId:n,localAccountId:t,username:``,isHomeTenant:xr(n,e)}}function Cr(e,t,n,r){let i=e;if(t){let{isHomeTenant:n,...r}=t;i={...e,...r}}if(n){let{isHomeTenant:t,...a}=Sr(e.homeAccountId,e.localAccountId,e.tenantId,n);return i={...i,...a,idTokenClaims:n,idToken:r},i}return i}function wr(e){return e&&(e.tid||e.tfp||e.acr)||null}var Tr=class e{static getAccountInfo(e){return{homeAccountId:e.homeAccountId,environment:e.environment,tenantId:e.realm,username:e.username,localAccountId:e.localAccountId,loginHint:e.loginHint,name:e.name,nativeAccountId:e.nativeAccountId,authorityType:e.authorityType,tenantProfiles:new Map((e.tenantProfiles||[]).map(e=>[e.tenantId,e])),dataBoundary:e.dataBoundary}}isSingleTenant(){return!this.tenantProfiles}static createAccount(t,n,r){let i=new e;n.authorityType===We.Adfs?i.authorityType=g.ADFS_ACCOUNT_TYPE:n.protocolMode===Ft.OIDC?i.authorityType=g.GENERIC_ACCOUNT_TYPE:i.authorityType=g.MSSTS_ACCOUNT_TYPE;let a;t.clientInfo&&r&&(a=yr(t.clientInfo,r),a.xms_tdbr&&(i.dataBoundary=a.xms_tdbr===`EU`?`EU`:`None`)),i.clientInfo=t.clientInfo,i.homeAccountId=t.homeAccountId,i.nativeAccountId=t.nativeAccountId;let o=t.environment||n&&n.getPreferredCache();if(!o)throw J(be);i.environment=o,i.realm=a?.utid||wr(t.idTokenClaims)||``,i.localAccountId=a?.uid||t.idTokenClaims?.oid||t.idTokenClaims?.sub||``;let s=t.idTokenClaims?.preferred_username||t.idTokenClaims?.upn,c=t.idTokenClaims?.emails?t.idTokenClaims.emails[0]:null;return i.username=s||c||``,i.loginHint=t.idTokenClaims?.login_hint,i.name=t.idTokenClaims?.name||``,i.cloudGraphHostName=t.cloudGraphHostName,i.msGraphHost=t.msGraphHost,t.tenantProfiles?i.tenantProfiles=t.tenantProfiles:i.tenantProfiles=[Sr(t.homeAccountId,i.localAccountId,i.realm,t.idTokenClaims)],i}static createFromAccountInfo(t,n,r){let i=new e;return i.authorityType=t.authorityType||g.GENERIC_ACCOUNT_TYPE,i.homeAccountId=t.homeAccountId,i.localAccountId=t.localAccountId,i.nativeAccountId=t.nativeAccountId,i.realm=t.tenantId,i.environment=t.environment,i.username=t.username,i.name=t.name,i.loginHint=t.loginHint,i.cloudGraphHostName=n,i.msGraphHost=r,i.tenantProfiles=Array.from(t.tenantProfiles?.values()||[]),i.dataBoundary=t.dataBoundary,i}static generateHomeAccountId(e,t,n,r,i){if(!(t===We.Adfs||t===We.Dsts)){if(e)try{let t=yr(e,r.base64Decode);if(t.uid&&t.utid)return`${t.uid}.${t.utid}`}catch{}n.warning(`No client info in response`)}return i?.sub||``}static isAccountEntity(e){return e?e.hasOwnProperty(`homeAccountId`)&&e.hasOwnProperty(`environment`)&&e.hasOwnProperty(`realm`)&&e.hasOwnProperty(`localAccountId`)&&e.hasOwnProperty(`username`)&&e.hasOwnProperty(`authorityType`):!1}static accountInfoIsEqual(e,t,n){if(!e||!t)return!1;let r=!0;if(n){let n=e.idTokenClaims||{},i=t.idTokenClaims||{};r=n.iat===i.iat&&n.nonce===i.nonce}return e.homeAccountId===t.homeAccountId&&e.localAccountId===t.localAccountId&&e.username===t.username&&e.tenantId===t.tenantId&&e.loginHint===t.loginHint&&e.environment===t.environment&&e.nativeAccountId===t.nativeAccountId&&r}};let Er=`cache_quota_exceeded`,Dr=`cache_error_unknown`;var Or=Object.freeze({__proto__:null,cacheErrorUnknown:Dr,cacheQuotaExceeded:Er});let kr={[Er]:`Exceeded cache storage capacity.`,[Dr]:`Unexpected error occurred when using cache storage.`};var Ar=class e extends L{constructor(t,n){let r=n||(kr[t]?kr[t]:kr[Dr]);super(`${t}: ${r}`),Object.setPrototypeOf(this,e.prototype),this.name=`CacheError`,this.errorCode=t,this.errorMessage=r}};function jr(e){return e instanceof Error?e.name===`QuotaExceededError`||e.name===`NS_ERROR_DOM_QUOTA_REACHED`||e.message.includes(`exceeded the quota`)?new Ar(Er):new Ar(e.name,e.message):new Ar(Dr)}var Mr=class{constructor(e,t,n,r,i){this.clientId=e,this.cryptoImpl=t,this.commonLogger=n.clone(gr,_r),this.staticAuthorityOptions=i,this.performanceClient=r}getAllAccounts(e,t){return this.buildTenantProfiles(this.getAccountsFilteredBy(e,t),t,e)}getAccountInfoFilteredBy(e,t){if(Object.keys(e).length===0||Object.values(e).every(e=>!e))return this.commonLogger.warning(`getAccountInfoFilteredBy: Account filter is empty or invalid, returning null`),null;let n=this.getAllAccounts(e,t);return n.length>1?n.sort(e=>e.idTokenClaims?-1:1)[0]:n.length===1?n[0]:null}getBaseAccountInfo(e,t){let n=this.getAccountsFilteredBy(e,t);return n.length>0?Tr.getAccountInfo(n[0]):null}buildTenantProfiles(e,t,n){return e.flatMap(e=>this.getTenantProfilesFromAccountEntity(e,t,n?.tenantId,n))}getTenantedAccountInfoByFilter(e,t,n,r,i){let a=null,o;if(i&&!this.tenantProfileMatchesFilter(n,i))return null;let s=this.getIdToken(e,r,t,n.tenantId);return s&&(o=Ve(s.secret,this.cryptoImpl.base64Decode),!this.idTokenClaimsMatchTenantProfileFilter(o,i))?null:(a=Cr(e,n,o,s?.secret),a)}getTenantProfilesFromAccountEntity(e,t,n,r){let i=Tr.getAccountInfo(e),a=i.tenantProfiles||new Map,o=this.getTokenKeys();if(n){let e=a.get(n);if(e)a=new Map([[n,e]]);else return[]}let s=[];return a.forEach(e=>{let n=this.getTenantedAccountInfoByFilter(i,o,e,t,r);n&&s.push(n)}),s}tenantProfileMatchesFilter(e,t){return!(t.localAccountId&&!this.matchLocalAccountIdFromTenantProfile(e,t.localAccountId)||t.name&&e.name!==t.name||t.isHomeTenant!==void 0&&e.isHomeTenant!==t.isHomeTenant)}idTokenClaimsMatchTenantProfileFilter(e,t){return!(t&&(t.localAccountId&&!this.matchLocalAccountIdFromTokenClaims(e,t.localAccountId)||t.loginHint&&!this.matchLoginHintFromTokenClaims(e,t.loginHint)||t.username&&!this.matchUsername(e.preferred_username,t.username)||t.name&&!this.matchName(e,t.name)||t.sid&&!this.matchSid(e,t.sid)))}async saveCacheRecord(e,t,n,r){if(!e)throw J(ye);try{e.account&&await this.setAccount(e.account,t,n),e.idToken&&r?.idToken!==!1&&await this.setIdTokenCredential(e.idToken,t,n),e.accessToken&&r?.accessToken!==!1&&await this.saveAccessToken(e.accessToken,t,n),e.refreshToken&&r?.refreshToken!==!1&&await this.setRefreshTokenCredential(e.refreshToken,t,n),e.appMetadata&&this.setAppMetadata(e.appMetadata,t)}catch(e){throw this.commonLogger?.error(`CacheManager.saveCacheRecord: failed`),e instanceof L?e:jr(e)}}async saveAccessToken(e,t,n){let r={clientId:e.clientId,credentialType:e.credentialType,environment:e.environment,homeAccountId:e.homeAccountId,realm:e.realm,tokenType:e.tokenType,requestedClaimsHash:e.requestedClaimsHash},i=this.getTokenKeys(),a=vr.fromString(e.target);i.accessToken.forEach(e=>{if(!this.accessTokenKeyMatchesFilter(e,r,!1))return;let n=this.getAccessTokenCredential(e,t);n&&this.credentialMatchesFilter(n,r)&&vr.fromString(n.target).intersectingScopeSets(a)&&this.removeAccessToken(e,t)}),await this.setAccessTokenCredential(e,t,n)}getAccountsFilteredBy(e,t){let n=this.getAccountKeys(),r=[];return n.forEach(n=>{let i=this.getAccount(n,t);if(!i||e.homeAccountId&&!this.matchHomeAccountId(i,e.homeAccountId)||e.username&&!this.matchUsername(i.username,e.username)||e.environment&&!this.matchEnvironment(i,e.environment)||e.realm&&!this.matchRealm(i,e.realm)||e.nativeAccountId&&!this.matchNativeAccountId(i,e.nativeAccountId)||e.authorityType&&!this.matchAuthorityType(i,e.authorityType))return;let a={localAccountId:e?.localAccountId,name:e?.name},o=i.tenantProfiles?.filter(e=>this.tenantProfileMatchesFilter(e,a));o&&o.length===0||r.push(i)}),r}credentialMatchesFilter(e,t){return!(t.clientId&&!this.matchClientId(e,t.clientId)||t.userAssertionHash&&!this.matchUserAssertionHash(e,t.userAssertionHash)||typeof t.homeAccountId==`string`&&!this.matchHomeAccountId(e,t.homeAccountId)||t.environment&&!this.matchEnvironment(e,t.environment)||t.realm&&!this.matchRealm(e,t.realm)||t.credentialType&&!this.matchCredentialType(e,t.credentialType)||t.familyId&&!this.matchFamilyId(e,t.familyId)||t.target&&!this.matchTarget(e,t.target)||(t.requestedClaimsHash||e.requestedClaimsHash)&&e.requestedClaimsHash!==t.requestedClaimsHash||e.credentialType===v.ACCESS_TOKEN_WITH_AUTH_SCHEME&&(t.tokenType&&!this.matchTokenType(e,t.tokenType)||t.tokenType===w.SSH&&t.keyId&&!this.matchKeyId(e,t.keyId)))}getAppMetadataFilteredBy(e){let t=this.getKeys(),n={};return t.forEach(t=>{if(!this.isAppMetadata(t))return;let r=this.getAppMetadata(t);r&&(e.environment&&!this.matchEnvironment(r,e.environment)||e.clientId&&!this.matchClientId(r,e.clientId)||(n[t]=r))}),n}getAuthorityMetadataByAlias(e){let t=this.getAuthorityMetadataKeys(),n=null;return t.forEach(t=>{if(!this.isAuthorityMetadata(t)||t.indexOf(this.clientId)===-1)return;let r=this.getAuthorityMetadata(t);r&&r.aliases.indexOf(e)!==-1&&(n=r)}),n}removeAllAccounts(e){this.getAllAccounts({},e).forEach(t=>{this.removeAccount(t,e)})}removeAccount(e,t){this.removeAccountContext(e,t),this.getAccountKeys().filter(t=>t.includes(e.homeAccountId)&&t.includes(e.environment)).forEach(e=>{this.removeItem(e,t),this.performanceClient.incrementFields({accountsRemoved:1},t)})}removeAccountContext(e,t){let n=this.getTokenKeys(),r=t=>t.includes(e.homeAccountId)&&t.includes(e.environment);n.idToken.filter(r).forEach(e=>{this.removeIdToken(e,t)}),n.accessToken.filter(r).forEach(e=>{this.removeAccessToken(e,t)}),n.refreshToken.filter(r).forEach(e=>{this.removeRefreshToken(e,t)})}removeAccessToken(e,t){let n=this.getAccessTokenCredential(e,t);if(this.removeItem(e,t),this.performanceClient.incrementFields({accessTokensRemoved:1},t),!n||n.credentialType.toLowerCase()!==v.ACCESS_TOKEN_WITH_AUTH_SCHEME.toLowerCase()||n.tokenType!==w.POP)return;let r=n.keyId;r&&this.cryptoImpl.removeTokenBindingKey(r).catch(()=>{this.commonLogger.error(`Failed to remove token binding key ${r}`,t),this.performanceClient?.incrementFields({removeTokenBindingKeyFailure:1},t)})}removeAppMetadata(e){return this.getKeys().forEach(t=>{this.isAppMetadata(t)&&this.removeItem(t,e)}),!0}getIdToken(e,t,n,r,i){this.commonLogger.trace(`CacheManager - getIdToken called`);let a={homeAccountId:e.homeAccountId,environment:e.environment,credentialType:v.ID_TOKEN,clientId:this.clientId,realm:r},o=this.getIdTokensByFilter(a,t,n),s=o.size;if(s<1)return this.commonLogger.info(`CacheManager:getIdToken - No token found`),null;if(s>1){let n=o;if(!r){let t=new Map;o.forEach((n,r)=>{n.realm===e.tenantId&&t.set(r,n)});let r=t.size;if(r<1)return this.commonLogger.info(`CacheManager:getIdToken - Multiple ID tokens found for account but none match account entity tenant id, returning first result`),o.values().next().value;if(r===1)return this.commonLogger.info(`CacheManager:getIdToken - Multiple ID tokens found for account, defaulting to home tenant profile`),t.values().next().value;n=t}return this.commonLogger.info(`CacheManager:getIdToken - Multiple matching ID tokens found, clearing them`),n.forEach((e,n)=>{this.removeIdToken(n,t)}),i&&t&&i.addFields({multiMatchedID:o.size},t),null}return this.commonLogger.info(`CacheManager:getIdToken - Returning ID token`),o.values().next().value}getIdTokensByFilter(e,t,n){let r=n&&n.idToken||this.getTokenKeys().idToken,i=new Map;return r.forEach(n=>{if(!this.idTokenKeyMatchesFilter(n,{clientId:this.clientId,...e}))return;let r=this.getIdTokenCredential(n,t);r&&this.credentialMatchesFilter(r,e)&&i.set(n,r)}),i}idTokenKeyMatchesFilter(e,t){let n=e.toLowerCase();return!(t.clientId&&n.indexOf(t.clientId.toLowerCase())===-1||t.homeAccountId&&n.indexOf(t.homeAccountId.toLowerCase())===-1)}removeIdToken(e,t){this.removeItem(e,t)}removeRefreshToken(e,t){this.removeItem(e,t)}getAccessToken(e,t,n,r){let i=t.correlationId;this.commonLogger.trace(`CacheManager - getAccessToken called`,i);let a=vr.createSearchScopes(t.scopes),o=t.authenticationScheme||w.BEARER,s=o&&o.toLowerCase()!==w.BEARER.toLowerCase()?v.ACCESS_TOKEN_WITH_AUTH_SCHEME:v.ACCESS_TOKEN,c={homeAccountId:e.homeAccountId,environment:e.environment,credentialType:s,clientId:this.clientId,realm:r||e.tenantId,target:a,tokenType:o,keyId:t.sshKid,requestedClaimsHash:t.requestedClaimsHash},l=n&&n.accessToken||this.getTokenKeys().accessToken,u=[];l.forEach(e=>{if(this.accessTokenKeyMatchesFilter(e,c,!0)){let t=this.getAccessTokenCredential(e,i);t&&this.credentialMatchesFilter(t,c)&&u.push(t)}});let d=u.length;return d<1?(this.commonLogger.info(`CacheManager:getAccessToken - No token found`,i),null):d>1?(this.commonLogger.info(`CacheManager:getAccessToken - Multiple access tokens found, clearing them`,i),u.forEach(e=>{this.removeAccessToken(this.generateCredentialKey(e),i)}),this.performanceClient.addFields({multiMatchedAT:u.length},i),null):(this.commonLogger.info(`CacheManager:getAccessToken - Returning access token`,i),u[0])}accessTokenKeyMatchesFilter(e,t,n){let r=e.toLowerCase();if(t.clientId&&r.indexOf(t.clientId.toLowerCase())===-1||t.homeAccountId&&r.indexOf(t.homeAccountId.toLowerCase())===-1||t.realm&&r.indexOf(t.realm.toLowerCase())===-1||t.requestedClaimsHash&&r.indexOf(t.requestedClaimsHash.toLowerCase())===-1)return!1;if(t.target){let e=t.target.asArray();for(let t=0;t{if(!this.accessTokenKeyMatchesFilter(n,e,!0))return;let i=this.getAccessTokenCredential(n,t);i&&this.credentialMatchesFilter(i,e)&&r.push(i)}),r}getRefreshToken(e,t,n,r,i){this.commonLogger.trace(`CacheManager - getRefreshToken called`);let a=t?`1`:void 0,o={homeAccountId:e.homeAccountId,environment:e.environment,credentialType:v.REFRESH_TOKEN,clientId:this.clientId,familyId:a},s=r&&r.refreshToken||this.getTokenKeys().refreshToken,c=[];s.forEach(e=>{if(this.refreshTokenKeyMatchesFilter(e,o)){let t=this.getRefreshTokenCredential(e,n);t&&this.credentialMatchesFilter(t,o)&&c.push(t)}});let l=c.length;return l<1?(this.commonLogger.info(`CacheManager:getRefreshToken - No refresh token found.`),null):(l>1&&i&&n&&i.addFields({multiMatchedRT:l},n),this.commonLogger.info(`CacheManager:getRefreshToken - returning refresh token`),c[0])}refreshTokenKeyMatchesFilter(e,t){let n=e.toLowerCase();return!(t.familyId&&n.indexOf(t.familyId.toLowerCase())===-1||!t.familyId&&t.clientId&&n.indexOf(t.clientId.toLowerCase())===-1||t.homeAccountId&&n.indexOf(t.homeAccountId.toLowerCase())===-1)}readAppMetadataFromCache(e){let t={environment:e,clientId:this.clientId},n=this.getAppMetadataFilteredBy(t),r=Object.keys(n).map(e=>n[e]),i=r.length;if(i<1)return null;if(i>1)throw J(ue);return r[0]}isAppMetadataFOCI(e){let t=this.readAppMetadataFromCache(e);return!!(t&&t.familyId===`1`)}matchHomeAccountId(e,t){return typeof e.homeAccountId==`string`&&t===e.homeAccountId}matchLocalAccountIdFromTokenClaims(e,t){return t===(e.oid||e.sub)}matchLocalAccountIdFromTenantProfile(e,t){return e.localAccountId===t}matchName(e,t){return t.toLowerCase()===e.name?.toLowerCase()}matchUsername(e,t){return!!(e&&typeof e==`string`&&t?.toLowerCase()===e.toLowerCase())}matchUserAssertionHash(e,t){return!!(e.userAssertionHash&&t===e.userAssertionHash)}matchEnvironment(e,t){if(this.staticAuthorityOptions){let n=jt(this.staticAuthorityOptions,this.commonLogger);if(n.includes(t)&&n.includes(e.environment))return!0}let n=this.getAuthorityMetadataByAlias(t);return!!(n&&n.aliases.indexOf(e.environment)>-1)}matchCredentialType(e,t){return e.credentialType&&t.toLowerCase()===e.credentialType.toLowerCase()}matchClientId(e,t){return!!(e.clientId&&t===e.clientId)}matchFamilyId(e,t){return!!(e.familyId&&t===e.familyId)}matchRealm(e,t){return e.realm?.toLowerCase()===t.toLowerCase()}matchNativeAccountId(e,t){return!!(e.nativeAccountId&&t===e.nativeAccountId)}matchLoginHintFromTokenClaims(e,t){return e.login_hint===t||e.preferred_username===t||e.upn===t}matchSid(e,t){return e.sid===t}matchAuthorityType(e,t){return!!(e.authorityType&&t.toLowerCase()===e.authorityType.toLowerCase())}matchTarget(e,t){return e.credentialType!==v.ACCESS_TOKEN&&e.credentialType!==v.ACCESS_TOKEN_WITH_AUTH_SCHEME||!e.target?!1:vr.fromString(e.target).containsScopeSet(t)}matchTokenType(e,t){return!!(e.tokenType&&e.tokenType===t)}matchKeyId(e,t){return!!(e.keyId&&e.keyId===t)}isAppMetadata(e){return e.indexOf(b)!==-1}isAuthorityMetadata(e){return e.indexOf(x.CACHE_KEY)!==-1}generateAuthorityMetadataCacheKey(e){return`${x.CACHE_KEY}-${this.clientId}-${e}`}static toObject(e,t){for(let n in t)e[n]=t[n];return e}},Nr=class extends Mr{async setAccount(){throw J(K)}getAccount(){throw J(K)}async setIdTokenCredential(){throw J(K)}getIdTokenCredential(){throw J(K)}async setAccessTokenCredential(){throw J(K)}getAccessTokenCredential(){throw J(K)}async setRefreshTokenCredential(){throw J(K)}getRefreshTokenCredential(){throw J(K)}setAppMetadata(){throw J(K)}getAppMetadata(){throw J(K)}setServerTelemetry(){throw J(K)}getServerTelemetry(){throw J(K)}setAuthorityMetadata(){throw J(K)}getAuthorityMetadata(){throw J(K)}getAuthorityMetadataKeys(){throw J(K)}setThrottlingCache(){throw J(K)}getThrottlingCache(){throw J(K)}removeItem(){throw J(K)}getKeys(){throw J(K)}getAccountKeys(){throw J(K)}getTokenKeys(){throw J(K)}generateCredentialKey(){throw J(K)}generateAccountKey(){throw J(K)}},Pr=class{startMeasurement(){}endMeasurement(){}flushMeasurement(){return null}},Fr=class{generateId(){return`callback-id`}startMeasurement(e,t){return{end:()=>null,discard:()=>{},add:()=>{},increment:()=>{},event:{eventId:this.generateId(),status:Bt.InProgress,authority:``,libraryName:``,libraryVersion:``,clientId:``,name:e,startTimeMs:Date.now(),correlationId:t||``},measurement:new Pr}}startPerformanceMeasurement(){return new Pr}calculateQueuedTime(){return 0}addQueueMeasurement(){}setPreQueueTime(){}endMeasurement(){return null}discardMeasurements(){}removePerformanceCallback(){return!0}addPerformanceCallback(){return``}emitEvents(){}addFields(){}incrementFields(){}cacheEventByCorrelationId(){}};let Ir={tokenRenewalOffsetSeconds:300,preventCorsPreflight:!1},Lr={loggerCallback:()=>{},piiLoggingEnabled:!1,logLevel:e.LogLevel.Info,correlationId:t.EMPTY_STRING},Rr={claimsBasedCachingEnabled:!1},zr={async sendGetRequestAsync(){throw J(K)},async sendPostRequestAsync(){throw J(K)}},Br={sku:t.SKU,version:_r,cpu:t.EMPTY_STRING,os:t.EMPTY_STRING},Vr={clientSecret:t.EMPTY_STRING,clientAssertion:void 0},Hr={azureCloudInstance:It.None,tenant:`${t.DEFAULT_COMMON_TENANT}`},Ur={application:{appName:``,appVersion:``}};function Wr({authOptions:e,systemOptions:t,loggerOptions:n,cacheOptions:r,storageInterface:i,networkInterface:a,cryptoInterface:o,clientCredentials:s,libraryInfo:c,telemetry:l,serverTelemetryManager:u,persistencePlugin:d,serializableCache:f}){let p={...Lr,...n};return{authOptions:Gr(e),systemOptions:{...Ir,...t},loggerOptions:p,cacheOptions:{...Rr,...r},storageInterface:i||new Nr(e.clientId,mr,new hr(p),new Fr),networkInterface:a||zr,cryptoInterface:o||mr,clientCredentials:s||Vr,libraryInfo:{...Br,...c},telemetry:{...Ur,...l},serverTelemetryManager:u||null,persistencePlugin:d||null,serializableCache:f||null}}function Gr(e){return{clientCapabilities:[],azureCloudOptions:Hr,skipAuthorityMetadataCache:!1,instanceAware:!1,encodeExtraQueryParams:!1,...e}}function Kr(e){return e.authOptions.authority.options.protocolMode===Ft.OIDC}let qr={HOME_ACCOUNT_ID:`home_account_id`,UPN:`UPN`};function Jr(e,t,n){if(!t)return;let r=e.get(Sn);r&&e.has(cr)&&n?.addFields({embeddedClientId:r,embeddedRedirectUri:e.get(Cn)},t)}function Yr(e,t){e.set(wn,t)}function Xr(e,t){e.set(Tn,t||m.QUERY)}function Zr(e){e.set(ir,`1`)}function Qr(e,t,n=!0,r=i){n&&!r.includes(`openid`)&&!t.includes(`openid`)&&r.push(`openid`);let a=new vr(n?[...t||[],...r]:t||[]);e.set(On,a.printScopes())}function $r(e,t){e.set(Sn,t)}function ei(e,t){e.set(Cn,t)}function ti(e,t){e.set(qn,t)}function ni(e,t){e.set(Jn,t)}function ri(e,t){e.set(sr,t)}function ii(e,t){e.set(or,t)}function ai(e,t){e.set(o.CCS_HEADER,`UPN:${t}`)}function oi(e,t){e.set(o.CCS_HEADER,`Oid:${t.uid}@${t.utid}`)}function si(e,t){e.set(`sid`,t)}function ci(e,t,n){let r=ki(t,n);try{JSON.parse(r)}catch{throw vt(Qe)}e.set(Dn,r)}function li(e,t){e.set(Ln,t)}function ui(e,t){e.set(Rn,t.sku),e.set(zn,t.version),t.os&&e.set(Bn,t.os),t.cpu&&e.set(Vn,t.cpu)}function di(e,t){t?.appName&&e.set(Gn,t.appName),t?.appVersion&&e.set(Kn,t.appVersion)}function fi(e,t){e.set(Mn,t)}function pi(e,t){t&&e.set(An,t)}function mi(e,t){e.set(jn,t)}function hi(e,t,n){if(t&&n)e.set(Pn,t),e.set(Fn,n);else throw vt(nt)}function gi(e,t){e.set(Nn,t)}function _i(e,t){e.set(Yn,t)}function vi(e,t){e.set(kn,t)}function yi(e,t){e.set(In,t)}function bi(e,t){e.set(Xn,t)}function xi(e,t){t&&e.set(Zn,t)}function Si(e,t){t&&e.set(Qn,t)}function Ci(e,t){e.set(tr,t)}function wi(e,t){e.set(nr,t)}function Ti(e,t){e.set(En,t)}function Ei(e){e.set(`client_info`,`1`)}function Di(e){e.has(ur)||e.set(ur,`true`)}function Oi(e,t){Object.entries(t).forEach(([t,n])=>{!e.has(t)&&n&&e.set(t,n)})}function ki(e,t){let n;if(!e)n={};else try{n=JSON.parse(e)}catch{throw vt(Qe)}return t&&t.length>0&&(n.hasOwnProperty(l.ACCESS_TOKEN)||(n[l.ACCESS_TOKEN]={}),n[l.ACCESS_TOKEN][l.XMS_CC]={values:t}),JSON.stringify(n)}function Ai(e,t){e.set(D.username,t)}function ji(e,t){e.set(D.password,t)}function Mi(e,t){t&&(e.set($n,w.POP),e.set(er,t))}function Ni(e,t){t&&(e.set($n,w.SSH),e.set(er,t))}function Pi(e,t){e.set(Hn,t.generateCurrentRequestHeaderValue()),e.set(Un,t.generateLastRequestHeaderValue())}function Fi(e){e.set(Wn,T.X_MS_LIB_CAPABILITY_VALUE)}function Ii(e,t){e.set(ar,t)}function Li(e,t,n){e.has(cr)||e.set(cr,t),e.has(lr)||e.set(lr,n)}function Ri(e,t){e.set(dr,encodeURIComponent(t)),e.set(fr,`eyJhbGciOiJkaXIiLCJlbmMiOiJBMjU2R0NNIn0`)}function zi(e,t){Object.entries(t).forEach(([t,n])=>{n&&e.set(t,n)})}var Bi=Object.freeze({__proto__:null,addApplicationTelemetry:di,addAuthorizationCode:gi,addBrokerParameters:Li,addCcsOid:oi,addCcsUpn:ai,addClaims:ci,addClientAssertion:xi,addClientAssertionType:Si,addClientCapabilitiesToClaims:ki,addClientId:$r,addClientInfo:Ei,addClientSecret:bi,addCodeChallengeParams:hi,addCodeVerifier:yi,addCorrelationId:li,addDeviceCode:_i,addDomainHint:ri,addEARParameters:Ri,addExtraQueryParameters:Oi,addGrantType:Ti,addIdTokenHint:ni,addInstanceAware:Di,addLibraryInfo:ui,addLoginHint:ii,addLogoutHint:Ii,addNativeBroker:Zr,addNonce:mi,addOboAssertion:Ci,addPassword:ji,addPopToken:Mi,addPostBodyParameters:zi,addPostLogoutRedirectUri:ti,addPrompt:fi,addRedirectUri:ei,addRefreshToken:vi,addRequestTokenUse:wi,addResponseMode:Xr,addResponseType:Yr,addScopes:Qr,addServerTelemetry:Pi,addSid:si,addSshJwk:Ni,addState:pi,addThrottling:Fi,addUsername:Ai,instrumentBrokerParams:Jr}),Vi=class e extends L{constructor(t,n,r,i,a){super(t,n,r),this.name=`ServerError`,this.errorNo=i,this.status=a,Object.setPrototypeOf(this,e.prototype)}};function Hi(e,t,n){return{clientId:e,authority:t.authority,scopes:t.scopes,homeAccountIdentifier:n,claims:t.claims,authenticationScheme:t.authenticationScheme,resourceRequestMethod:t.resourceRequestMethod,resourceRequestUri:t.resourceRequestUri,shrClaims:t.shrClaims,sshKid:t.sshKid,embeddedClientId:t.embeddedClientId||t.tokenBodyParameters?.clientId}}var Ui=class e{static generateThrottlingStorageKey(e){return`${T.THROTTLING_PREFIX}.${JSON.stringify(e)}`}static preProcess(n,r,i){let a=e.generateThrottlingStorageKey(r),o=n.getThrottlingCache(a);if(o){if(o.throttleTime=500&&e.status<600}static checkResponseForRetryAfter(e){return e.headers?e.headers.hasOwnProperty(o.RETRY_AFTER)&&(e.status<200||e.status>=300):!1}static calculateThrottleTime(e){let t=e<=0?0:e,n=Date.now()/1e3;return Math.floor(Math.min(n+(t||T.DEFAULT_THROTTLE_TIME_SECONDS),n+T.DEFAULT_MAX_THROTTLE_TIME_SECONDS)*1e3)}static removeThrottle(e,t,n,r){let i=Hi(t,n,r),a=this.generateThrottlingStorageKey(i);e.removeItem(a,n.correlationId)}},Wi=class e extends L{constructor(t,n,r){super(t.errorCode,t.errorMessage,t.subError),Object.setPrototypeOf(this,e.prototype),this.name=`NetworkError`,this.error=t,this.httpStatus=n,this.responseHeaders=r}};function Gi(e,t,n,r){return e.errorMessage=`${e.errorMessage}, additionalErrorInfo: error.name:${r?.name}, error.message:${r?.message}`,new Wi(e,t,n)}var Ki=class{constructor(e,t){this.config=Wr(e),this.logger=new hr(this.config.loggerOptions,gr,_r),this.cryptoUtils=this.config.cryptoInterface,this.cacheManager=this.config.storageInterface,this.networkClient=this.config.networkInterface,this.serverTelemetryManager=this.config.serverTelemetryManager,this.authority=this.config.authOptions.authority,this.performanceClient=t}createTokenRequestHeaders(e){let n={};if(n[o.CONTENT_TYPE]=t.URL_FORM_CONTENT_TYPE,!this.config.systemOptions.preventCorsPreflight&&e)switch(e.type){case qr.HOME_ACCOUNT_ID:try{let t=br(e.credential);n[o.CCS_HEADER]=`Oid:${t.uid}@${t.utid}`}catch(e){this.logger.verbose(`Could not parse home account ID for CCS Header: `+e)}break;case qr.UPN:n[o.CCS_HEADER]=`UPN: ${e.credential}`;break}return n}async executePostToTokenEndpoint(e,t,n,r,i,a){a&&this.performanceClient?.addQueueMeasurement(a,i);let o=await this.sendPostRequest(r,e,{body:t,headers:n},i);return this.config.serverTelemetryManager&&o.status<500&&o.status!==429&&this.config.serverTelemetryManager.clearTelemetryCache(),o}async sendPostRequest(e,t,n,r){Ui.preProcess(this.cacheManager,e,r);let i;try{i=await Ut(this.networkClient.sendPostRequestAsync.bind(this.networkClient),Q.NetworkClientSendPostRequestAsync,this.logger,this.performanceClient,r)(t,n);let e=i.headers||{};this.performanceClient?.addFields({refreshTokenSize:i.body.refresh_token?.length||0,httpVerToken:e[o.X_MS_HTTP_VERSION]||``,requestId:e[o.X_MS_REQUEST_ID]||``},r)}catch(e){if(e instanceof Wi){let t=e.responseHeaders;throw t&&this.performanceClient?.addFields({httpVerToken:t[o.X_MS_HTTP_VERSION]||``,requestId:t[o.X_MS_REQUEST_ID]||``,contentTypeHeader:t[o.CONTENT_TYPE]||void 0,contentLengthHeader:t[o.CONTENT_LENGTH]||void 0,httpStatus:e.httpStatus},r),e.error}throw e instanceof L?e:J(re)}return Ui.postProcess(this.cacheManager,e,i,r),i}async updateAuthority(e,t){this.performanceClient?.addQueueMeasurement(Q.UpdateTokenEndpointAuthority,t),this.authority=await bn(`https://${e}/${this.authority.tenant}/`,this.networkClient,this.cacheManager,this.authority.options,this.logger,t,this.performanceClient)}createTokenQueryParameters(e){let t=new Map;return e.embeddedClientId&&Li(t,this.config.authOptions.clientId,this.config.authOptions.redirectUri),e.tokenQueryParameters&&Oi(t,e.tokenQueryParameters),li(t,e.correlationId),Jr(t,e.correlationId,this.performanceClient),Ct(t)}};let qi=`no_tokens_found`,Ji=`native_account_unavailable`,Yi=`refresh_token_expired`,Xi=`ux_not_allowed`,Zi=`interaction_required`,Qi=`consent_required`,$i=`login_required`,ea=`bad_token`;var ta=Object.freeze({__proto__:null,badToken:ea,consentRequired:Qi,interactionRequired:Zi,loginRequired:$i,nativeAccountUnavailable:Ji,noTokensFound:qi,refreshTokenExpired:Yi,uxNotAllowed:Xi});let na=[Zi,Qi,$i,ea,Xi],ra=[`message_only`,`additional_action`,`basic_action`,`user_password_expired`,`consent_required`,`bad_token`],ia={[qi]:`No refresh token found in the cache. Please sign-in.`,[Ji]:`The requested account is not available in the native broker. It may have been deleted or logged out. Please sign-in again using an interactive API.`,[Yi]:`Refresh token has expired.`,[ea]:`Identity provider returned bad_token due to an expired or invalid refresh token. Please invoke an interactive API to resolve.`,[Xi]:"`canShowUI` flag in Edge was set to false. User interaction required on web page. Please invoke an interactive API to resolve."},aa={noTokensFoundError:{code:qi,desc:ia[qi]},native_account_unavailable:{code:Ji,desc:ia[Ji]},bad_token:{code:ea,desc:ia[ea]}};var oa=class e extends L{constructor(n,r,i,a,o,s,c,l){super(n,r,i),Object.setPrototypeOf(this,e.prototype),this.timestamp=a||t.EMPTY_STRING,this.traceId=o||t.EMPTY_STRING,this.correlationId=s||t.EMPTY_STRING,this.claims=c||t.EMPTY_STRING,this.name=`InteractionRequiredAuthError`,this.errorNo=l}};function sa(e,t,n){let r=!!e&&na.indexOf(e)>-1,i=!!n&&ra.indexOf(n)>-1,a=!!t&&na.some(e=>t.indexOf(e)>-1);return r||a||i}function ca(e){return new oa(e,ia[e])}var la=class e{static setRequestState(n,r,i){let a=e.generateLibraryState(n,i);return r?`${a}${t.RESOURCE_DELIM}${r}`:a}static generateLibraryState(e,t){if(!e)throw J(Se);let n={id:e.createNewGuid()};t&&(n.meta=t);let r=JSON.stringify(n);return e.base64Encode(r)}static parseRequestState(e,n){if(!e)throw J(Se);if(!n)throw J(U);try{let r=n.split(t.RESOURCE_DELIM),i=r[0],a=r.length>1?r.slice(1).join(t.RESOURCE_DELIM):t.EMPTY_STRING,o=e.base64Decode(i),s=JSON.parse(o);return{userRequestState:a||t.EMPTY_STRING,libraryState:s}}catch{throw J(U)}}};let ua={SW:`sw`};var da=class{constructor(e,t){this.cryptoUtils=e,this.performanceClient=t}async generateCnf(e,t){this.performanceClient?.addQueueMeasurement(Q.PopTokenGenerateCnf,e.correlationId);let n=await Ut(this.generateKid.bind(this),Q.PopTokenGenerateCnf,t,this.performanceClient,e.correlationId)(e),r=this.cryptoUtils.base64UrlEncode(JSON.stringify(n));return{kid:n.kid,reqCnfString:r}}async generateKid(e){return this.performanceClient?.addQueueMeasurement(Q.PopTokenGenerateKid,e.correlationId),{kid:await this.cryptoUtils.getPublicKeyThumbprint(e),xms_ksl:ua.SW}}async signPopToken(e,t,n){return this.signPayload(e,t,n)}async signPayload(e,t,n,r){let{resourceRequestMethod:i,resourceRequestUri:a,shrClaims:o,shrNonce:s,shrOptions:c}=n,l=(a?new Et(a):void 0)?.getUrlComponents();return this.cryptoUtils.signJwt({at:e,ts:Gt(),m:i?.toUpperCase(),u:l?.HostNameAndPort,nonce:s||this.cryptoUtils.createNewGuid(),p:l?.AbsolutePath,q:l?.QueryString?[[],l.QueryString]:void 0,client_claims:o||void 0,...r},t,c,n.correlationId)}},fa=class{constructor(e,t){this.cache=e,this.hasChanged=t}get cacheHasChanged(){return this.hasChanged}get tokenCache(){return this.cache}},pa=class e{constructor(e,t,n,r,i,a,o){this.clientId=e,this.cacheStorage=t,this.cryptoObj=n,this.logger=r,this.serializableCache=i,this.persistencePlugin=a,this.performanceClient=o}validateTokenResponse(e,r){if(e.error||e.error_description||e.suberror){let i=`Error(s): ${e.error_codes||t.NOT_AVAILABLE} - Timestamp: ${e.timestamp||t.NOT_AVAILABLE} - Description: ${e.error_description||t.NOT_AVAILABLE} - Correlation ID: ${e.correlation_id||t.NOT_AVAILABLE} - Trace ID: ${e.trace_id||t.NOT_AVAILABLE}`,a=e.error_codes?.length?e.error_codes[0]:void 0,o=new Vi(e.error,i,e.suberror,a,e.status);if(r&&e.status&&e.status>=n.SERVER_ERROR_RANGE_START&&e.status<=n.SERVER_ERROR_RANGE_END){this.logger.warning(`executeTokenRequest:validateTokenResponse - AAD is currently unavailable and the access token is unable to be refreshed.\n${o}`);return}else if(r&&e.status&&e.status>=n.CLIENT_ERROR_RANGE_START&&e.status<=n.CLIENT_ERROR_RANGE_END){this.logger.warning(`executeTokenRequest:validateTokenResponse - AAD is currently available but is unable to refresh the access token.\n${o}`);return}throw sa(e.error,e.error_description,e.suberror)?new oa(e.error,e.error_description,e.suberror,e.timestamp||t.EMPTY_STRING,e.trace_id||t.EMPTY_STRING,e.correlation_id||t.EMPTY_STRING,e.claims||t.EMPTY_STRING,a):o}}async handleServerTokenResponse(n,r,i,a,o,s,c,l,u){this.performanceClient?.addQueueMeasurement(Q.HandleServerTokenResponse,n.correlation_id);let d;if(n.id_token){if(d=Ve(n.id_token||t.EMPTY_STRING,this.cryptoObj.base64Decode),o&&o.nonce&&d.nonce!==o.nonce)throw J(G);if(a.maxAge||a.maxAge===0){let e=d.auth_time;if(!e)throw J(oe);Ue(e,a.maxAge)}}this.homeAccountIdentifier=Tr.generateHomeAccountId(n.client_info||t.EMPTY_STRING,r.authorityType,this.logger,this.cryptoObj,d);let f;o&&o.state&&(f=la.parseRequestState(this.cryptoObj,o.state)),n.key_id=n.key_id||a.sshKid||void 0;let p=this.generateCacheRecord(n,r,i,a,d,s,o),m;try{if(this.persistencePlugin&&this.serializableCache&&(this.logger.verbose(`Persistence enabled, calling beforeCacheAccess`),m=new fa(this.serializableCache,!0),await this.persistencePlugin.beforeCacheAccess(m)),c&&!l&&p.account){let t=this.cacheStorage.generateAccountKey(Tr.getAccountInfo(p.account));if(!this.cacheStorage.getAccount(t,a.correlationId))return this.logger.warning(`Account used to refresh tokens not in persistence, refreshed tokens will not be stored in the cache`),await e.generateAuthenticationResult(this.cryptoObj,r,p,!1,a,d,f,void 0,u)}await this.cacheStorage.saveCacheRecord(p,a.correlationId,Y(d||{}),a.storeInCache)}finally{this.persistencePlugin&&this.serializableCache&&m&&(this.logger.verbose(`Persistence enabled, calling afterCacheAccess`),await this.persistencePlugin.afterCacheAccess(m))}return e.generateAuthenticationResult(this.cryptoObj,r,p,!1,a,d,f,n,u)}generateCacheRecord(e,t,n,r,i,a,o){let s=t.getPreferredCache();if(!s)throw J(be);let c=wr(i),l,u;e.id_token&&i&&(l=$t(this.homeAccountIdentifier,s,e.id_token,this.clientId,c||``),u=ma(this.cacheStorage,t,this.homeAccountIdentifier,this.cryptoObj.base64Decode,r.correlationId,i,e.client_info,s,c,o,void 0,this.logger));let d=null;if(e.access_token){let i=e.scope?vr.fromString(e.scope):new vr(r.scopes||[]),o=(typeof e.expires_in==`string`?parseInt(e.expires_in,10):e.expires_in)||0,l=(typeof e.ext_expires_in==`string`?parseInt(e.ext_expires_in,10):e.ext_expires_in)||0,u=(typeof e.refresh_in==`string`?parseInt(e.refresh_in,10):e.refresh_in)||void 0,f=n+o,p=f+l,m=u&&u>0?n+u:void 0;d=en(this.homeAccountIdentifier,s,e.access_token,this.clientId,c||t.tenant||``,i.printScopes(),f,p,this.cryptoObj.base64Decode,m,e.token_type,a,e.key_id,r.claims,r.requestedClaimsHash)}let f=null;if(e.refresh_token){let t;e.refresh_token_expires_in&&(t=n+(typeof e.refresh_token_expires_in==`string`?parseInt(e.refresh_token_expires_in,10):e.refresh_token_expires_in)),f=$(this.homeAccountIdentifier,s,e.refresh_token,this.clientId,e.foci,a,t)}let p=null;return e.foci&&(p={clientId:this.clientId,environment:s,familyId:e.foci}),{account:u,idToken:l,accessToken:d,refreshToken:f,appMetadata:p}}static async generateAuthenticationResult(e,n,r,i,a,o,s,c,l){let u=t.EMPTY_STRING,d=[],f=null,p,m,h=t.EMPTY_STRING;if(r.accessToken){if(r.accessToken.tokenType===w.POP&&!a.popKid){let t=new da(e),{secret:n,keyId:i}=r.accessToken;if(!i)throw J(Me);u=await t.signPopToken(n,i,a)}else u=r.accessToken.secret;d=vr.fromString(r.accessToken.target).asArray(),f=qt(r.accessToken.expiresOn),p=qt(r.accessToken.extendedExpiresOn),r.accessToken.refreshOn&&(m=qt(r.accessToken.refreshOn))}r.appMetadata&&(h=r.appMetadata.familyId===`1`?`1`:``);let g=o?.oid||o?.sub||``,_=o?.tid||``;c?.spa_accountid&&r.account&&(r.account.nativeAccountId=c?.spa_accountid);let v=r.account?Cr(Tr.getAccountInfo(r.account),void 0,o,r.idToken?.secret):null;return{authority:n.canonicalAuthority,uniqueId:g,tenantId:_,scopes:d,account:v,idToken:r?.idToken?.secret||``,idTokenClaims:o||{},accessToken:u,fromCache:i,expiresOn:f,extExpiresOn:p,refreshOn:m,correlationId:a.correlationId,requestId:l||t.EMPTY_STRING,familyId:h,tokenType:r.accessToken?.tokenType||t.EMPTY_STRING,state:s?s.userRequestState:t.EMPTY_STRING,cloudGraphHostName:r.account?.cloudGraphHostName||t.EMPTY_STRING,msGraphHost:r.account?.msGraphHost||t.EMPTY_STRING,code:c?.spa_code,fromNativeBroker:!1}}};function ma(e,t,n,r,i,a,o,s,c,l,u,d){d?.verbose(`setCachedAccount called`);let f=e.getAccountKeys().find(e=>e.startsWith(n)),p=null;f&&(p=e.getAccount(f,i));let m=p||Tr.createAccount({homeAccountId:n,idTokenClaims:a,clientInfo:o,environment:s,cloudGraphHostName:l?.cloud_graph_host_name,msGraphHost:l?.msgraph_host,nativeAccountId:u},t,r),h=m.tenantProfiles||[],g=c||m.realm;if(g&&!h.find(e=>e.tenantId===g)){let e=Sr(n,m.localAccountId,g,a);h.push(e)}return m.tenantProfiles=h,m}async function ha(e,t,n){return typeof e==`string`?e:e({clientId:t,tokenEndpoint:n})}var ga=Object.freeze({__proto__:null,getClientAssertion:ha}),_a=class extends Ki{constructor(e,t){super(e,t),this.includeRedirectUri=!0,this.oidcDefaultScopes=this.config.authOptions.authority.options.OIDCOptions?.defaultScopes}async acquireToken(e,t){if(this.performanceClient?.addQueueMeasurement(Q.AuthClientAcquireToken,e.correlationId),!e.code)throw J(de);let n=Gt(),r=await Ut(this.executeTokenRequest.bind(this),Q.AuthClientExecuteTokenRequest,this.logger,this.performanceClient,e.correlationId)(this.authority,e),i=r.headers?.[o.X_MS_REQUEST_ID],a=new pa(this.config.authOptions.clientId,this.cacheManager,this.cryptoUtils,this.logger,this.config.serializableCache,this.config.persistencePlugin,this.performanceClient);return a.validateTokenResponse(r.body),Ut(a.handleServerTokenResponse.bind(a),Q.HandleServerTokenResponse,this.logger,this.performanceClient,e.correlationId)(r.body,this.authority,n,e,t,void 0,void 0,void 0,i)}getLogoutUri(e){if(!e)throw vt(et);let t=this.createLogoutUrlQueryString(e);return Et.appendQueryString(this.authority.endSessionEndpoint,t)}async executeTokenRequest(e,t){this.performanceClient?.addQueueMeasurement(Q.AuthClientExecuteTokenRequest,t.correlationId);let n=this.createTokenQueryParameters(t),r=Et.appendQueryString(e.tokenEndpoint,n),i=await Ut(this.createTokenRequestBody.bind(this),Q.AuthClientCreateTokenRequestBody,this.logger,this.performanceClient,t.correlationId)(t),a;if(t.clientInfo)try{let e=yr(t.clientInfo,this.cryptoUtils.base64Decode);a={credential:`${e.uid}${_.CLIENT_INFO_SEPARATOR}${e.utid}`,type:qr.HOME_ACCOUNT_ID}}catch(e){this.logger.verbose(`Could not parse client info for CCS Header: `+e)}let o=this.createTokenRequestHeaders(a||t.ccsCredential),s=Hi(this.config.authOptions.clientId,t);return Ut(this.executePostToTokenEndpoint.bind(this),Q.AuthorizationCodeClientExecutePostToTokenEndpoint,this.logger,this.performanceClient,t.correlationId)(r,i,o,s,t.correlationId,Q.AuthorizationCodeClientExecutePostToTokenEndpoint)}async createTokenRequestBody(e){this.performanceClient?.addQueueMeasurement(Q.AuthClientCreateTokenRequestBody,e.correlationId);let t=new Map;if($r(t,e.embeddedClientId||e.tokenBodyParameters?.[Sn]||this.config.authOptions.clientId),this.includeRedirectUri)ei(t,e.redirectUri);else if(!e.redirectUri)throw vt(Ke);if(Qr(t,e.scopes,!0,this.oidcDefaultScopes),gi(t,e.code),ui(t,this.config.libraryInfo),di(t,this.config.telemetry.application),Fi(t),this.serverTelemetryManager&&!Kr(this.config)&&Pi(t,this.serverTelemetryManager),e.codeVerifier&&yi(t,e.codeVerifier),this.config.clientCredentials.clientSecret&&bi(t,this.config.clientCredentials.clientSecret),this.config.clientCredentials.clientAssertion){let n=this.config.clientCredentials.clientAssertion;xi(t,await ha(n.assertion,this.config.authOptions.clientId,e.resourceRequestUri)),Si(t,n.assertionType)}if(Ti(t,h.AUTHORIZATION_CODE_GRANT),Ei(t),e.authenticationScheme===w.POP){let n=new da(this.cryptoUtils,this.performanceClient),r;r=e.popKid?this.cryptoUtils.encodeKid(e.popKid):(await Ut(n.generateCnf.bind(n),Q.PopTokenGenerateCnf,this.logger,this.performanceClient,e.correlationId)(e,this.logger)).reqCnfString,Mi(t,r)}else if(e.authenticationScheme===w.SSH)if(e.sshJwk)Ni(t,e.sshJwk);else throw vt(at);(!yt.isEmptyObj(e.claims)||this.config.authOptions.clientCapabilities&&this.config.authOptions.clientCapabilities.length>0)&&ci(t,e.claims,this.config.authOptions.clientCapabilities);let n;if(e.clientInfo)try{let t=yr(e.clientInfo,this.cryptoUtils.base64Decode);n={credential:`${t.uid}${_.CLIENT_INFO_SEPARATOR}${t.utid}`,type:qr.HOME_ACCOUNT_ID}}catch(e){this.logger.verbose(`Could not parse client info for CCS Header: `+e)}else n=e.ccsCredential;if(this.config.systemOptions.preventCorsPreflight&&n)switch(n.type){case qr.HOME_ACCOUNT_ID:try{oi(t,br(n.credential))}catch(e){this.logger.verbose(`Could not parse home account ID for CCS Header: `+e)}break;case qr.UPN:ai(t,n.credential);break}return e.embeddedClientId&&Li(t,this.config.authOptions.clientId,this.config.authOptions.redirectUri),e.tokenBodyParameters&&Oi(t,e.tokenBodyParameters),e.enableSpaAuthorizationCode&&(!e.tokenBodyParameters||!e.tokenBodyParameters[rr])&&Oi(t,{[rr]:`1`}),Jr(t,e.correlationId,this.performanceClient),Ct(t)}createLogoutUrlQueryString(e){let t=new Map;return e.postLogoutRedirectUri&&ti(t,e.postLogoutRedirectUri),e.correlationId&&li(t,e.correlationId),e.idTokenHint&&ni(t,e.idTokenHint),e.state&&pi(t,e.state),e.logoutHint&&Ii(t,e.logoutHint),e.extraQueryParameters&&Oi(t,e.extraQueryParameters),this.config.authOptions.instanceAware&&Di(t),Ct(t,this.config.authOptions.encodeExtraQueryParams,e.extraQueryParameters)}},va=class extends Ki{constructor(e,t){super(e,t)}async acquireToken(e){this.performanceClient?.addQueueMeasurement(Q.RefreshTokenClientAcquireToken,e.correlationId);let t=Gt(),n=await Ut(this.executeTokenRequest.bind(this),Q.RefreshTokenClientExecuteTokenRequest,this.logger,this.performanceClient,e.correlationId)(e,this.authority),r=n.headers?.[o.X_MS_REQUEST_ID],i=new pa(this.config.authOptions.clientId,this.cacheManager,this.cryptoUtils,this.logger,this.config.serializableCache,this.config.persistencePlugin);return i.validateTokenResponse(n.body),Ut(i.handleServerTokenResponse.bind(i),Q.HandleServerTokenResponse,this.logger,this.performanceClient,e.correlationId)(n.body,this.authority,t,e,void 0,void 0,!0,e.forceCache,r)}async acquireTokenByRefreshToken(e){if(!e)throw vt($e);if(this.performanceClient?.addQueueMeasurement(Q.RefreshTokenClientAcquireTokenByRefreshToken,e.correlationId),!e.account)throw J(ve);if(this.cacheManager.isAppMetadataFOCI(e.account.environment))try{return await Ut(this.acquireTokenWithCachedRefreshToken.bind(this),Q.RefreshTokenClientAcquireTokenWithCachedRefreshToken,this.logger,this.performanceClient,e.correlationId)(e,!0)}catch(t){let n=t instanceof oa&&t.errorCode===qi,r=t instanceof Vi&&t.errorCode===E.INVALID_GRANT_ERROR&&t.subError===E.CLIENT_MISMATCH_ERROR;if(n||r)return Ut(this.acquireTokenWithCachedRefreshToken.bind(this),Q.RefreshTokenClientAcquireTokenWithCachedRefreshToken,this.logger,this.performanceClient,e.correlationId)(e,!1);throw t}return Ut(this.acquireTokenWithCachedRefreshToken.bind(this),Q.RefreshTokenClientAcquireTokenWithCachedRefreshToken,this.logger,this.performanceClient,e.correlationId)(e,!1)}async acquireTokenWithCachedRefreshToken(e,t){this.performanceClient?.addQueueMeasurement(Q.RefreshTokenClientAcquireTokenWithCachedRefreshToken,e.correlationId);let n=Ht(this.cacheManager.getRefreshToken.bind(this.cacheManager),Q.CacheManagerGetRefreshToken,this.logger,this.performanceClient,e.correlationId)(e.account,t,e.correlationId,void 0,this.performanceClient);if(!n)throw ca(qi);if(n.expiresOn&&Jt(n.expiresOn,e.refreshTokenExpirationOffsetSeconds||300))throw this.performanceClient?.addFields({rtExpiresOnMs:Number(n.expiresOn)},e.correlationId),ca(Yi);let r={...e,refreshToken:n.secret,authenticationScheme:e.authenticationScheme||w.BEARER,ccsCredential:{credential:e.account.homeAccountId,type:qr.HOME_ACCOUNT_ID}};try{return await Ut(this.acquireToken.bind(this),Q.RefreshTokenClientAcquireToken,this.logger,this.performanceClient,e.correlationId)(r)}catch(t){if(t instanceof oa&&(this.performanceClient?.addFields({rtExpiresOnMs:Number(n.expiresOn)},e.correlationId),t.subError===ea)){this.logger.verbose(`acquireTokenWithRefreshToken: bad refresh token, removing from cache`);let t=this.cacheManager.generateCredentialKey(n);this.cacheManager.removeRefreshToken(t,e.correlationId)}throw t}}async executeTokenRequest(e,t){this.performanceClient?.addQueueMeasurement(Q.RefreshTokenClientExecuteTokenRequest,e.correlationId);let n=this.createTokenQueryParameters(e),r=Et.appendQueryString(t.tokenEndpoint,n),i=await Ut(this.createTokenRequestBody.bind(this),Q.RefreshTokenClientCreateTokenRequestBody,this.logger,this.performanceClient,e.correlationId)(e),a=this.createTokenRequestHeaders(e.ccsCredential),o=Hi(this.config.authOptions.clientId,e);return Ut(this.executePostToTokenEndpoint.bind(this),Q.RefreshTokenClientExecutePostToTokenEndpoint,this.logger,this.performanceClient,e.correlationId)(r,i,a,o,e.correlationId,Q.RefreshTokenClientExecutePostToTokenEndpoint)}async createTokenRequestBody(e){this.performanceClient?.addQueueMeasurement(Q.RefreshTokenClientCreateTokenRequestBody,e.correlationId);let t=new Map;if($r(t,e.embeddedClientId||e.tokenBodyParameters?.[Sn]||this.config.authOptions.clientId),e.redirectUri&&ei(t,e.redirectUri),Qr(t,e.scopes,!0,this.config.authOptions.authority.options.OIDCOptions?.defaultScopes),Ti(t,h.REFRESH_TOKEN_GRANT),Ei(t),ui(t,this.config.libraryInfo),di(t,this.config.telemetry.application),Fi(t),this.serverTelemetryManager&&!Kr(this.config)&&Pi(t,this.serverTelemetryManager),vi(t,e.refreshToken),this.config.clientCredentials.clientSecret&&bi(t,this.config.clientCredentials.clientSecret),this.config.clientCredentials.clientAssertion){let n=this.config.clientCredentials.clientAssertion;xi(t,await ha(n.assertion,this.config.authOptions.clientId,e.resourceRequestUri)),Si(t,n.assertionType)}if(e.authenticationScheme===w.POP){let n=new da(this.cryptoUtils,this.performanceClient),r;r=e.popKid?this.cryptoUtils.encodeKid(e.popKid):(await Ut(n.generateCnf.bind(n),Q.PopTokenGenerateCnf,this.logger,this.performanceClient,e.correlationId)(e,this.logger)).reqCnfString,Mi(t,r)}else if(e.authenticationScheme===w.SSH)if(e.sshJwk)Ni(t,e.sshJwk);else throw vt(at);if((!yt.isEmptyObj(e.claims)||this.config.authOptions.clientCapabilities&&this.config.authOptions.clientCapabilities.length>0)&&ci(t,e.claims,this.config.authOptions.clientCapabilities),this.config.systemOptions.preventCorsPreflight&&e.ccsCredential)switch(e.ccsCredential.type){case qr.HOME_ACCOUNT_ID:try{oi(t,br(e.ccsCredential.credential))}catch(e){this.logger.verbose(`Could not parse home account ID for CCS Header: `+e)}break;case qr.UPN:ai(t,e.ccsCredential.credential);break}return e.embeddedClientId&&Li(t,this.config.authOptions.clientId,this.config.authOptions.redirectUri),e.tokenBodyParameters&&Oi(t,e.tokenBodyParameters),Jr(t,e.correlationId,this.performanceClient),Ct(t)}},ya=class extends Ki{constructor(e,t){super(e,t)}async acquireCachedToken(e){this.performanceClient?.addQueueMeasurement(Q.SilentFlowClientAcquireCachedToken,e.correlationId);let t=A.NOT_APPLICABLE;if(e.forceRefresh||!this.config.cacheOptions.claimsBasedCachingEnabled&&!yt.isEmptyObj(e.claims))throw this.setCacheOutcome(A.FORCE_REFRESH_OR_CLAIMS,e.correlationId),J(Ee);if(!e.account)throw J(ve);let n=e.account.tenantId||_n(e.authority),r=this.cacheManager.getTokenKeys(),i=this.cacheManager.getAccessToken(e.account,e,r,n);if(i){if(Xt(i.cachedAt)||Jt(i.expiresOn,this.config.systemOptions.tokenRenewalOffsetSeconds))throw this.setCacheOutcome(A.CACHED_ACCESS_TOKEN_EXPIRED,e.correlationId),J(Ee);i.refreshOn&&Jt(i.refreshOn,0)&&(t=A.PROACTIVELY_REFRESHED)}else throw this.setCacheOutcome(A.NO_CACHED_ACCESS_TOKEN,e.correlationId),J(Ee);let a=e.authority||this.authority.getPreferredCache(),o={account:this.cacheManager.getAccount(this.cacheManager.generateAccountKey(e.account),e.correlationId),accessToken:i,idToken:this.cacheManager.getIdToken(e.account,e.correlationId,r,n,this.performanceClient),refreshToken:null,appMetadata:this.cacheManager.readAppMetadataFromCache(a)};return this.setCacheOutcome(t,e.correlationId),this.config.serverTelemetryManager&&this.config.serverTelemetryManager.incrementCacheHits(),[await Ut(this.generateResultFromCacheRecord.bind(this),Q.SilentFlowClientGenerateResultFromCacheRecord,this.logger,this.performanceClient,e.correlationId)(o,e),t]}setCacheOutcome(e,t){this.serverTelemetryManager?.setCacheOutcome(e),this.performanceClient?.addFields({cacheOutcome:e},t),e!==A.NOT_APPLICABLE&&this.logger.info(`Token refresh is required due to cache outcome: ${e}`)}async generateResultFromCacheRecord(e,t){this.performanceClient?.addQueueMeasurement(Q.SilentFlowClientGenerateResultFromCacheRecord,t.correlationId);let n;if(e.idToken&&(n=Ve(e.idToken.secret,this.config.cryptoInterface.base64Decode)),t.maxAge||t.maxAge===0){let e=n?.auth_time;if(!e)throw J(oe);Ue(e,t.maxAge)}return pa.generateAuthenticationResult(this.cryptoUtils,this.authority,e,!0,t,n)}};let ba={sendGetRequestAsync:()=>Promise.reject(J(K)),sendPostRequestAsync:()=>Promise.reject(J(K))};function xa(e,t,n,r){let i=t.correlationId,a=new Map;if($r(a,t.embeddedClientId||t.extraQueryParameters?.[Sn]||e.clientId),Qr(a,[...t.scopes||[],...t.extraScopesToConsent||[]],!0,e.authority.options.OIDCOptions?.defaultScopes),ei(a,t.redirectUri),li(a,i),Xr(a,t.responseMode),Ei(a),t.prompt&&(fi(a,t.prompt),r?.addFields({prompt:t.prompt},i)),t.domainHint&&(ri(a,t.domainHint),r?.addFields({domainHintFromRequest:!0},i)),t.prompt!==u.SELECT_ACCOUNT)if(t.sid&&t.prompt===u.NONE)n.verbose(`createAuthCodeUrlQueryString: Prompt is none, adding sid from request`),si(a,t.sid),r?.addFields({sidFromRequest:!0},i);else if(t.account){let e=Ea(t.account),o=Da(t.account);if(o&&t.domainHint&&(n.warning(`AuthorizationCodeClient.createAuthCodeUrlQueryString: "domainHint" param is set, skipping opaque "login_hint" claim. Please consider not passing domainHint`),o=null),o){n.verbose(`createAuthCodeUrlQueryString: login_hint claim present on account`),ii(a,o),r?.addFields({loginHintFromClaim:!0},i);try{oi(a,br(t.account.homeAccountId))}catch{n.verbose(`createAuthCodeUrlQueryString: Could not parse home account ID for CCS Header`)}}else if(e&&t.prompt===u.NONE){n.verbose(`createAuthCodeUrlQueryString: Prompt is none, adding sid from account`),si(a,e),r?.addFields({sidFromClaim:!0},i);try{oi(a,br(t.account.homeAccountId))}catch{n.verbose(`createAuthCodeUrlQueryString: Could not parse home account ID for CCS Header`)}}else if(t.loginHint)n.verbose(`createAuthCodeUrlQueryString: Adding login_hint from request`),ii(a,t.loginHint),ai(a,t.loginHint),r?.addFields({loginHintFromRequest:!0},i);else if(t.account.username){n.verbose(`createAuthCodeUrlQueryString: Adding login_hint from account`),ii(a,t.account.username),r?.addFields({loginHintFromUpn:!0},i);try{oi(a,br(t.account.homeAccountId))}catch{n.verbose(`createAuthCodeUrlQueryString: Could not parse home account ID for CCS Header`)}}}else t.loginHint&&(n.verbose(`createAuthCodeUrlQueryString: No account, adding login_hint from request`),ii(a,t.loginHint),ai(a,t.loginHint),r?.addFields({loginHintFromRequest:!0},i));else n.verbose(`createAuthCodeUrlQueryString: Prompt is select_account, ignoring account hints`);return t.nonce&&mi(a,t.nonce),t.state&&pi(a,t.state),(t.claims||e.clientCapabilities&&e.clientCapabilities.length>0)&&ci(a,t.claims,e.clientCapabilities),t.embeddedClientId&&Li(a,e.clientId,e.redirectUri),e.instanceAware&&(!t.extraQueryParameters||!Object.keys(t.extraQueryParameters).includes(ur))&&Di(a),a}function Sa(e,t,n,r){let i=Ct(t,n,r);return Et.appendQueryString(e.authorizationEndpoint,i)}function Ca(e,t){if(wa(e,t),!e.code)throw J(ke);return e}function wa(e,t){if(!e.state||!t)throw e.state?J(ae,`Cached State`):J(ae,`Server State`);let n,r;try{n=decodeURIComponent(e.state)}catch{throw J(U,e.state)}try{r=decodeURIComponent(t)}catch{throw J(U,e.state)}if(n!==r)throw J(W);if(e.error||e.error_description||e.suberror){let t=Ta(e);throw sa(e.error,e.error_description,e.suberror)?new oa(e.error||``,e.error_description,e.suberror,e.timestamp||``,e.trace_id||``,e.correlation_id||``,e.claims||``,t):new Vi(e.error||``,e.error_description,e.suberror,t)}}function Ta(e){let t=e.error_uri?.lastIndexOf(`code=`);return t&&t>=0?e.error_uri?.substring(t+5):void 0}function Ea(e){return e.idTokenClaims?.sid||null}function Da(e){return e.loginHint||e.idTokenClaims?.login_hint||null}var Oa=Object.freeze({__proto__:null,getAuthorizationCodePayload:Ca,getAuthorizeUrl:Sa,getStandardAuthorizeRequestParameters:xa,validateAuthorizationResponse:wa}),ka=class{constructor(e){this.headers=e}getShrNonce(){let e=this.headers[o.AuthenticationInfo];if(e){let t=this.parseChallenges(e);if(t.nextnonce)return t.nextnonce;throw vt(ct)}let t=this.headers[o.WWWAuthenticate];if(t){let e=this.parseChallenges(t);if(e.nonce)return e.nonce;throw vt(ct)}throw vt(st)}parseChallenges(e){let n=e.indexOf(` `),r=e.substr(n+1).split(`,`),i={};return r.forEach(e=>{let[n,r]=e.split(`=`);i[n]=unescape(r.replace(/['"]+/g,t.EMPTY_STRING))}),i}};function Aa(e){if(e===0)return`UNTAG`;let t=`abcdefghijklmnopqrstuvwxyz0123456789****************************`,n=`*****`;return n=[t[e>>24&63],t[e>>18&63],t[e>>12&63],t[e>>6&63],t[e>>0&63]].join(``),n}var ja=class e extends L{constructor(t,n,r,i){let a=Aa(i),o=n?`${n} (Error Code: ${r}, Tag: ${a})`:`(Error Code: ${r}, Tag: ${a})`;super(t,o),this.name=`PlatformBrokerError`,this.statusCode=r,this.tag=a,Object.setPrototypeOf(this,e.prototype)}};function Ma(e){let{skus:t,libraryName:n,libraryVersion:r,extensionName:i,extensionVersion:a}=e,o=new Map([[0,[n,r]],[2,[i,a]]]),s=[];if(t?.length){if(s=t.split(`,`),s.length<4)return t}else s=Array.from({length:4},()=>`|`);return o.forEach((e,t)=>{e.length===2&&e[0]?.length&&e[1]?.length&&Na({skuArr:s,index:t,skuName:e[0],skuVersion:e[1]})}),s.join(`,`)}function Na(e){let{skuArr:t,index:n,skuName:r,skuVersion:i}=e;n>=t.length||(t[n]=[r,i].join(`|`))}var Pa=class e{constructor(e,n){this.cacheOutcome=A.NOT_APPLICABLE,this.cacheManager=n,this.apiId=e.apiId,this.correlationId=e.correlationId,this.wrapperSKU=e.wrapperSKU||t.EMPTY_STRING,this.wrapperVer=e.wrapperVer||t.EMPTY_STRING,this.telemetryCacheKey=C.CACHE_KEY+_.CACHE_KEY_SEPARATOR+e.clientId}generateCurrentRequestHeaderValue(){let e=`${this.apiId}${C.VALUE_SEPARATOR}${this.cacheOutcome}`,t=[this.wrapperSKU,this.wrapperVer],n=this.getNativeBrokerErrorCode();n?.length&&t.push(`broker_error=${n}`);let r=t.join(C.VALUE_SEPARATOR),i=[e,this.getRegionDiscoveryFields()].join(C.VALUE_SEPARATOR);return[C.SCHEMA_VERSION,i,r].join(C.CATEGORY_SEPARATOR)}generateLastRequestHeaderValue(){let t=this.getLastRequests(),n=e.maxErrorsToSend(t),r=t.failedRequests.slice(0,2*n).join(C.VALUE_SEPARATOR),i=t.errors.slice(0,n).join(C.VALUE_SEPARATOR),a=t.errors.length,o=[a,n=C.MAX_CACHED_ERRORS&&(t.failedRequests.shift(),t.failedRequests.shift(),t.errors.shift()),t.failedRequests.push(this.apiId,this.correlationId),e instanceof Error&&e&&e.toString()?e instanceof L?e.subError?t.errors.push(e.subError):e.errorCode?t.errors.push(e.errorCode):t.errors.push(e.toString()):t.errors.push(e.toString()):t.errors.push(C.UNKNOWN_ERROR),this.cacheManager.setServerTelemetry(this.telemetryCacheKey,t,this.correlationId)}incrementCacheHits(){let e=this.getLastRequests();return e.cacheHits+=1,this.cacheManager.setServerTelemetry(this.telemetryCacheKey,e,this.correlationId),e.cacheHits}getLastRequests(){return this.cacheManager.getServerTelemetry(this.telemetryCacheKey)||{failedRequests:[],errors:[],cacheHits:0}}clearTelemetryCache(){let t=this.getLastRequests(),n=e.maxErrorsToSend(t);if(n===t.errors.length)this.cacheManager.removeItem(this.telemetryCacheKey,this.correlationId);else{let e={failedRequests:t.failedRequests.slice(n*2),errors:t.errors.slice(n),cacheHits:0};this.cacheManager.setServerTelemetry(this.telemetryCacheKey,e,this.correlationId)}}static maxErrorsToSend(e){let n,r=0,i=0,a=e.errors.length;for(n=0;n{var t=Lc();let n=`missing_kid_error`,r=`missing_alg_error`,i={[n]:`The JOSE Header for the requested JWT, JWS or JWK object requires a keyId to be configured as the 'kid' header claim. No 'kid' value was provided.`,[r]:`The JOSE Header for the requested JWT, JWS or JWK object requires an algorithm to be specified as the 'alg' header claim. No 'alg' value was provided.`};var a=class e extends t.AuthError{constructor(t,n){super(t,n),this.name=`JoseHeaderError`,Object.setPrototypeOf(this,e.prototype)}};function o(e){return new a(e,i[e])}var s=class e{constructor(e){this.typ=e.typ,this.alg=e.alg,this.kid=e.kid}static getShrHeaderString(i){if(!i.kid)throw o(n);if(!i.alg)throw o(r);let a=new e({typ:i.typ||t.JsonWebTokenTypes.Pop,kid:i.kid,alg:i.alg});return JSON.stringify(a)}};function c(e,t,n){n&&n.push({name:t.get(e.name)||e.name})}function l(e,n,r,i){if(!r?.length)return;let a=e=>e.length?e[e.length-1]:void 0,o=n.get(e.name)||e.name;if(a(r)?.name!==o)return;let s=r?.pop();if(!s)return;let c=i instanceof t.AuthError?i.errorCode:i instanceof Error?i.name:void 0,l=i instanceof t.AuthError?i.subError:void 0;c&&s.childErr!==c&&(s.err=c,l&&(s.subErr=l)),delete s.name,delete s.childErr;let u={...s,dur:e.durationMs};e.success||(u.fail=1);let d=a(r);if(!d)return{[o]:u};c&&(d.childErr=c);let f;return f=d[o]?`${o}_${Object.keys(d).filter(e=>e.startsWith(o)).length+1}`:o,d[f]=u,d}function u(e,n,r,i=5){if(e instanceof Error){if(e instanceof t.AuthError){r.errorCode=e.errorCode,r.subErrorCode=e.subError,(e instanceof t.ServerError||e instanceof t.InteractionRequiredAuthError)&&(r.serverErrorNo=e.errorNo);return}else if(e instanceof t.CacheError){r.errorCode=e.errorCode;return}else if(r.errorStack?.length){n.trace(`PerformanceClient.addErrorStack: Stack already exist`,r.correlationId);return}else if(!e.stack?.length){n.trace(`PerformanceClient.addErrorStack: Input stack is empty`,r.correlationId);return}}else{n.trace(`PerformanceClient.addErrorStack: Input error is not instance of Error`,r.correlationId);return}e.stack&&(r.errorStack=d(e.stack,i)),r.errorName=e.name}function d(e,t){if(t<0)return[];let n=e.split(` +`)||[],r=[],i=n[0];i.startsWith(`TypeError: Cannot read property`)||i.startsWith(`TypeError: Cannot read properties of`)||i.startsWith(`TypeError: Cannot set property`)||i.startsWith(`TypeError: Cannot set properties of`)||i.endsWith(`is not a function`)?r.push(f(i)):(i.startsWith(`SyntaxError`)||i.startsWith(`TypeError`))&&r.push(f(i.replace(/['].*[']|["].*["]/g,``)));for(let e=1;e=t);e++){let t=n[e];r.push(f(t))}return r}function f(e){let t=e.lastIndexOf(` `)+1;if(t<1)return e;let n=e.substring(t),r=n.lastIndexOf(`/`);return r=r<0?n.lastIndexOf(`\\`):r,r>=0?(e.substring(0,t)+`(`+n.substring(r+1)+(n.charAt(n.length-1)===`)`?``:`)`)).trimStart():e.trimStart()}function p(e){let t=e?.idTokenClaims;if(t?.tfp||t?.acr)return`B2C`;if(t?.tid){if(t?.tid===`9188040d-6c67-4c5b-b112-36a304b66dad`)return`MSA`}else return;return`AAD`}var m=class{constructor(e,n,r,i,a,o,s,c){this.authority=n,this.libraryName=i,this.libraryVersion=a,this.applicationTelemetry=o,this.clientId=e,this.logger=r,this.callbacks=new Map,this.eventsByCorrelationId=new Map,this.eventStack=new Map,this.queueMeasurements=new Map,this.preQueueTimeByCorrelationId=new Map,this.intFields=s||new Set;for(let e of t.IntFields)this.intFields.add(e);this.abbreviations=c||new Map;for(let[e,n]of t.PerformanceEventAbbreviations)this.abbreviations.set(e,n)}startPerformanceMeasurement(e,t){return{}}getPreQueueTime(e,t){let n=this.preQueueTimeByCorrelationId.get(t);if(n){if(n.name!==e){this.logger.trace(`PerformanceClient.getPreQueueTime: no pre-queue time found for ${e}, unable to add queue measurement`);return}}else{this.logger.trace(`PerformanceClient.getPreQueueTime: no pre-queue times found for correlationId: ${t}, unable to add queue measurement`);return}return n.time}calculateQueuedTime(e,t){return e<1?(this.logger.trace(`PerformanceClient: preQueueTime should be a positive integer and not ${e}`),0):t<1?(this.logger.trace(`PerformanceClient: currentTime should be a positive integer and not ${t}`),0):tthis.endMeasurement({...i,...e},t,n),discard:()=>this.discardMeasurements(i.correlationId),add:e=>this.addFields(e,i.correlationId),increment:e=>this.incrementFields(e,i.correlationId),event:i,measurement:new t.StubPerformanceMeasurement}}endMeasurement(e,n,r){let i=this.eventsByCorrelationId.get(e.correlationId);if(!i)return this.logger.trace(`PerformanceClient: Measurement not found for ${e.eventId}`,e.correlationId),null;let a=e.eventId===i.eventId,o={totalQueueTime:0,totalQueueCount:0,manuallyCompletedCount:0};e.durationMs=Math.round(e.durationMs||this.getDurationMs(e.startTimeMs));let s=JSON.stringify(l(e,this.abbreviations,this.eventStack.get(i.correlationId),n));if(a?(o=this.getQueueInfo(e.correlationId),this.discardMeasurements(i.correlationId)):i.incompleteSubMeasurements?.delete(e.eventId),this.logger.trace(`PerformanceClient: Performance measurement ended for ${e.name}: ${e.durationMs} ms`,e.correlationId),n&&u(n,this.logger,i),!a)return i[e.name+`DurationMs`]=Math.floor(e.durationMs),{...i};a&&!n&&(i.errorCode||i.subErrorCode)&&(this.logger.trace(`PerformanceClient: Remove error and sub-error codes for root event ${e.name} as intermediate error was successfully handled`,e.correlationId),i.errorCode=void 0,i.subErrorCode=void 0);let c={...i,...e},d=0;return c.incompleteSubMeasurements?.forEach(t=>{this.logger.trace(`PerformanceClient: Incomplete submeasurement ${t.name} found for ${e.name}`,c.correlationId),d++}),c.incompleteSubMeasurements=void 0,c={...c,queuedTimeMs:o.totalQueueTime,queuedCount:o.totalQueueCount,queuedManuallyCompletedCount:o.manuallyCompletedCount,status:t.PerformanceEventStatus.Completed,incompleteSubsCount:d,context:s},r&&(c.accountType=p(r),c.dataBoundary=r.dataBoundary),this.truncateIntegralFields(c),this.emitEvents([c],e.correlationId),c}addFields(e,t){this.logger.trace(`PerformanceClient: Updating static fields`);let n=this.eventsByCorrelationId.get(t);n?this.eventsByCorrelationId.set(t,{...n,...e}):this.logger.trace(`PerformanceClient: Event not found for`,t)}incrementFields(e,t){this.logger.trace(`PerformanceClient: Updating counters`);let n=this.eventsByCorrelationId.get(t);if(n)for(let t in e){if(!n.hasOwnProperty(t))n[t]=0;else if(isNaN(Number(n[t])))return;n[t]+=e[t]}else this.logger.trace(`PerformanceClient: Event not found for`,t)}cacheEventByCorrelationId(e){let t=this.eventsByCorrelationId.get(e.correlationId);t?(this.logger.trace(`PerformanceClient: Performance measurement for ${e.name} added/updated`,e.correlationId),t.incompleteSubMeasurements=t.incompleteSubMeasurements||new Map,t.incompleteSubMeasurements.set(e.eventId,{name:e.name,startTimeMs:e.startTimeMs})):(this.logger.trace(`PerformanceClient: Performance measurement for ${e.name} started`,e.correlationId),this.eventsByCorrelationId.set(e.correlationId,{...e}),this.eventStack.set(e.correlationId,[]))}getQueueInfo(e){let t=this.queueMeasurements.get(e);t||this.logger.trace(`PerformanceClient: no queue measurements found for for correlationId: ${e}`);let n=0,r=0,i=0;return t?.forEach(e=>{n+=e.queueTime,r++,i+=e.manuallyCompleted?1:0}),{totalQueueTime:n,totalQueueCount:r,manuallyCompletedCount:i}}discardMeasurements(e){this.logger.trace(`PerformanceClient: Performance measurements discarded`,e),this.eventsByCorrelationId.delete(e),this.logger.trace(`PerformanceClient: QueueMeasurements discarded`,e),this.queueMeasurements.delete(e),this.logger.trace(`PerformanceClient: Pre-queue times discarded`,e),this.preQueueTimeByCorrelationId.delete(e),this.logger.trace(`PerformanceClient: Event stack discarded`,e),this.eventStack.delete(e)}addPerformanceCallback(e){for(let[t,n]of this.callbacks)if(n.toString()===e.toString())return this.logger.warning(`PerformanceClient: Performance callback is already registered with id: ${t}`),t;let t=this.generateId();return this.callbacks.set(t,e),this.logger.verbose(`PerformanceClient: Performance callback registered with id: ${t}`),t}removePerformanceCallback(e){let t=this.callbacks.delete(e);return t?this.logger.verbose(`PerformanceClient: Performance callback ${e} removed.`):this.logger.verbose(`PerformanceClient: Performance callback ${e} not removed.`),t}emitEvents(e,t){this.logger.verbose(`PerformanceClient: Emitting performance events`,t),this.callbacks.forEach((n,r)=>{this.logger.trace(`PerformanceClient: Emitting event to callback ${r}`,t),n.apply(null,[e])})}truncateIntegralFields(e){this.intFields.forEach(t=>{t in e&&typeof e[t]==`number`&&(e[t]=Math.floor(e[t]))})}getDurationMs(e){let t=Date.now()-e;return t<0?t:0}};e.AADAuthorityConstants=t.AADAuthorityConstants,e.AADServerParamKeys=t.AADServerParamKeys,e.AccountEntity=t.AccountEntity,e.AuthError=t.AuthError,e.AuthErrorCodes=t.AuthErrorCodes,e.AuthErrorMessage=t.AuthErrorMessage,e.AuthToken=t.AuthToken,e.AuthenticationHeaderParser=t.AuthenticationHeaderParser,e.AuthenticationScheme=t.AuthenticationScheme,e.Authority=t.Authority,e.AuthorityFactory=t.AuthorityFactory,e.AuthorityType=t.AuthorityType,e.AuthorizationCodeClient=t.AuthorizationCodeClient,e.AuthorizeProtocol=t.Authorize,e.AzureCloudInstance=t.AzureCloudInstance,e.BaseClient=t.BaseClient,e.CacheAccountType=t.CacheAccountType,e.CacheError=t.CacheError,e.CacheErrorCodes=t.CacheErrorCodes,e.CacheHelpers=t.CacheHelpers,e.CacheManager=t.CacheManager,e.CacheOutcome=t.CacheOutcome,e.CacheType=t.CacheType,e.CcsCredentialType=t.CcsCredentialType,e.ClaimsRequestKeys=t.ClaimsRequestKeys,e.ClientAuthError=t.ClientAuthError,e.ClientAuthErrorCodes=t.ClientAuthErrorCodes,e.ClientAuthErrorMessage=t.ClientAuthErrorMessage,e.ClientConfigurationError=t.ClientConfigurationError,e.ClientConfigurationErrorCodes=t.ClientConfigurationErrorCodes,e.ClientConfigurationErrorMessage=t.ClientConfigurationErrorMessage,e.CodeChallengeMethodValues=t.CodeChallengeMethodValues,e.Constants=t.Constants,e.CredentialType=t.CredentialType,e.DEFAULT_CRYPTO_IMPLEMENTATION=t.DEFAULT_CRYPTO_IMPLEMENTATION,e.DEFAULT_SYSTEM_OPTIONS=t.DEFAULT_SYSTEM_OPTIONS,e.DEFAULT_TOKEN_RENEWAL_OFFSET_SEC=t.DEFAULT_TOKEN_RENEWAL_OFFSET_SEC,e.DefaultStorageClass=t.DefaultStorageClass,e.EncodingTypes=t.EncodingTypes,e.Errors=t.Errors,e.GrantType=t.GrantType,e.HeaderNames=t.HeaderNames,e.HttpMethod=t.HttpMethod,e.HttpStatus=t.HttpStatus,e.IntFields=t.IntFields,e.InteractionRequiredAuthError=t.InteractionRequiredAuthError,e.InteractionRequiredAuthErrorCodes=t.InteractionRequiredAuthErrorCodes,e.InteractionRequiredAuthErrorMessage=t.InteractionRequiredAuthErrorMessage,e.JsonWebTokenTypes=t.JsonWebTokenTypes,Object.defineProperty(e,`LogLevel`,{enumerable:!0,get:function(){return t.LogLevel}}),e.Logger=t.Logger,e.NetworkError=t.NetworkError,e.OAuthResponseType=t.OAuthResponseType,e.OIDC_DEFAULT_SCOPES=t.OIDC_DEFAULT_SCOPES,e.ONE_DAY_IN_MS=t.ONE_DAY_IN_MS,e.PasswordGrantConstants=t.PasswordGrantConstants,e.PerformanceEventStatus=t.PerformanceEventStatus,e.PerformanceEvents=t.PerformanceEvents,e.PersistentCacheKeys=t.PersistentCacheKeys,e.PlatformBrokerError=t.PlatformBrokerError,e.PopTokenGenerator=t.PopTokenGenerator,e.PromptValue=t.PromptValue,e.ProtocolMode=t.ProtocolMode,e.ProtocolUtils=t.ProtocolUtils,e.RefreshTokenClient=t.RefreshTokenClient,e.RequestParameterBuilder=t.RequestParameterBuilder,e.ResponseHandler=t.ResponseHandler,e.ResponseMode=t.ResponseMode,e.ScopeSet=t.ScopeSet,e.ServerError=t.ServerError,e.ServerResponseType=t.ServerResponseType,e.ServerTelemetryManager=t.ServerTelemetryManager,e.SilentFlowClient=t.SilentFlowClient,e.StringUtils=t.StringUtils,e.StubPerformanceClient=t.StubPerformanceClient,e.StubbedNetworkModule=t.StubbedNetworkModule,e.THE_FAMILY_ID=t.THE_FAMILY_ID,e.ThrottlingConstants=t.ThrottlingConstants,e.ThrottlingUtils=t.ThrottlingUtils,e.TimeUtils=t.TimeUtils,e.UrlString=t.UrlString,e.UrlUtils=t.UrlUtils,e.buildAccountToCache=t.buildAccountToCache,e.buildClientInfo=t.buildClientInfo,e.buildClientInfoFromHomeAccountId=t.buildClientInfoFromHomeAccountId,e.buildStaticAuthorityOptions=t.buildStaticAuthorityOptions,e.buildTenantProfile=t.buildTenantProfile,e.createAuthError=t.createAuthError,e.createCacheError=t.createCacheError,e.createClientAuthError=t.createClientAuthError,e.createClientConfigurationError=t.createClientConfigurationError,e.createInteractionRequiredAuthError=t.createInteractionRequiredAuthError,e.createNetworkError=t.createNetworkError,e.formatAuthorityUri=t.formatAuthorityUri,e.getRequestThumbprint=t.getRequestThumbprint,e.getTenantIdFromIdTokenClaims=t.getTenantIdFromIdTokenClaims,e.invoke=t.invoke,e.invokeAsync=t.invokeAsync,e.tenantIdMatchesHomeTenant=t.tenantIdMatchesHomeTenant,e.updateAccountTenantProfileData=t.updateAccountTenantProfileData,e.version=t.version,e.JoseHeader=s,e.PerformanceClient=m})),zc=s((e=>{var t=Lc(),n=Rc();e.AADAuthorityConstants=t.AADAuthorityConstants,e.AADServerParamKeys=t.AADServerParamKeys,e.AccountEntity=t.AccountEntity,e.AuthError=t.AuthError,e.AuthErrorCodes=t.AuthErrorCodes,e.AuthErrorMessage=t.AuthErrorMessage,e.AuthToken=t.AuthToken,e.AuthenticationHeaderParser=t.AuthenticationHeaderParser,e.AuthenticationScheme=t.AuthenticationScheme,e.Authority=t.Authority,e.AuthorityFactory=t.AuthorityFactory,e.AuthorityType=t.AuthorityType,e.AuthorizationCodeClient=t.AuthorizationCodeClient,e.AuthorizeProtocol=t.Authorize,e.AzureCloudInstance=t.AzureCloudInstance,e.BaseClient=t.BaseClient,e.CacheAccountType=t.CacheAccountType,e.CacheError=t.CacheError,e.CacheErrorCodes=t.CacheErrorCodes,e.CacheHelpers=t.CacheHelpers,e.CacheManager=t.CacheManager,e.CacheOutcome=t.CacheOutcome,e.CacheType=t.CacheType,e.CcsCredentialType=t.CcsCredentialType,e.ClaimsRequestKeys=t.ClaimsRequestKeys,e.ClientAssertionUtils=t.ClientAssertionUtils,e.ClientAuthError=t.ClientAuthError,e.ClientAuthErrorCodes=t.ClientAuthErrorCodes,e.ClientAuthErrorMessage=t.ClientAuthErrorMessage,e.ClientConfigurationError=t.ClientConfigurationError,e.ClientConfigurationErrorCodes=t.ClientConfigurationErrorCodes,e.ClientConfigurationErrorMessage=t.ClientConfigurationErrorMessage,e.CodeChallengeMethodValues=t.CodeChallengeMethodValues,e.Constants=t.Constants,e.CredentialType=t.CredentialType,e.DEFAULT_CRYPTO_IMPLEMENTATION=t.DEFAULT_CRYPTO_IMPLEMENTATION,e.DEFAULT_SYSTEM_OPTIONS=t.DEFAULT_SYSTEM_OPTIONS,e.DEFAULT_TOKEN_RENEWAL_OFFSET_SEC=t.DEFAULT_TOKEN_RENEWAL_OFFSET_SEC,e.DefaultStorageClass=t.DefaultStorageClass,e.EncodingTypes=t.EncodingTypes,e.Errors=t.Errors,e.GrantType=t.GrantType,e.HeaderNames=t.HeaderNames,e.HttpMethod=t.HttpMethod,e.HttpStatus=t.HttpStatus,e.IntFields=t.IntFields,e.InteractionRequiredAuthError=t.InteractionRequiredAuthError,e.InteractionRequiredAuthErrorCodes=t.InteractionRequiredAuthErrorCodes,e.InteractionRequiredAuthErrorMessage=t.InteractionRequiredAuthErrorMessage,e.JsonWebTokenTypes=t.JsonWebTokenTypes,Object.defineProperty(e,`LogLevel`,{enumerable:!0,get:function(){return t.LogLevel}}),e.Logger=t.Logger,e.NetworkError=t.NetworkError,e.OAuthResponseType=t.OAuthResponseType,e.OIDC_DEFAULT_SCOPES=t.OIDC_DEFAULT_SCOPES,e.ONE_DAY_IN_MS=t.ONE_DAY_IN_MS,e.PasswordGrantConstants=t.PasswordGrantConstants,e.PerformanceEventStatus=t.PerformanceEventStatus,e.PerformanceEvents=t.PerformanceEvents,e.PersistentCacheKeys=t.PersistentCacheKeys,e.PlatformBrokerError=t.PlatformBrokerError,e.PopTokenGenerator=t.PopTokenGenerator,e.PromptValue=t.PromptValue,e.ProtocolMode=t.ProtocolMode,e.ProtocolUtils=t.ProtocolUtils,e.RefreshTokenClient=t.RefreshTokenClient,e.RequestParameterBuilder=t.RequestParameterBuilder,e.ResponseHandler=t.ResponseHandler,e.ResponseMode=t.ResponseMode,e.ScopeSet=t.ScopeSet,e.ServerError=t.ServerError,e.ServerResponseType=t.ServerResponseType,e.ServerTelemetryManager=t.ServerTelemetryManager,e.SilentFlowClient=t.SilentFlowClient,e.StringUtils=t.StringUtils,e.StubPerformanceClient=t.StubPerformanceClient,e.StubbedNetworkModule=t.StubbedNetworkModule,e.THE_FAMILY_ID=t.THE_FAMILY_ID,e.ThrottlingConstants=t.ThrottlingConstants,e.ThrottlingUtils=t.ThrottlingUtils,e.TimeUtils=t.TimeUtils,e.TokenCacheContext=t.TokenCacheContext,e.UrlString=t.UrlString,e.UrlUtils=t.UrlUtils,e.buildAccountToCache=t.buildAccountToCache,e.buildClientInfo=t.buildClientInfo,e.buildClientInfoFromHomeAccountId=t.buildClientInfoFromHomeAccountId,e.buildStaticAuthorityOptions=t.buildStaticAuthorityOptions,e.buildTenantProfile=t.buildTenantProfile,e.createAuthError=t.createAuthError,e.createCacheError=t.createCacheError,e.createClientAuthError=t.createClientAuthError,e.createClientConfigurationError=t.createClientConfigurationError,e.createInteractionRequiredAuthError=t.createInteractionRequiredAuthError,e.createNetworkError=t.createNetworkError,e.formatAuthorityUri=t.formatAuthorityUri,e.getClientAssertion=t.getClientAssertion,e.getRequestThumbprint=t.getRequestThumbprint,e.getTenantIdFromIdTokenClaims=t.getTenantIdFromIdTokenClaims,e.invoke=t.invoke,e.invokeAsync=t.invokeAsync,e.tenantIdMatchesHomeTenant=t.tenantIdMatchesHomeTenant,e.updateAccountTenantProfileData=t.updateAccountTenantProfileData,e.version=t.version,e.JoseHeader=n.JoseHeader,e.PerformanceClient=n.PerformanceClient})),Bc=s(((e,t)=>{ +/*! safe-buffer. MIT License. Feross Aboukhadijeh */ +var n=require(`buffer`),r=n.Buffer;function i(e,t){for(var n in e)t[n]=e[n]}r.from&&r.alloc&&r.allocUnsafe&&r.allocUnsafeSlow?t.exports=n:(i(n,e),e.Buffer=a);function a(e,t,n){return r(e,t,n)}a.prototype=Object.create(r.prototype),i(r,a),a.from=function(e,t,n){if(typeof e==`number`)throw TypeError(`Argument must not be a number`);return r(e,t,n)},a.alloc=function(e,t,n){if(typeof e!=`number`)throw TypeError(`Argument must be a number`);var i=r(e);return t===void 0?i.fill(0):typeof n==`string`?i.fill(t,n):i.fill(t),i},a.allocUnsafe=function(e){if(typeof e!=`number`)throw TypeError(`Argument must be a number`);return r(e)},a.allocUnsafeSlow=function(e){if(typeof e!=`number`)throw TypeError(`Argument must be a number`);return n.SlowBuffer(e)}})),Vc=s(((e,t)=>{var n=Bc().Buffer,r=require(`stream`),i=require(`util`);function a(e){if(this.buffer=null,this.writable=!0,this.readable=!0,!e)return this.buffer=n.alloc(0),this;if(typeof e.pipe==`function`)return this.buffer=n.alloc(0),e.pipe(this),this;if(e.length||typeof e==`object`)return this.buffer=e,this.writable=!1,process.nextTick(function(){this.emit(`end`,e),this.readable=!1,this.emit(`close`)}.bind(this)),this;throw TypeError(`Unexpected data type (`+typeof e+`)`)}i.inherits(a,r),a.prototype.write=function(e){this.buffer=n.concat([this.buffer,n.from(e)]),this.emit(`data`,e)},a.prototype.end=function(e){e&&this.write(e),this.emit(`end`,e),this.emit(`close`),this.writable=!1,this.readable=!1},t.exports=a})),Hc=s(((e,t)=>{function n(e){return(e/8|0)+(e%8==0?0:1)}var r={ES256:n(256),ES384:n(384),ES512:n(521)};function i(e){var t=r[e];if(t)return t;throw Error(`Unknown algorithm "`+e+`"`)}t.exports=i})),Uc=s(((e,t)=>{var n=Bc().Buffer,r=Hc(),i=128,a=0,o=32,s=16,c=2,l=s|o|a<<6,u=c|a<<6;function d(e){return e.replace(/=/g,``).replace(/\+/g,`-`).replace(/\//g,`_`)}function f(e){if(n.isBuffer(e))return e;if(typeof e==`string`)return n.from(e,`base64`);throw TypeError(`ECDSA signature must be a Base64 string or a Buffer`)}function p(e,t){e=f(e);var a=r(t),o=a+1,s=e.length,c=0;if(e[c++]!==l)throw Error(`Could not find expected "seq"`);var p=e[c++];if(p===(i|1)&&(p=e[c++]),s-c=i&&--r,r}function h(e,t){e=f(e);var a=r(t),o=e.length;if(o!==a*2)throw TypeError(`"`+t+`" signatures must be "`+a*2+`" bytes, saw "`+o+`"`);var s=m(e,0,a),c=m(e,a,e.length),d=a-s,p=a-c,h=2+d+1+1+p,g=h{var n=require(`buffer`).Buffer,r=require(`buffer`).SlowBuffer;t.exports=i;function i(e,t){if(!n.isBuffer(e)||!n.isBuffer(t)||e.length!==t.length)return!1;for(var r=0,i=0;i{var n=Bc().Buffer,r=require(`crypto`),i=Uc(),a=require(`util`),o=`"%s" is not a valid algorithm. + Supported algorithms are: + "HS256", "HS384", "HS512", "RS256", "RS384", "RS512", "PS256", "PS384", "PS512", "ES256", "ES384", "ES512" and "none".`,s=`secret must be a string or buffer`,c=`key must be a string or a buffer`,l=`key must be a string, a buffer or an object`,u=typeof r.createPublicKey==`function`;u&&(c+=` or a KeyObject`,s+=`or a KeyObject`);function d(e){if(!n.isBuffer(e)&&typeof e!=`string`&&(!u||typeof e!=`object`||typeof e.type!=`string`||typeof e.asymmetricKeyType!=`string`||typeof e.export!=`function`))throw g(c)}function f(e){if(!n.isBuffer(e)&&typeof e!=`string`&&typeof e!=`object`)throw g(l)}function p(e){if(!n.isBuffer(e)){if(typeof e==`string`)return e;if(!u||typeof e!=`object`||e.type!==`secret`||typeof e.export!=`function`)throw g(s)}}function m(e){return e.replace(/=/g,``).replace(/\+/g,`-`).replace(/\//g,`_`)}function h(e){e=e.toString();var t=4-e.length%4;if(t!==4)for(var n=0;n{var n=require(`buffer`).Buffer;t.exports=function(e){return typeof e==`string`?e:typeof e==`number`||n.isBuffer(e)?e.toString():JSON.stringify(e)}})),qc=s(((e,t)=>{var n=Bc().Buffer,r=Vc(),i=Gc(),a=require(`stream`),o=Kc(),s=require(`util`);function c(e,t){return n.from(e,t).toString(`base64`).replace(/=/g,``).replace(/\+/g,`-`).replace(/\//g,`_`)}function l(e,t,n){n||=`utf8`;var r=c(o(e),`binary`),i=c(o(t),n);return s.format(`%s.%s`,r,i)}function u(e){var t=e.header,n=e.payload,r=e.secret||e.privateKey,a=e.encoding,o=i(t.alg),c=l(t,n,a),u=o.sign(c,r);return s.format(`%s.%s`,c,u)}function d(e){var t=new r(e.secret||e.privateKey||e.key);this.readable=!0,this.header=e.header,this.encoding=e.encoding,this.secret=this.privateKey=this.key=t,this.payload=new r(e.payload),this.secret.once(`close`,function(){!this.payload.writable&&this.readable&&this.sign()}.bind(this)),this.payload.once(`close`,function(){!this.secret.writable&&this.readable&&this.sign()}.bind(this))}s.inherits(d,a),d.prototype.sign=function(){try{var e=u({header:this.header,payload:this.payload.buffer,secret:this.secret.buffer,encoding:this.encoding});return this.emit(`done`,e),this.emit(`data`,e),this.emit(`end`),this.readable=!1,e}catch(e){this.readable=!1,this.emit(`error`,e),this.emit(`close`)}},d.sign=u,t.exports=d})),Jc=s(((e,t)=>{var n=Bc().Buffer,r=Vc(),i=Gc(),a=require(`stream`),o=Kc(),s=require(`util`),c=/^[a-zA-Z0-9\-_]+?\.[a-zA-Z0-9\-_]+?\.([a-zA-Z0-9\-_]+)?$/;function l(e){return Object.prototype.toString.call(e)===`[object Object]`}function u(e){if(l(e))return e;try{return JSON.parse(e)}catch{return}}function d(e){var t=e.split(`.`,1)[0];return u(n.from(t,`base64`).toString(`binary`))}function f(e){return e.split(`.`,2).join(`.`)}function p(e){return e.split(`.`)[2]}function m(e,t){t||=`utf8`;var r=e.split(`.`)[1];return n.from(r,`base64`).toString(t)}function h(e){return c.test(e)&&!!d(e)}function g(e,t,n){if(!t){var r=Error(`Missing algorithm parameter for jws.verify`);throw r.code=`MISSING_ALGORITHM`,r}e=o(e);var a=p(e),s=f(e);return i(t).verify(s,a,n)}function _(e,t){if(t||={},e=o(e),!h(e))return null;var n=d(e);if(!n)return null;var r=m(e);return(n.typ===`JWT`||t.json)&&(r=JSON.parse(r,t.encoding)),{header:n,payload:r,signature:p(e)}}function v(e){e||={};var t=new r(e.secret||e.publicKey||e.key);this.readable=!0,this.algorithm=e.algorithm,this.encoding=e.encoding,this.secret=this.publicKey=this.key=t,this.signature=new r(e.signature),this.secret.once(`close`,function(){!this.signature.writable&&this.readable&&this.verify()}.bind(this)),this.signature.once(`close`,function(){!this.secret.writable&&this.readable&&this.verify()}.bind(this))}s.inherits(v,a),v.prototype.verify=function(){try{var e=g(this.signature.buffer,this.algorithm,this.key.buffer),t=_(this.signature.buffer,this.encoding);return this.emit(`done`,e,t),this.emit(`data`,e),this.emit(`end`),this.readable=!1,e}catch(e){this.readable=!1,this.emit(`error`,e),this.emit(`close`)}},v.decode=_,v.isValid=h,v.verify=g,t.exports=v})),Yc=s((e=>{var t=qc(),n=Jc();e.ALGORITHMS=[`HS256`,`HS384`,`HS512`,`RS256`,`RS384`,`RS512`,`PS256`,`PS384`,`PS512`,`ES256`,`ES384`,`ES512`],e.sign=t.sign,e.verify=n.verify,e.decode=n.decode,e.isValid=n.isValid,e.createSign=function(e){return new t(e)},e.createVerify=function(e){return new n(e)}})),Xc=s(((e,t)=>{var n=Yc();t.exports=function(e,t){t||={};var r=n.decode(e,t);if(!r)return null;var i=r.payload;if(typeof i==`string`)try{var a=JSON.parse(i);typeof a==`object`&&a&&(i=a)}catch{}return t.complete===!0?{header:r.header,payload:i,signature:r.signature}:i}})),Zc=s(((e,t)=>{var n=function(e,t){Error.call(this,e),Error.captureStackTrace&&Error.captureStackTrace(this,this.constructor),this.name=`JsonWebTokenError`,this.message=e,t&&(this.inner=t)};n.prototype=Object.create(Error.prototype),n.prototype.constructor=n,t.exports=n})),Qc=s(((e,t)=>{var n=Zc(),r=function(e,t){n.call(this,e),this.name=`NotBeforeError`,this.date=t};r.prototype=Object.create(n.prototype),r.prototype.constructor=r,t.exports=r})),$c=s(((e,t)=>{var n=Zc(),r=function(e,t){n.call(this,e),this.name=`TokenExpiredError`,this.expiredAt=t};r.prototype=Object.create(n.prototype),r.prototype.constructor=r,t.exports=r})),el=s(((e,t)=>{var n=ra();t.exports=function(e,t){var r=t||Math.floor(Date.now()/1e3);if(typeof e==`string`){var i=n(e);return i===void 0?void 0:Math.floor(r+i/1e3)}else if(typeof e==`number`)return r+e;else return}})),tl=s(((e,t)=>{t.exports={MAX_LENGTH:256,MAX_SAFE_COMPONENT_LENGTH:16,MAX_SAFE_BUILD_LENGTH:250,MAX_SAFE_INTEGER:2**53-1||9007199254740991,RELEASE_TYPES:[`major`,`premajor`,`minor`,`preminor`,`patch`,`prepatch`,`prerelease`],SEMVER_SPEC_VERSION:`2.0.0`,FLAG_INCLUDE_PRERELEASE:1,FLAG_LOOSE:2}})),nl=s(((e,t)=>{t.exports=typeof process==`object`&&process.env&&process.env.NODE_DEBUG&&/\bsemver\b/i.test(process.env.NODE_DEBUG)?(...e)=>console.error(`SEMVER`,...e):()=>{}})),rl=s(((e,t)=>{let{MAX_SAFE_COMPONENT_LENGTH:n,MAX_SAFE_BUILD_LENGTH:r,MAX_LENGTH:i}=tl(),a=nl();e=t.exports={};let o=e.re=[],s=e.safeRe=[],c=e.src=[],l=e.safeSrc=[],u=e.t={},d=0,f=`[a-zA-Z0-9-]`,p=[[`\\s`,1],[`\\d`,i],[f,r]],m=e=>{for(let[t,n]of p)e=e.split(`${t}*`).join(`${t}{0,${n}}`).split(`${t}+`).join(`${t}{1,${n}}`);return e},h=(e,t,n)=>{let r=m(t),i=d++;a(e,i,t),u[e]=i,c[i]=t,l[i]=r,o[i]=new RegExp(t,n?`g`:void 0),s[i]=new RegExp(r,n?`g`:void 0)};h(`NUMERICIDENTIFIER`,`0|[1-9]\\d*`),h(`NUMERICIDENTIFIERLOOSE`,`\\d+`),h(`NONNUMERICIDENTIFIER`,`\\d*[a-zA-Z-]${f}*`),h(`MAINVERSION`,`(${c[u.NUMERICIDENTIFIER]})\\.(${c[u.NUMERICIDENTIFIER]})\\.(${c[u.NUMERICIDENTIFIER]})`),h(`MAINVERSIONLOOSE`,`(${c[u.NUMERICIDENTIFIERLOOSE]})\\.(${c[u.NUMERICIDENTIFIERLOOSE]})\\.(${c[u.NUMERICIDENTIFIERLOOSE]})`),h(`PRERELEASEIDENTIFIER`,`(?:${c[u.NONNUMERICIDENTIFIER]}|${c[u.NUMERICIDENTIFIER]})`),h(`PRERELEASEIDENTIFIERLOOSE`,`(?:${c[u.NONNUMERICIDENTIFIER]}|${c[u.NUMERICIDENTIFIERLOOSE]})`),h(`PRERELEASE`,`(?:-(${c[u.PRERELEASEIDENTIFIER]}(?:\\.${c[u.PRERELEASEIDENTIFIER]})*))`),h(`PRERELEASELOOSE`,`(?:-?(${c[u.PRERELEASEIDENTIFIERLOOSE]}(?:\\.${c[u.PRERELEASEIDENTIFIERLOOSE]})*))`),h(`BUILDIDENTIFIER`,`${f}+`),h(`BUILD`,`(?:\\+(${c[u.BUILDIDENTIFIER]}(?:\\.${c[u.BUILDIDENTIFIER]})*))`),h(`FULLPLAIN`,`v?${c[u.MAINVERSION]}${c[u.PRERELEASE]}?${c[u.BUILD]}?`),h(`FULL`,`^${c[u.FULLPLAIN]}$`),h(`LOOSEPLAIN`,`[v=\\s]*${c[u.MAINVERSIONLOOSE]}${c[u.PRERELEASELOOSE]}?${c[u.BUILD]}?`),h(`LOOSE`,`^${c[u.LOOSEPLAIN]}$`),h(`GTLT`,`((?:<|>)?=?)`),h(`XRANGEIDENTIFIERLOOSE`,`${c[u.NUMERICIDENTIFIERLOOSE]}|x|X|\\*`),h(`XRANGEIDENTIFIER`,`${c[u.NUMERICIDENTIFIER]}|x|X|\\*`),h(`XRANGEPLAIN`,`[v=\\s]*(${c[u.XRANGEIDENTIFIER]})(?:\\.(${c[u.XRANGEIDENTIFIER]})(?:\\.(${c[u.XRANGEIDENTIFIER]})(?:${c[u.PRERELEASE]})?${c[u.BUILD]}?)?)?`),h(`XRANGEPLAINLOOSE`,`[v=\\s]*(${c[u.XRANGEIDENTIFIERLOOSE]})(?:\\.(${c[u.XRANGEIDENTIFIERLOOSE]})(?:\\.(${c[u.XRANGEIDENTIFIERLOOSE]})(?:${c[u.PRERELEASELOOSE]})?${c[u.BUILD]}?)?)?`),h(`XRANGE`,`^${c[u.GTLT]}\\s*${c[u.XRANGEPLAIN]}$`),h(`XRANGELOOSE`,`^${c[u.GTLT]}\\s*${c[u.XRANGEPLAINLOOSE]}$`),h(`COERCEPLAIN`,`(^|[^\\d])(\\d{1,${n}})(?:\\.(\\d{1,${n}}))?(?:\\.(\\d{1,${n}}))?`),h(`COERCE`,`${c[u.COERCEPLAIN]}(?:$|[^\\d])`),h(`COERCEFULL`,c[u.COERCEPLAIN]+`(?:${c[u.PRERELEASE]})?(?:${c[u.BUILD]})?(?:$|[^\\d])`),h(`COERCERTL`,c[u.COERCE],!0),h(`COERCERTLFULL`,c[u.COERCEFULL],!0),h(`LONETILDE`,`(?:~>?)`),h(`TILDETRIM`,`(\\s*)${c[u.LONETILDE]}\\s+`,!0),e.tildeTrimReplace=`$1~`,h(`TILDE`,`^${c[u.LONETILDE]}${c[u.XRANGEPLAIN]}$`),h(`TILDELOOSE`,`^${c[u.LONETILDE]}${c[u.XRANGEPLAINLOOSE]}$`),h(`LONECARET`,`(?:\\^)`),h(`CARETTRIM`,`(\\s*)${c[u.LONECARET]}\\s+`,!0),e.caretTrimReplace=`$1^`,h(`CARET`,`^${c[u.LONECARET]}${c[u.XRANGEPLAIN]}$`),h(`CARETLOOSE`,`^${c[u.LONECARET]}${c[u.XRANGEPLAINLOOSE]}$`),h(`COMPARATORLOOSE`,`^${c[u.GTLT]}\\s*(${c[u.LOOSEPLAIN]})$|^$`),h(`COMPARATOR`,`^${c[u.GTLT]}\\s*(${c[u.FULLPLAIN]})$|^$`),h(`COMPARATORTRIM`,`(\\s*)${c[u.GTLT]}\\s*(${c[u.LOOSEPLAIN]}|${c[u.XRANGEPLAIN]})`,!0),e.comparatorTrimReplace=`$1$2$3`,h(`HYPHENRANGE`,`^\\s*(${c[u.XRANGEPLAIN]})\\s+-\\s+(${c[u.XRANGEPLAIN]})\\s*$`),h(`HYPHENRANGELOOSE`,`^\\s*(${c[u.XRANGEPLAINLOOSE]})\\s+-\\s+(${c[u.XRANGEPLAINLOOSE]})\\s*$`),h(`STAR`,`(<|>)?=?\\s*\\*`),h(`GTE0`,`^\\s*>=\\s*0\\.0\\.0\\s*$`),h(`GTE0PRE`,`^\\s*>=\\s*0\\.0\\.0-0\\s*$`)})),il=s(((e,t)=>{let n=Object.freeze({loose:!0}),r=Object.freeze({});t.exports=e=>e?typeof e==`object`?e:n:r})),al=s(((e,t)=>{let n=/^[0-9]+$/,r=(e,t)=>{if(typeof e==`number`&&typeof t==`number`)return e===t?0:er(t,e)}})),ol=s(((e,t)=>{let n=nl(),{MAX_LENGTH:r,MAX_SAFE_INTEGER:i}=tl(),{safeRe:a,t:o}=rl(),s=il(),{compareIdentifiers:c}=al();t.exports=class e{constructor(t,c){if(c=s(c),t instanceof e){if(t.loose===!!c.loose&&t.includePrerelease===!!c.includePrerelease)return t;t=t.version}else if(typeof t!=`string`)throw TypeError(`Invalid version. Must be a string. Got type "${typeof t}".`);if(t.length>r)throw TypeError(`version is longer than ${r} characters`);n(`SemVer`,t,c),this.options=c,this.loose=!!c.loose,this.includePrerelease=!!c.includePrerelease;let l=t.trim().match(c.loose?a[o.LOOSE]:a[o.FULL]);if(!l)throw TypeError(`Invalid Version: ${t}`);if(this.raw=t,this.major=+l[1],this.minor=+l[2],this.patch=+l[3],this.major>i||this.major<0)throw TypeError(`Invalid major version`);if(this.minor>i||this.minor<0)throw TypeError(`Invalid minor version`);if(this.patch>i||this.patch<0)throw TypeError(`Invalid patch version`);l[4]?this.prerelease=l[4].split(`.`).map(e=>{if(/^[0-9]+$/.test(e)){let t=+e;if(t>=0&&tt.major?1:this.minort.minor?1:this.patcht.patch?1:0}comparePre(t){if(t instanceof e||(t=new e(t,this.options)),this.prerelease.length&&!t.prerelease.length)return-1;if(!this.prerelease.length&&t.prerelease.length)return 1;if(!this.prerelease.length&&!t.prerelease.length)return 0;let r=0;do{let e=this.prerelease[r],i=t.prerelease[r];if(n(`prerelease compare`,r,e,i),e===void 0&&i===void 0)return 0;if(i===void 0)return 1;if(e===void 0)return-1;if(e===i)continue;return c(e,i)}while(++r)}compareBuild(t){t instanceof e||(t=new e(t,this.options));let r=0;do{let e=this.build[r],i=t.build[r];if(n(`build compare`,r,e,i),e===void 0&&i===void 0)return 0;if(i===void 0)return 1;if(e===void 0)return-1;if(e===i)continue;return c(e,i)}while(++r)}inc(e,t,n){if(e.startsWith(`pre`)){if(!t&&n===!1)throw Error(`invalid increment argument: identifier is empty`);if(t){let e=`-${t}`.match(this.options.loose?a[o.PRERELEASELOOSE]:a[o.PRERELEASE]);if(!e||e[1]!==t)throw Error(`invalid identifier: ${t}`)}}switch(e){case`premajor`:this.prerelease.length=0,this.patch=0,this.minor=0,this.major++,this.inc(`pre`,t,n);break;case`preminor`:this.prerelease.length=0,this.patch=0,this.minor++,this.inc(`pre`,t,n);break;case`prepatch`:this.prerelease.length=0,this.inc(`patch`,t,n),this.inc(`pre`,t,n);break;case`prerelease`:this.prerelease.length===0&&this.inc(`patch`,t,n),this.inc(`pre`,t,n);break;case`release`:if(this.prerelease.length===0)throw Error(`version ${this.raw} is not a prerelease`);this.prerelease.length=0;break;case`major`:(this.minor!==0||this.patch!==0||this.prerelease.length===0)&&this.major++,this.minor=0,this.patch=0,this.prerelease=[];break;case`minor`:(this.patch!==0||this.prerelease.length===0)&&this.minor++,this.patch=0,this.prerelease=[];break;case`patch`:this.prerelease.length===0&&this.patch++,this.prerelease=[];break;case`pre`:{let e=Number(n)?1:0;if(this.prerelease.length===0)this.prerelease=[e];else{let r=this.prerelease.length;for(;--r>=0;)typeof this.prerelease[r]==`number`&&(this.prerelease[r]++,r=-2);if(r===-1){if(t===this.prerelease.join(`.`)&&n===!1)throw Error(`invalid increment argument: identifier already exists`);this.prerelease.push(e)}}if(t){let r=[t,e];n===!1&&(r=[t]),c(this.prerelease[0],t)===0?isNaN(this.prerelease[1])&&(this.prerelease=r):this.prerelease=r}break}default:throw Error(`invalid increment argument: ${e}`)}return this.raw=this.format(),this.build.length&&(this.raw+=`+${this.build.join(`.`)}`),this}}})),sl=s(((e,t)=>{let n=ol();t.exports=(e,t,r=!1)=>{if(e instanceof n)return e;try{return new n(e,t)}catch(e){if(!r)return null;throw e}}})),cl=s(((e,t)=>{let n=sl();t.exports=(e,t)=>{let r=n(e,t);return r?r.version:null}})),ll=s(((e,t)=>{let n=sl();t.exports=(e,t)=>{let r=n(e.trim().replace(/^[=v]+/,``),t);return r?r.version:null}})),ul=s(((e,t)=>{let n=ol();t.exports=(e,t,r,i,a)=>{typeof r==`string`&&(a=i,i=r,r=void 0);try{return new n(e instanceof n?e.version:e,r).inc(t,i,a).version}catch{return null}}})),dl=s(((e,t)=>{let n=sl();t.exports=(e,t)=>{let r=n(e,null,!0),i=n(t,null,!0),a=r.compare(i);if(a===0)return null;let o=a>0,s=o?r:i,c=o?i:r,l=!!s.prerelease.length;if(c.prerelease.length&&!l){if(!c.patch&&!c.minor)return`major`;if(c.compareMain(s)===0)return c.minor&&!c.patch?`minor`:`patch`}let u=l?`pre`:``;return r.major===i.major?r.minor===i.minor?r.patch===i.patch?`prerelease`:u+`patch`:u+`minor`:u+`major`}})),fl=s(((e,t)=>{let n=ol();t.exports=(e,t)=>new n(e,t).major})),pl=s(((e,t)=>{let n=ol();t.exports=(e,t)=>new n(e,t).minor})),ml=s(((e,t)=>{let n=ol();t.exports=(e,t)=>new n(e,t).patch})),hl=s(((e,t)=>{let n=sl();t.exports=(e,t)=>{let r=n(e,t);return r&&r.prerelease.length?r.prerelease:null}})),gl=s(((e,t)=>{let n=ol();t.exports=(e,t,r)=>new n(e,r).compare(new n(t,r))})),_l=s(((e,t)=>{let n=gl();t.exports=(e,t,r)=>n(t,e,r)})),vl=s(((e,t)=>{let n=gl();t.exports=(e,t)=>n(e,t,!0)})),yl=s(((e,t)=>{let n=ol();t.exports=(e,t,r)=>{let i=new n(e,r),a=new n(t,r);return i.compare(a)||i.compareBuild(a)}})),bl=s(((e,t)=>{let n=yl();t.exports=(e,t)=>e.sort((e,r)=>n(e,r,t))})),xl=s(((e,t)=>{let n=yl();t.exports=(e,t)=>e.sort((e,r)=>n(r,e,t))})),Sl=s(((e,t)=>{let n=gl();t.exports=(e,t,r)=>n(e,t,r)>0})),Cl=s(((e,t)=>{let n=gl();t.exports=(e,t,r)=>n(e,t,r)<0})),wl=s(((e,t)=>{let n=gl();t.exports=(e,t,r)=>n(e,t,r)===0})),Tl=s(((e,t)=>{let n=gl();t.exports=(e,t,r)=>n(e,t,r)!==0})),El=s(((e,t)=>{let n=gl();t.exports=(e,t,r)=>n(e,t,r)>=0})),Dl=s(((e,t)=>{let n=gl();t.exports=(e,t,r)=>n(e,t,r)<=0})),Ol=s(((e,t)=>{let n=wl(),r=Tl(),i=Sl(),a=El(),o=Cl(),s=Dl();t.exports=(e,t,c,l)=>{switch(t){case`===`:return typeof e==`object`&&(e=e.version),typeof c==`object`&&(c=c.version),e===c;case`!==`:return typeof e==`object`&&(e=e.version),typeof c==`object`&&(c=c.version),e!==c;case``:case`=`:case`==`:return n(e,c,l);case`!=`:return r(e,c,l);case`>`:return i(e,c,l);case`>=`:return a(e,c,l);case`<`:return o(e,c,l);case`<=`:return s(e,c,l);default:throw TypeError(`Invalid operator: ${t}`)}}})),kl=s(((e,t)=>{let n=ol(),r=sl(),{safeRe:i,t:a}=rl();t.exports=(e,t)=>{if(e instanceof n)return e;if(typeof e==`number`&&(e=String(e)),typeof e!=`string`)return null;t||={};let o=null;if(!t.rtl)o=e.match(t.includePrerelease?i[a.COERCEFULL]:i[a.COERCE]);else{let n=t.includePrerelease?i[a.COERCERTLFULL]:i[a.COERCERTL],r;for(;(r=n.exec(e))&&(!o||o.index+o[0].length!==e.length);)(!o||r.index+r[0].length!==o.index+o[0].length)&&(o=r),n.lastIndex=r.index+r[1].length+r[2].length;n.lastIndex=-1}if(o===null)return null;let s=o[2];return r(`${s}.${o[3]||`0`}.${o[4]||`0`}${t.includePrerelease&&o[5]?`-${o[5]}`:``}${t.includePrerelease&&o[6]?`+${o[6]}`:``}`,t)}})),Al=s(((e,t)=>{t.exports=class{constructor(){this.max=1e3,this.map=new Map}get(e){let t=this.map.get(e);if(t!==void 0)return this.map.delete(e),this.map.set(e,t),t}delete(e){return this.map.delete(e)}set(e,t){if(!this.delete(e)&&t!==void 0){if(this.map.size>=this.max){let e=this.map.keys().next().value;this.delete(e)}this.map.set(e,t)}return this}}})),jl=s(((e,t)=>{let n=/\s+/g;t.exports=class e{constructor(t,r){if(r=i(r),t instanceof e)return t.loose===!!r.loose&&t.includePrerelease===!!r.includePrerelease?t:new e(t.raw,r);if(t instanceof a)return this.raw=t.value,this.set=[[t]],this.formatted=void 0,this;if(this.options=r,this.loose=!!r.loose,this.includePrerelease=!!r.includePrerelease,this.raw=t.trim().replace(n,` `),this.set=this.raw.split(`||`).map(e=>this.parseRange(e.trim())).filter(e=>e.length),!this.set.length)throw TypeError(`Invalid SemVer Range: ${this.raw}`);if(this.set.length>1){let e=this.set[0];if(this.set=this.set.filter(e=>!h(e[0])),this.set.length===0)this.set=[e];else if(this.set.length>1){for(let e of this.set)if(e.length===1&&g(e[0])){this.set=[e];break}}}this.formatted=void 0}get range(){if(this.formatted===void 0){this.formatted=``;for(let e=0;e0&&(this.formatted+=`||`);let t=this.set[e];for(let e=0;e0&&(this.formatted+=` `),this.formatted+=t[e].toString().trim()}}return this.formatted}format(){return this.range}toString(){return this.range}parseRange(e){let t=((this.options.includePrerelease&&p)|(this.options.loose&&m))+`:`+e,n=r.get(t);if(n)return n;let i=this.options.loose,s=i?c[l.HYPHENRANGELOOSE]:c[l.HYPHENRANGE];e=e.replace(s,O(this.options.includePrerelease)),o(`hyphen replace`,e),e=e.replace(c[l.COMPARATORTRIM],u),o(`comparator trim`,e),e=e.replace(c[l.TILDETRIM],d),o(`tilde trim`,e),e=e.replace(c[l.CARETTRIM],f),o(`caret trim`,e);let g=e.split(` `).map(e=>v(e,this.options)).join(` `).split(/\s+/).map(e=>D(e,this.options));i&&(g=g.filter(e=>(o(`loose invalid filter`,e,this.options),!!e.match(c[l.COMPARATORLOOSE])))),o(`range list`,g);let _=new Map,y=g.map(e=>new a(e,this.options));for(let e of y){if(h(e))return[e];_.set(e.value,e)}_.size>1&&_.has(``)&&_.delete(``);let b=[..._.values()];return r.set(t,b),b}intersects(t,n){if(!(t instanceof e))throw TypeError(`a Range is required`);return this.set.some(e=>_(e,n)&&t.set.some(t=>_(t,n)&&e.every(e=>t.every(t=>e.intersects(t,n)))))}test(e){if(!e)return!1;if(typeof e==`string`)try{e=new s(e,this.options)}catch{return!1}for(let t=0;te.value===`<0.0.0-0`,g=e=>e.value===``,_=(e,t)=>{let n=!0,r=e.slice(),i=r.pop();for(;n&&r.length;)n=r.every(e=>i.intersects(e,t)),i=r.pop();return n},v=(e,t)=>(e=e.replace(c[l.BUILD],``),o(`comp`,e,t),e=S(e,t),o(`caret`,e),e=b(e,t),o(`tildes`,e),e=w(e,t),o(`xrange`,e),e=E(e,t),o(`stars`,e),e),y=e=>!e||e.toLowerCase()===`x`||e===`*`,b=(e,t)=>e.trim().split(/\s+/).map(e=>x(e,t)).join(` `),x=(e,t)=>{let n=t.loose?c[l.TILDELOOSE]:c[l.TILDE];return e.replace(n,(t,n,r,i,a)=>{o(`tilde`,e,t,n,r,i,a);let s;return y(n)?s=``:y(r)?s=`>=${n}.0.0 <${+n+1}.0.0-0`:y(i)?s=`>=${n}.${r}.0 <${n}.${+r+1}.0-0`:a?(o(`replaceTilde pr`,a),s=`>=${n}.${r}.${i}-${a} <${n}.${+r+1}.0-0`):s=`>=${n}.${r}.${i} <${n}.${+r+1}.0-0`,o(`tilde return`,s),s})},S=(e,t)=>e.trim().split(/\s+/).map(e=>C(e,t)).join(` `),C=(e,t)=>{o(`caret`,e,t);let n=t.loose?c[l.CARETLOOSE]:c[l.CARET],r=t.includePrerelease?`-0`:``;return e.replace(n,(t,n,i,a,s)=>{o(`caret`,e,t,n,i,a,s);let c;return y(n)?c=``:y(i)?c=`>=${n}.0.0${r} <${+n+1}.0.0-0`:y(a)?c=n===`0`?`>=${n}.${i}.0${r} <${n}.${+i+1}.0-0`:`>=${n}.${i}.0${r} <${+n+1}.0.0-0`:s?(o(`replaceCaret pr`,s),c=n===`0`?i===`0`?`>=${n}.${i}.${a}-${s} <${n}.${i}.${+a+1}-0`:`>=${n}.${i}.${a}-${s} <${n}.${+i+1}.0-0`:`>=${n}.${i}.${a}-${s} <${+n+1}.0.0-0`):(o(`no pr`),c=n===`0`?i===`0`?`>=${n}.${i}.${a}${r} <${n}.${i}.${+a+1}-0`:`>=${n}.${i}.${a}${r} <${n}.${+i+1}.0-0`:`>=${n}.${i}.${a} <${+n+1}.0.0-0`),o(`caret return`,c),c})},w=(e,t)=>(o(`replaceXRanges`,e,t),e.split(/\s+/).map(e=>T(e,t)).join(` `)),T=(e,t)=>{e=e.trim();let n=t.loose?c[l.XRANGELOOSE]:c[l.XRANGE];return e.replace(n,(n,r,i,a,s,c)=>{o(`xRange`,e,n,r,i,a,s,c);let l=y(i),u=l||y(a),d=u||y(s),f=d;return r===`=`&&f&&(r=``),c=t.includePrerelease?`-0`:``,l?n=r===`>`||r===`<`?`<0.0.0-0`:`*`:r&&f?(u&&(a=0),s=0,r===`>`?(r=`>=`,u?(i=+i+1,a=0,s=0):(a=+a+1,s=0)):r===`<=`&&(r=`<`,u?i=+i+1:a=+a+1),r===`<`&&(c=`-0`),n=`${r+i}.${a}.${s}${c}`):u?n=`>=${i}.0.0${c} <${+i+1}.0.0-0`:d&&(n=`>=${i}.${a}.0${c} <${i}.${+a+1}.0-0`),o(`xRange return`,n),n})},E=(e,t)=>(o(`replaceStars`,e,t),e.trim().replace(c[l.STAR],``)),D=(e,t)=>(o(`replaceGTE0`,e,t),e.trim().replace(c[t.includePrerelease?l.GTE0PRE:l.GTE0],``)),O=e=>(t,n,r,i,a,o,s,c,l,u,d,f)=>(n=y(r)?``:y(i)?`>=${r}.0.0${e?`-0`:``}`:y(a)?`>=${r}.${i}.0${e?`-0`:``}`:o?`>=${n}`:`>=${n}${e?`-0`:``}`,c=y(l)?``:y(u)?`<${+l+1}.0.0-0`:y(d)?`<${l}.${+u+1}.0-0`:f?`<=${l}.${u}.${d}-${f}`:e?`<${l}.${u}.${+d+1}-0`:`<=${c}`,`${n} ${c}`.trim()),k=(e,t,n)=>{for(let n=0;n0){let r=e[n].semver;if(r.major===t.major&&r.minor===t.minor&&r.patch===t.patch)return!0}return!1}return!0}})),Ml=s(((e,t)=>{let n=Symbol(`SemVer ANY`);t.exports=class e{static get ANY(){return n}constructor(t,i){if(i=r(i),t instanceof e){if(t.loose===!!i.loose)return t;t=t.value}t=t.trim().split(/\s+/).join(` `),s(`comparator`,t,i),this.options=i,this.loose=!!i.loose,this.parse(t),this.semver===n?this.value=``:this.value=this.operator+this.semver.version,s(`comp`,this)}parse(e){let t=this.options.loose?i[a.COMPARATORLOOSE]:i[a.COMPARATOR],r=e.match(t);if(!r)throw TypeError(`Invalid comparator: ${e}`);this.operator=r[1]===void 0?``:r[1],this.operator===`=`&&(this.operator=``),r[2]?this.semver=new c(r[2],this.options.loose):this.semver=n}toString(){return this.value}test(e){if(s(`Comparator.test`,e,this.options.loose),this.semver===n||e===n)return!0;if(typeof e==`string`)try{e=new c(e,this.options)}catch{return!1}return o(e,this.operator,this.semver,this.options)}intersects(t,n){if(!(t instanceof e))throw TypeError(`a Comparator is required`);return this.operator===``?this.value===``?!0:new l(t.value,n).test(this.value):t.operator===``?t.value===``?!0:new l(this.value,n).test(t.semver):(n=r(n),n.includePrerelease&&(this.value===`<0.0.0-0`||t.value===`<0.0.0-0`)||!n.includePrerelease&&(this.value.startsWith(`<0.0.0`)||t.value.startsWith(`<0.0.0`))?!1:!!(this.operator.startsWith(`>`)&&t.operator.startsWith(`>`)||this.operator.startsWith(`<`)&&t.operator.startsWith(`<`)||this.semver.version===t.semver.version&&this.operator.includes(`=`)&&t.operator.includes(`=`)||o(this.semver,`<`,t.semver,n)&&this.operator.startsWith(`>`)&&t.operator.startsWith(`<`)||o(this.semver,`>`,t.semver,n)&&this.operator.startsWith(`<`)&&t.operator.startsWith(`>`)))}};let r=il(),{safeRe:i,t:a}=rl(),o=Ol(),s=nl(),c=ol(),l=jl()})),Nl=s(((e,t)=>{let n=jl();t.exports=(e,t,r)=>{try{t=new n(t,r)}catch{return!1}return t.test(e)}})),Pl=s(((e,t)=>{let n=jl();t.exports=(e,t)=>new n(e,t).set.map(e=>e.map(e=>e.value).join(` `).trim().split(` `))})),Fl=s(((e,t)=>{let n=ol(),r=jl();t.exports=(e,t,i)=>{let a=null,o=null,s=null;try{s=new r(t,i)}catch{return null}return e.forEach(e=>{s.test(e)&&(!a||o.compare(e)===-1)&&(a=e,o=new n(a,i))}),a}})),Il=s(((e,t)=>{let n=ol(),r=jl();t.exports=(e,t,i)=>{let a=null,o=null,s=null;try{s=new r(t,i)}catch{return null}return e.forEach(e=>{s.test(e)&&(!a||o.compare(e)===1)&&(a=e,o=new n(a,i))}),a}})),Ll=s(((e,t)=>{let n=ol(),r=jl(),i=Sl();t.exports=(e,t)=>{e=new r(e,t);let a=new n(`0.0.0`);if(e.test(a)||(a=new n(`0.0.0-0`),e.test(a)))return a;a=null;for(let t=0;t{let t=new n(e.semver.version);switch(e.operator){case`>`:t.prerelease.length===0?t.patch++:t.prerelease.push(0),t.raw=t.format();case``:case`>=`:(!o||i(t,o))&&(o=t);break;case`<`:case`<=`:break;default:throw Error(`Unexpected operation: ${e.operator}`)}}),o&&(!a||i(a,o))&&(a=o)}return a&&e.test(a)?a:null}})),Rl=s(((e,t)=>{let n=jl();t.exports=(e,t)=>{try{return new n(e,t).range||`*`}catch{return null}}})),zl=s(((e,t)=>{let n=ol(),r=Ml(),{ANY:i}=r,a=jl(),o=Nl(),s=Sl(),c=Cl(),l=Dl(),u=El();t.exports=(e,t,d,f)=>{e=new n(e,f),t=new a(t,f);let p,m,h,g,_;switch(d){case`>`:p=s,m=l,h=c,g=`>`,_=`>=`;break;case`<`:p=c,m=u,h=s,g=`<`,_=`<=`;break;default:throw TypeError(`Must provide a hilo val of "<" or ">"`)}if(o(e,t,f))return!1;for(let n=0;n{e.semver===i&&(e=new r(`>=0.0.0`)),o||=e,s||=e,p(e.semver,o.semver,f)?o=e:h(e.semver,s.semver,f)&&(s=e)}),o.operator===g||o.operator===_||(!s.operator||s.operator===g)&&m(e,s.semver)||s.operator===_&&h(e,s.semver))return!1}return!0}})),Bl=s(((e,t)=>{let n=zl();t.exports=(e,t,r)=>n(e,t,`>`,r)})),Vl=s(((e,t)=>{let n=zl();t.exports=(e,t,r)=>n(e,t,`<`,r)})),Hl=s(((e,t)=>{let n=jl();t.exports=(e,t,r)=>(e=new n(e,r),t=new n(t,r),e.intersects(t,r))})),Ul=s(((e,t)=>{let n=Nl(),r=gl();t.exports=(e,t,i)=>{let a=[],o=null,s=null,c=e.sort((e,t)=>r(e,t,i));for(let e of c)n(e,t,i)?(s=e,o||=e):(s&&a.push([o,s]),s=null,o=null);o&&a.push([o,null]);let l=[];for(let[e,t]of a)e===t?l.push(e):!t&&e===c[0]?l.push(`*`):t?e===c[0]?l.push(`<=${t}`):l.push(`${e} - ${t}`):l.push(`>=${e}`);let u=l.join(` || `),d=typeof t.raw==`string`?t.raw:String(t);return u.length{let n=jl(),r=Ml(),{ANY:i}=r,a=Nl(),o=gl(),s=(e,t,r={})=>{if(e===t)return!0;e=new n(e,r),t=new n(t,r);let i=!1;OUTER:for(let n of e.set){for(let e of t.set){let t=u(n,e,r);if(i||=t!==null,t)continue OUTER}if(i)return!1}return!0},c=[new r(`>=0.0.0-0`)],l=[new r(`>=0.0.0`)],u=(e,t,n)=>{if(e===t)return!0;if(e.length===1&&e[0].semver===i){if(t.length===1&&t[0].semver===i)return!0;e=n.includePrerelease?c:l}if(t.length===1&&t[0].semver===i){if(n.includePrerelease)return!0;t=l}let r=new Set,s,u;for(let t of e)t.operator===`>`||t.operator===`>=`?s=d(s,t,n):t.operator===`<`||t.operator===`<=`?u=f(u,t,n):r.add(t.semver);if(r.size>1)return null;let p;if(s&&u&&(p=o(s.semver,u.semver,n),p>0||p===0&&(s.operator!==`>=`||u.operator!==`<=`)))return null;for(let e of r){if(s&&!a(e,String(s),n)||u&&!a(e,String(u),n))return null;for(let r of t)if(!a(e,String(r),n))return!1;return!0}let m,h,g,_,v=u&&!n.includePrerelease&&u.semver.prerelease.length?u.semver:!1,y=s&&!n.includePrerelease&&s.semver.prerelease.length?s.semver:!1;v&&v.prerelease.length===1&&u.operator===`<`&&v.prerelease[0]===0&&(v=!1);for(let e of t){if(_=_||e.operator===`>`||e.operator===`>=`,g=g||e.operator===`<`||e.operator===`<=`,s){if(y&&e.semver.prerelease&&e.semver.prerelease.length&&e.semver.major===y.major&&e.semver.minor===y.minor&&e.semver.patch===y.patch&&(y=!1),e.operator===`>`||e.operator===`>=`){if(m=d(s,e,n),m===e&&m!==s)return!1}else if(s.operator===`>=`&&!a(s.semver,String(e),n))return!1}if(u){if(v&&e.semver.prerelease&&e.semver.prerelease.length&&e.semver.major===v.major&&e.semver.minor===v.minor&&e.semver.patch===v.patch&&(v=!1),e.operator===`<`||e.operator===`<=`){if(h=f(u,e,n),h===e&&h!==u)return!1}else if(u.operator===`<=`&&!a(u.semver,String(e),n))return!1}if(!e.operator&&(u||s)&&p!==0)return!1}return!(s&&g&&!u&&p!==0||u&&_&&!s&&p!==0||y||v)},d=(e,t,n)=>{if(!e)return t;let r=o(e.semver,t.semver,n);return r>0?e:r<0||t.operator===`>`&&e.operator===`>=`?t:e},f=(e,t,n)=>{if(!e)return t;let r=o(e.semver,t.semver,n);return r<0?e:r>0||t.operator===`<`&&e.operator===`<=`?t:e};t.exports=s})),Gl=s(((e,t)=>{let n=rl(),r=tl(),i=ol(),a=al();t.exports={parse:sl(),valid:cl(),clean:ll(),inc:ul(),diff:dl(),major:fl(),minor:pl(),patch:ml(),prerelease:hl(),compare:gl(),rcompare:_l(),compareLoose:vl(),compareBuild:yl(),sort:bl(),rsort:xl(),gt:Sl(),lt:Cl(),eq:wl(),neq:Tl(),gte:El(),lte:Dl(),cmp:Ol(),coerce:kl(),Comparator:Ml(),Range:jl(),satisfies:Nl(),toComparators:Pl(),maxSatisfying:Fl(),minSatisfying:Il(),minVersion:Ll(),validRange:Rl(),outside:zl(),gtr:Bl(),ltr:Vl(),intersects:Hl(),simplifyRange:Ul(),subset:Wl(),SemVer:i,re:n.re,src:n.src,tokens:n.t,SEMVER_SPEC_VERSION:r.SEMVER_SPEC_VERSION,RELEASE_TYPES:r.RELEASE_TYPES,compareIdentifiers:a.compareIdentifiers,rcompareIdentifiers:a.rcompareIdentifiers}})),Kl=s(((e,t)=>{t.exports=Gl().satisfies(process.version,`>=15.7.0`)})),ql=s(((e,t)=>{t.exports=Gl().satisfies(process.version,`>=16.9.0`)})),Jl=s(((e,t)=>{let n=Kl(),r=ql(),i={ec:[`ES256`,`ES384`,`ES512`],rsa:[`RS256`,`PS256`,`RS384`,`PS384`,`RS512`,`PS512`],"rsa-pss":[`PS256`,`PS384`,`PS512`]},a={ES256:`prime256v1`,ES384:`secp384r1`,ES512:`secp521r1`};t.exports=function(e,t){if(!e||!t)return;let o=t.asymmetricKeyType;if(!o)return;let s=i[o];if(!s)throw Error(`Unknown key type "${o}".`);if(!s.includes(e))throw Error(`"alg" parameter for "${o}" key type must be one of: ${s.join(`, `)}.`);if(n)switch(o){case`ec`:let n=t.asymmetricKeyDetails.namedCurve,i=a[e];if(n!==i)throw Error(`"alg" parameter "${e}" requires curve "${i}".`);break;case`rsa-pss`:if(r){let n=parseInt(e.slice(-3),10),{hashAlgorithm:r,mgf1HashAlgorithm:i,saltLength:a}=t.asymmetricKeyDetails;if(r!==`sha${n}`||i!==r)throw Error(`Invalid key for this operation, its RSA-PSS parameters do not meet the requirements of "alg" ${e}.`);if(a!==void 0&&a>n>>3)throw Error(`Invalid key for this operation, its RSA-PSS parameter saltLength does not meet the requirements of "alg" ${e}.`)}break}}})),Yl=s(((e,t)=>{t.exports=Gl().satisfies(process.version,`^6.12.0 || >=8.0.0`)})),Xl=s(((e,t)=>{let n=Zc(),r=Qc(),i=$c(),a=Xc(),o=el(),s=Jl(),c=Yl(),l=Yc(),{KeyObject:u,createSecretKey:d,createPublicKey:f}=require(`crypto`),p=[`RS256`,`RS384`,`RS512`],m=[`ES256`,`ES384`,`ES512`],h=[`RS256`,`RS384`,`RS512`],g=[`HS256`,`HS384`,`HS512`];c&&(p.splice(p.length,0,`PS256`,`PS384`,`PS512`),h.splice(h.length,0,`PS256`,`PS384`,`PS512`)),t.exports=function(e,t,c,_){typeof c==`function`&&!_&&(_=c,c={}),c||={},c=Object.assign({},c);let v;if(v=_||function(e,t){if(e)throw e;return t},c.clockTimestamp&&typeof c.clockTimestamp!=`number`)return v(new n(`clockTimestamp must be a number`));if(c.nonce!==void 0&&(typeof c.nonce!=`string`||c.nonce.trim()===``))return v(new n(`nonce must be a non-empty string`));if(c.allowInvalidAsymmetricKeyTypes!==void 0&&typeof c.allowInvalidAsymmetricKeyTypes!=`boolean`)return v(new n(`allowInvalidAsymmetricKeyTypes must be a boolean`));let y=c.clockTimestamp||Math.floor(Date.now()/1e3);if(!e)return v(new n(`jwt must be provided`));if(typeof e!=`string`)return v(new n(`jwt must be a string`));let b=e.split(`.`);if(b.length!==3)return v(new n(`jwt malformed`));let x;try{x=a(e,{complete:!0})}catch(e){return v(e)}if(!x)return v(new n(`invalid token`));let S=x.header,C;if(typeof t==`function`){if(!_)return v(new n(`verify must be called asynchronous if secret or public key is provided as a callback`));C=t}else C=function(e,n){return n(null,t)};return C(S,function(t,a){if(t)return v(new n(`error in secret or public key callback: `+t.message));let _=b[2].trim()!==``;if(!_&&a)return v(new n(`jwt signature is required`));if(_&&!a)return v(new n(`secret or public key must be provided`));if(!_&&!c.algorithms)return v(new n(`please specify "none" in "algorithms" to verify unsigned tokens`));if(a!=null&&!(a instanceof u))try{a=f(a)}catch{try{a=d(typeof a==`string`?Buffer.from(a):a)}catch{return v(new n(`secretOrPublicKey is not valid key material`))}}if(c.algorithms||(a.type===`secret`?c.algorithms=g:[`rsa`,`rsa-pss`].includes(a.asymmetricKeyType)?c.algorithms=h:a.asymmetricKeyType===`ec`?c.algorithms=m:c.algorithms=p),c.algorithms.indexOf(x.header.alg)===-1)return v(new n(`invalid algorithm`));if(S.alg.startsWith(`HS`)&&a.type!==`secret`)return v(new n(`secretOrPublicKey must be a symmetric key when using ${S.alg}`));if(/^(?:RS|PS|ES)/.test(S.alg)&&a.type!==`public`)return v(new n(`secretOrPublicKey must be an asymmetric key when using ${S.alg}`));if(!c.allowInvalidAsymmetricKeyTypes)try{s(S.alg,a)}catch(e){return v(e)}let C;try{C=l.verify(e,x.header.alg,a)}catch(e){return v(e)}if(!C)return v(new n(`invalid signature`));let w=x.payload;if(w.nbf!==void 0&&!c.ignoreNotBefore){if(typeof w.nbf!=`number`)return v(new n(`invalid nbf value`));if(w.nbf>y+(c.clockTolerance||0))return v(new r(`jwt not active`,new Date(w.nbf*1e3)))}if(w.exp!==void 0&&!c.ignoreExpiration){if(typeof w.exp!=`number`)return v(new n(`invalid exp value`));if(y>=w.exp+(c.clockTolerance||0))return v(new i(`jwt expired`,new Date(w.exp*1e3)))}if(c.audience){let e=Array.isArray(c.audience)?c.audience:[c.audience];if(!(Array.isArray(w.aud)?w.aud:[w.aud]).some(function(t){return e.some(function(e){return e instanceof RegExp?e.test(t):e===t})}))return v(new n(`jwt audience invalid. expected: `+e.join(` or `)))}if(c.issuer&&(typeof c.issuer==`string`&&w.iss!==c.issuer||Array.isArray(c.issuer)&&c.issuer.indexOf(w.iss)===-1))return v(new n(`jwt issuer invalid. expected: `+c.issuer));if(c.subject&&w.sub!==c.subject)return v(new n(`jwt subject invalid. expected: `+c.subject));if(c.jwtid&&w.jti!==c.jwtid)return v(new n(`jwt jwtid invalid. expected: `+c.jwtid));if(c.nonce&&w.nonce!==c.nonce)return v(new n(`jwt nonce invalid. expected: `+c.nonce));if(c.maxAge){if(typeof w.iat!=`number`)return v(new n(`iat required when maxAge is specified`));let e=o(c.maxAge,w.iat);if(e===void 0)return v(new n(`"maxAge" should be a number of seconds or string representing a timespan eg: "1d", "20h", 60`));if(y>=e+(c.clockTolerance||0))return v(new i(`maxAge exceeded`,new Date(e*1e3)))}if(c.complete===!0){let e=x.signature;return v(null,{header:S,payload:w,signature:e})}return v(null,w)})}})),Zl=s(((e,t)=>{var n=1/0,r=9007199254740991,i=17976931348623157e292,a=NaN,o=`[object Arguments]`,s=`[object Function]`,c=`[object GeneratorFunction]`,l=`[object String]`,u=`[object Symbol]`,d=/^\s+|\s+$/g,f=/^[-+]0x[0-9a-f]+$/i,p=/^0b[01]+$/i,m=/^0o[0-7]+$/i,h=/^(?:0|[1-9]\d*)$/,g=parseInt;function _(e,t){for(var n=-1,r=e?e.length:0,i=Array(r);++n-1&&e%1==0&&e-1:!!i&&y(e,t,n)>-1}function P(e){return L(e)&&T.call(e,`callee`)&&(!D.call(e,`callee`)||E.call(e)==o)}var F=Array.isArray;function I(e){return e!=null&&z(e.length)&&!R(e)}function L(e){return te(e)&&I(e)}function R(e){var t=B(e)?E.call(e):``;return t==s||t==c}function z(e){return typeof e==`number`&&e>-1&&e%1==0&&e<=r}function B(e){var t=typeof e;return!!e&&(t==`object`||t==`function`)}function te(e){return!!e&&typeof e==`object`}function V(e){return typeof e==`string`||!F(e)&&te(e)&&E.call(e)==l}function ne(e){return typeof e==`symbol`||te(e)&&E.call(e)==u}function re(e){return e?(e=ie(e),e===n||e===-n?(e<0?-1:1)*i:e===e?e:0):e===0?e:0}function H(e){var t=re(e),n=t%1;return t===t?n?t-n:t:0}function ie(e){if(typeof e==`number`)return e;if(ne(e))return a;if(B(e)){var t=typeof e.valueOf==`function`?e.valueOf():e;e=B(t)?t+``:t}if(typeof e!=`string`)return e===0?e:+e;e=e.replace(d,``);var n=p.test(e);return n||m.test(e)?g(e.slice(2),n?2:8):f.test(e)?a:+e}function U(e){return I(e)?A(e):j(e)}function W(e){return e?S(e,U(e)):[]}t.exports=ee})),Ql=s(((e,t)=>{var n=`[object Boolean]`,r=Object.prototype.toString;function i(e){return e===!0||e===!1||a(e)&&r.call(e)==n}function a(e){return!!e&&typeof e==`object`}t.exports=i})),$l=s(((e,t)=>{var n=1/0,r=17976931348623157e292,i=NaN,a=`[object Symbol]`,o=/^\s+|\s+$/g,s=/^[-+]0x[0-9a-f]+$/i,c=/^0b[01]+$/i,l=/^0o[0-7]+$/i,u=parseInt,d=Object.prototype.toString;function f(e){return typeof e==`number`&&e==_(e)}function p(e){var t=typeof e;return!!e&&(t==`object`||t==`function`)}function m(e){return!!e&&typeof e==`object`}function h(e){return typeof e==`symbol`||m(e)&&d.call(e)==a}function g(e){return e?(e=v(e),e===n||e===-n?(e<0?-1:1)*r:e===e?e:0):e===0?e:0}function _(e){var t=g(e),n=t%1;return t===t?n?t-n:t:0}function v(e){if(typeof e==`number`)return e;if(h(e))return i;if(p(e)){var t=typeof e.valueOf==`function`?e.valueOf():e;e=p(t)?t+``:t}if(typeof e!=`string`)return e===0?e:+e;e=e.replace(o,``);var n=c.test(e);return n||l.test(e)?u(e.slice(2),n?2:8):s.test(e)?i:+e}t.exports=f})),eu=s(((e,t)=>{var n=`[object Number]`,r=Object.prototype.toString;function i(e){return!!e&&typeof e==`object`}function a(e){return typeof e==`number`||i(e)&&r.call(e)==n}t.exports=a})),tu=s(((e,t)=>{var n=`[object Object]`;function r(e){var t=!1;if(e!=null&&typeof e.toString!=`function`)try{t=!!(e+``)}catch{}return t}function i(e,t){return function(n){return e(t(n))}}var a=Function.prototype,o=Object.prototype,s=a.toString,c=o.hasOwnProperty,l=s.call(Object),u=o.toString,d=i(Object.getPrototypeOf,Object);function f(e){return!!e&&typeof e==`object`}function p(e){if(!f(e)||u.call(e)!=n||r(e))return!1;var t=d(e);if(t===null)return!0;var i=c.call(t,`constructor`)&&t.constructor;return typeof i==`function`&&i instanceof i&&s.call(i)==l}t.exports=p})),nu=s(((e,t)=>{var n=`[object String]`,r=Object.prototype.toString,i=Array.isArray;function a(e){return!!e&&typeof e==`object`}function o(e){return typeof e==`string`||!i(e)&&a(e)&&r.call(e)==n}t.exports=o})),ru=s(((e,t)=>{var n=`Expected a function`,r=1/0,i=17976931348623157e292,a=NaN,o=`[object Symbol]`,s=/^\s+|\s+$/g,c=/^[-+]0x[0-9a-f]+$/i,l=/^0b[01]+$/i,u=/^0o[0-7]+$/i,d=parseInt,f=Object.prototype.toString;function p(e,t){var r;if(typeof t!=`function`)throw TypeError(n);return e=y(e),function(){return--e>0&&(r=t.apply(this,arguments)),e<=1&&(t=void 0),r}}function m(e){return p(2,e)}function h(e){var t=typeof e;return!!e&&(t==`object`||t==`function`)}function g(e){return!!e&&typeof e==`object`}function _(e){return typeof e==`symbol`||g(e)&&f.call(e)==o}function v(e){return e?(e=b(e),e===r||e===-r?(e<0?-1:1)*i:e===e?e:0):e===0?e:0}function y(e){var t=v(e),n=t%1;return t===t?n?t-n:t:0}function b(e){if(typeof e==`number`)return e;if(_(e))return a;if(h(e)){var t=typeof e.valueOf==`function`?e.valueOf():e;e=h(t)?t+``:t}if(typeof e!=`string`)return e===0?e:+e;e=e.replace(s,``);var n=l.test(e);return n||u.test(e)?d(e.slice(2),n?2:8):c.test(e)?a:+e}t.exports=m})),iu=s(((e,t)=>{let n=el(),r=Yl(),i=Jl(),a=Yc(),o=Zl(),s=Ql(),c=$l(),l=eu(),u=tu(),d=nu(),f=ru(),{KeyObject:p,createSecretKey:m,createPrivateKey:h}=require(`crypto`),g=[`RS256`,`RS384`,`RS512`,`ES256`,`ES384`,`ES512`,`HS256`,`HS384`,`HS512`,`none`];r&&g.splice(3,0,`PS256`,`PS384`,`PS512`);let _={expiresIn:{isValid:function(e){return c(e)||d(e)&&e},message:`"expiresIn" should be a number of seconds or string representing a timespan`},notBefore:{isValid:function(e){return c(e)||d(e)&&e},message:`"notBefore" should be a number of seconds or string representing a timespan`},audience:{isValid:function(e){return d(e)||Array.isArray(e)},message:`"audience" must be a string or array`},algorithm:{isValid:o.bind(null,g),message:`"algorithm" must be a valid string enum value`},header:{isValid:u,message:`"header" must be an object`},encoding:{isValid:d,message:`"encoding" must be a string`},issuer:{isValid:d,message:`"issuer" must be a string`},subject:{isValid:d,message:`"subject" must be a string`},jwtid:{isValid:d,message:`"jwtid" must be a string`},noTimestamp:{isValid:s,message:`"noTimestamp" must be a boolean`},keyid:{isValid:d,message:`"keyid" must be a string`},mutatePayload:{isValid:s,message:`"mutatePayload" must be a boolean`},allowInsecureKeySizes:{isValid:s,message:`"allowInsecureKeySizes" must be a boolean`},allowInvalidAsymmetricKeyTypes:{isValid:s,message:`"allowInvalidAsymmetricKeyTypes" must be a boolean`}},v={iat:{isValid:l,message:`"iat" should be a number of seconds`},exp:{isValid:l,message:`"exp" should be a number of seconds`},nbf:{isValid:l,message:`"nbf" should be a number of seconds`}};function y(e,t,n,r){if(!u(n))throw Error(`Expected "`+r+`" to be a plain object.`);Object.keys(n).forEach(function(i){let a=e[i];if(!a){if(!t)throw Error(`"`+i+`" is not allowed in "`+r+`"`);return}if(!a.isValid(n[i]))throw Error(a.message)})}function b(e){return y(_,!1,e,`options`)}function x(e){return y(v,!0,e,`payload`)}let S={audience:`aud`,issuer:`iss`,subject:`sub`,jwtid:`jti`},C=[`expiresIn`,`notBefore`,`noTimestamp`,`audience`,`issuer`,`subject`,`jwtid`];t.exports=function(e,t,r,o){typeof r==`function`?(o=r,r={}):r||={};let s=typeof e==`object`&&!Buffer.isBuffer(e),c=Object.assign({alg:r.algorithm||`HS256`,typ:s?`JWT`:void 0,kid:r.keyid},r.header);function l(e){if(o)return o(e);throw e}if(!t&&r.algorithm!==`none`)return l(Error(`secretOrPrivateKey must have a value`));if(t!=null&&!(t instanceof p))try{t=h(t)}catch{try{t=m(typeof t==`string`?Buffer.from(t):t)}catch{return l(Error(`secretOrPrivateKey is not valid key material`))}}if(c.alg.startsWith(`HS`)&&t.type!==`secret`)return l(Error(`secretOrPrivateKey must be a symmetric key when using ${c.alg}`));if(/^(?:RS|PS|ES)/.test(c.alg)){if(t.type!==`private`)return l(Error(`secretOrPrivateKey must be an asymmetric key when using ${c.alg}`));if(!r.allowInsecureKeySizes&&!c.alg.startsWith(`ES`)&&t.asymmetricKeyDetails!==void 0&&t.asymmetricKeyDetails.modulusLength<2048)return l(Error(`secretOrPrivateKey has a minimum key size of 2048 bits for ${c.alg}`))}if(e===void 0)return l(Error(`payload is required`));if(s){try{x(e)}catch(e){return l(e)}r.mutatePayload||(e=Object.assign({},e))}else{let t=C.filter(function(e){return r[e]!==void 0});if(t.length>0)return l(Error(`invalid `+t.join(`,`)+` option for `+typeof e+` payload`))}if(e.exp!==void 0&&r.expiresIn!==void 0)return l(Error(`Bad "options.expiresIn" option the payload already has an "exp" property.`));if(e.nbf!==void 0&&r.notBefore!==void 0)return l(Error(`Bad "options.notBefore" option the payload already has an "nbf" property.`));try{b(r)}catch(e){return l(e)}if(!r.allowInvalidAsymmetricKeyTypes)try{i(c.alg,t)}catch(e){return l(e)}let u=e.iat||Math.floor(Date.now()/1e3);if(r.noTimestamp?delete e.iat:s&&(e.iat=u),r.notBefore!==void 0){try{e.nbf=n(r.notBefore,u)}catch(e){return l(e)}if(e.nbf===void 0)return l(Error(`"notBefore" should be a number of seconds or string representing a timespan eg: "1d", "20h", 60`))}if(r.expiresIn!==void 0&&typeof e==`object`){try{e.exp=n(r.expiresIn,u)}catch(e){return l(e)}if(e.exp===void 0)return l(Error(`"expiresIn" should be a number of seconds or string representing a timespan eg: "1d", "20h", 60`))}Object.keys(S).forEach(function(t){let n=S[t];if(r[t]!==void 0){if(e[n]!==void 0)return l(Error(`Bad "options.`+t+`" option. The payload already has an "`+n+`" property.`));e[n]=r[t]}});let d=r.encoding||`utf8`;if(typeof o==`function`)o&&=f(o),a.createSign({header:c,privateKey:t,payload:e,encoding:d}).once(`error`,o).once(`done`,function(e){if(!r.allowInsecureKeySizes&&/^(?:RS|PS)/.test(c.alg)&&e.length<256)return o(Error(`secretOrPrivateKey has a minimum key size of 2048 bits for ${c.alg}`));o(null,e)});else{let n=a.sign({header:c,payload:e,secret:t,encoding:d});if(!r.allowInsecureKeySizes&&/^(?:RS|PS)/.test(c.alg)&&n.length<256)throw Error(`secretOrPrivateKey has a minimum key size of 2048 bits for ${c.alg}`);return n}}})),au=s(((e,t)=>{t.exports={decode:Xc(),verify:Xl(),sign:iu(),JsonWebTokenError:Zc(),NotBeforeError:Qc(),TokenExpiredError:$c()}})),ou=s((e=>{var t=require(`http`),n=require(`https`),r=(Ic(),d(Fc)),i=require(`crypto`),a=zc(),o=au(),s=require(`fs`),c=require(`path`),l=class{static serializeJSONBlob(e){return JSON.stringify(e)}static serializeAccounts(e){let t={};return Object.keys(e).map(function(n){let r=e[n];t[n]={home_account_id:r.homeAccountId,environment:r.environment,realm:r.realm,local_account_id:r.localAccountId,username:r.username,authority_type:r.authorityType,name:r.name,client_info:r.clientInfo,last_modification_time:r.lastModificationTime,last_modification_app:r.lastModificationApp,tenantProfiles:r.tenantProfiles?.map(e=>JSON.stringify(e))}}),t}static serializeIdTokens(e){let t={};return Object.keys(e).map(function(n){let r=e[n];t[n]={home_account_id:r.homeAccountId,environment:r.environment,credential_type:r.credentialType,client_id:r.clientId,secret:r.secret,realm:r.realm}}),t}static serializeAccessTokens(e){let t={};return Object.keys(e).map(function(n){let r=e[n];t[n]={home_account_id:r.homeAccountId,environment:r.environment,credential_type:r.credentialType,client_id:r.clientId,secret:r.secret,realm:r.realm,target:r.target,cached_at:r.cachedAt,expires_on:r.expiresOn,extended_expires_on:r.extendedExpiresOn,refresh_on:r.refreshOn,key_id:r.keyId,token_type:r.tokenType,requestedClaims:r.requestedClaims,requestedClaimsHash:r.requestedClaimsHash,userAssertionHash:r.userAssertionHash}}),t}static serializeRefreshTokens(e){let t={};return Object.keys(e).map(function(n){let r=e[n];t[n]={home_account_id:r.homeAccountId,environment:r.environment,credential_type:r.credentialType,client_id:r.clientId,secret:r.secret,family_id:r.familyId,target:r.target,realm:r.realm}}),t}static serializeAppMetadata(e){let t={};return Object.keys(e).map(function(n){let r=e[n];t[n]={client_id:r.clientId,environment:r.environment,family_id:r.familyId}}),t}static serializeAllCache(e){return{Account:this.serializeAccounts(e.accounts),IdToken:this.serializeIdTokens(e.idTokens),AccessToken:this.serializeAccessTokens(e.accessTokens),RefreshToken:this.serializeRefreshTokens(e.refreshTokens),AppMetadata:this.serializeAppMetadata(e.appMetadata)}}}; +/*! @azure/msal-common v15.13.2 2025-11-19 */ +let u={LIBRARY_NAME:`MSAL.JS`,SKU:`msal.js.common`,DEFAULT_AUTHORITY:`https://login.microsoftonline.com/common/`,DEFAULT_AUTHORITY_HOST:`login.microsoftonline.com`,DEFAULT_COMMON_TENANT:`common`,ADFS:`adfs`,DSTS:`dstsv2`,AAD_INSTANCE_DISCOVERY_ENDPT:`https://login.microsoftonline.com/common/discovery/instance?api-version=1.1&authorization_endpoint=`,CIAM_AUTH_URL:`.ciamlogin.com`,AAD_TENANT_DOMAIN_SUFFIX:`.onmicrosoft.com`,RESOURCE_DELIM:`|`,NO_ACCOUNT:`NO_ACCOUNT`,CLAIMS:`claims`,CONSUMER_UTID:`9188040d-6c67-4c5b-b112-36a304b66dad`,OPENID_SCOPE:`openid`,PROFILE_SCOPE:`profile`,OFFLINE_ACCESS_SCOPE:`offline_access`,EMAIL_SCOPE:`email`,CODE_GRANT_TYPE:`authorization_code`,RT_GRANT_TYPE:`refresh_token`,S256_CODE_CHALLENGE_METHOD:`S256`,URL_FORM_CONTENT_TYPE:`application/x-www-form-urlencoded;charset=utf-8`,AUTHORIZATION_PENDING:`authorization_pending`,NOT_DEFINED:`not_defined`,EMPTY_STRING:``,NOT_APPLICABLE:`N/A`,NOT_AVAILABLE:`Not Available`,FORWARD_SLASH:`/`,IMDS_ENDPOINT:`http://169.254.169.254/metadata/instance/compute/location`,IMDS_VERSION:`2020-06-01`,IMDS_TIMEOUT:2e3,AZURE_REGION_AUTO_DISCOVER_FLAG:`TryAutoDetect`,REGIONAL_AUTH_PUBLIC_CLOUD_SUFFIX:`login.microsoft.com`,KNOWN_PUBLIC_CLOUDS:[`login.microsoftonline.com`,`login.windows.net`,`login.microsoft.com`,`sts.windows.net`],SHR_NONCE_VALIDITY:240,INVALID_INSTANCE:`invalid_instance`},f={SUCCESS:200,SUCCESS_RANGE_START:200,SUCCESS_RANGE_END:299,REDIRECT:302,CLIENT_ERROR:400,CLIENT_ERROR_RANGE_START:400,BAD_REQUEST:400,UNAUTHORIZED:401,NOT_FOUND:404,REQUEST_TIMEOUT:408,GONE:410,TOO_MANY_REQUESTS:429,CLIENT_ERROR_RANGE_END:499,SERVER_ERROR:500,SERVER_ERROR_RANGE_START:500,SERVICE_UNAVAILABLE:503,GATEWAY_TIMEOUT:504,SERVER_ERROR_RANGE_END:599,MULTI_SIDED_ERROR:600},p=[u.OPENID_SCOPE,u.PROFILE_SCOPE,u.OFFLINE_ACCESS_SCOPE],m=[...p,u.EMAIL_SCOPE],h={CONTENT_TYPE:`Content-Type`,CONTENT_LENGTH:`Content-Length`,RETRY_AFTER:`Retry-After`,CCS_HEADER:`X-AnchorMailbox`,WWWAuthenticate:`WWW-Authenticate`,AuthenticationInfo:`Authentication-Info`,X_MS_REQUEST_ID:`x-ms-request-id`,X_MS_HTTP_VERSION:`x-ms-httpver`},g={COMMON:`common`,ORGANIZATIONS:`organizations`,CONSUMERS:`consumers`},_={ACCESS_TOKEN:`access_token`,XMS_CC:`xms_cc`},v={LOGIN:`login`,SELECT_ACCOUNT:`select_account`,CONSENT:`consent`,NONE:`none`,CREATE:`create`,NO_SESSION:`no_session`},y={PLAIN:`plain`,S256:`S256`},b={CODE:`code`,IDTOKEN_TOKEN:`id_token token`},x={QUERY:`query`,FRAGMENT:`fragment`,FORM_POST:`form_post`},S={AUTHORIZATION_CODE_GRANT:`authorization_code`,CLIENT_CREDENTIALS_GRANT:`client_credentials`,RESOURCE_OWNER_PASSWORD_GRANT:`password`,REFRESH_TOKEN_GRANT:`refresh_token`,DEVICE_CODE_GRANT:`device_code`,JWT_BEARER:`urn:ietf:params:oauth:grant-type:jwt-bearer`},C={MSSTS_ACCOUNT_TYPE:`MSSTS`,ADFS_ACCOUNT_TYPE:`ADFS`,GENERIC_ACCOUNT_TYPE:`Generic`},w={CACHE_KEY_SEPARATOR:`-`,CLIENT_INFO_SEPARATOR:`.`},T={ID_TOKEN:`IdToken`,ACCESS_TOKEN:`AccessToken`,ACCESS_TOKEN_WITH_AUTH_SCHEME:`AccessToken_With_AuthScheme`,REFRESH_TOKEN:`RefreshToken`},E=`appmetadata`,D={CACHE_KEY:`authority-metadata`,REFRESH_TIME_SECONDS:3600*24},O={CONFIG:`config`,CACHE:`cache`,NETWORK:`network`,HARDCODED_VALUES:`hardcoded_values`},k={SCHEMA_VERSION:5,MAX_LAST_HEADER_BYTES:330,MAX_CACHED_ERRORS:50,CACHE_KEY:`server-telemetry`,CATEGORY_SEPARATOR:`|`,VALUE_SEPARATOR:`,`,OVERFLOW_TRUE:`1`,OVERFLOW_FALSE:`0`,UNKNOWN_ERROR:`unknown_error`},A={BEARER:`Bearer`,POP:`pop`,SSH:`ssh-cert`},j={DEFAULT_THROTTLE_TIME_SECONDS:60,DEFAULT_MAX_THROTTLE_TIME_SECONDS:3600,THROTTLING_PREFIX:`throttling`,X_MS_LIB_CAPABILITY_VALUE:`retry-after, h429`},M={INVALID_GRANT_ERROR:`invalid_grant`,CLIENT_MISMATCH_ERROR:`client_mismatch`},N={username:`username`,password:`password`},ee={FAILED_AUTO_DETECTION:`1`,INTERNAL_CACHE:`2`,ENVIRONMENT_VARIABLE:`3`,IMDS:`4`},P={CONFIGURED_NO_AUTO_DETECTION:`2`,AUTO_DETECTION_REQUESTED_SUCCESSFUL:`4`,AUTO_DETECTION_REQUESTED_FAILED:`5`},F={NOT_APPLICABLE:`0`,FORCE_REFRESH_OR_CLAIMS:`1`,NO_CACHED_ACCESS_TOKEN:`2`,CACHED_ACCESS_TOKEN_EXPIRED:`3`,PROACTIVELY_REFRESHED:`4`},I={BASE64:`base64`,HEX:`hex`,UTF8:`utf-8`},L=`unexpected_error`,R=`post_request_failed`;var z=Object.freeze({__proto__:null,postRequestFailed:R,unexpectedError:L}); +/*! @azure/msal-common v15.13.2 2025-11-19 */ +let B={[L]:`Unexpected error in authentication.`,[R]:`Post request failed from the network, could be a 4xx/5xx or a network unavailability. Please check the exact error code for details.`},te={unexpectedError:{code:L,desc:B[L]},postRequestFailed:{code:R,desc:B[R]}};var V=class e extends Error{constructor(t,n,r){let i=n?`${t}: ${n}`:t;super(i),Object.setPrototypeOf(this,e.prototype),this.errorCode=t||u.EMPTY_STRING,this.errorMessage=n||u.EMPTY_STRING,this.subError=r||u.EMPTY_STRING,this.name=`AuthError`}setCorrelationId(e){this.correlationId=e}};function ne(e,t){return new V(e,t?`${B[e]} ${t}`:B[e])} +/*! @azure/msal-common v15.13.2 2025-11-19 */ +let re=`client_info_decoding_error`,H=`client_info_empty_error`,ie=`token_parsing_error`,U=`null_or_empty_token`,W=`endpoints_resolution_error`,ae=`network_error`,G=`openid_config_error`,oe=`hash_not_deserialized`,se=`invalid_state`,ce=`state_mismatch`,le=`state_not_found`,ue=`nonce_mismatch`,de=`auth_time_not_found`,fe=`max_age_transpired`,pe=`multiple_matching_tokens`,me=`multiple_matching_accounts`,he=`multiple_matching_appMetadata`,ge=`request_cannot_be_made`,_e=`cannot_remove_empty_scope`,ve=`cannot_append_scopeset`,ye=`empty_input_scopeset`,be=`device_code_polling_cancelled`,xe=`device_code_expired`,Se=`device_code_unknown_error`,Ce=`no_account_in_silent_request`,we=`invalid_cache_record`,Te=`invalid_cache_environment`,Ee=`no_account_found`,De=`no_crypto_object`,Oe=`unexpected_credential_type`,ke=`invalid_assertion`,Ae=`invalid_client_credential`,je=`token_refresh_required`,Me=`user_timeout_reached`,Ne=`token_claims_cnf_required_for_signedjwt`,Pe=`authorization_code_missing_from_server_response`,Fe=`binding_key_not_removed`,K=`end_session_endpoint_not_supported`,Ie=`key_id_missing`,Le=`no_network_connectivity`,Re=`user_canceled`,q=`missing_tenant_id_error`,ze=`method_not_implemented`,Be=`nested_app_auth_bridge_disabled`,J=`platform_broker_error`;var Ve=Object.freeze({__proto__:null,authTimeNotFound:de,authorizationCodeMissingFromServerResponse:Pe,bindingKeyNotRemoved:Fe,cannotAppendScopeSet:ve,cannotRemoveEmptyScope:_e,clientInfoDecodingError:re,clientInfoEmptyError:H,deviceCodeExpired:xe,deviceCodePollingCancelled:be,deviceCodeUnknownError:Se,emptyInputScopeSet:ye,endSessionEndpointNotSupported:K,endpointResolutionError:W,hashNotDeserialized:oe,invalidAssertion:ke,invalidCacheEnvironment:Te,invalidCacheRecord:we,invalidClientCredential:Ae,invalidState:se,keyIdMissing:Ie,maxAgeTranspired:fe,methodNotImplemented:ze,missingTenantIdError:q,multipleMatchingAccounts:me,multipleMatchingAppMetadata:he,multipleMatchingTokens:pe,nestedAppAuthBridgeDisabled:Be,networkError:ae,noAccountFound:Ee,noAccountInSilentRequest:Ce,noCryptoObject:De,noNetworkConnectivity:Le,nonceMismatch:ue,nullOrEmptyToken:U,openIdConfigError:G,platformBrokerError:J,requestCannotBeMade:ge,stateMismatch:ce,stateNotFound:le,tokenClaimsCnfRequiredForSignedJwt:Ne,tokenParsingError:ie,tokenRefreshRequired:je,unexpectedCredentialType:Oe,userCanceled:Re,userTimeoutReached:Me}); +/*! @azure/msal-common v15.13.2 2025-11-19 */ +let Y={[re]:`The client info could not be parsed/decoded correctly`,[H]:`The client info was empty`,[ie]:`Token cannot be parsed`,[U]:`The token is null or empty`,[W]:`Endpoints cannot be resolved`,[ae]:`Network request failed`,[G]:`Could not retrieve endpoints. Check your authority and verify the .well-known/openid-configuration endpoint returns the required endpoints.`,[oe]:`The hash parameters could not be deserialized`,[se]:`State was not the expected format`,[ce]:`State mismatch error`,[le]:`State not found`,[ue]:`Nonce mismatch error`,[de]:`Max Age was requested and the ID token is missing the auth_time variable. auth_time is an optional claim and is not enabled by default - it must be enabled. See https://aka.ms/msaljs/optional-claims for more information.`,[fe]:`Max Age is set to 0, or too much time has elapsed since the last end-user authentication.`,[pe]:`The cache contains multiple tokens satisfying the requirements. Call AcquireToken again providing more requirements such as authority or account.`,[me]:`The cache contains multiple accounts satisfying the given parameters. Please pass more info to obtain the correct account`,[he]:`The cache contains multiple appMetadata satisfying the given parameters. Please pass more info to obtain the correct appMetadata`,[ge]:`Token request cannot be made without authorization code or refresh token.`,[_e]:`Cannot remove null or empty scope from ScopeSet`,[ve]:`Cannot append ScopeSet`,[ye]:`Empty input ScopeSet cannot be processed`,[be]:`Caller has cancelled token endpoint polling during device code flow by setting DeviceCodeRequest.cancel = true.`,[xe]:`Device code is expired.`,[Se]:`Device code stopped polling for unknown reasons.`,[Ce]:`Please pass an account object, silent flow is not supported without account information`,[we]:`Cache record object was null or undefined.`,[Te]:`Invalid environment when attempting to create cache entry`,[Ee]:`No account found in cache for given key.`,[De]:`No crypto object detected.`,[Oe]:`Unexpected credential type.`,[ke]:`Client assertion must meet requirements described in https://tools.ietf.org/html/rfc7515`,[Ae]:`Client credential (secret, certificate, or assertion) must not be empty when creating a confidential client. An application should at most have one credential`,[je]:`Cannot return token from cache because it must be refreshed. This may be due to one of the following reasons: forceRefresh parameter is set to true, claims have been requested, there is no cached access token or it is expired.`,[Me]:`User defined timeout for device code polling reached`,[Ne]:`Cannot generate a POP jwt if the token_claims are not populated`,[Pe]:`Server response does not contain an authorization code to proceed`,[Fe]:`Could not remove the credential's binding key from storage.`,[K]:`The provided authority does not support logout`,[Ie]:`A keyId value is missing from the requested bound token's cache record and is required to match the token to it's stored binding key.`,[Le]:`No network connectivity. Check your internet connection.`,[Re]:`User cancelled the flow.`,[q]:`A tenant id - not common, organizations, or consumers - must be specified when using the client_credentials flow.`,[ze]:`This method has not been implemented`,[Be]:`The nested app auth bridge is disabled`,[J]:`An error occurred in the native broker. See the platformBrokerError property for details.`},He={clientInfoDecodingError:{code:re,desc:Y[re]},clientInfoEmptyError:{code:H,desc:Y[H]},tokenParsingError:{code:ie,desc:Y[ie]},nullOrEmptyToken:{code:U,desc:Y[U]},endpointResolutionError:{code:W,desc:Y[W]},networkError:{code:ae,desc:Y[ae]},unableToGetOpenidConfigError:{code:G,desc:Y[G]},hashNotDeserialized:{code:oe,desc:Y[oe]},invalidStateError:{code:se,desc:Y[se]},stateMismatchError:{code:ce,desc:Y[ce]},stateNotFoundError:{code:le,desc:Y[le]},nonceMismatchError:{code:ue,desc:Y[ue]},authTimeNotFoundError:{code:de,desc:Y[de]},maxAgeTranspired:{code:fe,desc:Y[fe]},multipleMatchingTokens:{code:pe,desc:Y[pe]},multipleMatchingAccounts:{code:me,desc:Y[me]},multipleMatchingAppMetadata:{code:he,desc:Y[he]},tokenRequestCannotBeMade:{code:ge,desc:Y[ge]},removeEmptyScopeError:{code:_e,desc:Y[_e]},appendScopeSetError:{code:ve,desc:Y[ve]},emptyInputScopeSetError:{code:ye,desc:Y[ye]},DeviceCodePollingCancelled:{code:be,desc:Y[be]},DeviceCodeExpired:{code:xe,desc:Y[xe]},DeviceCodeUnknownError:{code:Se,desc:Y[Se]},NoAccountInSilentRequest:{code:Ce,desc:Y[Ce]},invalidCacheRecord:{code:we,desc:Y[we]},invalidCacheEnvironment:{code:Te,desc:Y[Te]},noAccountFound:{code:Ee,desc:Y[Ee]},noCryptoObj:{code:De,desc:Y[De]},unexpectedCredentialType:{code:Oe,desc:Y[Oe]},invalidAssertion:{code:ke,desc:Y[ke]},invalidClientCredential:{code:Ae,desc:Y[Ae]},tokenRefreshRequired:{code:je,desc:Y[je]},userTimeoutReached:{code:Me,desc:Y[Me]},tokenClaimsRequired:{code:Ne,desc:Y[Ne]},noAuthorizationCodeFromServer:{code:Pe,desc:Y[Pe]},bindingKeyNotRemovedError:{code:Fe,desc:Y[Fe]},logoutNotSupported:{code:K,desc:Y[K]},keyIdMissing:{code:Ie,desc:Y[Ie]},noNetworkConnectivity:{code:Le,desc:Y[Le]},userCanceledError:{code:Re,desc:Y[Re]},missingTenantIdError:{code:q,desc:Y[q]},nestedAppAuthBridgeDisabled:{code:Be,desc:Y[Be]},platformBrokerError:{code:J,desc:Y[J]}};var Ue=class e extends V{constructor(t,n){super(t,n?`${Y[t]}: ${n}`:Y[t]),this.name=`ClientAuthError`,Object.setPrototypeOf(this,e.prototype)}};function X(e,t){return new Ue(e,t)} +/*! @azure/msal-common v15.13.2 2025-11-19 */ +let We={createNewGuid:()=>{throw X(ze)},base64Decode:()=>{throw X(ze)},base64Encode:()=>{throw X(ze)},base64UrlEncode:()=>{throw X(ze)},encodeKid:()=>{throw X(ze)},async getPublicKeyThumbprint(){throw X(ze)},async removeTokenBindingKey(){throw X(ze)},async clearKeystore(){throw X(ze)},async signJwt(){throw X(ze)},async hashString(){throw X(ze)}};e.LogLevel=void 0,(function(e){e[e.Error=0]=`Error`,e[e.Warning=1]=`Warning`,e[e.Info=2]=`Info`,e[e.Verbose=3]=`Verbose`,e[e.Trace=4]=`Trace`})(e.LogLevel||={});var Ge=class t{constructor(n,r,i){this.level=e.LogLevel.Info;let a=()=>{},o=n||t.createDefaultLoggerOptions();this.localCallback=o.loggerCallback||a,this.piiLoggingEnabled=o.piiLoggingEnabled||!1,this.level=typeof o.logLevel==`number`?o.logLevel:e.LogLevel.Info,this.correlationId=o.correlationId||u.EMPTY_STRING,this.packageName=r||u.EMPTY_STRING,this.packageVersion=i||u.EMPTY_STRING}static createDefaultLoggerOptions(){return{loggerCallback:()=>{},piiLoggingEnabled:!1,logLevel:e.LogLevel.Info}}clone(e,n,r){return new t({loggerCallback:this.localCallback,piiLoggingEnabled:this.piiLoggingEnabled,logLevel:this.level,correlationId:r||this.correlationId},e,n)}logMessage(t,n){if(n.logLevel>this.level||!this.piiLoggingEnabled&&n.containsPii)return;let r=`${`[${new Date().toUTCString()}] : [${n.correlationId||this.correlationId||``}]`} : ${this.packageName}@${this.packageVersion} : ${e.LogLevel[n.logLevel]} - ${t}`;this.executeCallback(n.logLevel,r,n.containsPii||!1)}executeCallback(e,t,n){this.localCallback&&this.localCallback(e,t,n)}error(t,n){this.logMessage(t,{logLevel:e.LogLevel.Error,containsPii:!1,correlationId:n||u.EMPTY_STRING})}errorPii(t,n){this.logMessage(t,{logLevel:e.LogLevel.Error,containsPii:!0,correlationId:n||u.EMPTY_STRING})}warning(t,n){this.logMessage(t,{logLevel:e.LogLevel.Warning,containsPii:!1,correlationId:n||u.EMPTY_STRING})}warningPii(t,n){this.logMessage(t,{logLevel:e.LogLevel.Warning,containsPii:!0,correlationId:n||u.EMPTY_STRING})}info(t,n){this.logMessage(t,{logLevel:e.LogLevel.Info,containsPii:!1,correlationId:n||u.EMPTY_STRING})}infoPii(t,n){this.logMessage(t,{logLevel:e.LogLevel.Info,containsPii:!0,correlationId:n||u.EMPTY_STRING})}verbose(t,n){this.logMessage(t,{logLevel:e.LogLevel.Verbose,containsPii:!1,correlationId:n||u.EMPTY_STRING})}verbosePii(t,n){this.logMessage(t,{logLevel:e.LogLevel.Verbose,containsPii:!0,correlationId:n||u.EMPTY_STRING})}trace(t,n){this.logMessage(t,{logLevel:e.LogLevel.Trace,containsPii:!1,correlationId:n||u.EMPTY_STRING})}tracePii(t,n){this.logMessage(t,{logLevel:e.LogLevel.Trace,containsPii:!0,correlationId:n||u.EMPTY_STRING})}isPiiLoggingEnabled(){return this.piiLoggingEnabled||!1}}; +/*! @azure/msal-common v15.13.2 2025-11-19 */ +let Ke=`@azure/msal-common`,qe=`15.13.2`,Je={None:`none`,AzurePublic:`https://login.microsoftonline.com`,AzurePpe:`https://login.windows-ppe.net`,AzureChina:`https://login.chinacloudapi.cn`,AzureGermany:`https://login.microsoftonline.de`,AzureUsGovernment:`https://login.microsoftonline.us`},Ye=`redirect_uri_empty`,Xe=`claims_request_parsing_error`,Ze=`authority_uri_insecure`,Qe=`url_parse_error`,$e=`empty_url_error`,et=`empty_input_scopes_error`,tt=`invalid_claims`,nt=`token_request_empty`,rt=`logout_request_empty`,Z=`invalid_code_challenge_method`,it=`pkce_params_missing`,at=`invalid_cloud_discovery_metadata`,ot=`invalid_authority_metadata`,st=`untrusted_authority`,ct=`missing_ssh_jwk`,lt=`missing_ssh_kid`,ut=`missing_nonce_authentication_header`,dt=`invalid_authentication_header`,ft=`cannot_set_OIDCOptions`,pt=`cannot_allow_platform_broker`,mt=`authority_mismatch`,ht=`invalid_request_method_for_EAR`,gt=`invalid_authorize_post_body_parameters`;var _t=Object.freeze({__proto__:null,authorityMismatch:mt,authorityUriInsecure:Ze,cannotAllowPlatformBroker:pt,cannotSetOIDCOptions:ft,claimsRequestParsingError:Xe,emptyInputScopesError:et,invalidAuthenticationHeader:dt,invalidAuthorityMetadata:ot,invalidAuthorizePostBodyParameters:gt,invalidClaims:tt,invalidCloudDiscoveryMetadata:at,invalidCodeChallengeMethod:Z,invalidRequestMethodForEAR:ht,logoutRequestEmpty:rt,missingNonceAuthenticationHeader:ut,missingSshJwk:ct,missingSshKid:lt,pkceParamsMissing:it,redirectUriEmpty:Ye,tokenRequestEmpty:nt,untrustedAuthority:st,urlEmptyError:$e,urlParseError:Qe}); +/*! @azure/msal-common v15.13.2 2025-11-19 */ +let vt={[Ye]:`A redirect URI is required for all calls, and none has been set.`,[Xe]:`Could not parse the given claims request object.`,[Ze]:`Authority URIs must use https. Please see here for valid authority configuration options: https://docs.microsoft.com/en-us/azure/active-directory/develop/msal-js-initializing-client-applications#configuration-options`,[Qe]:`URL could not be parsed into appropriate segments.`,[$e]:`URL was empty or null.`,[et]:`Scopes cannot be passed as null, undefined or empty array because they are required to obtain an access token.`,[tt]:`Given claims parameter must be a stringified JSON object.`,[nt]:`Token request was empty and not found in cache.`,[rt]:`The logout request was null or undefined.`,[Z]:`code_challenge_method passed is invalid. Valid values are "plain" and "S256".`,[it]:`Both params: code_challenge and code_challenge_method are to be passed if to be sent in the request`,[at]:`Invalid cloudDiscoveryMetadata provided. Must be a stringified JSON object containing tenant_discovery_endpoint and metadata fields`,[ot]:`Invalid authorityMetadata provided. Must by a stringified JSON object containing authorization_endpoint, token_endpoint, issuer fields.`,[st]:`The provided authority is not a trusted authority. Please include this authority in the knownAuthorities config parameter.`,[ct]:`Missing sshJwk in SSH certificate request. A stringified JSON Web Key is required when using the SSH authentication scheme.`,[lt]:`Missing sshKid in SSH certificate request. A string that uniquely identifies the public SSH key is required when using the SSH authentication scheme.`,[ut]:`Unable to find an authentication header containing server nonce. Either the Authentication-Info or WWW-Authenticate headers must be present in order to obtain a server nonce.`,[dt]:`Invalid authentication header provided`,[ft]:`Cannot set OIDCOptions parameter. Please change the protocol mode to OIDC or use a non-Microsoft authority.`,[pt]:`Cannot set allowPlatformBroker parameter to true when not in AAD protocol mode.`,[mt]:`Authority mismatch error. Authority provided in login request or PublicClientApplication config does not match the environment of the provided account. Please use a matching account or make an interactive request to login to this authority.`,[gt]:`Invalid authorize post body parameters provided. If you are using authorizePostBodyParameters, the request method must be POST. Please check the request method and parameters.`,[ht]:`Invalid request method for EAR protocol mode. The request method cannot be GET when using EAR protocol mode. Please change the request method to POST.`},yt={redirectUriNotSet:{code:Ye,desc:vt[Ye]},claimsRequestParsingError:{code:Xe,desc:vt[Xe]},authorityUriInsecure:{code:Ze,desc:vt[Ze]},urlParseError:{code:Qe,desc:vt[Qe]},urlEmptyError:{code:$e,desc:vt[$e]},emptyScopesError:{code:et,desc:vt[et]},invalidClaimsRequest:{code:tt,desc:vt[tt]},tokenRequestEmptyError:{code:nt,desc:vt[nt]},logoutRequestEmptyError:{code:rt,desc:vt[rt]},invalidCodeChallengeMethod:{code:Z,desc:vt[Z]},invalidCodeChallengeParams:{code:it,desc:vt[it]},invalidCloudDiscoveryMetadata:{code:at,desc:vt[at]},invalidAuthorityMetadata:{code:ot,desc:vt[ot]},untrustedAuthority:{code:st,desc:vt[st]},missingSshJwk:{code:ct,desc:vt[ct]},missingSshKid:{code:lt,desc:vt[lt]},missingNonceAuthenticationHeader:{code:ut,desc:vt[ut]},invalidAuthenticationHeader:{code:dt,desc:vt[dt]},cannotSetOIDCOptions:{code:ft,desc:vt[ft]},cannotAllowPlatformBroker:{code:pt,desc:vt[pt]},authorityMismatch:{code:mt,desc:vt[mt]},invalidAuthorizePostBodyParameters:{code:gt,desc:vt[gt]},invalidRequestMethodForEAR:{code:ht,desc:vt[ht]}};var bt=class e extends V{constructor(t){super(t,vt[t]),this.name=`ClientConfigurationError`,Object.setPrototypeOf(this,e.prototype)}};function xt(e){return new bt(e)} +/*! @azure/msal-common v15.13.2 2025-11-19 */ +var St=class{static isEmptyObj(e){if(e)try{let t=JSON.parse(e);return Object.keys(t).length===0}catch{}return!0}static startsWith(e,t){return e.indexOf(t)===0}static endsWith(e,t){return e.length>=t.length&&e.lastIndexOf(t)===e.length-t.length}static queryStringToObject(e){let t={},n=e.split(`&`),r=e=>decodeURIComponent(e.replace(/\+/g,` `));return n.forEach(e=>{if(e.trim()){let[n,i]=e.split(/=(.+)/g,2);n&&i&&(t[r(n)]=r(i))}}),t}static trimArrayEntries(e){return e.map(e=>e.trim())}static removeEmptyStringsFromArray(e){return e.filter(e=>!!e)}static jsonParseHelper(e){try{return JSON.parse(e)}catch{return null}}static matchPattern(e,t){return new RegExp(e.replace(/\\/g,`\\\\`).replace(/\*/g,`[^ ]*`).replace(/\?/g,`\\?`)).test(t)}},Ct=class e{constructor(e){let t=e?St.trimArrayEntries([...e]):[],n=t?St.removeEmptyStringsFromArray(t):[];if(!n||!n.length)throw xt(et);this.scopes=new Set,n.forEach(e=>this.scopes.add(e))}static fromString(t){return new e((t||u.EMPTY_STRING).split(` `))}static createSearchScopes(t){let n=new e(t&&t.length>0?t:[...p]);return n.containsOnlyOIDCScopes()?n.removeScope(u.OFFLINE_ACCESS_SCOPE):n.removeOIDCScopes(),n}containsScope(t){let n=new e(this.printScopesLowerCase().split(` `));return t?n.scopes.has(t.toLowerCase()):!1}containsScopeSet(e){return!e||e.scopes.size<=0?!1:this.scopes.size>=e.scopes.size&&e.asArray().every(e=>this.containsScope(e))}containsOnlyOIDCScopes(){let e=0;return m.forEach(t=>{this.containsScope(t)&&(e+=1)}),this.scopes.size===e}appendScope(e){e&&this.scopes.add(e.trim())}appendScopes(e){try{e.forEach(e=>this.appendScope(e))}catch{throw X(ve)}}removeScope(e){if(!e)throw X(_e);this.scopes.delete(e.trim())}removeOIDCScopes(){m.forEach(e=>{this.scopes.delete(e)})}unionScopeSets(e){if(!e)throw X(ye);let t=new Set;return e.scopes.forEach(e=>t.add(e.toLowerCase())),this.scopes.forEach(e=>t.add(e.toLowerCase())),t}intersectingScopeSets(e){if(!e)throw X(ye);e.containsOnlyOIDCScopes()||e.removeOIDCScopes();let t=this.unionScopeSets(e),n=e.getScopeCount(),r=this.getScopeCount();return t.sizee.push(t)),e}printScopes(){return this.scopes?this.asArray().join(` `):u.EMPTY_STRING}printScopesLowerCase(){return this.printScopes().toLowerCase()}}; +/*! @azure/msal-common v15.13.2 2025-11-19 */ +function wt(e,t){if(!e)throw X(H);try{let n=t(e);return JSON.parse(n)}catch{throw X(re)}}function Tt(e){if(!e)throw X(re);let t=e.split(w.CLIENT_INFO_SEPARATOR,2);return{uid:t[0],utid:t.length<2?u.EMPTY_STRING:t[1]}} +/*! @azure/msal-common v15.13.2 2025-11-19 */ +function Et(e,t){return!!e&&!!t&&e===t.split(`.`)[1]}function Dt(e,t,n,r){if(r){let{oid:t,sub:n,tid:i,name:a,tfp:o,acr:s,preferred_username:c,upn:l,login_hint:u}=r,d=i||o||s||``;return{tenantId:d,localAccountId:t||n||``,name:a,username:c||l||``,loginHint:u,isHomeTenant:Et(d,e)}}else return{tenantId:n,localAccountId:t,username:``,isHomeTenant:Et(n,e)}}function Ot(e,t,n,r){let i=e;if(t){let{isHomeTenant:n,...r}=t;i={...e,...r}}if(n){let{isHomeTenant:t,...a}=Dt(e.homeAccountId,e.localAccountId,e.tenantId,n);return i={...i,...a,idTokenClaims:n,idToken:r},i}return i} +/*! @azure/msal-common v15.13.2 2025-11-19 */ +let kt={Default:0,Adfs:1,Dsts:2,Ciam:3}; +/*! @azure/msal-common v15.13.2 2025-11-19 */ +function At(e){return e&&(e.tid||e.tfp||e.acr)||null} +/*! @azure/msal-common v15.13.2 2025-11-19 */ +let jt={AAD:`AAD`,OIDC:`OIDC`,EAR:`EAR`}; +/*! @azure/msal-common v15.13.2 2025-11-19 */ +var Mt=class e{static getAccountInfo(e){return{homeAccountId:e.homeAccountId,environment:e.environment,tenantId:e.realm,username:e.username,localAccountId:e.localAccountId,loginHint:e.loginHint,name:e.name,nativeAccountId:e.nativeAccountId,authorityType:e.authorityType,tenantProfiles:new Map((e.tenantProfiles||[]).map(e=>[e.tenantId,e])),dataBoundary:e.dataBoundary}}isSingleTenant(){return!this.tenantProfiles}static createAccount(t,n,r){let i=new e;n.authorityType===kt.Adfs?i.authorityType=C.ADFS_ACCOUNT_TYPE:n.protocolMode===jt.OIDC?i.authorityType=C.GENERIC_ACCOUNT_TYPE:i.authorityType=C.MSSTS_ACCOUNT_TYPE;let a;t.clientInfo&&r&&(a=wt(t.clientInfo,r),a.xms_tdbr&&(i.dataBoundary=a.xms_tdbr===`EU`?`EU`:`None`)),i.clientInfo=t.clientInfo,i.homeAccountId=t.homeAccountId,i.nativeAccountId=t.nativeAccountId;let o=t.environment||n&&n.getPreferredCache();if(!o)throw X(Te);i.environment=o,i.realm=a?.utid||At(t.idTokenClaims)||``,i.localAccountId=a?.uid||t.idTokenClaims?.oid||t.idTokenClaims?.sub||``;let s=t.idTokenClaims?.preferred_username||t.idTokenClaims?.upn,c=t.idTokenClaims?.emails?t.idTokenClaims.emails[0]:null;return i.username=s||c||``,i.loginHint=t.idTokenClaims?.login_hint,i.name=t.idTokenClaims?.name||``,i.cloudGraphHostName=t.cloudGraphHostName,i.msGraphHost=t.msGraphHost,t.tenantProfiles?i.tenantProfiles=t.tenantProfiles:i.tenantProfiles=[Dt(t.homeAccountId,i.localAccountId,i.realm,t.idTokenClaims)],i}static createFromAccountInfo(t,n,r){let i=new e;return i.authorityType=t.authorityType||C.GENERIC_ACCOUNT_TYPE,i.homeAccountId=t.homeAccountId,i.localAccountId=t.localAccountId,i.nativeAccountId=t.nativeAccountId,i.realm=t.tenantId,i.environment=t.environment,i.username=t.username,i.name=t.name,i.loginHint=t.loginHint,i.cloudGraphHostName=n,i.msGraphHost=r,i.tenantProfiles=Array.from(t.tenantProfiles?.values()||[]),i.dataBoundary=t.dataBoundary,i}static generateHomeAccountId(e,t,n,r,i){if(!(t===kt.Adfs||t===kt.Dsts)){if(e)try{let t=wt(e,r.base64Decode);if(t.uid&&t.utid)return`${t.uid}.${t.utid}`}catch{}n.warning(`No client info in response`)}return i?.sub||``}static isAccountEntity(e){return e?e.hasOwnProperty(`homeAccountId`)&&e.hasOwnProperty(`environment`)&&e.hasOwnProperty(`realm`)&&e.hasOwnProperty(`localAccountId`)&&e.hasOwnProperty(`username`)&&e.hasOwnProperty(`authorityType`):!1}static accountInfoIsEqual(e,t,n){if(!e||!t)return!1;let r=!0;if(n){let n=e.idTokenClaims||{},i=t.idTokenClaims||{};r=n.iat===i.iat&&n.nonce===i.nonce}return e.homeAccountId===t.homeAccountId&&e.localAccountId===t.localAccountId&&e.username===t.username&&e.tenantId===t.tenantId&&e.loginHint===t.loginHint&&e.environment===t.environment&&e.nativeAccountId===t.nativeAccountId&&r}}; +/*! @azure/msal-common v15.13.2 2025-11-19 */ +function Nt(e,t){let n=Ft(e);try{let e=t(n);return JSON.parse(e)}catch{throw X(ie)}}function Pt(e){if(!e.signin_state)return!1;let t=[`kmsi`,`dvc_dmjd`];return e.signin_state.some(e=>t.includes(e.trim().toLowerCase()))}function Ft(e){if(!e)throw X(U);let t=/^([^\.\s]*)\.([^\.\s]+)\.([^\.\s]*)$/.exec(e);if(!t||t.length<4)throw X(ie);return t[2]}function It(e,t){if(t===0||Date.now()-3e5>e+t)throw X(fe)} +/*! @azure/msal-common v15.13.2 2025-11-19 */ +function Lt(e){return e.startsWith(`#/`)?e.substring(2):e.startsWith(`#`)||e.startsWith(`?`)?e.substring(1):e}function Rt(e){if(!e||e.indexOf(`=`)<0)return null;try{let t=Lt(e),n=Object.fromEntries(new URLSearchParams(t));if(n.code||n.ear_jwe||n.error||n.error_description||n.state)return n}catch{throw X(oe)}return null}function Q(e,t=!0,n){let r=[];return e.forEach((e,i)=>{!t&&n&&i in n?r.push(`${i}=${e}`):r.push(`${i}=${encodeURIComponent(e)}`)}),r.join(`&`)} +/*! @azure/msal-common v15.13.2 2025-11-19 */ +var zt=class e{get urlString(){return this._urlString}constructor(t){if(this._urlString=t,!this._urlString)throw xt($e);t.includes(`#`)||(this._urlString=e.canonicalizeUri(t))}static canonicalizeUri(e){if(e){let t=e.toLowerCase();return St.endsWith(t,`?`)?t=t.slice(0,-1):St.endsWith(t,`?/`)&&(t=t.slice(0,-2)),St.endsWith(t,`/`)||(t+=`/`),t}return e}validateAsUri(){let e;try{e=this.getUrlComponents()}catch{throw xt(Qe)}if(!e.HostNameAndPort||!e.PathSegments)throw xt(Qe);if(!e.Protocol||e.Protocol.toLowerCase()!==`https:`)throw xt(Ze)}static appendQueryString(e,t){return t?e.indexOf(`?`)<0?`${e}?${t}`:`${e}&${t}`:e}static removeHashFromUrl(t){return e.canonicalizeUri(t.split(`#`)[0])}replaceTenantPath(t){let n=this.getUrlComponents(),r=n.PathSegments;return t&&r.length!==0&&(r[0]===g.COMMON||r[0]===g.ORGANIZATIONS)&&(r[0]=t),e.constructAuthorityUriFromObject(n)}getUrlComponents(){let e=RegExp(`^(([^:/?#]+):)?(//([^/?#]*))?([^?#]*)(\\?([^#]*))?(#(.*))?`),t=this.urlString.match(e);if(!t)throw xt(Qe);let n={Protocol:t[1],HostNameAndPort:t[4],AbsolutePath:t[5],QueryString:t[7]},r=n.AbsolutePath.split(`/`);return r=r.filter(e=>e&&e.length>0),n.PathSegments=r,n.QueryString&&n.QueryString.endsWith(`/`)&&(n.QueryString=n.QueryString.substring(0,n.QueryString.length-1)),n}static getDomainFromUrl(e){let t=RegExp(`^([^:/?#]+://)?([^/?#]*)`),n=e.match(t);if(!n)throw xt(Qe);return n[2]}static getAbsoluteUrl(t,n){if(t[0]===u.FORWARD_SLASH){let r=new e(n).getUrlComponents();return r.Protocol+`//`+r.HostNameAndPort+t}return t}static constructAuthorityUriFromObject(t){return new e(t.Protocol+`//`+t.HostNameAndPort+`/`+t.PathSegments.join(`/`))}static hashContainsKnownProperties(e){return!!Rt(e)}}; +/*! @azure/msal-common v15.13.2 2025-11-19 */ +let Bt={endpointMetadata:{"login.microsoftonline.com":{token_endpoint:`https://login.microsoftonline.com/{tenantid}/oauth2/v2.0/token`,jwks_uri:`https://login.microsoftonline.com/{tenantid}/discovery/v2.0/keys`,issuer:`https://login.microsoftonline.com/{tenantid}/v2.0`,authorization_endpoint:`https://login.microsoftonline.com/{tenantid}/oauth2/v2.0/authorize`,end_session_endpoint:`https://login.microsoftonline.com/{tenantid}/oauth2/v2.0/logout`},"login.chinacloudapi.cn":{token_endpoint:`https://login.chinacloudapi.cn/{tenantid}/oauth2/v2.0/token`,jwks_uri:`https://login.chinacloudapi.cn/{tenantid}/discovery/v2.0/keys`,issuer:`https://login.partner.microsoftonline.cn/{tenantid}/v2.0`,authorization_endpoint:`https://login.chinacloudapi.cn/{tenantid}/oauth2/v2.0/authorize`,end_session_endpoint:`https://login.chinacloudapi.cn/{tenantid}/oauth2/v2.0/logout`},"login.microsoftonline.us":{token_endpoint:`https://login.microsoftonline.us/{tenantid}/oauth2/v2.0/token`,jwks_uri:`https://login.microsoftonline.us/{tenantid}/discovery/v2.0/keys`,issuer:`https://login.microsoftonline.us/{tenantid}/v2.0`,authorization_endpoint:`https://login.microsoftonline.us/{tenantid}/oauth2/v2.0/authorize`,end_session_endpoint:`https://login.microsoftonline.us/{tenantid}/oauth2/v2.0/logout`}},instanceDiscoveryMetadata:{metadata:[{preferred_network:`login.microsoftonline.com`,preferred_cache:`login.windows.net`,aliases:[`login.microsoftonline.com`,`login.windows.net`,`login.microsoft.com`,`sts.windows.net`]},{preferred_network:`login.partner.microsoftonline.cn`,preferred_cache:`login.partner.microsoftonline.cn`,aliases:[`login.partner.microsoftonline.cn`,`login.chinacloudapi.cn`]},{preferred_network:`login.microsoftonline.de`,preferred_cache:`login.microsoftonline.de`,aliases:[`login.microsoftonline.de`]},{preferred_network:`login.microsoftonline.us`,preferred_cache:`login.microsoftonline.us`,aliases:[`login.microsoftonline.us`,`login.usgovcloudapi.net`]},{preferred_network:`login-us.microsoftonline.com`,preferred_cache:`login-us.microsoftonline.com`,aliases:[`login-us.microsoftonline.com`]}]}},Vt=Bt.endpointMetadata,Ht=Bt.instanceDiscoveryMetadata,Ut=new Set;Ht.metadata.forEach(e=>{e.aliases.forEach(e=>{Ut.add(e)})});function Wt(e,t){let n,r=e.canonicalAuthority;if(r){let i=new zt(r).getUrlComponents().HostNameAndPort;n=Gt(i,e.cloudDiscoveryMetadata?.metadata,O.CONFIG,t)||Gt(i,Ht.metadata,O.HARDCODED_VALUES,t)||e.knownAuthorities}return n||[]}function Gt(e,t,n,r){if(r?.trace(`getAliasesFromMetadata called with source: ${n}`),e&&t){let i=qt(t,e);if(i)return r?.trace(`getAliasesFromMetadata: found cloud discovery metadata in ${n}, returning aliases`),i.aliases;r?.trace(`getAliasesFromMetadata: did not find cloud discovery metadata in ${n}`)}return null}function Kt(e){return qt(Ht.metadata,e)}function qt(e,t){for(let n=0;n!e))return this.commonLogger.warning(`getAccountInfoFilteredBy: Account filter is empty or invalid, returning null`),null;let n=this.getAllAccounts(e,t);return n.length>1?n.sort(e=>e.idTokenClaims?-1:1)[0]:n.length===1?n[0]:null}getBaseAccountInfo(e,t){let n=this.getAccountsFilteredBy(e,t);return n.length>0?Mt.getAccountInfo(n[0]):null}buildTenantProfiles(e,t,n){return e.flatMap(e=>this.getTenantProfilesFromAccountEntity(e,t,n?.tenantId,n))}getTenantedAccountInfoByFilter(e,t,n,r,i){let a=null,o;if(i&&!this.tenantProfileMatchesFilter(n,i))return null;let s=this.getIdToken(e,r,t,n.tenantId);return s&&(o=Nt(s.secret,this.cryptoImpl.base64Decode),!this.idTokenClaimsMatchTenantProfileFilter(o,i))?null:(a=Ot(e,n,o,s?.secret),a)}getTenantProfilesFromAccountEntity(e,t,n,r){let i=Mt.getAccountInfo(e),a=i.tenantProfiles||new Map,o=this.getTokenKeys();if(n){let e=a.get(n);if(e)a=new Map([[n,e]]);else return[]}let s=[];return a.forEach(e=>{let n=this.getTenantedAccountInfoByFilter(i,o,e,t,r);n&&s.push(n)}),s}tenantProfileMatchesFilter(e,t){return!(t.localAccountId&&!this.matchLocalAccountIdFromTenantProfile(e,t.localAccountId)||t.name&&e.name!==t.name||t.isHomeTenant!==void 0&&e.isHomeTenant!==t.isHomeTenant)}idTokenClaimsMatchTenantProfileFilter(e,t){return!(t&&(t.localAccountId&&!this.matchLocalAccountIdFromTokenClaims(e,t.localAccountId)||t.loginHint&&!this.matchLoginHintFromTokenClaims(e,t.loginHint)||t.username&&!this.matchUsername(e.preferred_username,t.username)||t.name&&!this.matchName(e,t.name)||t.sid&&!this.matchSid(e,t.sid)))}async saveCacheRecord(e,t,n,r){if(!e)throw X(we);try{e.account&&await this.setAccount(e.account,t,n),e.idToken&&r?.idToken!==!1&&await this.setIdTokenCredential(e.idToken,t,n),e.accessToken&&r?.accessToken!==!1&&await this.saveAccessToken(e.accessToken,t,n),e.refreshToken&&r?.refreshToken!==!1&&await this.setRefreshTokenCredential(e.refreshToken,t,n),e.appMetadata&&this.setAppMetadata(e.appMetadata,t)}catch(e){throw this.commonLogger?.error(`CacheManager.saveCacheRecord: failed`),e instanceof V?e:Qt(e)}}async saveAccessToken(e,t,n){let r={clientId:e.clientId,credentialType:e.credentialType,environment:e.environment,homeAccountId:e.homeAccountId,realm:e.realm,tokenType:e.tokenType,requestedClaimsHash:e.requestedClaimsHash},i=this.getTokenKeys(),a=Ct.fromString(e.target);i.accessToken.forEach(e=>{if(!this.accessTokenKeyMatchesFilter(e,r,!1))return;let n=this.getAccessTokenCredential(e,t);n&&this.credentialMatchesFilter(n,r)&&Ct.fromString(n.target).intersectingScopeSets(a)&&this.removeAccessToken(e,t)}),await this.setAccessTokenCredential(e,t,n)}getAccountsFilteredBy(e,t){let n=this.getAccountKeys(),r=[];return n.forEach(n=>{let i=this.getAccount(n,t);if(!i||e.homeAccountId&&!this.matchHomeAccountId(i,e.homeAccountId)||e.username&&!this.matchUsername(i.username,e.username)||e.environment&&!this.matchEnvironment(i,e.environment)||e.realm&&!this.matchRealm(i,e.realm)||e.nativeAccountId&&!this.matchNativeAccountId(i,e.nativeAccountId)||e.authorityType&&!this.matchAuthorityType(i,e.authorityType))return;let a={localAccountId:e?.localAccountId,name:e?.name},o=i.tenantProfiles?.filter(e=>this.tenantProfileMatchesFilter(e,a));o&&o.length===0||r.push(i)}),r}credentialMatchesFilter(e,t){return!(t.clientId&&!this.matchClientId(e,t.clientId)||t.userAssertionHash&&!this.matchUserAssertionHash(e,t.userAssertionHash)||typeof t.homeAccountId==`string`&&!this.matchHomeAccountId(e,t.homeAccountId)||t.environment&&!this.matchEnvironment(e,t.environment)||t.realm&&!this.matchRealm(e,t.realm)||t.credentialType&&!this.matchCredentialType(e,t.credentialType)||t.familyId&&!this.matchFamilyId(e,t.familyId)||t.target&&!this.matchTarget(e,t.target)||(t.requestedClaimsHash||e.requestedClaimsHash)&&e.requestedClaimsHash!==t.requestedClaimsHash||e.credentialType===T.ACCESS_TOKEN_WITH_AUTH_SCHEME&&(t.tokenType&&!this.matchTokenType(e,t.tokenType)||t.tokenType===A.SSH&&t.keyId&&!this.matchKeyId(e,t.keyId)))}getAppMetadataFilteredBy(e){let t=this.getKeys(),n={};return t.forEach(t=>{if(!this.isAppMetadata(t))return;let r=this.getAppMetadata(t);r&&(e.environment&&!this.matchEnvironment(r,e.environment)||e.clientId&&!this.matchClientId(r,e.clientId)||(n[t]=r))}),n}getAuthorityMetadataByAlias(e){let t=this.getAuthorityMetadataKeys(),n=null;return t.forEach(t=>{if(!this.isAuthorityMetadata(t)||t.indexOf(this.clientId)===-1)return;let r=this.getAuthorityMetadata(t);r&&r.aliases.indexOf(e)!==-1&&(n=r)}),n}removeAllAccounts(e){this.getAllAccounts({},e).forEach(t=>{this.removeAccount(t,e)})}removeAccount(e,t){this.removeAccountContext(e,t),this.getAccountKeys().filter(t=>t.includes(e.homeAccountId)&&t.includes(e.environment)).forEach(e=>{this.removeItem(e,t),this.performanceClient.incrementFields({accountsRemoved:1},t)})}removeAccountContext(e,t){let n=this.getTokenKeys(),r=t=>t.includes(e.homeAccountId)&&t.includes(e.environment);n.idToken.filter(r).forEach(e=>{this.removeIdToken(e,t)}),n.accessToken.filter(r).forEach(e=>{this.removeAccessToken(e,t)}),n.refreshToken.filter(r).forEach(e=>{this.removeRefreshToken(e,t)})}removeAccessToken(e,t){let n=this.getAccessTokenCredential(e,t);if(this.removeItem(e,t),this.performanceClient.incrementFields({accessTokensRemoved:1},t),!n||n.credentialType.toLowerCase()!==T.ACCESS_TOKEN_WITH_AUTH_SCHEME.toLowerCase()||n.tokenType!==A.POP)return;let r=n.keyId;r&&this.cryptoImpl.removeTokenBindingKey(r).catch(()=>{this.commonLogger.error(`Failed to remove token binding key ${r}`,t),this.performanceClient?.incrementFields({removeTokenBindingKeyFailure:1},t)})}removeAppMetadata(e){return this.getKeys().forEach(t=>{this.isAppMetadata(t)&&this.removeItem(t,e)}),!0}getIdToken(e,t,n,r,i){this.commonLogger.trace(`CacheManager - getIdToken called`);let a={homeAccountId:e.homeAccountId,environment:e.environment,credentialType:T.ID_TOKEN,clientId:this.clientId,realm:r},o=this.getIdTokensByFilter(a,t,n),s=o.size;if(s<1)return this.commonLogger.info(`CacheManager:getIdToken - No token found`),null;if(s>1){let n=o;if(!r){let t=new Map;o.forEach((n,r)=>{n.realm===e.tenantId&&t.set(r,n)});let r=t.size;if(r<1)return this.commonLogger.info(`CacheManager:getIdToken - Multiple ID tokens found for account but none match account entity tenant id, returning first result`),o.values().next().value;if(r===1)return this.commonLogger.info(`CacheManager:getIdToken - Multiple ID tokens found for account, defaulting to home tenant profile`),t.values().next().value;n=t}return this.commonLogger.info(`CacheManager:getIdToken - Multiple matching ID tokens found, clearing them`),n.forEach((e,n)=>{this.removeIdToken(n,t)}),i&&t&&i.addFields({multiMatchedID:o.size},t),null}return this.commonLogger.info(`CacheManager:getIdToken - Returning ID token`),o.values().next().value}getIdTokensByFilter(e,t,n){let r=n&&n.idToken||this.getTokenKeys().idToken,i=new Map;return r.forEach(n=>{if(!this.idTokenKeyMatchesFilter(n,{clientId:this.clientId,...e}))return;let r=this.getIdTokenCredential(n,t);r&&this.credentialMatchesFilter(r,e)&&i.set(n,r)}),i}idTokenKeyMatchesFilter(e,t){let n=e.toLowerCase();return!(t.clientId&&n.indexOf(t.clientId.toLowerCase())===-1||t.homeAccountId&&n.indexOf(t.homeAccountId.toLowerCase())===-1)}removeIdToken(e,t){this.removeItem(e,t)}removeRefreshToken(e,t){this.removeItem(e,t)}getAccessToken(e,t,n,r){let i=t.correlationId;this.commonLogger.trace(`CacheManager - getAccessToken called`,i);let a=Ct.createSearchScopes(t.scopes),o=t.authenticationScheme||A.BEARER,s=o.toLowerCase()===A.BEARER.toLowerCase()?T.ACCESS_TOKEN:T.ACCESS_TOKEN_WITH_AUTH_SCHEME,c={homeAccountId:e.homeAccountId,environment:e.environment,credentialType:s,clientId:this.clientId,realm:r||e.tenantId,target:a,tokenType:o,keyId:t.sshKid,requestedClaimsHash:t.requestedClaimsHash},l=n&&n.accessToken||this.getTokenKeys().accessToken,u=[];l.forEach(e=>{if(this.accessTokenKeyMatchesFilter(e,c,!0)){let t=this.getAccessTokenCredential(e,i);t&&this.credentialMatchesFilter(t,c)&&u.push(t)}});let d=u.length;return d<1?(this.commonLogger.info(`CacheManager:getAccessToken - No token found`,i),null):d>1?(this.commonLogger.info(`CacheManager:getAccessToken - Multiple access tokens found, clearing them`,i),u.forEach(e=>{this.removeAccessToken(this.generateCredentialKey(e),i)}),this.performanceClient.addFields({multiMatchedAT:u.length},i),null):(this.commonLogger.info(`CacheManager:getAccessToken - Returning access token`,i),u[0])}accessTokenKeyMatchesFilter(e,t,n){let r=e.toLowerCase();if(t.clientId&&r.indexOf(t.clientId.toLowerCase())===-1||t.homeAccountId&&r.indexOf(t.homeAccountId.toLowerCase())===-1||t.realm&&r.indexOf(t.realm.toLowerCase())===-1||t.requestedClaimsHash&&r.indexOf(t.requestedClaimsHash.toLowerCase())===-1)return!1;if(t.target){let e=t.target.asArray();for(let t=0;t{if(!this.accessTokenKeyMatchesFilter(n,e,!0))return;let i=this.getAccessTokenCredential(n,t);i&&this.credentialMatchesFilter(i,e)&&r.push(i)}),r}getRefreshToken(e,t,n,r,i){this.commonLogger.trace(`CacheManager - getRefreshToken called`);let a=t?`1`:void 0,o={homeAccountId:e.homeAccountId,environment:e.environment,credentialType:T.REFRESH_TOKEN,clientId:this.clientId,familyId:a},s=r&&r.refreshToken||this.getTokenKeys().refreshToken,c=[];s.forEach(e=>{if(this.refreshTokenKeyMatchesFilter(e,o)){let t=this.getRefreshTokenCredential(e,n);t&&this.credentialMatchesFilter(t,o)&&c.push(t)}});let l=c.length;return l<1?(this.commonLogger.info(`CacheManager:getRefreshToken - No refresh token found.`),null):(l>1&&i&&n&&i.addFields({multiMatchedRT:l},n),this.commonLogger.info(`CacheManager:getRefreshToken - returning refresh token`),c[0])}refreshTokenKeyMatchesFilter(e,t){let n=e.toLowerCase();return!(t.familyId&&n.indexOf(t.familyId.toLowerCase())===-1||!t.familyId&&t.clientId&&n.indexOf(t.clientId.toLowerCase())===-1||t.homeAccountId&&n.indexOf(t.homeAccountId.toLowerCase())===-1)}readAppMetadataFromCache(e){let t={environment:e,clientId:this.clientId},n=this.getAppMetadataFilteredBy(t),r=Object.keys(n).map(e=>n[e]),i=r.length;if(i<1)return null;if(i>1)throw X(he);return r[0]}isAppMetadataFOCI(e){let t=this.readAppMetadataFromCache(e);return!!(t&&t.familyId===`1`)}matchHomeAccountId(e,t){return typeof e.homeAccountId==`string`&&t===e.homeAccountId}matchLocalAccountIdFromTokenClaims(e,t){return t===(e.oid||e.sub)}matchLocalAccountIdFromTenantProfile(e,t){return e.localAccountId===t}matchName(e,t){return t.toLowerCase()===e.name?.toLowerCase()}matchUsername(e,t){return!!(e&&typeof e==`string`&&t?.toLowerCase()===e.toLowerCase())}matchUserAssertionHash(e,t){return!!(e.userAssertionHash&&t===e.userAssertionHash)}matchEnvironment(e,t){if(this.staticAuthorityOptions){let n=Wt(this.staticAuthorityOptions,this.commonLogger);if(n.includes(t)&&n.includes(e.environment))return!0}let n=this.getAuthorityMetadataByAlias(t);return!!(n&&n.aliases.indexOf(e.environment)>-1)}matchCredentialType(e,t){return e.credentialType&&t.toLowerCase()===e.credentialType.toLowerCase()}matchClientId(e,t){return!!(e.clientId&&t===e.clientId)}matchFamilyId(e,t){return!!(e.familyId&&t===e.familyId)}matchRealm(e,t){return e.realm?.toLowerCase()===t.toLowerCase()}matchNativeAccountId(e,t){return!!(e.nativeAccountId&&t===e.nativeAccountId)}matchLoginHintFromTokenClaims(e,t){return e.login_hint===t||e.preferred_username===t||e.upn===t}matchSid(e,t){return e.sid===t}matchAuthorityType(e,t){return!!(e.authorityType&&t.toLowerCase()===e.authorityType.toLowerCase())}matchTarget(e,t){return e.credentialType!==T.ACCESS_TOKEN&&e.credentialType!==T.ACCESS_TOKEN_WITH_AUTH_SCHEME||!e.target?!1:Ct.fromString(e.target).containsScopeSet(t)}matchTokenType(e,t){return!!(e.tokenType&&e.tokenType===t)}matchKeyId(e,t){return!!(e.keyId&&e.keyId===t)}isAppMetadata(e){return e.indexOf(E)!==-1}isAuthorityMetadata(e){return e.indexOf(D.CACHE_KEY)!==-1}generateAuthorityMetadataCacheKey(e){return`${D.CACHE_KEY}-${this.clientId}-${e}`}static toObject(e,t){for(let n in t)e[n]=t[n];return e}},en=class extends $t{async setAccount(){throw X(ze)}getAccount(){throw X(ze)}async setIdTokenCredential(){throw X(ze)}getIdTokenCredential(){throw X(ze)}async setAccessTokenCredential(){throw X(ze)}getAccessTokenCredential(){throw X(ze)}async setRefreshTokenCredential(){throw X(ze)}getRefreshTokenCredential(){throw X(ze)}setAppMetadata(){throw X(ze)}getAppMetadata(){throw X(ze)}setServerTelemetry(){throw X(ze)}getServerTelemetry(){throw X(ze)}setAuthorityMetadata(){throw X(ze)}getAuthorityMetadata(){throw X(ze)}getAuthorityMetadataKeys(){throw X(ze)}setThrottlingCache(){throw X(ze)}getThrottlingCache(){throw X(ze)}removeItem(){throw X(ze)}getKeys(){throw X(ze)}getAccountKeys(){throw X(ze)}getTokenKeys(){throw X(ze)}generateCredentialKey(){throw X(ze)}generateAccountKey(){throw X(ze)}}; +/*! @azure/msal-common v15.13.2 2025-11-19 */ +let $={AcquireTokenByCode:`acquireTokenByCode`,AcquireTokenByRefreshToken:`acquireTokenByRefreshToken`,AcquireTokenSilent:`acquireTokenSilent`,AcquireTokenSilentAsync:`acquireTokenSilentAsync`,AcquireTokenPopup:`acquireTokenPopup`,AcquireTokenPreRedirect:`acquireTokenPreRedirect`,AcquireTokenRedirect:`acquireTokenRedirect`,CryptoOptsGetPublicKeyThumbprint:`cryptoOptsGetPublicKeyThumbprint`,CryptoOptsSignJwt:`cryptoOptsSignJwt`,SilentCacheClientAcquireToken:`silentCacheClientAcquireToken`,SilentIframeClientAcquireToken:`silentIframeClientAcquireToken`,AwaitConcurrentIframe:`awaitConcurrentIframe`,SilentRefreshClientAcquireToken:`silentRefreshClientAcquireToken`,SsoSilent:`ssoSilent`,StandardInteractionClientGetDiscoveredAuthority:`standardInteractionClientGetDiscoveredAuthority`,FetchAccountIdWithNativeBroker:`fetchAccountIdWithNativeBroker`,NativeInteractionClientAcquireToken:`nativeInteractionClientAcquireToken`,BaseClientCreateTokenRequestHeaders:`baseClientCreateTokenRequestHeaders`,NetworkClientSendPostRequestAsync:`networkClientSendPostRequestAsync`,RefreshTokenClientExecutePostToTokenEndpoint:`refreshTokenClientExecutePostToTokenEndpoint`,AuthorizationCodeClientExecutePostToTokenEndpoint:`authorizationCodeClientExecutePostToTokenEndpoint`,BrokerHandhshake:`brokerHandshake`,AcquireTokenByRefreshTokenInBroker:`acquireTokenByRefreshTokenInBroker`,AcquireTokenByBroker:`acquireTokenByBroker`,RefreshTokenClientExecuteTokenRequest:`refreshTokenClientExecuteTokenRequest`,RefreshTokenClientAcquireToken:`refreshTokenClientAcquireToken`,RefreshTokenClientAcquireTokenWithCachedRefreshToken:`refreshTokenClientAcquireTokenWithCachedRefreshToken`,RefreshTokenClientAcquireTokenByRefreshToken:`refreshTokenClientAcquireTokenByRefreshToken`,RefreshTokenClientCreateTokenRequestBody:`refreshTokenClientCreateTokenRequestBody`,AcquireTokenFromCache:`acquireTokenFromCache`,SilentFlowClientAcquireCachedToken:`silentFlowClientAcquireCachedToken`,SilentFlowClientGenerateResultFromCacheRecord:`silentFlowClientGenerateResultFromCacheRecord`,AcquireTokenBySilentIframe:`acquireTokenBySilentIframe`,InitializeBaseRequest:`initializeBaseRequest`,InitializeSilentRequest:`initializeSilentRequest`,InitializeClientApplication:`initializeClientApplication`,InitializeCache:`initializeCache`,SilentIframeClientTokenHelper:`silentIframeClientTokenHelper`,SilentHandlerInitiateAuthRequest:`silentHandlerInitiateAuthRequest`,SilentHandlerMonitorIframeForHash:`silentHandlerMonitorIframeForHash`,SilentHandlerLoadFrame:`silentHandlerLoadFrame`,SilentHandlerLoadFrameSync:`silentHandlerLoadFrameSync`,StandardInteractionClientCreateAuthCodeClient:`standardInteractionClientCreateAuthCodeClient`,StandardInteractionClientGetClientConfiguration:`standardInteractionClientGetClientConfiguration`,StandardInteractionClientInitializeAuthorizationRequest:`standardInteractionClientInitializeAuthorizationRequest`,GetAuthCodeUrl:`getAuthCodeUrl`,GetStandardParams:`getStandardParams`,HandleCodeResponseFromServer:`handleCodeResponseFromServer`,HandleCodeResponse:`handleCodeResponse`,HandleResponseEar:`handleResponseEar`,HandleResponsePlatformBroker:`handleResponsePlatformBroker`,HandleResponseCode:`handleResponseCode`,UpdateTokenEndpointAuthority:`updateTokenEndpointAuthority`,AuthClientAcquireToken:`authClientAcquireToken`,AuthClientExecuteTokenRequest:`authClientExecuteTokenRequest`,AuthClientCreateTokenRequestBody:`authClientCreateTokenRequestBody`,PopTokenGenerateCnf:`popTokenGenerateCnf`,PopTokenGenerateKid:`popTokenGenerateKid`,HandleServerTokenResponse:`handleServerTokenResponse`,DeserializeResponse:`deserializeResponse`,AuthorityFactoryCreateDiscoveredInstance:`authorityFactoryCreateDiscoveredInstance`,AuthorityResolveEndpointsAsync:`authorityResolveEndpointsAsync`,AuthorityResolveEndpointsFromLocalSources:`authorityResolveEndpointsFromLocalSources`,AuthorityGetCloudDiscoveryMetadataFromNetwork:`authorityGetCloudDiscoveryMetadataFromNetwork`,AuthorityUpdateCloudDiscoveryMetadata:`authorityUpdateCloudDiscoveryMetadata`,AuthorityGetEndpointMetadataFromNetwork:`authorityGetEndpointMetadataFromNetwork`,AuthorityUpdateEndpointMetadata:`authorityUpdateEndpointMetadata`,AuthorityUpdateMetadataWithRegionalInformation:`authorityUpdateMetadataWithRegionalInformation`,RegionDiscoveryDetectRegion:`regionDiscoveryDetectRegion`,RegionDiscoveryGetRegionFromIMDS:`regionDiscoveryGetRegionFromIMDS`,RegionDiscoveryGetCurrentVersion:`regionDiscoveryGetCurrentVersion`,AcquireTokenByCodeAsync:`acquireTokenByCodeAsync`,GetEndpointMetadataFromNetwork:`getEndpointMetadataFromNetwork`,GetCloudDiscoveryMetadataFromNetworkMeasurement:`getCloudDiscoveryMetadataFromNetworkMeasurement`,HandleRedirectPromiseMeasurement:`handleRedirectPromise`,HandleNativeRedirectPromiseMeasurement:`handleNativeRedirectPromise`,UpdateCloudDiscoveryMetadataMeasurement:`updateCloudDiscoveryMetadataMeasurement`,UsernamePasswordClientAcquireToken:`usernamePasswordClientAcquireToken`,NativeMessageHandlerHandshake:`nativeMessageHandlerHandshake`,NativeGenerateAuthResult:`nativeGenerateAuthResult`,RemoveHiddenIframe:`removeHiddenIframe`,ClearTokensAndKeysWithClaims:`clearTokensAndKeysWithClaims`,CacheManagerGetRefreshToken:`cacheManagerGetRefreshToken`,ImportExistingCache:`importExistingCache`,SetUserData:`setUserData`,LocalStorageUpdated:`localStorageUpdated`,GeneratePkceCodes:`generatePkceCodes`,GenerateCodeVerifier:`generateCodeVerifier`,GenerateCodeChallengeFromVerifier:`generateCodeChallengeFromVerifier`,Sha256Digest:`sha256Digest`,GetRandomValues:`getRandomValues`,GenerateHKDF:`generateHKDF`,GenerateBaseKey:`generateBaseKey`,Base64Decode:`base64Decode`,UrlEncodeArr:`urlEncodeArr`,Encrypt:`encrypt`,Decrypt:`decrypt`,GenerateEarKey:`generateEarKey`,DecryptEarResponse:`decryptEarResponse`},tn={InProgress:1}; +/*! @azure/msal-common v15.13.2 2025-11-19 */ +var nn=class{startMeasurement(){}endMeasurement(){}flushMeasurement(){return null}},rn=class{generateId(){return`callback-id`}startMeasurement(e,t){return{end:()=>null,discard:()=>{},add:()=>{},increment:()=>{},event:{eventId:this.generateId(),status:tn.InProgress,authority:``,libraryName:``,libraryVersion:``,clientId:``,name:e,startTimeMs:Date.now(),correlationId:t||``},measurement:new nn}}startPerformanceMeasurement(){return new nn}calculateQueuedTime(){return 0}addQueueMeasurement(){}setPreQueueTime(){}endMeasurement(){return null}discardMeasurements(){}removePerformanceCallback(){return!0}addPerformanceCallback(){return``}emitEvents(){}addFields(){}incrementFields(){}cacheEventByCorrelationId(){}}; +/*! @azure/msal-common v15.13.2 2025-11-19 */ +let an={tokenRenewalOffsetSeconds:300,preventCorsPreflight:!1},on={loggerCallback:()=>{},piiLoggingEnabled:!1,logLevel:e.LogLevel.Info,correlationId:u.EMPTY_STRING},sn={claimsBasedCachingEnabled:!1},cn={async sendGetRequestAsync(){throw X(ze)},async sendPostRequestAsync(){throw X(ze)}},ln={sku:u.SKU,version:qe,cpu:u.EMPTY_STRING,os:u.EMPTY_STRING},un={clientSecret:u.EMPTY_STRING,clientAssertion:void 0},dn={azureCloudInstance:Je.None,tenant:`${u.DEFAULT_COMMON_TENANT}`},fn={application:{appName:``,appVersion:``}};function pn({authOptions:e,systemOptions:t,loggerOptions:n,cacheOptions:r,storageInterface:i,networkInterface:a,cryptoInterface:o,clientCredentials:s,libraryInfo:c,telemetry:l,serverTelemetryManager:u,persistencePlugin:d,serializableCache:f}){let p={...on,...n};return{authOptions:mn(e),systemOptions:{...an,...t},loggerOptions:p,cacheOptions:{...sn,...r},storageInterface:i||new en(e.clientId,We,new Ge(p),new rn),networkInterface:a||cn,cryptoInterface:o||We,clientCredentials:s||un,libraryInfo:{...ln,...c},telemetry:{...fn,...l},serverTelemetryManager:u||null,persistencePlugin:d||null,serializableCache:f||null}}function mn(e){return{clientCapabilities:[],azureCloudOptions:dn,skipAuthorityMetadataCache:!1,instanceAware:!1,encodeExtraQueryParams:!1,...e}}function hn(e){return e.authOptions.authority.options.protocolMode===jt.OIDC} +/*! @azure/msal-common v15.13.2 2025-11-19 */ +let gn={HOME_ACCOUNT_ID:`home_account_id`,UPN:`UPN`},_n=`client_id`,vn=`redirect_uri`,yn=`token_type`,bn=`req_cnf`,xn=`return_spa_code`,Sn=`x-client-xtra-sku`,Cn=`brk_client_id`,wn=`brk_redirect_uri`,Tn=`instance_aware`; +/*! @azure/msal-common v15.13.2 2025-11-19 */ +function En(e,t,n){if(!t)return;let r=e.get(_n);r&&e.has(Cn)&&n?.addFields({embeddedClientId:r,embeddedRedirectUri:e.get(vn)},t)}function Dn(e,t){e.set(`response_type`,t)}function On(e,t){e.set(`response_mode`,t||x.QUERY)}function kn(e,t,n=!0,r=p){n&&!r.includes(`openid`)&&!t.includes(`openid`)&&r.push(`openid`);let i=new Ct(n?[...t||[],...r]:t||[]);e.set(`scope`,i.printScopes())}function An(e,t){e.set(_n,t)}function jn(e,t){e.set(vn,t)}function Mn(e,t){e.set(`post_logout_redirect_uri`,t)}function Nn(e,t){e.set(`id_token_hint`,t)}function Pn(e,t){e.set(`domain_hint`,t)}function Fn(e,t){e.set(`login_hint`,t)}function In(e,t){e.set(h.CCS_HEADER,`UPN:${t}`)}function Ln(e,t){e.set(h.CCS_HEADER,`Oid:${t.uid}@${t.utid}`)}function Rn(e,t){e.set(`sid`,t)}function zn(e,t,n){let r=or(t,n);try{JSON.parse(r)}catch{throw xt(tt)}e.set(`claims`,r)}function Bn(e,t){e.set(`client-request-id`,t)}function Vn(e,t){e.set(`x-client-SKU`,t.sku),e.set(`x-client-VER`,t.version),t.os&&e.set(`x-client-OS`,t.os),t.cpu&&e.set(`x-client-CPU`,t.cpu)}function Hn(e,t){t?.appName&&e.set(`x-app-name`,t.appName),t?.appVersion&&e.set(`x-app-ver`,t.appVersion)}function Un(e,t){e.set(`prompt`,t)}function Wn(e,t){t&&e.set(`state`,t)}function Gn(e,t){e.set(`nonce`,t)}function Kn(e,t,n){if(t&&n)e.set(`code_challenge`,t),e.set(`code_challenge_method`,n);else throw xt(it)}function qn(e,t){e.set(`code`,t)}function Jn(e,t){e.set(`device_code`,t)}function Yn(e,t){e.set(`refresh_token`,t)}function Xn(e,t){e.set(`code_verifier`,t)}function Zn(e,t){e.set(`client_secret`,t)}function Qn(e,t){t&&e.set(`client_assertion`,t)}function $n(e,t){t&&e.set(`client_assertion_type`,t)}function er(e,t){e.set(`assertion`,t)}function tr(e,t){e.set(`requested_token_use`,t)}function nr(e,t){e.set(`grant_type`,t)}function rr(e){e.set(`client_info`,`1`)}function ir(e){e.has(Tn)||e.set(Tn,`true`)}function ar(e,t){Object.entries(t).forEach(([t,n])=>{!e.has(t)&&n&&e.set(t,n)})}function or(e,t){let n;if(!e)n={};else try{n=JSON.parse(e)}catch{throw xt(tt)}return t&&t.length>0&&(n.hasOwnProperty(_.ACCESS_TOKEN)||(n[_.ACCESS_TOKEN]={}),n[_.ACCESS_TOKEN][_.XMS_CC]={values:t}),JSON.stringify(n)}function sr(e,t){e.set(N.username,t)}function cr(e,t){e.set(N.password,t)}function lr(e,t){t&&(e.set(yn,A.POP),e.set(bn,t))}function ur(e,t){t&&(e.set(yn,A.SSH),e.set(bn,t))}function dr(e,t){e.set(`x-client-current-telemetry`,t.generateCurrentRequestHeaderValue()),e.set(`x-client-last-telemetry`,t.generateLastRequestHeaderValue())}function fr(e){e.set(`x-ms-lib-capability`,j.X_MS_LIB_CAPABILITY_VALUE)}function pr(e,t){e.set(`logout_hint`,t)}function mr(e,t,n){e.has(Cn)||e.set(Cn,t),e.has(wn)||e.set(wn,n)} +/*! @azure/msal-common v15.13.2 2025-11-19 */ +function hr(e){return e.hasOwnProperty(`authorization_endpoint`)&&e.hasOwnProperty(`token_endpoint`)&&e.hasOwnProperty(`issuer`)&&e.hasOwnProperty(`jwks_uri`)} +/*! @azure/msal-common v15.13.2 2025-11-19 */ +function gr(e){return e.hasOwnProperty(`tenant_discovery_endpoint`)&&e.hasOwnProperty(`metadata`)} +/*! @azure/msal-common v15.13.2 2025-11-19 */ +function _r(e){return e.hasOwnProperty(`error`)&&e.hasOwnProperty(`error_description`)} +/*! @azure/msal-common v15.13.2 2025-11-19 */ +let vr=(e,t,n,r,i)=>(...a)=>{n.trace(`Executing function ${t}`);let o=r?.startMeasurement(t,i);if(i){let e=t+`CallCount`;r?.incrementFields({[e]:1},i)}try{let r=e(...a);return o?.end({success:!0}),n.trace(`Returning result from ${t}`),r}catch(e){n.trace(`Error occurred in ${t}`);try{n.trace(JSON.stringify(e))}catch{n.trace(`Unable to print error message.`)}throw o?.end({success:!1},e),e}},yr=(e,t,n,r,i)=>(...a)=>{n.trace(`Executing function ${t}`);let o=r?.startMeasurement(t,i);if(i){let e=t+`CallCount`;r?.incrementFields({[e]:1},i)}return r?.setPreQueueTime(t,i),e(...a).then(e=>(n.trace(`Returning result from ${t}`),o?.end({success:!0}),e)).catch(e=>{n.trace(`Error occurred in ${t}`);try{n.trace(JSON.stringify(e))}catch{n.trace(`Unable to print error message.`)}throw o?.end({success:!1},e),e})}; +/*! @azure/msal-common v15.13.2 2025-11-19 */ +var br=class e{constructor(e,t,n,r){this.networkInterface=e,this.logger=t,this.performanceClient=n,this.correlationId=r}async detectRegion(t,n){this.performanceClient?.addQueueMeasurement($.RegionDiscoveryDetectRegion,this.correlationId);let r=t;if(r)n.region_source=ee.ENVIRONMENT_VARIABLE;else{let t=e.IMDS_OPTIONS;try{let e=await yr(this.getRegionFromIMDS.bind(this),$.RegionDiscoveryGetRegionFromIMDS,this.logger,this.performanceClient,this.correlationId)(u.IMDS_VERSION,t);if(e.status===f.SUCCESS&&(r=e.body,n.region_source=ee.IMDS),e.status===f.BAD_REQUEST){let e=await yr(this.getCurrentVersion.bind(this),$.RegionDiscoveryGetCurrentVersion,this.logger,this.performanceClient,this.correlationId)(t);if(!e)return n.region_source=ee.FAILED_AUTO_DETECTION,null;let i=await yr(this.getRegionFromIMDS.bind(this),$.RegionDiscoveryGetRegionFromIMDS,this.logger,this.performanceClient,this.correlationId)(e,t);i.status===f.SUCCESS&&(r=i.body,n.region_source=ee.IMDS)}}catch{return n.region_source=ee.FAILED_AUTO_DETECTION,null}}return r||(n.region_source=ee.FAILED_AUTO_DETECTION),r||null}async getRegionFromIMDS(e,t){return this.performanceClient?.addQueueMeasurement($.RegionDiscoveryGetRegionFromIMDS,this.correlationId),this.networkInterface.sendGetRequestAsync(`${u.IMDS_ENDPOINT}?api-version=${e}&format=text`,t,u.IMDS_TIMEOUT)}async getCurrentVersion(e){this.performanceClient?.addQueueMeasurement($.RegionDiscoveryGetCurrentVersion,this.correlationId);try{let t=await this.networkInterface.sendGetRequestAsync(`${u.IMDS_ENDPOINT}?format=json`,e);return t.status===f.BAD_REQUEST&&t.body&&t.body[`newest-versions`]&&t.body[`newest-versions`].length>0?t.body[`newest-versions`][0]:null}catch{return null}}};br.IMDS_OPTIONS={headers:{Metadata:`true`}}; +/*! @azure/msal-common v15.13.2 2025-11-19 */ +function xr(){return Math.round(new Date().getTime()/1e3)}function Sr(e){return e?new Date(Number(e)*1e3):new Date}function Cr(e,t){let n=Number(e)||0;return xr()+t>n}function wr(e){return Number(e)>xr()}function Tr(e,t){return new Promise(n=>setTimeout(()=>n(t),e))} +/*! @azure/msal-common v15.13.2 2025-11-19 */ +function Er(e,t,n,r,i){return{credentialType:T.ID_TOKEN,homeAccountId:e,environment:t,clientId:r,secret:n,realm:i,lastUpdatedAt:Date.now().toString()}}function Dr(e,t,n,r,i,a,o,s,c,l,u,d,f,p,m){let h={homeAccountId:e,credentialType:T.ACCESS_TOKEN,secret:n,cachedAt:xr().toString(),expiresOn:o.toString(),extendedExpiresOn:s.toString(),environment:t,clientId:r,realm:i,target:a,tokenType:u||A.BEARER,lastUpdatedAt:Date.now().toString()};if(d&&(h.userAssertionHash=d),l&&(h.refreshOn=l.toString()),p&&(h.requestedClaims=p,h.requestedClaimsHash=m),h.tokenType?.toLowerCase()!==A.BEARER.toLowerCase())switch(h.credentialType=T.ACCESS_TOKEN_WITH_AUTH_SCHEME,h.tokenType){case A.POP:let e=Nt(n,c);if(!e?.cnf?.kid)throw X(Ne);h.keyId=e.cnf.kid;break;case A.SSH:h.keyId=f}return h}function Or(e,t,n,r,i,a,o){let s={credentialType:T.REFRESH_TOKEN,homeAccountId:e,environment:t,clientId:r,secret:n,lastUpdatedAt:Date.now().toString()};return a&&(s.userAssertionHash=a),i&&(s.familyId=i),o&&(s.expiresOn=o.toString()),s}function kr(e){return e.hasOwnProperty(`homeAccountId`)&&e.hasOwnProperty(`environment`)&&e.hasOwnProperty(`credentialType`)&&e.hasOwnProperty(`clientId`)&&e.hasOwnProperty(`secret`)}function Ar(e){return e?kr(e)&&e.hasOwnProperty(`realm`)&&e.hasOwnProperty(`target`)&&(e.credentialType===T.ACCESS_TOKEN||e.credentialType===T.ACCESS_TOKEN_WITH_AUTH_SCHEME):!1}function jr(e){return e?kr(e)&&e.hasOwnProperty(`realm`)&&e.credentialType===T.ID_TOKEN:!1}function Mr(e){return e?kr(e)&&e.credentialType===T.REFRESH_TOKEN:!1}function Nr(e,t){let n=e.indexOf(k.CACHE_KEY)===0,r=!0;return t&&(r=t.hasOwnProperty(`failedRequests`)&&t.hasOwnProperty(`errors`)&&t.hasOwnProperty(`cacheHits`)),n&&r}function Pr(e,t){let n=!1;e&&(n=e.indexOf(j.THROTTLING_PREFIX)===0);let r=!0;return t&&(r=t.hasOwnProperty(`throttleTime`)),n&&r}function Fr({environment:e,clientId:t}){return[E,e,t].join(w.CACHE_KEY_SEPARATOR).toLowerCase()}function Ir(e,t){return t?e.indexOf(E)===0&&t.hasOwnProperty(`clientId`)&&t.hasOwnProperty(`environment`):!1}function Lr(e,t){return t?e.indexOf(D.CACHE_KEY)===0&&t.hasOwnProperty(`aliases`)&&t.hasOwnProperty(`preferred_cache`)&&t.hasOwnProperty(`preferred_network`)&&t.hasOwnProperty(`canonical_authority`)&&t.hasOwnProperty(`authorization_endpoint`)&&t.hasOwnProperty(`token_endpoint`)&&t.hasOwnProperty(`issuer`)&&t.hasOwnProperty(`aliasesFromNetwork`)&&t.hasOwnProperty(`endpointsFromNetwork`)&&t.hasOwnProperty(`expiresAt`)&&t.hasOwnProperty(`jwks_uri`):!1}function Rr(){return xr()+D.REFRESH_TIME_SECONDS}function zr(e,t,n){e.authorization_endpoint=t.authorization_endpoint,e.token_endpoint=t.token_endpoint,e.end_session_endpoint=t.end_session_endpoint,e.issuer=t.issuer,e.endpointsFromNetwork=n,e.jwks_uri=t.jwks_uri}function Br(e,t,n){e.aliases=t.aliases,e.preferred_cache=t.preferred_cache,e.preferred_network=t.preferred_network,e.aliasesFromNetwork=n}function Vr(e){return e.expiresAt<=xr()} +/*! @azure/msal-common v15.13.2 2025-11-19 */ +var Hr=class e{constructor(e,t,n,r,i,a,o,s){this.canonicalAuthority=e,this._canonicalAuthority.validateAsUri(),this.networkInterface=t,this.cacheManager=n,this.authorityOptions=r,this.regionDiscoveryMetadata={region_used:void 0,region_source:void 0,region_outcome:void 0},this.logger=i,this.performanceClient=o,this.correlationId=a,this.managedIdentity=s||!1,this.regionDiscovery=new br(t,this.logger,this.performanceClient,this.correlationId)}getAuthorityType(e){if(e.HostNameAndPort.endsWith(u.CIAM_AUTH_URL))return kt.Ciam;let t=e.PathSegments;if(t.length)switch(t[0].toLowerCase()){case u.ADFS:return kt.Adfs;case u.DSTS:return kt.Dsts}return kt.Default}get authorityType(){return this.getAuthorityType(this.canonicalAuthorityUrlComponents)}get protocolMode(){return this.authorityOptions.protocolMode}get options(){return this.authorityOptions}get canonicalAuthority(){return this._canonicalAuthority.urlString}set canonicalAuthority(e){this._canonicalAuthority=new zt(e),this._canonicalAuthority.validateAsUri(),this._canonicalAuthorityUrlComponents=null}get canonicalAuthorityUrlComponents(){return this._canonicalAuthorityUrlComponents||=this._canonicalAuthority.getUrlComponents(),this._canonicalAuthorityUrlComponents}get hostnameAndPort(){return this.canonicalAuthorityUrlComponents.HostNameAndPort.toLowerCase()}get tenant(){return this.canonicalAuthorityUrlComponents.PathSegments[0]}get authorizationEndpoint(){if(this.discoveryComplete())return this.replacePath(this.metadata.authorization_endpoint);throw X(W)}get tokenEndpoint(){if(this.discoveryComplete())return this.replacePath(this.metadata.token_endpoint);throw X(W)}get deviceCodeEndpoint(){if(this.discoveryComplete())return this.replacePath(this.metadata.token_endpoint.replace(`/token`,`/devicecode`));throw X(W)}get endSessionEndpoint(){if(this.discoveryComplete()){if(!this.metadata.end_session_endpoint)throw X(K);return this.replacePath(this.metadata.end_session_endpoint)}else throw X(W)}get selfSignedJwtAudience(){if(this.discoveryComplete())return this.replacePath(this.metadata.issuer);throw X(W)}get jwksUri(){if(this.discoveryComplete())return this.replacePath(this.metadata.jwks_uri);throw X(W)}canReplaceTenant(t){return t.PathSegments.length===1&&!e.reservedTenantDomains.has(t.PathSegments[0])&&this.getAuthorityType(t)===kt.Default&&this.protocolMode!==jt.OIDC}replaceTenant(e){return e.replace(/{tenant}|{tenantid}/g,this.tenant)}replacePath(e){let t=e,n=new zt(this.metadata.canonical_authority).getUrlComponents(),r=n.PathSegments;return this.canonicalAuthorityUrlComponents.PathSegments.forEach((e,i)=>{let a=r[i];if(i===0&&this.canReplaceTenant(n)){let e=new zt(this.metadata.authorization_endpoint).getUrlComponents().PathSegments[0];a!==e&&(this.logger.verbose(`Replacing tenant domain name ${a} with id ${e}`),a=e)}e!==a&&(t=t.replace(`/${a}/`,`/${e}/`))}),this.replaceTenant(t)}get defaultOpenIdConfigurationEndpoint(){let e=this.hostnameAndPort;return this.canonicalAuthority.endsWith(`v2.0/`)||this.authorityType===kt.Adfs||this.protocolMode===jt.OIDC&&!this.isAliasOfKnownMicrosoftAuthority(e)?`${this.canonicalAuthority}.well-known/openid-configuration`:`${this.canonicalAuthority}v2.0/.well-known/openid-configuration`}discoveryComplete(){return!!this.metadata}async resolveEndpointsAsync(){this.performanceClient?.addQueueMeasurement($.AuthorityResolveEndpointsAsync,this.correlationId);let e=this.getCurrentMetadataEntity(),t=await yr(this.updateCloudDiscoveryMetadata.bind(this),$.AuthorityUpdateCloudDiscoveryMetadata,this.logger,this.performanceClient,this.correlationId)(e);this.canonicalAuthority=this.canonicalAuthority.replace(this.hostnameAndPort,e.preferred_network);let n=await yr(this.updateEndpointMetadata.bind(this),$.AuthorityUpdateEndpointMetadata,this.logger,this.performanceClient,this.correlationId)(e);this.updateCachedMetadata(e,t,{source:n}),this.performanceClient?.addFields({cloudDiscoverySource:t,authorityEndpointSource:n},this.correlationId)}getCurrentMetadataEntity(){let e=this.cacheManager.getAuthorityMetadataByAlias(this.hostnameAndPort);return e||={aliases:[],preferred_cache:this.hostnameAndPort,preferred_network:this.hostnameAndPort,canonical_authority:this.canonicalAuthority,authorization_endpoint:``,token_endpoint:``,end_session_endpoint:``,issuer:``,aliasesFromNetwork:!1,endpointsFromNetwork:!1,expiresAt:Rr(),jwks_uri:``},e}updateCachedMetadata(e,t,n){t!==O.CACHE&&n?.source!==O.CACHE&&(e.expiresAt=Rr(),e.canonical_authority=this.canonicalAuthority);let r=this.cacheManager.generateAuthorityMetadataCacheKey(e.preferred_cache);this.cacheManager.setAuthorityMetadata(r,e),this.metadata=e}async updateEndpointMetadata(e){this.performanceClient?.addQueueMeasurement($.AuthorityUpdateEndpointMetadata,this.correlationId);let t=this.updateEndpointMetadataFromLocalSources(e);if(t)return t.source===O.HARDCODED_VALUES&&this.authorityOptions.azureRegionConfiguration?.azureRegion&&t.metadata&&(zr(e,await yr(this.updateMetadataWithRegionalInformation.bind(this),$.AuthorityUpdateMetadataWithRegionalInformation,this.logger,this.performanceClient,this.correlationId)(t.metadata),!1),e.canonical_authority=this.canonicalAuthority),t.source;let n=await yr(this.getEndpointMetadataFromNetwork.bind(this),$.AuthorityGetEndpointMetadataFromNetwork,this.logger,this.performanceClient,this.correlationId)();if(n)return this.authorityOptions.azureRegionConfiguration?.azureRegion&&(n=await yr(this.updateMetadataWithRegionalInformation.bind(this),$.AuthorityUpdateMetadataWithRegionalInformation,this.logger,this.performanceClient,this.correlationId)(n)),zr(e,n,!0),O.NETWORK;throw X(G,this.defaultOpenIdConfigurationEndpoint)}updateEndpointMetadataFromLocalSources(e){this.logger.verbose(`Attempting to get endpoint metadata from authority configuration`);let t=this.getEndpointMetadataFromConfig();if(t)return this.logger.verbose(`Found endpoint metadata in authority configuration`),zr(e,t,!1),{source:O.CONFIG};if(this.logger.verbose(`Did not find endpoint metadata in the config... Attempting to get endpoint metadata from the hardcoded values.`),this.authorityOptions.skipAuthorityMetadataCache)this.logger.verbose(`Skipping hardcoded metadata cache since skipAuthorityMetadataCache is set to true. Attempting to get endpoint metadata from the network metadata cache.`);else{let t=this.getEndpointMetadataFromHardcodedValues();if(t)return zr(e,t,!1),{source:O.HARDCODED_VALUES,metadata:t};this.logger.verbose(`Did not find endpoint metadata in hardcoded values... Attempting to get endpoint metadata from the network metadata cache.`)}let n=Vr(e);return this.isAuthoritySameType(e)&&e.endpointsFromNetwork&&!n?(this.logger.verbose(`Found endpoint metadata in the cache.`),{source:O.CACHE}):(n&&this.logger.verbose(`The metadata entity is expired.`),null)}isAuthoritySameType(e){return new zt(e.canonical_authority).getUrlComponents().PathSegments.length===this.canonicalAuthorityUrlComponents.PathSegments.length}getEndpointMetadataFromConfig(){if(this.authorityOptions.authorityMetadata)try{return JSON.parse(this.authorityOptions.authorityMetadata)}catch{throw xt(ot)}return null}async getEndpointMetadataFromNetwork(){this.performanceClient?.addQueueMeasurement($.AuthorityGetEndpointMetadataFromNetwork,this.correlationId);let e={},t=this.defaultOpenIdConfigurationEndpoint;this.logger.verbose(`Authority.getEndpointMetadataFromNetwork: attempting to retrieve OAuth endpoints from ${t}`);try{let n=await this.networkInterface.sendGetRequestAsync(t,e);return hr(n.body)?n.body:(this.logger.verbose(`Authority.getEndpointMetadataFromNetwork: could not parse response as OpenID configuration`),null)}catch(e){return this.logger.verbose(`Authority.getEndpointMetadataFromNetwork: ${e}`),null}}getEndpointMetadataFromHardcodedValues(){return this.hostnameAndPort in Vt?Vt[this.hostnameAndPort]:null}async updateMetadataWithRegionalInformation(t){this.performanceClient?.addQueueMeasurement($.AuthorityUpdateMetadataWithRegionalInformation,this.correlationId);let n=this.authorityOptions.azureRegionConfiguration?.azureRegion;if(n){if(n!==u.AZURE_REGION_AUTO_DISCOVER_FLAG)return this.regionDiscoveryMetadata.region_outcome=P.CONFIGURED_NO_AUTO_DETECTION,this.regionDiscoveryMetadata.region_used=n,e.replaceWithRegionalInformation(t,n);let r=await yr(this.regionDiscovery.detectRegion.bind(this.regionDiscovery),$.RegionDiscoveryDetectRegion,this.logger,this.performanceClient,this.correlationId)(this.authorityOptions.azureRegionConfiguration?.environmentRegion,this.regionDiscoveryMetadata);if(r)return this.regionDiscoveryMetadata.region_outcome=P.AUTO_DETECTION_REQUESTED_SUCCESSFUL,this.regionDiscoveryMetadata.region_used=r,e.replaceWithRegionalInformation(t,r);this.regionDiscoveryMetadata.region_outcome=P.AUTO_DETECTION_REQUESTED_FAILED}return t}async updateCloudDiscoveryMetadata(e){this.performanceClient?.addQueueMeasurement($.AuthorityUpdateCloudDiscoveryMetadata,this.correlationId);let t=this.updateCloudDiscoveryMetadataFromLocalSources(e);if(t)return t;let n=await yr(this.getCloudDiscoveryMetadataFromNetwork.bind(this),$.AuthorityGetCloudDiscoveryMetadataFromNetwork,this.logger,this.performanceClient,this.correlationId)();if(n)return Br(e,n,!0),O.NETWORK;throw xt(st)}updateCloudDiscoveryMetadataFromLocalSources(e){this.logger.verbose(`Attempting to get cloud discovery metadata from authority configuration`),this.logger.verbosePii(`Known Authorities: ${this.authorityOptions.knownAuthorities||u.NOT_APPLICABLE}`),this.logger.verbosePii(`Authority Metadata: ${this.authorityOptions.authorityMetadata||u.NOT_APPLICABLE}`),this.logger.verbosePii(`Canonical Authority: ${e.canonical_authority||u.NOT_APPLICABLE}`);let t=this.getCloudDiscoveryMetadataFromConfig();if(t)return this.logger.verbose(`Found cloud discovery metadata in authority configuration`),Br(e,t,!1),O.CONFIG;if(this.logger.verbose(`Did not find cloud discovery metadata in the config... Attempting to get cloud discovery metadata from the hardcoded values.`),this.options.skipAuthorityMetadataCache)this.logger.verbose(`Skipping hardcoded cloud discovery metadata cache since skipAuthorityMetadataCache is set to true. Attempting to get cloud discovery metadata from the network metadata cache.`);else{let t=Kt(this.hostnameAndPort);if(t)return this.logger.verbose(`Found cloud discovery metadata from hardcoded values.`),Br(e,t,!1),O.HARDCODED_VALUES;this.logger.verbose(`Did not find cloud discovery metadata in hardcoded values... Attempting to get cloud discovery metadata from the network metadata cache.`)}let n=Vr(e);return this.isAuthoritySameType(e)&&e.aliasesFromNetwork&&!n?(this.logger.verbose(`Found cloud discovery metadata in the cache.`),O.CACHE):(n&&this.logger.verbose(`The metadata entity is expired.`),null)}getCloudDiscoveryMetadataFromConfig(){if(this.authorityType===kt.Ciam)return this.logger.verbose(`CIAM authorities do not support cloud discovery metadata, generate the aliases from authority host.`),e.createCloudDiscoveryMetadataFromHost(this.hostnameAndPort);if(this.authorityOptions.cloudDiscoveryMetadata){this.logger.verbose(`The cloud discovery metadata has been provided as a network response, in the config.`);try{this.logger.verbose(`Attempting to parse the cloud discovery metadata.`);let e=qt(JSON.parse(this.authorityOptions.cloudDiscoveryMetadata).metadata,this.hostnameAndPort);if(this.logger.verbose(`Parsed the cloud discovery metadata.`),e)return this.logger.verbose(`There is returnable metadata attached to the parsed cloud discovery metadata.`),e;this.logger.verbose(`There is no metadata attached to the parsed cloud discovery metadata.`)}catch{throw this.logger.verbose(`Unable to parse the cloud discovery metadata. Throwing Invalid Cloud Discovery Metadata Error.`),xt(at)}}return this.isInKnownAuthorities()?(this.logger.verbose(`The host is included in knownAuthorities. Creating new cloud discovery metadata from the host.`),e.createCloudDiscoveryMetadataFromHost(this.hostnameAndPort)):null}async getCloudDiscoveryMetadataFromNetwork(){this.performanceClient?.addQueueMeasurement($.AuthorityGetCloudDiscoveryMetadataFromNetwork,this.correlationId);let t=`${u.AAD_INSTANCE_DISCOVERY_ENDPT}${this.canonicalAuthority}oauth2/v2.0/authorize`,n={},r=null;try{let e=await this.networkInterface.sendGetRequestAsync(t,n),i,a;if(gr(e.body))i=e.body,a=i.metadata,this.logger.verbosePii(`tenant_discovery_endpoint is: ${i.tenant_discovery_endpoint}`);else if(_r(e.body)){if(this.logger.warning(`A CloudInstanceDiscoveryErrorResponse was returned. The cloud instance discovery network request's status code is: ${e.status}`),i=e.body,i.error===u.INVALID_INSTANCE)return this.logger.error(`The CloudInstanceDiscoveryErrorResponse error is invalid_instance.`),null;this.logger.warning(`The CloudInstanceDiscoveryErrorResponse error is ${i.error}`),this.logger.warning(`The CloudInstanceDiscoveryErrorResponse error description is ${i.error_description}`),this.logger.warning(`Setting the value of the CloudInstanceDiscoveryMetadata (returned from the network) to []`),a=[]}else return this.logger.error(`AAD did not return a CloudInstanceDiscoveryResponse or CloudInstanceDiscoveryErrorResponse`),null;this.logger.verbose(`Attempting to find a match between the developer's authority and the CloudInstanceDiscoveryMetadata returned from the network request.`),r=qt(a,this.hostnameAndPort)}catch(e){if(e instanceof V)this.logger.error(`There was a network error while attempting to get the cloud discovery instance metadata.\nError: ${e.errorCode}\nError Description: ${e.errorMessage}`);else{let t=e;this.logger.error(`A non-MSALJS error was thrown while attempting to get the cloud instance discovery metadata.\nError: ${t.name}\nError Description: ${t.message}`)}return null}return r||=(this.logger.warning(`The developer's authority was not found within the CloudInstanceDiscoveryMetadata returned from the network request.`),this.logger.verbose(`Creating custom Authority for custom domain scenario.`),e.createCloudDiscoveryMetadataFromHost(this.hostnameAndPort)),r}isInKnownAuthorities(){return this.authorityOptions.knownAuthorities.filter(e=>e&&zt.getDomainFromUrl(e).toLowerCase()===this.hostnameAndPort).length>0}static generateAuthority(e,t){let n;if(t&&t.azureCloudInstance!==Je.None){let e=t.tenant?t.tenant:u.DEFAULT_COMMON_TENANT;n=`${t.azureCloudInstance}/${e}/`}return n||e}static createCloudDiscoveryMetadataFromHost(e){return{preferred_network:e,preferred_cache:e,aliases:[e]}}getPreferredCache(){if(this.managedIdentity)return u.DEFAULT_AUTHORITY_HOST;if(this.discoveryComplete())return this.metadata.preferred_cache;throw X(W)}isAlias(e){return this.metadata.aliases.indexOf(e)>-1}isAliasOfKnownMicrosoftAuthority(e){return Ut.has(e)}static isPublicCloudAuthority(e){return u.KNOWN_PUBLIC_CLOUDS.indexOf(e)>=0}static buildRegionalAuthorityString(e,t,n){let r=new zt(e);r.validateAsUri();let i=r.getUrlComponents(),a=`${t}.${i.HostNameAndPort}`;this.isPublicCloudAuthority(i.HostNameAndPort)&&(a=`${t}.${u.REGIONAL_AUTH_PUBLIC_CLOUD_SUFFIX}`);let o=zt.constructAuthorityUriFromObject({...r.getUrlComponents(),HostNameAndPort:a}).urlString;return n?`${o}?${n}`:o}static replaceWithRegionalInformation(t,n){let r={...t};return r.authorization_endpoint=e.buildRegionalAuthorityString(r.authorization_endpoint,n),r.token_endpoint=e.buildRegionalAuthorityString(r.token_endpoint,n),r.end_session_endpoint&&=e.buildRegionalAuthorityString(r.end_session_endpoint,n),r}static transformCIAMAuthority(e){let t=e,n=new zt(e).getUrlComponents();if(n.PathSegments.length===0&&n.HostNameAndPort.endsWith(u.CIAM_AUTH_URL)){let e=n.HostNameAndPort.split(`.`)[0];t=`${t}${e}${u.AAD_TENANT_DOMAIN_SUFFIX}`}return t}};Hr.reservedTenantDomains=new Set([`{tenant}`,`{tenantid}`,g.COMMON,g.CONSUMERS,g.ORGANIZATIONS]);function Ur(e){let t=new zt(e).getUrlComponents().PathSegments.slice(-1)[0]?.toLowerCase();switch(t){case g.COMMON:case g.ORGANIZATIONS:case g.CONSUMERS:return;default:return t}}function Wr(e){return e.endsWith(u.FORWARD_SLASH)?e:`${e}${u.FORWARD_SLASH}`}function Gr(e){let t=e.cloudDiscoveryMetadata,n;if(t)try{n=JSON.parse(t)}catch{throw xt(at)}return{canonicalAuthority:e.authority?Wr(e.authority):void 0,knownAuthorities:e.knownAuthorities,cloudDiscoveryMetadata:n}} +/*! @azure/msal-common v15.13.2 2025-11-19 */ +async function Kr(e,t,n,r,i,a,o){o?.addQueueMeasurement($.AuthorityFactoryCreateDiscoveredInstance,a);let s=new Hr(Hr.transformCIAMAuthority(Wr(e)),t,n,r,i,a,o);try{return await yr(s.resolveEndpointsAsync.bind(s),$.AuthorityResolveEndpointsAsync,i,o,a)(),s}catch{throw X(W)}} +/*! @azure/msal-common v15.13.2 2025-11-19 */ +var qr=class e extends V{constructor(t,n,r,i,a){super(t,n,r),this.name=`ServerError`,this.errorNo=i,this.status=a,Object.setPrototypeOf(this,e.prototype)}}; +/*! @azure/msal-common v15.13.2 2025-11-19 */ +function Jr(e,t,n){return{clientId:e,authority:t.authority,scopes:t.scopes,homeAccountIdentifier:n,claims:t.claims,authenticationScheme:t.authenticationScheme,resourceRequestMethod:t.resourceRequestMethod,resourceRequestUri:t.resourceRequestUri,shrClaims:t.shrClaims,sshKid:t.sshKid,embeddedClientId:t.embeddedClientId||t.tokenBodyParameters?.clientId}} +/*! @azure/msal-common v15.13.2 2025-11-19 */ +var Yr=class e{static generateThrottlingStorageKey(e){return`${j.THROTTLING_PREFIX}.${JSON.stringify(e)}`}static preProcess(t,n,r){let i=e.generateThrottlingStorageKey(n),a=t.getThrottlingCache(i);if(a){if(a.throttleTime=500&&e.status<600}static checkResponseForRetryAfter(e){return e.headers?e.headers.hasOwnProperty(h.RETRY_AFTER)&&(e.status<200||e.status>=300):!1}static calculateThrottleTime(e){let t=e<=0?0:e,n=Date.now()/1e3;return Math.floor(Math.min(n+(t||j.DEFAULT_THROTTLE_TIME_SECONDS),n+j.DEFAULT_MAX_THROTTLE_TIME_SECONDS)*1e3)}static removeThrottle(e,t,n,r){let i=Jr(t,n,r),a=this.generateThrottlingStorageKey(i);e.removeItem(a,n.correlationId)}},Xr=class e extends V{constructor(t,n,r){super(t.errorCode,t.errorMessage,t.subError),Object.setPrototypeOf(this,e.prototype),this.name=`NetworkError`,this.error=t,this.httpStatus=n,this.responseHeaders=r}},Zr=class{constructor(e,t){this.config=pn(e),this.logger=new Ge(this.config.loggerOptions,Ke,qe),this.cryptoUtils=this.config.cryptoInterface,this.cacheManager=this.config.storageInterface,this.networkClient=this.config.networkInterface,this.serverTelemetryManager=this.config.serverTelemetryManager,this.authority=this.config.authOptions.authority,this.performanceClient=t}createTokenRequestHeaders(e){let t={};if(t[h.CONTENT_TYPE]=u.URL_FORM_CONTENT_TYPE,!this.config.systemOptions.preventCorsPreflight&&e)switch(e.type){case gn.HOME_ACCOUNT_ID:try{let n=Tt(e.credential);t[h.CCS_HEADER]=`Oid:${n.uid}@${n.utid}`}catch(e){this.logger.verbose(`Could not parse home account ID for CCS Header: `+e)}break;case gn.UPN:t[h.CCS_HEADER]=`UPN: ${e.credential}`;break}return t}async executePostToTokenEndpoint(e,t,n,r,i,a){a&&this.performanceClient?.addQueueMeasurement(a,i);let o=await this.sendPostRequest(r,e,{body:t,headers:n},i);return this.config.serverTelemetryManager&&o.status<500&&o.status!==429&&this.config.serverTelemetryManager.clearTelemetryCache(),o}async sendPostRequest(e,t,n,r){Yr.preProcess(this.cacheManager,e,r);let i;try{i=await yr(this.networkClient.sendPostRequestAsync.bind(this.networkClient),$.NetworkClientSendPostRequestAsync,this.logger,this.performanceClient,r)(t,n);let e=i.headers||{};this.performanceClient?.addFields({refreshTokenSize:i.body.refresh_token?.length||0,httpVerToken:e[h.X_MS_HTTP_VERSION]||``,requestId:e[h.X_MS_REQUEST_ID]||``},r)}catch(e){if(e instanceof Xr){let t=e.responseHeaders;throw t&&this.performanceClient?.addFields({httpVerToken:t[h.X_MS_HTTP_VERSION]||``,requestId:t[h.X_MS_REQUEST_ID]||``,contentTypeHeader:t[h.CONTENT_TYPE]||void 0,contentLengthHeader:t[h.CONTENT_LENGTH]||void 0,httpStatus:e.httpStatus},r),e.error}throw e instanceof V?e:X(ae)}return Yr.postProcess(this.cacheManager,e,i,r),i}async updateAuthority(e,t){this.performanceClient?.addQueueMeasurement($.UpdateTokenEndpointAuthority,t),this.authority=await Kr(`https://${e}/${this.authority.tenant}/`,this.networkClient,this.cacheManager,this.authority.options,this.logger,t,this.performanceClient)}createTokenQueryParameters(e){let t=new Map;return e.embeddedClientId&&mr(t,this.config.authOptions.clientId,this.config.authOptions.redirectUri),e.tokenQueryParameters&&ar(t,e.tokenQueryParameters),Bn(t,e.correlationId),En(t,e.correlationId,this.performanceClient),Q(t)}}; +/*! @azure/msal-common v15.13.2 2025-11-19 */ +let Qr=`no_tokens_found`,$r=`native_account_unavailable`,ei=`refresh_token_expired`,ti=`ux_not_allowed`,ni=`interaction_required`,ri=`consent_required`,ii=`login_required`,ai=`bad_token`;var oi=Object.freeze({__proto__:null,badToken:ai,consentRequired:ri,interactionRequired:ni,loginRequired:ii,nativeAccountUnavailable:$r,noTokensFound:Qr,refreshTokenExpired:ei,uxNotAllowed:ti}); +/*! @azure/msal-common v15.13.2 2025-11-19 */ +let si=[ni,ri,ii,ai,ti],ci=[`message_only`,`additional_action`,`basic_action`,`user_password_expired`,`consent_required`,`bad_token`],li={[Qr]:`No refresh token found in the cache. Please sign-in.`,[$r]:`The requested account is not available in the native broker. It may have been deleted or logged out. Please sign-in again using an interactive API.`,[ei]:`Refresh token has expired.`,[ai]:`Identity provider returned bad_token due to an expired or invalid refresh token. Please invoke an interactive API to resolve.`,[ti]:"`canShowUI` flag in Edge was set to false. User interaction required on web page. Please invoke an interactive API to resolve."},ui={noTokensFoundError:{code:Qr,desc:li[Qr]},native_account_unavailable:{code:$r,desc:li[$r]},bad_token:{code:ai,desc:li[ai]}};var di=class e extends V{constructor(t,n,r,i,a,o,s,c){super(t,n,r),Object.setPrototypeOf(this,e.prototype),this.timestamp=i||u.EMPTY_STRING,this.traceId=a||u.EMPTY_STRING,this.correlationId=o||u.EMPTY_STRING,this.claims=s||u.EMPTY_STRING,this.name=`InteractionRequiredAuthError`,this.errorNo=c}};function fi(e,t,n){let r=!!e&&si.indexOf(e)>-1,i=!!n&&ci.indexOf(n)>-1,a=!!t&&si.some(e=>t.indexOf(e)>-1);return r||a||i}function pi(e){return new di(e,li[e])} +/*! @azure/msal-common v15.13.2 2025-11-19 */ +var mi=class e{static setRequestState(t,n,r){let i=e.generateLibraryState(t,r);return n?`${i}${u.RESOURCE_DELIM}${n}`:i}static generateLibraryState(e,t){if(!e)throw X(De);let n={id:e.createNewGuid()};t&&(n.meta=t);let r=JSON.stringify(n);return e.base64Encode(r)}static parseRequestState(e,t){if(!e)throw X(De);if(!t)throw X(se);try{let n=t.split(u.RESOURCE_DELIM),r=n[0],i=n.length>1?n.slice(1).join(u.RESOURCE_DELIM):u.EMPTY_STRING,a=e.base64Decode(r),o=JSON.parse(a);return{userRequestState:i||u.EMPTY_STRING,libraryState:o}}catch{throw X(se)}}}; +/*! @azure/msal-common v15.13.2 2025-11-19 */ +let hi={SW:`sw`};var gi=class{constructor(e,t){this.cryptoUtils=e,this.performanceClient=t}async generateCnf(e,t){this.performanceClient?.addQueueMeasurement($.PopTokenGenerateCnf,e.correlationId);let n=await yr(this.generateKid.bind(this),$.PopTokenGenerateCnf,t,this.performanceClient,e.correlationId)(e),r=this.cryptoUtils.base64UrlEncode(JSON.stringify(n));return{kid:n.kid,reqCnfString:r}}async generateKid(e){return this.performanceClient?.addQueueMeasurement($.PopTokenGenerateKid,e.correlationId),{kid:await this.cryptoUtils.getPublicKeyThumbprint(e),xms_ksl:hi.SW}}async signPopToken(e,t,n){return this.signPayload(e,t,n)}async signPayload(e,t,n,r){let{resourceRequestMethod:i,resourceRequestUri:a,shrClaims:o,shrNonce:s,shrOptions:c}=n,l=(a?new zt(a):void 0)?.getUrlComponents();return this.cryptoUtils.signJwt({at:e,ts:xr(),m:i?.toUpperCase(),u:l?.HostNameAndPort,nonce:s||this.cryptoUtils.createNewGuid(),p:l?.AbsolutePath,q:l?.QueryString?[[],l.QueryString]:void 0,client_claims:o||void 0,...r},t,c,n.correlationId)}},_i=class{constructor(e,t){this.cache=e,this.hasChanged=t}get cacheHasChanged(){return this.hasChanged}get tokenCache(){return this.cache}},vi=class e{constructor(e,t,n,r,i,a,o){this.clientId=e,this.cacheStorage=t,this.cryptoObj=n,this.logger=r,this.serializableCache=i,this.persistencePlugin=a,this.performanceClient=o}validateTokenResponse(e,t){if(e.error||e.error_description||e.suberror){let n=`Error(s): ${e.error_codes||u.NOT_AVAILABLE} - Timestamp: ${e.timestamp||u.NOT_AVAILABLE} - Description: ${e.error_description||u.NOT_AVAILABLE} - Correlation ID: ${e.correlation_id||u.NOT_AVAILABLE} - Trace ID: ${e.trace_id||u.NOT_AVAILABLE}`,r=e.error_codes?.length?e.error_codes[0]:void 0,i=new qr(e.error,n,e.suberror,r,e.status);if(t&&e.status&&e.status>=f.SERVER_ERROR_RANGE_START&&e.status<=f.SERVER_ERROR_RANGE_END){this.logger.warning(`executeTokenRequest:validateTokenResponse - AAD is currently unavailable and the access token is unable to be refreshed.\n${i}`);return}else if(t&&e.status&&e.status>=f.CLIENT_ERROR_RANGE_START&&e.status<=f.CLIENT_ERROR_RANGE_END){this.logger.warning(`executeTokenRequest:validateTokenResponse - AAD is currently available but is unable to refresh the access token.\n${i}`);return}throw fi(e.error,e.error_description,e.suberror)?new di(e.error,e.error_description,e.suberror,e.timestamp||u.EMPTY_STRING,e.trace_id||u.EMPTY_STRING,e.correlation_id||u.EMPTY_STRING,e.claims||u.EMPTY_STRING,r):i}}async handleServerTokenResponse(t,n,r,i,a,o,s,c,l){this.performanceClient?.addQueueMeasurement($.HandleServerTokenResponse,t.correlation_id);let d;if(t.id_token){if(d=Nt(t.id_token||u.EMPTY_STRING,this.cryptoObj.base64Decode),a&&a.nonce&&d.nonce!==a.nonce)throw X(ue);if(i.maxAge||i.maxAge===0){let e=d.auth_time;if(!e)throw X(de);It(e,i.maxAge)}}this.homeAccountIdentifier=Mt.generateHomeAccountId(t.client_info||u.EMPTY_STRING,n.authorityType,this.logger,this.cryptoObj,d);let f;a&&a.state&&(f=mi.parseRequestState(this.cryptoObj,a.state)),t.key_id=t.key_id||i.sshKid||void 0;let p=this.generateCacheRecord(t,n,r,i,d,o,a),m;try{if(this.persistencePlugin&&this.serializableCache&&(this.logger.verbose(`Persistence enabled, calling beforeCacheAccess`),m=new _i(this.serializableCache,!0),await this.persistencePlugin.beforeCacheAccess(m)),s&&!c&&p.account){let t=this.cacheStorage.generateAccountKey(Mt.getAccountInfo(p.account));if(!this.cacheStorage.getAccount(t,i.correlationId))return this.logger.warning(`Account used to refresh tokens not in persistence, refreshed tokens will not be stored in the cache`),await e.generateAuthenticationResult(this.cryptoObj,n,p,!1,i,d,f,void 0,l)}await this.cacheStorage.saveCacheRecord(p,i.correlationId,Pt(d||{}),i.storeInCache)}finally{this.persistencePlugin&&this.serializableCache&&m&&(this.logger.verbose(`Persistence enabled, calling afterCacheAccess`),await this.persistencePlugin.afterCacheAccess(m))}return e.generateAuthenticationResult(this.cryptoObj,n,p,!1,i,d,f,t,l)}generateCacheRecord(e,t,n,r,i,a,o){let s=t.getPreferredCache();if(!s)throw X(Te);let c=At(i),l,u;e.id_token&&i&&(l=Er(this.homeAccountIdentifier,s,e.id_token,this.clientId,c||``),u=yi(this.cacheStorage,t,this.homeAccountIdentifier,this.cryptoObj.base64Decode,r.correlationId,i,e.client_info,s,c,o,void 0,this.logger));let d=null;if(e.access_token){let i=e.scope?Ct.fromString(e.scope):new Ct(r.scopes||[]),o=(typeof e.expires_in==`string`?parseInt(e.expires_in,10):e.expires_in)||0,l=(typeof e.ext_expires_in==`string`?parseInt(e.ext_expires_in,10):e.ext_expires_in)||0,u=(typeof e.refresh_in==`string`?parseInt(e.refresh_in,10):e.refresh_in)||void 0,f=n+o,p=f+l,m=u&&u>0?n+u:void 0;d=Dr(this.homeAccountIdentifier,s,e.access_token,this.clientId,c||t.tenant||``,i.printScopes(),f,p,this.cryptoObj.base64Decode,m,e.token_type,a,e.key_id,r.claims,r.requestedClaimsHash)}let f=null;if(e.refresh_token){let t;e.refresh_token_expires_in&&(t=n+(typeof e.refresh_token_expires_in==`string`?parseInt(e.refresh_token_expires_in,10):e.refresh_token_expires_in)),f=Or(this.homeAccountIdentifier,s,e.refresh_token,this.clientId,e.foci,a,t)}let p=null;return e.foci&&(p={clientId:this.clientId,environment:s,familyId:e.foci}),{account:u,idToken:l,accessToken:d,refreshToken:f,appMetadata:p}}static async generateAuthenticationResult(e,t,n,r,i,a,o,s,c){let l=u.EMPTY_STRING,d=[],f=null,p,m,h=u.EMPTY_STRING;if(n.accessToken){if(n.accessToken.tokenType===A.POP&&!i.popKid){let t=new gi(e),{secret:r,keyId:a}=n.accessToken;if(!a)throw X(Ie);l=await t.signPopToken(r,a,i)}else l=n.accessToken.secret;d=Ct.fromString(n.accessToken.target).asArray(),f=Sr(n.accessToken.expiresOn),p=Sr(n.accessToken.extendedExpiresOn),n.accessToken.refreshOn&&(m=Sr(n.accessToken.refreshOn))}n.appMetadata&&(h=n.appMetadata.familyId===`1`?`1`:``);let g=a?.oid||a?.sub||``,_=a?.tid||``;s?.spa_accountid&&n.account&&(n.account.nativeAccountId=s?.spa_accountid);let v=n.account?Ot(Mt.getAccountInfo(n.account),void 0,a,n.idToken?.secret):null;return{authority:t.canonicalAuthority,uniqueId:g,tenantId:_,scopes:d,account:v,idToken:n?.idToken?.secret||``,idTokenClaims:a||{},accessToken:l,fromCache:r,expiresOn:f,extExpiresOn:p,refreshOn:m,correlationId:i.correlationId,requestId:c||u.EMPTY_STRING,familyId:h,tokenType:n.accessToken?.tokenType||u.EMPTY_STRING,state:o?o.userRequestState:u.EMPTY_STRING,cloudGraphHostName:n.account?.cloudGraphHostName||u.EMPTY_STRING,msGraphHost:n.account?.msGraphHost||u.EMPTY_STRING,code:s?.spa_code,fromNativeBroker:!1}}};function yi(e,t,n,r,i,a,o,s,c,l,u,d){d?.verbose(`setCachedAccount called`);let f=e.getAccountKeys().find(e=>e.startsWith(n)),p=null;f&&(p=e.getAccount(f,i));let m=p||Mt.createAccount({homeAccountId:n,idTokenClaims:a,clientInfo:o,environment:s,cloudGraphHostName:l?.cloud_graph_host_name,msGraphHost:l?.msgraph_host,nativeAccountId:u},t,r),h=m.tenantProfiles||[],g=c||m.realm;if(g&&!h.find(e=>e.tenantId===g)){let e=Dt(n,m.localAccountId,g,a);h.push(e)}return m.tenantProfiles=h,m} +/*! @azure/msal-common v15.13.2 2025-11-19 */ +async function bi(e,t,n){return typeof e==`string`?e:e({clientId:t,tokenEndpoint:n})} +/*! @azure/msal-common v15.13.2 2025-11-19 */ +var xi=class extends Zr{constructor(e,t){super(e,t),this.includeRedirectUri=!0,this.oidcDefaultScopes=this.config.authOptions.authority.options.OIDCOptions?.defaultScopes}async acquireToken(e,t){if(this.performanceClient?.addQueueMeasurement($.AuthClientAcquireToken,e.correlationId),!e.code)throw X(ge);let n=xr(),r=await yr(this.executeTokenRequest.bind(this),$.AuthClientExecuteTokenRequest,this.logger,this.performanceClient,e.correlationId)(this.authority,e),i=r.headers?.[h.X_MS_REQUEST_ID],a=new vi(this.config.authOptions.clientId,this.cacheManager,this.cryptoUtils,this.logger,this.config.serializableCache,this.config.persistencePlugin,this.performanceClient);return a.validateTokenResponse(r.body),yr(a.handleServerTokenResponse.bind(a),$.HandleServerTokenResponse,this.logger,this.performanceClient,e.correlationId)(r.body,this.authority,n,e,t,void 0,void 0,void 0,i)}getLogoutUri(e){if(!e)throw xt(rt);let t=this.createLogoutUrlQueryString(e);return zt.appendQueryString(this.authority.endSessionEndpoint,t)}async executeTokenRequest(e,t){this.performanceClient?.addQueueMeasurement($.AuthClientExecuteTokenRequest,t.correlationId);let n=this.createTokenQueryParameters(t),r=zt.appendQueryString(e.tokenEndpoint,n),i=await yr(this.createTokenRequestBody.bind(this),$.AuthClientCreateTokenRequestBody,this.logger,this.performanceClient,t.correlationId)(t),a;if(t.clientInfo)try{let e=wt(t.clientInfo,this.cryptoUtils.base64Decode);a={credential:`${e.uid}${w.CLIENT_INFO_SEPARATOR}${e.utid}`,type:gn.HOME_ACCOUNT_ID}}catch(e){this.logger.verbose(`Could not parse client info for CCS Header: `+e)}let o=this.createTokenRequestHeaders(a||t.ccsCredential),s=Jr(this.config.authOptions.clientId,t);return yr(this.executePostToTokenEndpoint.bind(this),$.AuthorizationCodeClientExecutePostToTokenEndpoint,this.logger,this.performanceClient,t.correlationId)(r,i,o,s,t.correlationId,$.AuthorizationCodeClientExecutePostToTokenEndpoint)}async createTokenRequestBody(e){this.performanceClient?.addQueueMeasurement($.AuthClientCreateTokenRequestBody,e.correlationId);let t=new Map;if(An(t,e.embeddedClientId||e.tokenBodyParameters?.[_n]||this.config.authOptions.clientId),this.includeRedirectUri)jn(t,e.redirectUri);else if(!e.redirectUri)throw xt(Ye);if(kn(t,e.scopes,!0,this.oidcDefaultScopes),qn(t,e.code),Vn(t,this.config.libraryInfo),Hn(t,this.config.telemetry.application),fr(t),this.serverTelemetryManager&&!hn(this.config)&&dr(t,this.serverTelemetryManager),e.codeVerifier&&Xn(t,e.codeVerifier),this.config.clientCredentials.clientSecret&&Zn(t,this.config.clientCredentials.clientSecret),this.config.clientCredentials.clientAssertion){let n=this.config.clientCredentials.clientAssertion;Qn(t,await bi(n.assertion,this.config.authOptions.clientId,e.resourceRequestUri)),$n(t,n.assertionType)}if(nr(t,S.AUTHORIZATION_CODE_GRANT),rr(t),e.authenticationScheme===A.POP){let n=new gi(this.cryptoUtils,this.performanceClient),r;r=e.popKid?this.cryptoUtils.encodeKid(e.popKid):(await yr(n.generateCnf.bind(n),$.PopTokenGenerateCnf,this.logger,this.performanceClient,e.correlationId)(e,this.logger)).reqCnfString,lr(t,r)}else if(e.authenticationScheme===A.SSH)if(e.sshJwk)ur(t,e.sshJwk);else throw xt(ct);(!St.isEmptyObj(e.claims)||this.config.authOptions.clientCapabilities&&this.config.authOptions.clientCapabilities.length>0)&&zn(t,e.claims,this.config.authOptions.clientCapabilities);let n;if(e.clientInfo)try{let t=wt(e.clientInfo,this.cryptoUtils.base64Decode);n={credential:`${t.uid}${w.CLIENT_INFO_SEPARATOR}${t.utid}`,type:gn.HOME_ACCOUNT_ID}}catch(e){this.logger.verbose(`Could not parse client info for CCS Header: `+e)}else n=e.ccsCredential;if(this.config.systemOptions.preventCorsPreflight&&n)switch(n.type){case gn.HOME_ACCOUNT_ID:try{Ln(t,Tt(n.credential))}catch(e){this.logger.verbose(`Could not parse home account ID for CCS Header: `+e)}break;case gn.UPN:In(t,n.credential);break}return e.embeddedClientId&&mr(t,this.config.authOptions.clientId,this.config.authOptions.redirectUri),e.tokenBodyParameters&&ar(t,e.tokenBodyParameters),e.enableSpaAuthorizationCode&&(!e.tokenBodyParameters||!e.tokenBodyParameters[xn])&&ar(t,{[xn]:`1`}),En(t,e.correlationId,this.performanceClient),Q(t)}createLogoutUrlQueryString(e){let t=new Map;return e.postLogoutRedirectUri&&Mn(t,e.postLogoutRedirectUri),e.correlationId&&Bn(t,e.correlationId),e.idTokenHint&&Nn(t,e.idTokenHint),e.state&&Wn(t,e.state),e.logoutHint&&pr(t,e.logoutHint),e.extraQueryParameters&&ar(t,e.extraQueryParameters),this.config.authOptions.instanceAware&&ir(t),Q(t,this.config.authOptions.encodeExtraQueryParams,e.extraQueryParameters)}},Si=class extends Zr{constructor(e,t){super(e,t)}async acquireToken(e){this.performanceClient?.addQueueMeasurement($.RefreshTokenClientAcquireToken,e.correlationId);let t=xr(),n=await yr(this.executeTokenRequest.bind(this),$.RefreshTokenClientExecuteTokenRequest,this.logger,this.performanceClient,e.correlationId)(e,this.authority),r=n.headers?.[h.X_MS_REQUEST_ID],i=new vi(this.config.authOptions.clientId,this.cacheManager,this.cryptoUtils,this.logger,this.config.serializableCache,this.config.persistencePlugin);return i.validateTokenResponse(n.body),yr(i.handleServerTokenResponse.bind(i),$.HandleServerTokenResponse,this.logger,this.performanceClient,e.correlationId)(n.body,this.authority,t,e,void 0,void 0,!0,e.forceCache,r)}async acquireTokenByRefreshToken(e){if(!e)throw xt(nt);if(this.performanceClient?.addQueueMeasurement($.RefreshTokenClientAcquireTokenByRefreshToken,e.correlationId),!e.account)throw X(Ce);if(this.cacheManager.isAppMetadataFOCI(e.account.environment))try{return await yr(this.acquireTokenWithCachedRefreshToken.bind(this),$.RefreshTokenClientAcquireTokenWithCachedRefreshToken,this.logger,this.performanceClient,e.correlationId)(e,!0)}catch(t){let n=t instanceof di&&t.errorCode===Qr,r=t instanceof qr&&t.errorCode===M.INVALID_GRANT_ERROR&&t.subError===M.CLIENT_MISMATCH_ERROR;if(n||r)return yr(this.acquireTokenWithCachedRefreshToken.bind(this),$.RefreshTokenClientAcquireTokenWithCachedRefreshToken,this.logger,this.performanceClient,e.correlationId)(e,!1);throw t}return yr(this.acquireTokenWithCachedRefreshToken.bind(this),$.RefreshTokenClientAcquireTokenWithCachedRefreshToken,this.logger,this.performanceClient,e.correlationId)(e,!1)}async acquireTokenWithCachedRefreshToken(e,t){this.performanceClient?.addQueueMeasurement($.RefreshTokenClientAcquireTokenWithCachedRefreshToken,e.correlationId);let n=vr(this.cacheManager.getRefreshToken.bind(this.cacheManager),$.CacheManagerGetRefreshToken,this.logger,this.performanceClient,e.correlationId)(e.account,t,e.correlationId,void 0,this.performanceClient);if(!n)throw pi(Qr);if(n.expiresOn&&Cr(n.expiresOn,e.refreshTokenExpirationOffsetSeconds||300))throw this.performanceClient?.addFields({rtExpiresOnMs:Number(n.expiresOn)},e.correlationId),pi(ei);let r={...e,refreshToken:n.secret,authenticationScheme:e.authenticationScheme||A.BEARER,ccsCredential:{credential:e.account.homeAccountId,type:gn.HOME_ACCOUNT_ID}};try{return await yr(this.acquireToken.bind(this),$.RefreshTokenClientAcquireToken,this.logger,this.performanceClient,e.correlationId)(r)}catch(t){if(t instanceof di&&(this.performanceClient?.addFields({rtExpiresOnMs:Number(n.expiresOn)},e.correlationId),t.subError===ai)){this.logger.verbose(`acquireTokenWithRefreshToken: bad refresh token, removing from cache`);let t=this.cacheManager.generateCredentialKey(n);this.cacheManager.removeRefreshToken(t,e.correlationId)}throw t}}async executeTokenRequest(e,t){this.performanceClient?.addQueueMeasurement($.RefreshTokenClientExecuteTokenRequest,e.correlationId);let n=this.createTokenQueryParameters(e),r=zt.appendQueryString(t.tokenEndpoint,n),i=await yr(this.createTokenRequestBody.bind(this),$.RefreshTokenClientCreateTokenRequestBody,this.logger,this.performanceClient,e.correlationId)(e),a=this.createTokenRequestHeaders(e.ccsCredential),o=Jr(this.config.authOptions.clientId,e);return yr(this.executePostToTokenEndpoint.bind(this),$.RefreshTokenClientExecutePostToTokenEndpoint,this.logger,this.performanceClient,e.correlationId)(r,i,a,o,e.correlationId,$.RefreshTokenClientExecutePostToTokenEndpoint)}async createTokenRequestBody(e){this.performanceClient?.addQueueMeasurement($.RefreshTokenClientCreateTokenRequestBody,e.correlationId);let t=new Map;if(An(t,e.embeddedClientId||e.tokenBodyParameters?.[_n]||this.config.authOptions.clientId),e.redirectUri&&jn(t,e.redirectUri),kn(t,e.scopes,!0,this.config.authOptions.authority.options.OIDCOptions?.defaultScopes),nr(t,S.REFRESH_TOKEN_GRANT),rr(t),Vn(t,this.config.libraryInfo),Hn(t,this.config.telemetry.application),fr(t),this.serverTelemetryManager&&!hn(this.config)&&dr(t,this.serverTelemetryManager),Yn(t,e.refreshToken),this.config.clientCredentials.clientSecret&&Zn(t,this.config.clientCredentials.clientSecret),this.config.clientCredentials.clientAssertion){let n=this.config.clientCredentials.clientAssertion;Qn(t,await bi(n.assertion,this.config.authOptions.clientId,e.resourceRequestUri)),$n(t,n.assertionType)}if(e.authenticationScheme===A.POP){let n=new gi(this.cryptoUtils,this.performanceClient),r;r=e.popKid?this.cryptoUtils.encodeKid(e.popKid):(await yr(n.generateCnf.bind(n),$.PopTokenGenerateCnf,this.logger,this.performanceClient,e.correlationId)(e,this.logger)).reqCnfString,lr(t,r)}else if(e.authenticationScheme===A.SSH)if(e.sshJwk)ur(t,e.sshJwk);else throw xt(ct);if((!St.isEmptyObj(e.claims)||this.config.authOptions.clientCapabilities&&this.config.authOptions.clientCapabilities.length>0)&&zn(t,e.claims,this.config.authOptions.clientCapabilities),this.config.systemOptions.preventCorsPreflight&&e.ccsCredential)switch(e.ccsCredential.type){case gn.HOME_ACCOUNT_ID:try{Ln(t,Tt(e.ccsCredential.credential))}catch(e){this.logger.verbose(`Could not parse home account ID for CCS Header: `+e)}break;case gn.UPN:In(t,e.ccsCredential.credential);break}return e.embeddedClientId&&mr(t,this.config.authOptions.clientId,this.config.authOptions.redirectUri),e.tokenBodyParameters&&ar(t,e.tokenBodyParameters),En(t,e.correlationId,this.performanceClient),Q(t)}},Ci=class extends Zr{constructor(e,t){super(e,t)}async acquireCachedToken(e){this.performanceClient?.addQueueMeasurement($.SilentFlowClientAcquireCachedToken,e.correlationId);let t=F.NOT_APPLICABLE;if(e.forceRefresh||!this.config.cacheOptions.claimsBasedCachingEnabled&&!St.isEmptyObj(e.claims))throw this.setCacheOutcome(F.FORCE_REFRESH_OR_CLAIMS,e.correlationId),X(je);if(!e.account)throw X(Ce);let n=e.account.tenantId||Ur(e.authority),r=this.cacheManager.getTokenKeys(),i=this.cacheManager.getAccessToken(e.account,e,r,n);if(i){if(wr(i.cachedAt)||Cr(i.expiresOn,this.config.systemOptions.tokenRenewalOffsetSeconds))throw this.setCacheOutcome(F.CACHED_ACCESS_TOKEN_EXPIRED,e.correlationId),X(je);i.refreshOn&&Cr(i.refreshOn,0)&&(t=F.PROACTIVELY_REFRESHED)}else throw this.setCacheOutcome(F.NO_CACHED_ACCESS_TOKEN,e.correlationId),X(je);let a=e.authority||this.authority.getPreferredCache(),o={account:this.cacheManager.getAccount(this.cacheManager.generateAccountKey(e.account),e.correlationId),accessToken:i,idToken:this.cacheManager.getIdToken(e.account,e.correlationId,r,n,this.performanceClient),refreshToken:null,appMetadata:this.cacheManager.readAppMetadataFromCache(a)};return this.setCacheOutcome(t,e.correlationId),this.config.serverTelemetryManager&&this.config.serverTelemetryManager.incrementCacheHits(),[await yr(this.generateResultFromCacheRecord.bind(this),$.SilentFlowClientGenerateResultFromCacheRecord,this.logger,this.performanceClient,e.correlationId)(o,e),t]}setCacheOutcome(e,t){this.serverTelemetryManager?.setCacheOutcome(e),this.performanceClient?.addFields({cacheOutcome:e},t),e!==F.NOT_APPLICABLE&&this.logger.info(`Token refresh is required due to cache outcome: ${e}`)}async generateResultFromCacheRecord(e,t){this.performanceClient?.addQueueMeasurement($.SilentFlowClientGenerateResultFromCacheRecord,t.correlationId);let n;if(e.idToken&&(n=Nt(e.idToken.secret,this.config.cryptoInterface.base64Decode)),t.maxAge||t.maxAge===0){let e=n?.auth_time;if(!e)throw X(de);It(e,t.maxAge)}return vi.generateAuthenticationResult(this.cryptoUtils,this.authority,e,!0,t,n)}}; +/*! @azure/msal-common v15.13.2 2025-11-19 */ +function wi(e,t,n,r){let i=t.correlationId,a=new Map;if(An(a,t.embeddedClientId||t.extraQueryParameters?.[_n]||e.clientId),kn(a,[...t.scopes||[],...t.extraScopesToConsent||[]],!0,e.authority.options.OIDCOptions?.defaultScopes),jn(a,t.redirectUri),Bn(a,i),On(a,t.responseMode),rr(a),t.prompt&&Un(a,t.prompt),t.domainHint&&Pn(a,t.domainHint),t.prompt!==v.SELECT_ACCOUNT)if(t.sid&&t.prompt===v.NONE)n.verbose(`createAuthCodeUrlQueryString: Prompt is none, adding sid from request`),Rn(a,t.sid);else if(t.account){let e=Ei(t.account),r=Di(t.account);if(r&&t.domainHint&&(n.warning(`AuthorizationCodeClient.createAuthCodeUrlQueryString: "domainHint" param is set, skipping opaque "login_hint" claim. Please consider not passing domainHint`),r=null),r){n.verbose(`createAuthCodeUrlQueryString: login_hint claim present on account`),Fn(a,r);try{Ln(a,Tt(t.account.homeAccountId))}catch{n.verbose(`createAuthCodeUrlQueryString: Could not parse home account ID for CCS Header`)}}else if(e&&t.prompt===v.NONE){n.verbose(`createAuthCodeUrlQueryString: Prompt is none, adding sid from account`),Rn(a,e);try{Ln(a,Tt(t.account.homeAccountId))}catch{n.verbose(`createAuthCodeUrlQueryString: Could not parse home account ID for CCS Header`)}}else if(t.loginHint)n.verbose(`createAuthCodeUrlQueryString: Adding login_hint from request`),Fn(a,t.loginHint),In(a,t.loginHint);else if(t.account.username){n.verbose(`createAuthCodeUrlQueryString: Adding login_hint from account`),Fn(a,t.account.username);try{Ln(a,Tt(t.account.homeAccountId))}catch{n.verbose(`createAuthCodeUrlQueryString: Could not parse home account ID for CCS Header`)}}}else t.loginHint&&(n.verbose(`createAuthCodeUrlQueryString: No account, adding login_hint from request`),Fn(a,t.loginHint),In(a,t.loginHint));else n.verbose(`createAuthCodeUrlQueryString: Prompt is select_account, ignoring account hints`);return t.nonce&&Gn(a,t.nonce),t.state&&Wn(a,t.state),(t.claims||e.clientCapabilities&&e.clientCapabilities.length>0)&&zn(a,t.claims,e.clientCapabilities),t.embeddedClientId&&mr(a,e.clientId,e.redirectUri),e.instanceAware&&(!t.extraQueryParameters||!Object.keys(t.extraQueryParameters).includes(Tn))&&ir(a),a}function Ti(e,t,n,r){let i=Q(t,n,r);return zt.appendQueryString(e.authorizationEndpoint,i)}function Ei(e){return e.idTokenClaims?.sid||null}function Di(e){return e.loginHint||e.idTokenClaims?.login_hint||null}function Oi(e){let{skus:t,libraryName:n,libraryVersion:r,extensionName:i,extensionVersion:a}=e,o=new Map([[0,[n,r]],[2,[i,a]]]),s=[];if(t?.length){if(s=t.split(`,`),s.length<4)return t}else s=Array.from({length:4},()=>`|`);return o.forEach((e,t)=>{e.length===2&&e[0]?.length&&e[1]?.length&&ki({skuArr:s,index:t,skuName:e[0],skuVersion:e[1]})}),s.join(`,`)}function ki(e){let{skuArr:t,index:n,skuName:r,skuVersion:i}=e;n>=t.length||(t[n]=[r,i].join(`|`))}var Ai=class e{constructor(e,t){this.cacheOutcome=F.NOT_APPLICABLE,this.cacheManager=t,this.apiId=e.apiId,this.correlationId=e.correlationId,this.wrapperSKU=e.wrapperSKU||u.EMPTY_STRING,this.wrapperVer=e.wrapperVer||u.EMPTY_STRING,this.telemetryCacheKey=k.CACHE_KEY+w.CACHE_KEY_SEPARATOR+e.clientId}generateCurrentRequestHeaderValue(){let e=`${this.apiId}${k.VALUE_SEPARATOR}${this.cacheOutcome}`,t=[this.wrapperSKU,this.wrapperVer],n=this.getNativeBrokerErrorCode();n?.length&&t.push(`broker_error=${n}`);let r=t.join(k.VALUE_SEPARATOR),i=[e,this.getRegionDiscoveryFields()].join(k.VALUE_SEPARATOR);return[k.SCHEMA_VERSION,i,r].join(k.CATEGORY_SEPARATOR)}generateLastRequestHeaderValue(){let t=this.getLastRequests(),n=e.maxErrorsToSend(t),r=t.failedRequests.slice(0,2*n).join(k.VALUE_SEPARATOR),i=t.errors.slice(0,n).join(k.VALUE_SEPARATOR),a=t.errors.length,o=[a,n=k.MAX_CACHED_ERRORS&&(t.failedRequests.shift(),t.failedRequests.shift(),t.errors.shift()),t.failedRequests.push(this.apiId,this.correlationId),e instanceof Error&&e&&e.toString()?e instanceof V?e.subError?t.errors.push(e.subError):e.errorCode?t.errors.push(e.errorCode):t.errors.push(e.toString()):t.errors.push(e.toString()):t.errors.push(k.UNKNOWN_ERROR),this.cacheManager.setServerTelemetry(this.telemetryCacheKey,t,this.correlationId)}incrementCacheHits(){let e=this.getLastRequests();return e.cacheHits+=1,this.cacheManager.setServerTelemetry(this.telemetryCacheKey,e,this.correlationId),e.cacheHits}getLastRequests(){return this.cacheManager.getServerTelemetry(this.telemetryCacheKey)||{failedRequests:[],errors:[],cacheHits:0}}clearTelemetryCache(){let t=this.getLastRequests(),n=e.maxErrorsToSend(t);if(n===t.errors.length)this.cacheManager.removeItem(this.telemetryCacheKey,this.correlationId);else{let e={failedRequests:t.failedRequests.slice(n*2),errors:t.errors.slice(n),cacheHits:0};this.cacheManager.setServerTelemetry(this.telemetryCacheKey,e,this.correlationId)}}static maxErrorsToSend(e){let t,n=0,r=0,i=e.errors.length;for(t=0;tJSON.parse(e)),lastUpdatedAt:Date.now().toString()},a=new Mt;$t.toObject(a,i),t[n]=a}),t}static deserializeIdTokens(e){let t={};return e&&Object.keys(e).map(function(n){let r=e[n];t[n]={homeAccountId:r.home_account_id,environment:r.environment,credentialType:r.credential_type,clientId:r.client_id,secret:r.secret,realm:r.realm,lastUpdatedAt:Date.now().toString()}}),t}static deserializeAccessTokens(e){let t={};return e&&Object.keys(e).map(function(n){let r=e[n];t[n]={homeAccountId:r.home_account_id,environment:r.environment,credentialType:r.credential_type,clientId:r.client_id,secret:r.secret,realm:r.realm,target:r.target,cachedAt:r.cached_at,expiresOn:r.expires_on,extendedExpiresOn:r.extended_expires_on,refreshOn:r.refresh_on,keyId:r.key_id,tokenType:r.token_type,requestedClaims:r.requestedClaims,requestedClaimsHash:r.requestedClaimsHash,userAssertionHash:r.userAssertionHash,lastUpdatedAt:Date.now().toString()}}),t}static deserializeRefreshTokens(e){let t={};return e&&Object.keys(e).map(function(n){let r=e[n];t[n]={homeAccountId:r.home_account_id,environment:r.environment,credentialType:r.credential_type,clientId:r.client_id,secret:r.secret,familyId:r.family_id,target:r.target,realm:r.realm,lastUpdatedAt:Date.now().toString()}}),t}static deserializeAppMetadata(e){let t={};return e&&Object.keys(e).map(function(n){let r=e[n];t[n]={clientId:r.client_id,environment:r.environment,familyId:r.family_id}}),t}static deserializeAllCache(e){return{accounts:e.Account?this.deserializeAccounts(e.Account):{},idTokens:e.IdToken?this.deserializeIdTokens(e.IdToken):{},accessTokens:e.AccessToken?this.deserializeAccessTokens(e.AccessToken):{},refreshTokens:e.RefreshToken?this.deserializeRefreshTokens(e.RefreshToken):{},appMetadata:e.AppMetadata?this.deserializeAppMetadata(e.AppMetadata):{}}}},Mi=Object.freeze({__proto__:null,Deserializer:ji,Serializer:l});let Ni=`https://login.microsoftonline.com/managed_identity/`,Pi={AUTHORIZATION_HEADER_NAME:`Authorization`,METADATA_HEADER_NAME:`Metadata`,APP_SERVICE_SECRET_HEADER_NAME:`X-IDENTITY-HEADER`,ML_AND_SF_SECRET_HEADER_NAME:`secret`},Fi={API_VERSION:`api-version`,RESOURCE:`resource`,SHA256_TOKEN_TO_REFRESH:`token_sha256_to_refresh`,XMS_CC:`xms_cc`},Ii={AZURE_POD_IDENTITY_AUTHORITY_HOST:`AZURE_POD_IDENTITY_AUTHORITY_HOST`,DEFAULT_IDENTITY_CLIENT_ID:`DEFAULT_IDENTITY_CLIENT_ID`,IDENTITY_ENDPOINT:`IDENTITY_ENDPOINT`,IDENTITY_HEADER:`IDENTITY_HEADER`,IDENTITY_SERVER_THUMBPRINT:`IDENTITY_SERVER_THUMBPRINT`,IMDS_ENDPOINT:`IMDS_ENDPOINT`,MSI_ENDPOINT:`MSI_ENDPOINT`,MSI_SECRET:`MSI_SECRET`},Li={APP_SERVICE:`AppService`,AZURE_ARC:`AzureArc`,CLOUD_SHELL:`CloudShell`,DEFAULT_TO_IMDS:`DefaultToImds`,IMDS:`Imds`,MACHINE_LEARNING:`MachineLearning`,SERVICE_FABRIC:`ServiceFabric`},Ri={SYSTEM_ASSIGNED:`system-assigned`,USER_ASSIGNED_CLIENT_ID:`user-assigned-client-id`,USER_ASSIGNED_RESOURCE_ID:`user-assigned-resource-id`,USER_ASSIGNED_OBJECT_ID:`user-assigned-object-id`},zi={GET:`get`,POST:`post`},Bi={SUCCESS_RANGE_START:f.SUCCESS_RANGE_START,SUCCESS_RANGE_END:f.SUCCESS_RANGE_END,SERVER_ERROR:f.SERVER_ERROR},Vi={SHA256:`sha256`},Hi={CV_CHARSET:`ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-._~`},Ui={KEY_SEPARATOR:`-`},Wi={MSAL_SKU:`msal.js.node`,JWT_BEARER_ASSERTION_TYPE:`urn:ietf:params:oauth:client-assertion-type:jwt-bearer`,AUTHORIZATION_PENDING:`authorization_pending`,HTTP_PROTOCOL:`http://`,LOCALHOST:`localhost`},Gi={acquireTokenSilent:62,acquireTokenByUsernamePassword:371,acquireTokenByDeviceCode:671,acquireTokenByClientCredential:771,acquireTokenByCode:871,acquireTokenByRefreshToken:872},Ki={RSA_256:`RS256`,PSS_256:`PS256`,X5T_256:`x5t#S256`,X5T:`x5t`,X5C:`x5c`,AUDIENCE:`aud`,EXPIRATION_TIME:`exp`,ISSUER:`iss`,SUBJECT:`sub`,NOT_BEFORE:`nbf`,JWT_ID:`jti`},qi={INTERVAL_MS:100,TIMEOUT_MS:5e3};var Ji=class{static getNetworkResponse(e,t,n){return{headers:e,body:t,status:n}}static urlToHttpOptions(e){let t={protocol:e.protocol,hostname:e.hostname&&e.hostname.startsWith(`[`)?e.hostname.slice(1,-1):e.hostname,hash:e.hash,search:e.search,pathname:e.pathname,path:`${e.pathname||``}${e.search||``}`,href:e.href};return e.port!==``&&(t.port=Number(e.port)),(e.username||e.password)&&(t.auth=`${decodeURIComponent(e.username)}:${decodeURIComponent(e.password)}`),t}};let Yi=`@azure/msal-node`,Xi=`3.8.3`;var Zi=class{constructor(e,r,i){this.networkRequestViaProxy=(e,n,r,i)=>{let a=new URL(n),o=new URL(this.proxyUrl),s=r?.headers||{},c={host:o.hostname,port:o.port,method:`CONNECT`,path:a.hostname,headers:s};this.customAgentOptions&&Object.keys(this.customAgentOptions).length&&(c.agent=new t.Agent(this.customAgentOptions));let l=``;if(e===zi.POST){let e=r?.body||``;l=`Content-Type: application/x-www-form-urlencoded\r +Content-Length: ${e.length}\r\n\r\n${e}`}else i&&(c.timeout=i);let u=`${e.toUpperCase()} ${a.href} HTTP/1.1\r\nHost: ${a.host}\r\nConnection: close\r +`+l+`\r +`;return new Promise((r,a)=>{let o=t.request(c);i&&o.on(`timeout`,()=>{this.logUrlWithPiiAwareness(`Request timeout after ${i}ms for URL`,n),o.destroy(),a(Error(`Request time out after ${i}ms`))}),o.end(),o.on(`connect`,(e,t)=>{let n=e?.statusCode||Bi.SERVER_ERROR;(nBi.SUCCESS_RANGE_END)&&(o.destroy(),t.destroy(),a(Error(`Error connecting to proxy. Http status code: ${e.statusCode}. Http status message: ${e?.statusMessage||`Unknown`}`))),t.write(u);let i=[];t.on(`data`,e=>{i.push(e)}),t.on(`end`,()=>{let e=Buffer.concat([...i]).toString().split(`\r +`),t=parseInt(e[0].split(` `)[1]),n=e[0].split(` `).slice(2).join(` `),a=e[e.length-1],s=e.slice(1,e.length-2),c=new Map;s.forEach(e=>{let t=e.split(new RegExp(/:\s(.*)/s)),n=t[0],r=t[1];try{let e=JSON.parse(r);e&&typeof e==`object`&&(r=e)}catch{}c.set(n,r)});let l=Object.fromEntries(c),u=Ji.getNetworkResponse(l,this.parseBody(t,n,l,a),t);this.shouldDestroyRequest(t,u)&&o.destroy(),r(u)}),t.on(`error`,e=>{o.destroy(),t.destroy(),a(Error(e.toString()))})}),o.on(`error`,t=>{this.logger.error(`HttpClient - Proxy request error: ${t.toString()}`,``),this.logUrlWithPiiAwareness(`Destination URL`,n),this.logUrlWithPiiAwareness(`Proxy URL`,this.proxyUrl),this.logger.error(`HttpClient - Method: ${e}`,``),this.logger.errorPii(`HttpClient - Headers: ${JSON.stringify(s)}`,``),o.destroy(),a(Error(t.toString()))})})},this.networkRequestViaHttps=(e,r,i,a)=>{let o=e===zi.POST,s=i?.body||``,c=new URL(r),l=i?.headers||{},u={method:e,headers:l,...Ji.urlToHttpOptions(c)};return this.customAgentOptions&&Object.keys(this.customAgentOptions).length&&(u.agent=new n.Agent(this.customAgentOptions)),o?u.headers={...u.headers,"Content-Length":s.length}:a&&(u.timeout=a),new Promise((i,c)=>{let d;d=u.protocol===`http:`?t.request(u):n.request(u),o&&d.write(s),a&&d.on(`timeout`,()=>{this.logUrlWithPiiAwareness(`HTTPS request timeout after ${a}ms for URL`,r),d.destroy(),c(Error(`Request time out after ${a}ms`))}),d.end(),d.on(`response`,e=>{let t=e.headers,n=e.statusCode,r=e.statusMessage,a=[];e.on(`data`,e=>{a.push(e)}),e.on(`end`,()=>{let e=Buffer.concat([...a]).toString(),o=t,s=Ji.getNetworkResponse(o,this.parseBody(n,r,o,e),n);this.shouldDestroyRequest(n,s)&&d.destroy(),i(s)})}),d.on(`error`,t=>{this.logger.error(`HttpClient - HTTPS request error: ${t.toString()}`,``),this.logUrlWithPiiAwareness(`URL`,r),this.logger.error(`HttpClient - Method: ${e}`,``),this.logger.errorPii(`HttpClient - Headers: ${JSON.stringify(l)}`,``),d.destroy(),c(Error(t.toString()))})})},this.parseBody=(e,t,n,r)=>{let i;try{i=JSON.parse(r)}catch{let r,a;e>=f.CLIENT_ERROR_RANGE_START&&e<=f.CLIENT_ERROR_RANGE_END?(r=`client_error`,a=`A client`):e>=f.SERVER_ERROR_RANGE_START&&e<=f.SERVER_ERROR_RANGE_END?(r=`server_error`,a=`A server`):(r=`unknown_error`,a=`An unknown`),i={error:r,error_description:`${a} error occured.\nHttp status code: ${e}\nHttp status message: ${t||`Unknown`}\nHeaders: ${JSON.stringify(n)}`}}return i},this.logUrlWithPiiAwareness=(e,t)=>{if(this.isPiiEnabled)this.logger.errorPii(`HttpClient - ${e}: ${t}`,``);else{let n;try{let e=new URL(t);n=`${e.protocol}//${e.host}${e.pathname}`}catch{n=t.split(`?`)[0]||`unknown`}this.logger.error(`HttpClient - ${e}: ${n} [Enable PII logging to see additional details]`,``)}},this.shouldDestroyRequest=(e,t)=>(ef.SUCCESS_RANGE_END)&&!(t.body&&typeof t.body==`object`&&`error`in t.body&&t.body.error===Wi.AUTHORIZATION_PENDING),this.proxyUrl=e||``,this.customAgentOptions=r||{},this.logger=new Ge(i||{},Yi,Xi),this.isPiiEnabled=this.logger.isPiiLoggingEnabled()}async sendGetRequestAsync(e,t,n){return this.proxyUrl?this.networkRequestViaProxy(zi.GET,e,t,n):this.networkRequestViaHttps(zi.GET,e,t,n)}async sendPostRequestAsync(e,t){return this.proxyUrl?this.networkRequestViaProxy(zi.POST,e,t):this.networkRequestViaHttps(zi.POST,e,t)}};let Qi=`invalid_file_extension`,$i=`invalid_file_path`,ea=`invalid_managed_identity_id_type`,ta=`invalid_secret`,na=`platform_not_supported`,ra=`unable_to_create_azure_arc`,ia=`unable_to_create_cloud_shell`,aa=`unable_to_create_source`,oa=`unable_to_read_secret_file`,sa=`www_authenticate_header_missing`,ca=`www_authenticate_header_unsupported_format`,la={[Ii.AZURE_POD_IDENTITY_AUTHORITY_HOST]:`azure_pod_identity_authority_host_url_malformed`,[Ii.IDENTITY_ENDPOINT]:`identity_endpoint_url_malformed`,[Ii.IMDS_ENDPOINT]:`imds_endpoint_url_malformed`,[Ii.MSI_ENDPOINT]:`msi_endpoint_url_malformed`},ua={[Qi]:`The file path in the WWW-Authenticate header does not contain a .key file.`,[$i]:`The file path in the WWW-Authenticate header is not in a valid Windows or Linux Format.`,[ea]:`More than one ManagedIdentityIdType was provided.`,[ta]:`The secret in the file on the file path in the WWW-Authenticate header is greater than 4096 bytes.`,[na]:`The platform is not supported by Azure Arc. Azure Arc only supports Windows and Linux.`,missing_client_id:`A ManagedIdentityId id was not provided.`,[la.AZURE_POD_IDENTITY_AUTHORITY_HOST]:`The Managed Identity's '${Ii.AZURE_POD_IDENTITY_AUTHORITY_HOST}' environment variable is malformed.`,[la.IDENTITY_ENDPOINT]:`The Managed Identity's '${Ii.IDENTITY_ENDPOINT}' environment variable is malformed.`,[la.IMDS_ENDPOINT]:`The Managed Identity's '${Ii.IMDS_ENDPOINT}' environment variable is malformed.`,[la.MSI_ENDPOINT]:`The Managed Identity's '${Ii.MSI_ENDPOINT}' environment variable is malformed.`,network_unavailable:`Authentication unavailable. The request to the managed identity endpoint timed out.`,[ra]:`Azure Arc Managed Identities can only be system assigned.`,[ia]:`Cloud Shell Managed Identities can only be system assigned.`,[aa]:`Unable to create a Managed Identity source based on environment variables.`,[oa]:`Unable to read the secret file.`,user_assigned_not_available_at_runtime:`Service Fabric user assigned managed identity ClientId or ResourceId is not configurable at runtime.`,[sa]:`A 401 response was received form the Azure Arc Managed Identity, but the www-authenticate header is missing.`,[ca]:`A 401 response was received form the Azure Arc Managed Identity, but the www-authenticate header is in an unsupported format.`};var da=class e extends V{constructor(t){super(t,ua[t]),this.name=`ManagedIdentityError`,Object.setPrototypeOf(this,e.prototype)}};function fa(e){return new da(e)}var pa=class{get id(){return this._id}set id(e){this._id=e}get idType(){return this._idType}set idType(e){this._idType=e}constructor(e){let t=e?.userAssignedClientId,n=e?.userAssignedResourceId,r=e?.userAssignedObjectId;if(t){if(n||r)throw fa(ea);this.id=t,this.idType=Ri.USER_ASSIGNED_CLIENT_ID}else if(n){if(t||r)throw fa(ea);this.id=n,this.idType=Ri.USER_ASSIGNED_RESOURCE_ID}else if(r){if(t||n)throw fa(ea);this.id=r,this.idType=Ri.USER_ASSIGNED_OBJECT_ID}else this.id=`system_assigned_managed_identity`,this.idType=Ri.SYSTEM_ASSIGNED}};let ma={invalidLoopbackAddressType:{code:`invalid_loopback_server_address_type`,desc:`Loopback server address is not type string. This is unexpected.`},unableToLoadRedirectUri:{code:`unable_to_load_redirectUrl`,desc:`Loopback server callback was invoked without a url. This is unexpected.`},noAuthCodeInResponse:{code:`no_auth_code_in_response`,desc:`No auth code found in the server response. Please check your network trace to determine what happened.`},noLoopbackServerExists:{code:`no_loopback_server_exists`,desc:`No loopback server exists yet.`},loopbackServerAlreadyExists:{code:`loopback_server_already_exists`,desc:`Loopback server already exists. Cannot create another.`},loopbackServerTimeout:{code:`loopback_server_timeout`,desc:`Timed out waiting for auth code listener to be registered.`},stateNotFoundError:{code:`state_not_found`,desc:`State not found. Please verify that the request originated from msal.`},thumbprintMissing:{code:`thumbprint_missing_from_client_certificate`,desc:`Client certificate does not contain a SHA-1 or SHA-256 thumbprint.`},redirectUriNotSupported:{code:`redirect_uri_not_supported`,desc:`RedirectUri is not supported in this scenario. Please remove redirectUri from the request.`}};var ha=class e extends V{constructor(e,t){super(e,t),this.name=`NodeAuthError`}static createInvalidLoopbackAddressTypeError(){return new e(ma.invalidLoopbackAddressType.code,`${ma.invalidLoopbackAddressType.desc}`)}static createUnableToLoadRedirectUrlError(){return new e(ma.unableToLoadRedirectUri.code,`${ma.unableToLoadRedirectUri.desc}`)}static createNoAuthCodeInResponseError(){return new e(ma.noAuthCodeInResponse.code,`${ma.noAuthCodeInResponse.desc}`)}static createNoLoopbackServerExistsError(){return new e(ma.noLoopbackServerExists.code,`${ma.noLoopbackServerExists.desc}`)}static createLoopbackServerAlreadyExistsError(){return new e(ma.loopbackServerAlreadyExists.code,`${ma.loopbackServerAlreadyExists.desc}`)}static createLoopbackServerTimeoutError(){return new e(ma.loopbackServerTimeout.code,`${ma.loopbackServerTimeout.desc}`)}static createStateNotFoundError(){return new e(ma.stateNotFoundError.code,ma.stateNotFoundError.desc)}static createThumbprintMissingError(){return new e(ma.thumbprintMissing.code,ma.thumbprintMissing.desc)}static createRedirectUriNotSupportedError(){return new e(ma.redirectUriNotSupported.code,ma.redirectUriNotSupported.desc)}};let ga={clientId:u.EMPTY_STRING,authority:u.DEFAULT_AUTHORITY,clientSecret:u.EMPTY_STRING,clientAssertion:u.EMPTY_STRING,clientCertificate:{thumbprint:u.EMPTY_STRING,thumbprintSha256:u.EMPTY_STRING,privateKey:u.EMPTY_STRING,x5c:u.EMPTY_STRING},knownAuthorities:[],cloudDiscoveryMetadata:u.EMPTY_STRING,authorityMetadata:u.EMPTY_STRING,clientCapabilities:[],protocolMode:jt.AAD,azureCloudOptions:{azureCloudInstance:Je.None,tenant:u.EMPTY_STRING},skipAuthorityMetadataCache:!1,encodeExtraQueryParams:!1},_a={claimsBasedCachingEnabled:!1},va={loggerCallback:()=>{},piiLoggingEnabled:!1,logLevel:e.LogLevel.Info},ya={loggerOptions:va,networkClient:new Zi,proxyUrl:u.EMPTY_STRING,customAgentOptions:{},disableInternalRetries:!1},ba={application:{appName:u.EMPTY_STRING,appVersion:u.EMPTY_STRING}};function xa({auth:e,broker:t,cache:n,system:r,telemetry:i}){let a={...ya,networkClient:new Zi(r?.proxyUrl,r?.customAgentOptions),loggerOptions:r?.loggerOptions||va,disableInternalRetries:r?.disableInternalRetries||!1};if(e.clientCertificate&&!e.clientCertificate.thumbprint&&!e.clientCertificate.thumbprintSha256)throw ha.createStateNotFoundError();return{auth:{...ga,...e},broker:{...t},cache:{..._a,...n},system:{...a,...r},telemetry:{...ba,...i}}}function Sa({clientCapabilities:e,managedIdentityIdParams:t,system:n}){let r=new pa(t),i=n?.loggerOptions||va,a;return a=n?.networkClient?n.networkClient:new Zi(n?.proxyUrl,n?.customAgentOptions),{clientCapabilities:e||[],managedIdentityId:r,system:{loggerOptions:i,networkClient:a},disableInternalRetries:n?.disableInternalRetries||!1}}var Ca=class{generateGuid(){return r.v4()}isGuid(e){return/^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i.test(e)}},wa=class e{static base64Encode(e,t){return Buffer.from(e,t).toString(I.BASE64)}static base64EncodeUrl(t,n){return e.base64Encode(t,n).replace(/=/g,u.EMPTY_STRING).replace(/\+/g,`-`).replace(/\//g,`_`)}static base64Decode(e){return Buffer.from(e,I.BASE64).toString(`utf8`)}static base64DecodeUrl(t){let n=t.replace(/-/g,`+`).replace(/_/g,`/`);for(;n.length%4;)n+=`=`;return e.base64Decode(n)}},Ta=class{sha256(e){return i.createHash(Vi.SHA256).update(e).digest()}},Ea=class{constructor(){this.hashUtils=new Ta}async generatePkceCodes(){let e=this.generateCodeVerifier();return{verifier:e,challenge:this.generateCodeChallengeFromVerifier(e)}}generateCodeVerifier(){let e=[],t=256-256%Hi.CV_CHARSET.length;for(;e.length<=32;){let n=i.randomBytes(1)[0];if(n>=t)continue;let r=n%Hi.CV_CHARSET.length;e.push(Hi.CV_CHARSET[r])}let n=e.join(u.EMPTY_STRING);return wa.base64EncodeUrl(n)}generateCodeChallengeFromVerifier(e){return wa.base64EncodeUrl(this.hashUtils.sha256(e).toString(I.BASE64),I.BASE64)}},Da=class{constructor(){this.pkceGenerator=new Ea,this.guidGenerator=new Ca,this.hashUtils=new Ta}base64UrlEncode(){throw Error(`Method not implemented.`)}encodeKid(){throw Error(`Method not implemented.`)}createNewGuid(){return this.guidGenerator.generateGuid()}base64Encode(e){return wa.base64Encode(e)}base64Decode(e){return wa.base64Decode(e)}generatePkceCodes(){return this.pkceGenerator.generatePkceCodes()}getPublicKeyThumbprint(){throw Error(`Method not implemented.`)}removeTokenBindingKey(){throw Error(`Method not implemented.`)}clearKeystore(){throw Error(`Method not implemented.`)}signJwt(){throw Error(`Method not implemented.`)}async hashString(e){return wa.base64EncodeUrl(this.hashUtils.sha256(e).toString(I.BASE64),I.BASE64)}};function Oa(e){let t=e.credentialType===T.REFRESH_TOKEN&&e.familyId||e.clientId,n=e.tokenType&&e.tokenType.toLowerCase()!==A.BEARER.toLowerCase()?e.tokenType.toLowerCase():``;return[e.homeAccountId,e.environment,e.credentialType,t,e.realm||``,e.target||``,e.requestedClaimsHash||``,n].join(Ui.KEY_SEPARATOR).toLowerCase()}function ka(e){let t=e.homeAccountId.split(`.`)[1];return[e.homeAccountId,e.environment,t||e.tenantId||``].join(Ui.KEY_SEPARATOR).toLowerCase()}var Aa=class extends $t{constructor(e,t,n,r){super(t,n,e,new a.StubPerformanceClient,r),this.cache={},this.changeEmitters=[],this.logger=e}registerChangeEmitter(e){this.changeEmitters.push(e)}emitChange(){this.changeEmitters.forEach(e=>e.call(null))}cacheToInMemoryCache(e){let t={accounts:{},idTokens:{},accessTokens:{},refreshTokens:{},appMetadata:{}};for(let n in e){let r=e[n];if(typeof r==`object`)if(r instanceof Mt)t.accounts[n]=r;else if(jr(r))t.idTokens[n]=r;else if(Ar(r))t.accessTokens[n]=r;else if(Mr(r))t.refreshTokens[n]=r;else if(Ir(n,r))t.appMetadata[n]=r;else continue}return t}inMemoryCacheToCache(e){let t=this.getCache();return t={...t,...e.accounts,...e.idTokens,...e.accessTokens,...e.refreshTokens,...e.appMetadata},t}getInMemoryCache(){return this.logger.trace(`Getting in-memory cache`),this.cacheToInMemoryCache(this.getCache())}setInMemoryCache(e){this.logger.trace(`Setting in-memory cache`);let t=this.inMemoryCacheToCache(e);this.setCache(t),this.emitChange()}getCache(){return this.logger.trace(`Getting cache key-value store`),this.cache}setCache(e){this.logger.trace(`Setting cache key value store`),this.cache=e,this.emitChange()}getItem(e){return this.logger.tracePii(`Item key: ${e}`),this.getCache()[e]}setItem(e,t){this.logger.tracePii(`Item key: ${e}`);let n=this.getCache();n[e]=t,this.setCache(n)}generateCredentialKey(e){return Oa(e)}generateAccountKey(e){return ka(e)}getAccountKeys(){let e=this.getInMemoryCache();return Object.keys(e.accounts)}getTokenKeys(){let e=this.getInMemoryCache();return{idToken:Object.keys(e.idTokens),accessToken:Object.keys(e.accessTokens),refreshToken:Object.keys(e.refreshTokens)}}getAccount(e){return this.getItem(e)?Object.assign(new Mt,this.getItem(e)):null}async setAccount(e){let t=this.generateAccountKey(Mt.getAccountInfo(e));this.setItem(t,e)}getIdTokenCredential(e){let t=this.getItem(e);return jr(t)?t:null}async setIdTokenCredential(e){let t=this.generateCredentialKey(e);this.setItem(t,e)}getAccessTokenCredential(e){let t=this.getItem(e);return Ar(t)?t:null}async setAccessTokenCredential(e){let t=this.generateCredentialKey(e);this.setItem(t,e)}getRefreshTokenCredential(e){let t=this.getItem(e);return Mr(t)?t:null}async setRefreshTokenCredential(e){let t=this.generateCredentialKey(e);this.setItem(t,e)}getAppMetadata(e){let t=this.getItem(e);return Ir(e,t)?t:null}setAppMetadata(e){let t=Fr(e);this.setItem(t,e)}getServerTelemetry(e){let t=this.getItem(e);return t&&Nr(e,t)?t:null}setServerTelemetry(e,t){this.setItem(e,t)}getAuthorityMetadata(e){let t=this.getItem(e);return t&&Lr(e,t)?t:null}getAuthorityMetadataKeys(){return this.getKeys().filter(e=>this.isAuthorityMetadata(e))}setAuthorityMetadata(e,t){this.setItem(e,t)}getThrottlingCache(e){let t=this.getItem(e);return t&&Pr(e,t)?t:null}setThrottlingCache(e,t){this.setItem(e,t)}removeItem(e){this.logger.tracePii(`Item key: ${e}`);let t=!1,n=this.getCache();return n[e]&&(delete n[e],t=!0),t&&(this.setCache(n),this.emitChange()),t}removeOutdatedAccount(e){this.removeItem(e)}containsKey(e){return this.getKeys().includes(e)}getKeys(){this.logger.trace(`Retrieving all cache keys`);let e=this.getCache();return[...Object.keys(e)]}clear(){this.logger.trace(`Clearing cache entries created by MSAL`),this.getKeys().forEach(e=>{this.removeItem(e)}),this.emitChange()}static generateInMemoryCache(e){return ji.deserializeAllCache(ji.deserializeJSONBlob(e))}static generateJsonCache(e){return l.serializeAllCache(e)}updateCredentialCacheKey(e,t){let n=this.generateCredentialKey(t);if(e!==n){let r=this.getItem(e);if(r)return this.removeItem(e),this.setItem(n,r),this.logger.verbose(`Updated an outdated ${t.credentialType} cache key`),n;this.logger.error(`Attempted to update an outdated ${t.credentialType} cache key but no item matching the outdated key was found in storage`)}return e}};let ja={Account:{},IdToken:{},AccessToken:{},RefreshToken:{},AppMetadata:{}};var Ma=class{constructor(e,t,n){this.cacheHasChanged=!1,this.storage=e,this.storage.registerChangeEmitter(this.handleChangeEvent.bind(this)),n&&(this.persistence=n),this.logger=t}hasChanged(){return this.cacheHasChanged}serialize(){this.logger.trace(`Serializing in-memory cache`);let e=l.serializeAllCache(this.storage.getInMemoryCache());return this.cacheSnapshot?(this.logger.trace(`Reading cache snapshot from disk`),e=this.mergeState(JSON.parse(this.cacheSnapshot),e)):this.logger.trace(`No cache snapshot to merge`),this.cacheHasChanged=!1,JSON.stringify(e)}deserialize(e){if(this.logger.trace(`Deserializing JSON to in-memory cache`),this.cacheSnapshot=e,this.cacheSnapshot){this.logger.trace(`Reading cache snapshot from disk`);let e=ji.deserializeAllCache(this.overlayDefaults(JSON.parse(this.cacheSnapshot)));this.storage.setInMemoryCache(e)}else this.logger.trace(`No cache snapshot to deserialize`)}getKVStore(){return this.storage.getCache()}getCacheSnapshot(){let e=Aa.generateInMemoryCache(this.cacheSnapshot);return this.storage.inMemoryCacheToCache(e)}async getAllAccounts(e=new Da().createNewGuid()){this.logger.trace(`getAllAccounts called`);let t;try{return this.persistence&&(t=new _i(this,!1),await this.persistence.beforeCacheAccess(t)),this.storage.getAllAccounts({},e)}finally{this.persistence&&t&&await this.persistence.afterCacheAccess(t)}}async getAccountByHomeId(e){let t=await this.getAllAccounts();return e&&t&&t.length&&t.filter(t=>t.homeAccountId===e)[0]||null}async getAccountByLocalId(e){let t=await this.getAllAccounts();return e&&t&&t.length&&t.filter(t=>t.localAccountId===e)[0]||null}async removeAccount(e,t){this.logger.trace(`removeAccount called`);let n;try{this.persistence&&(n=new _i(this,!0),await this.persistence.beforeCacheAccess(n)),this.storage.removeAccount(e,t||new Ca().generateGuid())}finally{this.persistence&&n&&await this.persistence.afterCacheAccess(n)}}async overwriteCache(){if(!this.persistence){this.logger.info(`No persistence layer specified, cache cannot be overwritten`);return}this.logger.info(`Overwriting in-memory cache with persistent cache`),this.storage.clear();let e=new _i(this,!1);await this.persistence.beforeCacheAccess(e);let t=this.getCacheSnapshot();this.storage.setCache(t),await this.persistence.afterCacheAccess(e)}handleChangeEvent(){this.cacheHasChanged=!0}mergeState(e,t){this.logger.trace(`Merging in-memory cache with cache snapshot`);let n=this.mergeRemovals(e,t);return this.mergeUpdates(n,t)}mergeUpdates(e,t){return Object.keys(t).forEach(n=>{let r=t[n];if(!e.hasOwnProperty(n))r!==null&&(e[n]=r);else{let t=r!==null,i=typeof r==`object`,a=!Array.isArray(r),o=e[n]!==void 0&&e[n]!==null;t&&i&&a&&o?this.mergeUpdates(e[n],r):e[n]=r}}),e}mergeRemovals(e,t){this.logger.trace(`Remove updated entries in cache`);let n=e.Account?this.mergeRemovalsDict(e.Account,t.Account):e.Account,r=e.AccessToken?this.mergeRemovalsDict(e.AccessToken,t.AccessToken):e.AccessToken,i=e.RefreshToken?this.mergeRemovalsDict(e.RefreshToken,t.RefreshToken):e.RefreshToken,a=e.IdToken?this.mergeRemovalsDict(e.IdToken,t.IdToken):e.IdToken,o=e.AppMetadata?this.mergeRemovalsDict(e.AppMetadata,t.AppMetadata):e.AppMetadata;return{...e,Account:n,AccessToken:r,RefreshToken:i,IdToken:a,AppMetadata:o}}mergeRemovalsDict(e,t){let n={...e};return Object.keys(e).forEach(e=>{(!t||!t.hasOwnProperty(e))&&delete n[e]}),n}overlayDefaults(e){return this.logger.trace(`Overlaying input cache with the default cache`),{Account:{...ja.Account,...e.Account},IdToken:{...ja.IdToken,...e.IdToken},AccessToken:{...ja.AccessToken,...e.AccessToken},RefreshToken:{...ja.RefreshToken,...e.RefreshToken},AppMetadata:{...ja.AppMetadata,...e.AppMetadata}}}},Na=class e{static fromAssertion(t){let n=new e;return n.jwt=t,n}static fromCertificate(t,n,r){let i=new e;return i.privateKey=n,i.thumbprint=t,i.useSha256=!1,r&&(i.publicCertificate=this.parseCertificate(r)),i}static fromCertificateWithSha256Thumbprint(t,n,r){let i=new e;return i.privateKey=n,i.thumbprint=t,i.useSha256=!0,r&&(i.publicCertificate=this.parseCertificate(r)),i}getJwt(e,t,n){if(this.privateKey&&this.thumbprint)return this.jwt&&!this.isExpired()&&t===this.issuer&&n===this.jwtAudience?this.jwt:this.createJwt(e,t,n);if(this.jwt)return this.jwt;throw X(ke)}createJwt(e,t,n){this.issuer=t,this.jwtAudience=n;let r=xr();this.expirationTime=r+600;let i={alg:this.useSha256?Ki.PSS_256:Ki.RSA_256},a=this.useSha256?Ki.X5T_256:Ki.X5T;Object.assign(i,{[a]:wa.base64EncodeUrl(this.thumbprint,I.HEX)}),this.publicCertificate&&Object.assign(i,{[Ki.X5C]:this.publicCertificate});let s={[Ki.AUDIENCE]:this.jwtAudience,[Ki.EXPIRATION_TIME]:this.expirationTime,[Ki.ISSUER]:this.issuer,[Ki.SUBJECT]:this.issuer,[Ki.NOT_BEFORE]:r,[Ki.JWT_ID]:e.createNewGuid()};return this.jwt=o.sign(s,this.privateKey,{header:i}),this.jwt}isExpired(){return this.expirationTime0)&&zn(t,e.claims,this.config.authOptions.clientCapabilities),this.config.systemOptions.preventCorsPreflight&&e.username&&In(t,e.username),Q(t)}};function Fa(e,t,n,r){let i=wi({...e.auth,authority:t,redirectUri:n.redirectUri||``},n,r);return Vn(i,{sku:Wi.MSAL_SKU,version:Xi,cpu:process.arch||``,os:process.platform||``}),e.auth.protocolMode!==jt.OIDC&&Hn(i,e.telemetry.application),Dn(i,b.CODE),n.codeChallenge&&n.codeChallengeMethod&&Kn(i,n.codeChallenge,n.codeChallengeMethod),ar(i,n.extraQueryParameters||{}),Ti(t,i,e.auth.encodeExtraQueryParams,n.extraQueryParameters)}var Ia=class{constructor(e){this.config=xa(e),this.cryptoProvider=new Da,this.logger=new Ge(this.config.system.loggerOptions,Yi,Xi),this.storage=new Aa(this.logger,this.config.auth.clientId,this.cryptoProvider,Gr(this.config.auth)),this.tokenCache=new Ma(this.storage,this.logger,this.config.cache.cachePlugin)}async getAuthCodeUrl(e){this.logger.info(`getAuthCodeUrl called`,e.correlationId);let t={...e,...await this.initializeBaseRequest(e),responseMode:e.responseMode||x.QUERY,authenticationScheme:A.BEARER,state:e.state||``,nonce:e.nonce||``},n=await this.createAuthority(t.authority,t.correlationId,void 0,e.azureCloudOptions);return Fa(this.config,n,t,this.logger)}async acquireTokenByCode(e,t){this.logger.info(`acquireTokenByCode called`),e.state&&t&&(this.logger.info(`acquireTokenByCode - validating state`),this.validateState(e.state,t.state||``),t={...t,state:``});let n={...e,...await this.initializeBaseRequest(e),authenticationScheme:A.BEARER},r=this.initializeServerTelemetryManager(Gi.acquireTokenByCode,n.correlationId);try{let i=await this.createAuthority(n.authority,n.correlationId,void 0,e.azureCloudOptions),a=new xi(await this.buildOauthClientConfiguration(i,n.correlationId,n.redirectUri,r));return this.logger.verbose(`Auth code client created`,n.correlationId),await a.acquireToken(n,t)}catch(e){throw e instanceof V&&e.setCorrelationId(n.correlationId),r.cacheFailedRequest(e),e}}async acquireTokenByRefreshToken(e){this.logger.info(`acquireTokenByRefreshToken called`,e.correlationId);let t={...e,...await this.initializeBaseRequest(e),authenticationScheme:A.BEARER},n=this.initializeServerTelemetryManager(Gi.acquireTokenByRefreshToken,t.correlationId);try{let r=await this.createAuthority(t.authority,t.correlationId,void 0,e.azureCloudOptions),i=new Si(await this.buildOauthClientConfiguration(r,t.correlationId,t.redirectUri||``,n));return this.logger.verbose(`Refresh token client created`,t.correlationId),await i.acquireToken(t)}catch(e){throw e instanceof V&&e.setCorrelationId(t.correlationId),n.cacheFailedRequest(e),e}}async acquireTokenSilent(e){let t={...e,...await this.initializeBaseRequest(e),forceRefresh:e.forceRefresh||!1},n=this.initializeServerTelemetryManager(Gi.acquireTokenSilent,t.correlationId,t.forceRefresh);try{let r=await this.createAuthority(t.authority,t.correlationId,void 0,e.azureCloudOptions),i=await this.buildOauthClientConfiguration(r,t.correlationId,t.redirectUri||``,n),a=new Ci(i);this.logger.verbose(`Silent flow client created`,t.correlationId);try{return await this.tokenCache.overwriteCache(),await this.acquireCachedTokenSilent(t,a,i)}catch(e){if(e instanceof Ue&&e.errorCode===je)return new Si(i).acquireTokenByRefreshToken(t);throw e}}catch(e){throw e instanceof V&&e.setCorrelationId(t.correlationId),n.cacheFailedRequest(e),e}}async acquireCachedTokenSilent(e,t,n){let[r,i]=await t.acquireCachedToken({...e,scopes:e.scopes?.length?e.scopes:[...p]});if(i===F.PROACTIVELY_REFRESHED){this.logger.info(`ClientApplication:acquireCachedTokenSilent - Cached access token's refreshOn property has been exceeded'. It's not expired, but must be refreshed.`);let t=new Si(n);try{await t.acquireTokenByRefreshToken(e)}catch{}}return r}async acquireTokenByUsernamePassword(e){this.logger.info(`acquireTokenByUsernamePassword called`,e.correlationId);let t={...e,...await this.initializeBaseRequest(e)},n=this.initializeServerTelemetryManager(Gi.acquireTokenByUsernamePassword,t.correlationId);try{let r=await this.createAuthority(t.authority,t.correlationId,void 0,e.azureCloudOptions),i=new Pa(await this.buildOauthClientConfiguration(r,t.correlationId,``,n));return this.logger.verbose(`Username password client created`,t.correlationId),await i.acquireToken(t)}catch(e){throw e instanceof V&&e.setCorrelationId(t.correlationId),n.cacheFailedRequest(e),e}}getTokenCache(){return this.logger.info(`getTokenCache called`),this.tokenCache}validateState(e,t){if(!e)throw ha.createStateNotFoundError();if(e!==t)throw X(ce)}getLogger(){return this.logger}setLogger(e){this.logger=e}async buildOauthClientConfiguration(e,t,n,r){return this.logger.verbose(`buildOauthClientConfiguration called`,t),this.logger.info(`Building oauth client configuration with the following authority: ${e.tokenEndpoint}.`,t),r?.updateRegionDiscoveryMetadata(e.regionDiscoveryMetadata),{authOptions:{clientId:this.config.auth.clientId,authority:e,clientCapabilities:this.config.auth.clientCapabilities,redirectUri:n},loggerOptions:{logLevel:this.config.system.loggerOptions.logLevel,loggerCallback:this.config.system.loggerOptions.loggerCallback,piiLoggingEnabled:this.config.system.loggerOptions.piiLoggingEnabled,correlationId:t},cacheOptions:{claimsBasedCachingEnabled:this.config.cache.claimsBasedCachingEnabled},cryptoInterface:this.cryptoProvider,networkInterface:this.config.system.networkClient,storageInterface:this.storage,serverTelemetryManager:r,clientCredentials:{clientSecret:this.clientSecret,clientAssertion:await this.getClientAssertion(e)},libraryInfo:{sku:Wi.MSAL_SKU,version:Xi,cpu:process.arch||u.EMPTY_STRING,os:process.platform||u.EMPTY_STRING},telemetry:this.config.telemetry,persistencePlugin:this.config.cache.cachePlugin,serializableCache:this.tokenCache}}async getClientAssertion(e){return this.developerProvidedClientAssertion&&(this.clientAssertion=Na.fromAssertion(await bi(this.developerProvidedClientAssertion,this.config.auth.clientId,e.tokenEndpoint))),this.clientAssertion&&{assertion:this.clientAssertion.getJwt(this.cryptoProvider,this.config.auth.clientId,e.tokenEndpoint),assertionType:Wi.JWT_BEARER_ASSERTION_TYPE}}async initializeBaseRequest(e){return this.logger.verbose(`initializeRequestScopes called`,e.correlationId),e.authenticationScheme&&e.authenticationScheme===A.POP&&this.logger.verbose(`Authentication Scheme 'pop' is not supported yet, setting Authentication Scheme to 'Bearer' for request`,e.correlationId),e.authenticationScheme=A.BEARER,this.config.cache.claimsBasedCachingEnabled&&e.claims&&!St.isEmptyObj(e.claims)&&(e.requestedClaimsHash=await this.cryptoProvider.hashString(e.claims)),{...e,scopes:[...e&&e.scopes||[],...p],correlationId:e&&e.correlationId||this.cryptoProvider.createNewGuid(),authority:e.authority||this.config.auth.authority}}initializeServerTelemetryManager(e,t,n){return new Ai({clientId:this.config.auth.clientId,correlationId:t,apiId:e,forceRefresh:n||!1},this.storage)}async createAuthority(e,t,n,r){this.logger.verbose(`createAuthority called`,t);let i=Hr.generateAuthority(e,r||this.config.auth.azureCloudOptions),a={protocolMode:this.config.auth.protocolMode,knownAuthorities:this.config.auth.knownAuthorities,cloudDiscoveryMetadata:this.config.auth.cloudDiscoveryMetadata,authorityMetadata:this.config.auth.authorityMetadata,azureRegionConfiguration:n,skipAuthorityMetadataCache:this.config.auth.skipAuthorityMetadataCache};return Kr(i,this.config.system.networkClient,this.storage,a,this.logger,t)}clearCache(){this.storage.clear()}},La=class{async listenForAuthCode(e,n){if(this.server)throw ha.createLoopbackServerAlreadyExistsError();return new Promise((r,i)=>{this.server=t.createServer((t,a)=>{let o=t.url;if(o){if(o===u.FORWARD_SLASH){a.end(e||`Auth code was successfully acquired. You can close this window now.`);return}}else{a.end(n||`Error occurred loading redirectUrl`),i(ha.createUnableToLoadRedirectUrlError());return}let s=this.getRedirectUri(),c=Rt(new URL(o,s).search)||{};c.code&&(a.writeHead(f.REDIRECT,{location:s}),a.end()),c.error&&a.end(n||`Error occurred: ${c.error}`),r(c)}),this.server.listen(0,`127.0.0.1`)})}getRedirectUri(){if(!this.server||!this.server.listening)throw ha.createNoLoopbackServerExistsError();let e=this.server.address();if(!e||typeof e==`string`||!e.port)throw this.closeServer(),ha.createInvalidLoopbackAddressTypeError();let t=e&&e.port;return`${Wi.HTTP_PROTOCOL}${Wi.LOCALHOST}:${t}`}closeServer(){this.server&&=(this.server.close(),typeof this.server.closeAllConnections==`function`&&this.server.closeAllConnections(),this.server.unref(),void 0)}},Ra=class extends Zr{constructor(e){super(e)}async acquireToken(e){let t=await this.getDeviceCode(e);e.deviceCodeCallback(t);let n=xr(),r=await this.acquireTokenWithDeviceCode(e,t),i=new vi(this.config.authOptions.clientId,this.cacheManager,this.cryptoUtils,this.logger,this.config.serializableCache,this.config.persistencePlugin);return i.validateTokenResponse(r),i.handleServerTokenResponse(r,this.authority,n,e)}async getDeviceCode(e){let t=this.createExtraQueryParameters(e),n=zt.appendQueryString(this.authority.deviceCodeEndpoint,t),r=this.createQueryString(e),i=this.createTokenRequestHeaders(),a={clientId:this.config.authOptions.clientId,authority:e.authority,scopes:e.scopes,claims:e.claims,authenticationScheme:e.authenticationScheme,resourceRequestMethod:e.resourceRequestMethod,resourceRequestUri:e.resourceRequestUri,shrClaims:e.shrClaims,sshKid:e.sshKid};return this.executePostRequestToDeviceCodeEndpoint(n,r,i,a,e.correlationId)}createExtraQueryParameters(e){let t=new Map;return e.extraQueryParameters&&ar(t,e.extraQueryParameters),Q(t)}async executePostRequestToDeviceCodeEndpoint(e,t,n,r,i){let{body:{user_code:a,device_code:o,verification_uri:s,expires_in:c,interval:l,message:u}}=await this.sendPostRequest(r,e,{body:t,headers:n},i);return{userCode:a,deviceCode:o,verificationUri:s,expiresIn:c,interval:l,message:u}}createQueryString(e){let t=new Map;return kn(t,e.scopes),An(t,this.config.authOptions.clientId),e.extraQueryParameters&&ar(t,e.extraQueryParameters),(e.claims||this.config.authOptions.clientCapabilities&&this.config.authOptions.clientCapabilities.length>0)&&zn(t,e.claims,this.config.authOptions.clientCapabilities),Q(t)}continuePolling(e,t,n){if(n)throw this.logger.error(`Token request cancelled by setting DeviceCodeRequest.cancel = true`),X(be);if(t&&tt)throw this.logger.error(`User defined timeout for device code polling reached. The timeout was set for ${t}`),X(Me);if(xr()>e)throw t&&this.logger.verbose(`User specified timeout ignored as the device code has expired before the timeout elapsed. The user specified timeout was set for ${t}`),this.logger.error(`Device code expired. Expiration time of device code was ${e}`),X(xe);return!0}async acquireTokenWithDeviceCode(e,t){let n=this.createTokenQueryParameters(e),r=zt.appendQueryString(this.authority.tokenEndpoint,n),i=this.createTokenRequestBody(e,t),a=this.createTokenRequestHeaders(),o=e.timeout?xr()+e.timeout:void 0,s=xr()+t.expiresIn,c=t.interval*1e3;for(;this.continuePolling(s,o,e.cancel);){let t={clientId:this.config.authOptions.clientId,authority:e.authority,scopes:e.scopes,claims:e.claims,authenticationScheme:e.authenticationScheme,resourceRequestMethod:e.resourceRequestMethod,resourceRequestUri:e.resourceRequestUri,shrClaims:e.shrClaims,sshKid:e.sshKid},n=await this.executePostToTokenEndpoint(r,i,a,t,e.correlationId);if(n.body&&n.body.error)if(n.body.error===u.AUTHORIZATION_PENDING)this.logger.info(`Authorization pending. Continue polling.`),await Tr(c);else throw this.logger.info(`Unexpected error in polling from the server`),ne(R,n.body.error);else return this.logger.verbose(`Authorization completed successfully. Polling stopped.`),n.body}throw this.logger.error(`Polling stopped for unknown reasons.`),X(Se)}createTokenRequestBody(e,t){let n=new Map;return kn(n,e.scopes),An(n,this.config.authOptions.clientId),nr(n,S.DEVICE_CODE_GRANT),Jn(n,t.deviceCode),Bn(n,e.correlationId||this.config.cryptoInterface.createNewGuid()),rr(n),Vn(n,this.config.libraryInfo),Hn(n,this.config.telemetry.application),fr(n),this.serverTelemetryManager&&dr(n,this.serverTelemetryManager),(!St.isEmptyObj(e.claims)||this.config.authOptions.clientCapabilities&&this.config.authOptions.clientCapabilities.length>0)&&zn(n,e.claims,this.config.authOptions.clientCapabilities),Q(n)}},za=class extends Ia{constructor(e){super(e),this.config.broker.nativeBrokerPlugin&&(this.config.broker.nativeBrokerPlugin.isBrokerAvailable?(this.nativeBrokerPlugin=this.config.broker.nativeBrokerPlugin,this.nativeBrokerPlugin.setLogger(this.config.system.loggerOptions)):this.logger.warning(`NativeBroker implementation was provided but the broker is unavailable.`)),this.skus=Ai.makeExtraSkuString({libraryName:Wi.MSAL_SKU,libraryVersion:Xi})}async acquireTokenByDeviceCode(e){this.logger.info(`acquireTokenByDeviceCode called`,e.correlationId);let t=Object.assign(e,await this.initializeBaseRequest(e)),n=this.initializeServerTelemetryManager(Gi.acquireTokenByDeviceCode,t.correlationId);try{let r=await this.createAuthority(t.authority,t.correlationId,void 0,e.azureCloudOptions),i=new Ra(await this.buildOauthClientConfiguration(r,t.correlationId,``,n));return this.logger.verbose(`Device code client created`,t.correlationId),await i.acquireToken(t)}catch(e){throw e instanceof V&&e.setCorrelationId(t.correlationId),n.cacheFailedRequest(e),e}}async acquireTokenInteractive(e){let t=e.correlationId||this.cryptoProvider.createNewGuid();this.logger.trace(`acquireTokenInteractive called`,t);let{openBrowser:n,successTemplate:r,errorTemplate:i,windowHandle:a,loopbackClient:o,...s}=e;if(this.nativeBrokerPlugin){let n={...s,clientId:this.config.auth.clientId,scopes:e.scopes||p,redirectUri:e.redirectUri||``,authority:e.authority||this.config.auth.authority,correlationId:t,extraParameters:{...s.extraQueryParameters,...s.tokenQueryParameters,[Sn]:this.skus},accountId:s.account?.nativeAccountId};return this.nativeBrokerPlugin.acquireTokenInteractive(n,a)}if(e.redirectUri){if(!this.config.broker.nativeBrokerPlugin)throw ha.createRedirectUriNotSupportedError();e.redirectUri=``}let{verifier:c,challenge:l}=await this.cryptoProvider.generatePkceCodes(),d=o||new La,f={},m=null;try{let a=d.listenForAuthCode(r,i).then(e=>{f=e}).catch(e=>{m=e}),o=await this.waitForRedirectUri(d),h={...s,correlationId:t,scopes:e.scopes||p,redirectUri:o,responseMode:x.QUERY,codeChallenge:l,codeChallengeMethod:y.S256};if(await n(await this.getAuthCodeUrl(h)),await a,m)throw m;if(f.error)throw new qr(f.error,f.error_description,f.suberror);if(!f.code)throw ha.createNoAuthCodeInResponseError();let g=f.client_info,_={code:f.code,codeVerifier:c,clientInfo:g||u.EMPTY_STRING,...h};return await this.acquireTokenByCode(_)}finally{d.closeServer()}}async acquireTokenSilent(e){let t=e.correlationId||this.cryptoProvider.createNewGuid();if(this.logger.trace(`acquireTokenSilent called`,t),this.nativeBrokerPlugin){let n={...e,clientId:this.config.auth.clientId,scopes:e.scopes||p,redirectUri:e.redirectUri||``,authority:e.authority||this.config.auth.authority,correlationId:t,extraParameters:{...e.tokenQueryParameters,[Sn]:this.skus},accountId:e.account.nativeAccountId,forceRefresh:e.forceRefresh||!1};return this.nativeBrokerPlugin.acquireTokenSilent(n)}if(e.redirectUri){if(!this.config.broker.nativeBrokerPlugin)throw ha.createRedirectUriNotSupportedError();e.redirectUri=``}return super.acquireTokenSilent(e)}async signOut(e){if(this.nativeBrokerPlugin&&e.account.nativeAccountId){let t={clientId:this.config.auth.clientId,accountId:e.account.nativeAccountId,correlationId:e.correlationId||this.cryptoProvider.createNewGuid()};await this.nativeBrokerPlugin.signOut(t)}await this.getTokenCache().removeAccount(e.account,e.correlationId)}async getAllAccounts(){if(this.nativeBrokerPlugin){let e=this.cryptoProvider.createNewGuid();return this.nativeBrokerPlugin.getAllAccounts(this.config.auth.clientId,e)}return this.getTokenCache().getAllAccounts()}async waitForRedirectUri(e){return new Promise((t,n)=>{let r=0,i=setInterval(()=>{if(qi.TIMEOUT_MS/qi.INTERVAL_MS1)throw X(pe);return o[0]}async executeTokenRequest(e,t,n){let r,i;if(this.appTokenProvider){this.logger.info(`Using appTokenProvider extensibility.`);let t={correlationId:e.correlationId,tenantId:this.config.authOptions.authority.tenant,scopes:e.scopes,claims:e.claims};i=xr();let n=await this.appTokenProvider(t);r={access_token:n.accessToken,expires_in:n.expiresInSeconds,refresh_in:n.refreshInSeconds,token_type:A.BEARER}}else{let n=this.createTokenQueryParameters(e),a=zt.appendQueryString(t.tokenEndpoint,n),o=await this.createTokenRequestBody(e),s=this.createTokenRequestHeaders(),c={clientId:this.config.authOptions.clientId,authority:e.authority,scopes:e.scopes,claims:e.claims,authenticationScheme:e.authenticationScheme,resourceRequestMethod:e.resourceRequestMethod,resourceRequestUri:e.resourceRequestUri,shrClaims:e.shrClaims,sshKid:e.sshKid};this.logger.info(`Sending token request to endpoint: `+t.tokenEndpoint),i=xr();let l=await this.executePostToTokenEndpoint(a,o,s,c,e.correlationId);r=l.body,r.status=l.status}let a=new vi(this.config.authOptions.clientId,this.cacheManager,this.cryptoUtils,this.logger,this.config.serializableCache,this.config.persistencePlugin);return a.validateTokenResponse(r,n),await a.handleServerTokenResponse(r,this.authority,i,e)}async createTokenRequestBody(e){let t=new Map;An(t,this.config.authOptions.clientId),kn(t,e.scopes,!1),nr(t,S.CLIENT_CREDENTIALS_GRANT),Vn(t,this.config.libraryInfo),Hn(t,this.config.telemetry.application),fr(t),this.serverTelemetryManager&&dr(t,this.serverTelemetryManager),Bn(t,e.correlationId||this.config.cryptoInterface.createNewGuid()),this.config.clientCredentials.clientSecret&&Zn(t,this.config.clientCredentials.clientSecret);let n=e.clientAssertion||this.config.clientCredentials.clientAssertion;return n&&(Qn(t,await bi(n.assertion,this.config.authOptions.clientId,e.resourceRequestUri)),$n(t,n.assertionType)),(!St.isEmptyObj(e.claims)||this.config.authOptions.clientCapabilities&&this.config.authOptions.clientCapabilities.length>0)&&zn(t,e.claims,this.config.authOptions.clientCapabilities),Q(t)}},Va=class extends Zr{constructor(e){super(e)}async acquireToken(e){if(this.scopeSet=new Ct(e.scopes||[]),this.userAssertionHash=await this.cryptoUtils.hashString(e.oboAssertion),e.skipCache||e.claims)return this.executeTokenRequest(e,this.authority,this.userAssertionHash);try{return await this.getCachedAuthenticationResult(e)}catch{return await this.executeTokenRequest(e,this.authority,this.userAssertionHash)}}async getCachedAuthenticationResult(e){let t=this.readAccessTokenFromCacheForOBO(this.config.authOptions.clientId,e);if(t){if(Cr(t.expiresOn,this.config.systemOptions.tokenRenewalOffsetSeconds))throw this.serverTelemetryManager?.setCacheOutcome(F.CACHED_ACCESS_TOKEN_EXPIRED),this.logger.info(`OnbehalfofFlow:getCachedAuthenticationResult - Cached access token is expired or will expire within ${this.config.systemOptions.tokenRenewalOffsetSeconds} seconds.`),X(je)}else throw this.serverTelemetryManager?.setCacheOutcome(F.NO_CACHED_ACCESS_TOKEN),this.logger.info(`SilentFlowClient:acquireCachedToken - No access token found in cache for the given properties.`),X(je);let n=this.readIdTokenFromCacheForOBO(t.homeAccountId,e.correlationId),r,i=null;if(n){r=Nt(n.secret,wa.base64Decode);let t=r.oid||r.sub,a={homeAccountId:n.homeAccountId,environment:n.environment,tenantId:n.realm,username:u.EMPTY_STRING,localAccountId:t||u.EMPTY_STRING};i=this.cacheManager.getAccount(this.cacheManager.generateAccountKey(a),e.correlationId)}return this.config.serverTelemetryManager&&this.config.serverTelemetryManager.incrementCacheHits(),vi.generateAuthenticationResult(this.cryptoUtils,this.authority,{account:i,accessToken:t,idToken:n,refreshToken:null,appMetadata:null},!0,e,r)}readIdTokenFromCacheForOBO(e,t){let n={homeAccountId:e,environment:this.authority.canonicalAuthorityUrlComponents.HostNameAndPort,credentialType:T.ID_TOKEN,clientId:this.config.authOptions.clientId,realm:this.authority.tenant},r=this.cacheManager.getIdTokensByFilter(n,t);return Object.values(r).length<1?null:Object.values(r)[0]}readAccessTokenFromCacheForOBO(e,t){let n=t.authenticationScheme||A.BEARER,r={credentialType:n.toLowerCase()===A.BEARER.toLowerCase()?T.ACCESS_TOKEN:T.ACCESS_TOKEN_WITH_AUTH_SCHEME,clientId:e,target:Ct.createSearchScopes(this.scopeSet.asArray()),tokenType:n,keyId:t.sshKid,requestedClaimsHash:t.requestedClaimsHash,userAssertionHash:this.userAssertionHash},i=this.cacheManager.getAccessTokensByFilter(r,t.correlationId),a=i.length;if(a<1)return null;if(a>1)throw X(pe);return i[0]}async executeTokenRequest(e,t,n){let r=this.createTokenQueryParameters(e),i=zt.appendQueryString(t.tokenEndpoint,r),a=await this.createTokenRequestBody(e),o=this.createTokenRequestHeaders(),s={clientId:this.config.authOptions.clientId,authority:e.authority,scopes:e.scopes,claims:e.claims,authenticationScheme:e.authenticationScheme,resourceRequestMethod:e.resourceRequestMethod,resourceRequestUri:e.resourceRequestUri,shrClaims:e.shrClaims,sshKid:e.sshKid},c=xr(),l=await this.executePostToTokenEndpoint(i,a,o,s,e.correlationId),u=new vi(this.config.authOptions.clientId,this.cacheManager,this.cryptoUtils,this.logger,this.config.serializableCache,this.config.persistencePlugin);return u.validateTokenResponse(l.body),await u.handleServerTokenResponse(l.body,this.authority,c,e,void 0,n)}async createTokenRequestBody(e){let t=new Map;An(t,this.config.authOptions.clientId),kn(t,e.scopes),nr(t,S.JWT_BEARER),rr(t),Vn(t,this.config.libraryInfo),Hn(t,this.config.telemetry.application),fr(t),this.serverTelemetryManager&&dr(t,this.serverTelemetryManager),Bn(t,e.correlationId||this.config.cryptoInterface.createNewGuid()),tr(t,`on_behalf_of`),er(t,e.oboAssertion),this.config.clientCredentials.clientSecret&&Zn(t,this.config.clientCredentials.clientSecret);let n=this.config.clientCredentials.clientAssertion;return n&&(Qn(t,await bi(n.assertion,this.config.authOptions.clientId,e.resourceRequestUri)),$n(t,n.assertionType)),(e.claims||this.config.authOptions.clientCapabilities&&this.config.authOptions.clientCapabilities.length>0)&&zn(t,e.claims,this.config.authOptions.clientCapabilities),Q(t)}},Ha=class extends Ia{constructor(e){super(e);let t=!!this.config.auth.clientSecret,n=!!this.config.auth.clientAssertion,r=(!!this.config.auth.clientCertificate?.thumbprint||!!this.config.auth.clientCertificate?.thumbprintSha256)&&!!this.config.auth.clientCertificate?.privateKey;if(!this.appTokenProvider){if(t&&n||n&&r||t&&r)throw X(Ae);if(this.config.auth.clientSecret){this.clientSecret=this.config.auth.clientSecret;return}if(this.config.auth.clientAssertion){this.developerProvidedClientAssertion=this.config.auth.clientAssertion;return}if(r)this.clientAssertion=this.config.auth.clientCertificate.thumbprintSha256?Na.fromCertificateWithSha256Thumbprint(this.config.auth.clientCertificate.thumbprintSha256,this.config.auth.clientCertificate.privateKey,this.config.auth.clientCertificate.x5c):Na.fromCertificate(this.config.auth.clientCertificate.thumbprint,this.config.auth.clientCertificate.privateKey,this.config.auth.clientCertificate.x5c);else throw X(Ae);this.appTokenProvider=void 0}}SetAppTokenProvider(e){this.appTokenProvider=e}async acquireTokenByClientCredential(e){this.logger.info(`acquireTokenByClientCredential called`,e.correlationId);let t;e.clientAssertion&&(t={assertion:await bi(e.clientAssertion,this.config.auth.clientId),assertionType:Wi.JWT_BEARER_ASSERTION_TYPE});let n=await this.initializeBaseRequest(e),r={...n,scopes:n.scopes.filter(e=>!p.includes(e))},i={...e,...r,clientAssertion:t},a=new zt(i.authority).getUrlComponents().PathSegments[0];if(Object.values(g).includes(a))throw X(q);let o=process.env.MSAL_FORCE_REGION,s;i.azureRegion!==`DisableMsalForceRegion`&&(s=!i.azureRegion&&o?o:i.azureRegion);let c={azureRegion:s,environmentRegion:process.env.REGION_NAME},l=this.initializeServerTelemetryManager(Gi.acquireTokenByClientCredential,i.correlationId,i.skipCache);try{let t=await this.createAuthority(i.authority,i.correlationId,c,e.azureCloudOptions),n=new Ba(await this.buildOauthClientConfiguration(t,i.correlationId,``,l),this.appTokenProvider);return this.logger.verbose(`Client credential client created`,i.correlationId),await n.acquireToken(i)}catch(e){throw e instanceof V&&e.setCorrelationId(i.correlationId),l.cacheFailedRequest(e),e}}async acquireTokenOnBehalfOf(e){this.logger.info(`acquireTokenOnBehalfOf called`,e.correlationId);let t={...e,...await this.initializeBaseRequest(e)};try{let n=await this.createAuthority(t.authority,t.correlationId,void 0,e.azureCloudOptions),r=new Va(await this.buildOauthClientConfiguration(n,t.correlationId,``,void 0));return this.logger.verbose(`On behalf of client created`,t.correlationId),await r.acquireToken(t)}catch(e){throw e instanceof V&&e.setCorrelationId(t.correlationId),e}}};function Ua(e){if(typeof e!=`string`)return!1;let t=new Date(e);return!isNaN(t.getTime())&&t.toISOString()===e}var Wa=class{constructor(e,t,n){this.httpClientNoRetries=e,this.retryPolicy=t,this.logger=n}async sendNetworkRequestAsyncHelper(e,t,n){return e===zi.GET?this.httpClientNoRetries.sendGetRequestAsync(t,n):this.httpClientNoRetries.sendPostRequestAsync(t,n)}async sendNetworkRequestAsync(e,t,n){let r=await this.sendNetworkRequestAsyncHelper(e,t,n);`isNewRequest`in this.retryPolicy&&(this.retryPolicy.isNewRequest=!0);let i=0;for(;await this.retryPolicy.pauseForRetry(r.status,i,this.logger,r.headers[h.RETRY_AFTER]);)r=await this.sendNetworkRequestAsyncHelper(e,t,n),i++;return r}async sendGetRequestAsync(e,t){return this.sendNetworkRequestAsync(zi.GET,e,t)}async sendPostRequestAsync(e,t){return this.sendNetworkRequestAsync(zi.POST,e,t)}};let Ga={MANAGED_IDENTITY_CLIENT_ID_2017:`clientid`,MANAGED_IDENTITY_CLIENT_ID:`client_id`,MANAGED_IDENTITY_OBJECT_ID:`object_id`,MANAGED_IDENTITY_RESOURCE_ID_IMDS:`msi_res_id`,MANAGED_IDENTITY_RESOURCE_ID_NON_IMDS:`mi_res_id`};var Ka=class{constructor(e,t,n,r,i){this.logger=e,this.nodeStorage=t,this.networkClient=n,this.cryptoProvider=r,this.disableInternalRetries=i}async getServerTokenResponseAsync(e,t,n,r){return this.getServerTokenResponse(e)}getServerTokenResponse(e){let t,n;return e.body.expires_on&&(Ua(e.body.expires_on)&&(e.body.expires_on=new Date(e.body.expires_on).getTime()/1e3),n=e.body.expires_on-xr(),n>2*3600&&(t=n/2)),{status:e.status,access_token:e.body.access_token,expires_in:n,scope:e.body.resource,token_type:e.body.token_type,refresh_in:t,correlation_id:e.body.correlation_id||e.body.correlationId,error:typeof e.body.error==`string`?e.body.error:e.body.error?.code,error_description:e.body.message||(typeof e.body.error==`string`?e.body.error_description:e.body.error?.message),error_codes:e.body.error_codes,timestamp:e.body.timestamp,trace_id:e.body.trace_id}}async acquireTokenWithManagedIdentity(e,t,n,r){let i=this.createRequest(e.resource,t);if(e.revokedTokenSha256Hash&&(this.logger.info(`[Managed Identity] The following claims are present in the request: ${e.claims}`),i.queryParameters[Fi.SHA256_TOKEN_TO_REFRESH]=e.revokedTokenSha256Hash),e.clientCapabilities?.length){let t=e.clientCapabilities.toString();this.logger.info(`[Managed Identity] The following client capabilities are present in the request: ${t}`),i.queryParameters[Fi.XMS_CC]=t}let a=i.headers;a[h.CONTENT_TYPE]=u.URL_FORM_CONTENT_TYPE;let o={headers:a};Object.keys(i.bodyParameters).length&&(o.body=i.computeParametersBodyString());let s=this.disableInternalRetries?this.networkClient:new Wa(this.networkClient,i.retryPolicy,this.logger),c=xr(),l;try{l=i.httpMethod===zi.POST?await s.sendPostRequestAsync(i.computeUri(),o):await s.sendGetRequestAsync(i.computeUri(),o)}catch(e){throw e instanceof V?e:X(ae)}let d=new vi(t.id,this.nodeStorage,this.cryptoProvider,this.logger,null,null),f=await this.getServerTokenResponseAsync(l,s,i,o);return d.validateTokenResponse(f,r),d.handleServerTokenResponse(f,n,c,e)}getManagedIdentityUserAssignedIdQueryParameterKey(e,t,n){switch(e){case Ri.USER_ASSIGNED_CLIENT_ID:return this.logger.info(`[Managed Identity] [API version ${n?`2017+`:`2019+`}] Adding user assigned client id to the request.`),n?Ga.MANAGED_IDENTITY_CLIENT_ID_2017:Ga.MANAGED_IDENTITY_CLIENT_ID;case Ri.USER_ASSIGNED_RESOURCE_ID:return this.logger.info(`[Managed Identity] Adding user assigned resource id to the request.`),t?Ga.MANAGED_IDENTITY_RESOURCE_ID_IMDS:Ga.MANAGED_IDENTITY_RESOURCE_ID_NON_IMDS;case Ri.USER_ASSIGNED_OBJECT_ID:return this.logger.info(`[Managed Identity] Adding user assigned object id to the request.`),Ga.MANAGED_IDENTITY_OBJECT_ID;default:throw fa(ea)}}};Ka.getValidatedEnvVariableUrlString=(e,t,n,r)=>{try{return new zt(t).urlString}catch{throw r.info(`[Managed Identity] ${n} managed identity is unavailable because the '${e}' environment variable is malformed.`),fa(la[e])}};var qa=class{calculateDelay(e,t){if(!e)return t;let n=Math.round(parseFloat(e)*1e3);return isNaN(n)&&(n=new Date(e).valueOf()-new Date().valueOf()),Math.max(t,n)}};let Ja=[a.HttpStatus.NOT_FOUND,a.HttpStatus.REQUEST_TIMEOUT,a.HttpStatus.TOO_MANY_REQUESTS,a.HttpStatus.SERVER_ERROR,a.HttpStatus.SERVICE_UNAVAILABLE,a.HttpStatus.GATEWAY_TIMEOUT];var Ya=class e{constructor(){this.linearRetryStrategy=new qa}static get DEFAULT_MANAGED_IDENTITY_RETRY_DELAY_MS(){return 1e3}async pauseForRetry(t,n,r,i){if(Ja.includes(t)&&n<3){let t=this.linearRetryStrategy.calculateDelay(i,e.DEFAULT_MANAGED_IDENTITY_RETRY_DELAY_MS);return r.verbose(`Retrying request in ${t}ms (retry attempt: ${n+1})`),await new Promise(e=>setTimeout(e,t)),!0}return!1}},Xa=class{constructor(e,t,n){this.httpMethod=e,this._baseEndpoint=t,this.headers={},this.bodyParameters={},this.queryParameters={},this.retryPolicy=n||new Ya}computeUri(){let e=new Map;this.queryParameters&&ar(e,this.queryParameters);let t=Q(e);return zt.appendQueryString(this._baseEndpoint,t)}computeParametersBodyString(){let e=new Map;return this.bodyParameters&&ar(e,this.bodyParameters),Q(e)}},Za=class e extends Ka{constructor(e,t,n,r,i,a,o){super(e,t,n,r,i),this.identityEndpoint=a,this.identityHeader=o}static getEnvironmentVariables(){return[process.env[Ii.IDENTITY_ENDPOINT],process.env[Ii.IDENTITY_HEADER]]}static tryCreate(t,n,r,i,a){let[o,s]=e.getEnvironmentVariables();if(!o||!s)return t.info(`[Managed Identity] ${Li.APP_SERVICE} managed identity is unavailable because one or both of the '${Ii.IDENTITY_HEADER}' and '${Ii.IDENTITY_ENDPOINT}' environment variables are not defined.`),null;let c=e.getValidatedEnvVariableUrlString(Ii.IDENTITY_ENDPOINT,o,Li.APP_SERVICE,t);return t.info(`[Managed Identity] Environment variables validation passed for ${Li.APP_SERVICE} managed identity. Endpoint URI: ${c}. Creating ${Li.APP_SERVICE} managed identity.`),new e(t,n,r,i,a,o,s)}createRequest(e,t){let n=new Xa(zi.GET,this.identityEndpoint);return n.headers[Pi.APP_SERVICE_SECRET_HEADER_NAME]=this.identityHeader,n.queryParameters[Fi.API_VERSION]=`2019-08-01`,n.queryParameters[Fi.RESOURCE]=e,t.idType!==Ri.SYSTEM_ASSIGNED&&(n.queryParameters[this.getManagedIdentityUserAssignedIdQueryParameterKey(t.idType)]=t.id),n}};let Qa=`http://127.0.0.1:40342/metadata/identity/oauth2/token`,$a=`N/A: himds executable exists`,eo={win32:`${process.env.ProgramData}\\AzureConnectedMachineAgent\\Tokens\\`,linux:`/var/opt/azcmagent/tokens/`},to={win32:`${process.env.ProgramFiles}\\AzureConnectedMachineAgent\\himds.exe`,linux:`/opt/azcmagent/bin/himds`};var no=class e extends Ka{constructor(e,t,n,r,i,a){super(e,t,n,r,i),this.identityEndpoint=a}static getEnvironmentVariables(){let e=process.env[Ii.IDENTITY_ENDPOINT],t=process.env[Ii.IMDS_ENDPOINT];if(!e||!t){let n=to[process.platform];try{s.accessSync(n,s.constants.F_OK|s.constants.R_OK),e=Qa,t=$a}catch{}}return[e,t]}static tryCreate(t,n,r,i,a,o){let[s,c]=e.getEnvironmentVariables();if(!s||!c)return t.info(`[Managed Identity] ${Li.AZURE_ARC} managed identity is unavailable through environment variables because one or both of '${Ii.IDENTITY_ENDPOINT}' and '${Ii.IMDS_ENDPOINT}' are not defined. ${Li.AZURE_ARC} managed identity is also unavailable through file detection.`),null;if(c===$a)t.info(`[Managed Identity] ${Li.AZURE_ARC} managed identity is available through file detection. Defaulting to known ${Li.AZURE_ARC} endpoint: ${Qa}. Creating ${Li.AZURE_ARC} managed identity.`);else{let n=e.getValidatedEnvVariableUrlString(Ii.IDENTITY_ENDPOINT,s,Li.AZURE_ARC,t);n.endsWith(`/`)&&n.slice(0,-1),e.getValidatedEnvVariableUrlString(Ii.IMDS_ENDPOINT,c,Li.AZURE_ARC,t),t.info(`[Managed Identity] Environment variables validation passed for ${Li.AZURE_ARC} managed identity. Endpoint URI: ${n}. Creating ${Li.AZURE_ARC} managed identity.`)}if(o.idType!==Ri.SYSTEM_ASSIGNED)throw fa(ra);return new e(t,n,r,i,a,s)}createRequest(e){let t=new Xa(zi.GET,this.identityEndpoint.replace(`localhost`,`127.0.0.1`));return t.headers[Pi.METADATA_HEADER_NAME]=`true`,t.queryParameters[Fi.API_VERSION]=`2019-11-01`,t.queryParameters[Fi.RESOURCE]=e,t}async getServerTokenResponseAsync(e,t,n,r){let i;if(e.status===f.UNAUTHORIZED){let a=e.headers[`www-authenticate`];if(!a)throw fa(sa);if(!a.includes(`Basic realm=`))throw fa(ca);let o=a.split(`Basic realm=`)[1];if(!eo.hasOwnProperty(process.platform))throw fa(na);let l=eo[process.platform],u=c.basename(o);if(!u.endsWith(`.key`))throw fa(Qi);if(l+u!==o)throw fa($i);let d;try{d=await s.statSync(o).size}catch{throw fa(oa)}if(d>4096)throw fa(ta);let f;try{f=s.readFileSync(o,I.UTF8)}catch{throw fa(oa)}let p=`Basic ${f}`;this.logger.info(`[Managed Identity] Adding authorization header to the request.`),n.headers[Pi.AUTHORIZATION_HEADER_NAME]=p;try{i=await t.sendGetRequestAsync(n.computeUri(),r)}catch(e){throw e instanceof V?e:X(ae)}}return this.getServerTokenResponse(i||e)}},ro=class e extends Ka{constructor(e,t,n,r,i,a){super(e,t,n,r,i),this.msiEndpoint=a}static getEnvironmentVariables(){return[process.env[Ii.MSI_ENDPOINT]]}static tryCreate(t,n,r,i,a,o){let[s]=e.getEnvironmentVariables();if(!s)return t.info(`[Managed Identity] ${Li.CLOUD_SHELL} managed identity is unavailable because the '${Ii.MSI_ENDPOINT} environment variable is not defined.`),null;let c=e.getValidatedEnvVariableUrlString(Ii.MSI_ENDPOINT,s,Li.CLOUD_SHELL,t);if(t.info(`[Managed Identity] Environment variable validation passed for ${Li.CLOUD_SHELL} managed identity. Endpoint URI: ${c}. Creating ${Li.CLOUD_SHELL} managed identity.`),o.idType!==Ri.SYSTEM_ASSIGNED)throw fa(ia);return new e(t,n,r,i,a,s)}createRequest(e){let t=new Xa(zi.POST,this.msiEndpoint);return t.headers[Pi.METADATA_HEADER_NAME]=`true`,t.bodyParameters[Fi.RESOURCE]=e,t}},io=class{constructor(e,t,n){this.minExponentialBackoff=e,this.maxExponentialBackoff=t,this.exponentialDeltaBackoff=n}calculateDelay(e){return e===0?this.minExponentialBackoff:Math.min(2**(e-1)*this.exponentialDeltaBackoff,this.maxExponentialBackoff)}};let ao=[a.HttpStatus.NOT_FOUND,a.HttpStatus.REQUEST_TIMEOUT,a.HttpStatus.GONE,a.HttpStatus.TOO_MANY_REQUESTS];var oo=class e{constructor(){this.exponentialRetryStrategy=new io(e.MIN_EXPONENTIAL_BACKOFF_MS,e.MAX_EXPONENTIAL_BACKOFF_MS,e.EXPONENTIAL_DELTA_BACKOFF_MS)}static get MIN_EXPONENTIAL_BACKOFF_MS(){return 1e3}static get MAX_EXPONENTIAL_BACKOFF_MS(){return 4e3}static get EXPONENTIAL_DELTA_BACKOFF_MS(){return 2e3}static get HTTP_STATUS_GONE_RETRY_AFTER_MS(){return 1e4}set isNewRequest(e){this._isNewRequest=e}async pauseForRetry(t,n,r){if(this._isNewRequest&&(this._isNewRequest=!1,this.maxRetries=t===a.HttpStatus.GONE?7:3),(ao.includes(t)||t>=a.HttpStatus.SERVER_ERROR_RANGE_START&&t<=a.HttpStatus.SERVER_ERROR_RANGE_END&&nsetTimeout(e,i)),!0}return!1}};let so=`/metadata/identity/oauth2/token`,co=`http://169.254.169.254${so}`;var lo=class e extends Ka{constructor(e,t,n,r,i,a){super(e,t,n,r,i),this.identityEndpoint=a}static tryCreate(t,n,r,i,a){let o;return process.env[Ii.AZURE_POD_IDENTITY_AUTHORITY_HOST]?(t.info(`[Managed Identity] Environment variable ${Ii.AZURE_POD_IDENTITY_AUTHORITY_HOST} for ${Li.IMDS} returned endpoint: ${process.env[Ii.AZURE_POD_IDENTITY_AUTHORITY_HOST]}`),o=e.getValidatedEnvVariableUrlString(Ii.AZURE_POD_IDENTITY_AUTHORITY_HOST,`${process.env[Ii.AZURE_POD_IDENTITY_AUTHORITY_HOST]}${so}`,Li.IMDS,t)):(t.info(`[Managed Identity] Unable to find ${Ii.AZURE_POD_IDENTITY_AUTHORITY_HOST} environment variable for ${Li.IMDS}, using the default endpoint.`),o=co),new e(t,n,r,i,a,o)}createRequest(e,t){let n=new Xa(zi.GET,this.identityEndpoint);return n.headers[Pi.METADATA_HEADER_NAME]=`true`,n.queryParameters[Fi.API_VERSION]=`2018-02-01`,n.queryParameters[Fi.RESOURCE]=e,t.idType!==Ri.SYSTEM_ASSIGNED&&(n.queryParameters[this.getManagedIdentityUserAssignedIdQueryParameterKey(t.idType,!0)]=t.id),n.retryPolicy=new oo,n}},uo=class e extends Ka{constructor(e,t,n,r,i,a,o){super(e,t,n,r,i),this.identityEndpoint=a,this.identityHeader=o}static getEnvironmentVariables(){return[process.env[Ii.IDENTITY_ENDPOINT],process.env[Ii.IDENTITY_HEADER],process.env[Ii.IDENTITY_SERVER_THUMBPRINT]]}static tryCreate(t,n,r,i,a,o){let[s,c,l]=e.getEnvironmentVariables();if(!s||!c||!l)return t.info(`[Managed Identity] ${Li.SERVICE_FABRIC} managed identity is unavailable because one or all of the '${Ii.IDENTITY_HEADER}', '${Ii.IDENTITY_ENDPOINT}' or '${Ii.IDENTITY_SERVER_THUMBPRINT}' environment variables are not defined.`),null;let u=e.getValidatedEnvVariableUrlString(Ii.IDENTITY_ENDPOINT,s,Li.SERVICE_FABRIC,t);return t.info(`[Managed Identity] Environment variables validation passed for ${Li.SERVICE_FABRIC} managed identity. Endpoint URI: ${u}. Creating ${Li.SERVICE_FABRIC} managed identity.`),o.idType!==Ri.SYSTEM_ASSIGNED&&t.warning(`[Managed Identity] ${Li.SERVICE_FABRIC} user assigned managed identity is configured in the cluster, not during runtime. See also: https://learn.microsoft.com/en-us/azure/service-fabric/configure-existing-cluster-enable-managed-identity-token-service.`),new e(t,n,r,i,a,s,c)}createRequest(e,t){let n=new Xa(zi.GET,this.identityEndpoint);return n.headers[Pi.ML_AND_SF_SECRET_HEADER_NAME]=this.identityHeader,n.queryParameters[Fi.API_VERSION]=`2019-07-01-preview`,n.queryParameters[Fi.RESOURCE]=e,t.idType!==Ri.SYSTEM_ASSIGNED&&(n.queryParameters[this.getManagedIdentityUserAssignedIdQueryParameterKey(t.idType)]=t.id),n}};let fo=`Only client id is supported for user-assigned managed identity in ${Li.MACHINE_LEARNING}.`;var po=class e extends Ka{constructor(e,t,n,r,i,a,o){super(e,t,n,r,i),this.msiEndpoint=a,this.secret=o}static getEnvironmentVariables(){return[process.env[Ii.MSI_ENDPOINT],process.env[Ii.MSI_SECRET]]}static tryCreate(t,n,r,i,a){let[o,s]=e.getEnvironmentVariables();if(!o||!s)return t.info(`[Managed Identity] ${Li.MACHINE_LEARNING} managed identity is unavailable because one or both of the '${Ii.MSI_ENDPOINT}' and '${Ii.MSI_SECRET}' environment variables are not defined.`),null;let c=e.getValidatedEnvVariableUrlString(Ii.MSI_ENDPOINT,o,Li.MACHINE_LEARNING,t);return t.info(`[Managed Identity] Environment variables validation passed for ${Li.MACHINE_LEARNING} managed identity. Endpoint URI: ${c}. Creating ${Li.MACHINE_LEARNING} managed identity.`),new e(t,n,r,i,a,o,s)}createRequest(e,t){let n=new Xa(zi.GET,this.msiEndpoint);if(n.headers[Pi.METADATA_HEADER_NAME]=`true`,n.headers[Pi.ML_AND_SF_SECRET_HEADER_NAME]=this.secret,n.queryParameters[Fi.API_VERSION]=`2017-09-01`,n.queryParameters[Fi.RESOURCE]=e,t.idType===Ri.SYSTEM_ASSIGNED)n.queryParameters[Ga.MANAGED_IDENTITY_CLIENT_ID_2017]=process.env[Ii.DEFAULT_IDENTITY_CLIENT_ID];else if(t.idType===Ri.USER_ASSIGNED_CLIENT_ID)n.queryParameters[this.getManagedIdentityUserAssignedIdQueryParameterKey(t.idType,!1,!0)]=t.id;else throw Error(fo);return n}},mo=class e{constructor(e,t,n,r,i){this.logger=e,this.nodeStorage=t,this.networkClient=n,this.cryptoProvider=r,this.disableInternalRetries=i}async sendManagedIdentityTokenRequest(t,n,r,i){return e.identitySource||=this.selectManagedIdentitySource(this.logger,this.nodeStorage,this.networkClient,this.cryptoProvider,this.disableInternalRetries,n),e.identitySource.acquireTokenWithManagedIdentity(t,n,r,i)}allEnvironmentVariablesAreDefined(e){return Object.values(e).every(e=>e!==void 0)}getManagedIdentitySource(){return e.sourceName=this.allEnvironmentVariablesAreDefined(uo.getEnvironmentVariables())?Li.SERVICE_FABRIC:this.allEnvironmentVariablesAreDefined(Za.getEnvironmentVariables())?Li.APP_SERVICE:this.allEnvironmentVariablesAreDefined(po.getEnvironmentVariables())?Li.MACHINE_LEARNING:this.allEnvironmentVariablesAreDefined(ro.getEnvironmentVariables())?Li.CLOUD_SHELL:this.allEnvironmentVariablesAreDefined(no.getEnvironmentVariables())?Li.AZURE_ARC:Li.DEFAULT_TO_IMDS,e.sourceName}selectManagedIdentitySource(e,t,n,r,i,a){let o=uo.tryCreate(e,t,n,r,i,a)||Za.tryCreate(e,t,n,r,i)||po.tryCreate(e,t,n,r,i)||ro.tryCreate(e,t,n,r,i,a)||no.tryCreate(e,t,n,r,i,a)||lo.tryCreate(e,t,n,r,i);if(!o)throw fa(aa);return o}};let ho=[Li.SERVICE_FABRIC];var go=class e{constructor(t){this.config=Sa(t||{}),this.logger=new Ge(this.config.system.loggerOptions,Yi,Xi);let n={canonicalAuthority:u.DEFAULT_AUTHORITY};e.nodeStorage||=new Aa(this.logger,this.config.managedIdentityId.id,We,n),this.networkClient=this.config.system.networkClient,this.cryptoProvider=new Da;let r={protocolMode:jt.AAD,knownAuthorities:[Ni],cloudDiscoveryMetadata:``,authorityMetadata:``};this.fakeAuthority=new Hr(Ni,this.networkClient,e.nodeStorage,r,this.logger,this.cryptoProvider.createNewGuid(),void 0,!0),this.fakeClientCredentialClient=new Ba({authOptions:{clientId:this.config.managedIdentityId.id,authority:this.fakeAuthority}}),this.managedIdentityClient=new mo(this.logger,e.nodeStorage,this.networkClient,this.cryptoProvider,this.config.disableInternalRetries),this.hashUtils=new Ta}async acquireToken(t){if(!t.resource)throw xt($e);let n={forceRefresh:t.forceRefresh,resource:t.resource.replace(`/.default`,``),scopes:[t.resource.replace(`/.default`,``)],authority:this.fakeAuthority.canonicalAuthority,correlationId:this.cryptoProvider.createNewGuid(),claims:t.claims,clientCapabilities:this.config.clientCapabilities};if(n.forceRefresh)return this.acquireTokenFromManagedIdentity(n,this.config.managedIdentityId,this.fakeAuthority);let[r,i]=await this.fakeClientCredentialClient.getCachedAuthenticationResult(n,this.config,this.cryptoProvider,this.fakeAuthority,e.nodeStorage);if(n.claims){let e=this.managedIdentityClient.getManagedIdentitySource();return r&&ho.includes(e)&&(n.revokedTokenSha256Hash=this.hashUtils.sha256(r.accessToken).toString(I.HEX)),this.acquireTokenFromManagedIdentity(n,this.config.managedIdentityId,this.fakeAuthority)}return r?(i===F.PROACTIVELY_REFRESHED&&(this.logger.info(`ClientCredentialClient:getCachedAuthenticationResult - Cached access token's refreshOn property has been exceeded'. It's not expired, but must be refreshed.`),await this.acquireTokenFromManagedIdentity(n,this.config.managedIdentityId,this.fakeAuthority,!0)),r):this.acquireTokenFromManagedIdentity(n,this.config.managedIdentityId,this.fakeAuthority)}async acquireTokenFromManagedIdentity(e,t,n,r){return this.managedIdentityClient.sendManagedIdentityTokenRequest(e,t,n,r)}getManagedIdentitySource(){return mo.sourceName||this.managedIdentityClient.getManagedIdentitySource()}},_o=class{constructor(e,t){this.client=e,this.partitionManager=t}async beforeCacheAccess(e){let t=await this.partitionManager.getKey(),n=await this.client.get(t);e.tokenCache.deserialize(n)}async afterCacheAccess(e){if(e.cacheHasChanged){let t=e.tokenCache.getKVStore(),n=Object.values(t).filter(e=>Mt.isAccountEntity(e)),r;if(n.length>0){let e=n[0];r=await this.partitionManager.extractKey(e)}else r=await this.partitionManager.getKey();await this.client.set(r,e.tokenCache.serialize())}}};e.AuthError=V,e.AuthErrorCodes=z,e.AuthErrorMessage=te,e.AzureCloudInstance=Je,e.ClientApplication=Ia,e.ClientAssertion=Na,e.ClientAuthError=Ue,e.ClientAuthErrorCodes=Ve,e.ClientAuthErrorMessage=He,e.ClientConfigurationError=bt,e.ClientConfigurationErrorCodes=_t,e.ClientConfigurationErrorMessage=yt,e.ClientCredentialClient=Ba,e.ConfidentialClientApplication=Ha,e.CryptoProvider=Da,e.DeviceCodeClient=Ra,e.DistributedCachePlugin=_o,e.InteractionRequiredAuthError=di,e.InteractionRequiredAuthErrorCodes=oi,e.InteractionRequiredAuthErrorMessage=ui,e.Logger=Ge,e.ManagedIdentityApplication=go,e.ManagedIdentitySourceNames=Li,e.OnBehalfOfClient=Va,e.PromptValue=v,e.ProtocolMode=jt,e.PublicClientApplication=za,e.ResponseMode=x,e.ServerError=qr,e.TokenCache=Ma,e.TokenCacheContext=_i,e.UsernamePasswordClient=Pa,e.internals=Mi,e.version=Xi})),su=s((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.msalCommon=void 0,e.msalCommon=(hi(),d(jr)).__importStar(ou())})),cu=s((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.defaultLoggerCallback=void 0,e.ensureValidMsalToken=c,e.getAuthorityHost=l,e.getAuthority=u,e.getKnownAuthorities=d,e.getMSALLogLevel=f,e.randomUUID=p,e.handleMsalError=m,e.publicToMsal=h,e.msalToPublic=g,e.serializeAuthenticationRecord=_,e.deserializeAuthenticationRecord=v;let t=Ls(),n=Rs(),r=Ps(),i=oo(),a=to(),o=su(),s=(0,n.credentialLogger)(`IdentityUtils`);function c(e,n,r){let i=n=>(s.getToken.info(n),new t.AuthenticationRequiredError({scopes:Array.isArray(e)?e:[e],getTokenOptions:r,message:n}));if(!n)throw i(`No response`);if(!n.expiresOn)throw i(`Response had no "expiresOn" property.`);if(!n.accessToken)throw i(`Response had no "accessToken" property.`)}function l(e){let t=e?.authorityHost;return!t&&i.isNodeLike&&(t=process.env.AZURE_AUTHORITY_HOST),t??r.DefaultAuthorityHost}function u(e,t){return t||=r.DefaultAuthorityHost,RegExp(`${e}/?$`).test(t)?t:t.endsWith(`/`)?t+e:`${t}/${e}`}function d(e,t,n){return e===`adfs`&&t||n?[t]:[]}e.defaultLoggerCallback=(e,t=i.isNode?`Node`:`Browser`)=>(n,r,i)=>{if(!i)switch(n){case o.msalCommon.LogLevel.Error:e.info(`MSAL ${t} V2 error: ${r}`);return;case o.msalCommon.LogLevel.Info:e.info(`MSAL ${t} V2 info message: ${r}`);return;case o.msalCommon.LogLevel.Verbose:e.info(`MSAL ${t} V2 verbose message: ${r}`);return;case o.msalCommon.LogLevel.Warning:e.info(`MSAL ${t} V2 warning: ${r}`);return}};function f(e){switch(e){case`error`:return o.msalCommon.LogLevel.Error;case`info`:return o.msalCommon.LogLevel.Info;case`verbose`:return o.msalCommon.LogLevel.Verbose;case`warning`:return o.msalCommon.LogLevel.Warning;default:return o.msalCommon.LogLevel.Info}}function p(){return(0,i.randomUUID)()}function m(e,r,i){if(r.name===`AuthError`||r.name===`ClientAuthError`||r.name===`BrowserAuthError`){let i=r;switch(i.errorCode){case`endpoints_resolution_error`:return s.info((0,n.formatError)(e,r.message)),new t.CredentialUnavailableError(r.message);case`device_code_polling_cancelled`:return new a.AbortError(`The authentication has been aborted by the caller.`);case`consent_required`:case`interaction_required`:case`login_required`:s.info((0,n.formatError)(e,`Authentication returned errorCode ${i.errorCode}`));break;default:s.info((0,n.formatError)(e,`Failed to acquire token: ${r.message}`));break}}return r.name===`ClientConfigurationError`||r.name===`BrowserConfigurationAuthError`||r.name===`AbortError`||r.name===`AuthenticationError`?r:r.name===`NativeAuthError`?(s.info((0,n.formatError)(e,`Error from the native broker: ${r.message} with status code: ${r.statusCode}`)),r):new t.AuthenticationRequiredError({scopes:e,getTokenOptions:i,message:r.message})}function h(e){return{localAccountId:e.homeAccountId,environment:e.authority,username:e.username,homeAccountId:e.homeAccountId,tenantId:e.tenantId}}function g(e,t){return{authority:t.environment??r.DefaultAuthority,homeAccountId:t.homeAccountId,tenantId:t.tenantId||r.DefaultTenantId,username:t.username,clientId:e,version:`1.0`}}function _(e){return JSON.stringify(e)}function v(e){let t=JSON.parse(e);if(t.version&&t.version!==`1.0`)throw Error(`Unsupported AuthenticationRecord version`);return t}})),lu=s((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.getIdentityTokenEndpointSuffix=t;function t(e){return e===`adfs`?`oauth2/token`:`oauth2/v2.0/token`}})),uu=s((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.serviceFabricErrorMessage=void 0,e.mapScopesToResource=n,e.parseExpirationTimestamp=r,e.parseRefreshTimestamp=i;let t=`/.default`;e.serviceFabricErrorMessage="Specifying a `clientId` or `resourceId` is not supported by the Service Fabric managed identity environment. The managed identity configuration is determined by the Service Fabric cluster resource configuration. See https://aka.ms/servicefabricmi for more information";function n(e){let n=``;if(Array.isArray(e)){if(e.length!==1)return;n=e[0]}else typeof e==`string`&&(n=e);return n.endsWith(t)?n.substr(0,n.lastIndexOf(t)):n}function r(e){if(typeof e.expires_on==`number`)return e.expires_on*1e3;if(typeof e.expires_on==`string`){let t=+e.expires_on;if(!isNaN(t))return t*1e3;let n=Date.parse(e.expires_on);if(!isNaN(n))return n}if(typeof e.expires_in==`number`)return Date.now()+e.expires_in*1e3;throw Error(`Failed to parse token expiration from body. expires_in="${e.expires_in}", expires_on="${e.expires_on}"`)}function i(e){if(e.refresh_on){if(typeof e.refresh_on==`number`)return e.refresh_on*1e3;if(typeof e.refresh_on==`string`){let t=+e.refresh_on;if(!isNaN(t))return t*1e3;let n=Date.parse(e.refresh_on);if(!isNaN(n))return n}throw Error(`Failed to parse refresh_on from body. refresh_on="${e.refresh_on}"`)}else return}})),du=s((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.IdentityClient=void 0,e.getIdentityClientAuthorityHost=d;let t=Zo(),n=oo(),r=Ro(),i=Ls(),a=lu(),o=Ps(),s=zs(),c=Rs(),l=uu(),u=`noCorrelationId`;function d(e){let t=e?.authorityHost;return n.isNode&&(t??=process.env.AZURE_AUTHORITY_HOST),t??o.DefaultAuthorityHost}e.IdentityClient=class extends t.ServiceClient{constructor(e){let t=`azsdk-js-identity/${o.SDK_VERSION}`,n=e?.userAgentOptions?.userAgentPrefix?`${e.userAgentOptions.userAgentPrefix} ${t}`:`${t}`,r=d(e);if(!r.startsWith(`https:`))throw Error(`The authorityHost address must use the 'https' protocol.`);super({requestContentType:`application/json; charset=utf-8`,retryOptions:{maxRetries:3},...e,userAgentOptions:{userAgentPrefix:n},baseUri:r}),this.allowInsecureConnection=!1,this.authorityHost=r,this.abortControllers=new Map,this.allowLoggingAccountIdentifiers=e?.loggingOptions?.allowLoggingAccountIdentifiers,this.tokenCredentialOptions={...e},e?.allowInsecureConnection&&(this.allowInsecureConnection=e.allowInsecureConnection)}async sendTokenRequest(e){c.logger.info(`IdentityClient: sending token request to [${e.url}]`);let t=await this.sendRequest(e);if(t.bodyAsText&&(t.status===200||t.status===201)){let n=JSON.parse(t.bodyAsText);if(!n.access_token)return null;this.logIdentifiers(t);let r={accessToken:{token:n.access_token,expiresOnTimestamp:(0,l.parseExpirationTimestamp)(n),refreshAfterTimestamp:(0,l.parseRefreshTimestamp)(n),tokenType:`Bearer`},refreshToken:n.refresh_token};return c.logger.info(`IdentityClient: [${e.url}] token acquired, expires on ${r.accessToken.expiresOnTimestamp}`),r}else{let e=new i.AuthenticationError(t.status,t.bodyAsText);throw c.logger.warning(`IdentityClient: authentication error. HTTP status: ${t.status}, ${e.errorResponse.errorDescription}`),e}}async refreshAccessToken(e,t,n,o,l,u={}){if(o===void 0)return null;c.logger.info(`IdentityClient: refreshing access token with client ID: ${t}, scopes: ${n} started`);let d={grant_type:`refresh_token`,client_id:t,refresh_token:o,scope:n};l!==void 0&&(d.client_secret=l);let f=new URLSearchParams(d);return s.tracingClient.withSpan(`IdentityClient.refreshAccessToken`,u,async n=>{try{let i=(0,a.getIdentityTokenEndpointSuffix)(e),o=(0,r.createPipelineRequest)({url:`${this.authorityHost}/${e}/${i}`,method:`POST`,body:f.toString(),abortSignal:u.abortSignal,headers:(0,r.createHttpHeaders)({Accept:`application/json`,"Content-Type":`application/x-www-form-urlencoded`}),tracingOptions:n.tracingOptions}),s=await this.sendTokenRequest(o);return c.logger.info(`IdentityClient: refreshed token for client ID: ${t}`),s}catch(e){if(e.name===i.AuthenticationErrorName&&e.errorResponse.error===`interaction_required`)return c.logger.info(`IdentityClient: interaction required for client ID: ${t}`),null;throw c.logger.warning(`IdentityClient: failed refreshing token for client ID: ${t}: ${e}`),e}})}generateAbortSignal(e){let t=new AbortController,n=this.abortControllers.get(e)||[];n.push(t),this.abortControllers.set(e,n);let r=t.signal.onabort;return t.signal.onabort=(...n)=>{this.abortControllers.set(e,void 0),r&&r.apply(t.signal,n)},t.signal}abortRequests(e){let t=e||u,n=[...this.abortControllers.get(t)||[],...this.abortControllers.get(u)||[]];if(n.length){for(let e of n)e.abort();this.abortControllers.set(t,void 0)}}getCorrelationId(e){let t=e?.body?.split(`&`).map(e=>e.split(`=`)).find(([e])=>e===`client-request-id`);return t&&t.length&&t[1]||u}async sendGetRequestAsync(e,t){let n=(0,r.createPipelineRequest)({url:e,method:`GET`,body:t?.body,allowInsecureConnection:this.allowInsecureConnection,headers:(0,r.createHttpHeaders)(t?.headers),abortSignal:this.generateAbortSignal(u)}),i=await this.sendRequest(n);return this.logIdentifiers(i),{body:i.bodyAsText?JSON.parse(i.bodyAsText):void 0,headers:i.headers.toJSON(),status:i.status}}async sendPostRequestAsync(e,t){let n=(0,r.createPipelineRequest)({url:e,method:`POST`,body:t?.body,headers:(0,r.createHttpHeaders)(t?.headers),allowInsecureConnection:this.allowInsecureConnection,abortSignal:this.generateAbortSignal(this.getCorrelationId(t))}),i=await this.sendRequest(n);return this.logIdentifiers(i),{body:i.bodyAsText?JSON.parse(i.bodyAsText):void 0,headers:i.headers.toJSON(),status:i.status}}getTokenCredentialOptions(){return this.tokenCredentialOptions}logIdentifiers(e){if(!(!this.allowLoggingAccountIdentifiers||!e.bodyAsText))try{let t=(e.parsedBody||JSON.parse(e.bodyAsText)).access_token;if(!t)return;let n=t.split(`.`)[1],{appid:r,upn:i,tid:a,oid:o}=JSON.parse(Buffer.from(n,`base64`).toString(`utf8`));c.logger.info(`[Authenticated account] Client ID: ${r}. Tenant ID: ${a}. User Principal Name: ${i||`No User Principal Name available`}. Object ID (user): ${o}`)}catch(e){c.logger.warning(`allowLoggingAccountIdentifiers was set, but we couldn't log the account information. Error:`,e.message)}}}})),fu=s((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.RegionalAuthority=void 0,e.calculateRegionalAuthority=n;var t;(function(e){e.AutoDiscoverRegion=`AutoDiscoverRegion`,e.USWest=`westus`,e.USWest2=`westus2`,e.USCentral=`centralus`,e.USEast=`eastus`,e.USEast2=`eastus2`,e.USNorthCentral=`northcentralus`,e.USSouthCentral=`southcentralus`,e.USWestCentral=`westcentralus`,e.CanadaCentral=`canadacentral`,e.CanadaEast=`canadaeast`,e.BrazilSouth=`brazilsouth`,e.EuropeNorth=`northeurope`,e.EuropeWest=`westeurope`,e.UKSouth=`uksouth`,e.UKWest=`ukwest`,e.FranceCentral=`francecentral`,e.FranceSouth=`francesouth`,e.SwitzerlandNorth=`switzerlandnorth`,e.SwitzerlandWest=`switzerlandwest`,e.GermanyNorth=`germanynorth`,e.GermanyWestCentral=`germanywestcentral`,e.NorwayWest=`norwaywest`,e.NorwayEast=`norwayeast`,e.AsiaEast=`eastasia`,e.AsiaSouthEast=`southeastasia`,e.JapanEast=`japaneast`,e.JapanWest=`japanwest`,e.AustraliaEast=`australiaeast`,e.AustraliaSouthEast=`australiasoutheast`,e.AustraliaCentral=`australiacentral`,e.AustraliaCentral2=`australiacentral2`,e.IndiaCentral=`centralindia`,e.IndiaSouth=`southindia`,e.IndiaWest=`westindia`,e.KoreaSouth=`koreasouth`,e.KoreaCentral=`koreacentral`,e.UAECentral=`uaecentral`,e.UAENorth=`uaenorth`,e.SouthAfricaNorth=`southafricanorth`,e.SouthAfricaWest=`southafricawest`,e.ChinaNorth=`chinanorth`,e.ChinaEast=`chinaeast`,e.ChinaNorth2=`chinanorth2`,e.ChinaEast2=`chinaeast2`,e.GermanyCentral=`germanycentral`,e.GermanyNorthEast=`germanynortheast`,e.GovernmentUSVirginia=`usgovvirginia`,e.GovernmentUSIowa=`usgoviowa`,e.GovernmentUSArizona=`usgovarizona`,e.GovernmentUSTexas=`usgovtexas`,e.GovernmentUSDodEast=`usdodeast`,e.GovernmentUSDodCentral=`usdodcentral`})(t||(e.RegionalAuthority=t={}));function n(e){let n=e;return n===void 0&&globalThis.process?.env?.AZURE_REGIONAL_AUTHORITY_NAME!==void 0&&(n=process.env.AZURE_REGIONAL_AUTHORITY_NAME),n===t.AutoDiscoverRegion?`AUTO_DISCOVER`:n}})),pu=s((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.processMultiTenantRequest=r;let t=Ls();function n(e){return`The current credential is not configured to acquire tokens for tenant ${e}. To enable acquiring tokens for this tenant add it to the AdditionallyAllowedTenants on the credential options, or add "*" to AdditionallyAllowedTenants to allow acquiring tokens for any tenant.`}function r(e,r,i=[],a){let o;if(o=process.env.AZURE_IDENTITY_DISABLE_MULTITENANTAUTH||e===`adfs`?e:r?.tenantId??e,e&&o!==e&&!i.includes(`*`)&&!i.some(e=>e.localeCompare(o)===0)){let e=n(o);throw a?.info(e),new t.CredentialUnavailableError(e)}return o}})),mu=s((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.processMultiTenantRequest=void 0,e.checkTenantId=i,e.resolveTenantId=a,e.resolveAdditionallyAllowedTenantIds=o;let t=Ps(),n=Rs();var r=pu();Object.defineProperty(e,`processMultiTenantRequest`,{enumerable:!0,get:function(){return r.processMultiTenantRequest}});function i(e,t){if(!t.match(/^[0-9a-zA-Z-.]+$/)){let t=Error(`Invalid tenant id provided. You can locate your tenant id by following the instructions listed here: https://learn.microsoft.com/partner-center/find-ids-and-domain-names.`);throw e.info((0,n.formatError)(``,t)),t}}function a(e,n,r){return n?(i(e,n),n):(r||=t.DeveloperSignOnClientId,r===t.DeveloperSignOnClientId?`organizations`:`common`)}function o(e){return!e||e.length===0?[]:e.includes(`*`)?t.ALL_TENANTS:e}}));function hu(){try{return x.default.statSync(`/.dockerenv`),!0}catch{return!1}}function gu(){try{return x.default.readFileSync(`/proc/self/cgroup`,`utf8`).includes(`docker`)}catch{return!1}}function _u(){return vu===void 0&&(vu=hu()||gu()),vu}var vu,yu=o((()=>{}));function bu(){return xu===void 0&&(xu=Su()||_u()),xu}var xu,Su,Cu=o((()=>{yu(),Su=()=>{try{return x.default.statSync(`/run/.containerenv`),!0}catch{return!1}}})),wu,Tu,Eu=o((()=>{Cu(),wu=()=>{if(h.default.platform!==`linux`)return!1;if(m.default.release().toLowerCase().includes(`microsoft`))return!bu();try{return x.default.readFileSync(`/proc/version`,`utf8`).toLowerCase().includes(`microsoft`)?!bu():!1}catch{return!1}},Tu=h.default.env.__IS_WSL_TEST__?wu:wu()})),Du,Ou,ku,Au=o((()=>{Eu(),Du=(()=>{let e=`/mnt/`,t;return async function(){if(t)return t;let n=`/etc/wsl.conf`,r=!1;try{await b.default.access(n,b.constants.F_OK),r=!0}catch{}if(!r)return e;let i=await b.default.readFile(n,{encoding:`utf8`}),a=/(?.*)/g.exec(i);return a?(t=a.groups.mountPoint.trim(),t=t.endsWith(`/`)?t:`${t}/`,t):e}})(),Ou=async()=>`${await Du()}c/Windows/System32/WindowsPowerShell/v1.0/powershell.exe`,ku=async()=>Tu?Ou():`${h.default.env.SYSTEMROOT||h.default.env.windir||String.raw`C:\Windows`}\\System32\\WindowsPowerShell\\v1.0\\powershell.exe`}));function ju(e,t,n){let r=n=>Object.defineProperty(e,t,{value:n,enumerable:!0,writable:!0});return Object.defineProperty(e,t,{configurable:!0,enumerable:!0,get(){let e=n();return r(e),e},set(e){r(e)}}),e}var Mu=o((()=>{}));async function Nu(){if(h.default.platform!==`darwin`)throw Error(`macOS only`);let{stdout:e}=await Pu(`defaults`,[`read`,`com.apple.LaunchServices/com.apple.launchservices.secure`,`LSHandlers`]),t=/LSHandlerRoleAll = "(?!-)(?[^"]+?)";\s+?LSHandlerURLScheme = (?:http|https);/.exec(e)?.groups.id??`com.apple.Safari`;return t===`com.apple.safari`?`com.apple.Safari`:t}var Pu,Fu=o((()=>{Pu=(0,p.promisify)(y.execFile)}));async function Iu(e,{humanReadableOutput:t=!0,signal:n}={}){if(h.default.platform!==`darwin`)throw Error(`macOS only`);let r=t?[]:[`-ss`],i={};n&&(i.signal=n);let{stdout:a}=await Lu(`osascript`,[`-e`,e,r],i);return a.trim()}var Lu,Ru=o((()=>{Lu=(0,p.promisify)(y.execFile)}));async function zu(e){return Iu(`tell application "Finder" to set app_path to application file id "${e}" as string\ntell application "System Events" to get value of property list item "CFBundleName" of property list file (app_path & ":Contents:Info.plist")`)}var Bu=o((()=>{Ru()}));async function Vu(e=Hu){let{stdout:t}=await e(`reg`,[`QUERY`,` HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\Shell\\Associations\\UrlAssociations\\http\\UserChoice`,`/v`,`ProgId`]),n=/ProgId\s*REG_SZ\s*(?\S+)/.exec(t);if(!n)throw new Gu(`Cannot find Windows browser in stdout: ${JSON.stringify(t)}`);let{id:r}=n.groups,i=Uu[r];if(!i)throw new Gu(`Unknown browser ID: ${r}`);return i}var Hu,Uu,Wu,Gu,Ku=o((()=>{Hu=(0,p.promisify)(y.execFile),Uu={MSEdgeHTM:{name:`Edge`,id:`com.microsoft.edge`},MSEdgeBHTML:{name:`Edge Beta`,id:`com.microsoft.edge.beta`},MSEdgeDHTML:{name:`Edge Dev`,id:`com.microsoft.edge.dev`},AppXq0fevzme2pys62n3e0fbqa7peapykr8v:{name:`Edge`,id:`com.microsoft.edge.old`},ChromeHTML:{name:`Chrome`,id:`com.google.chrome`},ChromeBHTML:{name:`Chrome Beta`,id:`com.google.chrome.beta`},ChromeDHTML:{name:`Chrome Dev`,id:`com.google.chrome.dev`},ChromiumHTM:{name:`Chromium`,id:`org.chromium.Chromium`},BraveHTML:{name:`Brave`,id:`com.brave.Browser`},BraveBHTML:{name:`Brave Beta`,id:`com.brave.Browser.beta`},BraveDHTML:{name:`Brave Dev`,id:`com.brave.Browser.dev`},BraveSSHTM:{name:`Brave Nightly`,id:`com.brave.Browser.nightly`},FirefoxURL:{name:`Firefox`,id:`org.mozilla.firefox`},OperaStable:{name:`Opera`,id:`com.operasoftware.Opera`},VivaldiHTM:{name:`Vivaldi`,id:`com.vivaldi.Vivaldi`},"IE.HTTP":{name:`Internet Explorer`,id:`com.microsoft.ie`}},new Map(Object.entries(Uu)),Gu=class extends Error{}}));async function qu(){if(h.default.platform===`darwin`){let e=await Nu();return{name:await zu(e),id:e}}if(h.default.platform===`linux`){let{stdout:e}=await Ju(`xdg-mime`,[`query`,`default`,`x-scheme-handler/http`]),t=e.trim();return{name:Yu(t.replace(/.desktop$/,``).replace(`-`,` `)),id:t}}if(h.default.platform===`win32`)return Vu();throw Error(`Only macOS, Linux, and Windows are supported`)}var Ju,Yu,Xu=o((()=>{Fu(),Bu(),Ku(),Ju=(0,p.promisify)(y.execFile),Yu=e=>e.toLowerCase().replaceAll(/(?:^|\s|-)\S/g,e=>e.toUpperCase())})),Zu=c({apps:()=>ud,default:()=>dd,openApp:()=>ld});async function Qu(){let e=await ku(),t=String.raw`(Get-ItemProperty -Path "HKCU:\Software\Microsoft\Windows\Shell\Associations\UrlAssociations\http\UserChoice").ProgId`,{stdout:n}=await td(e,[`-NoProfile`,`-NonInteractive`,`-ExecutionPolicy`,`Bypass`,`-EncodedCommand`,g.Buffer.from(t,`utf16le`).toString(`base64`)],{encoding:`utf8`}),r=n.trim(),i={ChromeHTML:`com.google.chrome`,BraveHTML:`com.brave.Browser`,MSEdgeHTM:`com.microsoft.edge`,FirefoxURL:`org.mozilla.firefox`};return i[r]?{id:i[r]}:{}}function $u(e){if(typeof e==`string`||Array.isArray(e))return e;let{[ad]:t}=e;if(!t)throw Error(`${ad} is not supported`);return t}function ed({[id]:e},{wsl:t}){if(t&&Tu)return $u(t);if(!e)throw Error(`${id} is not supported`);return $u(e)}var td,nd,rd,id,ad,od,sd,cd,ld,ud,dd,fd=o((()=>{Au(),Mu(),Xu(),Cu(),td=(0,p.promisify)(y.default.execFile),nd=_.default.dirname((0,v.fileURLToPath)(require(`url`).pathToFileURL(__filename).href)),rd=_.default.join(nd,`xdg-open`),{platform:id,arch:ad}=h.default,od=async(e,t)=>{let n;for(let r of e)try{return await t(r)}catch(e){n=e}throw n},sd=async e=>{if(e={wait:!1,background:!1,newInstance:!1,allowNonzeroExitCode:!1,...e},Array.isArray(e.app))return od(e.app,t=>sd({...e,app:t}));let{name:t,arguments:n=[]}=e.app??{};if(n=[...n],Array.isArray(t))return od(t,t=>sd({...e,app:{name:t,arguments:n}}));if(t===`browser`||t===`browserPrivate`){let r={"com.google.chrome":`chrome`,"google-chrome.desktop":`chrome`,"com.brave.Browser":`brave`,"org.mozilla.firefox":`firefox`,"firefox.desktop":`firefox`,"com.microsoft.msedge":`edge`,"com.microsoft.edge":`edge`,"com.microsoft.edgemac":`edge`,"microsoft-edge.desktop":`edge`},i={chrome:`--incognito`,brave:`--incognito`,firefox:`--private-window`,edge:`--inPrivate`},a=Tu?await Qu():await qu();if(a.id in r){let o=r[a.id];return t===`browserPrivate`&&n.push(i[o]),sd({...e,app:{name:ud[o],arguments:n}})}throw Error(`${a.name} is not supported as a default browser`)}let r,i=[],a={};if(id===`darwin`)r=`open`,e.wait&&i.push(`--wait-apps`),e.background&&i.push(`--background`),e.newInstance&&i.push(`--new`),t&&i.push(`-a`,t);else if(id===`win32`||Tu&&!bu()&&!t){r=await ku(),i.push(`-NoProfile`,`-NonInteractive`,`-ExecutionPolicy`,`Bypass`,`-EncodedCommand`),Tu||(a.windowsVerbatimArguments=!0);let o=[`Start`];e.wait&&o.push(`-Wait`),t?(o.push(`"\`"${t}\`""`),e.target&&n.push(e.target)):e.target&&o.push(`"${e.target}"`),n.length>0&&(n=n.map(e=>`"\`"${e}\`""`),o.push(`-ArgumentList`,n.join(`,`))),e.target=g.Buffer.from(o.join(` `),`utf16le`).toString(`base64`)}else{if(t)r=t;else{let e=!nd||nd===`/`,t=!1;try{await b.default.access(rd,b.constants.X_OK),t=!0}catch{}r=h.default.versions.electron??(id===`android`||e||!t)?`xdg-open`:rd}n.length>0&&i.push(...n),e.wait||(a.stdio=`ignore`,a.detached=!0)}id===`darwin`&&n.length>0&&i.push(`--args`,...n),e.target&&i.push(e.target);let o=y.default.spawn(r,i,a);return e.wait?new Promise((t,n)=>{o.once(`error`,n),o.once(`close`,r=>{if(!e.allowNonzeroExitCode&&r>0){n(Error(`Exited with code ${r}`));return}t(o)})}):(o.unref(),o)},cd=(e,t)=>{if(typeof e!=`string`)throw TypeError("Expected a `target`");return sd({...t,target:e})},ld=(e,t)=>{if(typeof e!=`string`&&!Array.isArray(e))throw TypeError("Expected a valid `name`");let{arguments:n=[]}=t??{};if(n!=null&&!Array.isArray(n))throw TypeError("Expected `appArguments` as Array type");return sd({...t,app:{name:e,arguments:n}})},ud={},ju(ud,`chrome`,()=>ed({darwin:`google chrome`,win32:`chrome`,linux:[`google-chrome`,`google-chrome-stable`,`chromium`]},{wsl:{ia32:`/mnt/c/Program Files (x86)/Google/Chrome/Application/chrome.exe`,x64:[`/mnt/c/Program Files/Google/Chrome/Application/chrome.exe`,`/mnt/c/Program Files (x86)/Google/Chrome/Application/chrome.exe`]}})),ju(ud,`brave`,()=>ed({darwin:`brave browser`,win32:`brave`,linux:[`brave-browser`,`brave`]},{wsl:{ia32:`/mnt/c/Program Files (x86)/BraveSoftware/Brave-Browser/Application/brave.exe`,x64:[`/mnt/c/Program Files/BraveSoftware/Brave-Browser/Application/brave.exe`,`/mnt/c/Program Files (x86)/BraveSoftware/Brave-Browser/Application/brave.exe`]}})),ju(ud,`firefox`,()=>ed({darwin:`firefox`,win32:String.raw`C:\Program Files\Mozilla Firefox\firefox.exe`,linux:`firefox`},{wsl:`/mnt/c/Program Files/Mozilla Firefox/firefox.exe`})),ju(ud,`edge`,()=>ed({darwin:`microsoft edge`,win32:`msedge`,linux:[`microsoft-edge`,`microsoft-edge-dev`]},{wsl:`/mnt/c/Program Files (x86)/Microsoft/Edge/Application/msedge.exe`})),ju(ud,`browser`,()=>`browser`),ju(ud,`browserPrivate`,()=>`browserPrivate`),dd=cd})),pd=s((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.generateMsalConfiguration=f,e.createMsalClient=p;let t=(hi(),d(jr)).__importStar(ou()),n=Rs(),r=Fs(),i=cu(),a=Ls(),o=du(),s=fu(),c=za(),l=mu(),u=(0,n.credentialLogger)(`MsalClient`);function f(e,t,n={}){let r=(0,l.resolveTenantId)(n.logger??u,t,e),a=(0,i.getAuthority)(r,(0,i.getAuthorityHost)(n)),s=new o.IdentityClient({...n.tokenCredentialOptions,authorityHost:a,loggingOptions:n.loggingOptions});return{auth:{clientId:e,authority:a,knownAuthorities:(0,i.getKnownAuthorities)(r,a,n.disableInstanceDiscovery)},system:{networkClient:s,loggerOptions:{loggerCallback:(0,i.defaultLoggerCallback)(n.logger??u),logLevel:(0,i.getMSALLogLevel)((0,c.getLogLevel)()),piiLoggingEnabled:n.loggingOptions?.enableUnsafeSupportLogging}}}}function p(e,o,c={}){let l={msalConfig:f(e,o,c),cachedAccount:c.authenticationRecord?(0,i.publicToMsal)(c.authenticationRecord):null,pluginConfiguration:r.msalPlugins.generatePluginConfiguration(c),logger:c.logger??u},d=new Map;async function p(e={}){let n=e.enableCae?`CAE`:`default`,r=d.get(n);if(r)return l.logger.getToken.info(`Existing PublicClientApplication found in cache, returning it.`),r;l.logger.getToken.info(`Creating new PublicClientApplication with CAE ${e.enableCae?`enabled`:`disabled`}.`);let i=e.enableCae?l.pluginConfiguration.cache.cachePluginCae:l.pluginConfiguration.cache.cachePlugin;return l.msalConfig.auth.clientCapabilities=e.enableCae?[`cp1`]:void 0,r=new t.PublicClientApplication({...l.msalConfig,broker:{nativeBrokerPlugin:l.pluginConfiguration.broker.nativeBrokerPlugin},cache:{cachePlugin:await i}}),d.set(n,r),r}let m=new Map;async function h(e={}){let n=e.enableCae?`CAE`:`default`,r=m.get(n);if(r)return l.logger.getToken.info(`Existing ConfidentialClientApplication found in cache, returning it.`),r;l.logger.getToken.info(`Creating new ConfidentialClientApplication with CAE ${e.enableCae?`enabled`:`disabled`}.`);let i=e.enableCae?l.pluginConfiguration.cache.cachePluginCae:l.pluginConfiguration.cache.cachePlugin;return l.msalConfig.auth.clientCapabilities=e.enableCae?[`cp1`]:void 0,r=new t.ConfidentialClientApplication({...l.msalConfig,broker:{nativeBrokerPlugin:l.pluginConfiguration.broker.nativeBrokerPlugin},cache:{cachePlugin:await i}}),m.set(n,r),r}async function g(e,t,n={}){if(l.cachedAccount===null)throw l.logger.getToken.info(`No cached account found in local state.`),new a.AuthenticationRequiredError({scopes:t});n.claims&&(l.cachedClaims=n.claims);let r={account:l.cachedAccount,scopes:t,claims:l.cachedClaims};l.pluginConfiguration.broker.isEnabled&&(r.tokenQueryParameters||={},l.pluginConfiguration.broker.enableMsaPassthrough&&(r.tokenQueryParameters.msal_request_type=`consumer_passthrough`)),n.proofOfPossessionOptions&&(r.shrNonce=n.proofOfPossessionOptions.nonce,r.authenticationScheme=`pop`,r.resourceRequestMethod=n.proofOfPossessionOptions.resourceRequestMethod,r.resourceRequestUri=n.proofOfPossessionOptions.resourceRequestUrl),l.logger.getToken.info(`Attempting to acquire token silently`);try{return await e.acquireTokenSilent(r)}catch(e){throw(0,i.handleMsalError)(t,e,n)}}function _(e){return e?.tenantId?(0,i.getAuthority)(e.tenantId,(0,i.getAuthorityHost)(c)):l.msalConfig.auth.authority}async function v(e,t,r,o){let s=null;try{s=await g(e,t,r)}catch(e){if(e.name!==`AuthenticationRequiredError`)throw e;if(r.disableAutomaticAuthentication)throw new a.AuthenticationRequiredError({scopes:t,getTokenOptions:r,message:`Automatic authentication has been disabled. You may call the authentication() method.`})}if(s===null)try{s=await o()}catch(e){throw(0,i.handleMsalError)(t,e,r)}return(0,i.ensureValidMsalToken)(t,s,r),l.cachedAccount=s?.account??null,l.logger.getToken.info((0,n.formatSuccess)(t)),{token:s.accessToken,expiresOnTimestamp:s.expiresOn.getTime(),refreshAfterTimestamp:s.refreshOn?.getTime(),tokenType:s.tokenType}}async function y(e,t,r={}){l.logger.getToken.info(`Attempting to acquire token using client secret`),l.msalConfig.auth.clientSecret=t;let a=await h(r);try{let t=await a.acquireTokenByClientCredential({scopes:e,authority:_(r),azureRegion:(0,s.calculateRegionalAuthority)(),claims:r?.claims});return(0,i.ensureValidMsalToken)(e,t,r),l.logger.getToken.info((0,n.formatSuccess)(e)),{token:t.accessToken,expiresOnTimestamp:t.expiresOn.getTime(),refreshAfterTimestamp:t.refreshOn?.getTime(),tokenType:t.tokenType}}catch(t){throw(0,i.handleMsalError)(e,t,r)}}async function b(e,t,r={}){l.logger.getToken.info(`Attempting to acquire token using client assertion`),l.msalConfig.auth.clientAssertion=t;let a=await h(r);try{let o=await a.acquireTokenByClientCredential({scopes:e,authority:_(r),azureRegion:(0,s.calculateRegionalAuthority)(),claims:r?.claims,clientAssertion:t});return(0,i.ensureValidMsalToken)(e,o,r),l.logger.getToken.info((0,n.formatSuccess)(e)),{token:o.accessToken,expiresOnTimestamp:o.expiresOn.getTime(),refreshAfterTimestamp:o.refreshOn?.getTime(),tokenType:o.tokenType}}catch(t){throw(0,i.handleMsalError)(e,t,r)}}async function x(e,t,r={}){l.logger.getToken.info(`Attempting to acquire token using client certificate`),l.msalConfig.auth.clientCertificate=t;let a=await h(r);try{let t=await a.acquireTokenByClientCredential({scopes:e,authority:_(r),azureRegion:(0,s.calculateRegionalAuthority)(),claims:r?.claims});return(0,i.ensureValidMsalToken)(e,t,r),l.logger.getToken.info((0,n.formatSuccess)(e)),{token:t.accessToken,expiresOnTimestamp:t.expiresOn.getTime(),refreshAfterTimestamp:t.refreshOn?.getTime(),tokenType:t.tokenType}}catch(t){throw(0,i.handleMsalError)(e,t,r)}}async function S(e,t,n={}){l.logger.getToken.info(`Attempting to acquire token using device code`);let r=await p(n);return v(r,e,n,()=>{let i={scopes:e,cancel:n?.abortSignal?.aborted??!1,deviceCodeCallback:t,authority:_(n),claims:n?.claims},a=r.acquireTokenByDeviceCode(i);return n.abortSignal&&n.abortSignal.addEventListener(`abort`,()=>{i.cancel=!0}),a})}async function C(e,t,n,r={}){l.logger.getToken.info(`Attempting to acquire token using username and password`);let i=await p(r);return v(i,e,r,()=>{let a={scopes:e,username:t,password:n,authority:_(r),claims:r?.claims};return i.acquireTokenByUsernamePassword(a)})}function w(){if(l.cachedAccount)return(0,i.msalToPublic)(e,l.cachedAccount)}async function T(e,t,n,r,i={}){l.logger.getToken.info(`Attempting to acquire token using authorization code`);let a;return r?(l.msalConfig.auth.clientSecret=r,a=await h(i)):a=await p(i),v(a,e,i,()=>a.acquireTokenByCode({scopes:e,redirectUri:t,code:n,authority:_(i),claims:i?.claims}))}async function E(e,t,r,a={}){u.getToken.info(`Attempting to acquire token on behalf of another user`),typeof r==`string`?(u.getToken.info(`Using client secret for on behalf of flow`),l.msalConfig.auth.clientSecret=r):typeof r==`function`?(u.getToken.info(`Using client assertion callback for on behalf of flow`),l.msalConfig.auth.clientAssertion=r):(u.getToken.info(`Using client certificate for on behalf of flow`),l.msalConfig.auth.clientCertificate=r);let o=await h(a);try{let r=await o.acquireTokenOnBehalfOf({scopes:e,authority:_(a),claims:a.claims,oboAssertion:t});return(0,i.ensureValidMsalToken)(e,r,a),u.getToken.info((0,n.formatSuccess)(e)),{token:r.accessToken,expiresOnTimestamp:r.expiresOn.getTime(),refreshAfterTimestamp:r.refreshOn?.getTime(),tokenType:r.tokenType}}catch(t){throw(0,i.handleMsalError)(e,t,a)}}function D(e,t){return{openBrowser:async e=>{await(await Promise.resolve().then(()=>(fd(),Zu))).default(e,{newInstance:!0})},scopes:e,authority:_(t),claims:t?.claims,loginHint:t?.loginHint,errorTemplate:t?.browserCustomizationOptions?.errorMessage,successTemplate:t?.browserCustomizationOptions?.successMessage,prompt:t?.loginHint?`login`:`select_account`}}async function O(e,t,n={}){u.verbose(`Authentication will resume through the broker`);let r=await p(n),i=D(e,n);l.pluginConfiguration.broker.parentWindowHandle?i.windowHandle=Buffer.from(l.pluginConfiguration.broker.parentWindowHandle):u.warning(`Parent window handle is not specified for the broker. This may cause unexpected behavior. Please provide the parentWindowHandle.`),l.pluginConfiguration.broker.enableMsaPassthrough&&((i.tokenQueryParameters??={}).msal_request_type=`consumer_passthrough`),t?(i.prompt=`none`,u.verbose(`Attempting broker authentication using the default broker account`)):u.verbose(`Attempting broker authentication without the default broker account`),n.proofOfPossessionOptions&&(i.shrNonce=n.proofOfPossessionOptions.nonce,i.authenticationScheme=`pop`,i.resourceRequestMethod=n.proofOfPossessionOptions.resourceRequestMethod,i.resourceRequestUri=n.proofOfPossessionOptions.resourceRequestUrl);try{return await r.acquireTokenInteractive(i)}catch(r){if(u.verbose(`Failed to authenticate through the broker: ${r.message}`),n.disableAutomaticAuthentication)throw new a.AuthenticationRequiredError({scopes:e,getTokenOptions:n,message:`Cannot silently authenticate with default broker account.`});if(t)return O(e,!1,n);throw r}}async function k(e,t,r={}){u.getToken.info(`Attempting to acquire token using brokered authentication with useDefaultBrokerAccount: ${t}`);let a=await O(e,t,r);return(0,i.ensureValidMsalToken)(e,a,r),l.cachedAccount=a?.account??null,l.logger.getToken.info((0,n.formatSuccess)(e)),{token:a.accessToken,expiresOnTimestamp:a.expiresOn.getTime(),refreshAfterTimestamp:a.refreshOn?.getTime(),tokenType:a.tokenType}}async function A(e,t={}){u.getToken.info(`Attempting to acquire token interactively`);let n=await p(t);return v(n,e,t,async()=>{let r=D(e,t);return l.pluginConfiguration.broker.isEnabled?O(e,l.pluginConfiguration.broker.useDefaultBrokerAccount??!1,t):(t.proofOfPossessionOptions&&(r.shrNonce=t.proofOfPossessionOptions.nonce,r.authenticationScheme=`pop`,r.resourceRequestMethod=t.proofOfPossessionOptions.resourceRequestMethod,r.resourceRequestUri=t.proofOfPossessionOptions.resourceRequestUrl),n.acquireTokenInteractive(r))})}return{getActiveAccount:w,getBrokeredToken:k,getTokenByClientSecret:y,getTokenByClientAssertion:b,getTokenByClientCertificate:x,getTokenByDeviceCode:S,getTokenByUsernamePassword:C,getTokenByAuthorizationCode:T,getTokenOnBehalfOf:E,getTokenByInteractiveRequest:A}}})),md=s((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.ClientCertificateCredential=void 0,e.parseCertificate=l;let t=pd(),n=require(`node:crypto`),r=mu(),i=Rs(),a=require(`node:fs/promises`),o=zs(),s=`ClientCertificateCredential`,c=(0,i.credentialLogger)(s);e.ClientCertificateCredential=class{constructor(e,n,i,a={}){if(!e||!n)throw Error(`${s}: tenantId and clientId are required parameters.`);this.tenantId=e,this.additionallyAllowedTenantIds=(0,r.resolveAdditionallyAllowedTenantIds)(a?.additionallyAllowedTenants),this.sendCertificateChain=a.sendCertificateChain,this.certificateConfiguration={...typeof i==`string`?{certificatePath:i}:i};let o=this.certificateConfiguration.certificate,l=this.certificateConfiguration.certificatePath;if(!this.certificateConfiguration||!(o||l))throw Error(`${s}: Provide either a PEM certificate in string form, or the path to that certificate in the filesystem. To troubleshoot, visit https://aka.ms/azsdk/js/identity/serviceprincipalauthentication/troubleshoot.`);if(o&&l)throw Error(`${s}: To avoid unexpected behaviors, providing both the contents of a PEM certificate and the path to a PEM certificate is forbidden. To troubleshoot, visit https://aka.ms/azsdk/js/identity/serviceprincipalauthentication/troubleshoot.`);this.msalClient=(0,t.createMsalClient)(n,e,{...a,logger:c,tokenCredentialOptions:a})}async getToken(e,t={}){return o.tracingClient.withSpan(`${s}.getToken`,t,async t=>{t.tenantId=(0,r.processMultiTenantRequest)(this.tenantId,t,this.additionallyAllowedTenantIds,c);let n=Array.isArray(e)?e:[e],i=await this.buildClientCertificate();return this.msalClient.getTokenByClientCertificate(n,i,t)})}async buildClientCertificate(){let e=await l(this.certificateConfiguration,this.sendCertificateChain??!1),t;return t=this.certificateConfiguration.certificatePassword===void 0?e.certificateContents:(0,n.createPrivateKey)({key:e.certificateContents,passphrase:this.certificateConfiguration.certificatePassword,format:`pem`}).export({format:`pem`,type:`pkcs8`}).toString(),{thumbprint:e.thumbprint,thumbprintSha256:e.thumbprintSha256,privateKey:t,x5c:e.x5c}}};async function l(e,t){let r=e.certificate,i=e.certificatePath,o=r||await(0,a.readFile)(i,`utf8`),s=t?o:void 0,c=/(-+BEGIN CERTIFICATE-+)(\n\r?|\r\n?)([A-Za-z0-9+/\n\r]+=*)(\n\r?|\r\n?)(-+END CERTIFICATE-+)/g,l=[],u;do u=c.exec(o),u&&l.push(u[3]);while(u);if(l.length===0)throw Error(`The file at the specified path does not contain a PEM-encoded certificate.`);let d=(0,n.createHash)(`sha1`).update(Buffer.from(l[0],`base64`)).digest(`hex`).toUpperCase();return{certificateContents:o,thumbprintSha256:(0,n.createHash)(`sha256`).update(Buffer.from(l[0],`base64`)).digest(`hex`).toUpperCase(),thumbprint:d,x5c:s}}})),hd=s((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.ensureScopes=n,e.ensureValidScopeForDevTimeCreds=r,e.getScopeResource=i;let t=Rs();function n(e){return Array.isArray(e)?e:[e]}function r(e,n){if(!e.match(/^[0-9a-zA-Z-_.:/]+$/)){let r=Error(`Invalid scope was specified by the user or calling client`);throw n.getToken.info((0,t.formatError)(e,r)),r}}function i(e){return e.replace(/\/.default$/,``)}})),gd=s((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.ClientSecretCredential=void 0;let t=pd(),n=mu(),r=Ls(),i=Rs(),a=hd(),o=zs(),s=(0,i.credentialLogger)(`ClientSecretCredential`);e.ClientSecretCredential=class{constructor(e,i,a,o={}){if(!e)throw new r.CredentialUnavailableError(`ClientSecretCredential: tenantId is a required parameter. To troubleshoot, visit https://aka.ms/azsdk/js/identity/serviceprincipalauthentication/troubleshoot.`);if(!i)throw new r.CredentialUnavailableError(`ClientSecretCredential: clientId is a required parameter. To troubleshoot, visit https://aka.ms/azsdk/js/identity/serviceprincipalauthentication/troubleshoot.`);if(!a)throw new r.CredentialUnavailableError(`ClientSecretCredential: clientSecret is a required parameter. To troubleshoot, visit https://aka.ms/azsdk/js/identity/serviceprincipalauthentication/troubleshoot.`);this.clientSecret=a,this.tenantId=e,this.additionallyAllowedTenantIds=(0,n.resolveAdditionallyAllowedTenantIds)(o?.additionallyAllowedTenants),this.msalClient=(0,t.createMsalClient)(i,e,{...o,logger:s,tokenCredentialOptions:o})}async getToken(e,t={}){return o.tracingClient.withSpan(`${this.constructor.name}.getToken`,t,async t=>{t.tenantId=(0,n.processMultiTenantRequest)(this.tenantId,t,this.additionallyAllowedTenantIds,s);let r=(0,a.ensureScopes)(e);return this.msalClient.getTokenByClientSecret(r,this.clientSecret,t)})}}})),_d=s((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.UsernamePasswordCredential=void 0;let t=pd(),n=mu(),r=Ls(),i=Rs(),a=hd(),o=zs(),s=(0,i.credentialLogger)(`UsernamePasswordCredential`);e.UsernamePasswordCredential=class{constructor(e,i,a,o,s={}){if(!e)throw new r.CredentialUnavailableError(`UsernamePasswordCredential: tenantId is a required parameter. To troubleshoot, visit https://aka.ms/azsdk/js/identity/usernamepasswordcredential/troubleshoot.`);if(!i)throw new r.CredentialUnavailableError(`UsernamePasswordCredential: clientId is a required parameter. To troubleshoot, visit https://aka.ms/azsdk/js/identity/usernamepasswordcredential/troubleshoot.`);if(!a)throw new r.CredentialUnavailableError(`UsernamePasswordCredential: username is a required parameter. To troubleshoot, visit https://aka.ms/azsdk/js/identity/usernamepasswordcredential/troubleshoot.`);if(!o)throw new r.CredentialUnavailableError(`UsernamePasswordCredential: password is a required parameter. To troubleshoot, visit https://aka.ms/azsdk/js/identity/usernamepasswordcredential/troubleshoot.`);this.tenantId=e,this.additionallyAllowedTenantIds=(0,n.resolveAdditionallyAllowedTenantIds)(s?.additionallyAllowedTenants),this.username=a,this.password=o,this.msalClient=(0,t.createMsalClient)(i,this.tenantId,{...s,tokenCredentialOptions:s??{}})}async getToken(e,t={}){return o.tracingClient.withSpan(`${this.constructor.name}.getToken`,t,async t=>{t.tenantId=(0,n.processMultiTenantRequest)(this.tenantId,t,this.additionallyAllowedTenantIds,s);let r=(0,a.ensureScopes)(e);return this.msalClient.getTokenByUsernamePassword(r,this.username,this.password,t)})}}})),vd=s((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.EnvironmentCredential=e.AllSupportedEnvironmentVariables=void 0,e.getSendCertificateChain=d;let t=Ls(),n=Rs(),r=md(),i=gd(),a=_d(),o=mu(),s=zs();e.AllSupportedEnvironmentVariables=[`AZURE_TENANT_ID`,`AZURE_CLIENT_ID`,`AZURE_CLIENT_SECRET`,`AZURE_CLIENT_CERTIFICATE_PATH`,`AZURE_CLIENT_CERTIFICATE_PASSWORD`,`AZURE_USERNAME`,`AZURE_PASSWORD`,`AZURE_ADDITIONALLY_ALLOWED_TENANTS`,`AZURE_CLIENT_SEND_CERTIFICATE_CHAIN`];function c(){return(process.env.AZURE_ADDITIONALLY_ALLOWED_TENANTS??``).split(`;`)}let l=`EnvironmentCredential`,u=(0,n.credentialLogger)(l);function d(){let e=(process.env.AZURE_CLIENT_SEND_CERTIFICATE_CHAIN??``).toLowerCase(),t=e===`true`||e===`1`;return u.verbose(`AZURE_CLIENT_SEND_CERTIFICATE_CHAIN: ${process.env.AZURE_CLIENT_SEND_CERTIFICATE_CHAIN}; sendCertificateChain: ${t}`),t}e.EnvironmentCredential=class{constructor(t){this._credential=void 0;let s=(0,n.processEnvVars)(e.AllSupportedEnvironmentVariables).assigned.join(`, `);u.info(`Found the following environment variables: ${s}`);let l=process.env.AZURE_TENANT_ID,f=process.env.AZURE_CLIENT_ID,p=process.env.AZURE_CLIENT_SECRET,m=c(),h=d(),g={...t,additionallyAllowedTenantIds:m,sendCertificateChain:h};if(l&&(0,o.checkTenantId)(u,l),l&&f&&p){u.info(`Invoking ClientSecretCredential with tenant ID: ${l}, clientId: ${f} and clientSecret: [REDACTED]`),this._credential=new i.ClientSecretCredential(l,f,p,g);return}let _=process.env.AZURE_CLIENT_CERTIFICATE_PATH,v=process.env.AZURE_CLIENT_CERTIFICATE_PASSWORD;if(l&&f&&_){u.info(`Invoking ClientCertificateCredential with tenant ID: ${l}, clientId: ${f} and certificatePath: ${_}`),this._credential=new r.ClientCertificateCredential(l,f,{certificatePath:_,certificatePassword:v},g);return}let y=process.env.AZURE_USERNAME,b=process.env.AZURE_PASSWORD;l&&f&&y&&b&&(u.info(`Invoking UsernamePasswordCredential with tenant ID: ${l}, clientId: ${f} and username: ${y}`),u.warning(`Environment is configured to use username and password authentication. This authentication method is deprecated, as it doesn't support multifactor authentication (MFA). Use a more secure credential. For more details, see https://aka.ms/azsdk/identity/mfa.`),this._credential=new a.UsernamePasswordCredential(l,f,y,b,g))}async getToken(e,r={}){return s.tracingClient.withSpan(`${l}.getToken`,r,async r=>{if(this._credential)try{let t=await this._credential.getToken(e,r);return u.getToken.info((0,n.formatSuccess)(e)),t}catch(r){let i=new t.AuthenticationError(400,{error:`${l} authentication failed. To troubleshoot, visit https://aka.ms/azsdk/js/identity/environmentcredential/troubleshoot.`,error_description:r.message.toString().split(`More details:`).join(``)});throw u.getToken.info((0,n.formatError)(e,i)),i}throw new t.CredentialUnavailableError(`${l} is unavailable. No underlying credential could be used. To troubleshoot, visit https://aka.ms/azsdk/js/identity/environmentcredential/troubleshoot.`)})}}})),yd=s((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.imdsRetryPolicy=r;let t=Ro(),n=oo();function r(e){return(0,t.retryPolicy)([{name:`imdsRetryPolicy`,retry:({retryCount:t,response:r})=>{if(r?.status!==404&&r?.status!==410)return{skipStrategy:!0};let i=r?.status===410?Math.max(3e3,e.startDelayInMs):e.startDelayInMs;return(0,n.calculateRetryDelay)(t,{retryDelayInMs:i,maxRetryDelayInMs:64e3})}}],{maxRetries:e.maxRetries})}})),bd=s((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.imdsMsi=void 0;let t=Ro(),n=oo(),r=Rs(),i=uu(),a=zs(),o=`ManagedIdentityCredential - IMDS`,s=(0,r.credentialLogger)(o);function c(e){if(!(0,i.mapScopesToResource)(e))throw Error(`${o}: Multiple scopes are not supported.`);return{url:`${new URL(`/metadata/identity/oauth2/token`,process.env.AZURE_POD_IDENTITY_AUTHORITY_HOST??`http://169.254.169.254`)}`,method:`GET`,headers:(0,t.createHttpHeaders)({Accept:`application/json`})}}e.imdsMsi={name:`imdsMsi`,async isAvailable(e){let{scopes:r,identityClient:l,getTokenOptions:u}=e,d=(0,i.mapScopesToResource)(r);if(!d)return s.info(`${o}: Unavailable. Multiple scopes are not supported.`),!1;if(process.env.AZURE_POD_IDENTITY_AUTHORITY_HOST)return!0;if(!l)throw Error(`Missing IdentityClient`);let f=c(d);return a.tracingClient.withSpan(`ManagedIdentityCredential-pingImdsEndpoint`,u??{},async e=>{f.tracingOptions=e.tracingOptions;let r=(0,t.createPipelineRequest)(f);r.timeout=e.requestOptions?.timeout||1e3,r.allowInsecureConnection=!0;let i;try{s.info(`${o}: Pinging the Azure IMDS endpoint`),i=await l.sendRequest(r)}catch(e){return(0,n.isError)(e)&&s.verbose(`${o}: Caught error ${e.name}: ${e.message}`),s.info(`${o}: The Azure IMDS endpoint is unavailable`),!1}return i.status===403&&i.bodyAsText?.includes(`unreachable`)?(s.info(`${o}: The Azure IMDS endpoint is unavailable`),s.info(`${o}: ${i.bodyAsText}`),!1):(s.info(`${o}: The Azure IMDS endpoint is available`),!0)})}}})),xd=s((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.ClientAssertionCredential=void 0;let t=pd(),n=mu(),r=Ls(),i=Rs(),a=zs(),o=(0,i.credentialLogger)(`ClientAssertionCredential`);e.ClientAssertionCredential=class{constructor(e,i,a,s={}){if(!e)throw new r.CredentialUnavailableError(`ClientAssertionCredential: tenantId is a required parameter.`);if(!i)throw new r.CredentialUnavailableError(`ClientAssertionCredential: clientId is a required parameter.`);if(!a)throw new r.CredentialUnavailableError(`ClientAssertionCredential: clientAssertion is a required parameter.`);this.tenantId=e,this.additionallyAllowedTenantIds=(0,n.resolveAdditionallyAllowedTenantIds)(s?.additionallyAllowedTenants),this.options=s,this.getAssertion=a,this.msalClient=(0,t.createMsalClient)(i,e,{...s,logger:o,tokenCredentialOptions:this.options})}async getToken(e,t={}){return a.tracingClient.withSpan(`${this.constructor.name}.getToken`,t,async t=>{t.tenantId=(0,n.processMultiTenantRequest)(this.tenantId,t,this.additionallyAllowedTenantIds,o);let r=Array.isArray(e)?e:[e];return this.msalClient.getTokenByClientAssertion(r,this.getAssertion,t)})}}})),Sd=s((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.WorkloadIdentityCredential=e.SupportedWorkloadEnvironmentVariables=void 0;let t=Rs(),n=xd(),r=Ls(),i=mu(),a=require(`node:fs/promises`),o=`WorkloadIdentityCredential`;e.SupportedWorkloadEnvironmentVariables=[`AZURE_TENANT_ID`,`AZURE_CLIENT_ID`,`AZURE_FEDERATED_TOKEN_FILE`];let s=(0,t.credentialLogger)(o);e.WorkloadIdentityCredential=class{constructor(a){this.azureFederatedTokenFileContent=void 0,this.cacheDate=void 0;let c=(0,t.processEnvVars)(e.SupportedWorkloadEnvironmentVariables).assigned.join(`, `);s.info(`Found the following environment variables: ${c}`);let l=a??{},u=l.tenantId||process.env.AZURE_TENANT_ID,d=l.clientId||process.env.AZURE_CLIENT_ID;if(this.federatedTokenFilePath=l.tokenFilePath||process.env.AZURE_FEDERATED_TOKEN_FILE,u&&(0,i.checkTenantId)(s,u),!d)throw new r.CredentialUnavailableError(`${o}: is unavailable. clientId is a required parameter. In DefaultAzureCredential and ManagedIdentityCredential, this can be provided as an environment variable - "AZURE_CLIENT_ID". + See the troubleshooting guide for more information: https://aka.ms/azsdk/js/identity/workloadidentitycredential/troubleshoot`);if(!u)throw new r.CredentialUnavailableError(`${o}: is unavailable. tenantId is a required parameter. In DefaultAzureCredential and ManagedIdentityCredential, this can be provided as an environment variable - "AZURE_TENANT_ID". + See the troubleshooting guide for more information: https://aka.ms/azsdk/js/identity/workloadidentitycredential/troubleshoot`);if(!this.federatedTokenFilePath)throw new r.CredentialUnavailableError(`${o}: is unavailable. federatedTokenFilePath is a required parameter. In DefaultAzureCredential and ManagedIdentityCredential, this can be provided as an environment variable - "AZURE_FEDERATED_TOKEN_FILE". + See the troubleshooting guide for more information: https://aka.ms/azsdk/js/identity/workloadidentitycredential/troubleshoot`);s.info(`Invoking ClientAssertionCredential with tenant ID: ${u}, clientId: ${l.clientId} and federated token path: [REDACTED]`),this.client=new n.ClientAssertionCredential(u,d,this.readFileContents.bind(this),a)}async getToken(e,t){if(!this.client){let e=`${o}: is unavailable. tenantId, clientId, and federatedTokenFilePath are required parameters. + In DefaultAzureCredential and ManagedIdentityCredential, these can be provided as environment variables - + "AZURE_TENANT_ID", + "AZURE_CLIENT_ID", + "AZURE_FEDERATED_TOKEN_FILE". See the troubleshooting guide for more information: https://aka.ms/azsdk/js/identity/workloadidentitycredential/troubleshoot`;throw s.info(e),new r.CredentialUnavailableError(e)}return s.info(`Invoking getToken() of Client Assertion Credential`),this.client.getToken(e,t)}async readFileContents(){if(this.cacheDate!==void 0&&Date.now()-this.cacheDate>=1e3*60*5&&(this.azureFederatedTokenFileContent=void 0),!this.federatedTokenFilePath)throw new r.CredentialUnavailableError(`${o}: is unavailable. Invalid file path provided ${this.federatedTokenFilePath}.`);if(!this.azureFederatedTokenFileContent){let e=(await(0,a.readFile)(this.federatedTokenFilePath,`utf8`)).trim();if(e)this.azureFederatedTokenFileContent=e,this.cacheDate=Date.now();else throw new r.CredentialUnavailableError(`${o}: is unavailable. No content on the file ${this.federatedTokenFilePath}.`)}return this.azureFederatedTokenFileContent}}})),Cd=s((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.tokenExchangeMsi=void 0;let t=Sd(),n=Rs(),r=`ManagedIdentityCredential - Token Exchange`,i=(0,n.credentialLogger)(r);e.tokenExchangeMsi={name:`tokenExchangeMsi`,async isAvailable(e){let t=process.env,n=!!((e||t.AZURE_CLIENT_ID)&&t.AZURE_TENANT_ID&&process.env.AZURE_FEDERATED_TOKEN_FILE);return n||i.info(`${r}: Unavailable. The environment variables needed are: AZURE_CLIENT_ID (or the client ID sent through the parameters), AZURE_TENANT_ID and AZURE_FEDERATED_TOKEN_FILE`),n},async getToken(e,n={}){let{scopes:r,clientId:i}=e;return new t.WorkloadIdentityCredential({clientId:i,tenantId:process.env.AZURE_TENANT_ID,tokenFilePath:process.env.AZURE_FEDERATED_TOKEN_FILE,disableInstanceDiscovery:!0}).getToken(r,n)}}})),wd=s((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.ManagedIdentityCredential=void 0;let t=za(),n=ou(),r=du(),i=Ls(),a=cu(),o=yd(),s=Rs(),c=zs(),l=bd(),u=Cd(),d=uu(),f=(0,s.credentialLogger)(`ManagedIdentityCredential`);e.ManagedIdentityCredential=class{constructor(e,s){this.msiRetryConfig={maxRetries:5,startDelayInMs:800,intervalIncrement:2};let c;typeof e==`string`?(this.clientId=e,c=s??{}):(this.clientId=e?.clientId,c=e??{}),this.resourceId=c?.resourceId,this.objectId=c?.objectId,this.sendProbeRequest=c?.sendProbeRequest??!1;let l=[{key:`clientId`,value:this.clientId},{key:`resourceId`,value:this.resourceId},{key:`objectId`,value:this.objectId}].filter(e=>e.value);if(l.length>1)throw Error(`ManagedIdentityCredential: only one of 'clientId', 'resourceId', or 'objectId' can be provided. Received values: ${JSON.stringify({clientId:this.clientId,resourceId:this.resourceId,objectId:this.objectId})}`);c.allowInsecureConnection=!0,c.retryOptions?.maxRetries!==void 0&&(this.msiRetryConfig.maxRetries=c.retryOptions.maxRetries),this.identityClient=new r.IdentityClient({...c,additionalPolicies:[{policy:(0,o.imdsRetryPolicy)(this.msiRetryConfig),position:`perCall`}]}),this.managedIdentityApp=new n.ManagedIdentityApplication({managedIdentityIdParams:{userAssignedClientId:this.clientId,userAssignedResourceId:this.resourceId,userAssignedObjectId:this.objectId},system:{disableInternalRetries:!0,networkClient:this.identityClient,loggerOptions:{logLevel:(0,a.getMSALLogLevel)((0,t.getLogLevel)()),piiLoggingEnabled:c.loggingOptions?.enableUnsafeSupportLogging,loggerCallback:(0,a.defaultLoggerCallback)(f)}}}),this.isAvailableIdentityClient=new r.IdentityClient({...c,retryOptions:{maxRetries:0}});let u=this.managedIdentityApp.getManagedIdentitySource();if(u===`CloudShell`&&(this.clientId||this.resourceId||this.objectId))throw f.warning(`CloudShell MSI detected with user-provided IDs - throwing. Received values: ${JSON.stringify({clientId:this.clientId,resourceId:this.resourceId,objectId:this.objectId})}.`),new i.CredentialUnavailableError(`ManagedIdentityCredential: Specifying a user-assigned managed identity is not supported for CloudShell at runtime. When using Managed Identity in CloudShell, omit the clientId, resourceId, and objectId parameters.`);if(u===`ServiceFabric`&&(this.clientId||this.resourceId||this.objectId))throw f.warning(`Service Fabric detected with user-provided IDs - throwing. Received values: ${JSON.stringify({clientId:this.clientId,resourceId:this.resourceId,objectId:this.objectId})}.`),new i.CredentialUnavailableError(`ManagedIdentityCredential: ${d.serviceFabricErrorMessage}`);if(f.info(`Using ${u} managed identity.`),l.length===1){let{key:e,value:t}=l[0];f.info(`${u} with ${e}: ${t}`)}}async getToken(e,t={}){f.getToken.info(`Using the MSAL provider for Managed Identity.`);let n=(0,d.mapScopesToResource)(e);if(!n)throw new i.CredentialUnavailableError(`ManagedIdentityCredential: Multiple scopes are not supported. Scopes: ${JSON.stringify(e)}`);return c.tracingClient.withSpan(`ManagedIdentityCredential.getToken`,t,async()=>{try{let r=await u.tokenExchangeMsi.isAvailable(this.clientId),a=this.managedIdentityApp.getManagedIdentitySource(),o=a===`DefaultToImds`||a===`Imds`;if(f.getToken.info(`MSAL Identity source: ${a}`),r){f.getToken.info(`Using the token exchange managed identity.`);let t=await u.tokenExchangeMsi.getToken({scopes:e,clientId:this.clientId,identityClient:this.identityClient,retryConfig:this.msiRetryConfig,resourceId:this.resourceId});if(t===null)throw new i.CredentialUnavailableError(`Attempted to use the token exchange managed identity, but received a null response.`);return t}else if(o&&this.sendProbeRequest&&(f.getToken.info(`Using the IMDS endpoint to probe for availability.`),!await l.imdsMsi.isAvailable({scopes:e,clientId:this.clientId,getTokenOptions:t,identityClient:this.isAvailableIdentityClient,resourceId:this.resourceId})))throw new i.CredentialUnavailableError(`Attempted to use the IMDS endpoint, but it is not available.`);f.getToken.info(`Calling into MSAL for managed identity token.`);let c=await this.managedIdentityApp.acquireToken({resource:n});return this.ensureValidMsalToken(e,c,t),f.getToken.info((0,s.formatSuccess)(e)),{expiresOnTimestamp:c.expiresOn.getTime(),token:c.accessToken,refreshAfterTimestamp:c.refreshOn?.getTime(),tokenType:`Bearer`}}catch(t){throw f.getToken.error((0,s.formatError)(e,t)),t.name===`AuthenticationRequiredError`?t:p(t)?new i.CredentialUnavailableError(`ManagedIdentityCredential: Network unreachable. Message: ${t.message}`,{cause:t}):new i.CredentialUnavailableError(`ManagedIdentityCredential: Authentication failed. Message ${t.message}`,{cause:t})}})}ensureValidMsalToken(e,t,n){let r=t=>(f.getToken.info(t),new i.AuthenticationRequiredError({scopes:Array.isArray(e)?e:[e],getTokenOptions:n,message:t}));if(!t)throw r(`No response.`);if(!t.expiresOn)throw r(`Response had no "expiresOn" property.`);if(!t.accessToken)throw r(`Response had no "accessToken" property.`)}};function p(e){return!!(e.errorCode===`network_error`||e.code===`ENETUNREACH`||e.code===`EHOSTUNREACH`||(e.statusCode===403||e.code===403)&&e.message.includes(`unreachable`))}})),Td=s((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.AzureDeveloperCliCredential=e.developerCliCredentialInternals=e.azureDeveloperCliPublicErrorMessages=void 0;let t=(hi(),d(jr)),n=Rs(),r=Ls(),i=t.__importDefault(require(`child_process`)),a=mu(),o=zs(),s=hd(),c=(0,n.credentialLogger)(`AzureDeveloperCliCredential`);e.azureDeveloperCliPublicErrorMessages={notInstalled:`Azure Developer CLI couldn't be found. To mitigate this issue, see the troubleshooting guidelines at https://aka.ms/azsdk/js/identity/azdevclicredential/troubleshoot.`,login:`Please run 'azd auth login' from a command prompt to authenticate before using this credential. For more information, see the troubleshooting guidelines at https://aka.ms/azsdk/js/identity/azdevclicredential/troubleshoot.`,unknown:`Unknown error while trying to retrieve the access token`,claim:`This credential doesn't support claims challenges. To authenticate with the required claims, please run the following command:`},e.developerCliCredentialInternals={getSafeWorkingDir(){if(process.platform===`win32`){let e=process.env.SystemRoot||process.env.SYSTEMROOT;return e||=(c.getToken.warning(`The SystemRoot environment variable is not set. This may cause issues when using the Azure Developer CLI credential.`),`C:\\Windows`),e}else return`/bin`},async getAzdAccessToken(t,n,r,a){let o=[];n&&(o=[`--tenant-id`,n]);let s=[];return a&&(s=[`--claims`,btoa(a)]),new Promise((n,a)=>{try{let a=[`azd`,...[`auth`,`token`,`--output`,`json`,`--no-prompt`,...t.reduce((e,t)=>e.concat(`--scope`,t),[]),...o,...s]].join(` `);i.default.exec(a,{cwd:e.developerCliCredentialInternals.getSafeWorkingDir(),timeout:r},(e,t,r)=>{n({stdout:t,stderr:r,error:e})})}catch(e){a(e)}})}},e.AzureDeveloperCliCredential=class{constructor(e){e?.tenantId&&((0,a.checkTenantId)(c,e?.tenantId),this.tenantId=e?.tenantId),this.additionallyAllowedTenantIds=(0,a.resolveAdditionallyAllowedTenantIds)(e?.additionallyAllowedTenants),this.timeout=e?.processTimeoutInMs}async getToken(t,i={}){let l=(0,a.processMultiTenantRequest)(this.tenantId,i,this.additionallyAllowedTenantIds);l&&(0,a.checkTenantId)(c,l);let u;return u=typeof t==`string`?[t]:t,c.getToken.info(`Using the scopes ${t}`),o.tracingClient.withSpan(`${this.constructor.name}.getToken`,i,async()=>{try{u.forEach(e=>{(0,s.ensureValidScopeForDevTimeCreds)(e,c)});let a=await e.developerCliCredentialInternals.getAzdAccessToken(u,l,this.timeout,i.claims),o=a.stderr?.match(`must use multi-factor authentication`)||a.stderr?.match(`reauthentication required`),d=a.stderr?.match("not logged in, run `azd login` to login")||a.stderr?.match("not logged in, run `azd auth login` to login");if(a.stderr?.match(`azd:(.*)not found`)||a.stderr?.startsWith(`'azd' is not recognized`)||a.error&&a.error.code===`ENOENT`){let i=new r.CredentialUnavailableError(e.azureDeveloperCliPublicErrorMessages.notInstalled);throw c.getToken.info((0,n.formatError)(t,i)),i}if(d){let i=new r.CredentialUnavailableError(e.azureDeveloperCliPublicErrorMessages.login);throw c.getToken.info((0,n.formatError)(t,i)),i}if(o){let i=`azd auth login ${u.reduce((e,t)=>e.concat(`--scope`,t),[]).join(` `)}`,a=new r.CredentialUnavailableError(`${e.azureDeveloperCliPublicErrorMessages.claim} ${i}`);throw c.getToken.info((0,n.formatError)(t,a)),a}try{let e=JSON.parse(a.stdout);return c.getToken.info((0,n.formatSuccess)(t)),{token:e.token,expiresOnTimestamp:new Date(e.expiresOn).getTime(),tokenType:`Bearer`}}catch(e){throw a.stderr?new r.CredentialUnavailableError(a.stderr):e}}catch(i){let a=i.name===`CredentialUnavailableError`?i:new r.CredentialUnavailableError(i.message||e.azureDeveloperCliPublicErrorMessages.unknown);throw c.getToken.info((0,n.formatError)(t,a)),a}})}}})),Ed=s((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.checkSubscription=n;let t=Rs();function n(e,n){if(!n.match(/^[0-9a-zA-Z-._ ]+$/)){let r=Error(`Subscription '${n}' contains invalid characters. If this is the name of a subscription, use its ID instead. You can locate your subscription by following the instructions listed here: https://learn.microsoft.com/azure/azure-portal/get-subscription-tenant-id`);throw e.info((0,t.formatError)(``,r)),r}}})),Dd=s((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.AzureCliCredential=e.cliCredentialInternals=e.azureCliPublicErrorMessages=void 0;let t=(hi(),d(jr)),n=mu(),r=Rs(),i=hd(),a=Ls(),o=t.__importDefault(require(`child_process`)),s=zs(),c=Ed(),l=(0,r.credentialLogger)(`AzureCliCredential`);e.azureCliPublicErrorMessages={claim:`This credential doesn't support claims challenges. To authenticate with the required claims, please run the following command:`,notInstalled:`Azure CLI could not be found. Please visit https://aka.ms/azure-cli for installation instructions and then, once installed, authenticate to your Azure account using 'az login'.`,login:`Please run 'az login' from a command prompt to authenticate before using this credential.`,unknown:`Unknown error while trying to retrieve the access token`,unexpectedResponse:`Unexpected response from Azure CLI when getting token. Expected "expiresOn" to be a RFC3339 date string. Got:`},e.cliCredentialInternals={getSafeWorkingDir(){if(process.platform===`win32`){let e=process.env.SystemRoot||process.env.SYSTEMROOT;return e||=(l.getToken.warning(`The SystemRoot environment variable is not set. This may cause issues when using the Azure CLI credential.`),`C:\\Windows`),e}else return`/bin`},async getAzureCliAccessToken(t,n,r,i){let a=[],s=[];return n&&(a=[`--tenant`,n]),r&&(s=[`--subscription`,`"${r}"`]),new Promise((n,r)=>{try{let r=[`az`,...[`account`,`get-access-token`,`--output`,`json`,`--resource`,t,...a,...s]].join(` `);o.default.exec(r,{cwd:e.cliCredentialInternals.getSafeWorkingDir(),timeout:i},(e,t,r)=>{n({stdout:t,stderr:r,error:e})})}catch(e){r(e)}})}},e.AzureCliCredential=class{constructor(e){e?.tenantId&&((0,n.checkTenantId)(l,e?.tenantId),this.tenantId=e?.tenantId),e?.subscription&&((0,c.checkSubscription)(l,e?.subscription),this.subscription=e?.subscription),this.additionallyAllowedTenantIds=(0,n.resolveAdditionallyAllowedTenantIds)(e?.additionallyAllowedTenants),this.timeout=e?.processTimeoutInMs}async getToken(t,o={}){let u=typeof t==`string`?t:t[0],d=o.claims;if(d&&d.trim()){let t=`az login --claims-challenge ${btoa(d)} --scope ${u}`,n=o.tenantId;n&&(t+=` --tenant ${n}`);let i=new a.CredentialUnavailableError(`${e.azureCliPublicErrorMessages.claim} ${t}`);throw l.getToken.info((0,r.formatError)(u,i)),i}let f=(0,n.processMultiTenantRequest)(this.tenantId,o,this.additionallyAllowedTenantIds);return f&&(0,n.checkTenantId)(l,f),this.subscription&&(0,c.checkSubscription)(l,this.subscription),l.getToken.info(`Using the scope ${u}`),s.tracingClient.withSpan(`${this.constructor.name}.getToken`,o,async()=>{try{(0,i.ensureValidScopeForDevTimeCreds)(u,l);let n=(0,i.getScopeResource)(u),o=await e.cliCredentialInternals.getAzureCliAccessToken(n,f,this.subscription,this.timeout),s=o.stderr?.match(`(.*)az login --scope(.*)`),c=o.stderr?.match(`(.*)az login(.*)`)&&!s;if(o.stderr?.match(`az:(.*)not found`)||o.stderr?.startsWith(`'az' is not recognized`)){let n=new a.CredentialUnavailableError(e.azureCliPublicErrorMessages.notInstalled);throw l.getToken.info((0,r.formatError)(t,n)),n}if(c){let n=new a.CredentialUnavailableError(e.azureCliPublicErrorMessages.login);throw l.getToken.info((0,r.formatError)(t,n)),n}try{let e=o.stdout,n=this.parseRawResponse(e);return l.getToken.info((0,r.formatSuccess)(t)),n}catch(e){throw o.stderr?new a.CredentialUnavailableError(o.stderr):e}}catch(n){let i=n.name===`CredentialUnavailableError`?n:new a.CredentialUnavailableError(n.message||e.azureCliPublicErrorMessages.unknown);throw l.getToken.info((0,r.formatError)(t,i)),i}})}parseRawResponse(t){let n=JSON.parse(t),r=n.accessToken,i=Number.parseInt(n.expires_on,10)*1e3;if(!isNaN(i))return l.getToken.info(`expires_on is available and is valid, using it`),{token:r,expiresOnTimestamp:i,tokenType:`Bearer`};if(i=new Date(n.expiresOn).getTime(),isNaN(i))throw new a.CredentialUnavailableError(`${e.azureCliPublicErrorMessages.unexpectedResponse} "${n.expiresOn}"`);return{token:r,expiresOnTimestamp:i,tokenType:`Bearer`}}}})),Od=s((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.processUtils=void 0;let t=(hi(),d(jr)).__importDefault(require(`node:child_process`));e.processUtils={execFile(e,n,r){return new Promise((i,a)=>{t.default.execFile(e,n,r,(e,t,n)=>{Buffer.isBuffer(t)&&(t=t.toString(`utf8`)),Buffer.isBuffer(n)&&(n=n.toString(`utf8`)),n||e?a(n?Error(n):e):i(t)})})}}})),kd=s((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.AzurePowerShellCredential=e.commandStack=e.powerShellPublicErrorMessages=e.powerShellErrors=void 0,e.formatCommand=l,e.parseJsonToken=p;let t=mu(),n=Rs(),r=hd(),i=Ls(),a=Od(),o=zs(),s=(0,n.credentialLogger)(`AzurePowerShellCredential`),c=process.platform===`win32`;function l(e){return c?`${e}.exe`:e}async function u(e,t){let n=[];for(let r of e){let[e,...i]=r,o=await a.processUtils.execFile(e,i,{encoding:`utf8`,timeout:t});n.push(o)}return n}e.powerShellErrors={login:`Run Connect-AzAccount to login`,installed:`The specified module 'Az.Accounts' with version '2.2.0' was not loaded because no valid module file was found in any module directory`},e.powerShellPublicErrorMessages={login:`Please run 'Connect-AzAccount' from PowerShell to authenticate before using this credential.`,installed:`The 'Az.Account' module >= 2.2.0 is not installed. Install the Azure Az PowerShell module with: "Install-Module -Name Az -Scope CurrentUser -Repository PSGallery -Force".`,claim:`This credential doesn't support claims challenges. To authenticate with the required claims, please run the following command:`,troubleshoot:`To troubleshoot, visit https://aka.ms/azsdk/js/identity/powershellcredential/troubleshoot.`};let d=t=>t.message.match(`(.*)${e.powerShellErrors.login}(.*)`),f=t=>t.message.match(e.powerShellErrors.installed);e.commandStack=[l(`pwsh`)],c&&e.commandStack.push(l(`powershell`)),e.AzurePowerShellCredential=class{constructor(e){e?.tenantId&&((0,t.checkTenantId)(s,e?.tenantId),this.tenantId=e?.tenantId),this.additionallyAllowedTenantIds=(0,t.resolveAdditionallyAllowedTenantIds)(e?.additionallyAllowedTenants),this.timeout=e?.processTimeoutInMs}async getAzurePowerShellAccessToken(t,n,r){for(let i of[...e.commandStack]){try{await u([[i,`/?`]],r)}catch{e.commandStack.shift();continue}let a=(await u([[i,`-NoProfile`,`-NonInteractive`,`-Command`,` + $tenantId = "${n??``}" + $m = Import-Module Az.Accounts -MinimumVersion 2.2.0 -PassThru + $useSecureString = $m.Version -ge [version]'2.17.0' -and $m.Version -lt [version]'5.0.0' + + $params = @{ + ResourceUrl = "${t}" + } + + if ($tenantId.Length -gt 0) { + $params["TenantId"] = $tenantId + } + + if ($useSecureString) { + $params["AsSecureString"] = $true + } + + $token = Get-AzAccessToken @params + + $result = New-Object -TypeName PSObject + $result | Add-Member -MemberType NoteProperty -Name ExpiresOn -Value $token.ExpiresOn + + if ($token.Token -is [System.Security.SecureString]) { + if ($PSVersionTable.PSVersion.Major -lt 7) { + $ssPtr = [System.Runtime.InteropServices.Marshal]::SecureStringToBSTR($token.Token) + try { + $result | Add-Member -MemberType NoteProperty -Name Token -Value ([System.Runtime.InteropServices.Marshal]::PtrToStringBSTR($ssPtr)) + } + finally { + [System.Runtime.InteropServices.Marshal]::ZeroFreeBSTR($ssPtr) + } + } + else { + $result | Add-Member -MemberType NoteProperty -Name Token -Value ($token.Token | ConvertFrom-SecureString -AsPlainText) + } + } + else { + $result | Add-Member -MemberType NoteProperty -Name Token -Value $token.Token + } + + Write-Output (ConvertTo-Json $result) + `]]))[0];return p(a)}throw Error(`Unable to execute PowerShell. Ensure that it is installed in your system`)}async getToken(a,c={}){return o.tracingClient.withSpan(`${this.constructor.name}.getToken`,c,async()=>{let o=typeof a==`string`?a:a[0],l=c.claims;if(l&&l.trim()){let t=`Connect-AzAccount -ClaimsChallenge ${btoa(l)}`,r=c.tenantId;r&&(t+=` -Tenant ${r}`);let a=new i.CredentialUnavailableError(`${e.powerShellPublicErrorMessages.claim} ${t}`);throw s.getToken.info((0,n.formatError)(o,a)),a}let u=(0,t.processMultiTenantRequest)(this.tenantId,c,this.additionallyAllowedTenantIds);u&&(0,t.checkTenantId)(s,u);try{(0,r.ensureValidScopeForDevTimeCreds)(o,s),s.getToken.info(`Using the scope ${o}`);let e=(0,r.getScopeResource)(o),t=await this.getAzurePowerShellAccessToken(e,u,this.timeout);return s.getToken.info((0,n.formatSuccess)(a)),{token:t.Token,expiresOnTimestamp:new Date(t.ExpiresOn).getTime(),tokenType:`Bearer`}}catch(t){if(f(t)){let t=new i.CredentialUnavailableError(e.powerShellPublicErrorMessages.installed);throw s.getToken.info((0,n.formatError)(o,t)),t}else if(d(t)){let t=new i.CredentialUnavailableError(e.powerShellPublicErrorMessages.login);throw s.getToken.info((0,n.formatError)(o,t)),t}let r=new i.CredentialUnavailableError(`${t}. ${e.powerShellPublicErrorMessages.troubleshoot}`);throw s.getToken.info((0,n.formatError)(o,r)),r}})}};async function p(e){let t=e.match(/{[^{}]*}/g),n=e;if(t)try{for(let e of t)try{let t=JSON.parse(e);if(t?.Token)return n=n.replace(e,``),n&&s.getToken.warning(n),t}catch{continue}}catch{throw Error(`Unable to parse the output of PowerShell. Received output: ${e}`)}throw Error(`No access token found in the output. Received output: ${e}`)}})),Ad=s((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.VisualStudioCodeCredential=void 0;let t=Rs(),n=mu(),r=Ls(),i=mu(),a=pd(),o=hd(),s=Fs(),c=cu(),l=require(`node:fs/promises`),u=(0,t.credentialLogger)(`VisualStudioCodeCredential`),d={adfs:`The VisualStudioCodeCredential does not support authentication with ADFS tenants.`};function f(e){let t=d[e];if(t)throw new r.CredentialUnavailableError(t)}e.VisualStudioCodeCredential=class{constructor(e){this.options=e||{},e&&e.tenantId?((0,i.checkTenantId)(u,e.tenantId),this.tenantId=e.tenantId):this.tenantId=`common`,this.additionallyAllowedTenantIds=(0,n.resolveAdditionallyAllowedTenantIds)(e?.additionallyAllowedTenants),f(this.tenantId)}async prepare(e){let t=(0,n.processMultiTenantRequest)(this.tenantId,this.options,this.additionallyAllowedTenantIds,u)||this.tenantId;if(!(0,s.hasVSCodePlugin)()||!s.vsCodeAuthRecordPath)throw new r.CredentialUnavailableError(`Visual Studio Code Authentication is not available. Ensure you have have Azure Resources Extension installed in VS Code, signed into Azure via VS Code, installed the @azure/identity-vscode package, and properly configured the extension.`);let i=await this.loadAuthRecord(s.vsCodeAuthRecordPath,e);this.msalClient=(0,a.createMsalClient)(`aebc6443-996d-45c2-90f0-388ff96faa56`,t,{...this.options,isVSCodeCredential:!0,brokerOptions:{enabled:!0,parentWindowHandle:new Uint8Array,useDefaultBrokerAccount:!0},authenticationRecord:i})}prepareOnce(e){return this.preparePromise||=this.prepare(e),this.preparePromise}async getToken(e,t){let n=(0,o.ensureScopes)(e);if(await this.prepareOnce(n),!this.msalClient)throw new r.CredentialUnavailableError(`Visual Studio Code Authentication failed to initialize. Ensure you have have Azure Resources Extension installed in VS Code, signed into Azure via VS Code, installed the @azure/identity-vscode package, and properly configured the extension.`);return this.msalClient.getTokenByInteractiveRequest(n,{...t,disableAutomaticAuthentication:!0})}async loadAuthRecord(e,n){try{let t=await(0,l.readFile)(e,{encoding:`utf8`});return(0,c.deserializeAuthenticationRecord)(t)}catch(e){throw u.getToken.info((0,t.formatError)(n,e)),new r.CredentialUnavailableError(`Cannot load authentication record in Visual Studio Code. Ensure you have have Azure Resources Extension installed in VS Code, signed into Azure via VS Code, installed the @azure/identity-vscode package, and properly configured the extension.`)}}}})),jd=s((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.BrokerCredential=void 0;let t=mu(),n=Rs(),r=hd(),i=zs(),a=pd(),o=Ps(),s=Ls(),c=(0,n.credentialLogger)(`BrokerCredential`);e.BrokerCredential=class{constructor(e){this.brokerTenantId=(0,t.resolveTenantId)(c,e.tenantId),this.brokerAdditionallyAllowedTenantIds=(0,t.resolveAdditionallyAllowedTenantIds)(e?.additionallyAllowedTenants);let n={...e,tokenCredentialOptions:e,logger:c,brokerOptions:{enabled:!0,parentWindowHandle:new Uint8Array,useDefaultBrokerAccount:!0}};this.brokerMsalClient=(0,a.createMsalClient)(o.DeveloperSignOnClientId,this.brokerTenantId,n)}async getToken(e,a={}){return i.tracingClient.withSpan(`${this.constructor.name}.getToken`,a,async i=>{i.tenantId=(0,t.processMultiTenantRequest)(this.brokerTenantId,i,this.brokerAdditionallyAllowedTenantIds,c);let a=(0,r.ensureScopes)(e);try{return this.brokerMsalClient.getBrokeredToken(a,!0,{...i,disableAutomaticAuthentication:!0})}catch(e){throw c.getToken.info((0,n.formatError)(a,e)),new s.CredentialUnavailableError(`Failed to acquire token using broker authentication`,{cause:e})}})}}})),Md=s((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.createDefaultBrokerCredential=l,e.createDefaultVisualStudioCodeCredential=u,e.createDefaultManagedIdentityCredential=d,e.createDefaultWorkloadIdentityCredential=f,e.createDefaultAzureDeveloperCliCredential=p,e.createDefaultAzureCliCredential=m,e.createDefaultAzurePowershellCredential=h,e.createDefaultEnvironmentCredential=g;let t=vd(),n=wd(),r=Sd(),i=Td(),a=Dd(),o=kd(),s=Ad(),c=jd();function l(e={}){return new c.BrokerCredential(e)}function u(e={}){return new s.VisualStudioCodeCredential(e)}function d(e={}){e.retryOptions??={maxRetries:5,retryDelayInMs:800},e.sendProbeRequest??=!0;let t=e?.managedIdentityClientId??process.env.AZURE_CLIENT_ID,r=e?.workloadIdentityClientId??t,i=e?.managedIdentityResourceId,a=process.env.AZURE_FEDERATED_TOKEN_FILE,o=e?.tenantId??process.env.AZURE_TENANT_ID;if(i){let t={...e,resourceId:i};return new n.ManagedIdentityCredential(t)}if(a&&r){let t={...e,tenantId:o};return new n.ManagedIdentityCredential(r,t)}if(t){let r={...e,clientId:t};return new n.ManagedIdentityCredential(r)}return new n.ManagedIdentityCredential(e)}function f(e){let t=e?.managedIdentityClientId??process.env.AZURE_CLIENT_ID,n=e?.workloadIdentityClientId??t,i=process.env.AZURE_FEDERATED_TOKEN_FILE,a=e?.tenantId??process.env.AZURE_TENANT_ID;if(i&&n){let t={...e,tenantId:a,clientId:n,tokenFilePath:i};return new r.WorkloadIdentityCredential(t)}if(a){let t={...e,tenantId:a};return new r.WorkloadIdentityCredential(t)}return new r.WorkloadIdentityCredential(e)}function p(e={}){return new i.AzureDeveloperCliCredential(e)}function m(e={}){return new a.AzureCliCredential(e)}function h(e={}){return new o.AzurePowerShellCredential(e)}function g(e={}){return new t.EnvironmentCredential(e)}})),Nd=s((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.DefaultAzureCredential=e.UnavailableDefaultCredential=void 0;let t=Bs(),n=Rs(),r=Md(),i=(0,n.credentialLogger)(`DefaultAzureCredential`);var a=class{constructor(e,t){this.credentialName=e,this.credentialUnavailableErrorMessage=t}getToken(){return i.getToken.info(`Skipping ${this.credentialName}, reason: ${this.credentialUnavailableErrorMessage}`),Promise.resolve(null)}};e.UnavailableDefaultCredential=a,e.DefaultAzureCredential=class extends t.ChainedTokenCredential{constructor(e){o(e);let t=process.env.AZURE_TOKEN_CREDENTIALS?process.env.AZURE_TOKEN_CREDENTIALS.trim().toLowerCase():void 0,n=[r.createDefaultVisualStudioCodeCredential,r.createDefaultAzureCliCredential,r.createDefaultAzurePowershellCredential,r.createDefaultAzureDeveloperCliCredential,r.createDefaultBrokerCredential],s=[r.createDefaultEnvironmentCredential,r.createDefaultWorkloadIdentityCredential,r.createDefaultManagedIdentityCredential],c=[];if(t)switch(t){case`dev`:c=n;break;case`prod`:c=s;break;case`environmentcredential`:c=[r.createDefaultEnvironmentCredential];break;case`workloadidentitycredential`:c=[r.createDefaultWorkloadIdentityCredential];break;case`managedidentitycredential`:c=[()=>(0,r.createDefaultManagedIdentityCredential)({sendProbeRequest:!1})];break;case`visualstudiocodecredential`:c=[r.createDefaultVisualStudioCodeCredential];break;case`azureclicredential`:c=[r.createDefaultAzureCliCredential];break;case`azurepowershellcredential`:c=[r.createDefaultAzurePowershellCredential];break;case`azuredeveloperclicredential`:c=[r.createDefaultAzureDeveloperCliCredential];break;default:{let e=`Invalid value for AZURE_TOKEN_CREDENTIALS = ${process.env.AZURE_TOKEN_CREDENTIALS}. Valid values are 'prod' or 'dev' or any of these credentials - EnvironmentCredential, WorkloadIdentityCredential, ManagedIdentityCredential, VisualStudioCodeCredential, AzureCliCredential, AzurePowerShellCredential, AzureDeveloperCliCredential.`;throw i.warning(e),Error(e)}}else c=[...s,...n];let l=c.map(t=>{try{return t(e??{})}catch(e){return i.warning(`Skipped ${t.name} because of an error creating the credential: ${e}`),new a(t.name,e.message)}});super(...l)}};function o(e){if(e?.requiredEnvVars){let t=(Array.isArray(e.requiredEnvVars)?e.requiredEnvVars:[e.requiredEnvVars]).filter(e=>!process.env[e]);if(t.length>0){let e=`Required environment ${t.length===1?`variable`:`variables`} '${t.join(`, `)}' for DefaultAzureCredential ${t.length===1?`is`:`are`} not set or empty.`;throw i.warning(e),Error(e)}}}})),Pd=s((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.InteractiveBrowserCredential=void 0;let t=mu(),n=Rs(),r=hd(),i=zs(),a=pd(),o=Ps(),s=(0,n.credentialLogger)(`InteractiveBrowserCredential`);e.InteractiveBrowserCredential=class{constructor(e){this.tenantId=(0,t.resolveTenantId)(s,e.tenantId,e.clientId),this.additionallyAllowedTenantIds=(0,t.resolveAdditionallyAllowedTenantIds)(e?.additionallyAllowedTenants);let n={...e,tokenCredentialOptions:e,logger:s},r=e;if(this.browserCustomizationOptions=r.browserCustomizationOptions,this.loginHint=r.loginHint,r?.brokerOptions?.enabled)if(r?.brokerOptions?.parentWindowHandle)n.brokerOptions={enabled:!0,parentWindowHandle:r.brokerOptions.parentWindowHandle,legacyEnableMsaPassthrough:r.brokerOptions?.legacyEnableMsaPassthrough,useDefaultBrokerAccount:r.brokerOptions?.useDefaultBrokerAccount};else throw Error("In order to do WAM authentication, `parentWindowHandle` under `brokerOptions` is a required parameter");this.msalClient=(0,a.createMsalClient)(e.clientId??o.DeveloperSignOnClientId,this.tenantId,n),this.disableAutomaticAuthentication=e?.disableAutomaticAuthentication}async getToken(e,n={}){return i.tracingClient.withSpan(`${this.constructor.name}.getToken`,n,async n=>{n.tenantId=(0,t.processMultiTenantRequest)(this.tenantId,n,this.additionallyAllowedTenantIds,s);let i=(0,r.ensureScopes)(e);return this.msalClient.getTokenByInteractiveRequest(i,{...n,disableAutomaticAuthentication:this.disableAutomaticAuthentication,browserCustomizationOptions:this.browserCustomizationOptions,loginHint:this.loginHint})})}async authenticate(e,t={}){return i.tracingClient.withSpan(`${this.constructor.name}.authenticate`,t,async t=>{let n=(0,r.ensureScopes)(e);return await this.msalClient.getTokenByInteractiveRequest(n,{...t,disableAutomaticAuthentication:!1,browserCustomizationOptions:this.browserCustomizationOptions,loginHint:this.loginHint}),this.msalClient.getActiveAccount()})}}})),Fd=s((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.DeviceCodeCredential=void 0,e.defaultDeviceCodePromptCallback=c;let t=mu(),n=Rs(),r=hd(),i=zs(),a=pd(),o=Ps(),s=(0,n.credentialLogger)(`DeviceCodeCredential`);function c(e){console.log(e.message)}e.DeviceCodeCredential=class{constructor(e){this.tenantId=e?.tenantId,this.additionallyAllowedTenantIds=(0,t.resolveAdditionallyAllowedTenantIds)(e?.additionallyAllowedTenants);let n=e?.clientId??o.DeveloperSignOnClientId,r=(0,t.resolveTenantId)(s,e?.tenantId,n);this.userPromptCallback=e?.userPromptCallback??c,this.msalClient=(0,a.createMsalClient)(n,r,{...e,logger:s,tokenCredentialOptions:e||{}}),this.disableAutomaticAuthentication=e?.disableAutomaticAuthentication}async getToken(e,n={}){return i.tracingClient.withSpan(`${this.constructor.name}.getToken`,n,async n=>{n.tenantId=(0,t.processMultiTenantRequest)(this.tenantId,n,this.additionallyAllowedTenantIds,s);let i=(0,r.ensureScopes)(e);return this.msalClient.getTokenByDeviceCode(i,this.userPromptCallback,{...n,disableAutomaticAuthentication:this.disableAutomaticAuthentication})})}async authenticate(e,t={}){return i.tracingClient.withSpan(`${this.constructor.name}.authenticate`,t,async t=>{let n=Array.isArray(e)?e:[e];return await this.msalClient.getTokenByDeviceCode(n,this.userPromptCallback,{...t,disableAutomaticAuthentication:!1}),this.msalClient.getActiveAccount()})}}})),Id=s((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.AzurePipelinesCredential=void 0,e.handleOidcResponse=l;let t=Ls(),n=Ro(),r=xd(),i=du(),a=mu(),o=Rs(),s=`AzurePipelinesCredential`,c=(0,o.credentialLogger)(s);e.AzurePipelinesCredential=class{constructor(e,n,o,l,u={}){if(!n)throw new t.CredentialUnavailableError(`${s}: is unavailable. clientId is a required parameter.`);if(!e)throw new t.CredentialUnavailableError(`${s}: is unavailable. tenantId is a required parameter.`);if(!o)throw new t.CredentialUnavailableError(`${s}: is unavailable. serviceConnectionId is a required parameter.`);if(!l)throw new t.CredentialUnavailableError(`${s}: is unavailable. systemAccessToken is a required parameter.`);if(u.loggingOptions={...u?.loggingOptions,additionalAllowedHeaderNames:[...u.loggingOptions?.additionalAllowedHeaderNames??[],`x-vss-e2eid`,`x-msedge-ref`]},this.identityClient=new i.IdentityClient(u),(0,a.checkTenantId)(c,e),c.info(`Invoking AzurePipelinesCredential with tenant ID: ${e}, client ID: ${n}, and service connection ID: ${o}`),!process.env.SYSTEM_OIDCREQUESTURI)throw new t.CredentialUnavailableError(`${s}: is unavailable. Ensure that you're running this task in an Azure Pipeline, so that following missing system variable(s) can be defined- "SYSTEM_OIDCREQUESTURI"`);let d=`${process.env.SYSTEM_OIDCREQUESTURI}?api-version=7.1&serviceConnectionId=${o}`;c.info(`Invoking ClientAssertionCredential with tenant ID: ${e}, client ID: ${n} and service connection ID: ${o}`),this.clientAssertionCredential=new r.ClientAssertionCredential(e,n,this.requestOidcToken.bind(this,d,l),u)}async getToken(e,n){if(!this.clientAssertionCredential){let e=`${s}: is unavailable. To use Federation Identity in Azure Pipelines, the following parameters are required - + tenantId, + clientId, + serviceConnectionId, + systemAccessToken, + "SYSTEM_OIDCREQUESTURI". + See the troubleshooting guide for more information: https://aka.ms/azsdk/js/identity/azurepipelinescredential/troubleshoot`;throw c.error(e),new t.CredentialUnavailableError(e)}return c.info(`Invoking getToken() of Client Assertion Credential`),this.clientAssertionCredential.getToken(e,n)}async requestOidcToken(e,t){c.info(`Requesting OIDC token from Azure Pipelines...`),c.info(e);let r=(0,n.createPipelineRequest)({url:e,method:`POST`,headers:(0,n.createHttpHeaders)({"Content-Type":`application/json`,Authorization:`Bearer ${t}`,"X-TFS-FedAuthRedirect":`Suppress`})});return l(await this.identityClient.sendRequest(r))}};function l(e){let n=e.bodyAsText;if(!n)throw c.error(`${s}: Authentication Failed. Received null token from OIDC request. Response status- ${e.status}. Complete response - ${JSON.stringify(e)}`),new t.AuthenticationError(e.status,{error:`${s}: Authentication Failed. Received null token from OIDC request.`,error_description:`${JSON.stringify(e)}. See the troubleshooting guide for more information: https://aka.ms/azsdk/js/identity/azurepipelinescredential/troubleshoot`});try{let r=JSON.parse(n);if(r?.oidcToken)return r.oidcToken;{let r=`${s}: Authentication Failed. oidcToken field not detected in the response.`,i=``;throw e.status!==200&&(i=`Response body = ${n}. Response Headers ["x-vss-e2eid"] = ${e.headers.get(`x-vss-e2eid`)} and ["x-msedge-ref"] = ${e.headers.get(`x-msedge-ref`)}. See the troubleshooting guide for more information: https://aka.ms/azsdk/js/identity/azurepipelinescredential/troubleshoot`),c.error(r),c.error(i),new t.AuthenticationError(e.status,{error:r,error_description:i})}}catch(r){let i=`${s}: Authentication Failed. oidcToken field not detected in the response.`;throw c.error(`Response from service = ${n}, Response Headers ["x-vss-e2eid"] = ${e.headers.get(`x-vss-e2eid`)} + and ["x-msedge-ref"] = ${e.headers.get(`x-msedge-ref`)}, error message = ${r.message}`),c.error(i),new t.AuthenticationError(e.status,{error:i,error_description:`Response = ${n}. Response headers ["x-vss-e2eid"] = ${e.headers.get(`x-vss-e2eid`)} and ["x-msedge-ref"] = ${e.headers.get(`x-msedge-ref`)}. See the troubleshooting guide for more information: https://aka.ms/azsdk/js/identity/azurepipelinescredential/troubleshoot`})}}})),Ld=s((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.AuthorizationCodeCredential=void 0;let t=mu(),n=mu(),r=Rs(),i=hd(),a=zs(),o=pd(),s=(0,r.credentialLogger)(`AuthorizationCodeCredential`);e.AuthorizationCodeCredential=class{constructor(e,r,i,a,c,l){(0,n.checkTenantId)(s,e),this.clientSecret=i,typeof c==`string`?(this.authorizationCode=a,this.redirectUri=c):(this.authorizationCode=i,this.redirectUri=a,this.clientSecret=void 0,l=c),this.tenantId=e,this.additionallyAllowedTenantIds=(0,t.resolveAdditionallyAllowedTenantIds)(l?.additionallyAllowedTenants),this.msalClient=(0,o.createMsalClient)(r,e,{...l,logger:s,tokenCredentialOptions:l??{}})}async getToken(e,n={}){return a.tracingClient.withSpan(`${this.constructor.name}.getToken`,n,async n=>{n.tenantId=(0,t.processMultiTenantRequest)(this.tenantId,n,this.additionallyAllowedTenantIds);let r=(0,i.ensureScopes)(e);return this.msalClient.getTokenByAuthorizationCode(r,this.redirectUri,this.authorizationCode,this.clientSecret,{...n,disableAutomaticAuthentication:this.disableAutomaticAuthentication})})}}})),Rd=s((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.OnBehalfOfCredential=void 0;let t=pd(),n=Rs(),r=mu(),i=Ls(),a=require(`node:crypto`),o=hd(),s=require(`node:fs/promises`),c=zs(),l=`OnBehalfOfCredential`,u=(0,n.credentialLogger)(l);e.OnBehalfOfCredential=class{constructor(e){let{clientSecret:n}=e,{certificatePath:a,sendCertificateChain:o}=e,{getAssertion:s}=e,{tenantId:c,clientId:d,userAssertionToken:f,additionallyAllowedTenants:p}=e;if(!c)throw new i.CredentialUnavailableError(`${l}: tenantId is a required parameter. To troubleshoot, visit https://aka.ms/azsdk/js/identity/serviceprincipalauthentication/troubleshoot.`);if(!d)throw new i.CredentialUnavailableError(`${l}: clientId is a required parameter. To troubleshoot, visit https://aka.ms/azsdk/js/identity/serviceprincipalauthentication/troubleshoot.`);if(!n&&!a&&!s)throw new i.CredentialUnavailableError(`${l}: You must provide one of clientSecret, certificatePath, or a getAssertion callback but none were provided. To troubleshoot, visit https://aka.ms/azsdk/js/identity/serviceprincipalauthentication/troubleshoot.`);if(!f)throw new i.CredentialUnavailableError(`${l}: userAssertionToken is a required parameter. To troubleshoot, visit https://aka.ms/azsdk/js/identity/serviceprincipalauthentication/troubleshoot.`);this.certificatePath=a,this.clientSecret=n,this.userAssertionToken=f,this.sendCertificateChain=o,this.clientAssertion=s,this.tenantId=c,this.additionallyAllowedTenantIds=(0,r.resolveAdditionallyAllowedTenantIds)(p),this.msalClient=(0,t.createMsalClient)(d,this.tenantId,{...e,logger:u,tokenCredentialOptions:e})}async getToken(e,t={}){return c.tracingClient.withSpan(`${l}.getToken`,t,async n=>{n.tenantId=(0,r.processMultiTenantRequest)(this.tenantId,n,this.additionallyAllowedTenantIds,u);let i=(0,o.ensureScopes)(e);if(this.certificatePath){let e=await this.buildClientCertificate(this.certificatePath);return this.msalClient.getTokenOnBehalfOf(i,this.userAssertionToken,e,n)}else if(this.clientSecret)return this.msalClient.getTokenOnBehalfOf(i,this.userAssertionToken,this.clientSecret,t);else if(this.clientAssertion)return this.msalClient.getTokenOnBehalfOf(i,this.userAssertionToken,this.clientAssertion,t);else throw Error(`Expected either clientSecret or certificatePath or clientAssertion to be defined.`)})}async buildClientCertificate(e){try{let t=await this.parseCertificate({certificatePath:e},this.sendCertificateChain);return{thumbprint:t.thumbprint,thumbprintSha256:t.thumbprintSha256,privateKey:t.certificateContents,x5c:t.x5c}}catch(e){throw u.info((0,n.formatError)(``,e)),e}}async parseCertificate(e,t){let n=e.certificatePath,r=await(0,s.readFile)(n,`utf8`),i=t?r:void 0,o=/(-+BEGIN CERTIFICATE-+)(\n\r?|\r\n?)([A-Za-z0-9+/\n\r]+=*)(\n\r?|\r\n?)(-+END CERTIFICATE-+)/g,c=[],l;do l=o.exec(r),l&&c.push(l[3]);while(l);if(c.length===0)throw Error(`The file at the specified path does not contain a PEM-encoded certificate.`);let u=(0,a.createHash)(`sha1`).update(Buffer.from(c[0],`base64`)).digest(`hex`).toUpperCase();return{certificateContents:r,thumbprintSha256:(0,a.createHash)(`sha256`).update(Buffer.from(c[0],`base64`)).digest(`hex`).toUpperCase(),thumbprint:u,x5c:i}}}})),zd=s((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.getBearerTokenProvider=n;let t=Ro();function n(e,n,r){let{abortSignal:i,tracingOptions:a}=r||{},o=(0,t.createEmptyPipeline)();o.addPolicy((0,t.bearerTokenAuthenticationPolicy)({credential:e,scopes:n}));async function s(){let e=(await o.sendRequest({sendRequest:e=>Promise.resolve({request:e,status:200,headers:e.headers})},(0,t.createPipelineRequest)({url:`https://example.com`,abortSignal:i,tracingOptions:a}))).headers.get(`authorization`)?.split(` `)[1];if(!e)throw Error(`Failed to get access token`);return e}return s}})),Bd=s((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.getBearerTokenProvider=e.AzureAuthorityHosts=e.logger=e.WorkloadIdentityCredential=e.OnBehalfOfCredential=e.VisualStudioCodeCredential=e.UsernamePasswordCredential=e.AzurePowerShellCredential=e.AuthorizationCodeCredential=e.AzurePipelinesCredential=e.DeviceCodeCredential=e.ManagedIdentityCredential=e.InteractiveBrowserCredential=e.AzureDeveloperCliCredential=e.AzureCliCredential=e.ClientAssertionCredential=e.ClientCertificateCredential=e.EnvironmentCredential=e.DefaultAzureCredential=e.ClientSecretCredential=e.ChainedTokenCredential=e.deserializeAuthenticationRecord=e.serializeAuthenticationRecord=e.AuthenticationRequiredError=e.CredentialUnavailableErrorName=e.CredentialUnavailableError=e.AggregateAuthenticationErrorName=e.AuthenticationErrorName=e.AggregateAuthenticationError=e.AuthenticationError=void 0,e.getDefaultAzureCredential=T,(hi(),d(jr)).__exportStar(Is(),e);let t=Nd();var n=Ls();Object.defineProperty(e,`AuthenticationError`,{enumerable:!0,get:function(){return n.AuthenticationError}}),Object.defineProperty(e,`AggregateAuthenticationError`,{enumerable:!0,get:function(){return n.AggregateAuthenticationError}}),Object.defineProperty(e,`AuthenticationErrorName`,{enumerable:!0,get:function(){return n.AuthenticationErrorName}}),Object.defineProperty(e,`AggregateAuthenticationErrorName`,{enumerable:!0,get:function(){return n.AggregateAuthenticationErrorName}}),Object.defineProperty(e,`CredentialUnavailableError`,{enumerable:!0,get:function(){return n.CredentialUnavailableError}}),Object.defineProperty(e,`CredentialUnavailableErrorName`,{enumerable:!0,get:function(){return n.CredentialUnavailableErrorName}}),Object.defineProperty(e,`AuthenticationRequiredError`,{enumerable:!0,get:function(){return n.AuthenticationRequiredError}});var r=cu();Object.defineProperty(e,`serializeAuthenticationRecord`,{enumerable:!0,get:function(){return r.serializeAuthenticationRecord}}),Object.defineProperty(e,`deserializeAuthenticationRecord`,{enumerable:!0,get:function(){return r.deserializeAuthenticationRecord}});var i=Bs();Object.defineProperty(e,`ChainedTokenCredential`,{enumerable:!0,get:function(){return i.ChainedTokenCredential}});var a=gd();Object.defineProperty(e,`ClientSecretCredential`,{enumerable:!0,get:function(){return a.ClientSecretCredential}});var o=Nd();Object.defineProperty(e,`DefaultAzureCredential`,{enumerable:!0,get:function(){return o.DefaultAzureCredential}});var s=vd();Object.defineProperty(e,`EnvironmentCredential`,{enumerable:!0,get:function(){return s.EnvironmentCredential}});var c=md();Object.defineProperty(e,`ClientCertificateCredential`,{enumerable:!0,get:function(){return c.ClientCertificateCredential}});var l=xd();Object.defineProperty(e,`ClientAssertionCredential`,{enumerable:!0,get:function(){return l.ClientAssertionCredential}});var u=Dd();Object.defineProperty(e,`AzureCliCredential`,{enumerable:!0,get:function(){return u.AzureCliCredential}});var f=Td();Object.defineProperty(e,`AzureDeveloperCliCredential`,{enumerable:!0,get:function(){return f.AzureDeveloperCliCredential}});var p=Pd();Object.defineProperty(e,`InteractiveBrowserCredential`,{enumerable:!0,get:function(){return p.InteractiveBrowserCredential}});var m=wd();Object.defineProperty(e,`ManagedIdentityCredential`,{enumerable:!0,get:function(){return m.ManagedIdentityCredential}});var h=Fd();Object.defineProperty(e,`DeviceCodeCredential`,{enumerable:!0,get:function(){return h.DeviceCodeCredential}});var g=Id();Object.defineProperty(e,`AzurePipelinesCredential`,{enumerable:!0,get:function(){return g.AzurePipelinesCredential}});var _=Ld();Object.defineProperty(e,`AuthorizationCodeCredential`,{enumerable:!0,get:function(){return _.AuthorizationCodeCredential}});var v=kd();Object.defineProperty(e,`AzurePowerShellCredential`,{enumerable:!0,get:function(){return v.AzurePowerShellCredential}});var y=_d();Object.defineProperty(e,`UsernamePasswordCredential`,{enumerable:!0,get:function(){return y.UsernamePasswordCredential}});var b=Ad();Object.defineProperty(e,`VisualStudioCodeCredential`,{enumerable:!0,get:function(){return b.VisualStudioCodeCredential}});var x=Rd();Object.defineProperty(e,`OnBehalfOfCredential`,{enumerable:!0,get:function(){return x.OnBehalfOfCredential}});var S=Sd();Object.defineProperty(e,`WorkloadIdentityCredential`,{enumerable:!0,get:function(){return S.WorkloadIdentityCredential}});var C=Rs();Object.defineProperty(e,`logger`,{enumerable:!0,get:function(){return C.logger}});var w=Ps();Object.defineProperty(e,`AzureAuthorityHosts`,{enumerable:!0,get:function(){return w.AzureAuthorityHosts}});function T(){return new t.DefaultAzureCredential}var E=zd();Object.defineProperty(e,`getBearerTokenProvider`,{enumerable:!0,get:function(){return E.getBearerTokenProvider}})})),Vd=s((e=>{var t=Object.create,n=Object.defineProperty,r=Object.getOwnPropertyDescriptor,i=Object.getOwnPropertyNames,a=Object.getPrototypeOf,o=Object.prototype.hasOwnProperty,s=(e,t,a,s)=>{if(t&&typeof t==`object`||typeof t==`function`)for(var c=i(t),l=0,u=c.length,d;lt[e]).bind(null,d),enumerable:!(s=r(t,d))||s.enumerable});return e},c=(e,r,i)=>(i=e==null?{}:t(a(e)),s(r||!e||!e.__esModule?n(i,`default`,{value:e,enumerable:!0}):i,e));let l=$n();l=c(l);let u=require(`fs/promises`);u=c(u);let d=require(`path`);d=c(d);let f=require(`os`);f=c(f);let p=Ar(),m=Ms(),h=Ns(),g=Bd(),_=require(`node:util`);async function v(e){let t=await u.mkdtemp(d.join(f.tmpdir(),`bicep-`));return await p.Bicep.install(t,e)}async function y(e,t,n,r){let i=await w(await v(r),t=>t.compileParams({path:e,parameterOverrides:n??{}}),t);if(E(i.diagnostics,t),!i.success)throw`Failed to compile Bicep parameters file: ${e}`;return{parameters:i.parameters,template:i.template,templateSpecId:i.templateSpecId}}async function b(e,t,n){let r=await w(await v(n),t=>t.compile({path:e}),t);if(E(r.diagnostics,t),!r.success)throw`Failed to compile Bicep file: ${e}`;return{template:r.contents}}async function x(e){let{parametersFile:t,parameters:n}=e,r=t?JSON.parse(await u.readFile(t,`utf8`)):{parameters:{}};for(let[e,t]of Object.entries(n??{}))r.parameters[e]={value:t};return JSON.stringify(r)}async function S(e,t){let{parametersFile:n,templateFile:r}=e;if(n&&d.extname(n).toLowerCase()===`.bicepparam`)return C(await y(n,t,e.parameters,e.bicepVersion));if(n&&d.extname(n).toLowerCase()!==`.json`)throw Error(`Unsupported parameters file type: ${n}`);let i=await x(e);if(r&&d.extname(r).toLowerCase()===`.bicep`){let{template:n}=await b(r,t,e.bicepVersion);return C({template:n,parameters:i})}if(r&&d.extname(r).toLowerCase()!==`.json`)throw Error(`Unsupported template file type: ${r}`);if(!r)throw Error(`Template file is required`);return C({template:await u.readFile(r,`utf8`),parameters:i})}function C(e){let{parameters:t,template:n,templateSpecId:r}=e;return{parametersContents:t?JSON.parse(t):void 0,templateContents:n?JSON.parse(n):void 0,templateSpecId:r}}async function w(e,t,n){let r=await p.Bicep.initialize(e);try{let i=await r.version();return n.logInfo(`Installed Bicep version ${i} to ${e}`),await t(r)}finally{r.dispose()}}function T(e){return d.resolve(e)}function E(e,t){for(let n of e){let e=`${n.source}(${n.range.start.line+1},${n.range.start.char+1}) : ${n.level} ${n.code}: ${n.message}`;n.level===`Error`&&t.logError(e),n.level===`Warning`&&t.logWarning(e),n.level===`Info`&&t.logInfo(e)}}function D(e,t){return z(e,t,void 0,!0)}function O(e,t){return z(e,t,void 0,!1)}function k(e,t,n){return z(e,n,t,!0)}function A(e,t,n){return z(e,n,t,!1)}function j(e,t){let n=O(e,t);if(n)return T(n)}function M(e,t){let n=O(e,t);if(!n)return!1;if(n.toLowerCase()===`true`)return!0;if(n.toLowerCase()===`false`)return!1;throw Error(`Action input '${e}' must be a boolean value`)}function N(e,t){let n=O(e,t);return n?R(n):void 0}function ee(e,t,n){let r=N(e,n);if(!r)return;let i=t;for(let n of r)if(i.indexOf(n)===-1)throw Error(`Action input '${e}' must be one of the following values: '${t.join(`', '`)}'`);return r}function P(e,t){let n=O(e,t);if(!n)return;let r=I(n)??L(n);if(typeof r!=`object`)throw Error(`Action input '${e}' must be a valid JSON or YAML object`);return r}function F(e,t){let n=P(e,t);if(n)return Object.keys(n).forEach(t=>{if(typeof n[t]!=`string`)throw Error(`Action input '${e}' must be a valid JSON or YAML object containing only string values`)}),n}function I(e){try{return JSON.parse(e)}catch{return}}function L(e){try{return l.parse(e)}catch{return}}function R(e){return e.split(`,`).map(e=>e.trim()).filter(e=>e.length>0)}function z(e,t,n,r=!0){let i=t.getInput(e)?.trim();if(!i){if(r)throw Error(`Action input '${e}' is required but not provided`);return}if(n&&!n.includes(i))throw Error(`Action input '${e}' must be one of the following values: '${n.join(`', '`)}'`);return i}function B(e,t){let n=k(t.type,[`deployment`,`deploymentStack`],e),r=O(t.name,e),i=O(t.location,e),a=j(t.templateFile,e),o=j(t.paramtersFile,e),s=P(t.parameters,e),c=O(t.bicepVersion,e),l=O(t.description,e),u=F(t.tags,e),d=N(t.maskedOutputs,e),f=A(t.environment,[`azureCloud`,`azureChinaCloud`,`azureGermanCloud`,`azureUSGovernment`],e)??`azureCloud`;switch(n){case`deployment`:return{type:n,name:r,location:i,templateFile:a,parametersFile:o,parameters:s,bicepVersion:c,tags:u,maskedOutputs:d,environment:f,operation:k(t.operation,[`create`,`validate`,`whatIf`],e),scope:te(e,t),whatIf:{excludeChangeTypes:ee(t.whatIfExcludeChangeTypes,[`create`,`delete`,`modify`,`deploy`,`noChange`,`ignore`,`unsupported`],e)},validationLevel:A(t.validationLevel,[`provider`,`template`,`providerNoRbac`],e)};case`deploymentStack`:return{type:n,name:r,location:i,templateFile:a,parametersFile:o,parameters:s,bicepVersion:c,description:l,tags:u,maskedOutputs:d,environment:f,operation:k(t.operation,[`create`,`validate`,`delete`],e),scope:V(e,t),actionOnUnManage:{resources:k(t.actionOnUnmanageResources,[`delete`,`detach`],e),resourceGroups:A(t.actionOnUnmanageResourceGroups,[`delete`,`detach`],e),managementGroups:A(t.actionOnUnmanageManagementGroups,[`delete`,`detach`],e)},bypassStackOutOfSyncError:M(t.bypasStackOutOfSyncError,e),denySettings:{mode:k(t.denySettingsMode,[`denyDelete`,`denyWriteAndDelete`,`none`],e),excludedActions:N(t.denySettingsExcludedActions,e),excludedPrincipals:N(t.denySettingsExcludedPrincipals,e),applyToChildScopes:M(t.denySettingsApplyToChildScopes,e)}}}}function te(e,t){let n=k(t.scope,[`tenant`,`managementGroup`,`subscription`,`resourceGroup`],e),r=O(t.tenantId,e);switch(n){case`tenant`:return{type:n,tenantId:r};case`managementGroup`:return{type:n,tenantId:r,managementGroup:D(t.managementGroupId,e)};case`subscription`:return{type:n,tenantId:r,subscriptionId:D(t.subscriptionId,e)};case`resourceGroup`:return{type:n,tenantId:r,subscriptionId:D(t.subscriptionId,e),resourceGroup:D(t.resourceGroupName,e)}}}function V(e,t){let n=k(t.scope,[`managementGroup`,`subscription`,`resourceGroup`],e),r=O(t.tenantId,e);switch(n){case`managementGroup`:return{type:n,tenantId:r,managementGroup:D(t.managementGroupId,e)};case`subscription`:return{type:n,tenantId:r,subscriptionId:D(t.subscriptionId,e)};case`resourceGroup`:return{type:n,tenantId:r,subscriptionId:D(t.subscriptionId,e),resourceGroup:D(t.resourceGroupName,e)}}}let ne=`gh-azure-bicep-deploy`,re=`00000000-0000-0000-0000-000000000000`,H={azureCloud:`https://management.azure.com`,azureChinaCloud:`https://management.chinacloudapi.cn`,azureGermanCloud:`https://management.microsoftazure.de`,azureUSGovernment:`https://management.usgovcloudapi.net`};function ie(e,t,n,r){return new m.ResourceManagementClient(ae(r),n??re,{userAgentOptions:{userAgentPrefix:ne},additionalPolicies:[W(t)],apiVersion:`2024-03-01`,endpoint:H[e.environment]})}function U(e,t,n,r){return new h.DeploymentStacksClient(ae(r),n??re,{userAgentOptions:{userAgentPrefix:ne},additionalPolicies:[W(t)],endpoint:H[e.environment]})}function W(e){return{position:`perCall`,policy:{name:`debugLoggingPolicy`,async sendRequest(t,n){if(e.isDebugEnabled()&&(e.debug(`Request: ${t.method} ${t.url}`),t.body)){let n=JSON.parse(t.body.toString());e.debug(`Body: ${JSON.stringify(n,null,2)}`)}let r=await n(t);if(e.isDebugEnabled()){if(e.debug(`Response: ${r.status}`),r.bodyAsText){let t=JSON.parse(r.bodyAsText);e.debug(`Body: ${JSON.stringify(t,null,2)}`)}let t=r.headers.get(`x-ms-correlation-request-id`);e.debug(`CorrelationId: ${t}`);let n=r.headers.get(`x-ms-request-id`);e.debug(`ActivityId: ${n}`)}return r}}}}function ae(e){return new g.ChainedTokenCredential(new g.EnvironmentCredential,new g.AzureCliCredential({tenantId:e}),new g.AzurePowerShellCredential({tenantId:e}))}function G(e){return typeof e==`object`&&!!e&&!Array.isArray(e)&&!(e instanceof RegExp)&&!(e instanceof Date)}function oe(e){if(G(e)){let t=typeof e.name==`string`,n=typeof e.message==`string`;return t&&n}return!1}let se=_.inspect.custom,ce=`REDACTED`,le=`x-ms-client-request-id.x-ms-return-client-request-id.x-ms-useragent.x-ms-correlation-request-id.x-ms-request-id.client-request-id.ms-cv.return-client-request-id.traceparent.Access-Control-Allow-Credentials.Access-Control-Allow-Headers.Access-Control-Allow-Methods.Access-Control-Allow-Origin.Access-Control-Expose-Headers.Access-Control-Max-Age.Access-Control-Request-Headers.Access-Control-Request-Method.Origin.Accept.Accept-Encoding.Cache-Control.Connection.Content-Length.Content-Type.Date.ETag.Expires.If-Match.If-Modified-Since.If-None-Match.If-Unmodified-Since.Last-Modified.Pragma.Request-Id.Retry-After.Server.Transfer-Encoding.User-Agent.WWW-Authenticate`.split(`.`),ue=[`api-version`],de=new class{constructor({additionalAllowedHeaderNames:e=[],additionalAllowedQueryParameters:t=[]}={}){e=le.concat(e),t=ue.concat(t),this.allowedHeaderNames=new Set(e.map(e=>e.toLowerCase())),this.allowedQueryParameters=new Set(t.map(e=>e.toLowerCase()))}sanitize(e){let t=new Set;return JSON.stringify(e,(e,n)=>{if(n instanceof Error)return{...n,name:n.name,message:n.message};if(e===`headers`)return this.sanitizeHeaders(n);if(e===`url`)return this.sanitizeUrl(n);if(e===`query`)return this.sanitizeQuery(n);if(e!==`body`&&e!==`response`&&e!==`operationSpec`){if(Array.isArray(n)||G(n)){if(t.has(n))return`[Circular]`;t.add(n)}return n}},2)}sanitizeUrl(e){if(typeof e!=`string`||e===null||e===``)return e;let t=new URL(e);if(!t.search)return e;for(let[e]of t.searchParams)this.allowedQueryParameters.has(e.toLowerCase())||t.searchParams.set(e,ce);return t.toString()}sanitizeHeaders(e){let t={};for(let n of Object.keys(e))this.allowedHeaderNames.has(n.toLowerCase())?t[n]=e[n]:t[n]=ce;return t}sanitizeQuery(e){if(typeof e!=`object`||!e)return e;let t={};for(let n of Object.keys(e))this.allowedQueryParameters.has(n.toLowerCase())?t[n]=e[n]:t[n]=ce;return t}};var fe=class e extends Error{constructor(t,n={}){super(t),this.name=`RestError`,this.code=n.code,this.statusCode=n.statusCode,Object.defineProperty(this,`request`,{value:n.request,enumerable:!1}),Object.defineProperty(this,`response`,{value:n.response,enumerable:!1});let r=this.request?.agent?{maxFreeSockets:this.request.agent.maxFreeSockets,maxSockets:this.request.agent.maxSockets}:void 0;Object.defineProperty(this,se,{value:()=>`RestError: ${this.message} \n ${de.sanitize({...this,request:{...this.request,agent:r},response:this.response})}`,enumerable:!1}),Object.setPrototypeOf(this,e.prototype)}};fe.REQUEST_SEND_ERROR=`REQUEST_SEND_ERROR`,fe.PARSE_ERROR=`PARSE_ERROR`;function pe(e){return e instanceof fe?!0:oe(e)&&e.name===`RestError`}function me(e){return pe(e)}let he=`azure-bicep-deploy`;function ge(e,t,n){let{tenantId:r}=t;return ie(e,n,`subscriptionId`in t?t.subscriptionId:void 0,r)}function _e(e,t,n){let{tenantId:r}=t;return U(e,n,`subscriptionId`in t?t.subscriptionId:void 0,r)}function ve(){return{onResponse:(e,t)=>{if(t&&t.error&&t.error.code&&t.error.message)throw new ye(t,e)}}}var ye=class{constructor(e,t){this.details=e,this.response=t}};function be(e){if(!e.location)throw Error(`Location is required`);return e.location}function xe(e,t){if(e.length!==0){t.logInfo(`Diagnostics returned by the API`);for(let n of e){let e=`[${n.level}] ${n.code}: ${n.message}`;switch(n.level.toLowerCase()){case`error`:t.logError(e);break;case`warning`:t.logWarning(e);break;default:t.logInfo(e);break}}}}function Se(e,t){let n=Ce(t);if(n&&n!==e.scope.type)throw Error(`The target scope ${n} does not match the deployment scope ${e.scope.type}.`)}function Ce(e){let t=e.templateContents??{},n=t.metadata?._generator?.name,r=t.$schema;if(!n)return;let i=/https:\/\/schema\.management\.azure\.com\/schemas\/[0-9a-zA-Z-]+\/([a-zA-Z]+)Template\.json#?/.exec(r);switch(i?i[1].toLowerCase():null){case`tenantdeployment`:return`tenant`;case`managementgroupdeployment`:return`managementGroup`;case`subscriptiondeployment`:return`subscription`;case`deployment`:return`resourceGroup`;default:throw Error(`Failed to determine deployment scope from Bicep file.`)}}async function we(e,t,n){try{return await e()}catch(e){if(me(e)){let r=e.response?.headers.get(`x-ms-correlation-request-id`);n.logError(`Request failed. CorrelationId: ${r}`);let{error:i}=e.details;if(i){t(i);return}}if(e instanceof ye){let r=e.response?.headers.get(`x-ms-correlation-request-id`);n.logError(`Request failed. CorrelationId: ${r}`);let{error:i}=e.details;if(i){t(i);return}}throw e}}async function Te(e,t,n){let r=e.name??he,i=e.scope,a=ge(e,i,n),o=Oe(e,t);switch(i.type){case`resourceGroup`:return await a.deployments.beginCreateOrUpdateAndWait(i.resourceGroup,r,o,ve());case`subscription`:return await a.deployments.beginCreateOrUpdateAtSubscriptionScopeAndWait(r,{...o,location:be(e)},ve());case`managementGroup`:return await a.deployments.beginCreateOrUpdateAtManagementGroupScopeAndWait(i.managementGroup,r,{...o,location:be(e)},ve());case`tenant`:return await a.deployments.beginCreateOrUpdateAtTenantScopeAndWait(r,{...o,location:be(e)},ve())}}async function Ee(e,t,n){let r=e.name??he,i=e.scope,a=ge(e,i,n),o=Oe(e,t);switch(i.type){case`resourceGroup`:return await a.deployments.beginValidateAndWait(i.resourceGroup,r,o);case`subscription`:return await a.deployments.beginValidateAtSubscriptionScopeAndWait(r,{...o,location:be(e)});case`managementGroup`:return await a.deployments.beginValidateAtManagementGroupScopeAndWait(i.managementGroup,r,{...o,location:be(e)});case`tenant`:await a.deployments.beginValidateAtTenantScopeAndWait(r,{...o,location:be(e)})}}async function De(e,t,n){let r=e.name??he,i=e.scope,a=ge(e,i,n),o=Oe(e,t);switch(i.type){case`resourceGroup`:return await a.deployments.beginWhatIfAndWait(i.resourceGroup,r,o);case`subscription`:return await a.deployments.beginWhatIfAtSubscriptionScopeAndWait(r,{...o,location:be(e)});case`managementGroup`:return await a.deployments.beginWhatIfAtManagementGroupScopeAndWait(i.managementGroup,r,{...o,location:be(e)});case`tenant`:return await a.deployments.beginWhatIfAtTenantScopeAndWait(r,{...o,location:be(e)})}}function Oe(e,t){let{templateContents:n,templateSpecId:r,parametersContents:i}=t;return{location:e.location,properties:{mode:`Incremental`,template:n,templateLink:r?{id:r}:void 0,parameters:i.parameters,expressionEvaluationOptions:{scope:`inner`},validationLevel:e.validationLevel},tags:e.tags}}async function ke(e,t,n){let r=e.name??he,i=e.scope,a=_e(e,i,n),o=Me(e,t);switch(i.type){case`resourceGroup`:return await a.deploymentStacks.beginCreateOrUpdateAtResourceGroupAndWait(i.resourceGroup,r,o,ve());case`subscription`:return await a.deploymentStacks.beginCreateOrUpdateAtSubscriptionAndWait(r,{...o,location:be(e)},ve());case`managementGroup`:return await a.deploymentStacks.beginCreateOrUpdateAtManagementGroupAndWait(i.managementGroup,r,{...o,location:be(e)},ve())}}async function Ae(e,t,n){let r=e.name??he,i=e.scope,a=_e(e,i,n),o=Me(e,t);switch(i.type){case`resourceGroup`:return await a.deploymentStacks.beginValidateStackAtResourceGroupAndWait(i.resourceGroup,r,o);case`subscription`:return await a.deploymentStacks.beginValidateStackAtSubscriptionAndWait(r,{...o,location:be(e)});case`managementGroup`:return await a.deploymentStacks.beginValidateStackAtManagementGroupAndWait(i.managementGroup,r,{...o,location:be(e)})}}async function je(e,t){let n=e.name??he,r=e.scope,i=_e(e,r,t),a=Ne(e);switch(r.type){case`resourceGroup`:return await i.deploymentStacks.beginDeleteAtResourceGroupAndWait(r.resourceGroup,n,a);case`subscription`:return await i.deploymentStacks.beginDeleteAtSubscriptionAndWait(n,a);case`managementGroup`:return await i.deploymentStacks.beginDeleteAtManagementGroupAndWait(r.managementGroup,n,a)}}function Me(e,t){let{templateContents:n,templateSpecId:r,parametersContents:i}=t;return{properties:{template:n,templateLink:r?{id:r}:void 0,parameters:i.parameters,description:e.description,actionOnUnmanage:e.actionOnUnManage,denySettings:e.denySettings,bypassStackOutOfSyncError:e.bypassStackOutOfSyncError},tags:e.tags}}function Ne(e){return{unmanageActionResources:e.actionOnUnManage.resources,unmanageActionResourceGroups:e.actionOnUnManage.resourceGroups,unmanageActionManagementGroups:e.actionOnUnManage.managementGroups,bypassStackOutOfSyncError:e.bypassStackOutOfSyncError}}let Pe=function(e){return e.Reset=`\x1B[0m`,e.Red=`\x1B[31m`,e.Green=`\x1B[32m`,e.Yellow=`\x1B[33m`,e.Blue=`\x1B[34m`,e.Magenta=`\x1B[35m`,e.Cyan=`\x1B[36m`,e.White=`\x1B[37m`,e}({}),Fe={"\x1B[0m":`Reset`,"\x1B[31m":`Red`,"\x1B[32m":`Green`,"\x1B[33m":`Yellow`,"\x1B[34m":`Blue`,"\x1B[35m":`Magenta`,"\x1B[36m":`Cyan`,"\x1B[37m":`White`};function K(e,t){return e.split(` +`).map(e=>`${t}${e}${Pe.Reset}`).join(` +`)}function Ie(e){for(let t in Fe)e=e.replaceAll(t,``);return e}function Le(e,t){switch(e){case`off`:return``;case`ansii`:return t;case`debug`:return`<${Fe[t].toUpperCase()}>`}return t}var Re=class{constructor(e){this.colorMode=e,this.colorStack=[],this.buffer=``}append(e,t){return t&&this.pushColor(t),this.buffer+=e,t&&this.popColor(),this}appendLine(e=``){return this.append(e+` +`)}withColorScope(e,t){this.pushColor(e),t(),this.popColor()}pushColor(e){this.colorStack.push(e),this.buffer+=Le(this.colorMode,e)}popColor(){this.colorStack.pop();let e=this.colorStack[this.colorStack.length-1]??Pe.Reset;this.buffer+=Le(this.colorMode,e)}build(){return this.buffer}},q=function(e){return e.WhiteSpace=` `,e.Quote=`"`,e.Colon=`:`,e.LeftSquareBracket=`[`,e.RightSquareBracket=`]`,e.Dot=`.`,e.Equal=`=`,e.Asterisk=`*`,e.Plus=`+`,e.Minus=`-`,e.Tilde=`~`,e.ExclamationPoint=`!`,e.Cross=`x`,e}(q||{});let ze={Create:Pe.Green,Delete:Pe.Red,Modify:Pe.Magenta,Deploy:Pe.Blue,NoChange:Pe.Reset,Ignore:Pe.White,Unsupported:Pe.White},Be={Create:Pe.Green,Delete:Pe.Red,Modify:Pe.Magenta,Array:Pe.Magenta,NoEffect:Pe.White},J={Create:q.Plus,Delete:q.Minus,Modify:q.Tilde,Deploy:q.ExclamationPoint,NoChange:q.Equal,Ignore:q.Asterisk,Unsupported:q.Cross},Ve={Create:q.Plus,Delete:q.Minus,Modify:q.Tilde,Array:q.Tilde,NoEffect:q.Cross},Y={Delete:0,Create:1,Deploy:2,Modify:3,NoChange:4,Unsupported:5,Ignore:6},He={Delete:0,Create:1,Modify:2,Array:2,NoEffect:3},Ue={Array:`Modify`,Create:`Create`,Delete:`Delete`,Modify:`Modify`,NoEffect:`NoChange`};function X(e,t){let n=new Re(t);return gt(n,e),n.build()}function We(e,t){let n=new Re(t);return Ge(n),Ke(n,e.changes??[]),Ye(n,e.changes??[]),qe(n,e.changes??[]),n.build()}function Ge(e){e.appendLine(`Note: The result may contain false positive predictions (noise). +You can help us improve the accuracy of the result by opening an issue here: https://aka.ms/WhatIfIssues`),e.appendLine()}function Ke(e,t){if(!t.length)return;let n=new Set;function r(e){if(e.length)for(let t of e){let e=t.propertyChangeType;n.add(Ue[e]),r(t.children??[])}}for(let e of t)n.add(e.changeType),r(e.delta??[]);let i=Array.from(n).sort((e,t)=>Y[e]-Y[t]);e.append(`Resource and property changes are indicated with `),e.appendLine(i.length===1?`this symbol:`:`these symbols:`);for(let t of i){let n=J[t],r=ze[t];Ct(e),e.append(n,r).append(q.WhiteSpace),e.appendLine(t.charAt(0).toUpperCase()+t.slice(1))}}function qe(e,t){if(e.appendLine().append(`Resource changes: `),!t.length){e.append(`no change.`);return}let n=jt(At(t.sort((e,t)=>Y[e.changeType]-Y[t.changeType]),e=>e.changeType)).map(([e,t])=>({key:e,count:t.length})).filter(e=>e.count>0).map(e=>Je(e.key,e.count));e.append(n.join(`, `)).append(`.`)}function Je(e,t){switch(e){case`Create`:return`${t} to create`;case`Delete`:return`${t} to delete`;case`Deploy`:return`${t} to deploy`;case`Modify`:return`${t} to modify`;case`Ignore`:return`${t} to ignore`;case`NoChange`:return`${t} no change`;case`Unsupported`:return`${t} unsupported`;default:throw Error(`Invalid ChangeType: ${e}`)}}function Ye(e,t){if(!t.length)return;let n=new Set(t.map(ft)).size,r=At(t.sort((e,t)=>ft(e).localeCompare(ft(t))),ft);e.appendLine(),e.appendLine(`The deployment will update the following ${n===1?`scope:`:`scopes:`}`);for(let[,t]of jt(r))Xe(e,dt(t[0]),t)}function Xe(e,t,n){e.appendLine().appendLine(`Scope: ${t}`);let r=n.sort((e,t)=>Y[e.changeType]-Y[t.changeType]),i=At(r,e=>e.changeType);for(let[t,n]of jt(i))e.withColorScope(ze[t],()=>{for(let t of n)Ze(e,t,t===r[r.length-1])})}function Ze(e,t,n){let r=t.changeType,i=pt(t),a=ut(t);if(e.appendLine(),Qe(e,r,i,a),r===`Create`&&t.after)gt(e,t.after,void 0,void 0,2);else if(r===`Delete`&&t.before)gt(e,t.before,void 0,void 0,2);else if(t.delta){let n=t.delta;e.withColorScope(Pe.Reset,()=>{e.appendLine(),tt(e,kt(n))})}else n&&e.appendLine()}function Qe(e,t,n,r){xt(e,n,0,1,e=>$e(e,t),e=>et(e,r))}function $e(e,t){let n=J[t];e.append(n).append(q.WhiteSpace)}function et(e,t){t&&e.withColorScope(Pe.Reset,()=>{e.append(q.WhiteSpace),e.append(q.LeftSquareBracket),e.append(t),e.append(q.RightSquareBracket)})}function tt(e,t,n=2){let r=mt(t);for(let i of t)nt(e,i,r,n),e.appendLine()}function nt(e,t,n,r){let i=t.propertyChangeType,a=t.before,o=t.after,s=t.children||[];switch(i){case`Create`:rt(e,t,t.after,n,r),at(e,o,r+1);break;case`Delete`:rt(e,t,t.before,n,r),ot(e,a,r+1);break;case`Modify`:rt(e,t,t.before,n,r),ct(e,a,o,s,r+1);break;case`Array`:rt(e,t,t.children,n,r),lt(e,t,s,r+1);break;case`NoEffect`:rt(e,t,t.after,n,r),it(e,o,r+1);break;default:throw Error(`Unknown property change type: ${i}.`)}}function rt(e,t,n,r,i){if(!t.path)return;let a=t.path,o=t.propertyChangeType,s=r-a.length+1;Dt(n)?s=1:(Ot(n)||o===`Modify`&&t.children)&&(s=0),xt(e,a,s,i,e=>Z(e,o),St)}function Z(e,t){let n=Ve[t],r=Be[t];e.append(n,r).append(q.WhiteSpace)}function it(e,t,n){e.withColorScope(Be.NoEffect,()=>{gt(e,t,void 0,void 0,n)})}function at(e,t,n){e.withColorScope(Be.Create,()=>{gt(e,t,void 0,void 0,n)})}function ot(e,t,n){e.withColorScope(Be.Delete,()=>{gt(e,t,void 0,void 0,n)})}function st(e){if(typeof e!=`object`||!e||Object.keys(e).length===0)return e;let t=``,n=e,r=Object.keys(n);for(let i=0;i0?(e.appendLine().appendLine(),tt(e,kt(r),i)):(ot(e,t,i),Ot(t)?(e.appendLine(),Ct(e,i)):e.append(q.WhiteSpace),e.append(`=>`),Ot(n)||e.append(q.WhiteSpace),at(e,n,i),!Et(t)&&Et(n)&&e.appendLine())}function lt(e,t,n,r){if(t.path||(--r,Ct(e,r)),!n||n.length===0){e.appendLine(`[]`);return}e.append(q.LeftSquareBracket).appendLine(),tt(e,kt(n),r),Ct(e,r),e.append(q.RightSquareBracket)}function ut(e){if(e.before)return e.before.apiVersion;if(e.after)return e.after.apiVersion}function dt(e){if(!e.resourceId)throw Error(`Extensible resource what-if is not currently supported by this Action. Please raise an issue: https://github.com/Azure/bicep-deploy/issues.`);let[t]=Mt(e.resourceId);return t}function ft(e){return dt(e).toUpperCase()}function pt(e){if(!e.resourceId)throw Error(`Extensible resource what-if is not currently supported by this Action. Please raise an issue: https://github.com/Azure/bicep-deploy/issues.`);let[,t]=Mt(e.resourceId);return t}function mt(e){if(!e||e.length===0)return 0;let t=e.filter(ht).map(e=>e.path.length);return Math.max(...t,0)}function ht(e){let t=e.propertyChangeType;return t===`Create`?Et(e.after):t===`Delete`||t===`Modify`?Et(e.before):!e.children}function gt(e,t,n=``,r=0,i=0){if(t=st(t),Et(t)){let a=r-n.length+1;bt(e,n,a>0?a:0,i),_t(e,t)}else if(Dt(t))bt(e,n,1,i),vt(e,t,i);else if(Ot(t))yt(e,t,n,r,i);else throw Error(`Invalid JSON value: ${t}`)}function _t(e,t){t===null?e.append(`null`):typeof t==`boolean`?e.append(String(t).toLowerCase()):typeof t==`string`?e.append(q.Quote).append(t).append(q.Quote):Array.isArray(t)&&t.length===0?e.append(`[]`):typeof t==`object`?e.append(`{}`):e.append(String(t))}function vt(e,t,n){e.append(q.LeftSquareBracket,Pe.Reset).appendLine();let r=wt(t);t.forEach((t,i)=>{let a=String(i);Ot(t)?(bt(e,a,0,n+1),yt(e,t,void 0,void 0,n+1)):gt(e,t,a,r,n+1),e.appendLine()}),Ct(e,n),e.append(q.RightSquareBracket,Pe.Reset)}function yt(e,t,n=``,r=0,i=0){let a=!n;n||(e.appendLine().appendLine(),r=Tt(t),i+=1);for(let[o,s]of jt(t))gt(e,s,a?o:`${n}${q.Dot}${o}`,r,i),Ot(s)||e.appendLine()}function bt(e,t,n,r){xt(e,t,n,r,void 0,St)}function xt(e,t,n,r,i,a){t&&(Ct(e,r),i&&i(e),e.append(t),a&&a(e),e.append(` `.repeat(n)))}function St(e){e.append(q.Colon,Pe.Reset)}function Ct(e,t=1){e.append(` `.repeat(2*t))}function wt(e){let t=0;return e.forEach((e,n)=>{Et(e)&&(t=n)}),String(t).length}function Tt(e){let t=0;for(let[n,r]of jt(e)){if(Dt(r))continue;let e=Ot(r)?n.length+1+Tt(r):n.length;t=Math.max(t,e)}return t}function Et(e){return e==null||typeof e==`boolean`||typeof e==`number`||typeof e==`string`||Array.isArray(e)&&e.length===0||typeof e==`object`&&e&&Object.keys(e).length===0}function Dt(e){return Array.isArray(e)&&e.length>0}function Ot(e){return typeof e==`object`&&!!e&&Object.keys(e).length>0}function kt(e){return e.slice().sort((e,t)=>He[e.propertyChangeType]-He[t.propertyChangeType]||e.path.localeCompare(t.path))}function At(e,t){return e.reduce((e,n)=>{let r=t(n);return(e[r]=e[r]||[]).push(n),e},{})}function jt(e){return Object.entries(e)}function Mt(e){let t=e.lastIndexOf(`/providers/`);if(t===-1){let t=[...e.matchAll(/^(\/subscriptions\/[^/]+)\/(resourceGroups\/[^/]+)$/gi)];return t[0]?[t[0][1],t[0][2]]:[`/`,e.substring(1)]}return[e.substring(0,t),e.substring(t+11)]}function Nt(e,t,n){if(n)for(let r of Object.keys(n)){let i=n[r];t.setOutput(r,i.value),e.maskedOutputs&&e.maskedOutputs.some(e=>e.toLowerCase()===r.toLowerCase())&&t.setSecret(i.value)}}async function Pt(e,t,n,r){try{switch(Se(e,t),e.type){case`deployment`:switch(e.operation){case`create`:await we(async()=>{Nt(e,r,(await Te(e,t,n))?.properties?.outputs)},e=>{n.logError(JSON.stringify(e,null,2)),r.setFailed(`Create failed`)},n);break;case`validate`:await we(async()=>{xe((await Ee(e,t,n))?.properties?.diagnostics??[],n)},e=>{n.logError(JSON.stringify(e,null,2)),r.setFailed(`Validation failed`)},n);break;case`whatIf`:{let r=await De(e,t,n),i=We(r,`ansii`);n.logInfoRaw(i),xe(r.diagnostics??[],n);break}}break;case`deploymentStack`:switch(e.operation){case`create`:await we(async()=>{Nt(e,r,(await ke(e,t,n))?.properties?.outputs)},e=>{n.logError(JSON.stringify(e,null,2)),r.setFailed(`Create failed`)},n);break;case`validate`:await we(()=>Ae(e,t,n),e=>{n.logError(JSON.stringify(e,null,2)),r.setFailed(`Validation failed`)},n);break;case`delete`:await je(e,n);break}break}}catch(e){if(me(e)&&e.response?.bodyAsText){let t=e.response.headers.get(`x-ms-correlation-request-id`);n.logError(`Request failed. CorrelationId: ${t}`);let r=JSON.parse(e.response.bodyAsText);n.logError(JSON.stringify(r,null,2))}throw r.setFailed(`Operation failed`),e}}e.Color=Pe,e.ColorStringBuilder=Re,e.CustomPollingError=ye,e.colorize=K,e.defaultName=he,e.deploymentCreate=Te,e.deploymentValidate=Ee,e.deploymentWhatIf=De,e.execute=Pt,e.formatJson=X,e.formatWhatIfOperationResult=We,e.getColorString=Le,e.getCreateOperationOptions=ve,e.getDeploymentClient=ge,e.getJsonParameters=x,e.getOptionalBooleanInput=M,e.getOptionalDictionaryInput=P,e.getOptionalEnumArrayInput=ee,e.getOptionalEnumInput=A,e.getOptionalFilePath=j,e.getOptionalStringArrayInput=N,e.getOptionalStringDictionaryInput=F,e.getOptionalStringInput=O,e.getRequiredEnumInput=k,e.getRequiredStringInput=D,e.getStacksClient=_e,e.getTemplateAndParameters=S,e.logDiagnostics=xe,e.parse=C,e.parseConfig=B,e.removeColors=Ie,e.requireLocation=be,e.resolvePath=T,e.setOutputs=Nt,e.stackCreate=ke,e.stackDelete=je,e.stackValidate=Ae,e.tryWithErrorHandling=we,e.validateFileScope=Se})),Hd=Vd(),Ud=u(It()),Wd=class{constructor(){this.getInput=e=>Ud.getInput(e)}},Gd=class{constructor(){this.setOutput=(e,t)=>Ud.setOutput(e,t),this.setFailed=e=>Ud.setFailed(e),this.setSecret=e=>Ud.setSecret(e)}},Kd=class{constructor(){this.type=`type`,this.name=`name`,this.location=`location`,this.templateFile=`template-file`,this.paramtersFile=`parameters-file`,this.parameters=`parameters`,this.bicepVersion=`bicep-version`,this.description=`description`,this.tags=`tags`,this.maskedOutputs=`masked-outputs`,this.environment=`environment`,this.operation=`operation`,this.whatIfExcludeChangeTypes=`what-if-exclude-change-types`,this.validationLevel=`validation-level`,this.actionOnUnmanageResources=`action-on-unmanage-resources`,this.actionOnUnmanageResourceGroups=`action-on-unmanage-resourcegroups`,this.actionOnUnmanageManagementGroups=`action-on-unmanage-managementgroups`,this.bypasStackOutOfSyncError=`bypass-stack-out-of-sync-error`,this.denySettingsMode=`deny-settings-mode`,this.denySettingsExcludedActions=`deny-settings-excluded-actions`,this.denySettingsExcludedPrincipals=`deny-settings-excluded-principals`,this.denySettingsApplyToChildScopes=`deny-settings-apply-to-child-scopes`,this.scope=`scope`,this.tenantId=`tenant-id`,this.managementGroupId=`management-group-id`,this.subscriptionId=`subscription-id`,this.resourceGroupName=`resource-group-name`}},qd=u(It());const Jd=e=>qd.warning(e),Yd=e=>qd.error(e);var Xd=class{constructor(){this.isDebugEnabled=()=>qd.isDebug(),this.debug=e=>qd.debug(e),this.logInfoRaw=e=>qd.info(e),this.logInfo=e=>this.logInfoRaw((0,Hd.colorize)(e,Hd.Color.Blue)),this.logWarning=e=>Jd((0,Hd.colorize)(e,Hd.Color.Yellow)),this.logError=e=>Yd((0,Hd.colorize)(e,Hd.Color.Red))}},Zd=u(It()),Qd=Vd();async function $d(){try{let e=(0,Qd.parseConfig)(new Wd,new Kd),t=new Xd,n=new Gd;t.logInfo(`Action config: ${JSON.stringify(e,null,2)}`),await(0,Qd.execute)(e,await(0,Qd.getTemplateAndParameters)(e,t),t,n)}catch(e){let t=e instanceof Error?e.message:`${e}`;Zd.setFailed(t)}}$d(); +//# sourceMappingURL=index.cjs.map \ No newline at end of file diff --git a/dist/index.cjs.map b/dist/index.cjs.map new file mode 100644 index 0000000..d48e7db --- /dev/null +++ b/dist/index.cjs.map @@ -0,0 +1 @@ +{"version":3,"file":"index.cjs","names":["__createBinding","k","m","o","__setModuleDefault","v","__importStar","os","utils_1","name","s","__createBinding","k","m","o","__setModuleDefault","v","__importStar","crypto","fs","os","utils_1","getProxyUrl","_a","x","tls","http","https","events","util","self","options","i","req","onError","error","socket","keys","j","k","debug","UndiciError","ConnectTimeoutError","HeadersTimeoutError","HeadersOverflowError","BodyTimeoutError","ResponseStatusCodeError","InvalidArgumentError","InvalidReturnValueError","RequestAbortedError","InformationalError","RequestContentLengthMismatchError","ResponseContentLengthMismatchError","ClientDestroyedError","ClientClosedError","SocketError","NotSupportedError","BalancedPoolMissingUpstreamError","HTTPParserError","ResponseExceededMaxSizeError","RequestRetryError","headerNameLowerCasedRecord","i","assert","stream","net","nodeMajor","nodeMinor","v","nop","isBlobLike","Blob","buildURL","stringify","parseURL","InvalidArgumentError","path","parseOrigin","idx","kDestroyed","destroy","err","m","parseHeaders","i","x","n","buffer","upgrade","isDisturbed","kBodyUsed","isErrored","isReadable","ReadableStream","ReadableStreamFrom","throwIfAborted","addAbortListener","toUSVString","parseRangeHeader","kEnumerableProperty","delay","EventEmitter","inherits","i","r","inherits","ReadableStream","PartStream","getLimit","name","EventEmitter","inherits","getLimit","StreamSearch","HeaderParser","self","r","m","h","i","WritableStream","inherits","Dicer","self","r","i","decodeText","decodeText","parseParams","p","i","basename","path","i","Dicer","parseParams","decodeText","getLimit","RE_CHARSET","i","self","contentType","finished","buffer","r","Readable","Decoder","i","p","i","p","Busboy","corsSafeListedMethodsSet","nullBodyStatus","redirectStatusSet","badPortsSet","referrerPolicy","requestRedirect","safeMethodsSet","requestMode","requestCredentials","requestCache","requestBodyHeader","requestDuplex","forbiddenMethodsSet","subresourceSet","DOMException","structuredClone","getGlobalOrigin","assert","crypto","responseLocationURL","redirectStatusSet","isValidHeaderValue","requestCurrentURL","request","requestBadPort","urlIsHttpHttpsScheme","isErrorLike","isValidReasonPhrase","i","c","isValidHTTPToken","isValidHeaderName","setRequestReferrerPolicyOnRedirect","crossOriginResourcePolicyCheck","corsCheck","TAOCheck","appendFetchMetadata","appendRequestOriginHeader","urlHasHttpsScheme","sameOrigin","coarsenedSharedCurrentTime","performance","createOpaqueTimingInfo","makePolicyContainer","clonePolicyContainer","determineRequestsReferrer","globalOrigin","getGlobalOrigin","bytesMatch","tryUpgradeRequestToAPotentiallyTrustworthyURL","A","B","createDeferredPromise","isAborted","isCancelled","normalizeMethodRecord","normalizeMethod","serializeJavascriptValueToJSONString","makeIterator","name","values","kind","fullyReadBody","e","readAllBytes","ReadableStream","isReadableStreamLike","stream","isomorphicDecode","readableStreamClose","isomorphicEncode","isUint8Array","urlIsLocal","hasOwn","webidl","plural","context","V","I","x","r","n","seq","O","types","keys","i","toUSVString","T","assert","encoder","dataURLProcessor","URLSerializer","collectASequenceOfCodePointsFast","parseMIMEType","i","binary","atob","serializeAMimeType","name","NativeFile","File","Blob","webidl","n","t","d","parseMIMEType","serializeAMimeType","kState","FileLike","kEnumerableProperty","V","isBlobLike","types","s","isFileLike","UndiciFile","NativeFile","File","FormData","webidl","kState","isBlobLike","name","toUSVString","entry","makeIterator","Blob","util","assert","crypto","ReadableStream","File","textEncoder","extractBody","stream","isBlobLike","readableStreamClose","isArrayBuffer","name","chunk","ReadableStreamFrom","isErrored","safelyExtractBody","cloneBody","consumeBody","kBodyUsed","DOMException","serializeAMimeType","Blob","kState","contentType","FormData","webidl","mixinBody","createDeferredPromise","error","e","fullyReadBody","buffer","parseMIMEType","assert","util","channels","extractBody","diagnosticsChannel","Request","path","InvalidArgumentError","upgrade","i","keys","contentType","abort","resume","error","kHTTP1BuildRequest","kHTTP2BuildRequest","request","kHTTP2CopyHeaders","NotSupportedError","Dispatcher","Dispatcher","DispatcherBase","kInterceptors","i","InvalidArgumentError","ClientDestroyedError","kClose","err","kDestroy","kDispatch","net","assert","util","tls","buildConnector","InvalidArgumentError","connect","session","onConnectTimeout","utils_1","i","c","util","assert","EE","kBody","RedirectHandler","InvalidArgumentError","abort","error","resume","path","i","name","RedirectHandler","createRedirectInterceptor","assert","net","http","util","Request","DispatcherBase","buildConnector","kClosedResolve","channels","diagnosticsChannel","Client","InvalidArgumentError","connect","tls","kInterceptors","createRedirectInterceptor","kUrl","kNeedDrain","kMaxRedirections","kQueue","kPending","kRunning","kSize","kConnected","kBusy","kDispatch","request","resume","kClose","kDestroy","i","kError","kClient","SocketError","constants","e","p","at","upgrade","Parser","exports","onSocketError","onSocketClose","parser","socket","bodyLength","RequestAbortedError","path","stream","headers","pipeline","finished","buffer","err","kSize","FixedQueue","PoolStats","kConnected","kFree","kPending","kQueued","kRunning","kSize","DispatcherBase","kClients","kNeedDrain","kOnDrain","kOnConnect","kOnDisconnect","kOnConnectionError","kGetDispatcher","kAddClient","kRemoveClient","PoolBase","c","kConnected","kRunning","kSize","kClose","kDestroy","kDispatch","kUrl","Client","util","buildConnector","kOptions","kFactory","defaultFactory","Pool","PoolBase","InvalidArgumentError","connect","tls","kInterceptors","kUrl","kClients","kGetDispatcher","dispatcher","kNeedDrain","kAddClient","Pool","kFactory","kOptions","b","a","defaultFactory","BalancedPool","InvalidArgumentError","kInterceptors","kClients","pool","p","kConnected","DispatcherBase","Pool","Client","util","createRedirectInterceptor","kFactory","kOptions","defaultFactory","Agent","InvalidArgumentError","connect","kInterceptors","kClients","FinalizationRegistry","WeakRef","kClose","kDestroy","assert","util","Blob","Readable","resume","abort","contentType","RequestAbortedError","InvalidArgumentError","self","stream","consume","toUSVString","assert","getResolveErrorBodyCallback","contentType","kSignal","self","RequestAbortedError","addSignal","removeSignal","Readable","util","AsyncResource","InvalidArgumentError","RequestAbortedError","abort","context","contentType","getResolveErrorBodyCallback","util","AsyncResource","InvalidArgumentError","RequestAbortedError","abort","context","contentType","PassThrough","InvalidReturnValueError","res","callback","resume","util","assert","Readable","resume","RequestAbortedError","AsyncResource","InvalidArgumentError","req","abort","context","body","pipeline","PassThrough","util","assert","AsyncResource","InvalidArgumentError","RequestAbortedError","abort","SocketError","util","InvalidArgumentError","RequestAbortedError","abort","context","MockNotMatchedError","UndiciError","matchValue","i","clone","mockDispatch","path","getResponseData","buildURL","addMockDispatch","buildKey","x","STATUS_CODES","kDispatches","error","delay","resume","buildMockDispatch","kMockAgent","kOrigin","kOriginalDispatch","kGetNetConnect","buildMockOptions","mockDispatch","InvalidArgumentError","MockInterceptor","kDispatches","statusCode","data","responseOptions","error","Client","Symbols","MockClient","InvalidArgumentError","kMockAgent","kOrigin","kDispatches","kConnected","kOriginalDispatch","kOriginalClose","buildMockDispatch","kClose","MockInterceptor","promisify","Pool","MockPool","InvalidArgumentError","kDispatches","kClose","promisify","Pluralizer","plural","keys","PendingInterceptorsFormatter","path","Agent","MockClient","MockPool","Dispatcher","MockAgent","InvalidArgumentError","kAgent","Agent","Pool","buildConnector","InvalidArgumentError","ProxyAgent","URL","connect","opts","i","assert","RetryHandler","abort","resume","isDisturbed","err","Agent","getGlobalDispatcher","setGlobalDispatcher","InvalidArgumentError","DecoratorHandler","util","assert","i","j","fill","webidl","keys","isValidHeaderName","name","kGuard","kHeadersList","HeadersList","init","exists","Headers","kConstruct","a","b","kEnumerableProperty","V","util","assert","ReadableStream","Response","kState","makeNetworkError","kRealm","kHeaders","kHeadersList","kGuard","init","webidl","extractBody","getGlobalOrigin","redirectStatusSet","isomorphicEncode","URLSerializer","makeResponse","Headers","kConstruct","cloneResponse","kEnumerableProperty","filterResponse","cloneBody","HeadersList","isErrorLike","p","makeAppropriateNetworkError","isCancelled","isAborted","DOMException","nullBodyStatus","FormData","V","isBlobLike","types","util","assert","TransformStream","abort","Request","kConstruct","webidl","init","kRealm","getGlobalOrigin","makePolicyContainer","request","makeRequest","kState","window","sameOrigin","ac","kHeaders","Headers","kHeadersList","kGuard","contentType","URLSerializer","kEnumerableProperty","V","zlib","assert","ReadableStream","error","DOMException","fetch","p","createDeferredPromise","Request","init","e","request","kState","Response","kRealm","kHeaders","kHeadersList","kGuard","fetching","getGlobalDispatcher","urlIsHttpHttpsScheme","globalThis","isBlobLike","serializeAMimeType","failure","makeRequest","stream","abort","Headers","n","x","keys","Readable","resume","decoders","STATUS_CODES","kState","ProgressEvent","webidl","getEncoding","staticPropertyDescriptors","readOperation","kState","DOMException","kResult","kError","kAborted","types","error","fireAProgressEvent","e","btoa","type","decode","a","b","c","kState","webidl","staticPropertyDescriptors","kEnumerableProperty","assert","urlEquals","URLSerializer","A","B","values","assert","Cache","kConstruct","webidl","request","p","r","Request","Response","kHeadersList","fetching","getGlobalDispatcher","fieldValues","e","cache","kEnumerableProperty","webidl","request","cache","kEnumerableProperty","maxAttributeValueSize","maxNameValuePairSize","isCTLExcludingHtab","name","path","stringify","parseSetCookie","name","Headers","name","webidl","stringify","uid","staticPropertyDescriptors","states","opcodes","maxUnsigned16Bit","parserStates","emptyBuffer","MessageEvent","webidl","CloseEvent","ErrorEvent","kEnumerableProperty","isEstablished","kReadyState","states","isClosing","fireEvent","e","websocketMessageReceived","opcodes","kBinaryType","kWebSocketURL","isValidSubprotocol","isValidStatusCode","failWebsocketConnection","kController","kResponse","diagnosticsChannel","channels","crypto","establishWebSocketConnection","request","Headers","getGlobalDispatcher","kByteParser","kSentClose","kReceivedClose","kReadyState","states","error","crypto","WebsocketFrameSend","bodyLength","buffer","i","ByteParser","buffer","opcodes","kSentClose","body","WebsocketFrameSend","kResponse","kReadyState","states","n","emptyBuffer","e","DOMException","p","buffer","parser","V","getGlobalDispatcher","errors","Agent","util","path","fetch","setGlobalOrigin","getGlobalOrigin","CacheStorage","kConstruct","deleteCookie","getCookies","getSetCookies","setCookie","parseMIMEType","serializeAMimeType","WebSocket","__createBinding","k","m","o","__setModuleDefault","v","__importStar","__awaiter","P","e","http","https","Headers","HttpClient","stream","info","req","defaultPort","ms","a","c","__awaiter","P","e","__awaiter","P","e","_a","error","__awaiter","P","e","os_1","_a","__createBinding","k","m","o","__setModuleDefault","v","__importStar","path","__createBinding","k","o","m","__setModuleDefault","v","__importStar","__awaiter","P","e","_a","fs","path","p","__createBinding","k","o","m","__setModuleDefault","v","__importStar","__awaiter","P","e","assert_1","path","ioUtil","p","__createBinding","k","o","m","__setModuleDefault","v","__importStar","__awaiter","P","e","os","path","a","s","n","x","i","cp","error","c","__createBinding","k","o","m","__setModuleDefault","v","__importStar","__awaiter","P","e","exec","_a","__createBinding","k","m","o","__setModuleDefault","v","__importStar","__awaiter","P","e","__importDefault","os_1","version","name","_a","__createBinding","k","m","o","__setModuleDefault","v","__importStar","__awaiter","P","e","os","path","name","x","enabled","debug","error","MAP","SCALAR","isScalar","isCollection","identity","BREAK","SKIP","REMOVE","visit","path","i","pt","identity","visit","tags","name","version","error","identity","visit","anchors","i","name","error","applyReviver","i","v1","k","identity","toJS","v","i","res","applyReviver","identity","toJS","res","anchors","visit","identity","Node","toJS","Alias","src","c","identity","Node","toJS","Scalar","Alias","identity","Scalar","tags","t","createNode","map","schema","node","createNode","identity","v","i","path","k","a","Collection","schema","it","n","stringifyComment","foldFlowLines","i","j","end","Scalar","isBlock","i","json","tags","stringifyString","t","anchors","identity","stringifyComment","stringifyString","tags","t","name","anchors$1","stringify","o","identity","Scalar","stringify","stringifyComment","stringifyPair","node_process","debug","warning","identity","Scalar","merge","it","map","value","log","merge","stringify","identity","toJS","addPairToJSMap","map","createNode","addPairToJSMap","identity","Pair","schema","identity","stringify","stringifyComment","stringifyCollection","i","comment","str","stringifyCollection","Collection","identity","Pair","Scalar","k","it","YAMLMap","schema","map","i","identity","YAMLMap","map","schema","createNode","Collection","identity","Scalar","toJS","YAMLSeq","schema","it","seq","i","identity","YAMLSeq","seq","schema","stringifyString","string","Scalar","Scalar","boolTag","stringifyNumber","n","i","d","Scalar","stringifyNumber","floatNaN","floatExp","float","stringifyNumber","intIdentify","intResolve","intStringify","intOct","int","intHex","map","_null","seq","string","bool","float","int","schema","Scalar","map","seq","intIdentify","schema","node_buffer","Scalar","stringifyString","binary","src","buffer","i","s","n","o","identity","Pair","Scalar","YAMLSeq","seq","i","pairs","schema","it","keys","identity","toJS","YAMLMap","YAMLSeq","pairs","_","map","pairs$1","schema","omap","seq","onError","Scalar","Scalar","stringifyNumber","float","f","stringifyNumber","sign","n","int","identity","Pair","YAMLMap","schema","_","set","map","sign","n","res","p","timestamp","d","map","_null","seq","string","binary","bool","float","int","merge","omap","pairs","set","timestamp","schema","map","seq","string","tags","keys","identity","string","a","b","Schema","schema","merge","identity","stringify","stringifyDocument","Alias","identity","Pair","Schema","directives","Document","version","path","name","v","k","json","res","s","name","error","src","resolveProps","st","it","utilContainsNewline","identity","a","b","Pair","YAMLMap","resolveProps","utilContainsNewline","utilFlowIndentCheck","utilMapIncludes","resolveBlockMap","map","composeNode","onError","composeEmptyNode","YAMLSeq","resolveProps","resolveBlockSeq","seq","composeNode","onError","composeEmptyNode","resolveEnd","identity","Pair","YAMLMap","YAMLSeq","resolveEnd","resolveProps","resolveFlowCollection","isMap","i","st","composeNode","onError","composeEmptyNode","map","ce","ee","name","identity","Scalar","YAMLMap","YAMLSeq","CN","onError","composeCollection","t","kt","Scalar","resolveBlockScalar","onError","i","value","end","error","n","m","Scalar","resolveEnd","resolveFlowScalar","onError","re","i","identity","Scalar","resolveBlockScalar","resolveFlowScalar","composeScalar","onError","error","schema","kt","tag","directives","before","i","st","Alias","identity","resolveEnd","composeNode","onError","before","re","Document","resolveEnd","composeDoc","directives","onError","re","node_process","Document","errors","identity","src","i","warning","it","error","errors","onError","context","he","st","stringify","cst","st","visit","cst","path","i","cst","i","n","dt","s","ch","node_process","cst","lexer","i","it","n","error","st","map","start","fs","seq","composer","Document","errors","log","identity","lineCounter","parser","parseOptions","parser$1","composer$1","parse","src","warning","stringify","conversions","x","V","c","i","S","n","U","d","a","b","keys","i","impl","punycode","s","countSymbols","string","i","error","e","l","at","c","buffer","string","i","R","n","number","path","res","e","usm","v","URL","i","V","Stream","http","https","Blob","a","i","buffer","e","isBlob","error","ct","name","abort","map","init","pairs","k","INTERNAL","values","contentType","URL","request","AbortError","URL$1","isDomainOrSubdomain","isSameProtocol","abortAndFinalize","req","s","stream","__importDefault","path_1","promises_1","platform","arch","version","downloadUrl","buffer","isRequest","Touch","LRUCache","func","ral_1","Event","context","i","e","ral_1","Is","events_1","is","CancellationToken","context","cancellation_1","request","buffer","ral_1","ral_1","Is","events_1","semaphore_1","is","error","info","ral_1","Is","events_1","CRLF","is","error","buffer","buffer","i","result","ral_1","messages_1","linkedMap_1","events_1","cancellation_1","is","Trace","toString","TraceFormat","createMessageConnection","logger","version","isClosed","error","startTime","i","p","r","events_1","util_1","api_1","buffer","stream","error","ms","__createBinding","k","m","o","__exportStar","p","exports","path","os","crypto_1","net_1","process","error","generateRandomPipeName","isReadableStream","logger","__importDefault","os_1","child_process_1","minimumVersion","version","process","x","error","__importDefault","version","minimumVersion","e","platform","arch","request","__createBinding","k","m","o","__exportStar","p","exports","b","d","t","p","s","e","i","c","r","accept","f","_","context","x","name","P","y","g","n","v","__exportStar","m","o","error","k","a","j","l","q","resume","__importStar","__importDefault","env","path","__assign","__createBinding","__setModuleDefault","getContinuationToken","setContinuationToken","pageMap","_a","uuid","k","interfaces_js_1","utils_js_1","i","buffer","d","n","serializer","result","k","v","name","AbortError","log","tslib_1","node_os_1","node_util_1","node_process_1","log_js_1","debug","setLogLevel","getLogLevel","createClientLogger","enabledNamespaces","logger","context","createHttpHeaders","name","map","randomUUID","createPipelineRequest","httpHeaders_js_1","uuidUtils_js_1","createEmptyPipeline","req","request","isObject","isError","object_js_1","e","object_js_1","n","p","k","isRestError","error_js_1","e","uint8ArrayToString","stringToUint8Array","logger_js_1","tslib_1","AbortError_js_1","httpHeaders_js_1","restError_js_1","log_js_1","sanitizer_js_1","isReadableStream","stream","e","request","bodyLength","req","buffer","createDefaultHttpClient","logPolicy","log_js_1","sanitizer_js_1","logger","request","redirectPolicy","request","getHeaderName","setPlatformSpecificData","tslib_1","node_os_1","node_process_1","getUserAgentHeaderName","getUserAgentValue","userAgentPlatform_js_1","constants_js_1","getUserAgentString","userAgentPolicy","userAgent_js_1","UserAgentHeaderName","request","decompressResponsePolicy","request","getRandomIntegerInclusive","calculateRetryDelay","random_js_1","delay","AbortError_js_1","StandardAbortMessage","helpers_js_1","diff","delay_js_1","throttlingRetryStrategy_js_1","DEFAULT_CLIENT_MAX_RETRY_INTERVAL","retryPolicy","AbortError_js_1","logger_js_1","constants_js_1","retryPolicyLogger","logger","request","e","defaultRetryPolicy","exponentialRetryStrategy_js_1","throttlingRetryStrategy_js_1","retryPolicy_js_1","constants_js_1","formDataPolicy","bytesEncoding_js_1","checkEnvironment_js_1","httpHeaders_js_1","request","contentType","values","s","m","h","d","w","y","parse","n","ms","name","coerce","disable","enable","enabled","destroy","env","i","debug","self","extend","v","name","formatArgs","save","load","useColors","m","c","error","r","v","os","tty","sign","version","stream","util","supportsColor","error","k","name","useColors","c","keys","i","v","__createBinding","k","m","o","__setModuleDefault","v","__importStar","http","https","stream","req","__createBinding","k","m","o","__setModuleDefault","v","__importStar","p","exports","net","http","l","name","req","__importDefault","debug","b","__createBinding","k","m","o","__setModuleDefault","v","__importStar","__importDefault","net","tls","debug_1","agent_base_1","url_1","debug","omit","name","connect","req","s","keys","k","m","o","v","debug","req","name","keys","getDefaultProxySettings","proxyPolicy","log_js_1","name","request","agentPolicy","req","tlsPolicy","req","isNodeReadableStream","x","typeGuards_js_1","stream","x","multipartPolicy","bytesEncoding_js_1","typeGuards_js_1","uuidUtils_js_1","x","request","contentType","createPipelineFromOptions","logPolicy_js_1","pipeline_js_1","redirectPolicy_js_1","userAgentPolicy_js_1","decompressResponsePolicy_js_1","defaultRetryPolicy_js_1","formDataPolicy_js_1","checkEnvironment_js_1","proxyPolicy_js_1","agentPolicy_js_1","tlsPolicy_js_1","multipartPolicy_js_1","pipeline","req","log_js_1","request","warning","checkInsecureConnection_js_1","request","x","bytesEncoding_js_1","checkInsecureConnection_js_1","request","x","checkInsecureConnection_js_1","request","x","request","x","createDefaultPipeline","defaultHttpClient_js_1","createPipelineFromOptions_js_1","cachedHttpClient","pipeline","restError_js_1","httpHeaders_js_1","bytesEncoding_js_1","typeGuards_js_1","x","contentType","restError_js_1","httpHeaders_js_1","pipelineRequest_js_1","clientHelpers_js_1","typeGuards_js_1","request","pipeline","stream","e","error","contentType","replaceAll","x","appendQueryParams","p","urlHelpers_js_1","checkEnvironment_js_1","pipeline","path","allowInsecureConnection","restError_js_1","httpHeaders_js_1","tslib_1","AbortError_js_1","logger_js_1","httpHeaders_js_1","pipelineRequest_js_1","pipeline_js_1","restError_js_1","bytesEncoding_js_1","defaultHttpClient_js_1","ts_http_runtime_1","logger_js_1","logger_1","exponentialRetryPolicy","exponentialRetryStrategy_js_1","retryPolicy_js_1","constants_js_1","systemErrorRetryPolicy","retryPolicy_js_1","constants_js_1","throttlingRetryPolicy","retryPolicy_js_1","constants_js_1","agentPolicy_js_1","decompressResponsePolicy_js_1","defaultRetryPolicy_js_1","exponentialRetryPolicy_js_1","retryPolicy_js_1","systemErrorRetryPolicy_js_1","throttlingRetryPolicy_js_1","formDataPolicy_js_1","logPolicy_js_1","multipartPolicy_js_1","proxyPolicy_js_1","redirectPolicy_js_1","tlsPolicy_js_1","userAgentPolicy_js_1","log_js_1","policies_1","policies_1","tslib_1","constants_js_1","userAgent_js_1","request","computeSha256Hmac","computeSha256Hash","node_crypto_1","delay_js_1","error_js_1","p","abort_controller_1","x","delay","calculateRetryDelay","createAbortablePromise_js_1","util_1","util_1","e","isObject","randomUUID","e","core_util_1","x","s","stream","name","policies_1","file_js_1","request","policies_1","policies_1","policies_1","policies_1","request","policies_1","policies_1","context","tracingContext_js_1","state_js_1","instrumenter_js_1","name","context","ts_http_runtime_1","e","core_tracing_1","constants_js_1","log_js_1","core_util_1","restError_js_1","request","e","error","wrapAbortSignal_js_1","request","logPolicy_js_1","pipeline_js_1","redirectPolicy_js_1","userAgentPolicy_js_1","multipartPolicy_js_1","decompressResponsePolicy_js_1","defaultRetryPolicy_js_1","formDataPolicy_js_1","core_util_1","proxyPolicy_js_1","setClientRequestIdPolicy_js_1","agentPolicy_js_1","tlsPolicy_js_1","tracingPolicy_js_1","pipeline","ts_http_runtime_1","request","ts_http_runtime_1","policies_1","policies_1","policies_1","logger_1","constants_js_1","core_util_1","refreshTimeout","tokenCycler_js_1","log_js_1","restError_js_1","request","e","logger","error","x","request","log_js_1","request","logger","pipeline_js_1","i","request","info","interfaces_js_1","core_rest_pipeline_1","serializer_js_1","operationHelpers_js_1","request","parse","error","contentType","serializer_js_1","interfaces_js_1","operationHelpers_js_1","serializer_js_1","interfaceHelpers_js_1","request","isStream","error","deserializationPolicy_js_1","core_rest_pipeline_1","serializationPolicy_js_1","pipeline","core_rest_pipeline_1","operationHelpers_js_1","interfaceHelpers_js_1","path","pairs","name","logger_1","core_rest_pipeline_1","pipeline_js_1","utils_js_1","log_js_1","request","contentType","error","x","a","b","logger","Constants","x","a","b","request","tslib_1","pagingHelper_js_1","coreClient","Mappers","Parameters","_a","_e","listOperationSpec","listNextOperationSpec","serializer","logger_1","logger_js_1","constants_js_1","e","isOperationError","error","init","getOperationStatus","getResourceLocation","getOperationLocation","operation_js_1","logger_js_1","_a","error","e","operation_js_1","constants_js_1","core_util_1","createStateProxy","error","getStatusFromInitialResponse","h","s","operation_js_1","poller_js_1","operation_js_1","error","_a","error","c","constants_js_1","poller_js_1","tslib_1","createLroSpec","tslib_1","tslib_1","pagingHelper_js_1","coreClient","Mappers","Parameters","core_lro_1","lroImpl_js_1","_a","_e","resourceGroupName","deleteAtScopeOperationSpec","createOrUpdateAtScopeOperationSpec","getAtScopeOperationSpec","listAtScopeOperationSpec","getAtTenantScopeOperationSpec","listAtTenantScopeOperationSpec","getAtManagementGroupScopeOperationSpec","listAtManagementGroupScopeOperationSpec","getAtSubscriptionScopeOperationSpec","listAtSubscriptionScopeOperationSpec","deleteOperationSpec","checkExistenceOperationSpec","createOrUpdateOperationSpec","getOperationSpec","exportTemplateOperationSpec","listByResourceGroupOperationSpec","listAtScopeNextOperationSpec","listAtTenantScopeNextOperationSpec","listAtManagementGroupScopeNextOperationSpec","listAtSubscriptionScopeNextOperationSpec","listByResourceGroupNextOperationSpec","serializer","tslib_1","pagingHelper_js_1","coreClient","Mappers","Parameters","_a","_e","listOperationSpec","listAtTenantScopeOperationSpec","getOperationSpec","getAtTenantScopeOperationSpec","listNextOperationSpec","listAtTenantScopeNextOperationSpec","serializer","tslib_1","coreClient","Mappers","Parameters","listOperationSpec","serializer","tslib_1","pagingHelper_js_1","coreClient","Mappers","Parameters","core_lro_1","lroImpl_js_1","resourceGroupName","_a","_e","listOperationSpec","checkExistenceOperationSpec","deleteOperationSpec","apiVersion","createOrUpdateOperationSpec","updateOperationSpec","getOperationSpec","listNextOperationSpec","serializer","tslib_1","pagingHelper_js_1","coreClient","Mappers","Parameters","core_lro_1","lroImpl_js_1","_a","_e","createOrUpdateOperationSpec","deleteOperationSpec","resourceGroupName","getOperationSpec","listOperationSpec","listNextOperationSpec","serializer","tslib_1","pagingHelper_js_1","coreClient","Mappers","Parameters","_a","_e","listOperationSpec","getAtScopeOperationSpec","listNextOperationSpec","serializer","tslib_1","pagingHelper_js_1","coreClient","Mappers","_a","_e","resourceGroupName","serializer","tslib_1","tslib_1","coreClient","coreRestPipeline","index_js_1","_a","subscriptionId","apiVersion","request","tslib_1","tslib_1","n","e","k","d","_a","resourceGroupName","_e","managementGroupId","deploymentStackName","deploymentStack","subscriptionId","apiVersion","request","constants_js_1","path","credentialName","msalPlugins_js_1","e","errors","logger_1","credentialName","error","info","warning","log","constants_js_1","errors_js_1","logging_js_1","tracing_js_1","errors","i","validate","uuid","REGEX","uuid","validate","i","i","b","dt","n","stringify","parse","validate","uuid","v","i","parse","version","stringify","name","URL","crypto","v35","md5","i","stringify","crypto","v35","sha1","version","validate","uuid","Constants","HttpStatus","HttpMethod","OIDC_DEFAULT_SCOPES","OIDC_SCOPES","HeaderNames","AADAuthorityConstants","ClaimsRequestKeys","PromptValue","CodeChallengeMethodValues","OAuthResponseType","ResponseMode","GrantType","CacheAccountType","Separators","CredentialType","APP_METADATA","THE_FAMILY_ID","AUTHORITY_METADATA_CONSTANTS","AuthorityMetadataSource","SERVER_TELEM_CONSTANTS","AuthenticationScheme","ThrottlingConstants","Errors","PasswordGrantConstants","RegionDiscoverySources","RegionDiscoveryOutcomes","CacheOutcome","DEFAULT_TOKEN_RENEWAL_OFFSET_SEC","EncodingTypes","unexpectedError","postRequestFailed","AuthErrorCodes","AuthErrorMessages","AuthErrorMessage","AuthError","createAuthError","clientInfoDecodingError","clientInfoEmptyError","tokenParsingError","nullOrEmptyToken","endpointResolutionError","networkError","openIdConfigError","hashNotDeserialized","invalidState","stateMismatch","stateNotFound","nonceMismatch","authTimeNotFound","maxAgeTranspired","multipleMatchingTokens","multipleMatchingAccounts","multipleMatchingAppMetadata","requestCannotBeMade","cannotRemoveEmptyScope","cannotAppendScopeSet","emptyInputScopeSet","deviceCodePollingCancelled","deviceCodeExpired","deviceCodeUnknownError","noAccountInSilentRequest","invalidCacheRecord","invalidCacheEnvironment","noAccountFound","noCryptoObject","unexpectedCredentialType","invalidAssertion","invalidClientCredential","tokenRefreshRequired","userTimeoutReached","tokenClaimsCnfRequiredForSignedJwt","authorizationCodeMissingFromServerResponse","bindingKeyNotRemoved","endSessionEndpointNotSupported","keyIdMissing","noNetworkConnectivity","userCanceled","missingTenantIdError","methodNotImplemented","nestedAppAuthBridgeDisabled","platformBrokerError","ClientAuthErrorCodes","ClientAuthErrorMessages","ClientAuthErrorMessage","ClientAuthError","createClientAuthError","extractTokenClaims","getJWSPayload","isKmsi","checkMaxAge","AuthorityType","isOpenIdConfigResponse","redirectUriEmpty","claimsRequestParsingError","authorityUriInsecure","urlParseError","urlEmptyError","emptyInputScopesError","invalidClaims","tokenRequestEmpty","logoutRequestEmpty","invalidCodeChallengeMethod","pkceParamsMissing","invalidCloudDiscoveryMetadata","invalidAuthorityMetadata","untrustedAuthority","missingSshJwk","missingSshKid","missingNonceAuthenticationHeader","invalidAuthenticationHeader","cannotSetOIDCOptions","cannotAllowPlatformBroker","authorityMismatch","invalidRequestMethodForEAR","invalidAuthorizePostBodyParameters","ClientConfigurationErrorCodes","ClientConfigurationErrorMessages","ClientConfigurationErrorMessage","ClientConfigurationError","createClientConfigurationError","StringUtils","e","decode","s","stripLeadingHashOrQuery","getDeserializedResponse","mapToQueryString","UrlString","rawMetdataJSON","EndpointMetadata","InstanceDiscoveryMetadata","InstanceDiscoveryMetadataAliases","getAliasesFromStaticSources","getAliasesFromMetadata","logger","getCloudDiscoveryMetadataFromNetworkResponse","getCloudDiscoveryMetadataFromHardcodedValues","i","ProtocolMode","AzureCloudInstance","isCloudInstanceDiscoveryResponse","isCloudInstanceDiscoveryErrorResponse","PerformanceEvents","PerformanceEventStatus","invoke","invokeAsync","RegionDiscovery","version","nowSeconds","toDateFromSeconds","isTokenExpired","wasClockTurnedBack","delay","t","createIdTokenEntity","createAccessTokenEntity","tokenType","createRefreshTokenEntity","isCredentialEntity","isAccessTokenEntity","isIdTokenEntity","isRefreshTokenEntity","isServerTelemetryEntity","isThrottlingEntity","generateAppMetadataKey","isAppMetadataEntity","isAuthorityMetadataEntity","generateAuthorityMetadataExpiresAt","updateAuthorityEndpointMetadata","updateCloudDiscoveryMetadata","isAuthorityMetadataExpired","Authority","error","getTenantFromAuthorityString","formatAuthorityUri","buildStaticAuthorityOptions","createDiscoveredInstance","CLIENT_ID","REDIRECT_URI","RESPONSE_TYPE","RESPONSE_MODE","GRANT_TYPE","CLAIMS","SCOPE","REFRESH_TOKEN","STATE","NONCE","PROMPT","CLIENT_INFO","CODE","CODE_CHALLENGE","CODE_CHALLENGE_METHOD","CODE_VERIFIER","CLIENT_REQUEST_ID","X_CLIENT_SKU","X_CLIENT_VER","X_CLIENT_OS","X_CLIENT_CPU","X_CLIENT_CURR_TELEM","X_CLIENT_LAST_TELEM","X_MS_LIB_CAPABILITY","X_APP_NAME","X_APP_VER","POST_LOGOUT_URI","ID_TOKEN_HINT","DEVICE_CODE","CLIENT_SECRET","CLIENT_ASSERTION","CLIENT_ASSERTION_TYPE","TOKEN_TYPE","REQ_CNF","OBO_ASSERTION","REQUESTED_TOKEN_USE","ON_BEHALF_OF","RETURN_SPA_CODE","LOGOUT_HINT","SID","LOGIN_HINT","DOMAIN_HINT","X_CLIENT_EXTRA_SKU","BROKER_CLIENT_ID","BROKER_REDIRECT_URI","INSTANCE_AWARE","DEFAULT_CRYPTO_IMPLEMENTATION","Logger","defaultLoggerCallback","log","name","ScopeSet","array","buildClientInfo","buildClientInfoFromHomeAccountId","tenantIdMatchesHomeTenant","buildTenantProfile","tenantId","updateAccountTenantProfileData","getTenantIdFromIdTokenClaims","AccountEntity","env","cacheQuotaExceeded","cacheErrorUnknown","CacheErrorMessages","CacheError","createCacheError","CacheManager","request","json","DefaultStorageClass","StubPerformanceMeasurement","StubPerformanceClient","DEFAULT_SYSTEM_OPTIONS","DEFAULT_LOGGER_IMPLEMENTATION","DEFAULT_CACHE_OPTIONS","DEFAULT_NETWORK_IMPLEMENTATION","DEFAULT_LIBRARY_INFO","DEFAULT_CLIENT_CREDENTIALS","DEFAULT_AZURE_CLOUD_OPTIONS","DEFAULT_TELEMETRY_OPTIONS","buildClientConfiguration","buildAuthOptions","isOidcProtocolMode","CcsCredentialType","instrumentBrokerParams","addResponseType","addResponseMode","addScopes","addClientId","addRedirectUri","addPostLogoutRedirectUri","addIdTokenHint","addDomainHint","addLoginHint","addCcsUpn","addCcsOid","addSid","addClaims","addClientCapabilitiesToClaims","addCorrelationId","addLibraryInfo","addApplicationTelemetry","addPrompt","addState","addNonce","addCodeChallengeParams","addAuthorizationCode","addDeviceCode","addRefreshToken","addCodeVerifier","addClientSecret","addClientAssertion","addClientAssertionType","addOboAssertion","addRequestTokenUse","addGrantType","addClientInfo","addInstanceAware","addExtraQueryParameters","addUsername","addPassword","addPopToken","addSshJwk","addServerTelemetry","addThrottling","addLogoutHint","addBrokerParameters","ServerError","getRequestThumbprint","ThrottlingUtils","NetworkError","BaseClient","noTokensFound","nativeAccountUnavailable","refreshTokenExpired","uxNotAllowed","interactionRequired","consentRequired","loginRequired","badToken","InteractionRequiredAuthErrorCodes","InteractionRequiredServerErrorMessage","InteractionRequiredAuthSubErrorMessage","InteractionRequiredAuthErrorMessages","InteractionRequiredAuthErrorMessage","InteractionRequiredAuthError","timestamp","isInteractionRequiredError","createInteractionRequiredAuthError","ProtocolUtils","KeyLocation","PopTokenGenerator","TokenCacheContext","ResponseHandler","buildAccountToCache","uid","getClientAssertion","AuthorizationCodeClient","DEFAULT_REFRESH_TOKEN_EXPIRATION_OFFSET_SECONDS","RefreshTokenClient","SilentFlowClient","getStandardAuthorizeRequestParameters","extractAccountSid","extractLoginHint","getAuthorizeUrl","skuGroupSeparator","skuValueSeparator","makeExtraSkuString","setSku","ServerTelemetryManager","errors","indexNode","stack","error","context","logger","events","Buffer","src","fill","Buffer","Stream","util","DataStream","write","getParamBytesForAlg","Buffer","base64","o","Buffer","a","b","c","i","Buffer","crypto","util","base64","base64url","i","sign","timingSafeEqual","a","b","jwa","Buffer","toString","Buffer","DataStream","jwa","Stream","toString","util","string","SignStream","sign","e","Buffer","isObject","e","string","VerifyStream","valid","jws","jwt","e","JsonWebTokenError","error","JsonWebTokenError","NotBeforeError","JsonWebTokenError","TokenExpiredError","timestamp","MAX_LENGTH","MAX_SAFE_INTEGER","MAX_SAFE_COMPONENT_LENGTH","MAX_SAFE_BUILD_LENGTH","debug","debug","re","t","R","MAX_LENGTH","name","parseOptions","compareIdentifiers","a","b","debug","re","parseOptions","SemVer","version","m","t","MAX_SAFE_INTEGER","i","a","b","prerelease","SemVer","parse","version","parse","valid","v","version","parse","clean","s","version","SemVer","inc","version","parse","diff","v1","SemVer","major","a","SemVer","minor","a","SemVer","patch","a","parse","prerelease","version","SemVer","compare","a","b","compare","rcompare","b","a","compare","compareLoose","a","b","SemVer","compareBuild","a","b","compareBuild","sort","a","b","compareBuild","rsort","b","a","compare","gt","a","b","compare","lt","a","b","compare","eq","a","b","compare","neq","a","b","compare","gte","a","b","compare","lte","a","b","eq","neq","gt","gte","lt","lte","cmp","a","b","SemVer","parse","re","coerce","version","t","major","Range","parseOptions","Comparator","r","c","i","k","re","t","version","SemVer","debug","_","M","m","p","z","set","ANY","Comparator","r","re","t","m","SemVer","version","cmp","Range","Range","satisfies","version","Range","toComparators","c","SemVer","Range","maxSatisfying","v","SemVer","Range","minSatisfying","v","SemVer","Range","gt","minVersion","i","Range","validRange","SemVer","Comparator","Range","satisfies","gt","lt","lte","gte","outside","version","i","ANY","outside","gtr","version","outside","ltr","version","Range","intersects","satisfies","compare","set","v","a","b","version","Range","Comparator","satisfies","compare","subset","gt","lt","c","eq","a","b","gt","lt","semver","semver","timespan","validateAsymmetricKey","PS_SUPPORTED","jws","secretOrPublicKey","KeyObject","_","createSecretKey","e","valid","INFINITY","MAX_INTEGER","NAN","stringTag","symbolTag","reTrim","reIsBadHex","reIsBinary","reIsOctal","freeParseInt","array","n","overArg","func","objectProto","hasOwnProperty","objectToString","isArray","includes","toInteger","isString","isObjectLike","isObject","isSymbol","toFinite","toNumber","objectToString","isBoolean","isObjectLike","INFINITY","MAX_INTEGER","NAN","symbolTag","reTrim","reIsBadHex","reIsBinary","reIsOctal","freeParseInt","objectToString","isInteger","toInteger","isObject","isObjectLike","isSymbol","toFinite","toNumber","objectToString","isObjectLike","isNumber","e","func","objectToString","isObjectLike","isPlainObject","objectToString","isObjectLike","isString","func","n","once","schema","failure","_","error","timestamp","crypto","msalCommon","fs","path","defaultLoggerCallback","log","e","decode","s","array","tenantId","name","env","logger","i","request","tokenType","json","version","t","error","timestamp","uid","errors","proxyUrl","headers","body","cache","buffer","func","req","r","retryPolicy","errors_js_1","logging_js_1","constants_js_1","core_util_1","logger","error","platform","core_util_1","core_rest_pipeline_1","errors_js_1","constants_js_1","tracing_js_1","logging_js_1","utils_js_1","request","error","e","errors_js_1","t","constants_js_1","logging_js_1","error","logger","fs","process","os","fs","fs","fsConstants","isWsl","process","process","execFileAsync","execFile","process","execFileAsync","execFile","defaultBrowser","execFileAsync","execFile","process","windows","execFile","string","x","Buffer","binary","isWsl","childProcess","__dirname","path","process","array","error","fs","fsConstants","name","logging_js_1","msalPlugins_js_1","utils_js_1","errors_js_1","identityClient_js_1","logger_1","tenantIdUtils_js_1","e","msalClient_js_1","node_crypto_1","tenantIdUtils_js_1","logging_js_1","promises_1","tracing_js_1","credentialName","logger","logging_js_1","error","msalClient_js_1","tenantIdUtils_js_1","errors_js_1","logging_js_1","scopeUtils_js_1","tracing_js_1","logger","msalClient_js_1","tenantIdUtils_js_1","errors_js_1","logging_js_1","scopeUtils_js_1","tracing_js_1","logger","errors_js_1","logging_js_1","clientCertificateCredential_js_1","clientSecretCredential_js_1","usernamePasswordCredential_js_1","tenantIdUtils_js_1","tracing_js_1","credentialName","logger","core_rest_pipeline_1","core_util_1","core_rest_pipeline_1","logging_js_1","utils_js_1","tracing_js_1","msiName","logger","request","msalClient_js_1","tenantIdUtils_js_1","errors_js_1","logging_js_1","tracing_js_1","logger","logging_js_1","clientAssertionCredential_js_1","errors_js_1","tenantIdUtils_js_1","promises_1","credentialName","logger","workloadIdentityCredential_js_1","logging_js_1","logger","env","identityClient_js_1","errors_js_1","utils_js_1","logging_js_1","tracing_js_1","logger","tslib_1","logging_js_1","errors_js_1","child_process_1","tenantIdUtils_js_1","tracing_js_1","scopeUtils_js_1","logger","error","e","logging_js_1","error","tenantIdUtils_js_1","logging_js_1","scopeUtils_js_1","errors_js_1","tracing_js_1","logger","error","isLoginError","e","error","tenantIdUtils_js_1","logging_js_1","scopeUtils_js_1","errors_js_1","tracing_js_1","logger","e","error","logging_js_1","tenantIdUtils_js_1","errors_js_1","tenantIdUtils_js_2","msalClient_js_1","scopeUtils_js_1","utils_js_1","promises_1","logger","error","tenantIdUtils_js_1","logging_js_1","scopeUtils_js_1","tracing_js_1","msalClient_js_1","constants_js_1","errors_js_1","logger","e","environmentCredential_js_1","index_js_1","workloadIdentityCredential_js_1","azureDeveloperCliCredential_js_1","azureCliCredential_js_1","azurePowerShellCredential_js_1","visualStudioCodeCredential_js_1","chainedTokenCredential_js_1","logging_js_1","logger","credentialName","tenantIdUtils_js_1","logging_js_1","scopeUtils_js_1","tracing_js_1","msalClient_js_1","constants_js_1","logger","tenantIdUtils_js_1","logging_js_1","scopeUtils_js_1","tracing_js_1","msalClient_js_1","constants_js_1","logger","errors_js_1","core_rest_pipeline_1","clientAssertionCredential_js_1","tenantIdUtils_js_1","logging_js_1","credentialName","logger","request","e","tenantIdUtils_js_1","logging_js_1","scopeUtils_js_1","tracing_js_1","msalClient_js_1","logger","logging_js_1","errors_js_1","error","pipeline","request","i","c","l","u","d","e","o","s","n","r","a","t","f","core","name","core","Color","logger","error"],"sources":["../node_modules/@actions/core/lib/utils.js","../node_modules/@actions/core/lib/command.js","../node_modules/@actions/core/lib/file-command.js","../node_modules/@actions/http-client/lib/proxy.js","../node_modules/tunnel/lib/tunnel.js","../node_modules/tunnel/index.js","../node_modules/undici/lib/core/symbols.js","../node_modules/undici/lib/core/errors.js","../node_modules/undici/lib/core/constants.js","../node_modules/undici/lib/core/util.js","../node_modules/undici/lib/timers.js","../node_modules/@fastify/busboy/deps/streamsearch/sbmh.js","../node_modules/@fastify/busboy/deps/dicer/lib/PartStream.js","../node_modules/@fastify/busboy/lib/utils/getLimit.js","../node_modules/@fastify/busboy/deps/dicer/lib/HeaderParser.js","../node_modules/@fastify/busboy/deps/dicer/lib/Dicer.js","../node_modules/@fastify/busboy/lib/utils/decodeText.js","../node_modules/@fastify/busboy/lib/utils/parseParams.js","../node_modules/@fastify/busboy/lib/utils/basename.js","../node_modules/@fastify/busboy/lib/types/multipart.js","../node_modules/@fastify/busboy/lib/utils/Decoder.js","../node_modules/@fastify/busboy/lib/types/urlencoded.js","../node_modules/@fastify/busboy/lib/main.js","../node_modules/undici/lib/fetch/constants.js","../node_modules/undici/lib/fetch/global.js","../node_modules/undici/lib/fetch/util.js","../node_modules/undici/lib/fetch/symbols.js","../node_modules/undici/lib/fetch/webidl.js","../node_modules/undici/lib/fetch/dataURL.js","../node_modules/undici/lib/fetch/file.js","../node_modules/undici/lib/fetch/formdata.js","../node_modules/undici/lib/fetch/body.js","../node_modules/undici/lib/core/request.js","../node_modules/undici/lib/dispatcher.js","../node_modules/undici/lib/dispatcher-base.js","../node_modules/undici/lib/core/connect.js","../node_modules/undici/lib/llhttp/utils.js","../node_modules/undici/lib/llhttp/constants.js","../node_modules/undici/lib/handler/RedirectHandler.js","../node_modules/undici/lib/interceptor/redirectInterceptor.js","../node_modules/undici/lib/llhttp/llhttp-wasm.js","../node_modules/undici/lib/llhttp/llhttp_simd-wasm.js","../node_modules/undici/lib/client.js","../node_modules/undici/lib/node/fixed-queue.js","../node_modules/undici/lib/pool-stats.js","../node_modules/undici/lib/pool-base.js","../node_modules/undici/lib/pool.js","../node_modules/undici/lib/balanced-pool.js","../node_modules/undici/lib/compat/dispatcher-weakref.js","../node_modules/undici/lib/agent.js","../node_modules/undici/lib/api/readable.js","../node_modules/undici/lib/api/util.js","../node_modules/undici/lib/api/abort-signal.js","../node_modules/undici/lib/api/api-request.js","../node_modules/undici/lib/api/api-stream.js","../node_modules/undici/lib/api/api-pipeline.js","../node_modules/undici/lib/api/api-upgrade.js","../node_modules/undici/lib/api/api-connect.js","../node_modules/undici/lib/api/index.js","../node_modules/undici/lib/mock/mock-errors.js","../node_modules/undici/lib/mock/mock-symbols.js","../node_modules/undici/lib/mock/mock-utils.js","../node_modules/undici/lib/mock/mock-interceptor.js","../node_modules/undici/lib/mock/mock-client.js","../node_modules/undici/lib/mock/mock-pool.js","../node_modules/undici/lib/mock/pluralizer.js","../node_modules/undici/lib/mock/pending-interceptors-formatter.js","../node_modules/undici/lib/mock/mock-agent.js","../node_modules/undici/lib/proxy-agent.js","../node_modules/undici/lib/handler/RetryHandler.js","../node_modules/undici/lib/global.js","../node_modules/undici/lib/handler/DecoratorHandler.js","../node_modules/undici/lib/fetch/headers.js","../node_modules/undici/lib/fetch/response.js","../node_modules/undici/lib/fetch/request.js","../node_modules/undici/lib/fetch/index.js","../node_modules/undici/lib/fileapi/symbols.js","../node_modules/undici/lib/fileapi/progressevent.js","../node_modules/undici/lib/fileapi/encoding.js","../node_modules/undici/lib/fileapi/util.js","../node_modules/undici/lib/fileapi/filereader.js","../node_modules/undici/lib/cache/symbols.js","../node_modules/undici/lib/cache/util.js","../node_modules/undici/lib/cache/cache.js","../node_modules/undici/lib/cache/cachestorage.js","../node_modules/undici/lib/cookies/constants.js","../node_modules/undici/lib/cookies/util.js","../node_modules/undici/lib/cookies/parse.js","../node_modules/undici/lib/cookies/index.js","../node_modules/undici/lib/websocket/constants.js","../node_modules/undici/lib/websocket/symbols.js","../node_modules/undici/lib/websocket/events.js","../node_modules/undici/lib/websocket/util.js","../node_modules/undici/lib/websocket/connection.js","../node_modules/undici/lib/websocket/frame.js","../node_modules/undici/lib/websocket/receiver.js","../node_modules/undici/lib/websocket/websocket.js","../node_modules/undici/index.js","../node_modules/@actions/http-client/lib/index.js","../node_modules/@actions/http-client/lib/auth.js","../node_modules/@actions/core/lib/oidc-utils.js","../node_modules/@actions/core/lib/summary.js","../node_modules/@actions/core/lib/path-utils.js","../node_modules/@actions/io/lib/io-util.js","../node_modules/@actions/io/lib/io.js","../node_modules/@actions/exec/lib/toolrunner.js","../node_modules/@actions/exec/lib/exec.js","../node_modules/@actions/core/lib/platform.js","../node_modules/@actions/core/lib/core.js","../node_modules/yaml/dist/nodes/identity.js","../node_modules/yaml/dist/visit.js","../node_modules/yaml/dist/doc/directives.js","../node_modules/yaml/dist/doc/anchors.js","../node_modules/yaml/dist/doc/applyReviver.js","../node_modules/yaml/dist/nodes/toJS.js","../node_modules/yaml/dist/nodes/Node.js","../node_modules/yaml/dist/nodes/Alias.js","../node_modules/yaml/dist/nodes/Scalar.js","../node_modules/yaml/dist/doc/createNode.js","../node_modules/yaml/dist/nodes/Collection.js","../node_modules/yaml/dist/stringify/stringifyComment.js","../node_modules/yaml/dist/stringify/foldFlowLines.js","../node_modules/yaml/dist/stringify/stringifyString.js","../node_modules/yaml/dist/stringify/stringify.js","../node_modules/yaml/dist/stringify/stringifyPair.js","../node_modules/yaml/dist/log.js","../node_modules/yaml/dist/schema/yaml-1.1/merge.js","../node_modules/yaml/dist/nodes/addPairToJSMap.js","../node_modules/yaml/dist/nodes/Pair.js","../node_modules/yaml/dist/stringify/stringifyCollection.js","../node_modules/yaml/dist/nodes/YAMLMap.js","../node_modules/yaml/dist/schema/common/map.js","../node_modules/yaml/dist/nodes/YAMLSeq.js","../node_modules/yaml/dist/schema/common/seq.js","../node_modules/yaml/dist/schema/common/string.js","../node_modules/yaml/dist/schema/common/null.js","../node_modules/yaml/dist/schema/core/bool.js","../node_modules/yaml/dist/stringify/stringifyNumber.js","../node_modules/yaml/dist/schema/core/float.js","../node_modules/yaml/dist/schema/core/int.js","../node_modules/yaml/dist/schema/core/schema.js","../node_modules/yaml/dist/schema/json/schema.js","../node_modules/yaml/dist/schema/yaml-1.1/binary.js","../node_modules/yaml/dist/schema/yaml-1.1/pairs.js","../node_modules/yaml/dist/schema/yaml-1.1/omap.js","../node_modules/yaml/dist/schema/yaml-1.1/bool.js","../node_modules/yaml/dist/schema/yaml-1.1/float.js","../node_modules/yaml/dist/schema/yaml-1.1/int.js","../node_modules/yaml/dist/schema/yaml-1.1/set.js","../node_modules/yaml/dist/schema/yaml-1.1/timestamp.js","../node_modules/yaml/dist/schema/yaml-1.1/schema.js","../node_modules/yaml/dist/schema/tags.js","../node_modules/yaml/dist/schema/Schema.js","../node_modules/yaml/dist/stringify/stringifyDocument.js","../node_modules/yaml/dist/doc/Document.js","../node_modules/yaml/dist/errors.js","../node_modules/yaml/dist/compose/resolve-props.js","../node_modules/yaml/dist/compose/util-contains-newline.js","../node_modules/yaml/dist/compose/util-flow-indent-check.js","../node_modules/yaml/dist/compose/util-map-includes.js","../node_modules/yaml/dist/compose/resolve-block-map.js","../node_modules/yaml/dist/compose/resolve-block-seq.js","../node_modules/yaml/dist/compose/resolve-end.js","../node_modules/yaml/dist/compose/resolve-flow-collection.js","../node_modules/yaml/dist/compose/compose-collection.js","../node_modules/yaml/dist/compose/resolve-block-scalar.js","../node_modules/yaml/dist/compose/resolve-flow-scalar.js","../node_modules/yaml/dist/compose/compose-scalar.js","../node_modules/yaml/dist/compose/util-empty-scalar-position.js","../node_modules/yaml/dist/compose/compose-node.js","../node_modules/yaml/dist/compose/compose-doc.js","../node_modules/yaml/dist/compose/composer.js","../node_modules/yaml/dist/parse/cst-scalar.js","../node_modules/yaml/dist/parse/cst-stringify.js","../node_modules/yaml/dist/parse/cst-visit.js","../node_modules/yaml/dist/parse/cst.js","../node_modules/yaml/dist/parse/lexer.js","../node_modules/yaml/dist/parse/line-counter.js","../node_modules/yaml/dist/parse/parser.js","../node_modules/yaml/dist/public-api.js","../node_modules/yaml/dist/index.js","../node_modules/webidl-conversions/lib/index.js","../node_modules/whatwg-url/lib/utils.js","../node_modules/tr46/lib/mappingTable.json","../node_modules/tr46/index.js","../node_modules/whatwg-url/lib/url-state-machine.js","../node_modules/whatwg-url/lib/URL-impl.js","../node_modules/whatwg-url/lib/URL.js","../node_modules/whatwg-url/lib/public-api.js","../node_modules/node-fetch/lib/index.js","../node_modules/bicep-node/dist/utils/install.js","../node_modules/vscode-jsonrpc/lib/common/is.js","../node_modules/vscode-jsonrpc/lib/common/messages.js","../node_modules/vscode-jsonrpc/lib/common/linkedMap.js","../node_modules/vscode-jsonrpc/lib/common/disposable.js","../node_modules/vscode-jsonrpc/lib/common/ral.js","../node_modules/vscode-jsonrpc/lib/common/events.js","../node_modules/vscode-jsonrpc/lib/common/cancellation.js","../node_modules/vscode-jsonrpc/lib/common/sharedArrayCancellation.js","../node_modules/vscode-jsonrpc/lib/common/semaphore.js","../node_modules/vscode-jsonrpc/lib/common/messageReader.js","../node_modules/vscode-jsonrpc/lib/common/messageWriter.js","../node_modules/vscode-jsonrpc/lib/common/messageBuffer.js","../node_modules/vscode-jsonrpc/lib/common/connection.js","../node_modules/vscode-jsonrpc/lib/common/api.js","../node_modules/vscode-jsonrpc/lib/node/ril.js","../node_modules/vscode-jsonrpc/lib/node/main.js","../node_modules/vscode-jsonrpc/node.js","../node_modules/bicep-node/dist/utils/jsonrpc.js","../node_modules/bicep-node/dist/utils/bicep.js","../node_modules/bicep-node/dist/utils/types.js","../node_modules/bicep-node/dist/index.js","../node_modules/tslib/tslib.es6.mjs","../node_modules/@azure/arm-resources/dist/commonjs/pagingHelper.js","../node_modules/@azure/arm-resources/dist/commonjs/models/index.js","../node_modules/@azure/core-client/dist/commonjs/base64.js","../node_modules/@azure/core-client/dist/commonjs/interfaces.js","../node_modules/@azure/core-client/dist/commonjs/utils.js","../node_modules/@azure/core-client/dist/commonjs/serializer.js","../node_modules/@typespec/ts-http-runtime/dist/commonjs/abort-controller/AbortError.js","../node_modules/@typespec/ts-http-runtime/dist/commonjs/logger/log.js","../node_modules/@typespec/ts-http-runtime/dist/commonjs/logger/debug.js","../node_modules/@typespec/ts-http-runtime/dist/commonjs/logger/logger.js","../node_modules/@typespec/ts-http-runtime/dist/commonjs/httpHeaders.js","../node_modules/@typespec/ts-http-runtime/dist/commonjs/auth/schemes.js","../node_modules/@typespec/ts-http-runtime/dist/commonjs/auth/oauth2Flows.js","../node_modules/@typespec/ts-http-runtime/dist/commonjs/util/uuidUtils.js","../node_modules/@typespec/ts-http-runtime/dist/commonjs/pipelineRequest.js","../node_modules/@typespec/ts-http-runtime/dist/commonjs/pipeline.js","../node_modules/@typespec/ts-http-runtime/dist/commonjs/util/object.js","../node_modules/@typespec/ts-http-runtime/dist/commonjs/util/error.js","../node_modules/@typespec/ts-http-runtime/dist/commonjs/util/inspect.js","../node_modules/@typespec/ts-http-runtime/dist/commonjs/util/sanitizer.js","../node_modules/@typespec/ts-http-runtime/dist/commonjs/restError.js","../node_modules/@typespec/ts-http-runtime/dist/commonjs/util/bytesEncoding.js","../node_modules/@typespec/ts-http-runtime/dist/commonjs/log.js","../node_modules/@typespec/ts-http-runtime/dist/commonjs/nodeHttpClient.js","../node_modules/@typespec/ts-http-runtime/dist/commonjs/defaultHttpClient.js","../node_modules/@typespec/ts-http-runtime/dist/commonjs/policies/logPolicy.js","../node_modules/@typespec/ts-http-runtime/dist/commonjs/policies/redirectPolicy.js","../node_modules/@typespec/ts-http-runtime/dist/commonjs/util/userAgentPlatform.js","../node_modules/@typespec/ts-http-runtime/dist/commonjs/constants.js","../node_modules/@typespec/ts-http-runtime/dist/commonjs/util/userAgent.js","../node_modules/@typespec/ts-http-runtime/dist/commonjs/policies/userAgentPolicy.js","../node_modules/@typespec/ts-http-runtime/dist/commonjs/policies/decompressResponsePolicy.js","../node_modules/@typespec/ts-http-runtime/dist/commonjs/util/random.js","../node_modules/@typespec/ts-http-runtime/dist/commonjs/util/delay.js","../node_modules/@typespec/ts-http-runtime/dist/commonjs/util/helpers.js","../node_modules/@typespec/ts-http-runtime/dist/commonjs/retryStrategies/throttlingRetryStrategy.js","../node_modules/@typespec/ts-http-runtime/dist/commonjs/retryStrategies/exponentialRetryStrategy.js","../node_modules/@typespec/ts-http-runtime/dist/commonjs/policies/retryPolicy.js","../node_modules/@typespec/ts-http-runtime/dist/commonjs/policies/defaultRetryPolicy.js","../node_modules/@typespec/ts-http-runtime/dist/commonjs/util/checkEnvironment.js","../node_modules/@typespec/ts-http-runtime/dist/commonjs/policies/formDataPolicy.js","../node_modules/ms/index.js","../node_modules/debug/src/common.js","../node_modules/debug/src/browser.js","../node_modules/has-flag/index.js","../node_modules/supports-color/index.js","../node_modules/debug/src/node.js","../node_modules/debug/src/index.js","../node_modules/agent-base/dist/helpers.js","../node_modules/agent-base/dist/index.js","../node_modules/https-proxy-agent/dist/parse-proxy-response.js","../node_modules/https-proxy-agent/dist/index.js","../node_modules/http-proxy-agent/dist/index.js","../node_modules/@typespec/ts-http-runtime/dist/commonjs/policies/proxyPolicy.js","../node_modules/@typespec/ts-http-runtime/dist/commonjs/policies/agentPolicy.js","../node_modules/@typespec/ts-http-runtime/dist/commonjs/policies/tlsPolicy.js","../node_modules/@typespec/ts-http-runtime/dist/commonjs/util/typeGuards.js","../node_modules/@typespec/ts-http-runtime/dist/commonjs/util/concat.js","../node_modules/@typespec/ts-http-runtime/dist/commonjs/policies/multipartPolicy.js","../node_modules/@typespec/ts-http-runtime/dist/commonjs/createPipelineFromOptions.js","../node_modules/@typespec/ts-http-runtime/dist/commonjs/client/apiVersionPolicy.js","../node_modules/@typespec/ts-http-runtime/dist/commonjs/auth/credentials.js","../node_modules/@typespec/ts-http-runtime/dist/commonjs/policies/auth/checkInsecureConnection.js","../node_modules/@typespec/ts-http-runtime/dist/commonjs/policies/auth/apiKeyAuthenticationPolicy.js","../node_modules/@typespec/ts-http-runtime/dist/commonjs/policies/auth/basicAuthenticationPolicy.js","../node_modules/@typespec/ts-http-runtime/dist/commonjs/policies/auth/bearerAuthenticationPolicy.js","../node_modules/@typespec/ts-http-runtime/dist/commonjs/policies/auth/oauth2AuthenticationPolicy.js","../node_modules/@typespec/ts-http-runtime/dist/commonjs/client/clientHelpers.js","../node_modules/@typespec/ts-http-runtime/dist/commonjs/client/multipart.js","../node_modules/@typespec/ts-http-runtime/dist/commonjs/client/sendRequest.js","../node_modules/@typespec/ts-http-runtime/dist/commonjs/client/urlHelpers.js","../node_modules/@typespec/ts-http-runtime/dist/commonjs/client/getClient.js","../node_modules/@typespec/ts-http-runtime/dist/commonjs/client/operationOptionHelpers.js","../node_modules/@typespec/ts-http-runtime/dist/commonjs/client/restError.js","../node_modules/@typespec/ts-http-runtime/dist/commonjs/index.js","../node_modules/@azure/core-rest-pipeline/dist/commonjs/pipeline.js","../node_modules/@typespec/ts-http-runtime/dist/commonjs/logger/internal.js","../node_modules/@azure/logger/dist/commonjs/index.js","../node_modules/@azure/core-rest-pipeline/dist/commonjs/log.js","../node_modules/@typespec/ts-http-runtime/dist/commonjs/policies/exponentialRetryPolicy.js","../node_modules/@typespec/ts-http-runtime/dist/commonjs/policies/systemErrorRetryPolicy.js","../node_modules/@typespec/ts-http-runtime/dist/commonjs/policies/throttlingRetryPolicy.js","../node_modules/@typespec/ts-http-runtime/dist/commonjs/policies/internal.js","../node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/logPolicy.js","../node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/redirectPolicy.js","../node_modules/@azure/core-rest-pipeline/dist/commonjs/util/userAgentPlatform.js","../node_modules/@azure/core-rest-pipeline/dist/commonjs/constants.js","../node_modules/@azure/core-rest-pipeline/dist/commonjs/util/userAgent.js","../node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/userAgentPolicy.js","../node_modules/@typespec/ts-http-runtime/dist/commonjs/util/sha256.js","../node_modules/@typespec/ts-http-runtime/dist/commonjs/util/internal.js","../node_modules/@azure/core-util/dist/commonjs/aborterUtils.js","../node_modules/@azure/abort-controller/dist/commonjs/AbortError.js","../node_modules/@azure/abort-controller/dist/commonjs/index.js","../node_modules/@azure/core-util/dist/commonjs/createAbortablePromise.js","../node_modules/@azure/core-util/dist/commonjs/delay.js","../node_modules/@azure/core-util/dist/commonjs/error.js","../node_modules/@azure/core-util/dist/commonjs/typeGuards.js","../node_modules/@azure/core-util/dist/commonjs/index.js","../node_modules/@azure/core-rest-pipeline/dist/commonjs/util/file.js","../node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/multipartPolicy.js","../node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/decompressResponsePolicy.js","../node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/defaultRetryPolicy.js","../node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/formDataPolicy.js","../node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/proxyPolicy.js","../node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/setClientRequestIdPolicy.js","../node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/agentPolicy.js","../node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/tlsPolicy.js","../node_modules/@azure/core-tracing/dist/commonjs/tracingContext.js","../node_modules/@azure/core-tracing/dist/commonjs/state.js","../node_modules/@azure/core-tracing/dist/commonjs/instrumenter.js","../node_modules/@azure/core-tracing/dist/commonjs/tracingClient.js","../node_modules/@azure/core-tracing/dist/commonjs/index.js","../node_modules/@azure/core-rest-pipeline/dist/commonjs/restError.js","../node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/tracingPolicy.js","../node_modules/@azure/core-rest-pipeline/dist/commonjs/util/wrapAbortSignal.js","../node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/wrapAbortSignalLikePolicy.js","../node_modules/@azure/core-rest-pipeline/dist/commonjs/createPipelineFromOptions.js","../node_modules/@azure/core-rest-pipeline/dist/commonjs/defaultHttpClient.js","../node_modules/@azure/core-rest-pipeline/dist/commonjs/httpHeaders.js","../node_modules/@azure/core-rest-pipeline/dist/commonjs/pipelineRequest.js","../node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/exponentialRetryPolicy.js","../node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/systemErrorRetryPolicy.js","../node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/throttlingRetryPolicy.js","../node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/retryPolicy.js","../node_modules/@azure/core-rest-pipeline/dist/commonjs/util/tokenCycler.js","../node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/bearerTokenAuthenticationPolicy.js","../node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/ndJsonPolicy.js","../node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/auxiliaryAuthenticationHeaderPolicy.js","../node_modules/@azure/core-rest-pipeline/dist/commonjs/index.js","../node_modules/@azure/core-client/dist/commonjs/state.js","../node_modules/@azure/core-client/dist/commonjs/operationHelpers.js","../node_modules/@azure/core-client/dist/commonjs/deserializationPolicy.js","../node_modules/@azure/core-client/dist/commonjs/interfaceHelpers.js","../node_modules/@azure/core-client/dist/commonjs/serializationPolicy.js","../node_modules/@azure/core-client/dist/commonjs/pipeline.js","../node_modules/@azure/core-client/dist/commonjs/httpClientCache.js","../node_modules/@azure/core-client/dist/commonjs/urlHelpers.js","../node_modules/@azure/core-client/dist/commonjs/log.js","../node_modules/@azure/core-client/dist/commonjs/serviceClient.js","../node_modules/@azure/core-client/dist/commonjs/authorizeRequestOnClaimChallenge.js","../node_modules/@azure/core-client/dist/commonjs/authorizeRequestOnTenantChallenge.js","../node_modules/@azure/core-client/dist/commonjs/index.js","../node_modules/@azure/arm-resources/dist/commonjs/models/mappers.js","../node_modules/@azure/arm-resources/dist/commonjs/models/parameters.js","../node_modules/@azure/arm-resources/dist/commonjs/operations/operations.js","../node_modules/@azure/core-lro/dist/commonjs/logger.js","../node_modules/@azure/core-lro/dist/commonjs/poller/constants.js","../node_modules/@azure/core-lro/dist/commonjs/poller/operation.js","../node_modules/@azure/core-lro/dist/commonjs/http/operation.js","../node_modules/@azure/core-lro/dist/commonjs/poller/poller.js","../node_modules/@azure/core-lro/dist/commonjs/http/poller.js","../node_modules/@azure/core-lro/dist/commonjs/legacy/lroEngine/operation.js","../node_modules/@azure/core-lro/dist/commonjs/legacy/poller.js","../node_modules/@azure/core-lro/dist/commonjs/legacy/lroEngine/lroEngine.js","../node_modules/@azure/core-lro/dist/commonjs/legacy/lroEngine/index.js","../node_modules/@azure/core-lro/dist/commonjs/legacy/pollOperation.js","../node_modules/@azure/core-lro/dist/commonjs/index.js","../node_modules/@azure/arm-resources/dist/commonjs/lroImpl.js","../node_modules/@azure/arm-resources/dist/commonjs/operations/deployments.js","../node_modules/@azure/arm-resources/dist/commonjs/operations/providers.js","../node_modules/@azure/arm-resources/dist/commonjs/operations/providerResourceTypes.js","../node_modules/@azure/arm-resources/dist/commonjs/operations/resources.js","../node_modules/@azure/arm-resources/dist/commonjs/operations/resourceGroups.js","../node_modules/@azure/arm-resources/dist/commonjs/operations/tagsOperations.js","../node_modules/@azure/arm-resources/dist/commonjs/operations/deploymentOperations.js","../node_modules/@azure/arm-resources/dist/commonjs/operations/index.js","../node_modules/@azure/arm-resources/dist/commonjs/resourceManagementClient.js","../node_modules/@azure/arm-resources/dist/commonjs/operationsInterfaces/operations.js","../node_modules/@azure/arm-resources/dist/commonjs/operationsInterfaces/deployments.js","../node_modules/@azure/arm-resources/dist/commonjs/operationsInterfaces/providers.js","../node_modules/@azure/arm-resources/dist/commonjs/operationsInterfaces/providerResourceTypes.js","../node_modules/@azure/arm-resources/dist/commonjs/operationsInterfaces/resources.js","../node_modules/@azure/arm-resources/dist/commonjs/operationsInterfaces/resourceGroups.js","../node_modules/@azure/arm-resources/dist/commonjs/operationsInterfaces/tagsOperations.js","../node_modules/@azure/arm-resources/dist/commonjs/operationsInterfaces/deploymentOperations.js","../node_modules/@azure/arm-resources/dist/commonjs/operationsInterfaces/index.js","../node_modules/@azure/arm-resources/dist/commonjs/index.js","../node_modules/@azure/arm-resourcesdeploymentstacks/dist/index.js","../node_modules/@azure/identity/dist/commonjs/constants.js","../node_modules/@azure/identity/dist/commonjs/msal/nodeFlows/msalPlugins.js","../node_modules/@azure/identity/dist/commonjs/plugins/consumer.js","../node_modules/@azure/identity/dist/commonjs/errors.js","../node_modules/@azure/identity/dist/commonjs/util/logging.js","../node_modules/@azure/identity/dist/commonjs/util/tracing.js","../node_modules/@azure/identity/dist/commonjs/credentials/chainedTokenCredential.js","../node_modules/uuid/dist/esm-node/rng.js","../node_modules/uuid/dist/esm-node/regex.js","../node_modules/uuid/dist/esm-node/validate.js","../node_modules/uuid/dist/esm-node/stringify.js","../node_modules/uuid/dist/esm-node/v1.js","../node_modules/uuid/dist/esm-node/parse.js","../node_modules/uuid/dist/esm-node/v35.js","../node_modules/uuid/dist/esm-node/md5.js","../node_modules/uuid/dist/esm-node/v3.js","../node_modules/uuid/dist/esm-node/v4.js","../node_modules/uuid/dist/esm-node/sha1.js","../node_modules/uuid/dist/esm-node/v5.js","../node_modules/uuid/dist/esm-node/nil.js","../node_modules/uuid/dist/esm-node/version.js","../node_modules/uuid/dist/esm-node/index.js","../node_modules/@azure/msal-common/lib/index-node-BF0Vz18w.js","../node_modules/@azure/msal-common/lib/index-browser.cjs","../node_modules/@azure/msal-common/lib/index.cjs","../node_modules/safe-buffer/index.js","../node_modules/jws/lib/data-stream.js","../node_modules/ecdsa-sig-formatter/src/param-bytes-for-alg.js","../node_modules/ecdsa-sig-formatter/src/ecdsa-sig-formatter.js","../node_modules/buffer-equal-constant-time/index.js","../node_modules/jwa/index.js","../node_modules/jws/lib/tostring.js","../node_modules/jws/lib/sign-stream.js","../node_modules/jws/lib/verify-stream.js","../node_modules/jws/index.js","../node_modules/jsonwebtoken/decode.js","../node_modules/jsonwebtoken/lib/JsonWebTokenError.js","../node_modules/jsonwebtoken/lib/NotBeforeError.js","../node_modules/jsonwebtoken/lib/TokenExpiredError.js","../node_modules/jsonwebtoken/lib/timespan.js","../node_modules/semver/internal/constants.js","../node_modules/semver/internal/debug.js","../node_modules/semver/internal/re.js","../node_modules/semver/internal/parse-options.js","../node_modules/semver/internal/identifiers.js","../node_modules/semver/classes/semver.js","../node_modules/semver/functions/parse.js","../node_modules/semver/functions/valid.js","../node_modules/semver/functions/clean.js","../node_modules/semver/functions/inc.js","../node_modules/semver/functions/diff.js","../node_modules/semver/functions/major.js","../node_modules/semver/functions/minor.js","../node_modules/semver/functions/patch.js","../node_modules/semver/functions/prerelease.js","../node_modules/semver/functions/compare.js","../node_modules/semver/functions/rcompare.js","../node_modules/semver/functions/compare-loose.js","../node_modules/semver/functions/compare-build.js","../node_modules/semver/functions/sort.js","../node_modules/semver/functions/rsort.js","../node_modules/semver/functions/gt.js","../node_modules/semver/functions/lt.js","../node_modules/semver/functions/eq.js","../node_modules/semver/functions/neq.js","../node_modules/semver/functions/gte.js","../node_modules/semver/functions/lte.js","../node_modules/semver/functions/cmp.js","../node_modules/semver/functions/coerce.js","../node_modules/semver/internal/lrucache.js","../node_modules/semver/classes/range.js","../node_modules/semver/classes/comparator.js","../node_modules/semver/functions/satisfies.js","../node_modules/semver/ranges/to-comparators.js","../node_modules/semver/ranges/max-satisfying.js","../node_modules/semver/ranges/min-satisfying.js","../node_modules/semver/ranges/min-version.js","../node_modules/semver/ranges/valid.js","../node_modules/semver/ranges/outside.js","../node_modules/semver/ranges/gtr.js","../node_modules/semver/ranges/ltr.js","../node_modules/semver/ranges/intersects.js","../node_modules/semver/ranges/simplify.js","../node_modules/semver/ranges/subset.js","../node_modules/semver/index.js","../node_modules/jsonwebtoken/lib/asymmetricKeyDetailsSupported.js","../node_modules/jsonwebtoken/lib/rsaPssKeyDetailsSupported.js","../node_modules/jsonwebtoken/lib/validateAsymmetricKey.js","../node_modules/jsonwebtoken/lib/psSupported.js","../node_modules/jsonwebtoken/verify.js","../node_modules/lodash.includes/index.js","../node_modules/lodash.isboolean/index.js","../node_modules/lodash.isinteger/index.js","../node_modules/lodash.isnumber/index.js","../node_modules/lodash.isplainobject/index.js","../node_modules/lodash.isstring/index.js","../node_modules/lodash.once/index.js","../node_modules/jsonwebtoken/sign.js","../node_modules/jsonwebtoken/index.js","../node_modules/@azure/msal-node/lib/msal-node.cjs","../node_modules/@azure/identity/dist/commonjs/msal/msal.js","../node_modules/@azure/identity/dist/commonjs/msal/utils.js","../node_modules/@azure/identity/dist/commonjs/util/identityTokenEndpoint.js","../node_modules/@azure/identity/dist/commonjs/credentials/managedIdentityCredential/utils.js","../node_modules/@azure/identity/dist/commonjs/client/identityClient.js","../node_modules/@azure/identity/dist/commonjs/regionalAuthority.js","../node_modules/@azure/identity/dist/commonjs/util/processMultiTenantRequest.js","../node_modules/@azure/identity/dist/commonjs/util/tenantIdUtils.js","../node_modules/is-docker/index.js","../node_modules/is-inside-container/index.js","../node_modules/is-wsl/index.js","../node_modules/wsl-utils/index.js","../node_modules/define-lazy-prop/index.js","../node_modules/default-browser-id/index.js","../node_modules/run-applescript/index.js","../node_modules/bundle-name/index.js","../node_modules/default-browser/windows.js","../node_modules/default-browser/index.js","../node_modules/open/index.js","../node_modules/@azure/identity/dist/commonjs/msal/nodeFlows/msalClient.js","../node_modules/@azure/identity/dist/commonjs/credentials/clientCertificateCredential.js","../node_modules/@azure/identity/dist/commonjs/util/scopeUtils.js","../node_modules/@azure/identity/dist/commonjs/credentials/clientSecretCredential.js","../node_modules/@azure/identity/dist/commonjs/credentials/usernamePasswordCredential.js","../node_modules/@azure/identity/dist/commonjs/credentials/environmentCredential.js","../node_modules/@azure/identity/dist/commonjs/credentials/managedIdentityCredential/imdsRetryPolicy.js","../node_modules/@azure/identity/dist/commonjs/credentials/managedIdentityCredential/imdsMsi.js","../node_modules/@azure/identity/dist/commonjs/credentials/clientAssertionCredential.js","../node_modules/@azure/identity/dist/commonjs/credentials/workloadIdentityCredential.js","../node_modules/@azure/identity/dist/commonjs/credentials/managedIdentityCredential/tokenExchangeMsi.js","../node_modules/@azure/identity/dist/commonjs/credentials/managedIdentityCredential/index.js","../node_modules/@azure/identity/dist/commonjs/credentials/azureDeveloperCliCredential.js","../node_modules/@azure/identity/dist/commonjs/util/subscriptionUtils.js","../node_modules/@azure/identity/dist/commonjs/credentials/azureCliCredential.js","../node_modules/@azure/identity/dist/commonjs/util/processUtils.js","../node_modules/@azure/identity/dist/commonjs/credentials/azurePowerShellCredential.js","../node_modules/@azure/identity/dist/commonjs/credentials/visualStudioCodeCredential.js","../node_modules/@azure/identity/dist/commonjs/credentials/brokerCredential.js","../node_modules/@azure/identity/dist/commonjs/credentials/defaultAzureCredentialFunctions.js","../node_modules/@azure/identity/dist/commonjs/credentials/defaultAzureCredential.js","../node_modules/@azure/identity/dist/commonjs/credentials/interactiveBrowserCredential.js","../node_modules/@azure/identity/dist/commonjs/credentials/deviceCodeCredential.js","../node_modules/@azure/identity/dist/commonjs/credentials/azurePipelinesCredential.js","../node_modules/@azure/identity/dist/commonjs/credentials/authorizationCodeCredential.js","../node_modules/@azure/identity/dist/commonjs/credentials/onBehalfOfCredential.js","../node_modules/@azure/identity/dist/commonjs/tokenProvider.js","../node_modules/@azure/identity/dist/commonjs/index.js","../packages/bicep-deploy-common/dist/index.cjs","../src/actionIO.ts","../src/logging.ts","../src/main.ts","../src/index.ts"],"sourcesContent":["\"use strict\";\n// We use any as a valid input type\n/* eslint-disable @typescript-eslint/no-explicit-any */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.toCommandProperties = exports.toCommandValue = void 0;\n/**\n * Sanitizes an input into a string so it can be passed into issueCommand safely\n * @param input input to sanitize into a string\n */\nfunction toCommandValue(input) {\n if (input === null || input === undefined) {\n return '';\n }\n else if (typeof input === 'string' || input instanceof String) {\n return input;\n }\n return JSON.stringify(input);\n}\nexports.toCommandValue = toCommandValue;\n/**\n *\n * @param annotationProperties\n * @returns The command properties to send with the actual annotation command\n * See IssueCommandProperties: https://github.com/actions/runner/blob/main/src/Runner.Worker/ActionCommandManager.cs#L646\n */\nfunction toCommandProperties(annotationProperties) {\n if (!Object.keys(annotationProperties).length) {\n return {};\n }\n return {\n title: annotationProperties.title,\n file: annotationProperties.file,\n line: annotationProperties.startLine,\n endLine: annotationProperties.endLine,\n col: annotationProperties.startColumn,\n endColumn: annotationProperties.endColumn\n };\n}\nexports.toCommandProperties = toCommandProperties;\n//# sourceMappingURL=utils.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.issue = exports.issueCommand = void 0;\nconst os = __importStar(require(\"os\"));\nconst utils_1 = require(\"./utils\");\n/**\n * Commands\n *\n * Command Format:\n * ::name key=value,key=value::message\n *\n * Examples:\n * ::warning::This is the message\n * ::set-env name=MY_VAR::some value\n */\nfunction issueCommand(command, properties, message) {\n const cmd = new Command(command, properties, message);\n process.stdout.write(cmd.toString() + os.EOL);\n}\nexports.issueCommand = issueCommand;\nfunction issue(name, message = '') {\n issueCommand(name, {}, message);\n}\nexports.issue = issue;\nconst CMD_STRING = '::';\nclass Command {\n constructor(command, properties, message) {\n if (!command) {\n command = 'missing.command';\n }\n this.command = command;\n this.properties = properties;\n this.message = message;\n }\n toString() {\n let cmdStr = CMD_STRING + this.command;\n if (this.properties && Object.keys(this.properties).length > 0) {\n cmdStr += ' ';\n let first = true;\n for (const key in this.properties) {\n if (this.properties.hasOwnProperty(key)) {\n const val = this.properties[key];\n if (val) {\n if (first) {\n first = false;\n }\n else {\n cmdStr += ',';\n }\n cmdStr += `${key}=${escapeProperty(val)}`;\n }\n }\n }\n }\n cmdStr += `${CMD_STRING}${escapeData(this.message)}`;\n return cmdStr;\n }\n}\nfunction escapeData(s) {\n return (0, utils_1.toCommandValue)(s)\n .replace(/%/g, '%25')\n .replace(/\\r/g, '%0D')\n .replace(/\\n/g, '%0A');\n}\nfunction escapeProperty(s) {\n return (0, utils_1.toCommandValue)(s)\n .replace(/%/g, '%25')\n .replace(/\\r/g, '%0D')\n .replace(/\\n/g, '%0A')\n .replace(/:/g, '%3A')\n .replace(/,/g, '%2C');\n}\n//# sourceMappingURL=command.js.map","\"use strict\";\n// For internal use, subject to change.\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.prepareKeyValueMessage = exports.issueFileCommand = void 0;\n// We use any as a valid input type\n/* eslint-disable @typescript-eslint/no-explicit-any */\nconst crypto = __importStar(require(\"crypto\"));\nconst fs = __importStar(require(\"fs\"));\nconst os = __importStar(require(\"os\"));\nconst utils_1 = require(\"./utils\");\nfunction issueFileCommand(command, message) {\n const filePath = process.env[`GITHUB_${command}`];\n if (!filePath) {\n throw new Error(`Unable to find environment variable for file command ${command}`);\n }\n if (!fs.existsSync(filePath)) {\n throw new Error(`Missing file at path: ${filePath}`);\n }\n fs.appendFileSync(filePath, `${(0, utils_1.toCommandValue)(message)}${os.EOL}`, {\n encoding: 'utf8'\n });\n}\nexports.issueFileCommand = issueFileCommand;\nfunction prepareKeyValueMessage(key, value) {\n const delimiter = `ghadelimiter_${crypto.randomUUID()}`;\n const convertedValue = (0, utils_1.toCommandValue)(value);\n // These should realistically never happen, but just in case someone finds a\n // way to exploit uuid generation let's not allow keys or values that contain\n // the delimiter.\n if (key.includes(delimiter)) {\n throw new Error(`Unexpected input: name should not contain the delimiter \"${delimiter}\"`);\n }\n if (convertedValue.includes(delimiter)) {\n throw new Error(`Unexpected input: value should not contain the delimiter \"${delimiter}\"`);\n }\n return `${key}<<${delimiter}${os.EOL}${convertedValue}${os.EOL}${delimiter}`;\n}\nexports.prepareKeyValueMessage = prepareKeyValueMessage;\n//# sourceMappingURL=file-command.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.checkBypass = exports.getProxyUrl = void 0;\nfunction getProxyUrl(reqUrl) {\n const usingSsl = reqUrl.protocol === 'https:';\n if (checkBypass(reqUrl)) {\n return undefined;\n }\n const proxyVar = (() => {\n if (usingSsl) {\n return process.env['https_proxy'] || process.env['HTTPS_PROXY'];\n }\n else {\n return process.env['http_proxy'] || process.env['HTTP_PROXY'];\n }\n })();\n if (proxyVar) {\n try {\n return new DecodedURL(proxyVar);\n }\n catch (_a) {\n if (!proxyVar.startsWith('http://') && !proxyVar.startsWith('https://'))\n return new DecodedURL(`http://${proxyVar}`);\n }\n }\n else {\n return undefined;\n }\n}\nexports.getProxyUrl = getProxyUrl;\nfunction checkBypass(reqUrl) {\n if (!reqUrl.hostname) {\n return false;\n }\n const reqHost = reqUrl.hostname;\n if (isLoopbackAddress(reqHost)) {\n return true;\n }\n const noProxy = process.env['no_proxy'] || process.env['NO_PROXY'] || '';\n if (!noProxy) {\n return false;\n }\n // Determine the request port\n let reqPort;\n if (reqUrl.port) {\n reqPort = Number(reqUrl.port);\n }\n else if (reqUrl.protocol === 'http:') {\n reqPort = 80;\n }\n else if (reqUrl.protocol === 'https:') {\n reqPort = 443;\n }\n // Format the request hostname and hostname with port\n const upperReqHosts = [reqUrl.hostname.toUpperCase()];\n if (typeof reqPort === 'number') {\n upperReqHosts.push(`${upperReqHosts[0]}:${reqPort}`);\n }\n // Compare request host against noproxy\n for (const upperNoProxyItem of noProxy\n .split(',')\n .map(x => x.trim().toUpperCase())\n .filter(x => x)) {\n if (upperNoProxyItem === '*' ||\n upperReqHosts.some(x => x === upperNoProxyItem ||\n x.endsWith(`.${upperNoProxyItem}`) ||\n (upperNoProxyItem.startsWith('.') &&\n x.endsWith(`${upperNoProxyItem}`)))) {\n return true;\n }\n }\n return false;\n}\nexports.checkBypass = checkBypass;\nfunction isLoopbackAddress(host) {\n const hostLower = host.toLowerCase();\n return (hostLower === 'localhost' ||\n hostLower.startsWith('127.') ||\n hostLower.startsWith('[::1]') ||\n hostLower.startsWith('[0:0:0:0:0:0:0:1]'));\n}\nclass DecodedURL extends URL {\n constructor(url, base) {\n super(url, base);\n this._decodedUsername = decodeURIComponent(super.username);\n this._decodedPassword = decodeURIComponent(super.password);\n }\n get username() {\n return this._decodedUsername;\n }\n get password() {\n return this._decodedPassword;\n }\n}\n//# sourceMappingURL=proxy.js.map","'use strict';\n\nvar net = require('net');\nvar tls = require('tls');\nvar http = require('http');\nvar https = require('https');\nvar events = require('events');\nvar assert = require('assert');\nvar util = require('util');\n\n\nexports.httpOverHttp = httpOverHttp;\nexports.httpsOverHttp = httpsOverHttp;\nexports.httpOverHttps = httpOverHttps;\nexports.httpsOverHttps = httpsOverHttps;\n\n\nfunction httpOverHttp(options) {\n var agent = new TunnelingAgent(options);\n agent.request = http.request;\n return agent;\n}\n\nfunction httpsOverHttp(options) {\n var agent = new TunnelingAgent(options);\n agent.request = http.request;\n agent.createSocket = createSecureSocket;\n agent.defaultPort = 443;\n return agent;\n}\n\nfunction httpOverHttps(options) {\n var agent = new TunnelingAgent(options);\n agent.request = https.request;\n return agent;\n}\n\nfunction httpsOverHttps(options) {\n var agent = new TunnelingAgent(options);\n agent.request = https.request;\n agent.createSocket = createSecureSocket;\n agent.defaultPort = 443;\n return agent;\n}\n\n\nfunction TunnelingAgent(options) {\n var self = this;\n self.options = options || {};\n self.proxyOptions = self.options.proxy || {};\n self.maxSockets = self.options.maxSockets || http.Agent.defaultMaxSockets;\n self.requests = [];\n self.sockets = [];\n\n self.on('free', function onFree(socket, host, port, localAddress) {\n var options = toOptions(host, port, localAddress);\n for (var i = 0, len = self.requests.length; i < len; ++i) {\n var pending = self.requests[i];\n if (pending.host === options.host && pending.port === options.port) {\n // Detect the request to connect same origin server,\n // reuse the connection.\n self.requests.splice(i, 1);\n pending.request.onSocket(socket);\n return;\n }\n }\n socket.destroy();\n self.removeSocket(socket);\n });\n}\nutil.inherits(TunnelingAgent, events.EventEmitter);\n\nTunnelingAgent.prototype.addRequest = function addRequest(req, host, port, localAddress) {\n var self = this;\n var options = mergeOptions({request: req}, self.options, toOptions(host, port, localAddress));\n\n if (self.sockets.length >= this.maxSockets) {\n // We are over limit so we'll add it to the queue.\n self.requests.push(options);\n return;\n }\n\n // If we are under maxSockets create a new one.\n self.createSocket(options, function(socket) {\n socket.on('free', onFree);\n socket.on('close', onCloseOrRemove);\n socket.on('agentRemove', onCloseOrRemove);\n req.onSocket(socket);\n\n function onFree() {\n self.emit('free', socket, options);\n }\n\n function onCloseOrRemove(err) {\n self.removeSocket(socket);\n socket.removeListener('free', onFree);\n socket.removeListener('close', onCloseOrRemove);\n socket.removeListener('agentRemove', onCloseOrRemove);\n }\n });\n};\n\nTunnelingAgent.prototype.createSocket = function createSocket(options, cb) {\n var self = this;\n var placeholder = {};\n self.sockets.push(placeholder);\n\n var connectOptions = mergeOptions({}, self.proxyOptions, {\n method: 'CONNECT',\n path: options.host + ':' + options.port,\n agent: false,\n headers: {\n host: options.host + ':' + options.port\n }\n });\n if (options.localAddress) {\n connectOptions.localAddress = options.localAddress;\n }\n if (connectOptions.proxyAuth) {\n connectOptions.headers = connectOptions.headers || {};\n connectOptions.headers['Proxy-Authorization'] = 'Basic ' +\n new Buffer(connectOptions.proxyAuth).toString('base64');\n }\n\n debug('making CONNECT request');\n var connectReq = self.request(connectOptions);\n connectReq.useChunkedEncodingByDefault = false; // for v0.6\n connectReq.once('response', onResponse); // for v0.6\n connectReq.once('upgrade', onUpgrade); // for v0.6\n connectReq.once('connect', onConnect); // for v0.7 or later\n connectReq.once('error', onError);\n connectReq.end();\n\n function onResponse(res) {\n // Very hacky. This is necessary to avoid http-parser leaks.\n res.upgrade = true;\n }\n\n function onUpgrade(res, socket, head) {\n // Hacky.\n process.nextTick(function() {\n onConnect(res, socket, head);\n });\n }\n\n function onConnect(res, socket, head) {\n connectReq.removeAllListeners();\n socket.removeAllListeners();\n\n if (res.statusCode !== 200) {\n debug('tunneling socket could not be established, statusCode=%d',\n res.statusCode);\n socket.destroy();\n var error = new Error('tunneling socket could not be established, ' +\n 'statusCode=' + res.statusCode);\n error.code = 'ECONNRESET';\n options.request.emit('error', error);\n self.removeSocket(placeholder);\n return;\n }\n if (head.length > 0) {\n debug('got illegal response body from proxy');\n socket.destroy();\n var error = new Error('got illegal response body from proxy');\n error.code = 'ECONNRESET';\n options.request.emit('error', error);\n self.removeSocket(placeholder);\n return;\n }\n debug('tunneling connection has established');\n self.sockets[self.sockets.indexOf(placeholder)] = socket;\n return cb(socket);\n }\n\n function onError(cause) {\n connectReq.removeAllListeners();\n\n debug('tunneling socket could not be established, cause=%s\\n',\n cause.message, cause.stack);\n var error = new Error('tunneling socket could not be established, ' +\n 'cause=' + cause.message);\n error.code = 'ECONNRESET';\n options.request.emit('error', error);\n self.removeSocket(placeholder);\n }\n};\n\nTunnelingAgent.prototype.removeSocket = function removeSocket(socket) {\n var pos = this.sockets.indexOf(socket)\n if (pos === -1) {\n return;\n }\n this.sockets.splice(pos, 1);\n\n var pending = this.requests.shift();\n if (pending) {\n // If we have pending requests and a socket gets closed a new one\n // needs to be created to take over in the pool for the one that closed.\n this.createSocket(pending, function(socket) {\n pending.request.onSocket(socket);\n });\n }\n};\n\nfunction createSecureSocket(options, cb) {\n var self = this;\n TunnelingAgent.prototype.createSocket.call(self, options, function(socket) {\n var hostHeader = options.request.getHeader('host');\n var tlsOptions = mergeOptions({}, self.options, {\n socket: socket,\n servername: hostHeader ? hostHeader.replace(/:.*$/, '') : options.host\n });\n\n // 0 is dummy port for v0.6\n var secureSocket = tls.connect(0, tlsOptions);\n self.sockets[self.sockets.indexOf(socket)] = secureSocket;\n cb(secureSocket);\n });\n}\n\n\nfunction toOptions(host, port, localAddress) {\n if (typeof host === 'string') { // since v0.10\n return {\n host: host,\n port: port,\n localAddress: localAddress\n };\n }\n return host; // for v0.11 or later\n}\n\nfunction mergeOptions(target) {\n for (var i = 1, len = arguments.length; i < len; ++i) {\n var overrides = arguments[i];\n if (typeof overrides === 'object') {\n var keys = Object.keys(overrides);\n for (var j = 0, keyLen = keys.length; j < keyLen; ++j) {\n var k = keys[j];\n if (overrides[k] !== undefined) {\n target[k] = overrides[k];\n }\n }\n }\n }\n return target;\n}\n\n\nvar debug;\nif (process.env.NODE_DEBUG && /\\btunnel\\b/.test(process.env.NODE_DEBUG)) {\n debug = function() {\n var args = Array.prototype.slice.call(arguments);\n if (typeof args[0] === 'string') {\n args[0] = 'TUNNEL: ' + args[0];\n } else {\n args.unshift('TUNNEL:');\n }\n console.error.apply(console, args);\n }\n} else {\n debug = function() {};\n}\nexports.debug = debug; // for test\n","module.exports = require('./lib/tunnel');\n","module.exports = {\n kClose: Symbol('close'),\n kDestroy: Symbol('destroy'),\n kDispatch: Symbol('dispatch'),\n kUrl: Symbol('url'),\n kWriting: Symbol('writing'),\n kResuming: Symbol('resuming'),\n kQueue: Symbol('queue'),\n kConnect: Symbol('connect'),\n kConnecting: Symbol('connecting'),\n kHeadersList: Symbol('headers list'),\n kKeepAliveDefaultTimeout: Symbol('default keep alive timeout'),\n kKeepAliveMaxTimeout: Symbol('max keep alive timeout'),\n kKeepAliveTimeoutThreshold: Symbol('keep alive timeout threshold'),\n kKeepAliveTimeoutValue: Symbol('keep alive timeout'),\n kKeepAlive: Symbol('keep alive'),\n kHeadersTimeout: Symbol('headers timeout'),\n kBodyTimeout: Symbol('body timeout'),\n kServerName: Symbol('server name'),\n kLocalAddress: Symbol('local address'),\n kHost: Symbol('host'),\n kNoRef: Symbol('no ref'),\n kBodyUsed: Symbol('used'),\n kRunning: Symbol('running'),\n kBlocking: Symbol('blocking'),\n kPending: Symbol('pending'),\n kSize: Symbol('size'),\n kBusy: Symbol('busy'),\n kQueued: Symbol('queued'),\n kFree: Symbol('free'),\n kConnected: Symbol('connected'),\n kClosed: Symbol('closed'),\n kNeedDrain: Symbol('need drain'),\n kReset: Symbol('reset'),\n kDestroyed: Symbol.for('nodejs.stream.destroyed'),\n kMaxHeadersSize: Symbol('max headers size'),\n kRunningIdx: Symbol('running index'),\n kPendingIdx: Symbol('pending index'),\n kError: Symbol('error'),\n kClients: Symbol('clients'),\n kClient: Symbol('client'),\n kParser: Symbol('parser'),\n kOnDestroyed: Symbol('destroy callbacks'),\n kPipelining: Symbol('pipelining'),\n kSocket: Symbol('socket'),\n kHostHeader: Symbol('host header'),\n kConnector: Symbol('connector'),\n kStrictContentLength: Symbol('strict content length'),\n kMaxRedirections: Symbol('maxRedirections'),\n kMaxRequests: Symbol('maxRequestsPerClient'),\n kProxy: Symbol('proxy agent options'),\n kCounter: Symbol('socket request counter'),\n kInterceptors: Symbol('dispatch interceptors'),\n kMaxResponseSize: Symbol('max response size'),\n kHTTP2Session: Symbol('http2Session'),\n kHTTP2SessionState: Symbol('http2Session state'),\n kHTTP2BuildRequest: Symbol('http2 build request'),\n kHTTP1BuildRequest: Symbol('http1 build request'),\n kHTTP2CopyHeaders: Symbol('http2 copy headers'),\n kHTTPConnVersion: Symbol('http connection version'),\n kRetryHandlerDefaultRetry: Symbol('retry agent default retry'),\n kConstruct: Symbol('constructable')\n}\n","'use strict'\n\nclass UndiciError extends Error {\n constructor (message) {\n super(message)\n this.name = 'UndiciError'\n this.code = 'UND_ERR'\n }\n}\n\nclass ConnectTimeoutError extends UndiciError {\n constructor (message) {\n super(message)\n Error.captureStackTrace(this, ConnectTimeoutError)\n this.name = 'ConnectTimeoutError'\n this.message = message || 'Connect Timeout Error'\n this.code = 'UND_ERR_CONNECT_TIMEOUT'\n }\n}\n\nclass HeadersTimeoutError extends UndiciError {\n constructor (message) {\n super(message)\n Error.captureStackTrace(this, HeadersTimeoutError)\n this.name = 'HeadersTimeoutError'\n this.message = message || 'Headers Timeout Error'\n this.code = 'UND_ERR_HEADERS_TIMEOUT'\n }\n}\n\nclass HeadersOverflowError extends UndiciError {\n constructor (message) {\n super(message)\n Error.captureStackTrace(this, HeadersOverflowError)\n this.name = 'HeadersOverflowError'\n this.message = message || 'Headers Overflow Error'\n this.code = 'UND_ERR_HEADERS_OVERFLOW'\n }\n}\n\nclass BodyTimeoutError extends UndiciError {\n constructor (message) {\n super(message)\n Error.captureStackTrace(this, BodyTimeoutError)\n this.name = 'BodyTimeoutError'\n this.message = message || 'Body Timeout Error'\n this.code = 'UND_ERR_BODY_TIMEOUT'\n }\n}\n\nclass ResponseStatusCodeError extends UndiciError {\n constructor (message, statusCode, headers, body) {\n super(message)\n Error.captureStackTrace(this, ResponseStatusCodeError)\n this.name = 'ResponseStatusCodeError'\n this.message = message || 'Response Status Code Error'\n this.code = 'UND_ERR_RESPONSE_STATUS_CODE'\n this.body = body\n this.status = statusCode\n this.statusCode = statusCode\n this.headers = headers\n }\n}\n\nclass InvalidArgumentError extends UndiciError {\n constructor (message) {\n super(message)\n Error.captureStackTrace(this, InvalidArgumentError)\n this.name = 'InvalidArgumentError'\n this.message = message || 'Invalid Argument Error'\n this.code = 'UND_ERR_INVALID_ARG'\n }\n}\n\nclass InvalidReturnValueError extends UndiciError {\n constructor (message) {\n super(message)\n Error.captureStackTrace(this, InvalidReturnValueError)\n this.name = 'InvalidReturnValueError'\n this.message = message || 'Invalid Return Value Error'\n this.code = 'UND_ERR_INVALID_RETURN_VALUE'\n }\n}\n\nclass RequestAbortedError extends UndiciError {\n constructor (message) {\n super(message)\n Error.captureStackTrace(this, RequestAbortedError)\n this.name = 'AbortError'\n this.message = message || 'Request aborted'\n this.code = 'UND_ERR_ABORTED'\n }\n}\n\nclass InformationalError extends UndiciError {\n constructor (message) {\n super(message)\n Error.captureStackTrace(this, InformationalError)\n this.name = 'InformationalError'\n this.message = message || 'Request information'\n this.code = 'UND_ERR_INFO'\n }\n}\n\nclass RequestContentLengthMismatchError extends UndiciError {\n constructor (message) {\n super(message)\n Error.captureStackTrace(this, RequestContentLengthMismatchError)\n this.name = 'RequestContentLengthMismatchError'\n this.message = message || 'Request body length does not match content-length header'\n this.code = 'UND_ERR_REQ_CONTENT_LENGTH_MISMATCH'\n }\n}\n\nclass ResponseContentLengthMismatchError extends UndiciError {\n constructor (message) {\n super(message)\n Error.captureStackTrace(this, ResponseContentLengthMismatchError)\n this.name = 'ResponseContentLengthMismatchError'\n this.message = message || 'Response body length does not match content-length header'\n this.code = 'UND_ERR_RES_CONTENT_LENGTH_MISMATCH'\n }\n}\n\nclass ClientDestroyedError extends UndiciError {\n constructor (message) {\n super(message)\n Error.captureStackTrace(this, ClientDestroyedError)\n this.name = 'ClientDestroyedError'\n this.message = message || 'The client is destroyed'\n this.code = 'UND_ERR_DESTROYED'\n }\n}\n\nclass ClientClosedError extends UndiciError {\n constructor (message) {\n super(message)\n Error.captureStackTrace(this, ClientClosedError)\n this.name = 'ClientClosedError'\n this.message = message || 'The client is closed'\n this.code = 'UND_ERR_CLOSED'\n }\n}\n\nclass SocketError extends UndiciError {\n constructor (message, socket) {\n super(message)\n Error.captureStackTrace(this, SocketError)\n this.name = 'SocketError'\n this.message = message || 'Socket error'\n this.code = 'UND_ERR_SOCKET'\n this.socket = socket\n }\n}\n\nclass NotSupportedError extends UndiciError {\n constructor (message) {\n super(message)\n Error.captureStackTrace(this, NotSupportedError)\n this.name = 'NotSupportedError'\n this.message = message || 'Not supported error'\n this.code = 'UND_ERR_NOT_SUPPORTED'\n }\n}\n\nclass BalancedPoolMissingUpstreamError extends UndiciError {\n constructor (message) {\n super(message)\n Error.captureStackTrace(this, NotSupportedError)\n this.name = 'MissingUpstreamError'\n this.message = message || 'No upstream has been added to the BalancedPool'\n this.code = 'UND_ERR_BPL_MISSING_UPSTREAM'\n }\n}\n\nclass HTTPParserError extends Error {\n constructor (message, code, data) {\n super(message)\n Error.captureStackTrace(this, HTTPParserError)\n this.name = 'HTTPParserError'\n this.code = code ? `HPE_${code}` : undefined\n this.data = data ? data.toString() : undefined\n }\n}\n\nclass ResponseExceededMaxSizeError extends UndiciError {\n constructor (message) {\n super(message)\n Error.captureStackTrace(this, ResponseExceededMaxSizeError)\n this.name = 'ResponseExceededMaxSizeError'\n this.message = message || 'Response content exceeded max size'\n this.code = 'UND_ERR_RES_EXCEEDED_MAX_SIZE'\n }\n}\n\nclass RequestRetryError extends UndiciError {\n constructor (message, code, { headers, data }) {\n super(message)\n Error.captureStackTrace(this, RequestRetryError)\n this.name = 'RequestRetryError'\n this.message = message || 'Request retry error'\n this.code = 'UND_ERR_REQ_RETRY'\n this.statusCode = code\n this.data = data\n this.headers = headers\n }\n}\n\nmodule.exports = {\n HTTPParserError,\n UndiciError,\n HeadersTimeoutError,\n HeadersOverflowError,\n BodyTimeoutError,\n RequestContentLengthMismatchError,\n ConnectTimeoutError,\n ResponseStatusCodeError,\n InvalidArgumentError,\n InvalidReturnValueError,\n RequestAbortedError,\n ClientDestroyedError,\n ClientClosedError,\n InformationalError,\n SocketError,\n NotSupportedError,\n ResponseContentLengthMismatchError,\n BalancedPoolMissingUpstreamError,\n ResponseExceededMaxSizeError,\n RequestRetryError\n}\n","'use strict'\n\n/** @type {Record} */\nconst headerNameLowerCasedRecord = {}\n\n// https://developer.mozilla.org/docs/Web/HTTP/Headers\nconst wellknownHeaderNames = [\n 'Accept',\n 'Accept-Encoding',\n 'Accept-Language',\n 'Accept-Ranges',\n 'Access-Control-Allow-Credentials',\n 'Access-Control-Allow-Headers',\n 'Access-Control-Allow-Methods',\n 'Access-Control-Allow-Origin',\n 'Access-Control-Expose-Headers',\n 'Access-Control-Max-Age',\n 'Access-Control-Request-Headers',\n 'Access-Control-Request-Method',\n 'Age',\n 'Allow',\n 'Alt-Svc',\n 'Alt-Used',\n 'Authorization',\n 'Cache-Control',\n 'Clear-Site-Data',\n 'Connection',\n 'Content-Disposition',\n 'Content-Encoding',\n 'Content-Language',\n 'Content-Length',\n 'Content-Location',\n 'Content-Range',\n 'Content-Security-Policy',\n 'Content-Security-Policy-Report-Only',\n 'Content-Type',\n 'Cookie',\n 'Cross-Origin-Embedder-Policy',\n 'Cross-Origin-Opener-Policy',\n 'Cross-Origin-Resource-Policy',\n 'Date',\n 'Device-Memory',\n 'Downlink',\n 'ECT',\n 'ETag',\n 'Expect',\n 'Expect-CT',\n 'Expires',\n 'Forwarded',\n 'From',\n 'Host',\n 'If-Match',\n 'If-Modified-Since',\n 'If-None-Match',\n 'If-Range',\n 'If-Unmodified-Since',\n 'Keep-Alive',\n 'Last-Modified',\n 'Link',\n 'Location',\n 'Max-Forwards',\n 'Origin',\n 'Permissions-Policy',\n 'Pragma',\n 'Proxy-Authenticate',\n 'Proxy-Authorization',\n 'RTT',\n 'Range',\n 'Referer',\n 'Referrer-Policy',\n 'Refresh',\n 'Retry-After',\n 'Sec-WebSocket-Accept',\n 'Sec-WebSocket-Extensions',\n 'Sec-WebSocket-Key',\n 'Sec-WebSocket-Protocol',\n 'Sec-WebSocket-Version',\n 'Server',\n 'Server-Timing',\n 'Service-Worker-Allowed',\n 'Service-Worker-Navigation-Preload',\n 'Set-Cookie',\n 'SourceMap',\n 'Strict-Transport-Security',\n 'Supports-Loading-Mode',\n 'TE',\n 'Timing-Allow-Origin',\n 'Trailer',\n 'Transfer-Encoding',\n 'Upgrade',\n 'Upgrade-Insecure-Requests',\n 'User-Agent',\n 'Vary',\n 'Via',\n 'WWW-Authenticate',\n 'X-Content-Type-Options',\n 'X-DNS-Prefetch-Control',\n 'X-Frame-Options',\n 'X-Permitted-Cross-Domain-Policies',\n 'X-Powered-By',\n 'X-Requested-With',\n 'X-XSS-Protection'\n]\n\nfor (let i = 0; i < wellknownHeaderNames.length; ++i) {\n const key = wellknownHeaderNames[i]\n const lowerCasedKey = key.toLowerCase()\n headerNameLowerCasedRecord[key] = headerNameLowerCasedRecord[lowerCasedKey] =\n lowerCasedKey\n}\n\n// Note: object prototypes should not be able to be referenced. e.g. `Object#hasOwnProperty`.\nObject.setPrototypeOf(headerNameLowerCasedRecord, null)\n\nmodule.exports = {\n wellknownHeaderNames,\n headerNameLowerCasedRecord\n}\n","'use strict'\n\nconst assert = require('assert')\nconst { kDestroyed, kBodyUsed } = require('./symbols')\nconst { IncomingMessage } = require('http')\nconst stream = require('stream')\nconst net = require('net')\nconst { InvalidArgumentError } = require('./errors')\nconst { Blob } = require('buffer')\nconst nodeUtil = require('util')\nconst { stringify } = require('querystring')\nconst { headerNameLowerCasedRecord } = require('./constants')\n\nconst [nodeMajor, nodeMinor] = process.versions.node.split('.').map(v => Number(v))\n\nfunction nop () {}\n\nfunction isStream (obj) {\n return obj && typeof obj === 'object' && typeof obj.pipe === 'function' && typeof obj.on === 'function'\n}\n\n// based on https://github.com/node-fetch/fetch-blob/blob/8ab587d34080de94140b54f07168451e7d0b655e/index.js#L229-L241 (MIT License)\nfunction isBlobLike (object) {\n return (Blob && object instanceof Blob) || (\n object &&\n typeof object === 'object' &&\n (typeof object.stream === 'function' ||\n typeof object.arrayBuffer === 'function') &&\n /^(Blob|File)$/.test(object[Symbol.toStringTag])\n )\n}\n\nfunction buildURL (url, queryParams) {\n if (url.includes('?') || url.includes('#')) {\n throw new Error('Query params cannot be passed when url already contains \"?\" or \"#\".')\n }\n\n const stringified = stringify(queryParams)\n\n if (stringified) {\n url += '?' + stringified\n }\n\n return url\n}\n\nfunction parseURL (url) {\n if (typeof url === 'string') {\n url = new URL(url)\n\n if (!/^https?:/.test(url.origin || url.protocol)) {\n throw new InvalidArgumentError('Invalid URL protocol: the URL must start with `http:` or `https:`.')\n }\n\n return url\n }\n\n if (!url || typeof url !== 'object') {\n throw new InvalidArgumentError('Invalid URL: The URL argument must be a non-null object.')\n }\n\n if (!/^https?:/.test(url.origin || url.protocol)) {\n throw new InvalidArgumentError('Invalid URL protocol: the URL must start with `http:` or `https:`.')\n }\n\n if (!(url instanceof URL)) {\n if (url.port != null && url.port !== '' && !Number.isFinite(parseInt(url.port))) {\n throw new InvalidArgumentError('Invalid URL: port must be a valid integer or a string representation of an integer.')\n }\n\n if (url.path != null && typeof url.path !== 'string') {\n throw new InvalidArgumentError('Invalid URL path: the path must be a string or null/undefined.')\n }\n\n if (url.pathname != null && typeof url.pathname !== 'string') {\n throw new InvalidArgumentError('Invalid URL pathname: the pathname must be a string or null/undefined.')\n }\n\n if (url.hostname != null && typeof url.hostname !== 'string') {\n throw new InvalidArgumentError('Invalid URL hostname: the hostname must be a string or null/undefined.')\n }\n\n if (url.origin != null && typeof url.origin !== 'string') {\n throw new InvalidArgumentError('Invalid URL origin: the origin must be a string or null/undefined.')\n }\n\n const port = url.port != null\n ? url.port\n : (url.protocol === 'https:' ? 443 : 80)\n let origin = url.origin != null\n ? url.origin\n : `${url.protocol}//${url.hostname}:${port}`\n let path = url.path != null\n ? url.path\n : `${url.pathname || ''}${url.search || ''}`\n\n if (origin.endsWith('/')) {\n origin = origin.substring(0, origin.length - 1)\n }\n\n if (path && !path.startsWith('/')) {\n path = `/${path}`\n }\n // new URL(path, origin) is unsafe when `path` contains an absolute URL\n // From https://developer.mozilla.org/en-US/docs/Web/API/URL/URL:\n // If first parameter is a relative URL, second param is required, and will be used as the base URL.\n // If first parameter is an absolute URL, a given second param will be ignored.\n url = new URL(origin + path)\n }\n\n return url\n}\n\nfunction parseOrigin (url) {\n url = parseURL(url)\n\n if (url.pathname !== '/' || url.search || url.hash) {\n throw new InvalidArgumentError('invalid url')\n }\n\n return url\n}\n\nfunction getHostname (host) {\n if (host[0] === '[') {\n const idx = host.indexOf(']')\n\n assert(idx !== -1)\n return host.substring(1, idx)\n }\n\n const idx = host.indexOf(':')\n if (idx === -1) return host\n\n return host.substring(0, idx)\n}\n\n// IP addresses are not valid server names per RFC6066\n// > Currently, the only server names supported are DNS hostnames\nfunction getServerName (host) {\n if (!host) {\n return null\n }\n\n assert.strictEqual(typeof host, 'string')\n\n const servername = getHostname(host)\n if (net.isIP(servername)) {\n return ''\n }\n\n return servername\n}\n\nfunction deepClone (obj) {\n return JSON.parse(JSON.stringify(obj))\n}\n\nfunction isAsyncIterable (obj) {\n return !!(obj != null && typeof obj[Symbol.asyncIterator] === 'function')\n}\n\nfunction isIterable (obj) {\n return !!(obj != null && (typeof obj[Symbol.iterator] === 'function' || typeof obj[Symbol.asyncIterator] === 'function'))\n}\n\nfunction bodyLength (body) {\n if (body == null) {\n return 0\n } else if (isStream(body)) {\n const state = body._readableState\n return state && state.objectMode === false && state.ended === true && Number.isFinite(state.length)\n ? state.length\n : null\n } else if (isBlobLike(body)) {\n return body.size != null ? body.size : null\n } else if (isBuffer(body)) {\n return body.byteLength\n }\n\n return null\n}\n\nfunction isDestroyed (stream) {\n return !stream || !!(stream.destroyed || stream[kDestroyed])\n}\n\nfunction isReadableAborted (stream) {\n const state = stream && stream._readableState\n return isDestroyed(stream) && state && !state.endEmitted\n}\n\nfunction destroy (stream, err) {\n if (stream == null || !isStream(stream) || isDestroyed(stream)) {\n return\n }\n\n if (typeof stream.destroy === 'function') {\n if (Object.getPrototypeOf(stream).constructor === IncomingMessage) {\n // See: https://github.com/nodejs/node/pull/38505/files\n stream.socket = null\n }\n\n stream.destroy(err)\n } else if (err) {\n process.nextTick((stream, err) => {\n stream.emit('error', err)\n }, stream, err)\n }\n\n if (stream.destroyed !== true) {\n stream[kDestroyed] = true\n }\n}\n\nconst KEEPALIVE_TIMEOUT_EXPR = /timeout=(\\d+)/\nfunction parseKeepAliveTimeout (val) {\n const m = val.toString().match(KEEPALIVE_TIMEOUT_EXPR)\n return m ? parseInt(m[1], 10) * 1000 : null\n}\n\n/**\n * Retrieves a header name and returns its lowercase value.\n * @param {string | Buffer} value Header name\n * @returns {string}\n */\nfunction headerNameToString (value) {\n return headerNameLowerCasedRecord[value] || value.toLowerCase()\n}\n\nfunction parseHeaders (headers, obj = {}) {\n // For H2 support\n if (!Array.isArray(headers)) return headers\n\n for (let i = 0; i < headers.length; i += 2) {\n const key = headers[i].toString().toLowerCase()\n let val = obj[key]\n\n if (!val) {\n if (Array.isArray(headers[i + 1])) {\n obj[key] = headers[i + 1].map(x => x.toString('utf8'))\n } else {\n obj[key] = headers[i + 1].toString('utf8')\n }\n } else {\n if (!Array.isArray(val)) {\n val = [val]\n obj[key] = val\n }\n val.push(headers[i + 1].toString('utf8'))\n }\n }\n\n // See https://github.com/nodejs/node/pull/46528\n if ('content-length' in obj && 'content-disposition' in obj) {\n obj['content-disposition'] = Buffer.from(obj['content-disposition']).toString('latin1')\n }\n\n return obj\n}\n\nfunction parseRawHeaders (headers) {\n const ret = []\n let hasContentLength = false\n let contentDispositionIdx = -1\n\n for (let n = 0; n < headers.length; n += 2) {\n const key = headers[n + 0].toString()\n const val = headers[n + 1].toString('utf8')\n\n if (key.length === 14 && (key === 'content-length' || key.toLowerCase() === 'content-length')) {\n ret.push(key, val)\n hasContentLength = true\n } else if (key.length === 19 && (key === 'content-disposition' || key.toLowerCase() === 'content-disposition')) {\n contentDispositionIdx = ret.push(key, val) - 1\n } else {\n ret.push(key, val)\n }\n }\n\n // See https://github.com/nodejs/node/pull/46528\n if (hasContentLength && contentDispositionIdx !== -1) {\n ret[contentDispositionIdx] = Buffer.from(ret[contentDispositionIdx]).toString('latin1')\n }\n\n return ret\n}\n\nfunction isBuffer (buffer) {\n // See, https://github.com/mcollina/undici/pull/319\n return buffer instanceof Uint8Array || Buffer.isBuffer(buffer)\n}\n\nfunction validateHandler (handler, method, upgrade) {\n if (!handler || typeof handler !== 'object') {\n throw new InvalidArgumentError('handler must be an object')\n }\n\n if (typeof handler.onConnect !== 'function') {\n throw new InvalidArgumentError('invalid onConnect method')\n }\n\n if (typeof handler.onError !== 'function') {\n throw new InvalidArgumentError('invalid onError method')\n }\n\n if (typeof handler.onBodySent !== 'function' && handler.onBodySent !== undefined) {\n throw new InvalidArgumentError('invalid onBodySent method')\n }\n\n if (upgrade || method === 'CONNECT') {\n if (typeof handler.onUpgrade !== 'function') {\n throw new InvalidArgumentError('invalid onUpgrade method')\n }\n } else {\n if (typeof handler.onHeaders !== 'function') {\n throw new InvalidArgumentError('invalid onHeaders method')\n }\n\n if (typeof handler.onData !== 'function') {\n throw new InvalidArgumentError('invalid onData method')\n }\n\n if (typeof handler.onComplete !== 'function') {\n throw new InvalidArgumentError('invalid onComplete method')\n }\n }\n}\n\n// A body is disturbed if it has been read from and it cannot\n// be re-used without losing state or data.\nfunction isDisturbed (body) {\n return !!(body && (\n stream.isDisturbed\n ? stream.isDisturbed(body) || body[kBodyUsed] // TODO (fix): Why is body[kBodyUsed] needed?\n : body[kBodyUsed] ||\n body.readableDidRead ||\n (body._readableState && body._readableState.dataEmitted) ||\n isReadableAborted(body)\n ))\n}\n\nfunction isErrored (body) {\n return !!(body && (\n stream.isErrored\n ? stream.isErrored(body)\n : /state: 'errored'/.test(nodeUtil.inspect(body)\n )))\n}\n\nfunction isReadable (body) {\n return !!(body && (\n stream.isReadable\n ? stream.isReadable(body)\n : /state: 'readable'/.test(nodeUtil.inspect(body)\n )))\n}\n\nfunction getSocketInfo (socket) {\n return {\n localAddress: socket.localAddress,\n localPort: socket.localPort,\n remoteAddress: socket.remoteAddress,\n remotePort: socket.remotePort,\n remoteFamily: socket.remoteFamily,\n timeout: socket.timeout,\n bytesWritten: socket.bytesWritten,\n bytesRead: socket.bytesRead\n }\n}\n\nasync function * convertIterableToBuffer (iterable) {\n for await (const chunk of iterable) {\n yield Buffer.isBuffer(chunk) ? chunk : Buffer.from(chunk)\n }\n}\n\nlet ReadableStream\nfunction ReadableStreamFrom (iterable) {\n if (!ReadableStream) {\n ReadableStream = require('stream/web').ReadableStream\n }\n\n if (ReadableStream.from) {\n return ReadableStream.from(convertIterableToBuffer(iterable))\n }\n\n let iterator\n return new ReadableStream(\n {\n async start () {\n iterator = iterable[Symbol.asyncIterator]()\n },\n async pull (controller) {\n const { done, value } = await iterator.next()\n if (done) {\n queueMicrotask(() => {\n controller.close()\n })\n } else {\n const buf = Buffer.isBuffer(value) ? value : Buffer.from(value)\n controller.enqueue(new Uint8Array(buf))\n }\n return controller.desiredSize > 0\n },\n async cancel (reason) {\n await iterator.return()\n }\n },\n 0\n )\n}\n\n// The chunk should be a FormData instance and contains\n// all the required methods.\nfunction isFormDataLike (object) {\n return (\n object &&\n typeof object === 'object' &&\n typeof object.append === 'function' &&\n typeof object.delete === 'function' &&\n typeof object.get === 'function' &&\n typeof object.getAll === 'function' &&\n typeof object.has === 'function' &&\n typeof object.set === 'function' &&\n object[Symbol.toStringTag] === 'FormData'\n )\n}\n\nfunction throwIfAborted (signal) {\n if (!signal) { return }\n if (typeof signal.throwIfAborted === 'function') {\n signal.throwIfAborted()\n } else {\n if (signal.aborted) {\n // DOMException not available < v17.0.0\n const err = new Error('The operation was aborted')\n err.name = 'AbortError'\n throw err\n }\n }\n}\n\nfunction addAbortListener (signal, listener) {\n if ('addEventListener' in signal) {\n signal.addEventListener('abort', listener, { once: true })\n return () => signal.removeEventListener('abort', listener)\n }\n signal.addListener('abort', listener)\n return () => signal.removeListener('abort', listener)\n}\n\nconst hasToWellFormed = !!String.prototype.toWellFormed\n\n/**\n * @param {string} val\n */\nfunction toUSVString (val) {\n if (hasToWellFormed) {\n return `${val}`.toWellFormed()\n } else if (nodeUtil.toUSVString) {\n return nodeUtil.toUSVString(val)\n }\n\n return `${val}`\n}\n\n// Parsed accordingly to RFC 9110\n// https://www.rfc-editor.org/rfc/rfc9110#field.content-range\nfunction parseRangeHeader (range) {\n if (range == null || range === '') return { start: 0, end: null, size: null }\n\n const m = range ? range.match(/^bytes (\\d+)-(\\d+)\\/(\\d+)?$/) : null\n return m\n ? {\n start: parseInt(m[1]),\n end: m[2] ? parseInt(m[2]) : null,\n size: m[3] ? parseInt(m[3]) : null\n }\n : null\n}\n\nconst kEnumerableProperty = Object.create(null)\nkEnumerableProperty.enumerable = true\n\nmodule.exports = {\n kEnumerableProperty,\n nop,\n isDisturbed,\n isErrored,\n isReadable,\n toUSVString,\n isReadableAborted,\n isBlobLike,\n parseOrigin,\n parseURL,\n getServerName,\n isStream,\n isIterable,\n isAsyncIterable,\n isDestroyed,\n headerNameToString,\n parseRawHeaders,\n parseHeaders,\n parseKeepAliveTimeout,\n destroy,\n bodyLength,\n deepClone,\n ReadableStreamFrom,\n isBuffer,\n validateHandler,\n getSocketInfo,\n isFormDataLike,\n buildURL,\n throwIfAborted,\n addAbortListener,\n parseRangeHeader,\n nodeMajor,\n nodeMinor,\n nodeHasAutoSelectFamily: nodeMajor > 18 || (nodeMajor === 18 && nodeMinor >= 13),\n safeHTTPMethods: ['GET', 'HEAD', 'OPTIONS', 'TRACE']\n}\n","'use strict'\n\nlet fastNow = Date.now()\nlet fastNowTimeout\n\nconst fastTimers = []\n\nfunction onTimeout () {\n fastNow = Date.now()\n\n let len = fastTimers.length\n let idx = 0\n while (idx < len) {\n const timer = fastTimers[idx]\n\n if (timer.state === 0) {\n timer.state = fastNow + timer.delay\n } else if (timer.state > 0 && fastNow >= timer.state) {\n timer.state = -1\n timer.callback(timer.opaque)\n }\n\n if (timer.state === -1) {\n timer.state = -2\n if (idx !== len - 1) {\n fastTimers[idx] = fastTimers.pop()\n } else {\n fastTimers.pop()\n }\n len -= 1\n } else {\n idx += 1\n }\n }\n\n if (fastTimers.length > 0) {\n refreshTimeout()\n }\n}\n\nfunction refreshTimeout () {\n if (fastNowTimeout && fastNowTimeout.refresh) {\n fastNowTimeout.refresh()\n } else {\n clearTimeout(fastNowTimeout)\n fastNowTimeout = setTimeout(onTimeout, 1e3)\n if (fastNowTimeout.unref) {\n fastNowTimeout.unref()\n }\n }\n}\n\nclass Timeout {\n constructor (callback, delay, opaque) {\n this.callback = callback\n this.delay = delay\n this.opaque = opaque\n\n // -2 not in timer list\n // -1 in timer list but inactive\n // 0 in timer list waiting for time\n // > 0 in timer list waiting for time to expire\n this.state = -2\n\n this.refresh()\n }\n\n refresh () {\n if (this.state === -2) {\n fastTimers.push(this)\n if (!fastNowTimeout || fastTimers.length === 1) {\n refreshTimeout()\n }\n }\n\n this.state = 0\n }\n\n clear () {\n this.state = -1\n }\n}\n\nmodule.exports = {\n setTimeout (callback, delay, opaque) {\n return delay < 1e3\n ? setTimeout(callback, delay, opaque)\n : new Timeout(callback, delay, opaque)\n },\n clearTimeout (timeout) {\n if (timeout instanceof Timeout) {\n timeout.clear()\n } else {\n clearTimeout(timeout)\n }\n }\n}\n","'use strict'\n\n/**\n * Copyright Brian White. All rights reserved.\n *\n * @see https://github.com/mscdex/streamsearch\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n *\n * Based heavily on the Streaming Boyer-Moore-Horspool C++ implementation\n * by Hongli Lai at: https://github.com/FooBarWidget/boyer-moore-horspool\n */\nconst EventEmitter = require('node:events').EventEmitter\nconst inherits = require('node:util').inherits\n\nfunction SBMH (needle) {\n if (typeof needle === 'string') {\n needle = Buffer.from(needle)\n }\n\n if (!Buffer.isBuffer(needle)) {\n throw new TypeError('The needle has to be a String or a Buffer.')\n }\n\n const needleLength = needle.length\n\n if (needleLength === 0) {\n throw new Error('The needle cannot be an empty String/Buffer.')\n }\n\n if (needleLength > 256) {\n throw new Error('The needle cannot have a length bigger than 256.')\n }\n\n this.maxMatches = Infinity\n this.matches = 0\n\n this._occ = new Array(256)\n .fill(needleLength) // Initialize occurrence table.\n this._lookbehind_size = 0\n this._needle = needle\n this._bufpos = 0\n\n this._lookbehind = Buffer.alloc(needleLength)\n\n // Populate occurrence table with analysis of the needle,\n // ignoring last letter.\n for (var i = 0; i < needleLength - 1; ++i) { // eslint-disable-line no-var\n this._occ[needle[i]] = needleLength - 1 - i\n }\n}\ninherits(SBMH, EventEmitter)\n\nSBMH.prototype.reset = function () {\n this._lookbehind_size = 0\n this.matches = 0\n this._bufpos = 0\n}\n\nSBMH.prototype.push = function (chunk, pos) {\n if (!Buffer.isBuffer(chunk)) {\n chunk = Buffer.from(chunk, 'binary')\n }\n const chlen = chunk.length\n this._bufpos = pos || 0\n let r\n while (r !== chlen && this.matches < this.maxMatches) { r = this._sbmh_feed(chunk) }\n return r\n}\n\nSBMH.prototype._sbmh_feed = function (data) {\n const len = data.length\n const needle = this._needle\n const needleLength = needle.length\n const lastNeedleChar = needle[needleLength - 1]\n\n // Positive: points to a position in `data`\n // pos == 3 points to data[3]\n // Negative: points to a position in the lookbehind buffer\n // pos == -2 points to lookbehind[lookbehind_size - 2]\n let pos = -this._lookbehind_size\n let ch\n\n if (pos < 0) {\n // Lookbehind buffer is not empty. Perform Boyer-Moore-Horspool\n // search with character lookup code that considers both the\n // lookbehind buffer and the current round's haystack data.\n //\n // Loop until\n // there is a match.\n // or until\n // we've moved past the position that requires the\n // lookbehind buffer. In this case we switch to the\n // optimized loop.\n // or until\n // the character to look at lies outside the haystack.\n while (pos < 0 && pos <= len - needleLength) {\n ch = this._sbmh_lookup_char(data, pos + needleLength - 1)\n\n if (\n ch === lastNeedleChar &&\n this._sbmh_memcmp(data, pos, needleLength - 1)\n ) {\n this._lookbehind_size = 0\n ++this.matches\n this.emit('info', true)\n\n return (this._bufpos = pos + needleLength)\n }\n pos += this._occ[ch]\n }\n\n // No match.\n\n if (pos < 0) {\n // There's too few data for Boyer-Moore-Horspool to run,\n // so let's use a different algorithm to skip as much as\n // we can.\n // Forward pos until\n // the trailing part of lookbehind + data\n // looks like the beginning of the needle\n // or until\n // pos == 0\n while (pos < 0 && !this._sbmh_memcmp(data, pos, len - pos)) { ++pos }\n }\n\n if (pos >= 0) {\n // Discard lookbehind buffer.\n this.emit('info', false, this._lookbehind, 0, this._lookbehind_size)\n this._lookbehind_size = 0\n } else {\n // Cut off part of the lookbehind buffer that has\n // been processed and append the entire haystack\n // into it.\n const bytesToCutOff = this._lookbehind_size + pos\n if (bytesToCutOff > 0) {\n // The cut off data is guaranteed not to contain the needle.\n this.emit('info', false, this._lookbehind, 0, bytesToCutOff)\n }\n\n this._lookbehind.copy(this._lookbehind, 0, bytesToCutOff,\n this._lookbehind_size - bytesToCutOff)\n this._lookbehind_size -= bytesToCutOff\n\n data.copy(this._lookbehind, this._lookbehind_size)\n this._lookbehind_size += len\n\n this._bufpos = len\n return len\n }\n }\n\n pos += (pos >= 0) * this._bufpos\n\n // Lookbehind buffer is now empty. We only need to check if the\n // needle is in the haystack.\n if (data.indexOf(needle, pos) !== -1) {\n pos = data.indexOf(needle, pos)\n ++this.matches\n if (pos > 0) { this.emit('info', true, data, this._bufpos, pos) } else { this.emit('info', true) }\n\n return (this._bufpos = pos + needleLength)\n } else {\n pos = len - needleLength\n }\n\n // There was no match. If there's trailing haystack data that we cannot\n // match yet using the Boyer-Moore-Horspool algorithm (because the trailing\n // data is less than the needle size) then match using a modified\n // algorithm that starts matching from the beginning instead of the end.\n // Whatever trailing data is left after running this algorithm is added to\n // the lookbehind buffer.\n while (\n pos < len &&\n (\n data[pos] !== needle[0] ||\n (\n (Buffer.compare(\n data.subarray(pos, pos + len - pos),\n needle.subarray(0, len - pos)\n ) !== 0)\n )\n )\n ) {\n ++pos\n }\n if (pos < len) {\n data.copy(this._lookbehind, 0, pos, pos + (len - pos))\n this._lookbehind_size = len - pos\n }\n\n // Everything until pos is guaranteed not to contain needle data.\n if (pos > 0) { this.emit('info', false, data, this._bufpos, pos < len ? pos : len) }\n\n this._bufpos = len\n return len\n}\n\nSBMH.prototype._sbmh_lookup_char = function (data, pos) {\n return (pos < 0)\n ? this._lookbehind[this._lookbehind_size + pos]\n : data[pos]\n}\n\nSBMH.prototype._sbmh_memcmp = function (data, pos, len) {\n for (var i = 0; i < len; ++i) { // eslint-disable-line no-var\n if (this._sbmh_lookup_char(data, pos + i) !== this._needle[i]) { return false }\n }\n return true\n}\n\nmodule.exports = SBMH\n","'use strict'\n\nconst inherits = require('node:util').inherits\nconst ReadableStream = require('node:stream').Readable\n\nfunction PartStream (opts) {\n ReadableStream.call(this, opts)\n}\ninherits(PartStream, ReadableStream)\n\nPartStream.prototype._read = function (n) {}\n\nmodule.exports = PartStream\n","'use strict'\n\nmodule.exports = function getLimit (limits, name, defaultLimit) {\n if (\n !limits ||\n limits[name] === undefined ||\n limits[name] === null\n ) { return defaultLimit }\n\n if (\n typeof limits[name] !== 'number' ||\n isNaN(limits[name])\n ) { throw new TypeError('Limit ' + name + ' is not a valid number') }\n\n return limits[name]\n}\n","'use strict'\n\nconst EventEmitter = require('node:events').EventEmitter\nconst inherits = require('node:util').inherits\nconst getLimit = require('../../../lib/utils/getLimit')\n\nconst StreamSearch = require('../../streamsearch/sbmh')\n\nconst B_DCRLF = Buffer.from('\\r\\n\\r\\n')\nconst RE_CRLF = /\\r\\n/g\nconst RE_HDR = /^([^:]+):[ \\t]?([\\x00-\\xFF]+)?$/ // eslint-disable-line no-control-regex\n\nfunction HeaderParser (cfg) {\n EventEmitter.call(this)\n\n cfg = cfg || {}\n const self = this\n this.nread = 0\n this.maxed = false\n this.npairs = 0\n this.maxHeaderPairs = getLimit(cfg, 'maxHeaderPairs', 2000)\n this.maxHeaderSize = getLimit(cfg, 'maxHeaderSize', 80 * 1024)\n this.buffer = ''\n this.header = {}\n this.finished = false\n this.ss = new StreamSearch(B_DCRLF)\n this.ss.on('info', function (isMatch, data, start, end) {\n if (data && !self.maxed) {\n if (self.nread + end - start >= self.maxHeaderSize) {\n end = self.maxHeaderSize - self.nread + start\n self.nread = self.maxHeaderSize\n self.maxed = true\n } else { self.nread += (end - start) }\n\n self.buffer += data.toString('binary', start, end)\n }\n if (isMatch) { self._finish() }\n })\n}\ninherits(HeaderParser, EventEmitter)\n\nHeaderParser.prototype.push = function (data) {\n const r = this.ss.push(data)\n if (this.finished) { return r }\n}\n\nHeaderParser.prototype.reset = function () {\n this.finished = false\n this.buffer = ''\n this.header = {}\n this.ss.reset()\n}\n\nHeaderParser.prototype._finish = function () {\n if (this.buffer) { this._parseHeader() }\n this.ss.matches = this.ss.maxMatches\n const header = this.header\n this.header = {}\n this.buffer = ''\n this.finished = true\n this.nread = this.npairs = 0\n this.maxed = false\n this.emit('header', header)\n}\n\nHeaderParser.prototype._parseHeader = function () {\n if (this.npairs === this.maxHeaderPairs) { return }\n\n const lines = this.buffer.split(RE_CRLF)\n const len = lines.length\n let m, h\n\n for (var i = 0; i < len; ++i) { // eslint-disable-line no-var\n if (lines[i].length === 0) { continue }\n if (lines[i][0] === '\\t' || lines[i][0] === ' ') {\n // folded header content\n // RFC2822 says to just remove the CRLF and not the whitespace following\n // it, so we follow the RFC and include the leading whitespace ...\n if (h) {\n this.header[h][this.header[h].length - 1] += lines[i]\n continue\n }\n }\n\n const posColon = lines[i].indexOf(':')\n if (\n posColon === -1 ||\n posColon === 0\n ) {\n return\n }\n m = RE_HDR.exec(lines[i])\n h = m[1].toLowerCase()\n this.header[h] = this.header[h] || []\n this.header[h].push((m[2] || ''))\n if (++this.npairs === this.maxHeaderPairs) { break }\n }\n}\n\nmodule.exports = HeaderParser\n","'use strict'\n\nconst WritableStream = require('node:stream').Writable\nconst inherits = require('node:util').inherits\n\nconst StreamSearch = require('../../streamsearch/sbmh')\n\nconst PartStream = require('./PartStream')\nconst HeaderParser = require('./HeaderParser')\n\nconst DASH = 45\nconst B_ONEDASH = Buffer.from('-')\nconst B_CRLF = Buffer.from('\\r\\n')\nconst EMPTY_FN = function () {}\n\nfunction Dicer (cfg) {\n if (!(this instanceof Dicer)) { return new Dicer(cfg) }\n WritableStream.call(this, cfg)\n\n if (!cfg || (!cfg.headerFirst && typeof cfg.boundary !== 'string')) { throw new TypeError('Boundary required') }\n\n if (typeof cfg.boundary === 'string') { this.setBoundary(cfg.boundary) } else { this._bparser = undefined }\n\n this._headerFirst = cfg.headerFirst\n\n this._dashes = 0\n this._parts = 0\n this._finished = false\n this._realFinish = false\n this._isPreamble = true\n this._justMatched = false\n this._firstWrite = true\n this._inHeader = true\n this._part = undefined\n this._cb = undefined\n this._ignoreData = false\n this._partOpts = { highWaterMark: cfg.partHwm }\n this._pause = false\n\n const self = this\n this._hparser = new HeaderParser(cfg)\n this._hparser.on('header', function (header) {\n self._inHeader = false\n self._part.emit('header', header)\n })\n}\ninherits(Dicer, WritableStream)\n\nDicer.prototype.emit = function (ev) {\n if (ev === 'finish' && !this._realFinish) {\n if (!this._finished) {\n const self = this\n process.nextTick(function () {\n self.emit('error', new Error('Unexpected end of multipart data'))\n if (self._part && !self._ignoreData) {\n const type = (self._isPreamble ? 'Preamble' : 'Part')\n self._part.emit('error', new Error(type + ' terminated early due to unexpected end of multipart data'))\n self._part.push(null)\n process.nextTick(function () {\n self._realFinish = true\n self.emit('finish')\n self._realFinish = false\n })\n return\n }\n self._realFinish = true\n self.emit('finish')\n self._realFinish = false\n })\n }\n } else { WritableStream.prototype.emit.apply(this, arguments) }\n}\n\nDicer.prototype._write = function (data, encoding, cb) {\n // ignore unexpected data (e.g. extra trailer data after finished)\n if (!this._hparser && !this._bparser) { return cb() }\n\n if (this._headerFirst && this._isPreamble) {\n if (!this._part) {\n this._part = new PartStream(this._partOpts)\n if (this.listenerCount('preamble') !== 0) { this.emit('preamble', this._part) } else { this._ignore() }\n }\n const r = this._hparser.push(data)\n if (!this._inHeader && r !== undefined && r < data.length) { data = data.slice(r) } else { return cb() }\n }\n\n // allows for \"easier\" testing\n if (this._firstWrite) {\n this._bparser.push(B_CRLF)\n this._firstWrite = false\n }\n\n this._bparser.push(data)\n\n if (this._pause) { this._cb = cb } else { cb() }\n}\n\nDicer.prototype.reset = function () {\n this._part = undefined\n this._bparser = undefined\n this._hparser = undefined\n}\n\nDicer.prototype.setBoundary = function (boundary) {\n const self = this\n this._bparser = new StreamSearch('\\r\\n--' + boundary)\n this._bparser.on('info', function (isMatch, data, start, end) {\n self._oninfo(isMatch, data, start, end)\n })\n}\n\nDicer.prototype._ignore = function () {\n if (this._part && !this._ignoreData) {\n this._ignoreData = true\n this._part.on('error', EMPTY_FN)\n // we must perform some kind of read on the stream even though we are\n // ignoring the data, otherwise node's Readable stream will not emit 'end'\n // after pushing null to the stream\n this._part.resume()\n }\n}\n\nDicer.prototype._oninfo = function (isMatch, data, start, end) {\n let buf; const self = this; let i = 0; let r; let shouldWriteMore = true\n\n if (!this._part && this._justMatched && data) {\n while (this._dashes < 2 && (start + i) < end) {\n if (data[start + i] === DASH) {\n ++i\n ++this._dashes\n } else {\n if (this._dashes) { buf = B_ONEDASH }\n this._dashes = 0\n break\n }\n }\n if (this._dashes === 2) {\n if ((start + i) < end && this.listenerCount('trailer') !== 0) { this.emit('trailer', data.slice(start + i, end)) }\n this.reset()\n this._finished = true\n // no more parts will be added\n if (self._parts === 0) {\n self._realFinish = true\n self.emit('finish')\n self._realFinish = false\n }\n }\n if (this._dashes) { return }\n }\n if (this._justMatched) { this._justMatched = false }\n if (!this._part) {\n this._part = new PartStream(this._partOpts)\n this._part._read = function (n) {\n self._unpause()\n }\n if (this._isPreamble && this.listenerCount('preamble') !== 0) {\n this.emit('preamble', this._part)\n } else if (this._isPreamble !== true && this.listenerCount('part') !== 0) {\n this.emit('part', this._part)\n } else {\n this._ignore()\n }\n if (!this._isPreamble) { this._inHeader = true }\n }\n if (data && start < end && !this._ignoreData) {\n if (this._isPreamble || !this._inHeader) {\n if (buf) { shouldWriteMore = this._part.push(buf) }\n shouldWriteMore = this._part.push(data.slice(start, end))\n if (!shouldWriteMore) { this._pause = true }\n } else if (!this._isPreamble && this._inHeader) {\n if (buf) { this._hparser.push(buf) }\n r = this._hparser.push(data.slice(start, end))\n if (!this._inHeader && r !== undefined && r < end) { this._oninfo(false, data, start + r, end) }\n }\n }\n if (isMatch) {\n this._hparser.reset()\n if (this._isPreamble) { this._isPreamble = false } else {\n if (start !== end) {\n ++this._parts\n this._part.on('end', function () {\n if (--self._parts === 0) {\n if (self._finished) {\n self._realFinish = true\n self.emit('finish')\n self._realFinish = false\n } else {\n self._unpause()\n }\n }\n })\n }\n }\n this._part.push(null)\n this._part = undefined\n this._ignoreData = false\n this._justMatched = true\n this._dashes = 0\n }\n}\n\nDicer.prototype._unpause = function () {\n if (!this._pause) { return }\n\n this._pause = false\n if (this._cb) {\n const cb = this._cb\n this._cb = undefined\n cb()\n }\n}\n\nmodule.exports = Dicer\n","'use strict'\n\n// Node has always utf-8\nconst utf8Decoder = new TextDecoder('utf-8')\nconst textDecoders = new Map([\n ['utf-8', utf8Decoder],\n ['utf8', utf8Decoder]\n])\n\nfunction getDecoder (charset) {\n let lc\n while (true) {\n switch (charset) {\n case 'utf-8':\n case 'utf8':\n return decoders.utf8\n case 'latin1':\n case 'ascii': // TODO: Make these a separate, strict decoder?\n case 'us-ascii':\n case 'iso-8859-1':\n case 'iso8859-1':\n case 'iso88591':\n case 'iso_8859-1':\n case 'windows-1252':\n case 'iso_8859-1:1987':\n case 'cp1252':\n case 'x-cp1252':\n return decoders.latin1\n case 'utf16le':\n case 'utf-16le':\n case 'ucs2':\n case 'ucs-2':\n return decoders.utf16le\n case 'base64':\n return decoders.base64\n default:\n if (lc === undefined) {\n lc = true\n charset = charset.toLowerCase()\n continue\n }\n return decoders.other.bind(charset)\n }\n }\n}\n\nconst decoders = {\n utf8: (data, sourceEncoding) => {\n if (data.length === 0) {\n return ''\n }\n if (typeof data === 'string') {\n data = Buffer.from(data, sourceEncoding)\n }\n return data.utf8Slice(0, data.length)\n },\n\n latin1: (data, sourceEncoding) => {\n if (data.length === 0) {\n return ''\n }\n if (typeof data === 'string') {\n return data\n }\n return data.latin1Slice(0, data.length)\n },\n\n utf16le: (data, sourceEncoding) => {\n if (data.length === 0) {\n return ''\n }\n if (typeof data === 'string') {\n data = Buffer.from(data, sourceEncoding)\n }\n return data.ucs2Slice(0, data.length)\n },\n\n base64: (data, sourceEncoding) => {\n if (data.length === 0) {\n return ''\n }\n if (typeof data === 'string') {\n data = Buffer.from(data, sourceEncoding)\n }\n return data.base64Slice(0, data.length)\n },\n\n other: (data, sourceEncoding) => {\n if (data.length === 0) {\n return ''\n }\n if (typeof data === 'string') {\n data = Buffer.from(data, sourceEncoding)\n }\n\n if (textDecoders.has(this.toString())) {\n try {\n return textDecoders.get(this).decode(data)\n } catch {}\n }\n return typeof data === 'string'\n ? data\n : data.toString()\n }\n}\n\nfunction decodeText (text, sourceEncoding, destEncoding) {\n if (text) {\n return getDecoder(destEncoding)(text, sourceEncoding)\n }\n return text\n}\n\nmodule.exports = decodeText\n","/* eslint-disable object-property-newline */\n'use strict'\n\nconst decodeText = require('./decodeText')\n\nconst RE_ENCODED = /%[a-fA-F0-9][a-fA-F0-9]/g\n\nconst EncodedLookup = {\n '%00': '\\x00', '%01': '\\x01', '%02': '\\x02', '%03': '\\x03', '%04': '\\x04',\n '%05': '\\x05', '%06': '\\x06', '%07': '\\x07', '%08': '\\x08', '%09': '\\x09',\n '%0a': '\\x0a', '%0A': '\\x0a', '%0b': '\\x0b', '%0B': '\\x0b', '%0c': '\\x0c',\n '%0C': '\\x0c', '%0d': '\\x0d', '%0D': '\\x0d', '%0e': '\\x0e', '%0E': '\\x0e',\n '%0f': '\\x0f', '%0F': '\\x0f', '%10': '\\x10', '%11': '\\x11', '%12': '\\x12',\n '%13': '\\x13', '%14': '\\x14', '%15': '\\x15', '%16': '\\x16', '%17': '\\x17',\n '%18': '\\x18', '%19': '\\x19', '%1a': '\\x1a', '%1A': '\\x1a', '%1b': '\\x1b',\n '%1B': '\\x1b', '%1c': '\\x1c', '%1C': '\\x1c', '%1d': '\\x1d', '%1D': '\\x1d',\n '%1e': '\\x1e', '%1E': '\\x1e', '%1f': '\\x1f', '%1F': '\\x1f', '%20': '\\x20',\n '%21': '\\x21', '%22': '\\x22', '%23': '\\x23', '%24': '\\x24', '%25': '\\x25',\n '%26': '\\x26', '%27': '\\x27', '%28': '\\x28', '%29': '\\x29', '%2a': '\\x2a',\n '%2A': '\\x2a', '%2b': '\\x2b', '%2B': '\\x2b', '%2c': '\\x2c', '%2C': '\\x2c',\n '%2d': '\\x2d', '%2D': '\\x2d', '%2e': '\\x2e', '%2E': '\\x2e', '%2f': '\\x2f',\n '%2F': '\\x2f', '%30': '\\x30', '%31': '\\x31', '%32': '\\x32', '%33': '\\x33',\n '%34': '\\x34', '%35': '\\x35', '%36': '\\x36', '%37': '\\x37', '%38': '\\x38',\n '%39': '\\x39', '%3a': '\\x3a', '%3A': '\\x3a', '%3b': '\\x3b', '%3B': '\\x3b',\n '%3c': '\\x3c', '%3C': '\\x3c', '%3d': '\\x3d', '%3D': '\\x3d', '%3e': '\\x3e',\n '%3E': '\\x3e', '%3f': '\\x3f', '%3F': '\\x3f', '%40': '\\x40', '%41': '\\x41',\n '%42': '\\x42', '%43': '\\x43', '%44': '\\x44', '%45': '\\x45', '%46': '\\x46',\n '%47': '\\x47', '%48': '\\x48', '%49': '\\x49', '%4a': '\\x4a', '%4A': '\\x4a',\n '%4b': '\\x4b', '%4B': '\\x4b', '%4c': '\\x4c', '%4C': '\\x4c', '%4d': '\\x4d',\n '%4D': '\\x4d', '%4e': '\\x4e', '%4E': '\\x4e', '%4f': '\\x4f', '%4F': '\\x4f',\n '%50': '\\x50', '%51': '\\x51', '%52': '\\x52', '%53': '\\x53', '%54': '\\x54',\n '%55': '\\x55', '%56': '\\x56', '%57': '\\x57', '%58': '\\x58', '%59': '\\x59',\n '%5a': '\\x5a', '%5A': '\\x5a', '%5b': '\\x5b', '%5B': '\\x5b', '%5c': '\\x5c',\n '%5C': '\\x5c', '%5d': '\\x5d', '%5D': '\\x5d', '%5e': '\\x5e', '%5E': '\\x5e',\n '%5f': '\\x5f', '%5F': '\\x5f', '%60': '\\x60', '%61': '\\x61', '%62': '\\x62',\n '%63': '\\x63', '%64': '\\x64', '%65': '\\x65', '%66': '\\x66', '%67': '\\x67',\n '%68': '\\x68', '%69': '\\x69', '%6a': '\\x6a', '%6A': '\\x6a', '%6b': '\\x6b',\n '%6B': '\\x6b', '%6c': '\\x6c', '%6C': '\\x6c', '%6d': '\\x6d', '%6D': '\\x6d',\n '%6e': '\\x6e', '%6E': '\\x6e', '%6f': '\\x6f', '%6F': '\\x6f', '%70': '\\x70',\n '%71': '\\x71', '%72': '\\x72', '%73': '\\x73', '%74': '\\x74', '%75': '\\x75',\n '%76': '\\x76', '%77': '\\x77', '%78': '\\x78', '%79': '\\x79', '%7a': '\\x7a',\n '%7A': '\\x7a', '%7b': '\\x7b', '%7B': '\\x7b', '%7c': '\\x7c', '%7C': '\\x7c',\n '%7d': '\\x7d', '%7D': '\\x7d', '%7e': '\\x7e', '%7E': '\\x7e', '%7f': '\\x7f',\n '%7F': '\\x7f', '%80': '\\x80', '%81': '\\x81', '%82': '\\x82', '%83': '\\x83',\n '%84': '\\x84', '%85': '\\x85', '%86': '\\x86', '%87': '\\x87', '%88': '\\x88',\n '%89': '\\x89', '%8a': '\\x8a', '%8A': '\\x8a', '%8b': '\\x8b', '%8B': '\\x8b',\n '%8c': '\\x8c', '%8C': '\\x8c', '%8d': '\\x8d', '%8D': '\\x8d', '%8e': '\\x8e',\n '%8E': '\\x8e', '%8f': '\\x8f', '%8F': '\\x8f', '%90': '\\x90', '%91': '\\x91',\n '%92': '\\x92', '%93': '\\x93', '%94': '\\x94', '%95': '\\x95', '%96': '\\x96',\n '%97': '\\x97', '%98': '\\x98', '%99': '\\x99', '%9a': '\\x9a', '%9A': '\\x9a',\n '%9b': '\\x9b', '%9B': '\\x9b', '%9c': '\\x9c', '%9C': '\\x9c', '%9d': '\\x9d',\n '%9D': '\\x9d', '%9e': '\\x9e', '%9E': '\\x9e', '%9f': '\\x9f', '%9F': '\\x9f',\n '%a0': '\\xa0', '%A0': '\\xa0', '%a1': '\\xa1', '%A1': '\\xa1', '%a2': '\\xa2',\n '%A2': '\\xa2', '%a3': '\\xa3', '%A3': '\\xa3', '%a4': '\\xa4', '%A4': '\\xa4',\n '%a5': '\\xa5', '%A5': '\\xa5', '%a6': '\\xa6', '%A6': '\\xa6', '%a7': '\\xa7',\n '%A7': '\\xa7', '%a8': '\\xa8', '%A8': '\\xa8', '%a9': '\\xa9', '%A9': '\\xa9',\n '%aa': '\\xaa', '%Aa': '\\xaa', '%aA': '\\xaa', '%AA': '\\xaa', '%ab': '\\xab',\n '%Ab': '\\xab', '%aB': '\\xab', '%AB': '\\xab', '%ac': '\\xac', '%Ac': '\\xac',\n '%aC': '\\xac', '%AC': '\\xac', '%ad': '\\xad', '%Ad': '\\xad', '%aD': '\\xad',\n '%AD': '\\xad', '%ae': '\\xae', '%Ae': '\\xae', '%aE': '\\xae', '%AE': '\\xae',\n '%af': '\\xaf', '%Af': '\\xaf', '%aF': '\\xaf', '%AF': '\\xaf', '%b0': '\\xb0',\n '%B0': '\\xb0', '%b1': '\\xb1', '%B1': '\\xb1', '%b2': '\\xb2', '%B2': '\\xb2',\n '%b3': '\\xb3', '%B3': '\\xb3', '%b4': '\\xb4', '%B4': '\\xb4', '%b5': '\\xb5',\n '%B5': '\\xb5', '%b6': '\\xb6', '%B6': '\\xb6', '%b7': '\\xb7', '%B7': '\\xb7',\n '%b8': '\\xb8', '%B8': '\\xb8', '%b9': '\\xb9', '%B9': '\\xb9', '%ba': '\\xba',\n '%Ba': '\\xba', '%bA': '\\xba', '%BA': '\\xba', '%bb': '\\xbb', '%Bb': '\\xbb',\n '%bB': '\\xbb', '%BB': '\\xbb', '%bc': '\\xbc', '%Bc': '\\xbc', '%bC': '\\xbc',\n '%BC': '\\xbc', '%bd': '\\xbd', '%Bd': '\\xbd', '%bD': '\\xbd', '%BD': '\\xbd',\n '%be': '\\xbe', '%Be': '\\xbe', '%bE': '\\xbe', '%BE': '\\xbe', '%bf': '\\xbf',\n '%Bf': '\\xbf', '%bF': '\\xbf', '%BF': '\\xbf', '%c0': '\\xc0', '%C0': '\\xc0',\n '%c1': '\\xc1', '%C1': '\\xc1', '%c2': '\\xc2', '%C2': '\\xc2', '%c3': '\\xc3',\n '%C3': '\\xc3', '%c4': '\\xc4', '%C4': '\\xc4', '%c5': '\\xc5', '%C5': '\\xc5',\n '%c6': '\\xc6', '%C6': '\\xc6', '%c7': '\\xc7', '%C7': '\\xc7', '%c8': '\\xc8',\n '%C8': '\\xc8', '%c9': '\\xc9', '%C9': '\\xc9', '%ca': '\\xca', '%Ca': '\\xca',\n '%cA': '\\xca', '%CA': '\\xca', '%cb': '\\xcb', '%Cb': '\\xcb', '%cB': '\\xcb',\n '%CB': '\\xcb', '%cc': '\\xcc', '%Cc': '\\xcc', '%cC': '\\xcc', '%CC': '\\xcc',\n '%cd': '\\xcd', '%Cd': '\\xcd', '%cD': '\\xcd', '%CD': '\\xcd', '%ce': '\\xce',\n '%Ce': '\\xce', '%cE': '\\xce', '%CE': '\\xce', '%cf': '\\xcf', '%Cf': '\\xcf',\n '%cF': '\\xcf', '%CF': '\\xcf', '%d0': '\\xd0', '%D0': '\\xd0', '%d1': '\\xd1',\n '%D1': '\\xd1', '%d2': '\\xd2', '%D2': '\\xd2', '%d3': '\\xd3', '%D3': '\\xd3',\n '%d4': '\\xd4', '%D4': '\\xd4', '%d5': '\\xd5', '%D5': '\\xd5', '%d6': '\\xd6',\n '%D6': '\\xd6', '%d7': '\\xd7', '%D7': '\\xd7', '%d8': '\\xd8', '%D8': '\\xd8',\n '%d9': '\\xd9', '%D9': '\\xd9', '%da': '\\xda', '%Da': '\\xda', '%dA': '\\xda',\n '%DA': '\\xda', '%db': '\\xdb', '%Db': '\\xdb', '%dB': '\\xdb', '%DB': '\\xdb',\n '%dc': '\\xdc', '%Dc': '\\xdc', '%dC': '\\xdc', '%DC': '\\xdc', '%dd': '\\xdd',\n '%Dd': '\\xdd', '%dD': '\\xdd', '%DD': '\\xdd', '%de': '\\xde', '%De': '\\xde',\n '%dE': '\\xde', '%DE': '\\xde', '%df': '\\xdf', '%Df': '\\xdf', '%dF': '\\xdf',\n '%DF': '\\xdf', '%e0': '\\xe0', '%E0': '\\xe0', '%e1': '\\xe1', '%E1': '\\xe1',\n '%e2': '\\xe2', '%E2': '\\xe2', '%e3': '\\xe3', '%E3': '\\xe3', '%e4': '\\xe4',\n '%E4': '\\xe4', '%e5': '\\xe5', '%E5': '\\xe5', '%e6': '\\xe6', '%E6': '\\xe6',\n '%e7': '\\xe7', '%E7': '\\xe7', '%e8': '\\xe8', '%E8': '\\xe8', '%e9': '\\xe9',\n '%E9': '\\xe9', '%ea': '\\xea', '%Ea': '\\xea', '%eA': '\\xea', '%EA': '\\xea',\n '%eb': '\\xeb', '%Eb': '\\xeb', '%eB': '\\xeb', '%EB': '\\xeb', '%ec': '\\xec',\n '%Ec': '\\xec', '%eC': '\\xec', '%EC': '\\xec', '%ed': '\\xed', '%Ed': '\\xed',\n '%eD': '\\xed', '%ED': '\\xed', '%ee': '\\xee', '%Ee': '\\xee', '%eE': '\\xee',\n '%EE': '\\xee', '%ef': '\\xef', '%Ef': '\\xef', '%eF': '\\xef', '%EF': '\\xef',\n '%f0': '\\xf0', '%F0': '\\xf0', '%f1': '\\xf1', '%F1': '\\xf1', '%f2': '\\xf2',\n '%F2': '\\xf2', '%f3': '\\xf3', '%F3': '\\xf3', '%f4': '\\xf4', '%F4': '\\xf4',\n '%f5': '\\xf5', '%F5': '\\xf5', '%f6': '\\xf6', '%F6': '\\xf6', '%f7': '\\xf7',\n '%F7': '\\xf7', '%f8': '\\xf8', '%F8': '\\xf8', '%f9': '\\xf9', '%F9': '\\xf9',\n '%fa': '\\xfa', '%Fa': '\\xfa', '%fA': '\\xfa', '%FA': '\\xfa', '%fb': '\\xfb',\n '%Fb': '\\xfb', '%fB': '\\xfb', '%FB': '\\xfb', '%fc': '\\xfc', '%Fc': '\\xfc',\n '%fC': '\\xfc', '%FC': '\\xfc', '%fd': '\\xfd', '%Fd': '\\xfd', '%fD': '\\xfd',\n '%FD': '\\xfd', '%fe': '\\xfe', '%Fe': '\\xfe', '%fE': '\\xfe', '%FE': '\\xfe',\n '%ff': '\\xff', '%Ff': '\\xff', '%fF': '\\xff', '%FF': '\\xff'\n}\n\nfunction encodedReplacer (match) {\n return EncodedLookup[match]\n}\n\nconst STATE_KEY = 0\nconst STATE_VALUE = 1\nconst STATE_CHARSET = 2\nconst STATE_LANG = 3\n\nfunction parseParams (str) {\n const res = []\n let state = STATE_KEY\n let charset = ''\n let inquote = false\n let escaping = false\n let p = 0\n let tmp = ''\n const len = str.length\n\n for (var i = 0; i < len; ++i) { // eslint-disable-line no-var\n const char = str[i]\n if (char === '\\\\' && inquote) {\n if (escaping) { escaping = false } else {\n escaping = true\n continue\n }\n } else if (char === '\"') {\n if (!escaping) {\n if (inquote) {\n inquote = false\n state = STATE_KEY\n } else { inquote = true }\n continue\n } else { escaping = false }\n } else {\n if (escaping && inquote) { tmp += '\\\\' }\n escaping = false\n if ((state === STATE_CHARSET || state === STATE_LANG) && char === \"'\") {\n if (state === STATE_CHARSET) {\n state = STATE_LANG\n charset = tmp.substring(1)\n } else { state = STATE_VALUE }\n tmp = ''\n continue\n } else if (state === STATE_KEY &&\n (char === '*' || char === '=') &&\n res.length) {\n state = char === '*'\n ? STATE_CHARSET\n : STATE_VALUE\n res[p] = [tmp, undefined]\n tmp = ''\n continue\n } else if (!inquote && char === ';') {\n state = STATE_KEY\n if (charset) {\n if (tmp.length) {\n tmp = decodeText(tmp.replace(RE_ENCODED, encodedReplacer),\n 'binary',\n charset)\n }\n charset = ''\n } else if (tmp.length) {\n tmp = decodeText(tmp, 'binary', 'utf8')\n }\n if (res[p] === undefined) { res[p] = tmp } else { res[p][1] = tmp }\n tmp = ''\n ++p\n continue\n } else if (!inquote && (char === ' ' || char === '\\t')) { continue }\n }\n tmp += char\n }\n if (charset && tmp.length) {\n tmp = decodeText(tmp.replace(RE_ENCODED, encodedReplacer),\n 'binary',\n charset)\n } else if (tmp) {\n tmp = decodeText(tmp, 'binary', 'utf8')\n }\n\n if (res[p] === undefined) {\n if (tmp) { res[p] = tmp }\n } else { res[p][1] = tmp }\n\n return res\n}\n\nmodule.exports = parseParams\n","'use strict'\n\nmodule.exports = function basename (path) {\n if (typeof path !== 'string') { return '' }\n for (var i = path.length - 1; i >= 0; --i) { // eslint-disable-line no-var\n switch (path.charCodeAt(i)) {\n case 0x2F: // '/'\n case 0x5C: // '\\'\n path = path.slice(i + 1)\n return (path === '..' || path === '.' ? '' : path)\n }\n }\n return (path === '..' || path === '.' ? '' : path)\n}\n","'use strict'\n\n// TODO:\n// * support 1 nested multipart level\n// (see second multipart example here:\n// http://www.w3.org/TR/html401/interact/forms.html#didx-multipartform-data)\n// * support limits.fieldNameSize\n// -- this will require modifications to utils.parseParams\n\nconst { Readable } = require('node:stream')\nconst { inherits } = require('node:util')\n\nconst Dicer = require('../../deps/dicer/lib/Dicer')\n\nconst parseParams = require('../utils/parseParams')\nconst decodeText = require('../utils/decodeText')\nconst basename = require('../utils/basename')\nconst getLimit = require('../utils/getLimit')\n\nconst RE_BOUNDARY = /^boundary$/i\nconst RE_FIELD = /^form-data$/i\nconst RE_CHARSET = /^charset$/i\nconst RE_FILENAME = /^filename$/i\nconst RE_NAME = /^name$/i\n\nMultipart.detect = /^multipart\\/form-data/i\nfunction Multipart (boy, cfg) {\n let i\n let len\n const self = this\n let boundary\n const limits = cfg.limits\n const isPartAFile = cfg.isPartAFile || ((fieldName, contentType, fileName) => (contentType === 'application/octet-stream' || fileName !== undefined))\n const parsedConType = cfg.parsedConType || []\n const defCharset = cfg.defCharset || 'utf8'\n const preservePath = cfg.preservePath\n const fileOpts = { highWaterMark: cfg.fileHwm }\n\n for (i = 0, len = parsedConType.length; i < len; ++i) {\n if (Array.isArray(parsedConType[i]) &&\n RE_BOUNDARY.test(parsedConType[i][0])) {\n boundary = parsedConType[i][1]\n break\n }\n }\n\n function checkFinished () {\n if (nends === 0 && finished && !boy._done) {\n finished = false\n self.end()\n }\n }\n\n if (typeof boundary !== 'string') { throw new Error('Multipart: Boundary not found') }\n\n const fieldSizeLimit = getLimit(limits, 'fieldSize', 1 * 1024 * 1024)\n const fileSizeLimit = getLimit(limits, 'fileSize', Infinity)\n const filesLimit = getLimit(limits, 'files', Infinity)\n const fieldsLimit = getLimit(limits, 'fields', Infinity)\n const partsLimit = getLimit(limits, 'parts', Infinity)\n const headerPairsLimit = getLimit(limits, 'headerPairs', 2000)\n const headerSizeLimit = getLimit(limits, 'headerSize', 80 * 1024)\n\n let nfiles = 0\n let nfields = 0\n let nends = 0\n let curFile\n let curField\n let finished = false\n\n this._needDrain = false\n this._pause = false\n this._cb = undefined\n this._nparts = 0\n this._boy = boy\n\n const parserCfg = {\n boundary,\n maxHeaderPairs: headerPairsLimit,\n maxHeaderSize: headerSizeLimit,\n partHwm: fileOpts.highWaterMark,\n highWaterMark: cfg.highWaterMark\n }\n\n this.parser = new Dicer(parserCfg)\n this.parser.on('drain', function () {\n self._needDrain = false\n if (self._cb && !self._pause) {\n const cb = self._cb\n self._cb = undefined\n cb()\n }\n }).on('part', function onPart (part) {\n if (++self._nparts > partsLimit) {\n self.parser.removeListener('part', onPart)\n self.parser.on('part', skipPart)\n boy.hitPartsLimit = true\n boy.emit('partsLimit')\n return skipPart(part)\n }\n\n // hack because streams2 _always_ doesn't emit 'end' until nextTick, so let\n // us emit 'end' early since we know the part has ended if we are already\n // seeing the next part\n if (curField) {\n const field = curField\n field.emit('end')\n field.removeAllListeners('end')\n }\n\n part.on('header', function (header) {\n let contype\n let fieldname\n let parsed\n let charset\n let encoding\n let filename\n let nsize = 0\n\n if (header['content-type']) {\n parsed = parseParams(header['content-type'][0])\n if (parsed[0]) {\n contype = parsed[0].toLowerCase()\n for (i = 0, len = parsed.length; i < len; ++i) {\n if (RE_CHARSET.test(parsed[i][0])) {\n charset = parsed[i][1].toLowerCase()\n break\n }\n }\n }\n }\n\n if (contype === undefined) { contype = 'text/plain' }\n if (charset === undefined) { charset = defCharset }\n\n if (header['content-disposition']) {\n parsed = parseParams(header['content-disposition'][0])\n if (!RE_FIELD.test(parsed[0])) { return skipPart(part) }\n for (i = 0, len = parsed.length; i < len; ++i) {\n if (RE_NAME.test(parsed[i][0])) {\n fieldname = parsed[i][1]\n } else if (RE_FILENAME.test(parsed[i][0])) {\n filename = parsed[i][1]\n if (!preservePath) { filename = basename(filename) }\n }\n }\n } else { return skipPart(part) }\n\n if (header['content-transfer-encoding']) { encoding = header['content-transfer-encoding'][0].toLowerCase() } else { encoding = '7bit' }\n\n let onData,\n onEnd\n\n if (isPartAFile(fieldname, contype, filename)) {\n // file/binary field\n if (nfiles === filesLimit) {\n if (!boy.hitFilesLimit) {\n boy.hitFilesLimit = true\n boy.emit('filesLimit')\n }\n return skipPart(part)\n }\n\n ++nfiles\n\n if (boy.listenerCount('file') === 0) {\n self.parser._ignore()\n return\n }\n\n ++nends\n const file = new FileStream(fileOpts)\n curFile = file\n file.on('end', function () {\n --nends\n self._pause = false\n checkFinished()\n if (self._cb && !self._needDrain) {\n const cb = self._cb\n self._cb = undefined\n cb()\n }\n })\n file._read = function (n) {\n if (!self._pause) { return }\n self._pause = false\n if (self._cb && !self._needDrain) {\n const cb = self._cb\n self._cb = undefined\n cb()\n }\n }\n boy.emit('file', fieldname, file, filename, encoding, contype)\n\n onData = function (data) {\n if ((nsize += data.length) > fileSizeLimit) {\n const extralen = fileSizeLimit - nsize + data.length\n if (extralen > 0) { file.push(data.slice(0, extralen)) }\n file.truncated = true\n file.bytesRead = fileSizeLimit\n part.removeAllListeners('data')\n file.emit('limit')\n return\n } else if (!file.push(data)) { self._pause = true }\n\n file.bytesRead = nsize\n }\n\n onEnd = function () {\n curFile = undefined\n file.push(null)\n }\n } else {\n // non-file field\n if (nfields === fieldsLimit) {\n if (!boy.hitFieldsLimit) {\n boy.hitFieldsLimit = true\n boy.emit('fieldsLimit')\n }\n return skipPart(part)\n }\n\n ++nfields\n ++nends\n let buffer = ''\n let truncated = false\n curField = part\n\n onData = function (data) {\n if ((nsize += data.length) > fieldSizeLimit) {\n const extralen = (fieldSizeLimit - (nsize - data.length))\n buffer += data.toString('binary', 0, extralen)\n truncated = true\n part.removeAllListeners('data')\n } else { buffer += data.toString('binary') }\n }\n\n onEnd = function () {\n curField = undefined\n if (buffer.length) { buffer = decodeText(buffer, 'binary', charset) }\n boy.emit('field', fieldname, buffer, false, truncated, encoding, contype)\n --nends\n checkFinished()\n }\n }\n\n /* As of node@2efe4ab761666 (v0.10.29+/v0.11.14+), busboy had become\n broken. Streams2/streams3 is a huge black box of confusion, but\n somehow overriding the sync state seems to fix things again (and still\n seems to work for previous node versions).\n */\n part._readableState.sync = false\n\n part.on('data', onData)\n part.on('end', onEnd)\n }).on('error', function (err) {\n if (curFile) { curFile.emit('error', err) }\n })\n }).on('error', function (err) {\n boy.emit('error', err)\n }).on('finish', function () {\n finished = true\n checkFinished()\n })\n}\n\nMultipart.prototype.write = function (chunk, cb) {\n const r = this.parser.write(chunk)\n if (r && !this._pause) {\n cb()\n } else {\n this._needDrain = !r\n this._cb = cb\n }\n}\n\nMultipart.prototype.end = function () {\n const self = this\n\n if (self.parser.writable) {\n self.parser.end()\n } else if (!self._boy._done) {\n process.nextTick(function () {\n self._boy._done = true\n self._boy.emit('finish')\n })\n }\n}\n\nfunction skipPart (part) {\n part.resume()\n}\n\nfunction FileStream (opts) {\n Readable.call(this, opts)\n\n this.bytesRead = 0\n\n this.truncated = false\n}\n\ninherits(FileStream, Readable)\n\nFileStream.prototype._read = function (n) {}\n\nmodule.exports = Multipart\n","'use strict'\n\nconst RE_PLUS = /\\+/g\n\nconst HEX = [\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0,\n 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0\n]\n\nfunction Decoder () {\n this.buffer = undefined\n}\nDecoder.prototype.write = function (str) {\n // Replace '+' with ' ' before decoding\n str = str.replace(RE_PLUS, ' ')\n let res = ''\n let i = 0; let p = 0; const len = str.length\n for (; i < len; ++i) {\n if (this.buffer !== undefined) {\n if (!HEX[str.charCodeAt(i)]) {\n res += '%' + this.buffer\n this.buffer = undefined\n --i // retry character\n } else {\n this.buffer += str[i]\n ++p\n if (this.buffer.length === 2) {\n res += String.fromCharCode(parseInt(this.buffer, 16))\n this.buffer = undefined\n }\n }\n } else if (str[i] === '%') {\n if (i > p) {\n res += str.substring(p, i)\n p = i\n }\n this.buffer = ''\n ++p\n }\n }\n if (p < len && this.buffer === undefined) { res += str.substring(p) }\n return res\n}\nDecoder.prototype.reset = function () {\n this.buffer = undefined\n}\n\nmodule.exports = Decoder\n","'use strict'\n\nconst Decoder = require('../utils/Decoder')\nconst decodeText = require('../utils/decodeText')\nconst getLimit = require('../utils/getLimit')\n\nconst RE_CHARSET = /^charset$/i\n\nUrlEncoded.detect = /^application\\/x-www-form-urlencoded/i\nfunction UrlEncoded (boy, cfg) {\n const limits = cfg.limits\n const parsedConType = cfg.parsedConType\n this.boy = boy\n\n this.fieldSizeLimit = getLimit(limits, 'fieldSize', 1 * 1024 * 1024)\n this.fieldNameSizeLimit = getLimit(limits, 'fieldNameSize', 100)\n this.fieldsLimit = getLimit(limits, 'fields', Infinity)\n\n let charset\n for (var i = 0, len = parsedConType.length; i < len; ++i) { // eslint-disable-line no-var\n if (Array.isArray(parsedConType[i]) &&\n RE_CHARSET.test(parsedConType[i][0])) {\n charset = parsedConType[i][1].toLowerCase()\n break\n }\n }\n\n if (charset === undefined) { charset = cfg.defCharset || 'utf8' }\n\n this.decoder = new Decoder()\n this.charset = charset\n this._fields = 0\n this._state = 'key'\n this._checkingBytes = true\n this._bytesKey = 0\n this._bytesVal = 0\n this._key = ''\n this._val = ''\n this._keyTrunc = false\n this._valTrunc = false\n this._hitLimit = false\n}\n\nUrlEncoded.prototype.write = function (data, cb) {\n if (this._fields === this.fieldsLimit) {\n if (!this.boy.hitFieldsLimit) {\n this.boy.hitFieldsLimit = true\n this.boy.emit('fieldsLimit')\n }\n return cb()\n }\n\n let idxeq; let idxamp; let i; let p = 0; const len = data.length\n\n while (p < len) {\n if (this._state === 'key') {\n idxeq = idxamp = undefined\n for (i = p; i < len; ++i) {\n if (!this._checkingBytes) { ++p }\n if (data[i] === 0x3D/* = */) {\n idxeq = i\n break\n } else if (data[i] === 0x26/* & */) {\n idxamp = i\n break\n }\n if (this._checkingBytes && this._bytesKey === this.fieldNameSizeLimit) {\n this._hitLimit = true\n break\n } else if (this._checkingBytes) { ++this._bytesKey }\n }\n\n if (idxeq !== undefined) {\n // key with assignment\n if (idxeq > p) { this._key += this.decoder.write(data.toString('binary', p, idxeq)) }\n this._state = 'val'\n\n this._hitLimit = false\n this._checkingBytes = true\n this._val = ''\n this._bytesVal = 0\n this._valTrunc = false\n this.decoder.reset()\n\n p = idxeq + 1\n } else if (idxamp !== undefined) {\n // key with no assignment\n ++this._fields\n let key; const keyTrunc = this._keyTrunc\n if (idxamp > p) { key = (this._key += this.decoder.write(data.toString('binary', p, idxamp))) } else { key = this._key }\n\n this._hitLimit = false\n this._checkingBytes = true\n this._key = ''\n this._bytesKey = 0\n this._keyTrunc = false\n this.decoder.reset()\n\n if (key.length) {\n this.boy.emit('field', decodeText(key, 'binary', this.charset),\n '',\n keyTrunc,\n false)\n }\n\n p = idxamp + 1\n if (this._fields === this.fieldsLimit) { return cb() }\n } else if (this._hitLimit) {\n // we may not have hit the actual limit if there are encoded bytes...\n if (i > p) { this._key += this.decoder.write(data.toString('binary', p, i)) }\n p = i\n if ((this._bytesKey = this._key.length) === this.fieldNameSizeLimit) {\n // yep, we actually did hit the limit\n this._checkingBytes = false\n this._keyTrunc = true\n }\n } else {\n if (p < len) { this._key += this.decoder.write(data.toString('binary', p)) }\n p = len\n }\n } else {\n idxamp = undefined\n for (i = p; i < len; ++i) {\n if (!this._checkingBytes) { ++p }\n if (data[i] === 0x26/* & */) {\n idxamp = i\n break\n }\n if (this._checkingBytes && this._bytesVal === this.fieldSizeLimit) {\n this._hitLimit = true\n break\n } else if (this._checkingBytes) { ++this._bytesVal }\n }\n\n if (idxamp !== undefined) {\n ++this._fields\n if (idxamp > p) { this._val += this.decoder.write(data.toString('binary', p, idxamp)) }\n this.boy.emit('field', decodeText(this._key, 'binary', this.charset),\n decodeText(this._val, 'binary', this.charset),\n this._keyTrunc,\n this._valTrunc)\n this._state = 'key'\n\n this._hitLimit = false\n this._checkingBytes = true\n this._key = ''\n this._bytesKey = 0\n this._keyTrunc = false\n this.decoder.reset()\n\n p = idxamp + 1\n if (this._fields === this.fieldsLimit) { return cb() }\n } else if (this._hitLimit) {\n // we may not have hit the actual limit if there are encoded bytes...\n if (i > p) { this._val += this.decoder.write(data.toString('binary', p, i)) }\n p = i\n if ((this._val === '' && this.fieldSizeLimit === 0) ||\n (this._bytesVal = this._val.length) === this.fieldSizeLimit) {\n // yep, we actually did hit the limit\n this._checkingBytes = false\n this._valTrunc = true\n }\n } else {\n if (p < len) { this._val += this.decoder.write(data.toString('binary', p)) }\n p = len\n }\n }\n }\n cb()\n}\n\nUrlEncoded.prototype.end = function () {\n if (this.boy._done) { return }\n\n if (this._state === 'key' && this._key.length > 0) {\n this.boy.emit('field', decodeText(this._key, 'binary', this.charset),\n '',\n this._keyTrunc,\n false)\n } else if (this._state === 'val') {\n this.boy.emit('field', decodeText(this._key, 'binary', this.charset),\n decodeText(this._val, 'binary', this.charset),\n this._keyTrunc,\n this._valTrunc)\n }\n this.boy._done = true\n this.boy.emit('finish')\n}\n\nmodule.exports = UrlEncoded\n","'use strict'\n\nconst WritableStream = require('node:stream').Writable\nconst { inherits } = require('node:util')\nconst Dicer = require('../deps/dicer/lib/Dicer')\n\nconst MultipartParser = require('./types/multipart')\nconst UrlencodedParser = require('./types/urlencoded')\nconst parseParams = require('./utils/parseParams')\n\nfunction Busboy (opts) {\n if (!(this instanceof Busboy)) { return new Busboy(opts) }\n\n if (typeof opts !== 'object') {\n throw new TypeError('Busboy expected an options-Object.')\n }\n if (typeof opts.headers !== 'object') {\n throw new TypeError('Busboy expected an options-Object with headers-attribute.')\n }\n if (typeof opts.headers['content-type'] !== 'string') {\n throw new TypeError('Missing Content-Type-header.')\n }\n\n const {\n headers,\n ...streamOptions\n } = opts\n\n this.opts = {\n autoDestroy: false,\n ...streamOptions\n }\n WritableStream.call(this, this.opts)\n\n this._done = false\n this._parser = this.getParserByHeaders(headers)\n this._finished = false\n}\ninherits(Busboy, WritableStream)\n\nBusboy.prototype.emit = function (ev) {\n if (ev === 'finish') {\n if (!this._done) {\n this._parser?.end()\n return\n } else if (this._finished) {\n return\n }\n this._finished = true\n }\n WritableStream.prototype.emit.apply(this, arguments)\n}\n\nBusboy.prototype.getParserByHeaders = function (headers) {\n const parsed = parseParams(headers['content-type'])\n\n const cfg = {\n defCharset: this.opts.defCharset,\n fileHwm: this.opts.fileHwm,\n headers,\n highWaterMark: this.opts.highWaterMark,\n isPartAFile: this.opts.isPartAFile,\n limits: this.opts.limits,\n parsedConType: parsed,\n preservePath: this.opts.preservePath\n }\n\n if (MultipartParser.detect.test(parsed[0])) {\n return new MultipartParser(this, cfg)\n }\n if (UrlencodedParser.detect.test(parsed[0])) {\n return new UrlencodedParser(this, cfg)\n }\n throw new Error('Unsupported Content-Type.')\n}\n\nBusboy.prototype._write = function (chunk, encoding, cb) {\n this._parser.write(chunk, cb)\n}\n\nmodule.exports = Busboy\nmodule.exports.default = Busboy\nmodule.exports.Busboy = Busboy\n\nmodule.exports.Dicer = Dicer\n","'use strict'\n\nconst { MessageChannel, receiveMessageOnPort } = require('worker_threads')\n\nconst corsSafeListedMethods = ['GET', 'HEAD', 'POST']\nconst corsSafeListedMethodsSet = new Set(corsSafeListedMethods)\n\nconst nullBodyStatus = [101, 204, 205, 304]\n\nconst redirectStatus = [301, 302, 303, 307, 308]\nconst redirectStatusSet = new Set(redirectStatus)\n\n// https://fetch.spec.whatwg.org/#block-bad-port\nconst badPorts = [\n '1', '7', '9', '11', '13', '15', '17', '19', '20', '21', '22', '23', '25', '37', '42', '43', '53', '69', '77', '79',\n '87', '95', '101', '102', '103', '104', '109', '110', '111', '113', '115', '117', '119', '123', '135', '137',\n '139', '143', '161', '179', '389', '427', '465', '512', '513', '514', '515', '526', '530', '531', '532',\n '540', '548', '554', '556', '563', '587', '601', '636', '989', '990', '993', '995', '1719', '1720', '1723',\n '2049', '3659', '4045', '5060', '5061', '6000', '6566', '6665', '6666', '6667', '6668', '6669', '6697',\n '10080'\n]\n\nconst badPortsSet = new Set(badPorts)\n\n// https://w3c.github.io/webappsec-referrer-policy/#referrer-policies\nconst referrerPolicy = [\n '',\n 'no-referrer',\n 'no-referrer-when-downgrade',\n 'same-origin',\n 'origin',\n 'strict-origin',\n 'origin-when-cross-origin',\n 'strict-origin-when-cross-origin',\n 'unsafe-url'\n]\nconst referrerPolicySet = new Set(referrerPolicy)\n\nconst requestRedirect = ['follow', 'manual', 'error']\n\nconst safeMethods = ['GET', 'HEAD', 'OPTIONS', 'TRACE']\nconst safeMethodsSet = new Set(safeMethods)\n\nconst requestMode = ['navigate', 'same-origin', 'no-cors', 'cors']\n\nconst requestCredentials = ['omit', 'same-origin', 'include']\n\nconst requestCache = [\n 'default',\n 'no-store',\n 'reload',\n 'no-cache',\n 'force-cache',\n 'only-if-cached'\n]\n\n// https://fetch.spec.whatwg.org/#request-body-header-name\nconst requestBodyHeader = [\n 'content-encoding',\n 'content-language',\n 'content-location',\n 'content-type',\n // See https://github.com/nodejs/undici/issues/2021\n // 'Content-Length' is a forbidden header name, which is typically\n // removed in the Headers implementation. However, undici doesn't\n // filter out headers, so we add it here.\n 'content-length'\n]\n\n// https://fetch.spec.whatwg.org/#enumdef-requestduplex\nconst requestDuplex = [\n 'half'\n]\n\n// http://fetch.spec.whatwg.org/#forbidden-method\nconst forbiddenMethods = ['CONNECT', 'TRACE', 'TRACK']\nconst forbiddenMethodsSet = new Set(forbiddenMethods)\n\nconst subresource = [\n 'audio',\n 'audioworklet',\n 'font',\n 'image',\n 'manifest',\n 'paintworklet',\n 'script',\n 'style',\n 'track',\n 'video',\n 'xslt',\n ''\n]\nconst subresourceSet = new Set(subresource)\n\n/** @type {globalThis['DOMException']} */\nconst DOMException = globalThis.DOMException ?? (() => {\n // DOMException was only made a global in Node v17.0.0,\n // but fetch supports >= v16.8.\n try {\n atob('~')\n } catch (err) {\n return Object.getPrototypeOf(err).constructor\n }\n})()\n\nlet channel\n\n/** @type {globalThis['structuredClone']} */\nconst structuredClone =\n globalThis.structuredClone ??\n // https://github.com/nodejs/node/blob/b27ae24dcc4251bad726d9d84baf678d1f707fed/lib/internal/structured_clone.js\n // structuredClone was added in v17.0.0, but fetch supports v16.8\n function structuredClone (value, options = undefined) {\n if (arguments.length === 0) {\n throw new TypeError('missing argument')\n }\n\n if (!channel) {\n channel = new MessageChannel()\n }\n channel.port1.unref()\n channel.port2.unref()\n channel.port1.postMessage(value, options?.transfer)\n return receiveMessageOnPort(channel.port2).message\n }\n\nmodule.exports = {\n DOMException,\n structuredClone,\n subresource,\n forbiddenMethods,\n requestBodyHeader,\n referrerPolicy,\n requestRedirect,\n requestMode,\n requestCredentials,\n requestCache,\n redirectStatus,\n corsSafeListedMethods,\n nullBodyStatus,\n safeMethods,\n badPorts,\n requestDuplex,\n subresourceSet,\n badPortsSet,\n redirectStatusSet,\n corsSafeListedMethodsSet,\n safeMethodsSet,\n forbiddenMethodsSet,\n referrerPolicySet\n}\n","'use strict'\n\n// In case of breaking changes, increase the version\n// number to avoid conflicts.\nconst globalOrigin = Symbol.for('undici.globalOrigin.1')\n\nfunction getGlobalOrigin () {\n return globalThis[globalOrigin]\n}\n\nfunction setGlobalOrigin (newOrigin) {\n if (newOrigin === undefined) {\n Object.defineProperty(globalThis, globalOrigin, {\n value: undefined,\n writable: true,\n enumerable: false,\n configurable: false\n })\n\n return\n }\n\n const parsedURL = new URL(newOrigin)\n\n if (parsedURL.protocol !== 'http:' && parsedURL.protocol !== 'https:') {\n throw new TypeError(`Only http & https urls are allowed, received ${parsedURL.protocol}`)\n }\n\n Object.defineProperty(globalThis, globalOrigin, {\n value: parsedURL,\n writable: true,\n enumerable: false,\n configurable: false\n })\n}\n\nmodule.exports = {\n getGlobalOrigin,\n setGlobalOrigin\n}\n","'use strict'\n\nconst { redirectStatusSet, referrerPolicySet: referrerPolicyTokens, badPortsSet } = require('./constants')\nconst { getGlobalOrigin } = require('./global')\nconst { performance } = require('perf_hooks')\nconst { isBlobLike, toUSVString, ReadableStreamFrom } = require('../core/util')\nconst assert = require('assert')\nconst { isUint8Array } = require('util/types')\n\nlet supportedHashes = []\n\n// https://nodejs.org/api/crypto.html#determining-if-crypto-support-is-unavailable\n/** @type {import('crypto')|undefined} */\nlet crypto\n\ntry {\n crypto = require('crypto')\n const possibleRelevantHashes = ['sha256', 'sha384', 'sha512']\n supportedHashes = crypto.getHashes().filter((hash) => possibleRelevantHashes.includes(hash))\n/* c8 ignore next 3 */\n} catch {\n}\n\nfunction responseURL (response) {\n // https://fetch.spec.whatwg.org/#responses\n // A response has an associated URL. It is a pointer to the last URL\n // in response’s URL list and null if response’s URL list is empty.\n const urlList = response.urlList\n const length = urlList.length\n return length === 0 ? null : urlList[length - 1].toString()\n}\n\n// https://fetch.spec.whatwg.org/#concept-response-location-url\nfunction responseLocationURL (response, requestFragment) {\n // 1. If response’s status is not a redirect status, then return null.\n if (!redirectStatusSet.has(response.status)) {\n return null\n }\n\n // 2. Let location be the result of extracting header list values given\n // `Location` and response’s header list.\n let location = response.headersList.get('location')\n\n // 3. If location is a header value, then set location to the result of\n // parsing location with response’s URL.\n if (location !== null && isValidHeaderValue(location)) {\n location = new URL(location, responseURL(response))\n }\n\n // 4. If location is a URL whose fragment is null, then set location’s\n // fragment to requestFragment.\n if (location && !location.hash) {\n location.hash = requestFragment\n }\n\n // 5. Return location.\n return location\n}\n\n/** @returns {URL} */\nfunction requestCurrentURL (request) {\n return request.urlList[request.urlList.length - 1]\n}\n\nfunction requestBadPort (request) {\n // 1. Let url be request’s current URL.\n const url = requestCurrentURL(request)\n\n // 2. If url’s scheme is an HTTP(S) scheme and url’s port is a bad port,\n // then return blocked.\n if (urlIsHttpHttpsScheme(url) && badPortsSet.has(url.port)) {\n return 'blocked'\n }\n\n // 3. Return allowed.\n return 'allowed'\n}\n\nfunction isErrorLike (object) {\n return object instanceof Error || (\n object?.constructor?.name === 'Error' ||\n object?.constructor?.name === 'DOMException'\n )\n}\n\n// Check whether |statusText| is a ByteString and\n// matches the Reason-Phrase token production.\n// RFC 2616: https://tools.ietf.org/html/rfc2616\n// RFC 7230: https://tools.ietf.org/html/rfc7230\n// \"reason-phrase = *( HTAB / SP / VCHAR / obs-text )\"\n// https://github.com/chromium/chromium/blob/94.0.4604.1/third_party/blink/renderer/core/fetch/response.cc#L116\nfunction isValidReasonPhrase (statusText) {\n for (let i = 0; i < statusText.length; ++i) {\n const c = statusText.charCodeAt(i)\n if (\n !(\n (\n c === 0x09 || // HTAB\n (c >= 0x20 && c <= 0x7e) || // SP / VCHAR\n (c >= 0x80 && c <= 0xff)\n ) // obs-text\n )\n ) {\n return false\n }\n }\n return true\n}\n\n/**\n * @see https://tools.ietf.org/html/rfc7230#section-3.2.6\n * @param {number} c\n */\nfunction isTokenCharCode (c) {\n switch (c) {\n case 0x22:\n case 0x28:\n case 0x29:\n case 0x2c:\n case 0x2f:\n case 0x3a:\n case 0x3b:\n case 0x3c:\n case 0x3d:\n case 0x3e:\n case 0x3f:\n case 0x40:\n case 0x5b:\n case 0x5c:\n case 0x5d:\n case 0x7b:\n case 0x7d:\n // DQUOTE and \"(),/:;<=>?@[\\]{}\"\n return false\n default:\n // VCHAR %x21-7E\n return c >= 0x21 && c <= 0x7e\n }\n}\n\n/**\n * @param {string} characters\n */\nfunction isValidHTTPToken (characters) {\n if (characters.length === 0) {\n return false\n }\n for (let i = 0; i < characters.length; ++i) {\n if (!isTokenCharCode(characters.charCodeAt(i))) {\n return false\n }\n }\n return true\n}\n\n/**\n * @see https://fetch.spec.whatwg.org/#header-name\n * @param {string} potentialValue\n */\nfunction isValidHeaderName (potentialValue) {\n return isValidHTTPToken(potentialValue)\n}\n\n/**\n * @see https://fetch.spec.whatwg.org/#header-value\n * @param {string} potentialValue\n */\nfunction isValidHeaderValue (potentialValue) {\n // - Has no leading or trailing HTTP tab or space bytes.\n // - Contains no 0x00 (NUL) or HTTP newline bytes.\n if (\n potentialValue.startsWith('\\t') ||\n potentialValue.startsWith(' ') ||\n potentialValue.endsWith('\\t') ||\n potentialValue.endsWith(' ')\n ) {\n return false\n }\n\n if (\n potentialValue.includes('\\0') ||\n potentialValue.includes('\\r') ||\n potentialValue.includes('\\n')\n ) {\n return false\n }\n\n return true\n}\n\n// https://w3c.github.io/webappsec-referrer-policy/#set-requests-referrer-policy-on-redirect\nfunction setRequestReferrerPolicyOnRedirect (request, actualResponse) {\n // Given a request request and a response actualResponse, this algorithm\n // updates request’s referrer policy according to the Referrer-Policy\n // header (if any) in actualResponse.\n\n // 1. Let policy be the result of executing § 8.1 Parse a referrer policy\n // from a Referrer-Policy header on actualResponse.\n\n // 8.1 Parse a referrer policy from a Referrer-Policy header\n // 1. Let policy-tokens be the result of extracting header list values given `Referrer-Policy` and response’s header list.\n const { headersList } = actualResponse\n // 2. Let policy be the empty string.\n // 3. For each token in policy-tokens, if token is a referrer policy and token is not the empty string, then set policy to token.\n // 4. Return policy.\n const policyHeader = (headersList.get('referrer-policy') ?? '').split(',')\n\n // Note: As the referrer-policy can contain multiple policies\n // separated by comma, we need to loop through all of them\n // and pick the first valid one.\n // Ref: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Referrer-Policy#specify_a_fallback_policy\n let policy = ''\n if (policyHeader.length > 0) {\n // The right-most policy takes precedence.\n // The left-most policy is the fallback.\n for (let i = policyHeader.length; i !== 0; i--) {\n const token = policyHeader[i - 1].trim()\n if (referrerPolicyTokens.has(token)) {\n policy = token\n break\n }\n }\n }\n\n // 2. If policy is not the empty string, then set request’s referrer policy to policy.\n if (policy !== '') {\n request.referrerPolicy = policy\n }\n}\n\n// https://fetch.spec.whatwg.org/#cross-origin-resource-policy-check\nfunction crossOriginResourcePolicyCheck () {\n // TODO\n return 'allowed'\n}\n\n// https://fetch.spec.whatwg.org/#concept-cors-check\nfunction corsCheck () {\n // TODO\n return 'success'\n}\n\n// https://fetch.spec.whatwg.org/#concept-tao-check\nfunction TAOCheck () {\n // TODO\n return 'success'\n}\n\nfunction appendFetchMetadata (httpRequest) {\n // https://w3c.github.io/webappsec-fetch-metadata/#sec-fetch-dest-header\n // TODO\n\n // https://w3c.github.io/webappsec-fetch-metadata/#sec-fetch-mode-header\n\n // 1. Assert: r’s url is a potentially trustworthy URL.\n // TODO\n\n // 2. Let header be a Structured Header whose value is a token.\n let header = null\n\n // 3. Set header’s value to r’s mode.\n header = httpRequest.mode\n\n // 4. Set a structured field value `Sec-Fetch-Mode`/header in r’s header list.\n httpRequest.headersList.set('sec-fetch-mode', header)\n\n // https://w3c.github.io/webappsec-fetch-metadata/#sec-fetch-site-header\n // TODO\n\n // https://w3c.github.io/webappsec-fetch-metadata/#sec-fetch-user-header\n // TODO\n}\n\n// https://fetch.spec.whatwg.org/#append-a-request-origin-header\nfunction appendRequestOriginHeader (request) {\n // 1. Let serializedOrigin be the result of byte-serializing a request origin with request.\n let serializedOrigin = request.origin\n\n // 2. If request’s response tainting is \"cors\" or request’s mode is \"websocket\", then append (`Origin`, serializedOrigin) to request’s header list.\n if (request.responseTainting === 'cors' || request.mode === 'websocket') {\n if (serializedOrigin) {\n request.headersList.append('origin', serializedOrigin)\n }\n\n // 3. Otherwise, if request’s method is neither `GET` nor `HEAD`, then:\n } else if (request.method !== 'GET' && request.method !== 'HEAD') {\n // 1. Switch on request’s referrer policy:\n switch (request.referrerPolicy) {\n case 'no-referrer':\n // Set serializedOrigin to `null`.\n serializedOrigin = null\n break\n case 'no-referrer-when-downgrade':\n case 'strict-origin':\n case 'strict-origin-when-cross-origin':\n // If request’s origin is a tuple origin, its scheme is \"https\", and request’s current URL’s scheme is not \"https\", then set serializedOrigin to `null`.\n if (request.origin && urlHasHttpsScheme(request.origin) && !urlHasHttpsScheme(requestCurrentURL(request))) {\n serializedOrigin = null\n }\n break\n case 'same-origin':\n // If request’s origin is not same origin with request’s current URL’s origin, then set serializedOrigin to `null`.\n if (!sameOrigin(request, requestCurrentURL(request))) {\n serializedOrigin = null\n }\n break\n default:\n // Do nothing.\n }\n\n if (serializedOrigin) {\n // 2. Append (`Origin`, serializedOrigin) to request’s header list.\n request.headersList.append('origin', serializedOrigin)\n }\n }\n}\n\nfunction coarsenedSharedCurrentTime (crossOriginIsolatedCapability) {\n // TODO\n return performance.now()\n}\n\n// https://fetch.spec.whatwg.org/#create-an-opaque-timing-info\nfunction createOpaqueTimingInfo (timingInfo) {\n return {\n startTime: timingInfo.startTime ?? 0,\n redirectStartTime: 0,\n redirectEndTime: 0,\n postRedirectStartTime: timingInfo.startTime ?? 0,\n finalServiceWorkerStartTime: 0,\n finalNetworkResponseStartTime: 0,\n finalNetworkRequestStartTime: 0,\n endTime: 0,\n encodedBodySize: 0,\n decodedBodySize: 0,\n finalConnectionTimingInfo: null\n }\n}\n\n// https://html.spec.whatwg.org/multipage/origin.html#policy-container\nfunction makePolicyContainer () {\n // Note: the fetch spec doesn't make use of embedder policy or CSP list\n return {\n referrerPolicy: 'strict-origin-when-cross-origin'\n }\n}\n\n// https://html.spec.whatwg.org/multipage/origin.html#clone-a-policy-container\nfunction clonePolicyContainer (policyContainer) {\n return {\n referrerPolicy: policyContainer.referrerPolicy\n }\n}\n\n// https://w3c.github.io/webappsec-referrer-policy/#determine-requests-referrer\nfunction determineRequestsReferrer (request) {\n // 1. Let policy be request's referrer policy.\n const policy = request.referrerPolicy\n\n // Note: policy cannot (shouldn't) be null or an empty string.\n assert(policy)\n\n // 2. Let environment be request’s client.\n\n let referrerSource = null\n\n // 3. Switch on request’s referrer:\n if (request.referrer === 'client') {\n // Note: node isn't a browser and doesn't implement document/iframes,\n // so we bypass this step and replace it with our own.\n\n const globalOrigin = getGlobalOrigin()\n\n if (!globalOrigin || globalOrigin.origin === 'null') {\n return 'no-referrer'\n }\n\n // note: we need to clone it as it's mutated\n referrerSource = new URL(globalOrigin)\n } else if (request.referrer instanceof URL) {\n // Let referrerSource be request’s referrer.\n referrerSource = request.referrer\n }\n\n // 4. Let request’s referrerURL be the result of stripping referrerSource for\n // use as a referrer.\n let referrerURL = stripURLForReferrer(referrerSource)\n\n // 5. Let referrerOrigin be the result of stripping referrerSource for use as\n // a referrer, with the origin-only flag set to true.\n const referrerOrigin = stripURLForReferrer(referrerSource, true)\n\n // 6. If the result of serializing referrerURL is a string whose length is\n // greater than 4096, set referrerURL to referrerOrigin.\n if (referrerURL.toString().length > 4096) {\n referrerURL = referrerOrigin\n }\n\n const areSameOrigin = sameOrigin(request, referrerURL)\n const isNonPotentiallyTrustWorthy = isURLPotentiallyTrustworthy(referrerURL) &&\n !isURLPotentiallyTrustworthy(request.url)\n\n // 8. Execute the switch statements corresponding to the value of policy:\n switch (policy) {\n case 'origin': return referrerOrigin != null ? referrerOrigin : stripURLForReferrer(referrerSource, true)\n case 'unsafe-url': return referrerURL\n case 'same-origin':\n return areSameOrigin ? referrerOrigin : 'no-referrer'\n case 'origin-when-cross-origin':\n return areSameOrigin ? referrerURL : referrerOrigin\n case 'strict-origin-when-cross-origin': {\n const currentURL = requestCurrentURL(request)\n\n // 1. If the origin of referrerURL and the origin of request’s current\n // URL are the same, then return referrerURL.\n if (sameOrigin(referrerURL, currentURL)) {\n return referrerURL\n }\n\n // 2. If referrerURL is a potentially trustworthy URL and request’s\n // current URL is not a potentially trustworthy URL, then return no\n // referrer.\n if (isURLPotentiallyTrustworthy(referrerURL) && !isURLPotentiallyTrustworthy(currentURL)) {\n return 'no-referrer'\n }\n\n // 3. Return referrerOrigin.\n return referrerOrigin\n }\n case 'strict-origin': // eslint-disable-line\n /**\n * 1. If referrerURL is a potentially trustworthy URL and\n * request’s current URL is not a potentially trustworthy URL,\n * then return no referrer.\n * 2. Return referrerOrigin\n */\n case 'no-referrer-when-downgrade': // eslint-disable-line\n /**\n * 1. If referrerURL is a potentially trustworthy URL and\n * request’s current URL is not a potentially trustworthy URL,\n * then return no referrer.\n * 2. Return referrerOrigin\n */\n\n default: // eslint-disable-line\n return isNonPotentiallyTrustWorthy ? 'no-referrer' : referrerOrigin\n }\n}\n\n/**\n * @see https://w3c.github.io/webappsec-referrer-policy/#strip-url\n * @param {URL} url\n * @param {boolean|undefined} originOnly\n */\nfunction stripURLForReferrer (url, originOnly) {\n // 1. Assert: url is a URL.\n assert(url instanceof URL)\n\n // 2. If url’s scheme is a local scheme, then return no referrer.\n if (url.protocol === 'file:' || url.protocol === 'about:' || url.protocol === 'blank:') {\n return 'no-referrer'\n }\n\n // 3. Set url’s username to the empty string.\n url.username = ''\n\n // 4. Set url’s password to the empty string.\n url.password = ''\n\n // 5. Set url’s fragment to null.\n url.hash = ''\n\n // 6. If the origin-only flag is true, then:\n if (originOnly) {\n // 1. Set url’s path to « the empty string ».\n url.pathname = ''\n\n // 2. Set url’s query to null.\n url.search = ''\n }\n\n // 7. Return url.\n return url\n}\n\nfunction isURLPotentiallyTrustworthy (url) {\n if (!(url instanceof URL)) {\n return false\n }\n\n // If child of about, return true\n if (url.href === 'about:blank' || url.href === 'about:srcdoc') {\n return true\n }\n\n // If scheme is data, return true\n if (url.protocol === 'data:') return true\n\n // If file, return true\n if (url.protocol === 'file:') return true\n\n return isOriginPotentiallyTrustworthy(url.origin)\n\n function isOriginPotentiallyTrustworthy (origin) {\n // If origin is explicitly null, return false\n if (origin == null || origin === 'null') return false\n\n const originAsURL = new URL(origin)\n\n // If secure, return true\n if (originAsURL.protocol === 'https:' || originAsURL.protocol === 'wss:') {\n return true\n }\n\n // If localhost or variants, return true\n if (/^127(?:\\.[0-9]+){0,2}\\.[0-9]+$|^\\[(?:0*:)*?:?0*1\\]$/.test(originAsURL.hostname) ||\n (originAsURL.hostname === 'localhost' || originAsURL.hostname.includes('localhost.')) ||\n (originAsURL.hostname.endsWith('.localhost'))) {\n return true\n }\n\n // If any other, return false\n return false\n }\n}\n\n/**\n * @see https://w3c.github.io/webappsec-subresource-integrity/#does-response-match-metadatalist\n * @param {Uint8Array} bytes\n * @param {string} metadataList\n */\nfunction bytesMatch (bytes, metadataList) {\n // If node is not built with OpenSSL support, we cannot check\n // a request's integrity, so allow it by default (the spec will\n // allow requests if an invalid hash is given, as precedence).\n /* istanbul ignore if: only if node is built with --without-ssl */\n if (crypto === undefined) {\n return true\n }\n\n // 1. Let parsedMetadata be the result of parsing metadataList.\n const parsedMetadata = parseMetadata(metadataList)\n\n // 2. If parsedMetadata is no metadata, return true.\n if (parsedMetadata === 'no metadata') {\n return true\n }\n\n // 3. If response is not eligible for integrity validation, return false.\n // TODO\n\n // 4. If parsedMetadata is the empty set, return true.\n if (parsedMetadata.length === 0) {\n return true\n }\n\n // 5. Let metadata be the result of getting the strongest\n // metadata from parsedMetadata.\n const strongest = getStrongestMetadata(parsedMetadata)\n const metadata = filterMetadataListByAlgorithm(parsedMetadata, strongest)\n\n // 6. For each item in metadata:\n for (const item of metadata) {\n // 1. Let algorithm be the alg component of item.\n const algorithm = item.algo\n\n // 2. Let expectedValue be the val component of item.\n const expectedValue = item.hash\n\n // See https://github.com/web-platform-tests/wpt/commit/e4c5cc7a5e48093220528dfdd1c4012dc3837a0e\n // \"be liberal with padding\". This is annoying, and it's not even in the spec.\n\n // 3. Let actualValue be the result of applying algorithm to bytes.\n let actualValue = crypto.createHash(algorithm).update(bytes).digest('base64')\n\n if (actualValue[actualValue.length - 1] === '=') {\n if (actualValue[actualValue.length - 2] === '=') {\n actualValue = actualValue.slice(0, -2)\n } else {\n actualValue = actualValue.slice(0, -1)\n }\n }\n\n // 4. If actualValue is a case-sensitive match for expectedValue,\n // return true.\n if (compareBase64Mixed(actualValue, expectedValue)) {\n return true\n }\n }\n\n // 7. Return false.\n return false\n}\n\n// https://w3c.github.io/webappsec-subresource-integrity/#grammardef-hash-with-options\n// https://www.w3.org/TR/CSP2/#source-list-syntax\n// https://www.rfc-editor.org/rfc/rfc5234#appendix-B.1\nconst parseHashWithOptions = /(?sha256|sha384|sha512)-((?[A-Za-z0-9+/]+|[A-Za-z0-9_-]+)={0,2}(?:\\s|$)( +[!-~]*)?)?/i\n\n/**\n * @see https://w3c.github.io/webappsec-subresource-integrity/#parse-metadata\n * @param {string} metadata\n */\nfunction parseMetadata (metadata) {\n // 1. Let result be the empty set.\n /** @type {{ algo: string, hash: string }[]} */\n const result = []\n\n // 2. Let empty be equal to true.\n let empty = true\n\n // 3. For each token returned by splitting metadata on spaces:\n for (const token of metadata.split(' ')) {\n // 1. Set empty to false.\n empty = false\n\n // 2. Parse token as a hash-with-options.\n const parsedToken = parseHashWithOptions.exec(token)\n\n // 3. If token does not parse, continue to the next token.\n if (\n parsedToken === null ||\n parsedToken.groups === undefined ||\n parsedToken.groups.algo === undefined\n ) {\n // Note: Chromium blocks the request at this point, but Firefox\n // gives a warning that an invalid integrity was given. The\n // correct behavior is to ignore these, and subsequently not\n // check the integrity of the resource.\n continue\n }\n\n // 4. Let algorithm be the hash-algo component of token.\n const algorithm = parsedToken.groups.algo.toLowerCase()\n\n // 5. If algorithm is a hash function recognized by the user\n // agent, add the parsed token to result.\n if (supportedHashes.includes(algorithm)) {\n result.push(parsedToken.groups)\n }\n }\n\n // 4. Return no metadata if empty is true, otherwise return result.\n if (empty === true) {\n return 'no metadata'\n }\n\n return result\n}\n\n/**\n * @param {{ algo: 'sha256' | 'sha384' | 'sha512' }[]} metadataList\n */\nfunction getStrongestMetadata (metadataList) {\n // Let algorithm be the algo component of the first item in metadataList.\n // Can be sha256\n let algorithm = metadataList[0].algo\n // If the algorithm is sha512, then it is the strongest\n // and we can return immediately\n if (algorithm[3] === '5') {\n return algorithm\n }\n\n for (let i = 1; i < metadataList.length; ++i) {\n const metadata = metadataList[i]\n // If the algorithm is sha512, then it is the strongest\n // and we can break the loop immediately\n if (metadata.algo[3] === '5') {\n algorithm = 'sha512'\n break\n // If the algorithm is sha384, then a potential sha256 or sha384 is ignored\n } else if (algorithm[3] === '3') {\n continue\n // algorithm is sha256, check if algorithm is sha384 and if so, set it as\n // the strongest\n } else if (metadata.algo[3] === '3') {\n algorithm = 'sha384'\n }\n }\n return algorithm\n}\n\nfunction filterMetadataListByAlgorithm (metadataList, algorithm) {\n if (metadataList.length === 1) {\n return metadataList\n }\n\n let pos = 0\n for (let i = 0; i < metadataList.length; ++i) {\n if (metadataList[i].algo === algorithm) {\n metadataList[pos++] = metadataList[i]\n }\n }\n\n metadataList.length = pos\n\n return metadataList\n}\n\n/**\n * Compares two base64 strings, allowing for base64url\n * in the second string.\n *\n* @param {string} actualValue always base64\n * @param {string} expectedValue base64 or base64url\n * @returns {boolean}\n */\nfunction compareBase64Mixed (actualValue, expectedValue) {\n if (actualValue.length !== expectedValue.length) {\n return false\n }\n for (let i = 0; i < actualValue.length; ++i) {\n if (actualValue[i] !== expectedValue[i]) {\n if (\n (actualValue[i] === '+' && expectedValue[i] === '-') ||\n (actualValue[i] === '/' && expectedValue[i] === '_')\n ) {\n continue\n }\n return false\n }\n }\n\n return true\n}\n\n// https://w3c.github.io/webappsec-upgrade-insecure-requests/#upgrade-request\nfunction tryUpgradeRequestToAPotentiallyTrustworthyURL (request) {\n // TODO\n}\n\n/**\n * @link {https://html.spec.whatwg.org/multipage/origin.html#same-origin}\n * @param {URL} A\n * @param {URL} B\n */\nfunction sameOrigin (A, B) {\n // 1. If A and B are the same opaque origin, then return true.\n if (A.origin === B.origin && A.origin === 'null') {\n return true\n }\n\n // 2. If A and B are both tuple origins and their schemes,\n // hosts, and port are identical, then return true.\n if (A.protocol === B.protocol && A.hostname === B.hostname && A.port === B.port) {\n return true\n }\n\n // 3. Return false.\n return false\n}\n\nfunction createDeferredPromise () {\n let res\n let rej\n const promise = new Promise((resolve, reject) => {\n res = resolve\n rej = reject\n })\n\n return { promise, resolve: res, reject: rej }\n}\n\nfunction isAborted (fetchParams) {\n return fetchParams.controller.state === 'aborted'\n}\n\nfunction isCancelled (fetchParams) {\n return fetchParams.controller.state === 'aborted' ||\n fetchParams.controller.state === 'terminated'\n}\n\nconst normalizeMethodRecord = {\n delete: 'DELETE',\n DELETE: 'DELETE',\n get: 'GET',\n GET: 'GET',\n head: 'HEAD',\n HEAD: 'HEAD',\n options: 'OPTIONS',\n OPTIONS: 'OPTIONS',\n post: 'POST',\n POST: 'POST',\n put: 'PUT',\n PUT: 'PUT'\n}\n\n// Note: object prototypes should not be able to be referenced. e.g. `Object#hasOwnProperty`.\nObject.setPrototypeOf(normalizeMethodRecord, null)\n\n/**\n * @see https://fetch.spec.whatwg.org/#concept-method-normalize\n * @param {string} method\n */\nfunction normalizeMethod (method) {\n return normalizeMethodRecord[method.toLowerCase()] ?? method\n}\n\n// https://infra.spec.whatwg.org/#serialize-a-javascript-value-to-a-json-string\nfunction serializeJavascriptValueToJSONString (value) {\n // 1. Let result be ? Call(%JSON.stringify%, undefined, « value »).\n const result = JSON.stringify(value)\n\n // 2. If result is undefined, then throw a TypeError.\n if (result === undefined) {\n throw new TypeError('Value is not JSON serializable')\n }\n\n // 3. Assert: result is a string.\n assert(typeof result === 'string')\n\n // 4. Return result.\n return result\n}\n\n// https://tc39.es/ecma262/#sec-%25iteratorprototype%25-object\nconst esIteratorPrototype = Object.getPrototypeOf(Object.getPrototypeOf([][Symbol.iterator]()))\n\n/**\n * @see https://webidl.spec.whatwg.org/#dfn-iterator-prototype-object\n * @param {() => unknown[]} iterator\n * @param {string} name name of the instance\n * @param {'key'|'value'|'key+value'} kind\n */\nfunction makeIterator (iterator, name, kind) {\n const object = {\n index: 0,\n kind,\n target: iterator\n }\n\n const i = {\n next () {\n // 1. Let interface be the interface for which the iterator prototype object exists.\n\n // 2. Let thisValue be the this value.\n\n // 3. Let object be ? ToObject(thisValue).\n\n // 4. If object is a platform object, then perform a security\n // check, passing:\n\n // 5. If object is not a default iterator object for interface,\n // then throw a TypeError.\n if (Object.getPrototypeOf(this) !== i) {\n throw new TypeError(\n `'next' called on an object that does not implement interface ${name} Iterator.`\n )\n }\n\n // 6. Let index be object’s index.\n // 7. Let kind be object’s kind.\n // 8. Let values be object’s target's value pairs to iterate over.\n const { index, kind, target } = object\n const values = target()\n\n // 9. Let len be the length of values.\n const len = values.length\n\n // 10. If index is greater than or equal to len, then return\n // CreateIterResultObject(undefined, true).\n if (index >= len) {\n return { value: undefined, done: true }\n }\n\n // 11. Let pair be the entry in values at index index.\n const pair = values[index]\n\n // 12. Set object’s index to index + 1.\n object.index = index + 1\n\n // 13. Return the iterator result for pair and kind.\n return iteratorResult(pair, kind)\n },\n // The class string of an iterator prototype object for a given interface is the\n // result of concatenating the identifier of the interface and the string \" Iterator\".\n [Symbol.toStringTag]: `${name} Iterator`\n }\n\n // The [[Prototype]] internal slot of an iterator prototype object must be %IteratorPrototype%.\n Object.setPrototypeOf(i, esIteratorPrototype)\n // esIteratorPrototype needs to be the prototype of i\n // which is the prototype of an empty object. Yes, it's confusing.\n return Object.setPrototypeOf({}, i)\n}\n\n// https://webidl.spec.whatwg.org/#iterator-result\nfunction iteratorResult (pair, kind) {\n let result\n\n // 1. Let result be a value determined by the value of kind:\n switch (kind) {\n case 'key': {\n // 1. Let idlKey be pair’s key.\n // 2. Let key be the result of converting idlKey to an\n // ECMAScript value.\n // 3. result is key.\n result = pair[0]\n break\n }\n case 'value': {\n // 1. Let idlValue be pair’s value.\n // 2. Let value be the result of converting idlValue to\n // an ECMAScript value.\n // 3. result is value.\n result = pair[1]\n break\n }\n case 'key+value': {\n // 1. Let idlKey be pair’s key.\n // 2. Let idlValue be pair’s value.\n // 3. Let key be the result of converting idlKey to an\n // ECMAScript value.\n // 4. Let value be the result of converting idlValue to\n // an ECMAScript value.\n // 5. Let array be ! ArrayCreate(2).\n // 6. Call ! CreateDataProperty(array, \"0\", key).\n // 7. Call ! CreateDataProperty(array, \"1\", value).\n // 8. result is array.\n result = pair\n break\n }\n }\n\n // 2. Return CreateIterResultObject(result, false).\n return { value: result, done: false }\n}\n\n/**\n * @see https://fetch.spec.whatwg.org/#body-fully-read\n */\nasync function fullyReadBody (body, processBody, processBodyError) {\n // 1. If taskDestination is null, then set taskDestination to\n // the result of starting a new parallel queue.\n\n // 2. Let successSteps given a byte sequence bytes be to queue a\n // fetch task to run processBody given bytes, with taskDestination.\n const successSteps = processBody\n\n // 3. Let errorSteps be to queue a fetch task to run processBodyError,\n // with taskDestination.\n const errorSteps = processBodyError\n\n // 4. Let reader be the result of getting a reader for body’s stream.\n // If that threw an exception, then run errorSteps with that\n // exception and return.\n let reader\n\n try {\n reader = body.stream.getReader()\n } catch (e) {\n errorSteps(e)\n return\n }\n\n // 5. Read all bytes from reader, given successSteps and errorSteps.\n try {\n const result = await readAllBytes(reader)\n successSteps(result)\n } catch (e) {\n errorSteps(e)\n }\n}\n\n/** @type {ReadableStream} */\nlet ReadableStream = globalThis.ReadableStream\n\nfunction isReadableStreamLike (stream) {\n if (!ReadableStream) {\n ReadableStream = require('stream/web').ReadableStream\n }\n\n return stream instanceof ReadableStream || (\n stream[Symbol.toStringTag] === 'ReadableStream' &&\n typeof stream.tee === 'function'\n )\n}\n\nconst MAXIMUM_ARGUMENT_LENGTH = 65535\n\n/**\n * @see https://infra.spec.whatwg.org/#isomorphic-decode\n * @param {number[]|Uint8Array} input\n */\nfunction isomorphicDecode (input) {\n // 1. To isomorphic decode a byte sequence input, return a string whose code point\n // length is equal to input’s length and whose code points have the same values\n // as the values of input’s bytes, in the same order.\n\n if (input.length < MAXIMUM_ARGUMENT_LENGTH) {\n return String.fromCharCode(...input)\n }\n\n return input.reduce((previous, current) => previous + String.fromCharCode(current), '')\n}\n\n/**\n * @param {ReadableStreamController} controller\n */\nfunction readableStreamClose (controller) {\n try {\n controller.close()\n } catch (err) {\n // TODO: add comment explaining why this error occurs.\n if (!err.message.includes('Controller is already closed')) {\n throw err\n }\n }\n}\n\n/**\n * @see https://infra.spec.whatwg.org/#isomorphic-encode\n * @param {string} input\n */\nfunction isomorphicEncode (input) {\n // 1. Assert: input contains no code points greater than U+00FF.\n for (let i = 0; i < input.length; i++) {\n assert(input.charCodeAt(i) <= 0xFF)\n }\n\n // 2. Return a byte sequence whose length is equal to input’s code\n // point length and whose bytes have the same values as the\n // values of input’s code points, in the same order\n return input\n}\n\n/**\n * @see https://streams.spec.whatwg.org/#readablestreamdefaultreader-read-all-bytes\n * @see https://streams.spec.whatwg.org/#read-loop\n * @param {ReadableStreamDefaultReader} reader\n */\nasync function readAllBytes (reader) {\n const bytes = []\n let byteLength = 0\n\n while (true) {\n const { done, value: chunk } = await reader.read()\n\n if (done) {\n // 1. Call successSteps with bytes.\n return Buffer.concat(bytes, byteLength)\n }\n\n // 1. If chunk is not a Uint8Array object, call failureSteps\n // with a TypeError and abort these steps.\n if (!isUint8Array(chunk)) {\n throw new TypeError('Received non-Uint8Array chunk')\n }\n\n // 2. Append the bytes represented by chunk to bytes.\n bytes.push(chunk)\n byteLength += chunk.length\n\n // 3. Read-loop given reader, bytes, successSteps, and failureSteps.\n }\n}\n\n/**\n * @see https://fetch.spec.whatwg.org/#is-local\n * @param {URL} url\n */\nfunction urlIsLocal (url) {\n assert('protocol' in url) // ensure it's a url object\n\n const protocol = url.protocol\n\n return protocol === 'about:' || protocol === 'blob:' || protocol === 'data:'\n}\n\n/**\n * @param {string|URL} url\n */\nfunction urlHasHttpsScheme (url) {\n if (typeof url === 'string') {\n return url.startsWith('https:')\n }\n\n return url.protocol === 'https:'\n}\n\n/**\n * @see https://fetch.spec.whatwg.org/#http-scheme\n * @param {URL} url\n */\nfunction urlIsHttpHttpsScheme (url) {\n assert('protocol' in url) // ensure it's a url object\n\n const protocol = url.protocol\n\n return protocol === 'http:' || protocol === 'https:'\n}\n\n/**\n * Fetch supports node >= 16.8.0, but Object.hasOwn was added in v16.9.0.\n */\nconst hasOwn = Object.hasOwn || ((dict, key) => Object.prototype.hasOwnProperty.call(dict, key))\n\nmodule.exports = {\n isAborted,\n isCancelled,\n createDeferredPromise,\n ReadableStreamFrom,\n toUSVString,\n tryUpgradeRequestToAPotentiallyTrustworthyURL,\n coarsenedSharedCurrentTime,\n determineRequestsReferrer,\n makePolicyContainer,\n clonePolicyContainer,\n appendFetchMetadata,\n appendRequestOriginHeader,\n TAOCheck,\n corsCheck,\n crossOriginResourcePolicyCheck,\n createOpaqueTimingInfo,\n setRequestReferrerPolicyOnRedirect,\n isValidHTTPToken,\n requestBadPort,\n requestCurrentURL,\n responseURL,\n responseLocationURL,\n isBlobLike,\n isURLPotentiallyTrustworthy,\n isValidReasonPhrase,\n sameOrigin,\n normalizeMethod,\n serializeJavascriptValueToJSONString,\n makeIterator,\n isValidHeaderName,\n isValidHeaderValue,\n hasOwn,\n isErrorLike,\n fullyReadBody,\n bytesMatch,\n isReadableStreamLike,\n readableStreamClose,\n isomorphicEncode,\n isomorphicDecode,\n urlIsLocal,\n urlHasHttpsScheme,\n urlIsHttpHttpsScheme,\n readAllBytes,\n normalizeMethodRecord,\n parseMetadata\n}\n","'use strict'\n\nmodule.exports = {\n kUrl: Symbol('url'),\n kHeaders: Symbol('headers'),\n kSignal: Symbol('signal'),\n kState: Symbol('state'),\n kGuard: Symbol('guard'),\n kRealm: Symbol('realm')\n}\n","'use strict'\n\nconst { types } = require('util')\nconst { hasOwn, toUSVString } = require('./util')\n\n/** @type {import('../../types/webidl').Webidl} */\nconst webidl = {}\nwebidl.converters = {}\nwebidl.util = {}\nwebidl.errors = {}\n\nwebidl.errors.exception = function (message) {\n return new TypeError(`${message.header}: ${message.message}`)\n}\n\nwebidl.errors.conversionFailed = function (context) {\n const plural = context.types.length === 1 ? '' : ' one of'\n const message =\n `${context.argument} could not be converted to` +\n `${plural}: ${context.types.join(', ')}.`\n\n return webidl.errors.exception({\n header: context.prefix,\n message\n })\n}\n\nwebidl.errors.invalidArgument = function (context) {\n return webidl.errors.exception({\n header: context.prefix,\n message: `\"${context.value}\" is an invalid ${context.type}.`\n })\n}\n\n// https://webidl.spec.whatwg.org/#implements\nwebidl.brandCheck = function (V, I, opts = undefined) {\n if (opts?.strict !== false && !(V instanceof I)) {\n throw new TypeError('Illegal invocation')\n } else {\n return V?.[Symbol.toStringTag] === I.prototype[Symbol.toStringTag]\n }\n}\n\nwebidl.argumentLengthCheck = function ({ length }, min, ctx) {\n if (length < min) {\n throw webidl.errors.exception({\n message: `${min} argument${min !== 1 ? 's' : ''} required, ` +\n `but${length ? ' only' : ''} ${length} found.`,\n ...ctx\n })\n }\n}\n\nwebidl.illegalConstructor = function () {\n throw webidl.errors.exception({\n header: 'TypeError',\n message: 'Illegal constructor'\n })\n}\n\n// https://tc39.es/ecma262/#sec-ecmascript-data-types-and-values\nwebidl.util.Type = function (V) {\n switch (typeof V) {\n case 'undefined': return 'Undefined'\n case 'boolean': return 'Boolean'\n case 'string': return 'String'\n case 'symbol': return 'Symbol'\n case 'number': return 'Number'\n case 'bigint': return 'BigInt'\n case 'function':\n case 'object': {\n if (V === null) {\n return 'Null'\n }\n\n return 'Object'\n }\n }\n}\n\n// https://webidl.spec.whatwg.org/#abstract-opdef-converttoint\nwebidl.util.ConvertToInt = function (V, bitLength, signedness, opts = {}) {\n let upperBound\n let lowerBound\n\n // 1. If bitLength is 64, then:\n if (bitLength === 64) {\n // 1. Let upperBound be 2^53 − 1.\n upperBound = Math.pow(2, 53) - 1\n\n // 2. If signedness is \"unsigned\", then let lowerBound be 0.\n if (signedness === 'unsigned') {\n lowerBound = 0\n } else {\n // 3. Otherwise let lowerBound be −2^53 + 1.\n lowerBound = Math.pow(-2, 53) + 1\n }\n } else if (signedness === 'unsigned') {\n // 2. Otherwise, if signedness is \"unsigned\", then:\n\n // 1. Let lowerBound be 0.\n lowerBound = 0\n\n // 2. Let upperBound be 2^bitLength − 1.\n upperBound = Math.pow(2, bitLength) - 1\n } else {\n // 3. Otherwise:\n\n // 1. Let lowerBound be -2^bitLength − 1.\n lowerBound = Math.pow(-2, bitLength) - 1\n\n // 2. Let upperBound be 2^bitLength − 1 − 1.\n upperBound = Math.pow(2, bitLength - 1) - 1\n }\n\n // 4. Let x be ? ToNumber(V).\n let x = Number(V)\n\n // 5. If x is −0, then set x to +0.\n if (x === 0) {\n x = 0\n }\n\n // 6. If the conversion is to an IDL type associated\n // with the [EnforceRange] extended attribute, then:\n if (opts.enforceRange === true) {\n // 1. If x is NaN, +∞, or −∞, then throw a TypeError.\n if (\n Number.isNaN(x) ||\n x === Number.POSITIVE_INFINITY ||\n x === Number.NEGATIVE_INFINITY\n ) {\n throw webidl.errors.exception({\n header: 'Integer conversion',\n message: `Could not convert ${V} to an integer.`\n })\n }\n\n // 2. Set x to IntegerPart(x).\n x = webidl.util.IntegerPart(x)\n\n // 3. If x < lowerBound or x > upperBound, then\n // throw a TypeError.\n if (x < lowerBound || x > upperBound) {\n throw webidl.errors.exception({\n header: 'Integer conversion',\n message: `Value must be between ${lowerBound}-${upperBound}, got ${x}.`\n })\n }\n\n // 4. Return x.\n return x\n }\n\n // 7. If x is not NaN and the conversion is to an IDL\n // type associated with the [Clamp] extended\n // attribute, then:\n if (!Number.isNaN(x) && opts.clamp === true) {\n // 1. Set x to min(max(x, lowerBound), upperBound).\n x = Math.min(Math.max(x, lowerBound), upperBound)\n\n // 2. Round x to the nearest integer, choosing the\n // even integer if it lies halfway between two,\n // and choosing +0 rather than −0.\n if (Math.floor(x) % 2 === 0) {\n x = Math.floor(x)\n } else {\n x = Math.ceil(x)\n }\n\n // 3. Return x.\n return x\n }\n\n // 8. If x is NaN, +0, +∞, or −∞, then return +0.\n if (\n Number.isNaN(x) ||\n (x === 0 && Object.is(0, x)) ||\n x === Number.POSITIVE_INFINITY ||\n x === Number.NEGATIVE_INFINITY\n ) {\n return 0\n }\n\n // 9. Set x to IntegerPart(x).\n x = webidl.util.IntegerPart(x)\n\n // 10. Set x to x modulo 2^bitLength.\n x = x % Math.pow(2, bitLength)\n\n // 11. If signedness is \"signed\" and x ≥ 2^bitLength − 1,\n // then return x − 2^bitLength.\n if (signedness === 'signed' && x >= Math.pow(2, bitLength) - 1) {\n return x - Math.pow(2, bitLength)\n }\n\n // 12. Otherwise, return x.\n return x\n}\n\n// https://webidl.spec.whatwg.org/#abstract-opdef-integerpart\nwebidl.util.IntegerPart = function (n) {\n // 1. Let r be floor(abs(n)).\n const r = Math.floor(Math.abs(n))\n\n // 2. If n < 0, then return -1 × r.\n if (n < 0) {\n return -1 * r\n }\n\n // 3. Otherwise, return r.\n return r\n}\n\n// https://webidl.spec.whatwg.org/#es-sequence\nwebidl.sequenceConverter = function (converter) {\n return (V) => {\n // 1. If Type(V) is not Object, throw a TypeError.\n if (webidl.util.Type(V) !== 'Object') {\n throw webidl.errors.exception({\n header: 'Sequence',\n message: `Value of type ${webidl.util.Type(V)} is not an Object.`\n })\n }\n\n // 2. Let method be ? GetMethod(V, @@iterator).\n /** @type {Generator} */\n const method = V?.[Symbol.iterator]?.()\n const seq = []\n\n // 3. If method is undefined, throw a TypeError.\n if (\n method === undefined ||\n typeof method.next !== 'function'\n ) {\n throw webidl.errors.exception({\n header: 'Sequence',\n message: 'Object is not an iterator.'\n })\n }\n\n // https://webidl.spec.whatwg.org/#create-sequence-from-iterable\n while (true) {\n const { done, value } = method.next()\n\n if (done) {\n break\n }\n\n seq.push(converter(value))\n }\n\n return seq\n }\n}\n\n// https://webidl.spec.whatwg.org/#es-to-record\nwebidl.recordConverter = function (keyConverter, valueConverter) {\n return (O) => {\n // 1. If Type(O) is not Object, throw a TypeError.\n if (webidl.util.Type(O) !== 'Object') {\n throw webidl.errors.exception({\n header: 'Record',\n message: `Value of type ${webidl.util.Type(O)} is not an Object.`\n })\n }\n\n // 2. Let result be a new empty instance of record.\n const result = {}\n\n if (!types.isProxy(O)) {\n // Object.keys only returns enumerable properties\n const keys = Object.keys(O)\n\n for (const key of keys) {\n // 1. Let typedKey be key converted to an IDL value of type K.\n const typedKey = keyConverter(key)\n\n // 2. Let value be ? Get(O, key).\n // 3. Let typedValue be value converted to an IDL value of type V.\n const typedValue = valueConverter(O[key])\n\n // 4. Set result[typedKey] to typedValue.\n result[typedKey] = typedValue\n }\n\n // 5. Return result.\n return result\n }\n\n // 3. Let keys be ? O.[[OwnPropertyKeys]]().\n const keys = Reflect.ownKeys(O)\n\n // 4. For each key of keys.\n for (const key of keys) {\n // 1. Let desc be ? O.[[GetOwnProperty]](key).\n const desc = Reflect.getOwnPropertyDescriptor(O, key)\n\n // 2. If desc is not undefined and desc.[[Enumerable]] is true:\n if (desc?.enumerable) {\n // 1. Let typedKey be key converted to an IDL value of type K.\n const typedKey = keyConverter(key)\n\n // 2. Let value be ? Get(O, key).\n // 3. Let typedValue be value converted to an IDL value of type V.\n const typedValue = valueConverter(O[key])\n\n // 4. Set result[typedKey] to typedValue.\n result[typedKey] = typedValue\n }\n }\n\n // 5. Return result.\n return result\n }\n}\n\nwebidl.interfaceConverter = function (i) {\n return (V, opts = {}) => {\n if (opts.strict !== false && !(V instanceof i)) {\n throw webidl.errors.exception({\n header: i.name,\n message: `Expected ${V} to be an instance of ${i.name}.`\n })\n }\n\n return V\n }\n}\n\nwebidl.dictionaryConverter = function (converters) {\n return (dictionary) => {\n const type = webidl.util.Type(dictionary)\n const dict = {}\n\n if (type === 'Null' || type === 'Undefined') {\n return dict\n } else if (type !== 'Object') {\n throw webidl.errors.exception({\n header: 'Dictionary',\n message: `Expected ${dictionary} to be one of: Null, Undefined, Object.`\n })\n }\n\n for (const options of converters) {\n const { key, defaultValue, required, converter } = options\n\n if (required === true) {\n if (!hasOwn(dictionary, key)) {\n throw webidl.errors.exception({\n header: 'Dictionary',\n message: `Missing required key \"${key}\".`\n })\n }\n }\n\n let value = dictionary[key]\n const hasDefault = hasOwn(options, 'defaultValue')\n\n // Only use defaultValue if value is undefined and\n // a defaultValue options was provided.\n if (hasDefault && value !== null) {\n value = value ?? defaultValue\n }\n\n // A key can be optional and have no default value.\n // When this happens, do not perform a conversion,\n // and do not assign the key a value.\n if (required || hasDefault || value !== undefined) {\n value = converter(value)\n\n if (\n options.allowedValues &&\n !options.allowedValues.includes(value)\n ) {\n throw webidl.errors.exception({\n header: 'Dictionary',\n message: `${value} is not an accepted type. Expected one of ${options.allowedValues.join(', ')}.`\n })\n }\n\n dict[key] = value\n }\n }\n\n return dict\n }\n}\n\nwebidl.nullableConverter = function (converter) {\n return (V) => {\n if (V === null) {\n return V\n }\n\n return converter(V)\n }\n}\n\n// https://webidl.spec.whatwg.org/#es-DOMString\nwebidl.converters.DOMString = function (V, opts = {}) {\n // 1. If V is null and the conversion is to an IDL type\n // associated with the [LegacyNullToEmptyString]\n // extended attribute, then return the DOMString value\n // that represents the empty string.\n if (V === null && opts.legacyNullToEmptyString) {\n return ''\n }\n\n // 2. Let x be ? ToString(V).\n if (typeof V === 'symbol') {\n throw new TypeError('Could not convert argument of type symbol to string.')\n }\n\n // 3. Return the IDL DOMString value that represents the\n // same sequence of code units as the one the\n // ECMAScript String value x represents.\n return String(V)\n}\n\n// https://webidl.spec.whatwg.org/#es-ByteString\nwebidl.converters.ByteString = function (V) {\n // 1. Let x be ? ToString(V).\n // Note: DOMString converter perform ? ToString(V)\n const x = webidl.converters.DOMString(V)\n\n // 2. If the value of any element of x is greater than\n // 255, then throw a TypeError.\n for (let index = 0; index < x.length; index++) {\n if (x.charCodeAt(index) > 255) {\n throw new TypeError(\n 'Cannot convert argument to a ByteString because the character at ' +\n `index ${index} has a value of ${x.charCodeAt(index)} which is greater than 255.`\n )\n }\n }\n\n // 3. Return an IDL ByteString value whose length is the\n // length of x, and where the value of each element is\n // the value of the corresponding element of x.\n return x\n}\n\n// https://webidl.spec.whatwg.org/#es-USVString\nwebidl.converters.USVString = toUSVString\n\n// https://webidl.spec.whatwg.org/#es-boolean\nwebidl.converters.boolean = function (V) {\n // 1. Let x be the result of computing ToBoolean(V).\n const x = Boolean(V)\n\n // 2. Return the IDL boolean value that is the one that represents\n // the same truth value as the ECMAScript Boolean value x.\n return x\n}\n\n// https://webidl.spec.whatwg.org/#es-any\nwebidl.converters.any = function (V) {\n return V\n}\n\n// https://webidl.spec.whatwg.org/#es-long-long\nwebidl.converters['long long'] = function (V) {\n // 1. Let x be ? ConvertToInt(V, 64, \"signed\").\n const x = webidl.util.ConvertToInt(V, 64, 'signed')\n\n // 2. Return the IDL long long value that represents\n // the same numeric value as x.\n return x\n}\n\n// https://webidl.spec.whatwg.org/#es-unsigned-long-long\nwebidl.converters['unsigned long long'] = function (V) {\n // 1. Let x be ? ConvertToInt(V, 64, \"unsigned\").\n const x = webidl.util.ConvertToInt(V, 64, 'unsigned')\n\n // 2. Return the IDL unsigned long long value that\n // represents the same numeric value as x.\n return x\n}\n\n// https://webidl.spec.whatwg.org/#es-unsigned-long\nwebidl.converters['unsigned long'] = function (V) {\n // 1. Let x be ? ConvertToInt(V, 32, \"unsigned\").\n const x = webidl.util.ConvertToInt(V, 32, 'unsigned')\n\n // 2. Return the IDL unsigned long value that\n // represents the same numeric value as x.\n return x\n}\n\n// https://webidl.spec.whatwg.org/#es-unsigned-short\nwebidl.converters['unsigned short'] = function (V, opts) {\n // 1. Let x be ? ConvertToInt(V, 16, \"unsigned\").\n const x = webidl.util.ConvertToInt(V, 16, 'unsigned', opts)\n\n // 2. Return the IDL unsigned short value that represents\n // the same numeric value as x.\n return x\n}\n\n// https://webidl.spec.whatwg.org/#idl-ArrayBuffer\nwebidl.converters.ArrayBuffer = function (V, opts = {}) {\n // 1. If Type(V) is not Object, or V does not have an\n // [[ArrayBufferData]] internal slot, then throw a\n // TypeError.\n // see: https://tc39.es/ecma262/#sec-properties-of-the-arraybuffer-instances\n // see: https://tc39.es/ecma262/#sec-properties-of-the-sharedarraybuffer-instances\n if (\n webidl.util.Type(V) !== 'Object' ||\n !types.isAnyArrayBuffer(V)\n ) {\n throw webidl.errors.conversionFailed({\n prefix: `${V}`,\n argument: `${V}`,\n types: ['ArrayBuffer']\n })\n }\n\n // 2. If the conversion is not to an IDL type associated\n // with the [AllowShared] extended attribute, and\n // IsSharedArrayBuffer(V) is true, then throw a\n // TypeError.\n if (opts.allowShared === false && types.isSharedArrayBuffer(V)) {\n throw webidl.errors.exception({\n header: 'ArrayBuffer',\n message: 'SharedArrayBuffer is not allowed.'\n })\n }\n\n // 3. If the conversion is not to an IDL type associated\n // with the [AllowResizable] extended attribute, and\n // IsResizableArrayBuffer(V) is true, then throw a\n // TypeError.\n // Note: resizable ArrayBuffers are currently a proposal.\n\n // 4. Return the IDL ArrayBuffer value that is a\n // reference to the same object as V.\n return V\n}\n\nwebidl.converters.TypedArray = function (V, T, opts = {}) {\n // 1. Let T be the IDL type V is being converted to.\n\n // 2. If Type(V) is not Object, or V does not have a\n // [[TypedArrayName]] internal slot with a value\n // equal to T’s name, then throw a TypeError.\n if (\n webidl.util.Type(V) !== 'Object' ||\n !types.isTypedArray(V) ||\n V.constructor.name !== T.name\n ) {\n throw webidl.errors.conversionFailed({\n prefix: `${T.name}`,\n argument: `${V}`,\n types: [T.name]\n })\n }\n\n // 3. If the conversion is not to an IDL type associated\n // with the [AllowShared] extended attribute, and\n // IsSharedArrayBuffer(V.[[ViewedArrayBuffer]]) is\n // true, then throw a TypeError.\n if (opts.allowShared === false && types.isSharedArrayBuffer(V.buffer)) {\n throw webidl.errors.exception({\n header: 'ArrayBuffer',\n message: 'SharedArrayBuffer is not allowed.'\n })\n }\n\n // 4. If the conversion is not to an IDL type associated\n // with the [AllowResizable] extended attribute, and\n // IsResizableArrayBuffer(V.[[ViewedArrayBuffer]]) is\n // true, then throw a TypeError.\n // Note: resizable array buffers are currently a proposal\n\n // 5. Return the IDL value of type T that is a reference\n // to the same object as V.\n return V\n}\n\nwebidl.converters.DataView = function (V, opts = {}) {\n // 1. If Type(V) is not Object, or V does not have a\n // [[DataView]] internal slot, then throw a TypeError.\n if (webidl.util.Type(V) !== 'Object' || !types.isDataView(V)) {\n throw webidl.errors.exception({\n header: 'DataView',\n message: 'Object is not a DataView.'\n })\n }\n\n // 2. If the conversion is not to an IDL type associated\n // with the [AllowShared] extended attribute, and\n // IsSharedArrayBuffer(V.[[ViewedArrayBuffer]]) is true,\n // then throw a TypeError.\n if (opts.allowShared === false && types.isSharedArrayBuffer(V.buffer)) {\n throw webidl.errors.exception({\n header: 'ArrayBuffer',\n message: 'SharedArrayBuffer is not allowed.'\n })\n }\n\n // 3. If the conversion is not to an IDL type associated\n // with the [AllowResizable] extended attribute, and\n // IsResizableArrayBuffer(V.[[ViewedArrayBuffer]]) is\n // true, then throw a TypeError.\n // Note: resizable ArrayBuffers are currently a proposal\n\n // 4. Return the IDL DataView value that is a reference\n // to the same object as V.\n return V\n}\n\n// https://webidl.spec.whatwg.org/#BufferSource\nwebidl.converters.BufferSource = function (V, opts = {}) {\n if (types.isAnyArrayBuffer(V)) {\n return webidl.converters.ArrayBuffer(V, opts)\n }\n\n if (types.isTypedArray(V)) {\n return webidl.converters.TypedArray(V, V.constructor)\n }\n\n if (types.isDataView(V)) {\n return webidl.converters.DataView(V, opts)\n }\n\n throw new TypeError(`Could not convert ${V} to a BufferSource.`)\n}\n\nwebidl.converters['sequence'] = webidl.sequenceConverter(\n webidl.converters.ByteString\n)\n\nwebidl.converters['sequence>'] = webidl.sequenceConverter(\n webidl.converters['sequence']\n)\n\nwebidl.converters['record'] = webidl.recordConverter(\n webidl.converters.ByteString,\n webidl.converters.ByteString\n)\n\nmodule.exports = {\n webidl\n}\n","const assert = require('assert')\nconst { atob } = require('buffer')\nconst { isomorphicDecode } = require('./util')\n\nconst encoder = new TextEncoder()\n\n/**\n * @see https://mimesniff.spec.whatwg.org/#http-token-code-point\n */\nconst HTTP_TOKEN_CODEPOINTS = /^[!#$%&'*+-.^_|~A-Za-z0-9]+$/\nconst HTTP_WHITESPACE_REGEX = /(\\u000A|\\u000D|\\u0009|\\u0020)/ // eslint-disable-line\n/**\n * @see https://mimesniff.spec.whatwg.org/#http-quoted-string-token-code-point\n */\nconst HTTP_QUOTED_STRING_TOKENS = /[\\u0009|\\u0020-\\u007E|\\u0080-\\u00FF]/ // eslint-disable-line\n\n// https://fetch.spec.whatwg.org/#data-url-processor\n/** @param {URL} dataURL */\nfunction dataURLProcessor (dataURL) {\n // 1. Assert: dataURL’s scheme is \"data\".\n assert(dataURL.protocol === 'data:')\n\n // 2. Let input be the result of running the URL\n // serializer on dataURL with exclude fragment\n // set to true.\n let input = URLSerializer(dataURL, true)\n\n // 3. Remove the leading \"data:\" string from input.\n input = input.slice(5)\n\n // 4. Let position point at the start of input.\n const position = { position: 0 }\n\n // 5. Let mimeType be the result of collecting a\n // sequence of code points that are not equal\n // to U+002C (,), given position.\n let mimeType = collectASequenceOfCodePointsFast(\n ',',\n input,\n position\n )\n\n // 6. Strip leading and trailing ASCII whitespace\n // from mimeType.\n // Undici implementation note: we need to store the\n // length because if the mimetype has spaces removed,\n // the wrong amount will be sliced from the input in\n // step #9\n const mimeTypeLength = mimeType.length\n mimeType = removeASCIIWhitespace(mimeType, true, true)\n\n // 7. If position is past the end of input, then\n // return failure\n if (position.position >= input.length) {\n return 'failure'\n }\n\n // 8. Advance position by 1.\n position.position++\n\n // 9. Let encodedBody be the remainder of input.\n const encodedBody = input.slice(mimeTypeLength + 1)\n\n // 10. Let body be the percent-decoding of encodedBody.\n let body = stringPercentDecode(encodedBody)\n\n // 11. If mimeType ends with U+003B (;), followed by\n // zero or more U+0020 SPACE, followed by an ASCII\n // case-insensitive match for \"base64\", then:\n if (/;(\\u0020){0,}base64$/i.test(mimeType)) {\n // 1. Let stringBody be the isomorphic decode of body.\n const stringBody = isomorphicDecode(body)\n\n // 2. Set body to the forgiving-base64 decode of\n // stringBody.\n body = forgivingBase64(stringBody)\n\n // 3. If body is failure, then return failure.\n if (body === 'failure') {\n return 'failure'\n }\n\n // 4. Remove the last 6 code points from mimeType.\n mimeType = mimeType.slice(0, -6)\n\n // 5. Remove trailing U+0020 SPACE code points from mimeType,\n // if any.\n mimeType = mimeType.replace(/(\\u0020)+$/, '')\n\n // 6. Remove the last U+003B (;) code point from mimeType.\n mimeType = mimeType.slice(0, -1)\n }\n\n // 12. If mimeType starts with U+003B (;), then prepend\n // \"text/plain\" to mimeType.\n if (mimeType.startsWith(';')) {\n mimeType = 'text/plain' + mimeType\n }\n\n // 13. Let mimeTypeRecord be the result of parsing\n // mimeType.\n let mimeTypeRecord = parseMIMEType(mimeType)\n\n // 14. If mimeTypeRecord is failure, then set\n // mimeTypeRecord to text/plain;charset=US-ASCII.\n if (mimeTypeRecord === 'failure') {\n mimeTypeRecord = parseMIMEType('text/plain;charset=US-ASCII')\n }\n\n // 15. Return a new data: URL struct whose MIME\n // type is mimeTypeRecord and body is body.\n // https://fetch.spec.whatwg.org/#data-url-struct\n return { mimeType: mimeTypeRecord, body }\n}\n\n// https://url.spec.whatwg.org/#concept-url-serializer\n/**\n * @param {URL} url\n * @param {boolean} excludeFragment\n */\nfunction URLSerializer (url, excludeFragment = false) {\n if (!excludeFragment) {\n return url.href\n }\n\n const href = url.href\n const hashLength = url.hash.length\n\n return hashLength === 0 ? href : href.substring(0, href.length - hashLength)\n}\n\n// https://infra.spec.whatwg.org/#collect-a-sequence-of-code-points\n/**\n * @param {(char: string) => boolean} condition\n * @param {string} input\n * @param {{ position: number }} position\n */\nfunction collectASequenceOfCodePoints (condition, input, position) {\n // 1. Let result be the empty string.\n let result = ''\n\n // 2. While position doesn’t point past the end of input and the\n // code point at position within input meets the condition condition:\n while (position.position < input.length && condition(input[position.position])) {\n // 1. Append that code point to the end of result.\n result += input[position.position]\n\n // 2. Advance position by 1.\n position.position++\n }\n\n // 3. Return result.\n return result\n}\n\n/**\n * A faster collectASequenceOfCodePoints that only works when comparing a single character.\n * @param {string} char\n * @param {string} input\n * @param {{ position: number }} position\n */\nfunction collectASequenceOfCodePointsFast (char, input, position) {\n const idx = input.indexOf(char, position.position)\n const start = position.position\n\n if (idx === -1) {\n position.position = input.length\n return input.slice(start)\n }\n\n position.position = idx\n return input.slice(start, position.position)\n}\n\n// https://url.spec.whatwg.org/#string-percent-decode\n/** @param {string} input */\nfunction stringPercentDecode (input) {\n // 1. Let bytes be the UTF-8 encoding of input.\n const bytes = encoder.encode(input)\n\n // 2. Return the percent-decoding of bytes.\n return percentDecode(bytes)\n}\n\n// https://url.spec.whatwg.org/#percent-decode\n/** @param {Uint8Array} input */\nfunction percentDecode (input) {\n // 1. Let output be an empty byte sequence.\n /** @type {number[]} */\n const output = []\n\n // 2. For each byte byte in input:\n for (let i = 0; i < input.length; i++) {\n const byte = input[i]\n\n // 1. If byte is not 0x25 (%), then append byte to output.\n if (byte !== 0x25) {\n output.push(byte)\n\n // 2. Otherwise, if byte is 0x25 (%) and the next two bytes\n // after byte in input are not in the ranges\n // 0x30 (0) to 0x39 (9), 0x41 (A) to 0x46 (F),\n // and 0x61 (a) to 0x66 (f), all inclusive, append byte\n // to output.\n } else if (\n byte === 0x25 &&\n !/^[0-9A-Fa-f]{2}$/i.test(String.fromCharCode(input[i + 1], input[i + 2]))\n ) {\n output.push(0x25)\n\n // 3. Otherwise:\n } else {\n // 1. Let bytePoint be the two bytes after byte in input,\n // decoded, and then interpreted as hexadecimal number.\n const nextTwoBytes = String.fromCharCode(input[i + 1], input[i + 2])\n const bytePoint = Number.parseInt(nextTwoBytes, 16)\n\n // 2. Append a byte whose value is bytePoint to output.\n output.push(bytePoint)\n\n // 3. Skip the next two bytes in input.\n i += 2\n }\n }\n\n // 3. Return output.\n return Uint8Array.from(output)\n}\n\n// https://mimesniff.spec.whatwg.org/#parse-a-mime-type\n/** @param {string} input */\nfunction parseMIMEType (input) {\n // 1. Remove any leading and trailing HTTP whitespace\n // from input.\n input = removeHTTPWhitespace(input, true, true)\n\n // 2. Let position be a position variable for input,\n // initially pointing at the start of input.\n const position = { position: 0 }\n\n // 3. Let type be the result of collecting a sequence\n // of code points that are not U+002F (/) from\n // input, given position.\n const type = collectASequenceOfCodePointsFast(\n '/',\n input,\n position\n )\n\n // 4. If type is the empty string or does not solely\n // contain HTTP token code points, then return failure.\n // https://mimesniff.spec.whatwg.org/#http-token-code-point\n if (type.length === 0 || !HTTP_TOKEN_CODEPOINTS.test(type)) {\n return 'failure'\n }\n\n // 5. If position is past the end of input, then return\n // failure\n if (position.position > input.length) {\n return 'failure'\n }\n\n // 6. Advance position by 1. (This skips past U+002F (/).)\n position.position++\n\n // 7. Let subtype be the result of collecting a sequence of\n // code points that are not U+003B (;) from input, given\n // position.\n let subtype = collectASequenceOfCodePointsFast(\n ';',\n input,\n position\n )\n\n // 8. Remove any trailing HTTP whitespace from subtype.\n subtype = removeHTTPWhitespace(subtype, false, true)\n\n // 9. If subtype is the empty string or does not solely\n // contain HTTP token code points, then return failure.\n if (subtype.length === 0 || !HTTP_TOKEN_CODEPOINTS.test(subtype)) {\n return 'failure'\n }\n\n const typeLowercase = type.toLowerCase()\n const subtypeLowercase = subtype.toLowerCase()\n\n // 10. Let mimeType be a new MIME type record whose type\n // is type, in ASCII lowercase, and subtype is subtype,\n // in ASCII lowercase.\n // https://mimesniff.spec.whatwg.org/#mime-type\n const mimeType = {\n type: typeLowercase,\n subtype: subtypeLowercase,\n /** @type {Map} */\n parameters: new Map(),\n // https://mimesniff.spec.whatwg.org/#mime-type-essence\n essence: `${typeLowercase}/${subtypeLowercase}`\n }\n\n // 11. While position is not past the end of input:\n while (position.position < input.length) {\n // 1. Advance position by 1. (This skips past U+003B (;).)\n position.position++\n\n // 2. Collect a sequence of code points that are HTTP\n // whitespace from input given position.\n collectASequenceOfCodePoints(\n // https://fetch.spec.whatwg.org/#http-whitespace\n char => HTTP_WHITESPACE_REGEX.test(char),\n input,\n position\n )\n\n // 3. Let parameterName be the result of collecting a\n // sequence of code points that are not U+003B (;)\n // or U+003D (=) from input, given position.\n let parameterName = collectASequenceOfCodePoints(\n (char) => char !== ';' && char !== '=',\n input,\n position\n )\n\n // 4. Set parameterName to parameterName, in ASCII\n // lowercase.\n parameterName = parameterName.toLowerCase()\n\n // 5. If position is not past the end of input, then:\n if (position.position < input.length) {\n // 1. If the code point at position within input is\n // U+003B (;), then continue.\n if (input[position.position] === ';') {\n continue\n }\n\n // 2. Advance position by 1. (This skips past U+003D (=).)\n position.position++\n }\n\n // 6. If position is past the end of input, then break.\n if (position.position > input.length) {\n break\n }\n\n // 7. Let parameterValue be null.\n let parameterValue = null\n\n // 8. If the code point at position within input is\n // U+0022 (\"), then:\n if (input[position.position] === '\"') {\n // 1. Set parameterValue to the result of collecting\n // an HTTP quoted string from input, given position\n // and the extract-value flag.\n parameterValue = collectAnHTTPQuotedString(input, position, true)\n\n // 2. Collect a sequence of code points that are not\n // U+003B (;) from input, given position.\n collectASequenceOfCodePointsFast(\n ';',\n input,\n position\n )\n\n // 9. Otherwise:\n } else {\n // 1. Set parameterValue to the result of collecting\n // a sequence of code points that are not U+003B (;)\n // from input, given position.\n parameterValue = collectASequenceOfCodePointsFast(\n ';',\n input,\n position\n )\n\n // 2. Remove any trailing HTTP whitespace from parameterValue.\n parameterValue = removeHTTPWhitespace(parameterValue, false, true)\n\n // 3. If parameterValue is the empty string, then continue.\n if (parameterValue.length === 0) {\n continue\n }\n }\n\n // 10. If all of the following are true\n // - parameterName is not the empty string\n // - parameterName solely contains HTTP token code points\n // - parameterValue solely contains HTTP quoted-string token code points\n // - mimeType’s parameters[parameterName] does not exist\n // then set mimeType’s parameters[parameterName] to parameterValue.\n if (\n parameterName.length !== 0 &&\n HTTP_TOKEN_CODEPOINTS.test(parameterName) &&\n (parameterValue.length === 0 || HTTP_QUOTED_STRING_TOKENS.test(parameterValue)) &&\n !mimeType.parameters.has(parameterName)\n ) {\n mimeType.parameters.set(parameterName, parameterValue)\n }\n }\n\n // 12. Return mimeType.\n return mimeType\n}\n\n// https://infra.spec.whatwg.org/#forgiving-base64-decode\n/** @param {string} data */\nfunction forgivingBase64 (data) {\n // 1. Remove all ASCII whitespace from data.\n data = data.replace(/[\\u0009\\u000A\\u000C\\u000D\\u0020]/g, '') // eslint-disable-line\n\n // 2. If data’s code point length divides by 4 leaving\n // no remainder, then:\n if (data.length % 4 === 0) {\n // 1. If data ends with one or two U+003D (=) code points,\n // then remove them from data.\n data = data.replace(/=?=$/, '')\n }\n\n // 3. If data’s code point length divides by 4 leaving\n // a remainder of 1, then return failure.\n if (data.length % 4 === 1) {\n return 'failure'\n }\n\n // 4. If data contains a code point that is not one of\n // U+002B (+)\n // U+002F (/)\n // ASCII alphanumeric\n // then return failure.\n if (/[^+/0-9A-Za-z]/.test(data)) {\n return 'failure'\n }\n\n const binary = atob(data)\n const bytes = new Uint8Array(binary.length)\n\n for (let byte = 0; byte < binary.length; byte++) {\n bytes[byte] = binary.charCodeAt(byte)\n }\n\n return bytes\n}\n\n// https://fetch.spec.whatwg.org/#collect-an-http-quoted-string\n// tests: https://fetch.spec.whatwg.org/#example-http-quoted-string\n/**\n * @param {string} input\n * @param {{ position: number }} position\n * @param {boolean?} extractValue\n */\nfunction collectAnHTTPQuotedString (input, position, extractValue) {\n // 1. Let positionStart be position.\n const positionStart = position.position\n\n // 2. Let value be the empty string.\n let value = ''\n\n // 3. Assert: the code point at position within input\n // is U+0022 (\").\n assert(input[position.position] === '\"')\n\n // 4. Advance position by 1.\n position.position++\n\n // 5. While true:\n while (true) {\n // 1. Append the result of collecting a sequence of code points\n // that are not U+0022 (\") or U+005C (\\) from input, given\n // position, to value.\n value += collectASequenceOfCodePoints(\n (char) => char !== '\"' && char !== '\\\\',\n input,\n position\n )\n\n // 2. If position is past the end of input, then break.\n if (position.position >= input.length) {\n break\n }\n\n // 3. Let quoteOrBackslash be the code point at position within\n // input.\n const quoteOrBackslash = input[position.position]\n\n // 4. Advance position by 1.\n position.position++\n\n // 5. If quoteOrBackslash is U+005C (\\), then:\n if (quoteOrBackslash === '\\\\') {\n // 1. If position is past the end of input, then append\n // U+005C (\\) to value and break.\n if (position.position >= input.length) {\n value += '\\\\'\n break\n }\n\n // 2. Append the code point at position within input to value.\n value += input[position.position]\n\n // 3. Advance position by 1.\n position.position++\n\n // 6. Otherwise:\n } else {\n // 1. Assert: quoteOrBackslash is U+0022 (\").\n assert(quoteOrBackslash === '\"')\n\n // 2. Break.\n break\n }\n }\n\n // 6. If the extract-value flag is set, then return value.\n if (extractValue) {\n return value\n }\n\n // 7. Return the code points from positionStart to position,\n // inclusive, within input.\n return input.slice(positionStart, position.position)\n}\n\n/**\n * @see https://mimesniff.spec.whatwg.org/#serialize-a-mime-type\n */\nfunction serializeAMimeType (mimeType) {\n assert(mimeType !== 'failure')\n const { parameters, essence } = mimeType\n\n // 1. Let serialization be the concatenation of mimeType’s\n // type, U+002F (/), and mimeType’s subtype.\n let serialization = essence\n\n // 2. For each name → value of mimeType’s parameters:\n for (let [name, value] of parameters.entries()) {\n // 1. Append U+003B (;) to serialization.\n serialization += ';'\n\n // 2. Append name to serialization.\n serialization += name\n\n // 3. Append U+003D (=) to serialization.\n serialization += '='\n\n // 4. If value does not solely contain HTTP token code\n // points or value is the empty string, then:\n if (!HTTP_TOKEN_CODEPOINTS.test(value)) {\n // 1. Precede each occurence of U+0022 (\") or\n // U+005C (\\) in value with U+005C (\\).\n value = value.replace(/(\\\\|\")/g, '\\\\$1')\n\n // 2. Prepend U+0022 (\") to value.\n value = '\"' + value\n\n // 3. Append U+0022 (\") to value.\n value += '\"'\n }\n\n // 5. Append value to serialization.\n serialization += value\n }\n\n // 3. Return serialization.\n return serialization\n}\n\n/**\n * @see https://fetch.spec.whatwg.org/#http-whitespace\n * @param {string} char\n */\nfunction isHTTPWhiteSpace (char) {\n return char === '\\r' || char === '\\n' || char === '\\t' || char === ' '\n}\n\n/**\n * @see https://fetch.spec.whatwg.org/#http-whitespace\n * @param {string} str\n */\nfunction removeHTTPWhitespace (str, leading = true, trailing = true) {\n let lead = 0\n let trail = str.length - 1\n\n if (leading) {\n for (; lead < str.length && isHTTPWhiteSpace(str[lead]); lead++);\n }\n\n if (trailing) {\n for (; trail > 0 && isHTTPWhiteSpace(str[trail]); trail--);\n }\n\n return str.slice(lead, trail + 1)\n}\n\n/**\n * @see https://infra.spec.whatwg.org/#ascii-whitespace\n * @param {string} char\n */\nfunction isASCIIWhitespace (char) {\n return char === '\\r' || char === '\\n' || char === '\\t' || char === '\\f' || char === ' '\n}\n\n/**\n * @see https://infra.spec.whatwg.org/#strip-leading-and-trailing-ascii-whitespace\n */\nfunction removeASCIIWhitespace (str, leading = true, trailing = true) {\n let lead = 0\n let trail = str.length - 1\n\n if (leading) {\n for (; lead < str.length && isASCIIWhitespace(str[lead]); lead++);\n }\n\n if (trailing) {\n for (; trail > 0 && isASCIIWhitespace(str[trail]); trail--);\n }\n\n return str.slice(lead, trail + 1)\n}\n\nmodule.exports = {\n dataURLProcessor,\n URLSerializer,\n collectASequenceOfCodePoints,\n collectASequenceOfCodePointsFast,\n stringPercentDecode,\n parseMIMEType,\n collectAnHTTPQuotedString,\n serializeAMimeType\n}\n","'use strict'\n\nconst { Blob, File: NativeFile } = require('buffer')\nconst { types } = require('util')\nconst { kState } = require('./symbols')\nconst { isBlobLike } = require('./util')\nconst { webidl } = require('./webidl')\nconst { parseMIMEType, serializeAMimeType } = require('./dataURL')\nconst { kEnumerableProperty } = require('../core/util')\nconst encoder = new TextEncoder()\n\nclass File extends Blob {\n constructor (fileBits, fileName, options = {}) {\n // The File constructor is invoked with two or three parameters, depending\n // on whether the optional dictionary parameter is used. When the File()\n // constructor is invoked, user agents must run the following steps:\n webidl.argumentLengthCheck(arguments, 2, { header: 'File constructor' })\n\n fileBits = webidl.converters['sequence'](fileBits)\n fileName = webidl.converters.USVString(fileName)\n options = webidl.converters.FilePropertyBag(options)\n\n // 1. Let bytes be the result of processing blob parts given fileBits and\n // options.\n // Note: Blob handles this for us\n\n // 2. Let n be the fileName argument to the constructor.\n const n = fileName\n\n // 3. Process FilePropertyBag dictionary argument by running the following\n // substeps:\n\n // 1. If the type member is provided and is not the empty string, let t\n // be set to the type dictionary member. If t contains any characters\n // outside the range U+0020 to U+007E, then set t to the empty string\n // and return from these substeps.\n // 2. Convert every character in t to ASCII lowercase.\n let t = options.type\n let d\n\n // eslint-disable-next-line no-labels\n substep: {\n if (t) {\n t = parseMIMEType(t)\n\n if (t === 'failure') {\n t = ''\n // eslint-disable-next-line no-labels\n break substep\n }\n\n t = serializeAMimeType(t).toLowerCase()\n }\n\n // 3. If the lastModified member is provided, let d be set to the\n // lastModified dictionary member. If it is not provided, set d to the\n // current date and time represented as the number of milliseconds since\n // the Unix Epoch (which is the equivalent of Date.now() [ECMA-262]).\n d = options.lastModified\n }\n\n // 4. Return a new File object F such that:\n // F refers to the bytes byte sequence.\n // F.size is set to the number of total bytes in bytes.\n // F.name is set to n.\n // F.type is set to t.\n // F.lastModified is set to d.\n\n super(processBlobParts(fileBits, options), { type: t })\n this[kState] = {\n name: n,\n lastModified: d,\n type: t\n }\n }\n\n get name () {\n webidl.brandCheck(this, File)\n\n return this[kState].name\n }\n\n get lastModified () {\n webidl.brandCheck(this, File)\n\n return this[kState].lastModified\n }\n\n get type () {\n webidl.brandCheck(this, File)\n\n return this[kState].type\n }\n}\n\nclass FileLike {\n constructor (blobLike, fileName, options = {}) {\n // TODO: argument idl type check\n\n // The File constructor is invoked with two or three parameters, depending\n // on whether the optional dictionary parameter is used. When the File()\n // constructor is invoked, user agents must run the following steps:\n\n // 1. Let bytes be the result of processing blob parts given fileBits and\n // options.\n\n // 2. Let n be the fileName argument to the constructor.\n const n = fileName\n\n // 3. Process FilePropertyBag dictionary argument by running the following\n // substeps:\n\n // 1. If the type member is provided and is not the empty string, let t\n // be set to the type dictionary member. If t contains any characters\n // outside the range U+0020 to U+007E, then set t to the empty string\n // and return from these substeps.\n // TODO\n const t = options.type\n\n // 2. Convert every character in t to ASCII lowercase.\n // TODO\n\n // 3. If the lastModified member is provided, let d be set to the\n // lastModified dictionary member. If it is not provided, set d to the\n // current date and time represented as the number of milliseconds since\n // the Unix Epoch (which is the equivalent of Date.now() [ECMA-262]).\n const d = options.lastModified ?? Date.now()\n\n // 4. Return a new File object F such that:\n // F refers to the bytes byte sequence.\n // F.size is set to the number of total bytes in bytes.\n // F.name is set to n.\n // F.type is set to t.\n // F.lastModified is set to d.\n\n this[kState] = {\n blobLike,\n name: n,\n type: t,\n lastModified: d\n }\n }\n\n stream (...args) {\n webidl.brandCheck(this, FileLike)\n\n return this[kState].blobLike.stream(...args)\n }\n\n arrayBuffer (...args) {\n webidl.brandCheck(this, FileLike)\n\n return this[kState].blobLike.arrayBuffer(...args)\n }\n\n slice (...args) {\n webidl.brandCheck(this, FileLike)\n\n return this[kState].blobLike.slice(...args)\n }\n\n text (...args) {\n webidl.brandCheck(this, FileLike)\n\n return this[kState].blobLike.text(...args)\n }\n\n get size () {\n webidl.brandCheck(this, FileLike)\n\n return this[kState].blobLike.size\n }\n\n get type () {\n webidl.brandCheck(this, FileLike)\n\n return this[kState].blobLike.type\n }\n\n get name () {\n webidl.brandCheck(this, FileLike)\n\n return this[kState].name\n }\n\n get lastModified () {\n webidl.brandCheck(this, FileLike)\n\n return this[kState].lastModified\n }\n\n get [Symbol.toStringTag] () {\n return 'File'\n }\n}\n\nObject.defineProperties(File.prototype, {\n [Symbol.toStringTag]: {\n value: 'File',\n configurable: true\n },\n name: kEnumerableProperty,\n lastModified: kEnumerableProperty\n})\n\nwebidl.converters.Blob = webidl.interfaceConverter(Blob)\n\nwebidl.converters.BlobPart = function (V, opts) {\n if (webidl.util.Type(V) === 'Object') {\n if (isBlobLike(V)) {\n return webidl.converters.Blob(V, { strict: false })\n }\n\n if (\n ArrayBuffer.isView(V) ||\n types.isAnyArrayBuffer(V)\n ) {\n return webidl.converters.BufferSource(V, opts)\n }\n }\n\n return webidl.converters.USVString(V, opts)\n}\n\nwebidl.converters['sequence'] = webidl.sequenceConverter(\n webidl.converters.BlobPart\n)\n\n// https://www.w3.org/TR/FileAPI/#dfn-FilePropertyBag\nwebidl.converters.FilePropertyBag = webidl.dictionaryConverter([\n {\n key: 'lastModified',\n converter: webidl.converters['long long'],\n get defaultValue () {\n return Date.now()\n }\n },\n {\n key: 'type',\n converter: webidl.converters.DOMString,\n defaultValue: ''\n },\n {\n key: 'endings',\n converter: (value) => {\n value = webidl.converters.DOMString(value)\n value = value.toLowerCase()\n\n if (value !== 'native') {\n value = 'transparent'\n }\n\n return value\n },\n defaultValue: 'transparent'\n }\n])\n\n/**\n * @see https://www.w3.org/TR/FileAPI/#process-blob-parts\n * @param {(NodeJS.TypedArray|Blob|string)[]} parts\n * @param {{ type: string, endings: string }} options\n */\nfunction processBlobParts (parts, options) {\n // 1. Let bytes be an empty sequence of bytes.\n /** @type {NodeJS.TypedArray[]} */\n const bytes = []\n\n // 2. For each element in parts:\n for (const element of parts) {\n // 1. If element is a USVString, run the following substeps:\n if (typeof element === 'string') {\n // 1. Let s be element.\n let s = element\n\n // 2. If the endings member of options is \"native\", set s\n // to the result of converting line endings to native\n // of element.\n if (options.endings === 'native') {\n s = convertLineEndingsNative(s)\n }\n\n // 3. Append the result of UTF-8 encoding s to bytes.\n bytes.push(encoder.encode(s))\n } else if (\n types.isAnyArrayBuffer(element) ||\n types.isTypedArray(element)\n ) {\n // 2. If element is a BufferSource, get a copy of the\n // bytes held by the buffer source, and append those\n // bytes to bytes.\n if (!element.buffer) { // ArrayBuffer\n bytes.push(new Uint8Array(element))\n } else {\n bytes.push(\n new Uint8Array(element.buffer, element.byteOffset, element.byteLength)\n )\n }\n } else if (isBlobLike(element)) {\n // 3. If element is a Blob, append the bytes it represents\n // to bytes.\n bytes.push(element)\n }\n }\n\n // 3. Return bytes.\n return bytes\n}\n\n/**\n * @see https://www.w3.org/TR/FileAPI/#convert-line-endings-to-native\n * @param {string} s\n */\nfunction convertLineEndingsNative (s) {\n // 1. Let native line ending be be the code point U+000A LF.\n let nativeLineEnding = '\\n'\n\n // 2. If the underlying platform’s conventions are to\n // represent newlines as a carriage return and line feed\n // sequence, set native line ending to the code point\n // U+000D CR followed by the code point U+000A LF.\n if (process.platform === 'win32') {\n nativeLineEnding = '\\r\\n'\n }\n\n return s.replace(/\\r?\\n/g, nativeLineEnding)\n}\n\n// If this function is moved to ./util.js, some tools (such as\n// rollup) will warn about circular dependencies. See:\n// https://github.com/nodejs/undici/issues/1629\nfunction isFileLike (object) {\n return (\n (NativeFile && object instanceof NativeFile) ||\n object instanceof File || (\n object &&\n (typeof object.stream === 'function' ||\n typeof object.arrayBuffer === 'function') &&\n object[Symbol.toStringTag] === 'File'\n )\n )\n}\n\nmodule.exports = { File, FileLike, isFileLike }\n","'use strict'\n\nconst { isBlobLike, toUSVString, makeIterator } = require('./util')\nconst { kState } = require('./symbols')\nconst { File: UndiciFile, FileLike, isFileLike } = require('./file')\nconst { webidl } = require('./webidl')\nconst { Blob, File: NativeFile } = require('buffer')\n\n/** @type {globalThis['File']} */\nconst File = NativeFile ?? UndiciFile\n\n// https://xhr.spec.whatwg.org/#formdata\nclass FormData {\n constructor (form) {\n if (form !== undefined) {\n throw webidl.errors.conversionFailed({\n prefix: 'FormData constructor',\n argument: 'Argument 1',\n types: ['undefined']\n })\n }\n\n this[kState] = []\n }\n\n append (name, value, filename = undefined) {\n webidl.brandCheck(this, FormData)\n\n webidl.argumentLengthCheck(arguments, 2, { header: 'FormData.append' })\n\n if (arguments.length === 3 && !isBlobLike(value)) {\n throw new TypeError(\n \"Failed to execute 'append' on 'FormData': parameter 2 is not of type 'Blob'\"\n )\n }\n\n // 1. Let value be value if given; otherwise blobValue.\n\n name = webidl.converters.USVString(name)\n value = isBlobLike(value)\n ? webidl.converters.Blob(value, { strict: false })\n : webidl.converters.USVString(value)\n filename = arguments.length === 3\n ? webidl.converters.USVString(filename)\n : undefined\n\n // 2. Let entry be the result of creating an entry with\n // name, value, and filename if given.\n const entry = makeEntry(name, value, filename)\n\n // 3. Append entry to this’s entry list.\n this[kState].push(entry)\n }\n\n delete (name) {\n webidl.brandCheck(this, FormData)\n\n webidl.argumentLengthCheck(arguments, 1, { header: 'FormData.delete' })\n\n name = webidl.converters.USVString(name)\n\n // The delete(name) method steps are to remove all entries whose name\n // is name from this’s entry list.\n this[kState] = this[kState].filter(entry => entry.name !== name)\n }\n\n get (name) {\n webidl.brandCheck(this, FormData)\n\n webidl.argumentLengthCheck(arguments, 1, { header: 'FormData.get' })\n\n name = webidl.converters.USVString(name)\n\n // 1. If there is no entry whose name is name in this’s entry list,\n // then return null.\n const idx = this[kState].findIndex((entry) => entry.name === name)\n if (idx === -1) {\n return null\n }\n\n // 2. Return the value of the first entry whose name is name from\n // this’s entry list.\n return this[kState][idx].value\n }\n\n getAll (name) {\n webidl.brandCheck(this, FormData)\n\n webidl.argumentLengthCheck(arguments, 1, { header: 'FormData.getAll' })\n\n name = webidl.converters.USVString(name)\n\n // 1. If there is no entry whose name is name in this’s entry list,\n // then return the empty list.\n // 2. Return the values of all entries whose name is name, in order,\n // from this’s entry list.\n return this[kState]\n .filter((entry) => entry.name === name)\n .map((entry) => entry.value)\n }\n\n has (name) {\n webidl.brandCheck(this, FormData)\n\n webidl.argumentLengthCheck(arguments, 1, { header: 'FormData.has' })\n\n name = webidl.converters.USVString(name)\n\n // The has(name) method steps are to return true if there is an entry\n // whose name is name in this’s entry list; otherwise false.\n return this[kState].findIndex((entry) => entry.name === name) !== -1\n }\n\n set (name, value, filename = undefined) {\n webidl.brandCheck(this, FormData)\n\n webidl.argumentLengthCheck(arguments, 2, { header: 'FormData.set' })\n\n if (arguments.length === 3 && !isBlobLike(value)) {\n throw new TypeError(\n \"Failed to execute 'set' on 'FormData': parameter 2 is not of type 'Blob'\"\n )\n }\n\n // The set(name, value) and set(name, blobValue, filename) method steps\n // are:\n\n // 1. Let value be value if given; otherwise blobValue.\n\n name = webidl.converters.USVString(name)\n value = isBlobLike(value)\n ? webidl.converters.Blob(value, { strict: false })\n : webidl.converters.USVString(value)\n filename = arguments.length === 3\n ? toUSVString(filename)\n : undefined\n\n // 2. Let entry be the result of creating an entry with name, value, and\n // filename if given.\n const entry = makeEntry(name, value, filename)\n\n // 3. If there are entries in this’s entry list whose name is name, then\n // replace the first such entry with entry and remove the others.\n const idx = this[kState].findIndex((entry) => entry.name === name)\n if (idx !== -1) {\n this[kState] = [\n ...this[kState].slice(0, idx),\n entry,\n ...this[kState].slice(idx + 1).filter((entry) => entry.name !== name)\n ]\n } else {\n // 4. Otherwise, append entry to this’s entry list.\n this[kState].push(entry)\n }\n }\n\n entries () {\n webidl.brandCheck(this, FormData)\n\n return makeIterator(\n () => this[kState].map(pair => [pair.name, pair.value]),\n 'FormData',\n 'key+value'\n )\n }\n\n keys () {\n webidl.brandCheck(this, FormData)\n\n return makeIterator(\n () => this[kState].map(pair => [pair.name, pair.value]),\n 'FormData',\n 'key'\n )\n }\n\n values () {\n webidl.brandCheck(this, FormData)\n\n return makeIterator(\n () => this[kState].map(pair => [pair.name, pair.value]),\n 'FormData',\n 'value'\n )\n }\n\n /**\n * @param {(value: string, key: string, self: FormData) => void} callbackFn\n * @param {unknown} thisArg\n */\n forEach (callbackFn, thisArg = globalThis) {\n webidl.brandCheck(this, FormData)\n\n webidl.argumentLengthCheck(arguments, 1, { header: 'FormData.forEach' })\n\n if (typeof callbackFn !== 'function') {\n throw new TypeError(\n \"Failed to execute 'forEach' on 'FormData': parameter 1 is not of type 'Function'.\"\n )\n }\n\n for (const [key, value] of this) {\n callbackFn.apply(thisArg, [value, key, this])\n }\n }\n}\n\nFormData.prototype[Symbol.iterator] = FormData.prototype.entries\n\nObject.defineProperties(FormData.prototype, {\n [Symbol.toStringTag]: {\n value: 'FormData',\n configurable: true\n }\n})\n\n/**\n * @see https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#create-an-entry\n * @param {string} name\n * @param {string|Blob} value\n * @param {?string} filename\n * @returns\n */\nfunction makeEntry (name, value, filename) {\n // 1. Set name to the result of converting name into a scalar value string.\n // \"To convert a string into a scalar value string, replace any surrogates\n // with U+FFFD.\"\n // see: https://nodejs.org/dist/latest-v18.x/docs/api/buffer.html#buftostringencoding-start-end\n name = Buffer.from(name).toString('utf8')\n\n // 2. If value is a string, then set value to the result of converting\n // value into a scalar value string.\n if (typeof value === 'string') {\n value = Buffer.from(value).toString('utf8')\n } else {\n // 3. Otherwise:\n\n // 1. If value is not a File object, then set value to a new File object,\n // representing the same bytes, whose name attribute value is \"blob\"\n if (!isFileLike(value)) {\n value = value instanceof Blob\n ? new File([value], 'blob', { type: value.type })\n : new FileLike(value, 'blob', { type: value.type })\n }\n\n // 2. If filename is given, then set value to a new File object,\n // representing the same bytes, whose name attribute is filename.\n if (filename !== undefined) {\n /** @type {FilePropertyBag} */\n const options = {\n type: value.type,\n lastModified: value.lastModified\n }\n\n value = (NativeFile && value instanceof NativeFile) || value instanceof UndiciFile\n ? new File([value], filename, options)\n : new FileLike(value, filename, options)\n }\n }\n\n // 4. Return an entry whose name is name and whose value is value.\n return { name, value }\n}\n\nmodule.exports = { FormData }\n","'use strict'\n\nconst Busboy = require('@fastify/busboy')\nconst util = require('../core/util')\nconst {\n ReadableStreamFrom,\n isBlobLike,\n isReadableStreamLike,\n readableStreamClose,\n createDeferredPromise,\n fullyReadBody\n} = require('./util')\nconst { FormData } = require('./formdata')\nconst { kState } = require('./symbols')\nconst { webidl } = require('./webidl')\nconst { DOMException, structuredClone } = require('./constants')\nconst { Blob, File: NativeFile } = require('buffer')\nconst { kBodyUsed } = require('../core/symbols')\nconst assert = require('assert')\nconst { isErrored } = require('../core/util')\nconst { isUint8Array, isArrayBuffer } = require('util/types')\nconst { File: UndiciFile } = require('./file')\nconst { parseMIMEType, serializeAMimeType } = require('./dataURL')\n\nlet random\ntry {\n const crypto = require('node:crypto')\n random = (max) => crypto.randomInt(0, max)\n} catch {\n random = (max) => Math.floor(Math.random(max))\n}\n\nlet ReadableStream = globalThis.ReadableStream\n\n/** @type {globalThis['File']} */\nconst File = NativeFile ?? UndiciFile\nconst textEncoder = new TextEncoder()\nconst textDecoder = new TextDecoder()\n\n// https://fetch.spec.whatwg.org/#concept-bodyinit-extract\nfunction extractBody (object, keepalive = false) {\n if (!ReadableStream) {\n ReadableStream = require('stream/web').ReadableStream\n }\n\n // 1. Let stream be null.\n let stream = null\n\n // 2. If object is a ReadableStream object, then set stream to object.\n if (object instanceof ReadableStream) {\n stream = object\n } else if (isBlobLike(object)) {\n // 3. Otherwise, if object is a Blob object, set stream to the\n // result of running object’s get stream.\n stream = object.stream()\n } else {\n // 4. Otherwise, set stream to a new ReadableStream object, and set\n // up stream.\n stream = new ReadableStream({\n async pull (controller) {\n controller.enqueue(\n typeof source === 'string' ? textEncoder.encode(source) : source\n )\n queueMicrotask(() => readableStreamClose(controller))\n },\n start () {},\n type: undefined\n })\n }\n\n // 5. Assert: stream is a ReadableStream object.\n assert(isReadableStreamLike(stream))\n\n // 6. Let action be null.\n let action = null\n\n // 7. Let source be null.\n let source = null\n\n // 8. Let length be null.\n let length = null\n\n // 9. Let type be null.\n let type = null\n\n // 10. Switch on object:\n if (typeof object === 'string') {\n // Set source to the UTF-8 encoding of object.\n // Note: setting source to a Uint8Array here breaks some mocking assumptions.\n source = object\n\n // Set type to `text/plain;charset=UTF-8`.\n type = 'text/plain;charset=UTF-8'\n } else if (object instanceof URLSearchParams) {\n // URLSearchParams\n\n // spec says to run application/x-www-form-urlencoded on body.list\n // this is implemented in Node.js as apart of an URLSearchParams instance toString method\n // See: https://github.com/nodejs/node/blob/e46c680bf2b211bbd52cf959ca17ee98c7f657f5/lib/internal/url.js#L490\n // and https://github.com/nodejs/node/blob/e46c680bf2b211bbd52cf959ca17ee98c7f657f5/lib/internal/url.js#L1100\n\n // Set source to the result of running the application/x-www-form-urlencoded serializer with object’s list.\n source = object.toString()\n\n // Set type to `application/x-www-form-urlencoded;charset=UTF-8`.\n type = 'application/x-www-form-urlencoded;charset=UTF-8'\n } else if (isArrayBuffer(object)) {\n // BufferSource/ArrayBuffer\n\n // Set source to a copy of the bytes held by object.\n source = new Uint8Array(object.slice())\n } else if (ArrayBuffer.isView(object)) {\n // BufferSource/ArrayBufferView\n\n // Set source to a copy of the bytes held by object.\n source = new Uint8Array(object.buffer.slice(object.byteOffset, object.byteOffset + object.byteLength))\n } else if (util.isFormDataLike(object)) {\n const boundary = `----formdata-undici-0${`${random(1e11)}`.padStart(11, '0')}`\n const prefix = `--${boundary}\\r\\nContent-Disposition: form-data`\n\n /*! formdata-polyfill. MIT License. Jimmy Wärting */\n const escape = (str) =>\n str.replace(/\\n/g, '%0A').replace(/\\r/g, '%0D').replace(/\"/g, '%22')\n const normalizeLinefeeds = (value) => value.replace(/\\r?\\n|\\r/g, '\\r\\n')\n\n // Set action to this step: run the multipart/form-data\n // encoding algorithm, with object’s entry list and UTF-8.\n // - This ensures that the body is immutable and can't be changed afterwords\n // - That the content-length is calculated in advance.\n // - And that all parts are pre-encoded and ready to be sent.\n\n const blobParts = []\n const rn = new Uint8Array([13, 10]) // '\\r\\n'\n length = 0\n let hasUnknownSizeValue = false\n\n for (const [name, value] of object) {\n if (typeof value === 'string') {\n const chunk = textEncoder.encode(prefix +\n `; name=\"${escape(normalizeLinefeeds(name))}\"` +\n `\\r\\n\\r\\n${normalizeLinefeeds(value)}\\r\\n`)\n blobParts.push(chunk)\n length += chunk.byteLength\n } else {\n const chunk = textEncoder.encode(`${prefix}; name=\"${escape(normalizeLinefeeds(name))}\"` +\n (value.name ? `; filename=\"${escape(value.name)}\"` : '') + '\\r\\n' +\n `Content-Type: ${\n value.type || 'application/octet-stream'\n }\\r\\n\\r\\n`)\n blobParts.push(chunk, value, rn)\n if (typeof value.size === 'number') {\n length += chunk.byteLength + value.size + rn.byteLength\n } else {\n hasUnknownSizeValue = true\n }\n }\n }\n\n const chunk = textEncoder.encode(`--${boundary}--`)\n blobParts.push(chunk)\n length += chunk.byteLength\n if (hasUnknownSizeValue) {\n length = null\n }\n\n // Set source to object.\n source = object\n\n action = async function * () {\n for (const part of blobParts) {\n if (part.stream) {\n yield * part.stream()\n } else {\n yield part\n }\n }\n }\n\n // Set type to `multipart/form-data; boundary=`,\n // followed by the multipart/form-data boundary string generated\n // by the multipart/form-data encoding algorithm.\n type = 'multipart/form-data; boundary=' + boundary\n } else if (isBlobLike(object)) {\n // Blob\n\n // Set source to object.\n source = object\n\n // Set length to object’s size.\n length = object.size\n\n // If object’s type attribute is not the empty byte sequence, set\n // type to its value.\n if (object.type) {\n type = object.type\n }\n } else if (typeof object[Symbol.asyncIterator] === 'function') {\n // If keepalive is true, then throw a TypeError.\n if (keepalive) {\n throw new TypeError('keepalive')\n }\n\n // If object is disturbed or locked, then throw a TypeError.\n if (util.isDisturbed(object) || object.locked) {\n throw new TypeError(\n 'Response body object should not be disturbed or locked'\n )\n }\n\n stream =\n object instanceof ReadableStream ? object : ReadableStreamFrom(object)\n }\n\n // 11. If source is a byte sequence, then set action to a\n // step that returns source and length to source’s length.\n if (typeof source === 'string' || util.isBuffer(source)) {\n length = Buffer.byteLength(source)\n }\n\n // 12. If action is non-null, then run these steps in in parallel:\n if (action != null) {\n // Run action.\n let iterator\n stream = new ReadableStream({\n async start () {\n iterator = action(object)[Symbol.asyncIterator]()\n },\n async pull (controller) {\n const { value, done } = await iterator.next()\n if (done) {\n // When running action is done, close stream.\n queueMicrotask(() => {\n controller.close()\n })\n } else {\n // Whenever one or more bytes are available and stream is not errored,\n // enqueue a Uint8Array wrapping an ArrayBuffer containing the available\n // bytes into stream.\n if (!isErrored(stream)) {\n controller.enqueue(new Uint8Array(value))\n }\n }\n return controller.desiredSize > 0\n },\n async cancel (reason) {\n await iterator.return()\n },\n type: undefined\n })\n }\n\n // 13. Let body be a body whose stream is stream, source is source,\n // and length is length.\n const body = { stream, source, length }\n\n // 14. Return (body, type).\n return [body, type]\n}\n\n// https://fetch.spec.whatwg.org/#bodyinit-safely-extract\nfunction safelyExtractBody (object, keepalive = false) {\n if (!ReadableStream) {\n // istanbul ignore next\n ReadableStream = require('stream/web').ReadableStream\n }\n\n // To safely extract a body and a `Content-Type` value from\n // a byte sequence or BodyInit object object, run these steps:\n\n // 1. If object is a ReadableStream object, then:\n if (object instanceof ReadableStream) {\n // Assert: object is neither disturbed nor locked.\n // istanbul ignore next\n assert(!util.isDisturbed(object), 'The body has already been consumed.')\n // istanbul ignore next\n assert(!object.locked, 'The stream is locked.')\n }\n\n // 2. Return the results of extracting object.\n return extractBody(object, keepalive)\n}\n\nfunction cloneBody (body) {\n // To clone a body body, run these steps:\n\n // https://fetch.spec.whatwg.org/#concept-body-clone\n\n // 1. Let « out1, out2 » be the result of teeing body’s stream.\n const [out1, out2] = body.stream.tee()\n const out2Clone = structuredClone(out2, { transfer: [out2] })\n // This, for whatever reasons, unrefs out2Clone which allows\n // the process to exit by itself.\n const [, finalClone] = out2Clone.tee()\n\n // 2. Set body’s stream to out1.\n body.stream = out1\n\n // 3. Return a body whose stream is out2 and other members are copied from body.\n return {\n stream: finalClone,\n length: body.length,\n source: body.source\n }\n}\n\nasync function * consumeBody (body) {\n if (body) {\n if (isUint8Array(body)) {\n yield body\n } else {\n const stream = body.stream\n\n if (util.isDisturbed(stream)) {\n throw new TypeError('The body has already been consumed.')\n }\n\n if (stream.locked) {\n throw new TypeError('The stream is locked.')\n }\n\n // Compat.\n stream[kBodyUsed] = true\n\n yield * stream\n }\n }\n}\n\nfunction throwIfAborted (state) {\n if (state.aborted) {\n throw new DOMException('The operation was aborted.', 'AbortError')\n }\n}\n\nfunction bodyMixinMethods (instance) {\n const methods = {\n blob () {\n // The blob() method steps are to return the result of\n // running consume body with this and the following step\n // given a byte sequence bytes: return a Blob whose\n // contents are bytes and whose type attribute is this’s\n // MIME type.\n return specConsumeBody(this, (bytes) => {\n let mimeType = bodyMimeType(this)\n\n if (mimeType === 'failure') {\n mimeType = ''\n } else if (mimeType) {\n mimeType = serializeAMimeType(mimeType)\n }\n\n // Return a Blob whose contents are bytes and type attribute\n // is mimeType.\n return new Blob([bytes], { type: mimeType })\n }, instance)\n },\n\n arrayBuffer () {\n // The arrayBuffer() method steps are to return the result\n // of running consume body with this and the following step\n // given a byte sequence bytes: return a new ArrayBuffer\n // whose contents are bytes.\n return specConsumeBody(this, (bytes) => {\n return new Uint8Array(bytes).buffer\n }, instance)\n },\n\n text () {\n // The text() method steps are to return the result of running\n // consume body with this and UTF-8 decode.\n return specConsumeBody(this, utf8DecodeBytes, instance)\n },\n\n json () {\n // The json() method steps are to return the result of running\n // consume body with this and parse JSON from bytes.\n return specConsumeBody(this, parseJSONFromBytes, instance)\n },\n\n async formData () {\n webidl.brandCheck(this, instance)\n\n throwIfAborted(this[kState])\n\n const contentType = this.headers.get('Content-Type')\n\n // If mimeType’s essence is \"multipart/form-data\", then:\n if (/multipart\\/form-data/.test(contentType)) {\n const headers = {}\n for (const [key, value] of this.headers) headers[key.toLowerCase()] = value\n\n const responseFormData = new FormData()\n\n let busboy\n\n try {\n busboy = new Busboy({\n headers,\n preservePath: true\n })\n } catch (err) {\n throw new DOMException(`${err}`, 'AbortError')\n }\n\n busboy.on('field', (name, value) => {\n responseFormData.append(name, value)\n })\n busboy.on('file', (name, value, filename, encoding, mimeType) => {\n const chunks = []\n\n if (encoding === 'base64' || encoding.toLowerCase() === 'base64') {\n let base64chunk = ''\n\n value.on('data', (chunk) => {\n base64chunk += chunk.toString().replace(/[\\r\\n]/gm, '')\n\n const end = base64chunk.length - base64chunk.length % 4\n chunks.push(Buffer.from(base64chunk.slice(0, end), 'base64'))\n\n base64chunk = base64chunk.slice(end)\n })\n value.on('end', () => {\n chunks.push(Buffer.from(base64chunk, 'base64'))\n responseFormData.append(name, new File(chunks, filename, { type: mimeType }))\n })\n } else {\n value.on('data', (chunk) => {\n chunks.push(chunk)\n })\n value.on('end', () => {\n responseFormData.append(name, new File(chunks, filename, { type: mimeType }))\n })\n }\n })\n\n const busboyResolve = new Promise((resolve, reject) => {\n busboy.on('finish', resolve)\n busboy.on('error', (err) => reject(new TypeError(err)))\n })\n\n if (this.body !== null) for await (const chunk of consumeBody(this[kState].body)) busboy.write(chunk)\n busboy.end()\n await busboyResolve\n\n return responseFormData\n } else if (/application\\/x-www-form-urlencoded/.test(contentType)) {\n // Otherwise, if mimeType’s essence is \"application/x-www-form-urlencoded\", then:\n\n // 1. Let entries be the result of parsing bytes.\n let entries\n try {\n let text = ''\n // application/x-www-form-urlencoded parser will keep the BOM.\n // https://url.spec.whatwg.org/#concept-urlencoded-parser\n // Note that streaming decoder is stateful and cannot be reused\n const streamingDecoder = new TextDecoder('utf-8', { ignoreBOM: true })\n\n for await (const chunk of consumeBody(this[kState].body)) {\n if (!isUint8Array(chunk)) {\n throw new TypeError('Expected Uint8Array chunk')\n }\n text += streamingDecoder.decode(chunk, { stream: true })\n }\n text += streamingDecoder.decode()\n entries = new URLSearchParams(text)\n } catch (err) {\n // istanbul ignore next: Unclear when new URLSearchParams can fail on a string.\n // 2. If entries is failure, then throw a TypeError.\n throw Object.assign(new TypeError(), { cause: err })\n }\n\n // 3. Return a new FormData object whose entries are entries.\n const formData = new FormData()\n for (const [name, value] of entries) {\n formData.append(name, value)\n }\n return formData\n } else {\n // Wait a tick before checking if the request has been aborted.\n // Otherwise, a TypeError can be thrown when an AbortError should.\n await Promise.resolve()\n\n throwIfAborted(this[kState])\n\n // Otherwise, throw a TypeError.\n throw webidl.errors.exception({\n header: `${instance.name}.formData`,\n message: 'Could not parse content as FormData.'\n })\n }\n }\n }\n\n return methods\n}\n\nfunction mixinBody (prototype) {\n Object.assign(prototype.prototype, bodyMixinMethods(prototype))\n}\n\n/**\n * @see https://fetch.spec.whatwg.org/#concept-body-consume-body\n * @param {Response|Request} object\n * @param {(value: unknown) => unknown} convertBytesToJSValue\n * @param {Response|Request} instance\n */\nasync function specConsumeBody (object, convertBytesToJSValue, instance) {\n webidl.brandCheck(object, instance)\n\n throwIfAborted(object[kState])\n\n // 1. If object is unusable, then return a promise rejected\n // with a TypeError.\n if (bodyUnusable(object[kState].body)) {\n throw new TypeError('Body is unusable')\n }\n\n // 2. Let promise be a new promise.\n const promise = createDeferredPromise()\n\n // 3. Let errorSteps given error be to reject promise with error.\n const errorSteps = (error) => promise.reject(error)\n\n // 4. Let successSteps given a byte sequence data be to resolve\n // promise with the result of running convertBytesToJSValue\n // with data. If that threw an exception, then run errorSteps\n // with that exception.\n const successSteps = (data) => {\n try {\n promise.resolve(convertBytesToJSValue(data))\n } catch (e) {\n errorSteps(e)\n }\n }\n\n // 5. If object’s body is null, then run successSteps with an\n // empty byte sequence.\n if (object[kState].body == null) {\n successSteps(new Uint8Array())\n return promise.promise\n }\n\n // 6. Otherwise, fully read object’s body given successSteps,\n // errorSteps, and object’s relevant global object.\n await fullyReadBody(object[kState].body, successSteps, errorSteps)\n\n // 7. Return promise.\n return promise.promise\n}\n\n// https://fetch.spec.whatwg.org/#body-unusable\nfunction bodyUnusable (body) {\n // An object including the Body interface mixin is\n // said to be unusable if its body is non-null and\n // its body’s stream is disturbed or locked.\n return body != null && (body.stream.locked || util.isDisturbed(body.stream))\n}\n\n/**\n * @see https://encoding.spec.whatwg.org/#utf-8-decode\n * @param {Buffer} buffer\n */\nfunction utf8DecodeBytes (buffer) {\n if (buffer.length === 0) {\n return ''\n }\n\n // 1. Let buffer be the result of peeking three bytes from\n // ioQueue, converted to a byte sequence.\n\n // 2. If buffer is 0xEF 0xBB 0xBF, then read three\n // bytes from ioQueue. (Do nothing with those bytes.)\n if (buffer[0] === 0xEF && buffer[1] === 0xBB && buffer[2] === 0xBF) {\n buffer = buffer.subarray(3)\n }\n\n // 3. Process a queue with an instance of UTF-8’s\n // decoder, ioQueue, output, and \"replacement\".\n const output = textDecoder.decode(buffer)\n\n // 4. Return output.\n return output\n}\n\n/**\n * @see https://infra.spec.whatwg.org/#parse-json-bytes-to-a-javascript-value\n * @param {Uint8Array} bytes\n */\nfunction parseJSONFromBytes (bytes) {\n return JSON.parse(utf8DecodeBytes(bytes))\n}\n\n/**\n * @see https://fetch.spec.whatwg.org/#concept-body-mime-type\n * @param {import('./response').Response|import('./request').Request} object\n */\nfunction bodyMimeType (object) {\n const { headersList } = object[kState]\n const contentType = headersList.get('content-type')\n\n if (contentType === null) {\n return 'failure'\n }\n\n return parseMIMEType(contentType)\n}\n\nmodule.exports = {\n extractBody,\n safelyExtractBody,\n cloneBody,\n mixinBody\n}\n","'use strict'\n\nconst {\n InvalidArgumentError,\n NotSupportedError\n} = require('./errors')\nconst assert = require('assert')\nconst { kHTTP2BuildRequest, kHTTP2CopyHeaders, kHTTP1BuildRequest } = require('./symbols')\nconst util = require('./util')\n\n// tokenRegExp and headerCharRegex have been lifted from\n// https://github.com/nodejs/node/blob/main/lib/_http_common.js\n\n/**\n * Verifies that the given val is a valid HTTP token\n * per the rules defined in RFC 7230\n * See https://tools.ietf.org/html/rfc7230#section-3.2.6\n */\nconst tokenRegExp = /^[\\^_`a-zA-Z\\-0-9!#$%&'*+.|~]+$/\n\n/**\n * Matches if val contains an invalid field-vchar\n * field-value = *( field-content / obs-fold )\n * field-content = field-vchar [ 1*( SP / HTAB ) field-vchar ]\n * field-vchar = VCHAR / obs-text\n */\nconst headerCharRegex = /[^\\t\\x20-\\x7e\\x80-\\xff]/\n\n// Verifies that a given path is valid does not contain control chars \\x00 to \\x20\nconst invalidPathRegex = /[^\\u0021-\\u00ff]/\n\nconst kHandler = Symbol('handler')\n\nconst channels = {}\n\nlet extractBody\n\ntry {\n const diagnosticsChannel = require('diagnostics_channel')\n channels.create = diagnosticsChannel.channel('undici:request:create')\n channels.bodySent = diagnosticsChannel.channel('undici:request:bodySent')\n channels.headers = diagnosticsChannel.channel('undici:request:headers')\n channels.trailers = diagnosticsChannel.channel('undici:request:trailers')\n channels.error = diagnosticsChannel.channel('undici:request:error')\n} catch {\n channels.create = { hasSubscribers: false }\n channels.bodySent = { hasSubscribers: false }\n channels.headers = { hasSubscribers: false }\n channels.trailers = { hasSubscribers: false }\n channels.error = { hasSubscribers: false }\n}\n\nclass Request {\n constructor (origin, {\n path,\n method,\n body,\n headers,\n query,\n idempotent,\n blocking,\n upgrade,\n headersTimeout,\n bodyTimeout,\n reset,\n throwOnError,\n expectContinue\n }, handler) {\n if (typeof path !== 'string') {\n throw new InvalidArgumentError('path must be a string')\n } else if (\n path[0] !== '/' &&\n !(path.startsWith('http://') || path.startsWith('https://')) &&\n method !== 'CONNECT'\n ) {\n throw new InvalidArgumentError('path must be an absolute URL or start with a slash')\n } else if (invalidPathRegex.exec(path) !== null) {\n throw new InvalidArgumentError('invalid request path')\n }\n\n if (typeof method !== 'string') {\n throw new InvalidArgumentError('method must be a string')\n } else if (tokenRegExp.exec(method) === null) {\n throw new InvalidArgumentError('invalid request method')\n }\n\n if (upgrade && typeof upgrade !== 'string') {\n throw new InvalidArgumentError('upgrade must be a string')\n }\n\n if (headersTimeout != null && (!Number.isFinite(headersTimeout) || headersTimeout < 0)) {\n throw new InvalidArgumentError('invalid headersTimeout')\n }\n\n if (bodyTimeout != null && (!Number.isFinite(bodyTimeout) || bodyTimeout < 0)) {\n throw new InvalidArgumentError('invalid bodyTimeout')\n }\n\n if (reset != null && typeof reset !== 'boolean') {\n throw new InvalidArgumentError('invalid reset')\n }\n\n if (expectContinue != null && typeof expectContinue !== 'boolean') {\n throw new InvalidArgumentError('invalid expectContinue')\n }\n\n this.headersTimeout = headersTimeout\n\n this.bodyTimeout = bodyTimeout\n\n this.throwOnError = throwOnError === true\n\n this.method = method\n\n this.abort = null\n\n if (body == null) {\n this.body = null\n } else if (util.isStream(body)) {\n this.body = body\n\n const rState = this.body._readableState\n if (!rState || !rState.autoDestroy) {\n this.endHandler = function autoDestroy () {\n util.destroy(this)\n }\n this.body.on('end', this.endHandler)\n }\n\n this.errorHandler = err => {\n if (this.abort) {\n this.abort(err)\n } else {\n this.error = err\n }\n }\n this.body.on('error', this.errorHandler)\n } else if (util.isBuffer(body)) {\n this.body = body.byteLength ? body : null\n } else if (ArrayBuffer.isView(body)) {\n this.body = body.buffer.byteLength ? Buffer.from(body.buffer, body.byteOffset, body.byteLength) : null\n } else if (body instanceof ArrayBuffer) {\n this.body = body.byteLength ? Buffer.from(body) : null\n } else if (typeof body === 'string') {\n this.body = body.length ? Buffer.from(body) : null\n } else if (util.isFormDataLike(body) || util.isIterable(body) || util.isBlobLike(body)) {\n this.body = body\n } else {\n throw new InvalidArgumentError('body must be a string, a Buffer, a Readable stream, an iterable, or an async iterable')\n }\n\n this.completed = false\n\n this.aborted = false\n\n this.upgrade = upgrade || null\n\n this.path = query ? util.buildURL(path, query) : path\n\n this.origin = origin\n\n this.idempotent = idempotent == null\n ? method === 'HEAD' || method === 'GET'\n : idempotent\n\n this.blocking = blocking == null ? false : blocking\n\n this.reset = reset == null ? null : reset\n\n this.host = null\n\n this.contentLength = null\n\n this.contentType = null\n\n this.headers = ''\n\n // Only for H2\n this.expectContinue = expectContinue != null ? expectContinue : false\n\n if (Array.isArray(headers)) {\n if (headers.length % 2 !== 0) {\n throw new InvalidArgumentError('headers array must be even')\n }\n for (let i = 0; i < headers.length; i += 2) {\n processHeader(this, headers[i], headers[i + 1])\n }\n } else if (headers && typeof headers === 'object') {\n const keys = Object.keys(headers)\n for (let i = 0; i < keys.length; i++) {\n const key = keys[i]\n processHeader(this, key, headers[key])\n }\n } else if (headers != null) {\n throw new InvalidArgumentError('headers must be an object or an array')\n }\n\n if (util.isFormDataLike(this.body)) {\n if (util.nodeMajor < 16 || (util.nodeMajor === 16 && util.nodeMinor < 8)) {\n throw new InvalidArgumentError('Form-Data bodies are only supported in node v16.8 and newer.')\n }\n\n if (!extractBody) {\n extractBody = require('../fetch/body.js').extractBody\n }\n\n const [bodyStream, contentType] = extractBody(body)\n if (this.contentType == null) {\n this.contentType = contentType\n this.headers += `content-type: ${contentType}\\r\\n`\n }\n this.body = bodyStream.stream\n this.contentLength = bodyStream.length\n } else if (util.isBlobLike(body) && this.contentType == null && body.type) {\n this.contentType = body.type\n this.headers += `content-type: ${body.type}\\r\\n`\n }\n\n util.validateHandler(handler, method, upgrade)\n\n this.servername = util.getServerName(this.host)\n\n this[kHandler] = handler\n\n if (channels.create.hasSubscribers) {\n channels.create.publish({ request: this })\n }\n }\n\n onBodySent (chunk) {\n if (this[kHandler].onBodySent) {\n try {\n return this[kHandler].onBodySent(chunk)\n } catch (err) {\n this.abort(err)\n }\n }\n }\n\n onRequestSent () {\n if (channels.bodySent.hasSubscribers) {\n channels.bodySent.publish({ request: this })\n }\n\n if (this[kHandler].onRequestSent) {\n try {\n return this[kHandler].onRequestSent()\n } catch (err) {\n this.abort(err)\n }\n }\n }\n\n onConnect (abort) {\n assert(!this.aborted)\n assert(!this.completed)\n\n if (this.error) {\n abort(this.error)\n } else {\n this.abort = abort\n return this[kHandler].onConnect(abort)\n }\n }\n\n onHeaders (statusCode, headers, resume, statusText) {\n assert(!this.aborted)\n assert(!this.completed)\n\n if (channels.headers.hasSubscribers) {\n channels.headers.publish({ request: this, response: { statusCode, headers, statusText } })\n }\n\n try {\n return this[kHandler].onHeaders(statusCode, headers, resume, statusText)\n } catch (err) {\n this.abort(err)\n }\n }\n\n onData (chunk) {\n assert(!this.aborted)\n assert(!this.completed)\n\n try {\n return this[kHandler].onData(chunk)\n } catch (err) {\n this.abort(err)\n return false\n }\n }\n\n onUpgrade (statusCode, headers, socket) {\n assert(!this.aborted)\n assert(!this.completed)\n\n return this[kHandler].onUpgrade(statusCode, headers, socket)\n }\n\n onComplete (trailers) {\n this.onFinally()\n\n assert(!this.aborted)\n\n this.completed = true\n if (channels.trailers.hasSubscribers) {\n channels.trailers.publish({ request: this, trailers })\n }\n\n try {\n return this[kHandler].onComplete(trailers)\n } catch (err) {\n // TODO (fix): This might be a bad idea?\n this.onError(err)\n }\n }\n\n onError (error) {\n this.onFinally()\n\n if (channels.error.hasSubscribers) {\n channels.error.publish({ request: this, error })\n }\n\n if (this.aborted) {\n return\n }\n this.aborted = true\n\n return this[kHandler].onError(error)\n }\n\n onFinally () {\n if (this.errorHandler) {\n this.body.off('error', this.errorHandler)\n this.errorHandler = null\n }\n\n if (this.endHandler) {\n this.body.off('end', this.endHandler)\n this.endHandler = null\n }\n }\n\n // TODO: adjust to support H2\n addHeader (key, value) {\n processHeader(this, key, value)\n return this\n }\n\n static [kHTTP1BuildRequest] (origin, opts, handler) {\n // TODO: Migrate header parsing here, to make Requests\n // HTTP agnostic\n return new Request(origin, opts, handler)\n }\n\n static [kHTTP2BuildRequest] (origin, opts, handler) {\n const headers = opts.headers\n opts = { ...opts, headers: null }\n\n const request = new Request(origin, opts, handler)\n\n request.headers = {}\n\n if (Array.isArray(headers)) {\n if (headers.length % 2 !== 0) {\n throw new InvalidArgumentError('headers array must be even')\n }\n for (let i = 0; i < headers.length; i += 2) {\n processHeader(request, headers[i], headers[i + 1], true)\n }\n } else if (headers && typeof headers === 'object') {\n const keys = Object.keys(headers)\n for (let i = 0; i < keys.length; i++) {\n const key = keys[i]\n processHeader(request, key, headers[key], true)\n }\n } else if (headers != null) {\n throw new InvalidArgumentError('headers must be an object or an array')\n }\n\n return request\n }\n\n static [kHTTP2CopyHeaders] (raw) {\n const rawHeaders = raw.split('\\r\\n')\n const headers = {}\n\n for (const header of rawHeaders) {\n const [key, value] = header.split(': ')\n\n if (value == null || value.length === 0) continue\n\n if (headers[key]) headers[key] += `,${value}`\n else headers[key] = value\n }\n\n return headers\n }\n}\n\nfunction processHeaderValue (key, val, skipAppend) {\n if (val && typeof val === 'object') {\n throw new InvalidArgumentError(`invalid ${key} header`)\n }\n\n val = val != null ? `${val}` : ''\n\n if (headerCharRegex.exec(val) !== null) {\n throw new InvalidArgumentError(`invalid ${key} header`)\n }\n\n return skipAppend ? val : `${key}: ${val}\\r\\n`\n}\n\nfunction processHeader (request, key, val, skipAppend = false) {\n if (val && (typeof val === 'object' && !Array.isArray(val))) {\n throw new InvalidArgumentError(`invalid ${key} header`)\n } else if (val === undefined) {\n return\n }\n\n if (\n request.host === null &&\n key.length === 4 &&\n key.toLowerCase() === 'host'\n ) {\n if (headerCharRegex.exec(val) !== null) {\n throw new InvalidArgumentError(`invalid ${key} header`)\n }\n // Consumed by Client\n request.host = val\n } else if (\n request.contentLength === null &&\n key.length === 14 &&\n key.toLowerCase() === 'content-length'\n ) {\n request.contentLength = parseInt(val, 10)\n if (!Number.isFinite(request.contentLength)) {\n throw new InvalidArgumentError('invalid content-length header')\n }\n } else if (\n request.contentType === null &&\n key.length === 12 &&\n key.toLowerCase() === 'content-type'\n ) {\n request.contentType = val\n if (skipAppend) request.headers[key] = processHeaderValue(key, val, skipAppend)\n else request.headers += processHeaderValue(key, val)\n } else if (\n key.length === 17 &&\n key.toLowerCase() === 'transfer-encoding'\n ) {\n throw new InvalidArgumentError('invalid transfer-encoding header')\n } else if (\n key.length === 10 &&\n key.toLowerCase() === 'connection'\n ) {\n const value = typeof val === 'string' ? val.toLowerCase() : null\n if (value !== 'close' && value !== 'keep-alive') {\n throw new InvalidArgumentError('invalid connection header')\n } else if (value === 'close') {\n request.reset = true\n }\n } else if (\n key.length === 10 &&\n key.toLowerCase() === 'keep-alive'\n ) {\n throw new InvalidArgumentError('invalid keep-alive header')\n } else if (\n key.length === 7 &&\n key.toLowerCase() === 'upgrade'\n ) {\n throw new InvalidArgumentError('invalid upgrade header')\n } else if (\n key.length === 6 &&\n key.toLowerCase() === 'expect'\n ) {\n throw new NotSupportedError('expect header not supported')\n } else if (tokenRegExp.exec(key) === null) {\n throw new InvalidArgumentError('invalid header key')\n } else {\n if (Array.isArray(val)) {\n for (let i = 0; i < val.length; i++) {\n if (skipAppend) {\n if (request.headers[key]) request.headers[key] += `,${processHeaderValue(key, val[i], skipAppend)}`\n else request.headers[key] = processHeaderValue(key, val[i], skipAppend)\n } else {\n request.headers += processHeaderValue(key, val[i])\n }\n }\n } else {\n if (skipAppend) request.headers[key] = processHeaderValue(key, val, skipAppend)\n else request.headers += processHeaderValue(key, val)\n }\n }\n}\n\nmodule.exports = Request\n","'use strict'\n\nconst EventEmitter = require('events')\n\nclass Dispatcher extends EventEmitter {\n dispatch () {\n throw new Error('not implemented')\n }\n\n close () {\n throw new Error('not implemented')\n }\n\n destroy () {\n throw new Error('not implemented')\n }\n}\n\nmodule.exports = Dispatcher\n","'use strict'\n\nconst Dispatcher = require('./dispatcher')\nconst {\n ClientDestroyedError,\n ClientClosedError,\n InvalidArgumentError\n} = require('./core/errors')\nconst { kDestroy, kClose, kDispatch, kInterceptors } = require('./core/symbols')\n\nconst kDestroyed = Symbol('destroyed')\nconst kClosed = Symbol('closed')\nconst kOnDestroyed = Symbol('onDestroyed')\nconst kOnClosed = Symbol('onClosed')\nconst kInterceptedDispatch = Symbol('Intercepted Dispatch')\n\nclass DispatcherBase extends Dispatcher {\n constructor () {\n super()\n\n this[kDestroyed] = false\n this[kOnDestroyed] = null\n this[kClosed] = false\n this[kOnClosed] = []\n }\n\n get destroyed () {\n return this[kDestroyed]\n }\n\n get closed () {\n return this[kClosed]\n }\n\n get interceptors () {\n return this[kInterceptors]\n }\n\n set interceptors (newInterceptors) {\n if (newInterceptors) {\n for (let i = newInterceptors.length - 1; i >= 0; i--) {\n const interceptor = this[kInterceptors][i]\n if (typeof interceptor !== 'function') {\n throw new InvalidArgumentError('interceptor must be an function')\n }\n }\n }\n\n this[kInterceptors] = newInterceptors\n }\n\n close (callback) {\n if (callback === undefined) {\n return new Promise((resolve, reject) => {\n this.close((err, data) => {\n return err ? reject(err) : resolve(data)\n })\n })\n }\n\n if (typeof callback !== 'function') {\n throw new InvalidArgumentError('invalid callback')\n }\n\n if (this[kDestroyed]) {\n queueMicrotask(() => callback(new ClientDestroyedError(), null))\n return\n }\n\n if (this[kClosed]) {\n if (this[kOnClosed]) {\n this[kOnClosed].push(callback)\n } else {\n queueMicrotask(() => callback(null, null))\n }\n return\n }\n\n this[kClosed] = true\n this[kOnClosed].push(callback)\n\n const onClosed = () => {\n const callbacks = this[kOnClosed]\n this[kOnClosed] = null\n for (let i = 0; i < callbacks.length; i++) {\n callbacks[i](null, null)\n }\n }\n\n // Should not error.\n this[kClose]()\n .then(() => this.destroy())\n .then(() => {\n queueMicrotask(onClosed)\n })\n }\n\n destroy (err, callback) {\n if (typeof err === 'function') {\n callback = err\n err = null\n }\n\n if (callback === undefined) {\n return new Promise((resolve, reject) => {\n this.destroy(err, (err, data) => {\n return err ? /* istanbul ignore next: should never error */ reject(err) : resolve(data)\n })\n })\n }\n\n if (typeof callback !== 'function') {\n throw new InvalidArgumentError('invalid callback')\n }\n\n if (this[kDestroyed]) {\n if (this[kOnDestroyed]) {\n this[kOnDestroyed].push(callback)\n } else {\n queueMicrotask(() => callback(null, null))\n }\n return\n }\n\n if (!err) {\n err = new ClientDestroyedError()\n }\n\n this[kDestroyed] = true\n this[kOnDestroyed] = this[kOnDestroyed] || []\n this[kOnDestroyed].push(callback)\n\n const onDestroyed = () => {\n const callbacks = this[kOnDestroyed]\n this[kOnDestroyed] = null\n for (let i = 0; i < callbacks.length; i++) {\n callbacks[i](null, null)\n }\n }\n\n // Should not error.\n this[kDestroy](err).then(() => {\n queueMicrotask(onDestroyed)\n })\n }\n\n [kInterceptedDispatch] (opts, handler) {\n if (!this[kInterceptors] || this[kInterceptors].length === 0) {\n this[kInterceptedDispatch] = this[kDispatch]\n return this[kDispatch](opts, handler)\n }\n\n let dispatch = this[kDispatch].bind(this)\n for (let i = this[kInterceptors].length - 1; i >= 0; i--) {\n dispatch = this[kInterceptors][i](dispatch)\n }\n this[kInterceptedDispatch] = dispatch\n return dispatch(opts, handler)\n }\n\n dispatch (opts, handler) {\n if (!handler || typeof handler !== 'object') {\n throw new InvalidArgumentError('handler must be an object')\n }\n\n try {\n if (!opts || typeof opts !== 'object') {\n throw new InvalidArgumentError('opts must be an object.')\n }\n\n if (this[kDestroyed] || this[kOnDestroyed]) {\n throw new ClientDestroyedError()\n }\n\n if (this[kClosed]) {\n throw new ClientClosedError()\n }\n\n return this[kInterceptedDispatch](opts, handler)\n } catch (err) {\n if (typeof handler.onError !== 'function') {\n throw new InvalidArgumentError('invalid onError method')\n }\n\n handler.onError(err)\n\n return false\n }\n }\n}\n\nmodule.exports = DispatcherBase\n","'use strict'\n\nconst net = require('net')\nconst assert = require('assert')\nconst util = require('./util')\nconst { InvalidArgumentError, ConnectTimeoutError } = require('./errors')\n\nlet tls // include tls conditionally since it is not always available\n\n// TODO: session re-use does not wait for the first\n// connection to resolve the session and might therefore\n// resolve the same servername multiple times even when\n// re-use is enabled.\n\nlet SessionCache\n// FIXME: remove workaround when the Node bug is fixed\n// https://github.com/nodejs/node/issues/49344#issuecomment-1741776308\nif (global.FinalizationRegistry && !process.env.NODE_V8_COVERAGE) {\n SessionCache = class WeakSessionCache {\n constructor (maxCachedSessions) {\n this._maxCachedSessions = maxCachedSessions\n this._sessionCache = new Map()\n this._sessionRegistry = new global.FinalizationRegistry((key) => {\n if (this._sessionCache.size < this._maxCachedSessions) {\n return\n }\n\n const ref = this._sessionCache.get(key)\n if (ref !== undefined && ref.deref() === undefined) {\n this._sessionCache.delete(key)\n }\n })\n }\n\n get (sessionKey) {\n const ref = this._sessionCache.get(sessionKey)\n return ref ? ref.deref() : null\n }\n\n set (sessionKey, session) {\n if (this._maxCachedSessions === 0) {\n return\n }\n\n this._sessionCache.set(sessionKey, new WeakRef(session))\n this._sessionRegistry.register(session, sessionKey)\n }\n }\n} else {\n SessionCache = class SimpleSessionCache {\n constructor (maxCachedSessions) {\n this._maxCachedSessions = maxCachedSessions\n this._sessionCache = new Map()\n }\n\n get (sessionKey) {\n return this._sessionCache.get(sessionKey)\n }\n\n set (sessionKey, session) {\n if (this._maxCachedSessions === 0) {\n return\n }\n\n if (this._sessionCache.size >= this._maxCachedSessions) {\n // remove the oldest session\n const { value: oldestKey } = this._sessionCache.keys().next()\n this._sessionCache.delete(oldestKey)\n }\n\n this._sessionCache.set(sessionKey, session)\n }\n }\n}\n\nfunction buildConnector ({ allowH2, maxCachedSessions, socketPath, timeout, ...opts }) {\n if (maxCachedSessions != null && (!Number.isInteger(maxCachedSessions) || maxCachedSessions < 0)) {\n throw new InvalidArgumentError('maxCachedSessions must be a positive integer or zero')\n }\n\n const options = { path: socketPath, ...opts }\n const sessionCache = new SessionCache(maxCachedSessions == null ? 100 : maxCachedSessions)\n timeout = timeout == null ? 10e3 : timeout\n allowH2 = allowH2 != null ? allowH2 : false\n return function connect ({ hostname, host, protocol, port, servername, localAddress, httpSocket }, callback) {\n let socket\n if (protocol === 'https:') {\n if (!tls) {\n tls = require('tls')\n }\n servername = servername || options.servername || util.getServerName(host) || null\n\n const sessionKey = servername || hostname\n const session = sessionCache.get(sessionKey) || null\n\n assert(sessionKey)\n\n socket = tls.connect({\n highWaterMark: 16384, // TLS in node can't have bigger HWM anyway...\n ...options,\n servername,\n session,\n localAddress,\n // TODO(HTTP/2): Add support for h2c\n ALPNProtocols: allowH2 ? ['http/1.1', 'h2'] : ['http/1.1'],\n socket: httpSocket, // upgrade socket connection\n port: port || 443,\n host: hostname\n })\n\n socket\n .on('session', function (session) {\n // TODO (fix): Can a session become invalid once established? Don't think so?\n sessionCache.set(sessionKey, session)\n })\n } else {\n assert(!httpSocket, 'httpSocket can only be sent on TLS update')\n socket = net.connect({\n highWaterMark: 64 * 1024, // Same as nodejs fs streams.\n ...options,\n localAddress,\n port: port || 80,\n host: hostname\n })\n }\n\n // Set TCP keep alive options on the socket here instead of in connect() for the case of assigning the socket\n if (options.keepAlive == null || options.keepAlive) {\n const keepAliveInitialDelay = options.keepAliveInitialDelay === undefined ? 60e3 : options.keepAliveInitialDelay\n socket.setKeepAlive(true, keepAliveInitialDelay)\n }\n\n const cancelTimeout = setupTimeout(() => onConnectTimeout(socket), timeout)\n\n socket\n .setNoDelay(true)\n .once(protocol === 'https:' ? 'secureConnect' : 'connect', function () {\n cancelTimeout()\n\n if (callback) {\n const cb = callback\n callback = null\n cb(null, this)\n }\n })\n .on('error', function (err) {\n cancelTimeout()\n\n if (callback) {\n const cb = callback\n callback = null\n cb(err)\n }\n })\n\n return socket\n }\n}\n\nfunction setupTimeout (onConnectTimeout, timeout) {\n if (!timeout) {\n return () => {}\n }\n\n let s1 = null\n let s2 = null\n const timeoutId = setTimeout(() => {\n // setImmediate is added to make sure that we priotorise socket error events over timeouts\n s1 = setImmediate(() => {\n if (process.platform === 'win32') {\n // Windows needs an extra setImmediate probably due to implementation differences in the socket logic\n s2 = setImmediate(() => onConnectTimeout())\n } else {\n onConnectTimeout()\n }\n })\n }, timeout)\n return () => {\n clearTimeout(timeoutId)\n clearImmediate(s1)\n clearImmediate(s2)\n }\n}\n\nfunction onConnectTimeout (socket) {\n util.destroy(socket, new ConnectTimeoutError())\n}\n\nmodule.exports = buildConnector\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.enumToMap = void 0;\nfunction enumToMap(obj) {\n const res = {};\n Object.keys(obj).forEach((key) => {\n const value = obj[key];\n if (typeof value === 'number') {\n res[key] = value;\n }\n });\n return res;\n}\nexports.enumToMap = enumToMap;\n//# sourceMappingURL=utils.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.SPECIAL_HEADERS = exports.HEADER_STATE = exports.MINOR = exports.MAJOR = exports.CONNECTION_TOKEN_CHARS = exports.HEADER_CHARS = exports.TOKEN = exports.STRICT_TOKEN = exports.HEX = exports.URL_CHAR = exports.STRICT_URL_CHAR = exports.USERINFO_CHARS = exports.MARK = exports.ALPHANUM = exports.NUM = exports.HEX_MAP = exports.NUM_MAP = exports.ALPHA = exports.FINISH = exports.H_METHOD_MAP = exports.METHOD_MAP = exports.METHODS_RTSP = exports.METHODS_ICE = exports.METHODS_HTTP = exports.METHODS = exports.LENIENT_FLAGS = exports.FLAGS = exports.TYPE = exports.ERROR = void 0;\nconst utils_1 = require(\"./utils\");\n// C headers\nvar ERROR;\n(function (ERROR) {\n ERROR[ERROR[\"OK\"] = 0] = \"OK\";\n ERROR[ERROR[\"INTERNAL\"] = 1] = \"INTERNAL\";\n ERROR[ERROR[\"STRICT\"] = 2] = \"STRICT\";\n ERROR[ERROR[\"LF_EXPECTED\"] = 3] = \"LF_EXPECTED\";\n ERROR[ERROR[\"UNEXPECTED_CONTENT_LENGTH\"] = 4] = \"UNEXPECTED_CONTENT_LENGTH\";\n ERROR[ERROR[\"CLOSED_CONNECTION\"] = 5] = \"CLOSED_CONNECTION\";\n ERROR[ERROR[\"INVALID_METHOD\"] = 6] = \"INVALID_METHOD\";\n ERROR[ERROR[\"INVALID_URL\"] = 7] = \"INVALID_URL\";\n ERROR[ERROR[\"INVALID_CONSTANT\"] = 8] = \"INVALID_CONSTANT\";\n ERROR[ERROR[\"INVALID_VERSION\"] = 9] = \"INVALID_VERSION\";\n ERROR[ERROR[\"INVALID_HEADER_TOKEN\"] = 10] = \"INVALID_HEADER_TOKEN\";\n ERROR[ERROR[\"INVALID_CONTENT_LENGTH\"] = 11] = \"INVALID_CONTENT_LENGTH\";\n ERROR[ERROR[\"INVALID_CHUNK_SIZE\"] = 12] = \"INVALID_CHUNK_SIZE\";\n ERROR[ERROR[\"INVALID_STATUS\"] = 13] = \"INVALID_STATUS\";\n ERROR[ERROR[\"INVALID_EOF_STATE\"] = 14] = \"INVALID_EOF_STATE\";\n ERROR[ERROR[\"INVALID_TRANSFER_ENCODING\"] = 15] = \"INVALID_TRANSFER_ENCODING\";\n ERROR[ERROR[\"CB_MESSAGE_BEGIN\"] = 16] = \"CB_MESSAGE_BEGIN\";\n ERROR[ERROR[\"CB_HEADERS_COMPLETE\"] = 17] = \"CB_HEADERS_COMPLETE\";\n ERROR[ERROR[\"CB_MESSAGE_COMPLETE\"] = 18] = \"CB_MESSAGE_COMPLETE\";\n ERROR[ERROR[\"CB_CHUNK_HEADER\"] = 19] = \"CB_CHUNK_HEADER\";\n ERROR[ERROR[\"CB_CHUNK_COMPLETE\"] = 20] = \"CB_CHUNK_COMPLETE\";\n ERROR[ERROR[\"PAUSED\"] = 21] = \"PAUSED\";\n ERROR[ERROR[\"PAUSED_UPGRADE\"] = 22] = \"PAUSED_UPGRADE\";\n ERROR[ERROR[\"PAUSED_H2_UPGRADE\"] = 23] = \"PAUSED_H2_UPGRADE\";\n ERROR[ERROR[\"USER\"] = 24] = \"USER\";\n})(ERROR = exports.ERROR || (exports.ERROR = {}));\nvar TYPE;\n(function (TYPE) {\n TYPE[TYPE[\"BOTH\"] = 0] = \"BOTH\";\n TYPE[TYPE[\"REQUEST\"] = 1] = \"REQUEST\";\n TYPE[TYPE[\"RESPONSE\"] = 2] = \"RESPONSE\";\n})(TYPE = exports.TYPE || (exports.TYPE = {}));\nvar FLAGS;\n(function (FLAGS) {\n FLAGS[FLAGS[\"CONNECTION_KEEP_ALIVE\"] = 1] = \"CONNECTION_KEEP_ALIVE\";\n FLAGS[FLAGS[\"CONNECTION_CLOSE\"] = 2] = \"CONNECTION_CLOSE\";\n FLAGS[FLAGS[\"CONNECTION_UPGRADE\"] = 4] = \"CONNECTION_UPGRADE\";\n FLAGS[FLAGS[\"CHUNKED\"] = 8] = \"CHUNKED\";\n FLAGS[FLAGS[\"UPGRADE\"] = 16] = \"UPGRADE\";\n FLAGS[FLAGS[\"CONTENT_LENGTH\"] = 32] = \"CONTENT_LENGTH\";\n FLAGS[FLAGS[\"SKIPBODY\"] = 64] = \"SKIPBODY\";\n FLAGS[FLAGS[\"TRAILING\"] = 128] = \"TRAILING\";\n // 1 << 8 is unused\n FLAGS[FLAGS[\"TRANSFER_ENCODING\"] = 512] = \"TRANSFER_ENCODING\";\n})(FLAGS = exports.FLAGS || (exports.FLAGS = {}));\nvar LENIENT_FLAGS;\n(function (LENIENT_FLAGS) {\n LENIENT_FLAGS[LENIENT_FLAGS[\"HEADERS\"] = 1] = \"HEADERS\";\n LENIENT_FLAGS[LENIENT_FLAGS[\"CHUNKED_LENGTH\"] = 2] = \"CHUNKED_LENGTH\";\n LENIENT_FLAGS[LENIENT_FLAGS[\"KEEP_ALIVE\"] = 4] = \"KEEP_ALIVE\";\n})(LENIENT_FLAGS = exports.LENIENT_FLAGS || (exports.LENIENT_FLAGS = {}));\nvar METHODS;\n(function (METHODS) {\n METHODS[METHODS[\"DELETE\"] = 0] = \"DELETE\";\n METHODS[METHODS[\"GET\"] = 1] = \"GET\";\n METHODS[METHODS[\"HEAD\"] = 2] = \"HEAD\";\n METHODS[METHODS[\"POST\"] = 3] = \"POST\";\n METHODS[METHODS[\"PUT\"] = 4] = \"PUT\";\n /* pathological */\n METHODS[METHODS[\"CONNECT\"] = 5] = \"CONNECT\";\n METHODS[METHODS[\"OPTIONS\"] = 6] = \"OPTIONS\";\n METHODS[METHODS[\"TRACE\"] = 7] = \"TRACE\";\n /* WebDAV */\n METHODS[METHODS[\"COPY\"] = 8] = \"COPY\";\n METHODS[METHODS[\"LOCK\"] = 9] = \"LOCK\";\n METHODS[METHODS[\"MKCOL\"] = 10] = \"MKCOL\";\n METHODS[METHODS[\"MOVE\"] = 11] = \"MOVE\";\n METHODS[METHODS[\"PROPFIND\"] = 12] = \"PROPFIND\";\n METHODS[METHODS[\"PROPPATCH\"] = 13] = \"PROPPATCH\";\n METHODS[METHODS[\"SEARCH\"] = 14] = \"SEARCH\";\n METHODS[METHODS[\"UNLOCK\"] = 15] = \"UNLOCK\";\n METHODS[METHODS[\"BIND\"] = 16] = \"BIND\";\n METHODS[METHODS[\"REBIND\"] = 17] = \"REBIND\";\n METHODS[METHODS[\"UNBIND\"] = 18] = \"UNBIND\";\n METHODS[METHODS[\"ACL\"] = 19] = \"ACL\";\n /* subversion */\n METHODS[METHODS[\"REPORT\"] = 20] = \"REPORT\";\n METHODS[METHODS[\"MKACTIVITY\"] = 21] = \"MKACTIVITY\";\n METHODS[METHODS[\"CHECKOUT\"] = 22] = \"CHECKOUT\";\n METHODS[METHODS[\"MERGE\"] = 23] = \"MERGE\";\n /* upnp */\n METHODS[METHODS[\"M-SEARCH\"] = 24] = \"M-SEARCH\";\n METHODS[METHODS[\"NOTIFY\"] = 25] = \"NOTIFY\";\n METHODS[METHODS[\"SUBSCRIBE\"] = 26] = \"SUBSCRIBE\";\n METHODS[METHODS[\"UNSUBSCRIBE\"] = 27] = \"UNSUBSCRIBE\";\n /* RFC-5789 */\n METHODS[METHODS[\"PATCH\"] = 28] = \"PATCH\";\n METHODS[METHODS[\"PURGE\"] = 29] = \"PURGE\";\n /* CalDAV */\n METHODS[METHODS[\"MKCALENDAR\"] = 30] = \"MKCALENDAR\";\n /* RFC-2068, section 19.6.1.2 */\n METHODS[METHODS[\"LINK\"] = 31] = \"LINK\";\n METHODS[METHODS[\"UNLINK\"] = 32] = \"UNLINK\";\n /* icecast */\n METHODS[METHODS[\"SOURCE\"] = 33] = \"SOURCE\";\n /* RFC-7540, section 11.6 */\n METHODS[METHODS[\"PRI\"] = 34] = \"PRI\";\n /* RFC-2326 RTSP */\n METHODS[METHODS[\"DESCRIBE\"] = 35] = \"DESCRIBE\";\n METHODS[METHODS[\"ANNOUNCE\"] = 36] = \"ANNOUNCE\";\n METHODS[METHODS[\"SETUP\"] = 37] = \"SETUP\";\n METHODS[METHODS[\"PLAY\"] = 38] = \"PLAY\";\n METHODS[METHODS[\"PAUSE\"] = 39] = \"PAUSE\";\n METHODS[METHODS[\"TEARDOWN\"] = 40] = \"TEARDOWN\";\n METHODS[METHODS[\"GET_PARAMETER\"] = 41] = \"GET_PARAMETER\";\n METHODS[METHODS[\"SET_PARAMETER\"] = 42] = \"SET_PARAMETER\";\n METHODS[METHODS[\"REDIRECT\"] = 43] = \"REDIRECT\";\n METHODS[METHODS[\"RECORD\"] = 44] = \"RECORD\";\n /* RAOP */\n METHODS[METHODS[\"FLUSH\"] = 45] = \"FLUSH\";\n})(METHODS = exports.METHODS || (exports.METHODS = {}));\nexports.METHODS_HTTP = [\n METHODS.DELETE,\n METHODS.GET,\n METHODS.HEAD,\n METHODS.POST,\n METHODS.PUT,\n METHODS.CONNECT,\n METHODS.OPTIONS,\n METHODS.TRACE,\n METHODS.COPY,\n METHODS.LOCK,\n METHODS.MKCOL,\n METHODS.MOVE,\n METHODS.PROPFIND,\n METHODS.PROPPATCH,\n METHODS.SEARCH,\n METHODS.UNLOCK,\n METHODS.BIND,\n METHODS.REBIND,\n METHODS.UNBIND,\n METHODS.ACL,\n METHODS.REPORT,\n METHODS.MKACTIVITY,\n METHODS.CHECKOUT,\n METHODS.MERGE,\n METHODS['M-SEARCH'],\n METHODS.NOTIFY,\n METHODS.SUBSCRIBE,\n METHODS.UNSUBSCRIBE,\n METHODS.PATCH,\n METHODS.PURGE,\n METHODS.MKCALENDAR,\n METHODS.LINK,\n METHODS.UNLINK,\n METHODS.PRI,\n // TODO(indutny): should we allow it with HTTP?\n METHODS.SOURCE,\n];\nexports.METHODS_ICE = [\n METHODS.SOURCE,\n];\nexports.METHODS_RTSP = [\n METHODS.OPTIONS,\n METHODS.DESCRIBE,\n METHODS.ANNOUNCE,\n METHODS.SETUP,\n METHODS.PLAY,\n METHODS.PAUSE,\n METHODS.TEARDOWN,\n METHODS.GET_PARAMETER,\n METHODS.SET_PARAMETER,\n METHODS.REDIRECT,\n METHODS.RECORD,\n METHODS.FLUSH,\n // For AirPlay\n METHODS.GET,\n METHODS.POST,\n];\nexports.METHOD_MAP = utils_1.enumToMap(METHODS);\nexports.H_METHOD_MAP = {};\nObject.keys(exports.METHOD_MAP).forEach((key) => {\n if (/^H/.test(key)) {\n exports.H_METHOD_MAP[key] = exports.METHOD_MAP[key];\n }\n});\nvar FINISH;\n(function (FINISH) {\n FINISH[FINISH[\"SAFE\"] = 0] = \"SAFE\";\n FINISH[FINISH[\"SAFE_WITH_CB\"] = 1] = \"SAFE_WITH_CB\";\n FINISH[FINISH[\"UNSAFE\"] = 2] = \"UNSAFE\";\n})(FINISH = exports.FINISH || (exports.FINISH = {}));\nexports.ALPHA = [];\nfor (let i = 'A'.charCodeAt(0); i <= 'Z'.charCodeAt(0); i++) {\n // Upper case\n exports.ALPHA.push(String.fromCharCode(i));\n // Lower case\n exports.ALPHA.push(String.fromCharCode(i + 0x20));\n}\nexports.NUM_MAP = {\n 0: 0, 1: 1, 2: 2, 3: 3, 4: 4,\n 5: 5, 6: 6, 7: 7, 8: 8, 9: 9,\n};\nexports.HEX_MAP = {\n 0: 0, 1: 1, 2: 2, 3: 3, 4: 4,\n 5: 5, 6: 6, 7: 7, 8: 8, 9: 9,\n A: 0XA, B: 0XB, C: 0XC, D: 0XD, E: 0XE, F: 0XF,\n a: 0xa, b: 0xb, c: 0xc, d: 0xd, e: 0xe, f: 0xf,\n};\nexports.NUM = [\n '0', '1', '2', '3', '4', '5', '6', '7', '8', '9',\n];\nexports.ALPHANUM = exports.ALPHA.concat(exports.NUM);\nexports.MARK = ['-', '_', '.', '!', '~', '*', '\\'', '(', ')'];\nexports.USERINFO_CHARS = exports.ALPHANUM\n .concat(exports.MARK)\n .concat(['%', ';', ':', '&', '=', '+', '$', ',']);\n// TODO(indutny): use RFC\nexports.STRICT_URL_CHAR = [\n '!', '\"', '$', '%', '&', '\\'',\n '(', ')', '*', '+', ',', '-', '.', '/',\n ':', ';', '<', '=', '>',\n '@', '[', '\\\\', ']', '^', '_',\n '`',\n '{', '|', '}', '~',\n].concat(exports.ALPHANUM);\nexports.URL_CHAR = exports.STRICT_URL_CHAR\n .concat(['\\t', '\\f']);\n// All characters with 0x80 bit set to 1\nfor (let i = 0x80; i <= 0xff; i++) {\n exports.URL_CHAR.push(i);\n}\nexports.HEX = exports.NUM.concat(['a', 'b', 'c', 'd', 'e', 'f', 'A', 'B', 'C', 'D', 'E', 'F']);\n/* Tokens as defined by rfc 2616. Also lowercases them.\n * token = 1*\n * separators = \"(\" | \")\" | \"<\" | \">\" | \"@\"\n * | \",\" | \";\" | \":\" | \"\\\" | <\">\n * | \"/\" | \"[\" | \"]\" | \"?\" | \"=\"\n * | \"{\" | \"}\" | SP | HT\n */\nexports.STRICT_TOKEN = [\n '!', '#', '$', '%', '&', '\\'',\n '*', '+', '-', '.',\n '^', '_', '`',\n '|', '~',\n].concat(exports.ALPHANUM);\nexports.TOKEN = exports.STRICT_TOKEN.concat([' ']);\n/*\n * Verify that a char is a valid visible (printable) US-ASCII\n * character or %x80-FF\n */\nexports.HEADER_CHARS = ['\\t'];\nfor (let i = 32; i <= 255; i++) {\n if (i !== 127) {\n exports.HEADER_CHARS.push(i);\n }\n}\n// ',' = \\x44\nexports.CONNECTION_TOKEN_CHARS = exports.HEADER_CHARS.filter((c) => c !== 44);\nexports.MAJOR = exports.NUM_MAP;\nexports.MINOR = exports.MAJOR;\nvar HEADER_STATE;\n(function (HEADER_STATE) {\n HEADER_STATE[HEADER_STATE[\"GENERAL\"] = 0] = \"GENERAL\";\n HEADER_STATE[HEADER_STATE[\"CONNECTION\"] = 1] = \"CONNECTION\";\n HEADER_STATE[HEADER_STATE[\"CONTENT_LENGTH\"] = 2] = \"CONTENT_LENGTH\";\n HEADER_STATE[HEADER_STATE[\"TRANSFER_ENCODING\"] = 3] = \"TRANSFER_ENCODING\";\n HEADER_STATE[HEADER_STATE[\"UPGRADE\"] = 4] = \"UPGRADE\";\n HEADER_STATE[HEADER_STATE[\"CONNECTION_KEEP_ALIVE\"] = 5] = \"CONNECTION_KEEP_ALIVE\";\n HEADER_STATE[HEADER_STATE[\"CONNECTION_CLOSE\"] = 6] = \"CONNECTION_CLOSE\";\n HEADER_STATE[HEADER_STATE[\"CONNECTION_UPGRADE\"] = 7] = \"CONNECTION_UPGRADE\";\n HEADER_STATE[HEADER_STATE[\"TRANSFER_ENCODING_CHUNKED\"] = 8] = \"TRANSFER_ENCODING_CHUNKED\";\n})(HEADER_STATE = exports.HEADER_STATE || (exports.HEADER_STATE = {}));\nexports.SPECIAL_HEADERS = {\n 'connection': HEADER_STATE.CONNECTION,\n 'content-length': HEADER_STATE.CONTENT_LENGTH,\n 'proxy-connection': HEADER_STATE.CONNECTION,\n 'transfer-encoding': HEADER_STATE.TRANSFER_ENCODING,\n 'upgrade': HEADER_STATE.UPGRADE,\n};\n//# sourceMappingURL=constants.js.map","'use strict'\n\nconst util = require('../core/util')\nconst { kBodyUsed } = require('../core/symbols')\nconst assert = require('assert')\nconst { InvalidArgumentError } = require('../core/errors')\nconst EE = require('events')\n\nconst redirectableStatusCodes = [300, 301, 302, 303, 307, 308]\n\nconst kBody = Symbol('body')\n\nclass BodyAsyncIterable {\n constructor (body) {\n this[kBody] = body\n this[kBodyUsed] = false\n }\n\n async * [Symbol.asyncIterator] () {\n assert(!this[kBodyUsed], 'disturbed')\n this[kBodyUsed] = true\n yield * this[kBody]\n }\n}\n\nclass RedirectHandler {\n constructor (dispatch, maxRedirections, opts, handler) {\n if (maxRedirections != null && (!Number.isInteger(maxRedirections) || maxRedirections < 0)) {\n throw new InvalidArgumentError('maxRedirections must be a positive number')\n }\n\n util.validateHandler(handler, opts.method, opts.upgrade)\n\n this.dispatch = dispatch\n this.location = null\n this.abort = null\n this.opts = { ...opts, maxRedirections: 0 } // opts must be a copy\n this.maxRedirections = maxRedirections\n this.handler = handler\n this.history = []\n\n if (util.isStream(this.opts.body)) {\n // TODO (fix): Provide some way for the user to cache the file to e.g. /tmp\n // so that it can be dispatched again?\n // TODO (fix): Do we need 100-expect support to provide a way to do this properly?\n if (util.bodyLength(this.opts.body) === 0) {\n this.opts.body\n .on('data', function () {\n assert(false)\n })\n }\n\n if (typeof this.opts.body.readableDidRead !== 'boolean') {\n this.opts.body[kBodyUsed] = false\n EE.prototype.on.call(this.opts.body, 'data', function () {\n this[kBodyUsed] = true\n })\n }\n } else if (this.opts.body && typeof this.opts.body.pipeTo === 'function') {\n // TODO (fix): We can't access ReadableStream internal state\n // to determine whether or not it has been disturbed. This is just\n // a workaround.\n this.opts.body = new BodyAsyncIterable(this.opts.body)\n } else if (\n this.opts.body &&\n typeof this.opts.body !== 'string' &&\n !ArrayBuffer.isView(this.opts.body) &&\n util.isIterable(this.opts.body)\n ) {\n // TODO: Should we allow re-using iterable if !this.opts.idempotent\n // or through some other flag?\n this.opts.body = new BodyAsyncIterable(this.opts.body)\n }\n }\n\n onConnect (abort) {\n this.abort = abort\n this.handler.onConnect(abort, { history: this.history })\n }\n\n onUpgrade (statusCode, headers, socket) {\n this.handler.onUpgrade(statusCode, headers, socket)\n }\n\n onError (error) {\n this.handler.onError(error)\n }\n\n onHeaders (statusCode, headers, resume, statusText) {\n this.location = this.history.length >= this.maxRedirections || util.isDisturbed(this.opts.body)\n ? null\n : parseLocation(statusCode, headers)\n\n if (this.opts.origin) {\n this.history.push(new URL(this.opts.path, this.opts.origin))\n }\n\n if (!this.location) {\n return this.handler.onHeaders(statusCode, headers, resume, statusText)\n }\n\n const { origin, pathname, search } = util.parseURL(new URL(this.location, this.opts.origin && new URL(this.opts.path, this.opts.origin)))\n const path = search ? `${pathname}${search}` : pathname\n\n // Remove headers referring to the original URL.\n // By default it is Host only, unless it's a 303 (see below), which removes also all Content-* headers.\n // https://tools.ietf.org/html/rfc7231#section-6.4\n this.opts.headers = cleanRequestHeaders(this.opts.headers, statusCode === 303, this.opts.origin !== origin)\n this.opts.path = path\n this.opts.origin = origin\n this.opts.maxRedirections = 0\n this.opts.query = null\n\n // https://tools.ietf.org/html/rfc7231#section-6.4.4\n // In case of HTTP 303, always replace method to be either HEAD or GET\n if (statusCode === 303 && this.opts.method !== 'HEAD') {\n this.opts.method = 'GET'\n this.opts.body = null\n }\n }\n\n onData (chunk) {\n if (this.location) {\n /*\n https://tools.ietf.org/html/rfc7231#section-6.4\n\n TLDR: undici always ignores 3xx response bodies.\n\n Redirection is used to serve the requested resource from another URL, so it is assumes that\n no body is generated (and thus can be ignored). Even though generating a body is not prohibited.\n\n For status 301, 302, 303, 307 and 308 (the latter from RFC 7238), the specs mention that the body usually\n (which means it's optional and not mandated) contain just an hyperlink to the value of\n the Location response header, so the body can be ignored safely.\n\n For status 300, which is \"Multiple Choices\", the spec mentions both generating a Location\n response header AND a response body with the other possible location to follow.\n Since the spec explicitily chooses not to specify a format for such body and leave it to\n servers and browsers implementors, we ignore the body as there is no specified way to eventually parse it.\n */\n } else {\n return this.handler.onData(chunk)\n }\n }\n\n onComplete (trailers) {\n if (this.location) {\n /*\n https://tools.ietf.org/html/rfc7231#section-6.4\n\n TLDR: undici always ignores 3xx response trailers as they are not expected in case of redirections\n and neither are useful if present.\n\n See comment on onData method above for more detailed informations.\n */\n\n this.location = null\n this.abort = null\n\n this.dispatch(this.opts, this)\n } else {\n this.handler.onComplete(trailers)\n }\n }\n\n onBodySent (chunk) {\n if (this.handler.onBodySent) {\n this.handler.onBodySent(chunk)\n }\n }\n}\n\nfunction parseLocation (statusCode, headers) {\n if (redirectableStatusCodes.indexOf(statusCode) === -1) {\n return null\n }\n\n for (let i = 0; i < headers.length; i += 2) {\n if (headers[i].toString().toLowerCase() === 'location') {\n return headers[i + 1]\n }\n }\n}\n\n// https://tools.ietf.org/html/rfc7231#section-6.4.4\nfunction shouldRemoveHeader (header, removeContent, unknownOrigin) {\n if (header.length === 4) {\n return util.headerNameToString(header) === 'host'\n }\n if (removeContent && util.headerNameToString(header).startsWith('content-')) {\n return true\n }\n if (unknownOrigin && (header.length === 13 || header.length === 6 || header.length === 19)) {\n const name = util.headerNameToString(header)\n return name === 'authorization' || name === 'cookie' || name === 'proxy-authorization'\n }\n return false\n}\n\n// https://tools.ietf.org/html/rfc7231#section-6.4\nfunction cleanRequestHeaders (headers, removeContent, unknownOrigin) {\n const ret = []\n if (Array.isArray(headers)) {\n for (let i = 0; i < headers.length; i += 2) {\n if (!shouldRemoveHeader(headers[i], removeContent, unknownOrigin)) {\n ret.push(headers[i], headers[i + 1])\n }\n }\n } else if (headers && typeof headers === 'object') {\n for (const key of Object.keys(headers)) {\n if (!shouldRemoveHeader(key, removeContent, unknownOrigin)) {\n ret.push(key, headers[key])\n }\n }\n } else {\n assert(headers == null, 'headers must be an object or an array')\n }\n return ret\n}\n\nmodule.exports = RedirectHandler\n","'use strict'\n\nconst RedirectHandler = require('../handler/RedirectHandler')\n\nfunction createRedirectInterceptor ({ maxRedirections: defaultMaxRedirections }) {\n return (dispatch) => {\n return function Intercept (opts, handler) {\n const { maxRedirections = defaultMaxRedirections } = opts\n\n if (!maxRedirections) {\n return dispatch(opts, handler)\n }\n\n const redirectHandler = new RedirectHandler(dispatch, maxRedirections, opts, handler)\n opts = { ...opts, maxRedirections: 0 } // Stop sub dispatcher from also redirecting.\n return dispatch(opts, redirectHandler)\n }\n }\n}\n\nmodule.exports = createRedirectInterceptor\n","module.exports = 'AGFzbQEAAAABMAhgAX8Bf2ADf39/AX9gBH9/f38Bf2AAAGADf39/AGABfwBgAn9/AGAGf39/f39/AALLAQgDZW52GHdhc21fb25faGVhZGVyc19jb21wbGV0ZQACA2VudhV3YXNtX29uX21lc3NhZ2VfYmVnaW4AAANlbnYLd2FzbV9vbl91cmwAAQNlbnYOd2FzbV9vbl9zdGF0dXMAAQNlbnYUd2FzbV9vbl9oZWFkZXJfZmllbGQAAQNlbnYUd2FzbV9vbl9oZWFkZXJfdmFsdWUAAQNlbnYMd2FzbV9vbl9ib2R5AAEDZW52GHdhc21fb25fbWVzc2FnZV9jb21wbGV0ZQAAA0ZFAwMEAAAFAAAAAAAABQEFAAUFBQAABgAAAAAGBgYGAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAAABAQcAAAUFAwABBAUBcAESEgUDAQACBggBfwFBgNQECwfRBSIGbWVtb3J5AgALX2luaXRpYWxpemUACRlfX2luZGlyZWN0X2Z1bmN0aW9uX3RhYmxlAQALbGxodHRwX2luaXQAChhsbGh0dHBfc2hvdWxkX2tlZXBfYWxpdmUAQQxsbGh0dHBfYWxsb2MADAZtYWxsb2MARgtsbGh0dHBfZnJlZQANBGZyZWUASA9sbGh0dHBfZ2V0X3R5cGUADhVsbGh0dHBfZ2V0X2h0dHBfbWFqb3IADxVsbGh0dHBfZ2V0X2h0dHBfbWlub3IAEBFsbGh0dHBfZ2V0X21ldGhvZAARFmxsaHR0cF9nZXRfc3RhdHVzX2NvZGUAEhJsbGh0dHBfZ2V0X3VwZ3JhZGUAEwxsbGh0dHBfcmVzZXQAFA5sbGh0dHBfZXhlY3V0ZQAVFGxsaHR0cF9zZXR0aW5nc19pbml0ABYNbGxodHRwX2ZpbmlzaAAXDGxsaHR0cF9wYXVzZQAYDWxsaHR0cF9yZXN1bWUAGRtsbGh0dHBfcmVzdW1lX2FmdGVyX3VwZ3JhZGUAGhBsbGh0dHBfZ2V0X2Vycm5vABsXbGxodHRwX2dldF9lcnJvcl9yZWFzb24AHBdsbGh0dHBfc2V0X2Vycm9yX3JlYXNvbgAdFGxsaHR0cF9nZXRfZXJyb3JfcG9zAB4RbGxodHRwX2Vycm5vX25hbWUAHxJsbGh0dHBfbWV0aG9kX25hbWUAIBJs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ADcDACAAQShqQgA3AwAgAEEgakIANwMAIABBEGpCADcDACAAQQhqQgA3AwAgAEHdATYCHEEAC3sBAX8CQCAAKAIMIgMNAAJAIAAoAgRFDQAgACABNgIECwJAIAAgASACEMSAgIAAIgMNACAAKAIMDwsgACADNgIcQQAhAyAAKAIEIgFFDQAgACABIAIgACgCCBGBgICAAAAiAUUNACAAIAI2AhQgACABNgIMIAEhAwsgAwvk8wEDDn8DfgR/I4CAgIAAQRBrIgMkgICAgAAgASEEIAEhBSABIQYgASEHIAEhCCABIQkgASEKIAEhCyABIQwgASENIAEhDiABIQ8CQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgACgCHCIQQX9qDt0B2gEB2QECAwQFBgcICQoLDA0O2AEPENcBERLWARMUFRYXGBkaG+AB3wEcHR7VAR8gISIjJCXUASYnKCkqKyzTAdIBLS7RAdABLzAxMjM0NTY3ODk6Ozw9Pj9AQUJDREVG2wFHSElKzwHOAUvNAUzMAU1OT1BRUlNUVVZXWFlaW1xdXl9gYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXp7fH1+f4ABgQGCAYMBhAGFAYYBhwGIAYkB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QAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAC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FCAAIBA2AgxBACEQDLIBCyAAKAIEIRAgAEEANgIEAkAgACAQIAEQp4CAgAAiEA0AIAEhAQxNCyAAQdMANgIcIAAgATYCFCAAIBA2AgxBACEQDLEBCyAAKAIEIRAgAEEANgIEAkAgACAQIAEQp4CAgAAiEA0AIAEhAQxRCyAAQeUANgIcIAAgATYCFCAAIBA2AgxBACEQDLABCyAAQQA2AhwgACABNgIUIABBxoqAgAA2AhAgAEEHNgIMQQAhEAyvAQsgACgCBCEQIABBADYCBAJAIAAgECABEKeAgIAAIhANACABIQEMSQsgAEHSADYCHCAAIAE2AhQgACAQNgIMQQAhEAyuAQsgACgCBCEQIABBADYCBAJAIAAgECABEKeAgIAAIhANACABIQEMSQsgAEHTADYCHCAAIAE2AhQgACAQNgIMQQAhEAytAQsgACgCBCEQIABBADYCBAJAIAAgECABEKeAgIAAIhANACABIQEMTQsgAEHlADYCHCAAIAE2AhQgACAQNgIMQQAhEAysAQsgAEEANgIcIAAgATYCFCAAQdyIgIAANgIQIABBBzYCDEEAIRAMqwELIBBBP0cNASABQQFqIQELQQUhEAyQAQtBACEQIABBADYCHCAAIAE2AhQgAEH9koCAADYCECAAQQc2AgwMqAELIAAoAgQhECAAQQA2AgQCQCAAIBAgARCngICAACIQDQAgASEBDEILIABB0gA2AhwgACABNgIUIAAgEDYCDEEAIRAMpwELIAAoAgQhECAAQQA2AgQCQCAAIBAgARCngICAACIQDQAgASEBDEILIABB0wA2AhwgACABNgIUIAAgEDYCDEEAIRAMpgELIAAoAgQhECAAQQA2AgQCQCAAIBAgARCngICAACIQDQAgASEBDEYLIABB5QA2AhwgACABNgIUIAAgEDYCDEEAIRAMpQELIAAoAgQhASAAQQA2AgQCQCAAIAEgFBCngICAACIBDQAgFCEBDD8LIABB0gA2AhwgACAUNgIUIAAgATYCDEEAIRAMpAELIAAoAgQhASAAQQA2AgQCQCAAIAEgFBCngICAACIBDQAgFCEBDD8LIABB0wA2AhwgACAUNgIUIAAgATYCDEEAIRAMowELIAAoAgQhASAAQQA2AgQCQCAAIAEgFBCngICAACIBDQAgFCEBDEMLIABB5QA2AhwgACAU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YWdlX2JlZ2luYCBjYWxsYmFjayBlcnJvcgBgb25fY2h1bmtfZXh0ZW5zaW9uX3ZhbHVlYCBjYWxsYmFjayBlcnJvcgBgb25fc3RhdHVzX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fdmVyc2lvbl9jb21wbGV0ZWAgY2FsbGJhY2sgZXJyb3IAYG9uX3VybF9jb21wbGV0ZWAgY2FsbGJhY2sgZXJyb3IAYG9uX2NodW5rX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25faGVhZGVyX3ZhbHVlX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fbWVzc2FnZV9jb21wbGV0ZWAgY2FsbGJhY2sgZXJyb3IAYG9uX21ldGhvZF9jb21wbGV0ZWAgY2FsbGJhY2sgZXJyb3IAYG9uX2hlYWRlcl9maWVsZF9jb21wbGV0ZWAgY2FsbGJhY2sgZXJyb3IAYG9uX2NodW5rX2V4dGVuc2lvbl9uYW1lYCBjYWxsYmFjayBlcnJvcgBVbmV4cGVjdGVkIGNoYXIgaW4gdXJsIHNlcnZlcgBJbnZhbGlkIGhlYWRlciB2YWx1ZSBjaGFyAEludmFsaWQgaGVhZGVyIGZpZWxkIGNoYXIAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl92ZXJzaW9uAEludmFsaWQgbWlub3IgdmVyc2lvbgBJbnZhbGlkIG1ham9yIHZlcnNpb24ARXhwZWN0ZWQgc3BhY2UgYWZ0ZXIgdmVyc2lvbgBFeHBlY3RlZCBDUkxGIGFmdGVyIHZlcnNpb24ASW52YWxpZCBIVFRQIHZlcnNpb24ASW52YWxpZCBoZWFkZXIgdG9rZW4AU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl91cmwASW52YWxpZCBjaGFyYWN0ZXJzIGluIHVybABVbmV4cGVjdGVkIHN0YXJ0IGNoYXIgaW4gdXJsAERvdWJsZSBAIGluIHVybABFbXB0eSBDb250ZW50LUxlbmd0aABJbnZhbGlkIGNoYXJhY3RlciBpbiBDb250ZW50LUxlbmd0aABEdXBsaWNhdGUgQ29udGVudC1MZW5ndGgASW52YWxpZCBjaGFyIGluIHVybCBwYXRoAENvbnRlbnQtTGVuZ3RoIGNhbid0IGJlIHByZXNlbnQgd2l0aCBUcmFuc2Zlci1FbmNvZGluZwBJbnZhbGlkIGNoYXJhY3RlciBpbiBjaHVuayBzaXplAFNwYW4gY2FsbGJhY2sgZXJyb3IgaW4gb25faGVhZGVyX3ZhbHVlAFNwYW4gY2FsbGJhY2sgZXJyb3IgaW4gb25fY2h1bmtfZXh0ZW5zaW9uX3ZhbHVlAEludmFsaWQgY2hhcmFjdGVyIGluIGNodW5rIGV4dGVuc2lvbnMgdmFsdWUATWlzc2luZyBleHBlY3RlZCBMRiBhZnRlciBoZWFkZXIgdmFsdWUASW52YWxpZCBgVHJhbnNmZXItRW5jb2RpbmdgIGhlYWRlciB2YWx1ZQBJbnZhbGlkIGNoYXJhY3RlciBpbiBjaHVuayBleHRlbnNpb25zIHF1b3RlIHZhbHVlAEludmFsaWQgY2hhcmFjdGVyIGluIGNodW5rIGV4dGVuc2lvbnMgcXVvdGVkIHZhbHVlAFBhdXNlZCBieSBvbl9oZWFkZXJzX2NvbXBsZXRlAEludmFsaWQgRU9GIHN0YXRlAG9uX3Jlc2V0IHBhdXNlAG9uX2NodW5rX2hlYWRlciBwYXVzZQBvbl9tZXNzYWdlX2JlZ2luIHBhdXNlAG9uX2NodW5rX2V4dGVuc2lvbl92YWx1ZSBwYXVzZQBvbl9zdGF0dXNfY29tcGxldGUgcGF1c2UAb25fdmVyc2lvbl9jb21wbGV0ZSBwYXVzZQBvbl91cmxfY29tcGxldGUgcGF1c2UAb25fY2h1bmtfY29tcGxldGUgcGF1c2UAb25faGVhZGVyX3ZhbHVlX2NvbXBsZXRlIHBhdXNlAG9uX21lc3NhZ2VfY29tcGxldGUgcGF1c2UAb25fbWV0aG9kX2NvbXBsZXRlIHBhdXNlAG9uX2hlYWRlcl9maWVsZF9jb21wbGV0ZSBwYXVzZQBvbl9jaHVua19leHRlbnNpb25fbmFtZSBwYXVzZQBVbmV4cGVjdGVkIHNwYWNlIGFmdGVyIHN0YXJ0IGxpbmUAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9jaHVua19leHRlbnNpb25fbmFtZQBJbnZhbGlkIGNoYXJhY3RlciBpbiBjaHVuayBleHRlbnNpb25zIG5hbWUAUGF1c2Ugb24gQ09OTkVDVC9VcGdyYWRlAFBhdXNlIG9uIFBSSS9VcGdyYWRlAEV4cGVjdGVkIEhUVFAvMiBDb25uZWN0aW9uIFByZWZhY2UAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9tZXRob2QARXhwZWN0ZWQgc3BhY2UgYWZ0ZXIgbWV0aG9kAFNwYW4gY2FsbGJhY2sgZXJyb3IgaW4gb25faGVhZGVyX2ZpZWxkAFBhdXNlZABJbnZhbGlkIHdvcmQgZW5jb3VudGVyZWQASW52YWxpZCBtZXRob2QgZW5jb3VudGVyZWQAVW5leHBlY3RlZCBjaGFyIGluIHVybCBzY2hlbWEAUmVxdWVzdCBoYXMgaW52YWxpZCBgVHJhbnNmZXItRW5jb2RpbmdgAFNXSVRDSF9QUk9YWQBVU0VfUFJPWFkATUtBQ1RJVklUWQBVTlBST0NFU1NBQkxFX0VOVElUWQBDT1BZAE1PVkVEX1BFUk1BTkVOVExZAFRPT19FQVJMWQBOT1RJRlkARkFJTEVEX0RFUEVOREVOQ1kAQkFEX0dBVEVXQVkAUExBWQBQVVQAQ0hFQ0tPVVQAR0FURVdBWV9USU1FT1VUAFJFUVVFU1RfVElNRU9VVABORVRXT1JLX0NPTk5FQ1RfVElNRU9VVABDT05ORUNUSU9OX1RJTUVPVVQATE9HSU5fVElNRU9VVABORVRXT1JLX1JFQURfVElNRU9VVABQT1NUAE1JU0RJUkVDVEVEX1JFUVVFU1QAQ0xJRU5UX0NMT1NFRF9SRVFVRVNUAENMSUVOVF9DTE9TRURfTE9BRF9CQUxBTkNFRF9SRVFVRVNUAEJBRF9SRVFVRVNUAEhUVFBfUkVRVUVTVF9TRU5UX1RPX0hUVFBTX1BPUlQAUkVQT1JUAElNX0FfVEVBUE9UAFJFU0VUX0NPTlRFTlQATk9fQ09OVEVOVABQQVJUSUFMX0NPTlRFTlQASFBFX0lOVkFMSURfQ09OU1RBTlQASFBFX0NCX1JFU0VUAEdFVABIUEVfU1RSSUNUAENPTkZMSUNUAFRFTVBPUkFSWV9SRURJUkVDVABQRVJNQU5FTlRfUkVESVJFQ1QAQ09OTkVDVABNVUxUSV9TVEFUVVMASFBFX0lOVkFMSURfU1RBVFVTAFRPT19NQU5ZX1JFUVVFU1RTAEVBUkxZX0hJTlRTAFVOQVZBSUxBQkxFX0ZPUl9MRUdBTF9SRUFTT05TAE9QVElPTlMAU1dJVENISU5HX1BST1RPQ09MUwBWQVJJQU5UX0FMU09fTkVHT1RJQVRFUwBNVUxUSVBMRV9DSE9JQ0VTAElOVEVSTkFMX1NFUlZFUl9FUlJPUgBXRUJfU0VSVkVSX1VOS05PV05fRVJST1IAUkFJTEdVTl9FUlJPUgBJREVOVElUWV9QUk9WSURFUl9BVVRIRU5USUNBVElPTl9FUlJPUgBTU0xfQ0VSVElGSUNBVEVfRVJST1IASU5WQUxJRF9YX0ZPUldBUkRFRF9GT1IAU0VUX1BBUkFNRVRFUgBHRVRfUEFSQU1FVEVSAEhQRV9VU0VSAFNFRV9PVEhFUgBIUEVfQ0JfQ0hVTktfSEVBREVSAE1LQ0FMRU5EQVIAU0VUVVAAV0VCX1NFUlZFUl9JU19ET1dOAFRFQVJET1dOAEhQRV9DTE9TRURfQ09OTkVDVElPTgBIRVVSSVNUSUNfRVhQSVJBVElPTgBESVNDT05ORUNURURfT1BFUkFUSU9OAE5PTl9BVVRIT1JJVEFUSVZFX0lORk9STUFUSU9OAEhQRV9JTlZBTElEX1ZFUlNJT04ASFBFX0NCX01FU1NBR0VfQkVHSU4AU0lURV9JU19GUk9aRU4ASFBFX0lOVkFMSURfSEVBREVSX1RPS0VOAElOVkFMSURfVE9LRU4ARk9SQklEREVOAEVOSEFOQ0VfWU9VUl9DQUxNAEhQRV9JTlZBTElEX1VSTABCTE9DS0VEX0JZX1BBUkVOVEFMX0NPTlRST0wATUtDT0wAQUNMAEhQRV9JTlRFUk5BTABSRVFVRVNUX0hFQURFUl9GSUVMRFNfVE9PX0xBUkdFX1VOT0ZGSUNJQUwASFBFX09LAFVOTElOSwBVTkxPQ0sAUFJJAFJFVFJZX1dJVEgASFBFX0lOVkFMSURfQ09OVEVOVF9MRU5HVEgASFBFX1VORVhQRUNURURfQ09OVEVOVF9MRU5HVEgARkxVU0gAUFJPUFBBVENIAE0tU0VBUkNIAFVSSV9UT09fTE9ORwBQUk9DRVNTSU5HAE1JU0NFTExBTkVPVVNfUEVSU0lTVEVOVF9XQVJOSU5HAE1JU0NFTExBTkVPVVNfV0FSTklORwBIUEVfSU5WQUxJRF9UUkFOU0ZFUl9FTkNPRElORwBFeHBlY3RlZCBDUkxGAEhQRV9JTlZBTElEX0NIVU5LX1NJWkUATU9WRQBDT05USU5VRQBIUEVfQ0JfU1RBVFVTX0NPTVBMRVRFAEhQRV9DQl9IRUFERVJTX0NPTVBMRVRFAEhQRV9DQl9WRVJTSU9OX0NPTVBMRVRFAEhQRV9DQl9VUkxfQ09NUExFVEUASFBFX0NCX0NIVU5LX0NPTVBMRVRFAEhQRV9DQl9IRUFERVJfVkFMVUVfQ09NUExFVEUASFBFX0NCX0NIVU5LX0VYVEVOU0lPTl9WQUxVRV9DT01QTEVURQBIUEVfQ0JfQ0hVTktfRVhURU5TSU9OX05BTUVfQ09NUExFVEUASFBFX0NCX01FU1NBR0VfQ09NUExFVEUASFBFX0NCX01FVEhPRF9DT01QTEVURQBIUEVfQ0JfSEVBREVSX0ZJRUxEX0NPTVBMRVRFAERFTEVURQBIUEVfSU5WQUxJRF9FT0ZfU1RBVEUASU5WQUxJRF9TU0xfQ0VSVElGSUNBVEUAUEFVU0UATk9fUkVTUE9OU0UAVU5TVVBQT1JURURfTUVESUFfVFlQRQBHT05FAE5PVF9BQ0NFUFRBQkxFAFNFUlZJQ0VfVU5BVkFJTEFCTEUAUkFOR0VfTk9UX1NBVElTRklBQkxFAE9SSUdJTl9JU19VTlJFQUNIQUJMRQBSRVNQT05TRV9JU19TVEFMRQBQVVJHRQBNRVJHRQBSRVFVRVNUX0hFQURFUl9GSUVMRFNfVE9PX0xBUkdFAFJFUVVFU1RfSEVBREVSX1RPT19MQVJHRQBQQVlMT0FEX1RPT19MQVJHRQBJTlNVRkZJQ0lFTlRfU1RPUkFHRQBIUEVfUEFVU0VEX1VQR1JBREUASFBFX1BBVVNFRF9IMl9VUEdSQURFAFNPVVJDRQBBTk5PVU5DRQBUUkFDRQBIUEVfVU5FWFBFQ1RFRF9TUEFDRQBERVNDUklCRQBVTlNVQlNDUklCRQBSRUNPUkQASFBFX0lOVkFMSURfTUVUSE9EAE5PVF9GT1VORABQUk9QRklORABVTkJJTkQAUkVCSU5EAFVOQVVUSE9SSVpFRABNRVRIT0RfTk9UX0FMTE9XRUQASFRUUF9WRVJTSU9OX05PVF9TVVBQT1JURUQAQUxSRUFEWV9SRVBPUlRFRABBQ0NFUFRFRABOT1RfSU1QTEVNRU5URUQATE9PUF9ERVRFQ1RFRABIUEVfQ1JfRVhQRUNURUQASFBFX0xGX0VYUEVDVEVEAENSRUFURUQASU1fVVNFRABIUEVfUEFVU0VEAFRJTUVPVVRfT0NDVVJFRABQQVlNRU5UX1JFUVVJUkVEAFBSRUNPTkRJVElPTl9SRVFVSVJFRABQUk9YWV9BVVRIRU5USUNBVElPTl9SRVFVSVJFRABORVRXT1JLX0FVVEhFTlRJQ0FUSU9OX1JFUVVJUkVEAExFTkdUSF9SRVFVSVJFRABTU0xfQ0VSVElGSUNBVEVfUkVRVUlSRUQAVVBHUkFERV9SRVFVSVJFRABQQUdFX0VYUElSRUQAUFJFQ09ORElUSU9OX0ZBSUxFRABFWFBFQ1RBVElPTl9GQUlMRUQAUkVWQUxJREFUSU9OX0ZBSUxFRABTU0xfSEFORFNIQUtFX0ZBSUxFRABMT0NLRUQAVFJBTlNGT1JNQVRJT05fQVBQTElFRABOT1RfTU9ESUZJRUQATk9UX0VYVEVOREVEAEJBTkRXSURUSF9MSU1JVF9FWENFRURFRABTSVRFX0lTX09WRVJMT0FERUQASEVBRABFeHBlY3RlZCBIVFRQLwAAXhMAACYTAAAwEAAA8BcAAJ0TAAAVEgAAORcAAPASAAAKEAAAdRIAAK0SAACCEwAATxQAAH8QAACgFQAAIxQAAIkSAACLFAAATRUAANQRAADPFAAAEBgAAMkWAADcFgAAwREAAOAXAAC7FAAAdBQAAHwVAADlFAAACBcAAB8QAABlFQAAoxQAACgVAAACFQAAmRUAACwQAACLGQAATw8AANQOAABqEAAAzhAAAAIXAACJDgAAbhMAABwTAABmFAAAVhcAAMETAADNEwAAbBMAAGgXAABmFwAAXxcAACITAADODwAAaQ4AANgOAABjFgAAyxMAAKoOAAAoFwAAJhcAAMUTAABdFgAA6BEAAGcTAABlEwAA8hYAAHMTAAAdFwAA+RYAAPMRAADPDgAAzhUAAAwSAACzEQAApREAAGEQAAAyFwAAuxMAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQIBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAIDAgICAgIAAAICAAICAAICAgICAgICAgIABAAAAAAAAgICAgICAgICAgICAgICAgICAgICAgICAgIAAAACAgICAgICAgICAgICAgICAgICAgICAgICAgICAgACAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAACAAICAgICAAACAgACAgACAgICAgICAgICAAMABAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAAgACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbG9zZWVlcC1hbGl2ZQAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQIBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBY2h1bmtlZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEAAQEBAQEAAAEBAAEBAAEBAQEBAQEBAQEAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABlY3Rpb25lbnQtbGVuZ3Rob25yb3h5LWNvbm5lY3Rpb24AAAAAAAAAAAAAAAAAAAByYW5zZmVyLWVuY29kaW5ncGdyYWRlDQoNCg0KU00NCg0KVFRQL0NFL1RTUC8AAAAAAAAAAAAAAAABAgABAwAAAAAAAAAAAAAAAAAAAAAAAAQBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAQIAAQMAAAAAAAAAAAAAAAAAAAAAAAAEAQEFAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAEAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAQAAAgAAAAAAAAAAAAAAAAAAAAAAAAMEAAAEBAQEBAQEBAQEBAUEBAQEBAQEBAQEBAQABAAGBwQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEAAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAEAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAADAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwAAAAAAAAMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAABAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAIAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAAAAAAAADAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABOT1VOQ0VFQ0tPVVRORUNURVRFQ1JJQkVMVVNIRVRFQURTRUFSQ0hSR0VDVElWSVRZTEVOREFSVkVPVElGWVBUSU9OU0NIU0VBWVNUQVRDSEdFT1JESVJFQ1RPUlRSQ0hQQVJBTUVURVJVUkNFQlNDUklCRUFSRE9XTkFDRUlORE5LQ0tVQlNDUklCRUhUVFAvQURUUC8='\n","module.exports = 'AGFzbQEAAAABMAhgAX8Bf2ADf39/AX9gBH9/f38Bf2AAAGADf39/AGABfwBgAn9/AGAGf39/f39/AALLAQgDZW52GHdhc21fb25faGVhZGVyc19jb21wbGV0ZQACA2VudhV3YXNtX29uX21lc3NhZ2VfYmVnaW4AAANlbnYLd2FzbV9vbl91cmwAAQNlbnYOd2FzbV9vbl9zdGF0dXMAAQNlbnYUd2FzbV9vbl9oZWFkZXJfZmllbGQAAQNlbnYUd2FzbV9vbl9oZWFkZXJfdmFsdWUAAQNlbnYMd2FzbV9vbl9ib2R5AAEDZW52GHdhc21fb25fbWVzc2FnZV9jb21wbGV0ZQAAA0ZFAwMEAAAFAAAAAAAABQEFAAUFBQAABgAAAAAGBgYGAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAAABAQcAAAUFAwABBAUBcAESEgUDAQACBggBfwFBgNQECwfRBSIGbWVtb3J5AgALX2luaXRpYWxpemUACRlfX2luZGlyZWN0X2Z1bmN0aW9uX3RhYmxlAQALbGxodHRwX2luaXQAChhsbGh0dHBfc2hvdWxkX2tlZXBfYWxpdmUAQQxsbGh0dHBfYWxsb2MADAZtYWxsb2MARgtsbGh0dHBfZnJlZQANBGZyZWUASA9sbGh0dHBfZ2V0X3R5cGUADhVsbGh0dHBfZ2V0X2h0dHBfbWFqb3IADxVsbGh0dHBfZ2V0X2h0dHBfbWlub3IAEBFsbGh0dHBfZ2V0X21ldGhvZAARFmxsaHR0cF9nZXRfc3RhdHVzX2NvZGUAEhJsbGh0dHBfZ2V0X3VwZ3JhZGUAEwxsbGh0dHBfcmVzZXQAFA5sbGh0dHBfZXhlY3V0ZQAVFGxsaHR0cF9zZXR0aW5nc19pbml0ABYNbGxodHRwX2ZpbmlzaAAXDGxsaHR0cF9wYXVzZQAYDWxsaHR0cF9yZXN1bWUAGRtsbGh0dHBfcmVzdW1lX2FmdGVyX3VwZ3JhZGUAGhBsbGh0dHBfZ2V0X2Vycm5vABsXbGxodHRwX2dldF9lcnJvcl9yZWFzb24AHBdsbGh0dHBfc2V0X2Vycm9yX3JlYXNvbgAdFGxsaHR0cF9nZXRfZXJyb3JfcG9zAB4RbGxodHRwX2Vycm5vX25hbWUAHxJsbGh0dHBfbWV0aG9kX25hbWUAIBJs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IAH9CwMAIABBMGogAf0LAwAgAEEgaiAB/QsDACAAQd0BNgIcQQALewEBfwJAIAAoAgwiAw0AAkAgACgCBEUNACAAIAE2AgQLAkAgACABIAIQxICAgAAiAw0AIAAoAgwPCyAAIAM2AhxBACEDIAAoAgQiAUUNACAAIAEgAiAAKAIIEYGAgIAAACIBRQ0AIAAgAjYCFCAAIAE2AgwgASEDCyADC+TzAQMOfwN+BH8jgICAgABBEGsiAySAgICAACABIQQgASEFIAEhBiABIQcgASEIIAEhCSABIQogASELIAEhDCABIQ0gASEOIAEhDwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCAAKAIcIhBBf2oO3QHaAQHZAQIDBAUGBwgJCgsMDQ7YAQ8Q1wEREtYBExQVFhcYGRob4AHfARwdHtUBHyAhIiMkJdQBJicoKSorLNMB0gEtLtEB0AEvMDEyMzQ1Njc4OTo7PD0+P0BBQkNERUbbAUdISUrPAc4BS80BTMwBTU5PUFFSU1RVVldYWVpbXF1eX2BhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ent8fX5/gAGBAYIBgwGEAYUBhgGHAYgBiQGKAYsBjAGNAY4BjwGQAZEB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QAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIBAOxwEAAQID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YWNrIGVycm9yAGBvbl9jaHVua19leHRlbnNpb25fdmFsdWVgIGNhbGxiYWNrIGVycm9yAGBvbl9zdGF0dXNfY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl92ZXJzaW9uX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fdXJsX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fY2h1bmtfY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl9oZWFkZXJfdmFsdWVfY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl9tZXNzYWdlX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fbWV0aG9kX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25faGVhZGVyX2ZpZWxkX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fY2h1bmtfZXh0ZW5zaW9uX25hbWVgIGNhbGxiYWNrIGVycm9yAFVuZXhwZWN0ZWQgY2hhciBpbiB1cmwgc2VydmVyAEludmFsaWQgaGVhZGVyIHZhbHVlIGNoYXIASW52YWxpZCBoZWFkZXIgZmllbGQgY2hhcgBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX3ZlcnNpb24ASW52YWxpZCBtaW5vciB2ZXJzaW9uAEludmFsaWQgbWFqb3IgdmVyc2lvbgBFeHBlY3RlZCBzcGFjZSBhZnRlciB2ZXJzaW9uAEV4cGVjdGVkIENSTEYgYWZ0ZXIgdmVyc2lvbgBJbnZhbGlkIEhUVFAgdmVyc2lvbgBJbnZhbGlkIGhlYWRlciB0b2tlbgBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX3VybABJbnZhbGlkIGNoYXJhY3RlcnMgaW4gdXJsAFVuZXhwZWN0ZWQgc3RhcnQgY2hhciBpbiB1cmwARG91YmxlIEAgaW4gdXJsAEVtcHR5IENvbnRlbnQtTGVuZ3RoAEludmFsaWQgY2hhcmFjdGVyIGluIENvbnRlbnQtTGVuZ3RoAER1cGxpY2F0ZSBDb250ZW50LUxlbmd0aABJbnZhbGlkIGNoYXIgaW4gdXJsIHBhdGgAQ29udGVudC1MZW5ndGggY2FuJ3QgYmUgcHJlc2VudCB3aXRoIFRyYW5zZmVyLUVuY29kaW5nAEludmFsaWQgY2hhcmFjdGVyIGluIGNodW5rIHNpemUAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9oZWFkZXJfdmFsdWUAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9jaHVua19leHRlbnNpb25fdmFsdWUASW52YWxpZCBjaGFyYWN0ZXIgaW4gY2h1bmsgZXh0ZW5zaW9ucyB2YWx1ZQBNaXNzaW5nIGV4cGVjdGVkIExGIGFmdGVyIGhlYWRlciB2YWx1ZQBJbnZhbGlkIGBUcmFuc2Zlci1FbmNvZGluZ2AgaGVhZGVyIHZhbHVlAEludmFsaWQgY2hhcmFjdGVyIGluIGNodW5rIGV4dGVuc2lvbnMgcXVvdGUgdmFsdWUASW52YWxpZCBjaGFyYWN0ZXIgaW4gY2h1bmsgZXh0ZW5zaW9ucyBxdW90ZWQgdmFsdWUAUGF1c2VkIGJ5IG9uX2hlYWRlcnNfY29tcGxldGUASW52YWxpZCBFT0Ygc3RhdGUAb25fcmVzZXQgcGF1c2UAb25fY2h1bmtfaGVhZGVyIHBhdXNlAG9uX21lc3NhZ2VfYmVnaW4gcGF1c2UAb25fY2h1bmtfZXh0ZW5zaW9uX3ZhbHVlIHBhdXNlAG9uX3N0YXR1c19jb21wbGV0ZSBwYXVzZQBvbl92ZXJzaW9uX2NvbXBsZXRlIHBhdXNlAG9uX3VybF9jb21wbGV0ZSBwYXVzZQBvbl9jaHVua19jb21wbGV0ZSBwYXVzZQBvbl9oZWFkZXJfdmFsdWVfY29tcGxldGUgcGF1c2UAb25fbWVzc2FnZV9jb21wbGV0ZSBwYXVzZQBvbl9tZXRob2RfY29tcGxldGUgcGF1c2UAb25faGVhZGVyX2ZpZWxkX2NvbXBsZXRlIHBhdXNlAG9uX2NodW5rX2V4dGVuc2lvbl9uYW1lIHBhdXNlAFVuZXhwZWN0ZWQgc3BhY2UgYWZ0ZXIgc3RhcnQgbGluZQBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX2NodW5rX2V4dGVuc2lvbl9uYW1lAEludmFsaWQgY2hhcmFjdGVyIGluIGNodW5rIGV4dGVuc2lvbnMgbmFtZQBQYXVzZSBvbiBDT05ORUNUL1VwZ3JhZGUAUGF1c2Ugb24gUFJJL1VwZ3JhZGUARXhwZWN0ZWQgSFRUUC8yIENvbm5lY3Rpb24gUHJlZmFjZQBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX21ldGhvZABFeHBlY3RlZCBzcGFjZSBhZnRlciBtZXRob2QAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9oZWFkZXJfZmllbGQAUGF1c2VkAEludmFsaWQgd29yZCBlbmNvdW50ZXJlZABJbnZhbGlkIG1ldGhvZCBlbmNvdW50ZXJlZABVbmV4cGVjdGVkIGNoYXIgaW4gdXJsIHNjaGVtYQBSZXF1ZXN0IGhhcyBpbnZhbGlkIGBUcmFuc2Zlci1FbmNvZGluZ2AAU1dJVENIX1BST1hZAFVTRV9QUk9YWQBNS0FDVElWSVRZAFVOUFJPQ0VTU0FCTEVfRU5USVRZAENPUFkATU9WRURfUEVSTUFORU5UTFkAVE9PX0VBUkxZAE5PVElGWQBGQUlMRURfREVQRU5ERU5DWQBCQURfR0FURVdBWQBQTEFZAFBVVABDSEVDS09VVABHQVRFV0FZX1RJTUVPVVQAUkVRVUVTVF9USU1FT1VUAE5FVFdPUktfQ09OTkVDVF9USU1FT1VUAENPTk5FQ1RJT05fVElNRU9VVABMT0dJTl9USU1FT1VUAE5FVFdPUktfUkVBRF9USU1FT1VUAFBPU1QATUlTRElSRUNURURfUkVRVUVTVABDTElFTlRfQ0xPU0VEX1JFUVVFU1QAQ0xJRU5UX0NMT1NFRF9MT0FEX0JBTEFOQ0VEX1JFUVVFU1QAQkFEX1JFUVVFU1QASFRUUF9SRVFVRVNUX1NFTlRfVE9fSFRUUFNfUE9SVABSRVBPUlQASU1fQV9URUFQT1QAUkVTRVRfQ09OVEVOVABOT19DT05URU5UAFBBUlRJQUxfQ09OVEVOVABIUEVfSU5WQUxJRF9DT05TVEFOVABIUEVfQ0JfUkVTRVQAR0VUAEhQRV9TVFJJQ1QAQ09ORkxJQ1QAVEVNUE9SQVJZX1JFRElSRUNUAFBFUk1BTkVOVF9SRURJUkVDVABDT05ORUNUAE1VTFRJX1NUQVRVUwBIUEVfSU5WQUxJRF9TVEFUVVMAVE9PX01BTllfUkVRVUVTVFMARUFSTFlfSElOVFMAVU5BVkFJTEFCTEVfRk9SX0xFR0FMX1JFQVNPTlMAT1BUSU9OUwBTV0lUQ0hJTkdfUFJPVE9DT0xTAFZBUklBTlRfQUxTT19ORUdPVElBVEVTAE1VTFRJUExFX0NIT0lDRVMASU5URVJOQUxfU0VSVkVSX0VSUk9SAFdFQl9TRVJWRVJfVU5LTk9XTl9FUlJPUgBSQUlMR1VOX0VSUk9SAElERU5USVRZX1BST1ZJREVSX0FVVEhFTlRJQ0FUSU9OX0VSUk9SAFNTTF9DRVJUSUZJQ0FURV9FUlJPUgBJTlZBTElEX1hfRk9SV0FSREVEX0ZPUgBTRVRfUEFSQU1FVEVSAEdFVF9QQVJBTUVURVIASFBFX1VTRVIAU0VFX09USEVSAEhQRV9DQl9DSFVOS19IRUFERVIATUtDQUxFTkRBUgBTRVRVUABXRUJfU0VSVkVSX0lTX0RPV04AVEVBUkRPV04ASFBFX0NMT1NFRF9DT05ORUNUSU9OAEhFVVJJU1RJQ19FWFBJUkFUSU9OAERJU0NPTk5FQ1RFRF9PUEVSQVRJT04ATk9OX0FVVEhPUklUQVRJVkVfSU5GT1JNQVRJT04ASFBFX0lOVkFMSURfVkVSU0lPTgBIUEVfQ0JfTUVTU0FHRV9CRUdJTgBTSVRFX0lTX0ZST1pFTgBIUEVfSU5WQUxJRF9IRUFERVJfVE9LRU4ASU5WQUxJRF9UT0tFTgBGT1JCSURERU4ARU5IQU5DRV9ZT1VSX0NBTE0ASFBFX0lOVkFMSURfVVJMAEJMT0NLRURfQllfUEFSRU5UQUxfQ09OVFJPTABNS0NPTABBQ0wASFBFX0lOVEVSTkFMAFJFUVVFU1RfSEVBREVSX0ZJRUxEU19UT09fTEFSR0VfVU5PRkZJQ0lBTABIUEVfT0sAVU5MSU5LAFVOTE9DSwBQUkkAUkVUUllfV0lUSABIUEVfSU5WQUxJRF9DT05URU5UX0xFTkdUSABIUEVfVU5FWFBFQ1RFRF9DT05URU5UX0xFTkdUSABGTFVTSABQUk9QUEFUQ0gATS1TRUFSQ0gAVVJJX1RPT19MT05HAFBST0NFU1NJTkcATUlTQ0VMTEFORU9VU19QRVJTSVNURU5UX1dBUk5JTkcATUlTQ0VMTEFORU9VU19XQVJOSU5HAEhQRV9JTlZBTElEX1RSQU5TRkVSX0VOQ09ESU5HAEV4cGVjdGVkIENSTEYASFBFX0lOVkFMSURfQ0hVTktfU0laRQBNT1ZFAENPTlRJTlVFAEhQRV9DQl9TVEFUVVNfQ09NUExFVEUASFBFX0NCX0hFQURFUlNfQ09NUExFVEUASFBFX0NCX1ZFUlNJT05fQ09NUExFVEUASFBFX0NCX1VSTF9DT01QTEVURQBIUEVfQ0JfQ0hVTktfQ09NUExFVEUASFBFX0NCX0hFQURFUl9WQUxVRV9DT01QTEVURQBIUEVfQ0JfQ0hVTktfRVhURU5TSU9OX1ZBTFVFX0NPTVBMRVRFAEhQRV9DQl9DSFVOS19FWFRFTlNJT05fTkFNRV9DT01QTEVURQBIUEVfQ0JfTUVTU0FHRV9DT01QTEVURQBIUEVfQ0JfTUVUSE9EX0NPTVBMRVRFAEhQRV9DQl9IRUFERVJfRklFTERfQ09NUExFVEUAREVMRVRFAEhQRV9JTlZBTElEX0VPRl9TVEFURQBJTlZBTElEX1NTTF9DRVJUSUZJQ0FURQBQQVVTRQBOT19SRVNQT05TRQBVTlNVUFBPUlRFRF9NRURJQV9UWVBFAEdPTkUATk9UX0FDQ0VQVEFCTEUAU0VSVklDRV9VTkFWQUlMQUJMRQBSQU5HRV9OT1RfU0FUSVNGSUFCTEUAT1JJR0lOX0lTX1VOUkVBQ0hBQkxFAFJFU1BPTlNFX0lTX1NUQUxFAFBVUkdFAE1FUkdFAFJFUVVFU1RfSEVBREVSX0ZJRUxEU19UT09fTEFSR0UAUkVRVUVTVF9IRUFERVJfVE9PX0xBUkdFAFBBWUxPQURfVE9PX0xBUkdFAElOU1VGRklDSUVOVF9TVE9SQUdFAEhQRV9QQVVTRURfVVBHUkFERQBIUEVfUEFVU0VEX0gyX1VQR1JBREUAU09VUkNFAEFOTk9VTkNFAFRSQUNFAEhQRV9VTkVYUEVDVEVEX1NQQUNFAERFU0NSSUJFAFVOU1VCU0NSSUJFAFJFQ09SRABIUEVfSU5WQUxJRF9NRVRIT0QATk9UX0ZPVU5EAFBST1BGSU5EAFVOQklORABSRUJJTkQAVU5BVVRIT1JJWkVEAE1FVEhPRF9OT1RfQUxMT1dFRABIVFRQX1ZFUlNJT05fTk9UX1NVUFBPUlRFRABBTFJFQURZX1JFUE9SVEVEAEFDQ0VQVEVEAE5PVF9JTVBMRU1FTlRFRABMT09QX0RFVEVDVEVEAEhQRV9DUl9FWFBFQ1RFRABIUEVfTEZfRVhQRUNURUQAQ1JFQVRFRABJTV9VU0VEAEhQRV9QQVVTRUQAVElNRU9VVF9PQ0NVUkVEAFBBWU1FTlRfUkVRVUlSRUQAUFJFQ09ORElUSU9OX1JFUVVJUkVEAFBST1hZX0FVVEhFTlRJQ0FUSU9OX1JFUVVJUkVEAE5FVFdPUktfQVVUSEVOVElDQVRJT05fUkVRVUlSRUQATEVOR1RIX1JFUVVJUkVEAFNTTF9DRVJUSUZJQ0FURV9SRVFVSVJFRABVUEdSQURFX1JFUVVJUkVEAFBBR0VfRVhQSVJFRABQUkVDT05ESVRJT05fRkFJTEVEAEVYUEVDVEFUSU9OX0ZBSUxFRABSRVZBTElEQVRJT05fRkFJTEVEAFNTTF9IQU5EU0hBS0VfRkFJTEVEAExPQ0tFRABUUkFOU0ZPUk1BVElPTl9BUFBMSUVEAE5PVF9NT0RJRklFRABOT1RfRVhURU5ERUQAQkFORFdJRFRIX0xJTUlUX0VYQ0VFREVEAFNJVEVfSVNfT1ZFUkxPQURFRABIRUFEAEV4cGVjdGVkIEhUVFAvAABeEwAAJhMAADAQAADwFwAAnRMAABUSAAA5FwAA8BIAAAoQAAB1EgAArRIAAIITAABPFAAAfxAAAKAVAAAjFAAAiRIAAIsUAABNFQAA1BEAAM8UAAAQGAAAyRYAANwWAADBEQAA4BcAALsUAAB0FAAAfBUAAOUUAAAIFwAAHxAAAGUVAACjFAAAKBUAAAIVAACZFQAALBAAAIsZAABPDwAA1A4AAGoQAADOEAAAAhcAAIkOAABuEwAAHBMAAGYUAABWFwAAwRMAAM0TAABsEwAAaBcAAGYXAABfFwAAIhMAAM4PAABpDgAA2A4AAGMWAADLEwAAqg4AACgXAAAmFwAAxRMAAF0WAADoEQAAZxMAAGUTAADyFgAAcxMAAB0XAAD5FgAA8xEAAM8OAADOFQAADBIAALMRAAClEQAAYRAAADIXAAC7EwAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAgMCAgICAgAAAgIAAgIAAgICAgICAgICAgAEAAAAAAACAgICAgICAgICAgICAgICAgICAgICAgICAgAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAIAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAIAAgICAgIAAAICAAICAAICAgICAgICAgIAAwAEAAAAAgICAgICAgICAgICAgICAgICAgICAgICAgIAAAACAgICAgICAgICAgICAgICAgICAgICAgICAgICAgACAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABsb3NlZWVwLWFsaXZlAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQFjaHVua2VkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQABAQEBAQAAAQEAAQEAAQEBAQEBAQEBAQAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGVjdGlvbmVudC1sZW5ndGhvbnJveHktY29ubmVjdGlvbgAAAAAAAAAAAAAAAAAAAHJhbnNmZXItZW5jb2RpbmdwZ3JhZGUNCg0KDQpTTQ0KDQpUVFAvQ0UvVFNQLwAAAAAAAAAAAAAAAAECAAEDAAAAAAAAAAAAAAAAAAAAAAAABAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAABAgABAwAAAAAAAAAAAAAAAAAAAAAAAAQBAQUBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAQAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAABAAACAAAAAAAAAAAAAAAAAAAAAAAAAwQAAAQEBAQEBAQEBAQEBQQEBAQEBAQEBAQEBAAEAAYHBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQABAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAQAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAAAAAAAAAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAEAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAgAAAAACAAAAAAAAAAAAAAAAAAAAAAADAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwAAAAAAAAMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAE5PVU5DRUVDS09VVE5FQ1RFVEVDUklCRUxVU0hFVEVBRFNFQVJDSFJHRUNUSVZJVFlMRU5EQVJWRU9USUZZUFRJT05TQ0hTRUFZU1RBVENIR0VPUkRJUkVDVE9SVFJDSFBBUkFNRVRFUlVSQ0VCU0NSSUJFQVJET1dOQUNFSU5ETktDS1VCU0NSSUJFSFRUUC9BRFRQLw=='\n","// @ts-check\n\n'use strict'\n\n/* global WebAssembly */\n\nconst assert = require('assert')\nconst net = require('net')\nconst http = require('http')\nconst { pipeline } = require('stream')\nconst util = require('./core/util')\nconst timers = require('./timers')\nconst Request = require('./core/request')\nconst DispatcherBase = require('./dispatcher-base')\nconst {\n RequestContentLengthMismatchError,\n ResponseContentLengthMismatchError,\n InvalidArgumentError,\n RequestAbortedError,\n HeadersTimeoutError,\n HeadersOverflowError,\n SocketError,\n InformationalError,\n BodyTimeoutError,\n HTTPParserError,\n ResponseExceededMaxSizeError,\n ClientDestroyedError\n} = require('./core/errors')\nconst buildConnector = require('./core/connect')\nconst {\n kUrl,\n kReset,\n kServerName,\n kClient,\n kBusy,\n kParser,\n kConnect,\n kBlocking,\n kResuming,\n kRunning,\n kPending,\n kSize,\n kWriting,\n kQueue,\n kConnected,\n kConnecting,\n kNeedDrain,\n kNoRef,\n kKeepAliveDefaultTimeout,\n kHostHeader,\n kPendingIdx,\n kRunningIdx,\n kError,\n kPipelining,\n kSocket,\n kKeepAliveTimeoutValue,\n kMaxHeadersSize,\n kKeepAliveMaxTimeout,\n kKeepAliveTimeoutThreshold,\n kHeadersTimeout,\n kBodyTimeout,\n kStrictContentLength,\n kConnector,\n kMaxRedirections,\n kMaxRequests,\n kCounter,\n kClose,\n kDestroy,\n kDispatch,\n kInterceptors,\n kLocalAddress,\n kMaxResponseSize,\n kHTTPConnVersion,\n // HTTP2\n kHost,\n kHTTP2Session,\n kHTTP2SessionState,\n kHTTP2BuildRequest,\n kHTTP2CopyHeaders,\n kHTTP1BuildRequest\n} = require('./core/symbols')\n\n/** @type {import('http2')} */\nlet http2\ntry {\n http2 = require('http2')\n} catch {\n // @ts-ignore\n http2 = { constants: {} }\n}\n\nconst {\n constants: {\n HTTP2_HEADER_AUTHORITY,\n HTTP2_HEADER_METHOD,\n HTTP2_HEADER_PATH,\n HTTP2_HEADER_SCHEME,\n HTTP2_HEADER_CONTENT_LENGTH,\n HTTP2_HEADER_EXPECT,\n HTTP2_HEADER_STATUS\n }\n} = http2\n\n// Experimental\nlet h2ExperimentalWarned = false\n\nconst FastBuffer = Buffer[Symbol.species]\n\nconst kClosedResolve = Symbol('kClosedResolve')\n\nconst channels = {}\n\ntry {\n const diagnosticsChannel = require('diagnostics_channel')\n channels.sendHeaders = diagnosticsChannel.channel('undici:client:sendHeaders')\n channels.beforeConnect = diagnosticsChannel.channel('undici:client:beforeConnect')\n channels.connectError = diagnosticsChannel.channel('undici:client:connectError')\n channels.connected = diagnosticsChannel.channel('undici:client:connected')\n} catch {\n channels.sendHeaders = { hasSubscribers: false }\n channels.beforeConnect = { hasSubscribers: false }\n channels.connectError = { hasSubscribers: false }\n channels.connected = { hasSubscribers: false }\n}\n\n/**\n * @type {import('../types/client').default}\n */\nclass Client extends DispatcherBase {\n /**\n *\n * @param {string|URL} url\n * @param {import('../types/client').Client.Options} options\n */\n constructor (url, {\n interceptors,\n maxHeaderSize,\n headersTimeout,\n socketTimeout,\n requestTimeout,\n connectTimeout,\n bodyTimeout,\n idleTimeout,\n keepAlive,\n keepAliveTimeout,\n maxKeepAliveTimeout,\n keepAliveMaxTimeout,\n keepAliveTimeoutThreshold,\n socketPath,\n pipelining,\n tls,\n strictContentLength,\n maxCachedSessions,\n maxRedirections,\n connect,\n maxRequestsPerClient,\n localAddress,\n maxResponseSize,\n autoSelectFamily,\n autoSelectFamilyAttemptTimeout,\n // h2\n allowH2,\n maxConcurrentStreams\n } = {}) {\n super()\n\n if (keepAlive !== undefined) {\n throw new InvalidArgumentError('unsupported keepAlive, use pipelining=0 instead')\n }\n\n if (socketTimeout !== undefined) {\n throw new InvalidArgumentError('unsupported socketTimeout, use headersTimeout & bodyTimeout instead')\n }\n\n if (requestTimeout !== undefined) {\n throw new InvalidArgumentError('unsupported requestTimeout, use headersTimeout & bodyTimeout instead')\n }\n\n if (idleTimeout !== undefined) {\n throw new InvalidArgumentError('unsupported idleTimeout, use keepAliveTimeout instead')\n }\n\n if (maxKeepAliveTimeout !== undefined) {\n throw new InvalidArgumentError('unsupported maxKeepAliveTimeout, use keepAliveMaxTimeout instead')\n }\n\n if (maxHeaderSize != null && !Number.isFinite(maxHeaderSize)) {\n throw new InvalidArgumentError('invalid maxHeaderSize')\n }\n\n if (socketPath != null && typeof socketPath !== 'string') {\n throw new InvalidArgumentError('invalid socketPath')\n }\n\n if (connectTimeout != null && (!Number.isFinite(connectTimeout) || connectTimeout < 0)) {\n throw new InvalidArgumentError('invalid connectTimeout')\n }\n\n if (keepAliveTimeout != null && (!Number.isFinite(keepAliveTimeout) || keepAliveTimeout <= 0)) {\n throw new InvalidArgumentError('invalid keepAliveTimeout')\n }\n\n if (keepAliveMaxTimeout != null && (!Number.isFinite(keepAliveMaxTimeout) || keepAliveMaxTimeout <= 0)) {\n throw new InvalidArgumentError('invalid keepAliveMaxTimeout')\n }\n\n if (keepAliveTimeoutThreshold != null && !Number.isFinite(keepAliveTimeoutThreshold)) {\n throw new InvalidArgumentError('invalid keepAliveTimeoutThreshold')\n }\n\n if (headersTimeout != null && (!Number.isInteger(headersTimeout) || headersTimeout < 0)) {\n throw new InvalidArgumentError('headersTimeout must be a positive integer or zero')\n }\n\n if (bodyTimeout != null && (!Number.isInteger(bodyTimeout) || bodyTimeout < 0)) {\n throw new InvalidArgumentError('bodyTimeout must be a positive integer or zero')\n }\n\n if (connect != null && typeof connect !== 'function' && typeof connect !== 'object') {\n throw new InvalidArgumentError('connect must be a function or an object')\n }\n\n if (maxRedirections != null && (!Number.isInteger(maxRedirections) || maxRedirections < 0)) {\n throw new InvalidArgumentError('maxRedirections must be a positive number')\n }\n\n if (maxRequestsPerClient != null && (!Number.isInteger(maxRequestsPerClient) || maxRequestsPerClient < 0)) {\n throw new InvalidArgumentError('maxRequestsPerClient must be a positive number')\n }\n\n if (localAddress != null && (typeof localAddress !== 'string' || net.isIP(localAddress) === 0)) {\n throw new InvalidArgumentError('localAddress must be valid string IP address')\n }\n\n if (maxResponseSize != null && (!Number.isInteger(maxResponseSize) || maxResponseSize < -1)) {\n throw new InvalidArgumentError('maxResponseSize must be a positive number')\n }\n\n if (\n autoSelectFamilyAttemptTimeout != null &&\n (!Number.isInteger(autoSelectFamilyAttemptTimeout) || autoSelectFamilyAttemptTimeout < -1)\n ) {\n throw new InvalidArgumentError('autoSelectFamilyAttemptTimeout must be a positive number')\n }\n\n // h2\n if (allowH2 != null && typeof allowH2 !== 'boolean') {\n throw new InvalidArgumentError('allowH2 must be a valid boolean value')\n }\n\n if (maxConcurrentStreams != null && (typeof maxConcurrentStreams !== 'number' || maxConcurrentStreams < 1)) {\n throw new InvalidArgumentError('maxConcurrentStreams must be a possitive integer, greater than 0')\n }\n\n if (typeof connect !== 'function') {\n connect = buildConnector({\n ...tls,\n maxCachedSessions,\n allowH2,\n socketPath,\n timeout: connectTimeout,\n ...(util.nodeHasAutoSelectFamily && autoSelectFamily ? { autoSelectFamily, autoSelectFamilyAttemptTimeout } : undefined),\n ...connect\n })\n }\n\n this[kInterceptors] = interceptors && interceptors.Client && Array.isArray(interceptors.Client)\n ? interceptors.Client\n : [createRedirectInterceptor({ maxRedirections })]\n this[kUrl] = util.parseOrigin(url)\n this[kConnector] = connect\n this[kSocket] = null\n this[kPipelining] = pipelining != null ? pipelining : 1\n this[kMaxHeadersSize] = maxHeaderSize || http.maxHeaderSize\n this[kKeepAliveDefaultTimeout] = keepAliveTimeout == null ? 4e3 : keepAliveTimeout\n this[kKeepAliveMaxTimeout] = keepAliveMaxTimeout == null ? 600e3 : keepAliveMaxTimeout\n this[kKeepAliveTimeoutThreshold] = keepAliveTimeoutThreshold == null ? 1e3 : keepAliveTimeoutThreshold\n this[kKeepAliveTimeoutValue] = this[kKeepAliveDefaultTimeout]\n this[kServerName] = null\n this[kLocalAddress] = localAddress != null ? localAddress : null\n this[kResuming] = 0 // 0, idle, 1, scheduled, 2 resuming\n this[kNeedDrain] = 0 // 0, idle, 1, scheduled, 2 resuming\n this[kHostHeader] = `host: ${this[kUrl].hostname}${this[kUrl].port ? `:${this[kUrl].port}` : ''}\\r\\n`\n this[kBodyTimeout] = bodyTimeout != null ? bodyTimeout : 300e3\n this[kHeadersTimeout] = headersTimeout != null ? headersTimeout : 300e3\n this[kStrictContentLength] = strictContentLength == null ? true : strictContentLength\n this[kMaxRedirections] = maxRedirections\n this[kMaxRequests] = maxRequestsPerClient\n this[kClosedResolve] = null\n this[kMaxResponseSize] = maxResponseSize > -1 ? maxResponseSize : -1\n this[kHTTPConnVersion] = 'h1'\n\n // HTTP/2\n this[kHTTP2Session] = null\n this[kHTTP2SessionState] = !allowH2\n ? null\n : {\n // streams: null, // Fixed queue of streams - For future support of `push`\n openStreams: 0, // Keep track of them to decide wether or not unref the session\n maxConcurrentStreams: maxConcurrentStreams != null ? maxConcurrentStreams : 100 // Max peerConcurrentStreams for a Node h2 server\n }\n this[kHost] = `${this[kUrl].hostname}${this[kUrl].port ? `:${this[kUrl].port}` : ''}`\n\n // kQueue is built up of 3 sections separated by\n // the kRunningIdx and kPendingIdx indices.\n // | complete | running | pending |\n // ^ kRunningIdx ^ kPendingIdx ^ kQueue.length\n // kRunningIdx points to the first running element.\n // kPendingIdx points to the first pending element.\n // This implements a fast queue with an amortized\n // time of O(1).\n\n this[kQueue] = []\n this[kRunningIdx] = 0\n this[kPendingIdx] = 0\n }\n\n get pipelining () {\n return this[kPipelining]\n }\n\n set pipelining (value) {\n this[kPipelining] = value\n resume(this, true)\n }\n\n get [kPending] () {\n return this[kQueue].length - this[kPendingIdx]\n }\n\n get [kRunning] () {\n return this[kPendingIdx] - this[kRunningIdx]\n }\n\n get [kSize] () {\n return this[kQueue].length - this[kRunningIdx]\n }\n\n get [kConnected] () {\n return !!this[kSocket] && !this[kConnecting] && !this[kSocket].destroyed\n }\n\n get [kBusy] () {\n const socket = this[kSocket]\n return (\n (socket && (socket[kReset] || socket[kWriting] || socket[kBlocking])) ||\n (this[kSize] >= (this[kPipelining] || 1)) ||\n this[kPending] > 0\n )\n }\n\n /* istanbul ignore: only used for test */\n [kConnect] (cb) {\n connect(this)\n this.once('connect', cb)\n }\n\n [kDispatch] (opts, handler) {\n const origin = opts.origin || this[kUrl].origin\n\n const request = this[kHTTPConnVersion] === 'h2'\n ? Request[kHTTP2BuildRequest](origin, opts, handler)\n : Request[kHTTP1BuildRequest](origin, opts, handler)\n\n this[kQueue].push(request)\n if (this[kResuming]) {\n // Do nothing.\n } else if (util.bodyLength(request.body) == null && util.isIterable(request.body)) {\n // Wait a tick in case stream/iterator is ended in the same tick.\n this[kResuming] = 1\n process.nextTick(resume, this)\n } else {\n resume(this, true)\n }\n\n if (this[kResuming] && this[kNeedDrain] !== 2 && this[kBusy]) {\n this[kNeedDrain] = 2\n }\n\n return this[kNeedDrain] < 2\n }\n\n async [kClose] () {\n // TODO: for H2 we need to gracefully flush the remaining enqueued\n // request and close each stream.\n return new Promise((resolve) => {\n if (!this[kSize]) {\n resolve(null)\n } else {\n this[kClosedResolve] = resolve\n }\n })\n }\n\n async [kDestroy] (err) {\n return new Promise((resolve) => {\n const requests = this[kQueue].splice(this[kPendingIdx])\n for (let i = 0; i < requests.length; i++) {\n const request = requests[i]\n errorRequest(this, request, err)\n }\n\n const callback = () => {\n if (this[kClosedResolve]) {\n // TODO (fix): Should we error here with ClientDestroyedError?\n this[kClosedResolve]()\n this[kClosedResolve] = null\n }\n resolve()\n }\n\n if (this[kHTTP2Session] != null) {\n util.destroy(this[kHTTP2Session], err)\n this[kHTTP2Session] = null\n this[kHTTP2SessionState] = null\n }\n\n if (!this[kSocket]) {\n queueMicrotask(callback)\n } else {\n util.destroy(this[kSocket].on('close', callback), err)\n }\n\n resume(this)\n })\n }\n}\n\nfunction onHttp2SessionError (err) {\n assert(err.code !== 'ERR_TLS_CERT_ALTNAME_INVALID')\n\n this[kSocket][kError] = err\n\n onError(this[kClient], err)\n}\n\nfunction onHttp2FrameError (type, code, id) {\n const err = new InformationalError(`HTTP/2: \"frameError\" received - type ${type}, code ${code}`)\n\n if (id === 0) {\n this[kSocket][kError] = err\n onError(this[kClient], err)\n }\n}\n\nfunction onHttp2SessionEnd () {\n util.destroy(this, new SocketError('other side closed'))\n util.destroy(this[kSocket], new SocketError('other side closed'))\n}\n\nfunction onHTTP2GoAway (code) {\n const client = this[kClient]\n const err = new InformationalError(`HTTP/2: \"GOAWAY\" frame received with code ${code}`)\n client[kSocket] = null\n client[kHTTP2Session] = null\n\n if (client.destroyed) {\n assert(this[kPending] === 0)\n\n // Fail entire queue.\n const requests = client[kQueue].splice(client[kRunningIdx])\n for (let i = 0; i < requests.length; i++) {\n const request = requests[i]\n errorRequest(this, request, err)\n }\n } else if (client[kRunning] > 0) {\n // Fail head of pipeline.\n const request = client[kQueue][client[kRunningIdx]]\n client[kQueue][client[kRunningIdx]++] = null\n\n errorRequest(client, request, err)\n }\n\n client[kPendingIdx] = client[kRunningIdx]\n\n assert(client[kRunning] === 0)\n\n client.emit('disconnect',\n client[kUrl],\n [client],\n err\n )\n\n resume(client)\n}\n\nconst constants = require('./llhttp/constants')\nconst createRedirectInterceptor = require('./interceptor/redirectInterceptor')\nconst EMPTY_BUF = Buffer.alloc(0)\n\nasync function lazyllhttp () {\n const llhttpWasmData = process.env.JEST_WORKER_ID ? require('./llhttp/llhttp-wasm.js') : undefined\n\n let mod\n try {\n mod = await WebAssembly.compile(Buffer.from(require('./llhttp/llhttp_simd-wasm.js'), 'base64'))\n } catch (e) {\n /* istanbul ignore next */\n\n // We could check if the error was caused by the simd option not\n // being enabled, but the occurring of this other error\n // * https://github.com/emscripten-core/emscripten/issues/11495\n // got me to remove that check to avoid breaking Node 12.\n mod = await WebAssembly.compile(Buffer.from(llhttpWasmData || require('./llhttp/llhttp-wasm.js'), 'base64'))\n }\n\n return await WebAssembly.instantiate(mod, {\n env: {\n /* eslint-disable camelcase */\n\n wasm_on_url: (p, at, len) => {\n /* istanbul ignore next */\n return 0\n },\n wasm_on_status: (p, at, len) => {\n assert.strictEqual(currentParser.ptr, p)\n const start = at - currentBufferPtr + currentBufferRef.byteOffset\n return currentParser.onStatus(new FastBuffer(currentBufferRef.buffer, start, len)) || 0\n },\n wasm_on_message_begin: (p) => {\n assert.strictEqual(currentParser.ptr, p)\n return currentParser.onMessageBegin() || 0\n },\n wasm_on_header_field: (p, at, len) => {\n assert.strictEqual(currentParser.ptr, p)\n const start = at - currentBufferPtr + currentBufferRef.byteOffset\n return currentParser.onHeaderField(new FastBuffer(currentBufferRef.buffer, start, len)) || 0\n },\n wasm_on_header_value: (p, at, len) => {\n assert.strictEqual(currentParser.ptr, p)\n const start = at - currentBufferPtr + currentBufferRef.byteOffset\n return currentParser.onHeaderValue(new FastBuffer(currentBufferRef.buffer, start, len)) || 0\n },\n wasm_on_headers_complete: (p, statusCode, upgrade, shouldKeepAlive) => {\n assert.strictEqual(currentParser.ptr, p)\n return currentParser.onHeadersComplete(statusCode, Boolean(upgrade), Boolean(shouldKeepAlive)) || 0\n },\n wasm_on_body: (p, at, len) => {\n assert.strictEqual(currentParser.ptr, p)\n const start = at - currentBufferPtr + currentBufferRef.byteOffset\n return currentParser.onBody(new FastBuffer(currentBufferRef.buffer, start, len)) || 0\n },\n wasm_on_message_complete: (p) => {\n assert.strictEqual(currentParser.ptr, p)\n return currentParser.onMessageComplete() || 0\n }\n\n /* eslint-enable camelcase */\n }\n })\n}\n\nlet llhttpInstance = null\nlet llhttpPromise = lazyllhttp()\nllhttpPromise.catch()\n\nlet currentParser = null\nlet currentBufferRef = null\nlet currentBufferSize = 0\nlet currentBufferPtr = null\n\nconst TIMEOUT_HEADERS = 1\nconst TIMEOUT_BODY = 2\nconst TIMEOUT_IDLE = 3\n\nclass Parser {\n constructor (client, socket, { exports }) {\n assert(Number.isFinite(client[kMaxHeadersSize]) && client[kMaxHeadersSize] > 0)\n\n this.llhttp = exports\n this.ptr = this.llhttp.llhttp_alloc(constants.TYPE.RESPONSE)\n this.client = client\n this.socket = socket\n this.timeout = null\n this.timeoutValue = null\n this.timeoutType = null\n this.statusCode = null\n this.statusText = ''\n this.upgrade = false\n this.headers = []\n this.headersSize = 0\n this.headersMaxSize = client[kMaxHeadersSize]\n this.shouldKeepAlive = false\n this.paused = false\n this.resume = this.resume.bind(this)\n\n this.bytesRead = 0\n\n this.keepAlive = ''\n this.contentLength = ''\n this.connection = ''\n this.maxResponseSize = client[kMaxResponseSize]\n }\n\n setTimeout (value, type) {\n this.timeoutType = type\n if (value !== this.timeoutValue) {\n timers.clearTimeout(this.timeout)\n if (value) {\n this.timeout = timers.setTimeout(onParserTimeout, value, this)\n // istanbul ignore else: only for jest\n if (this.timeout.unref) {\n this.timeout.unref()\n }\n } else {\n this.timeout = null\n }\n this.timeoutValue = value\n } else if (this.timeout) {\n // istanbul ignore else: only for jest\n if (this.timeout.refresh) {\n this.timeout.refresh()\n }\n }\n }\n\n resume () {\n if (this.socket.destroyed || !this.paused) {\n return\n }\n\n assert(this.ptr != null)\n assert(currentParser == null)\n\n this.llhttp.llhttp_resume(this.ptr)\n\n assert(this.timeoutType === TIMEOUT_BODY)\n if (this.timeout) {\n // istanbul ignore else: only for jest\n if (this.timeout.refresh) {\n this.timeout.refresh()\n }\n }\n\n this.paused = false\n this.execute(this.socket.read() || EMPTY_BUF) // Flush parser.\n this.readMore()\n }\n\n readMore () {\n while (!this.paused && this.ptr) {\n const chunk = this.socket.read()\n if (chunk === null) {\n break\n }\n this.execute(chunk)\n }\n }\n\n execute (data) {\n assert(this.ptr != null)\n assert(currentParser == null)\n assert(!this.paused)\n\n const { socket, llhttp } = this\n\n if (data.length > currentBufferSize) {\n if (currentBufferPtr) {\n llhttp.free(currentBufferPtr)\n }\n currentBufferSize = Math.ceil(data.length / 4096) * 4096\n currentBufferPtr = llhttp.malloc(currentBufferSize)\n }\n\n new Uint8Array(llhttp.memory.buffer, currentBufferPtr, currentBufferSize).set(data)\n\n // Call `execute` on the wasm parser.\n // We pass the `llhttp_parser` pointer address, the pointer address of buffer view data,\n // and finally the length of bytes to parse.\n // The return value is an error code or `constants.ERROR.OK`.\n try {\n let ret\n\n try {\n currentBufferRef = data\n currentParser = this\n ret = llhttp.llhttp_execute(this.ptr, currentBufferPtr, data.length)\n /* eslint-disable-next-line no-useless-catch */\n } catch (err) {\n /* istanbul ignore next: difficult to make a test case for */\n throw err\n } finally {\n currentParser = null\n currentBufferRef = null\n }\n\n const offset = llhttp.llhttp_get_error_pos(this.ptr) - currentBufferPtr\n\n if (ret === constants.ERROR.PAUSED_UPGRADE) {\n this.onUpgrade(data.slice(offset))\n } else if (ret === constants.ERROR.PAUSED) {\n this.paused = true\n socket.unshift(data.slice(offset))\n } else if (ret !== constants.ERROR.OK) {\n const ptr = llhttp.llhttp_get_error_reason(this.ptr)\n let message = ''\n /* istanbul ignore else: difficult to make a test case for */\n if (ptr) {\n const len = new Uint8Array(llhttp.memory.buffer, ptr).indexOf(0)\n message =\n 'Response does not match the HTTP/1.1 protocol (' +\n Buffer.from(llhttp.memory.buffer, ptr, len).toString() +\n ')'\n }\n throw new HTTPParserError(message, constants.ERROR[ret], data.slice(offset))\n }\n } catch (err) {\n util.destroy(socket, err)\n }\n }\n\n destroy () {\n assert(this.ptr != null)\n assert(currentParser == null)\n\n this.llhttp.llhttp_free(this.ptr)\n this.ptr = null\n\n timers.clearTimeout(this.timeout)\n this.timeout = null\n this.timeoutValue = null\n this.timeoutType = null\n\n this.paused = false\n }\n\n onStatus (buf) {\n this.statusText = buf.toString()\n }\n\n onMessageBegin () {\n const { socket, client } = this\n\n /* istanbul ignore next: difficult to make a test case for */\n if (socket.destroyed) {\n return -1\n }\n\n const request = client[kQueue][client[kRunningIdx]]\n if (!request) {\n return -1\n }\n }\n\n onHeaderField (buf) {\n const len = this.headers.length\n\n if ((len & 1) === 0) {\n this.headers.push(buf)\n } else {\n this.headers[len - 1] = Buffer.concat([this.headers[len - 1], buf])\n }\n\n this.trackHeader(buf.length)\n }\n\n onHeaderValue (buf) {\n let len = this.headers.length\n\n if ((len & 1) === 1) {\n this.headers.push(buf)\n len += 1\n } else {\n this.headers[len - 1] = Buffer.concat([this.headers[len - 1], buf])\n }\n\n const key = this.headers[len - 2]\n if (key.length === 10 && key.toString().toLowerCase() === 'keep-alive') {\n this.keepAlive += buf.toString()\n } else if (key.length === 10 && key.toString().toLowerCase() === 'connection') {\n this.connection += buf.toString()\n } else if (key.length === 14 && key.toString().toLowerCase() === 'content-length') {\n this.contentLength += buf.toString()\n }\n\n this.trackHeader(buf.length)\n }\n\n trackHeader (len) {\n this.headersSize += len\n if (this.headersSize >= this.headersMaxSize) {\n util.destroy(this.socket, new HeadersOverflowError())\n }\n }\n\n onUpgrade (head) {\n const { upgrade, client, socket, headers, statusCode } = this\n\n assert(upgrade)\n\n const request = client[kQueue][client[kRunningIdx]]\n assert(request)\n\n assert(!socket.destroyed)\n assert(socket === client[kSocket])\n assert(!this.paused)\n assert(request.upgrade || request.method === 'CONNECT')\n\n this.statusCode = null\n this.statusText = ''\n this.shouldKeepAlive = null\n\n assert(this.headers.length % 2 === 0)\n this.headers = []\n this.headersSize = 0\n\n socket.unshift(head)\n\n socket[kParser].destroy()\n socket[kParser] = null\n\n socket[kClient] = null\n socket[kError] = null\n socket\n .removeListener('error', onSocketError)\n .removeListener('readable', onSocketReadable)\n .removeListener('end', onSocketEnd)\n .removeListener('close', onSocketClose)\n\n client[kSocket] = null\n client[kQueue][client[kRunningIdx]++] = null\n client.emit('disconnect', client[kUrl], [client], new InformationalError('upgrade'))\n\n try {\n request.onUpgrade(statusCode, headers, socket)\n } catch (err) {\n util.destroy(socket, err)\n }\n\n resume(client)\n }\n\n onHeadersComplete (statusCode, upgrade, shouldKeepAlive) {\n const { client, socket, headers, statusText } = this\n\n /* istanbul ignore next: difficult to make a test case for */\n if (socket.destroyed) {\n return -1\n }\n\n const request = client[kQueue][client[kRunningIdx]]\n\n /* istanbul ignore next: difficult to make a test case for */\n if (!request) {\n return -1\n }\n\n assert(!this.upgrade)\n assert(this.statusCode < 200)\n\n if (statusCode === 100) {\n util.destroy(socket, new SocketError('bad response', util.getSocketInfo(socket)))\n return -1\n }\n\n /* this can only happen if server is misbehaving */\n if (upgrade && !request.upgrade) {\n util.destroy(socket, new SocketError('bad upgrade', util.getSocketInfo(socket)))\n return -1\n }\n\n assert.strictEqual(this.timeoutType, TIMEOUT_HEADERS)\n\n this.statusCode = statusCode\n this.shouldKeepAlive = (\n shouldKeepAlive ||\n // Override llhttp value which does not allow keepAlive for HEAD.\n (request.method === 'HEAD' && !socket[kReset] && this.connection.toLowerCase() === 'keep-alive')\n )\n\n if (this.statusCode >= 200) {\n const bodyTimeout = request.bodyTimeout != null\n ? request.bodyTimeout\n : client[kBodyTimeout]\n this.setTimeout(bodyTimeout, TIMEOUT_BODY)\n } else if (this.timeout) {\n // istanbul ignore else: only for jest\n if (this.timeout.refresh) {\n this.timeout.refresh()\n }\n }\n\n if (request.method === 'CONNECT') {\n assert(client[kRunning] === 1)\n this.upgrade = true\n return 2\n }\n\n if (upgrade) {\n assert(client[kRunning] === 1)\n this.upgrade = true\n return 2\n }\n\n assert(this.headers.length % 2 === 0)\n this.headers = []\n this.headersSize = 0\n\n if (this.shouldKeepAlive && client[kPipelining]) {\n const keepAliveTimeout = this.keepAlive ? util.parseKeepAliveTimeout(this.keepAlive) : null\n\n if (keepAliveTimeout != null) {\n const timeout = Math.min(\n keepAliveTimeout - client[kKeepAliveTimeoutThreshold],\n client[kKeepAliveMaxTimeout]\n )\n if (timeout <= 0) {\n socket[kReset] = true\n } else {\n client[kKeepAliveTimeoutValue] = timeout\n }\n } else {\n client[kKeepAliveTimeoutValue] = client[kKeepAliveDefaultTimeout]\n }\n } else {\n // Stop more requests from being dispatched.\n socket[kReset] = true\n }\n\n const pause = request.onHeaders(statusCode, headers, this.resume, statusText) === false\n\n if (request.aborted) {\n return -1\n }\n\n if (request.method === 'HEAD') {\n return 1\n }\n\n if (statusCode < 200) {\n return 1\n }\n\n if (socket[kBlocking]) {\n socket[kBlocking] = false\n resume(client)\n }\n\n return pause ? constants.ERROR.PAUSED : 0\n }\n\n onBody (buf) {\n const { client, socket, statusCode, maxResponseSize } = this\n\n if (socket.destroyed) {\n return -1\n }\n\n const request = client[kQueue][client[kRunningIdx]]\n assert(request)\n\n assert.strictEqual(this.timeoutType, TIMEOUT_BODY)\n if (this.timeout) {\n // istanbul ignore else: only for jest\n if (this.timeout.refresh) {\n this.timeout.refresh()\n }\n }\n\n assert(statusCode >= 200)\n\n if (maxResponseSize > -1 && this.bytesRead + buf.length > maxResponseSize) {\n util.destroy(socket, new ResponseExceededMaxSizeError())\n return -1\n }\n\n this.bytesRead += buf.length\n\n if (request.onData(buf) === false) {\n return constants.ERROR.PAUSED\n }\n }\n\n onMessageComplete () {\n const { client, socket, statusCode, upgrade, headers, contentLength, bytesRead, shouldKeepAlive } = this\n\n if (socket.destroyed && (!statusCode || shouldKeepAlive)) {\n return -1\n }\n\n if (upgrade) {\n return\n }\n\n const request = client[kQueue][client[kRunningIdx]]\n assert(request)\n\n assert(statusCode >= 100)\n\n this.statusCode = null\n this.statusText = ''\n this.bytesRead = 0\n this.contentLength = ''\n this.keepAlive = ''\n this.connection = ''\n\n assert(this.headers.length % 2 === 0)\n this.headers = []\n this.headersSize = 0\n\n if (statusCode < 200) {\n return\n }\n\n /* istanbul ignore next: should be handled by llhttp? */\n if (request.method !== 'HEAD' && contentLength && bytesRead !== parseInt(contentLength, 10)) {\n util.destroy(socket, new ResponseContentLengthMismatchError())\n return -1\n }\n\n request.onComplete(headers)\n\n client[kQueue][client[kRunningIdx]++] = null\n\n if (socket[kWriting]) {\n assert.strictEqual(client[kRunning], 0)\n // Response completed before request.\n util.destroy(socket, new InformationalError('reset'))\n return constants.ERROR.PAUSED\n } else if (!shouldKeepAlive) {\n util.destroy(socket, new InformationalError('reset'))\n return constants.ERROR.PAUSED\n } else if (socket[kReset] && client[kRunning] === 0) {\n // Destroy socket once all requests have completed.\n // The request at the tail of the pipeline is the one\n // that requested reset and no further requests should\n // have been queued since then.\n util.destroy(socket, new InformationalError('reset'))\n return constants.ERROR.PAUSED\n } else if (client[kPipelining] === 1) {\n // We must wait a full event loop cycle to reuse this socket to make sure\n // that non-spec compliant servers are not closing the connection even if they\n // said they won't.\n setImmediate(resume, client)\n } else {\n resume(client)\n }\n }\n}\n\nfunction onParserTimeout (parser) {\n const { socket, timeoutType, client } = parser\n\n /* istanbul ignore else */\n if (timeoutType === TIMEOUT_HEADERS) {\n if (!socket[kWriting] || socket.writableNeedDrain || client[kRunning] > 1) {\n assert(!parser.paused, 'cannot be paused while waiting for headers')\n util.destroy(socket, new HeadersTimeoutError())\n }\n } else if (timeoutType === TIMEOUT_BODY) {\n if (!parser.paused) {\n util.destroy(socket, new BodyTimeoutError())\n }\n } else if (timeoutType === TIMEOUT_IDLE) {\n assert(client[kRunning] === 0 && client[kKeepAliveTimeoutValue])\n util.destroy(socket, new InformationalError('socket idle timeout'))\n }\n}\n\nfunction onSocketReadable () {\n const { [kParser]: parser } = this\n if (parser) {\n parser.readMore()\n }\n}\n\nfunction onSocketError (err) {\n const { [kClient]: client, [kParser]: parser } = this\n\n assert(err.code !== 'ERR_TLS_CERT_ALTNAME_INVALID')\n\n if (client[kHTTPConnVersion] !== 'h2') {\n // On Mac OS, we get an ECONNRESET even if there is a full body to be forwarded\n // to the user.\n if (err.code === 'ECONNRESET' && parser.statusCode && !parser.shouldKeepAlive) {\n // We treat all incoming data so for as a valid response.\n parser.onMessageComplete()\n return\n }\n }\n\n this[kError] = err\n\n onError(this[kClient], err)\n}\n\nfunction onError (client, err) {\n if (\n client[kRunning] === 0 &&\n err.code !== 'UND_ERR_INFO' &&\n err.code !== 'UND_ERR_SOCKET'\n ) {\n // Error is not caused by running request and not a recoverable\n // socket error.\n\n assert(client[kPendingIdx] === client[kRunningIdx])\n\n const requests = client[kQueue].splice(client[kRunningIdx])\n for (let i = 0; i < requests.length; i++) {\n const request = requests[i]\n errorRequest(client, request, err)\n }\n assert(client[kSize] === 0)\n }\n}\n\nfunction onSocketEnd () {\n const { [kParser]: parser, [kClient]: client } = this\n\n if (client[kHTTPConnVersion] !== 'h2') {\n if (parser.statusCode && !parser.shouldKeepAlive) {\n // We treat all incoming data so far as a valid response.\n parser.onMessageComplete()\n return\n }\n }\n\n util.destroy(this, new SocketError('other side closed', util.getSocketInfo(this)))\n}\n\nfunction onSocketClose () {\n const { [kClient]: client, [kParser]: parser } = this\n\n if (client[kHTTPConnVersion] === 'h1' && parser) {\n if (!this[kError] && parser.statusCode && !parser.shouldKeepAlive) {\n // We treat all incoming data so far as a valid response.\n parser.onMessageComplete()\n }\n\n this[kParser].destroy()\n this[kParser] = null\n }\n\n const err = this[kError] || new SocketError('closed', util.getSocketInfo(this))\n\n client[kSocket] = null\n\n if (client.destroyed) {\n assert(client[kPending] === 0)\n\n // Fail entire queue.\n const requests = client[kQueue].splice(client[kRunningIdx])\n for (let i = 0; i < requests.length; i++) {\n const request = requests[i]\n errorRequest(client, request, err)\n }\n } else if (client[kRunning] > 0 && err.code !== 'UND_ERR_INFO') {\n // Fail head of pipeline.\n const request = client[kQueue][client[kRunningIdx]]\n client[kQueue][client[kRunningIdx]++] = null\n\n errorRequest(client, request, err)\n }\n\n client[kPendingIdx] = client[kRunningIdx]\n\n assert(client[kRunning] === 0)\n\n client.emit('disconnect', client[kUrl], [client], err)\n\n resume(client)\n}\n\nasync function connect (client) {\n assert(!client[kConnecting])\n assert(!client[kSocket])\n\n let { host, hostname, protocol, port } = client[kUrl]\n\n // Resolve ipv6\n if (hostname[0] === '[') {\n const idx = hostname.indexOf(']')\n\n assert(idx !== -1)\n const ip = hostname.substring(1, idx)\n\n assert(net.isIP(ip))\n hostname = ip\n }\n\n client[kConnecting] = true\n\n if (channels.beforeConnect.hasSubscribers) {\n channels.beforeConnect.publish({\n connectParams: {\n host,\n hostname,\n protocol,\n port,\n servername: client[kServerName],\n localAddress: client[kLocalAddress]\n },\n connector: client[kConnector]\n })\n }\n\n try {\n const socket = await new Promise((resolve, reject) => {\n client[kConnector]({\n host,\n hostname,\n protocol,\n port,\n servername: client[kServerName],\n localAddress: client[kLocalAddress]\n }, (err, socket) => {\n if (err) {\n reject(err)\n } else {\n resolve(socket)\n }\n })\n })\n\n if (client.destroyed) {\n util.destroy(socket.on('error', () => {}), new ClientDestroyedError())\n return\n }\n\n client[kConnecting] = false\n\n assert(socket)\n\n const isH2 = socket.alpnProtocol === 'h2'\n if (isH2) {\n if (!h2ExperimentalWarned) {\n h2ExperimentalWarned = true\n process.emitWarning('H2 support is experimental, expect them to change at any time.', {\n code: 'UNDICI-H2'\n })\n }\n\n const session = http2.connect(client[kUrl], {\n createConnection: () => socket,\n peerMaxConcurrentStreams: client[kHTTP2SessionState].maxConcurrentStreams\n })\n\n client[kHTTPConnVersion] = 'h2'\n session[kClient] = client\n session[kSocket] = socket\n session.on('error', onHttp2SessionError)\n session.on('frameError', onHttp2FrameError)\n session.on('end', onHttp2SessionEnd)\n session.on('goaway', onHTTP2GoAway)\n session.on('close', onSocketClose)\n session.unref()\n\n client[kHTTP2Session] = session\n socket[kHTTP2Session] = session\n } else {\n if (!llhttpInstance) {\n llhttpInstance = await llhttpPromise\n llhttpPromise = null\n }\n\n socket[kNoRef] = false\n socket[kWriting] = false\n socket[kReset] = false\n socket[kBlocking] = false\n socket[kParser] = new Parser(client, socket, llhttpInstance)\n }\n\n socket[kCounter] = 0\n socket[kMaxRequests] = client[kMaxRequests]\n socket[kClient] = client\n socket[kError] = null\n\n socket\n .on('error', onSocketError)\n .on('readable', onSocketReadable)\n .on('end', onSocketEnd)\n .on('close', onSocketClose)\n\n client[kSocket] = socket\n\n if (channels.connected.hasSubscribers) {\n channels.connected.publish({\n connectParams: {\n host,\n hostname,\n protocol,\n port,\n servername: client[kServerName],\n localAddress: client[kLocalAddress]\n },\n connector: client[kConnector],\n socket\n })\n }\n client.emit('connect', client[kUrl], [client])\n } catch (err) {\n if (client.destroyed) {\n return\n }\n\n client[kConnecting] = false\n\n if (channels.connectError.hasSubscribers) {\n channels.connectError.publish({\n connectParams: {\n host,\n hostname,\n protocol,\n port,\n servername: client[kServerName],\n localAddress: client[kLocalAddress]\n },\n connector: client[kConnector],\n error: err\n })\n }\n\n if (err.code === 'ERR_TLS_CERT_ALTNAME_INVALID') {\n assert(client[kRunning] === 0)\n while (client[kPending] > 0 && client[kQueue][client[kPendingIdx]].servername === client[kServerName]) {\n const request = client[kQueue][client[kPendingIdx]++]\n errorRequest(client, request, err)\n }\n } else {\n onError(client, err)\n }\n\n client.emit('connectionError', client[kUrl], [client], err)\n }\n\n resume(client)\n}\n\nfunction emitDrain (client) {\n client[kNeedDrain] = 0\n client.emit('drain', client[kUrl], [client])\n}\n\nfunction resume (client, sync) {\n if (client[kResuming] === 2) {\n return\n }\n\n client[kResuming] = 2\n\n _resume(client, sync)\n client[kResuming] = 0\n\n if (client[kRunningIdx] > 256) {\n client[kQueue].splice(0, client[kRunningIdx])\n client[kPendingIdx] -= client[kRunningIdx]\n client[kRunningIdx] = 0\n }\n}\n\nfunction _resume (client, sync) {\n while (true) {\n if (client.destroyed) {\n assert(client[kPending] === 0)\n return\n }\n\n if (client[kClosedResolve] && !client[kSize]) {\n client[kClosedResolve]()\n client[kClosedResolve] = null\n return\n }\n\n const socket = client[kSocket]\n\n if (socket && !socket.destroyed && socket.alpnProtocol !== 'h2') {\n if (client[kSize] === 0) {\n if (!socket[kNoRef] && socket.unref) {\n socket.unref()\n socket[kNoRef] = true\n }\n } else if (socket[kNoRef] && socket.ref) {\n socket.ref()\n socket[kNoRef] = false\n }\n\n if (client[kSize] === 0) {\n if (socket[kParser].timeoutType !== TIMEOUT_IDLE) {\n socket[kParser].setTimeout(client[kKeepAliveTimeoutValue], TIMEOUT_IDLE)\n }\n } else if (client[kRunning] > 0 && socket[kParser].statusCode < 200) {\n if (socket[kParser].timeoutType !== TIMEOUT_HEADERS) {\n const request = client[kQueue][client[kRunningIdx]]\n const headersTimeout = request.headersTimeout != null\n ? request.headersTimeout\n : client[kHeadersTimeout]\n socket[kParser].setTimeout(headersTimeout, TIMEOUT_HEADERS)\n }\n }\n }\n\n if (client[kBusy]) {\n client[kNeedDrain] = 2\n } else if (client[kNeedDrain] === 2) {\n if (sync) {\n client[kNeedDrain] = 1\n process.nextTick(emitDrain, client)\n } else {\n emitDrain(client)\n }\n continue\n }\n\n if (client[kPending] === 0) {\n return\n }\n\n if (client[kRunning] >= (client[kPipelining] || 1)) {\n return\n }\n\n const request = client[kQueue][client[kPendingIdx]]\n\n if (client[kUrl].protocol === 'https:' && client[kServerName] !== request.servername) {\n if (client[kRunning] > 0) {\n return\n }\n\n client[kServerName] = request.servername\n\n if (socket && socket.servername !== request.servername) {\n util.destroy(socket, new InformationalError('servername changed'))\n return\n }\n }\n\n if (client[kConnecting]) {\n return\n }\n\n if (!socket && !client[kHTTP2Session]) {\n connect(client)\n return\n }\n\n if (socket.destroyed || socket[kWriting] || socket[kReset] || socket[kBlocking]) {\n return\n }\n\n if (client[kRunning] > 0 && !request.idempotent) {\n // Non-idempotent request cannot be retried.\n // Ensure that no other requests are inflight and\n // could cause failure.\n return\n }\n\n if (client[kRunning] > 0 && (request.upgrade || request.method === 'CONNECT')) {\n // Don't dispatch an upgrade until all preceding requests have completed.\n // A misbehaving server might upgrade the connection before all pipelined\n // request has completed.\n return\n }\n\n if (client[kRunning] > 0 && util.bodyLength(request.body) !== 0 &&\n (util.isStream(request.body) || util.isAsyncIterable(request.body))) {\n // Request with stream or iterator body can error while other requests\n // are inflight and indirectly error those as well.\n // Ensure this doesn't happen by waiting for inflight\n // to complete before dispatching.\n\n // Request with stream or iterator body cannot be retried.\n // Ensure that no other requests are inflight and\n // could cause failure.\n return\n }\n\n if (!request.aborted && write(client, request)) {\n client[kPendingIdx]++\n } else {\n client[kQueue].splice(client[kPendingIdx], 1)\n }\n }\n}\n\n// https://www.rfc-editor.org/rfc/rfc7230#section-3.3.2\nfunction shouldSendContentLength (method) {\n return method !== 'GET' && method !== 'HEAD' && method !== 'OPTIONS' && method !== 'TRACE' && method !== 'CONNECT'\n}\n\nfunction write (client, request) {\n if (client[kHTTPConnVersion] === 'h2') {\n writeH2(client, client[kHTTP2Session], request)\n return\n }\n\n const { body, method, path, host, upgrade, headers, blocking, reset } = request\n\n // https://tools.ietf.org/html/rfc7231#section-4.3.1\n // https://tools.ietf.org/html/rfc7231#section-4.3.2\n // https://tools.ietf.org/html/rfc7231#section-4.3.5\n\n // Sending a payload body on a request that does not\n // expect it can cause undefined behavior on some\n // servers and corrupt connection state. Do not\n // re-use the connection for further requests.\n\n const expectsPayload = (\n method === 'PUT' ||\n method === 'POST' ||\n method === 'PATCH'\n )\n\n if (body && typeof body.read === 'function') {\n // Try to read EOF in order to get length.\n body.read(0)\n }\n\n const bodyLength = util.bodyLength(body)\n\n let contentLength = bodyLength\n\n if (contentLength === null) {\n contentLength = request.contentLength\n }\n\n if (contentLength === 0 && !expectsPayload) {\n // https://tools.ietf.org/html/rfc7230#section-3.3.2\n // A user agent SHOULD NOT send a Content-Length header field when\n // the request message does not contain a payload body and the method\n // semantics do not anticipate such a body.\n\n contentLength = null\n }\n\n // https://github.com/nodejs/undici/issues/2046\n // A user agent may send a Content-Length header with 0 value, this should be allowed.\n if (shouldSendContentLength(method) && contentLength > 0 && request.contentLength !== null && request.contentLength !== contentLength) {\n if (client[kStrictContentLength]) {\n errorRequest(client, request, new RequestContentLengthMismatchError())\n return false\n }\n\n process.emitWarning(new RequestContentLengthMismatchError())\n }\n\n const socket = client[kSocket]\n\n try {\n request.onConnect((err) => {\n if (request.aborted || request.completed) {\n return\n }\n\n errorRequest(client, request, err || new RequestAbortedError())\n\n util.destroy(socket, new InformationalError('aborted'))\n })\n } catch (err) {\n errorRequest(client, request, err)\n }\n\n if (request.aborted) {\n return false\n }\n\n if (method === 'HEAD') {\n // https://github.com/mcollina/undici/issues/258\n // Close after a HEAD request to interop with misbehaving servers\n // that may send a body in the response.\n\n socket[kReset] = true\n }\n\n if (upgrade || method === 'CONNECT') {\n // On CONNECT or upgrade, block pipeline from dispatching further\n // requests on this connection.\n\n socket[kReset] = true\n }\n\n if (reset != null) {\n socket[kReset] = reset\n }\n\n if (client[kMaxRequests] && socket[kCounter]++ >= client[kMaxRequests]) {\n socket[kReset] = true\n }\n\n if (blocking) {\n socket[kBlocking] = true\n }\n\n let header = `${method} ${path} HTTP/1.1\\r\\n`\n\n if (typeof host === 'string') {\n header += `host: ${host}\\r\\n`\n } else {\n header += client[kHostHeader]\n }\n\n if (upgrade) {\n header += `connection: upgrade\\r\\nupgrade: ${upgrade}\\r\\n`\n } else if (client[kPipelining] && !socket[kReset]) {\n header += 'connection: keep-alive\\r\\n'\n } else {\n header += 'connection: close\\r\\n'\n }\n\n if (headers) {\n header += headers\n }\n\n if (channels.sendHeaders.hasSubscribers) {\n channels.sendHeaders.publish({ request, headers: header, socket })\n }\n\n /* istanbul ignore else: assertion */\n if (!body || bodyLength === 0) {\n if (contentLength === 0) {\n socket.write(`${header}content-length: 0\\r\\n\\r\\n`, 'latin1')\n } else {\n assert(contentLength === null, 'no body must not have content length')\n socket.write(`${header}\\r\\n`, 'latin1')\n }\n request.onRequestSent()\n } else if (util.isBuffer(body)) {\n assert(contentLength === body.byteLength, 'buffer body must have content length')\n\n socket.cork()\n socket.write(`${header}content-length: ${contentLength}\\r\\n\\r\\n`, 'latin1')\n socket.write(body)\n socket.uncork()\n request.onBodySent(body)\n request.onRequestSent()\n if (!expectsPayload) {\n socket[kReset] = true\n }\n } else if (util.isBlobLike(body)) {\n if (typeof body.stream === 'function') {\n writeIterable({ body: body.stream(), client, request, socket, contentLength, header, expectsPayload })\n } else {\n writeBlob({ body, client, request, socket, contentLength, header, expectsPayload })\n }\n } else if (util.isStream(body)) {\n writeStream({ body, client, request, socket, contentLength, header, expectsPayload })\n } else if (util.isIterable(body)) {\n writeIterable({ body, client, request, socket, contentLength, header, expectsPayload })\n } else {\n assert(false)\n }\n\n return true\n}\n\nfunction writeH2 (client, session, request) {\n const { body, method, path, host, upgrade, expectContinue, signal, headers: reqHeaders } = request\n\n let headers\n if (typeof reqHeaders === 'string') headers = Request[kHTTP2CopyHeaders](reqHeaders.trim())\n else headers = reqHeaders\n\n if (upgrade) {\n errorRequest(client, request, new Error('Upgrade not supported for H2'))\n return false\n }\n\n try {\n // TODO(HTTP/2): Should we call onConnect immediately or on stream ready event?\n request.onConnect((err) => {\n if (request.aborted || request.completed) {\n return\n }\n\n errorRequest(client, request, err || new RequestAbortedError())\n })\n } catch (err) {\n errorRequest(client, request, err)\n }\n\n if (request.aborted) {\n return false\n }\n\n /** @type {import('node:http2').ClientHttp2Stream} */\n let stream\n const h2State = client[kHTTP2SessionState]\n\n headers[HTTP2_HEADER_AUTHORITY] = host || client[kHost]\n headers[HTTP2_HEADER_METHOD] = method\n\n if (method === 'CONNECT') {\n session.ref()\n // we are already connected, streams are pending, first request\n // will create a new stream. We trigger a request to create the stream and wait until\n // `ready` event is triggered\n // We disabled endStream to allow the user to write to the stream\n stream = session.request(headers, { endStream: false, signal })\n\n if (stream.id && !stream.pending) {\n request.onUpgrade(null, null, stream)\n ++h2State.openStreams\n } else {\n stream.once('ready', () => {\n request.onUpgrade(null, null, stream)\n ++h2State.openStreams\n })\n }\n\n stream.once('close', () => {\n h2State.openStreams -= 1\n // TODO(HTTP/2): unref only if current streams count is 0\n if (h2State.openStreams === 0) session.unref()\n })\n\n return true\n }\n\n // https://tools.ietf.org/html/rfc7540#section-8.3\n // :path and :scheme headers must be omited when sending CONNECT\n\n headers[HTTP2_HEADER_PATH] = path\n headers[HTTP2_HEADER_SCHEME] = 'https'\n\n // https://tools.ietf.org/html/rfc7231#section-4.3.1\n // https://tools.ietf.org/html/rfc7231#section-4.3.2\n // https://tools.ietf.org/html/rfc7231#section-4.3.5\n\n // Sending a payload body on a request that does not\n // expect it can cause undefined behavior on some\n // servers and corrupt connection state. Do not\n // re-use the connection for further requests.\n\n const expectsPayload = (\n method === 'PUT' ||\n method === 'POST' ||\n method === 'PATCH'\n )\n\n if (body && typeof body.read === 'function') {\n // Try to read EOF in order to get length.\n body.read(0)\n }\n\n let contentLength = util.bodyLength(body)\n\n if (contentLength == null) {\n contentLength = request.contentLength\n }\n\n if (contentLength === 0 || !expectsPayload) {\n // https://tools.ietf.org/html/rfc7230#section-3.3.2\n // A user agent SHOULD NOT send a Content-Length header field when\n // the request message does not contain a payload body and the method\n // semantics do not anticipate such a body.\n\n contentLength = null\n }\n\n // https://github.com/nodejs/undici/issues/2046\n // A user agent may send a Content-Length header with 0 value, this should be allowed.\n if (shouldSendContentLength(method) && contentLength > 0 && request.contentLength != null && request.contentLength !== contentLength) {\n if (client[kStrictContentLength]) {\n errorRequest(client, request, new RequestContentLengthMismatchError())\n return false\n }\n\n process.emitWarning(new RequestContentLengthMismatchError())\n }\n\n if (contentLength != null) {\n assert(body, 'no body must not have content length')\n headers[HTTP2_HEADER_CONTENT_LENGTH] = `${contentLength}`\n }\n\n session.ref()\n\n const shouldEndStream = method === 'GET' || method === 'HEAD'\n if (expectContinue) {\n headers[HTTP2_HEADER_EXPECT] = '100-continue'\n stream = session.request(headers, { endStream: shouldEndStream, signal })\n\n stream.once('continue', writeBodyH2)\n } else {\n stream = session.request(headers, {\n endStream: shouldEndStream,\n signal\n })\n writeBodyH2()\n }\n\n // Increment counter as we have new several streams open\n ++h2State.openStreams\n\n stream.once('response', headers => {\n const { [HTTP2_HEADER_STATUS]: statusCode, ...realHeaders } = headers\n\n if (request.onHeaders(Number(statusCode), realHeaders, stream.resume.bind(stream), '') === false) {\n stream.pause()\n }\n })\n\n stream.once('end', () => {\n request.onComplete([])\n })\n\n stream.on('data', (chunk) => {\n if (request.onData(chunk) === false) {\n stream.pause()\n }\n })\n\n stream.once('close', () => {\n h2State.openStreams -= 1\n // TODO(HTTP/2): unref only if current streams count is 0\n if (h2State.openStreams === 0) {\n session.unref()\n }\n })\n\n stream.once('error', function (err) {\n if (client[kHTTP2Session] && !client[kHTTP2Session].destroyed && !this.closed && !this.destroyed) {\n h2State.streams -= 1\n util.destroy(stream, err)\n }\n })\n\n stream.once('frameError', (type, code) => {\n const err = new InformationalError(`HTTP/2: \"frameError\" received - type ${type}, code ${code}`)\n errorRequest(client, request, err)\n\n if (client[kHTTP2Session] && !client[kHTTP2Session].destroyed && !this.closed && !this.destroyed) {\n h2State.streams -= 1\n util.destroy(stream, err)\n }\n })\n\n // stream.on('aborted', () => {\n // // TODO(HTTP/2): Support aborted\n // })\n\n // stream.on('timeout', () => {\n // // TODO(HTTP/2): Support timeout\n // })\n\n // stream.on('push', headers => {\n // // TODO(HTTP/2): Suppor push\n // })\n\n // stream.on('trailers', headers => {\n // // TODO(HTTP/2): Support trailers\n // })\n\n return true\n\n function writeBodyH2 () {\n /* istanbul ignore else: assertion */\n if (!body) {\n request.onRequestSent()\n } else if (util.isBuffer(body)) {\n assert(contentLength === body.byteLength, 'buffer body must have content length')\n stream.cork()\n stream.write(body)\n stream.uncork()\n stream.end()\n request.onBodySent(body)\n request.onRequestSent()\n } else if (util.isBlobLike(body)) {\n if (typeof body.stream === 'function') {\n writeIterable({\n client,\n request,\n contentLength,\n h2stream: stream,\n expectsPayload,\n body: body.stream(),\n socket: client[kSocket],\n header: ''\n })\n } else {\n writeBlob({\n body,\n client,\n request,\n contentLength,\n expectsPayload,\n h2stream: stream,\n header: '',\n socket: client[kSocket]\n })\n }\n } else if (util.isStream(body)) {\n writeStream({\n body,\n client,\n request,\n contentLength,\n expectsPayload,\n socket: client[kSocket],\n h2stream: stream,\n header: ''\n })\n } else if (util.isIterable(body)) {\n writeIterable({\n body,\n client,\n request,\n contentLength,\n expectsPayload,\n header: '',\n h2stream: stream,\n socket: client[kSocket]\n })\n } else {\n assert(false)\n }\n }\n}\n\nfunction writeStream ({ h2stream, body, client, request, socket, contentLength, header, expectsPayload }) {\n assert(contentLength !== 0 || client[kRunning] === 0, 'stream body cannot be pipelined')\n\n if (client[kHTTPConnVersion] === 'h2') {\n // For HTTP/2, is enough to pipe the stream\n const pipe = pipeline(\n body,\n h2stream,\n (err) => {\n if (err) {\n util.destroy(body, err)\n util.destroy(h2stream, err)\n } else {\n request.onRequestSent()\n }\n }\n )\n\n pipe.on('data', onPipeData)\n pipe.once('end', () => {\n pipe.removeListener('data', onPipeData)\n util.destroy(pipe)\n })\n\n function onPipeData (chunk) {\n request.onBodySent(chunk)\n }\n\n return\n }\n\n let finished = false\n\n const writer = new AsyncWriter({ socket, request, contentLength, client, expectsPayload, header })\n\n const onData = function (chunk) {\n if (finished) {\n return\n }\n\n try {\n if (!writer.write(chunk) && this.pause) {\n this.pause()\n }\n } catch (err) {\n util.destroy(this, err)\n }\n }\n const onDrain = function () {\n if (finished) {\n return\n }\n\n if (body.resume) {\n body.resume()\n }\n }\n const onAbort = function () {\n if (finished) {\n return\n }\n const err = new RequestAbortedError()\n queueMicrotask(() => onFinished(err))\n }\n const onFinished = function (err) {\n if (finished) {\n return\n }\n\n finished = true\n\n assert(socket.destroyed || (socket[kWriting] && client[kRunning] <= 1))\n\n socket\n .off('drain', onDrain)\n .off('error', onFinished)\n\n body\n .removeListener('data', onData)\n .removeListener('end', onFinished)\n .removeListener('error', onFinished)\n .removeListener('close', onAbort)\n\n if (!err) {\n try {\n writer.end()\n } catch (er) {\n err = er\n }\n }\n\n writer.destroy(err)\n\n if (err && (err.code !== 'UND_ERR_INFO' || err.message !== 'reset')) {\n util.destroy(body, err)\n } else {\n util.destroy(body)\n }\n }\n\n body\n .on('data', onData)\n .on('end', onFinished)\n .on('error', onFinished)\n .on('close', onAbort)\n\n if (body.resume) {\n body.resume()\n }\n\n socket\n .on('drain', onDrain)\n .on('error', onFinished)\n}\n\nasync function writeBlob ({ h2stream, body, client, request, socket, contentLength, header, expectsPayload }) {\n assert(contentLength === body.size, 'blob body must have content length')\n\n const isH2 = client[kHTTPConnVersion] === 'h2'\n try {\n if (contentLength != null && contentLength !== body.size) {\n throw new RequestContentLengthMismatchError()\n }\n\n const buffer = Buffer.from(await body.arrayBuffer())\n\n if (isH2) {\n h2stream.cork()\n h2stream.write(buffer)\n h2stream.uncork()\n } else {\n socket.cork()\n socket.write(`${header}content-length: ${contentLength}\\r\\n\\r\\n`, 'latin1')\n socket.write(buffer)\n socket.uncork()\n }\n\n request.onBodySent(buffer)\n request.onRequestSent()\n\n if (!expectsPayload) {\n socket[kReset] = true\n }\n\n resume(client)\n } catch (err) {\n util.destroy(isH2 ? h2stream : socket, err)\n }\n}\n\nasync function writeIterable ({ h2stream, body, client, request, socket, contentLength, header, expectsPayload }) {\n assert(contentLength !== 0 || client[kRunning] === 0, 'iterator body cannot be pipelined')\n\n let callback = null\n function onDrain () {\n if (callback) {\n const cb = callback\n callback = null\n cb()\n }\n }\n\n const waitForDrain = () => new Promise((resolve, reject) => {\n assert(callback === null)\n\n if (socket[kError]) {\n reject(socket[kError])\n } else {\n callback = resolve\n }\n })\n\n if (client[kHTTPConnVersion] === 'h2') {\n h2stream\n .on('close', onDrain)\n .on('drain', onDrain)\n\n try {\n // It's up to the user to somehow abort the async iterable.\n for await (const chunk of body) {\n if (socket[kError]) {\n throw socket[kError]\n }\n\n const res = h2stream.write(chunk)\n request.onBodySent(chunk)\n if (!res) {\n await waitForDrain()\n }\n }\n } catch (err) {\n h2stream.destroy(err)\n } finally {\n request.onRequestSent()\n h2stream.end()\n h2stream\n .off('close', onDrain)\n .off('drain', onDrain)\n }\n\n return\n }\n\n socket\n .on('close', onDrain)\n .on('drain', onDrain)\n\n const writer = new AsyncWriter({ socket, request, contentLength, client, expectsPayload, header })\n try {\n // It's up to the user to somehow abort the async iterable.\n for await (const chunk of body) {\n if (socket[kError]) {\n throw socket[kError]\n }\n\n if (!writer.write(chunk)) {\n await waitForDrain()\n }\n }\n\n writer.end()\n } catch (err) {\n writer.destroy(err)\n } finally {\n socket\n .off('close', onDrain)\n .off('drain', onDrain)\n }\n}\n\nclass AsyncWriter {\n constructor ({ socket, request, contentLength, client, expectsPayload, header }) {\n this.socket = socket\n this.request = request\n this.contentLength = contentLength\n this.client = client\n this.bytesWritten = 0\n this.expectsPayload = expectsPayload\n this.header = header\n\n socket[kWriting] = true\n }\n\n write (chunk) {\n const { socket, request, contentLength, client, bytesWritten, expectsPayload, header } = this\n\n if (socket[kError]) {\n throw socket[kError]\n }\n\n if (socket.destroyed) {\n return false\n }\n\n const len = Buffer.byteLength(chunk)\n if (!len) {\n return true\n }\n\n // We should defer writing chunks.\n if (contentLength !== null && bytesWritten + len > contentLength) {\n if (client[kStrictContentLength]) {\n throw new RequestContentLengthMismatchError()\n }\n\n process.emitWarning(new RequestContentLengthMismatchError())\n }\n\n socket.cork()\n\n if (bytesWritten === 0) {\n if (!expectsPayload) {\n socket[kReset] = true\n }\n\n if (contentLength === null) {\n socket.write(`${header}transfer-encoding: chunked\\r\\n`, 'latin1')\n } else {\n socket.write(`${header}content-length: ${contentLength}\\r\\n\\r\\n`, 'latin1')\n }\n }\n\n if (contentLength === null) {\n socket.write(`\\r\\n${len.toString(16)}\\r\\n`, 'latin1')\n }\n\n this.bytesWritten += len\n\n const ret = socket.write(chunk)\n\n socket.uncork()\n\n request.onBodySent(chunk)\n\n if (!ret) {\n if (socket[kParser].timeout && socket[kParser].timeoutType === TIMEOUT_HEADERS) {\n // istanbul ignore else: only for jest\n if (socket[kParser].timeout.refresh) {\n socket[kParser].timeout.refresh()\n }\n }\n }\n\n return ret\n }\n\n end () {\n const { socket, contentLength, client, bytesWritten, expectsPayload, header, request } = this\n request.onRequestSent()\n\n socket[kWriting] = false\n\n if (socket[kError]) {\n throw socket[kError]\n }\n\n if (socket.destroyed) {\n return\n }\n\n if (bytesWritten === 0) {\n if (expectsPayload) {\n // https://tools.ietf.org/html/rfc7230#section-3.3.2\n // A user agent SHOULD send a Content-Length in a request message when\n // no Transfer-Encoding is sent and the request method defines a meaning\n // for an enclosed payload body.\n\n socket.write(`${header}content-length: 0\\r\\n\\r\\n`, 'latin1')\n } else {\n socket.write(`${header}\\r\\n`, 'latin1')\n }\n } else if (contentLength === null) {\n socket.write('\\r\\n0\\r\\n\\r\\n', 'latin1')\n }\n\n if (contentLength !== null && bytesWritten !== contentLength) {\n if (client[kStrictContentLength]) {\n throw new RequestContentLengthMismatchError()\n } else {\n process.emitWarning(new RequestContentLengthMismatchError())\n }\n }\n\n if (socket[kParser].timeout && socket[kParser].timeoutType === TIMEOUT_HEADERS) {\n // istanbul ignore else: only for jest\n if (socket[kParser].timeout.refresh) {\n socket[kParser].timeout.refresh()\n }\n }\n\n resume(client)\n }\n\n destroy (err) {\n const { socket, client } = this\n\n socket[kWriting] = false\n\n if (err) {\n assert(client[kRunning] <= 1, 'pipeline should only contain this request')\n util.destroy(socket, err)\n }\n }\n}\n\nfunction errorRequest (client, request, err) {\n try {\n request.onError(err)\n assert(request.aborted)\n } catch (err) {\n client.emit('error', err)\n }\n}\n\nmodule.exports = Client\n","/* eslint-disable */\n\n'use strict'\n\n// Extracted from node/lib/internal/fixed_queue.js\n\n// Currently optimal queue size, tested on V8 6.0 - 6.6. Must be power of two.\nconst kSize = 2048;\nconst kMask = kSize - 1;\n\n// The FixedQueue is implemented as a singly-linked list of fixed-size\n// circular buffers. It looks something like this:\n//\n// head tail\n// | |\n// v v\n// +-----------+ <-----\\ +-----------+ <------\\ +-----------+\n// | [null] | \\----- | next | \\------- | next |\n// +-----------+ +-----------+ +-----------+\n// | item | <-- bottom | item | <-- bottom | [empty] |\n// | item | | item | | [empty] |\n// | item | | item | | [empty] |\n// | item | | item | | [empty] |\n// | item | | item | bottom --> | item |\n// | item | | item | | item |\n// | ... | | ... | | ... |\n// | item | | item | | item |\n// | item | | item | | item |\n// | [empty] | <-- top | item | | item |\n// | [empty] | | item | | item |\n// | [empty] | | [empty] | <-- top top --> | [empty] |\n// +-----------+ +-----------+ +-----------+\n//\n// Or, if there is only one circular buffer, it looks something\n// like either of these:\n//\n// head tail head tail\n// | | | |\n// v v v v\n// +-----------+ +-----------+\n// | [null] | | [null] |\n// +-----------+ +-----------+\n// | [empty] | | item |\n// | [empty] | | item |\n// | item | <-- bottom top --> | [empty] |\n// | item | | [empty] |\n// | [empty] | <-- top bottom --> | item |\n// | [empty] | | item |\n// +-----------+ +-----------+\n//\n// Adding a value means moving `top` forward by one, removing means\n// moving `bottom` forward by one. After reaching the end, the queue\n// wraps around.\n//\n// When `top === bottom` the current queue is empty and when\n// `top + 1 === bottom` it's full. This wastes a single space of storage\n// but allows much quicker checks.\n\nclass FixedCircularBuffer {\n constructor() {\n this.bottom = 0;\n this.top = 0;\n this.list = new Array(kSize);\n this.next = null;\n }\n\n isEmpty() {\n return this.top === this.bottom;\n }\n\n isFull() {\n return ((this.top + 1) & kMask) === this.bottom;\n }\n\n push(data) {\n this.list[this.top] = data;\n this.top = (this.top + 1) & kMask;\n }\n\n shift() {\n const nextItem = this.list[this.bottom];\n if (nextItem === undefined)\n return null;\n this.list[this.bottom] = undefined;\n this.bottom = (this.bottom + 1) & kMask;\n return nextItem;\n }\n}\n\nmodule.exports = class FixedQueue {\n constructor() {\n this.head = this.tail = new FixedCircularBuffer();\n }\n\n isEmpty() {\n return this.head.isEmpty();\n }\n\n push(data) {\n if (this.head.isFull()) {\n // Head is full: Creates a new queue, sets the old queue's `.next` to it,\n // and sets it as the new main queue.\n this.head = this.head.next = new FixedCircularBuffer();\n }\n this.head.push(data);\n }\n\n shift() {\n const tail = this.tail;\n const next = tail.shift();\n if (tail.isEmpty() && tail.next !== null) {\n // If there is another queue, it forms the new tail.\n this.tail = tail.next;\n }\n return next;\n }\n};\n","const { kFree, kConnected, kPending, kQueued, kRunning, kSize } = require('./core/symbols')\nconst kPool = Symbol('pool')\n\nclass PoolStats {\n constructor (pool) {\n this[kPool] = pool\n }\n\n get connected () {\n return this[kPool][kConnected]\n }\n\n get free () {\n return this[kPool][kFree]\n }\n\n get pending () {\n return this[kPool][kPending]\n }\n\n get queued () {\n return this[kPool][kQueued]\n }\n\n get running () {\n return this[kPool][kRunning]\n }\n\n get size () {\n return this[kPool][kSize]\n }\n}\n\nmodule.exports = PoolStats\n","'use strict'\n\nconst DispatcherBase = require('./dispatcher-base')\nconst FixedQueue = require('./node/fixed-queue')\nconst { kConnected, kSize, kRunning, kPending, kQueued, kBusy, kFree, kUrl, kClose, kDestroy, kDispatch } = require('./core/symbols')\nconst PoolStats = require('./pool-stats')\n\nconst kClients = Symbol('clients')\nconst kNeedDrain = Symbol('needDrain')\nconst kQueue = Symbol('queue')\nconst kClosedResolve = Symbol('closed resolve')\nconst kOnDrain = Symbol('onDrain')\nconst kOnConnect = Symbol('onConnect')\nconst kOnDisconnect = Symbol('onDisconnect')\nconst kOnConnectionError = Symbol('onConnectionError')\nconst kGetDispatcher = Symbol('get dispatcher')\nconst kAddClient = Symbol('add client')\nconst kRemoveClient = Symbol('remove client')\nconst kStats = Symbol('stats')\n\nclass PoolBase extends DispatcherBase {\n constructor () {\n super()\n\n this[kQueue] = new FixedQueue()\n this[kClients] = []\n this[kQueued] = 0\n\n const pool = this\n\n this[kOnDrain] = function onDrain (origin, targets) {\n const queue = pool[kQueue]\n\n let needDrain = false\n\n while (!needDrain) {\n const item = queue.shift()\n if (!item) {\n break\n }\n pool[kQueued]--\n needDrain = !this.dispatch(item.opts, item.handler)\n }\n\n this[kNeedDrain] = needDrain\n\n if (!this[kNeedDrain] && pool[kNeedDrain]) {\n pool[kNeedDrain] = false\n pool.emit('drain', origin, [pool, ...targets])\n }\n\n if (pool[kClosedResolve] && queue.isEmpty()) {\n Promise\n .all(pool[kClients].map(c => c.close()))\n .then(pool[kClosedResolve])\n }\n }\n\n this[kOnConnect] = (origin, targets) => {\n pool.emit('connect', origin, [pool, ...targets])\n }\n\n this[kOnDisconnect] = (origin, targets, err) => {\n pool.emit('disconnect', origin, [pool, ...targets], err)\n }\n\n this[kOnConnectionError] = (origin, targets, err) => {\n pool.emit('connectionError', origin, [pool, ...targets], err)\n }\n\n this[kStats] = new PoolStats(this)\n }\n\n get [kBusy] () {\n return this[kNeedDrain]\n }\n\n get [kConnected] () {\n return this[kClients].filter(client => client[kConnected]).length\n }\n\n get [kFree] () {\n return this[kClients].filter(client => client[kConnected] && !client[kNeedDrain]).length\n }\n\n get [kPending] () {\n let ret = this[kQueued]\n for (const { [kPending]: pending } of this[kClients]) {\n ret += pending\n }\n return ret\n }\n\n get [kRunning] () {\n let ret = 0\n for (const { [kRunning]: running } of this[kClients]) {\n ret += running\n }\n return ret\n }\n\n get [kSize] () {\n let ret = this[kQueued]\n for (const { [kSize]: size } of this[kClients]) {\n ret += size\n }\n return ret\n }\n\n get stats () {\n return this[kStats]\n }\n\n async [kClose] () {\n if (this[kQueue].isEmpty()) {\n return Promise.all(this[kClients].map(c => c.close()))\n } else {\n return new Promise((resolve) => {\n this[kClosedResolve] = resolve\n })\n }\n }\n\n async [kDestroy] (err) {\n while (true) {\n const item = this[kQueue].shift()\n if (!item) {\n break\n }\n item.handler.onError(err)\n }\n\n return Promise.all(this[kClients].map(c => c.destroy(err)))\n }\n\n [kDispatch] (opts, handler) {\n const dispatcher = this[kGetDispatcher]()\n\n if (!dispatcher) {\n this[kNeedDrain] = true\n this[kQueue].push({ opts, handler })\n this[kQueued]++\n } else if (!dispatcher.dispatch(opts, handler)) {\n dispatcher[kNeedDrain] = true\n this[kNeedDrain] = !this[kGetDispatcher]()\n }\n\n return !this[kNeedDrain]\n }\n\n [kAddClient] (client) {\n client\n .on('drain', this[kOnDrain])\n .on('connect', this[kOnConnect])\n .on('disconnect', this[kOnDisconnect])\n .on('connectionError', this[kOnConnectionError])\n\n this[kClients].push(client)\n\n if (this[kNeedDrain]) {\n process.nextTick(() => {\n if (this[kNeedDrain]) {\n this[kOnDrain](client[kUrl], [this, client])\n }\n })\n }\n\n return this\n }\n\n [kRemoveClient] (client) {\n client.close(() => {\n const idx = this[kClients].indexOf(client)\n if (idx !== -1) {\n this[kClients].splice(idx, 1)\n }\n })\n\n this[kNeedDrain] = this[kClients].some(dispatcher => (\n !dispatcher[kNeedDrain] &&\n dispatcher.closed !== true &&\n dispatcher.destroyed !== true\n ))\n }\n}\n\nmodule.exports = {\n PoolBase,\n kClients,\n kNeedDrain,\n kAddClient,\n kRemoveClient,\n kGetDispatcher\n}\n","'use strict'\n\nconst {\n PoolBase,\n kClients,\n kNeedDrain,\n kAddClient,\n kGetDispatcher\n} = require('./pool-base')\nconst Client = require('./client')\nconst {\n InvalidArgumentError\n} = require('./core/errors')\nconst util = require('./core/util')\nconst { kUrl, kInterceptors } = require('./core/symbols')\nconst buildConnector = require('./core/connect')\n\nconst kOptions = Symbol('options')\nconst kConnections = Symbol('connections')\nconst kFactory = Symbol('factory')\n\nfunction defaultFactory (origin, opts) {\n return new Client(origin, opts)\n}\n\nclass Pool extends PoolBase {\n constructor (origin, {\n connections,\n factory = defaultFactory,\n connect,\n connectTimeout,\n tls,\n maxCachedSessions,\n socketPath,\n autoSelectFamily,\n autoSelectFamilyAttemptTimeout,\n allowH2,\n ...options\n } = {}) {\n super()\n\n if (connections != null && (!Number.isFinite(connections) || connections < 0)) {\n throw new InvalidArgumentError('invalid connections')\n }\n\n if (typeof factory !== 'function') {\n throw new InvalidArgumentError('factory must be a function.')\n }\n\n if (connect != null && typeof connect !== 'function' && typeof connect !== 'object') {\n throw new InvalidArgumentError('connect must be a function or an object')\n }\n\n if (typeof connect !== 'function') {\n connect = buildConnector({\n ...tls,\n maxCachedSessions,\n allowH2,\n socketPath,\n timeout: connectTimeout,\n ...(util.nodeHasAutoSelectFamily && autoSelectFamily ? { autoSelectFamily, autoSelectFamilyAttemptTimeout } : undefined),\n ...connect\n })\n }\n\n this[kInterceptors] = options.interceptors && options.interceptors.Pool && Array.isArray(options.interceptors.Pool)\n ? options.interceptors.Pool\n : []\n this[kConnections] = connections || null\n this[kUrl] = util.parseOrigin(origin)\n this[kOptions] = { ...util.deepClone(options), connect, allowH2 }\n this[kOptions].interceptors = options.interceptors\n ? { ...options.interceptors }\n : undefined\n this[kFactory] = factory\n\n this.on('connectionError', (origin, targets, error) => {\n // If a connection error occurs, we remove the client from the pool,\n // and emit a connectionError event. They will not be re-used.\n // Fixes https://github.com/nodejs/undici/issues/3895\n for (const target of targets) {\n // Do not use kRemoveClient here, as it will close the client,\n // but the client cannot be closed in this state.\n const idx = this[kClients].indexOf(target)\n if (idx !== -1) {\n this[kClients].splice(idx, 1)\n }\n }\n })\n }\n\n [kGetDispatcher] () {\n let dispatcher = this[kClients].find(dispatcher => !dispatcher[kNeedDrain])\n\n if (dispatcher) {\n return dispatcher\n }\n\n if (!this[kConnections] || this[kClients].length < this[kConnections]) {\n dispatcher = this[kFactory](this[kUrl], this[kOptions])\n this[kAddClient](dispatcher)\n }\n\n return dispatcher\n }\n}\n\nmodule.exports = Pool\n","'use strict'\n\nconst {\n BalancedPoolMissingUpstreamError,\n InvalidArgumentError\n} = require('./core/errors')\nconst {\n PoolBase,\n kClients,\n kNeedDrain,\n kAddClient,\n kRemoveClient,\n kGetDispatcher\n} = require('./pool-base')\nconst Pool = require('./pool')\nconst { kUrl, kInterceptors } = require('./core/symbols')\nconst { parseOrigin } = require('./core/util')\nconst kFactory = Symbol('factory')\n\nconst kOptions = Symbol('options')\nconst kGreatestCommonDivisor = Symbol('kGreatestCommonDivisor')\nconst kCurrentWeight = Symbol('kCurrentWeight')\nconst kIndex = Symbol('kIndex')\nconst kWeight = Symbol('kWeight')\nconst kMaxWeightPerServer = Symbol('kMaxWeightPerServer')\nconst kErrorPenalty = Symbol('kErrorPenalty')\n\nfunction getGreatestCommonDivisor (a, b) {\n if (b === 0) return a\n return getGreatestCommonDivisor(b, a % b)\n}\n\nfunction defaultFactory (origin, opts) {\n return new Pool(origin, opts)\n}\n\nclass BalancedPool extends PoolBase {\n constructor (upstreams = [], { factory = defaultFactory, ...opts } = {}) {\n super()\n\n this[kOptions] = opts\n this[kIndex] = -1\n this[kCurrentWeight] = 0\n\n this[kMaxWeightPerServer] = this[kOptions].maxWeightPerServer || 100\n this[kErrorPenalty] = this[kOptions].errorPenalty || 15\n\n if (!Array.isArray(upstreams)) {\n upstreams = [upstreams]\n }\n\n if (typeof factory !== 'function') {\n throw new InvalidArgumentError('factory must be a function.')\n }\n\n this[kInterceptors] = opts.interceptors && opts.interceptors.BalancedPool && Array.isArray(opts.interceptors.BalancedPool)\n ? opts.interceptors.BalancedPool\n : []\n this[kFactory] = factory\n\n for (const upstream of upstreams) {\n this.addUpstream(upstream)\n }\n this._updateBalancedPoolStats()\n }\n\n addUpstream (upstream) {\n const upstreamOrigin = parseOrigin(upstream).origin\n\n if (this[kClients].find((pool) => (\n pool[kUrl].origin === upstreamOrigin &&\n pool.closed !== true &&\n pool.destroyed !== true\n ))) {\n return this\n }\n const pool = this[kFactory](upstreamOrigin, Object.assign({}, this[kOptions]))\n\n this[kAddClient](pool)\n pool.on('connect', () => {\n pool[kWeight] = Math.min(this[kMaxWeightPerServer], pool[kWeight] + this[kErrorPenalty])\n })\n\n pool.on('connectionError', () => {\n pool[kWeight] = Math.max(1, pool[kWeight] - this[kErrorPenalty])\n this._updateBalancedPoolStats()\n })\n\n pool.on('disconnect', (...args) => {\n const err = args[2]\n if (err && err.code === 'UND_ERR_SOCKET') {\n // decrease the weight of the pool.\n pool[kWeight] = Math.max(1, pool[kWeight] - this[kErrorPenalty])\n this._updateBalancedPoolStats()\n }\n })\n\n for (const client of this[kClients]) {\n client[kWeight] = this[kMaxWeightPerServer]\n }\n\n this._updateBalancedPoolStats()\n\n return this\n }\n\n _updateBalancedPoolStats () {\n this[kGreatestCommonDivisor] = this[kClients].map(p => p[kWeight]).reduce(getGreatestCommonDivisor, 0)\n }\n\n removeUpstream (upstream) {\n const upstreamOrigin = parseOrigin(upstream).origin\n\n const pool = this[kClients].find((pool) => (\n pool[kUrl].origin === upstreamOrigin &&\n pool.closed !== true &&\n pool.destroyed !== true\n ))\n\n if (pool) {\n this[kRemoveClient](pool)\n }\n\n return this\n }\n\n get upstreams () {\n return this[kClients]\n .filter(dispatcher => dispatcher.closed !== true && dispatcher.destroyed !== true)\n .map((p) => p[kUrl].origin)\n }\n\n [kGetDispatcher] () {\n // We validate that pools is greater than 0,\n // otherwise we would have to wait until an upstream\n // is added, which might never happen.\n if (this[kClients].length === 0) {\n throw new BalancedPoolMissingUpstreamError()\n }\n\n const dispatcher = this[kClients].find(dispatcher => (\n !dispatcher[kNeedDrain] &&\n dispatcher.closed !== true &&\n dispatcher.destroyed !== true\n ))\n\n if (!dispatcher) {\n return\n }\n\n const allClientsBusy = this[kClients].map(pool => pool[kNeedDrain]).reduce((a, b) => a && b, true)\n\n if (allClientsBusy) {\n return\n }\n\n let counter = 0\n\n let maxWeightIndex = this[kClients].findIndex(pool => !pool[kNeedDrain])\n\n while (counter++ < this[kClients].length) {\n this[kIndex] = (this[kIndex] + 1) % this[kClients].length\n const pool = this[kClients][this[kIndex]]\n\n // find pool index with the largest weight\n if (pool[kWeight] > this[kClients][maxWeightIndex][kWeight] && !pool[kNeedDrain]) {\n maxWeightIndex = this[kIndex]\n }\n\n // decrease the current weight every `this[kClients].length`.\n if (this[kIndex] === 0) {\n // Set the current weight to the next lower weight.\n this[kCurrentWeight] = this[kCurrentWeight] - this[kGreatestCommonDivisor]\n\n if (this[kCurrentWeight] <= 0) {\n this[kCurrentWeight] = this[kMaxWeightPerServer]\n }\n }\n if (pool[kWeight] >= this[kCurrentWeight] && (!pool[kNeedDrain])) {\n return pool\n }\n }\n\n this[kCurrentWeight] = this[kClients][maxWeightIndex][kWeight]\n this[kIndex] = maxWeightIndex\n return this[kClients][maxWeightIndex]\n }\n}\n\nmodule.exports = BalancedPool\n","'use strict'\n\n/* istanbul ignore file: only for Node 12 */\n\nconst { kConnected, kSize } = require('../core/symbols')\n\nclass CompatWeakRef {\n constructor (value) {\n this.value = value\n }\n\n deref () {\n return this.value[kConnected] === 0 && this.value[kSize] === 0\n ? undefined\n : this.value\n }\n}\n\nclass CompatFinalizer {\n constructor (finalizer) {\n this.finalizer = finalizer\n }\n\n register (dispatcher, key) {\n if (dispatcher.on) {\n dispatcher.on('disconnect', () => {\n if (dispatcher[kConnected] === 0 && dispatcher[kSize] === 0) {\n this.finalizer(key)\n }\n })\n }\n }\n}\n\nmodule.exports = function () {\n // FIXME: remove workaround when the Node bug is fixed\n // https://github.com/nodejs/node/issues/49344#issuecomment-1741776308\n if (process.env.NODE_V8_COVERAGE) {\n return {\n WeakRef: CompatWeakRef,\n FinalizationRegistry: CompatFinalizer\n }\n }\n return {\n WeakRef: global.WeakRef || CompatWeakRef,\n FinalizationRegistry: global.FinalizationRegistry || CompatFinalizer\n }\n}\n","'use strict'\n\nconst { InvalidArgumentError } = require('./core/errors')\nconst { kClients, kRunning, kClose, kDestroy, kDispatch, kInterceptors } = require('./core/symbols')\nconst DispatcherBase = require('./dispatcher-base')\nconst Pool = require('./pool')\nconst Client = require('./client')\nconst util = require('./core/util')\nconst createRedirectInterceptor = require('./interceptor/redirectInterceptor')\nconst { WeakRef, FinalizationRegistry } = require('./compat/dispatcher-weakref')()\n\nconst kOnConnect = Symbol('onConnect')\nconst kOnDisconnect = Symbol('onDisconnect')\nconst kOnConnectionError = Symbol('onConnectionError')\nconst kMaxRedirections = Symbol('maxRedirections')\nconst kOnDrain = Symbol('onDrain')\nconst kFactory = Symbol('factory')\nconst kFinalizer = Symbol('finalizer')\nconst kOptions = Symbol('options')\n\nfunction defaultFactory (origin, opts) {\n return opts && opts.connections === 1\n ? new Client(origin, opts)\n : new Pool(origin, opts)\n}\n\nclass Agent extends DispatcherBase {\n constructor ({ factory = defaultFactory, maxRedirections = 0, connect, ...options } = {}) {\n super()\n\n if (typeof factory !== 'function') {\n throw new InvalidArgumentError('factory must be a function.')\n }\n\n if (connect != null && typeof connect !== 'function' && typeof connect !== 'object') {\n throw new InvalidArgumentError('connect must be a function or an object')\n }\n\n if (!Number.isInteger(maxRedirections) || maxRedirections < 0) {\n throw new InvalidArgumentError('maxRedirections must be a positive number')\n }\n\n if (connect && typeof connect !== 'function') {\n connect = { ...connect }\n }\n\n this[kInterceptors] = options.interceptors && options.interceptors.Agent && Array.isArray(options.interceptors.Agent)\n ? options.interceptors.Agent\n : [createRedirectInterceptor({ maxRedirections })]\n\n this[kOptions] = { ...util.deepClone(options), connect }\n this[kOptions].interceptors = options.interceptors\n ? { ...options.interceptors }\n : undefined\n this[kMaxRedirections] = maxRedirections\n this[kFactory] = factory\n this[kClients] = new Map()\n this[kFinalizer] = new FinalizationRegistry(/* istanbul ignore next: gc is undeterministic */ key => {\n const ref = this[kClients].get(key)\n if (ref !== undefined && ref.deref() === undefined) {\n this[kClients].delete(key)\n }\n })\n\n const agent = this\n\n this[kOnDrain] = (origin, targets) => {\n agent.emit('drain', origin, [agent, ...targets])\n }\n\n this[kOnConnect] = (origin, targets) => {\n agent.emit('connect', origin, [agent, ...targets])\n }\n\n this[kOnDisconnect] = (origin, targets, err) => {\n agent.emit('disconnect', origin, [agent, ...targets], err)\n }\n\n this[kOnConnectionError] = (origin, targets, err) => {\n agent.emit('connectionError', origin, [agent, ...targets], err)\n }\n }\n\n get [kRunning] () {\n let ret = 0\n for (const ref of this[kClients].values()) {\n const client = ref.deref()\n /* istanbul ignore next: gc is undeterministic */\n if (client) {\n ret += client[kRunning]\n }\n }\n return ret\n }\n\n [kDispatch] (opts, handler) {\n let key\n if (opts.origin && (typeof opts.origin === 'string' || opts.origin instanceof URL)) {\n key = String(opts.origin)\n } else {\n throw new InvalidArgumentError('opts.origin must be a non-empty string or URL.')\n }\n\n const ref = this[kClients].get(key)\n\n let dispatcher = ref ? ref.deref() : null\n if (!dispatcher) {\n dispatcher = this[kFactory](opts.origin, this[kOptions])\n .on('drain', this[kOnDrain])\n .on('connect', this[kOnConnect])\n .on('disconnect', this[kOnDisconnect])\n .on('connectionError', this[kOnConnectionError])\n\n this[kClients].set(key, new WeakRef(dispatcher))\n this[kFinalizer].register(dispatcher, key)\n }\n\n return dispatcher.dispatch(opts, handler)\n }\n\n async [kClose] () {\n const closePromises = []\n for (const ref of this[kClients].values()) {\n const client = ref.deref()\n /* istanbul ignore else: gc is undeterministic */\n if (client) {\n closePromises.push(client.close())\n }\n }\n\n await Promise.all(closePromises)\n }\n\n async [kDestroy] (err) {\n const destroyPromises = []\n for (const ref of this[kClients].values()) {\n const client = ref.deref()\n /* istanbul ignore else: gc is undeterministic */\n if (client) {\n destroyPromises.push(client.destroy(err))\n }\n }\n\n await Promise.all(destroyPromises)\n }\n}\n\nmodule.exports = Agent\n","// Ported from https://github.com/nodejs/undici/pull/907\n\n'use strict'\n\nconst assert = require('assert')\nconst { Readable } = require('stream')\nconst { RequestAbortedError, NotSupportedError, InvalidArgumentError } = require('../core/errors')\nconst util = require('../core/util')\nconst { ReadableStreamFrom, toUSVString } = require('../core/util')\n\nlet Blob\n\nconst kConsume = Symbol('kConsume')\nconst kReading = Symbol('kReading')\nconst kBody = Symbol('kBody')\nconst kAbort = Symbol('abort')\nconst kContentType = Symbol('kContentType')\n\nconst noop = () => {}\n\nmodule.exports = class BodyReadable extends Readable {\n constructor ({\n resume,\n abort,\n contentType = '',\n highWaterMark = 64 * 1024 // Same as nodejs fs streams.\n }) {\n super({\n autoDestroy: true,\n read: resume,\n highWaterMark\n })\n\n this._readableState.dataEmitted = false\n\n this[kAbort] = abort\n this[kConsume] = null\n this[kBody] = null\n this[kContentType] = contentType\n\n // Is stream being consumed through Readable API?\n // This is an optimization so that we avoid checking\n // for 'data' and 'readable' listeners in the hot path\n // inside push().\n this[kReading] = false\n }\n\n destroy (err) {\n if (this.destroyed) {\n // Node < 16\n return this\n }\n\n if (!err && !this._readableState.endEmitted) {\n err = new RequestAbortedError()\n }\n\n if (err) {\n this[kAbort]()\n }\n\n return super.destroy(err)\n }\n\n emit (ev, ...args) {\n if (ev === 'data') {\n // Node < 16.7\n this._readableState.dataEmitted = true\n } else if (ev === 'error') {\n // Node < 16\n this._readableState.errorEmitted = true\n }\n return super.emit(ev, ...args)\n }\n\n on (ev, ...args) {\n if (ev === 'data' || ev === 'readable') {\n this[kReading] = true\n }\n return super.on(ev, ...args)\n }\n\n addListener (ev, ...args) {\n return this.on(ev, ...args)\n }\n\n off (ev, ...args) {\n const ret = super.off(ev, ...args)\n if (ev === 'data' || ev === 'readable') {\n this[kReading] = (\n this.listenerCount('data') > 0 ||\n this.listenerCount('readable') > 0\n )\n }\n return ret\n }\n\n removeListener (ev, ...args) {\n return this.off(ev, ...args)\n }\n\n push (chunk) {\n if (this[kConsume] && chunk !== null && this.readableLength === 0) {\n consumePush(this[kConsume], chunk)\n return this[kReading] ? super.push(chunk) : true\n }\n return super.push(chunk)\n }\n\n // https://fetch.spec.whatwg.org/#dom-body-text\n async text () {\n return consume(this, 'text')\n }\n\n // https://fetch.spec.whatwg.org/#dom-body-json\n async json () {\n return consume(this, 'json')\n }\n\n // https://fetch.spec.whatwg.org/#dom-body-blob\n async blob () {\n return consume(this, 'blob')\n }\n\n // https://fetch.spec.whatwg.org/#dom-body-arraybuffer\n async arrayBuffer () {\n return consume(this, 'arrayBuffer')\n }\n\n // https://fetch.spec.whatwg.org/#dom-body-formdata\n async formData () {\n // TODO: Implement.\n throw new NotSupportedError()\n }\n\n // https://fetch.spec.whatwg.org/#dom-body-bodyused\n get bodyUsed () {\n return util.isDisturbed(this)\n }\n\n // https://fetch.spec.whatwg.org/#dom-body-body\n get body () {\n if (!this[kBody]) {\n this[kBody] = ReadableStreamFrom(this)\n if (this[kConsume]) {\n // TODO: Is this the best way to force a lock?\n this[kBody].getReader() // Ensure stream is locked.\n assert(this[kBody].locked)\n }\n }\n return this[kBody]\n }\n\n dump (opts) {\n let limit = opts && Number.isFinite(opts.limit) ? opts.limit : 262144\n const signal = opts && opts.signal\n\n if (signal) {\n try {\n if (typeof signal !== 'object' || !('aborted' in signal)) {\n throw new InvalidArgumentError('signal must be an AbortSignal')\n }\n util.throwIfAborted(signal)\n } catch (err) {\n return Promise.reject(err)\n }\n }\n\n if (this.closed) {\n return Promise.resolve(null)\n }\n\n return new Promise((resolve, reject) => {\n const signalListenerCleanup = signal\n ? util.addAbortListener(signal, () => {\n this.destroy()\n })\n : noop\n\n this\n .on('close', function () {\n signalListenerCleanup()\n if (signal && signal.aborted) {\n reject(signal.reason || Object.assign(new Error('The operation was aborted'), { name: 'AbortError' }))\n } else {\n resolve(null)\n }\n })\n .on('error', noop)\n .on('data', function (chunk) {\n limit -= chunk.length\n if (limit <= 0) {\n this.destroy()\n }\n })\n .resume()\n })\n }\n}\n\n// https://streams.spec.whatwg.org/#readablestream-locked\nfunction isLocked (self) {\n // Consume is an implicit lock.\n return (self[kBody] && self[kBody].locked === true) || self[kConsume]\n}\n\n// https://fetch.spec.whatwg.org/#body-unusable\nfunction isUnusable (self) {\n return util.isDisturbed(self) || isLocked(self)\n}\n\nasync function consume (stream, type) {\n if (isUnusable(stream)) {\n throw new TypeError('unusable')\n }\n\n assert(!stream[kConsume])\n\n return new Promise((resolve, reject) => {\n stream[kConsume] = {\n type,\n stream,\n resolve,\n reject,\n length: 0,\n body: []\n }\n\n stream\n .on('error', function (err) {\n consumeFinish(this[kConsume], err)\n })\n .on('close', function () {\n if (this[kConsume].body !== null) {\n consumeFinish(this[kConsume], new RequestAbortedError())\n }\n })\n\n process.nextTick(consumeStart, stream[kConsume])\n })\n}\n\nfunction consumeStart (consume) {\n if (consume.body === null) {\n return\n }\n\n const { _readableState: state } = consume.stream\n\n for (const chunk of state.buffer) {\n consumePush(consume, chunk)\n }\n\n if (state.endEmitted) {\n consumeEnd(this[kConsume])\n } else {\n consume.stream.on('end', function () {\n consumeEnd(this[kConsume])\n })\n }\n\n consume.stream.resume()\n\n while (consume.stream.read() != null) {\n // Loop\n }\n}\n\nfunction consumeEnd (consume) {\n const { type, body, resolve, stream, length } = consume\n\n try {\n if (type === 'text') {\n resolve(toUSVString(Buffer.concat(body)))\n } else if (type === 'json') {\n resolve(JSON.parse(Buffer.concat(body)))\n } else if (type === 'arrayBuffer') {\n const dst = new Uint8Array(length)\n\n let pos = 0\n for (const buf of body) {\n dst.set(buf, pos)\n pos += buf.byteLength\n }\n\n resolve(dst.buffer)\n } else if (type === 'blob') {\n if (!Blob) {\n Blob = require('buffer').Blob\n }\n resolve(new Blob(body, { type: stream[kContentType] }))\n }\n\n consumeFinish(consume)\n } catch (err) {\n stream.destroy(err)\n }\n}\n\nfunction consumePush (consume, chunk) {\n consume.length += chunk.length\n consume.body.push(chunk)\n}\n\nfunction consumeFinish (consume, err) {\n if (consume.body === null) {\n return\n }\n\n if (err) {\n consume.reject(err)\n } else {\n consume.resolve()\n }\n\n consume.type = null\n consume.stream = null\n consume.resolve = null\n consume.reject = null\n consume.length = 0\n consume.body = null\n}\n","const assert = require('assert')\nconst {\n ResponseStatusCodeError\n} = require('../core/errors')\nconst { toUSVString } = require('../core/util')\n\nasync function getResolveErrorBodyCallback ({ callback, body, contentType, statusCode, statusMessage, headers }) {\n assert(body)\n\n let chunks = []\n let limit = 0\n\n for await (const chunk of body) {\n chunks.push(chunk)\n limit += chunk.length\n if (limit > 128 * 1024) {\n chunks = null\n break\n }\n }\n\n if (statusCode === 204 || !contentType || !chunks) {\n process.nextTick(callback, new ResponseStatusCodeError(`Response status code ${statusCode}${statusMessage ? `: ${statusMessage}` : ''}`, statusCode, headers))\n return\n }\n\n try {\n if (contentType.startsWith('application/json')) {\n const payload = JSON.parse(toUSVString(Buffer.concat(chunks)))\n process.nextTick(callback, new ResponseStatusCodeError(`Response status code ${statusCode}${statusMessage ? `: ${statusMessage}` : ''}`, statusCode, headers, payload))\n return\n }\n\n if (contentType.startsWith('text/')) {\n const payload = toUSVString(Buffer.concat(chunks))\n process.nextTick(callback, new ResponseStatusCodeError(`Response status code ${statusCode}${statusMessage ? `: ${statusMessage}` : ''}`, statusCode, headers, payload))\n return\n }\n } catch (err) {\n // Process in a fallback if error\n }\n\n process.nextTick(callback, new ResponseStatusCodeError(`Response status code ${statusCode}${statusMessage ? `: ${statusMessage}` : ''}`, statusCode, headers))\n}\n\nmodule.exports = { getResolveErrorBodyCallback }\n","const { addAbortListener } = require('../core/util')\nconst { RequestAbortedError } = require('../core/errors')\n\nconst kListener = Symbol('kListener')\nconst kSignal = Symbol('kSignal')\n\nfunction abort (self) {\n if (self.abort) {\n self.abort()\n } else {\n self.onError(new RequestAbortedError())\n }\n}\n\nfunction addSignal (self, signal) {\n self[kSignal] = null\n self[kListener] = null\n\n if (!signal) {\n return\n }\n\n if (signal.aborted) {\n abort(self)\n return\n }\n\n self[kSignal] = signal\n self[kListener] = () => {\n abort(self)\n }\n\n addAbortListener(self[kSignal], self[kListener])\n}\n\nfunction removeSignal (self) {\n if (!self[kSignal]) {\n return\n }\n\n if ('removeEventListener' in self[kSignal]) {\n self[kSignal].removeEventListener('abort', self[kListener])\n } else {\n self[kSignal].removeListener('abort', self[kListener])\n }\n\n self[kSignal] = null\n self[kListener] = null\n}\n\nmodule.exports = {\n addSignal,\n removeSignal\n}\n","'use strict'\n\nconst Readable = require('./readable')\nconst {\n InvalidArgumentError,\n RequestAbortedError\n} = require('../core/errors')\nconst util = require('../core/util')\nconst { getResolveErrorBodyCallback } = require('./util')\nconst { AsyncResource } = require('async_hooks')\nconst { addSignal, removeSignal } = require('./abort-signal')\n\nclass RequestHandler extends AsyncResource {\n constructor (opts, callback) {\n if (!opts || typeof opts !== 'object') {\n throw new InvalidArgumentError('invalid opts')\n }\n\n const { signal, method, opaque, body, onInfo, responseHeaders, throwOnError, highWaterMark } = opts\n\n try {\n if (typeof callback !== 'function') {\n throw new InvalidArgumentError('invalid callback')\n }\n\n if (highWaterMark && (typeof highWaterMark !== 'number' || highWaterMark < 0)) {\n throw new InvalidArgumentError('invalid highWaterMark')\n }\n\n if (signal && typeof signal.on !== 'function' && typeof signal.addEventListener !== 'function') {\n throw new InvalidArgumentError('signal must be an EventEmitter or EventTarget')\n }\n\n if (method === 'CONNECT') {\n throw new InvalidArgumentError('invalid method')\n }\n\n if (onInfo && typeof onInfo !== 'function') {\n throw new InvalidArgumentError('invalid onInfo callback')\n }\n\n super('UNDICI_REQUEST')\n } catch (err) {\n if (util.isStream(body)) {\n util.destroy(body.on('error', util.nop), err)\n }\n throw err\n }\n\n this.responseHeaders = responseHeaders || null\n this.opaque = opaque || null\n this.callback = callback\n this.res = null\n this.abort = null\n this.body = body\n this.trailers = {}\n this.context = null\n this.onInfo = onInfo || null\n this.throwOnError = throwOnError\n this.highWaterMark = highWaterMark\n\n if (util.isStream(body)) {\n body.on('error', (err) => {\n this.onError(err)\n })\n }\n\n addSignal(this, signal)\n }\n\n onConnect (abort, context) {\n if (!this.callback) {\n throw new RequestAbortedError()\n }\n\n this.abort = abort\n this.context = context\n }\n\n onHeaders (statusCode, rawHeaders, resume, statusMessage) {\n const { callback, opaque, abort, context, responseHeaders, highWaterMark } = this\n\n const headers = responseHeaders === 'raw' ? util.parseRawHeaders(rawHeaders) : util.parseHeaders(rawHeaders)\n\n if (statusCode < 200) {\n if (this.onInfo) {\n this.onInfo({ statusCode, headers })\n }\n return\n }\n\n const parsedHeaders = responseHeaders === 'raw' ? util.parseHeaders(rawHeaders) : headers\n const contentType = parsedHeaders['content-type']\n const body = new Readable({ resume, abort, contentType, highWaterMark })\n\n this.callback = null\n this.res = body\n if (callback !== null) {\n if (this.throwOnError && statusCode >= 400) {\n this.runInAsyncScope(getResolveErrorBodyCallback, null,\n { callback, body, contentType, statusCode, statusMessage, headers }\n )\n } else {\n this.runInAsyncScope(callback, null, null, {\n statusCode,\n headers,\n trailers: this.trailers,\n opaque,\n body,\n context\n })\n }\n }\n }\n\n onData (chunk) {\n const { res } = this\n return res.push(chunk)\n }\n\n onComplete (trailers) {\n const { res } = this\n\n removeSignal(this)\n\n util.parseHeaders(trailers, this.trailers)\n\n res.push(null)\n }\n\n onError (err) {\n const { res, callback, body, opaque } = this\n\n removeSignal(this)\n\n if (callback) {\n // TODO: Does this need queueMicrotask?\n this.callback = null\n queueMicrotask(() => {\n this.runInAsyncScope(callback, null, err, { opaque })\n })\n }\n\n if (res) {\n this.res = null\n // Ensure all queued handlers are invoked before destroying res.\n queueMicrotask(() => {\n util.destroy(res, err)\n })\n }\n\n if (body) {\n this.body = null\n util.destroy(body, err)\n }\n }\n}\n\nfunction request (opts, callback) {\n if (callback === undefined) {\n return new Promise((resolve, reject) => {\n request.call(this, opts, (err, data) => {\n return err ? reject(err) : resolve(data)\n })\n })\n }\n\n try {\n this.dispatch(opts, new RequestHandler(opts, callback))\n } catch (err) {\n if (typeof callback !== 'function') {\n throw err\n }\n const opaque = opts && opts.opaque\n queueMicrotask(() => callback(err, { opaque }))\n }\n}\n\nmodule.exports = request\nmodule.exports.RequestHandler = RequestHandler\n","'use strict'\n\nconst { finished, PassThrough } = require('stream')\nconst {\n InvalidArgumentError,\n InvalidReturnValueError,\n RequestAbortedError\n} = require('../core/errors')\nconst util = require('../core/util')\nconst { getResolveErrorBodyCallback } = require('./util')\nconst { AsyncResource } = require('async_hooks')\nconst { addSignal, removeSignal } = require('./abort-signal')\n\nclass StreamHandler extends AsyncResource {\n constructor (opts, factory, callback) {\n if (!opts || typeof opts !== 'object') {\n throw new InvalidArgumentError('invalid opts')\n }\n\n const { signal, method, opaque, body, onInfo, responseHeaders, throwOnError } = opts\n\n try {\n if (typeof callback !== 'function') {\n throw new InvalidArgumentError('invalid callback')\n }\n\n if (typeof factory !== 'function') {\n throw new InvalidArgumentError('invalid factory')\n }\n\n if (signal && typeof signal.on !== 'function' && typeof signal.addEventListener !== 'function') {\n throw new InvalidArgumentError('signal must be an EventEmitter or EventTarget')\n }\n\n if (method === 'CONNECT') {\n throw new InvalidArgumentError('invalid method')\n }\n\n if (onInfo && typeof onInfo !== 'function') {\n throw new InvalidArgumentError('invalid onInfo callback')\n }\n\n super('UNDICI_STREAM')\n } catch (err) {\n if (util.isStream(body)) {\n util.destroy(body.on('error', util.nop), err)\n }\n throw err\n }\n\n this.responseHeaders = responseHeaders || null\n this.opaque = opaque || null\n this.factory = factory\n this.callback = callback\n this.res = null\n this.abort = null\n this.context = null\n this.trailers = null\n this.body = body\n this.onInfo = onInfo || null\n this.throwOnError = throwOnError || false\n\n if (util.isStream(body)) {\n body.on('error', (err) => {\n this.onError(err)\n })\n }\n\n addSignal(this, signal)\n }\n\n onConnect (abort, context) {\n if (!this.callback) {\n throw new RequestAbortedError()\n }\n\n this.abort = abort\n this.context = context\n }\n\n onHeaders (statusCode, rawHeaders, resume, statusMessage) {\n const { factory, opaque, context, callback, responseHeaders } = this\n\n const headers = responseHeaders === 'raw' ? util.parseRawHeaders(rawHeaders) : util.parseHeaders(rawHeaders)\n\n if (statusCode < 200) {\n if (this.onInfo) {\n this.onInfo({ statusCode, headers })\n }\n return\n }\n\n this.factory = null\n\n let res\n\n if (this.throwOnError && statusCode >= 400) {\n const parsedHeaders = responseHeaders === 'raw' ? util.parseHeaders(rawHeaders) : headers\n const contentType = parsedHeaders['content-type']\n res = new PassThrough()\n\n this.callback = null\n this.runInAsyncScope(getResolveErrorBodyCallback, null,\n { callback, body: res, contentType, statusCode, statusMessage, headers }\n )\n } else {\n if (factory === null) {\n return\n }\n\n res = this.runInAsyncScope(factory, null, {\n statusCode,\n headers,\n opaque,\n context\n })\n\n if (\n !res ||\n typeof res.write !== 'function' ||\n typeof res.end !== 'function' ||\n typeof res.on !== 'function'\n ) {\n throw new InvalidReturnValueError('expected Writable')\n }\n\n // TODO: Avoid finished. It registers an unnecessary amount of listeners.\n finished(res, { readable: false }, (err) => {\n const { callback, res, opaque, trailers, abort } = this\n\n this.res = null\n if (err || !res.readable) {\n util.destroy(res, err)\n }\n\n this.callback = null\n this.runInAsyncScope(callback, null, err || null, { opaque, trailers })\n\n if (err) {\n abort()\n }\n })\n }\n\n res.on('drain', resume)\n\n this.res = res\n\n const needDrain = res.writableNeedDrain !== undefined\n ? res.writableNeedDrain\n : res._writableState && res._writableState.needDrain\n\n return needDrain !== true\n }\n\n onData (chunk) {\n const { res } = this\n\n return res ? res.write(chunk) : true\n }\n\n onComplete (trailers) {\n const { res } = this\n\n removeSignal(this)\n\n if (!res) {\n return\n }\n\n this.trailers = util.parseHeaders(trailers)\n\n res.end()\n }\n\n onError (err) {\n const { res, callback, opaque, body } = this\n\n removeSignal(this)\n\n this.factory = null\n\n if (res) {\n this.res = null\n util.destroy(res, err)\n } else if (callback) {\n this.callback = null\n queueMicrotask(() => {\n this.runInAsyncScope(callback, null, err, { opaque })\n })\n }\n\n if (body) {\n this.body = null\n util.destroy(body, err)\n }\n }\n}\n\nfunction stream (opts, factory, callback) {\n if (callback === undefined) {\n return new Promise((resolve, reject) => {\n stream.call(this, opts, factory, (err, data) => {\n return err ? reject(err) : resolve(data)\n })\n })\n }\n\n try {\n this.dispatch(opts, new StreamHandler(opts, factory, callback))\n } catch (err) {\n if (typeof callback !== 'function') {\n throw err\n }\n const opaque = opts && opts.opaque\n queueMicrotask(() => callback(err, { opaque }))\n }\n}\n\nmodule.exports = stream\n","'use strict'\n\nconst {\n Readable,\n Duplex,\n PassThrough\n} = require('stream')\nconst {\n InvalidArgumentError,\n InvalidReturnValueError,\n RequestAbortedError\n} = require('../core/errors')\nconst util = require('../core/util')\nconst { AsyncResource } = require('async_hooks')\nconst { addSignal, removeSignal } = require('./abort-signal')\nconst assert = require('assert')\n\nconst kResume = Symbol('resume')\n\nclass PipelineRequest extends Readable {\n constructor () {\n super({ autoDestroy: true })\n\n this[kResume] = null\n }\n\n _read () {\n const { [kResume]: resume } = this\n\n if (resume) {\n this[kResume] = null\n resume()\n }\n }\n\n _destroy (err, callback) {\n this._read()\n\n callback(err)\n }\n}\n\nclass PipelineResponse extends Readable {\n constructor (resume) {\n super({ autoDestroy: true })\n this[kResume] = resume\n }\n\n _read () {\n this[kResume]()\n }\n\n _destroy (err, callback) {\n if (!err && !this._readableState.endEmitted) {\n err = new RequestAbortedError()\n }\n\n callback(err)\n }\n}\n\nclass PipelineHandler extends AsyncResource {\n constructor (opts, handler) {\n if (!opts || typeof opts !== 'object') {\n throw new InvalidArgumentError('invalid opts')\n }\n\n if (typeof handler !== 'function') {\n throw new InvalidArgumentError('invalid handler')\n }\n\n const { signal, method, opaque, onInfo, responseHeaders } = opts\n\n if (signal && typeof signal.on !== 'function' && typeof signal.addEventListener !== 'function') {\n throw new InvalidArgumentError('signal must be an EventEmitter or EventTarget')\n }\n\n if (method === 'CONNECT') {\n throw new InvalidArgumentError('invalid method')\n }\n\n if (onInfo && typeof onInfo !== 'function') {\n throw new InvalidArgumentError('invalid onInfo callback')\n }\n\n super('UNDICI_PIPELINE')\n\n this.opaque = opaque || null\n this.responseHeaders = responseHeaders || null\n this.handler = handler\n this.abort = null\n this.context = null\n this.onInfo = onInfo || null\n\n this.req = new PipelineRequest().on('error', util.nop)\n\n this.ret = new Duplex({\n readableObjectMode: opts.objectMode,\n autoDestroy: true,\n read: () => {\n const { body } = this\n\n if (body && body.resume) {\n body.resume()\n }\n },\n write: (chunk, encoding, callback) => {\n const { req } = this\n\n if (req.push(chunk, encoding) || req._readableState.destroyed) {\n callback()\n } else {\n req[kResume] = callback\n }\n },\n destroy: (err, callback) => {\n const { body, req, res, ret, abort } = this\n\n if (!err && !ret._readableState.endEmitted) {\n err = new RequestAbortedError()\n }\n\n if (abort && err) {\n abort()\n }\n\n util.destroy(body, err)\n util.destroy(req, err)\n util.destroy(res, err)\n\n removeSignal(this)\n\n callback(err)\n }\n }).on('prefinish', () => {\n const { req } = this\n\n // Node < 15 does not call _final in same tick.\n req.push(null)\n })\n\n this.res = null\n\n addSignal(this, signal)\n }\n\n onConnect (abort, context) {\n const { ret, res } = this\n\n assert(!res, 'pipeline cannot be retried')\n\n if (ret.destroyed) {\n throw new RequestAbortedError()\n }\n\n this.abort = abort\n this.context = context\n }\n\n onHeaders (statusCode, rawHeaders, resume) {\n const { opaque, handler, context } = this\n\n if (statusCode < 200) {\n if (this.onInfo) {\n const headers = this.responseHeaders === 'raw' ? util.parseRawHeaders(rawHeaders) : util.parseHeaders(rawHeaders)\n this.onInfo({ statusCode, headers })\n }\n return\n }\n\n this.res = new PipelineResponse(resume)\n\n let body\n try {\n this.handler = null\n const headers = this.responseHeaders === 'raw' ? util.parseRawHeaders(rawHeaders) : util.parseHeaders(rawHeaders)\n body = this.runInAsyncScope(handler, null, {\n statusCode,\n headers,\n opaque,\n body: this.res,\n context\n })\n } catch (err) {\n this.res.on('error', util.nop)\n throw err\n }\n\n if (!body || typeof body.on !== 'function') {\n throw new InvalidReturnValueError('expected Readable')\n }\n\n body\n .on('data', (chunk) => {\n const { ret, body } = this\n\n if (!ret.push(chunk) && body.pause) {\n body.pause()\n }\n })\n .on('error', (err) => {\n const { ret } = this\n\n util.destroy(ret, err)\n })\n .on('end', () => {\n const { ret } = this\n\n ret.push(null)\n })\n .on('close', () => {\n const { ret } = this\n\n if (!ret._readableState.ended) {\n util.destroy(ret, new RequestAbortedError())\n }\n })\n\n this.body = body\n }\n\n onData (chunk) {\n const { res } = this\n return res.push(chunk)\n }\n\n onComplete (trailers) {\n const { res } = this\n res.push(null)\n }\n\n onError (err) {\n const { ret } = this\n this.handler = null\n util.destroy(ret, err)\n }\n}\n\nfunction pipeline (opts, handler) {\n try {\n const pipelineHandler = new PipelineHandler(opts, handler)\n this.dispatch({ ...opts, body: pipelineHandler.req }, pipelineHandler)\n return pipelineHandler.ret\n } catch (err) {\n return new PassThrough().destroy(err)\n }\n}\n\nmodule.exports = pipeline\n","'use strict'\n\nconst { InvalidArgumentError, RequestAbortedError, SocketError } = require('../core/errors')\nconst { AsyncResource } = require('async_hooks')\nconst util = require('../core/util')\nconst { addSignal, removeSignal } = require('./abort-signal')\nconst assert = require('assert')\n\nclass UpgradeHandler extends AsyncResource {\n constructor (opts, callback) {\n if (!opts || typeof opts !== 'object') {\n throw new InvalidArgumentError('invalid opts')\n }\n\n if (typeof callback !== 'function') {\n throw new InvalidArgumentError('invalid callback')\n }\n\n const { signal, opaque, responseHeaders } = opts\n\n if (signal && typeof signal.on !== 'function' && typeof signal.addEventListener !== 'function') {\n throw new InvalidArgumentError('signal must be an EventEmitter or EventTarget')\n }\n\n super('UNDICI_UPGRADE')\n\n this.responseHeaders = responseHeaders || null\n this.opaque = opaque || null\n this.callback = callback\n this.abort = null\n this.context = null\n\n addSignal(this, signal)\n }\n\n onConnect (abort, context) {\n if (!this.callback) {\n throw new RequestAbortedError()\n }\n\n this.abort = abort\n this.context = null\n }\n\n onHeaders () {\n throw new SocketError('bad upgrade', null)\n }\n\n onUpgrade (statusCode, rawHeaders, socket) {\n const { callback, opaque, context } = this\n\n assert.strictEqual(statusCode, 101)\n\n removeSignal(this)\n\n this.callback = null\n const headers = this.responseHeaders === 'raw' ? util.parseRawHeaders(rawHeaders) : util.parseHeaders(rawHeaders)\n this.runInAsyncScope(callback, null, null, {\n headers,\n socket,\n opaque,\n context\n })\n }\n\n onError (err) {\n const { callback, opaque } = this\n\n removeSignal(this)\n\n if (callback) {\n this.callback = null\n queueMicrotask(() => {\n this.runInAsyncScope(callback, null, err, { opaque })\n })\n }\n }\n}\n\nfunction upgrade (opts, callback) {\n if (callback === undefined) {\n return new Promise((resolve, reject) => {\n upgrade.call(this, opts, (err, data) => {\n return err ? reject(err) : resolve(data)\n })\n })\n }\n\n try {\n const upgradeHandler = new UpgradeHandler(opts, callback)\n this.dispatch({\n ...opts,\n method: opts.method || 'GET',\n upgrade: opts.protocol || 'Websocket'\n }, upgradeHandler)\n } catch (err) {\n if (typeof callback !== 'function') {\n throw err\n }\n const opaque = opts && opts.opaque\n queueMicrotask(() => callback(err, { opaque }))\n }\n}\n\nmodule.exports = upgrade\n","'use strict'\n\nconst { AsyncResource } = require('async_hooks')\nconst { InvalidArgumentError, RequestAbortedError, SocketError } = require('../core/errors')\nconst util = require('../core/util')\nconst { addSignal, removeSignal } = require('./abort-signal')\n\nclass ConnectHandler extends AsyncResource {\n constructor (opts, callback) {\n if (!opts || typeof opts !== 'object') {\n throw new InvalidArgumentError('invalid opts')\n }\n\n if (typeof callback !== 'function') {\n throw new InvalidArgumentError('invalid callback')\n }\n\n const { signal, opaque, responseHeaders } = opts\n\n if (signal && typeof signal.on !== 'function' && typeof signal.addEventListener !== 'function') {\n throw new InvalidArgumentError('signal must be an EventEmitter or EventTarget')\n }\n\n super('UNDICI_CONNECT')\n\n this.opaque = opaque || null\n this.responseHeaders = responseHeaders || null\n this.callback = callback\n this.abort = null\n\n addSignal(this, signal)\n }\n\n onConnect (abort, context) {\n if (!this.callback) {\n throw new RequestAbortedError()\n }\n\n this.abort = abort\n this.context = context\n }\n\n onHeaders () {\n throw new SocketError('bad connect', null)\n }\n\n onUpgrade (statusCode, rawHeaders, socket) {\n const { callback, opaque, context } = this\n\n removeSignal(this)\n\n this.callback = null\n\n let headers = rawHeaders\n // Indicates is an HTTP2Session\n if (headers != null) {\n headers = this.responseHeaders === 'raw' ? util.parseRawHeaders(rawHeaders) : util.parseHeaders(rawHeaders)\n }\n\n this.runInAsyncScope(callback, null, null, {\n statusCode,\n headers,\n socket,\n opaque,\n context\n })\n }\n\n onError (err) {\n const { callback, opaque } = this\n\n removeSignal(this)\n\n if (callback) {\n this.callback = null\n queueMicrotask(() => {\n this.runInAsyncScope(callback, null, err, { opaque })\n })\n }\n }\n}\n\nfunction connect (opts, callback) {\n if (callback === undefined) {\n return new Promise((resolve, reject) => {\n connect.call(this, opts, (err, data) => {\n return err ? reject(err) : resolve(data)\n })\n })\n }\n\n try {\n const connectHandler = new ConnectHandler(opts, callback)\n this.dispatch({ ...opts, method: 'CONNECT' }, connectHandler)\n } catch (err) {\n if (typeof callback !== 'function') {\n throw err\n }\n const opaque = opts && opts.opaque\n queueMicrotask(() => callback(err, { opaque }))\n }\n}\n\nmodule.exports = connect\n","'use strict'\n\nmodule.exports.request = require('./api-request')\nmodule.exports.stream = require('./api-stream')\nmodule.exports.pipeline = require('./api-pipeline')\nmodule.exports.upgrade = require('./api-upgrade')\nmodule.exports.connect = require('./api-connect')\n","'use strict'\n\nconst { UndiciError } = require('../core/errors')\n\nclass MockNotMatchedError extends UndiciError {\n constructor (message) {\n super(message)\n Error.captureStackTrace(this, MockNotMatchedError)\n this.name = 'MockNotMatchedError'\n this.message = message || 'The request does not match any registered mock dispatches'\n this.code = 'UND_MOCK_ERR_MOCK_NOT_MATCHED'\n }\n}\n\nmodule.exports = {\n MockNotMatchedError\n}\n","'use strict'\n\nmodule.exports = {\n kAgent: Symbol('agent'),\n kOptions: Symbol('options'),\n kFactory: Symbol('factory'),\n kDispatches: Symbol('dispatches'),\n kDispatchKey: Symbol('dispatch key'),\n kDefaultHeaders: Symbol('default headers'),\n kDefaultTrailers: Symbol('default trailers'),\n kContentLength: Symbol('content length'),\n kMockAgent: Symbol('mock agent'),\n kMockAgentSet: Symbol('mock agent set'),\n kMockAgentGet: Symbol('mock agent get'),\n kMockDispatch: Symbol('mock dispatch'),\n kClose: Symbol('close'),\n kOriginalClose: Symbol('original agent close'),\n kOrigin: Symbol('origin'),\n kIsMockActive: Symbol('is mock active'),\n kNetConnect: Symbol('net connect'),\n kGetNetConnect: Symbol('get net connect'),\n kConnected: Symbol('connected')\n}\n","'use strict'\n\nconst { MockNotMatchedError } = require('./mock-errors')\nconst {\n kDispatches,\n kMockAgent,\n kOriginalDispatch,\n kOrigin,\n kGetNetConnect\n} = require('./mock-symbols')\nconst { buildURL, nop } = require('../core/util')\nconst { STATUS_CODES } = require('http')\nconst {\n types: {\n isPromise\n }\n} = require('util')\n\nfunction matchValue (match, value) {\n if (typeof match === 'string') {\n return match === value\n }\n if (match instanceof RegExp) {\n return match.test(value)\n }\n if (typeof match === 'function') {\n return match(value) === true\n }\n return false\n}\n\nfunction lowerCaseEntries (headers) {\n return Object.fromEntries(\n Object.entries(headers).map(([headerName, headerValue]) => {\n return [headerName.toLocaleLowerCase(), headerValue]\n })\n )\n}\n\n/**\n * @param {import('../../index').Headers|string[]|Record} headers\n * @param {string} key\n */\nfunction getHeaderByName (headers, key) {\n if (Array.isArray(headers)) {\n for (let i = 0; i < headers.length; i += 2) {\n if (headers[i].toLocaleLowerCase() === key.toLocaleLowerCase()) {\n return headers[i + 1]\n }\n }\n\n return undefined\n } else if (typeof headers.get === 'function') {\n return headers.get(key)\n } else {\n return lowerCaseEntries(headers)[key.toLocaleLowerCase()]\n }\n}\n\n/** @param {string[]} headers */\nfunction buildHeadersFromArray (headers) { // fetch HeadersList\n const clone = headers.slice()\n const entries = []\n for (let index = 0; index < clone.length; index += 2) {\n entries.push([clone[index], clone[index + 1]])\n }\n return Object.fromEntries(entries)\n}\n\nfunction matchHeaders (mockDispatch, headers) {\n if (typeof mockDispatch.headers === 'function') {\n if (Array.isArray(headers)) { // fetch HeadersList\n headers = buildHeadersFromArray(headers)\n }\n return mockDispatch.headers(headers ? lowerCaseEntries(headers) : {})\n }\n if (typeof mockDispatch.headers === 'undefined') {\n return true\n }\n if (typeof headers !== 'object' || typeof mockDispatch.headers !== 'object') {\n return false\n }\n\n for (const [matchHeaderName, matchHeaderValue] of Object.entries(mockDispatch.headers)) {\n const headerValue = getHeaderByName(headers, matchHeaderName)\n\n if (!matchValue(matchHeaderValue, headerValue)) {\n return false\n }\n }\n return true\n}\n\nfunction safeUrl (path) {\n if (typeof path !== 'string') {\n return path\n }\n\n const pathSegments = path.split('?')\n\n if (pathSegments.length !== 2) {\n return path\n }\n\n const qp = new URLSearchParams(pathSegments.pop())\n qp.sort()\n return [...pathSegments, qp.toString()].join('?')\n}\n\nfunction matchKey (mockDispatch, { path, method, body, headers }) {\n const pathMatch = matchValue(mockDispatch.path, path)\n const methodMatch = matchValue(mockDispatch.method, method)\n const bodyMatch = typeof mockDispatch.body !== 'undefined' ? matchValue(mockDispatch.body, body) : true\n const headersMatch = matchHeaders(mockDispatch, headers)\n return pathMatch && methodMatch && bodyMatch && headersMatch\n}\n\nfunction getResponseData (data) {\n if (Buffer.isBuffer(data)) {\n return data\n } else if (typeof data === 'object') {\n return JSON.stringify(data)\n } else {\n return data.toString()\n }\n}\n\nfunction getMockDispatch (mockDispatches, key) {\n const basePath = key.query ? buildURL(key.path, key.query) : key.path\n const resolvedPath = typeof basePath === 'string' ? safeUrl(basePath) : basePath\n\n // Match path\n let matchedMockDispatches = mockDispatches.filter(({ consumed }) => !consumed).filter(({ path }) => matchValue(safeUrl(path), resolvedPath))\n if (matchedMockDispatches.length === 0) {\n throw new MockNotMatchedError(`Mock dispatch not matched for path '${resolvedPath}'`)\n }\n\n // Match method\n matchedMockDispatches = matchedMockDispatches.filter(({ method }) => matchValue(method, key.method))\n if (matchedMockDispatches.length === 0) {\n throw new MockNotMatchedError(`Mock dispatch not matched for method '${key.method}'`)\n }\n\n // Match body\n matchedMockDispatches = matchedMockDispatches.filter(({ body }) => typeof body !== 'undefined' ? matchValue(body, key.body) : true)\n if (matchedMockDispatches.length === 0) {\n throw new MockNotMatchedError(`Mock dispatch not matched for body '${key.body}'`)\n }\n\n // Match headers\n matchedMockDispatches = matchedMockDispatches.filter((mockDispatch) => matchHeaders(mockDispatch, key.headers))\n if (matchedMockDispatches.length === 0) {\n throw new MockNotMatchedError(`Mock dispatch not matched for headers '${typeof key.headers === 'object' ? JSON.stringify(key.headers) : key.headers}'`)\n }\n\n return matchedMockDispatches[0]\n}\n\nfunction addMockDispatch (mockDispatches, key, data) {\n const baseData = { timesInvoked: 0, times: 1, persist: false, consumed: false }\n const replyData = typeof data === 'function' ? { callback: data } : { ...data }\n const newMockDispatch = { ...baseData, ...key, pending: true, data: { error: null, ...replyData } }\n mockDispatches.push(newMockDispatch)\n return newMockDispatch\n}\n\nfunction deleteMockDispatch (mockDispatches, key) {\n const index = mockDispatches.findIndex(dispatch => {\n if (!dispatch.consumed) {\n return false\n }\n return matchKey(dispatch, key)\n })\n if (index !== -1) {\n mockDispatches.splice(index, 1)\n }\n}\n\nfunction buildKey (opts) {\n const { path, method, body, headers, query } = opts\n return {\n path,\n method,\n body,\n headers,\n query\n }\n}\n\nfunction generateKeyValues (data) {\n return Object.entries(data).reduce((keyValuePairs, [key, value]) => [\n ...keyValuePairs,\n Buffer.from(`${key}`),\n Array.isArray(value) ? value.map(x => Buffer.from(`${x}`)) : Buffer.from(`${value}`)\n ], [])\n}\n\n/**\n * @see https://developer.mozilla.org/en-US/docs/Web/HTTP/Status\n * @param {number} statusCode\n */\nfunction getStatusText (statusCode) {\n return STATUS_CODES[statusCode] || 'unknown'\n}\n\nasync function getResponse (body) {\n const buffers = []\n for await (const data of body) {\n buffers.push(data)\n }\n return Buffer.concat(buffers).toString('utf8')\n}\n\n/**\n * Mock dispatch function used to simulate undici dispatches\n */\nfunction mockDispatch (opts, handler) {\n // Get mock dispatch from built key\n const key = buildKey(opts)\n const mockDispatch = getMockDispatch(this[kDispatches], key)\n\n mockDispatch.timesInvoked++\n\n // Here's where we resolve a callback if a callback is present for the dispatch data.\n if (mockDispatch.data.callback) {\n mockDispatch.data = { ...mockDispatch.data, ...mockDispatch.data.callback(opts) }\n }\n\n // Parse mockDispatch data\n const { data: { statusCode, data, headers, trailers, error }, delay, persist } = mockDispatch\n const { timesInvoked, times } = mockDispatch\n\n // If it's used up and not persistent, mark as consumed\n mockDispatch.consumed = !persist && timesInvoked >= times\n mockDispatch.pending = timesInvoked < times\n\n // If specified, trigger dispatch error\n if (error !== null) {\n deleteMockDispatch(this[kDispatches], key)\n handler.onError(error)\n return true\n }\n\n // Handle the request with a delay if necessary\n if (typeof delay === 'number' && delay > 0) {\n setTimeout(() => {\n handleReply(this[kDispatches])\n }, delay)\n } else {\n handleReply(this[kDispatches])\n }\n\n function handleReply (mockDispatches, _data = data) {\n // fetch's HeadersList is a 1D string array\n const optsHeaders = Array.isArray(opts.headers)\n ? buildHeadersFromArray(opts.headers)\n : opts.headers\n const body = typeof _data === 'function'\n ? _data({ ...opts, headers: optsHeaders })\n : _data\n\n // util.types.isPromise is likely needed for jest.\n if (isPromise(body)) {\n // If handleReply is asynchronous, throwing an error\n // in the callback will reject the promise, rather than\n // synchronously throw the error, which breaks some tests.\n // Rather, we wait for the callback to resolve if it is a\n // promise, and then re-run handleReply with the new body.\n body.then((newData) => handleReply(mockDispatches, newData))\n return\n }\n\n const responseData = getResponseData(body)\n const responseHeaders = generateKeyValues(headers)\n const responseTrailers = generateKeyValues(trailers)\n\n handler.abort = nop\n handler.onHeaders(statusCode, responseHeaders, resume, getStatusText(statusCode))\n handler.onData(Buffer.from(responseData))\n handler.onComplete(responseTrailers)\n deleteMockDispatch(mockDispatches, key)\n }\n\n function resume () {}\n\n return true\n}\n\nfunction buildMockDispatch () {\n const agent = this[kMockAgent]\n const origin = this[kOrigin]\n const originalDispatch = this[kOriginalDispatch]\n\n return function dispatch (opts, handler) {\n if (agent.isMockActive) {\n try {\n mockDispatch.call(this, opts, handler)\n } catch (error) {\n if (error instanceof MockNotMatchedError) {\n const netConnect = agent[kGetNetConnect]()\n if (netConnect === false) {\n throw new MockNotMatchedError(`${error.message}: subsequent request to origin ${origin} was not allowed (net.connect disabled)`)\n }\n if (checkNetConnect(netConnect, origin)) {\n originalDispatch.call(this, opts, handler)\n } else {\n throw new MockNotMatchedError(`${error.message}: subsequent request to origin ${origin} was not allowed (net.connect is not enabled for this origin)`)\n }\n } else {\n throw error\n }\n }\n } else {\n originalDispatch.call(this, opts, handler)\n }\n }\n}\n\nfunction checkNetConnect (netConnect, origin) {\n const url = new URL(origin)\n if (netConnect === true) {\n return true\n } else if (Array.isArray(netConnect) && netConnect.some((matcher) => matchValue(matcher, url.host))) {\n return true\n }\n return false\n}\n\nfunction buildMockOptions (opts) {\n if (opts) {\n const { agent, ...mockOptions } = opts\n return mockOptions\n }\n}\n\nmodule.exports = {\n getResponseData,\n getMockDispatch,\n addMockDispatch,\n deleteMockDispatch,\n buildKey,\n generateKeyValues,\n matchValue,\n getResponse,\n getStatusText,\n mockDispatch,\n buildMockDispatch,\n checkNetConnect,\n buildMockOptions,\n getHeaderByName\n}\n","'use strict'\n\nconst { getResponseData, buildKey, addMockDispatch } = require('./mock-utils')\nconst {\n kDispatches,\n kDispatchKey,\n kDefaultHeaders,\n kDefaultTrailers,\n kContentLength,\n kMockDispatch\n} = require('./mock-symbols')\nconst { InvalidArgumentError } = require('../core/errors')\nconst { buildURL } = require('../core/util')\n\n/**\n * Defines the scope API for an interceptor reply\n */\nclass MockScope {\n constructor (mockDispatch) {\n this[kMockDispatch] = mockDispatch\n }\n\n /**\n * Delay a reply by a set amount in ms.\n */\n delay (waitInMs) {\n if (typeof waitInMs !== 'number' || !Number.isInteger(waitInMs) || waitInMs <= 0) {\n throw new InvalidArgumentError('waitInMs must be a valid integer > 0')\n }\n\n this[kMockDispatch].delay = waitInMs\n return this\n }\n\n /**\n * For a defined reply, never mark as consumed.\n */\n persist () {\n this[kMockDispatch].persist = true\n return this\n }\n\n /**\n * Allow one to define a reply for a set amount of matching requests.\n */\n times (repeatTimes) {\n if (typeof repeatTimes !== 'number' || !Number.isInteger(repeatTimes) || repeatTimes <= 0) {\n throw new InvalidArgumentError('repeatTimes must be a valid integer > 0')\n }\n\n this[kMockDispatch].times = repeatTimes\n return this\n }\n}\n\n/**\n * Defines an interceptor for a Mock\n */\nclass MockInterceptor {\n constructor (opts, mockDispatches) {\n if (typeof opts !== 'object') {\n throw new InvalidArgumentError('opts must be an object')\n }\n if (typeof opts.path === 'undefined') {\n throw new InvalidArgumentError('opts.path must be defined')\n }\n if (typeof opts.method === 'undefined') {\n opts.method = 'GET'\n }\n // See https://github.com/nodejs/undici/issues/1245\n // As per RFC 3986, clients are not supposed to send URI\n // fragments to servers when they retrieve a document,\n if (typeof opts.path === 'string') {\n if (opts.query) {\n opts.path = buildURL(opts.path, opts.query)\n } else {\n // Matches https://github.com/nodejs/undici/blob/main/lib/fetch/index.js#L1811\n const parsedURL = new URL(opts.path, 'data://')\n opts.path = parsedURL.pathname + parsedURL.search\n }\n }\n if (typeof opts.method === 'string') {\n opts.method = opts.method.toUpperCase()\n }\n\n this[kDispatchKey] = buildKey(opts)\n this[kDispatches] = mockDispatches\n this[kDefaultHeaders] = {}\n this[kDefaultTrailers] = {}\n this[kContentLength] = false\n }\n\n createMockScopeDispatchData (statusCode, data, responseOptions = {}) {\n const responseData = getResponseData(data)\n const contentLength = this[kContentLength] ? { 'content-length': responseData.length } : {}\n const headers = { ...this[kDefaultHeaders], ...contentLength, ...responseOptions.headers }\n const trailers = { ...this[kDefaultTrailers], ...responseOptions.trailers }\n\n return { statusCode, data, headers, trailers }\n }\n\n validateReplyParameters (statusCode, data, responseOptions) {\n if (typeof statusCode === 'undefined') {\n throw new InvalidArgumentError('statusCode must be defined')\n }\n if (typeof data === 'undefined') {\n throw new InvalidArgumentError('data must be defined')\n }\n if (typeof responseOptions !== 'object') {\n throw new InvalidArgumentError('responseOptions must be an object')\n }\n }\n\n /**\n * Mock an undici request with a defined reply.\n */\n reply (replyData) {\n // Values of reply aren't available right now as they\n // can only be available when the reply callback is invoked.\n if (typeof replyData === 'function') {\n // We'll first wrap the provided callback in another function,\n // this function will properly resolve the data from the callback\n // when invoked.\n const wrappedDefaultsCallback = (opts) => {\n // Our reply options callback contains the parameter for statusCode, data and options.\n const resolvedData = replyData(opts)\n\n // Check if it is in the right format\n if (typeof resolvedData !== 'object') {\n throw new InvalidArgumentError('reply options callback must return an object')\n }\n\n const { statusCode, data = '', responseOptions = {} } = resolvedData\n this.validateReplyParameters(statusCode, data, responseOptions)\n // Since the values can be obtained immediately we return them\n // from this higher order function that will be resolved later.\n return {\n ...this.createMockScopeDispatchData(statusCode, data, responseOptions)\n }\n }\n\n // Add usual dispatch data, but this time set the data parameter to function that will eventually provide data.\n const newMockDispatch = addMockDispatch(this[kDispatches], this[kDispatchKey], wrappedDefaultsCallback)\n return new MockScope(newMockDispatch)\n }\n\n // We can have either one or three parameters, if we get here,\n // we should have 1-3 parameters. So we spread the arguments of\n // this function to obtain the parameters, since replyData will always\n // just be the statusCode.\n const [statusCode, data = '', responseOptions = {}] = [...arguments]\n this.validateReplyParameters(statusCode, data, responseOptions)\n\n // Send in-already provided data like usual\n const dispatchData = this.createMockScopeDispatchData(statusCode, data, responseOptions)\n const newMockDispatch = addMockDispatch(this[kDispatches], this[kDispatchKey], dispatchData)\n return new MockScope(newMockDispatch)\n }\n\n /**\n * Mock an undici request with a defined error.\n */\n replyWithError (error) {\n if (typeof error === 'undefined') {\n throw new InvalidArgumentError('error must be defined')\n }\n\n const newMockDispatch = addMockDispatch(this[kDispatches], this[kDispatchKey], { error })\n return new MockScope(newMockDispatch)\n }\n\n /**\n * Set default reply headers on the interceptor for subsequent replies\n */\n defaultReplyHeaders (headers) {\n if (typeof headers === 'undefined') {\n throw new InvalidArgumentError('headers must be defined')\n }\n\n this[kDefaultHeaders] = headers\n return this\n }\n\n /**\n * Set default reply trailers on the interceptor for subsequent replies\n */\n defaultReplyTrailers (trailers) {\n if (typeof trailers === 'undefined') {\n throw new InvalidArgumentError('trailers must be defined')\n }\n\n this[kDefaultTrailers] = trailers\n return this\n }\n\n /**\n * Set reply content length header for replies on the interceptor\n */\n replyContentLength () {\n this[kContentLength] = true\n return this\n }\n}\n\nmodule.exports.MockInterceptor = MockInterceptor\nmodule.exports.MockScope = MockScope\n","'use strict'\n\nconst { promisify } = require('util')\nconst Client = require('../client')\nconst { buildMockDispatch } = require('./mock-utils')\nconst {\n kDispatches,\n kMockAgent,\n kClose,\n kOriginalClose,\n kOrigin,\n kOriginalDispatch,\n kConnected\n} = require('./mock-symbols')\nconst { MockInterceptor } = require('./mock-interceptor')\nconst Symbols = require('../core/symbols')\nconst { InvalidArgumentError } = require('../core/errors')\n\n/**\n * MockClient provides an API that extends the Client to influence the mockDispatches.\n */\nclass MockClient extends Client {\n constructor (origin, opts) {\n super(origin, opts)\n\n if (!opts || !opts.agent || typeof opts.agent.dispatch !== 'function') {\n throw new InvalidArgumentError('Argument opts.agent must implement Agent')\n }\n\n this[kMockAgent] = opts.agent\n this[kOrigin] = origin\n this[kDispatches] = []\n this[kConnected] = 1\n this[kOriginalDispatch] = this.dispatch\n this[kOriginalClose] = this.close.bind(this)\n\n this.dispatch = buildMockDispatch.call(this)\n this.close = this[kClose]\n }\n\n get [Symbols.kConnected] () {\n return this[kConnected]\n }\n\n /**\n * Sets up the base interceptor for mocking replies from undici.\n */\n intercept (opts) {\n return new MockInterceptor(opts, this[kDispatches])\n }\n\n async [kClose] () {\n await promisify(this[kOriginalClose])()\n this[kConnected] = 0\n this[kMockAgent][Symbols.kClients].delete(this[kOrigin])\n }\n}\n\nmodule.exports = MockClient\n","'use strict'\n\nconst { promisify } = require('util')\nconst Pool = require('../pool')\nconst { buildMockDispatch } = require('./mock-utils')\nconst {\n kDispatches,\n kMockAgent,\n kClose,\n kOriginalClose,\n kOrigin,\n kOriginalDispatch,\n kConnected\n} = require('./mock-symbols')\nconst { MockInterceptor } = require('./mock-interceptor')\nconst Symbols = require('../core/symbols')\nconst { InvalidArgumentError } = require('../core/errors')\n\n/**\n * MockPool provides an API that extends the Pool to influence the mockDispatches.\n */\nclass MockPool extends Pool {\n constructor (origin, opts) {\n super(origin, opts)\n\n if (!opts || !opts.agent || typeof opts.agent.dispatch !== 'function') {\n throw new InvalidArgumentError('Argument opts.agent must implement Agent')\n }\n\n this[kMockAgent] = opts.agent\n this[kOrigin] = origin\n this[kDispatches] = []\n this[kConnected] = 1\n this[kOriginalDispatch] = this.dispatch\n this[kOriginalClose] = this.close.bind(this)\n\n this.dispatch = buildMockDispatch.call(this)\n this.close = this[kClose]\n }\n\n get [Symbols.kConnected] () {\n return this[kConnected]\n }\n\n /**\n * Sets up the base interceptor for mocking replies from undici.\n */\n intercept (opts) {\n return new MockInterceptor(opts, this[kDispatches])\n }\n\n async [kClose] () {\n await promisify(this[kOriginalClose])()\n this[kConnected] = 0\n this[kMockAgent][Symbols.kClients].delete(this[kOrigin])\n }\n}\n\nmodule.exports = MockPool\n","'use strict'\n\nconst singulars = {\n pronoun: 'it',\n is: 'is',\n was: 'was',\n this: 'this'\n}\n\nconst plurals = {\n pronoun: 'they',\n is: 'are',\n was: 'were',\n this: 'these'\n}\n\nmodule.exports = class Pluralizer {\n constructor (singular, plural) {\n this.singular = singular\n this.plural = plural\n }\n\n pluralize (count) {\n const one = count === 1\n const keys = one ? singulars : plurals\n const noun = one ? this.singular : this.plural\n return { ...keys, count, noun }\n }\n}\n","'use strict'\n\nconst { Transform } = require('stream')\nconst { Console } = require('console')\n\n/**\n * Gets the output of `console.table(…)` as a string.\n */\nmodule.exports = class PendingInterceptorsFormatter {\n constructor ({ disableColors } = {}) {\n this.transform = new Transform({\n transform (chunk, _enc, cb) {\n cb(null, chunk)\n }\n })\n\n this.logger = new Console({\n stdout: this.transform,\n inspectOptions: {\n colors: !disableColors && !process.env.CI\n }\n })\n }\n\n format (pendingInterceptors) {\n const withPrettyHeaders = pendingInterceptors.map(\n ({ method, path, data: { statusCode }, persist, times, timesInvoked, origin }) => ({\n Method: method,\n Origin: origin,\n Path: path,\n 'Status code': statusCode,\n Persistent: persist ? '✅' : '❌',\n Invocations: timesInvoked,\n Remaining: persist ? Infinity : times - timesInvoked\n }))\n\n this.logger.table(withPrettyHeaders)\n return this.transform.read().toString()\n }\n}\n","'use strict'\n\nconst { kClients } = require('../core/symbols')\nconst Agent = require('../agent')\nconst {\n kAgent,\n kMockAgentSet,\n kMockAgentGet,\n kDispatches,\n kIsMockActive,\n kNetConnect,\n kGetNetConnect,\n kOptions,\n kFactory\n} = require('./mock-symbols')\nconst MockClient = require('./mock-client')\nconst MockPool = require('./mock-pool')\nconst { matchValue, buildMockOptions } = require('./mock-utils')\nconst { InvalidArgumentError, UndiciError } = require('../core/errors')\nconst Dispatcher = require('../dispatcher')\nconst Pluralizer = require('./pluralizer')\nconst PendingInterceptorsFormatter = require('./pending-interceptors-formatter')\n\nclass FakeWeakRef {\n constructor (value) {\n this.value = value\n }\n\n deref () {\n return this.value\n }\n}\n\nclass MockAgent extends Dispatcher {\n constructor (opts) {\n super(opts)\n\n this[kNetConnect] = true\n this[kIsMockActive] = true\n\n // Instantiate Agent and encapsulate\n if ((opts && opts.agent && typeof opts.agent.dispatch !== 'function')) {\n throw new InvalidArgumentError('Argument opts.agent must implement Agent')\n }\n const agent = opts && opts.agent ? opts.agent : new Agent(opts)\n this[kAgent] = agent\n\n this[kClients] = agent[kClients]\n this[kOptions] = buildMockOptions(opts)\n }\n\n get (origin) {\n let dispatcher = this[kMockAgentGet](origin)\n\n if (!dispatcher) {\n dispatcher = this[kFactory](origin)\n this[kMockAgentSet](origin, dispatcher)\n }\n return dispatcher\n }\n\n dispatch (opts, handler) {\n // Call MockAgent.get to perform additional setup before dispatching as normal\n this.get(opts.origin)\n return this[kAgent].dispatch(opts, handler)\n }\n\n async close () {\n await this[kAgent].close()\n this[kClients].clear()\n }\n\n deactivate () {\n this[kIsMockActive] = false\n }\n\n activate () {\n this[kIsMockActive] = true\n }\n\n enableNetConnect (matcher) {\n if (typeof matcher === 'string' || typeof matcher === 'function' || matcher instanceof RegExp) {\n if (Array.isArray(this[kNetConnect])) {\n this[kNetConnect].push(matcher)\n } else {\n this[kNetConnect] = [matcher]\n }\n } else if (typeof matcher === 'undefined') {\n this[kNetConnect] = true\n } else {\n throw new InvalidArgumentError('Unsupported matcher. Must be one of String|Function|RegExp.')\n }\n }\n\n disableNetConnect () {\n this[kNetConnect] = false\n }\n\n // This is required to bypass issues caused by using global symbols - see:\n // https://github.com/nodejs/undici/issues/1447\n get isMockActive () {\n return this[kIsMockActive]\n }\n\n [kMockAgentSet] (origin, dispatcher) {\n this[kClients].set(origin, new FakeWeakRef(dispatcher))\n }\n\n [kFactory] (origin) {\n const mockOptions = Object.assign({ agent: this }, this[kOptions])\n return this[kOptions] && this[kOptions].connections === 1\n ? new MockClient(origin, mockOptions)\n : new MockPool(origin, mockOptions)\n }\n\n [kMockAgentGet] (origin) {\n // First check if we can immediately find it\n const ref = this[kClients].get(origin)\n if (ref) {\n return ref.deref()\n }\n\n // If the origin is not a string create a dummy parent pool and return to user\n if (typeof origin !== 'string') {\n const dispatcher = this[kFactory]('http://localhost:9999')\n this[kMockAgentSet](origin, dispatcher)\n return dispatcher\n }\n\n // If we match, create a pool and assign the same dispatches\n for (const [keyMatcher, nonExplicitRef] of Array.from(this[kClients])) {\n const nonExplicitDispatcher = nonExplicitRef.deref()\n if (nonExplicitDispatcher && typeof keyMatcher !== 'string' && matchValue(keyMatcher, origin)) {\n const dispatcher = this[kFactory](origin)\n this[kMockAgentSet](origin, dispatcher)\n dispatcher[kDispatches] = nonExplicitDispatcher[kDispatches]\n return dispatcher\n }\n }\n }\n\n [kGetNetConnect] () {\n return this[kNetConnect]\n }\n\n pendingInterceptors () {\n const mockAgentClients = this[kClients]\n\n return Array.from(mockAgentClients.entries())\n .flatMap(([origin, scope]) => scope.deref()[kDispatches].map(dispatch => ({ ...dispatch, origin })))\n .filter(({ pending }) => pending)\n }\n\n assertNoPendingInterceptors ({ pendingInterceptorsFormatter = new PendingInterceptorsFormatter() } = {}) {\n const pending = this.pendingInterceptors()\n\n if (pending.length === 0) {\n return\n }\n\n const pluralizer = new Pluralizer('interceptor', 'interceptors').pluralize(pending.length)\n\n throw new UndiciError(`\n${pluralizer.count} ${pluralizer.noun} ${pluralizer.is} pending:\n\n${pendingInterceptorsFormatter.format(pending)}\n`.trim())\n }\n}\n\nmodule.exports = MockAgent\n","'use strict'\n\nconst { kProxy, kClose, kDestroy, kInterceptors } = require('./core/symbols')\nconst { URL } = require('url')\nconst Agent = require('./agent')\nconst Pool = require('./pool')\nconst DispatcherBase = require('./dispatcher-base')\nconst { InvalidArgumentError, RequestAbortedError } = require('./core/errors')\nconst buildConnector = require('./core/connect')\n\nconst kAgent = Symbol('proxy agent')\nconst kClient = Symbol('proxy client')\nconst kProxyHeaders = Symbol('proxy headers')\nconst kRequestTls = Symbol('request tls settings')\nconst kProxyTls = Symbol('proxy tls settings')\nconst kConnectEndpoint = Symbol('connect endpoint function')\n\nfunction defaultProtocolPort (protocol) {\n return protocol === 'https:' ? 443 : 80\n}\n\nfunction buildProxyOptions (opts) {\n if (typeof opts === 'string') {\n opts = { uri: opts }\n }\n\n if (!opts || !opts.uri) {\n throw new InvalidArgumentError('Proxy opts.uri is mandatory')\n }\n\n return {\n uri: opts.uri,\n protocol: opts.protocol || 'https'\n }\n}\n\nfunction defaultFactory (origin, opts) {\n return new Pool(origin, opts)\n}\n\nclass ProxyAgent extends DispatcherBase {\n constructor (opts) {\n super(opts)\n this[kProxy] = buildProxyOptions(opts)\n this[kAgent] = new Agent(opts)\n this[kInterceptors] = opts.interceptors && opts.interceptors.ProxyAgent && Array.isArray(opts.interceptors.ProxyAgent)\n ? opts.interceptors.ProxyAgent\n : []\n\n if (typeof opts === 'string') {\n opts = { uri: opts }\n }\n\n if (!opts || !opts.uri) {\n throw new InvalidArgumentError('Proxy opts.uri is mandatory')\n }\n\n const { clientFactory = defaultFactory } = opts\n\n if (typeof clientFactory !== 'function') {\n throw new InvalidArgumentError('Proxy opts.clientFactory must be a function.')\n }\n\n this[kRequestTls] = opts.requestTls\n this[kProxyTls] = opts.proxyTls\n this[kProxyHeaders] = opts.headers || {}\n\n const resolvedUrl = new URL(opts.uri)\n const { origin, port, host, username, password } = resolvedUrl\n\n if (opts.auth && opts.token) {\n throw new InvalidArgumentError('opts.auth cannot be used in combination with opts.token')\n } else if (opts.auth) {\n /* @deprecated in favour of opts.token */\n this[kProxyHeaders]['proxy-authorization'] = `Basic ${opts.auth}`\n } else if (opts.token) {\n this[kProxyHeaders]['proxy-authorization'] = opts.token\n } else if (username && password) {\n this[kProxyHeaders]['proxy-authorization'] = `Basic ${Buffer.from(`${decodeURIComponent(username)}:${decodeURIComponent(password)}`).toString('base64')}`\n }\n\n const connect = buildConnector({ ...opts.proxyTls })\n this[kConnectEndpoint] = buildConnector({ ...opts.requestTls })\n this[kClient] = clientFactory(resolvedUrl, { connect })\n this[kAgent] = new Agent({\n ...opts,\n connect: async (opts, callback) => {\n let requestedHost = opts.host\n if (!opts.port) {\n requestedHost += `:${defaultProtocolPort(opts.protocol)}`\n }\n try {\n const { socket, statusCode } = await this[kClient].connect({\n origin,\n port,\n path: requestedHost,\n signal: opts.signal,\n headers: {\n ...this[kProxyHeaders],\n host\n }\n })\n if (statusCode !== 200) {\n socket.on('error', () => {}).destroy()\n callback(new RequestAbortedError(`Proxy response (${statusCode}) !== 200 when HTTP Tunneling`))\n }\n if (opts.protocol !== 'https:') {\n callback(null, socket)\n return\n }\n let servername\n if (this[kRequestTls]) {\n servername = this[kRequestTls].servername\n } else {\n servername = opts.servername\n }\n this[kConnectEndpoint]({ ...opts, servername, httpSocket: socket }, callback)\n } catch (err) {\n callback(err)\n }\n }\n })\n }\n\n dispatch (opts, handler) {\n const { host } = new URL(opts.origin)\n const headers = buildHeaders(opts.headers)\n throwIfProxyAuthIsSent(headers)\n return this[kAgent].dispatch(\n {\n ...opts,\n headers: {\n ...headers,\n host\n }\n },\n handler\n )\n }\n\n async [kClose] () {\n await this[kAgent].close()\n await this[kClient].close()\n }\n\n async [kDestroy] () {\n await this[kAgent].destroy()\n await this[kClient].destroy()\n }\n}\n\n/**\n * @param {string[] | Record} headers\n * @returns {Record}\n */\nfunction buildHeaders (headers) {\n // When using undici.fetch, the headers list is stored\n // as an array.\n if (Array.isArray(headers)) {\n /** @type {Record} */\n const headersPair = {}\n\n for (let i = 0; i < headers.length; i += 2) {\n headersPair[headers[i]] = headers[i + 1]\n }\n\n return headersPair\n }\n\n return headers\n}\n\n/**\n * @param {Record} headers\n *\n * Previous versions of ProxyAgent suggests the Proxy-Authorization in request headers\n * Nevertheless, it was changed and to avoid a security vulnerability by end users\n * this check was created.\n * It should be removed in the next major version for performance reasons\n */\nfunction throwIfProxyAuthIsSent (headers) {\n const existProxyAuth = headers && Object.keys(headers)\n .find((key) => key.toLowerCase() === 'proxy-authorization')\n if (existProxyAuth) {\n throw new InvalidArgumentError('Proxy-Authorization should be sent in ProxyAgent constructor')\n }\n}\n\nmodule.exports = ProxyAgent\n","const assert = require('assert')\n\nconst { kRetryHandlerDefaultRetry } = require('../core/symbols')\nconst { RequestRetryError } = require('../core/errors')\nconst { isDisturbed, parseHeaders, parseRangeHeader } = require('../core/util')\n\nfunction calculateRetryAfterHeader (retryAfter) {\n const current = Date.now()\n const diff = new Date(retryAfter).getTime() - current\n\n return diff\n}\n\nclass RetryHandler {\n constructor (opts, handlers) {\n const { retryOptions, ...dispatchOpts } = opts\n const {\n // Retry scoped\n retry: retryFn,\n maxRetries,\n maxTimeout,\n minTimeout,\n timeoutFactor,\n // Response scoped\n methods,\n errorCodes,\n retryAfter,\n statusCodes\n } = retryOptions ?? {}\n\n this.dispatch = handlers.dispatch\n this.handler = handlers.handler\n this.opts = dispatchOpts\n this.abort = null\n this.aborted = false\n this.retryOpts = {\n retry: retryFn ?? RetryHandler[kRetryHandlerDefaultRetry],\n retryAfter: retryAfter ?? true,\n maxTimeout: maxTimeout ?? 30 * 1000, // 30s,\n timeout: minTimeout ?? 500, // .5s\n timeoutFactor: timeoutFactor ?? 2,\n maxRetries: maxRetries ?? 5,\n // What errors we should retry\n methods: methods ?? ['GET', 'HEAD', 'OPTIONS', 'PUT', 'DELETE', 'TRACE'],\n // Indicates which errors to retry\n statusCodes: statusCodes ?? [500, 502, 503, 504, 429],\n // List of errors to retry\n errorCodes: errorCodes ?? [\n 'ECONNRESET',\n 'ECONNREFUSED',\n 'ENOTFOUND',\n 'ENETDOWN',\n 'ENETUNREACH',\n 'EHOSTDOWN',\n 'EHOSTUNREACH',\n 'EPIPE'\n ]\n }\n\n this.retryCount = 0\n this.start = 0\n this.end = null\n this.etag = null\n this.resume = null\n\n // Handle possible onConnect duplication\n this.handler.onConnect(reason => {\n this.aborted = true\n if (this.abort) {\n this.abort(reason)\n } else {\n this.reason = reason\n }\n })\n }\n\n onRequestSent () {\n if (this.handler.onRequestSent) {\n this.handler.onRequestSent()\n }\n }\n\n onUpgrade (statusCode, headers, socket) {\n if (this.handler.onUpgrade) {\n this.handler.onUpgrade(statusCode, headers, socket)\n }\n }\n\n onConnect (abort) {\n if (this.aborted) {\n abort(this.reason)\n } else {\n this.abort = abort\n }\n }\n\n onBodySent (chunk) {\n if (this.handler.onBodySent) return this.handler.onBodySent(chunk)\n }\n\n static [kRetryHandlerDefaultRetry] (err, { state, opts }, cb) {\n const { statusCode, code, headers } = err\n const { method, retryOptions } = opts\n const {\n maxRetries,\n timeout,\n maxTimeout,\n timeoutFactor,\n statusCodes,\n errorCodes,\n methods\n } = retryOptions\n let { counter, currentTimeout } = state\n\n currentTimeout =\n currentTimeout != null && currentTimeout > 0 ? currentTimeout : timeout\n\n // Any code that is not a Undici's originated and allowed to retry\n if (\n code &&\n code !== 'UND_ERR_REQ_RETRY' &&\n code !== 'UND_ERR_SOCKET' &&\n !errorCodes.includes(code)\n ) {\n cb(err)\n return\n }\n\n // If a set of method are provided and the current method is not in the list\n if (Array.isArray(methods) && !methods.includes(method)) {\n cb(err)\n return\n }\n\n // If a set of status code are provided and the current status code is not in the list\n if (\n statusCode != null &&\n Array.isArray(statusCodes) &&\n !statusCodes.includes(statusCode)\n ) {\n cb(err)\n return\n }\n\n // If we reached the max number of retries\n if (counter > maxRetries) {\n cb(err)\n return\n }\n\n let retryAfterHeader = headers != null && headers['retry-after']\n if (retryAfterHeader) {\n retryAfterHeader = Number(retryAfterHeader)\n retryAfterHeader = isNaN(retryAfterHeader)\n ? calculateRetryAfterHeader(retryAfterHeader)\n : retryAfterHeader * 1e3 // Retry-After is in seconds\n }\n\n const retryTimeout =\n retryAfterHeader > 0\n ? Math.min(retryAfterHeader, maxTimeout)\n : Math.min(currentTimeout * timeoutFactor ** counter, maxTimeout)\n\n state.currentTimeout = retryTimeout\n\n setTimeout(() => cb(null), retryTimeout)\n }\n\n onHeaders (statusCode, rawHeaders, resume, statusMessage) {\n const headers = parseHeaders(rawHeaders)\n\n this.retryCount += 1\n\n if (statusCode >= 300) {\n this.abort(\n new RequestRetryError('Request failed', statusCode, {\n headers,\n count: this.retryCount\n })\n )\n return false\n }\n\n // Checkpoint for resume from where we left it\n if (this.resume != null) {\n this.resume = null\n\n if (statusCode !== 206) {\n return true\n }\n\n const contentRange = parseRangeHeader(headers['content-range'])\n // If no content range\n if (!contentRange) {\n this.abort(\n new RequestRetryError('Content-Range mismatch', statusCode, {\n headers,\n count: this.retryCount\n })\n )\n return false\n }\n\n // Let's start with a weak etag check\n if (this.etag != null && this.etag !== headers.etag) {\n this.abort(\n new RequestRetryError('ETag mismatch', statusCode, {\n headers,\n count: this.retryCount\n })\n )\n return false\n }\n\n const { start, size, end = size } = contentRange\n\n assert(this.start === start, 'content-range mismatch')\n assert(this.end == null || this.end === end, 'content-range mismatch')\n\n this.resume = resume\n return true\n }\n\n if (this.end == null) {\n if (statusCode === 206) {\n // First time we receive 206\n const range = parseRangeHeader(headers['content-range'])\n\n if (range == null) {\n return this.handler.onHeaders(\n statusCode,\n rawHeaders,\n resume,\n statusMessage\n )\n }\n\n const { start, size, end = size } = range\n\n assert(\n start != null && Number.isFinite(start) && this.start !== start,\n 'content-range mismatch'\n )\n assert(Number.isFinite(start))\n assert(\n end != null && Number.isFinite(end) && this.end !== end,\n 'invalid content-length'\n )\n\n this.start = start\n this.end = end\n }\n\n // We make our best to checkpoint the body for further range headers\n if (this.end == null) {\n const contentLength = headers['content-length']\n this.end = contentLength != null ? Number(contentLength) : null\n }\n\n assert(Number.isFinite(this.start))\n assert(\n this.end == null || Number.isFinite(this.end),\n 'invalid content-length'\n )\n\n this.resume = resume\n this.etag = headers.etag != null ? headers.etag : null\n\n return this.handler.onHeaders(\n statusCode,\n rawHeaders,\n resume,\n statusMessage\n )\n }\n\n const err = new RequestRetryError('Request failed', statusCode, {\n headers,\n count: this.retryCount\n })\n\n this.abort(err)\n\n return false\n }\n\n onData (chunk) {\n this.start += chunk.length\n\n return this.handler.onData(chunk)\n }\n\n onComplete (rawTrailers) {\n this.retryCount = 0\n return this.handler.onComplete(rawTrailers)\n }\n\n onError (err) {\n if (this.aborted || isDisturbed(this.opts.body)) {\n return this.handler.onError(err)\n }\n\n this.retryOpts.retry(\n err,\n {\n state: { counter: this.retryCount++, currentTimeout: this.retryAfter },\n opts: { retryOptions: this.retryOpts, ...this.opts }\n },\n onRetry.bind(this)\n )\n\n function onRetry (err) {\n if (err != null || this.aborted || isDisturbed(this.opts.body)) {\n return this.handler.onError(err)\n }\n\n if (this.start !== 0) {\n this.opts = {\n ...this.opts,\n headers: {\n ...this.opts.headers,\n range: `bytes=${this.start}-${this.end ?? ''}`\n }\n }\n }\n\n try {\n this.dispatch(this.opts, this)\n } catch (err) {\n this.handler.onError(err)\n }\n }\n }\n}\n\nmodule.exports = RetryHandler\n","'use strict'\n\n// We include a version number for the Dispatcher API. In case of breaking changes,\n// this version number must be increased to avoid conflicts.\nconst globalDispatcher = Symbol.for('undici.globalDispatcher.1')\nconst { InvalidArgumentError } = require('./core/errors')\nconst Agent = require('./agent')\n\nif (getGlobalDispatcher() === undefined) {\n setGlobalDispatcher(new Agent())\n}\n\nfunction setGlobalDispatcher (agent) {\n if (!agent || typeof agent.dispatch !== 'function') {\n throw new InvalidArgumentError('Argument agent must implement Agent')\n }\n Object.defineProperty(globalThis, globalDispatcher, {\n value: agent,\n writable: true,\n enumerable: false,\n configurable: false\n })\n}\n\nfunction getGlobalDispatcher () {\n return globalThis[globalDispatcher]\n}\n\nmodule.exports = {\n setGlobalDispatcher,\n getGlobalDispatcher\n}\n","'use strict'\n\nmodule.exports = class DecoratorHandler {\n constructor (handler) {\n this.handler = handler\n }\n\n onConnect (...args) {\n return this.handler.onConnect(...args)\n }\n\n onError (...args) {\n return this.handler.onError(...args)\n }\n\n onUpgrade (...args) {\n return this.handler.onUpgrade(...args)\n }\n\n onHeaders (...args) {\n return this.handler.onHeaders(...args)\n }\n\n onData (...args) {\n return this.handler.onData(...args)\n }\n\n onComplete (...args) {\n return this.handler.onComplete(...args)\n }\n\n onBodySent (...args) {\n return this.handler.onBodySent(...args)\n }\n}\n","// https://github.com/Ethan-Arrowood/undici-fetch\n\n'use strict'\n\nconst { kHeadersList, kConstruct } = require('../core/symbols')\nconst { kGuard } = require('./symbols')\nconst { kEnumerableProperty } = require('../core/util')\nconst {\n makeIterator,\n isValidHeaderName,\n isValidHeaderValue\n} = require('./util')\nconst util = require('util')\nconst { webidl } = require('./webidl')\nconst assert = require('assert')\n\nconst kHeadersMap = Symbol('headers map')\nconst kHeadersSortedMap = Symbol('headers map sorted')\n\n/**\n * @param {number} code\n */\nfunction isHTTPWhiteSpaceCharCode (code) {\n return code === 0x00a || code === 0x00d || code === 0x009 || code === 0x020\n}\n\n/**\n * @see https://fetch.spec.whatwg.org/#concept-header-value-normalize\n * @param {string} potentialValue\n */\nfunction headerValueNormalize (potentialValue) {\n // To normalize a byte sequence potentialValue, remove\n // any leading and trailing HTTP whitespace bytes from\n // potentialValue.\n let i = 0; let j = potentialValue.length\n\n while (j > i && isHTTPWhiteSpaceCharCode(potentialValue.charCodeAt(j - 1))) --j\n while (j > i && isHTTPWhiteSpaceCharCode(potentialValue.charCodeAt(i))) ++i\n\n return i === 0 && j === potentialValue.length ? potentialValue : potentialValue.substring(i, j)\n}\n\nfunction fill (headers, object) {\n // To fill a Headers object headers with a given object object, run these steps:\n\n // 1. If object is a sequence, then for each header in object:\n // Note: webidl conversion to array has already been done.\n if (Array.isArray(object)) {\n for (let i = 0; i < object.length; ++i) {\n const header = object[i]\n // 1. If header does not contain exactly two items, then throw a TypeError.\n if (header.length !== 2) {\n throw webidl.errors.exception({\n header: 'Headers constructor',\n message: `expected name/value pair to be length 2, found ${header.length}.`\n })\n }\n\n // 2. Append (header’s first item, header’s second item) to headers.\n appendHeader(headers, header[0], header[1])\n }\n } else if (typeof object === 'object' && object !== null) {\n // Note: null should throw\n\n // 2. Otherwise, object is a record, then for each key → value in object,\n // append (key, value) to headers\n const keys = Object.keys(object)\n for (let i = 0; i < keys.length; ++i) {\n appendHeader(headers, keys[i], object[keys[i]])\n }\n } else {\n throw webidl.errors.conversionFailed({\n prefix: 'Headers constructor',\n argument: 'Argument 1',\n types: ['sequence>', 'record']\n })\n }\n}\n\n/**\n * @see https://fetch.spec.whatwg.org/#concept-headers-append\n */\nfunction appendHeader (headers, name, value) {\n // 1. Normalize value.\n value = headerValueNormalize(value)\n\n // 2. If name is not a header name or value is not a\n // header value, then throw a TypeError.\n if (!isValidHeaderName(name)) {\n throw webidl.errors.invalidArgument({\n prefix: 'Headers.append',\n value: name,\n type: 'header name'\n })\n } else if (!isValidHeaderValue(value)) {\n throw webidl.errors.invalidArgument({\n prefix: 'Headers.append',\n value,\n type: 'header value'\n })\n }\n\n // 3. If headers’s guard is \"immutable\", then throw a TypeError.\n // 4. Otherwise, if headers’s guard is \"request\" and name is a\n // forbidden header name, return.\n // Note: undici does not implement forbidden header names\n if (headers[kGuard] === 'immutable') {\n throw new TypeError('immutable')\n } else if (headers[kGuard] === 'request-no-cors') {\n // 5. Otherwise, if headers’s guard is \"request-no-cors\":\n // TODO\n }\n\n // 6. Otherwise, if headers’s guard is \"response\" and name is a\n // forbidden response-header name, return.\n\n // 7. Append (name, value) to headers’s header list.\n return headers[kHeadersList].append(name, value)\n\n // 8. If headers’s guard is \"request-no-cors\", then remove\n // privileged no-CORS request headers from headers\n}\n\nclass HeadersList {\n /** @type {[string, string][]|null} */\n cookies = null\n\n constructor (init) {\n if (init instanceof HeadersList) {\n this[kHeadersMap] = new Map(init[kHeadersMap])\n this[kHeadersSortedMap] = init[kHeadersSortedMap]\n this.cookies = init.cookies === null ? null : [...init.cookies]\n } else {\n this[kHeadersMap] = new Map(init)\n this[kHeadersSortedMap] = null\n }\n }\n\n // https://fetch.spec.whatwg.org/#header-list-contains\n contains (name) {\n // A header list list contains a header name name if list\n // contains a header whose name is a byte-case-insensitive\n // match for name.\n name = name.toLowerCase()\n\n return this[kHeadersMap].has(name)\n }\n\n clear () {\n this[kHeadersMap].clear()\n this[kHeadersSortedMap] = null\n this.cookies = null\n }\n\n // https://fetch.spec.whatwg.org/#concept-header-list-append\n append (name, value) {\n this[kHeadersSortedMap] = null\n\n // 1. If list contains name, then set name to the first such\n // header’s name.\n const lowercaseName = name.toLowerCase()\n const exists = this[kHeadersMap].get(lowercaseName)\n\n // 2. Append (name, value) to list.\n if (exists) {\n const delimiter = lowercaseName === 'cookie' ? '; ' : ', '\n this[kHeadersMap].set(lowercaseName, {\n name: exists.name,\n value: `${exists.value}${delimiter}${value}`\n })\n } else {\n this[kHeadersMap].set(lowercaseName, { name, value })\n }\n\n if (lowercaseName === 'set-cookie') {\n this.cookies ??= []\n this.cookies.push(value)\n }\n }\n\n // https://fetch.spec.whatwg.org/#concept-header-list-set\n set (name, value) {\n this[kHeadersSortedMap] = null\n const lowercaseName = name.toLowerCase()\n\n if (lowercaseName === 'set-cookie') {\n this.cookies = [value]\n }\n\n // 1. If list contains name, then set the value of\n // the first such header to value and remove the\n // others.\n // 2. Otherwise, append header (name, value) to list.\n this[kHeadersMap].set(lowercaseName, { name, value })\n }\n\n // https://fetch.spec.whatwg.org/#concept-header-list-delete\n delete (name) {\n this[kHeadersSortedMap] = null\n\n name = name.toLowerCase()\n\n if (name === 'set-cookie') {\n this.cookies = null\n }\n\n this[kHeadersMap].delete(name)\n }\n\n // https://fetch.spec.whatwg.org/#concept-header-list-get\n get (name) {\n const value = this[kHeadersMap].get(name.toLowerCase())\n\n // 1. If list does not contain name, then return null.\n // 2. Return the values of all headers in list whose name\n // is a byte-case-insensitive match for name,\n // separated from each other by 0x2C 0x20, in order.\n return value === undefined ? null : value.value\n }\n\n * [Symbol.iterator] () {\n // use the lowercased name\n for (const [name, { value }] of this[kHeadersMap]) {\n yield [name, value]\n }\n }\n\n get entries () {\n const headers = {}\n\n if (this[kHeadersMap].size) {\n for (const { name, value } of this[kHeadersMap].values()) {\n headers[name] = value\n }\n }\n\n return headers\n }\n}\n\n// https://fetch.spec.whatwg.org/#headers-class\nclass Headers {\n constructor (init = undefined) {\n if (init === kConstruct) {\n return\n }\n this[kHeadersList] = new HeadersList()\n\n // The new Headers(init) constructor steps are:\n\n // 1. Set this’s guard to \"none\".\n this[kGuard] = 'none'\n\n // 2. If init is given, then fill this with init.\n if (init !== undefined) {\n init = webidl.converters.HeadersInit(init)\n fill(this, init)\n }\n }\n\n // https://fetch.spec.whatwg.org/#dom-headers-append\n append (name, value) {\n webidl.brandCheck(this, Headers)\n\n webidl.argumentLengthCheck(arguments, 2, { header: 'Headers.append' })\n\n name = webidl.converters.ByteString(name)\n value = webidl.converters.ByteString(value)\n\n return appendHeader(this, name, value)\n }\n\n // https://fetch.spec.whatwg.org/#dom-headers-delete\n delete (name) {\n webidl.brandCheck(this, Headers)\n\n webidl.argumentLengthCheck(arguments, 1, { header: 'Headers.delete' })\n\n name = webidl.converters.ByteString(name)\n\n // 1. If name is not a header name, then throw a TypeError.\n if (!isValidHeaderName(name)) {\n throw webidl.errors.invalidArgument({\n prefix: 'Headers.delete',\n value: name,\n type: 'header name'\n })\n }\n\n // 2. If this’s guard is \"immutable\", then throw a TypeError.\n // 3. Otherwise, if this’s guard is \"request\" and name is a\n // forbidden header name, return.\n // 4. Otherwise, if this’s guard is \"request-no-cors\", name\n // is not a no-CORS-safelisted request-header name, and\n // name is not a privileged no-CORS request-header name,\n // return.\n // 5. Otherwise, if this’s guard is \"response\" and name is\n // a forbidden response-header name, return.\n // Note: undici does not implement forbidden header names\n if (this[kGuard] === 'immutable') {\n throw new TypeError('immutable')\n } else if (this[kGuard] === 'request-no-cors') {\n // TODO\n }\n\n // 6. If this’s header list does not contain name, then\n // return.\n if (!this[kHeadersList].contains(name)) {\n return\n }\n\n // 7. Delete name from this’s header list.\n // 8. If this’s guard is \"request-no-cors\", then remove\n // privileged no-CORS request headers from this.\n this[kHeadersList].delete(name)\n }\n\n // https://fetch.spec.whatwg.org/#dom-headers-get\n get (name) {\n webidl.brandCheck(this, Headers)\n\n webidl.argumentLengthCheck(arguments, 1, { header: 'Headers.get' })\n\n name = webidl.converters.ByteString(name)\n\n // 1. If name is not a header name, then throw a TypeError.\n if (!isValidHeaderName(name)) {\n throw webidl.errors.invalidArgument({\n prefix: 'Headers.get',\n value: name,\n type: 'header name'\n })\n }\n\n // 2. Return the result of getting name from this’s header\n // list.\n return this[kHeadersList].get(name)\n }\n\n // https://fetch.spec.whatwg.org/#dom-headers-has\n has (name) {\n webidl.brandCheck(this, Headers)\n\n webidl.argumentLengthCheck(arguments, 1, { header: 'Headers.has' })\n\n name = webidl.converters.ByteString(name)\n\n // 1. If name is not a header name, then throw a TypeError.\n if (!isValidHeaderName(name)) {\n throw webidl.errors.invalidArgument({\n prefix: 'Headers.has',\n value: name,\n type: 'header name'\n })\n }\n\n // 2. Return true if this’s header list contains name;\n // otherwise false.\n return this[kHeadersList].contains(name)\n }\n\n // https://fetch.spec.whatwg.org/#dom-headers-set\n set (name, value) {\n webidl.brandCheck(this, Headers)\n\n webidl.argumentLengthCheck(arguments, 2, { header: 'Headers.set' })\n\n name = webidl.converters.ByteString(name)\n value = webidl.converters.ByteString(value)\n\n // 1. Normalize value.\n value = headerValueNormalize(value)\n\n // 2. If name is not a header name or value is not a\n // header value, then throw a TypeError.\n if (!isValidHeaderName(name)) {\n throw webidl.errors.invalidArgument({\n prefix: 'Headers.set',\n value: name,\n type: 'header name'\n })\n } else if (!isValidHeaderValue(value)) {\n throw webidl.errors.invalidArgument({\n prefix: 'Headers.set',\n value,\n type: 'header value'\n })\n }\n\n // 3. If this’s guard is \"immutable\", then throw a TypeError.\n // 4. Otherwise, if this’s guard is \"request\" and name is a\n // forbidden header name, return.\n // 5. Otherwise, if this’s guard is \"request-no-cors\" and\n // name/value is not a no-CORS-safelisted request-header,\n // return.\n // 6. Otherwise, if this’s guard is \"response\" and name is a\n // forbidden response-header name, return.\n // Note: undici does not implement forbidden header names\n if (this[kGuard] === 'immutable') {\n throw new TypeError('immutable')\n } else if (this[kGuard] === 'request-no-cors') {\n // TODO\n }\n\n // 7. Set (name, value) in this’s header list.\n // 8. If this’s guard is \"request-no-cors\", then remove\n // privileged no-CORS request headers from this\n this[kHeadersList].set(name, value)\n }\n\n // https://fetch.spec.whatwg.org/#dom-headers-getsetcookie\n getSetCookie () {\n webidl.brandCheck(this, Headers)\n\n // 1. If this’s header list does not contain `Set-Cookie`, then return « ».\n // 2. Return the values of all headers in this’s header list whose name is\n // a byte-case-insensitive match for `Set-Cookie`, in order.\n\n const list = this[kHeadersList].cookies\n\n if (list) {\n return [...list]\n }\n\n return []\n }\n\n // https://fetch.spec.whatwg.org/#concept-header-list-sort-and-combine\n get [kHeadersSortedMap] () {\n if (this[kHeadersList][kHeadersSortedMap]) {\n return this[kHeadersList][kHeadersSortedMap]\n }\n\n // 1. Let headers be an empty list of headers with the key being the name\n // and value the value.\n const headers = []\n\n // 2. Let names be the result of convert header names to a sorted-lowercase\n // set with all the names of the headers in list.\n const names = [...this[kHeadersList]].sort((a, b) => a[0] < b[0] ? -1 : 1)\n const cookies = this[kHeadersList].cookies\n\n // 3. For each name of names:\n for (let i = 0; i < names.length; ++i) {\n const [name, value] = names[i]\n // 1. If name is `set-cookie`, then:\n if (name === 'set-cookie') {\n // 1. Let values be a list of all values of headers in list whose name\n // is a byte-case-insensitive match for name, in order.\n\n // 2. For each value of values:\n // 1. Append (name, value) to headers.\n for (let j = 0; j < cookies.length; ++j) {\n headers.push([name, cookies[j]])\n }\n } else {\n // 2. Otherwise:\n\n // 1. Let value be the result of getting name from list.\n\n // 2. Assert: value is non-null.\n assert(value !== null)\n\n // 3. Append (name, value) to headers.\n headers.push([name, value])\n }\n }\n\n this[kHeadersList][kHeadersSortedMap] = headers\n\n // 4. Return headers.\n return headers\n }\n\n keys () {\n webidl.brandCheck(this, Headers)\n\n if (this[kGuard] === 'immutable') {\n const value = this[kHeadersSortedMap]\n return makeIterator(() => value, 'Headers',\n 'key')\n }\n\n return makeIterator(\n () => [...this[kHeadersSortedMap].values()],\n 'Headers',\n 'key'\n )\n }\n\n values () {\n webidl.brandCheck(this, Headers)\n\n if (this[kGuard] === 'immutable') {\n const value = this[kHeadersSortedMap]\n return makeIterator(() => value, 'Headers',\n 'value')\n }\n\n return makeIterator(\n () => [...this[kHeadersSortedMap].values()],\n 'Headers',\n 'value'\n )\n }\n\n entries () {\n webidl.brandCheck(this, Headers)\n\n if (this[kGuard] === 'immutable') {\n const value = this[kHeadersSortedMap]\n return makeIterator(() => value, 'Headers',\n 'key+value')\n }\n\n return makeIterator(\n () => [...this[kHeadersSortedMap].values()],\n 'Headers',\n 'key+value'\n )\n }\n\n /**\n * @param {(value: string, key: string, self: Headers) => void} callbackFn\n * @param {unknown} thisArg\n */\n forEach (callbackFn, thisArg = globalThis) {\n webidl.brandCheck(this, Headers)\n\n webidl.argumentLengthCheck(arguments, 1, { header: 'Headers.forEach' })\n\n if (typeof callbackFn !== 'function') {\n throw new TypeError(\n \"Failed to execute 'forEach' on 'Headers': parameter 1 is not of type 'Function'.\"\n )\n }\n\n for (const [key, value] of this) {\n callbackFn.apply(thisArg, [value, key, this])\n }\n }\n\n [Symbol.for('nodejs.util.inspect.custom')] () {\n webidl.brandCheck(this, Headers)\n\n return this[kHeadersList]\n }\n}\n\nHeaders.prototype[Symbol.iterator] = Headers.prototype.entries\n\nObject.defineProperties(Headers.prototype, {\n append: kEnumerableProperty,\n delete: kEnumerableProperty,\n get: kEnumerableProperty,\n has: kEnumerableProperty,\n set: kEnumerableProperty,\n getSetCookie: kEnumerableProperty,\n keys: kEnumerableProperty,\n values: kEnumerableProperty,\n entries: kEnumerableProperty,\n forEach: kEnumerableProperty,\n [Symbol.iterator]: { enumerable: false },\n [Symbol.toStringTag]: {\n value: 'Headers',\n configurable: true\n },\n [util.inspect.custom]: {\n enumerable: false\n }\n})\n\nwebidl.converters.HeadersInit = function (V) {\n if (webidl.util.Type(V) === 'Object') {\n if (V[Symbol.iterator]) {\n return webidl.converters['sequence>'](V)\n }\n\n return webidl.converters['record'](V)\n }\n\n throw webidl.errors.conversionFailed({\n prefix: 'Headers constructor',\n argument: 'Argument 1',\n types: ['sequence>', 'record']\n })\n}\n\nmodule.exports = {\n fill,\n Headers,\n HeadersList\n}\n","'use strict'\n\nconst { Headers, HeadersList, fill } = require('./headers')\nconst { extractBody, cloneBody, mixinBody } = require('./body')\nconst util = require('../core/util')\nconst { kEnumerableProperty } = util\nconst {\n isValidReasonPhrase,\n isCancelled,\n isAborted,\n isBlobLike,\n serializeJavascriptValueToJSONString,\n isErrorLike,\n isomorphicEncode\n} = require('./util')\nconst {\n redirectStatusSet,\n nullBodyStatus,\n DOMException\n} = require('./constants')\nconst { kState, kHeaders, kGuard, kRealm } = require('./symbols')\nconst { webidl } = require('./webidl')\nconst { FormData } = require('./formdata')\nconst { getGlobalOrigin } = require('./global')\nconst { URLSerializer } = require('./dataURL')\nconst { kHeadersList, kConstruct } = require('../core/symbols')\nconst assert = require('assert')\nconst { types } = require('util')\n\nconst ReadableStream = globalThis.ReadableStream || require('stream/web').ReadableStream\nconst textEncoder = new TextEncoder('utf-8')\n\n// https://fetch.spec.whatwg.org/#response-class\nclass Response {\n // Creates network error Response.\n static error () {\n // TODO\n const relevantRealm = { settingsObject: {} }\n\n // The static error() method steps are to return the result of creating a\n // Response object, given a new network error, \"immutable\", and this’s\n // relevant Realm.\n const responseObject = new Response()\n responseObject[kState] = makeNetworkError()\n responseObject[kRealm] = relevantRealm\n responseObject[kHeaders][kHeadersList] = responseObject[kState].headersList\n responseObject[kHeaders][kGuard] = 'immutable'\n responseObject[kHeaders][kRealm] = relevantRealm\n return responseObject\n }\n\n // https://fetch.spec.whatwg.org/#dom-response-json\n static json (data, init = {}) {\n webidl.argumentLengthCheck(arguments, 1, { header: 'Response.json' })\n\n if (init !== null) {\n init = webidl.converters.ResponseInit(init)\n }\n\n // 1. Let bytes the result of running serialize a JavaScript value to JSON bytes on data.\n const bytes = textEncoder.encode(\n serializeJavascriptValueToJSONString(data)\n )\n\n // 2. Let body be the result of extracting bytes.\n const body = extractBody(bytes)\n\n // 3. Let responseObject be the result of creating a Response object, given a new response,\n // \"response\", and this’s relevant Realm.\n const relevantRealm = { settingsObject: {} }\n const responseObject = new Response()\n responseObject[kRealm] = relevantRealm\n responseObject[kHeaders][kGuard] = 'response'\n responseObject[kHeaders][kRealm] = relevantRealm\n\n // 4. Perform initialize a response given responseObject, init, and (body, \"application/json\").\n initializeResponse(responseObject, init, { body: body[0], type: 'application/json' })\n\n // 5. Return responseObject.\n return responseObject\n }\n\n // Creates a redirect Response that redirects to url with status status.\n static redirect (url, status = 302) {\n const relevantRealm = { settingsObject: {} }\n\n webidl.argumentLengthCheck(arguments, 1, { header: 'Response.redirect' })\n\n url = webidl.converters.USVString(url)\n status = webidl.converters['unsigned short'](status)\n\n // 1. Let parsedURL be the result of parsing url with current settings\n // object’s API base URL.\n // 2. If parsedURL is failure, then throw a TypeError.\n // TODO: base-URL?\n let parsedURL\n try {\n parsedURL = new URL(url, getGlobalOrigin())\n } catch (err) {\n throw Object.assign(new TypeError('Failed to parse URL from ' + url), {\n cause: err\n })\n }\n\n // 3. If status is not a redirect status, then throw a RangeError.\n if (!redirectStatusSet.has(status)) {\n throw new RangeError('Invalid status code ' + status)\n }\n\n // 4. Let responseObject be the result of creating a Response object,\n // given a new response, \"immutable\", and this’s relevant Realm.\n const responseObject = new Response()\n responseObject[kRealm] = relevantRealm\n responseObject[kHeaders][kGuard] = 'immutable'\n responseObject[kHeaders][kRealm] = relevantRealm\n\n // 5. Set responseObject’s response’s status to status.\n responseObject[kState].status = status\n\n // 6. Let value be parsedURL, serialized and isomorphic encoded.\n const value = isomorphicEncode(URLSerializer(parsedURL))\n\n // 7. Append `Location`/value to responseObject’s response’s header list.\n responseObject[kState].headersList.append('location', value)\n\n // 8. Return responseObject.\n return responseObject\n }\n\n // https://fetch.spec.whatwg.org/#dom-response\n constructor (body = null, init = {}) {\n if (body !== null) {\n body = webidl.converters.BodyInit(body)\n }\n\n init = webidl.converters.ResponseInit(init)\n\n // TODO\n this[kRealm] = { settingsObject: {} }\n\n // 1. Set this’s response to a new response.\n this[kState] = makeResponse({})\n\n // 2. Set this’s headers to a new Headers object with this’s relevant\n // Realm, whose header list is this’s response’s header list and guard\n // is \"response\".\n this[kHeaders] = new Headers(kConstruct)\n this[kHeaders][kGuard] = 'response'\n this[kHeaders][kHeadersList] = this[kState].headersList\n this[kHeaders][kRealm] = this[kRealm]\n\n // 3. Let bodyWithType be null.\n let bodyWithType = null\n\n // 4. If body is non-null, then set bodyWithType to the result of extracting body.\n if (body != null) {\n const [extractedBody, type] = extractBody(body)\n bodyWithType = { body: extractedBody, type }\n }\n\n // 5. Perform initialize a response given this, init, and bodyWithType.\n initializeResponse(this, init, bodyWithType)\n }\n\n // Returns response’s type, e.g., \"cors\".\n get type () {\n webidl.brandCheck(this, Response)\n\n // The type getter steps are to return this’s response’s type.\n return this[kState].type\n }\n\n // Returns response’s URL, if it has one; otherwise the empty string.\n get url () {\n webidl.brandCheck(this, Response)\n\n const urlList = this[kState].urlList\n\n // The url getter steps are to return the empty string if this’s\n // response’s URL is null; otherwise this’s response’s URL,\n // serialized with exclude fragment set to true.\n const url = urlList[urlList.length - 1] ?? null\n\n if (url === null) {\n return ''\n }\n\n return URLSerializer(url, true)\n }\n\n // Returns whether response was obtained through a redirect.\n get redirected () {\n webidl.brandCheck(this, Response)\n\n // The redirected getter steps are to return true if this’s response’s URL\n // list has more than one item; otherwise false.\n return this[kState].urlList.length > 1\n }\n\n // Returns response’s status.\n get status () {\n webidl.brandCheck(this, Response)\n\n // The status getter steps are to return this’s response’s status.\n return this[kState].status\n }\n\n // Returns whether response’s status is an ok status.\n get ok () {\n webidl.brandCheck(this, Response)\n\n // The ok getter steps are to return true if this’s response’s status is an\n // ok status; otherwise false.\n return this[kState].status >= 200 && this[kState].status <= 299\n }\n\n // Returns response’s status message.\n get statusText () {\n webidl.brandCheck(this, Response)\n\n // The statusText getter steps are to return this’s response’s status\n // message.\n return this[kState].statusText\n }\n\n // Returns response’s headers as Headers.\n get headers () {\n webidl.brandCheck(this, Response)\n\n // The headers getter steps are to return this’s headers.\n return this[kHeaders]\n }\n\n get body () {\n webidl.brandCheck(this, Response)\n\n return this[kState].body ? this[kState].body.stream : null\n }\n\n get bodyUsed () {\n webidl.brandCheck(this, Response)\n\n return !!this[kState].body && util.isDisturbed(this[kState].body.stream)\n }\n\n // Returns a clone of response.\n clone () {\n webidl.brandCheck(this, Response)\n\n // 1. If this is unusable, then throw a TypeError.\n if (this.bodyUsed || (this.body && this.body.locked)) {\n throw webidl.errors.exception({\n header: 'Response.clone',\n message: 'Body has already been consumed.'\n })\n }\n\n // 2. Let clonedResponse be the result of cloning this’s response.\n const clonedResponse = cloneResponse(this[kState])\n\n // 3. Return the result of creating a Response object, given\n // clonedResponse, this’s headers’s guard, and this’s relevant Realm.\n const clonedResponseObject = new Response()\n clonedResponseObject[kState] = clonedResponse\n clonedResponseObject[kRealm] = this[kRealm]\n clonedResponseObject[kHeaders][kHeadersList] = clonedResponse.headersList\n clonedResponseObject[kHeaders][kGuard] = this[kHeaders][kGuard]\n clonedResponseObject[kHeaders][kRealm] = this[kHeaders][kRealm]\n\n return clonedResponseObject\n }\n}\n\nmixinBody(Response)\n\nObject.defineProperties(Response.prototype, {\n type: kEnumerableProperty,\n url: kEnumerableProperty,\n status: kEnumerableProperty,\n ok: kEnumerableProperty,\n redirected: kEnumerableProperty,\n statusText: kEnumerableProperty,\n headers: kEnumerableProperty,\n clone: kEnumerableProperty,\n body: kEnumerableProperty,\n bodyUsed: kEnumerableProperty,\n [Symbol.toStringTag]: {\n value: 'Response',\n configurable: true\n }\n})\n\nObject.defineProperties(Response, {\n json: kEnumerableProperty,\n redirect: kEnumerableProperty,\n error: kEnumerableProperty\n})\n\n// https://fetch.spec.whatwg.org/#concept-response-clone\nfunction cloneResponse (response) {\n // To clone a response response, run these steps:\n\n // 1. If response is a filtered response, then return a new identical\n // filtered response whose internal response is a clone of response’s\n // internal response.\n if (response.internalResponse) {\n return filterResponse(\n cloneResponse(response.internalResponse),\n response.type\n )\n }\n\n // 2. Let newResponse be a copy of response, except for its body.\n const newResponse = makeResponse({ ...response, body: null })\n\n // 3. If response’s body is non-null, then set newResponse’s body to the\n // result of cloning response’s body.\n if (response.body != null) {\n newResponse.body = cloneBody(response.body)\n }\n\n // 4. Return newResponse.\n return newResponse\n}\n\nfunction makeResponse (init) {\n return {\n aborted: false,\n rangeRequested: false,\n timingAllowPassed: false,\n requestIncludesCredentials: false,\n type: 'default',\n status: 200,\n timingInfo: null,\n cacheState: '',\n statusText: '',\n ...init,\n headersList: init.headersList\n ? new HeadersList(init.headersList)\n : new HeadersList(),\n urlList: init.urlList ? [...init.urlList] : []\n }\n}\n\nfunction makeNetworkError (reason) {\n const isError = isErrorLike(reason)\n return makeResponse({\n type: 'error',\n status: 0,\n error: isError\n ? reason\n : new Error(reason ? String(reason) : reason),\n aborted: reason && reason.name === 'AbortError'\n })\n}\n\nfunction makeFilteredResponse (response, state) {\n state = {\n internalResponse: response,\n ...state\n }\n\n return new Proxy(response, {\n get (target, p) {\n return p in state ? state[p] : target[p]\n },\n set (target, p, value) {\n assert(!(p in state))\n target[p] = value\n return true\n }\n })\n}\n\n// https://fetch.spec.whatwg.org/#concept-filtered-response\nfunction filterResponse (response, type) {\n // Set response to the following filtered response with response as its\n // internal response, depending on request’s response tainting:\n if (type === 'basic') {\n // A basic filtered response is a filtered response whose type is \"basic\"\n // and header list excludes any headers in internal response’s header list\n // whose name is a forbidden response-header name.\n\n // Note: undici does not implement forbidden response-header names\n return makeFilteredResponse(response, {\n type: 'basic',\n headersList: response.headersList\n })\n } else if (type === 'cors') {\n // A CORS filtered response is a filtered response whose type is \"cors\"\n // and header list excludes any headers in internal response’s header\n // list whose name is not a CORS-safelisted response-header name, given\n // internal response’s CORS-exposed header-name list.\n\n // Note: undici does not implement CORS-safelisted response-header names\n return makeFilteredResponse(response, {\n type: 'cors',\n headersList: response.headersList\n })\n } else if (type === 'opaque') {\n // An opaque filtered response is a filtered response whose type is\n // \"opaque\", URL list is the empty list, status is 0, status message\n // is the empty byte sequence, header list is empty, and body is null.\n\n return makeFilteredResponse(response, {\n type: 'opaque',\n urlList: Object.freeze([]),\n status: 0,\n statusText: '',\n body: null\n })\n } else if (type === 'opaqueredirect') {\n // An opaque-redirect filtered response is a filtered response whose type\n // is \"opaqueredirect\", status is 0, status message is the empty byte\n // sequence, header list is empty, and body is null.\n\n return makeFilteredResponse(response, {\n type: 'opaqueredirect',\n status: 0,\n statusText: '',\n headersList: [],\n body: null\n })\n } else {\n assert(false)\n }\n}\n\n// https://fetch.spec.whatwg.org/#appropriate-network-error\nfunction makeAppropriateNetworkError (fetchParams, err = null) {\n // 1. Assert: fetchParams is canceled.\n assert(isCancelled(fetchParams))\n\n // 2. Return an aborted network error if fetchParams is aborted;\n // otherwise return a network error.\n return isAborted(fetchParams)\n ? makeNetworkError(Object.assign(new DOMException('The operation was aborted.', 'AbortError'), { cause: err }))\n : makeNetworkError(Object.assign(new DOMException('Request was cancelled.'), { cause: err }))\n}\n\n// https://whatpr.org/fetch/1392.html#initialize-a-response\nfunction initializeResponse (response, init, body) {\n // 1. If init[\"status\"] is not in the range 200 to 599, inclusive, then\n // throw a RangeError.\n if (init.status !== null && (init.status < 200 || init.status > 599)) {\n throw new RangeError('init[\"status\"] must be in the range of 200 to 599, inclusive.')\n }\n\n // 2. If init[\"statusText\"] does not match the reason-phrase token production,\n // then throw a TypeError.\n if ('statusText' in init && init.statusText != null) {\n // See, https://datatracker.ietf.org/doc/html/rfc7230#section-3.1.2:\n // reason-phrase = *( HTAB / SP / VCHAR / obs-text )\n if (!isValidReasonPhrase(String(init.statusText))) {\n throw new TypeError('Invalid statusText')\n }\n }\n\n // 3. Set response’s response’s status to init[\"status\"].\n if ('status' in init && init.status != null) {\n response[kState].status = init.status\n }\n\n // 4. Set response’s response’s status message to init[\"statusText\"].\n if ('statusText' in init && init.statusText != null) {\n response[kState].statusText = init.statusText\n }\n\n // 5. If init[\"headers\"] exists, then fill response’s headers with init[\"headers\"].\n if ('headers' in init && init.headers != null) {\n fill(response[kHeaders], init.headers)\n }\n\n // 6. If body was given, then:\n if (body) {\n // 1. If response's status is a null body status, then throw a TypeError.\n if (nullBodyStatus.includes(response.status)) {\n throw webidl.errors.exception({\n header: 'Response constructor',\n message: 'Invalid response status code ' + response.status\n })\n }\n\n // 2. Set response's body to body's body.\n response[kState].body = body.body\n\n // 3. If body's type is non-null and response's header list does not contain\n // `Content-Type`, then append (`Content-Type`, body's type) to response's header list.\n if (body.type != null && !response[kState].headersList.contains('Content-Type')) {\n response[kState].headersList.append('content-type', body.type)\n }\n }\n}\n\nwebidl.converters.ReadableStream = webidl.interfaceConverter(\n ReadableStream\n)\n\nwebidl.converters.FormData = webidl.interfaceConverter(\n FormData\n)\n\nwebidl.converters.URLSearchParams = webidl.interfaceConverter(\n URLSearchParams\n)\n\n// https://fetch.spec.whatwg.org/#typedefdef-xmlhttprequestbodyinit\nwebidl.converters.XMLHttpRequestBodyInit = function (V) {\n if (typeof V === 'string') {\n return webidl.converters.USVString(V)\n }\n\n if (isBlobLike(V)) {\n return webidl.converters.Blob(V, { strict: false })\n }\n\n if (types.isArrayBuffer(V) || types.isTypedArray(V) || types.isDataView(V)) {\n return webidl.converters.BufferSource(V)\n }\n\n if (util.isFormDataLike(V)) {\n return webidl.converters.FormData(V, { strict: false })\n }\n\n if (V instanceof URLSearchParams) {\n return webidl.converters.URLSearchParams(V)\n }\n\n return webidl.converters.DOMString(V)\n}\n\n// https://fetch.spec.whatwg.org/#bodyinit\nwebidl.converters.BodyInit = function (V) {\n if (V instanceof ReadableStream) {\n return webidl.converters.ReadableStream(V)\n }\n\n // Note: the spec doesn't include async iterables,\n // this is an undici extension.\n if (V?.[Symbol.asyncIterator]) {\n return V\n }\n\n return webidl.converters.XMLHttpRequestBodyInit(V)\n}\n\nwebidl.converters.ResponseInit = webidl.dictionaryConverter([\n {\n key: 'status',\n converter: webidl.converters['unsigned short'],\n defaultValue: 200\n },\n {\n key: 'statusText',\n converter: webidl.converters.ByteString,\n defaultValue: ''\n },\n {\n key: 'headers',\n converter: webidl.converters.HeadersInit\n }\n])\n\nmodule.exports = {\n makeNetworkError,\n makeResponse,\n makeAppropriateNetworkError,\n filterResponse,\n Response,\n cloneResponse\n}\n","/* globals AbortController */\n\n'use strict'\n\nconst { extractBody, mixinBody, cloneBody } = require('./body')\nconst { Headers, fill: fillHeaders, HeadersList } = require('./headers')\nconst { FinalizationRegistry } = require('../compat/dispatcher-weakref')()\nconst util = require('../core/util')\nconst {\n isValidHTTPToken,\n sameOrigin,\n normalizeMethod,\n makePolicyContainer,\n normalizeMethodRecord\n} = require('./util')\nconst {\n forbiddenMethodsSet,\n corsSafeListedMethodsSet,\n referrerPolicy,\n requestRedirect,\n requestMode,\n requestCredentials,\n requestCache,\n requestDuplex\n} = require('./constants')\nconst { kEnumerableProperty } = util\nconst { kHeaders, kSignal, kState, kGuard, kRealm } = require('./symbols')\nconst { webidl } = require('./webidl')\nconst { getGlobalOrigin } = require('./global')\nconst { URLSerializer } = require('./dataURL')\nconst { kHeadersList, kConstruct } = require('../core/symbols')\nconst assert = require('assert')\nconst { getMaxListeners, setMaxListeners, getEventListeners, defaultMaxListeners } = require('events')\n\nlet TransformStream = globalThis.TransformStream\n\nconst kAbortController = Symbol('abortController')\n\nconst requestFinalizer = new FinalizationRegistry(({ signal, abort }) => {\n signal.removeEventListener('abort', abort)\n})\n\n// https://fetch.spec.whatwg.org/#request-class\nclass Request {\n // https://fetch.spec.whatwg.org/#dom-request\n constructor (input, init = {}) {\n if (input === kConstruct) {\n return\n }\n\n webidl.argumentLengthCheck(arguments, 1, { header: 'Request constructor' })\n\n input = webidl.converters.RequestInfo(input)\n init = webidl.converters.RequestInit(init)\n\n // https://html.spec.whatwg.org/multipage/webappapis.html#environment-settings-object\n this[kRealm] = {\n settingsObject: {\n baseUrl: getGlobalOrigin(),\n get origin () {\n return this.baseUrl?.origin\n },\n policyContainer: makePolicyContainer()\n }\n }\n\n // 1. Let request be null.\n let request = null\n\n // 2. Let fallbackMode be null.\n let fallbackMode = null\n\n // 3. Let baseURL be this’s relevant settings object’s API base URL.\n const baseUrl = this[kRealm].settingsObject.baseUrl\n\n // 4. Let signal be null.\n let signal = null\n\n // 5. If input is a string, then:\n if (typeof input === 'string') {\n // 1. Let parsedURL be the result of parsing input with baseURL.\n // 2. If parsedURL is failure, then throw a TypeError.\n let parsedURL\n try {\n parsedURL = new URL(input, baseUrl)\n } catch (err) {\n throw new TypeError('Failed to parse URL from ' + input, { cause: err })\n }\n\n // 3. If parsedURL includes credentials, then throw a TypeError.\n if (parsedURL.username || parsedURL.password) {\n throw new TypeError(\n 'Request cannot be constructed from a URL that includes credentials: ' +\n input\n )\n }\n\n // 4. Set request to a new request whose URL is parsedURL.\n request = makeRequest({ urlList: [parsedURL] })\n\n // 5. Set fallbackMode to \"cors\".\n fallbackMode = 'cors'\n } else {\n // 6. Otherwise:\n\n // 7. Assert: input is a Request object.\n assert(input instanceof Request)\n\n // 8. Set request to input’s request.\n request = input[kState]\n\n // 9. Set signal to input’s signal.\n signal = input[kSignal]\n }\n\n // 7. Let origin be this’s relevant settings object’s origin.\n const origin = this[kRealm].settingsObject.origin\n\n // 8. Let window be \"client\".\n let window = 'client'\n\n // 9. If request’s window is an environment settings object and its origin\n // is same origin with origin, then set window to request’s window.\n if (\n request.window?.constructor?.name === 'EnvironmentSettingsObject' &&\n sameOrigin(request.window, origin)\n ) {\n window = request.window\n }\n\n // 10. If init[\"window\"] exists and is non-null, then throw a TypeError.\n if (init.window != null) {\n throw new TypeError(`'window' option '${window}' must be null`)\n }\n\n // 11. If init[\"window\"] exists, then set window to \"no-window\".\n if ('window' in init) {\n window = 'no-window'\n }\n\n // 12. Set request to a new request with the following properties:\n request = makeRequest({\n // URL request’s URL.\n // undici implementation note: this is set as the first item in request's urlList in makeRequest\n // method request’s method.\n method: request.method,\n // header list A copy of request’s header list.\n // undici implementation note: headersList is cloned in makeRequest\n headersList: request.headersList,\n // unsafe-request flag Set.\n unsafeRequest: request.unsafeRequest,\n // client This’s relevant settings object.\n client: this[kRealm].settingsObject,\n // window window.\n window,\n // priority request’s priority.\n priority: request.priority,\n // origin request’s origin. The propagation of the origin is only significant for navigation requests\n // being handled by a service worker. In this scenario a request can have an origin that is different\n // from the current client.\n origin: request.origin,\n // referrer request’s referrer.\n referrer: request.referrer,\n // referrer policy request’s referrer policy.\n referrerPolicy: request.referrerPolicy,\n // mode request’s mode.\n mode: request.mode,\n // credentials mode request’s credentials mode.\n credentials: request.credentials,\n // cache mode request’s cache mode.\n cache: request.cache,\n // redirect mode request’s redirect mode.\n redirect: request.redirect,\n // integrity metadata request’s integrity metadata.\n integrity: request.integrity,\n // keepalive request’s keepalive.\n keepalive: request.keepalive,\n // reload-navigation flag request’s reload-navigation flag.\n reloadNavigation: request.reloadNavigation,\n // history-navigation flag request’s history-navigation flag.\n historyNavigation: request.historyNavigation,\n // URL list A clone of request’s URL list.\n urlList: [...request.urlList]\n })\n\n const initHasKey = Object.keys(init).length !== 0\n\n // 13. If init is not empty, then:\n if (initHasKey) {\n // 1. If request’s mode is \"navigate\", then set it to \"same-origin\".\n if (request.mode === 'navigate') {\n request.mode = 'same-origin'\n }\n\n // 2. Unset request’s reload-navigation flag.\n request.reloadNavigation = false\n\n // 3. Unset request’s history-navigation flag.\n request.historyNavigation = false\n\n // 4. Set request’s origin to \"client\".\n request.origin = 'client'\n\n // 5. Set request’s referrer to \"client\"\n request.referrer = 'client'\n\n // 6. Set request’s referrer policy to the empty string.\n request.referrerPolicy = ''\n\n // 7. Set request’s URL to request’s current URL.\n request.url = request.urlList[request.urlList.length - 1]\n\n // 8. Set request’s URL list to « request’s URL ».\n request.urlList = [request.url]\n }\n\n // 14. If init[\"referrer\"] exists, then:\n if (init.referrer !== undefined) {\n // 1. Let referrer be init[\"referrer\"].\n const referrer = init.referrer\n\n // 2. If referrer is the empty string, then set request’s referrer to \"no-referrer\".\n if (referrer === '') {\n request.referrer = 'no-referrer'\n } else {\n // 1. Let parsedReferrer be the result of parsing referrer with\n // baseURL.\n // 2. If parsedReferrer is failure, then throw a TypeError.\n let parsedReferrer\n try {\n parsedReferrer = new URL(referrer, baseUrl)\n } catch (err) {\n throw new TypeError(`Referrer \"${referrer}\" is not a valid URL.`, { cause: err })\n }\n\n // 3. If one of the following is true\n // - parsedReferrer’s scheme is \"about\" and path is the string \"client\"\n // - parsedReferrer’s origin is not same origin with origin\n // then set request’s referrer to \"client\".\n if (\n (parsedReferrer.protocol === 'about:' && parsedReferrer.hostname === 'client') ||\n (origin && !sameOrigin(parsedReferrer, this[kRealm].settingsObject.baseUrl))\n ) {\n request.referrer = 'client'\n } else {\n // 4. Otherwise, set request’s referrer to parsedReferrer.\n request.referrer = parsedReferrer\n }\n }\n }\n\n // 15. If init[\"referrerPolicy\"] exists, then set request’s referrer policy\n // to it.\n if (init.referrerPolicy !== undefined) {\n request.referrerPolicy = init.referrerPolicy\n }\n\n // 16. Let mode be init[\"mode\"] if it exists, and fallbackMode otherwise.\n let mode\n if (init.mode !== undefined) {\n mode = init.mode\n } else {\n mode = fallbackMode\n }\n\n // 17. If mode is \"navigate\", then throw a TypeError.\n if (mode === 'navigate') {\n throw webidl.errors.exception({\n header: 'Request constructor',\n message: 'invalid request mode navigate.'\n })\n }\n\n // 18. If mode is non-null, set request’s mode to mode.\n if (mode != null) {\n request.mode = mode\n }\n\n // 19. If init[\"credentials\"] exists, then set request’s credentials mode\n // to it.\n if (init.credentials !== undefined) {\n request.credentials = init.credentials\n }\n\n // 18. If init[\"cache\"] exists, then set request’s cache mode to it.\n if (init.cache !== undefined) {\n request.cache = init.cache\n }\n\n // 21. If request’s cache mode is \"only-if-cached\" and request’s mode is\n // not \"same-origin\", then throw a TypeError.\n if (request.cache === 'only-if-cached' && request.mode !== 'same-origin') {\n throw new TypeError(\n \"'only-if-cached' can be set only with 'same-origin' mode\"\n )\n }\n\n // 22. If init[\"redirect\"] exists, then set request’s redirect mode to it.\n if (init.redirect !== undefined) {\n request.redirect = init.redirect\n }\n\n // 23. If init[\"integrity\"] exists, then set request’s integrity metadata to it.\n if (init.integrity != null) {\n request.integrity = String(init.integrity)\n }\n\n // 24. If init[\"keepalive\"] exists, then set request’s keepalive to it.\n if (init.keepalive !== undefined) {\n request.keepalive = Boolean(init.keepalive)\n }\n\n // 25. If init[\"method\"] exists, then:\n if (init.method !== undefined) {\n // 1. Let method be init[\"method\"].\n let method = init.method\n\n // 2. If method is not a method or method is a forbidden method, then\n // throw a TypeError.\n if (!isValidHTTPToken(method)) {\n throw new TypeError(`'${method}' is not a valid HTTP method.`)\n }\n\n if (forbiddenMethodsSet.has(method.toUpperCase())) {\n throw new TypeError(`'${method}' HTTP method is unsupported.`)\n }\n\n // 3. Normalize method.\n method = normalizeMethodRecord[method] ?? normalizeMethod(method)\n\n // 4. Set request’s method to method.\n request.method = method\n }\n\n // 26. If init[\"signal\"] exists, then set signal to it.\n if (init.signal !== undefined) {\n signal = init.signal\n }\n\n // 27. Set this’s request to request.\n this[kState] = request\n\n // 28. Set this’s signal to a new AbortSignal object with this’s relevant\n // Realm.\n // TODO: could this be simplified with AbortSignal.any\n // (https://dom.spec.whatwg.org/#dom-abortsignal-any)\n const ac = new AbortController()\n this[kSignal] = ac.signal\n this[kSignal][kRealm] = this[kRealm]\n\n // 29. If signal is not null, then make this’s signal follow signal.\n if (signal != null) {\n if (\n !signal ||\n typeof signal.aborted !== 'boolean' ||\n typeof signal.addEventListener !== 'function'\n ) {\n throw new TypeError(\n \"Failed to construct 'Request': member signal is not of type AbortSignal.\"\n )\n }\n\n if (signal.aborted) {\n ac.abort(signal.reason)\n } else {\n // Keep a strong ref to ac while request object\n // is alive. This is needed to prevent AbortController\n // from being prematurely garbage collected.\n // See, https://github.com/nodejs/undici/issues/1926.\n this[kAbortController] = ac\n\n const acRef = new WeakRef(ac)\n const abort = function () {\n const ac = acRef.deref()\n if (ac !== undefined) {\n ac.abort(this.reason)\n }\n }\n\n // Third-party AbortControllers may not work with these.\n // See, https://github.com/nodejs/undici/pull/1910#issuecomment-1464495619.\n try {\n // If the max amount of listeners is equal to the default, increase it\n // This is only available in node >= v19.9.0\n if (typeof getMaxListeners === 'function' && getMaxListeners(signal) === defaultMaxListeners) {\n setMaxListeners(100, signal)\n } else if (getEventListeners(signal, 'abort').length >= defaultMaxListeners) {\n setMaxListeners(100, signal)\n }\n } catch {}\n\n util.addAbortListener(signal, abort)\n requestFinalizer.register(ac, { signal, abort })\n }\n }\n\n // 30. Set this’s headers to a new Headers object with this’s relevant\n // Realm, whose header list is request’s header list and guard is\n // \"request\".\n this[kHeaders] = new Headers(kConstruct)\n this[kHeaders][kHeadersList] = request.headersList\n this[kHeaders][kGuard] = 'request'\n this[kHeaders][kRealm] = this[kRealm]\n\n // 31. If this’s request’s mode is \"no-cors\", then:\n if (mode === 'no-cors') {\n // 1. If this’s request’s method is not a CORS-safelisted method,\n // then throw a TypeError.\n if (!corsSafeListedMethodsSet.has(request.method)) {\n throw new TypeError(\n `'${request.method} is unsupported in no-cors mode.`\n )\n }\n\n // 2. Set this’s headers’s guard to \"request-no-cors\".\n this[kHeaders][kGuard] = 'request-no-cors'\n }\n\n // 32. If init is not empty, then:\n if (initHasKey) {\n /** @type {HeadersList} */\n const headersList = this[kHeaders][kHeadersList]\n // 1. Let headers be a copy of this’s headers and its associated header\n // list.\n // 2. If init[\"headers\"] exists, then set headers to init[\"headers\"].\n const headers = init.headers !== undefined ? init.headers : new HeadersList(headersList)\n\n // 3. Empty this’s headers’s header list.\n headersList.clear()\n\n // 4. If headers is a Headers object, then for each header in its header\n // list, append header’s name/header’s value to this’s headers.\n if (headers instanceof HeadersList) {\n for (const [key, val] of headers) {\n headersList.append(key, val)\n }\n // Note: Copy the `set-cookie` meta-data.\n headersList.cookies = headers.cookies\n } else {\n // 5. Otherwise, fill this’s headers with headers.\n fillHeaders(this[kHeaders], headers)\n }\n }\n\n // 33. Let inputBody be input’s request’s body if input is a Request\n // object; otherwise null.\n const inputBody = input instanceof Request ? input[kState].body : null\n\n // 34. If either init[\"body\"] exists and is non-null or inputBody is\n // non-null, and request’s method is `GET` or `HEAD`, then throw a\n // TypeError.\n if (\n (init.body != null || inputBody != null) &&\n (request.method === 'GET' || request.method === 'HEAD')\n ) {\n throw new TypeError('Request with GET/HEAD method cannot have body.')\n }\n\n // 35. Let initBody be null.\n let initBody = null\n\n // 36. If init[\"body\"] exists and is non-null, then:\n if (init.body != null) {\n // 1. Let Content-Type be null.\n // 2. Set initBody and Content-Type to the result of extracting\n // init[\"body\"], with keepalive set to request’s keepalive.\n const [extractedBody, contentType] = extractBody(\n init.body,\n request.keepalive\n )\n initBody = extractedBody\n\n // 3, If Content-Type is non-null and this’s headers’s header list does\n // not contain `Content-Type`, then append `Content-Type`/Content-Type to\n // this’s headers.\n if (contentType && !this[kHeaders][kHeadersList].contains('content-type')) {\n this[kHeaders].append('content-type', contentType)\n }\n }\n\n // 37. Let inputOrInitBody be initBody if it is non-null; otherwise\n // inputBody.\n const inputOrInitBody = initBody ?? inputBody\n\n // 38. If inputOrInitBody is non-null and inputOrInitBody’s source is\n // null, then:\n if (inputOrInitBody != null && inputOrInitBody.source == null) {\n // 1. If initBody is non-null and init[\"duplex\"] does not exist,\n // then throw a TypeError.\n if (initBody != null && init.duplex == null) {\n throw new TypeError('RequestInit: duplex option is required when sending a body.')\n }\n\n // 2. If this’s request’s mode is neither \"same-origin\" nor \"cors\",\n // then throw a TypeError.\n if (request.mode !== 'same-origin' && request.mode !== 'cors') {\n throw new TypeError(\n 'If request is made from ReadableStream, mode should be \"same-origin\" or \"cors\"'\n )\n }\n\n // 3. Set this’s request’s use-CORS-preflight flag.\n request.useCORSPreflightFlag = true\n }\n\n // 39. Let finalBody be inputOrInitBody.\n let finalBody = inputOrInitBody\n\n // 40. If initBody is null and inputBody is non-null, then:\n if (initBody == null && inputBody != null) {\n // 1. If input is unusable, then throw a TypeError.\n if (util.isDisturbed(inputBody.stream) || inputBody.stream.locked) {\n throw new TypeError(\n 'Cannot construct a Request with a Request object that has already been used.'\n )\n }\n\n // 2. Set finalBody to the result of creating a proxy for inputBody.\n if (!TransformStream) {\n TransformStream = require('stream/web').TransformStream\n }\n\n // https://streams.spec.whatwg.org/#readablestream-create-a-proxy\n const identityTransform = new TransformStream()\n inputBody.stream.pipeThrough(identityTransform)\n finalBody = {\n source: inputBody.source,\n length: inputBody.length,\n stream: identityTransform.readable\n }\n }\n\n // 41. Set this’s request’s body to finalBody.\n this[kState].body = finalBody\n }\n\n // Returns request’s HTTP method, which is \"GET\" by default.\n get method () {\n webidl.brandCheck(this, Request)\n\n // The method getter steps are to return this’s request’s method.\n return this[kState].method\n }\n\n // Returns the URL of request as a string.\n get url () {\n webidl.brandCheck(this, Request)\n\n // The url getter steps are to return this’s request’s URL, serialized.\n return URLSerializer(this[kState].url)\n }\n\n // Returns a Headers object consisting of the headers associated with request.\n // Note that headers added in the network layer by the user agent will not\n // be accounted for in this object, e.g., the \"Host\" header.\n get headers () {\n webidl.brandCheck(this, Request)\n\n // The headers getter steps are to return this’s headers.\n return this[kHeaders]\n }\n\n // Returns the kind of resource requested by request, e.g., \"document\"\n // or \"script\".\n get destination () {\n webidl.brandCheck(this, Request)\n\n // The destination getter are to return this’s request’s destination.\n return this[kState].destination\n }\n\n // Returns the referrer of request. Its value can be a same-origin URL if\n // explicitly set in init, the empty string to indicate no referrer, and\n // \"about:client\" when defaulting to the global’s default. This is used\n // during fetching to determine the value of the `Referer` header of the\n // request being made.\n get referrer () {\n webidl.brandCheck(this, Request)\n\n // 1. If this’s request’s referrer is \"no-referrer\", then return the\n // empty string.\n if (this[kState].referrer === 'no-referrer') {\n return ''\n }\n\n // 2. If this’s request’s referrer is \"client\", then return\n // \"about:client\".\n if (this[kState].referrer === 'client') {\n return 'about:client'\n }\n\n // Return this’s request’s referrer, serialized.\n return this[kState].referrer.toString()\n }\n\n // Returns the referrer policy associated with request.\n // This is used during fetching to compute the value of the request’s\n // referrer.\n get referrerPolicy () {\n webidl.brandCheck(this, Request)\n\n // The referrerPolicy getter steps are to return this’s request’s referrer policy.\n return this[kState].referrerPolicy\n }\n\n // Returns the mode associated with request, which is a string indicating\n // whether the request will use CORS, or will be restricted to same-origin\n // URLs.\n get mode () {\n webidl.brandCheck(this, Request)\n\n // The mode getter steps are to return this’s request’s mode.\n return this[kState].mode\n }\n\n // Returns the credentials mode associated with request,\n // which is a string indicating whether credentials will be sent with the\n // request always, never, or only when sent to a same-origin URL.\n get credentials () {\n // The credentials getter steps are to return this’s request’s credentials mode.\n return this[kState].credentials\n }\n\n // Returns the cache mode associated with request,\n // which is a string indicating how the request will\n // interact with the browser’s cache when fetching.\n get cache () {\n webidl.brandCheck(this, Request)\n\n // The cache getter steps are to return this’s request’s cache mode.\n return this[kState].cache\n }\n\n // Returns the redirect mode associated with request,\n // which is a string indicating how redirects for the\n // request will be handled during fetching. A request\n // will follow redirects by default.\n get redirect () {\n webidl.brandCheck(this, Request)\n\n // The redirect getter steps are to return this’s request’s redirect mode.\n return this[kState].redirect\n }\n\n // Returns request’s subresource integrity metadata, which is a\n // cryptographic hash of the resource being fetched. Its value\n // consists of multiple hashes separated by whitespace. [SRI]\n get integrity () {\n webidl.brandCheck(this, Request)\n\n // The integrity getter steps are to return this’s request’s integrity\n // metadata.\n return this[kState].integrity\n }\n\n // Returns a boolean indicating whether or not request can outlive the\n // global in which it was created.\n get keepalive () {\n webidl.brandCheck(this, Request)\n\n // The keepalive getter steps are to return this’s request’s keepalive.\n return this[kState].keepalive\n }\n\n // Returns a boolean indicating whether or not request is for a reload\n // navigation.\n get isReloadNavigation () {\n webidl.brandCheck(this, Request)\n\n // The isReloadNavigation getter steps are to return true if this’s\n // request’s reload-navigation flag is set; otherwise false.\n return this[kState].reloadNavigation\n }\n\n // Returns a boolean indicating whether or not request is for a history\n // navigation (a.k.a. back-foward navigation).\n get isHistoryNavigation () {\n webidl.brandCheck(this, Request)\n\n // The isHistoryNavigation getter steps are to return true if this’s request’s\n // history-navigation flag is set; otherwise false.\n return this[kState].historyNavigation\n }\n\n // Returns the signal associated with request, which is an AbortSignal\n // object indicating whether or not request has been aborted, and its\n // abort event handler.\n get signal () {\n webidl.brandCheck(this, Request)\n\n // The signal getter steps are to return this’s signal.\n return this[kSignal]\n }\n\n get body () {\n webidl.brandCheck(this, Request)\n\n return this[kState].body ? this[kState].body.stream : null\n }\n\n get bodyUsed () {\n webidl.brandCheck(this, Request)\n\n return !!this[kState].body && util.isDisturbed(this[kState].body.stream)\n }\n\n get duplex () {\n webidl.brandCheck(this, Request)\n\n return 'half'\n }\n\n // Returns a clone of request.\n clone () {\n webidl.brandCheck(this, Request)\n\n // 1. If this is unusable, then throw a TypeError.\n if (this.bodyUsed || this.body?.locked) {\n throw new TypeError('unusable')\n }\n\n // 2. Let clonedRequest be the result of cloning this’s request.\n const clonedRequest = cloneRequest(this[kState])\n\n // 3. Let clonedRequestObject be the result of creating a Request object,\n // given clonedRequest, this’s headers’s guard, and this’s relevant Realm.\n const clonedRequestObject = new Request(kConstruct)\n clonedRequestObject[kState] = clonedRequest\n clonedRequestObject[kRealm] = this[kRealm]\n clonedRequestObject[kHeaders] = new Headers(kConstruct)\n clonedRequestObject[kHeaders][kHeadersList] = clonedRequest.headersList\n clonedRequestObject[kHeaders][kGuard] = this[kHeaders][kGuard]\n clonedRequestObject[kHeaders][kRealm] = this[kHeaders][kRealm]\n\n // 4. Make clonedRequestObject’s signal follow this’s signal.\n const ac = new AbortController()\n if (this.signal.aborted) {\n ac.abort(this.signal.reason)\n } else {\n util.addAbortListener(\n this.signal,\n () => {\n ac.abort(this.signal.reason)\n }\n )\n }\n clonedRequestObject[kSignal] = ac.signal\n\n // 4. Return clonedRequestObject.\n return clonedRequestObject\n }\n}\n\nmixinBody(Request)\n\nfunction makeRequest (init) {\n // https://fetch.spec.whatwg.org/#requests\n const request = {\n method: 'GET',\n localURLsOnly: false,\n unsafeRequest: false,\n body: null,\n client: null,\n reservedClient: null,\n replacesClientId: '',\n window: 'client',\n keepalive: false,\n serviceWorkers: 'all',\n initiator: '',\n destination: '',\n priority: null,\n origin: 'client',\n policyContainer: 'client',\n referrer: 'client',\n referrerPolicy: '',\n mode: 'no-cors',\n useCORSPreflightFlag: false,\n credentials: 'same-origin',\n useCredentials: false,\n cache: 'default',\n redirect: 'follow',\n integrity: '',\n cryptoGraphicsNonceMetadata: '',\n parserMetadata: '',\n reloadNavigation: false,\n historyNavigation: false,\n userActivation: false,\n taintedOrigin: false,\n redirectCount: 0,\n responseTainting: 'basic',\n preventNoCacheCacheControlHeaderModification: false,\n done: false,\n timingAllowFailed: false,\n ...init,\n headersList: init.headersList\n ? new HeadersList(init.headersList)\n : new HeadersList()\n }\n request.url = request.urlList[0]\n return request\n}\n\n// https://fetch.spec.whatwg.org/#concept-request-clone\nfunction cloneRequest (request) {\n // To clone a request request, run these steps:\n\n // 1. Let newRequest be a copy of request, except for its body.\n const newRequest = makeRequest({ ...request, body: null })\n\n // 2. If request’s body is non-null, set newRequest’s body to the\n // result of cloning request’s body.\n if (request.body != null) {\n newRequest.body = cloneBody(request.body)\n }\n\n // 3. Return newRequest.\n return newRequest\n}\n\nObject.defineProperties(Request.prototype, {\n method: kEnumerableProperty,\n url: kEnumerableProperty,\n headers: kEnumerableProperty,\n redirect: kEnumerableProperty,\n clone: kEnumerableProperty,\n signal: kEnumerableProperty,\n duplex: kEnumerableProperty,\n destination: kEnumerableProperty,\n body: kEnumerableProperty,\n bodyUsed: kEnumerableProperty,\n isHistoryNavigation: kEnumerableProperty,\n isReloadNavigation: kEnumerableProperty,\n keepalive: kEnumerableProperty,\n integrity: kEnumerableProperty,\n cache: kEnumerableProperty,\n credentials: kEnumerableProperty,\n attribute: kEnumerableProperty,\n referrerPolicy: kEnumerableProperty,\n referrer: kEnumerableProperty,\n mode: kEnumerableProperty,\n [Symbol.toStringTag]: {\n value: 'Request',\n configurable: true\n }\n})\n\nwebidl.converters.Request = webidl.interfaceConverter(\n Request\n)\n\n// https://fetch.spec.whatwg.org/#requestinfo\nwebidl.converters.RequestInfo = function (V) {\n if (typeof V === 'string') {\n return webidl.converters.USVString(V)\n }\n\n if (V instanceof Request) {\n return webidl.converters.Request(V)\n }\n\n return webidl.converters.USVString(V)\n}\n\nwebidl.converters.AbortSignal = webidl.interfaceConverter(\n AbortSignal\n)\n\n// https://fetch.spec.whatwg.org/#requestinit\nwebidl.converters.RequestInit = webidl.dictionaryConverter([\n {\n key: 'method',\n converter: webidl.converters.ByteString\n },\n {\n key: 'headers',\n converter: webidl.converters.HeadersInit\n },\n {\n key: 'body',\n converter: webidl.nullableConverter(\n webidl.converters.BodyInit\n )\n },\n {\n key: 'referrer',\n converter: webidl.converters.USVString\n },\n {\n key: 'referrerPolicy',\n converter: webidl.converters.DOMString,\n // https://w3c.github.io/webappsec-referrer-policy/#referrer-policy\n allowedValues: referrerPolicy\n },\n {\n key: 'mode',\n converter: webidl.converters.DOMString,\n // https://fetch.spec.whatwg.org/#concept-request-mode\n allowedValues: requestMode\n },\n {\n key: 'credentials',\n converter: webidl.converters.DOMString,\n // https://fetch.spec.whatwg.org/#requestcredentials\n allowedValues: requestCredentials\n },\n {\n key: 'cache',\n converter: webidl.converters.DOMString,\n // https://fetch.spec.whatwg.org/#requestcache\n allowedValues: requestCache\n },\n {\n key: 'redirect',\n converter: webidl.converters.DOMString,\n // https://fetch.spec.whatwg.org/#requestredirect\n allowedValues: requestRedirect\n },\n {\n key: 'integrity',\n converter: webidl.converters.DOMString\n },\n {\n key: 'keepalive',\n converter: webidl.converters.boolean\n },\n {\n key: 'signal',\n converter: webidl.nullableConverter(\n (signal) => webidl.converters.AbortSignal(\n signal,\n { strict: false }\n )\n )\n },\n {\n key: 'window',\n converter: webidl.converters.any\n },\n {\n key: 'duplex',\n converter: webidl.converters.DOMString,\n allowedValues: requestDuplex\n }\n])\n\nmodule.exports = { Request, makeRequest }\n","// https://github.com/Ethan-Arrowood/undici-fetch\n\n'use strict'\n\nconst {\n Response,\n makeNetworkError,\n makeAppropriateNetworkError,\n filterResponse,\n makeResponse\n} = require('./response')\nconst { Headers } = require('./headers')\nconst { Request, makeRequest } = require('./request')\nconst zlib = require('zlib')\nconst {\n bytesMatch,\n makePolicyContainer,\n clonePolicyContainer,\n requestBadPort,\n TAOCheck,\n appendRequestOriginHeader,\n responseLocationURL,\n requestCurrentURL,\n setRequestReferrerPolicyOnRedirect,\n tryUpgradeRequestToAPotentiallyTrustworthyURL,\n createOpaqueTimingInfo,\n appendFetchMetadata,\n corsCheck,\n crossOriginResourcePolicyCheck,\n determineRequestsReferrer,\n coarsenedSharedCurrentTime,\n createDeferredPromise,\n isBlobLike,\n sameOrigin,\n isCancelled,\n isAborted,\n isErrorLike,\n fullyReadBody,\n readableStreamClose,\n isomorphicEncode,\n urlIsLocal,\n urlIsHttpHttpsScheme,\n urlHasHttpsScheme\n} = require('./util')\nconst { kState, kHeaders, kGuard, kRealm } = require('./symbols')\nconst assert = require('assert')\nconst { safelyExtractBody } = require('./body')\nconst {\n redirectStatusSet,\n nullBodyStatus,\n safeMethodsSet,\n requestBodyHeader,\n subresourceSet,\n DOMException\n} = require('./constants')\nconst { kHeadersList } = require('../core/symbols')\nconst EE = require('events')\nconst { Readable, pipeline } = require('stream')\nconst { addAbortListener, isErrored, isReadable, nodeMajor, nodeMinor } = require('../core/util')\nconst { dataURLProcessor, serializeAMimeType } = require('./dataURL')\nconst { TransformStream } = require('stream/web')\nconst { getGlobalDispatcher } = require('../global')\nconst { webidl } = require('./webidl')\nconst { STATUS_CODES } = require('http')\nconst GET_OR_HEAD = ['GET', 'HEAD']\n\n/** @type {import('buffer').resolveObjectURL} */\nlet resolveObjectURL\nlet ReadableStream = globalThis.ReadableStream\n\nclass Fetch extends EE {\n constructor (dispatcher) {\n super()\n\n this.dispatcher = dispatcher\n this.connection = null\n this.dump = false\n this.state = 'ongoing'\n // 2 terminated listeners get added per request,\n // but only 1 gets removed. If there are 20 redirects,\n // 21 listeners will be added.\n // See https://github.com/nodejs/undici/issues/1711\n // TODO (fix): Find and fix root cause for leaked listener.\n this.setMaxListeners(21)\n }\n\n terminate (reason) {\n if (this.state !== 'ongoing') {\n return\n }\n\n this.state = 'terminated'\n this.connection?.destroy(reason)\n this.emit('terminated', reason)\n }\n\n // https://fetch.spec.whatwg.org/#fetch-controller-abort\n abort (error) {\n if (this.state !== 'ongoing') {\n return\n }\n\n // 1. Set controller’s state to \"aborted\".\n this.state = 'aborted'\n\n // 2. Let fallbackError be an \"AbortError\" DOMException.\n // 3. Set error to fallbackError if it is not given.\n if (!error) {\n error = new DOMException('The operation was aborted.', 'AbortError')\n }\n\n // 4. Let serializedError be StructuredSerialize(error).\n // If that threw an exception, catch it, and let\n // serializedError be StructuredSerialize(fallbackError).\n\n // 5. Set controller’s serialized abort reason to serializedError.\n this.serializedAbortReason = error\n\n this.connection?.destroy(error)\n this.emit('terminated', error)\n }\n}\n\n// https://fetch.spec.whatwg.org/#fetch-method\nfunction fetch (input, init = {}) {\n webidl.argumentLengthCheck(arguments, 1, { header: 'globalThis.fetch' })\n\n // 1. Let p be a new promise.\n const p = createDeferredPromise()\n\n // 2. Let requestObject be the result of invoking the initial value of\n // Request as constructor with input and init as arguments. If this throws\n // an exception, reject p with it and return p.\n let requestObject\n\n try {\n requestObject = new Request(input, init)\n } catch (e) {\n p.reject(e)\n return p.promise\n }\n\n // 3. Let request be requestObject’s request.\n const request = requestObject[kState]\n\n // 4. If requestObject’s signal’s aborted flag is set, then:\n if (requestObject.signal.aborted) {\n // 1. Abort the fetch() call with p, request, null, and\n // requestObject’s signal’s abort reason.\n abortFetch(p, request, null, requestObject.signal.reason)\n\n // 2. Return p.\n return p.promise\n }\n\n // 5. Let globalObject be request’s client’s global object.\n const globalObject = request.client.globalObject\n\n // 6. If globalObject is a ServiceWorkerGlobalScope object, then set\n // request’s service-workers mode to \"none\".\n if (globalObject?.constructor?.name === 'ServiceWorkerGlobalScope') {\n request.serviceWorkers = 'none'\n }\n\n // 7. Let responseObject be null.\n let responseObject = null\n\n // 8. Let relevantRealm be this’s relevant Realm.\n const relevantRealm = null\n\n // 9. Let locallyAborted be false.\n let locallyAborted = false\n\n // 10. Let controller be null.\n let controller = null\n\n // 11. Add the following abort steps to requestObject’s signal:\n addAbortListener(\n requestObject.signal,\n () => {\n // 1. Set locallyAborted to true.\n locallyAborted = true\n\n // 2. Assert: controller is non-null.\n assert(controller != null)\n\n // 3. Abort controller with requestObject’s signal’s abort reason.\n controller.abort(requestObject.signal.reason)\n\n // 4. Abort the fetch() call with p, request, responseObject,\n // and requestObject’s signal’s abort reason.\n abortFetch(p, request, responseObject, requestObject.signal.reason)\n }\n )\n\n // 12. Let handleFetchDone given response response be to finalize and\n // report timing with response, globalObject, and \"fetch\".\n const handleFetchDone = (response) =>\n finalizeAndReportTiming(response, 'fetch')\n\n // 13. Set controller to the result of calling fetch given request,\n // with processResponseEndOfBody set to handleFetchDone, and processResponse\n // given response being these substeps:\n\n const processResponse = (response) => {\n // 1. If locallyAborted is true, terminate these substeps.\n if (locallyAborted) {\n return Promise.resolve()\n }\n\n // 2. If response’s aborted flag is set, then:\n if (response.aborted) {\n // 1. Let deserializedError be the result of deserialize a serialized\n // abort reason given controller’s serialized abort reason and\n // relevantRealm.\n\n // 2. Abort the fetch() call with p, request, responseObject, and\n // deserializedError.\n\n abortFetch(p, request, responseObject, controller.serializedAbortReason)\n return Promise.resolve()\n }\n\n // 3. If response is a network error, then reject p with a TypeError\n // and terminate these substeps.\n if (response.type === 'error') {\n p.reject(\n Object.assign(new TypeError('fetch failed'), { cause: response.error })\n )\n return Promise.resolve()\n }\n\n // 4. Set responseObject to the result of creating a Response object,\n // given response, \"immutable\", and relevantRealm.\n responseObject = new Response()\n responseObject[kState] = response\n responseObject[kRealm] = relevantRealm\n responseObject[kHeaders][kHeadersList] = response.headersList\n responseObject[kHeaders][kGuard] = 'immutable'\n responseObject[kHeaders][kRealm] = relevantRealm\n\n // 5. Resolve p with responseObject.\n p.resolve(responseObject)\n }\n\n controller = fetching({\n request,\n processResponseEndOfBody: handleFetchDone,\n processResponse,\n dispatcher: init.dispatcher ?? getGlobalDispatcher() // undici\n })\n\n // 14. Return p.\n return p.promise\n}\n\n// https://fetch.spec.whatwg.org/#finalize-and-report-timing\nfunction finalizeAndReportTiming (response, initiatorType = 'other') {\n // 1. If response is an aborted network error, then return.\n if (response.type === 'error' && response.aborted) {\n return\n }\n\n // 2. If response’s URL list is null or empty, then return.\n if (!response.urlList?.length) {\n return\n }\n\n // 3. Let originalURL be response’s URL list[0].\n const originalURL = response.urlList[0]\n\n // 4. Let timingInfo be response’s timing info.\n let timingInfo = response.timingInfo\n\n // 5. Let cacheState be response’s cache state.\n let cacheState = response.cacheState\n\n // 6. If originalURL’s scheme is not an HTTP(S) scheme, then return.\n if (!urlIsHttpHttpsScheme(originalURL)) {\n return\n }\n\n // 7. If timingInfo is null, then return.\n if (timingInfo === null) {\n return\n }\n\n // 8. If response’s timing allow passed flag is not set, then:\n if (!response.timingAllowPassed) {\n // 1. Set timingInfo to a the result of creating an opaque timing info for timingInfo.\n timingInfo = createOpaqueTimingInfo({\n startTime: timingInfo.startTime\n })\n\n // 2. Set cacheState to the empty string.\n cacheState = ''\n }\n\n // 9. Set timingInfo’s end time to the coarsened shared current time\n // given global’s relevant settings object’s cross-origin isolated\n // capability.\n // TODO: given global’s relevant settings object’s cross-origin isolated\n // capability?\n timingInfo.endTime = coarsenedSharedCurrentTime()\n\n // 10. Set response’s timing info to timingInfo.\n response.timingInfo = timingInfo\n\n // 11. Mark resource timing for timingInfo, originalURL, initiatorType,\n // global, and cacheState.\n markResourceTiming(\n timingInfo,\n originalURL,\n initiatorType,\n globalThis,\n cacheState\n )\n}\n\n// https://w3c.github.io/resource-timing/#dfn-mark-resource-timing\nfunction markResourceTiming (timingInfo, originalURL, initiatorType, globalThis, cacheState) {\n if (nodeMajor > 18 || (nodeMajor === 18 && nodeMinor >= 2)) {\n performance.markResourceTiming(timingInfo, originalURL.href, initiatorType, globalThis, cacheState)\n }\n}\n\n// https://fetch.spec.whatwg.org/#abort-fetch\nfunction abortFetch (p, request, responseObject, error) {\n // Note: AbortSignal.reason was added in node v17.2.0\n // which would give us an undefined error to reject with.\n // Remove this once node v16 is no longer supported.\n if (!error) {\n error = new DOMException('The operation was aborted.', 'AbortError')\n }\n\n // 1. Reject promise with error.\n p.reject(error)\n\n // 2. If request’s body is not null and is readable, then cancel request’s\n // body with error.\n if (request.body != null && isReadable(request.body?.stream)) {\n request.body.stream.cancel(error).catch((err) => {\n if (err.code === 'ERR_INVALID_STATE') {\n // Node bug?\n return\n }\n throw err\n })\n }\n\n // 3. If responseObject is null, then return.\n if (responseObject == null) {\n return\n }\n\n // 4. Let response be responseObject’s response.\n const response = responseObject[kState]\n\n // 5. If response’s body is not null and is readable, then error response’s\n // body with error.\n if (response.body != null && isReadable(response.body?.stream)) {\n response.body.stream.cancel(error).catch((err) => {\n if (err.code === 'ERR_INVALID_STATE') {\n // Node bug?\n return\n }\n throw err\n })\n }\n}\n\n// https://fetch.spec.whatwg.org/#fetching\nfunction fetching ({\n request,\n processRequestBodyChunkLength,\n processRequestEndOfBody,\n processResponse,\n processResponseEndOfBody,\n processResponseConsumeBody,\n useParallelQueue = false,\n dispatcher // undici\n}) {\n // 1. Let taskDestination be null.\n let taskDestination = null\n\n // 2. Let crossOriginIsolatedCapability be false.\n let crossOriginIsolatedCapability = false\n\n // 3. If request’s client is non-null, then:\n if (request.client != null) {\n // 1. Set taskDestination to request’s client’s global object.\n taskDestination = request.client.globalObject\n\n // 2. Set crossOriginIsolatedCapability to request’s client’s cross-origin\n // isolated capability.\n crossOriginIsolatedCapability =\n request.client.crossOriginIsolatedCapability\n }\n\n // 4. If useParallelQueue is true, then set taskDestination to the result of\n // starting a new parallel queue.\n // TODO\n\n // 5. Let timingInfo be a new fetch timing info whose start time and\n // post-redirect start time are the coarsened shared current time given\n // crossOriginIsolatedCapability.\n const currenTime = coarsenedSharedCurrentTime(crossOriginIsolatedCapability)\n const timingInfo = createOpaqueTimingInfo({\n startTime: currenTime\n })\n\n // 6. Let fetchParams be a new fetch params whose\n // request is request,\n // timing info is timingInfo,\n // process request body chunk length is processRequestBodyChunkLength,\n // process request end-of-body is processRequestEndOfBody,\n // process response is processResponse,\n // process response consume body is processResponseConsumeBody,\n // process response end-of-body is processResponseEndOfBody,\n // task destination is taskDestination,\n // and cross-origin isolated capability is crossOriginIsolatedCapability.\n const fetchParams = {\n controller: new Fetch(dispatcher),\n request,\n timingInfo,\n processRequestBodyChunkLength,\n processRequestEndOfBody,\n processResponse,\n processResponseConsumeBody,\n processResponseEndOfBody,\n taskDestination,\n crossOriginIsolatedCapability\n }\n\n // 7. If request’s body is a byte sequence, then set request’s body to\n // request’s body as a body.\n // NOTE: Since fetching is only called from fetch, body should already be\n // extracted.\n assert(!request.body || request.body.stream)\n\n // 8. If request’s window is \"client\", then set request’s window to request’s\n // client, if request’s client’s global object is a Window object; otherwise\n // \"no-window\".\n if (request.window === 'client') {\n // TODO: What if request.client is null?\n request.window =\n request.client?.globalObject?.constructor?.name === 'Window'\n ? request.client\n : 'no-window'\n }\n\n // 9. If request’s origin is \"client\", then set request’s origin to request’s\n // client’s origin.\n if (request.origin === 'client') {\n // TODO: What if request.client is null?\n request.origin = request.client?.origin\n }\n\n // 10. If all of the following conditions are true:\n // TODO\n\n // 11. If request’s policy container is \"client\", then:\n if (request.policyContainer === 'client') {\n // 1. If request’s client is non-null, then set request’s policy\n // container to a clone of request’s client’s policy container. [HTML]\n if (request.client != null) {\n request.policyContainer = clonePolicyContainer(\n request.client.policyContainer\n )\n } else {\n // 2. Otherwise, set request’s policy container to a new policy\n // container.\n request.policyContainer = makePolicyContainer()\n }\n }\n\n // 12. If request’s header list does not contain `Accept`, then:\n if (!request.headersList.contains('accept')) {\n // 1. Let value be `*/*`.\n const value = '*/*'\n\n // 2. A user agent should set value to the first matching statement, if\n // any, switching on request’s destination:\n // \"document\"\n // \"frame\"\n // \"iframe\"\n // `text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8`\n // \"image\"\n // `image/png,image/svg+xml,image/*;q=0.8,*/*;q=0.5`\n // \"style\"\n // `text/css,*/*;q=0.1`\n // TODO\n\n // 3. Append `Accept`/value to request’s header list.\n request.headersList.append('accept', value)\n }\n\n // 13. If request’s header list does not contain `Accept-Language`, then\n // user agents should append `Accept-Language`/an appropriate value to\n // request’s header list.\n if (!request.headersList.contains('accept-language')) {\n request.headersList.append('accept-language', '*')\n }\n\n // 14. If request’s priority is null, then use request’s initiator and\n // destination appropriately in setting request’s priority to a\n // user-agent-defined object.\n if (request.priority === null) {\n // TODO\n }\n\n // 15. If request is a subresource request, then:\n if (subresourceSet.has(request.destination)) {\n // TODO\n }\n\n // 16. Run main fetch given fetchParams.\n mainFetch(fetchParams)\n .catch(err => {\n fetchParams.controller.terminate(err)\n })\n\n // 17. Return fetchParam's controller\n return fetchParams.controller\n}\n\n// https://fetch.spec.whatwg.org/#concept-main-fetch\nasync function mainFetch (fetchParams, recursive = false) {\n // 1. Let request be fetchParams’s request.\n const request = fetchParams.request\n\n // 2. Let response be null.\n let response = null\n\n // 3. If request’s local-URLs-only flag is set and request’s current URL is\n // not local, then set response to a network error.\n if (request.localURLsOnly && !urlIsLocal(requestCurrentURL(request))) {\n response = makeNetworkError('local URLs only')\n }\n\n // 4. Run report Content Security Policy violations for request.\n // TODO\n\n // 5. Upgrade request to a potentially trustworthy URL, if appropriate.\n tryUpgradeRequestToAPotentiallyTrustworthyURL(request)\n\n // 6. If should request be blocked due to a bad port, should fetching request\n // be blocked as mixed content, or should request be blocked by Content\n // Security Policy returns blocked, then set response to a network error.\n if (requestBadPort(request) === 'blocked') {\n response = makeNetworkError('bad port')\n }\n // TODO: should fetching request be blocked as mixed content?\n // TODO: should request be blocked by Content Security Policy?\n\n // 7. If request’s referrer policy is the empty string, then set request’s\n // referrer policy to request’s policy container’s referrer policy.\n if (request.referrerPolicy === '') {\n request.referrerPolicy = request.policyContainer.referrerPolicy\n }\n\n // 8. If request’s referrer is not \"no-referrer\", then set request’s\n // referrer to the result of invoking determine request’s referrer.\n if (request.referrer !== 'no-referrer') {\n request.referrer = determineRequestsReferrer(request)\n }\n\n // 9. Set request’s current URL’s scheme to \"https\" if all of the following\n // conditions are true:\n // - request’s current URL’s scheme is \"http\"\n // - request’s current URL’s host is a domain\n // - Matching request’s current URL’s host per Known HSTS Host Domain Name\n // Matching results in either a superdomain match with an asserted\n // includeSubDomains directive or a congruent match (with or without an\n // asserted includeSubDomains directive). [HSTS]\n // TODO\n\n // 10. If recursive is false, then run the remaining steps in parallel.\n // TODO\n\n // 11. If response is null, then set response to the result of running\n // the steps corresponding to the first matching statement:\n if (response === null) {\n response = await (async () => {\n const currentURL = requestCurrentURL(request)\n\n if (\n // - request’s current URL’s origin is same origin with request’s origin,\n // and request’s response tainting is \"basic\"\n (sameOrigin(currentURL, request.url) && request.responseTainting === 'basic') ||\n // request’s current URL’s scheme is \"data\"\n (currentURL.protocol === 'data:') ||\n // - request’s mode is \"navigate\" or \"websocket\"\n (request.mode === 'navigate' || request.mode === 'websocket')\n ) {\n // 1. Set request’s response tainting to \"basic\".\n request.responseTainting = 'basic'\n\n // 2. Return the result of running scheme fetch given fetchParams.\n return await schemeFetch(fetchParams)\n }\n\n // request’s mode is \"same-origin\"\n if (request.mode === 'same-origin') {\n // 1. Return a network error.\n return makeNetworkError('request mode cannot be \"same-origin\"')\n }\n\n // request’s mode is \"no-cors\"\n if (request.mode === 'no-cors') {\n // 1. If request’s redirect mode is not \"follow\", then return a network\n // error.\n if (request.redirect !== 'follow') {\n return makeNetworkError(\n 'redirect mode cannot be \"follow\" for \"no-cors\" request'\n )\n }\n\n // 2. Set request’s response tainting to \"opaque\".\n request.responseTainting = 'opaque'\n\n // 3. Return the result of running scheme fetch given fetchParams.\n return await schemeFetch(fetchParams)\n }\n\n // request’s current URL’s scheme is not an HTTP(S) scheme\n if (!urlIsHttpHttpsScheme(requestCurrentURL(request))) {\n // Return a network error.\n return makeNetworkError('URL scheme must be a HTTP(S) scheme')\n }\n\n // - request’s use-CORS-preflight flag is set\n // - request’s unsafe-request flag is set and either request’s method is\n // not a CORS-safelisted method or CORS-unsafe request-header names with\n // request’s header list is not empty\n // 1. Set request’s response tainting to \"cors\".\n // 2. Let corsWithPreflightResponse be the result of running HTTP fetch\n // given fetchParams and true.\n // 3. If corsWithPreflightResponse is a network error, then clear cache\n // entries using request.\n // 4. Return corsWithPreflightResponse.\n // TODO\n\n // Otherwise\n // 1. Set request’s response tainting to \"cors\".\n request.responseTainting = 'cors'\n\n // 2. Return the result of running HTTP fetch given fetchParams.\n return await httpFetch(fetchParams)\n })()\n }\n\n // 12. If recursive is true, then return response.\n if (recursive) {\n return response\n }\n\n // 13. If response is not a network error and response is not a filtered\n // response, then:\n if (response.status !== 0 && !response.internalResponse) {\n // If request’s response tainting is \"cors\", then:\n if (request.responseTainting === 'cors') {\n // 1. Let headerNames be the result of extracting header list values\n // given `Access-Control-Expose-Headers` and response’s header list.\n // TODO\n // 2. If request’s credentials mode is not \"include\" and headerNames\n // contains `*`, then set response’s CORS-exposed header-name list to\n // all unique header names in response’s header list.\n // TODO\n // 3. Otherwise, if headerNames is not null or failure, then set\n // response’s CORS-exposed header-name list to headerNames.\n // TODO\n }\n\n // Set response to the following filtered response with response as its\n // internal response, depending on request’s response tainting:\n if (request.responseTainting === 'basic') {\n response = filterResponse(response, 'basic')\n } else if (request.responseTainting === 'cors') {\n response = filterResponse(response, 'cors')\n } else if (request.responseTainting === 'opaque') {\n response = filterResponse(response, 'opaque')\n } else {\n assert(false)\n }\n }\n\n // 14. Let internalResponse be response, if response is a network error,\n // and response’s internal response otherwise.\n let internalResponse =\n response.status === 0 ? response : response.internalResponse\n\n // 15. If internalResponse’s URL list is empty, then set it to a clone of\n // request’s URL list.\n if (internalResponse.urlList.length === 0) {\n internalResponse.urlList.push(...request.urlList)\n }\n\n // 16. If request’s timing allow failed flag is unset, then set\n // internalResponse’s timing allow passed flag.\n if (!request.timingAllowFailed) {\n response.timingAllowPassed = true\n }\n\n // 17. If response is not a network error and any of the following returns\n // blocked\n // - should internalResponse to request be blocked as mixed content\n // - should internalResponse to request be blocked by Content Security Policy\n // - should internalResponse to request be blocked due to its MIME type\n // - should internalResponse to request be blocked due to nosniff\n // TODO\n\n // 18. If response’s type is \"opaque\", internalResponse’s status is 206,\n // internalResponse’s range-requested flag is set, and request’s header\n // list does not contain `Range`, then set response and internalResponse\n // to a network error.\n if (\n response.type === 'opaque' &&\n internalResponse.status === 206 &&\n internalResponse.rangeRequested &&\n !request.headers.contains('range')\n ) {\n response = internalResponse = makeNetworkError()\n }\n\n // 19. If response is not a network error and either request’s method is\n // `HEAD` or `CONNECT`, or internalResponse’s status is a null body status,\n // set internalResponse’s body to null and disregard any enqueuing toward\n // it (if any).\n if (\n response.status !== 0 &&\n (request.method === 'HEAD' ||\n request.method === 'CONNECT' ||\n nullBodyStatus.includes(internalResponse.status))\n ) {\n internalResponse.body = null\n fetchParams.controller.dump = true\n }\n\n // 20. If request’s integrity metadata is not the empty string, then:\n if (request.integrity) {\n // 1. Let processBodyError be this step: run fetch finale given fetchParams\n // and a network error.\n const processBodyError = (reason) =>\n fetchFinale(fetchParams, makeNetworkError(reason))\n\n // 2. If request’s response tainting is \"opaque\", or response’s body is null,\n // then run processBodyError and abort these steps.\n if (request.responseTainting === 'opaque' || response.body == null) {\n processBodyError(response.error)\n return\n }\n\n // 3. Let processBody given bytes be these steps:\n const processBody = (bytes) => {\n // 1. If bytes do not match request’s integrity metadata,\n // then run processBodyError and abort these steps. [SRI]\n if (!bytesMatch(bytes, request.integrity)) {\n processBodyError('integrity mismatch')\n return\n }\n\n // 2. Set response’s body to bytes as a body.\n response.body = safelyExtractBody(bytes)[0]\n\n // 3. Run fetch finale given fetchParams and response.\n fetchFinale(fetchParams, response)\n }\n\n // 4. Fully read response’s body given processBody and processBodyError.\n await fullyReadBody(response.body, processBody, processBodyError)\n } else {\n // 21. Otherwise, run fetch finale given fetchParams and response.\n fetchFinale(fetchParams, response)\n }\n}\n\n// https://fetch.spec.whatwg.org/#concept-scheme-fetch\n// given a fetch params fetchParams\nfunction schemeFetch (fetchParams) {\n // Note: since the connection is destroyed on redirect, which sets fetchParams to a\n // cancelled state, we do not want this condition to trigger *unless* there have been\n // no redirects. See https://github.com/nodejs/undici/issues/1776\n // 1. If fetchParams is canceled, then return the appropriate network error for fetchParams.\n if (isCancelled(fetchParams) && fetchParams.request.redirectCount === 0) {\n return Promise.resolve(makeAppropriateNetworkError(fetchParams))\n }\n\n // 2. Let request be fetchParams’s request.\n const { request } = fetchParams\n\n const { protocol: scheme } = requestCurrentURL(request)\n\n // 3. Switch on request’s current URL’s scheme and run the associated steps:\n switch (scheme) {\n case 'about:': {\n // If request’s current URL’s path is the string \"blank\", then return a new response\n // whose status message is `OK`, header list is « (`Content-Type`, `text/html;charset=utf-8`) »,\n // and body is the empty byte sequence as a body.\n\n // Otherwise, return a network error.\n return Promise.resolve(makeNetworkError('about scheme is not supported'))\n }\n case 'blob:': {\n if (!resolveObjectURL) {\n resolveObjectURL = require('buffer').resolveObjectURL\n }\n\n // 1. Let blobURLEntry be request’s current URL’s blob URL entry.\n const blobURLEntry = requestCurrentURL(request)\n\n // https://github.com/web-platform-tests/wpt/blob/7b0ebaccc62b566a1965396e5be7bb2bc06f841f/FileAPI/url/resources/fetch-tests.js#L52-L56\n // Buffer.resolveObjectURL does not ignore URL queries.\n if (blobURLEntry.search.length !== 0) {\n return Promise.resolve(makeNetworkError('NetworkError when attempting to fetch resource.'))\n }\n\n const blobURLEntryObject = resolveObjectURL(blobURLEntry.toString())\n\n // 2. If request’s method is not `GET`, blobURLEntry is null, or blobURLEntry’s\n // object is not a Blob object, then return a network error.\n if (request.method !== 'GET' || !isBlobLike(blobURLEntryObject)) {\n return Promise.resolve(makeNetworkError('invalid method'))\n }\n\n // 3. Let bodyWithType be the result of safely extracting blobURLEntry’s object.\n const bodyWithType = safelyExtractBody(blobURLEntryObject)\n\n // 4. Let body be bodyWithType’s body.\n const body = bodyWithType[0]\n\n // 5. Let length be body’s length, serialized and isomorphic encoded.\n const length = isomorphicEncode(`${body.length}`)\n\n // 6. Let type be bodyWithType’s type if it is non-null; otherwise the empty byte sequence.\n const type = bodyWithType[1] ?? ''\n\n // 7. Return a new response whose status message is `OK`, header list is\n // « (`Content-Length`, length), (`Content-Type`, type) », and body is body.\n const response = makeResponse({\n statusText: 'OK',\n headersList: [\n ['content-length', { name: 'Content-Length', value: length }],\n ['content-type', { name: 'Content-Type', value: type }]\n ]\n })\n\n response.body = body\n\n return Promise.resolve(response)\n }\n case 'data:': {\n // 1. Let dataURLStruct be the result of running the\n // data: URL processor on request’s current URL.\n const currentURL = requestCurrentURL(request)\n const dataURLStruct = dataURLProcessor(currentURL)\n\n // 2. If dataURLStruct is failure, then return a\n // network error.\n if (dataURLStruct === 'failure') {\n return Promise.resolve(makeNetworkError('failed to fetch the data URL'))\n }\n\n // 3. Let mimeType be dataURLStruct’s MIME type, serialized.\n const mimeType = serializeAMimeType(dataURLStruct.mimeType)\n\n // 4. Return a response whose status message is `OK`,\n // header list is « (`Content-Type`, mimeType) »,\n // and body is dataURLStruct’s body as a body.\n return Promise.resolve(makeResponse({\n statusText: 'OK',\n headersList: [\n ['content-type', { name: 'Content-Type', value: mimeType }]\n ],\n body: safelyExtractBody(dataURLStruct.body)[0]\n }))\n }\n case 'file:': {\n // For now, unfortunate as it is, file URLs are left as an exercise for the reader.\n // When in doubt, return a network error.\n return Promise.resolve(makeNetworkError('not implemented... yet...'))\n }\n case 'http:':\n case 'https:': {\n // Return the result of running HTTP fetch given fetchParams.\n\n return httpFetch(fetchParams)\n .catch((err) => makeNetworkError(err))\n }\n default: {\n return Promise.resolve(makeNetworkError('unknown scheme'))\n }\n }\n}\n\n// https://fetch.spec.whatwg.org/#finalize-response\nfunction finalizeResponse (fetchParams, response) {\n // 1. Set fetchParams’s request’s done flag.\n fetchParams.request.done = true\n\n // 2, If fetchParams’s process response done is not null, then queue a fetch\n // task to run fetchParams’s process response done given response, with\n // fetchParams’s task destination.\n if (fetchParams.processResponseDone != null) {\n queueMicrotask(() => fetchParams.processResponseDone(response))\n }\n}\n\n// https://fetch.spec.whatwg.org/#fetch-finale\nfunction fetchFinale (fetchParams, response) {\n // 1. If response is a network error, then:\n if (response.type === 'error') {\n // 1. Set response’s URL list to « fetchParams’s request’s URL list[0] ».\n response.urlList = [fetchParams.request.urlList[0]]\n\n // 2. Set response’s timing info to the result of creating an opaque timing\n // info for fetchParams’s timing info.\n response.timingInfo = createOpaqueTimingInfo({\n startTime: fetchParams.timingInfo.startTime\n })\n }\n\n // 2. Let processResponseEndOfBody be the following steps:\n const processResponseEndOfBody = () => {\n // 1. Set fetchParams’s request’s done flag.\n fetchParams.request.done = true\n\n // If fetchParams’s process response end-of-body is not null,\n // then queue a fetch task to run fetchParams’s process response\n // end-of-body given response with fetchParams’s task destination.\n if (fetchParams.processResponseEndOfBody != null) {\n queueMicrotask(() => fetchParams.processResponseEndOfBody(response))\n }\n }\n\n // 3. If fetchParams’s process response is non-null, then queue a fetch task\n // to run fetchParams’s process response given response, with fetchParams’s\n // task destination.\n if (fetchParams.processResponse != null) {\n queueMicrotask(() => fetchParams.processResponse(response))\n }\n\n // 4. If response’s body is null, then run processResponseEndOfBody.\n if (response.body == null) {\n processResponseEndOfBody()\n } else {\n // 5. Otherwise:\n\n // 1. Let transformStream be a new a TransformStream.\n\n // 2. Let identityTransformAlgorithm be an algorithm which, given chunk,\n // enqueues chunk in transformStream.\n const identityTransformAlgorithm = (chunk, controller) => {\n controller.enqueue(chunk)\n }\n\n // 3. Set up transformStream with transformAlgorithm set to identityTransformAlgorithm\n // and flushAlgorithm set to processResponseEndOfBody.\n const transformStream = new TransformStream({\n start () {},\n transform: identityTransformAlgorithm,\n flush: processResponseEndOfBody\n }, {\n size () {\n return 1\n }\n }, {\n size () {\n return 1\n }\n })\n\n // 4. Set response’s body to the result of piping response’s body through transformStream.\n response.body = { stream: response.body.stream.pipeThrough(transformStream) }\n }\n\n // 6. If fetchParams’s process response consume body is non-null, then:\n if (fetchParams.processResponseConsumeBody != null) {\n // 1. Let processBody given nullOrBytes be this step: run fetchParams’s\n // process response consume body given response and nullOrBytes.\n const processBody = (nullOrBytes) => fetchParams.processResponseConsumeBody(response, nullOrBytes)\n\n // 2. Let processBodyError be this step: run fetchParams’s process\n // response consume body given response and failure.\n const processBodyError = (failure) => fetchParams.processResponseConsumeBody(response, failure)\n\n // 3. If response’s body is null, then queue a fetch task to run processBody\n // given null, with fetchParams’s task destination.\n if (response.body == null) {\n queueMicrotask(() => processBody(null))\n } else {\n // 4. Otherwise, fully read response’s body given processBody, processBodyError,\n // and fetchParams’s task destination.\n return fullyReadBody(response.body, processBody, processBodyError)\n }\n return Promise.resolve()\n }\n}\n\n// https://fetch.spec.whatwg.org/#http-fetch\nasync function httpFetch (fetchParams) {\n // 1. Let request be fetchParams’s request.\n const request = fetchParams.request\n\n // 2. Let response be null.\n let response = null\n\n // 3. Let actualResponse be null.\n let actualResponse = null\n\n // 4. Let timingInfo be fetchParams’s timing info.\n const timingInfo = fetchParams.timingInfo\n\n // 5. If request’s service-workers mode is \"all\", then:\n if (request.serviceWorkers === 'all') {\n // TODO\n }\n\n // 6. If response is null, then:\n if (response === null) {\n // 1. If makeCORSPreflight is true and one of these conditions is true:\n // TODO\n\n // 2. If request’s redirect mode is \"follow\", then set request’s\n // service-workers mode to \"none\".\n if (request.redirect === 'follow') {\n request.serviceWorkers = 'none'\n }\n\n // 3. Set response and actualResponse to the result of running\n // HTTP-network-or-cache fetch given fetchParams.\n actualResponse = response = await httpNetworkOrCacheFetch(fetchParams)\n\n // 4. If request’s response tainting is \"cors\" and a CORS check\n // for request and response returns failure, then return a network error.\n if (\n request.responseTainting === 'cors' &&\n corsCheck(request, response) === 'failure'\n ) {\n return makeNetworkError('cors failure')\n }\n\n // 5. If the TAO check for request and response returns failure, then set\n // request’s timing allow failed flag.\n if (TAOCheck(request, response) === 'failure') {\n request.timingAllowFailed = true\n }\n }\n\n // 7. If either request’s response tainting or response’s type\n // is \"opaque\", and the cross-origin resource policy check with\n // request’s origin, request’s client, request’s destination,\n // and actualResponse returns blocked, then return a network error.\n if (\n (request.responseTainting === 'opaque' || response.type === 'opaque') &&\n crossOriginResourcePolicyCheck(\n request.origin,\n request.client,\n request.destination,\n actualResponse\n ) === 'blocked'\n ) {\n return makeNetworkError('blocked')\n }\n\n // 8. If actualResponse’s status is a redirect status, then:\n if (redirectStatusSet.has(actualResponse.status)) {\n // 1. If actualResponse’s status is not 303, request’s body is not null,\n // and the connection uses HTTP/2, then user agents may, and are even\n // encouraged to, transmit an RST_STREAM frame.\n // See, https://github.com/whatwg/fetch/issues/1288\n if (request.redirect !== 'manual') {\n fetchParams.controller.connection.destroy()\n }\n\n // 2. Switch on request’s redirect mode:\n if (request.redirect === 'error') {\n // Set response to a network error.\n response = makeNetworkError('unexpected redirect')\n } else if (request.redirect === 'manual') {\n // Set response to an opaque-redirect filtered response whose internal\n // response is actualResponse.\n // NOTE(spec): On the web this would return an `opaqueredirect` response,\n // but that doesn't make sense server side.\n // See https://github.com/nodejs/undici/issues/1193.\n response = actualResponse\n } else if (request.redirect === 'follow') {\n // Set response to the result of running HTTP-redirect fetch given\n // fetchParams and response.\n response = await httpRedirectFetch(fetchParams, response)\n } else {\n assert(false)\n }\n }\n\n // 9. Set response’s timing info to timingInfo.\n response.timingInfo = timingInfo\n\n // 10. Return response.\n return response\n}\n\n// https://fetch.spec.whatwg.org/#http-redirect-fetch\nfunction httpRedirectFetch (fetchParams, response) {\n // 1. Let request be fetchParams’s request.\n const request = fetchParams.request\n\n // 2. Let actualResponse be response, if response is not a filtered response,\n // and response’s internal response otherwise.\n const actualResponse = response.internalResponse\n ? response.internalResponse\n : response\n\n // 3. Let locationURL be actualResponse’s location URL given request’s current\n // URL’s fragment.\n let locationURL\n\n try {\n locationURL = responseLocationURL(\n actualResponse,\n requestCurrentURL(request).hash\n )\n\n // 4. If locationURL is null, then return response.\n if (locationURL == null) {\n return response\n }\n } catch (err) {\n // 5. If locationURL is failure, then return a network error.\n return Promise.resolve(makeNetworkError(err))\n }\n\n // 6. If locationURL’s scheme is not an HTTP(S) scheme, then return a network\n // error.\n if (!urlIsHttpHttpsScheme(locationURL)) {\n return Promise.resolve(makeNetworkError('URL scheme must be a HTTP(S) scheme'))\n }\n\n // 7. If request’s redirect count is 20, then return a network error.\n if (request.redirectCount === 20) {\n return Promise.resolve(makeNetworkError('redirect count exceeded'))\n }\n\n // 8. Increase request’s redirect count by 1.\n request.redirectCount += 1\n\n // 9. If request’s mode is \"cors\", locationURL includes credentials, and\n // request’s origin is not same origin with locationURL’s origin, then return\n // a network error.\n if (\n request.mode === 'cors' &&\n (locationURL.username || locationURL.password) &&\n !sameOrigin(request, locationURL)\n ) {\n return Promise.resolve(makeNetworkError('cross origin not allowed for request mode \"cors\"'))\n }\n\n // 10. If request’s response tainting is \"cors\" and locationURL includes\n // credentials, then return a network error.\n if (\n request.responseTainting === 'cors' &&\n (locationURL.username || locationURL.password)\n ) {\n return Promise.resolve(makeNetworkError(\n 'URL cannot contain credentials for request mode \"cors\"'\n ))\n }\n\n // 11. If actualResponse’s status is not 303, request’s body is non-null,\n // and request’s body’s source is null, then return a network error.\n if (\n actualResponse.status !== 303 &&\n request.body != null &&\n request.body.source == null\n ) {\n return Promise.resolve(makeNetworkError())\n }\n\n // 12. If one of the following is true\n // - actualResponse’s status is 301 or 302 and request’s method is `POST`\n // - actualResponse’s status is 303 and request’s method is not `GET` or `HEAD`\n if (\n ([301, 302].includes(actualResponse.status) && request.method === 'POST') ||\n (actualResponse.status === 303 &&\n !GET_OR_HEAD.includes(request.method))\n ) {\n // then:\n // 1. Set request’s method to `GET` and request’s body to null.\n request.method = 'GET'\n request.body = null\n\n // 2. For each headerName of request-body-header name, delete headerName from\n // request’s header list.\n for (const headerName of requestBodyHeader) {\n request.headersList.delete(headerName)\n }\n }\n\n // 13. If request’s current URL’s origin is not same origin with locationURL’s\n // origin, then for each headerName of CORS non-wildcard request-header name,\n // delete headerName from request’s header list.\n if (!sameOrigin(requestCurrentURL(request), locationURL)) {\n // https://fetch.spec.whatwg.org/#cors-non-wildcard-request-header-name\n request.headersList.delete('authorization')\n\n // https://fetch.spec.whatwg.org/#authentication-entries\n request.headersList.delete('proxy-authorization', true)\n\n // \"Cookie\" and \"Host\" are forbidden request-headers, which undici doesn't implement.\n request.headersList.delete('cookie')\n request.headersList.delete('host')\n }\n\n // 14. If request’s body is non-null, then set request’s body to the first return\n // value of safely extracting request’s body’s source.\n if (request.body != null) {\n assert(request.body.source != null)\n request.body = safelyExtractBody(request.body.source)[0]\n }\n\n // 15. Let timingInfo be fetchParams’s timing info.\n const timingInfo = fetchParams.timingInfo\n\n // 16. Set timingInfo’s redirect end time and post-redirect start time to the\n // coarsened shared current time given fetchParams’s cross-origin isolated\n // capability.\n timingInfo.redirectEndTime = timingInfo.postRedirectStartTime =\n coarsenedSharedCurrentTime(fetchParams.crossOriginIsolatedCapability)\n\n // 17. If timingInfo’s redirect start time is 0, then set timingInfo’s\n // redirect start time to timingInfo’s start time.\n if (timingInfo.redirectStartTime === 0) {\n timingInfo.redirectStartTime = timingInfo.startTime\n }\n\n // 18. Append locationURL to request’s URL list.\n request.urlList.push(locationURL)\n\n // 19. Invoke set request’s referrer policy on redirect on request and\n // actualResponse.\n setRequestReferrerPolicyOnRedirect(request, actualResponse)\n\n // 20. Return the result of running main fetch given fetchParams and true.\n return mainFetch(fetchParams, true)\n}\n\n// https://fetch.spec.whatwg.org/#http-network-or-cache-fetch\nasync function httpNetworkOrCacheFetch (\n fetchParams,\n isAuthenticationFetch = false,\n isNewConnectionFetch = false\n) {\n // 1. Let request be fetchParams’s request.\n const request = fetchParams.request\n\n // 2. Let httpFetchParams be null.\n let httpFetchParams = null\n\n // 3. Let httpRequest be null.\n let httpRequest = null\n\n // 4. Let response be null.\n let response = null\n\n // 5. Let storedResponse be null.\n // TODO: cache\n\n // 6. Let httpCache be null.\n const httpCache = null\n\n // 7. Let the revalidatingFlag be unset.\n const revalidatingFlag = false\n\n // 8. Run these steps, but abort when the ongoing fetch is terminated:\n\n // 1. If request’s window is \"no-window\" and request’s redirect mode is\n // \"error\", then set httpFetchParams to fetchParams and httpRequest to\n // request.\n if (request.window === 'no-window' && request.redirect === 'error') {\n httpFetchParams = fetchParams\n httpRequest = request\n } else {\n // Otherwise:\n\n // 1. Set httpRequest to a clone of request.\n httpRequest = makeRequest(request)\n\n // 2. Set httpFetchParams to a copy of fetchParams.\n httpFetchParams = { ...fetchParams }\n\n // 3. Set httpFetchParams’s request to httpRequest.\n httpFetchParams.request = httpRequest\n }\n\n // 3. Let includeCredentials be true if one of\n const includeCredentials =\n request.credentials === 'include' ||\n (request.credentials === 'same-origin' &&\n request.responseTainting === 'basic')\n\n // 4. Let contentLength be httpRequest’s body’s length, if httpRequest’s\n // body is non-null; otherwise null.\n const contentLength = httpRequest.body ? httpRequest.body.length : null\n\n // 5. Let contentLengthHeaderValue be null.\n let contentLengthHeaderValue = null\n\n // 6. If httpRequest’s body is null and httpRequest’s method is `POST` or\n // `PUT`, then set contentLengthHeaderValue to `0`.\n if (\n httpRequest.body == null &&\n ['POST', 'PUT'].includes(httpRequest.method)\n ) {\n contentLengthHeaderValue = '0'\n }\n\n // 7. If contentLength is non-null, then set contentLengthHeaderValue to\n // contentLength, serialized and isomorphic encoded.\n if (contentLength != null) {\n contentLengthHeaderValue = isomorphicEncode(`${contentLength}`)\n }\n\n // 8. If contentLengthHeaderValue is non-null, then append\n // `Content-Length`/contentLengthHeaderValue to httpRequest’s header\n // list.\n if (contentLengthHeaderValue != null) {\n httpRequest.headersList.append('content-length', contentLengthHeaderValue)\n }\n\n // 9. If contentLengthHeaderValue is non-null, then append (`Content-Length`,\n // contentLengthHeaderValue) to httpRequest’s header list.\n\n // 10. If contentLength is non-null and httpRequest’s keepalive is true,\n // then:\n if (contentLength != null && httpRequest.keepalive) {\n // NOTE: keepalive is a noop outside of browser context.\n }\n\n // 11. If httpRequest’s referrer is a URL, then append\n // `Referer`/httpRequest’s referrer, serialized and isomorphic encoded,\n // to httpRequest’s header list.\n if (httpRequest.referrer instanceof URL) {\n httpRequest.headersList.append('referer', isomorphicEncode(httpRequest.referrer.href))\n }\n\n // 12. Append a request `Origin` header for httpRequest.\n appendRequestOriginHeader(httpRequest)\n\n // 13. Append the Fetch metadata headers for httpRequest. [FETCH-METADATA]\n appendFetchMetadata(httpRequest)\n\n // 14. If httpRequest’s header list does not contain `User-Agent`, then\n // user agents should append `User-Agent`/default `User-Agent` value to\n // httpRequest’s header list.\n if (!httpRequest.headersList.contains('user-agent')) {\n httpRequest.headersList.append('user-agent', typeof esbuildDetection === 'undefined' ? 'undici' : 'node')\n }\n\n // 15. If httpRequest’s cache mode is \"default\" and httpRequest’s header\n // list contains `If-Modified-Since`, `If-None-Match`,\n // `If-Unmodified-Since`, `If-Match`, or `If-Range`, then set\n // httpRequest’s cache mode to \"no-store\".\n if (\n httpRequest.cache === 'default' &&\n (httpRequest.headersList.contains('if-modified-since') ||\n httpRequest.headersList.contains('if-none-match') ||\n httpRequest.headersList.contains('if-unmodified-since') ||\n httpRequest.headersList.contains('if-match') ||\n httpRequest.headersList.contains('if-range'))\n ) {\n httpRequest.cache = 'no-store'\n }\n\n // 16. If httpRequest’s cache mode is \"no-cache\", httpRequest’s prevent\n // no-cache cache-control header modification flag is unset, and\n // httpRequest’s header list does not contain `Cache-Control`, then append\n // `Cache-Control`/`max-age=0` to httpRequest’s header list.\n if (\n httpRequest.cache === 'no-cache' &&\n !httpRequest.preventNoCacheCacheControlHeaderModification &&\n !httpRequest.headersList.contains('cache-control')\n ) {\n httpRequest.headersList.append('cache-control', 'max-age=0')\n }\n\n // 17. If httpRequest’s cache mode is \"no-store\" or \"reload\", then:\n if (httpRequest.cache === 'no-store' || httpRequest.cache === 'reload') {\n // 1. If httpRequest’s header list does not contain `Pragma`, then append\n // `Pragma`/`no-cache` to httpRequest’s header list.\n if (!httpRequest.headersList.contains('pragma')) {\n httpRequest.headersList.append('pragma', 'no-cache')\n }\n\n // 2. If httpRequest’s header list does not contain `Cache-Control`,\n // then append `Cache-Control`/`no-cache` to httpRequest’s header list.\n if (!httpRequest.headersList.contains('cache-control')) {\n httpRequest.headersList.append('cache-control', 'no-cache')\n }\n }\n\n // 18. If httpRequest’s header list contains `Range`, then append\n // `Accept-Encoding`/`identity` to httpRequest’s header list.\n if (httpRequest.headersList.contains('range')) {\n httpRequest.headersList.append('accept-encoding', 'identity')\n }\n\n // 19. Modify httpRequest’s header list per HTTP. Do not append a given\n // header if httpRequest’s header list contains that header’s name.\n // TODO: https://github.com/whatwg/fetch/issues/1285#issuecomment-896560129\n if (!httpRequest.headersList.contains('accept-encoding')) {\n if (urlHasHttpsScheme(requestCurrentURL(httpRequest))) {\n httpRequest.headersList.append('accept-encoding', 'br, gzip, deflate')\n } else {\n httpRequest.headersList.append('accept-encoding', 'gzip, deflate')\n }\n }\n\n httpRequest.headersList.delete('host')\n\n // 20. If includeCredentials is true, then:\n if (includeCredentials) {\n // 1. If the user agent is not configured to block cookies for httpRequest\n // (see section 7 of [COOKIES]), then:\n // TODO: credentials\n // 2. If httpRequest’s header list does not contain `Authorization`, then:\n // TODO: credentials\n }\n\n // 21. If there’s a proxy-authentication entry, use it as appropriate.\n // TODO: proxy-authentication\n\n // 22. Set httpCache to the result of determining the HTTP cache\n // partition, given httpRequest.\n // TODO: cache\n\n // 23. If httpCache is null, then set httpRequest’s cache mode to\n // \"no-store\".\n if (httpCache == null) {\n httpRequest.cache = 'no-store'\n }\n\n // 24. If httpRequest’s cache mode is neither \"no-store\" nor \"reload\",\n // then:\n if (httpRequest.mode !== 'no-store' && httpRequest.mode !== 'reload') {\n // TODO: cache\n }\n\n // 9. If aborted, then return the appropriate network error for fetchParams.\n // TODO\n\n // 10. If response is null, then:\n if (response == null) {\n // 1. If httpRequest’s cache mode is \"only-if-cached\", then return a\n // network error.\n if (httpRequest.mode === 'only-if-cached') {\n return makeNetworkError('only if cached')\n }\n\n // 2. Let forwardResponse be the result of running HTTP-network fetch\n // given httpFetchParams, includeCredentials, and isNewConnectionFetch.\n const forwardResponse = await httpNetworkFetch(\n httpFetchParams,\n includeCredentials,\n isNewConnectionFetch\n )\n\n // 3. If httpRequest’s method is unsafe and forwardResponse’s status is\n // in the range 200 to 399, inclusive, invalidate appropriate stored\n // responses in httpCache, as per the \"Invalidation\" chapter of HTTP\n // Caching, and set storedResponse to null. [HTTP-CACHING]\n if (\n !safeMethodsSet.has(httpRequest.method) &&\n forwardResponse.status >= 200 &&\n forwardResponse.status <= 399\n ) {\n // TODO: cache\n }\n\n // 4. If the revalidatingFlag is set and forwardResponse’s status is 304,\n // then:\n if (revalidatingFlag && forwardResponse.status === 304) {\n // TODO: cache\n }\n\n // 5. If response is null, then:\n if (response == null) {\n // 1. Set response to forwardResponse.\n response = forwardResponse\n\n // 2. Store httpRequest and forwardResponse in httpCache, as per the\n // \"Storing Responses in Caches\" chapter of HTTP Caching. [HTTP-CACHING]\n // TODO: cache\n }\n }\n\n // 11. Set response’s URL list to a clone of httpRequest’s URL list.\n response.urlList = [...httpRequest.urlList]\n\n // 12. If httpRequest’s header list contains `Range`, then set response’s\n // range-requested flag.\n if (httpRequest.headersList.contains('range')) {\n response.rangeRequested = true\n }\n\n // 13. Set response’s request-includes-credentials to includeCredentials.\n response.requestIncludesCredentials = includeCredentials\n\n // 14. If response’s status is 401, httpRequest’s response tainting is not\n // \"cors\", includeCredentials is true, and request’s window is an environment\n // settings object, then:\n // TODO\n\n // 15. If response’s status is 407, then:\n if (response.status === 407) {\n // 1. If request’s window is \"no-window\", then return a network error.\n if (request.window === 'no-window') {\n return makeNetworkError()\n }\n\n // 2. ???\n\n // 3. If fetchParams is canceled, then return the appropriate network error for fetchParams.\n if (isCancelled(fetchParams)) {\n return makeAppropriateNetworkError(fetchParams)\n }\n\n // 4. Prompt the end user as appropriate in request’s window and store\n // the result as a proxy-authentication entry. [HTTP-AUTH]\n // TODO: Invoke some kind of callback?\n\n // 5. Set response to the result of running HTTP-network-or-cache fetch given\n // fetchParams.\n // TODO\n return makeNetworkError('proxy authentication required')\n }\n\n // 16. If all of the following are true\n if (\n // response’s status is 421\n response.status === 421 &&\n // isNewConnectionFetch is false\n !isNewConnectionFetch &&\n // request’s body is null, or request’s body is non-null and request’s body’s source is non-null\n (request.body == null || request.body.source != null)\n ) {\n // then:\n\n // 1. If fetchParams is canceled, then return the appropriate network error for fetchParams.\n if (isCancelled(fetchParams)) {\n return makeAppropriateNetworkError(fetchParams)\n }\n\n // 2. Set response to the result of running HTTP-network-or-cache\n // fetch given fetchParams, isAuthenticationFetch, and true.\n\n // TODO (spec): The spec doesn't specify this but we need to cancel\n // the active response before we can start a new one.\n // https://github.com/whatwg/fetch/issues/1293\n fetchParams.controller.connection.destroy()\n\n response = await httpNetworkOrCacheFetch(\n fetchParams,\n isAuthenticationFetch,\n true\n )\n }\n\n // 17. If isAuthenticationFetch is true, then create an authentication entry\n if (isAuthenticationFetch) {\n // TODO\n }\n\n // 18. Return response.\n return response\n}\n\n// https://fetch.spec.whatwg.org/#http-network-fetch\nasync function httpNetworkFetch (\n fetchParams,\n includeCredentials = false,\n forceNewConnection = false\n) {\n assert(!fetchParams.controller.connection || fetchParams.controller.connection.destroyed)\n\n fetchParams.controller.connection = {\n abort: null,\n destroyed: false,\n destroy (err) {\n if (!this.destroyed) {\n this.destroyed = true\n this.abort?.(err ?? new DOMException('The operation was aborted.', 'AbortError'))\n }\n }\n }\n\n // 1. Let request be fetchParams’s request.\n const request = fetchParams.request\n\n // 2. Let response be null.\n let response = null\n\n // 3. Let timingInfo be fetchParams’s timing info.\n const timingInfo = fetchParams.timingInfo\n\n // 4. Let httpCache be the result of determining the HTTP cache partition,\n // given request.\n // TODO: cache\n const httpCache = null\n\n // 5. If httpCache is null, then set request’s cache mode to \"no-store\".\n if (httpCache == null) {\n request.cache = 'no-store'\n }\n\n // 6. Let networkPartitionKey be the result of determining the network\n // partition key given request.\n // TODO\n\n // 7. Let newConnection be \"yes\" if forceNewConnection is true; otherwise\n // \"no\".\n const newConnection = forceNewConnection ? 'yes' : 'no' // eslint-disable-line no-unused-vars\n\n // 8. Switch on request’s mode:\n if (request.mode === 'websocket') {\n // Let connection be the result of obtaining a WebSocket connection,\n // given request’s current URL.\n // TODO\n } else {\n // Let connection be the result of obtaining a connection, given\n // networkPartitionKey, request’s current URL’s origin,\n // includeCredentials, and forceNewConnection.\n // TODO\n }\n\n // 9. Run these steps, but abort when the ongoing fetch is terminated:\n\n // 1. If connection is failure, then return a network error.\n\n // 2. Set timingInfo’s final connection timing info to the result of\n // calling clamp and coarsen connection timing info with connection’s\n // timing info, timingInfo’s post-redirect start time, and fetchParams’s\n // cross-origin isolated capability.\n\n // 3. If connection is not an HTTP/2 connection, request’s body is non-null,\n // and request’s body’s source is null, then append (`Transfer-Encoding`,\n // `chunked`) to request’s header list.\n\n // 4. Set timingInfo’s final network-request start time to the coarsened\n // shared current time given fetchParams’s cross-origin isolated\n // capability.\n\n // 5. Set response to the result of making an HTTP request over connection\n // using request with the following caveats:\n\n // - Follow the relevant requirements from HTTP. [HTTP] [HTTP-SEMANTICS]\n // [HTTP-COND] [HTTP-CACHING] [HTTP-AUTH]\n\n // - If request’s body is non-null, and request’s body’s source is null,\n // then the user agent may have a buffer of up to 64 kibibytes and store\n // a part of request’s body in that buffer. If the user agent reads from\n // request’s body beyond that buffer’s size and the user agent needs to\n // resend request, then instead return a network error.\n\n // - Set timingInfo’s final network-response start time to the coarsened\n // shared current time given fetchParams’s cross-origin isolated capability,\n // immediately after the user agent’s HTTP parser receives the first byte\n // of the response (e.g., frame header bytes for HTTP/2 or response status\n // line for HTTP/1.x).\n\n // - Wait until all the headers are transmitted.\n\n // - Any responses whose status is in the range 100 to 199, inclusive,\n // and is not 101, are to be ignored, except for the purposes of setting\n // timingInfo’s final network-response start time above.\n\n // - If request’s header list contains `Transfer-Encoding`/`chunked` and\n // response is transferred via HTTP/1.0 or older, then return a network\n // error.\n\n // - If the HTTP request results in a TLS client certificate dialog, then:\n\n // 1. If request’s window is an environment settings object, make the\n // dialog available in request’s window.\n\n // 2. Otherwise, return a network error.\n\n // To transmit request’s body body, run these steps:\n let requestBody = null\n // 1. If body is null and fetchParams’s process request end-of-body is\n // non-null, then queue a fetch task given fetchParams’s process request\n // end-of-body and fetchParams’s task destination.\n if (request.body == null && fetchParams.processRequestEndOfBody) {\n queueMicrotask(() => fetchParams.processRequestEndOfBody())\n } else if (request.body != null) {\n // 2. Otherwise, if body is non-null:\n\n // 1. Let processBodyChunk given bytes be these steps:\n const processBodyChunk = async function * (bytes) {\n // 1. If the ongoing fetch is terminated, then abort these steps.\n if (isCancelled(fetchParams)) {\n return\n }\n\n // 2. Run this step in parallel: transmit bytes.\n yield bytes\n\n // 3. If fetchParams’s process request body is non-null, then run\n // fetchParams’s process request body given bytes’s length.\n fetchParams.processRequestBodyChunkLength?.(bytes.byteLength)\n }\n\n // 2. Let processEndOfBody be these steps:\n const processEndOfBody = () => {\n // 1. If fetchParams is canceled, then abort these steps.\n if (isCancelled(fetchParams)) {\n return\n }\n\n // 2. If fetchParams’s process request end-of-body is non-null,\n // then run fetchParams’s process request end-of-body.\n if (fetchParams.processRequestEndOfBody) {\n fetchParams.processRequestEndOfBody()\n }\n }\n\n // 3. Let processBodyError given e be these steps:\n const processBodyError = (e) => {\n // 1. If fetchParams is canceled, then abort these steps.\n if (isCancelled(fetchParams)) {\n return\n }\n\n // 2. If e is an \"AbortError\" DOMException, then abort fetchParams’s controller.\n if (e.name === 'AbortError') {\n fetchParams.controller.abort()\n } else {\n fetchParams.controller.terminate(e)\n }\n }\n\n // 4. Incrementally read request’s body given processBodyChunk, processEndOfBody,\n // processBodyError, and fetchParams’s task destination.\n requestBody = (async function * () {\n try {\n for await (const bytes of request.body.stream) {\n yield * processBodyChunk(bytes)\n }\n processEndOfBody()\n } catch (err) {\n processBodyError(err)\n }\n })()\n }\n\n try {\n // socket is only provided for websockets\n const { body, status, statusText, headersList, socket } = await dispatch({ body: requestBody })\n\n if (socket) {\n response = makeResponse({ status, statusText, headersList, socket })\n } else {\n const iterator = body[Symbol.asyncIterator]()\n fetchParams.controller.next = () => iterator.next()\n\n response = makeResponse({ status, statusText, headersList })\n }\n } catch (err) {\n // 10. If aborted, then:\n if (err.name === 'AbortError') {\n // 1. If connection uses HTTP/2, then transmit an RST_STREAM frame.\n fetchParams.controller.connection.destroy()\n\n // 2. Return the appropriate network error for fetchParams.\n return makeAppropriateNetworkError(fetchParams, err)\n }\n\n return makeNetworkError(err)\n }\n\n // 11. Let pullAlgorithm be an action that resumes the ongoing fetch\n // if it is suspended.\n const pullAlgorithm = () => {\n fetchParams.controller.resume()\n }\n\n // 12. Let cancelAlgorithm be an algorithm that aborts fetchParams’s\n // controller with reason, given reason.\n const cancelAlgorithm = (reason) => {\n fetchParams.controller.abort(reason)\n }\n\n // 13. Let highWaterMark be a non-negative, non-NaN number, chosen by\n // the user agent.\n // TODO\n\n // 14. Let sizeAlgorithm be an algorithm that accepts a chunk object\n // and returns a non-negative, non-NaN, non-infinite number, chosen by the user agent.\n // TODO\n\n // 15. Let stream be a new ReadableStream.\n // 16. Set up stream with pullAlgorithm set to pullAlgorithm,\n // cancelAlgorithm set to cancelAlgorithm, highWaterMark set to\n // highWaterMark, and sizeAlgorithm set to sizeAlgorithm.\n if (!ReadableStream) {\n ReadableStream = require('stream/web').ReadableStream\n }\n\n const stream = new ReadableStream(\n {\n async start (controller) {\n fetchParams.controller.controller = controller\n },\n async pull (controller) {\n await pullAlgorithm(controller)\n },\n async cancel (reason) {\n await cancelAlgorithm(reason)\n }\n },\n {\n highWaterMark: 0,\n size () {\n return 1\n }\n }\n )\n\n // 17. Run these steps, but abort when the ongoing fetch is terminated:\n\n // 1. Set response’s body to a new body whose stream is stream.\n response.body = { stream }\n\n // 2. If response is not a network error and request’s cache mode is\n // not \"no-store\", then update response in httpCache for request.\n // TODO\n\n // 3. If includeCredentials is true and the user agent is not configured\n // to block cookies for request (see section 7 of [COOKIES]), then run the\n // \"set-cookie-string\" parsing algorithm (see section 5.2 of [COOKIES]) on\n // the value of each header whose name is a byte-case-insensitive match for\n // `Set-Cookie` in response’s header list, if any, and request’s current URL.\n // TODO\n\n // 18. If aborted, then:\n // TODO\n\n // 19. Run these steps in parallel:\n\n // 1. Run these steps, but abort when fetchParams is canceled:\n fetchParams.controller.on('terminated', onAborted)\n fetchParams.controller.resume = async () => {\n // 1. While true\n while (true) {\n // 1-3. See onData...\n\n // 4. Set bytes to the result of handling content codings given\n // codings and bytes.\n let bytes\n let isFailure\n try {\n const { done, value } = await fetchParams.controller.next()\n\n if (isAborted(fetchParams)) {\n break\n }\n\n bytes = done ? undefined : value\n } catch (err) {\n if (fetchParams.controller.ended && !timingInfo.encodedBodySize) {\n // zlib doesn't like empty streams.\n bytes = undefined\n } else {\n bytes = err\n\n // err may be propagated from the result of calling readablestream.cancel,\n // which might not be an error. https://github.com/nodejs/undici/issues/2009\n isFailure = true\n }\n }\n\n if (bytes === undefined) {\n // 2. Otherwise, if the bytes transmission for response’s message\n // body is done normally and stream is readable, then close\n // stream, finalize response for fetchParams and response, and\n // abort these in-parallel steps.\n readableStreamClose(fetchParams.controller.controller)\n\n finalizeResponse(fetchParams, response)\n\n return\n }\n\n // 5. Increase timingInfo’s decoded body size by bytes’s length.\n timingInfo.decodedBodySize += bytes?.byteLength ?? 0\n\n // 6. If bytes is failure, then terminate fetchParams’s controller.\n if (isFailure) {\n fetchParams.controller.terminate(bytes)\n return\n }\n\n // 7. Enqueue a Uint8Array wrapping an ArrayBuffer containing bytes\n // into stream.\n fetchParams.controller.controller.enqueue(new Uint8Array(bytes))\n\n // 8. If stream is errored, then terminate the ongoing fetch.\n if (isErrored(stream)) {\n fetchParams.controller.terminate()\n return\n }\n\n // 9. If stream doesn’t need more data ask the user agent to suspend\n // the ongoing fetch.\n if (!fetchParams.controller.controller.desiredSize) {\n return\n }\n }\n }\n\n // 2. If aborted, then:\n function onAborted (reason) {\n // 2. If fetchParams is aborted, then:\n if (isAborted(fetchParams)) {\n // 1. Set response’s aborted flag.\n response.aborted = true\n\n // 2. If stream is readable, then error stream with the result of\n // deserialize a serialized abort reason given fetchParams’s\n // controller’s serialized abort reason and an\n // implementation-defined realm.\n if (isReadable(stream)) {\n fetchParams.controller.controller.error(\n fetchParams.controller.serializedAbortReason\n )\n }\n } else {\n // 3. Otherwise, if stream is readable, error stream with a TypeError.\n if (isReadable(stream)) {\n fetchParams.controller.controller.error(new TypeError('terminated', {\n cause: isErrorLike(reason) ? reason : undefined\n }))\n }\n }\n\n // 4. If connection uses HTTP/2, then transmit an RST_STREAM frame.\n // 5. Otherwise, the user agent should close connection unless it would be bad for performance to do so.\n fetchParams.controller.connection.destroy()\n }\n\n // 20. Return response.\n return response\n\n async function dispatch ({ body }) {\n const url = requestCurrentURL(request)\n /** @type {import('../..').Agent} */\n const agent = fetchParams.controller.dispatcher\n\n return new Promise((resolve, reject) => agent.dispatch(\n {\n path: url.pathname + url.search,\n origin: url.origin,\n method: request.method,\n body: fetchParams.controller.dispatcher.isMockActive ? request.body && (request.body.source || request.body.stream) : body,\n headers: request.headersList.entries,\n maxRedirections: 0,\n upgrade: request.mode === 'websocket' ? 'websocket' : undefined\n },\n {\n body: null,\n abort: null,\n\n onConnect (abort) {\n // TODO (fix): Do we need connection here?\n const { connection } = fetchParams.controller\n\n if (connection.destroyed) {\n abort(new DOMException('The operation was aborted.', 'AbortError'))\n } else {\n fetchParams.controller.on('terminated', abort)\n this.abort = connection.abort = abort\n }\n },\n\n onHeaders (status, headersList, resume, statusText) {\n if (status < 200) {\n return\n }\n\n let codings = []\n let location = ''\n\n const headers = new Headers()\n\n // For H2, the headers are a plain JS object\n // We distinguish between them and iterate accordingly\n if (Array.isArray(headersList)) {\n for (let n = 0; n < headersList.length; n += 2) {\n const key = headersList[n + 0].toString('latin1')\n const val = headersList[n + 1].toString('latin1')\n if (key.toLowerCase() === 'content-encoding') {\n // https://www.rfc-editor.org/rfc/rfc7231#section-3.1.2.1\n // \"All content-coding values are case-insensitive...\"\n codings = val.toLowerCase().split(',').map((x) => x.trim())\n } else if (key.toLowerCase() === 'location') {\n location = val\n }\n\n headers[kHeadersList].append(key, val)\n }\n } else {\n const keys = Object.keys(headersList)\n for (const key of keys) {\n const val = headersList[key]\n if (key.toLowerCase() === 'content-encoding') {\n // https://www.rfc-editor.org/rfc/rfc7231#section-3.1.2.1\n // \"All content-coding values are case-insensitive...\"\n codings = val.toLowerCase().split(',').map((x) => x.trim()).reverse()\n } else if (key.toLowerCase() === 'location') {\n location = val\n }\n\n headers[kHeadersList].append(key, val)\n }\n }\n\n this.body = new Readable({ read: resume })\n\n const decoders = []\n\n const willFollow = request.redirect === 'follow' &&\n location &&\n redirectStatusSet.has(status)\n\n // https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Encoding\n if (request.method !== 'HEAD' && request.method !== 'CONNECT' && !nullBodyStatus.includes(status) && !willFollow) {\n for (const coding of codings) {\n // https://www.rfc-editor.org/rfc/rfc9112.html#section-7.2\n if (coding === 'x-gzip' || coding === 'gzip') {\n decoders.push(zlib.createGunzip({\n // Be less strict when decoding compressed responses, since sometimes\n // servers send slightly invalid responses that are still accepted\n // by common browsers.\n // Always using Z_SYNC_FLUSH is what cURL does.\n flush: zlib.constants.Z_SYNC_FLUSH,\n finishFlush: zlib.constants.Z_SYNC_FLUSH\n }))\n } else if (coding === 'deflate') {\n decoders.push(zlib.createInflate())\n } else if (coding === 'br') {\n decoders.push(zlib.createBrotliDecompress())\n } else {\n decoders.length = 0\n break\n }\n }\n }\n\n resolve({\n status,\n statusText,\n headersList: headers[kHeadersList],\n body: decoders.length\n ? pipeline(this.body, ...decoders, () => { })\n : this.body.on('error', () => {})\n })\n\n return true\n },\n\n onData (chunk) {\n if (fetchParams.controller.dump) {\n return\n }\n\n // 1. If one or more bytes have been transmitted from response’s\n // message body, then:\n\n // 1. Let bytes be the transmitted bytes.\n const bytes = chunk\n\n // 2. Let codings be the result of extracting header list values\n // given `Content-Encoding` and response’s header list.\n // See pullAlgorithm.\n\n // 3. Increase timingInfo’s encoded body size by bytes’s length.\n timingInfo.encodedBodySize += bytes.byteLength\n\n // 4. See pullAlgorithm...\n\n return this.body.push(bytes)\n },\n\n onComplete () {\n if (this.abort) {\n fetchParams.controller.off('terminated', this.abort)\n }\n\n fetchParams.controller.ended = true\n\n this.body.push(null)\n },\n\n onError (error) {\n if (this.abort) {\n fetchParams.controller.off('terminated', this.abort)\n }\n\n this.body?.destroy(error)\n\n fetchParams.controller.terminate(error)\n\n reject(error)\n },\n\n onUpgrade (status, headersList, socket) {\n if (status !== 101) {\n return\n }\n\n const headers = new Headers()\n\n for (let n = 0; n < headersList.length; n += 2) {\n const key = headersList[n + 0].toString('latin1')\n const val = headersList[n + 1].toString('latin1')\n\n headers[kHeadersList].append(key, val)\n }\n\n resolve({\n status,\n statusText: STATUS_CODES[status],\n headersList: headers[kHeadersList],\n socket\n })\n\n return true\n }\n }\n ))\n }\n}\n\nmodule.exports = {\n fetch,\n Fetch,\n fetching,\n finalizeAndReportTiming\n}\n","'use strict'\n\nmodule.exports = {\n kState: Symbol('FileReader state'),\n kResult: Symbol('FileReader result'),\n kError: Symbol('FileReader error'),\n kLastProgressEventFired: Symbol('FileReader last progress event fired timestamp'),\n kEvents: Symbol('FileReader events'),\n kAborted: Symbol('FileReader aborted')\n}\n","'use strict'\n\nconst { webidl } = require('../fetch/webidl')\n\nconst kState = Symbol('ProgressEvent state')\n\n/**\n * @see https://xhr.spec.whatwg.org/#progressevent\n */\nclass ProgressEvent extends Event {\n constructor (type, eventInitDict = {}) {\n type = webidl.converters.DOMString(type)\n eventInitDict = webidl.converters.ProgressEventInit(eventInitDict ?? {})\n\n super(type, eventInitDict)\n\n this[kState] = {\n lengthComputable: eventInitDict.lengthComputable,\n loaded: eventInitDict.loaded,\n total: eventInitDict.total\n }\n }\n\n get lengthComputable () {\n webidl.brandCheck(this, ProgressEvent)\n\n return this[kState].lengthComputable\n }\n\n get loaded () {\n webidl.brandCheck(this, ProgressEvent)\n\n return this[kState].loaded\n }\n\n get total () {\n webidl.brandCheck(this, ProgressEvent)\n\n return this[kState].total\n }\n}\n\nwebidl.converters.ProgressEventInit = webidl.dictionaryConverter([\n {\n key: 'lengthComputable',\n converter: webidl.converters.boolean,\n defaultValue: false\n },\n {\n key: 'loaded',\n converter: webidl.converters['unsigned long long'],\n defaultValue: 0\n },\n {\n key: 'total',\n converter: webidl.converters['unsigned long long'],\n defaultValue: 0\n },\n {\n key: 'bubbles',\n converter: webidl.converters.boolean,\n defaultValue: false\n },\n {\n key: 'cancelable',\n converter: webidl.converters.boolean,\n defaultValue: false\n },\n {\n key: 'composed',\n converter: webidl.converters.boolean,\n defaultValue: false\n }\n])\n\nmodule.exports = {\n ProgressEvent\n}\n","'use strict'\n\n/**\n * @see https://encoding.spec.whatwg.org/#concept-encoding-get\n * @param {string|undefined} label\n */\nfunction getEncoding (label) {\n if (!label) {\n return 'failure'\n }\n\n // 1. Remove any leading and trailing ASCII whitespace from label.\n // 2. If label is an ASCII case-insensitive match for any of the\n // labels listed in the table below, then return the\n // corresponding encoding; otherwise return failure.\n switch (label.trim().toLowerCase()) {\n case 'unicode-1-1-utf-8':\n case 'unicode11utf8':\n case 'unicode20utf8':\n case 'utf-8':\n case 'utf8':\n case 'x-unicode20utf8':\n return 'UTF-8'\n case '866':\n case 'cp866':\n case 'csibm866':\n case 'ibm866':\n return 'IBM866'\n case 'csisolatin2':\n case 'iso-8859-2':\n case 'iso-ir-101':\n case 'iso8859-2':\n case 'iso88592':\n case 'iso_8859-2':\n case 'iso_8859-2:1987':\n case 'l2':\n case 'latin2':\n return 'ISO-8859-2'\n case 'csisolatin3':\n case 'iso-8859-3':\n case 'iso-ir-109':\n case 'iso8859-3':\n case 'iso88593':\n case 'iso_8859-3':\n case 'iso_8859-3:1988':\n case 'l3':\n case 'latin3':\n return 'ISO-8859-3'\n case 'csisolatin4':\n case 'iso-8859-4':\n case 'iso-ir-110':\n case 'iso8859-4':\n case 'iso88594':\n case 'iso_8859-4':\n case 'iso_8859-4:1988':\n case 'l4':\n case 'latin4':\n return 'ISO-8859-4'\n case 'csisolatincyrillic':\n case 'cyrillic':\n case 'iso-8859-5':\n case 'iso-ir-144':\n case 'iso8859-5':\n case 'iso88595':\n case 'iso_8859-5':\n case 'iso_8859-5:1988':\n return 'ISO-8859-5'\n case 'arabic':\n case 'asmo-708':\n case 'csiso88596e':\n case 'csiso88596i':\n case 'csisolatinarabic':\n case 'ecma-114':\n case 'iso-8859-6':\n case 'iso-8859-6-e':\n case 'iso-8859-6-i':\n case 'iso-ir-127':\n case 'iso8859-6':\n case 'iso88596':\n case 'iso_8859-6':\n case 'iso_8859-6:1987':\n return 'ISO-8859-6'\n case 'csisolatingreek':\n case 'ecma-118':\n case 'elot_928':\n case 'greek':\n case 'greek8':\n case 'iso-8859-7':\n case 'iso-ir-126':\n case 'iso8859-7':\n case 'iso88597':\n case 'iso_8859-7':\n case 'iso_8859-7:1987':\n case 'sun_eu_greek':\n return 'ISO-8859-7'\n case 'csiso88598e':\n case 'csisolatinhebrew':\n case 'hebrew':\n case 'iso-8859-8':\n case 'iso-8859-8-e':\n case 'iso-ir-138':\n case 'iso8859-8':\n case 'iso88598':\n case 'iso_8859-8':\n case 'iso_8859-8:1988':\n case 'visual':\n return 'ISO-8859-8'\n case 'csiso88598i':\n case 'iso-8859-8-i':\n case 'logical':\n return 'ISO-8859-8-I'\n case 'csisolatin6':\n case 'iso-8859-10':\n case 'iso-ir-157':\n case 'iso8859-10':\n case 'iso885910':\n case 'l6':\n case 'latin6':\n return 'ISO-8859-10'\n case 'iso-8859-13':\n case 'iso8859-13':\n case 'iso885913':\n return 'ISO-8859-13'\n case 'iso-8859-14':\n case 'iso8859-14':\n case 'iso885914':\n return 'ISO-8859-14'\n case 'csisolatin9':\n case 'iso-8859-15':\n case 'iso8859-15':\n case 'iso885915':\n case 'iso_8859-15':\n case 'l9':\n return 'ISO-8859-15'\n case 'iso-8859-16':\n return 'ISO-8859-16'\n case 'cskoi8r':\n case 'koi':\n case 'koi8':\n case 'koi8-r':\n case 'koi8_r':\n return 'KOI8-R'\n case 'koi8-ru':\n case 'koi8-u':\n return 'KOI8-U'\n case 'csmacintosh':\n case 'mac':\n case 'macintosh':\n case 'x-mac-roman':\n return 'macintosh'\n case 'iso-8859-11':\n case 'iso8859-11':\n case 'iso885911':\n case 'tis-620':\n case 'windows-874':\n return 'windows-874'\n case 'cp1250':\n case 'windows-1250':\n case 'x-cp1250':\n return 'windows-1250'\n case 'cp1251':\n case 'windows-1251':\n case 'x-cp1251':\n return 'windows-1251'\n case 'ansi_x3.4-1968':\n case 'ascii':\n case 'cp1252':\n case 'cp819':\n case 'csisolatin1':\n case 'ibm819':\n case 'iso-8859-1':\n case 'iso-ir-100':\n case 'iso8859-1':\n case 'iso88591':\n case 'iso_8859-1':\n case 'iso_8859-1:1987':\n case 'l1':\n case 'latin1':\n case 'us-ascii':\n case 'windows-1252':\n case 'x-cp1252':\n return 'windows-1252'\n case 'cp1253':\n case 'windows-1253':\n case 'x-cp1253':\n return 'windows-1253'\n case 'cp1254':\n case 'csisolatin5':\n case 'iso-8859-9':\n case 'iso-ir-148':\n case 'iso8859-9':\n case 'iso88599':\n case 'iso_8859-9':\n case 'iso_8859-9:1989':\n case 'l5':\n case 'latin5':\n case 'windows-1254':\n case 'x-cp1254':\n return 'windows-1254'\n case 'cp1255':\n case 'windows-1255':\n case 'x-cp1255':\n return 'windows-1255'\n case 'cp1256':\n case 'windows-1256':\n case 'x-cp1256':\n return 'windows-1256'\n case 'cp1257':\n case 'windows-1257':\n case 'x-cp1257':\n return 'windows-1257'\n case 'cp1258':\n case 'windows-1258':\n case 'x-cp1258':\n return 'windows-1258'\n case 'x-mac-cyrillic':\n case 'x-mac-ukrainian':\n return 'x-mac-cyrillic'\n case 'chinese':\n case 'csgb2312':\n case 'csiso58gb231280':\n case 'gb2312':\n case 'gb_2312':\n case 'gb_2312-80':\n case 'gbk':\n case 'iso-ir-58':\n case 'x-gbk':\n return 'GBK'\n case 'gb18030':\n return 'gb18030'\n case 'big5':\n case 'big5-hkscs':\n case 'cn-big5':\n case 'csbig5':\n case 'x-x-big5':\n return 'Big5'\n case 'cseucpkdfmtjapanese':\n case 'euc-jp':\n case 'x-euc-jp':\n return 'EUC-JP'\n case 'csiso2022jp':\n case 'iso-2022-jp':\n return 'ISO-2022-JP'\n case 'csshiftjis':\n case 'ms932':\n case 'ms_kanji':\n case 'shift-jis':\n case 'shift_jis':\n case 'sjis':\n case 'windows-31j':\n case 'x-sjis':\n return 'Shift_JIS'\n case 'cseuckr':\n case 'csksc56011987':\n case 'euc-kr':\n case 'iso-ir-149':\n case 'korean':\n case 'ks_c_5601-1987':\n case 'ks_c_5601-1989':\n case 'ksc5601':\n case 'ksc_5601':\n case 'windows-949':\n return 'EUC-KR'\n case 'csiso2022kr':\n case 'hz-gb-2312':\n case 'iso-2022-cn':\n case 'iso-2022-cn-ext':\n case 'iso-2022-kr':\n case 'replacement':\n return 'replacement'\n case 'unicodefffe':\n case 'utf-16be':\n return 'UTF-16BE'\n case 'csunicode':\n case 'iso-10646-ucs-2':\n case 'ucs-2':\n case 'unicode':\n case 'unicodefeff':\n case 'utf-16':\n case 'utf-16le':\n return 'UTF-16LE'\n case 'x-user-defined':\n return 'x-user-defined'\n default: return 'failure'\n }\n}\n\nmodule.exports = {\n getEncoding\n}\n","'use strict'\n\nconst {\n kState,\n kError,\n kResult,\n kAborted,\n kLastProgressEventFired\n} = require('./symbols')\nconst { ProgressEvent } = require('./progressevent')\nconst { getEncoding } = require('./encoding')\nconst { DOMException } = require('../fetch/constants')\nconst { serializeAMimeType, parseMIMEType } = require('../fetch/dataURL')\nconst { types } = require('util')\nconst { StringDecoder } = require('string_decoder')\nconst { btoa } = require('buffer')\n\n/** @type {PropertyDescriptor} */\nconst staticPropertyDescriptors = {\n enumerable: true,\n writable: false,\n configurable: false\n}\n\n/**\n * @see https://w3c.github.io/FileAPI/#readOperation\n * @param {import('./filereader').FileReader} fr\n * @param {import('buffer').Blob} blob\n * @param {string} type\n * @param {string?} encodingName\n */\nfunction readOperation (fr, blob, type, encodingName) {\n // 1. If fr’s state is \"loading\", throw an InvalidStateError\n // DOMException.\n if (fr[kState] === 'loading') {\n throw new DOMException('Invalid state', 'InvalidStateError')\n }\n\n // 2. Set fr’s state to \"loading\".\n fr[kState] = 'loading'\n\n // 3. Set fr’s result to null.\n fr[kResult] = null\n\n // 4. Set fr’s error to null.\n fr[kError] = null\n\n // 5. Let stream be the result of calling get stream on blob.\n /** @type {import('stream/web').ReadableStream} */\n const stream = blob.stream()\n\n // 6. Let reader be the result of getting a reader from stream.\n const reader = stream.getReader()\n\n // 7. Let bytes be an empty byte sequence.\n /** @type {Uint8Array[]} */\n const bytes = []\n\n // 8. Let chunkPromise be the result of reading a chunk from\n // stream with reader.\n let chunkPromise = reader.read()\n\n // 9. Let isFirstChunk be true.\n let isFirstChunk = true\n\n // 10. In parallel, while true:\n // Note: \"In parallel\" just means non-blocking\n // Note 2: readOperation itself cannot be async as double\n // reading the body would then reject the promise, instead\n // of throwing an error.\n ;(async () => {\n while (!fr[kAborted]) {\n // 1. Wait for chunkPromise to be fulfilled or rejected.\n try {\n const { done, value } = await chunkPromise\n\n // 2. If chunkPromise is fulfilled, and isFirstChunk is\n // true, queue a task to fire a progress event called\n // loadstart at fr.\n if (isFirstChunk && !fr[kAborted]) {\n queueMicrotask(() => {\n fireAProgressEvent('loadstart', fr)\n })\n }\n\n // 3. Set isFirstChunk to false.\n isFirstChunk = false\n\n // 4. If chunkPromise is fulfilled with an object whose\n // done property is false and whose value property is\n // a Uint8Array object, run these steps:\n if (!done && types.isUint8Array(value)) {\n // 1. Let bs be the byte sequence represented by the\n // Uint8Array object.\n\n // 2. Append bs to bytes.\n bytes.push(value)\n\n // 3. If roughly 50ms have passed since these steps\n // were last invoked, queue a task to fire a\n // progress event called progress at fr.\n if (\n (\n fr[kLastProgressEventFired] === undefined ||\n Date.now() - fr[kLastProgressEventFired] >= 50\n ) &&\n !fr[kAborted]\n ) {\n fr[kLastProgressEventFired] = Date.now()\n queueMicrotask(() => {\n fireAProgressEvent('progress', fr)\n })\n }\n\n // 4. Set chunkPromise to the result of reading a\n // chunk from stream with reader.\n chunkPromise = reader.read()\n } else if (done) {\n // 5. Otherwise, if chunkPromise is fulfilled with an\n // object whose done property is true, queue a task\n // to run the following steps and abort this algorithm:\n queueMicrotask(() => {\n // 1. Set fr’s state to \"done\".\n fr[kState] = 'done'\n\n // 2. Let result be the result of package data given\n // bytes, type, blob’s type, and encodingName.\n try {\n const result = packageData(bytes, type, blob.type, encodingName)\n\n // 4. Else:\n\n if (fr[kAborted]) {\n return\n }\n\n // 1. Set fr’s result to result.\n fr[kResult] = result\n\n // 2. Fire a progress event called load at the fr.\n fireAProgressEvent('load', fr)\n } catch (error) {\n // 3. If package data threw an exception error:\n\n // 1. Set fr’s error to error.\n fr[kError] = error\n\n // 2. Fire a progress event called error at fr.\n fireAProgressEvent('error', fr)\n }\n\n // 5. If fr’s state is not \"loading\", fire a progress\n // event called loadend at the fr.\n if (fr[kState] !== 'loading') {\n fireAProgressEvent('loadend', fr)\n }\n })\n\n break\n }\n } catch (error) {\n if (fr[kAborted]) {\n return\n }\n\n // 6. Otherwise, if chunkPromise is rejected with an\n // error error, queue a task to run the following\n // steps and abort this algorithm:\n queueMicrotask(() => {\n // 1. Set fr’s state to \"done\".\n fr[kState] = 'done'\n\n // 2. Set fr’s error to error.\n fr[kError] = error\n\n // 3. Fire a progress event called error at fr.\n fireAProgressEvent('error', fr)\n\n // 4. If fr’s state is not \"loading\", fire a progress\n // event called loadend at fr.\n if (fr[kState] !== 'loading') {\n fireAProgressEvent('loadend', fr)\n }\n })\n\n break\n }\n }\n })()\n}\n\n/**\n * @see https://w3c.github.io/FileAPI/#fire-a-progress-event\n * @see https://dom.spec.whatwg.org/#concept-event-fire\n * @param {string} e The name of the event\n * @param {import('./filereader').FileReader} reader\n */\nfunction fireAProgressEvent (e, reader) {\n // The progress event e does not bubble. e.bubbles must be false\n // The progress event e is NOT cancelable. e.cancelable must be false\n const event = new ProgressEvent(e, {\n bubbles: false,\n cancelable: false\n })\n\n reader.dispatchEvent(event)\n}\n\n/**\n * @see https://w3c.github.io/FileAPI/#blob-package-data\n * @param {Uint8Array[]} bytes\n * @param {string} type\n * @param {string?} mimeType\n * @param {string?} encodingName\n */\nfunction packageData (bytes, type, mimeType, encodingName) {\n // 1. A Blob has an associated package data algorithm, given\n // bytes, a type, a optional mimeType, and a optional\n // encodingName, which switches on type and runs the\n // associated steps:\n\n switch (type) {\n case 'DataURL': {\n // 1. Return bytes as a DataURL [RFC2397] subject to\n // the considerations below:\n // * Use mimeType as part of the Data URL if it is\n // available in keeping with the Data URL\n // specification [RFC2397].\n // * If mimeType is not available return a Data URL\n // without a media-type. [RFC2397].\n\n // https://datatracker.ietf.org/doc/html/rfc2397#section-3\n // dataurl := \"data:\" [ mediatype ] [ \";base64\" ] \",\" data\n // mediatype := [ type \"/\" subtype ] *( \";\" parameter )\n // data := *urlchar\n // parameter := attribute \"=\" value\n let dataURL = 'data:'\n\n const parsed = parseMIMEType(mimeType || 'application/octet-stream')\n\n if (parsed !== 'failure') {\n dataURL += serializeAMimeType(parsed)\n }\n\n dataURL += ';base64,'\n\n const decoder = new StringDecoder('latin1')\n\n for (const chunk of bytes) {\n dataURL += btoa(decoder.write(chunk))\n }\n\n dataURL += btoa(decoder.end())\n\n return dataURL\n }\n case 'Text': {\n // 1. Let encoding be failure\n let encoding = 'failure'\n\n // 2. If the encodingName is present, set encoding to the\n // result of getting an encoding from encodingName.\n if (encodingName) {\n encoding = getEncoding(encodingName)\n }\n\n // 3. If encoding is failure, and mimeType is present:\n if (encoding === 'failure' && mimeType) {\n // 1. Let type be the result of parse a MIME type\n // given mimeType.\n const type = parseMIMEType(mimeType)\n\n // 2. If type is not failure, set encoding to the result\n // of getting an encoding from type’s parameters[\"charset\"].\n if (type !== 'failure') {\n encoding = getEncoding(type.parameters.get('charset'))\n }\n }\n\n // 4. If encoding is failure, then set encoding to UTF-8.\n if (encoding === 'failure') {\n encoding = 'UTF-8'\n }\n\n // 5. Decode bytes using fallback encoding encoding, and\n // return the result.\n return decode(bytes, encoding)\n }\n case 'ArrayBuffer': {\n // Return a new ArrayBuffer whose contents are bytes.\n const sequence = combineByteSequences(bytes)\n\n return sequence.buffer\n }\n case 'BinaryString': {\n // Return bytes as a binary string, in which every byte\n // is represented by a code unit of equal value [0..255].\n let binaryString = ''\n\n const decoder = new StringDecoder('latin1')\n\n for (const chunk of bytes) {\n binaryString += decoder.write(chunk)\n }\n\n binaryString += decoder.end()\n\n return binaryString\n }\n }\n}\n\n/**\n * @see https://encoding.spec.whatwg.org/#decode\n * @param {Uint8Array[]} ioQueue\n * @param {string} encoding\n */\nfunction decode (ioQueue, encoding) {\n const bytes = combineByteSequences(ioQueue)\n\n // 1. Let BOMEncoding be the result of BOM sniffing ioQueue.\n const BOMEncoding = BOMSniffing(bytes)\n\n let slice = 0\n\n // 2. If BOMEncoding is non-null:\n if (BOMEncoding !== null) {\n // 1. Set encoding to BOMEncoding.\n encoding = BOMEncoding\n\n // 2. Read three bytes from ioQueue, if BOMEncoding is\n // UTF-8; otherwise read two bytes.\n // (Do nothing with those bytes.)\n slice = BOMEncoding === 'UTF-8' ? 3 : 2\n }\n\n // 3. Process a queue with an instance of encoding’s\n // decoder, ioQueue, output, and \"replacement\".\n\n // 4. Return output.\n\n const sliced = bytes.slice(slice)\n return new TextDecoder(encoding).decode(sliced)\n}\n\n/**\n * @see https://encoding.spec.whatwg.org/#bom-sniff\n * @param {Uint8Array} ioQueue\n */\nfunction BOMSniffing (ioQueue) {\n // 1. Let BOM be the result of peeking 3 bytes from ioQueue,\n // converted to a byte sequence.\n const [a, b, c] = ioQueue\n\n // 2. For each of the rows in the table below, starting with\n // the first one and going down, if BOM starts with the\n // bytes given in the first column, then return the\n // encoding given in the cell in the second column of that\n // row. Otherwise, return null.\n if (a === 0xEF && b === 0xBB && c === 0xBF) {\n return 'UTF-8'\n } else if (a === 0xFE && b === 0xFF) {\n return 'UTF-16BE'\n } else if (a === 0xFF && b === 0xFE) {\n return 'UTF-16LE'\n }\n\n return null\n}\n\n/**\n * @param {Uint8Array[]} sequences\n */\nfunction combineByteSequences (sequences) {\n const size = sequences.reduce((a, b) => {\n return a + b.byteLength\n }, 0)\n\n let offset = 0\n\n return sequences.reduce((a, b) => {\n a.set(b, offset)\n offset += b.byteLength\n return a\n }, new Uint8Array(size))\n}\n\nmodule.exports = {\n staticPropertyDescriptors,\n readOperation,\n fireAProgressEvent\n}\n","'use strict'\n\nconst {\n staticPropertyDescriptors,\n readOperation,\n fireAProgressEvent\n} = require('./util')\nconst {\n kState,\n kError,\n kResult,\n kEvents,\n kAborted\n} = require('./symbols')\nconst { webidl } = require('../fetch/webidl')\nconst { kEnumerableProperty } = require('../core/util')\n\nclass FileReader extends EventTarget {\n constructor () {\n super()\n\n this[kState] = 'empty'\n this[kResult] = null\n this[kError] = null\n this[kEvents] = {\n loadend: null,\n error: null,\n abort: null,\n load: null,\n progress: null,\n loadstart: null\n }\n }\n\n /**\n * @see https://w3c.github.io/FileAPI/#dfn-readAsArrayBuffer\n * @param {import('buffer').Blob} blob\n */\n readAsArrayBuffer (blob) {\n webidl.brandCheck(this, FileReader)\n\n webidl.argumentLengthCheck(arguments, 1, { header: 'FileReader.readAsArrayBuffer' })\n\n blob = webidl.converters.Blob(blob, { strict: false })\n\n // The readAsArrayBuffer(blob) method, when invoked,\n // must initiate a read operation for blob with ArrayBuffer.\n readOperation(this, blob, 'ArrayBuffer')\n }\n\n /**\n * @see https://w3c.github.io/FileAPI/#readAsBinaryString\n * @param {import('buffer').Blob} blob\n */\n readAsBinaryString (blob) {\n webidl.brandCheck(this, FileReader)\n\n webidl.argumentLengthCheck(arguments, 1, { header: 'FileReader.readAsBinaryString' })\n\n blob = webidl.converters.Blob(blob, { strict: false })\n\n // The readAsBinaryString(blob) method, when invoked,\n // must initiate a read operation for blob with BinaryString.\n readOperation(this, blob, 'BinaryString')\n }\n\n /**\n * @see https://w3c.github.io/FileAPI/#readAsDataText\n * @param {import('buffer').Blob} blob\n * @param {string?} encoding\n */\n readAsText (blob, encoding = undefined) {\n webidl.brandCheck(this, FileReader)\n\n webidl.argumentLengthCheck(arguments, 1, { header: 'FileReader.readAsText' })\n\n blob = webidl.converters.Blob(blob, { strict: false })\n\n if (encoding !== undefined) {\n encoding = webidl.converters.DOMString(encoding)\n }\n\n // The readAsText(blob, encoding) method, when invoked,\n // must initiate a read operation for blob with Text and encoding.\n readOperation(this, blob, 'Text', encoding)\n }\n\n /**\n * @see https://w3c.github.io/FileAPI/#dfn-readAsDataURL\n * @param {import('buffer').Blob} blob\n */\n readAsDataURL (blob) {\n webidl.brandCheck(this, FileReader)\n\n webidl.argumentLengthCheck(arguments, 1, { header: 'FileReader.readAsDataURL' })\n\n blob = webidl.converters.Blob(blob, { strict: false })\n\n // The readAsDataURL(blob) method, when invoked, must\n // initiate a read operation for blob with DataURL.\n readOperation(this, blob, 'DataURL')\n }\n\n /**\n * @see https://w3c.github.io/FileAPI/#dfn-abort\n */\n abort () {\n // 1. If this's state is \"empty\" or if this's state is\n // \"done\" set this's result to null and terminate\n // this algorithm.\n if (this[kState] === 'empty' || this[kState] === 'done') {\n this[kResult] = null\n return\n }\n\n // 2. If this's state is \"loading\" set this's state to\n // \"done\" and set this's result to null.\n if (this[kState] === 'loading') {\n this[kState] = 'done'\n this[kResult] = null\n }\n\n // 3. If there are any tasks from this on the file reading\n // task source in an affiliated task queue, then remove\n // those tasks from that task queue.\n this[kAborted] = true\n\n // 4. Terminate the algorithm for the read method being processed.\n // TODO\n\n // 5. Fire a progress event called abort at this.\n fireAProgressEvent('abort', this)\n\n // 6. If this's state is not \"loading\", fire a progress\n // event called loadend at this.\n if (this[kState] !== 'loading') {\n fireAProgressEvent('loadend', this)\n }\n }\n\n /**\n * @see https://w3c.github.io/FileAPI/#dom-filereader-readystate\n */\n get readyState () {\n webidl.brandCheck(this, FileReader)\n\n switch (this[kState]) {\n case 'empty': return this.EMPTY\n case 'loading': return this.LOADING\n case 'done': return this.DONE\n }\n }\n\n /**\n * @see https://w3c.github.io/FileAPI/#dom-filereader-result\n */\n get result () {\n webidl.brandCheck(this, FileReader)\n\n // The result attribute’s getter, when invoked, must return\n // this's result.\n return this[kResult]\n }\n\n /**\n * @see https://w3c.github.io/FileAPI/#dom-filereader-error\n */\n get error () {\n webidl.brandCheck(this, FileReader)\n\n // The error attribute’s getter, when invoked, must return\n // this's error.\n return this[kError]\n }\n\n get onloadend () {\n webidl.brandCheck(this, FileReader)\n\n return this[kEvents].loadend\n }\n\n set onloadend (fn) {\n webidl.brandCheck(this, FileReader)\n\n if (this[kEvents].loadend) {\n this.removeEventListener('loadend', this[kEvents].loadend)\n }\n\n if (typeof fn === 'function') {\n this[kEvents].loadend = fn\n this.addEventListener('loadend', fn)\n } else {\n this[kEvents].loadend = null\n }\n }\n\n get onerror () {\n webidl.brandCheck(this, FileReader)\n\n return this[kEvents].error\n }\n\n set onerror (fn) {\n webidl.brandCheck(this, FileReader)\n\n if (this[kEvents].error) {\n this.removeEventListener('error', this[kEvents].error)\n }\n\n if (typeof fn === 'function') {\n this[kEvents].error = fn\n this.addEventListener('error', fn)\n } else {\n this[kEvents].error = null\n }\n }\n\n get onloadstart () {\n webidl.brandCheck(this, FileReader)\n\n return this[kEvents].loadstart\n }\n\n set onloadstart (fn) {\n webidl.brandCheck(this, FileReader)\n\n if (this[kEvents].loadstart) {\n this.removeEventListener('loadstart', this[kEvents].loadstart)\n }\n\n if (typeof fn === 'function') {\n this[kEvents].loadstart = fn\n this.addEventListener('loadstart', fn)\n } else {\n this[kEvents].loadstart = null\n }\n }\n\n get onprogress () {\n webidl.brandCheck(this, FileReader)\n\n return this[kEvents].progress\n }\n\n set onprogress (fn) {\n webidl.brandCheck(this, FileReader)\n\n if (this[kEvents].progress) {\n this.removeEventListener('progress', this[kEvents].progress)\n }\n\n if (typeof fn === 'function') {\n this[kEvents].progress = fn\n this.addEventListener('progress', fn)\n } else {\n this[kEvents].progress = null\n }\n }\n\n get onload () {\n webidl.brandCheck(this, FileReader)\n\n return this[kEvents].load\n }\n\n set onload (fn) {\n webidl.brandCheck(this, FileReader)\n\n if (this[kEvents].load) {\n this.removeEventListener('load', this[kEvents].load)\n }\n\n if (typeof fn === 'function') {\n this[kEvents].load = fn\n this.addEventListener('load', fn)\n } else {\n this[kEvents].load = null\n }\n }\n\n get onabort () {\n webidl.brandCheck(this, FileReader)\n\n return this[kEvents].abort\n }\n\n set onabort (fn) {\n webidl.brandCheck(this, FileReader)\n\n if (this[kEvents].abort) {\n this.removeEventListener('abort', this[kEvents].abort)\n }\n\n if (typeof fn === 'function') {\n this[kEvents].abort = fn\n this.addEventListener('abort', fn)\n } else {\n this[kEvents].abort = null\n }\n }\n}\n\n// https://w3c.github.io/FileAPI/#dom-filereader-empty\nFileReader.EMPTY = FileReader.prototype.EMPTY = 0\n// https://w3c.github.io/FileAPI/#dom-filereader-loading\nFileReader.LOADING = FileReader.prototype.LOADING = 1\n// https://w3c.github.io/FileAPI/#dom-filereader-done\nFileReader.DONE = FileReader.prototype.DONE = 2\n\nObject.defineProperties(FileReader.prototype, {\n EMPTY: staticPropertyDescriptors,\n LOADING: staticPropertyDescriptors,\n DONE: staticPropertyDescriptors,\n readAsArrayBuffer: kEnumerableProperty,\n readAsBinaryString: kEnumerableProperty,\n readAsText: kEnumerableProperty,\n readAsDataURL: kEnumerableProperty,\n abort: kEnumerableProperty,\n readyState: kEnumerableProperty,\n result: kEnumerableProperty,\n error: kEnumerableProperty,\n onloadstart: kEnumerableProperty,\n onprogress: kEnumerableProperty,\n onload: kEnumerableProperty,\n onabort: kEnumerableProperty,\n onerror: kEnumerableProperty,\n onloadend: kEnumerableProperty,\n [Symbol.toStringTag]: {\n value: 'FileReader',\n writable: false,\n enumerable: false,\n configurable: true\n }\n})\n\nObject.defineProperties(FileReader, {\n EMPTY: staticPropertyDescriptors,\n LOADING: staticPropertyDescriptors,\n DONE: staticPropertyDescriptors\n})\n\nmodule.exports = {\n FileReader\n}\n","'use strict'\n\nmodule.exports = {\n kConstruct: require('../core/symbols').kConstruct\n}\n","'use strict'\n\nconst assert = require('assert')\nconst { URLSerializer } = require('../fetch/dataURL')\nconst { isValidHeaderName } = require('../fetch/util')\n\n/**\n * @see https://url.spec.whatwg.org/#concept-url-equals\n * @param {URL} A\n * @param {URL} B\n * @param {boolean | undefined} excludeFragment\n * @returns {boolean}\n */\nfunction urlEquals (A, B, excludeFragment = false) {\n const serializedA = URLSerializer(A, excludeFragment)\n\n const serializedB = URLSerializer(B, excludeFragment)\n\n return serializedA === serializedB\n}\n\n/**\n * @see https://github.com/chromium/chromium/blob/694d20d134cb553d8d89e5500b9148012b1ba299/content/browser/cache_storage/cache_storage_cache.cc#L260-L262\n * @param {string} header\n */\nfunction fieldValues (header) {\n assert(header !== null)\n\n const values = []\n\n for (let value of header.split(',')) {\n value = value.trim()\n\n if (!value.length) {\n continue\n } else if (!isValidHeaderName(value)) {\n continue\n }\n\n values.push(value)\n }\n\n return values\n}\n\nmodule.exports = {\n urlEquals,\n fieldValues\n}\n","'use strict'\n\nconst { kConstruct } = require('./symbols')\nconst { urlEquals, fieldValues: getFieldValues } = require('./util')\nconst { kEnumerableProperty, isDisturbed } = require('../core/util')\nconst { kHeadersList } = require('../core/symbols')\nconst { webidl } = require('../fetch/webidl')\nconst { Response, cloneResponse } = require('../fetch/response')\nconst { Request } = require('../fetch/request')\nconst { kState, kHeaders, kGuard, kRealm } = require('../fetch/symbols')\nconst { fetching } = require('../fetch/index')\nconst { urlIsHttpHttpsScheme, createDeferredPromise, readAllBytes } = require('../fetch/util')\nconst assert = require('assert')\nconst { getGlobalDispatcher } = require('../global')\n\n/**\n * @see https://w3c.github.io/ServiceWorker/#dfn-cache-batch-operation\n * @typedef {Object} CacheBatchOperation\n * @property {'delete' | 'put'} type\n * @property {any} request\n * @property {any} response\n * @property {import('../../types/cache').CacheQueryOptions} options\n */\n\n/**\n * @see https://w3c.github.io/ServiceWorker/#dfn-request-response-list\n * @typedef {[any, any][]} requestResponseList\n */\n\nclass Cache {\n /**\n * @see https://w3c.github.io/ServiceWorker/#dfn-relevant-request-response-list\n * @type {requestResponseList}\n */\n #relevantRequestResponseList\n\n constructor () {\n if (arguments[0] !== kConstruct) {\n webidl.illegalConstructor()\n }\n\n this.#relevantRequestResponseList = arguments[1]\n }\n\n async match (request, options = {}) {\n webidl.brandCheck(this, Cache)\n webidl.argumentLengthCheck(arguments, 1, { header: 'Cache.match' })\n\n request = webidl.converters.RequestInfo(request)\n options = webidl.converters.CacheQueryOptions(options)\n\n const p = await this.matchAll(request, options)\n\n if (p.length === 0) {\n return\n }\n\n return p[0]\n }\n\n async matchAll (request = undefined, options = {}) {\n webidl.brandCheck(this, Cache)\n\n if (request !== undefined) request = webidl.converters.RequestInfo(request)\n options = webidl.converters.CacheQueryOptions(options)\n\n // 1.\n let r = null\n\n // 2.\n if (request !== undefined) {\n if (request instanceof Request) {\n // 2.1.1\n r = request[kState]\n\n // 2.1.2\n if (r.method !== 'GET' && !options.ignoreMethod) {\n return []\n }\n } else if (typeof request === 'string') {\n // 2.2.1\n r = new Request(request)[kState]\n }\n }\n\n // 5.\n // 5.1\n const responses = []\n\n // 5.2\n if (request === undefined) {\n // 5.2.1\n for (const requestResponse of this.#relevantRequestResponseList) {\n responses.push(requestResponse[1])\n }\n } else { // 5.3\n // 5.3.1\n const requestResponses = this.#queryCache(r, options)\n\n // 5.3.2\n for (const requestResponse of requestResponses) {\n responses.push(requestResponse[1])\n }\n }\n\n // 5.4\n // We don't implement CORs so we don't need to loop over the responses, yay!\n\n // 5.5.1\n const responseList = []\n\n // 5.5.2\n for (const response of responses) {\n // 5.5.2.1\n const responseObject = new Response(response.body?.source ?? null)\n const body = responseObject[kState].body\n responseObject[kState] = response\n responseObject[kState].body = body\n responseObject[kHeaders][kHeadersList] = response.headersList\n responseObject[kHeaders][kGuard] = 'immutable'\n\n responseList.push(responseObject)\n }\n\n // 6.\n return Object.freeze(responseList)\n }\n\n async add (request) {\n webidl.brandCheck(this, Cache)\n webidl.argumentLengthCheck(arguments, 1, { header: 'Cache.add' })\n\n request = webidl.converters.RequestInfo(request)\n\n // 1.\n const requests = [request]\n\n // 2.\n const responseArrayPromise = this.addAll(requests)\n\n // 3.\n return await responseArrayPromise\n }\n\n async addAll (requests) {\n webidl.brandCheck(this, Cache)\n webidl.argumentLengthCheck(arguments, 1, { header: 'Cache.addAll' })\n\n requests = webidl.converters['sequence'](requests)\n\n // 1.\n const responsePromises = []\n\n // 2.\n const requestList = []\n\n // 3.\n for (const request of requests) {\n if (typeof request === 'string') {\n continue\n }\n\n // 3.1\n const r = request[kState]\n\n // 3.2\n if (!urlIsHttpHttpsScheme(r.url) || r.method !== 'GET') {\n throw webidl.errors.exception({\n header: 'Cache.addAll',\n message: 'Expected http/s scheme when method is not GET.'\n })\n }\n }\n\n // 4.\n /** @type {ReturnType[]} */\n const fetchControllers = []\n\n // 5.\n for (const request of requests) {\n // 5.1\n const r = new Request(request)[kState]\n\n // 5.2\n if (!urlIsHttpHttpsScheme(r.url)) {\n throw webidl.errors.exception({\n header: 'Cache.addAll',\n message: 'Expected http/s scheme.'\n })\n }\n\n // 5.4\n r.initiator = 'fetch'\n r.destination = 'subresource'\n\n // 5.5\n requestList.push(r)\n\n // 5.6\n const responsePromise = createDeferredPromise()\n\n // 5.7\n fetchControllers.push(fetching({\n request: r,\n dispatcher: getGlobalDispatcher(),\n processResponse (response) {\n // 1.\n if (response.type === 'error' || response.status === 206 || response.status < 200 || response.status > 299) {\n responsePromise.reject(webidl.errors.exception({\n header: 'Cache.addAll',\n message: 'Received an invalid status code or the request failed.'\n }))\n } else if (response.headersList.contains('vary')) { // 2.\n // 2.1\n const fieldValues = getFieldValues(response.headersList.get('vary'))\n\n // 2.2\n for (const fieldValue of fieldValues) {\n // 2.2.1\n if (fieldValue === '*') {\n responsePromise.reject(webidl.errors.exception({\n header: 'Cache.addAll',\n message: 'invalid vary field value'\n }))\n\n for (const controller of fetchControllers) {\n controller.abort()\n }\n\n return\n }\n }\n }\n },\n processResponseEndOfBody (response) {\n // 1.\n if (response.aborted) {\n responsePromise.reject(new DOMException('aborted', 'AbortError'))\n return\n }\n\n // 2.\n responsePromise.resolve(response)\n }\n }))\n\n // 5.8\n responsePromises.push(responsePromise.promise)\n }\n\n // 6.\n const p = Promise.all(responsePromises)\n\n // 7.\n const responses = await p\n\n // 7.1\n const operations = []\n\n // 7.2\n let index = 0\n\n // 7.3\n for (const response of responses) {\n // 7.3.1\n /** @type {CacheBatchOperation} */\n const operation = {\n type: 'put', // 7.3.2\n request: requestList[index], // 7.3.3\n response // 7.3.4\n }\n\n operations.push(operation) // 7.3.5\n\n index++ // 7.3.6\n }\n\n // 7.5\n const cacheJobPromise = createDeferredPromise()\n\n // 7.6.1\n let errorData = null\n\n // 7.6.2\n try {\n this.#batchCacheOperations(operations)\n } catch (e) {\n errorData = e\n }\n\n // 7.6.3\n queueMicrotask(() => {\n // 7.6.3.1\n if (errorData === null) {\n cacheJobPromise.resolve(undefined)\n } else {\n // 7.6.3.2\n cacheJobPromise.reject(errorData)\n }\n })\n\n // 7.7\n return cacheJobPromise.promise\n }\n\n async put (request, response) {\n webidl.brandCheck(this, Cache)\n webidl.argumentLengthCheck(arguments, 2, { header: 'Cache.put' })\n\n request = webidl.converters.RequestInfo(request)\n response = webidl.converters.Response(response)\n\n // 1.\n let innerRequest = null\n\n // 2.\n if (request instanceof Request) {\n innerRequest = request[kState]\n } else { // 3.\n innerRequest = new Request(request)[kState]\n }\n\n // 4.\n if (!urlIsHttpHttpsScheme(innerRequest.url) || innerRequest.method !== 'GET') {\n throw webidl.errors.exception({\n header: 'Cache.put',\n message: 'Expected an http/s scheme when method is not GET'\n })\n }\n\n // 5.\n const innerResponse = response[kState]\n\n // 6.\n if (innerResponse.status === 206) {\n throw webidl.errors.exception({\n header: 'Cache.put',\n message: 'Got 206 status'\n })\n }\n\n // 7.\n if (innerResponse.headersList.contains('vary')) {\n // 7.1.\n const fieldValues = getFieldValues(innerResponse.headersList.get('vary'))\n\n // 7.2.\n for (const fieldValue of fieldValues) {\n // 7.2.1\n if (fieldValue === '*') {\n throw webidl.errors.exception({\n header: 'Cache.put',\n message: 'Got * vary field value'\n })\n }\n }\n }\n\n // 8.\n if (innerResponse.body && (isDisturbed(innerResponse.body.stream) || innerResponse.body.stream.locked)) {\n throw webidl.errors.exception({\n header: 'Cache.put',\n message: 'Response body is locked or disturbed'\n })\n }\n\n // 9.\n const clonedResponse = cloneResponse(innerResponse)\n\n // 10.\n const bodyReadPromise = createDeferredPromise()\n\n // 11.\n if (innerResponse.body != null) {\n // 11.1\n const stream = innerResponse.body.stream\n\n // 11.2\n const reader = stream.getReader()\n\n // 11.3\n readAllBytes(reader).then(bodyReadPromise.resolve, bodyReadPromise.reject)\n } else {\n bodyReadPromise.resolve(undefined)\n }\n\n // 12.\n /** @type {CacheBatchOperation[]} */\n const operations = []\n\n // 13.\n /** @type {CacheBatchOperation} */\n const operation = {\n type: 'put', // 14.\n request: innerRequest, // 15.\n response: clonedResponse // 16.\n }\n\n // 17.\n operations.push(operation)\n\n // 19.\n const bytes = await bodyReadPromise.promise\n\n if (clonedResponse.body != null) {\n clonedResponse.body.source = bytes\n }\n\n // 19.1\n const cacheJobPromise = createDeferredPromise()\n\n // 19.2.1\n let errorData = null\n\n // 19.2.2\n try {\n this.#batchCacheOperations(operations)\n } catch (e) {\n errorData = e\n }\n\n // 19.2.3\n queueMicrotask(() => {\n // 19.2.3.1\n if (errorData === null) {\n cacheJobPromise.resolve()\n } else { // 19.2.3.2\n cacheJobPromise.reject(errorData)\n }\n })\n\n return cacheJobPromise.promise\n }\n\n async delete (request, options = {}) {\n webidl.brandCheck(this, Cache)\n webidl.argumentLengthCheck(arguments, 1, { header: 'Cache.delete' })\n\n request = webidl.converters.RequestInfo(request)\n options = webidl.converters.CacheQueryOptions(options)\n\n /**\n * @type {Request}\n */\n let r = null\n\n if (request instanceof Request) {\n r = request[kState]\n\n if (r.method !== 'GET' && !options.ignoreMethod) {\n return false\n }\n } else {\n assert(typeof request === 'string')\n\n r = new Request(request)[kState]\n }\n\n /** @type {CacheBatchOperation[]} */\n const operations = []\n\n /** @type {CacheBatchOperation} */\n const operation = {\n type: 'delete',\n request: r,\n options\n }\n\n operations.push(operation)\n\n const cacheJobPromise = createDeferredPromise()\n\n let errorData = null\n let requestResponses\n\n try {\n requestResponses = this.#batchCacheOperations(operations)\n } catch (e) {\n errorData = e\n }\n\n queueMicrotask(() => {\n if (errorData === null) {\n cacheJobPromise.resolve(!!requestResponses?.length)\n } else {\n cacheJobPromise.reject(errorData)\n }\n })\n\n return cacheJobPromise.promise\n }\n\n /**\n * @see https://w3c.github.io/ServiceWorker/#dom-cache-keys\n * @param {any} request\n * @param {import('../../types/cache').CacheQueryOptions} options\n * @returns {readonly Request[]}\n */\n async keys (request = undefined, options = {}) {\n webidl.brandCheck(this, Cache)\n\n if (request !== undefined) request = webidl.converters.RequestInfo(request)\n options = webidl.converters.CacheQueryOptions(options)\n\n // 1.\n let r = null\n\n // 2.\n if (request !== undefined) {\n // 2.1\n if (request instanceof Request) {\n // 2.1.1\n r = request[kState]\n\n // 2.1.2\n if (r.method !== 'GET' && !options.ignoreMethod) {\n return []\n }\n } else if (typeof request === 'string') { // 2.2\n r = new Request(request)[kState]\n }\n }\n\n // 4.\n const promise = createDeferredPromise()\n\n // 5.\n // 5.1\n const requests = []\n\n // 5.2\n if (request === undefined) {\n // 5.2.1\n for (const requestResponse of this.#relevantRequestResponseList) {\n // 5.2.1.1\n requests.push(requestResponse[0])\n }\n } else { // 5.3\n // 5.3.1\n const requestResponses = this.#queryCache(r, options)\n\n // 5.3.2\n for (const requestResponse of requestResponses) {\n // 5.3.2.1\n requests.push(requestResponse[0])\n }\n }\n\n // 5.4\n queueMicrotask(() => {\n // 5.4.1\n const requestList = []\n\n // 5.4.2\n for (const request of requests) {\n const requestObject = new Request('https://a')\n requestObject[kState] = request\n requestObject[kHeaders][kHeadersList] = request.headersList\n requestObject[kHeaders][kGuard] = 'immutable'\n requestObject[kRealm] = request.client\n\n // 5.4.2.1\n requestList.push(requestObject)\n }\n\n // 5.4.3\n promise.resolve(Object.freeze(requestList))\n })\n\n return promise.promise\n }\n\n /**\n * @see https://w3c.github.io/ServiceWorker/#batch-cache-operations-algorithm\n * @param {CacheBatchOperation[]} operations\n * @returns {requestResponseList}\n */\n #batchCacheOperations (operations) {\n // 1.\n const cache = this.#relevantRequestResponseList\n\n // 2.\n const backupCache = [...cache]\n\n // 3.\n const addedItems = []\n\n // 4.1\n const resultList = []\n\n try {\n // 4.2\n for (const operation of operations) {\n // 4.2.1\n if (operation.type !== 'delete' && operation.type !== 'put') {\n throw webidl.errors.exception({\n header: 'Cache.#batchCacheOperations',\n message: 'operation type does not match \"delete\" or \"put\"'\n })\n }\n\n // 4.2.2\n if (operation.type === 'delete' && operation.response != null) {\n throw webidl.errors.exception({\n header: 'Cache.#batchCacheOperations',\n message: 'delete operation should not have an associated response'\n })\n }\n\n // 4.2.3\n if (this.#queryCache(operation.request, operation.options, addedItems).length) {\n throw new DOMException('???', 'InvalidStateError')\n }\n\n // 4.2.4\n let requestResponses\n\n // 4.2.5\n if (operation.type === 'delete') {\n // 4.2.5.1\n requestResponses = this.#queryCache(operation.request, operation.options)\n\n // TODO: the spec is wrong, this is needed to pass WPTs\n if (requestResponses.length === 0) {\n return []\n }\n\n // 4.2.5.2\n for (const requestResponse of requestResponses) {\n const idx = cache.indexOf(requestResponse)\n assert(idx !== -1)\n\n // 4.2.5.2.1\n cache.splice(idx, 1)\n }\n } else if (operation.type === 'put') { // 4.2.6\n // 4.2.6.1\n if (operation.response == null) {\n throw webidl.errors.exception({\n header: 'Cache.#batchCacheOperations',\n message: 'put operation should have an associated response'\n })\n }\n\n // 4.2.6.2\n const r = operation.request\n\n // 4.2.6.3\n if (!urlIsHttpHttpsScheme(r.url)) {\n throw webidl.errors.exception({\n header: 'Cache.#batchCacheOperations',\n message: 'expected http or https scheme'\n })\n }\n\n // 4.2.6.4\n if (r.method !== 'GET') {\n throw webidl.errors.exception({\n header: 'Cache.#batchCacheOperations',\n message: 'not get method'\n })\n }\n\n // 4.2.6.5\n if (operation.options != null) {\n throw webidl.errors.exception({\n header: 'Cache.#batchCacheOperations',\n message: 'options must not be defined'\n })\n }\n\n // 4.2.6.6\n requestResponses = this.#queryCache(operation.request)\n\n // 4.2.6.7\n for (const requestResponse of requestResponses) {\n const idx = cache.indexOf(requestResponse)\n assert(idx !== -1)\n\n // 4.2.6.7.1\n cache.splice(idx, 1)\n }\n\n // 4.2.6.8\n cache.push([operation.request, operation.response])\n\n // 4.2.6.10\n addedItems.push([operation.request, operation.response])\n }\n\n // 4.2.7\n resultList.push([operation.request, operation.response])\n }\n\n // 4.3\n return resultList\n } catch (e) { // 5.\n // 5.1\n this.#relevantRequestResponseList.length = 0\n\n // 5.2\n this.#relevantRequestResponseList = backupCache\n\n // 5.3\n throw e\n }\n }\n\n /**\n * @see https://w3c.github.io/ServiceWorker/#query-cache\n * @param {any} requestQuery\n * @param {import('../../types/cache').CacheQueryOptions} options\n * @param {requestResponseList} targetStorage\n * @returns {requestResponseList}\n */\n #queryCache (requestQuery, options, targetStorage) {\n /** @type {requestResponseList} */\n const resultList = []\n\n const storage = targetStorage ?? this.#relevantRequestResponseList\n\n for (const requestResponse of storage) {\n const [cachedRequest, cachedResponse] = requestResponse\n if (this.#requestMatchesCachedItem(requestQuery, cachedRequest, cachedResponse, options)) {\n resultList.push(requestResponse)\n }\n }\n\n return resultList\n }\n\n /**\n * @see https://w3c.github.io/ServiceWorker/#request-matches-cached-item-algorithm\n * @param {any} requestQuery\n * @param {any} request\n * @param {any | null} response\n * @param {import('../../types/cache').CacheQueryOptions | undefined} options\n * @returns {boolean}\n */\n #requestMatchesCachedItem (requestQuery, request, response = null, options) {\n // if (options?.ignoreMethod === false && request.method === 'GET') {\n // return false\n // }\n\n const queryURL = new URL(requestQuery.url)\n\n const cachedURL = new URL(request.url)\n\n if (options?.ignoreSearch) {\n cachedURL.search = ''\n\n queryURL.search = ''\n }\n\n if (!urlEquals(queryURL, cachedURL, true)) {\n return false\n }\n\n if (\n response == null ||\n options?.ignoreVary ||\n !response.headersList.contains('vary')\n ) {\n return true\n }\n\n const fieldValues = getFieldValues(response.headersList.get('vary'))\n\n for (const fieldValue of fieldValues) {\n if (fieldValue === '*') {\n return false\n }\n\n const requestValue = request.headersList.get(fieldValue)\n const queryValue = requestQuery.headersList.get(fieldValue)\n\n // If one has the header and the other doesn't, or one has\n // a different value than the other, return false\n if (requestValue !== queryValue) {\n return false\n }\n }\n\n return true\n }\n}\n\nObject.defineProperties(Cache.prototype, {\n [Symbol.toStringTag]: {\n value: 'Cache',\n configurable: true\n },\n match: kEnumerableProperty,\n matchAll: kEnumerableProperty,\n add: kEnumerableProperty,\n addAll: kEnumerableProperty,\n put: kEnumerableProperty,\n delete: kEnumerableProperty,\n keys: kEnumerableProperty\n})\n\nconst cacheQueryOptionConverters = [\n {\n key: 'ignoreSearch',\n converter: webidl.converters.boolean,\n defaultValue: false\n },\n {\n key: 'ignoreMethod',\n converter: webidl.converters.boolean,\n defaultValue: false\n },\n {\n key: 'ignoreVary',\n converter: webidl.converters.boolean,\n defaultValue: false\n }\n]\n\nwebidl.converters.CacheQueryOptions = webidl.dictionaryConverter(cacheQueryOptionConverters)\n\nwebidl.converters.MultiCacheQueryOptions = webidl.dictionaryConverter([\n ...cacheQueryOptionConverters,\n {\n key: 'cacheName',\n converter: webidl.converters.DOMString\n }\n])\n\nwebidl.converters.Response = webidl.interfaceConverter(Response)\n\nwebidl.converters['sequence'] = webidl.sequenceConverter(\n webidl.converters.RequestInfo\n)\n\nmodule.exports = {\n Cache\n}\n","'use strict'\n\nconst { kConstruct } = require('./symbols')\nconst { Cache } = require('./cache')\nconst { webidl } = require('../fetch/webidl')\nconst { kEnumerableProperty } = require('../core/util')\n\nclass CacheStorage {\n /**\n * @see https://w3c.github.io/ServiceWorker/#dfn-relevant-name-to-cache-map\n * @type {Map}\n */\n async has (cacheName) {\n webidl.brandCheck(this, CacheStorage)\n webidl.argumentLengthCheck(arguments, 1, { header: 'CacheStorage.has' })\n\n cacheName = webidl.converters.DOMString(cacheName)\n\n // 2.1.1\n // 2.2\n return this.#caches.has(cacheName)\n }\n\n /**\n * @see https://w3c.github.io/ServiceWorker/#dom-cachestorage-open\n * @param {string} cacheName\n * @returns {Promise}\n */\n async open (cacheName) {\n webidl.brandCheck(this, CacheStorage)\n webidl.argumentLengthCheck(arguments, 1, { header: 'CacheStorage.open' })\n\n cacheName = webidl.converters.DOMString(cacheName)\n\n // 2.1\n if (this.#caches.has(cacheName)) {\n // await caches.open('v1') !== await caches.open('v1')\n\n // 2.1.1\n const cache = this.#caches.get(cacheName)\n\n // 2.1.1.1\n return new Cache(kConstruct, cache)\n }\n\n // 2.2\n const cache = []\n\n // 2.3\n this.#caches.set(cacheName, cache)\n\n // 2.4\n return new Cache(kConstruct, cache)\n }\n\n /**\n * @see https://w3c.github.io/ServiceWorker/#cache-storage-delete\n * @param {string} cacheName\n * @returns {Promise}\n */\n async delete (cacheName) {\n webidl.brandCheck(this, CacheStorage)\n webidl.argumentLengthCheck(arguments, 1, { header: 'CacheStorage.delete' })\n\n cacheName = webidl.converters.DOMString(cacheName)\n\n return this.#caches.delete(cacheName)\n }\n\n /**\n * @see https://w3c.github.io/ServiceWorker/#cache-storage-keys\n * @returns {string[]}\n */\n async keys () {\n webidl.brandCheck(this, CacheStorage)\n\n // 2.1\n const keys = this.#caches.keys()\n\n // 2.2\n return [...keys]\n }\n}\n\nObject.defineProperties(CacheStorage.prototype, {\n [Symbol.toStringTag]: {\n value: 'CacheStorage',\n configurable: true\n },\n match: kEnumerableProperty,\n has: kEnumerableProperty,\n open: kEnumerableProperty,\n delete: kEnumerableProperty,\n keys: kEnumerableProperty\n})\n\nmodule.exports = {\n CacheStorage\n}\n","'use strict'\n\n// https://wicg.github.io/cookie-store/#cookie-maximum-attribute-value-size\nconst maxAttributeValueSize = 1024\n\n// https://wicg.github.io/cookie-store/#cookie-maximum-name-value-pair-size\nconst maxNameValuePairSize = 4096\n\nmodule.exports = {\n maxAttributeValueSize,\n maxNameValuePairSize\n}\n","'use strict'\n\n/**\n * @param {string} value\n * @returns {boolean}\n */\nfunction isCTLExcludingHtab (value) {\n if (value.length === 0) {\n return false\n }\n\n for (const char of value) {\n const code = char.charCodeAt(0)\n\n if (\n (code >= 0x00 || code <= 0x08) ||\n (code >= 0x0A || code <= 0x1F) ||\n code === 0x7F\n ) {\n return false\n }\n }\n}\n\n/**\n CHAR = \n token = 1*\n separators = \"(\" | \")\" | \"<\" | \">\" | \"@\"\n | \",\" | \";\" | \":\" | \"\\\" | <\">\n | \"/\" | \"[\" | \"]\" | \"?\" | \"=\"\n | \"{\" | \"}\" | SP | HT\n * @param {string} name\n */\nfunction validateCookieName (name) {\n for (const char of name) {\n const code = char.charCodeAt(0)\n\n if (\n (code <= 0x20 || code > 0x7F) ||\n char === '(' ||\n char === ')' ||\n char === '>' ||\n char === '<' ||\n char === '@' ||\n char === ',' ||\n char === ';' ||\n char === ':' ||\n char === '\\\\' ||\n char === '\"' ||\n char === '/' ||\n char === '[' ||\n char === ']' ||\n char === '?' ||\n char === '=' ||\n char === '{' ||\n char === '}'\n ) {\n throw new Error('Invalid cookie name')\n }\n }\n}\n\n/**\n cookie-value = *cookie-octet / ( DQUOTE *cookie-octet DQUOTE )\n cookie-octet = %x21 / %x23-2B / %x2D-3A / %x3C-5B / %x5D-7E\n ; US-ASCII characters excluding CTLs,\n ; whitespace DQUOTE, comma, semicolon,\n ; and backslash\n * @param {string} value\n */\nfunction validateCookieValue (value) {\n for (const char of value) {\n const code = char.charCodeAt(0)\n\n if (\n code < 0x21 || // exclude CTLs (0-31)\n code === 0x22 ||\n code === 0x2C ||\n code === 0x3B ||\n code === 0x5C ||\n code > 0x7E // non-ascii\n ) {\n throw new Error('Invalid header value')\n }\n }\n}\n\n/**\n * path-value = \n * @param {string} path\n */\nfunction validateCookiePath (path) {\n for (const char of path) {\n const code = char.charCodeAt(0)\n\n if (code < 0x21 || char === ';') {\n throw new Error('Invalid cookie path')\n }\n }\n}\n\n/**\n * I have no idea why these values aren't allowed to be honest,\n * but Deno tests these. - Khafra\n * @param {string} domain\n */\nfunction validateCookieDomain (domain) {\n if (\n domain.startsWith('-') ||\n domain.endsWith('.') ||\n domain.endsWith('-')\n ) {\n throw new Error('Invalid cookie domain')\n }\n}\n\n/**\n * @see https://www.rfc-editor.org/rfc/rfc7231#section-7.1.1.1\n * @param {number|Date} date\n IMF-fixdate = day-name \",\" SP date1 SP time-of-day SP GMT\n ; fixed length/zone/capitalization subset of the format\n ; see Section 3.3 of [RFC5322]\n\n day-name = %x4D.6F.6E ; \"Mon\", case-sensitive\n / %x54.75.65 ; \"Tue\", case-sensitive\n / %x57.65.64 ; \"Wed\", case-sensitive\n / %x54.68.75 ; \"Thu\", case-sensitive\n / %x46.72.69 ; \"Fri\", case-sensitive\n / %x53.61.74 ; \"Sat\", case-sensitive\n / %x53.75.6E ; \"Sun\", case-sensitive\n date1 = day SP month SP year\n ; e.g., 02 Jun 1982\n\n day = 2DIGIT\n month = %x4A.61.6E ; \"Jan\", case-sensitive\n / %x46.65.62 ; \"Feb\", case-sensitive\n / %x4D.61.72 ; \"Mar\", case-sensitive\n / %x41.70.72 ; \"Apr\", case-sensitive\n / %x4D.61.79 ; \"May\", case-sensitive\n / %x4A.75.6E ; \"Jun\", case-sensitive\n / %x4A.75.6C ; \"Jul\", case-sensitive\n / %x41.75.67 ; \"Aug\", case-sensitive\n / %x53.65.70 ; \"Sep\", case-sensitive\n / %x4F.63.74 ; \"Oct\", case-sensitive\n / %x4E.6F.76 ; \"Nov\", case-sensitive\n / %x44.65.63 ; \"Dec\", case-sensitive\n year = 4DIGIT\n\n GMT = %x47.4D.54 ; \"GMT\", case-sensitive\n\n time-of-day = hour \":\" minute \":\" second\n ; 00:00:00 - 23:59:60 (leap second)\n\n hour = 2DIGIT\n minute = 2DIGIT\n second = 2DIGIT\n */\nfunction toIMFDate (date) {\n if (typeof date === 'number') {\n date = new Date(date)\n }\n\n const days = [\n 'Sun', 'Mon', 'Tue', 'Wed',\n 'Thu', 'Fri', 'Sat'\n ]\n\n const months = [\n 'Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun',\n 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'\n ]\n\n const dayName = days[date.getUTCDay()]\n const day = date.getUTCDate().toString().padStart(2, '0')\n const month = months[date.getUTCMonth()]\n const year = date.getUTCFullYear()\n const hour = date.getUTCHours().toString().padStart(2, '0')\n const minute = date.getUTCMinutes().toString().padStart(2, '0')\n const second = date.getUTCSeconds().toString().padStart(2, '0')\n\n return `${dayName}, ${day} ${month} ${year} ${hour}:${minute}:${second} GMT`\n}\n\n/**\n max-age-av = \"Max-Age=\" non-zero-digit *DIGIT\n ; In practice, both expires-av and max-age-av\n ; are limited to dates representable by the\n ; user agent.\n * @param {number} maxAge\n */\nfunction validateCookieMaxAge (maxAge) {\n if (maxAge < 0) {\n throw new Error('Invalid cookie max-age')\n }\n}\n\n/**\n * @see https://www.rfc-editor.org/rfc/rfc6265#section-4.1.1\n * @param {import('./index').Cookie} cookie\n */\nfunction stringify (cookie) {\n if (cookie.name.length === 0) {\n return null\n }\n\n validateCookieName(cookie.name)\n validateCookieValue(cookie.value)\n\n const out = [`${cookie.name}=${cookie.value}`]\n\n // https://datatracker.ietf.org/doc/html/draft-ietf-httpbis-cookie-prefixes-00#section-3.1\n // https://datatracker.ietf.org/doc/html/draft-ietf-httpbis-cookie-prefixes-00#section-3.2\n if (cookie.name.startsWith('__Secure-')) {\n cookie.secure = true\n }\n\n if (cookie.name.startsWith('__Host-')) {\n cookie.secure = true\n cookie.domain = null\n cookie.path = '/'\n }\n\n if (cookie.secure) {\n out.push('Secure')\n }\n\n if (cookie.httpOnly) {\n out.push('HttpOnly')\n }\n\n if (typeof cookie.maxAge === 'number') {\n validateCookieMaxAge(cookie.maxAge)\n out.push(`Max-Age=${cookie.maxAge}`)\n }\n\n if (cookie.domain) {\n validateCookieDomain(cookie.domain)\n out.push(`Domain=${cookie.domain}`)\n }\n\n if (cookie.path) {\n validateCookiePath(cookie.path)\n out.push(`Path=${cookie.path}`)\n }\n\n if (cookie.expires && cookie.expires.toString() !== 'Invalid Date') {\n out.push(`Expires=${toIMFDate(cookie.expires)}`)\n }\n\n if (cookie.sameSite) {\n out.push(`SameSite=${cookie.sameSite}`)\n }\n\n for (const part of cookie.unparsed) {\n if (!part.includes('=')) {\n throw new Error('Invalid unparsed')\n }\n\n const [key, ...value] = part.split('=')\n\n out.push(`${key.trim()}=${value.join('=')}`)\n }\n\n return out.join('; ')\n}\n\nmodule.exports = {\n isCTLExcludingHtab,\n validateCookieName,\n validateCookiePath,\n validateCookieValue,\n toIMFDate,\n stringify\n}\n","'use strict'\n\nconst { maxNameValuePairSize, maxAttributeValueSize } = require('./constants')\nconst { isCTLExcludingHtab } = require('./util')\nconst { collectASequenceOfCodePointsFast } = require('../fetch/dataURL')\nconst assert = require('assert')\n\n/**\n * @description Parses the field-value attributes of a set-cookie header string.\n * @see https://datatracker.ietf.org/doc/html/draft-ietf-httpbis-rfc6265bis#section-5.4\n * @param {string} header\n * @returns if the header is invalid, null will be returned\n */\nfunction parseSetCookie (header) {\n // 1. If the set-cookie-string contains a %x00-08 / %x0A-1F / %x7F\n // character (CTL characters excluding HTAB): Abort these steps and\n // ignore the set-cookie-string entirely.\n if (isCTLExcludingHtab(header)) {\n return null\n }\n\n let nameValuePair = ''\n let unparsedAttributes = ''\n let name = ''\n let value = ''\n\n // 2. If the set-cookie-string contains a %x3B (\";\") character:\n if (header.includes(';')) {\n // 1. The name-value-pair string consists of the characters up to,\n // but not including, the first %x3B (\";\"), and the unparsed-\n // attributes consist of the remainder of the set-cookie-string\n // (including the %x3B (\";\") in question).\n const position = { position: 0 }\n\n nameValuePair = collectASequenceOfCodePointsFast(';', header, position)\n unparsedAttributes = header.slice(position.position)\n } else {\n // Otherwise:\n\n // 1. The name-value-pair string consists of all the characters\n // contained in the set-cookie-string, and the unparsed-\n // attributes is the empty string.\n nameValuePair = header\n }\n\n // 3. If the name-value-pair string lacks a %x3D (\"=\") character, then\n // the name string is empty, and the value string is the value of\n // name-value-pair.\n if (!nameValuePair.includes('=')) {\n value = nameValuePair\n } else {\n // Otherwise, the name string consists of the characters up to, but\n // not including, the first %x3D (\"=\") character, and the (possibly\n // empty) value string consists of the characters after the first\n // %x3D (\"=\") character.\n const position = { position: 0 }\n name = collectASequenceOfCodePointsFast(\n '=',\n nameValuePair,\n position\n )\n value = nameValuePair.slice(position.position + 1)\n }\n\n // 4. Remove any leading or trailing WSP characters from the name\n // string and the value string.\n name = name.trim()\n value = value.trim()\n\n // 5. If the sum of the lengths of the name string and the value string\n // is more than 4096 octets, abort these steps and ignore the set-\n // cookie-string entirely.\n if (name.length + value.length > maxNameValuePairSize) {\n return null\n }\n\n // 6. The cookie-name is the name string, and the cookie-value is the\n // value string.\n return {\n name, value, ...parseUnparsedAttributes(unparsedAttributes)\n }\n}\n\n/**\n * Parses the remaining attributes of a set-cookie header\n * @see https://datatracker.ietf.org/doc/html/draft-ietf-httpbis-rfc6265bis#section-5.4\n * @param {string} unparsedAttributes\n * @param {[Object.]={}} cookieAttributeList\n */\nfunction parseUnparsedAttributes (unparsedAttributes, cookieAttributeList = {}) {\n // 1. If the unparsed-attributes string is empty, skip the rest of\n // these steps.\n if (unparsedAttributes.length === 0) {\n return cookieAttributeList\n }\n\n // 2. Discard the first character of the unparsed-attributes (which\n // will be a %x3B (\";\") character).\n assert(unparsedAttributes[0] === ';')\n unparsedAttributes = unparsedAttributes.slice(1)\n\n let cookieAv = ''\n\n // 3. If the remaining unparsed-attributes contains a %x3B (\";\")\n // character:\n if (unparsedAttributes.includes(';')) {\n // 1. Consume the characters of the unparsed-attributes up to, but\n // not including, the first %x3B (\";\") character.\n cookieAv = collectASequenceOfCodePointsFast(\n ';',\n unparsedAttributes,\n { position: 0 }\n )\n unparsedAttributes = unparsedAttributes.slice(cookieAv.length)\n } else {\n // Otherwise:\n\n // 1. Consume the remainder of the unparsed-attributes.\n cookieAv = unparsedAttributes\n unparsedAttributes = ''\n }\n\n // Let the cookie-av string be the characters consumed in this step.\n\n let attributeName = ''\n let attributeValue = ''\n\n // 4. If the cookie-av string contains a %x3D (\"=\") character:\n if (cookieAv.includes('=')) {\n // 1. The (possibly empty) attribute-name string consists of the\n // characters up to, but not including, the first %x3D (\"=\")\n // character, and the (possibly empty) attribute-value string\n // consists of the characters after the first %x3D (\"=\")\n // character.\n const position = { position: 0 }\n\n attributeName = collectASequenceOfCodePointsFast(\n '=',\n cookieAv,\n position\n )\n attributeValue = cookieAv.slice(position.position + 1)\n } else {\n // Otherwise:\n\n // 1. The attribute-name string consists of the entire cookie-av\n // string, and the attribute-value string is empty.\n attributeName = cookieAv\n }\n\n // 5. Remove any leading or trailing WSP characters from the attribute-\n // name string and the attribute-value string.\n attributeName = attributeName.trim()\n attributeValue = attributeValue.trim()\n\n // 6. If the attribute-value is longer than 1024 octets, ignore the\n // cookie-av string and return to Step 1 of this algorithm.\n if (attributeValue.length > maxAttributeValueSize) {\n return parseUnparsedAttributes(unparsedAttributes, cookieAttributeList)\n }\n\n // 7. Process the attribute-name and attribute-value according to the\n // requirements in the following subsections. (Notice that\n // attributes with unrecognized attribute-names are ignored.)\n const attributeNameLowercase = attributeName.toLowerCase()\n\n // https://datatracker.ietf.org/doc/html/draft-ietf-httpbis-rfc6265bis#section-5.4.1\n // If the attribute-name case-insensitively matches the string\n // \"Expires\", the user agent MUST process the cookie-av as follows.\n if (attributeNameLowercase === 'expires') {\n // 1. Let the expiry-time be the result of parsing the attribute-value\n // as cookie-date (see Section 5.1.1).\n const expiryTime = new Date(attributeValue)\n\n // 2. If the attribute-value failed to parse as a cookie date, ignore\n // the cookie-av.\n\n cookieAttributeList.expires = expiryTime\n } else if (attributeNameLowercase === 'max-age') {\n // https://datatracker.ietf.org/doc/html/draft-ietf-httpbis-rfc6265bis#section-5.4.2\n // If the attribute-name case-insensitively matches the string \"Max-\n // Age\", the user agent MUST process the cookie-av as follows.\n\n // 1. If the first character of the attribute-value is not a DIGIT or a\n // \"-\" character, ignore the cookie-av.\n const charCode = attributeValue.charCodeAt(0)\n\n if ((charCode < 48 || charCode > 57) && attributeValue[0] !== '-') {\n return parseUnparsedAttributes(unparsedAttributes, cookieAttributeList)\n }\n\n // 2. If the remainder of attribute-value contains a non-DIGIT\n // character, ignore the cookie-av.\n if (!/^\\d+$/.test(attributeValue)) {\n return parseUnparsedAttributes(unparsedAttributes, cookieAttributeList)\n }\n\n // 3. Let delta-seconds be the attribute-value converted to an integer.\n const deltaSeconds = Number(attributeValue)\n\n // 4. Let cookie-age-limit be the maximum age of the cookie (which\n // SHOULD be 400 days or less, see Section 4.1.2.2).\n\n // 5. Set delta-seconds to the smaller of its present value and cookie-\n // age-limit.\n // deltaSeconds = Math.min(deltaSeconds * 1000, maxExpiresMs)\n\n // 6. If delta-seconds is less than or equal to zero (0), let expiry-\n // time be the earliest representable date and time. Otherwise, let\n // the expiry-time be the current date and time plus delta-seconds\n // seconds.\n // const expiryTime = deltaSeconds <= 0 ? Date.now() : Date.now() + deltaSeconds\n\n // 7. Append an attribute to the cookie-attribute-list with an\n // attribute-name of Max-Age and an attribute-value of expiry-time.\n cookieAttributeList.maxAge = deltaSeconds\n } else if (attributeNameLowercase === 'domain') {\n // https://datatracker.ietf.org/doc/html/draft-ietf-httpbis-rfc6265bis#section-5.4.3\n // If the attribute-name case-insensitively matches the string \"Domain\",\n // the user agent MUST process the cookie-av as follows.\n\n // 1. Let cookie-domain be the attribute-value.\n let cookieDomain = attributeValue\n\n // 2. If cookie-domain starts with %x2E (\".\"), let cookie-domain be\n // cookie-domain without its leading %x2E (\".\").\n if (cookieDomain[0] === '.') {\n cookieDomain = cookieDomain.slice(1)\n }\n\n // 3. Convert the cookie-domain to lower case.\n cookieDomain = cookieDomain.toLowerCase()\n\n // 4. Append an attribute to the cookie-attribute-list with an\n // attribute-name of Domain and an attribute-value of cookie-domain.\n cookieAttributeList.domain = cookieDomain\n } else if (attributeNameLowercase === 'path') {\n // https://datatracker.ietf.org/doc/html/draft-ietf-httpbis-rfc6265bis#section-5.4.4\n // If the attribute-name case-insensitively matches the string \"Path\",\n // the user agent MUST process the cookie-av as follows.\n\n // 1. If the attribute-value is empty or if the first character of the\n // attribute-value is not %x2F (\"/\"):\n let cookiePath = ''\n if (attributeValue.length === 0 || attributeValue[0] !== '/') {\n // 1. Let cookie-path be the default-path.\n cookiePath = '/'\n } else {\n // Otherwise:\n\n // 1. Let cookie-path be the attribute-value.\n cookiePath = attributeValue\n }\n\n // 2. Append an attribute to the cookie-attribute-list with an\n // attribute-name of Path and an attribute-value of cookie-path.\n cookieAttributeList.path = cookiePath\n } else if (attributeNameLowercase === 'secure') {\n // https://datatracker.ietf.org/doc/html/draft-ietf-httpbis-rfc6265bis#section-5.4.5\n // If the attribute-name case-insensitively matches the string \"Secure\",\n // the user agent MUST append an attribute to the cookie-attribute-list\n // with an attribute-name of Secure and an empty attribute-value.\n\n cookieAttributeList.secure = true\n } else if (attributeNameLowercase === 'httponly') {\n // https://datatracker.ietf.org/doc/html/draft-ietf-httpbis-rfc6265bis#section-5.4.6\n // If the attribute-name case-insensitively matches the string\n // \"HttpOnly\", the user agent MUST append an attribute to the cookie-\n // attribute-list with an attribute-name of HttpOnly and an empty\n // attribute-value.\n\n cookieAttributeList.httpOnly = true\n } else if (attributeNameLowercase === 'samesite') {\n // https://datatracker.ietf.org/doc/html/draft-ietf-httpbis-rfc6265bis#section-5.4.7\n // If the attribute-name case-insensitively matches the string\n // \"SameSite\", the user agent MUST process the cookie-av as follows:\n\n // 1. Let enforcement be \"Default\".\n let enforcement = 'Default'\n\n const attributeValueLowercase = attributeValue.toLowerCase()\n // 2. If cookie-av's attribute-value is a case-insensitive match for\n // \"None\", set enforcement to \"None\".\n if (attributeValueLowercase.includes('none')) {\n enforcement = 'None'\n }\n\n // 3. If cookie-av's attribute-value is a case-insensitive match for\n // \"Strict\", set enforcement to \"Strict\".\n if (attributeValueLowercase.includes('strict')) {\n enforcement = 'Strict'\n }\n\n // 4. If cookie-av's attribute-value is a case-insensitive match for\n // \"Lax\", set enforcement to \"Lax\".\n if (attributeValueLowercase.includes('lax')) {\n enforcement = 'Lax'\n }\n\n // 5. Append an attribute to the cookie-attribute-list with an\n // attribute-name of \"SameSite\" and an attribute-value of\n // enforcement.\n cookieAttributeList.sameSite = enforcement\n } else {\n cookieAttributeList.unparsed ??= []\n\n cookieAttributeList.unparsed.push(`${attributeName}=${attributeValue}`)\n }\n\n // 8. Return to Step 1 of this algorithm.\n return parseUnparsedAttributes(unparsedAttributes, cookieAttributeList)\n}\n\nmodule.exports = {\n parseSetCookie,\n parseUnparsedAttributes\n}\n","'use strict'\n\nconst { parseSetCookie } = require('./parse')\nconst { stringify } = require('./util')\nconst { webidl } = require('../fetch/webidl')\nconst { Headers } = require('../fetch/headers')\n\n/**\n * @typedef {Object} Cookie\n * @property {string} name\n * @property {string} value\n * @property {Date|number|undefined} expires\n * @property {number|undefined} maxAge\n * @property {string|undefined} domain\n * @property {string|undefined} path\n * @property {boolean|undefined} secure\n * @property {boolean|undefined} httpOnly\n * @property {'Strict'|'Lax'|'None'} sameSite\n * @property {string[]} unparsed\n */\n\n/**\n * @param {Headers} headers\n * @returns {Record}\n */\nfunction getCookies (headers) {\n webidl.argumentLengthCheck(arguments, 1, { header: 'getCookies' })\n\n webidl.brandCheck(headers, Headers, { strict: false })\n\n const cookie = headers.get('cookie')\n const out = {}\n\n if (!cookie) {\n return out\n }\n\n for (const piece of cookie.split(';')) {\n const [name, ...value] = piece.split('=')\n\n out[name.trim()] = value.join('=')\n }\n\n return out\n}\n\n/**\n * @param {Headers} headers\n * @param {string} name\n * @param {{ path?: string, domain?: string }|undefined} attributes\n * @returns {void}\n */\nfunction deleteCookie (headers, name, attributes) {\n webidl.argumentLengthCheck(arguments, 2, { header: 'deleteCookie' })\n\n webidl.brandCheck(headers, Headers, { strict: false })\n\n name = webidl.converters.DOMString(name)\n attributes = webidl.converters.DeleteCookieAttributes(attributes)\n\n // Matches behavior of\n // https://github.com/denoland/deno_std/blob/63827b16330b82489a04614027c33b7904e08be5/http/cookie.ts#L278\n setCookie(headers, {\n name,\n value: '',\n expires: new Date(0),\n ...attributes\n })\n}\n\n/**\n * @param {Headers} headers\n * @returns {Cookie[]}\n */\nfunction getSetCookies (headers) {\n webidl.argumentLengthCheck(arguments, 1, { header: 'getSetCookies' })\n\n webidl.brandCheck(headers, Headers, { strict: false })\n\n const cookies = headers.getSetCookie()\n\n if (!cookies) {\n return []\n }\n\n return cookies.map((pair) => parseSetCookie(pair))\n}\n\n/**\n * @param {Headers} headers\n * @param {Cookie} cookie\n * @returns {void}\n */\nfunction setCookie (headers, cookie) {\n webidl.argumentLengthCheck(arguments, 2, { header: 'setCookie' })\n\n webidl.brandCheck(headers, Headers, { strict: false })\n\n cookie = webidl.converters.Cookie(cookie)\n\n const str = stringify(cookie)\n\n if (str) {\n headers.append('Set-Cookie', stringify(cookie))\n }\n}\n\nwebidl.converters.DeleteCookieAttributes = webidl.dictionaryConverter([\n {\n converter: webidl.nullableConverter(webidl.converters.DOMString),\n key: 'path',\n defaultValue: null\n },\n {\n converter: webidl.nullableConverter(webidl.converters.DOMString),\n key: 'domain',\n defaultValue: null\n }\n])\n\nwebidl.converters.Cookie = webidl.dictionaryConverter([\n {\n converter: webidl.converters.DOMString,\n key: 'name'\n },\n {\n converter: webidl.converters.DOMString,\n key: 'value'\n },\n {\n converter: webidl.nullableConverter((value) => {\n if (typeof value === 'number') {\n return webidl.converters['unsigned long long'](value)\n }\n\n return new Date(value)\n }),\n key: 'expires',\n defaultValue: null\n },\n {\n converter: webidl.nullableConverter(webidl.converters['long long']),\n key: 'maxAge',\n defaultValue: null\n },\n {\n converter: webidl.nullableConverter(webidl.converters.DOMString),\n key: 'domain',\n defaultValue: null\n },\n {\n converter: webidl.nullableConverter(webidl.converters.DOMString),\n key: 'path',\n defaultValue: null\n },\n {\n converter: webidl.nullableConverter(webidl.converters.boolean),\n key: 'secure',\n defaultValue: null\n },\n {\n converter: webidl.nullableConverter(webidl.converters.boolean),\n key: 'httpOnly',\n defaultValue: null\n },\n {\n converter: webidl.converters.USVString,\n key: 'sameSite',\n allowedValues: ['Strict', 'Lax', 'None']\n },\n {\n converter: webidl.sequenceConverter(webidl.converters.DOMString),\n key: 'unparsed',\n defaultValue: []\n }\n])\n\nmodule.exports = {\n getCookies,\n deleteCookie,\n getSetCookies,\n setCookie\n}\n","'use strict'\n\n// This is a Globally Unique Identifier unique used\n// to validate that the endpoint accepts websocket\n// connections.\n// See https://www.rfc-editor.org/rfc/rfc6455.html#section-1.3\nconst uid = '258EAFA5-E914-47DA-95CA-C5AB0DC85B11'\n\n/** @type {PropertyDescriptor} */\nconst staticPropertyDescriptors = {\n enumerable: true,\n writable: false,\n configurable: false\n}\n\nconst states = {\n CONNECTING: 0,\n OPEN: 1,\n CLOSING: 2,\n CLOSED: 3\n}\n\nconst opcodes = {\n CONTINUATION: 0x0,\n TEXT: 0x1,\n BINARY: 0x2,\n CLOSE: 0x8,\n PING: 0x9,\n PONG: 0xA\n}\n\nconst maxUnsigned16Bit = 2 ** 16 - 1 // 65535\n\nconst parserStates = {\n INFO: 0,\n PAYLOADLENGTH_16: 2,\n PAYLOADLENGTH_64: 3,\n READ_DATA: 4\n}\n\nconst emptyBuffer = Buffer.allocUnsafe(0)\n\nmodule.exports = {\n uid,\n staticPropertyDescriptors,\n states,\n opcodes,\n maxUnsigned16Bit,\n parserStates,\n emptyBuffer\n}\n","'use strict'\n\nmodule.exports = {\n kWebSocketURL: Symbol('url'),\n kReadyState: Symbol('ready state'),\n kController: Symbol('controller'),\n kResponse: Symbol('response'),\n kBinaryType: Symbol('binary type'),\n kSentClose: Symbol('sent close'),\n kReceivedClose: Symbol('received close'),\n kByteParser: Symbol('byte parser')\n}\n","'use strict'\n\nconst { webidl } = require('../fetch/webidl')\nconst { kEnumerableProperty } = require('../core/util')\nconst { MessagePort } = require('worker_threads')\n\n/**\n * @see https://html.spec.whatwg.org/multipage/comms.html#messageevent\n */\nclass MessageEvent extends Event {\n #eventInit\n\n constructor (type, eventInitDict = {}) {\n webidl.argumentLengthCheck(arguments, 1, { header: 'MessageEvent constructor' })\n\n type = webidl.converters.DOMString(type)\n eventInitDict = webidl.converters.MessageEventInit(eventInitDict)\n\n super(type, eventInitDict)\n\n this.#eventInit = eventInitDict\n }\n\n get data () {\n webidl.brandCheck(this, MessageEvent)\n\n return this.#eventInit.data\n }\n\n get origin () {\n webidl.brandCheck(this, MessageEvent)\n\n return this.#eventInit.origin\n }\n\n get lastEventId () {\n webidl.brandCheck(this, MessageEvent)\n\n return this.#eventInit.lastEventId\n }\n\n get source () {\n webidl.brandCheck(this, MessageEvent)\n\n return this.#eventInit.source\n }\n\n get ports () {\n webidl.brandCheck(this, MessageEvent)\n\n if (!Object.isFrozen(this.#eventInit.ports)) {\n Object.freeze(this.#eventInit.ports)\n }\n\n return this.#eventInit.ports\n }\n\n initMessageEvent (\n type,\n bubbles = false,\n cancelable = false,\n data = null,\n origin = '',\n lastEventId = '',\n source = null,\n ports = []\n ) {\n webidl.brandCheck(this, MessageEvent)\n\n webidl.argumentLengthCheck(arguments, 1, { header: 'MessageEvent.initMessageEvent' })\n\n return new MessageEvent(type, {\n bubbles, cancelable, data, origin, lastEventId, source, ports\n })\n }\n}\n\n/**\n * @see https://websockets.spec.whatwg.org/#the-closeevent-interface\n */\nclass CloseEvent extends Event {\n #eventInit\n\n constructor (type, eventInitDict = {}) {\n webidl.argumentLengthCheck(arguments, 1, { header: 'CloseEvent constructor' })\n\n type = webidl.converters.DOMString(type)\n eventInitDict = webidl.converters.CloseEventInit(eventInitDict)\n\n super(type, eventInitDict)\n\n this.#eventInit = eventInitDict\n }\n\n get wasClean () {\n webidl.brandCheck(this, CloseEvent)\n\n return this.#eventInit.wasClean\n }\n\n get code () {\n webidl.brandCheck(this, CloseEvent)\n\n return this.#eventInit.code\n }\n\n get reason () {\n webidl.brandCheck(this, CloseEvent)\n\n return this.#eventInit.reason\n }\n}\n\n// https://html.spec.whatwg.org/multipage/webappapis.html#the-errorevent-interface\nclass ErrorEvent extends Event {\n #eventInit\n\n constructor (type, eventInitDict) {\n webidl.argumentLengthCheck(arguments, 1, { header: 'ErrorEvent constructor' })\n\n super(type, eventInitDict)\n\n type = webidl.converters.DOMString(type)\n eventInitDict = webidl.converters.ErrorEventInit(eventInitDict ?? {})\n\n this.#eventInit = eventInitDict\n }\n\n get message () {\n webidl.brandCheck(this, ErrorEvent)\n\n return this.#eventInit.message\n }\n\n get filename () {\n webidl.brandCheck(this, ErrorEvent)\n\n return this.#eventInit.filename\n }\n\n get lineno () {\n webidl.brandCheck(this, ErrorEvent)\n\n return this.#eventInit.lineno\n }\n\n get colno () {\n webidl.brandCheck(this, ErrorEvent)\n\n return this.#eventInit.colno\n }\n\n get error () {\n webidl.brandCheck(this, ErrorEvent)\n\n return this.#eventInit.error\n }\n}\n\nObject.defineProperties(MessageEvent.prototype, {\n [Symbol.toStringTag]: {\n value: 'MessageEvent',\n configurable: true\n },\n data: kEnumerableProperty,\n origin: kEnumerableProperty,\n lastEventId: kEnumerableProperty,\n source: kEnumerableProperty,\n ports: kEnumerableProperty,\n initMessageEvent: kEnumerableProperty\n})\n\nObject.defineProperties(CloseEvent.prototype, {\n [Symbol.toStringTag]: {\n value: 'CloseEvent',\n configurable: true\n },\n reason: kEnumerableProperty,\n code: kEnumerableProperty,\n wasClean: kEnumerableProperty\n})\n\nObject.defineProperties(ErrorEvent.prototype, {\n [Symbol.toStringTag]: {\n value: 'ErrorEvent',\n configurable: true\n },\n message: kEnumerableProperty,\n filename: kEnumerableProperty,\n lineno: kEnumerableProperty,\n colno: kEnumerableProperty,\n error: kEnumerableProperty\n})\n\nwebidl.converters.MessagePort = webidl.interfaceConverter(MessagePort)\n\nwebidl.converters['sequence'] = webidl.sequenceConverter(\n webidl.converters.MessagePort\n)\n\nconst eventInit = [\n {\n key: 'bubbles',\n converter: webidl.converters.boolean,\n defaultValue: false\n },\n {\n key: 'cancelable',\n converter: webidl.converters.boolean,\n defaultValue: false\n },\n {\n key: 'composed',\n converter: webidl.converters.boolean,\n defaultValue: false\n }\n]\n\nwebidl.converters.MessageEventInit = webidl.dictionaryConverter([\n ...eventInit,\n {\n key: 'data',\n converter: webidl.converters.any,\n defaultValue: null\n },\n {\n key: 'origin',\n converter: webidl.converters.USVString,\n defaultValue: ''\n },\n {\n key: 'lastEventId',\n converter: webidl.converters.DOMString,\n defaultValue: ''\n },\n {\n key: 'source',\n // Node doesn't implement WindowProxy or ServiceWorker, so the only\n // valid value for source is a MessagePort.\n converter: webidl.nullableConverter(webidl.converters.MessagePort),\n defaultValue: null\n },\n {\n key: 'ports',\n converter: webidl.converters['sequence'],\n get defaultValue () {\n return []\n }\n }\n])\n\nwebidl.converters.CloseEventInit = webidl.dictionaryConverter([\n ...eventInit,\n {\n key: 'wasClean',\n converter: webidl.converters.boolean,\n defaultValue: false\n },\n {\n key: 'code',\n converter: webidl.converters['unsigned short'],\n defaultValue: 0\n },\n {\n key: 'reason',\n converter: webidl.converters.USVString,\n defaultValue: ''\n }\n])\n\nwebidl.converters.ErrorEventInit = webidl.dictionaryConverter([\n ...eventInit,\n {\n key: 'message',\n converter: webidl.converters.DOMString,\n defaultValue: ''\n },\n {\n key: 'filename',\n converter: webidl.converters.USVString,\n defaultValue: ''\n },\n {\n key: 'lineno',\n converter: webidl.converters['unsigned long'],\n defaultValue: 0\n },\n {\n key: 'colno',\n converter: webidl.converters['unsigned long'],\n defaultValue: 0\n },\n {\n key: 'error',\n converter: webidl.converters.any\n }\n])\n\nmodule.exports = {\n MessageEvent,\n CloseEvent,\n ErrorEvent\n}\n","'use strict'\n\nconst { kReadyState, kController, kResponse, kBinaryType, kWebSocketURL } = require('./symbols')\nconst { states, opcodes } = require('./constants')\nconst { MessageEvent, ErrorEvent } = require('./events')\n\n/* globals Blob */\n\n/**\n * @param {import('./websocket').WebSocket} ws\n */\nfunction isEstablished (ws) {\n // If the server's response is validated as provided for above, it is\n // said that _The WebSocket Connection is Established_ and that the\n // WebSocket Connection is in the OPEN state.\n return ws[kReadyState] === states.OPEN\n}\n\n/**\n * @param {import('./websocket').WebSocket} ws\n */\nfunction isClosing (ws) {\n // Upon either sending or receiving a Close control frame, it is said\n // that _The WebSocket Closing Handshake is Started_ and that the\n // WebSocket connection is in the CLOSING state.\n return ws[kReadyState] === states.CLOSING\n}\n\n/**\n * @param {import('./websocket').WebSocket} ws\n */\nfunction isClosed (ws) {\n return ws[kReadyState] === states.CLOSED\n}\n\n/**\n * @see https://dom.spec.whatwg.org/#concept-event-fire\n * @param {string} e\n * @param {EventTarget} target\n * @param {EventInit | undefined} eventInitDict\n */\nfunction fireEvent (e, target, eventConstructor = Event, eventInitDict) {\n // 1. If eventConstructor is not given, then let eventConstructor be Event.\n\n // 2. Let event be the result of creating an event given eventConstructor,\n // in the relevant realm of target.\n // 3. Initialize event’s type attribute to e.\n const event = new eventConstructor(e, eventInitDict) // eslint-disable-line new-cap\n\n // 4. Initialize any other IDL attributes of event as described in the\n // invocation of this algorithm.\n\n // 5. Return the result of dispatching event at target, with legacy target\n // override flag set if set.\n target.dispatchEvent(event)\n}\n\n/**\n * @see https://websockets.spec.whatwg.org/#feedback-from-the-protocol\n * @param {import('./websocket').WebSocket} ws\n * @param {number} type Opcode\n * @param {Buffer} data application data\n */\nfunction websocketMessageReceived (ws, type, data) {\n // 1. If ready state is not OPEN (1), then return.\n if (ws[kReadyState] !== states.OPEN) {\n return\n }\n\n // 2. Let dataForEvent be determined by switching on type and binary type:\n let dataForEvent\n\n if (type === opcodes.TEXT) {\n // -> type indicates that the data is Text\n // a new DOMString containing data\n try {\n dataForEvent = new TextDecoder('utf-8', { fatal: true }).decode(data)\n } catch {\n failWebsocketConnection(ws, 'Received invalid UTF-8 in text frame.')\n return\n }\n } else if (type === opcodes.BINARY) {\n if (ws[kBinaryType] === 'blob') {\n // -> type indicates that the data is Binary and binary type is \"blob\"\n // a new Blob object, created in the relevant Realm of the WebSocket\n // object, that represents data as its raw data\n dataForEvent = new Blob([data])\n } else {\n // -> type indicates that the data is Binary and binary type is \"arraybuffer\"\n // a new ArrayBuffer object, created in the relevant Realm of the\n // WebSocket object, whose contents are data\n dataForEvent = new Uint8Array(data).buffer\n }\n }\n\n // 3. Fire an event named message at the WebSocket object, using MessageEvent,\n // with the origin attribute initialized to the serialization of the WebSocket\n // object’s url's origin, and the data attribute initialized to dataForEvent.\n fireEvent('message', ws, MessageEvent, {\n origin: ws[kWebSocketURL].origin,\n data: dataForEvent\n })\n}\n\n/**\n * @see https://datatracker.ietf.org/doc/html/rfc6455\n * @see https://datatracker.ietf.org/doc/html/rfc2616\n * @see https://bugs.chromium.org/p/chromium/issues/detail?id=398407\n * @param {string} protocol\n */\nfunction isValidSubprotocol (protocol) {\n // If present, this value indicates one\n // or more comma-separated subprotocol the client wishes to speak,\n // ordered by preference. The elements that comprise this value\n // MUST be non-empty strings with characters in the range U+0021 to\n // U+007E not including separator characters as defined in\n // [RFC2616] and MUST all be unique strings.\n if (protocol.length === 0) {\n return false\n }\n\n for (const char of protocol) {\n const code = char.charCodeAt(0)\n\n if (\n code < 0x21 ||\n code > 0x7E ||\n char === '(' ||\n char === ')' ||\n char === '<' ||\n char === '>' ||\n char === '@' ||\n char === ',' ||\n char === ';' ||\n char === ':' ||\n char === '\\\\' ||\n char === '\"' ||\n char === '/' ||\n char === '[' ||\n char === ']' ||\n char === '?' ||\n char === '=' ||\n char === '{' ||\n char === '}' ||\n code === 32 || // SP\n code === 9 // HT\n ) {\n return false\n }\n }\n\n return true\n}\n\n/**\n * @see https://datatracker.ietf.org/doc/html/rfc6455#section-7-4\n * @param {number} code\n */\nfunction isValidStatusCode (code) {\n if (code >= 1000 && code < 1015) {\n return (\n code !== 1004 && // reserved\n code !== 1005 && // \"MUST NOT be set as a status code\"\n code !== 1006 // \"MUST NOT be set as a status code\"\n )\n }\n\n return code >= 3000 && code <= 4999\n}\n\n/**\n * @param {import('./websocket').WebSocket} ws\n * @param {string|undefined} reason\n */\nfunction failWebsocketConnection (ws, reason) {\n const { [kController]: controller, [kResponse]: response } = ws\n\n controller.abort()\n\n if (response?.socket && !response.socket.destroyed) {\n response.socket.destroy()\n }\n\n if (reason) {\n fireEvent('error', ws, ErrorEvent, {\n error: new Error(reason)\n })\n }\n}\n\nmodule.exports = {\n isEstablished,\n isClosing,\n isClosed,\n fireEvent,\n isValidSubprotocol,\n isValidStatusCode,\n failWebsocketConnection,\n websocketMessageReceived\n}\n","'use strict'\n\nconst diagnosticsChannel = require('diagnostics_channel')\nconst { uid, states } = require('./constants')\nconst {\n kReadyState,\n kSentClose,\n kByteParser,\n kReceivedClose\n} = require('./symbols')\nconst { fireEvent, failWebsocketConnection } = require('./util')\nconst { CloseEvent } = require('./events')\nconst { makeRequest } = require('../fetch/request')\nconst { fetching } = require('../fetch/index')\nconst { Headers } = require('../fetch/headers')\nconst { getGlobalDispatcher } = require('../global')\nconst { kHeadersList } = require('../core/symbols')\n\nconst channels = {}\nchannels.open = diagnosticsChannel.channel('undici:websocket:open')\nchannels.close = diagnosticsChannel.channel('undici:websocket:close')\nchannels.socketError = diagnosticsChannel.channel('undici:websocket:socket_error')\n\n/** @type {import('crypto')} */\nlet crypto\ntry {\n crypto = require('crypto')\n} catch {\n\n}\n\n/**\n * @see https://websockets.spec.whatwg.org/#concept-websocket-establish\n * @param {URL} url\n * @param {string|string[]} protocols\n * @param {import('./websocket').WebSocket} ws\n * @param {(response: any) => void} onEstablish\n * @param {Partial} options\n */\nfunction establishWebSocketConnection (url, protocols, ws, onEstablish, options) {\n // 1. Let requestURL be a copy of url, with its scheme set to \"http\", if url’s\n // scheme is \"ws\", and to \"https\" otherwise.\n const requestURL = url\n\n requestURL.protocol = url.protocol === 'ws:' ? 'http:' : 'https:'\n\n // 2. Let request be a new request, whose URL is requestURL, client is client,\n // service-workers mode is \"none\", referrer is \"no-referrer\", mode is\n // \"websocket\", credentials mode is \"include\", cache mode is \"no-store\" ,\n // and redirect mode is \"error\".\n const request = makeRequest({\n urlList: [requestURL],\n serviceWorkers: 'none',\n referrer: 'no-referrer',\n mode: 'websocket',\n credentials: 'include',\n cache: 'no-store',\n redirect: 'error'\n })\n\n // Note: undici extension, allow setting custom headers.\n if (options.headers) {\n const headersList = new Headers(options.headers)[kHeadersList]\n\n request.headersList = headersList\n }\n\n // 3. Append (`Upgrade`, `websocket`) to request’s header list.\n // 4. Append (`Connection`, `Upgrade`) to request’s header list.\n // Note: both of these are handled by undici currently.\n // https://github.com/nodejs/undici/blob/68c269c4144c446f3f1220951338daef4a6b5ec4/lib/client.js#L1397\n\n // 5. Let keyValue be a nonce consisting of a randomly selected\n // 16-byte value that has been forgiving-base64-encoded and\n // isomorphic encoded.\n const keyValue = crypto.randomBytes(16).toString('base64')\n\n // 6. Append (`Sec-WebSocket-Key`, keyValue) to request’s\n // header list.\n request.headersList.append('sec-websocket-key', keyValue)\n\n // 7. Append (`Sec-WebSocket-Version`, `13`) to request’s\n // header list.\n request.headersList.append('sec-websocket-version', '13')\n\n // 8. For each protocol in protocols, combine\n // (`Sec-WebSocket-Protocol`, protocol) in request’s header\n // list.\n for (const protocol of protocols) {\n request.headersList.append('sec-websocket-protocol', protocol)\n }\n\n // 9. Let permessageDeflate be a user-agent defined\n // \"permessage-deflate\" extension header value.\n // https://github.com/mozilla/gecko-dev/blob/ce78234f5e653a5d3916813ff990f053510227bc/netwerk/protocol/websocket/WebSocketChannel.cpp#L2673\n // TODO: enable once permessage-deflate is supported\n const permessageDeflate = '' // 'permessage-deflate; 15'\n\n // 10. Append (`Sec-WebSocket-Extensions`, permessageDeflate) to\n // request’s header list.\n // request.headersList.append('sec-websocket-extensions', permessageDeflate)\n\n // 11. Fetch request with useParallelQueue set to true, and\n // processResponse given response being these steps:\n const controller = fetching({\n request,\n useParallelQueue: true,\n dispatcher: options.dispatcher ?? getGlobalDispatcher(),\n processResponse (response) {\n // 1. If response is a network error or its status is not 101,\n // fail the WebSocket connection.\n if (response.type === 'error' || response.status !== 101) {\n failWebsocketConnection(ws, 'Received network error or non-101 status code.')\n return\n }\n\n // 2. If protocols is not the empty list and extracting header\n // list values given `Sec-WebSocket-Protocol` and response’s\n // header list results in null, failure, or the empty byte\n // sequence, then fail the WebSocket connection.\n if (protocols.length !== 0 && !response.headersList.get('Sec-WebSocket-Protocol')) {\n failWebsocketConnection(ws, 'Server did not respond with sent protocols.')\n return\n }\n\n // 3. Follow the requirements stated step 2 to step 6, inclusive,\n // of the last set of steps in section 4.1 of The WebSocket\n // Protocol to validate response. This either results in fail\n // the WebSocket connection or the WebSocket connection is\n // established.\n\n // 2. If the response lacks an |Upgrade| header field or the |Upgrade|\n // header field contains a value that is not an ASCII case-\n // insensitive match for the value \"websocket\", the client MUST\n // _Fail the WebSocket Connection_.\n if (response.headersList.get('Upgrade')?.toLowerCase() !== 'websocket') {\n failWebsocketConnection(ws, 'Server did not set Upgrade header to \"websocket\".')\n return\n }\n\n // 3. If the response lacks a |Connection| header field or the\n // |Connection| header field doesn't contain a token that is an\n // ASCII case-insensitive match for the value \"Upgrade\", the client\n // MUST _Fail the WebSocket Connection_.\n if (response.headersList.get('Connection')?.toLowerCase() !== 'upgrade') {\n failWebsocketConnection(ws, 'Server did not set Connection header to \"upgrade\".')\n return\n }\n\n // 4. If the response lacks a |Sec-WebSocket-Accept| header field or\n // the |Sec-WebSocket-Accept| contains a value other than the\n // base64-encoded SHA-1 of the concatenation of the |Sec-WebSocket-\n // Key| (as a string, not base64-decoded) with the string \"258EAFA5-\n // E914-47DA-95CA-C5AB0DC85B11\" but ignoring any leading and\n // trailing whitespace, the client MUST _Fail the WebSocket\n // Connection_.\n const secWSAccept = response.headersList.get('Sec-WebSocket-Accept')\n const digest = crypto.createHash('sha1').update(keyValue + uid).digest('base64')\n if (secWSAccept !== digest) {\n failWebsocketConnection(ws, 'Incorrect hash received in Sec-WebSocket-Accept header.')\n return\n }\n\n // 5. If the response includes a |Sec-WebSocket-Extensions| header\n // field and this header field indicates the use of an extension\n // that was not present in the client's handshake (the server has\n // indicated an extension not requested by the client), the client\n // MUST _Fail the WebSocket Connection_. (The parsing of this\n // header field to determine which extensions are requested is\n // discussed in Section 9.1.)\n const secExtension = response.headersList.get('Sec-WebSocket-Extensions')\n\n if (secExtension !== null && secExtension !== permessageDeflate) {\n failWebsocketConnection(ws, 'Received different permessage-deflate than the one set.')\n return\n }\n\n // 6. If the response includes a |Sec-WebSocket-Protocol| header field\n // and this header field indicates the use of a subprotocol that was\n // not present in the client's handshake (the server has indicated a\n // subprotocol not requested by the client), the client MUST _Fail\n // the WebSocket Connection_.\n const secProtocol = response.headersList.get('Sec-WebSocket-Protocol')\n\n if (secProtocol !== null && secProtocol !== request.headersList.get('Sec-WebSocket-Protocol')) {\n failWebsocketConnection(ws, 'Protocol was not set in the opening handshake.')\n return\n }\n\n response.socket.on('data', onSocketData)\n response.socket.on('close', onSocketClose)\n response.socket.on('error', onSocketError)\n\n if (channels.open.hasSubscribers) {\n channels.open.publish({\n address: response.socket.address(),\n protocol: secProtocol,\n extensions: secExtension\n })\n }\n\n onEstablish(response)\n }\n })\n\n return controller\n}\n\n/**\n * @param {Buffer} chunk\n */\nfunction onSocketData (chunk) {\n if (!this.ws[kByteParser].write(chunk)) {\n this.pause()\n }\n}\n\n/**\n * @see https://websockets.spec.whatwg.org/#feedback-from-the-protocol\n * @see https://datatracker.ietf.org/doc/html/rfc6455#section-7.1.4\n */\nfunction onSocketClose () {\n const { ws } = this\n\n // If the TCP connection was closed after the\n // WebSocket closing handshake was completed, the WebSocket connection\n // is said to have been closed _cleanly_.\n const wasClean = ws[kSentClose] && ws[kReceivedClose]\n\n let code = 1005\n let reason = ''\n\n const result = ws[kByteParser].closingInfo\n\n if (result) {\n code = result.code ?? 1005\n reason = result.reason\n } else if (!ws[kSentClose]) {\n // If _The WebSocket\n // Connection is Closed_ and no Close control frame was received by the\n // endpoint (such as could occur if the underlying transport connection\n // is lost), _The WebSocket Connection Close Code_ is considered to be\n // 1006.\n code = 1006\n }\n\n // 1. Change the ready state to CLOSED (3).\n ws[kReadyState] = states.CLOSED\n\n // 2. If the user agent was required to fail the WebSocket\n // connection, or if the WebSocket connection was closed\n // after being flagged as full, fire an event named error\n // at the WebSocket object.\n // TODO\n\n // 3. Fire an event named close at the WebSocket object,\n // using CloseEvent, with the wasClean attribute\n // initialized to true if the connection closed cleanly\n // and false otherwise, the code attribute initialized to\n // the WebSocket connection close code, and the reason\n // attribute initialized to the result of applying UTF-8\n // decode without BOM to the WebSocket connection close\n // reason.\n fireEvent('close', ws, CloseEvent, {\n wasClean, code, reason\n })\n\n if (channels.close.hasSubscribers) {\n channels.close.publish({\n websocket: ws,\n code,\n reason\n })\n }\n}\n\nfunction onSocketError (error) {\n const { ws } = this\n\n ws[kReadyState] = states.CLOSING\n\n if (channels.socketError.hasSubscribers) {\n channels.socketError.publish(error)\n }\n\n this.destroy()\n}\n\nmodule.exports = {\n establishWebSocketConnection\n}\n","'use strict'\n\nconst { maxUnsigned16Bit } = require('./constants')\n\n/** @type {import('crypto')} */\nlet crypto\ntry {\n crypto = require('crypto')\n} catch {\n\n}\n\nclass WebsocketFrameSend {\n /**\n * @param {Buffer|undefined} data\n */\n constructor (data) {\n this.frameData = data\n this.maskKey = crypto.randomBytes(4)\n }\n\n createFrame (opcode) {\n const bodyLength = this.frameData?.byteLength ?? 0\n\n /** @type {number} */\n let payloadLength = bodyLength // 0-125\n let offset = 6\n\n if (bodyLength > maxUnsigned16Bit) {\n offset += 8 // payload length is next 8 bytes\n payloadLength = 127\n } else if (bodyLength > 125) {\n offset += 2 // payload length is next 2 bytes\n payloadLength = 126\n }\n\n const buffer = Buffer.allocUnsafe(bodyLength + offset)\n\n // Clear first 2 bytes, everything else is overwritten\n buffer[0] = buffer[1] = 0\n buffer[0] |= 0x80 // FIN\n buffer[0] = (buffer[0] & 0xF0) + opcode // opcode\n\n /*! ws. MIT License. Einar Otto Stangvik */\n buffer[offset - 4] = this.maskKey[0]\n buffer[offset - 3] = this.maskKey[1]\n buffer[offset - 2] = this.maskKey[2]\n buffer[offset - 1] = this.maskKey[3]\n\n buffer[1] = payloadLength\n\n if (payloadLength === 126) {\n buffer.writeUInt16BE(bodyLength, 2)\n } else if (payloadLength === 127) {\n // Clear extended payload length\n buffer[2] = buffer[3] = 0\n buffer.writeUIntBE(bodyLength, 4, 6)\n }\n\n buffer[1] |= 0x80 // MASK\n\n // mask body\n for (let i = 0; i < bodyLength; i++) {\n buffer[offset + i] = this.frameData[i] ^ this.maskKey[i % 4]\n }\n\n return buffer\n }\n}\n\nmodule.exports = {\n WebsocketFrameSend\n}\n","'use strict'\n\nconst { Writable } = require('stream')\nconst diagnosticsChannel = require('diagnostics_channel')\nconst { parserStates, opcodes, states, emptyBuffer } = require('./constants')\nconst { kReadyState, kSentClose, kResponse, kReceivedClose } = require('./symbols')\nconst { isValidStatusCode, failWebsocketConnection, websocketMessageReceived } = require('./util')\nconst { WebsocketFrameSend } = require('./frame')\n\n// This code was influenced by ws released under the MIT license.\n// Copyright (c) 2011 Einar Otto Stangvik \n// Copyright (c) 2013 Arnout Kazemier and contributors\n// Copyright (c) 2016 Luigi Pinca and contributors\n\nconst channels = {}\nchannels.ping = diagnosticsChannel.channel('undici:websocket:ping')\nchannels.pong = diagnosticsChannel.channel('undici:websocket:pong')\n\nclass ByteParser extends Writable {\n #buffers = []\n #byteOffset = 0\n\n #state = parserStates.INFO\n\n #info = {}\n #fragments = []\n\n constructor (ws) {\n super()\n\n this.ws = ws\n }\n\n /**\n * @param {Buffer} chunk\n * @param {() => void} callback\n */\n _write (chunk, _, callback) {\n this.#buffers.push(chunk)\n this.#byteOffset += chunk.length\n\n this.run(callback)\n }\n\n /**\n * Runs whenever a new chunk is received.\n * Callback is called whenever there are no more chunks buffering,\n * or not enough bytes are buffered to parse.\n */\n run (callback) {\n while (true) {\n if (this.#state === parserStates.INFO) {\n // If there aren't enough bytes to parse the payload length, etc.\n if (this.#byteOffset < 2) {\n return callback()\n }\n\n const buffer = this.consume(2)\n\n this.#info.fin = (buffer[0] & 0x80) !== 0\n this.#info.opcode = buffer[0] & 0x0F\n\n // If we receive a fragmented message, we use the type of the first\n // frame to parse the full message as binary/text, when it's terminated\n this.#info.originalOpcode ??= this.#info.opcode\n\n this.#info.fragmented = !this.#info.fin && this.#info.opcode !== opcodes.CONTINUATION\n\n if (this.#info.fragmented && this.#info.opcode !== opcodes.BINARY && this.#info.opcode !== opcodes.TEXT) {\n // Only text and binary frames can be fragmented\n failWebsocketConnection(this.ws, 'Invalid frame type was fragmented.')\n return\n }\n\n const payloadLength = buffer[1] & 0x7F\n\n if (payloadLength <= 125) {\n this.#info.payloadLength = payloadLength\n this.#state = parserStates.READ_DATA\n } else if (payloadLength === 126) {\n this.#state = parserStates.PAYLOADLENGTH_16\n } else if (payloadLength === 127) {\n this.#state = parserStates.PAYLOADLENGTH_64\n }\n\n if (this.#info.fragmented && payloadLength > 125) {\n // A fragmented frame can't be fragmented itself\n failWebsocketConnection(this.ws, 'Fragmented frame exceeded 125 bytes.')\n return\n } else if (\n (this.#info.opcode === opcodes.PING ||\n this.#info.opcode === opcodes.PONG ||\n this.#info.opcode === opcodes.CLOSE) &&\n payloadLength > 125\n ) {\n // Control frames can have a payload length of 125 bytes MAX\n failWebsocketConnection(this.ws, 'Payload length for control frame exceeded 125 bytes.')\n return\n } else if (this.#info.opcode === opcodes.CLOSE) {\n if (payloadLength === 1) {\n failWebsocketConnection(this.ws, 'Received close frame with a 1-byte body.')\n return\n }\n\n const body = this.consume(payloadLength)\n\n this.#info.closeInfo = this.parseCloseBody(false, body)\n\n if (!this.ws[kSentClose]) {\n // If an endpoint receives a Close frame and did not previously send a\n // Close frame, the endpoint MUST send a Close frame in response. (When\n // sending a Close frame in response, the endpoint typically echos the\n // status code it received.)\n const body = Buffer.allocUnsafe(2)\n body.writeUInt16BE(this.#info.closeInfo.code, 0)\n const closeFrame = new WebsocketFrameSend(body)\n\n this.ws[kResponse].socket.write(\n closeFrame.createFrame(opcodes.CLOSE),\n (err) => {\n if (!err) {\n this.ws[kSentClose] = true\n }\n }\n )\n }\n\n // Upon either sending or receiving a Close control frame, it is said\n // that _The WebSocket Closing Handshake is Started_ and that the\n // WebSocket connection is in the CLOSING state.\n this.ws[kReadyState] = states.CLOSING\n this.ws[kReceivedClose] = true\n\n this.end()\n\n return\n } else if (this.#info.opcode === opcodes.PING) {\n // Upon receipt of a Ping frame, an endpoint MUST send a Pong frame in\n // response, unless it already received a Close frame.\n // A Pong frame sent in response to a Ping frame must have identical\n // \"Application data\"\n\n const body = this.consume(payloadLength)\n\n if (!this.ws[kReceivedClose]) {\n const frame = new WebsocketFrameSend(body)\n\n this.ws[kResponse].socket.write(frame.createFrame(opcodes.PONG))\n\n if (channels.ping.hasSubscribers) {\n channels.ping.publish({\n payload: body\n })\n }\n }\n\n this.#state = parserStates.INFO\n\n if (this.#byteOffset > 0) {\n continue\n } else {\n callback()\n return\n }\n } else if (this.#info.opcode === opcodes.PONG) {\n // A Pong frame MAY be sent unsolicited. This serves as a\n // unidirectional heartbeat. A response to an unsolicited Pong frame is\n // not expected.\n\n const body = this.consume(payloadLength)\n\n if (channels.pong.hasSubscribers) {\n channels.pong.publish({\n payload: body\n })\n }\n\n if (this.#byteOffset > 0) {\n continue\n } else {\n callback()\n return\n }\n }\n } else if (this.#state === parserStates.PAYLOADLENGTH_16) {\n if (this.#byteOffset < 2) {\n return callback()\n }\n\n const buffer = this.consume(2)\n\n this.#info.payloadLength = buffer.readUInt16BE(0)\n this.#state = parserStates.READ_DATA\n } else if (this.#state === parserStates.PAYLOADLENGTH_64) {\n if (this.#byteOffset < 8) {\n return callback()\n }\n\n const buffer = this.consume(8)\n const upper = buffer.readUInt32BE(0)\n\n // 2^31 is the maxinimum bytes an arraybuffer can contain\n // on 32-bit systems. Although, on 64-bit systems, this is\n // 2^53-1 bytes.\n // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Errors/Invalid_array_length\n // https://source.chromium.org/chromium/chromium/src/+/main:v8/src/common/globals.h;drc=1946212ac0100668f14eb9e2843bdd846e510a1e;bpv=1;bpt=1;l=1275\n // https://source.chromium.org/chromium/chromium/src/+/main:v8/src/objects/js-array-buffer.h;l=34;drc=1946212ac0100668f14eb9e2843bdd846e510a1e\n if (upper > 2 ** 31 - 1) {\n failWebsocketConnection(this.ws, 'Received payload length > 2^31 bytes.')\n return\n }\n\n const lower = buffer.readUInt32BE(4)\n\n this.#info.payloadLength = (upper << 8) + lower\n this.#state = parserStates.READ_DATA\n } else if (this.#state === parserStates.READ_DATA) {\n if (this.#byteOffset < this.#info.payloadLength) {\n // If there is still more data in this chunk that needs to be read\n return callback()\n } else if (this.#byteOffset >= this.#info.payloadLength) {\n // If the server sent multiple frames in a single chunk\n\n const body = this.consume(this.#info.payloadLength)\n\n this.#fragments.push(body)\n\n // If the frame is unfragmented, or a fragmented frame was terminated,\n // a message was received\n if (!this.#info.fragmented || (this.#info.fin && this.#info.opcode === opcodes.CONTINUATION)) {\n const fullMessage = Buffer.concat(this.#fragments)\n\n websocketMessageReceived(this.ws, this.#info.originalOpcode, fullMessage)\n\n this.#info = {}\n this.#fragments.length = 0\n }\n\n this.#state = parserStates.INFO\n }\n }\n\n if (this.#byteOffset > 0) {\n continue\n } else {\n callback()\n break\n }\n }\n }\n\n /**\n * Take n bytes from the buffered Buffers\n * @param {number} n\n * @returns {Buffer|null}\n */\n consume (n) {\n if (n > this.#byteOffset) {\n return null\n } else if (n === 0) {\n return emptyBuffer\n }\n\n if (this.#buffers[0].length === n) {\n this.#byteOffset -= this.#buffers[0].length\n return this.#buffers.shift()\n }\n\n const buffer = Buffer.allocUnsafe(n)\n let offset = 0\n\n while (offset !== n) {\n const next = this.#buffers[0]\n const { length } = next\n\n if (length + offset === n) {\n buffer.set(this.#buffers.shift(), offset)\n break\n } else if (length + offset > n) {\n buffer.set(next.subarray(0, n - offset), offset)\n this.#buffers[0] = next.subarray(n - offset)\n break\n } else {\n buffer.set(this.#buffers.shift(), offset)\n offset += next.length\n }\n }\n\n this.#byteOffset -= n\n\n return buffer\n }\n\n parseCloseBody (onlyCode, data) {\n // https://datatracker.ietf.org/doc/html/rfc6455#section-7.1.5\n /** @type {number|undefined} */\n let code\n\n if (data.length >= 2) {\n // _The WebSocket Connection Close Code_ is\n // defined as the status code (Section 7.4) contained in the first Close\n // control frame received by the application\n code = data.readUInt16BE(0)\n }\n\n if (onlyCode) {\n if (!isValidStatusCode(code)) {\n return null\n }\n\n return { code }\n }\n\n // https://datatracker.ietf.org/doc/html/rfc6455#section-7.1.6\n /** @type {Buffer} */\n let reason = data.subarray(2)\n\n // Remove BOM\n if (reason[0] === 0xEF && reason[1] === 0xBB && reason[2] === 0xBF) {\n reason = reason.subarray(3)\n }\n\n if (code !== undefined && !isValidStatusCode(code)) {\n return null\n }\n\n try {\n // TODO: optimize this\n reason = new TextDecoder('utf-8', { fatal: true }).decode(reason)\n } catch {\n return null\n }\n\n return { code, reason }\n }\n\n get closingInfo () {\n return this.#info.closeInfo\n }\n}\n\nmodule.exports = {\n ByteParser\n}\n","'use strict'\n\nconst { webidl } = require('../fetch/webidl')\nconst { DOMException } = require('../fetch/constants')\nconst { URLSerializer } = require('../fetch/dataURL')\nconst { getGlobalOrigin } = require('../fetch/global')\nconst { staticPropertyDescriptors, states, opcodes, emptyBuffer } = require('./constants')\nconst {\n kWebSocketURL,\n kReadyState,\n kController,\n kBinaryType,\n kResponse,\n kSentClose,\n kByteParser\n} = require('./symbols')\nconst { isEstablished, isClosing, isValidSubprotocol, failWebsocketConnection, fireEvent } = require('./util')\nconst { establishWebSocketConnection } = require('./connection')\nconst { WebsocketFrameSend } = require('./frame')\nconst { ByteParser } = require('./receiver')\nconst { kEnumerableProperty, isBlobLike } = require('../core/util')\nconst { getGlobalDispatcher } = require('../global')\nconst { types } = require('util')\n\nlet experimentalWarned = false\n\n// https://websockets.spec.whatwg.org/#interface-definition\nclass WebSocket extends EventTarget {\n #events = {\n open: null,\n error: null,\n close: null,\n message: null\n }\n\n #bufferedAmount = 0\n #protocol = ''\n #extensions = ''\n\n /**\n * @param {string} url\n * @param {string|string[]} protocols\n */\n constructor (url, protocols = []) {\n super()\n\n webidl.argumentLengthCheck(arguments, 1, { header: 'WebSocket constructor' })\n\n if (!experimentalWarned) {\n experimentalWarned = true\n process.emitWarning('WebSockets are experimental, expect them to change at any time.', {\n code: 'UNDICI-WS'\n })\n }\n\n const options = webidl.converters['DOMString or sequence or WebSocketInit'](protocols)\n\n url = webidl.converters.USVString(url)\n protocols = options.protocols\n\n // 1. Let baseURL be this's relevant settings object's API base URL.\n const baseURL = getGlobalOrigin()\n\n // 1. Let urlRecord be the result of applying the URL parser to url with baseURL.\n let urlRecord\n\n try {\n urlRecord = new URL(url, baseURL)\n } catch (e) {\n // 3. If urlRecord is failure, then throw a \"SyntaxError\" DOMException.\n throw new DOMException(e, 'SyntaxError')\n }\n\n // 4. If urlRecord’s scheme is \"http\", then set urlRecord’s scheme to \"ws\".\n if (urlRecord.protocol === 'http:') {\n urlRecord.protocol = 'ws:'\n } else if (urlRecord.protocol === 'https:') {\n // 5. Otherwise, if urlRecord’s scheme is \"https\", set urlRecord’s scheme to \"wss\".\n urlRecord.protocol = 'wss:'\n }\n\n // 6. If urlRecord’s scheme is not \"ws\" or \"wss\", then throw a \"SyntaxError\" DOMException.\n if (urlRecord.protocol !== 'ws:' && urlRecord.protocol !== 'wss:') {\n throw new DOMException(\n `Expected a ws: or wss: protocol, got ${urlRecord.protocol}`,\n 'SyntaxError'\n )\n }\n\n // 7. If urlRecord’s fragment is non-null, then throw a \"SyntaxError\"\n // DOMException.\n if (urlRecord.hash || urlRecord.href.endsWith('#')) {\n throw new DOMException('Got fragment', 'SyntaxError')\n }\n\n // 8. If protocols is a string, set protocols to a sequence consisting\n // of just that string.\n if (typeof protocols === 'string') {\n protocols = [protocols]\n }\n\n // 9. If any of the values in protocols occur more than once or otherwise\n // fail to match the requirements for elements that comprise the value\n // of `Sec-WebSocket-Protocol` fields as defined by The WebSocket\n // protocol, then throw a \"SyntaxError\" DOMException.\n if (protocols.length !== new Set(protocols.map(p => p.toLowerCase())).size) {\n throw new DOMException('Invalid Sec-WebSocket-Protocol value', 'SyntaxError')\n }\n\n if (protocols.length > 0 && !protocols.every(p => isValidSubprotocol(p))) {\n throw new DOMException('Invalid Sec-WebSocket-Protocol value', 'SyntaxError')\n }\n\n // 10. Set this's url to urlRecord.\n this[kWebSocketURL] = new URL(urlRecord.href)\n\n // 11. Let client be this's relevant settings object.\n\n // 12. Run this step in parallel:\n\n // 1. Establish a WebSocket connection given urlRecord, protocols,\n // and client.\n this[kController] = establishWebSocketConnection(\n urlRecord,\n protocols,\n this,\n (response) => this.#onConnectionEstablished(response),\n options\n )\n\n // Each WebSocket object has an associated ready state, which is a\n // number representing the state of the connection. Initially it must\n // be CONNECTING (0).\n this[kReadyState] = WebSocket.CONNECTING\n\n // The extensions attribute must initially return the empty string.\n\n // The protocol attribute must initially return the empty string.\n\n // Each WebSocket object has an associated binary type, which is a\n // BinaryType. Initially it must be \"blob\".\n this[kBinaryType] = 'blob'\n }\n\n /**\n * @see https://websockets.spec.whatwg.org/#dom-websocket-close\n * @param {number|undefined} code\n * @param {string|undefined} reason\n */\n close (code = undefined, reason = undefined) {\n webidl.brandCheck(this, WebSocket)\n\n if (code !== undefined) {\n code = webidl.converters['unsigned short'](code, { clamp: true })\n }\n\n if (reason !== undefined) {\n reason = webidl.converters.USVString(reason)\n }\n\n // 1. If code is present, but is neither an integer equal to 1000 nor an\n // integer in the range 3000 to 4999, inclusive, throw an\n // \"InvalidAccessError\" DOMException.\n if (code !== undefined) {\n if (code !== 1000 && (code < 3000 || code > 4999)) {\n throw new DOMException('invalid code', 'InvalidAccessError')\n }\n }\n\n let reasonByteLength = 0\n\n // 2. If reason is present, then run these substeps:\n if (reason !== undefined) {\n // 1. Let reasonBytes be the result of encoding reason.\n // 2. If reasonBytes is longer than 123 bytes, then throw a\n // \"SyntaxError\" DOMException.\n reasonByteLength = Buffer.byteLength(reason)\n\n if (reasonByteLength > 123) {\n throw new DOMException(\n `Reason must be less than 123 bytes; received ${reasonByteLength}`,\n 'SyntaxError'\n )\n }\n }\n\n // 3. Run the first matching steps from the following list:\n if (this[kReadyState] === WebSocket.CLOSING || this[kReadyState] === WebSocket.CLOSED) {\n // If this's ready state is CLOSING (2) or CLOSED (3)\n // Do nothing.\n } else if (!isEstablished(this)) {\n // If the WebSocket connection is not yet established\n // Fail the WebSocket connection and set this's ready state\n // to CLOSING (2).\n failWebsocketConnection(this, 'Connection was closed before it was established.')\n this[kReadyState] = WebSocket.CLOSING\n } else if (!isClosing(this)) {\n // If the WebSocket closing handshake has not yet been started\n // Start the WebSocket closing handshake and set this's ready\n // state to CLOSING (2).\n // - If neither code nor reason is present, the WebSocket Close\n // message must not have a body.\n // - If code is present, then the status code to use in the\n // WebSocket Close message must be the integer given by code.\n // - If reason is also present, then reasonBytes must be\n // provided in the Close message after the status code.\n\n const frame = new WebsocketFrameSend()\n\n // If neither code nor reason is present, the WebSocket Close\n // message must not have a body.\n\n // If code is present, then the status code to use in the\n // WebSocket Close message must be the integer given by code.\n if (code !== undefined && reason === undefined) {\n frame.frameData = Buffer.allocUnsafe(2)\n frame.frameData.writeUInt16BE(code, 0)\n } else if (code !== undefined && reason !== undefined) {\n // If reason is also present, then reasonBytes must be\n // provided in the Close message after the status code.\n frame.frameData = Buffer.allocUnsafe(2 + reasonByteLength)\n frame.frameData.writeUInt16BE(code, 0)\n // the body MAY contain UTF-8-encoded data with value /reason/\n frame.frameData.write(reason, 2, 'utf-8')\n } else {\n frame.frameData = emptyBuffer\n }\n\n /** @type {import('stream').Duplex} */\n const socket = this[kResponse].socket\n\n socket.write(frame.createFrame(opcodes.CLOSE), (err) => {\n if (!err) {\n this[kSentClose] = true\n }\n })\n\n // Upon either sending or receiving a Close control frame, it is said\n // that _The WebSocket Closing Handshake is Started_ and that the\n // WebSocket connection is in the CLOSING state.\n this[kReadyState] = states.CLOSING\n } else {\n // Otherwise\n // Set this's ready state to CLOSING (2).\n this[kReadyState] = WebSocket.CLOSING\n }\n }\n\n /**\n * @see https://websockets.spec.whatwg.org/#dom-websocket-send\n * @param {NodeJS.TypedArray|ArrayBuffer|Blob|string} data\n */\n send (data) {\n webidl.brandCheck(this, WebSocket)\n\n webidl.argumentLengthCheck(arguments, 1, { header: 'WebSocket.send' })\n\n data = webidl.converters.WebSocketSendData(data)\n\n // 1. If this's ready state is CONNECTING, then throw an\n // \"InvalidStateError\" DOMException.\n if (this[kReadyState] === WebSocket.CONNECTING) {\n throw new DOMException('Sent before connected.', 'InvalidStateError')\n }\n\n // 2. Run the appropriate set of steps from the following list:\n // https://datatracker.ietf.org/doc/html/rfc6455#section-6.1\n // https://datatracker.ietf.org/doc/html/rfc6455#section-5.2\n\n if (!isEstablished(this) || isClosing(this)) {\n return\n }\n\n /** @type {import('stream').Duplex} */\n const socket = this[kResponse].socket\n\n // If data is a string\n if (typeof data === 'string') {\n // If the WebSocket connection is established and the WebSocket\n // closing handshake has not yet started, then the user agent\n // must send a WebSocket Message comprised of the data argument\n // using a text frame opcode; if the data cannot be sent, e.g.\n // because it would need to be buffered but the buffer is full,\n // the user agent must flag the WebSocket as full and then close\n // the WebSocket connection. Any invocation of this method with a\n // string argument that does not throw an exception must increase\n // the bufferedAmount attribute by the number of bytes needed to\n // express the argument as UTF-8.\n\n const value = Buffer.from(data)\n const frame = new WebsocketFrameSend(value)\n const buffer = frame.createFrame(opcodes.TEXT)\n\n this.#bufferedAmount += value.byteLength\n socket.write(buffer, () => {\n this.#bufferedAmount -= value.byteLength\n })\n } else if (types.isArrayBuffer(data)) {\n // If the WebSocket connection is established, and the WebSocket\n // closing handshake has not yet started, then the user agent must\n // send a WebSocket Message comprised of data using a binary frame\n // opcode; if the data cannot be sent, e.g. because it would need\n // to be buffered but the buffer is full, the user agent must flag\n // the WebSocket as full and then close the WebSocket connection.\n // The data to be sent is the data stored in the buffer described\n // by the ArrayBuffer object. Any invocation of this method with an\n // ArrayBuffer argument that does not throw an exception must\n // increase the bufferedAmount attribute by the length of the\n // ArrayBuffer in bytes.\n\n const value = Buffer.from(data)\n const frame = new WebsocketFrameSend(value)\n const buffer = frame.createFrame(opcodes.BINARY)\n\n this.#bufferedAmount += value.byteLength\n socket.write(buffer, () => {\n this.#bufferedAmount -= value.byteLength\n })\n } else if (ArrayBuffer.isView(data)) {\n // If the WebSocket connection is established, and the WebSocket\n // closing handshake has not yet started, then the user agent must\n // send a WebSocket Message comprised of data using a binary frame\n // opcode; if the data cannot be sent, e.g. because it would need to\n // be buffered but the buffer is full, the user agent must flag the\n // WebSocket as full and then close the WebSocket connection. The\n // data to be sent is the data stored in the section of the buffer\n // described by the ArrayBuffer object that data references. Any\n // invocation of this method with this kind of argument that does\n // not throw an exception must increase the bufferedAmount attribute\n // by the length of data’s buffer in bytes.\n\n const ab = Buffer.from(data, data.byteOffset, data.byteLength)\n\n const frame = new WebsocketFrameSend(ab)\n const buffer = frame.createFrame(opcodes.BINARY)\n\n this.#bufferedAmount += ab.byteLength\n socket.write(buffer, () => {\n this.#bufferedAmount -= ab.byteLength\n })\n } else if (isBlobLike(data)) {\n // If the WebSocket connection is established, and the WebSocket\n // closing handshake has not yet started, then the user agent must\n // send a WebSocket Message comprised of data using a binary frame\n // opcode; if the data cannot be sent, e.g. because it would need to\n // be buffered but the buffer is full, the user agent must flag the\n // WebSocket as full and then close the WebSocket connection. The data\n // to be sent is the raw data represented by the Blob object. Any\n // invocation of this method with a Blob argument that does not throw\n // an exception must increase the bufferedAmount attribute by the size\n // of the Blob object’s raw data, in bytes.\n\n const frame = new WebsocketFrameSend()\n\n data.arrayBuffer().then((ab) => {\n const value = Buffer.from(ab)\n frame.frameData = value\n const buffer = frame.createFrame(opcodes.BINARY)\n\n this.#bufferedAmount += value.byteLength\n socket.write(buffer, () => {\n this.#bufferedAmount -= value.byteLength\n })\n })\n }\n }\n\n get readyState () {\n webidl.brandCheck(this, WebSocket)\n\n // The readyState getter steps are to return this's ready state.\n return this[kReadyState]\n }\n\n get bufferedAmount () {\n webidl.brandCheck(this, WebSocket)\n\n return this.#bufferedAmount\n }\n\n get url () {\n webidl.brandCheck(this, WebSocket)\n\n // The url getter steps are to return this's url, serialized.\n return URLSerializer(this[kWebSocketURL])\n }\n\n get extensions () {\n webidl.brandCheck(this, WebSocket)\n\n return this.#extensions\n }\n\n get protocol () {\n webidl.brandCheck(this, WebSocket)\n\n return this.#protocol\n }\n\n get onopen () {\n webidl.brandCheck(this, WebSocket)\n\n return this.#events.open\n }\n\n set onopen (fn) {\n webidl.brandCheck(this, WebSocket)\n\n if (this.#events.open) {\n this.removeEventListener('open', this.#events.open)\n }\n\n if (typeof fn === 'function') {\n this.#events.open = fn\n this.addEventListener('open', fn)\n } else {\n this.#events.open = null\n }\n }\n\n get onerror () {\n webidl.brandCheck(this, WebSocket)\n\n return this.#events.error\n }\n\n set onerror (fn) {\n webidl.brandCheck(this, WebSocket)\n\n if (this.#events.error) {\n this.removeEventListener('error', this.#events.error)\n }\n\n if (typeof fn === 'function') {\n this.#events.error = fn\n this.addEventListener('error', fn)\n } else {\n this.#events.error = null\n }\n }\n\n get onclose () {\n webidl.brandCheck(this, WebSocket)\n\n return this.#events.close\n }\n\n set onclose (fn) {\n webidl.brandCheck(this, WebSocket)\n\n if (this.#events.close) {\n this.removeEventListener('close', this.#events.close)\n }\n\n if (typeof fn === 'function') {\n this.#events.close = fn\n this.addEventListener('close', fn)\n } else {\n this.#events.close = null\n }\n }\n\n get onmessage () {\n webidl.brandCheck(this, WebSocket)\n\n return this.#events.message\n }\n\n set onmessage (fn) {\n webidl.brandCheck(this, WebSocket)\n\n if (this.#events.message) {\n this.removeEventListener('message', this.#events.message)\n }\n\n if (typeof fn === 'function') {\n this.#events.message = fn\n this.addEventListener('message', fn)\n } else {\n this.#events.message = null\n }\n }\n\n get binaryType () {\n webidl.brandCheck(this, WebSocket)\n\n return this[kBinaryType]\n }\n\n set binaryType (type) {\n webidl.brandCheck(this, WebSocket)\n\n if (type !== 'blob' && type !== 'arraybuffer') {\n this[kBinaryType] = 'blob'\n } else {\n this[kBinaryType] = type\n }\n }\n\n /**\n * @see https://websockets.spec.whatwg.org/#feedback-from-the-protocol\n */\n #onConnectionEstablished (response) {\n // processResponse is called when the \"response’s header list has been received and initialized.\"\n // once this happens, the connection is open\n this[kResponse] = response\n\n const parser = new ByteParser(this)\n parser.on('drain', function onParserDrain () {\n this.ws[kResponse].socket.resume()\n })\n\n response.socket.ws = this\n this[kByteParser] = parser\n\n // 1. Change the ready state to OPEN (1).\n this[kReadyState] = states.OPEN\n\n // 2. Change the extensions attribute’s value to the extensions in use, if\n // it is not the null value.\n // https://datatracker.ietf.org/doc/html/rfc6455#section-9.1\n const extensions = response.headersList.get('sec-websocket-extensions')\n\n if (extensions !== null) {\n this.#extensions = extensions\n }\n\n // 3. Change the protocol attribute’s value to the subprotocol in use, if\n // it is not the null value.\n // https://datatracker.ietf.org/doc/html/rfc6455#section-1.9\n const protocol = response.headersList.get('sec-websocket-protocol')\n\n if (protocol !== null) {\n this.#protocol = protocol\n }\n\n // 4. Fire an event named open at the WebSocket object.\n fireEvent('open', this)\n }\n}\n\n// https://websockets.spec.whatwg.org/#dom-websocket-connecting\nWebSocket.CONNECTING = WebSocket.prototype.CONNECTING = states.CONNECTING\n// https://websockets.spec.whatwg.org/#dom-websocket-open\nWebSocket.OPEN = WebSocket.prototype.OPEN = states.OPEN\n// https://websockets.spec.whatwg.org/#dom-websocket-closing\nWebSocket.CLOSING = WebSocket.prototype.CLOSING = states.CLOSING\n// https://websockets.spec.whatwg.org/#dom-websocket-closed\nWebSocket.CLOSED = WebSocket.prototype.CLOSED = states.CLOSED\n\nObject.defineProperties(WebSocket.prototype, {\n CONNECTING: staticPropertyDescriptors,\n OPEN: staticPropertyDescriptors,\n CLOSING: staticPropertyDescriptors,\n CLOSED: staticPropertyDescriptors,\n url: kEnumerableProperty,\n readyState: kEnumerableProperty,\n bufferedAmount: kEnumerableProperty,\n onopen: kEnumerableProperty,\n onerror: kEnumerableProperty,\n onclose: kEnumerableProperty,\n close: kEnumerableProperty,\n onmessage: kEnumerableProperty,\n binaryType: kEnumerableProperty,\n send: kEnumerableProperty,\n extensions: kEnumerableProperty,\n protocol: kEnumerableProperty,\n [Symbol.toStringTag]: {\n value: 'WebSocket',\n writable: false,\n enumerable: false,\n configurable: true\n }\n})\n\nObject.defineProperties(WebSocket, {\n CONNECTING: staticPropertyDescriptors,\n OPEN: staticPropertyDescriptors,\n CLOSING: staticPropertyDescriptors,\n CLOSED: staticPropertyDescriptors\n})\n\nwebidl.converters['sequence'] = webidl.sequenceConverter(\n webidl.converters.DOMString\n)\n\nwebidl.converters['DOMString or sequence'] = function (V) {\n if (webidl.util.Type(V) === 'Object' && Symbol.iterator in V) {\n return webidl.converters['sequence'](V)\n }\n\n return webidl.converters.DOMString(V)\n}\n\n// This implements the propsal made in https://github.com/whatwg/websockets/issues/42\nwebidl.converters.WebSocketInit = webidl.dictionaryConverter([\n {\n key: 'protocols',\n converter: webidl.converters['DOMString or sequence'],\n get defaultValue () {\n return []\n }\n },\n {\n key: 'dispatcher',\n converter: (V) => V,\n get defaultValue () {\n return getGlobalDispatcher()\n }\n },\n {\n key: 'headers',\n converter: webidl.nullableConverter(webidl.converters.HeadersInit)\n }\n])\n\nwebidl.converters['DOMString or sequence or WebSocketInit'] = function (V) {\n if (webidl.util.Type(V) === 'Object' && !(Symbol.iterator in V)) {\n return webidl.converters.WebSocketInit(V)\n }\n\n return { protocols: webidl.converters['DOMString or sequence'](V) }\n}\n\nwebidl.converters.WebSocketSendData = function (V) {\n if (webidl.util.Type(V) === 'Object') {\n if (isBlobLike(V)) {\n return webidl.converters.Blob(V, { strict: false })\n }\n\n if (ArrayBuffer.isView(V) || types.isAnyArrayBuffer(V)) {\n return webidl.converters.BufferSource(V)\n }\n }\n\n return webidl.converters.USVString(V)\n}\n\nmodule.exports = {\n WebSocket\n}\n","'use strict'\n\nconst Client = require('./lib/client')\nconst Dispatcher = require('./lib/dispatcher')\nconst errors = require('./lib/core/errors')\nconst Pool = require('./lib/pool')\nconst BalancedPool = require('./lib/balanced-pool')\nconst Agent = require('./lib/agent')\nconst util = require('./lib/core/util')\nconst { InvalidArgumentError } = errors\nconst api = require('./lib/api')\nconst buildConnector = require('./lib/core/connect')\nconst MockClient = require('./lib/mock/mock-client')\nconst MockAgent = require('./lib/mock/mock-agent')\nconst MockPool = require('./lib/mock/mock-pool')\nconst mockErrors = require('./lib/mock/mock-errors')\nconst ProxyAgent = require('./lib/proxy-agent')\nconst RetryHandler = require('./lib/handler/RetryHandler')\nconst { getGlobalDispatcher, setGlobalDispatcher } = require('./lib/global')\nconst DecoratorHandler = require('./lib/handler/DecoratorHandler')\nconst RedirectHandler = require('./lib/handler/RedirectHandler')\nconst createRedirectInterceptor = require('./lib/interceptor/redirectInterceptor')\n\nlet hasCrypto\ntry {\n require('crypto')\n hasCrypto = true\n} catch {\n hasCrypto = false\n}\n\nObject.assign(Dispatcher.prototype, api)\n\nmodule.exports.Dispatcher = Dispatcher\nmodule.exports.Client = Client\nmodule.exports.Pool = Pool\nmodule.exports.BalancedPool = BalancedPool\nmodule.exports.Agent = Agent\nmodule.exports.ProxyAgent = ProxyAgent\nmodule.exports.RetryHandler = RetryHandler\n\nmodule.exports.DecoratorHandler = DecoratorHandler\nmodule.exports.RedirectHandler = RedirectHandler\nmodule.exports.createRedirectInterceptor = createRedirectInterceptor\n\nmodule.exports.buildConnector = buildConnector\nmodule.exports.errors = errors\n\nfunction makeDispatcher (fn) {\n return (url, opts, handler) => {\n if (typeof opts === 'function') {\n handler = opts\n opts = null\n }\n\n if (!url || (typeof url !== 'string' && typeof url !== 'object' && !(url instanceof URL))) {\n throw new InvalidArgumentError('invalid url')\n }\n\n if (opts != null && typeof opts !== 'object') {\n throw new InvalidArgumentError('invalid opts')\n }\n\n if (opts && opts.path != null) {\n if (typeof opts.path !== 'string') {\n throw new InvalidArgumentError('invalid opts.path')\n }\n\n let path = opts.path\n if (!opts.path.startsWith('/')) {\n path = `/${path}`\n }\n\n url = new URL(util.parseOrigin(url).origin + path)\n } else {\n if (!opts) {\n opts = typeof url === 'object' ? url : {}\n }\n\n url = util.parseURL(url)\n }\n\n const { agent, dispatcher = getGlobalDispatcher() } = opts\n\n if (agent) {\n throw new InvalidArgumentError('unsupported opts.agent. Did you mean opts.client?')\n }\n\n return fn.call(dispatcher, {\n ...opts,\n origin: url.origin,\n path: url.search ? `${url.pathname}${url.search}` : url.pathname,\n method: opts.method || (opts.body ? 'PUT' : 'GET')\n }, handler)\n }\n}\n\nmodule.exports.setGlobalDispatcher = setGlobalDispatcher\nmodule.exports.getGlobalDispatcher = getGlobalDispatcher\n\nif (util.nodeMajor > 16 || (util.nodeMajor === 16 && util.nodeMinor >= 8)) {\n let fetchImpl = null\n module.exports.fetch = async function fetch (resource) {\n if (!fetchImpl) {\n fetchImpl = require('./lib/fetch').fetch\n }\n\n try {\n return await fetchImpl(...arguments)\n } catch (err) {\n if (typeof err === 'object') {\n Error.captureStackTrace(err, this)\n }\n\n throw err\n }\n }\n module.exports.Headers = require('./lib/fetch/headers').Headers\n module.exports.Response = require('./lib/fetch/response').Response\n module.exports.Request = require('./lib/fetch/request').Request\n module.exports.FormData = require('./lib/fetch/formdata').FormData\n module.exports.File = require('./lib/fetch/file').File\n module.exports.FileReader = require('./lib/fileapi/filereader').FileReader\n\n const { setGlobalOrigin, getGlobalOrigin } = require('./lib/fetch/global')\n\n module.exports.setGlobalOrigin = setGlobalOrigin\n module.exports.getGlobalOrigin = getGlobalOrigin\n\n const { CacheStorage } = require('./lib/cache/cachestorage')\n const { kConstruct } = require('./lib/cache/symbols')\n\n // Cache & CacheStorage are tightly coupled with fetch. Even if it may run\n // in an older version of Node, it doesn't have any use without fetch.\n module.exports.caches = new CacheStorage(kConstruct)\n}\n\nif (util.nodeMajor >= 16) {\n const { deleteCookie, getCookies, getSetCookies, setCookie } = require('./lib/cookies')\n\n module.exports.deleteCookie = deleteCookie\n module.exports.getCookies = getCookies\n module.exports.getSetCookies = getSetCookies\n module.exports.setCookie = setCookie\n\n const { parseMIMEType, serializeAMimeType } = require('./lib/fetch/dataURL')\n\n module.exports.parseMIMEType = parseMIMEType\n module.exports.serializeAMimeType = serializeAMimeType\n}\n\nif (util.nodeMajor >= 18 && hasCrypto) {\n const { WebSocket } = require('./lib/websocket/websocket')\n\n module.exports.WebSocket = WebSocket\n}\n\nmodule.exports.request = makeDispatcher(api.request)\nmodule.exports.stream = makeDispatcher(api.stream)\nmodule.exports.pipeline = makeDispatcher(api.pipeline)\nmodule.exports.connect = makeDispatcher(api.connect)\nmodule.exports.upgrade = makeDispatcher(api.upgrade)\n\nmodule.exports.MockClient = MockClient\nmodule.exports.MockPool = MockPool\nmodule.exports.MockAgent = MockAgent\nmodule.exports.mockErrors = mockErrors\n","\"use strict\";\n/* eslint-disable @typescript-eslint/no-explicit-any */\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.HttpClient = exports.isHttps = exports.HttpClientResponse = exports.HttpClientError = exports.getProxyUrl = exports.MediaTypes = exports.Headers = exports.HttpCodes = void 0;\nconst http = __importStar(require(\"http\"));\nconst https = __importStar(require(\"https\"));\nconst pm = __importStar(require(\"./proxy\"));\nconst tunnel = __importStar(require(\"tunnel\"));\nconst undici_1 = require(\"undici\");\nvar HttpCodes;\n(function (HttpCodes) {\n HttpCodes[HttpCodes[\"OK\"] = 200] = \"OK\";\n HttpCodes[HttpCodes[\"MultipleChoices\"] = 300] = \"MultipleChoices\";\n HttpCodes[HttpCodes[\"MovedPermanently\"] = 301] = \"MovedPermanently\";\n HttpCodes[HttpCodes[\"ResourceMoved\"] = 302] = \"ResourceMoved\";\n HttpCodes[HttpCodes[\"SeeOther\"] = 303] = \"SeeOther\";\n HttpCodes[HttpCodes[\"NotModified\"] = 304] = \"NotModified\";\n HttpCodes[HttpCodes[\"UseProxy\"] = 305] = \"UseProxy\";\n HttpCodes[HttpCodes[\"SwitchProxy\"] = 306] = \"SwitchProxy\";\n HttpCodes[HttpCodes[\"TemporaryRedirect\"] = 307] = \"TemporaryRedirect\";\n HttpCodes[HttpCodes[\"PermanentRedirect\"] = 308] = \"PermanentRedirect\";\n HttpCodes[HttpCodes[\"BadRequest\"] = 400] = \"BadRequest\";\n HttpCodes[HttpCodes[\"Unauthorized\"] = 401] = \"Unauthorized\";\n HttpCodes[HttpCodes[\"PaymentRequired\"] = 402] = \"PaymentRequired\";\n HttpCodes[HttpCodes[\"Forbidden\"] = 403] = \"Forbidden\";\n HttpCodes[HttpCodes[\"NotFound\"] = 404] = \"NotFound\";\n HttpCodes[HttpCodes[\"MethodNotAllowed\"] = 405] = \"MethodNotAllowed\";\n HttpCodes[HttpCodes[\"NotAcceptable\"] = 406] = \"NotAcceptable\";\n HttpCodes[HttpCodes[\"ProxyAuthenticationRequired\"] = 407] = \"ProxyAuthenticationRequired\";\n HttpCodes[HttpCodes[\"RequestTimeout\"] = 408] = \"RequestTimeout\";\n HttpCodes[HttpCodes[\"Conflict\"] = 409] = \"Conflict\";\n HttpCodes[HttpCodes[\"Gone\"] = 410] = \"Gone\";\n HttpCodes[HttpCodes[\"TooManyRequests\"] = 429] = \"TooManyRequests\";\n HttpCodes[HttpCodes[\"InternalServerError\"] = 500] = \"InternalServerError\";\n HttpCodes[HttpCodes[\"NotImplemented\"] = 501] = \"NotImplemented\";\n HttpCodes[HttpCodes[\"BadGateway\"] = 502] = \"BadGateway\";\n HttpCodes[HttpCodes[\"ServiceUnavailable\"] = 503] = \"ServiceUnavailable\";\n HttpCodes[HttpCodes[\"GatewayTimeout\"] = 504] = \"GatewayTimeout\";\n})(HttpCodes || (exports.HttpCodes = HttpCodes = {}));\nvar Headers;\n(function (Headers) {\n Headers[\"Accept\"] = \"accept\";\n Headers[\"ContentType\"] = \"content-type\";\n})(Headers || (exports.Headers = Headers = {}));\nvar MediaTypes;\n(function (MediaTypes) {\n MediaTypes[\"ApplicationJson\"] = \"application/json\";\n})(MediaTypes || (exports.MediaTypes = MediaTypes = {}));\n/**\n * Returns the proxy URL, depending upon the supplied url and proxy environment variables.\n * @param serverUrl The server URL where the request will be sent. For example, https://api.github.com\n */\nfunction getProxyUrl(serverUrl) {\n const proxyUrl = pm.getProxyUrl(new URL(serverUrl));\n return proxyUrl ? proxyUrl.href : '';\n}\nexports.getProxyUrl = getProxyUrl;\nconst HttpRedirectCodes = [\n HttpCodes.MovedPermanently,\n HttpCodes.ResourceMoved,\n HttpCodes.SeeOther,\n HttpCodes.TemporaryRedirect,\n HttpCodes.PermanentRedirect\n];\nconst HttpResponseRetryCodes = [\n HttpCodes.BadGateway,\n HttpCodes.ServiceUnavailable,\n HttpCodes.GatewayTimeout\n];\nconst RetryableHttpVerbs = ['OPTIONS', 'GET', 'DELETE', 'HEAD'];\nconst ExponentialBackoffCeiling = 10;\nconst ExponentialBackoffTimeSlice = 5;\nclass HttpClientError extends Error {\n constructor(message, statusCode) {\n super(message);\n this.name = 'HttpClientError';\n this.statusCode = statusCode;\n Object.setPrototypeOf(this, HttpClientError.prototype);\n }\n}\nexports.HttpClientError = HttpClientError;\nclass HttpClientResponse {\n constructor(message) {\n this.message = message;\n }\n readBody() {\n return __awaiter(this, void 0, void 0, function* () {\n return new Promise((resolve) => __awaiter(this, void 0, void 0, function* () {\n let output = Buffer.alloc(0);\n this.message.on('data', (chunk) => {\n output = Buffer.concat([output, chunk]);\n });\n this.message.on('end', () => {\n resolve(output.toString());\n });\n }));\n });\n }\n readBodyBuffer() {\n return __awaiter(this, void 0, void 0, function* () {\n return new Promise((resolve) => __awaiter(this, void 0, void 0, function* () {\n const chunks = [];\n this.message.on('data', (chunk) => {\n chunks.push(chunk);\n });\n this.message.on('end', () => {\n resolve(Buffer.concat(chunks));\n });\n }));\n });\n }\n}\nexports.HttpClientResponse = HttpClientResponse;\nfunction isHttps(requestUrl) {\n const parsedUrl = new URL(requestUrl);\n return parsedUrl.protocol === 'https:';\n}\nexports.isHttps = isHttps;\nclass HttpClient {\n constructor(userAgent, handlers, requestOptions) {\n this._ignoreSslError = false;\n this._allowRedirects = true;\n this._allowRedirectDowngrade = false;\n this._maxRedirects = 50;\n this._allowRetries = false;\n this._maxRetries = 1;\n this._keepAlive = false;\n this._disposed = false;\n this.userAgent = userAgent;\n this.handlers = handlers || [];\n this.requestOptions = requestOptions;\n if (requestOptions) {\n if (requestOptions.ignoreSslError != null) {\n this._ignoreSslError = requestOptions.ignoreSslError;\n }\n this._socketTimeout = requestOptions.socketTimeout;\n if (requestOptions.allowRedirects != null) {\n this._allowRedirects = requestOptions.allowRedirects;\n }\n if (requestOptions.allowRedirectDowngrade != null) {\n this._allowRedirectDowngrade = requestOptions.allowRedirectDowngrade;\n }\n if (requestOptions.maxRedirects != null) {\n this._maxRedirects = Math.max(requestOptions.maxRedirects, 0);\n }\n if (requestOptions.keepAlive != null) {\n this._keepAlive = requestOptions.keepAlive;\n }\n if (requestOptions.allowRetries != null) {\n this._allowRetries = requestOptions.allowRetries;\n }\n if (requestOptions.maxRetries != null) {\n this._maxRetries = requestOptions.maxRetries;\n }\n }\n }\n options(requestUrl, additionalHeaders) {\n return __awaiter(this, void 0, void 0, function* () {\n return this.request('OPTIONS', requestUrl, null, additionalHeaders || {});\n });\n }\n get(requestUrl, additionalHeaders) {\n return __awaiter(this, void 0, void 0, function* () {\n return this.request('GET', requestUrl, null, additionalHeaders || {});\n });\n }\n del(requestUrl, additionalHeaders) {\n return __awaiter(this, void 0, void 0, function* () {\n return this.request('DELETE', requestUrl, null, additionalHeaders || {});\n });\n }\n post(requestUrl, data, additionalHeaders) {\n return __awaiter(this, void 0, void 0, function* () {\n return this.request('POST', requestUrl, data, additionalHeaders || {});\n });\n }\n patch(requestUrl, data, additionalHeaders) {\n return __awaiter(this, void 0, void 0, function* () {\n return this.request('PATCH', requestUrl, data, additionalHeaders || {});\n });\n }\n put(requestUrl, data, additionalHeaders) {\n return __awaiter(this, void 0, void 0, function* () {\n return this.request('PUT', requestUrl, data, additionalHeaders || {});\n });\n }\n head(requestUrl, additionalHeaders) {\n return __awaiter(this, void 0, void 0, function* () {\n return this.request('HEAD', requestUrl, null, additionalHeaders || {});\n });\n }\n sendStream(verb, requestUrl, stream, additionalHeaders) {\n return __awaiter(this, void 0, void 0, function* () {\n return this.request(verb, requestUrl, stream, additionalHeaders);\n });\n }\n /**\n * Gets a typed object from an endpoint\n * Be aware that not found returns a null. Other errors (4xx, 5xx) reject the promise\n */\n getJson(requestUrl, additionalHeaders = {}) {\n return __awaiter(this, void 0, void 0, function* () {\n additionalHeaders[Headers.Accept] = this._getExistingOrDefaultHeader(additionalHeaders, Headers.Accept, MediaTypes.ApplicationJson);\n const res = yield this.get(requestUrl, additionalHeaders);\n return this._processResponse(res, this.requestOptions);\n });\n }\n postJson(requestUrl, obj, additionalHeaders = {}) {\n return __awaiter(this, void 0, void 0, function* () {\n const data = JSON.stringify(obj, null, 2);\n additionalHeaders[Headers.Accept] = this._getExistingOrDefaultHeader(additionalHeaders, Headers.Accept, MediaTypes.ApplicationJson);\n additionalHeaders[Headers.ContentType] = this._getExistingOrDefaultHeader(additionalHeaders, Headers.ContentType, MediaTypes.ApplicationJson);\n const res = yield this.post(requestUrl, data, additionalHeaders);\n return this._processResponse(res, this.requestOptions);\n });\n }\n putJson(requestUrl, obj, additionalHeaders = {}) {\n return __awaiter(this, void 0, void 0, function* () {\n const data = JSON.stringify(obj, null, 2);\n additionalHeaders[Headers.Accept] = this._getExistingOrDefaultHeader(additionalHeaders, Headers.Accept, MediaTypes.ApplicationJson);\n additionalHeaders[Headers.ContentType] = this._getExistingOrDefaultHeader(additionalHeaders, Headers.ContentType, MediaTypes.ApplicationJson);\n const res = yield this.put(requestUrl, data, additionalHeaders);\n return this._processResponse(res, this.requestOptions);\n });\n }\n patchJson(requestUrl, obj, additionalHeaders = {}) {\n return __awaiter(this, void 0, void 0, function* () {\n const data = JSON.stringify(obj, null, 2);\n additionalHeaders[Headers.Accept] = this._getExistingOrDefaultHeader(additionalHeaders, Headers.Accept, MediaTypes.ApplicationJson);\n additionalHeaders[Headers.ContentType] = this._getExistingOrDefaultHeader(additionalHeaders, Headers.ContentType, MediaTypes.ApplicationJson);\n const res = yield this.patch(requestUrl, data, additionalHeaders);\n return this._processResponse(res, this.requestOptions);\n });\n }\n /**\n * Makes a raw http request.\n * All other methods such as get, post, patch, and request ultimately call this.\n * Prefer get, del, post and patch\n */\n request(verb, requestUrl, data, headers) {\n return __awaiter(this, void 0, void 0, function* () {\n if (this._disposed) {\n throw new Error('Client has already been disposed.');\n }\n const parsedUrl = new URL(requestUrl);\n let info = this._prepareRequest(verb, parsedUrl, headers);\n // Only perform retries on reads since writes may not be idempotent.\n const maxTries = this._allowRetries && RetryableHttpVerbs.includes(verb)\n ? this._maxRetries + 1\n : 1;\n let numTries = 0;\n let response;\n do {\n response = yield this.requestRaw(info, data);\n // Check if it's an authentication challenge\n if (response &&\n response.message &&\n response.message.statusCode === HttpCodes.Unauthorized) {\n let authenticationHandler;\n for (const handler of this.handlers) {\n if (handler.canHandleAuthentication(response)) {\n authenticationHandler = handler;\n break;\n }\n }\n if (authenticationHandler) {\n return authenticationHandler.handleAuthentication(this, info, data);\n }\n else {\n // We have received an unauthorized response but have no handlers to handle it.\n // Let the response return to the caller.\n return response;\n }\n }\n let redirectsRemaining = this._maxRedirects;\n while (response.message.statusCode &&\n HttpRedirectCodes.includes(response.message.statusCode) &&\n this._allowRedirects &&\n redirectsRemaining > 0) {\n const redirectUrl = response.message.headers['location'];\n if (!redirectUrl) {\n // if there's no location to redirect to, we won't\n break;\n }\n const parsedRedirectUrl = new URL(redirectUrl);\n if (parsedUrl.protocol === 'https:' &&\n parsedUrl.protocol !== parsedRedirectUrl.protocol &&\n !this._allowRedirectDowngrade) {\n throw new Error('Redirect from HTTPS to HTTP protocol. This downgrade is not allowed for security reasons. If you want to allow this behavior, set the allowRedirectDowngrade option to true.');\n }\n // we need to finish reading the response before reassigning response\n // which will leak the open socket.\n yield response.readBody();\n // strip authorization header if redirected to a different hostname\n if (parsedRedirectUrl.hostname !== parsedUrl.hostname) {\n for (const header in headers) {\n // header names are case insensitive\n if (header.toLowerCase() === 'authorization') {\n delete headers[header];\n }\n }\n }\n // let's make the request with the new redirectUrl\n info = this._prepareRequest(verb, parsedRedirectUrl, headers);\n response = yield this.requestRaw(info, data);\n redirectsRemaining--;\n }\n if (!response.message.statusCode ||\n !HttpResponseRetryCodes.includes(response.message.statusCode)) {\n // If not a retry code, return immediately instead of retrying\n return response;\n }\n numTries += 1;\n if (numTries < maxTries) {\n yield response.readBody();\n yield this._performExponentialBackoff(numTries);\n }\n } while (numTries < maxTries);\n return response;\n });\n }\n /**\n * Needs to be called if keepAlive is set to true in request options.\n */\n dispose() {\n if (this._agent) {\n this._agent.destroy();\n }\n this._disposed = true;\n }\n /**\n * Raw request.\n * @param info\n * @param data\n */\n requestRaw(info, data) {\n return __awaiter(this, void 0, void 0, function* () {\n return new Promise((resolve, reject) => {\n function callbackForResult(err, res) {\n if (err) {\n reject(err);\n }\n else if (!res) {\n // If `err` is not passed, then `res` must be passed.\n reject(new Error('Unknown error'));\n }\n else {\n resolve(res);\n }\n }\n this.requestRawWithCallback(info, data, callbackForResult);\n });\n });\n }\n /**\n * Raw request with callback.\n * @param info\n * @param data\n * @param onResult\n */\n requestRawWithCallback(info, data, onResult) {\n if (typeof data === 'string') {\n if (!info.options.headers) {\n info.options.headers = {};\n }\n info.options.headers['Content-Length'] = Buffer.byteLength(data, 'utf8');\n }\n let callbackCalled = false;\n function handleResult(err, res) {\n if (!callbackCalled) {\n callbackCalled = true;\n onResult(err, res);\n }\n }\n const req = info.httpModule.request(info.options, (msg) => {\n const res = new HttpClientResponse(msg);\n handleResult(undefined, res);\n });\n let socket;\n req.on('socket', sock => {\n socket = sock;\n });\n // If we ever get disconnected, we want the socket to timeout eventually\n req.setTimeout(this._socketTimeout || 3 * 60000, () => {\n if (socket) {\n socket.end();\n }\n handleResult(new Error(`Request timeout: ${info.options.path}`));\n });\n req.on('error', function (err) {\n // err has statusCode property\n // res should have headers\n handleResult(err);\n });\n if (data && typeof data === 'string') {\n req.write(data, 'utf8');\n }\n if (data && typeof data !== 'string') {\n data.on('close', function () {\n req.end();\n });\n data.pipe(req);\n }\n else {\n req.end();\n }\n }\n /**\n * Gets an http agent. This function is useful when you need an http agent that handles\n * routing through a proxy server - depending upon the url and proxy environment variables.\n * @param serverUrl The server URL where the request will be sent. For example, https://api.github.com\n */\n getAgent(serverUrl) {\n const parsedUrl = new URL(serverUrl);\n return this._getAgent(parsedUrl);\n }\n getAgentDispatcher(serverUrl) {\n const parsedUrl = new URL(serverUrl);\n const proxyUrl = pm.getProxyUrl(parsedUrl);\n const useProxy = proxyUrl && proxyUrl.hostname;\n if (!useProxy) {\n return;\n }\n return this._getProxyAgentDispatcher(parsedUrl, proxyUrl);\n }\n _prepareRequest(method, requestUrl, headers) {\n const info = {};\n info.parsedUrl = requestUrl;\n const usingSsl = info.parsedUrl.protocol === 'https:';\n info.httpModule = usingSsl ? https : http;\n const defaultPort = usingSsl ? 443 : 80;\n info.options = {};\n info.options.host = info.parsedUrl.hostname;\n info.options.port = info.parsedUrl.port\n ? parseInt(info.parsedUrl.port)\n : defaultPort;\n info.options.path =\n (info.parsedUrl.pathname || '') + (info.parsedUrl.search || '');\n info.options.method = method;\n info.options.headers = this._mergeHeaders(headers);\n if (this.userAgent != null) {\n info.options.headers['user-agent'] = this.userAgent;\n }\n info.options.agent = this._getAgent(info.parsedUrl);\n // gives handlers an opportunity to participate\n if (this.handlers) {\n for (const handler of this.handlers) {\n handler.prepareRequest(info.options);\n }\n }\n return info;\n }\n _mergeHeaders(headers) {\n if (this.requestOptions && this.requestOptions.headers) {\n return Object.assign({}, lowercaseKeys(this.requestOptions.headers), lowercaseKeys(headers || {}));\n }\n return lowercaseKeys(headers || {});\n }\n _getExistingOrDefaultHeader(additionalHeaders, header, _default) {\n let clientHeader;\n if (this.requestOptions && this.requestOptions.headers) {\n clientHeader = lowercaseKeys(this.requestOptions.headers)[header];\n }\n return additionalHeaders[header] || clientHeader || _default;\n }\n _getAgent(parsedUrl) {\n let agent;\n const proxyUrl = pm.getProxyUrl(parsedUrl);\n const useProxy = proxyUrl && proxyUrl.hostname;\n if (this._keepAlive && useProxy) {\n agent = this._proxyAgent;\n }\n if (!useProxy) {\n agent = this._agent;\n }\n // if agent is already assigned use that agent.\n if (agent) {\n return agent;\n }\n const usingSsl = parsedUrl.protocol === 'https:';\n let maxSockets = 100;\n if (this.requestOptions) {\n maxSockets = this.requestOptions.maxSockets || http.globalAgent.maxSockets;\n }\n // This is `useProxy` again, but we need to check `proxyURl` directly for TypeScripts's flow analysis.\n if (proxyUrl && proxyUrl.hostname) {\n const agentOptions = {\n maxSockets,\n keepAlive: this._keepAlive,\n proxy: Object.assign(Object.assign({}, ((proxyUrl.username || proxyUrl.password) && {\n proxyAuth: `${proxyUrl.username}:${proxyUrl.password}`\n })), { host: proxyUrl.hostname, port: proxyUrl.port })\n };\n let tunnelAgent;\n const overHttps = proxyUrl.protocol === 'https:';\n if (usingSsl) {\n tunnelAgent = overHttps ? tunnel.httpsOverHttps : tunnel.httpsOverHttp;\n }\n else {\n tunnelAgent = overHttps ? tunnel.httpOverHttps : tunnel.httpOverHttp;\n }\n agent = tunnelAgent(agentOptions);\n this._proxyAgent = agent;\n }\n // if tunneling agent isn't assigned create a new agent\n if (!agent) {\n const options = { keepAlive: this._keepAlive, maxSockets };\n agent = usingSsl ? new https.Agent(options) : new http.Agent(options);\n this._agent = agent;\n }\n if (usingSsl && this._ignoreSslError) {\n // we don't want to set NODE_TLS_REJECT_UNAUTHORIZED=0 since that will affect request for entire process\n // http.RequestOptions doesn't expose a way to modify RequestOptions.agent.options\n // we have to cast it to any and change it directly\n agent.options = Object.assign(agent.options || {}, {\n rejectUnauthorized: false\n });\n }\n return agent;\n }\n _getProxyAgentDispatcher(parsedUrl, proxyUrl) {\n let proxyAgent;\n if (this._keepAlive) {\n proxyAgent = this._proxyAgentDispatcher;\n }\n // if agent is already assigned use that agent.\n if (proxyAgent) {\n return proxyAgent;\n }\n const usingSsl = parsedUrl.protocol === 'https:';\n proxyAgent = new undici_1.ProxyAgent(Object.assign({ uri: proxyUrl.href, pipelining: !this._keepAlive ? 0 : 1 }, ((proxyUrl.username || proxyUrl.password) && {\n token: `Basic ${Buffer.from(`${proxyUrl.username}:${proxyUrl.password}`).toString('base64')}`\n })));\n this._proxyAgentDispatcher = proxyAgent;\n if (usingSsl && this._ignoreSslError) {\n // we don't want to set NODE_TLS_REJECT_UNAUTHORIZED=0 since that will affect request for entire process\n // http.RequestOptions doesn't expose a way to modify RequestOptions.agent.options\n // we have to cast it to any and change it directly\n proxyAgent.options = Object.assign(proxyAgent.options.requestTls || {}, {\n rejectUnauthorized: false\n });\n }\n return proxyAgent;\n }\n _performExponentialBackoff(retryNumber) {\n return __awaiter(this, void 0, void 0, function* () {\n retryNumber = Math.min(ExponentialBackoffCeiling, retryNumber);\n const ms = ExponentialBackoffTimeSlice * Math.pow(2, retryNumber);\n return new Promise(resolve => setTimeout(() => resolve(), ms));\n });\n }\n _processResponse(res, options) {\n return __awaiter(this, void 0, void 0, function* () {\n return new Promise((resolve, reject) => __awaiter(this, void 0, void 0, function* () {\n const statusCode = res.message.statusCode || 0;\n const response = {\n statusCode,\n result: null,\n headers: {}\n };\n // not found leads to null obj returned\n if (statusCode === HttpCodes.NotFound) {\n resolve(response);\n }\n // get the result from the body\n function dateTimeDeserializer(key, value) {\n if (typeof value === 'string') {\n const a = new Date(value);\n if (!isNaN(a.valueOf())) {\n return a;\n }\n }\n return value;\n }\n let obj;\n let contents;\n try {\n contents = yield res.readBody();\n if (contents && contents.length > 0) {\n if (options && options.deserializeDates) {\n obj = JSON.parse(contents, dateTimeDeserializer);\n }\n else {\n obj = JSON.parse(contents);\n }\n response.result = obj;\n }\n response.headers = res.message.headers;\n }\n catch (err) {\n // Invalid resource (contents not json); leaving result obj null\n }\n // note that 3xx redirects are handled by the http layer.\n if (statusCode > 299) {\n let msg;\n // if exception/error in body, attempt to get better error\n if (obj && obj.message) {\n msg = obj.message;\n }\n else if (contents && contents.length > 0) {\n // it may be the case that the exception is in the body message as string\n msg = contents;\n }\n else {\n msg = `Failed request: (${statusCode})`;\n }\n const err = new HttpClientError(msg, statusCode);\n err.result = response.result;\n reject(err);\n }\n else {\n resolve(response);\n }\n }));\n });\n }\n}\nexports.HttpClient = HttpClient;\nconst lowercaseKeys = (obj) => Object.keys(obj).reduce((c, k) => ((c[k.toLowerCase()] = obj[k]), c), {});\n//# sourceMappingURL=index.js.map","\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.PersonalAccessTokenCredentialHandler = exports.BearerCredentialHandler = exports.BasicCredentialHandler = void 0;\nclass BasicCredentialHandler {\n constructor(username, password) {\n this.username = username;\n this.password = password;\n }\n prepareRequest(options) {\n if (!options.headers) {\n throw Error('The request has no headers');\n }\n options.headers['Authorization'] = `Basic ${Buffer.from(`${this.username}:${this.password}`).toString('base64')}`;\n }\n // This handler cannot handle 401\n canHandleAuthentication() {\n return false;\n }\n handleAuthentication() {\n return __awaiter(this, void 0, void 0, function* () {\n throw new Error('not implemented');\n });\n }\n}\nexports.BasicCredentialHandler = BasicCredentialHandler;\nclass BearerCredentialHandler {\n constructor(token) {\n this.token = token;\n }\n // currently implements pre-authorization\n // TODO: support preAuth = false where it hooks on 401\n prepareRequest(options) {\n if (!options.headers) {\n throw Error('The request has no headers');\n }\n options.headers['Authorization'] = `Bearer ${this.token}`;\n }\n // This handler cannot handle 401\n canHandleAuthentication() {\n return false;\n }\n handleAuthentication() {\n return __awaiter(this, void 0, void 0, function* () {\n throw new Error('not implemented');\n });\n }\n}\nexports.BearerCredentialHandler = BearerCredentialHandler;\nclass PersonalAccessTokenCredentialHandler {\n constructor(token) {\n this.token = token;\n }\n // currently implements pre-authorization\n // TODO: support preAuth = false where it hooks on 401\n prepareRequest(options) {\n if (!options.headers) {\n throw Error('The request has no headers');\n }\n options.headers['Authorization'] = `Basic ${Buffer.from(`PAT:${this.token}`).toString('base64')}`;\n }\n // This handler cannot handle 401\n canHandleAuthentication() {\n return false;\n }\n handleAuthentication() {\n return __awaiter(this, void 0, void 0, function* () {\n throw new Error('not implemented');\n });\n }\n}\nexports.PersonalAccessTokenCredentialHandler = PersonalAccessTokenCredentialHandler;\n//# sourceMappingURL=auth.js.map","\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.OidcClient = void 0;\nconst http_client_1 = require(\"@actions/http-client\");\nconst auth_1 = require(\"@actions/http-client/lib/auth\");\nconst core_1 = require(\"./core\");\nclass OidcClient {\n static createHttpClient(allowRetry = true, maxRetry = 10) {\n const requestOptions = {\n allowRetries: allowRetry,\n maxRetries: maxRetry\n };\n return new http_client_1.HttpClient('actions/oidc-client', [new auth_1.BearerCredentialHandler(OidcClient.getRequestToken())], requestOptions);\n }\n static getRequestToken() {\n const token = process.env['ACTIONS_ID_TOKEN_REQUEST_TOKEN'];\n if (!token) {\n throw new Error('Unable to get ACTIONS_ID_TOKEN_REQUEST_TOKEN env variable');\n }\n return token;\n }\n static getIDTokenUrl() {\n const runtimeUrl = process.env['ACTIONS_ID_TOKEN_REQUEST_URL'];\n if (!runtimeUrl) {\n throw new Error('Unable to get ACTIONS_ID_TOKEN_REQUEST_URL env variable');\n }\n return runtimeUrl;\n }\n static getCall(id_token_url) {\n var _a;\n return __awaiter(this, void 0, void 0, function* () {\n const httpclient = OidcClient.createHttpClient();\n const res = yield httpclient\n .getJson(id_token_url)\n .catch(error => {\n throw new Error(`Failed to get ID Token. \\n \n Error Code : ${error.statusCode}\\n \n Error Message: ${error.message}`);\n });\n const id_token = (_a = res.result) === null || _a === void 0 ? void 0 : _a.value;\n if (!id_token) {\n throw new Error('Response json body do not have ID Token field');\n }\n return id_token;\n });\n }\n static getIDToken(audience) {\n return __awaiter(this, void 0, void 0, function* () {\n try {\n // New ID Token is requested from action service\n let id_token_url = OidcClient.getIDTokenUrl();\n if (audience) {\n const encodedAudience = encodeURIComponent(audience);\n id_token_url = `${id_token_url}&audience=${encodedAudience}`;\n }\n (0, core_1.debug)(`ID token url is ${id_token_url}`);\n const id_token = yield OidcClient.getCall(id_token_url);\n (0, core_1.setSecret)(id_token);\n return id_token;\n }\n catch (error) {\n throw new Error(`Error message: ${error.message}`);\n }\n });\n }\n}\nexports.OidcClient = OidcClient;\n//# sourceMappingURL=oidc-utils.js.map","\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.summary = exports.markdownSummary = exports.SUMMARY_DOCS_URL = exports.SUMMARY_ENV_VAR = void 0;\nconst os_1 = require(\"os\");\nconst fs_1 = require(\"fs\");\nconst { access, appendFile, writeFile } = fs_1.promises;\nexports.SUMMARY_ENV_VAR = 'GITHUB_STEP_SUMMARY';\nexports.SUMMARY_DOCS_URL = 'https://docs.github.com/actions/using-workflows/workflow-commands-for-github-actions#adding-a-job-summary';\nclass Summary {\n constructor() {\n this._buffer = '';\n }\n /**\n * Finds the summary file path from the environment, rejects if env var is not found or file does not exist\n * Also checks r/w permissions.\n *\n * @returns step summary file path\n */\n filePath() {\n return __awaiter(this, void 0, void 0, function* () {\n if (this._filePath) {\n return this._filePath;\n }\n const pathFromEnv = process.env[exports.SUMMARY_ENV_VAR];\n if (!pathFromEnv) {\n throw new Error(`Unable to find environment variable for $${exports.SUMMARY_ENV_VAR}. Check if your runtime environment supports job summaries.`);\n }\n try {\n yield access(pathFromEnv, fs_1.constants.R_OK | fs_1.constants.W_OK);\n }\n catch (_a) {\n throw new Error(`Unable to access summary file: '${pathFromEnv}'. Check if the file has correct read/write permissions.`);\n }\n this._filePath = pathFromEnv;\n return this._filePath;\n });\n }\n /**\n * Wraps content in an HTML tag, adding any HTML attributes\n *\n * @param {string} tag HTML tag to wrap\n * @param {string | null} content content within the tag\n * @param {[attribute: string]: string} attrs key-value list of HTML attributes to add\n *\n * @returns {string} content wrapped in HTML element\n */\n wrap(tag, content, attrs = {}) {\n const htmlAttrs = Object.entries(attrs)\n .map(([key, value]) => ` ${key}=\"${value}\"`)\n .join('');\n if (!content) {\n return `<${tag}${htmlAttrs}>`;\n }\n return `<${tag}${htmlAttrs}>${content}`;\n }\n /**\n * Writes text in the buffer to the summary buffer file and empties buffer. Will append by default.\n *\n * @param {SummaryWriteOptions} [options] (optional) options for write operation\n *\n * @returns {Promise} summary instance\n */\n write(options) {\n return __awaiter(this, void 0, void 0, function* () {\n const overwrite = !!(options === null || options === void 0 ? void 0 : options.overwrite);\n const filePath = yield this.filePath();\n const writeFunc = overwrite ? writeFile : appendFile;\n yield writeFunc(filePath, this._buffer, { encoding: 'utf8' });\n return this.emptyBuffer();\n });\n }\n /**\n * Clears the summary buffer and wipes the summary file\n *\n * @returns {Summary} summary instance\n */\n clear() {\n return __awaiter(this, void 0, void 0, function* () {\n return this.emptyBuffer().write({ overwrite: true });\n });\n }\n /**\n * Returns the current summary buffer as a string\n *\n * @returns {string} string of summary buffer\n */\n stringify() {\n return this._buffer;\n }\n /**\n * If the summary buffer is empty\n *\n * @returns {boolen} true if the buffer is empty\n */\n isEmptyBuffer() {\n return this._buffer.length === 0;\n }\n /**\n * Resets the summary buffer without writing to summary file\n *\n * @returns {Summary} summary instance\n */\n emptyBuffer() {\n this._buffer = '';\n return this;\n }\n /**\n * Adds raw text to the summary buffer\n *\n * @param {string} text content to add\n * @param {boolean} [addEOL=false] (optional) append an EOL to the raw text (default: false)\n *\n * @returns {Summary} summary instance\n */\n addRaw(text, addEOL = false) {\n this._buffer += text;\n return addEOL ? this.addEOL() : this;\n }\n /**\n * Adds the operating system-specific end-of-line marker to the buffer\n *\n * @returns {Summary} summary instance\n */\n addEOL() {\n return this.addRaw(os_1.EOL);\n }\n /**\n * Adds an HTML codeblock to the summary buffer\n *\n * @param {string} code content to render within fenced code block\n * @param {string} lang (optional) language to syntax highlight code\n *\n * @returns {Summary} summary instance\n */\n addCodeBlock(code, lang) {\n const attrs = Object.assign({}, (lang && { lang }));\n const element = this.wrap('pre', this.wrap('code', code), attrs);\n return this.addRaw(element).addEOL();\n }\n /**\n * Adds an HTML list to the summary buffer\n *\n * @param {string[]} items list of items to render\n * @param {boolean} [ordered=false] (optional) if the rendered list should be ordered or not (default: false)\n *\n * @returns {Summary} summary instance\n */\n addList(items, ordered = false) {\n const tag = ordered ? 'ol' : 'ul';\n const listItems = items.map(item => this.wrap('li', item)).join('');\n const element = this.wrap(tag, listItems);\n return this.addRaw(element).addEOL();\n }\n /**\n * Adds an HTML table to the summary buffer\n *\n * @param {SummaryTableCell[]} rows table rows\n *\n * @returns {Summary} summary instance\n */\n addTable(rows) {\n const tableBody = rows\n .map(row => {\n const cells = row\n .map(cell => {\n if (typeof cell === 'string') {\n return this.wrap('td', cell);\n }\n const { header, data, colspan, rowspan } = cell;\n const tag = header ? 'th' : 'td';\n const attrs = Object.assign(Object.assign({}, (colspan && { colspan })), (rowspan && { rowspan }));\n return this.wrap(tag, data, attrs);\n })\n .join('');\n return this.wrap('tr', cells);\n })\n .join('');\n const element = this.wrap('table', tableBody);\n return this.addRaw(element).addEOL();\n }\n /**\n * Adds a collapsable HTML details element to the summary buffer\n *\n * @param {string} label text for the closed state\n * @param {string} content collapsable content\n *\n * @returns {Summary} summary instance\n */\n addDetails(label, content) {\n const element = this.wrap('details', this.wrap('summary', label) + content);\n return this.addRaw(element).addEOL();\n }\n /**\n * Adds an HTML image tag to the summary buffer\n *\n * @param {string} src path to the image you to embed\n * @param {string} alt text description of the image\n * @param {SummaryImageOptions} options (optional) addition image attributes\n *\n * @returns {Summary} summary instance\n */\n addImage(src, alt, options) {\n const { width, height } = options || {};\n const attrs = Object.assign(Object.assign({}, (width && { width })), (height && { height }));\n const element = this.wrap('img', null, Object.assign({ src, alt }, attrs));\n return this.addRaw(element).addEOL();\n }\n /**\n * Adds an HTML section heading element\n *\n * @param {string} text heading text\n * @param {number | string} [level=1] (optional) the heading level, default: 1\n *\n * @returns {Summary} summary instance\n */\n addHeading(text, level) {\n const tag = `h${level}`;\n const allowedTag = ['h1', 'h2', 'h3', 'h4', 'h5', 'h6'].includes(tag)\n ? tag\n : 'h1';\n const element = this.wrap(allowedTag, text);\n return this.addRaw(element).addEOL();\n }\n /**\n * Adds an HTML thematic break (
) to the summary buffer\n *\n * @returns {Summary} summary instance\n */\n addSeparator() {\n const element = this.wrap('hr', null);\n return this.addRaw(element).addEOL();\n }\n /**\n * Adds an HTML line break (
) to the summary buffer\n *\n * @returns {Summary} summary instance\n */\n addBreak() {\n const element = this.wrap('br', null);\n return this.addRaw(element).addEOL();\n }\n /**\n * Adds an HTML blockquote to the summary buffer\n *\n * @param {string} text quote text\n * @param {string} cite (optional) citation url\n *\n * @returns {Summary} summary instance\n */\n addQuote(text, cite) {\n const attrs = Object.assign({}, (cite && { cite }));\n const element = this.wrap('blockquote', text, attrs);\n return this.addRaw(element).addEOL();\n }\n /**\n * Adds an HTML anchor tag to the summary buffer\n *\n * @param {string} text link text/content\n * @param {string} href hyperlink\n *\n * @returns {Summary} summary instance\n */\n addLink(text, href) {\n const element = this.wrap('a', text, { href });\n return this.addRaw(element).addEOL();\n }\n}\nconst _summary = new Summary();\n/**\n * @deprecated use `core.summary`\n */\nexports.markdownSummary = _summary;\nexports.summary = _summary;\n//# sourceMappingURL=summary.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.toPlatformPath = exports.toWin32Path = exports.toPosixPath = void 0;\nconst path = __importStar(require(\"path\"));\n/**\n * toPosixPath converts the given path to the posix form. On Windows, \\\\ will be\n * replaced with /.\n *\n * @param pth. Path to transform.\n * @return string Posix path.\n */\nfunction toPosixPath(pth) {\n return pth.replace(/[\\\\]/g, '/');\n}\nexports.toPosixPath = toPosixPath;\n/**\n * toWin32Path converts the given path to the win32 form. On Linux, / will be\n * replaced with \\\\.\n *\n * @param pth. Path to transform.\n * @return string Win32 path.\n */\nfunction toWin32Path(pth) {\n return pth.replace(/[/]/g, '\\\\');\n}\nexports.toWin32Path = toWin32Path;\n/**\n * toPlatformPath converts the given path to a platform-specific path. It does\n * this by replacing instances of / and \\ with the platform-specific path\n * separator.\n *\n * @param pth The path to platformize.\n * @return string The platform-specific path.\n */\nfunction toPlatformPath(pth) {\n return pth.replace(/[/\\\\]/g, path.sep);\n}\nexports.toPlatformPath = toPlatformPath;\n//# sourceMappingURL=path-utils.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar _a;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getCmdPath = exports.tryGetExecutablePath = exports.isRooted = exports.isDirectory = exports.exists = exports.READONLY = exports.UV_FS_O_EXLOCK = exports.IS_WINDOWS = exports.unlink = exports.symlink = exports.stat = exports.rmdir = exports.rm = exports.rename = exports.readlink = exports.readdir = exports.open = exports.mkdir = exports.lstat = exports.copyFile = exports.chmod = void 0;\nconst fs = __importStar(require(\"fs\"));\nconst path = __importStar(require(\"path\"));\n_a = fs.promises\n// export const {open} = 'fs'\n, exports.chmod = _a.chmod, exports.copyFile = _a.copyFile, exports.lstat = _a.lstat, exports.mkdir = _a.mkdir, exports.open = _a.open, exports.readdir = _a.readdir, exports.readlink = _a.readlink, exports.rename = _a.rename, exports.rm = _a.rm, exports.rmdir = _a.rmdir, exports.stat = _a.stat, exports.symlink = _a.symlink, exports.unlink = _a.unlink;\n// export const {open} = 'fs'\nexports.IS_WINDOWS = process.platform === 'win32';\n// See https://github.com/nodejs/node/blob/d0153aee367422d0858105abec186da4dff0a0c5/deps/uv/include/uv/win.h#L691\nexports.UV_FS_O_EXLOCK = 0x10000000;\nexports.READONLY = fs.constants.O_RDONLY;\nfunction exists(fsPath) {\n return __awaiter(this, void 0, void 0, function* () {\n try {\n yield exports.stat(fsPath);\n }\n catch (err) {\n if (err.code === 'ENOENT') {\n return false;\n }\n throw err;\n }\n return true;\n });\n}\nexports.exists = exists;\nfunction isDirectory(fsPath, useStat = false) {\n return __awaiter(this, void 0, void 0, function* () {\n const stats = useStat ? yield exports.stat(fsPath) : yield exports.lstat(fsPath);\n return stats.isDirectory();\n });\n}\nexports.isDirectory = isDirectory;\n/**\n * On OSX/Linux, true if path starts with '/'. On Windows, true for paths like:\n * \\, \\hello, \\\\hello\\share, C:, and C:\\hello (and corresponding alternate separator cases).\n */\nfunction isRooted(p) {\n p = normalizeSeparators(p);\n if (!p) {\n throw new Error('isRooted() parameter \"p\" cannot be empty');\n }\n if (exports.IS_WINDOWS) {\n return (p.startsWith('\\\\') || /^[A-Z]:/i.test(p) // e.g. \\ or \\hello or \\\\hello\n ); // e.g. C: or C:\\hello\n }\n return p.startsWith('/');\n}\nexports.isRooted = isRooted;\n/**\n * Best effort attempt to determine whether a file exists and is executable.\n * @param filePath file path to check\n * @param extensions additional file extensions to try\n * @return if file exists and is executable, returns the file path. otherwise empty string.\n */\nfunction tryGetExecutablePath(filePath, extensions) {\n return __awaiter(this, void 0, void 0, function* () {\n let stats = undefined;\n try {\n // test file exists\n stats = yield exports.stat(filePath);\n }\n catch (err) {\n if (err.code !== 'ENOENT') {\n // eslint-disable-next-line no-console\n console.log(`Unexpected error attempting to determine if executable file exists '${filePath}': ${err}`);\n }\n }\n if (stats && stats.isFile()) {\n if (exports.IS_WINDOWS) {\n // on Windows, test for valid extension\n const upperExt = path.extname(filePath).toUpperCase();\n if (extensions.some(validExt => validExt.toUpperCase() === upperExt)) {\n return filePath;\n }\n }\n else {\n if (isUnixExecutable(stats)) {\n return filePath;\n }\n }\n }\n // try each extension\n const originalFilePath = filePath;\n for (const extension of extensions) {\n filePath = originalFilePath + extension;\n stats = undefined;\n try {\n stats = yield exports.stat(filePath);\n }\n catch (err) {\n if (err.code !== 'ENOENT') {\n // eslint-disable-next-line no-console\n console.log(`Unexpected error attempting to determine if executable file exists '${filePath}': ${err}`);\n }\n }\n if (stats && stats.isFile()) {\n if (exports.IS_WINDOWS) {\n // preserve the case of the actual file (since an extension was appended)\n try {\n const directory = path.dirname(filePath);\n const upperName = path.basename(filePath).toUpperCase();\n for (const actualName of yield exports.readdir(directory)) {\n if (upperName === actualName.toUpperCase()) {\n filePath = path.join(directory, actualName);\n break;\n }\n }\n }\n catch (err) {\n // eslint-disable-next-line no-console\n console.log(`Unexpected error attempting to determine the actual case of the file '${filePath}': ${err}`);\n }\n return filePath;\n }\n else {\n if (isUnixExecutable(stats)) {\n return filePath;\n }\n }\n }\n }\n return '';\n });\n}\nexports.tryGetExecutablePath = tryGetExecutablePath;\nfunction normalizeSeparators(p) {\n p = p || '';\n if (exports.IS_WINDOWS) {\n // convert slashes on Windows\n p = p.replace(/\\//g, '\\\\');\n // remove redundant slashes\n return p.replace(/\\\\\\\\+/g, '\\\\');\n }\n // remove redundant slashes\n return p.replace(/\\/\\/+/g, '/');\n}\n// on Mac/Linux, test the execute bit\n// R W X R W X R W X\n// 256 128 64 32 16 8 4 2 1\nfunction isUnixExecutable(stats) {\n return ((stats.mode & 1) > 0 ||\n ((stats.mode & 8) > 0 && stats.gid === process.getgid()) ||\n ((stats.mode & 64) > 0 && stats.uid === process.getuid()));\n}\n// Get the path of cmd.exe in windows\nfunction getCmdPath() {\n var _a;\n return (_a = process.env['COMSPEC']) !== null && _a !== void 0 ? _a : `cmd.exe`;\n}\nexports.getCmdPath = getCmdPath;\n//# sourceMappingURL=io-util.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.findInPath = exports.which = exports.mkdirP = exports.rmRF = exports.mv = exports.cp = void 0;\nconst assert_1 = require(\"assert\");\nconst path = __importStar(require(\"path\"));\nconst ioUtil = __importStar(require(\"./io-util\"));\n/**\n * Copies a file or folder.\n * Based off of shelljs - https://github.com/shelljs/shelljs/blob/9237f66c52e5daa40458f94f9565e18e8132f5a6/src/cp.js\n *\n * @param source source path\n * @param dest destination path\n * @param options optional. See CopyOptions.\n */\nfunction cp(source, dest, options = {}) {\n return __awaiter(this, void 0, void 0, function* () {\n const { force, recursive, copySourceDirectory } = readCopyOptions(options);\n const destStat = (yield ioUtil.exists(dest)) ? yield ioUtil.stat(dest) : null;\n // Dest is an existing file, but not forcing\n if (destStat && destStat.isFile() && !force) {\n return;\n }\n // If dest is an existing directory, should copy inside.\n const newDest = destStat && destStat.isDirectory() && copySourceDirectory\n ? path.join(dest, path.basename(source))\n : dest;\n if (!(yield ioUtil.exists(source))) {\n throw new Error(`no such file or directory: ${source}`);\n }\n const sourceStat = yield ioUtil.stat(source);\n if (sourceStat.isDirectory()) {\n if (!recursive) {\n throw new Error(`Failed to copy. ${source} is a directory, but tried to copy without recursive flag.`);\n }\n else {\n yield cpDirRecursive(source, newDest, 0, force);\n }\n }\n else {\n if (path.relative(source, newDest) === '') {\n // a file cannot be copied to itself\n throw new Error(`'${newDest}' and '${source}' are the same file`);\n }\n yield copyFile(source, newDest, force);\n }\n });\n}\nexports.cp = cp;\n/**\n * Moves a path.\n *\n * @param source source path\n * @param dest destination path\n * @param options optional. See MoveOptions.\n */\nfunction mv(source, dest, options = {}) {\n return __awaiter(this, void 0, void 0, function* () {\n if (yield ioUtil.exists(dest)) {\n let destExists = true;\n if (yield ioUtil.isDirectory(dest)) {\n // If dest is directory copy src into dest\n dest = path.join(dest, path.basename(source));\n destExists = yield ioUtil.exists(dest);\n }\n if (destExists) {\n if (options.force == null || options.force) {\n yield rmRF(dest);\n }\n else {\n throw new Error('Destination already exists');\n }\n }\n }\n yield mkdirP(path.dirname(dest));\n yield ioUtil.rename(source, dest);\n });\n}\nexports.mv = mv;\n/**\n * Remove a path recursively with force\n *\n * @param inputPath path to remove\n */\nfunction rmRF(inputPath) {\n return __awaiter(this, void 0, void 0, function* () {\n if (ioUtil.IS_WINDOWS) {\n // Check for invalid characters\n // https://docs.microsoft.com/en-us/windows/win32/fileio/naming-a-file\n if (/[*\"<>|]/.test(inputPath)) {\n throw new Error('File path must not contain `*`, `\"`, `<`, `>` or `|` on Windows');\n }\n }\n try {\n // note if path does not exist, error is silent\n yield ioUtil.rm(inputPath, {\n force: true,\n maxRetries: 3,\n recursive: true,\n retryDelay: 300\n });\n }\n catch (err) {\n throw new Error(`File was unable to be removed ${err}`);\n }\n });\n}\nexports.rmRF = rmRF;\n/**\n * Make a directory. Creates the full path with folders in between\n * Will throw if it fails\n *\n * @param fsPath path to create\n * @returns Promise\n */\nfunction mkdirP(fsPath) {\n return __awaiter(this, void 0, void 0, function* () {\n assert_1.ok(fsPath, 'a path argument must be provided');\n yield ioUtil.mkdir(fsPath, { recursive: true });\n });\n}\nexports.mkdirP = mkdirP;\n/**\n * Returns path of a tool had the tool actually been invoked. Resolves via paths.\n * If you check and the tool does not exist, it will throw.\n *\n * @param tool name of the tool\n * @param check whether to check if tool exists\n * @returns Promise path to tool\n */\nfunction which(tool, check) {\n return __awaiter(this, void 0, void 0, function* () {\n if (!tool) {\n throw new Error(\"parameter 'tool' is required\");\n }\n // recursive when check=true\n if (check) {\n const result = yield which(tool, false);\n if (!result) {\n if (ioUtil.IS_WINDOWS) {\n throw new Error(`Unable to locate executable file: ${tool}. Please verify either the file path exists or the file can be found within a directory specified by the PATH environment variable. Also verify the file has a valid extension for an executable file.`);\n }\n else {\n throw new Error(`Unable to locate executable file: ${tool}. Please verify either the file path exists or the file can be found within a directory specified by the PATH environment variable. Also check the file mode to verify the file is executable.`);\n }\n }\n return result;\n }\n const matches = yield findInPath(tool);\n if (matches && matches.length > 0) {\n return matches[0];\n }\n return '';\n });\n}\nexports.which = which;\n/**\n * Returns a list of all occurrences of the given tool on the system path.\n *\n * @returns Promise the paths of the tool\n */\nfunction findInPath(tool) {\n return __awaiter(this, void 0, void 0, function* () {\n if (!tool) {\n throw new Error(\"parameter 'tool' is required\");\n }\n // build the list of extensions to try\n const extensions = [];\n if (ioUtil.IS_WINDOWS && process.env['PATHEXT']) {\n for (const extension of process.env['PATHEXT'].split(path.delimiter)) {\n if (extension) {\n extensions.push(extension);\n }\n }\n }\n // if it's rooted, return it if exists. otherwise return empty.\n if (ioUtil.isRooted(tool)) {\n const filePath = yield ioUtil.tryGetExecutablePath(tool, extensions);\n if (filePath) {\n return [filePath];\n }\n return [];\n }\n // if any path separators, return empty\n if (tool.includes(path.sep)) {\n return [];\n }\n // build the list of directories\n //\n // Note, technically \"where\" checks the current directory on Windows. From a toolkit perspective,\n // it feels like we should not do this. Checking the current directory seems like more of a use\n // case of a shell, and the which() function exposed by the toolkit should strive for consistency\n // across platforms.\n const directories = [];\n if (process.env.PATH) {\n for (const p of process.env.PATH.split(path.delimiter)) {\n if (p) {\n directories.push(p);\n }\n }\n }\n // find all matches\n const matches = [];\n for (const directory of directories) {\n const filePath = yield ioUtil.tryGetExecutablePath(path.join(directory, tool), extensions);\n if (filePath) {\n matches.push(filePath);\n }\n }\n return matches;\n });\n}\nexports.findInPath = findInPath;\nfunction readCopyOptions(options) {\n const force = options.force == null ? true : options.force;\n const recursive = Boolean(options.recursive);\n const copySourceDirectory = options.copySourceDirectory == null\n ? true\n : Boolean(options.copySourceDirectory);\n return { force, recursive, copySourceDirectory };\n}\nfunction cpDirRecursive(sourceDir, destDir, currentDepth, force) {\n return __awaiter(this, void 0, void 0, function* () {\n // Ensure there is not a run away recursive copy\n if (currentDepth >= 255)\n return;\n currentDepth++;\n yield mkdirP(destDir);\n const files = yield ioUtil.readdir(sourceDir);\n for (const fileName of files) {\n const srcFile = `${sourceDir}/${fileName}`;\n const destFile = `${destDir}/${fileName}`;\n const srcFileStat = yield ioUtil.lstat(srcFile);\n if (srcFileStat.isDirectory()) {\n // Recurse\n yield cpDirRecursive(srcFile, destFile, currentDepth, force);\n }\n else {\n yield copyFile(srcFile, destFile, force);\n }\n }\n // Change the mode for the newly created directory\n yield ioUtil.chmod(destDir, (yield ioUtil.stat(sourceDir)).mode);\n });\n}\n// Buffered file copy\nfunction copyFile(srcFile, destFile, force) {\n return __awaiter(this, void 0, void 0, function* () {\n if ((yield ioUtil.lstat(srcFile)).isSymbolicLink()) {\n // unlink/re-link it\n try {\n yield ioUtil.lstat(destFile);\n yield ioUtil.unlink(destFile);\n }\n catch (e) {\n // Try to override file permission\n if (e.code === 'EPERM') {\n yield ioUtil.chmod(destFile, '0666');\n yield ioUtil.unlink(destFile);\n }\n // other errors = it doesn't exist, no work to do\n }\n // Copy over symlink\n const symlinkFull = yield ioUtil.readlink(srcFile);\n yield ioUtil.symlink(symlinkFull, destFile, ioUtil.IS_WINDOWS ? 'junction' : null);\n }\n else if (!(yield ioUtil.exists(destFile)) || force) {\n yield ioUtil.copyFile(srcFile, destFile);\n }\n });\n}\n//# sourceMappingURL=io.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.argStringToArray = exports.ToolRunner = void 0;\nconst os = __importStar(require(\"os\"));\nconst events = __importStar(require(\"events\"));\nconst child = __importStar(require(\"child_process\"));\nconst path = __importStar(require(\"path\"));\nconst io = __importStar(require(\"@actions/io\"));\nconst ioUtil = __importStar(require(\"@actions/io/lib/io-util\"));\nconst timers_1 = require(\"timers\");\n/* eslint-disable @typescript-eslint/unbound-method */\nconst IS_WINDOWS = process.platform === 'win32';\n/*\n * Class for running command line tools. Handles quoting and arg parsing in a platform agnostic way.\n */\nclass ToolRunner extends events.EventEmitter {\n constructor(toolPath, args, options) {\n super();\n if (!toolPath) {\n throw new Error(\"Parameter 'toolPath' cannot be null or empty.\");\n }\n this.toolPath = toolPath;\n this.args = args || [];\n this.options = options || {};\n }\n _debug(message) {\n if (this.options.listeners && this.options.listeners.debug) {\n this.options.listeners.debug(message);\n }\n }\n _getCommandString(options, noPrefix) {\n const toolPath = this._getSpawnFileName();\n const args = this._getSpawnArgs(options);\n let cmd = noPrefix ? '' : '[command]'; // omit prefix when piped to a second tool\n if (IS_WINDOWS) {\n // Windows + cmd file\n if (this._isCmdFile()) {\n cmd += toolPath;\n for (const a of args) {\n cmd += ` ${a}`;\n }\n }\n // Windows + verbatim\n else if (options.windowsVerbatimArguments) {\n cmd += `\"${toolPath}\"`;\n for (const a of args) {\n cmd += ` ${a}`;\n }\n }\n // Windows (regular)\n else {\n cmd += this._windowsQuoteCmdArg(toolPath);\n for (const a of args) {\n cmd += ` ${this._windowsQuoteCmdArg(a)}`;\n }\n }\n }\n else {\n // OSX/Linux - this can likely be improved with some form of quoting.\n // creating processes on Unix is fundamentally different than Windows.\n // on Unix, execvp() takes an arg array.\n cmd += toolPath;\n for (const a of args) {\n cmd += ` ${a}`;\n }\n }\n return cmd;\n }\n _processLineBuffer(data, strBuffer, onLine) {\n try {\n let s = strBuffer + data.toString();\n let n = s.indexOf(os.EOL);\n while (n > -1) {\n const line = s.substring(0, n);\n onLine(line);\n // the rest of the string ...\n s = s.substring(n + os.EOL.length);\n n = s.indexOf(os.EOL);\n }\n return s;\n }\n catch (err) {\n // streaming lines to console is best effort. Don't fail a build.\n this._debug(`error processing line. Failed with error ${err}`);\n return '';\n }\n }\n _getSpawnFileName() {\n if (IS_WINDOWS) {\n if (this._isCmdFile()) {\n return process.env['COMSPEC'] || 'cmd.exe';\n }\n }\n return this.toolPath;\n }\n _getSpawnArgs(options) {\n if (IS_WINDOWS) {\n if (this._isCmdFile()) {\n let argline = `/D /S /C \"${this._windowsQuoteCmdArg(this.toolPath)}`;\n for (const a of this.args) {\n argline += ' ';\n argline += options.windowsVerbatimArguments\n ? a\n : this._windowsQuoteCmdArg(a);\n }\n argline += '\"';\n return [argline];\n }\n }\n return this.args;\n }\n _endsWith(str, end) {\n return str.endsWith(end);\n }\n _isCmdFile() {\n const upperToolPath = this.toolPath.toUpperCase();\n return (this._endsWith(upperToolPath, '.CMD') ||\n this._endsWith(upperToolPath, '.BAT'));\n }\n _windowsQuoteCmdArg(arg) {\n // for .exe, apply the normal quoting rules that libuv applies\n if (!this._isCmdFile()) {\n return this._uvQuoteCmdArg(arg);\n }\n // otherwise apply quoting rules specific to the cmd.exe command line parser.\n // the libuv rules are generic and are not designed specifically for cmd.exe\n // command line parser.\n //\n // for a detailed description of the cmd.exe command line parser, refer to\n // http://stackoverflow.com/questions/4094699/how-does-the-windows-command-interpreter-cmd-exe-parse-scripts/7970912#7970912\n // need quotes for empty arg\n if (!arg) {\n return '\"\"';\n }\n // determine whether the arg needs to be quoted\n const cmdSpecialChars = [\n ' ',\n '\\t',\n '&',\n '(',\n ')',\n '[',\n ']',\n '{',\n '}',\n '^',\n '=',\n ';',\n '!',\n \"'\",\n '+',\n ',',\n '`',\n '~',\n '|',\n '<',\n '>',\n '\"'\n ];\n let needsQuotes = false;\n for (const char of arg) {\n if (cmdSpecialChars.some(x => x === char)) {\n needsQuotes = true;\n break;\n }\n }\n // short-circuit if quotes not needed\n if (!needsQuotes) {\n return arg;\n }\n // the following quoting rules are very similar to the rules that by libuv applies.\n //\n // 1) wrap the string in quotes\n //\n // 2) double-up quotes - i.e. \" => \"\"\n //\n // this is different from the libuv quoting rules. libuv replaces \" with \\\", which unfortunately\n // doesn't work well with a cmd.exe command line.\n //\n // note, replacing \" with \"\" also works well if the arg is passed to a downstream .NET console app.\n // for example, the command line:\n // foo.exe \"myarg:\"\"my val\"\"\"\n // is parsed by a .NET console app into an arg array:\n // [ \"myarg:\\\"my val\\\"\" ]\n // which is the same end result when applying libuv quoting rules. although the actual\n // command line from libuv quoting rules would look like:\n // foo.exe \"myarg:\\\"my val\\\"\"\n //\n // 3) double-up slashes that precede a quote,\n // e.g. hello \\world => \"hello \\world\"\n // hello\\\"world => \"hello\\\\\"\"world\"\n // hello\\\\\"world => \"hello\\\\\\\\\"\"world\"\n // hello world\\ => \"hello world\\\\\"\n //\n // technically this is not required for a cmd.exe command line, or the batch argument parser.\n // the reasons for including this as a .cmd quoting rule are:\n //\n // a) this is optimized for the scenario where the argument is passed from the .cmd file to an\n // external program. many programs (e.g. .NET console apps) rely on the slash-doubling rule.\n //\n // b) it's what we've been doing previously (by deferring to node default behavior) and we\n // haven't heard any complaints about that aspect.\n //\n // note, a weakness of the quoting rules chosen here, is that % is not escaped. in fact, % cannot be\n // escaped when used on the command line directly - even though within a .cmd file % can be escaped\n // by using %%.\n //\n // the saving grace is, on the command line, %var% is left as-is if var is not defined. this contrasts\n // the line parsing rules within a .cmd file, where if var is not defined it is replaced with nothing.\n //\n // one option that was explored was replacing % with ^% - i.e. %var% => ^%var^%. this hack would\n // often work, since it is unlikely that var^ would exist, and the ^ character is removed when the\n // variable is used. the problem, however, is that ^ is not removed when %* is used to pass the args\n // to an external program.\n //\n // an unexplored potential solution for the % escaping problem, is to create a wrapper .cmd file.\n // % can be escaped within a .cmd file.\n let reverse = '\"';\n let quoteHit = true;\n for (let i = arg.length; i > 0; i--) {\n // walk the string in reverse\n reverse += arg[i - 1];\n if (quoteHit && arg[i - 1] === '\\\\') {\n reverse += '\\\\'; // double the slash\n }\n else if (arg[i - 1] === '\"') {\n quoteHit = true;\n reverse += '\"'; // double the quote\n }\n else {\n quoteHit = false;\n }\n }\n reverse += '\"';\n return reverse\n .split('')\n .reverse()\n .join('');\n }\n _uvQuoteCmdArg(arg) {\n // Tool runner wraps child_process.spawn() and needs to apply the same quoting as\n // Node in certain cases where the undocumented spawn option windowsVerbatimArguments\n // is used.\n //\n // Since this function is a port of quote_cmd_arg from Node 4.x (technically, lib UV,\n // see https://github.com/nodejs/node/blob/v4.x/deps/uv/src/win/process.c for details),\n // pasting copyright notice from Node within this function:\n //\n // Copyright Joyent, Inc. and other Node contributors. All rights reserved.\n //\n // Permission is hereby granted, free of charge, to any person obtaining a copy\n // of this software and associated documentation files (the \"Software\"), to\n // deal in the Software without restriction, including without limitation the\n // rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n // sell copies of the Software, and to permit persons to whom the Software is\n // furnished to do so, subject to the following conditions:\n //\n // The above copyright notice and this permission notice shall be included in\n // all copies or substantial portions of the Software.\n //\n // THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n // FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n // IN THE SOFTWARE.\n if (!arg) {\n // Need double quotation for empty argument\n return '\"\"';\n }\n if (!arg.includes(' ') && !arg.includes('\\t') && !arg.includes('\"')) {\n // No quotation needed\n return arg;\n }\n if (!arg.includes('\"') && !arg.includes('\\\\')) {\n // No embedded double quotes or backslashes, so I can just wrap\n // quote marks around the whole thing.\n return `\"${arg}\"`;\n }\n // Expected input/output:\n // input : hello\"world\n // output: \"hello\\\"world\"\n // input : hello\"\"world\n // output: \"hello\\\"\\\"world\"\n // input : hello\\world\n // output: hello\\world\n // input : hello\\\\world\n // output: hello\\\\world\n // input : hello\\\"world\n // output: \"hello\\\\\\\"world\"\n // input : hello\\\\\"world\n // output: \"hello\\\\\\\\\\\"world\"\n // input : hello world\\\n // output: \"hello world\\\\\" - note the comment in libuv actually reads \"hello world\\\"\n // but it appears the comment is wrong, it should be \"hello world\\\\\"\n let reverse = '\"';\n let quoteHit = true;\n for (let i = arg.length; i > 0; i--) {\n // walk the string in reverse\n reverse += arg[i - 1];\n if (quoteHit && arg[i - 1] === '\\\\') {\n reverse += '\\\\';\n }\n else if (arg[i - 1] === '\"') {\n quoteHit = true;\n reverse += '\\\\';\n }\n else {\n quoteHit = false;\n }\n }\n reverse += '\"';\n return reverse\n .split('')\n .reverse()\n .join('');\n }\n _cloneExecOptions(options) {\n options = options || {};\n const result = {\n cwd: options.cwd || process.cwd(),\n env: options.env || process.env,\n silent: options.silent || false,\n windowsVerbatimArguments: options.windowsVerbatimArguments || false,\n failOnStdErr: options.failOnStdErr || false,\n ignoreReturnCode: options.ignoreReturnCode || false,\n delay: options.delay || 10000\n };\n result.outStream = options.outStream || process.stdout;\n result.errStream = options.errStream || process.stderr;\n return result;\n }\n _getSpawnOptions(options, toolPath) {\n options = options || {};\n const result = {};\n result.cwd = options.cwd;\n result.env = options.env;\n result['windowsVerbatimArguments'] =\n options.windowsVerbatimArguments || this._isCmdFile();\n if (options.windowsVerbatimArguments) {\n result.argv0 = `\"${toolPath}\"`;\n }\n return result;\n }\n /**\n * Exec a tool.\n * Output will be streamed to the live console.\n * Returns promise with return code\n *\n * @param tool path to tool to exec\n * @param options optional exec options. See ExecOptions\n * @returns number\n */\n exec() {\n return __awaiter(this, void 0, void 0, function* () {\n // root the tool path if it is unrooted and contains relative pathing\n if (!ioUtil.isRooted(this.toolPath) &&\n (this.toolPath.includes('/') ||\n (IS_WINDOWS && this.toolPath.includes('\\\\')))) {\n // prefer options.cwd if it is specified, however options.cwd may also need to be rooted\n this.toolPath = path.resolve(process.cwd(), this.options.cwd || process.cwd(), this.toolPath);\n }\n // if the tool is only a file name, then resolve it from the PATH\n // otherwise verify it exists (add extension on Windows if necessary)\n this.toolPath = yield io.which(this.toolPath, true);\n return new Promise((resolve, reject) => __awaiter(this, void 0, void 0, function* () {\n this._debug(`exec tool: ${this.toolPath}`);\n this._debug('arguments:');\n for (const arg of this.args) {\n this._debug(` ${arg}`);\n }\n const optionsNonNull = this._cloneExecOptions(this.options);\n if (!optionsNonNull.silent && optionsNonNull.outStream) {\n optionsNonNull.outStream.write(this._getCommandString(optionsNonNull) + os.EOL);\n }\n const state = new ExecState(optionsNonNull, this.toolPath);\n state.on('debug', (message) => {\n this._debug(message);\n });\n if (this.options.cwd && !(yield ioUtil.exists(this.options.cwd))) {\n return reject(new Error(`The cwd: ${this.options.cwd} does not exist!`));\n }\n const fileName = this._getSpawnFileName();\n const cp = child.spawn(fileName, this._getSpawnArgs(optionsNonNull), this._getSpawnOptions(this.options, fileName));\n let stdbuffer = '';\n if (cp.stdout) {\n cp.stdout.on('data', (data) => {\n if (this.options.listeners && this.options.listeners.stdout) {\n this.options.listeners.stdout(data);\n }\n if (!optionsNonNull.silent && optionsNonNull.outStream) {\n optionsNonNull.outStream.write(data);\n }\n stdbuffer = this._processLineBuffer(data, stdbuffer, (line) => {\n if (this.options.listeners && this.options.listeners.stdline) {\n this.options.listeners.stdline(line);\n }\n });\n });\n }\n let errbuffer = '';\n if (cp.stderr) {\n cp.stderr.on('data', (data) => {\n state.processStderr = true;\n if (this.options.listeners && this.options.listeners.stderr) {\n this.options.listeners.stderr(data);\n }\n if (!optionsNonNull.silent &&\n optionsNonNull.errStream &&\n optionsNonNull.outStream) {\n const s = optionsNonNull.failOnStdErr\n ? optionsNonNull.errStream\n : optionsNonNull.outStream;\n s.write(data);\n }\n errbuffer = this._processLineBuffer(data, errbuffer, (line) => {\n if (this.options.listeners && this.options.listeners.errline) {\n this.options.listeners.errline(line);\n }\n });\n });\n }\n cp.on('error', (err) => {\n state.processError = err.message;\n state.processExited = true;\n state.processClosed = true;\n state.CheckComplete();\n });\n cp.on('exit', (code) => {\n state.processExitCode = code;\n state.processExited = true;\n this._debug(`Exit code ${code} received from tool '${this.toolPath}'`);\n state.CheckComplete();\n });\n cp.on('close', (code) => {\n state.processExitCode = code;\n state.processExited = true;\n state.processClosed = true;\n this._debug(`STDIO streams have closed for tool '${this.toolPath}'`);\n state.CheckComplete();\n });\n state.on('done', (error, exitCode) => {\n if (stdbuffer.length > 0) {\n this.emit('stdline', stdbuffer);\n }\n if (errbuffer.length > 0) {\n this.emit('errline', errbuffer);\n }\n cp.removeAllListeners();\n if (error) {\n reject(error);\n }\n else {\n resolve(exitCode);\n }\n });\n if (this.options.input) {\n if (!cp.stdin) {\n throw new Error('child process missing stdin');\n }\n cp.stdin.end(this.options.input);\n }\n }));\n });\n }\n}\nexports.ToolRunner = ToolRunner;\n/**\n * Convert an arg string to an array of args. Handles escaping\n *\n * @param argString string of arguments\n * @returns string[] array of arguments\n */\nfunction argStringToArray(argString) {\n const args = [];\n let inQuotes = false;\n let escaped = false;\n let arg = '';\n function append(c) {\n // we only escape double quotes.\n if (escaped && c !== '\"') {\n arg += '\\\\';\n }\n arg += c;\n escaped = false;\n }\n for (let i = 0; i < argString.length; i++) {\n const c = argString.charAt(i);\n if (c === '\"') {\n if (!escaped) {\n inQuotes = !inQuotes;\n }\n else {\n append(c);\n }\n continue;\n }\n if (c === '\\\\' && escaped) {\n append(c);\n continue;\n }\n if (c === '\\\\' && inQuotes) {\n escaped = true;\n continue;\n }\n if (c === ' ' && !inQuotes) {\n if (arg.length > 0) {\n args.push(arg);\n arg = '';\n }\n continue;\n }\n append(c);\n }\n if (arg.length > 0) {\n args.push(arg.trim());\n }\n return args;\n}\nexports.argStringToArray = argStringToArray;\nclass ExecState extends events.EventEmitter {\n constructor(options, toolPath) {\n super();\n this.processClosed = false; // tracks whether the process has exited and stdio is closed\n this.processError = '';\n this.processExitCode = 0;\n this.processExited = false; // tracks whether the process has exited\n this.processStderr = false; // tracks whether stderr was written to\n this.delay = 10000; // 10 seconds\n this.done = false;\n this.timeout = null;\n if (!toolPath) {\n throw new Error('toolPath must not be empty');\n }\n this.options = options;\n this.toolPath = toolPath;\n if (options.delay) {\n this.delay = options.delay;\n }\n }\n CheckComplete() {\n if (this.done) {\n return;\n }\n if (this.processClosed) {\n this._setResult();\n }\n else if (this.processExited) {\n this.timeout = timers_1.setTimeout(ExecState.HandleTimeout, this.delay, this);\n }\n }\n _debug(message) {\n this.emit('debug', message);\n }\n _setResult() {\n // determine whether there is an error\n let error;\n if (this.processExited) {\n if (this.processError) {\n error = new Error(`There was an error when attempting to execute the process '${this.toolPath}'. This may indicate the process failed to start. Error: ${this.processError}`);\n }\n else if (this.processExitCode !== 0 && !this.options.ignoreReturnCode) {\n error = new Error(`The process '${this.toolPath}' failed with exit code ${this.processExitCode}`);\n }\n else if (this.processStderr && this.options.failOnStdErr) {\n error = new Error(`The process '${this.toolPath}' failed because one or more lines were written to the STDERR stream`);\n }\n }\n // clear the timeout\n if (this.timeout) {\n clearTimeout(this.timeout);\n this.timeout = null;\n }\n this.done = true;\n this.emit('done', error, this.processExitCode);\n }\n static HandleTimeout(state) {\n if (state.done) {\n return;\n }\n if (!state.processClosed && state.processExited) {\n const message = `The STDIO streams did not close within ${state.delay /\n 1000} seconds of the exit event from process '${state.toolPath}'. This may indicate a child process inherited the STDIO streams and has not yet exited.`;\n state._debug(message);\n }\n state._setResult();\n }\n}\n//# sourceMappingURL=toolrunner.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getExecOutput = exports.exec = void 0;\nconst string_decoder_1 = require(\"string_decoder\");\nconst tr = __importStar(require(\"./toolrunner\"));\n/**\n * Exec a command.\n * Output will be streamed to the live console.\n * Returns promise with return code\n *\n * @param commandLine command to execute (can include additional args). Must be correctly escaped.\n * @param args optional arguments for tool. Escaping is handled by the lib.\n * @param options optional exec options. See ExecOptions\n * @returns Promise exit code\n */\nfunction exec(commandLine, args, options) {\n return __awaiter(this, void 0, void 0, function* () {\n const commandArgs = tr.argStringToArray(commandLine);\n if (commandArgs.length === 0) {\n throw new Error(`Parameter 'commandLine' cannot be null or empty.`);\n }\n // Path to tool to execute should be first arg\n const toolPath = commandArgs[0];\n args = commandArgs.slice(1).concat(args || []);\n const runner = new tr.ToolRunner(toolPath, args, options);\n return runner.exec();\n });\n}\nexports.exec = exec;\n/**\n * Exec a command and get the output.\n * Output will be streamed to the live console.\n * Returns promise with the exit code and collected stdout and stderr\n *\n * @param commandLine command to execute (can include additional args). Must be correctly escaped.\n * @param args optional arguments for tool. Escaping is handled by the lib.\n * @param options optional exec options. See ExecOptions\n * @returns Promise exit code, stdout, and stderr\n */\nfunction getExecOutput(commandLine, args, options) {\n var _a, _b;\n return __awaiter(this, void 0, void 0, function* () {\n let stdout = '';\n let stderr = '';\n //Using string decoder covers the case where a mult-byte character is split\n const stdoutDecoder = new string_decoder_1.StringDecoder('utf8');\n const stderrDecoder = new string_decoder_1.StringDecoder('utf8');\n const originalStdoutListener = (_a = options === null || options === void 0 ? void 0 : options.listeners) === null || _a === void 0 ? void 0 : _a.stdout;\n const originalStdErrListener = (_b = options === null || options === void 0 ? void 0 : options.listeners) === null || _b === void 0 ? void 0 : _b.stderr;\n const stdErrListener = (data) => {\n stderr += stderrDecoder.write(data);\n if (originalStdErrListener) {\n originalStdErrListener(data);\n }\n };\n const stdOutListener = (data) => {\n stdout += stdoutDecoder.write(data);\n if (originalStdoutListener) {\n originalStdoutListener(data);\n }\n };\n const listeners = Object.assign(Object.assign({}, options === null || options === void 0 ? void 0 : options.listeners), { stdout: stdOutListener, stderr: stdErrListener });\n const exitCode = yield exec(commandLine, args, Object.assign(Object.assign({}, options), { listeners }));\n //flush any remaining characters\n stdout += stdoutDecoder.end();\n stderr += stderrDecoder.end();\n return {\n exitCode,\n stdout,\n stderr\n };\n });\n}\nexports.getExecOutput = getExecOutput;\n//# sourceMappingURL=exec.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getDetails = exports.isLinux = exports.isMacOS = exports.isWindows = exports.arch = exports.platform = void 0;\nconst os_1 = __importDefault(require(\"os\"));\nconst exec = __importStar(require(\"@actions/exec\"));\nconst getWindowsInfo = () => __awaiter(void 0, void 0, void 0, function* () {\n const { stdout: version } = yield exec.getExecOutput('powershell -command \"(Get-CimInstance -ClassName Win32_OperatingSystem).Version\"', undefined, {\n silent: true\n });\n const { stdout: name } = yield exec.getExecOutput('powershell -command \"(Get-CimInstance -ClassName Win32_OperatingSystem).Caption\"', undefined, {\n silent: true\n });\n return {\n name: name.trim(),\n version: version.trim()\n };\n});\nconst getMacOsInfo = () => __awaiter(void 0, void 0, void 0, function* () {\n var _a, _b, _c, _d;\n const { stdout } = yield exec.getExecOutput('sw_vers', undefined, {\n silent: true\n });\n const version = (_b = (_a = stdout.match(/ProductVersion:\\s*(.+)/)) === null || _a === void 0 ? void 0 : _a[1]) !== null && _b !== void 0 ? _b : '';\n const name = (_d = (_c = stdout.match(/ProductName:\\s*(.+)/)) === null || _c === void 0 ? void 0 : _c[1]) !== null && _d !== void 0 ? _d : '';\n return {\n name,\n version\n };\n});\nconst getLinuxInfo = () => __awaiter(void 0, void 0, void 0, function* () {\n const { stdout } = yield exec.getExecOutput('lsb_release', ['-i', '-r', '-s'], {\n silent: true\n });\n const [name, version] = stdout.trim().split('\\n');\n return {\n name,\n version\n };\n});\nexports.platform = os_1.default.platform();\nexports.arch = os_1.default.arch();\nexports.isWindows = exports.platform === 'win32';\nexports.isMacOS = exports.platform === 'darwin';\nexports.isLinux = exports.platform === 'linux';\nfunction getDetails() {\n return __awaiter(this, void 0, void 0, function* () {\n return Object.assign(Object.assign({}, (yield (exports.isWindows\n ? getWindowsInfo()\n : exports.isMacOS\n ? getMacOsInfo()\n : getLinuxInfo()))), { platform: exports.platform,\n arch: exports.arch,\n isWindows: exports.isWindows,\n isMacOS: exports.isMacOS,\n isLinux: exports.isLinux });\n });\n}\nexports.getDetails = getDetails;\n//# sourceMappingURL=platform.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.platform = exports.toPlatformPath = exports.toWin32Path = exports.toPosixPath = exports.markdownSummary = exports.summary = exports.getIDToken = exports.getState = exports.saveState = exports.group = exports.endGroup = exports.startGroup = exports.info = exports.notice = exports.warning = exports.error = exports.debug = exports.isDebug = exports.setFailed = exports.setCommandEcho = exports.setOutput = exports.getBooleanInput = exports.getMultilineInput = exports.getInput = exports.addPath = exports.setSecret = exports.exportVariable = exports.ExitCode = void 0;\nconst command_1 = require(\"./command\");\nconst file_command_1 = require(\"./file-command\");\nconst utils_1 = require(\"./utils\");\nconst os = __importStar(require(\"os\"));\nconst path = __importStar(require(\"path\"));\nconst oidc_utils_1 = require(\"./oidc-utils\");\n/**\n * The code to exit an action\n */\nvar ExitCode;\n(function (ExitCode) {\n /**\n * A code indicating that the action was successful\n */\n ExitCode[ExitCode[\"Success\"] = 0] = \"Success\";\n /**\n * A code indicating that the action was a failure\n */\n ExitCode[ExitCode[\"Failure\"] = 1] = \"Failure\";\n})(ExitCode || (exports.ExitCode = ExitCode = {}));\n//-----------------------------------------------------------------------\n// Variables\n//-----------------------------------------------------------------------\n/**\n * Sets env variable for this action and future actions in the job\n * @param name the name of the variable to set\n * @param val the value of the variable. Non-string values will be converted to a string via JSON.stringify\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction exportVariable(name, val) {\n const convertedVal = (0, utils_1.toCommandValue)(val);\n process.env[name] = convertedVal;\n const filePath = process.env['GITHUB_ENV'] || '';\n if (filePath) {\n return (0, file_command_1.issueFileCommand)('ENV', (0, file_command_1.prepareKeyValueMessage)(name, val));\n }\n (0, command_1.issueCommand)('set-env', { name }, convertedVal);\n}\nexports.exportVariable = exportVariable;\n/**\n * Registers a secret which will get masked from logs\n * @param secret value of the secret\n */\nfunction setSecret(secret) {\n (0, command_1.issueCommand)('add-mask', {}, secret);\n}\nexports.setSecret = setSecret;\n/**\n * Prepends inputPath to the PATH (for this action and future actions)\n * @param inputPath\n */\nfunction addPath(inputPath) {\n const filePath = process.env['GITHUB_PATH'] || '';\n if (filePath) {\n (0, file_command_1.issueFileCommand)('PATH', inputPath);\n }\n else {\n (0, command_1.issueCommand)('add-path', {}, inputPath);\n }\n process.env['PATH'] = `${inputPath}${path.delimiter}${process.env['PATH']}`;\n}\nexports.addPath = addPath;\n/**\n * Gets the value of an input.\n * Unless trimWhitespace is set to false in InputOptions, the value is also trimmed.\n * Returns an empty string if the value is not defined.\n *\n * @param name name of the input to get\n * @param options optional. See InputOptions.\n * @returns string\n */\nfunction getInput(name, options) {\n const val = process.env[`INPUT_${name.replace(/ /g, '_').toUpperCase()}`] || '';\n if (options && options.required && !val) {\n throw new Error(`Input required and not supplied: ${name}`);\n }\n if (options && options.trimWhitespace === false) {\n return val;\n }\n return val.trim();\n}\nexports.getInput = getInput;\n/**\n * Gets the values of an multiline input. Each value is also trimmed.\n *\n * @param name name of the input to get\n * @param options optional. See InputOptions.\n * @returns string[]\n *\n */\nfunction getMultilineInput(name, options) {\n const inputs = getInput(name, options)\n .split('\\n')\n .filter(x => x !== '');\n if (options && options.trimWhitespace === false) {\n return inputs;\n }\n return inputs.map(input => input.trim());\n}\nexports.getMultilineInput = getMultilineInput;\n/**\n * Gets the input value of the boolean type in the YAML 1.2 \"core schema\" specification.\n * Support boolean input list: `true | True | TRUE | false | False | FALSE` .\n * The return value is also in boolean type.\n * ref: https://yaml.org/spec/1.2/spec.html#id2804923\n *\n * @param name name of the input to get\n * @param options optional. See InputOptions.\n * @returns boolean\n */\nfunction getBooleanInput(name, options) {\n const trueValue = ['true', 'True', 'TRUE'];\n const falseValue = ['false', 'False', 'FALSE'];\n const val = getInput(name, options);\n if (trueValue.includes(val))\n return true;\n if (falseValue.includes(val))\n return false;\n throw new TypeError(`Input does not meet YAML 1.2 \"Core Schema\" specification: ${name}\\n` +\n `Support boolean input list: \\`true | True | TRUE | false | False | FALSE\\``);\n}\nexports.getBooleanInput = getBooleanInput;\n/**\n * Sets the value of an output.\n *\n * @param name name of the output to set\n * @param value value to store. Non-string values will be converted to a string via JSON.stringify\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction setOutput(name, value) {\n const filePath = process.env['GITHUB_OUTPUT'] || '';\n if (filePath) {\n return (0, file_command_1.issueFileCommand)('OUTPUT', (0, file_command_1.prepareKeyValueMessage)(name, value));\n }\n process.stdout.write(os.EOL);\n (0, command_1.issueCommand)('set-output', { name }, (0, utils_1.toCommandValue)(value));\n}\nexports.setOutput = setOutput;\n/**\n * Enables or disables the echoing of commands into stdout for the rest of the step.\n * Echoing is disabled by default if ACTIONS_STEP_DEBUG is not set.\n *\n */\nfunction setCommandEcho(enabled) {\n (0, command_1.issue)('echo', enabled ? 'on' : 'off');\n}\nexports.setCommandEcho = setCommandEcho;\n//-----------------------------------------------------------------------\n// Results\n//-----------------------------------------------------------------------\n/**\n * Sets the action status to failed.\n * When the action exits it will be with an exit code of 1\n * @param message add error issue message\n */\nfunction setFailed(message) {\n process.exitCode = ExitCode.Failure;\n error(message);\n}\nexports.setFailed = setFailed;\n//-----------------------------------------------------------------------\n// Logging Commands\n//-----------------------------------------------------------------------\n/**\n * Gets whether Actions Step Debug is on or not\n */\nfunction isDebug() {\n return process.env['RUNNER_DEBUG'] === '1';\n}\nexports.isDebug = isDebug;\n/**\n * Writes debug message to user log\n * @param message debug message\n */\nfunction debug(message) {\n (0, command_1.issueCommand)('debug', {}, message);\n}\nexports.debug = debug;\n/**\n * Adds an error issue\n * @param message error issue message. Errors will be converted to string via toString()\n * @param properties optional properties to add to the annotation.\n */\nfunction error(message, properties = {}) {\n (0, command_1.issueCommand)('error', (0, utils_1.toCommandProperties)(properties), message instanceof Error ? message.toString() : message);\n}\nexports.error = error;\n/**\n * Adds a warning issue\n * @param message warning issue message. Errors will be converted to string via toString()\n * @param properties optional properties to add to the annotation.\n */\nfunction warning(message, properties = {}) {\n (0, command_1.issueCommand)('warning', (0, utils_1.toCommandProperties)(properties), message instanceof Error ? message.toString() : message);\n}\nexports.warning = warning;\n/**\n * Adds a notice issue\n * @param message notice issue message. Errors will be converted to string via toString()\n * @param properties optional properties to add to the annotation.\n */\nfunction notice(message, properties = {}) {\n (0, command_1.issueCommand)('notice', (0, utils_1.toCommandProperties)(properties), message instanceof Error ? message.toString() : message);\n}\nexports.notice = notice;\n/**\n * Writes info to log with console.log.\n * @param message info message\n */\nfunction info(message) {\n process.stdout.write(message + os.EOL);\n}\nexports.info = info;\n/**\n * Begin an output group.\n *\n * Output until the next `groupEnd` will be foldable in this group\n *\n * @param name The name of the output group\n */\nfunction startGroup(name) {\n (0, command_1.issue)('group', name);\n}\nexports.startGroup = startGroup;\n/**\n * End an output group.\n */\nfunction endGroup() {\n (0, command_1.issue)('endgroup');\n}\nexports.endGroup = endGroup;\n/**\n * Wrap an asynchronous function call in a group.\n *\n * Returns the same type as the function itself.\n *\n * @param name The name of the group\n * @param fn The function to wrap in the group\n */\nfunction group(name, fn) {\n return __awaiter(this, void 0, void 0, function* () {\n startGroup(name);\n let result;\n try {\n result = yield fn();\n }\n finally {\n endGroup();\n }\n return result;\n });\n}\nexports.group = group;\n//-----------------------------------------------------------------------\n// Wrapper action state\n//-----------------------------------------------------------------------\n/**\n * Saves state for current action, the state can only be retrieved by this action's post job execution.\n *\n * @param name name of the state to store\n * @param value value to store. Non-string values will be converted to a string via JSON.stringify\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction saveState(name, value) {\n const filePath = process.env['GITHUB_STATE'] || '';\n if (filePath) {\n return (0, file_command_1.issueFileCommand)('STATE', (0, file_command_1.prepareKeyValueMessage)(name, value));\n }\n (0, command_1.issueCommand)('save-state', { name }, (0, utils_1.toCommandValue)(value));\n}\nexports.saveState = saveState;\n/**\n * Gets the value of an state set by this action's main execution.\n *\n * @param name name of the state to get\n * @returns string\n */\nfunction getState(name) {\n return process.env[`STATE_${name}`] || '';\n}\nexports.getState = getState;\nfunction getIDToken(aud) {\n return __awaiter(this, void 0, void 0, function* () {\n return yield oidc_utils_1.OidcClient.getIDToken(aud);\n });\n}\nexports.getIDToken = getIDToken;\n/**\n * Summary exports\n */\nvar summary_1 = require(\"./summary\");\nObject.defineProperty(exports, \"summary\", { enumerable: true, get: function () { return summary_1.summary; } });\n/**\n * @deprecated use core.summary\n */\nvar summary_2 = require(\"./summary\");\nObject.defineProperty(exports, \"markdownSummary\", { enumerable: true, get: function () { return summary_2.markdownSummary; } });\n/**\n * Path exports\n */\nvar path_utils_1 = require(\"./path-utils\");\nObject.defineProperty(exports, \"toPosixPath\", { enumerable: true, get: function () { return path_utils_1.toPosixPath; } });\nObject.defineProperty(exports, \"toWin32Path\", { enumerable: true, get: function () { return path_utils_1.toWin32Path; } });\nObject.defineProperty(exports, \"toPlatformPath\", { enumerable: true, get: function () { return path_utils_1.toPlatformPath; } });\n/**\n * Platform utilities exports\n */\nexports.platform = __importStar(require(\"./platform\"));\n//# sourceMappingURL=core.js.map","'use strict';\n\nconst ALIAS = Symbol.for('yaml.alias');\nconst DOC = Symbol.for('yaml.document');\nconst MAP = Symbol.for('yaml.map');\nconst PAIR = Symbol.for('yaml.pair');\nconst SCALAR = Symbol.for('yaml.scalar');\nconst SEQ = Symbol.for('yaml.seq');\nconst NODE_TYPE = Symbol.for('yaml.node.type');\nconst isAlias = (node) => !!node && typeof node === 'object' && node[NODE_TYPE] === ALIAS;\nconst isDocument = (node) => !!node && typeof node === 'object' && node[NODE_TYPE] === DOC;\nconst isMap = (node) => !!node && typeof node === 'object' && node[NODE_TYPE] === MAP;\nconst isPair = (node) => !!node && typeof node === 'object' && node[NODE_TYPE] === PAIR;\nconst isScalar = (node) => !!node && typeof node === 'object' && node[NODE_TYPE] === SCALAR;\nconst isSeq = (node) => !!node && typeof node === 'object' && node[NODE_TYPE] === SEQ;\nfunction isCollection(node) {\n if (node && typeof node === 'object')\n switch (node[NODE_TYPE]) {\n case MAP:\n case SEQ:\n return true;\n }\n return false;\n}\nfunction isNode(node) {\n if (node && typeof node === 'object')\n switch (node[NODE_TYPE]) {\n case ALIAS:\n case MAP:\n case SCALAR:\n case SEQ:\n return true;\n }\n return false;\n}\nconst hasAnchor = (node) => (isScalar(node) || isCollection(node)) && !!node.anchor;\n\nexports.ALIAS = ALIAS;\nexports.DOC = DOC;\nexports.MAP = MAP;\nexports.NODE_TYPE = NODE_TYPE;\nexports.PAIR = PAIR;\nexports.SCALAR = SCALAR;\nexports.SEQ = SEQ;\nexports.hasAnchor = hasAnchor;\nexports.isAlias = isAlias;\nexports.isCollection = isCollection;\nexports.isDocument = isDocument;\nexports.isMap = isMap;\nexports.isNode = isNode;\nexports.isPair = isPair;\nexports.isScalar = isScalar;\nexports.isSeq = isSeq;\n","'use strict';\n\nvar identity = require('./nodes/identity.js');\n\nconst BREAK = Symbol('break visit');\nconst SKIP = Symbol('skip children');\nconst REMOVE = Symbol('remove node');\n/**\n * Apply a visitor to an AST node or document.\n *\n * Walks through the tree (depth-first) starting from `node`, calling a\n * `visitor` function with three arguments:\n * - `key`: For sequence values and map `Pair`, the node's index in the\n * collection. Within a `Pair`, `'key'` or `'value'`, correspondingly.\n * `null` for the root node.\n * - `node`: The current node.\n * - `path`: The ancestry of the current node.\n *\n * The return value of the visitor may be used to control the traversal:\n * - `undefined` (default): Do nothing and continue\n * - `visit.SKIP`: Do not visit the children of this node, continue with next\n * sibling\n * - `visit.BREAK`: Terminate traversal completely\n * - `visit.REMOVE`: Remove the current node, then continue with the next one\n * - `Node`: Replace the current node, then continue by visiting it\n * - `number`: While iterating the items of a sequence or map, set the index\n * of the next step. This is useful especially if the index of the current\n * node has changed.\n *\n * If `visitor` is a single function, it will be called with all values\n * encountered in the tree, including e.g. `null` values. Alternatively,\n * separate visitor functions may be defined for each `Map`, `Pair`, `Seq`,\n * `Alias` and `Scalar` node. To define the same visitor function for more than\n * one node type, use the `Collection` (map and seq), `Value` (map, seq & scalar)\n * and `Node` (alias, map, seq & scalar) targets. Of all these, only the most\n * specific defined one will be used for each node.\n */\nfunction visit(node, visitor) {\n const visitor_ = initVisitor(visitor);\n if (identity.isDocument(node)) {\n const cd = visit_(null, node.contents, visitor_, Object.freeze([node]));\n if (cd === REMOVE)\n node.contents = null;\n }\n else\n visit_(null, node, visitor_, Object.freeze([]));\n}\n// Without the `as symbol` casts, TS declares these in the `visit`\n// namespace using `var`, but then complains about that because\n// `unique symbol` must be `const`.\n/** Terminate visit traversal completely */\nvisit.BREAK = BREAK;\n/** Do not visit the children of the current node */\nvisit.SKIP = SKIP;\n/** Remove the current node */\nvisit.REMOVE = REMOVE;\nfunction visit_(key, node, visitor, path) {\n const ctrl = callVisitor(key, node, visitor, path);\n if (identity.isNode(ctrl) || identity.isPair(ctrl)) {\n replaceNode(key, path, ctrl);\n return visit_(key, ctrl, visitor, path);\n }\n if (typeof ctrl !== 'symbol') {\n if (identity.isCollection(node)) {\n path = Object.freeze(path.concat(node));\n for (let i = 0; i < node.items.length; ++i) {\n const ci = visit_(i, node.items[i], visitor, path);\n if (typeof ci === 'number')\n i = ci - 1;\n else if (ci === BREAK)\n return BREAK;\n else if (ci === REMOVE) {\n node.items.splice(i, 1);\n i -= 1;\n }\n }\n }\n else if (identity.isPair(node)) {\n path = Object.freeze(path.concat(node));\n const ck = visit_('key', node.key, visitor, path);\n if (ck === BREAK)\n return BREAK;\n else if (ck === REMOVE)\n node.key = null;\n const cv = visit_('value', node.value, visitor, path);\n if (cv === BREAK)\n return BREAK;\n else if (cv === REMOVE)\n node.value = null;\n }\n }\n return ctrl;\n}\n/**\n * Apply an async visitor to an AST node or document.\n *\n * Walks through the tree (depth-first) starting from `node`, calling a\n * `visitor` function with three arguments:\n * - `key`: For sequence values and map `Pair`, the node's index in the\n * collection. Within a `Pair`, `'key'` or `'value'`, correspondingly.\n * `null` for the root node.\n * - `node`: The current node.\n * - `path`: The ancestry of the current node.\n *\n * The return value of the visitor may be used to control the traversal:\n * - `Promise`: Must resolve to one of the following values\n * - `undefined` (default): Do nothing and continue\n * - `visit.SKIP`: Do not visit the children of this node, continue with next\n * sibling\n * - `visit.BREAK`: Terminate traversal completely\n * - `visit.REMOVE`: Remove the current node, then continue with the next one\n * - `Node`: Replace the current node, then continue by visiting it\n * - `number`: While iterating the items of a sequence or map, set the index\n * of the next step. This is useful especially if the index of the current\n * node has changed.\n *\n * If `visitor` is a single function, it will be called with all values\n * encountered in the tree, including e.g. `null` values. Alternatively,\n * separate visitor functions may be defined for each `Map`, `Pair`, `Seq`,\n * `Alias` and `Scalar` node. To define the same visitor function for more than\n * one node type, use the `Collection` (map and seq), `Value` (map, seq & scalar)\n * and `Node` (alias, map, seq & scalar) targets. Of all these, only the most\n * specific defined one will be used for each node.\n */\nasync function visitAsync(node, visitor) {\n const visitor_ = initVisitor(visitor);\n if (identity.isDocument(node)) {\n const cd = await visitAsync_(null, node.contents, visitor_, Object.freeze([node]));\n if (cd === REMOVE)\n node.contents = null;\n }\n else\n await visitAsync_(null, node, visitor_, Object.freeze([]));\n}\n// Without the `as symbol` casts, TS declares these in the `visit`\n// namespace using `var`, but then complains about that because\n// `unique symbol` must be `const`.\n/** Terminate visit traversal completely */\nvisitAsync.BREAK = BREAK;\n/** Do not visit the children of the current node */\nvisitAsync.SKIP = SKIP;\n/** Remove the current node */\nvisitAsync.REMOVE = REMOVE;\nasync function visitAsync_(key, node, visitor, path) {\n const ctrl = await callVisitor(key, node, visitor, path);\n if (identity.isNode(ctrl) || identity.isPair(ctrl)) {\n replaceNode(key, path, ctrl);\n return visitAsync_(key, ctrl, visitor, path);\n }\n if (typeof ctrl !== 'symbol') {\n if (identity.isCollection(node)) {\n path = Object.freeze(path.concat(node));\n for (let i = 0; i < node.items.length; ++i) {\n const ci = await visitAsync_(i, node.items[i], visitor, path);\n if (typeof ci === 'number')\n i = ci - 1;\n else if (ci === BREAK)\n return BREAK;\n else if (ci === REMOVE) {\n node.items.splice(i, 1);\n i -= 1;\n }\n }\n }\n else if (identity.isPair(node)) {\n path = Object.freeze(path.concat(node));\n const ck = await visitAsync_('key', node.key, visitor, path);\n if (ck === BREAK)\n return BREAK;\n else if (ck === REMOVE)\n node.key = null;\n const cv = await visitAsync_('value', node.value, visitor, path);\n if (cv === BREAK)\n return BREAK;\n else if (cv === REMOVE)\n node.value = null;\n }\n }\n return ctrl;\n}\nfunction initVisitor(visitor) {\n if (typeof visitor === 'object' &&\n (visitor.Collection || visitor.Node || visitor.Value)) {\n return Object.assign({\n Alias: visitor.Node,\n Map: visitor.Node,\n Scalar: visitor.Node,\n Seq: visitor.Node\n }, visitor.Value && {\n Map: visitor.Value,\n Scalar: visitor.Value,\n Seq: visitor.Value\n }, visitor.Collection && {\n Map: visitor.Collection,\n Seq: visitor.Collection\n }, visitor);\n }\n return visitor;\n}\nfunction callVisitor(key, node, visitor, path) {\n if (typeof visitor === 'function')\n return visitor(key, node, path);\n if (identity.isMap(node))\n return visitor.Map?.(key, node, path);\n if (identity.isSeq(node))\n return visitor.Seq?.(key, node, path);\n if (identity.isPair(node))\n return visitor.Pair?.(key, node, path);\n if (identity.isScalar(node))\n return visitor.Scalar?.(key, node, path);\n if (identity.isAlias(node))\n return visitor.Alias?.(key, node, path);\n return undefined;\n}\nfunction replaceNode(key, path, node) {\n const parent = path[path.length - 1];\n if (identity.isCollection(parent)) {\n parent.items[key] = node;\n }\n else if (identity.isPair(parent)) {\n if (key === 'key')\n parent.key = node;\n else\n parent.value = node;\n }\n else if (identity.isDocument(parent)) {\n parent.contents = node;\n }\n else {\n const pt = identity.isAlias(parent) ? 'alias' : 'scalar';\n throw new Error(`Cannot replace node with ${pt} parent`);\n }\n}\n\nexports.visit = visit;\nexports.visitAsync = visitAsync;\n","'use strict';\n\nvar identity = require('../nodes/identity.js');\nvar visit = require('../visit.js');\n\nconst escapeChars = {\n '!': '%21',\n ',': '%2C',\n '[': '%5B',\n ']': '%5D',\n '{': '%7B',\n '}': '%7D'\n};\nconst escapeTagName = (tn) => tn.replace(/[!,[\\]{}]/g, ch => escapeChars[ch]);\nclass Directives {\n constructor(yaml, tags) {\n /**\n * The directives-end/doc-start marker `---`. If `null`, a marker may still be\n * included in the document's stringified representation.\n */\n this.docStart = null;\n /** The doc-end marker `...`. */\n this.docEnd = false;\n this.yaml = Object.assign({}, Directives.defaultYaml, yaml);\n this.tags = Object.assign({}, Directives.defaultTags, tags);\n }\n clone() {\n const copy = new Directives(this.yaml, this.tags);\n copy.docStart = this.docStart;\n return copy;\n }\n /**\n * During parsing, get a Directives instance for the current document and\n * update the stream state according to the current version's spec.\n */\n atDocument() {\n const res = new Directives(this.yaml, this.tags);\n switch (this.yaml.version) {\n case '1.1':\n this.atNextDocument = true;\n break;\n case '1.2':\n this.atNextDocument = false;\n this.yaml = {\n explicit: Directives.defaultYaml.explicit,\n version: '1.2'\n };\n this.tags = Object.assign({}, Directives.defaultTags);\n break;\n }\n return res;\n }\n /**\n * @param onError - May be called even if the action was successful\n * @returns `true` on success\n */\n add(line, onError) {\n if (this.atNextDocument) {\n this.yaml = { explicit: Directives.defaultYaml.explicit, version: '1.1' };\n this.tags = Object.assign({}, Directives.defaultTags);\n this.atNextDocument = false;\n }\n const parts = line.trim().split(/[ \\t]+/);\n const name = parts.shift();\n switch (name) {\n case '%TAG': {\n if (parts.length !== 2) {\n onError(0, '%TAG directive should contain exactly two parts');\n if (parts.length < 2)\n return false;\n }\n const [handle, prefix] = parts;\n this.tags[handle] = prefix;\n return true;\n }\n case '%YAML': {\n this.yaml.explicit = true;\n if (parts.length !== 1) {\n onError(0, '%YAML directive should contain exactly one part');\n return false;\n }\n const [version] = parts;\n if (version === '1.1' || version === '1.2') {\n this.yaml.version = version;\n return true;\n }\n else {\n const isValid = /^\\d+\\.\\d+$/.test(version);\n onError(6, `Unsupported YAML version ${version}`, isValid);\n return false;\n }\n }\n default:\n onError(0, `Unknown directive ${name}`, true);\n return false;\n }\n }\n /**\n * Resolves a tag, matching handles to those defined in %TAG directives.\n *\n * @returns Resolved tag, which may also be the non-specific tag `'!'` or a\n * `'!local'` tag, or `null` if unresolvable.\n */\n tagName(source, onError) {\n if (source === '!')\n return '!'; // non-specific tag\n if (source[0] !== '!') {\n onError(`Not a valid tag: ${source}`);\n return null;\n }\n if (source[1] === '<') {\n const verbatim = source.slice(2, -1);\n if (verbatim === '!' || verbatim === '!!') {\n onError(`Verbatim tags aren't resolved, so ${source} is invalid.`);\n return null;\n }\n if (source[source.length - 1] !== '>')\n onError('Verbatim tags must end with a >');\n return verbatim;\n }\n const [, handle, suffix] = source.match(/^(.*!)([^!]*)$/s);\n if (!suffix)\n onError(`The ${source} tag has no suffix`);\n const prefix = this.tags[handle];\n if (prefix) {\n try {\n return prefix + decodeURIComponent(suffix);\n }\n catch (error) {\n onError(String(error));\n return null;\n }\n }\n if (handle === '!')\n return source; // local tag\n onError(`Could not resolve tag: ${source}`);\n return null;\n }\n /**\n * Given a fully resolved tag, returns its printable string form,\n * taking into account current tag prefixes and defaults.\n */\n tagString(tag) {\n for (const [handle, prefix] of Object.entries(this.tags)) {\n if (tag.startsWith(prefix))\n return handle + escapeTagName(tag.substring(prefix.length));\n }\n return tag[0] === '!' ? tag : `!<${tag}>`;\n }\n toString(doc) {\n const lines = this.yaml.explicit\n ? [`%YAML ${this.yaml.version || '1.2'}`]\n : [];\n const tagEntries = Object.entries(this.tags);\n let tagNames;\n if (doc && tagEntries.length > 0 && identity.isNode(doc.contents)) {\n const tags = {};\n visit.visit(doc.contents, (_key, node) => {\n if (identity.isNode(node) && node.tag)\n tags[node.tag] = true;\n });\n tagNames = Object.keys(tags);\n }\n else\n tagNames = [];\n for (const [handle, prefix] of tagEntries) {\n if (handle === '!!' && prefix === 'tag:yaml.org,2002:')\n continue;\n if (!doc || tagNames.some(tn => tn.startsWith(prefix)))\n lines.push(`%TAG ${handle} ${prefix}`);\n }\n return lines.join('\\n');\n }\n}\nDirectives.defaultYaml = { explicit: false, version: '1.2' };\nDirectives.defaultTags = { '!!': 'tag:yaml.org,2002:' };\n\nexports.Directives = Directives;\n","'use strict';\n\nvar identity = require('../nodes/identity.js');\nvar visit = require('../visit.js');\n\n/**\n * Verify that the input string is a valid anchor.\n *\n * Will throw on errors.\n */\nfunction anchorIsValid(anchor) {\n if (/[\\x00-\\x19\\s,[\\]{}]/.test(anchor)) {\n const sa = JSON.stringify(anchor);\n const msg = `Anchor must not contain whitespace or control characters: ${sa}`;\n throw new Error(msg);\n }\n return true;\n}\nfunction anchorNames(root) {\n const anchors = new Set();\n visit.visit(root, {\n Value(_key, node) {\n if (node.anchor)\n anchors.add(node.anchor);\n }\n });\n return anchors;\n}\n/** Find a new anchor name with the given `prefix` and a one-indexed suffix. */\nfunction findNewAnchor(prefix, exclude) {\n for (let i = 1; true; ++i) {\n const name = `${prefix}${i}`;\n if (!exclude.has(name))\n return name;\n }\n}\nfunction createNodeAnchors(doc, prefix) {\n const aliasObjects = [];\n const sourceObjects = new Map();\n let prevAnchors = null;\n return {\n onAnchor: (source) => {\n aliasObjects.push(source);\n prevAnchors ?? (prevAnchors = anchorNames(doc));\n const anchor = findNewAnchor(prefix, prevAnchors);\n prevAnchors.add(anchor);\n return anchor;\n },\n /**\n * With circular references, the source node is only resolved after all\n * of its child nodes are. This is why anchors are set only after all of\n * the nodes have been created.\n */\n setAnchors: () => {\n for (const source of aliasObjects) {\n const ref = sourceObjects.get(source);\n if (typeof ref === 'object' &&\n ref.anchor &&\n (identity.isScalar(ref.node) || identity.isCollection(ref.node))) {\n ref.node.anchor = ref.anchor;\n }\n else {\n const error = new Error('Failed to resolve repeated object (this should not happen)');\n error.source = source;\n throw error;\n }\n }\n },\n sourceObjects\n };\n}\n\nexports.anchorIsValid = anchorIsValid;\nexports.anchorNames = anchorNames;\nexports.createNodeAnchors = createNodeAnchors;\nexports.findNewAnchor = findNewAnchor;\n","'use strict';\n\n/**\n * Applies the JSON.parse reviver algorithm as defined in the ECMA-262 spec,\n * in section 24.5.1.1 \"Runtime Semantics: InternalizeJSONProperty\" of the\n * 2021 edition: https://tc39.es/ecma262/#sec-json.parse\n *\n * Includes extensions for handling Map and Set objects.\n */\nfunction applyReviver(reviver, obj, key, val) {\n if (val && typeof val === 'object') {\n if (Array.isArray(val)) {\n for (let i = 0, len = val.length; i < len; ++i) {\n const v0 = val[i];\n const v1 = applyReviver(reviver, val, String(i), v0);\n // eslint-disable-next-line @typescript-eslint/no-array-delete\n if (v1 === undefined)\n delete val[i];\n else if (v1 !== v0)\n val[i] = v1;\n }\n }\n else if (val instanceof Map) {\n for (const k of Array.from(val.keys())) {\n const v0 = val.get(k);\n const v1 = applyReviver(reviver, val, k, v0);\n if (v1 === undefined)\n val.delete(k);\n else if (v1 !== v0)\n val.set(k, v1);\n }\n }\n else if (val instanceof Set) {\n for (const v0 of Array.from(val)) {\n const v1 = applyReviver(reviver, val, v0, v0);\n if (v1 === undefined)\n val.delete(v0);\n else if (v1 !== v0) {\n val.delete(v0);\n val.add(v1);\n }\n }\n }\n else {\n for (const [k, v0] of Object.entries(val)) {\n const v1 = applyReviver(reviver, val, k, v0);\n if (v1 === undefined)\n delete val[k];\n else if (v1 !== v0)\n val[k] = v1;\n }\n }\n }\n return reviver.call(obj, key, val);\n}\n\nexports.applyReviver = applyReviver;\n","'use strict';\n\nvar identity = require('./identity.js');\n\n/**\n * Recursively convert any node or its contents to native JavaScript\n *\n * @param value - The input value\n * @param arg - If `value` defines a `toJSON()` method, use this\n * as its first argument\n * @param ctx - Conversion context, originally set in Document#toJS(). If\n * `{ keep: true }` is not set, output should be suitable for JSON\n * stringification.\n */\nfunction toJS(value, arg, ctx) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n if (Array.isArray(value))\n return value.map((v, i) => toJS(v, String(i), ctx));\n if (value && typeof value.toJSON === 'function') {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-call\n if (!ctx || !identity.hasAnchor(value))\n return value.toJSON(arg, ctx);\n const data = { aliasCount: 0, count: 1, res: undefined };\n ctx.anchors.set(value, data);\n ctx.onCreate = res => {\n data.res = res;\n delete ctx.onCreate;\n };\n const res = value.toJSON(arg, ctx);\n if (ctx.onCreate)\n ctx.onCreate(res);\n return res;\n }\n if (typeof value === 'bigint' && !ctx?.keep)\n return Number(value);\n return value;\n}\n\nexports.toJS = toJS;\n","'use strict';\n\nvar applyReviver = require('../doc/applyReviver.js');\nvar identity = require('./identity.js');\nvar toJS = require('./toJS.js');\n\nclass NodeBase {\n constructor(type) {\n Object.defineProperty(this, identity.NODE_TYPE, { value: type });\n }\n /** Create a copy of this node. */\n clone() {\n const copy = Object.create(Object.getPrototypeOf(this), Object.getOwnPropertyDescriptors(this));\n if (this.range)\n copy.range = this.range.slice();\n return copy;\n }\n /** A plain JavaScript representation of this node. */\n toJS(doc, { mapAsMap, maxAliasCount, onAnchor, reviver } = {}) {\n if (!identity.isDocument(doc))\n throw new TypeError('A document argument is required');\n const ctx = {\n anchors: new Map(),\n doc,\n keep: true,\n mapAsMap: mapAsMap === true,\n mapKeyWarned: false,\n maxAliasCount: typeof maxAliasCount === 'number' ? maxAliasCount : 100\n };\n const res = toJS.toJS(this, '', ctx);\n if (typeof onAnchor === 'function')\n for (const { count, res } of ctx.anchors.values())\n onAnchor(res, count);\n return typeof reviver === 'function'\n ? applyReviver.applyReviver(reviver, { '': res }, '', res)\n : res;\n }\n}\n\nexports.NodeBase = NodeBase;\n","'use strict';\n\nvar anchors = require('../doc/anchors.js');\nvar visit = require('../visit.js');\nvar identity = require('./identity.js');\nvar Node = require('./Node.js');\nvar toJS = require('./toJS.js');\n\nclass Alias extends Node.NodeBase {\n constructor(source) {\n super(identity.ALIAS);\n this.source = source;\n Object.defineProperty(this, 'tag', {\n set() {\n throw new Error('Alias nodes cannot have tags');\n }\n });\n }\n /**\n * Resolve the value of this alias within `doc`, finding the last\n * instance of the `source` anchor before this node.\n */\n resolve(doc, ctx) {\n let nodes;\n if (ctx?.aliasResolveCache) {\n nodes = ctx.aliasResolveCache;\n }\n else {\n nodes = [];\n visit.visit(doc, {\n Node: (_key, node) => {\n if (identity.isAlias(node) || identity.hasAnchor(node))\n nodes.push(node);\n }\n });\n if (ctx)\n ctx.aliasResolveCache = nodes;\n }\n let found = undefined;\n for (const node of nodes) {\n if (node === this)\n break;\n if (node.anchor === this.source)\n found = node;\n }\n return found;\n }\n toJSON(_arg, ctx) {\n if (!ctx)\n return { source: this.source };\n const { anchors, doc, maxAliasCount } = ctx;\n const source = this.resolve(doc, ctx);\n if (!source) {\n const msg = `Unresolved alias (the anchor must be set before the alias): ${this.source}`;\n throw new ReferenceError(msg);\n }\n let data = anchors.get(source);\n if (!data) {\n // Resolve anchors for Node.prototype.toJS()\n toJS.toJS(source, null, ctx);\n data = anchors.get(source);\n }\n /* istanbul ignore if */\n if (!data || data.res === undefined) {\n const msg = 'This should not happen: Alias anchor was not resolved?';\n throw new ReferenceError(msg);\n }\n if (maxAliasCount >= 0) {\n data.count += 1;\n if (data.aliasCount === 0)\n data.aliasCount = getAliasCount(doc, source, anchors);\n if (data.count * data.aliasCount > maxAliasCount) {\n const msg = 'Excessive alias count indicates a resource exhaustion attack';\n throw new ReferenceError(msg);\n }\n }\n return data.res;\n }\n toString(ctx, _onComment, _onChompKeep) {\n const src = `*${this.source}`;\n if (ctx) {\n anchors.anchorIsValid(this.source);\n if (ctx.options.verifyAliasOrder && !ctx.anchors.has(this.source)) {\n const msg = `Unresolved alias (the anchor must be set before the alias): ${this.source}`;\n throw new Error(msg);\n }\n if (ctx.implicitKey)\n return `${src} `;\n }\n return src;\n }\n}\nfunction getAliasCount(doc, node, anchors) {\n if (identity.isAlias(node)) {\n const source = node.resolve(doc);\n const anchor = anchors && source && anchors.get(source);\n return anchor ? anchor.count * anchor.aliasCount : 0;\n }\n else if (identity.isCollection(node)) {\n let count = 0;\n for (const item of node.items) {\n const c = getAliasCount(doc, item, anchors);\n if (c > count)\n count = c;\n }\n return count;\n }\n else if (identity.isPair(node)) {\n const kc = getAliasCount(doc, node.key, anchors);\n const vc = getAliasCount(doc, node.value, anchors);\n return Math.max(kc, vc);\n }\n return 1;\n}\n\nexports.Alias = Alias;\n","'use strict';\n\nvar identity = require('./identity.js');\nvar Node = require('./Node.js');\nvar toJS = require('./toJS.js');\n\nconst isScalarValue = (value) => !value || (typeof value !== 'function' && typeof value !== 'object');\nclass Scalar extends Node.NodeBase {\n constructor(value) {\n super(identity.SCALAR);\n this.value = value;\n }\n toJSON(arg, ctx) {\n return ctx?.keep ? this.value : toJS.toJS(this.value, arg, ctx);\n }\n toString() {\n return String(this.value);\n }\n}\nScalar.BLOCK_FOLDED = 'BLOCK_FOLDED';\nScalar.BLOCK_LITERAL = 'BLOCK_LITERAL';\nScalar.PLAIN = 'PLAIN';\nScalar.QUOTE_DOUBLE = 'QUOTE_DOUBLE';\nScalar.QUOTE_SINGLE = 'QUOTE_SINGLE';\n\nexports.Scalar = Scalar;\nexports.isScalarValue = isScalarValue;\n","'use strict';\n\nvar Alias = require('../nodes/Alias.js');\nvar identity = require('../nodes/identity.js');\nvar Scalar = require('../nodes/Scalar.js');\n\nconst defaultTagPrefix = 'tag:yaml.org,2002:';\nfunction findTagObject(value, tagName, tags) {\n if (tagName) {\n const match = tags.filter(t => t.tag === tagName);\n const tagObj = match.find(t => !t.format) ?? match[0];\n if (!tagObj)\n throw new Error(`Tag ${tagName} not found`);\n return tagObj;\n }\n return tags.find(t => t.identify?.(value) && !t.format);\n}\nfunction createNode(value, tagName, ctx) {\n if (identity.isDocument(value))\n value = value.contents;\n if (identity.isNode(value))\n return value;\n if (identity.isPair(value)) {\n const map = ctx.schema[identity.MAP].createNode?.(ctx.schema, null, ctx);\n map.items.push(value);\n return map;\n }\n if (value instanceof String ||\n value instanceof Number ||\n value instanceof Boolean ||\n (typeof BigInt !== 'undefined' && value instanceof BigInt) // not supported everywhere\n ) {\n // https://tc39.es/ecma262/#sec-serializejsonproperty\n value = value.valueOf();\n }\n const { aliasDuplicateObjects, onAnchor, onTagObj, schema, sourceObjects } = ctx;\n // Detect duplicate references to the same object & use Alias nodes for all\n // after first. The `ref` wrapper allows for circular references to resolve.\n let ref = undefined;\n if (aliasDuplicateObjects && value && typeof value === 'object') {\n ref = sourceObjects.get(value);\n if (ref) {\n ref.anchor ?? (ref.anchor = onAnchor(value));\n return new Alias.Alias(ref.anchor);\n }\n else {\n ref = { anchor: null, node: null };\n sourceObjects.set(value, ref);\n }\n }\n if (tagName?.startsWith('!!'))\n tagName = defaultTagPrefix + tagName.slice(2);\n let tagObj = findTagObject(value, tagName, schema.tags);\n if (!tagObj) {\n if (value && typeof value.toJSON === 'function') {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-call\n value = value.toJSON();\n }\n if (!value || typeof value !== 'object') {\n const node = new Scalar.Scalar(value);\n if (ref)\n ref.node = node;\n return node;\n }\n tagObj =\n value instanceof Map\n ? schema[identity.MAP]\n : Symbol.iterator in Object(value)\n ? schema[identity.SEQ]\n : schema[identity.MAP];\n }\n if (onTagObj) {\n onTagObj(tagObj);\n delete ctx.onTagObj;\n }\n const node = tagObj?.createNode\n ? tagObj.createNode(ctx.schema, value, ctx)\n : typeof tagObj?.nodeClass?.from === 'function'\n ? tagObj.nodeClass.from(ctx.schema, value, ctx)\n : new Scalar.Scalar(value);\n if (tagName)\n node.tag = tagName;\n else if (!tagObj.default)\n node.tag = tagObj.tag;\n if (ref)\n ref.node = node;\n return node;\n}\n\nexports.createNode = createNode;\n","'use strict';\n\nvar createNode = require('../doc/createNode.js');\nvar identity = require('./identity.js');\nvar Node = require('./Node.js');\n\nfunction collectionFromPath(schema, path, value) {\n let v = value;\n for (let i = path.length - 1; i >= 0; --i) {\n const k = path[i];\n if (typeof k === 'number' && Number.isInteger(k) && k >= 0) {\n const a = [];\n a[k] = v;\n v = a;\n }\n else {\n v = new Map([[k, v]]);\n }\n }\n return createNode.createNode(v, undefined, {\n aliasDuplicateObjects: false,\n keepUndefined: false,\n onAnchor: () => {\n throw new Error('This should not happen, please report a bug.');\n },\n schema,\n sourceObjects: new Map()\n });\n}\n// Type guard is intentionally a little wrong so as to be more useful,\n// as it does not cover untypable empty non-string iterables (e.g. []).\nconst isEmptyPath = (path) => path == null ||\n (typeof path === 'object' && !!path[Symbol.iterator]().next().done);\nclass Collection extends Node.NodeBase {\n constructor(type, schema) {\n super(type);\n Object.defineProperty(this, 'schema', {\n value: schema,\n configurable: true,\n enumerable: false,\n writable: true\n });\n }\n /**\n * Create a copy of this collection.\n *\n * @param schema - If defined, overwrites the original's schema\n */\n clone(schema) {\n const copy = Object.create(Object.getPrototypeOf(this), Object.getOwnPropertyDescriptors(this));\n if (schema)\n copy.schema = schema;\n copy.items = copy.items.map(it => identity.isNode(it) || identity.isPair(it) ? it.clone(schema) : it);\n if (this.range)\n copy.range = this.range.slice();\n return copy;\n }\n /**\n * Adds a value to the collection. For `!!map` and `!!omap` the value must\n * be a Pair instance or a `{ key, value }` object, which may not have a key\n * that already exists in the map.\n */\n addIn(path, value) {\n if (isEmptyPath(path))\n this.add(value);\n else {\n const [key, ...rest] = path;\n const node = this.get(key, true);\n if (identity.isCollection(node))\n node.addIn(rest, value);\n else if (node === undefined && this.schema)\n this.set(key, collectionFromPath(this.schema, rest, value));\n else\n throw new Error(`Expected YAML collection at ${key}. Remaining path: ${rest}`);\n }\n }\n /**\n * Removes a value from the collection.\n * @returns `true` if the item was found and removed.\n */\n deleteIn(path) {\n const [key, ...rest] = path;\n if (rest.length === 0)\n return this.delete(key);\n const node = this.get(key, true);\n if (identity.isCollection(node))\n return node.deleteIn(rest);\n else\n throw new Error(`Expected YAML collection at ${key}. Remaining path: ${rest}`);\n }\n /**\n * Returns item at `key`, or `undefined` if not found. By default unwraps\n * scalar values from their surrounding node; to disable set `keepScalar` to\n * `true` (collections are always returned intact).\n */\n getIn(path, keepScalar) {\n const [key, ...rest] = path;\n const node = this.get(key, true);\n if (rest.length === 0)\n return !keepScalar && identity.isScalar(node) ? node.value : node;\n else\n return identity.isCollection(node) ? node.getIn(rest, keepScalar) : undefined;\n }\n hasAllNullValues(allowScalar) {\n return this.items.every(node => {\n if (!identity.isPair(node))\n return false;\n const n = node.value;\n return (n == null ||\n (allowScalar &&\n identity.isScalar(n) &&\n n.value == null &&\n !n.commentBefore &&\n !n.comment &&\n !n.tag));\n });\n }\n /**\n * Checks if the collection includes a value with the key `key`.\n */\n hasIn(path) {\n const [key, ...rest] = path;\n if (rest.length === 0)\n return this.has(key);\n const node = this.get(key, true);\n return identity.isCollection(node) ? node.hasIn(rest) : false;\n }\n /**\n * Sets a value in this collection. For `!!set`, `value` needs to be a\n * boolean to add/remove the item from the set.\n */\n setIn(path, value) {\n const [key, ...rest] = path;\n if (rest.length === 0) {\n this.set(key, value);\n }\n else {\n const node = this.get(key, true);\n if (identity.isCollection(node))\n node.setIn(rest, value);\n else if (node === undefined && this.schema)\n this.set(key, collectionFromPath(this.schema, rest, value));\n else\n throw new Error(`Expected YAML collection at ${key}. Remaining path: ${rest}`);\n }\n }\n}\n\nexports.Collection = Collection;\nexports.collectionFromPath = collectionFromPath;\nexports.isEmptyPath = isEmptyPath;\n","'use strict';\n\n/**\n * Stringifies a comment.\n *\n * Empty comment lines are left empty,\n * lines consisting of a single space are replaced by `#`,\n * and all other lines are prefixed with a `#`.\n */\nconst stringifyComment = (str) => str.replace(/^(?!$)(?: $)?/gm, '#');\nfunction indentComment(comment, indent) {\n if (/^\\n+$/.test(comment))\n return comment.substring(1);\n return indent ? comment.replace(/^(?! *$)/gm, indent) : comment;\n}\nconst lineComment = (str, indent, comment) => str.endsWith('\\n')\n ? indentComment(comment, indent)\n : comment.includes('\\n')\n ? '\\n' + indentComment(comment, indent)\n : (str.endsWith(' ') ? '' : ' ') + comment;\n\nexports.indentComment = indentComment;\nexports.lineComment = lineComment;\nexports.stringifyComment = stringifyComment;\n","'use strict';\n\nconst FOLD_FLOW = 'flow';\nconst FOLD_BLOCK = 'block';\nconst FOLD_QUOTED = 'quoted';\n/**\n * Tries to keep input at up to `lineWidth` characters, splitting only on spaces\n * not followed by newlines or spaces unless `mode` is `'quoted'`. Lines are\n * terminated with `\\n` and started with `indent`.\n */\nfunction foldFlowLines(text, indent, mode = 'flow', { indentAtStart, lineWidth = 80, minContentWidth = 20, onFold, onOverflow } = {}) {\n if (!lineWidth || lineWidth < 0)\n return text;\n if (lineWidth < minContentWidth)\n minContentWidth = 0;\n const endStep = Math.max(1 + minContentWidth, 1 + lineWidth - indent.length);\n if (text.length <= endStep)\n return text;\n const folds = [];\n const escapedFolds = {};\n let end = lineWidth - indent.length;\n if (typeof indentAtStart === 'number') {\n if (indentAtStart > lineWidth - Math.max(2, minContentWidth))\n folds.push(0);\n else\n end = lineWidth - indentAtStart;\n }\n let split = undefined;\n let prev = undefined;\n let overflow = false;\n let i = -1;\n let escStart = -1;\n let escEnd = -1;\n if (mode === FOLD_BLOCK) {\n i = consumeMoreIndentedLines(text, i, indent.length);\n if (i !== -1)\n end = i + endStep;\n }\n for (let ch; (ch = text[(i += 1)]);) {\n if (mode === FOLD_QUOTED && ch === '\\\\') {\n escStart = i;\n switch (text[i + 1]) {\n case 'x':\n i += 3;\n break;\n case 'u':\n i += 5;\n break;\n case 'U':\n i += 9;\n break;\n default:\n i += 1;\n }\n escEnd = i;\n }\n if (ch === '\\n') {\n if (mode === FOLD_BLOCK)\n i = consumeMoreIndentedLines(text, i, indent.length);\n end = i + indent.length + endStep;\n split = undefined;\n }\n else {\n if (ch === ' ' &&\n prev &&\n prev !== ' ' &&\n prev !== '\\n' &&\n prev !== '\\t') {\n // space surrounded by non-space can be replaced with newline + indent\n const next = text[i + 1];\n if (next && next !== ' ' && next !== '\\n' && next !== '\\t')\n split = i;\n }\n if (i >= end) {\n if (split) {\n folds.push(split);\n end = split + endStep;\n split = undefined;\n }\n else if (mode === FOLD_QUOTED) {\n // white-space collected at end may stretch past lineWidth\n while (prev === ' ' || prev === '\\t') {\n prev = ch;\n ch = text[(i += 1)];\n overflow = true;\n }\n // Account for newline escape, but don't break preceding escape\n const j = i > escEnd + 1 ? i - 2 : escStart - 1;\n // Bail out if lineWidth & minContentWidth are shorter than an escape string\n if (escapedFolds[j])\n return text;\n folds.push(j);\n escapedFolds[j] = true;\n end = j + endStep;\n split = undefined;\n }\n else {\n overflow = true;\n }\n }\n }\n prev = ch;\n }\n if (overflow && onOverflow)\n onOverflow();\n if (folds.length === 0)\n return text;\n if (onFold)\n onFold();\n let res = text.slice(0, folds[0]);\n for (let i = 0; i < folds.length; ++i) {\n const fold = folds[i];\n const end = folds[i + 1] || text.length;\n if (fold === 0)\n res = `\\n${indent}${text.slice(0, end)}`;\n else {\n if (mode === FOLD_QUOTED && escapedFolds[fold])\n res += `${text[fold]}\\\\`;\n res += `\\n${indent}${text.slice(fold + 1, end)}`;\n }\n }\n return res;\n}\n/**\n * Presumes `i + 1` is at the start of a line\n * @returns index of last newline in more-indented block\n */\nfunction consumeMoreIndentedLines(text, i, indent) {\n let end = i;\n let start = i + 1;\n let ch = text[start];\n while (ch === ' ' || ch === '\\t') {\n if (i < start + indent) {\n ch = text[++i];\n }\n else {\n do {\n ch = text[++i];\n } while (ch && ch !== '\\n');\n end = i;\n start = i + 1;\n ch = text[start];\n }\n }\n return end;\n}\n\nexports.FOLD_BLOCK = FOLD_BLOCK;\nexports.FOLD_FLOW = FOLD_FLOW;\nexports.FOLD_QUOTED = FOLD_QUOTED;\nexports.foldFlowLines = foldFlowLines;\n","'use strict';\n\nvar Scalar = require('../nodes/Scalar.js');\nvar foldFlowLines = require('./foldFlowLines.js');\n\nconst getFoldOptions = (ctx, isBlock) => ({\n indentAtStart: isBlock ? ctx.indent.length : ctx.indentAtStart,\n lineWidth: ctx.options.lineWidth,\n minContentWidth: ctx.options.minContentWidth\n});\n// Also checks for lines starting with %, as parsing the output as YAML 1.1 will\n// presume that's starting a new document.\nconst containsDocumentMarker = (str) => /^(%|---|\\.\\.\\.)/m.test(str);\nfunction lineLengthOverLimit(str, lineWidth, indentLength) {\n if (!lineWidth || lineWidth < 0)\n return false;\n const limit = lineWidth - indentLength;\n const strLen = str.length;\n if (strLen <= limit)\n return false;\n for (let i = 0, start = 0; i < strLen; ++i) {\n if (str[i] === '\\n') {\n if (i - start > limit)\n return true;\n start = i + 1;\n if (strLen - start <= limit)\n return false;\n }\n }\n return true;\n}\nfunction doubleQuotedString(value, ctx) {\n const json = JSON.stringify(value);\n if (ctx.options.doubleQuotedAsJSON)\n return json;\n const { implicitKey } = ctx;\n const minMultiLineLength = ctx.options.doubleQuotedMinMultiLineLength;\n const indent = ctx.indent || (containsDocumentMarker(value) ? ' ' : '');\n let str = '';\n let start = 0;\n for (let i = 0, ch = json[i]; ch; ch = json[++i]) {\n if (ch === ' ' && json[i + 1] === '\\\\' && json[i + 2] === 'n') {\n // space before newline needs to be escaped to not be folded\n str += json.slice(start, i) + '\\\\ ';\n i += 1;\n start = i;\n ch = '\\\\';\n }\n if (ch === '\\\\')\n switch (json[i + 1]) {\n case 'u':\n {\n str += json.slice(start, i);\n const code = json.substr(i + 2, 4);\n switch (code) {\n case '0000':\n str += '\\\\0';\n break;\n case '0007':\n str += '\\\\a';\n break;\n case '000b':\n str += '\\\\v';\n break;\n case '001b':\n str += '\\\\e';\n break;\n case '0085':\n str += '\\\\N';\n break;\n case '00a0':\n str += '\\\\_';\n break;\n case '2028':\n str += '\\\\L';\n break;\n case '2029':\n str += '\\\\P';\n break;\n default:\n if (code.substr(0, 2) === '00')\n str += '\\\\x' + code.substr(2);\n else\n str += json.substr(i, 6);\n }\n i += 5;\n start = i + 1;\n }\n break;\n case 'n':\n if (implicitKey ||\n json[i + 2] === '\"' ||\n json.length < minMultiLineLength) {\n i += 1;\n }\n else {\n // folding will eat first newline\n str += json.slice(start, i) + '\\n\\n';\n while (json[i + 2] === '\\\\' &&\n json[i + 3] === 'n' &&\n json[i + 4] !== '\"') {\n str += '\\n';\n i += 2;\n }\n str += indent;\n // space after newline needs to be escaped to not be folded\n if (json[i + 2] === ' ')\n str += '\\\\';\n i += 1;\n start = i + 1;\n }\n break;\n default:\n i += 1;\n }\n }\n str = start ? str + json.slice(start) : json;\n return implicitKey\n ? str\n : foldFlowLines.foldFlowLines(str, indent, foldFlowLines.FOLD_QUOTED, getFoldOptions(ctx, false));\n}\nfunction singleQuotedString(value, ctx) {\n if (ctx.options.singleQuote === false ||\n (ctx.implicitKey && value.includes('\\n')) ||\n /[ \\t]\\n|\\n[ \\t]/.test(value) // single quoted string can't have leading or trailing whitespace around newline\n )\n return doubleQuotedString(value, ctx);\n const indent = ctx.indent || (containsDocumentMarker(value) ? ' ' : '');\n const res = \"'\" + value.replace(/'/g, \"''\").replace(/\\n+/g, `$&\\n${indent}`) + \"'\";\n return ctx.implicitKey\n ? res\n : foldFlowLines.foldFlowLines(res, indent, foldFlowLines.FOLD_FLOW, getFoldOptions(ctx, false));\n}\nfunction quotedString(value, ctx) {\n const { singleQuote } = ctx.options;\n let qs;\n if (singleQuote === false)\n qs = doubleQuotedString;\n else {\n const hasDouble = value.includes('\"');\n const hasSingle = value.includes(\"'\");\n if (hasDouble && !hasSingle)\n qs = singleQuotedString;\n else if (hasSingle && !hasDouble)\n qs = doubleQuotedString;\n else\n qs = singleQuote ? singleQuotedString : doubleQuotedString;\n }\n return qs(value, ctx);\n}\n// The negative lookbehind avoids a polynomial search,\n// but isn't supported yet on Safari: https://caniuse.com/js-regexp-lookbehind\nlet blockEndNewlines;\ntry {\n blockEndNewlines = new RegExp('(^|(?\\n';\n // determine chomping from whitespace at value end\n let chomp;\n let endStart;\n for (endStart = value.length; endStart > 0; --endStart) {\n const ch = value[endStart - 1];\n if (ch !== '\\n' && ch !== '\\t' && ch !== ' ')\n break;\n }\n let end = value.substring(endStart);\n const endNlPos = end.indexOf('\\n');\n if (endNlPos === -1) {\n chomp = '-'; // strip\n }\n else if (value === end || endNlPos !== end.length - 1) {\n chomp = '+'; // keep\n if (onChompKeep)\n onChompKeep();\n }\n else {\n chomp = ''; // clip\n }\n if (end) {\n value = value.slice(0, -end.length);\n if (end[end.length - 1] === '\\n')\n end = end.slice(0, -1);\n end = end.replace(blockEndNewlines, `$&${indent}`);\n }\n // determine indent indicator from whitespace at value start\n let startWithSpace = false;\n let startEnd;\n let startNlPos = -1;\n for (startEnd = 0; startEnd < value.length; ++startEnd) {\n const ch = value[startEnd];\n if (ch === ' ')\n startWithSpace = true;\n else if (ch === '\\n')\n startNlPos = startEnd;\n else\n break;\n }\n let start = value.substring(0, startNlPos < startEnd ? startNlPos + 1 : startEnd);\n if (start) {\n value = value.substring(start.length);\n start = start.replace(/\\n+/g, `$&${indent}`);\n }\n const indentSize = indent ? '2' : '1'; // root is at -1\n // Leading | or > is added later\n let header = (startWithSpace ? indentSize : '') + chomp;\n if (comment) {\n header += ' ' + commentString(comment.replace(/ ?[\\r\\n]+/g, ' '));\n if (onComment)\n onComment();\n }\n if (!literal) {\n const foldedValue = value\n .replace(/\\n+/g, '\\n$&')\n .replace(/(?:^|\\n)([\\t ].*)(?:([\\n\\t ]*)\\n(?![\\n\\t ]))?/g, '$1$2') // more-indented lines aren't folded\n // ^ more-ind. ^ empty ^ capture next empty lines only at end of indent\n .replace(/\\n+/g, `$&${indent}`);\n let literalFallback = false;\n const foldOptions = getFoldOptions(ctx, true);\n if (blockQuote !== 'folded' && type !== Scalar.Scalar.BLOCK_FOLDED) {\n foldOptions.onOverflow = () => {\n literalFallback = true;\n };\n }\n const body = foldFlowLines.foldFlowLines(`${start}${foldedValue}${end}`, indent, foldFlowLines.FOLD_BLOCK, foldOptions);\n if (!literalFallback)\n return `>${header}\\n${indent}${body}`;\n }\n value = value.replace(/\\n+/g, `$&${indent}`);\n return `|${header}\\n${indent}${start}${value}${end}`;\n}\nfunction plainString(item, ctx, onComment, onChompKeep) {\n const { type, value } = item;\n const { actualString, implicitKey, indent, indentStep, inFlow } = ctx;\n if ((implicitKey && value.includes('\\n')) ||\n (inFlow && /[[\\]{},]/.test(value))) {\n return quotedString(value, ctx);\n }\n if (/^[\\n\\t ,[\\]{}#&*!|>'\"%@`]|^[?-]$|^[?-][ \\t]|[\\n:][ \\t]|[ \\t]\\n|[\\n\\t ]#|[\\n\\t :]$/.test(value)) {\n // not allowed:\n // - '-' or '?'\n // - start with an indicator character (except [?:-]) or /[?-] /\n // - '\\n ', ': ' or ' \\n' anywhere\n // - '#' not preceded by a non-space char\n // - end with ' ' or ':'\n return implicitKey || inFlow || !value.includes('\\n')\n ? quotedString(value, ctx)\n : blockString(item, ctx, onComment, onChompKeep);\n }\n if (!implicitKey &&\n !inFlow &&\n type !== Scalar.Scalar.PLAIN &&\n value.includes('\\n')) {\n // Where allowed & type not set explicitly, prefer block style for multiline strings\n return blockString(item, ctx, onComment, onChompKeep);\n }\n if (containsDocumentMarker(value)) {\n if (indent === '') {\n ctx.forceBlockIndent = true;\n return blockString(item, ctx, onComment, onChompKeep);\n }\n else if (implicitKey && indent === indentStep) {\n return quotedString(value, ctx);\n }\n }\n const str = value.replace(/\\n+/g, `$&\\n${indent}`);\n // Verify that output will be parsed as a string, as e.g. plain numbers and\n // booleans get parsed with those types in v1.2 (e.g. '42', 'true' & '0.9e-3'),\n // and others in v1.1.\n if (actualString) {\n const test = (tag) => tag.default && tag.tag !== 'tag:yaml.org,2002:str' && tag.test?.test(str);\n const { compat, tags } = ctx.doc.schema;\n if (tags.some(test) || compat?.some(test))\n return quotedString(value, ctx);\n }\n return implicitKey\n ? str\n : foldFlowLines.foldFlowLines(str, indent, foldFlowLines.FOLD_FLOW, getFoldOptions(ctx, false));\n}\nfunction stringifyString(item, ctx, onComment, onChompKeep) {\n const { implicitKey, inFlow } = ctx;\n const ss = typeof item.value === 'string'\n ? item\n : Object.assign({}, item, { value: String(item.value) });\n let { type } = item;\n if (type !== Scalar.Scalar.QUOTE_DOUBLE) {\n // force double quotes on control characters & unpaired surrogates\n if (/[\\x00-\\x08\\x0b-\\x1f\\x7f-\\x9f\\u{D800}-\\u{DFFF}]/u.test(ss.value))\n type = Scalar.Scalar.QUOTE_DOUBLE;\n }\n const _stringify = (_type) => {\n switch (_type) {\n case Scalar.Scalar.BLOCK_FOLDED:\n case Scalar.Scalar.BLOCK_LITERAL:\n return implicitKey || inFlow\n ? quotedString(ss.value, ctx) // blocks are not valid inside flow containers\n : blockString(ss, ctx, onComment, onChompKeep);\n case Scalar.Scalar.QUOTE_DOUBLE:\n return doubleQuotedString(ss.value, ctx);\n case Scalar.Scalar.QUOTE_SINGLE:\n return singleQuotedString(ss.value, ctx);\n case Scalar.Scalar.PLAIN:\n return plainString(ss, ctx, onComment, onChompKeep);\n default:\n return null;\n }\n };\n let res = _stringify(type);\n if (res === null) {\n const { defaultKeyType, defaultStringType } = ctx.options;\n const t = (implicitKey && defaultKeyType) || defaultStringType;\n res = _stringify(t);\n if (res === null)\n throw new Error(`Unsupported default string type ${t}`);\n }\n return res;\n}\n\nexports.stringifyString = stringifyString;\n","'use strict';\n\nvar anchors = require('../doc/anchors.js');\nvar identity = require('../nodes/identity.js');\nvar stringifyComment = require('./stringifyComment.js');\nvar stringifyString = require('./stringifyString.js');\n\nfunction createStringifyContext(doc, options) {\n const opt = Object.assign({\n blockQuote: true,\n commentString: stringifyComment.stringifyComment,\n defaultKeyType: null,\n defaultStringType: 'PLAIN',\n directives: null,\n doubleQuotedAsJSON: false,\n doubleQuotedMinMultiLineLength: 40,\n falseStr: 'false',\n flowCollectionPadding: true,\n indentSeq: true,\n lineWidth: 80,\n minContentWidth: 20,\n nullStr: 'null',\n simpleKeys: false,\n singleQuote: null,\n trueStr: 'true',\n verifyAliasOrder: true\n }, doc.schema.toStringOptions, options);\n let inFlow;\n switch (opt.collectionStyle) {\n case 'block':\n inFlow = false;\n break;\n case 'flow':\n inFlow = true;\n break;\n default:\n inFlow = null;\n }\n return {\n anchors: new Set(),\n doc,\n flowCollectionPadding: opt.flowCollectionPadding ? ' ' : '',\n indent: '',\n indentStep: typeof opt.indent === 'number' ? ' '.repeat(opt.indent) : ' ',\n inFlow,\n options: opt\n };\n}\nfunction getTagObject(tags, item) {\n if (item.tag) {\n const match = tags.filter(t => t.tag === item.tag);\n if (match.length > 0)\n return match.find(t => t.format === item.format) ?? match[0];\n }\n let tagObj = undefined;\n let obj;\n if (identity.isScalar(item)) {\n obj = item.value;\n let match = tags.filter(t => t.identify?.(obj));\n if (match.length > 1) {\n const testMatch = match.filter(t => t.test);\n if (testMatch.length > 0)\n match = testMatch;\n }\n tagObj =\n match.find(t => t.format === item.format) ?? match.find(t => !t.format);\n }\n else {\n obj = item;\n tagObj = tags.find(t => t.nodeClass && obj instanceof t.nodeClass);\n }\n if (!tagObj) {\n const name = obj?.constructor?.name ?? (obj === null ? 'null' : typeof obj);\n throw new Error(`Tag not resolved for ${name} value`);\n }\n return tagObj;\n}\n// needs to be called before value stringifier to allow for circular anchor refs\nfunction stringifyProps(node, tagObj, { anchors: anchors$1, doc }) {\n if (!doc.directives)\n return '';\n const props = [];\n const anchor = (identity.isScalar(node) || identity.isCollection(node)) && node.anchor;\n if (anchor && anchors.anchorIsValid(anchor)) {\n anchors$1.add(anchor);\n props.push(`&${anchor}`);\n }\n const tag = node.tag ?? (tagObj.default ? null : tagObj.tag);\n if (tag)\n props.push(doc.directives.tagString(tag));\n return props.join(' ');\n}\nfunction stringify(item, ctx, onComment, onChompKeep) {\n if (identity.isPair(item))\n return item.toString(ctx, onComment, onChompKeep);\n if (identity.isAlias(item)) {\n if (ctx.doc.directives)\n return item.toString(ctx);\n if (ctx.resolvedAliases?.has(item)) {\n throw new TypeError(`Cannot stringify circular structure without alias nodes`);\n }\n else {\n if (ctx.resolvedAliases)\n ctx.resolvedAliases.add(item);\n else\n ctx.resolvedAliases = new Set([item]);\n item = item.resolve(ctx.doc);\n }\n }\n let tagObj = undefined;\n const node = identity.isNode(item)\n ? item\n : ctx.doc.createNode(item, { onTagObj: o => (tagObj = o) });\n tagObj ?? (tagObj = getTagObject(ctx.doc.schema.tags, node));\n const props = stringifyProps(node, tagObj, ctx);\n if (props.length > 0)\n ctx.indentAtStart = (ctx.indentAtStart ?? 0) + props.length + 1;\n const str = typeof tagObj.stringify === 'function'\n ? tagObj.stringify(node, ctx, onComment, onChompKeep)\n : identity.isScalar(node)\n ? stringifyString.stringifyString(node, ctx, onComment, onChompKeep)\n : node.toString(ctx, onComment, onChompKeep);\n if (!props)\n return str;\n return identity.isScalar(node) || str[0] === '{' || str[0] === '['\n ? `${props} ${str}`\n : `${props}\\n${ctx.indent}${str}`;\n}\n\nexports.createStringifyContext = createStringifyContext;\nexports.stringify = stringify;\n","'use strict';\n\nvar identity = require('../nodes/identity.js');\nvar Scalar = require('../nodes/Scalar.js');\nvar stringify = require('./stringify.js');\nvar stringifyComment = require('./stringifyComment.js');\n\nfunction stringifyPair({ key, value }, ctx, onComment, onChompKeep) {\n const { allNullValues, doc, indent, indentStep, options: { commentString, indentSeq, simpleKeys } } = ctx;\n let keyComment = (identity.isNode(key) && key.comment) || null;\n if (simpleKeys) {\n if (keyComment) {\n throw new Error('With simple keys, key nodes cannot have comments');\n }\n if (identity.isCollection(key) || (!identity.isNode(key) && typeof key === 'object')) {\n const msg = 'With simple keys, collection cannot be used as a key value';\n throw new Error(msg);\n }\n }\n let explicitKey = !simpleKeys &&\n (!key ||\n (keyComment && value == null && !ctx.inFlow) ||\n identity.isCollection(key) ||\n (identity.isScalar(key)\n ? key.type === Scalar.Scalar.BLOCK_FOLDED || key.type === Scalar.Scalar.BLOCK_LITERAL\n : typeof key === 'object'));\n ctx = Object.assign({}, ctx, {\n allNullValues: false,\n implicitKey: !explicitKey && (simpleKeys || !allNullValues),\n indent: indent + indentStep\n });\n let keyCommentDone = false;\n let chompKeep = false;\n let str = stringify.stringify(key, ctx, () => (keyCommentDone = true), () => (chompKeep = true));\n if (!explicitKey && !ctx.inFlow && str.length > 1024) {\n if (simpleKeys)\n throw new Error('With simple keys, single line scalar must not span more than 1024 characters');\n explicitKey = true;\n }\n if (ctx.inFlow) {\n if (allNullValues || value == null) {\n if (keyCommentDone && onComment)\n onComment();\n return str === '' ? '?' : explicitKey ? `? ${str}` : str;\n }\n }\n else if ((allNullValues && !simpleKeys) || (value == null && explicitKey)) {\n str = `? ${str}`;\n if (keyComment && !keyCommentDone) {\n str += stringifyComment.lineComment(str, ctx.indent, commentString(keyComment));\n }\n else if (chompKeep && onChompKeep)\n onChompKeep();\n return str;\n }\n if (keyCommentDone)\n keyComment = null;\n if (explicitKey) {\n if (keyComment)\n str += stringifyComment.lineComment(str, ctx.indent, commentString(keyComment));\n str = `? ${str}\\n${indent}:`;\n }\n else {\n str = `${str}:`;\n if (keyComment)\n str += stringifyComment.lineComment(str, ctx.indent, commentString(keyComment));\n }\n let vsb, vcb, valueComment;\n if (identity.isNode(value)) {\n vsb = !!value.spaceBefore;\n vcb = value.commentBefore;\n valueComment = value.comment;\n }\n else {\n vsb = false;\n vcb = null;\n valueComment = null;\n if (value && typeof value === 'object')\n value = doc.createNode(value);\n }\n ctx.implicitKey = false;\n if (!explicitKey && !keyComment && identity.isScalar(value))\n ctx.indentAtStart = str.length + 1;\n chompKeep = false;\n if (!indentSeq &&\n indentStep.length >= 2 &&\n !ctx.inFlow &&\n !explicitKey &&\n identity.isSeq(value) &&\n !value.flow &&\n !value.tag &&\n !value.anchor) {\n // If indentSeq === false, consider '- ' as part of indentation where possible\n ctx.indent = ctx.indent.substring(2);\n }\n let valueCommentDone = false;\n const valueStr = stringify.stringify(value, ctx, () => (valueCommentDone = true), () => (chompKeep = true));\n let ws = ' ';\n if (keyComment || vsb || vcb) {\n ws = vsb ? '\\n' : '';\n if (vcb) {\n const cs = commentString(vcb);\n ws += `\\n${stringifyComment.indentComment(cs, ctx.indent)}`;\n }\n if (valueStr === '' && !ctx.inFlow) {\n if (ws === '\\n')\n ws = '\\n\\n';\n }\n else {\n ws += `\\n${ctx.indent}`;\n }\n }\n else if (!explicitKey && identity.isCollection(value)) {\n const vs0 = valueStr[0];\n const nl0 = valueStr.indexOf('\\n');\n const hasNewline = nl0 !== -1;\n const flow = ctx.inFlow ?? value.flow ?? value.items.length === 0;\n if (hasNewline || !flow) {\n let hasPropsLine = false;\n if (hasNewline && (vs0 === '&' || vs0 === '!')) {\n let sp0 = valueStr.indexOf(' ');\n if (vs0 === '&' &&\n sp0 !== -1 &&\n sp0 < nl0 &&\n valueStr[sp0 + 1] === '!') {\n sp0 = valueStr.indexOf(' ', sp0 + 1);\n }\n if (sp0 === -1 || nl0 < sp0)\n hasPropsLine = true;\n }\n if (!hasPropsLine)\n ws = `\\n${ctx.indent}`;\n }\n }\n else if (valueStr === '' || valueStr[0] === '\\n') {\n ws = '';\n }\n str += ws + valueStr;\n if (ctx.inFlow) {\n if (valueCommentDone && onComment)\n onComment();\n }\n else if (valueComment && !valueCommentDone) {\n str += stringifyComment.lineComment(str, ctx.indent, commentString(valueComment));\n }\n else if (chompKeep && onChompKeep) {\n onChompKeep();\n }\n return str;\n}\n\nexports.stringifyPair = stringifyPair;\n","'use strict';\n\nvar node_process = require('process');\n\nfunction debug(logLevel, ...messages) {\n if (logLevel === 'debug')\n console.log(...messages);\n}\nfunction warn(logLevel, warning) {\n if (logLevel === 'debug' || logLevel === 'warn') {\n if (typeof node_process.emitWarning === 'function')\n node_process.emitWarning(warning);\n else\n console.warn(warning);\n }\n}\n\nexports.debug = debug;\nexports.warn = warn;\n","'use strict';\n\nvar identity = require('../../nodes/identity.js');\nvar Scalar = require('../../nodes/Scalar.js');\n\n// If the value associated with a merge key is a single mapping node, each of\n// its key/value pairs is inserted into the current mapping, unless the key\n// already exists in it. If the value associated with the merge key is a\n// sequence, then this sequence is expected to contain mapping nodes and each\n// of these nodes is merged in turn according to its order in the sequence.\n// Keys in mapping nodes earlier in the sequence override keys specified in\n// later mapping nodes. -- http://yaml.org/type/merge.html\nconst MERGE_KEY = '<<';\nconst merge = {\n identify: value => value === MERGE_KEY ||\n (typeof value === 'symbol' && value.description === MERGE_KEY),\n default: 'key',\n tag: 'tag:yaml.org,2002:merge',\n test: /^<<$/,\n resolve: () => Object.assign(new Scalar.Scalar(Symbol(MERGE_KEY)), {\n addToJSMap: addMergeToJSMap\n }),\n stringify: () => MERGE_KEY\n};\nconst isMergeKey = (ctx, key) => (merge.identify(key) ||\n (identity.isScalar(key) &&\n (!key.type || key.type === Scalar.Scalar.PLAIN) &&\n merge.identify(key.value))) &&\n ctx?.doc.schema.tags.some(tag => tag.tag === merge.tag && tag.default);\nfunction addMergeToJSMap(ctx, map, value) {\n value = ctx && identity.isAlias(value) ? value.resolve(ctx.doc) : value;\n if (identity.isSeq(value))\n for (const it of value.items)\n mergeValue(ctx, map, it);\n else if (Array.isArray(value))\n for (const it of value)\n mergeValue(ctx, map, it);\n else\n mergeValue(ctx, map, value);\n}\nfunction mergeValue(ctx, map, value) {\n const source = ctx && identity.isAlias(value) ? value.resolve(ctx.doc) : value;\n if (!identity.isMap(source))\n throw new Error('Merge sources must be maps or map aliases');\n const srcMap = source.toJSON(null, ctx, Map);\n for (const [key, value] of srcMap) {\n if (map instanceof Map) {\n if (!map.has(key))\n map.set(key, value);\n }\n else if (map instanceof Set) {\n map.add(key);\n }\n else if (!Object.prototype.hasOwnProperty.call(map, key)) {\n Object.defineProperty(map, key, {\n value,\n writable: true,\n enumerable: true,\n configurable: true\n });\n }\n }\n return map;\n}\n\nexports.addMergeToJSMap = addMergeToJSMap;\nexports.isMergeKey = isMergeKey;\nexports.merge = merge;\n","'use strict';\n\nvar log = require('../log.js');\nvar merge = require('../schema/yaml-1.1/merge.js');\nvar stringify = require('../stringify/stringify.js');\nvar identity = require('./identity.js');\nvar toJS = require('./toJS.js');\n\nfunction addPairToJSMap(ctx, map, { key, value }) {\n if (identity.isNode(key) && key.addToJSMap)\n key.addToJSMap(ctx, map, value);\n // TODO: Should drop this special case for bare << handling\n else if (merge.isMergeKey(ctx, key))\n merge.addMergeToJSMap(ctx, map, value);\n else {\n const jsKey = toJS.toJS(key, '', ctx);\n if (map instanceof Map) {\n map.set(jsKey, toJS.toJS(value, jsKey, ctx));\n }\n else if (map instanceof Set) {\n map.add(jsKey);\n }\n else {\n const stringKey = stringifyKey(key, jsKey, ctx);\n const jsValue = toJS.toJS(value, stringKey, ctx);\n if (stringKey in map)\n Object.defineProperty(map, stringKey, {\n value: jsValue,\n writable: true,\n enumerable: true,\n configurable: true\n });\n else\n map[stringKey] = jsValue;\n }\n }\n return map;\n}\nfunction stringifyKey(key, jsKey, ctx) {\n if (jsKey === null)\n return '';\n // eslint-disable-next-line @typescript-eslint/no-base-to-string\n if (typeof jsKey !== 'object')\n return String(jsKey);\n if (identity.isNode(key) && ctx?.doc) {\n const strCtx = stringify.createStringifyContext(ctx.doc, {});\n strCtx.anchors = new Set();\n for (const node of ctx.anchors.keys())\n strCtx.anchors.add(node.anchor);\n strCtx.inFlow = true;\n strCtx.inStringifyKey = true;\n const strKey = key.toString(strCtx);\n if (!ctx.mapKeyWarned) {\n let jsonStr = JSON.stringify(strKey);\n if (jsonStr.length > 40)\n jsonStr = jsonStr.substring(0, 36) + '...\"';\n log.warn(ctx.doc.options.logLevel, `Keys with collection values will be stringified due to JS Object restrictions: ${jsonStr}. Set mapAsMap: true to use object keys.`);\n ctx.mapKeyWarned = true;\n }\n return strKey;\n }\n return JSON.stringify(jsKey);\n}\n\nexports.addPairToJSMap = addPairToJSMap;\n","'use strict';\n\nvar createNode = require('../doc/createNode.js');\nvar stringifyPair = require('../stringify/stringifyPair.js');\nvar addPairToJSMap = require('./addPairToJSMap.js');\nvar identity = require('./identity.js');\n\nfunction createPair(key, value, ctx) {\n const k = createNode.createNode(key, undefined, ctx);\n const v = createNode.createNode(value, undefined, ctx);\n return new Pair(k, v);\n}\nclass Pair {\n constructor(key, value = null) {\n Object.defineProperty(this, identity.NODE_TYPE, { value: identity.PAIR });\n this.key = key;\n this.value = value;\n }\n clone(schema) {\n let { key, value } = this;\n if (identity.isNode(key))\n key = key.clone(schema);\n if (identity.isNode(value))\n value = value.clone(schema);\n return new Pair(key, value);\n }\n toJSON(_, ctx) {\n const pair = ctx?.mapAsMap ? new Map() : {};\n return addPairToJSMap.addPairToJSMap(ctx, pair, this);\n }\n toString(ctx, onComment, onChompKeep) {\n return ctx?.doc\n ? stringifyPair.stringifyPair(this, ctx, onComment, onChompKeep)\n : JSON.stringify(this);\n }\n}\n\nexports.Pair = Pair;\nexports.createPair = createPair;\n","'use strict';\n\nvar identity = require('../nodes/identity.js');\nvar stringify = require('./stringify.js');\nvar stringifyComment = require('./stringifyComment.js');\n\nfunction stringifyCollection(collection, ctx, options) {\n const flow = ctx.inFlow ?? collection.flow;\n const stringify = flow ? stringifyFlowCollection : stringifyBlockCollection;\n return stringify(collection, ctx, options);\n}\nfunction stringifyBlockCollection({ comment, items }, ctx, { blockItemPrefix, flowChars, itemIndent, onChompKeep, onComment }) {\n const { indent, options: { commentString } } = ctx;\n const itemCtx = Object.assign({}, ctx, { indent: itemIndent, type: null });\n let chompKeep = false; // flag for the preceding node's status\n const lines = [];\n for (let i = 0; i < items.length; ++i) {\n const item = items[i];\n let comment = null;\n if (identity.isNode(item)) {\n if (!chompKeep && item.spaceBefore)\n lines.push('');\n addCommentBefore(ctx, lines, item.commentBefore, chompKeep);\n if (item.comment)\n comment = item.comment;\n }\n else if (identity.isPair(item)) {\n const ik = identity.isNode(item.key) ? item.key : null;\n if (ik) {\n if (!chompKeep && ik.spaceBefore)\n lines.push('');\n addCommentBefore(ctx, lines, ik.commentBefore, chompKeep);\n }\n }\n chompKeep = false;\n let str = stringify.stringify(item, itemCtx, () => (comment = null), () => (chompKeep = true));\n if (comment)\n str += stringifyComment.lineComment(str, itemIndent, commentString(comment));\n if (chompKeep && comment)\n chompKeep = false;\n lines.push(blockItemPrefix + str);\n }\n let str;\n if (lines.length === 0) {\n str = flowChars.start + flowChars.end;\n }\n else {\n str = lines[0];\n for (let i = 1; i < lines.length; ++i) {\n const line = lines[i];\n str += line ? `\\n${indent}${line}` : '\\n';\n }\n }\n if (comment) {\n str += '\\n' + stringifyComment.indentComment(commentString(comment), indent);\n if (onComment)\n onComment();\n }\n else if (chompKeep && onChompKeep)\n onChompKeep();\n return str;\n}\nfunction stringifyFlowCollection({ items }, ctx, { flowChars, itemIndent }) {\n const { indent, indentStep, flowCollectionPadding: fcPadding, options: { commentString } } = ctx;\n itemIndent += indentStep;\n const itemCtx = Object.assign({}, ctx, {\n indent: itemIndent,\n inFlow: true,\n type: null\n });\n let reqNewline = false;\n let linesAtValue = 0;\n const lines = [];\n for (let i = 0; i < items.length; ++i) {\n const item = items[i];\n let comment = null;\n if (identity.isNode(item)) {\n if (item.spaceBefore)\n lines.push('');\n addCommentBefore(ctx, lines, item.commentBefore, false);\n if (item.comment)\n comment = item.comment;\n }\n else if (identity.isPair(item)) {\n const ik = identity.isNode(item.key) ? item.key : null;\n if (ik) {\n if (ik.spaceBefore)\n lines.push('');\n addCommentBefore(ctx, lines, ik.commentBefore, false);\n if (ik.comment)\n reqNewline = true;\n }\n const iv = identity.isNode(item.value) ? item.value : null;\n if (iv) {\n if (iv.comment)\n comment = iv.comment;\n if (iv.commentBefore)\n reqNewline = true;\n }\n else if (item.value == null && ik?.comment) {\n comment = ik.comment;\n }\n }\n if (comment)\n reqNewline = true;\n let str = stringify.stringify(item, itemCtx, () => (comment = null));\n if (i < items.length - 1)\n str += ',';\n if (comment)\n str += stringifyComment.lineComment(str, itemIndent, commentString(comment));\n if (!reqNewline && (lines.length > linesAtValue || str.includes('\\n')))\n reqNewline = true;\n lines.push(str);\n linesAtValue = lines.length;\n }\n const { start, end } = flowChars;\n if (lines.length === 0) {\n return start + end;\n }\n else {\n if (!reqNewline) {\n const len = lines.reduce((sum, line) => sum + line.length + 2, 2);\n reqNewline = ctx.options.lineWidth > 0 && len > ctx.options.lineWidth;\n }\n if (reqNewline) {\n let str = start;\n for (const line of lines)\n str += line ? `\\n${indentStep}${indent}${line}` : '\\n';\n return `${str}\\n${indent}${end}`;\n }\n else {\n return `${start}${fcPadding}${lines.join(' ')}${fcPadding}${end}`;\n }\n }\n}\nfunction addCommentBefore({ indent, options: { commentString } }, lines, comment, chompKeep) {\n if (comment && chompKeep)\n comment = comment.replace(/^\\n+/, '');\n if (comment) {\n const ic = stringifyComment.indentComment(commentString(comment), indent);\n lines.push(ic.trimStart()); // Avoid double indent on first line\n }\n}\n\nexports.stringifyCollection = stringifyCollection;\n","'use strict';\n\nvar stringifyCollection = require('../stringify/stringifyCollection.js');\nvar addPairToJSMap = require('./addPairToJSMap.js');\nvar Collection = require('./Collection.js');\nvar identity = require('./identity.js');\nvar Pair = require('./Pair.js');\nvar Scalar = require('./Scalar.js');\n\nfunction findPair(items, key) {\n const k = identity.isScalar(key) ? key.value : key;\n for (const it of items) {\n if (identity.isPair(it)) {\n if (it.key === key || it.key === k)\n return it;\n if (identity.isScalar(it.key) && it.key.value === k)\n return it;\n }\n }\n return undefined;\n}\nclass YAMLMap extends Collection.Collection {\n static get tagName() {\n return 'tag:yaml.org,2002:map';\n }\n constructor(schema) {\n super(identity.MAP, schema);\n this.items = [];\n }\n /**\n * A generic collection parsing method that can be extended\n * to other node classes that inherit from YAMLMap\n */\n static from(schema, obj, ctx) {\n const { keepUndefined, replacer } = ctx;\n const map = new this(schema);\n const add = (key, value) => {\n if (typeof replacer === 'function')\n value = replacer.call(obj, key, value);\n else if (Array.isArray(replacer) && !replacer.includes(key))\n return;\n if (value !== undefined || keepUndefined)\n map.items.push(Pair.createPair(key, value, ctx));\n };\n if (obj instanceof Map) {\n for (const [key, value] of obj)\n add(key, value);\n }\n else if (obj && typeof obj === 'object') {\n for (const key of Object.keys(obj))\n add(key, obj[key]);\n }\n if (typeof schema.sortMapEntries === 'function') {\n map.items.sort(schema.sortMapEntries);\n }\n return map;\n }\n /**\n * Adds a value to the collection.\n *\n * @param overwrite - If not set `true`, using a key that is already in the\n * collection will throw. Otherwise, overwrites the previous value.\n */\n add(pair, overwrite) {\n let _pair;\n if (identity.isPair(pair))\n _pair = pair;\n else if (!pair || typeof pair !== 'object' || !('key' in pair)) {\n // In TypeScript, this never happens.\n _pair = new Pair.Pair(pair, pair?.value);\n }\n else\n _pair = new Pair.Pair(pair.key, pair.value);\n const prev = findPair(this.items, _pair.key);\n const sortEntries = this.schema?.sortMapEntries;\n if (prev) {\n if (!overwrite)\n throw new Error(`Key ${_pair.key} already set`);\n // For scalars, keep the old node & its comments and anchors\n if (identity.isScalar(prev.value) && Scalar.isScalarValue(_pair.value))\n prev.value.value = _pair.value;\n else\n prev.value = _pair.value;\n }\n else if (sortEntries) {\n const i = this.items.findIndex(item => sortEntries(_pair, item) < 0);\n if (i === -1)\n this.items.push(_pair);\n else\n this.items.splice(i, 0, _pair);\n }\n else {\n this.items.push(_pair);\n }\n }\n delete(key) {\n const it = findPair(this.items, key);\n if (!it)\n return false;\n const del = this.items.splice(this.items.indexOf(it), 1);\n return del.length > 0;\n }\n get(key, keepScalar) {\n const it = findPair(this.items, key);\n const node = it?.value;\n return (!keepScalar && identity.isScalar(node) ? node.value : node) ?? undefined;\n }\n has(key) {\n return !!findPair(this.items, key);\n }\n set(key, value) {\n this.add(new Pair.Pair(key, value), true);\n }\n /**\n * @param ctx - Conversion context, originally set in Document#toJS()\n * @param {Class} Type - If set, forces the returned collection type\n * @returns Instance of Type, Map, or Object\n */\n toJSON(_, ctx, Type) {\n const map = Type ? new Type() : ctx?.mapAsMap ? new Map() : {};\n if (ctx?.onCreate)\n ctx.onCreate(map);\n for (const item of this.items)\n addPairToJSMap.addPairToJSMap(ctx, map, item);\n return map;\n }\n toString(ctx, onComment, onChompKeep) {\n if (!ctx)\n return JSON.stringify(this);\n for (const item of this.items) {\n if (!identity.isPair(item))\n throw new Error(`Map items must all be pairs; found ${JSON.stringify(item)} instead`);\n }\n if (!ctx.allNullValues && this.hasAllNullValues(false))\n ctx = Object.assign({}, ctx, { allNullValues: true });\n return stringifyCollection.stringifyCollection(this, ctx, {\n blockItemPrefix: '',\n flowChars: { start: '{', end: '}' },\n itemIndent: ctx.indent || '',\n onChompKeep,\n onComment\n });\n }\n}\n\nexports.YAMLMap = YAMLMap;\nexports.findPair = findPair;\n","'use strict';\n\nvar identity = require('../../nodes/identity.js');\nvar YAMLMap = require('../../nodes/YAMLMap.js');\n\nconst map = {\n collection: 'map',\n default: true,\n nodeClass: YAMLMap.YAMLMap,\n tag: 'tag:yaml.org,2002:map',\n resolve(map, onError) {\n if (!identity.isMap(map))\n onError('Expected a mapping for this tag');\n return map;\n },\n createNode: (schema, obj, ctx) => YAMLMap.YAMLMap.from(schema, obj, ctx)\n};\n\nexports.map = map;\n","'use strict';\n\nvar createNode = require('../doc/createNode.js');\nvar stringifyCollection = require('../stringify/stringifyCollection.js');\nvar Collection = require('./Collection.js');\nvar identity = require('./identity.js');\nvar Scalar = require('./Scalar.js');\nvar toJS = require('./toJS.js');\n\nclass YAMLSeq extends Collection.Collection {\n static get tagName() {\n return 'tag:yaml.org,2002:seq';\n }\n constructor(schema) {\n super(identity.SEQ, schema);\n this.items = [];\n }\n add(value) {\n this.items.push(value);\n }\n /**\n * Removes a value from the collection.\n *\n * `key` must contain a representation of an integer for this to succeed.\n * It may be wrapped in a `Scalar`.\n *\n * @returns `true` if the item was found and removed.\n */\n delete(key) {\n const idx = asItemIndex(key);\n if (typeof idx !== 'number')\n return false;\n const del = this.items.splice(idx, 1);\n return del.length > 0;\n }\n get(key, keepScalar) {\n const idx = asItemIndex(key);\n if (typeof idx !== 'number')\n return undefined;\n const it = this.items[idx];\n return !keepScalar && identity.isScalar(it) ? it.value : it;\n }\n /**\n * Checks if the collection includes a value with the key `key`.\n *\n * `key` must contain a representation of an integer for this to succeed.\n * It may be wrapped in a `Scalar`.\n */\n has(key) {\n const idx = asItemIndex(key);\n return typeof idx === 'number' && idx < this.items.length;\n }\n /**\n * Sets a value in this collection. For `!!set`, `value` needs to be a\n * boolean to add/remove the item from the set.\n *\n * If `key` does not contain a representation of an integer, this will throw.\n * It may be wrapped in a `Scalar`.\n */\n set(key, value) {\n const idx = asItemIndex(key);\n if (typeof idx !== 'number')\n throw new Error(`Expected a valid index, not ${key}.`);\n const prev = this.items[idx];\n if (identity.isScalar(prev) && Scalar.isScalarValue(value))\n prev.value = value;\n else\n this.items[idx] = value;\n }\n toJSON(_, ctx) {\n const seq = [];\n if (ctx?.onCreate)\n ctx.onCreate(seq);\n let i = 0;\n for (const item of this.items)\n seq.push(toJS.toJS(item, String(i++), ctx));\n return seq;\n }\n toString(ctx, onComment, onChompKeep) {\n if (!ctx)\n return JSON.stringify(this);\n return stringifyCollection.stringifyCollection(this, ctx, {\n blockItemPrefix: '- ',\n flowChars: { start: '[', end: ']' },\n itemIndent: (ctx.indent || '') + ' ',\n onChompKeep,\n onComment\n });\n }\n static from(schema, obj, ctx) {\n const { replacer } = ctx;\n const seq = new this(schema);\n if (obj && Symbol.iterator in Object(obj)) {\n let i = 0;\n for (let it of obj) {\n if (typeof replacer === 'function') {\n const key = obj instanceof Set ? it : String(i++);\n it = replacer.call(obj, key, it);\n }\n seq.items.push(createNode.createNode(it, undefined, ctx));\n }\n }\n return seq;\n }\n}\nfunction asItemIndex(key) {\n let idx = identity.isScalar(key) ? key.value : key;\n if (idx && typeof idx === 'string')\n idx = Number(idx);\n return typeof idx === 'number' && Number.isInteger(idx) && idx >= 0\n ? idx\n : null;\n}\n\nexports.YAMLSeq = YAMLSeq;\n","'use strict';\n\nvar identity = require('../../nodes/identity.js');\nvar YAMLSeq = require('../../nodes/YAMLSeq.js');\n\nconst seq = {\n collection: 'seq',\n default: true,\n nodeClass: YAMLSeq.YAMLSeq,\n tag: 'tag:yaml.org,2002:seq',\n resolve(seq, onError) {\n if (!identity.isSeq(seq))\n onError('Expected a sequence for this tag');\n return seq;\n },\n createNode: (schema, obj, ctx) => YAMLSeq.YAMLSeq.from(schema, obj, ctx)\n};\n\nexports.seq = seq;\n","'use strict';\n\nvar stringifyString = require('../../stringify/stringifyString.js');\n\nconst string = {\n identify: value => typeof value === 'string',\n default: true,\n tag: 'tag:yaml.org,2002:str',\n resolve: str => str,\n stringify(item, ctx, onComment, onChompKeep) {\n ctx = Object.assign({ actualString: true }, ctx);\n return stringifyString.stringifyString(item, ctx, onComment, onChompKeep);\n }\n};\n\nexports.string = string;\n","'use strict';\n\nvar Scalar = require('../../nodes/Scalar.js');\n\nconst nullTag = {\n identify: value => value == null,\n createNode: () => new Scalar.Scalar(null),\n default: true,\n tag: 'tag:yaml.org,2002:null',\n test: /^(?:~|[Nn]ull|NULL)?$/,\n resolve: () => new Scalar.Scalar(null),\n stringify: ({ source }, ctx) => typeof source === 'string' && nullTag.test.test(source)\n ? source\n : ctx.options.nullStr\n};\n\nexports.nullTag = nullTag;\n","'use strict';\n\nvar Scalar = require('../../nodes/Scalar.js');\n\nconst boolTag = {\n identify: value => typeof value === 'boolean',\n default: true,\n tag: 'tag:yaml.org,2002:bool',\n test: /^(?:[Tt]rue|TRUE|[Ff]alse|FALSE)$/,\n resolve: str => new Scalar.Scalar(str[0] === 't' || str[0] === 'T'),\n stringify({ source, value }, ctx) {\n if (source && boolTag.test.test(source)) {\n const sv = source[0] === 't' || source[0] === 'T';\n if (value === sv)\n return source;\n }\n return value ? ctx.options.trueStr : ctx.options.falseStr;\n }\n};\n\nexports.boolTag = boolTag;\n","'use strict';\n\nfunction stringifyNumber({ format, minFractionDigits, tag, value }) {\n if (typeof value === 'bigint')\n return String(value);\n const num = typeof value === 'number' ? value : Number(value);\n if (!isFinite(num))\n return isNaN(num) ? '.nan' : num < 0 ? '-.inf' : '.inf';\n let n = JSON.stringify(value);\n if (!format &&\n minFractionDigits &&\n (!tag || tag === 'tag:yaml.org,2002:float') &&\n /^\\d/.test(n)) {\n let i = n.indexOf('.');\n if (i < 0) {\n i = n.length;\n n += '.';\n }\n let d = minFractionDigits - (n.length - i - 1);\n while (d-- > 0)\n n += '0';\n }\n return n;\n}\n\nexports.stringifyNumber = stringifyNumber;\n","'use strict';\n\nvar Scalar = require('../../nodes/Scalar.js');\nvar stringifyNumber = require('../../stringify/stringifyNumber.js');\n\nconst floatNaN = {\n identify: value => typeof value === 'number',\n default: true,\n tag: 'tag:yaml.org,2002:float',\n test: /^(?:[-+]?\\.(?:inf|Inf|INF)|\\.nan|\\.NaN|\\.NAN)$/,\n resolve: str => str.slice(-3).toLowerCase() === 'nan'\n ? NaN\n : str[0] === '-'\n ? Number.NEGATIVE_INFINITY\n : Number.POSITIVE_INFINITY,\n stringify: stringifyNumber.stringifyNumber\n};\nconst floatExp = {\n identify: value => typeof value === 'number',\n default: true,\n tag: 'tag:yaml.org,2002:float',\n format: 'EXP',\n test: /^[-+]?(?:\\.[0-9]+|[0-9]+(?:\\.[0-9]*)?)[eE][-+]?[0-9]+$/,\n resolve: str => parseFloat(str),\n stringify(node) {\n const num = Number(node.value);\n return isFinite(num) ? num.toExponential() : stringifyNumber.stringifyNumber(node);\n }\n};\nconst float = {\n identify: value => typeof value === 'number',\n default: true,\n tag: 'tag:yaml.org,2002:float',\n test: /^[-+]?(?:\\.[0-9]+|[0-9]+\\.[0-9]*)$/,\n resolve(str) {\n const node = new Scalar.Scalar(parseFloat(str));\n const dot = str.indexOf('.');\n if (dot !== -1 && str[str.length - 1] === '0')\n node.minFractionDigits = str.length - dot - 1;\n return node;\n },\n stringify: stringifyNumber.stringifyNumber\n};\n\nexports.float = float;\nexports.floatExp = floatExp;\nexports.floatNaN = floatNaN;\n","'use strict';\n\nvar stringifyNumber = require('../../stringify/stringifyNumber.js');\n\nconst intIdentify = (value) => typeof value === 'bigint' || Number.isInteger(value);\nconst intResolve = (str, offset, radix, { intAsBigInt }) => (intAsBigInt ? BigInt(str) : parseInt(str.substring(offset), radix));\nfunction intStringify(node, radix, prefix) {\n const { value } = node;\n if (intIdentify(value) && value >= 0)\n return prefix + value.toString(radix);\n return stringifyNumber.stringifyNumber(node);\n}\nconst intOct = {\n identify: value => intIdentify(value) && value >= 0,\n default: true,\n tag: 'tag:yaml.org,2002:int',\n format: 'OCT',\n test: /^0o[0-7]+$/,\n resolve: (str, _onError, opt) => intResolve(str, 2, 8, opt),\n stringify: node => intStringify(node, 8, '0o')\n};\nconst int = {\n identify: intIdentify,\n default: true,\n tag: 'tag:yaml.org,2002:int',\n test: /^[-+]?[0-9]+$/,\n resolve: (str, _onError, opt) => intResolve(str, 0, 10, opt),\n stringify: stringifyNumber.stringifyNumber\n};\nconst intHex = {\n identify: value => intIdentify(value) && value >= 0,\n default: true,\n tag: 'tag:yaml.org,2002:int',\n format: 'HEX',\n test: /^0x[0-9a-fA-F]+$/,\n resolve: (str, _onError, opt) => intResolve(str, 2, 16, opt),\n stringify: node => intStringify(node, 16, '0x')\n};\n\nexports.int = int;\nexports.intHex = intHex;\nexports.intOct = intOct;\n","'use strict';\n\nvar map = require('../common/map.js');\nvar _null = require('../common/null.js');\nvar seq = require('../common/seq.js');\nvar string = require('../common/string.js');\nvar bool = require('./bool.js');\nvar float = require('./float.js');\nvar int = require('./int.js');\n\nconst schema = [\n map.map,\n seq.seq,\n string.string,\n _null.nullTag,\n bool.boolTag,\n int.intOct,\n int.int,\n int.intHex,\n float.floatNaN,\n float.floatExp,\n float.float\n];\n\nexports.schema = schema;\n","'use strict';\n\nvar Scalar = require('../../nodes/Scalar.js');\nvar map = require('../common/map.js');\nvar seq = require('../common/seq.js');\n\nfunction intIdentify(value) {\n return typeof value === 'bigint' || Number.isInteger(value);\n}\nconst stringifyJSON = ({ value }) => JSON.stringify(value);\nconst jsonScalars = [\n {\n identify: value => typeof value === 'string',\n default: true,\n tag: 'tag:yaml.org,2002:str',\n resolve: str => str,\n stringify: stringifyJSON\n },\n {\n identify: value => value == null,\n createNode: () => new Scalar.Scalar(null),\n default: true,\n tag: 'tag:yaml.org,2002:null',\n test: /^null$/,\n resolve: () => null,\n stringify: stringifyJSON\n },\n {\n identify: value => typeof value === 'boolean',\n default: true,\n tag: 'tag:yaml.org,2002:bool',\n test: /^true$|^false$/,\n resolve: str => str === 'true',\n stringify: stringifyJSON\n },\n {\n identify: intIdentify,\n default: true,\n tag: 'tag:yaml.org,2002:int',\n test: /^-?(?:0|[1-9][0-9]*)$/,\n resolve: (str, _onError, { intAsBigInt }) => intAsBigInt ? BigInt(str) : parseInt(str, 10),\n stringify: ({ value }) => intIdentify(value) ? value.toString() : JSON.stringify(value)\n },\n {\n identify: value => typeof value === 'number',\n default: true,\n tag: 'tag:yaml.org,2002:float',\n test: /^-?(?:0|[1-9][0-9]*)(?:\\.[0-9]*)?(?:[eE][-+]?[0-9]+)?$/,\n resolve: str => parseFloat(str),\n stringify: stringifyJSON\n }\n];\nconst jsonError = {\n default: true,\n tag: '',\n test: /^/,\n resolve(str, onError) {\n onError(`Unresolved plain scalar ${JSON.stringify(str)}`);\n return str;\n }\n};\nconst schema = [map.map, seq.seq].concat(jsonScalars, jsonError);\n\nexports.schema = schema;\n","'use strict';\n\nvar node_buffer = require('buffer');\nvar Scalar = require('../../nodes/Scalar.js');\nvar stringifyString = require('../../stringify/stringifyString.js');\n\nconst binary = {\n identify: value => value instanceof Uint8Array, // Buffer inherits from Uint8Array\n default: false,\n tag: 'tag:yaml.org,2002:binary',\n /**\n * Returns a Buffer in node and an Uint8Array in browsers\n *\n * To use the resulting buffer as an image, you'll want to do something like:\n *\n * const blob = new Blob([buffer], { type: 'image/jpeg' })\n * document.querySelector('#photo').src = URL.createObjectURL(blob)\n */\n resolve(src, onError) {\n if (typeof node_buffer.Buffer === 'function') {\n return node_buffer.Buffer.from(src, 'base64');\n }\n else if (typeof atob === 'function') {\n // On IE 11, atob() can't handle newlines\n const str = atob(src.replace(/[\\n\\r]/g, ''));\n const buffer = new Uint8Array(str.length);\n for (let i = 0; i < str.length; ++i)\n buffer[i] = str.charCodeAt(i);\n return buffer;\n }\n else {\n onError('This environment does not support reading binary tags; either Buffer or atob is required');\n return src;\n }\n },\n stringify({ comment, type, value }, ctx, onComment, onChompKeep) {\n if (!value)\n return '';\n const buf = value; // checked earlier by binary.identify()\n let str;\n if (typeof node_buffer.Buffer === 'function') {\n str =\n buf instanceof node_buffer.Buffer\n ? buf.toString('base64')\n : node_buffer.Buffer.from(buf.buffer).toString('base64');\n }\n else if (typeof btoa === 'function') {\n let s = '';\n for (let i = 0; i < buf.length; ++i)\n s += String.fromCharCode(buf[i]);\n str = btoa(s);\n }\n else {\n throw new Error('This environment does not support writing binary tags; either Buffer or btoa is required');\n }\n type ?? (type = Scalar.Scalar.BLOCK_LITERAL);\n if (type !== Scalar.Scalar.QUOTE_DOUBLE) {\n const lineWidth = Math.max(ctx.options.lineWidth - ctx.indent.length, ctx.options.minContentWidth);\n const n = Math.ceil(str.length / lineWidth);\n const lines = new Array(n);\n for (let i = 0, o = 0; i < n; ++i, o += lineWidth) {\n lines[i] = str.substr(o, lineWidth);\n }\n str = lines.join(type === Scalar.Scalar.BLOCK_LITERAL ? '\\n' : ' ');\n }\n return stringifyString.stringifyString({ comment, type, value: str }, ctx, onComment, onChompKeep);\n }\n};\n\nexports.binary = binary;\n","'use strict';\n\nvar identity = require('../../nodes/identity.js');\nvar Pair = require('../../nodes/Pair.js');\nvar Scalar = require('../../nodes/Scalar.js');\nvar YAMLSeq = require('../../nodes/YAMLSeq.js');\n\nfunction resolvePairs(seq, onError) {\n if (identity.isSeq(seq)) {\n for (let i = 0; i < seq.items.length; ++i) {\n let item = seq.items[i];\n if (identity.isPair(item))\n continue;\n else if (identity.isMap(item)) {\n if (item.items.length > 1)\n onError('Each pair must have its own sequence indicator');\n const pair = item.items[0] || new Pair.Pair(new Scalar.Scalar(null));\n if (item.commentBefore)\n pair.key.commentBefore = pair.key.commentBefore\n ? `${item.commentBefore}\\n${pair.key.commentBefore}`\n : item.commentBefore;\n if (item.comment) {\n const cn = pair.value ?? pair.key;\n cn.comment = cn.comment\n ? `${item.comment}\\n${cn.comment}`\n : item.comment;\n }\n item = pair;\n }\n seq.items[i] = identity.isPair(item) ? item : new Pair.Pair(item);\n }\n }\n else\n onError('Expected a sequence for this tag');\n return seq;\n}\nfunction createPairs(schema, iterable, ctx) {\n const { replacer } = ctx;\n const pairs = new YAMLSeq.YAMLSeq(schema);\n pairs.tag = 'tag:yaml.org,2002:pairs';\n let i = 0;\n if (iterable && Symbol.iterator in Object(iterable))\n for (let it of iterable) {\n if (typeof replacer === 'function')\n it = replacer.call(iterable, String(i++), it);\n let key, value;\n if (Array.isArray(it)) {\n if (it.length === 2) {\n key = it[0];\n value = it[1];\n }\n else\n throw new TypeError(`Expected [key, value] tuple: ${it}`);\n }\n else if (it && it instanceof Object) {\n const keys = Object.keys(it);\n if (keys.length === 1) {\n key = keys[0];\n value = it[key];\n }\n else {\n throw new TypeError(`Expected tuple with one key, not ${keys.length} keys`);\n }\n }\n else {\n key = it;\n }\n pairs.items.push(Pair.createPair(key, value, ctx));\n }\n return pairs;\n}\nconst pairs = {\n collection: 'seq',\n default: false,\n tag: 'tag:yaml.org,2002:pairs',\n resolve: resolvePairs,\n createNode: createPairs\n};\n\nexports.createPairs = createPairs;\nexports.pairs = pairs;\nexports.resolvePairs = resolvePairs;\n","'use strict';\n\nvar identity = require('../../nodes/identity.js');\nvar toJS = require('../../nodes/toJS.js');\nvar YAMLMap = require('../../nodes/YAMLMap.js');\nvar YAMLSeq = require('../../nodes/YAMLSeq.js');\nvar pairs = require('./pairs.js');\n\nclass YAMLOMap extends YAMLSeq.YAMLSeq {\n constructor() {\n super();\n this.add = YAMLMap.YAMLMap.prototype.add.bind(this);\n this.delete = YAMLMap.YAMLMap.prototype.delete.bind(this);\n this.get = YAMLMap.YAMLMap.prototype.get.bind(this);\n this.has = YAMLMap.YAMLMap.prototype.has.bind(this);\n this.set = YAMLMap.YAMLMap.prototype.set.bind(this);\n this.tag = YAMLOMap.tag;\n }\n /**\n * If `ctx` is given, the return type is actually `Map`,\n * but TypeScript won't allow widening the signature of a child method.\n */\n toJSON(_, ctx) {\n if (!ctx)\n return super.toJSON(_);\n const map = new Map();\n if (ctx?.onCreate)\n ctx.onCreate(map);\n for (const pair of this.items) {\n let key, value;\n if (identity.isPair(pair)) {\n key = toJS.toJS(pair.key, '', ctx);\n value = toJS.toJS(pair.value, key, ctx);\n }\n else {\n key = toJS.toJS(pair, '', ctx);\n }\n if (map.has(key))\n throw new Error('Ordered maps must not include duplicate keys');\n map.set(key, value);\n }\n return map;\n }\n static from(schema, iterable, ctx) {\n const pairs$1 = pairs.createPairs(schema, iterable, ctx);\n const omap = new this();\n omap.items = pairs$1.items;\n return omap;\n }\n}\nYAMLOMap.tag = 'tag:yaml.org,2002:omap';\nconst omap = {\n collection: 'seq',\n identify: value => value instanceof Map,\n nodeClass: YAMLOMap,\n default: false,\n tag: 'tag:yaml.org,2002:omap',\n resolve(seq, onError) {\n const pairs$1 = pairs.resolvePairs(seq, onError);\n const seenKeys = [];\n for (const { key } of pairs$1.items) {\n if (identity.isScalar(key)) {\n if (seenKeys.includes(key.value)) {\n onError(`Ordered maps must not include duplicate keys: ${key.value}`);\n }\n else {\n seenKeys.push(key.value);\n }\n }\n }\n return Object.assign(new YAMLOMap(), pairs$1);\n },\n createNode: (schema, iterable, ctx) => YAMLOMap.from(schema, iterable, ctx)\n};\n\nexports.YAMLOMap = YAMLOMap;\nexports.omap = omap;\n","'use strict';\n\nvar Scalar = require('../../nodes/Scalar.js');\n\nfunction boolStringify({ value, source }, ctx) {\n const boolObj = value ? trueTag : falseTag;\n if (source && boolObj.test.test(source))\n return source;\n return value ? ctx.options.trueStr : ctx.options.falseStr;\n}\nconst trueTag = {\n identify: value => value === true,\n default: true,\n tag: 'tag:yaml.org,2002:bool',\n test: /^(?:Y|y|[Yy]es|YES|[Tt]rue|TRUE|[Oo]n|ON)$/,\n resolve: () => new Scalar.Scalar(true),\n stringify: boolStringify\n};\nconst falseTag = {\n identify: value => value === false,\n default: true,\n tag: 'tag:yaml.org,2002:bool',\n test: /^(?:N|n|[Nn]o|NO|[Ff]alse|FALSE|[Oo]ff|OFF)$/,\n resolve: () => new Scalar.Scalar(false),\n stringify: boolStringify\n};\n\nexports.falseTag = falseTag;\nexports.trueTag = trueTag;\n","'use strict';\n\nvar Scalar = require('../../nodes/Scalar.js');\nvar stringifyNumber = require('../../stringify/stringifyNumber.js');\n\nconst floatNaN = {\n identify: value => typeof value === 'number',\n default: true,\n tag: 'tag:yaml.org,2002:float',\n test: /^(?:[-+]?\\.(?:inf|Inf|INF)|\\.nan|\\.NaN|\\.NAN)$/,\n resolve: (str) => str.slice(-3).toLowerCase() === 'nan'\n ? NaN\n : str[0] === '-'\n ? Number.NEGATIVE_INFINITY\n : Number.POSITIVE_INFINITY,\n stringify: stringifyNumber.stringifyNumber\n};\nconst floatExp = {\n identify: value => typeof value === 'number',\n default: true,\n tag: 'tag:yaml.org,2002:float',\n format: 'EXP',\n test: /^[-+]?(?:[0-9][0-9_]*)?(?:\\.[0-9_]*)?[eE][-+]?[0-9]+$/,\n resolve: (str) => parseFloat(str.replace(/_/g, '')),\n stringify(node) {\n const num = Number(node.value);\n return isFinite(num) ? num.toExponential() : stringifyNumber.stringifyNumber(node);\n }\n};\nconst float = {\n identify: value => typeof value === 'number',\n default: true,\n tag: 'tag:yaml.org,2002:float',\n test: /^[-+]?(?:[0-9][0-9_]*)?\\.[0-9_]*$/,\n resolve(str) {\n const node = new Scalar.Scalar(parseFloat(str.replace(/_/g, '')));\n const dot = str.indexOf('.');\n if (dot !== -1) {\n const f = str.substring(dot + 1).replace(/_/g, '');\n if (f[f.length - 1] === '0')\n node.minFractionDigits = f.length;\n }\n return node;\n },\n stringify: stringifyNumber.stringifyNumber\n};\n\nexports.float = float;\nexports.floatExp = floatExp;\nexports.floatNaN = floatNaN;\n","'use strict';\n\nvar stringifyNumber = require('../../stringify/stringifyNumber.js');\n\nconst intIdentify = (value) => typeof value === 'bigint' || Number.isInteger(value);\nfunction intResolve(str, offset, radix, { intAsBigInt }) {\n const sign = str[0];\n if (sign === '-' || sign === '+')\n offset += 1;\n str = str.substring(offset).replace(/_/g, '');\n if (intAsBigInt) {\n switch (radix) {\n case 2:\n str = `0b${str}`;\n break;\n case 8:\n str = `0o${str}`;\n break;\n case 16:\n str = `0x${str}`;\n break;\n }\n const n = BigInt(str);\n return sign === '-' ? BigInt(-1) * n : n;\n }\n const n = parseInt(str, radix);\n return sign === '-' ? -1 * n : n;\n}\nfunction intStringify(node, radix, prefix) {\n const { value } = node;\n if (intIdentify(value)) {\n const str = value.toString(radix);\n return value < 0 ? '-' + prefix + str.substr(1) : prefix + str;\n }\n return stringifyNumber.stringifyNumber(node);\n}\nconst intBin = {\n identify: intIdentify,\n default: true,\n tag: 'tag:yaml.org,2002:int',\n format: 'BIN',\n test: /^[-+]?0b[0-1_]+$/,\n resolve: (str, _onError, opt) => intResolve(str, 2, 2, opt),\n stringify: node => intStringify(node, 2, '0b')\n};\nconst intOct = {\n identify: intIdentify,\n default: true,\n tag: 'tag:yaml.org,2002:int',\n format: 'OCT',\n test: /^[-+]?0[0-7_]+$/,\n resolve: (str, _onError, opt) => intResolve(str, 1, 8, opt),\n stringify: node => intStringify(node, 8, '0')\n};\nconst int = {\n identify: intIdentify,\n default: true,\n tag: 'tag:yaml.org,2002:int',\n test: /^[-+]?[0-9][0-9_]*$/,\n resolve: (str, _onError, opt) => intResolve(str, 0, 10, opt),\n stringify: stringifyNumber.stringifyNumber\n};\nconst intHex = {\n identify: intIdentify,\n default: true,\n tag: 'tag:yaml.org,2002:int',\n format: 'HEX',\n test: /^[-+]?0x[0-9a-fA-F_]+$/,\n resolve: (str, _onError, opt) => intResolve(str, 2, 16, opt),\n stringify: node => intStringify(node, 16, '0x')\n};\n\nexports.int = int;\nexports.intBin = intBin;\nexports.intHex = intHex;\nexports.intOct = intOct;\n","'use strict';\n\nvar identity = require('../../nodes/identity.js');\nvar Pair = require('../../nodes/Pair.js');\nvar YAMLMap = require('../../nodes/YAMLMap.js');\n\nclass YAMLSet extends YAMLMap.YAMLMap {\n constructor(schema) {\n super(schema);\n this.tag = YAMLSet.tag;\n }\n add(key) {\n let pair;\n if (identity.isPair(key))\n pair = key;\n else if (key &&\n typeof key === 'object' &&\n 'key' in key &&\n 'value' in key &&\n key.value === null)\n pair = new Pair.Pair(key.key, null);\n else\n pair = new Pair.Pair(key, null);\n const prev = YAMLMap.findPair(this.items, pair.key);\n if (!prev)\n this.items.push(pair);\n }\n /**\n * If `keepPair` is `true`, returns the Pair matching `key`.\n * Otherwise, returns the value of that Pair's key.\n */\n get(key, keepPair) {\n const pair = YAMLMap.findPair(this.items, key);\n return !keepPair && identity.isPair(pair)\n ? identity.isScalar(pair.key)\n ? pair.key.value\n : pair.key\n : pair;\n }\n set(key, value) {\n if (typeof value !== 'boolean')\n throw new Error(`Expected boolean value for set(key, value) in a YAML set, not ${typeof value}`);\n const prev = YAMLMap.findPair(this.items, key);\n if (prev && !value) {\n this.items.splice(this.items.indexOf(prev), 1);\n }\n else if (!prev && value) {\n this.items.push(new Pair.Pair(key));\n }\n }\n toJSON(_, ctx) {\n return super.toJSON(_, ctx, Set);\n }\n toString(ctx, onComment, onChompKeep) {\n if (!ctx)\n return JSON.stringify(this);\n if (this.hasAllNullValues(true))\n return super.toString(Object.assign({}, ctx, { allNullValues: true }), onComment, onChompKeep);\n else\n throw new Error('Set items must all have null values');\n }\n static from(schema, iterable, ctx) {\n const { replacer } = ctx;\n const set = new this(schema);\n if (iterable && Symbol.iterator in Object(iterable))\n for (let value of iterable) {\n if (typeof replacer === 'function')\n value = replacer.call(iterable, value, value);\n set.items.push(Pair.createPair(value, null, ctx));\n }\n return set;\n }\n}\nYAMLSet.tag = 'tag:yaml.org,2002:set';\nconst set = {\n collection: 'map',\n identify: value => value instanceof Set,\n nodeClass: YAMLSet,\n default: false,\n tag: 'tag:yaml.org,2002:set',\n createNode: (schema, iterable, ctx) => YAMLSet.from(schema, iterable, ctx),\n resolve(map, onError) {\n if (identity.isMap(map)) {\n if (map.hasAllNullValues(true))\n return Object.assign(new YAMLSet(), map);\n else\n onError('Set items must all have null values');\n }\n else\n onError('Expected a mapping for this tag');\n return map;\n }\n};\n\nexports.YAMLSet = YAMLSet;\nexports.set = set;\n","'use strict';\n\nvar stringifyNumber = require('../../stringify/stringifyNumber.js');\n\n/** Internal types handle bigint as number, because TS can't figure it out. */\nfunction parseSexagesimal(str, asBigInt) {\n const sign = str[0];\n const parts = sign === '-' || sign === '+' ? str.substring(1) : str;\n const num = (n) => asBigInt ? BigInt(n) : Number(n);\n const res = parts\n .replace(/_/g, '')\n .split(':')\n .reduce((res, p) => res * num(60) + num(p), num(0));\n return (sign === '-' ? num(-1) * res : res);\n}\n/**\n * hhhh:mm:ss.sss\n *\n * Internal types handle bigint as number, because TS can't figure it out.\n */\nfunction stringifySexagesimal(node) {\n let { value } = node;\n let num = (n) => n;\n if (typeof value === 'bigint')\n num = n => BigInt(n);\n else if (isNaN(value) || !isFinite(value))\n return stringifyNumber.stringifyNumber(node);\n let sign = '';\n if (value < 0) {\n sign = '-';\n value *= num(-1);\n }\n const _60 = num(60);\n const parts = [value % _60]; // seconds, including ms\n if (value < 60) {\n parts.unshift(0); // at least one : is required\n }\n else {\n value = (value - parts[0]) / _60;\n parts.unshift(value % _60); // minutes\n if (value >= 60) {\n value = (value - parts[0]) / _60;\n parts.unshift(value); // hours\n }\n }\n return (sign +\n parts\n .map(n => String(n).padStart(2, '0'))\n .join(':')\n .replace(/000000\\d*$/, '') // % 60 may introduce error\n );\n}\nconst intTime = {\n identify: value => typeof value === 'bigint' || Number.isInteger(value),\n default: true,\n tag: 'tag:yaml.org,2002:int',\n format: 'TIME',\n test: /^[-+]?[0-9][0-9_]*(?::[0-5]?[0-9])+$/,\n resolve: (str, _onError, { intAsBigInt }) => parseSexagesimal(str, intAsBigInt),\n stringify: stringifySexagesimal\n};\nconst floatTime = {\n identify: value => typeof value === 'number',\n default: true,\n tag: 'tag:yaml.org,2002:float',\n format: 'TIME',\n test: /^[-+]?[0-9][0-9_]*(?::[0-5]?[0-9])+\\.[0-9_]*$/,\n resolve: str => parseSexagesimal(str, false),\n stringify: stringifySexagesimal\n};\nconst timestamp = {\n identify: value => value instanceof Date,\n default: true,\n tag: 'tag:yaml.org,2002:timestamp',\n // If the time zone is omitted, the timestamp is assumed to be specified in UTC. The time part\n // may be omitted altogether, resulting in a date format. In such a case, the time part is\n // assumed to be 00:00:00Z (start of day, UTC).\n test: RegExp('^([0-9]{4})-([0-9]{1,2})-([0-9]{1,2})' + // YYYY-Mm-Dd\n '(?:' + // time is optional\n '(?:t|T|[ \\\\t]+)' + // t | T | whitespace\n '([0-9]{1,2}):([0-9]{1,2}):([0-9]{1,2}(\\\\.[0-9]+)?)' + // Hh:Mm:Ss(.ss)?\n '(?:[ \\\\t]*(Z|[-+][012]?[0-9](?::[0-9]{2})?))?' + // Z | +5 | -03:30\n ')?$'),\n resolve(str) {\n const match = str.match(timestamp.test);\n if (!match)\n throw new Error('!!timestamp expects a date, starting with yyyy-mm-dd');\n const [, year, month, day, hour, minute, second] = match.map(Number);\n const millisec = match[7] ? Number((match[7] + '00').substr(1, 3)) : 0;\n let date = Date.UTC(year, month - 1, day, hour || 0, minute || 0, second || 0, millisec);\n const tz = match[8];\n if (tz && tz !== 'Z') {\n let d = parseSexagesimal(tz, false);\n if (Math.abs(d) < 30)\n d *= 60;\n date -= 60000 * d;\n }\n return new Date(date);\n },\n stringify: ({ value }) => value?.toISOString().replace(/(T00:00:00)?\\.000Z$/, '') ?? ''\n};\n\nexports.floatTime = floatTime;\nexports.intTime = intTime;\nexports.timestamp = timestamp;\n","'use strict';\n\nvar map = require('../common/map.js');\nvar _null = require('../common/null.js');\nvar seq = require('../common/seq.js');\nvar string = require('../common/string.js');\nvar binary = require('./binary.js');\nvar bool = require('./bool.js');\nvar float = require('./float.js');\nvar int = require('./int.js');\nvar merge = require('./merge.js');\nvar omap = require('./omap.js');\nvar pairs = require('./pairs.js');\nvar set = require('./set.js');\nvar timestamp = require('./timestamp.js');\n\nconst schema = [\n map.map,\n seq.seq,\n string.string,\n _null.nullTag,\n bool.trueTag,\n bool.falseTag,\n int.intBin,\n int.intOct,\n int.int,\n int.intHex,\n float.floatNaN,\n float.floatExp,\n float.float,\n binary.binary,\n merge.merge,\n omap.omap,\n pairs.pairs,\n set.set,\n timestamp.intTime,\n timestamp.floatTime,\n timestamp.timestamp\n];\n\nexports.schema = schema;\n","'use strict';\n\nvar map = require('./common/map.js');\nvar _null = require('./common/null.js');\nvar seq = require('./common/seq.js');\nvar string = require('./common/string.js');\nvar bool = require('./core/bool.js');\nvar float = require('./core/float.js');\nvar int = require('./core/int.js');\nvar schema = require('./core/schema.js');\nvar schema$1 = require('./json/schema.js');\nvar binary = require('./yaml-1.1/binary.js');\nvar merge = require('./yaml-1.1/merge.js');\nvar omap = require('./yaml-1.1/omap.js');\nvar pairs = require('./yaml-1.1/pairs.js');\nvar schema$2 = require('./yaml-1.1/schema.js');\nvar set = require('./yaml-1.1/set.js');\nvar timestamp = require('./yaml-1.1/timestamp.js');\n\nconst schemas = new Map([\n ['core', schema.schema],\n ['failsafe', [map.map, seq.seq, string.string]],\n ['json', schema$1.schema],\n ['yaml11', schema$2.schema],\n ['yaml-1.1', schema$2.schema]\n]);\nconst tagsByName = {\n binary: binary.binary,\n bool: bool.boolTag,\n float: float.float,\n floatExp: float.floatExp,\n floatNaN: float.floatNaN,\n floatTime: timestamp.floatTime,\n int: int.int,\n intHex: int.intHex,\n intOct: int.intOct,\n intTime: timestamp.intTime,\n map: map.map,\n merge: merge.merge,\n null: _null.nullTag,\n omap: omap.omap,\n pairs: pairs.pairs,\n seq: seq.seq,\n set: set.set,\n timestamp: timestamp.timestamp\n};\nconst coreKnownTags = {\n 'tag:yaml.org,2002:binary': binary.binary,\n 'tag:yaml.org,2002:merge': merge.merge,\n 'tag:yaml.org,2002:omap': omap.omap,\n 'tag:yaml.org,2002:pairs': pairs.pairs,\n 'tag:yaml.org,2002:set': set.set,\n 'tag:yaml.org,2002:timestamp': timestamp.timestamp\n};\nfunction getTags(customTags, schemaName, addMergeTag) {\n const schemaTags = schemas.get(schemaName);\n if (schemaTags && !customTags) {\n return addMergeTag && !schemaTags.includes(merge.merge)\n ? schemaTags.concat(merge.merge)\n : schemaTags.slice();\n }\n let tags = schemaTags;\n if (!tags) {\n if (Array.isArray(customTags))\n tags = [];\n else {\n const keys = Array.from(schemas.keys())\n .filter(key => key !== 'yaml11')\n .map(key => JSON.stringify(key))\n .join(', ');\n throw new Error(`Unknown schema \"${schemaName}\"; use one of ${keys} or define customTags array`);\n }\n }\n if (Array.isArray(customTags)) {\n for (const tag of customTags)\n tags = tags.concat(tag);\n }\n else if (typeof customTags === 'function') {\n tags = customTags(tags.slice());\n }\n if (addMergeTag)\n tags = tags.concat(merge.merge);\n return tags.reduce((tags, tag) => {\n const tagObj = typeof tag === 'string' ? tagsByName[tag] : tag;\n if (!tagObj) {\n const tagName = JSON.stringify(tag);\n const keys = Object.keys(tagsByName)\n .map(key => JSON.stringify(key))\n .join(', ');\n throw new Error(`Unknown custom tag ${tagName}; use one of ${keys}`);\n }\n if (!tags.includes(tagObj))\n tags.push(tagObj);\n return tags;\n }, []);\n}\n\nexports.coreKnownTags = coreKnownTags;\nexports.getTags = getTags;\n","'use strict';\n\nvar identity = require('../nodes/identity.js');\nvar map = require('./common/map.js');\nvar seq = require('./common/seq.js');\nvar string = require('./common/string.js');\nvar tags = require('./tags.js');\n\nconst sortMapEntriesByKey = (a, b) => a.key < b.key ? -1 : a.key > b.key ? 1 : 0;\nclass Schema {\n constructor({ compat, customTags, merge, resolveKnownTags, schema, sortMapEntries, toStringDefaults }) {\n this.compat = Array.isArray(compat)\n ? tags.getTags(compat, 'compat')\n : compat\n ? tags.getTags(null, compat)\n : null;\n this.name = (typeof schema === 'string' && schema) || 'core';\n this.knownTags = resolveKnownTags ? tags.coreKnownTags : {};\n this.tags = tags.getTags(customTags, this.name, merge);\n this.toStringOptions = toStringDefaults ?? null;\n Object.defineProperty(this, identity.MAP, { value: map.map });\n Object.defineProperty(this, identity.SCALAR, { value: string.string });\n Object.defineProperty(this, identity.SEQ, { value: seq.seq });\n // Used by createMap()\n this.sortMapEntries =\n typeof sortMapEntries === 'function'\n ? sortMapEntries\n : sortMapEntries === true\n ? sortMapEntriesByKey\n : null;\n }\n clone() {\n const copy = Object.create(Schema.prototype, Object.getOwnPropertyDescriptors(this));\n copy.tags = this.tags.slice();\n return copy;\n }\n}\n\nexports.Schema = Schema;\n","'use strict';\n\nvar identity = require('../nodes/identity.js');\nvar stringify = require('./stringify.js');\nvar stringifyComment = require('./stringifyComment.js');\n\nfunction stringifyDocument(doc, options) {\n const lines = [];\n let hasDirectives = options.directives === true;\n if (options.directives !== false && doc.directives) {\n const dir = doc.directives.toString(doc);\n if (dir) {\n lines.push(dir);\n hasDirectives = true;\n }\n else if (doc.directives.docStart)\n hasDirectives = true;\n }\n if (hasDirectives)\n lines.push('---');\n const ctx = stringify.createStringifyContext(doc, options);\n const { commentString } = ctx.options;\n if (doc.commentBefore) {\n if (lines.length !== 1)\n lines.unshift('');\n const cs = commentString(doc.commentBefore);\n lines.unshift(stringifyComment.indentComment(cs, ''));\n }\n let chompKeep = false;\n let contentComment = null;\n if (doc.contents) {\n if (identity.isNode(doc.contents)) {\n if (doc.contents.spaceBefore && hasDirectives)\n lines.push('');\n if (doc.contents.commentBefore) {\n const cs = commentString(doc.contents.commentBefore);\n lines.push(stringifyComment.indentComment(cs, ''));\n }\n // top-level block scalars need to be indented if followed by a comment\n ctx.forceBlockIndent = !!doc.comment;\n contentComment = doc.contents.comment;\n }\n const onChompKeep = contentComment ? undefined : () => (chompKeep = true);\n let body = stringify.stringify(doc.contents, ctx, () => (contentComment = null), onChompKeep);\n if (contentComment)\n body += stringifyComment.lineComment(body, '', commentString(contentComment));\n if ((body[0] === '|' || body[0] === '>') &&\n lines[lines.length - 1] === '---') {\n // Top-level block scalars with a preceding doc marker ought to use the\n // same line for their header.\n lines[lines.length - 1] = `--- ${body}`;\n }\n else\n lines.push(body);\n }\n else {\n lines.push(stringify.stringify(doc.contents, ctx));\n }\n if (doc.directives?.docEnd) {\n if (doc.comment) {\n const cs = commentString(doc.comment);\n if (cs.includes('\\n')) {\n lines.push('...');\n lines.push(stringifyComment.indentComment(cs, ''));\n }\n else {\n lines.push(`... ${cs}`);\n }\n }\n else {\n lines.push('...');\n }\n }\n else {\n let dc = doc.comment;\n if (dc && chompKeep)\n dc = dc.replace(/^\\n+/, '');\n if (dc) {\n if ((!chompKeep || contentComment) && lines[lines.length - 1] !== '')\n lines.push('');\n lines.push(stringifyComment.indentComment(commentString(dc), ''));\n }\n }\n return lines.join('\\n') + '\\n';\n}\n\nexports.stringifyDocument = stringifyDocument;\n","'use strict';\n\nvar Alias = require('../nodes/Alias.js');\nvar Collection = require('../nodes/Collection.js');\nvar identity = require('../nodes/identity.js');\nvar Pair = require('../nodes/Pair.js');\nvar toJS = require('../nodes/toJS.js');\nvar Schema = require('../schema/Schema.js');\nvar stringifyDocument = require('../stringify/stringifyDocument.js');\nvar anchors = require('./anchors.js');\nvar applyReviver = require('./applyReviver.js');\nvar createNode = require('./createNode.js');\nvar directives = require('./directives.js');\n\nclass Document {\n constructor(value, replacer, options) {\n /** A comment before this Document */\n this.commentBefore = null;\n /** A comment immediately after this Document */\n this.comment = null;\n /** Errors encountered during parsing. */\n this.errors = [];\n /** Warnings encountered during parsing. */\n this.warnings = [];\n Object.defineProperty(this, identity.NODE_TYPE, { value: identity.DOC });\n let _replacer = null;\n if (typeof replacer === 'function' || Array.isArray(replacer)) {\n _replacer = replacer;\n }\n else if (options === undefined && replacer) {\n options = replacer;\n replacer = undefined;\n }\n const opt = Object.assign({\n intAsBigInt: false,\n keepSourceTokens: false,\n logLevel: 'warn',\n prettyErrors: true,\n strict: true,\n stringKeys: false,\n uniqueKeys: true,\n version: '1.2'\n }, options);\n this.options = opt;\n let { version } = opt;\n if (options?._directives) {\n this.directives = options._directives.atDocument();\n if (this.directives.yaml.explicit)\n version = this.directives.yaml.version;\n }\n else\n this.directives = new directives.Directives({ version });\n this.setSchema(version, options);\n // @ts-expect-error We can't really know that this matches Contents.\n this.contents =\n value === undefined ? null : this.createNode(value, _replacer, options);\n }\n /**\n * Create a deep copy of this Document and its contents.\n *\n * Custom Node values that inherit from `Object` still refer to their original instances.\n */\n clone() {\n const copy = Object.create(Document.prototype, {\n [identity.NODE_TYPE]: { value: identity.DOC }\n });\n copy.commentBefore = this.commentBefore;\n copy.comment = this.comment;\n copy.errors = this.errors.slice();\n copy.warnings = this.warnings.slice();\n copy.options = Object.assign({}, this.options);\n if (this.directives)\n copy.directives = this.directives.clone();\n copy.schema = this.schema.clone();\n // @ts-expect-error We can't really know that this matches Contents.\n copy.contents = identity.isNode(this.contents)\n ? this.contents.clone(copy.schema)\n : this.contents;\n if (this.range)\n copy.range = this.range.slice();\n return copy;\n }\n /** Adds a value to the document. */\n add(value) {\n if (assertCollection(this.contents))\n this.contents.add(value);\n }\n /** Adds a value to the document. */\n addIn(path, value) {\n if (assertCollection(this.contents))\n this.contents.addIn(path, value);\n }\n /**\n * Create a new `Alias` node, ensuring that the target `node` has the required anchor.\n *\n * If `node` already has an anchor, `name` is ignored.\n * Otherwise, the `node.anchor` value will be set to `name`,\n * or if an anchor with that name is already present in the document,\n * `name` will be used as a prefix for a new unique anchor.\n * If `name` is undefined, the generated anchor will use 'a' as a prefix.\n */\n createAlias(node, name) {\n if (!node.anchor) {\n const prev = anchors.anchorNames(this);\n node.anchor =\n // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing\n !name || prev.has(name) ? anchors.findNewAnchor(name || 'a', prev) : name;\n }\n return new Alias.Alias(node.anchor);\n }\n createNode(value, replacer, options) {\n let _replacer = undefined;\n if (typeof replacer === 'function') {\n value = replacer.call({ '': value }, '', value);\n _replacer = replacer;\n }\n else if (Array.isArray(replacer)) {\n const keyToStr = (v) => typeof v === 'number' || v instanceof String || v instanceof Number;\n const asStr = replacer.filter(keyToStr).map(String);\n if (asStr.length > 0)\n replacer = replacer.concat(asStr);\n _replacer = replacer;\n }\n else if (options === undefined && replacer) {\n options = replacer;\n replacer = undefined;\n }\n const { aliasDuplicateObjects, anchorPrefix, flow, keepUndefined, onTagObj, tag } = options ?? {};\n const { onAnchor, setAnchors, sourceObjects } = anchors.createNodeAnchors(this, \n // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing\n anchorPrefix || 'a');\n const ctx = {\n aliasDuplicateObjects: aliasDuplicateObjects ?? true,\n keepUndefined: keepUndefined ?? false,\n onAnchor,\n onTagObj,\n replacer: _replacer,\n schema: this.schema,\n sourceObjects\n };\n const node = createNode.createNode(value, tag, ctx);\n if (flow && identity.isCollection(node))\n node.flow = true;\n setAnchors();\n return node;\n }\n /**\n * Convert a key and a value into a `Pair` using the current schema,\n * recursively wrapping all values as `Scalar` or `Collection` nodes.\n */\n createPair(key, value, options = {}) {\n const k = this.createNode(key, null, options);\n const v = this.createNode(value, null, options);\n return new Pair.Pair(k, v);\n }\n /**\n * Removes a value from the document.\n * @returns `true` if the item was found and removed.\n */\n delete(key) {\n return assertCollection(this.contents) ? this.contents.delete(key) : false;\n }\n /**\n * Removes a value from the document.\n * @returns `true` if the item was found and removed.\n */\n deleteIn(path) {\n if (Collection.isEmptyPath(path)) {\n if (this.contents == null)\n return false;\n // @ts-expect-error Presumed impossible if Strict extends false\n this.contents = null;\n return true;\n }\n return assertCollection(this.contents)\n ? this.contents.deleteIn(path)\n : false;\n }\n /**\n * Returns item at `key`, or `undefined` if not found. By default unwraps\n * scalar values from their surrounding node; to disable set `keepScalar` to\n * `true` (collections are always returned intact).\n */\n get(key, keepScalar) {\n return identity.isCollection(this.contents)\n ? this.contents.get(key, keepScalar)\n : undefined;\n }\n /**\n * Returns item at `path`, or `undefined` if not found. By default unwraps\n * scalar values from their surrounding node; to disable set `keepScalar` to\n * `true` (collections are always returned intact).\n */\n getIn(path, keepScalar) {\n if (Collection.isEmptyPath(path))\n return !keepScalar && identity.isScalar(this.contents)\n ? this.contents.value\n : this.contents;\n return identity.isCollection(this.contents)\n ? this.contents.getIn(path, keepScalar)\n : undefined;\n }\n /**\n * Checks if the document includes a value with the key `key`.\n */\n has(key) {\n return identity.isCollection(this.contents) ? this.contents.has(key) : false;\n }\n /**\n * Checks if the document includes a value at `path`.\n */\n hasIn(path) {\n if (Collection.isEmptyPath(path))\n return this.contents !== undefined;\n return identity.isCollection(this.contents) ? this.contents.hasIn(path) : false;\n }\n /**\n * Sets a value in this document. For `!!set`, `value` needs to be a\n * boolean to add/remove the item from the set.\n */\n set(key, value) {\n if (this.contents == null) {\n // @ts-expect-error We can't really know that this matches Contents.\n this.contents = Collection.collectionFromPath(this.schema, [key], value);\n }\n else if (assertCollection(this.contents)) {\n this.contents.set(key, value);\n }\n }\n /**\n * Sets a value in this document. For `!!set`, `value` needs to be a\n * boolean to add/remove the item from the set.\n */\n setIn(path, value) {\n if (Collection.isEmptyPath(path)) {\n // @ts-expect-error We can't really know that this matches Contents.\n this.contents = value;\n }\n else if (this.contents == null) {\n // @ts-expect-error We can't really know that this matches Contents.\n this.contents = Collection.collectionFromPath(this.schema, Array.from(path), value);\n }\n else if (assertCollection(this.contents)) {\n this.contents.setIn(path, value);\n }\n }\n /**\n * Change the YAML version and schema used by the document.\n * A `null` version disables support for directives, explicit tags, anchors, and aliases.\n * It also requires the `schema` option to be given as a `Schema` instance value.\n *\n * Overrides all previously set schema options.\n */\n setSchema(version, options = {}) {\n if (typeof version === 'number')\n version = String(version);\n let opt;\n switch (version) {\n case '1.1':\n if (this.directives)\n this.directives.yaml.version = '1.1';\n else\n this.directives = new directives.Directives({ version: '1.1' });\n opt = { resolveKnownTags: false, schema: 'yaml-1.1' };\n break;\n case '1.2':\n case 'next':\n if (this.directives)\n this.directives.yaml.version = version;\n else\n this.directives = new directives.Directives({ version });\n opt = { resolveKnownTags: true, schema: 'core' };\n break;\n case null:\n if (this.directives)\n delete this.directives;\n opt = null;\n break;\n default: {\n const sv = JSON.stringify(version);\n throw new Error(`Expected '1.1', '1.2' or null as first argument, but found: ${sv}`);\n }\n }\n // Not using `instanceof Schema` to allow for duck typing\n if (options.schema instanceof Object)\n this.schema = options.schema;\n else if (opt)\n this.schema = new Schema.Schema(Object.assign(opt, options));\n else\n throw new Error(`With a null YAML version, the { schema: Schema } option is required`);\n }\n // json & jsonArg are only used from toJSON()\n toJS({ json, jsonArg, mapAsMap, maxAliasCount, onAnchor, reviver } = {}) {\n const ctx = {\n anchors: new Map(),\n doc: this,\n keep: !json,\n mapAsMap: mapAsMap === true,\n mapKeyWarned: false,\n maxAliasCount: typeof maxAliasCount === 'number' ? maxAliasCount : 100\n };\n const res = toJS.toJS(this.contents, jsonArg ?? '', ctx);\n if (typeof onAnchor === 'function')\n for (const { count, res } of ctx.anchors.values())\n onAnchor(res, count);\n return typeof reviver === 'function'\n ? applyReviver.applyReviver(reviver, { '': res }, '', res)\n : res;\n }\n /**\n * A JSON representation of the document `contents`.\n *\n * @param jsonArg Used by `JSON.stringify` to indicate the array index or\n * property name.\n */\n toJSON(jsonArg, onAnchor) {\n return this.toJS({ json: true, jsonArg, mapAsMap: false, onAnchor });\n }\n /** A YAML representation of the document. */\n toString(options = {}) {\n if (this.errors.length > 0)\n throw new Error('Document with errors cannot be stringified');\n if ('indent' in options &&\n (!Number.isInteger(options.indent) || Number(options.indent) <= 0)) {\n const s = JSON.stringify(options.indent);\n throw new Error(`\"indent\" option must be a positive integer, not ${s}`);\n }\n return stringifyDocument.stringifyDocument(this, options);\n }\n}\nfunction assertCollection(contents) {\n if (identity.isCollection(contents))\n return true;\n throw new Error('Expected a YAML collection as document contents');\n}\n\nexports.Document = Document;\n","'use strict';\n\nclass YAMLError extends Error {\n constructor(name, pos, code, message) {\n super();\n this.name = name;\n this.code = code;\n this.message = message;\n this.pos = pos;\n }\n}\nclass YAMLParseError extends YAMLError {\n constructor(pos, code, message) {\n super('YAMLParseError', pos, code, message);\n }\n}\nclass YAMLWarning extends YAMLError {\n constructor(pos, code, message) {\n super('YAMLWarning', pos, code, message);\n }\n}\nconst prettifyError = (src, lc) => (error) => {\n if (error.pos[0] === -1)\n return;\n error.linePos = error.pos.map(pos => lc.linePos(pos));\n const { line, col } = error.linePos[0];\n error.message += ` at line ${line}, column ${col}`;\n let ci = col - 1;\n let lineStr = src\n .substring(lc.lineStarts[line - 1], lc.lineStarts[line])\n .replace(/[\\n\\r]+$/, '');\n // Trim to max 80 chars, keeping col position near the middle\n if (ci >= 60 && lineStr.length > 80) {\n const trimStart = Math.min(ci - 39, lineStr.length - 79);\n lineStr = '…' + lineStr.substring(trimStart);\n ci -= trimStart - 1;\n }\n if (lineStr.length > 80)\n lineStr = lineStr.substring(0, 79) + '…';\n // Include previous line in context if pointing at line start\n if (line > 1 && /^ *$/.test(lineStr.substring(0, ci))) {\n // Regexp won't match if start is trimmed\n let prev = src.substring(lc.lineStarts[line - 2], lc.lineStarts[line - 1]);\n if (prev.length > 80)\n prev = prev.substring(0, 79) + '…\\n';\n lineStr = prev + lineStr;\n }\n if (/[^ ]/.test(lineStr)) {\n let count = 1;\n const end = error.linePos[1];\n if (end && end.line === line && end.col > col) {\n count = Math.max(1, Math.min(end.col - col, 80 - ci));\n }\n const pointer = ' '.repeat(ci) + '^'.repeat(count);\n error.message += `:\\n\\n${lineStr}\\n${pointer}\\n`;\n }\n};\n\nexports.YAMLError = YAMLError;\nexports.YAMLParseError = YAMLParseError;\nexports.YAMLWarning = YAMLWarning;\nexports.prettifyError = prettifyError;\n","'use strict';\n\nfunction resolveProps(tokens, { flow, indicator, next, offset, onError, parentIndent, startOnNewline }) {\n let spaceBefore = false;\n let atNewline = startOnNewline;\n let hasSpace = startOnNewline;\n let comment = '';\n let commentSep = '';\n let hasNewline = false;\n let reqSpace = false;\n let tab = null;\n let anchor = null;\n let tag = null;\n let newlineAfterProp = null;\n let comma = null;\n let found = null;\n let start = null;\n for (const token of tokens) {\n if (reqSpace) {\n if (token.type !== 'space' &&\n token.type !== 'newline' &&\n token.type !== 'comma')\n onError(token.offset, 'MISSING_CHAR', 'Tags and anchors must be separated from the next token by white space');\n reqSpace = false;\n }\n if (tab) {\n if (atNewline && token.type !== 'comment' && token.type !== 'newline') {\n onError(tab, 'TAB_AS_INDENT', 'Tabs are not allowed as indentation');\n }\n tab = null;\n }\n switch (token.type) {\n case 'space':\n // At the doc level, tabs at line start may be parsed\n // as leading white space rather than indentation.\n // In a flow collection, only the parser handles indent.\n if (!flow &&\n (indicator !== 'doc-start' || next?.type !== 'flow-collection') &&\n token.source.includes('\\t')) {\n tab = token;\n }\n hasSpace = true;\n break;\n case 'comment': {\n if (!hasSpace)\n onError(token, 'MISSING_CHAR', 'Comments must be separated from other tokens by white space characters');\n const cb = token.source.substring(1) || ' ';\n if (!comment)\n comment = cb;\n else\n comment += commentSep + cb;\n commentSep = '';\n atNewline = false;\n break;\n }\n case 'newline':\n if (atNewline) {\n if (comment)\n comment += token.source;\n else if (!found || indicator !== 'seq-item-ind')\n spaceBefore = true;\n }\n else\n commentSep += token.source;\n atNewline = true;\n hasNewline = true;\n if (anchor || tag)\n newlineAfterProp = token;\n hasSpace = true;\n break;\n case 'anchor':\n if (anchor)\n onError(token, 'MULTIPLE_ANCHORS', 'A node can have at most one anchor');\n if (token.source.endsWith(':'))\n onError(token.offset + token.source.length - 1, 'BAD_ALIAS', 'Anchor ending in : is ambiguous', true);\n anchor = token;\n start ?? (start = token.offset);\n atNewline = false;\n hasSpace = false;\n reqSpace = true;\n break;\n case 'tag': {\n if (tag)\n onError(token, 'MULTIPLE_TAGS', 'A node can have at most one tag');\n tag = token;\n start ?? (start = token.offset);\n atNewline = false;\n hasSpace = false;\n reqSpace = true;\n break;\n }\n case indicator:\n // Could here handle preceding comments differently\n if (anchor || tag)\n onError(token, 'BAD_PROP_ORDER', `Anchors and tags must be after the ${token.source} indicator`);\n if (found)\n onError(token, 'UNEXPECTED_TOKEN', `Unexpected ${token.source} in ${flow ?? 'collection'}`);\n found = token;\n atNewline =\n indicator === 'seq-item-ind' || indicator === 'explicit-key-ind';\n hasSpace = false;\n break;\n case 'comma':\n if (flow) {\n if (comma)\n onError(token, 'UNEXPECTED_TOKEN', `Unexpected , in ${flow}`);\n comma = token;\n atNewline = false;\n hasSpace = false;\n break;\n }\n // else fallthrough\n default:\n onError(token, 'UNEXPECTED_TOKEN', `Unexpected ${token.type} token`);\n atNewline = false;\n hasSpace = false;\n }\n }\n const last = tokens[tokens.length - 1];\n const end = last ? last.offset + last.source.length : offset;\n if (reqSpace &&\n next &&\n next.type !== 'space' &&\n next.type !== 'newline' &&\n next.type !== 'comma' &&\n (next.type !== 'scalar' || next.source !== '')) {\n onError(next.offset, 'MISSING_CHAR', 'Tags and anchors must be separated from the next token by white space');\n }\n if (tab &&\n ((atNewline && tab.indent <= parentIndent) ||\n next?.type === 'block-map' ||\n next?.type === 'block-seq'))\n onError(tab, 'TAB_AS_INDENT', 'Tabs are not allowed as indentation');\n return {\n comma,\n found,\n spaceBefore,\n comment,\n hasNewline,\n anchor,\n tag,\n newlineAfterProp,\n end,\n start: start ?? end\n };\n}\n\nexports.resolveProps = resolveProps;\n","'use strict';\n\nfunction containsNewline(key) {\n if (!key)\n return null;\n switch (key.type) {\n case 'alias':\n case 'scalar':\n case 'double-quoted-scalar':\n case 'single-quoted-scalar':\n if (key.source.includes('\\n'))\n return true;\n if (key.end)\n for (const st of key.end)\n if (st.type === 'newline')\n return true;\n return false;\n case 'flow-collection':\n for (const it of key.items) {\n for (const st of it.start)\n if (st.type === 'newline')\n return true;\n if (it.sep)\n for (const st of it.sep)\n if (st.type === 'newline')\n return true;\n if (containsNewline(it.key) || containsNewline(it.value))\n return true;\n }\n return false;\n default:\n return true;\n }\n}\n\nexports.containsNewline = containsNewline;\n","'use strict';\n\nvar utilContainsNewline = require('./util-contains-newline.js');\n\nfunction flowIndentCheck(indent, fc, onError) {\n if (fc?.type === 'flow-collection') {\n const end = fc.end[0];\n if (end.indent === indent &&\n (end.source === ']' || end.source === '}') &&\n utilContainsNewline.containsNewline(fc)) {\n const msg = 'Flow end indicator should be more indented than parent';\n onError(end, 'BAD_INDENT', msg, true);\n }\n }\n}\n\nexports.flowIndentCheck = flowIndentCheck;\n","'use strict';\n\nvar identity = require('../nodes/identity.js');\n\nfunction mapIncludes(ctx, items, search) {\n const { uniqueKeys } = ctx.options;\n if (uniqueKeys === false)\n return false;\n const isEqual = typeof uniqueKeys === 'function'\n ? uniqueKeys\n : (a, b) => a === b || (identity.isScalar(a) && identity.isScalar(b) && a.value === b.value);\n return items.some(pair => isEqual(pair.key, search));\n}\n\nexports.mapIncludes = mapIncludes;\n","'use strict';\n\nvar Pair = require('../nodes/Pair.js');\nvar YAMLMap = require('../nodes/YAMLMap.js');\nvar resolveProps = require('./resolve-props.js');\nvar utilContainsNewline = require('./util-contains-newline.js');\nvar utilFlowIndentCheck = require('./util-flow-indent-check.js');\nvar utilMapIncludes = require('./util-map-includes.js');\n\nconst startColMsg = 'All mapping items must start at the same column';\nfunction resolveBlockMap({ composeNode, composeEmptyNode }, ctx, bm, onError, tag) {\n const NodeClass = tag?.nodeClass ?? YAMLMap.YAMLMap;\n const map = new NodeClass(ctx.schema);\n if (ctx.atRoot)\n ctx.atRoot = false;\n let offset = bm.offset;\n let commentEnd = null;\n for (const collItem of bm.items) {\n const { start, key, sep, value } = collItem;\n // key properties\n const keyProps = resolveProps.resolveProps(start, {\n indicator: 'explicit-key-ind',\n next: key ?? sep?.[0],\n offset,\n onError,\n parentIndent: bm.indent,\n startOnNewline: true\n });\n const implicitKey = !keyProps.found;\n if (implicitKey) {\n if (key) {\n if (key.type === 'block-seq')\n onError(offset, 'BLOCK_AS_IMPLICIT_KEY', 'A block sequence may not be used as an implicit map key');\n else if ('indent' in key && key.indent !== bm.indent)\n onError(offset, 'BAD_INDENT', startColMsg);\n }\n if (!keyProps.anchor && !keyProps.tag && !sep) {\n commentEnd = keyProps.end;\n if (keyProps.comment) {\n if (map.comment)\n map.comment += '\\n' + keyProps.comment;\n else\n map.comment = keyProps.comment;\n }\n continue;\n }\n if (keyProps.newlineAfterProp || utilContainsNewline.containsNewline(key)) {\n onError(key ?? start[start.length - 1], 'MULTILINE_IMPLICIT_KEY', 'Implicit keys need to be on a single line');\n }\n }\n else if (keyProps.found?.indent !== bm.indent) {\n onError(offset, 'BAD_INDENT', startColMsg);\n }\n // key value\n ctx.atKey = true;\n const keyStart = keyProps.end;\n const keyNode = key\n ? composeNode(ctx, key, keyProps, onError)\n : composeEmptyNode(ctx, keyStart, start, null, keyProps, onError);\n if (ctx.schema.compat)\n utilFlowIndentCheck.flowIndentCheck(bm.indent, key, onError);\n ctx.atKey = false;\n if (utilMapIncludes.mapIncludes(ctx, map.items, keyNode))\n onError(keyStart, 'DUPLICATE_KEY', 'Map keys must be unique');\n // value properties\n const valueProps = resolveProps.resolveProps(sep ?? [], {\n indicator: 'map-value-ind',\n next: value,\n offset: keyNode.range[2],\n onError,\n parentIndent: bm.indent,\n startOnNewline: !key || key.type === 'block-scalar'\n });\n offset = valueProps.end;\n if (valueProps.found) {\n if (implicitKey) {\n if (value?.type === 'block-map' && !valueProps.hasNewline)\n onError(offset, 'BLOCK_AS_IMPLICIT_KEY', 'Nested mappings are not allowed in compact mappings');\n if (ctx.options.strict &&\n keyProps.start < valueProps.found.offset - 1024)\n onError(keyNode.range, 'KEY_OVER_1024_CHARS', 'The : indicator must be at most 1024 chars after the start of an implicit block mapping key');\n }\n // value value\n const valueNode = value\n ? composeNode(ctx, value, valueProps, onError)\n : composeEmptyNode(ctx, offset, sep, null, valueProps, onError);\n if (ctx.schema.compat)\n utilFlowIndentCheck.flowIndentCheck(bm.indent, value, onError);\n offset = valueNode.range[2];\n const pair = new Pair.Pair(keyNode, valueNode);\n if (ctx.options.keepSourceTokens)\n pair.srcToken = collItem;\n map.items.push(pair);\n }\n else {\n // key with no value\n if (implicitKey)\n onError(keyNode.range, 'MISSING_CHAR', 'Implicit map keys need to be followed by map values');\n if (valueProps.comment) {\n if (keyNode.comment)\n keyNode.comment += '\\n' + valueProps.comment;\n else\n keyNode.comment = valueProps.comment;\n }\n const pair = new Pair.Pair(keyNode);\n if (ctx.options.keepSourceTokens)\n pair.srcToken = collItem;\n map.items.push(pair);\n }\n }\n if (commentEnd && commentEnd < offset)\n onError(commentEnd, 'IMPOSSIBLE', 'Map comment with trailing content');\n map.range = [bm.offset, offset, commentEnd ?? offset];\n return map;\n}\n\nexports.resolveBlockMap = resolveBlockMap;\n","'use strict';\n\nvar YAMLSeq = require('../nodes/YAMLSeq.js');\nvar resolveProps = require('./resolve-props.js');\nvar utilFlowIndentCheck = require('./util-flow-indent-check.js');\n\nfunction resolveBlockSeq({ composeNode, composeEmptyNode }, ctx, bs, onError, tag) {\n const NodeClass = tag?.nodeClass ?? YAMLSeq.YAMLSeq;\n const seq = new NodeClass(ctx.schema);\n if (ctx.atRoot)\n ctx.atRoot = false;\n if (ctx.atKey)\n ctx.atKey = false;\n let offset = bs.offset;\n let commentEnd = null;\n for (const { start, value } of bs.items) {\n const props = resolveProps.resolveProps(start, {\n indicator: 'seq-item-ind',\n next: value,\n offset,\n onError,\n parentIndent: bs.indent,\n startOnNewline: true\n });\n if (!props.found) {\n if (props.anchor || props.tag || value) {\n if (value && value.type === 'block-seq')\n onError(props.end, 'BAD_INDENT', 'All sequence items must start at the same column');\n else\n onError(offset, 'MISSING_CHAR', 'Sequence item without - indicator');\n }\n else {\n commentEnd = props.end;\n if (props.comment)\n seq.comment = props.comment;\n continue;\n }\n }\n const node = value\n ? composeNode(ctx, value, props, onError)\n : composeEmptyNode(ctx, props.end, start, null, props, onError);\n if (ctx.schema.compat)\n utilFlowIndentCheck.flowIndentCheck(bs.indent, value, onError);\n offset = node.range[2];\n seq.items.push(node);\n }\n seq.range = [bs.offset, offset, commentEnd ?? offset];\n return seq;\n}\n\nexports.resolveBlockSeq = resolveBlockSeq;\n","'use strict';\n\nfunction resolveEnd(end, offset, reqSpace, onError) {\n let comment = '';\n if (end) {\n let hasSpace = false;\n let sep = '';\n for (const token of end) {\n const { source, type } = token;\n switch (type) {\n case 'space':\n hasSpace = true;\n break;\n case 'comment': {\n if (reqSpace && !hasSpace)\n onError(token, 'MISSING_CHAR', 'Comments must be separated from other tokens by white space characters');\n const cb = source.substring(1) || ' ';\n if (!comment)\n comment = cb;\n else\n comment += sep + cb;\n sep = '';\n break;\n }\n case 'newline':\n if (comment)\n sep += source;\n hasSpace = true;\n break;\n default:\n onError(token, 'UNEXPECTED_TOKEN', `Unexpected ${type} at node end`);\n }\n offset += source.length;\n }\n }\n return { comment, offset };\n}\n\nexports.resolveEnd = resolveEnd;\n","'use strict';\n\nvar identity = require('../nodes/identity.js');\nvar Pair = require('../nodes/Pair.js');\nvar YAMLMap = require('../nodes/YAMLMap.js');\nvar YAMLSeq = require('../nodes/YAMLSeq.js');\nvar resolveEnd = require('./resolve-end.js');\nvar resolveProps = require('./resolve-props.js');\nvar utilContainsNewline = require('./util-contains-newline.js');\nvar utilMapIncludes = require('./util-map-includes.js');\n\nconst blockMsg = 'Block collections are not allowed within flow collections';\nconst isBlock = (token) => token && (token.type === 'block-map' || token.type === 'block-seq');\nfunction resolveFlowCollection({ composeNode, composeEmptyNode }, ctx, fc, onError, tag) {\n const isMap = fc.start.source === '{';\n const fcName = isMap ? 'flow map' : 'flow sequence';\n const NodeClass = (tag?.nodeClass ?? (isMap ? YAMLMap.YAMLMap : YAMLSeq.YAMLSeq));\n const coll = new NodeClass(ctx.schema);\n coll.flow = true;\n const atRoot = ctx.atRoot;\n if (atRoot)\n ctx.atRoot = false;\n if (ctx.atKey)\n ctx.atKey = false;\n let offset = fc.offset + fc.start.source.length;\n for (let i = 0; i < fc.items.length; ++i) {\n const collItem = fc.items[i];\n const { start, key, sep, value } = collItem;\n const props = resolveProps.resolveProps(start, {\n flow: fcName,\n indicator: 'explicit-key-ind',\n next: key ?? sep?.[0],\n offset,\n onError,\n parentIndent: fc.indent,\n startOnNewline: false\n });\n if (!props.found) {\n if (!props.anchor && !props.tag && !sep && !value) {\n if (i === 0 && props.comma)\n onError(props.comma, 'UNEXPECTED_TOKEN', `Unexpected , in ${fcName}`);\n else if (i < fc.items.length - 1)\n onError(props.start, 'UNEXPECTED_TOKEN', `Unexpected empty item in ${fcName}`);\n if (props.comment) {\n if (coll.comment)\n coll.comment += '\\n' + props.comment;\n else\n coll.comment = props.comment;\n }\n offset = props.end;\n continue;\n }\n if (!isMap && ctx.options.strict && utilContainsNewline.containsNewline(key))\n onError(key, // checked by containsNewline()\n 'MULTILINE_IMPLICIT_KEY', 'Implicit keys of flow sequence pairs need to be on a single line');\n }\n if (i === 0) {\n if (props.comma)\n onError(props.comma, 'UNEXPECTED_TOKEN', `Unexpected , in ${fcName}`);\n }\n else {\n if (!props.comma)\n onError(props.start, 'MISSING_CHAR', `Missing , between ${fcName} items`);\n if (props.comment) {\n let prevItemComment = '';\n loop: for (const st of start) {\n switch (st.type) {\n case 'comma':\n case 'space':\n break;\n case 'comment':\n prevItemComment = st.source.substring(1);\n break loop;\n default:\n break loop;\n }\n }\n if (prevItemComment) {\n let prev = coll.items[coll.items.length - 1];\n if (identity.isPair(prev))\n prev = prev.value ?? prev.key;\n if (prev.comment)\n prev.comment += '\\n' + prevItemComment;\n else\n prev.comment = prevItemComment;\n props.comment = props.comment.substring(prevItemComment.length + 1);\n }\n }\n }\n if (!isMap && !sep && !props.found) {\n // item is a value in a seq\n // → key & sep are empty, start does not include ? or :\n const valueNode = value\n ? composeNode(ctx, value, props, onError)\n : composeEmptyNode(ctx, props.end, sep, null, props, onError);\n coll.items.push(valueNode);\n offset = valueNode.range[2];\n if (isBlock(value))\n onError(valueNode.range, 'BLOCK_IN_FLOW', blockMsg);\n }\n else {\n // item is a key+value pair\n // key value\n ctx.atKey = true;\n const keyStart = props.end;\n const keyNode = key\n ? composeNode(ctx, key, props, onError)\n : composeEmptyNode(ctx, keyStart, start, null, props, onError);\n if (isBlock(key))\n onError(keyNode.range, 'BLOCK_IN_FLOW', blockMsg);\n ctx.atKey = false;\n // value properties\n const valueProps = resolveProps.resolveProps(sep ?? [], {\n flow: fcName,\n indicator: 'map-value-ind',\n next: value,\n offset: keyNode.range[2],\n onError,\n parentIndent: fc.indent,\n startOnNewline: false\n });\n if (valueProps.found) {\n if (!isMap && !props.found && ctx.options.strict) {\n if (sep)\n for (const st of sep) {\n if (st === valueProps.found)\n break;\n if (st.type === 'newline') {\n onError(st, 'MULTILINE_IMPLICIT_KEY', 'Implicit keys of flow sequence pairs need to be on a single line');\n break;\n }\n }\n if (props.start < valueProps.found.offset - 1024)\n onError(valueProps.found, 'KEY_OVER_1024_CHARS', 'The : indicator must be at most 1024 chars after the start of an implicit flow sequence key');\n }\n }\n else if (value) {\n if ('source' in value && value.source && value.source[0] === ':')\n onError(value, 'MISSING_CHAR', `Missing space after : in ${fcName}`);\n else\n onError(valueProps.start, 'MISSING_CHAR', `Missing , or : between ${fcName} items`);\n }\n // value value\n const valueNode = value\n ? composeNode(ctx, value, valueProps, onError)\n : valueProps.found\n ? composeEmptyNode(ctx, valueProps.end, sep, null, valueProps, onError)\n : null;\n if (valueNode) {\n if (isBlock(value))\n onError(valueNode.range, 'BLOCK_IN_FLOW', blockMsg);\n }\n else if (valueProps.comment) {\n if (keyNode.comment)\n keyNode.comment += '\\n' + valueProps.comment;\n else\n keyNode.comment = valueProps.comment;\n }\n const pair = new Pair.Pair(keyNode, valueNode);\n if (ctx.options.keepSourceTokens)\n pair.srcToken = collItem;\n if (isMap) {\n const map = coll;\n if (utilMapIncludes.mapIncludes(ctx, map.items, keyNode))\n onError(keyStart, 'DUPLICATE_KEY', 'Map keys must be unique');\n map.items.push(pair);\n }\n else {\n const map = new YAMLMap.YAMLMap(ctx.schema);\n map.flow = true;\n map.items.push(pair);\n const endRange = (valueNode ?? keyNode).range;\n map.range = [keyNode.range[0], endRange[1], endRange[2]];\n coll.items.push(map);\n }\n offset = valueNode ? valueNode.range[2] : valueProps.end;\n }\n }\n const expectedEnd = isMap ? '}' : ']';\n const [ce, ...ee] = fc.end;\n let cePos = offset;\n if (ce && ce.source === expectedEnd)\n cePos = ce.offset + ce.source.length;\n else {\n const name = fcName[0].toUpperCase() + fcName.substring(1);\n const msg = atRoot\n ? `${name} must end with a ${expectedEnd}`\n : `${name} in block collection must be sufficiently indented and end with a ${expectedEnd}`;\n onError(offset, atRoot ? 'MISSING_CHAR' : 'BAD_INDENT', msg);\n if (ce && ce.source.length !== 1)\n ee.unshift(ce);\n }\n if (ee.length > 0) {\n const end = resolveEnd.resolveEnd(ee, cePos, ctx.options.strict, onError);\n if (end.comment) {\n if (coll.comment)\n coll.comment += '\\n' + end.comment;\n else\n coll.comment = end.comment;\n }\n coll.range = [fc.offset, cePos, end.offset];\n }\n else {\n coll.range = [fc.offset, cePos, cePos];\n }\n return coll;\n}\n\nexports.resolveFlowCollection = resolveFlowCollection;\n","'use strict';\n\nvar identity = require('../nodes/identity.js');\nvar Scalar = require('../nodes/Scalar.js');\nvar YAMLMap = require('../nodes/YAMLMap.js');\nvar YAMLSeq = require('../nodes/YAMLSeq.js');\nvar resolveBlockMap = require('./resolve-block-map.js');\nvar resolveBlockSeq = require('./resolve-block-seq.js');\nvar resolveFlowCollection = require('./resolve-flow-collection.js');\n\nfunction resolveCollection(CN, ctx, token, onError, tagName, tag) {\n const coll = token.type === 'block-map'\n ? resolveBlockMap.resolveBlockMap(CN, ctx, token, onError, tag)\n : token.type === 'block-seq'\n ? resolveBlockSeq.resolveBlockSeq(CN, ctx, token, onError, tag)\n : resolveFlowCollection.resolveFlowCollection(CN, ctx, token, onError, tag);\n const Coll = coll.constructor;\n // If we got a tagName matching the class, or the tag name is '!',\n // then use the tagName from the node class used to create it.\n if (tagName === '!' || tagName === Coll.tagName) {\n coll.tag = Coll.tagName;\n return coll;\n }\n if (tagName)\n coll.tag = tagName;\n return coll;\n}\nfunction composeCollection(CN, ctx, token, props, onError) {\n const tagToken = props.tag;\n const tagName = !tagToken\n ? null\n : ctx.directives.tagName(tagToken.source, msg => onError(tagToken, 'TAG_RESOLVE_FAILED', msg));\n if (token.type === 'block-seq') {\n const { anchor, newlineAfterProp: nl } = props;\n const lastProp = anchor && tagToken\n ? anchor.offset > tagToken.offset\n ? anchor\n : tagToken\n : (anchor ?? tagToken);\n if (lastProp && (!nl || nl.offset < lastProp.offset)) {\n const message = 'Missing newline after block sequence props';\n onError(lastProp, 'MISSING_CHAR', message);\n }\n }\n const expType = token.type === 'block-map'\n ? 'map'\n : token.type === 'block-seq'\n ? 'seq'\n : token.start.source === '{'\n ? 'map'\n : 'seq';\n // shortcut: check if it's a generic YAMLMap or YAMLSeq\n // before jumping into the custom tag logic.\n if (!tagToken ||\n !tagName ||\n tagName === '!' ||\n (tagName === YAMLMap.YAMLMap.tagName && expType === 'map') ||\n (tagName === YAMLSeq.YAMLSeq.tagName && expType === 'seq')) {\n return resolveCollection(CN, ctx, token, onError, tagName);\n }\n let tag = ctx.schema.tags.find(t => t.tag === tagName && t.collection === expType);\n if (!tag) {\n const kt = ctx.schema.knownTags[tagName];\n if (kt && kt.collection === expType) {\n ctx.schema.tags.push(Object.assign({}, kt, { default: false }));\n tag = kt;\n }\n else {\n if (kt) {\n onError(tagToken, 'BAD_COLLECTION_TYPE', `${kt.tag} used for ${expType} collection, but expects ${kt.collection ?? 'scalar'}`, true);\n }\n else {\n onError(tagToken, 'TAG_RESOLVE_FAILED', `Unresolved tag: ${tagName}`, true);\n }\n return resolveCollection(CN, ctx, token, onError, tagName);\n }\n }\n const coll = resolveCollection(CN, ctx, token, onError, tagName, tag);\n const res = tag.resolve?.(coll, msg => onError(tagToken, 'TAG_RESOLVE_FAILED', msg), ctx.options) ?? coll;\n const node = identity.isNode(res)\n ? res\n : new Scalar.Scalar(res);\n node.range = coll.range;\n node.tag = tagName;\n if (tag?.format)\n node.format = tag.format;\n return node;\n}\n\nexports.composeCollection = composeCollection;\n","'use strict';\n\nvar Scalar = require('../nodes/Scalar.js');\n\nfunction resolveBlockScalar(ctx, scalar, onError) {\n const start = scalar.offset;\n const header = parseBlockScalarHeader(scalar, ctx.options.strict, onError);\n if (!header)\n return { value: '', type: null, comment: '', range: [start, start, start] };\n const type = header.mode === '>' ? Scalar.Scalar.BLOCK_FOLDED : Scalar.Scalar.BLOCK_LITERAL;\n const lines = scalar.source ? splitLines(scalar.source) : [];\n // determine the end of content & start of chomping\n let chompStart = lines.length;\n for (let i = lines.length - 1; i >= 0; --i) {\n const content = lines[i][1];\n if (content === '' || content === '\\r')\n chompStart = i;\n else\n break;\n }\n // shortcut for empty contents\n if (chompStart === 0) {\n const value = header.chomp === '+' && lines.length > 0\n ? '\\n'.repeat(Math.max(1, lines.length - 1))\n : '';\n let end = start + header.length;\n if (scalar.source)\n end += scalar.source.length;\n return { value, type, comment: header.comment, range: [start, end, end] };\n }\n // find the indentation level to trim from start\n let trimIndent = scalar.indent + header.indent;\n let offset = scalar.offset + header.length;\n let contentStart = 0;\n for (let i = 0; i < chompStart; ++i) {\n const [indent, content] = lines[i];\n if (content === '' || content === '\\r') {\n if (header.indent === 0 && indent.length > trimIndent)\n trimIndent = indent.length;\n }\n else {\n if (indent.length < trimIndent) {\n const message = 'Block scalars with more-indented leading empty lines must use an explicit indentation indicator';\n onError(offset + indent.length, 'MISSING_CHAR', message);\n }\n if (header.indent === 0)\n trimIndent = indent.length;\n contentStart = i;\n if (trimIndent === 0 && !ctx.atRoot) {\n const message = 'Block scalar values in collections must be indented';\n onError(offset, 'BAD_INDENT', message);\n }\n break;\n }\n offset += indent.length + content.length + 1;\n }\n // include trailing more-indented empty lines in content\n for (let i = lines.length - 1; i >= chompStart; --i) {\n if (lines[i][0].length > trimIndent)\n chompStart = i + 1;\n }\n let value = '';\n let sep = '';\n let prevMoreIndented = false;\n // leading whitespace is kept intact\n for (let i = 0; i < contentStart; ++i)\n value += lines[i][0].slice(trimIndent) + '\\n';\n for (let i = contentStart; i < chompStart; ++i) {\n let [indent, content] = lines[i];\n offset += indent.length + content.length + 1;\n const crlf = content[content.length - 1] === '\\r';\n if (crlf)\n content = content.slice(0, -1);\n /* istanbul ignore if already caught in lexer */\n if (content && indent.length < trimIndent) {\n const src = header.indent\n ? 'explicit indentation indicator'\n : 'first line';\n const message = `Block scalar lines must not be less indented than their ${src}`;\n onError(offset - content.length - (crlf ? 2 : 1), 'BAD_INDENT', message);\n indent = '';\n }\n if (type === Scalar.Scalar.BLOCK_LITERAL) {\n value += sep + indent.slice(trimIndent) + content;\n sep = '\\n';\n }\n else if (indent.length > trimIndent || content[0] === '\\t') {\n // more-indented content within a folded block\n if (sep === ' ')\n sep = '\\n';\n else if (!prevMoreIndented && sep === '\\n')\n sep = '\\n\\n';\n value += sep + indent.slice(trimIndent) + content;\n sep = '\\n';\n prevMoreIndented = true;\n }\n else if (content === '') {\n // empty line\n if (sep === '\\n')\n value += '\\n';\n else\n sep = '\\n';\n }\n else {\n value += sep + content;\n sep = ' ';\n prevMoreIndented = false;\n }\n }\n switch (header.chomp) {\n case '-':\n break;\n case '+':\n for (let i = chompStart; i < lines.length; ++i)\n value += '\\n' + lines[i][0].slice(trimIndent);\n if (value[value.length - 1] !== '\\n')\n value += '\\n';\n break;\n default:\n value += '\\n';\n }\n const end = start + header.length + scalar.source.length;\n return { value, type, comment: header.comment, range: [start, end, end] };\n}\nfunction parseBlockScalarHeader({ offset, props }, strict, onError) {\n /* istanbul ignore if should not happen */\n if (props[0].type !== 'block-scalar-header') {\n onError(props[0], 'IMPOSSIBLE', 'Block scalar header not found');\n return null;\n }\n const { source } = props[0];\n const mode = source[0];\n let indent = 0;\n let chomp = '';\n let error = -1;\n for (let i = 1; i < source.length; ++i) {\n const ch = source[i];\n if (!chomp && (ch === '-' || ch === '+'))\n chomp = ch;\n else {\n const n = Number(ch);\n if (!indent && n)\n indent = n;\n else if (error === -1)\n error = offset + i;\n }\n }\n if (error !== -1)\n onError(error, 'UNEXPECTED_TOKEN', `Block scalar header includes extra characters: ${source}`);\n let hasSpace = false;\n let comment = '';\n let length = source.length;\n for (let i = 1; i < props.length; ++i) {\n const token = props[i];\n switch (token.type) {\n case 'space':\n hasSpace = true;\n // fallthrough\n case 'newline':\n length += token.source.length;\n break;\n case 'comment':\n if (strict && !hasSpace) {\n const message = 'Comments must be separated from other tokens by white space characters';\n onError(token, 'MISSING_CHAR', message);\n }\n length += token.source.length;\n comment = token.source.substring(1);\n break;\n case 'error':\n onError(token, 'UNEXPECTED_TOKEN', token.message);\n length += token.source.length;\n break;\n /* istanbul ignore next should not happen */\n default: {\n const message = `Unexpected token in block scalar header: ${token.type}`;\n onError(token, 'UNEXPECTED_TOKEN', message);\n const ts = token.source;\n if (ts && typeof ts === 'string')\n length += ts.length;\n }\n }\n }\n return { mode, indent, chomp, comment, length };\n}\n/** @returns Array of lines split up as `[indent, content]` */\nfunction splitLines(source) {\n const split = source.split(/\\n( *)/);\n const first = split[0];\n const m = first.match(/^( *)/);\n const line0 = m?.[1]\n ? [m[1], first.slice(m[1].length)]\n : ['', first];\n const lines = [line0];\n for (let i = 1; i < split.length; i += 2)\n lines.push([split[i], split[i + 1]]);\n return lines;\n}\n\nexports.resolveBlockScalar = resolveBlockScalar;\n","'use strict';\n\nvar Scalar = require('../nodes/Scalar.js');\nvar resolveEnd = require('./resolve-end.js');\n\nfunction resolveFlowScalar(scalar, strict, onError) {\n const { offset, type, source, end } = scalar;\n let _type;\n let value;\n const _onError = (rel, code, msg) => onError(offset + rel, code, msg);\n switch (type) {\n case 'scalar':\n _type = Scalar.Scalar.PLAIN;\n value = plainValue(source, _onError);\n break;\n case 'single-quoted-scalar':\n _type = Scalar.Scalar.QUOTE_SINGLE;\n value = singleQuotedValue(source, _onError);\n break;\n case 'double-quoted-scalar':\n _type = Scalar.Scalar.QUOTE_DOUBLE;\n value = doubleQuotedValue(source, _onError);\n break;\n /* istanbul ignore next should not happen */\n default:\n onError(scalar, 'UNEXPECTED_TOKEN', `Expected a flow scalar value, but found: ${type}`);\n return {\n value: '',\n type: null,\n comment: '',\n range: [offset, offset + source.length, offset + source.length]\n };\n }\n const valueEnd = offset + source.length;\n const re = resolveEnd.resolveEnd(end, valueEnd, strict, onError);\n return {\n value,\n type: _type,\n comment: re.comment,\n range: [offset, valueEnd, re.offset]\n };\n}\nfunction plainValue(source, onError) {\n let badChar = '';\n switch (source[0]) {\n /* istanbul ignore next should not happen */\n case '\\t':\n badChar = 'a tab character';\n break;\n case ',':\n badChar = 'flow indicator character ,';\n break;\n case '%':\n badChar = 'directive indicator character %';\n break;\n case '|':\n case '>': {\n badChar = `block scalar indicator ${source[0]}`;\n break;\n }\n case '@':\n case '`': {\n badChar = `reserved character ${source[0]}`;\n break;\n }\n }\n if (badChar)\n onError(0, 'BAD_SCALAR_START', `Plain value cannot start with ${badChar}`);\n return foldLines(source);\n}\nfunction singleQuotedValue(source, onError) {\n if (source[source.length - 1] !== \"'\" || source.length === 1)\n onError(source.length, 'MISSING_CHAR', \"Missing closing 'quote\");\n return foldLines(source.slice(1, -1)).replace(/''/g, \"'\");\n}\nfunction foldLines(source) {\n /**\n * The negative lookbehind here and in the `re` RegExp is to\n * prevent causing a polynomial search time in certain cases.\n *\n * The try-catch is for Safari, which doesn't support this yet:\n * https://caniuse.com/js-regexp-lookbehind\n */\n let first, line;\n try {\n first = new RegExp('(.*?)(? wsStart ? source.slice(wsStart, i + 1) : ch;\n }\n else {\n res += ch;\n }\n }\n if (source[source.length - 1] !== '\"' || source.length === 1)\n onError(source.length, 'MISSING_CHAR', 'Missing closing \"quote');\n return res;\n}\n/**\n * Fold a single newline into a space, multiple newlines to N - 1 newlines.\n * Presumes `source[offset] === '\\n'`\n */\nfunction foldNewline(source, offset) {\n let fold = '';\n let ch = source[offset + 1];\n while (ch === ' ' || ch === '\\t' || ch === '\\n' || ch === '\\r') {\n if (ch === '\\r' && source[offset + 2] !== '\\n')\n break;\n if (ch === '\\n')\n fold += '\\n';\n offset += 1;\n ch = source[offset + 1];\n }\n if (!fold)\n fold = ' ';\n return { fold, offset };\n}\nconst escapeCodes = {\n '0': '\\0', // null character\n a: '\\x07', // bell character\n b: '\\b', // backspace\n e: '\\x1b', // escape character\n f: '\\f', // form feed\n n: '\\n', // line feed\n r: '\\r', // carriage return\n t: '\\t', // horizontal tab\n v: '\\v', // vertical tab\n N: '\\u0085', // Unicode next line\n _: '\\u00a0', // Unicode non-breaking space\n L: '\\u2028', // Unicode line separator\n P: '\\u2029', // Unicode paragraph separator\n ' ': ' ',\n '\"': '\"',\n '/': '/',\n '\\\\': '\\\\',\n '\\t': '\\t'\n};\nfunction parseCharCode(source, offset, length, onError) {\n const cc = source.substr(offset, length);\n const ok = cc.length === length && /^[0-9a-fA-F]+$/.test(cc);\n const code = ok ? parseInt(cc, 16) : NaN;\n if (isNaN(code)) {\n const raw = source.substr(offset - 2, length + 2);\n onError(offset - 2, 'BAD_DQ_ESCAPE', `Invalid escape sequence ${raw}`);\n return raw;\n }\n return String.fromCodePoint(code);\n}\n\nexports.resolveFlowScalar = resolveFlowScalar;\n","'use strict';\n\nvar identity = require('../nodes/identity.js');\nvar Scalar = require('../nodes/Scalar.js');\nvar resolveBlockScalar = require('./resolve-block-scalar.js');\nvar resolveFlowScalar = require('./resolve-flow-scalar.js');\n\nfunction composeScalar(ctx, token, tagToken, onError) {\n const { value, type, comment, range } = token.type === 'block-scalar'\n ? resolveBlockScalar.resolveBlockScalar(ctx, token, onError)\n : resolveFlowScalar.resolveFlowScalar(token, ctx.options.strict, onError);\n const tagName = tagToken\n ? ctx.directives.tagName(tagToken.source, msg => onError(tagToken, 'TAG_RESOLVE_FAILED', msg))\n : null;\n let tag;\n if (ctx.options.stringKeys && ctx.atKey) {\n tag = ctx.schema[identity.SCALAR];\n }\n else if (tagName)\n tag = findScalarTagByName(ctx.schema, value, tagName, tagToken, onError);\n else if (token.type === 'scalar')\n tag = findScalarTagByTest(ctx, value, token, onError);\n else\n tag = ctx.schema[identity.SCALAR];\n let scalar;\n try {\n const res = tag.resolve(value, msg => onError(tagToken ?? token, 'TAG_RESOLVE_FAILED', msg), ctx.options);\n scalar = identity.isScalar(res) ? res : new Scalar.Scalar(res);\n }\n catch (error) {\n const msg = error instanceof Error ? error.message : String(error);\n onError(tagToken ?? token, 'TAG_RESOLVE_FAILED', msg);\n scalar = new Scalar.Scalar(value);\n }\n scalar.range = range;\n scalar.source = value;\n if (type)\n scalar.type = type;\n if (tagName)\n scalar.tag = tagName;\n if (tag.format)\n scalar.format = tag.format;\n if (comment)\n scalar.comment = comment;\n return scalar;\n}\nfunction findScalarTagByName(schema, value, tagName, tagToken, onError) {\n if (tagName === '!')\n return schema[identity.SCALAR]; // non-specific tag\n const matchWithTest = [];\n for (const tag of schema.tags) {\n if (!tag.collection && tag.tag === tagName) {\n if (tag.default && tag.test)\n matchWithTest.push(tag);\n else\n return tag;\n }\n }\n for (const tag of matchWithTest)\n if (tag.test?.test(value))\n return tag;\n const kt = schema.knownTags[tagName];\n if (kt && !kt.collection) {\n // Ensure that the known tag is available for stringifying,\n // but does not get used by default.\n schema.tags.push(Object.assign({}, kt, { default: false, test: undefined }));\n return kt;\n }\n onError(tagToken, 'TAG_RESOLVE_FAILED', `Unresolved tag: ${tagName}`, tagName !== 'tag:yaml.org,2002:str');\n return schema[identity.SCALAR];\n}\nfunction findScalarTagByTest({ atKey, directives, schema }, value, token, onError) {\n const tag = schema.tags.find(tag => (tag.default === true || (atKey && tag.default === 'key')) &&\n tag.test?.test(value)) || schema[identity.SCALAR];\n if (schema.compat) {\n const compat = schema.compat.find(tag => tag.default && tag.test?.test(value)) ??\n schema[identity.SCALAR];\n if (tag.tag !== compat.tag) {\n const ts = directives.tagString(tag.tag);\n const cs = directives.tagString(compat.tag);\n const msg = `Value may be parsed as either ${ts} or ${cs}`;\n onError(token, 'TAG_RESOLVE_FAILED', msg, true);\n }\n }\n return tag;\n}\n\nexports.composeScalar = composeScalar;\n","'use strict';\n\nfunction emptyScalarPosition(offset, before, pos) {\n if (before) {\n pos ?? (pos = before.length);\n for (let i = pos - 1; i >= 0; --i) {\n let st = before[i];\n switch (st.type) {\n case 'space':\n case 'comment':\n case 'newline':\n offset -= st.source.length;\n continue;\n }\n // Technically, an empty scalar is immediately after the last non-empty\n // node, but it's more useful to place it after any whitespace.\n st = before[++i];\n while (st?.type === 'space') {\n offset += st.source.length;\n st = before[++i];\n }\n break;\n }\n }\n return offset;\n}\n\nexports.emptyScalarPosition = emptyScalarPosition;\n","'use strict';\n\nvar Alias = require('../nodes/Alias.js');\nvar identity = require('../nodes/identity.js');\nvar composeCollection = require('./compose-collection.js');\nvar composeScalar = require('./compose-scalar.js');\nvar resolveEnd = require('./resolve-end.js');\nvar utilEmptyScalarPosition = require('./util-empty-scalar-position.js');\n\nconst CN = { composeNode, composeEmptyNode };\nfunction composeNode(ctx, token, props, onError) {\n const atKey = ctx.atKey;\n const { spaceBefore, comment, anchor, tag } = props;\n let node;\n let isSrcToken = true;\n switch (token.type) {\n case 'alias':\n node = composeAlias(ctx, token, onError);\n if (anchor || tag)\n onError(token, 'ALIAS_PROPS', 'An alias node must not specify any properties');\n break;\n case 'scalar':\n case 'single-quoted-scalar':\n case 'double-quoted-scalar':\n case 'block-scalar':\n node = composeScalar.composeScalar(ctx, token, tag, onError);\n if (anchor)\n node.anchor = anchor.source.substring(1);\n break;\n case 'block-map':\n case 'block-seq':\n case 'flow-collection':\n node = composeCollection.composeCollection(CN, ctx, token, props, onError);\n if (anchor)\n node.anchor = anchor.source.substring(1);\n break;\n default: {\n const message = token.type === 'error'\n ? token.message\n : `Unsupported token (type: ${token.type})`;\n onError(token, 'UNEXPECTED_TOKEN', message);\n node = composeEmptyNode(ctx, token.offset, undefined, null, props, onError);\n isSrcToken = false;\n }\n }\n if (anchor && node.anchor === '')\n onError(anchor, 'BAD_ALIAS', 'Anchor cannot be an empty string');\n if (atKey &&\n ctx.options.stringKeys &&\n (!identity.isScalar(node) ||\n typeof node.value !== 'string' ||\n (node.tag && node.tag !== 'tag:yaml.org,2002:str'))) {\n const msg = 'With stringKeys, all keys must be strings';\n onError(tag ?? token, 'NON_STRING_KEY', msg);\n }\n if (spaceBefore)\n node.spaceBefore = true;\n if (comment) {\n if (token.type === 'scalar' && token.source === '')\n node.comment = comment;\n else\n node.commentBefore = comment;\n }\n // @ts-expect-error Type checking misses meaning of isSrcToken\n if (ctx.options.keepSourceTokens && isSrcToken)\n node.srcToken = token;\n return node;\n}\nfunction composeEmptyNode(ctx, offset, before, pos, { spaceBefore, comment, anchor, tag, end }, onError) {\n const token = {\n type: 'scalar',\n offset: utilEmptyScalarPosition.emptyScalarPosition(offset, before, pos),\n indent: -1,\n source: ''\n };\n const node = composeScalar.composeScalar(ctx, token, tag, onError);\n if (anchor) {\n node.anchor = anchor.source.substring(1);\n if (node.anchor === '')\n onError(anchor, 'BAD_ALIAS', 'Anchor cannot be an empty string');\n }\n if (spaceBefore)\n node.spaceBefore = true;\n if (comment) {\n node.comment = comment;\n node.range[2] = end;\n }\n return node;\n}\nfunction composeAlias({ options }, { offset, source, end }, onError) {\n const alias = new Alias.Alias(source.substring(1));\n if (alias.source === '')\n onError(offset, 'BAD_ALIAS', 'Alias cannot be an empty string');\n if (alias.source.endsWith(':'))\n onError(offset + source.length - 1, 'BAD_ALIAS', 'Alias ending in : is ambiguous', true);\n const valueEnd = offset + source.length;\n const re = resolveEnd.resolveEnd(end, valueEnd, options.strict, onError);\n alias.range = [offset, valueEnd, re.offset];\n if (re.comment)\n alias.comment = re.comment;\n return alias;\n}\n\nexports.composeEmptyNode = composeEmptyNode;\nexports.composeNode = composeNode;\n","'use strict';\n\nvar Document = require('../doc/Document.js');\nvar composeNode = require('./compose-node.js');\nvar resolveEnd = require('./resolve-end.js');\nvar resolveProps = require('./resolve-props.js');\n\nfunction composeDoc(options, directives, { offset, start, value, end }, onError) {\n const opts = Object.assign({ _directives: directives }, options);\n const doc = new Document.Document(undefined, opts);\n const ctx = {\n atKey: false,\n atRoot: true,\n directives: doc.directives,\n options: doc.options,\n schema: doc.schema\n };\n const props = resolveProps.resolveProps(start, {\n indicator: 'doc-start',\n next: value ?? end?.[0],\n offset,\n onError,\n parentIndent: 0,\n startOnNewline: true\n });\n if (props.found) {\n doc.directives.docStart = true;\n if (value &&\n (value.type === 'block-map' || value.type === 'block-seq') &&\n !props.hasNewline)\n onError(props.end, 'MISSING_CHAR', 'Block collection cannot start on same line with directives-end marker');\n }\n // @ts-expect-error If Contents is set, let's trust the user\n doc.contents = value\n ? composeNode.composeNode(ctx, value, props, onError)\n : composeNode.composeEmptyNode(ctx, props.end, start, null, props, onError);\n const contentEnd = doc.contents.range[2];\n const re = resolveEnd.resolveEnd(end, contentEnd, false, onError);\n if (re.comment)\n doc.comment = re.comment;\n doc.range = [offset, contentEnd, re.offset];\n return doc;\n}\n\nexports.composeDoc = composeDoc;\n","'use strict';\n\nvar node_process = require('process');\nvar directives = require('../doc/directives.js');\nvar Document = require('../doc/Document.js');\nvar errors = require('../errors.js');\nvar identity = require('../nodes/identity.js');\nvar composeDoc = require('./compose-doc.js');\nvar resolveEnd = require('./resolve-end.js');\n\nfunction getErrorPos(src) {\n if (typeof src === 'number')\n return [src, src + 1];\n if (Array.isArray(src))\n return src.length === 2 ? src : [src[0], src[1]];\n const { offset, source } = src;\n return [offset, offset + (typeof source === 'string' ? source.length : 1)];\n}\nfunction parsePrelude(prelude) {\n let comment = '';\n let atComment = false;\n let afterEmptyLine = false;\n for (let i = 0; i < prelude.length; ++i) {\n const source = prelude[i];\n switch (source[0]) {\n case '#':\n comment +=\n (comment === '' ? '' : afterEmptyLine ? '\\n\\n' : '\\n') +\n (source.substring(1) || ' ');\n atComment = true;\n afterEmptyLine = false;\n break;\n case '%':\n if (prelude[i + 1]?.[0] !== '#')\n i += 1;\n atComment = false;\n break;\n default:\n // This may be wrong after doc-end, but in that case it doesn't matter\n if (!atComment)\n afterEmptyLine = true;\n atComment = false;\n }\n }\n return { comment, afterEmptyLine };\n}\n/**\n * Compose a stream of CST nodes into a stream of YAML Documents.\n *\n * ```ts\n * import { Composer, Parser } from 'yaml'\n *\n * const src: string = ...\n * const tokens = new Parser().parse(src)\n * const docs = new Composer().compose(tokens)\n * ```\n */\nclass Composer {\n constructor(options = {}) {\n this.doc = null;\n this.atDirectives = false;\n this.prelude = [];\n this.errors = [];\n this.warnings = [];\n this.onError = (source, code, message, warning) => {\n const pos = getErrorPos(source);\n if (warning)\n this.warnings.push(new errors.YAMLWarning(pos, code, message));\n else\n this.errors.push(new errors.YAMLParseError(pos, code, message));\n };\n // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing\n this.directives = new directives.Directives({ version: options.version || '1.2' });\n this.options = options;\n }\n decorate(doc, afterDoc) {\n const { comment, afterEmptyLine } = parsePrelude(this.prelude);\n //console.log({ dc: doc.comment, prelude, comment })\n if (comment) {\n const dc = doc.contents;\n if (afterDoc) {\n doc.comment = doc.comment ? `${doc.comment}\\n${comment}` : comment;\n }\n else if (afterEmptyLine || doc.directives.docStart || !dc) {\n doc.commentBefore = comment;\n }\n else if (identity.isCollection(dc) && !dc.flow && dc.items.length > 0) {\n let it = dc.items[0];\n if (identity.isPair(it))\n it = it.key;\n const cb = it.commentBefore;\n it.commentBefore = cb ? `${comment}\\n${cb}` : comment;\n }\n else {\n const cb = dc.commentBefore;\n dc.commentBefore = cb ? `${comment}\\n${cb}` : comment;\n }\n }\n if (afterDoc) {\n Array.prototype.push.apply(doc.errors, this.errors);\n Array.prototype.push.apply(doc.warnings, this.warnings);\n }\n else {\n doc.errors = this.errors;\n doc.warnings = this.warnings;\n }\n this.prelude = [];\n this.errors = [];\n this.warnings = [];\n }\n /**\n * Current stream status information.\n *\n * Mostly useful at the end of input for an empty stream.\n */\n streamInfo() {\n return {\n comment: parsePrelude(this.prelude).comment,\n directives: this.directives,\n errors: this.errors,\n warnings: this.warnings\n };\n }\n /**\n * Compose tokens into documents.\n *\n * @param forceDoc - If the stream contains no document, still emit a final document including any comments and directives that would be applied to a subsequent document.\n * @param endOffset - Should be set if `forceDoc` is also set, to set the document range end and to indicate errors correctly.\n */\n *compose(tokens, forceDoc = false, endOffset = -1) {\n for (const token of tokens)\n yield* this.next(token);\n yield* this.end(forceDoc, endOffset);\n }\n /** Advance the composer by one CST token. */\n *next(token) {\n if (node_process.env.LOG_STREAM)\n console.dir(token, { depth: null });\n switch (token.type) {\n case 'directive':\n this.directives.add(token.source, (offset, message, warning) => {\n const pos = getErrorPos(token);\n pos[0] += offset;\n this.onError(pos, 'BAD_DIRECTIVE', message, warning);\n });\n this.prelude.push(token.source);\n this.atDirectives = true;\n break;\n case 'document': {\n const doc = composeDoc.composeDoc(this.options, this.directives, token, this.onError);\n if (this.atDirectives && !doc.directives.docStart)\n this.onError(token, 'MISSING_CHAR', 'Missing directives-end/doc-start indicator line');\n this.decorate(doc, false);\n if (this.doc)\n yield this.doc;\n this.doc = doc;\n this.atDirectives = false;\n break;\n }\n case 'byte-order-mark':\n case 'space':\n break;\n case 'comment':\n case 'newline':\n this.prelude.push(token.source);\n break;\n case 'error': {\n const msg = token.source\n ? `${token.message}: ${JSON.stringify(token.source)}`\n : token.message;\n const error = new errors.YAMLParseError(getErrorPos(token), 'UNEXPECTED_TOKEN', msg);\n if (this.atDirectives || !this.doc)\n this.errors.push(error);\n else\n this.doc.errors.push(error);\n break;\n }\n case 'doc-end': {\n if (!this.doc) {\n const msg = 'Unexpected doc-end without preceding document';\n this.errors.push(new errors.YAMLParseError(getErrorPos(token), 'UNEXPECTED_TOKEN', msg));\n break;\n }\n this.doc.directives.docEnd = true;\n const end = resolveEnd.resolveEnd(token.end, token.offset + token.source.length, this.doc.options.strict, this.onError);\n this.decorate(this.doc, true);\n if (end.comment) {\n const dc = this.doc.comment;\n this.doc.comment = dc ? `${dc}\\n${end.comment}` : end.comment;\n }\n this.doc.range[2] = end.offset;\n break;\n }\n default:\n this.errors.push(new errors.YAMLParseError(getErrorPos(token), 'UNEXPECTED_TOKEN', `Unsupported token ${token.type}`));\n }\n }\n /**\n * Call at end of input to yield any remaining document.\n *\n * @param forceDoc - If the stream contains no document, still emit a final document including any comments and directives that would be applied to a subsequent document.\n * @param endOffset - Should be set if `forceDoc` is also set, to set the document range end and to indicate errors correctly.\n */\n *end(forceDoc = false, endOffset = -1) {\n if (this.doc) {\n this.decorate(this.doc, true);\n yield this.doc;\n this.doc = null;\n }\n else if (forceDoc) {\n const opts = Object.assign({ _directives: this.directives }, this.options);\n const doc = new Document.Document(undefined, opts);\n if (this.atDirectives)\n this.onError(endOffset, 'MISSING_CHAR', 'Missing directives-end indicator line');\n doc.range = [0, endOffset, endOffset];\n this.decorate(doc, false);\n yield doc;\n }\n }\n}\n\nexports.Composer = Composer;\n","'use strict';\n\nvar resolveBlockScalar = require('../compose/resolve-block-scalar.js');\nvar resolveFlowScalar = require('../compose/resolve-flow-scalar.js');\nvar errors = require('../errors.js');\nvar stringifyString = require('../stringify/stringifyString.js');\n\nfunction resolveAsScalar(token, strict = true, onError) {\n if (token) {\n const _onError = (pos, code, message) => {\n const offset = typeof pos === 'number' ? pos : Array.isArray(pos) ? pos[0] : pos.offset;\n if (onError)\n onError(offset, code, message);\n else\n throw new errors.YAMLParseError([offset, offset + 1], code, message);\n };\n switch (token.type) {\n case 'scalar':\n case 'single-quoted-scalar':\n case 'double-quoted-scalar':\n return resolveFlowScalar.resolveFlowScalar(token, strict, _onError);\n case 'block-scalar':\n return resolveBlockScalar.resolveBlockScalar({ options: { strict } }, token, _onError);\n }\n }\n return null;\n}\n/**\n * Create a new scalar token with `value`\n *\n * Values that represent an actual string but may be parsed as a different type should use a `type` other than `'PLAIN'`,\n * as this function does not support any schema operations and won't check for such conflicts.\n *\n * @param value The string representation of the value, which will have its content properly indented.\n * @param context.end Comments and whitespace after the end of the value, or after the block scalar header. If undefined, a newline will be added.\n * @param context.implicitKey Being within an implicit key may affect the resolved type of the token's value.\n * @param context.indent The indent level of the token.\n * @param context.inFlow Is this scalar within a flow collection? This may affect the resolved type of the token's value.\n * @param context.offset The offset position of the token.\n * @param context.type The preferred type of the scalar token. If undefined, the previous type of the `token` will be used, defaulting to `'PLAIN'`.\n */\nfunction createScalarToken(value, context) {\n const { implicitKey = false, indent, inFlow = false, offset = -1, type = 'PLAIN' } = context;\n const source = stringifyString.stringifyString({ type, value }, {\n implicitKey,\n indent: indent > 0 ? ' '.repeat(indent) : '',\n inFlow,\n options: { blockQuote: true, lineWidth: -1 }\n });\n const end = context.end ?? [\n { type: 'newline', offset: -1, indent, source: '\\n' }\n ];\n switch (source[0]) {\n case '|':\n case '>': {\n const he = source.indexOf('\\n');\n const head = source.substring(0, he);\n const body = source.substring(he + 1) + '\\n';\n const props = [\n { type: 'block-scalar-header', offset, indent, source: head }\n ];\n if (!addEndtoBlockProps(props, end))\n props.push({ type: 'newline', offset: -1, indent, source: '\\n' });\n return { type: 'block-scalar', offset, indent, props, source: body };\n }\n case '\"':\n return { type: 'double-quoted-scalar', offset, indent, source, end };\n case \"'\":\n return { type: 'single-quoted-scalar', offset, indent, source, end };\n default:\n return { type: 'scalar', offset, indent, source, end };\n }\n}\n/**\n * Set the value of `token` to the given string `value`, overwriting any previous contents and type that it may have.\n *\n * Best efforts are made to retain any comments previously associated with the `token`,\n * though all contents within a collection's `items` will be overwritten.\n *\n * Values that represent an actual string but may be parsed as a different type should use a `type` other than `'PLAIN'`,\n * as this function does not support any schema operations and won't check for such conflicts.\n *\n * @param token Any token. If it does not include an `indent` value, the value will be stringified as if it were an implicit key.\n * @param value The string representation of the value, which will have its content properly indented.\n * @param context.afterKey In most cases, values after a key should have an additional level of indentation.\n * @param context.implicitKey Being within an implicit key may affect the resolved type of the token's value.\n * @param context.inFlow Being within a flow collection may affect the resolved type of the token's value.\n * @param context.type The preferred type of the scalar token. If undefined, the previous type of the `token` will be used, defaulting to `'PLAIN'`.\n */\nfunction setScalarValue(token, value, context = {}) {\n let { afterKey = false, implicitKey = false, inFlow = false, type } = context;\n let indent = 'indent' in token ? token.indent : null;\n if (afterKey && typeof indent === 'number')\n indent += 2;\n if (!type)\n switch (token.type) {\n case 'single-quoted-scalar':\n type = 'QUOTE_SINGLE';\n break;\n case 'double-quoted-scalar':\n type = 'QUOTE_DOUBLE';\n break;\n case 'block-scalar': {\n const header = token.props[0];\n if (header.type !== 'block-scalar-header')\n throw new Error('Invalid block scalar header');\n type = header.source[0] === '>' ? 'BLOCK_FOLDED' : 'BLOCK_LITERAL';\n break;\n }\n default:\n type = 'PLAIN';\n }\n const source = stringifyString.stringifyString({ type, value }, {\n implicitKey: implicitKey || indent === null,\n indent: indent !== null && indent > 0 ? ' '.repeat(indent) : '',\n inFlow,\n options: { blockQuote: true, lineWidth: -1 }\n });\n switch (source[0]) {\n case '|':\n case '>':\n setBlockScalarValue(token, source);\n break;\n case '\"':\n setFlowScalarValue(token, source, 'double-quoted-scalar');\n break;\n case \"'\":\n setFlowScalarValue(token, source, 'single-quoted-scalar');\n break;\n default:\n setFlowScalarValue(token, source, 'scalar');\n }\n}\nfunction setBlockScalarValue(token, source) {\n const he = source.indexOf('\\n');\n const head = source.substring(0, he);\n const body = source.substring(he + 1) + '\\n';\n if (token.type === 'block-scalar') {\n const header = token.props[0];\n if (header.type !== 'block-scalar-header')\n throw new Error('Invalid block scalar header');\n header.source = head;\n token.source = body;\n }\n else {\n const { offset } = token;\n const indent = 'indent' in token ? token.indent : -1;\n const props = [\n { type: 'block-scalar-header', offset, indent, source: head }\n ];\n if (!addEndtoBlockProps(props, 'end' in token ? token.end : undefined))\n props.push({ type: 'newline', offset: -1, indent, source: '\\n' });\n for (const key of Object.keys(token))\n if (key !== 'type' && key !== 'offset')\n delete token[key];\n Object.assign(token, { type: 'block-scalar', indent, props, source: body });\n }\n}\n/** @returns `true` if last token is a newline */\nfunction addEndtoBlockProps(props, end) {\n if (end)\n for (const st of end)\n switch (st.type) {\n case 'space':\n case 'comment':\n props.push(st);\n break;\n case 'newline':\n props.push(st);\n return true;\n }\n return false;\n}\nfunction setFlowScalarValue(token, source, type) {\n switch (token.type) {\n case 'scalar':\n case 'double-quoted-scalar':\n case 'single-quoted-scalar':\n token.type = type;\n token.source = source;\n break;\n case 'block-scalar': {\n const end = token.props.slice(1);\n let oa = source.length;\n if (token.props[0].type === 'block-scalar-header')\n oa -= token.props[0].source.length;\n for (const tok of end)\n tok.offset += oa;\n delete token.props;\n Object.assign(token, { type, source, end });\n break;\n }\n case 'block-map':\n case 'block-seq': {\n const offset = token.offset + source.length;\n const nl = { type: 'newline', offset, indent: token.indent, source: '\\n' };\n delete token.items;\n Object.assign(token, { type, source, end: [nl] });\n break;\n }\n default: {\n const indent = 'indent' in token ? token.indent : -1;\n const end = 'end' in token && Array.isArray(token.end)\n ? token.end.filter(st => st.type === 'space' ||\n st.type === 'comment' ||\n st.type === 'newline')\n : [];\n for (const key of Object.keys(token))\n if (key !== 'type' && key !== 'offset')\n delete token[key];\n Object.assign(token, { type, indent, source, end });\n }\n }\n}\n\nexports.createScalarToken = createScalarToken;\nexports.resolveAsScalar = resolveAsScalar;\nexports.setScalarValue = setScalarValue;\n","'use strict';\n\n/**\n * Stringify a CST document, token, or collection item\n *\n * Fair warning: This applies no validation whatsoever, and\n * simply concatenates the sources in their logical order.\n */\nconst stringify = (cst) => 'type' in cst ? stringifyToken(cst) : stringifyItem(cst);\nfunction stringifyToken(token) {\n switch (token.type) {\n case 'block-scalar': {\n let res = '';\n for (const tok of token.props)\n res += stringifyToken(tok);\n return res + token.source;\n }\n case 'block-map':\n case 'block-seq': {\n let res = '';\n for (const item of token.items)\n res += stringifyItem(item);\n return res;\n }\n case 'flow-collection': {\n let res = token.start.source;\n for (const item of token.items)\n res += stringifyItem(item);\n for (const st of token.end)\n res += st.source;\n return res;\n }\n case 'document': {\n let res = stringifyItem(token);\n if (token.end)\n for (const st of token.end)\n res += st.source;\n return res;\n }\n default: {\n let res = token.source;\n if ('end' in token && token.end)\n for (const st of token.end)\n res += st.source;\n return res;\n }\n }\n}\nfunction stringifyItem({ start, key, sep, value }) {\n let res = '';\n for (const st of start)\n res += st.source;\n if (key)\n res += stringifyToken(key);\n if (sep)\n for (const st of sep)\n res += st.source;\n if (value)\n res += stringifyToken(value);\n return res;\n}\n\nexports.stringify = stringify;\n","'use strict';\n\nconst BREAK = Symbol('break visit');\nconst SKIP = Symbol('skip children');\nconst REMOVE = Symbol('remove item');\n/**\n * Apply a visitor to a CST document or item.\n *\n * Walks through the tree (depth-first) starting from the root, calling a\n * `visitor` function with two arguments when entering each item:\n * - `item`: The current item, which included the following members:\n * - `start: SourceToken[]` – Source tokens before the key or value,\n * possibly including its anchor or tag.\n * - `key?: Token | null` – Set for pair values. May then be `null`, if\n * the key before the `:` separator is empty.\n * - `sep?: SourceToken[]` – Source tokens between the key and the value,\n * which should include the `:` map value indicator if `value` is set.\n * - `value?: Token` – The value of a sequence item, or of a map pair.\n * - `path`: The steps from the root to the current node, as an array of\n * `['key' | 'value', number]` tuples.\n *\n * The return value of the visitor may be used to control the traversal:\n * - `undefined` (default): Do nothing and continue\n * - `visit.SKIP`: Do not visit the children of this token, continue with\n * next sibling\n * - `visit.BREAK`: Terminate traversal completely\n * - `visit.REMOVE`: Remove the current item, then continue with the next one\n * - `number`: Set the index of the next step. This is useful especially if\n * the index of the current token has changed.\n * - `function`: Define the next visitor for this item. After the original\n * visitor is called on item entry, next visitors are called after handling\n * a non-empty `key` and when exiting the item.\n */\nfunction visit(cst, visitor) {\n if ('type' in cst && cst.type === 'document')\n cst = { start: cst.start, value: cst.value };\n _visit(Object.freeze([]), cst, visitor);\n}\n// Without the `as symbol` casts, TS declares these in the `visit`\n// namespace using `var`, but then complains about that because\n// `unique symbol` must be `const`.\n/** Terminate visit traversal completely */\nvisit.BREAK = BREAK;\n/** Do not visit the children of the current item */\nvisit.SKIP = SKIP;\n/** Remove the current item */\nvisit.REMOVE = REMOVE;\n/** Find the item at `path` from `cst` as the root */\nvisit.itemAtPath = (cst, path) => {\n let item = cst;\n for (const [field, index] of path) {\n const tok = item?.[field];\n if (tok && 'items' in tok) {\n item = tok.items[index];\n }\n else\n return undefined;\n }\n return item;\n};\n/**\n * Get the immediate parent collection of the item at `path` from `cst` as the root.\n *\n * Throws an error if the collection is not found, which should never happen if the item itself exists.\n */\nvisit.parentCollection = (cst, path) => {\n const parent = visit.itemAtPath(cst, path.slice(0, -1));\n const field = path[path.length - 1][0];\n const coll = parent?.[field];\n if (coll && 'items' in coll)\n return coll;\n throw new Error('Parent collection not found');\n};\nfunction _visit(path, item, visitor) {\n let ctrl = visitor(item, path);\n if (typeof ctrl === 'symbol')\n return ctrl;\n for (const field of ['key', 'value']) {\n const token = item[field];\n if (token && 'items' in token) {\n for (let i = 0; i < token.items.length; ++i) {\n const ci = _visit(Object.freeze(path.concat([[field, i]])), token.items[i], visitor);\n if (typeof ci === 'number')\n i = ci - 1;\n else if (ci === BREAK)\n return BREAK;\n else if (ci === REMOVE) {\n token.items.splice(i, 1);\n i -= 1;\n }\n }\n if (typeof ctrl === 'function' && field === 'key')\n ctrl = ctrl(item, path);\n }\n }\n return typeof ctrl === 'function' ? ctrl(item, path) : ctrl;\n}\n\nexports.visit = visit;\n","'use strict';\n\nvar cstScalar = require('./cst-scalar.js');\nvar cstStringify = require('./cst-stringify.js');\nvar cstVisit = require('./cst-visit.js');\n\n/** The byte order mark */\nconst BOM = '\\u{FEFF}';\n/** Start of doc-mode */\nconst DOCUMENT = '\\x02'; // C0: Start of Text\n/** Unexpected end of flow-mode */\nconst FLOW_END = '\\x18'; // C0: Cancel\n/** Next token is a scalar value */\nconst SCALAR = '\\x1f'; // C0: Unit Separator\n/** @returns `true` if `token` is a flow or block collection */\nconst isCollection = (token) => !!token && 'items' in token;\n/** @returns `true` if `token` is a flow or block scalar; not an alias */\nconst isScalar = (token) => !!token &&\n (token.type === 'scalar' ||\n token.type === 'single-quoted-scalar' ||\n token.type === 'double-quoted-scalar' ||\n token.type === 'block-scalar');\n/* istanbul ignore next */\n/** Get a printable representation of a lexer token */\nfunction prettyToken(token) {\n switch (token) {\n case BOM:\n return '';\n case DOCUMENT:\n return '';\n case FLOW_END:\n return '';\n case SCALAR:\n return '';\n default:\n return JSON.stringify(token);\n }\n}\n/** Identify the type of a lexer token. May return `null` for unknown tokens. */\nfunction tokenType(source) {\n switch (source) {\n case BOM:\n return 'byte-order-mark';\n case DOCUMENT:\n return 'doc-mode';\n case FLOW_END:\n return 'flow-error-end';\n case SCALAR:\n return 'scalar';\n case '---':\n return 'doc-start';\n case '...':\n return 'doc-end';\n case '':\n case '\\n':\n case '\\r\\n':\n return 'newline';\n case '-':\n return 'seq-item-ind';\n case '?':\n return 'explicit-key-ind';\n case ':':\n return 'map-value-ind';\n case '{':\n return 'flow-map-start';\n case '}':\n return 'flow-map-end';\n case '[':\n return 'flow-seq-start';\n case ']':\n return 'flow-seq-end';\n case ',':\n return 'comma';\n }\n switch (source[0]) {\n case ' ':\n case '\\t':\n return 'space';\n case '#':\n return 'comment';\n case '%':\n return 'directive-line';\n case '*':\n return 'alias';\n case '&':\n return 'anchor';\n case '!':\n return 'tag';\n case \"'\":\n return 'single-quoted-scalar';\n case '\"':\n return 'double-quoted-scalar';\n case '|':\n case '>':\n return 'block-scalar-header';\n }\n return null;\n}\n\nexports.createScalarToken = cstScalar.createScalarToken;\nexports.resolveAsScalar = cstScalar.resolveAsScalar;\nexports.setScalarValue = cstScalar.setScalarValue;\nexports.stringify = cstStringify.stringify;\nexports.visit = cstVisit.visit;\nexports.BOM = BOM;\nexports.DOCUMENT = DOCUMENT;\nexports.FLOW_END = FLOW_END;\nexports.SCALAR = SCALAR;\nexports.isCollection = isCollection;\nexports.isScalar = isScalar;\nexports.prettyToken = prettyToken;\nexports.tokenType = tokenType;\n","'use strict';\n\nvar cst = require('./cst.js');\n\n/*\nSTART -> stream\n\nstream\n directive -> line-end -> stream\n indent + line-end -> stream\n [else] -> line-start\n\nline-end\n comment -> line-end\n newline -> .\n input-end -> END\n\nline-start\n doc-start -> doc\n doc-end -> stream\n [else] -> indent -> block-start\n\nblock-start\n seq-item-start -> block-start\n explicit-key-start -> block-start\n map-value-start -> block-start\n [else] -> doc\n\ndoc\n line-end -> line-start\n spaces -> doc\n anchor -> doc\n tag -> doc\n flow-start -> flow -> doc\n flow-end -> error -> doc\n seq-item-start -> error -> doc\n explicit-key-start -> error -> doc\n map-value-start -> doc\n alias -> doc\n quote-start -> quoted-scalar -> doc\n block-scalar-header -> line-end -> block-scalar(min) -> line-start\n [else] -> plain-scalar(false, min) -> doc\n\nflow\n line-end -> flow\n spaces -> flow\n anchor -> flow\n tag -> flow\n flow-start -> flow -> flow\n flow-end -> .\n seq-item-start -> error -> flow\n explicit-key-start -> flow\n map-value-start -> flow\n alias -> flow\n quote-start -> quoted-scalar -> flow\n comma -> flow\n [else] -> plain-scalar(true, 0) -> flow\n\nquoted-scalar\n quote-end -> .\n [else] -> quoted-scalar\n\nblock-scalar(min)\n newline + peek(indent < min) -> .\n [else] -> block-scalar(min)\n\nplain-scalar(is-flow, min)\n scalar-end(is-flow) -> .\n peek(newline + (indent < min)) -> .\n [else] -> plain-scalar(min)\n*/\nfunction isEmpty(ch) {\n switch (ch) {\n case undefined:\n case ' ':\n case '\\n':\n case '\\r':\n case '\\t':\n return true;\n default:\n return false;\n }\n}\nconst hexDigits = new Set('0123456789ABCDEFabcdef');\nconst tagChars = new Set(\"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-#;/?:@&=+$_.!~*'()\");\nconst flowIndicatorChars = new Set(',[]{}');\nconst invalidAnchorChars = new Set(' ,[]{}\\n\\r\\t');\nconst isNotAnchorChar = (ch) => !ch || invalidAnchorChars.has(ch);\n/**\n * Splits an input string into lexical tokens, i.e. smaller strings that are\n * easily identifiable by `tokens.tokenType()`.\n *\n * Lexing starts always in a \"stream\" context. Incomplete input may be buffered\n * until a complete token can be emitted.\n *\n * In addition to slices of the original input, the following control characters\n * may also be emitted:\n *\n * - `\\x02` (Start of Text): A document starts with the next token\n * - `\\x18` (Cancel): Unexpected end of flow-mode (indicates an error)\n * - `\\x1f` (Unit Separator): Next token is a scalar value\n * - `\\u{FEFF}` (Byte order mark): Emitted separately outside documents\n */\nclass Lexer {\n constructor() {\n /**\n * Flag indicating whether the end of the current buffer marks the end of\n * all input\n */\n this.atEnd = false;\n /**\n * Explicit indent set in block scalar header, as an offset from the current\n * minimum indent, so e.g. set to 1 from a header `|2+`. Set to -1 if not\n * explicitly set.\n */\n this.blockScalarIndent = -1;\n /**\n * Block scalars that include a + (keep) chomping indicator in their header\n * include trailing empty lines, which are otherwise excluded from the\n * scalar's contents.\n */\n this.blockScalarKeep = false;\n /** Current input */\n this.buffer = '';\n /**\n * Flag noting whether the map value indicator : can immediately follow this\n * node within a flow context.\n */\n this.flowKey = false;\n /** Count of surrounding flow collection levels. */\n this.flowLevel = 0;\n /**\n * Minimum level of indentation required for next lines to be parsed as a\n * part of the current scalar value.\n */\n this.indentNext = 0;\n /** Indentation level of the current line. */\n this.indentValue = 0;\n /** Position of the next \\n character. */\n this.lineEndPos = null;\n /** Stores the state of the lexer if reaching the end of incpomplete input */\n this.next = null;\n /** A pointer to `buffer`; the current position of the lexer. */\n this.pos = 0;\n }\n /**\n * Generate YAML tokens from the `source` string. If `incomplete`,\n * a part of the last line may be left as a buffer for the next call.\n *\n * @returns A generator of lexical tokens\n */\n *lex(source, incomplete = false) {\n if (source) {\n if (typeof source !== 'string')\n throw TypeError('source is not a string');\n this.buffer = this.buffer ? this.buffer + source : source;\n this.lineEndPos = null;\n }\n this.atEnd = !incomplete;\n let next = this.next ?? 'stream';\n while (next && (incomplete || this.hasChars(1)))\n next = yield* this.parseNext(next);\n }\n atLineEnd() {\n let i = this.pos;\n let ch = this.buffer[i];\n while (ch === ' ' || ch === '\\t')\n ch = this.buffer[++i];\n if (!ch || ch === '#' || ch === '\\n')\n return true;\n if (ch === '\\r')\n return this.buffer[i + 1] === '\\n';\n return false;\n }\n charAt(n) {\n return this.buffer[this.pos + n];\n }\n continueScalar(offset) {\n let ch = this.buffer[offset];\n if (this.indentNext > 0) {\n let indent = 0;\n while (ch === ' ')\n ch = this.buffer[++indent + offset];\n if (ch === '\\r') {\n const next = this.buffer[indent + offset + 1];\n if (next === '\\n' || (!next && !this.atEnd))\n return offset + indent + 1;\n }\n return ch === '\\n' || indent >= this.indentNext || (!ch && !this.atEnd)\n ? offset + indent\n : -1;\n }\n if (ch === '-' || ch === '.') {\n const dt = this.buffer.substr(offset, 3);\n if ((dt === '---' || dt === '...') && isEmpty(this.buffer[offset + 3]))\n return -1;\n }\n return offset;\n }\n getLine() {\n let end = this.lineEndPos;\n if (typeof end !== 'number' || (end !== -1 && end < this.pos)) {\n end = this.buffer.indexOf('\\n', this.pos);\n this.lineEndPos = end;\n }\n if (end === -1)\n return this.atEnd ? this.buffer.substring(this.pos) : null;\n if (this.buffer[end - 1] === '\\r')\n end -= 1;\n return this.buffer.substring(this.pos, end);\n }\n hasChars(n) {\n return this.pos + n <= this.buffer.length;\n }\n setNext(state) {\n this.buffer = this.buffer.substring(this.pos);\n this.pos = 0;\n this.lineEndPos = null;\n this.next = state;\n return null;\n }\n peek(n) {\n return this.buffer.substr(this.pos, n);\n }\n *parseNext(next) {\n switch (next) {\n case 'stream':\n return yield* this.parseStream();\n case 'line-start':\n return yield* this.parseLineStart();\n case 'block-start':\n return yield* this.parseBlockStart();\n case 'doc':\n return yield* this.parseDocument();\n case 'flow':\n return yield* this.parseFlowCollection();\n case 'quoted-scalar':\n return yield* this.parseQuotedScalar();\n case 'block-scalar':\n return yield* this.parseBlockScalar();\n case 'plain-scalar':\n return yield* this.parsePlainScalar();\n }\n }\n *parseStream() {\n let line = this.getLine();\n if (line === null)\n return this.setNext('stream');\n if (line[0] === cst.BOM) {\n yield* this.pushCount(1);\n line = line.substring(1);\n }\n if (line[0] === '%') {\n let dirEnd = line.length;\n let cs = line.indexOf('#');\n while (cs !== -1) {\n const ch = line[cs - 1];\n if (ch === ' ' || ch === '\\t') {\n dirEnd = cs - 1;\n break;\n }\n else {\n cs = line.indexOf('#', cs + 1);\n }\n }\n while (true) {\n const ch = line[dirEnd - 1];\n if (ch === ' ' || ch === '\\t')\n dirEnd -= 1;\n else\n break;\n }\n const n = (yield* this.pushCount(dirEnd)) + (yield* this.pushSpaces(true));\n yield* this.pushCount(line.length - n); // possible comment\n this.pushNewline();\n return 'stream';\n }\n if (this.atLineEnd()) {\n const sp = yield* this.pushSpaces(true);\n yield* this.pushCount(line.length - sp);\n yield* this.pushNewline();\n return 'stream';\n }\n yield cst.DOCUMENT;\n return yield* this.parseLineStart();\n }\n *parseLineStart() {\n const ch = this.charAt(0);\n if (!ch && !this.atEnd)\n return this.setNext('line-start');\n if (ch === '-' || ch === '.') {\n if (!this.atEnd && !this.hasChars(4))\n return this.setNext('line-start');\n const s = this.peek(3);\n if ((s === '---' || s === '...') && isEmpty(this.charAt(3))) {\n yield* this.pushCount(3);\n this.indentValue = 0;\n this.indentNext = 0;\n return s === '---' ? 'doc' : 'stream';\n }\n }\n this.indentValue = yield* this.pushSpaces(false);\n if (this.indentNext > this.indentValue && !isEmpty(this.charAt(1)))\n this.indentNext = this.indentValue;\n return yield* this.parseBlockStart();\n }\n *parseBlockStart() {\n const [ch0, ch1] = this.peek(2);\n if (!ch1 && !this.atEnd)\n return this.setNext('block-start');\n if ((ch0 === '-' || ch0 === '?' || ch0 === ':') && isEmpty(ch1)) {\n const n = (yield* this.pushCount(1)) + (yield* this.pushSpaces(true));\n this.indentNext = this.indentValue + 1;\n this.indentValue += n;\n return yield* this.parseBlockStart();\n }\n return 'doc';\n }\n *parseDocument() {\n yield* this.pushSpaces(true);\n const line = this.getLine();\n if (line === null)\n return this.setNext('doc');\n let n = yield* this.pushIndicators();\n switch (line[n]) {\n case '#':\n yield* this.pushCount(line.length - n);\n // fallthrough\n case undefined:\n yield* this.pushNewline();\n return yield* this.parseLineStart();\n case '{':\n case '[':\n yield* this.pushCount(1);\n this.flowKey = false;\n this.flowLevel = 1;\n return 'flow';\n case '}':\n case ']':\n // this is an error\n yield* this.pushCount(1);\n return 'doc';\n case '*':\n yield* this.pushUntil(isNotAnchorChar);\n return 'doc';\n case '\"':\n case \"'\":\n return yield* this.parseQuotedScalar();\n case '|':\n case '>':\n n += yield* this.parseBlockScalarHeader();\n n += yield* this.pushSpaces(true);\n yield* this.pushCount(line.length - n);\n yield* this.pushNewline();\n return yield* this.parseBlockScalar();\n default:\n return yield* this.parsePlainScalar();\n }\n }\n *parseFlowCollection() {\n let nl, sp;\n let indent = -1;\n do {\n nl = yield* this.pushNewline();\n if (nl > 0) {\n sp = yield* this.pushSpaces(false);\n this.indentValue = indent = sp;\n }\n else {\n sp = 0;\n }\n sp += yield* this.pushSpaces(true);\n } while (nl + sp > 0);\n const line = this.getLine();\n if (line === null)\n return this.setNext('flow');\n if ((indent !== -1 && indent < this.indentNext && line[0] !== '#') ||\n (indent === 0 &&\n (line.startsWith('---') || line.startsWith('...')) &&\n isEmpty(line[3]))) {\n // Allowing for the terminal ] or } at the same (rather than greater)\n // indent level as the initial [ or { is technically invalid, but\n // failing here would be surprising to users.\n const atFlowEndMarker = indent === this.indentNext - 1 &&\n this.flowLevel === 1 &&\n (line[0] === ']' || line[0] === '}');\n if (!atFlowEndMarker) {\n // this is an error\n this.flowLevel = 0;\n yield cst.FLOW_END;\n return yield* this.parseLineStart();\n }\n }\n let n = 0;\n while (line[n] === ',') {\n n += yield* this.pushCount(1);\n n += yield* this.pushSpaces(true);\n this.flowKey = false;\n }\n n += yield* this.pushIndicators();\n switch (line[n]) {\n case undefined:\n return 'flow';\n case '#':\n yield* this.pushCount(line.length - n);\n return 'flow';\n case '{':\n case '[':\n yield* this.pushCount(1);\n this.flowKey = false;\n this.flowLevel += 1;\n return 'flow';\n case '}':\n case ']':\n yield* this.pushCount(1);\n this.flowKey = true;\n this.flowLevel -= 1;\n return this.flowLevel ? 'flow' : 'doc';\n case '*':\n yield* this.pushUntil(isNotAnchorChar);\n return 'flow';\n case '\"':\n case \"'\":\n this.flowKey = true;\n return yield* this.parseQuotedScalar();\n case ':': {\n const next = this.charAt(1);\n if (this.flowKey || isEmpty(next) || next === ',') {\n this.flowKey = false;\n yield* this.pushCount(1);\n yield* this.pushSpaces(true);\n return 'flow';\n }\n }\n // fallthrough\n default:\n this.flowKey = false;\n return yield* this.parsePlainScalar();\n }\n }\n *parseQuotedScalar() {\n const quote = this.charAt(0);\n let end = this.buffer.indexOf(quote, this.pos + 1);\n if (quote === \"'\") {\n while (end !== -1 && this.buffer[end + 1] === \"'\")\n end = this.buffer.indexOf(\"'\", end + 2);\n }\n else {\n // double-quote\n while (end !== -1) {\n let n = 0;\n while (this.buffer[end - 1 - n] === '\\\\')\n n += 1;\n if (n % 2 === 0)\n break;\n end = this.buffer.indexOf('\"', end + 1);\n }\n }\n // Only looking for newlines within the quotes\n const qb = this.buffer.substring(0, end);\n let nl = qb.indexOf('\\n', this.pos);\n if (nl !== -1) {\n while (nl !== -1) {\n const cs = this.continueScalar(nl + 1);\n if (cs === -1)\n break;\n nl = qb.indexOf('\\n', cs);\n }\n if (nl !== -1) {\n // this is an error caused by an unexpected unindent\n end = nl - (qb[nl - 1] === '\\r' ? 2 : 1);\n }\n }\n if (end === -1) {\n if (!this.atEnd)\n return this.setNext('quoted-scalar');\n end = this.buffer.length;\n }\n yield* this.pushToIndex(end + 1, false);\n return this.flowLevel ? 'flow' : 'doc';\n }\n *parseBlockScalarHeader() {\n this.blockScalarIndent = -1;\n this.blockScalarKeep = false;\n let i = this.pos;\n while (true) {\n const ch = this.buffer[++i];\n if (ch === '+')\n this.blockScalarKeep = true;\n else if (ch > '0' && ch <= '9')\n this.blockScalarIndent = Number(ch) - 1;\n else if (ch !== '-')\n break;\n }\n return yield* this.pushUntil(ch => isEmpty(ch) || ch === '#');\n }\n *parseBlockScalar() {\n let nl = this.pos - 1; // may be -1 if this.pos === 0\n let indent = 0;\n let ch;\n loop: for (let i = this.pos; (ch = this.buffer[i]); ++i) {\n switch (ch) {\n case ' ':\n indent += 1;\n break;\n case '\\n':\n nl = i;\n indent = 0;\n break;\n case '\\r': {\n const next = this.buffer[i + 1];\n if (!next && !this.atEnd)\n return this.setNext('block-scalar');\n if (next === '\\n')\n break;\n } // fallthrough\n default:\n break loop;\n }\n }\n if (!ch && !this.atEnd)\n return this.setNext('block-scalar');\n if (indent >= this.indentNext) {\n if (this.blockScalarIndent === -1)\n this.indentNext = indent;\n else {\n this.indentNext =\n this.blockScalarIndent + (this.indentNext === 0 ? 1 : this.indentNext);\n }\n do {\n const cs = this.continueScalar(nl + 1);\n if (cs === -1)\n break;\n nl = this.buffer.indexOf('\\n', cs);\n } while (nl !== -1);\n if (nl === -1) {\n if (!this.atEnd)\n return this.setNext('block-scalar');\n nl = this.buffer.length;\n }\n }\n // Trailing insufficiently indented tabs are invalid.\n // To catch that during parsing, we include them in the block scalar value.\n let i = nl + 1;\n ch = this.buffer[i];\n while (ch === ' ')\n ch = this.buffer[++i];\n if (ch === '\\t') {\n while (ch === '\\t' || ch === ' ' || ch === '\\r' || ch === '\\n')\n ch = this.buffer[++i];\n nl = i - 1;\n }\n else if (!this.blockScalarKeep) {\n do {\n let i = nl - 1;\n let ch = this.buffer[i];\n if (ch === '\\r')\n ch = this.buffer[--i];\n const lastChar = i; // Drop the line if last char not more indented\n while (ch === ' ')\n ch = this.buffer[--i];\n if (ch === '\\n' && i >= this.pos && i + 1 + indent > lastChar)\n nl = i;\n else\n break;\n } while (true);\n }\n yield cst.SCALAR;\n yield* this.pushToIndex(nl + 1, true);\n return yield* this.parseLineStart();\n }\n *parsePlainScalar() {\n const inFlow = this.flowLevel > 0;\n let end = this.pos - 1;\n let i = this.pos - 1;\n let ch;\n while ((ch = this.buffer[++i])) {\n if (ch === ':') {\n const next = this.buffer[i + 1];\n if (isEmpty(next) || (inFlow && flowIndicatorChars.has(next)))\n break;\n end = i;\n }\n else if (isEmpty(ch)) {\n let next = this.buffer[i + 1];\n if (ch === '\\r') {\n if (next === '\\n') {\n i += 1;\n ch = '\\n';\n next = this.buffer[i + 1];\n }\n else\n end = i;\n }\n if (next === '#' || (inFlow && flowIndicatorChars.has(next)))\n break;\n if (ch === '\\n') {\n const cs = this.continueScalar(i + 1);\n if (cs === -1)\n break;\n i = Math.max(i, cs - 2); // to advance, but still account for ' #'\n }\n }\n else {\n if (inFlow && flowIndicatorChars.has(ch))\n break;\n end = i;\n }\n }\n if (!ch && !this.atEnd)\n return this.setNext('plain-scalar');\n yield cst.SCALAR;\n yield* this.pushToIndex(end + 1, true);\n return inFlow ? 'flow' : 'doc';\n }\n *pushCount(n) {\n if (n > 0) {\n yield this.buffer.substr(this.pos, n);\n this.pos += n;\n return n;\n }\n return 0;\n }\n *pushToIndex(i, allowEmpty) {\n const s = this.buffer.slice(this.pos, i);\n if (s) {\n yield s;\n this.pos += s.length;\n return s.length;\n }\n else if (allowEmpty)\n yield '';\n return 0;\n }\n *pushIndicators() {\n switch (this.charAt(0)) {\n case '!':\n return ((yield* this.pushTag()) +\n (yield* this.pushSpaces(true)) +\n (yield* this.pushIndicators()));\n case '&':\n return ((yield* this.pushUntil(isNotAnchorChar)) +\n (yield* this.pushSpaces(true)) +\n (yield* this.pushIndicators()));\n case '-': // this is an error\n case '?': // this is an error outside flow collections\n case ':': {\n const inFlow = this.flowLevel > 0;\n const ch1 = this.charAt(1);\n if (isEmpty(ch1) || (inFlow && flowIndicatorChars.has(ch1))) {\n if (!inFlow)\n this.indentNext = this.indentValue + 1;\n else if (this.flowKey)\n this.flowKey = false;\n return ((yield* this.pushCount(1)) +\n (yield* this.pushSpaces(true)) +\n (yield* this.pushIndicators()));\n }\n }\n }\n return 0;\n }\n *pushTag() {\n if (this.charAt(1) === '<') {\n let i = this.pos + 2;\n let ch = this.buffer[i];\n while (!isEmpty(ch) && ch !== '>')\n ch = this.buffer[++i];\n return yield* this.pushToIndex(ch === '>' ? i + 1 : i, false);\n }\n else {\n let i = this.pos + 1;\n let ch = this.buffer[i];\n while (ch) {\n if (tagChars.has(ch))\n ch = this.buffer[++i];\n else if (ch === '%' &&\n hexDigits.has(this.buffer[i + 1]) &&\n hexDigits.has(this.buffer[i + 2])) {\n ch = this.buffer[(i += 3)];\n }\n else\n break;\n }\n return yield* this.pushToIndex(i, false);\n }\n }\n *pushNewline() {\n const ch = this.buffer[this.pos];\n if (ch === '\\n')\n return yield* this.pushCount(1);\n else if (ch === '\\r' && this.charAt(1) === '\\n')\n return yield* this.pushCount(2);\n else\n return 0;\n }\n *pushSpaces(allowTabs) {\n let i = this.pos - 1;\n let ch;\n do {\n ch = this.buffer[++i];\n } while (ch === ' ' || (allowTabs && ch === '\\t'));\n const n = i - this.pos;\n if (n > 0) {\n yield this.buffer.substr(this.pos, n);\n this.pos = i;\n }\n return n;\n }\n *pushUntil(test) {\n let i = this.pos;\n let ch = this.buffer[i];\n while (!test(ch))\n ch = this.buffer[++i];\n return yield* this.pushToIndex(i, false);\n }\n}\n\nexports.Lexer = Lexer;\n","'use strict';\n\n/**\n * Tracks newlines during parsing in order to provide an efficient API for\n * determining the one-indexed `{ line, col }` position for any offset\n * within the input.\n */\nclass LineCounter {\n constructor() {\n this.lineStarts = [];\n /**\n * Should be called in ascending order. Otherwise, call\n * `lineCounter.lineStarts.sort()` before calling `linePos()`.\n */\n this.addNewLine = (offset) => this.lineStarts.push(offset);\n /**\n * Performs a binary search and returns the 1-indexed { line, col }\n * position of `offset`. If `line === 0`, `addNewLine` has never been\n * called or `offset` is before the first known newline.\n */\n this.linePos = (offset) => {\n let low = 0;\n let high = this.lineStarts.length;\n while (low < high) {\n const mid = (low + high) >> 1; // Math.floor((low + high) / 2)\n if (this.lineStarts[mid] < offset)\n low = mid + 1;\n else\n high = mid;\n }\n if (this.lineStarts[low] === offset)\n return { line: low + 1, col: 1 };\n if (low === 0)\n return { line: 0, col: offset };\n const start = this.lineStarts[low - 1];\n return { line: low, col: offset - start + 1 };\n };\n }\n}\n\nexports.LineCounter = LineCounter;\n","'use strict';\n\nvar node_process = require('process');\nvar cst = require('./cst.js');\nvar lexer = require('./lexer.js');\n\nfunction includesToken(list, type) {\n for (let i = 0; i < list.length; ++i)\n if (list[i].type === type)\n return true;\n return false;\n}\nfunction findNonEmptyIndex(list) {\n for (let i = 0; i < list.length; ++i) {\n switch (list[i].type) {\n case 'space':\n case 'comment':\n case 'newline':\n break;\n default:\n return i;\n }\n }\n return -1;\n}\nfunction isFlowToken(token) {\n switch (token?.type) {\n case 'alias':\n case 'scalar':\n case 'single-quoted-scalar':\n case 'double-quoted-scalar':\n case 'flow-collection':\n return true;\n default:\n return false;\n }\n}\nfunction getPrevProps(parent) {\n switch (parent.type) {\n case 'document':\n return parent.start;\n case 'block-map': {\n const it = parent.items[parent.items.length - 1];\n return it.sep ?? it.start;\n }\n case 'block-seq':\n return parent.items[parent.items.length - 1].start;\n /* istanbul ignore next should not happen */\n default:\n return [];\n }\n}\n/** Note: May modify input array */\nfunction getFirstKeyStartProps(prev) {\n if (prev.length === 0)\n return [];\n let i = prev.length;\n loop: while (--i >= 0) {\n switch (prev[i].type) {\n case 'doc-start':\n case 'explicit-key-ind':\n case 'map-value-ind':\n case 'seq-item-ind':\n case 'newline':\n break loop;\n }\n }\n while (prev[++i]?.type === 'space') {\n /* loop */\n }\n return prev.splice(i, prev.length);\n}\nfunction fixFlowSeqItems(fc) {\n if (fc.start.type === 'flow-seq-start') {\n for (const it of fc.items) {\n if (it.sep &&\n !it.value &&\n !includesToken(it.start, 'explicit-key-ind') &&\n !includesToken(it.sep, 'map-value-ind')) {\n if (it.key)\n it.value = it.key;\n delete it.key;\n if (isFlowToken(it.value)) {\n if (it.value.end)\n Array.prototype.push.apply(it.value.end, it.sep);\n else\n it.value.end = it.sep;\n }\n else\n Array.prototype.push.apply(it.start, it.sep);\n delete it.sep;\n }\n }\n }\n}\n/**\n * A YAML concrete syntax tree (CST) parser\n *\n * ```ts\n * const src: string = ...\n * for (const token of new Parser().parse(src)) {\n * // token: Token\n * }\n * ```\n *\n * To use the parser with a user-provided lexer:\n *\n * ```ts\n * function* parse(source: string, lexer: Lexer) {\n * const parser = new Parser()\n * for (const lexeme of lexer.lex(source))\n * yield* parser.next(lexeme)\n * yield* parser.end()\n * }\n *\n * const src: string = ...\n * const lexer = new Lexer()\n * for (const token of parse(src, lexer)) {\n * // token: Token\n * }\n * ```\n */\nclass Parser {\n /**\n * @param onNewLine - If defined, called separately with the start position of\n * each new line (in `parse()`, including the start of input).\n */\n constructor(onNewLine) {\n /** If true, space and sequence indicators count as indentation */\n this.atNewLine = true;\n /** If true, next token is a scalar value */\n this.atScalar = false;\n /** Current indentation level */\n this.indent = 0;\n /** Current offset since the start of parsing */\n this.offset = 0;\n /** On the same line with a block map key */\n this.onKeyLine = false;\n /** Top indicates the node that's currently being built */\n this.stack = [];\n /** The source of the current token, set in parse() */\n this.source = '';\n /** The type of the current token, set in parse() */\n this.type = '';\n // Must be defined after `next()`\n this.lexer = new lexer.Lexer();\n this.onNewLine = onNewLine;\n }\n /**\n * Parse `source` as a YAML stream.\n * If `incomplete`, a part of the last line may be left as a buffer for the next call.\n *\n * Errors are not thrown, but yielded as `{ type: 'error', message }` tokens.\n *\n * @returns A generator of tokens representing each directive, document, and other structure.\n */\n *parse(source, incomplete = false) {\n if (this.onNewLine && this.offset === 0)\n this.onNewLine(0);\n for (const lexeme of this.lexer.lex(source, incomplete))\n yield* this.next(lexeme);\n if (!incomplete)\n yield* this.end();\n }\n /**\n * Advance the parser by the `source` of one lexical token.\n */\n *next(source) {\n this.source = source;\n if (node_process.env.LOG_TOKENS)\n console.log('|', cst.prettyToken(source));\n if (this.atScalar) {\n this.atScalar = false;\n yield* this.step();\n this.offset += source.length;\n return;\n }\n const type = cst.tokenType(source);\n if (!type) {\n const message = `Not a YAML token: ${source}`;\n yield* this.pop({ type: 'error', offset: this.offset, message, source });\n this.offset += source.length;\n }\n else if (type === 'scalar') {\n this.atNewLine = false;\n this.atScalar = true;\n this.type = 'scalar';\n }\n else {\n this.type = type;\n yield* this.step();\n switch (type) {\n case 'newline':\n this.atNewLine = true;\n this.indent = 0;\n if (this.onNewLine)\n this.onNewLine(this.offset + source.length);\n break;\n case 'space':\n if (this.atNewLine && source[0] === ' ')\n this.indent += source.length;\n break;\n case 'explicit-key-ind':\n case 'map-value-ind':\n case 'seq-item-ind':\n if (this.atNewLine)\n this.indent += source.length;\n break;\n case 'doc-mode':\n case 'flow-error-end':\n return;\n default:\n this.atNewLine = false;\n }\n this.offset += source.length;\n }\n }\n /** Call at end of input to push out any remaining constructions */\n *end() {\n while (this.stack.length > 0)\n yield* this.pop();\n }\n get sourceToken() {\n const st = {\n type: this.type,\n offset: this.offset,\n indent: this.indent,\n source: this.source\n };\n return st;\n }\n *step() {\n const top = this.peek(1);\n if (this.type === 'doc-end' && (!top || top.type !== 'doc-end')) {\n while (this.stack.length > 0)\n yield* this.pop();\n this.stack.push({\n type: 'doc-end',\n offset: this.offset,\n source: this.source\n });\n return;\n }\n if (!top)\n return yield* this.stream();\n switch (top.type) {\n case 'document':\n return yield* this.document(top);\n case 'alias':\n case 'scalar':\n case 'single-quoted-scalar':\n case 'double-quoted-scalar':\n return yield* this.scalar(top);\n case 'block-scalar':\n return yield* this.blockScalar(top);\n case 'block-map':\n return yield* this.blockMap(top);\n case 'block-seq':\n return yield* this.blockSequence(top);\n case 'flow-collection':\n return yield* this.flowCollection(top);\n case 'doc-end':\n return yield* this.documentEnd(top);\n }\n /* istanbul ignore next should not happen */\n yield* this.pop();\n }\n peek(n) {\n return this.stack[this.stack.length - n];\n }\n *pop(error) {\n const token = error ?? this.stack.pop();\n /* istanbul ignore if should not happen */\n if (!token) {\n const message = 'Tried to pop an empty stack';\n yield { type: 'error', offset: this.offset, source: '', message };\n }\n else if (this.stack.length === 0) {\n yield token;\n }\n else {\n const top = this.peek(1);\n if (token.type === 'block-scalar') {\n // Block scalars use their parent rather than header indent\n token.indent = 'indent' in top ? top.indent : 0;\n }\n else if (token.type === 'flow-collection' && top.type === 'document') {\n // Ignore all indent for top-level flow collections\n token.indent = 0;\n }\n if (token.type === 'flow-collection')\n fixFlowSeqItems(token);\n switch (top.type) {\n case 'document':\n top.value = token;\n break;\n case 'block-scalar':\n top.props.push(token); // error\n break;\n case 'block-map': {\n const it = top.items[top.items.length - 1];\n if (it.value) {\n top.items.push({ start: [], key: token, sep: [] });\n this.onKeyLine = true;\n return;\n }\n else if (it.sep) {\n it.value = token;\n }\n else {\n Object.assign(it, { key: token, sep: [] });\n this.onKeyLine = !it.explicitKey;\n return;\n }\n break;\n }\n case 'block-seq': {\n const it = top.items[top.items.length - 1];\n if (it.value)\n top.items.push({ start: [], value: token });\n else\n it.value = token;\n break;\n }\n case 'flow-collection': {\n const it = top.items[top.items.length - 1];\n if (!it || it.value)\n top.items.push({ start: [], key: token, sep: [] });\n else if (it.sep)\n it.value = token;\n else\n Object.assign(it, { key: token, sep: [] });\n return;\n }\n /* istanbul ignore next should not happen */\n default:\n yield* this.pop();\n yield* this.pop(token);\n }\n if ((top.type === 'document' ||\n top.type === 'block-map' ||\n top.type === 'block-seq') &&\n (token.type === 'block-map' || token.type === 'block-seq')) {\n const last = token.items[token.items.length - 1];\n if (last &&\n !last.sep &&\n !last.value &&\n last.start.length > 0 &&\n findNonEmptyIndex(last.start) === -1 &&\n (token.indent === 0 ||\n last.start.every(st => st.type !== 'comment' || st.indent < token.indent))) {\n if (top.type === 'document')\n top.end = last.start;\n else\n top.items.push({ start: last.start });\n token.items.splice(-1, 1);\n }\n }\n }\n }\n *stream() {\n switch (this.type) {\n case 'directive-line':\n yield { type: 'directive', offset: this.offset, source: this.source };\n return;\n case 'byte-order-mark':\n case 'space':\n case 'comment':\n case 'newline':\n yield this.sourceToken;\n return;\n case 'doc-mode':\n case 'doc-start': {\n const doc = {\n type: 'document',\n offset: this.offset,\n start: []\n };\n if (this.type === 'doc-start')\n doc.start.push(this.sourceToken);\n this.stack.push(doc);\n return;\n }\n }\n yield {\n type: 'error',\n offset: this.offset,\n message: `Unexpected ${this.type} token in YAML stream`,\n source: this.source\n };\n }\n *document(doc) {\n if (doc.value)\n return yield* this.lineEnd(doc);\n switch (this.type) {\n case 'doc-start': {\n if (findNonEmptyIndex(doc.start) !== -1) {\n yield* this.pop();\n yield* this.step();\n }\n else\n doc.start.push(this.sourceToken);\n return;\n }\n case 'anchor':\n case 'tag':\n case 'space':\n case 'comment':\n case 'newline':\n doc.start.push(this.sourceToken);\n return;\n }\n const bv = this.startBlockValue(doc);\n if (bv)\n this.stack.push(bv);\n else {\n yield {\n type: 'error',\n offset: this.offset,\n message: `Unexpected ${this.type} token in YAML document`,\n source: this.source\n };\n }\n }\n *scalar(scalar) {\n if (this.type === 'map-value-ind') {\n const prev = getPrevProps(this.peek(2));\n const start = getFirstKeyStartProps(prev);\n let sep;\n if (scalar.end) {\n sep = scalar.end;\n sep.push(this.sourceToken);\n delete scalar.end;\n }\n else\n sep = [this.sourceToken];\n const map = {\n type: 'block-map',\n offset: scalar.offset,\n indent: scalar.indent,\n items: [{ start, key: scalar, sep }]\n };\n this.onKeyLine = true;\n this.stack[this.stack.length - 1] = map;\n }\n else\n yield* this.lineEnd(scalar);\n }\n *blockScalar(scalar) {\n switch (this.type) {\n case 'space':\n case 'comment':\n case 'newline':\n scalar.props.push(this.sourceToken);\n return;\n case 'scalar':\n scalar.source = this.source;\n // block-scalar source includes trailing newline\n this.atNewLine = true;\n this.indent = 0;\n if (this.onNewLine) {\n let nl = this.source.indexOf('\\n') + 1;\n while (nl !== 0) {\n this.onNewLine(this.offset + nl);\n nl = this.source.indexOf('\\n', nl) + 1;\n }\n }\n yield* this.pop();\n break;\n /* istanbul ignore next should not happen */\n default:\n yield* this.pop();\n yield* this.step();\n }\n }\n *blockMap(map) {\n const it = map.items[map.items.length - 1];\n // it.sep is true-ish if pair already has key or : separator\n switch (this.type) {\n case 'newline':\n this.onKeyLine = false;\n if (it.value) {\n const end = 'end' in it.value ? it.value.end : undefined;\n const last = Array.isArray(end) ? end[end.length - 1] : undefined;\n if (last?.type === 'comment')\n end?.push(this.sourceToken);\n else\n map.items.push({ start: [this.sourceToken] });\n }\n else if (it.sep) {\n it.sep.push(this.sourceToken);\n }\n else {\n it.start.push(this.sourceToken);\n }\n return;\n case 'space':\n case 'comment':\n if (it.value) {\n map.items.push({ start: [this.sourceToken] });\n }\n else if (it.sep) {\n it.sep.push(this.sourceToken);\n }\n else {\n if (this.atIndentedComment(it.start, map.indent)) {\n const prev = map.items[map.items.length - 2];\n const end = prev?.value?.end;\n if (Array.isArray(end)) {\n Array.prototype.push.apply(end, it.start);\n end.push(this.sourceToken);\n map.items.pop();\n return;\n }\n }\n it.start.push(this.sourceToken);\n }\n return;\n }\n if (this.indent >= map.indent) {\n const atMapIndent = !this.onKeyLine && this.indent === map.indent;\n const atNextItem = atMapIndent &&\n (it.sep || it.explicitKey) &&\n this.type !== 'seq-item-ind';\n // For empty nodes, assign newline-separated not indented empty tokens to following node\n let start = [];\n if (atNextItem && it.sep && !it.value) {\n const nl = [];\n for (let i = 0; i < it.sep.length; ++i) {\n const st = it.sep[i];\n switch (st.type) {\n case 'newline':\n nl.push(i);\n break;\n case 'space':\n break;\n case 'comment':\n if (st.indent > map.indent)\n nl.length = 0;\n break;\n default:\n nl.length = 0;\n }\n }\n if (nl.length >= 2)\n start = it.sep.splice(nl[1]);\n }\n switch (this.type) {\n case 'anchor':\n case 'tag':\n if (atNextItem || it.value) {\n start.push(this.sourceToken);\n map.items.push({ start });\n this.onKeyLine = true;\n }\n else if (it.sep) {\n it.sep.push(this.sourceToken);\n }\n else {\n it.start.push(this.sourceToken);\n }\n return;\n case 'explicit-key-ind':\n if (!it.sep && !it.explicitKey) {\n it.start.push(this.sourceToken);\n it.explicitKey = true;\n }\n else if (atNextItem || it.value) {\n start.push(this.sourceToken);\n map.items.push({ start, explicitKey: true });\n }\n else {\n this.stack.push({\n type: 'block-map',\n offset: this.offset,\n indent: this.indent,\n items: [{ start: [this.sourceToken], explicitKey: true }]\n });\n }\n this.onKeyLine = true;\n return;\n case 'map-value-ind':\n if (it.explicitKey) {\n if (!it.sep) {\n if (includesToken(it.start, 'newline')) {\n Object.assign(it, { key: null, sep: [this.sourceToken] });\n }\n else {\n const start = getFirstKeyStartProps(it.start);\n this.stack.push({\n type: 'block-map',\n offset: this.offset,\n indent: this.indent,\n items: [{ start, key: null, sep: [this.sourceToken] }]\n });\n }\n }\n else if (it.value) {\n map.items.push({ start: [], key: null, sep: [this.sourceToken] });\n }\n else if (includesToken(it.sep, 'map-value-ind')) {\n this.stack.push({\n type: 'block-map',\n offset: this.offset,\n indent: this.indent,\n items: [{ start, key: null, sep: [this.sourceToken] }]\n });\n }\n else if (isFlowToken(it.key) &&\n !includesToken(it.sep, 'newline')) {\n const start = getFirstKeyStartProps(it.start);\n const key = it.key;\n const sep = it.sep;\n sep.push(this.sourceToken);\n // @ts-expect-error type guard is wrong here\n delete it.key;\n // @ts-expect-error type guard is wrong here\n delete it.sep;\n this.stack.push({\n type: 'block-map',\n offset: this.offset,\n indent: this.indent,\n items: [{ start, key, sep }]\n });\n }\n else if (start.length > 0) {\n // Not actually at next item\n it.sep = it.sep.concat(start, this.sourceToken);\n }\n else {\n it.sep.push(this.sourceToken);\n }\n }\n else {\n if (!it.sep) {\n Object.assign(it, { key: null, sep: [this.sourceToken] });\n }\n else if (it.value || atNextItem) {\n map.items.push({ start, key: null, sep: [this.sourceToken] });\n }\n else if (includesToken(it.sep, 'map-value-ind')) {\n this.stack.push({\n type: 'block-map',\n offset: this.offset,\n indent: this.indent,\n items: [{ start: [], key: null, sep: [this.sourceToken] }]\n });\n }\n else {\n it.sep.push(this.sourceToken);\n }\n }\n this.onKeyLine = true;\n return;\n case 'alias':\n case 'scalar':\n case 'single-quoted-scalar':\n case 'double-quoted-scalar': {\n const fs = this.flowScalar(this.type);\n if (atNextItem || it.value) {\n map.items.push({ start, key: fs, sep: [] });\n this.onKeyLine = true;\n }\n else if (it.sep) {\n this.stack.push(fs);\n }\n else {\n Object.assign(it, { key: fs, sep: [] });\n this.onKeyLine = true;\n }\n return;\n }\n default: {\n const bv = this.startBlockValue(map);\n if (bv) {\n if (bv.type === 'block-seq') {\n if (!it.explicitKey &&\n it.sep &&\n !includesToken(it.sep, 'newline')) {\n yield* this.pop({\n type: 'error',\n offset: this.offset,\n message: 'Unexpected block-seq-ind on same line with key',\n source: this.source\n });\n return;\n }\n }\n else if (atMapIndent) {\n map.items.push({ start });\n }\n this.stack.push(bv);\n return;\n }\n }\n }\n }\n yield* this.pop();\n yield* this.step();\n }\n *blockSequence(seq) {\n const it = seq.items[seq.items.length - 1];\n switch (this.type) {\n case 'newline':\n if (it.value) {\n const end = 'end' in it.value ? it.value.end : undefined;\n const last = Array.isArray(end) ? end[end.length - 1] : undefined;\n if (last?.type === 'comment')\n end?.push(this.sourceToken);\n else\n seq.items.push({ start: [this.sourceToken] });\n }\n else\n it.start.push(this.sourceToken);\n return;\n case 'space':\n case 'comment':\n if (it.value)\n seq.items.push({ start: [this.sourceToken] });\n else {\n if (this.atIndentedComment(it.start, seq.indent)) {\n const prev = seq.items[seq.items.length - 2];\n const end = prev?.value?.end;\n if (Array.isArray(end)) {\n Array.prototype.push.apply(end, it.start);\n end.push(this.sourceToken);\n seq.items.pop();\n return;\n }\n }\n it.start.push(this.sourceToken);\n }\n return;\n case 'anchor':\n case 'tag':\n if (it.value || this.indent <= seq.indent)\n break;\n it.start.push(this.sourceToken);\n return;\n case 'seq-item-ind':\n if (this.indent !== seq.indent)\n break;\n if (it.value || includesToken(it.start, 'seq-item-ind'))\n seq.items.push({ start: [this.sourceToken] });\n else\n it.start.push(this.sourceToken);\n return;\n }\n if (this.indent > seq.indent) {\n const bv = this.startBlockValue(seq);\n if (bv) {\n this.stack.push(bv);\n return;\n }\n }\n yield* this.pop();\n yield* this.step();\n }\n *flowCollection(fc) {\n const it = fc.items[fc.items.length - 1];\n if (this.type === 'flow-error-end') {\n let top;\n do {\n yield* this.pop();\n top = this.peek(1);\n } while (top && top.type === 'flow-collection');\n }\n else if (fc.end.length === 0) {\n switch (this.type) {\n case 'comma':\n case 'explicit-key-ind':\n if (!it || it.sep)\n fc.items.push({ start: [this.sourceToken] });\n else\n it.start.push(this.sourceToken);\n return;\n case 'map-value-ind':\n if (!it || it.value)\n fc.items.push({ start: [], key: null, sep: [this.sourceToken] });\n else if (it.sep)\n it.sep.push(this.sourceToken);\n else\n Object.assign(it, { key: null, sep: [this.sourceToken] });\n return;\n case 'space':\n case 'comment':\n case 'newline':\n case 'anchor':\n case 'tag':\n if (!it || it.value)\n fc.items.push({ start: [this.sourceToken] });\n else if (it.sep)\n it.sep.push(this.sourceToken);\n else\n it.start.push(this.sourceToken);\n return;\n case 'alias':\n case 'scalar':\n case 'single-quoted-scalar':\n case 'double-quoted-scalar': {\n const fs = this.flowScalar(this.type);\n if (!it || it.value)\n fc.items.push({ start: [], key: fs, sep: [] });\n else if (it.sep)\n this.stack.push(fs);\n else\n Object.assign(it, { key: fs, sep: [] });\n return;\n }\n case 'flow-map-end':\n case 'flow-seq-end':\n fc.end.push(this.sourceToken);\n return;\n }\n const bv = this.startBlockValue(fc);\n /* istanbul ignore else should not happen */\n if (bv)\n this.stack.push(bv);\n else {\n yield* this.pop();\n yield* this.step();\n }\n }\n else {\n const parent = this.peek(2);\n if (parent.type === 'block-map' &&\n ((this.type === 'map-value-ind' && parent.indent === fc.indent) ||\n (this.type === 'newline' &&\n !parent.items[parent.items.length - 1].sep))) {\n yield* this.pop();\n yield* this.step();\n }\n else if (this.type === 'map-value-ind' &&\n parent.type !== 'flow-collection') {\n const prev = getPrevProps(parent);\n const start = getFirstKeyStartProps(prev);\n fixFlowSeqItems(fc);\n const sep = fc.end.splice(1, fc.end.length);\n sep.push(this.sourceToken);\n const map = {\n type: 'block-map',\n offset: fc.offset,\n indent: fc.indent,\n items: [{ start, key: fc, sep }]\n };\n this.onKeyLine = true;\n this.stack[this.stack.length - 1] = map;\n }\n else {\n yield* this.lineEnd(fc);\n }\n }\n }\n flowScalar(type) {\n if (this.onNewLine) {\n let nl = this.source.indexOf('\\n') + 1;\n while (nl !== 0) {\n this.onNewLine(this.offset + nl);\n nl = this.source.indexOf('\\n', nl) + 1;\n }\n }\n return {\n type,\n offset: this.offset,\n indent: this.indent,\n source: this.source\n };\n }\n startBlockValue(parent) {\n switch (this.type) {\n case 'alias':\n case 'scalar':\n case 'single-quoted-scalar':\n case 'double-quoted-scalar':\n return this.flowScalar(this.type);\n case 'block-scalar-header':\n return {\n type: 'block-scalar',\n offset: this.offset,\n indent: this.indent,\n props: [this.sourceToken],\n source: ''\n };\n case 'flow-map-start':\n case 'flow-seq-start':\n return {\n type: 'flow-collection',\n offset: this.offset,\n indent: this.indent,\n start: this.sourceToken,\n items: [],\n end: []\n };\n case 'seq-item-ind':\n return {\n type: 'block-seq',\n offset: this.offset,\n indent: this.indent,\n items: [{ start: [this.sourceToken] }]\n };\n case 'explicit-key-ind': {\n this.onKeyLine = true;\n const prev = getPrevProps(parent);\n const start = getFirstKeyStartProps(prev);\n start.push(this.sourceToken);\n return {\n type: 'block-map',\n offset: this.offset,\n indent: this.indent,\n items: [{ start, explicitKey: true }]\n };\n }\n case 'map-value-ind': {\n this.onKeyLine = true;\n const prev = getPrevProps(parent);\n const start = getFirstKeyStartProps(prev);\n return {\n type: 'block-map',\n offset: this.offset,\n indent: this.indent,\n items: [{ start, key: null, sep: [this.sourceToken] }]\n };\n }\n }\n return null;\n }\n atIndentedComment(start, indent) {\n if (this.type !== 'comment')\n return false;\n if (this.indent <= indent)\n return false;\n return start.every(st => st.type === 'newline' || st.type === 'space');\n }\n *documentEnd(docEnd) {\n if (this.type !== 'doc-mode') {\n if (docEnd.end)\n docEnd.end.push(this.sourceToken);\n else\n docEnd.end = [this.sourceToken];\n if (this.type === 'newline')\n yield* this.pop();\n }\n }\n *lineEnd(token) {\n switch (this.type) {\n case 'comma':\n case 'doc-start':\n case 'doc-end':\n case 'flow-seq-end':\n case 'flow-map-end':\n case 'map-value-ind':\n yield* this.pop();\n yield* this.step();\n break;\n case 'newline':\n this.onKeyLine = false;\n // fallthrough\n case 'space':\n case 'comment':\n default:\n // all other values are errors\n if (token.end)\n token.end.push(this.sourceToken);\n else\n token.end = [this.sourceToken];\n if (this.type === 'newline')\n yield* this.pop();\n }\n }\n}\n\nexports.Parser = Parser;\n","'use strict';\n\nvar composer = require('./compose/composer.js');\nvar Document = require('./doc/Document.js');\nvar errors = require('./errors.js');\nvar log = require('./log.js');\nvar identity = require('./nodes/identity.js');\nvar lineCounter = require('./parse/line-counter.js');\nvar parser = require('./parse/parser.js');\n\nfunction parseOptions(options) {\n const prettyErrors = options.prettyErrors !== false;\n const lineCounter$1 = options.lineCounter || (prettyErrors && new lineCounter.LineCounter()) || null;\n return { lineCounter: lineCounter$1, prettyErrors };\n}\n/**\n * Parse the input as a stream of YAML documents.\n *\n * Documents should be separated from each other by `...` or `---` marker lines.\n *\n * @returns If an empty `docs` array is returned, it will be of type\n * EmptyStream and contain additional stream information. In\n * TypeScript, you should use `'empty' in docs` as a type guard for it.\n */\nfunction parseAllDocuments(source, options = {}) {\n const { lineCounter, prettyErrors } = parseOptions(options);\n const parser$1 = new parser.Parser(lineCounter?.addNewLine);\n const composer$1 = new composer.Composer(options);\n const docs = Array.from(composer$1.compose(parser$1.parse(source)));\n if (prettyErrors && lineCounter)\n for (const doc of docs) {\n doc.errors.forEach(errors.prettifyError(source, lineCounter));\n doc.warnings.forEach(errors.prettifyError(source, lineCounter));\n }\n if (docs.length > 0)\n return docs;\n return Object.assign([], { empty: true }, composer$1.streamInfo());\n}\n/** Parse an input string into a single YAML.Document */\nfunction parseDocument(source, options = {}) {\n const { lineCounter, prettyErrors } = parseOptions(options);\n const parser$1 = new parser.Parser(lineCounter?.addNewLine);\n const composer$1 = new composer.Composer(options);\n // `doc` is always set by compose.end(true) at the very latest\n let doc = null;\n for (const _doc of composer$1.compose(parser$1.parse(source), true, source.length)) {\n if (!doc)\n doc = _doc;\n else if (doc.options.logLevel !== 'silent') {\n doc.errors.push(new errors.YAMLParseError(_doc.range.slice(0, 2), 'MULTIPLE_DOCS', 'Source contains multiple documents; please use YAML.parseAllDocuments()'));\n break;\n }\n }\n if (prettyErrors && lineCounter) {\n doc.errors.forEach(errors.prettifyError(source, lineCounter));\n doc.warnings.forEach(errors.prettifyError(source, lineCounter));\n }\n return doc;\n}\nfunction parse(src, reviver, options) {\n let _reviver = undefined;\n if (typeof reviver === 'function') {\n _reviver = reviver;\n }\n else if (options === undefined && reviver && typeof reviver === 'object') {\n options = reviver;\n }\n const doc = parseDocument(src, options);\n if (!doc)\n return null;\n doc.warnings.forEach(warning => log.warn(doc.options.logLevel, warning));\n if (doc.errors.length > 0) {\n if (doc.options.logLevel !== 'silent')\n throw doc.errors[0];\n else\n doc.errors = [];\n }\n return doc.toJS(Object.assign({ reviver: _reviver }, options));\n}\nfunction stringify(value, replacer, options) {\n let _replacer = null;\n if (typeof replacer === 'function' || Array.isArray(replacer)) {\n _replacer = replacer;\n }\n else if (options === undefined && replacer) {\n options = replacer;\n }\n if (typeof options === 'string')\n options = options.length;\n if (typeof options === 'number') {\n const indent = Math.round(options);\n options = indent < 1 ? undefined : indent > 8 ? { indent: 8 } : { indent };\n }\n if (value === undefined) {\n const { keepUndefined } = options ?? replacer ?? {};\n if (!keepUndefined)\n return undefined;\n }\n if (identity.isDocument(value) && !_replacer)\n return value.toString(options);\n return new Document.Document(value, _replacer, options).toString(options);\n}\n\nexports.parse = parse;\nexports.parseAllDocuments = parseAllDocuments;\nexports.parseDocument = parseDocument;\nexports.stringify = stringify;\n","'use strict';\n\nvar composer = require('./compose/composer.js');\nvar Document = require('./doc/Document.js');\nvar Schema = require('./schema/Schema.js');\nvar errors = require('./errors.js');\nvar Alias = require('./nodes/Alias.js');\nvar identity = require('./nodes/identity.js');\nvar Pair = require('./nodes/Pair.js');\nvar Scalar = require('./nodes/Scalar.js');\nvar YAMLMap = require('./nodes/YAMLMap.js');\nvar YAMLSeq = require('./nodes/YAMLSeq.js');\nvar cst = require('./parse/cst.js');\nvar lexer = require('./parse/lexer.js');\nvar lineCounter = require('./parse/line-counter.js');\nvar parser = require('./parse/parser.js');\nvar publicApi = require('./public-api.js');\nvar visit = require('./visit.js');\n\n\n\nexports.Composer = composer.Composer;\nexports.Document = Document.Document;\nexports.Schema = Schema.Schema;\nexports.YAMLError = errors.YAMLError;\nexports.YAMLParseError = errors.YAMLParseError;\nexports.YAMLWarning = errors.YAMLWarning;\nexports.Alias = Alias.Alias;\nexports.isAlias = identity.isAlias;\nexports.isCollection = identity.isCollection;\nexports.isDocument = identity.isDocument;\nexports.isMap = identity.isMap;\nexports.isNode = identity.isNode;\nexports.isPair = identity.isPair;\nexports.isScalar = identity.isScalar;\nexports.isSeq = identity.isSeq;\nexports.Pair = Pair.Pair;\nexports.Scalar = Scalar.Scalar;\nexports.YAMLMap = YAMLMap.YAMLMap;\nexports.YAMLSeq = YAMLSeq.YAMLSeq;\nexports.CST = cst;\nexports.Lexer = lexer.Lexer;\nexports.LineCounter = lineCounter.LineCounter;\nexports.Parser = parser.Parser;\nexports.parse = publicApi.parse;\nexports.parseAllDocuments = publicApi.parseAllDocuments;\nexports.parseDocument = publicApi.parseDocument;\nexports.stringify = publicApi.stringify;\nexports.visit = visit.visit;\nexports.visitAsync = visit.visitAsync;\n","\"use strict\";\n\nvar conversions = {};\nmodule.exports = conversions;\n\nfunction sign(x) {\n return x < 0 ? -1 : 1;\n}\n\nfunction evenRound(x) {\n // Round x to the nearest integer, choosing the even integer if it lies halfway between two.\n if ((x % 1) === 0.5 && (x & 1) === 0) { // [even number].5; round down (i.e. floor)\n return Math.floor(x);\n } else {\n return Math.round(x);\n }\n}\n\nfunction createNumberConversion(bitLength, typeOpts) {\n if (!typeOpts.unsigned) {\n --bitLength;\n }\n const lowerBound = typeOpts.unsigned ? 0 : -Math.pow(2, bitLength);\n const upperBound = Math.pow(2, bitLength) - 1;\n\n const moduloVal = typeOpts.moduloBitLength ? Math.pow(2, typeOpts.moduloBitLength) : Math.pow(2, bitLength);\n const moduloBound = typeOpts.moduloBitLength ? Math.pow(2, typeOpts.moduloBitLength - 1) : Math.pow(2, bitLength - 1);\n\n return function(V, opts) {\n if (!opts) opts = {};\n\n let x = +V;\n\n if (opts.enforceRange) {\n if (!Number.isFinite(x)) {\n throw new TypeError(\"Argument is not a finite number\");\n }\n\n x = sign(x) * Math.floor(Math.abs(x));\n if (x < lowerBound || x > upperBound) {\n throw new TypeError(\"Argument is not in byte range\");\n }\n\n return x;\n }\n\n if (!isNaN(x) && opts.clamp) {\n x = evenRound(x);\n\n if (x < lowerBound) x = lowerBound;\n if (x > upperBound) x = upperBound;\n return x;\n }\n\n if (!Number.isFinite(x) || x === 0) {\n return 0;\n }\n\n x = sign(x) * Math.floor(Math.abs(x));\n x = x % moduloVal;\n\n if (!typeOpts.unsigned && x >= moduloBound) {\n return x - moduloVal;\n } else if (typeOpts.unsigned) {\n if (x < 0) {\n x += moduloVal;\n } else if (x === -0) { // don't return negative zero\n return 0;\n }\n }\n\n return x;\n }\n}\n\nconversions[\"void\"] = function () {\n return undefined;\n};\n\nconversions[\"boolean\"] = function (val) {\n return !!val;\n};\n\nconversions[\"byte\"] = createNumberConversion(8, { unsigned: false });\nconversions[\"octet\"] = createNumberConversion(8, { unsigned: true });\n\nconversions[\"short\"] = createNumberConversion(16, { unsigned: false });\nconversions[\"unsigned short\"] = createNumberConversion(16, { unsigned: true });\n\nconversions[\"long\"] = createNumberConversion(32, { unsigned: false });\nconversions[\"unsigned long\"] = createNumberConversion(32, { unsigned: true });\n\nconversions[\"long long\"] = createNumberConversion(32, { unsigned: false, moduloBitLength: 64 });\nconversions[\"unsigned long long\"] = createNumberConversion(32, { unsigned: true, moduloBitLength: 64 });\n\nconversions[\"double\"] = function (V) {\n const x = +V;\n\n if (!Number.isFinite(x)) {\n throw new TypeError(\"Argument is not a finite floating-point value\");\n }\n\n return x;\n};\n\nconversions[\"unrestricted double\"] = function (V) {\n const x = +V;\n\n if (isNaN(x)) {\n throw new TypeError(\"Argument is NaN\");\n }\n\n return x;\n};\n\n// not quite valid, but good enough for JS\nconversions[\"float\"] = conversions[\"double\"];\nconversions[\"unrestricted float\"] = conversions[\"unrestricted double\"];\n\nconversions[\"DOMString\"] = function (V, opts) {\n if (!opts) opts = {};\n\n if (opts.treatNullAsEmptyString && V === null) {\n return \"\";\n }\n\n return String(V);\n};\n\nconversions[\"ByteString\"] = function (V, opts) {\n const x = String(V);\n let c = undefined;\n for (let i = 0; (c = x.codePointAt(i)) !== undefined; ++i) {\n if (c > 255) {\n throw new TypeError(\"Argument is not a valid bytestring\");\n }\n }\n\n return x;\n};\n\nconversions[\"USVString\"] = function (V) {\n const S = String(V);\n const n = S.length;\n const U = [];\n for (let i = 0; i < n; ++i) {\n const c = S.charCodeAt(i);\n if (c < 0xD800 || c > 0xDFFF) {\n U.push(String.fromCodePoint(c));\n } else if (0xDC00 <= c && c <= 0xDFFF) {\n U.push(String.fromCodePoint(0xFFFD));\n } else {\n if (i === n - 1) {\n U.push(String.fromCodePoint(0xFFFD));\n } else {\n const d = S.charCodeAt(i + 1);\n if (0xDC00 <= d && d <= 0xDFFF) {\n const a = c & 0x3FF;\n const b = d & 0x3FF;\n U.push(String.fromCodePoint((2 << 15) + (2 << 9) * a + b));\n ++i;\n } else {\n U.push(String.fromCodePoint(0xFFFD));\n }\n }\n }\n }\n\n return U.join('');\n};\n\nconversions[\"Date\"] = function (V, opts) {\n if (!(V instanceof Date)) {\n throw new TypeError(\"Argument is not a Date object\");\n }\n if (isNaN(V)) {\n return undefined;\n }\n\n return V;\n};\n\nconversions[\"RegExp\"] = function (V, opts) {\n if (!(V instanceof RegExp)) {\n V = new RegExp(V);\n }\n\n return V;\n};\n","\"use strict\";\n\nmodule.exports.mixin = function mixin(target, source) {\n const keys = Object.getOwnPropertyNames(source);\n for (let i = 0; i < keys.length; ++i) {\n Object.defineProperty(target, keys[i], Object.getOwnPropertyDescriptor(source, keys[i]));\n }\n};\n\nmodule.exports.wrapperSymbol = Symbol(\"wrapper\");\nmodule.exports.implSymbol = Symbol(\"impl\");\n\nmodule.exports.wrapperForImpl = function (impl) {\n return impl[module.exports.wrapperSymbol];\n};\n\nmodule.exports.implForWrapper = function (wrapper) {\n return wrapper[module.exports.implSymbol];\n};\n\n","[[[0,44],\"disallowed_STD3_valid\"],[[45,46],\"valid\"],[[47,47],\"disallowed_STD3_valid\"],[[48,57],\"valid\"],[[58,64],\"disallowed_STD3_valid\"],[[65,65],\"mapped\",[97]],[[66,66],\"mapped\",[98]],[[67,67],\"mapped\",[99]],[[68,68],\"mapped\",[100]],[[69,69],\"mapped\",[101]],[[70,70],\"mapped\",[102]],[[71,71],\"mapped\",[103]],[[72,72],\"mapped\",[104]],[[73,73],\"mapped\",[105]],[[74,74],\"mapped\",[106]],[[75,75],\"mapped\",[107]],[[76,76],\"mapped\",[108]],[[77,77],\"mapped\",[109]],[[78,78],\"mapped\",[110]],[[79,79],\"mapped\",[111]],[[80,80],\"mapped\",[112]],[[81,81],\"mapped\",[113]],[[82,82],\"mapped\",[114]],[[83,83],\"mapped\",[115]],[[84,84],\"mapped\",[116]],[[85,85],\"mapped\",[117]],[[86,86],\"mapped\",[118]],[[87,87],\"mapped\",[119]],[[88,88],\"mapped\",[120]],[[89,89],\"mapped\",[121]],[[90,90],\"mapped\",[122]],[[91,96],\"disallowed_STD3_valid\"],[[97,122],\"valid\"],[[123,127],\"disallowed_STD3_valid\"],[[128,159],\"disallowed\"],[[160,160],\"disallowed_STD3_mapped\",[32]],[[161,167],\"valid\",[],\"NV8\"],[[168,168],\"disallowed_STD3_mapped\",[32,776]],[[169,169],\"valid\",[],\"NV8\"],[[170,170],\"mapped\",[97]],[[171,172],\"valid\",[],\"NV8\"],[[173,173],\"ignored\"],[[174,174],\"valid\",[],\"NV8\"],[[175,175],\"disallowed_STD3_mapped\",[32,772]],[[176,177],\"valid\",[],\"NV8\"],[[178,178],\"mapped\",[50]],[[179,179],\"mapped\",[51]],[[180,180],\"disallowed_STD3_mapped\",[32,769]],[[181,181],\"mapped\",[956]],[[182,182],\"valid\",[],\"NV8\"],[[183,183],\"valid\"],[[184,184],\"disallowed_STD3_mapped\",[32,807]],[[185,185],\"mapped\",[49]],[[186,186],\"mapped\",[111]],[[187,187],\"valid\",[],\"NV8\"],[[188,188],\"mapped\",[49,8260,52]],[[189,189],\"mapped\",[49,8260,50]],[[190,190],\"mapped\",[51,8260,52]],[[191,191],\"valid\",[],\"NV8\"],[[192,192],\"mapped\",[224]],[[193,193],\"mapped\",[225]],[[194,194],\"mapped\",[226]],[[195,195],\"mapped\",[227]],[[196,196],\"mapped\",[228]],[[197,197],\"mapped\",[229]],[[198,198],\"mapped\",[230]],[[199,199],\"mapped\",[231]],[[200,200],\"mapped\",[232]],[[201,201],\"mapped\",[233]],[[202,202],\"mapped\",[234]],[[203,203],\"mapped\",[235]],[[204,204],\"mapped\",[236]],[[205,205],\"mapped\",[237]],[[206,206],\"mapped\",[238]],[[207,207],\"mapped\",[239]],[[208,208],\"mapped\",[240]],[[209,209],\"mapped\",[241]],[[210,210],\"mapped\",[242]],[[211,211],\"mapped\",[243]],[[212,212],\"mapped\",[244]],[[213,213],\"mapped\",[245]],[[214,214],\"mapped\",[246]],[[215,215],\"valid\",[],\"NV8\"],[[216,216],\"mapped\",[248]],[[217,217],\"mapped\",[249]],[[218,218],\"mapped\",[250]],[[219,219],\"mapped\",[251]],[[220,220],\"mapped\",[252]],[[221,221],\"mapped\",[253]],[[222,222],\"mapped\",[254]],[[223,223],\"deviation\",[115,115]],[[224,246],\"valid\"],[[247,247],\"valid\",[],\"NV8\"],[[248,255],\"valid\"],[[256,256],\"mapped\",[257]],[[257,257],\"valid\"],[[258,258],\"mapped\",[259]],[[259,259],\"valid\"],[[260,260],\"mapped\",[261]],[[261,261],\"valid\"],[[262,262],\"mapped\",[263]],[[263,263],\"valid\"],[[264,264],\"mapped\",[265]],[[265,265],\"valid\"],[[266,266],\"mapped\",[267]],[[267,267],\"valid\"],[[268,268],\"mapped\",[269]],[[269,269],\"valid\"],[[270,270],\"mapped\",[271]],[[271,271],\"valid\"],[[272,272],\"mapped\",[273]],[[273,273],\"valid\"],[[274,274],\"mapped\",[275]],[[275,275],\"valid\"],[[276,276],\"mapped\",[277]],[[277,277],\"valid\"],[[278,278],\"mapped\",[279]],[[279,279],\"valid\"],[[280,280],\"mapped\",[281]],[[281,281],\"valid\"],[[282,282],\"mapped\",[283]],[[283,283],\"valid\"],[[284,284],\"mapped\",[285]],[[285,285],\"valid\"],[[286,286],\"mapped\",[287]],[[287,287],\"valid\"],[[288,288],\"mapped\",[289]],[[289,289],\"valid\"],[[290,290],\"mapped\",[291]],[[291,291],\"valid\"],[[292,292],\"mapped\",[293]],[[293,293],\"valid\"],[[294,294],\"mapped\",[295]],[[295,295],\"valid\"],[[296,296],\"mapped\",[297]],[[297,297],\"valid\"],[[298,298],\"mapped\",[299]],[[299,299],\"valid\"],[[300,300],\"mapped\",[301]],[[301,301],\"valid\"],[[302,302],\"mapped\",[303]],[[303,303],\"valid\"],[[304,304],\"mapped\",[105,775]],[[305,305],\"valid\"],[[306,307],\"mapped\",[105,106]],[[308,308],\"mapped\",[309]],[[309,309],\"valid\"],[[310,310],\"mapped\",[311]],[[311,312],\"valid\"],[[313,313],\"mapped\",[314]],[[314,314],\"valid\"],[[315,315],\"mapped\",[316]],[[316,316],\"valid\"],[[317,317],\"mapped\",[318]],[[318,318],\"valid\"],[[319,320],\"mapped\",[108,183]],[[321,321],\"mapped\",[322]],[[322,322],\"valid\"],[[323,323],\"mapped\",[324]],[[324,324],\"valid\"],[[325,325],\"mapped\",[326]],[[326,326],\"valid\"],[[327,327],\"mapped\",[328]],[[328,328],\"valid\"],[[329,329],\"mapped\",[700,110]],[[330,330],\"mapped\",[331]],[[331,331],\"valid\"],[[332,332],\"mapped\",[333]],[[333,333],\"valid\"],[[334,334],\"mapped\",[335]],[[335,335],\"valid\"],[[336,336],\"mapped\",[337]],[[337,337],\"valid\"],[[338,338],\"mapped\",[339]],[[339,339],\"valid\"],[[340,340],\"mapped\",[341]],[[341,341],\"valid\"],[[342,342],\"mapped\",[343]],[[343,343],\"valid\"],[[344,344],\"mapped\",[345]],[[345,345],\"valid\"],[[346,346],\"mapped\",[347]],[[347,347],\"valid\"],[[348,348],\"mapped\",[349]],[[349,349],\"valid\"],[[350,350],\"mapped\",[351]],[[351,351],\"valid\"],[[352,352],\"mapped\",[353]],[[353,353],\"valid\"],[[354,354],\"mapped\",[355]],[[355,355],\"valid\"],[[356,356],\"mapped\",[357]],[[357,357],\"valid\"],[[358,358],\"mapped\",[359]],[[359,359],\"valid\"],[[360,360],\"mapped\",[361]],[[361,361],\"valid\"],[[362,362],\"mapped\",[363]],[[363,363],\"valid\"],[[364,364],\"mapped\",[365]],[[365,365],\"valid\"],[[366,366],\"mapped\",[367]],[[367,367],\"valid\"],[[368,368],\"mapped\",[369]],[[369,369],\"valid\"],[[370,370],\"mapped\",[371]],[[371,371],\"valid\"],[[372,372],\"mapped\",[373]],[[373,373],\"valid\"],[[374,374],\"mapped\",[375]],[[375,375],\"valid\"],[[376,376],\"mapped\",[255]],[[377,377],\"mapped\",[378]],[[378,378],\"valid\"],[[379,379],\"mapped\",[380]],[[380,380],\"valid\"],[[381,381],\"mapped\",[382]],[[382,382],\"valid\"],[[383,383],\"mapped\",[115]],[[384,384],\"valid\"],[[385,385],\"mapped\",[595]],[[386,386],\"mapped\",[387]],[[387,387],\"valid\"],[[388,388],\"mapped\",[389]],[[389,389],\"valid\"],[[390,390],\"mapped\",[596]],[[391,391],\"mapped\",[392]],[[392,392],\"valid\"],[[393,393],\"mapped\",[598]],[[394,394],\"mapped\",[599]],[[395,395],\"mapped\",[396]],[[396,397],\"valid\"],[[398,398],\"mapped\",[477]],[[399,399],\"mapped\",[601]],[[400,400],\"mapped\",[603]],[[401,401],\"mapped\",[402]],[[402,402],\"valid\"],[[403,403],\"mapped\",[608]],[[404,404],\"mapped\",[611]],[[405,405],\"valid\"],[[406,406],\"mapped\",[617]],[[407,407],\"mapped\",[616]],[[408,408],\"mapped\",[409]],[[409,411],\"valid\"],[[412,412],\"mapped\",[623]],[[413,413],\"mapped\",[626]],[[414,414],\"valid\"],[[415,415],\"mapped\",[629]],[[416,416],\"mapped\",[417]],[[417,417],\"valid\"],[[418,418],\"mapped\",[419]],[[419,419],\"valid\"],[[420,420],\"mapped\",[421]],[[421,421],\"valid\"],[[422,422],\"mapped\",[640]],[[423,423],\"mapped\",[424]],[[424,424],\"valid\"],[[425,425],\"mapped\",[643]],[[426,427],\"valid\"],[[428,428],\"mapped\",[429]],[[429,429],\"valid\"],[[430,430],\"mapped\",[648]],[[431,431],\"mapped\",[432]],[[432,432],\"valid\"],[[433,433],\"mapped\",[650]],[[434,434],\"mapped\",[651]],[[435,435],\"mapped\",[436]],[[436,436],\"valid\"],[[437,437],\"mapped\",[438]],[[438,438],\"valid\"],[[439,439],\"mapped\",[658]],[[440,440],\"mapped\",[441]],[[441,443],\"valid\"],[[444,444],\"mapped\",[445]],[[445,451],\"valid\"],[[452,454],\"mapped\",[100,382]],[[455,457],\"mapped\",[108,106]],[[458,460],\"mapped\",[110,106]],[[461,461],\"mapped\",[462]],[[462,462],\"valid\"],[[463,463],\"mapped\",[464]],[[464,464],\"valid\"],[[465,465],\"mapped\",[466]],[[466,466],\"valid\"],[[467,467],\"mapped\",[468]],[[468,468],\"valid\"],[[469,469],\"mapped\",[470]],[[470,470],\"valid\"],[[471,471],\"mapped\",[472]],[[472,472],\"valid\"],[[473,473],\"mapped\",[474]],[[474,474],\"valid\"],[[475,475],\"mapped\",[476]],[[476,477],\"valid\"],[[478,478],\"mapped\",[479]],[[479,479],\"valid\"],[[480,480],\"mapped\",[481]],[[481,481],\"valid\"],[[482,482],\"mapped\",[483]],[[483,483],\"valid\"],[[484,484],\"mapped\",[485]],[[485,485],\"valid\"],[[486,486],\"mapped\",[487]],[[487,487],\"valid\"],[[488,488],\"mapped\",[489]],[[489,489],\"valid\"],[[490,490],\"mapped\",[491]],[[491,491],\"valid\"],[[492,492],\"mapped\",[493]],[[493,493],\"valid\"],[[494,494],\"mapped\",[495]],[[495,496],\"valid\"],[[497,499],\"mapped\",[100,122]],[[500,500],\"mapped\",[501]],[[501,501],\"valid\"],[[502,502],\"mapped\",[405]],[[503,503],\"mapped\",[447]],[[504,504],\"mapped\",[505]],[[505,505],\"valid\"],[[506,506],\"mapped\",[507]],[[507,507],\"valid\"],[[508,508],\"mapped\",[509]],[[509,509],\"valid\"],[[510,510],\"mapped\",[511]],[[511,511],\"valid\"],[[512,512],\"mapped\",[513]],[[513,513],\"valid\"],[[514,514],\"mapped\",[515]],[[515,515],\"valid\"],[[516,516],\"mapped\",[517]],[[517,517],\"valid\"],[[518,518],\"mapped\",[519]],[[519,519],\"valid\"],[[520,520],\"mapped\",[521]],[[521,521],\"valid\"],[[522,522],\"mapped\",[523]],[[523,523],\"valid\"],[[524,524],\"mapped\",[525]],[[525,525],\"valid\"],[[526,526],\"mapped\",[527]],[[527,527],\"valid\"],[[528,528],\"mapped\",[529]],[[529,529],\"valid\"],[[530,530],\"mapped\",[531]],[[531,531],\"valid\"],[[532,532],\"mapped\",[533]],[[533,533],\"valid\"],[[534,534],\"mapped\",[535]],[[535,535],\"valid\"],[[536,536],\"mapped\",[537]],[[537,537],\"valid\"],[[538,538],\"mapped\",[539]],[[539,539],\"valid\"],[[540,540],\"mapped\",[541]],[[541,541],\"valid\"],[[542,542],\"mapped\",[543]],[[543,543],\"valid\"],[[544,544],\"mapped\",[414]],[[545,545],\"valid\"],[[546,546],\"mapped\",[547]],[[547,547],\"valid\"],[[548,548],\"mapped\",[549]],[[549,549],\"valid\"],[[550,550],\"mapped\",[551]],[[551,551],\"valid\"],[[552,552],\"mapped\",[553]],[[553,553],\"valid\"],[[554,554],\"mapped\",[555]],[[555,555],\"valid\"],[[556,556],\"mapped\",[557]],[[557,557],\"valid\"],[[558,558],\"mapped\",[559]],[[559,559],\"valid\"],[[560,560],\"mapped\",[561]],[[561,561],\"valid\"],[[562,562],\"mapped\",[563]],[[563,563],\"valid\"],[[564,566],\"valid\"],[[567,569],\"valid\"],[[570,570],\"mapped\",[11365]],[[571,571],\"mapped\",[572]],[[572,572],\"valid\"],[[573,573],\"mapped\",[410]],[[574,574],\"mapped\",[11366]],[[575,576],\"valid\"],[[577,577],\"mapped\",[578]],[[578,578],\"valid\"],[[579,579],\"mapped\",[384]],[[580,580],\"mapped\",[649]],[[581,581],\"mapped\",[652]],[[582,582],\"mapped\",[583]],[[583,583],\"valid\"],[[584,584],\"mapped\",[585]],[[585,585],\"valid\"],[[586,586],\"mapped\",[587]],[[587,587],\"valid\"],[[588,588],\"mapped\",[589]],[[589,589],\"valid\"],[[590,590],\"mapped\",[591]],[[591,591],\"valid\"],[[592,680],\"valid\"],[[681,685],\"valid\"],[[686,687],\"valid\"],[[688,688],\"mapped\",[104]],[[689,689],\"mapped\",[614]],[[690,690],\"mapped\",[106]],[[691,691],\"mapped\",[114]],[[692,692],\"mapped\",[633]],[[693,693],\"mapped\",[635]],[[694,694],\"mapped\",[641]],[[695,695],\"mapped\",[119]],[[696,696],\"mapped\",[121]],[[697,705],\"valid\"],[[706,709],\"valid\",[],\"NV8\"],[[710,721],\"valid\"],[[722,727],\"valid\",[],\"NV8\"],[[728,728],\"disallowed_STD3_mapped\",[32,774]],[[729,729],\"disallowed_STD3_mapped\",[32,775]],[[730,730],\"disallowed_STD3_mapped\",[32,778]],[[731,731],\"disallowed_STD3_mapped\",[32,808]],[[732,732],\"disallowed_STD3_mapped\",[32,771]],[[733,733],\"disallowed_STD3_mapped\",[32,779]],[[734,734],\"valid\",[],\"NV8\"],[[735,735],\"valid\",[],\"NV8\"],[[736,736],\"mapped\",[611]],[[737,737],\"mapped\",[108]],[[738,738],\"mapped\",[115]],[[739,739],\"mapped\",[120]],[[740,740],\"mapped\",[661]],[[741,745],\"valid\",[],\"NV8\"],[[746,747],\"valid\",[],\"NV8\"],[[748,748],\"valid\"],[[749,749],\"valid\",[],\"NV8\"],[[750,750],\"valid\"],[[751,767],\"valid\",[],\"NV8\"],[[768,831],\"valid\"],[[832,832],\"mapped\",[768]],[[833,833],\"mapped\",[769]],[[834,834],\"valid\"],[[835,835],\"mapped\",[787]],[[836,836],\"mapped\",[776,769]],[[837,837],\"mapped\",[953]],[[838,846],\"valid\"],[[847,847],\"ignored\"],[[848,855],\"valid\"],[[856,860],\"valid\"],[[861,863],\"valid\"],[[864,865],\"valid\"],[[866,866],\"valid\"],[[867,879],\"valid\"],[[880,880],\"mapped\",[881]],[[881,881],\"valid\"],[[882,882],\"mapped\",[883]],[[883,883],\"valid\"],[[884,884],\"mapped\",[697]],[[885,885],\"valid\"],[[886,886],\"mapped\",[887]],[[887,887],\"valid\"],[[888,889],\"disallowed\"],[[890,890],\"disallowed_STD3_mapped\",[32,953]],[[891,893],\"valid\"],[[894,894],\"disallowed_STD3_mapped\",[59]],[[895,895],\"mapped\",[1011]],[[896,899],\"disallowed\"],[[900,900],\"disallowed_STD3_mapped\",[32,769]],[[901,901],\"disallowed_STD3_mapped\",[32,776,769]],[[902,902],\"mapped\",[940]],[[903,903],\"mapped\",[183]],[[904,904],\"mapped\",[941]],[[905,905],\"mapped\",[942]],[[906,906],\"mapped\",[943]],[[907,907],\"disallowed\"],[[908,908],\"mapped\",[972]],[[909,909],\"disallowed\"],[[910,910],\"mapped\",[973]],[[911,911],\"mapped\",[974]],[[912,912],\"valid\"],[[913,913],\"mapped\",[945]],[[914,914],\"mapped\",[946]],[[915,915],\"mapped\",[947]],[[916,916],\"mapped\",[948]],[[917,917],\"mapped\",[949]],[[918,918],\"mapped\",[950]],[[919,919],\"mapped\",[951]],[[920,920],\"mapped\",[952]],[[921,921],\"mapped\",[953]],[[922,922],\"mapped\",[954]],[[923,923],\"mapped\",[955]],[[924,924],\"mapped\",[956]],[[925,925],\"mapped\",[957]],[[926,926],\"mapped\",[958]],[[927,927],\"mapped\",[959]],[[928,928],\"mapped\",[960]],[[929,929],\"mapped\",[961]],[[930,930],\"disallowed\"],[[931,931],\"mapped\",[963]],[[932,932],\"mapped\",[964]],[[933,933],\"mapped\",[965]],[[934,934],\"mapped\",[966]],[[935,935],\"mapped\",[967]],[[936,936],\"mapped\",[968]],[[937,937],\"mapped\",[969]],[[938,938],\"mapped\",[970]],[[939,939],\"mapped\",[971]],[[940,961],\"valid\"],[[962,962],\"deviation\",[963]],[[963,974],\"valid\"],[[975,975],\"mapped\",[983]],[[976,976],\"mapped\",[946]],[[977,977],\"mapped\",[952]],[[978,978],\"mapped\",[965]],[[979,979],\"mapped\",[973]],[[980,980],\"mapped\",[971]],[[981,981],\"mapped\",[966]],[[982,982],\"mapped\",[960]],[[983,983],\"valid\"],[[984,984],\"mapped\",[985]],[[985,985],\"valid\"],[[986,986],\"mapped\",[987]],[[987,987],\"valid\"],[[988,988],\"mapped\",[989]],[[989,989],\"valid\"],[[990,990],\"mapped\",[991]],[[991,991],\"valid\"],[[992,992],\"mapped\",[993]],[[993,993],\"valid\"],[[994,994],\"mapped\",[995]],[[995,995],\"valid\"],[[996,996],\"mapped\",[997]],[[997,997],\"valid\"],[[998,998],\"mapped\",[999]],[[999,999],\"valid\"],[[1000,1000],\"mapped\",[1001]],[[1001,1001],\"valid\"],[[1002,1002],\"mapped\",[1003]],[[1003,1003],\"valid\"],[[1004,1004],\"mapped\",[1005]],[[1005,1005],\"valid\"],[[1006,1006],\"mapped\",[1007]],[[1007,1007],\"valid\"],[[1008,1008],\"mapped\",[954]],[[1009,1009],\"mapped\",[961]],[[1010,1010],\"mapped\",[963]],[[1011,1011],\"valid\"],[[1012,1012],\"mapped\",[952]],[[1013,1013],\"mapped\",[949]],[[1014,1014],\"valid\",[],\"NV8\"],[[1015,1015],\"mapped\",[1016]],[[1016,1016],\"valid\"],[[1017,1017],\"mapped\",[963]],[[1018,1018],\"mapped\",[1019]],[[1019,1019],\"valid\"],[[1020,1020],\"valid\"],[[1021,1021],\"mapped\",[891]],[[1022,1022],\"mapped\",[892]],[[1023,1023],\"mapped\",[893]],[[1024,1024],\"mapped\",[1104]],[[1025,1025],\"mapped\",[1105]],[[1026,1026],\"mapped\",[1106]],[[1027,1027],\"mapped\",[1107]],[[1028,1028],\"mapped\",[1108]],[[1029,1029],\"mapped\",[1109]],[[1030,1030],\"mapped\",[1110]],[[1031,1031],\"mapped\",[1111]],[[1032,1032],\"mapped\",[1112]],[[1033,1033],\"mapped\",[1113]],[[1034,1034],\"mapped\",[1114]],[[1035,1035],\"mapped\",[1115]],[[1036,1036],\"mapped\",[1116]],[[1037,1037],\"mapped\",[1117]],[[1038,1038],\"mapped\",[1118]],[[1039,1039],\"mapped\",[1119]],[[1040,1040],\"mapped\",[1072]],[[1041,1041],\"mapped\",[1073]],[[1042,1042],\"mapped\",[1074]],[[1043,1043],\"mapped\",[1075]],[[1044,1044],\"mapped\",[1076]],[[1045,1045],\"mapped\",[1077]],[[1046,1046],\"mapped\",[1078]],[[1047,1047],\"mapped\",[1079]],[[1048,1048],\"mapped\",[1080]],[[1049,1049],\"mapped\",[1081]],[[1050,1050],\"mapped\",[1082]],[[1051,1051],\"mapped\",[1083]],[[1052,1052],\"mapped\",[1084]],[[1053,1053],\"mapped\",[1085]],[[1054,1054],\"mapped\",[1086]],[[1055,1055],\"mapped\",[1087]],[[1056,1056],\"mapped\",[1088]],[[1057,1057],\"mapped\",[1089]],[[1058,1058],\"mapped\",[1090]],[[1059,1059],\"mapped\",[1091]],[[1060,1060],\"mapped\",[1092]],[[1061,1061],\"mapped\",[1093]],[[1062,1062],\"mapped\",[1094]],[[1063,1063],\"mapped\",[1095]],[[1064,1064],\"mapped\",[1096]],[[1065,1065],\"mapped\",[1097]],[[1066,1066],\"mapped\",[1098]],[[1067,1067],\"mapped\",[1099]],[[1068,1068],\"mapped\",[1100]],[[1069,1069],\"mapped\",[1101]],[[1070,1070],\"mapped\",[1102]],[[1071,1071],\"mapped\",[1103]],[[1072,1103],\"valid\"],[[1104,1104],\"valid\"],[[1105,1116],\"valid\"],[[1117,1117],\"valid\"],[[1118,1119],\"valid\"],[[1120,1120],\"mapped\",[1121]],[[1121,1121],\"valid\"],[[1122,1122],\"mapped\",[1123]],[[1123,1123],\"valid\"],[[1124,1124],\"mapped\",[1125]],[[1125,1125],\"valid\"],[[1126,1126],\"mapped\",[1127]],[[1127,1127],\"valid\"],[[1128,1128],\"mapped\",[1129]],[[1129,1129],\"valid\"],[[1130,1130],\"mapped\",[1131]],[[1131,1131],\"valid\"],[[1132,1132],\"mapped\",[1133]],[[1133,1133],\"valid\"],[[1134,1134],\"mapped\",[1135]],[[1135,1135],\"valid\"],[[1136,1136],\"mapped\",[1137]],[[1137,1137],\"valid\"],[[1138,1138],\"mapped\",[1139]],[[1139,1139],\"valid\"],[[1140,1140],\"mapped\",[1141]],[[1141,1141],\"valid\"],[[1142,1142],\"mapped\",[1143]],[[1143,1143],\"valid\"],[[1144,1144],\"mapped\",[1145]],[[1145,1145],\"valid\"],[[1146,1146],\"mapped\",[1147]],[[1147,1147],\"valid\"],[[1148,1148],\"mapped\",[1149]],[[1149,1149],\"valid\"],[[1150,1150],\"mapped\",[1151]],[[1151,1151],\"valid\"],[[1152,1152],\"mapped\",[1153]],[[1153,1153],\"valid\"],[[1154,1154],\"valid\",[],\"NV8\"],[[1155,1158],\"valid\"],[[1159,1159],\"valid\"],[[1160,1161],\"valid\",[],\"NV8\"],[[1162,1162],\"mapped\",[1163]],[[1163,1163],\"valid\"],[[1164,1164],\"mapped\",[1165]],[[1165,1165],\"valid\"],[[1166,1166],\"mapped\",[1167]],[[1167,1167],\"valid\"],[[1168,1168],\"mapped\",[1169]],[[1169,1169],\"valid\"],[[1170,1170],\"mapped\",[1171]],[[1171,1171],\"valid\"],[[1172,1172],\"mapped\",[1173]],[[1173,1173],\"valid\"],[[1174,1174],\"mapped\",[1175]],[[1175,1175],\"valid\"],[[1176,1176],\"mapped\",[1177]],[[1177,1177],\"valid\"],[[1178,1178],\"mapped\",[1179]],[[1179,1179],\"valid\"],[[1180,1180],\"mapped\",[1181]],[[1181,1181],\"valid\"],[[1182,1182],\"mapped\",[1183]],[[1183,1183],\"valid\"],[[1184,1184],\"mapped\",[1185]],[[1185,1185],\"valid\"],[[1186,1186],\"mapped\",[1187]],[[1187,1187],\"valid\"],[[1188,1188],\"mapped\",[1189]],[[1189,1189],\"valid\"],[[1190,1190],\"mapped\",[1191]],[[1191,1191],\"valid\"],[[1192,1192],\"mapped\",[1193]],[[1193,1193],\"valid\"],[[1194,1194],\"mapped\",[1195]],[[1195,1195],\"valid\"],[[1196,1196],\"mapped\",[1197]],[[1197,1197],\"valid\"],[[1198,1198],\"mapped\",[1199]],[[1199,1199],\"valid\"],[[1200,1200],\"mapped\",[1201]],[[1201,1201],\"valid\"],[[1202,1202],\"mapped\",[1203]],[[1203,1203],\"valid\"],[[1204,1204],\"mapped\",[1205]],[[1205,1205],\"valid\"],[[1206,1206],\"mapped\",[1207]],[[1207,1207],\"valid\"],[[1208,1208],\"mapped\",[1209]],[[1209,1209],\"valid\"],[[1210,1210],\"mapped\",[1211]],[[1211,1211],\"valid\"],[[1212,1212],\"mapped\",[1213]],[[1213,1213],\"valid\"],[[1214,1214],\"mapped\",[1215]],[[1215,1215],\"valid\"],[[1216,1216],\"disallowed\"],[[1217,1217],\"mapped\",[1218]],[[1218,1218],\"valid\"],[[1219,1219],\"mapped\",[1220]],[[1220,1220],\"valid\"],[[1221,1221],\"mapped\",[1222]],[[1222,1222],\"valid\"],[[1223,1223],\"mapped\",[1224]],[[1224,1224],\"valid\"],[[1225,1225],\"mapped\",[1226]],[[1226,1226],\"valid\"],[[1227,1227],\"mapped\",[1228]],[[1228,1228],\"valid\"],[[1229,1229],\"mapped\",[1230]],[[1230,1230],\"valid\"],[[1231,1231],\"valid\"],[[1232,1232],\"mapped\",[1233]],[[1233,1233],\"valid\"],[[1234,1234],\"mapped\",[1235]],[[1235,1235],\"valid\"],[[1236,1236],\"mapped\",[1237]],[[1237,1237],\"valid\"],[[1238,1238],\"mapped\",[1239]],[[1239,1239],\"valid\"],[[1240,1240],\"mapped\",[1241]],[[1241,1241],\"valid\"],[[1242,1242],\"mapped\",[1243]],[[1243,1243],\"valid\"],[[1244,1244],\"mapped\",[1245]],[[1245,1245],\"valid\"],[[1246,1246],\"mapped\",[1247]],[[1247,1247],\"valid\"],[[1248,1248],\"mapped\",[1249]],[[1249,1249],\"valid\"],[[1250,1250],\"mapped\",[1251]],[[1251,1251],\"valid\"],[[1252,1252],\"mapped\",[1253]],[[1253,1253],\"valid\"],[[1254,1254],\"mapped\",[1255]],[[1255,1255],\"valid\"],[[1256,1256],\"mapped\",[1257]],[[1257,1257],\"valid\"],[[1258,1258],\"mapped\",[1259]],[[1259,1259],\"valid\"],[[1260,1260],\"mapped\",[1261]],[[1261,1261],\"valid\"],[[1262,1262],\"mapped\",[1263]],[[1263,1263],\"valid\"],[[1264,1264],\"mapped\",[1265]],[[1265,1265],\"valid\"],[[1266,1266],\"mapped\",[1267]],[[1267,1267],\"valid\"],[[1268,1268],\"mapped\",[1269]],[[1269,1269],\"valid\"],[[1270,1270],\"mapped\",[1271]],[[1271,1271],\"valid\"],[[1272,1272],\"mapped\",[1273]],[[1273,1273],\"valid\"],[[1274,1274],\"mapped\",[1275]],[[1275,1275],\"valid\"],[[1276,1276],\"mapped\",[1277]],[[1277,1277],\"valid\"],[[1278,1278],\"mapped\",[1279]],[[1279,1279],\"valid\"],[[1280,1280],\"mapped\",[1281]],[[1281,1281],\"valid\"],[[1282,1282],\"mapped\",[1283]],[[1283,1283],\"valid\"],[[1284,1284],\"mapped\",[1285]],[[1285,1285],\"valid\"],[[1286,1286],\"mapped\",[1287]],[[1287,1287],\"valid\"],[[1288,1288],\"mapped\",[1289]],[[1289,1289],\"valid\"],[[1290,1290],\"mapped\",[1291]],[[1291,1291],\"valid\"],[[1292,1292],\"mapped\",[1293]],[[1293,1293],\"valid\"],[[1294,1294],\"mapped\",[1295]],[[1295,1295],\"valid\"],[[1296,1296],\"mapped\",[1297]],[[1297,1297],\"valid\"],[[1298,1298],\"mapped\",[1299]],[[1299,1299],\"valid\"],[[1300,1300],\"mapped\",[1301]],[[1301,1301],\"valid\"],[[1302,1302],\"mapped\",[1303]],[[1303,1303],\"valid\"],[[1304,1304],\"mapped\",[1305]],[[1305,1305],\"valid\"],[[1306,1306],\"mapped\",[1307]],[[1307,1307],\"valid\"],[[1308,1308],\"mapped\",[1309]],[[1309,1309],\"valid\"],[[1310,1310],\"mapped\",[1311]],[[1311,1311],\"valid\"],[[1312,1312],\"mapped\",[1313]],[[1313,1313],\"valid\"],[[1314,1314],\"mapped\",[1315]],[[1315,1315],\"valid\"],[[1316,1316],\"mapped\",[1317]],[[1317,1317],\"valid\"],[[1318,1318],\"mapped\",[1319]],[[1319,1319],\"valid\"],[[1320,1320],\"mapped\",[1321]],[[1321,1321],\"valid\"],[[1322,1322],\"mapped\",[1323]],[[1323,1323],\"valid\"],[[1324,1324],\"mapped\",[1325]],[[1325,1325],\"valid\"],[[1326,1326],\"mapped\",[1327]],[[1327,1327],\"valid\"],[[1328,1328],\"disallowed\"],[[1329,1329],\"mapped\",[1377]],[[1330,1330],\"mapped\",[1378]],[[1331,1331],\"mapped\",[1379]],[[1332,1332],\"mapped\",[1380]],[[1333,1333],\"mapped\",[1381]],[[1334,1334],\"mapped\",[1382]],[[1335,1335],\"mapped\",[1383]],[[1336,1336],\"mapped\",[1384]],[[1337,1337],\"mapped\",[1385]],[[1338,1338],\"mapped\",[1386]],[[1339,1339],\"mapped\",[1387]],[[1340,1340],\"mapped\",[1388]],[[1341,1341],\"mapped\",[1389]],[[1342,1342],\"mapped\",[1390]],[[1343,1343],\"mapped\",[1391]],[[1344,1344],\"mapped\",[1392]],[[1345,1345],\"mapped\",[1393]],[[1346,1346],\"mapped\",[1394]],[[1347,1347],\"mapped\",[1395]],[[1348,1348],\"mapped\",[1396]],[[1349,1349],\"mapped\",[1397]],[[1350,1350],\"mapped\",[1398]],[[1351,1351],\"mapped\",[1399]],[[1352,1352],\"mapped\",[1400]],[[1353,1353],\"mapped\",[1401]],[[1354,1354],\"mapped\",[1402]],[[1355,1355],\"mapped\",[1403]],[[1356,1356],\"mapped\",[1404]],[[1357,1357],\"mapped\",[1405]],[[1358,1358],\"mapped\",[1406]],[[1359,1359],\"mapped\",[1407]],[[1360,1360],\"mapped\",[1408]],[[1361,1361],\"mapped\",[1409]],[[1362,1362],\"mapped\",[1410]],[[1363,1363],\"mapped\",[1411]],[[1364,1364],\"mapped\",[1412]],[[1365,1365],\"mapped\",[1413]],[[1366,1366],\"mapped\",[1414]],[[1367,1368],\"disallowed\"],[[1369,1369],\"valid\"],[[1370,1375],\"valid\",[],\"NV8\"],[[1376,1376],\"disallowed\"],[[1377,1414],\"valid\"],[[1415,1415],\"mapped\",[1381,1410]],[[1416,1416],\"disallowed\"],[[1417,1417],\"valid\",[],\"NV8\"],[[1418,1418],\"valid\",[],\"NV8\"],[[1419,1420],\"disallowed\"],[[1421,1422],\"valid\",[],\"NV8\"],[[1423,1423],\"valid\",[],\"NV8\"],[[1424,1424],\"disallowed\"],[[1425,1441],\"valid\"],[[1442,1442],\"valid\"],[[1443,1455],\"valid\"],[[1456,1465],\"valid\"],[[1466,1466],\"valid\"],[[1467,1469],\"valid\"],[[1470,1470],\"valid\",[],\"NV8\"],[[1471,1471],\"valid\"],[[1472,1472],\"valid\",[],\"NV8\"],[[1473,1474],\"valid\"],[[1475,1475],\"valid\",[],\"NV8\"],[[1476,1476],\"valid\"],[[1477,1477],\"valid\"],[[1478,1478],\"valid\",[],\"NV8\"],[[1479,1479],\"valid\"],[[1480,1487],\"disallowed\"],[[1488,1514],\"valid\"],[[1515,1519],\"disallowed\"],[[1520,1524],\"valid\"],[[1525,1535],\"disallowed\"],[[1536,1539],\"disallowed\"],[[1540,1540],\"disallowed\"],[[1541,1541],\"disallowed\"],[[1542,1546],\"valid\",[],\"NV8\"],[[1547,1547],\"valid\",[],\"NV8\"],[[1548,1548],\"valid\",[],\"NV8\"],[[1549,1551],\"valid\",[],\"NV8\"],[[1552,1557],\"valid\"],[[1558,1562],\"valid\"],[[1563,1563],\"valid\",[],\"NV8\"],[[1564,1564],\"disallowed\"],[[1565,1565],\"disallowed\"],[[1566,1566],\"valid\",[],\"NV8\"],[[1567,1567],\"valid\",[],\"NV8\"],[[1568,1568],\"valid\"],[[1569,1594],\"valid\"],[[1595,1599],\"valid\"],[[1600,1600],\"valid\",[],\"NV8\"],[[1601,1618],\"valid\"],[[1619,1621],\"valid\"],[[1622,1624],\"valid\"],[[1625,1630],\"valid\"],[[1631,1631],\"valid\"],[[1632,1641],\"valid\"],[[1642,1645],\"valid\",[],\"NV8\"],[[1646,1647],\"valid\"],[[1648,1652],\"valid\"],[[1653,1653],\"mapped\",[1575,1652]],[[1654,1654],\"mapped\",[1608,1652]],[[1655,1655],\"mapped\",[1735,1652]],[[1656,1656],\"mapped\",[1610,1652]],[[1657,1719],\"valid\"],[[1720,1721],\"valid\"],[[1722,1726],\"valid\"],[[1727,1727],\"valid\"],[[1728,1742],\"valid\"],[[1743,1743],\"valid\"],[[1744,1747],\"valid\"],[[1748,1748],\"valid\",[],\"NV8\"],[[1749,1756],\"valid\"],[[1757,1757],\"disallowed\"],[[1758,1758],\"valid\",[],\"NV8\"],[[1759,1768],\"valid\"],[[1769,1769],\"valid\",[],\"NV8\"],[[1770,1773],\"valid\"],[[1774,1775],\"valid\"],[[1776,1785],\"valid\"],[[1786,1790],\"valid\"],[[1791,1791],\"valid\"],[[1792,1805],\"valid\",[],\"NV8\"],[[1806,1806],\"disallowed\"],[[1807,1807],\"disallowed\"],[[1808,1836],\"valid\"],[[1837,1839],\"valid\"],[[1840,1866],\"valid\"],[[1867,1868],\"disallowed\"],[[1869,1871],\"valid\"],[[1872,1901],\"valid\"],[[1902,1919],\"valid\"],[[1920,1968],\"valid\"],[[1969,1969],\"valid\"],[[1970,1983],\"disallowed\"],[[1984,2037],\"valid\"],[[2038,2042],\"valid\",[],\"NV8\"],[[2043,2047],\"disallowed\"],[[2048,2093],\"valid\"],[[2094,2095],\"disallowed\"],[[2096,2110],\"valid\",[],\"NV8\"],[[2111,2111],\"disallowed\"],[[2112,2139],\"valid\"],[[2140,2141],\"disallowed\"],[[2142,2142],\"valid\",[],\"NV8\"],[[2143,2207],\"disallowed\"],[[2208,2208],\"valid\"],[[2209,2209],\"valid\"],[[2210,2220],\"valid\"],[[2221,2226],\"valid\"],[[2227,2228],\"valid\"],[[2229,2274],\"disallowed\"],[[2275,2275],\"valid\"],[[2276,2302],\"valid\"],[[2303,2303],\"valid\"],[[2304,2304],\"valid\"],[[2305,2307],\"valid\"],[[2308,2308],\"valid\"],[[2309,2361],\"valid\"],[[2362,2363],\"valid\"],[[2364,2381],\"valid\"],[[2382,2382],\"valid\"],[[2383,2383],\"valid\"],[[2384,2388],\"valid\"],[[2389,2389],\"valid\"],[[2390,2391],\"valid\"],[[2392,2392],\"mapped\",[2325,2364]],[[2393,2393],\"mapped\",[2326,2364]],[[2394,2394],\"mapped\",[2327,2364]],[[2395,2395],\"mapped\",[2332,2364]],[[2396,2396],\"mapped\",[2337,2364]],[[2397,2397],\"mapped\",[2338,2364]],[[2398,2398],\"mapped\",[2347,2364]],[[2399,2399],\"mapped\",[2351,2364]],[[2400,2403],\"valid\"],[[2404,2405],\"valid\",[],\"NV8\"],[[2406,2415],\"valid\"],[[2416,2416],\"valid\",[],\"NV8\"],[[2417,2418],\"valid\"],[[2419,2423],\"valid\"],[[2424,2424],\"valid\"],[[2425,2426],\"valid\"],[[2427,2428],\"valid\"],[[2429,2429],\"valid\"],[[2430,2431],\"valid\"],[[2432,2432],\"valid\"],[[2433,2435],\"valid\"],[[2436,2436],\"disallowed\"],[[2437,2444],\"valid\"],[[2445,2446],\"disallowed\"],[[2447,2448],\"valid\"],[[2449,2450],\"disallowed\"],[[2451,2472],\"valid\"],[[2473,2473],\"disallowed\"],[[2474,2480],\"valid\"],[[2481,2481],\"disallowed\"],[[2482,2482],\"valid\"],[[2483,2485],\"disallowed\"],[[2486,2489],\"valid\"],[[2490,2491],\"disallowed\"],[[2492,2492],\"valid\"],[[2493,2493],\"valid\"],[[2494,2500],\"valid\"],[[2501,2502],\"disallowed\"],[[2503,2504],\"valid\"],[[2505,2506],\"disallowed\"],[[2507,2509],\"valid\"],[[2510,2510],\"valid\"],[[2511,2518],\"disallowed\"],[[2519,2519],\"valid\"],[[2520,2523],\"disallowed\"],[[2524,2524],\"mapped\",[2465,2492]],[[2525,2525],\"mapped\",[2466,2492]],[[2526,2526],\"disallowed\"],[[2527,2527],\"mapped\",[2479,2492]],[[2528,2531],\"valid\"],[[2532,2533],\"disallowed\"],[[2534,2545],\"valid\"],[[2546,2554],\"valid\",[],\"NV8\"],[[2555,2555],\"valid\",[],\"NV8\"],[[2556,2560],\"disallowed\"],[[2561,2561],\"valid\"],[[2562,2562],\"valid\"],[[2563,2563],\"valid\"],[[2564,2564],\"disallowed\"],[[2565,2570],\"valid\"],[[2571,2574],\"disallowed\"],[[2575,2576],\"valid\"],[[2577,2578],\"disallowed\"],[[2579,2600],\"valid\"],[[2601,2601],\"disallowed\"],[[2602,2608],\"valid\"],[[2609,2609],\"disallowed\"],[[2610,2610],\"valid\"],[[2611,2611],\"mapped\",[2610,2620]],[[2612,2612],\"disallowed\"],[[2613,2613],\"valid\"],[[2614,2614],\"mapped\",[2616,2620]],[[2615,2615],\"disallowed\"],[[2616,2617],\"valid\"],[[2618,2619],\"disallowed\"],[[2620,2620],\"valid\"],[[2621,2621],\"disallowed\"],[[2622,2626],\"valid\"],[[2627,2630],\"disallowed\"],[[2631,2632],\"valid\"],[[2633,2634],\"disallowed\"],[[2635,2637],\"valid\"],[[2638,2640],\"disallowed\"],[[2641,2641],\"valid\"],[[2642,2648],\"disallowed\"],[[2649,2649],\"mapped\",[2582,2620]],[[2650,2650],\"mapped\",[2583,2620]],[[2651,2651],\"mapped\",[2588,2620]],[[2652,2652],\"valid\"],[[2653,2653],\"disallowed\"],[[2654,2654],\"mapped\",[2603,2620]],[[2655,2661],\"disallowed\"],[[2662,2676],\"valid\"],[[2677,2677],\"valid\"],[[2678,2688],\"disallowed\"],[[2689,2691],\"valid\"],[[2692,2692],\"disallowed\"],[[2693,2699],\"valid\"],[[2700,2700],\"valid\"],[[2701,2701],\"valid\"],[[2702,2702],\"disallowed\"],[[2703,2705],\"valid\"],[[2706,2706],\"disallowed\"],[[2707,2728],\"valid\"],[[2729,2729],\"disallowed\"],[[2730,2736],\"valid\"],[[2737,2737],\"disallowed\"],[[2738,2739],\"valid\"],[[2740,2740],\"disallowed\"],[[2741,2745],\"valid\"],[[2746,2747],\"disallowed\"],[[2748,2757],\"valid\"],[[2758,2758],\"disallowed\"],[[2759,2761],\"valid\"],[[2762,2762],\"disallowed\"],[[2763,2765],\"valid\"],[[2766,2767],\"disallowed\"],[[2768,2768],\"valid\"],[[2769,2783],\"disallowed\"],[[2784,2784],\"valid\"],[[2785,2787],\"valid\"],[[2788,2789],\"disallowed\"],[[2790,2799],\"valid\"],[[2800,2800],\"valid\",[],\"NV8\"],[[2801,2801],\"valid\",[],\"NV8\"],[[2802,2808],\"disallowed\"],[[2809,2809],\"valid\"],[[2810,2816],\"disallowed\"],[[2817,2819],\"valid\"],[[2820,2820],\"disallowed\"],[[2821,2828],\"valid\"],[[2829,2830],\"disallowed\"],[[2831,2832],\"valid\"],[[2833,2834],\"disallowed\"],[[2835,2856],\"valid\"],[[2857,2857],\"disallowed\"],[[2858,2864],\"valid\"],[[2865,2865],\"disallowed\"],[[2866,2867],\"valid\"],[[2868,2868],\"disallowed\"],[[2869,2869],\"valid\"],[[2870,2873],\"valid\"],[[2874,2875],\"disallowed\"],[[2876,2883],\"valid\"],[[2884,2884],\"valid\"],[[2885,2886],\"disallowed\"],[[2887,2888],\"valid\"],[[2889,2890],\"disallowed\"],[[2891,2893],\"valid\"],[[2894,2901],\"disallowed\"],[[2902,2903],\"valid\"],[[2904,2907],\"disallowed\"],[[2908,2908],\"mapped\",[2849,2876]],[[2909,2909],\"mapped\",[2850,2876]],[[2910,2910],\"disallowed\"],[[2911,2913],\"valid\"],[[2914,2915],\"valid\"],[[2916,2917],\"disallowed\"],[[2918,2927],\"valid\"],[[2928,2928],\"valid\",[],\"NV8\"],[[2929,2929],\"valid\"],[[2930,2935],\"valid\",[],\"NV8\"],[[2936,2945],\"disallowed\"],[[2946,2947],\"valid\"],[[2948,2948],\"disallowed\"],[[2949,2954],\"valid\"],[[2955,2957],\"disallowed\"],[[2958,2960],\"valid\"],[[2961,2961],\"disallowed\"],[[2962,2965],\"valid\"],[[2966,2968],\"disallowed\"],[[2969,2970],\"valid\"],[[2971,2971],\"disallowed\"],[[2972,2972],\"valid\"],[[2973,2973],\"disallowed\"],[[2974,2975],\"valid\"],[[2976,2978],\"disallowed\"],[[2979,2980],\"valid\"],[[2981,2983],\"disallowed\"],[[2984,2986],\"valid\"],[[2987,2989],\"disallowed\"],[[2990,2997],\"valid\"],[[2998,2998],\"valid\"],[[2999,3001],\"valid\"],[[3002,3005],\"disallowed\"],[[3006,3010],\"valid\"],[[3011,3013],\"disallowed\"],[[3014,3016],\"valid\"],[[3017,3017],\"disallowed\"],[[3018,3021],\"valid\"],[[3022,3023],\"disallowed\"],[[3024,3024],\"valid\"],[[3025,3030],\"disallowed\"],[[3031,3031],\"valid\"],[[3032,3045],\"disallowed\"],[[3046,3046],\"valid\"],[[3047,3055],\"valid\"],[[3056,3058],\"valid\",[],\"NV8\"],[[3059,3066],\"valid\",[],\"NV8\"],[[3067,3071],\"disallowed\"],[[3072,3072],\"valid\"],[[3073,3075],\"valid\"],[[3076,3076],\"disallowed\"],[[3077,3084],\"valid\"],[[3085,3085],\"disallowed\"],[[3086,3088],\"valid\"],[[3089,3089],\"disallowed\"],[[3090,3112],\"valid\"],[[3113,3113],\"disallowed\"],[[3114,3123],\"valid\"],[[3124,3124],\"valid\"],[[3125,3129],\"valid\"],[[3130,3132],\"disallowed\"],[[3133,3133],\"valid\"],[[3134,3140],\"valid\"],[[3141,3141],\"disallowed\"],[[3142,3144],\"valid\"],[[3145,3145],\"disallowed\"],[[3146,3149],\"valid\"],[[3150,3156],\"disallowed\"],[[3157,3158],\"valid\"],[[3159,3159],\"disallowed\"],[[3160,3161],\"valid\"],[[3162,3162],\"valid\"],[[3163,3167],\"disallowed\"],[[3168,3169],\"valid\"],[[3170,3171],\"valid\"],[[3172,3173],\"disallowed\"],[[3174,3183],\"valid\"],[[3184,3191],\"disallowed\"],[[3192,3199],\"valid\",[],\"NV8\"],[[3200,3200],\"disallowed\"],[[3201,3201],\"valid\"],[[3202,3203],\"valid\"],[[3204,3204],\"disallowed\"],[[3205,3212],\"valid\"],[[3213,3213],\"disallowed\"],[[3214,3216],\"valid\"],[[3217,3217],\"disallowed\"],[[3218,3240],\"valid\"],[[3241,3241],\"disallowed\"],[[3242,3251],\"valid\"],[[3252,3252],\"disallowed\"],[[3253,3257],\"valid\"],[[3258,3259],\"disallowed\"],[[3260,3261],\"valid\"],[[3262,3268],\"valid\"],[[3269,3269],\"disallowed\"],[[3270,3272],\"valid\"],[[3273,3273],\"disallowed\"],[[3274,3277],\"valid\"],[[3278,3284],\"disallowed\"],[[3285,3286],\"valid\"],[[3287,3293],\"disallowed\"],[[3294,3294],\"valid\"],[[3295,3295],\"disallowed\"],[[3296,3297],\"valid\"],[[3298,3299],\"valid\"],[[3300,3301],\"disallowed\"],[[3302,3311],\"valid\"],[[3312,3312],\"disallowed\"],[[3313,3314],\"valid\"],[[3315,3328],\"disallowed\"],[[3329,3329],\"valid\"],[[3330,3331],\"valid\"],[[3332,3332],\"disallowed\"],[[3333,3340],\"valid\"],[[3341,3341],\"disallowed\"],[[3342,3344],\"valid\"],[[3345,3345],\"disallowed\"],[[3346,3368],\"valid\"],[[3369,3369],\"valid\"],[[3370,3385],\"valid\"],[[3386,3386],\"valid\"],[[3387,3388],\"disallowed\"],[[3389,3389],\"valid\"],[[3390,3395],\"valid\"],[[3396,3396],\"valid\"],[[3397,3397],\"disallowed\"],[[3398,3400],\"valid\"],[[3401,3401],\"disallowed\"],[[3402,3405],\"valid\"],[[3406,3406],\"valid\"],[[3407,3414],\"disallowed\"],[[3415,3415],\"valid\"],[[3416,3422],\"disallowed\"],[[3423,3423],\"valid\"],[[3424,3425],\"valid\"],[[3426,3427],\"valid\"],[[3428,3429],\"disallowed\"],[[3430,3439],\"valid\"],[[3440,3445],\"valid\",[],\"NV8\"],[[3446,3448],\"disallowed\"],[[3449,3449],\"valid\",[],\"NV8\"],[[3450,3455],\"valid\"],[[3456,3457],\"disallowed\"],[[3458,3459],\"valid\"],[[3460,3460],\"disallowed\"],[[3461,3478],\"valid\"],[[3479,3481],\"disallowed\"],[[3482,3505],\"valid\"],[[3506,3506],\"disallowed\"],[[3507,3515],\"valid\"],[[3516,3516],\"disallowed\"],[[3517,3517],\"valid\"],[[3518,3519],\"disallowed\"],[[3520,3526],\"valid\"],[[3527,3529],\"disallowed\"],[[3530,3530],\"valid\"],[[3531,3534],\"disallowed\"],[[3535,3540],\"valid\"],[[3541,3541],\"disallowed\"],[[3542,3542],\"valid\"],[[3543,3543],\"disallowed\"],[[3544,3551],\"valid\"],[[3552,3557],\"disallowed\"],[[3558,3567],\"valid\"],[[3568,3569],\"disallowed\"],[[3570,3571],\"valid\"],[[3572,3572],\"valid\",[],\"NV8\"],[[3573,3584],\"disallowed\"],[[3585,3634],\"valid\"],[[3635,3635],\"mapped\",[3661,3634]],[[3636,3642],\"valid\"],[[3643,3646],\"disallowed\"],[[3647,3647],\"valid\",[],\"NV8\"],[[3648,3662],\"valid\"],[[3663,3663],\"valid\",[],\"NV8\"],[[3664,3673],\"valid\"],[[3674,3675],\"valid\",[],\"NV8\"],[[3676,3712],\"disallowed\"],[[3713,3714],\"valid\"],[[3715,3715],\"disallowed\"],[[3716,3716],\"valid\"],[[3717,3718],\"disallowed\"],[[3719,3720],\"valid\"],[[3721,3721],\"disallowed\"],[[3722,3722],\"valid\"],[[3723,3724],\"disallowed\"],[[3725,3725],\"valid\"],[[3726,3731],\"disallowed\"],[[3732,3735],\"valid\"],[[3736,3736],\"disallowed\"],[[3737,3743],\"valid\"],[[3744,3744],\"disallowed\"],[[3745,3747],\"valid\"],[[3748,3748],\"disallowed\"],[[3749,3749],\"valid\"],[[3750,3750],\"disallowed\"],[[3751,3751],\"valid\"],[[3752,3753],\"disallowed\"],[[3754,3755],\"valid\"],[[3756,3756],\"disallowed\"],[[3757,3762],\"valid\"],[[3763,3763],\"mapped\",[3789,3762]],[[3764,3769],\"valid\"],[[3770,3770],\"disallowed\"],[[3771,3773],\"valid\"],[[3774,3775],\"disallowed\"],[[3776,3780],\"valid\"],[[3781,3781],\"disallowed\"],[[3782,3782],\"valid\"],[[3783,3783],\"disallowed\"],[[3784,3789],\"valid\"],[[3790,3791],\"disallowed\"],[[3792,3801],\"valid\"],[[3802,3803],\"disallowed\"],[[3804,3804],\"mapped\",[3755,3737]],[[3805,3805],\"mapped\",[3755,3745]],[[3806,3807],\"valid\"],[[3808,3839],\"disallowed\"],[[3840,3840],\"valid\"],[[3841,3850],\"valid\",[],\"NV8\"],[[3851,3851],\"valid\"],[[3852,3852],\"mapped\",[3851]],[[3853,3863],\"valid\",[],\"NV8\"],[[3864,3865],\"valid\"],[[3866,3871],\"valid\",[],\"NV8\"],[[3872,3881],\"valid\"],[[3882,3892],\"valid\",[],\"NV8\"],[[3893,3893],\"valid\"],[[3894,3894],\"valid\",[],\"NV8\"],[[3895,3895],\"valid\"],[[3896,3896],\"valid\",[],\"NV8\"],[[3897,3897],\"valid\"],[[3898,3901],\"valid\",[],\"NV8\"],[[3902,3906],\"valid\"],[[3907,3907],\"mapped\",[3906,4023]],[[3908,3911],\"valid\"],[[3912,3912],\"disallowed\"],[[3913,3916],\"valid\"],[[3917,3917],\"mapped\",[3916,4023]],[[3918,3921],\"valid\"],[[3922,3922],\"mapped\",[3921,4023]],[[3923,3926],\"valid\"],[[3927,3927],\"mapped\",[3926,4023]],[[3928,3931],\"valid\"],[[3932,3932],\"mapped\",[3931,4023]],[[3933,3944],\"valid\"],[[3945,3945],\"mapped\",[3904,4021]],[[3946,3946],\"valid\"],[[3947,3948],\"valid\"],[[3949,3952],\"disallowed\"],[[3953,3954],\"valid\"],[[3955,3955],\"mapped\",[3953,3954]],[[3956,3956],\"valid\"],[[3957,3957],\"mapped\",[3953,3956]],[[3958,3958],\"mapped\",[4018,3968]],[[3959,3959],\"mapped\",[4018,3953,3968]],[[3960,3960],\"mapped\",[4019,3968]],[[3961,3961],\"mapped\",[4019,3953,3968]],[[3962,3968],\"valid\"],[[3969,3969],\"mapped\",[3953,3968]],[[3970,3972],\"valid\"],[[3973,3973],\"valid\",[],\"NV8\"],[[3974,3979],\"valid\"],[[3980,3983],\"valid\"],[[3984,3986],\"valid\"],[[3987,3987],\"mapped\",[3986,4023]],[[3988,3989],\"valid\"],[[3990,3990],\"valid\"],[[3991,3991],\"valid\"],[[3992,3992],\"disallowed\"],[[3993,3996],\"valid\"],[[3997,3997],\"mapped\",[3996,4023]],[[3998,4001],\"valid\"],[[4002,4002],\"mapped\",[4001,4023]],[[4003,4006],\"valid\"],[[4007,4007],\"mapped\",[4006,4023]],[[4008,4011],\"valid\"],[[4012,4012],\"mapped\",[4011,4023]],[[4013,4013],\"valid\"],[[4014,4016],\"valid\"],[[4017,4023],\"valid\"],[[4024,4024],\"valid\"],[[4025,4025],\"mapped\",[3984,4021]],[[4026,4028],\"valid\"],[[4029,4029],\"disallowed\"],[[4030,4037],\"valid\",[],\"NV8\"],[[4038,4038],\"valid\"],[[4039,4044],\"valid\",[],\"NV8\"],[[4045,4045],\"disallowed\"],[[4046,4046],\"valid\",[],\"NV8\"],[[4047,4047],\"valid\",[],\"NV8\"],[[4048,4049],\"valid\",[],\"NV8\"],[[4050,4052],\"valid\",[],\"NV8\"],[[4053,4056],\"valid\",[],\"NV8\"],[[4057,4058],\"valid\",[],\"NV8\"],[[4059,4095],\"disallowed\"],[[4096,4129],\"valid\"],[[4130,4130],\"valid\"],[[4131,4135],\"valid\"],[[4136,4136],\"valid\"],[[4137,4138],\"valid\"],[[4139,4139],\"valid\"],[[4140,4146],\"valid\"],[[4147,4149],\"valid\"],[[4150,4153],\"valid\"],[[4154,4159],\"valid\"],[[4160,4169],\"valid\"],[[4170,4175],\"valid\",[],\"NV8\"],[[4176,4185],\"valid\"],[[4186,4249],\"valid\"],[[4250,4253],\"valid\"],[[4254,4255],\"valid\",[],\"NV8\"],[[4256,4293],\"disallowed\"],[[4294,4294],\"disallowed\"],[[4295,4295],\"mapped\",[11559]],[[4296,4300],\"disallowed\"],[[4301,4301],\"mapped\",[11565]],[[4302,4303],\"disallowed\"],[[4304,4342],\"valid\"],[[4343,4344],\"valid\"],[[4345,4346],\"valid\"],[[4347,4347],\"valid\",[],\"NV8\"],[[4348,4348],\"mapped\",[4316]],[[4349,4351],\"valid\"],[[4352,4441],\"valid\",[],\"NV8\"],[[4442,4446],\"valid\",[],\"NV8\"],[[4447,4448],\"disallowed\"],[[4449,4514],\"valid\",[],\"NV8\"],[[4515,4519],\"valid\",[],\"NV8\"],[[4520,4601],\"valid\",[],\"NV8\"],[[4602,4607],\"valid\",[],\"NV8\"],[[4608,4614],\"valid\"],[[4615,4615],\"valid\"],[[4616,4678],\"valid\"],[[4679,4679],\"valid\"],[[4680,4680],\"valid\"],[[4681,4681],\"disallowed\"],[[4682,4685],\"valid\"],[[4686,4687],\"disallowed\"],[[4688,4694],\"valid\"],[[4695,4695],\"disallowed\"],[[4696,4696],\"valid\"],[[4697,4697],\"disallowed\"],[[4698,4701],\"valid\"],[[4702,4703],\"disallowed\"],[[4704,4742],\"valid\"],[[4743,4743],\"valid\"],[[4744,4744],\"valid\"],[[4745,4745],\"disallowed\"],[[4746,4749],\"valid\"],[[4750,4751],\"disallowed\"],[[4752,4782],\"valid\"],[[4783,4783],\"valid\"],[[4784,4784],\"valid\"],[[4785,4785],\"disallowed\"],[[4786,4789],\"valid\"],[[4790,4791],\"disallowed\"],[[4792,4798],\"valid\"],[[4799,4799],\"disallowed\"],[[4800,4800],\"valid\"],[[4801,4801],\"disallowed\"],[[4802,4805],\"valid\"],[[4806,4807],\"disallowed\"],[[4808,4814],\"valid\"],[[4815,4815],\"valid\"],[[4816,4822],\"valid\"],[[4823,4823],\"disallowed\"],[[4824,4846],\"valid\"],[[4847,4847],\"valid\"],[[4848,4878],\"valid\"],[[4879,4879],\"valid\"],[[4880,4880],\"valid\"],[[4881,4881],\"disallowed\"],[[4882,4885],\"valid\"],[[4886,4887],\"disallowed\"],[[4888,4894],\"valid\"],[[4895,4895],\"valid\"],[[4896,4934],\"valid\"],[[4935,4935],\"valid\"],[[4936,4954],\"valid\"],[[4955,4956],\"disallowed\"],[[4957,4958],\"valid\"],[[4959,4959],\"valid\"],[[4960,4960],\"valid\",[],\"NV8\"],[[4961,4988],\"valid\",[],\"NV8\"],[[4989,4991],\"disallowed\"],[[4992,5007],\"valid\"],[[5008,5017],\"valid\",[],\"NV8\"],[[5018,5023],\"disallowed\"],[[5024,5108],\"valid\"],[[5109,5109],\"valid\"],[[5110,5111],\"disallowed\"],[[5112,5112],\"mapped\",[5104]],[[5113,5113],\"mapped\",[5105]],[[5114,5114],\"mapped\",[5106]],[[5115,5115],\"mapped\",[5107]],[[5116,5116],\"mapped\",[5108]],[[5117,5117],\"mapped\",[5109]],[[5118,5119],\"disallowed\"],[[5120,5120],\"valid\",[],\"NV8\"],[[5121,5740],\"valid\"],[[5741,5742],\"valid\",[],\"NV8\"],[[5743,5750],\"valid\"],[[5751,5759],\"valid\"],[[5760,5760],\"disallowed\"],[[5761,5786],\"valid\"],[[5787,5788],\"valid\",[],\"NV8\"],[[5789,5791],\"disallowed\"],[[5792,5866],\"valid\"],[[5867,5872],\"valid\",[],\"NV8\"],[[5873,5880],\"valid\"],[[5881,5887],\"disallowed\"],[[5888,5900],\"valid\"],[[5901,5901],\"disallowed\"],[[5902,5908],\"valid\"],[[5909,5919],\"disallowed\"],[[5920,5940],\"valid\"],[[5941,5942],\"valid\",[],\"NV8\"],[[5943,5951],\"disallowed\"],[[5952,5971],\"valid\"],[[5972,5983],\"disallowed\"],[[5984,5996],\"valid\"],[[5997,5997],\"disallowed\"],[[5998,6000],\"valid\"],[[6001,6001],\"disallowed\"],[[6002,6003],\"valid\"],[[6004,6015],\"disallowed\"],[[6016,6067],\"valid\"],[[6068,6069],\"disallowed\"],[[6070,6099],\"valid\"],[[6100,6102],\"valid\",[],\"NV8\"],[[6103,6103],\"valid\"],[[6104,6107],\"valid\",[],\"NV8\"],[[6108,6108],\"valid\"],[[6109,6109],\"valid\"],[[6110,6111],\"disallowed\"],[[6112,6121],\"valid\"],[[6122,6127],\"disallowed\"],[[6128,6137],\"valid\",[],\"NV8\"],[[6138,6143],\"disallowed\"],[[6144,6149],\"valid\",[],\"NV8\"],[[6150,6150],\"disallowed\"],[[6151,6154],\"valid\",[],\"NV8\"],[[6155,6157],\"ignored\"],[[6158,6158],\"disallowed\"],[[6159,6159],\"disallowed\"],[[6160,6169],\"valid\"],[[6170,6175],\"disallowed\"],[[6176,6263],\"valid\"],[[6264,6271],\"disallowed\"],[[6272,6313],\"valid\"],[[6314,6314],\"valid\"],[[6315,6319],\"disallowed\"],[[6320,6389],\"valid\"],[[6390,6399],\"disallowed\"],[[6400,6428],\"valid\"],[[6429,6430],\"valid\"],[[6431,6431],\"disallowed\"],[[6432,6443],\"valid\"],[[6444,6447],\"disallowed\"],[[6448,6459],\"valid\"],[[6460,6463],\"disallowed\"],[[6464,6464],\"valid\",[],\"NV8\"],[[6465,6467],\"disallowed\"],[[6468,6469],\"valid\",[],\"NV8\"],[[6470,6509],\"valid\"],[[6510,6511],\"disallowed\"],[[6512,6516],\"valid\"],[[6517,6527],\"disallowed\"],[[6528,6569],\"valid\"],[[6570,6571],\"valid\"],[[6572,6575],\"disallowed\"],[[6576,6601],\"valid\"],[[6602,6607],\"disallowed\"],[[6608,6617],\"valid\"],[[6618,6618],\"valid\",[],\"XV8\"],[[6619,6621],\"disallowed\"],[[6622,6623],\"valid\",[],\"NV8\"],[[6624,6655],\"valid\",[],\"NV8\"],[[6656,6683],\"valid\"],[[6684,6685],\"disallowed\"],[[6686,6687],\"valid\",[],\"NV8\"],[[6688,6750],\"valid\"],[[6751,6751],\"disallowed\"],[[6752,6780],\"valid\"],[[6781,6782],\"disallowed\"],[[6783,6793],\"valid\"],[[6794,6799],\"disallowed\"],[[6800,6809],\"valid\"],[[6810,6815],\"disallowed\"],[[6816,6822],\"valid\",[],\"NV8\"],[[6823,6823],\"valid\"],[[6824,6829],\"valid\",[],\"NV8\"],[[6830,6831],\"disallowed\"],[[6832,6845],\"valid\"],[[6846,6846],\"valid\",[],\"NV8\"],[[6847,6911],\"disallowed\"],[[6912,6987],\"valid\"],[[6988,6991],\"disallowed\"],[[6992,7001],\"valid\"],[[7002,7018],\"valid\",[],\"NV8\"],[[7019,7027],\"valid\"],[[7028,7036],\"valid\",[],\"NV8\"],[[7037,7039],\"disallowed\"],[[7040,7082],\"valid\"],[[7083,7085],\"valid\"],[[7086,7097],\"valid\"],[[7098,7103],\"valid\"],[[7104,7155],\"valid\"],[[7156,7163],\"disallowed\"],[[7164,7167],\"valid\",[],\"NV8\"],[[7168,7223],\"valid\"],[[7224,7226],\"disallowed\"],[[7227,7231],\"valid\",[],\"NV8\"],[[7232,7241],\"valid\"],[[7242,7244],\"disallowed\"],[[7245,7293],\"valid\"],[[7294,7295],\"valid\",[],\"NV8\"],[[7296,7359],\"disallowed\"],[[7360,7367],\"valid\",[],\"NV8\"],[[7368,7375],\"disallowed\"],[[7376,7378],\"valid\"],[[7379,7379],\"valid\",[],\"NV8\"],[[7380,7410],\"valid\"],[[7411,7414],\"valid\"],[[7415,7415],\"disallowed\"],[[7416,7417],\"valid\"],[[7418,7423],\"disallowed\"],[[7424,7467],\"valid\"],[[7468,7468],\"mapped\",[97]],[[7469,7469],\"mapped\",[230]],[[7470,7470],\"mapped\",[98]],[[7471,7471],\"valid\"],[[7472,7472],\"mapped\",[100]],[[7473,7473],\"mapped\",[101]],[[7474,7474],\"mapped\",[477]],[[7475,7475],\"mapped\",[103]],[[7476,7476],\"mapped\",[104]],[[7477,7477],\"mapped\",[105]],[[7478,7478],\"mapped\",[106]],[[7479,7479],\"mapped\",[107]],[[7480,7480],\"mapped\",[108]],[[7481,7481],\"mapped\",[109]],[[7482,7482],\"mapped\",[110]],[[7483,7483],\"valid\"],[[7484,7484],\"mapped\",[111]],[[7485,7485],\"mapped\",[547]],[[7486,7486],\"mapped\",[112]],[[7487,7487],\"mapped\",[114]],[[7488,7488],\"mapped\",[116]],[[7489,7489],\"mapped\",[117]],[[7490,7490],\"mapped\",[119]],[[7491,7491],\"mapped\",[97]],[[7492,7492],\"mapped\",[592]],[[7493,7493],\"mapped\",[593]],[[7494,7494],\"mapped\",[7426]],[[7495,7495],\"mapped\",[98]],[[7496,7496],\"mapped\",[100]],[[7497,7497],\"mapped\",[101]],[[7498,7498],\"mapped\",[601]],[[7499,7499],\"mapped\",[603]],[[7500,7500],\"mapped\",[604]],[[7501,7501],\"mapped\",[103]],[[7502,7502],\"valid\"],[[7503,7503],\"mapped\",[107]],[[7504,7504],\"mapped\",[109]],[[7505,7505],\"mapped\",[331]],[[7506,7506],\"mapped\",[111]],[[7507,7507],\"mapped\",[596]],[[7508,7508],\"mapped\",[7446]],[[7509,7509],\"mapped\",[7447]],[[7510,7510],\"mapped\",[112]],[[7511,7511],\"mapped\",[116]],[[7512,7512],\"mapped\",[117]],[[7513,7513],\"mapped\",[7453]],[[7514,7514],\"mapped\",[623]],[[7515,7515],\"mapped\",[118]],[[7516,7516],\"mapped\",[7461]],[[7517,7517],\"mapped\",[946]],[[7518,7518],\"mapped\",[947]],[[7519,7519],\"mapped\",[948]],[[7520,7520],\"mapped\",[966]],[[7521,7521],\"mapped\",[967]],[[7522,7522],\"mapped\",[105]],[[7523,7523],\"mapped\",[114]],[[7524,7524],\"mapped\",[117]],[[7525,7525],\"mapped\",[118]],[[7526,7526],\"mapped\",[946]],[[7527,7527],\"mapped\",[947]],[[7528,7528],\"mapped\",[961]],[[7529,7529],\"mapped\",[966]],[[7530,7530],\"mapped\",[967]],[[7531,7531],\"valid\"],[[7532,7543],\"valid\"],[[7544,7544],\"mapped\",[1085]],[[7545,7578],\"valid\"],[[7579,7579],\"mapped\",[594]],[[7580,7580],\"mapped\",[99]],[[7581,7581],\"mapped\",[597]],[[7582,7582],\"mapped\",[240]],[[7583,7583],\"mapped\",[604]],[[7584,7584],\"mapped\",[102]],[[7585,7585],\"mapped\",[607]],[[7586,7586],\"mapped\",[609]],[[7587,7587],\"mapped\",[613]],[[7588,7588],\"mapped\",[616]],[[7589,7589],\"mapped\",[617]],[[7590,7590],\"mapped\",[618]],[[7591,7591],\"mapped\",[7547]],[[7592,7592],\"mapped\",[669]],[[7593,7593],\"mapped\",[621]],[[7594,7594],\"mapped\",[7557]],[[7595,7595],\"mapped\",[671]],[[7596,7596],\"mapped\",[625]],[[7597,7597],\"mapped\",[624]],[[7598,7598],\"mapped\",[626]],[[7599,7599],\"mapped\",[627]],[[7600,7600],\"mapped\",[628]],[[7601,7601],\"mapped\",[629]],[[7602,7602],\"mapped\",[632]],[[7603,7603],\"mapped\",[642]],[[7604,7604],\"mapped\",[643]],[[7605,7605],\"mapped\",[427]],[[7606,7606],\"mapped\",[649]],[[7607,7607],\"mapped\",[650]],[[7608,7608],\"mapped\",[7452]],[[7609,7609],\"mapped\",[651]],[[7610,7610],\"mapped\",[652]],[[7611,7611],\"mapped\",[122]],[[7612,7612],\"mapped\",[656]],[[7613,7613],\"mapped\",[657]],[[7614,7614],\"mapped\",[658]],[[7615,7615],\"mapped\",[952]],[[7616,7619],\"valid\"],[[7620,7626],\"valid\"],[[7627,7654],\"valid\"],[[7655,7669],\"valid\"],[[7670,7675],\"disallowed\"],[[7676,7676],\"valid\"],[[7677,7677],\"valid\"],[[7678,7679],\"valid\"],[[7680,7680],\"mapped\",[7681]],[[7681,7681],\"valid\"],[[7682,7682],\"mapped\",[7683]],[[7683,7683],\"valid\"],[[7684,7684],\"mapped\",[7685]],[[7685,7685],\"valid\"],[[7686,7686],\"mapped\",[7687]],[[7687,7687],\"valid\"],[[7688,7688],\"mapped\",[7689]],[[7689,7689],\"valid\"],[[7690,7690],\"mapped\",[7691]],[[7691,7691],\"valid\"],[[7692,7692],\"mapped\",[7693]],[[7693,7693],\"valid\"],[[7694,7694],\"mapped\",[7695]],[[7695,7695],\"valid\"],[[7696,7696],\"mapped\",[7697]],[[7697,7697],\"valid\"],[[7698,7698],\"mapped\",[7699]],[[7699,7699],\"valid\"],[[7700,7700],\"mapped\",[7701]],[[7701,7701],\"valid\"],[[7702,7702],\"mapped\",[7703]],[[7703,7703],\"valid\"],[[7704,7704],\"mapped\",[7705]],[[7705,7705],\"valid\"],[[7706,7706],\"mapped\",[7707]],[[7707,7707],\"valid\"],[[7708,7708],\"mapped\",[7709]],[[7709,7709],\"valid\"],[[7710,7710],\"mapped\",[7711]],[[7711,7711],\"valid\"],[[7712,7712],\"mapped\",[7713]],[[7713,7713],\"valid\"],[[7714,7714],\"mapped\",[7715]],[[7715,7715],\"valid\"],[[7716,7716],\"mapped\",[7717]],[[7717,7717],\"valid\"],[[7718,7718],\"mapped\",[7719]],[[7719,7719],\"valid\"],[[7720,7720],\"mapped\",[7721]],[[7721,7721],\"valid\"],[[7722,7722],\"mapped\",[7723]],[[7723,7723],\"valid\"],[[7724,7724],\"mapped\",[7725]],[[7725,7725],\"valid\"],[[7726,7726],\"mapped\",[7727]],[[7727,7727],\"valid\"],[[7728,7728],\"mapped\",[7729]],[[7729,7729],\"valid\"],[[7730,7730],\"mapped\",[7731]],[[7731,7731],\"valid\"],[[7732,7732],\"mapped\",[7733]],[[7733,7733],\"valid\"],[[7734,7734],\"mapped\",[7735]],[[7735,7735],\"valid\"],[[7736,7736],\"mapped\",[7737]],[[7737,7737],\"valid\"],[[7738,7738],\"mapped\",[7739]],[[7739,7739],\"valid\"],[[7740,7740],\"mapped\",[7741]],[[7741,7741],\"valid\"],[[7742,7742],\"mapped\",[7743]],[[7743,7743],\"valid\"],[[7744,7744],\"mapped\",[7745]],[[7745,7745],\"valid\"],[[7746,7746],\"mapped\",[7747]],[[7747,7747],\"valid\"],[[7748,7748],\"mapped\",[7749]],[[7749,7749],\"valid\"],[[7750,7750],\"mapped\",[7751]],[[7751,7751],\"valid\"],[[7752,7752],\"mapped\",[7753]],[[7753,7753],\"valid\"],[[7754,7754],\"mapped\",[7755]],[[7755,7755],\"valid\"],[[7756,7756],\"mapped\",[7757]],[[7757,7757],\"valid\"],[[7758,7758],\"mapped\",[7759]],[[7759,7759],\"valid\"],[[7760,7760],\"mapped\",[7761]],[[7761,7761],\"valid\"],[[7762,7762],\"mapped\",[7763]],[[7763,7763],\"valid\"],[[7764,7764],\"mapped\",[7765]],[[7765,7765],\"valid\"],[[7766,7766],\"mapped\",[7767]],[[7767,7767],\"valid\"],[[7768,7768],\"mapped\",[7769]],[[7769,7769],\"valid\"],[[7770,7770],\"mapped\",[7771]],[[7771,7771],\"valid\"],[[7772,7772],\"mapped\",[7773]],[[7773,7773],\"valid\"],[[7774,7774],\"mapped\",[7775]],[[7775,7775],\"valid\"],[[7776,7776],\"mapped\",[7777]],[[7777,7777],\"valid\"],[[7778,7778],\"mapped\",[7779]],[[7779,7779],\"valid\"],[[7780,7780],\"mapped\",[7781]],[[7781,7781],\"valid\"],[[7782,7782],\"mapped\",[7783]],[[7783,7783],\"valid\"],[[7784,7784],\"mapped\",[7785]],[[7785,7785],\"valid\"],[[7786,7786],\"mapped\",[7787]],[[7787,7787],\"valid\"],[[7788,7788],\"mapped\",[7789]],[[7789,7789],\"valid\"],[[7790,7790],\"mapped\",[7791]],[[7791,7791],\"valid\"],[[7792,7792],\"mapped\",[7793]],[[7793,7793],\"valid\"],[[7794,7794],\"mapped\",[7795]],[[7795,7795],\"valid\"],[[7796,7796],\"mapped\",[7797]],[[7797,7797],\"valid\"],[[7798,7798],\"mapped\",[7799]],[[7799,7799],\"valid\"],[[7800,7800],\"mapped\",[7801]],[[7801,7801],\"valid\"],[[7802,7802],\"mapped\",[7803]],[[7803,7803],\"valid\"],[[7804,7804],\"mapped\",[7805]],[[7805,7805],\"valid\"],[[7806,7806],\"mapped\",[7807]],[[7807,7807],\"valid\"],[[7808,7808],\"mapped\",[7809]],[[7809,7809],\"valid\"],[[7810,7810],\"mapped\",[7811]],[[7811,7811],\"valid\"],[[7812,7812],\"mapped\",[7813]],[[7813,7813],\"valid\"],[[7814,7814],\"mapped\",[7815]],[[7815,7815],\"valid\"],[[7816,7816],\"mapped\",[7817]],[[7817,7817],\"valid\"],[[7818,7818],\"mapped\",[7819]],[[7819,7819],\"valid\"],[[7820,7820],\"mapped\",[7821]],[[7821,7821],\"valid\"],[[7822,7822],\"mapped\",[7823]],[[7823,7823],\"valid\"],[[7824,7824],\"mapped\",[7825]],[[7825,7825],\"valid\"],[[7826,7826],\"mapped\",[7827]],[[7827,7827],\"valid\"],[[7828,7828],\"mapped\",[7829]],[[7829,7833],\"valid\"],[[7834,7834],\"mapped\",[97,702]],[[7835,7835],\"mapped\",[7777]],[[7836,7837],\"valid\"],[[7838,7838],\"mapped\",[115,115]],[[7839,7839],\"valid\"],[[7840,7840],\"mapped\",[7841]],[[7841,7841],\"valid\"],[[7842,7842],\"mapped\",[7843]],[[7843,7843],\"valid\"],[[7844,7844],\"mapped\",[7845]],[[7845,7845],\"valid\"],[[7846,7846],\"mapped\",[7847]],[[7847,7847],\"valid\"],[[7848,7848],\"mapped\",[7849]],[[7849,7849],\"valid\"],[[7850,7850],\"mapped\",[7851]],[[7851,7851],\"valid\"],[[7852,7852],\"mapped\",[7853]],[[7853,7853],\"valid\"],[[7854,7854],\"mapped\",[7855]],[[7855,7855],\"valid\"],[[7856,7856],\"mapped\",[7857]],[[7857,7857],\"valid\"],[[7858,7858],\"mapped\",[7859]],[[7859,7859],\"valid\"],[[7860,7860],\"mapped\",[7861]],[[7861,7861],\"valid\"],[[7862,7862],\"mapped\",[7863]],[[7863,7863],\"valid\"],[[7864,7864],\"mapped\",[7865]],[[7865,7865],\"valid\"],[[7866,7866],\"mapped\",[7867]],[[7867,7867],\"valid\"],[[7868,7868],\"mapped\",[7869]],[[7869,7869],\"valid\"],[[7870,7870],\"mapped\",[7871]],[[7871,7871],\"valid\"],[[7872,7872],\"mapped\",[7873]],[[7873,7873],\"valid\"],[[7874,7874],\"mapped\",[7875]],[[7875,7875],\"valid\"],[[7876,7876],\"mapped\",[7877]],[[7877,7877],\"valid\"],[[7878,7878],\"mapped\",[7879]],[[7879,7879],\"valid\"],[[7880,7880],\"mapped\",[7881]],[[7881,7881],\"valid\"],[[7882,7882],\"mapped\",[7883]],[[7883,7883],\"valid\"],[[7884,7884],\"mapped\",[7885]],[[7885,7885],\"valid\"],[[7886,7886],\"mapped\",[7887]],[[7887,7887],\"valid\"],[[7888,7888],\"mapped\",[7889]],[[7889,7889],\"valid\"],[[7890,7890],\"mapped\",[7891]],[[7891,7891],\"valid\"],[[7892,7892],\"mapped\",[7893]],[[7893,7893],\"valid\"],[[7894,7894],\"mapped\",[7895]],[[7895,7895],\"valid\"],[[7896,7896],\"mapped\",[7897]],[[7897,7897],\"valid\"],[[7898,7898],\"mapped\",[7899]],[[7899,7899],\"valid\"],[[7900,7900],\"mapped\",[7901]],[[7901,7901],\"valid\"],[[7902,7902],\"mapped\",[7903]],[[7903,7903],\"valid\"],[[7904,7904],\"mapped\",[7905]],[[7905,7905],\"valid\"],[[7906,7906],\"mapped\",[7907]],[[7907,7907],\"valid\"],[[7908,7908],\"mapped\",[7909]],[[7909,7909],\"valid\"],[[7910,7910],\"mapped\",[7911]],[[7911,7911],\"valid\"],[[7912,7912],\"mapped\",[7913]],[[7913,7913],\"valid\"],[[7914,7914],\"mapped\",[7915]],[[7915,7915],\"valid\"],[[7916,7916],\"mapped\",[7917]],[[7917,7917],\"valid\"],[[7918,7918],\"mapped\",[7919]],[[7919,7919],\"valid\"],[[7920,7920],\"mapped\",[7921]],[[7921,7921],\"valid\"],[[7922,7922],\"mapped\",[7923]],[[7923,7923],\"valid\"],[[7924,7924],\"mapped\",[7925]],[[7925,7925],\"valid\"],[[7926,7926],\"mapped\",[7927]],[[7927,7927],\"valid\"],[[7928,7928],\"mapped\",[7929]],[[7929,7929],\"valid\"],[[7930,7930],\"mapped\",[7931]],[[7931,7931],\"valid\"],[[7932,7932],\"mapped\",[7933]],[[7933,7933],\"valid\"],[[7934,7934],\"mapped\",[7935]],[[7935,7935],\"valid\"],[[7936,7943],\"valid\"],[[7944,7944],\"mapped\",[7936]],[[7945,7945],\"mapped\",[7937]],[[7946,7946],\"mapped\",[7938]],[[7947,7947],\"mapped\",[7939]],[[7948,7948],\"mapped\",[7940]],[[7949,7949],\"mapped\",[7941]],[[7950,7950],\"mapped\",[7942]],[[7951,7951],\"mapped\",[7943]],[[7952,7957],\"valid\"],[[7958,7959],\"disallowed\"],[[7960,7960],\"mapped\",[7952]],[[7961,7961],\"mapped\",[7953]],[[7962,7962],\"mapped\",[7954]],[[7963,7963],\"mapped\",[7955]],[[7964,7964],\"mapped\",[7956]],[[7965,7965],\"mapped\",[7957]],[[7966,7967],\"disallowed\"],[[7968,7975],\"valid\"],[[7976,7976],\"mapped\",[7968]],[[7977,7977],\"mapped\",[7969]],[[7978,7978],\"mapped\",[7970]],[[7979,7979],\"mapped\",[7971]],[[7980,7980],\"mapped\",[7972]],[[7981,7981],\"mapped\",[7973]],[[7982,7982],\"mapped\",[7974]],[[7983,7983],\"mapped\",[7975]],[[7984,7991],\"valid\"],[[7992,7992],\"mapped\",[7984]],[[7993,7993],\"mapped\",[7985]],[[7994,7994],\"mapped\",[7986]],[[7995,7995],\"mapped\",[7987]],[[7996,7996],\"mapped\",[7988]],[[7997,7997],\"mapped\",[7989]],[[7998,7998],\"mapped\",[7990]],[[7999,7999],\"mapped\",[7991]],[[8000,8005],\"valid\"],[[8006,8007],\"disallowed\"],[[8008,8008],\"mapped\",[8000]],[[8009,8009],\"mapped\",[8001]],[[8010,8010],\"mapped\",[8002]],[[8011,8011],\"mapped\",[8003]],[[8012,8012],\"mapped\",[8004]],[[8013,8013],\"mapped\",[8005]],[[8014,8015],\"disallowed\"],[[8016,8023],\"valid\"],[[8024,8024],\"disallowed\"],[[8025,8025],\"mapped\",[8017]],[[8026,8026],\"disallowed\"],[[8027,8027],\"mapped\",[8019]],[[8028,8028],\"disallowed\"],[[8029,8029],\"mapped\",[8021]],[[8030,8030],\"disallowed\"],[[8031,8031],\"mapped\",[8023]],[[8032,8039],\"valid\"],[[8040,8040],\"mapped\",[8032]],[[8041,8041],\"mapped\",[8033]],[[8042,8042],\"mapped\",[8034]],[[8043,8043],\"mapped\",[8035]],[[8044,8044],\"mapped\",[8036]],[[8045,8045],\"mapped\",[8037]],[[8046,8046],\"mapped\",[8038]],[[8047,8047],\"mapped\",[8039]],[[8048,8048],\"valid\"],[[8049,8049],\"mapped\",[940]],[[8050,8050],\"valid\"],[[8051,8051],\"mapped\",[941]],[[8052,8052],\"valid\"],[[8053,8053],\"mapped\",[942]],[[8054,8054],\"valid\"],[[8055,8055],\"mapped\",[943]],[[8056,8056],\"valid\"],[[8057,8057],\"mapped\",[972]],[[8058,8058],\"valid\"],[[8059,8059],\"mapped\",[973]],[[8060,8060],\"valid\"],[[8061,8061],\"mapped\",[974]],[[8062,8063],\"disallowed\"],[[8064,8064],\"mapped\",[7936,953]],[[8065,8065],\"mapped\",[7937,953]],[[8066,8066],\"mapped\",[7938,953]],[[8067,8067],\"mapped\",[7939,953]],[[8068,8068],\"mapped\",[7940,953]],[[8069,8069],\"mapped\",[7941,953]],[[8070,8070],\"mapped\",[7942,953]],[[8071,8071],\"mapped\",[7943,953]],[[8072,8072],\"mapped\",[7936,953]],[[8073,8073],\"mapped\",[7937,953]],[[8074,8074],\"mapped\",[7938,953]],[[8075,8075],\"mapped\",[7939,953]],[[8076,8076],\"mapped\",[7940,953]],[[8077,8077],\"mapped\",[7941,953]],[[8078,8078],\"mapped\",[7942,953]],[[8079,8079],\"mapped\",[7943,953]],[[8080,8080],\"mapped\",[7968,953]],[[8081,8081],\"mapped\",[7969,953]],[[8082,8082],\"mapped\",[7970,953]],[[8083,8083],\"mapped\",[7971,953]],[[8084,8084],\"mapped\",[7972,953]],[[8085,8085],\"mapped\",[7973,953]],[[8086,8086],\"mapped\",[7974,953]],[[8087,8087],\"mapped\",[7975,953]],[[8088,8088],\"mapped\",[7968,953]],[[8089,8089],\"mapped\",[7969,953]],[[8090,8090],\"mapped\",[7970,953]],[[8091,8091],\"mapped\",[7971,953]],[[8092,8092],\"mapped\",[7972,953]],[[8093,8093],\"mapped\",[7973,953]],[[8094,8094],\"mapped\",[7974,953]],[[8095,8095],\"mapped\",[7975,953]],[[8096,8096],\"mapped\",[8032,953]],[[8097,8097],\"mapped\",[8033,953]],[[8098,8098],\"mapped\",[8034,953]],[[8099,8099],\"mapped\",[8035,953]],[[8100,8100],\"mapped\",[8036,953]],[[8101,8101],\"mapped\",[8037,953]],[[8102,8102],\"mapped\",[8038,953]],[[8103,8103],\"mapped\",[8039,953]],[[8104,8104],\"mapped\",[8032,953]],[[8105,8105],\"mapped\",[8033,953]],[[8106,8106],\"mapped\",[8034,953]],[[8107,8107],\"mapped\",[8035,953]],[[8108,8108],\"mapped\",[8036,953]],[[8109,8109],\"mapped\",[8037,953]],[[8110,8110],\"mapped\",[8038,953]],[[8111,8111],\"mapped\",[8039,953]],[[8112,8113],\"valid\"],[[8114,8114],\"mapped\",[8048,953]],[[8115,8115],\"mapped\",[945,953]],[[8116,8116],\"mapped\",[940,953]],[[8117,8117],\"disallowed\"],[[8118,8118],\"valid\"],[[8119,8119],\"mapped\",[8118,953]],[[8120,8120],\"mapped\",[8112]],[[8121,8121],\"mapped\",[8113]],[[8122,8122],\"mapped\",[8048]],[[8123,8123],\"mapped\",[940]],[[8124,8124],\"mapped\",[945,953]],[[8125,8125],\"disallowed_STD3_mapped\",[32,787]],[[8126,8126],\"mapped\",[953]],[[8127,8127],\"disallowed_STD3_mapped\",[32,787]],[[8128,8128],\"disallowed_STD3_mapped\",[32,834]],[[8129,8129],\"disallowed_STD3_mapped\",[32,776,834]],[[8130,8130],\"mapped\",[8052,953]],[[8131,8131],\"mapped\",[951,953]],[[8132,8132],\"mapped\",[942,953]],[[8133,8133],\"disallowed\"],[[8134,8134],\"valid\"],[[8135,8135],\"mapped\",[8134,953]],[[8136,8136],\"mapped\",[8050]],[[8137,8137],\"mapped\",[941]],[[8138,8138],\"mapped\",[8052]],[[8139,8139],\"mapped\",[942]],[[8140,8140],\"mapped\",[951,953]],[[8141,8141],\"disallowed_STD3_mapped\",[32,787,768]],[[8142,8142],\"disallowed_STD3_mapped\",[32,787,769]],[[8143,8143],\"disallowed_STD3_mapped\",[32,787,834]],[[8144,8146],\"valid\"],[[8147,8147],\"mapped\",[912]],[[8148,8149],\"disallowed\"],[[8150,8151],\"valid\"],[[8152,8152],\"mapped\",[8144]],[[8153,8153],\"mapped\",[8145]],[[8154,8154],\"mapped\",[8054]],[[8155,8155],\"mapped\",[943]],[[8156,8156],\"disallowed\"],[[8157,8157],\"disallowed_STD3_mapped\",[32,788,768]],[[8158,8158],\"disallowed_STD3_mapped\",[32,788,769]],[[8159,8159],\"disallowed_STD3_mapped\",[32,788,834]],[[8160,8162],\"valid\"],[[8163,8163],\"mapped\",[944]],[[8164,8167],\"valid\"],[[8168,8168],\"mapped\",[8160]],[[8169,8169],\"mapped\",[8161]],[[8170,8170],\"mapped\",[8058]],[[8171,8171],\"mapped\",[973]],[[8172,8172],\"mapped\",[8165]],[[8173,8173],\"disallowed_STD3_mapped\",[32,776,768]],[[8174,8174],\"disallowed_STD3_mapped\",[32,776,769]],[[8175,8175],\"disallowed_STD3_mapped\",[96]],[[8176,8177],\"disallowed\"],[[8178,8178],\"mapped\",[8060,953]],[[8179,8179],\"mapped\",[969,953]],[[8180,8180],\"mapped\",[974,953]],[[8181,8181],\"disallowed\"],[[8182,8182],\"valid\"],[[8183,8183],\"mapped\",[8182,953]],[[8184,8184],\"mapped\",[8056]],[[8185,8185],\"mapped\",[972]],[[8186,8186],\"mapped\",[8060]],[[8187,8187],\"mapped\",[974]],[[8188,8188],\"mapped\",[969,953]],[[8189,8189],\"disallowed_STD3_mapped\",[32,769]],[[8190,8190],\"disallowed_STD3_mapped\",[32,788]],[[8191,8191],\"disallowed\"],[[8192,8202],\"disallowed_STD3_mapped\",[32]],[[8203,8203],\"ignored\"],[[8204,8205],\"deviation\",[]],[[8206,8207],\"disallowed\"],[[8208,8208],\"valid\",[],\"NV8\"],[[8209,8209],\"mapped\",[8208]],[[8210,8214],\"valid\",[],\"NV8\"],[[8215,8215],\"disallowed_STD3_mapped\",[32,819]],[[8216,8227],\"valid\",[],\"NV8\"],[[8228,8230],\"disallowed\"],[[8231,8231],\"valid\",[],\"NV8\"],[[8232,8238],\"disallowed\"],[[8239,8239],\"disallowed_STD3_mapped\",[32]],[[8240,8242],\"valid\",[],\"NV8\"],[[8243,8243],\"mapped\",[8242,8242]],[[8244,8244],\"mapped\",[8242,8242,8242]],[[8245,8245],\"valid\",[],\"NV8\"],[[8246,8246],\"mapped\",[8245,8245]],[[8247,8247],\"mapped\",[8245,8245,8245]],[[8248,8251],\"valid\",[],\"NV8\"],[[8252,8252],\"disallowed_STD3_mapped\",[33,33]],[[8253,8253],\"valid\",[],\"NV8\"],[[8254,8254],\"disallowed_STD3_mapped\",[32,773]],[[8255,8262],\"valid\",[],\"NV8\"],[[8263,8263],\"disallowed_STD3_mapped\",[63,63]],[[8264,8264],\"disallowed_STD3_mapped\",[63,33]],[[8265,8265],\"disallowed_STD3_mapped\",[33,63]],[[8266,8269],\"valid\",[],\"NV8\"],[[8270,8274],\"valid\",[],\"NV8\"],[[8275,8276],\"valid\",[],\"NV8\"],[[8277,8278],\"valid\",[],\"NV8\"],[[8279,8279],\"mapped\",[8242,8242,8242,8242]],[[8280,8286],\"valid\",[],\"NV8\"],[[8287,8287],\"disallowed_STD3_mapped\",[32]],[[8288,8288],\"ignored\"],[[8289,8291],\"disallowed\"],[[8292,8292],\"ignored\"],[[8293,8293],\"disallowed\"],[[8294,8297],\"disallowed\"],[[8298,8303],\"disallowed\"],[[8304,8304],\"mapped\",[48]],[[8305,8305],\"mapped\",[105]],[[8306,8307],\"disallowed\"],[[8308,8308],\"mapped\",[52]],[[8309,8309],\"mapped\",[53]],[[8310,8310],\"mapped\",[54]],[[8311,8311],\"mapped\",[55]],[[8312,8312],\"mapped\",[56]],[[8313,8313],\"mapped\",[57]],[[8314,8314],\"disallowed_STD3_mapped\",[43]],[[8315,8315],\"mapped\",[8722]],[[8316,8316],\"disallowed_STD3_mapped\",[61]],[[8317,8317],\"disallowed_STD3_mapped\",[40]],[[8318,8318],\"disallowed_STD3_mapped\",[41]],[[8319,8319],\"mapped\",[110]],[[8320,8320],\"mapped\",[48]],[[8321,8321],\"mapped\",[49]],[[8322,8322],\"mapped\",[50]],[[8323,8323],\"mapped\",[51]],[[8324,8324],\"mapped\",[52]],[[8325,8325],\"mapped\",[53]],[[8326,8326],\"mapped\",[54]],[[8327,8327],\"mapped\",[55]],[[8328,8328],\"mapped\",[56]],[[8329,8329],\"mapped\",[57]],[[8330,8330],\"disallowed_STD3_mapped\",[43]],[[8331,8331],\"mapped\",[8722]],[[8332,8332],\"disallowed_STD3_mapped\",[61]],[[8333,8333],\"disallowed_STD3_mapped\",[40]],[[8334,8334],\"disallowed_STD3_mapped\",[41]],[[8335,8335],\"disallowed\"],[[8336,8336],\"mapped\",[97]],[[8337,8337],\"mapped\",[101]],[[8338,8338],\"mapped\",[111]],[[8339,8339],\"mapped\",[120]],[[8340,8340],\"mapped\",[601]],[[8341,8341],\"mapped\",[104]],[[8342,8342],\"mapped\",[107]],[[8343,8343],\"mapped\",[108]],[[8344,8344],\"mapped\",[109]],[[8345,8345],\"mapped\",[110]],[[8346,8346],\"mapped\",[112]],[[8347,8347],\"mapped\",[115]],[[8348,8348],\"mapped\",[116]],[[8349,8351],\"disallowed\"],[[8352,8359],\"valid\",[],\"NV8\"],[[8360,8360],\"mapped\",[114,115]],[[8361,8362],\"valid\",[],\"NV8\"],[[8363,8363],\"valid\",[],\"NV8\"],[[8364,8364],\"valid\",[],\"NV8\"],[[8365,8367],\"valid\",[],\"NV8\"],[[8368,8369],\"valid\",[],\"NV8\"],[[8370,8373],\"valid\",[],\"NV8\"],[[8374,8376],\"valid\",[],\"NV8\"],[[8377,8377],\"valid\",[],\"NV8\"],[[8378,8378],\"valid\",[],\"NV8\"],[[8379,8381],\"valid\",[],\"NV8\"],[[8382,8382],\"valid\",[],\"NV8\"],[[8383,8399],\"disallowed\"],[[8400,8417],\"valid\",[],\"NV8\"],[[8418,8419],\"valid\",[],\"NV8\"],[[8420,8426],\"valid\",[],\"NV8\"],[[8427,8427],\"valid\",[],\"NV8\"],[[8428,8431],\"valid\",[],\"NV8\"],[[8432,8432],\"valid\",[],\"NV8\"],[[8433,8447],\"disallowed\"],[[8448,8448],\"disallowed_STD3_mapped\",[97,47,99]],[[8449,8449],\"disallowed_STD3_mapped\",[97,47,115]],[[8450,8450],\"mapped\",[99]],[[8451,8451],\"mapped\",[176,99]],[[8452,8452],\"valid\",[],\"NV8\"],[[8453,8453],\"disallowed_STD3_mapped\",[99,47,111]],[[8454,8454],\"disallowed_STD3_mapped\",[99,47,117]],[[8455,8455],\"mapped\",[603]],[[8456,8456],\"valid\",[],\"NV8\"],[[8457,8457],\"mapped\",[176,102]],[[8458,8458],\"mapped\",[103]],[[8459,8462],\"mapped\",[104]],[[8463,8463],\"mapped\",[295]],[[8464,8465],\"mapped\",[105]],[[8466,8467],\"mapped\",[108]],[[8468,8468],\"valid\",[],\"NV8\"],[[8469,8469],\"mapped\",[110]],[[8470,8470],\"mapped\",[110,111]],[[8471,8472],\"valid\",[],\"NV8\"],[[8473,8473],\"mapped\",[112]],[[8474,8474],\"mapped\",[113]],[[8475,8477],\"mapped\",[114]],[[8478,8479],\"valid\",[],\"NV8\"],[[8480,8480],\"mapped\",[115,109]],[[8481,8481],\"mapped\",[116,101,108]],[[8482,8482],\"mapped\",[116,109]],[[8483,8483],\"valid\",[],\"NV8\"],[[8484,8484],\"mapped\",[122]],[[8485,8485],\"valid\",[],\"NV8\"],[[8486,8486],\"mapped\",[969]],[[8487,8487],\"valid\",[],\"NV8\"],[[8488,8488],\"mapped\",[122]],[[8489,8489],\"valid\",[],\"NV8\"],[[8490,8490],\"mapped\",[107]],[[8491,8491],\"mapped\",[229]],[[8492,8492],\"mapped\",[98]],[[8493,8493],\"mapped\",[99]],[[8494,8494],\"valid\",[],\"NV8\"],[[8495,8496],\"mapped\",[101]],[[8497,8497],\"mapped\",[102]],[[8498,8498],\"disallowed\"],[[8499,8499],\"mapped\",[109]],[[8500,8500],\"mapped\",[111]],[[8501,8501],\"mapped\",[1488]],[[8502,8502],\"mapped\",[1489]],[[8503,8503],\"mapped\",[1490]],[[8504,8504],\"mapped\",[1491]],[[8505,8505],\"mapped\",[105]],[[8506,8506],\"valid\",[],\"NV8\"],[[8507,8507],\"mapped\",[102,97,120]],[[8508,8508],\"mapped\",[960]],[[8509,8510],\"mapped\",[947]],[[8511,8511],\"mapped\",[960]],[[8512,8512],\"mapped\",[8721]],[[8513,8516],\"valid\",[],\"NV8\"],[[8517,8518],\"mapped\",[100]],[[8519,8519],\"mapped\",[101]],[[8520,8520],\"mapped\",[105]],[[8521,8521],\"mapped\",[106]],[[8522,8523],\"valid\",[],\"NV8\"],[[8524,8524],\"valid\",[],\"NV8\"],[[8525,8525],\"valid\",[],\"NV8\"],[[8526,8526],\"valid\"],[[8527,8527],\"valid\",[],\"NV8\"],[[8528,8528],\"mapped\",[49,8260,55]],[[8529,8529],\"mapped\",[49,8260,57]],[[8530,8530],\"mapped\",[49,8260,49,48]],[[8531,8531],\"mapped\",[49,8260,51]],[[8532,8532],\"mapped\",[50,8260,51]],[[8533,8533],\"mapped\",[49,8260,53]],[[8534,8534],\"mapped\",[50,8260,53]],[[8535,8535],\"mapped\",[51,8260,53]],[[8536,8536],\"mapped\",[52,8260,53]],[[8537,8537],\"mapped\",[49,8260,54]],[[8538,8538],\"mapped\",[53,8260,54]],[[8539,8539],\"mapped\",[49,8260,56]],[[8540,8540],\"mapped\",[51,8260,56]],[[8541,8541],\"mapped\",[53,8260,56]],[[8542,8542],\"mapped\",[55,8260,56]],[[8543,8543],\"mapped\",[49,8260]],[[8544,8544],\"mapped\",[105]],[[8545,8545],\"mapped\",[105,105]],[[8546,8546],\"mapped\",[105,105,105]],[[8547,8547],\"mapped\",[105,118]],[[8548,8548],\"mapped\",[118]],[[8549,8549],\"mapped\",[118,105]],[[8550,8550],\"mapped\",[118,105,105]],[[8551,8551],\"mapped\",[118,105,105,105]],[[8552,8552],\"mapped\",[105,120]],[[8553,8553],\"mapped\",[120]],[[8554,8554],\"mapped\",[120,105]],[[8555,8555],\"mapped\",[120,105,105]],[[8556,8556],\"mapped\",[108]],[[8557,8557],\"mapped\",[99]],[[8558,8558],\"mapped\",[100]],[[8559,8559],\"mapped\",[109]],[[8560,8560],\"mapped\",[105]],[[8561,8561],\"mapped\",[105,105]],[[8562,8562],\"mapped\",[105,105,105]],[[8563,8563],\"mapped\",[105,118]],[[8564,8564],\"mapped\",[118]],[[8565,8565],\"mapped\",[118,105]],[[8566,8566],\"mapped\",[118,105,105]],[[8567,8567],\"mapped\",[118,105,105,105]],[[8568,8568],\"mapped\",[105,120]],[[8569,8569],\"mapped\",[120]],[[8570,8570],\"mapped\",[120,105]],[[8571,8571],\"mapped\",[120,105,105]],[[8572,8572],\"mapped\",[108]],[[8573,8573],\"mapped\",[99]],[[8574,8574],\"mapped\",[100]],[[8575,8575],\"mapped\",[109]],[[8576,8578],\"valid\",[],\"NV8\"],[[8579,8579],\"disallowed\"],[[8580,8580],\"valid\"],[[8581,8584],\"valid\",[],\"NV8\"],[[8585,8585],\"mapped\",[48,8260,51]],[[8586,8587],\"valid\",[],\"NV8\"],[[8588,8591],\"disallowed\"],[[8592,8682],\"valid\",[],\"NV8\"],[[8683,8691],\"valid\",[],\"NV8\"],[[8692,8703],\"valid\",[],\"NV8\"],[[8704,8747],\"valid\",[],\"NV8\"],[[8748,8748],\"mapped\",[8747,8747]],[[8749,8749],\"mapped\",[8747,8747,8747]],[[8750,8750],\"valid\",[],\"NV8\"],[[8751,8751],\"mapped\",[8750,8750]],[[8752,8752],\"mapped\",[8750,8750,8750]],[[8753,8799],\"valid\",[],\"NV8\"],[[8800,8800],\"disallowed_STD3_valid\"],[[8801,8813],\"valid\",[],\"NV8\"],[[8814,8815],\"disallowed_STD3_valid\"],[[8816,8945],\"valid\",[],\"NV8\"],[[8946,8959],\"valid\",[],\"NV8\"],[[8960,8960],\"valid\",[],\"NV8\"],[[8961,8961],\"valid\",[],\"NV8\"],[[8962,9000],\"valid\",[],\"NV8\"],[[9001,9001],\"mapped\",[12296]],[[9002,9002],\"mapped\",[12297]],[[9003,9082],\"valid\",[],\"NV8\"],[[9083,9083],\"valid\",[],\"NV8\"],[[9084,9084],\"valid\",[],\"NV8\"],[[9085,9114],\"valid\",[],\"NV8\"],[[9115,9166],\"valid\",[],\"NV8\"],[[9167,9168],\"valid\",[],\"NV8\"],[[9169,9179],\"valid\",[],\"NV8\"],[[9180,9191],\"valid\",[],\"NV8\"],[[9192,9192],\"valid\",[],\"NV8\"],[[9193,9203],\"valid\",[],\"NV8\"],[[9204,9210],\"valid\",[],\"NV8\"],[[9211,9215],\"disallowed\"],[[9216,9252],\"valid\",[],\"NV8\"],[[9253,9254],\"valid\",[],\"NV8\"],[[9255,9279],\"disallowed\"],[[9280,9290],\"valid\",[],\"NV8\"],[[9291,9311],\"disallowed\"],[[9312,9312],\"mapped\",[49]],[[9313,9313],\"mapped\",[50]],[[9314,9314],\"mapped\",[51]],[[9315,9315],\"mapped\",[52]],[[9316,9316],\"mapped\",[53]],[[9317,9317],\"mapped\",[54]],[[9318,9318],\"mapped\",[55]],[[9319,9319],\"mapped\",[56]],[[9320,9320],\"mapped\",[57]],[[9321,9321],\"mapped\",[49,48]],[[9322,9322],\"mapped\",[49,49]],[[9323,9323],\"mapped\",[49,50]],[[9324,9324],\"mapped\",[49,51]],[[9325,9325],\"mapped\",[49,52]],[[9326,9326],\"mapped\",[49,53]],[[9327,9327],\"mapped\",[49,54]],[[9328,9328],\"mapped\",[49,55]],[[9329,9329],\"mapped\",[49,56]],[[9330,9330],\"mapped\",[49,57]],[[9331,9331],\"mapped\",[50,48]],[[9332,9332],\"disallowed_STD3_mapped\",[40,49,41]],[[9333,9333],\"disallowed_STD3_mapped\",[40,50,41]],[[9334,9334],\"disallowed_STD3_mapped\",[40,51,41]],[[9335,9335],\"disallowed_STD3_mapped\",[40,52,41]],[[9336,9336],\"disallowed_STD3_mapped\",[40,53,41]],[[9337,9337],\"disallowed_STD3_mapped\",[40,54,41]],[[9338,9338],\"disallowed_STD3_mapped\",[40,55,41]],[[9339,9339],\"disallowed_STD3_mapped\",[40,56,41]],[[9340,9340],\"disallowed_STD3_mapped\",[40,57,41]],[[9341,9341],\"disallowed_STD3_mapped\",[40,49,48,41]],[[9342,9342],\"disallowed_STD3_mapped\",[40,49,49,41]],[[9343,9343],\"disallowed_STD3_mapped\",[40,49,50,41]],[[9344,9344],\"disallowed_STD3_mapped\",[40,49,51,41]],[[9345,9345],\"disallowed_STD3_mapped\",[40,49,52,41]],[[9346,9346],\"disallowed_STD3_mapped\",[40,49,53,41]],[[9347,9347],\"disallowed_STD3_mapped\",[40,49,54,41]],[[9348,9348],\"disallowed_STD3_mapped\",[40,49,55,41]],[[9349,9349],\"disallowed_STD3_mapped\",[40,49,56,41]],[[9350,9350],\"disallowed_STD3_mapped\",[40,49,57,41]],[[9351,9351],\"disallowed_STD3_mapped\",[40,50,48,41]],[[9352,9371],\"disallowed\"],[[9372,9372],\"disallowed_STD3_mapped\",[40,97,41]],[[9373,9373],\"disallowed_STD3_mapped\",[40,98,41]],[[9374,9374],\"disallowed_STD3_mapped\",[40,99,41]],[[9375,9375],\"disallowed_STD3_mapped\",[40,100,41]],[[9376,9376],\"disallowed_STD3_mapped\",[40,101,41]],[[9377,9377],\"disallowed_STD3_mapped\",[40,102,41]],[[9378,9378],\"disallowed_STD3_mapped\",[40,103,41]],[[9379,9379],\"disallowed_STD3_mapped\",[40,104,41]],[[9380,9380],\"disallowed_STD3_mapped\",[40,105,41]],[[9381,9381],\"disallowed_STD3_mapped\",[40,106,41]],[[9382,9382],\"disallowed_STD3_mapped\",[40,107,41]],[[9383,9383],\"disallowed_STD3_mapped\",[40,108,41]],[[9384,9384],\"disallowed_STD3_mapped\",[40,109,41]],[[9385,9385],\"disallowed_STD3_mapped\",[40,110,41]],[[9386,9386],\"disallowed_STD3_mapped\",[40,111,41]],[[9387,9387],\"disallowed_STD3_mapped\",[40,112,41]],[[9388,9388],\"disallowed_STD3_mapped\",[40,113,41]],[[9389,9389],\"disallowed_STD3_mapped\",[40,114,41]],[[9390,9390],\"disallowed_STD3_mapped\",[40,115,41]],[[9391,9391],\"disallowed_STD3_mapped\",[40,116,41]],[[9392,9392],\"disallowed_STD3_mapped\",[40,117,41]],[[9393,9393],\"disallowed_STD3_mapped\",[40,118,41]],[[9394,9394],\"disallowed_STD3_mapped\",[40,119,41]],[[9395,9395],\"disallowed_STD3_mapped\",[40,120,41]],[[9396,9396],\"disallowed_STD3_mapped\",[40,121,41]],[[9397,9397],\"disallowed_STD3_mapped\",[40,122,41]],[[9398,9398],\"mapped\",[97]],[[9399,9399],\"mapped\",[98]],[[9400,9400],\"mapped\",[99]],[[9401,9401],\"mapped\",[100]],[[9402,9402],\"mapped\",[101]],[[9403,9403],\"mapped\",[102]],[[9404,9404],\"mapped\",[103]],[[9405,9405],\"mapped\",[104]],[[9406,9406],\"mapped\",[105]],[[9407,9407],\"mapped\",[106]],[[9408,9408],\"mapped\",[107]],[[9409,9409],\"mapped\",[108]],[[9410,9410],\"mapped\",[109]],[[9411,9411],\"mapped\",[110]],[[9412,9412],\"mapped\",[111]],[[9413,9413],\"mapped\",[112]],[[9414,9414],\"mapped\",[113]],[[9415,9415],\"mapped\",[114]],[[9416,9416],\"mapped\",[115]],[[9417,9417],\"mapped\",[116]],[[9418,9418],\"mapped\",[117]],[[9419,9419],\"mapped\",[118]],[[9420,9420],\"mapped\",[119]],[[9421,9421],\"mapped\",[120]],[[9422,9422],\"mapped\",[121]],[[9423,9423],\"mapped\",[122]],[[9424,9424],\"mapped\",[97]],[[9425,9425],\"mapped\",[98]],[[9426,9426],\"mapped\",[99]],[[9427,9427],\"mapped\",[100]],[[9428,9428],\"mapped\",[101]],[[9429,9429],\"mapped\",[102]],[[9430,9430],\"mapped\",[103]],[[9431,9431],\"mapped\",[104]],[[9432,9432],\"mapped\",[105]],[[9433,9433],\"mapped\",[106]],[[9434,9434],\"mapped\",[107]],[[9435,9435],\"mapped\",[108]],[[9436,9436],\"mapped\",[109]],[[9437,9437],\"mapped\",[110]],[[9438,9438],\"mapped\",[111]],[[9439,9439],\"mapped\",[112]],[[9440,9440],\"mapped\",[113]],[[9441,9441],\"mapped\",[114]],[[9442,9442],\"mapped\",[115]],[[9443,9443],\"mapped\",[116]],[[9444,9444],\"mapped\",[117]],[[9445,9445],\"mapped\",[118]],[[9446,9446],\"mapped\",[119]],[[9447,9447],\"mapped\",[120]],[[9448,9448],\"mapped\",[121]],[[9449,9449],\"mapped\",[122]],[[9450,9450],\"mapped\",[48]],[[9451,9470],\"valid\",[],\"NV8\"],[[9471,9471],\"valid\",[],\"NV8\"],[[9472,9621],\"valid\",[],\"NV8\"],[[9622,9631],\"valid\",[],\"NV8\"],[[9632,9711],\"valid\",[],\"NV8\"],[[9712,9719],\"valid\",[],\"NV8\"],[[9720,9727],\"valid\",[],\"NV8\"],[[9728,9747],\"valid\",[],\"NV8\"],[[9748,9749],\"valid\",[],\"NV8\"],[[9750,9751],\"valid\",[],\"NV8\"],[[9752,9752],\"valid\",[],\"NV8\"],[[9753,9753],\"valid\",[],\"NV8\"],[[9754,9839],\"valid\",[],\"NV8\"],[[9840,9841],\"valid\",[],\"NV8\"],[[9842,9853],\"valid\",[],\"NV8\"],[[9854,9855],\"valid\",[],\"NV8\"],[[9856,9865],\"valid\",[],\"NV8\"],[[9866,9873],\"valid\",[],\"NV8\"],[[9874,9884],\"valid\",[],\"NV8\"],[[9885,9885],\"valid\",[],\"NV8\"],[[9886,9887],\"valid\",[],\"NV8\"],[[9888,9889],\"valid\",[],\"NV8\"],[[9890,9905],\"valid\",[],\"NV8\"],[[9906,9906],\"valid\",[],\"NV8\"],[[9907,9916],\"valid\",[],\"NV8\"],[[9917,9919],\"valid\",[],\"NV8\"],[[9920,9923],\"valid\",[],\"NV8\"],[[9924,9933],\"valid\",[],\"NV8\"],[[9934,9934],\"valid\",[],\"NV8\"],[[9935,9953],\"valid\",[],\"NV8\"],[[9954,9954],\"valid\",[],\"NV8\"],[[9955,9955],\"valid\",[],\"NV8\"],[[9956,9959],\"valid\",[],\"NV8\"],[[9960,9983],\"valid\",[],\"NV8\"],[[9984,9984],\"valid\",[],\"NV8\"],[[9985,9988],\"valid\",[],\"NV8\"],[[9989,9989],\"valid\",[],\"NV8\"],[[9990,9993],\"valid\",[],\"NV8\"],[[9994,9995],\"valid\",[],\"NV8\"],[[9996,10023],\"valid\",[],\"NV8\"],[[10024,10024],\"valid\",[],\"NV8\"],[[10025,10059],\"valid\",[],\"NV8\"],[[10060,10060],\"valid\",[],\"NV8\"],[[10061,10061],\"valid\",[],\"NV8\"],[[10062,10062],\"valid\",[],\"NV8\"],[[10063,10066],\"valid\",[],\"NV8\"],[[10067,10069],\"valid\",[],\"NV8\"],[[10070,10070],\"valid\",[],\"NV8\"],[[10071,10071],\"valid\",[],\"NV8\"],[[10072,10078],\"valid\",[],\"NV8\"],[[10079,10080],\"valid\",[],\"NV8\"],[[10081,10087],\"valid\",[],\"NV8\"],[[10088,10101],\"valid\",[],\"NV8\"],[[10102,10132],\"valid\",[],\"NV8\"],[[10133,10135],\"valid\",[],\"NV8\"],[[10136,10159],\"valid\",[],\"NV8\"],[[10160,10160],\"valid\",[],\"NV8\"],[[10161,10174],\"valid\",[],\"NV8\"],[[10175,10175],\"valid\",[],\"NV8\"],[[10176,10182],\"valid\",[],\"NV8\"],[[10183,10186],\"valid\",[],\"NV8\"],[[10187,10187],\"valid\",[],\"NV8\"],[[10188,10188],\"valid\",[],\"NV8\"],[[10189,10189],\"valid\",[],\"NV8\"],[[10190,10191],\"valid\",[],\"NV8\"],[[10192,10219],\"valid\",[],\"NV8\"],[[10220,10223],\"valid\",[],\"NV8\"],[[10224,10239],\"valid\",[],\"NV8\"],[[10240,10495],\"valid\",[],\"NV8\"],[[10496,10763],\"valid\",[],\"NV8\"],[[10764,10764],\"mapped\",[8747,8747,8747,8747]],[[10765,10867],\"valid\",[],\"NV8\"],[[10868,10868],\"disallowed_STD3_mapped\",[58,58,61]],[[10869,10869],\"disallowed_STD3_mapped\",[61,61]],[[10870,10870],\"disallowed_STD3_mapped\",[61,61,61]],[[10871,10971],\"valid\",[],\"NV8\"],[[10972,10972],\"mapped\",[10973,824]],[[10973,11007],\"valid\",[],\"NV8\"],[[11008,11021],\"valid\",[],\"NV8\"],[[11022,11027],\"valid\",[],\"NV8\"],[[11028,11034],\"valid\",[],\"NV8\"],[[11035,11039],\"valid\",[],\"NV8\"],[[11040,11043],\"valid\",[],\"NV8\"],[[11044,11084],\"valid\",[],\"NV8\"],[[11085,11087],\"valid\",[],\"NV8\"],[[11088,11092],\"valid\",[],\"NV8\"],[[11093,11097],\"valid\",[],\"NV8\"],[[11098,11123],\"valid\",[],\"NV8\"],[[11124,11125],\"disallowed\"],[[11126,11157],\"valid\",[],\"NV8\"],[[11158,11159],\"disallowed\"],[[11160,11193],\"valid\",[],\"NV8\"],[[11194,11196],\"disallowed\"],[[11197,11208],\"valid\",[],\"NV8\"],[[11209,11209],\"disallowed\"],[[11210,11217],\"valid\",[],\"NV8\"],[[11218,11243],\"disallowed\"],[[11244,11247],\"valid\",[],\"NV8\"],[[11248,11263],\"disallowed\"],[[11264,11264],\"mapped\",[11312]],[[11265,11265],\"mapped\",[11313]],[[11266,11266],\"mapped\",[11314]],[[11267,11267],\"mapped\",[11315]],[[11268,11268],\"mapped\",[11316]],[[11269,11269],\"mapped\",[11317]],[[11270,11270],\"mapped\",[11318]],[[11271,11271],\"mapped\",[11319]],[[11272,11272],\"mapped\",[11320]],[[11273,11273],\"mapped\",[11321]],[[11274,11274],\"mapped\",[11322]],[[11275,11275],\"mapped\",[11323]],[[11276,11276],\"mapped\",[11324]],[[11277,11277],\"mapped\",[11325]],[[11278,11278],\"mapped\",[11326]],[[11279,11279],\"mapped\",[11327]],[[11280,11280],\"mapped\",[11328]],[[11281,11281],\"mapped\",[11329]],[[11282,11282],\"mapped\",[11330]],[[11283,11283],\"mapped\",[11331]],[[11284,11284],\"mapped\",[11332]],[[11285,11285],\"mapped\",[11333]],[[11286,11286],\"mapped\",[11334]],[[11287,11287],\"mapped\",[11335]],[[11288,11288],\"mapped\",[11336]],[[11289,11289],\"mapped\",[11337]],[[11290,11290],\"mapped\",[11338]],[[11291,11291],\"mapped\",[11339]],[[11292,11292],\"mapped\",[11340]],[[11293,11293],\"mapped\",[11341]],[[11294,11294],\"mapped\",[11342]],[[11295,11295],\"mapped\",[11343]],[[11296,11296],\"mapped\",[11344]],[[11297,11297],\"mapped\",[11345]],[[11298,11298],\"mapped\",[11346]],[[11299,11299],\"mapped\",[11347]],[[11300,11300],\"mapped\",[11348]],[[11301,11301],\"mapped\",[11349]],[[11302,11302],\"mapped\",[11350]],[[11303,11303],\"mapped\",[11351]],[[11304,11304],\"mapped\",[11352]],[[11305,11305],\"mapped\",[11353]],[[11306,11306],\"mapped\",[11354]],[[11307,11307],\"mapped\",[11355]],[[11308,11308],\"mapped\",[11356]],[[11309,11309],\"mapped\",[11357]],[[11310,11310],\"mapped\",[11358]],[[11311,11311],\"disallowed\"],[[11312,11358],\"valid\"],[[11359,11359],\"disallowed\"],[[11360,11360],\"mapped\",[11361]],[[11361,11361],\"valid\"],[[11362,11362],\"mapped\",[619]],[[11363,11363],\"mapped\",[7549]],[[11364,11364],\"mapped\",[637]],[[11365,11366],\"valid\"],[[11367,11367],\"mapped\",[11368]],[[11368,11368],\"valid\"],[[11369,11369],\"mapped\",[11370]],[[11370,11370],\"valid\"],[[11371,11371],\"mapped\",[11372]],[[11372,11372],\"valid\"],[[11373,11373],\"mapped\",[593]],[[11374,11374],\"mapped\",[625]],[[11375,11375],\"mapped\",[592]],[[11376,11376],\"mapped\",[594]],[[11377,11377],\"valid\"],[[11378,11378],\"mapped\",[11379]],[[11379,11379],\"valid\"],[[11380,11380],\"valid\"],[[11381,11381],\"mapped\",[11382]],[[11382,11383],\"valid\"],[[11384,11387],\"valid\"],[[11388,11388],\"mapped\",[106]],[[11389,11389],\"mapped\",[118]],[[11390,11390],\"mapped\",[575]],[[11391,11391],\"mapped\",[576]],[[11392,11392],\"mapped\",[11393]],[[11393,11393],\"valid\"],[[11394,11394],\"mapped\",[11395]],[[11395,11395],\"valid\"],[[11396,11396],\"mapped\",[11397]],[[11397,11397],\"valid\"],[[11398,11398],\"mapped\",[11399]],[[11399,11399],\"valid\"],[[11400,11400],\"mapped\",[11401]],[[11401,11401],\"valid\"],[[11402,11402],\"mapped\",[11403]],[[11403,11403],\"valid\"],[[11404,11404],\"mapped\",[11405]],[[11405,11405],\"valid\"],[[11406,11406],\"mapped\",[11407]],[[11407,11407],\"valid\"],[[11408,11408],\"mapped\",[11409]],[[11409,11409],\"valid\"],[[11410,11410],\"mapped\",[11411]],[[11411,11411],\"valid\"],[[11412,11412],\"mapped\",[11413]],[[11413,11413],\"valid\"],[[11414,11414],\"mapped\",[11415]],[[11415,11415],\"valid\"],[[11416,11416],\"mapped\",[11417]],[[11417,11417],\"valid\"],[[11418,11418],\"mapped\",[11419]],[[11419,11419],\"valid\"],[[11420,11420],\"mapped\",[11421]],[[11421,11421],\"valid\"],[[11422,11422],\"mapped\",[11423]],[[11423,11423],\"valid\"],[[11424,11424],\"mapped\",[11425]],[[11425,11425],\"valid\"],[[11426,11426],\"mapped\",[11427]],[[11427,11427],\"valid\"],[[11428,11428],\"mapped\",[11429]],[[11429,11429],\"valid\"],[[11430,11430],\"mapped\",[11431]],[[11431,11431],\"valid\"],[[11432,11432],\"mapped\",[11433]],[[11433,11433],\"valid\"],[[11434,11434],\"mapped\",[11435]],[[11435,11435],\"valid\"],[[11436,11436],\"mapped\",[11437]],[[11437,11437],\"valid\"],[[11438,11438],\"mapped\",[11439]],[[11439,11439],\"valid\"],[[11440,11440],\"mapped\",[11441]],[[11441,11441],\"valid\"],[[11442,11442],\"mapped\",[11443]],[[11443,11443],\"valid\"],[[11444,11444],\"mapped\",[11445]],[[11445,11445],\"valid\"],[[11446,11446],\"mapped\",[11447]],[[11447,11447],\"valid\"],[[11448,11448],\"mapped\",[11449]],[[11449,11449],\"valid\"],[[11450,11450],\"mapped\",[11451]],[[11451,11451],\"valid\"],[[11452,11452],\"mapped\",[11453]],[[11453,11453],\"valid\"],[[11454,11454],\"mapped\",[11455]],[[11455,11455],\"valid\"],[[11456,11456],\"mapped\",[11457]],[[11457,11457],\"valid\"],[[11458,11458],\"mapped\",[11459]],[[11459,11459],\"valid\"],[[11460,11460],\"mapped\",[11461]],[[11461,11461],\"valid\"],[[11462,11462],\"mapped\",[11463]],[[11463,11463],\"valid\"],[[11464,11464],\"mapped\",[11465]],[[11465,11465],\"valid\"],[[11466,11466],\"mapped\",[11467]],[[11467,11467],\"valid\"],[[11468,11468],\"mapped\",[11469]],[[11469,11469],\"valid\"],[[11470,11470],\"mapped\",[11471]],[[11471,11471],\"valid\"],[[11472,11472],\"mapped\",[11473]],[[11473,11473],\"valid\"],[[11474,11474],\"mapped\",[11475]],[[11475,11475],\"valid\"],[[11476,11476],\"mapped\",[11477]],[[11477,11477],\"valid\"],[[11478,11478],\"mapped\",[11479]],[[11479,11479],\"valid\"],[[11480,11480],\"mapped\",[11481]],[[11481,11481],\"valid\"],[[11482,11482],\"mapped\",[11483]],[[11483,11483],\"valid\"],[[11484,11484],\"mapped\",[11485]],[[11485,11485],\"valid\"],[[11486,11486],\"mapped\",[11487]],[[11487,11487],\"valid\"],[[11488,11488],\"mapped\",[11489]],[[11489,11489],\"valid\"],[[11490,11490],\"mapped\",[11491]],[[11491,11492],\"valid\"],[[11493,11498],\"valid\",[],\"NV8\"],[[11499,11499],\"mapped\",[11500]],[[11500,11500],\"valid\"],[[11501,11501],\"mapped\",[11502]],[[11502,11505],\"valid\"],[[11506,11506],\"mapped\",[11507]],[[11507,11507],\"valid\"],[[11508,11512],\"disallowed\"],[[11513,11519],\"valid\",[],\"NV8\"],[[11520,11557],\"valid\"],[[11558,11558],\"disallowed\"],[[11559,11559],\"valid\"],[[11560,11564],\"disallowed\"],[[11565,11565],\"valid\"],[[11566,11567],\"disallowed\"],[[11568,11621],\"valid\"],[[11622,11623],\"valid\"],[[11624,11630],\"disallowed\"],[[11631,11631],\"mapped\",[11617]],[[11632,11632],\"valid\",[],\"NV8\"],[[11633,11646],\"disallowed\"],[[11647,11647],\"valid\"],[[11648,11670],\"valid\"],[[11671,11679],\"disallowed\"],[[11680,11686],\"valid\"],[[11687,11687],\"disallowed\"],[[11688,11694],\"valid\"],[[11695,11695],\"disallowed\"],[[11696,11702],\"valid\"],[[11703,11703],\"disallowed\"],[[11704,11710],\"valid\"],[[11711,11711],\"disallowed\"],[[11712,11718],\"valid\"],[[11719,11719],\"disallowed\"],[[11720,11726],\"valid\"],[[11727,11727],\"disallowed\"],[[11728,11734],\"valid\"],[[11735,11735],\"disallowed\"],[[11736,11742],\"valid\"],[[11743,11743],\"disallowed\"],[[11744,11775],\"valid\"],[[11776,11799],\"valid\",[],\"NV8\"],[[11800,11803],\"valid\",[],\"NV8\"],[[11804,11805],\"valid\",[],\"NV8\"],[[11806,11822],\"valid\",[],\"NV8\"],[[11823,11823],\"valid\"],[[11824,11824],\"valid\",[],\"NV8\"],[[11825,11825],\"valid\",[],\"NV8\"],[[11826,11835],\"valid\",[],\"NV8\"],[[11836,11842],\"valid\",[],\"NV8\"],[[11843,11903],\"disallowed\"],[[11904,11929],\"valid\",[],\"NV8\"],[[11930,11930],\"disallowed\"],[[11931,11934],\"valid\",[],\"NV8\"],[[11935,11935],\"mapped\",[27597]],[[11936,12018],\"valid\",[],\"NV8\"],[[12019,12019],\"mapped\",[40863]],[[12020,12031],\"disallowed\"],[[12032,12032],\"mapped\",[19968]],[[12033,12033],\"mapped\",[20008]],[[12034,12034],\"mapped\",[20022]],[[12035,12035],\"mapped\",[20031]],[[12036,12036],\"mapped\",[20057]],[[12037,12037],\"mapped\",[20101]],[[12038,12038],\"mapped\",[20108]],[[12039,12039],\"mapped\",[20128]],[[12040,12040],\"mapped\",[20154]],[[12041,12041],\"mapped\",[20799]],[[12042,12042],\"mapped\",[20837]],[[12043,12043],\"mapped\",[20843]],[[12044,12044],\"mapped\",[20866]],[[12045,12045],\"mapped\",[20886]],[[12046,12046],\"mapped\",[20907]],[[12047,12047],\"mapped\",[20960]],[[12048,12048],\"mapped\",[20981]],[[12049,12049],\"mapped\",[20992]],[[12050,12050],\"mapped\",[21147]],[[12051,12051],\"mapped\",[21241]],[[12052,12052],\"mapped\",[21269]],[[12053,12053],\"mapped\",[21274]],[[12054,12054],\"mapped\",[21304]],[[12055,12055],\"mapped\",[21313]],[[12056,12056],\"mapped\",[21340]],[[12057,12057],\"mapped\",[21353]],[[12058,12058],\"mapped\",[21378]],[[12059,12059],\"mapped\",[21430]],[[12060,12060],\"mapped\",[21448]],[[12061,12061],\"mapped\",[21475]],[[12062,12062],\"mapped\",[22231]],[[12063,12063],\"mapped\",[22303]],[[12064,12064],\"mapped\",[22763]],[[12065,12065],\"mapped\",[22786]],[[12066,12066],\"mapped\",[22794]],[[12067,12067],\"mapped\",[22805]],[[12068,12068],\"mapped\",[22823]],[[12069,12069],\"mapped\",[22899]],[[12070,12070],\"mapped\",[23376]],[[12071,12071],\"mapped\",[23424]],[[12072,12072],\"mapped\",[23544]],[[12073,12073],\"mapped\",[23567]],[[12074,12074],\"mapped\",[23586]],[[12075,12075],\"mapped\",[23608]],[[12076,12076],\"mapped\",[23662]],[[12077,12077],\"mapped\",[23665]],[[12078,12078],\"mapped\",[24027]],[[12079,12079],\"mapped\",[24037]],[[12080,12080],\"mapped\",[24049]],[[12081,12081],\"mapped\",[24062]],[[12082,12082],\"mapped\",[24178]],[[12083,12083],\"mapped\",[24186]],[[12084,12084],\"mapped\",[24191]],[[12085,12085],\"mapped\",[24308]],[[12086,12086],\"mapped\",[24318]],[[12087,12087],\"mapped\",[24331]],[[12088,12088],\"mapped\",[24339]],[[12089,12089],\"mapped\",[24400]],[[12090,12090],\"mapped\",[24417]],[[12091,12091],\"mapped\",[24435]],[[12092,12092],\"mapped\",[24515]],[[12093,12093],\"mapped\",[25096]],[[12094,12094],\"mapped\",[25142]],[[12095,12095],\"mapped\",[25163]],[[12096,12096],\"mapped\",[25903]],[[12097,12097],\"mapped\",[25908]],[[12098,12098],\"mapped\",[25991]],[[12099,12099],\"mapped\",[26007]],[[12100,12100],\"mapped\",[26020]],[[12101,12101],\"mapped\",[26041]],[[12102,12102],\"mapped\",[26080]],[[12103,12103],\"mapped\",[26085]],[[12104,12104],\"mapped\",[26352]],[[12105,12105],\"mapped\",[26376]],[[12106,12106],\"mapped\",[26408]],[[12107,12107],\"mapped\",[27424]],[[12108,12108],\"mapped\",[27490]],[[12109,12109],\"mapped\",[27513]],[[12110,12110],\"mapped\",[27571]],[[12111,12111],\"mapped\",[27595]],[[12112,12112],\"mapped\",[27604]],[[12113,12113],\"mapped\",[27611]],[[12114,12114],\"mapped\",[27663]],[[12115,12115],\"mapped\",[27668]],[[12116,12116],\"mapped\",[27700]],[[12117,12117],\"mapped\",[28779]],[[12118,12118],\"mapped\",[29226]],[[12119,12119],\"mapped\",[29238]],[[12120,12120],\"mapped\",[29243]],[[12121,12121],\"mapped\",[29247]],[[12122,12122],\"mapped\",[29255]],[[12123,12123],\"mapped\",[29273]],[[12124,12124],\"mapped\",[29275]],[[12125,12125],\"mapped\",[29356]],[[12126,12126],\"mapped\",[29572]],[[12127,12127],\"mapped\",[29577]],[[12128,12128],\"mapped\",[29916]],[[12129,12129],\"mapped\",[29926]],[[12130,12130],\"mapped\",[29976]],[[12131,12131],\"mapped\",[29983]],[[12132,12132],\"mapped\",[29992]],[[12133,12133],\"mapped\",[30000]],[[12134,12134],\"mapped\",[30091]],[[12135,12135],\"mapped\",[30098]],[[12136,12136],\"mapped\",[30326]],[[12137,12137],\"mapped\",[30333]],[[12138,12138],\"mapped\",[30382]],[[12139,12139],\"mapped\",[30399]],[[12140,12140],\"mapped\",[30446]],[[12141,12141],\"mapped\",[30683]],[[12142,12142],\"mapped\",[30690]],[[12143,12143],\"mapped\",[30707]],[[12144,12144],\"mapped\",[31034]],[[12145,12145],\"mapped\",[31160]],[[12146,12146],\"mapped\",[31166]],[[12147,12147],\"mapped\",[31348]],[[12148,12148],\"mapped\",[31435]],[[12149,12149],\"mapped\",[31481]],[[12150,12150],\"mapped\",[31859]],[[12151,12151],\"mapped\",[31992]],[[12152,12152],\"mapped\",[32566]],[[12153,12153],\"mapped\",[32593]],[[12154,12154],\"mapped\",[32650]],[[12155,12155],\"mapped\",[32701]],[[12156,12156],\"mapped\",[32769]],[[12157,12157],\"mapped\",[32780]],[[12158,12158],\"mapped\",[32786]],[[12159,12159],\"mapped\",[32819]],[[12160,12160],\"mapped\",[32895]],[[12161,12161],\"mapped\",[32905]],[[12162,12162],\"mapped\",[33251]],[[12163,12163],\"mapped\",[33258]],[[12164,12164],\"mapped\",[33267]],[[12165,12165],\"mapped\",[33276]],[[12166,12166],\"mapped\",[33292]],[[12167,12167],\"mapped\",[33307]],[[12168,12168],\"mapped\",[33311]],[[12169,12169],\"mapped\",[33390]],[[12170,12170],\"mapped\",[33394]],[[12171,12171],\"mapped\",[33400]],[[12172,12172],\"mapped\",[34381]],[[12173,12173],\"mapped\",[34411]],[[12174,12174],\"mapped\",[34880]],[[12175,12175],\"mapped\",[34892]],[[12176,12176],\"mapped\",[34915]],[[12177,12177],\"mapped\",[35198]],[[12178,12178],\"mapped\",[35211]],[[12179,12179],\"mapped\",[35282]],[[12180,12180],\"mapped\",[35328]],[[12181,12181],\"mapped\",[35895]],[[12182,12182],\"mapped\",[35910]],[[12183,12183],\"mapped\",[35925]],[[12184,12184],\"mapped\",[35960]],[[12185,12185],\"mapped\",[35997]],[[12186,12186],\"mapped\",[36196]],[[12187,12187],\"mapped\",[36208]],[[12188,12188],\"mapped\",[36275]],[[12189,12189],\"mapped\",[36523]],[[12190,12190],\"mapped\",[36554]],[[12191,12191],\"mapped\",[36763]],[[12192,12192],\"mapped\",[36784]],[[12193,12193],\"mapped\",[36789]],[[12194,12194],\"mapped\",[37009]],[[12195,12195],\"mapped\",[37193]],[[12196,12196],\"mapped\",[37318]],[[12197,12197],\"mapped\",[37324]],[[12198,12198],\"mapped\",[37329]],[[12199,12199],\"mapped\",[38263]],[[12200,12200],\"mapped\",[38272]],[[12201,12201],\"mapped\",[38428]],[[12202,12202],\"mapped\",[38582]],[[12203,12203],\"mapped\",[38585]],[[12204,12204],\"mapped\",[38632]],[[12205,12205],\"mapped\",[38737]],[[12206,12206],\"mapped\",[38750]],[[12207,12207],\"mapped\",[38754]],[[12208,12208],\"mapped\",[38761]],[[12209,12209],\"mapped\",[38859]],[[12210,12210],\"mapped\",[38893]],[[12211,12211],\"mapped\",[38899]],[[12212,12212],\"mapped\",[38913]],[[12213,12213],\"mapped\",[39080]],[[12214,12214],\"mapped\",[39131]],[[12215,12215],\"mapped\",[39135]],[[12216,12216],\"mapped\",[39318]],[[12217,12217],\"mapped\",[39321]],[[12218,12218],\"mapped\",[39340]],[[12219,12219],\"mapped\",[39592]],[[12220,12220],\"mapped\",[39640]],[[12221,12221],\"mapped\",[39647]],[[12222,12222],\"mapped\",[39717]],[[12223,12223],\"mapped\",[39727]],[[12224,12224],\"mapped\",[39730]],[[12225,12225],\"mapped\",[39740]],[[12226,12226],\"mapped\",[39770]],[[12227,12227],\"mapped\",[40165]],[[12228,12228],\"mapped\",[40565]],[[12229,12229],\"mapped\",[40575]],[[12230,12230],\"mapped\",[40613]],[[12231,12231],\"mapped\",[40635]],[[12232,12232],\"mapped\",[40643]],[[12233,12233],\"mapped\",[40653]],[[12234,12234],\"mapped\",[40657]],[[12235,12235],\"mapped\",[40697]],[[12236,12236],\"mapped\",[40701]],[[12237,12237],\"mapped\",[40718]],[[12238,12238],\"mapped\",[40723]],[[12239,12239],\"mapped\",[40736]],[[12240,12240],\"mapped\",[40763]],[[12241,12241],\"mapped\",[40778]],[[12242,12242],\"mapped\",[40786]],[[12243,12243],\"mapped\",[40845]],[[12244,12244],\"mapped\",[40860]],[[12245,12245],\"mapped\",[40864]],[[12246,12271],\"disallowed\"],[[12272,12283],\"disallowed\"],[[12284,12287],\"disallowed\"],[[12288,12288],\"disallowed_STD3_mapped\",[32]],[[12289,12289],\"valid\",[],\"NV8\"],[[12290,12290],\"mapped\",[46]],[[12291,12292],\"valid\",[],\"NV8\"],[[12293,12295],\"valid\"],[[12296,12329],\"valid\",[],\"NV8\"],[[12330,12333],\"valid\"],[[12334,12341],\"valid\",[],\"NV8\"],[[12342,12342],\"mapped\",[12306]],[[12343,12343],\"valid\",[],\"NV8\"],[[12344,12344],\"mapped\",[21313]],[[12345,12345],\"mapped\",[21316]],[[12346,12346],\"mapped\",[21317]],[[12347,12347],\"valid\",[],\"NV8\"],[[12348,12348],\"valid\"],[[12349,12349],\"valid\",[],\"NV8\"],[[12350,12350],\"valid\",[],\"NV8\"],[[12351,12351],\"valid\",[],\"NV8\"],[[12352,12352],\"disallowed\"],[[12353,12436],\"valid\"],[[12437,12438],\"valid\"],[[12439,12440],\"disallowed\"],[[12441,12442],\"valid\"],[[12443,12443],\"disallowed_STD3_mapped\",[32,12441]],[[12444,12444],\"disallowed_STD3_mapped\",[32,12442]],[[12445,12446],\"valid\"],[[12447,12447],\"mapped\",[12424,12426]],[[12448,12448],\"valid\",[],\"NV8\"],[[12449,12542],\"valid\"],[[12543,12543],\"mapped\",[12467,12488]],[[12544,12548],\"disallowed\"],[[12549,12588],\"valid\"],[[12589,12589],\"valid\"],[[12590,12592],\"disallowed\"],[[12593,12593],\"mapped\",[4352]],[[12594,12594],\"mapped\",[4353]],[[12595,12595],\"mapped\",[4522]],[[12596,12596],\"mapped\",[4354]],[[12597,12597],\"mapped\",[4524]],[[12598,12598],\"mapped\",[4525]],[[12599,12599],\"mapped\",[4355]],[[12600,12600],\"mapped\",[4356]],[[12601,12601],\"mapped\",[4357]],[[12602,12602],\"mapped\",[4528]],[[12603,12603],\"mapped\",[4529]],[[12604,12604],\"mapped\",[4530]],[[12605,12605],\"mapped\",[4531]],[[12606,12606],\"mapped\",[4532]],[[12607,12607],\"mapped\",[4533]],[[12608,12608],\"mapped\",[4378]],[[12609,12609],\"mapped\",[4358]],[[12610,12610],\"mapped\",[4359]],[[12611,12611],\"mapped\",[4360]],[[12612,12612],\"mapped\",[4385]],[[12613,12613],\"mapped\",[4361]],[[12614,12614],\"mapped\",[4362]],[[12615,12615],\"mapped\",[4363]],[[12616,12616],\"mapped\",[4364]],[[12617,12617],\"mapped\",[4365]],[[12618,12618],\"mapped\",[4366]],[[12619,12619],\"mapped\",[4367]],[[12620,12620],\"mapped\",[4368]],[[12621,12621],\"mapped\",[4369]],[[12622,12622],\"mapped\",[4370]],[[12623,12623],\"mapped\",[4449]],[[12624,12624],\"mapped\",[4450]],[[12625,12625],\"mapped\",[4451]],[[12626,12626],\"mapped\",[4452]],[[12627,12627],\"mapped\",[4453]],[[12628,12628],\"mapped\",[4454]],[[12629,12629],\"mapped\",[4455]],[[12630,12630],\"mapped\",[4456]],[[12631,12631],\"mapped\",[4457]],[[12632,12632],\"mapped\",[4458]],[[12633,12633],\"mapped\",[4459]],[[12634,12634],\"mapped\",[4460]],[[12635,12635],\"mapped\",[4461]],[[12636,12636],\"mapped\",[4462]],[[12637,12637],\"mapped\",[4463]],[[12638,12638],\"mapped\",[4464]],[[12639,12639],\"mapped\",[4465]],[[12640,12640],\"mapped\",[4466]],[[12641,12641],\"mapped\",[4467]],[[12642,12642],\"mapped\",[4468]],[[12643,12643],\"mapped\",[4469]],[[12644,12644],\"disallowed\"],[[12645,12645],\"mapped\",[4372]],[[12646,12646],\"mapped\",[4373]],[[12647,12647],\"mapped\",[4551]],[[12648,12648],\"mapped\",[4552]],[[12649,12649],\"mapped\",[4556]],[[12650,12650],\"mapped\",[4558]],[[12651,12651],\"mapped\",[4563]],[[12652,12652],\"mapped\",[4567]],[[12653,12653],\"mapped\",[4569]],[[12654,12654],\"mapped\",[4380]],[[12655,12655],\"mapped\",[4573]],[[12656,12656],\"mapped\",[4575]],[[12657,12657],\"mapped\",[4381]],[[12658,12658],\"mapped\",[4382]],[[12659,12659],\"mapped\",[4384]],[[12660,12660],\"mapped\",[4386]],[[12661,12661],\"mapped\",[4387]],[[12662,12662],\"mapped\",[4391]],[[12663,12663],\"mapped\",[4393]],[[12664,12664],\"mapped\",[4395]],[[12665,12665],\"mapped\",[4396]],[[12666,12666],\"mapped\",[4397]],[[12667,12667],\"mapped\",[4398]],[[12668,12668],\"mapped\",[4399]],[[12669,12669],\"mapped\",[4402]],[[12670,12670],\"mapped\",[4406]],[[12671,12671],\"mapped\",[4416]],[[12672,12672],\"mapped\",[4423]],[[12673,12673],\"mapped\",[4428]],[[12674,12674],\"mapped\",[4593]],[[12675,12675],\"mapped\",[4594]],[[12676,12676],\"mapped\",[4439]],[[12677,12677],\"mapped\",[4440]],[[12678,12678],\"mapped\",[4441]],[[12679,12679],\"mapped\",[4484]],[[12680,12680],\"mapped\",[4485]],[[12681,12681],\"mapped\",[4488]],[[12682,12682],\"mapped\",[4497]],[[12683,12683],\"mapped\",[4498]],[[12684,12684],\"mapped\",[4500]],[[12685,12685],\"mapped\",[4510]],[[12686,12686],\"mapped\",[4513]],[[12687,12687],\"disallowed\"],[[12688,12689],\"valid\",[],\"NV8\"],[[12690,12690],\"mapped\",[19968]],[[12691,12691],\"mapped\",[20108]],[[12692,12692],\"mapped\",[19977]],[[12693,12693],\"mapped\",[22235]],[[12694,12694],\"mapped\",[19978]],[[12695,12695],\"mapped\",[20013]],[[12696,12696],\"mapped\",[19979]],[[12697,12697],\"mapped\",[30002]],[[12698,12698],\"mapped\",[20057]],[[12699,12699],\"mapped\",[19993]],[[12700,12700],\"mapped\",[19969]],[[12701,12701],\"mapped\",[22825]],[[12702,12702],\"mapped\",[22320]],[[12703,12703],\"mapped\",[20154]],[[12704,12727],\"valid\"],[[12728,12730],\"valid\"],[[12731,12735],\"disallowed\"],[[12736,12751],\"valid\",[],\"NV8\"],[[12752,12771],\"valid\",[],\"NV8\"],[[12772,12783],\"disallowed\"],[[12784,12799],\"valid\"],[[12800,12800],\"disallowed_STD3_mapped\",[40,4352,41]],[[12801,12801],\"disallowed_STD3_mapped\",[40,4354,41]],[[12802,12802],\"disallowed_STD3_mapped\",[40,4355,41]],[[12803,12803],\"disallowed_STD3_mapped\",[40,4357,41]],[[12804,12804],\"disallowed_STD3_mapped\",[40,4358,41]],[[12805,12805],\"disallowed_STD3_mapped\",[40,4359,41]],[[12806,12806],\"disallowed_STD3_mapped\",[40,4361,41]],[[12807,12807],\"disallowed_STD3_mapped\",[40,4363,41]],[[12808,12808],\"disallowed_STD3_mapped\",[40,4364,41]],[[12809,12809],\"disallowed_STD3_mapped\",[40,4366,41]],[[12810,12810],\"disallowed_STD3_mapped\",[40,4367,41]],[[12811,12811],\"disallowed_STD3_mapped\",[40,4368,41]],[[12812,12812],\"disallowed_STD3_mapped\",[40,4369,41]],[[12813,12813],\"disallowed_STD3_mapped\",[40,4370,41]],[[12814,12814],\"disallowed_STD3_mapped\",[40,44032,41]],[[12815,12815],\"disallowed_STD3_mapped\",[40,45208,41]],[[12816,12816],\"disallowed_STD3_mapped\",[40,45796,41]],[[12817,12817],\"disallowed_STD3_mapped\",[40,46972,41]],[[12818,12818],\"disallowed_STD3_mapped\",[40,47560,41]],[[12819,12819],\"disallowed_STD3_mapped\",[40,48148,41]],[[12820,12820],\"disallowed_STD3_mapped\",[40,49324,41]],[[12821,12821],\"disallowed_STD3_mapped\",[40,50500,41]],[[12822,12822],\"disallowed_STD3_mapped\",[40,51088,41]],[[12823,12823],\"disallowed_STD3_mapped\",[40,52264,41]],[[12824,12824],\"disallowed_STD3_mapped\",[40,52852,41]],[[12825,12825],\"disallowed_STD3_mapped\",[40,53440,41]],[[12826,12826],\"disallowed_STD3_mapped\",[40,54028,41]],[[12827,12827],\"disallowed_STD3_mapped\",[40,54616,41]],[[12828,12828],\"disallowed_STD3_mapped\",[40,51452,41]],[[12829,12829],\"disallowed_STD3_mapped\",[40,50724,51204,41]],[[12830,12830],\"disallowed_STD3_mapped\",[40,50724,54980,41]],[[12831,12831],\"disallowed\"],[[12832,12832],\"disallowed_STD3_mapped\",[40,19968,41]],[[12833,12833],\"disallowed_STD3_mapped\",[40,20108,41]],[[12834,12834],\"disallowed_STD3_mapped\",[40,19977,41]],[[12835,12835],\"disallowed_STD3_mapped\",[40,22235,41]],[[12836,12836],\"disallowed_STD3_mapped\",[40,20116,41]],[[12837,12837],\"disallowed_STD3_mapped\",[40,20845,41]],[[12838,12838],\"disallowed_STD3_mapped\",[40,19971,41]],[[12839,12839],\"disallowed_STD3_mapped\",[40,20843,41]],[[12840,12840],\"disallowed_STD3_mapped\",[40,20061,41]],[[12841,12841],\"disallowed_STD3_mapped\",[40,21313,41]],[[12842,12842],\"disallowed_STD3_mapped\",[40,26376,41]],[[12843,12843],\"disallowed_STD3_mapped\",[40,28779,41]],[[12844,12844],\"disallowed_STD3_mapped\",[40,27700,41]],[[12845,12845],\"disallowed_STD3_mapped\",[40,26408,41]],[[12846,12846],\"disallowed_STD3_mapped\",[40,37329,41]],[[12847,12847],\"disallowed_STD3_mapped\",[40,22303,41]],[[12848,12848],\"disallowed_STD3_mapped\",[40,26085,41]],[[12849,12849],\"disallowed_STD3_mapped\",[40,26666,41]],[[12850,12850],\"disallowed_STD3_mapped\",[40,26377,41]],[[12851,12851],\"disallowed_STD3_mapped\",[40,31038,41]],[[12852,12852],\"disallowed_STD3_mapped\",[40,21517,41]],[[12853,12853],\"disallowed_STD3_mapped\",[40,29305,41]],[[12854,12854],\"disallowed_STD3_mapped\",[40,36001,41]],[[12855,12855],\"disallowed_STD3_mapped\",[40,31069,41]],[[12856,12856],\"disallowed_STD3_mapped\",[40,21172,41]],[[12857,12857],\"disallowed_STD3_mapped\",[40,20195,41]],[[12858,12858],\"disallowed_STD3_mapped\",[40,21628,41]],[[12859,12859],\"disallowed_STD3_mapped\",[40,23398,41]],[[12860,12860],\"disallowed_STD3_mapped\",[40,30435,41]],[[12861,12861],\"disallowed_STD3_mapped\",[40,20225,41]],[[12862,12862],\"disallowed_STD3_mapped\",[40,36039,41]],[[12863,12863],\"disallowed_STD3_mapped\",[40,21332,41]],[[12864,12864],\"disallowed_STD3_mapped\",[40,31085,41]],[[12865,12865],\"disallowed_STD3_mapped\",[40,20241,41]],[[12866,12866],\"disallowed_STD3_mapped\",[40,33258,41]],[[12867,12867],\"disallowed_STD3_mapped\",[40,33267,41]],[[12868,12868],\"mapped\",[21839]],[[12869,12869],\"mapped\",[24188]],[[12870,12870],\"mapped\",[25991]],[[12871,12871],\"mapped\",[31631]],[[12872,12879],\"valid\",[],\"NV8\"],[[12880,12880],\"mapped\",[112,116,101]],[[12881,12881],\"mapped\",[50,49]],[[12882,12882],\"mapped\",[50,50]],[[12883,12883],\"mapped\",[50,51]],[[12884,12884],\"mapped\",[50,52]],[[12885,12885],\"mapped\",[50,53]],[[12886,12886],\"mapped\",[50,54]],[[12887,12887],\"mapped\",[50,55]],[[12888,12888],\"mapped\",[50,56]],[[12889,12889],\"mapped\",[50,57]],[[12890,12890],\"mapped\",[51,48]],[[12891,12891],\"mapped\",[51,49]],[[12892,12892],\"mapped\",[51,50]],[[12893,12893],\"mapped\",[51,51]],[[12894,12894],\"mapped\",[51,52]],[[12895,12895],\"mapped\",[51,53]],[[12896,12896],\"mapped\",[4352]],[[12897,12897],\"mapped\",[4354]],[[12898,12898],\"mapped\",[4355]],[[12899,12899],\"mapped\",[4357]],[[12900,12900],\"mapped\",[4358]],[[12901,12901],\"mapped\",[4359]],[[12902,12902],\"mapped\",[4361]],[[12903,12903],\"mapped\",[4363]],[[12904,12904],\"mapped\",[4364]],[[12905,12905],\"mapped\",[4366]],[[12906,12906],\"mapped\",[4367]],[[12907,12907],\"mapped\",[4368]],[[12908,12908],\"mapped\",[4369]],[[12909,12909],\"mapped\",[4370]],[[12910,12910],\"mapped\",[44032]],[[12911,12911],\"mapped\",[45208]],[[12912,12912],\"mapped\",[45796]],[[12913,12913],\"mapped\",[46972]],[[12914,12914],\"mapped\",[47560]],[[12915,12915],\"mapped\",[48148]],[[12916,12916],\"mapped\",[49324]],[[12917,12917],\"mapped\",[50500]],[[12918,12918],\"mapped\",[51088]],[[12919,12919],\"mapped\",[52264]],[[12920,12920],\"mapped\",[52852]],[[12921,12921],\"mapped\",[53440]],[[12922,12922],\"mapped\",[54028]],[[12923,12923],\"mapped\",[54616]],[[12924,12924],\"mapped\",[52280,44256]],[[12925,12925],\"mapped\",[51452,51032]],[[12926,12926],\"mapped\",[50864]],[[12927,12927],\"valid\",[],\"NV8\"],[[12928,12928],\"mapped\",[19968]],[[12929,12929],\"mapped\",[20108]],[[12930,12930],\"mapped\",[19977]],[[12931,12931],\"mapped\",[22235]],[[12932,12932],\"mapped\",[20116]],[[12933,12933],\"mapped\",[20845]],[[12934,12934],\"mapped\",[19971]],[[12935,12935],\"mapped\",[20843]],[[12936,12936],\"mapped\",[20061]],[[12937,12937],\"mapped\",[21313]],[[12938,12938],\"mapped\",[26376]],[[12939,12939],\"mapped\",[28779]],[[12940,12940],\"mapped\",[27700]],[[12941,12941],\"mapped\",[26408]],[[12942,12942],\"mapped\",[37329]],[[12943,12943],\"mapped\",[22303]],[[12944,12944],\"mapped\",[26085]],[[12945,12945],\"mapped\",[26666]],[[12946,12946],\"mapped\",[26377]],[[12947,12947],\"mapped\",[31038]],[[12948,12948],\"mapped\",[21517]],[[12949,12949],\"mapped\",[29305]],[[12950,12950],\"mapped\",[36001]],[[12951,12951],\"mapped\",[31069]],[[12952,12952],\"mapped\",[21172]],[[12953,12953],\"mapped\",[31192]],[[12954,12954],\"mapped\",[30007]],[[12955,12955],\"mapped\",[22899]],[[12956,12956],\"mapped\",[36969]],[[12957,12957],\"mapped\",[20778]],[[12958,12958],\"mapped\",[21360]],[[12959,12959],\"mapped\",[27880]],[[12960,12960],\"mapped\",[38917]],[[12961,12961],\"mapped\",[20241]],[[12962,12962],\"mapped\",[20889]],[[12963,12963],\"mapped\",[27491]],[[12964,12964],\"mapped\",[19978]],[[12965,12965],\"mapped\",[20013]],[[12966,12966],\"mapped\",[19979]],[[12967,12967],\"mapped\",[24038]],[[12968,12968],\"mapped\",[21491]],[[12969,12969],\"mapped\",[21307]],[[12970,12970],\"mapped\",[23447]],[[12971,12971],\"mapped\",[23398]],[[12972,12972],\"mapped\",[30435]],[[12973,12973],\"mapped\",[20225]],[[12974,12974],\"mapped\",[36039]],[[12975,12975],\"mapped\",[21332]],[[12976,12976],\"mapped\",[22812]],[[12977,12977],\"mapped\",[51,54]],[[12978,12978],\"mapped\",[51,55]],[[12979,12979],\"mapped\",[51,56]],[[12980,12980],\"mapped\",[51,57]],[[12981,12981],\"mapped\",[52,48]],[[12982,12982],\"mapped\",[52,49]],[[12983,12983],\"mapped\",[52,50]],[[12984,12984],\"mapped\",[52,51]],[[12985,12985],\"mapped\",[52,52]],[[12986,12986],\"mapped\",[52,53]],[[12987,12987],\"mapped\",[52,54]],[[12988,12988],\"mapped\",[52,55]],[[12989,12989],\"mapped\",[52,56]],[[12990,12990],\"mapped\",[52,57]],[[12991,12991],\"mapped\",[53,48]],[[12992,12992],\"mapped\",[49,26376]],[[12993,12993],\"mapped\",[50,26376]],[[12994,12994],\"mapped\",[51,26376]],[[12995,12995],\"mapped\",[52,26376]],[[12996,12996],\"mapped\",[53,26376]],[[12997,12997],\"mapped\",[54,26376]],[[12998,12998],\"mapped\",[55,26376]],[[12999,12999],\"mapped\",[56,26376]],[[13000,13000],\"mapped\",[57,26376]],[[13001,13001],\"mapped\",[49,48,26376]],[[13002,13002],\"mapped\",[49,49,26376]],[[13003,13003],\"mapped\",[49,50,26376]],[[13004,13004],\"mapped\",[104,103]],[[13005,13005],\"mapped\",[101,114,103]],[[13006,13006],\"mapped\",[101,118]],[[13007,13007],\"mapped\",[108,116,100]],[[13008,13008],\"mapped\",[12450]],[[13009,13009],\"mapped\",[12452]],[[13010,13010],\"mapped\",[12454]],[[13011,13011],\"mapped\",[12456]],[[13012,13012],\"mapped\",[12458]],[[13013,13013],\"mapped\",[12459]],[[13014,13014],\"mapped\",[12461]],[[13015,13015],\"mapped\",[12463]],[[13016,13016],\"mapped\",[12465]],[[13017,13017],\"mapped\",[12467]],[[13018,13018],\"mapped\",[12469]],[[13019,13019],\"mapped\",[12471]],[[13020,13020],\"mapped\",[12473]],[[13021,13021],\"mapped\",[12475]],[[13022,13022],\"mapped\",[12477]],[[13023,13023],\"mapped\",[12479]],[[13024,13024],\"mapped\",[12481]],[[13025,13025],\"mapped\",[12484]],[[13026,13026],\"mapped\",[12486]],[[13027,13027],\"mapped\",[12488]],[[13028,13028],\"mapped\",[12490]],[[13029,13029],\"mapped\",[12491]],[[13030,13030],\"mapped\",[12492]],[[13031,13031],\"mapped\",[12493]],[[13032,13032],\"mapped\",[12494]],[[13033,13033],\"mapped\",[12495]],[[13034,13034],\"mapped\",[12498]],[[13035,13035],\"mapped\",[12501]],[[13036,13036],\"mapped\",[12504]],[[13037,13037],\"mapped\",[12507]],[[13038,13038],\"mapped\",[12510]],[[13039,13039],\"mapped\",[12511]],[[13040,13040],\"mapped\",[12512]],[[13041,13041],\"mapped\",[12513]],[[13042,13042],\"mapped\",[12514]],[[13043,13043],\"mapped\",[12516]],[[13044,13044],\"mapped\",[12518]],[[13045,13045],\"mapped\",[12520]],[[13046,13046],\"mapped\",[12521]],[[13047,13047],\"mapped\",[12522]],[[13048,13048],\"mapped\",[12523]],[[13049,13049],\"mapped\",[12524]],[[13050,13050],\"mapped\",[12525]],[[13051,13051],\"mapped\",[12527]],[[13052,13052],\"mapped\",[12528]],[[13053,13053],\"mapped\",[12529]],[[13054,13054],\"mapped\",[12530]],[[13055,13055],\"disallowed\"],[[13056,13056],\"mapped\",[12450,12497,12540,12488]],[[13057,13057],\"mapped\",[12450,12523,12501,12449]],[[13058,13058],\"mapped\",[12450,12531,12506,12450]],[[13059,13059],\"mapped\",[12450,12540,12523]],[[13060,13060],\"mapped\",[12452,12491,12531,12464]],[[13061,13061],\"mapped\",[12452,12531,12481]],[[13062,13062],\"mapped\",[12454,12457,12531]],[[13063,13063],\"mapped\",[12456,12473,12463,12540,12489]],[[13064,13064],\"mapped\",[12456,12540,12459,12540]],[[13065,13065],\"mapped\",[12458,12531,12473]],[[13066,13066],\"mapped\",[12458,12540,12512]],[[13067,13067],\"mapped\",[12459,12452,12522]],[[13068,13068],\"mapped\",[12459,12521,12483,12488]],[[13069,13069],\"mapped\",[12459,12525,12522,12540]],[[13070,13070],\"mapped\",[12460,12525,12531]],[[13071,13071],\"mapped\",[12460,12531,12510]],[[13072,13072],\"mapped\",[12462,12460]],[[13073,13073],\"mapped\",[12462,12491,12540]],[[13074,13074],\"mapped\",[12461,12517,12522,12540]],[[13075,13075],\"mapped\",[12462,12523,12480,12540]],[[13076,13076],\"mapped\",[12461,12525]],[[13077,13077],\"mapped\",[12461,12525,12464,12521,12512]],[[13078,13078],\"mapped\",[12461,12525,12513,12540,12488,12523]],[[13079,13079],\"mapped\",[12461,12525,12527,12483,12488]],[[13080,13080],\"mapped\",[12464,12521,12512]],[[13081,13081],\"mapped\",[12464,12521,12512,12488,12531]],[[13082,13082],\"mapped\",[12463,12523,12476,12452,12525]],[[13083,13083],\"mapped\",[12463,12525,12540,12493]],[[13084,13084],\"mapped\",[12465,12540,12473]],[[13085,13085],\"mapped\",[12467,12523,12490]],[[13086,13086],\"mapped\",[12467,12540,12509]],[[13087,13087],\"mapped\",[12469,12452,12463,12523]],[[13088,13088],\"mapped\",[12469,12531,12481,12540,12512]],[[13089,13089],\"mapped\",[12471,12522,12531,12464]],[[13090,13090],\"mapped\",[12475,12531,12481]],[[13091,13091],\"mapped\",[12475,12531,12488]],[[13092,13092],\"mapped\",[12480,12540,12473]],[[13093,13093],\"mapped\",[12487,12471]],[[13094,13094],\"mapped\",[12489,12523]],[[13095,13095],\"mapped\",[12488,12531]],[[13096,13096],\"mapped\",[12490,12494]],[[13097,13097],\"mapped\",[12494,12483,12488]],[[13098,13098],\"mapped\",[12495,12452,12484]],[[13099,13099],\"mapped\",[12497,12540,12475,12531,12488]],[[13100,13100],\"mapped\",[12497,12540,12484]],[[13101,13101],\"mapped\",[12496,12540,12524,12523]],[[13102,13102],\"mapped\",[12500,12450,12473,12488,12523]],[[13103,13103],\"mapped\",[12500,12463,12523]],[[13104,13104],\"mapped\",[12500,12467]],[[13105,13105],\"mapped\",[12499,12523]],[[13106,13106],\"mapped\",[12501,12449,12521,12483,12489]],[[13107,13107],\"mapped\",[12501,12451,12540,12488]],[[13108,13108],\"mapped\",[12502,12483,12471,12455,12523]],[[13109,13109],\"mapped\",[12501,12521,12531]],[[13110,13110],\"mapped\",[12504,12463,12479,12540,12523]],[[13111,13111],\"mapped\",[12506,12477]],[[13112,13112],\"mapped\",[12506,12491,12498]],[[13113,13113],\"mapped\",[12504,12523,12484]],[[13114,13114],\"mapped\",[12506,12531,12473]],[[13115,13115],\"mapped\",[12506,12540,12472]],[[13116,13116],\"mapped\",[12505,12540,12479]],[[13117,13117],\"mapped\",[12509,12452,12531,12488]],[[13118,13118],\"mapped\",[12508,12523,12488]],[[13119,13119],\"mapped\",[12507,12531]],[[13120,13120],\"mapped\",[12509,12531,12489]],[[13121,13121],\"mapped\",[12507,12540,12523]],[[13122,13122],\"mapped\",[12507,12540,12531]],[[13123,13123],\"mapped\",[12510,12452,12463,12525]],[[13124,13124],\"mapped\",[12510,12452,12523]],[[13125,13125],\"mapped\",[12510,12483,12495]],[[13126,13126],\"mapped\",[12510,12523,12463]],[[13127,13127],\"mapped\",[12510,12531,12471,12519,12531]],[[13128,13128],\"mapped\",[12511,12463,12525,12531]],[[13129,13129],\"mapped\",[12511,12522]],[[13130,13130],\"mapped\",[12511,12522,12496,12540,12523]],[[13131,13131],\"mapped\",[12513,12460]],[[13132,13132],\"mapped\",[12513,12460,12488,12531]],[[13133,13133],\"mapped\",[12513,12540,12488,12523]],[[13134,13134],\"mapped\",[12516,12540,12489]],[[13135,13135],\"mapped\",[12516,12540,12523]],[[13136,13136],\"mapped\",[12518,12450,12531]],[[13137,13137],\"mapped\",[12522,12483,12488,12523]],[[13138,13138],\"mapped\",[12522,12521]],[[13139,13139],\"mapped\",[12523,12500,12540]],[[13140,13140],\"mapped\",[12523,12540,12502,12523]],[[13141,13141],\"mapped\",[12524,12512]],[[13142,13142],\"mapped\",[12524,12531,12488,12466,12531]],[[13143,13143],\"mapped\",[12527,12483,12488]],[[13144,13144],\"mapped\",[48,28857]],[[13145,13145],\"mapped\",[49,28857]],[[13146,13146],\"mapped\",[50,28857]],[[13147,13147],\"mapped\",[51,28857]],[[13148,13148],\"mapped\",[52,28857]],[[13149,13149],\"mapped\",[53,28857]],[[13150,13150],\"mapped\",[54,28857]],[[13151,13151],\"mapped\",[55,28857]],[[13152,13152],\"mapped\",[56,28857]],[[13153,13153],\"mapped\",[57,28857]],[[13154,13154],\"mapped\",[49,48,28857]],[[13155,13155],\"mapped\",[49,49,28857]],[[13156,13156],\"mapped\",[49,50,28857]],[[13157,13157],\"mapped\",[49,51,28857]],[[13158,13158],\"mapped\",[49,52,28857]],[[13159,13159],\"mapped\",[49,53,28857]],[[13160,13160],\"mapped\",[49,54,28857]],[[13161,13161],\"mapped\",[49,55,28857]],[[13162,13162],\"mapped\",[49,56,28857]],[[13163,13163],\"mapped\",[49,57,28857]],[[13164,13164],\"mapped\",[50,48,28857]],[[13165,13165],\"mapped\",[50,49,28857]],[[13166,13166],\"mapped\",[50,50,28857]],[[13167,13167],\"mapped\",[50,51,28857]],[[13168,13168],\"mapped\",[50,52,28857]],[[13169,13169],\"mapped\",[104,112,97]],[[13170,13170],\"mapped\",[100,97]],[[13171,13171],\"mapped\",[97,117]],[[13172,13172],\"mapped\",[98,97,114]],[[13173,13173],\"mapped\",[111,118]],[[13174,13174],\"mapped\",[112,99]],[[13175,13175],\"mapped\",[100,109]],[[13176,13176],\"mapped\",[100,109,50]],[[13177,13177],\"mapped\",[100,109,51]],[[13178,13178],\"mapped\",[105,117]],[[13179,13179],\"mapped\",[24179,25104]],[[13180,13180],\"mapped\",[26157,21644]],[[13181,13181],\"mapped\",[22823,27491]],[[13182,13182],\"mapped\",[26126,27835]],[[13183,13183],\"mapped\",[26666,24335,20250,31038]],[[13184,13184],\"mapped\",[112,97]],[[13185,13185],\"mapped\",[110,97]],[[13186,13186],\"mapped\",[956,97]],[[13187,13187],\"mapped\",[109,97]],[[13188,13188],\"mapped\",[107,97]],[[13189,13189],\"mapped\",[107,98]],[[13190,13190],\"mapped\",[109,98]],[[13191,13191],\"mapped\",[103,98]],[[13192,13192],\"mapped\",[99,97,108]],[[13193,13193],\"mapped\",[107,99,97,108]],[[13194,13194],\"mapped\",[112,102]],[[13195,13195],\"mapped\",[110,102]],[[13196,13196],\"mapped\",[956,102]],[[13197,13197],\"mapped\",[956,103]],[[13198,13198],\"mapped\",[109,103]],[[13199,13199],\"mapped\",[107,103]],[[13200,13200],\"mapped\",[104,122]],[[13201,13201],\"mapped\",[107,104,122]],[[13202,13202],\"mapped\",[109,104,122]],[[13203,13203],\"mapped\",[103,104,122]],[[13204,13204],\"mapped\",[116,104,122]],[[13205,13205],\"mapped\",[956,108]],[[13206,13206],\"mapped\",[109,108]],[[13207,13207],\"mapped\",[100,108]],[[13208,13208],\"mapped\",[107,108]],[[13209,13209],\"mapped\",[102,109]],[[13210,13210],\"mapped\",[110,109]],[[13211,13211],\"mapped\",[956,109]],[[13212,13212],\"mapped\",[109,109]],[[13213,13213],\"mapped\",[99,109]],[[13214,13214],\"mapped\",[107,109]],[[13215,13215],\"mapped\",[109,109,50]],[[13216,13216],\"mapped\",[99,109,50]],[[13217,13217],\"mapped\",[109,50]],[[13218,13218],\"mapped\",[107,109,50]],[[13219,13219],\"mapped\",[109,109,51]],[[13220,13220],\"mapped\",[99,109,51]],[[13221,13221],\"mapped\",[109,51]],[[13222,13222],\"mapped\",[107,109,51]],[[13223,13223],\"mapped\",[109,8725,115]],[[13224,13224],\"mapped\",[109,8725,115,50]],[[13225,13225],\"mapped\",[112,97]],[[13226,13226],\"mapped\",[107,112,97]],[[13227,13227],\"mapped\",[109,112,97]],[[13228,13228],\"mapped\",[103,112,97]],[[13229,13229],\"mapped\",[114,97,100]],[[13230,13230],\"mapped\",[114,97,100,8725,115]],[[13231,13231],\"mapped\",[114,97,100,8725,115,50]],[[13232,13232],\"mapped\",[112,115]],[[13233,13233],\"mapped\",[110,115]],[[13234,13234],\"mapped\",[956,115]],[[13235,13235],\"mapped\",[109,115]],[[13236,13236],\"mapped\",[112,118]],[[13237,13237],\"mapped\",[110,118]],[[13238,13238],\"mapped\",[956,118]],[[13239,13239],\"mapped\",[109,118]],[[13240,13240],\"mapped\",[107,118]],[[13241,13241],\"mapped\",[109,118]],[[13242,13242],\"mapped\",[112,119]],[[13243,13243],\"mapped\",[110,119]],[[13244,13244],\"mapped\",[956,119]],[[13245,13245],\"mapped\",[109,119]],[[13246,13246],\"mapped\",[107,119]],[[13247,13247],\"mapped\",[109,119]],[[13248,13248],\"mapped\",[107,969]],[[13249,13249],\"mapped\",[109,969]],[[13250,13250],\"disallowed\"],[[13251,13251],\"mapped\",[98,113]],[[13252,13252],\"mapped\",[99,99]],[[13253,13253],\"mapped\",[99,100]],[[13254,13254],\"mapped\",[99,8725,107,103]],[[13255,13255],\"disallowed\"],[[13256,13256],\"mapped\",[100,98]],[[13257,13257],\"mapped\",[103,121]],[[13258,13258],\"mapped\",[104,97]],[[13259,13259],\"mapped\",[104,112]],[[13260,13260],\"mapped\",[105,110]],[[13261,13261],\"mapped\",[107,107]],[[13262,13262],\"mapped\",[107,109]],[[13263,13263],\"mapped\",[107,116]],[[13264,13264],\"mapped\",[108,109]],[[13265,13265],\"mapped\",[108,110]],[[13266,13266],\"mapped\",[108,111,103]],[[13267,13267],\"mapped\",[108,120]],[[13268,13268],\"mapped\",[109,98]],[[13269,13269],\"mapped\",[109,105,108]],[[13270,13270],\"mapped\",[109,111,108]],[[13271,13271],\"mapped\",[112,104]],[[13272,13272],\"disallowed\"],[[13273,13273],\"mapped\",[112,112,109]],[[13274,13274],\"mapped\",[112,114]],[[13275,13275],\"mapped\",[115,114]],[[13276,13276],\"mapped\",[115,118]],[[13277,13277],\"mapped\",[119,98]],[[13278,13278],\"mapped\",[118,8725,109]],[[13279,13279],\"mapped\",[97,8725,109]],[[13280,13280],\"mapped\",[49,26085]],[[13281,13281],\"mapped\",[50,26085]],[[13282,13282],\"mapped\",[51,26085]],[[13283,13283],\"mapped\",[52,26085]],[[13284,13284],\"mapped\",[53,26085]],[[13285,13285],\"mapped\",[54,26085]],[[13286,13286],\"mapped\",[55,26085]],[[13287,13287],\"mapped\",[56,26085]],[[13288,13288],\"mapped\",[57,26085]],[[13289,13289],\"mapped\",[49,48,26085]],[[13290,13290],\"mapped\",[49,49,26085]],[[13291,13291],\"mapped\",[49,50,26085]],[[13292,13292],\"mapped\",[49,51,26085]],[[13293,13293],\"mapped\",[49,52,26085]],[[13294,13294],\"mapped\",[49,53,26085]],[[13295,13295],\"mapped\",[49,54,26085]],[[13296,13296],\"mapped\",[49,55,26085]],[[13297,13297],\"mapped\",[49,56,26085]],[[13298,13298],\"mapped\",[49,57,26085]],[[13299,13299],\"mapped\",[50,48,26085]],[[13300,13300],\"mapped\",[50,49,26085]],[[13301,13301],\"mapped\",[50,50,26085]],[[13302,13302],\"mapped\",[50,51,26085]],[[13303,13303],\"mapped\",[50,52,26085]],[[13304,13304],\"mapped\",[50,53,26085]],[[13305,13305],\"mapped\",[50,54,26085]],[[13306,13306],\"mapped\",[50,55,26085]],[[13307,13307],\"mapped\",[50,56,26085]],[[13308,13308],\"mapped\",[50,57,26085]],[[13309,13309],\"mapped\",[51,48,26085]],[[13310,13310],\"mapped\",[51,49,26085]],[[13311,13311],\"mapped\",[103,97,108]],[[13312,19893],\"valid\"],[[19894,19903],\"disallowed\"],[[19904,19967],\"valid\",[],\"NV8\"],[[19968,40869],\"valid\"],[[40870,40891],\"valid\"],[[40892,40899],\"valid\"],[[40900,40907],\"valid\"],[[40908,40908],\"valid\"],[[40909,40917],\"valid\"],[[40918,40959],\"disallowed\"],[[40960,42124],\"valid\"],[[42125,42127],\"disallowed\"],[[42128,42145],\"valid\",[],\"NV8\"],[[42146,42147],\"valid\",[],\"NV8\"],[[42148,42163],\"valid\",[],\"NV8\"],[[42164,42164],\"valid\",[],\"NV8\"],[[42165,42176],\"valid\",[],\"NV8\"],[[42177,42177],\"valid\",[],\"NV8\"],[[42178,42180],\"valid\",[],\"NV8\"],[[42181,42181],\"valid\",[],\"NV8\"],[[42182,42182],\"valid\",[],\"NV8\"],[[42183,42191],\"disallowed\"],[[42192,42237],\"valid\"],[[42238,42239],\"valid\",[],\"NV8\"],[[42240,42508],\"valid\"],[[42509,42511],\"valid\",[],\"NV8\"],[[42512,42539],\"valid\"],[[42540,42559],\"disallowed\"],[[42560,42560],\"mapped\",[42561]],[[42561,42561],\"valid\"],[[42562,42562],\"mapped\",[42563]],[[42563,42563],\"valid\"],[[42564,42564],\"mapped\",[42565]],[[42565,42565],\"valid\"],[[42566,42566],\"mapped\",[42567]],[[42567,42567],\"valid\"],[[42568,42568],\"mapped\",[42569]],[[42569,42569],\"valid\"],[[42570,42570],\"mapped\",[42571]],[[42571,42571],\"valid\"],[[42572,42572],\"mapped\",[42573]],[[42573,42573],\"valid\"],[[42574,42574],\"mapped\",[42575]],[[42575,42575],\"valid\"],[[42576,42576],\"mapped\",[42577]],[[42577,42577],\"valid\"],[[42578,42578],\"mapped\",[42579]],[[42579,42579],\"valid\"],[[42580,42580],\"mapped\",[42581]],[[42581,42581],\"valid\"],[[42582,42582],\"mapped\",[42583]],[[42583,42583],\"valid\"],[[42584,42584],\"mapped\",[42585]],[[42585,42585],\"valid\"],[[42586,42586],\"mapped\",[42587]],[[42587,42587],\"valid\"],[[42588,42588],\"mapped\",[42589]],[[42589,42589],\"valid\"],[[42590,42590],\"mapped\",[42591]],[[42591,42591],\"valid\"],[[42592,42592],\"mapped\",[42593]],[[42593,42593],\"valid\"],[[42594,42594],\"mapped\",[42595]],[[42595,42595],\"valid\"],[[42596,42596],\"mapped\",[42597]],[[42597,42597],\"valid\"],[[42598,42598],\"mapped\",[42599]],[[42599,42599],\"valid\"],[[42600,42600],\"mapped\",[42601]],[[42601,42601],\"valid\"],[[42602,42602],\"mapped\",[42603]],[[42603,42603],\"valid\"],[[42604,42604],\"mapped\",[42605]],[[42605,42607],\"valid\"],[[42608,42611],\"valid\",[],\"NV8\"],[[42612,42619],\"valid\"],[[42620,42621],\"valid\"],[[42622,42622],\"valid\",[],\"NV8\"],[[42623,42623],\"valid\"],[[42624,42624],\"mapped\",[42625]],[[42625,42625],\"valid\"],[[42626,42626],\"mapped\",[42627]],[[42627,42627],\"valid\"],[[42628,42628],\"mapped\",[42629]],[[42629,42629],\"valid\"],[[42630,42630],\"mapped\",[42631]],[[42631,42631],\"valid\"],[[42632,42632],\"mapped\",[42633]],[[42633,42633],\"valid\"],[[42634,42634],\"mapped\",[42635]],[[42635,42635],\"valid\"],[[42636,42636],\"mapped\",[42637]],[[42637,42637],\"valid\"],[[42638,42638],\"mapped\",[42639]],[[42639,42639],\"valid\"],[[42640,42640],\"mapped\",[42641]],[[42641,42641],\"valid\"],[[42642,42642],\"mapped\",[42643]],[[42643,42643],\"valid\"],[[42644,42644],\"mapped\",[42645]],[[42645,42645],\"valid\"],[[42646,42646],\"mapped\",[42647]],[[42647,42647],\"valid\"],[[42648,42648],\"mapped\",[42649]],[[42649,42649],\"valid\"],[[42650,42650],\"mapped\",[42651]],[[42651,42651],\"valid\"],[[42652,42652],\"mapped\",[1098]],[[42653,42653],\"mapped\",[1100]],[[42654,42654],\"valid\"],[[42655,42655],\"valid\"],[[42656,42725],\"valid\"],[[42726,42735],\"valid\",[],\"NV8\"],[[42736,42737],\"valid\"],[[42738,42743],\"valid\",[],\"NV8\"],[[42744,42751],\"disallowed\"],[[42752,42774],\"valid\",[],\"NV8\"],[[42775,42778],\"valid\"],[[42779,42783],\"valid\"],[[42784,42785],\"valid\",[],\"NV8\"],[[42786,42786],\"mapped\",[42787]],[[42787,42787],\"valid\"],[[42788,42788],\"mapped\",[42789]],[[42789,42789],\"valid\"],[[42790,42790],\"mapped\",[42791]],[[42791,42791],\"valid\"],[[42792,42792],\"mapped\",[42793]],[[42793,42793],\"valid\"],[[42794,42794],\"mapped\",[42795]],[[42795,42795],\"valid\"],[[42796,42796],\"mapped\",[42797]],[[42797,42797],\"valid\"],[[42798,42798],\"mapped\",[42799]],[[42799,42801],\"valid\"],[[42802,42802],\"mapped\",[42803]],[[42803,42803],\"valid\"],[[42804,42804],\"mapped\",[42805]],[[42805,42805],\"valid\"],[[42806,42806],\"mapped\",[42807]],[[42807,42807],\"valid\"],[[42808,42808],\"mapped\",[42809]],[[42809,42809],\"valid\"],[[42810,42810],\"mapped\",[42811]],[[42811,42811],\"valid\"],[[42812,42812],\"mapped\",[42813]],[[42813,42813],\"valid\"],[[42814,42814],\"mapped\",[42815]],[[42815,42815],\"valid\"],[[42816,42816],\"mapped\",[42817]],[[42817,42817],\"valid\"],[[42818,42818],\"mapped\",[42819]],[[42819,42819],\"valid\"],[[42820,42820],\"mapped\",[42821]],[[42821,42821],\"valid\"],[[42822,42822],\"mapped\",[42823]],[[42823,42823],\"valid\"],[[42824,42824],\"mapped\",[42825]],[[42825,42825],\"valid\"],[[42826,42826],\"mapped\",[42827]],[[42827,42827],\"valid\"],[[42828,42828],\"mapped\",[42829]],[[42829,42829],\"valid\"],[[42830,42830],\"mapped\",[42831]],[[42831,42831],\"valid\"],[[42832,42832],\"mapped\",[42833]],[[42833,42833],\"valid\"],[[42834,42834],\"mapped\",[42835]],[[42835,42835],\"valid\"],[[42836,42836],\"mapped\",[42837]],[[42837,42837],\"valid\"],[[42838,42838],\"mapped\",[42839]],[[42839,42839],\"valid\"],[[42840,42840],\"mapped\",[42841]],[[42841,42841],\"valid\"],[[42842,42842],\"mapped\",[42843]],[[42843,42843],\"valid\"],[[42844,42844],\"mapped\",[42845]],[[42845,42845],\"valid\"],[[42846,42846],\"mapped\",[42847]],[[42847,42847],\"valid\"],[[42848,42848],\"mapped\",[42849]],[[42849,42849],\"valid\"],[[42850,42850],\"mapped\",[42851]],[[42851,42851],\"valid\"],[[42852,42852],\"mapped\",[42853]],[[42853,42853],\"valid\"],[[42854,42854],\"mapped\",[42855]],[[42855,42855],\"valid\"],[[42856,42856],\"mapped\",[42857]],[[42857,42857],\"valid\"],[[42858,42858],\"mapped\",[42859]],[[42859,42859],\"valid\"],[[42860,42860],\"mapped\",[42861]],[[42861,42861],\"valid\"],[[42862,42862],\"mapped\",[42863]],[[42863,42863],\"valid\"],[[42864,42864],\"mapped\",[42863]],[[42865,42872],\"valid\"],[[42873,42873],\"mapped\",[42874]],[[42874,42874],\"valid\"],[[42875,42875],\"mapped\",[42876]],[[42876,42876],\"valid\"],[[42877,42877],\"mapped\",[7545]],[[42878,42878],\"mapped\",[42879]],[[42879,42879],\"valid\"],[[42880,42880],\"mapped\",[42881]],[[42881,42881],\"valid\"],[[42882,42882],\"mapped\",[42883]],[[42883,42883],\"valid\"],[[42884,42884],\"mapped\",[42885]],[[42885,42885],\"valid\"],[[42886,42886],\"mapped\",[42887]],[[42887,42888],\"valid\"],[[42889,42890],\"valid\",[],\"NV8\"],[[42891,42891],\"mapped\",[42892]],[[42892,42892],\"valid\"],[[42893,42893],\"mapped\",[613]],[[42894,42894],\"valid\"],[[42895,42895],\"valid\"],[[42896,42896],\"mapped\",[42897]],[[42897,42897],\"valid\"],[[42898,42898],\"mapped\",[42899]],[[42899,42899],\"valid\"],[[42900,42901],\"valid\"],[[42902,42902],\"mapped\",[42903]],[[42903,42903],\"valid\"],[[42904,42904],\"mapped\",[42905]],[[42905,42905],\"valid\"],[[42906,42906],\"mapped\",[42907]],[[42907,42907],\"valid\"],[[42908,42908],\"mapped\",[42909]],[[42909,42909],\"valid\"],[[42910,42910],\"mapped\",[42911]],[[42911,42911],\"valid\"],[[42912,42912],\"mapped\",[42913]],[[42913,42913],\"valid\"],[[42914,42914],\"mapped\",[42915]],[[42915,42915],\"valid\"],[[42916,42916],\"mapped\",[42917]],[[42917,42917],\"valid\"],[[42918,42918],\"mapped\",[42919]],[[42919,42919],\"valid\"],[[42920,42920],\"mapped\",[42921]],[[42921,42921],\"valid\"],[[42922,42922],\"mapped\",[614]],[[42923,42923],\"mapped\",[604]],[[42924,42924],\"mapped\",[609]],[[42925,42925],\"mapped\",[620]],[[42926,42927],\"disallowed\"],[[42928,42928],\"mapped\",[670]],[[42929,42929],\"mapped\",[647]],[[42930,42930],\"mapped\",[669]],[[42931,42931],\"mapped\",[43859]],[[42932,42932],\"mapped\",[42933]],[[42933,42933],\"valid\"],[[42934,42934],\"mapped\",[42935]],[[42935,42935],\"valid\"],[[42936,42998],\"disallowed\"],[[42999,42999],\"valid\"],[[43000,43000],\"mapped\",[295]],[[43001,43001],\"mapped\",[339]],[[43002,43002],\"valid\"],[[43003,43007],\"valid\"],[[43008,43047],\"valid\"],[[43048,43051],\"valid\",[],\"NV8\"],[[43052,43055],\"disallowed\"],[[43056,43065],\"valid\",[],\"NV8\"],[[43066,43071],\"disallowed\"],[[43072,43123],\"valid\"],[[43124,43127],\"valid\",[],\"NV8\"],[[43128,43135],\"disallowed\"],[[43136,43204],\"valid\"],[[43205,43213],\"disallowed\"],[[43214,43215],\"valid\",[],\"NV8\"],[[43216,43225],\"valid\"],[[43226,43231],\"disallowed\"],[[43232,43255],\"valid\"],[[43256,43258],\"valid\",[],\"NV8\"],[[43259,43259],\"valid\"],[[43260,43260],\"valid\",[],\"NV8\"],[[43261,43261],\"valid\"],[[43262,43263],\"disallowed\"],[[43264,43309],\"valid\"],[[43310,43311],\"valid\",[],\"NV8\"],[[43312,43347],\"valid\"],[[43348,43358],\"disallowed\"],[[43359,43359],\"valid\",[],\"NV8\"],[[43360,43388],\"valid\",[],\"NV8\"],[[43389,43391],\"disallowed\"],[[43392,43456],\"valid\"],[[43457,43469],\"valid\",[],\"NV8\"],[[43470,43470],\"disallowed\"],[[43471,43481],\"valid\"],[[43482,43485],\"disallowed\"],[[43486,43487],\"valid\",[],\"NV8\"],[[43488,43518],\"valid\"],[[43519,43519],\"disallowed\"],[[43520,43574],\"valid\"],[[43575,43583],\"disallowed\"],[[43584,43597],\"valid\"],[[43598,43599],\"disallowed\"],[[43600,43609],\"valid\"],[[43610,43611],\"disallowed\"],[[43612,43615],\"valid\",[],\"NV8\"],[[43616,43638],\"valid\"],[[43639,43641],\"valid\",[],\"NV8\"],[[43642,43643],\"valid\"],[[43644,43647],\"valid\"],[[43648,43714],\"valid\"],[[43715,43738],\"disallowed\"],[[43739,43741],\"valid\"],[[43742,43743],\"valid\",[],\"NV8\"],[[43744,43759],\"valid\"],[[43760,43761],\"valid\",[],\"NV8\"],[[43762,43766],\"valid\"],[[43767,43776],\"disallowed\"],[[43777,43782],\"valid\"],[[43783,43784],\"disallowed\"],[[43785,43790],\"valid\"],[[43791,43792],\"disallowed\"],[[43793,43798],\"valid\"],[[43799,43807],\"disallowed\"],[[43808,43814],\"valid\"],[[43815,43815],\"disallowed\"],[[43816,43822],\"valid\"],[[43823,43823],\"disallowed\"],[[43824,43866],\"valid\"],[[43867,43867],\"valid\",[],\"NV8\"],[[43868,43868],\"mapped\",[42791]],[[43869,43869],\"mapped\",[43831]],[[43870,43870],\"mapped\",[619]],[[43871,43871],\"mapped\",[43858]],[[43872,43875],\"valid\"],[[43876,43877],\"valid\"],[[43878,43887],\"disallowed\"],[[43888,43888],\"mapped\",[5024]],[[43889,43889],\"mapped\",[5025]],[[43890,43890],\"mapped\",[5026]],[[43891,43891],\"mapped\",[5027]],[[43892,43892],\"mapped\",[5028]],[[43893,43893],\"mapped\",[5029]],[[43894,43894],\"mapped\",[5030]],[[43895,43895],\"mapped\",[5031]],[[43896,43896],\"mapped\",[5032]],[[43897,43897],\"mapped\",[5033]],[[43898,43898],\"mapped\",[5034]],[[43899,43899],\"mapped\",[5035]],[[43900,43900],\"mapped\",[5036]],[[43901,43901],\"mapped\",[5037]],[[43902,43902],\"mapped\",[5038]],[[43903,43903],\"mapped\",[5039]],[[43904,43904],\"mapped\",[5040]],[[43905,43905],\"mapped\",[5041]],[[43906,43906],\"mapped\",[5042]],[[43907,43907],\"mapped\",[5043]],[[43908,43908],\"mapped\",[5044]],[[43909,43909],\"mapped\",[5045]],[[43910,43910],\"mapped\",[5046]],[[43911,43911],\"mapped\",[5047]],[[43912,43912],\"mapped\",[5048]],[[43913,43913],\"mapped\",[5049]],[[43914,43914],\"mapped\",[5050]],[[43915,43915],\"mapped\",[5051]],[[43916,43916],\"mapped\",[5052]],[[43917,43917],\"mapped\",[5053]],[[43918,43918],\"mapped\",[5054]],[[43919,43919],\"mapped\",[5055]],[[43920,43920],\"mapped\",[5056]],[[43921,43921],\"mapped\",[5057]],[[43922,43922],\"mapped\",[5058]],[[43923,43923],\"mapped\",[5059]],[[43924,43924],\"mapped\",[5060]],[[43925,43925],\"mapped\",[5061]],[[43926,43926],\"mapped\",[5062]],[[43927,43927],\"mapped\",[5063]],[[43928,43928],\"mapped\",[5064]],[[43929,43929],\"mapped\",[5065]],[[43930,43930],\"mapped\",[5066]],[[43931,43931],\"mapped\",[5067]],[[43932,43932],\"mapped\",[5068]],[[43933,43933],\"mapped\",[5069]],[[43934,43934],\"mapped\",[5070]],[[43935,43935],\"mapped\",[5071]],[[43936,43936],\"mapped\",[5072]],[[43937,43937],\"mapped\",[5073]],[[43938,43938],\"mapped\",[5074]],[[43939,43939],\"mapped\",[5075]],[[43940,43940],\"mapped\",[5076]],[[43941,43941],\"mapped\",[5077]],[[43942,43942],\"mapped\",[5078]],[[43943,43943],\"mapped\",[5079]],[[43944,43944],\"mapped\",[5080]],[[43945,43945],\"mapped\",[5081]],[[43946,43946],\"mapped\",[5082]],[[43947,43947],\"mapped\",[5083]],[[43948,43948],\"mapped\",[5084]],[[43949,43949],\"mapped\",[5085]],[[43950,43950],\"mapped\",[5086]],[[43951,43951],\"mapped\",[5087]],[[43952,43952],\"mapped\",[5088]],[[43953,43953],\"mapped\",[5089]],[[43954,43954],\"mapped\",[5090]],[[43955,43955],\"mapped\",[5091]],[[43956,43956],\"mapped\",[5092]],[[43957,43957],\"mapped\",[5093]],[[43958,43958],\"mapped\",[5094]],[[43959,43959],\"mapped\",[5095]],[[43960,43960],\"mapped\",[5096]],[[43961,43961],\"mapped\",[5097]],[[43962,43962],\"mapped\",[5098]],[[43963,43963],\"mapped\",[5099]],[[43964,43964],\"mapped\",[5100]],[[43965,43965],\"mapped\",[5101]],[[43966,43966],\"mapped\",[5102]],[[43967,43967],\"mapped\",[5103]],[[43968,44010],\"valid\"],[[44011,44011],\"valid\",[],\"NV8\"],[[44012,44013],\"valid\"],[[44014,44015],\"disallowed\"],[[44016,44025],\"valid\"],[[44026,44031],\"disallowed\"],[[44032,55203],\"valid\"],[[55204,55215],\"disallowed\"],[[55216,55238],\"valid\",[],\"NV8\"],[[55239,55242],\"disallowed\"],[[55243,55291],\"valid\",[],\"NV8\"],[[55292,55295],\"disallowed\"],[[55296,57343],\"disallowed\"],[[57344,63743],\"disallowed\"],[[63744,63744],\"mapped\",[35912]],[[63745,63745],\"mapped\",[26356]],[[63746,63746],\"mapped\",[36554]],[[63747,63747],\"mapped\",[36040]],[[63748,63748],\"mapped\",[28369]],[[63749,63749],\"mapped\",[20018]],[[63750,63750],\"mapped\",[21477]],[[63751,63752],\"mapped\",[40860]],[[63753,63753],\"mapped\",[22865]],[[63754,63754],\"mapped\",[37329]],[[63755,63755],\"mapped\",[21895]],[[63756,63756],\"mapped\",[22856]],[[63757,63757],\"mapped\",[25078]],[[63758,63758],\"mapped\",[30313]],[[63759,63759],\"mapped\",[32645]],[[63760,63760],\"mapped\",[34367]],[[63761,63761],\"mapped\",[34746]],[[63762,63762],\"mapped\",[35064]],[[63763,63763],\"mapped\",[37007]],[[63764,63764],\"mapped\",[27138]],[[63765,63765],\"mapped\",[27931]],[[63766,63766],\"mapped\",[28889]],[[63767,63767],\"mapped\",[29662]],[[63768,63768],\"mapped\",[33853]],[[63769,63769],\"mapped\",[37226]],[[63770,63770],\"mapped\",[39409]],[[63771,63771],\"mapped\",[20098]],[[63772,63772],\"mapped\",[21365]],[[63773,63773],\"mapped\",[27396]],[[63774,63774],\"mapped\",[29211]],[[63775,63775],\"mapped\",[34349]],[[63776,63776],\"mapped\",[40478]],[[63777,63777],\"mapped\",[23888]],[[63778,63778],\"mapped\",[28651]],[[63779,63779],\"mapped\",[34253]],[[63780,63780],\"mapped\",[35172]],[[63781,63781],\"mapped\",[25289]],[[63782,63782],\"mapped\",[33240]],[[63783,63783],\"mapped\",[34847]],[[63784,63784],\"mapped\",[24266]],[[63785,63785],\"mapped\",[26391]],[[63786,63786],\"mapped\",[28010]],[[63787,63787],\"mapped\",[29436]],[[63788,63788],\"mapped\",[37070]],[[63789,63789],\"mapped\",[20358]],[[63790,63790],\"mapped\",[20919]],[[63791,63791],\"mapped\",[21214]],[[63792,63792],\"mapped\",[25796]],[[63793,63793],\"mapped\",[27347]],[[63794,63794],\"mapped\",[29200]],[[63795,63795],\"mapped\",[30439]],[[63796,63796],\"mapped\",[32769]],[[63797,63797],\"mapped\",[34310]],[[63798,63798],\"mapped\",[34396]],[[63799,63799],\"mapped\",[36335]],[[63800,63800],\"mapped\",[38706]],[[63801,63801],\"mapped\",[39791]],[[63802,63802],\"mapped\",[40442]],[[63803,63803],\"mapped\",[30860]],[[63804,63804],\"mapped\",[31103]],[[63805,63805],\"mapped\",[32160]],[[63806,63806],\"mapped\",[33737]],[[63807,63807],\"mapped\",[37636]],[[63808,63808],\"mapped\",[40575]],[[63809,63809],\"mapped\",[35542]],[[63810,63810],\"mapped\",[22751]],[[63811,63811],\"mapped\",[24324]],[[63812,63812],\"mapped\",[31840]],[[63813,63813],\"mapped\",[32894]],[[63814,63814],\"mapped\",[29282]],[[63815,63815],\"mapped\",[30922]],[[63816,63816],\"mapped\",[36034]],[[63817,63817],\"mapped\",[38647]],[[63818,63818],\"mapped\",[22744]],[[63819,63819],\"mapped\",[23650]],[[63820,63820],\"mapped\",[27155]],[[63821,63821],\"mapped\",[28122]],[[63822,63822],\"mapped\",[28431]],[[63823,63823],\"mapped\",[32047]],[[63824,63824],\"mapped\",[32311]],[[63825,63825],\"mapped\",[38475]],[[63826,63826],\"mapped\",[21202]],[[63827,63827],\"mapped\",[32907]],[[63828,63828],\"mapped\",[20956]],[[63829,63829],\"mapped\",[20940]],[[63830,63830],\"mapped\",[31260]],[[63831,63831],\"mapped\",[32190]],[[63832,63832],\"mapped\",[33777]],[[63833,63833],\"mapped\",[38517]],[[63834,63834],\"mapped\",[35712]],[[63835,63835],\"mapped\",[25295]],[[63836,63836],\"mapped\",[27138]],[[63837,63837],\"mapped\",[35582]],[[63838,63838],\"mapped\",[20025]],[[63839,63839],\"mapped\",[23527]],[[63840,63840],\"mapped\",[24594]],[[63841,63841],\"mapped\",[29575]],[[63842,63842],\"mapped\",[30064]],[[63843,63843],\"mapped\",[21271]],[[63844,63844],\"mapped\",[30971]],[[63845,63845],\"mapped\",[20415]],[[63846,63846],\"mapped\",[24489]],[[63847,63847],\"mapped\",[19981]],[[63848,63848],\"mapped\",[27852]],[[63849,63849],\"mapped\",[25976]],[[63850,63850],\"mapped\",[32034]],[[63851,63851],\"mapped\",[21443]],[[63852,63852],\"mapped\",[22622]],[[63853,63853],\"mapped\",[30465]],[[63854,63854],\"mapped\",[33865]],[[63855,63855],\"mapped\",[35498]],[[63856,63856],\"mapped\",[27578]],[[63857,63857],\"mapped\",[36784]],[[63858,63858],\"mapped\",[27784]],[[63859,63859],\"mapped\",[25342]],[[63860,63860],\"mapped\",[33509]],[[63861,63861],\"mapped\",[25504]],[[63862,63862],\"mapped\",[30053]],[[63863,63863],\"mapped\",[20142]],[[63864,63864],\"mapped\",[20841]],[[63865,63865],\"mapped\",[20937]],[[63866,63866],\"mapped\",[26753]],[[63867,63867],\"mapped\",[31975]],[[63868,63868],\"mapped\",[33391]],[[63869,63869],\"mapped\",[35538]],[[63870,63870],\"mapped\",[37327]],[[63871,63871],\"mapped\",[21237]],[[63872,63872],\"mapped\",[21570]],[[63873,63873],\"mapped\",[22899]],[[63874,63874],\"mapped\",[24300]],[[63875,63875],\"mapped\",[26053]],[[63876,63876],\"mapped\",[28670]],[[63877,63877],\"mapped\",[31018]],[[63878,63878],\"mapped\",[38317]],[[63879,63879],\"mapped\",[39530]],[[63880,63880],\"mapped\",[40599]],[[63881,63881],\"mapped\",[40654]],[[63882,63882],\"mapped\",[21147]],[[63883,63883],\"mapped\",[26310]],[[63884,63884],\"mapped\",[27511]],[[63885,63885],\"mapped\",[36706]],[[63886,63886],\"mapped\",[24180]],[[63887,63887],\"mapped\",[24976]],[[63888,63888],\"mapped\",[25088]],[[63889,63889],\"mapped\",[25754]],[[63890,63890],\"mapped\",[28451]],[[63891,63891],\"mapped\",[29001]],[[63892,63892],\"mapped\",[29833]],[[63893,63893],\"mapped\",[31178]],[[63894,63894],\"mapped\",[32244]],[[63895,63895],\"mapped\",[32879]],[[63896,63896],\"mapped\",[36646]],[[63897,63897],\"mapped\",[34030]],[[63898,63898],\"mapped\",[36899]],[[63899,63899],\"mapped\",[37706]],[[63900,63900],\"mapped\",[21015]],[[63901,63901],\"mapped\",[21155]],[[63902,63902],\"mapped\",[21693]],[[63903,63903],\"mapped\",[28872]],[[63904,63904],\"mapped\",[35010]],[[63905,63905],\"mapped\",[35498]],[[63906,63906],\"mapped\",[24265]],[[63907,63907],\"mapped\",[24565]],[[63908,63908],\"mapped\",[25467]],[[63909,63909],\"mapped\",[27566]],[[63910,63910],\"mapped\",[31806]],[[63911,63911],\"mapped\",[29557]],[[63912,63912],\"mapped\",[20196]],[[63913,63913],\"mapped\",[22265]],[[63914,63914],\"mapped\",[23527]],[[63915,63915],\"mapped\",[23994]],[[63916,63916],\"mapped\",[24604]],[[63917,63917],\"mapped\",[29618]],[[63918,63918],\"mapped\",[29801]],[[63919,63919],\"mapped\",[32666]],[[63920,63920],\"mapped\",[32838]],[[63921,63921],\"mapped\",[37428]],[[63922,63922],\"mapped\",[38646]],[[63923,63923],\"mapped\",[38728]],[[63924,63924],\"mapped\",[38936]],[[63925,63925],\"mapped\",[20363]],[[63926,63926],\"mapped\",[31150]],[[63927,63927],\"mapped\",[37300]],[[63928,63928],\"mapped\",[38584]],[[63929,63929],\"mapped\",[24801]],[[63930,63930],\"mapped\",[20102]],[[63931,63931],\"mapped\",[20698]],[[63932,63932],\"mapped\",[23534]],[[63933,63933],\"mapped\",[23615]],[[63934,63934],\"mapped\",[26009]],[[63935,63935],\"mapped\",[27138]],[[63936,63936],\"mapped\",[29134]],[[63937,63937],\"mapped\",[30274]],[[63938,63938],\"mapped\",[34044]],[[63939,63939],\"mapped\",[36988]],[[63940,63940],\"mapped\",[40845]],[[63941,63941],\"mapped\",[26248]],[[63942,63942],\"mapped\",[38446]],[[63943,63943],\"mapped\",[21129]],[[63944,63944],\"mapped\",[26491]],[[63945,63945],\"mapped\",[26611]],[[63946,63946],\"mapped\",[27969]],[[63947,63947],\"mapped\",[28316]],[[63948,63948],\"mapped\",[29705]],[[63949,63949],\"mapped\",[30041]],[[63950,63950],\"mapped\",[30827]],[[63951,63951],\"mapped\",[32016]],[[63952,63952],\"mapped\",[39006]],[[63953,63953],\"mapped\",[20845]],[[63954,63954],\"mapped\",[25134]],[[63955,63955],\"mapped\",[38520]],[[63956,63956],\"mapped\",[20523]],[[63957,63957],\"mapped\",[23833]],[[63958,63958],\"mapped\",[28138]],[[63959,63959],\"mapped\",[36650]],[[63960,63960],\"mapped\",[24459]],[[63961,63961],\"mapped\",[24900]],[[63962,63962],\"mapped\",[26647]],[[63963,63963],\"mapped\",[29575]],[[63964,63964],\"mapped\",[38534]],[[63965,63965],\"mapped\",[21033]],[[63966,63966],\"mapped\",[21519]],[[63967,63967],\"mapped\",[23653]],[[63968,63968],\"mapped\",[26131]],[[63969,63969],\"mapped\",[26446]],[[63970,63970],\"mapped\",[26792]],[[63971,63971],\"mapped\",[27877]],[[63972,63972],\"mapped\",[29702]],[[63973,63973],\"mapped\",[30178]],[[63974,63974],\"mapped\",[32633]],[[63975,63975],\"mapped\",[35023]],[[63976,63976],\"mapped\",[35041]],[[63977,63977],\"mapped\",[37324]],[[63978,63978],\"mapped\",[38626]],[[63979,63979],\"mapped\",[21311]],[[63980,63980],\"mapped\",[28346]],[[63981,63981],\"mapped\",[21533]],[[63982,63982],\"mapped\",[29136]],[[63983,63983],\"mapped\",[29848]],[[63984,63984],\"mapped\",[34298]],[[63985,63985],\"mapped\",[38563]],[[63986,63986],\"mapped\",[40023]],[[63987,63987],\"mapped\",[40607]],[[63988,63988],\"mapped\",[26519]],[[63989,63989],\"mapped\",[28107]],[[63990,63990],\"mapped\",[33256]],[[63991,63991],\"mapped\",[31435]],[[63992,63992],\"mapped\",[31520]],[[63993,63993],\"mapped\",[31890]],[[63994,63994],\"mapped\",[29376]],[[63995,63995],\"mapped\",[28825]],[[63996,63996],\"mapped\",[35672]],[[63997,63997],\"mapped\",[20160]],[[63998,63998],\"mapped\",[33590]],[[63999,63999],\"mapped\",[21050]],[[64000,64000],\"mapped\",[20999]],[[64001,64001],\"mapped\",[24230]],[[64002,64002],\"mapped\",[25299]],[[64003,64003],\"mapped\",[31958]],[[64004,64004],\"mapped\",[23429]],[[64005,64005],\"mapped\",[27934]],[[64006,64006],\"mapped\",[26292]],[[64007,64007],\"mapped\",[36667]],[[64008,64008],\"mapped\",[34892]],[[64009,64009],\"mapped\",[38477]],[[64010,64010],\"mapped\",[35211]],[[64011,64011],\"mapped\",[24275]],[[64012,64012],\"mapped\",[20800]],[[64013,64013],\"mapped\",[21952]],[[64014,64015],\"valid\"],[[64016,64016],\"mapped\",[22618]],[[64017,64017],\"valid\"],[[64018,64018],\"mapped\",[26228]],[[64019,64020],\"valid\"],[[64021,64021],\"mapped\",[20958]],[[64022,64022],\"mapped\",[29482]],[[64023,64023],\"mapped\",[30410]],[[64024,64024],\"mapped\",[31036]],[[64025,64025],\"mapped\",[31070]],[[64026,64026],\"mapped\",[31077]],[[64027,64027],\"mapped\",[31119]],[[64028,64028],\"mapped\",[38742]],[[64029,64029],\"mapped\",[31934]],[[64030,64030],\"mapped\",[32701]],[[64031,64031],\"valid\"],[[64032,64032],\"mapped\",[34322]],[[64033,64033],\"valid\"],[[64034,64034],\"mapped\",[35576]],[[64035,64036],\"valid\"],[[64037,64037],\"mapped\",[36920]],[[64038,64038],\"mapped\",[37117]],[[64039,64041],\"valid\"],[[64042,64042],\"mapped\",[39151]],[[64043,64043],\"mapped\",[39164]],[[64044,64044],\"mapped\",[39208]],[[64045,64045],\"mapped\",[40372]],[[64046,64046],\"mapped\",[37086]],[[64047,64047],\"mapped\",[38583]],[[64048,64048],\"mapped\",[20398]],[[64049,64049],\"mapped\",[20711]],[[64050,64050],\"mapped\",[20813]],[[64051,64051],\"mapped\",[21193]],[[64052,64052],\"mapped\",[21220]],[[64053,64053],\"mapped\",[21329]],[[64054,64054],\"mapped\",[21917]],[[64055,64055],\"mapped\",[22022]],[[64056,64056],\"mapped\",[22120]],[[64057,64057],\"mapped\",[22592]],[[64058,64058],\"mapped\",[22696]],[[64059,64059],\"mapped\",[23652]],[[64060,64060],\"mapped\",[23662]],[[64061,64061],\"mapped\",[24724]],[[64062,64062],\"mapped\",[24936]],[[64063,64063],\"mapped\",[24974]],[[64064,64064],\"mapped\",[25074]],[[64065,64065],\"mapped\",[25935]],[[64066,64066],\"mapped\",[26082]],[[64067,64067],\"mapped\",[26257]],[[64068,64068],\"mapped\",[26757]],[[64069,64069],\"mapped\",[28023]],[[64070,64070],\"mapped\",[28186]],[[64071,64071],\"mapped\",[28450]],[[64072,64072],\"mapped\",[29038]],[[64073,64073],\"mapped\",[29227]],[[64074,64074],\"mapped\",[29730]],[[64075,64075],\"mapped\",[30865]],[[64076,64076],\"mapped\",[31038]],[[64077,64077],\"mapped\",[31049]],[[64078,64078],\"mapped\",[31048]],[[64079,64079],\"mapped\",[31056]],[[64080,64080],\"mapped\",[31062]],[[64081,64081],\"mapped\",[31069]],[[64082,64082],\"mapped\",[31117]],[[64083,64083],\"mapped\",[31118]],[[64084,64084],\"mapped\",[31296]],[[64085,64085],\"mapped\",[31361]],[[64086,64086],\"mapped\",[31680]],[[64087,64087],\"mapped\",[32244]],[[64088,64088],\"mapped\",[32265]],[[64089,64089],\"mapped\",[32321]],[[64090,64090],\"mapped\",[32626]],[[64091,64091],\"mapped\",[32773]],[[64092,64092],\"mapped\",[33261]],[[64093,64094],\"mapped\",[33401]],[[64095,64095],\"mapped\",[33879]],[[64096,64096],\"mapped\",[35088]],[[64097,64097],\"mapped\",[35222]],[[64098,64098],\"mapped\",[35585]],[[64099,64099],\"mapped\",[35641]],[[64100,64100],\"mapped\",[36051]],[[64101,64101],\"mapped\",[36104]],[[64102,64102],\"mapped\",[36790]],[[64103,64103],\"mapped\",[36920]],[[64104,64104],\"mapped\",[38627]],[[64105,64105],\"mapped\",[38911]],[[64106,64106],\"mapped\",[38971]],[[64107,64107],\"mapped\",[24693]],[[64108,64108],\"mapped\",[148206]],[[64109,64109],\"mapped\",[33304]],[[64110,64111],\"disallowed\"],[[64112,64112],\"mapped\",[20006]],[[64113,64113],\"mapped\",[20917]],[[64114,64114],\"mapped\",[20840]],[[64115,64115],\"mapped\",[20352]],[[64116,64116],\"mapped\",[20805]],[[64117,64117],\"mapped\",[20864]],[[64118,64118],\"mapped\",[21191]],[[64119,64119],\"mapped\",[21242]],[[64120,64120],\"mapped\",[21917]],[[64121,64121],\"mapped\",[21845]],[[64122,64122],\"mapped\",[21913]],[[64123,64123],\"mapped\",[21986]],[[64124,64124],\"mapped\",[22618]],[[64125,64125],\"mapped\",[22707]],[[64126,64126],\"mapped\",[22852]],[[64127,64127],\"mapped\",[22868]],[[64128,64128],\"mapped\",[23138]],[[64129,64129],\"mapped\",[23336]],[[64130,64130],\"mapped\",[24274]],[[64131,64131],\"mapped\",[24281]],[[64132,64132],\"mapped\",[24425]],[[64133,64133],\"mapped\",[24493]],[[64134,64134],\"mapped\",[24792]],[[64135,64135],\"mapped\",[24910]],[[64136,64136],\"mapped\",[24840]],[[64137,64137],\"mapped\",[24974]],[[64138,64138],\"mapped\",[24928]],[[64139,64139],\"mapped\",[25074]],[[64140,64140],\"mapped\",[25140]],[[64141,64141],\"mapped\",[25540]],[[64142,64142],\"mapped\",[25628]],[[64143,64143],\"mapped\",[25682]],[[64144,64144],\"mapped\",[25942]],[[64145,64145],\"mapped\",[26228]],[[64146,64146],\"mapped\",[26391]],[[64147,64147],\"mapped\",[26395]],[[64148,64148],\"mapped\",[26454]],[[64149,64149],\"mapped\",[27513]],[[64150,64150],\"mapped\",[27578]],[[64151,64151],\"mapped\",[27969]],[[64152,64152],\"mapped\",[28379]],[[64153,64153],\"mapped\",[28363]],[[64154,64154],\"mapped\",[28450]],[[64155,64155],\"mapped\",[28702]],[[64156,64156],\"mapped\",[29038]],[[64157,64157],\"mapped\",[30631]],[[64158,64158],\"mapped\",[29237]],[[64159,64159],\"mapped\",[29359]],[[64160,64160],\"mapped\",[29482]],[[64161,64161],\"mapped\",[29809]],[[64162,64162],\"mapped\",[29958]],[[64163,64163],\"mapped\",[30011]],[[64164,64164],\"mapped\",[30237]],[[64165,64165],\"mapped\",[30239]],[[64166,64166],\"mapped\",[30410]],[[64167,64167],\"mapped\",[30427]],[[64168,64168],\"mapped\",[30452]],[[64169,64169],\"mapped\",[30538]],[[64170,64170],\"mapped\",[30528]],[[64171,64171],\"mapped\",[30924]],[[64172,64172],\"mapped\",[31409]],[[64173,64173],\"mapped\",[31680]],[[64174,64174],\"mapped\",[31867]],[[64175,64175],\"mapped\",[32091]],[[64176,64176],\"mapped\",[32244]],[[64177,64177],\"mapped\",[32574]],[[64178,64178],\"mapped\",[32773]],[[64179,64179],\"mapped\",[33618]],[[64180,64180],\"mapped\",[33775]],[[64181,64181],\"mapped\",[34681]],[[64182,64182],\"mapped\",[35137]],[[64183,64183],\"mapped\",[35206]],[[64184,64184],\"mapped\",[35222]],[[64185,64185],\"mapped\",[35519]],[[64186,64186],\"mapped\",[35576]],[[64187,64187],\"mapped\",[35531]],[[64188,64188],\"mapped\",[35585]],[[64189,64189],\"mapped\",[35582]],[[64190,64190],\"mapped\",[35565]],[[64191,64191],\"mapped\",[35641]],[[64192,64192],\"mapped\",[35722]],[[64193,64193],\"mapped\",[36104]],[[64194,64194],\"mapped\",[36664]],[[64195,64195],\"mapped\",[36978]],[[64196,64196],\"mapped\",[37273]],[[64197,64197],\"mapped\",[37494]],[[64198,64198],\"mapped\",[38524]],[[64199,64199],\"mapped\",[38627]],[[64200,64200],\"mapped\",[38742]],[[64201,64201],\"mapped\",[38875]],[[64202,64202],\"mapped\",[38911]],[[64203,64203],\"mapped\",[38923]],[[64204,64204],\"mapped\",[38971]],[[64205,64205],\"mapped\",[39698]],[[64206,64206],\"mapped\",[40860]],[[64207,64207],\"mapped\",[141386]],[[64208,64208],\"mapped\",[141380]],[[64209,64209],\"mapped\",[144341]],[[64210,64210],\"mapped\",[15261]],[[64211,64211],\"mapped\",[16408]],[[64212,64212],\"mapped\",[16441]],[[64213,64213],\"mapped\",[152137]],[[64214,64214],\"mapped\",[154832]],[[64215,64215],\"mapped\",[163539]],[[64216,64216],\"mapped\",[40771]],[[64217,64217],\"mapped\",[40846]],[[64218,64255],\"disallowed\"],[[64256,64256],\"mapped\",[102,102]],[[64257,64257],\"mapped\",[102,105]],[[64258,64258],\"mapped\",[102,108]],[[64259,64259],\"mapped\",[102,102,105]],[[64260,64260],\"mapped\",[102,102,108]],[[64261,64262],\"mapped\",[115,116]],[[64263,64274],\"disallowed\"],[[64275,64275],\"mapped\",[1396,1398]],[[64276,64276],\"mapped\",[1396,1381]],[[64277,64277],\"mapped\",[1396,1387]],[[64278,64278],\"mapped\",[1406,1398]],[[64279,64279],\"mapped\",[1396,1389]],[[64280,64284],\"disallowed\"],[[64285,64285],\"mapped\",[1497,1460]],[[64286,64286],\"valid\"],[[64287,64287],\"mapped\",[1522,1463]],[[64288,64288],\"mapped\",[1506]],[[64289,64289],\"mapped\",[1488]],[[64290,64290],\"mapped\",[1491]],[[64291,64291],\"mapped\",[1492]],[[64292,64292],\"mapped\",[1499]],[[64293,64293],\"mapped\",[1500]],[[64294,64294],\"mapped\",[1501]],[[64295,64295],\"mapped\",[1512]],[[64296,64296],\"mapped\",[1514]],[[64297,64297],\"disallowed_STD3_mapped\",[43]],[[64298,64298],\"mapped\",[1513,1473]],[[64299,64299],\"mapped\",[1513,1474]],[[64300,64300],\"mapped\",[1513,1468,1473]],[[64301,64301],\"mapped\",[1513,1468,1474]],[[64302,64302],\"mapped\",[1488,1463]],[[64303,64303],\"mapped\",[1488,1464]],[[64304,64304],\"mapped\",[1488,1468]],[[64305,64305],\"mapped\",[1489,1468]],[[64306,64306],\"mapped\",[1490,1468]],[[64307,64307],\"mapped\",[1491,1468]],[[64308,64308],\"mapped\",[1492,1468]],[[64309,64309],\"mapped\",[1493,1468]],[[64310,64310],\"mapped\",[1494,1468]],[[64311,64311],\"disallowed\"],[[64312,64312],\"mapped\",[1496,1468]],[[64313,64313],\"mapped\",[1497,1468]],[[64314,64314],\"mapped\",[1498,1468]],[[64315,64315],\"mapped\",[1499,1468]],[[64316,64316],\"mapped\",[1500,1468]],[[64317,64317],\"disallowed\"],[[64318,64318],\"mapped\",[1502,1468]],[[64319,64319],\"disallowed\"],[[64320,64320],\"mapped\",[1504,1468]],[[64321,64321],\"mapped\",[1505,1468]],[[64322,64322],\"disallowed\"],[[64323,64323],\"mapped\",[1507,1468]],[[64324,64324],\"mapped\",[1508,1468]],[[64325,64325],\"disallowed\"],[[64326,64326],\"mapped\",[1510,1468]],[[64327,64327],\"mapped\",[1511,1468]],[[64328,64328],\"mapped\",[1512,1468]],[[64329,64329],\"mapped\",[1513,1468]],[[64330,64330],\"mapped\",[1514,1468]],[[64331,64331],\"mapped\",[1493,1465]],[[64332,64332],\"mapped\",[1489,1471]],[[64333,64333],\"mapped\",[1499,1471]],[[64334,64334],\"mapped\",[1508,1471]],[[64335,64335],\"mapped\",[1488,1500]],[[64336,64337],\"mapped\",[1649]],[[64338,64341],\"mapped\",[1659]],[[64342,64345],\"mapped\",[1662]],[[64346,64349],\"mapped\",[1664]],[[64350,64353],\"mapped\",[1658]],[[64354,64357],\"mapped\",[1663]],[[64358,64361],\"mapped\",[1657]],[[64362,64365],\"mapped\",[1700]],[[64366,64369],\"mapped\",[1702]],[[64370,64373],\"mapped\",[1668]],[[64374,64377],\"mapped\",[1667]],[[64378,64381],\"mapped\",[1670]],[[64382,64385],\"mapped\",[1671]],[[64386,64387],\"mapped\",[1677]],[[64388,64389],\"mapped\",[1676]],[[64390,64391],\"mapped\",[1678]],[[64392,64393],\"mapped\",[1672]],[[64394,64395],\"mapped\",[1688]],[[64396,64397],\"mapped\",[1681]],[[64398,64401],\"mapped\",[1705]],[[64402,64405],\"mapped\",[1711]],[[64406,64409],\"mapped\",[1715]],[[64410,64413],\"mapped\",[1713]],[[64414,64415],\"mapped\",[1722]],[[64416,64419],\"mapped\",[1723]],[[64420,64421],\"mapped\",[1728]],[[64422,64425],\"mapped\",[1729]],[[64426,64429],\"mapped\",[1726]],[[64430,64431],\"mapped\",[1746]],[[64432,64433],\"mapped\",[1747]],[[64434,64449],\"valid\",[],\"NV8\"],[[64450,64466],\"disallowed\"],[[64467,64470],\"mapped\",[1709]],[[64471,64472],\"mapped\",[1735]],[[64473,64474],\"mapped\",[1734]],[[64475,64476],\"mapped\",[1736]],[[64477,64477],\"mapped\",[1735,1652]],[[64478,64479],\"mapped\",[1739]],[[64480,64481],\"mapped\",[1733]],[[64482,64483],\"mapped\",[1737]],[[64484,64487],\"mapped\",[1744]],[[64488,64489],\"mapped\",[1609]],[[64490,64491],\"mapped\",[1574,1575]],[[64492,64493],\"mapped\",[1574,1749]],[[64494,64495],\"mapped\",[1574,1608]],[[64496,64497],\"mapped\",[1574,1735]],[[64498,64499],\"mapped\",[1574,1734]],[[64500,64501],\"mapped\",[1574,1736]],[[64502,64504],\"mapped\",[1574,1744]],[[64505,64507],\"mapped\",[1574,1609]],[[64508,64511],\"mapped\",[1740]],[[64512,64512],\"mapped\",[1574,1580]],[[64513,64513],\"mapped\",[1574,1581]],[[64514,64514],\"mapped\",[1574,1605]],[[64515,64515],\"mapped\",[1574,1609]],[[64516,64516],\"mapped\",[1574,1610]],[[64517,64517],\"mapped\",[1576,1580]],[[64518,64518],\"mapped\",[1576,1581]],[[64519,64519],\"mapped\",[1576,1582]],[[64520,64520],\"mapped\",[1576,1605]],[[64521,64521],\"mapped\",[1576,1609]],[[64522,64522],\"mapped\",[1576,1610]],[[64523,64523],\"mapped\",[1578,1580]],[[64524,64524],\"mapped\",[1578,1581]],[[64525,64525],\"mapped\",[1578,1582]],[[64526,64526],\"mapped\",[1578,1605]],[[64527,64527],\"mapped\",[1578,1609]],[[64528,64528],\"mapped\",[1578,1610]],[[64529,64529],\"mapped\",[1579,1580]],[[64530,64530],\"mapped\",[1579,1605]],[[64531,64531],\"mapped\",[1579,1609]],[[64532,64532],\"mapped\",[1579,1610]],[[64533,64533],\"mapped\",[1580,1581]],[[64534,64534],\"mapped\",[1580,1605]],[[64535,64535],\"mapped\",[1581,1580]],[[64536,64536],\"mapped\",[1581,1605]],[[64537,64537],\"mapped\",[1582,1580]],[[64538,64538],\"mapped\",[1582,1581]],[[64539,64539],\"mapped\",[1582,1605]],[[64540,64540],\"mapped\",[1587,1580]],[[64541,64541],\"mapped\",[1587,1581]],[[64542,64542],\"mapped\",[1587,1582]],[[64543,64543],\"mapped\",[1587,1605]],[[64544,64544],\"mapped\",[1589,1581]],[[64545,64545],\"mapped\",[1589,1605]],[[64546,64546],\"mapped\",[1590,1580]],[[64547,64547],\"mapped\",[1590,1581]],[[64548,64548],\"mapped\",[1590,1582]],[[64549,64549],\"mapped\",[1590,1605]],[[64550,64550],\"mapped\",[1591,1581]],[[64551,64551],\"mapped\",[1591,1605]],[[64552,64552],\"mapped\",[1592,1605]],[[64553,64553],\"mapped\",[1593,1580]],[[64554,64554],\"mapped\",[1593,1605]],[[64555,64555],\"mapped\",[1594,1580]],[[64556,64556],\"mapped\",[1594,1605]],[[64557,64557],\"mapped\",[1601,1580]],[[64558,64558],\"mapped\",[1601,1581]],[[64559,64559],\"mapped\",[1601,1582]],[[64560,64560],\"mapped\",[1601,1605]],[[64561,64561],\"mapped\",[1601,1609]],[[64562,64562],\"mapped\",[1601,1610]],[[64563,64563],\"mapped\",[1602,1581]],[[64564,64564],\"mapped\",[1602,1605]],[[64565,64565],\"mapped\",[1602,1609]],[[64566,64566],\"mapped\",[1602,1610]],[[64567,64567],\"mapped\",[1603,1575]],[[64568,64568],\"mapped\",[1603,1580]],[[64569,64569],\"mapped\",[1603,1581]],[[64570,64570],\"mapped\",[1603,1582]],[[64571,64571],\"mapped\",[1603,1604]],[[64572,64572],\"mapped\",[1603,1605]],[[64573,64573],\"mapped\",[1603,1609]],[[64574,64574],\"mapped\",[1603,1610]],[[64575,64575],\"mapped\",[1604,1580]],[[64576,64576],\"mapped\",[1604,1581]],[[64577,64577],\"mapped\",[1604,1582]],[[64578,64578],\"mapped\",[1604,1605]],[[64579,64579],\"mapped\",[1604,1609]],[[64580,64580],\"mapped\",[1604,1610]],[[64581,64581],\"mapped\",[1605,1580]],[[64582,64582],\"mapped\",[1605,1581]],[[64583,64583],\"mapped\",[1605,1582]],[[64584,64584],\"mapped\",[1605,1605]],[[64585,64585],\"mapped\",[1605,1609]],[[64586,64586],\"mapped\",[1605,1610]],[[64587,64587],\"mapped\",[1606,1580]],[[64588,64588],\"mapped\",[1606,1581]],[[64589,64589],\"mapped\",[1606,1582]],[[64590,64590],\"mapped\",[1606,1605]],[[64591,64591],\"mapped\",[1606,1609]],[[64592,64592],\"mapped\",[1606,1610]],[[64593,64593],\"mapped\",[1607,1580]],[[64594,64594],\"mapped\",[1607,1605]],[[64595,64595],\"mapped\",[1607,1609]],[[64596,64596],\"mapped\",[1607,1610]],[[64597,64597],\"mapped\",[1610,1580]],[[64598,64598],\"mapped\",[1610,1581]],[[64599,64599],\"mapped\",[1610,1582]],[[64600,64600],\"mapped\",[1610,1605]],[[64601,64601],\"mapped\",[1610,1609]],[[64602,64602],\"mapped\",[1610,1610]],[[64603,64603],\"mapped\",[1584,1648]],[[64604,64604],\"mapped\",[1585,1648]],[[64605,64605],\"mapped\",[1609,1648]],[[64606,64606],\"disallowed_STD3_mapped\",[32,1612,1617]],[[64607,64607],\"disallowed_STD3_mapped\",[32,1613,1617]],[[64608,64608],\"disallowed_STD3_mapped\",[32,1614,1617]],[[64609,64609],\"disallowed_STD3_mapped\",[32,1615,1617]],[[64610,64610],\"disallowed_STD3_mapped\",[32,1616,1617]],[[64611,64611],\"disallowed_STD3_mapped\",[32,1617,1648]],[[64612,64612],\"mapped\",[1574,1585]],[[64613,64613],\"mapped\",[1574,1586]],[[64614,64614],\"mapped\",[1574,1605]],[[64615,64615],\"mapped\",[1574,1606]],[[64616,64616],\"mapped\",[1574,1609]],[[64617,64617],\"mapped\",[1574,1610]],[[64618,64618],\"mapped\",[1576,1585]],[[64619,64619],\"mapped\",[1576,1586]],[[64620,64620],\"mapped\",[1576,1605]],[[64621,64621],\"mapped\",[1576,1606]],[[64622,64622],\"mapped\",[1576,1609]],[[64623,64623],\"mapped\",[1576,1610]],[[64624,64624],\"mapped\",[1578,1585]],[[64625,64625],\"mapped\",[1578,1586]],[[64626,64626],\"mapped\",[1578,1605]],[[64627,64627],\"mapped\",[1578,1606]],[[64628,64628],\"mapped\",[1578,1609]],[[64629,64629],\"mapped\",[1578,1610]],[[64630,64630],\"mapped\",[1579,1585]],[[64631,64631],\"mapped\",[1579,1586]],[[64632,64632],\"mapped\",[1579,1605]],[[64633,64633],\"mapped\",[1579,1606]],[[64634,64634],\"mapped\",[1579,1609]],[[64635,64635],\"mapped\",[1579,1610]],[[64636,64636],\"mapped\",[1601,1609]],[[64637,64637],\"mapped\",[1601,1610]],[[64638,64638],\"mapped\",[1602,1609]],[[64639,64639],\"mapped\",[1602,1610]],[[64640,64640],\"mapped\",[1603,1575]],[[64641,64641],\"mapped\",[1603,1604]],[[64642,64642],\"mapped\",[1603,1605]],[[64643,64643],\"mapped\",[1603,1609]],[[64644,64644],\"mapped\",[1603,1610]],[[64645,64645],\"mapped\",[1604,1605]],[[64646,64646],\"mapped\",[1604,1609]],[[64647,64647],\"mapped\",[1604,1610]],[[64648,64648],\"mapped\",[1605,1575]],[[64649,64649],\"mapped\",[1605,1605]],[[64650,64650],\"mapped\",[1606,1585]],[[64651,64651],\"mapped\",[1606,1586]],[[64652,64652],\"mapped\",[1606,1605]],[[64653,64653],\"mapped\",[1606,1606]],[[64654,64654],\"mapped\",[1606,1609]],[[64655,64655],\"mapped\",[1606,1610]],[[64656,64656],\"mapped\",[1609,1648]],[[64657,64657],\"mapped\",[1610,1585]],[[64658,64658],\"mapped\",[1610,1586]],[[64659,64659],\"mapped\",[1610,1605]],[[64660,64660],\"mapped\",[1610,1606]],[[64661,64661],\"mapped\",[1610,1609]],[[64662,64662],\"mapped\",[1610,1610]],[[64663,64663],\"mapped\",[1574,1580]],[[64664,64664],\"mapped\",[1574,1581]],[[64665,64665],\"mapped\",[1574,1582]],[[64666,64666],\"mapped\",[1574,1605]],[[64667,64667],\"mapped\",[1574,1607]],[[64668,64668],\"mapped\",[1576,1580]],[[64669,64669],\"mapped\",[1576,1581]],[[64670,64670],\"mapped\",[1576,1582]],[[64671,64671],\"mapped\",[1576,1605]],[[64672,64672],\"mapped\",[1576,1607]],[[64673,64673],\"mapped\",[1578,1580]],[[64674,64674],\"mapped\",[1578,1581]],[[64675,64675],\"mapped\",[1578,1582]],[[64676,64676],\"mapped\",[1578,1605]],[[64677,64677],\"mapped\",[1578,1607]],[[64678,64678],\"mapped\",[1579,1605]],[[64679,64679],\"mapped\",[1580,1581]],[[64680,64680],\"mapped\",[1580,1605]],[[64681,64681],\"mapped\",[1581,1580]],[[64682,64682],\"mapped\",[1581,1605]],[[64683,64683],\"mapped\",[1582,1580]],[[64684,64684],\"mapped\",[1582,1605]],[[64685,64685],\"mapped\",[1587,1580]],[[64686,64686],\"mapped\",[1587,1581]],[[64687,64687],\"mapped\",[1587,1582]],[[64688,64688],\"mapped\",[1587,1605]],[[64689,64689],\"mapped\",[1589,1581]],[[64690,64690],\"mapped\",[1589,1582]],[[64691,64691],\"mapped\",[1589,1605]],[[64692,64692],\"mapped\",[1590,1580]],[[64693,64693],\"mapped\",[1590,1581]],[[64694,64694],\"mapped\",[1590,1582]],[[64695,64695],\"mapped\",[1590,1605]],[[64696,64696],\"mapped\",[1591,1581]],[[64697,64697],\"mapped\",[1592,1605]],[[64698,64698],\"mapped\",[1593,1580]],[[64699,64699],\"mapped\",[1593,1605]],[[64700,64700],\"mapped\",[1594,1580]],[[64701,64701],\"mapped\",[1594,1605]],[[64702,64702],\"mapped\",[1601,1580]],[[64703,64703],\"mapped\",[1601,1581]],[[64704,64704],\"mapped\",[1601,1582]],[[64705,64705],\"mapped\",[1601,1605]],[[64706,64706],\"mapped\",[1602,1581]],[[64707,64707],\"mapped\",[1602,1605]],[[64708,64708],\"mapped\",[1603,1580]],[[64709,64709],\"mapped\",[1603,1581]],[[64710,64710],\"mapped\",[1603,1582]],[[64711,64711],\"mapped\",[1603,1604]],[[64712,64712],\"mapped\",[1603,1605]],[[64713,64713],\"mapped\",[1604,1580]],[[64714,64714],\"mapped\",[1604,1581]],[[64715,64715],\"mapped\",[1604,1582]],[[64716,64716],\"mapped\",[1604,1605]],[[64717,64717],\"mapped\",[1604,1607]],[[64718,64718],\"mapped\",[1605,1580]],[[64719,64719],\"mapped\",[1605,1581]],[[64720,64720],\"mapped\",[1605,1582]],[[64721,64721],\"mapped\",[1605,1605]],[[64722,64722],\"mapped\",[1606,1580]],[[64723,64723],\"mapped\",[1606,1581]],[[64724,64724],\"mapped\",[1606,1582]],[[64725,64725],\"mapped\",[1606,1605]],[[64726,64726],\"mapped\",[1606,1607]],[[64727,64727],\"mapped\",[1607,1580]],[[64728,64728],\"mapped\",[1607,1605]],[[64729,64729],\"mapped\",[1607,1648]],[[64730,64730],\"mapped\",[1610,1580]],[[64731,64731],\"mapped\",[1610,1581]],[[64732,64732],\"mapped\",[1610,1582]],[[64733,64733],\"mapped\",[1610,1605]],[[64734,64734],\"mapped\",[1610,1607]],[[64735,64735],\"mapped\",[1574,1605]],[[64736,64736],\"mapped\",[1574,1607]],[[64737,64737],\"mapped\",[1576,1605]],[[64738,64738],\"mapped\",[1576,1607]],[[64739,64739],\"mapped\",[1578,1605]],[[64740,64740],\"mapped\",[1578,1607]],[[64741,64741],\"mapped\",[1579,1605]],[[64742,64742],\"mapped\",[1579,1607]],[[64743,64743],\"mapped\",[1587,1605]],[[64744,64744],\"mapped\",[1587,1607]],[[64745,64745],\"mapped\",[1588,1605]],[[64746,64746],\"mapped\",[1588,1607]],[[64747,64747],\"mapped\",[1603,1604]],[[64748,64748],\"mapped\",[1603,1605]],[[64749,64749],\"mapped\",[1604,1605]],[[64750,64750],\"mapped\",[1606,1605]],[[64751,64751],\"mapped\",[1606,1607]],[[64752,64752],\"mapped\",[1610,1605]],[[64753,64753],\"mapped\",[1610,1607]],[[64754,64754],\"mapped\",[1600,1614,1617]],[[64755,64755],\"mapped\",[1600,1615,1617]],[[64756,64756],\"mapped\",[1600,1616,1617]],[[64757,64757],\"mapped\",[1591,1609]],[[64758,64758],\"mapped\",[1591,1610]],[[64759,64759],\"mapped\",[1593,1609]],[[64760,64760],\"mapped\",[1593,1610]],[[64761,64761],\"mapped\",[1594,1609]],[[64762,64762],\"mapped\",[1594,1610]],[[64763,64763],\"mapped\",[1587,1609]],[[64764,64764],\"mapped\",[1587,1610]],[[64765,64765],\"mapped\",[1588,1609]],[[64766,64766],\"mapped\",[1588,1610]],[[64767,64767],\"mapped\",[1581,1609]],[[64768,64768],\"mapped\",[1581,1610]],[[64769,64769],\"mapped\",[1580,1609]],[[64770,64770],\"mapped\",[1580,1610]],[[64771,64771],\"mapped\",[1582,1609]],[[64772,64772],\"mapped\",[1582,1610]],[[64773,64773],\"mapped\",[1589,1609]],[[64774,64774],\"mapped\",[1589,1610]],[[64775,64775],\"mapped\",[1590,1609]],[[64776,64776],\"mapped\",[1590,1610]],[[64777,64777],\"mapped\",[1588,1580]],[[64778,64778],\"mapped\",[1588,1581]],[[64779,64779],\"mapped\",[1588,1582]],[[64780,64780],\"mapped\",[1588,1605]],[[64781,64781],\"mapped\",[1588,1585]],[[64782,64782],\"mapped\",[1587,1585]],[[64783,64783],\"mapped\",[1589,1585]],[[64784,64784],\"mapped\",[1590,1585]],[[64785,64785],\"mapped\",[1591,1609]],[[64786,64786],\"mapped\",[1591,1610]],[[64787,64787],\"mapped\",[1593,1609]],[[64788,64788],\"mapped\",[1593,1610]],[[64789,64789],\"mapped\",[1594,1609]],[[64790,64790],\"mapped\",[1594,1610]],[[64791,64791],\"mapped\",[1587,1609]],[[64792,64792],\"mapped\",[1587,1610]],[[64793,64793],\"mapped\",[1588,1609]],[[64794,64794],\"mapped\",[1588,1610]],[[64795,64795],\"mapped\",[1581,1609]],[[64796,64796],\"mapped\",[1581,1610]],[[64797,64797],\"mapped\",[1580,1609]],[[64798,64798],\"mapped\",[1580,1610]],[[64799,64799],\"mapped\",[1582,1609]],[[64800,64800],\"mapped\",[1582,1610]],[[64801,64801],\"mapped\",[1589,1609]],[[64802,64802],\"mapped\",[1589,1610]],[[64803,64803],\"mapped\",[1590,1609]],[[64804,64804],\"mapped\",[1590,1610]],[[64805,64805],\"mapped\",[1588,1580]],[[64806,64806],\"mapped\",[1588,1581]],[[64807,64807],\"mapped\",[1588,1582]],[[64808,64808],\"mapped\",[1588,1605]],[[64809,64809],\"mapped\",[1588,1585]],[[64810,64810],\"mapped\",[1587,1585]],[[64811,64811],\"mapped\",[1589,1585]],[[64812,64812],\"mapped\",[1590,1585]],[[64813,64813],\"mapped\",[1588,1580]],[[64814,64814],\"mapped\",[1588,1581]],[[64815,64815],\"mapped\",[1588,1582]],[[64816,64816],\"mapped\",[1588,1605]],[[64817,64817],\"mapped\",[1587,1607]],[[64818,64818],\"mapped\",[1588,1607]],[[64819,64819],\"mapped\",[1591,1605]],[[64820,64820],\"mapped\",[1587,1580]],[[64821,64821],\"mapped\",[1587,1581]],[[64822,64822],\"mapped\",[1587,1582]],[[64823,64823],\"mapped\",[1588,1580]],[[64824,64824],\"mapped\",[1588,1581]],[[64825,64825],\"mapped\",[1588,1582]],[[64826,64826],\"mapped\",[1591,1605]],[[64827,64827],\"mapped\",[1592,1605]],[[64828,64829],\"mapped\",[1575,1611]],[[64830,64831],\"valid\",[],\"NV8\"],[[64832,64847],\"disallowed\"],[[64848,64848],\"mapped\",[1578,1580,1605]],[[64849,64850],\"mapped\",[1578,1581,1580]],[[64851,64851],\"mapped\",[1578,1581,1605]],[[64852,64852],\"mapped\",[1578,1582,1605]],[[64853,64853],\"mapped\",[1578,1605,1580]],[[64854,64854],\"mapped\",[1578,1605,1581]],[[64855,64855],\"mapped\",[1578,1605,1582]],[[64856,64857],\"mapped\",[1580,1605,1581]],[[64858,64858],\"mapped\",[1581,1605,1610]],[[64859,64859],\"mapped\",[1581,1605,1609]],[[64860,64860],\"mapped\",[1587,1581,1580]],[[64861,64861],\"mapped\",[1587,1580,1581]],[[64862,64862],\"mapped\",[1587,1580,1609]],[[64863,64864],\"mapped\",[1587,1605,1581]],[[64865,64865],\"mapped\",[1587,1605,1580]],[[64866,64867],\"mapped\",[1587,1605,1605]],[[64868,64869],\"mapped\",[1589,1581,1581]],[[64870,64870],\"mapped\",[1589,1605,1605]],[[64871,64872],\"mapped\",[1588,1581,1605]],[[64873,64873],\"mapped\",[1588,1580,1610]],[[64874,64875],\"mapped\",[1588,1605,1582]],[[64876,64877],\"mapped\",[1588,1605,1605]],[[64878,64878],\"mapped\",[1590,1581,1609]],[[64879,64880],\"mapped\",[1590,1582,1605]],[[64881,64882],\"mapped\",[1591,1605,1581]],[[64883,64883],\"mapped\",[1591,1605,1605]],[[64884,64884],\"mapped\",[1591,1605,1610]],[[64885,64885],\"mapped\",[1593,1580,1605]],[[64886,64887],\"mapped\",[1593,1605,1605]],[[64888,64888],\"mapped\",[1593,1605,1609]],[[64889,64889],\"mapped\",[1594,1605,1605]],[[64890,64890],\"mapped\",[1594,1605,1610]],[[64891,64891],\"mapped\",[1594,1605,1609]],[[64892,64893],\"mapped\",[1601,1582,1605]],[[64894,64894],\"mapped\",[1602,1605,1581]],[[64895,64895],\"mapped\",[1602,1605,1605]],[[64896,64896],\"mapped\",[1604,1581,1605]],[[64897,64897],\"mapped\",[1604,1581,1610]],[[64898,64898],\"mapped\",[1604,1581,1609]],[[64899,64900],\"mapped\",[1604,1580,1580]],[[64901,64902],\"mapped\",[1604,1582,1605]],[[64903,64904],\"mapped\",[1604,1605,1581]],[[64905,64905],\"mapped\",[1605,1581,1580]],[[64906,64906],\"mapped\",[1605,1581,1605]],[[64907,64907],\"mapped\",[1605,1581,1610]],[[64908,64908],\"mapped\",[1605,1580,1581]],[[64909,64909],\"mapped\",[1605,1580,1605]],[[64910,64910],\"mapped\",[1605,1582,1580]],[[64911,64911],\"mapped\",[1605,1582,1605]],[[64912,64913],\"disallowed\"],[[64914,64914],\"mapped\",[1605,1580,1582]],[[64915,64915],\"mapped\",[1607,1605,1580]],[[64916,64916],\"mapped\",[1607,1605,1605]],[[64917,64917],\"mapped\",[1606,1581,1605]],[[64918,64918],\"mapped\",[1606,1581,1609]],[[64919,64920],\"mapped\",[1606,1580,1605]],[[64921,64921],\"mapped\",[1606,1580,1609]],[[64922,64922],\"mapped\",[1606,1605,1610]],[[64923,64923],\"mapped\",[1606,1605,1609]],[[64924,64925],\"mapped\",[1610,1605,1605]],[[64926,64926],\"mapped\",[1576,1582,1610]],[[64927,64927],\"mapped\",[1578,1580,1610]],[[64928,64928],\"mapped\",[1578,1580,1609]],[[64929,64929],\"mapped\",[1578,1582,1610]],[[64930,64930],\"mapped\",[1578,1582,1609]],[[64931,64931],\"mapped\",[1578,1605,1610]],[[64932,64932],\"mapped\",[1578,1605,1609]],[[64933,64933],\"mapped\",[1580,1605,1610]],[[64934,64934],\"mapped\",[1580,1581,1609]],[[64935,64935],\"mapped\",[1580,1605,1609]],[[64936,64936],\"mapped\",[1587,1582,1609]],[[64937,64937],\"mapped\",[1589,1581,1610]],[[64938,64938],\"mapped\",[1588,1581,1610]],[[64939,64939],\"mapped\",[1590,1581,1610]],[[64940,64940],\"mapped\",[1604,1580,1610]],[[64941,64941],\"mapped\",[1604,1605,1610]],[[64942,64942],\"mapped\",[1610,1581,1610]],[[64943,64943],\"mapped\",[1610,1580,1610]],[[64944,64944],\"mapped\",[1610,1605,1610]],[[64945,64945],\"mapped\",[1605,1605,1610]],[[64946,64946],\"mapped\",[1602,1605,1610]],[[64947,64947],\"mapped\",[1606,1581,1610]],[[64948,64948],\"mapped\",[1602,1605,1581]],[[64949,64949],\"mapped\",[1604,1581,1605]],[[64950,64950],\"mapped\",[1593,1605,1610]],[[64951,64951],\"mapped\",[1603,1605,1610]],[[64952,64952],\"mapped\",[1606,1580,1581]],[[64953,64953],\"mapped\",[1605,1582,1610]],[[64954,64954],\"mapped\",[1604,1580,1605]],[[64955,64955],\"mapped\",[1603,1605,1605]],[[64956,64956],\"mapped\",[1604,1580,1605]],[[64957,64957],\"mapped\",[1606,1580,1581]],[[64958,64958],\"mapped\",[1580,1581,1610]],[[64959,64959],\"mapped\",[1581,1580,1610]],[[64960,64960],\"mapped\",[1605,1580,1610]],[[64961,64961],\"mapped\",[1601,1605,1610]],[[64962,64962],\"mapped\",[1576,1581,1610]],[[64963,64963],\"mapped\",[1603,1605,1605]],[[64964,64964],\"mapped\",[1593,1580,1605]],[[64965,64965],\"mapped\",[1589,1605,1605]],[[64966,64966],\"mapped\",[1587,1582,1610]],[[64967,64967],\"mapped\",[1606,1580,1610]],[[64968,64975],\"disallowed\"],[[64976,65007],\"disallowed\"],[[65008,65008],\"mapped\",[1589,1604,1746]],[[65009,65009],\"mapped\",[1602,1604,1746]],[[65010,65010],\"mapped\",[1575,1604,1604,1607]],[[65011,65011],\"mapped\",[1575,1603,1576,1585]],[[65012,65012],\"mapped\",[1605,1581,1605,1583]],[[65013,65013],\"mapped\",[1589,1604,1593,1605]],[[65014,65014],\"mapped\",[1585,1587,1608,1604]],[[65015,65015],\"mapped\",[1593,1604,1610,1607]],[[65016,65016],\"mapped\",[1608,1587,1604,1605]],[[65017,65017],\"mapped\",[1589,1604,1609]],[[65018,65018],\"disallowed_STD3_mapped\",[1589,1604,1609,32,1575,1604,1604,1607,32,1593,1604,1610,1607,32,1608,1587,1604,1605]],[[65019,65019],\"disallowed_STD3_mapped\",[1580,1604,32,1580,1604,1575,1604,1607]],[[65020,65020],\"mapped\",[1585,1740,1575,1604]],[[65021,65021],\"valid\",[],\"NV8\"],[[65022,65023],\"disallowed\"],[[65024,65039],\"ignored\"],[[65040,65040],\"disallowed_STD3_mapped\",[44]],[[65041,65041],\"mapped\",[12289]],[[65042,65042],\"disallowed\"],[[65043,65043],\"disallowed_STD3_mapped\",[58]],[[65044,65044],\"disallowed_STD3_mapped\",[59]],[[65045,65045],\"disallowed_STD3_mapped\",[33]],[[65046,65046],\"disallowed_STD3_mapped\",[63]],[[65047,65047],\"mapped\",[12310]],[[65048,65048],\"mapped\",[12311]],[[65049,65049],\"disallowed\"],[[65050,65055],\"disallowed\"],[[65056,65059],\"valid\"],[[65060,65062],\"valid\"],[[65063,65069],\"valid\"],[[65070,65071],\"valid\"],[[65072,65072],\"disallowed\"],[[65073,65073],\"mapped\",[8212]],[[65074,65074],\"mapped\",[8211]],[[65075,65076],\"disallowed_STD3_mapped\",[95]],[[65077,65077],\"disallowed_STD3_mapped\",[40]],[[65078,65078],\"disallowed_STD3_mapped\",[41]],[[65079,65079],\"disallowed_STD3_mapped\",[123]],[[65080,65080],\"disallowed_STD3_mapped\",[125]],[[65081,65081],\"mapped\",[12308]],[[65082,65082],\"mapped\",[12309]],[[65083,65083],\"mapped\",[12304]],[[65084,65084],\"mapped\",[12305]],[[65085,65085],\"mapped\",[12298]],[[65086,65086],\"mapped\",[12299]],[[65087,65087],\"mapped\",[12296]],[[65088,65088],\"mapped\",[12297]],[[65089,65089],\"mapped\",[12300]],[[65090,65090],\"mapped\",[12301]],[[65091,65091],\"mapped\",[12302]],[[65092,65092],\"mapped\",[12303]],[[65093,65094],\"valid\",[],\"NV8\"],[[65095,65095],\"disallowed_STD3_mapped\",[91]],[[65096,65096],\"disallowed_STD3_mapped\",[93]],[[65097,65100],\"disallowed_STD3_mapped\",[32,773]],[[65101,65103],\"disallowed_STD3_mapped\",[95]],[[65104,65104],\"disallowed_STD3_mapped\",[44]],[[65105,65105],\"mapped\",[12289]],[[65106,65106],\"disallowed\"],[[65107,65107],\"disallowed\"],[[65108,65108],\"disallowed_STD3_mapped\",[59]],[[65109,65109],\"disallowed_STD3_mapped\",[58]],[[65110,65110],\"disallowed_STD3_mapped\",[63]],[[65111,65111],\"disallowed_STD3_mapped\",[33]],[[65112,65112],\"mapped\",[8212]],[[65113,65113],\"disallowed_STD3_mapped\",[40]],[[65114,65114],\"disallowed_STD3_mapped\",[41]],[[65115,65115],\"disallowed_STD3_mapped\",[123]],[[65116,65116],\"disallowed_STD3_mapped\",[125]],[[65117,65117],\"mapped\",[12308]],[[65118,65118],\"mapped\",[12309]],[[65119,65119],\"disallowed_STD3_mapped\",[35]],[[65120,65120],\"disallowed_STD3_mapped\",[38]],[[65121,65121],\"disallowed_STD3_mapped\",[42]],[[65122,65122],\"disallowed_STD3_mapped\",[43]],[[65123,65123],\"mapped\",[45]],[[65124,65124],\"disallowed_STD3_mapped\",[60]],[[65125,65125],\"disallowed_STD3_mapped\",[62]],[[65126,65126],\"disallowed_STD3_mapped\",[61]],[[65127,65127],\"disallowed\"],[[65128,65128],\"disallowed_STD3_mapped\",[92]],[[65129,65129],\"disallowed_STD3_mapped\",[36]],[[65130,65130],\"disallowed_STD3_mapped\",[37]],[[65131,65131],\"disallowed_STD3_mapped\",[64]],[[65132,65135],\"disallowed\"],[[65136,65136],\"disallowed_STD3_mapped\",[32,1611]],[[65137,65137],\"mapped\",[1600,1611]],[[65138,65138],\"disallowed_STD3_mapped\",[32,1612]],[[65139,65139],\"valid\"],[[65140,65140],\"disallowed_STD3_mapped\",[32,1613]],[[65141,65141],\"disallowed\"],[[65142,65142],\"disallowed_STD3_mapped\",[32,1614]],[[65143,65143],\"mapped\",[1600,1614]],[[65144,65144],\"disallowed_STD3_mapped\",[32,1615]],[[65145,65145],\"mapped\",[1600,1615]],[[65146,65146],\"disallowed_STD3_mapped\",[32,1616]],[[65147,65147],\"mapped\",[1600,1616]],[[65148,65148],\"disallowed_STD3_mapped\",[32,1617]],[[65149,65149],\"mapped\",[1600,1617]],[[65150,65150],\"disallowed_STD3_mapped\",[32,1618]],[[65151,65151],\"mapped\",[1600,1618]],[[65152,65152],\"mapped\",[1569]],[[65153,65154],\"mapped\",[1570]],[[65155,65156],\"mapped\",[1571]],[[65157,65158],\"mapped\",[1572]],[[65159,65160],\"mapped\",[1573]],[[65161,65164],\"mapped\",[1574]],[[65165,65166],\"mapped\",[1575]],[[65167,65170],\"mapped\",[1576]],[[65171,65172],\"mapped\",[1577]],[[65173,65176],\"mapped\",[1578]],[[65177,65180],\"mapped\",[1579]],[[65181,65184],\"mapped\",[1580]],[[65185,65188],\"mapped\",[1581]],[[65189,65192],\"mapped\",[1582]],[[65193,65194],\"mapped\",[1583]],[[65195,65196],\"mapped\",[1584]],[[65197,65198],\"mapped\",[1585]],[[65199,65200],\"mapped\",[1586]],[[65201,65204],\"mapped\",[1587]],[[65205,65208],\"mapped\",[1588]],[[65209,65212],\"mapped\",[1589]],[[65213,65216],\"mapped\",[1590]],[[65217,65220],\"mapped\",[1591]],[[65221,65224],\"mapped\",[1592]],[[65225,65228],\"mapped\",[1593]],[[65229,65232],\"mapped\",[1594]],[[65233,65236],\"mapped\",[1601]],[[65237,65240],\"mapped\",[1602]],[[65241,65244],\"mapped\",[1603]],[[65245,65248],\"mapped\",[1604]],[[65249,65252],\"mapped\",[1605]],[[65253,65256],\"mapped\",[1606]],[[65257,65260],\"mapped\",[1607]],[[65261,65262],\"mapped\",[1608]],[[65263,65264],\"mapped\",[1609]],[[65265,65268],\"mapped\",[1610]],[[65269,65270],\"mapped\",[1604,1570]],[[65271,65272],\"mapped\",[1604,1571]],[[65273,65274],\"mapped\",[1604,1573]],[[65275,65276],\"mapped\",[1604,1575]],[[65277,65278],\"disallowed\"],[[65279,65279],\"ignored\"],[[65280,65280],\"disallowed\"],[[65281,65281],\"disallowed_STD3_mapped\",[33]],[[65282,65282],\"disallowed_STD3_mapped\",[34]],[[65283,65283],\"disallowed_STD3_mapped\",[35]],[[65284,65284],\"disallowed_STD3_mapped\",[36]],[[65285,65285],\"disallowed_STD3_mapped\",[37]],[[65286,65286],\"disallowed_STD3_mapped\",[38]],[[65287,65287],\"disallowed_STD3_mapped\",[39]],[[65288,65288],\"disallowed_STD3_mapped\",[40]],[[65289,65289],\"disallowed_STD3_mapped\",[41]],[[65290,65290],\"disallowed_STD3_mapped\",[42]],[[65291,65291],\"disallowed_STD3_mapped\",[43]],[[65292,65292],\"disallowed_STD3_mapped\",[44]],[[65293,65293],\"mapped\",[45]],[[65294,65294],\"mapped\",[46]],[[65295,65295],\"disallowed_STD3_mapped\",[47]],[[65296,65296],\"mapped\",[48]],[[65297,65297],\"mapped\",[49]],[[65298,65298],\"mapped\",[50]],[[65299,65299],\"mapped\",[51]],[[65300,65300],\"mapped\",[52]],[[65301,65301],\"mapped\",[53]],[[65302,65302],\"mapped\",[54]],[[65303,65303],\"mapped\",[55]],[[65304,65304],\"mapped\",[56]],[[65305,65305],\"mapped\",[57]],[[65306,65306],\"disallowed_STD3_mapped\",[58]],[[65307,65307],\"disallowed_STD3_mapped\",[59]],[[65308,65308],\"disallowed_STD3_mapped\",[60]],[[65309,65309],\"disallowed_STD3_mapped\",[61]],[[65310,65310],\"disallowed_STD3_mapped\",[62]],[[65311,65311],\"disallowed_STD3_mapped\",[63]],[[65312,65312],\"disallowed_STD3_mapped\",[64]],[[65313,65313],\"mapped\",[97]],[[65314,65314],\"mapped\",[98]],[[65315,65315],\"mapped\",[99]],[[65316,65316],\"mapped\",[100]],[[65317,65317],\"mapped\",[101]],[[65318,65318],\"mapped\",[102]],[[65319,65319],\"mapped\",[103]],[[65320,65320],\"mapped\",[104]],[[65321,65321],\"mapped\",[105]],[[65322,65322],\"mapped\",[106]],[[65323,65323],\"mapped\",[107]],[[65324,65324],\"mapped\",[108]],[[65325,65325],\"mapped\",[109]],[[65326,65326],\"mapped\",[110]],[[65327,65327],\"mapped\",[111]],[[65328,65328],\"mapped\",[112]],[[65329,65329],\"mapped\",[113]],[[65330,65330],\"mapped\",[114]],[[65331,65331],\"mapped\",[115]],[[65332,65332],\"mapped\",[116]],[[65333,65333],\"mapped\",[117]],[[65334,65334],\"mapped\",[118]],[[65335,65335],\"mapped\",[119]],[[65336,65336],\"mapped\",[120]],[[65337,65337],\"mapped\",[121]],[[65338,65338],\"mapped\",[122]],[[65339,65339],\"disallowed_STD3_mapped\",[91]],[[65340,65340],\"disallowed_STD3_mapped\",[92]],[[65341,65341],\"disallowed_STD3_mapped\",[93]],[[65342,65342],\"disallowed_STD3_mapped\",[94]],[[65343,65343],\"disallowed_STD3_mapped\",[95]],[[65344,65344],\"disallowed_STD3_mapped\",[96]],[[65345,65345],\"mapped\",[97]],[[65346,65346],\"mapped\",[98]],[[65347,65347],\"mapped\",[99]],[[65348,65348],\"mapped\",[100]],[[65349,65349],\"mapped\",[101]],[[65350,65350],\"mapped\",[102]],[[65351,65351],\"mapped\",[103]],[[65352,65352],\"mapped\",[104]],[[65353,65353],\"mapped\",[105]],[[65354,65354],\"mapped\",[106]],[[65355,65355],\"mapped\",[107]],[[65356,65356],\"mapped\",[108]],[[65357,65357],\"mapped\",[109]],[[65358,65358],\"mapped\",[110]],[[65359,65359],\"mapped\",[111]],[[65360,65360],\"mapped\",[112]],[[65361,65361],\"mapped\",[113]],[[65362,65362],\"mapped\",[114]],[[65363,65363],\"mapped\",[115]],[[65364,65364],\"mapped\",[116]],[[65365,65365],\"mapped\",[117]],[[65366,65366],\"mapped\",[118]],[[65367,65367],\"mapped\",[119]],[[65368,65368],\"mapped\",[120]],[[65369,65369],\"mapped\",[121]],[[65370,65370],\"mapped\",[122]],[[65371,65371],\"disallowed_STD3_mapped\",[123]],[[65372,65372],\"disallowed_STD3_mapped\",[124]],[[65373,65373],\"disallowed_STD3_mapped\",[125]],[[65374,65374],\"disallowed_STD3_mapped\",[126]],[[65375,65375],\"mapped\",[10629]],[[65376,65376],\"mapped\",[10630]],[[65377,65377],\"mapped\",[46]],[[65378,65378],\"mapped\",[12300]],[[65379,65379],\"mapped\",[12301]],[[65380,65380],\"mapped\",[12289]],[[65381,65381],\"mapped\",[12539]],[[65382,65382],\"mapped\",[12530]],[[65383,65383],\"mapped\",[12449]],[[65384,65384],\"mapped\",[12451]],[[65385,65385],\"mapped\",[12453]],[[65386,65386],\"mapped\",[12455]],[[65387,65387],\"mapped\",[12457]],[[65388,65388],\"mapped\",[12515]],[[65389,65389],\"mapped\",[12517]],[[65390,65390],\"mapped\",[12519]],[[65391,65391],\"mapped\",[12483]],[[65392,65392],\"mapped\",[12540]],[[65393,65393],\"mapped\",[12450]],[[65394,65394],\"mapped\",[12452]],[[65395,65395],\"mapped\",[12454]],[[65396,65396],\"mapped\",[12456]],[[65397,65397],\"mapped\",[12458]],[[65398,65398],\"mapped\",[12459]],[[65399,65399],\"mapped\",[12461]],[[65400,65400],\"mapped\",[12463]],[[65401,65401],\"mapped\",[12465]],[[65402,65402],\"mapped\",[12467]],[[65403,65403],\"mapped\",[12469]],[[65404,65404],\"mapped\",[12471]],[[65405,65405],\"mapped\",[12473]],[[65406,65406],\"mapped\",[12475]],[[65407,65407],\"mapped\",[12477]],[[65408,65408],\"mapped\",[12479]],[[65409,65409],\"mapped\",[12481]],[[65410,65410],\"mapped\",[12484]],[[65411,65411],\"mapped\",[12486]],[[65412,65412],\"mapped\",[12488]],[[65413,65413],\"mapped\",[12490]],[[65414,65414],\"mapped\",[12491]],[[65415,65415],\"mapped\",[12492]],[[65416,65416],\"mapped\",[12493]],[[65417,65417],\"mapped\",[12494]],[[65418,65418],\"mapped\",[12495]],[[65419,65419],\"mapped\",[12498]],[[65420,65420],\"mapped\",[12501]],[[65421,65421],\"mapped\",[12504]],[[65422,65422],\"mapped\",[12507]],[[65423,65423],\"mapped\",[12510]],[[65424,65424],\"mapped\",[12511]],[[65425,65425],\"mapped\",[12512]],[[65426,65426],\"mapped\",[12513]],[[65427,65427],\"mapped\",[12514]],[[65428,65428],\"mapped\",[12516]],[[65429,65429],\"mapped\",[12518]],[[65430,65430],\"mapped\",[12520]],[[65431,65431],\"mapped\",[12521]],[[65432,65432],\"mapped\",[12522]],[[65433,65433],\"mapped\",[12523]],[[65434,65434],\"mapped\",[12524]],[[65435,65435],\"mapped\",[12525]],[[65436,65436],\"mapped\",[12527]],[[65437,65437],\"mapped\",[12531]],[[65438,65438],\"mapped\",[12441]],[[65439,65439],\"mapped\",[12442]],[[65440,65440],\"disallowed\"],[[65441,65441],\"mapped\",[4352]],[[65442,65442],\"mapped\",[4353]],[[65443,65443],\"mapped\",[4522]],[[65444,65444],\"mapped\",[4354]],[[65445,65445],\"mapped\",[4524]],[[65446,65446],\"mapped\",[4525]],[[65447,65447],\"mapped\",[4355]],[[65448,65448],\"mapped\",[4356]],[[65449,65449],\"mapped\",[4357]],[[65450,65450],\"mapped\",[4528]],[[65451,65451],\"mapped\",[4529]],[[65452,65452],\"mapped\",[4530]],[[65453,65453],\"mapped\",[4531]],[[65454,65454],\"mapped\",[4532]],[[65455,65455],\"mapped\",[4533]],[[65456,65456],\"mapped\",[4378]],[[65457,65457],\"mapped\",[4358]],[[65458,65458],\"mapped\",[4359]],[[65459,65459],\"mapped\",[4360]],[[65460,65460],\"mapped\",[4385]],[[65461,65461],\"mapped\",[4361]],[[65462,65462],\"mapped\",[4362]],[[65463,65463],\"mapped\",[4363]],[[65464,65464],\"mapped\",[4364]],[[65465,65465],\"mapped\",[4365]],[[65466,65466],\"mapped\",[4366]],[[65467,65467],\"mapped\",[4367]],[[65468,65468],\"mapped\",[4368]],[[65469,65469],\"mapped\",[4369]],[[65470,65470],\"mapped\",[4370]],[[65471,65473],\"disallowed\"],[[65474,65474],\"mapped\",[4449]],[[65475,65475],\"mapped\",[4450]],[[65476,65476],\"mapped\",[4451]],[[65477,65477],\"mapped\",[4452]],[[65478,65478],\"mapped\",[4453]],[[65479,65479],\"mapped\",[4454]],[[65480,65481],\"disallowed\"],[[65482,65482],\"mapped\",[4455]],[[65483,65483],\"mapped\",[4456]],[[65484,65484],\"mapped\",[4457]],[[65485,65485],\"mapped\",[4458]],[[65486,65486],\"mapped\",[4459]],[[65487,65487],\"mapped\",[4460]],[[65488,65489],\"disallowed\"],[[65490,65490],\"mapped\",[4461]],[[65491,65491],\"mapped\",[4462]],[[65492,65492],\"mapped\",[4463]],[[65493,65493],\"mapped\",[4464]],[[65494,65494],\"mapped\",[4465]],[[65495,65495],\"mapped\",[4466]],[[65496,65497],\"disallowed\"],[[65498,65498],\"mapped\",[4467]],[[65499,65499],\"mapped\",[4468]],[[65500,65500],\"mapped\",[4469]],[[65501,65503],\"disallowed\"],[[65504,65504],\"mapped\",[162]],[[65505,65505],\"mapped\",[163]],[[65506,65506],\"mapped\",[172]],[[65507,65507],\"disallowed_STD3_mapped\",[32,772]],[[65508,65508],\"mapped\",[166]],[[65509,65509],\"mapped\",[165]],[[65510,65510],\"mapped\",[8361]],[[65511,65511],\"disallowed\"],[[65512,65512],\"mapped\",[9474]],[[65513,65513],\"mapped\",[8592]],[[65514,65514],\"mapped\",[8593]],[[65515,65515],\"mapped\",[8594]],[[65516,65516],\"mapped\",[8595]],[[65517,65517],\"mapped\",[9632]],[[65518,65518],\"mapped\",[9675]],[[65519,65528],\"disallowed\"],[[65529,65531],\"disallowed\"],[[65532,65532],\"disallowed\"],[[65533,65533],\"disallowed\"],[[65534,65535],\"disallowed\"],[[65536,65547],\"valid\"],[[65548,65548],\"disallowed\"],[[65549,65574],\"valid\"],[[65575,65575],\"disallowed\"],[[65576,65594],\"valid\"],[[65595,65595],\"disallowed\"],[[65596,65597],\"valid\"],[[65598,65598],\"disallowed\"],[[65599,65613],\"valid\"],[[65614,65615],\"disallowed\"],[[65616,65629],\"valid\"],[[65630,65663],\"disallowed\"],[[65664,65786],\"valid\"],[[65787,65791],\"disallowed\"],[[65792,65794],\"valid\",[],\"NV8\"],[[65795,65798],\"disallowed\"],[[65799,65843],\"valid\",[],\"NV8\"],[[65844,65846],\"disallowed\"],[[65847,65855],\"valid\",[],\"NV8\"],[[65856,65930],\"valid\",[],\"NV8\"],[[65931,65932],\"valid\",[],\"NV8\"],[[65933,65935],\"disallowed\"],[[65936,65947],\"valid\",[],\"NV8\"],[[65948,65951],\"disallowed\"],[[65952,65952],\"valid\",[],\"NV8\"],[[65953,65999],\"disallowed\"],[[66000,66044],\"valid\",[],\"NV8\"],[[66045,66045],\"valid\"],[[66046,66175],\"disallowed\"],[[66176,66204],\"valid\"],[[66205,66207],\"disallowed\"],[[66208,66256],\"valid\"],[[66257,66271],\"disallowed\"],[[66272,66272],\"valid\"],[[66273,66299],\"valid\",[],\"NV8\"],[[66300,66303],\"disallowed\"],[[66304,66334],\"valid\"],[[66335,66335],\"valid\"],[[66336,66339],\"valid\",[],\"NV8\"],[[66340,66351],\"disallowed\"],[[66352,66368],\"valid\"],[[66369,66369],\"valid\",[],\"NV8\"],[[66370,66377],\"valid\"],[[66378,66378],\"valid\",[],\"NV8\"],[[66379,66383],\"disallowed\"],[[66384,66426],\"valid\"],[[66427,66431],\"disallowed\"],[[66432,66461],\"valid\"],[[66462,66462],\"disallowed\"],[[66463,66463],\"valid\",[],\"NV8\"],[[66464,66499],\"valid\"],[[66500,66503],\"disallowed\"],[[66504,66511],\"valid\"],[[66512,66517],\"valid\",[],\"NV8\"],[[66518,66559],\"disallowed\"],[[66560,66560],\"mapped\",[66600]],[[66561,66561],\"mapped\",[66601]],[[66562,66562],\"mapped\",[66602]],[[66563,66563],\"mapped\",[66603]],[[66564,66564],\"mapped\",[66604]],[[66565,66565],\"mapped\",[66605]],[[66566,66566],\"mapped\",[66606]],[[66567,66567],\"mapped\",[66607]],[[66568,66568],\"mapped\",[66608]],[[66569,66569],\"mapped\",[66609]],[[66570,66570],\"mapped\",[66610]],[[66571,66571],\"mapped\",[66611]],[[66572,66572],\"mapped\",[66612]],[[66573,66573],\"mapped\",[66613]],[[66574,66574],\"mapped\",[66614]],[[66575,66575],\"mapped\",[66615]],[[66576,66576],\"mapped\",[66616]],[[66577,66577],\"mapped\",[66617]],[[66578,66578],\"mapped\",[66618]],[[66579,66579],\"mapped\",[66619]],[[66580,66580],\"mapped\",[66620]],[[66581,66581],\"mapped\",[66621]],[[66582,66582],\"mapped\",[66622]],[[66583,66583],\"mapped\",[66623]],[[66584,66584],\"mapped\",[66624]],[[66585,66585],\"mapped\",[66625]],[[66586,66586],\"mapped\",[66626]],[[66587,66587],\"mapped\",[66627]],[[66588,66588],\"mapped\",[66628]],[[66589,66589],\"mapped\",[66629]],[[66590,66590],\"mapped\",[66630]],[[66591,66591],\"mapped\",[66631]],[[66592,66592],\"mapped\",[66632]],[[66593,66593],\"mapped\",[66633]],[[66594,66594],\"mapped\",[66634]],[[66595,66595],\"mapped\",[66635]],[[66596,66596],\"mapped\",[66636]],[[66597,66597],\"mapped\",[66637]],[[66598,66598],\"mapped\",[66638]],[[66599,66599],\"mapped\",[66639]],[[66600,66637],\"valid\"],[[66638,66717],\"valid\"],[[66718,66719],\"disallowed\"],[[66720,66729],\"valid\"],[[66730,66815],\"disallowed\"],[[66816,66855],\"valid\"],[[66856,66863],\"disallowed\"],[[66864,66915],\"valid\"],[[66916,66926],\"disallowed\"],[[66927,66927],\"valid\",[],\"NV8\"],[[66928,67071],\"disallowed\"],[[67072,67382],\"valid\"],[[67383,67391],\"disallowed\"],[[67392,67413],\"valid\"],[[67414,67423],\"disallowed\"],[[67424,67431],\"valid\"],[[67432,67583],\"disallowed\"],[[67584,67589],\"valid\"],[[67590,67591],\"disallowed\"],[[67592,67592],\"valid\"],[[67593,67593],\"disallowed\"],[[67594,67637],\"valid\"],[[67638,67638],\"disallowed\"],[[67639,67640],\"valid\"],[[67641,67643],\"disallowed\"],[[67644,67644],\"valid\"],[[67645,67646],\"disallowed\"],[[67647,67647],\"valid\"],[[67648,67669],\"valid\"],[[67670,67670],\"disallowed\"],[[67671,67679],\"valid\",[],\"NV8\"],[[67680,67702],\"valid\"],[[67703,67711],\"valid\",[],\"NV8\"],[[67712,67742],\"valid\"],[[67743,67750],\"disallowed\"],[[67751,67759],\"valid\",[],\"NV8\"],[[67760,67807],\"disallowed\"],[[67808,67826],\"valid\"],[[67827,67827],\"disallowed\"],[[67828,67829],\"valid\"],[[67830,67834],\"disallowed\"],[[67835,67839],\"valid\",[],\"NV8\"],[[67840,67861],\"valid\"],[[67862,67865],\"valid\",[],\"NV8\"],[[67866,67867],\"valid\",[],\"NV8\"],[[67868,67870],\"disallowed\"],[[67871,67871],\"valid\",[],\"NV8\"],[[67872,67897],\"valid\"],[[67898,67902],\"disallowed\"],[[67903,67903],\"valid\",[],\"NV8\"],[[67904,67967],\"disallowed\"],[[67968,68023],\"valid\"],[[68024,68027],\"disallowed\"],[[68028,68029],\"valid\",[],\"NV8\"],[[68030,68031],\"valid\"],[[68032,68047],\"valid\",[],\"NV8\"],[[68048,68049],\"disallowed\"],[[68050,68095],\"valid\",[],\"NV8\"],[[68096,68099],\"valid\"],[[68100,68100],\"disallowed\"],[[68101,68102],\"valid\"],[[68103,68107],\"disallowed\"],[[68108,68115],\"valid\"],[[68116,68116],\"disallowed\"],[[68117,68119],\"valid\"],[[68120,68120],\"disallowed\"],[[68121,68147],\"valid\"],[[68148,68151],\"disallowed\"],[[68152,68154],\"valid\"],[[68155,68158],\"disallowed\"],[[68159,68159],\"valid\"],[[68160,68167],\"valid\",[],\"NV8\"],[[68168,68175],\"disallowed\"],[[68176,68184],\"valid\",[],\"NV8\"],[[68185,68191],\"disallowed\"],[[68192,68220],\"valid\"],[[68221,68223],\"valid\",[],\"NV8\"],[[68224,68252],\"valid\"],[[68253,68255],\"valid\",[],\"NV8\"],[[68256,68287],\"disallowed\"],[[68288,68295],\"valid\"],[[68296,68296],\"valid\",[],\"NV8\"],[[68297,68326],\"valid\"],[[68327,68330],\"disallowed\"],[[68331,68342],\"valid\",[],\"NV8\"],[[68343,68351],\"disallowed\"],[[68352,68405],\"valid\"],[[68406,68408],\"disallowed\"],[[68409,68415],\"valid\",[],\"NV8\"],[[68416,68437],\"valid\"],[[68438,68439],\"disallowed\"],[[68440,68447],\"valid\",[],\"NV8\"],[[68448,68466],\"valid\"],[[68467,68471],\"disallowed\"],[[68472,68479],\"valid\",[],\"NV8\"],[[68480,68497],\"valid\"],[[68498,68504],\"disallowed\"],[[68505,68508],\"valid\",[],\"NV8\"],[[68509,68520],\"disallowed\"],[[68521,68527],\"valid\",[],\"NV8\"],[[68528,68607],\"disallowed\"],[[68608,68680],\"valid\"],[[68681,68735],\"disallowed\"],[[68736,68736],\"mapped\",[68800]],[[68737,68737],\"mapped\",[68801]],[[68738,68738],\"mapped\",[68802]],[[68739,68739],\"mapped\",[68803]],[[68740,68740],\"mapped\",[68804]],[[68741,68741],\"mapped\",[68805]],[[68742,68742],\"mapped\",[68806]],[[68743,68743],\"mapped\",[68807]],[[68744,68744],\"mapped\",[68808]],[[68745,68745],\"mapped\",[68809]],[[68746,68746],\"mapped\",[68810]],[[68747,68747],\"mapped\",[68811]],[[68748,68748],\"mapped\",[68812]],[[68749,68749],\"mapped\",[68813]],[[68750,68750],\"mapped\",[68814]],[[68751,68751],\"mapped\",[68815]],[[68752,68752],\"mapped\",[68816]],[[68753,68753],\"mapped\",[68817]],[[68754,68754],\"mapped\",[68818]],[[68755,68755],\"mapped\",[68819]],[[68756,68756],\"mapped\",[68820]],[[68757,68757],\"mapped\",[68821]],[[68758,68758],\"mapped\",[68822]],[[68759,68759],\"mapped\",[68823]],[[68760,68760],\"mapped\",[68824]],[[68761,68761],\"mapped\",[68825]],[[68762,68762],\"mapped\",[68826]],[[68763,68763],\"mapped\",[68827]],[[68764,68764],\"mapped\",[68828]],[[68765,68765],\"mapped\",[68829]],[[68766,68766],\"mapped\",[68830]],[[68767,68767],\"mapped\",[68831]],[[68768,68768],\"mapped\",[68832]],[[68769,68769],\"mapped\",[68833]],[[68770,68770],\"mapped\",[68834]],[[68771,68771],\"mapped\",[68835]],[[68772,68772],\"mapped\",[68836]],[[68773,68773],\"mapped\",[68837]],[[68774,68774],\"mapped\",[68838]],[[68775,68775],\"mapped\",[68839]],[[68776,68776],\"mapped\",[68840]],[[68777,68777],\"mapped\",[68841]],[[68778,68778],\"mapped\",[68842]],[[68779,68779],\"mapped\",[68843]],[[68780,68780],\"mapped\",[68844]],[[68781,68781],\"mapped\",[68845]],[[68782,68782],\"mapped\",[68846]],[[68783,68783],\"mapped\",[68847]],[[68784,68784],\"mapped\",[68848]],[[68785,68785],\"mapped\",[68849]],[[68786,68786],\"mapped\",[68850]],[[68787,68799],\"disallowed\"],[[68800,68850],\"valid\"],[[68851,68857],\"disallowed\"],[[68858,68863],\"valid\",[],\"NV8\"],[[68864,69215],\"disallowed\"],[[69216,69246],\"valid\",[],\"NV8\"],[[69247,69631],\"disallowed\"],[[69632,69702],\"valid\"],[[69703,69709],\"valid\",[],\"NV8\"],[[69710,69713],\"disallowed\"],[[69714,69733],\"valid\",[],\"NV8\"],[[69734,69743],\"valid\"],[[69744,69758],\"disallowed\"],[[69759,69759],\"valid\"],[[69760,69818],\"valid\"],[[69819,69820],\"valid\",[],\"NV8\"],[[69821,69821],\"disallowed\"],[[69822,69825],\"valid\",[],\"NV8\"],[[69826,69839],\"disallowed\"],[[69840,69864],\"valid\"],[[69865,69871],\"disallowed\"],[[69872,69881],\"valid\"],[[69882,69887],\"disallowed\"],[[69888,69940],\"valid\"],[[69941,69941],\"disallowed\"],[[69942,69951],\"valid\"],[[69952,69955],\"valid\",[],\"NV8\"],[[69956,69967],\"disallowed\"],[[69968,70003],\"valid\"],[[70004,70005],\"valid\",[],\"NV8\"],[[70006,70006],\"valid\"],[[70007,70015],\"disallowed\"],[[70016,70084],\"valid\"],[[70085,70088],\"valid\",[],\"NV8\"],[[70089,70089],\"valid\",[],\"NV8\"],[[70090,70092],\"valid\"],[[70093,70093],\"valid\",[],\"NV8\"],[[70094,70095],\"disallowed\"],[[70096,70105],\"valid\"],[[70106,70106],\"valid\"],[[70107,70107],\"valid\",[],\"NV8\"],[[70108,70108],\"valid\"],[[70109,70111],\"valid\",[],\"NV8\"],[[70112,70112],\"disallowed\"],[[70113,70132],\"valid\",[],\"NV8\"],[[70133,70143],\"disallowed\"],[[70144,70161],\"valid\"],[[70162,70162],\"disallowed\"],[[70163,70199],\"valid\"],[[70200,70205],\"valid\",[],\"NV8\"],[[70206,70271],\"disallowed\"],[[70272,70278],\"valid\"],[[70279,70279],\"disallowed\"],[[70280,70280],\"valid\"],[[70281,70281],\"disallowed\"],[[70282,70285],\"valid\"],[[70286,70286],\"disallowed\"],[[70287,70301],\"valid\"],[[70302,70302],\"disallowed\"],[[70303,70312],\"valid\"],[[70313,70313],\"valid\",[],\"NV8\"],[[70314,70319],\"disallowed\"],[[70320,70378],\"valid\"],[[70379,70383],\"disallowed\"],[[70384,70393],\"valid\"],[[70394,70399],\"disallowed\"],[[70400,70400],\"valid\"],[[70401,70403],\"valid\"],[[70404,70404],\"disallowed\"],[[70405,70412],\"valid\"],[[70413,70414],\"disallowed\"],[[70415,70416],\"valid\"],[[70417,70418],\"disallowed\"],[[70419,70440],\"valid\"],[[70441,70441],\"disallowed\"],[[70442,70448],\"valid\"],[[70449,70449],\"disallowed\"],[[70450,70451],\"valid\"],[[70452,70452],\"disallowed\"],[[70453,70457],\"valid\"],[[70458,70459],\"disallowed\"],[[70460,70468],\"valid\"],[[70469,70470],\"disallowed\"],[[70471,70472],\"valid\"],[[70473,70474],\"disallowed\"],[[70475,70477],\"valid\"],[[70478,70479],\"disallowed\"],[[70480,70480],\"valid\"],[[70481,70486],\"disallowed\"],[[70487,70487],\"valid\"],[[70488,70492],\"disallowed\"],[[70493,70499],\"valid\"],[[70500,70501],\"disallowed\"],[[70502,70508],\"valid\"],[[70509,70511],\"disallowed\"],[[70512,70516],\"valid\"],[[70517,70783],\"disallowed\"],[[70784,70853],\"valid\"],[[70854,70854],\"valid\",[],\"NV8\"],[[70855,70855],\"valid\"],[[70856,70863],\"disallowed\"],[[70864,70873],\"valid\"],[[70874,71039],\"disallowed\"],[[71040,71093],\"valid\"],[[71094,71095],\"disallowed\"],[[71096,71104],\"valid\"],[[71105,71113],\"valid\",[],\"NV8\"],[[71114,71127],\"valid\",[],\"NV8\"],[[71128,71133],\"valid\"],[[71134,71167],\"disallowed\"],[[71168,71232],\"valid\"],[[71233,71235],\"valid\",[],\"NV8\"],[[71236,71236],\"valid\"],[[71237,71247],\"disallowed\"],[[71248,71257],\"valid\"],[[71258,71295],\"disallowed\"],[[71296,71351],\"valid\"],[[71352,71359],\"disallowed\"],[[71360,71369],\"valid\"],[[71370,71423],\"disallowed\"],[[71424,71449],\"valid\"],[[71450,71452],\"disallowed\"],[[71453,71467],\"valid\"],[[71468,71471],\"disallowed\"],[[71472,71481],\"valid\"],[[71482,71487],\"valid\",[],\"NV8\"],[[71488,71839],\"disallowed\"],[[71840,71840],\"mapped\",[71872]],[[71841,71841],\"mapped\",[71873]],[[71842,71842],\"mapped\",[71874]],[[71843,71843],\"mapped\",[71875]],[[71844,71844],\"mapped\",[71876]],[[71845,71845],\"mapped\",[71877]],[[71846,71846],\"mapped\",[71878]],[[71847,71847],\"mapped\",[71879]],[[71848,71848],\"mapped\",[71880]],[[71849,71849],\"mapped\",[71881]],[[71850,71850],\"mapped\",[71882]],[[71851,71851],\"mapped\",[71883]],[[71852,71852],\"mapped\",[71884]],[[71853,71853],\"mapped\",[71885]],[[71854,71854],\"mapped\",[71886]],[[71855,71855],\"mapped\",[71887]],[[71856,71856],\"mapped\",[71888]],[[71857,71857],\"mapped\",[71889]],[[71858,71858],\"mapped\",[71890]],[[71859,71859],\"mapped\",[71891]],[[71860,71860],\"mapped\",[71892]],[[71861,71861],\"mapped\",[71893]],[[71862,71862],\"mapped\",[71894]],[[71863,71863],\"mapped\",[71895]],[[71864,71864],\"mapped\",[71896]],[[71865,71865],\"mapped\",[71897]],[[71866,71866],\"mapped\",[71898]],[[71867,71867],\"mapped\",[71899]],[[71868,71868],\"mapped\",[71900]],[[71869,71869],\"mapped\",[71901]],[[71870,71870],\"mapped\",[71902]],[[71871,71871],\"mapped\",[71903]],[[71872,71913],\"valid\"],[[71914,71922],\"valid\",[],\"NV8\"],[[71923,71934],\"disallowed\"],[[71935,71935],\"valid\"],[[71936,72383],\"disallowed\"],[[72384,72440],\"valid\"],[[72441,73727],\"disallowed\"],[[73728,74606],\"valid\"],[[74607,74648],\"valid\"],[[74649,74649],\"valid\"],[[74650,74751],\"disallowed\"],[[74752,74850],\"valid\",[],\"NV8\"],[[74851,74862],\"valid\",[],\"NV8\"],[[74863,74863],\"disallowed\"],[[74864,74867],\"valid\",[],\"NV8\"],[[74868,74868],\"valid\",[],\"NV8\"],[[74869,74879],\"disallowed\"],[[74880,75075],\"valid\"],[[75076,77823],\"disallowed\"],[[77824,78894],\"valid\"],[[78895,82943],\"disallowed\"],[[82944,83526],\"valid\"],[[83527,92159],\"disallowed\"],[[92160,92728],\"valid\"],[[92729,92735],\"disallowed\"],[[92736,92766],\"valid\"],[[92767,92767],\"disallowed\"],[[92768,92777],\"valid\"],[[92778,92781],\"disallowed\"],[[92782,92783],\"valid\",[],\"NV8\"],[[92784,92879],\"disallowed\"],[[92880,92909],\"valid\"],[[92910,92911],\"disallowed\"],[[92912,92916],\"valid\"],[[92917,92917],\"valid\",[],\"NV8\"],[[92918,92927],\"disallowed\"],[[92928,92982],\"valid\"],[[92983,92991],\"valid\",[],\"NV8\"],[[92992,92995],\"valid\"],[[92996,92997],\"valid\",[],\"NV8\"],[[92998,93007],\"disallowed\"],[[93008,93017],\"valid\"],[[93018,93018],\"disallowed\"],[[93019,93025],\"valid\",[],\"NV8\"],[[93026,93026],\"disallowed\"],[[93027,93047],\"valid\"],[[93048,93052],\"disallowed\"],[[93053,93071],\"valid\"],[[93072,93951],\"disallowed\"],[[93952,94020],\"valid\"],[[94021,94031],\"disallowed\"],[[94032,94078],\"valid\"],[[94079,94094],\"disallowed\"],[[94095,94111],\"valid\"],[[94112,110591],\"disallowed\"],[[110592,110593],\"valid\"],[[110594,113663],\"disallowed\"],[[113664,113770],\"valid\"],[[113771,113775],\"disallowed\"],[[113776,113788],\"valid\"],[[113789,113791],\"disallowed\"],[[113792,113800],\"valid\"],[[113801,113807],\"disallowed\"],[[113808,113817],\"valid\"],[[113818,113819],\"disallowed\"],[[113820,113820],\"valid\",[],\"NV8\"],[[113821,113822],\"valid\"],[[113823,113823],\"valid\",[],\"NV8\"],[[113824,113827],\"ignored\"],[[113828,118783],\"disallowed\"],[[118784,119029],\"valid\",[],\"NV8\"],[[119030,119039],\"disallowed\"],[[119040,119078],\"valid\",[],\"NV8\"],[[119079,119080],\"disallowed\"],[[119081,119081],\"valid\",[],\"NV8\"],[[119082,119133],\"valid\",[],\"NV8\"],[[119134,119134],\"mapped\",[119127,119141]],[[119135,119135],\"mapped\",[119128,119141]],[[119136,119136],\"mapped\",[119128,119141,119150]],[[119137,119137],\"mapped\",[119128,119141,119151]],[[119138,119138],\"mapped\",[119128,119141,119152]],[[119139,119139],\"mapped\",[119128,119141,119153]],[[119140,119140],\"mapped\",[119128,119141,119154]],[[119141,119154],\"valid\",[],\"NV8\"],[[119155,119162],\"disallowed\"],[[119163,119226],\"valid\",[],\"NV8\"],[[119227,119227],\"mapped\",[119225,119141]],[[119228,119228],\"mapped\",[119226,119141]],[[119229,119229],\"mapped\",[119225,119141,119150]],[[119230,119230],\"mapped\",[119226,119141,119150]],[[119231,119231],\"mapped\",[119225,119141,119151]],[[119232,119232],\"mapped\",[119226,119141,119151]],[[119233,119261],\"valid\",[],\"NV8\"],[[119262,119272],\"valid\",[],\"NV8\"],[[119273,119295],\"disallowed\"],[[119296,119365],\"valid\",[],\"NV8\"],[[119366,119551],\"disallowed\"],[[119552,119638],\"valid\",[],\"NV8\"],[[119639,119647],\"disallowed\"],[[119648,119665],\"valid\",[],\"NV8\"],[[119666,119807],\"disallowed\"],[[119808,119808],\"mapped\",[97]],[[119809,119809],\"mapped\",[98]],[[119810,119810],\"mapped\",[99]],[[119811,119811],\"mapped\",[100]],[[119812,119812],\"mapped\",[101]],[[119813,119813],\"mapped\",[102]],[[119814,119814],\"mapped\",[103]],[[119815,119815],\"mapped\",[104]],[[119816,119816],\"mapped\",[105]],[[119817,119817],\"mapped\",[106]],[[119818,119818],\"mapped\",[107]],[[119819,119819],\"mapped\",[108]],[[119820,119820],\"mapped\",[109]],[[119821,119821],\"mapped\",[110]],[[119822,119822],\"mapped\",[111]],[[119823,119823],\"mapped\",[112]],[[119824,119824],\"mapped\",[113]],[[119825,119825],\"mapped\",[114]],[[119826,119826],\"mapped\",[115]],[[119827,119827],\"mapped\",[116]],[[119828,119828],\"mapped\",[117]],[[119829,119829],\"mapped\",[118]],[[119830,119830],\"mapped\",[119]],[[119831,119831],\"mapped\",[120]],[[119832,119832],\"mapped\",[121]],[[119833,119833],\"mapped\",[122]],[[119834,119834],\"mapped\",[97]],[[119835,119835],\"mapped\",[98]],[[119836,119836],\"mapped\",[99]],[[119837,119837],\"mapped\",[100]],[[119838,119838],\"mapped\",[101]],[[119839,119839],\"mapped\",[102]],[[119840,119840],\"mapped\",[103]],[[119841,119841],\"mapped\",[104]],[[119842,119842],\"mapped\",[105]],[[119843,119843],\"mapped\",[106]],[[119844,119844],\"mapped\",[107]],[[119845,119845],\"mapped\",[108]],[[119846,119846],\"mapped\",[109]],[[119847,119847],\"mapped\",[110]],[[119848,119848],\"mapped\",[111]],[[119849,119849],\"mapped\",[112]],[[119850,119850],\"mapped\",[113]],[[119851,119851],\"mapped\",[114]],[[119852,119852],\"mapped\",[115]],[[119853,119853],\"mapped\",[116]],[[119854,119854],\"mapped\",[117]],[[119855,119855],\"mapped\",[118]],[[119856,119856],\"mapped\",[119]],[[119857,119857],\"mapped\",[120]],[[119858,119858],\"mapped\",[121]],[[119859,119859],\"mapped\",[122]],[[119860,119860],\"mapped\",[97]],[[119861,119861],\"mapped\",[98]],[[119862,119862],\"mapped\",[99]],[[119863,119863],\"mapped\",[100]],[[119864,119864],\"mapped\",[101]],[[119865,119865],\"mapped\",[102]],[[119866,119866],\"mapped\",[103]],[[119867,119867],\"mapped\",[104]],[[119868,119868],\"mapped\",[105]],[[119869,119869],\"mapped\",[106]],[[119870,119870],\"mapped\",[107]],[[119871,119871],\"mapped\",[108]],[[119872,119872],\"mapped\",[109]],[[119873,119873],\"mapped\",[110]],[[119874,119874],\"mapped\",[111]],[[119875,119875],\"mapped\",[112]],[[119876,119876],\"mapped\",[113]],[[119877,119877],\"mapped\",[114]],[[119878,119878],\"mapped\",[115]],[[119879,119879],\"mapped\",[116]],[[119880,119880],\"mapped\",[117]],[[119881,119881],\"mapped\",[118]],[[119882,119882],\"mapped\",[119]],[[119883,119883],\"mapped\",[120]],[[119884,119884],\"mapped\",[121]],[[119885,119885],\"mapped\",[122]],[[119886,119886],\"mapped\",[97]],[[119887,119887],\"mapped\",[98]],[[119888,119888],\"mapped\",[99]],[[119889,119889],\"mapped\",[100]],[[119890,119890],\"mapped\",[101]],[[119891,119891],\"mapped\",[102]],[[119892,119892],\"mapped\",[103]],[[119893,119893],\"disallowed\"],[[119894,119894],\"mapped\",[105]],[[119895,119895],\"mapped\",[106]],[[119896,119896],\"mapped\",[107]],[[119897,119897],\"mapped\",[108]],[[119898,119898],\"mapped\",[109]],[[119899,119899],\"mapped\",[110]],[[119900,119900],\"mapped\",[111]],[[119901,119901],\"mapped\",[112]],[[119902,119902],\"mapped\",[113]],[[119903,119903],\"mapped\",[114]],[[119904,119904],\"mapped\",[115]],[[119905,119905],\"mapped\",[116]],[[119906,119906],\"mapped\",[117]],[[119907,119907],\"mapped\",[118]],[[119908,119908],\"mapped\",[119]],[[119909,119909],\"mapped\",[120]],[[119910,119910],\"mapped\",[121]],[[119911,119911],\"mapped\",[122]],[[119912,119912],\"mapped\",[97]],[[119913,119913],\"mapped\",[98]],[[119914,119914],\"mapped\",[99]],[[119915,119915],\"mapped\",[100]],[[119916,119916],\"mapped\",[101]],[[119917,119917],\"mapped\",[102]],[[119918,119918],\"mapped\",[103]],[[119919,119919],\"mapped\",[104]],[[119920,119920],\"mapped\",[105]],[[119921,119921],\"mapped\",[106]],[[119922,119922],\"mapped\",[107]],[[119923,119923],\"mapped\",[108]],[[119924,119924],\"mapped\",[109]],[[119925,119925],\"mapped\",[110]],[[119926,119926],\"mapped\",[111]],[[119927,119927],\"mapped\",[112]],[[119928,119928],\"mapped\",[113]],[[119929,119929],\"mapped\",[114]],[[119930,119930],\"mapped\",[115]],[[119931,119931],\"mapped\",[116]],[[119932,119932],\"mapped\",[117]],[[119933,119933],\"mapped\",[118]],[[119934,119934],\"mapped\",[119]],[[119935,119935],\"mapped\",[120]],[[119936,119936],\"mapped\",[121]],[[119937,119937],\"mapped\",[122]],[[119938,119938],\"mapped\",[97]],[[119939,119939],\"mapped\",[98]],[[119940,119940],\"mapped\",[99]],[[119941,119941],\"mapped\",[100]],[[119942,119942],\"mapped\",[101]],[[119943,119943],\"mapped\",[102]],[[119944,119944],\"mapped\",[103]],[[119945,119945],\"mapped\",[104]],[[119946,119946],\"mapped\",[105]],[[119947,119947],\"mapped\",[106]],[[119948,119948],\"mapped\",[107]],[[119949,119949],\"mapped\",[108]],[[119950,119950],\"mapped\",[109]],[[119951,119951],\"mapped\",[110]],[[119952,119952],\"mapped\",[111]],[[119953,119953],\"mapped\",[112]],[[119954,119954],\"mapped\",[113]],[[119955,119955],\"mapped\",[114]],[[119956,119956],\"mapped\",[115]],[[119957,119957],\"mapped\",[116]],[[119958,119958],\"mapped\",[117]],[[119959,119959],\"mapped\",[118]],[[119960,119960],\"mapped\",[119]],[[119961,119961],\"mapped\",[120]],[[119962,119962],\"mapped\",[121]],[[119963,119963],\"mapped\",[122]],[[119964,119964],\"mapped\",[97]],[[119965,119965],\"disallowed\"],[[119966,119966],\"mapped\",[99]],[[119967,119967],\"mapped\",[100]],[[119968,119969],\"disallowed\"],[[119970,119970],\"mapped\",[103]],[[119971,119972],\"disallowed\"],[[119973,119973],\"mapped\",[106]],[[119974,119974],\"mapped\",[107]],[[119975,119976],\"disallowed\"],[[119977,119977],\"mapped\",[110]],[[119978,119978],\"mapped\",[111]],[[119979,119979],\"mapped\",[112]],[[119980,119980],\"mapped\",[113]],[[119981,119981],\"disallowed\"],[[119982,119982],\"mapped\",[115]],[[119983,119983],\"mapped\",[116]],[[119984,119984],\"mapped\",[117]],[[119985,119985],\"mapped\",[118]],[[119986,119986],\"mapped\",[119]],[[119987,119987],\"mapped\",[120]],[[119988,119988],\"mapped\",[121]],[[119989,119989],\"mapped\",[122]],[[119990,119990],\"mapped\",[97]],[[119991,119991],\"mapped\",[98]],[[119992,119992],\"mapped\",[99]],[[119993,119993],\"mapped\",[100]],[[119994,119994],\"disallowed\"],[[119995,119995],\"mapped\",[102]],[[119996,119996],\"disallowed\"],[[119997,119997],\"mapped\",[104]],[[119998,119998],\"mapped\",[105]],[[119999,119999],\"mapped\",[106]],[[120000,120000],\"mapped\",[107]],[[120001,120001],\"mapped\",[108]],[[120002,120002],\"mapped\",[109]],[[120003,120003],\"mapped\",[110]],[[120004,120004],\"disallowed\"],[[120005,120005],\"mapped\",[112]],[[120006,120006],\"mapped\",[113]],[[120007,120007],\"mapped\",[114]],[[120008,120008],\"mapped\",[115]],[[120009,120009],\"mapped\",[116]],[[120010,120010],\"mapped\",[117]],[[120011,120011],\"mapped\",[118]],[[120012,120012],\"mapped\",[119]],[[120013,120013],\"mapped\",[120]],[[120014,120014],\"mapped\",[121]],[[120015,120015],\"mapped\",[122]],[[120016,120016],\"mapped\",[97]],[[120017,120017],\"mapped\",[98]],[[120018,120018],\"mapped\",[99]],[[120019,120019],\"mapped\",[100]],[[120020,120020],\"mapped\",[101]],[[120021,120021],\"mapped\",[102]],[[120022,120022],\"mapped\",[103]],[[120023,120023],\"mapped\",[104]],[[120024,120024],\"mapped\",[105]],[[120025,120025],\"mapped\",[106]],[[120026,120026],\"mapped\",[107]],[[120027,120027],\"mapped\",[108]],[[120028,120028],\"mapped\",[109]],[[120029,120029],\"mapped\",[110]],[[120030,120030],\"mapped\",[111]],[[120031,120031],\"mapped\",[112]],[[120032,120032],\"mapped\",[113]],[[120033,120033],\"mapped\",[114]],[[120034,120034],\"mapped\",[115]],[[120035,120035],\"mapped\",[116]],[[120036,120036],\"mapped\",[117]],[[120037,120037],\"mapped\",[118]],[[120038,120038],\"mapped\",[119]],[[120039,120039],\"mapped\",[120]],[[120040,120040],\"mapped\",[121]],[[120041,120041],\"mapped\",[122]],[[120042,120042],\"mapped\",[97]],[[120043,120043],\"mapped\",[98]],[[120044,120044],\"mapped\",[99]],[[120045,120045],\"mapped\",[100]],[[120046,120046],\"mapped\",[101]],[[120047,120047],\"mapped\",[102]],[[120048,120048],\"mapped\",[103]],[[120049,120049],\"mapped\",[104]],[[120050,120050],\"mapped\",[105]],[[120051,120051],\"mapped\",[106]],[[120052,120052],\"mapped\",[107]],[[120053,120053],\"mapped\",[108]],[[120054,120054],\"mapped\",[109]],[[120055,120055],\"mapped\",[110]],[[120056,120056],\"mapped\",[111]],[[120057,120057],\"mapped\",[112]],[[120058,120058],\"mapped\",[113]],[[120059,120059],\"mapped\",[114]],[[120060,120060],\"mapped\",[115]],[[120061,120061],\"mapped\",[116]],[[120062,120062],\"mapped\",[117]],[[120063,120063],\"mapped\",[118]],[[120064,120064],\"mapped\",[119]],[[120065,120065],\"mapped\",[120]],[[120066,120066],\"mapped\",[121]],[[120067,120067],\"mapped\",[122]],[[120068,120068],\"mapped\",[97]],[[120069,120069],\"mapped\",[98]],[[120070,120070],\"disallowed\"],[[120071,120071],\"mapped\",[100]],[[120072,120072],\"mapped\",[101]],[[120073,120073],\"mapped\",[102]],[[120074,120074],\"mapped\",[103]],[[120075,120076],\"disallowed\"],[[120077,120077],\"mapped\",[106]],[[120078,120078],\"mapped\",[107]],[[120079,120079],\"mapped\",[108]],[[120080,120080],\"mapped\",[109]],[[120081,120081],\"mapped\",[110]],[[120082,120082],\"mapped\",[111]],[[120083,120083],\"mapped\",[112]],[[120084,120084],\"mapped\",[113]],[[120085,120085],\"disallowed\"],[[120086,120086],\"mapped\",[115]],[[120087,120087],\"mapped\",[116]],[[120088,120088],\"mapped\",[117]],[[120089,120089],\"mapped\",[118]],[[120090,120090],\"mapped\",[119]],[[120091,120091],\"mapped\",[120]],[[120092,120092],\"mapped\",[121]],[[120093,120093],\"disallowed\"],[[120094,120094],\"mapped\",[97]],[[120095,120095],\"mapped\",[98]],[[120096,120096],\"mapped\",[99]],[[120097,120097],\"mapped\",[100]],[[120098,120098],\"mapped\",[101]],[[120099,120099],\"mapped\",[102]],[[120100,120100],\"mapped\",[103]],[[120101,120101],\"mapped\",[104]],[[120102,120102],\"mapped\",[105]],[[120103,120103],\"mapped\",[106]],[[120104,120104],\"mapped\",[107]],[[120105,120105],\"mapped\",[108]],[[120106,120106],\"mapped\",[109]],[[120107,120107],\"mapped\",[110]],[[120108,120108],\"mapped\",[111]],[[120109,120109],\"mapped\",[112]],[[120110,120110],\"mapped\",[113]],[[120111,120111],\"mapped\",[114]],[[120112,120112],\"mapped\",[115]],[[120113,120113],\"mapped\",[116]],[[120114,120114],\"mapped\",[117]],[[120115,120115],\"mapped\",[118]],[[120116,120116],\"mapped\",[119]],[[120117,120117],\"mapped\",[120]],[[120118,120118],\"mapped\",[121]],[[120119,120119],\"mapped\",[122]],[[120120,120120],\"mapped\",[97]],[[120121,120121],\"mapped\",[98]],[[120122,120122],\"disallowed\"],[[120123,120123],\"mapped\",[100]],[[120124,120124],\"mapped\",[101]],[[120125,120125],\"mapped\",[102]],[[120126,120126],\"mapped\",[103]],[[120127,120127],\"disallowed\"],[[120128,120128],\"mapped\",[105]],[[120129,120129],\"mapped\",[106]],[[120130,120130],\"mapped\",[107]],[[120131,120131],\"mapped\",[108]],[[120132,120132],\"mapped\",[109]],[[120133,120133],\"disallowed\"],[[120134,120134],\"mapped\",[111]],[[120135,120137],\"disallowed\"],[[120138,120138],\"mapped\",[115]],[[120139,120139],\"mapped\",[116]],[[120140,120140],\"mapped\",[117]],[[120141,120141],\"mapped\",[118]],[[120142,120142],\"mapped\",[119]],[[120143,120143],\"mapped\",[120]],[[120144,120144],\"mapped\",[121]],[[120145,120145],\"disallowed\"],[[120146,120146],\"mapped\",[97]],[[120147,120147],\"mapped\",[98]],[[120148,120148],\"mapped\",[99]],[[120149,120149],\"mapped\",[100]],[[120150,120150],\"mapped\",[101]],[[120151,120151],\"mapped\",[102]],[[120152,120152],\"mapped\",[103]],[[120153,120153],\"mapped\",[104]],[[120154,120154],\"mapped\",[105]],[[120155,120155],\"mapped\",[106]],[[120156,120156],\"mapped\",[107]],[[120157,120157],\"mapped\",[108]],[[120158,120158],\"mapped\",[109]],[[120159,120159],\"mapped\",[110]],[[120160,120160],\"mapped\",[111]],[[120161,120161],\"mapped\",[112]],[[120162,120162],\"mapped\",[113]],[[120163,120163],\"mapped\",[114]],[[120164,120164],\"mapped\",[115]],[[120165,120165],\"mapped\",[116]],[[120166,120166],\"mapped\",[117]],[[120167,120167],\"mapped\",[118]],[[120168,120168],\"mapped\",[119]],[[120169,120169],\"mapped\",[120]],[[120170,120170],\"mapped\",[121]],[[120171,120171],\"mapped\",[122]],[[120172,120172],\"mapped\",[97]],[[120173,120173],\"mapped\",[98]],[[120174,120174],\"mapped\",[99]],[[120175,120175],\"mapped\",[100]],[[120176,120176],\"mapped\",[101]],[[120177,120177],\"mapped\",[102]],[[120178,120178],\"mapped\",[103]],[[120179,120179],\"mapped\",[104]],[[120180,120180],\"mapped\",[105]],[[120181,120181],\"mapped\",[106]],[[120182,120182],\"mapped\",[107]],[[120183,120183],\"mapped\",[108]],[[120184,120184],\"mapped\",[109]],[[120185,120185],\"mapped\",[110]],[[120186,120186],\"mapped\",[111]],[[120187,120187],\"mapped\",[112]],[[120188,120188],\"mapped\",[113]],[[120189,120189],\"mapped\",[114]],[[120190,120190],\"mapped\",[115]],[[120191,120191],\"mapped\",[116]],[[120192,120192],\"mapped\",[117]],[[120193,120193],\"mapped\",[118]],[[120194,120194],\"mapped\",[119]],[[120195,120195],\"mapped\",[120]],[[120196,120196],\"mapped\",[121]],[[120197,120197],\"mapped\",[122]],[[120198,120198],\"mapped\",[97]],[[120199,120199],\"mapped\",[98]],[[120200,120200],\"mapped\",[99]],[[120201,120201],\"mapped\",[100]],[[120202,120202],\"mapped\",[101]],[[120203,120203],\"mapped\",[102]],[[120204,120204],\"mapped\",[103]],[[120205,120205],\"mapped\",[104]],[[120206,120206],\"mapped\",[105]],[[120207,120207],\"mapped\",[106]],[[120208,120208],\"mapped\",[107]],[[120209,120209],\"mapped\",[108]],[[120210,120210],\"mapped\",[109]],[[120211,120211],\"mapped\",[110]],[[120212,120212],\"mapped\",[111]],[[120213,120213],\"mapped\",[112]],[[120214,120214],\"mapped\",[113]],[[120215,120215],\"mapped\",[114]],[[120216,120216],\"mapped\",[115]],[[120217,120217],\"mapped\",[116]],[[120218,120218],\"mapped\",[117]],[[120219,120219],\"mapped\",[118]],[[120220,120220],\"mapped\",[119]],[[120221,120221],\"mapped\",[120]],[[120222,120222],\"mapped\",[121]],[[120223,120223],\"mapped\",[122]],[[120224,120224],\"mapped\",[97]],[[120225,120225],\"mapped\",[98]],[[120226,120226],\"mapped\",[99]],[[120227,120227],\"mapped\",[100]],[[120228,120228],\"mapped\",[101]],[[120229,120229],\"mapped\",[102]],[[120230,120230],\"mapped\",[103]],[[120231,120231],\"mapped\",[104]],[[120232,120232],\"mapped\",[105]],[[120233,120233],\"mapped\",[106]],[[120234,120234],\"mapped\",[107]],[[120235,120235],\"mapped\",[108]],[[120236,120236],\"mapped\",[109]],[[120237,120237],\"mapped\",[110]],[[120238,120238],\"mapped\",[111]],[[120239,120239],\"mapped\",[112]],[[120240,120240],\"mapped\",[113]],[[120241,120241],\"mapped\",[114]],[[120242,120242],\"mapped\",[115]],[[120243,120243],\"mapped\",[116]],[[120244,120244],\"mapped\",[117]],[[120245,120245],\"mapped\",[118]],[[120246,120246],\"mapped\",[119]],[[120247,120247],\"mapped\",[120]],[[120248,120248],\"mapped\",[121]],[[120249,120249],\"mapped\",[122]],[[120250,120250],\"mapped\",[97]],[[120251,120251],\"mapped\",[98]],[[120252,120252],\"mapped\",[99]],[[120253,120253],\"mapped\",[100]],[[120254,120254],\"mapped\",[101]],[[120255,120255],\"mapped\",[102]],[[120256,120256],\"mapped\",[103]],[[120257,120257],\"mapped\",[104]],[[120258,120258],\"mapped\",[105]],[[120259,120259],\"mapped\",[106]],[[120260,120260],\"mapped\",[107]],[[120261,120261],\"mapped\",[108]],[[120262,120262],\"mapped\",[109]],[[120263,120263],\"mapped\",[110]],[[120264,120264],\"mapped\",[111]],[[120265,120265],\"mapped\",[112]],[[120266,120266],\"mapped\",[113]],[[120267,120267],\"mapped\",[114]],[[120268,120268],\"mapped\",[115]],[[120269,120269],\"mapped\",[116]],[[120270,120270],\"mapped\",[117]],[[120271,120271],\"mapped\",[118]],[[120272,120272],\"mapped\",[119]],[[120273,120273],\"mapped\",[120]],[[120274,120274],\"mapped\",[121]],[[120275,120275],\"mapped\",[122]],[[120276,120276],\"mapped\",[97]],[[120277,120277],\"mapped\",[98]],[[120278,120278],\"mapped\",[99]],[[120279,120279],\"mapped\",[100]],[[120280,120280],\"mapped\",[101]],[[120281,120281],\"mapped\",[102]],[[120282,120282],\"mapped\",[103]],[[120283,120283],\"mapped\",[104]],[[120284,120284],\"mapped\",[105]],[[120285,120285],\"mapped\",[106]],[[120286,120286],\"mapped\",[107]],[[120287,120287],\"mapped\",[108]],[[120288,120288],\"mapped\",[109]],[[120289,120289],\"mapped\",[110]],[[120290,120290],\"mapped\",[111]],[[120291,120291],\"mapped\",[112]],[[120292,120292],\"mapped\",[113]],[[120293,120293],\"mapped\",[114]],[[120294,120294],\"mapped\",[115]],[[120295,120295],\"mapped\",[116]],[[120296,120296],\"mapped\",[117]],[[120297,120297],\"mapped\",[118]],[[120298,120298],\"mapped\",[119]],[[120299,120299],\"mapped\",[120]],[[120300,120300],\"mapped\",[121]],[[120301,120301],\"mapped\",[122]],[[120302,120302],\"mapped\",[97]],[[120303,120303],\"mapped\",[98]],[[120304,120304],\"mapped\",[99]],[[120305,120305],\"mapped\",[100]],[[120306,120306],\"mapped\",[101]],[[120307,120307],\"mapped\",[102]],[[120308,120308],\"mapped\",[103]],[[120309,120309],\"mapped\",[104]],[[120310,120310],\"mapped\",[105]],[[120311,120311],\"mapped\",[106]],[[120312,120312],\"mapped\",[107]],[[120313,120313],\"mapped\",[108]],[[120314,120314],\"mapped\",[109]],[[120315,120315],\"mapped\",[110]],[[120316,120316],\"mapped\",[111]],[[120317,120317],\"mapped\",[112]],[[120318,120318],\"mapped\",[113]],[[120319,120319],\"mapped\",[114]],[[120320,120320],\"mapped\",[115]],[[120321,120321],\"mapped\",[116]],[[120322,120322],\"mapped\",[117]],[[120323,120323],\"mapped\",[118]],[[120324,120324],\"mapped\",[119]],[[120325,120325],\"mapped\",[120]],[[120326,120326],\"mapped\",[121]],[[120327,120327],\"mapped\",[122]],[[120328,120328],\"mapped\",[97]],[[120329,120329],\"mapped\",[98]],[[120330,120330],\"mapped\",[99]],[[120331,120331],\"mapped\",[100]],[[120332,120332],\"mapped\",[101]],[[120333,120333],\"mapped\",[102]],[[120334,120334],\"mapped\",[103]],[[120335,120335],\"mapped\",[104]],[[120336,120336],\"mapped\",[105]],[[120337,120337],\"mapped\",[106]],[[120338,120338],\"mapped\",[107]],[[120339,120339],\"mapped\",[108]],[[120340,120340],\"mapped\",[109]],[[120341,120341],\"mapped\",[110]],[[120342,120342],\"mapped\",[111]],[[120343,120343],\"mapped\",[112]],[[120344,120344],\"mapped\",[113]],[[120345,120345],\"mapped\",[114]],[[120346,120346],\"mapped\",[115]],[[120347,120347],\"mapped\",[116]],[[120348,120348],\"mapped\",[117]],[[120349,120349],\"mapped\",[118]],[[120350,120350],\"mapped\",[119]],[[120351,120351],\"mapped\",[120]],[[120352,120352],\"mapped\",[121]],[[120353,120353],\"mapped\",[122]],[[120354,120354],\"mapped\",[97]],[[120355,120355],\"mapped\",[98]],[[120356,120356],\"mapped\",[99]],[[120357,120357],\"mapped\",[100]],[[120358,120358],\"mapped\",[101]],[[120359,120359],\"mapped\",[102]],[[120360,120360],\"mapped\",[103]],[[120361,120361],\"mapped\",[104]],[[120362,120362],\"mapped\",[105]],[[120363,120363],\"mapped\",[106]],[[120364,120364],\"mapped\",[107]],[[120365,120365],\"mapped\",[108]],[[120366,120366],\"mapped\",[109]],[[120367,120367],\"mapped\",[110]],[[120368,120368],\"mapped\",[111]],[[120369,120369],\"mapped\",[112]],[[120370,120370],\"mapped\",[113]],[[120371,120371],\"mapped\",[114]],[[120372,120372],\"mapped\",[115]],[[120373,120373],\"mapped\",[116]],[[120374,120374],\"mapped\",[117]],[[120375,120375],\"mapped\",[118]],[[120376,120376],\"mapped\",[119]],[[120377,120377],\"mapped\",[120]],[[120378,120378],\"mapped\",[121]],[[120379,120379],\"mapped\",[122]],[[120380,120380],\"mapped\",[97]],[[120381,120381],\"mapped\",[98]],[[120382,120382],\"mapped\",[99]],[[120383,120383],\"mapped\",[100]],[[120384,120384],\"mapped\",[101]],[[120385,120385],\"mapped\",[102]],[[120386,120386],\"mapped\",[103]],[[120387,120387],\"mapped\",[104]],[[120388,120388],\"mapped\",[105]],[[120389,120389],\"mapped\",[106]],[[120390,120390],\"mapped\",[107]],[[120391,120391],\"mapped\",[108]],[[120392,120392],\"mapped\",[109]],[[120393,120393],\"mapped\",[110]],[[120394,120394],\"mapped\",[111]],[[120395,120395],\"mapped\",[112]],[[120396,120396],\"mapped\",[113]],[[120397,120397],\"mapped\",[114]],[[120398,120398],\"mapped\",[115]],[[120399,120399],\"mapped\",[116]],[[120400,120400],\"mapped\",[117]],[[120401,120401],\"mapped\",[118]],[[120402,120402],\"mapped\",[119]],[[120403,120403],\"mapped\",[120]],[[120404,120404],\"mapped\",[121]],[[120405,120405],\"mapped\",[122]],[[120406,120406],\"mapped\",[97]],[[120407,120407],\"mapped\",[98]],[[120408,120408],\"mapped\",[99]],[[120409,120409],\"mapped\",[100]],[[120410,120410],\"mapped\",[101]],[[120411,120411],\"mapped\",[102]],[[120412,120412],\"mapped\",[103]],[[120413,120413],\"mapped\",[104]],[[120414,120414],\"mapped\",[105]],[[120415,120415],\"mapped\",[106]],[[120416,120416],\"mapped\",[107]],[[120417,120417],\"mapped\",[108]],[[120418,120418],\"mapped\",[109]],[[120419,120419],\"mapped\",[110]],[[120420,120420],\"mapped\",[111]],[[120421,120421],\"mapped\",[112]],[[120422,120422],\"mapped\",[113]],[[120423,120423],\"mapped\",[114]],[[120424,120424],\"mapped\",[115]],[[120425,120425],\"mapped\",[116]],[[120426,120426],\"mapped\",[117]],[[120427,120427],\"mapped\",[118]],[[120428,120428],\"mapped\",[119]],[[120429,120429],\"mapped\",[120]],[[120430,120430],\"mapped\",[121]],[[120431,120431],\"mapped\",[122]],[[120432,120432],\"mapped\",[97]],[[120433,120433],\"mapped\",[98]],[[120434,120434],\"mapped\",[99]],[[120435,120435],\"mapped\",[100]],[[120436,120436],\"mapped\",[101]],[[120437,120437],\"mapped\",[102]],[[120438,120438],\"mapped\",[103]],[[120439,120439],\"mapped\",[104]],[[120440,120440],\"mapped\",[105]],[[120441,120441],\"mapped\",[106]],[[120442,120442],\"mapped\",[107]],[[120443,120443],\"mapped\",[108]],[[120444,120444],\"mapped\",[109]],[[120445,120445],\"mapped\",[110]],[[120446,120446],\"mapped\",[111]],[[120447,120447],\"mapped\",[112]],[[120448,120448],\"mapped\",[113]],[[120449,120449],\"mapped\",[114]],[[120450,120450],\"mapped\",[115]],[[120451,120451],\"mapped\",[116]],[[120452,120452],\"mapped\",[117]],[[120453,120453],\"mapped\",[118]],[[120454,120454],\"mapped\",[119]],[[120455,120455],\"mapped\",[120]],[[120456,120456],\"mapped\",[121]],[[120457,120457],\"mapped\",[122]],[[120458,120458],\"mapped\",[97]],[[120459,120459],\"mapped\",[98]],[[120460,120460],\"mapped\",[99]],[[120461,120461],\"mapped\",[100]],[[120462,120462],\"mapped\",[101]],[[120463,120463],\"mapped\",[102]],[[120464,120464],\"mapped\",[103]],[[120465,120465],\"mapped\",[104]],[[120466,120466],\"mapped\",[105]],[[120467,120467],\"mapped\",[106]],[[120468,120468],\"mapped\",[107]],[[120469,120469],\"mapped\",[108]],[[120470,120470],\"mapped\",[109]],[[120471,120471],\"mapped\",[110]],[[120472,120472],\"mapped\",[111]],[[120473,120473],\"mapped\",[112]],[[120474,120474],\"mapped\",[113]],[[120475,120475],\"mapped\",[114]],[[120476,120476],\"mapped\",[115]],[[120477,120477],\"mapped\",[116]],[[120478,120478],\"mapped\",[117]],[[120479,120479],\"mapped\",[118]],[[120480,120480],\"mapped\",[119]],[[120481,120481],\"mapped\",[120]],[[120482,120482],\"mapped\",[121]],[[120483,120483],\"mapped\",[122]],[[120484,120484],\"mapped\",[305]],[[120485,120485],\"mapped\",[567]],[[120486,120487],\"disallowed\"],[[120488,120488],\"mapped\",[945]],[[120489,120489],\"mapped\",[946]],[[120490,120490],\"mapped\",[947]],[[120491,120491],\"mapped\",[948]],[[120492,120492],\"mapped\",[949]],[[120493,120493],\"mapped\",[950]],[[120494,120494],\"mapped\",[951]],[[120495,120495],\"mapped\",[952]],[[120496,120496],\"mapped\",[953]],[[120497,120497],\"mapped\",[954]],[[120498,120498],\"mapped\",[955]],[[120499,120499],\"mapped\",[956]],[[120500,120500],\"mapped\",[957]],[[120501,120501],\"mapped\",[958]],[[120502,120502],\"mapped\",[959]],[[120503,120503],\"mapped\",[960]],[[120504,120504],\"mapped\",[961]],[[120505,120505],\"mapped\",[952]],[[120506,120506],\"mapped\",[963]],[[120507,120507],\"mapped\",[964]],[[120508,120508],\"mapped\",[965]],[[120509,120509],\"mapped\",[966]],[[120510,120510],\"mapped\",[967]],[[120511,120511],\"mapped\",[968]],[[120512,120512],\"mapped\",[969]],[[120513,120513],\"mapped\",[8711]],[[120514,120514],\"mapped\",[945]],[[120515,120515],\"mapped\",[946]],[[120516,120516],\"mapped\",[947]],[[120517,120517],\"mapped\",[948]],[[120518,120518],\"mapped\",[949]],[[120519,120519],\"mapped\",[950]],[[120520,120520],\"mapped\",[951]],[[120521,120521],\"mapped\",[952]],[[120522,120522],\"mapped\",[953]],[[120523,120523],\"mapped\",[954]],[[120524,120524],\"mapped\",[955]],[[120525,120525],\"mapped\",[956]],[[120526,120526],\"mapped\",[957]],[[120527,120527],\"mapped\",[958]],[[120528,120528],\"mapped\",[959]],[[120529,120529],\"mapped\",[960]],[[120530,120530],\"mapped\",[961]],[[120531,120532],\"mapped\",[963]],[[120533,120533],\"mapped\",[964]],[[120534,120534],\"mapped\",[965]],[[120535,120535],\"mapped\",[966]],[[120536,120536],\"mapped\",[967]],[[120537,120537],\"mapped\",[968]],[[120538,120538],\"mapped\",[969]],[[120539,120539],\"mapped\",[8706]],[[120540,120540],\"mapped\",[949]],[[120541,120541],\"mapped\",[952]],[[120542,120542],\"mapped\",[954]],[[120543,120543],\"mapped\",[966]],[[120544,120544],\"mapped\",[961]],[[120545,120545],\"mapped\",[960]],[[120546,120546],\"mapped\",[945]],[[120547,120547],\"mapped\",[946]],[[120548,120548],\"mapped\",[947]],[[120549,120549],\"mapped\",[948]],[[120550,120550],\"mapped\",[949]],[[120551,120551],\"mapped\",[950]],[[120552,120552],\"mapped\",[951]],[[120553,120553],\"mapped\",[952]],[[120554,120554],\"mapped\",[953]],[[120555,120555],\"mapped\",[954]],[[120556,120556],\"mapped\",[955]],[[120557,120557],\"mapped\",[956]],[[120558,120558],\"mapped\",[957]],[[120559,120559],\"mapped\",[958]],[[120560,120560],\"mapped\",[959]],[[120561,120561],\"mapped\",[960]],[[120562,120562],\"mapped\",[961]],[[120563,120563],\"mapped\",[952]],[[120564,120564],\"mapped\",[963]],[[120565,120565],\"mapped\",[964]],[[120566,120566],\"mapped\",[965]],[[120567,120567],\"mapped\",[966]],[[120568,120568],\"mapped\",[967]],[[120569,120569],\"mapped\",[968]],[[120570,120570],\"mapped\",[969]],[[120571,120571],\"mapped\",[8711]],[[120572,120572],\"mapped\",[945]],[[120573,120573],\"mapped\",[946]],[[120574,120574],\"mapped\",[947]],[[120575,120575],\"mapped\",[948]],[[120576,120576],\"mapped\",[949]],[[120577,120577],\"mapped\",[950]],[[120578,120578],\"mapped\",[951]],[[120579,120579],\"mapped\",[952]],[[120580,120580],\"mapped\",[953]],[[120581,120581],\"mapped\",[954]],[[120582,120582],\"mapped\",[955]],[[120583,120583],\"mapped\",[956]],[[120584,120584],\"mapped\",[957]],[[120585,120585],\"mapped\",[958]],[[120586,120586],\"mapped\",[959]],[[120587,120587],\"mapped\",[960]],[[120588,120588],\"mapped\",[961]],[[120589,120590],\"mapped\",[963]],[[120591,120591],\"mapped\",[964]],[[120592,120592],\"mapped\",[965]],[[120593,120593],\"mapped\",[966]],[[120594,120594],\"mapped\",[967]],[[120595,120595],\"mapped\",[968]],[[120596,120596],\"mapped\",[969]],[[120597,120597],\"mapped\",[8706]],[[120598,120598],\"mapped\",[949]],[[120599,120599],\"mapped\",[952]],[[120600,120600],\"mapped\",[954]],[[120601,120601],\"mapped\",[966]],[[120602,120602],\"mapped\",[961]],[[120603,120603],\"mapped\",[960]],[[120604,120604],\"mapped\",[945]],[[120605,120605],\"mapped\",[946]],[[120606,120606],\"mapped\",[947]],[[120607,120607],\"mapped\",[948]],[[120608,120608],\"mapped\",[949]],[[120609,120609],\"mapped\",[950]],[[120610,120610],\"mapped\",[951]],[[120611,120611],\"mapped\",[952]],[[120612,120612],\"mapped\",[953]],[[120613,120613],\"mapped\",[954]],[[120614,120614],\"mapped\",[955]],[[120615,120615],\"mapped\",[956]],[[120616,120616],\"mapped\",[957]],[[120617,120617],\"mapped\",[958]],[[120618,120618],\"mapped\",[959]],[[120619,120619],\"mapped\",[960]],[[120620,120620],\"mapped\",[961]],[[120621,120621],\"mapped\",[952]],[[120622,120622],\"mapped\",[963]],[[120623,120623],\"mapped\",[964]],[[120624,120624],\"mapped\",[965]],[[120625,120625],\"mapped\",[966]],[[120626,120626],\"mapped\",[967]],[[120627,120627],\"mapped\",[968]],[[120628,120628],\"mapped\",[969]],[[120629,120629],\"mapped\",[8711]],[[120630,120630],\"mapped\",[945]],[[120631,120631],\"mapped\",[946]],[[120632,120632],\"mapped\",[947]],[[120633,120633],\"mapped\",[948]],[[120634,120634],\"mapped\",[949]],[[120635,120635],\"mapped\",[950]],[[120636,120636],\"mapped\",[951]],[[120637,120637],\"mapped\",[952]],[[120638,120638],\"mapped\",[953]],[[120639,120639],\"mapped\",[954]],[[120640,120640],\"mapped\",[955]],[[120641,120641],\"mapped\",[956]],[[120642,120642],\"mapped\",[957]],[[120643,120643],\"mapped\",[958]],[[120644,120644],\"mapped\",[959]],[[120645,120645],\"mapped\",[960]],[[120646,120646],\"mapped\",[961]],[[120647,120648],\"mapped\",[963]],[[120649,120649],\"mapped\",[964]],[[120650,120650],\"mapped\",[965]],[[120651,120651],\"mapped\",[966]],[[120652,120652],\"mapped\",[967]],[[120653,120653],\"mapped\",[968]],[[120654,120654],\"mapped\",[969]],[[120655,120655],\"mapped\",[8706]],[[120656,120656],\"mapped\",[949]],[[120657,120657],\"mapped\",[952]],[[120658,120658],\"mapped\",[954]],[[120659,120659],\"mapped\",[966]],[[120660,120660],\"mapped\",[961]],[[120661,120661],\"mapped\",[960]],[[120662,120662],\"mapped\",[945]],[[120663,120663],\"mapped\",[946]],[[120664,120664],\"mapped\",[947]],[[120665,120665],\"mapped\",[948]],[[120666,120666],\"mapped\",[949]],[[120667,120667],\"mapped\",[950]],[[120668,120668],\"mapped\",[951]],[[120669,120669],\"mapped\",[952]],[[120670,120670],\"mapped\",[953]],[[120671,120671],\"mapped\",[954]],[[120672,120672],\"mapped\",[955]],[[120673,120673],\"mapped\",[956]],[[120674,120674],\"mapped\",[957]],[[120675,120675],\"mapped\",[958]],[[120676,120676],\"mapped\",[959]],[[120677,120677],\"mapped\",[960]],[[120678,120678],\"mapped\",[961]],[[120679,120679],\"mapped\",[952]],[[120680,120680],\"mapped\",[963]],[[120681,120681],\"mapped\",[964]],[[120682,120682],\"mapped\",[965]],[[120683,120683],\"mapped\",[966]],[[120684,120684],\"mapped\",[967]],[[120685,120685],\"mapped\",[968]],[[120686,120686],\"mapped\",[969]],[[120687,120687],\"mapped\",[8711]],[[120688,120688],\"mapped\",[945]],[[120689,120689],\"mapped\",[946]],[[120690,120690],\"mapped\",[947]],[[120691,120691],\"mapped\",[948]],[[120692,120692],\"mapped\",[949]],[[120693,120693],\"mapped\",[950]],[[120694,120694],\"mapped\",[951]],[[120695,120695],\"mapped\",[952]],[[120696,120696],\"mapped\",[953]],[[120697,120697],\"mapped\",[954]],[[120698,120698],\"mapped\",[955]],[[120699,120699],\"mapped\",[956]],[[120700,120700],\"mapped\",[957]],[[120701,120701],\"mapped\",[958]],[[120702,120702],\"mapped\",[959]],[[120703,120703],\"mapped\",[960]],[[120704,120704],\"mapped\",[961]],[[120705,120706],\"mapped\",[963]],[[120707,120707],\"mapped\",[964]],[[120708,120708],\"mapped\",[965]],[[120709,120709],\"mapped\",[966]],[[120710,120710],\"mapped\",[967]],[[120711,120711],\"mapped\",[968]],[[120712,120712],\"mapped\",[969]],[[120713,120713],\"mapped\",[8706]],[[120714,120714],\"mapped\",[949]],[[120715,120715],\"mapped\",[952]],[[120716,120716],\"mapped\",[954]],[[120717,120717],\"mapped\",[966]],[[120718,120718],\"mapped\",[961]],[[120719,120719],\"mapped\",[960]],[[120720,120720],\"mapped\",[945]],[[120721,120721],\"mapped\",[946]],[[120722,120722],\"mapped\",[947]],[[120723,120723],\"mapped\",[948]],[[120724,120724],\"mapped\",[949]],[[120725,120725],\"mapped\",[950]],[[120726,120726],\"mapped\",[951]],[[120727,120727],\"mapped\",[952]],[[120728,120728],\"mapped\",[953]],[[120729,120729],\"mapped\",[954]],[[120730,120730],\"mapped\",[955]],[[120731,120731],\"mapped\",[956]],[[120732,120732],\"mapped\",[957]],[[120733,120733],\"mapped\",[958]],[[120734,120734],\"mapped\",[959]],[[120735,120735],\"mapped\",[960]],[[120736,120736],\"mapped\",[961]],[[120737,120737],\"mapped\",[952]],[[120738,120738],\"mapped\",[963]],[[120739,120739],\"mapped\",[964]],[[120740,120740],\"mapped\",[965]],[[120741,120741],\"mapped\",[966]],[[120742,120742],\"mapped\",[967]],[[120743,120743],\"mapped\",[968]],[[120744,120744],\"mapped\",[969]],[[120745,120745],\"mapped\",[8711]],[[120746,120746],\"mapped\",[945]],[[120747,120747],\"mapped\",[946]],[[120748,120748],\"mapped\",[947]],[[120749,120749],\"mapped\",[948]],[[120750,120750],\"mapped\",[949]],[[120751,120751],\"mapped\",[950]],[[120752,120752],\"mapped\",[951]],[[120753,120753],\"mapped\",[952]],[[120754,120754],\"mapped\",[953]],[[120755,120755],\"mapped\",[954]],[[120756,120756],\"mapped\",[955]],[[120757,120757],\"mapped\",[956]],[[120758,120758],\"mapped\",[957]],[[120759,120759],\"mapped\",[958]],[[120760,120760],\"mapped\",[959]],[[120761,120761],\"mapped\",[960]],[[120762,120762],\"mapped\",[961]],[[120763,120764],\"mapped\",[963]],[[120765,120765],\"mapped\",[964]],[[120766,120766],\"mapped\",[965]],[[120767,120767],\"mapped\",[966]],[[120768,120768],\"mapped\",[967]],[[120769,120769],\"mapped\",[968]],[[120770,120770],\"mapped\",[969]],[[120771,120771],\"mapped\",[8706]],[[120772,120772],\"mapped\",[949]],[[120773,120773],\"mapped\",[952]],[[120774,120774],\"mapped\",[954]],[[120775,120775],\"mapped\",[966]],[[120776,120776],\"mapped\",[961]],[[120777,120777],\"mapped\",[960]],[[120778,120779],\"mapped\",[989]],[[120780,120781],\"disallowed\"],[[120782,120782],\"mapped\",[48]],[[120783,120783],\"mapped\",[49]],[[120784,120784],\"mapped\",[50]],[[120785,120785],\"mapped\",[51]],[[120786,120786],\"mapped\",[52]],[[120787,120787],\"mapped\",[53]],[[120788,120788],\"mapped\",[54]],[[120789,120789],\"mapped\",[55]],[[120790,120790],\"mapped\",[56]],[[120791,120791],\"mapped\",[57]],[[120792,120792],\"mapped\",[48]],[[120793,120793],\"mapped\",[49]],[[120794,120794],\"mapped\",[50]],[[120795,120795],\"mapped\",[51]],[[120796,120796],\"mapped\",[52]],[[120797,120797],\"mapped\",[53]],[[120798,120798],\"mapped\",[54]],[[120799,120799],\"mapped\",[55]],[[120800,120800],\"mapped\",[56]],[[120801,120801],\"mapped\",[57]],[[120802,120802],\"mapped\",[48]],[[120803,120803],\"mapped\",[49]],[[120804,120804],\"mapped\",[50]],[[120805,120805],\"mapped\",[51]],[[120806,120806],\"mapped\",[52]],[[120807,120807],\"mapped\",[53]],[[120808,120808],\"mapped\",[54]],[[120809,120809],\"mapped\",[55]],[[120810,120810],\"mapped\",[56]],[[120811,120811],\"mapped\",[57]],[[120812,120812],\"mapped\",[48]],[[120813,120813],\"mapped\",[49]],[[120814,120814],\"mapped\",[50]],[[120815,120815],\"mapped\",[51]],[[120816,120816],\"mapped\",[52]],[[120817,120817],\"mapped\",[53]],[[120818,120818],\"mapped\",[54]],[[120819,120819],\"mapped\",[55]],[[120820,120820],\"mapped\",[56]],[[120821,120821],\"mapped\",[57]],[[120822,120822],\"mapped\",[48]],[[120823,120823],\"mapped\",[49]],[[120824,120824],\"mapped\",[50]],[[120825,120825],\"mapped\",[51]],[[120826,120826],\"mapped\",[52]],[[120827,120827],\"mapped\",[53]],[[120828,120828],\"mapped\",[54]],[[120829,120829],\"mapped\",[55]],[[120830,120830],\"mapped\",[56]],[[120831,120831],\"mapped\",[57]],[[120832,121343],\"valid\",[],\"NV8\"],[[121344,121398],\"valid\"],[[121399,121402],\"valid\",[],\"NV8\"],[[121403,121452],\"valid\"],[[121453,121460],\"valid\",[],\"NV8\"],[[121461,121461],\"valid\"],[[121462,121475],\"valid\",[],\"NV8\"],[[121476,121476],\"valid\"],[[121477,121483],\"valid\",[],\"NV8\"],[[121484,121498],\"disallowed\"],[[121499,121503],\"valid\"],[[121504,121504],\"disallowed\"],[[121505,121519],\"valid\"],[[121520,124927],\"disallowed\"],[[124928,125124],\"valid\"],[[125125,125126],\"disallowed\"],[[125127,125135],\"valid\",[],\"NV8\"],[[125136,125142],\"valid\"],[[125143,126463],\"disallowed\"],[[126464,126464],\"mapped\",[1575]],[[126465,126465],\"mapped\",[1576]],[[126466,126466],\"mapped\",[1580]],[[126467,126467],\"mapped\",[1583]],[[126468,126468],\"disallowed\"],[[126469,126469],\"mapped\",[1608]],[[126470,126470],\"mapped\",[1586]],[[126471,126471],\"mapped\",[1581]],[[126472,126472],\"mapped\",[1591]],[[126473,126473],\"mapped\",[1610]],[[126474,126474],\"mapped\",[1603]],[[126475,126475],\"mapped\",[1604]],[[126476,126476],\"mapped\",[1605]],[[126477,126477],\"mapped\",[1606]],[[126478,126478],\"mapped\",[1587]],[[126479,126479],\"mapped\",[1593]],[[126480,126480],\"mapped\",[1601]],[[126481,126481],\"mapped\",[1589]],[[126482,126482],\"mapped\",[1602]],[[126483,126483],\"mapped\",[1585]],[[126484,126484],\"mapped\",[1588]],[[126485,126485],\"mapped\",[1578]],[[126486,126486],\"mapped\",[1579]],[[126487,126487],\"mapped\",[1582]],[[126488,126488],\"mapped\",[1584]],[[126489,126489],\"mapped\",[1590]],[[126490,126490],\"mapped\",[1592]],[[126491,126491],\"mapped\",[1594]],[[126492,126492],\"mapped\",[1646]],[[126493,126493],\"mapped\",[1722]],[[126494,126494],\"mapped\",[1697]],[[126495,126495],\"mapped\",[1647]],[[126496,126496],\"disallowed\"],[[126497,126497],\"mapped\",[1576]],[[126498,126498],\"mapped\",[1580]],[[126499,126499],\"disallowed\"],[[126500,126500],\"mapped\",[1607]],[[126501,126502],\"disallowed\"],[[126503,126503],\"mapped\",[1581]],[[126504,126504],\"disallowed\"],[[126505,126505],\"mapped\",[1610]],[[126506,126506],\"mapped\",[1603]],[[126507,126507],\"mapped\",[1604]],[[126508,126508],\"mapped\",[1605]],[[126509,126509],\"mapped\",[1606]],[[126510,126510],\"mapped\",[1587]],[[126511,126511],\"mapped\",[1593]],[[126512,126512],\"mapped\",[1601]],[[126513,126513],\"mapped\",[1589]],[[126514,126514],\"mapped\",[1602]],[[126515,126515],\"disallowed\"],[[126516,126516],\"mapped\",[1588]],[[126517,126517],\"mapped\",[1578]],[[126518,126518],\"mapped\",[1579]],[[126519,126519],\"mapped\",[1582]],[[126520,126520],\"disallowed\"],[[126521,126521],\"mapped\",[1590]],[[126522,126522],\"disallowed\"],[[126523,126523],\"mapped\",[1594]],[[126524,126529],\"disallowed\"],[[126530,126530],\"mapped\",[1580]],[[126531,126534],\"disallowed\"],[[126535,126535],\"mapped\",[1581]],[[126536,126536],\"disallowed\"],[[126537,126537],\"mapped\",[1610]],[[126538,126538],\"disallowed\"],[[126539,126539],\"mapped\",[1604]],[[126540,126540],\"disallowed\"],[[126541,126541],\"mapped\",[1606]],[[126542,126542],\"mapped\",[1587]],[[126543,126543],\"mapped\",[1593]],[[126544,126544],\"disallowed\"],[[126545,126545],\"mapped\",[1589]],[[126546,126546],\"mapped\",[1602]],[[126547,126547],\"disallowed\"],[[126548,126548],\"mapped\",[1588]],[[126549,126550],\"disallowed\"],[[126551,126551],\"mapped\",[1582]],[[126552,126552],\"disallowed\"],[[126553,126553],\"mapped\",[1590]],[[126554,126554],\"disallowed\"],[[126555,126555],\"mapped\",[1594]],[[126556,126556],\"disallowed\"],[[126557,126557],\"mapped\",[1722]],[[126558,126558],\"disallowed\"],[[126559,126559],\"mapped\",[1647]],[[126560,126560],\"disallowed\"],[[126561,126561],\"mapped\",[1576]],[[126562,126562],\"mapped\",[1580]],[[126563,126563],\"disallowed\"],[[126564,126564],\"mapped\",[1607]],[[126565,126566],\"disallowed\"],[[126567,126567],\"mapped\",[1581]],[[126568,126568],\"mapped\",[1591]],[[126569,126569],\"mapped\",[1610]],[[126570,126570],\"mapped\",[1603]],[[126571,126571],\"disallowed\"],[[126572,126572],\"mapped\",[1605]],[[126573,126573],\"mapped\",[1606]],[[126574,126574],\"mapped\",[1587]],[[126575,126575],\"mapped\",[1593]],[[126576,126576],\"mapped\",[1601]],[[126577,126577],\"mapped\",[1589]],[[126578,126578],\"mapped\",[1602]],[[126579,126579],\"disallowed\"],[[126580,126580],\"mapped\",[1588]],[[126581,126581],\"mapped\",[1578]],[[126582,126582],\"mapped\",[1579]],[[126583,126583],\"mapped\",[1582]],[[126584,126584],\"disallowed\"],[[126585,126585],\"mapped\",[1590]],[[126586,126586],\"mapped\",[1592]],[[126587,126587],\"mapped\",[1594]],[[126588,126588],\"mapped\",[1646]],[[126589,126589],\"disallowed\"],[[126590,126590],\"mapped\",[1697]],[[126591,126591],\"disallowed\"],[[126592,126592],\"mapped\",[1575]],[[126593,126593],\"mapped\",[1576]],[[126594,126594],\"mapped\",[1580]],[[126595,126595],\"mapped\",[1583]],[[126596,126596],\"mapped\",[1607]],[[126597,126597],\"mapped\",[1608]],[[126598,126598],\"mapped\",[1586]],[[126599,126599],\"mapped\",[1581]],[[126600,126600],\"mapped\",[1591]],[[126601,126601],\"mapped\",[1610]],[[126602,126602],\"disallowed\"],[[126603,126603],\"mapped\",[1604]],[[126604,126604],\"mapped\",[1605]],[[126605,126605],\"mapped\",[1606]],[[126606,126606],\"mapped\",[1587]],[[126607,126607],\"mapped\",[1593]],[[126608,126608],\"mapped\",[1601]],[[126609,126609],\"mapped\",[1589]],[[126610,126610],\"mapped\",[1602]],[[126611,126611],\"mapped\",[1585]],[[126612,126612],\"mapped\",[1588]],[[126613,126613],\"mapped\",[1578]],[[126614,126614],\"mapped\",[1579]],[[126615,126615],\"mapped\",[1582]],[[126616,126616],\"mapped\",[1584]],[[126617,126617],\"mapped\",[1590]],[[126618,126618],\"mapped\",[1592]],[[126619,126619],\"mapped\",[1594]],[[126620,126624],\"disallowed\"],[[126625,126625],\"mapped\",[1576]],[[126626,126626],\"mapped\",[1580]],[[126627,126627],\"mapped\",[1583]],[[126628,126628],\"disallowed\"],[[126629,126629],\"mapped\",[1608]],[[126630,126630],\"mapped\",[1586]],[[126631,126631],\"mapped\",[1581]],[[126632,126632],\"mapped\",[1591]],[[126633,126633],\"mapped\",[1610]],[[126634,126634],\"disallowed\"],[[126635,126635],\"mapped\",[1604]],[[126636,126636],\"mapped\",[1605]],[[126637,126637],\"mapped\",[1606]],[[126638,126638],\"mapped\",[1587]],[[126639,126639],\"mapped\",[1593]],[[126640,126640],\"mapped\",[1601]],[[126641,126641],\"mapped\",[1589]],[[126642,126642],\"mapped\",[1602]],[[126643,126643],\"mapped\",[1585]],[[126644,126644],\"mapped\",[1588]],[[126645,126645],\"mapped\",[1578]],[[126646,126646],\"mapped\",[1579]],[[126647,126647],\"mapped\",[1582]],[[126648,126648],\"mapped\",[1584]],[[126649,126649],\"mapped\",[1590]],[[126650,126650],\"mapped\",[1592]],[[126651,126651],\"mapped\",[1594]],[[126652,126703],\"disallowed\"],[[126704,126705],\"valid\",[],\"NV8\"],[[126706,126975],\"disallowed\"],[[126976,127019],\"valid\",[],\"NV8\"],[[127020,127023],\"disallowed\"],[[127024,127123],\"valid\",[],\"NV8\"],[[127124,127135],\"disallowed\"],[[127136,127150],\"valid\",[],\"NV8\"],[[127151,127152],\"disallowed\"],[[127153,127166],\"valid\",[],\"NV8\"],[[127167,127167],\"valid\",[],\"NV8\"],[[127168,127168],\"disallowed\"],[[127169,127183],\"valid\",[],\"NV8\"],[[127184,127184],\"disallowed\"],[[127185,127199],\"valid\",[],\"NV8\"],[[127200,127221],\"valid\",[],\"NV8\"],[[127222,127231],\"disallowed\"],[[127232,127232],\"disallowed\"],[[127233,127233],\"disallowed_STD3_mapped\",[48,44]],[[127234,127234],\"disallowed_STD3_mapped\",[49,44]],[[127235,127235],\"disallowed_STD3_mapped\",[50,44]],[[127236,127236],\"disallowed_STD3_mapped\",[51,44]],[[127237,127237],\"disallowed_STD3_mapped\",[52,44]],[[127238,127238],\"disallowed_STD3_mapped\",[53,44]],[[127239,127239],\"disallowed_STD3_mapped\",[54,44]],[[127240,127240],\"disallowed_STD3_mapped\",[55,44]],[[127241,127241],\"disallowed_STD3_mapped\",[56,44]],[[127242,127242],\"disallowed_STD3_mapped\",[57,44]],[[127243,127244],\"valid\",[],\"NV8\"],[[127245,127247],\"disallowed\"],[[127248,127248],\"disallowed_STD3_mapped\",[40,97,41]],[[127249,127249],\"disallowed_STD3_mapped\",[40,98,41]],[[127250,127250],\"disallowed_STD3_mapped\",[40,99,41]],[[127251,127251],\"disallowed_STD3_mapped\",[40,100,41]],[[127252,127252],\"disallowed_STD3_mapped\",[40,101,41]],[[127253,127253],\"disallowed_STD3_mapped\",[40,102,41]],[[127254,127254],\"disallowed_STD3_mapped\",[40,103,41]],[[127255,127255],\"disallowed_STD3_mapped\",[40,104,41]],[[127256,127256],\"disallowed_STD3_mapped\",[40,105,41]],[[127257,127257],\"disallowed_STD3_mapped\",[40,106,41]],[[127258,127258],\"disallowed_STD3_mapped\",[40,107,41]],[[127259,127259],\"disallowed_STD3_mapped\",[40,108,41]],[[127260,127260],\"disallowed_STD3_mapped\",[40,109,41]],[[127261,127261],\"disallowed_STD3_mapped\",[40,110,41]],[[127262,127262],\"disallowed_STD3_mapped\",[40,111,41]],[[127263,127263],\"disallowed_STD3_mapped\",[40,112,41]],[[127264,127264],\"disallowed_STD3_mapped\",[40,113,41]],[[127265,127265],\"disallowed_STD3_mapped\",[40,114,41]],[[127266,127266],\"disallowed_STD3_mapped\",[40,115,41]],[[127267,127267],\"disallowed_STD3_mapped\",[40,116,41]],[[127268,127268],\"disallowed_STD3_mapped\",[40,117,41]],[[127269,127269],\"disallowed_STD3_mapped\",[40,118,41]],[[127270,127270],\"disallowed_STD3_mapped\",[40,119,41]],[[127271,127271],\"disallowed_STD3_mapped\",[40,120,41]],[[127272,127272],\"disallowed_STD3_mapped\",[40,121,41]],[[127273,127273],\"disallowed_STD3_mapped\",[40,122,41]],[[127274,127274],\"mapped\",[12308,115,12309]],[[127275,127275],\"mapped\",[99]],[[127276,127276],\"mapped\",[114]],[[127277,127277],\"mapped\",[99,100]],[[127278,127278],\"mapped\",[119,122]],[[127279,127279],\"disallowed\"],[[127280,127280],\"mapped\",[97]],[[127281,127281],\"mapped\",[98]],[[127282,127282],\"mapped\",[99]],[[127283,127283],\"mapped\",[100]],[[127284,127284],\"mapped\",[101]],[[127285,127285],\"mapped\",[102]],[[127286,127286],\"mapped\",[103]],[[127287,127287],\"mapped\",[104]],[[127288,127288],\"mapped\",[105]],[[127289,127289],\"mapped\",[106]],[[127290,127290],\"mapped\",[107]],[[127291,127291],\"mapped\",[108]],[[127292,127292],\"mapped\",[109]],[[127293,127293],\"mapped\",[110]],[[127294,127294],\"mapped\",[111]],[[127295,127295],\"mapped\",[112]],[[127296,127296],\"mapped\",[113]],[[127297,127297],\"mapped\",[114]],[[127298,127298],\"mapped\",[115]],[[127299,127299],\"mapped\",[116]],[[127300,127300],\"mapped\",[117]],[[127301,127301],\"mapped\",[118]],[[127302,127302],\"mapped\",[119]],[[127303,127303],\"mapped\",[120]],[[127304,127304],\"mapped\",[121]],[[127305,127305],\"mapped\",[122]],[[127306,127306],\"mapped\",[104,118]],[[127307,127307],\"mapped\",[109,118]],[[127308,127308],\"mapped\",[115,100]],[[127309,127309],\"mapped\",[115,115]],[[127310,127310],\"mapped\",[112,112,118]],[[127311,127311],\"mapped\",[119,99]],[[127312,127318],\"valid\",[],\"NV8\"],[[127319,127319],\"valid\",[],\"NV8\"],[[127320,127326],\"valid\",[],\"NV8\"],[[127327,127327],\"valid\",[],\"NV8\"],[[127328,127337],\"valid\",[],\"NV8\"],[[127338,127338],\"mapped\",[109,99]],[[127339,127339],\"mapped\",[109,100]],[[127340,127343],\"disallowed\"],[[127344,127352],\"valid\",[],\"NV8\"],[[127353,127353],\"valid\",[],\"NV8\"],[[127354,127354],\"valid\",[],\"NV8\"],[[127355,127356],\"valid\",[],\"NV8\"],[[127357,127358],\"valid\",[],\"NV8\"],[[127359,127359],\"valid\",[],\"NV8\"],[[127360,127369],\"valid\",[],\"NV8\"],[[127370,127373],\"valid\",[],\"NV8\"],[[127374,127375],\"valid\",[],\"NV8\"],[[127376,127376],\"mapped\",[100,106]],[[127377,127386],\"valid\",[],\"NV8\"],[[127387,127461],\"disallowed\"],[[127462,127487],\"valid\",[],\"NV8\"],[[127488,127488],\"mapped\",[12411,12363]],[[127489,127489],\"mapped\",[12467,12467]],[[127490,127490],\"mapped\",[12469]],[[127491,127503],\"disallowed\"],[[127504,127504],\"mapped\",[25163]],[[127505,127505],\"mapped\",[23383]],[[127506,127506],\"mapped\",[21452]],[[127507,127507],\"mapped\",[12487]],[[127508,127508],\"mapped\",[20108]],[[127509,127509],\"mapped\",[22810]],[[127510,127510],\"mapped\",[35299]],[[127511,127511],\"mapped\",[22825]],[[127512,127512],\"mapped\",[20132]],[[127513,127513],\"mapped\",[26144]],[[127514,127514],\"mapped\",[28961]],[[127515,127515],\"mapped\",[26009]],[[127516,127516],\"mapped\",[21069]],[[127517,127517],\"mapped\",[24460]],[[127518,127518],\"mapped\",[20877]],[[127519,127519],\"mapped\",[26032]],[[127520,127520],\"mapped\",[21021]],[[127521,127521],\"mapped\",[32066]],[[127522,127522],\"mapped\",[29983]],[[127523,127523],\"mapped\",[36009]],[[127524,127524],\"mapped\",[22768]],[[127525,127525],\"mapped\",[21561]],[[127526,127526],\"mapped\",[28436]],[[127527,127527],\"mapped\",[25237]],[[127528,127528],\"mapped\",[25429]],[[127529,127529],\"mapped\",[19968]],[[127530,127530],\"mapped\",[19977]],[[127531,127531],\"mapped\",[36938]],[[127532,127532],\"mapped\",[24038]],[[127533,127533],\"mapped\",[20013]],[[127534,127534],\"mapped\",[21491]],[[127535,127535],\"mapped\",[25351]],[[127536,127536],\"mapped\",[36208]],[[127537,127537],\"mapped\",[25171]],[[127538,127538],\"mapped\",[31105]],[[127539,127539],\"mapped\",[31354]],[[127540,127540],\"mapped\",[21512]],[[127541,127541],\"mapped\",[28288]],[[127542,127542],\"mapped\",[26377]],[[127543,127543],\"mapped\",[26376]],[[127544,127544],\"mapped\",[30003]],[[127545,127545],\"mapped\",[21106]],[[127546,127546],\"mapped\",[21942]],[[127547,127551],\"disallowed\"],[[127552,127552],\"mapped\",[12308,26412,12309]],[[127553,127553],\"mapped\",[12308,19977,12309]],[[127554,127554],\"mapped\",[12308,20108,12309]],[[127555,127555],\"mapped\",[12308,23433,12309]],[[127556,127556],\"mapped\",[12308,28857,12309]],[[127557,127557],\"mapped\",[12308,25171,12309]],[[127558,127558],\"mapped\",[12308,30423,12309]],[[127559,127559],\"mapped\",[12308,21213,12309]],[[127560,127560],\"mapped\",[12308,25943,12309]],[[127561,127567],\"disallowed\"],[[127568,127568],\"mapped\",[24471]],[[127569,127569],\"mapped\",[21487]],[[127570,127743],\"disallowed\"],[[127744,127776],\"valid\",[],\"NV8\"],[[127777,127788],\"valid\",[],\"NV8\"],[[127789,127791],\"valid\",[],\"NV8\"],[[127792,127797],\"valid\",[],\"NV8\"],[[127798,127798],\"valid\",[],\"NV8\"],[[127799,127868],\"valid\",[],\"NV8\"],[[127869,127869],\"valid\",[],\"NV8\"],[[127870,127871],\"valid\",[],\"NV8\"],[[127872,127891],\"valid\",[],\"NV8\"],[[127892,127903],\"valid\",[],\"NV8\"],[[127904,127940],\"valid\",[],\"NV8\"],[[127941,127941],\"valid\",[],\"NV8\"],[[127942,127946],\"valid\",[],\"NV8\"],[[127947,127950],\"valid\",[],\"NV8\"],[[127951,127955],\"valid\",[],\"NV8\"],[[127956,127967],\"valid\",[],\"NV8\"],[[127968,127984],\"valid\",[],\"NV8\"],[[127985,127991],\"valid\",[],\"NV8\"],[[127992,127999],\"valid\",[],\"NV8\"],[[128000,128062],\"valid\",[],\"NV8\"],[[128063,128063],\"valid\",[],\"NV8\"],[[128064,128064],\"valid\",[],\"NV8\"],[[128065,128065],\"valid\",[],\"NV8\"],[[128066,128247],\"valid\",[],\"NV8\"],[[128248,128248],\"valid\",[],\"NV8\"],[[128249,128252],\"valid\",[],\"NV8\"],[[128253,128254],\"valid\",[],\"NV8\"],[[128255,128255],\"valid\",[],\"NV8\"],[[128256,128317],\"valid\",[],\"NV8\"],[[128318,128319],\"valid\",[],\"NV8\"],[[128320,128323],\"valid\",[],\"NV8\"],[[128324,128330],\"valid\",[],\"NV8\"],[[128331,128335],\"valid\",[],\"NV8\"],[[128336,128359],\"valid\",[],\"NV8\"],[[128360,128377],\"valid\",[],\"NV8\"],[[128378,128378],\"disallowed\"],[[128379,128419],\"valid\",[],\"NV8\"],[[128420,128420],\"disallowed\"],[[128421,128506],\"valid\",[],\"NV8\"],[[128507,128511],\"valid\",[],\"NV8\"],[[128512,128512],\"valid\",[],\"NV8\"],[[128513,128528],\"valid\",[],\"NV8\"],[[128529,128529],\"valid\",[],\"NV8\"],[[128530,128532],\"valid\",[],\"NV8\"],[[128533,128533],\"valid\",[],\"NV8\"],[[128534,128534],\"valid\",[],\"NV8\"],[[128535,128535],\"valid\",[],\"NV8\"],[[128536,128536],\"valid\",[],\"NV8\"],[[128537,128537],\"valid\",[],\"NV8\"],[[128538,128538],\"valid\",[],\"NV8\"],[[128539,128539],\"valid\",[],\"NV8\"],[[128540,128542],\"valid\",[],\"NV8\"],[[128543,128543],\"valid\",[],\"NV8\"],[[128544,128549],\"valid\",[],\"NV8\"],[[128550,128551],\"valid\",[],\"NV8\"],[[128552,128555],\"valid\",[],\"NV8\"],[[128556,128556],\"valid\",[],\"NV8\"],[[128557,128557],\"valid\",[],\"NV8\"],[[128558,128559],\"valid\",[],\"NV8\"],[[128560,128563],\"valid\",[],\"NV8\"],[[128564,128564],\"valid\",[],\"NV8\"],[[128565,128576],\"valid\",[],\"NV8\"],[[128577,128578],\"valid\",[],\"NV8\"],[[128579,128580],\"valid\",[],\"NV8\"],[[128581,128591],\"valid\",[],\"NV8\"],[[128592,128639],\"valid\",[],\"NV8\"],[[128640,128709],\"valid\",[],\"NV8\"],[[128710,128719],\"valid\",[],\"NV8\"],[[128720,128720],\"valid\",[],\"NV8\"],[[128721,128735],\"disallowed\"],[[128736,128748],\"valid\",[],\"NV8\"],[[128749,128751],\"disallowed\"],[[128752,128755],\"valid\",[],\"NV8\"],[[128756,128767],\"disallowed\"],[[128768,128883],\"valid\",[],\"NV8\"],[[128884,128895],\"disallowed\"],[[128896,128980],\"valid\",[],\"NV8\"],[[128981,129023],\"disallowed\"],[[129024,129035],\"valid\",[],\"NV8\"],[[129036,129039],\"disallowed\"],[[129040,129095],\"valid\",[],\"NV8\"],[[129096,129103],\"disallowed\"],[[129104,129113],\"valid\",[],\"NV8\"],[[129114,129119],\"disallowed\"],[[129120,129159],\"valid\",[],\"NV8\"],[[129160,129167],\"disallowed\"],[[129168,129197],\"valid\",[],\"NV8\"],[[129198,129295],\"disallowed\"],[[129296,129304],\"valid\",[],\"NV8\"],[[129305,129407],\"disallowed\"],[[129408,129412],\"valid\",[],\"NV8\"],[[129413,129471],\"disallowed\"],[[129472,129472],\"valid\",[],\"NV8\"],[[129473,131069],\"disallowed\"],[[131070,131071],\"disallowed\"],[[131072,173782],\"valid\"],[[173783,173823],\"disallowed\"],[[173824,177972],\"valid\"],[[177973,177983],\"disallowed\"],[[177984,178205],\"valid\"],[[178206,178207],\"disallowed\"],[[178208,183969],\"valid\"],[[183970,194559],\"disallowed\"],[[194560,194560],\"mapped\",[20029]],[[194561,194561],\"mapped\",[20024]],[[194562,194562],\"mapped\",[20033]],[[194563,194563],\"mapped\",[131362]],[[194564,194564],\"mapped\",[20320]],[[194565,194565],\"mapped\",[20398]],[[194566,194566],\"mapped\",[20411]],[[194567,194567],\"mapped\",[20482]],[[194568,194568],\"mapped\",[20602]],[[194569,194569],\"mapped\",[20633]],[[194570,194570],\"mapped\",[20711]],[[194571,194571],\"mapped\",[20687]],[[194572,194572],\"mapped\",[13470]],[[194573,194573],\"mapped\",[132666]],[[194574,194574],\"mapped\",[20813]],[[194575,194575],\"mapped\",[20820]],[[194576,194576],\"mapped\",[20836]],[[194577,194577],\"mapped\",[20855]],[[194578,194578],\"mapped\",[132380]],[[194579,194579],\"mapped\",[13497]],[[194580,194580],\"mapped\",[20839]],[[194581,194581],\"mapped\",[20877]],[[194582,194582],\"mapped\",[132427]],[[194583,194583],\"mapped\",[20887]],[[194584,194584],\"mapped\",[20900]],[[194585,194585],\"mapped\",[20172]],[[194586,194586],\"mapped\",[20908]],[[194587,194587],\"mapped\",[20917]],[[194588,194588],\"mapped\",[168415]],[[194589,194589],\"mapped\",[20981]],[[194590,194590],\"mapped\",[20995]],[[194591,194591],\"mapped\",[13535]],[[194592,194592],\"mapped\",[21051]],[[194593,194593],\"mapped\",[21062]],[[194594,194594],\"mapped\",[21106]],[[194595,194595],\"mapped\",[21111]],[[194596,194596],\"mapped\",[13589]],[[194597,194597],\"mapped\",[21191]],[[194598,194598],\"mapped\",[21193]],[[194599,194599],\"mapped\",[21220]],[[194600,194600],\"mapped\",[21242]],[[194601,194601],\"mapped\",[21253]],[[194602,194602],\"mapped\",[21254]],[[194603,194603],\"mapped\",[21271]],[[194604,194604],\"mapped\",[21321]],[[194605,194605],\"mapped\",[21329]],[[194606,194606],\"mapped\",[21338]],[[194607,194607],\"mapped\",[21363]],[[194608,194608],\"mapped\",[21373]],[[194609,194611],\"mapped\",[21375]],[[194612,194612],\"mapped\",[133676]],[[194613,194613],\"mapped\",[28784]],[[194614,194614],\"mapped\",[21450]],[[194615,194615],\"mapped\",[21471]],[[194616,194616],\"mapped\",[133987]],[[194617,194617],\"mapped\",[21483]],[[194618,194618],\"mapped\",[21489]],[[194619,194619],\"mapped\",[21510]],[[194620,194620],\"mapped\",[21662]],[[194621,194621],\"mapped\",[21560]],[[194622,194622],\"mapped\",[21576]],[[194623,194623],\"mapped\",[21608]],[[194624,194624],\"mapped\",[21666]],[[194625,194625],\"mapped\",[21750]],[[194626,194626],\"mapped\",[21776]],[[194627,194627],\"mapped\",[21843]],[[194628,194628],\"mapped\",[21859]],[[194629,194630],\"mapped\",[21892]],[[194631,194631],\"mapped\",[21913]],[[194632,194632],\"mapped\",[21931]],[[194633,194633],\"mapped\",[21939]],[[194634,194634],\"mapped\",[21954]],[[194635,194635],\"mapped\",[22294]],[[194636,194636],\"mapped\",[22022]],[[194637,194637],\"mapped\",[22295]],[[194638,194638],\"mapped\",[22097]],[[194639,194639],\"mapped\",[22132]],[[194640,194640],\"mapped\",[20999]],[[194641,194641],\"mapped\",[22766]],[[194642,194642],\"mapped\",[22478]],[[194643,194643],\"mapped\",[22516]],[[194644,194644],\"mapped\",[22541]],[[194645,194645],\"mapped\",[22411]],[[194646,194646],\"mapped\",[22578]],[[194647,194647],\"mapped\",[22577]],[[194648,194648],\"mapped\",[22700]],[[194649,194649],\"mapped\",[136420]],[[194650,194650],\"mapped\",[22770]],[[194651,194651],\"mapped\",[22775]],[[194652,194652],\"mapped\",[22790]],[[194653,194653],\"mapped\",[22810]],[[194654,194654],\"mapped\",[22818]],[[194655,194655],\"mapped\",[22882]],[[194656,194656],\"mapped\",[136872]],[[194657,194657],\"mapped\",[136938]],[[194658,194658],\"mapped\",[23020]],[[194659,194659],\"mapped\",[23067]],[[194660,194660],\"mapped\",[23079]],[[194661,194661],\"mapped\",[23000]],[[194662,194662],\"mapped\",[23142]],[[194663,194663],\"mapped\",[14062]],[[194664,194664],\"disallowed\"],[[194665,194665],\"mapped\",[23304]],[[194666,194667],\"mapped\",[23358]],[[194668,194668],\"mapped\",[137672]],[[194669,194669],\"mapped\",[23491]],[[194670,194670],\"mapped\",[23512]],[[194671,194671],\"mapped\",[23527]],[[194672,194672],\"mapped\",[23539]],[[194673,194673],\"mapped\",[138008]],[[194674,194674],\"mapped\",[23551]],[[194675,194675],\"mapped\",[23558]],[[194676,194676],\"disallowed\"],[[194677,194677],\"mapped\",[23586]],[[194678,194678],\"mapped\",[14209]],[[194679,194679],\"mapped\",[23648]],[[194680,194680],\"mapped\",[23662]],[[194681,194681],\"mapped\",[23744]],[[194682,194682],\"mapped\",[23693]],[[194683,194683],\"mapped\",[138724]],[[194684,194684],\"mapped\",[23875]],[[194685,194685],\"mapped\",[138726]],[[194686,194686],\"mapped\",[23918]],[[194687,194687],\"mapped\",[23915]],[[194688,194688],\"mapped\",[23932]],[[194689,194689],\"mapped\",[24033]],[[194690,194690],\"mapped\",[24034]],[[194691,194691],\"mapped\",[14383]],[[194692,194692],\"mapped\",[24061]],[[194693,194693],\"mapped\",[24104]],[[194694,194694],\"mapped\",[24125]],[[194695,194695],\"mapped\",[24169]],[[194696,194696],\"mapped\",[14434]],[[194697,194697],\"mapped\",[139651]],[[194698,194698],\"mapped\",[14460]],[[194699,194699],\"mapped\",[24240]],[[194700,194700],\"mapped\",[24243]],[[194701,194701],\"mapped\",[24246]],[[194702,194702],\"mapped\",[24266]],[[194703,194703],\"mapped\",[172946]],[[194704,194704],\"mapped\",[24318]],[[194705,194706],\"mapped\",[140081]],[[194707,194707],\"mapped\",[33281]],[[194708,194709],\"mapped\",[24354]],[[194710,194710],\"mapped\",[14535]],[[194711,194711],\"mapped\",[144056]],[[194712,194712],\"mapped\",[156122]],[[194713,194713],\"mapped\",[24418]],[[194714,194714],\"mapped\",[24427]],[[194715,194715],\"mapped\",[14563]],[[194716,194716],\"mapped\",[24474]],[[194717,194717],\"mapped\",[24525]],[[194718,194718],\"mapped\",[24535]],[[194719,194719],\"mapped\",[24569]],[[194720,194720],\"mapped\",[24705]],[[194721,194721],\"mapped\",[14650]],[[194722,194722],\"mapped\",[14620]],[[194723,194723],\"mapped\",[24724]],[[194724,194724],\"mapped\",[141012]],[[194725,194725],\"mapped\",[24775]],[[194726,194726],\"mapped\",[24904]],[[194727,194727],\"mapped\",[24908]],[[194728,194728],\"mapped\",[24910]],[[194729,194729],\"mapped\",[24908]],[[194730,194730],\"mapped\",[24954]],[[194731,194731],\"mapped\",[24974]],[[194732,194732],\"mapped\",[25010]],[[194733,194733],\"mapped\",[24996]],[[194734,194734],\"mapped\",[25007]],[[194735,194735],\"mapped\",[25054]],[[194736,194736],\"mapped\",[25074]],[[194737,194737],\"mapped\",[25078]],[[194738,194738],\"mapped\",[25104]],[[194739,194739],\"mapped\",[25115]],[[194740,194740],\"mapped\",[25181]],[[194741,194741],\"mapped\",[25265]],[[194742,194742],\"mapped\",[25300]],[[194743,194743],\"mapped\",[25424]],[[194744,194744],\"mapped\",[142092]],[[194745,194745],\"mapped\",[25405]],[[194746,194746],\"mapped\",[25340]],[[194747,194747],\"mapped\",[25448]],[[194748,194748],\"mapped\",[25475]],[[194749,194749],\"mapped\",[25572]],[[194750,194750],\"mapped\",[142321]],[[194751,194751],\"mapped\",[25634]],[[194752,194752],\"mapped\",[25541]],[[194753,194753],\"mapped\",[25513]],[[194754,194754],\"mapped\",[14894]],[[194755,194755],\"mapped\",[25705]],[[194756,194756],\"mapped\",[25726]],[[194757,194757],\"mapped\",[25757]],[[194758,194758],\"mapped\",[25719]],[[194759,194759],\"mapped\",[14956]],[[194760,194760],\"mapped\",[25935]],[[194761,194761],\"mapped\",[25964]],[[194762,194762],\"mapped\",[143370]],[[194763,194763],\"mapped\",[26083]],[[194764,194764],\"mapped\",[26360]],[[194765,194765],\"mapped\",[26185]],[[194766,194766],\"mapped\",[15129]],[[194767,194767],\"mapped\",[26257]],[[194768,194768],\"mapped\",[15112]],[[194769,194769],\"mapped\",[15076]],[[194770,194770],\"mapped\",[20882]],[[194771,194771],\"mapped\",[20885]],[[194772,194772],\"mapped\",[26368]],[[194773,194773],\"mapped\",[26268]],[[194774,194774],\"mapped\",[32941]],[[194775,194775],\"mapped\",[17369]],[[194776,194776],\"mapped\",[26391]],[[194777,194777],\"mapped\",[26395]],[[194778,194778],\"mapped\",[26401]],[[194779,194779],\"mapped\",[26462]],[[194780,194780],\"mapped\",[26451]],[[194781,194781],\"mapped\",[144323]],[[194782,194782],\"mapped\",[15177]],[[194783,194783],\"mapped\",[26618]],[[194784,194784],\"mapped\",[26501]],[[194785,194785],\"mapped\",[26706]],[[194786,194786],\"mapped\",[26757]],[[194787,194787],\"mapped\",[144493]],[[194788,194788],\"mapped\",[26766]],[[194789,194789],\"mapped\",[26655]],[[194790,194790],\"mapped\",[26900]],[[194791,194791],\"mapped\",[15261]],[[194792,194792],\"mapped\",[26946]],[[194793,194793],\"mapped\",[27043]],[[194794,194794],\"mapped\",[27114]],[[194795,194795],\"mapped\",[27304]],[[194796,194796],\"mapped\",[145059]],[[194797,194797],\"mapped\",[27355]],[[194798,194798],\"mapped\",[15384]],[[194799,194799],\"mapped\",[27425]],[[194800,194800],\"mapped\",[145575]],[[194801,194801],\"mapped\",[27476]],[[194802,194802],\"mapped\",[15438]],[[194803,194803],\"mapped\",[27506]],[[194804,194804],\"mapped\",[27551]],[[194805,194805],\"mapped\",[27578]],[[194806,194806],\"mapped\",[27579]],[[194807,194807],\"mapped\",[146061]],[[194808,194808],\"mapped\",[138507]],[[194809,194809],\"mapped\",[146170]],[[194810,194810],\"mapped\",[27726]],[[194811,194811],\"mapped\",[146620]],[[194812,194812],\"mapped\",[27839]],[[194813,194813],\"mapped\",[27853]],[[194814,194814],\"mapped\",[27751]],[[194815,194815],\"mapped\",[27926]],[[194816,194816],\"mapped\",[27966]],[[194817,194817],\"mapped\",[28023]],[[194818,194818],\"mapped\",[27969]],[[194819,194819],\"mapped\",[28009]],[[194820,194820],\"mapped\",[28024]],[[194821,194821],\"mapped\",[28037]],[[194822,194822],\"mapped\",[146718]],[[194823,194823],\"mapped\",[27956]],[[194824,194824],\"mapped\",[28207]],[[194825,194825],\"mapped\",[28270]],[[194826,194826],\"mapped\",[15667]],[[194827,194827],\"mapped\",[28363]],[[194828,194828],\"mapped\",[28359]],[[194829,194829],\"mapped\",[147153]],[[194830,194830],\"mapped\",[28153]],[[194831,194831],\"mapped\",[28526]],[[194832,194832],\"mapped\",[147294]],[[194833,194833],\"mapped\",[147342]],[[194834,194834],\"mapped\",[28614]],[[194835,194835],\"mapped\",[28729]],[[194836,194836],\"mapped\",[28702]],[[194837,194837],\"mapped\",[28699]],[[194838,194838],\"mapped\",[15766]],[[194839,194839],\"mapped\",[28746]],[[194840,194840],\"mapped\",[28797]],[[194841,194841],\"mapped\",[28791]],[[194842,194842],\"mapped\",[28845]],[[194843,194843],\"mapped\",[132389]],[[194844,194844],\"mapped\",[28997]],[[194845,194845],\"mapped\",[148067]],[[194846,194846],\"mapped\",[29084]],[[194847,194847],\"disallowed\"],[[194848,194848],\"mapped\",[29224]],[[194849,194849],\"mapped\",[29237]],[[194850,194850],\"mapped\",[29264]],[[194851,194851],\"mapped\",[149000]],[[194852,194852],\"mapped\",[29312]],[[194853,194853],\"mapped\",[29333]],[[194854,194854],\"mapped\",[149301]],[[194855,194855],\"mapped\",[149524]],[[194856,194856],\"mapped\",[29562]],[[194857,194857],\"mapped\",[29579]],[[194858,194858],\"mapped\",[16044]],[[194859,194859],\"mapped\",[29605]],[[194860,194861],\"mapped\",[16056]],[[194862,194862],\"mapped\",[29767]],[[194863,194863],\"mapped\",[29788]],[[194864,194864],\"mapped\",[29809]],[[194865,194865],\"mapped\",[29829]],[[194866,194866],\"mapped\",[29898]],[[194867,194867],\"mapped\",[16155]],[[194868,194868],\"mapped\",[29988]],[[194869,194869],\"mapped\",[150582]],[[194870,194870],\"mapped\",[30014]],[[194871,194871],\"mapped\",[150674]],[[194872,194872],\"mapped\",[30064]],[[194873,194873],\"mapped\",[139679]],[[194874,194874],\"mapped\",[30224]],[[194875,194875],\"mapped\",[151457]],[[194876,194876],\"mapped\",[151480]],[[194877,194877],\"mapped\",[151620]],[[194878,194878],\"mapped\",[16380]],[[194879,194879],\"mapped\",[16392]],[[194880,194880],\"mapped\",[30452]],[[194881,194881],\"mapped\",[151795]],[[194882,194882],\"mapped\",[151794]],[[194883,194883],\"mapped\",[151833]],[[194884,194884],\"mapped\",[151859]],[[194885,194885],\"mapped\",[30494]],[[194886,194887],\"mapped\",[30495]],[[194888,194888],\"mapped\",[30538]],[[194889,194889],\"mapped\",[16441]],[[194890,194890],\"mapped\",[30603]],[[194891,194891],\"mapped\",[16454]],[[194892,194892],\"mapped\",[16534]],[[194893,194893],\"mapped\",[152605]],[[194894,194894],\"mapped\",[30798]],[[194895,194895],\"mapped\",[30860]],[[194896,194896],\"mapped\",[30924]],[[194897,194897],\"mapped\",[16611]],[[194898,194898],\"mapped\",[153126]],[[194899,194899],\"mapped\",[31062]],[[194900,194900],\"mapped\",[153242]],[[194901,194901],\"mapped\",[153285]],[[194902,194902],\"mapped\",[31119]],[[194903,194903],\"mapped\",[31211]],[[194904,194904],\"mapped\",[16687]],[[194905,194905],\"mapped\",[31296]],[[194906,194906],\"mapped\",[31306]],[[194907,194907],\"mapped\",[31311]],[[194908,194908],\"mapped\",[153980]],[[194909,194910],\"mapped\",[154279]],[[194911,194911],\"disallowed\"],[[194912,194912],\"mapped\",[16898]],[[194913,194913],\"mapped\",[154539]],[[194914,194914],\"mapped\",[31686]],[[194915,194915],\"mapped\",[31689]],[[194916,194916],\"mapped\",[16935]],[[194917,194917],\"mapped\",[154752]],[[194918,194918],\"mapped\",[31954]],[[194919,194919],\"mapped\",[17056]],[[194920,194920],\"mapped\",[31976]],[[194921,194921],\"mapped\",[31971]],[[194922,194922],\"mapped\",[32000]],[[194923,194923],\"mapped\",[155526]],[[194924,194924],\"mapped\",[32099]],[[194925,194925],\"mapped\",[17153]],[[194926,194926],\"mapped\",[32199]],[[194927,194927],\"mapped\",[32258]],[[194928,194928],\"mapped\",[32325]],[[194929,194929],\"mapped\",[17204]],[[194930,194930],\"mapped\",[156200]],[[194931,194931],\"mapped\",[156231]],[[194932,194932],\"mapped\",[17241]],[[194933,194933],\"mapped\",[156377]],[[194934,194934],\"mapped\",[32634]],[[194935,194935],\"mapped\",[156478]],[[194936,194936],\"mapped\",[32661]],[[194937,194937],\"mapped\",[32762]],[[194938,194938],\"mapped\",[32773]],[[194939,194939],\"mapped\",[156890]],[[194940,194940],\"mapped\",[156963]],[[194941,194941],\"mapped\",[32864]],[[194942,194942],\"mapped\",[157096]],[[194943,194943],\"mapped\",[32880]],[[194944,194944],\"mapped\",[144223]],[[194945,194945],\"mapped\",[17365]],[[194946,194946],\"mapped\",[32946]],[[194947,194947],\"mapped\",[33027]],[[194948,194948],\"mapped\",[17419]],[[194949,194949],\"mapped\",[33086]],[[194950,194950],\"mapped\",[23221]],[[194951,194951],\"mapped\",[157607]],[[194952,194952],\"mapped\",[157621]],[[194953,194953],\"mapped\",[144275]],[[194954,194954],\"mapped\",[144284]],[[194955,194955],\"mapped\",[33281]],[[194956,194956],\"mapped\",[33284]],[[194957,194957],\"mapped\",[36766]],[[194958,194958],\"mapped\",[17515]],[[194959,194959],\"mapped\",[33425]],[[194960,194960],\"mapped\",[33419]],[[194961,194961],\"mapped\",[33437]],[[194962,194962],\"mapped\",[21171]],[[194963,194963],\"mapped\",[33457]],[[194964,194964],\"mapped\",[33459]],[[194965,194965],\"mapped\",[33469]],[[194966,194966],\"mapped\",[33510]],[[194967,194967],\"mapped\",[158524]],[[194968,194968],\"mapped\",[33509]],[[194969,194969],\"mapped\",[33565]],[[194970,194970],\"mapped\",[33635]],[[194971,194971],\"mapped\",[33709]],[[194972,194972],\"mapped\",[33571]],[[194973,194973],\"mapped\",[33725]],[[194974,194974],\"mapped\",[33767]],[[194975,194975],\"mapped\",[33879]],[[194976,194976],\"mapped\",[33619]],[[194977,194977],\"mapped\",[33738]],[[194978,194978],\"mapped\",[33740]],[[194979,194979],\"mapped\",[33756]],[[194980,194980],\"mapped\",[158774]],[[194981,194981],\"mapped\",[159083]],[[194982,194982],\"mapped\",[158933]],[[194983,194983],\"mapped\",[17707]],[[194984,194984],\"mapped\",[34033]],[[194985,194985],\"mapped\",[34035]],[[194986,194986],\"mapped\",[34070]],[[194987,194987],\"mapped\",[160714]],[[194988,194988],\"mapped\",[34148]],[[194989,194989],\"mapped\",[159532]],[[194990,194990],\"mapped\",[17757]],[[194991,194991],\"mapped\",[17761]],[[194992,194992],\"mapped\",[159665]],[[194993,194993],\"mapped\",[159954]],[[194994,194994],\"mapped\",[17771]],[[194995,194995],\"mapped\",[34384]],[[194996,194996],\"mapped\",[34396]],[[194997,194997],\"mapped\",[34407]],[[194998,194998],\"mapped\",[34409]],[[194999,194999],\"mapped\",[34473]],[[195000,195000],\"mapped\",[34440]],[[195001,195001],\"mapped\",[34574]],[[195002,195002],\"mapped\",[34530]],[[195003,195003],\"mapped\",[34681]],[[195004,195004],\"mapped\",[34600]],[[195005,195005],\"mapped\",[34667]],[[195006,195006],\"mapped\",[34694]],[[195007,195007],\"disallowed\"],[[195008,195008],\"mapped\",[34785]],[[195009,195009],\"mapped\",[34817]],[[195010,195010],\"mapped\",[17913]],[[195011,195011],\"mapped\",[34912]],[[195012,195012],\"mapped\",[34915]],[[195013,195013],\"mapped\",[161383]],[[195014,195014],\"mapped\",[35031]],[[195015,195015],\"mapped\",[35038]],[[195016,195016],\"mapped\",[17973]],[[195017,195017],\"mapped\",[35066]],[[195018,195018],\"mapped\",[13499]],[[195019,195019],\"mapped\",[161966]],[[195020,195020],\"mapped\",[162150]],[[195021,195021],\"mapped\",[18110]],[[195022,195022],\"mapped\",[18119]],[[195023,195023],\"mapped\",[35488]],[[195024,195024],\"mapped\",[35565]],[[195025,195025],\"mapped\",[35722]],[[195026,195026],\"mapped\",[35925]],[[195027,195027],\"mapped\",[162984]],[[195028,195028],\"mapped\",[36011]],[[195029,195029],\"mapped\",[36033]],[[195030,195030],\"mapped\",[36123]],[[195031,195031],\"mapped\",[36215]],[[195032,195032],\"mapped\",[163631]],[[195033,195033],\"mapped\",[133124]],[[195034,195034],\"mapped\",[36299]],[[195035,195035],\"mapped\",[36284]],[[195036,195036],\"mapped\",[36336]],[[195037,195037],\"mapped\",[133342]],[[195038,195038],\"mapped\",[36564]],[[195039,195039],\"mapped\",[36664]],[[195040,195040],\"mapped\",[165330]],[[195041,195041],\"mapped\",[165357]],[[195042,195042],\"mapped\",[37012]],[[195043,195043],\"mapped\",[37105]],[[195044,195044],\"mapped\",[37137]],[[195045,195045],\"mapped\",[165678]],[[195046,195046],\"mapped\",[37147]],[[195047,195047],\"mapped\",[37432]],[[195048,195048],\"mapped\",[37591]],[[195049,195049],\"mapped\",[37592]],[[195050,195050],\"mapped\",[37500]],[[195051,195051],\"mapped\",[37881]],[[195052,195052],\"mapped\",[37909]],[[195053,195053],\"mapped\",[166906]],[[195054,195054],\"mapped\",[38283]],[[195055,195055],\"mapped\",[18837]],[[195056,195056],\"mapped\",[38327]],[[195057,195057],\"mapped\",[167287]],[[195058,195058],\"mapped\",[18918]],[[195059,195059],\"mapped\",[38595]],[[195060,195060],\"mapped\",[23986]],[[195061,195061],\"mapped\",[38691]],[[195062,195062],\"mapped\",[168261]],[[195063,195063],\"mapped\",[168474]],[[195064,195064],\"mapped\",[19054]],[[195065,195065],\"mapped\",[19062]],[[195066,195066],\"mapped\",[38880]],[[195067,195067],\"mapped\",[168970]],[[195068,195068],\"mapped\",[19122]],[[195069,195069],\"mapped\",[169110]],[[195070,195071],\"mapped\",[38923]],[[195072,195072],\"mapped\",[38953]],[[195073,195073],\"mapped\",[169398]],[[195074,195074],\"mapped\",[39138]],[[195075,195075],\"mapped\",[19251]],[[195076,195076],\"mapped\",[39209]],[[195077,195077],\"mapped\",[39335]],[[195078,195078],\"mapped\",[39362]],[[195079,195079],\"mapped\",[39422]],[[195080,195080],\"mapped\",[19406]],[[195081,195081],\"mapped\",[170800]],[[195082,195082],\"mapped\",[39698]],[[195083,195083],\"mapped\",[40000]],[[195084,195084],\"mapped\",[40189]],[[195085,195085],\"mapped\",[19662]],[[195086,195086],\"mapped\",[19693]],[[195087,195087],\"mapped\",[40295]],[[195088,195088],\"mapped\",[172238]],[[195089,195089],\"mapped\",[19704]],[[195090,195090],\"mapped\",[172293]],[[195091,195091],\"mapped\",[172558]],[[195092,195092],\"mapped\",[172689]],[[195093,195093],\"mapped\",[40635]],[[195094,195094],\"mapped\",[19798]],[[195095,195095],\"mapped\",[40697]],[[195096,195096],\"mapped\",[40702]],[[195097,195097],\"mapped\",[40709]],[[195098,195098],\"mapped\",[40719]],[[195099,195099],\"mapped\",[40726]],[[195100,195100],\"mapped\",[40763]],[[195101,195101],\"mapped\",[173568]],[[195102,196605],\"disallowed\"],[[196606,196607],\"disallowed\"],[[196608,262141],\"disallowed\"],[[262142,262143],\"disallowed\"],[[262144,327677],\"disallowed\"],[[327678,327679],\"disallowed\"],[[327680,393213],\"disallowed\"],[[393214,393215],\"disallowed\"],[[393216,458749],\"disallowed\"],[[458750,458751],\"disallowed\"],[[458752,524285],\"disallowed\"],[[524286,524287],\"disallowed\"],[[524288,589821],\"disallowed\"],[[589822,589823],\"disallowed\"],[[589824,655357],\"disallowed\"],[[655358,655359],\"disallowed\"],[[655360,720893],\"disallowed\"],[[720894,720895],\"disallowed\"],[[720896,786429],\"disallowed\"],[[786430,786431],\"disallowed\"],[[786432,851965],\"disallowed\"],[[851966,851967],\"disallowed\"],[[851968,917501],\"disallowed\"],[[917502,917503],\"disallowed\"],[[917504,917504],\"disallowed\"],[[917505,917505],\"disallowed\"],[[917506,917535],\"disallowed\"],[[917536,917631],\"disallowed\"],[[917632,917759],\"disallowed\"],[[917760,917999],\"ignored\"],[[918000,983037],\"disallowed\"],[[983038,983039],\"disallowed\"],[[983040,1048573],\"disallowed\"],[[1048574,1048575],\"disallowed\"],[[1048576,1114109],\"disallowed\"],[[1114110,1114111],\"disallowed\"]]","\"use strict\";\n\nvar punycode = require(\"punycode\");\nvar mappingTable = require(\"./lib/mappingTable.json\");\n\nvar PROCESSING_OPTIONS = {\n TRANSITIONAL: 0,\n NONTRANSITIONAL: 1\n};\n\nfunction normalize(str) { // fix bug in v8\n return str.split('\\u0000').map(function (s) { return s.normalize('NFC'); }).join('\\u0000');\n}\n\nfunction findStatus(val) {\n var start = 0;\n var end = mappingTable.length - 1;\n\n while (start <= end) {\n var mid = Math.floor((start + end) / 2);\n\n var target = mappingTable[mid];\n if (target[0][0] <= val && target[0][1] >= val) {\n return target;\n } else if (target[0][0] > val) {\n end = mid - 1;\n } else {\n start = mid + 1;\n }\n }\n\n return null;\n}\n\nvar regexAstralSymbols = /[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]/g;\n\nfunction countSymbols(string) {\n return string\n // replace every surrogate pair with a BMP symbol\n .replace(regexAstralSymbols, '_')\n // then get the length\n .length;\n}\n\nfunction mapChars(domain_name, useSTD3, processing_option) {\n var hasError = false;\n var processed = \"\";\n\n var len = countSymbols(domain_name);\n for (var i = 0; i < len; ++i) {\n var codePoint = domain_name.codePointAt(i);\n var status = findStatus(codePoint);\n\n switch (status[1]) {\n case \"disallowed\":\n hasError = true;\n processed += String.fromCodePoint(codePoint);\n break;\n case \"ignored\":\n break;\n case \"mapped\":\n processed += String.fromCodePoint.apply(String, status[2]);\n break;\n case \"deviation\":\n if (processing_option === PROCESSING_OPTIONS.TRANSITIONAL) {\n processed += String.fromCodePoint.apply(String, status[2]);\n } else {\n processed += String.fromCodePoint(codePoint);\n }\n break;\n case \"valid\":\n processed += String.fromCodePoint(codePoint);\n break;\n case \"disallowed_STD3_mapped\":\n if (useSTD3) {\n hasError = true;\n processed += String.fromCodePoint(codePoint);\n } else {\n processed += String.fromCodePoint.apply(String, status[2]);\n }\n break;\n case \"disallowed_STD3_valid\":\n if (useSTD3) {\n hasError = true;\n }\n\n processed += String.fromCodePoint(codePoint);\n break;\n }\n }\n\n return {\n string: processed,\n error: hasError\n };\n}\n\nvar combiningMarksRegex = /[\\u0300-\\u036F\\u0483-\\u0489\\u0591-\\u05BD\\u05BF\\u05C1\\u05C2\\u05C4\\u05C5\\u05C7\\u0610-\\u061A\\u064B-\\u065F\\u0670\\u06D6-\\u06DC\\u06DF-\\u06E4\\u06E7\\u06E8\\u06EA-\\u06ED\\u0711\\u0730-\\u074A\\u07A6-\\u07B0\\u07EB-\\u07F3\\u0816-\\u0819\\u081B-\\u0823\\u0825-\\u0827\\u0829-\\u082D\\u0859-\\u085B\\u08E4-\\u0903\\u093A-\\u093C\\u093E-\\u094F\\u0951-\\u0957\\u0962\\u0963\\u0981-\\u0983\\u09BC\\u09BE-\\u09C4\\u09C7\\u09C8\\u09CB-\\u09CD\\u09D7\\u09E2\\u09E3\\u0A01-\\u0A03\\u0A3C\\u0A3E-\\u0A42\\u0A47\\u0A48\\u0A4B-\\u0A4D\\u0A51\\u0A70\\u0A71\\u0A75\\u0A81-\\u0A83\\u0ABC\\u0ABE-\\u0AC5\\u0AC7-\\u0AC9\\u0ACB-\\u0ACD\\u0AE2\\u0AE3\\u0B01-\\u0B03\\u0B3C\\u0B3E-\\u0B44\\u0B47\\u0B48\\u0B4B-\\u0B4D\\u0B56\\u0B57\\u0B62\\u0B63\\u0B82\\u0BBE-\\u0BC2\\u0BC6-\\u0BC8\\u0BCA-\\u0BCD\\u0BD7\\u0C00-\\u0C03\\u0C3E-\\u0C44\\u0C46-\\u0C48\\u0C4A-\\u0C4D\\u0C55\\u0C56\\u0C62\\u0C63\\u0C81-\\u0C83\\u0CBC\\u0CBE-\\u0CC4\\u0CC6-\\u0CC8\\u0CCA-\\u0CCD\\u0CD5\\u0CD6\\u0CE2\\u0CE3\\u0D01-\\u0D03\\u0D3E-\\u0D44\\u0D46-\\u0D48\\u0D4A-\\u0D4D\\u0D57\\u0D62\\u0D63\\u0D82\\u0D83\\u0DCA\\u0DCF-\\u0DD4\\u0DD6\\u0DD8-\\u0DDF\\u0DF2\\u0DF3\\u0E31\\u0E34-\\u0E3A\\u0E47-\\u0E4E\\u0EB1\\u0EB4-\\u0EB9\\u0EBB\\u0EBC\\u0EC8-\\u0ECD\\u0F18\\u0F19\\u0F35\\u0F37\\u0F39\\u0F3E\\u0F3F\\u0F71-\\u0F84\\u0F86\\u0F87\\u0F8D-\\u0F97\\u0F99-\\u0FBC\\u0FC6\\u102B-\\u103E\\u1056-\\u1059\\u105E-\\u1060\\u1062-\\u1064\\u1067-\\u106D\\u1071-\\u1074\\u1082-\\u108D\\u108F\\u109A-\\u109D\\u135D-\\u135F\\u1712-\\u1714\\u1732-\\u1734\\u1752\\u1753\\u1772\\u1773\\u17B4-\\u17D3\\u17DD\\u180B-\\u180D\\u18A9\\u1920-\\u192B\\u1930-\\u193B\\u19B0-\\u19C0\\u19C8\\u19C9\\u1A17-\\u1A1B\\u1A55-\\u1A5E\\u1A60-\\u1A7C\\u1A7F\\u1AB0-\\u1ABE\\u1B00-\\u1B04\\u1B34-\\u1B44\\u1B6B-\\u1B73\\u1B80-\\u1B82\\u1BA1-\\u1BAD\\u1BE6-\\u1BF3\\u1C24-\\u1C37\\u1CD0-\\u1CD2\\u1CD4-\\u1CE8\\u1CED\\u1CF2-\\u1CF4\\u1CF8\\u1CF9\\u1DC0-\\u1DF5\\u1DFC-\\u1DFF\\u20D0-\\u20F0\\u2CEF-\\u2CF1\\u2D7F\\u2DE0-\\u2DFF\\u302A-\\u302F\\u3099\\u309A\\uA66F-\\uA672\\uA674-\\uA67D\\uA69F\\uA6F0\\uA6F1\\uA802\\uA806\\uA80B\\uA823-\\uA827\\uA880\\uA881\\uA8B4-\\uA8C4\\uA8E0-\\uA8F1\\uA926-\\uA92D\\uA947-\\uA953\\uA980-\\uA983\\uA9B3-\\uA9C0\\uA9E5\\uAA29-\\uAA36\\uAA43\\uAA4C\\uAA4D\\uAA7B-\\uAA7D\\uAAB0\\uAAB2-\\uAAB4\\uAAB7\\uAAB8\\uAABE\\uAABF\\uAAC1\\uAAEB-\\uAAEF\\uAAF5\\uAAF6\\uABE3-\\uABEA\\uABEC\\uABED\\uFB1E\\uFE00-\\uFE0F\\uFE20-\\uFE2D]|\\uD800[\\uDDFD\\uDEE0\\uDF76-\\uDF7A]|\\uD802[\\uDE01-\\uDE03\\uDE05\\uDE06\\uDE0C-\\uDE0F\\uDE38-\\uDE3A\\uDE3F\\uDEE5\\uDEE6]|\\uD804[\\uDC00-\\uDC02\\uDC38-\\uDC46\\uDC7F-\\uDC82\\uDCB0-\\uDCBA\\uDD00-\\uDD02\\uDD27-\\uDD34\\uDD73\\uDD80-\\uDD82\\uDDB3-\\uDDC0\\uDE2C-\\uDE37\\uDEDF-\\uDEEA\\uDF01-\\uDF03\\uDF3C\\uDF3E-\\uDF44\\uDF47\\uDF48\\uDF4B-\\uDF4D\\uDF57\\uDF62\\uDF63\\uDF66-\\uDF6C\\uDF70-\\uDF74]|\\uD805[\\uDCB0-\\uDCC3\\uDDAF-\\uDDB5\\uDDB8-\\uDDC0\\uDE30-\\uDE40\\uDEAB-\\uDEB7]|\\uD81A[\\uDEF0-\\uDEF4\\uDF30-\\uDF36]|\\uD81B[\\uDF51-\\uDF7E\\uDF8F-\\uDF92]|\\uD82F[\\uDC9D\\uDC9E]|\\uD834[\\uDD65-\\uDD69\\uDD6D-\\uDD72\\uDD7B-\\uDD82\\uDD85-\\uDD8B\\uDDAA-\\uDDAD\\uDE42-\\uDE44]|\\uD83A[\\uDCD0-\\uDCD6]|\\uDB40[\\uDD00-\\uDDEF]/;\n\nfunction validateLabel(label, processing_option) {\n if (label.substr(0, 4) === \"xn--\") {\n label = punycode.toUnicode(label);\n processing_option = PROCESSING_OPTIONS.NONTRANSITIONAL;\n }\n\n var error = false;\n\n if (normalize(label) !== label ||\n (label[3] === \"-\" && label[4] === \"-\") ||\n label[0] === \"-\" || label[label.length - 1] === \"-\" ||\n label.indexOf(\".\") !== -1 ||\n label.search(combiningMarksRegex) === 0) {\n error = true;\n }\n\n var len = countSymbols(label);\n for (var i = 0; i < len; ++i) {\n var status = findStatus(label.codePointAt(i));\n if ((processing === PROCESSING_OPTIONS.TRANSITIONAL && status[1] !== \"valid\") ||\n (processing === PROCESSING_OPTIONS.NONTRANSITIONAL &&\n status[1] !== \"valid\" && status[1] !== \"deviation\")) {\n error = true;\n break;\n }\n }\n\n return {\n label: label,\n error: error\n };\n}\n\nfunction processing(domain_name, useSTD3, processing_option) {\n var result = mapChars(domain_name, useSTD3, processing_option);\n result.string = normalize(result.string);\n\n var labels = result.string.split(\".\");\n for (var i = 0; i < labels.length; ++i) {\n try {\n var validation = validateLabel(labels[i]);\n labels[i] = validation.label;\n result.error = result.error || validation.error;\n } catch(e) {\n result.error = true;\n }\n }\n\n return {\n string: labels.join(\".\"),\n error: result.error\n };\n}\n\nmodule.exports.toASCII = function(domain_name, useSTD3, processing_option, verifyDnsLength) {\n var result = processing(domain_name, useSTD3, processing_option);\n var labels = result.string.split(\".\");\n labels = labels.map(function(l) {\n try {\n return punycode.toASCII(l);\n } catch(e) {\n result.error = true;\n return l;\n }\n });\n\n if (verifyDnsLength) {\n var total = labels.slice(0, labels.length - 1).join(\".\").length;\n if (total.length > 253 || total.length === 0) {\n result.error = true;\n }\n\n for (var i=0; i < labels.length; ++i) {\n if (labels.length > 63 || labels.length === 0) {\n result.error = true;\n break;\n }\n }\n }\n\n if (result.error) return null;\n return labels.join(\".\");\n};\n\nmodule.exports.toUnicode = function(domain_name, useSTD3) {\n var result = processing(domain_name, useSTD3, PROCESSING_OPTIONS.NONTRANSITIONAL);\n\n return {\n domain: result.string,\n error: result.error\n };\n};\n\nmodule.exports.PROCESSING_OPTIONS = PROCESSING_OPTIONS;\n","\"use strict\";\r\nconst punycode = require(\"punycode\");\r\nconst tr46 = require(\"tr46\");\r\n\r\nconst specialSchemes = {\r\n ftp: 21,\r\n file: null,\r\n gopher: 70,\r\n http: 80,\r\n https: 443,\r\n ws: 80,\r\n wss: 443\r\n};\r\n\r\nconst failure = Symbol(\"failure\");\r\n\r\nfunction countSymbols(str) {\r\n return punycode.ucs2.decode(str).length;\r\n}\r\n\r\nfunction at(input, idx) {\r\n const c = input[idx];\r\n return isNaN(c) ? undefined : String.fromCodePoint(c);\r\n}\r\n\r\nfunction isASCIIDigit(c) {\r\n return c >= 0x30 && c <= 0x39;\r\n}\r\n\r\nfunction isASCIIAlpha(c) {\r\n return (c >= 0x41 && c <= 0x5A) || (c >= 0x61 && c <= 0x7A);\r\n}\r\n\r\nfunction isASCIIAlphanumeric(c) {\r\n return isASCIIAlpha(c) || isASCIIDigit(c);\r\n}\r\n\r\nfunction isASCIIHex(c) {\r\n return isASCIIDigit(c) || (c >= 0x41 && c <= 0x46) || (c >= 0x61 && c <= 0x66);\r\n}\r\n\r\nfunction isSingleDot(buffer) {\r\n return buffer === \".\" || buffer.toLowerCase() === \"%2e\";\r\n}\r\n\r\nfunction isDoubleDot(buffer) {\r\n buffer = buffer.toLowerCase();\r\n return buffer === \"..\" || buffer === \"%2e.\" || buffer === \".%2e\" || buffer === \"%2e%2e\";\r\n}\r\n\r\nfunction isWindowsDriveLetterCodePoints(cp1, cp2) {\r\n return isASCIIAlpha(cp1) && (cp2 === 58 || cp2 === 124);\r\n}\r\n\r\nfunction isWindowsDriveLetterString(string) {\r\n return string.length === 2 && isASCIIAlpha(string.codePointAt(0)) && (string[1] === \":\" || string[1] === \"|\");\r\n}\r\n\r\nfunction isNormalizedWindowsDriveLetterString(string) {\r\n return string.length === 2 && isASCIIAlpha(string.codePointAt(0)) && string[1] === \":\";\r\n}\r\n\r\nfunction containsForbiddenHostCodePoint(string) {\r\n return string.search(/\\u0000|\\u0009|\\u000A|\\u000D|\\u0020|#|%|\\/|:|\\?|@|\\[|\\\\|\\]/) !== -1;\r\n}\r\n\r\nfunction containsForbiddenHostCodePointExcludingPercent(string) {\r\n return string.search(/\\u0000|\\u0009|\\u000A|\\u000D|\\u0020|#|\\/|:|\\?|@|\\[|\\\\|\\]/) !== -1;\r\n}\r\n\r\nfunction isSpecialScheme(scheme) {\r\n return specialSchemes[scheme] !== undefined;\r\n}\r\n\r\nfunction isSpecial(url) {\r\n return isSpecialScheme(url.scheme);\r\n}\r\n\r\nfunction defaultPort(scheme) {\r\n return specialSchemes[scheme];\r\n}\r\n\r\nfunction percentEncode(c) {\r\n let hex = c.toString(16).toUpperCase();\r\n if (hex.length === 1) {\r\n hex = \"0\" + hex;\r\n }\r\n\r\n return \"%\" + hex;\r\n}\r\n\r\nfunction utf8PercentEncode(c) {\r\n const buf = new Buffer(c);\r\n\r\n let str = \"\";\r\n\r\n for (let i = 0; i < buf.length; ++i) {\r\n str += percentEncode(buf[i]);\r\n }\r\n\r\n return str;\r\n}\r\n\r\nfunction utf8PercentDecode(str) {\r\n const input = new Buffer(str);\r\n const output = [];\r\n for (let i = 0; i < input.length; ++i) {\r\n if (input[i] !== 37) {\r\n output.push(input[i]);\r\n } else if (input[i] === 37 && isASCIIHex(input[i + 1]) && isASCIIHex(input[i + 2])) {\r\n output.push(parseInt(input.slice(i + 1, i + 3).toString(), 16));\r\n i += 2;\r\n } else {\r\n output.push(input[i]);\r\n }\r\n }\r\n return new Buffer(output).toString();\r\n}\r\n\r\nfunction isC0ControlPercentEncode(c) {\r\n return c <= 0x1F || c > 0x7E;\r\n}\r\n\r\nconst extraPathPercentEncodeSet = new Set([32, 34, 35, 60, 62, 63, 96, 123, 125]);\r\nfunction isPathPercentEncode(c) {\r\n return isC0ControlPercentEncode(c) || extraPathPercentEncodeSet.has(c);\r\n}\r\n\r\nconst extraUserinfoPercentEncodeSet =\r\n new Set([47, 58, 59, 61, 64, 91, 92, 93, 94, 124]);\r\nfunction isUserinfoPercentEncode(c) {\r\n return isPathPercentEncode(c) || extraUserinfoPercentEncodeSet.has(c);\r\n}\r\n\r\nfunction percentEncodeChar(c, encodeSetPredicate) {\r\n const cStr = String.fromCodePoint(c);\r\n\r\n if (encodeSetPredicate(c)) {\r\n return utf8PercentEncode(cStr);\r\n }\r\n\r\n return cStr;\r\n}\r\n\r\nfunction parseIPv4Number(input) {\r\n let R = 10;\r\n\r\n if (input.length >= 2 && input.charAt(0) === \"0\" && input.charAt(1).toLowerCase() === \"x\") {\r\n input = input.substring(2);\r\n R = 16;\r\n } else if (input.length >= 2 && input.charAt(0) === \"0\") {\r\n input = input.substring(1);\r\n R = 8;\r\n }\r\n\r\n if (input === \"\") {\r\n return 0;\r\n }\r\n\r\n const regex = R === 10 ? /[^0-9]/ : (R === 16 ? /[^0-9A-Fa-f]/ : /[^0-7]/);\r\n if (regex.test(input)) {\r\n return failure;\r\n }\r\n\r\n return parseInt(input, R);\r\n}\r\n\r\nfunction parseIPv4(input) {\r\n const parts = input.split(\".\");\r\n if (parts[parts.length - 1] === \"\") {\r\n if (parts.length > 1) {\r\n parts.pop();\r\n }\r\n }\r\n\r\n if (parts.length > 4) {\r\n return input;\r\n }\r\n\r\n const numbers = [];\r\n for (const part of parts) {\r\n if (part === \"\") {\r\n return input;\r\n }\r\n const n = parseIPv4Number(part);\r\n if (n === failure) {\r\n return input;\r\n }\r\n\r\n numbers.push(n);\r\n }\r\n\r\n for (let i = 0; i < numbers.length - 1; ++i) {\r\n if (numbers[i] > 255) {\r\n return failure;\r\n }\r\n }\r\n if (numbers[numbers.length - 1] >= Math.pow(256, 5 - numbers.length)) {\r\n return failure;\r\n }\r\n\r\n let ipv4 = numbers.pop();\r\n let counter = 0;\r\n\r\n for (const n of numbers) {\r\n ipv4 += n * Math.pow(256, 3 - counter);\r\n ++counter;\r\n }\r\n\r\n return ipv4;\r\n}\r\n\r\nfunction serializeIPv4(address) {\r\n let output = \"\";\r\n let n = address;\r\n\r\n for (let i = 1; i <= 4; ++i) {\r\n output = String(n % 256) + output;\r\n if (i !== 4) {\r\n output = \".\" + output;\r\n }\r\n n = Math.floor(n / 256);\r\n }\r\n\r\n return output;\r\n}\r\n\r\nfunction parseIPv6(input) {\r\n const address = [0, 0, 0, 0, 0, 0, 0, 0];\r\n let pieceIndex = 0;\r\n let compress = null;\r\n let pointer = 0;\r\n\r\n input = punycode.ucs2.decode(input);\r\n\r\n if (input[pointer] === 58) {\r\n if (input[pointer + 1] !== 58) {\r\n return failure;\r\n }\r\n\r\n pointer += 2;\r\n ++pieceIndex;\r\n compress = pieceIndex;\r\n }\r\n\r\n while (pointer < input.length) {\r\n if (pieceIndex === 8) {\r\n return failure;\r\n }\r\n\r\n if (input[pointer] === 58) {\r\n if (compress !== null) {\r\n return failure;\r\n }\r\n ++pointer;\r\n ++pieceIndex;\r\n compress = pieceIndex;\r\n continue;\r\n }\r\n\r\n let value = 0;\r\n let length = 0;\r\n\r\n while (length < 4 && isASCIIHex(input[pointer])) {\r\n value = value * 0x10 + parseInt(at(input, pointer), 16);\r\n ++pointer;\r\n ++length;\r\n }\r\n\r\n if (input[pointer] === 46) {\r\n if (length === 0) {\r\n return failure;\r\n }\r\n\r\n pointer -= length;\r\n\r\n if (pieceIndex > 6) {\r\n return failure;\r\n }\r\n\r\n let numbersSeen = 0;\r\n\r\n while (input[pointer] !== undefined) {\r\n let ipv4Piece = null;\r\n\r\n if (numbersSeen > 0) {\r\n if (input[pointer] === 46 && numbersSeen < 4) {\r\n ++pointer;\r\n } else {\r\n return failure;\r\n }\r\n }\r\n\r\n if (!isASCIIDigit(input[pointer])) {\r\n return failure;\r\n }\r\n\r\n while (isASCIIDigit(input[pointer])) {\r\n const number = parseInt(at(input, pointer));\r\n if (ipv4Piece === null) {\r\n ipv4Piece = number;\r\n } else if (ipv4Piece === 0) {\r\n return failure;\r\n } else {\r\n ipv4Piece = ipv4Piece * 10 + number;\r\n }\r\n if (ipv4Piece > 255) {\r\n return failure;\r\n }\r\n ++pointer;\r\n }\r\n\r\n address[pieceIndex] = address[pieceIndex] * 0x100 + ipv4Piece;\r\n\r\n ++numbersSeen;\r\n\r\n if (numbersSeen === 2 || numbersSeen === 4) {\r\n ++pieceIndex;\r\n }\r\n }\r\n\r\n if (numbersSeen !== 4) {\r\n return failure;\r\n }\r\n\r\n break;\r\n } else if (input[pointer] === 58) {\r\n ++pointer;\r\n if (input[pointer] === undefined) {\r\n return failure;\r\n }\r\n } else if (input[pointer] !== undefined) {\r\n return failure;\r\n }\r\n\r\n address[pieceIndex] = value;\r\n ++pieceIndex;\r\n }\r\n\r\n if (compress !== null) {\r\n let swaps = pieceIndex - compress;\r\n pieceIndex = 7;\r\n while (pieceIndex !== 0 && swaps > 0) {\r\n const temp = address[compress + swaps - 1];\r\n address[compress + swaps - 1] = address[pieceIndex];\r\n address[pieceIndex] = temp;\r\n --pieceIndex;\r\n --swaps;\r\n }\r\n } else if (compress === null && pieceIndex !== 8) {\r\n return failure;\r\n }\r\n\r\n return address;\r\n}\r\n\r\nfunction serializeIPv6(address) {\r\n let output = \"\";\r\n const seqResult = findLongestZeroSequence(address);\r\n const compress = seqResult.idx;\r\n let ignore0 = false;\r\n\r\n for (let pieceIndex = 0; pieceIndex <= 7; ++pieceIndex) {\r\n if (ignore0 && address[pieceIndex] === 0) {\r\n continue;\r\n } else if (ignore0) {\r\n ignore0 = false;\r\n }\r\n\r\n if (compress === pieceIndex) {\r\n const separator = pieceIndex === 0 ? \"::\" : \":\";\r\n output += separator;\r\n ignore0 = true;\r\n continue;\r\n }\r\n\r\n output += address[pieceIndex].toString(16);\r\n\r\n if (pieceIndex !== 7) {\r\n output += \":\";\r\n }\r\n }\r\n\r\n return output;\r\n}\r\n\r\nfunction parseHost(input, isSpecialArg) {\r\n if (input[0] === \"[\") {\r\n if (input[input.length - 1] !== \"]\") {\r\n return failure;\r\n }\r\n\r\n return parseIPv6(input.substring(1, input.length - 1));\r\n }\r\n\r\n if (!isSpecialArg) {\r\n return parseOpaqueHost(input);\r\n }\r\n\r\n const domain = utf8PercentDecode(input);\r\n const asciiDomain = tr46.toASCII(domain, false, tr46.PROCESSING_OPTIONS.NONTRANSITIONAL, false);\r\n if (asciiDomain === null) {\r\n return failure;\r\n }\r\n\r\n if (containsForbiddenHostCodePoint(asciiDomain)) {\r\n return failure;\r\n }\r\n\r\n const ipv4Host = parseIPv4(asciiDomain);\r\n if (typeof ipv4Host === \"number\" || ipv4Host === failure) {\r\n return ipv4Host;\r\n }\r\n\r\n return asciiDomain;\r\n}\r\n\r\nfunction parseOpaqueHost(input) {\r\n if (containsForbiddenHostCodePointExcludingPercent(input)) {\r\n return failure;\r\n }\r\n\r\n let output = \"\";\r\n const decoded = punycode.ucs2.decode(input);\r\n for (let i = 0; i < decoded.length; ++i) {\r\n output += percentEncodeChar(decoded[i], isC0ControlPercentEncode);\r\n }\r\n return output;\r\n}\r\n\r\nfunction findLongestZeroSequence(arr) {\r\n let maxIdx = null;\r\n let maxLen = 1; // only find elements > 1\r\n let currStart = null;\r\n let currLen = 0;\r\n\r\n for (let i = 0; i < arr.length; ++i) {\r\n if (arr[i] !== 0) {\r\n if (currLen > maxLen) {\r\n maxIdx = currStart;\r\n maxLen = currLen;\r\n }\r\n\r\n currStart = null;\r\n currLen = 0;\r\n } else {\r\n if (currStart === null) {\r\n currStart = i;\r\n }\r\n ++currLen;\r\n }\r\n }\r\n\r\n // if trailing zeros\r\n if (currLen > maxLen) {\r\n maxIdx = currStart;\r\n maxLen = currLen;\r\n }\r\n\r\n return {\r\n idx: maxIdx,\r\n len: maxLen\r\n };\r\n}\r\n\r\nfunction serializeHost(host) {\r\n if (typeof host === \"number\") {\r\n return serializeIPv4(host);\r\n }\r\n\r\n // IPv6 serializer\r\n if (host instanceof Array) {\r\n return \"[\" + serializeIPv6(host) + \"]\";\r\n }\r\n\r\n return host;\r\n}\r\n\r\nfunction trimControlChars(url) {\r\n return url.replace(/^[\\u0000-\\u001F\\u0020]+|[\\u0000-\\u001F\\u0020]+$/g, \"\");\r\n}\r\n\r\nfunction trimTabAndNewline(url) {\r\n return url.replace(/\\u0009|\\u000A|\\u000D/g, \"\");\r\n}\r\n\r\nfunction shortenPath(url) {\r\n const path = url.path;\r\n if (path.length === 0) {\r\n return;\r\n }\r\n if (url.scheme === \"file\" && path.length === 1 && isNormalizedWindowsDriveLetter(path[0])) {\r\n return;\r\n }\r\n\r\n path.pop();\r\n}\r\n\r\nfunction includesCredentials(url) {\r\n return url.username !== \"\" || url.password !== \"\";\r\n}\r\n\r\nfunction cannotHaveAUsernamePasswordPort(url) {\r\n return url.host === null || url.host === \"\" || url.cannotBeABaseURL || url.scheme === \"file\";\r\n}\r\n\r\nfunction isNormalizedWindowsDriveLetter(string) {\r\n return /^[A-Za-z]:$/.test(string);\r\n}\r\n\r\nfunction URLStateMachine(input, base, encodingOverride, url, stateOverride) {\r\n this.pointer = 0;\r\n this.input = input;\r\n this.base = base || null;\r\n this.encodingOverride = encodingOverride || \"utf-8\";\r\n this.stateOverride = stateOverride;\r\n this.url = url;\r\n this.failure = false;\r\n this.parseError = false;\r\n\r\n if (!this.url) {\r\n this.url = {\r\n scheme: \"\",\r\n username: \"\",\r\n password: \"\",\r\n host: null,\r\n port: null,\r\n path: [],\r\n query: null,\r\n fragment: null,\r\n\r\n cannotBeABaseURL: false\r\n };\r\n\r\n const res = trimControlChars(this.input);\r\n if (res !== this.input) {\r\n this.parseError = true;\r\n }\r\n this.input = res;\r\n }\r\n\r\n const res = trimTabAndNewline(this.input);\r\n if (res !== this.input) {\r\n this.parseError = true;\r\n }\r\n this.input = res;\r\n\r\n this.state = stateOverride || \"scheme start\";\r\n\r\n this.buffer = \"\";\r\n this.atFlag = false;\r\n this.arrFlag = false;\r\n this.passwordTokenSeenFlag = false;\r\n\r\n this.input = punycode.ucs2.decode(this.input);\r\n\r\n for (; this.pointer <= this.input.length; ++this.pointer) {\r\n const c = this.input[this.pointer];\r\n const cStr = isNaN(c) ? undefined : String.fromCodePoint(c);\r\n\r\n // exec state machine\r\n const ret = this[\"parse \" + this.state](c, cStr);\r\n if (!ret) {\r\n break; // terminate algorithm\r\n } else if (ret === failure) {\r\n this.failure = true;\r\n break;\r\n }\r\n }\r\n}\r\n\r\nURLStateMachine.prototype[\"parse scheme start\"] = function parseSchemeStart(c, cStr) {\r\n if (isASCIIAlpha(c)) {\r\n this.buffer += cStr.toLowerCase();\r\n this.state = \"scheme\";\r\n } else if (!this.stateOverride) {\r\n this.state = \"no scheme\";\r\n --this.pointer;\r\n } else {\r\n this.parseError = true;\r\n return failure;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse scheme\"] = function parseScheme(c, cStr) {\r\n if (isASCIIAlphanumeric(c) || c === 43 || c === 45 || c === 46) {\r\n this.buffer += cStr.toLowerCase();\r\n } else if (c === 58) {\r\n if (this.stateOverride) {\r\n if (isSpecial(this.url) && !isSpecialScheme(this.buffer)) {\r\n return false;\r\n }\r\n\r\n if (!isSpecial(this.url) && isSpecialScheme(this.buffer)) {\r\n return false;\r\n }\r\n\r\n if ((includesCredentials(this.url) || this.url.port !== null) && this.buffer === \"file\") {\r\n return false;\r\n }\r\n\r\n if (this.url.scheme === \"file\" && (this.url.host === \"\" || this.url.host === null)) {\r\n return false;\r\n }\r\n }\r\n this.url.scheme = this.buffer;\r\n this.buffer = \"\";\r\n if (this.stateOverride) {\r\n return false;\r\n }\r\n if (this.url.scheme === \"file\") {\r\n if (this.input[this.pointer + 1] !== 47 || this.input[this.pointer + 2] !== 47) {\r\n this.parseError = true;\r\n }\r\n this.state = \"file\";\r\n } else if (isSpecial(this.url) && this.base !== null && this.base.scheme === this.url.scheme) {\r\n this.state = \"special relative or authority\";\r\n } else if (isSpecial(this.url)) {\r\n this.state = \"special authority slashes\";\r\n } else if (this.input[this.pointer + 1] === 47) {\r\n this.state = \"path or authority\";\r\n ++this.pointer;\r\n } else {\r\n this.url.cannotBeABaseURL = true;\r\n this.url.path.push(\"\");\r\n this.state = \"cannot-be-a-base-URL path\";\r\n }\r\n } else if (!this.stateOverride) {\r\n this.buffer = \"\";\r\n this.state = \"no scheme\";\r\n this.pointer = -1;\r\n } else {\r\n this.parseError = true;\r\n return failure;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse no scheme\"] = function parseNoScheme(c) {\r\n if (this.base === null || (this.base.cannotBeABaseURL && c !== 35)) {\r\n return failure;\r\n } else if (this.base.cannotBeABaseURL && c === 35) {\r\n this.url.scheme = this.base.scheme;\r\n this.url.path = this.base.path.slice();\r\n this.url.query = this.base.query;\r\n this.url.fragment = \"\";\r\n this.url.cannotBeABaseURL = true;\r\n this.state = \"fragment\";\r\n } else if (this.base.scheme === \"file\") {\r\n this.state = \"file\";\r\n --this.pointer;\r\n } else {\r\n this.state = \"relative\";\r\n --this.pointer;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse special relative or authority\"] = function parseSpecialRelativeOrAuthority(c) {\r\n if (c === 47 && this.input[this.pointer + 1] === 47) {\r\n this.state = \"special authority ignore slashes\";\r\n ++this.pointer;\r\n } else {\r\n this.parseError = true;\r\n this.state = \"relative\";\r\n --this.pointer;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse path or authority\"] = function parsePathOrAuthority(c) {\r\n if (c === 47) {\r\n this.state = \"authority\";\r\n } else {\r\n this.state = \"path\";\r\n --this.pointer;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse relative\"] = function parseRelative(c) {\r\n this.url.scheme = this.base.scheme;\r\n if (isNaN(c)) {\r\n this.url.username = this.base.username;\r\n this.url.password = this.base.password;\r\n this.url.host = this.base.host;\r\n this.url.port = this.base.port;\r\n this.url.path = this.base.path.slice();\r\n this.url.query = this.base.query;\r\n } else if (c === 47) {\r\n this.state = \"relative slash\";\r\n } else if (c === 63) {\r\n this.url.username = this.base.username;\r\n this.url.password = this.base.password;\r\n this.url.host = this.base.host;\r\n this.url.port = this.base.port;\r\n this.url.path = this.base.path.slice();\r\n this.url.query = \"\";\r\n this.state = \"query\";\r\n } else if (c === 35) {\r\n this.url.username = this.base.username;\r\n this.url.password = this.base.password;\r\n this.url.host = this.base.host;\r\n this.url.port = this.base.port;\r\n this.url.path = this.base.path.slice();\r\n this.url.query = this.base.query;\r\n this.url.fragment = \"\";\r\n this.state = \"fragment\";\r\n } else if (isSpecial(this.url) && c === 92) {\r\n this.parseError = true;\r\n this.state = \"relative slash\";\r\n } else {\r\n this.url.username = this.base.username;\r\n this.url.password = this.base.password;\r\n this.url.host = this.base.host;\r\n this.url.port = this.base.port;\r\n this.url.path = this.base.path.slice(0, this.base.path.length - 1);\r\n\r\n this.state = \"path\";\r\n --this.pointer;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse relative slash\"] = function parseRelativeSlash(c) {\r\n if (isSpecial(this.url) && (c === 47 || c === 92)) {\r\n if (c === 92) {\r\n this.parseError = true;\r\n }\r\n this.state = \"special authority ignore slashes\";\r\n } else if (c === 47) {\r\n this.state = \"authority\";\r\n } else {\r\n this.url.username = this.base.username;\r\n this.url.password = this.base.password;\r\n this.url.host = this.base.host;\r\n this.url.port = this.base.port;\r\n this.state = \"path\";\r\n --this.pointer;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse special authority slashes\"] = function parseSpecialAuthoritySlashes(c) {\r\n if (c === 47 && this.input[this.pointer + 1] === 47) {\r\n this.state = \"special authority ignore slashes\";\r\n ++this.pointer;\r\n } else {\r\n this.parseError = true;\r\n this.state = \"special authority ignore slashes\";\r\n --this.pointer;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse special authority ignore slashes\"] = function parseSpecialAuthorityIgnoreSlashes(c) {\r\n if (c !== 47 && c !== 92) {\r\n this.state = \"authority\";\r\n --this.pointer;\r\n } else {\r\n this.parseError = true;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse authority\"] = function parseAuthority(c, cStr) {\r\n if (c === 64) {\r\n this.parseError = true;\r\n if (this.atFlag) {\r\n this.buffer = \"%40\" + this.buffer;\r\n }\r\n this.atFlag = true;\r\n\r\n // careful, this is based on buffer and has its own pointer (this.pointer != pointer) and inner chars\r\n const len = countSymbols(this.buffer);\r\n for (let pointer = 0; pointer < len; ++pointer) {\r\n const codePoint = this.buffer.codePointAt(pointer);\r\n\r\n if (codePoint === 58 && !this.passwordTokenSeenFlag) {\r\n this.passwordTokenSeenFlag = true;\r\n continue;\r\n }\r\n const encodedCodePoints = percentEncodeChar(codePoint, isUserinfoPercentEncode);\r\n if (this.passwordTokenSeenFlag) {\r\n this.url.password += encodedCodePoints;\r\n } else {\r\n this.url.username += encodedCodePoints;\r\n }\r\n }\r\n this.buffer = \"\";\r\n } else if (isNaN(c) || c === 47 || c === 63 || c === 35 ||\r\n (isSpecial(this.url) && c === 92)) {\r\n if (this.atFlag && this.buffer === \"\") {\r\n this.parseError = true;\r\n return failure;\r\n }\r\n this.pointer -= countSymbols(this.buffer) + 1;\r\n this.buffer = \"\";\r\n this.state = \"host\";\r\n } else {\r\n this.buffer += cStr;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse hostname\"] =\r\nURLStateMachine.prototype[\"parse host\"] = function parseHostName(c, cStr) {\r\n if (this.stateOverride && this.url.scheme === \"file\") {\r\n --this.pointer;\r\n this.state = \"file host\";\r\n } else if (c === 58 && !this.arrFlag) {\r\n if (this.buffer === \"\") {\r\n this.parseError = true;\r\n return failure;\r\n }\r\n\r\n const host = parseHost(this.buffer, isSpecial(this.url));\r\n if (host === failure) {\r\n return failure;\r\n }\r\n\r\n this.url.host = host;\r\n this.buffer = \"\";\r\n this.state = \"port\";\r\n if (this.stateOverride === \"hostname\") {\r\n return false;\r\n }\r\n } else if (isNaN(c) || c === 47 || c === 63 || c === 35 ||\r\n (isSpecial(this.url) && c === 92)) {\r\n --this.pointer;\r\n if (isSpecial(this.url) && this.buffer === \"\") {\r\n this.parseError = true;\r\n return failure;\r\n } else if (this.stateOverride && this.buffer === \"\" &&\r\n (includesCredentials(this.url) || this.url.port !== null)) {\r\n this.parseError = true;\r\n return false;\r\n }\r\n\r\n const host = parseHost(this.buffer, isSpecial(this.url));\r\n if (host === failure) {\r\n return failure;\r\n }\r\n\r\n this.url.host = host;\r\n this.buffer = \"\";\r\n this.state = \"path start\";\r\n if (this.stateOverride) {\r\n return false;\r\n }\r\n } else {\r\n if (c === 91) {\r\n this.arrFlag = true;\r\n } else if (c === 93) {\r\n this.arrFlag = false;\r\n }\r\n this.buffer += cStr;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse port\"] = function parsePort(c, cStr) {\r\n if (isASCIIDigit(c)) {\r\n this.buffer += cStr;\r\n } else if (isNaN(c) || c === 47 || c === 63 || c === 35 ||\r\n (isSpecial(this.url) && c === 92) ||\r\n this.stateOverride) {\r\n if (this.buffer !== \"\") {\r\n const port = parseInt(this.buffer);\r\n if (port > Math.pow(2, 16) - 1) {\r\n this.parseError = true;\r\n return failure;\r\n }\r\n this.url.port = port === defaultPort(this.url.scheme) ? null : port;\r\n this.buffer = \"\";\r\n }\r\n if (this.stateOverride) {\r\n return false;\r\n }\r\n this.state = \"path start\";\r\n --this.pointer;\r\n } else {\r\n this.parseError = true;\r\n return failure;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nconst fileOtherwiseCodePoints = new Set([47, 92, 63, 35]);\r\n\r\nURLStateMachine.prototype[\"parse file\"] = function parseFile(c) {\r\n this.url.scheme = \"file\";\r\n\r\n if (c === 47 || c === 92) {\r\n if (c === 92) {\r\n this.parseError = true;\r\n }\r\n this.state = \"file slash\";\r\n } else if (this.base !== null && this.base.scheme === \"file\") {\r\n if (isNaN(c)) {\r\n this.url.host = this.base.host;\r\n this.url.path = this.base.path.slice();\r\n this.url.query = this.base.query;\r\n } else if (c === 63) {\r\n this.url.host = this.base.host;\r\n this.url.path = this.base.path.slice();\r\n this.url.query = \"\";\r\n this.state = \"query\";\r\n } else if (c === 35) {\r\n this.url.host = this.base.host;\r\n this.url.path = this.base.path.slice();\r\n this.url.query = this.base.query;\r\n this.url.fragment = \"\";\r\n this.state = \"fragment\";\r\n } else {\r\n if (this.input.length - this.pointer - 1 === 0 || // remaining consists of 0 code points\r\n !isWindowsDriveLetterCodePoints(c, this.input[this.pointer + 1]) ||\r\n (this.input.length - this.pointer - 1 >= 2 && // remaining has at least 2 code points\r\n !fileOtherwiseCodePoints.has(this.input[this.pointer + 2]))) {\r\n this.url.host = this.base.host;\r\n this.url.path = this.base.path.slice();\r\n shortenPath(this.url);\r\n } else {\r\n this.parseError = true;\r\n }\r\n\r\n this.state = \"path\";\r\n --this.pointer;\r\n }\r\n } else {\r\n this.state = \"path\";\r\n --this.pointer;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse file slash\"] = function parseFileSlash(c) {\r\n if (c === 47 || c === 92) {\r\n if (c === 92) {\r\n this.parseError = true;\r\n }\r\n this.state = \"file host\";\r\n } else {\r\n if (this.base !== null && this.base.scheme === \"file\") {\r\n if (isNormalizedWindowsDriveLetterString(this.base.path[0])) {\r\n this.url.path.push(this.base.path[0]);\r\n } else {\r\n this.url.host = this.base.host;\r\n }\r\n }\r\n this.state = \"path\";\r\n --this.pointer;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse file host\"] = function parseFileHost(c, cStr) {\r\n if (isNaN(c) || c === 47 || c === 92 || c === 63 || c === 35) {\r\n --this.pointer;\r\n if (!this.stateOverride && isWindowsDriveLetterString(this.buffer)) {\r\n this.parseError = true;\r\n this.state = \"path\";\r\n } else if (this.buffer === \"\") {\r\n this.url.host = \"\";\r\n if (this.stateOverride) {\r\n return false;\r\n }\r\n this.state = \"path start\";\r\n } else {\r\n let host = parseHost(this.buffer, isSpecial(this.url));\r\n if (host === failure) {\r\n return failure;\r\n }\r\n if (host === \"localhost\") {\r\n host = \"\";\r\n }\r\n this.url.host = host;\r\n\r\n if (this.stateOverride) {\r\n return false;\r\n }\r\n\r\n this.buffer = \"\";\r\n this.state = \"path start\";\r\n }\r\n } else {\r\n this.buffer += cStr;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse path start\"] = function parsePathStart(c) {\r\n if (isSpecial(this.url)) {\r\n if (c === 92) {\r\n this.parseError = true;\r\n }\r\n this.state = \"path\";\r\n\r\n if (c !== 47 && c !== 92) {\r\n --this.pointer;\r\n }\r\n } else if (!this.stateOverride && c === 63) {\r\n this.url.query = \"\";\r\n this.state = \"query\";\r\n } else if (!this.stateOverride && c === 35) {\r\n this.url.fragment = \"\";\r\n this.state = \"fragment\";\r\n } else if (c !== undefined) {\r\n this.state = \"path\";\r\n if (c !== 47) {\r\n --this.pointer;\r\n }\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse path\"] = function parsePath(c) {\r\n if (isNaN(c) || c === 47 || (isSpecial(this.url) && c === 92) ||\r\n (!this.stateOverride && (c === 63 || c === 35))) {\r\n if (isSpecial(this.url) && c === 92) {\r\n this.parseError = true;\r\n }\r\n\r\n if (isDoubleDot(this.buffer)) {\r\n shortenPath(this.url);\r\n if (c !== 47 && !(isSpecial(this.url) && c === 92)) {\r\n this.url.path.push(\"\");\r\n }\r\n } else if (isSingleDot(this.buffer) && c !== 47 &&\r\n !(isSpecial(this.url) && c === 92)) {\r\n this.url.path.push(\"\");\r\n } else if (!isSingleDot(this.buffer)) {\r\n if (this.url.scheme === \"file\" && this.url.path.length === 0 && isWindowsDriveLetterString(this.buffer)) {\r\n if (this.url.host !== \"\" && this.url.host !== null) {\r\n this.parseError = true;\r\n this.url.host = \"\";\r\n }\r\n this.buffer = this.buffer[0] + \":\";\r\n }\r\n this.url.path.push(this.buffer);\r\n }\r\n this.buffer = \"\";\r\n if (this.url.scheme === \"file\" && (c === undefined || c === 63 || c === 35)) {\r\n while (this.url.path.length > 1 && this.url.path[0] === \"\") {\r\n this.parseError = true;\r\n this.url.path.shift();\r\n }\r\n }\r\n if (c === 63) {\r\n this.url.query = \"\";\r\n this.state = \"query\";\r\n }\r\n if (c === 35) {\r\n this.url.fragment = \"\";\r\n this.state = \"fragment\";\r\n }\r\n } else {\r\n // TODO: If c is not a URL code point and not \"%\", parse error.\r\n\r\n if (c === 37 &&\r\n (!isASCIIHex(this.input[this.pointer + 1]) ||\r\n !isASCIIHex(this.input[this.pointer + 2]))) {\r\n this.parseError = true;\r\n }\r\n\r\n this.buffer += percentEncodeChar(c, isPathPercentEncode);\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse cannot-be-a-base-URL path\"] = function parseCannotBeABaseURLPath(c) {\r\n if (c === 63) {\r\n this.url.query = \"\";\r\n this.state = \"query\";\r\n } else if (c === 35) {\r\n this.url.fragment = \"\";\r\n this.state = \"fragment\";\r\n } else {\r\n // TODO: Add: not a URL code point\r\n if (!isNaN(c) && c !== 37) {\r\n this.parseError = true;\r\n }\r\n\r\n if (c === 37 &&\r\n (!isASCIIHex(this.input[this.pointer + 1]) ||\r\n !isASCIIHex(this.input[this.pointer + 2]))) {\r\n this.parseError = true;\r\n }\r\n\r\n if (!isNaN(c)) {\r\n this.url.path[0] = this.url.path[0] + percentEncodeChar(c, isC0ControlPercentEncode);\r\n }\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse query\"] = function parseQuery(c, cStr) {\r\n if (isNaN(c) || (!this.stateOverride && c === 35)) {\r\n if (!isSpecial(this.url) || this.url.scheme === \"ws\" || this.url.scheme === \"wss\") {\r\n this.encodingOverride = \"utf-8\";\r\n }\r\n\r\n const buffer = new Buffer(this.buffer); // TODO: Use encoding override instead\r\n for (let i = 0; i < buffer.length; ++i) {\r\n if (buffer[i] < 0x21 || buffer[i] > 0x7E || buffer[i] === 0x22 || buffer[i] === 0x23 ||\r\n buffer[i] === 0x3C || buffer[i] === 0x3E) {\r\n this.url.query += percentEncode(buffer[i]);\r\n } else {\r\n this.url.query += String.fromCodePoint(buffer[i]);\r\n }\r\n }\r\n\r\n this.buffer = \"\";\r\n if (c === 35) {\r\n this.url.fragment = \"\";\r\n this.state = \"fragment\";\r\n }\r\n } else {\r\n // TODO: If c is not a URL code point and not \"%\", parse error.\r\n if (c === 37 &&\r\n (!isASCIIHex(this.input[this.pointer + 1]) ||\r\n !isASCIIHex(this.input[this.pointer + 2]))) {\r\n this.parseError = true;\r\n }\r\n\r\n this.buffer += cStr;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse fragment\"] = function parseFragment(c) {\r\n if (isNaN(c)) { // do nothing\r\n } else if (c === 0x0) {\r\n this.parseError = true;\r\n } else {\r\n // TODO: If c is not a URL code point and not \"%\", parse error.\r\n if (c === 37 &&\r\n (!isASCIIHex(this.input[this.pointer + 1]) ||\r\n !isASCIIHex(this.input[this.pointer + 2]))) {\r\n this.parseError = true;\r\n }\r\n\r\n this.url.fragment += percentEncodeChar(c, isC0ControlPercentEncode);\r\n }\r\n\r\n return true;\r\n};\r\n\r\nfunction serializeURL(url, excludeFragment) {\r\n let output = url.scheme + \":\";\r\n if (url.host !== null) {\r\n output += \"//\";\r\n\r\n if (url.username !== \"\" || url.password !== \"\") {\r\n output += url.username;\r\n if (url.password !== \"\") {\r\n output += \":\" + url.password;\r\n }\r\n output += \"@\";\r\n }\r\n\r\n output += serializeHost(url.host);\r\n\r\n if (url.port !== null) {\r\n output += \":\" + url.port;\r\n }\r\n } else if (url.host === null && url.scheme === \"file\") {\r\n output += \"//\";\r\n }\r\n\r\n if (url.cannotBeABaseURL) {\r\n output += url.path[0];\r\n } else {\r\n for (const string of url.path) {\r\n output += \"/\" + string;\r\n }\r\n }\r\n\r\n if (url.query !== null) {\r\n output += \"?\" + url.query;\r\n }\r\n\r\n if (!excludeFragment && url.fragment !== null) {\r\n output += \"#\" + url.fragment;\r\n }\r\n\r\n return output;\r\n}\r\n\r\nfunction serializeOrigin(tuple) {\r\n let result = tuple.scheme + \"://\";\r\n result += serializeHost(tuple.host);\r\n\r\n if (tuple.port !== null) {\r\n result += \":\" + tuple.port;\r\n }\r\n\r\n return result;\r\n}\r\n\r\nmodule.exports.serializeURL = serializeURL;\r\n\r\nmodule.exports.serializeURLOrigin = function (url) {\r\n // https://url.spec.whatwg.org/#concept-url-origin\r\n switch (url.scheme) {\r\n case \"blob\":\r\n try {\r\n return module.exports.serializeURLOrigin(module.exports.parseURL(url.path[0]));\r\n } catch (e) {\r\n // serializing an opaque origin returns \"null\"\r\n return \"null\";\r\n }\r\n case \"ftp\":\r\n case \"gopher\":\r\n case \"http\":\r\n case \"https\":\r\n case \"ws\":\r\n case \"wss\":\r\n return serializeOrigin({\r\n scheme: url.scheme,\r\n host: url.host,\r\n port: url.port\r\n });\r\n case \"file\":\r\n // spec says \"exercise to the reader\", chrome says \"file://\"\r\n return \"file://\";\r\n default:\r\n // serializing an opaque origin returns \"null\"\r\n return \"null\";\r\n }\r\n};\r\n\r\nmodule.exports.basicURLParse = function (input, options) {\r\n if (options === undefined) {\r\n options = {};\r\n }\r\n\r\n const usm = new URLStateMachine(input, options.baseURL, options.encodingOverride, options.url, options.stateOverride);\r\n if (usm.failure) {\r\n return \"failure\";\r\n }\r\n\r\n return usm.url;\r\n};\r\n\r\nmodule.exports.setTheUsername = function (url, username) {\r\n url.username = \"\";\r\n const decoded = punycode.ucs2.decode(username);\r\n for (let i = 0; i < decoded.length; ++i) {\r\n url.username += percentEncodeChar(decoded[i], isUserinfoPercentEncode);\r\n }\r\n};\r\n\r\nmodule.exports.setThePassword = function (url, password) {\r\n url.password = \"\";\r\n const decoded = punycode.ucs2.decode(password);\r\n for (let i = 0; i < decoded.length; ++i) {\r\n url.password += percentEncodeChar(decoded[i], isUserinfoPercentEncode);\r\n }\r\n};\r\n\r\nmodule.exports.serializeHost = serializeHost;\r\n\r\nmodule.exports.cannotHaveAUsernamePasswordPort = cannotHaveAUsernamePasswordPort;\r\n\r\nmodule.exports.serializeInteger = function (integer) {\r\n return String(integer);\r\n};\r\n\r\nmodule.exports.parseURL = function (input, options) {\r\n if (options === undefined) {\r\n options = {};\r\n }\r\n\r\n // We don't handle blobs, so this just delegates:\r\n return module.exports.basicURLParse(input, { baseURL: options.baseURL, encodingOverride: options.encodingOverride });\r\n};\r\n","\"use strict\";\nconst usm = require(\"./url-state-machine\");\n\nexports.implementation = class URLImpl {\n constructor(constructorArgs) {\n const url = constructorArgs[0];\n const base = constructorArgs[1];\n\n let parsedBase = null;\n if (base !== undefined) {\n parsedBase = usm.basicURLParse(base);\n if (parsedBase === \"failure\") {\n throw new TypeError(\"Invalid base URL\");\n }\n }\n\n const parsedURL = usm.basicURLParse(url, { baseURL: parsedBase });\n if (parsedURL === \"failure\") {\n throw new TypeError(\"Invalid URL\");\n }\n\n this._url = parsedURL;\n\n // TODO: query stuff\n }\n\n get href() {\n return usm.serializeURL(this._url);\n }\n\n set href(v) {\n const parsedURL = usm.basicURLParse(v);\n if (parsedURL === \"failure\") {\n throw new TypeError(\"Invalid URL\");\n }\n\n this._url = parsedURL;\n }\n\n get origin() {\n return usm.serializeURLOrigin(this._url);\n }\n\n get protocol() {\n return this._url.scheme + \":\";\n }\n\n set protocol(v) {\n usm.basicURLParse(v + \":\", { url: this._url, stateOverride: \"scheme start\" });\n }\n\n get username() {\n return this._url.username;\n }\n\n set username(v) {\n if (usm.cannotHaveAUsernamePasswordPort(this._url)) {\n return;\n }\n\n usm.setTheUsername(this._url, v);\n }\n\n get password() {\n return this._url.password;\n }\n\n set password(v) {\n if (usm.cannotHaveAUsernamePasswordPort(this._url)) {\n return;\n }\n\n usm.setThePassword(this._url, v);\n }\n\n get host() {\n const url = this._url;\n\n if (url.host === null) {\n return \"\";\n }\n\n if (url.port === null) {\n return usm.serializeHost(url.host);\n }\n\n return usm.serializeHost(url.host) + \":\" + usm.serializeInteger(url.port);\n }\n\n set host(v) {\n if (this._url.cannotBeABaseURL) {\n return;\n }\n\n usm.basicURLParse(v, { url: this._url, stateOverride: \"host\" });\n }\n\n get hostname() {\n if (this._url.host === null) {\n return \"\";\n }\n\n return usm.serializeHost(this._url.host);\n }\n\n set hostname(v) {\n if (this._url.cannotBeABaseURL) {\n return;\n }\n\n usm.basicURLParse(v, { url: this._url, stateOverride: \"hostname\" });\n }\n\n get port() {\n if (this._url.port === null) {\n return \"\";\n }\n\n return usm.serializeInteger(this._url.port);\n }\n\n set port(v) {\n if (usm.cannotHaveAUsernamePasswordPort(this._url)) {\n return;\n }\n\n if (v === \"\") {\n this._url.port = null;\n } else {\n usm.basicURLParse(v, { url: this._url, stateOverride: \"port\" });\n }\n }\n\n get pathname() {\n if (this._url.cannotBeABaseURL) {\n return this._url.path[0];\n }\n\n if (this._url.path.length === 0) {\n return \"\";\n }\n\n return \"/\" + this._url.path.join(\"/\");\n }\n\n set pathname(v) {\n if (this._url.cannotBeABaseURL) {\n return;\n }\n\n this._url.path = [];\n usm.basicURLParse(v, { url: this._url, stateOverride: \"path start\" });\n }\n\n get search() {\n if (this._url.query === null || this._url.query === \"\") {\n return \"\";\n }\n\n return \"?\" + this._url.query;\n }\n\n set search(v) {\n // TODO: query stuff\n\n const url = this._url;\n\n if (v === \"\") {\n url.query = null;\n return;\n }\n\n const input = v[0] === \"?\" ? v.substring(1) : v;\n url.query = \"\";\n usm.basicURLParse(input, { url, stateOverride: \"query\" });\n }\n\n get hash() {\n if (this._url.fragment === null || this._url.fragment === \"\") {\n return \"\";\n }\n\n return \"#\" + this._url.fragment;\n }\n\n set hash(v) {\n if (v === \"\") {\n this._url.fragment = null;\n return;\n }\n\n const input = v[0] === \"#\" ? v.substring(1) : v;\n this._url.fragment = \"\";\n usm.basicURLParse(input, { url: this._url, stateOverride: \"fragment\" });\n }\n\n toJSON() {\n return this.href;\n }\n};\n","\"use strict\";\n\nconst conversions = require(\"webidl-conversions\");\nconst utils = require(\"./utils.js\");\nconst Impl = require(\".//URL-impl.js\");\n\nconst impl = utils.implSymbol;\n\nfunction URL(url) {\n if (!this || this[impl] || !(this instanceof URL)) {\n throw new TypeError(\"Failed to construct 'URL': Please use the 'new' operator, this DOM object constructor cannot be called as a function.\");\n }\n if (arguments.length < 1) {\n throw new TypeError(\"Failed to construct 'URL': 1 argument required, but only \" + arguments.length + \" present.\");\n }\n const args = [];\n for (let i = 0; i < arguments.length && i < 2; ++i) {\n args[i] = arguments[i];\n }\n args[0] = conversions[\"USVString\"](args[0]);\n if (args[1] !== undefined) {\n args[1] = conversions[\"USVString\"](args[1]);\n }\n\n module.exports.setup(this, args);\n}\n\nURL.prototype.toJSON = function toJSON() {\n if (!this || !module.exports.is(this)) {\n throw new TypeError(\"Illegal invocation\");\n }\n const args = [];\n for (let i = 0; i < arguments.length && i < 0; ++i) {\n args[i] = arguments[i];\n }\n return this[impl].toJSON.apply(this[impl], args);\n};\nObject.defineProperty(URL.prototype, \"href\", {\n get() {\n return this[impl].href;\n },\n set(V) {\n V = conversions[\"USVString\"](V);\n this[impl].href = V;\n },\n enumerable: true,\n configurable: true\n});\n\nURL.prototype.toString = function () {\n if (!this || !module.exports.is(this)) {\n throw new TypeError(\"Illegal invocation\");\n }\n return this.href;\n};\n\nObject.defineProperty(URL.prototype, \"origin\", {\n get() {\n return this[impl].origin;\n },\n enumerable: true,\n configurable: true\n});\n\nObject.defineProperty(URL.prototype, \"protocol\", {\n get() {\n return this[impl].protocol;\n },\n set(V) {\n V = conversions[\"USVString\"](V);\n this[impl].protocol = V;\n },\n enumerable: true,\n configurable: true\n});\n\nObject.defineProperty(URL.prototype, \"username\", {\n get() {\n return this[impl].username;\n },\n set(V) {\n V = conversions[\"USVString\"](V);\n this[impl].username = V;\n },\n enumerable: true,\n configurable: true\n});\n\nObject.defineProperty(URL.prototype, \"password\", {\n get() {\n return this[impl].password;\n },\n set(V) {\n V = conversions[\"USVString\"](V);\n this[impl].password = V;\n },\n enumerable: true,\n configurable: true\n});\n\nObject.defineProperty(URL.prototype, \"host\", {\n get() {\n return this[impl].host;\n },\n set(V) {\n V = conversions[\"USVString\"](V);\n this[impl].host = V;\n },\n enumerable: true,\n configurable: true\n});\n\nObject.defineProperty(URL.prototype, \"hostname\", {\n get() {\n return this[impl].hostname;\n },\n set(V) {\n V = conversions[\"USVString\"](V);\n this[impl].hostname = V;\n },\n enumerable: true,\n configurable: true\n});\n\nObject.defineProperty(URL.prototype, \"port\", {\n get() {\n return this[impl].port;\n },\n set(V) {\n V = conversions[\"USVString\"](V);\n this[impl].port = V;\n },\n enumerable: true,\n configurable: true\n});\n\nObject.defineProperty(URL.prototype, \"pathname\", {\n get() {\n return this[impl].pathname;\n },\n set(V) {\n V = conversions[\"USVString\"](V);\n this[impl].pathname = V;\n },\n enumerable: true,\n configurable: true\n});\n\nObject.defineProperty(URL.prototype, \"search\", {\n get() {\n return this[impl].search;\n },\n set(V) {\n V = conversions[\"USVString\"](V);\n this[impl].search = V;\n },\n enumerable: true,\n configurable: true\n});\n\nObject.defineProperty(URL.prototype, \"hash\", {\n get() {\n return this[impl].hash;\n },\n set(V) {\n V = conversions[\"USVString\"](V);\n this[impl].hash = V;\n },\n enumerable: true,\n configurable: true\n});\n\n\nmodule.exports = {\n is(obj) {\n return !!obj && obj[impl] instanceof Impl.implementation;\n },\n create(constructorArgs, privateData) {\n let obj = Object.create(URL.prototype);\n this.setup(obj, constructorArgs, privateData);\n return obj;\n },\n setup(obj, constructorArgs, privateData) {\n if (!privateData) privateData = {};\n privateData.wrapper = obj;\n\n obj[impl] = new Impl.implementation(constructorArgs, privateData);\n obj[impl][utils.wrapperSymbol] = obj;\n },\n interface: URL,\n expose: {\n Window: { URL: URL },\n Worker: { URL: URL }\n }\n};\n\n","\"use strict\";\n\nexports.URL = require(\"./URL\").interface;\nexports.serializeURL = require(\"./url-state-machine\").serializeURL;\nexports.serializeURLOrigin = require(\"./url-state-machine\").serializeURLOrigin;\nexports.basicURLParse = require(\"./url-state-machine\").basicURLParse;\nexports.setTheUsername = require(\"./url-state-machine\").setTheUsername;\nexports.setThePassword = require(\"./url-state-machine\").setThePassword;\nexports.serializeHost = require(\"./url-state-machine\").serializeHost;\nexports.serializeInteger = require(\"./url-state-machine\").serializeInteger;\nexports.parseURL = require(\"./url-state-machine\").parseURL;\n","'use strict';\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\nfunction _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; }\n\nvar Stream = _interopDefault(require('stream'));\nvar http = _interopDefault(require('http'));\nvar Url = _interopDefault(require('url'));\nvar whatwgUrl = _interopDefault(require('whatwg-url'));\nvar https = _interopDefault(require('https'));\nvar zlib = _interopDefault(require('zlib'));\n\n// Based on https://github.com/tmpvar/jsdom/blob/aa85b2abf07766ff7bf5c1f6daafb3726f2f2db5/lib/jsdom/living/blob.js\n\n// fix for \"Readable\" isn't a named export issue\nconst Readable = Stream.Readable;\n\nconst BUFFER = Symbol('buffer');\nconst TYPE = Symbol('type');\n\nclass Blob {\n\tconstructor() {\n\t\tthis[TYPE] = '';\n\n\t\tconst blobParts = arguments[0];\n\t\tconst options = arguments[1];\n\n\t\tconst buffers = [];\n\t\tlet size = 0;\n\n\t\tif (blobParts) {\n\t\t\tconst a = blobParts;\n\t\t\tconst length = Number(a.length);\n\t\t\tfor (let i = 0; i < length; i++) {\n\t\t\t\tconst element = a[i];\n\t\t\t\tlet buffer;\n\t\t\t\tif (element instanceof Buffer) {\n\t\t\t\t\tbuffer = element;\n\t\t\t\t} else if (ArrayBuffer.isView(element)) {\n\t\t\t\t\tbuffer = Buffer.from(element.buffer, element.byteOffset, element.byteLength);\n\t\t\t\t} else if (element instanceof ArrayBuffer) {\n\t\t\t\t\tbuffer = Buffer.from(element);\n\t\t\t\t} else if (element instanceof Blob) {\n\t\t\t\t\tbuffer = element[BUFFER];\n\t\t\t\t} else {\n\t\t\t\t\tbuffer = Buffer.from(typeof element === 'string' ? element : String(element));\n\t\t\t\t}\n\t\t\t\tsize += buffer.length;\n\t\t\t\tbuffers.push(buffer);\n\t\t\t}\n\t\t}\n\n\t\tthis[BUFFER] = Buffer.concat(buffers);\n\n\t\tlet type = options && options.type !== undefined && String(options.type).toLowerCase();\n\t\tif (type && !/[^\\u0020-\\u007E]/.test(type)) {\n\t\t\tthis[TYPE] = type;\n\t\t}\n\t}\n\tget size() {\n\t\treturn this[BUFFER].length;\n\t}\n\tget type() {\n\t\treturn this[TYPE];\n\t}\n\ttext() {\n\t\treturn Promise.resolve(this[BUFFER].toString());\n\t}\n\tarrayBuffer() {\n\t\tconst buf = this[BUFFER];\n\t\tconst ab = buf.buffer.slice(buf.byteOffset, buf.byteOffset + buf.byteLength);\n\t\treturn Promise.resolve(ab);\n\t}\n\tstream() {\n\t\tconst readable = new Readable();\n\t\treadable._read = function () {};\n\t\treadable.push(this[BUFFER]);\n\t\treadable.push(null);\n\t\treturn readable;\n\t}\n\ttoString() {\n\t\treturn '[object Blob]';\n\t}\n\tslice() {\n\t\tconst size = this.size;\n\n\t\tconst start = arguments[0];\n\t\tconst end = arguments[1];\n\t\tlet relativeStart, relativeEnd;\n\t\tif (start === undefined) {\n\t\t\trelativeStart = 0;\n\t\t} else if (start < 0) {\n\t\t\trelativeStart = Math.max(size + start, 0);\n\t\t} else {\n\t\t\trelativeStart = Math.min(start, size);\n\t\t}\n\t\tif (end === undefined) {\n\t\t\trelativeEnd = size;\n\t\t} else if (end < 0) {\n\t\t\trelativeEnd = Math.max(size + end, 0);\n\t\t} else {\n\t\t\trelativeEnd = Math.min(end, size);\n\t\t}\n\t\tconst span = Math.max(relativeEnd - relativeStart, 0);\n\n\t\tconst buffer = this[BUFFER];\n\t\tconst slicedBuffer = buffer.slice(relativeStart, relativeStart + span);\n\t\tconst blob = new Blob([], { type: arguments[2] });\n\t\tblob[BUFFER] = slicedBuffer;\n\t\treturn blob;\n\t}\n}\n\nObject.defineProperties(Blob.prototype, {\n\tsize: { enumerable: true },\n\ttype: { enumerable: true },\n\tslice: { enumerable: true }\n});\n\nObject.defineProperty(Blob.prototype, Symbol.toStringTag, {\n\tvalue: 'Blob',\n\twritable: false,\n\tenumerable: false,\n\tconfigurable: true\n});\n\n/**\n * fetch-error.js\n *\n * FetchError interface for operational errors\n */\n\n/**\n * Create FetchError instance\n *\n * @param String message Error message for human\n * @param String type Error type for machine\n * @param String systemError For Node.js system error\n * @return FetchError\n */\nfunction FetchError(message, type, systemError) {\n Error.call(this, message);\n\n this.message = message;\n this.type = type;\n\n // when err.type is `system`, err.code contains system error code\n if (systemError) {\n this.code = this.errno = systemError.code;\n }\n\n // hide custom error implementation details from end-users\n Error.captureStackTrace(this, this.constructor);\n}\n\nFetchError.prototype = Object.create(Error.prototype);\nFetchError.prototype.constructor = FetchError;\nFetchError.prototype.name = 'FetchError';\n\nlet convert;\ntry {\n\tconvert = require('encoding').convert;\n} catch (e) {}\n\nconst INTERNALS = Symbol('Body internals');\n\n// fix an issue where \"PassThrough\" isn't a named export for node <10\nconst PassThrough = Stream.PassThrough;\n\n/**\n * Body mixin\n *\n * Ref: https://fetch.spec.whatwg.org/#body\n *\n * @param Stream body Readable stream\n * @param Object opts Response options\n * @return Void\n */\nfunction Body(body) {\n\tvar _this = this;\n\n\tvar _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},\n\t _ref$size = _ref.size;\n\n\tlet size = _ref$size === undefined ? 0 : _ref$size;\n\tvar _ref$timeout = _ref.timeout;\n\tlet timeout = _ref$timeout === undefined ? 0 : _ref$timeout;\n\n\tif (body == null) {\n\t\t// body is undefined or null\n\t\tbody = null;\n\t} else if (isURLSearchParams(body)) {\n\t\t// body is a URLSearchParams\n\t\tbody = Buffer.from(body.toString());\n\t} else if (isBlob(body)) ; else if (Buffer.isBuffer(body)) ; else if (Object.prototype.toString.call(body) === '[object ArrayBuffer]') {\n\t\t// body is ArrayBuffer\n\t\tbody = Buffer.from(body);\n\t} else if (ArrayBuffer.isView(body)) {\n\t\t// body is ArrayBufferView\n\t\tbody = Buffer.from(body.buffer, body.byteOffset, body.byteLength);\n\t} else if (body instanceof Stream) ; else {\n\t\t// none of the above\n\t\t// coerce to string then buffer\n\t\tbody = Buffer.from(String(body));\n\t}\n\tthis[INTERNALS] = {\n\t\tbody,\n\t\tdisturbed: false,\n\t\terror: null\n\t};\n\tthis.size = size;\n\tthis.timeout = timeout;\n\n\tif (body instanceof Stream) {\n\t\tbody.on('error', function (err) {\n\t\t\tconst error = err.name === 'AbortError' ? err : new FetchError(`Invalid response body while trying to fetch ${_this.url}: ${err.message}`, 'system', err);\n\t\t\t_this[INTERNALS].error = error;\n\t\t});\n\t}\n}\n\nBody.prototype = {\n\tget body() {\n\t\treturn this[INTERNALS].body;\n\t},\n\n\tget bodyUsed() {\n\t\treturn this[INTERNALS].disturbed;\n\t},\n\n\t/**\n * Decode response as ArrayBuffer\n *\n * @return Promise\n */\n\tarrayBuffer() {\n\t\treturn consumeBody.call(this).then(function (buf) {\n\t\t\treturn buf.buffer.slice(buf.byteOffset, buf.byteOffset + buf.byteLength);\n\t\t});\n\t},\n\n\t/**\n * Return raw response as Blob\n *\n * @return Promise\n */\n\tblob() {\n\t\tlet ct = this.headers && this.headers.get('content-type') || '';\n\t\treturn consumeBody.call(this).then(function (buf) {\n\t\t\treturn Object.assign(\n\t\t\t// Prevent copying\n\t\t\tnew Blob([], {\n\t\t\t\ttype: ct.toLowerCase()\n\t\t\t}), {\n\t\t\t\t[BUFFER]: buf\n\t\t\t});\n\t\t});\n\t},\n\n\t/**\n * Decode response as json\n *\n * @return Promise\n */\n\tjson() {\n\t\tvar _this2 = this;\n\n\t\treturn consumeBody.call(this).then(function (buffer) {\n\t\t\ttry {\n\t\t\t\treturn JSON.parse(buffer.toString());\n\t\t\t} catch (err) {\n\t\t\t\treturn Body.Promise.reject(new FetchError(`invalid json response body at ${_this2.url} reason: ${err.message}`, 'invalid-json'));\n\t\t\t}\n\t\t});\n\t},\n\n\t/**\n * Decode response as text\n *\n * @return Promise\n */\n\ttext() {\n\t\treturn consumeBody.call(this).then(function (buffer) {\n\t\t\treturn buffer.toString();\n\t\t});\n\t},\n\n\t/**\n * Decode response as buffer (non-spec api)\n *\n * @return Promise\n */\n\tbuffer() {\n\t\treturn consumeBody.call(this);\n\t},\n\n\t/**\n * Decode response as text, while automatically detecting the encoding and\n * trying to decode to UTF-8 (non-spec api)\n *\n * @return Promise\n */\n\ttextConverted() {\n\t\tvar _this3 = this;\n\n\t\treturn consumeBody.call(this).then(function (buffer) {\n\t\t\treturn convertBody(buffer, _this3.headers);\n\t\t});\n\t}\n};\n\n// In browsers, all properties are enumerable.\nObject.defineProperties(Body.prototype, {\n\tbody: { enumerable: true },\n\tbodyUsed: { enumerable: true },\n\tarrayBuffer: { enumerable: true },\n\tblob: { enumerable: true },\n\tjson: { enumerable: true },\n\ttext: { enumerable: true }\n});\n\nBody.mixIn = function (proto) {\n\tfor (const name of Object.getOwnPropertyNames(Body.prototype)) {\n\t\t// istanbul ignore else: future proof\n\t\tif (!(name in proto)) {\n\t\t\tconst desc = Object.getOwnPropertyDescriptor(Body.prototype, name);\n\t\t\tObject.defineProperty(proto, name, desc);\n\t\t}\n\t}\n};\n\n/**\n * Consume and convert an entire Body to a Buffer.\n *\n * Ref: https://fetch.spec.whatwg.org/#concept-body-consume-body\n *\n * @return Promise\n */\nfunction consumeBody() {\n\tvar _this4 = this;\n\n\tif (this[INTERNALS].disturbed) {\n\t\treturn Body.Promise.reject(new TypeError(`body used already for: ${this.url}`));\n\t}\n\n\tthis[INTERNALS].disturbed = true;\n\n\tif (this[INTERNALS].error) {\n\t\treturn Body.Promise.reject(this[INTERNALS].error);\n\t}\n\n\tlet body = this.body;\n\n\t// body is null\n\tif (body === null) {\n\t\treturn Body.Promise.resolve(Buffer.alloc(0));\n\t}\n\n\t// body is blob\n\tif (isBlob(body)) {\n\t\tbody = body.stream();\n\t}\n\n\t// body is buffer\n\tif (Buffer.isBuffer(body)) {\n\t\treturn Body.Promise.resolve(body);\n\t}\n\n\t// istanbul ignore if: should never happen\n\tif (!(body instanceof Stream)) {\n\t\treturn Body.Promise.resolve(Buffer.alloc(0));\n\t}\n\n\t// body is stream\n\t// get ready to actually consume the body\n\tlet accum = [];\n\tlet accumBytes = 0;\n\tlet abort = false;\n\n\treturn new Body.Promise(function (resolve, reject) {\n\t\tlet resTimeout;\n\n\t\t// allow timeout on slow response body\n\t\tif (_this4.timeout) {\n\t\t\tresTimeout = setTimeout(function () {\n\t\t\t\tabort = true;\n\t\t\t\treject(new FetchError(`Response timeout while trying to fetch ${_this4.url} (over ${_this4.timeout}ms)`, 'body-timeout'));\n\t\t\t}, _this4.timeout);\n\t\t}\n\n\t\t// handle stream errors\n\t\tbody.on('error', function (err) {\n\t\t\tif (err.name === 'AbortError') {\n\t\t\t\t// if the request was aborted, reject with this Error\n\t\t\t\tabort = true;\n\t\t\t\treject(err);\n\t\t\t} else {\n\t\t\t\t// other errors, such as incorrect content-encoding\n\t\t\t\treject(new FetchError(`Invalid response body while trying to fetch ${_this4.url}: ${err.message}`, 'system', err));\n\t\t\t}\n\t\t});\n\n\t\tbody.on('data', function (chunk) {\n\t\t\tif (abort || chunk === null) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (_this4.size && accumBytes + chunk.length > _this4.size) {\n\t\t\t\tabort = true;\n\t\t\t\treject(new FetchError(`content size at ${_this4.url} over limit: ${_this4.size}`, 'max-size'));\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\taccumBytes += chunk.length;\n\t\t\taccum.push(chunk);\n\t\t});\n\n\t\tbody.on('end', function () {\n\t\t\tif (abort) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tclearTimeout(resTimeout);\n\n\t\t\ttry {\n\t\t\t\tresolve(Buffer.concat(accum, accumBytes));\n\t\t\t} catch (err) {\n\t\t\t\t// handle streams that have accumulated too much data (issue #414)\n\t\t\t\treject(new FetchError(`Could not create Buffer from response body for ${_this4.url}: ${err.message}`, 'system', err));\n\t\t\t}\n\t\t});\n\t});\n}\n\n/**\n * Detect buffer encoding and convert to target encoding\n * ref: http://www.w3.org/TR/2011/WD-html5-20110113/parsing.html#determining-the-character-encoding\n *\n * @param Buffer buffer Incoming buffer\n * @param String encoding Target encoding\n * @return String\n */\nfunction convertBody(buffer, headers) {\n\tif (typeof convert !== 'function') {\n\t\tthrow new Error('The package `encoding` must be installed to use the textConverted() function');\n\t}\n\n\tconst ct = headers.get('content-type');\n\tlet charset = 'utf-8';\n\tlet res, str;\n\n\t// header\n\tif (ct) {\n\t\tres = /charset=([^;]*)/i.exec(ct);\n\t}\n\n\t// no charset in content type, peek at response body for at most 1024 bytes\n\tstr = buffer.slice(0, 1024).toString();\n\n\t// html5\n\tif (!res && str) {\n\t\tres = / 0 && arguments[0] !== undefined ? arguments[0] : undefined;\n\n\t\tthis[MAP] = Object.create(null);\n\n\t\tif (init instanceof Headers) {\n\t\t\tconst rawHeaders = init.raw();\n\t\t\tconst headerNames = Object.keys(rawHeaders);\n\n\t\t\tfor (const headerName of headerNames) {\n\t\t\t\tfor (const value of rawHeaders[headerName]) {\n\t\t\t\t\tthis.append(headerName, value);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn;\n\t\t}\n\n\t\t// We don't worry about converting prop to ByteString here as append()\n\t\t// will handle it.\n\t\tif (init == null) ; else if (typeof init === 'object') {\n\t\t\tconst method = init[Symbol.iterator];\n\t\t\tif (method != null) {\n\t\t\t\tif (typeof method !== 'function') {\n\t\t\t\t\tthrow new TypeError('Header pairs must be iterable');\n\t\t\t\t}\n\n\t\t\t\t// sequence>\n\t\t\t\t// Note: per spec we have to first exhaust the lists then process them\n\t\t\t\tconst pairs = [];\n\t\t\t\tfor (const pair of init) {\n\t\t\t\t\tif (typeof pair !== 'object' || typeof pair[Symbol.iterator] !== 'function') {\n\t\t\t\t\t\tthrow new TypeError('Each header pair must be iterable');\n\t\t\t\t\t}\n\t\t\t\t\tpairs.push(Array.from(pair));\n\t\t\t\t}\n\n\t\t\t\tfor (const pair of pairs) {\n\t\t\t\t\tif (pair.length !== 2) {\n\t\t\t\t\t\tthrow new TypeError('Each header pair must be a name/value tuple');\n\t\t\t\t\t}\n\t\t\t\t\tthis.append(pair[0], pair[1]);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// record\n\t\t\t\tfor (const key of Object.keys(init)) {\n\t\t\t\t\tconst value = init[key];\n\t\t\t\t\tthis.append(key, value);\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tthrow new TypeError('Provided initializer must be an object');\n\t\t}\n\t}\n\n\t/**\n * Return combined header value given name\n *\n * @param String name Header name\n * @return Mixed\n */\n\tget(name) {\n\t\tname = `${name}`;\n\t\tvalidateName(name);\n\t\tconst key = find(this[MAP], name);\n\t\tif (key === undefined) {\n\t\t\treturn null;\n\t\t}\n\n\t\treturn this[MAP][key].join(', ');\n\t}\n\n\t/**\n * Iterate over all headers\n *\n * @param Function callback Executed for each item with parameters (value, name, thisArg)\n * @param Boolean thisArg `this` context for callback function\n * @return Void\n */\n\tforEach(callback) {\n\t\tlet thisArg = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : undefined;\n\n\t\tlet pairs = getHeaders(this);\n\t\tlet i = 0;\n\t\twhile (i < pairs.length) {\n\t\t\tvar _pairs$i = pairs[i];\n\t\t\tconst name = _pairs$i[0],\n\t\t\t value = _pairs$i[1];\n\n\t\t\tcallback.call(thisArg, value, name, this);\n\t\t\tpairs = getHeaders(this);\n\t\t\ti++;\n\t\t}\n\t}\n\n\t/**\n * Overwrite header values given name\n *\n * @param String name Header name\n * @param String value Header value\n * @return Void\n */\n\tset(name, value) {\n\t\tname = `${name}`;\n\t\tvalue = `${value}`;\n\t\tvalidateName(name);\n\t\tvalidateValue(value);\n\t\tconst key = find(this[MAP], name);\n\t\tthis[MAP][key !== undefined ? key : name] = [value];\n\t}\n\n\t/**\n * Append a value onto existing header\n *\n * @param String name Header name\n * @param String value Header value\n * @return Void\n */\n\tappend(name, value) {\n\t\tname = `${name}`;\n\t\tvalue = `${value}`;\n\t\tvalidateName(name);\n\t\tvalidateValue(value);\n\t\tconst key = find(this[MAP], name);\n\t\tif (key !== undefined) {\n\t\t\tthis[MAP][key].push(value);\n\t\t} else {\n\t\t\tthis[MAP][name] = [value];\n\t\t}\n\t}\n\n\t/**\n * Check for header name existence\n *\n * @param String name Header name\n * @return Boolean\n */\n\thas(name) {\n\t\tname = `${name}`;\n\t\tvalidateName(name);\n\t\treturn find(this[MAP], name) !== undefined;\n\t}\n\n\t/**\n * Delete all header values given name\n *\n * @param String name Header name\n * @return Void\n */\n\tdelete(name) {\n\t\tname = `${name}`;\n\t\tvalidateName(name);\n\t\tconst key = find(this[MAP], name);\n\t\tif (key !== undefined) {\n\t\t\tdelete this[MAP][key];\n\t\t}\n\t}\n\n\t/**\n * Return raw headers (non-spec api)\n *\n * @return Object\n */\n\traw() {\n\t\treturn this[MAP];\n\t}\n\n\t/**\n * Get an iterator on keys.\n *\n * @return Iterator\n */\n\tkeys() {\n\t\treturn createHeadersIterator(this, 'key');\n\t}\n\n\t/**\n * Get an iterator on values.\n *\n * @return Iterator\n */\n\tvalues() {\n\t\treturn createHeadersIterator(this, 'value');\n\t}\n\n\t/**\n * Get an iterator on entries.\n *\n * This is the default iterator of the Headers object.\n *\n * @return Iterator\n */\n\t[Symbol.iterator]() {\n\t\treturn createHeadersIterator(this, 'key+value');\n\t}\n}\nHeaders.prototype.entries = Headers.prototype[Symbol.iterator];\n\nObject.defineProperty(Headers.prototype, Symbol.toStringTag, {\n\tvalue: 'Headers',\n\twritable: false,\n\tenumerable: false,\n\tconfigurable: true\n});\n\nObject.defineProperties(Headers.prototype, {\n\tget: { enumerable: true },\n\tforEach: { enumerable: true },\n\tset: { enumerable: true },\n\tappend: { enumerable: true },\n\thas: { enumerable: true },\n\tdelete: { enumerable: true },\n\tkeys: { enumerable: true },\n\tvalues: { enumerable: true },\n\tentries: { enumerable: true }\n});\n\nfunction getHeaders(headers) {\n\tlet kind = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'key+value';\n\n\tconst keys = Object.keys(headers[MAP]).sort();\n\treturn keys.map(kind === 'key' ? function (k) {\n\t\treturn k.toLowerCase();\n\t} : kind === 'value' ? function (k) {\n\t\treturn headers[MAP][k].join(', ');\n\t} : function (k) {\n\t\treturn [k.toLowerCase(), headers[MAP][k].join(', ')];\n\t});\n}\n\nconst INTERNAL = Symbol('internal');\n\nfunction createHeadersIterator(target, kind) {\n\tconst iterator = Object.create(HeadersIteratorPrototype);\n\titerator[INTERNAL] = {\n\t\ttarget,\n\t\tkind,\n\t\tindex: 0\n\t};\n\treturn iterator;\n}\n\nconst HeadersIteratorPrototype = Object.setPrototypeOf({\n\tnext() {\n\t\t// istanbul ignore if\n\t\tif (!this || Object.getPrototypeOf(this) !== HeadersIteratorPrototype) {\n\t\t\tthrow new TypeError('Value of `this` is not a HeadersIterator');\n\t\t}\n\n\t\tvar _INTERNAL = this[INTERNAL];\n\t\tconst target = _INTERNAL.target,\n\t\t kind = _INTERNAL.kind,\n\t\t index = _INTERNAL.index;\n\n\t\tconst values = getHeaders(target, kind);\n\t\tconst len = values.length;\n\t\tif (index >= len) {\n\t\t\treturn {\n\t\t\t\tvalue: undefined,\n\t\t\t\tdone: true\n\t\t\t};\n\t\t}\n\n\t\tthis[INTERNAL].index = index + 1;\n\n\t\treturn {\n\t\t\tvalue: values[index],\n\t\t\tdone: false\n\t\t};\n\t}\n}, Object.getPrototypeOf(Object.getPrototypeOf([][Symbol.iterator]())));\n\nObject.defineProperty(HeadersIteratorPrototype, Symbol.toStringTag, {\n\tvalue: 'HeadersIterator',\n\twritable: false,\n\tenumerable: false,\n\tconfigurable: true\n});\n\n/**\n * Export the Headers object in a form that Node.js can consume.\n *\n * @param Headers headers\n * @return Object\n */\nfunction exportNodeCompatibleHeaders(headers) {\n\tconst obj = Object.assign({ __proto__: null }, headers[MAP]);\n\n\t// http.request() only supports string as Host header. This hack makes\n\t// specifying custom Host header possible.\n\tconst hostHeaderKey = find(headers[MAP], 'Host');\n\tif (hostHeaderKey !== undefined) {\n\t\tobj[hostHeaderKey] = obj[hostHeaderKey][0];\n\t}\n\n\treturn obj;\n}\n\n/**\n * Create a Headers object from an object of headers, ignoring those that do\n * not conform to HTTP grammar productions.\n *\n * @param Object obj Object of headers\n * @return Headers\n */\nfunction createHeadersLenient(obj) {\n\tconst headers = new Headers();\n\tfor (const name of Object.keys(obj)) {\n\t\tif (invalidTokenRegex.test(name)) {\n\t\t\tcontinue;\n\t\t}\n\t\tif (Array.isArray(obj[name])) {\n\t\t\tfor (const val of obj[name]) {\n\t\t\t\tif (invalidHeaderCharRegex.test(val)) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tif (headers[MAP][name] === undefined) {\n\t\t\t\t\theaders[MAP][name] = [val];\n\t\t\t\t} else {\n\t\t\t\t\theaders[MAP][name].push(val);\n\t\t\t\t}\n\t\t\t}\n\t\t} else if (!invalidHeaderCharRegex.test(obj[name])) {\n\t\t\theaders[MAP][name] = [obj[name]];\n\t\t}\n\t}\n\treturn headers;\n}\n\nconst INTERNALS$1 = Symbol('Response internals');\n\n// fix an issue where \"STATUS_CODES\" aren't a named export for node <10\nconst STATUS_CODES = http.STATUS_CODES;\n\n/**\n * Response class\n *\n * @param Stream body Readable stream\n * @param Object opts Response options\n * @return Void\n */\nclass Response {\n\tconstructor() {\n\t\tlet body = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;\n\t\tlet opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n\t\tBody.call(this, body, opts);\n\n\t\tconst status = opts.status || 200;\n\t\tconst headers = new Headers(opts.headers);\n\n\t\tif (body != null && !headers.has('Content-Type')) {\n\t\t\tconst contentType = extractContentType(body);\n\t\t\tif (contentType) {\n\t\t\t\theaders.append('Content-Type', contentType);\n\t\t\t}\n\t\t}\n\n\t\tthis[INTERNALS$1] = {\n\t\t\turl: opts.url,\n\t\t\tstatus,\n\t\t\tstatusText: opts.statusText || STATUS_CODES[status],\n\t\t\theaders,\n\t\t\tcounter: opts.counter\n\t\t};\n\t}\n\n\tget url() {\n\t\treturn this[INTERNALS$1].url || '';\n\t}\n\n\tget status() {\n\t\treturn this[INTERNALS$1].status;\n\t}\n\n\t/**\n * Convenience property representing if the request ended normally\n */\n\tget ok() {\n\t\treturn this[INTERNALS$1].status >= 200 && this[INTERNALS$1].status < 300;\n\t}\n\n\tget redirected() {\n\t\treturn this[INTERNALS$1].counter > 0;\n\t}\n\n\tget statusText() {\n\t\treturn this[INTERNALS$1].statusText;\n\t}\n\n\tget headers() {\n\t\treturn this[INTERNALS$1].headers;\n\t}\n\n\t/**\n * Clone this response\n *\n * @return Response\n */\n\tclone() {\n\t\treturn new Response(clone(this), {\n\t\t\turl: this.url,\n\t\t\tstatus: this.status,\n\t\t\tstatusText: this.statusText,\n\t\t\theaders: this.headers,\n\t\t\tok: this.ok,\n\t\t\tredirected: this.redirected\n\t\t});\n\t}\n}\n\nBody.mixIn(Response.prototype);\n\nObject.defineProperties(Response.prototype, {\n\turl: { enumerable: true },\n\tstatus: { enumerable: true },\n\tok: { enumerable: true },\n\tredirected: { enumerable: true },\n\tstatusText: { enumerable: true },\n\theaders: { enumerable: true },\n\tclone: { enumerable: true }\n});\n\nObject.defineProperty(Response.prototype, Symbol.toStringTag, {\n\tvalue: 'Response',\n\twritable: false,\n\tenumerable: false,\n\tconfigurable: true\n});\n\nconst INTERNALS$2 = Symbol('Request internals');\nconst URL = Url.URL || whatwgUrl.URL;\n\n// fix an issue where \"format\", \"parse\" aren't a named export for node <10\nconst parse_url = Url.parse;\nconst format_url = Url.format;\n\n/**\n * Wrapper around `new URL` to handle arbitrary URLs\n *\n * @param {string} urlStr\n * @return {void}\n */\nfunction parseURL(urlStr) {\n\t/*\n \tCheck whether the URL is absolute or not\n \t\tScheme: https://tools.ietf.org/html/rfc3986#section-3.1\n \tAbsolute URL: https://tools.ietf.org/html/rfc3986#section-4.3\n */\n\tif (/^[a-zA-Z][a-zA-Z\\d+\\-.]*:/.exec(urlStr)) {\n\t\turlStr = new URL(urlStr).toString();\n\t}\n\n\t// Fallback to old implementation for arbitrary URLs\n\treturn parse_url(urlStr);\n}\n\nconst streamDestructionSupported = 'destroy' in Stream.Readable.prototype;\n\n/**\n * Check if a value is an instance of Request.\n *\n * @param Mixed input\n * @return Boolean\n */\nfunction isRequest(input) {\n\treturn typeof input === 'object' && typeof input[INTERNALS$2] === 'object';\n}\n\nfunction isAbortSignal(signal) {\n\tconst proto = signal && typeof signal === 'object' && Object.getPrototypeOf(signal);\n\treturn !!(proto && proto.constructor.name === 'AbortSignal');\n}\n\n/**\n * Request class\n *\n * @param Mixed input Url or Request instance\n * @param Object init Custom options\n * @return Void\n */\nclass Request {\n\tconstructor(input) {\n\t\tlet init = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n\t\tlet parsedURL;\n\n\t\t// normalize input\n\t\tif (!isRequest(input)) {\n\t\t\tif (input && input.href) {\n\t\t\t\t// in order to support Node.js' Url objects; though WHATWG's URL objects\n\t\t\t\t// will fall into this branch also (since their `toString()` will return\n\t\t\t\t// `href` property anyway)\n\t\t\t\tparsedURL = parseURL(input.href);\n\t\t\t} else {\n\t\t\t\t// coerce input to a string before attempting to parse\n\t\t\t\tparsedURL = parseURL(`${input}`);\n\t\t\t}\n\t\t\tinput = {};\n\t\t} else {\n\t\t\tparsedURL = parseURL(input.url);\n\t\t}\n\n\t\tlet method = init.method || input.method || 'GET';\n\t\tmethod = method.toUpperCase();\n\n\t\tif ((init.body != null || isRequest(input) && input.body !== null) && (method === 'GET' || method === 'HEAD')) {\n\t\t\tthrow new TypeError('Request with GET/HEAD method cannot have body');\n\t\t}\n\n\t\tlet inputBody = init.body != null ? init.body : isRequest(input) && input.body !== null ? clone(input) : null;\n\n\t\tBody.call(this, inputBody, {\n\t\t\ttimeout: init.timeout || input.timeout || 0,\n\t\t\tsize: init.size || input.size || 0\n\t\t});\n\n\t\tconst headers = new Headers(init.headers || input.headers || {});\n\n\t\tif (inputBody != null && !headers.has('Content-Type')) {\n\t\t\tconst contentType = extractContentType(inputBody);\n\t\t\tif (contentType) {\n\t\t\t\theaders.append('Content-Type', contentType);\n\t\t\t}\n\t\t}\n\n\t\tlet signal = isRequest(input) ? input.signal : null;\n\t\tif ('signal' in init) signal = init.signal;\n\n\t\tif (signal != null && !isAbortSignal(signal)) {\n\t\t\tthrow new TypeError('Expected signal to be an instanceof AbortSignal');\n\t\t}\n\n\t\tthis[INTERNALS$2] = {\n\t\t\tmethod,\n\t\t\tredirect: init.redirect || input.redirect || 'follow',\n\t\t\theaders,\n\t\t\tparsedURL,\n\t\t\tsignal\n\t\t};\n\n\t\t// node-fetch-only options\n\t\tthis.follow = init.follow !== undefined ? init.follow : input.follow !== undefined ? input.follow : 20;\n\t\tthis.compress = init.compress !== undefined ? init.compress : input.compress !== undefined ? input.compress : true;\n\t\tthis.counter = init.counter || input.counter || 0;\n\t\tthis.agent = init.agent || input.agent;\n\t}\n\n\tget method() {\n\t\treturn this[INTERNALS$2].method;\n\t}\n\n\tget url() {\n\t\treturn format_url(this[INTERNALS$2].parsedURL);\n\t}\n\n\tget headers() {\n\t\treturn this[INTERNALS$2].headers;\n\t}\n\n\tget redirect() {\n\t\treturn this[INTERNALS$2].redirect;\n\t}\n\n\tget signal() {\n\t\treturn this[INTERNALS$2].signal;\n\t}\n\n\t/**\n * Clone this request\n *\n * @return Request\n */\n\tclone() {\n\t\treturn new Request(this);\n\t}\n}\n\nBody.mixIn(Request.prototype);\n\nObject.defineProperty(Request.prototype, Symbol.toStringTag, {\n\tvalue: 'Request',\n\twritable: false,\n\tenumerable: false,\n\tconfigurable: true\n});\n\nObject.defineProperties(Request.prototype, {\n\tmethod: { enumerable: true },\n\turl: { enumerable: true },\n\theaders: { enumerable: true },\n\tredirect: { enumerable: true },\n\tclone: { enumerable: true },\n\tsignal: { enumerable: true }\n});\n\n/**\n * Convert a Request to Node.js http request options.\n *\n * @param Request A Request instance\n * @return Object The options object to be passed to http.request\n */\nfunction getNodeRequestOptions(request) {\n\tconst parsedURL = request[INTERNALS$2].parsedURL;\n\tconst headers = new Headers(request[INTERNALS$2].headers);\n\n\t// fetch step 1.3\n\tif (!headers.has('Accept')) {\n\t\theaders.set('Accept', '*/*');\n\t}\n\n\t// Basic fetch\n\tif (!parsedURL.protocol || !parsedURL.hostname) {\n\t\tthrow new TypeError('Only absolute URLs are supported');\n\t}\n\n\tif (!/^https?:$/.test(parsedURL.protocol)) {\n\t\tthrow new TypeError('Only HTTP(S) protocols are supported');\n\t}\n\n\tif (request.signal && request.body instanceof Stream.Readable && !streamDestructionSupported) {\n\t\tthrow new Error('Cancellation of streamed requests with AbortSignal is not supported in node < 8');\n\t}\n\n\t// HTTP-network-or-cache fetch steps 2.4-2.7\n\tlet contentLengthValue = null;\n\tif (request.body == null && /^(POST|PUT)$/i.test(request.method)) {\n\t\tcontentLengthValue = '0';\n\t}\n\tif (request.body != null) {\n\t\tconst totalBytes = getTotalBytes(request);\n\t\tif (typeof totalBytes === 'number') {\n\t\t\tcontentLengthValue = String(totalBytes);\n\t\t}\n\t}\n\tif (contentLengthValue) {\n\t\theaders.set('Content-Length', contentLengthValue);\n\t}\n\n\t// HTTP-network-or-cache fetch step 2.11\n\tif (!headers.has('User-Agent')) {\n\t\theaders.set('User-Agent', 'node-fetch/1.0 (+https://github.com/bitinn/node-fetch)');\n\t}\n\n\t// HTTP-network-or-cache fetch step 2.15\n\tif (request.compress && !headers.has('Accept-Encoding')) {\n\t\theaders.set('Accept-Encoding', 'gzip,deflate');\n\t}\n\n\tlet agent = request.agent;\n\tif (typeof agent === 'function') {\n\t\tagent = agent(parsedURL);\n\t}\n\n\t// HTTP-network fetch step 4.2\n\t// chunked encoding is handled by Node.js\n\n\treturn Object.assign({}, parsedURL, {\n\t\tmethod: request.method,\n\t\theaders: exportNodeCompatibleHeaders(headers),\n\t\tagent\n\t});\n}\n\n/**\n * abort-error.js\n *\n * AbortError interface for cancelled requests\n */\n\n/**\n * Create AbortError instance\n *\n * @param String message Error message for human\n * @return AbortError\n */\nfunction AbortError(message) {\n Error.call(this, message);\n\n this.type = 'aborted';\n this.message = message;\n\n // hide custom error implementation details from end-users\n Error.captureStackTrace(this, this.constructor);\n}\n\nAbortError.prototype = Object.create(Error.prototype);\nAbortError.prototype.constructor = AbortError;\nAbortError.prototype.name = 'AbortError';\n\nconst URL$1 = Url.URL || whatwgUrl.URL;\n\n// fix an issue where \"PassThrough\", \"resolve\" aren't a named export for node <10\nconst PassThrough$1 = Stream.PassThrough;\n\nconst isDomainOrSubdomain = function isDomainOrSubdomain(destination, original) {\n\tconst orig = new URL$1(original).hostname;\n\tconst dest = new URL$1(destination).hostname;\n\n\treturn orig === dest || orig[orig.length - dest.length - 1] === '.' && orig.endsWith(dest);\n};\n\n/**\n * isSameProtocol reports whether the two provided URLs use the same protocol.\n *\n * Both domains must already be in canonical form.\n * @param {string|URL} original\n * @param {string|URL} destination\n */\nconst isSameProtocol = function isSameProtocol(destination, original) {\n\tconst orig = new URL$1(original).protocol;\n\tconst dest = new URL$1(destination).protocol;\n\n\treturn orig === dest;\n};\n\n/**\n * Fetch function\n *\n * @param Mixed url Absolute url or Request instance\n * @param Object opts Fetch options\n * @return Promise\n */\nfunction fetch(url, opts) {\n\n\t// allow custom promise\n\tif (!fetch.Promise) {\n\t\tthrow new Error('native promise missing, set fetch.Promise to your favorite alternative');\n\t}\n\n\tBody.Promise = fetch.Promise;\n\n\t// wrap http.request into fetch\n\treturn new fetch.Promise(function (resolve, reject) {\n\t\t// build request object\n\t\tconst request = new Request(url, opts);\n\t\tconst options = getNodeRequestOptions(request);\n\n\t\tconst send = (options.protocol === 'https:' ? https : http).request;\n\t\tconst signal = request.signal;\n\n\t\tlet response = null;\n\n\t\tconst abort = function abort() {\n\t\t\tlet error = new AbortError('The user aborted a request.');\n\t\t\treject(error);\n\t\t\tif (request.body && request.body instanceof Stream.Readable) {\n\t\t\t\tdestroyStream(request.body, error);\n\t\t\t}\n\t\t\tif (!response || !response.body) return;\n\t\t\tresponse.body.emit('error', error);\n\t\t};\n\n\t\tif (signal && signal.aborted) {\n\t\t\tabort();\n\t\t\treturn;\n\t\t}\n\n\t\tconst abortAndFinalize = function abortAndFinalize() {\n\t\t\tabort();\n\t\t\tfinalize();\n\t\t};\n\n\t\t// send request\n\t\tconst req = send(options);\n\t\tlet reqTimeout;\n\n\t\tif (signal) {\n\t\t\tsignal.addEventListener('abort', abortAndFinalize);\n\t\t}\n\n\t\tfunction finalize() {\n\t\t\treq.abort();\n\t\t\tif (signal) signal.removeEventListener('abort', abortAndFinalize);\n\t\t\tclearTimeout(reqTimeout);\n\t\t}\n\n\t\tif (request.timeout) {\n\t\t\treq.once('socket', function (socket) {\n\t\t\t\treqTimeout = setTimeout(function () {\n\t\t\t\t\treject(new FetchError(`network timeout at: ${request.url}`, 'request-timeout'));\n\t\t\t\t\tfinalize();\n\t\t\t\t}, request.timeout);\n\t\t\t});\n\t\t}\n\n\t\treq.on('error', function (err) {\n\t\t\treject(new FetchError(`request to ${request.url} failed, reason: ${err.message}`, 'system', err));\n\n\t\t\tif (response && response.body) {\n\t\t\t\tdestroyStream(response.body, err);\n\t\t\t}\n\n\t\t\tfinalize();\n\t\t});\n\n\t\tfixResponseChunkedTransferBadEnding(req, function (err) {\n\t\t\tif (signal && signal.aborted) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (response && response.body) {\n\t\t\t\tdestroyStream(response.body, err);\n\t\t\t}\n\t\t});\n\n\t\t/* c8 ignore next 18 */\n\t\tif (parseInt(process.version.substring(1)) < 14) {\n\t\t\t// Before Node.js 14, pipeline() does not fully support async iterators and does not always\n\t\t\t// properly handle when the socket close/end events are out of order.\n\t\t\treq.on('socket', function (s) {\n\t\t\t\ts.addListener('close', function (hadError) {\n\t\t\t\t\t// if a data listener is still present we didn't end cleanly\n\t\t\t\t\tconst hasDataListener = s.listenerCount('data') > 0;\n\n\t\t\t\t\t// if end happened before close but the socket didn't emit an error, do it now\n\t\t\t\t\tif (response && hasDataListener && !hadError && !(signal && signal.aborted)) {\n\t\t\t\t\t\tconst err = new Error('Premature close');\n\t\t\t\t\t\terr.code = 'ERR_STREAM_PREMATURE_CLOSE';\n\t\t\t\t\t\tresponse.body.emit('error', err);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t});\n\t\t}\n\n\t\treq.on('response', function (res) {\n\t\t\tclearTimeout(reqTimeout);\n\n\t\t\tconst headers = createHeadersLenient(res.headers);\n\n\t\t\t// HTTP fetch step 5\n\t\t\tif (fetch.isRedirect(res.statusCode)) {\n\t\t\t\t// HTTP fetch step 5.2\n\t\t\t\tconst location = headers.get('Location');\n\n\t\t\t\t// HTTP fetch step 5.3\n\t\t\t\tlet locationURL = null;\n\t\t\t\ttry {\n\t\t\t\t\tlocationURL = location === null ? null : new URL$1(location, request.url).toString();\n\t\t\t\t} catch (err) {\n\t\t\t\t\t// error here can only be invalid URL in Location: header\n\t\t\t\t\t// do not throw when options.redirect == manual\n\t\t\t\t\t// let the user extract the errorneous redirect URL\n\t\t\t\t\tif (request.redirect !== 'manual') {\n\t\t\t\t\t\treject(new FetchError(`uri requested responds with an invalid redirect URL: ${location}`, 'invalid-redirect'));\n\t\t\t\t\t\tfinalize();\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// HTTP fetch step 5.5\n\t\t\t\tswitch (request.redirect) {\n\t\t\t\t\tcase 'error':\n\t\t\t\t\t\treject(new FetchError(`uri requested responds with a redirect, redirect mode is set to error: ${request.url}`, 'no-redirect'));\n\t\t\t\t\t\tfinalize();\n\t\t\t\t\t\treturn;\n\t\t\t\t\tcase 'manual':\n\t\t\t\t\t\t// node-fetch-specific step: make manual redirect a bit easier to use by setting the Location header value to the resolved URL.\n\t\t\t\t\t\tif (locationURL !== null) {\n\t\t\t\t\t\t\t// handle corrupted header\n\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\theaders.set('Location', locationURL);\n\t\t\t\t\t\t\t} catch (err) {\n\t\t\t\t\t\t\t\t// istanbul ignore next: nodejs server prevent invalid response headers, we can't test this through normal request\n\t\t\t\t\t\t\t\treject(err);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'follow':\n\t\t\t\t\t\t// HTTP-redirect fetch step 2\n\t\t\t\t\t\tif (locationURL === null) {\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// HTTP-redirect fetch step 5\n\t\t\t\t\t\tif (request.counter >= request.follow) {\n\t\t\t\t\t\t\treject(new FetchError(`maximum redirect reached at: ${request.url}`, 'max-redirect'));\n\t\t\t\t\t\t\tfinalize();\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// HTTP-redirect fetch step 6 (counter increment)\n\t\t\t\t\t\t// Create a new Request object.\n\t\t\t\t\t\tconst requestOpts = {\n\t\t\t\t\t\t\theaders: new Headers(request.headers),\n\t\t\t\t\t\t\tfollow: request.follow,\n\t\t\t\t\t\t\tcounter: request.counter + 1,\n\t\t\t\t\t\t\tagent: request.agent,\n\t\t\t\t\t\t\tcompress: request.compress,\n\t\t\t\t\t\t\tmethod: request.method,\n\t\t\t\t\t\t\tbody: request.body,\n\t\t\t\t\t\t\tsignal: request.signal,\n\t\t\t\t\t\t\ttimeout: request.timeout,\n\t\t\t\t\t\t\tsize: request.size\n\t\t\t\t\t\t};\n\n\t\t\t\t\t\tif (!isDomainOrSubdomain(request.url, locationURL) || !isSameProtocol(request.url, locationURL)) {\n\t\t\t\t\t\t\tfor (const name of ['authorization', 'www-authenticate', 'cookie', 'cookie2']) {\n\t\t\t\t\t\t\t\trequestOpts.headers.delete(name);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// HTTP-redirect fetch step 9\n\t\t\t\t\t\tif (res.statusCode !== 303 && request.body && getTotalBytes(request) === null) {\n\t\t\t\t\t\t\treject(new FetchError('Cannot follow redirect with body being a readable stream', 'unsupported-redirect'));\n\t\t\t\t\t\t\tfinalize();\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// HTTP-redirect fetch step 11\n\t\t\t\t\t\tif (res.statusCode === 303 || (res.statusCode === 301 || res.statusCode === 302) && request.method === 'POST') {\n\t\t\t\t\t\t\trequestOpts.method = 'GET';\n\t\t\t\t\t\t\trequestOpts.body = undefined;\n\t\t\t\t\t\t\trequestOpts.headers.delete('content-length');\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// HTTP-redirect fetch step 15\n\t\t\t\t\t\tresolve(fetch(new Request(locationURL, requestOpts)));\n\t\t\t\t\t\tfinalize();\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// prepare response\n\t\t\tres.once('end', function () {\n\t\t\t\tif (signal) signal.removeEventListener('abort', abortAndFinalize);\n\t\t\t});\n\t\t\tlet body = res.pipe(new PassThrough$1());\n\n\t\t\tconst response_options = {\n\t\t\t\turl: request.url,\n\t\t\t\tstatus: res.statusCode,\n\t\t\t\tstatusText: res.statusMessage,\n\t\t\t\theaders: headers,\n\t\t\t\tsize: request.size,\n\t\t\t\ttimeout: request.timeout,\n\t\t\t\tcounter: request.counter\n\t\t\t};\n\n\t\t\t// HTTP-network fetch step 12.1.1.3\n\t\t\tconst codings = headers.get('Content-Encoding');\n\n\t\t\t// HTTP-network fetch step 12.1.1.4: handle content codings\n\n\t\t\t// in following scenarios we ignore compression support\n\t\t\t// 1. compression support is disabled\n\t\t\t// 2. HEAD request\n\t\t\t// 3. no Content-Encoding header\n\t\t\t// 4. no content response (204)\n\t\t\t// 5. content not modified response (304)\n\t\t\tif (!request.compress || request.method === 'HEAD' || codings === null || res.statusCode === 204 || res.statusCode === 304) {\n\t\t\t\tresponse = new Response(body, response_options);\n\t\t\t\tresolve(response);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// For Node v6+\n\t\t\t// Be less strict when decoding compressed responses, since sometimes\n\t\t\t// servers send slightly invalid responses that are still accepted\n\t\t\t// by common browsers.\n\t\t\t// Always using Z_SYNC_FLUSH is what cURL does.\n\t\t\tconst zlibOptions = {\n\t\t\t\tflush: zlib.Z_SYNC_FLUSH,\n\t\t\t\tfinishFlush: zlib.Z_SYNC_FLUSH\n\t\t\t};\n\n\t\t\t// for gzip\n\t\t\tif (codings == 'gzip' || codings == 'x-gzip') {\n\t\t\t\tbody = body.pipe(zlib.createGunzip(zlibOptions));\n\t\t\t\tresponse = new Response(body, response_options);\n\t\t\t\tresolve(response);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// for deflate\n\t\t\tif (codings == 'deflate' || codings == 'x-deflate') {\n\t\t\t\t// handle the infamous raw deflate response from old servers\n\t\t\t\t// a hack for old IIS and Apache servers\n\t\t\t\tconst raw = res.pipe(new PassThrough$1());\n\t\t\t\traw.once('data', function (chunk) {\n\t\t\t\t\t// see http://stackoverflow.com/questions/37519828\n\t\t\t\t\tif ((chunk[0] & 0x0F) === 0x08) {\n\t\t\t\t\t\tbody = body.pipe(zlib.createInflate());\n\t\t\t\t\t} else {\n\t\t\t\t\t\tbody = body.pipe(zlib.createInflateRaw());\n\t\t\t\t\t}\n\t\t\t\t\tresponse = new Response(body, response_options);\n\t\t\t\t\tresolve(response);\n\t\t\t\t});\n\t\t\t\traw.on('end', function () {\n\t\t\t\t\t// some old IIS servers return zero-length OK deflate responses, so 'data' is never emitted.\n\t\t\t\t\tif (!response) {\n\t\t\t\t\t\tresponse = new Response(body, response_options);\n\t\t\t\t\t\tresolve(response);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// for br\n\t\t\tif (codings == 'br' && typeof zlib.createBrotliDecompress === 'function') {\n\t\t\t\tbody = body.pipe(zlib.createBrotliDecompress());\n\t\t\t\tresponse = new Response(body, response_options);\n\t\t\t\tresolve(response);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// otherwise, use response as-is\n\t\t\tresponse = new Response(body, response_options);\n\t\t\tresolve(response);\n\t\t});\n\n\t\twriteToStream(req, request);\n\t});\n}\nfunction fixResponseChunkedTransferBadEnding(request, errorCallback) {\n\tlet socket;\n\n\trequest.on('socket', function (s) {\n\t\tsocket = s;\n\t});\n\n\trequest.on('response', function (response) {\n\t\tconst headers = response.headers;\n\n\t\tif (headers['transfer-encoding'] === 'chunked' && !headers['content-length']) {\n\t\t\tresponse.once('close', function (hadError) {\n\t\t\t\t// tests for socket presence, as in some situations the\n\t\t\t\t// the 'socket' event is not triggered for the request\n\t\t\t\t// (happens in deno), avoids `TypeError`\n\t\t\t\t// if a data listener is still present we didn't end cleanly\n\t\t\t\tconst hasDataListener = socket && socket.listenerCount('data') > 0;\n\n\t\t\t\tif (hasDataListener && !hadError) {\n\t\t\t\t\tconst err = new Error('Premature close');\n\t\t\t\t\terr.code = 'ERR_STREAM_PREMATURE_CLOSE';\n\t\t\t\t\terrorCallback(err);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t});\n}\n\nfunction destroyStream(stream, err) {\n\tif (stream.destroy) {\n\t\tstream.destroy(err);\n\t} else {\n\t\t// node < 8\n\t\tstream.emit('error', err);\n\t\tstream.end();\n\t}\n}\n\n/**\n * Redirect code matching\n *\n * @param Number code Status code\n * @return Boolean\n */\nfetch.isRedirect = function (code) {\n\treturn code === 301 || code === 302 || code === 303 || code === 307 || code === 308;\n};\n\n// expose Promise\nfetch.Promise = global.Promise;\n\nmodule.exports = exports = fetch;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.default = exports;\nexports.Headers = Headers;\nexports.Request = Request;\nexports.Response = Response;\nexports.FetchError = FetchError;\nexports.AbortError = AbortError;\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.installBicepCliWithArch = exports.getBicepCliDownloadUrl = void 0;\nconst path_1 = __importDefault(require(\"path\"));\nconst promises_1 = __importDefault(require(\"fs/promises\"));\nconst node_fetch_1 = __importDefault(require(\"node-fetch\"));\nconst downloadBaseUrl = 'https://downloads.bicep.azure.com';\nconst latestReleaseUrl = `${downloadBaseUrl}/releases/latest`;\nconst downloadUrl = (tag, artifact) => `${downloadBaseUrl}/${tag}/${artifact}`;\nasync function getLatestRelease() {\n const response = await (0, node_fetch_1.default)(latestReleaseUrl);\n if (!response.ok) {\n throw `Failed to find latest release of Bicep CLI. Status code: ${response.status}`;\n }\n const body = await response.json();\n return body['tag_name'];\n}\nfunction getDownloadUrlForTag(osPlat, osArch, tagName) {\n switch (`${osPlat}_${osArch}`.toLowerCase()) {\n case 'win32_x64': return downloadUrl(tagName, 'bicep-win-x64.exe');\n case 'win32_arm64': return downloadUrl(tagName, 'bicep-win-arm64.exe');\n case 'linux_x64': return downloadUrl(tagName, 'bicep-linux-x64');\n case 'linux_arm64': return downloadUrl(tagName, 'bicep-linux-arm64');\n case 'darwin_x64': return downloadUrl(tagName, 'bicep-osx-x64');\n case 'darwin_arm64': return downloadUrl(tagName, 'bicep-osx-arm64');\n default: throw `Bicep CLI is not available for platform ${osPlat} and architecture ${osArch}`;\n }\n}\nasync function getBicepCliDownloadUrl(platform, arch, version) {\n const tagName = version ? `v${version}` : await getLatestRelease();\n return getDownloadUrlForTag(platform, arch, tagName);\n}\nexports.getBicepCliDownloadUrl = getBicepCliDownloadUrl;\nasync function installBicepCliWithArch(basePath, platform, arch, version) {\n const targetFile = platform === 'win32' ? 'bicep.exe' : 'bicep';\n const downloadUrl = await getBicepCliDownloadUrl(platform, arch, version);\n const response = await (0, node_fetch_1.default)(downloadUrl);\n if (!response.ok) {\n throw `Failed to download Bicep CLI. Status code: ${response.status}`;\n }\n const buffer = await response.arrayBuffer();\n const toolPath = path_1.default.join(basePath, targetFile);\n await promises_1.default.writeFile(toolPath, Buffer.from(buffer));\n await promises_1.default.chmod(toolPath, 0o755);\n return toolPath;\n}\nexports.installBicepCliWithArch = installBicepCliWithArch;\n//# sourceMappingURL=install.js.map","\"use strict\";\n/* --------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n * ------------------------------------------------------------------------------------------ */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.stringArray = exports.array = exports.func = exports.error = exports.number = exports.string = exports.boolean = void 0;\nfunction boolean(value) {\n return value === true || value === false;\n}\nexports.boolean = boolean;\nfunction string(value) {\n return typeof value === 'string' || value instanceof String;\n}\nexports.string = string;\nfunction number(value) {\n return typeof value === 'number' || value instanceof Number;\n}\nexports.number = number;\nfunction error(value) {\n return value instanceof Error;\n}\nexports.error = error;\nfunction func(value) {\n return typeof value === 'function';\n}\nexports.func = func;\nfunction array(value) {\n return Array.isArray(value);\n}\nexports.array = array;\nfunction stringArray(value) {\n return array(value) && value.every(elem => string(elem));\n}\nexports.stringArray = stringArray;\n","\"use strict\";\n/* --------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n * ------------------------------------------------------------------------------------------ */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Message = exports.NotificationType9 = exports.NotificationType8 = exports.NotificationType7 = exports.NotificationType6 = exports.NotificationType5 = exports.NotificationType4 = exports.NotificationType3 = exports.NotificationType2 = exports.NotificationType1 = exports.NotificationType0 = exports.NotificationType = exports.RequestType9 = exports.RequestType8 = exports.RequestType7 = exports.RequestType6 = exports.RequestType5 = exports.RequestType4 = exports.RequestType3 = exports.RequestType2 = exports.RequestType1 = exports.RequestType = exports.RequestType0 = exports.AbstractMessageSignature = exports.ParameterStructures = exports.ResponseError = exports.ErrorCodes = void 0;\nconst is = require(\"./is\");\n/**\n * Predefined error codes.\n */\nvar ErrorCodes;\n(function (ErrorCodes) {\n // Defined by JSON RPC\n ErrorCodes.ParseError = -32700;\n ErrorCodes.InvalidRequest = -32600;\n ErrorCodes.MethodNotFound = -32601;\n ErrorCodes.InvalidParams = -32602;\n ErrorCodes.InternalError = -32603;\n /**\n * This is the start range of JSON RPC reserved error codes.\n * It doesn't denote a real error code. No application error codes should\n * be defined between the start and end range. For backwards\n * compatibility the `ServerNotInitialized` and the `UnknownErrorCode`\n * are left in the range.\n *\n * @since 3.16.0\n */\n ErrorCodes.jsonrpcReservedErrorRangeStart = -32099;\n /** @deprecated use jsonrpcReservedErrorRangeStart */\n ErrorCodes.serverErrorStart = -32099;\n /**\n * An error occurred when write a message to the transport layer.\n */\n ErrorCodes.MessageWriteError = -32099;\n /**\n * An error occurred when reading a message from the transport layer.\n */\n ErrorCodes.MessageReadError = -32098;\n /**\n * The connection got disposed or lost and all pending responses got\n * rejected.\n */\n ErrorCodes.PendingResponseRejected = -32097;\n /**\n * The connection is inactive and a use of it failed.\n */\n ErrorCodes.ConnectionInactive = -32096;\n /**\n * Error code indicating that a server received a notification or\n * request before the server has received the `initialize` request.\n */\n ErrorCodes.ServerNotInitialized = -32002;\n ErrorCodes.UnknownErrorCode = -32001;\n /**\n * This is the end range of JSON RPC reserved error codes.\n * It doesn't denote a real error code.\n *\n * @since 3.16.0\n */\n ErrorCodes.jsonrpcReservedErrorRangeEnd = -32000;\n /** @deprecated use jsonrpcReservedErrorRangeEnd */\n ErrorCodes.serverErrorEnd = -32000;\n})(ErrorCodes || (exports.ErrorCodes = ErrorCodes = {}));\n/**\n * An error object return in a response in case a request\n * has failed.\n */\nclass ResponseError extends Error {\n constructor(code, message, data) {\n super(message);\n this.code = is.number(code) ? code : ErrorCodes.UnknownErrorCode;\n this.data = data;\n Object.setPrototypeOf(this, ResponseError.prototype);\n }\n toJson() {\n const result = {\n code: this.code,\n message: this.message\n };\n if (this.data !== undefined) {\n result.data = this.data;\n }\n return result;\n }\n}\nexports.ResponseError = ResponseError;\nclass ParameterStructures {\n constructor(kind) {\n this.kind = kind;\n }\n static is(value) {\n return value === ParameterStructures.auto || value === ParameterStructures.byName || value === ParameterStructures.byPosition;\n }\n toString() {\n return this.kind;\n }\n}\nexports.ParameterStructures = ParameterStructures;\n/**\n * The parameter structure is automatically inferred on the number of parameters\n * and the parameter type in case of a single param.\n */\nParameterStructures.auto = new ParameterStructures('auto');\n/**\n * Forces `byPosition` parameter structure. This is useful if you have a single\n * parameter which has a literal type.\n */\nParameterStructures.byPosition = new ParameterStructures('byPosition');\n/**\n * Forces `byName` parameter structure. This is only useful when having a single\n * parameter. The library will report errors if used with a different number of\n * parameters.\n */\nParameterStructures.byName = new ParameterStructures('byName');\n/**\n * An abstract implementation of a MessageType.\n */\nclass AbstractMessageSignature {\n constructor(method, numberOfParams) {\n this.method = method;\n this.numberOfParams = numberOfParams;\n }\n get parameterStructures() {\n return ParameterStructures.auto;\n }\n}\nexports.AbstractMessageSignature = AbstractMessageSignature;\n/**\n * Classes to type request response pairs\n */\nclass RequestType0 extends AbstractMessageSignature {\n constructor(method) {\n super(method, 0);\n }\n}\nexports.RequestType0 = RequestType0;\nclass RequestType extends AbstractMessageSignature {\n constructor(method, _parameterStructures = ParameterStructures.auto) {\n super(method, 1);\n this._parameterStructures = _parameterStructures;\n }\n get parameterStructures() {\n return this._parameterStructures;\n }\n}\nexports.RequestType = RequestType;\nclass RequestType1 extends AbstractMessageSignature {\n constructor(method, _parameterStructures = ParameterStructures.auto) {\n super(method, 1);\n this._parameterStructures = _parameterStructures;\n }\n get parameterStructures() {\n return this._parameterStructures;\n }\n}\nexports.RequestType1 = RequestType1;\nclass RequestType2 extends AbstractMessageSignature {\n constructor(method) {\n super(method, 2);\n }\n}\nexports.RequestType2 = RequestType2;\nclass RequestType3 extends AbstractMessageSignature {\n constructor(method) {\n super(method, 3);\n }\n}\nexports.RequestType3 = RequestType3;\nclass RequestType4 extends AbstractMessageSignature {\n constructor(method) {\n super(method, 4);\n }\n}\nexports.RequestType4 = RequestType4;\nclass RequestType5 extends AbstractMessageSignature {\n constructor(method) {\n super(method, 5);\n }\n}\nexports.RequestType5 = RequestType5;\nclass RequestType6 extends AbstractMessageSignature {\n constructor(method) {\n super(method, 6);\n }\n}\nexports.RequestType6 = RequestType6;\nclass RequestType7 extends AbstractMessageSignature {\n constructor(method) {\n super(method, 7);\n }\n}\nexports.RequestType7 = RequestType7;\nclass RequestType8 extends AbstractMessageSignature {\n constructor(method) {\n super(method, 8);\n }\n}\nexports.RequestType8 = RequestType8;\nclass RequestType9 extends AbstractMessageSignature {\n constructor(method) {\n super(method, 9);\n }\n}\nexports.RequestType9 = RequestType9;\nclass NotificationType extends AbstractMessageSignature {\n constructor(method, _parameterStructures = ParameterStructures.auto) {\n super(method, 1);\n this._parameterStructures = _parameterStructures;\n }\n get parameterStructures() {\n return this._parameterStructures;\n }\n}\nexports.NotificationType = NotificationType;\nclass NotificationType0 extends AbstractMessageSignature {\n constructor(method) {\n super(method, 0);\n }\n}\nexports.NotificationType0 = NotificationType0;\nclass NotificationType1 extends AbstractMessageSignature {\n constructor(method, _parameterStructures = ParameterStructures.auto) {\n super(method, 1);\n this._parameterStructures = _parameterStructures;\n }\n get parameterStructures() {\n return this._parameterStructures;\n }\n}\nexports.NotificationType1 = NotificationType1;\nclass NotificationType2 extends AbstractMessageSignature {\n constructor(method) {\n super(method, 2);\n }\n}\nexports.NotificationType2 = NotificationType2;\nclass NotificationType3 extends AbstractMessageSignature {\n constructor(method) {\n super(method, 3);\n }\n}\nexports.NotificationType3 = NotificationType3;\nclass NotificationType4 extends AbstractMessageSignature {\n constructor(method) {\n super(method, 4);\n }\n}\nexports.NotificationType4 = NotificationType4;\nclass NotificationType5 extends AbstractMessageSignature {\n constructor(method) {\n super(method, 5);\n }\n}\nexports.NotificationType5 = NotificationType5;\nclass NotificationType6 extends AbstractMessageSignature {\n constructor(method) {\n super(method, 6);\n }\n}\nexports.NotificationType6 = NotificationType6;\nclass NotificationType7 extends AbstractMessageSignature {\n constructor(method) {\n super(method, 7);\n }\n}\nexports.NotificationType7 = NotificationType7;\nclass NotificationType8 extends AbstractMessageSignature {\n constructor(method) {\n super(method, 8);\n }\n}\nexports.NotificationType8 = NotificationType8;\nclass NotificationType9 extends AbstractMessageSignature {\n constructor(method) {\n super(method, 9);\n }\n}\nexports.NotificationType9 = NotificationType9;\nvar Message;\n(function (Message) {\n /**\n * Tests if the given message is a request message\n */\n function isRequest(message) {\n const candidate = message;\n return candidate && is.string(candidate.method) && (is.string(candidate.id) || is.number(candidate.id));\n }\n Message.isRequest = isRequest;\n /**\n * Tests if the given message is a notification message\n */\n function isNotification(message) {\n const candidate = message;\n return candidate && is.string(candidate.method) && message.id === void 0;\n }\n Message.isNotification = isNotification;\n /**\n * Tests if the given message is a response message\n */\n function isResponse(message) {\n const candidate = message;\n return candidate && (candidate.result !== void 0 || !!candidate.error) && (is.string(candidate.id) || is.number(candidate.id) || candidate.id === null);\n }\n Message.isResponse = isResponse;\n})(Message || (exports.Message = Message = {}));\n","\"use strict\";\n/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nvar _a;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.LRUCache = exports.LinkedMap = exports.Touch = void 0;\nvar Touch;\n(function (Touch) {\n Touch.None = 0;\n Touch.First = 1;\n Touch.AsOld = Touch.First;\n Touch.Last = 2;\n Touch.AsNew = Touch.Last;\n})(Touch || (exports.Touch = Touch = {}));\nclass LinkedMap {\n constructor() {\n this[_a] = 'LinkedMap';\n this._map = new Map();\n this._head = undefined;\n this._tail = undefined;\n this._size = 0;\n this._state = 0;\n }\n clear() {\n this._map.clear();\n this._head = undefined;\n this._tail = undefined;\n this._size = 0;\n this._state++;\n }\n isEmpty() {\n return !this._head && !this._tail;\n }\n get size() {\n return this._size;\n }\n get first() {\n return this._head?.value;\n }\n get last() {\n return this._tail?.value;\n }\n has(key) {\n return this._map.has(key);\n }\n get(key, touch = Touch.None) {\n const item = this._map.get(key);\n if (!item) {\n return undefined;\n }\n if (touch !== Touch.None) {\n this.touch(item, touch);\n }\n return item.value;\n }\n set(key, value, touch = Touch.None) {\n let item = this._map.get(key);\n if (item) {\n item.value = value;\n if (touch !== Touch.None) {\n this.touch(item, touch);\n }\n }\n else {\n item = { key, value, next: undefined, previous: undefined };\n switch (touch) {\n case Touch.None:\n this.addItemLast(item);\n break;\n case Touch.First:\n this.addItemFirst(item);\n break;\n case Touch.Last:\n this.addItemLast(item);\n break;\n default:\n this.addItemLast(item);\n break;\n }\n this._map.set(key, item);\n this._size++;\n }\n return this;\n }\n delete(key) {\n return !!this.remove(key);\n }\n remove(key) {\n const item = this._map.get(key);\n if (!item) {\n return undefined;\n }\n this._map.delete(key);\n this.removeItem(item);\n this._size--;\n return item.value;\n }\n shift() {\n if (!this._head && !this._tail) {\n return undefined;\n }\n if (!this._head || !this._tail) {\n throw new Error('Invalid list');\n }\n const item = this._head;\n this._map.delete(item.key);\n this.removeItem(item);\n this._size--;\n return item.value;\n }\n forEach(callbackfn, thisArg) {\n const state = this._state;\n let current = this._head;\n while (current) {\n if (thisArg) {\n callbackfn.bind(thisArg)(current.value, current.key, this);\n }\n else {\n callbackfn(current.value, current.key, this);\n }\n if (this._state !== state) {\n throw new Error(`LinkedMap got modified during iteration.`);\n }\n current = current.next;\n }\n }\n keys() {\n const state = this._state;\n let current = this._head;\n const iterator = {\n [Symbol.iterator]: () => {\n return iterator;\n },\n next: () => {\n if (this._state !== state) {\n throw new Error(`LinkedMap got modified during iteration.`);\n }\n if (current) {\n const result = { value: current.key, done: false };\n current = current.next;\n return result;\n }\n else {\n return { value: undefined, done: true };\n }\n }\n };\n return iterator;\n }\n values() {\n const state = this._state;\n let current = this._head;\n const iterator = {\n [Symbol.iterator]: () => {\n return iterator;\n },\n next: () => {\n if (this._state !== state) {\n throw new Error(`LinkedMap got modified during iteration.`);\n }\n if (current) {\n const result = { value: current.value, done: false };\n current = current.next;\n return result;\n }\n else {\n return { value: undefined, done: true };\n }\n }\n };\n return iterator;\n }\n entries() {\n const state = this._state;\n let current = this._head;\n const iterator = {\n [Symbol.iterator]: () => {\n return iterator;\n },\n next: () => {\n if (this._state !== state) {\n throw new Error(`LinkedMap got modified during iteration.`);\n }\n if (current) {\n const result = { value: [current.key, current.value], done: false };\n current = current.next;\n return result;\n }\n else {\n return { value: undefined, done: true };\n }\n }\n };\n return iterator;\n }\n [(_a = Symbol.toStringTag, Symbol.iterator)]() {\n return this.entries();\n }\n trimOld(newSize) {\n if (newSize >= this.size) {\n return;\n }\n if (newSize === 0) {\n this.clear();\n return;\n }\n let current = this._head;\n let currentSize = this.size;\n while (current && currentSize > newSize) {\n this._map.delete(current.key);\n current = current.next;\n currentSize--;\n }\n this._head = current;\n this._size = currentSize;\n if (current) {\n current.previous = undefined;\n }\n this._state++;\n }\n addItemFirst(item) {\n // First time Insert\n if (!this._head && !this._tail) {\n this._tail = item;\n }\n else if (!this._head) {\n throw new Error('Invalid list');\n }\n else {\n item.next = this._head;\n this._head.previous = item;\n }\n this._head = item;\n this._state++;\n }\n addItemLast(item) {\n // First time Insert\n if (!this._head && !this._tail) {\n this._head = item;\n }\n else if (!this._tail) {\n throw new Error('Invalid list');\n }\n else {\n item.previous = this._tail;\n this._tail.next = item;\n }\n this._tail = item;\n this._state++;\n }\n removeItem(item) {\n if (item === this._head && item === this._tail) {\n this._head = undefined;\n this._tail = undefined;\n }\n else if (item === this._head) {\n // This can only happened if size === 1 which is handle\n // by the case above.\n if (!item.next) {\n throw new Error('Invalid list');\n }\n item.next.previous = undefined;\n this._head = item.next;\n }\n else if (item === this._tail) {\n // This can only happened if size === 1 which is handle\n // by the case above.\n if (!item.previous) {\n throw new Error('Invalid list');\n }\n item.previous.next = undefined;\n this._tail = item.previous;\n }\n else {\n const next = item.next;\n const previous = item.previous;\n if (!next || !previous) {\n throw new Error('Invalid list');\n }\n next.previous = previous;\n previous.next = next;\n }\n item.next = undefined;\n item.previous = undefined;\n this._state++;\n }\n touch(item, touch) {\n if (!this._head || !this._tail) {\n throw new Error('Invalid list');\n }\n if ((touch !== Touch.First && touch !== Touch.Last)) {\n return;\n }\n if (touch === Touch.First) {\n if (item === this._head) {\n return;\n }\n const next = item.next;\n const previous = item.previous;\n // Unlink the item\n if (item === this._tail) {\n // previous must be defined since item was not head but is tail\n // So there are more than on item in the map\n previous.next = undefined;\n this._tail = previous;\n }\n else {\n // Both next and previous are not undefined since item was neither head nor tail.\n next.previous = previous;\n previous.next = next;\n }\n // Insert the node at head\n item.previous = undefined;\n item.next = this._head;\n this._head.previous = item;\n this._head = item;\n this._state++;\n }\n else if (touch === Touch.Last) {\n if (item === this._tail) {\n return;\n }\n const next = item.next;\n const previous = item.previous;\n // Unlink the item.\n if (item === this._head) {\n // next must be defined since item was not tail but is head\n // So there are more than on item in the map\n next.previous = undefined;\n this._head = next;\n }\n else {\n // Both next and previous are not undefined since item was neither head nor tail.\n next.previous = previous;\n previous.next = next;\n }\n item.next = undefined;\n item.previous = this._tail;\n this._tail.next = item;\n this._tail = item;\n this._state++;\n }\n }\n toJSON() {\n const data = [];\n this.forEach((value, key) => {\n data.push([key, value]);\n });\n return data;\n }\n fromJSON(data) {\n this.clear();\n for (const [key, value] of data) {\n this.set(key, value);\n }\n }\n}\nexports.LinkedMap = LinkedMap;\nclass LRUCache extends LinkedMap {\n constructor(limit, ratio = 1) {\n super();\n this._limit = limit;\n this._ratio = Math.min(Math.max(0, ratio), 1);\n }\n get limit() {\n return this._limit;\n }\n set limit(limit) {\n this._limit = limit;\n this.checkTrim();\n }\n get ratio() {\n return this._ratio;\n }\n set ratio(ratio) {\n this._ratio = Math.min(Math.max(0, ratio), 1);\n this.checkTrim();\n }\n get(key, touch = Touch.AsNew) {\n return super.get(key, touch);\n }\n peek(key) {\n return super.get(key, Touch.None);\n }\n set(key, value) {\n super.set(key, value, Touch.Last);\n this.checkTrim();\n return this;\n }\n checkTrim() {\n if (this.size > this._limit) {\n this.trimOld(Math.round(this._limit * this._ratio));\n }\n }\n}\nexports.LRUCache = LRUCache;\n","\"use strict\";\n/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Disposable = void 0;\nvar Disposable;\n(function (Disposable) {\n function create(func) {\n return {\n dispose: func\n };\n }\n Disposable.create = create;\n})(Disposable || (exports.Disposable = Disposable = {}));\n","\"use strict\";\n/* --------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n * ------------------------------------------------------------------------------------------ */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nlet _ral;\nfunction RAL() {\n if (_ral === undefined) {\n throw new Error(`No runtime abstraction layer installed`);\n }\n return _ral;\n}\n(function (RAL) {\n function install(ral) {\n if (ral === undefined) {\n throw new Error(`No runtime abstraction layer provided`);\n }\n _ral = ral;\n }\n RAL.install = install;\n})(RAL || (RAL = {}));\nexports.default = RAL;\n","\"use strict\";\n/* --------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n * ------------------------------------------------------------------------------------------ */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Emitter = exports.Event = void 0;\nconst ral_1 = require(\"./ral\");\nvar Event;\n(function (Event) {\n const _disposable = { dispose() { } };\n Event.None = function () { return _disposable; };\n})(Event || (exports.Event = Event = {}));\nclass CallbackList {\n add(callback, context = null, bucket) {\n if (!this._callbacks) {\n this._callbacks = [];\n this._contexts = [];\n }\n this._callbacks.push(callback);\n this._contexts.push(context);\n if (Array.isArray(bucket)) {\n bucket.push({ dispose: () => this.remove(callback, context) });\n }\n }\n remove(callback, context = null) {\n if (!this._callbacks) {\n return;\n }\n let foundCallbackWithDifferentContext = false;\n for (let i = 0, len = this._callbacks.length; i < len; i++) {\n if (this._callbacks[i] === callback) {\n if (this._contexts[i] === context) {\n // callback & context match => remove it\n this._callbacks.splice(i, 1);\n this._contexts.splice(i, 1);\n return;\n }\n else {\n foundCallbackWithDifferentContext = true;\n }\n }\n }\n if (foundCallbackWithDifferentContext) {\n throw new Error('When adding a listener with a context, you should remove it with the same context');\n }\n }\n invoke(...args) {\n if (!this._callbacks) {\n return [];\n }\n const ret = [], callbacks = this._callbacks.slice(0), contexts = this._contexts.slice(0);\n for (let i = 0, len = callbacks.length; i < len; i++) {\n try {\n ret.push(callbacks[i].apply(contexts[i], args));\n }\n catch (e) {\n // eslint-disable-next-line no-console\n (0, ral_1.default)().console.error(e);\n }\n }\n return ret;\n }\n isEmpty() {\n return !this._callbacks || this._callbacks.length === 0;\n }\n dispose() {\n this._callbacks = undefined;\n this._contexts = undefined;\n }\n}\nclass Emitter {\n constructor(_options) {\n this._options = _options;\n }\n /**\n * For the public to allow to subscribe\n * to events from this Emitter\n */\n get event() {\n if (!this._event) {\n this._event = (listener, thisArgs, disposables) => {\n if (!this._callbacks) {\n this._callbacks = new CallbackList();\n }\n if (this._options && this._options.onFirstListenerAdd && this._callbacks.isEmpty()) {\n this._options.onFirstListenerAdd(this);\n }\n this._callbacks.add(listener, thisArgs);\n const result = {\n dispose: () => {\n if (!this._callbacks) {\n // disposable is disposed after emitter is disposed.\n return;\n }\n this._callbacks.remove(listener, thisArgs);\n result.dispose = Emitter._noop;\n if (this._options && this._options.onLastListenerRemove && this._callbacks.isEmpty()) {\n this._options.onLastListenerRemove(this);\n }\n }\n };\n if (Array.isArray(disposables)) {\n disposables.push(result);\n }\n return result;\n };\n }\n return this._event;\n }\n /**\n * To be kept private to fire an event to\n * subscribers\n */\n fire(event) {\n if (this._callbacks) {\n this._callbacks.invoke.call(this._callbacks, event);\n }\n }\n dispose() {\n if (this._callbacks) {\n this._callbacks.dispose();\n this._callbacks = undefined;\n }\n }\n}\nexports.Emitter = Emitter;\nEmitter._noop = function () { };\n","\"use strict\";\n/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.CancellationTokenSource = exports.CancellationToken = void 0;\nconst ral_1 = require(\"./ral\");\nconst Is = require(\"./is\");\nconst events_1 = require(\"./events\");\nvar CancellationToken;\n(function (CancellationToken) {\n CancellationToken.None = Object.freeze({\n isCancellationRequested: false,\n onCancellationRequested: events_1.Event.None\n });\n CancellationToken.Cancelled = Object.freeze({\n isCancellationRequested: true,\n onCancellationRequested: events_1.Event.None\n });\n function is(value) {\n const candidate = value;\n return candidate && (candidate === CancellationToken.None\n || candidate === CancellationToken.Cancelled\n || (Is.boolean(candidate.isCancellationRequested) && !!candidate.onCancellationRequested));\n }\n CancellationToken.is = is;\n})(CancellationToken || (exports.CancellationToken = CancellationToken = {}));\nconst shortcutEvent = Object.freeze(function (callback, context) {\n const handle = (0, ral_1.default)().timer.setTimeout(callback.bind(context), 0);\n return { dispose() { handle.dispose(); } };\n});\nclass MutableToken {\n constructor() {\n this._isCancelled = false;\n }\n cancel() {\n if (!this._isCancelled) {\n this._isCancelled = true;\n if (this._emitter) {\n this._emitter.fire(undefined);\n this.dispose();\n }\n }\n }\n get isCancellationRequested() {\n return this._isCancelled;\n }\n get onCancellationRequested() {\n if (this._isCancelled) {\n return shortcutEvent;\n }\n if (!this._emitter) {\n this._emitter = new events_1.Emitter();\n }\n return this._emitter.event;\n }\n dispose() {\n if (this._emitter) {\n this._emitter.dispose();\n this._emitter = undefined;\n }\n }\n}\nclass CancellationTokenSource {\n get token() {\n if (!this._token) {\n // be lazy and create the token only when\n // actually needed\n this._token = new MutableToken();\n }\n return this._token;\n }\n cancel() {\n if (!this._token) {\n // save an object by returning the default\n // cancelled token when cancellation happens\n // before someone asks for the token\n this._token = CancellationToken.Cancelled;\n }\n else {\n this._token.cancel();\n }\n }\n dispose() {\n if (!this._token) {\n // ensure to initialize with an empty token if we had none\n this._token = CancellationToken.None;\n }\n else if (this._token instanceof MutableToken) {\n // actually dispose\n this._token.dispose();\n }\n }\n}\nexports.CancellationTokenSource = CancellationTokenSource;\n","\"use strict\";\n/* --------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n * ------------------------------------------------------------------------------------------ */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.SharedArrayReceiverStrategy = exports.SharedArraySenderStrategy = void 0;\nconst cancellation_1 = require(\"./cancellation\");\nvar CancellationState;\n(function (CancellationState) {\n CancellationState.Continue = 0;\n CancellationState.Cancelled = 1;\n})(CancellationState || (CancellationState = {}));\nclass SharedArraySenderStrategy {\n constructor() {\n this.buffers = new Map();\n }\n enableCancellation(request) {\n if (request.id === null) {\n return;\n }\n const buffer = new SharedArrayBuffer(4);\n const data = new Int32Array(buffer, 0, 1);\n data[0] = CancellationState.Continue;\n this.buffers.set(request.id, buffer);\n request.$cancellationData = buffer;\n }\n async sendCancellation(_conn, id) {\n const buffer = this.buffers.get(id);\n if (buffer === undefined) {\n return;\n }\n const data = new Int32Array(buffer, 0, 1);\n Atomics.store(data, 0, CancellationState.Cancelled);\n }\n cleanup(id) {\n this.buffers.delete(id);\n }\n dispose() {\n this.buffers.clear();\n }\n}\nexports.SharedArraySenderStrategy = SharedArraySenderStrategy;\nclass SharedArrayBufferCancellationToken {\n constructor(buffer) {\n this.data = new Int32Array(buffer, 0, 1);\n }\n get isCancellationRequested() {\n return Atomics.load(this.data, 0) === CancellationState.Cancelled;\n }\n get onCancellationRequested() {\n throw new Error(`Cancellation over SharedArrayBuffer doesn't support cancellation events`);\n }\n}\nclass SharedArrayBufferCancellationTokenSource {\n constructor(buffer) {\n this.token = new SharedArrayBufferCancellationToken(buffer);\n }\n cancel() {\n }\n dispose() {\n }\n}\nclass SharedArrayReceiverStrategy {\n constructor() {\n this.kind = 'request';\n }\n createCancellationTokenSource(request) {\n const buffer = request.$cancellationData;\n if (buffer === undefined) {\n return new cancellation_1.CancellationTokenSource();\n }\n return new SharedArrayBufferCancellationTokenSource(buffer);\n }\n}\nexports.SharedArrayReceiverStrategy = SharedArrayReceiverStrategy;\n","\"use strict\";\n/* --------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n * ------------------------------------------------------------------------------------------ */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Semaphore = void 0;\nconst ral_1 = require(\"./ral\");\nclass Semaphore {\n constructor(capacity = 1) {\n if (capacity <= 0) {\n throw new Error('Capacity must be greater than 0');\n }\n this._capacity = capacity;\n this._active = 0;\n this._waiting = [];\n }\n lock(thunk) {\n return new Promise((resolve, reject) => {\n this._waiting.push({ thunk, resolve, reject });\n this.runNext();\n });\n }\n get active() {\n return this._active;\n }\n runNext() {\n if (this._waiting.length === 0 || this._active === this._capacity) {\n return;\n }\n (0, ral_1.default)().timer.setImmediate(() => this.doRunNext());\n }\n doRunNext() {\n if (this._waiting.length === 0 || this._active === this._capacity) {\n return;\n }\n const next = this._waiting.shift();\n this._active++;\n if (this._active > this._capacity) {\n throw new Error(`To many thunks active`);\n }\n try {\n const result = next.thunk();\n if (result instanceof Promise) {\n result.then((value) => {\n this._active--;\n next.resolve(value);\n this.runNext();\n }, (err) => {\n this._active--;\n next.reject(err);\n this.runNext();\n });\n }\n else {\n this._active--;\n next.resolve(result);\n this.runNext();\n }\n }\n catch (err) {\n this._active--;\n next.reject(err);\n this.runNext();\n }\n }\n}\nexports.Semaphore = Semaphore;\n","\"use strict\";\n/* --------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n * ------------------------------------------------------------------------------------------ */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ReadableStreamMessageReader = exports.AbstractMessageReader = exports.MessageReader = void 0;\nconst ral_1 = require(\"./ral\");\nconst Is = require(\"./is\");\nconst events_1 = require(\"./events\");\nconst semaphore_1 = require(\"./semaphore\");\nvar MessageReader;\n(function (MessageReader) {\n function is(value) {\n let candidate = value;\n return candidate && Is.func(candidate.listen) && Is.func(candidate.dispose) &&\n Is.func(candidate.onError) && Is.func(candidate.onClose) && Is.func(candidate.onPartialMessage);\n }\n MessageReader.is = is;\n})(MessageReader || (exports.MessageReader = MessageReader = {}));\nclass AbstractMessageReader {\n constructor() {\n this.errorEmitter = new events_1.Emitter();\n this.closeEmitter = new events_1.Emitter();\n this.partialMessageEmitter = new events_1.Emitter();\n }\n dispose() {\n this.errorEmitter.dispose();\n this.closeEmitter.dispose();\n }\n get onError() {\n return this.errorEmitter.event;\n }\n fireError(error) {\n this.errorEmitter.fire(this.asError(error));\n }\n get onClose() {\n return this.closeEmitter.event;\n }\n fireClose() {\n this.closeEmitter.fire(undefined);\n }\n get onPartialMessage() {\n return this.partialMessageEmitter.event;\n }\n firePartialMessage(info) {\n this.partialMessageEmitter.fire(info);\n }\n asError(error) {\n if (error instanceof Error) {\n return error;\n }\n else {\n return new Error(`Reader received error. Reason: ${Is.string(error.message) ? error.message : 'unknown'}`);\n }\n }\n}\nexports.AbstractMessageReader = AbstractMessageReader;\nvar ResolvedMessageReaderOptions;\n(function (ResolvedMessageReaderOptions) {\n function fromOptions(options) {\n let charset;\n let result;\n let contentDecoder;\n const contentDecoders = new Map();\n let contentTypeDecoder;\n const contentTypeDecoders = new Map();\n if (options === undefined || typeof options === 'string') {\n charset = options ?? 'utf-8';\n }\n else {\n charset = options.charset ?? 'utf-8';\n if (options.contentDecoder !== undefined) {\n contentDecoder = options.contentDecoder;\n contentDecoders.set(contentDecoder.name, contentDecoder);\n }\n if (options.contentDecoders !== undefined) {\n for (const decoder of options.contentDecoders) {\n contentDecoders.set(decoder.name, decoder);\n }\n }\n if (options.contentTypeDecoder !== undefined) {\n contentTypeDecoder = options.contentTypeDecoder;\n contentTypeDecoders.set(contentTypeDecoder.name, contentTypeDecoder);\n }\n if (options.contentTypeDecoders !== undefined) {\n for (const decoder of options.contentTypeDecoders) {\n contentTypeDecoders.set(decoder.name, decoder);\n }\n }\n }\n if (contentTypeDecoder === undefined) {\n contentTypeDecoder = (0, ral_1.default)().applicationJson.decoder;\n contentTypeDecoders.set(contentTypeDecoder.name, contentTypeDecoder);\n }\n return { charset, contentDecoder, contentDecoders, contentTypeDecoder, contentTypeDecoders };\n }\n ResolvedMessageReaderOptions.fromOptions = fromOptions;\n})(ResolvedMessageReaderOptions || (ResolvedMessageReaderOptions = {}));\nclass ReadableStreamMessageReader extends AbstractMessageReader {\n constructor(readable, options) {\n super();\n this.readable = readable;\n this.options = ResolvedMessageReaderOptions.fromOptions(options);\n this.buffer = (0, ral_1.default)().messageBuffer.create(this.options.charset);\n this._partialMessageTimeout = 10000;\n this.nextMessageLength = -1;\n this.messageToken = 0;\n this.readSemaphore = new semaphore_1.Semaphore(1);\n }\n set partialMessageTimeout(timeout) {\n this._partialMessageTimeout = timeout;\n }\n get partialMessageTimeout() {\n return this._partialMessageTimeout;\n }\n listen(callback) {\n this.nextMessageLength = -1;\n this.messageToken = 0;\n this.partialMessageTimer = undefined;\n this.callback = callback;\n const result = this.readable.onData((data) => {\n this.onData(data);\n });\n this.readable.onError((error) => this.fireError(error));\n this.readable.onClose(() => this.fireClose());\n return result;\n }\n onData(data) {\n try {\n this.buffer.append(data);\n while (true) {\n if (this.nextMessageLength === -1) {\n const headers = this.buffer.tryReadHeaders(true);\n if (!headers) {\n return;\n }\n const contentLength = headers.get('content-length');\n if (!contentLength) {\n this.fireError(new Error(`Header must provide a Content-Length property.\\n${JSON.stringify(Object.fromEntries(headers))}`));\n return;\n }\n const length = parseInt(contentLength);\n if (isNaN(length)) {\n this.fireError(new Error(`Content-Length value must be a number. Got ${contentLength}`));\n return;\n }\n this.nextMessageLength = length;\n }\n const body = this.buffer.tryReadBody(this.nextMessageLength);\n if (body === undefined) {\n /** We haven't received the full message yet. */\n this.setPartialMessageTimer();\n return;\n }\n this.clearPartialMessageTimer();\n this.nextMessageLength = -1;\n // Make sure that we convert one received message after the\n // other. Otherwise it could happen that a decoding of a second\n // smaller message finished before the decoding of a first larger\n // message and then we would deliver the second message first.\n this.readSemaphore.lock(async () => {\n const bytes = this.options.contentDecoder !== undefined\n ? await this.options.contentDecoder.decode(body)\n : body;\n const message = await this.options.contentTypeDecoder.decode(bytes, this.options);\n this.callback(message);\n }).catch((error) => {\n this.fireError(error);\n });\n }\n }\n catch (error) {\n this.fireError(error);\n }\n }\n clearPartialMessageTimer() {\n if (this.partialMessageTimer) {\n this.partialMessageTimer.dispose();\n this.partialMessageTimer = undefined;\n }\n }\n setPartialMessageTimer() {\n this.clearPartialMessageTimer();\n if (this._partialMessageTimeout <= 0) {\n return;\n }\n this.partialMessageTimer = (0, ral_1.default)().timer.setTimeout((token, timeout) => {\n this.partialMessageTimer = undefined;\n if (token === this.messageToken) {\n this.firePartialMessage({ messageToken: token, waitingTime: timeout });\n this.setPartialMessageTimer();\n }\n }, this._partialMessageTimeout, this.messageToken, this._partialMessageTimeout);\n }\n}\nexports.ReadableStreamMessageReader = ReadableStreamMessageReader;\n","\"use strict\";\n/* --------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n * ------------------------------------------------------------------------------------------ */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.WriteableStreamMessageWriter = exports.AbstractMessageWriter = exports.MessageWriter = void 0;\nconst ral_1 = require(\"./ral\");\nconst Is = require(\"./is\");\nconst semaphore_1 = require(\"./semaphore\");\nconst events_1 = require(\"./events\");\nconst ContentLength = 'Content-Length: ';\nconst CRLF = '\\r\\n';\nvar MessageWriter;\n(function (MessageWriter) {\n function is(value) {\n let candidate = value;\n return candidate && Is.func(candidate.dispose) && Is.func(candidate.onClose) &&\n Is.func(candidate.onError) && Is.func(candidate.write);\n }\n MessageWriter.is = is;\n})(MessageWriter || (exports.MessageWriter = MessageWriter = {}));\nclass AbstractMessageWriter {\n constructor() {\n this.errorEmitter = new events_1.Emitter();\n this.closeEmitter = new events_1.Emitter();\n }\n dispose() {\n this.errorEmitter.dispose();\n this.closeEmitter.dispose();\n }\n get onError() {\n return this.errorEmitter.event;\n }\n fireError(error, message, count) {\n this.errorEmitter.fire([this.asError(error), message, count]);\n }\n get onClose() {\n return this.closeEmitter.event;\n }\n fireClose() {\n this.closeEmitter.fire(undefined);\n }\n asError(error) {\n if (error instanceof Error) {\n return error;\n }\n else {\n return new Error(`Writer received error. Reason: ${Is.string(error.message) ? error.message : 'unknown'}`);\n }\n }\n}\nexports.AbstractMessageWriter = AbstractMessageWriter;\nvar ResolvedMessageWriterOptions;\n(function (ResolvedMessageWriterOptions) {\n function fromOptions(options) {\n if (options === undefined || typeof options === 'string') {\n return { charset: options ?? 'utf-8', contentTypeEncoder: (0, ral_1.default)().applicationJson.encoder };\n }\n else {\n return { charset: options.charset ?? 'utf-8', contentEncoder: options.contentEncoder, contentTypeEncoder: options.contentTypeEncoder ?? (0, ral_1.default)().applicationJson.encoder };\n }\n }\n ResolvedMessageWriterOptions.fromOptions = fromOptions;\n})(ResolvedMessageWriterOptions || (ResolvedMessageWriterOptions = {}));\nclass WriteableStreamMessageWriter extends AbstractMessageWriter {\n constructor(writable, options) {\n super();\n this.writable = writable;\n this.options = ResolvedMessageWriterOptions.fromOptions(options);\n this.errorCount = 0;\n this.writeSemaphore = new semaphore_1.Semaphore(1);\n this.writable.onError((error) => this.fireError(error));\n this.writable.onClose(() => this.fireClose());\n }\n async write(msg) {\n return this.writeSemaphore.lock(async () => {\n const payload = this.options.contentTypeEncoder.encode(msg, this.options).then((buffer) => {\n if (this.options.contentEncoder !== undefined) {\n return this.options.contentEncoder.encode(buffer);\n }\n else {\n return buffer;\n }\n });\n return payload.then((buffer) => {\n const headers = [];\n headers.push(ContentLength, buffer.byteLength.toString(), CRLF);\n headers.push(CRLF);\n return this.doWrite(msg, headers, buffer);\n }, (error) => {\n this.fireError(error);\n throw error;\n });\n });\n }\n async doWrite(msg, headers, data) {\n try {\n await this.writable.write(headers.join(''), 'ascii');\n return this.writable.write(data);\n }\n catch (error) {\n this.handleError(error, msg);\n return Promise.reject(error);\n }\n }\n handleError(error, msg) {\n this.errorCount++;\n this.fireError(error, msg, this.errorCount);\n }\n end() {\n this.writable.end();\n }\n}\nexports.WriteableStreamMessageWriter = WriteableStreamMessageWriter;\n","\"use strict\";\n/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.AbstractMessageBuffer = void 0;\nconst CR = 13;\nconst LF = 10;\nconst CRLF = '\\r\\n';\nclass AbstractMessageBuffer {\n constructor(encoding = 'utf-8') {\n this._encoding = encoding;\n this._chunks = [];\n this._totalLength = 0;\n }\n get encoding() {\n return this._encoding;\n }\n append(chunk) {\n const toAppend = typeof chunk === 'string' ? this.fromString(chunk, this._encoding) : chunk;\n this._chunks.push(toAppend);\n this._totalLength += toAppend.byteLength;\n }\n tryReadHeaders(lowerCaseKeys = false) {\n if (this._chunks.length === 0) {\n return undefined;\n }\n let state = 0;\n let chunkIndex = 0;\n let offset = 0;\n let chunkBytesRead = 0;\n row: while (chunkIndex < this._chunks.length) {\n const chunk = this._chunks[chunkIndex];\n offset = 0;\n column: while (offset < chunk.length) {\n const value = chunk[offset];\n switch (value) {\n case CR:\n switch (state) {\n case 0:\n state = 1;\n break;\n case 2:\n state = 3;\n break;\n default:\n state = 0;\n }\n break;\n case LF:\n switch (state) {\n case 1:\n state = 2;\n break;\n case 3:\n state = 4;\n offset++;\n break row;\n default:\n state = 0;\n }\n break;\n default:\n state = 0;\n }\n offset++;\n }\n chunkBytesRead += chunk.byteLength;\n chunkIndex++;\n }\n if (state !== 4) {\n return undefined;\n }\n // The buffer contains the two CRLF at the end. So we will\n // have two empty lines after the split at the end as well.\n const buffer = this._read(chunkBytesRead + offset);\n const result = new Map();\n const headers = this.toString(buffer, 'ascii').split(CRLF);\n if (headers.length < 2) {\n return result;\n }\n for (let i = 0; i < headers.length - 2; i++) {\n const header = headers[i];\n const index = header.indexOf(':');\n if (index === -1) {\n throw new Error(`Message header must separate key and value using ':'\\n${header}`);\n }\n const key = header.substr(0, index);\n const value = header.substr(index + 1).trim();\n result.set(lowerCaseKeys ? key.toLowerCase() : key, value);\n }\n return result;\n }\n tryReadBody(length) {\n if (this._totalLength < length) {\n return undefined;\n }\n return this._read(length);\n }\n get numberOfBytes() {\n return this._totalLength;\n }\n _read(byteCount) {\n if (byteCount === 0) {\n return this.emptyBuffer();\n }\n if (byteCount > this._totalLength) {\n throw new Error(`Cannot read so many bytes!`);\n }\n if (this._chunks[0].byteLength === byteCount) {\n // super fast path, precisely first chunk must be returned\n const chunk = this._chunks[0];\n this._chunks.shift();\n this._totalLength -= byteCount;\n return this.asNative(chunk);\n }\n if (this._chunks[0].byteLength > byteCount) {\n // fast path, the reading is entirely within the first chunk\n const chunk = this._chunks[0];\n const result = this.asNative(chunk, byteCount);\n this._chunks[0] = chunk.slice(byteCount);\n this._totalLength -= byteCount;\n return result;\n }\n const result = this.allocNative(byteCount);\n let resultOffset = 0;\n let chunkIndex = 0;\n while (byteCount > 0) {\n const chunk = this._chunks[chunkIndex];\n if (chunk.byteLength > byteCount) {\n // this chunk will survive\n const chunkPart = chunk.slice(0, byteCount);\n result.set(chunkPart, resultOffset);\n resultOffset += byteCount;\n this._chunks[chunkIndex] = chunk.slice(byteCount);\n this._totalLength -= byteCount;\n byteCount -= byteCount;\n }\n else {\n // this chunk will be entirely read\n result.set(chunk, resultOffset);\n resultOffset += chunk.byteLength;\n this._chunks.shift();\n this._totalLength -= chunk.byteLength;\n byteCount -= chunk.byteLength;\n }\n }\n return result;\n }\n}\nexports.AbstractMessageBuffer = AbstractMessageBuffer;\n","\"use strict\";\n/* --------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n * ------------------------------------------------------------------------------------------ */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.createMessageConnection = exports.ConnectionOptions = exports.MessageStrategy = exports.CancellationStrategy = exports.CancellationSenderStrategy = exports.CancellationReceiverStrategy = exports.RequestCancellationReceiverStrategy = exports.IdCancellationReceiverStrategy = exports.ConnectionStrategy = exports.ConnectionError = exports.ConnectionErrors = exports.LogTraceNotification = exports.SetTraceNotification = exports.TraceFormat = exports.TraceValues = exports.Trace = exports.NullLogger = exports.ProgressType = exports.ProgressToken = void 0;\nconst ral_1 = require(\"./ral\");\nconst Is = require(\"./is\");\nconst messages_1 = require(\"./messages\");\nconst linkedMap_1 = require(\"./linkedMap\");\nconst events_1 = require(\"./events\");\nconst cancellation_1 = require(\"./cancellation\");\nvar CancelNotification;\n(function (CancelNotification) {\n CancelNotification.type = new messages_1.NotificationType('$/cancelRequest');\n})(CancelNotification || (CancelNotification = {}));\nvar ProgressToken;\n(function (ProgressToken) {\n function is(value) {\n return typeof value === 'string' || typeof value === 'number';\n }\n ProgressToken.is = is;\n})(ProgressToken || (exports.ProgressToken = ProgressToken = {}));\nvar ProgressNotification;\n(function (ProgressNotification) {\n ProgressNotification.type = new messages_1.NotificationType('$/progress');\n})(ProgressNotification || (ProgressNotification = {}));\nclass ProgressType {\n constructor() {\n }\n}\nexports.ProgressType = ProgressType;\nvar StarRequestHandler;\n(function (StarRequestHandler) {\n function is(value) {\n return Is.func(value);\n }\n StarRequestHandler.is = is;\n})(StarRequestHandler || (StarRequestHandler = {}));\nexports.NullLogger = Object.freeze({\n error: () => { },\n warn: () => { },\n info: () => { },\n log: () => { }\n});\nvar Trace;\n(function (Trace) {\n Trace[Trace[\"Off\"] = 0] = \"Off\";\n Trace[Trace[\"Messages\"] = 1] = \"Messages\";\n Trace[Trace[\"Compact\"] = 2] = \"Compact\";\n Trace[Trace[\"Verbose\"] = 3] = \"Verbose\";\n})(Trace || (exports.Trace = Trace = {}));\nvar TraceValues;\n(function (TraceValues) {\n /**\n * Turn tracing off.\n */\n TraceValues.Off = 'off';\n /**\n * Trace messages only.\n */\n TraceValues.Messages = 'messages';\n /**\n * Compact message tracing.\n */\n TraceValues.Compact = 'compact';\n /**\n * Verbose message tracing.\n */\n TraceValues.Verbose = 'verbose';\n})(TraceValues || (exports.TraceValues = TraceValues = {}));\n(function (Trace) {\n function fromString(value) {\n if (!Is.string(value)) {\n return Trace.Off;\n }\n value = value.toLowerCase();\n switch (value) {\n case 'off':\n return Trace.Off;\n case 'messages':\n return Trace.Messages;\n case 'compact':\n return Trace.Compact;\n case 'verbose':\n return Trace.Verbose;\n default:\n return Trace.Off;\n }\n }\n Trace.fromString = fromString;\n function toString(value) {\n switch (value) {\n case Trace.Off:\n return 'off';\n case Trace.Messages:\n return 'messages';\n case Trace.Compact:\n return 'compact';\n case Trace.Verbose:\n return 'verbose';\n default:\n return 'off';\n }\n }\n Trace.toString = toString;\n})(Trace || (exports.Trace = Trace = {}));\nvar TraceFormat;\n(function (TraceFormat) {\n TraceFormat[\"Text\"] = \"text\";\n TraceFormat[\"JSON\"] = \"json\";\n})(TraceFormat || (exports.TraceFormat = TraceFormat = {}));\n(function (TraceFormat) {\n function fromString(value) {\n if (!Is.string(value)) {\n return TraceFormat.Text;\n }\n value = value.toLowerCase();\n if (value === 'json') {\n return TraceFormat.JSON;\n }\n else {\n return TraceFormat.Text;\n }\n }\n TraceFormat.fromString = fromString;\n})(TraceFormat || (exports.TraceFormat = TraceFormat = {}));\nvar SetTraceNotification;\n(function (SetTraceNotification) {\n SetTraceNotification.type = new messages_1.NotificationType('$/setTrace');\n})(SetTraceNotification || (exports.SetTraceNotification = SetTraceNotification = {}));\nvar LogTraceNotification;\n(function (LogTraceNotification) {\n LogTraceNotification.type = new messages_1.NotificationType('$/logTrace');\n})(LogTraceNotification || (exports.LogTraceNotification = LogTraceNotification = {}));\nvar ConnectionErrors;\n(function (ConnectionErrors) {\n /**\n * The connection is closed.\n */\n ConnectionErrors[ConnectionErrors[\"Closed\"] = 1] = \"Closed\";\n /**\n * The connection got disposed.\n */\n ConnectionErrors[ConnectionErrors[\"Disposed\"] = 2] = \"Disposed\";\n /**\n * The connection is already in listening mode.\n */\n ConnectionErrors[ConnectionErrors[\"AlreadyListening\"] = 3] = \"AlreadyListening\";\n})(ConnectionErrors || (exports.ConnectionErrors = ConnectionErrors = {}));\nclass ConnectionError extends Error {\n constructor(code, message) {\n super(message);\n this.code = code;\n Object.setPrototypeOf(this, ConnectionError.prototype);\n }\n}\nexports.ConnectionError = ConnectionError;\nvar ConnectionStrategy;\n(function (ConnectionStrategy) {\n function is(value) {\n const candidate = value;\n return candidate && Is.func(candidate.cancelUndispatched);\n }\n ConnectionStrategy.is = is;\n})(ConnectionStrategy || (exports.ConnectionStrategy = ConnectionStrategy = {}));\nvar IdCancellationReceiverStrategy;\n(function (IdCancellationReceiverStrategy) {\n function is(value) {\n const candidate = value;\n return candidate && (candidate.kind === undefined || candidate.kind === 'id') && Is.func(candidate.createCancellationTokenSource) && (candidate.dispose === undefined || Is.func(candidate.dispose));\n }\n IdCancellationReceiverStrategy.is = is;\n})(IdCancellationReceiverStrategy || (exports.IdCancellationReceiverStrategy = IdCancellationReceiverStrategy = {}));\nvar RequestCancellationReceiverStrategy;\n(function (RequestCancellationReceiverStrategy) {\n function is(value) {\n const candidate = value;\n return candidate && candidate.kind === 'request' && Is.func(candidate.createCancellationTokenSource) && (candidate.dispose === undefined || Is.func(candidate.dispose));\n }\n RequestCancellationReceiverStrategy.is = is;\n})(RequestCancellationReceiverStrategy || (exports.RequestCancellationReceiverStrategy = RequestCancellationReceiverStrategy = {}));\nvar CancellationReceiverStrategy;\n(function (CancellationReceiverStrategy) {\n CancellationReceiverStrategy.Message = Object.freeze({\n createCancellationTokenSource(_) {\n return new cancellation_1.CancellationTokenSource();\n }\n });\n function is(value) {\n return IdCancellationReceiverStrategy.is(value) || RequestCancellationReceiverStrategy.is(value);\n }\n CancellationReceiverStrategy.is = is;\n})(CancellationReceiverStrategy || (exports.CancellationReceiverStrategy = CancellationReceiverStrategy = {}));\nvar CancellationSenderStrategy;\n(function (CancellationSenderStrategy) {\n CancellationSenderStrategy.Message = Object.freeze({\n sendCancellation(conn, id) {\n return conn.sendNotification(CancelNotification.type, { id });\n },\n cleanup(_) { }\n });\n function is(value) {\n const candidate = value;\n return candidate && Is.func(candidate.sendCancellation) && Is.func(candidate.cleanup);\n }\n CancellationSenderStrategy.is = is;\n})(CancellationSenderStrategy || (exports.CancellationSenderStrategy = CancellationSenderStrategy = {}));\nvar CancellationStrategy;\n(function (CancellationStrategy) {\n CancellationStrategy.Message = Object.freeze({\n receiver: CancellationReceiverStrategy.Message,\n sender: CancellationSenderStrategy.Message\n });\n function is(value) {\n const candidate = value;\n return candidate && CancellationReceiverStrategy.is(candidate.receiver) && CancellationSenderStrategy.is(candidate.sender);\n }\n CancellationStrategy.is = is;\n})(CancellationStrategy || (exports.CancellationStrategy = CancellationStrategy = {}));\nvar MessageStrategy;\n(function (MessageStrategy) {\n function is(value) {\n const candidate = value;\n return candidate && Is.func(candidate.handleMessage);\n }\n MessageStrategy.is = is;\n})(MessageStrategy || (exports.MessageStrategy = MessageStrategy = {}));\nvar ConnectionOptions;\n(function (ConnectionOptions) {\n function is(value) {\n const candidate = value;\n return candidate && (CancellationStrategy.is(candidate.cancellationStrategy) || ConnectionStrategy.is(candidate.connectionStrategy) || MessageStrategy.is(candidate.messageStrategy));\n }\n ConnectionOptions.is = is;\n})(ConnectionOptions || (exports.ConnectionOptions = ConnectionOptions = {}));\nvar ConnectionState;\n(function (ConnectionState) {\n ConnectionState[ConnectionState[\"New\"] = 1] = \"New\";\n ConnectionState[ConnectionState[\"Listening\"] = 2] = \"Listening\";\n ConnectionState[ConnectionState[\"Closed\"] = 3] = \"Closed\";\n ConnectionState[ConnectionState[\"Disposed\"] = 4] = \"Disposed\";\n})(ConnectionState || (ConnectionState = {}));\nfunction createMessageConnection(messageReader, messageWriter, _logger, options) {\n const logger = _logger !== undefined ? _logger : exports.NullLogger;\n let sequenceNumber = 0;\n let notificationSequenceNumber = 0;\n let unknownResponseSequenceNumber = 0;\n const version = '2.0';\n let starRequestHandler = undefined;\n const requestHandlers = new Map();\n let starNotificationHandler = undefined;\n const notificationHandlers = new Map();\n const progressHandlers = new Map();\n let timer;\n let messageQueue = new linkedMap_1.LinkedMap();\n let responsePromises = new Map();\n let knownCanceledRequests = new Set();\n let requestTokens = new Map();\n let trace = Trace.Off;\n let traceFormat = TraceFormat.Text;\n let tracer;\n let state = ConnectionState.New;\n const errorEmitter = new events_1.Emitter();\n const closeEmitter = new events_1.Emitter();\n const unhandledNotificationEmitter = new events_1.Emitter();\n const unhandledProgressEmitter = new events_1.Emitter();\n const disposeEmitter = new events_1.Emitter();\n const cancellationStrategy = (options && options.cancellationStrategy) ? options.cancellationStrategy : CancellationStrategy.Message;\n function createRequestQueueKey(id) {\n if (id === null) {\n throw new Error(`Can't send requests with id null since the response can't be correlated.`);\n }\n return 'req-' + id.toString();\n }\n function createResponseQueueKey(id) {\n if (id === null) {\n return 'res-unknown-' + (++unknownResponseSequenceNumber).toString();\n }\n else {\n return 'res-' + id.toString();\n }\n }\n function createNotificationQueueKey() {\n return 'not-' + (++notificationSequenceNumber).toString();\n }\n function addMessageToQueue(queue, message) {\n if (messages_1.Message.isRequest(message)) {\n queue.set(createRequestQueueKey(message.id), message);\n }\n else if (messages_1.Message.isResponse(message)) {\n queue.set(createResponseQueueKey(message.id), message);\n }\n else {\n queue.set(createNotificationQueueKey(), message);\n }\n }\n function cancelUndispatched(_message) {\n return undefined;\n }\n function isListening() {\n return state === ConnectionState.Listening;\n }\n function isClosed() {\n return state === ConnectionState.Closed;\n }\n function isDisposed() {\n return state === ConnectionState.Disposed;\n }\n function closeHandler() {\n if (state === ConnectionState.New || state === ConnectionState.Listening) {\n state = ConnectionState.Closed;\n closeEmitter.fire(undefined);\n }\n // If the connection is disposed don't sent close events.\n }\n function readErrorHandler(error) {\n errorEmitter.fire([error, undefined, undefined]);\n }\n function writeErrorHandler(data) {\n errorEmitter.fire(data);\n }\n messageReader.onClose(closeHandler);\n messageReader.onError(readErrorHandler);\n messageWriter.onClose(closeHandler);\n messageWriter.onError(writeErrorHandler);\n function triggerMessageQueue() {\n if (timer || messageQueue.size === 0) {\n return;\n }\n timer = (0, ral_1.default)().timer.setImmediate(() => {\n timer = undefined;\n processMessageQueue();\n });\n }\n function handleMessage(message) {\n if (messages_1.Message.isRequest(message)) {\n handleRequest(message);\n }\n else if (messages_1.Message.isNotification(message)) {\n handleNotification(message);\n }\n else if (messages_1.Message.isResponse(message)) {\n handleResponse(message);\n }\n else {\n handleInvalidMessage(message);\n }\n }\n function processMessageQueue() {\n if (messageQueue.size === 0) {\n return;\n }\n const message = messageQueue.shift();\n try {\n const messageStrategy = options?.messageStrategy;\n if (MessageStrategy.is(messageStrategy)) {\n messageStrategy.handleMessage(message, handleMessage);\n }\n else {\n handleMessage(message);\n }\n }\n finally {\n triggerMessageQueue();\n }\n }\n const callback = (message) => {\n try {\n // We have received a cancellation message. Check if the message is still in the queue\n // and cancel it if allowed to do so.\n if (messages_1.Message.isNotification(message) && message.method === CancelNotification.type.method) {\n const cancelId = message.params.id;\n const key = createRequestQueueKey(cancelId);\n const toCancel = messageQueue.get(key);\n if (messages_1.Message.isRequest(toCancel)) {\n const strategy = options?.connectionStrategy;\n const response = (strategy && strategy.cancelUndispatched) ? strategy.cancelUndispatched(toCancel, cancelUndispatched) : cancelUndispatched(toCancel);\n if (response && (response.error !== undefined || response.result !== undefined)) {\n messageQueue.delete(key);\n requestTokens.delete(cancelId);\n response.id = toCancel.id;\n traceSendingResponse(response, message.method, Date.now());\n messageWriter.write(response).catch(() => logger.error(`Sending response for canceled message failed.`));\n return;\n }\n }\n const cancellationToken = requestTokens.get(cancelId);\n // The request is already running. Cancel the token\n if (cancellationToken !== undefined) {\n cancellationToken.cancel();\n traceReceivedNotification(message);\n return;\n }\n else {\n // Remember the cancel but still queue the message to\n // clean up state in process message.\n knownCanceledRequests.add(cancelId);\n }\n }\n addMessageToQueue(messageQueue, message);\n }\n finally {\n triggerMessageQueue();\n }\n };\n function handleRequest(requestMessage) {\n if (isDisposed()) {\n // we return here silently since we fired an event when the\n // connection got disposed.\n return;\n }\n function reply(resultOrError, method, startTime) {\n const message = {\n jsonrpc: version,\n id: requestMessage.id\n };\n if (resultOrError instanceof messages_1.ResponseError) {\n message.error = resultOrError.toJson();\n }\n else {\n message.result = resultOrError === undefined ? null : resultOrError;\n }\n traceSendingResponse(message, method, startTime);\n messageWriter.write(message).catch(() => logger.error(`Sending response failed.`));\n }\n function replyError(error, method, startTime) {\n const message = {\n jsonrpc: version,\n id: requestMessage.id,\n error: error.toJson()\n };\n traceSendingResponse(message, method, startTime);\n messageWriter.write(message).catch(() => logger.error(`Sending response failed.`));\n }\n function replySuccess(result, method, startTime) {\n // The JSON RPC defines that a response must either have a result or an error\n // So we can't treat undefined as a valid response result.\n if (result === undefined) {\n result = null;\n }\n const message = {\n jsonrpc: version,\n id: requestMessage.id,\n result: result\n };\n traceSendingResponse(message, method, startTime);\n messageWriter.write(message).catch(() => logger.error(`Sending response failed.`));\n }\n traceReceivedRequest(requestMessage);\n const element = requestHandlers.get(requestMessage.method);\n let type;\n let requestHandler;\n if (element) {\n type = element.type;\n requestHandler = element.handler;\n }\n const startTime = Date.now();\n if (requestHandler || starRequestHandler) {\n const tokenKey = requestMessage.id ?? String(Date.now()); //\n const cancellationSource = IdCancellationReceiverStrategy.is(cancellationStrategy.receiver)\n ? cancellationStrategy.receiver.createCancellationTokenSource(tokenKey)\n : cancellationStrategy.receiver.createCancellationTokenSource(requestMessage);\n if (requestMessage.id !== null && knownCanceledRequests.has(requestMessage.id)) {\n cancellationSource.cancel();\n }\n if (requestMessage.id !== null) {\n requestTokens.set(tokenKey, cancellationSource);\n }\n try {\n let handlerResult;\n if (requestHandler) {\n if (requestMessage.params === undefined) {\n if (type !== undefined && type.numberOfParams !== 0) {\n replyError(new messages_1.ResponseError(messages_1.ErrorCodes.InvalidParams, `Request ${requestMessage.method} defines ${type.numberOfParams} params but received none.`), requestMessage.method, startTime);\n return;\n }\n handlerResult = requestHandler(cancellationSource.token);\n }\n else if (Array.isArray(requestMessage.params)) {\n if (type !== undefined && type.parameterStructures === messages_1.ParameterStructures.byName) {\n replyError(new messages_1.ResponseError(messages_1.ErrorCodes.InvalidParams, `Request ${requestMessage.method} defines parameters by name but received parameters by position`), requestMessage.method, startTime);\n return;\n }\n handlerResult = requestHandler(...requestMessage.params, cancellationSource.token);\n }\n else {\n if (type !== undefined && type.parameterStructures === messages_1.ParameterStructures.byPosition) {\n replyError(new messages_1.ResponseError(messages_1.ErrorCodes.InvalidParams, `Request ${requestMessage.method} defines parameters by position but received parameters by name`), requestMessage.method, startTime);\n return;\n }\n handlerResult = requestHandler(requestMessage.params, cancellationSource.token);\n }\n }\n else if (starRequestHandler) {\n handlerResult = starRequestHandler(requestMessage.method, requestMessage.params, cancellationSource.token);\n }\n const promise = handlerResult;\n if (!handlerResult) {\n requestTokens.delete(tokenKey);\n replySuccess(handlerResult, requestMessage.method, startTime);\n }\n else if (promise.then) {\n promise.then((resultOrError) => {\n requestTokens.delete(tokenKey);\n reply(resultOrError, requestMessage.method, startTime);\n }, error => {\n requestTokens.delete(tokenKey);\n if (error instanceof messages_1.ResponseError) {\n replyError(error, requestMessage.method, startTime);\n }\n else if (error && Is.string(error.message)) {\n replyError(new messages_1.ResponseError(messages_1.ErrorCodes.InternalError, `Request ${requestMessage.method} failed with message: ${error.message}`), requestMessage.method, startTime);\n }\n else {\n replyError(new messages_1.ResponseError(messages_1.ErrorCodes.InternalError, `Request ${requestMessage.method} failed unexpectedly without providing any details.`), requestMessage.method, startTime);\n }\n });\n }\n else {\n requestTokens.delete(tokenKey);\n reply(handlerResult, requestMessage.method, startTime);\n }\n }\n catch (error) {\n requestTokens.delete(tokenKey);\n if (error instanceof messages_1.ResponseError) {\n reply(error, requestMessage.method, startTime);\n }\n else if (error && Is.string(error.message)) {\n replyError(new messages_1.ResponseError(messages_1.ErrorCodes.InternalError, `Request ${requestMessage.method} failed with message: ${error.message}`), requestMessage.method, startTime);\n }\n else {\n replyError(new messages_1.ResponseError(messages_1.ErrorCodes.InternalError, `Request ${requestMessage.method} failed unexpectedly without providing any details.`), requestMessage.method, startTime);\n }\n }\n }\n else {\n replyError(new messages_1.ResponseError(messages_1.ErrorCodes.MethodNotFound, `Unhandled method ${requestMessage.method}`), requestMessage.method, startTime);\n }\n }\n function handleResponse(responseMessage) {\n if (isDisposed()) {\n // See handle request.\n return;\n }\n if (responseMessage.id === null) {\n if (responseMessage.error) {\n logger.error(`Received response message without id: Error is: \\n${JSON.stringify(responseMessage.error, undefined, 4)}`);\n }\n else {\n logger.error(`Received response message without id. No further error information provided.`);\n }\n }\n else {\n const key = responseMessage.id;\n const responsePromise = responsePromises.get(key);\n traceReceivedResponse(responseMessage, responsePromise);\n if (responsePromise !== undefined) {\n responsePromises.delete(key);\n try {\n if (responseMessage.error) {\n const error = responseMessage.error;\n responsePromise.reject(new messages_1.ResponseError(error.code, error.message, error.data));\n }\n else if (responseMessage.result !== undefined) {\n responsePromise.resolve(responseMessage.result);\n }\n else {\n throw new Error('Should never happen.');\n }\n }\n catch (error) {\n if (error.message) {\n logger.error(`Response handler '${responsePromise.method}' failed with message: ${error.message}`);\n }\n else {\n logger.error(`Response handler '${responsePromise.method}' failed unexpectedly.`);\n }\n }\n }\n }\n }\n function handleNotification(message) {\n if (isDisposed()) {\n // See handle request.\n return;\n }\n let type = undefined;\n let notificationHandler;\n if (message.method === CancelNotification.type.method) {\n const cancelId = message.params.id;\n knownCanceledRequests.delete(cancelId);\n traceReceivedNotification(message);\n return;\n }\n else {\n const element = notificationHandlers.get(message.method);\n if (element) {\n notificationHandler = element.handler;\n type = element.type;\n }\n }\n if (notificationHandler || starNotificationHandler) {\n try {\n traceReceivedNotification(message);\n if (notificationHandler) {\n if (message.params === undefined) {\n if (type !== undefined) {\n if (type.numberOfParams !== 0 && type.parameterStructures !== messages_1.ParameterStructures.byName) {\n logger.error(`Notification ${message.method} defines ${type.numberOfParams} params but received none.`);\n }\n }\n notificationHandler();\n }\n else if (Array.isArray(message.params)) {\n // There are JSON-RPC libraries that send progress message as positional params although\n // specified as named. So convert them if this is the case.\n const params = message.params;\n if (message.method === ProgressNotification.type.method && params.length === 2 && ProgressToken.is(params[0])) {\n notificationHandler({ token: params[0], value: params[1] });\n }\n else {\n if (type !== undefined) {\n if (type.parameterStructures === messages_1.ParameterStructures.byName) {\n logger.error(`Notification ${message.method} defines parameters by name but received parameters by position`);\n }\n if (type.numberOfParams !== message.params.length) {\n logger.error(`Notification ${message.method} defines ${type.numberOfParams} params but received ${params.length} arguments`);\n }\n }\n notificationHandler(...params);\n }\n }\n else {\n if (type !== undefined && type.parameterStructures === messages_1.ParameterStructures.byPosition) {\n logger.error(`Notification ${message.method} defines parameters by position but received parameters by name`);\n }\n notificationHandler(message.params);\n }\n }\n else if (starNotificationHandler) {\n starNotificationHandler(message.method, message.params);\n }\n }\n catch (error) {\n if (error.message) {\n logger.error(`Notification handler '${message.method}' failed with message: ${error.message}`);\n }\n else {\n logger.error(`Notification handler '${message.method}' failed unexpectedly.`);\n }\n }\n }\n else {\n unhandledNotificationEmitter.fire(message);\n }\n }\n function handleInvalidMessage(message) {\n if (!message) {\n logger.error('Received empty message.');\n return;\n }\n logger.error(`Received message which is neither a response nor a notification message:\\n${JSON.stringify(message, null, 4)}`);\n // Test whether we find an id to reject the promise\n const responseMessage = message;\n if (Is.string(responseMessage.id) || Is.number(responseMessage.id)) {\n const key = responseMessage.id;\n const responseHandler = responsePromises.get(key);\n if (responseHandler) {\n responseHandler.reject(new Error('The received response has neither a result nor an error property.'));\n }\n }\n }\n function stringifyTrace(params) {\n if (params === undefined || params === null) {\n return undefined;\n }\n switch (trace) {\n case Trace.Verbose:\n return JSON.stringify(params, null, 4);\n case Trace.Compact:\n return JSON.stringify(params);\n default:\n return undefined;\n }\n }\n function traceSendingRequest(message) {\n if (trace === Trace.Off || !tracer) {\n return;\n }\n if (traceFormat === TraceFormat.Text) {\n let data = undefined;\n if ((trace === Trace.Verbose || trace === Trace.Compact) && message.params) {\n data = `Params: ${stringifyTrace(message.params)}\\n\\n`;\n }\n tracer.log(`Sending request '${message.method} - (${message.id})'.`, data);\n }\n else {\n logLSPMessage('send-request', message);\n }\n }\n function traceSendingNotification(message) {\n if (trace === Trace.Off || !tracer) {\n return;\n }\n if (traceFormat === TraceFormat.Text) {\n let data = undefined;\n if (trace === Trace.Verbose || trace === Trace.Compact) {\n if (message.params) {\n data = `Params: ${stringifyTrace(message.params)}\\n\\n`;\n }\n else {\n data = 'No parameters provided.\\n\\n';\n }\n }\n tracer.log(`Sending notification '${message.method}'.`, data);\n }\n else {\n logLSPMessage('send-notification', message);\n }\n }\n function traceSendingResponse(message, method, startTime) {\n if (trace === Trace.Off || !tracer) {\n return;\n }\n if (traceFormat === TraceFormat.Text) {\n let data = undefined;\n if (trace === Trace.Verbose || trace === Trace.Compact) {\n if (message.error && message.error.data) {\n data = `Error data: ${stringifyTrace(message.error.data)}\\n\\n`;\n }\n else {\n if (message.result) {\n data = `Result: ${stringifyTrace(message.result)}\\n\\n`;\n }\n else if (message.error === undefined) {\n data = 'No result returned.\\n\\n';\n }\n }\n }\n tracer.log(`Sending response '${method} - (${message.id})'. Processing request took ${Date.now() - startTime}ms`, data);\n }\n else {\n logLSPMessage('send-response', message);\n }\n }\n function traceReceivedRequest(message) {\n if (trace === Trace.Off || !tracer) {\n return;\n }\n if (traceFormat === TraceFormat.Text) {\n let data = undefined;\n if ((trace === Trace.Verbose || trace === Trace.Compact) && message.params) {\n data = `Params: ${stringifyTrace(message.params)}\\n\\n`;\n }\n tracer.log(`Received request '${message.method} - (${message.id})'.`, data);\n }\n else {\n logLSPMessage('receive-request', message);\n }\n }\n function traceReceivedNotification(message) {\n if (trace === Trace.Off || !tracer || message.method === LogTraceNotification.type.method) {\n return;\n }\n if (traceFormat === TraceFormat.Text) {\n let data = undefined;\n if (trace === Trace.Verbose || trace === Trace.Compact) {\n if (message.params) {\n data = `Params: ${stringifyTrace(message.params)}\\n\\n`;\n }\n else {\n data = 'No parameters provided.\\n\\n';\n }\n }\n tracer.log(`Received notification '${message.method}'.`, data);\n }\n else {\n logLSPMessage('receive-notification', message);\n }\n }\n function traceReceivedResponse(message, responsePromise) {\n if (trace === Trace.Off || !tracer) {\n return;\n }\n if (traceFormat === TraceFormat.Text) {\n let data = undefined;\n if (trace === Trace.Verbose || trace === Trace.Compact) {\n if (message.error && message.error.data) {\n data = `Error data: ${stringifyTrace(message.error.data)}\\n\\n`;\n }\n else {\n if (message.result) {\n data = `Result: ${stringifyTrace(message.result)}\\n\\n`;\n }\n else if (message.error === undefined) {\n data = 'No result returned.\\n\\n';\n }\n }\n }\n if (responsePromise) {\n const error = message.error ? ` Request failed: ${message.error.message} (${message.error.code}).` : '';\n tracer.log(`Received response '${responsePromise.method} - (${message.id})' in ${Date.now() - responsePromise.timerStart}ms.${error}`, data);\n }\n else {\n tracer.log(`Received response ${message.id} without active response promise.`, data);\n }\n }\n else {\n logLSPMessage('receive-response', message);\n }\n }\n function logLSPMessage(type, message) {\n if (!tracer || trace === Trace.Off) {\n return;\n }\n const lspMessage = {\n isLSPMessage: true,\n type,\n message,\n timestamp: Date.now()\n };\n tracer.log(lspMessage);\n }\n function throwIfClosedOrDisposed() {\n if (isClosed()) {\n throw new ConnectionError(ConnectionErrors.Closed, 'Connection is closed.');\n }\n if (isDisposed()) {\n throw new ConnectionError(ConnectionErrors.Disposed, 'Connection is disposed.');\n }\n }\n function throwIfListening() {\n if (isListening()) {\n throw new ConnectionError(ConnectionErrors.AlreadyListening, 'Connection is already listening');\n }\n }\n function throwIfNotListening() {\n if (!isListening()) {\n throw new Error('Call listen() first.');\n }\n }\n function undefinedToNull(param) {\n if (param === undefined) {\n return null;\n }\n else {\n return param;\n }\n }\n function nullToUndefined(param) {\n if (param === null) {\n return undefined;\n }\n else {\n return param;\n }\n }\n function isNamedParam(param) {\n return param !== undefined && param !== null && !Array.isArray(param) && typeof param === 'object';\n }\n function computeSingleParam(parameterStructures, param) {\n switch (parameterStructures) {\n case messages_1.ParameterStructures.auto:\n if (isNamedParam(param)) {\n return nullToUndefined(param);\n }\n else {\n return [undefinedToNull(param)];\n }\n case messages_1.ParameterStructures.byName:\n if (!isNamedParam(param)) {\n throw new Error(`Received parameters by name but param is not an object literal.`);\n }\n return nullToUndefined(param);\n case messages_1.ParameterStructures.byPosition:\n return [undefinedToNull(param)];\n default:\n throw new Error(`Unknown parameter structure ${parameterStructures.toString()}`);\n }\n }\n function computeMessageParams(type, params) {\n let result;\n const numberOfParams = type.numberOfParams;\n switch (numberOfParams) {\n case 0:\n result = undefined;\n break;\n case 1:\n result = computeSingleParam(type.parameterStructures, params[0]);\n break;\n default:\n result = [];\n for (let i = 0; i < params.length && i < numberOfParams; i++) {\n result.push(undefinedToNull(params[i]));\n }\n if (params.length < numberOfParams) {\n for (let i = params.length; i < numberOfParams; i++) {\n result.push(null);\n }\n }\n break;\n }\n return result;\n }\n const connection = {\n sendNotification: (type, ...args) => {\n throwIfClosedOrDisposed();\n let method;\n let messageParams;\n if (Is.string(type)) {\n method = type;\n const first = args[0];\n let paramStart = 0;\n let parameterStructures = messages_1.ParameterStructures.auto;\n if (messages_1.ParameterStructures.is(first)) {\n paramStart = 1;\n parameterStructures = first;\n }\n let paramEnd = args.length;\n const numberOfParams = paramEnd - paramStart;\n switch (numberOfParams) {\n case 0:\n messageParams = undefined;\n break;\n case 1:\n messageParams = computeSingleParam(parameterStructures, args[paramStart]);\n break;\n default:\n if (parameterStructures === messages_1.ParameterStructures.byName) {\n throw new Error(`Received ${numberOfParams} parameters for 'by Name' notification parameter structure.`);\n }\n messageParams = args.slice(paramStart, paramEnd).map(value => undefinedToNull(value));\n break;\n }\n }\n else {\n const params = args;\n method = type.method;\n messageParams = computeMessageParams(type, params);\n }\n const notificationMessage = {\n jsonrpc: version,\n method: method,\n params: messageParams\n };\n traceSendingNotification(notificationMessage);\n return messageWriter.write(notificationMessage).catch((error) => {\n logger.error(`Sending notification failed.`);\n throw error;\n });\n },\n onNotification: (type, handler) => {\n throwIfClosedOrDisposed();\n let method;\n if (Is.func(type)) {\n starNotificationHandler = type;\n }\n else if (handler) {\n if (Is.string(type)) {\n method = type;\n notificationHandlers.set(type, { type: undefined, handler });\n }\n else {\n method = type.method;\n notificationHandlers.set(type.method, { type, handler });\n }\n }\n return {\n dispose: () => {\n if (method !== undefined) {\n notificationHandlers.delete(method);\n }\n else {\n starNotificationHandler = undefined;\n }\n }\n };\n },\n onProgress: (_type, token, handler) => {\n if (progressHandlers.has(token)) {\n throw new Error(`Progress handler for token ${token} already registered`);\n }\n progressHandlers.set(token, handler);\n return {\n dispose: () => {\n progressHandlers.delete(token);\n }\n };\n },\n sendProgress: (_type, token, value) => {\n // This should not await but simple return to ensure that we don't have another\n // async scheduling. Otherwise one send could overtake another send.\n return connection.sendNotification(ProgressNotification.type, { token, value });\n },\n onUnhandledProgress: unhandledProgressEmitter.event,\n sendRequest: (type, ...args) => {\n throwIfClosedOrDisposed();\n throwIfNotListening();\n let method;\n let messageParams;\n let token = undefined;\n if (Is.string(type)) {\n method = type;\n const first = args[0];\n const last = args[args.length - 1];\n let paramStart = 0;\n let parameterStructures = messages_1.ParameterStructures.auto;\n if (messages_1.ParameterStructures.is(first)) {\n paramStart = 1;\n parameterStructures = first;\n }\n let paramEnd = args.length;\n if (cancellation_1.CancellationToken.is(last)) {\n paramEnd = paramEnd - 1;\n token = last;\n }\n const numberOfParams = paramEnd - paramStart;\n switch (numberOfParams) {\n case 0:\n messageParams = undefined;\n break;\n case 1:\n messageParams = computeSingleParam(parameterStructures, args[paramStart]);\n break;\n default:\n if (parameterStructures === messages_1.ParameterStructures.byName) {\n throw new Error(`Received ${numberOfParams} parameters for 'by Name' request parameter structure.`);\n }\n messageParams = args.slice(paramStart, paramEnd).map(value => undefinedToNull(value));\n break;\n }\n }\n else {\n const params = args;\n method = type.method;\n messageParams = computeMessageParams(type, params);\n const numberOfParams = type.numberOfParams;\n token = cancellation_1.CancellationToken.is(params[numberOfParams]) ? params[numberOfParams] : undefined;\n }\n const id = sequenceNumber++;\n let disposable;\n if (token) {\n disposable = token.onCancellationRequested(() => {\n const p = cancellationStrategy.sender.sendCancellation(connection, id);\n if (p === undefined) {\n logger.log(`Received no promise from cancellation strategy when cancelling id ${id}`);\n return Promise.resolve();\n }\n else {\n return p.catch(() => {\n logger.log(`Sending cancellation messages for id ${id} failed`);\n });\n }\n });\n }\n const requestMessage = {\n jsonrpc: version,\n id: id,\n method: method,\n params: messageParams\n };\n traceSendingRequest(requestMessage);\n if (typeof cancellationStrategy.sender.enableCancellation === 'function') {\n cancellationStrategy.sender.enableCancellation(requestMessage);\n }\n return new Promise(async (resolve, reject) => {\n const resolveWithCleanup = (r) => {\n resolve(r);\n cancellationStrategy.sender.cleanup(id);\n disposable?.dispose();\n };\n const rejectWithCleanup = (r) => {\n reject(r);\n cancellationStrategy.sender.cleanup(id);\n disposable?.dispose();\n };\n const responsePromise = { method: method, timerStart: Date.now(), resolve: resolveWithCleanup, reject: rejectWithCleanup };\n try {\n responsePromises.set(id, responsePromise);\n await messageWriter.write(requestMessage);\n }\n catch (error) {\n // Writing the message failed. So we need to delete it from the response promises and\n // reject it.\n responsePromises.delete(id);\n responsePromise.reject(new messages_1.ResponseError(messages_1.ErrorCodes.MessageWriteError, error.message ? error.message : 'Unknown reason'));\n logger.error(`Sending request failed.`);\n throw error;\n }\n });\n },\n onRequest: (type, handler) => {\n throwIfClosedOrDisposed();\n let method = null;\n if (StarRequestHandler.is(type)) {\n method = undefined;\n starRequestHandler = type;\n }\n else if (Is.string(type)) {\n method = null;\n if (handler !== undefined) {\n method = type;\n requestHandlers.set(type, { handler: handler, type: undefined });\n }\n }\n else {\n if (handler !== undefined) {\n method = type.method;\n requestHandlers.set(type.method, { type, handler });\n }\n }\n return {\n dispose: () => {\n if (method === null) {\n return;\n }\n if (method !== undefined) {\n requestHandlers.delete(method);\n }\n else {\n starRequestHandler = undefined;\n }\n }\n };\n },\n hasPendingResponse: () => {\n return responsePromises.size > 0;\n },\n trace: async (_value, _tracer, sendNotificationOrTraceOptions) => {\n let _sendNotification = false;\n let _traceFormat = TraceFormat.Text;\n if (sendNotificationOrTraceOptions !== undefined) {\n if (Is.boolean(sendNotificationOrTraceOptions)) {\n _sendNotification = sendNotificationOrTraceOptions;\n }\n else {\n _sendNotification = sendNotificationOrTraceOptions.sendNotification || false;\n _traceFormat = sendNotificationOrTraceOptions.traceFormat || TraceFormat.Text;\n }\n }\n trace = _value;\n traceFormat = _traceFormat;\n if (trace === Trace.Off) {\n tracer = undefined;\n }\n else {\n tracer = _tracer;\n }\n if (_sendNotification && !isClosed() && !isDisposed()) {\n await connection.sendNotification(SetTraceNotification.type, { value: Trace.toString(_value) });\n }\n },\n onError: errorEmitter.event,\n onClose: closeEmitter.event,\n onUnhandledNotification: unhandledNotificationEmitter.event,\n onDispose: disposeEmitter.event,\n end: () => {\n messageWriter.end();\n },\n dispose: () => {\n if (isDisposed()) {\n return;\n }\n state = ConnectionState.Disposed;\n disposeEmitter.fire(undefined);\n const error = new messages_1.ResponseError(messages_1.ErrorCodes.PendingResponseRejected, 'Pending response rejected since connection got disposed');\n for (const promise of responsePromises.values()) {\n promise.reject(error);\n }\n responsePromises = new Map();\n requestTokens = new Map();\n knownCanceledRequests = new Set();\n messageQueue = new linkedMap_1.LinkedMap();\n // Test for backwards compatibility\n if (Is.func(messageWriter.dispose)) {\n messageWriter.dispose();\n }\n if (Is.func(messageReader.dispose)) {\n messageReader.dispose();\n }\n },\n listen: () => {\n throwIfClosedOrDisposed();\n throwIfListening();\n state = ConnectionState.Listening;\n messageReader.listen(callback);\n },\n inspect: () => {\n // eslint-disable-next-line no-console\n (0, ral_1.default)().console.log('inspect');\n }\n };\n connection.onNotification(LogTraceNotification.type, (params) => {\n if (trace === Trace.Off || !tracer) {\n return;\n }\n const verbose = trace === Trace.Verbose || trace === Trace.Compact;\n tracer.log(params.message, verbose ? params.verbose : undefined);\n });\n connection.onNotification(ProgressNotification.type, (params) => {\n const handler = progressHandlers.get(params.token);\n if (handler) {\n handler(params.value);\n }\n else {\n unhandledProgressEmitter.fire(params);\n }\n });\n return connection;\n}\nexports.createMessageConnection = createMessageConnection;\n","\"use strict\";\n/* --------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n * ------------------------------------------------------------------------------------------ */\n/// \nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ProgressType = exports.ProgressToken = exports.createMessageConnection = exports.NullLogger = exports.ConnectionOptions = exports.ConnectionStrategy = exports.AbstractMessageBuffer = exports.WriteableStreamMessageWriter = exports.AbstractMessageWriter = exports.MessageWriter = exports.ReadableStreamMessageReader = exports.AbstractMessageReader = exports.MessageReader = exports.SharedArrayReceiverStrategy = exports.SharedArraySenderStrategy = exports.CancellationToken = exports.CancellationTokenSource = exports.Emitter = exports.Event = exports.Disposable = exports.LRUCache = exports.Touch = exports.LinkedMap = exports.ParameterStructures = exports.NotificationType9 = exports.NotificationType8 = exports.NotificationType7 = exports.NotificationType6 = exports.NotificationType5 = exports.NotificationType4 = exports.NotificationType3 = exports.NotificationType2 = exports.NotificationType1 = exports.NotificationType0 = exports.NotificationType = exports.ErrorCodes = exports.ResponseError = exports.RequestType9 = exports.RequestType8 = exports.RequestType7 = exports.RequestType6 = exports.RequestType5 = exports.RequestType4 = exports.RequestType3 = exports.RequestType2 = exports.RequestType1 = exports.RequestType0 = exports.RequestType = exports.Message = exports.RAL = void 0;\nexports.MessageStrategy = exports.CancellationStrategy = exports.CancellationSenderStrategy = exports.CancellationReceiverStrategy = exports.ConnectionError = exports.ConnectionErrors = exports.LogTraceNotification = exports.SetTraceNotification = exports.TraceFormat = exports.TraceValues = exports.Trace = void 0;\nconst messages_1 = require(\"./messages\");\nObject.defineProperty(exports, \"Message\", { enumerable: true, get: function () { return messages_1.Message; } });\nObject.defineProperty(exports, \"RequestType\", { enumerable: true, get: function () { return messages_1.RequestType; } });\nObject.defineProperty(exports, \"RequestType0\", { enumerable: true, get: function () { return messages_1.RequestType0; } });\nObject.defineProperty(exports, \"RequestType1\", { enumerable: true, get: function () { return messages_1.RequestType1; } });\nObject.defineProperty(exports, \"RequestType2\", { enumerable: true, get: function () { return messages_1.RequestType2; } });\nObject.defineProperty(exports, \"RequestType3\", { enumerable: true, get: function () { return messages_1.RequestType3; } });\nObject.defineProperty(exports, \"RequestType4\", { enumerable: true, get: function () { return messages_1.RequestType4; } });\nObject.defineProperty(exports, \"RequestType5\", { enumerable: true, get: function () { return messages_1.RequestType5; } });\nObject.defineProperty(exports, \"RequestType6\", { enumerable: true, get: function () { return messages_1.RequestType6; } });\nObject.defineProperty(exports, \"RequestType7\", { enumerable: true, get: function () { return messages_1.RequestType7; } });\nObject.defineProperty(exports, \"RequestType8\", { enumerable: true, get: function () { return messages_1.RequestType8; } });\nObject.defineProperty(exports, \"RequestType9\", { enumerable: true, get: function () { return messages_1.RequestType9; } });\nObject.defineProperty(exports, \"ResponseError\", { enumerable: true, get: function () { return messages_1.ResponseError; } });\nObject.defineProperty(exports, \"ErrorCodes\", { enumerable: true, get: function () { return messages_1.ErrorCodes; } });\nObject.defineProperty(exports, \"NotificationType\", { enumerable: true, get: function () { return messages_1.NotificationType; } });\nObject.defineProperty(exports, \"NotificationType0\", { enumerable: true, get: function () { return messages_1.NotificationType0; } });\nObject.defineProperty(exports, \"NotificationType1\", { enumerable: true, get: function () { return messages_1.NotificationType1; } });\nObject.defineProperty(exports, \"NotificationType2\", { enumerable: true, get: function () { return messages_1.NotificationType2; } });\nObject.defineProperty(exports, \"NotificationType3\", { enumerable: true, get: function () { return messages_1.NotificationType3; } });\nObject.defineProperty(exports, \"NotificationType4\", { enumerable: true, get: function () { return messages_1.NotificationType4; } });\nObject.defineProperty(exports, \"NotificationType5\", { enumerable: true, get: function () { return messages_1.NotificationType5; } });\nObject.defineProperty(exports, \"NotificationType6\", { enumerable: true, get: function () { return messages_1.NotificationType6; } });\nObject.defineProperty(exports, \"NotificationType7\", { enumerable: true, get: function () { return messages_1.NotificationType7; } });\nObject.defineProperty(exports, \"NotificationType8\", { enumerable: true, get: function () { return messages_1.NotificationType8; } });\nObject.defineProperty(exports, \"NotificationType9\", { enumerable: true, get: function () { return messages_1.NotificationType9; } });\nObject.defineProperty(exports, \"ParameterStructures\", { enumerable: true, get: function () { return messages_1.ParameterStructures; } });\nconst linkedMap_1 = require(\"./linkedMap\");\nObject.defineProperty(exports, \"LinkedMap\", { enumerable: true, get: function () { return linkedMap_1.LinkedMap; } });\nObject.defineProperty(exports, \"LRUCache\", { enumerable: true, get: function () { return linkedMap_1.LRUCache; } });\nObject.defineProperty(exports, \"Touch\", { enumerable: true, get: function () { return linkedMap_1.Touch; } });\nconst disposable_1 = require(\"./disposable\");\nObject.defineProperty(exports, \"Disposable\", { enumerable: true, get: function () { return disposable_1.Disposable; } });\nconst events_1 = require(\"./events\");\nObject.defineProperty(exports, \"Event\", { enumerable: true, get: function () { return events_1.Event; } });\nObject.defineProperty(exports, \"Emitter\", { enumerable: true, get: function () { return events_1.Emitter; } });\nconst cancellation_1 = require(\"./cancellation\");\nObject.defineProperty(exports, \"CancellationTokenSource\", { enumerable: true, get: function () { return cancellation_1.CancellationTokenSource; } });\nObject.defineProperty(exports, \"CancellationToken\", { enumerable: true, get: function () { return cancellation_1.CancellationToken; } });\nconst sharedArrayCancellation_1 = require(\"./sharedArrayCancellation\");\nObject.defineProperty(exports, \"SharedArraySenderStrategy\", { enumerable: true, get: function () { return sharedArrayCancellation_1.SharedArraySenderStrategy; } });\nObject.defineProperty(exports, \"SharedArrayReceiverStrategy\", { enumerable: true, get: function () { return sharedArrayCancellation_1.SharedArrayReceiverStrategy; } });\nconst messageReader_1 = require(\"./messageReader\");\nObject.defineProperty(exports, \"MessageReader\", { enumerable: true, get: function () { return messageReader_1.MessageReader; } });\nObject.defineProperty(exports, \"AbstractMessageReader\", { enumerable: true, get: function () { return messageReader_1.AbstractMessageReader; } });\nObject.defineProperty(exports, \"ReadableStreamMessageReader\", { enumerable: true, get: function () { return messageReader_1.ReadableStreamMessageReader; } });\nconst messageWriter_1 = require(\"./messageWriter\");\nObject.defineProperty(exports, \"MessageWriter\", { enumerable: true, get: function () { return messageWriter_1.MessageWriter; } });\nObject.defineProperty(exports, \"AbstractMessageWriter\", { enumerable: true, get: function () { return messageWriter_1.AbstractMessageWriter; } });\nObject.defineProperty(exports, \"WriteableStreamMessageWriter\", { enumerable: true, get: function () { return messageWriter_1.WriteableStreamMessageWriter; } });\nconst messageBuffer_1 = require(\"./messageBuffer\");\nObject.defineProperty(exports, \"AbstractMessageBuffer\", { enumerable: true, get: function () { return messageBuffer_1.AbstractMessageBuffer; } });\nconst connection_1 = require(\"./connection\");\nObject.defineProperty(exports, \"ConnectionStrategy\", { enumerable: true, get: function () { return connection_1.ConnectionStrategy; } });\nObject.defineProperty(exports, \"ConnectionOptions\", { enumerable: true, get: function () { return connection_1.ConnectionOptions; } });\nObject.defineProperty(exports, \"NullLogger\", { enumerable: true, get: function () { return connection_1.NullLogger; } });\nObject.defineProperty(exports, \"createMessageConnection\", { enumerable: true, get: function () { return connection_1.createMessageConnection; } });\nObject.defineProperty(exports, \"ProgressToken\", { enumerable: true, get: function () { return connection_1.ProgressToken; } });\nObject.defineProperty(exports, \"ProgressType\", { enumerable: true, get: function () { return connection_1.ProgressType; } });\nObject.defineProperty(exports, \"Trace\", { enumerable: true, get: function () { return connection_1.Trace; } });\nObject.defineProperty(exports, \"TraceValues\", { enumerable: true, get: function () { return connection_1.TraceValues; } });\nObject.defineProperty(exports, \"TraceFormat\", { enumerable: true, get: function () { return connection_1.TraceFormat; } });\nObject.defineProperty(exports, \"SetTraceNotification\", { enumerable: true, get: function () { return connection_1.SetTraceNotification; } });\nObject.defineProperty(exports, \"LogTraceNotification\", { enumerable: true, get: function () { return connection_1.LogTraceNotification; } });\nObject.defineProperty(exports, \"ConnectionErrors\", { enumerable: true, get: function () { return connection_1.ConnectionErrors; } });\nObject.defineProperty(exports, \"ConnectionError\", { enumerable: true, get: function () { return connection_1.ConnectionError; } });\nObject.defineProperty(exports, \"CancellationReceiverStrategy\", { enumerable: true, get: function () { return connection_1.CancellationReceiverStrategy; } });\nObject.defineProperty(exports, \"CancellationSenderStrategy\", { enumerable: true, get: function () { return connection_1.CancellationSenderStrategy; } });\nObject.defineProperty(exports, \"CancellationStrategy\", { enumerable: true, get: function () { return connection_1.CancellationStrategy; } });\nObject.defineProperty(exports, \"MessageStrategy\", { enumerable: true, get: function () { return connection_1.MessageStrategy; } });\nconst ral_1 = require(\"./ral\");\nexports.RAL = ral_1.default;\n","\"use strict\";\n/* --------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n * ------------------------------------------------------------------------------------------ */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst util_1 = require(\"util\");\nconst api_1 = require(\"../common/api\");\nclass MessageBuffer extends api_1.AbstractMessageBuffer {\n constructor(encoding = 'utf-8') {\n super(encoding);\n }\n emptyBuffer() {\n return MessageBuffer.emptyBuffer;\n }\n fromString(value, encoding) {\n return Buffer.from(value, encoding);\n }\n toString(value, encoding) {\n if (value instanceof Buffer) {\n return value.toString(encoding);\n }\n else {\n return new util_1.TextDecoder(encoding).decode(value);\n }\n }\n asNative(buffer, length) {\n if (length === undefined) {\n return buffer instanceof Buffer ? buffer : Buffer.from(buffer);\n }\n else {\n return buffer instanceof Buffer ? buffer.slice(0, length) : Buffer.from(buffer, 0, length);\n }\n }\n allocNative(length) {\n return Buffer.allocUnsafe(length);\n }\n}\nMessageBuffer.emptyBuffer = Buffer.allocUnsafe(0);\nclass ReadableStreamWrapper {\n constructor(stream) {\n this.stream = stream;\n }\n onClose(listener) {\n this.stream.on('close', listener);\n return api_1.Disposable.create(() => this.stream.off('close', listener));\n }\n onError(listener) {\n this.stream.on('error', listener);\n return api_1.Disposable.create(() => this.stream.off('error', listener));\n }\n onEnd(listener) {\n this.stream.on('end', listener);\n return api_1.Disposable.create(() => this.stream.off('end', listener));\n }\n onData(listener) {\n this.stream.on('data', listener);\n return api_1.Disposable.create(() => this.stream.off('data', listener));\n }\n}\nclass WritableStreamWrapper {\n constructor(stream) {\n this.stream = stream;\n }\n onClose(listener) {\n this.stream.on('close', listener);\n return api_1.Disposable.create(() => this.stream.off('close', listener));\n }\n onError(listener) {\n this.stream.on('error', listener);\n return api_1.Disposable.create(() => this.stream.off('error', listener));\n }\n onEnd(listener) {\n this.stream.on('end', listener);\n return api_1.Disposable.create(() => this.stream.off('end', listener));\n }\n write(data, encoding) {\n return new Promise((resolve, reject) => {\n const callback = (error) => {\n if (error === undefined || error === null) {\n resolve();\n }\n else {\n reject(error);\n }\n };\n if (typeof data === 'string') {\n this.stream.write(data, encoding, callback);\n }\n else {\n this.stream.write(data, callback);\n }\n });\n }\n end() {\n this.stream.end();\n }\n}\nconst _ril = Object.freeze({\n messageBuffer: Object.freeze({\n create: (encoding) => new MessageBuffer(encoding)\n }),\n applicationJson: Object.freeze({\n encoder: Object.freeze({\n name: 'application/json',\n encode: (msg, options) => {\n try {\n return Promise.resolve(Buffer.from(JSON.stringify(msg, undefined, 0), options.charset));\n }\n catch (err) {\n return Promise.reject(err);\n }\n }\n }),\n decoder: Object.freeze({\n name: 'application/json',\n decode: (buffer, options) => {\n try {\n if (buffer instanceof Buffer) {\n return Promise.resolve(JSON.parse(buffer.toString(options.charset)));\n }\n else {\n return Promise.resolve(JSON.parse(new util_1.TextDecoder(options.charset).decode(buffer)));\n }\n }\n catch (err) {\n return Promise.reject(err);\n }\n }\n })\n }),\n stream: Object.freeze({\n asReadableStream: (stream) => new ReadableStreamWrapper(stream),\n asWritableStream: (stream) => new WritableStreamWrapper(stream)\n }),\n console: console,\n timer: Object.freeze({\n setTimeout(callback, ms, ...args) {\n const handle = setTimeout(callback, ms, ...args);\n return { dispose: () => clearTimeout(handle) };\n },\n setImmediate(callback, ...args) {\n const handle = setImmediate(callback, ...args);\n return { dispose: () => clearImmediate(handle) };\n },\n setInterval(callback, ms, ...args) {\n const handle = setInterval(callback, ms, ...args);\n return { dispose: () => clearInterval(handle) };\n }\n })\n});\nfunction RIL() {\n return _ril;\n}\n(function (RIL) {\n function install() {\n api_1.RAL.install(_ril);\n }\n RIL.install = install;\n})(RIL || (RIL = {}));\nexports.default = RIL;\n","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.createMessageConnection = exports.createServerSocketTransport = exports.createClientSocketTransport = exports.createServerPipeTransport = exports.createClientPipeTransport = exports.generateRandomPipeName = exports.StreamMessageWriter = exports.StreamMessageReader = exports.SocketMessageWriter = exports.SocketMessageReader = exports.PortMessageWriter = exports.PortMessageReader = exports.IPCMessageWriter = exports.IPCMessageReader = void 0;\n/* --------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n * ----------------------------------------------------------------------------------------- */\nconst ril_1 = require(\"./ril\");\n// Install the node runtime abstract.\nril_1.default.install();\nconst path = require(\"path\");\nconst os = require(\"os\");\nconst crypto_1 = require(\"crypto\");\nconst net_1 = require(\"net\");\nconst api_1 = require(\"../common/api\");\n__exportStar(require(\"../common/api\"), exports);\nclass IPCMessageReader extends api_1.AbstractMessageReader {\n constructor(process) {\n super();\n this.process = process;\n let eventEmitter = this.process;\n eventEmitter.on('error', (error) => this.fireError(error));\n eventEmitter.on('close', () => this.fireClose());\n }\n listen(callback) {\n this.process.on('message', callback);\n return api_1.Disposable.create(() => this.process.off('message', callback));\n }\n}\nexports.IPCMessageReader = IPCMessageReader;\nclass IPCMessageWriter extends api_1.AbstractMessageWriter {\n constructor(process) {\n super();\n this.process = process;\n this.errorCount = 0;\n const eventEmitter = this.process;\n eventEmitter.on('error', (error) => this.fireError(error));\n eventEmitter.on('close', () => this.fireClose);\n }\n write(msg) {\n try {\n if (typeof this.process.send === 'function') {\n this.process.send(msg, undefined, undefined, (error) => {\n if (error) {\n this.errorCount++;\n this.handleError(error, msg);\n }\n else {\n this.errorCount = 0;\n }\n });\n }\n return Promise.resolve();\n }\n catch (error) {\n this.handleError(error, msg);\n return Promise.reject(error);\n }\n }\n handleError(error, msg) {\n this.errorCount++;\n this.fireError(error, msg, this.errorCount);\n }\n end() {\n }\n}\nexports.IPCMessageWriter = IPCMessageWriter;\nclass PortMessageReader extends api_1.AbstractMessageReader {\n constructor(port) {\n super();\n this.onData = new api_1.Emitter;\n port.on('close', () => this.fireClose);\n port.on('error', (error) => this.fireError(error));\n port.on('message', (message) => {\n this.onData.fire(message);\n });\n }\n listen(callback) {\n return this.onData.event(callback);\n }\n}\nexports.PortMessageReader = PortMessageReader;\nclass PortMessageWriter extends api_1.AbstractMessageWriter {\n constructor(port) {\n super();\n this.port = port;\n this.errorCount = 0;\n port.on('close', () => this.fireClose());\n port.on('error', (error) => this.fireError(error));\n }\n write(msg) {\n try {\n this.port.postMessage(msg);\n return Promise.resolve();\n }\n catch (error) {\n this.handleError(error, msg);\n return Promise.reject(error);\n }\n }\n handleError(error, msg) {\n this.errorCount++;\n this.fireError(error, msg, this.errorCount);\n }\n end() {\n }\n}\nexports.PortMessageWriter = PortMessageWriter;\nclass SocketMessageReader extends api_1.ReadableStreamMessageReader {\n constructor(socket, encoding = 'utf-8') {\n super((0, ril_1.default)().stream.asReadableStream(socket), encoding);\n }\n}\nexports.SocketMessageReader = SocketMessageReader;\nclass SocketMessageWriter extends api_1.WriteableStreamMessageWriter {\n constructor(socket, options) {\n super((0, ril_1.default)().stream.asWritableStream(socket), options);\n this.socket = socket;\n }\n dispose() {\n super.dispose();\n this.socket.destroy();\n }\n}\nexports.SocketMessageWriter = SocketMessageWriter;\nclass StreamMessageReader extends api_1.ReadableStreamMessageReader {\n constructor(readable, encoding) {\n super((0, ril_1.default)().stream.asReadableStream(readable), encoding);\n }\n}\nexports.StreamMessageReader = StreamMessageReader;\nclass StreamMessageWriter extends api_1.WriteableStreamMessageWriter {\n constructor(writable, options) {\n super((0, ril_1.default)().stream.asWritableStream(writable), options);\n }\n}\nexports.StreamMessageWriter = StreamMessageWriter;\nconst XDG_RUNTIME_DIR = process.env['XDG_RUNTIME_DIR'];\nconst safeIpcPathLengths = new Map([\n ['linux', 107],\n ['darwin', 103]\n]);\nfunction generateRandomPipeName() {\n const randomSuffix = (0, crypto_1.randomBytes)(21).toString('hex');\n if (process.platform === 'win32') {\n return `\\\\\\\\.\\\\pipe\\\\vscode-jsonrpc-${randomSuffix}-sock`;\n }\n let result;\n if (XDG_RUNTIME_DIR) {\n result = path.join(XDG_RUNTIME_DIR, `vscode-ipc-${randomSuffix}.sock`);\n }\n else {\n result = path.join(os.tmpdir(), `vscode-${randomSuffix}.sock`);\n }\n const limit = safeIpcPathLengths.get(process.platform);\n if (limit !== undefined && result.length > limit) {\n (0, ril_1.default)().console.warn(`WARNING: IPC handle \"${result}\" is longer than ${limit} characters.`);\n }\n return result;\n}\nexports.generateRandomPipeName = generateRandomPipeName;\nfunction createClientPipeTransport(pipeName, encoding = 'utf-8') {\n let connectResolve;\n const connected = new Promise((resolve, _reject) => {\n connectResolve = resolve;\n });\n return new Promise((resolve, reject) => {\n let server = (0, net_1.createServer)((socket) => {\n server.close();\n connectResolve([\n new SocketMessageReader(socket, encoding),\n new SocketMessageWriter(socket, encoding)\n ]);\n });\n server.on('error', reject);\n server.listen(pipeName, () => {\n server.removeListener('error', reject);\n resolve({\n onConnected: () => { return connected; }\n });\n });\n });\n}\nexports.createClientPipeTransport = createClientPipeTransport;\nfunction createServerPipeTransport(pipeName, encoding = 'utf-8') {\n const socket = (0, net_1.createConnection)(pipeName);\n return [\n new SocketMessageReader(socket, encoding),\n new SocketMessageWriter(socket, encoding)\n ];\n}\nexports.createServerPipeTransport = createServerPipeTransport;\nfunction createClientSocketTransport(port, encoding = 'utf-8') {\n let connectResolve;\n const connected = new Promise((resolve, _reject) => {\n connectResolve = resolve;\n });\n return new Promise((resolve, reject) => {\n const server = (0, net_1.createServer)((socket) => {\n server.close();\n connectResolve([\n new SocketMessageReader(socket, encoding),\n new SocketMessageWriter(socket, encoding)\n ]);\n });\n server.on('error', reject);\n server.listen(port, '127.0.0.1', () => {\n server.removeListener('error', reject);\n resolve({\n onConnected: () => { return connected; }\n });\n });\n });\n}\nexports.createClientSocketTransport = createClientSocketTransport;\nfunction createServerSocketTransport(port, encoding = 'utf-8') {\n const socket = (0, net_1.createConnection)(port, '127.0.0.1');\n return [\n new SocketMessageReader(socket, encoding),\n new SocketMessageWriter(socket, encoding)\n ];\n}\nexports.createServerSocketTransport = createServerSocketTransport;\nfunction isReadableStream(value) {\n const candidate = value;\n return candidate.read !== undefined && candidate.addListener !== undefined;\n}\nfunction isWritableStream(value) {\n const candidate = value;\n return candidate.write !== undefined && candidate.addListener !== undefined;\n}\nfunction createMessageConnection(input, output, logger, options) {\n if (!logger) {\n logger = api_1.NullLogger;\n }\n const reader = isReadableStream(input) ? new StreamMessageReader(input) : input;\n const writer = isWritableStream(output) ? new StreamMessageWriter(output) : output;\n if (api_1.ConnectionStrategy.is(options)) {\n options = { connectionStrategy: options };\n }\n return (0, api_1.createMessageConnection)(reader, writer, logger, options);\n}\nexports.createMessageConnection = createMessageConnection;\n","/* --------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n * ----------------------------------------------------------------------------------------- */\n'use strict';\n\nmodule.exports = require('./lib/node/main');","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.openConnection = exports.hasMinimumVersion = exports.getFileReferencesRequestType = exports.getDeploymentGraphRequestType = exports.getMetadataRequestType = exports.compileParamsRequestType = exports.compileRequestType = exports.versionRequestType = void 0;\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nconst path_1 = __importDefault(require(\"path\"));\nconst os_1 = __importDefault(require(\"os\"));\nconst child_process_1 = require(\"child_process\");\nconst crypto_1 = require(\"crypto\");\nconst net_1 = require(\"net\");\nconst node_1 = require(\"vscode-jsonrpc/node\");\nexports.versionRequestType = new node_1.RequestType(\"bicep/version\");\nexports.compileRequestType = new node_1.RequestType(\"bicep/compile\");\nexports.compileParamsRequestType = new node_1.RequestType(\"bicep/compileParams\");\nexports.getMetadataRequestType = new node_1.RequestType(\"bicep/getMetadata\");\nexports.getDeploymentGraphRequestType = new node_1.RequestType(\"bicep/getDeploymentGraph\");\nexports.getFileReferencesRequestType = new node_1.RequestType(\"bicep/getFileReferences\");\nfunction hasMinimumVersion(version) {\n const minimumVersion = '0.25.3';\n const compareResult = version.localeCompare(minimumVersion, undefined, { numeric: true, sensitivity: 'base' });\n return {\n success: compareResult >= 0,\n minimumVersion\n };\n}\nexports.hasMinimumVersion = hasMinimumVersion;\nfunction tryGetVersionNumberError(bicepPath) {\n const result = (0, child_process_1.spawnSync)(bicepPath, [\"--version\"], { encoding: \"utf-8\" });\n if (result.status !== 0) {\n return `Failed to obtain valid Bicep version from '${bicepPath} --version'`;\n }\n const versionMatch = result.stdout.match(/Bicep CLI version ([^ ]+) /);\n if (!versionMatch) {\n return `Failed to obtain valid Bicep version from '${bicepPath} --version'`;\n }\n const actualVersion = versionMatch[1];\n const { success, minimumVersion } = hasMinimumVersion(actualVersion);\n if (!success) {\n return `A minimum Bicep version of ${minimumVersion} is required. Detected version ${actualVersion} from '${bicepPath} --version'`;\n }\n return;\n}\nfunction generateRandomPipeName() {\n const randomSuffix = (0, crypto_1.randomBytes)(21).toString(\"hex\");\n if (process.platform === \"win32\") {\n return `\\\\\\\\.\\\\pipe\\\\bicep-${randomSuffix}-sock`;\n }\n return path_1.default.join(os_1.default.tmpdir(), `bicep-${randomSuffix}.sock`);\n}\nfunction connectClientPipe(pipeName, process) {\n return new Promise((resolve, reject) => {\n const handleConnectionError = () => {\n server.close();\n reject();\n };\n const server = (0, net_1.createServer)(socket => {\n process.removeListener('exit', handleConnectionError);\n server.close();\n resolve([\n new node_1.SocketMessageReader(socket, 'utf-8'),\n new node_1.SocketMessageWriter(socket, 'utf-8')\n ]);\n });\n process.on('exit', handleConnectionError);\n process.on('error', handleConnectionError);\n server.on('error', handleConnectionError);\n server.listen(pipeName, () => server.removeListener('error', handleConnectionError));\n });\n}\nasync function openConnection(bicepPath) {\n const pipePath = generateRandomPipeName();\n const process = (0, child_process_1.spawn)(bicepPath, [\"jsonrpc\", \"--pipe\", pipePath]);\n let stderr = '';\n process.stderr.on(\"data\", (x) => stderr += x.toString());\n const processExitedEarly = new Promise((_, reject) => {\n process.on(\"error\", (err) => {\n reject(`Failed to invoke '${bicepPath} jsonrpc'. Error: ${err}`);\n });\n process.on(\"exit\", () => {\n const error = tryGetVersionNumberError(bicepPath);\n if (error) {\n reject(error);\n }\n else {\n reject(`Failed to invoke '${bicepPath} jsonrpc'. Error: ${stderr}`);\n }\n });\n });\n const transportConnected = connectClientPipe(pipePath, process);\n const result = await Promise.race([\n transportConnected,\n processExitedEarly,\n ]);\n const [reader, writer] = result;\n const connection = (0, node_1.createMessageConnection)(reader, writer, console);\n connection.onDispose(() => process.kill());\n process.on(\"exit\", () => connection.dispose());\n connection.listen();\n return connection;\n}\nexports.openConnection = openConnection;\n//# sourceMappingURL=jsonrpc.js.map","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Bicep = void 0;\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nconst os_1 = __importDefault(require(\"os\"));\nconst install_1 = require(\"./install\");\nconst jsonrpc_1 = require(\"./jsonrpc\");\n/**\n * Helper class to install and interact with the Bicep CLI.\n */\nclass Bicep {\n constructor(connection) {\n this.connection = connection;\n }\n /**\n * Initializes the Bicep library with a connection to the Bicep CLI.\n *\n * @param bicepPath The path to the Bicep CLI. You can point this to an existing install, or use `Bicep.install()` to obtain this path.\n * @returns A `Bicep` instance.\n */\n static async initialize(bicepPath) {\n const connection = await (0, jsonrpc_1.openConnection)(bicepPath);\n const bicep = new Bicep(connection);\n try {\n const version = await bicep.version();\n const { success, minimumVersion } = (0, jsonrpc_1.hasMinimumVersion)(version);\n if (!success) {\n throw new Error(`Bicep CLI version ${version} is not supported. Please install version ${minimumVersion} or later.`);\n }\n return bicep;\n }\n catch (e) {\n bicep.dispose();\n throw e;\n }\n }\n /**\n * Returns the Bicep CLI download URL.\n *\n * @param version The version of the Bicep CLI to download. Defaults to the latest version.\n * @param platform The platform to download for. Defaults to `os.platform()`.\n * @param arch The architecture to download for. Defaults to `os.arch()`.\n * @returns The download URL.\n */\n static async getDownloadUrl(version, platform, arch) {\n platform !== null && platform !== void 0 ? platform : (platform = os_1.default.platform());\n arch !== null && arch !== void 0 ? arch : (arch = os_1.default.arch());\n return await (0, install_1.getBicepCliDownloadUrl)(platform, arch, version);\n }\n /**\n * Downloads the Bicep CLI to the specified path.\n *\n * @param basePath The file system path to download the Bicep CLI to. This path must already exist.\n * @param version The version of the Bicep CLI to download. Defaults to the latest version.\n * @param platform The platform to download for. Defaults to `os.platform()`.\n * @param arch The architecture to download for. Defaults to `os.arch()`.\n * @returns The path to the Bicep CLI.\n */\n static async install(basePath, version, platform, arch) {\n platform !== null && platform !== void 0 ? platform : (platform = os_1.default.platform());\n arch !== null && arch !== void 0 ? arch : (arch = os_1.default.arch());\n return await (0, install_1.installBicepCliWithArch)(basePath, platform, arch, version);\n }\n /**\n * Gets the version of the Bicep CLI.\n *\n * @returns The version.\n */\n async version() {\n const response = await this.connection.sendRequest(jsonrpc_1.versionRequestType, {});\n return response.version;\n }\n /**\n * Compiles a Bicep file.\n *\n * @param request The compilation request.\n * @returns The compilation response.\n */\n async compile(request) {\n return await this.connection.sendRequest(jsonrpc_1.compileRequestType, request);\n }\n /**\n * Compiles a Bicepparam file.\n *\n * @param request The compilation request.\n * @returns The compilation response.\n */\n async compileParams(request) {\n return await this.connection.sendRequest(jsonrpc_1.compileParamsRequestType, request);\n }\n /**\n * Returns metadata for a Bicep file.\n *\n * @param request The getMetadata request.\n * @returns The getMetadata response.\n */\n async getMetadata(request) {\n return await this.connection.sendRequest(jsonrpc_1.getMetadataRequestType, request);\n }\n /**\n * Returns the deployment graph for a Bicep file.\n *\n * @param request The getDeploymentGraph request.\n * @returns The getDeploymentGraph response.\n */\n async getDeploymentGraph(request) {\n return await this.connection.sendRequest(jsonrpc_1.getDeploymentGraphRequestType, request);\n }\n /**\n * Returns file references for a Bicep file.\n *\n * @param request The getFileReferences request.\n * @returns The getFileReferences response.\n */\n async getFileReferences(request) {\n return await this.connection.sendRequest(jsonrpc_1.getFileReferencesRequestType, request);\n }\n /**\n * Disposes of the connection to the Bicep CLI. This MUST be called after usage to avoid leaving the process running.\n */\n dispose() {\n this.connection.dispose();\n }\n}\nexports.Bicep = Bicep;\n//# sourceMappingURL=bicep.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n//# sourceMappingURL=types.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./utils/bicep\"), exports);\n__exportStar(require(\"./utils/types\"), exports);\n//# sourceMappingURL=index.js.map","/******************************************************************************\nCopyright (c) Microsoft Corporation.\n\nPermission to use, copy, modify, and/or distribute this software for any\npurpose with or without fee is hereby granted.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\nPERFORMANCE OF THIS SOFTWARE.\n***************************************************************************** */\n/* global Reflect, Promise, SuppressedError, Symbol, Iterator */\n\nvar extendStatics = function(d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n};\n\nexport function __extends(d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n}\n\nexport var __assign = function() {\n __assign = Object.assign || function __assign(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n }\n return __assign.apply(this, arguments);\n}\n\nexport function __rest(s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n}\n\nexport function __decorate(decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n}\n\nexport function __param(paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n}\n\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\n var _, done = false;\n for (var i = decorators.length - 1; i >= 0; i--) {\n var context = {};\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\n if (kind === \"accessor\") {\n if (result === void 0) continue;\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\n if (_ = accept(result.get)) descriptor.get = _;\n if (_ = accept(result.set)) descriptor.set = _;\n if (_ = accept(result.init)) initializers.unshift(_);\n }\n else if (_ = accept(result)) {\n if (kind === \"field\") initializers.unshift(_);\n else descriptor[key] = _;\n }\n }\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\n done = true;\n};\n\nexport function __runInitializers(thisArg, initializers, value) {\n var useValue = arguments.length > 2;\n for (var i = 0; i < initializers.length; i++) {\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\n }\n return useValue ? value : void 0;\n};\n\nexport function __propKey(x) {\n return typeof x === \"symbol\" ? x : \"\".concat(x);\n};\n\nexport function __setFunctionName(f, name, prefix) {\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\n};\n\nexport function __metadata(metadataKey, metadataValue) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\n}\n\nexport function __awaiter(thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n}\n\nexport function __generator(thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === \"function\" ? Iterator : Object).prototype);\n return g.next = verb(0), g[\"throw\"] = verb(1), g[\"return\"] = verb(2), typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n}\n\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n});\n\nexport function __exportStar(m, o) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\n}\n\nexport function __values(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n}\n\nexport function __read(o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n}\n\n/** @deprecated */\nexport function __spread() {\n for (var ar = [], i = 0; i < arguments.length; i++)\n ar = ar.concat(__read(arguments[i]));\n return ar;\n}\n\n/** @deprecated */\nexport function __spreadArrays() {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n r[k] = a[j];\n return r;\n}\n\nexport function __spreadArray(to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n}\n\nexport function __await(v) {\n return this instanceof __await ? (this.v = v, this) : new __await(v);\n}\n\nexport function __asyncGenerator(thisArg, _arguments, generator) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\n return i = Object.create((typeof AsyncIterator === \"function\" ? AsyncIterator : Object).prototype), verb(\"next\"), verb(\"throw\"), verb(\"return\", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i;\n function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; }\n function verb(n, f) { if (g[n]) { i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } }\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\n function fulfill(value) { resume(\"next\", value); }\n function reject(value) { resume(\"throw\", value); }\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\n}\n\nexport function __asyncDelegator(o) {\n var i, p;\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\n}\n\nexport function __asyncValues(o) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var m = o[Symbol.asyncIterator], i;\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\n}\n\nexport function __makeTemplateObject(cooked, raw) {\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\n return cooked;\n};\n\nvar __setModuleDefault = Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n};\n\nvar ownKeys = function(o) {\n ownKeys = Object.getOwnPropertyNames || function (o) {\n var ar = [];\n for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;\n return ar;\n };\n return ownKeys(o);\n};\n\nexport function __importStar(mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== \"default\") __createBinding(result, mod, k[i]);\n __setModuleDefault(result, mod);\n return result;\n}\n\nexport function __importDefault(mod) {\n return (mod && mod.__esModule) ? mod : { default: mod };\n}\n\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n}\n\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n}\n\nexport function __classPrivateFieldIn(state, receiver) {\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\n}\n\nexport function __addDisposableResource(env, value, async) {\n if (value !== null && value !== void 0) {\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\n var dispose, inner;\n if (async) {\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\n dispose = value[Symbol.asyncDispose];\n }\n if (dispose === void 0) {\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\n dispose = value[Symbol.dispose];\n if (async) inner = dispose;\n }\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\n if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };\n env.stack.push({ value: value, dispose: dispose, async: async });\n }\n else if (async) {\n env.stack.push({ async: true });\n }\n return value;\n}\n\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\n var e = new Error(message);\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\n};\n\nexport function __disposeResources(env) {\n function fail(e) {\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\n env.hasError = true;\n }\n var r, s = 0;\n function next() {\n while (r = env.stack.pop()) {\n try {\n if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next);\n if (r.dispose) {\n var result = r.dispose.call(r.value);\n if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\n }\n else s |= 1;\n }\n catch (e) {\n fail(e);\n }\n }\n if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve();\n if (env.hasError) throw env.error;\n }\n return next();\n}\n\nexport function __rewriteRelativeImportExtension(path, preserveJsx) {\n if (typeof path === \"string\" && /^\\.\\.?\\//.test(path)) {\n return path.replace(/\\.(tsx)$|((?:\\.d)?)((?:\\.[^./]+?)?)\\.([cm]?)ts$/i, function (m, tsx, d, ext, cm) {\n return tsx ? preserveJsx ? \".jsx\" : \".js\" : d && (!ext || !cm) ? m : (d + ext + \".\" + cm.toLowerCase() + \"js\");\n });\n }\n return path;\n}\n\nexport default {\n __extends,\n __assign,\n __rest,\n __decorate,\n __param,\n __esDecorate,\n __runInitializers,\n __propKey,\n __setFunctionName,\n __metadata,\n __awaiter,\n __generator,\n __createBinding,\n __exportStar,\n __values,\n __read,\n __spread,\n __spreadArrays,\n __spreadArray,\n __await,\n __asyncGenerator,\n __asyncDelegator,\n __asyncValues,\n __makeTemplateObject,\n __importStar,\n __importDefault,\n __classPrivateFieldGet,\n __classPrivateFieldSet,\n __classPrivateFieldIn,\n __addDisposableResource,\n __disposeResources,\n __rewriteRelativeImportExtension,\n};\n","\"use strict\";\n/*\n * Copyright (c) Microsoft Corporation.\n * Licensed under the MIT License.\n *\n * Code generated by Microsoft (R) AutoRest Code Generator.\n * Changes may cause incorrect behavior and will be lost if the code is regenerated.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getContinuationToken = getContinuationToken;\nexports.setContinuationToken = setContinuationToken;\nconst pageMap = new WeakMap();\n/**\n * Given the last `.value` produced by the `byPage` iterator,\n * returns a continuation token that can be used to begin paging from\n * that point later.\n * @param page An object from accessing `value` on the IteratorResult from a `byPage` iterator.\n * @returns The continuation token that can be passed into byPage() during future calls.\n */\nfunction getContinuationToken(page) {\n var _a;\n if (typeof page !== \"object\" || page === null) {\n return undefined;\n }\n return (_a = pageMap.get(page)) === null || _a === void 0 ? void 0 : _a.continuationToken;\n}\nfunction setContinuationToken(page, continuationToken) {\n var _a;\n if (typeof page !== \"object\" || page === null || !continuationToken) {\n return;\n }\n const pageInfo = (_a = pageMap.get(page)) !== null && _a !== void 0 ? _a : {};\n pageInfo.continuationToken = continuationToken;\n pageMap.set(page, pageInfo);\n}\n//# sourceMappingURL=pagingHelper.js.map","\"use strict\";\n/*\n * Copyright (c) Microsoft Corporation.\n * Licensed under the MIT License.\n *\n * Code generated by Microsoft (R) AutoRest Code Generator.\n * Changes may cause incorrect behavior and will be lost if the code is regenerated.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.KnownTagsPatchOperation = exports.KnownExportTemplateOutputFormat = exports.KnownExtendedLocationType = exports.KnownLevel = exports.KnownProviderAuthorizationConsentState = exports.KnownAliasPathAttributes = exports.KnownAliasPathTokenType = exports.KnownProvisioningState = exports.KnownValidationLevel = exports.KnownExpressionEvaluationOptionsScopeType = exports.KnownExtensionConfigPropertyType = void 0;\n/** Known values of {@link ExtensionConfigPropertyType} that the service accepts. */\nvar KnownExtensionConfigPropertyType;\n(function (KnownExtensionConfigPropertyType) {\n /** Property type representing a string value. */\n KnownExtensionConfigPropertyType[\"String\"] = \"String\";\n /** Property type representing an integer value. */\n KnownExtensionConfigPropertyType[\"Int\"] = \"Int\";\n /** Property type representing a boolean value. */\n KnownExtensionConfigPropertyType[\"Bool\"] = \"Bool\";\n /** Property type representing an array value. */\n KnownExtensionConfigPropertyType[\"Array\"] = \"Array\";\n /** Property type representing an object value. */\n KnownExtensionConfigPropertyType[\"Object\"] = \"Object\";\n /** Property type representing a secure string value. */\n KnownExtensionConfigPropertyType[\"SecureString\"] = \"SecureString\";\n /** Property type representing a secure object value. */\n KnownExtensionConfigPropertyType[\"SecureObject\"] = \"SecureObject\";\n})(KnownExtensionConfigPropertyType || (exports.KnownExtensionConfigPropertyType = KnownExtensionConfigPropertyType = {}));\n/** Known values of {@link ExpressionEvaluationOptionsScopeType} that the service accepts. */\nvar KnownExpressionEvaluationOptionsScopeType;\n(function (KnownExpressionEvaluationOptionsScopeType) {\n /** NotSpecified */\n KnownExpressionEvaluationOptionsScopeType[\"NotSpecified\"] = \"NotSpecified\";\n /** Outer */\n KnownExpressionEvaluationOptionsScopeType[\"Outer\"] = \"Outer\";\n /** Inner */\n KnownExpressionEvaluationOptionsScopeType[\"Inner\"] = \"Inner\";\n})(KnownExpressionEvaluationOptionsScopeType || (exports.KnownExpressionEvaluationOptionsScopeType = KnownExpressionEvaluationOptionsScopeType = {}));\n/** Known values of {@link ValidationLevel} that the service accepts. */\nvar KnownValidationLevel;\n(function (KnownValidationLevel) {\n /** Static analysis of the template is performed. */\n KnownValidationLevel[\"Template\"] = \"Template\";\n /** Static analysis of the template is performed and resource declarations are sent to resource providers for semantic validation. Validates that the caller has RBAC write permissions on each resource. */\n KnownValidationLevel[\"Provider\"] = \"Provider\";\n /** Static analysis of the template is performed and resource declarations are sent to resource providers for semantic validation. Skips validating that the caller has RBAC write permissions on each resource. */\n KnownValidationLevel[\"ProviderNoRbac\"] = \"ProviderNoRbac\";\n})(KnownValidationLevel || (exports.KnownValidationLevel = KnownValidationLevel = {}));\n/** Known values of {@link ProvisioningState} that the service accepts. */\nvar KnownProvisioningState;\n(function (KnownProvisioningState) {\n /** NotSpecified */\n KnownProvisioningState[\"NotSpecified\"] = \"NotSpecified\";\n /** Accepted */\n KnownProvisioningState[\"Accepted\"] = \"Accepted\";\n /** Running */\n KnownProvisioningState[\"Running\"] = \"Running\";\n /** Ready */\n KnownProvisioningState[\"Ready\"] = \"Ready\";\n /** Creating */\n KnownProvisioningState[\"Creating\"] = \"Creating\";\n /** Created */\n KnownProvisioningState[\"Created\"] = \"Created\";\n /** Deleting */\n KnownProvisioningState[\"Deleting\"] = \"Deleting\";\n /** Deleted */\n KnownProvisioningState[\"Deleted\"] = \"Deleted\";\n /** Canceled */\n KnownProvisioningState[\"Canceled\"] = \"Canceled\";\n /** Failed */\n KnownProvisioningState[\"Failed\"] = \"Failed\";\n /** Succeeded */\n KnownProvisioningState[\"Succeeded\"] = \"Succeeded\";\n /** Updating */\n KnownProvisioningState[\"Updating\"] = \"Updating\";\n})(KnownProvisioningState || (exports.KnownProvisioningState = KnownProvisioningState = {}));\n/** Known values of {@link AliasPathTokenType} that the service accepts. */\nvar KnownAliasPathTokenType;\n(function (KnownAliasPathTokenType) {\n /** The token type is not specified. */\n KnownAliasPathTokenType[\"NotSpecified\"] = \"NotSpecified\";\n /** The token type can be anything. */\n KnownAliasPathTokenType[\"Any\"] = \"Any\";\n /** The token type is string. */\n KnownAliasPathTokenType[\"String\"] = \"String\";\n /** The token type is object. */\n KnownAliasPathTokenType[\"Object\"] = \"Object\";\n /** The token type is array. */\n KnownAliasPathTokenType[\"Array\"] = \"Array\";\n /** The token type is integer. */\n KnownAliasPathTokenType[\"Integer\"] = \"Integer\";\n /** The token type is number. */\n KnownAliasPathTokenType[\"Number\"] = \"Number\";\n /** The token type is boolean. */\n KnownAliasPathTokenType[\"Boolean\"] = \"Boolean\";\n})(KnownAliasPathTokenType || (exports.KnownAliasPathTokenType = KnownAliasPathTokenType = {}));\n/** Known values of {@link AliasPathAttributes} that the service accepts. */\nvar KnownAliasPathAttributes;\n(function (KnownAliasPathAttributes) {\n /** The token that the alias path is referring to has no attributes. */\n KnownAliasPathAttributes[\"None\"] = \"None\";\n /** The token that the alias path is referring to is modifiable by policies with 'modify' effect. */\n KnownAliasPathAttributes[\"Modifiable\"] = \"Modifiable\";\n})(KnownAliasPathAttributes || (exports.KnownAliasPathAttributes = KnownAliasPathAttributes = {}));\n/** Known values of {@link ProviderAuthorizationConsentState} that the service accepts. */\nvar KnownProviderAuthorizationConsentState;\n(function (KnownProviderAuthorizationConsentState) {\n /** NotSpecified */\n KnownProviderAuthorizationConsentState[\"NotSpecified\"] = \"NotSpecified\";\n /** Required */\n KnownProviderAuthorizationConsentState[\"Required\"] = \"Required\";\n /** NotRequired */\n KnownProviderAuthorizationConsentState[\"NotRequired\"] = \"NotRequired\";\n /** Consented */\n KnownProviderAuthorizationConsentState[\"Consented\"] = \"Consented\";\n})(KnownProviderAuthorizationConsentState || (exports.KnownProviderAuthorizationConsentState = KnownProviderAuthorizationConsentState = {}));\n/** Known values of {@link Level} that the service accepts. */\nvar KnownLevel;\n(function (KnownLevel) {\n /** Warning */\n KnownLevel[\"Warning\"] = \"Warning\";\n /** Info */\n KnownLevel[\"Info\"] = \"Info\";\n /** Error */\n KnownLevel[\"Error\"] = \"Error\";\n})(KnownLevel || (exports.KnownLevel = KnownLevel = {}));\n/** Known values of {@link ExtendedLocationType} that the service accepts. */\nvar KnownExtendedLocationType;\n(function (KnownExtendedLocationType) {\n /** EdgeZone */\n KnownExtendedLocationType[\"EdgeZone\"] = \"EdgeZone\";\n})(KnownExtendedLocationType || (exports.KnownExtendedLocationType = KnownExtendedLocationType = {}));\n/** Known values of {@link ExportTemplateOutputFormat} that the service accepts. */\nvar KnownExportTemplateOutputFormat;\n(function (KnownExportTemplateOutputFormat) {\n /** Json */\n KnownExportTemplateOutputFormat[\"Json\"] = \"Json\";\n /** Bicep */\n KnownExportTemplateOutputFormat[\"Bicep\"] = \"Bicep\";\n})(KnownExportTemplateOutputFormat || (exports.KnownExportTemplateOutputFormat = KnownExportTemplateOutputFormat = {}));\n/** Known values of {@link TagsPatchOperation} that the service accepts. */\nvar KnownTagsPatchOperation;\n(function (KnownTagsPatchOperation) {\n /** The 'replace' option replaces the entire set of existing tags with a new set. */\n KnownTagsPatchOperation[\"Replace\"] = \"Replace\";\n /** The 'merge' option allows adding tags with new names and updating the values of tags with existing names. */\n KnownTagsPatchOperation[\"Merge\"] = \"Merge\";\n /** The 'delete' option allows selectively deleting tags based on given names or name\\/value pairs. */\n KnownTagsPatchOperation[\"Delete\"] = \"Delete\";\n})(KnownTagsPatchOperation || (exports.KnownTagsPatchOperation = KnownTagsPatchOperation = {}));\n//# sourceMappingURL=index.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.encodeString = encodeString;\nexports.encodeByteArray = encodeByteArray;\nexports.decodeString = decodeString;\nexports.decodeStringToString = decodeStringToString;\n/**\n * Encodes a string in base64 format.\n * @param value - the string to encode\n * @internal\n */\nfunction encodeString(value) {\n return Buffer.from(value).toString(\"base64\");\n}\n/**\n * Encodes a byte array in base64 format.\n * @param value - the Uint8Aray to encode\n * @internal\n */\nfunction encodeByteArray(value) {\n const bufferValue = value instanceof Buffer ? value : Buffer.from(value.buffer);\n return bufferValue.toString(\"base64\");\n}\n/**\n * Decodes a base64 string into a byte array.\n * @param value - the base64 string to decode\n * @internal\n */\nfunction decodeString(value) {\n return Buffer.from(value, \"base64\");\n}\n/**\n * Decodes a base64 string into a string.\n * @param value - the base64 string to decode\n * @internal\n */\nfunction decodeStringToString(value) {\n return Buffer.from(value, \"base64\").toString();\n}\n//# sourceMappingURL=base64.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.XML_CHARKEY = exports.XML_ATTRKEY = void 0;\n/**\n * Default key used to access the XML attributes.\n */\nexports.XML_ATTRKEY = \"$\";\n/**\n * Default key used to access the XML value content.\n */\nexports.XML_CHARKEY = \"_\";\n//# sourceMappingURL=interfaces.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isPrimitiveBody = isPrimitiveBody;\nexports.isDuration = isDuration;\nexports.isValidUuid = isValidUuid;\nexports.flattenResponse = flattenResponse;\n/**\n * A type guard for a primitive response body.\n * @param value - Value to test\n *\n * @internal\n */\nfunction isPrimitiveBody(value, mapperTypeName) {\n return (mapperTypeName !== \"Composite\" &&\n mapperTypeName !== \"Dictionary\" &&\n (typeof value === \"string\" ||\n typeof value === \"number\" ||\n typeof value === \"boolean\" ||\n mapperTypeName?.match(/^(Date|DateTime|DateTimeRfc1123|UnixTime|ByteArray|Base64Url)$/i) !==\n null ||\n value === undefined ||\n value === null));\n}\nconst validateISODuration = /^(-|\\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/;\n/**\n * Returns true if the given string is in ISO 8601 format.\n * @param value - The value to be validated for ISO 8601 duration format.\n * @internal\n */\nfunction isDuration(value) {\n return validateISODuration.test(value);\n}\nconst validUuidRegex = /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/i;\n/**\n * Returns true if the provided uuid is valid.\n *\n * @param uuid - The uuid that needs to be validated.\n *\n * @internal\n */\nfunction isValidUuid(uuid) {\n return validUuidRegex.test(uuid);\n}\n/**\n * Maps the response as follows:\n * - wraps the response body if needed (typically if its type is primitive).\n * - returns null if the combination of the headers and the body is empty.\n * - otherwise, returns the combination of the headers and the body.\n *\n * @param responseObject - a representation of the parsed response\n * @returns the response that will be returned to the user which can be null and/or wrapped\n *\n * @internal\n */\nfunction handleNullableResponseAndWrappableBody(responseObject) {\n const combinedHeadersAndBody = {\n ...responseObject.headers,\n ...responseObject.body,\n };\n if (responseObject.hasNullableType &&\n Object.getOwnPropertyNames(combinedHeadersAndBody).length === 0) {\n return responseObject.shouldWrapBody ? { body: null } : null;\n }\n else {\n return responseObject.shouldWrapBody\n ? {\n ...responseObject.headers,\n body: responseObject.body,\n }\n : combinedHeadersAndBody;\n }\n}\n/**\n * Take a `FullOperationResponse` and turn it into a flat\n * response object to hand back to the consumer.\n * @param fullResponse - The processed response from the operation request\n * @param responseSpec - The response map from the OperationSpec\n *\n * @internal\n */\nfunction flattenResponse(fullResponse, responseSpec) {\n const parsedHeaders = fullResponse.parsedHeaders;\n // head methods never have a body, but we return a boolean set to body property\n // to indicate presence/absence of the resource\n if (fullResponse.request.method === \"HEAD\") {\n return {\n ...parsedHeaders,\n body: fullResponse.parsedBody,\n };\n }\n const bodyMapper = responseSpec && responseSpec.bodyMapper;\n const isNullable = Boolean(bodyMapper?.nullable);\n const expectedBodyTypeName = bodyMapper?.type.name;\n /** If the body is asked for, we look at the expected body type to handle it */\n if (expectedBodyTypeName === \"Stream\") {\n return {\n ...parsedHeaders,\n blobBody: fullResponse.blobBody,\n readableStreamBody: fullResponse.readableStreamBody,\n };\n }\n const modelProperties = (expectedBodyTypeName === \"Composite\" &&\n bodyMapper.type.modelProperties) ||\n {};\n const isPageableResponse = Object.keys(modelProperties).some((k) => modelProperties[k].serializedName === \"\");\n if (expectedBodyTypeName === \"Sequence\" || isPageableResponse) {\n const arrayResponse = fullResponse.parsedBody ?? [];\n for (const key of Object.keys(modelProperties)) {\n if (modelProperties[key].serializedName) {\n arrayResponse[key] = fullResponse.parsedBody?.[key];\n }\n }\n if (parsedHeaders) {\n for (const key of Object.keys(parsedHeaders)) {\n arrayResponse[key] = parsedHeaders[key];\n }\n }\n return isNullable &&\n !fullResponse.parsedBody &&\n !parsedHeaders &&\n Object.getOwnPropertyNames(modelProperties).length === 0\n ? null\n : arrayResponse;\n }\n return handleNullableResponseAndWrappableBody({\n body: fullResponse.parsedBody,\n headers: parsedHeaders,\n hasNullableType: isNullable,\n shouldWrapBody: isPrimitiveBody(fullResponse.parsedBody, expectedBodyTypeName),\n });\n}\n//# sourceMappingURL=utils.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.MapperTypeNames = void 0;\nexports.createSerializer = createSerializer;\nconst tslib_1 = require(\"tslib\");\nconst base64 = tslib_1.__importStar(require(\"./base64.js\"));\nconst interfaces_js_1 = require(\"./interfaces.js\");\nconst utils_js_1 = require(\"./utils.js\");\nclass SerializerImpl {\n modelMappers;\n isXML;\n constructor(modelMappers = {}, isXML = false) {\n this.modelMappers = modelMappers;\n this.isXML = isXML;\n }\n /**\n * @deprecated Removing the constraints validation on client side.\n */\n validateConstraints(mapper, value, objectName) {\n const failValidation = (constraintName, constraintValue) => {\n throw new Error(`\"${objectName}\" with value \"${value}\" should satisfy the constraint \"${constraintName}\": ${constraintValue}.`);\n };\n if (mapper.constraints && value !== undefined && value !== null) {\n const { ExclusiveMaximum, ExclusiveMinimum, InclusiveMaximum, InclusiveMinimum, MaxItems, MaxLength, MinItems, MinLength, MultipleOf, Pattern, UniqueItems, } = mapper.constraints;\n if (ExclusiveMaximum !== undefined && value >= ExclusiveMaximum) {\n failValidation(\"ExclusiveMaximum\", ExclusiveMaximum);\n }\n if (ExclusiveMinimum !== undefined && value <= ExclusiveMinimum) {\n failValidation(\"ExclusiveMinimum\", ExclusiveMinimum);\n }\n if (InclusiveMaximum !== undefined && value > InclusiveMaximum) {\n failValidation(\"InclusiveMaximum\", InclusiveMaximum);\n }\n if (InclusiveMinimum !== undefined && value < InclusiveMinimum) {\n failValidation(\"InclusiveMinimum\", InclusiveMinimum);\n }\n if (MaxItems !== undefined && value.length > MaxItems) {\n failValidation(\"MaxItems\", MaxItems);\n }\n if (MaxLength !== undefined && value.length > MaxLength) {\n failValidation(\"MaxLength\", MaxLength);\n }\n if (MinItems !== undefined && value.length < MinItems) {\n failValidation(\"MinItems\", MinItems);\n }\n if (MinLength !== undefined && value.length < MinLength) {\n failValidation(\"MinLength\", MinLength);\n }\n if (MultipleOf !== undefined && value % MultipleOf !== 0) {\n failValidation(\"MultipleOf\", MultipleOf);\n }\n if (Pattern) {\n const pattern = typeof Pattern === \"string\" ? new RegExp(Pattern) : Pattern;\n if (typeof value !== \"string\" || value.match(pattern) === null) {\n failValidation(\"Pattern\", Pattern);\n }\n }\n if (UniqueItems &&\n value.some((item, i, ar) => ar.indexOf(item) !== i)) {\n failValidation(\"UniqueItems\", UniqueItems);\n }\n }\n }\n /**\n * Serialize the given object based on its metadata defined in the mapper\n *\n * @param mapper - The mapper which defines the metadata of the serializable object\n *\n * @param object - A valid Javascript object to be serialized\n *\n * @param objectName - Name of the serialized object\n *\n * @param options - additional options to serialization\n *\n * @returns A valid serialized Javascript object\n */\n serialize(mapper, object, objectName, options = { xml: {} }) {\n const updatedOptions = {\n xml: {\n rootName: options.xml.rootName ?? \"\",\n includeRoot: options.xml.includeRoot ?? false,\n xmlCharKey: options.xml.xmlCharKey ?? interfaces_js_1.XML_CHARKEY,\n },\n };\n let payload = {};\n const mapperType = mapper.type.name;\n if (!objectName) {\n objectName = mapper.serializedName;\n }\n if (mapperType.match(/^Sequence$/i) !== null) {\n payload = [];\n }\n if (mapper.isConstant) {\n object = mapper.defaultValue;\n }\n // This table of allowed values should help explain\n // the mapper.required and mapper.nullable properties.\n // X means \"neither undefined or null are allowed\".\n // || required\n // || true | false\n // nullable || ==========================\n // true || null | undefined/null\n // false || X | undefined\n // undefined || X | undefined/null\n const { required, nullable } = mapper;\n if (required && nullable && object === undefined) {\n throw new Error(`${objectName} cannot be undefined.`);\n }\n if (required && !nullable && (object === undefined || object === null)) {\n throw new Error(`${objectName} cannot be null or undefined.`);\n }\n if (!required && nullable === false && object === null) {\n throw new Error(`${objectName} cannot be null.`);\n }\n if (object === undefined || object === null) {\n payload = object;\n }\n else {\n if (mapperType.match(/^any$/i) !== null) {\n payload = object;\n }\n else if (mapperType.match(/^(Number|String|Boolean|Object|Stream|Uuid)$/i) !== null) {\n payload = serializeBasicTypes(mapperType, objectName, object);\n }\n else if (mapperType.match(/^Enum$/i) !== null) {\n const enumMapper = mapper;\n payload = serializeEnumType(objectName, enumMapper.type.allowedValues, object);\n }\n else if (mapperType.match(/^(Date|DateTime|TimeSpan|DateTimeRfc1123|UnixTime)$/i) !== null) {\n payload = serializeDateTypes(mapperType, object, objectName);\n }\n else if (mapperType.match(/^ByteArray$/i) !== null) {\n payload = serializeByteArrayType(objectName, object);\n }\n else if (mapperType.match(/^Base64Url$/i) !== null) {\n payload = serializeBase64UrlType(objectName, object);\n }\n else if (mapperType.match(/^Sequence$/i) !== null) {\n payload = serializeSequenceType(this, mapper, object, objectName, Boolean(this.isXML), updatedOptions);\n }\n else if (mapperType.match(/^Dictionary$/i) !== null) {\n payload = serializeDictionaryType(this, mapper, object, objectName, Boolean(this.isXML), updatedOptions);\n }\n else if (mapperType.match(/^Composite$/i) !== null) {\n payload = serializeCompositeType(this, mapper, object, objectName, Boolean(this.isXML), updatedOptions);\n }\n }\n return payload;\n }\n /**\n * Deserialize the given object based on its metadata defined in the mapper\n *\n * @param mapper - The mapper which defines the metadata of the serializable object\n *\n * @param responseBody - A valid Javascript entity to be deserialized\n *\n * @param objectName - Name of the deserialized object\n *\n * @param options - Controls behavior of XML parser and builder.\n *\n * @returns A valid deserialized Javascript object\n */\n deserialize(mapper, responseBody, objectName, options = { xml: {} }) {\n const updatedOptions = {\n xml: {\n rootName: options.xml.rootName ?? \"\",\n includeRoot: options.xml.includeRoot ?? false,\n xmlCharKey: options.xml.xmlCharKey ?? interfaces_js_1.XML_CHARKEY,\n },\n ignoreUnknownProperties: options.ignoreUnknownProperties ?? false,\n };\n if (responseBody === undefined || responseBody === null) {\n if (this.isXML && mapper.type.name === \"Sequence\" && !mapper.xmlIsWrapped) {\n // Edge case for empty XML non-wrapped lists. xml2js can't distinguish\n // between the list being empty versus being missing,\n // so let's do the more user-friendly thing and return an empty list.\n responseBody = [];\n }\n // specifically check for undefined as default value can be a falsey value `0, \"\", false, null`\n if (mapper.defaultValue !== undefined) {\n responseBody = mapper.defaultValue;\n }\n return responseBody;\n }\n let payload;\n const mapperType = mapper.type.name;\n if (!objectName) {\n objectName = mapper.serializedName;\n }\n if (mapperType.match(/^Composite$/i) !== null) {\n payload = deserializeCompositeType(this, mapper, responseBody, objectName, updatedOptions);\n }\n else {\n if (this.isXML) {\n const xmlCharKey = updatedOptions.xml.xmlCharKey;\n /**\n * If the mapper specifies this as a non-composite type value but the responseBody contains\n * both header (\"$\" i.e., XML_ATTRKEY) and body (\"#\" i.e., XML_CHARKEY) properties,\n * then just reduce the responseBody value to the body (\"#\" i.e., XML_CHARKEY) property.\n */\n if (responseBody[interfaces_js_1.XML_ATTRKEY] !== undefined && responseBody[xmlCharKey] !== undefined) {\n responseBody = responseBody[xmlCharKey];\n }\n }\n if (mapperType.match(/^Number$/i) !== null) {\n payload = parseFloat(responseBody);\n if (isNaN(payload)) {\n payload = responseBody;\n }\n }\n else if (mapperType.match(/^Boolean$/i) !== null) {\n if (responseBody === \"true\") {\n payload = true;\n }\n else if (responseBody === \"false\") {\n payload = false;\n }\n else {\n payload = responseBody;\n }\n }\n else if (mapperType.match(/^(String|Enum|Object|Stream|Uuid|TimeSpan|any)$/i) !== null) {\n payload = responseBody;\n }\n else if (mapperType.match(/^(Date|DateTime|DateTimeRfc1123)$/i) !== null) {\n payload = new Date(responseBody);\n }\n else if (mapperType.match(/^UnixTime$/i) !== null) {\n payload = unixTimeToDate(responseBody);\n }\n else if (mapperType.match(/^ByteArray$/i) !== null) {\n payload = base64.decodeString(responseBody);\n }\n else if (mapperType.match(/^Base64Url$/i) !== null) {\n payload = base64UrlToByteArray(responseBody);\n }\n else if (mapperType.match(/^Sequence$/i) !== null) {\n payload = deserializeSequenceType(this, mapper, responseBody, objectName, updatedOptions);\n }\n else if (mapperType.match(/^Dictionary$/i) !== null) {\n payload = deserializeDictionaryType(this, mapper, responseBody, objectName, updatedOptions);\n }\n }\n if (mapper.isConstant) {\n payload = mapper.defaultValue;\n }\n return payload;\n }\n}\n/**\n * Method that creates and returns a Serializer.\n * @param modelMappers - Known models to map\n * @param isXML - If XML should be supported\n */\nfunction createSerializer(modelMappers = {}, isXML = false) {\n return new SerializerImpl(modelMappers, isXML);\n}\nfunction trimEnd(str, ch) {\n let len = str.length;\n while (len - 1 >= 0 && str[len - 1] === ch) {\n --len;\n }\n return str.substr(0, len);\n}\nfunction bufferToBase64Url(buffer) {\n if (!buffer) {\n return undefined;\n }\n if (!(buffer instanceof Uint8Array)) {\n throw new Error(`Please provide an input of type Uint8Array for converting to Base64Url.`);\n }\n // Uint8Array to Base64.\n const str = base64.encodeByteArray(buffer);\n // Base64 to Base64Url.\n return trimEnd(str, \"=\").replace(/\\+/g, \"-\").replace(/\\//g, \"_\");\n}\nfunction base64UrlToByteArray(str) {\n if (!str) {\n return undefined;\n }\n if (str && typeof str.valueOf() !== \"string\") {\n throw new Error(\"Please provide an input of type string for converting to Uint8Array\");\n }\n // Base64Url to Base64.\n str = str.replace(/-/g, \"+\").replace(/_/g, \"/\");\n // Base64 to Uint8Array.\n return base64.decodeString(str);\n}\nfunction splitSerializeName(prop) {\n const classes = [];\n let partialclass = \"\";\n if (prop) {\n const subwords = prop.split(\".\");\n for (const item of subwords) {\n if (item.charAt(item.length - 1) === \"\\\\\") {\n partialclass += item.substr(0, item.length - 1) + \".\";\n }\n else {\n partialclass += item;\n classes.push(partialclass);\n partialclass = \"\";\n }\n }\n }\n return classes;\n}\nfunction dateToUnixTime(d) {\n if (!d) {\n return undefined;\n }\n if (typeof d.valueOf() === \"string\") {\n d = new Date(d);\n }\n return Math.floor(d.getTime() / 1000);\n}\nfunction unixTimeToDate(n) {\n if (!n) {\n return undefined;\n }\n return new Date(n * 1000);\n}\nfunction serializeBasicTypes(typeName, objectName, value) {\n if (value !== null && value !== undefined) {\n if (typeName.match(/^Number$/i) !== null) {\n if (typeof value !== \"number\") {\n throw new Error(`${objectName} with value ${value} must be of type number.`);\n }\n }\n else if (typeName.match(/^String$/i) !== null) {\n if (typeof value.valueOf() !== \"string\") {\n throw new Error(`${objectName} with value \"${value}\" must be of type string.`);\n }\n }\n else if (typeName.match(/^Uuid$/i) !== null) {\n if (!(typeof value.valueOf() === \"string\" && (0, utils_js_1.isValidUuid)(value))) {\n throw new Error(`${objectName} with value \"${value}\" must be of type string and a valid uuid.`);\n }\n }\n else if (typeName.match(/^Boolean$/i) !== null) {\n if (typeof value !== \"boolean\") {\n throw new Error(`${objectName} with value ${value} must be of type boolean.`);\n }\n }\n else if (typeName.match(/^Stream$/i) !== null) {\n const objectType = typeof value;\n if (objectType !== \"string\" &&\n typeof value.pipe !== \"function\" && // NodeJS.ReadableStream\n typeof value.tee !== \"function\" && // browser ReadableStream\n !(value instanceof ArrayBuffer) &&\n !ArrayBuffer.isView(value) &&\n // File objects count as a type of Blob, so we want to use instanceof explicitly\n !((typeof Blob === \"function\" || typeof Blob === \"object\") && value instanceof Blob) &&\n objectType !== \"function\") {\n throw new Error(`${objectName} must be a string, Blob, ArrayBuffer, ArrayBufferView, ReadableStream, or () => ReadableStream.`);\n }\n }\n }\n return value;\n}\nfunction serializeEnumType(objectName, allowedValues, value) {\n if (!allowedValues) {\n throw new Error(`Please provide a set of allowedValues to validate ${objectName} as an Enum Type.`);\n }\n const isPresent = allowedValues.some((item) => {\n if (typeof item.valueOf() === \"string\") {\n return item.toLowerCase() === value.toLowerCase();\n }\n return item === value;\n });\n if (!isPresent) {\n throw new Error(`${value} is not a valid value for ${objectName}. The valid values are: ${JSON.stringify(allowedValues)}.`);\n }\n return value;\n}\nfunction serializeByteArrayType(objectName, value) {\n if (value !== undefined && value !== null) {\n if (!(value instanceof Uint8Array)) {\n throw new Error(`${objectName} must be of type Uint8Array.`);\n }\n value = base64.encodeByteArray(value);\n }\n return value;\n}\nfunction serializeBase64UrlType(objectName, value) {\n if (value !== undefined && value !== null) {\n if (!(value instanceof Uint8Array)) {\n throw new Error(`${objectName} must be of type Uint8Array.`);\n }\n value = bufferToBase64Url(value);\n }\n return value;\n}\nfunction serializeDateTypes(typeName, value, objectName) {\n if (value !== undefined && value !== null) {\n if (typeName.match(/^Date$/i) !== null) {\n if (!(value instanceof Date ||\n (typeof value.valueOf() === \"string\" && !isNaN(Date.parse(value))))) {\n throw new Error(`${objectName} must be an instanceof Date or a string in ISO8601 format.`);\n }\n value =\n value instanceof Date\n ? value.toISOString().substring(0, 10)\n : new Date(value).toISOString().substring(0, 10);\n }\n else if (typeName.match(/^DateTime$/i) !== null) {\n if (!(value instanceof Date ||\n (typeof value.valueOf() === \"string\" && !isNaN(Date.parse(value))))) {\n throw new Error(`${objectName} must be an instanceof Date or a string in ISO8601 format.`);\n }\n value = value instanceof Date ? value.toISOString() : new Date(value).toISOString();\n }\n else if (typeName.match(/^DateTimeRfc1123$/i) !== null) {\n if (!(value instanceof Date ||\n (typeof value.valueOf() === \"string\" && !isNaN(Date.parse(value))))) {\n throw new Error(`${objectName} must be an instanceof Date or a string in RFC-1123 format.`);\n }\n value = value instanceof Date ? value.toUTCString() : new Date(value).toUTCString();\n }\n else if (typeName.match(/^UnixTime$/i) !== null) {\n if (!(value instanceof Date ||\n (typeof value.valueOf() === \"string\" && !isNaN(Date.parse(value))))) {\n throw new Error(`${objectName} must be an instanceof Date or a string in RFC-1123/ISO8601 format ` +\n `for it to be serialized in UnixTime/Epoch format.`);\n }\n value = dateToUnixTime(value);\n }\n else if (typeName.match(/^TimeSpan$/i) !== null) {\n if (!(0, utils_js_1.isDuration)(value)) {\n throw new Error(`${objectName} must be a string in ISO 8601 format. Instead was \"${value}\".`);\n }\n }\n }\n return value;\n}\nfunction serializeSequenceType(serializer, mapper, object, objectName, isXml, options) {\n if (!Array.isArray(object)) {\n throw new Error(`${objectName} must be of type Array.`);\n }\n let elementType = mapper.type.element;\n if (!elementType || typeof elementType !== \"object\") {\n throw new Error(`element\" metadata for an Array must be defined in the ` +\n `mapper and it must of type \"object\" in ${objectName}.`);\n }\n // Quirk: Composite mappers referenced by `element` might\n // not have *all* properties declared (like uberParent),\n // so let's try to look up the full definition by name.\n if (elementType.type.name === \"Composite\" && elementType.type.className) {\n elementType = serializer.modelMappers[elementType.type.className] ?? elementType;\n }\n const tempArray = [];\n for (let i = 0; i < object.length; i++) {\n const serializedValue = serializer.serialize(elementType, object[i], objectName, options);\n if (isXml && elementType.xmlNamespace) {\n const xmlnsKey = elementType.xmlNamespacePrefix\n ? `xmlns:${elementType.xmlNamespacePrefix}`\n : \"xmlns\";\n if (elementType.type.name === \"Composite\") {\n tempArray[i] = { ...serializedValue };\n tempArray[i][interfaces_js_1.XML_ATTRKEY] = { [xmlnsKey]: elementType.xmlNamespace };\n }\n else {\n tempArray[i] = {};\n tempArray[i][options.xml.xmlCharKey] = serializedValue;\n tempArray[i][interfaces_js_1.XML_ATTRKEY] = { [xmlnsKey]: elementType.xmlNamespace };\n }\n }\n else {\n tempArray[i] = serializedValue;\n }\n }\n return tempArray;\n}\nfunction serializeDictionaryType(serializer, mapper, object, objectName, isXml, options) {\n if (typeof object !== \"object\") {\n throw new Error(`${objectName} must be of type object.`);\n }\n const valueType = mapper.type.value;\n if (!valueType || typeof valueType !== \"object\") {\n throw new Error(`\"value\" metadata for a Dictionary must be defined in the ` +\n `mapper and it must of type \"object\" in ${objectName}.`);\n }\n const tempDictionary = {};\n for (const key of Object.keys(object)) {\n const serializedValue = serializer.serialize(valueType, object[key], objectName, options);\n // If the element needs an XML namespace we need to add it within the $ property\n tempDictionary[key] = getXmlObjectValue(valueType, serializedValue, isXml, options);\n }\n // Add the namespace to the root element if needed\n if (isXml && mapper.xmlNamespace) {\n const xmlnsKey = mapper.xmlNamespacePrefix ? `xmlns:${mapper.xmlNamespacePrefix}` : \"xmlns\";\n const result = tempDictionary;\n result[interfaces_js_1.XML_ATTRKEY] = { [xmlnsKey]: mapper.xmlNamespace };\n return result;\n }\n return tempDictionary;\n}\n/**\n * Resolves the additionalProperties property from a referenced mapper\n * @param serializer - the serializer containing the entire set of mappers\n * @param mapper - the composite mapper to resolve\n * @param objectName - name of the object being serialized\n */\nfunction resolveAdditionalProperties(serializer, mapper, objectName) {\n const additionalProperties = mapper.type.additionalProperties;\n if (!additionalProperties && mapper.type.className) {\n const modelMapper = resolveReferencedMapper(serializer, mapper, objectName);\n return modelMapper?.type.additionalProperties;\n }\n return additionalProperties;\n}\n/**\n * Finds the mapper referenced by className\n * @param serializer - the serializer containing the entire set of mappers\n * @param mapper - the composite mapper to resolve\n * @param objectName - name of the object being serialized\n */\nfunction resolveReferencedMapper(serializer, mapper, objectName) {\n const className = mapper.type.className;\n if (!className) {\n throw new Error(`Class name for model \"${objectName}\" is not provided in the mapper \"${JSON.stringify(mapper, undefined, 2)}\".`);\n }\n return serializer.modelMappers[className];\n}\n/**\n * Resolves a composite mapper's modelProperties.\n * @param serializer - the serializer containing the entire set of mappers\n * @param mapper - the composite mapper to resolve\n */\nfunction resolveModelProperties(serializer, mapper, objectName) {\n let modelProps = mapper.type.modelProperties;\n if (!modelProps) {\n const modelMapper = resolveReferencedMapper(serializer, mapper, objectName);\n if (!modelMapper) {\n throw new Error(`mapper() cannot be null or undefined for model \"${mapper.type.className}\".`);\n }\n modelProps = modelMapper?.type.modelProperties;\n if (!modelProps) {\n throw new Error(`modelProperties cannot be null or undefined in the ` +\n `mapper \"${JSON.stringify(modelMapper)}\" of type \"${mapper.type.className}\" for object \"${objectName}\".`);\n }\n }\n return modelProps;\n}\nfunction serializeCompositeType(serializer, mapper, object, objectName, isXml, options) {\n if (getPolymorphicDiscriminatorRecursively(serializer, mapper)) {\n mapper = getPolymorphicMapper(serializer, mapper, object, \"clientName\");\n }\n if (object !== undefined && object !== null) {\n const payload = {};\n const modelProps = resolveModelProperties(serializer, mapper, objectName);\n for (const key of Object.keys(modelProps)) {\n const propertyMapper = modelProps[key];\n if (propertyMapper.readOnly) {\n continue;\n }\n let propName;\n let parentObject = payload;\n if (serializer.isXML) {\n if (propertyMapper.xmlIsWrapped) {\n propName = propertyMapper.xmlName;\n }\n else {\n propName = propertyMapper.xmlElementName || propertyMapper.xmlName;\n }\n }\n else {\n const paths = splitSerializeName(propertyMapper.serializedName);\n propName = paths.pop();\n for (const pathName of paths) {\n const childObject = parentObject[pathName];\n if ((childObject === undefined || childObject === null) &&\n ((object[key] !== undefined && object[key] !== null) ||\n propertyMapper.defaultValue !== undefined)) {\n parentObject[pathName] = {};\n }\n parentObject = parentObject[pathName];\n }\n }\n if (parentObject !== undefined && parentObject !== null) {\n if (isXml && mapper.xmlNamespace) {\n const xmlnsKey = mapper.xmlNamespacePrefix\n ? `xmlns:${mapper.xmlNamespacePrefix}`\n : \"xmlns\";\n parentObject[interfaces_js_1.XML_ATTRKEY] = {\n ...parentObject[interfaces_js_1.XML_ATTRKEY],\n [xmlnsKey]: mapper.xmlNamespace,\n };\n }\n const propertyObjectName = propertyMapper.serializedName !== \"\"\n ? objectName + \".\" + propertyMapper.serializedName\n : objectName;\n let toSerialize = object[key];\n const polymorphicDiscriminator = getPolymorphicDiscriminatorRecursively(serializer, mapper);\n if (polymorphicDiscriminator &&\n polymorphicDiscriminator.clientName === key &&\n (toSerialize === undefined || toSerialize === null)) {\n toSerialize = mapper.serializedName;\n }\n const serializedValue = serializer.serialize(propertyMapper, toSerialize, propertyObjectName, options);\n if (serializedValue !== undefined && propName !== undefined && propName !== null) {\n const value = getXmlObjectValue(propertyMapper, serializedValue, isXml, options);\n if (isXml && propertyMapper.xmlIsAttribute) {\n // XML_ATTRKEY, i.e., $ is the key attributes are kept under in xml2js.\n // This keeps things simple while preventing name collision\n // with names in user documents.\n parentObject[interfaces_js_1.XML_ATTRKEY] = parentObject[interfaces_js_1.XML_ATTRKEY] || {};\n parentObject[interfaces_js_1.XML_ATTRKEY][propName] = serializedValue;\n }\n else if (isXml && propertyMapper.xmlIsWrapped) {\n parentObject[propName] = { [propertyMapper.xmlElementName]: value };\n }\n else {\n parentObject[propName] = value;\n }\n }\n }\n }\n const additionalPropertiesMapper = resolveAdditionalProperties(serializer, mapper, objectName);\n if (additionalPropertiesMapper) {\n const propNames = Object.keys(modelProps);\n for (const clientPropName in object) {\n const isAdditionalProperty = propNames.every((pn) => pn !== clientPropName);\n if (isAdditionalProperty) {\n payload[clientPropName] = serializer.serialize(additionalPropertiesMapper, object[clientPropName], objectName + '[\"' + clientPropName + '\"]', options);\n }\n }\n }\n return payload;\n }\n return object;\n}\nfunction getXmlObjectValue(propertyMapper, serializedValue, isXml, options) {\n if (!isXml || !propertyMapper.xmlNamespace) {\n return serializedValue;\n }\n const xmlnsKey = propertyMapper.xmlNamespacePrefix\n ? `xmlns:${propertyMapper.xmlNamespacePrefix}`\n : \"xmlns\";\n const xmlNamespace = { [xmlnsKey]: propertyMapper.xmlNamespace };\n if ([\"Composite\"].includes(propertyMapper.type.name)) {\n if (serializedValue[interfaces_js_1.XML_ATTRKEY]) {\n return serializedValue;\n }\n else {\n const result = { ...serializedValue };\n result[interfaces_js_1.XML_ATTRKEY] = xmlNamespace;\n return result;\n }\n }\n const result = {};\n result[options.xml.xmlCharKey] = serializedValue;\n result[interfaces_js_1.XML_ATTRKEY] = xmlNamespace;\n return result;\n}\nfunction isSpecialXmlProperty(propertyName, options) {\n return [interfaces_js_1.XML_ATTRKEY, options.xml.xmlCharKey].includes(propertyName);\n}\nfunction deserializeCompositeType(serializer, mapper, responseBody, objectName, options) {\n const xmlCharKey = options.xml.xmlCharKey ?? interfaces_js_1.XML_CHARKEY;\n if (getPolymorphicDiscriminatorRecursively(serializer, mapper)) {\n mapper = getPolymorphicMapper(serializer, mapper, responseBody, \"serializedName\");\n }\n const modelProps = resolveModelProperties(serializer, mapper, objectName);\n let instance = {};\n const handledPropertyNames = [];\n for (const key of Object.keys(modelProps)) {\n const propertyMapper = modelProps[key];\n const paths = splitSerializeName(modelProps[key].serializedName);\n handledPropertyNames.push(paths[0]);\n const { serializedName, xmlName, xmlElementName } = propertyMapper;\n let propertyObjectName = objectName;\n if (serializedName !== \"\" && serializedName !== undefined) {\n propertyObjectName = objectName + \".\" + serializedName;\n }\n const headerCollectionPrefix = propertyMapper.headerCollectionPrefix;\n if (headerCollectionPrefix) {\n const dictionary = {};\n for (const headerKey of Object.keys(responseBody)) {\n if (headerKey.startsWith(headerCollectionPrefix)) {\n dictionary[headerKey.substring(headerCollectionPrefix.length)] = serializer.deserialize(propertyMapper.type.value, responseBody[headerKey], propertyObjectName, options);\n }\n handledPropertyNames.push(headerKey);\n }\n instance[key] = dictionary;\n }\n else if (serializer.isXML) {\n if (propertyMapper.xmlIsAttribute && responseBody[interfaces_js_1.XML_ATTRKEY]) {\n instance[key] = serializer.deserialize(propertyMapper, responseBody[interfaces_js_1.XML_ATTRKEY][xmlName], propertyObjectName, options);\n }\n else if (propertyMapper.xmlIsMsText) {\n if (responseBody[xmlCharKey] !== undefined) {\n instance[key] = responseBody[xmlCharKey];\n }\n else if (typeof responseBody === \"string\") {\n // The special case where xml parser parses \"content\" into JSON of\n // `{ name: \"content\"}` instead of `{ name: { \"_\": \"content\" }}`\n instance[key] = responseBody;\n }\n }\n else {\n const propertyName = xmlElementName || xmlName || serializedName;\n if (propertyMapper.xmlIsWrapped) {\n /* a list of wrapped by \n For the xml example below\n \n ...\n ...\n \n the responseBody has\n {\n Cors: {\n CorsRule: [{...}, {...}]\n }\n }\n xmlName is \"Cors\" and xmlElementName is\"CorsRule\".\n */\n const wrapped = responseBody[xmlName];\n const elementList = wrapped?.[xmlElementName] ?? [];\n instance[key] = serializer.deserialize(propertyMapper, elementList, propertyObjectName, options);\n handledPropertyNames.push(xmlName);\n }\n else {\n const property = responseBody[propertyName];\n instance[key] = serializer.deserialize(propertyMapper, property, propertyObjectName, options);\n handledPropertyNames.push(propertyName);\n }\n }\n }\n else {\n // deserialize the property if it is present in the provided responseBody instance\n let propertyInstance;\n let res = responseBody;\n // traversing the object step by step.\n let steps = 0;\n for (const item of paths) {\n if (!res)\n break;\n steps++;\n res = res[item];\n }\n // only accept null when reaching the last position of object otherwise it would be undefined\n if (res === null && steps < paths.length) {\n res = undefined;\n }\n propertyInstance = res;\n const polymorphicDiscriminator = mapper.type.polymorphicDiscriminator;\n // checking that the model property name (key)(ex: \"fishtype\") and the\n // clientName of the polymorphicDiscriminator {metadata} (ex: \"fishtype\")\n // instead of the serializedName of the polymorphicDiscriminator (ex: \"fish.type\")\n // is a better approach. The generator is not consistent with escaping '\\.' in the\n // serializedName of the property (ex: \"fish\\.type\") that is marked as polymorphic discriminator\n // and the serializedName of the metadata polymorphicDiscriminator (ex: \"fish.type\"). However,\n // the clientName transformation of the polymorphicDiscriminator (ex: \"fishtype\") and\n // the transformation of model property name (ex: \"fishtype\") is done consistently.\n // Hence, it is a safer bet to rely on the clientName of the polymorphicDiscriminator.\n if (polymorphicDiscriminator &&\n key === polymorphicDiscriminator.clientName &&\n (propertyInstance === undefined || propertyInstance === null)) {\n propertyInstance = mapper.serializedName;\n }\n let serializedValue;\n // paging\n if (Array.isArray(responseBody[key]) && modelProps[key].serializedName === \"\") {\n propertyInstance = responseBody[key];\n const arrayInstance = serializer.deserialize(propertyMapper, propertyInstance, propertyObjectName, options);\n // Copy over any properties that have already been added into the instance, where they do\n // not exist on the newly de-serialized array\n for (const [k, v] of Object.entries(instance)) {\n if (!Object.prototype.hasOwnProperty.call(arrayInstance, k)) {\n arrayInstance[k] = v;\n }\n }\n instance = arrayInstance;\n }\n else if (propertyInstance !== undefined || propertyMapper.defaultValue !== undefined) {\n serializedValue = serializer.deserialize(propertyMapper, propertyInstance, propertyObjectName, options);\n instance[key] = serializedValue;\n }\n }\n }\n const additionalPropertiesMapper = mapper.type.additionalProperties;\n if (additionalPropertiesMapper) {\n const isAdditionalProperty = (responsePropName) => {\n for (const clientPropName in modelProps) {\n const paths = splitSerializeName(modelProps[clientPropName].serializedName);\n if (paths[0] === responsePropName) {\n return false;\n }\n }\n return true;\n };\n for (const responsePropName in responseBody) {\n if (isAdditionalProperty(responsePropName)) {\n instance[responsePropName] = serializer.deserialize(additionalPropertiesMapper, responseBody[responsePropName], objectName + '[\"' + responsePropName + '\"]', options);\n }\n }\n }\n else if (responseBody && !options.ignoreUnknownProperties) {\n for (const key of Object.keys(responseBody)) {\n if (instance[key] === undefined &&\n !handledPropertyNames.includes(key) &&\n !isSpecialXmlProperty(key, options)) {\n instance[key] = responseBody[key];\n }\n }\n }\n return instance;\n}\nfunction deserializeDictionaryType(serializer, mapper, responseBody, objectName, options) {\n /* jshint validthis: true */\n const value = mapper.type.value;\n if (!value || typeof value !== \"object\") {\n throw new Error(`\"value\" metadata for a Dictionary must be defined in the ` +\n `mapper and it must of type \"object\" in ${objectName}`);\n }\n if (responseBody) {\n const tempDictionary = {};\n for (const key of Object.keys(responseBody)) {\n tempDictionary[key] = serializer.deserialize(value, responseBody[key], objectName, options);\n }\n return tempDictionary;\n }\n return responseBody;\n}\nfunction deserializeSequenceType(serializer, mapper, responseBody, objectName, options) {\n let element = mapper.type.element;\n if (!element || typeof element !== \"object\") {\n throw new Error(`element\" metadata for an Array must be defined in the ` +\n `mapper and it must of type \"object\" in ${objectName}`);\n }\n if (responseBody) {\n if (!Array.isArray(responseBody)) {\n // xml2js will interpret a single element array as just the element, so force it to be an array\n responseBody = [responseBody];\n }\n // Quirk: Composite mappers referenced by `element` might\n // not have *all* properties declared (like uberParent),\n // so let's try to look up the full definition by name.\n if (element.type.name === \"Composite\" && element.type.className) {\n element = serializer.modelMappers[element.type.className] ?? element;\n }\n const tempArray = [];\n for (let i = 0; i < responseBody.length; i++) {\n tempArray[i] = serializer.deserialize(element, responseBody[i], `${objectName}[${i}]`, options);\n }\n return tempArray;\n }\n return responseBody;\n}\nfunction getIndexDiscriminator(discriminators, discriminatorValue, typeName) {\n const typeNamesToCheck = [typeName];\n while (typeNamesToCheck.length) {\n const currentName = typeNamesToCheck.shift();\n const indexDiscriminator = discriminatorValue === currentName\n ? discriminatorValue\n : currentName + \".\" + discriminatorValue;\n if (Object.prototype.hasOwnProperty.call(discriminators, indexDiscriminator)) {\n return discriminators[indexDiscriminator];\n }\n else {\n for (const [name, mapper] of Object.entries(discriminators)) {\n if (name.startsWith(currentName + \".\") &&\n mapper.type.uberParent === currentName &&\n mapper.type.className) {\n typeNamesToCheck.push(mapper.type.className);\n }\n }\n }\n }\n return undefined;\n}\nfunction getPolymorphicMapper(serializer, mapper, object, polymorphicPropertyName) {\n const polymorphicDiscriminator = getPolymorphicDiscriminatorRecursively(serializer, mapper);\n if (polymorphicDiscriminator) {\n let discriminatorName = polymorphicDiscriminator[polymorphicPropertyName];\n if (discriminatorName) {\n // The serializedName might have \\\\, which we just want to ignore\n if (polymorphicPropertyName === \"serializedName\") {\n discriminatorName = discriminatorName.replace(/\\\\/gi, \"\");\n }\n const discriminatorValue = object[discriminatorName];\n const typeName = mapper.type.uberParent ?? mapper.type.className;\n if (typeof discriminatorValue === \"string\" && typeName) {\n const polymorphicMapper = getIndexDiscriminator(serializer.modelMappers.discriminators, discriminatorValue, typeName);\n if (polymorphicMapper) {\n mapper = polymorphicMapper;\n }\n }\n }\n }\n return mapper;\n}\nfunction getPolymorphicDiscriminatorRecursively(serializer, mapper) {\n return (mapper.type.polymorphicDiscriminator ||\n getPolymorphicDiscriminatorSafely(serializer, mapper.type.uberParent) ||\n getPolymorphicDiscriminatorSafely(serializer, mapper.type.className));\n}\nfunction getPolymorphicDiscriminatorSafely(serializer, typeName) {\n return (typeName &&\n serializer.modelMappers[typeName] &&\n serializer.modelMappers[typeName].type.polymorphicDiscriminator);\n}\n/**\n * Known types of Mappers\n */\nexports.MapperTypeNames = {\n Base64Url: \"Base64Url\",\n Boolean: \"Boolean\",\n ByteArray: \"ByteArray\",\n Composite: \"Composite\",\n Date: \"Date\",\n DateTime: \"DateTime\",\n DateTimeRfc1123: \"DateTimeRfc1123\",\n Dictionary: \"Dictionary\",\n Enum: \"Enum\",\n Number: \"Number\",\n Object: \"Object\",\n Sequence: \"Sequence\",\n String: \"String\",\n Stream: \"Stream\",\n TimeSpan: \"TimeSpan\",\n UnixTime: \"UnixTime\",\n};\n//# sourceMappingURL=serializer.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.AbortError = void 0;\n/**\n * This error is thrown when an asynchronous operation has been aborted.\n * Check for this error by testing the `name` that the name property of the\n * error matches `\"AbortError\"`.\n *\n * @example\n * ```ts snippet:ReadmeSampleAbortError\n * import { AbortError } from \"@typespec/ts-http-runtime\";\n *\n * async function doAsyncWork(options: { abortSignal: AbortSignal }): Promise {\n * if (options.abortSignal.aborted) {\n * throw new AbortError();\n * }\n *\n * // do async work\n * }\n *\n * const controller = new AbortController();\n * controller.abort();\n *\n * try {\n * doAsyncWork({ abortSignal: controller.signal });\n * } catch (e) {\n * if (e instanceof Error && e.name === \"AbortError\") {\n * // handle abort error here.\n * }\n * }\n * ```\n */\nclass AbortError extends Error {\n constructor(message) {\n super(message);\n this.name = \"AbortError\";\n }\n}\nexports.AbortError = AbortError;\n//# sourceMappingURL=AbortError.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.log = log;\nconst tslib_1 = require(\"tslib\");\nconst node_os_1 = require(\"node:os\");\nconst node_util_1 = tslib_1.__importDefault(require(\"node:util\"));\nconst node_process_1 = tslib_1.__importDefault(require(\"node:process\"));\nfunction log(message, ...args) {\n node_process_1.default.stderr.write(`${node_util_1.default.format(message, ...args)}${node_os_1.EOL}`);\n}\n//# sourceMappingURL=log.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst log_js_1 = require(\"./log.js\");\nconst debugEnvVariable = (typeof process !== \"undefined\" && process.env && process.env.DEBUG) || undefined;\nlet enabledString;\nlet enabledNamespaces = [];\nlet skippedNamespaces = [];\nconst debuggers = [];\nif (debugEnvVariable) {\n enable(debugEnvVariable);\n}\nconst debugObj = Object.assign((namespace) => {\n return createDebugger(namespace);\n}, {\n enable,\n enabled,\n disable,\n log: log_js_1.log,\n});\nfunction enable(namespaces) {\n enabledString = namespaces;\n enabledNamespaces = [];\n skippedNamespaces = [];\n const namespaceList = namespaces.split(\",\").map((ns) => ns.trim());\n for (const ns of namespaceList) {\n if (ns.startsWith(\"-\")) {\n skippedNamespaces.push(ns.substring(1));\n }\n else {\n enabledNamespaces.push(ns);\n }\n }\n for (const instance of debuggers) {\n instance.enabled = enabled(instance.namespace);\n }\n}\nfunction enabled(namespace) {\n if (namespace.endsWith(\"*\")) {\n return true;\n }\n for (const skipped of skippedNamespaces) {\n if (namespaceMatches(namespace, skipped)) {\n return false;\n }\n }\n for (const enabledNamespace of enabledNamespaces) {\n if (namespaceMatches(namespace, enabledNamespace)) {\n return true;\n }\n }\n return false;\n}\n/**\n * Given a namespace, check if it matches a pattern.\n * Patterns only have a single wildcard character which is *.\n * The behavior of * is that it matches zero or more other characters.\n */\nfunction namespaceMatches(namespace, patternToMatch) {\n // simple case, no pattern matching required\n if (patternToMatch.indexOf(\"*\") === -1) {\n return namespace === patternToMatch;\n }\n let pattern = patternToMatch;\n // normalize successive * if needed\n if (patternToMatch.indexOf(\"**\") !== -1) {\n const patternParts = [];\n let lastCharacter = \"\";\n for (const character of patternToMatch) {\n if (character === \"*\" && lastCharacter === \"*\") {\n continue;\n }\n else {\n lastCharacter = character;\n patternParts.push(character);\n }\n }\n pattern = patternParts.join(\"\");\n }\n let namespaceIndex = 0;\n let patternIndex = 0;\n const patternLength = pattern.length;\n const namespaceLength = namespace.length;\n let lastWildcard = -1;\n let lastWildcardNamespace = -1;\n while (namespaceIndex < namespaceLength && patternIndex < patternLength) {\n if (pattern[patternIndex] === \"*\") {\n lastWildcard = patternIndex;\n patternIndex++;\n if (patternIndex === patternLength) {\n // if wildcard is the last character, it will match the remaining namespace string\n return true;\n }\n // now we let the wildcard eat characters until we match the next literal in the pattern\n while (namespace[namespaceIndex] !== pattern[patternIndex]) {\n namespaceIndex++;\n // reached the end of the namespace without a match\n if (namespaceIndex === namespaceLength) {\n return false;\n }\n }\n // now that we have a match, let's try to continue on\n // however, it's possible we could find a later match\n // so keep a reference in case we have to backtrack\n lastWildcardNamespace = namespaceIndex;\n namespaceIndex++;\n patternIndex++;\n continue;\n }\n else if (pattern[patternIndex] === namespace[namespaceIndex]) {\n // simple case: literal pattern matches so keep going\n patternIndex++;\n namespaceIndex++;\n }\n else if (lastWildcard >= 0) {\n // special case: we don't have a literal match, but there is a previous wildcard\n // which we can backtrack to and try having the wildcard eat the match instead\n patternIndex = lastWildcard + 1;\n namespaceIndex = lastWildcardNamespace + 1;\n // we've reached the end of the namespace without a match\n if (namespaceIndex === namespaceLength) {\n return false;\n }\n // similar to the previous logic, let's keep going until we find the next literal match\n while (namespace[namespaceIndex] !== pattern[patternIndex]) {\n namespaceIndex++;\n if (namespaceIndex === namespaceLength) {\n return false;\n }\n }\n lastWildcardNamespace = namespaceIndex;\n namespaceIndex++;\n patternIndex++;\n continue;\n }\n else {\n return false;\n }\n }\n const namespaceDone = namespaceIndex === namespace.length;\n const patternDone = patternIndex === pattern.length;\n // this is to detect the case of an unneeded final wildcard\n // e.g. the pattern `ab*` should match the string `ab`\n const trailingWildCard = patternIndex === pattern.length - 1 && pattern[patternIndex] === \"*\";\n return namespaceDone && (patternDone || trailingWildCard);\n}\nfunction disable() {\n const result = enabledString || \"\";\n enable(\"\");\n return result;\n}\nfunction createDebugger(namespace) {\n const newDebugger = Object.assign(debug, {\n enabled: enabled(namespace),\n destroy,\n log: debugObj.log,\n namespace,\n extend,\n });\n function debug(...args) {\n if (!newDebugger.enabled) {\n return;\n }\n if (args.length > 0) {\n args[0] = `${namespace} ${args[0]}`;\n }\n newDebugger.log(...args);\n }\n debuggers.push(newDebugger);\n return newDebugger;\n}\nfunction destroy() {\n const index = debuggers.indexOf(this);\n if (index >= 0) {\n debuggers.splice(index, 1);\n return true;\n }\n return false;\n}\nfunction extend(namespace) {\n const newDebugger = createDebugger(`${this.namespace}:${namespace}`);\n newDebugger.log = this.log;\n return newDebugger;\n}\nexports.default = debugObj;\n//# sourceMappingURL=debug.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.TypeSpecRuntimeLogger = void 0;\nexports.createLoggerContext = createLoggerContext;\nexports.setLogLevel = setLogLevel;\nexports.getLogLevel = getLogLevel;\nexports.createClientLogger = createClientLogger;\nconst tslib_1 = require(\"tslib\");\nconst debug_js_1 = tslib_1.__importDefault(require(\"./debug.js\"));\nconst TYPESPEC_RUNTIME_LOG_LEVELS = [\"verbose\", \"info\", \"warning\", \"error\"];\nconst levelMap = {\n verbose: 400,\n info: 300,\n warning: 200,\n error: 100,\n};\nfunction patchLogMethod(parent, child) {\n child.log = (...args) => {\n parent.log(...args);\n };\n}\nfunction isTypeSpecRuntimeLogLevel(level) {\n return TYPESPEC_RUNTIME_LOG_LEVELS.includes(level);\n}\n/**\n * Creates a logger context base on the provided options.\n * @param options - The options for creating a logger context.\n * @returns The logger context.\n */\nfunction createLoggerContext(options) {\n const registeredLoggers = new Set();\n const logLevelFromEnv = (typeof process !== \"undefined\" && process.env && process.env[options.logLevelEnvVarName]) ||\n undefined;\n let logLevel;\n const clientLogger = (0, debug_js_1.default)(options.namespace);\n clientLogger.log = (...args) => {\n debug_js_1.default.log(...args);\n };\n function contextSetLogLevel(level) {\n if (level && !isTypeSpecRuntimeLogLevel(level)) {\n throw new Error(`Unknown log level '${level}'. Acceptable values: ${TYPESPEC_RUNTIME_LOG_LEVELS.join(\",\")}`);\n }\n logLevel = level;\n const enabledNamespaces = [];\n for (const logger of registeredLoggers) {\n if (shouldEnable(logger)) {\n enabledNamespaces.push(logger.namespace);\n }\n }\n debug_js_1.default.enable(enabledNamespaces.join(\",\"));\n }\n if (logLevelFromEnv) {\n // avoid calling setLogLevel because we don't want a mis-set environment variable to crash\n if (isTypeSpecRuntimeLogLevel(logLevelFromEnv)) {\n contextSetLogLevel(logLevelFromEnv);\n }\n else {\n console.error(`${options.logLevelEnvVarName} set to unknown log level '${logLevelFromEnv}'; logging is not enabled. Acceptable values: ${TYPESPEC_RUNTIME_LOG_LEVELS.join(\", \")}.`);\n }\n }\n function shouldEnable(logger) {\n return Boolean(logLevel && levelMap[logger.level] <= levelMap[logLevel]);\n }\n function createLogger(parent, level) {\n const logger = Object.assign(parent.extend(level), {\n level,\n });\n patchLogMethod(parent, logger);\n if (shouldEnable(logger)) {\n const enabledNamespaces = debug_js_1.default.disable();\n debug_js_1.default.enable(enabledNamespaces + \",\" + logger.namespace);\n }\n registeredLoggers.add(logger);\n return logger;\n }\n function contextGetLogLevel() {\n return logLevel;\n }\n function contextCreateClientLogger(namespace) {\n const clientRootLogger = clientLogger.extend(namespace);\n patchLogMethod(clientLogger, clientRootLogger);\n return {\n error: createLogger(clientRootLogger, \"error\"),\n warning: createLogger(clientRootLogger, \"warning\"),\n info: createLogger(clientRootLogger, \"info\"),\n verbose: createLogger(clientRootLogger, \"verbose\"),\n };\n }\n return {\n setLogLevel: contextSetLogLevel,\n getLogLevel: contextGetLogLevel,\n createClientLogger: contextCreateClientLogger,\n logger: clientLogger,\n };\n}\nconst context = createLoggerContext({\n logLevelEnvVarName: \"TYPESPEC_RUNTIME_LOG_LEVEL\",\n namespace: \"typeSpecRuntime\",\n});\n/**\n * Immediately enables logging at the specified log level. If no level is specified, logging is disabled.\n * @param level - The log level to enable for logging.\n * Options from most verbose to least verbose are:\n * - verbose\n * - info\n * - warning\n * - error\n */\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexports.TypeSpecRuntimeLogger = context.logger;\n/**\n * Retrieves the currently specified log level.\n */\nfunction setLogLevel(logLevel) {\n context.setLogLevel(logLevel);\n}\n/**\n * Retrieves the currently specified log level.\n */\nfunction getLogLevel() {\n return context.getLogLevel();\n}\n/**\n * Creates a logger for use by the SDKs that inherits from `TypeSpecRuntimeLogger`.\n * @param namespace - The name of the SDK package.\n * @hidden\n */\nfunction createClientLogger(namespace) {\n return context.createClientLogger(namespace);\n}\n//# sourceMappingURL=logger.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.createHttpHeaders = createHttpHeaders;\nfunction normalizeName(name) {\n return name.toLowerCase();\n}\nfunction* headerIterator(map) {\n for (const entry of map.values()) {\n yield [entry.name, entry.value];\n }\n}\nclass HttpHeadersImpl {\n _headersMap;\n constructor(rawHeaders) {\n this._headersMap = new Map();\n if (rawHeaders) {\n for (const headerName of Object.keys(rawHeaders)) {\n this.set(headerName, rawHeaders[headerName]);\n }\n }\n }\n /**\n * Set a header in this collection with the provided name and value. The name is\n * case-insensitive.\n * @param name - The name of the header to set. This value is case-insensitive.\n * @param value - The value of the header to set.\n */\n set(name, value) {\n this._headersMap.set(normalizeName(name), { name, value: String(value).trim() });\n }\n /**\n * Get the header value for the provided header name, or undefined if no header exists in this\n * collection with the provided name.\n * @param name - The name of the header. This value is case-insensitive.\n */\n get(name) {\n return this._headersMap.get(normalizeName(name))?.value;\n }\n /**\n * Get whether or not this header collection contains a header entry for the provided header name.\n * @param name - The name of the header to set. This value is case-insensitive.\n */\n has(name) {\n return this._headersMap.has(normalizeName(name));\n }\n /**\n * Remove the header with the provided headerName.\n * @param name - The name of the header to remove.\n */\n delete(name) {\n this._headersMap.delete(normalizeName(name));\n }\n /**\n * Get the JSON object representation of this HTTP header collection.\n */\n toJSON(options = {}) {\n const result = {};\n if (options.preserveCase) {\n for (const entry of this._headersMap.values()) {\n result[entry.name] = entry.value;\n }\n }\n else {\n for (const [normalizedName, entry] of this._headersMap) {\n result[normalizedName] = entry.value;\n }\n }\n return result;\n }\n /**\n * Get the string representation of this HTTP header collection.\n */\n toString() {\n return JSON.stringify(this.toJSON({ preserveCase: true }));\n }\n /**\n * Iterate over tuples of header [name, value] pairs.\n */\n [Symbol.iterator]() {\n return headerIterator(this._headersMap);\n }\n}\n/**\n * Creates an object that satisfies the `HttpHeaders` interface.\n * @param rawHeaders - A simple object representing initial headers\n */\nfunction createHttpHeaders(rawHeaders) {\n return new HttpHeadersImpl(rawHeaders);\n}\n//# sourceMappingURL=httpHeaders.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\n//# sourceMappingURL=schemes.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\n//# sourceMappingURL=oauth2Flows.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.randomUUID = randomUUID;\n/**\n * Generated Universally Unique Identifier\n *\n * @returns RFC4122 v4 UUID.\n */\nfunction randomUUID() {\n return crypto.randomUUID();\n}\n//# sourceMappingURL=uuidUtils.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.createPipelineRequest = createPipelineRequest;\nconst httpHeaders_js_1 = require(\"./httpHeaders.js\");\nconst uuidUtils_js_1 = require(\"./util/uuidUtils.js\");\nclass PipelineRequestImpl {\n url;\n method;\n headers;\n timeout;\n withCredentials;\n body;\n multipartBody;\n formData;\n streamResponseStatusCodes;\n enableBrowserStreams;\n proxySettings;\n disableKeepAlive;\n abortSignal;\n requestId;\n allowInsecureConnection;\n onUploadProgress;\n onDownloadProgress;\n requestOverrides;\n authSchemes;\n constructor(options) {\n this.url = options.url;\n this.body = options.body;\n this.headers = options.headers ?? (0, httpHeaders_js_1.createHttpHeaders)();\n this.method = options.method ?? \"GET\";\n this.timeout = options.timeout ?? 0;\n this.multipartBody = options.multipartBody;\n this.formData = options.formData;\n this.disableKeepAlive = options.disableKeepAlive ?? false;\n this.proxySettings = options.proxySettings;\n this.streamResponseStatusCodes = options.streamResponseStatusCodes;\n this.withCredentials = options.withCredentials ?? false;\n this.abortSignal = options.abortSignal;\n this.onUploadProgress = options.onUploadProgress;\n this.onDownloadProgress = options.onDownloadProgress;\n this.requestId = options.requestId || (0, uuidUtils_js_1.randomUUID)();\n this.allowInsecureConnection = options.allowInsecureConnection ?? false;\n this.enableBrowserStreams = options.enableBrowserStreams ?? false;\n this.requestOverrides = options.requestOverrides;\n this.authSchemes = options.authSchemes;\n }\n}\n/**\n * Creates a new pipeline request with the given options.\n * This method is to allow for the easy setting of default values and not required.\n * @param options - The options to create the request with.\n */\nfunction createPipelineRequest(options) {\n return new PipelineRequestImpl(options);\n}\n//# sourceMappingURL=pipelineRequest.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.createEmptyPipeline = createEmptyPipeline;\nconst ValidPhaseNames = new Set([\"Deserialize\", \"Serialize\", \"Retry\", \"Sign\"]);\n/**\n * A private implementation of Pipeline.\n * Do not export this class from the package.\n * @internal\n */\nclass HttpPipeline {\n _policies = [];\n _orderedPolicies;\n constructor(policies) {\n this._policies = policies?.slice(0) ?? [];\n this._orderedPolicies = undefined;\n }\n addPolicy(policy, options = {}) {\n if (options.phase && options.afterPhase) {\n throw new Error(\"Policies inside a phase cannot specify afterPhase.\");\n }\n if (options.phase && !ValidPhaseNames.has(options.phase)) {\n throw new Error(`Invalid phase name: ${options.phase}`);\n }\n if (options.afterPhase && !ValidPhaseNames.has(options.afterPhase)) {\n throw new Error(`Invalid afterPhase name: ${options.afterPhase}`);\n }\n this._policies.push({\n policy,\n options,\n });\n this._orderedPolicies = undefined;\n }\n removePolicy(options) {\n const removedPolicies = [];\n this._policies = this._policies.filter((policyDescriptor) => {\n if ((options.name && policyDescriptor.policy.name === options.name) ||\n (options.phase && policyDescriptor.options.phase === options.phase)) {\n removedPolicies.push(policyDescriptor.policy);\n return false;\n }\n else {\n return true;\n }\n });\n this._orderedPolicies = undefined;\n return removedPolicies;\n }\n sendRequest(httpClient, request) {\n const policies = this.getOrderedPolicies();\n const pipeline = policies.reduceRight((next, policy) => {\n return (req) => {\n return policy.sendRequest(req, next);\n };\n }, (req) => httpClient.sendRequest(req));\n return pipeline(request);\n }\n getOrderedPolicies() {\n if (!this._orderedPolicies) {\n this._orderedPolicies = this.orderPolicies();\n }\n return this._orderedPolicies;\n }\n clone() {\n return new HttpPipeline(this._policies);\n }\n static create() {\n return new HttpPipeline();\n }\n orderPolicies() {\n /**\n * The goal of this method is to reliably order pipeline policies\n * based on their declared requirements when they were added.\n *\n * Order is first determined by phase:\n *\n * 1. Serialize Phase\n * 2. Policies not in a phase\n * 3. Deserialize Phase\n * 4. Retry Phase\n * 5. Sign Phase\n *\n * Within each phase, policies are executed in the order\n * they were added unless they were specified to execute\n * before/after other policies or after a particular phase.\n *\n * To determine the final order, we will walk the policy list\n * in phase order multiple times until all dependencies are\n * satisfied.\n *\n * `afterPolicies` are the set of policies that must be\n * executed before a given policy. This requirement is\n * considered satisfied when each of the listed policies\n * have been scheduled.\n *\n * `beforePolicies` are the set of policies that must be\n * executed after a given policy. Since this dependency\n * can be expressed by converting it into a equivalent\n * `afterPolicies` declarations, they are normalized\n * into that form for simplicity.\n *\n * An `afterPhase` dependency is considered satisfied when all\n * policies in that phase have scheduled.\n *\n */\n const result = [];\n // Track all policies we know about.\n const policyMap = new Map();\n function createPhase(name) {\n return {\n name,\n policies: new Set(),\n hasRun: false,\n hasAfterPolicies: false,\n };\n }\n // Track policies for each phase.\n const serializePhase = createPhase(\"Serialize\");\n const noPhase = createPhase(\"None\");\n const deserializePhase = createPhase(\"Deserialize\");\n const retryPhase = createPhase(\"Retry\");\n const signPhase = createPhase(\"Sign\");\n // a list of phases in order\n const orderedPhases = [serializePhase, noPhase, deserializePhase, retryPhase, signPhase];\n // Small helper function to map phase name to each Phase\n function getPhase(phase) {\n if (phase === \"Retry\") {\n return retryPhase;\n }\n else if (phase === \"Serialize\") {\n return serializePhase;\n }\n else if (phase === \"Deserialize\") {\n return deserializePhase;\n }\n else if (phase === \"Sign\") {\n return signPhase;\n }\n else {\n return noPhase;\n }\n }\n // First walk each policy and create a node to track metadata.\n for (const descriptor of this._policies) {\n const policy = descriptor.policy;\n const options = descriptor.options;\n const policyName = policy.name;\n if (policyMap.has(policyName)) {\n throw new Error(\"Duplicate policy names not allowed in pipeline\");\n }\n const node = {\n policy,\n dependsOn: new Set(),\n dependants: new Set(),\n };\n if (options.afterPhase) {\n node.afterPhase = getPhase(options.afterPhase);\n node.afterPhase.hasAfterPolicies = true;\n }\n policyMap.set(policyName, node);\n const phase = getPhase(options.phase);\n phase.policies.add(node);\n }\n // Now that each policy has a node, connect dependency references.\n for (const descriptor of this._policies) {\n const { policy, options } = descriptor;\n const policyName = policy.name;\n const node = policyMap.get(policyName);\n if (!node) {\n throw new Error(`Missing node for policy ${policyName}`);\n }\n if (options.afterPolicies) {\n for (const afterPolicyName of options.afterPolicies) {\n const afterNode = policyMap.get(afterPolicyName);\n if (afterNode) {\n // Linking in both directions helps later\n // when we want to notify dependants.\n node.dependsOn.add(afterNode);\n afterNode.dependants.add(node);\n }\n }\n }\n if (options.beforePolicies) {\n for (const beforePolicyName of options.beforePolicies) {\n const beforeNode = policyMap.get(beforePolicyName);\n if (beforeNode) {\n // To execute before another node, make it\n // depend on the current node.\n beforeNode.dependsOn.add(node);\n node.dependants.add(beforeNode);\n }\n }\n }\n }\n function walkPhase(phase) {\n phase.hasRun = true;\n // Sets iterate in insertion order\n for (const node of phase.policies) {\n if (node.afterPhase && (!node.afterPhase.hasRun || node.afterPhase.policies.size)) {\n // If this node is waiting on a phase to complete,\n // we need to skip it for now.\n // Even if the phase is empty, we should wait for it\n // to be walked to avoid re-ordering policies.\n continue;\n }\n if (node.dependsOn.size === 0) {\n // If there's nothing else we're waiting for, we can\n // add this policy to the result list.\n result.push(node.policy);\n // Notify anything that depends on this policy that\n // the policy has been scheduled.\n for (const dependant of node.dependants) {\n dependant.dependsOn.delete(node);\n }\n policyMap.delete(node.policy.name);\n phase.policies.delete(node);\n }\n }\n }\n function walkPhases() {\n for (const phase of orderedPhases) {\n walkPhase(phase);\n // if the phase isn't complete\n if (phase.policies.size > 0 && phase !== noPhase) {\n if (!noPhase.hasRun) {\n // Try running noPhase to see if that unblocks this phase next tick.\n // This can happen if a phase that happens before noPhase\n // is waiting on a noPhase policy to complete.\n walkPhase(noPhase);\n }\n // Don't proceed to the next phase until this phase finishes.\n return;\n }\n if (phase.hasAfterPolicies) {\n // Run any policies unblocked by this phase\n walkPhase(noPhase);\n }\n }\n }\n // Iterate until we've put every node in the result list.\n let iteration = 0;\n while (policyMap.size > 0) {\n iteration++;\n const initialResultLength = result.length;\n // Keep walking each phase in order until we can order every node.\n walkPhases();\n // The result list *should* get at least one larger each time\n // after the first full pass.\n // Otherwise, we're going to loop forever.\n if (result.length <= initialResultLength && iteration > 1) {\n throw new Error(\"Cannot satisfy policy dependencies due to requirements cycle.\");\n }\n }\n return result;\n }\n}\n/**\n * Creates a totally empty pipeline.\n * Useful for testing or creating a custom one.\n */\nfunction createEmptyPipeline() {\n return HttpPipeline.create();\n}\n//# sourceMappingURL=pipeline.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isObject = isObject;\n/**\n * Helper to determine when an input is a generic JS object.\n * @returns true when input is an object type that is not null, Array, RegExp, or Date.\n */\nfunction isObject(input) {\n return (typeof input === \"object\" &&\n input !== null &&\n !Array.isArray(input) &&\n !(input instanceof RegExp) &&\n !(input instanceof Date));\n}\n//# sourceMappingURL=object.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isError = isError;\nconst object_js_1 = require(\"./object.js\");\n/**\n * Typeguard for an error object shape (has name and message)\n * @param e - Something caught by a catch clause.\n */\nfunction isError(e) {\n if ((0, object_js_1.isObject)(e)) {\n const hasName = typeof e.name === \"string\";\n const hasMessage = typeof e.message === \"string\";\n return hasName && hasMessage;\n }\n return false;\n}\n//# sourceMappingURL=error.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.custom = void 0;\nconst node_util_1 = require(\"node:util\");\nexports.custom = node_util_1.inspect.custom;\n//# sourceMappingURL=inspect.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Sanitizer = void 0;\nconst object_js_1 = require(\"./object.js\");\nconst RedactedString = \"REDACTED\";\n// Make sure this list is up-to-date with the one under core/logger/Readme#Keyconcepts\nconst defaultAllowedHeaderNames = [\n \"x-ms-client-request-id\",\n \"x-ms-return-client-request-id\",\n \"x-ms-useragent\",\n \"x-ms-correlation-request-id\",\n \"x-ms-request-id\",\n \"client-request-id\",\n \"ms-cv\",\n \"return-client-request-id\",\n \"traceparent\",\n \"Access-Control-Allow-Credentials\",\n \"Access-Control-Allow-Headers\",\n \"Access-Control-Allow-Methods\",\n \"Access-Control-Allow-Origin\",\n \"Access-Control-Expose-Headers\",\n \"Access-Control-Max-Age\",\n \"Access-Control-Request-Headers\",\n \"Access-Control-Request-Method\",\n \"Origin\",\n \"Accept\",\n \"Accept-Encoding\",\n \"Cache-Control\",\n \"Connection\",\n \"Content-Length\",\n \"Content-Type\",\n \"Date\",\n \"ETag\",\n \"Expires\",\n \"If-Match\",\n \"If-Modified-Since\",\n \"If-None-Match\",\n \"If-Unmodified-Since\",\n \"Last-Modified\",\n \"Pragma\",\n \"Request-Id\",\n \"Retry-After\",\n \"Server\",\n \"Transfer-Encoding\",\n \"User-Agent\",\n \"WWW-Authenticate\",\n];\nconst defaultAllowedQueryParameters = [\"api-version\"];\n/**\n * A utility class to sanitize objects for logging.\n */\nclass Sanitizer {\n allowedHeaderNames;\n allowedQueryParameters;\n constructor({ additionalAllowedHeaderNames: allowedHeaderNames = [], additionalAllowedQueryParameters: allowedQueryParameters = [], } = {}) {\n allowedHeaderNames = defaultAllowedHeaderNames.concat(allowedHeaderNames);\n allowedQueryParameters = defaultAllowedQueryParameters.concat(allowedQueryParameters);\n this.allowedHeaderNames = new Set(allowedHeaderNames.map((n) => n.toLowerCase()));\n this.allowedQueryParameters = new Set(allowedQueryParameters.map((p) => p.toLowerCase()));\n }\n /**\n * Sanitizes an object for logging.\n * @param obj - The object to sanitize\n * @returns - The sanitized object as a string\n */\n sanitize(obj) {\n const seen = new Set();\n return JSON.stringify(obj, (key, value) => {\n // Ensure Errors include their interesting non-enumerable members\n if (value instanceof Error) {\n return {\n ...value,\n name: value.name,\n message: value.message,\n };\n }\n if (key === \"headers\") {\n return this.sanitizeHeaders(value);\n }\n else if (key === \"url\") {\n return this.sanitizeUrl(value);\n }\n else if (key === \"query\") {\n return this.sanitizeQuery(value);\n }\n else if (key === \"body\") {\n // Don't log the request body\n return undefined;\n }\n else if (key === \"response\") {\n // Don't log response again\n return undefined;\n }\n else if (key === \"operationSpec\") {\n // When using sendOperationRequest, the request carries a massive\n // field with the autorest spec. No need to log it.\n return undefined;\n }\n else if (Array.isArray(value) || (0, object_js_1.isObject)(value)) {\n if (seen.has(value)) {\n return \"[Circular]\";\n }\n seen.add(value);\n }\n return value;\n }, 2);\n }\n /**\n * Sanitizes a URL for logging.\n * @param value - The URL to sanitize\n * @returns - The sanitized URL as a string\n */\n sanitizeUrl(value) {\n if (typeof value !== \"string\" || value === null || value === \"\") {\n return value;\n }\n const url = new URL(value);\n if (!url.search) {\n return value;\n }\n for (const [key] of url.searchParams) {\n if (!this.allowedQueryParameters.has(key.toLowerCase())) {\n url.searchParams.set(key, RedactedString);\n }\n }\n return url.toString();\n }\n sanitizeHeaders(obj) {\n const sanitized = {};\n for (const key of Object.keys(obj)) {\n if (this.allowedHeaderNames.has(key.toLowerCase())) {\n sanitized[key] = obj[key];\n }\n else {\n sanitized[key] = RedactedString;\n }\n }\n return sanitized;\n }\n sanitizeQuery(value) {\n if (typeof value !== \"object\" || value === null) {\n return value;\n }\n const sanitized = {};\n for (const k of Object.keys(value)) {\n if (this.allowedQueryParameters.has(k.toLowerCase())) {\n sanitized[k] = value[k];\n }\n else {\n sanitized[k] = RedactedString;\n }\n }\n return sanitized;\n }\n}\nexports.Sanitizer = Sanitizer;\n//# sourceMappingURL=sanitizer.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.RestError = void 0;\nexports.isRestError = isRestError;\nconst error_js_1 = require(\"./util/error.js\");\nconst inspect_js_1 = require(\"./util/inspect.js\");\nconst sanitizer_js_1 = require(\"./util/sanitizer.js\");\nconst errorSanitizer = new sanitizer_js_1.Sanitizer();\n/**\n * A custom error type for failed pipeline requests.\n */\nclass RestError extends Error {\n /**\n * Something went wrong when making the request.\n * This means the actual request failed for some reason,\n * such as a DNS issue or the connection being lost.\n */\n static REQUEST_SEND_ERROR = \"REQUEST_SEND_ERROR\";\n /**\n * This means that parsing the response from the server failed.\n * It may have been malformed.\n */\n static PARSE_ERROR = \"PARSE_ERROR\";\n /**\n * The code of the error itself (use statics on RestError if possible.)\n */\n code;\n /**\n * The HTTP status code of the request (if applicable.)\n */\n statusCode;\n /**\n * The request that was made.\n * This property is non-enumerable.\n */\n request;\n /**\n * The response received (if any.)\n * This property is non-enumerable.\n */\n response;\n /**\n * Bonus property set by the throw site.\n */\n details;\n constructor(message, options = {}) {\n super(message);\n this.name = \"RestError\";\n this.code = options.code;\n this.statusCode = options.statusCode;\n // The request and response may contain sensitive information in the headers or body.\n // To help prevent this sensitive information being accidentally logged, the request and response\n // properties are marked as non-enumerable here. This prevents them showing up in the output of\n // JSON.stringify and console.log.\n Object.defineProperty(this, \"request\", { value: options.request, enumerable: false });\n Object.defineProperty(this, \"response\", { value: options.response, enumerable: false });\n // Only include useful agent information in the request for logging, as the full agent object\n // may contain large binary data.\n const agent = this.request?.agent\n ? {\n maxFreeSockets: this.request.agent.maxFreeSockets,\n maxSockets: this.request.agent.maxSockets,\n }\n : undefined;\n // Logging method for util.inspect in Node\n Object.defineProperty(this, inspect_js_1.custom, {\n value: () => {\n // Extract non-enumerable properties and add them back. This is OK since in this output the request and\n // response get sanitized.\n return `RestError: ${this.message} \\n ${errorSanitizer.sanitize({\n ...this,\n request: { ...this.request, agent },\n response: this.response,\n })}`;\n },\n enumerable: false,\n });\n Object.setPrototypeOf(this, RestError.prototype);\n }\n}\nexports.RestError = RestError;\n/**\n * Typeguard for RestError\n * @param e - Something caught by a catch clause.\n */\nfunction isRestError(e) {\n if (e instanceof RestError) {\n return true;\n }\n return (0, error_js_1.isError)(e) && e.name === \"RestError\";\n}\n//# sourceMappingURL=restError.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.uint8ArrayToString = uint8ArrayToString;\nexports.stringToUint8Array = stringToUint8Array;\n/**\n * The helper that transforms bytes with specific character encoding into string\n * @param bytes - the uint8array bytes\n * @param format - the format we use to encode the byte\n * @returns a string of the encoded string\n */\nfunction uint8ArrayToString(bytes, format) {\n return Buffer.from(bytes).toString(format);\n}\n/**\n * The helper that transforms string to specific character encoded bytes array.\n * @param value - the string to be converted\n * @param format - the format we use to decode the value\n * @returns a uint8array\n */\nfunction stringToUint8Array(value, format) {\n return Buffer.from(value, format);\n}\n//# sourceMappingURL=bytesEncoding.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.logger = void 0;\nconst logger_js_1 = require(\"./logger/logger.js\");\nexports.logger = (0, logger_js_1.createClientLogger)(\"ts-http-runtime\");\n//# sourceMappingURL=log.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getBodyLength = getBodyLength;\nexports.createNodeHttpClient = createNodeHttpClient;\nconst tslib_1 = require(\"tslib\");\nconst node_http_1 = tslib_1.__importDefault(require(\"node:http\"));\nconst node_https_1 = tslib_1.__importDefault(require(\"node:https\"));\nconst node_zlib_1 = tslib_1.__importDefault(require(\"node:zlib\"));\nconst node_stream_1 = require(\"node:stream\");\nconst AbortError_js_1 = require(\"./abort-controller/AbortError.js\");\nconst httpHeaders_js_1 = require(\"./httpHeaders.js\");\nconst restError_js_1 = require(\"./restError.js\");\nconst log_js_1 = require(\"./log.js\");\nconst sanitizer_js_1 = require(\"./util/sanitizer.js\");\nconst DEFAULT_TLS_SETTINGS = {};\nfunction isReadableStream(body) {\n return body && typeof body.pipe === \"function\";\n}\nfunction isStreamComplete(stream) {\n if (stream.readable === false) {\n return Promise.resolve();\n }\n return new Promise((resolve) => {\n const handler = () => {\n resolve();\n stream.removeListener(\"close\", handler);\n stream.removeListener(\"end\", handler);\n stream.removeListener(\"error\", handler);\n };\n stream.on(\"close\", handler);\n stream.on(\"end\", handler);\n stream.on(\"error\", handler);\n });\n}\nfunction isArrayBuffer(body) {\n return body && typeof body.byteLength === \"number\";\n}\nclass ReportTransform extends node_stream_1.Transform {\n loadedBytes = 0;\n progressCallback;\n // eslint-disable-next-line @typescript-eslint/no-unsafe-function-type\n _transform(chunk, _encoding, callback) {\n this.push(chunk);\n this.loadedBytes += chunk.length;\n try {\n this.progressCallback({ loadedBytes: this.loadedBytes });\n callback();\n }\n catch (e) {\n callback(e);\n }\n }\n constructor(progressCallback) {\n super();\n this.progressCallback = progressCallback;\n }\n}\n/**\n * A HttpClient implementation that uses Node's \"https\" module to send HTTPS requests.\n * @internal\n */\nclass NodeHttpClient {\n cachedHttpAgent;\n cachedHttpsAgents = new WeakMap();\n /**\n * Makes a request over an underlying transport layer and returns the response.\n * @param request - The request to be made.\n */\n async sendRequest(request) {\n const abortController = new AbortController();\n let abortListener;\n if (request.abortSignal) {\n if (request.abortSignal.aborted) {\n throw new AbortError_js_1.AbortError(\"The operation was aborted. Request has already been canceled.\");\n }\n abortListener = (event) => {\n if (event.type === \"abort\") {\n abortController.abort();\n }\n };\n request.abortSignal.addEventListener(\"abort\", abortListener);\n }\n let timeoutId;\n if (request.timeout > 0) {\n timeoutId = setTimeout(() => {\n const sanitizer = new sanitizer_js_1.Sanitizer();\n log_js_1.logger.info(`request to '${sanitizer.sanitizeUrl(request.url)}' timed out. canceling...`);\n abortController.abort();\n }, request.timeout);\n }\n const acceptEncoding = request.headers.get(\"Accept-Encoding\");\n const shouldDecompress = acceptEncoding?.includes(\"gzip\") || acceptEncoding?.includes(\"deflate\");\n let body = typeof request.body === \"function\" ? request.body() : request.body;\n if (body && !request.headers.has(\"Content-Length\")) {\n const bodyLength = getBodyLength(body);\n if (bodyLength !== null) {\n request.headers.set(\"Content-Length\", bodyLength);\n }\n }\n let responseStream;\n try {\n if (body && request.onUploadProgress) {\n const onUploadProgress = request.onUploadProgress;\n const uploadReportStream = new ReportTransform(onUploadProgress);\n uploadReportStream.on(\"error\", (e) => {\n log_js_1.logger.error(\"Error in upload progress\", e);\n });\n if (isReadableStream(body)) {\n body.pipe(uploadReportStream);\n }\n else {\n uploadReportStream.end(body);\n }\n body = uploadReportStream;\n }\n const res = await this.makeRequest(request, abortController, body);\n if (timeoutId !== undefined) {\n clearTimeout(timeoutId);\n }\n const headers = getResponseHeaders(res);\n const status = res.statusCode ?? 0;\n const response = {\n status,\n headers,\n request,\n };\n // Responses to HEAD must not have a body.\n // If they do return a body, that body must be ignored.\n if (request.method === \"HEAD\") {\n // call resume() and not destroy() to avoid closing the socket\n // and losing keep alive\n res.resume();\n return response;\n }\n responseStream = shouldDecompress ? getDecodedResponseStream(res, headers) : res;\n const onDownloadProgress = request.onDownloadProgress;\n if (onDownloadProgress) {\n const downloadReportStream = new ReportTransform(onDownloadProgress);\n downloadReportStream.on(\"error\", (e) => {\n log_js_1.logger.error(\"Error in download progress\", e);\n });\n responseStream.pipe(downloadReportStream);\n responseStream = downloadReportStream;\n }\n if (\n // Value of POSITIVE_INFINITY in streamResponseStatusCodes is considered as any status code\n request.streamResponseStatusCodes?.has(Number.POSITIVE_INFINITY) ||\n request.streamResponseStatusCodes?.has(response.status)) {\n response.readableStreamBody = responseStream;\n }\n else {\n response.bodyAsText = await streamToText(responseStream);\n }\n return response;\n }\n finally {\n // clean up event listener\n if (request.abortSignal && abortListener) {\n let uploadStreamDone = Promise.resolve();\n if (isReadableStream(body)) {\n uploadStreamDone = isStreamComplete(body);\n }\n let downloadStreamDone = Promise.resolve();\n if (isReadableStream(responseStream)) {\n downloadStreamDone = isStreamComplete(responseStream);\n }\n Promise.all([uploadStreamDone, downloadStreamDone])\n .then(() => {\n // eslint-disable-next-line promise/always-return\n if (abortListener) {\n request.abortSignal?.removeEventListener(\"abort\", abortListener);\n }\n })\n .catch((e) => {\n log_js_1.logger.warning(\"Error when cleaning up abortListener on httpRequest\", e);\n });\n }\n }\n }\n makeRequest(request, abortController, body) {\n const url = new URL(request.url);\n const isInsecure = url.protocol !== \"https:\";\n if (isInsecure && !request.allowInsecureConnection) {\n throw new Error(`Cannot connect to ${request.url} while allowInsecureConnection is false.`);\n }\n const agent = request.agent ?? this.getOrCreateAgent(request, isInsecure);\n const options = {\n agent,\n hostname: url.hostname,\n path: `${url.pathname}${url.search}`,\n port: url.port,\n method: request.method,\n headers: request.headers.toJSON({ preserveCase: true }),\n ...request.requestOverrides,\n };\n return new Promise((resolve, reject) => {\n const req = isInsecure ? node_http_1.default.request(options, resolve) : node_https_1.default.request(options, resolve);\n req.once(\"error\", (err) => {\n reject(new restError_js_1.RestError(err.message, { code: err.code ?? restError_js_1.RestError.REQUEST_SEND_ERROR, request }));\n });\n abortController.signal.addEventListener(\"abort\", () => {\n const abortError = new AbortError_js_1.AbortError(\"The operation was aborted. Rejecting from abort signal callback while making request.\");\n req.destroy(abortError);\n reject(abortError);\n });\n if (body && isReadableStream(body)) {\n body.pipe(req);\n }\n else if (body) {\n if (typeof body === \"string\" || Buffer.isBuffer(body)) {\n req.end(body);\n }\n else if (isArrayBuffer(body)) {\n req.end(ArrayBuffer.isView(body) ? Buffer.from(body.buffer) : Buffer.from(body));\n }\n else {\n log_js_1.logger.error(\"Unrecognized body type\", body);\n reject(new restError_js_1.RestError(\"Unrecognized body type\"));\n }\n }\n else {\n // streams don't like \"undefined\" being passed as data\n req.end();\n }\n });\n }\n getOrCreateAgent(request, isInsecure) {\n const disableKeepAlive = request.disableKeepAlive;\n // Handle Insecure requests first\n if (isInsecure) {\n if (disableKeepAlive) {\n // keepAlive:false is the default so we don't need a custom Agent\n return node_http_1.default.globalAgent;\n }\n if (!this.cachedHttpAgent) {\n // If there is no cached agent create a new one and cache it.\n this.cachedHttpAgent = new node_http_1.default.Agent({ keepAlive: true });\n }\n return this.cachedHttpAgent;\n }\n else {\n if (disableKeepAlive && !request.tlsSettings) {\n // When there are no tlsSettings and keepAlive is false\n // we don't need a custom agent\n return node_https_1.default.globalAgent;\n }\n // We use the tlsSettings to index cached clients\n const tlsSettings = request.tlsSettings ?? DEFAULT_TLS_SETTINGS;\n // Get the cached agent or create a new one with the\n // provided values for keepAlive and tlsSettings\n let agent = this.cachedHttpsAgents.get(tlsSettings);\n if (agent && agent.options.keepAlive === !disableKeepAlive) {\n return agent;\n }\n log_js_1.logger.info(\"No cached TLS Agent exist, creating a new Agent\");\n agent = new node_https_1.default.Agent({\n // keepAlive is true if disableKeepAlive is false.\n keepAlive: !disableKeepAlive,\n // Since we are spreading, if no tslSettings were provided, nothing is added to the agent options.\n ...tlsSettings,\n });\n this.cachedHttpsAgents.set(tlsSettings, agent);\n return agent;\n }\n }\n}\nfunction getResponseHeaders(res) {\n const headers = (0, httpHeaders_js_1.createHttpHeaders)();\n for (const header of Object.keys(res.headers)) {\n const value = res.headers[header];\n if (Array.isArray(value)) {\n if (value.length > 0) {\n headers.set(header, value[0]);\n }\n }\n else if (value) {\n headers.set(header, value);\n }\n }\n return headers;\n}\nfunction getDecodedResponseStream(stream, headers) {\n const contentEncoding = headers.get(\"Content-Encoding\");\n if (contentEncoding === \"gzip\") {\n const unzip = node_zlib_1.default.createGunzip();\n stream.pipe(unzip);\n return unzip;\n }\n else if (contentEncoding === \"deflate\") {\n const inflate = node_zlib_1.default.createInflate();\n stream.pipe(inflate);\n return inflate;\n }\n return stream;\n}\nfunction streamToText(stream) {\n return new Promise((resolve, reject) => {\n const buffer = [];\n stream.on(\"data\", (chunk) => {\n if (Buffer.isBuffer(chunk)) {\n buffer.push(chunk);\n }\n else {\n buffer.push(Buffer.from(chunk));\n }\n });\n stream.on(\"end\", () => {\n resolve(Buffer.concat(buffer).toString(\"utf8\"));\n });\n stream.on(\"error\", (e) => {\n if (e && e?.name === \"AbortError\") {\n reject(e);\n }\n else {\n reject(new restError_js_1.RestError(`Error reading response as text: ${e.message}`, {\n code: restError_js_1.RestError.PARSE_ERROR,\n }));\n }\n });\n });\n}\n/** @internal */\nfunction getBodyLength(body) {\n if (!body) {\n return 0;\n }\n else if (Buffer.isBuffer(body)) {\n return body.length;\n }\n else if (isReadableStream(body)) {\n return null;\n }\n else if (isArrayBuffer(body)) {\n return body.byteLength;\n }\n else if (typeof body === \"string\") {\n return Buffer.from(body).length;\n }\n else {\n return null;\n }\n}\n/**\n * Create a new HttpClient instance for the NodeJS environment.\n * @internal\n */\nfunction createNodeHttpClient() {\n return new NodeHttpClient();\n}\n//# sourceMappingURL=nodeHttpClient.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.createDefaultHttpClient = createDefaultHttpClient;\nconst nodeHttpClient_js_1 = require(\"./nodeHttpClient.js\");\n/**\n * Create the correct HttpClient for the current environment.\n */\nfunction createDefaultHttpClient() {\n return (0, nodeHttpClient_js_1.createNodeHttpClient)();\n}\n//# sourceMappingURL=defaultHttpClient.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.logPolicyName = void 0;\nexports.logPolicy = logPolicy;\nconst log_js_1 = require(\"../log.js\");\nconst sanitizer_js_1 = require(\"../util/sanitizer.js\");\n/**\n * The programmatic identifier of the logPolicy.\n */\nexports.logPolicyName = \"logPolicy\";\n/**\n * A policy that logs all requests and responses.\n * @param options - Options to configure logPolicy.\n */\nfunction logPolicy(options = {}) {\n const logger = options.logger ?? log_js_1.logger.info;\n const sanitizer = new sanitizer_js_1.Sanitizer({\n additionalAllowedHeaderNames: options.additionalAllowedHeaderNames,\n additionalAllowedQueryParameters: options.additionalAllowedQueryParameters,\n });\n return {\n name: exports.logPolicyName,\n async sendRequest(request, next) {\n if (!logger.enabled) {\n return next(request);\n }\n logger(`Request: ${sanitizer.sanitize(request)}`);\n const response = await next(request);\n logger(`Response status code: ${response.status}`);\n logger(`Headers: ${sanitizer.sanitize(response.headers)}`);\n return response;\n },\n };\n}\n//# sourceMappingURL=logPolicy.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.redirectPolicyName = void 0;\nexports.redirectPolicy = redirectPolicy;\n/**\n * The programmatic identifier of the redirectPolicy.\n */\nexports.redirectPolicyName = \"redirectPolicy\";\n/**\n * Methods that are allowed to follow redirects 301 and 302\n */\nconst allowedRedirect = [\"GET\", \"HEAD\"];\n/**\n * A policy to follow Location headers from the server in order\n * to support server-side redirection.\n * In the browser, this policy is not used.\n * @param options - Options to control policy behavior.\n */\nfunction redirectPolicy(options = {}) {\n const { maxRetries = 20 } = options;\n return {\n name: exports.redirectPolicyName,\n async sendRequest(request, next) {\n const response = await next(request);\n return handleRedirect(next, response, maxRetries);\n },\n };\n}\nasync function handleRedirect(next, response, maxRetries, currentRetries = 0) {\n const { request, status, headers } = response;\n const locationHeader = headers.get(\"location\");\n if (locationHeader &&\n (status === 300 ||\n (status === 301 && allowedRedirect.includes(request.method)) ||\n (status === 302 && allowedRedirect.includes(request.method)) ||\n (status === 303 && request.method === \"POST\") ||\n status === 307) &&\n currentRetries < maxRetries) {\n const url = new URL(locationHeader, request.url);\n request.url = url.toString();\n // POST request with Status code 303 should be converted into a\n // redirected GET request if the redirect url is present in the location header\n if (status === 303) {\n request.method = \"GET\";\n request.headers.delete(\"Content-Length\");\n delete request.body;\n }\n request.headers.delete(\"Authorization\");\n const res = await next(request);\n return handleRedirect(next, res, maxRetries, currentRetries + 1);\n }\n return response;\n}\n//# sourceMappingURL=redirectPolicy.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getHeaderName = getHeaderName;\nexports.setPlatformSpecificData = setPlatformSpecificData;\nconst tslib_1 = require(\"tslib\");\nconst node_os_1 = tslib_1.__importDefault(require(\"node:os\"));\nconst node_process_1 = tslib_1.__importDefault(require(\"node:process\"));\n/**\n * @internal\n */\nfunction getHeaderName() {\n return \"User-Agent\";\n}\n/**\n * @internal\n */\nasync function setPlatformSpecificData(map) {\n if (node_process_1.default && node_process_1.default.versions) {\n const osInfo = `${node_os_1.default.type()} ${node_os_1.default.release()}; ${node_os_1.default.arch()}`;\n const versions = node_process_1.default.versions;\n if (versions.bun) {\n map.set(\"Bun\", `${versions.bun} (${osInfo})`);\n }\n else if (versions.deno) {\n map.set(\"Deno\", `${versions.deno} (${osInfo})`);\n }\n else if (versions.node) {\n map.set(\"Node\", `${versions.node} (${osInfo})`);\n }\n }\n}\n//# sourceMappingURL=userAgentPlatform.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.DEFAULT_RETRY_POLICY_COUNT = exports.SDK_VERSION = void 0;\nexports.SDK_VERSION = \"0.3.2\";\nexports.DEFAULT_RETRY_POLICY_COUNT = 3;\n//# sourceMappingURL=constants.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getUserAgentHeaderName = getUserAgentHeaderName;\nexports.getUserAgentValue = getUserAgentValue;\nconst userAgentPlatform_js_1 = require(\"./userAgentPlatform.js\");\nconst constants_js_1 = require(\"../constants.js\");\nfunction getUserAgentString(telemetryInfo) {\n const parts = [];\n for (const [key, value] of telemetryInfo) {\n const token = value ? `${key}/${value}` : key;\n parts.push(token);\n }\n return parts.join(\" \");\n}\n/**\n * @internal\n */\nfunction getUserAgentHeaderName() {\n return (0, userAgentPlatform_js_1.getHeaderName)();\n}\n/**\n * @internal\n */\nasync function getUserAgentValue(prefix) {\n const runtimeInfo = new Map();\n runtimeInfo.set(\"ts-http-runtime\", constants_js_1.SDK_VERSION);\n await (0, userAgentPlatform_js_1.setPlatformSpecificData)(runtimeInfo);\n const defaultAgent = getUserAgentString(runtimeInfo);\n const userAgentValue = prefix ? `${prefix} ${defaultAgent}` : defaultAgent;\n return userAgentValue;\n}\n//# sourceMappingURL=userAgent.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.userAgentPolicyName = void 0;\nexports.userAgentPolicy = userAgentPolicy;\nconst userAgent_js_1 = require(\"../util/userAgent.js\");\nconst UserAgentHeaderName = (0, userAgent_js_1.getUserAgentHeaderName)();\n/**\n * The programmatic identifier of the userAgentPolicy.\n */\nexports.userAgentPolicyName = \"userAgentPolicy\";\n/**\n * A policy that sets the User-Agent header (or equivalent) to reflect\n * the library version.\n * @param options - Options to customize the user agent value.\n */\nfunction userAgentPolicy(options = {}) {\n const userAgentValue = (0, userAgent_js_1.getUserAgentValue)(options.userAgentPrefix);\n return {\n name: exports.userAgentPolicyName,\n async sendRequest(request, next) {\n if (!request.headers.has(UserAgentHeaderName)) {\n request.headers.set(UserAgentHeaderName, await userAgentValue);\n }\n return next(request);\n },\n };\n}\n//# sourceMappingURL=userAgentPolicy.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.decompressResponsePolicyName = void 0;\nexports.decompressResponsePolicy = decompressResponsePolicy;\n/**\n * The programmatic identifier of the decompressResponsePolicy.\n */\nexports.decompressResponsePolicyName = \"decompressResponsePolicy\";\n/**\n * A policy to enable response decompression according to Accept-Encoding header\n * https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Accept-Encoding\n */\nfunction decompressResponsePolicy() {\n return {\n name: exports.decompressResponsePolicyName,\n async sendRequest(request, next) {\n // HEAD requests have no body\n if (request.method !== \"HEAD\") {\n request.headers.set(\"Accept-Encoding\", \"gzip,deflate\");\n }\n return next(request);\n },\n };\n}\n//# sourceMappingURL=decompressResponsePolicy.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getRandomIntegerInclusive = getRandomIntegerInclusive;\n/**\n * Returns a random integer value between a lower and upper bound,\n * inclusive of both bounds.\n * Note that this uses Math.random and isn't secure. If you need to use\n * this for any kind of security purpose, find a better source of random.\n * @param min - The smallest integer value allowed.\n * @param max - The largest integer value allowed.\n */\nfunction getRandomIntegerInclusive(min, max) {\n // Make sure inputs are integers.\n min = Math.ceil(min);\n max = Math.floor(max);\n // Pick a random offset from zero to the size of the range.\n // Since Math.random() can never return 1, we have to make the range one larger\n // in order to be inclusive of the maximum value after we take the floor.\n const offset = Math.floor(Math.random() * (max - min + 1));\n return offset + min;\n}\n//# sourceMappingURL=random.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.calculateRetryDelay = calculateRetryDelay;\nconst random_js_1 = require(\"./random.js\");\n/**\n * Calculates the delay interval for retry attempts using exponential delay with jitter.\n * @param retryAttempt - The current retry attempt number.\n * @param config - The exponential retry configuration.\n * @returns An object containing the calculated retry delay.\n */\nfunction calculateRetryDelay(retryAttempt, config) {\n // Exponentially increase the delay each time\n const exponentialDelay = config.retryDelayInMs * Math.pow(2, retryAttempt);\n // Don't let the delay exceed the maximum\n const clampedDelay = Math.min(config.maxRetryDelayInMs, exponentialDelay);\n // Allow the final value to have some \"jitter\" (within 50% of the delay size) so\n // that retries across multiple clients don't occur simultaneously.\n const retryAfterInMs = clampedDelay / 2 + (0, random_js_1.getRandomIntegerInclusive)(0, clampedDelay / 2);\n return { retryAfterInMs };\n}\n//# sourceMappingURL=delay.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.delay = delay;\nexports.parseHeaderValueAsNumber = parseHeaderValueAsNumber;\nconst AbortError_js_1 = require(\"../abort-controller/AbortError.js\");\nconst StandardAbortMessage = \"The operation was aborted.\";\n/**\n * A wrapper for setTimeout that resolves a promise after delayInMs milliseconds.\n * @param delayInMs - The number of milliseconds to be delayed.\n * @param value - The value to be resolved with after a timeout of t milliseconds.\n * @param options - The options for delay - currently abort options\n * - abortSignal - The abortSignal associated with containing operation.\n * - abortErrorMsg - The abort error message associated with containing operation.\n * @returns Resolved promise\n */\nfunction delay(delayInMs, value, options) {\n return new Promise((resolve, reject) => {\n let timer = undefined;\n let onAborted = undefined;\n const rejectOnAbort = () => {\n return reject(new AbortError_js_1.AbortError(options?.abortErrorMsg ? options?.abortErrorMsg : StandardAbortMessage));\n };\n const removeListeners = () => {\n if (options?.abortSignal && onAborted) {\n options.abortSignal.removeEventListener(\"abort\", onAborted);\n }\n };\n onAborted = () => {\n if (timer) {\n clearTimeout(timer);\n }\n removeListeners();\n return rejectOnAbort();\n };\n if (options?.abortSignal && options.abortSignal.aborted) {\n return rejectOnAbort();\n }\n timer = setTimeout(() => {\n removeListeners();\n resolve(value);\n }, delayInMs);\n if (options?.abortSignal) {\n options.abortSignal.addEventListener(\"abort\", onAborted);\n }\n });\n}\n/**\n * @internal\n * @returns the parsed value or undefined if the parsed value is invalid.\n */\nfunction parseHeaderValueAsNumber(response, headerName) {\n const value = response.headers.get(headerName);\n if (!value)\n return;\n const valueAsNum = Number(value);\n if (Number.isNaN(valueAsNum))\n return;\n return valueAsNum;\n}\n//# sourceMappingURL=helpers.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isThrottlingRetryResponse = isThrottlingRetryResponse;\nexports.throttlingRetryStrategy = throttlingRetryStrategy;\nconst helpers_js_1 = require(\"../util/helpers.js\");\n/**\n * The header that comes back from services representing\n * the amount of time (minimum) to wait to retry (in seconds or timestamp after which we can retry).\n */\nconst RetryAfterHeader = \"Retry-After\";\n/**\n * The headers that come back from services representing\n * the amount of time (minimum) to wait to retry.\n *\n * \"retry-after-ms\", \"x-ms-retry-after-ms\" : milliseconds\n * \"Retry-After\" : seconds or timestamp\n */\nconst AllRetryAfterHeaders = [\"retry-after-ms\", \"x-ms-retry-after-ms\", RetryAfterHeader];\n/**\n * A response is a throttling retry response if it has a throttling status code (429 or 503),\n * as long as one of the [ \"Retry-After\" or \"retry-after-ms\" or \"x-ms-retry-after-ms\" ] headers has a valid value.\n *\n * Returns the `retryAfterInMs` value if the response is a throttling retry response.\n * If not throttling retry response, returns `undefined`.\n *\n * @internal\n */\nfunction getRetryAfterInMs(response) {\n if (!(response && [429, 503].includes(response.status)))\n return undefined;\n try {\n // Headers: \"retry-after-ms\", \"x-ms-retry-after-ms\", \"Retry-After\"\n for (const header of AllRetryAfterHeaders) {\n const retryAfterValue = (0, helpers_js_1.parseHeaderValueAsNumber)(response, header);\n if (retryAfterValue === 0 || retryAfterValue) {\n // \"Retry-After\" header ==> seconds\n // \"retry-after-ms\", \"x-ms-retry-after-ms\" headers ==> milli-seconds\n const multiplyingFactor = header === RetryAfterHeader ? 1000 : 1;\n return retryAfterValue * multiplyingFactor; // in milli-seconds\n }\n }\n // RetryAfterHeader (\"Retry-After\") has a special case where it might be formatted as a date instead of a number of seconds\n const retryAfterHeader = response.headers.get(RetryAfterHeader);\n if (!retryAfterHeader)\n return;\n const date = Date.parse(retryAfterHeader);\n const diff = date - Date.now();\n // negative diff would mean a date in the past, so retry asap with 0 milliseconds\n return Number.isFinite(diff) ? Math.max(0, diff) : undefined;\n }\n catch {\n return undefined;\n }\n}\n/**\n * A response is a retry response if it has a throttling status code (429 or 503),\n * as long as one of the [ \"Retry-After\" or \"retry-after-ms\" or \"x-ms-retry-after-ms\" ] headers has a valid value.\n */\nfunction isThrottlingRetryResponse(response) {\n return Number.isFinite(getRetryAfterInMs(response));\n}\nfunction throttlingRetryStrategy() {\n return {\n name: \"throttlingRetryStrategy\",\n retry({ response }) {\n const retryAfterInMs = getRetryAfterInMs(response);\n if (!Number.isFinite(retryAfterInMs)) {\n return { skipStrategy: true };\n }\n return {\n retryAfterInMs,\n };\n },\n };\n}\n//# sourceMappingURL=throttlingRetryStrategy.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.exponentialRetryStrategy = exponentialRetryStrategy;\nexports.isExponentialRetryResponse = isExponentialRetryResponse;\nexports.isSystemError = isSystemError;\nconst delay_js_1 = require(\"../util/delay.js\");\nconst throttlingRetryStrategy_js_1 = require(\"./throttlingRetryStrategy.js\");\n// intervals are in milliseconds\nconst DEFAULT_CLIENT_RETRY_INTERVAL = 1000;\nconst DEFAULT_CLIENT_MAX_RETRY_INTERVAL = 1000 * 64;\n/**\n * A retry strategy that retries with an exponentially increasing delay in these two cases:\n * - When there are errors in the underlying transport layer (e.g. DNS lookup failures).\n * - Or otherwise if the outgoing request fails (408, greater or equal than 500, except for 501 and 505).\n */\nfunction exponentialRetryStrategy(options = {}) {\n const retryInterval = options.retryDelayInMs ?? DEFAULT_CLIENT_RETRY_INTERVAL;\n const maxRetryInterval = options.maxRetryDelayInMs ?? DEFAULT_CLIENT_MAX_RETRY_INTERVAL;\n return {\n name: \"exponentialRetryStrategy\",\n retry({ retryCount, response, responseError }) {\n const matchedSystemError = isSystemError(responseError);\n const ignoreSystemErrors = matchedSystemError && options.ignoreSystemErrors;\n const isExponential = isExponentialRetryResponse(response);\n const ignoreExponentialResponse = isExponential && options.ignoreHttpStatusCodes;\n const unknownResponse = response && ((0, throttlingRetryStrategy_js_1.isThrottlingRetryResponse)(response) || !isExponential);\n if (unknownResponse || ignoreExponentialResponse || ignoreSystemErrors) {\n return { skipStrategy: true };\n }\n if (responseError && !matchedSystemError && !isExponential) {\n return { errorToThrow: responseError };\n }\n return (0, delay_js_1.calculateRetryDelay)(retryCount, {\n retryDelayInMs: retryInterval,\n maxRetryDelayInMs: maxRetryInterval,\n });\n },\n };\n}\n/**\n * A response is a retry response if it has status codes:\n * - 408, or\n * - Greater or equal than 500, except for 501 and 505.\n */\nfunction isExponentialRetryResponse(response) {\n return Boolean(response &&\n response.status !== undefined &&\n (response.status >= 500 || response.status === 408) &&\n response.status !== 501 &&\n response.status !== 505);\n}\n/**\n * Determines whether an error from a pipeline response was triggered in the network layer.\n */\nfunction isSystemError(err) {\n if (!err) {\n return false;\n }\n return (err.code === \"ETIMEDOUT\" ||\n err.code === \"ESOCKETTIMEDOUT\" ||\n err.code === \"ECONNREFUSED\" ||\n err.code === \"ECONNRESET\" ||\n err.code === \"ENOENT\" ||\n err.code === \"ENOTFOUND\");\n}\n//# sourceMappingURL=exponentialRetryStrategy.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.retryPolicy = retryPolicy;\nconst helpers_js_1 = require(\"../util/helpers.js\");\nconst AbortError_js_1 = require(\"../abort-controller/AbortError.js\");\nconst logger_js_1 = require(\"../logger/logger.js\");\nconst constants_js_1 = require(\"../constants.js\");\nconst retryPolicyLogger = (0, logger_js_1.createClientLogger)(\"ts-http-runtime retryPolicy\");\n/**\n * The programmatic identifier of the retryPolicy.\n */\nconst retryPolicyName = \"retryPolicy\";\n/**\n * retryPolicy is a generic policy to enable retrying requests when certain conditions are met\n */\nfunction retryPolicy(strategies, options = { maxRetries: constants_js_1.DEFAULT_RETRY_POLICY_COUNT }) {\n const logger = options.logger || retryPolicyLogger;\n return {\n name: retryPolicyName,\n async sendRequest(request, next) {\n let response;\n let responseError;\n let retryCount = -1;\n retryRequest: while (true) {\n retryCount += 1;\n response = undefined;\n responseError = undefined;\n try {\n logger.info(`Retry ${retryCount}: Attempting to send request`, request.requestId);\n response = await next(request);\n logger.info(`Retry ${retryCount}: Received a response from request`, request.requestId);\n }\n catch (e) {\n logger.error(`Retry ${retryCount}: Received an error from request`, request.requestId);\n // RestErrors are valid targets for the retry strategies.\n // If none of the retry strategies can work with them, they will be thrown later in this policy.\n // If the received error is not a RestError, it is immediately thrown.\n responseError = e;\n if (!e || responseError.name !== \"RestError\") {\n throw e;\n }\n response = responseError.response;\n }\n if (request.abortSignal?.aborted) {\n logger.error(`Retry ${retryCount}: Request aborted.`);\n const abortError = new AbortError_js_1.AbortError();\n throw abortError;\n }\n if (retryCount >= (options.maxRetries ?? constants_js_1.DEFAULT_RETRY_POLICY_COUNT)) {\n logger.info(`Retry ${retryCount}: Maximum retries reached. Returning the last received response, or throwing the last received error.`);\n if (responseError) {\n throw responseError;\n }\n else if (response) {\n return response;\n }\n else {\n throw new Error(\"Maximum retries reached with no response or error to throw\");\n }\n }\n logger.info(`Retry ${retryCount}: Processing ${strategies.length} retry strategies.`);\n strategiesLoop: for (const strategy of strategies) {\n const strategyLogger = strategy.logger || logger;\n strategyLogger.info(`Retry ${retryCount}: Processing retry strategy ${strategy.name}.`);\n const modifiers = strategy.retry({\n retryCount,\n response,\n responseError,\n });\n if (modifiers.skipStrategy) {\n strategyLogger.info(`Retry ${retryCount}: Skipped.`);\n continue strategiesLoop;\n }\n const { errorToThrow, retryAfterInMs, redirectTo } = modifiers;\n if (errorToThrow) {\n strategyLogger.error(`Retry ${retryCount}: Retry strategy ${strategy.name} throws error:`, errorToThrow);\n throw errorToThrow;\n }\n if (retryAfterInMs || retryAfterInMs === 0) {\n strategyLogger.info(`Retry ${retryCount}: Retry strategy ${strategy.name} retries after ${retryAfterInMs}`);\n await (0, helpers_js_1.delay)(retryAfterInMs, undefined, { abortSignal: request.abortSignal });\n continue retryRequest;\n }\n if (redirectTo) {\n strategyLogger.info(`Retry ${retryCount}: Retry strategy ${strategy.name} redirects to ${redirectTo}`);\n request.url = redirectTo;\n continue retryRequest;\n }\n }\n if (responseError) {\n logger.info(`None of the retry strategies could work with the received error. Throwing it.`);\n throw responseError;\n }\n if (response) {\n logger.info(`None of the retry strategies could work with the received response. Returning it.`);\n return response;\n }\n // If all the retries skip and there's no response,\n // we're still in the retry loop, so a new request will be sent\n // until `maxRetries` is reached.\n }\n },\n };\n}\n//# sourceMappingURL=retryPolicy.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.defaultRetryPolicyName = void 0;\nexports.defaultRetryPolicy = defaultRetryPolicy;\nconst exponentialRetryStrategy_js_1 = require(\"../retryStrategies/exponentialRetryStrategy.js\");\nconst throttlingRetryStrategy_js_1 = require(\"../retryStrategies/throttlingRetryStrategy.js\");\nconst retryPolicy_js_1 = require(\"./retryPolicy.js\");\nconst constants_js_1 = require(\"../constants.js\");\n/**\n * Name of the {@link defaultRetryPolicy}\n */\nexports.defaultRetryPolicyName = \"defaultRetryPolicy\";\n/**\n * A policy that retries according to three strategies:\n * - When the server sends a 429 response with a Retry-After header.\n * - When there are errors in the underlying transport layer (e.g. DNS lookup failures).\n * - Or otherwise if the outgoing request fails, it will retry with an exponentially increasing delay.\n */\nfunction defaultRetryPolicy(options = {}) {\n return {\n name: exports.defaultRetryPolicyName,\n sendRequest: (0, retryPolicy_js_1.retryPolicy)([(0, throttlingRetryStrategy_js_1.throttlingRetryStrategy)(), (0, exponentialRetryStrategy_js_1.exponentialRetryStrategy)(options)], {\n maxRetries: options.maxRetries ?? constants_js_1.DEFAULT_RETRY_POLICY_COUNT,\n }).sendRequest,\n };\n}\n//# sourceMappingURL=defaultRetryPolicy.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isReactNative = exports.isNodeRuntime = exports.isNodeLike = exports.isBun = exports.isDeno = exports.isWebWorker = exports.isBrowser = void 0;\n/**\n * A constant that indicates whether the environment the code is running is a Web Browser.\n */\n// eslint-disable-next-line @azure/azure-sdk/ts-no-window\nexports.isBrowser = typeof window !== \"undefined\" && typeof window.document !== \"undefined\";\n/**\n * A constant that indicates whether the environment the code is running is a Web Worker.\n */\nexports.isWebWorker = typeof self === \"object\" &&\n typeof self?.importScripts === \"function\" &&\n (self.constructor?.name === \"DedicatedWorkerGlobalScope\" ||\n self.constructor?.name === \"ServiceWorkerGlobalScope\" ||\n self.constructor?.name === \"SharedWorkerGlobalScope\");\n/**\n * A constant that indicates whether the environment the code is running is Deno.\n */\nexports.isDeno = typeof Deno !== \"undefined\" &&\n typeof Deno.version !== \"undefined\" &&\n typeof Deno.version.deno !== \"undefined\";\n/**\n * A constant that indicates whether the environment the code is running is Bun.sh.\n */\nexports.isBun = typeof Bun !== \"undefined\" && typeof Bun.version !== \"undefined\";\n/**\n * A constant that indicates whether the environment the code is running is a Node.js compatible environment.\n */\nexports.isNodeLike = typeof globalThis.process !== \"undefined\" &&\n Boolean(globalThis.process.version) &&\n Boolean(globalThis.process.versions?.node);\n/**\n * A constant that indicates whether the environment the code is running is Node.JS.\n */\nexports.isNodeRuntime = exports.isNodeLike && !exports.isBun && !exports.isDeno;\n/**\n * A constant that indicates whether the environment the code is running is in React-Native.\n */\n// https://github.com/facebook/react-native/blob/main/packages/react-native/Libraries/Core/setUpNavigator.js\nexports.isReactNative = typeof navigator !== \"undefined\" && navigator?.product === \"ReactNative\";\n//# sourceMappingURL=checkEnvironment.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.formDataPolicyName = void 0;\nexports.formDataPolicy = formDataPolicy;\nconst bytesEncoding_js_1 = require(\"../util/bytesEncoding.js\");\nconst checkEnvironment_js_1 = require(\"../util/checkEnvironment.js\");\nconst httpHeaders_js_1 = require(\"../httpHeaders.js\");\n/**\n * The programmatic identifier of the formDataPolicy.\n */\nexports.formDataPolicyName = \"formDataPolicy\";\nfunction formDataToFormDataMap(formData) {\n const formDataMap = {};\n for (const [key, value] of formData.entries()) {\n formDataMap[key] ??= [];\n formDataMap[key].push(value);\n }\n return formDataMap;\n}\n/**\n * A policy that encodes FormData on the request into the body.\n */\nfunction formDataPolicy() {\n return {\n name: exports.formDataPolicyName,\n async sendRequest(request, next) {\n if (checkEnvironment_js_1.isNodeLike && typeof FormData !== \"undefined\" && request.body instanceof FormData) {\n request.formData = formDataToFormDataMap(request.body);\n request.body = undefined;\n }\n if (request.formData) {\n const contentType = request.headers.get(\"Content-Type\");\n if (contentType && contentType.indexOf(\"application/x-www-form-urlencoded\") !== -1) {\n request.body = wwwFormUrlEncode(request.formData);\n }\n else {\n await prepareFormData(request.formData, request);\n }\n request.formData = undefined;\n }\n return next(request);\n },\n };\n}\nfunction wwwFormUrlEncode(formData) {\n const urlSearchParams = new URLSearchParams();\n for (const [key, value] of Object.entries(formData)) {\n if (Array.isArray(value)) {\n for (const subValue of value) {\n urlSearchParams.append(key, subValue.toString());\n }\n }\n else {\n urlSearchParams.append(key, value.toString());\n }\n }\n return urlSearchParams.toString();\n}\nasync function prepareFormData(formData, request) {\n // validate content type (multipart/form-data)\n const contentType = request.headers.get(\"Content-Type\");\n if (contentType && !contentType.startsWith(\"multipart/form-data\")) {\n // content type is specified and is not multipart/form-data. Exit.\n return;\n }\n request.headers.set(\"Content-Type\", contentType ?? \"multipart/form-data\");\n // set body to MultipartRequestBody using content from FormDataMap\n const parts = [];\n for (const [fieldName, values] of Object.entries(formData)) {\n for (const value of Array.isArray(values) ? values : [values]) {\n if (typeof value === \"string\") {\n parts.push({\n headers: (0, httpHeaders_js_1.createHttpHeaders)({\n \"Content-Disposition\": `form-data; name=\"${fieldName}\"`,\n }),\n body: (0, bytesEncoding_js_1.stringToUint8Array)(value, \"utf-8\"),\n });\n }\n else if (value === undefined || value === null || typeof value !== \"object\") {\n throw new Error(`Unexpected value for key ${fieldName}: ${value}. Value should be serialized to string first.`);\n }\n else {\n // using || instead of ?? here since if value.name is empty we should create a file name\n const fileName = value.name || \"blob\";\n const headers = (0, httpHeaders_js_1.createHttpHeaders)();\n headers.set(\"Content-Disposition\", `form-data; name=\"${fieldName}\"; filename=\"${fileName}\"`);\n // again, || is used since an empty value.type means the content type is unset\n headers.set(\"Content-Type\", value.type || \"application/octet-stream\");\n parts.push({\n headers,\n body: value,\n });\n }\n }\n }\n request.multipartBody = { parts };\n}\n//# sourceMappingURL=formDataPolicy.js.map","/**\n * Helpers.\n */\n\nvar s = 1000;\nvar m = s * 60;\nvar h = m * 60;\nvar d = h * 24;\nvar w = d * 7;\nvar y = d * 365.25;\n\n/**\n * Parse or format the given `val`.\n *\n * Options:\n *\n * - `long` verbose formatting [false]\n *\n * @param {String|Number} val\n * @param {Object} [options]\n * @throws {Error} throw an error if val is not a non-empty string or a number\n * @return {String|Number}\n * @api public\n */\n\nmodule.exports = function (val, options) {\n options = options || {};\n var type = typeof val;\n if (type === 'string' && val.length > 0) {\n return parse(val);\n } else if (type === 'number' && isFinite(val)) {\n return options.long ? fmtLong(val) : fmtShort(val);\n }\n throw new Error(\n 'val is not a non-empty string or a valid number. val=' +\n JSON.stringify(val)\n );\n};\n\n/**\n * Parse the given `str` and return milliseconds.\n *\n * @param {String} str\n * @return {Number}\n * @api private\n */\n\nfunction parse(str) {\n str = String(str);\n if (str.length > 100) {\n return;\n }\n var match = /^(-?(?:\\d+)?\\.?\\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(\n str\n );\n if (!match) {\n return;\n }\n var n = parseFloat(match[1]);\n var type = (match[2] || 'ms').toLowerCase();\n switch (type) {\n case 'years':\n case 'year':\n case 'yrs':\n case 'yr':\n case 'y':\n return n * y;\n case 'weeks':\n case 'week':\n case 'w':\n return n * w;\n case 'days':\n case 'day':\n case 'd':\n return n * d;\n case 'hours':\n case 'hour':\n case 'hrs':\n case 'hr':\n case 'h':\n return n * h;\n case 'minutes':\n case 'minute':\n case 'mins':\n case 'min':\n case 'm':\n return n * m;\n case 'seconds':\n case 'second':\n case 'secs':\n case 'sec':\n case 's':\n return n * s;\n case 'milliseconds':\n case 'millisecond':\n case 'msecs':\n case 'msec':\n case 'ms':\n return n;\n default:\n return undefined;\n }\n}\n\n/**\n * Short format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction fmtShort(ms) {\n var msAbs = Math.abs(ms);\n if (msAbs >= d) {\n return Math.round(ms / d) + 'd';\n }\n if (msAbs >= h) {\n return Math.round(ms / h) + 'h';\n }\n if (msAbs >= m) {\n return Math.round(ms / m) + 'm';\n }\n if (msAbs >= s) {\n return Math.round(ms / s) + 's';\n }\n return ms + 'ms';\n}\n\n/**\n * Long format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction fmtLong(ms) {\n var msAbs = Math.abs(ms);\n if (msAbs >= d) {\n return plural(ms, msAbs, d, 'day');\n }\n if (msAbs >= h) {\n return plural(ms, msAbs, h, 'hour');\n }\n if (msAbs >= m) {\n return plural(ms, msAbs, m, 'minute');\n }\n if (msAbs >= s) {\n return plural(ms, msAbs, s, 'second');\n }\n return ms + ' ms';\n}\n\n/**\n * Pluralization helper.\n */\n\nfunction plural(ms, msAbs, n, name) {\n var isPlural = msAbs >= n * 1.5;\n return Math.round(ms / n) + ' ' + name + (isPlural ? 's' : '');\n}\n","\n/**\n * This is the common logic for both the Node.js and web browser\n * implementations of `debug()`.\n */\n\nfunction setup(env) {\n\tcreateDebug.debug = createDebug;\n\tcreateDebug.default = createDebug;\n\tcreateDebug.coerce = coerce;\n\tcreateDebug.disable = disable;\n\tcreateDebug.enable = enable;\n\tcreateDebug.enabled = enabled;\n\tcreateDebug.humanize = require('ms');\n\tcreateDebug.destroy = destroy;\n\n\tObject.keys(env).forEach(key => {\n\t\tcreateDebug[key] = env[key];\n\t});\n\n\t/**\n\t* The currently active debug mode names, and names to skip.\n\t*/\n\n\tcreateDebug.names = [];\n\tcreateDebug.skips = [];\n\n\t/**\n\t* Map of special \"%n\" handling functions, for the debug \"format\" argument.\n\t*\n\t* Valid key names are a single, lower or upper-case letter, i.e. \"n\" and \"N\".\n\t*/\n\tcreateDebug.formatters = {};\n\n\t/**\n\t* Selects a color for a debug namespace\n\t* @param {String} namespace The namespace string for the debug instance to be colored\n\t* @return {Number|String} An ANSI color code for the given namespace\n\t* @api private\n\t*/\n\tfunction selectColor(namespace) {\n\t\tlet hash = 0;\n\n\t\tfor (let i = 0; i < namespace.length; i++) {\n\t\t\thash = ((hash << 5) - hash) + namespace.charCodeAt(i);\n\t\t\thash |= 0; // Convert to 32bit integer\n\t\t}\n\n\t\treturn createDebug.colors[Math.abs(hash) % createDebug.colors.length];\n\t}\n\tcreateDebug.selectColor = selectColor;\n\n\t/**\n\t* Create a debugger with the given `namespace`.\n\t*\n\t* @param {String} namespace\n\t* @return {Function}\n\t* @api public\n\t*/\n\tfunction createDebug(namespace) {\n\t\tlet prevTime;\n\t\tlet enableOverride = null;\n\t\tlet namespacesCache;\n\t\tlet enabledCache;\n\n\t\tfunction debug(...args) {\n\t\t\t// Disabled?\n\t\t\tif (!debug.enabled) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst self = debug;\n\n\t\t\t// Set `diff` timestamp\n\t\t\tconst curr = Number(new Date());\n\t\t\tconst ms = curr - (prevTime || curr);\n\t\t\tself.diff = ms;\n\t\t\tself.prev = prevTime;\n\t\t\tself.curr = curr;\n\t\t\tprevTime = curr;\n\n\t\t\targs[0] = createDebug.coerce(args[0]);\n\n\t\t\tif (typeof args[0] !== 'string') {\n\t\t\t\t// Anything else let's inspect with %O\n\t\t\t\targs.unshift('%O');\n\t\t\t}\n\n\t\t\t// Apply any `formatters` transformations\n\t\t\tlet index = 0;\n\t\t\targs[0] = args[0].replace(/%([a-zA-Z%])/g, (match, format) => {\n\t\t\t\t// If we encounter an escaped % then don't increase the array index\n\t\t\t\tif (match === '%%') {\n\t\t\t\t\treturn '%';\n\t\t\t\t}\n\t\t\t\tindex++;\n\t\t\t\tconst formatter = createDebug.formatters[format];\n\t\t\t\tif (typeof formatter === 'function') {\n\t\t\t\t\tconst val = args[index];\n\t\t\t\t\tmatch = formatter.call(self, val);\n\n\t\t\t\t\t// Now we need to remove `args[index]` since it's inlined in the `format`\n\t\t\t\t\targs.splice(index, 1);\n\t\t\t\t\tindex--;\n\t\t\t\t}\n\t\t\t\treturn match;\n\t\t\t});\n\n\t\t\t// Apply env-specific formatting (colors, etc.)\n\t\t\tcreateDebug.formatArgs.call(self, args);\n\n\t\t\tconst logFn = self.log || createDebug.log;\n\t\t\tlogFn.apply(self, args);\n\t\t}\n\n\t\tdebug.namespace = namespace;\n\t\tdebug.useColors = createDebug.useColors();\n\t\tdebug.color = createDebug.selectColor(namespace);\n\t\tdebug.extend = extend;\n\t\tdebug.destroy = createDebug.destroy; // XXX Temporary. Will be removed in the next major release.\n\n\t\tObject.defineProperty(debug, 'enabled', {\n\t\t\tenumerable: true,\n\t\t\tconfigurable: false,\n\t\t\tget: () => {\n\t\t\t\tif (enableOverride !== null) {\n\t\t\t\t\treturn enableOverride;\n\t\t\t\t}\n\t\t\t\tif (namespacesCache !== createDebug.namespaces) {\n\t\t\t\t\tnamespacesCache = createDebug.namespaces;\n\t\t\t\t\tenabledCache = createDebug.enabled(namespace);\n\t\t\t\t}\n\n\t\t\t\treturn enabledCache;\n\t\t\t},\n\t\t\tset: v => {\n\t\t\t\tenableOverride = v;\n\t\t\t}\n\t\t});\n\n\t\t// Env-specific initialization logic for debug instances\n\t\tif (typeof createDebug.init === 'function') {\n\t\t\tcreateDebug.init(debug);\n\t\t}\n\n\t\treturn debug;\n\t}\n\n\tfunction extend(namespace, delimiter) {\n\t\tconst newDebug = createDebug(this.namespace + (typeof delimiter === 'undefined' ? ':' : delimiter) + namespace);\n\t\tnewDebug.log = this.log;\n\t\treturn newDebug;\n\t}\n\n\t/**\n\t* Enables a debug mode by namespaces. This can include modes\n\t* separated by a colon and wildcards.\n\t*\n\t* @param {String} namespaces\n\t* @api public\n\t*/\n\tfunction enable(namespaces) {\n\t\tcreateDebug.save(namespaces);\n\t\tcreateDebug.namespaces = namespaces;\n\n\t\tcreateDebug.names = [];\n\t\tcreateDebug.skips = [];\n\n\t\tconst split = (typeof namespaces === 'string' ? namespaces : '')\n\t\t\t.trim()\n\t\t\t.replace(/\\s+/g, ',')\n\t\t\t.split(',')\n\t\t\t.filter(Boolean);\n\n\t\tfor (const ns of split) {\n\t\t\tif (ns[0] === '-') {\n\t\t\t\tcreateDebug.skips.push(ns.slice(1));\n\t\t\t} else {\n\t\t\t\tcreateDebug.names.push(ns);\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Checks if the given string matches a namespace template, honoring\n\t * asterisks as wildcards.\n\t *\n\t * @param {String} search\n\t * @param {String} template\n\t * @return {Boolean}\n\t */\n\tfunction matchesTemplate(search, template) {\n\t\tlet searchIndex = 0;\n\t\tlet templateIndex = 0;\n\t\tlet starIndex = -1;\n\t\tlet matchIndex = 0;\n\n\t\twhile (searchIndex < search.length) {\n\t\t\tif (templateIndex < template.length && (template[templateIndex] === search[searchIndex] || template[templateIndex] === '*')) {\n\t\t\t\t// Match character or proceed with wildcard\n\t\t\t\tif (template[templateIndex] === '*') {\n\t\t\t\t\tstarIndex = templateIndex;\n\t\t\t\t\tmatchIndex = searchIndex;\n\t\t\t\t\ttemplateIndex++; // Skip the '*'\n\t\t\t\t} else {\n\t\t\t\t\tsearchIndex++;\n\t\t\t\t\ttemplateIndex++;\n\t\t\t\t}\n\t\t\t} else if (starIndex !== -1) { // eslint-disable-line no-negated-condition\n\t\t\t\t// Backtrack to the last '*' and try to match more characters\n\t\t\t\ttemplateIndex = starIndex + 1;\n\t\t\t\tmatchIndex++;\n\t\t\t\tsearchIndex = matchIndex;\n\t\t\t} else {\n\t\t\t\treturn false; // No match\n\t\t\t}\n\t\t}\n\n\t\t// Handle trailing '*' in template\n\t\twhile (templateIndex < template.length && template[templateIndex] === '*') {\n\t\t\ttemplateIndex++;\n\t\t}\n\n\t\treturn templateIndex === template.length;\n\t}\n\n\t/**\n\t* Disable debug output.\n\t*\n\t* @return {String} namespaces\n\t* @api public\n\t*/\n\tfunction disable() {\n\t\tconst namespaces = [\n\t\t\t...createDebug.names,\n\t\t\t...createDebug.skips.map(namespace => '-' + namespace)\n\t\t].join(',');\n\t\tcreateDebug.enable('');\n\t\treturn namespaces;\n\t}\n\n\t/**\n\t* Returns true if the given mode name is enabled, false otherwise.\n\t*\n\t* @param {String} name\n\t* @return {Boolean}\n\t* @api public\n\t*/\n\tfunction enabled(name) {\n\t\tfor (const skip of createDebug.skips) {\n\t\t\tif (matchesTemplate(name, skip)) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\n\t\tfor (const ns of createDebug.names) {\n\t\t\tif (matchesTemplate(name, ns)) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t}\n\n\t/**\n\t* Coerce `val`.\n\t*\n\t* @param {Mixed} val\n\t* @return {Mixed}\n\t* @api private\n\t*/\n\tfunction coerce(val) {\n\t\tif (val instanceof Error) {\n\t\t\treturn val.stack || val.message;\n\t\t}\n\t\treturn val;\n\t}\n\n\t/**\n\t* XXX DO NOT USE. This is a temporary stub function.\n\t* XXX It WILL be removed in the next major release.\n\t*/\n\tfunction destroy() {\n\t\tconsole.warn('Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.');\n\t}\n\n\tcreateDebug.enable(createDebug.load());\n\n\treturn createDebug;\n}\n\nmodule.exports = setup;\n","/* eslint-env browser */\n\n/**\n * This is the web browser implementation of `debug()`.\n */\n\nexports.formatArgs = formatArgs;\nexports.save = save;\nexports.load = load;\nexports.useColors = useColors;\nexports.storage = localstorage();\nexports.destroy = (() => {\n\tlet warned = false;\n\n\treturn () => {\n\t\tif (!warned) {\n\t\t\twarned = true;\n\t\t\tconsole.warn('Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.');\n\t\t}\n\t};\n})();\n\n/**\n * Colors.\n */\n\nexports.colors = [\n\t'#0000CC',\n\t'#0000FF',\n\t'#0033CC',\n\t'#0033FF',\n\t'#0066CC',\n\t'#0066FF',\n\t'#0099CC',\n\t'#0099FF',\n\t'#00CC00',\n\t'#00CC33',\n\t'#00CC66',\n\t'#00CC99',\n\t'#00CCCC',\n\t'#00CCFF',\n\t'#3300CC',\n\t'#3300FF',\n\t'#3333CC',\n\t'#3333FF',\n\t'#3366CC',\n\t'#3366FF',\n\t'#3399CC',\n\t'#3399FF',\n\t'#33CC00',\n\t'#33CC33',\n\t'#33CC66',\n\t'#33CC99',\n\t'#33CCCC',\n\t'#33CCFF',\n\t'#6600CC',\n\t'#6600FF',\n\t'#6633CC',\n\t'#6633FF',\n\t'#66CC00',\n\t'#66CC33',\n\t'#9900CC',\n\t'#9900FF',\n\t'#9933CC',\n\t'#9933FF',\n\t'#99CC00',\n\t'#99CC33',\n\t'#CC0000',\n\t'#CC0033',\n\t'#CC0066',\n\t'#CC0099',\n\t'#CC00CC',\n\t'#CC00FF',\n\t'#CC3300',\n\t'#CC3333',\n\t'#CC3366',\n\t'#CC3399',\n\t'#CC33CC',\n\t'#CC33FF',\n\t'#CC6600',\n\t'#CC6633',\n\t'#CC9900',\n\t'#CC9933',\n\t'#CCCC00',\n\t'#CCCC33',\n\t'#FF0000',\n\t'#FF0033',\n\t'#FF0066',\n\t'#FF0099',\n\t'#FF00CC',\n\t'#FF00FF',\n\t'#FF3300',\n\t'#FF3333',\n\t'#FF3366',\n\t'#FF3399',\n\t'#FF33CC',\n\t'#FF33FF',\n\t'#FF6600',\n\t'#FF6633',\n\t'#FF9900',\n\t'#FF9933',\n\t'#FFCC00',\n\t'#FFCC33'\n];\n\n/**\n * Currently only WebKit-based Web Inspectors, Firefox >= v31,\n * and the Firebug extension (any Firefox version) are known\n * to support \"%c\" CSS customizations.\n *\n * TODO: add a `localStorage` variable to explicitly enable/disable colors\n */\n\n// eslint-disable-next-line complexity\nfunction useColors() {\n\t// NB: In an Electron preload script, document will be defined but not fully\n\t// initialized. Since we know we're in Chrome, we'll just detect this case\n\t// explicitly\n\tif (typeof window !== 'undefined' && window.process && (window.process.type === 'renderer' || window.process.__nwjs)) {\n\t\treturn true;\n\t}\n\n\t// Internet Explorer and Edge do not support colors.\n\tif (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/(edge|trident)\\/(\\d+)/)) {\n\t\treturn false;\n\t}\n\n\tlet m;\n\n\t// Is webkit? http://stackoverflow.com/a/16459606/376773\n\t// document is undefined in react-native: https://github.com/facebook/react-native/pull/1632\n\t// eslint-disable-next-line no-return-assign\n\treturn (typeof document !== 'undefined' && document.documentElement && document.documentElement.style && document.documentElement.style.WebkitAppearance) ||\n\t\t// Is firebug? http://stackoverflow.com/a/398120/376773\n\t\t(typeof window !== 'undefined' && window.console && (window.console.firebug || (window.console.exception && window.console.table))) ||\n\t\t// Is firefox >= v31?\n\t\t// https://developer.mozilla.org/en-US/docs/Tools/Web_Console#Styling_messages\n\t\t(typeof navigator !== 'undefined' && navigator.userAgent && (m = navigator.userAgent.toLowerCase().match(/firefox\\/(\\d+)/)) && parseInt(m[1], 10) >= 31) ||\n\t\t// Double check webkit in userAgent just in case we are in a worker\n\t\t(typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/applewebkit\\/(\\d+)/));\n}\n\n/**\n * Colorize log arguments if enabled.\n *\n * @api public\n */\n\nfunction formatArgs(args) {\n\targs[0] = (this.useColors ? '%c' : '') +\n\t\tthis.namespace +\n\t\t(this.useColors ? ' %c' : ' ') +\n\t\targs[0] +\n\t\t(this.useColors ? '%c ' : ' ') +\n\t\t'+' + module.exports.humanize(this.diff);\n\n\tif (!this.useColors) {\n\t\treturn;\n\t}\n\n\tconst c = 'color: ' + this.color;\n\targs.splice(1, 0, c, 'color: inherit');\n\n\t// The final \"%c\" is somewhat tricky, because there could be other\n\t// arguments passed either before or after the %c, so we need to\n\t// figure out the correct index to insert the CSS into\n\tlet index = 0;\n\tlet lastC = 0;\n\targs[0].replace(/%[a-zA-Z%]/g, match => {\n\t\tif (match === '%%') {\n\t\t\treturn;\n\t\t}\n\t\tindex++;\n\t\tif (match === '%c') {\n\t\t\t// We only are interested in the *last* %c\n\t\t\t// (the user may have provided their own)\n\t\t\tlastC = index;\n\t\t}\n\t});\n\n\targs.splice(lastC, 0, c);\n}\n\n/**\n * Invokes `console.debug()` when available.\n * No-op when `console.debug` is not a \"function\".\n * If `console.debug` is not available, falls back\n * to `console.log`.\n *\n * @api public\n */\nexports.log = console.debug || console.log || (() => {});\n\n/**\n * Save `namespaces`.\n *\n * @param {String} namespaces\n * @api private\n */\nfunction save(namespaces) {\n\ttry {\n\t\tif (namespaces) {\n\t\t\texports.storage.setItem('debug', namespaces);\n\t\t} else {\n\t\t\texports.storage.removeItem('debug');\n\t\t}\n\t} catch (error) {\n\t\t// Swallow\n\t\t// XXX (@Qix-) should we be logging these?\n\t}\n}\n\n/**\n * Load `namespaces`.\n *\n * @return {String} returns the previously persisted debug modes\n * @api private\n */\nfunction load() {\n\tlet r;\n\ttry {\n\t\tr = exports.storage.getItem('debug') || exports.storage.getItem('DEBUG') ;\n\t} catch (error) {\n\t\t// Swallow\n\t\t// XXX (@Qix-) should we be logging these?\n\t}\n\n\t// If debug isn't set in LS, and we're in Electron, try to load $DEBUG\n\tif (!r && typeof process !== 'undefined' && 'env' in process) {\n\t\tr = process.env.DEBUG;\n\t}\n\n\treturn r;\n}\n\n/**\n * Localstorage attempts to return the localstorage.\n *\n * This is necessary because safari throws\n * when a user disables cookies/localstorage\n * and you attempt to access it.\n *\n * @return {LocalStorage}\n * @api private\n */\n\nfunction localstorage() {\n\ttry {\n\t\t// TVMLKit (Apple TV JS Runtime) does not have a window object, just localStorage in the global context\n\t\t// The Browser also has localStorage in the global context.\n\t\treturn localStorage;\n\t} catch (error) {\n\t\t// Swallow\n\t\t// XXX (@Qix-) should we be logging these?\n\t}\n}\n\nmodule.exports = require('./common')(exports);\n\nconst {formatters} = module.exports;\n\n/**\n * Map %j to `JSON.stringify()`, since no Web Inspectors do that by default.\n */\n\nformatters.j = function (v) {\n\ttry {\n\t\treturn JSON.stringify(v);\n\t} catch (error) {\n\t\treturn '[UnexpectedJSONParseError]: ' + error.message;\n\t}\n};\n","'use strict';\n\nmodule.exports = (flag, argv = process.argv) => {\n\tconst prefix = flag.startsWith('-') ? '' : (flag.length === 1 ? '-' : '--');\n\tconst position = argv.indexOf(prefix + flag);\n\tconst terminatorPosition = argv.indexOf('--');\n\treturn position !== -1 && (terminatorPosition === -1 || position < terminatorPosition);\n};\n","'use strict';\nconst os = require('os');\nconst tty = require('tty');\nconst hasFlag = require('has-flag');\n\nconst {env} = process;\n\nlet forceColor;\nif (hasFlag('no-color') ||\n\thasFlag('no-colors') ||\n\thasFlag('color=false') ||\n\thasFlag('color=never')) {\n\tforceColor = 0;\n} else if (hasFlag('color') ||\n\thasFlag('colors') ||\n\thasFlag('color=true') ||\n\thasFlag('color=always')) {\n\tforceColor = 1;\n}\n\nif ('FORCE_COLOR' in env) {\n\tif (env.FORCE_COLOR === 'true') {\n\t\tforceColor = 1;\n\t} else if (env.FORCE_COLOR === 'false') {\n\t\tforceColor = 0;\n\t} else {\n\t\tforceColor = env.FORCE_COLOR.length === 0 ? 1 : Math.min(parseInt(env.FORCE_COLOR, 10), 3);\n\t}\n}\n\nfunction translateLevel(level) {\n\tif (level === 0) {\n\t\treturn false;\n\t}\n\n\treturn {\n\t\tlevel,\n\t\thasBasic: true,\n\t\thas256: level >= 2,\n\t\thas16m: level >= 3\n\t};\n}\n\nfunction supportsColor(haveStream, streamIsTTY) {\n\tif (forceColor === 0) {\n\t\treturn 0;\n\t}\n\n\tif (hasFlag('color=16m') ||\n\t\thasFlag('color=full') ||\n\t\thasFlag('color=truecolor')) {\n\t\treturn 3;\n\t}\n\n\tif (hasFlag('color=256')) {\n\t\treturn 2;\n\t}\n\n\tif (haveStream && !streamIsTTY && forceColor === undefined) {\n\t\treturn 0;\n\t}\n\n\tconst min = forceColor || 0;\n\n\tif (env.TERM === 'dumb') {\n\t\treturn min;\n\t}\n\n\tif (process.platform === 'win32') {\n\t\t// Windows 10 build 10586 is the first Windows release that supports 256 colors.\n\t\t// Windows 10 build 14931 is the first release that supports 16m/TrueColor.\n\t\tconst osRelease = os.release().split('.');\n\t\tif (\n\t\t\tNumber(osRelease[0]) >= 10 &&\n\t\t\tNumber(osRelease[2]) >= 10586\n\t\t) {\n\t\t\treturn Number(osRelease[2]) >= 14931 ? 3 : 2;\n\t\t}\n\n\t\treturn 1;\n\t}\n\n\tif ('CI' in env) {\n\t\tif (['TRAVIS', 'CIRCLECI', 'APPVEYOR', 'GITLAB_CI', 'GITHUB_ACTIONS', 'BUILDKITE'].some(sign => sign in env) || env.CI_NAME === 'codeship') {\n\t\t\treturn 1;\n\t\t}\n\n\t\treturn min;\n\t}\n\n\tif ('TEAMCITY_VERSION' in env) {\n\t\treturn /^(9\\.(0*[1-9]\\d*)\\.|\\d{2,}\\.)/.test(env.TEAMCITY_VERSION) ? 1 : 0;\n\t}\n\n\tif (env.COLORTERM === 'truecolor') {\n\t\treturn 3;\n\t}\n\n\tif ('TERM_PROGRAM' in env) {\n\t\tconst version = parseInt((env.TERM_PROGRAM_VERSION || '').split('.')[0], 10);\n\n\t\tswitch (env.TERM_PROGRAM) {\n\t\t\tcase 'iTerm.app':\n\t\t\t\treturn version >= 3 ? 3 : 2;\n\t\t\tcase 'Apple_Terminal':\n\t\t\t\treturn 2;\n\t\t\t// No default\n\t\t}\n\t}\n\n\tif (/-256(color)?$/i.test(env.TERM)) {\n\t\treturn 2;\n\t}\n\n\tif (/^screen|^xterm|^vt100|^vt220|^rxvt|color|ansi|cygwin|linux/i.test(env.TERM)) {\n\t\treturn 1;\n\t}\n\n\tif ('COLORTERM' in env) {\n\t\treturn 1;\n\t}\n\n\treturn min;\n}\n\nfunction getSupportLevel(stream) {\n\tconst level = supportsColor(stream, stream && stream.isTTY);\n\treturn translateLevel(level);\n}\n\nmodule.exports = {\n\tsupportsColor: getSupportLevel,\n\tstdout: translateLevel(supportsColor(true, tty.isatty(1))),\n\tstderr: translateLevel(supportsColor(true, tty.isatty(2)))\n};\n","/**\n * Module dependencies.\n */\n\nconst tty = require('tty');\nconst util = require('util');\n\n/**\n * This is the Node.js implementation of `debug()`.\n */\n\nexports.init = init;\nexports.log = log;\nexports.formatArgs = formatArgs;\nexports.save = save;\nexports.load = load;\nexports.useColors = useColors;\nexports.destroy = util.deprecate(\n\t() => {},\n\t'Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.'\n);\n\n/**\n * Colors.\n */\n\nexports.colors = [6, 2, 3, 4, 5, 1];\n\ntry {\n\t// Optional dependency (as in, doesn't need to be installed, NOT like optionalDependencies in package.json)\n\t// eslint-disable-next-line import/no-extraneous-dependencies\n\tconst supportsColor = require('supports-color');\n\n\tif (supportsColor && (supportsColor.stderr || supportsColor).level >= 2) {\n\t\texports.colors = [\n\t\t\t20,\n\t\t\t21,\n\t\t\t26,\n\t\t\t27,\n\t\t\t32,\n\t\t\t33,\n\t\t\t38,\n\t\t\t39,\n\t\t\t40,\n\t\t\t41,\n\t\t\t42,\n\t\t\t43,\n\t\t\t44,\n\t\t\t45,\n\t\t\t56,\n\t\t\t57,\n\t\t\t62,\n\t\t\t63,\n\t\t\t68,\n\t\t\t69,\n\t\t\t74,\n\t\t\t75,\n\t\t\t76,\n\t\t\t77,\n\t\t\t78,\n\t\t\t79,\n\t\t\t80,\n\t\t\t81,\n\t\t\t92,\n\t\t\t93,\n\t\t\t98,\n\t\t\t99,\n\t\t\t112,\n\t\t\t113,\n\t\t\t128,\n\t\t\t129,\n\t\t\t134,\n\t\t\t135,\n\t\t\t148,\n\t\t\t149,\n\t\t\t160,\n\t\t\t161,\n\t\t\t162,\n\t\t\t163,\n\t\t\t164,\n\t\t\t165,\n\t\t\t166,\n\t\t\t167,\n\t\t\t168,\n\t\t\t169,\n\t\t\t170,\n\t\t\t171,\n\t\t\t172,\n\t\t\t173,\n\t\t\t178,\n\t\t\t179,\n\t\t\t184,\n\t\t\t185,\n\t\t\t196,\n\t\t\t197,\n\t\t\t198,\n\t\t\t199,\n\t\t\t200,\n\t\t\t201,\n\t\t\t202,\n\t\t\t203,\n\t\t\t204,\n\t\t\t205,\n\t\t\t206,\n\t\t\t207,\n\t\t\t208,\n\t\t\t209,\n\t\t\t214,\n\t\t\t215,\n\t\t\t220,\n\t\t\t221\n\t\t];\n\t}\n} catch (error) {\n\t// Swallow - we only care if `supports-color` is available; it doesn't have to be.\n}\n\n/**\n * Build up the default `inspectOpts` object from the environment variables.\n *\n * $ DEBUG_COLORS=no DEBUG_DEPTH=10 DEBUG_SHOW_HIDDEN=enabled node script.js\n */\n\nexports.inspectOpts = Object.keys(process.env).filter(key => {\n\treturn /^debug_/i.test(key);\n}).reduce((obj, key) => {\n\t// Camel-case\n\tconst prop = key\n\t\t.substring(6)\n\t\t.toLowerCase()\n\t\t.replace(/_([a-z])/g, (_, k) => {\n\t\t\treturn k.toUpperCase();\n\t\t});\n\n\t// Coerce string value into JS value\n\tlet val = process.env[key];\n\tif (/^(yes|on|true|enabled)$/i.test(val)) {\n\t\tval = true;\n\t} else if (/^(no|off|false|disabled)$/i.test(val)) {\n\t\tval = false;\n\t} else if (val === 'null') {\n\t\tval = null;\n\t} else {\n\t\tval = Number(val);\n\t}\n\n\tobj[prop] = val;\n\treturn obj;\n}, {});\n\n/**\n * Is stdout a TTY? Colored output is enabled when `true`.\n */\n\nfunction useColors() {\n\treturn 'colors' in exports.inspectOpts ?\n\t\tBoolean(exports.inspectOpts.colors) :\n\t\ttty.isatty(process.stderr.fd);\n}\n\n/**\n * Adds ANSI color escape codes if enabled.\n *\n * @api public\n */\n\nfunction formatArgs(args) {\n\tconst {namespace: name, useColors} = this;\n\n\tif (useColors) {\n\t\tconst c = this.color;\n\t\tconst colorCode = '\\u001B[3' + (c < 8 ? c : '8;5;' + c);\n\t\tconst prefix = ` ${colorCode};1m${name} \\u001B[0m`;\n\n\t\targs[0] = prefix + args[0].split('\\n').join('\\n' + prefix);\n\t\targs.push(colorCode + 'm+' + module.exports.humanize(this.diff) + '\\u001B[0m');\n\t} else {\n\t\targs[0] = getDate() + name + ' ' + args[0];\n\t}\n}\n\nfunction getDate() {\n\tif (exports.inspectOpts.hideDate) {\n\t\treturn '';\n\t}\n\treturn new Date().toISOString() + ' ';\n}\n\n/**\n * Invokes `util.formatWithOptions()` with the specified arguments and writes to stderr.\n */\n\nfunction log(...args) {\n\treturn process.stderr.write(util.formatWithOptions(exports.inspectOpts, ...args) + '\\n');\n}\n\n/**\n * Save `namespaces`.\n *\n * @param {String} namespaces\n * @api private\n */\nfunction save(namespaces) {\n\tif (namespaces) {\n\t\tprocess.env.DEBUG = namespaces;\n\t} else {\n\t\t// If you set a process.env field to null or undefined, it gets cast to the\n\t\t// string 'null' or 'undefined'. Just delete instead.\n\t\tdelete process.env.DEBUG;\n\t}\n}\n\n/**\n * Load `namespaces`.\n *\n * @return {String} returns the previously persisted debug modes\n * @api private\n */\n\nfunction load() {\n\treturn process.env.DEBUG;\n}\n\n/**\n * Init logic for `debug` instances.\n *\n * Create a new `inspectOpts` object in case `useColors` is set\n * differently for a particular `debug` instance.\n */\n\nfunction init(debug) {\n\tdebug.inspectOpts = {};\n\n\tconst keys = Object.keys(exports.inspectOpts);\n\tfor (let i = 0; i < keys.length; i++) {\n\t\tdebug.inspectOpts[keys[i]] = exports.inspectOpts[keys[i]];\n\t}\n}\n\nmodule.exports = require('./common')(exports);\n\nconst {formatters} = module.exports;\n\n/**\n * Map %o to `util.inspect()`, all on a single line.\n */\n\nformatters.o = function (v) {\n\tthis.inspectOpts.colors = this.useColors;\n\treturn util.inspect(v, this.inspectOpts)\n\t\t.split('\\n')\n\t\t.map(str => str.trim())\n\t\t.join(' ');\n};\n\n/**\n * Map %O to `util.inspect()`, allowing multiple lines if needed.\n */\n\nformatters.O = function (v) {\n\tthis.inspectOpts.colors = this.useColors;\n\treturn util.inspect(v, this.inspectOpts);\n};\n","/**\n * Detect Electron renderer / nwjs process, which is node, but we should\n * treat as a browser.\n */\n\nif (typeof process === 'undefined' || process.type === 'renderer' || process.browser === true || process.__nwjs) {\n\tmodule.exports = require('./browser.js');\n} else {\n\tmodule.exports = require('./node.js');\n}\n","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.req = exports.json = exports.toBuffer = void 0;\nconst http = __importStar(require(\"http\"));\nconst https = __importStar(require(\"https\"));\nasync function toBuffer(stream) {\n let length = 0;\n const chunks = [];\n for await (const chunk of stream) {\n length += chunk.length;\n chunks.push(chunk);\n }\n return Buffer.concat(chunks, length);\n}\nexports.toBuffer = toBuffer;\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nasync function json(stream) {\n const buf = await toBuffer(stream);\n const str = buf.toString('utf8');\n try {\n return JSON.parse(str);\n }\n catch (_err) {\n const err = _err;\n err.message += ` (input: ${str})`;\n throw err;\n }\n}\nexports.json = json;\nfunction req(url, opts = {}) {\n const href = typeof url === 'string' ? url : url.href;\n const req = (href.startsWith('https:') ? https : http).request(url, opts);\n const promise = new Promise((resolve, reject) => {\n req\n .once('response', resolve)\n .once('error', reject)\n .end();\n });\n req.then = promise.then.bind(promise);\n return req;\n}\nexports.req = req;\n//# sourceMappingURL=helpers.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Agent = void 0;\nconst net = __importStar(require(\"net\"));\nconst http = __importStar(require(\"http\"));\nconst https_1 = require(\"https\");\n__exportStar(require(\"./helpers\"), exports);\nconst INTERNAL = Symbol('AgentBaseInternalState');\nclass Agent extends http.Agent {\n constructor(opts) {\n super(opts);\n this[INTERNAL] = {};\n }\n /**\n * Determine whether this is an `http` or `https` request.\n */\n isSecureEndpoint(options) {\n if (options) {\n // First check the `secureEndpoint` property explicitly, since this\n // means that a parent `Agent` is \"passing through\" to this instance.\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (typeof options.secureEndpoint === 'boolean') {\n return options.secureEndpoint;\n }\n // If no explicit `secure` endpoint, check if `protocol` property is\n // set. This will usually be the case since using a full string URL\n // or `URL` instance should be the most common usage.\n if (typeof options.protocol === 'string') {\n return options.protocol === 'https:';\n }\n }\n // Finally, if no `protocol` property was set, then fall back to\n // checking the stack trace of the current call stack, and try to\n // detect the \"https\" module.\n const { stack } = new Error();\n if (typeof stack !== 'string')\n return false;\n return stack\n .split('\\n')\n .some((l) => l.indexOf('(https.js:') !== -1 ||\n l.indexOf('node:https:') !== -1);\n }\n // In order to support async signatures in `connect()` and Node's native\n // connection pooling in `http.Agent`, the array of sockets for each origin\n // has to be updated synchronously. This is so the length of the array is\n // accurate when `addRequest()` is next called. We achieve this by creating a\n // fake socket and adding it to `sockets[origin]` and incrementing\n // `totalSocketCount`.\n incrementSockets(name) {\n // If `maxSockets` and `maxTotalSockets` are both Infinity then there is no\n // need to create a fake socket because Node.js native connection pooling\n // will never be invoked.\n if (this.maxSockets === Infinity && this.maxTotalSockets === Infinity) {\n return null;\n }\n // All instances of `sockets` are expected TypeScript errors. The\n // alternative is to add it as a private property of this class but that\n // will break TypeScript subclassing.\n if (!this.sockets[name]) {\n // @ts-expect-error `sockets` is readonly in `@types/node`\n this.sockets[name] = [];\n }\n const fakeSocket = new net.Socket({ writable: false });\n this.sockets[name].push(fakeSocket);\n // @ts-expect-error `totalSocketCount` isn't defined in `@types/node`\n this.totalSocketCount++;\n return fakeSocket;\n }\n decrementSockets(name, socket) {\n if (!this.sockets[name] || socket === null) {\n return;\n }\n const sockets = this.sockets[name];\n const index = sockets.indexOf(socket);\n if (index !== -1) {\n sockets.splice(index, 1);\n // @ts-expect-error `totalSocketCount` isn't defined in `@types/node`\n this.totalSocketCount--;\n if (sockets.length === 0) {\n // @ts-expect-error `sockets` is readonly in `@types/node`\n delete this.sockets[name];\n }\n }\n }\n // In order to properly update the socket pool, we need to call `getName()` on\n // the core `https.Agent` if it is a secureEndpoint.\n getName(options) {\n const secureEndpoint = this.isSecureEndpoint(options);\n if (secureEndpoint) {\n // @ts-expect-error `getName()` isn't defined in `@types/node`\n return https_1.Agent.prototype.getName.call(this, options);\n }\n // @ts-expect-error `getName()` isn't defined in `@types/node`\n return super.getName(options);\n }\n createSocket(req, options, cb) {\n const connectOpts = {\n ...options,\n secureEndpoint: this.isSecureEndpoint(options),\n };\n const name = this.getName(connectOpts);\n const fakeSocket = this.incrementSockets(name);\n Promise.resolve()\n .then(() => this.connect(req, connectOpts))\n .then((socket) => {\n this.decrementSockets(name, fakeSocket);\n if (socket instanceof http.Agent) {\n try {\n // @ts-expect-error `addRequest()` isn't defined in `@types/node`\n return socket.addRequest(req, connectOpts);\n }\n catch (err) {\n return cb(err);\n }\n }\n this[INTERNAL].currentSocket = socket;\n // @ts-expect-error `createSocket()` isn't defined in `@types/node`\n super.createSocket(req, options, cb);\n }, (err) => {\n this.decrementSockets(name, fakeSocket);\n cb(err);\n });\n }\n createConnection() {\n const socket = this[INTERNAL].currentSocket;\n this[INTERNAL].currentSocket = undefined;\n if (!socket) {\n throw new Error('No socket was returned in the `connect()` function');\n }\n return socket;\n }\n get defaultPort() {\n return (this[INTERNAL].defaultPort ??\n (this.protocol === 'https:' ? 443 : 80));\n }\n set defaultPort(v) {\n if (this[INTERNAL]) {\n this[INTERNAL].defaultPort = v;\n }\n }\n get protocol() {\n return (this[INTERNAL].protocol ??\n (this.isSecureEndpoint() ? 'https:' : 'http:'));\n }\n set protocol(v) {\n if (this[INTERNAL]) {\n this[INTERNAL].protocol = v;\n }\n }\n}\nexports.Agent = Agent;\n//# sourceMappingURL=index.js.map","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.parseProxyResponse = void 0;\nconst debug_1 = __importDefault(require(\"debug\"));\nconst debug = (0, debug_1.default)('https-proxy-agent:parse-proxy-response');\nfunction parseProxyResponse(socket) {\n return new Promise((resolve, reject) => {\n // we need to buffer any HTTP traffic that happens with the proxy before we get\n // the CONNECT response, so that if the response is anything other than an \"200\"\n // response code, then we can re-play the \"data\" events on the socket once the\n // HTTP parser is hooked up...\n let buffersLength = 0;\n const buffers = [];\n function read() {\n const b = socket.read();\n if (b)\n ondata(b);\n else\n socket.once('readable', read);\n }\n function cleanup() {\n socket.removeListener('end', onend);\n socket.removeListener('error', onerror);\n socket.removeListener('readable', read);\n }\n function onend() {\n cleanup();\n debug('onend');\n reject(new Error('Proxy connection ended before receiving CONNECT response'));\n }\n function onerror(err) {\n cleanup();\n debug('onerror %o', err);\n reject(err);\n }\n function ondata(b) {\n buffers.push(b);\n buffersLength += b.length;\n const buffered = Buffer.concat(buffers, buffersLength);\n const endOfHeaders = buffered.indexOf('\\r\\n\\r\\n');\n if (endOfHeaders === -1) {\n // keep buffering\n debug('have not received end of HTTP headers yet...');\n read();\n return;\n }\n const headerParts = buffered\n .slice(0, endOfHeaders)\n .toString('ascii')\n .split('\\r\\n');\n const firstLine = headerParts.shift();\n if (!firstLine) {\n socket.destroy();\n return reject(new Error('No header received from proxy CONNECT response'));\n }\n const firstLineParts = firstLine.split(' ');\n const statusCode = +firstLineParts[1];\n const statusText = firstLineParts.slice(2).join(' ');\n const headers = {};\n for (const header of headerParts) {\n if (!header)\n continue;\n const firstColon = header.indexOf(':');\n if (firstColon === -1) {\n socket.destroy();\n return reject(new Error(`Invalid header from proxy CONNECT response: \"${header}\"`));\n }\n const key = header.slice(0, firstColon).toLowerCase();\n const value = header.slice(firstColon + 1).trimStart();\n const current = headers[key];\n if (typeof current === 'string') {\n headers[key] = [current, value];\n }\n else if (Array.isArray(current)) {\n current.push(value);\n }\n else {\n headers[key] = value;\n }\n }\n debug('got proxy server response: %o %o', firstLine, headers);\n cleanup();\n resolve({\n connect: {\n statusCode,\n statusText,\n headers,\n },\n buffered,\n });\n }\n socket.on('error', onerror);\n socket.on('end', onend);\n read();\n });\n}\nexports.parseProxyResponse = parseProxyResponse;\n//# sourceMappingURL=parse-proxy-response.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.HttpsProxyAgent = void 0;\nconst net = __importStar(require(\"net\"));\nconst tls = __importStar(require(\"tls\"));\nconst assert_1 = __importDefault(require(\"assert\"));\nconst debug_1 = __importDefault(require(\"debug\"));\nconst agent_base_1 = require(\"agent-base\");\nconst url_1 = require(\"url\");\nconst parse_proxy_response_1 = require(\"./parse-proxy-response\");\nconst debug = (0, debug_1.default)('https-proxy-agent');\nconst setServernameFromNonIpHost = (options) => {\n if (options.servername === undefined &&\n options.host &&\n !net.isIP(options.host)) {\n return {\n ...options,\n servername: options.host,\n };\n }\n return options;\n};\n/**\n * The `HttpsProxyAgent` implements an HTTP Agent subclass that connects to\n * the specified \"HTTP(s) proxy server\" in order to proxy HTTPS requests.\n *\n * Outgoing HTTP requests are first tunneled through the proxy server using the\n * `CONNECT` HTTP request method to establish a connection to the proxy server,\n * and then the proxy server connects to the destination target and issues the\n * HTTP request from the proxy server.\n *\n * `https:` requests have their socket connection upgraded to TLS once\n * the connection to the proxy server has been established.\n */\nclass HttpsProxyAgent extends agent_base_1.Agent {\n constructor(proxy, opts) {\n super(opts);\n this.options = { path: undefined };\n this.proxy = typeof proxy === 'string' ? new url_1.URL(proxy) : proxy;\n this.proxyHeaders = opts?.headers ?? {};\n debug('Creating new HttpsProxyAgent instance: %o', this.proxy.href);\n // Trim off the brackets from IPv6 addresses\n const host = (this.proxy.hostname || this.proxy.host).replace(/^\\[|\\]$/g, '');\n const port = this.proxy.port\n ? parseInt(this.proxy.port, 10)\n : this.proxy.protocol === 'https:'\n ? 443\n : 80;\n this.connectOpts = {\n // Attempt to negotiate http/1.1 for proxy servers that support http/2\n ALPNProtocols: ['http/1.1'],\n ...(opts ? omit(opts, 'headers') : null),\n host,\n port,\n };\n }\n /**\n * Called when the node-core HTTP client library is creating a\n * new HTTP request.\n */\n async connect(req, opts) {\n const { proxy } = this;\n if (!opts.host) {\n throw new TypeError('No \"host\" provided');\n }\n // Create a socket connection to the proxy server.\n let socket;\n if (proxy.protocol === 'https:') {\n debug('Creating `tls.Socket`: %o', this.connectOpts);\n socket = tls.connect(setServernameFromNonIpHost(this.connectOpts));\n }\n else {\n debug('Creating `net.Socket`: %o', this.connectOpts);\n socket = net.connect(this.connectOpts);\n }\n const headers = typeof this.proxyHeaders === 'function'\n ? this.proxyHeaders()\n : { ...this.proxyHeaders };\n const host = net.isIPv6(opts.host) ? `[${opts.host}]` : opts.host;\n let payload = `CONNECT ${host}:${opts.port} HTTP/1.1\\r\\n`;\n // Inject the `Proxy-Authorization` header if necessary.\n if (proxy.username || proxy.password) {\n const auth = `${decodeURIComponent(proxy.username)}:${decodeURIComponent(proxy.password)}`;\n headers['Proxy-Authorization'] = `Basic ${Buffer.from(auth).toString('base64')}`;\n }\n headers.Host = `${host}:${opts.port}`;\n if (!headers['Proxy-Connection']) {\n headers['Proxy-Connection'] = this.keepAlive\n ? 'Keep-Alive'\n : 'close';\n }\n for (const name of Object.keys(headers)) {\n payload += `${name}: ${headers[name]}\\r\\n`;\n }\n const proxyResponsePromise = (0, parse_proxy_response_1.parseProxyResponse)(socket);\n socket.write(`${payload}\\r\\n`);\n const { connect, buffered } = await proxyResponsePromise;\n req.emit('proxyConnect', connect);\n this.emit('proxyConnect', connect, req);\n if (connect.statusCode === 200) {\n req.once('socket', resume);\n if (opts.secureEndpoint) {\n // The proxy is connecting to a TLS server, so upgrade\n // this socket connection to a TLS connection.\n debug('Upgrading socket connection to TLS');\n return tls.connect({\n ...omit(setServernameFromNonIpHost(opts), 'host', 'path', 'port'),\n socket,\n });\n }\n return socket;\n }\n // Some other status code that's not 200... need to re-play the HTTP\n // header \"data\" events onto the socket once the HTTP machinery is\n // attached so that the node core `http` can parse and handle the\n // error status code.\n // Close the original socket, and a new \"fake\" socket is returned\n // instead, so that the proxy doesn't get the HTTP request\n // written to it (which may contain `Authorization` headers or other\n // sensitive data).\n //\n // See: https://hackerone.com/reports/541502\n socket.destroy();\n const fakeSocket = new net.Socket({ writable: false });\n fakeSocket.readable = true;\n // Need to wait for the \"socket\" event to re-play the \"data\" events.\n req.once('socket', (s) => {\n debug('Replaying proxy buffer for failed request');\n (0, assert_1.default)(s.listenerCount('data') > 0);\n // Replay the \"buffered\" Buffer onto the fake `socket`, since at\n // this point the HTTP module machinery has been hooked up for\n // the user.\n s.push(buffered);\n s.push(null);\n });\n return fakeSocket;\n }\n}\nHttpsProxyAgent.protocols = ['http', 'https'];\nexports.HttpsProxyAgent = HttpsProxyAgent;\nfunction resume(socket) {\n socket.resume();\n}\nfunction omit(obj, ...keys) {\n const ret = {};\n let key;\n for (key in obj) {\n if (!keys.includes(key)) {\n ret[key] = obj[key];\n }\n }\n return ret;\n}\n//# sourceMappingURL=index.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.HttpProxyAgent = void 0;\nconst net = __importStar(require(\"net\"));\nconst tls = __importStar(require(\"tls\"));\nconst debug_1 = __importDefault(require(\"debug\"));\nconst events_1 = require(\"events\");\nconst agent_base_1 = require(\"agent-base\");\nconst url_1 = require(\"url\");\nconst debug = (0, debug_1.default)('http-proxy-agent');\n/**\n * The `HttpProxyAgent` implements an HTTP Agent subclass that connects\n * to the specified \"HTTP proxy server\" in order to proxy HTTP requests.\n */\nclass HttpProxyAgent extends agent_base_1.Agent {\n constructor(proxy, opts) {\n super(opts);\n this.proxy = typeof proxy === 'string' ? new url_1.URL(proxy) : proxy;\n this.proxyHeaders = opts?.headers ?? {};\n debug('Creating new HttpProxyAgent instance: %o', this.proxy.href);\n // Trim off the brackets from IPv6 addresses\n const host = (this.proxy.hostname || this.proxy.host).replace(/^\\[|\\]$/g, '');\n const port = this.proxy.port\n ? parseInt(this.proxy.port, 10)\n : this.proxy.protocol === 'https:'\n ? 443\n : 80;\n this.connectOpts = {\n ...(opts ? omit(opts, 'headers') : null),\n host,\n port,\n };\n }\n addRequest(req, opts) {\n req._header = null;\n this.setRequestProps(req, opts);\n // @ts-expect-error `addRequest()` isn't defined in `@types/node`\n super.addRequest(req, opts);\n }\n setRequestProps(req, opts) {\n const { proxy } = this;\n const protocol = opts.secureEndpoint ? 'https:' : 'http:';\n const hostname = req.getHeader('host') || 'localhost';\n const base = `${protocol}//${hostname}`;\n const url = new url_1.URL(req.path, base);\n if (opts.port !== 80) {\n url.port = String(opts.port);\n }\n // Change the `http.ClientRequest` instance's \"path\" field\n // to the absolute path of the URL that will be requested.\n req.path = String(url);\n // Inject the `Proxy-Authorization` header if necessary.\n const headers = typeof this.proxyHeaders === 'function'\n ? this.proxyHeaders()\n : { ...this.proxyHeaders };\n if (proxy.username || proxy.password) {\n const auth = `${decodeURIComponent(proxy.username)}:${decodeURIComponent(proxy.password)}`;\n headers['Proxy-Authorization'] = `Basic ${Buffer.from(auth).toString('base64')}`;\n }\n if (!headers['Proxy-Connection']) {\n headers['Proxy-Connection'] = this.keepAlive\n ? 'Keep-Alive'\n : 'close';\n }\n for (const name of Object.keys(headers)) {\n const value = headers[name];\n if (value) {\n req.setHeader(name, value);\n }\n }\n }\n async connect(req, opts) {\n req._header = null;\n if (!req.path.includes('://')) {\n this.setRequestProps(req, opts);\n }\n // At this point, the http ClientRequest's internal `_header` field\n // might have already been set. If this is the case then we'll need\n // to re-generate the string since we just changed the `req.path`.\n let first;\n let endOfHeaders;\n debug('Regenerating stored HTTP header string for request');\n req._implicitHeader();\n if (req.outputData && req.outputData.length > 0) {\n debug('Patching connection write() output buffer with updated header');\n first = req.outputData[0].data;\n endOfHeaders = first.indexOf('\\r\\n\\r\\n') + 4;\n req.outputData[0].data =\n req._header + first.substring(endOfHeaders);\n debug('Output buffer: %o', req.outputData[0].data);\n }\n // Create a socket connection to the proxy server.\n let socket;\n if (this.proxy.protocol === 'https:') {\n debug('Creating `tls.Socket`: %o', this.connectOpts);\n socket = tls.connect(this.connectOpts);\n }\n else {\n debug('Creating `net.Socket`: %o', this.connectOpts);\n socket = net.connect(this.connectOpts);\n }\n // Wait for the socket's `connect` event, so that this `callback()`\n // function throws instead of the `http` request machinery. This is\n // important for i.e. `PacProxyAgent` which determines a failed proxy\n // connection via the `callback()` function throwing.\n await (0, events_1.once)(socket, 'connect');\n return socket;\n }\n}\nHttpProxyAgent.protocols = ['http', 'https'];\nexports.HttpProxyAgent = HttpProxyAgent;\nfunction omit(obj, ...keys) {\n const ret = {};\n let key;\n for (key in obj) {\n if (!keys.includes(key)) {\n ret[key] = obj[key];\n }\n }\n return ret;\n}\n//# sourceMappingURL=index.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.globalNoProxyList = exports.proxyPolicyName = void 0;\nexports.loadNoProxy = loadNoProxy;\nexports.getDefaultProxySettings = getDefaultProxySettings;\nexports.proxyPolicy = proxyPolicy;\nconst https_proxy_agent_1 = require(\"https-proxy-agent\");\nconst http_proxy_agent_1 = require(\"http-proxy-agent\");\nconst log_js_1 = require(\"../log.js\");\nconst HTTPS_PROXY = \"HTTPS_PROXY\";\nconst HTTP_PROXY = \"HTTP_PROXY\";\nconst ALL_PROXY = \"ALL_PROXY\";\nconst NO_PROXY = \"NO_PROXY\";\n/**\n * The programmatic identifier of the proxyPolicy.\n */\nexports.proxyPolicyName = \"proxyPolicy\";\n/**\n * Stores the patterns specified in NO_PROXY environment variable.\n * @internal\n */\nexports.globalNoProxyList = [];\nlet noProxyListLoaded = false;\n/** A cache of whether a host should bypass the proxy. */\nconst globalBypassedMap = new Map();\nfunction getEnvironmentValue(name) {\n if (process.env[name]) {\n return process.env[name];\n }\n else if (process.env[name.toLowerCase()]) {\n return process.env[name.toLowerCase()];\n }\n return undefined;\n}\nfunction loadEnvironmentProxyValue() {\n if (!process) {\n return undefined;\n }\n const httpsProxy = getEnvironmentValue(HTTPS_PROXY);\n const allProxy = getEnvironmentValue(ALL_PROXY);\n const httpProxy = getEnvironmentValue(HTTP_PROXY);\n return httpsProxy || allProxy || httpProxy;\n}\n/**\n * Check whether the host of a given `uri` matches any pattern in the no proxy list.\n * If there's a match, any request sent to the same host shouldn't have the proxy settings set.\n * This implementation is a port of https://github.com/Azure/azure-sdk-for-net/blob/8cca811371159e527159c7eb65602477898683e2/sdk/core/Azure.Core/src/Pipeline/Internal/HttpEnvironmentProxy.cs#L210\n */\nfunction isBypassed(uri, noProxyList, bypassedMap) {\n if (noProxyList.length === 0) {\n return false;\n }\n const host = new URL(uri).hostname;\n if (bypassedMap?.has(host)) {\n return bypassedMap.get(host);\n }\n let isBypassedFlag = false;\n for (const pattern of noProxyList) {\n if (pattern[0] === \".\") {\n // This should match either domain it self or any subdomain or host\n // .foo.com will match foo.com it self or *.foo.com\n if (host.endsWith(pattern)) {\n isBypassedFlag = true;\n }\n else {\n if (host.length === pattern.length - 1 && host === pattern.slice(1)) {\n isBypassedFlag = true;\n }\n }\n }\n else {\n if (host === pattern) {\n isBypassedFlag = true;\n }\n }\n }\n bypassedMap?.set(host, isBypassedFlag);\n return isBypassedFlag;\n}\nfunction loadNoProxy() {\n const noProxy = getEnvironmentValue(NO_PROXY);\n noProxyListLoaded = true;\n if (noProxy) {\n return noProxy\n .split(\",\")\n .map((item) => item.trim())\n .filter((item) => item.length);\n }\n return [];\n}\n/**\n * This method converts a proxy url into `ProxySettings` for use with ProxyPolicy.\n * If no argument is given, it attempts to parse a proxy URL from the environment\n * variables `HTTPS_PROXY` or `HTTP_PROXY`.\n * @param proxyUrl - The url of the proxy to use. May contain authentication information.\n * @deprecated - Internally this method is no longer necessary when setting proxy information.\n */\nfunction getDefaultProxySettings(proxyUrl) {\n if (!proxyUrl) {\n proxyUrl = loadEnvironmentProxyValue();\n if (!proxyUrl) {\n return undefined;\n }\n }\n const parsedUrl = new URL(proxyUrl);\n const schema = parsedUrl.protocol ? parsedUrl.protocol + \"//\" : \"\";\n return {\n host: schema + parsedUrl.hostname,\n port: Number.parseInt(parsedUrl.port || \"80\"),\n username: parsedUrl.username,\n password: parsedUrl.password,\n };\n}\n/**\n * This method attempts to parse a proxy URL from the environment\n * variables `HTTPS_PROXY` or `HTTP_PROXY`.\n */\nfunction getDefaultProxySettingsInternal() {\n const envProxy = loadEnvironmentProxyValue();\n return envProxy ? new URL(envProxy) : undefined;\n}\nfunction getUrlFromProxySettings(settings) {\n let parsedProxyUrl;\n try {\n parsedProxyUrl = new URL(settings.host);\n }\n catch {\n throw new Error(`Expecting a valid host string in proxy settings, but found \"${settings.host}\".`);\n }\n parsedProxyUrl.port = String(settings.port);\n if (settings.username) {\n parsedProxyUrl.username = settings.username;\n }\n if (settings.password) {\n parsedProxyUrl.password = settings.password;\n }\n return parsedProxyUrl;\n}\nfunction setProxyAgentOnRequest(request, cachedAgents, proxyUrl) {\n // Custom Agent should take precedence so if one is present\n // we should skip to avoid overwriting it.\n if (request.agent) {\n return;\n }\n const url = new URL(request.url);\n const isInsecure = url.protocol !== \"https:\";\n if (request.tlsSettings) {\n log_js_1.logger.warning(\"TLS settings are not supported in combination with custom Proxy, certificates provided to the client will be ignored.\");\n }\n const headers = request.headers.toJSON();\n if (isInsecure) {\n if (!cachedAgents.httpProxyAgent) {\n cachedAgents.httpProxyAgent = new http_proxy_agent_1.HttpProxyAgent(proxyUrl, { headers });\n }\n request.agent = cachedAgents.httpProxyAgent;\n }\n else {\n if (!cachedAgents.httpsProxyAgent) {\n cachedAgents.httpsProxyAgent = new https_proxy_agent_1.HttpsProxyAgent(proxyUrl, { headers });\n }\n request.agent = cachedAgents.httpsProxyAgent;\n }\n}\n/**\n * A policy that allows one to apply proxy settings to all requests.\n * If not passed static settings, they will be retrieved from the HTTPS_PROXY\n * or HTTP_PROXY environment variables.\n * @param proxySettings - ProxySettings to use on each request.\n * @param options - additional settings, for example, custom NO_PROXY patterns\n */\nfunction proxyPolicy(proxySettings, options) {\n if (!noProxyListLoaded) {\n exports.globalNoProxyList.push(...loadNoProxy());\n }\n const defaultProxy = proxySettings\n ? getUrlFromProxySettings(proxySettings)\n : getDefaultProxySettingsInternal();\n const cachedAgents = {};\n return {\n name: exports.proxyPolicyName,\n async sendRequest(request, next) {\n if (!request.proxySettings &&\n defaultProxy &&\n !isBypassed(request.url, options?.customNoProxyList ?? exports.globalNoProxyList, options?.customNoProxyList ? undefined : globalBypassedMap)) {\n setProxyAgentOnRequest(request, cachedAgents, defaultProxy);\n }\n else if (request.proxySettings) {\n setProxyAgentOnRequest(request, cachedAgents, getUrlFromProxySettings(request.proxySettings));\n }\n return next(request);\n },\n };\n}\n//# sourceMappingURL=proxyPolicy.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.agentPolicyName = void 0;\nexports.agentPolicy = agentPolicy;\n/**\n * Name of the Agent Policy\n */\nexports.agentPolicyName = \"agentPolicy\";\n/**\n * Gets a pipeline policy that sets http.agent\n */\nfunction agentPolicy(agent) {\n return {\n name: exports.agentPolicyName,\n sendRequest: async (req, next) => {\n // Users may define an agent on the request, honor it over the client level one\n if (!req.agent) {\n req.agent = agent;\n }\n return next(req);\n },\n };\n}\n//# sourceMappingURL=agentPolicy.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.tlsPolicyName = void 0;\nexports.tlsPolicy = tlsPolicy;\n/**\n * Name of the TLS Policy\n */\nexports.tlsPolicyName = \"tlsPolicy\";\n/**\n * Gets a pipeline policy that adds the client certificate to the HttpClient agent for authentication.\n */\nfunction tlsPolicy(tlsSettings) {\n return {\n name: exports.tlsPolicyName,\n sendRequest: async (req, next) => {\n // Users may define a request tlsSettings, honor those over the client level one\n if (!req.tlsSettings) {\n req.tlsSettings = tlsSettings;\n }\n return next(req);\n },\n };\n}\n//# sourceMappingURL=tlsPolicy.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isNodeReadableStream = isNodeReadableStream;\nexports.isWebReadableStream = isWebReadableStream;\nexports.isBinaryBody = isBinaryBody;\nexports.isReadableStream = isReadableStream;\nexports.isBlob = isBlob;\nfunction isNodeReadableStream(x) {\n return Boolean(x && typeof x[\"pipe\"] === \"function\");\n}\nfunction isWebReadableStream(x) {\n return Boolean(x &&\n typeof x.getReader === \"function\" &&\n typeof x.tee === \"function\");\n}\nfunction isBinaryBody(body) {\n return (body !== undefined &&\n (body instanceof Uint8Array ||\n isReadableStream(body) ||\n typeof body === \"function\" ||\n body instanceof Blob));\n}\nfunction isReadableStream(x) {\n return isNodeReadableStream(x) || isWebReadableStream(x);\n}\nfunction isBlob(x) {\n return typeof x.stream === \"function\";\n}\n//# sourceMappingURL=typeGuards.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.concat = concat;\nconst stream_1 = require(\"stream\");\nconst typeGuards_js_1 = require(\"./typeGuards.js\");\nasync function* streamAsyncIterator() {\n const reader = this.getReader();\n try {\n while (true) {\n const { done, value } = await reader.read();\n if (done) {\n return;\n }\n yield value;\n }\n }\n finally {\n reader.releaseLock();\n }\n}\nfunction makeAsyncIterable(webStream) {\n if (!webStream[Symbol.asyncIterator]) {\n webStream[Symbol.asyncIterator] = streamAsyncIterator.bind(webStream);\n }\n if (!webStream.values) {\n webStream.values = streamAsyncIterator.bind(webStream);\n }\n}\nfunction ensureNodeStream(stream) {\n if (stream instanceof ReadableStream) {\n makeAsyncIterable(stream);\n return stream_1.Readable.fromWeb(stream);\n }\n else {\n return stream;\n }\n}\nfunction toStream(source) {\n if (source instanceof Uint8Array) {\n return stream_1.Readable.from(Buffer.from(source));\n }\n else if ((0, typeGuards_js_1.isBlob)(source)) {\n return ensureNodeStream(source.stream());\n }\n else {\n return ensureNodeStream(source);\n }\n}\n/**\n * Utility function that concatenates a set of binary inputs into one combined output.\n *\n * @param sources - array of sources for the concatenation\n * @returns - in Node, a (() =\\> NodeJS.ReadableStream) which, when read, produces a concatenation of all the inputs.\n * In browser, returns a `Blob` representing all the concatenated inputs.\n *\n * @internal\n */\nasync function concat(sources) {\n return function () {\n const streams = sources.map((x) => (typeof x === \"function\" ? x() : x)).map(toStream);\n return stream_1.Readable.from((async function* () {\n for (const stream of streams) {\n for await (const chunk of stream) {\n yield chunk;\n }\n }\n })());\n };\n}\n//# sourceMappingURL=concat.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.multipartPolicyName = void 0;\nexports.multipartPolicy = multipartPolicy;\nconst bytesEncoding_js_1 = require(\"../util/bytesEncoding.js\");\nconst typeGuards_js_1 = require(\"../util/typeGuards.js\");\nconst uuidUtils_js_1 = require(\"../util/uuidUtils.js\");\nconst concat_js_1 = require(\"../util/concat.js\");\nfunction generateBoundary() {\n return `----AzSDKFormBoundary${(0, uuidUtils_js_1.randomUUID)()}`;\n}\nfunction encodeHeaders(headers) {\n let result = \"\";\n for (const [key, value] of headers) {\n result += `${key}: ${value}\\r\\n`;\n }\n return result;\n}\nfunction getLength(source) {\n if (source instanceof Uint8Array) {\n return source.byteLength;\n }\n else if ((0, typeGuards_js_1.isBlob)(source)) {\n // if was created using createFile then -1 means we have an unknown size\n return source.size === -1 ? undefined : source.size;\n }\n else {\n return undefined;\n }\n}\nfunction getTotalLength(sources) {\n let total = 0;\n for (const source of sources) {\n const partLength = getLength(source);\n if (partLength === undefined) {\n return undefined;\n }\n else {\n total += partLength;\n }\n }\n return total;\n}\nasync function buildRequestBody(request, parts, boundary) {\n const sources = [\n (0, bytesEncoding_js_1.stringToUint8Array)(`--${boundary}`, \"utf-8\"),\n ...parts.flatMap((part) => [\n (0, bytesEncoding_js_1.stringToUint8Array)(\"\\r\\n\", \"utf-8\"),\n (0, bytesEncoding_js_1.stringToUint8Array)(encodeHeaders(part.headers), \"utf-8\"),\n (0, bytesEncoding_js_1.stringToUint8Array)(\"\\r\\n\", \"utf-8\"),\n part.body,\n (0, bytesEncoding_js_1.stringToUint8Array)(`\\r\\n--${boundary}`, \"utf-8\"),\n ]),\n (0, bytesEncoding_js_1.stringToUint8Array)(\"--\\r\\n\\r\\n\", \"utf-8\"),\n ];\n const contentLength = getTotalLength(sources);\n if (contentLength) {\n request.headers.set(\"Content-Length\", contentLength);\n }\n request.body = await (0, concat_js_1.concat)(sources);\n}\n/**\n * Name of multipart policy\n */\nexports.multipartPolicyName = \"multipartPolicy\";\nconst maxBoundaryLength = 70;\nconst validBoundaryCharacters = new Set(`abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789'()+,-./:=?`);\nfunction assertValidBoundary(boundary) {\n if (boundary.length > maxBoundaryLength) {\n throw new Error(`Multipart boundary \"${boundary}\" exceeds maximum length of 70 characters`);\n }\n if (Array.from(boundary).some((x) => !validBoundaryCharacters.has(x))) {\n throw new Error(`Multipart boundary \"${boundary}\" contains invalid characters`);\n }\n}\n/**\n * Pipeline policy for multipart requests\n */\nfunction multipartPolicy() {\n return {\n name: exports.multipartPolicyName,\n async sendRequest(request, next) {\n if (!request.multipartBody) {\n return next(request);\n }\n if (request.body) {\n throw new Error(\"multipartBody and regular body cannot be set at the same time\");\n }\n let boundary = request.multipartBody.boundary;\n const contentTypeHeader = request.headers.get(\"Content-Type\") ?? \"multipart/mixed\";\n const parsedHeader = contentTypeHeader.match(/^(multipart\\/[^ ;]+)(?:; *boundary=(.+))?$/);\n if (!parsedHeader) {\n throw new Error(`Got multipart request body, but content-type header was not multipart: ${contentTypeHeader}`);\n }\n const [, contentType, parsedBoundary] = parsedHeader;\n if (parsedBoundary && boundary && parsedBoundary !== boundary) {\n throw new Error(`Multipart boundary was specified as ${parsedBoundary} in the header, but got ${boundary} in the request body`);\n }\n boundary ??= parsedBoundary;\n if (boundary) {\n assertValidBoundary(boundary);\n }\n else {\n boundary = generateBoundary();\n }\n request.headers.set(\"Content-Type\", `${contentType}; boundary=${boundary}`);\n await buildRequestBody(request, request.multipartBody.parts, boundary);\n request.multipartBody = undefined;\n return next(request);\n },\n };\n}\n//# sourceMappingURL=multipartPolicy.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.createPipelineFromOptions = createPipelineFromOptions;\nconst logPolicy_js_1 = require(\"./policies/logPolicy.js\");\nconst pipeline_js_1 = require(\"./pipeline.js\");\nconst redirectPolicy_js_1 = require(\"./policies/redirectPolicy.js\");\nconst userAgentPolicy_js_1 = require(\"./policies/userAgentPolicy.js\");\nconst decompressResponsePolicy_js_1 = require(\"./policies/decompressResponsePolicy.js\");\nconst defaultRetryPolicy_js_1 = require(\"./policies/defaultRetryPolicy.js\");\nconst formDataPolicy_js_1 = require(\"./policies/formDataPolicy.js\");\nconst checkEnvironment_js_1 = require(\"./util/checkEnvironment.js\");\nconst proxyPolicy_js_1 = require(\"./policies/proxyPolicy.js\");\nconst agentPolicy_js_1 = require(\"./policies/agentPolicy.js\");\nconst tlsPolicy_js_1 = require(\"./policies/tlsPolicy.js\");\nconst multipartPolicy_js_1 = require(\"./policies/multipartPolicy.js\");\n/**\n * Create a new pipeline with a default set of customizable policies.\n * @param options - Options to configure a custom pipeline.\n */\nfunction createPipelineFromOptions(options) {\n const pipeline = (0, pipeline_js_1.createEmptyPipeline)();\n if (checkEnvironment_js_1.isNodeLike) {\n if (options.agent) {\n pipeline.addPolicy((0, agentPolicy_js_1.agentPolicy)(options.agent));\n }\n if (options.tlsOptions) {\n pipeline.addPolicy((0, tlsPolicy_js_1.tlsPolicy)(options.tlsOptions));\n }\n pipeline.addPolicy((0, proxyPolicy_js_1.proxyPolicy)(options.proxyOptions));\n pipeline.addPolicy((0, decompressResponsePolicy_js_1.decompressResponsePolicy)());\n }\n pipeline.addPolicy((0, formDataPolicy_js_1.formDataPolicy)(), { beforePolicies: [multipartPolicy_js_1.multipartPolicyName] });\n pipeline.addPolicy((0, userAgentPolicy_js_1.userAgentPolicy)(options.userAgentOptions));\n // The multipart policy is added after policies with no phase, so that\n // policies can be added between it and formDataPolicy to modify\n // properties (e.g., making the boundary constant in recorded tests).\n pipeline.addPolicy((0, multipartPolicy_js_1.multipartPolicy)(), { afterPhase: \"Deserialize\" });\n pipeline.addPolicy((0, defaultRetryPolicy_js_1.defaultRetryPolicy)(options.retryOptions), { phase: \"Retry\" });\n if (checkEnvironment_js_1.isNodeLike) {\n // Both XHR and Fetch expect to handle redirects automatically,\n // so only include this policy when we're in Node.\n pipeline.addPolicy((0, redirectPolicy_js_1.redirectPolicy)(options.redirectOptions), { afterPhase: \"Retry\" });\n }\n pipeline.addPolicy((0, logPolicy_js_1.logPolicy)(options.loggingOptions), { afterPhase: \"Sign\" });\n return pipeline;\n}\n//# sourceMappingURL=createPipelineFromOptions.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.apiVersionPolicyName = void 0;\nexports.apiVersionPolicy = apiVersionPolicy;\nexports.apiVersionPolicyName = \"ApiVersionPolicy\";\n/**\n * Creates a policy that sets the apiVersion as a query parameter on every request\n * @param options - Client options\n * @returns Pipeline policy that sets the apiVersion as a query parameter on every request\n */\nfunction apiVersionPolicy(options) {\n return {\n name: exports.apiVersionPolicyName,\n sendRequest: (req, next) => {\n // Use the apiVesion defined in request url directly\n // Append one if there is no apiVesion and we have one at client options\n const url = new URL(req.url);\n if (!url.searchParams.get(\"api-version\") && options.apiVersion) {\n req.url = `${req.url}${Array.from(url.searchParams.keys()).length > 0 ? \"&\" : \"?\"}api-version=${options.apiVersion}`;\n }\n return next(req);\n },\n };\n}\n//# sourceMappingURL=apiVersionPolicy.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isOAuth2TokenCredential = isOAuth2TokenCredential;\nexports.isBearerTokenCredential = isBearerTokenCredential;\nexports.isBasicCredential = isBasicCredential;\nexports.isApiKeyCredential = isApiKeyCredential;\n/**\n * Type guard to check if a credential is an OAuth2 token credential.\n */\nfunction isOAuth2TokenCredential(credential) {\n return \"getOAuth2Token\" in credential;\n}\n/**\n * Type guard to check if a credential is a Bearer token credential.\n */\nfunction isBearerTokenCredential(credential) {\n return \"getBearerToken\" in credential;\n}\n/**\n * Type guard to check if a credential is a Basic auth credential.\n */\nfunction isBasicCredential(credential) {\n return \"username\" in credential && \"password\" in credential;\n}\n/**\n * Type guard to check if a credential is an API key credential.\n */\nfunction isApiKeyCredential(credential) {\n return \"key\" in credential;\n}\n//# sourceMappingURL=credentials.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ensureSecureConnection = ensureSecureConnection;\nconst log_js_1 = require(\"../../log.js\");\n// Ensure the warining is only emitted once\nlet insecureConnectionWarningEmmitted = false;\n/**\n * Checks if the request is allowed to be sent over an insecure connection.\n *\n * A request is allowed to be sent over an insecure connection when:\n * - The `allowInsecureConnection` option is set to `true`.\n * - The request has the `allowInsecureConnection` property set to `true`.\n * - The request is being sent to `localhost` or `127.0.0.1`\n */\nfunction allowInsecureConnection(request, options) {\n if (options.allowInsecureConnection && request.allowInsecureConnection) {\n const url = new URL(request.url);\n if (url.hostname === \"localhost\" || url.hostname === \"127.0.0.1\") {\n return true;\n }\n }\n return false;\n}\n/**\n * Logs a warning about sending a token over an insecure connection.\n *\n * This function will emit a node warning once, but log the warning every time.\n */\nfunction emitInsecureConnectionWarning() {\n const warning = \"Sending token over insecure transport. Assume any token issued is compromised.\";\n log_js_1.logger.warning(warning);\n if (typeof process?.emitWarning === \"function\" && !insecureConnectionWarningEmmitted) {\n insecureConnectionWarningEmmitted = true;\n process.emitWarning(warning);\n }\n}\n/**\n * Ensures that authentication is only allowed over HTTPS unless explicitly allowed.\n * Throws an error if the connection is not secure and not explicitly allowed.\n */\nfunction ensureSecureConnection(request, options) {\n if (!request.url.toLowerCase().startsWith(\"https://\")) {\n if (allowInsecureConnection(request, options)) {\n emitInsecureConnectionWarning();\n }\n else {\n throw new Error(\"Authentication is not permitted for non-TLS protected (non-https) URLs when allowInsecureConnection is false.\");\n }\n }\n}\n//# sourceMappingURL=checkInsecureConnection.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.apiKeyAuthenticationPolicyName = void 0;\nexports.apiKeyAuthenticationPolicy = apiKeyAuthenticationPolicy;\nconst checkInsecureConnection_js_1 = require(\"./checkInsecureConnection.js\");\n/**\n * Name of the API Key Authentication Policy\n */\nexports.apiKeyAuthenticationPolicyName = \"apiKeyAuthenticationPolicy\";\n/**\n * Gets a pipeline policy that adds API key authentication to requests\n */\nfunction apiKeyAuthenticationPolicy(options) {\n return {\n name: exports.apiKeyAuthenticationPolicyName,\n async sendRequest(request, next) {\n // Ensure allowInsecureConnection is explicitly set when sending request to non-https URLs\n (0, checkInsecureConnection_js_1.ensureSecureConnection)(request, options);\n const scheme = (request.authSchemes ?? options.authSchemes)?.find((x) => x.kind === \"apiKey\");\n // Skip adding authentication header if no API key authentication scheme is found\n if (!scheme) {\n return next(request);\n }\n if (scheme.apiKeyLocation !== \"header\") {\n throw new Error(`Unsupported API key location: ${scheme.apiKeyLocation}`);\n }\n request.headers.set(scheme.name, options.credential.key);\n return next(request);\n },\n };\n}\n//# sourceMappingURL=apiKeyAuthenticationPolicy.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.basicAuthenticationPolicyName = void 0;\nexports.basicAuthenticationPolicy = basicAuthenticationPolicy;\nconst bytesEncoding_js_1 = require(\"../../util/bytesEncoding.js\");\nconst checkInsecureConnection_js_1 = require(\"./checkInsecureConnection.js\");\n/**\n * Name of the Basic Authentication Policy\n */\nexports.basicAuthenticationPolicyName = \"bearerAuthenticationPolicy\";\n/**\n * Gets a pipeline policy that adds basic authentication to requests\n */\nfunction basicAuthenticationPolicy(options) {\n return {\n name: exports.basicAuthenticationPolicyName,\n async sendRequest(request, next) {\n // Ensure allowInsecureConnection is explicitly set when sending request to non-https URLs\n (0, checkInsecureConnection_js_1.ensureSecureConnection)(request, options);\n const scheme = (request.authSchemes ?? options.authSchemes)?.find((x) => x.kind === \"http\" && x.scheme === \"basic\");\n // Skip adding authentication header if no basic authentication scheme is found\n if (!scheme) {\n return next(request);\n }\n const { username, password } = options.credential;\n const headerValue = (0, bytesEncoding_js_1.uint8ArrayToString)((0, bytesEncoding_js_1.stringToUint8Array)(`${username}:${password}`, \"utf-8\"), \"base64\");\n request.headers.set(\"Authorization\", `Basic ${headerValue}`);\n return next(request);\n },\n };\n}\n//# sourceMappingURL=basicAuthenticationPolicy.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.bearerAuthenticationPolicyName = void 0;\nexports.bearerAuthenticationPolicy = bearerAuthenticationPolicy;\nconst checkInsecureConnection_js_1 = require(\"./checkInsecureConnection.js\");\n/**\n * Name of the Bearer Authentication Policy\n */\nexports.bearerAuthenticationPolicyName = \"bearerAuthenticationPolicy\";\n/**\n * Gets a pipeline policy that adds bearer token authentication to requests\n */\nfunction bearerAuthenticationPolicy(options) {\n return {\n name: exports.bearerAuthenticationPolicyName,\n async sendRequest(request, next) {\n // Ensure allowInsecureConnection is explicitly set when sending request to non-https URLs\n (0, checkInsecureConnection_js_1.ensureSecureConnection)(request, options);\n const scheme = (request.authSchemes ?? options.authSchemes)?.find((x) => x.kind === \"http\" && x.scheme === \"bearer\");\n // Skip adding authentication header if no bearer authentication scheme is found\n if (!scheme) {\n return next(request);\n }\n const token = await options.credential.getBearerToken({\n abortSignal: request.abortSignal,\n });\n request.headers.set(\"Authorization\", `Bearer ${token}`);\n return next(request);\n },\n };\n}\n//# sourceMappingURL=bearerAuthenticationPolicy.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.oauth2AuthenticationPolicyName = void 0;\nexports.oauth2AuthenticationPolicy = oauth2AuthenticationPolicy;\nconst checkInsecureConnection_js_1 = require(\"./checkInsecureConnection.js\");\n/**\n * Name of the OAuth2 Authentication Policy\n */\nexports.oauth2AuthenticationPolicyName = \"oauth2AuthenticationPolicy\";\n/**\n * Gets a pipeline policy that adds authorization header from OAuth2 schemes\n */\nfunction oauth2AuthenticationPolicy(options) {\n return {\n name: exports.oauth2AuthenticationPolicyName,\n async sendRequest(request, next) {\n // Ensure allowInsecureConnection is explicitly set when sending request to non-https URLs\n (0, checkInsecureConnection_js_1.ensureSecureConnection)(request, options);\n const scheme = (request.authSchemes ?? options.authSchemes)?.find((x) => x.kind === \"oauth2\");\n // Skip adding authentication header if no OAuth2 authentication scheme is found\n if (!scheme) {\n return next(request);\n }\n const token = await options.credential.getOAuth2Token(scheme.flows, {\n abortSignal: request.abortSignal,\n });\n request.headers.set(\"Authorization\", `Bearer ${token}`);\n return next(request);\n },\n };\n}\n//# sourceMappingURL=oauth2AuthenticationPolicy.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.createDefaultPipeline = createDefaultPipeline;\nexports.getCachedDefaultHttpsClient = getCachedDefaultHttpsClient;\nconst defaultHttpClient_js_1 = require(\"../defaultHttpClient.js\");\nconst createPipelineFromOptions_js_1 = require(\"../createPipelineFromOptions.js\");\nconst apiVersionPolicy_js_1 = require(\"./apiVersionPolicy.js\");\nconst credentials_js_1 = require(\"../auth/credentials.js\");\nconst apiKeyAuthenticationPolicy_js_1 = require(\"../policies/auth/apiKeyAuthenticationPolicy.js\");\nconst basicAuthenticationPolicy_js_1 = require(\"../policies/auth/basicAuthenticationPolicy.js\");\nconst bearerAuthenticationPolicy_js_1 = require(\"../policies/auth/bearerAuthenticationPolicy.js\");\nconst oauth2AuthenticationPolicy_js_1 = require(\"../policies/auth/oauth2AuthenticationPolicy.js\");\nlet cachedHttpClient;\n/**\n * Creates a default rest pipeline to re-use accross Rest Level Clients\n */\nfunction createDefaultPipeline(options = {}) {\n const pipeline = (0, createPipelineFromOptions_js_1.createPipelineFromOptions)(options);\n pipeline.addPolicy((0, apiVersionPolicy_js_1.apiVersionPolicy)(options));\n const { credential, authSchemes, allowInsecureConnection } = options;\n if (credential) {\n if ((0, credentials_js_1.isApiKeyCredential)(credential)) {\n pipeline.addPolicy((0, apiKeyAuthenticationPolicy_js_1.apiKeyAuthenticationPolicy)({ authSchemes, credential, allowInsecureConnection }));\n }\n else if ((0, credentials_js_1.isBasicCredential)(credential)) {\n pipeline.addPolicy((0, basicAuthenticationPolicy_js_1.basicAuthenticationPolicy)({ authSchemes, credential, allowInsecureConnection }));\n }\n else if ((0, credentials_js_1.isBearerTokenCredential)(credential)) {\n pipeline.addPolicy((0, bearerAuthenticationPolicy_js_1.bearerAuthenticationPolicy)({ authSchemes, credential, allowInsecureConnection }));\n }\n else if ((0, credentials_js_1.isOAuth2TokenCredential)(credential)) {\n pipeline.addPolicy((0, oauth2AuthenticationPolicy_js_1.oauth2AuthenticationPolicy)({ authSchemes, credential, allowInsecureConnection }));\n }\n }\n return pipeline;\n}\nfunction getCachedDefaultHttpsClient() {\n if (!cachedHttpClient) {\n cachedHttpClient = (0, defaultHttpClient_js_1.createDefaultHttpClient)();\n }\n return cachedHttpClient;\n}\n//# sourceMappingURL=clientHelpers.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.buildBodyPart = buildBodyPart;\nexports.buildMultipartBody = buildMultipartBody;\nconst restError_js_1 = require(\"../restError.js\");\nconst httpHeaders_js_1 = require(\"../httpHeaders.js\");\nconst bytesEncoding_js_1 = require(\"../util/bytesEncoding.js\");\nconst typeGuards_js_1 = require(\"../util/typeGuards.js\");\n/**\n * Get value of a header in the part descriptor ignoring case\n */\nfunction getHeaderValue(descriptor, headerName) {\n if (descriptor.headers) {\n const actualHeaderName = Object.keys(descriptor.headers).find((x) => x.toLowerCase() === headerName.toLowerCase());\n if (actualHeaderName) {\n return descriptor.headers[actualHeaderName];\n }\n }\n return undefined;\n}\nfunction getPartContentType(descriptor) {\n const contentTypeHeader = getHeaderValue(descriptor, \"content-type\");\n if (contentTypeHeader) {\n return contentTypeHeader;\n }\n // Special value of null means content type is to be omitted\n if (descriptor.contentType === null) {\n return undefined;\n }\n if (descriptor.contentType) {\n return descriptor.contentType;\n }\n const { body } = descriptor;\n if (body === null || body === undefined) {\n return undefined;\n }\n if (typeof body === \"string\" || typeof body === \"number\" || typeof body === \"boolean\") {\n return \"text/plain; charset=UTF-8\";\n }\n if (body instanceof Blob) {\n return body.type || \"application/octet-stream\";\n }\n if ((0, typeGuards_js_1.isBinaryBody)(body)) {\n return \"application/octet-stream\";\n }\n // arbitrary non-text object -> generic JSON content type by default. We will try to JSON.stringify the body.\n return \"application/json\";\n}\n/**\n * Enclose value in quotes and escape special characters, for use in the Content-Disposition header\n */\nfunction escapeDispositionField(value) {\n return JSON.stringify(value);\n}\nfunction getContentDisposition(descriptor) {\n const contentDispositionHeader = getHeaderValue(descriptor, \"content-disposition\");\n if (contentDispositionHeader) {\n return contentDispositionHeader;\n }\n if (descriptor.dispositionType === undefined &&\n descriptor.name === undefined &&\n descriptor.filename === undefined) {\n return undefined;\n }\n const dispositionType = descriptor.dispositionType ?? \"form-data\";\n let disposition = dispositionType;\n if (descriptor.name) {\n disposition += `; name=${escapeDispositionField(descriptor.name)}`;\n }\n let filename = undefined;\n if (descriptor.filename) {\n filename = descriptor.filename;\n }\n else if (typeof File !== \"undefined\" && descriptor.body instanceof File) {\n const filenameFromFile = descriptor.body.name;\n if (filenameFromFile !== \"\") {\n filename = filenameFromFile;\n }\n }\n if (filename) {\n disposition += `; filename=${escapeDispositionField(filename)}`;\n }\n return disposition;\n}\nfunction normalizeBody(body, contentType) {\n if (body === undefined) {\n // zero-length body\n return new Uint8Array([]);\n }\n // binary and primitives should go straight on the wire regardless of content type\n if ((0, typeGuards_js_1.isBinaryBody)(body)) {\n return body;\n }\n if (typeof body === \"string\" || typeof body === \"number\" || typeof body === \"boolean\") {\n return (0, bytesEncoding_js_1.stringToUint8Array)(String(body), \"utf-8\");\n }\n // stringify objects for JSON-ish content types e.g. application/json, application/merge-patch+json, application/vnd.oci.manifest.v1+json, application.json; charset=UTF-8\n if (contentType && /application\\/(.+\\+)?json(;.+)?/i.test(String(contentType))) {\n return (0, bytesEncoding_js_1.stringToUint8Array)(JSON.stringify(body), \"utf-8\");\n }\n throw new restError_js_1.RestError(`Unsupported body/content-type combination: ${body}, ${contentType}`);\n}\nfunction buildBodyPart(descriptor) {\n const contentType = getPartContentType(descriptor);\n const contentDisposition = getContentDisposition(descriptor);\n const headers = (0, httpHeaders_js_1.createHttpHeaders)(descriptor.headers ?? {});\n if (contentType) {\n headers.set(\"content-type\", contentType);\n }\n if (contentDisposition) {\n headers.set(\"content-disposition\", contentDisposition);\n }\n const body = normalizeBody(descriptor.body, contentType);\n return {\n headers,\n body,\n };\n}\nfunction buildMultipartBody(parts) {\n return { parts: parts.map(buildBodyPart) };\n}\n//# sourceMappingURL=multipart.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.sendRequest = sendRequest;\nconst restError_js_1 = require(\"../restError.js\");\nconst httpHeaders_js_1 = require(\"../httpHeaders.js\");\nconst pipelineRequest_js_1 = require(\"../pipelineRequest.js\");\nconst clientHelpers_js_1 = require(\"./clientHelpers.js\");\nconst typeGuards_js_1 = require(\"../util/typeGuards.js\");\nconst multipart_js_1 = require(\"./multipart.js\");\n/**\n * Helper function to send request used by the client\n * @param method - method to use to send the request\n * @param url - url to send the request to\n * @param pipeline - pipeline with the policies to run when sending the request\n * @param options - request options\n * @param customHttpClient - a custom HttpClient to use when making the request\n * @returns returns and HttpResponse\n */\nasync function sendRequest(method, url, pipeline, options = {}, customHttpClient) {\n const httpClient = customHttpClient ?? (0, clientHelpers_js_1.getCachedDefaultHttpsClient)();\n const request = buildPipelineRequest(method, url, options);\n try {\n const response = await pipeline.sendRequest(httpClient, request);\n const headers = response.headers.toJSON();\n const stream = response.readableStreamBody ?? response.browserStreamBody;\n const parsedBody = options.responseAsStream || stream !== undefined ? undefined : getResponseBody(response);\n const body = stream ?? parsedBody;\n if (options?.onResponse) {\n options.onResponse({ ...response, request, rawHeaders: headers, parsedBody });\n }\n return {\n request,\n headers,\n status: `${response.status}`,\n body,\n };\n }\n catch (e) {\n if ((0, restError_js_1.isRestError)(e) && e.response && options.onResponse) {\n const { response } = e;\n const rawHeaders = response.headers.toJSON();\n // UNBRANDED DIFFERENCE: onResponse callback does not have a second __legacyError property\n options?.onResponse({ ...response, request, rawHeaders }, e);\n }\n throw e;\n }\n}\n/**\n * Function to determine the request content type\n * @param options - request options InternalRequestParameters\n * @returns returns the content-type\n */\nfunction getRequestContentType(options = {}) {\n return (options.contentType ??\n options.headers?.[\"content-type\"] ??\n getContentType(options.body));\n}\n/**\n * Function to determine the content-type of a body\n * this is used if an explicit content-type is not provided\n * @param body - body in the request\n * @returns returns the content-type\n */\nfunction getContentType(body) {\n if (ArrayBuffer.isView(body)) {\n return \"application/octet-stream\";\n }\n if (typeof body === \"string\") {\n try {\n JSON.parse(body);\n return \"application/json\";\n }\n catch (error) {\n // If we fail to parse the body, it is not json\n return undefined;\n }\n }\n // By default return json\n return \"application/json\";\n}\nfunction buildPipelineRequest(method, url, options = {}) {\n const requestContentType = getRequestContentType(options);\n const { body, multipartBody } = getRequestBody(options.body, requestContentType);\n const hasContent = body !== undefined || multipartBody !== undefined;\n const headers = (0, httpHeaders_js_1.createHttpHeaders)({\n ...(options.headers ? options.headers : {}),\n accept: options.accept ?? options.headers?.accept ?? \"application/json\",\n ...(hasContent &&\n requestContentType && {\n \"content-type\": requestContentType,\n }),\n });\n return (0, pipelineRequest_js_1.createPipelineRequest)({\n url,\n method,\n body,\n multipartBody,\n headers,\n allowInsecureConnection: options.allowInsecureConnection,\n abortSignal: options.abortSignal,\n onUploadProgress: options.onUploadProgress,\n onDownloadProgress: options.onDownloadProgress,\n timeout: options.timeout,\n enableBrowserStreams: true,\n streamResponseStatusCodes: options.responseAsStream\n ? new Set([Number.POSITIVE_INFINITY])\n : undefined,\n });\n}\n/**\n * Prepares the body before sending the request\n */\nfunction getRequestBody(body, contentType = \"\") {\n if (body === undefined) {\n return { body: undefined };\n }\n if (typeof FormData !== \"undefined\" && body instanceof FormData) {\n return { body };\n }\n if ((0, typeGuards_js_1.isReadableStream)(body)) {\n return { body };\n }\n if (ArrayBuffer.isView(body)) {\n return { body: body instanceof Uint8Array ? body : JSON.stringify(body) };\n }\n const firstType = contentType.split(\";\")[0];\n switch (firstType) {\n case \"application/json\":\n return { body: JSON.stringify(body) };\n case \"multipart/form-data\":\n if (Array.isArray(body)) {\n return { multipartBody: (0, multipart_js_1.buildMultipartBody)(body) };\n }\n return { body: JSON.stringify(body) };\n case \"text/plain\":\n return { body: String(body) };\n default:\n if (typeof body === \"string\") {\n return { body };\n }\n return { body: JSON.stringify(body) };\n }\n}\n/**\n * Prepares the response body\n */\nfunction getResponseBody(response) {\n // Set the default response type\n const contentType = response.headers.get(\"content-type\") ?? \"\";\n const firstType = contentType.split(\";\")[0];\n const bodyToParse = response.bodyAsText ?? \"\";\n if (firstType === \"text/plain\") {\n return String(bodyToParse);\n }\n // Default to \"application/json\" and fallback to string;\n try {\n return bodyToParse ? JSON.parse(bodyToParse) : undefined;\n }\n catch (error) {\n // If we were supposed to get a JSON object and failed to\n // parse, throw a parse error\n if (firstType === \"application/json\") {\n throw createParseError(response, error);\n }\n // We are not sure how to handle the response so we return it as\n // plain text.\n return String(bodyToParse);\n }\n}\nfunction createParseError(response, err) {\n const msg = `Error \"${err}\" occurred while parsing the response body - ${response.bodyAsText}.`;\n const errCode = err.code ?? restError_js_1.RestError.PARSE_ERROR;\n return new restError_js_1.RestError(msg, {\n code: errCode,\n statusCode: response.status,\n request: response.request,\n response: response,\n });\n}\n//# sourceMappingURL=sendRequest.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.buildRequestUrl = buildRequestUrl;\nexports.buildBaseUrl = buildBaseUrl;\nexports.replaceAll = replaceAll;\nfunction isQueryParameterWithOptions(x) {\n const value = x.value;\n return (value !== undefined && value.toString !== undefined && typeof value.toString === \"function\");\n}\n/**\n * Builds the request url, filling in query and path parameters\n * @param endpoint - base url which can be a template url\n * @param routePath - path to append to the endpoint\n * @param pathParameters - values of the path parameters\n * @param options - request parameters including query parameters\n * @returns a full url with path and query parameters\n */\nfunction buildRequestUrl(endpoint, routePath, pathParameters, options = {}) {\n if (routePath.startsWith(\"https://\") || routePath.startsWith(\"http://\")) {\n return routePath;\n }\n endpoint = buildBaseUrl(endpoint, options);\n routePath = buildRoutePath(routePath, pathParameters, options);\n const requestUrl = appendQueryParams(`${endpoint}/${routePath}`, options);\n const url = new URL(requestUrl);\n return (url\n .toString()\n // Remove double forward slashes\n .replace(/([^:]\\/)\\/+/g, \"$1\"));\n}\nfunction getQueryParamValue(key, allowReserved, style, param) {\n let separator;\n if (style === \"pipeDelimited\") {\n separator = \"|\";\n }\n else if (style === \"spaceDelimited\") {\n separator = \"%20\";\n }\n else {\n separator = \",\";\n }\n let paramValues;\n if (Array.isArray(param)) {\n paramValues = param;\n }\n else if (typeof param === \"object\" && param.toString === Object.prototype.toString) {\n // If the parameter is an object without a custom toString implementation (e.g. a Date),\n // then we should deconstruct the object into an array [key1, value1, key2, value2, ...].\n paramValues = Object.entries(param).flat();\n }\n else {\n paramValues = [param];\n }\n const value = paramValues\n .map((p) => {\n if (p === null || p === undefined) {\n return \"\";\n }\n if (!p.toString || typeof p.toString !== \"function\") {\n throw new Error(`Query parameters must be able to be represented as string, ${key} can't`);\n }\n const rawValue = p.toISOString !== undefined ? p.toISOString() : p.toString();\n return allowReserved ? rawValue : encodeURIComponent(rawValue);\n })\n .join(separator);\n return `${allowReserved ? key : encodeURIComponent(key)}=${value}`;\n}\nfunction appendQueryParams(url, options = {}) {\n if (!options.queryParameters) {\n return url;\n }\n const parsedUrl = new URL(url);\n const queryParams = options.queryParameters;\n const paramStrings = [];\n for (const key of Object.keys(queryParams)) {\n const param = queryParams[key];\n if (param === undefined || param === null) {\n continue;\n }\n const hasMetadata = isQueryParameterWithOptions(param);\n const rawValue = hasMetadata ? param.value : param;\n const explode = hasMetadata ? (param.explode ?? false) : false;\n const style = hasMetadata && param.style ? param.style : \"form\";\n if (explode) {\n if (Array.isArray(rawValue)) {\n for (const item of rawValue) {\n paramStrings.push(getQueryParamValue(key, options.skipUrlEncoding ?? false, style, item));\n }\n }\n else if (typeof rawValue === \"object\") {\n // For object explode, the name of the query parameter is ignored and we use the object key instead\n for (const [actualKey, value] of Object.entries(rawValue)) {\n paramStrings.push(getQueryParamValue(actualKey, options.skipUrlEncoding ?? false, style, value));\n }\n }\n else {\n // Explode doesn't really make sense for primitives\n throw new Error(\"explode can only be set to true for objects and arrays\");\n }\n }\n else {\n paramStrings.push(getQueryParamValue(key, options.skipUrlEncoding ?? false, style, rawValue));\n }\n }\n if (parsedUrl.search !== \"\") {\n parsedUrl.search += \"&\";\n }\n parsedUrl.search += paramStrings.join(\"&\");\n return parsedUrl.toString();\n}\nfunction buildBaseUrl(endpoint, options) {\n if (!options.pathParameters) {\n return endpoint;\n }\n const pathParams = options.pathParameters;\n for (const [key, param] of Object.entries(pathParams)) {\n if (param === undefined || param === null) {\n throw new Error(`Path parameters ${key} must not be undefined or null`);\n }\n if (!param.toString || typeof param.toString !== \"function\") {\n throw new Error(`Path parameters must be able to be represented as string, ${key} can't`);\n }\n let value = param.toISOString !== undefined ? param.toISOString() : String(param);\n if (!options.skipUrlEncoding) {\n value = encodeURIComponent(param);\n }\n endpoint = replaceAll(endpoint, `{${key}}`, value) ?? \"\";\n }\n return endpoint;\n}\nfunction buildRoutePath(routePath, pathParameters, options = {}) {\n for (const pathParam of pathParameters) {\n const allowReserved = typeof pathParam === \"object\" && (pathParam.allowReserved ?? false);\n let value = typeof pathParam === \"object\" ? pathParam.value : pathParam;\n if (!options.skipUrlEncoding && !allowReserved) {\n value = encodeURIComponent(value);\n }\n routePath = routePath.replace(/\\{[\\w-]+\\}/, String(value));\n }\n return routePath;\n}\n/**\n * Replace all of the instances of searchValue in value with the provided replaceValue.\n * @param value - The value to search and replace in.\n * @param searchValue - The value to search for in the value argument.\n * @param replaceValue - The value to replace searchValue with in the value argument.\n * @returns The value where each instance of searchValue was replaced with replacedValue.\n */\nfunction replaceAll(value, searchValue, replaceValue) {\n return !value || !searchValue ? value : value.split(searchValue).join(replaceValue || \"\");\n}\n//# sourceMappingURL=urlHelpers.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getClient = getClient;\nconst clientHelpers_js_1 = require(\"./clientHelpers.js\");\nconst sendRequest_js_1 = require(\"./sendRequest.js\");\nconst urlHelpers_js_1 = require(\"./urlHelpers.js\");\nconst checkEnvironment_js_1 = require(\"../util/checkEnvironment.js\");\n/**\n * Creates a client with a default pipeline\n * @param endpoint - Base endpoint for the client\n * @param credentials - Credentials to authenticate the requests\n * @param options - Client options\n */\nfunction getClient(endpoint, clientOptions = {}) {\n const pipeline = clientOptions.pipeline ?? (0, clientHelpers_js_1.createDefaultPipeline)(clientOptions);\n if (clientOptions.additionalPolicies?.length) {\n for (const { policy, position } of clientOptions.additionalPolicies) {\n // Sign happens after Retry and is commonly needed to occur\n // before policies that intercept post-retry.\n const afterPhase = position === \"perRetry\" ? \"Sign\" : undefined;\n pipeline.addPolicy(policy, {\n afterPhase,\n });\n }\n }\n const { allowInsecureConnection, httpClient } = clientOptions;\n const endpointUrl = clientOptions.endpoint ?? endpoint;\n const client = (path, ...args) => {\n const getUrl = (requestOptions) => (0, urlHelpers_js_1.buildRequestUrl)(endpointUrl, path, args, { allowInsecureConnection, ...requestOptions });\n return {\n get: (requestOptions = {}) => {\n return buildOperation(\"GET\", getUrl(requestOptions), pipeline, requestOptions, allowInsecureConnection, httpClient);\n },\n post: (requestOptions = {}) => {\n return buildOperation(\"POST\", getUrl(requestOptions), pipeline, requestOptions, allowInsecureConnection, httpClient);\n },\n put: (requestOptions = {}) => {\n return buildOperation(\"PUT\", getUrl(requestOptions), pipeline, requestOptions, allowInsecureConnection, httpClient);\n },\n patch: (requestOptions = {}) => {\n return buildOperation(\"PATCH\", getUrl(requestOptions), pipeline, requestOptions, allowInsecureConnection, httpClient);\n },\n delete: (requestOptions = {}) => {\n return buildOperation(\"DELETE\", getUrl(requestOptions), pipeline, requestOptions, allowInsecureConnection, httpClient);\n },\n head: (requestOptions = {}) => {\n return buildOperation(\"HEAD\", getUrl(requestOptions), pipeline, requestOptions, allowInsecureConnection, httpClient);\n },\n options: (requestOptions = {}) => {\n return buildOperation(\"OPTIONS\", getUrl(requestOptions), pipeline, requestOptions, allowInsecureConnection, httpClient);\n },\n trace: (requestOptions = {}) => {\n return buildOperation(\"TRACE\", getUrl(requestOptions), pipeline, requestOptions, allowInsecureConnection, httpClient);\n },\n };\n };\n return {\n path: client,\n pathUnchecked: client,\n pipeline,\n };\n}\nfunction buildOperation(method, url, pipeline, options, allowInsecureConnection, httpClient) {\n allowInsecureConnection = options.allowInsecureConnection ?? allowInsecureConnection;\n return {\n then: function (onFulfilled, onrejected) {\n return (0, sendRequest_js_1.sendRequest)(method, url, pipeline, { ...options, allowInsecureConnection }, httpClient).then(onFulfilled, onrejected);\n },\n async asBrowserStream() {\n if (checkEnvironment_js_1.isNodeLike) {\n throw new Error(\"`asBrowserStream` is supported only in the browser environment. Use `asNodeStream` instead to obtain the response body stream. If you require a Web stream of the response in Node, consider using `Readable.toWeb` on the result of `asNodeStream`.\");\n }\n else {\n return (0, sendRequest_js_1.sendRequest)(method, url, pipeline, { ...options, allowInsecureConnection, responseAsStream: true }, httpClient);\n }\n },\n async asNodeStream() {\n if (checkEnvironment_js_1.isNodeLike) {\n return (0, sendRequest_js_1.sendRequest)(method, url, pipeline, { ...options, allowInsecureConnection, responseAsStream: true }, httpClient);\n }\n else {\n throw new Error(\"`isNodeStream` is not supported in the browser environment. Use `asBrowserStream` to obtain the response body stream.\");\n }\n },\n };\n}\n//# sourceMappingURL=getClient.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.operationOptionsToRequestParameters = operationOptionsToRequestParameters;\n/**\n * Helper function to convert OperationOptions to RequestParameters\n * @param options - the options that are used by Modular layer to send the request\n * @returns the result of the conversion in RequestParameters of RLC layer\n */\nfunction operationOptionsToRequestParameters(options) {\n return {\n allowInsecureConnection: options.requestOptions?.allowInsecureConnection,\n timeout: options.requestOptions?.timeout,\n skipUrlEncoding: options.requestOptions?.skipUrlEncoding,\n abortSignal: options.abortSignal,\n onUploadProgress: options.requestOptions?.onUploadProgress,\n onDownloadProgress: options.requestOptions?.onDownloadProgress,\n headers: { ...options.requestOptions?.headers },\n onResponse: options.onResponse,\n };\n}\n//# sourceMappingURL=operationOptionHelpers.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.createRestError = createRestError;\nconst restError_js_1 = require(\"../restError.js\");\nconst httpHeaders_js_1 = require(\"../httpHeaders.js\");\nfunction createRestError(messageOrResponse, response) {\n const resp = typeof messageOrResponse === \"string\" ? response : messageOrResponse;\n const internalError = resp.body?.error ?? resp.body;\n const message = typeof messageOrResponse === \"string\"\n ? messageOrResponse\n : (internalError?.message ?? `Unexpected status code: ${resp.status}`);\n return new restError_js_1.RestError(message, {\n statusCode: statusCodeToNumber(resp.status),\n code: internalError?.code,\n request: resp.request,\n response: toPipelineResponse(resp),\n });\n}\nfunction toPipelineResponse(response) {\n return {\n headers: (0, httpHeaders_js_1.createHttpHeaders)(response.headers),\n request: response.request,\n status: statusCodeToNumber(response.status) ?? -1,\n };\n}\nfunction statusCodeToNumber(statusCode) {\n const status = Number.parseInt(statusCode);\n return Number.isNaN(status) ? undefined : status;\n}\n//# sourceMappingURL=restError.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.createRestError = exports.operationOptionsToRequestParameters = exports.getClient = exports.createDefaultHttpClient = exports.uint8ArrayToString = exports.stringToUint8Array = exports.isRestError = exports.RestError = exports.createEmptyPipeline = exports.createPipelineRequest = exports.createHttpHeaders = exports.TypeSpecRuntimeLogger = exports.setLogLevel = exports.getLogLevel = exports.createClientLogger = exports.AbortError = void 0;\nconst tslib_1 = require(\"tslib\");\nvar AbortError_js_1 = require(\"./abort-controller/AbortError.js\");\nObject.defineProperty(exports, \"AbortError\", { enumerable: true, get: function () { return AbortError_js_1.AbortError; } });\nvar logger_js_1 = require(\"./logger/logger.js\");\nObject.defineProperty(exports, \"createClientLogger\", { enumerable: true, get: function () { return logger_js_1.createClientLogger; } });\nObject.defineProperty(exports, \"getLogLevel\", { enumerable: true, get: function () { return logger_js_1.getLogLevel; } });\nObject.defineProperty(exports, \"setLogLevel\", { enumerable: true, get: function () { return logger_js_1.setLogLevel; } });\nObject.defineProperty(exports, \"TypeSpecRuntimeLogger\", { enumerable: true, get: function () { return logger_js_1.TypeSpecRuntimeLogger; } });\nvar httpHeaders_js_1 = require(\"./httpHeaders.js\");\nObject.defineProperty(exports, \"createHttpHeaders\", { enumerable: true, get: function () { return httpHeaders_js_1.createHttpHeaders; } });\ntslib_1.__exportStar(require(\"./auth/schemes.js\"), exports);\ntslib_1.__exportStar(require(\"./auth/oauth2Flows.js\"), exports);\nvar pipelineRequest_js_1 = require(\"./pipelineRequest.js\");\nObject.defineProperty(exports, \"createPipelineRequest\", { enumerable: true, get: function () { return pipelineRequest_js_1.createPipelineRequest; } });\nvar pipeline_js_1 = require(\"./pipeline.js\");\nObject.defineProperty(exports, \"createEmptyPipeline\", { enumerable: true, get: function () { return pipeline_js_1.createEmptyPipeline; } });\nvar restError_js_1 = require(\"./restError.js\");\nObject.defineProperty(exports, \"RestError\", { enumerable: true, get: function () { return restError_js_1.RestError; } });\nObject.defineProperty(exports, \"isRestError\", { enumerable: true, get: function () { return restError_js_1.isRestError; } });\nvar bytesEncoding_js_1 = require(\"./util/bytesEncoding.js\");\nObject.defineProperty(exports, \"stringToUint8Array\", { enumerable: true, get: function () { return bytesEncoding_js_1.stringToUint8Array; } });\nObject.defineProperty(exports, \"uint8ArrayToString\", { enumerable: true, get: function () { return bytesEncoding_js_1.uint8ArrayToString; } });\nvar defaultHttpClient_js_1 = require(\"./defaultHttpClient.js\");\nObject.defineProperty(exports, \"createDefaultHttpClient\", { enumerable: true, get: function () { return defaultHttpClient_js_1.createDefaultHttpClient; } });\nvar getClient_js_1 = require(\"./client/getClient.js\");\nObject.defineProperty(exports, \"getClient\", { enumerable: true, get: function () { return getClient_js_1.getClient; } });\nvar operationOptionHelpers_js_1 = require(\"./client/operationOptionHelpers.js\");\nObject.defineProperty(exports, \"operationOptionsToRequestParameters\", { enumerable: true, get: function () { return operationOptionHelpers_js_1.operationOptionsToRequestParameters; } });\nvar restError_js_2 = require(\"./client/restError.js\");\nObject.defineProperty(exports, \"createRestError\", { enumerable: true, get: function () { return restError_js_2.createRestError; } });\n//# sourceMappingURL=index.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.createEmptyPipeline = createEmptyPipeline;\nconst ts_http_runtime_1 = require(\"@typespec/ts-http-runtime\");\n/**\n * Creates a totally empty pipeline.\n * Useful for testing or creating a custom one.\n */\nfunction createEmptyPipeline() {\n return (0, ts_http_runtime_1.createEmptyPipeline)();\n}\n//# sourceMappingURL=pipeline.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.createLoggerContext = void 0;\nvar logger_js_1 = require(\"./logger.js\");\nObject.defineProperty(exports, \"createLoggerContext\", { enumerable: true, get: function () { return logger_js_1.createLoggerContext; } });\n//# sourceMappingURL=internal.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.AzureLogger = void 0;\nexports.setLogLevel = setLogLevel;\nexports.getLogLevel = getLogLevel;\nexports.createClientLogger = createClientLogger;\nconst logger_1 = require(\"@typespec/ts-http-runtime/internal/logger\");\nconst context = (0, logger_1.createLoggerContext)({\n logLevelEnvVarName: \"AZURE_LOG_LEVEL\",\n namespace: \"azure\",\n});\n/**\n * The AzureLogger provides a mechanism for overriding where logs are output to.\n * By default, logs are sent to stderr.\n * Override the `log` method to redirect logs to another location.\n */\nexports.AzureLogger = context.logger;\n/**\n * Immediately enables logging at the specified log level. If no level is specified, logging is disabled.\n * @param level - The log level to enable for logging.\n * Options from most verbose to least verbose are:\n * - verbose\n * - info\n * - warning\n * - error\n */\nfunction setLogLevel(level) {\n context.setLogLevel(level);\n}\n/**\n * Retrieves the currently specified log level.\n */\nfunction getLogLevel() {\n return context.getLogLevel();\n}\n/**\n * Creates a logger for use by the Azure SDKs that inherits from `AzureLogger`.\n * @param namespace - The name of the SDK package.\n * @hidden\n */\nfunction createClientLogger(namespace) {\n return context.createClientLogger(namespace);\n}\n//# sourceMappingURL=index.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.logger = void 0;\nconst logger_1 = require(\"@azure/logger\");\nexports.logger = (0, logger_1.createClientLogger)(\"core-rest-pipeline\");\n//# sourceMappingURL=log.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.exponentialRetryPolicyName = void 0;\nexports.exponentialRetryPolicy = exponentialRetryPolicy;\nconst exponentialRetryStrategy_js_1 = require(\"../retryStrategies/exponentialRetryStrategy.js\");\nconst retryPolicy_js_1 = require(\"./retryPolicy.js\");\nconst constants_js_1 = require(\"../constants.js\");\n/**\n * The programmatic identifier of the exponentialRetryPolicy.\n */\nexports.exponentialRetryPolicyName = \"exponentialRetryPolicy\";\n/**\n * A policy that attempts to retry requests while introducing an exponentially increasing delay.\n * @param options - Options that configure retry logic.\n */\nfunction exponentialRetryPolicy(options = {}) {\n return (0, retryPolicy_js_1.retryPolicy)([\n (0, exponentialRetryStrategy_js_1.exponentialRetryStrategy)({\n ...options,\n ignoreSystemErrors: true,\n }),\n ], {\n maxRetries: options.maxRetries ?? constants_js_1.DEFAULT_RETRY_POLICY_COUNT,\n });\n}\n//# sourceMappingURL=exponentialRetryPolicy.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.systemErrorRetryPolicyName = void 0;\nexports.systemErrorRetryPolicy = systemErrorRetryPolicy;\nconst exponentialRetryStrategy_js_1 = require(\"../retryStrategies/exponentialRetryStrategy.js\");\nconst retryPolicy_js_1 = require(\"./retryPolicy.js\");\nconst constants_js_1 = require(\"../constants.js\");\n/**\n * Name of the {@link systemErrorRetryPolicy}\n */\nexports.systemErrorRetryPolicyName = \"systemErrorRetryPolicy\";\n/**\n * A retry policy that specifically seeks to handle errors in the\n * underlying transport layer (e.g. DNS lookup failures) rather than\n * retryable error codes from the server itself.\n * @param options - Options that customize the policy.\n */\nfunction systemErrorRetryPolicy(options = {}) {\n return {\n name: exports.systemErrorRetryPolicyName,\n sendRequest: (0, retryPolicy_js_1.retryPolicy)([\n (0, exponentialRetryStrategy_js_1.exponentialRetryStrategy)({\n ...options,\n ignoreHttpStatusCodes: true,\n }),\n ], {\n maxRetries: options.maxRetries ?? constants_js_1.DEFAULT_RETRY_POLICY_COUNT,\n }).sendRequest,\n };\n}\n//# sourceMappingURL=systemErrorRetryPolicy.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.throttlingRetryPolicyName = void 0;\nexports.throttlingRetryPolicy = throttlingRetryPolicy;\nconst throttlingRetryStrategy_js_1 = require(\"../retryStrategies/throttlingRetryStrategy.js\");\nconst retryPolicy_js_1 = require(\"./retryPolicy.js\");\nconst constants_js_1 = require(\"../constants.js\");\n/**\n * Name of the {@link throttlingRetryPolicy}\n */\nexports.throttlingRetryPolicyName = \"throttlingRetryPolicy\";\n/**\n * A policy that retries when the server sends a 429 response with a Retry-After header.\n *\n * To learn more, please refer to\n * https://learn.microsoft.com/azure/azure-resource-manager/resource-manager-request-limits,\n * https://learn.microsoft.com/azure/azure-subscription-service-limits and\n * https://learn.microsoft.com/azure/virtual-machines/troubleshooting/troubleshooting-throttling-errors\n *\n * @param options - Options that configure retry logic.\n */\nfunction throttlingRetryPolicy(options = {}) {\n return {\n name: exports.throttlingRetryPolicyName,\n sendRequest: (0, retryPolicy_js_1.retryPolicy)([(0, throttlingRetryStrategy_js_1.throttlingRetryStrategy)()], {\n maxRetries: options.maxRetries ?? constants_js_1.DEFAULT_RETRY_POLICY_COUNT,\n }).sendRequest,\n };\n}\n//# sourceMappingURL=throttlingRetryPolicy.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.userAgentPolicyName = exports.userAgentPolicy = exports.tlsPolicyName = exports.tlsPolicy = exports.redirectPolicyName = exports.redirectPolicy = exports.getDefaultProxySettings = exports.proxyPolicyName = exports.proxyPolicy = exports.multipartPolicyName = exports.multipartPolicy = exports.logPolicyName = exports.logPolicy = exports.formDataPolicyName = exports.formDataPolicy = exports.throttlingRetryPolicyName = exports.throttlingRetryPolicy = exports.systemErrorRetryPolicyName = exports.systemErrorRetryPolicy = exports.retryPolicy = exports.exponentialRetryPolicyName = exports.exponentialRetryPolicy = exports.defaultRetryPolicyName = exports.defaultRetryPolicy = exports.decompressResponsePolicyName = exports.decompressResponsePolicy = exports.agentPolicyName = exports.agentPolicy = void 0;\nvar agentPolicy_js_1 = require(\"./agentPolicy.js\");\nObject.defineProperty(exports, \"agentPolicy\", { enumerable: true, get: function () { return agentPolicy_js_1.agentPolicy; } });\nObject.defineProperty(exports, \"agentPolicyName\", { enumerable: true, get: function () { return agentPolicy_js_1.agentPolicyName; } });\nvar decompressResponsePolicy_js_1 = require(\"./decompressResponsePolicy.js\");\nObject.defineProperty(exports, \"decompressResponsePolicy\", { enumerable: true, get: function () { return decompressResponsePolicy_js_1.decompressResponsePolicy; } });\nObject.defineProperty(exports, \"decompressResponsePolicyName\", { enumerable: true, get: function () { return decompressResponsePolicy_js_1.decompressResponsePolicyName; } });\nvar defaultRetryPolicy_js_1 = require(\"./defaultRetryPolicy.js\");\nObject.defineProperty(exports, \"defaultRetryPolicy\", { enumerable: true, get: function () { return defaultRetryPolicy_js_1.defaultRetryPolicy; } });\nObject.defineProperty(exports, \"defaultRetryPolicyName\", { enumerable: true, get: function () { return defaultRetryPolicy_js_1.defaultRetryPolicyName; } });\nvar exponentialRetryPolicy_js_1 = require(\"./exponentialRetryPolicy.js\");\nObject.defineProperty(exports, \"exponentialRetryPolicy\", { enumerable: true, get: function () { return exponentialRetryPolicy_js_1.exponentialRetryPolicy; } });\nObject.defineProperty(exports, \"exponentialRetryPolicyName\", { enumerable: true, get: function () { return exponentialRetryPolicy_js_1.exponentialRetryPolicyName; } });\nvar retryPolicy_js_1 = require(\"./retryPolicy.js\");\nObject.defineProperty(exports, \"retryPolicy\", { enumerable: true, get: function () { return retryPolicy_js_1.retryPolicy; } });\nvar systemErrorRetryPolicy_js_1 = require(\"./systemErrorRetryPolicy.js\");\nObject.defineProperty(exports, \"systemErrorRetryPolicy\", { enumerable: true, get: function () { return systemErrorRetryPolicy_js_1.systemErrorRetryPolicy; } });\nObject.defineProperty(exports, \"systemErrorRetryPolicyName\", { enumerable: true, get: function () { return systemErrorRetryPolicy_js_1.systemErrorRetryPolicyName; } });\nvar throttlingRetryPolicy_js_1 = require(\"./throttlingRetryPolicy.js\");\nObject.defineProperty(exports, \"throttlingRetryPolicy\", { enumerable: true, get: function () { return throttlingRetryPolicy_js_1.throttlingRetryPolicy; } });\nObject.defineProperty(exports, \"throttlingRetryPolicyName\", { enumerable: true, get: function () { return throttlingRetryPolicy_js_1.throttlingRetryPolicyName; } });\nvar formDataPolicy_js_1 = require(\"./formDataPolicy.js\");\nObject.defineProperty(exports, \"formDataPolicy\", { enumerable: true, get: function () { return formDataPolicy_js_1.formDataPolicy; } });\nObject.defineProperty(exports, \"formDataPolicyName\", { enumerable: true, get: function () { return formDataPolicy_js_1.formDataPolicyName; } });\nvar logPolicy_js_1 = require(\"./logPolicy.js\");\nObject.defineProperty(exports, \"logPolicy\", { enumerable: true, get: function () { return logPolicy_js_1.logPolicy; } });\nObject.defineProperty(exports, \"logPolicyName\", { enumerable: true, get: function () { return logPolicy_js_1.logPolicyName; } });\nvar multipartPolicy_js_1 = require(\"./multipartPolicy.js\");\nObject.defineProperty(exports, \"multipartPolicy\", { enumerable: true, get: function () { return multipartPolicy_js_1.multipartPolicy; } });\nObject.defineProperty(exports, \"multipartPolicyName\", { enumerable: true, get: function () { return multipartPolicy_js_1.multipartPolicyName; } });\nvar proxyPolicy_js_1 = require(\"./proxyPolicy.js\");\nObject.defineProperty(exports, \"proxyPolicy\", { enumerable: true, get: function () { return proxyPolicy_js_1.proxyPolicy; } });\nObject.defineProperty(exports, \"proxyPolicyName\", { enumerable: true, get: function () { return proxyPolicy_js_1.proxyPolicyName; } });\nObject.defineProperty(exports, \"getDefaultProxySettings\", { enumerable: true, get: function () { return proxyPolicy_js_1.getDefaultProxySettings; } });\nvar redirectPolicy_js_1 = require(\"./redirectPolicy.js\");\nObject.defineProperty(exports, \"redirectPolicy\", { enumerable: true, get: function () { return redirectPolicy_js_1.redirectPolicy; } });\nObject.defineProperty(exports, \"redirectPolicyName\", { enumerable: true, get: function () { return redirectPolicy_js_1.redirectPolicyName; } });\nvar tlsPolicy_js_1 = require(\"./tlsPolicy.js\");\nObject.defineProperty(exports, \"tlsPolicy\", { enumerable: true, get: function () { return tlsPolicy_js_1.tlsPolicy; } });\nObject.defineProperty(exports, \"tlsPolicyName\", { enumerable: true, get: function () { return tlsPolicy_js_1.tlsPolicyName; } });\nvar userAgentPolicy_js_1 = require(\"./userAgentPolicy.js\");\nObject.defineProperty(exports, \"userAgentPolicy\", { enumerable: true, get: function () { return userAgentPolicy_js_1.userAgentPolicy; } });\nObject.defineProperty(exports, \"userAgentPolicyName\", { enumerable: true, get: function () { return userAgentPolicy_js_1.userAgentPolicyName; } });\n//# sourceMappingURL=internal.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.logPolicyName = void 0;\nexports.logPolicy = logPolicy;\nconst log_js_1 = require(\"../log.js\");\nconst policies_1 = require(\"@typespec/ts-http-runtime/internal/policies\");\n/**\n * The programmatic identifier of the logPolicy.\n */\nexports.logPolicyName = policies_1.logPolicyName;\n/**\n * A policy that logs all requests and responses.\n * @param options - Options to configure logPolicy.\n */\nfunction logPolicy(options = {}) {\n return (0, policies_1.logPolicy)({\n logger: log_js_1.logger.info,\n ...options,\n });\n}\n//# sourceMappingURL=logPolicy.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.redirectPolicyName = void 0;\nexports.redirectPolicy = redirectPolicy;\nconst policies_1 = require(\"@typespec/ts-http-runtime/internal/policies\");\n/**\n * The programmatic identifier of the redirectPolicy.\n */\nexports.redirectPolicyName = policies_1.redirectPolicyName;\n/**\n * A policy to follow Location headers from the server in order\n * to support server-side redirection.\n * In the browser, this policy is not used.\n * @param options - Options to control policy behavior.\n */\nfunction redirectPolicy(options = {}) {\n return (0, policies_1.redirectPolicy)(options);\n}\n//# sourceMappingURL=redirectPolicy.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getHeaderName = getHeaderName;\nexports.setPlatformSpecificData = setPlatformSpecificData;\nconst tslib_1 = require(\"tslib\");\nconst node_os_1 = tslib_1.__importDefault(require(\"node:os\"));\nconst node_process_1 = tslib_1.__importDefault(require(\"node:process\"));\n/**\n * @internal\n */\nfunction getHeaderName() {\n return \"User-Agent\";\n}\n/**\n * @internal\n */\nasync function setPlatformSpecificData(map) {\n if (node_process_1.default && node_process_1.default.versions) {\n const osInfo = `${node_os_1.default.type()} ${node_os_1.default.release()}; ${node_os_1.default.arch()}`;\n const versions = node_process_1.default.versions;\n if (versions.bun) {\n map.set(\"Bun\", `${versions.bun} (${osInfo})`);\n }\n else if (versions.deno) {\n map.set(\"Deno\", `${versions.deno} (${osInfo})`);\n }\n else if (versions.node) {\n map.set(\"Node\", `${versions.node} (${osInfo})`);\n }\n }\n}\n//# sourceMappingURL=userAgentPlatform.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.DEFAULT_RETRY_POLICY_COUNT = exports.SDK_VERSION = void 0;\nexports.SDK_VERSION = \"1.22.2\";\nexports.DEFAULT_RETRY_POLICY_COUNT = 3;\n//# sourceMappingURL=constants.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getUserAgentHeaderName = getUserAgentHeaderName;\nexports.getUserAgentValue = getUserAgentValue;\nconst userAgentPlatform_js_1 = require(\"./userAgentPlatform.js\");\nconst constants_js_1 = require(\"../constants.js\");\nfunction getUserAgentString(telemetryInfo) {\n const parts = [];\n for (const [key, value] of telemetryInfo) {\n const token = value ? `${key}/${value}` : key;\n parts.push(token);\n }\n return parts.join(\" \");\n}\n/**\n * @internal\n */\nfunction getUserAgentHeaderName() {\n return (0, userAgentPlatform_js_1.getHeaderName)();\n}\n/**\n * @internal\n */\nasync function getUserAgentValue(prefix) {\n const runtimeInfo = new Map();\n runtimeInfo.set(\"core-rest-pipeline\", constants_js_1.SDK_VERSION);\n await (0, userAgentPlatform_js_1.setPlatformSpecificData)(runtimeInfo);\n const defaultAgent = getUserAgentString(runtimeInfo);\n const userAgentValue = prefix ? `${prefix} ${defaultAgent}` : defaultAgent;\n return userAgentValue;\n}\n//# sourceMappingURL=userAgent.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.userAgentPolicyName = void 0;\nexports.userAgentPolicy = userAgentPolicy;\nconst userAgent_js_1 = require(\"../util/userAgent.js\");\nconst UserAgentHeaderName = (0, userAgent_js_1.getUserAgentHeaderName)();\n/**\n * The programmatic identifier of the userAgentPolicy.\n */\nexports.userAgentPolicyName = \"userAgentPolicy\";\n/**\n * A policy that sets the User-Agent header (or equivalent) to reflect\n * the library version.\n * @param options - Options to customize the user agent value.\n */\nfunction userAgentPolicy(options = {}) {\n const userAgentValue = (0, userAgent_js_1.getUserAgentValue)(options.userAgentPrefix);\n return {\n name: exports.userAgentPolicyName,\n async sendRequest(request, next) {\n if (!request.headers.has(UserAgentHeaderName)) {\n request.headers.set(UserAgentHeaderName, await userAgentValue);\n }\n return next(request);\n },\n };\n}\n//# sourceMappingURL=userAgentPolicy.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.computeSha256Hmac = computeSha256Hmac;\nexports.computeSha256Hash = computeSha256Hash;\nconst node_crypto_1 = require(\"node:crypto\");\n/**\n * Generates a SHA-256 HMAC signature.\n * @param key - The HMAC key represented as a base64 string, used to generate the cryptographic HMAC hash.\n * @param stringToSign - The data to be signed.\n * @param encoding - The textual encoding to use for the returned HMAC digest.\n */\nasync function computeSha256Hmac(key, stringToSign, encoding) {\n const decodedKey = Buffer.from(key, \"base64\");\n return (0, node_crypto_1.createHmac)(\"sha256\", decodedKey).update(stringToSign).digest(encoding);\n}\n/**\n * Generates a SHA-256 hash.\n * @param content - The data to be included in the hash.\n * @param encoding - The textual encoding to use for the returned hash.\n */\nasync function computeSha256Hash(content, encoding) {\n return (0, node_crypto_1.createHash)(\"sha256\").update(content).digest(encoding);\n}\n//# sourceMappingURL=sha256.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Sanitizer = exports.uint8ArrayToString = exports.stringToUint8Array = exports.isWebWorker = exports.isReactNative = exports.isDeno = exports.isNodeRuntime = exports.isNodeLike = exports.isBun = exports.isBrowser = exports.randomUUID = exports.computeSha256Hmac = exports.computeSha256Hash = exports.isError = exports.isObject = exports.getRandomIntegerInclusive = exports.calculateRetryDelay = void 0;\nvar delay_js_1 = require(\"./delay.js\");\nObject.defineProperty(exports, \"calculateRetryDelay\", { enumerable: true, get: function () { return delay_js_1.calculateRetryDelay; } });\nvar random_js_1 = require(\"./random.js\");\nObject.defineProperty(exports, \"getRandomIntegerInclusive\", { enumerable: true, get: function () { return random_js_1.getRandomIntegerInclusive; } });\nvar object_js_1 = require(\"./object.js\");\nObject.defineProperty(exports, \"isObject\", { enumerable: true, get: function () { return object_js_1.isObject; } });\nvar error_js_1 = require(\"./error.js\");\nObject.defineProperty(exports, \"isError\", { enumerable: true, get: function () { return error_js_1.isError; } });\nvar sha256_js_1 = require(\"./sha256.js\");\nObject.defineProperty(exports, \"computeSha256Hash\", { enumerable: true, get: function () { return sha256_js_1.computeSha256Hash; } });\nObject.defineProperty(exports, \"computeSha256Hmac\", { enumerable: true, get: function () { return sha256_js_1.computeSha256Hmac; } });\nvar uuidUtils_js_1 = require(\"./uuidUtils.js\");\nObject.defineProperty(exports, \"randomUUID\", { enumerable: true, get: function () { return uuidUtils_js_1.randomUUID; } });\nvar checkEnvironment_js_1 = require(\"./checkEnvironment.js\");\nObject.defineProperty(exports, \"isBrowser\", { enumerable: true, get: function () { return checkEnvironment_js_1.isBrowser; } });\nObject.defineProperty(exports, \"isBun\", { enumerable: true, get: function () { return checkEnvironment_js_1.isBun; } });\nObject.defineProperty(exports, \"isNodeLike\", { enumerable: true, get: function () { return checkEnvironment_js_1.isNodeLike; } });\nObject.defineProperty(exports, \"isNodeRuntime\", { enumerable: true, get: function () { return checkEnvironment_js_1.isNodeRuntime; } });\nObject.defineProperty(exports, \"isDeno\", { enumerable: true, get: function () { return checkEnvironment_js_1.isDeno; } });\nObject.defineProperty(exports, \"isReactNative\", { enumerable: true, get: function () { return checkEnvironment_js_1.isReactNative; } });\nObject.defineProperty(exports, \"isWebWorker\", { enumerable: true, get: function () { return checkEnvironment_js_1.isWebWorker; } });\nvar bytesEncoding_js_1 = require(\"./bytesEncoding.js\");\nObject.defineProperty(exports, \"stringToUint8Array\", { enumerable: true, get: function () { return bytesEncoding_js_1.stringToUint8Array; } });\nObject.defineProperty(exports, \"uint8ArrayToString\", { enumerable: true, get: function () { return bytesEncoding_js_1.uint8ArrayToString; } });\nvar sanitizer_js_1 = require(\"./sanitizer.js\");\nObject.defineProperty(exports, \"Sanitizer\", { enumerable: true, get: function () { return sanitizer_js_1.Sanitizer; } });\n//# sourceMappingURL=internal.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.cancelablePromiseRace = cancelablePromiseRace;\n/**\n * promise.race() wrapper that aborts rest of promises as soon as the first promise settles.\n */\nasync function cancelablePromiseRace(abortablePromiseBuilders, options) {\n const aborter = new AbortController();\n function abortHandler() {\n aborter.abort();\n }\n options?.abortSignal?.addEventListener(\"abort\", abortHandler);\n try {\n return await Promise.race(abortablePromiseBuilders.map((p) => p({ abortSignal: aborter.signal })));\n }\n finally {\n aborter.abort();\n options?.abortSignal?.removeEventListener(\"abort\", abortHandler);\n }\n}\n//# sourceMappingURL=aborterUtils.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.AbortError = void 0;\n/**\n * This error is thrown when an asynchronous operation has been aborted.\n * Check for this error by testing the `name` that the name property of the\n * error matches `\"AbortError\"`.\n *\n * @example\n * ```ts\n * const controller = new AbortController();\n * controller.abort();\n * try {\n * doAsyncWork(controller.signal)\n * } catch (e) {\n * if (e.name === 'AbortError') {\n * // handle abort error here.\n * }\n * }\n * ```\n */\nclass AbortError extends Error {\n constructor(message) {\n super(message);\n this.name = \"AbortError\";\n }\n}\nexports.AbortError = AbortError;\n//# sourceMappingURL=AbortError.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.AbortError = void 0;\nvar AbortError_js_1 = require(\"./AbortError.js\");\nObject.defineProperty(exports, \"AbortError\", { enumerable: true, get: function () { return AbortError_js_1.AbortError; } });\n//# sourceMappingURL=index.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.createAbortablePromise = createAbortablePromise;\nconst abort_controller_1 = require(\"@azure/abort-controller\");\n/**\n * Creates an abortable promise.\n * @param buildPromise - A function that takes the resolve and reject functions as parameters.\n * @param options - The options for the abortable promise.\n * @returns A promise that can be aborted.\n */\nfunction createAbortablePromise(buildPromise, options) {\n const { cleanupBeforeAbort, abortSignal, abortErrorMsg } = options ?? {};\n return new Promise((resolve, reject) => {\n function rejectOnAbort() {\n reject(new abort_controller_1.AbortError(abortErrorMsg ?? \"The operation was aborted.\"));\n }\n function removeListeners() {\n abortSignal?.removeEventListener(\"abort\", onAbort);\n }\n function onAbort() {\n cleanupBeforeAbort?.();\n removeListeners();\n rejectOnAbort();\n }\n if (abortSignal?.aborted) {\n return rejectOnAbort();\n }\n try {\n buildPromise((x) => {\n removeListeners();\n resolve(x);\n }, (x) => {\n removeListeners();\n reject(x);\n });\n }\n catch (err) {\n reject(err);\n }\n abortSignal?.addEventListener(\"abort\", onAbort);\n });\n}\n//# sourceMappingURL=createAbortablePromise.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.delay = delay;\nexports.calculateRetryDelay = calculateRetryDelay;\nconst createAbortablePromise_js_1 = require(\"./createAbortablePromise.js\");\nconst util_1 = require(\"@typespec/ts-http-runtime/internal/util\");\nconst StandardAbortMessage = \"The delay was aborted.\";\n/**\n * A wrapper for setTimeout that resolves a promise after timeInMs milliseconds.\n * @param timeInMs - The number of milliseconds to be delayed.\n * @param options - The options for delay - currently abort options\n * @returns Promise that is resolved after timeInMs\n */\nfunction delay(timeInMs, options) {\n let token;\n const { abortSignal, abortErrorMsg } = options ?? {};\n return (0, createAbortablePromise_js_1.createAbortablePromise)((resolve) => {\n token = setTimeout(resolve, timeInMs);\n }, {\n cleanupBeforeAbort: () => clearTimeout(token),\n abortSignal,\n abortErrorMsg: abortErrorMsg ?? StandardAbortMessage,\n });\n}\n/**\n * Calculates the delay interval for retry attempts using exponential delay with jitter.\n * @param retryAttempt - The current retry attempt number.\n * @param config - The exponential retry configuration.\n * @returns An object containing the calculated retry delay.\n */\nfunction calculateRetryDelay(retryAttempt, config) {\n // Exponentially increase the delay each time\n const exponentialDelay = config.retryDelayInMs * Math.pow(2, retryAttempt);\n // Don't let the delay exceed the maximum\n const clampedDelay = Math.min(config.maxRetryDelayInMs, exponentialDelay);\n // Allow the final value to have some \"jitter\" (within 50% of the delay size) so\n // that retries across multiple clients don't occur simultaneously.\n const retryAfterInMs = clampedDelay / 2 + (0, util_1.getRandomIntegerInclusive)(0, clampedDelay / 2);\n return { retryAfterInMs };\n}\n//# sourceMappingURL=delay.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getErrorMessage = getErrorMessage;\nconst util_1 = require(\"@typespec/ts-http-runtime/internal/util\");\n/**\n * Given what is thought to be an error object, return the message if possible.\n * If the message is missing, returns a stringified version of the input.\n * @param e - Something thrown from a try block\n * @returns The error message or a string of the input\n */\nfunction getErrorMessage(e) {\n if ((0, util_1.isError)(e)) {\n return e.message;\n }\n else {\n let stringified;\n try {\n if (typeof e === \"object\" && e) {\n stringified = JSON.stringify(e);\n }\n else {\n stringified = String(e);\n }\n }\n catch (err) {\n stringified = \"[unable to stringify input]\";\n }\n return `Unknown error ${stringified}`;\n }\n}\n//# sourceMappingURL=error.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isDefined = isDefined;\nexports.isObjectWithProperties = isObjectWithProperties;\nexports.objectHasProperty = objectHasProperty;\n/**\n * Helper TypeGuard that checks if something is defined or not.\n * @param thing - Anything\n */\nfunction isDefined(thing) {\n return typeof thing !== \"undefined\" && thing !== null;\n}\n/**\n * Helper TypeGuard that checks if the input is an object with the specified properties.\n * @param thing - Anything.\n * @param properties - The name of the properties that should appear in the object.\n */\nfunction isObjectWithProperties(thing, properties) {\n if (!isDefined(thing) || typeof thing !== \"object\") {\n return false;\n }\n for (const property of properties) {\n if (!objectHasProperty(thing, property)) {\n return false;\n }\n }\n return true;\n}\n/**\n * Helper TypeGuard that checks if the input is an object with the specified property.\n * @param thing - Any object.\n * @param property - The name of the property that should appear in the object.\n */\nfunction objectHasProperty(thing, property) {\n return (isDefined(thing) && typeof thing === \"object\" && property in thing);\n}\n//# sourceMappingURL=typeGuards.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isWebWorker = exports.isReactNative = exports.isNodeRuntime = exports.isNodeLike = exports.isNode = exports.isDeno = exports.isBun = exports.isBrowser = exports.objectHasProperty = exports.isObjectWithProperties = exports.isDefined = exports.getErrorMessage = exports.delay = exports.createAbortablePromise = exports.cancelablePromiseRace = void 0;\nexports.calculateRetryDelay = calculateRetryDelay;\nexports.computeSha256Hash = computeSha256Hash;\nexports.computeSha256Hmac = computeSha256Hmac;\nexports.getRandomIntegerInclusive = getRandomIntegerInclusive;\nexports.isError = isError;\nexports.isObject = isObject;\nexports.randomUUID = randomUUID;\nexports.uint8ArrayToString = uint8ArrayToString;\nexports.stringToUint8Array = stringToUint8Array;\nconst tslib_1 = require(\"tslib\");\nconst tspRuntime = tslib_1.__importStar(require(\"@typespec/ts-http-runtime/internal/util\"));\nvar aborterUtils_js_1 = require(\"./aborterUtils.js\");\nObject.defineProperty(exports, \"cancelablePromiseRace\", { enumerable: true, get: function () { return aborterUtils_js_1.cancelablePromiseRace; } });\nvar createAbortablePromise_js_1 = require(\"./createAbortablePromise.js\");\nObject.defineProperty(exports, \"createAbortablePromise\", { enumerable: true, get: function () { return createAbortablePromise_js_1.createAbortablePromise; } });\nvar delay_js_1 = require(\"./delay.js\");\nObject.defineProperty(exports, \"delay\", { enumerable: true, get: function () { return delay_js_1.delay; } });\nvar error_js_1 = require(\"./error.js\");\nObject.defineProperty(exports, \"getErrorMessage\", { enumerable: true, get: function () { return error_js_1.getErrorMessage; } });\nvar typeGuards_js_1 = require(\"./typeGuards.js\");\nObject.defineProperty(exports, \"isDefined\", { enumerable: true, get: function () { return typeGuards_js_1.isDefined; } });\nObject.defineProperty(exports, \"isObjectWithProperties\", { enumerable: true, get: function () { return typeGuards_js_1.isObjectWithProperties; } });\nObject.defineProperty(exports, \"objectHasProperty\", { enumerable: true, get: function () { return typeGuards_js_1.objectHasProperty; } });\n/**\n * Calculates the delay interval for retry attempts using exponential delay with jitter.\n *\n * @param retryAttempt - The current retry attempt number.\n *\n * @param config - The exponential retry configuration.\n *\n * @returns An object containing the calculated retry delay.\n */\nfunction calculateRetryDelay(retryAttempt, config) {\n return tspRuntime.calculateRetryDelay(retryAttempt, config);\n}\n/**\n * Generates a SHA-256 hash.\n *\n * @param content - The data to be included in the hash.\n *\n * @param encoding - The textual encoding to use for the returned hash.\n */\nfunction computeSha256Hash(content, encoding) {\n return tspRuntime.computeSha256Hash(content, encoding);\n}\n/**\n * Generates a SHA-256 HMAC signature.\n *\n * @param key - The HMAC key represented as a base64 string, used to generate the cryptographic HMAC hash.\n *\n * @param stringToSign - The data to be signed.\n *\n * @param encoding - The textual encoding to use for the returned HMAC digest.\n */\nfunction computeSha256Hmac(key, stringToSign, encoding) {\n return tspRuntime.computeSha256Hmac(key, stringToSign, encoding);\n}\n/**\n * Returns a random integer value between a lower and upper bound, inclusive of both bounds. Note that this uses Math.random and isn't secure. If you need to use this for any kind of security purpose, find a better source of random.\n *\n * @param min - The smallest integer value allowed.\n *\n * @param max - The largest integer value allowed.\n */\nfunction getRandomIntegerInclusive(min, max) {\n return tspRuntime.getRandomIntegerInclusive(min, max);\n}\n/**\n * Typeguard for an error object shape (has name and message)\n *\n * @param e - Something caught by a catch clause.\n */\nfunction isError(e) {\n return tspRuntime.isError(e);\n}\n/**\n * Helper to determine when an input is a generic JS object.\n *\n * @returns true when input is an object type that is not null, Array, RegExp, or Date.\n */\nfunction isObject(input) {\n return tspRuntime.isObject(input);\n}\n/**\n * Generated Universally Unique Identifier\n *\n * @returns RFC4122 v4 UUID.\n */\nfunction randomUUID() {\n return tspRuntime.randomUUID();\n}\n/**\n * A constant that indicates whether the environment the code is running is a Web Browser.\n */\nexports.isBrowser = tspRuntime.isBrowser;\n/**\n * A constant that indicates whether the environment the code is running is Bun.sh.\n */\nexports.isBun = tspRuntime.isBun;\n/**\n * A constant that indicates whether the environment the code is running is Deno.\n */\nexports.isDeno = tspRuntime.isDeno;\n/**\n * A constant that indicates whether the environment the code is running is a Node.js compatible environment.\n *\n * @deprecated\n *\n * Use `isNodeLike` instead.\n */\nexports.isNode = tspRuntime.isNodeLike;\n/**\n * A constant that indicates whether the environment the code is running is a Node.js compatible environment.\n */\nexports.isNodeLike = tspRuntime.isNodeLike;\n/**\n * A constant that indicates whether the environment the code is running is Node.JS.\n */\nexports.isNodeRuntime = tspRuntime.isNodeRuntime;\n/**\n * A constant that indicates whether the environment the code is running is in React-Native.\n */\nexports.isReactNative = tspRuntime.isReactNative;\n/**\n * A constant that indicates whether the environment the code is running is a Web Worker.\n */\nexports.isWebWorker = tspRuntime.isWebWorker;\n/**\n * The helper that transforms bytes with specific character encoding into string\n * @param bytes - the uint8array bytes\n * @param format - the format we use to encode the byte\n * @returns a string of the encoded string\n */\nfunction uint8ArrayToString(bytes, format) {\n return tspRuntime.uint8ArrayToString(bytes, format);\n}\n/**\n * The helper that transforms string to specific character encoded bytes array.\n * @param value - the string to be converted\n * @param format - the format we use to decode the value\n * @returns a uint8array\n */\nfunction stringToUint8Array(value, format) {\n return tspRuntime.stringToUint8Array(value, format);\n}\n//# sourceMappingURL=index.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.hasRawContent = hasRawContent;\nexports.getRawContent = getRawContent;\nexports.createFileFromStream = createFileFromStream;\nexports.createFile = createFile;\nconst core_util_1 = require(\"@azure/core-util\");\nfunction isNodeReadableStream(x) {\n return Boolean(x && typeof x[\"pipe\"] === \"function\");\n}\nconst unimplementedMethods = {\n arrayBuffer: () => {\n throw new Error(\"Not implemented\");\n },\n bytes: () => {\n throw new Error(\"Not implemented\");\n },\n slice: () => {\n throw new Error(\"Not implemented\");\n },\n text: () => {\n throw new Error(\"Not implemented\");\n },\n};\n/**\n * Private symbol used as key on objects created using createFile containing the\n * original source of the file object.\n *\n * This is used in Node to access the original Node stream without using Blob#stream, which\n * returns a web stream. This is done to avoid a couple of bugs to do with Blob#stream and\n * Readable#to/fromWeb in Node versions we support:\n * - https://github.com/nodejs/node/issues/42694 (fixed in Node 18.14)\n * - https://github.com/nodejs/node/issues/48916 (fixed in Node 20.6)\n *\n * Once these versions are no longer supported, we may be able to stop doing this.\n *\n * @internal\n */\nconst rawContent = Symbol(\"rawContent\");\n/**\n * Type guard to check if a given object is a blob-like object with a raw content property.\n */\nfunction hasRawContent(x) {\n return typeof x[rawContent] === \"function\";\n}\n/**\n * Extract the raw content from a given blob-like object. If the input was created using createFile\n * or createFileFromStream, the exact content passed into createFile/createFileFromStream will be used.\n * For true instances of Blob and File, returns the actual blob.\n *\n * @internal\n */\nfunction getRawContent(blob) {\n if (hasRawContent(blob)) {\n return blob[rawContent]();\n }\n else {\n return blob;\n }\n}\n/**\n * Create an object that implements the File interface. This object is intended to be\n * passed into RequestBodyType.formData, and is not guaranteed to work as expected in\n * other situations.\n *\n * Use this function to:\n * - Create a File object for use in RequestBodyType.formData in environments where the\n * global File object is unavailable.\n * - Create a File-like object from a readable stream without reading the stream into memory.\n *\n * @param stream - the content of the file as a callback returning a stream. When a File object made using createFile is\n * passed in a request's form data map, the stream will not be read into memory\n * and instead will be streamed when the request is made. In the event of a retry, the\n * stream needs to be read again, so this callback SHOULD return a fresh stream if possible.\n * @param name - the name of the file.\n * @param options - optional metadata about the file, e.g. file name, file size, MIME type.\n */\nfunction createFileFromStream(stream, name, options = {}) {\n return {\n ...unimplementedMethods,\n type: options.type ?? \"\",\n lastModified: options.lastModified ?? new Date().getTime(),\n webkitRelativePath: options.webkitRelativePath ?? \"\",\n size: options.size ?? -1,\n name,\n stream: () => {\n const s = stream();\n if (isNodeReadableStream(s)) {\n throw new Error(\"Not supported: a Node stream was provided as input to createFileFromStream.\");\n }\n return s;\n },\n [rawContent]: stream,\n };\n}\n/**\n * Create an object that implements the File interface. This object is intended to be\n * passed into RequestBodyType.formData, and is not guaranteed to work as expected in\n * other situations.\n *\n * Use this function create a File object for use in RequestBodyType.formData in environments where the global File object is unavailable.\n *\n * @param content - the content of the file as a Uint8Array in memory.\n * @param name - the name of the file.\n * @param options - optional metadata about the file, e.g. file name, file size, MIME type.\n */\nfunction createFile(content, name, options = {}) {\n if (core_util_1.isNodeLike) {\n return {\n ...unimplementedMethods,\n type: options.type ?? \"\",\n lastModified: options.lastModified ?? new Date().getTime(),\n webkitRelativePath: options.webkitRelativePath ?? \"\",\n size: content.byteLength,\n name,\n arrayBuffer: async () => content.buffer,\n stream: () => new Blob([toArrayBuffer(content)]).stream(),\n [rawContent]: () => content,\n };\n }\n else {\n return new File([toArrayBuffer(content)], name, options);\n }\n}\nfunction toArrayBuffer(source) {\n if (\"resize\" in source.buffer) {\n // ArrayBuffer\n return source;\n }\n // SharedArrayBuffer\n return source.map((x) => x);\n}\n//# sourceMappingURL=file.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.multipartPolicyName = void 0;\nexports.multipartPolicy = multipartPolicy;\nconst policies_1 = require(\"@typespec/ts-http-runtime/internal/policies\");\nconst file_js_1 = require(\"../util/file.js\");\n/**\n * Name of multipart policy\n */\nexports.multipartPolicyName = policies_1.multipartPolicyName;\n/**\n * Pipeline policy for multipart requests\n */\nfunction multipartPolicy() {\n const tspPolicy = (0, policies_1.multipartPolicy)();\n return {\n name: exports.multipartPolicyName,\n sendRequest: async (request, next) => {\n if (request.multipartBody) {\n for (const part of request.multipartBody.parts) {\n if ((0, file_js_1.hasRawContent)(part.body)) {\n part.body = (0, file_js_1.getRawContent)(part.body);\n }\n }\n }\n return tspPolicy.sendRequest(request, next);\n },\n };\n}\n//# sourceMappingURL=multipartPolicy.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.decompressResponsePolicyName = void 0;\nexports.decompressResponsePolicy = decompressResponsePolicy;\nconst policies_1 = require(\"@typespec/ts-http-runtime/internal/policies\");\n/**\n * The programmatic identifier of the decompressResponsePolicy.\n */\nexports.decompressResponsePolicyName = policies_1.decompressResponsePolicyName;\n/**\n * A policy to enable response decompression according to Accept-Encoding header\n * https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Accept-Encoding\n */\nfunction decompressResponsePolicy() {\n return (0, policies_1.decompressResponsePolicy)();\n}\n//# sourceMappingURL=decompressResponsePolicy.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.defaultRetryPolicyName = void 0;\nexports.defaultRetryPolicy = defaultRetryPolicy;\nconst policies_1 = require(\"@typespec/ts-http-runtime/internal/policies\");\n/**\n * Name of the {@link defaultRetryPolicy}\n */\nexports.defaultRetryPolicyName = policies_1.defaultRetryPolicyName;\n/**\n * A policy that retries according to three strategies:\n * - When the server sends a 429 response with a Retry-After header.\n * - When there are errors in the underlying transport layer (e.g. DNS lookup failures).\n * - Or otherwise if the outgoing request fails, it will retry with an exponentially increasing delay.\n */\nfunction defaultRetryPolicy(options = {}) {\n return (0, policies_1.defaultRetryPolicy)(options);\n}\n//# sourceMappingURL=defaultRetryPolicy.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.formDataPolicyName = void 0;\nexports.formDataPolicy = formDataPolicy;\nconst policies_1 = require(\"@typespec/ts-http-runtime/internal/policies\");\n/**\n * The programmatic identifier of the formDataPolicy.\n */\nexports.formDataPolicyName = policies_1.formDataPolicyName;\n/**\n * A policy that encodes FormData on the request into the body.\n */\nfunction formDataPolicy() {\n return (0, policies_1.formDataPolicy)();\n}\n//# sourceMappingURL=formDataPolicy.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.proxyPolicyName = void 0;\nexports.getDefaultProxySettings = getDefaultProxySettings;\nexports.proxyPolicy = proxyPolicy;\nconst policies_1 = require(\"@typespec/ts-http-runtime/internal/policies\");\n/**\n * The programmatic identifier of the proxyPolicy.\n */\nexports.proxyPolicyName = policies_1.proxyPolicyName;\n/**\n * This method converts a proxy url into `ProxySettings` for use with ProxyPolicy.\n * If no argument is given, it attempts to parse a proxy URL from the environment\n * variables `HTTPS_PROXY` or `HTTP_PROXY`.\n * @param proxyUrl - The url of the proxy to use. May contain authentication information.\n * @deprecated - Internally this method is no longer necessary when setting proxy information.\n */\nfunction getDefaultProxySettings(proxyUrl) {\n return (0, policies_1.getDefaultProxySettings)(proxyUrl);\n}\n/**\n * A policy that allows one to apply proxy settings to all requests.\n * If not passed static settings, they will be retrieved from the HTTPS_PROXY\n * or HTTP_PROXY environment variables.\n * @param proxySettings - ProxySettings to use on each request.\n * @param options - additional settings, for example, custom NO_PROXY patterns\n */\nfunction proxyPolicy(proxySettings, options) {\n return (0, policies_1.proxyPolicy)(proxySettings, options);\n}\n//# sourceMappingURL=proxyPolicy.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.setClientRequestIdPolicyName = void 0;\nexports.setClientRequestIdPolicy = setClientRequestIdPolicy;\n/**\n * The programmatic identifier of the setClientRequestIdPolicy.\n */\nexports.setClientRequestIdPolicyName = \"setClientRequestIdPolicy\";\n/**\n * Each PipelineRequest gets a unique id upon creation.\n * This policy passes that unique id along via an HTTP header to enable better\n * telemetry and tracing.\n * @param requestIdHeaderName - The name of the header to pass the request ID to.\n */\nfunction setClientRequestIdPolicy(requestIdHeaderName = \"x-ms-client-request-id\") {\n return {\n name: exports.setClientRequestIdPolicyName,\n async sendRequest(request, next) {\n if (!request.headers.has(requestIdHeaderName)) {\n request.headers.set(requestIdHeaderName, request.requestId);\n }\n return next(request);\n },\n };\n}\n//# sourceMappingURL=setClientRequestIdPolicy.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.agentPolicyName = void 0;\nexports.agentPolicy = agentPolicy;\nconst policies_1 = require(\"@typespec/ts-http-runtime/internal/policies\");\n/**\n * Name of the Agent Policy\n */\nexports.agentPolicyName = policies_1.agentPolicyName;\n/**\n * Gets a pipeline policy that sets http.agent\n */\nfunction agentPolicy(agent) {\n return (0, policies_1.agentPolicy)(agent);\n}\n//# sourceMappingURL=agentPolicy.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.tlsPolicyName = void 0;\nexports.tlsPolicy = tlsPolicy;\nconst policies_1 = require(\"@typespec/ts-http-runtime/internal/policies\");\n/**\n * Name of the TLS Policy\n */\nexports.tlsPolicyName = policies_1.tlsPolicyName;\n/**\n * Gets a pipeline policy that adds the client certificate to the HttpClient agent for authentication.\n */\nfunction tlsPolicy(tlsSettings) {\n return (0, policies_1.tlsPolicy)(tlsSettings);\n}\n//# sourceMappingURL=tlsPolicy.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.TracingContextImpl = exports.knownContextKeys = void 0;\nexports.createTracingContext = createTracingContext;\n/** @internal */\nexports.knownContextKeys = {\n span: Symbol.for(\"@azure/core-tracing span\"),\n namespace: Symbol.for(\"@azure/core-tracing namespace\"),\n};\n/**\n * Creates a new {@link TracingContext} with the given options.\n * @param options - A set of known keys that may be set on the context.\n * @returns A new {@link TracingContext} with the given options.\n *\n * @internal\n */\nfunction createTracingContext(options = {}) {\n let context = new TracingContextImpl(options.parentContext);\n if (options.span) {\n context = context.setValue(exports.knownContextKeys.span, options.span);\n }\n if (options.namespace) {\n context = context.setValue(exports.knownContextKeys.namespace, options.namespace);\n }\n return context;\n}\n/** @internal */\nclass TracingContextImpl {\n _contextMap;\n constructor(initialContext) {\n this._contextMap =\n initialContext instanceof TracingContextImpl\n ? new Map(initialContext._contextMap)\n : new Map();\n }\n setValue(key, value) {\n const newContext = new TracingContextImpl(this);\n newContext._contextMap.set(key, value);\n return newContext;\n }\n getValue(key) {\n return this._contextMap.get(key);\n }\n deleteValue(key) {\n const newContext = new TracingContextImpl(this);\n newContext._contextMap.delete(key);\n return newContext;\n }\n}\nexports.TracingContextImpl = TracingContextImpl;\n//# sourceMappingURL=tracingContext.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.state = void 0;\n/**\n * @internal\n *\n * Holds the singleton instrumenter, to be shared across CJS and ESM imports.\n */\nexports.state = {\n instrumenterImplementation: undefined,\n};\n//# sourceMappingURL=state-cjs.cjs.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.createDefaultTracingSpan = createDefaultTracingSpan;\nexports.createDefaultInstrumenter = createDefaultInstrumenter;\nexports.useInstrumenter = useInstrumenter;\nexports.getInstrumenter = getInstrumenter;\nconst tracingContext_js_1 = require(\"./tracingContext.js\");\nconst state_js_1 = require(\"./state.js\");\nfunction createDefaultTracingSpan() {\n return {\n end: () => {\n // noop\n },\n isRecording: () => false,\n recordException: () => {\n // noop\n },\n setAttribute: () => {\n // noop\n },\n setStatus: () => {\n // noop\n },\n addEvent: () => {\n // noop\n },\n };\n}\nfunction createDefaultInstrumenter() {\n return {\n createRequestHeaders: () => {\n return {};\n },\n parseTraceparentHeader: () => {\n return undefined;\n },\n startSpan: (_name, spanOptions) => {\n return {\n span: createDefaultTracingSpan(),\n tracingContext: (0, tracingContext_js_1.createTracingContext)({ parentContext: spanOptions.tracingContext }),\n };\n },\n withContext(_context, callback, ...callbackArgs) {\n return callback(...callbackArgs);\n },\n };\n}\n/**\n * Extends the Azure SDK with support for a given instrumenter implementation.\n *\n * @param instrumenter - The instrumenter implementation to use.\n */\nfunction useInstrumenter(instrumenter) {\n state_js_1.state.instrumenterImplementation = instrumenter;\n}\n/**\n * Gets the currently set instrumenter, a No-Op instrumenter by default.\n *\n * @returns The currently set instrumenter\n */\nfunction getInstrumenter() {\n if (!state_js_1.state.instrumenterImplementation) {\n state_js_1.state.instrumenterImplementation = createDefaultInstrumenter();\n }\n return state_js_1.state.instrumenterImplementation;\n}\n//# sourceMappingURL=instrumenter.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.createTracingClient = createTracingClient;\nconst instrumenter_js_1 = require(\"./instrumenter.js\");\nconst tracingContext_js_1 = require(\"./tracingContext.js\");\n/**\n * Creates a new tracing client.\n *\n * @param options - Options used to configure the tracing client.\n * @returns - An instance of {@link TracingClient}.\n */\nfunction createTracingClient(options) {\n const { namespace, packageName, packageVersion } = options;\n function startSpan(name, operationOptions, spanOptions) {\n const startSpanResult = (0, instrumenter_js_1.getInstrumenter)().startSpan(name, {\n ...spanOptions,\n packageName: packageName,\n packageVersion: packageVersion,\n tracingContext: operationOptions?.tracingOptions?.tracingContext,\n });\n let tracingContext = startSpanResult.tracingContext;\n const span = startSpanResult.span;\n if (!tracingContext.getValue(tracingContext_js_1.knownContextKeys.namespace)) {\n tracingContext = tracingContext.setValue(tracingContext_js_1.knownContextKeys.namespace, namespace);\n }\n span.setAttribute(\"az.namespace\", tracingContext.getValue(tracingContext_js_1.knownContextKeys.namespace));\n const updatedOptions = Object.assign({}, operationOptions, {\n tracingOptions: { ...operationOptions?.tracingOptions, tracingContext },\n });\n return {\n span,\n updatedOptions,\n };\n }\n async function withSpan(name, operationOptions, callback, spanOptions) {\n const { span, updatedOptions } = startSpan(name, operationOptions, spanOptions);\n try {\n const result = await withContext(updatedOptions.tracingOptions.tracingContext, () => Promise.resolve(callback(updatedOptions, span)));\n span.setStatus({ status: \"success\" });\n return result;\n }\n catch (err) {\n span.setStatus({ status: \"error\", error: err });\n throw err;\n }\n finally {\n span.end();\n }\n }\n function withContext(context, callback, ...callbackArgs) {\n return (0, instrumenter_js_1.getInstrumenter)().withContext(context, callback, ...callbackArgs);\n }\n /**\n * Parses a traceparent header value into a span identifier.\n *\n * @param traceparentHeader - The traceparent header to parse.\n * @returns An implementation-specific identifier for the span.\n */\n function parseTraceparentHeader(traceparentHeader) {\n return (0, instrumenter_js_1.getInstrumenter)().parseTraceparentHeader(traceparentHeader);\n }\n /**\n * Creates a set of request headers to propagate tracing information to a backend.\n *\n * @param tracingContext - The context containing the span to serialize.\n * @returns The set of headers to add to a request.\n */\n function createRequestHeaders(tracingContext) {\n return (0, instrumenter_js_1.getInstrumenter)().createRequestHeaders(tracingContext);\n }\n return {\n startSpan,\n withSpan,\n withContext,\n parseTraceparentHeader,\n createRequestHeaders,\n };\n}\n//# sourceMappingURL=tracingClient.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.createTracingClient = exports.useInstrumenter = void 0;\nvar instrumenter_js_1 = require(\"./instrumenter.js\");\nObject.defineProperty(exports, \"useInstrumenter\", { enumerable: true, get: function () { return instrumenter_js_1.useInstrumenter; } });\nvar tracingClient_js_1 = require(\"./tracingClient.js\");\nObject.defineProperty(exports, \"createTracingClient\", { enumerable: true, get: function () { return tracingClient_js_1.createTracingClient; } });\n//# sourceMappingURL=index.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.RestError = void 0;\nexports.isRestError = isRestError;\nconst ts_http_runtime_1 = require(\"@typespec/ts-http-runtime\");\n/**\n * A custom error type for failed pipeline requests.\n */\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexports.RestError = ts_http_runtime_1.RestError;\n/**\n * Typeguard for RestError\n * @param e - Something caught by a catch clause.\n */\nfunction isRestError(e) {\n return (0, ts_http_runtime_1.isRestError)(e);\n}\n//# sourceMappingURL=restError.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.tracingPolicyName = void 0;\nexports.tracingPolicy = tracingPolicy;\nconst core_tracing_1 = require(\"@azure/core-tracing\");\nconst constants_js_1 = require(\"../constants.js\");\nconst userAgent_js_1 = require(\"../util/userAgent.js\");\nconst log_js_1 = require(\"../log.js\");\nconst core_util_1 = require(\"@azure/core-util\");\nconst restError_js_1 = require(\"../restError.js\");\nconst util_1 = require(\"@typespec/ts-http-runtime/internal/util\");\n/**\n * The programmatic identifier of the tracingPolicy.\n */\nexports.tracingPolicyName = \"tracingPolicy\";\n/**\n * A simple policy to create OpenTelemetry Spans for each request made by the pipeline\n * that has SpanOptions with a parent.\n * Requests made without a parent Span will not be recorded.\n * @param options - Options to configure the telemetry logged by the tracing policy.\n */\nfunction tracingPolicy(options = {}) {\n const userAgentPromise = (0, userAgent_js_1.getUserAgentValue)(options.userAgentPrefix);\n const sanitizer = new util_1.Sanitizer({\n additionalAllowedQueryParameters: options.additionalAllowedQueryParameters,\n });\n const tracingClient = tryCreateTracingClient();\n return {\n name: exports.tracingPolicyName,\n async sendRequest(request, next) {\n if (!tracingClient) {\n return next(request);\n }\n const userAgent = await userAgentPromise;\n const spanAttributes = {\n \"http.url\": sanitizer.sanitizeUrl(request.url),\n \"http.method\": request.method,\n \"http.user_agent\": userAgent,\n requestId: request.requestId,\n };\n if (userAgent) {\n spanAttributes[\"http.user_agent\"] = userAgent;\n }\n const { span, tracingContext } = tryCreateSpan(tracingClient, request, spanAttributes) ?? {};\n if (!span || !tracingContext) {\n return next(request);\n }\n try {\n const response = await tracingClient.withContext(tracingContext, next, request);\n tryProcessResponse(span, response);\n return response;\n }\n catch (err) {\n tryProcessError(span, err);\n throw err;\n }\n },\n };\n}\nfunction tryCreateTracingClient() {\n try {\n return (0, core_tracing_1.createTracingClient)({\n namespace: \"\",\n packageName: \"@azure/core-rest-pipeline\",\n packageVersion: constants_js_1.SDK_VERSION,\n });\n }\n catch (e) {\n log_js_1.logger.warning(`Error when creating the TracingClient: ${(0, core_util_1.getErrorMessage)(e)}`);\n return undefined;\n }\n}\nfunction tryCreateSpan(tracingClient, request, spanAttributes) {\n try {\n // As per spec, we do not need to differentiate between HTTP and HTTPS in span name.\n const { span, updatedOptions } = tracingClient.startSpan(`HTTP ${request.method}`, { tracingOptions: request.tracingOptions }, {\n spanKind: \"client\",\n spanAttributes,\n });\n // If the span is not recording, don't do any more work.\n if (!span.isRecording()) {\n span.end();\n return undefined;\n }\n // set headers\n const headers = tracingClient.createRequestHeaders(updatedOptions.tracingOptions.tracingContext);\n for (const [key, value] of Object.entries(headers)) {\n request.headers.set(key, value);\n }\n return { span, tracingContext: updatedOptions.tracingOptions.tracingContext };\n }\n catch (e) {\n log_js_1.logger.warning(`Skipping creating a tracing span due to an error: ${(0, core_util_1.getErrorMessage)(e)}`);\n return undefined;\n }\n}\nfunction tryProcessError(span, error) {\n try {\n span.setStatus({\n status: \"error\",\n error: (0, core_util_1.isError)(error) ? error : undefined,\n });\n if ((0, restError_js_1.isRestError)(error) && error.statusCode) {\n span.setAttribute(\"http.status_code\", error.statusCode);\n }\n span.end();\n }\n catch (e) {\n log_js_1.logger.warning(`Skipping tracing span processing due to an error: ${(0, core_util_1.getErrorMessage)(e)}`);\n }\n}\nfunction tryProcessResponse(span, response) {\n try {\n span.setAttribute(\"http.status_code\", response.status);\n const serviceRequestId = response.headers.get(\"x-ms-request-id\");\n if (serviceRequestId) {\n span.setAttribute(\"serviceRequestId\", serviceRequestId);\n }\n // Per semantic conventions, only set the status to error if the status code is 4xx or 5xx.\n // Otherwise, the status MUST remain unset.\n // https://opentelemetry.io/docs/specs/semconv/http/http-spans/#status\n if (response.status >= 400) {\n span.setStatus({\n status: \"error\",\n });\n }\n span.end();\n }\n catch (e) {\n log_js_1.logger.warning(`Skipping tracing span processing due to an error: ${(0, core_util_1.getErrorMessage)(e)}`);\n }\n}\n//# sourceMappingURL=tracingPolicy.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.wrapAbortSignalLike = wrapAbortSignalLike;\n/**\n * Creates a native AbortSignal which reflects the state of the provided AbortSignalLike.\n * If the AbortSignalLike is already a native AbortSignal, it is returned as is.\n * @param abortSignalLike - The AbortSignalLike to wrap.\n * @returns - An object containing the native AbortSignal and an optional cleanup function. The cleanup function should be called when the AbortSignal is no longer needed.\n */\nfunction wrapAbortSignalLike(abortSignalLike) {\n if (abortSignalLike instanceof AbortSignal) {\n return { abortSignal: abortSignalLike };\n }\n if (abortSignalLike.aborted) {\n return { abortSignal: AbortSignal.abort(abortSignalLike.reason) };\n }\n const controller = new AbortController();\n let needsCleanup = true;\n function cleanup() {\n if (needsCleanup) {\n abortSignalLike.removeEventListener(\"abort\", listener);\n needsCleanup = false;\n }\n }\n function listener() {\n controller.abort(abortSignalLike.reason);\n cleanup();\n }\n abortSignalLike.addEventListener(\"abort\", listener);\n return { abortSignal: controller.signal, cleanup };\n}\n//# sourceMappingURL=wrapAbortSignal.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.wrapAbortSignalLikePolicyName = void 0;\nexports.wrapAbortSignalLikePolicy = wrapAbortSignalLikePolicy;\nconst wrapAbortSignal_js_1 = require(\"../util/wrapAbortSignal.js\");\nexports.wrapAbortSignalLikePolicyName = \"wrapAbortSignalLikePolicy\";\n/**\n * Policy that ensure that any AbortSignalLike is wrapped in a native AbortSignal for processing by the pipeline.\n * Since the ts-http-runtime expects a native AbortSignal, this policy is used to ensure that any AbortSignalLike is wrapped in a native AbortSignal.\n *\n * @returns - created policy\n */\nfunction wrapAbortSignalLikePolicy() {\n return {\n name: exports.wrapAbortSignalLikePolicyName,\n sendRequest: async (request, next) => {\n if (!request.abortSignal) {\n return next(request);\n }\n const { abortSignal, cleanup } = (0, wrapAbortSignal_js_1.wrapAbortSignalLike)(request.abortSignal);\n request.abortSignal = abortSignal;\n try {\n return await next(request);\n }\n finally {\n cleanup?.();\n }\n },\n };\n}\n//# sourceMappingURL=wrapAbortSignalLikePolicy.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.createPipelineFromOptions = createPipelineFromOptions;\nconst logPolicy_js_1 = require(\"./policies/logPolicy.js\");\nconst pipeline_js_1 = require(\"./pipeline.js\");\nconst redirectPolicy_js_1 = require(\"./policies/redirectPolicy.js\");\nconst userAgentPolicy_js_1 = require(\"./policies/userAgentPolicy.js\");\nconst multipartPolicy_js_1 = require(\"./policies/multipartPolicy.js\");\nconst decompressResponsePolicy_js_1 = require(\"./policies/decompressResponsePolicy.js\");\nconst defaultRetryPolicy_js_1 = require(\"./policies/defaultRetryPolicy.js\");\nconst formDataPolicy_js_1 = require(\"./policies/formDataPolicy.js\");\nconst core_util_1 = require(\"@azure/core-util\");\nconst proxyPolicy_js_1 = require(\"./policies/proxyPolicy.js\");\nconst setClientRequestIdPolicy_js_1 = require(\"./policies/setClientRequestIdPolicy.js\");\nconst agentPolicy_js_1 = require(\"./policies/agentPolicy.js\");\nconst tlsPolicy_js_1 = require(\"./policies/tlsPolicy.js\");\nconst tracingPolicy_js_1 = require(\"./policies/tracingPolicy.js\");\nconst wrapAbortSignalLikePolicy_js_1 = require(\"./policies/wrapAbortSignalLikePolicy.js\");\n/**\n * Create a new pipeline with a default set of customizable policies.\n * @param options - Options to configure a custom pipeline.\n */\nfunction createPipelineFromOptions(options) {\n const pipeline = (0, pipeline_js_1.createEmptyPipeline)();\n if (core_util_1.isNodeLike) {\n if (options.agent) {\n pipeline.addPolicy((0, agentPolicy_js_1.agentPolicy)(options.agent));\n }\n if (options.tlsOptions) {\n pipeline.addPolicy((0, tlsPolicy_js_1.tlsPolicy)(options.tlsOptions));\n }\n pipeline.addPolicy((0, proxyPolicy_js_1.proxyPolicy)(options.proxyOptions));\n pipeline.addPolicy((0, decompressResponsePolicy_js_1.decompressResponsePolicy)());\n }\n pipeline.addPolicy((0, wrapAbortSignalLikePolicy_js_1.wrapAbortSignalLikePolicy)());\n pipeline.addPolicy((0, formDataPolicy_js_1.formDataPolicy)(), { beforePolicies: [multipartPolicy_js_1.multipartPolicyName] });\n pipeline.addPolicy((0, userAgentPolicy_js_1.userAgentPolicy)(options.userAgentOptions));\n pipeline.addPolicy((0, setClientRequestIdPolicy_js_1.setClientRequestIdPolicy)(options.telemetryOptions?.clientRequestIdHeaderName));\n // The multipart policy is added after policies with no phase, so that\n // policies can be added between it and formDataPolicy to modify\n // properties (e.g., making the boundary constant in recorded tests).\n pipeline.addPolicy((0, multipartPolicy_js_1.multipartPolicy)(), { afterPhase: \"Deserialize\" });\n pipeline.addPolicy((0, defaultRetryPolicy_js_1.defaultRetryPolicy)(options.retryOptions), { phase: \"Retry\" });\n pipeline.addPolicy((0, tracingPolicy_js_1.tracingPolicy)({ ...options.userAgentOptions, ...options.loggingOptions }), {\n afterPhase: \"Retry\",\n });\n if (core_util_1.isNodeLike) {\n // Both XHR and Fetch expect to handle redirects automatically,\n // so only include this policy when we're in Node.\n pipeline.addPolicy((0, redirectPolicy_js_1.redirectPolicy)(options.redirectOptions), { afterPhase: \"Retry\" });\n }\n pipeline.addPolicy((0, logPolicy_js_1.logPolicy)(options.loggingOptions), { afterPhase: \"Sign\" });\n return pipeline;\n}\n//# sourceMappingURL=createPipelineFromOptions.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.createDefaultHttpClient = createDefaultHttpClient;\nconst ts_http_runtime_1 = require(\"@typespec/ts-http-runtime\");\nconst wrapAbortSignal_js_1 = require(\"./util/wrapAbortSignal.js\");\n/**\n * Create the correct HttpClient for the current environment.\n */\nfunction createDefaultHttpClient() {\n const client = (0, ts_http_runtime_1.createDefaultHttpClient)();\n return {\n async sendRequest(request) {\n // we wrap any AbortSignalLike here since the TypeSpec runtime expects a native AbortSignal.\n // 99% of the time, this should be a no-op since a native AbortSignal is passed in.\n const { abortSignal, cleanup } = request.abortSignal\n ? (0, wrapAbortSignal_js_1.wrapAbortSignalLike)(request.abortSignal)\n : {};\n try {\n request.abortSignal = abortSignal;\n return await client.sendRequest(request);\n }\n finally {\n cleanup?.();\n }\n },\n };\n}\n//# sourceMappingURL=defaultHttpClient.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.createHttpHeaders = createHttpHeaders;\nconst ts_http_runtime_1 = require(\"@typespec/ts-http-runtime\");\n/**\n * Creates an object that satisfies the `HttpHeaders` interface.\n * @param rawHeaders - A simple object representing initial headers\n */\nfunction createHttpHeaders(rawHeaders) {\n return (0, ts_http_runtime_1.createHttpHeaders)(rawHeaders);\n}\n//# sourceMappingURL=httpHeaders.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.createPipelineRequest = createPipelineRequest;\nconst ts_http_runtime_1 = require(\"@typespec/ts-http-runtime\");\n/**\n * Creates a new pipeline request with the given options.\n * This method is to allow for the easy setting of default values and not required.\n * @param options - The options to create the request with.\n */\nfunction createPipelineRequest(options) {\n // Cast required due to difference between ts-http-runtime requiring AbortSignal while core-rest-pipeline allows\n // the more generic AbortSignalLike. The wrapAbortSignalLike pipeline policy will take care of ensuring that any AbortSignalLike in the request\n // is converted into a true AbortSignal.\n return (0, ts_http_runtime_1.createPipelineRequest)(options);\n}\n//# sourceMappingURL=pipelineRequest.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.exponentialRetryPolicyName = void 0;\nexports.exponentialRetryPolicy = exponentialRetryPolicy;\nconst policies_1 = require(\"@typespec/ts-http-runtime/internal/policies\");\n/**\n * The programmatic identifier of the exponentialRetryPolicy.\n */\nexports.exponentialRetryPolicyName = policies_1.exponentialRetryPolicyName;\n/**\n * A policy that attempts to retry requests while introducing an exponentially increasing delay.\n * @param options - Options that configure retry logic.\n */\nfunction exponentialRetryPolicy(options = {}) {\n return (0, policies_1.exponentialRetryPolicy)(options);\n}\n//# sourceMappingURL=exponentialRetryPolicy.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.systemErrorRetryPolicyName = void 0;\nexports.systemErrorRetryPolicy = systemErrorRetryPolicy;\nconst policies_1 = require(\"@typespec/ts-http-runtime/internal/policies\");\n/**\n * Name of the {@link systemErrorRetryPolicy}\n */\nexports.systemErrorRetryPolicyName = policies_1.systemErrorRetryPolicyName;\n/**\n * A retry policy that specifically seeks to handle errors in the\n * underlying transport layer (e.g. DNS lookup failures) rather than\n * retryable error codes from the server itself.\n * @param options - Options that customize the policy.\n */\nfunction systemErrorRetryPolicy(options = {}) {\n return (0, policies_1.systemErrorRetryPolicy)(options);\n}\n//# sourceMappingURL=systemErrorRetryPolicy.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.throttlingRetryPolicyName = void 0;\nexports.throttlingRetryPolicy = throttlingRetryPolicy;\nconst policies_1 = require(\"@typespec/ts-http-runtime/internal/policies\");\n/**\n * Name of the {@link throttlingRetryPolicy}\n */\nexports.throttlingRetryPolicyName = policies_1.throttlingRetryPolicyName;\n/**\n * A policy that retries when the server sends a 429 response with a Retry-After header.\n *\n * To learn more, please refer to\n * https://learn.microsoft.com/azure/azure-resource-manager/resource-manager-request-limits,\n * https://learn.microsoft.com/azure/azure-subscription-service-limits and\n * https://learn.microsoft.com/azure/virtual-machines/troubleshooting/troubleshooting-throttling-errors\n *\n * @param options - Options that configure retry logic.\n */\nfunction throttlingRetryPolicy(options = {}) {\n return (0, policies_1.throttlingRetryPolicy)(options);\n}\n//# sourceMappingURL=throttlingRetryPolicy.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.retryPolicy = retryPolicy;\nconst logger_1 = require(\"@azure/logger\");\nconst constants_js_1 = require(\"../constants.js\");\nconst policies_1 = require(\"@typespec/ts-http-runtime/internal/policies\");\nconst retryPolicyLogger = (0, logger_1.createClientLogger)(\"core-rest-pipeline retryPolicy\");\n/**\n * retryPolicy is a generic policy to enable retrying requests when certain conditions are met\n */\nfunction retryPolicy(strategies, options = { maxRetries: constants_js_1.DEFAULT_RETRY_POLICY_COUNT }) {\n // Cast is required since the TSP runtime retry strategy type is slightly different\n // very deep down (using real AbortSignal vs. AbortSignalLike in RestError).\n // In practice the difference doesn't actually matter.\n return (0, policies_1.retryPolicy)(strategies, {\n logger: retryPolicyLogger,\n ...options,\n });\n}\n//# sourceMappingURL=retryPolicy.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.DEFAULT_CYCLER_OPTIONS = void 0;\nexports.createTokenCycler = createTokenCycler;\nconst core_util_1 = require(\"@azure/core-util\");\n// Default options for the cycler if none are provided\nexports.DEFAULT_CYCLER_OPTIONS = {\n forcedRefreshWindowInMs: 1000, // Force waiting for a refresh 1s before the token expires\n retryIntervalInMs: 3000, // Allow refresh attempts every 3s\n refreshWindowInMs: 1000 * 60 * 2, // Start refreshing 2m before expiry\n};\n/**\n * Converts an an unreliable access token getter (which may resolve with null)\n * into an AccessTokenGetter by retrying the unreliable getter in a regular\n * interval.\n *\n * @param getAccessToken - A function that produces a promise of an access token that may fail by returning null.\n * @param retryIntervalInMs - The time (in milliseconds) to wait between retry attempts.\n * @param refreshTimeout - The timestamp after which the refresh attempt will fail, throwing an exception.\n * @returns - A promise that, if it resolves, will resolve with an access token.\n */\nasync function beginRefresh(getAccessToken, retryIntervalInMs, refreshTimeout) {\n // This wrapper handles exceptions gracefully as long as we haven't exceeded\n // the timeout.\n async function tryGetAccessToken() {\n if (Date.now() < refreshTimeout) {\n try {\n return await getAccessToken();\n }\n catch {\n return null;\n }\n }\n else {\n const finalToken = await getAccessToken();\n // Timeout is up, so throw if it's still null\n if (finalToken === null) {\n throw new Error(\"Failed to refresh access token.\");\n }\n return finalToken;\n }\n }\n let token = await tryGetAccessToken();\n while (token === null) {\n await (0, core_util_1.delay)(retryIntervalInMs);\n token = await tryGetAccessToken();\n }\n return token;\n}\n/**\n * Creates a token cycler from a credential, scopes, and optional settings.\n *\n * A token cycler represents a way to reliably retrieve a valid access token\n * from a TokenCredential. It will handle initializing the token, refreshing it\n * when it nears expiration, and synchronizes refresh attempts to avoid\n * concurrency hazards.\n *\n * @param credential - the underlying TokenCredential that provides the access\n * token\n * @param tokenCyclerOptions - optionally override default settings for the cycler\n *\n * @returns - a function that reliably produces a valid access token\n */\nfunction createTokenCycler(credential, tokenCyclerOptions) {\n let refreshWorker = null;\n let token = null;\n let tenantId;\n const options = {\n ...exports.DEFAULT_CYCLER_OPTIONS,\n ...tokenCyclerOptions,\n };\n /**\n * This little holder defines several predicates that we use to construct\n * the rules of refreshing the token.\n */\n const cycler = {\n /**\n * Produces true if a refresh job is currently in progress.\n */\n get isRefreshing() {\n return refreshWorker !== null;\n },\n /**\n * Produces true if the cycler SHOULD refresh (we are within the refresh\n * window and not already refreshing)\n */\n get shouldRefresh() {\n if (cycler.isRefreshing) {\n return false;\n }\n if (token?.refreshAfterTimestamp && token.refreshAfterTimestamp < Date.now()) {\n return true;\n }\n return (token?.expiresOnTimestamp ?? 0) - options.refreshWindowInMs < Date.now();\n },\n /**\n * Produces true if the cycler MUST refresh (null or nearly-expired\n * token).\n */\n get mustRefresh() {\n return (token === null || token.expiresOnTimestamp - options.forcedRefreshWindowInMs < Date.now());\n },\n };\n /**\n * Starts a refresh job or returns the existing job if one is already\n * running.\n */\n function refresh(scopes, getTokenOptions) {\n if (!cycler.isRefreshing) {\n // We bind `scopes` here to avoid passing it around a lot\n const tryGetAccessToken = () => credential.getToken(scopes, getTokenOptions);\n // Take advantage of promise chaining to insert an assignment to `token`\n // before the refresh can be considered done.\n refreshWorker = beginRefresh(tryGetAccessToken, options.retryIntervalInMs, \n // If we don't have a token, then we should timeout immediately\n token?.expiresOnTimestamp ?? Date.now())\n .then((_token) => {\n refreshWorker = null;\n token = _token;\n tenantId = getTokenOptions.tenantId;\n return token;\n })\n .catch((reason) => {\n // We also should reset the refresher if we enter a failed state. All\n // existing awaiters will throw, but subsequent requests will start a\n // new retry chain.\n refreshWorker = null;\n token = null;\n tenantId = undefined;\n throw reason;\n });\n }\n return refreshWorker;\n }\n return async (scopes, tokenOptions) => {\n //\n // Simple rules:\n // - If we MUST refresh, then return the refresh task, blocking\n // the pipeline until a token is available.\n // - If we SHOULD refresh, then run refresh but don't return it\n // (we can still use the cached token).\n // - Return the token, since it's fine if we didn't return in\n // step 1.\n //\n const hasClaimChallenge = Boolean(tokenOptions.claims);\n const tenantIdChanged = tenantId !== tokenOptions.tenantId;\n if (hasClaimChallenge) {\n // If we've received a claim, we know the existing token isn't valid\n // We want to clear it so that that refresh worker won't use the old expiration time as a timeout\n token = null;\n }\n // If the tenantId passed in token options is different to the one we have\n // Or if we are in claim challenge and the token was rejected and a new access token need to be issued, we need to\n // refresh the token with the new tenantId or token.\n const mustRefresh = tenantIdChanged || hasClaimChallenge || cycler.mustRefresh;\n if (mustRefresh) {\n return refresh(scopes, tokenOptions);\n }\n if (cycler.shouldRefresh) {\n refresh(scopes, tokenOptions);\n }\n return token;\n };\n}\n//# sourceMappingURL=tokenCycler.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.bearerTokenAuthenticationPolicyName = void 0;\nexports.bearerTokenAuthenticationPolicy = bearerTokenAuthenticationPolicy;\nexports.parseChallenges = parseChallenges;\nconst tokenCycler_js_1 = require(\"../util/tokenCycler.js\");\nconst log_js_1 = require(\"../log.js\");\nconst restError_js_1 = require(\"../restError.js\");\n/**\n * The programmatic identifier of the bearerTokenAuthenticationPolicy.\n */\nexports.bearerTokenAuthenticationPolicyName = \"bearerTokenAuthenticationPolicy\";\n/**\n * Try to send the given request.\n *\n * When a response is received, returns a tuple of the response received and, if the response was received\n * inside a thrown RestError, the RestError that was thrown.\n *\n * Otherwise, if an error was thrown while sending the request that did not provide an underlying response, it\n * will be rethrown.\n */\nasync function trySendRequest(request, next) {\n try {\n return [await next(request), undefined];\n }\n catch (e) {\n if ((0, restError_js_1.isRestError)(e) && e.response) {\n return [e.response, e];\n }\n else {\n throw e;\n }\n }\n}\n/**\n * Default authorize request handler\n */\nasync function defaultAuthorizeRequest(options) {\n const { scopes, getAccessToken, request } = options;\n // Enable CAE true by default\n const getTokenOptions = {\n abortSignal: request.abortSignal,\n tracingOptions: request.tracingOptions,\n enableCae: true,\n };\n const accessToken = await getAccessToken(scopes, getTokenOptions);\n if (accessToken) {\n options.request.headers.set(\"Authorization\", `Bearer ${accessToken.token}`);\n }\n}\n/**\n * We will retrieve the challenge only if the response status code was 401,\n * and if the response contained the header \"WWW-Authenticate\" with a non-empty value.\n */\nfunction isChallengeResponse(response) {\n return response.status === 401 && response.headers.has(\"WWW-Authenticate\");\n}\n/**\n * Re-authorize the request for CAE challenge.\n * The response containing the challenge is `options.response`.\n * If this method returns true, the underlying request will be sent once again.\n */\nasync function authorizeRequestOnCaeChallenge(onChallengeOptions, caeClaims) {\n const { scopes } = onChallengeOptions;\n const accessToken = await onChallengeOptions.getAccessToken(scopes, {\n enableCae: true,\n claims: caeClaims,\n });\n if (!accessToken) {\n return false;\n }\n onChallengeOptions.request.headers.set(\"Authorization\", `${accessToken.tokenType ?? \"Bearer\"} ${accessToken.token}`);\n return true;\n}\n/**\n * A policy that can request a token from a TokenCredential implementation and\n * then apply it to the Authorization header of a request as a Bearer token.\n */\nfunction bearerTokenAuthenticationPolicy(options) {\n const { credential, scopes, challengeCallbacks } = options;\n const logger = options.logger || log_js_1.logger;\n const callbacks = {\n authorizeRequest: challengeCallbacks?.authorizeRequest?.bind(challengeCallbacks) ?? defaultAuthorizeRequest,\n authorizeRequestOnChallenge: challengeCallbacks?.authorizeRequestOnChallenge?.bind(challengeCallbacks),\n };\n // This function encapsulates the entire process of reliably retrieving the token\n // The options are left out of the public API until there's demand to configure this.\n // Remember to extend `BearerTokenAuthenticationPolicyOptions` with `TokenCyclerOptions`\n // in order to pass through the `options` object.\n const getAccessToken = credential\n ? (0, tokenCycler_js_1.createTokenCycler)(credential /* , options */)\n : () => Promise.resolve(null);\n return {\n name: exports.bearerTokenAuthenticationPolicyName,\n /**\n * If there's no challenge parameter:\n * - It will try to retrieve the token using the cache, or the credential's getToken.\n * - Then it will try the next policy with or without the retrieved token.\n *\n * It uses the challenge parameters to:\n * - Skip a first attempt to get the token from the credential if there's no cached token,\n * since it expects the token to be retrievable only after the challenge.\n * - Prepare the outgoing request if the `prepareRequest` method has been provided.\n * - Send an initial request to receive the challenge if it fails.\n * - Process a challenge if the response contains it.\n * - Retrieve a token with the challenge information, then re-send the request.\n */\n async sendRequest(request, next) {\n if (!request.url.toLowerCase().startsWith(\"https://\")) {\n throw new Error(\"Bearer token authentication is not permitted for non-TLS protected (non-https) URLs.\");\n }\n await callbacks.authorizeRequest({\n scopes: Array.isArray(scopes) ? scopes : [scopes],\n request,\n getAccessToken,\n logger,\n });\n let response;\n let error;\n let shouldSendRequest;\n [response, error] = await trySendRequest(request, next);\n if (isChallengeResponse(response)) {\n let claims = getCaeChallengeClaims(response.headers.get(\"WWW-Authenticate\"));\n // Handle CAE by default when receive CAE claim\n if (claims) {\n let parsedClaim;\n // Return the response immediately if claims is not a valid base64 encoded string\n try {\n parsedClaim = atob(claims);\n }\n catch (e) {\n logger.warning(`The WWW-Authenticate header contains \"claims\" that cannot be parsed. Unable to perform the Continuous Access Evaluation authentication flow. Unparsable claims: ${claims}`);\n return response;\n }\n shouldSendRequest = await authorizeRequestOnCaeChallenge({\n scopes: Array.isArray(scopes) ? scopes : [scopes],\n response,\n request,\n getAccessToken,\n logger,\n }, parsedClaim);\n // Send updated request and handle response for RestError\n if (shouldSendRequest) {\n [response, error] = await trySendRequest(request, next);\n }\n }\n else if (callbacks.authorizeRequestOnChallenge) {\n // Handle custom challenges when client provides custom callback\n shouldSendRequest = await callbacks.authorizeRequestOnChallenge({\n scopes: Array.isArray(scopes) ? scopes : [scopes],\n request,\n response,\n getAccessToken,\n logger,\n });\n // Send updated request and handle response for RestError\n if (shouldSendRequest) {\n [response, error] = await trySendRequest(request, next);\n }\n // If we get another CAE Claim, we will handle it by default and return whatever value we receive for this\n if (isChallengeResponse(response)) {\n claims = getCaeChallengeClaims(response.headers.get(\"WWW-Authenticate\"));\n if (claims) {\n let parsedClaim;\n try {\n parsedClaim = atob(claims);\n }\n catch (e) {\n logger.warning(`The WWW-Authenticate header contains \"claims\" that cannot be parsed. Unable to perform the Continuous Access Evaluation authentication flow. Unparsable claims: ${claims}`);\n return response;\n }\n shouldSendRequest = await authorizeRequestOnCaeChallenge({\n scopes: Array.isArray(scopes) ? scopes : [scopes],\n response,\n request,\n getAccessToken,\n logger,\n }, parsedClaim);\n // Send updated request and handle response for RestError\n if (shouldSendRequest) {\n [response, error] = await trySendRequest(request, next);\n }\n }\n }\n }\n }\n if (error) {\n throw error;\n }\n else {\n return response;\n }\n },\n };\n}\n/**\n * Converts: `Bearer a=\"b\", c=\"d\", Pop e=\"f\", g=\"h\"`.\n * Into: `[ { scheme: 'Bearer', params: { a: 'b', c: 'd' } }, { scheme: 'Pop', params: { e: 'f', g: 'h' } } ]`.\n *\n * @internal\n */\nfunction parseChallenges(challenges) {\n // Challenge regex seperates the string to individual challenges with different schemes in the format `Scheme a=\"b\", c=d`\n // The challenge regex captures parameteres with either quotes values or unquoted values\n const challengeRegex = /(\\w+)\\s+((?:\\w+=(?:\"[^\"]*\"|[^,]*),?\\s*)+)/g;\n // Parameter regex captures the claims group removed from the scheme in the format `a=\"b\"` and `c=\"d\"`\n // CAE challenge always have quoted parameters. For more reference, https://learn.microsoft.com/entra/identity-platform/claims-challenge\n const paramRegex = /(\\w+)=\"([^\"]*)\"/g;\n const parsedChallenges = [];\n let match;\n // Iterate over each challenge match\n while ((match = challengeRegex.exec(challenges)) !== null) {\n const scheme = match[1];\n const paramsString = match[2];\n const params = {};\n let paramMatch;\n // Iterate over each parameter match\n while ((paramMatch = paramRegex.exec(paramsString)) !== null) {\n params[paramMatch[1]] = paramMatch[2];\n }\n parsedChallenges.push({ scheme, params });\n }\n return parsedChallenges;\n}\n/**\n * Parse a pipeline response and look for a CAE challenge with \"Bearer\" scheme\n * Return the value in the header without parsing the challenge\n * @internal\n */\nfunction getCaeChallengeClaims(challenges) {\n if (!challenges) {\n return;\n }\n // Find all challenges present in the header\n const parsedChallenges = parseChallenges(challenges);\n return parsedChallenges.find((x) => x.scheme === \"Bearer\" && x.params.claims && x.params.error === \"insufficient_claims\")?.params.claims;\n}\n//# sourceMappingURL=bearerTokenAuthenticationPolicy.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ndJsonPolicyName = void 0;\nexports.ndJsonPolicy = ndJsonPolicy;\n/**\n * The programmatic identifier of the ndJsonPolicy.\n */\nexports.ndJsonPolicyName = \"ndJsonPolicy\";\n/**\n * ndJsonPolicy is a policy used to control keep alive settings for every request.\n */\nfunction ndJsonPolicy() {\n return {\n name: exports.ndJsonPolicyName,\n async sendRequest(request, next) {\n // There currently isn't a good way to bypass the serializer\n if (typeof request.body === \"string\" && request.body.startsWith(\"[\")) {\n const body = JSON.parse(request.body);\n if (Array.isArray(body)) {\n request.body = body.map((item) => JSON.stringify(item) + \"\\n\").join(\"\");\n }\n }\n return next(request);\n },\n };\n}\n//# sourceMappingURL=ndJsonPolicy.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.auxiliaryAuthenticationHeaderPolicyName = void 0;\nexports.auxiliaryAuthenticationHeaderPolicy = auxiliaryAuthenticationHeaderPolicy;\nconst tokenCycler_js_1 = require(\"../util/tokenCycler.js\");\nconst log_js_1 = require(\"../log.js\");\n/**\n * The programmatic identifier of the auxiliaryAuthenticationHeaderPolicy.\n */\nexports.auxiliaryAuthenticationHeaderPolicyName = \"auxiliaryAuthenticationHeaderPolicy\";\nconst AUTHORIZATION_AUXILIARY_HEADER = \"x-ms-authorization-auxiliary\";\nasync function sendAuthorizeRequest(options) {\n const { scopes, getAccessToken, request } = options;\n const getTokenOptions = {\n abortSignal: request.abortSignal,\n tracingOptions: request.tracingOptions,\n };\n return (await getAccessToken(scopes, getTokenOptions))?.token ?? \"\";\n}\n/**\n * A policy for external tokens to `x-ms-authorization-auxiliary` header.\n * This header will be used when creating a cross-tenant application we may need to handle authentication requests\n * for resources that are in different tenants.\n * You could see [ARM docs](https://learn.microsoft.com/azure/azure-resource-manager/management/authenticate-multi-tenant) for a rundown of how this feature works\n */\nfunction auxiliaryAuthenticationHeaderPolicy(options) {\n const { credentials, scopes } = options;\n const logger = options.logger || log_js_1.logger;\n const tokenCyclerMap = new WeakMap();\n return {\n name: exports.auxiliaryAuthenticationHeaderPolicyName,\n async sendRequest(request, next) {\n if (!request.url.toLowerCase().startsWith(\"https://\")) {\n throw new Error(\"Bearer token authentication for auxiliary header is not permitted for non-TLS protected (non-https) URLs.\");\n }\n if (!credentials || credentials.length === 0) {\n logger.info(`${exports.auxiliaryAuthenticationHeaderPolicyName} header will not be set due to empty credentials.`);\n return next(request);\n }\n const tokenPromises = [];\n for (const credential of credentials) {\n let getAccessToken = tokenCyclerMap.get(credential);\n if (!getAccessToken) {\n getAccessToken = (0, tokenCycler_js_1.createTokenCycler)(credential);\n tokenCyclerMap.set(credential, getAccessToken);\n }\n tokenPromises.push(sendAuthorizeRequest({\n scopes: Array.isArray(scopes) ? scopes : [scopes],\n request,\n getAccessToken,\n logger,\n }));\n }\n const auxiliaryTokens = (await Promise.all(tokenPromises)).filter((token) => Boolean(token));\n if (auxiliaryTokens.length === 0) {\n logger.warning(`None of the auxiliary tokens are valid. ${AUTHORIZATION_AUXILIARY_HEADER} header will not be set.`);\n return next(request);\n }\n request.headers.set(AUTHORIZATION_AUXILIARY_HEADER, auxiliaryTokens.map((token) => `Bearer ${token}`).join(\", \"));\n return next(request);\n },\n };\n}\n//# sourceMappingURL=auxiliaryAuthenticationHeaderPolicy.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.createFileFromStream = exports.createFile = exports.agentPolicyName = exports.agentPolicy = exports.auxiliaryAuthenticationHeaderPolicyName = exports.auxiliaryAuthenticationHeaderPolicy = exports.ndJsonPolicyName = exports.ndJsonPolicy = exports.bearerTokenAuthenticationPolicyName = exports.bearerTokenAuthenticationPolicy = exports.formDataPolicyName = exports.formDataPolicy = exports.tlsPolicyName = exports.tlsPolicy = exports.userAgentPolicyName = exports.userAgentPolicy = exports.defaultRetryPolicy = exports.tracingPolicyName = exports.tracingPolicy = exports.retryPolicy = exports.throttlingRetryPolicyName = exports.throttlingRetryPolicy = exports.systemErrorRetryPolicyName = exports.systemErrorRetryPolicy = exports.redirectPolicyName = exports.redirectPolicy = exports.getDefaultProxySettings = exports.proxyPolicyName = exports.proxyPolicy = exports.multipartPolicyName = exports.multipartPolicy = exports.logPolicyName = exports.logPolicy = exports.setClientRequestIdPolicyName = exports.setClientRequestIdPolicy = exports.exponentialRetryPolicyName = exports.exponentialRetryPolicy = exports.decompressResponsePolicyName = exports.decompressResponsePolicy = exports.isRestError = exports.RestError = exports.createPipelineRequest = exports.createHttpHeaders = exports.createDefaultHttpClient = exports.createPipelineFromOptions = exports.createEmptyPipeline = void 0;\nvar pipeline_js_1 = require(\"./pipeline.js\");\nObject.defineProperty(exports, \"createEmptyPipeline\", { enumerable: true, get: function () { return pipeline_js_1.createEmptyPipeline; } });\nvar createPipelineFromOptions_js_1 = require(\"./createPipelineFromOptions.js\");\nObject.defineProperty(exports, \"createPipelineFromOptions\", { enumerable: true, get: function () { return createPipelineFromOptions_js_1.createPipelineFromOptions; } });\nvar defaultHttpClient_js_1 = require(\"./defaultHttpClient.js\");\nObject.defineProperty(exports, \"createDefaultHttpClient\", { enumerable: true, get: function () { return defaultHttpClient_js_1.createDefaultHttpClient; } });\nvar httpHeaders_js_1 = require(\"./httpHeaders.js\");\nObject.defineProperty(exports, \"createHttpHeaders\", { enumerable: true, get: function () { return httpHeaders_js_1.createHttpHeaders; } });\nvar pipelineRequest_js_1 = require(\"./pipelineRequest.js\");\nObject.defineProperty(exports, \"createPipelineRequest\", { enumerable: true, get: function () { return pipelineRequest_js_1.createPipelineRequest; } });\nvar restError_js_1 = require(\"./restError.js\");\nObject.defineProperty(exports, \"RestError\", { enumerable: true, get: function () { return restError_js_1.RestError; } });\nObject.defineProperty(exports, \"isRestError\", { enumerable: true, get: function () { return restError_js_1.isRestError; } });\nvar decompressResponsePolicy_js_1 = require(\"./policies/decompressResponsePolicy.js\");\nObject.defineProperty(exports, \"decompressResponsePolicy\", { enumerable: true, get: function () { return decompressResponsePolicy_js_1.decompressResponsePolicy; } });\nObject.defineProperty(exports, \"decompressResponsePolicyName\", { enumerable: true, get: function () { return decompressResponsePolicy_js_1.decompressResponsePolicyName; } });\nvar exponentialRetryPolicy_js_1 = require(\"./policies/exponentialRetryPolicy.js\");\nObject.defineProperty(exports, \"exponentialRetryPolicy\", { enumerable: true, get: function () { return exponentialRetryPolicy_js_1.exponentialRetryPolicy; } });\nObject.defineProperty(exports, \"exponentialRetryPolicyName\", { enumerable: true, get: function () { return exponentialRetryPolicy_js_1.exponentialRetryPolicyName; } });\nvar setClientRequestIdPolicy_js_1 = require(\"./policies/setClientRequestIdPolicy.js\");\nObject.defineProperty(exports, \"setClientRequestIdPolicy\", { enumerable: true, get: function () { return setClientRequestIdPolicy_js_1.setClientRequestIdPolicy; } });\nObject.defineProperty(exports, \"setClientRequestIdPolicyName\", { enumerable: true, get: function () { return setClientRequestIdPolicy_js_1.setClientRequestIdPolicyName; } });\nvar logPolicy_js_1 = require(\"./policies/logPolicy.js\");\nObject.defineProperty(exports, \"logPolicy\", { enumerable: true, get: function () { return logPolicy_js_1.logPolicy; } });\nObject.defineProperty(exports, \"logPolicyName\", { enumerable: true, get: function () { return logPolicy_js_1.logPolicyName; } });\nvar multipartPolicy_js_1 = require(\"./policies/multipartPolicy.js\");\nObject.defineProperty(exports, \"multipartPolicy\", { enumerable: true, get: function () { return multipartPolicy_js_1.multipartPolicy; } });\nObject.defineProperty(exports, \"multipartPolicyName\", { enumerable: true, get: function () { return multipartPolicy_js_1.multipartPolicyName; } });\nvar proxyPolicy_js_1 = require(\"./policies/proxyPolicy.js\");\nObject.defineProperty(exports, \"proxyPolicy\", { enumerable: true, get: function () { return proxyPolicy_js_1.proxyPolicy; } });\nObject.defineProperty(exports, \"proxyPolicyName\", { enumerable: true, get: function () { return proxyPolicy_js_1.proxyPolicyName; } });\nObject.defineProperty(exports, \"getDefaultProxySettings\", { enumerable: true, get: function () { return proxyPolicy_js_1.getDefaultProxySettings; } });\nvar redirectPolicy_js_1 = require(\"./policies/redirectPolicy.js\");\nObject.defineProperty(exports, \"redirectPolicy\", { enumerable: true, get: function () { return redirectPolicy_js_1.redirectPolicy; } });\nObject.defineProperty(exports, \"redirectPolicyName\", { enumerable: true, get: function () { return redirectPolicy_js_1.redirectPolicyName; } });\nvar systemErrorRetryPolicy_js_1 = require(\"./policies/systemErrorRetryPolicy.js\");\nObject.defineProperty(exports, \"systemErrorRetryPolicy\", { enumerable: true, get: function () { return systemErrorRetryPolicy_js_1.systemErrorRetryPolicy; } });\nObject.defineProperty(exports, \"systemErrorRetryPolicyName\", { enumerable: true, get: function () { return systemErrorRetryPolicy_js_1.systemErrorRetryPolicyName; } });\nvar throttlingRetryPolicy_js_1 = require(\"./policies/throttlingRetryPolicy.js\");\nObject.defineProperty(exports, \"throttlingRetryPolicy\", { enumerable: true, get: function () { return throttlingRetryPolicy_js_1.throttlingRetryPolicy; } });\nObject.defineProperty(exports, \"throttlingRetryPolicyName\", { enumerable: true, get: function () { return throttlingRetryPolicy_js_1.throttlingRetryPolicyName; } });\nvar retryPolicy_js_1 = require(\"./policies/retryPolicy.js\");\nObject.defineProperty(exports, \"retryPolicy\", { enumerable: true, get: function () { return retryPolicy_js_1.retryPolicy; } });\nvar tracingPolicy_js_1 = require(\"./policies/tracingPolicy.js\");\nObject.defineProperty(exports, \"tracingPolicy\", { enumerable: true, get: function () { return tracingPolicy_js_1.tracingPolicy; } });\nObject.defineProperty(exports, \"tracingPolicyName\", { enumerable: true, get: function () { return tracingPolicy_js_1.tracingPolicyName; } });\nvar defaultRetryPolicy_js_1 = require(\"./policies/defaultRetryPolicy.js\");\nObject.defineProperty(exports, \"defaultRetryPolicy\", { enumerable: true, get: function () { return defaultRetryPolicy_js_1.defaultRetryPolicy; } });\nvar userAgentPolicy_js_1 = require(\"./policies/userAgentPolicy.js\");\nObject.defineProperty(exports, \"userAgentPolicy\", { enumerable: true, get: function () { return userAgentPolicy_js_1.userAgentPolicy; } });\nObject.defineProperty(exports, \"userAgentPolicyName\", { enumerable: true, get: function () { return userAgentPolicy_js_1.userAgentPolicyName; } });\nvar tlsPolicy_js_1 = require(\"./policies/tlsPolicy.js\");\nObject.defineProperty(exports, \"tlsPolicy\", { enumerable: true, get: function () { return tlsPolicy_js_1.tlsPolicy; } });\nObject.defineProperty(exports, \"tlsPolicyName\", { enumerable: true, get: function () { return tlsPolicy_js_1.tlsPolicyName; } });\nvar formDataPolicy_js_1 = require(\"./policies/formDataPolicy.js\");\nObject.defineProperty(exports, \"formDataPolicy\", { enumerable: true, get: function () { return formDataPolicy_js_1.formDataPolicy; } });\nObject.defineProperty(exports, \"formDataPolicyName\", { enumerable: true, get: function () { return formDataPolicy_js_1.formDataPolicyName; } });\nvar bearerTokenAuthenticationPolicy_js_1 = require(\"./policies/bearerTokenAuthenticationPolicy.js\");\nObject.defineProperty(exports, \"bearerTokenAuthenticationPolicy\", { enumerable: true, get: function () { return bearerTokenAuthenticationPolicy_js_1.bearerTokenAuthenticationPolicy; } });\nObject.defineProperty(exports, \"bearerTokenAuthenticationPolicyName\", { enumerable: true, get: function () { return bearerTokenAuthenticationPolicy_js_1.bearerTokenAuthenticationPolicyName; } });\nvar ndJsonPolicy_js_1 = require(\"./policies/ndJsonPolicy.js\");\nObject.defineProperty(exports, \"ndJsonPolicy\", { enumerable: true, get: function () { return ndJsonPolicy_js_1.ndJsonPolicy; } });\nObject.defineProperty(exports, \"ndJsonPolicyName\", { enumerable: true, get: function () { return ndJsonPolicy_js_1.ndJsonPolicyName; } });\nvar auxiliaryAuthenticationHeaderPolicy_js_1 = require(\"./policies/auxiliaryAuthenticationHeaderPolicy.js\");\nObject.defineProperty(exports, \"auxiliaryAuthenticationHeaderPolicy\", { enumerable: true, get: function () { return auxiliaryAuthenticationHeaderPolicy_js_1.auxiliaryAuthenticationHeaderPolicy; } });\nObject.defineProperty(exports, \"auxiliaryAuthenticationHeaderPolicyName\", { enumerable: true, get: function () { return auxiliaryAuthenticationHeaderPolicy_js_1.auxiliaryAuthenticationHeaderPolicyName; } });\nvar agentPolicy_js_1 = require(\"./policies/agentPolicy.js\");\nObject.defineProperty(exports, \"agentPolicy\", { enumerable: true, get: function () { return agentPolicy_js_1.agentPolicy; } });\nObject.defineProperty(exports, \"agentPolicyName\", { enumerable: true, get: function () { return agentPolicy_js_1.agentPolicyName; } });\nvar file_js_1 = require(\"./util/file.js\");\nObject.defineProperty(exports, \"createFile\", { enumerable: true, get: function () { return file_js_1.createFile; } });\nObject.defineProperty(exports, \"createFileFromStream\", { enumerable: true, get: function () { return file_js_1.createFileFromStream; } });\n//# sourceMappingURL=index.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.state = void 0;\n/**\n * Holds the singleton operationRequestMap, to be shared across CJS and ESM imports.\n */\nexports.state = {\n operationRequestMap: new WeakMap(),\n};\n//# sourceMappingURL=state-cjs.cjs.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getOperationArgumentValueFromParameter = getOperationArgumentValueFromParameter;\nexports.getOperationRequestInfo = getOperationRequestInfo;\nconst state_js_1 = require(\"./state.js\");\n/**\n * @internal\n * Retrieves the value to use for a given operation argument\n * @param operationArguments - The arguments passed from the generated client\n * @param parameter - The parameter description\n * @param fallbackObject - If something isn't found in the arguments bag, look here.\n * Generally used to look at the service client properties.\n */\nfunction getOperationArgumentValueFromParameter(operationArguments, parameter, fallbackObject) {\n let parameterPath = parameter.parameterPath;\n const parameterMapper = parameter.mapper;\n let value;\n if (typeof parameterPath === \"string\") {\n parameterPath = [parameterPath];\n }\n if (Array.isArray(parameterPath)) {\n if (parameterPath.length > 0) {\n if (parameterMapper.isConstant) {\n value = parameterMapper.defaultValue;\n }\n else {\n let propertySearchResult = getPropertyFromParameterPath(operationArguments, parameterPath);\n if (!propertySearchResult.propertyFound && fallbackObject) {\n propertySearchResult = getPropertyFromParameterPath(fallbackObject, parameterPath);\n }\n let useDefaultValue = false;\n if (!propertySearchResult.propertyFound) {\n useDefaultValue =\n parameterMapper.required ||\n (parameterPath[0] === \"options\" && parameterPath.length === 2);\n }\n value = useDefaultValue ? parameterMapper.defaultValue : propertySearchResult.propertyValue;\n }\n }\n }\n else {\n if (parameterMapper.required) {\n value = {};\n }\n for (const propertyName in parameterPath) {\n const propertyMapper = parameterMapper.type.modelProperties[propertyName];\n const propertyPath = parameterPath[propertyName];\n const propertyValue = getOperationArgumentValueFromParameter(operationArguments, {\n parameterPath: propertyPath,\n mapper: propertyMapper,\n }, fallbackObject);\n if (propertyValue !== undefined) {\n if (!value) {\n value = {};\n }\n value[propertyName] = propertyValue;\n }\n }\n }\n return value;\n}\nfunction getPropertyFromParameterPath(parent, parameterPath) {\n const result = { propertyFound: false };\n let i = 0;\n for (; i < parameterPath.length; ++i) {\n const parameterPathPart = parameterPath[i];\n // Make sure to check inherited properties too, so don't use hasOwnProperty().\n if (parent && parameterPathPart in parent) {\n parent = parent[parameterPathPart];\n }\n else {\n break;\n }\n }\n if (i === parameterPath.length) {\n result.propertyValue = parent;\n result.propertyFound = true;\n }\n return result;\n}\nconst originalRequestSymbol = Symbol.for(\"@azure/core-client original request\");\nfunction hasOriginalRequest(request) {\n return originalRequestSymbol in request;\n}\nfunction getOperationRequestInfo(request) {\n if (hasOriginalRequest(request)) {\n return getOperationRequestInfo(request[originalRequestSymbol]);\n }\n let info = state_js_1.state.operationRequestMap.get(request);\n if (!info) {\n info = {};\n state_js_1.state.operationRequestMap.set(request, info);\n }\n return info;\n}\n//# sourceMappingURL=operationHelpers.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.deserializationPolicyName = void 0;\nexports.deserializationPolicy = deserializationPolicy;\nconst interfaces_js_1 = require(\"./interfaces.js\");\nconst core_rest_pipeline_1 = require(\"@azure/core-rest-pipeline\");\nconst serializer_js_1 = require(\"./serializer.js\");\nconst operationHelpers_js_1 = require(\"./operationHelpers.js\");\nconst defaultJsonContentTypes = [\"application/json\", \"text/json\"];\nconst defaultXmlContentTypes = [\"application/xml\", \"application/atom+xml\"];\n/**\n * The programmatic identifier of the deserializationPolicy.\n */\nexports.deserializationPolicyName = \"deserializationPolicy\";\n/**\n * This policy handles parsing out responses according to OperationSpecs on the request.\n */\nfunction deserializationPolicy(options = {}) {\n const jsonContentTypes = options.expectedContentTypes?.json ?? defaultJsonContentTypes;\n const xmlContentTypes = options.expectedContentTypes?.xml ?? defaultXmlContentTypes;\n const parseXML = options.parseXML;\n const serializerOptions = options.serializerOptions;\n const updatedOptions = {\n xml: {\n rootName: serializerOptions?.xml.rootName ?? \"\",\n includeRoot: serializerOptions?.xml.includeRoot ?? false,\n xmlCharKey: serializerOptions?.xml.xmlCharKey ?? interfaces_js_1.XML_CHARKEY,\n },\n };\n return {\n name: exports.deserializationPolicyName,\n async sendRequest(request, next) {\n const response = await next(request);\n return deserializeResponseBody(jsonContentTypes, xmlContentTypes, response, updatedOptions, parseXML);\n },\n };\n}\nfunction getOperationResponseMap(parsedResponse) {\n let result;\n const request = parsedResponse.request;\n const operationInfo = (0, operationHelpers_js_1.getOperationRequestInfo)(request);\n const operationSpec = operationInfo?.operationSpec;\n if (operationSpec) {\n if (!operationInfo?.operationResponseGetter) {\n result = operationSpec.responses[parsedResponse.status];\n }\n else {\n result = operationInfo?.operationResponseGetter(operationSpec, parsedResponse);\n }\n }\n return result;\n}\nfunction shouldDeserializeResponse(parsedResponse) {\n const request = parsedResponse.request;\n const operationInfo = (0, operationHelpers_js_1.getOperationRequestInfo)(request);\n const shouldDeserialize = operationInfo?.shouldDeserialize;\n let result;\n if (shouldDeserialize === undefined) {\n result = true;\n }\n else if (typeof shouldDeserialize === \"boolean\") {\n result = shouldDeserialize;\n }\n else {\n result = shouldDeserialize(parsedResponse);\n }\n return result;\n}\nasync function deserializeResponseBody(jsonContentTypes, xmlContentTypes, response, options, parseXML) {\n const parsedResponse = await parse(jsonContentTypes, xmlContentTypes, response, options, parseXML);\n if (!shouldDeserializeResponse(parsedResponse)) {\n return parsedResponse;\n }\n const operationInfo = (0, operationHelpers_js_1.getOperationRequestInfo)(parsedResponse.request);\n const operationSpec = operationInfo?.operationSpec;\n if (!operationSpec || !operationSpec.responses) {\n return parsedResponse;\n }\n const responseSpec = getOperationResponseMap(parsedResponse);\n const { error, shouldReturnResponse } = handleErrorResponse(parsedResponse, operationSpec, responseSpec, options);\n if (error) {\n throw error;\n }\n else if (shouldReturnResponse) {\n return parsedResponse;\n }\n // An operation response spec does exist for current status code, so\n // use it to deserialize the response.\n if (responseSpec) {\n if (responseSpec.bodyMapper) {\n let valueToDeserialize = parsedResponse.parsedBody;\n if (operationSpec.isXML && responseSpec.bodyMapper.type.name === serializer_js_1.MapperTypeNames.Sequence) {\n valueToDeserialize =\n typeof valueToDeserialize === \"object\"\n ? valueToDeserialize[responseSpec.bodyMapper.xmlElementName]\n : [];\n }\n try {\n parsedResponse.parsedBody = operationSpec.serializer.deserialize(responseSpec.bodyMapper, valueToDeserialize, \"operationRes.parsedBody\", options);\n }\n catch (deserializeError) {\n const restError = new core_rest_pipeline_1.RestError(`Error ${deserializeError} occurred in deserializing the responseBody - ${parsedResponse.bodyAsText}`, {\n statusCode: parsedResponse.status,\n request: parsedResponse.request,\n response: parsedResponse,\n });\n throw restError;\n }\n }\n else if (operationSpec.httpMethod === \"HEAD\") {\n // head methods never have a body, but we return a boolean to indicate presence/absence of the resource\n parsedResponse.parsedBody = response.status >= 200 && response.status < 300;\n }\n if (responseSpec.headersMapper) {\n parsedResponse.parsedHeaders = operationSpec.serializer.deserialize(responseSpec.headersMapper, parsedResponse.headers.toJSON(), \"operationRes.parsedHeaders\", { xml: {}, ignoreUnknownProperties: true });\n }\n }\n return parsedResponse;\n}\nfunction isOperationSpecEmpty(operationSpec) {\n const expectedStatusCodes = Object.keys(operationSpec.responses);\n return (expectedStatusCodes.length === 0 ||\n (expectedStatusCodes.length === 1 && expectedStatusCodes[0] === \"default\"));\n}\nfunction handleErrorResponse(parsedResponse, operationSpec, responseSpec, options) {\n const isSuccessByStatus = 200 <= parsedResponse.status && parsedResponse.status < 300;\n const isExpectedStatusCode = isOperationSpecEmpty(operationSpec)\n ? isSuccessByStatus\n : !!responseSpec;\n if (isExpectedStatusCode) {\n if (responseSpec) {\n if (!responseSpec.isError) {\n return { error: null, shouldReturnResponse: false };\n }\n }\n else {\n return { error: null, shouldReturnResponse: false };\n }\n }\n const errorResponseSpec = responseSpec ?? operationSpec.responses.default;\n const initialErrorMessage = parsedResponse.request.streamResponseStatusCodes?.has(parsedResponse.status)\n ? `Unexpected status code: ${parsedResponse.status}`\n : parsedResponse.bodyAsText;\n const error = new core_rest_pipeline_1.RestError(initialErrorMessage, {\n statusCode: parsedResponse.status,\n request: parsedResponse.request,\n response: parsedResponse,\n });\n // If the item failed but there's no error spec or default spec to deserialize the error,\n // and the parsed body doesn't look like an error object,\n // we should fail so we just throw the parsed response\n if (!errorResponseSpec &&\n !(parsedResponse.parsedBody?.error?.code && parsedResponse.parsedBody?.error?.message)) {\n throw error;\n }\n const defaultBodyMapper = errorResponseSpec?.bodyMapper;\n const defaultHeadersMapper = errorResponseSpec?.headersMapper;\n try {\n // If error response has a body, try to deserialize it using default body mapper.\n // Then try to extract error code & message from it\n if (parsedResponse.parsedBody) {\n const parsedBody = parsedResponse.parsedBody;\n let deserializedError;\n if (defaultBodyMapper) {\n let valueToDeserialize = parsedBody;\n if (operationSpec.isXML && defaultBodyMapper.type.name === serializer_js_1.MapperTypeNames.Sequence) {\n valueToDeserialize = [];\n const elementName = defaultBodyMapper.xmlElementName;\n if (typeof parsedBody === \"object\" && elementName) {\n valueToDeserialize = parsedBody[elementName];\n }\n }\n deserializedError = operationSpec.serializer.deserialize(defaultBodyMapper, valueToDeserialize, \"error.response.parsedBody\", options);\n }\n const internalError = parsedBody.error || deserializedError || parsedBody;\n error.code = internalError.code;\n if (internalError.message) {\n error.message = internalError.message;\n }\n if (defaultBodyMapper) {\n error.response.parsedBody = deserializedError;\n }\n }\n // If error response has headers, try to deserialize it using default header mapper\n if (parsedResponse.headers && defaultHeadersMapper) {\n error.response.parsedHeaders =\n operationSpec.serializer.deserialize(defaultHeadersMapper, parsedResponse.headers.toJSON(), \"operationRes.parsedHeaders\");\n }\n }\n catch (defaultError) {\n error.message = `Error \"${defaultError.message}\" occurred in deserializing the responseBody - \"${parsedResponse.bodyAsText}\" for the default response.`;\n }\n return { error, shouldReturnResponse: false };\n}\nasync function parse(jsonContentTypes, xmlContentTypes, operationResponse, opts, parseXML) {\n if (!operationResponse.request.streamResponseStatusCodes?.has(operationResponse.status) &&\n operationResponse.bodyAsText) {\n const text = operationResponse.bodyAsText;\n const contentType = operationResponse.headers.get(\"Content-Type\") || \"\";\n const contentComponents = !contentType\n ? []\n : contentType.split(\";\").map((component) => component.toLowerCase());\n try {\n if (contentComponents.length === 0 ||\n contentComponents.some((component) => jsonContentTypes.indexOf(component) !== -1)) {\n operationResponse.parsedBody = JSON.parse(text);\n return operationResponse;\n }\n else if (contentComponents.some((component) => xmlContentTypes.indexOf(component) !== -1)) {\n if (!parseXML) {\n throw new Error(\"Parsing XML not supported.\");\n }\n const body = await parseXML(text, opts.xml);\n operationResponse.parsedBody = body;\n return operationResponse;\n }\n }\n catch (err) {\n const msg = `Error \"${err}\" occurred while parsing the response body - ${operationResponse.bodyAsText}.`;\n const errCode = err.code || core_rest_pipeline_1.RestError.PARSE_ERROR;\n const e = new core_rest_pipeline_1.RestError(msg, {\n code: errCode,\n statusCode: operationResponse.status,\n request: operationResponse.request,\n response: operationResponse,\n });\n throw e;\n }\n }\n return operationResponse;\n}\n//# sourceMappingURL=deserializationPolicy.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getStreamingResponseStatusCodes = getStreamingResponseStatusCodes;\nexports.getPathStringFromParameter = getPathStringFromParameter;\nconst serializer_js_1 = require(\"./serializer.js\");\n/**\n * Gets the list of status codes for streaming responses.\n * @internal\n */\nfunction getStreamingResponseStatusCodes(operationSpec) {\n const result = new Set();\n for (const statusCode in operationSpec.responses) {\n const operationResponse = operationSpec.responses[statusCode];\n if (operationResponse.bodyMapper &&\n operationResponse.bodyMapper.type.name === serializer_js_1.MapperTypeNames.Stream) {\n result.add(Number(statusCode));\n }\n }\n return result;\n}\n/**\n * Get the path to this parameter's value as a dotted string (a.b.c).\n * @param parameter - The parameter to get the path string for.\n * @returns The path to this parameter's value as a dotted string.\n * @internal\n */\nfunction getPathStringFromParameter(parameter) {\n const { parameterPath, mapper } = parameter;\n let result;\n if (typeof parameterPath === \"string\") {\n result = parameterPath;\n }\n else if (Array.isArray(parameterPath)) {\n result = parameterPath.join(\".\");\n }\n else {\n result = mapper.serializedName;\n }\n return result;\n}\n//# sourceMappingURL=interfaceHelpers.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.serializationPolicyName = void 0;\nexports.serializationPolicy = serializationPolicy;\nexports.serializeHeaders = serializeHeaders;\nexports.serializeRequestBody = serializeRequestBody;\nconst interfaces_js_1 = require(\"./interfaces.js\");\nconst operationHelpers_js_1 = require(\"./operationHelpers.js\");\nconst serializer_js_1 = require(\"./serializer.js\");\nconst interfaceHelpers_js_1 = require(\"./interfaceHelpers.js\");\n/**\n * The programmatic identifier of the serializationPolicy.\n */\nexports.serializationPolicyName = \"serializationPolicy\";\n/**\n * This policy handles assembling the request body and headers using\n * an OperationSpec and OperationArguments on the request.\n */\nfunction serializationPolicy(options = {}) {\n const stringifyXML = options.stringifyXML;\n return {\n name: exports.serializationPolicyName,\n async sendRequest(request, next) {\n const operationInfo = (0, operationHelpers_js_1.getOperationRequestInfo)(request);\n const operationSpec = operationInfo?.operationSpec;\n const operationArguments = operationInfo?.operationArguments;\n if (operationSpec && operationArguments) {\n serializeHeaders(request, operationArguments, operationSpec);\n serializeRequestBody(request, operationArguments, operationSpec, stringifyXML);\n }\n return next(request);\n },\n };\n}\n/**\n * @internal\n */\nfunction serializeHeaders(request, operationArguments, operationSpec) {\n if (operationSpec.headerParameters) {\n for (const headerParameter of operationSpec.headerParameters) {\n let headerValue = (0, operationHelpers_js_1.getOperationArgumentValueFromParameter)(operationArguments, headerParameter);\n if ((headerValue !== null && headerValue !== undefined) || headerParameter.mapper.required) {\n headerValue = operationSpec.serializer.serialize(headerParameter.mapper, headerValue, (0, interfaceHelpers_js_1.getPathStringFromParameter)(headerParameter));\n const headerCollectionPrefix = headerParameter.mapper\n .headerCollectionPrefix;\n if (headerCollectionPrefix) {\n for (const key of Object.keys(headerValue)) {\n request.headers.set(headerCollectionPrefix + key, headerValue[key]);\n }\n }\n else {\n request.headers.set(headerParameter.mapper.serializedName || (0, interfaceHelpers_js_1.getPathStringFromParameter)(headerParameter), headerValue);\n }\n }\n }\n }\n const customHeaders = operationArguments.options?.requestOptions?.customHeaders;\n if (customHeaders) {\n for (const customHeaderName of Object.keys(customHeaders)) {\n request.headers.set(customHeaderName, customHeaders[customHeaderName]);\n }\n }\n}\n/**\n * @internal\n */\nfunction serializeRequestBody(request, operationArguments, operationSpec, stringifyXML = function () {\n throw new Error(\"XML serialization unsupported!\");\n}) {\n const serializerOptions = operationArguments.options?.serializerOptions;\n const updatedOptions = {\n xml: {\n rootName: serializerOptions?.xml.rootName ?? \"\",\n includeRoot: serializerOptions?.xml.includeRoot ?? false,\n xmlCharKey: serializerOptions?.xml.xmlCharKey ?? interfaces_js_1.XML_CHARKEY,\n },\n };\n const xmlCharKey = updatedOptions.xml.xmlCharKey;\n if (operationSpec.requestBody && operationSpec.requestBody.mapper) {\n request.body = (0, operationHelpers_js_1.getOperationArgumentValueFromParameter)(operationArguments, operationSpec.requestBody);\n const bodyMapper = operationSpec.requestBody.mapper;\n const { required, serializedName, xmlName, xmlElementName, xmlNamespace, xmlNamespacePrefix, nullable, } = bodyMapper;\n const typeName = bodyMapper.type.name;\n try {\n if ((request.body !== undefined && request.body !== null) ||\n (nullable && request.body === null) ||\n required) {\n const requestBodyParameterPathString = (0, interfaceHelpers_js_1.getPathStringFromParameter)(operationSpec.requestBody);\n request.body = operationSpec.serializer.serialize(bodyMapper, request.body, requestBodyParameterPathString, updatedOptions);\n const isStream = typeName === serializer_js_1.MapperTypeNames.Stream;\n if (operationSpec.isXML) {\n const xmlnsKey = xmlNamespacePrefix ? `xmlns:${xmlNamespacePrefix}` : \"xmlns\";\n const value = getXmlValueWithNamespace(xmlNamespace, xmlnsKey, typeName, request.body, updatedOptions);\n if (typeName === serializer_js_1.MapperTypeNames.Sequence) {\n request.body = stringifyXML(prepareXMLRootList(value, xmlElementName || xmlName || serializedName, xmlnsKey, xmlNamespace), { rootName: xmlName || serializedName, xmlCharKey });\n }\n else if (!isStream) {\n request.body = stringifyXML(value, {\n rootName: xmlName || serializedName,\n xmlCharKey,\n });\n }\n }\n else if (typeName === serializer_js_1.MapperTypeNames.String &&\n (operationSpec.contentType?.match(\"text/plain\") || operationSpec.mediaType === \"text\")) {\n // the String serializer has validated that request body is a string\n // so just send the string.\n return;\n }\n else if (!isStream) {\n request.body = JSON.stringify(request.body);\n }\n }\n }\n catch (error) {\n throw new Error(`Error \"${error.message}\" occurred in serializing the payload - ${JSON.stringify(serializedName, undefined, \" \")}.`);\n }\n }\n else if (operationSpec.formDataParameters && operationSpec.formDataParameters.length > 0) {\n request.formData = {};\n for (const formDataParameter of operationSpec.formDataParameters) {\n const formDataParameterValue = (0, operationHelpers_js_1.getOperationArgumentValueFromParameter)(operationArguments, formDataParameter);\n if (formDataParameterValue !== undefined && formDataParameterValue !== null) {\n const formDataParameterPropertyName = formDataParameter.mapper.serializedName || (0, interfaceHelpers_js_1.getPathStringFromParameter)(formDataParameter);\n request.formData[formDataParameterPropertyName] = operationSpec.serializer.serialize(formDataParameter.mapper, formDataParameterValue, (0, interfaceHelpers_js_1.getPathStringFromParameter)(formDataParameter), updatedOptions);\n }\n }\n }\n}\n/**\n * Adds an xml namespace to the xml serialized object if needed, otherwise it just returns the value itself\n */\nfunction getXmlValueWithNamespace(xmlNamespace, xmlnsKey, typeName, serializedValue, options) {\n // Composite and Sequence schemas already got their root namespace set during serialization\n // We just need to add xmlns to the other schema types\n if (xmlNamespace && ![\"Composite\", \"Sequence\", \"Dictionary\"].includes(typeName)) {\n const result = {};\n result[options.xml.xmlCharKey] = serializedValue;\n result[interfaces_js_1.XML_ATTRKEY] = { [xmlnsKey]: xmlNamespace };\n return result;\n }\n return serializedValue;\n}\nfunction prepareXMLRootList(obj, elementName, xmlNamespaceKey, xmlNamespace) {\n if (!Array.isArray(obj)) {\n obj = [obj];\n }\n if (!xmlNamespaceKey || !xmlNamespace) {\n return { [elementName]: obj };\n }\n const result = { [elementName]: obj };\n result[interfaces_js_1.XML_ATTRKEY] = { [xmlNamespaceKey]: xmlNamespace };\n return result;\n}\n//# sourceMappingURL=serializationPolicy.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.createClientPipeline = createClientPipeline;\nconst deserializationPolicy_js_1 = require(\"./deserializationPolicy.js\");\nconst core_rest_pipeline_1 = require(\"@azure/core-rest-pipeline\");\nconst serializationPolicy_js_1 = require(\"./serializationPolicy.js\");\n/**\n * Creates a new Pipeline for use with a Service Client.\n * Adds in deserializationPolicy by default.\n * Also adds in bearerTokenAuthenticationPolicy if passed a TokenCredential.\n * @param options - Options to customize the created pipeline.\n */\nfunction createClientPipeline(options = {}) {\n const pipeline = (0, core_rest_pipeline_1.createPipelineFromOptions)(options ?? {});\n if (options.credentialOptions) {\n pipeline.addPolicy((0, core_rest_pipeline_1.bearerTokenAuthenticationPolicy)({\n credential: options.credentialOptions.credential,\n scopes: options.credentialOptions.credentialScopes,\n }));\n }\n pipeline.addPolicy((0, serializationPolicy_js_1.serializationPolicy)(options.serializationOptions), { phase: \"Serialize\" });\n pipeline.addPolicy((0, deserializationPolicy_js_1.deserializationPolicy)(options.deserializationOptions), {\n phase: \"Deserialize\",\n });\n return pipeline;\n}\n//# sourceMappingURL=pipeline.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getCachedDefaultHttpClient = getCachedDefaultHttpClient;\nconst core_rest_pipeline_1 = require(\"@azure/core-rest-pipeline\");\nlet cachedHttpClient;\nfunction getCachedDefaultHttpClient() {\n if (!cachedHttpClient) {\n cachedHttpClient = (0, core_rest_pipeline_1.createDefaultHttpClient)();\n }\n return cachedHttpClient;\n}\n//# sourceMappingURL=httpClientCache.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getRequestUrl = getRequestUrl;\nexports.appendQueryParams = appendQueryParams;\nconst operationHelpers_js_1 = require(\"./operationHelpers.js\");\nconst interfaceHelpers_js_1 = require(\"./interfaceHelpers.js\");\nconst CollectionFormatToDelimiterMap = {\n CSV: \",\",\n SSV: \" \",\n Multi: \"Multi\",\n TSV: \"\\t\",\n Pipes: \"|\",\n};\nfunction getRequestUrl(baseUri, operationSpec, operationArguments, fallbackObject) {\n const urlReplacements = calculateUrlReplacements(operationSpec, operationArguments, fallbackObject);\n let isAbsolutePath = false;\n let requestUrl = replaceAll(baseUri, urlReplacements);\n if (operationSpec.path) {\n let path = replaceAll(operationSpec.path, urlReplacements);\n // QUIRK: sometimes we get a path component like /{nextLink}\n // which may be a fully formed URL with a leading /. In that case, we should\n // remove the leading /\n if (operationSpec.path === \"/{nextLink}\" && path.startsWith(\"/\")) {\n path = path.substring(1);\n }\n // QUIRK: sometimes we get a path component like {nextLink}\n // which may be a fully formed URL. In that case, we should\n // ignore the baseUri.\n if (isAbsoluteUrl(path)) {\n requestUrl = path;\n isAbsolutePath = true;\n }\n else {\n requestUrl = appendPath(requestUrl, path);\n }\n }\n const { queryParams, sequenceParams } = calculateQueryParameters(operationSpec, operationArguments, fallbackObject);\n /**\n * Notice that this call sets the `noOverwrite` parameter to true if the `requestUrl`\n * is an absolute path. This ensures that existing query parameter values in `requestUrl`\n * do not get overwritten. On the other hand when `requestUrl` is not absolute path, it\n * is still being built so there is nothing to overwrite.\n */\n requestUrl = appendQueryParams(requestUrl, queryParams, sequenceParams, isAbsolutePath);\n return requestUrl;\n}\nfunction replaceAll(input, replacements) {\n let result = input;\n for (const [searchValue, replaceValue] of replacements) {\n result = result.split(searchValue).join(replaceValue);\n }\n return result;\n}\nfunction calculateUrlReplacements(operationSpec, operationArguments, fallbackObject) {\n const result = new Map();\n if (operationSpec.urlParameters?.length) {\n for (const urlParameter of operationSpec.urlParameters) {\n let urlParameterValue = (0, operationHelpers_js_1.getOperationArgumentValueFromParameter)(operationArguments, urlParameter, fallbackObject);\n const parameterPathString = (0, interfaceHelpers_js_1.getPathStringFromParameter)(urlParameter);\n urlParameterValue = operationSpec.serializer.serialize(urlParameter.mapper, urlParameterValue, parameterPathString);\n if (!urlParameter.skipEncoding) {\n urlParameterValue = encodeURIComponent(urlParameterValue);\n }\n result.set(`{${urlParameter.mapper.serializedName || parameterPathString}}`, urlParameterValue);\n }\n }\n return result;\n}\nfunction isAbsoluteUrl(url) {\n return url.includes(\"://\");\n}\nfunction appendPath(url, pathToAppend) {\n if (!pathToAppend) {\n return url;\n }\n const parsedUrl = new URL(url);\n let newPath = parsedUrl.pathname;\n if (!newPath.endsWith(\"/\")) {\n newPath = `${newPath}/`;\n }\n if (pathToAppend.startsWith(\"/\")) {\n pathToAppend = pathToAppend.substring(1);\n }\n const searchStart = pathToAppend.indexOf(\"?\");\n if (searchStart !== -1) {\n const path = pathToAppend.substring(0, searchStart);\n const search = pathToAppend.substring(searchStart + 1);\n newPath = newPath + path;\n if (search) {\n parsedUrl.search = parsedUrl.search ? `${parsedUrl.search}&${search}` : search;\n }\n }\n else {\n newPath = newPath + pathToAppend;\n }\n parsedUrl.pathname = newPath;\n return parsedUrl.toString();\n}\nfunction calculateQueryParameters(operationSpec, operationArguments, fallbackObject) {\n const result = new Map();\n const sequenceParams = new Set();\n if (operationSpec.queryParameters?.length) {\n for (const queryParameter of operationSpec.queryParameters) {\n if (queryParameter.mapper.type.name === \"Sequence\" && queryParameter.mapper.serializedName) {\n sequenceParams.add(queryParameter.mapper.serializedName);\n }\n let queryParameterValue = (0, operationHelpers_js_1.getOperationArgumentValueFromParameter)(operationArguments, queryParameter, fallbackObject);\n if ((queryParameterValue !== undefined && queryParameterValue !== null) ||\n queryParameter.mapper.required) {\n queryParameterValue = operationSpec.serializer.serialize(queryParameter.mapper, queryParameterValue, (0, interfaceHelpers_js_1.getPathStringFromParameter)(queryParameter));\n const delimiter = queryParameter.collectionFormat\n ? CollectionFormatToDelimiterMap[queryParameter.collectionFormat]\n : \"\";\n if (Array.isArray(queryParameterValue)) {\n // replace null and undefined\n queryParameterValue = queryParameterValue.map((item) => {\n if (item === null || item === undefined) {\n return \"\";\n }\n return item;\n });\n }\n if (queryParameter.collectionFormat === \"Multi\" && queryParameterValue.length === 0) {\n continue;\n }\n else if (Array.isArray(queryParameterValue) &&\n (queryParameter.collectionFormat === \"SSV\" || queryParameter.collectionFormat === \"TSV\")) {\n queryParameterValue = queryParameterValue.join(delimiter);\n }\n if (!queryParameter.skipEncoding) {\n if (Array.isArray(queryParameterValue)) {\n queryParameterValue = queryParameterValue.map((item) => {\n return encodeURIComponent(item);\n });\n }\n else {\n queryParameterValue = encodeURIComponent(queryParameterValue);\n }\n }\n // Join pipes and CSV *after* encoding, or the server will be upset.\n if (Array.isArray(queryParameterValue) &&\n (queryParameter.collectionFormat === \"CSV\" || queryParameter.collectionFormat === \"Pipes\")) {\n queryParameterValue = queryParameterValue.join(delimiter);\n }\n result.set(queryParameter.mapper.serializedName || (0, interfaceHelpers_js_1.getPathStringFromParameter)(queryParameter), queryParameterValue);\n }\n }\n }\n return {\n queryParams: result,\n sequenceParams,\n };\n}\nfunction simpleParseQueryParams(queryString) {\n const result = new Map();\n if (!queryString || queryString[0] !== \"?\") {\n return result;\n }\n // remove the leading ?\n queryString = queryString.slice(1);\n const pairs = queryString.split(\"&\");\n for (const pair of pairs) {\n const [name, value] = pair.split(\"=\", 2);\n const existingValue = result.get(name);\n if (existingValue) {\n if (Array.isArray(existingValue)) {\n existingValue.push(value);\n }\n else {\n result.set(name, [existingValue, value]);\n }\n }\n else {\n result.set(name, value);\n }\n }\n return result;\n}\n/** @internal */\nfunction appendQueryParams(url, queryParams, sequenceParams, noOverwrite = false) {\n if (queryParams.size === 0) {\n return url;\n }\n const parsedUrl = new URL(url);\n // QUIRK: parsedUrl.searchParams will have their name/value pairs decoded, which\n // can change their meaning to the server, such as in the case of a SAS signature.\n // To avoid accidentally un-encoding a query param, we parse the key/values ourselves\n const combinedParams = simpleParseQueryParams(parsedUrl.search);\n for (const [name, value] of queryParams) {\n const existingValue = combinedParams.get(name);\n if (Array.isArray(existingValue)) {\n if (Array.isArray(value)) {\n existingValue.push(...value);\n const valueSet = new Set(existingValue);\n combinedParams.set(name, Array.from(valueSet));\n }\n else {\n existingValue.push(value);\n }\n }\n else if (existingValue) {\n if (Array.isArray(value)) {\n value.unshift(existingValue);\n }\n else if (sequenceParams.has(name)) {\n combinedParams.set(name, [existingValue, value]);\n }\n if (!noOverwrite) {\n combinedParams.set(name, value);\n }\n }\n else {\n combinedParams.set(name, value);\n }\n }\n const searchPieces = [];\n for (const [name, value] of combinedParams) {\n if (typeof value === \"string\") {\n searchPieces.push(`${name}=${value}`);\n }\n else if (Array.isArray(value)) {\n // QUIRK: If we get an array of values, include multiple key/value pairs\n for (const subValue of value) {\n searchPieces.push(`${name}=${subValue}`);\n }\n }\n else {\n searchPieces.push(`${name}=${value}`);\n }\n }\n // QUIRK: we have to set search manually as searchParams will encode comma when it shouldn't.\n parsedUrl.search = searchPieces.length ? `?${searchPieces.join(\"&\")}` : \"\";\n return parsedUrl.toString();\n}\n//# sourceMappingURL=urlHelpers.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.logger = void 0;\nconst logger_1 = require(\"@azure/logger\");\nexports.logger = (0, logger_1.createClientLogger)(\"core-client\");\n//# sourceMappingURL=log.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ServiceClient = void 0;\nconst core_rest_pipeline_1 = require(\"@azure/core-rest-pipeline\");\nconst pipeline_js_1 = require(\"./pipeline.js\");\nconst utils_js_1 = require(\"./utils.js\");\nconst httpClientCache_js_1 = require(\"./httpClientCache.js\");\nconst operationHelpers_js_1 = require(\"./operationHelpers.js\");\nconst urlHelpers_js_1 = require(\"./urlHelpers.js\");\nconst interfaceHelpers_js_1 = require(\"./interfaceHelpers.js\");\nconst log_js_1 = require(\"./log.js\");\n/**\n * Initializes a new instance of the ServiceClient.\n */\nclass ServiceClient {\n /**\n * If specified, this is the base URI that requests will be made against for this ServiceClient.\n * If it is not specified, then all OperationSpecs must contain a baseUrl property.\n */\n _endpoint;\n /**\n * The default request content type for the service.\n * Used if no requestContentType is present on an OperationSpec.\n */\n _requestContentType;\n /**\n * Set to true if the request is sent over HTTP instead of HTTPS\n */\n _allowInsecureConnection;\n /**\n * The HTTP client that will be used to send requests.\n */\n _httpClient;\n /**\n * The pipeline used by this client to make requests\n */\n pipeline;\n /**\n * The ServiceClient constructor\n * @param options - The service client options that govern the behavior of the client.\n */\n constructor(options = {}) {\n this._requestContentType = options.requestContentType;\n this._endpoint = options.endpoint ?? options.baseUri;\n if (options.baseUri) {\n log_js_1.logger.warning(\"The baseUri option for SDK Clients has been deprecated, please use endpoint instead.\");\n }\n this._allowInsecureConnection = options.allowInsecureConnection;\n this._httpClient = options.httpClient || (0, httpClientCache_js_1.getCachedDefaultHttpClient)();\n this.pipeline = options.pipeline || createDefaultPipeline(options);\n if (options.additionalPolicies?.length) {\n for (const { policy, position } of options.additionalPolicies) {\n // Sign happens after Retry and is commonly needed to occur\n // before policies that intercept post-retry.\n const afterPhase = position === \"perRetry\" ? \"Sign\" : undefined;\n this.pipeline.addPolicy(policy, {\n afterPhase,\n });\n }\n }\n }\n /**\n * Send the provided httpRequest.\n */\n async sendRequest(request) {\n return this.pipeline.sendRequest(this._httpClient, request);\n }\n /**\n * Send an HTTP request that is populated using the provided OperationSpec.\n * @typeParam T - The typed result of the request, based on the OperationSpec.\n * @param operationArguments - The arguments that the HTTP request's templated values will be populated from.\n * @param operationSpec - The OperationSpec to use to populate the httpRequest.\n */\n async sendOperationRequest(operationArguments, operationSpec) {\n const endpoint = operationSpec.baseUrl || this._endpoint;\n if (!endpoint) {\n throw new Error(\"If operationSpec.baseUrl is not specified, then the ServiceClient must have a endpoint string property that contains the base URL to use.\");\n }\n // Templatized URLs sometimes reference properties on the ServiceClient child class,\n // so we have to pass `this` below in order to search these properties if they're\n // not part of OperationArguments\n const url = (0, urlHelpers_js_1.getRequestUrl)(endpoint, operationSpec, operationArguments, this);\n const request = (0, core_rest_pipeline_1.createPipelineRequest)({\n url,\n });\n request.method = operationSpec.httpMethod;\n const operationInfo = (0, operationHelpers_js_1.getOperationRequestInfo)(request);\n operationInfo.operationSpec = operationSpec;\n operationInfo.operationArguments = operationArguments;\n const contentType = operationSpec.contentType || this._requestContentType;\n if (contentType && operationSpec.requestBody) {\n request.headers.set(\"Content-Type\", contentType);\n }\n const options = operationArguments.options;\n if (options) {\n const requestOptions = options.requestOptions;\n if (requestOptions) {\n if (requestOptions.timeout) {\n request.timeout = requestOptions.timeout;\n }\n if (requestOptions.onUploadProgress) {\n request.onUploadProgress = requestOptions.onUploadProgress;\n }\n if (requestOptions.onDownloadProgress) {\n request.onDownloadProgress = requestOptions.onDownloadProgress;\n }\n if (requestOptions.shouldDeserialize !== undefined) {\n operationInfo.shouldDeserialize = requestOptions.shouldDeserialize;\n }\n if (requestOptions.allowInsecureConnection) {\n request.allowInsecureConnection = true;\n }\n }\n if (options.abortSignal) {\n request.abortSignal = options.abortSignal;\n }\n if (options.tracingOptions) {\n request.tracingOptions = options.tracingOptions;\n }\n }\n if (this._allowInsecureConnection) {\n request.allowInsecureConnection = true;\n }\n if (request.streamResponseStatusCodes === undefined) {\n request.streamResponseStatusCodes = (0, interfaceHelpers_js_1.getStreamingResponseStatusCodes)(operationSpec);\n }\n try {\n const rawResponse = await this.sendRequest(request);\n const flatResponse = (0, utils_js_1.flattenResponse)(rawResponse, operationSpec.responses[rawResponse.status]);\n if (options?.onResponse) {\n options.onResponse(rawResponse, flatResponse);\n }\n return flatResponse;\n }\n catch (error) {\n if (typeof error === \"object\" && error?.response) {\n const rawResponse = error.response;\n const flatResponse = (0, utils_js_1.flattenResponse)(rawResponse, operationSpec.responses[error.statusCode] || operationSpec.responses[\"default\"]);\n error.details = flatResponse;\n if (options?.onResponse) {\n options.onResponse(rawResponse, flatResponse, error);\n }\n }\n throw error;\n }\n }\n}\nexports.ServiceClient = ServiceClient;\nfunction createDefaultPipeline(options) {\n const credentialScopes = getCredentialScopes(options);\n const credentialOptions = options.credential && credentialScopes\n ? { credentialScopes, credential: options.credential }\n : undefined;\n return (0, pipeline_js_1.createClientPipeline)({\n ...options,\n credentialOptions,\n });\n}\nfunction getCredentialScopes(options) {\n if (options.credentialScopes) {\n return options.credentialScopes;\n }\n if (options.endpoint) {\n return `${options.endpoint}/.default`;\n }\n if (options.baseUri) {\n return `${options.baseUri}/.default`;\n }\n if (options.credential && !options.credentialScopes) {\n throw new Error(`When using credentials, the ServiceClientOptions must contain either a endpoint or a credentialScopes. Unable to create a bearerTokenAuthenticationPolicy`);\n }\n return undefined;\n}\n//# sourceMappingURL=serviceClient.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.parseCAEChallenge = parseCAEChallenge;\nexports.authorizeRequestOnClaimChallenge = authorizeRequestOnClaimChallenge;\nconst log_js_1 = require(\"./log.js\");\nconst base64_js_1 = require(\"./base64.js\");\n/**\n * Converts: `Bearer a=\"b\", c=\"d\", Bearer d=\"e\", f=\"g\"`.\n * Into: `[ { a: 'b', c: 'd' }, { d: 'e', f: 'g' } ]`.\n *\n * @internal\n */\nfunction parseCAEChallenge(challenges) {\n const bearerChallenges = `, ${challenges.trim()}`.split(\", Bearer \").filter((x) => x);\n return bearerChallenges.map((challenge) => {\n const challengeParts = `${challenge.trim()}, `.split('\", ').filter((x) => x);\n const keyValuePairs = challengeParts.map((keyValue) => (([key, value]) => ({ [key]: value }))(keyValue.trim().split('=\"')));\n // Key-value pairs to plain object:\n return keyValuePairs.reduce((a, b) => ({ ...a, ...b }), {});\n });\n}\n/**\n * This function can be used as a callback for the `bearerTokenAuthenticationPolicy` of `@azure/core-rest-pipeline`, to support CAE challenges:\n * [Continuous Access Evaluation](https://learn.microsoft.com/azure/active-directory/conditional-access/concept-continuous-access-evaluation).\n *\n * Call the `bearerTokenAuthenticationPolicy` with the following options:\n *\n * ```ts snippet:AuthorizeRequestOnClaimChallenge\n * import { bearerTokenAuthenticationPolicy } from \"@azure/core-rest-pipeline\";\n * import { authorizeRequestOnClaimChallenge } from \"@azure/core-client\";\n *\n * const policy = bearerTokenAuthenticationPolicy({\n * challengeCallbacks: {\n * authorizeRequestOnChallenge: authorizeRequestOnClaimChallenge,\n * },\n * scopes: [\"https://service/.default\"],\n * });\n * ```\n *\n * Once provided, the `bearerTokenAuthenticationPolicy` policy will internally handle Continuous Access Evaluation (CAE) challenges.\n * When it can't complete a challenge it will return the 401 (unauthorized) response from ARM.\n *\n * Example challenge with claims:\n *\n * ```\n * Bearer authorization_uri=\"https://login.windows-ppe.net/\", error=\"invalid_token\",\n * error_description=\"User session has been revoked\",\n * claims=\"eyJhY2Nlc3NfdG9rZW4iOnsibmJmIjp7ImVzc2VudGlhbCI6dHJ1ZSwgInZhbHVlIjoiMTYwMzc0MjgwMCJ9fX0=\"\n * ```\n */\nasync function authorizeRequestOnClaimChallenge(onChallengeOptions) {\n const { scopes, response } = onChallengeOptions;\n const logger = onChallengeOptions.logger || log_js_1.logger;\n const challenge = response.headers.get(\"WWW-Authenticate\");\n if (!challenge) {\n logger.info(`The WWW-Authenticate header was missing. Failed to perform the Continuous Access Evaluation authentication flow.`);\n return false;\n }\n const challenges = parseCAEChallenge(challenge) || [];\n const parsedChallenge = challenges.find((x) => x.claims);\n if (!parsedChallenge) {\n logger.info(`The WWW-Authenticate header was missing the necessary \"claims\" to perform the Continuous Access Evaluation authentication flow.`);\n return false;\n }\n const accessToken = await onChallengeOptions.getAccessToken(parsedChallenge.scope ? [parsedChallenge.scope] : scopes, {\n claims: (0, base64_js_1.decodeStringToString)(parsedChallenge.claims),\n });\n if (!accessToken) {\n return false;\n }\n onChallengeOptions.request.headers.set(\"Authorization\", `${accessToken.tokenType ?? \"Bearer\"} ${accessToken.token}`);\n return true;\n}\n//# sourceMappingURL=authorizeRequestOnClaimChallenge.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.authorizeRequestOnTenantChallenge = void 0;\n/**\n * A set of constants used internally when processing requests.\n */\nconst Constants = {\n DefaultScope: \"/.default\",\n /**\n * Defines constants for use with HTTP headers.\n */\n HeaderConstants: {\n /**\n * The Authorization header.\n */\n AUTHORIZATION: \"authorization\",\n },\n};\nfunction isUuid(text) {\n return /^[0-9a-fA-F]{8}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{12}$/.test(text);\n}\n/**\n * Defines a callback to handle auth challenge for Storage APIs.\n * This implements the bearer challenge process described here: https://learn.microsoft.com/rest/api/storageservices/authorize-with-azure-active-directory#bearer-challenge\n * Handling has specific features for storage that departs to the general AAD challenge docs.\n **/\nconst authorizeRequestOnTenantChallenge = async (challengeOptions) => {\n const requestOptions = requestToOptions(challengeOptions.request);\n const challenge = getChallenge(challengeOptions.response);\n if (challenge) {\n const challengeInfo = parseChallenge(challenge);\n const challengeScopes = buildScopes(challengeOptions, challengeInfo);\n const tenantId = extractTenantId(challengeInfo);\n if (!tenantId) {\n return false;\n }\n const accessToken = await challengeOptions.getAccessToken(challengeScopes, {\n ...requestOptions,\n tenantId,\n });\n if (!accessToken) {\n return false;\n }\n challengeOptions.request.headers.set(Constants.HeaderConstants.AUTHORIZATION, `${accessToken.tokenType ?? \"Bearer\"} ${accessToken.token}`);\n return true;\n }\n return false;\n};\nexports.authorizeRequestOnTenantChallenge = authorizeRequestOnTenantChallenge;\n/**\n * Extracts the tenant id from the challenge information\n * The tenant id is contained in the authorization_uri as the first\n * path part.\n */\nfunction extractTenantId(challengeInfo) {\n const parsedAuthUri = new URL(challengeInfo.authorization_uri);\n const pathSegments = parsedAuthUri.pathname.split(\"/\");\n const tenantId = pathSegments[1];\n if (tenantId && isUuid(tenantId)) {\n return tenantId;\n }\n return undefined;\n}\n/**\n * Builds the authentication scopes based on the information that comes in the\n * challenge information. Scopes url is present in the resource_id, if it is empty\n * we keep using the original scopes.\n */\nfunction buildScopes(challengeOptions, challengeInfo) {\n if (!challengeInfo.resource_id) {\n return challengeOptions.scopes;\n }\n const challengeScopes = new URL(challengeInfo.resource_id);\n challengeScopes.pathname = Constants.DefaultScope;\n let scope = challengeScopes.toString();\n if (scope === \"https://disk.azure.com/.default\") {\n // the extra slash is required by the service\n scope = \"https://disk.azure.com//.default\";\n }\n return [scope];\n}\n/**\n * We will retrieve the challenge only if the response status code was 401,\n * and if the response contained the header \"WWW-Authenticate\" with a non-empty value.\n */\nfunction getChallenge(response) {\n const challenge = response.headers.get(\"WWW-Authenticate\");\n if (response.status === 401 && challenge) {\n return challenge;\n }\n return;\n}\n/**\n * Converts: `Bearer a=\"b\" c=\"d\"`.\n * Into: `[ { a: 'b', c: 'd' }]`.\n *\n * @internal\n */\nfunction parseChallenge(challenge) {\n const bearerChallenge = challenge.slice(\"Bearer \".length);\n const challengeParts = `${bearerChallenge.trim()} `.split(\" \").filter((x) => x);\n const keyValuePairs = challengeParts.map((keyValue) => (([key, value]) => ({ [key]: value }))(keyValue.trim().split(\"=\")));\n // Key-value pairs to plain object:\n return keyValuePairs.reduce((a, b) => ({ ...a, ...b }), {});\n}\n/**\n * Extracts the options form a Pipeline Request for later re-use\n */\nfunction requestToOptions(request) {\n return {\n abortSignal: request.abortSignal,\n requestOptions: {\n timeout: request.timeout,\n },\n tracingOptions: request.tracingOptions,\n };\n}\n//# sourceMappingURL=authorizeRequestOnTenantChallenge.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.authorizeRequestOnTenantChallenge = exports.authorizeRequestOnClaimChallenge = exports.serializationPolicyName = exports.serializationPolicy = exports.deserializationPolicyName = exports.deserializationPolicy = exports.XML_CHARKEY = exports.XML_ATTRKEY = exports.createClientPipeline = exports.ServiceClient = exports.MapperTypeNames = exports.createSerializer = void 0;\nvar serializer_js_1 = require(\"./serializer.js\");\nObject.defineProperty(exports, \"createSerializer\", { enumerable: true, get: function () { return serializer_js_1.createSerializer; } });\nObject.defineProperty(exports, \"MapperTypeNames\", { enumerable: true, get: function () { return serializer_js_1.MapperTypeNames; } });\nvar serviceClient_js_1 = require(\"./serviceClient.js\");\nObject.defineProperty(exports, \"ServiceClient\", { enumerable: true, get: function () { return serviceClient_js_1.ServiceClient; } });\nvar pipeline_js_1 = require(\"./pipeline.js\");\nObject.defineProperty(exports, \"createClientPipeline\", { enumerable: true, get: function () { return pipeline_js_1.createClientPipeline; } });\nvar interfaces_js_1 = require(\"./interfaces.js\");\nObject.defineProperty(exports, \"XML_ATTRKEY\", { enumerable: true, get: function () { return interfaces_js_1.XML_ATTRKEY; } });\nObject.defineProperty(exports, \"XML_CHARKEY\", { enumerable: true, get: function () { return interfaces_js_1.XML_CHARKEY; } });\nvar deserializationPolicy_js_1 = require(\"./deserializationPolicy.js\");\nObject.defineProperty(exports, \"deserializationPolicy\", { enumerable: true, get: function () { return deserializationPolicy_js_1.deserializationPolicy; } });\nObject.defineProperty(exports, \"deserializationPolicyName\", { enumerable: true, get: function () { return deserializationPolicy_js_1.deserializationPolicyName; } });\nvar serializationPolicy_js_1 = require(\"./serializationPolicy.js\");\nObject.defineProperty(exports, \"serializationPolicy\", { enumerable: true, get: function () { return serializationPolicy_js_1.serializationPolicy; } });\nObject.defineProperty(exports, \"serializationPolicyName\", { enumerable: true, get: function () { return serializationPolicy_js_1.serializationPolicyName; } });\nvar authorizeRequestOnClaimChallenge_js_1 = require(\"./authorizeRequestOnClaimChallenge.js\");\nObject.defineProperty(exports, \"authorizeRequestOnClaimChallenge\", { enumerable: true, get: function () { return authorizeRequestOnClaimChallenge_js_1.authorizeRequestOnClaimChallenge; } });\nvar authorizeRequestOnTenantChallenge_js_1 = require(\"./authorizeRequestOnTenantChallenge.js\");\nObject.defineProperty(exports, \"authorizeRequestOnTenantChallenge\", { enumerable: true, get: function () { return authorizeRequestOnTenantChallenge_js_1.authorizeRequestOnTenantChallenge; } });\n//# sourceMappingURL=index.js.map","\"use strict\";\n/*\n * Copyright (c) Microsoft Corporation.\n * Licensed under the MIT License.\n *\n * Code generated by Microsoft (R) AutoRest Code Generator.\n * Changes may cause incorrect behavior and will be lost if the code is regenerated.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ProviderConsentDefinition = exports.ProviderRegistrationRequest = exports.Permission = exports.RoleDefinition = exports.ProviderPermission = exports.ProviderPermissionListResult = exports.DeploymentWhatIf = exports.WhatIfPropertyChange = exports.WhatIfChange = exports.WhatIfOperationResult = exports.DeploymentWhatIfSettings = exports.ScopedDeploymentWhatIf = exports.ScopedDeployment = exports.DeploymentListResult = exports.DeploymentExportResult = exports.DeploymentValidateResult = exports.DeploymentDiagnosticsDefinition = exports.ResourceReference = exports.OnErrorDeploymentExtended = exports.DeploymentExtensionDefinition = exports.BasicDependency = exports.Dependency = exports.ApiProfile = exports.ZoneMapping = exports.AliasPathMetadata = exports.AliasPattern = exports.AliasPath = exports.Alias = exports.ProviderExtendedLocation = exports.ProviderResourceType = exports.Provider = exports.DeploymentPropertiesExtended = exports.DeploymentExtended = exports.ExpressionEvaluationOptions = exports.OnErrorDeployment = exports.DebugSetting = exports.DeploymentExtensionConfigItem = exports.ParametersLink = exports.KeyVaultReference = exports.KeyVaultParameterReference = exports.DeploymentParameter = exports.TemplateLink = exports.DeploymentProperties = exports.Deployment = exports.ErrorAdditionalInfo = exports.ErrorResponse = exports.CloudError = exports.OperationDisplay = exports.Operation = exports.OperationListResult = void 0;\nexports.TagsDeleteAtScopeHeaders = exports.TagsUpdateAtScopeHeaders = exports.TagsCreateOrUpdateAtScopeHeaders = exports.ResourceGroupsDeleteHeaders = exports.DeploymentsWhatIfHeaders = exports.DeploymentsWhatIfAtSubscriptionScopeHeaders = exports.DeploymentsWhatIfAtManagementGroupScopeHeaders = exports.DeploymentsWhatIfAtTenantScopeHeaders = exports.GenericResourceExpanded = exports.GenericResource = exports.DeploymentWhatIfProperties = exports.SubResource = exports.ResourceProviderOperationDisplayProperties = exports.ResourceGroupFilter = exports.GenericResourceFilter = exports.DeploymentExtendedFilter = exports.TagsPatchResource = exports.Tags = exports.TagsResource = exports.TemplateHashResult = exports.DeploymentOperationsListResult = exports.HttpMessage = exports.TargetResource = exports.StatusMessage = exports.DeploymentOperationProperties = exports.DeploymentOperation = exports.TagsListResult = exports.TagDetails = exports.TagCount = exports.TagValue = exports.ResourcesMoveInfo = exports.ResourceGroupListResult = exports.ResourceGroupExportResult = exports.ExportTemplateRequest = exports.ResourceGroupPatchable = exports.ResourceGroupProperties = exports.ResourceGroup = exports.ExtendedLocation = exports.Resource = exports.IdentityUserAssignedIdentitiesValue = exports.Identity = exports.Sku = exports.Plan = exports.ResourceListResult = exports.ProviderResourceTypeListResult = exports.ProviderListResult = void 0;\nexports.OperationListResult = {\n type: {\n name: \"Composite\",\n className: \"OperationListResult\",\n modelProperties: {\n value: {\n serializedName: \"value\",\n type: {\n name: \"Sequence\",\n element: {\n type: {\n name: \"Composite\",\n className: \"Operation\",\n },\n },\n },\n },\n nextLink: {\n serializedName: \"nextLink\",\n type: {\n name: \"String\",\n },\n },\n },\n },\n};\nexports.Operation = {\n type: {\n name: \"Composite\",\n className: \"Operation\",\n modelProperties: {\n name: {\n serializedName: \"name\",\n type: {\n name: \"String\",\n },\n },\n display: {\n serializedName: \"display\",\n type: {\n name: \"Composite\",\n className: \"OperationDisplay\",\n },\n },\n },\n },\n};\nexports.OperationDisplay = {\n type: {\n name: \"Composite\",\n className: \"OperationDisplay\",\n modelProperties: {\n provider: {\n serializedName: \"provider\",\n type: {\n name: \"String\",\n },\n },\n resource: {\n serializedName: \"resource\",\n type: {\n name: \"String\",\n },\n },\n operation: {\n serializedName: \"operation\",\n type: {\n name: \"String\",\n },\n },\n description: {\n serializedName: \"description\",\n type: {\n name: \"String\",\n },\n },\n },\n },\n};\nexports.CloudError = {\n type: {\n name: \"Composite\",\n className: \"CloudError\",\n modelProperties: {\n error: {\n serializedName: \"error\",\n type: {\n name: \"Composite\",\n className: \"ErrorResponse\",\n },\n },\n },\n },\n};\nexports.ErrorResponse = {\n type: {\n name: \"Composite\",\n className: \"ErrorResponse\",\n modelProperties: {\n code: {\n serializedName: \"code\",\n readOnly: true,\n type: {\n name: \"String\",\n },\n },\n message: {\n serializedName: \"message\",\n readOnly: true,\n type: {\n name: \"String\",\n },\n },\n target: {\n serializedName: \"target\",\n readOnly: true,\n type: {\n name: \"String\",\n },\n },\n details: {\n serializedName: \"details\",\n readOnly: true,\n type: {\n name: \"Sequence\",\n element: {\n type: {\n name: \"Composite\",\n className: \"ErrorResponse\",\n },\n },\n },\n },\n additionalInfo: {\n serializedName: \"additionalInfo\",\n readOnly: true,\n type: {\n name: \"Sequence\",\n element: {\n type: {\n name: \"Composite\",\n className: \"ErrorAdditionalInfo\",\n },\n },\n },\n },\n },\n },\n};\nexports.ErrorAdditionalInfo = {\n type: {\n name: \"Composite\",\n className: \"ErrorAdditionalInfo\",\n modelProperties: {\n type: {\n serializedName: \"type\",\n readOnly: true,\n type: {\n name: \"String\",\n },\n },\n info: {\n serializedName: \"info\",\n readOnly: true,\n type: {\n name: \"Dictionary\",\n value: { type: { name: \"any\" } },\n },\n },\n },\n },\n};\nexports.Deployment = {\n type: {\n name: \"Composite\",\n className: \"Deployment\",\n modelProperties: {\n location: {\n serializedName: \"location\",\n type: {\n name: \"String\",\n },\n },\n properties: {\n serializedName: \"properties\",\n type: {\n name: \"Composite\",\n className: \"DeploymentProperties\",\n },\n },\n tags: {\n serializedName: \"tags\",\n type: {\n name: \"Dictionary\",\n value: { type: { name: \"String\" } },\n },\n },\n },\n },\n};\nexports.DeploymentProperties = {\n type: {\n name: \"Composite\",\n className: \"DeploymentProperties\",\n modelProperties: {\n template: {\n serializedName: \"template\",\n type: {\n name: \"Dictionary\",\n value: { type: { name: \"any\" } },\n },\n },\n templateLink: {\n serializedName: \"templateLink\",\n type: {\n name: \"Composite\",\n className: \"TemplateLink\",\n },\n },\n parameters: {\n serializedName: \"parameters\",\n type: {\n name: \"Dictionary\",\n value: {\n type: { name: \"Composite\", className: \"DeploymentParameter\" },\n },\n },\n },\n parametersLink: {\n serializedName: \"parametersLink\",\n type: {\n name: \"Composite\",\n className: \"ParametersLink\",\n },\n },\n extensionConfigs: {\n serializedName: \"extensionConfigs\",\n type: {\n name: \"Dictionary\",\n value: {\n type: {\n name: \"Dictionary\",\n value: {\n type: {\n name: \"Composite\",\n className: \"DeploymentExtensionConfigItem\",\n },\n },\n },\n },\n },\n },\n mode: {\n serializedName: \"mode\",\n required: true,\n type: {\n name: \"Enum\",\n allowedValues: [\"Incremental\", \"Complete\"],\n },\n },\n debugSetting: {\n serializedName: \"debugSetting\",\n type: {\n name: \"Composite\",\n className: \"DebugSetting\",\n },\n },\n onErrorDeployment: {\n serializedName: \"onErrorDeployment\",\n type: {\n name: \"Composite\",\n className: \"OnErrorDeployment\",\n },\n },\n expressionEvaluationOptions: {\n serializedName: \"expressionEvaluationOptions\",\n type: {\n name: \"Composite\",\n className: \"ExpressionEvaluationOptions\",\n },\n },\n validationLevel: {\n serializedName: \"validationLevel\",\n type: {\n name: \"String\",\n },\n },\n },\n },\n};\nexports.TemplateLink = {\n type: {\n name: \"Composite\",\n className: \"TemplateLink\",\n modelProperties: {\n uri: {\n serializedName: \"uri\",\n type: {\n name: \"String\",\n },\n },\n id: {\n serializedName: \"id\",\n type: {\n name: \"String\",\n },\n },\n relativePath: {\n serializedName: \"relativePath\",\n type: {\n name: \"String\",\n },\n },\n contentVersion: {\n serializedName: \"contentVersion\",\n type: {\n name: \"String\",\n },\n },\n queryString: {\n serializedName: \"queryString\",\n type: {\n name: \"String\",\n },\n },\n },\n },\n};\nexports.DeploymentParameter = {\n type: {\n name: \"Composite\",\n className: \"DeploymentParameter\",\n modelProperties: {\n value: {\n serializedName: \"value\",\n type: {\n name: \"any\",\n },\n },\n reference: {\n serializedName: \"reference\",\n type: {\n name: \"Composite\",\n className: \"KeyVaultParameterReference\",\n },\n },\n },\n },\n};\nexports.KeyVaultParameterReference = {\n type: {\n name: \"Composite\",\n className: \"KeyVaultParameterReference\",\n modelProperties: {\n keyVault: {\n serializedName: \"keyVault\",\n type: {\n name: \"Composite\",\n className: \"KeyVaultReference\",\n },\n },\n secretName: {\n serializedName: \"secretName\",\n required: true,\n type: {\n name: \"String\",\n },\n },\n secretVersion: {\n serializedName: \"secretVersion\",\n type: {\n name: \"String\",\n },\n },\n },\n },\n};\nexports.KeyVaultReference = {\n type: {\n name: \"Composite\",\n className: \"KeyVaultReference\",\n modelProperties: {\n id: {\n serializedName: \"id\",\n required: true,\n type: {\n name: \"String\",\n },\n },\n },\n },\n};\nexports.ParametersLink = {\n type: {\n name: \"Composite\",\n className: \"ParametersLink\",\n modelProperties: {\n uri: {\n serializedName: \"uri\",\n required: true,\n type: {\n name: \"String\",\n },\n },\n contentVersion: {\n serializedName: \"contentVersion\",\n type: {\n name: \"String\",\n },\n },\n },\n },\n};\nexports.DeploymentExtensionConfigItem = {\n type: {\n name: \"Composite\",\n className: \"DeploymentExtensionConfigItem\",\n modelProperties: {\n type: {\n serializedName: \"type\",\n readOnly: true,\n type: {\n name: \"String\",\n },\n },\n value: {\n serializedName: \"value\",\n type: {\n name: \"any\",\n },\n },\n keyVaultReference: {\n serializedName: \"keyVaultReference\",\n type: {\n name: \"Composite\",\n className: \"KeyVaultParameterReference\",\n },\n },\n },\n },\n};\nexports.DebugSetting = {\n type: {\n name: \"Composite\",\n className: \"DebugSetting\",\n modelProperties: {\n detailLevel: {\n serializedName: \"detailLevel\",\n type: {\n name: \"String\",\n },\n },\n },\n },\n};\nexports.OnErrorDeployment = {\n type: {\n name: \"Composite\",\n className: \"OnErrorDeployment\",\n modelProperties: {\n type: {\n serializedName: \"type\",\n type: {\n name: \"Enum\",\n allowedValues: [\"LastSuccessful\", \"SpecificDeployment\"],\n },\n },\n deploymentName: {\n serializedName: \"deploymentName\",\n type: {\n name: \"String\",\n },\n },\n },\n },\n};\nexports.ExpressionEvaluationOptions = {\n type: {\n name: \"Composite\",\n className: \"ExpressionEvaluationOptions\",\n modelProperties: {\n scope: {\n serializedName: \"scope\",\n type: {\n name: \"String\",\n },\n },\n },\n },\n};\nexports.DeploymentExtended = {\n type: {\n name: \"Composite\",\n className: \"DeploymentExtended\",\n modelProperties: {\n id: {\n serializedName: \"id\",\n readOnly: true,\n type: {\n name: \"String\",\n },\n },\n name: {\n serializedName: \"name\",\n readOnly: true,\n type: {\n name: \"String\",\n },\n },\n type: {\n serializedName: \"type\",\n readOnly: true,\n type: {\n name: \"String\",\n },\n },\n location: {\n serializedName: \"location\",\n type: {\n name: \"String\",\n },\n },\n properties: {\n serializedName: \"properties\",\n type: {\n name: \"Composite\",\n className: \"DeploymentPropertiesExtended\",\n },\n },\n tags: {\n serializedName: \"tags\",\n type: {\n name: \"Dictionary\",\n value: { type: { name: \"String\" } },\n },\n },\n },\n },\n};\nexports.DeploymentPropertiesExtended = {\n type: {\n name: \"Composite\",\n className: \"DeploymentPropertiesExtended\",\n modelProperties: {\n provisioningState: {\n serializedName: \"provisioningState\",\n readOnly: true,\n type: {\n name: \"String\",\n },\n },\n correlationId: {\n serializedName: \"correlationId\",\n readOnly: true,\n type: {\n name: \"String\",\n },\n },\n timestamp: {\n serializedName: \"timestamp\",\n readOnly: true,\n type: {\n name: \"DateTime\",\n },\n },\n duration: {\n serializedName: \"duration\",\n readOnly: true,\n type: {\n name: \"String\",\n },\n },\n outputs: {\n serializedName: \"outputs\",\n readOnly: true,\n type: {\n name: \"Dictionary\",\n value: { type: { name: \"any\" } },\n },\n },\n providers: {\n serializedName: \"providers\",\n readOnly: true,\n type: {\n name: \"Sequence\",\n element: {\n type: {\n name: \"Composite\",\n className: \"Provider\",\n },\n },\n },\n },\n dependencies: {\n serializedName: \"dependencies\",\n readOnly: true,\n type: {\n name: \"Sequence\",\n element: {\n type: {\n name: \"Composite\",\n className: \"Dependency\",\n },\n },\n },\n },\n templateLink: {\n serializedName: \"templateLink\",\n type: {\n name: \"Composite\",\n className: \"TemplateLink\",\n },\n },\n parameters: {\n serializedName: \"parameters\",\n readOnly: true,\n type: {\n name: \"Dictionary\",\n value: { type: { name: \"any\" } },\n },\n },\n parametersLink: {\n serializedName: \"parametersLink\",\n type: {\n name: \"Composite\",\n className: \"ParametersLink\",\n },\n },\n extensions: {\n serializedName: \"extensions\",\n readOnly: true,\n type: {\n name: \"Sequence\",\n element: {\n type: {\n name: \"Composite\",\n className: \"DeploymentExtensionDefinition\",\n },\n },\n },\n },\n mode: {\n serializedName: \"mode\",\n readOnly: true,\n type: {\n name: \"Enum\",\n allowedValues: [\"Incremental\", \"Complete\"],\n },\n },\n debugSetting: {\n serializedName: \"debugSetting\",\n type: {\n name: \"Composite\",\n className: \"DebugSetting\",\n },\n },\n onErrorDeployment: {\n serializedName: \"onErrorDeployment\",\n type: {\n name: \"Composite\",\n className: \"OnErrorDeploymentExtended\",\n },\n },\n templateHash: {\n serializedName: \"templateHash\",\n readOnly: true,\n type: {\n name: \"String\",\n },\n },\n outputResources: {\n serializedName: \"outputResources\",\n readOnly: true,\n type: {\n name: \"Sequence\",\n element: {\n type: {\n name: \"Composite\",\n className: \"ResourceReference\",\n },\n },\n },\n },\n validatedResources: {\n serializedName: \"validatedResources\",\n readOnly: true,\n type: {\n name: \"Sequence\",\n element: {\n type: {\n name: \"Composite\",\n className: \"ResourceReference\",\n },\n },\n },\n },\n error: {\n serializedName: \"error\",\n type: {\n name: \"Composite\",\n className: \"ErrorResponse\",\n },\n },\n diagnostics: {\n serializedName: \"diagnostics\",\n readOnly: true,\n type: {\n name: \"Sequence\",\n element: {\n type: {\n name: \"Composite\",\n className: \"DeploymentDiagnosticsDefinition\",\n },\n },\n },\n },\n validationLevel: {\n serializedName: \"validationLevel\",\n type: {\n name: \"String\",\n },\n },\n },\n },\n};\nexports.Provider = {\n type: {\n name: \"Composite\",\n className: \"Provider\",\n modelProperties: {\n id: {\n serializedName: \"id\",\n readOnly: true,\n type: {\n name: \"String\",\n },\n },\n namespace: {\n serializedName: \"namespace\",\n type: {\n name: \"String\",\n },\n },\n registrationState: {\n serializedName: \"registrationState\",\n readOnly: true,\n type: {\n name: \"String\",\n },\n },\n registrationPolicy: {\n serializedName: \"registrationPolicy\",\n readOnly: true,\n type: {\n name: \"String\",\n },\n },\n resourceTypes: {\n serializedName: \"resourceTypes\",\n readOnly: true,\n type: {\n name: \"Sequence\",\n element: {\n type: {\n name: \"Composite\",\n className: \"ProviderResourceType\",\n },\n },\n },\n },\n providerAuthorizationConsentState: {\n serializedName: \"providerAuthorizationConsentState\",\n type: {\n name: \"String\",\n },\n },\n },\n },\n};\nexports.ProviderResourceType = {\n type: {\n name: \"Composite\",\n className: \"ProviderResourceType\",\n modelProperties: {\n resourceType: {\n serializedName: \"resourceType\",\n type: {\n name: \"String\",\n },\n },\n locations: {\n serializedName: \"locations\",\n type: {\n name: \"Sequence\",\n element: {\n type: {\n name: \"String\",\n },\n },\n },\n },\n locationMappings: {\n serializedName: \"locationMappings\",\n type: {\n name: \"Sequence\",\n element: {\n type: {\n name: \"Composite\",\n className: \"ProviderExtendedLocation\",\n },\n },\n },\n },\n aliases: {\n serializedName: \"aliases\",\n type: {\n name: \"Sequence\",\n element: {\n type: {\n name: \"Composite\",\n className: \"Alias\",\n },\n },\n },\n },\n apiVersions: {\n serializedName: \"apiVersions\",\n type: {\n name: \"Sequence\",\n element: {\n type: {\n name: \"String\",\n },\n },\n },\n },\n defaultApiVersion: {\n serializedName: \"defaultApiVersion\",\n readOnly: true,\n type: {\n name: \"String\",\n },\n },\n zoneMappings: {\n serializedName: \"zoneMappings\",\n type: {\n name: \"Sequence\",\n element: {\n type: {\n name: \"Composite\",\n className: \"ZoneMapping\",\n },\n },\n },\n },\n apiProfiles: {\n serializedName: \"apiProfiles\",\n readOnly: true,\n type: {\n name: \"Sequence\",\n element: {\n type: {\n name: \"Composite\",\n className: \"ApiProfile\",\n },\n },\n },\n },\n capabilities: {\n serializedName: \"capabilities\",\n type: {\n name: \"String\",\n },\n },\n properties: {\n serializedName: \"properties\",\n type: {\n name: \"Dictionary\",\n value: { type: { name: \"String\" } },\n },\n },\n },\n },\n};\nexports.ProviderExtendedLocation = {\n type: {\n name: \"Composite\",\n className: \"ProviderExtendedLocation\",\n modelProperties: {\n location: {\n serializedName: \"location\",\n type: {\n name: \"String\",\n },\n },\n type: {\n serializedName: \"type\",\n type: {\n name: \"String\",\n },\n },\n extendedLocations: {\n serializedName: \"extendedLocations\",\n type: {\n name: \"Sequence\",\n element: {\n type: {\n name: \"String\",\n },\n },\n },\n },\n },\n },\n};\nexports.Alias = {\n type: {\n name: \"Composite\",\n className: \"Alias\",\n modelProperties: {\n name: {\n serializedName: \"name\",\n type: {\n name: \"String\",\n },\n },\n paths: {\n serializedName: \"paths\",\n type: {\n name: \"Sequence\",\n element: {\n type: {\n name: \"Composite\",\n className: \"AliasPath\",\n },\n },\n },\n },\n type: {\n serializedName: \"type\",\n type: {\n name: \"Enum\",\n allowedValues: [\"NotSpecified\", \"PlainText\", \"Mask\"],\n },\n },\n defaultPath: {\n serializedName: \"defaultPath\",\n type: {\n name: \"String\",\n },\n },\n defaultPattern: {\n serializedName: \"defaultPattern\",\n type: {\n name: \"Composite\",\n className: \"AliasPattern\",\n },\n },\n defaultMetadata: {\n serializedName: \"defaultMetadata\",\n type: {\n name: \"Composite\",\n className: \"AliasPathMetadata\",\n },\n },\n },\n },\n};\nexports.AliasPath = {\n type: {\n name: \"Composite\",\n className: \"AliasPath\",\n modelProperties: {\n path: {\n serializedName: \"path\",\n type: {\n name: \"String\",\n },\n },\n apiVersions: {\n serializedName: \"apiVersions\",\n type: {\n name: \"Sequence\",\n element: {\n type: {\n name: \"String\",\n },\n },\n },\n },\n pattern: {\n serializedName: \"pattern\",\n type: {\n name: \"Composite\",\n className: \"AliasPattern\",\n },\n },\n metadata: {\n serializedName: \"metadata\",\n type: {\n name: \"Composite\",\n className: \"AliasPathMetadata\",\n },\n },\n },\n },\n};\nexports.AliasPattern = {\n type: {\n name: \"Composite\",\n className: \"AliasPattern\",\n modelProperties: {\n phrase: {\n serializedName: \"phrase\",\n type: {\n name: \"String\",\n },\n },\n variable: {\n serializedName: \"variable\",\n type: {\n name: \"String\",\n },\n },\n type: {\n serializedName: \"type\",\n type: {\n name: \"Enum\",\n allowedValues: [\"NotSpecified\", \"Extract\"],\n },\n },\n },\n },\n};\nexports.AliasPathMetadata = {\n type: {\n name: \"Composite\",\n className: \"AliasPathMetadata\",\n modelProperties: {\n type: {\n serializedName: \"type\",\n readOnly: true,\n type: {\n name: \"String\",\n },\n },\n attributes: {\n serializedName: \"attributes\",\n readOnly: true,\n type: {\n name: \"String\",\n },\n },\n },\n },\n};\nexports.ZoneMapping = {\n type: {\n name: \"Composite\",\n className: \"ZoneMapping\",\n modelProperties: {\n location: {\n serializedName: \"location\",\n type: {\n name: \"String\",\n },\n },\n zones: {\n serializedName: \"zones\",\n type: {\n name: \"Sequence\",\n element: {\n type: {\n name: \"String\",\n },\n },\n },\n },\n },\n },\n};\nexports.ApiProfile = {\n type: {\n name: \"Composite\",\n className: \"ApiProfile\",\n modelProperties: {\n profileVersion: {\n serializedName: \"profileVersion\",\n readOnly: true,\n type: {\n name: \"String\",\n },\n },\n apiVersion: {\n serializedName: \"apiVersion\",\n readOnly: true,\n type: {\n name: \"String\",\n },\n },\n },\n },\n};\nexports.Dependency = {\n type: {\n name: \"Composite\",\n className: \"Dependency\",\n modelProperties: {\n dependsOn: {\n serializedName: \"dependsOn\",\n type: {\n name: \"Sequence\",\n element: {\n type: {\n name: \"Composite\",\n className: \"BasicDependency\",\n },\n },\n },\n },\n id: {\n serializedName: \"id\",\n type: {\n name: \"String\",\n },\n },\n resourceType: {\n serializedName: \"resourceType\",\n type: {\n name: \"String\",\n },\n },\n resourceName: {\n serializedName: \"resourceName\",\n type: {\n name: \"String\",\n },\n },\n },\n },\n};\nexports.BasicDependency = {\n type: {\n name: \"Composite\",\n className: \"BasicDependency\",\n modelProperties: {\n id: {\n serializedName: \"id\",\n type: {\n name: \"String\",\n },\n },\n resourceType: {\n serializedName: \"resourceType\",\n type: {\n name: \"String\",\n },\n },\n resourceName: {\n serializedName: \"resourceName\",\n type: {\n name: \"String\",\n },\n },\n },\n },\n};\nexports.DeploymentExtensionDefinition = {\n type: {\n name: \"Composite\",\n className: \"DeploymentExtensionDefinition\",\n modelProperties: {\n alias: {\n serializedName: \"alias\",\n readOnly: true,\n type: {\n name: \"String\",\n },\n },\n name: {\n serializedName: \"name\",\n readOnly: true,\n type: {\n name: \"String\",\n },\n },\n version: {\n serializedName: \"version\",\n readOnly: true,\n type: {\n name: \"String\",\n },\n },\n configId: {\n serializedName: \"configId\",\n readOnly: true,\n type: {\n name: \"String\",\n },\n },\n config: {\n serializedName: \"config\",\n readOnly: true,\n type: {\n name: \"Dictionary\",\n value: {\n type: {\n name: \"Composite\",\n className: \"DeploymentExtensionConfigItem\",\n },\n },\n },\n },\n },\n },\n};\nexports.OnErrorDeploymentExtended = {\n type: {\n name: \"Composite\",\n className: \"OnErrorDeploymentExtended\",\n modelProperties: {\n provisioningState: {\n serializedName: \"provisioningState\",\n readOnly: true,\n type: {\n name: \"String\",\n },\n },\n type: {\n serializedName: \"type\",\n type: {\n name: \"Enum\",\n allowedValues: [\"LastSuccessful\", \"SpecificDeployment\"],\n },\n },\n deploymentName: {\n serializedName: \"deploymentName\",\n type: {\n name: \"String\",\n },\n },\n },\n },\n};\nexports.ResourceReference = {\n type: {\n name: \"Composite\",\n className: \"ResourceReference\",\n modelProperties: {\n id: {\n serializedName: \"id\",\n readOnly: true,\n type: {\n name: \"String\",\n },\n },\n extension: {\n serializedName: \"extension\",\n type: {\n name: \"Composite\",\n className: \"DeploymentExtensionDefinition\",\n },\n },\n resourceType: {\n serializedName: \"resourceType\",\n readOnly: true,\n type: {\n name: \"String\",\n },\n },\n identifiers: {\n serializedName: \"identifiers\",\n readOnly: true,\n type: {\n name: \"Dictionary\",\n value: { type: { name: \"any\" } },\n },\n },\n apiVersion: {\n serializedName: \"apiVersion\",\n readOnly: true,\n type: {\n name: \"String\",\n },\n },\n },\n },\n};\nexports.DeploymentDiagnosticsDefinition = {\n type: {\n name: \"Composite\",\n className: \"DeploymentDiagnosticsDefinition\",\n modelProperties: {\n level: {\n serializedName: \"level\",\n required: true,\n readOnly: true,\n type: {\n name: \"String\",\n },\n },\n code: {\n serializedName: \"code\",\n required: true,\n readOnly: true,\n type: {\n name: \"String\",\n },\n },\n message: {\n serializedName: \"message\",\n required: true,\n readOnly: true,\n type: {\n name: \"String\",\n },\n },\n target: {\n serializedName: \"target\",\n readOnly: true,\n type: {\n name: \"String\",\n },\n },\n additionalInfo: {\n serializedName: \"additionalInfo\",\n readOnly: true,\n type: {\n name: \"Sequence\",\n element: {\n type: {\n name: \"Composite\",\n className: \"ErrorAdditionalInfo\",\n },\n },\n },\n },\n },\n },\n};\nexports.DeploymentValidateResult = {\n type: {\n name: \"Composite\",\n className: \"DeploymentValidateResult\",\n modelProperties: {\n error: {\n serializedName: \"error\",\n type: {\n name: \"Composite\",\n className: \"ErrorResponse\",\n },\n },\n id: {\n serializedName: \"id\",\n readOnly: true,\n type: {\n name: \"String\",\n },\n },\n name: {\n serializedName: \"name\",\n readOnly: true,\n type: {\n name: \"String\",\n },\n },\n type: {\n serializedName: \"type\",\n readOnly: true,\n type: {\n name: \"String\",\n },\n },\n properties: {\n serializedName: \"properties\",\n type: {\n name: \"Composite\",\n className: \"DeploymentPropertiesExtended\",\n },\n },\n },\n },\n};\nexports.DeploymentExportResult = {\n type: {\n name: \"Composite\",\n className: \"DeploymentExportResult\",\n modelProperties: {\n template: {\n serializedName: \"template\",\n type: {\n name: \"Dictionary\",\n value: { type: { name: \"any\" } },\n },\n },\n },\n },\n};\nexports.DeploymentListResult = {\n type: {\n name: \"Composite\",\n className: \"DeploymentListResult\",\n modelProperties: {\n value: {\n serializedName: \"value\",\n type: {\n name: \"Sequence\",\n element: {\n type: {\n name: \"Composite\",\n className: \"DeploymentExtended\",\n },\n },\n },\n },\n nextLink: {\n serializedName: \"nextLink\",\n readOnly: true,\n type: {\n name: \"String\",\n },\n },\n },\n },\n};\nexports.ScopedDeployment = {\n type: {\n name: \"Composite\",\n className: \"ScopedDeployment\",\n modelProperties: {\n location: {\n serializedName: \"location\",\n required: true,\n type: {\n name: \"String\",\n },\n },\n properties: {\n serializedName: \"properties\",\n type: {\n name: \"Composite\",\n className: \"DeploymentProperties\",\n },\n },\n tags: {\n serializedName: \"tags\",\n type: {\n name: \"Dictionary\",\n value: { type: { name: \"String\" } },\n },\n },\n },\n },\n};\nexports.ScopedDeploymentWhatIf = {\n type: {\n name: \"Composite\",\n className: \"ScopedDeploymentWhatIf\",\n modelProperties: {\n location: {\n serializedName: \"location\",\n required: true,\n type: {\n name: \"String\",\n },\n },\n properties: {\n serializedName: \"properties\",\n type: {\n name: \"Composite\",\n className: \"DeploymentWhatIfProperties\",\n },\n },\n },\n },\n};\nexports.DeploymentWhatIfSettings = {\n type: {\n name: \"Composite\",\n className: \"DeploymentWhatIfSettings\",\n modelProperties: {\n resultFormat: {\n serializedName: \"resultFormat\",\n type: {\n name: \"Enum\",\n allowedValues: [\"ResourceIdOnly\", \"FullResourcePayloads\"],\n },\n },\n },\n },\n};\nexports.WhatIfOperationResult = {\n type: {\n name: \"Composite\",\n className: \"WhatIfOperationResult\",\n modelProperties: {\n status: {\n serializedName: \"status\",\n type: {\n name: \"String\",\n },\n },\n error: {\n serializedName: \"error\",\n type: {\n name: \"Composite\",\n className: \"ErrorResponse\",\n },\n },\n changes: {\n serializedName: \"properties.changes\",\n type: {\n name: \"Sequence\",\n element: {\n type: {\n name: \"Composite\",\n className: \"WhatIfChange\",\n },\n },\n },\n },\n potentialChanges: {\n serializedName: \"properties.potentialChanges\",\n type: {\n name: \"Sequence\",\n element: {\n type: {\n name: \"Composite\",\n className: \"WhatIfChange\",\n },\n },\n },\n },\n diagnostics: {\n serializedName: \"properties.diagnostics\",\n readOnly: true,\n type: {\n name: \"Sequence\",\n element: {\n type: {\n name: \"Composite\",\n className: \"DeploymentDiagnosticsDefinition\",\n },\n },\n },\n },\n },\n },\n};\nexports.WhatIfChange = {\n type: {\n name: \"Composite\",\n className: \"WhatIfChange\",\n modelProperties: {\n resourceId: {\n serializedName: \"resourceId\",\n type: {\n name: \"String\",\n },\n },\n deploymentId: {\n serializedName: \"deploymentId\",\n type: {\n name: \"String\",\n },\n },\n symbolicName: {\n serializedName: \"symbolicName\",\n type: {\n name: \"String\",\n },\n },\n identifiers: {\n serializedName: \"identifiers\",\n type: {\n name: \"Dictionary\",\n value: { type: { name: \"any\" } },\n },\n },\n changeType: {\n serializedName: \"changeType\",\n required: true,\n type: {\n name: \"Enum\",\n allowedValues: [\n \"Create\",\n \"Delete\",\n \"Ignore\",\n \"Deploy\",\n \"NoChange\",\n \"Modify\",\n \"Unsupported\",\n ],\n },\n },\n unsupportedReason: {\n serializedName: \"unsupportedReason\",\n type: {\n name: \"String\",\n },\n },\n before: {\n serializedName: \"before\",\n type: {\n name: \"Dictionary\",\n value: { type: { name: \"any\" } },\n },\n },\n after: {\n serializedName: \"after\",\n type: {\n name: \"Dictionary\",\n value: { type: { name: \"any\" } },\n },\n },\n delta: {\n serializedName: \"delta\",\n type: {\n name: \"Sequence\",\n element: {\n type: {\n name: \"Composite\",\n className: \"WhatIfPropertyChange\",\n },\n },\n },\n },\n },\n },\n};\nexports.WhatIfPropertyChange = {\n type: {\n name: \"Composite\",\n className: \"WhatIfPropertyChange\",\n modelProperties: {\n path: {\n serializedName: \"path\",\n required: true,\n type: {\n name: \"String\",\n },\n },\n propertyChangeType: {\n serializedName: \"propertyChangeType\",\n required: true,\n type: {\n name: \"Enum\",\n allowedValues: [\"Create\", \"Delete\", \"Modify\", \"Array\", \"NoEffect\"],\n },\n },\n before: {\n serializedName: \"before\",\n type: {\n name: \"Dictionary\",\n value: { type: { name: \"any\" } },\n },\n },\n after: {\n serializedName: \"after\",\n type: {\n name: \"Dictionary\",\n value: { type: { name: \"any\" } },\n },\n },\n children: {\n serializedName: \"children\",\n type: {\n name: \"Sequence\",\n element: {\n type: {\n name: \"Composite\",\n className: \"WhatIfPropertyChange\",\n },\n },\n },\n },\n },\n },\n};\nexports.DeploymentWhatIf = {\n type: {\n name: \"Composite\",\n className: \"DeploymentWhatIf\",\n modelProperties: {\n location: {\n serializedName: \"location\",\n type: {\n name: \"String\",\n },\n },\n properties: {\n serializedName: \"properties\",\n type: {\n name: \"Composite\",\n className: \"DeploymentWhatIfProperties\",\n },\n },\n },\n },\n};\nexports.ProviderPermissionListResult = {\n type: {\n name: \"Composite\",\n className: \"ProviderPermissionListResult\",\n modelProperties: {\n value: {\n serializedName: \"value\",\n type: {\n name: \"Sequence\",\n element: {\n type: {\n name: \"Composite\",\n className: \"ProviderPermission\",\n },\n },\n },\n },\n nextLink: {\n serializedName: \"nextLink\",\n readOnly: true,\n type: {\n name: \"String\",\n },\n },\n },\n },\n};\nexports.ProviderPermission = {\n type: {\n name: \"Composite\",\n className: \"ProviderPermission\",\n modelProperties: {\n applicationId: {\n serializedName: \"applicationId\",\n type: {\n name: \"String\",\n },\n },\n roleDefinition: {\n serializedName: \"roleDefinition\",\n type: {\n name: \"Composite\",\n className: \"RoleDefinition\",\n },\n },\n managedByRoleDefinition: {\n serializedName: \"managedByRoleDefinition\",\n type: {\n name: \"Composite\",\n className: \"RoleDefinition\",\n },\n },\n providerAuthorizationConsentState: {\n serializedName: \"providerAuthorizationConsentState\",\n type: {\n name: \"String\",\n },\n },\n },\n },\n};\nexports.RoleDefinition = {\n type: {\n name: \"Composite\",\n className: \"RoleDefinition\",\n modelProperties: {\n id: {\n serializedName: \"id\",\n type: {\n name: \"String\",\n },\n },\n name: {\n serializedName: \"name\",\n type: {\n name: \"String\",\n },\n },\n isServiceRole: {\n serializedName: \"isServiceRole\",\n type: {\n name: \"Boolean\",\n },\n },\n permissions: {\n serializedName: \"permissions\",\n type: {\n name: \"Sequence\",\n element: {\n type: {\n name: \"Composite\",\n className: \"Permission\",\n },\n },\n },\n },\n scopes: {\n serializedName: \"scopes\",\n type: {\n name: \"Sequence\",\n element: {\n type: {\n name: \"String\",\n },\n },\n },\n },\n },\n },\n};\nexports.Permission = {\n type: {\n name: \"Composite\",\n className: \"Permission\",\n modelProperties: {\n actions: {\n serializedName: \"actions\",\n type: {\n name: \"Sequence\",\n element: {\n type: {\n name: \"String\",\n },\n },\n },\n },\n notActions: {\n serializedName: \"notActions\",\n type: {\n name: \"Sequence\",\n element: {\n type: {\n name: \"String\",\n },\n },\n },\n },\n dataActions: {\n serializedName: \"dataActions\",\n type: {\n name: \"Sequence\",\n element: {\n type: {\n name: \"String\",\n },\n },\n },\n },\n notDataActions: {\n serializedName: \"notDataActions\",\n type: {\n name: \"Sequence\",\n element: {\n type: {\n name: \"String\",\n },\n },\n },\n },\n },\n },\n};\nexports.ProviderRegistrationRequest = {\n type: {\n name: \"Composite\",\n className: \"ProviderRegistrationRequest\",\n modelProperties: {\n thirdPartyProviderConsent: {\n serializedName: \"thirdPartyProviderConsent\",\n type: {\n name: \"Composite\",\n className: \"ProviderConsentDefinition\",\n },\n },\n },\n },\n};\nexports.ProviderConsentDefinition = {\n type: {\n name: \"Composite\",\n className: \"ProviderConsentDefinition\",\n modelProperties: {\n consentToAuthorization: {\n serializedName: \"consentToAuthorization\",\n type: {\n name: \"Boolean\",\n },\n },\n },\n },\n};\nexports.ProviderListResult = {\n type: {\n name: \"Composite\",\n className: \"ProviderListResult\",\n modelProperties: {\n value: {\n serializedName: \"value\",\n type: {\n name: \"Sequence\",\n element: {\n type: {\n name: \"Composite\",\n className: \"Provider\",\n },\n },\n },\n },\n nextLink: {\n serializedName: \"nextLink\",\n readOnly: true,\n type: {\n name: \"String\",\n },\n },\n },\n },\n};\nexports.ProviderResourceTypeListResult = {\n type: {\n name: \"Composite\",\n className: \"ProviderResourceTypeListResult\",\n modelProperties: {\n value: {\n serializedName: \"value\",\n type: {\n name: \"Sequence\",\n element: {\n type: {\n name: \"Composite\",\n className: \"ProviderResourceType\",\n },\n },\n },\n },\n nextLink: {\n serializedName: \"nextLink\",\n readOnly: true,\n type: {\n name: \"String\",\n },\n },\n },\n },\n};\nexports.ResourceListResult = {\n type: {\n name: \"Composite\",\n className: \"ResourceListResult\",\n modelProperties: {\n value: {\n serializedName: \"value\",\n type: {\n name: \"Sequence\",\n element: {\n type: {\n name: \"Composite\",\n className: \"GenericResourceExpanded\",\n },\n },\n },\n },\n nextLink: {\n serializedName: \"nextLink\",\n readOnly: true,\n type: {\n name: \"String\",\n },\n },\n },\n },\n};\nexports.Plan = {\n type: {\n name: \"Composite\",\n className: \"Plan\",\n modelProperties: {\n name: {\n serializedName: \"name\",\n type: {\n name: \"String\",\n },\n },\n publisher: {\n serializedName: \"publisher\",\n type: {\n name: \"String\",\n },\n },\n product: {\n serializedName: \"product\",\n type: {\n name: \"String\",\n },\n },\n promotionCode: {\n serializedName: \"promotionCode\",\n type: {\n name: \"String\",\n },\n },\n version: {\n serializedName: \"version\",\n type: {\n name: \"String\",\n },\n },\n },\n },\n};\nexports.Sku = {\n type: {\n name: \"Composite\",\n className: \"Sku\",\n modelProperties: {\n name: {\n serializedName: \"name\",\n type: {\n name: \"String\",\n },\n },\n tier: {\n serializedName: \"tier\",\n type: {\n name: \"String\",\n },\n },\n size: {\n serializedName: \"size\",\n type: {\n name: \"String\",\n },\n },\n family: {\n serializedName: \"family\",\n type: {\n name: \"String\",\n },\n },\n model: {\n serializedName: \"model\",\n type: {\n name: \"String\",\n },\n },\n capacity: {\n serializedName: \"capacity\",\n type: {\n name: \"Number\",\n },\n },\n },\n },\n};\nexports.Identity = {\n type: {\n name: \"Composite\",\n className: \"Identity\",\n modelProperties: {\n principalId: {\n serializedName: \"principalId\",\n readOnly: true,\n type: {\n name: \"String\",\n },\n },\n tenantId: {\n serializedName: \"tenantId\",\n readOnly: true,\n type: {\n name: \"String\",\n },\n },\n type: {\n serializedName: \"type\",\n type: {\n name: \"Enum\",\n allowedValues: [\n \"SystemAssigned\",\n \"UserAssigned\",\n \"SystemAssigned, UserAssigned\",\n \"None\",\n ],\n },\n },\n userAssignedIdentities: {\n serializedName: \"userAssignedIdentities\",\n type: {\n name: \"Dictionary\",\n value: {\n type: {\n name: \"Composite\",\n className: \"IdentityUserAssignedIdentitiesValue\",\n },\n },\n },\n },\n },\n },\n};\nexports.IdentityUserAssignedIdentitiesValue = {\n type: {\n name: \"Composite\",\n className: \"IdentityUserAssignedIdentitiesValue\",\n modelProperties: {\n principalId: {\n serializedName: \"principalId\",\n readOnly: true,\n type: {\n name: \"String\",\n },\n },\n clientId: {\n serializedName: \"clientId\",\n readOnly: true,\n type: {\n name: \"String\",\n },\n },\n },\n },\n};\nexports.Resource = {\n type: {\n name: \"Composite\",\n className: \"Resource\",\n modelProperties: {\n id: {\n serializedName: \"id\",\n readOnly: true,\n type: {\n name: \"String\",\n },\n },\n name: {\n serializedName: \"name\",\n readOnly: true,\n type: {\n name: \"String\",\n },\n },\n type: {\n serializedName: \"type\",\n readOnly: true,\n type: {\n name: \"String\",\n },\n },\n location: {\n serializedName: \"location\",\n type: {\n name: \"String\",\n },\n },\n extendedLocation: {\n serializedName: \"extendedLocation\",\n type: {\n name: \"Composite\",\n className: \"ExtendedLocation\",\n },\n },\n tags: {\n serializedName: \"tags\",\n type: {\n name: \"Dictionary\",\n value: { type: { name: \"String\" } },\n },\n },\n },\n },\n};\nexports.ExtendedLocation = {\n type: {\n name: \"Composite\",\n className: \"ExtendedLocation\",\n modelProperties: {\n type: {\n serializedName: \"type\",\n type: {\n name: \"String\",\n },\n },\n name: {\n serializedName: \"name\",\n type: {\n name: \"String\",\n },\n },\n },\n },\n};\nexports.ResourceGroup = {\n type: {\n name: \"Composite\",\n className: \"ResourceGroup\",\n modelProperties: {\n id: {\n serializedName: \"id\",\n readOnly: true,\n type: {\n name: \"String\",\n },\n },\n name: {\n serializedName: \"name\",\n readOnly: true,\n type: {\n name: \"String\",\n },\n },\n type: {\n serializedName: \"type\",\n readOnly: true,\n type: {\n name: \"String\",\n },\n },\n properties: {\n serializedName: \"properties\",\n type: {\n name: \"Composite\",\n className: \"ResourceGroupProperties\",\n },\n },\n location: {\n serializedName: \"location\",\n required: true,\n type: {\n name: \"String\",\n },\n },\n managedBy: {\n serializedName: \"managedBy\",\n type: {\n name: \"String\",\n },\n },\n tags: {\n serializedName: \"tags\",\n type: {\n name: \"Dictionary\",\n value: { type: { name: \"String\" } },\n },\n },\n },\n },\n};\nexports.ResourceGroupProperties = {\n type: {\n name: \"Composite\",\n className: \"ResourceGroupProperties\",\n modelProperties: {\n provisioningState: {\n serializedName: \"provisioningState\",\n readOnly: true,\n type: {\n name: \"String\",\n },\n },\n },\n },\n};\nexports.ResourceGroupPatchable = {\n type: {\n name: \"Composite\",\n className: \"ResourceGroupPatchable\",\n modelProperties: {\n name: {\n serializedName: \"name\",\n type: {\n name: \"String\",\n },\n },\n properties: {\n serializedName: \"properties\",\n type: {\n name: \"Composite\",\n className: \"ResourceGroupProperties\",\n },\n },\n managedBy: {\n serializedName: \"managedBy\",\n type: {\n name: \"String\",\n },\n },\n tags: {\n serializedName: \"tags\",\n type: {\n name: \"Dictionary\",\n value: { type: { name: \"String\" } },\n },\n },\n },\n },\n};\nexports.ExportTemplateRequest = {\n type: {\n name: \"Composite\",\n className: \"ExportTemplateRequest\",\n modelProperties: {\n resources: {\n serializedName: \"resources\",\n type: {\n name: \"Sequence\",\n element: {\n type: {\n name: \"String\",\n },\n },\n },\n },\n options: {\n serializedName: \"options\",\n type: {\n name: \"String\",\n },\n },\n outputFormat: {\n serializedName: \"outputFormat\",\n type: {\n name: \"String\",\n },\n },\n },\n },\n};\nexports.ResourceGroupExportResult = {\n type: {\n name: \"Composite\",\n className: \"ResourceGroupExportResult\",\n modelProperties: {\n template: {\n serializedName: \"template\",\n type: {\n name: \"Dictionary\",\n value: { type: { name: \"any\" } },\n },\n },\n output: {\n serializedName: \"output\",\n type: {\n name: \"String\",\n },\n },\n error: {\n serializedName: \"error\",\n type: {\n name: \"Composite\",\n className: \"ErrorResponse\",\n },\n },\n },\n },\n};\nexports.ResourceGroupListResult = {\n type: {\n name: \"Composite\",\n className: \"ResourceGroupListResult\",\n modelProperties: {\n value: {\n serializedName: \"value\",\n type: {\n name: \"Sequence\",\n element: {\n type: {\n name: \"Composite\",\n className: \"ResourceGroup\",\n },\n },\n },\n },\n nextLink: {\n serializedName: \"nextLink\",\n readOnly: true,\n type: {\n name: \"String\",\n },\n },\n },\n },\n};\nexports.ResourcesMoveInfo = {\n type: {\n name: \"Composite\",\n className: \"ResourcesMoveInfo\",\n modelProperties: {\n resources: {\n serializedName: \"resources\",\n type: {\n name: \"Sequence\",\n element: {\n type: {\n name: \"String\",\n },\n },\n },\n },\n targetResourceGroup: {\n serializedName: \"targetResourceGroup\",\n type: {\n name: \"String\",\n },\n },\n },\n },\n};\nexports.TagValue = {\n type: {\n name: \"Composite\",\n className: \"TagValue\",\n modelProperties: {\n id: {\n serializedName: \"id\",\n readOnly: true,\n type: {\n name: \"String\",\n },\n },\n tagValue: {\n serializedName: \"tagValue\",\n type: {\n name: \"String\",\n },\n },\n count: {\n serializedName: \"count\",\n type: {\n name: \"Composite\",\n className: \"TagCount\",\n },\n },\n },\n },\n};\nexports.TagCount = {\n type: {\n name: \"Composite\",\n className: \"TagCount\",\n modelProperties: {\n type: {\n serializedName: \"type\",\n type: {\n name: \"String\",\n },\n },\n value: {\n serializedName: \"value\",\n type: {\n name: \"Number\",\n },\n },\n },\n },\n};\nexports.TagDetails = {\n type: {\n name: \"Composite\",\n className: \"TagDetails\",\n modelProperties: {\n id: {\n serializedName: \"id\",\n readOnly: true,\n type: {\n name: \"String\",\n },\n },\n tagName: {\n serializedName: \"tagName\",\n type: {\n name: \"String\",\n },\n },\n count: {\n serializedName: \"count\",\n type: {\n name: \"Composite\",\n className: \"TagCount\",\n },\n },\n values: {\n serializedName: \"values\",\n type: {\n name: \"Sequence\",\n element: {\n type: {\n name: \"Composite\",\n className: \"TagValue\",\n },\n },\n },\n },\n },\n },\n};\nexports.TagsListResult = {\n type: {\n name: \"Composite\",\n className: \"TagsListResult\",\n modelProperties: {\n value: {\n serializedName: \"value\",\n type: {\n name: \"Sequence\",\n element: {\n type: {\n name: \"Composite\",\n className: \"TagDetails\",\n },\n },\n },\n },\n nextLink: {\n serializedName: \"nextLink\",\n readOnly: true,\n type: {\n name: \"String\",\n },\n },\n },\n },\n};\nexports.DeploymentOperation = {\n type: {\n name: \"Composite\",\n className: \"DeploymentOperation\",\n modelProperties: {\n id: {\n serializedName: \"id\",\n readOnly: true,\n type: {\n name: \"String\",\n },\n },\n operationId: {\n serializedName: \"operationId\",\n readOnly: true,\n type: {\n name: \"String\",\n },\n },\n properties: {\n serializedName: \"properties\",\n type: {\n name: \"Composite\",\n className: \"DeploymentOperationProperties\",\n },\n },\n },\n },\n};\nexports.DeploymentOperationProperties = {\n type: {\n name: \"Composite\",\n className: \"DeploymentOperationProperties\",\n modelProperties: {\n provisioningOperation: {\n serializedName: \"provisioningOperation\",\n readOnly: true,\n type: {\n name: \"Enum\",\n allowedValues: [\n \"NotSpecified\",\n \"Create\",\n \"Delete\",\n \"Waiting\",\n \"AzureAsyncOperationWaiting\",\n \"ResourceCacheWaiting\",\n \"Action\",\n \"Read\",\n \"EvaluateDeploymentOutput\",\n \"DeploymentCleanup\",\n ],\n },\n },\n provisioningState: {\n serializedName: \"provisioningState\",\n readOnly: true,\n type: {\n name: \"String\",\n },\n },\n timestamp: {\n serializedName: \"timestamp\",\n readOnly: true,\n type: {\n name: \"DateTime\",\n },\n },\n duration: {\n serializedName: \"duration\",\n readOnly: true,\n type: {\n name: \"String\",\n },\n },\n serviceRequestId: {\n serializedName: \"serviceRequestId\",\n readOnly: true,\n type: {\n name: \"String\",\n },\n },\n statusCode: {\n serializedName: \"statusCode\",\n readOnly: true,\n type: {\n name: \"String\",\n },\n },\n statusMessage: {\n serializedName: \"statusMessage\",\n type: {\n name: \"Composite\",\n className: \"StatusMessage\",\n },\n },\n targetResource: {\n serializedName: \"targetResource\",\n type: {\n name: \"Composite\",\n className: \"TargetResource\",\n },\n },\n request: {\n serializedName: \"request\",\n type: {\n name: \"Composite\",\n className: \"HttpMessage\",\n },\n },\n response: {\n serializedName: \"response\",\n type: {\n name: \"Composite\",\n className: \"HttpMessage\",\n },\n },\n },\n },\n};\nexports.StatusMessage = {\n type: {\n name: \"Composite\",\n className: \"StatusMessage\",\n modelProperties: {\n status: {\n serializedName: \"status\",\n type: {\n name: \"String\",\n },\n },\n error: {\n serializedName: \"error\",\n type: {\n name: \"Composite\",\n className: \"ErrorResponse\",\n },\n },\n },\n },\n};\nexports.TargetResource = {\n type: {\n name: \"Composite\",\n className: \"TargetResource\",\n modelProperties: {\n id: {\n serializedName: \"id\",\n type: {\n name: \"String\",\n },\n },\n resourceName: {\n serializedName: \"resourceName\",\n type: {\n name: \"String\",\n },\n },\n resourceType: {\n serializedName: \"resourceType\",\n type: {\n name: \"String\",\n },\n },\n extension: {\n serializedName: \"extension\",\n type: {\n name: \"Composite\",\n className: \"DeploymentExtensionDefinition\",\n },\n },\n identifiers: {\n serializedName: \"identifiers\",\n type: {\n name: \"Dictionary\",\n value: { type: { name: \"any\" } },\n },\n },\n apiVersion: {\n serializedName: \"apiVersion\",\n type: {\n name: \"String\",\n },\n },\n symbolicName: {\n serializedName: \"symbolicName\",\n type: {\n name: \"String\",\n },\n },\n },\n },\n};\nexports.HttpMessage = {\n type: {\n name: \"Composite\",\n className: \"HttpMessage\",\n modelProperties: {\n content: {\n serializedName: \"content\",\n type: {\n name: \"Dictionary\",\n value: { type: { name: \"any\" } },\n },\n },\n },\n },\n};\nexports.DeploymentOperationsListResult = {\n type: {\n name: \"Composite\",\n className: \"DeploymentOperationsListResult\",\n modelProperties: {\n value: {\n serializedName: \"value\",\n type: {\n name: \"Sequence\",\n element: {\n type: {\n name: \"Composite\",\n className: \"DeploymentOperation\",\n },\n },\n },\n },\n nextLink: {\n serializedName: \"nextLink\",\n readOnly: true,\n type: {\n name: \"String\",\n },\n },\n },\n },\n};\nexports.TemplateHashResult = {\n type: {\n name: \"Composite\",\n className: \"TemplateHashResult\",\n modelProperties: {\n minifiedTemplate: {\n serializedName: \"minifiedTemplate\",\n type: {\n name: \"String\",\n },\n },\n templateHash: {\n serializedName: \"templateHash\",\n type: {\n name: \"String\",\n },\n },\n },\n },\n};\nexports.TagsResource = {\n type: {\n name: \"Composite\",\n className: \"TagsResource\",\n modelProperties: {\n id: {\n serializedName: \"id\",\n readOnly: true,\n type: {\n name: \"String\",\n },\n },\n name: {\n serializedName: \"name\",\n readOnly: true,\n type: {\n name: \"String\",\n },\n },\n type: {\n serializedName: \"type\",\n readOnly: true,\n type: {\n name: \"String\",\n },\n },\n properties: {\n serializedName: \"properties\",\n type: {\n name: \"Composite\",\n className: \"Tags\",\n },\n },\n },\n },\n};\nexports.Tags = {\n type: {\n name: \"Composite\",\n className: \"Tags\",\n modelProperties: {\n tags: {\n serializedName: \"tags\",\n type: {\n name: \"Dictionary\",\n value: { type: { name: \"String\" } },\n },\n },\n },\n },\n};\nexports.TagsPatchResource = {\n type: {\n name: \"Composite\",\n className: \"TagsPatchResource\",\n modelProperties: {\n operation: {\n serializedName: \"operation\",\n type: {\n name: \"String\",\n },\n },\n properties: {\n serializedName: \"properties\",\n type: {\n name: \"Composite\",\n className: \"Tags\",\n },\n },\n },\n },\n};\nexports.DeploymentExtendedFilter = {\n type: {\n name: \"Composite\",\n className: \"DeploymentExtendedFilter\",\n modelProperties: {\n provisioningState: {\n serializedName: \"provisioningState\",\n type: {\n name: \"String\",\n },\n },\n },\n },\n};\nexports.GenericResourceFilter = {\n type: {\n name: \"Composite\",\n className: \"GenericResourceFilter\",\n modelProperties: {\n resourceType: {\n serializedName: \"resourceType\",\n type: {\n name: \"String\",\n },\n },\n tagname: {\n serializedName: \"tagname\",\n type: {\n name: \"String\",\n },\n },\n tagvalue: {\n serializedName: \"tagvalue\",\n type: {\n name: \"String\",\n },\n },\n },\n },\n};\nexports.ResourceGroupFilter = {\n type: {\n name: \"Composite\",\n className: \"ResourceGroupFilter\",\n modelProperties: {\n tagName: {\n serializedName: \"tagName\",\n type: {\n name: \"String\",\n },\n },\n tagValue: {\n serializedName: \"tagValue\",\n type: {\n name: \"String\",\n },\n },\n },\n },\n};\nexports.ResourceProviderOperationDisplayProperties = {\n type: {\n name: \"Composite\",\n className: \"ResourceProviderOperationDisplayProperties\",\n modelProperties: {\n publisher: {\n serializedName: \"publisher\",\n type: {\n name: \"String\",\n },\n },\n provider: {\n serializedName: \"provider\",\n type: {\n name: \"String\",\n },\n },\n resource: {\n serializedName: \"resource\",\n type: {\n name: \"String\",\n },\n },\n operation: {\n serializedName: \"operation\",\n type: {\n name: \"String\",\n },\n },\n description: {\n serializedName: \"description\",\n type: {\n name: \"String\",\n },\n },\n },\n },\n};\nexports.SubResource = {\n type: {\n name: \"Composite\",\n className: \"SubResource\",\n modelProperties: {\n id: {\n serializedName: \"id\",\n type: {\n name: \"String\",\n },\n },\n },\n },\n};\nexports.DeploymentWhatIfProperties = {\n type: {\n name: \"Composite\",\n className: \"DeploymentWhatIfProperties\",\n modelProperties: Object.assign(Object.assign({}, exports.DeploymentProperties.type.modelProperties), { whatIfSettings: {\n serializedName: \"whatIfSettings\",\n type: {\n name: \"Composite\",\n className: \"DeploymentWhatIfSettings\",\n },\n } }),\n },\n};\nexports.GenericResource = {\n type: {\n name: \"Composite\",\n className: \"GenericResource\",\n modelProperties: Object.assign(Object.assign({}, exports.Resource.type.modelProperties), { plan: {\n serializedName: \"plan\",\n type: {\n name: \"Composite\",\n className: \"Plan\",\n },\n }, properties: {\n serializedName: \"properties\",\n type: {\n name: \"Dictionary\",\n value: { type: { name: \"any\" } },\n },\n }, kind: {\n constraints: {\n Pattern: new RegExp(\"^[-\\\\w\\\\._,\\\\(\\\\)]+$\"),\n },\n serializedName: \"kind\",\n type: {\n name: \"String\",\n },\n }, managedBy: {\n serializedName: \"managedBy\",\n type: {\n name: \"String\",\n },\n }, sku: {\n serializedName: \"sku\",\n type: {\n name: \"Composite\",\n className: \"Sku\",\n },\n }, identity: {\n serializedName: \"identity\",\n type: {\n name: \"Composite\",\n className: \"Identity\",\n },\n } }),\n },\n};\nexports.GenericResourceExpanded = {\n type: {\n name: \"Composite\",\n className: \"GenericResourceExpanded\",\n modelProperties: Object.assign(Object.assign({}, exports.GenericResource.type.modelProperties), { createdTime: {\n serializedName: \"createdTime\",\n readOnly: true,\n type: {\n name: \"DateTime\",\n },\n }, changedTime: {\n serializedName: \"changedTime\",\n readOnly: true,\n type: {\n name: \"DateTime\",\n },\n }, provisioningState: {\n serializedName: \"provisioningState\",\n readOnly: true,\n type: {\n name: \"String\",\n },\n } }),\n },\n};\nexports.DeploymentsWhatIfAtTenantScopeHeaders = {\n type: {\n name: \"Composite\",\n className: \"DeploymentsWhatIfAtTenantScopeHeaders\",\n modelProperties: {\n location: {\n serializedName: \"location\",\n type: {\n name: \"String\",\n },\n },\n retryAfter: {\n serializedName: \"retry-after\",\n type: {\n name: \"String\",\n },\n },\n },\n },\n};\nexports.DeploymentsWhatIfAtManagementGroupScopeHeaders = {\n type: {\n name: \"Composite\",\n className: \"DeploymentsWhatIfAtManagementGroupScopeHeaders\",\n modelProperties: {\n location: {\n serializedName: \"location\",\n type: {\n name: \"String\",\n },\n },\n retryAfter: {\n serializedName: \"retry-after\",\n type: {\n name: \"String\",\n },\n },\n },\n },\n};\nexports.DeploymentsWhatIfAtSubscriptionScopeHeaders = {\n type: {\n name: \"Composite\",\n className: \"DeploymentsWhatIfAtSubscriptionScopeHeaders\",\n modelProperties: {\n location: {\n serializedName: \"location\",\n type: {\n name: \"String\",\n },\n },\n retryAfter: {\n serializedName: \"retry-after\",\n type: {\n name: \"String\",\n },\n },\n },\n },\n};\nexports.DeploymentsWhatIfHeaders = {\n type: {\n name: \"Composite\",\n className: \"DeploymentsWhatIfHeaders\",\n modelProperties: {\n location: {\n serializedName: \"location\",\n type: {\n name: \"String\",\n },\n },\n retryAfter: {\n serializedName: \"retry-after\",\n type: {\n name: \"String\",\n },\n },\n },\n },\n};\nexports.ResourceGroupsDeleteHeaders = {\n type: {\n name: \"Composite\",\n className: \"ResourceGroupsDeleteHeaders\",\n modelProperties: {\n location: {\n serializedName: \"location\",\n type: {\n name: \"String\",\n },\n },\n },\n },\n};\nexports.TagsCreateOrUpdateAtScopeHeaders = {\n type: {\n name: \"Composite\",\n className: \"TagsCreateOrUpdateAtScopeHeaders\",\n modelProperties: {\n location: {\n serializedName: \"location\",\n type: {\n name: \"String\",\n },\n },\n },\n },\n};\nexports.TagsUpdateAtScopeHeaders = {\n type: {\n name: \"Composite\",\n className: \"TagsUpdateAtScopeHeaders\",\n modelProperties: {\n location: {\n serializedName: \"location\",\n type: {\n name: \"String\",\n },\n },\n },\n },\n};\nexports.TagsDeleteAtScopeHeaders = {\n type: {\n name: \"Composite\",\n className: \"TagsDeleteAtScopeHeaders\",\n modelProperties: {\n location: {\n serializedName: \"location\",\n type: {\n name: \"String\",\n },\n },\n },\n },\n};\n//# sourceMappingURL=mappers.js.map","\"use strict\";\n/*\n * Copyright (c) Microsoft Corporation.\n * Licensed under the MIT License.\n *\n * Code generated by Microsoft (R) AutoRest Code Generator.\n * Changes may cause incorrect behavior and will be lost if the code is regenerated.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.operationId = exports.parameters10 = exports.parameters9 = exports.tagValue = exports.tagName = exports.resourceGroupName1 = exports.parameters8 = exports.parameters7 = exports.forceDeletionTypes = exports.parameters6 = exports.resourceId = exports.parameters5 = exports.apiVersion1 = exports.resourceName = exports.resourceType = exports.parentResourcePath = exports.sourceResourceGroupName = exports.parameters4 = exports.expand = exports.properties = exports.resourceProviderNamespace = exports.template = exports.resourceGroupName = exports.parameters3 = exports.subscriptionId = exports.groupId = exports.parameters2 = exports.parameters1 = exports.top = exports.filter = exports.parameters = exports.contentType = exports.deploymentName = exports.scope = exports.nextLink = exports.apiVersion = exports.$host = exports.accept = void 0;\nconst mappers_js_1 = require(\"../models/mappers.js\");\nexports.accept = {\n parameterPath: \"accept\",\n mapper: {\n defaultValue: \"application/json\",\n isConstant: true,\n serializedName: \"Accept\",\n type: {\n name: \"String\",\n },\n },\n};\nexports.$host = {\n parameterPath: \"$host\",\n mapper: {\n serializedName: \"$host\",\n required: true,\n type: {\n name: \"String\",\n },\n },\n skipEncoding: true,\n};\nexports.apiVersion = {\n parameterPath: \"apiVersion\",\n mapper: {\n defaultValue: \"2025-03-01\",\n isConstant: true,\n serializedName: \"api-version\",\n type: {\n name: \"String\",\n },\n },\n};\nexports.nextLink = {\n parameterPath: \"nextLink\",\n mapper: {\n serializedName: \"nextLink\",\n required: true,\n type: {\n name: \"String\",\n },\n },\n skipEncoding: true,\n};\nexports.scope = {\n parameterPath: \"scope\",\n mapper: {\n serializedName: \"scope\",\n required: true,\n type: {\n name: \"String\",\n },\n },\n skipEncoding: true,\n};\nexports.deploymentName = {\n parameterPath: \"deploymentName\",\n mapper: {\n constraints: {\n Pattern: new RegExp(\"^[-\\\\w\\\\._\\\\(\\\\)]+$\"),\n MaxLength: 64,\n MinLength: 1,\n },\n serializedName: \"deploymentName\",\n required: true,\n type: {\n name: \"String\",\n },\n },\n};\nexports.contentType = {\n parameterPath: [\"options\", \"contentType\"],\n mapper: {\n defaultValue: \"application/json\",\n isConstant: true,\n serializedName: \"Content-Type\",\n type: {\n name: \"String\",\n },\n },\n};\nexports.parameters = {\n parameterPath: \"parameters\",\n mapper: mappers_js_1.Deployment,\n};\nexports.filter = {\n parameterPath: [\"options\", \"filter\"],\n mapper: {\n serializedName: \"$filter\",\n type: {\n name: \"String\",\n },\n },\n};\nexports.top = {\n parameterPath: [\"options\", \"top\"],\n mapper: {\n serializedName: \"$top\",\n type: {\n name: \"Number\",\n },\n },\n};\nexports.parameters1 = {\n parameterPath: \"parameters\",\n mapper: mappers_js_1.ScopedDeployment,\n};\nexports.parameters2 = {\n parameterPath: \"parameters\",\n mapper: mappers_js_1.ScopedDeploymentWhatIf,\n};\nexports.groupId = {\n parameterPath: \"groupId\",\n mapper: {\n constraints: {\n MaxLength: 90,\n MinLength: 1,\n },\n serializedName: \"groupId\",\n required: true,\n type: {\n name: \"String\",\n },\n },\n};\nexports.subscriptionId = {\n parameterPath: \"subscriptionId\",\n mapper: {\n serializedName: \"subscriptionId\",\n required: true,\n type: {\n name: \"String\",\n },\n },\n};\nexports.parameters3 = {\n parameterPath: \"parameters\",\n mapper: mappers_js_1.DeploymentWhatIf,\n};\nexports.resourceGroupName = {\n parameterPath: \"resourceGroupName\",\n mapper: {\n constraints: {\n Pattern: new RegExp(\"^[-\\\\w\\\\._\\\\(\\\\)]+$\"),\n MaxLength: 90,\n MinLength: 1,\n },\n serializedName: \"resourceGroupName\",\n required: true,\n type: {\n name: \"String\",\n },\n },\n};\nexports.template = {\n parameterPath: \"template\",\n mapper: {\n serializedName: \"template\",\n required: true,\n type: {\n name: \"Dictionary\",\n value: { type: { name: \"any\" } },\n },\n },\n};\nexports.resourceProviderNamespace = {\n parameterPath: \"resourceProviderNamespace\",\n mapper: {\n serializedName: \"resourceProviderNamespace\",\n required: true,\n type: {\n name: \"String\",\n },\n },\n};\nexports.properties = {\n parameterPath: [\"options\", \"properties\"],\n mapper: mappers_js_1.ProviderRegistrationRequest,\n};\nexports.expand = {\n parameterPath: [\"options\", \"expand\"],\n mapper: {\n serializedName: \"$expand\",\n type: {\n name: \"String\",\n },\n },\n};\nexports.parameters4 = {\n parameterPath: \"parameters\",\n mapper: mappers_js_1.ResourcesMoveInfo,\n};\nexports.sourceResourceGroupName = {\n parameterPath: \"sourceResourceGroupName\",\n mapper: {\n constraints: {\n Pattern: new RegExp(\"^[-\\\\w\\\\._\\\\(\\\\)]+$\"),\n MaxLength: 90,\n MinLength: 1,\n },\n serializedName: \"sourceResourceGroupName\",\n required: true,\n type: {\n name: \"String\",\n },\n },\n};\nexports.parentResourcePath = {\n parameterPath: \"parentResourcePath\",\n mapper: {\n serializedName: \"parentResourcePath\",\n required: true,\n type: {\n name: \"String\",\n },\n },\n skipEncoding: true,\n};\nexports.resourceType = {\n parameterPath: \"resourceType\",\n mapper: {\n serializedName: \"resourceType\",\n required: true,\n type: {\n name: \"String\",\n },\n },\n skipEncoding: true,\n};\nexports.resourceName = {\n parameterPath: \"resourceName\",\n mapper: {\n serializedName: \"resourceName\",\n required: true,\n type: {\n name: \"String\",\n },\n },\n};\nexports.apiVersion1 = {\n parameterPath: \"apiVersion\",\n mapper: {\n serializedName: \"api-version\",\n required: true,\n type: {\n name: \"String\",\n },\n },\n};\nexports.parameters5 = {\n parameterPath: \"parameters\",\n mapper: mappers_js_1.GenericResource,\n};\nexports.resourceId = {\n parameterPath: \"resourceId\",\n mapper: {\n serializedName: \"resourceId\",\n required: true,\n type: {\n name: \"String\",\n },\n },\n skipEncoding: true,\n};\nexports.parameters6 = {\n parameterPath: \"parameters\",\n mapper: mappers_js_1.ResourceGroup,\n};\nexports.forceDeletionTypes = {\n parameterPath: [\"options\", \"forceDeletionTypes\"],\n mapper: {\n serializedName: \"forceDeletionTypes\",\n type: {\n name: \"String\",\n },\n },\n};\nexports.parameters7 = {\n parameterPath: \"parameters\",\n mapper: mappers_js_1.ResourceGroupPatchable,\n};\nexports.parameters8 = {\n parameterPath: \"parameters\",\n mapper: mappers_js_1.ExportTemplateRequest,\n};\nexports.resourceGroupName1 = {\n parameterPath: \"resourceGroupName\",\n mapper: {\n constraints: {\n MaxLength: 90,\n MinLength: 1,\n },\n serializedName: \"resourceGroupName\",\n required: true,\n type: {\n name: \"String\",\n },\n },\n};\nexports.tagName = {\n parameterPath: \"tagName\",\n mapper: {\n serializedName: \"tagName\",\n required: true,\n type: {\n name: \"String\",\n },\n },\n};\nexports.tagValue = {\n parameterPath: \"tagValue\",\n mapper: {\n serializedName: \"tagValue\",\n required: true,\n type: {\n name: \"String\",\n },\n },\n};\nexports.parameters9 = {\n parameterPath: \"parameters\",\n mapper: mappers_js_1.TagsResource,\n};\nexports.parameters10 = {\n parameterPath: \"parameters\",\n mapper: mappers_js_1.TagsPatchResource,\n};\nexports.operationId = {\n parameterPath: \"operationId\",\n mapper: {\n serializedName: \"operationId\",\n required: true,\n type: {\n name: \"String\",\n },\n },\n};\n//# sourceMappingURL=parameters.js.map","\"use strict\";\n/*\n * Copyright (c) Microsoft Corporation.\n * Licensed under the MIT License.\n *\n * Code generated by Microsoft (R) AutoRest Code Generator.\n * Changes may cause incorrect behavior and will be lost if the code is regenerated.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.OperationsImpl = void 0;\nconst tslib_1 = require(\"tslib\");\nconst pagingHelper_js_1 = require(\"../pagingHelper.js\");\nconst coreClient = tslib_1.__importStar(require(\"@azure/core-client\"));\nconst Mappers = tslib_1.__importStar(require(\"../models/mappers.js\"));\nconst Parameters = tslib_1.__importStar(require(\"../models/parameters.js\"));\n/// \n/** Class containing Operations operations. */\nclass OperationsImpl {\n /**\n * Initialize a new instance of the class Operations class.\n * @param client Reference to the service client\n */\n constructor(client) {\n this.client = client;\n }\n /**\n * Lists all of the available Microsoft.Resources REST API operations.\n * @param options The options parameters.\n */\n list(options) {\n const iter = this.listPagingAll(options);\n return {\n next() {\n return iter.next();\n },\n [Symbol.asyncIterator]() {\n return this;\n },\n byPage: (settings) => {\n if (settings === null || settings === void 0 ? void 0 : settings.maxPageSize) {\n throw new Error(\"maxPageSize is not supported by this operation.\");\n }\n return this.listPagingPage(options, settings);\n },\n };\n }\n listPagingPage(options, settings) {\n return tslib_1.__asyncGenerator(this, arguments, function* listPagingPage_1() {\n let result;\n let continuationToken = settings === null || settings === void 0 ? void 0 : settings.continuationToken;\n if (!continuationToken) {\n result = yield tslib_1.__await(this._list(options));\n let page = result.value || [];\n continuationToken = result.nextLink;\n (0, pagingHelper_js_1.setContinuationToken)(page, continuationToken);\n yield yield tslib_1.__await(page);\n }\n while (continuationToken) {\n result = yield tslib_1.__await(this._listNext(continuationToken, options));\n continuationToken = result.nextLink;\n let page = result.value || [];\n (0, pagingHelper_js_1.setContinuationToken)(page, continuationToken);\n yield yield tslib_1.__await(page);\n }\n });\n }\n listPagingAll(options) {\n return tslib_1.__asyncGenerator(this, arguments, function* listPagingAll_1() {\n var _a, e_1, _b, _c;\n try {\n for (var _d = true, _e = tslib_1.__asyncValues(this.listPagingPage(options)), _f; _f = yield tslib_1.__await(_e.next()), _a = _f.done, !_a; _d = true) {\n _c = _f.value;\n _d = false;\n const page = _c;\n yield tslib_1.__await(yield* tslib_1.__asyncDelegator(tslib_1.__asyncValues(page)));\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (!_d && !_a && (_b = _e.return)) yield tslib_1.__await(_b.call(_e));\n }\n finally { if (e_1) throw e_1.error; }\n }\n });\n }\n /**\n * Lists all of the available Microsoft.Resources REST API operations.\n * @param options The options parameters.\n */\n _list(options) {\n return this.client.sendOperationRequest({ options }, listOperationSpec);\n }\n /**\n * ListNext\n * @param nextLink The nextLink from the previous successful call to the List method.\n * @param options The options parameters.\n */\n _listNext(nextLink, options) {\n return this.client.sendOperationRequest({ nextLink, options }, listNextOperationSpec);\n }\n}\nexports.OperationsImpl = OperationsImpl;\n// Operation Specifications\nconst serializer = coreClient.createSerializer(Mappers, /* isXml */ false);\nconst listOperationSpec = {\n path: \"/providers/Microsoft.Resources/operations\",\n httpMethod: \"GET\",\n responses: {\n 200: {\n bodyMapper: Mappers.OperationListResult,\n },\n default: {\n bodyMapper: Mappers.CloudError,\n },\n },\n queryParameters: [Parameters.apiVersion],\n urlParameters: [Parameters.$host],\n headerParameters: [Parameters.accept],\n serializer,\n};\nconst listNextOperationSpec = {\n path: \"{nextLink}\",\n httpMethod: \"GET\",\n responses: {\n 200: {\n bodyMapper: Mappers.OperationListResult,\n },\n default: {\n bodyMapper: Mappers.CloudError,\n },\n },\n urlParameters: [Parameters.$host, Parameters.nextLink],\n headerParameters: [Parameters.accept],\n serializer,\n};\n//# sourceMappingURL=operations.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.logger = void 0;\nconst logger_1 = require(\"@azure/logger\");\n/**\n * The `@azure/logger` configuration for this package.\n * @internal\n */\nexports.logger = (0, logger_1.createClientLogger)(\"core-lro\");\n//# sourceMappingURL=logger.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.terminalStates = exports.POLL_INTERVAL_IN_MS = void 0;\n/**\n * The default time interval to wait before sending the next polling request.\n */\nexports.POLL_INTERVAL_IN_MS = 2000;\n/**\n * The closed set of terminal states.\n */\nexports.terminalStates = [\"succeeded\", \"canceled\", \"failed\"];\n//# sourceMappingURL=constants.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.pollOperation = exports.initOperation = exports.deserializeState = void 0;\nconst logger_js_1 = require(\"../logger.js\");\nconst constants_js_1 = require(\"./constants.js\");\n/**\n * Deserializes the state\n */\nfunction deserializeState(serializedState) {\n try {\n return JSON.parse(serializedState).state;\n }\n catch (e) {\n throw new Error(`Unable to deserialize input state: ${serializedState}`);\n }\n}\nexports.deserializeState = deserializeState;\nfunction setStateError(inputs) {\n const { state, stateProxy, isOperationError } = inputs;\n return (error) => {\n if (isOperationError(error)) {\n stateProxy.setError(state, error);\n stateProxy.setFailed(state);\n }\n throw error;\n };\n}\nfunction appendReadableErrorMessage(currentMessage, innerMessage) {\n let message = currentMessage;\n if (message.slice(-1) !== \".\") {\n message = message + \".\";\n }\n return message + \" \" + innerMessage;\n}\nfunction simplifyError(err) {\n let message = err.message;\n let code = err.code;\n let curErr = err;\n while (curErr.innererror) {\n curErr = curErr.innererror;\n code = curErr.code;\n message = appendReadableErrorMessage(message, curErr.message);\n }\n return {\n code,\n message,\n };\n}\nfunction processOperationStatus(result) {\n const { state, stateProxy, status, isDone, processResult, getError, response, setErrorAsResult } = result;\n switch (status) {\n case \"succeeded\": {\n stateProxy.setSucceeded(state);\n break;\n }\n case \"failed\": {\n const err = getError === null || getError === void 0 ? void 0 : getError(response);\n let postfix = \"\";\n if (err) {\n const { code, message } = simplifyError(err);\n postfix = `. ${code}. ${message}`;\n }\n const errStr = `The long-running operation has failed${postfix}`;\n stateProxy.setError(state, new Error(errStr));\n stateProxy.setFailed(state);\n logger_js_1.logger.warning(errStr);\n break;\n }\n case \"canceled\": {\n stateProxy.setCanceled(state);\n break;\n }\n }\n if ((isDone === null || isDone === void 0 ? void 0 : isDone(response, state)) ||\n (isDone === undefined &&\n [\"succeeded\", \"canceled\"].concat(setErrorAsResult ? [] : [\"failed\"]).includes(status))) {\n stateProxy.setResult(state, buildResult({\n response,\n state,\n processResult,\n }));\n }\n}\nfunction buildResult(inputs) {\n const { processResult, response, state } = inputs;\n return processResult ? processResult(response, state) : response;\n}\n/**\n * Initiates the long-running operation.\n */\nasync function initOperation(inputs) {\n const { init, stateProxy, processResult, getOperationStatus, withOperationLocation, setErrorAsResult, } = inputs;\n const { operationLocation, resourceLocation, metadata, response } = await init();\n if (operationLocation)\n withOperationLocation === null || withOperationLocation === void 0 ? void 0 : withOperationLocation(operationLocation, false);\n const config = {\n metadata,\n operationLocation,\n resourceLocation,\n };\n logger_js_1.logger.verbose(`LRO: Operation description:`, config);\n const state = stateProxy.initState(config);\n const status = getOperationStatus({ response, state, operationLocation });\n processOperationStatus({ state, status, stateProxy, response, setErrorAsResult, processResult });\n return state;\n}\nexports.initOperation = initOperation;\nasync function pollOperationHelper(inputs) {\n const { poll, state, stateProxy, operationLocation, getOperationStatus, getResourceLocation, isOperationError, options, } = inputs;\n const response = await poll(operationLocation, options).catch(setStateError({\n state,\n stateProxy,\n isOperationError,\n }));\n const status = getOperationStatus(response, state);\n logger_js_1.logger.verbose(`LRO: Status:\\n\\tPolling from: ${state.config.operationLocation}\\n\\tOperation status: ${status}\\n\\tPolling status: ${constants_js_1.terminalStates.includes(status) ? \"Stopped\" : \"Running\"}`);\n if (status === \"succeeded\") {\n const resourceLocation = getResourceLocation(response, state);\n if (resourceLocation !== undefined) {\n return {\n response: await poll(resourceLocation).catch(setStateError({ state, stateProxy, isOperationError })),\n status,\n };\n }\n }\n return { response, status };\n}\n/** Polls the long-running operation. */\nasync function pollOperation(inputs) {\n const { poll, state, stateProxy, options, getOperationStatus, getResourceLocation, getOperationLocation, isOperationError, withOperationLocation, getPollingInterval, processResult, getError, updateState, setDelay, isDone, setErrorAsResult, } = inputs;\n const { operationLocation } = state.config;\n if (operationLocation !== undefined) {\n const { response, status } = await pollOperationHelper({\n poll,\n getOperationStatus,\n state,\n stateProxy,\n operationLocation,\n getResourceLocation,\n isOperationError,\n options,\n });\n processOperationStatus({\n status,\n response,\n state,\n stateProxy,\n isDone,\n processResult,\n getError,\n setErrorAsResult,\n });\n if (!constants_js_1.terminalStates.includes(status)) {\n const intervalInMs = getPollingInterval === null || getPollingInterval === void 0 ? void 0 : getPollingInterval(response);\n if (intervalInMs)\n setDelay(intervalInMs);\n const location = getOperationLocation === null || getOperationLocation === void 0 ? void 0 : getOperationLocation(response, state);\n if (location !== undefined) {\n const isUpdated = operationLocation !== location;\n state.config.operationLocation = location;\n withOperationLocation === null || withOperationLocation === void 0 ? void 0 : withOperationLocation(location, isUpdated);\n }\n else\n withOperationLocation === null || withOperationLocation === void 0 ? void 0 : withOperationLocation(operationLocation, false);\n }\n updateState === null || updateState === void 0 ? void 0 : updateState(state, response);\n }\n}\nexports.pollOperation = pollOperation;\n//# sourceMappingURL=operation.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.pollHttpOperation = exports.isOperationError = exports.getResourceLocation = exports.getOperationStatus = exports.getOperationLocation = exports.initHttpOperation = exports.getStatusFromInitialResponse = exports.getErrorFromResponse = exports.parseRetryAfter = exports.inferLroMode = void 0;\nconst operation_js_1 = require(\"../poller/operation.js\");\nconst logger_js_1 = require(\"../logger.js\");\nfunction getOperationLocationPollingUrl(inputs) {\n const { azureAsyncOperation, operationLocation } = inputs;\n return operationLocation !== null && operationLocation !== void 0 ? operationLocation : azureAsyncOperation;\n}\nfunction getLocationHeader(rawResponse) {\n return rawResponse.headers[\"location\"];\n}\nfunction getOperationLocationHeader(rawResponse) {\n return rawResponse.headers[\"operation-location\"];\n}\nfunction getAzureAsyncOperationHeader(rawResponse) {\n return rawResponse.headers[\"azure-asyncoperation\"];\n}\nfunction findResourceLocation(inputs) {\n var _a;\n const { location, requestMethod, requestPath, resourceLocationConfig } = inputs;\n switch (requestMethod) {\n case \"PUT\": {\n return requestPath;\n }\n case \"DELETE\": {\n return undefined;\n }\n case \"PATCH\": {\n return (_a = getDefault()) !== null && _a !== void 0 ? _a : requestPath;\n }\n default: {\n return getDefault();\n }\n }\n function getDefault() {\n switch (resourceLocationConfig) {\n case \"azure-async-operation\": {\n return undefined;\n }\n case \"original-uri\": {\n return requestPath;\n }\n case \"location\":\n default: {\n return location;\n }\n }\n }\n}\nfunction inferLroMode(inputs) {\n const { rawResponse, requestMethod, requestPath, resourceLocationConfig } = inputs;\n const operationLocation = getOperationLocationHeader(rawResponse);\n const azureAsyncOperation = getAzureAsyncOperationHeader(rawResponse);\n const pollingUrl = getOperationLocationPollingUrl({ operationLocation, azureAsyncOperation });\n const location = getLocationHeader(rawResponse);\n const normalizedRequestMethod = requestMethod === null || requestMethod === void 0 ? void 0 : requestMethod.toLocaleUpperCase();\n if (pollingUrl !== undefined) {\n return {\n mode: \"OperationLocation\",\n operationLocation: pollingUrl,\n resourceLocation: findResourceLocation({\n requestMethod: normalizedRequestMethod,\n location,\n requestPath,\n resourceLocationConfig,\n }),\n };\n }\n else if (location !== undefined) {\n return {\n mode: \"ResourceLocation\",\n operationLocation: location,\n };\n }\n else if (normalizedRequestMethod === \"PUT\" && requestPath) {\n return {\n mode: \"Body\",\n operationLocation: requestPath,\n };\n }\n else {\n return undefined;\n }\n}\nexports.inferLroMode = inferLroMode;\nfunction transformStatus(inputs) {\n const { status, statusCode } = inputs;\n if (typeof status !== \"string\" && status !== undefined) {\n throw new Error(`Polling was unsuccessful. Expected status to have a string value or no value but it has instead: ${status}. This doesn't necessarily indicate the operation has failed. Check your Azure subscription or resource status for more information.`);\n }\n switch (status === null || status === void 0 ? void 0 : status.toLocaleLowerCase()) {\n case undefined:\n return toOperationStatus(statusCode);\n case \"succeeded\":\n return \"succeeded\";\n case \"failed\":\n return \"failed\";\n case \"running\":\n case \"accepted\":\n case \"started\":\n case \"canceling\":\n case \"cancelling\":\n return \"running\";\n case \"canceled\":\n case \"cancelled\":\n return \"canceled\";\n default: {\n logger_js_1.logger.verbose(`LRO: unrecognized operation status: ${status}`);\n return status;\n }\n }\n}\nfunction getStatus(rawResponse) {\n var _a;\n const { status } = (_a = rawResponse.body) !== null && _a !== void 0 ? _a : {};\n return transformStatus({ status, statusCode: rawResponse.statusCode });\n}\nfunction getProvisioningState(rawResponse) {\n var _a, _b;\n const { properties, provisioningState } = (_a = rawResponse.body) !== null && _a !== void 0 ? _a : {};\n const status = (_b = properties === null || properties === void 0 ? void 0 : properties.provisioningState) !== null && _b !== void 0 ? _b : provisioningState;\n return transformStatus({ status, statusCode: rawResponse.statusCode });\n}\nfunction toOperationStatus(statusCode) {\n if (statusCode === 202) {\n return \"running\";\n }\n else if (statusCode < 300) {\n return \"succeeded\";\n }\n else {\n return \"failed\";\n }\n}\nfunction parseRetryAfter({ rawResponse }) {\n const retryAfter = rawResponse.headers[\"retry-after\"];\n if (retryAfter !== undefined) {\n // Retry-After header value is either in HTTP date format, or in seconds\n const retryAfterInSeconds = parseInt(retryAfter);\n return isNaN(retryAfterInSeconds)\n ? calculatePollingIntervalFromDate(new Date(retryAfter))\n : retryAfterInSeconds * 1000;\n }\n return undefined;\n}\nexports.parseRetryAfter = parseRetryAfter;\nfunction getErrorFromResponse(response) {\n const error = accessBodyProperty(response, \"error\");\n if (!error) {\n logger_js_1.logger.warning(`The long-running operation failed but there is no error property in the response's body`);\n return;\n }\n if (!error.code || !error.message) {\n logger_js_1.logger.warning(`The long-running operation failed but the error property in the response's body doesn't contain code or message`);\n return;\n }\n return error;\n}\nexports.getErrorFromResponse = getErrorFromResponse;\nfunction calculatePollingIntervalFromDate(retryAfterDate) {\n const timeNow = Math.floor(new Date().getTime());\n const retryAfterTime = retryAfterDate.getTime();\n if (timeNow < retryAfterTime) {\n return retryAfterTime - timeNow;\n }\n return undefined;\n}\nfunction getStatusFromInitialResponse(inputs) {\n const { response, state, operationLocation } = inputs;\n function helper() {\n var _a;\n const mode = (_a = state.config.metadata) === null || _a === void 0 ? void 0 : _a[\"mode\"];\n switch (mode) {\n case undefined:\n return toOperationStatus(response.rawResponse.statusCode);\n case \"Body\":\n return getOperationStatus(response, state);\n default:\n return \"running\";\n }\n }\n const status = helper();\n return status === \"running\" && operationLocation === undefined ? \"succeeded\" : status;\n}\nexports.getStatusFromInitialResponse = getStatusFromInitialResponse;\n/**\n * Initiates the long-running operation.\n */\nasync function initHttpOperation(inputs) {\n const { stateProxy, resourceLocationConfig, processResult, lro, setErrorAsResult } = inputs;\n return (0, operation_js_1.initOperation)({\n init: async () => {\n const response = await lro.sendInitialRequest();\n const config = inferLroMode({\n rawResponse: response.rawResponse,\n requestPath: lro.requestPath,\n requestMethod: lro.requestMethod,\n resourceLocationConfig,\n });\n return Object.assign({ response, operationLocation: config === null || config === void 0 ? void 0 : config.operationLocation, resourceLocation: config === null || config === void 0 ? void 0 : config.resourceLocation }, ((config === null || config === void 0 ? void 0 : config.mode) ? { metadata: { mode: config.mode } } : {}));\n },\n stateProxy,\n processResult: processResult\n ? ({ flatResponse }, state) => processResult(flatResponse, state)\n : ({ flatResponse }) => flatResponse,\n getOperationStatus: getStatusFromInitialResponse,\n setErrorAsResult,\n });\n}\nexports.initHttpOperation = initHttpOperation;\nfunction getOperationLocation({ rawResponse }, state) {\n var _a;\n const mode = (_a = state.config.metadata) === null || _a === void 0 ? void 0 : _a[\"mode\"];\n switch (mode) {\n case \"OperationLocation\": {\n return getOperationLocationPollingUrl({\n operationLocation: getOperationLocationHeader(rawResponse),\n azureAsyncOperation: getAzureAsyncOperationHeader(rawResponse),\n });\n }\n case \"ResourceLocation\": {\n return getLocationHeader(rawResponse);\n }\n case \"Body\":\n default: {\n return undefined;\n }\n }\n}\nexports.getOperationLocation = getOperationLocation;\nfunction getOperationStatus({ rawResponse }, state) {\n var _a;\n const mode = (_a = state.config.metadata) === null || _a === void 0 ? void 0 : _a[\"mode\"];\n switch (mode) {\n case \"OperationLocation\": {\n return getStatus(rawResponse);\n }\n case \"ResourceLocation\": {\n return toOperationStatus(rawResponse.statusCode);\n }\n case \"Body\": {\n return getProvisioningState(rawResponse);\n }\n default:\n throw new Error(`Internal error: Unexpected operation mode: ${mode}`);\n }\n}\nexports.getOperationStatus = getOperationStatus;\nfunction accessBodyProperty({ flatResponse, rawResponse }, prop) {\n var _a, _b;\n return (_a = flatResponse === null || flatResponse === void 0 ? void 0 : flatResponse[prop]) !== null && _a !== void 0 ? _a : (_b = rawResponse.body) === null || _b === void 0 ? void 0 : _b[prop];\n}\nfunction getResourceLocation(res, state) {\n const loc = accessBodyProperty(res, \"resourceLocation\");\n if (loc && typeof loc === \"string\") {\n state.config.resourceLocation = loc;\n }\n return state.config.resourceLocation;\n}\nexports.getResourceLocation = getResourceLocation;\nfunction isOperationError(e) {\n return e.name === \"RestError\";\n}\nexports.isOperationError = isOperationError;\n/** Polls the long-running operation. */\nasync function pollHttpOperation(inputs) {\n const { lro, stateProxy, options, processResult, updateState, setDelay, state, setErrorAsResult, } = inputs;\n return (0, operation_js_1.pollOperation)({\n state,\n stateProxy,\n setDelay,\n processResult: processResult\n ? ({ flatResponse }, inputState) => processResult(flatResponse, inputState)\n : ({ flatResponse }) => flatResponse,\n getError: getErrorFromResponse,\n updateState,\n getPollingInterval: parseRetryAfter,\n getOperationLocation,\n getOperationStatus,\n isOperationError,\n getResourceLocation,\n options,\n /**\n * The expansion here is intentional because `lro` could be an object that\n * references an inner this, so we need to preserve a reference to it.\n */\n poll: async (location, inputOptions) => lro.sendPollRequest(location, inputOptions),\n setErrorAsResult,\n });\n}\nexports.pollHttpOperation = pollHttpOperation;\n//# sourceMappingURL=operation.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.buildCreatePoller = void 0;\nconst operation_js_1 = require(\"./operation.js\");\nconst constants_js_1 = require(\"./constants.js\");\nconst core_util_1 = require(\"@azure/core-util\");\nconst createStateProxy = () => ({\n /**\n * The state at this point is created to be of type OperationState.\n * It will be updated later to be of type TState when the\n * customer-provided callback, `updateState`, is called during polling.\n */\n initState: (config) => ({ status: \"running\", config }),\n setCanceled: (state) => (state.status = \"canceled\"),\n setError: (state, error) => (state.error = error),\n setResult: (state, result) => (state.result = result),\n setRunning: (state) => (state.status = \"running\"),\n setSucceeded: (state) => (state.status = \"succeeded\"),\n setFailed: (state) => (state.status = \"failed\"),\n getError: (state) => state.error,\n getResult: (state) => state.result,\n isCanceled: (state) => state.status === \"canceled\",\n isFailed: (state) => state.status === \"failed\",\n isRunning: (state) => state.status === \"running\",\n isSucceeded: (state) => state.status === \"succeeded\",\n});\n/**\n * Returns a poller factory.\n */\nfunction buildCreatePoller(inputs) {\n const { getOperationLocation, getStatusFromInitialResponse, getStatusFromPollResponse, isOperationError, getResourceLocation, getPollingInterval, getError, resolveOnUnsuccessful, } = inputs;\n return async ({ init, poll }, options) => {\n const { processResult, updateState, withOperationLocation: withOperationLocationCallback, intervalInMs = constants_js_1.POLL_INTERVAL_IN_MS, restoreFrom, } = options || {};\n const stateProxy = createStateProxy();\n const withOperationLocation = withOperationLocationCallback\n ? (() => {\n let called = false;\n return (operationLocation, isUpdated) => {\n if (isUpdated)\n withOperationLocationCallback(operationLocation);\n else if (!called)\n withOperationLocationCallback(operationLocation);\n called = true;\n };\n })()\n : undefined;\n const state = restoreFrom\n ? (0, operation_js_1.deserializeState)(restoreFrom)\n : await (0, operation_js_1.initOperation)({\n init,\n stateProxy,\n processResult,\n getOperationStatus: getStatusFromInitialResponse,\n withOperationLocation,\n setErrorAsResult: !resolveOnUnsuccessful,\n });\n let resultPromise;\n const abortController = new AbortController();\n const handlers = new Map();\n const handleProgressEvents = async () => handlers.forEach((h) => h(state));\n const cancelErrMsg = \"Operation was canceled\";\n let currentPollIntervalInMs = intervalInMs;\n const poller = {\n getOperationState: () => state,\n getResult: () => state.result,\n isDone: () => [\"succeeded\", \"failed\", \"canceled\"].includes(state.status),\n isStopped: () => resultPromise === undefined,\n stopPolling: () => {\n abortController.abort();\n },\n toString: () => JSON.stringify({\n state,\n }),\n onProgress: (callback) => {\n const s = Symbol();\n handlers.set(s, callback);\n return () => handlers.delete(s);\n },\n pollUntilDone: (pollOptions) => (resultPromise !== null && resultPromise !== void 0 ? resultPromise : (resultPromise = (async () => {\n const { abortSignal: inputAbortSignal } = pollOptions || {};\n // In the future we can use AbortSignal.any() instead\n function abortListener() {\n abortController.abort();\n }\n const abortSignal = abortController.signal;\n if (inputAbortSignal === null || inputAbortSignal === void 0 ? void 0 : inputAbortSignal.aborted) {\n abortController.abort();\n }\n else if (!abortSignal.aborted) {\n inputAbortSignal === null || inputAbortSignal === void 0 ? void 0 : inputAbortSignal.addEventListener(\"abort\", abortListener, { once: true });\n }\n try {\n if (!poller.isDone()) {\n await poller.poll({ abortSignal });\n while (!poller.isDone()) {\n await (0, core_util_1.delay)(currentPollIntervalInMs, { abortSignal });\n await poller.poll({ abortSignal });\n }\n }\n }\n finally {\n inputAbortSignal === null || inputAbortSignal === void 0 ? void 0 : inputAbortSignal.removeEventListener(\"abort\", abortListener);\n }\n if (resolveOnUnsuccessful) {\n return poller.getResult();\n }\n else {\n switch (state.status) {\n case \"succeeded\":\n return poller.getResult();\n case \"canceled\":\n throw new Error(cancelErrMsg);\n case \"failed\":\n throw state.error;\n case \"notStarted\":\n case \"running\":\n throw new Error(`Polling completed without succeeding or failing`);\n }\n }\n })().finally(() => {\n resultPromise = undefined;\n }))),\n async poll(pollOptions) {\n if (resolveOnUnsuccessful) {\n if (poller.isDone())\n return;\n }\n else {\n switch (state.status) {\n case \"succeeded\":\n return;\n case \"canceled\":\n throw new Error(cancelErrMsg);\n case \"failed\":\n throw state.error;\n }\n }\n await (0, operation_js_1.pollOperation)({\n poll,\n state,\n stateProxy,\n getOperationLocation,\n isOperationError,\n withOperationLocation,\n getPollingInterval,\n getOperationStatus: getStatusFromPollResponse,\n getResourceLocation,\n processResult,\n getError,\n updateState,\n options: pollOptions,\n setDelay: (pollIntervalInMs) => {\n currentPollIntervalInMs = pollIntervalInMs;\n },\n setErrorAsResult: !resolveOnUnsuccessful,\n });\n await handleProgressEvents();\n if (!resolveOnUnsuccessful) {\n switch (state.status) {\n case \"canceled\":\n throw new Error(cancelErrMsg);\n case \"failed\":\n throw state.error;\n }\n }\n },\n };\n return poller;\n };\n}\nexports.buildCreatePoller = buildCreatePoller;\n//# sourceMappingURL=poller.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.createHttpPoller = void 0;\nconst operation_js_1 = require(\"./operation.js\");\nconst poller_js_1 = require(\"../poller/poller.js\");\n/**\n * Creates a poller that can be used to poll a long-running operation.\n * @param lro - Description of the long-running operation\n * @param options - options to configure the poller\n * @returns an initialized poller\n */\nasync function createHttpPoller(lro, options) {\n const { resourceLocationConfig, intervalInMs, processResult, restoreFrom, updateState, withOperationLocation, resolveOnUnsuccessful = false, } = options || {};\n return (0, poller_js_1.buildCreatePoller)({\n getStatusFromInitialResponse: operation_js_1.getStatusFromInitialResponse,\n getStatusFromPollResponse: operation_js_1.getOperationStatus,\n isOperationError: operation_js_1.isOperationError,\n getOperationLocation: operation_js_1.getOperationLocation,\n getResourceLocation: operation_js_1.getResourceLocation,\n getPollingInterval: operation_js_1.parseRetryAfter,\n getError: operation_js_1.getErrorFromResponse,\n resolveOnUnsuccessful,\n })({\n init: async () => {\n const response = await lro.sendInitialRequest();\n const config = (0, operation_js_1.inferLroMode)({\n rawResponse: response.rawResponse,\n requestPath: lro.requestPath,\n requestMethod: lro.requestMethod,\n resourceLocationConfig,\n });\n return Object.assign({ response, operationLocation: config === null || config === void 0 ? void 0 : config.operationLocation, resourceLocation: config === null || config === void 0 ? void 0 : config.resourceLocation }, ((config === null || config === void 0 ? void 0 : config.mode) ? { metadata: { mode: config.mode } } : {}));\n },\n poll: lro.sendPollRequest,\n }, {\n intervalInMs,\n withOperationLocation,\n restoreFrom,\n updateState,\n processResult: processResult\n ? ({ flatResponse }, state) => processResult(flatResponse, state)\n : ({ flatResponse }) => flatResponse,\n });\n}\nexports.createHttpPoller = createHttpPoller;\n//# sourceMappingURL=poller.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.GenericPollOperation = void 0;\nconst operation_js_1 = require(\"../../http/operation.js\");\nconst logger_js_1 = require(\"../../logger.js\");\nconst createStateProxy = () => ({\n initState: (config) => ({ config, isStarted: true }),\n setCanceled: (state) => (state.isCancelled = true),\n setError: (state, error) => (state.error = error),\n setResult: (state, result) => (state.result = result),\n setRunning: (state) => (state.isStarted = true),\n setSucceeded: (state) => (state.isCompleted = true),\n setFailed: () => {\n /** empty body */\n },\n getError: (state) => state.error,\n getResult: (state) => state.result,\n isCanceled: (state) => !!state.isCancelled,\n isFailed: (state) => !!state.error,\n isRunning: (state) => !!state.isStarted,\n isSucceeded: (state) => Boolean(state.isCompleted && !state.isCancelled && !state.error),\n});\nclass GenericPollOperation {\n constructor(state, lro, setErrorAsResult, lroResourceLocationConfig, processResult, updateState, isDone) {\n this.state = state;\n this.lro = lro;\n this.setErrorAsResult = setErrorAsResult;\n this.lroResourceLocationConfig = lroResourceLocationConfig;\n this.processResult = processResult;\n this.updateState = updateState;\n this.isDone = isDone;\n }\n setPollerConfig(pollerConfig) {\n this.pollerConfig = pollerConfig;\n }\n async update(options) {\n var _a;\n const stateProxy = createStateProxy();\n if (!this.state.isStarted) {\n this.state = Object.assign(Object.assign({}, this.state), (await (0, operation_js_1.initHttpOperation)({\n lro: this.lro,\n stateProxy,\n resourceLocationConfig: this.lroResourceLocationConfig,\n processResult: this.processResult,\n setErrorAsResult: this.setErrorAsResult,\n })));\n }\n const updateState = this.updateState;\n const isDone = this.isDone;\n if (!this.state.isCompleted && this.state.error === undefined) {\n await (0, operation_js_1.pollHttpOperation)({\n lro: this.lro,\n state: this.state,\n stateProxy,\n processResult: this.processResult,\n updateState: updateState\n ? (state, { rawResponse }) => updateState(state, rawResponse)\n : undefined,\n isDone: isDone\n ? ({ flatResponse }, state) => isDone(flatResponse, state)\n : undefined,\n options,\n setDelay: (intervalInMs) => {\n this.pollerConfig.intervalInMs = intervalInMs;\n },\n setErrorAsResult: this.setErrorAsResult,\n });\n }\n (_a = options === null || options === void 0 ? void 0 : options.fireProgress) === null || _a === void 0 ? void 0 : _a.call(options, this.state);\n return this;\n }\n async cancel() {\n logger_js_1.logger.error(\"`cancelOperation` is deprecated because it wasn't implemented\");\n return this;\n }\n /**\n * Serializes the Poller operation.\n */\n toString() {\n return JSON.stringify({\n state: this.state,\n });\n }\n}\nexports.GenericPollOperation = GenericPollOperation;\n//# sourceMappingURL=operation.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Poller = exports.PollerCancelledError = exports.PollerStoppedError = void 0;\n/**\n * When a poller is manually stopped through the `stopPolling` method,\n * the poller will be rejected with an instance of the PollerStoppedError.\n */\nclass PollerStoppedError extends Error {\n constructor(message) {\n super(message);\n this.name = \"PollerStoppedError\";\n Object.setPrototypeOf(this, PollerStoppedError.prototype);\n }\n}\nexports.PollerStoppedError = PollerStoppedError;\n/**\n * When the operation is cancelled, the poller will be rejected with an instance\n * of the PollerCancelledError.\n */\nclass PollerCancelledError extends Error {\n constructor(message) {\n super(message);\n this.name = \"PollerCancelledError\";\n Object.setPrototypeOf(this, PollerCancelledError.prototype);\n }\n}\nexports.PollerCancelledError = PollerCancelledError;\n/**\n * A class that represents the definition of a program that polls through consecutive requests\n * until it reaches a state of completion.\n *\n * A poller can be executed manually, by polling request by request by calling to the `poll()` method repeatedly, until its operation is completed.\n * It also provides a way to wait until the operation completes, by calling `pollUntilDone()` and waiting until the operation finishes.\n * Pollers can also request the cancellation of the ongoing process to whom is providing the underlying long running operation.\n *\n * ```ts\n * const poller = new MyPoller();\n *\n * // Polling just once:\n * await poller.poll();\n *\n * // We can try to cancel the request here, by calling:\n * //\n * // await poller.cancelOperation();\n * //\n *\n * // Getting the final result:\n * const result = await poller.pollUntilDone();\n * ```\n *\n * The Poller is defined by two types, a type representing the state of the poller, which\n * must include a basic set of properties from `PollOperationState`,\n * and a return type defined by `TResult`, which can be anything.\n *\n * The Poller class implements the `PollerLike` interface, which allows poller implementations to avoid having\n * to export the Poller's class directly, and instead only export the already instantiated poller with the PollerLike type.\n *\n * ```ts\n * class Client {\n * public async makePoller: PollerLike {\n * const poller = new MyPoller({});\n * // It might be preferred to return the poller after the first request is made,\n * // so that some information can be obtained right away.\n * await poller.poll();\n * return poller;\n * }\n * }\n *\n * const poller: PollerLike = myClient.makePoller();\n * ```\n *\n * A poller can be created through its constructor, then it can be polled until it's completed.\n * At any point in time, the state of the poller can be obtained without delay through the getOperationState method.\n * At any point in time, the intermediate forms of the result type can be requested without delay.\n * Once the underlying operation is marked as completed, the poller will stop and the final value will be returned.\n *\n * ```ts\n * const poller = myClient.makePoller();\n * const state: MyOperationState = poller.getOperationState();\n *\n * // The intermediate result can be obtained at any time.\n * const result: MyResult | undefined = poller.getResult();\n *\n * // The final result can only be obtained after the poller finishes.\n * const result: MyResult = await poller.pollUntilDone();\n * ```\n *\n */\n// eslint-disable-next-line no-use-before-define\nclass Poller {\n /**\n * A poller needs to be initialized by passing in at least the basic properties of the `PollOperation`.\n *\n * When writing an implementation of a Poller, this implementation needs to deal with the initialization\n * of any custom state beyond the basic definition of the poller. The basic poller assumes that the poller's\n * operation has already been defined, at least its basic properties. The code below shows how to approach\n * the definition of the constructor of a new custom poller.\n *\n * ```ts\n * export class MyPoller extends Poller {\n * constructor({\n * // Anything you might need outside of the basics\n * }) {\n * let state: MyOperationState = {\n * privateProperty: private,\n * publicProperty: public,\n * };\n *\n * const operation = {\n * state,\n * update,\n * cancel,\n * toString\n * }\n *\n * // Sending the operation to the parent's constructor.\n * super(operation);\n *\n * // You can assign more local properties here.\n * }\n * }\n * ```\n *\n * Inside of this constructor, a new promise is created. This will be used to\n * tell the user when the poller finishes (see `pollUntilDone()`). The promise's\n * resolve and reject methods are also used internally to control when to resolve\n * or reject anyone waiting for the poller to finish.\n *\n * The constructor of a custom implementation of a poller is where any serialized version of\n * a previous poller's operation should be deserialized into the operation sent to the\n * base constructor. For example:\n *\n * ```ts\n * export class MyPoller extends Poller {\n * constructor(\n * baseOperation: string | undefined\n * ) {\n * let state: MyOperationState = {};\n * if (baseOperation) {\n * state = {\n * ...JSON.parse(baseOperation).state,\n * ...state\n * };\n * }\n * const operation = {\n * state,\n * // ...\n * }\n * super(operation);\n * }\n * }\n * ```\n *\n * @param operation - Must contain the basic properties of `PollOperation`.\n */\n constructor(operation) {\n /** controls whether to throw an error if the operation failed or was canceled. */\n this.resolveOnUnsuccessful = false;\n this.stopped = true;\n this.pollProgressCallbacks = [];\n this.operation = operation;\n this.promise = new Promise((resolve, reject) => {\n this.resolve = resolve;\n this.reject = reject;\n });\n // This prevents the UnhandledPromiseRejectionWarning in node.js from being thrown.\n // The above warning would get thrown if `poller.poll` is called, it returns an error,\n // and pullUntilDone did not have a .catch or await try/catch on it's return value.\n this.promise.catch(() => {\n /* intentionally blank */\n });\n }\n /**\n * Starts a loop that will break only if the poller is done\n * or if the poller is stopped.\n */\n async startPolling(pollOptions = {}) {\n if (this.stopped) {\n this.stopped = false;\n }\n while (!this.isStopped() && !this.isDone()) {\n await this.poll(pollOptions);\n await this.delay();\n }\n }\n /**\n * pollOnce does one polling, by calling to the update method of the underlying\n * poll operation to make any relevant change effective.\n *\n * It only optionally receives an object with an abortSignal property, from \\@azure/abort-controller's AbortSignalLike.\n *\n * @param options - Optional properties passed to the operation's update method.\n */\n async pollOnce(options = {}) {\n if (!this.isDone()) {\n this.operation = await this.operation.update({\n abortSignal: options.abortSignal,\n fireProgress: this.fireProgress.bind(this),\n });\n }\n this.processUpdatedState();\n }\n /**\n * fireProgress calls the functions passed in via onProgress the method of the poller.\n *\n * It loops over all of the callbacks received from onProgress, and executes them, sending them\n * the current operation state.\n *\n * @param state - The current operation state.\n */\n fireProgress(state) {\n for (const callback of this.pollProgressCallbacks) {\n callback(state);\n }\n }\n /**\n * Invokes the underlying operation's cancel method.\n */\n async cancelOnce(options = {}) {\n this.operation = await this.operation.cancel(options);\n }\n /**\n * Returns a promise that will resolve once a single polling request finishes.\n * It does this by calling the update method of the Poller's operation.\n *\n * It only optionally receives an object with an abortSignal property, from \\@azure/abort-controller's AbortSignalLike.\n *\n * @param options - Optional properties passed to the operation's update method.\n */\n poll(options = {}) {\n if (!this.pollOncePromise) {\n this.pollOncePromise = this.pollOnce(options);\n const clearPollOncePromise = () => {\n this.pollOncePromise = undefined;\n };\n this.pollOncePromise.then(clearPollOncePromise, clearPollOncePromise).catch(this.reject);\n }\n return this.pollOncePromise;\n }\n processUpdatedState() {\n if (this.operation.state.error) {\n this.stopped = true;\n if (!this.resolveOnUnsuccessful) {\n this.reject(this.operation.state.error);\n throw this.operation.state.error;\n }\n }\n if (this.operation.state.isCancelled) {\n this.stopped = true;\n if (!this.resolveOnUnsuccessful) {\n const error = new PollerCancelledError(\"Operation was canceled\");\n this.reject(error);\n throw error;\n }\n }\n if (this.isDone() && this.resolve) {\n // If the poller has finished polling, this means we now have a result.\n // However, it can be the case that TResult is instantiated to void, so\n // we are not expecting a result anyway. To assert that we might not\n // have a result eventually after finishing polling, we cast the result\n // to TResult.\n this.resolve(this.getResult());\n }\n }\n /**\n * Returns a promise that will resolve once the underlying operation is completed.\n */\n async pollUntilDone(pollOptions = {}) {\n if (this.stopped) {\n this.startPolling(pollOptions).catch(this.reject);\n }\n // This is needed because the state could have been updated by\n // `cancelOperation`, e.g. the operation is canceled or an error occurred.\n this.processUpdatedState();\n return this.promise;\n }\n /**\n * Invokes the provided callback after each polling is completed,\n * sending the current state of the poller's operation.\n *\n * It returns a method that can be used to stop receiving updates on the given callback function.\n */\n onProgress(callback) {\n this.pollProgressCallbacks.push(callback);\n return () => {\n this.pollProgressCallbacks = this.pollProgressCallbacks.filter((c) => c !== callback);\n };\n }\n /**\n * Returns true if the poller has finished polling.\n */\n isDone() {\n const state = this.operation.state;\n return Boolean(state.isCompleted || state.isCancelled || state.error);\n }\n /**\n * Stops the poller from continuing to poll.\n */\n stopPolling() {\n if (!this.stopped) {\n this.stopped = true;\n if (this.reject) {\n this.reject(new PollerStoppedError(\"This poller is already stopped\"));\n }\n }\n }\n /**\n * Returns true if the poller is stopped.\n */\n isStopped() {\n return this.stopped;\n }\n /**\n * Attempts to cancel the underlying operation.\n *\n * It only optionally receives an object with an abortSignal property, from \\@azure/abort-controller's AbortSignalLike.\n *\n * If it's called again before it finishes, it will throw an error.\n *\n * @param options - Optional properties passed to the operation's update method.\n */\n cancelOperation(options = {}) {\n if (!this.cancelPromise) {\n this.cancelPromise = this.cancelOnce(options);\n }\n else if (options.abortSignal) {\n throw new Error(\"A cancel request is currently pending\");\n }\n return this.cancelPromise;\n }\n /**\n * Returns the state of the operation.\n *\n * Even though TState will be the same type inside any of the methods of any extension of the Poller class,\n * implementations of the pollers can customize what's shared with the public by writing their own\n * version of the `getOperationState` method, and by defining two types, one representing the internal state of the poller\n * and a public type representing a safe to share subset of the properties of the internal state.\n * Their definition of getOperationState can then return their public type.\n *\n * Example:\n *\n * ```ts\n * // Let's say we have our poller's operation state defined as:\n * interface MyOperationState extends PollOperationState {\n * privateProperty?: string;\n * publicProperty?: string;\n * }\n *\n * // To allow us to have a true separation of public and private state, we have to define another interface:\n * interface PublicState extends PollOperationState {\n * publicProperty?: string;\n * }\n *\n * // Then, we define our Poller as follows:\n * export class MyPoller extends Poller {\n * // ... More content is needed here ...\n *\n * public getOperationState(): PublicState {\n * const state: PublicState = this.operation.state;\n * return {\n * // Properties from PollOperationState\n * isStarted: state.isStarted,\n * isCompleted: state.isCompleted,\n * isCancelled: state.isCancelled,\n * error: state.error,\n * result: state.result,\n *\n * // The only other property needed by PublicState.\n * publicProperty: state.publicProperty\n * }\n * }\n * }\n * ```\n *\n * You can see this in the tests of this repository, go to the file:\n * `../test/utils/testPoller.ts`\n * and look for the getOperationState implementation.\n */\n getOperationState() {\n return this.operation.state;\n }\n /**\n * Returns the result value of the operation,\n * regardless of the state of the poller.\n * It can return undefined or an incomplete form of the final TResult value\n * depending on the implementation.\n */\n getResult() {\n const state = this.operation.state;\n return state.result;\n }\n /**\n * Returns a serialized version of the poller's operation\n * by invoking the operation's toString method.\n */\n toString() {\n return this.operation.toString();\n }\n}\nexports.Poller = Poller;\n//# sourceMappingURL=poller.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.LroEngine = void 0;\nconst operation_js_1 = require(\"./operation.js\");\nconst constants_js_1 = require(\"../../poller/constants.js\");\nconst poller_js_1 = require(\"../poller.js\");\nconst operation_js_2 = require(\"../../poller/operation.js\");\n/**\n * The LRO Engine, a class that performs polling.\n */\nclass LroEngine extends poller_js_1.Poller {\n constructor(lro, options) {\n const { intervalInMs = constants_js_1.POLL_INTERVAL_IN_MS, resumeFrom, resolveOnUnsuccessful = false, isDone, lroResourceLocationConfig, processResult, updateState, } = options || {};\n const state = resumeFrom\n ? (0, operation_js_2.deserializeState)(resumeFrom)\n : {};\n const operation = new operation_js_1.GenericPollOperation(state, lro, !resolveOnUnsuccessful, lroResourceLocationConfig, processResult, updateState, isDone);\n super(operation);\n this.resolveOnUnsuccessful = resolveOnUnsuccessful;\n this.config = { intervalInMs: intervalInMs };\n operation.setPollerConfig(this.config);\n }\n /**\n * The method used by the poller to wait before attempting to update its operation.\n */\n delay() {\n return new Promise((resolve) => setTimeout(() => resolve(), this.config.intervalInMs));\n }\n}\nexports.LroEngine = LroEngine;\n//# sourceMappingURL=lroEngine.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.LroEngine = void 0;\nvar lroEngine_js_1 = require(\"./lroEngine.js\");\nObject.defineProperty(exports, \"LroEngine\", { enumerable: true, get: function () { return lroEngine_js_1.LroEngine; } });\n//# sourceMappingURL=index.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\nObject.defineProperty(exports, \"__esModule\", { value: true });\n//# sourceMappingURL=pollOperation.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.createHttpPoller = void 0;\nconst tslib_1 = require(\"tslib\");\nvar poller_js_1 = require(\"./http/poller.js\");\nObject.defineProperty(exports, \"createHttpPoller\", { enumerable: true, get: function () { return poller_js_1.createHttpPoller; } });\n/**\n * This can be uncommented to expose the protocol-agnostic poller\n */\n// export {\n// BuildCreatePollerOptions,\n// Operation,\n// CreatePollerOptions,\n// OperationConfig,\n// RestorableOperationState,\n// } from \"./poller/models\";\n// export { buildCreatePoller } from \"./poller/poller\";\n/** legacy */\ntslib_1.__exportStar(require(\"./legacy/lroEngine/index.js\"), exports);\ntslib_1.__exportStar(require(\"./legacy/poller.js\"), exports);\ntslib_1.__exportStar(require(\"./legacy/pollOperation.js\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\n/*\n * Copyright (c) Microsoft Corporation.\n * Licensed under the MIT License.\n *\n * Code generated by Microsoft (R) AutoRest Code Generator.\n * Changes may cause incorrect behavior and will be lost if the code is regenerated.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.createLroSpec = createLroSpec;\nconst tslib_1 = require(\"tslib\");\nfunction createLroSpec(inputs) {\n const { args, spec, sendOperationFn } = inputs;\n return {\n requestMethod: spec.httpMethod,\n requestPath: spec.path,\n sendInitialRequest: () => sendOperationFn(args, spec),\n sendPollRequest: (path, options) => {\n const { requestBody } = spec, restSpec = tslib_1.__rest(spec, [\"requestBody\"]);\n return sendOperationFn(args, Object.assign(Object.assign({}, restSpec), { httpMethod: \"GET\", path, abortSignal: options === null || options === void 0 ? void 0 : options.abortSignal }));\n },\n };\n}\n//# sourceMappingURL=lroImpl.js.map","\"use strict\";\n/*\n * Copyright (c) Microsoft Corporation.\n * Licensed under the MIT License.\n *\n * Code generated by Microsoft (R) AutoRest Code Generator.\n * Changes may cause incorrect behavior and will be lost if the code is regenerated.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.DeploymentsImpl = void 0;\nconst tslib_1 = require(\"tslib\");\nconst pagingHelper_js_1 = require(\"../pagingHelper.js\");\nconst coreClient = tslib_1.__importStar(require(\"@azure/core-client\"));\nconst Mappers = tslib_1.__importStar(require(\"../models/mappers.js\"));\nconst Parameters = tslib_1.__importStar(require(\"../models/parameters.js\"));\nconst core_lro_1 = require(\"@azure/core-lro\");\nconst lroImpl_js_1 = require(\"../lroImpl.js\");\n/// \n/** Class containing Deployments operations. */\nclass DeploymentsImpl {\n /**\n * Initialize a new instance of the class Deployments class.\n * @param client Reference to the service client\n */\n constructor(client) {\n this.client = client;\n }\n /**\n * Get all the deployments at the given scope.\n * @param scope The resource scope.\n * @param options The options parameters.\n */\n listAtScope(scope, options) {\n const iter = this.listAtScopePagingAll(scope, options);\n return {\n next() {\n return iter.next();\n },\n [Symbol.asyncIterator]() {\n return this;\n },\n byPage: (settings) => {\n if (settings === null || settings === void 0 ? void 0 : settings.maxPageSize) {\n throw new Error(\"maxPageSize is not supported by this operation.\");\n }\n return this.listAtScopePagingPage(scope, options, settings);\n },\n };\n }\n listAtScopePagingPage(scope, options, settings) {\n return tslib_1.__asyncGenerator(this, arguments, function* listAtScopePagingPage_1() {\n let result;\n let continuationToken = settings === null || settings === void 0 ? void 0 : settings.continuationToken;\n if (!continuationToken) {\n result = yield tslib_1.__await(this._listAtScope(scope, options));\n let page = result.value || [];\n continuationToken = result.nextLink;\n (0, pagingHelper_js_1.setContinuationToken)(page, continuationToken);\n yield yield tslib_1.__await(page);\n }\n while (continuationToken) {\n result = yield tslib_1.__await(this._listAtScopeNext(scope, continuationToken, options));\n continuationToken = result.nextLink;\n let page = result.value || [];\n (0, pagingHelper_js_1.setContinuationToken)(page, continuationToken);\n yield yield tslib_1.__await(page);\n }\n });\n }\n listAtScopePagingAll(scope, options) {\n return tslib_1.__asyncGenerator(this, arguments, function* listAtScopePagingAll_1() {\n var _a, e_1, _b, _c;\n try {\n for (var _d = true, _e = tslib_1.__asyncValues(this.listAtScopePagingPage(scope, options)), _f; _f = yield tslib_1.__await(_e.next()), _a = _f.done, !_a; _d = true) {\n _c = _f.value;\n _d = false;\n const page = _c;\n yield tslib_1.__await(yield* tslib_1.__asyncDelegator(tslib_1.__asyncValues(page)));\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (!_d && !_a && (_b = _e.return)) yield tslib_1.__await(_b.call(_e));\n }\n finally { if (e_1) throw e_1.error; }\n }\n });\n }\n /**\n * Get all the deployments at the tenant scope.\n * @param options The options parameters.\n */\n listAtTenantScope(options) {\n const iter = this.listAtTenantScopePagingAll(options);\n return {\n next() {\n return iter.next();\n },\n [Symbol.asyncIterator]() {\n return this;\n },\n byPage: (settings) => {\n if (settings === null || settings === void 0 ? void 0 : settings.maxPageSize) {\n throw new Error(\"maxPageSize is not supported by this operation.\");\n }\n return this.listAtTenantScopePagingPage(options, settings);\n },\n };\n }\n listAtTenantScopePagingPage(options, settings) {\n return tslib_1.__asyncGenerator(this, arguments, function* listAtTenantScopePagingPage_1() {\n let result;\n let continuationToken = settings === null || settings === void 0 ? void 0 : settings.continuationToken;\n if (!continuationToken) {\n result = yield tslib_1.__await(this._listAtTenantScope(options));\n let page = result.value || [];\n continuationToken = result.nextLink;\n (0, pagingHelper_js_1.setContinuationToken)(page, continuationToken);\n yield yield tslib_1.__await(page);\n }\n while (continuationToken) {\n result = yield tslib_1.__await(this._listAtTenantScopeNext(continuationToken, options));\n continuationToken = result.nextLink;\n let page = result.value || [];\n (0, pagingHelper_js_1.setContinuationToken)(page, continuationToken);\n yield yield tslib_1.__await(page);\n }\n });\n }\n listAtTenantScopePagingAll(options) {\n return tslib_1.__asyncGenerator(this, arguments, function* listAtTenantScopePagingAll_1() {\n var _a, e_2, _b, _c;\n try {\n for (var _d = true, _e = tslib_1.__asyncValues(this.listAtTenantScopePagingPage(options)), _f; _f = yield tslib_1.__await(_e.next()), _a = _f.done, !_a; _d = true) {\n _c = _f.value;\n _d = false;\n const page = _c;\n yield tslib_1.__await(yield* tslib_1.__asyncDelegator(tslib_1.__asyncValues(page)));\n }\n }\n catch (e_2_1) { e_2 = { error: e_2_1 }; }\n finally {\n try {\n if (!_d && !_a && (_b = _e.return)) yield tslib_1.__await(_b.call(_e));\n }\n finally { if (e_2) throw e_2.error; }\n }\n });\n }\n /**\n * Get all the deployments for a management group.\n * @param groupId The management group ID.\n * @param options The options parameters.\n */\n listAtManagementGroupScope(groupId, options) {\n const iter = this.listAtManagementGroupScopePagingAll(groupId, options);\n return {\n next() {\n return iter.next();\n },\n [Symbol.asyncIterator]() {\n return this;\n },\n byPage: (settings) => {\n if (settings === null || settings === void 0 ? void 0 : settings.maxPageSize) {\n throw new Error(\"maxPageSize is not supported by this operation.\");\n }\n return this.listAtManagementGroupScopePagingPage(groupId, options, settings);\n },\n };\n }\n listAtManagementGroupScopePagingPage(groupId, options, settings) {\n return tslib_1.__asyncGenerator(this, arguments, function* listAtManagementGroupScopePagingPage_1() {\n let result;\n let continuationToken = settings === null || settings === void 0 ? void 0 : settings.continuationToken;\n if (!continuationToken) {\n result = yield tslib_1.__await(this._listAtManagementGroupScope(groupId, options));\n let page = result.value || [];\n continuationToken = result.nextLink;\n (0, pagingHelper_js_1.setContinuationToken)(page, continuationToken);\n yield yield tslib_1.__await(page);\n }\n while (continuationToken) {\n result = yield tslib_1.__await(this._listAtManagementGroupScopeNext(groupId, continuationToken, options));\n continuationToken = result.nextLink;\n let page = result.value || [];\n (0, pagingHelper_js_1.setContinuationToken)(page, continuationToken);\n yield yield tslib_1.__await(page);\n }\n });\n }\n listAtManagementGroupScopePagingAll(groupId, options) {\n return tslib_1.__asyncGenerator(this, arguments, function* listAtManagementGroupScopePagingAll_1() {\n var _a, e_3, _b, _c;\n try {\n for (var _d = true, _e = tslib_1.__asyncValues(this.listAtManagementGroupScopePagingPage(groupId, options)), _f; _f = yield tslib_1.__await(_e.next()), _a = _f.done, !_a; _d = true) {\n _c = _f.value;\n _d = false;\n const page = _c;\n yield tslib_1.__await(yield* tslib_1.__asyncDelegator(tslib_1.__asyncValues(page)));\n }\n }\n catch (e_3_1) { e_3 = { error: e_3_1 }; }\n finally {\n try {\n if (!_d && !_a && (_b = _e.return)) yield tslib_1.__await(_b.call(_e));\n }\n finally { if (e_3) throw e_3.error; }\n }\n });\n }\n /**\n * Get all the deployments for a subscription.\n * @param options The options parameters.\n */\n listAtSubscriptionScope(options) {\n const iter = this.listAtSubscriptionScopePagingAll(options);\n return {\n next() {\n return iter.next();\n },\n [Symbol.asyncIterator]() {\n return this;\n },\n byPage: (settings) => {\n if (settings === null || settings === void 0 ? void 0 : settings.maxPageSize) {\n throw new Error(\"maxPageSize is not supported by this operation.\");\n }\n return this.listAtSubscriptionScopePagingPage(options, settings);\n },\n };\n }\n listAtSubscriptionScopePagingPage(options, settings) {\n return tslib_1.__asyncGenerator(this, arguments, function* listAtSubscriptionScopePagingPage_1() {\n let result;\n let continuationToken = settings === null || settings === void 0 ? void 0 : settings.continuationToken;\n if (!continuationToken) {\n result = yield tslib_1.__await(this._listAtSubscriptionScope(options));\n let page = result.value || [];\n continuationToken = result.nextLink;\n (0, pagingHelper_js_1.setContinuationToken)(page, continuationToken);\n yield yield tslib_1.__await(page);\n }\n while (continuationToken) {\n result = yield tslib_1.__await(this._listAtSubscriptionScopeNext(continuationToken, options));\n continuationToken = result.nextLink;\n let page = result.value || [];\n (0, pagingHelper_js_1.setContinuationToken)(page, continuationToken);\n yield yield tslib_1.__await(page);\n }\n });\n }\n listAtSubscriptionScopePagingAll(options) {\n return tslib_1.__asyncGenerator(this, arguments, function* listAtSubscriptionScopePagingAll_1() {\n var _a, e_4, _b, _c;\n try {\n for (var _d = true, _e = tslib_1.__asyncValues(this.listAtSubscriptionScopePagingPage(options)), _f; _f = yield tslib_1.__await(_e.next()), _a = _f.done, !_a; _d = true) {\n _c = _f.value;\n _d = false;\n const page = _c;\n yield tslib_1.__await(yield* tslib_1.__asyncDelegator(tslib_1.__asyncValues(page)));\n }\n }\n catch (e_4_1) { e_4 = { error: e_4_1 }; }\n finally {\n try {\n if (!_d && !_a && (_b = _e.return)) yield tslib_1.__await(_b.call(_e));\n }\n finally { if (e_4) throw e_4.error; }\n }\n });\n }\n /**\n * Get all the deployments for a resource group.\n * @param resourceGroupName The name of the resource group with the deployments to get. The name is\n * case insensitive.\n * @param options The options parameters.\n */\n listByResourceGroup(resourceGroupName, options) {\n const iter = this.listByResourceGroupPagingAll(resourceGroupName, options);\n return {\n next() {\n return iter.next();\n },\n [Symbol.asyncIterator]() {\n return this;\n },\n byPage: (settings) => {\n if (settings === null || settings === void 0 ? void 0 : settings.maxPageSize) {\n throw new Error(\"maxPageSize is not supported by this operation.\");\n }\n return this.listByResourceGroupPagingPage(resourceGroupName, options, settings);\n },\n };\n }\n listByResourceGroupPagingPage(resourceGroupName, options, settings) {\n return tslib_1.__asyncGenerator(this, arguments, function* listByResourceGroupPagingPage_1() {\n let result;\n let continuationToken = settings === null || settings === void 0 ? void 0 : settings.continuationToken;\n if (!continuationToken) {\n result = yield tslib_1.__await(this._listByResourceGroup(resourceGroupName, options));\n let page = result.value || [];\n continuationToken = result.nextLink;\n (0, pagingHelper_js_1.setContinuationToken)(page, continuationToken);\n yield yield tslib_1.__await(page);\n }\n while (continuationToken) {\n result = yield tslib_1.__await(this._listByResourceGroupNext(resourceGroupName, continuationToken, options));\n continuationToken = result.nextLink;\n let page = result.value || [];\n (0, pagingHelper_js_1.setContinuationToken)(page, continuationToken);\n yield yield tslib_1.__await(page);\n }\n });\n }\n listByResourceGroupPagingAll(resourceGroupName, options) {\n return tslib_1.__asyncGenerator(this, arguments, function* listByResourceGroupPagingAll_1() {\n var _a, e_5, _b, _c;\n try {\n for (var _d = true, _e = tslib_1.__asyncValues(this.listByResourceGroupPagingPage(resourceGroupName, options)), _f; _f = yield tslib_1.__await(_e.next()), _a = _f.done, !_a; _d = true) {\n _c = _f.value;\n _d = false;\n const page = _c;\n yield tslib_1.__await(yield* tslib_1.__asyncDelegator(tslib_1.__asyncValues(page)));\n }\n }\n catch (e_5_1) { e_5 = { error: e_5_1 }; }\n finally {\n try {\n if (!_d && !_a && (_b = _e.return)) yield tslib_1.__await(_b.call(_e));\n }\n finally { if (e_5) throw e_5.error; }\n }\n });\n }\n /**\n * A template deployment that is currently running cannot be deleted. Deleting a template deployment\n * removes the associated deployment operations. This is an asynchronous operation that returns a\n * status of 202 until the template deployment is successfully deleted. The Location response header\n * contains the URI that is used to obtain the status of the process. While the process is running, a\n * call to the URI in the Location header returns a status of 202. When the process finishes, the URI\n * in the Location header returns a status of 204 on success. If the asynchronous request failed, the\n * URI in the Location header returns an error-level status code.\n * @param scope The resource scope.\n * @param deploymentName The name of the deployment.\n * @param options The options parameters.\n */\n async beginDeleteAtScope(scope, deploymentName, options) {\n const directSendOperation = async (args, spec) => {\n return this.client.sendOperationRequest(args, spec);\n };\n const sendOperationFn = async (args, spec) => {\n var _a;\n let currentRawResponse = undefined;\n const providedCallback = (_a = args.options) === null || _a === void 0 ? void 0 : _a.onResponse;\n const callback = (rawResponse, flatResponse) => {\n currentRawResponse = rawResponse;\n providedCallback === null || providedCallback === void 0 ? void 0 : providedCallback(rawResponse, flatResponse);\n };\n const updatedArgs = Object.assign(Object.assign({}, args), { options: Object.assign(Object.assign({}, args.options), { onResponse: callback }) });\n const flatResponse = await directSendOperation(updatedArgs, spec);\n return {\n flatResponse,\n rawResponse: {\n statusCode: currentRawResponse.status,\n body: currentRawResponse.parsedBody,\n headers: currentRawResponse.headers.toJSON(),\n },\n };\n };\n const lro = (0, lroImpl_js_1.createLroSpec)({\n sendOperationFn,\n args: { scope, deploymentName, options },\n spec: deleteAtScopeOperationSpec,\n });\n const poller = await (0, core_lro_1.createHttpPoller)(lro, {\n restoreFrom: options === null || options === void 0 ? void 0 : options.resumeFrom,\n intervalInMs: options === null || options === void 0 ? void 0 : options.updateIntervalInMs,\n });\n await poller.poll();\n return poller;\n }\n /**\n * A template deployment that is currently running cannot be deleted. Deleting a template deployment\n * removes the associated deployment operations. This is an asynchronous operation that returns a\n * status of 202 until the template deployment is successfully deleted. The Location response header\n * contains the URI that is used to obtain the status of the process. While the process is running, a\n * call to the URI in the Location header returns a status of 202. When the process finishes, the URI\n * in the Location header returns a status of 204 on success. If the asynchronous request failed, the\n * URI in the Location header returns an error-level status code.\n * @param scope The resource scope.\n * @param deploymentName The name of the deployment.\n * @param options The options parameters.\n */\n async beginDeleteAtScopeAndWait(scope, deploymentName, options) {\n const poller = await this.beginDeleteAtScope(scope, deploymentName, options);\n return poller.pollUntilDone();\n }\n /**\n * Checks whether the deployment exists.\n * @param scope The resource scope.\n * @param deploymentName The name of the deployment.\n * @param options The options parameters.\n */\n checkExistenceAtScope(scope, deploymentName, options) {\n return this.client.sendOperationRequest({ scope, deploymentName, options }, checkExistenceAtScopeOperationSpec);\n }\n /**\n * You can provide the template and parameters directly in the request or link to JSON files.\n * @param scope The resource scope.\n * @param deploymentName The name of the deployment.\n * @param parameters Additional parameters supplied to the operation.\n * @param options The options parameters.\n */\n async beginCreateOrUpdateAtScope(scope, deploymentName, parameters, options) {\n const directSendOperation = async (args, spec) => {\n return this.client.sendOperationRequest(args, spec);\n };\n const sendOperationFn = async (args, spec) => {\n var _a;\n let currentRawResponse = undefined;\n const providedCallback = (_a = args.options) === null || _a === void 0 ? void 0 : _a.onResponse;\n const callback = (rawResponse, flatResponse) => {\n currentRawResponse = rawResponse;\n providedCallback === null || providedCallback === void 0 ? void 0 : providedCallback(rawResponse, flatResponse);\n };\n const updatedArgs = Object.assign(Object.assign({}, args), { options: Object.assign(Object.assign({}, args.options), { onResponse: callback }) });\n const flatResponse = await directSendOperation(updatedArgs, spec);\n return {\n flatResponse,\n rawResponse: {\n statusCode: currentRawResponse.status,\n body: currentRawResponse.parsedBody,\n headers: currentRawResponse.headers.toJSON(),\n },\n };\n };\n const lro = (0, lroImpl_js_1.createLroSpec)({\n sendOperationFn,\n args: { scope, deploymentName, parameters, options },\n spec: createOrUpdateAtScopeOperationSpec,\n });\n const poller = await (0, core_lro_1.createHttpPoller)(lro, {\n restoreFrom: options === null || options === void 0 ? void 0 : options.resumeFrom,\n intervalInMs: options === null || options === void 0 ? void 0 : options.updateIntervalInMs,\n });\n await poller.poll();\n return poller;\n }\n /**\n * You can provide the template and parameters directly in the request or link to JSON files.\n * @param scope The resource scope.\n * @param deploymentName The name of the deployment.\n * @param parameters Additional parameters supplied to the operation.\n * @param options The options parameters.\n */\n async beginCreateOrUpdateAtScopeAndWait(scope, deploymentName, parameters, options) {\n const poller = await this.beginCreateOrUpdateAtScope(scope, deploymentName, parameters, options);\n return poller.pollUntilDone();\n }\n /**\n * Gets a deployment.\n * @param scope The resource scope.\n * @param deploymentName The name of the deployment.\n * @param options The options parameters.\n */\n getAtScope(scope, deploymentName, options) {\n return this.client.sendOperationRequest({ scope, deploymentName, options }, getAtScopeOperationSpec);\n }\n /**\n * You can cancel a deployment only if the provisioningState is Accepted or Running. After the\n * deployment is canceled, the provisioningState is set to Canceled. Canceling a template deployment\n * stops the currently running template deployment and leaves the resources partially deployed.\n * @param scope The resource scope.\n * @param deploymentName The name of the deployment.\n * @param options The options parameters.\n */\n cancelAtScope(scope, deploymentName, options) {\n return this.client.sendOperationRequest({ scope, deploymentName, options }, cancelAtScopeOperationSpec);\n }\n /**\n * Validates whether the specified template is syntactically correct and will be accepted by Azure\n * Resource Manager..\n * @param scope The resource scope.\n * @param deploymentName The name of the deployment.\n * @param parameters Parameters to validate.\n * @param options The options parameters.\n */\n async beginValidateAtScope(scope, deploymentName, parameters, options) {\n const directSendOperation = async (args, spec) => {\n return this.client.sendOperationRequest(args, spec);\n };\n const sendOperationFn = async (args, spec) => {\n var _a;\n let currentRawResponse = undefined;\n const providedCallback = (_a = args.options) === null || _a === void 0 ? void 0 : _a.onResponse;\n const callback = (rawResponse, flatResponse) => {\n currentRawResponse = rawResponse;\n providedCallback === null || providedCallback === void 0 ? void 0 : providedCallback(rawResponse, flatResponse);\n };\n const updatedArgs = Object.assign(Object.assign({}, args), { options: Object.assign(Object.assign({}, args.options), { onResponse: callback }) });\n const flatResponse = await directSendOperation(updatedArgs, spec);\n return {\n flatResponse,\n rawResponse: {\n statusCode: currentRawResponse.status,\n body: currentRawResponse.parsedBody,\n headers: currentRawResponse.headers.toJSON(),\n },\n };\n };\n const lro = (0, lroImpl_js_1.createLroSpec)({\n sendOperationFn,\n args: { scope, deploymentName, parameters, options },\n spec: validateAtScopeOperationSpec,\n });\n const poller = await (0, core_lro_1.createHttpPoller)(lro, {\n restoreFrom: options === null || options === void 0 ? void 0 : options.resumeFrom,\n intervalInMs: options === null || options === void 0 ? void 0 : options.updateIntervalInMs,\n });\n await poller.poll();\n return poller;\n }\n /**\n * Validates whether the specified template is syntactically correct and will be accepted by Azure\n * Resource Manager..\n * @param scope The resource scope.\n * @param deploymentName The name of the deployment.\n * @param parameters Parameters to validate.\n * @param options The options parameters.\n */\n async beginValidateAtScopeAndWait(scope, deploymentName, parameters, options) {\n const poller = await this.beginValidateAtScope(scope, deploymentName, parameters, options);\n return poller.pollUntilDone();\n }\n /**\n * Exports the template used for specified deployment.\n * @param scope The resource scope.\n * @param deploymentName The name of the deployment.\n * @param options The options parameters.\n */\n exportTemplateAtScope(scope, deploymentName, options) {\n return this.client.sendOperationRequest({ scope, deploymentName, options }, exportTemplateAtScopeOperationSpec);\n }\n /**\n * Get all the deployments at the given scope.\n * @param scope The resource scope.\n * @param options The options parameters.\n */\n _listAtScope(scope, options) {\n return this.client.sendOperationRequest({ scope, options }, listAtScopeOperationSpec);\n }\n /**\n * A template deployment that is currently running cannot be deleted. Deleting a template deployment\n * removes the associated deployment operations. This is an asynchronous operation that returns a\n * status of 202 until the template deployment is successfully deleted. The Location response header\n * contains the URI that is used to obtain the status of the process. While the process is running, a\n * call to the URI in the Location header returns a status of 202. When the process finishes, the URI\n * in the Location header returns a status of 204 on success. If the asynchronous request failed, the\n * URI in the Location header returns an error-level status code.\n * @param deploymentName The name of the deployment.\n * @param options The options parameters.\n */\n async beginDeleteAtTenantScope(deploymentName, options) {\n const directSendOperation = async (args, spec) => {\n return this.client.sendOperationRequest(args, spec);\n };\n const sendOperationFn = async (args, spec) => {\n var _a;\n let currentRawResponse = undefined;\n const providedCallback = (_a = args.options) === null || _a === void 0 ? void 0 : _a.onResponse;\n const callback = (rawResponse, flatResponse) => {\n currentRawResponse = rawResponse;\n providedCallback === null || providedCallback === void 0 ? void 0 : providedCallback(rawResponse, flatResponse);\n };\n const updatedArgs = Object.assign(Object.assign({}, args), { options: Object.assign(Object.assign({}, args.options), { onResponse: callback }) });\n const flatResponse = await directSendOperation(updatedArgs, spec);\n return {\n flatResponse,\n rawResponse: {\n statusCode: currentRawResponse.status,\n body: currentRawResponse.parsedBody,\n headers: currentRawResponse.headers.toJSON(),\n },\n };\n };\n const lro = (0, lroImpl_js_1.createLroSpec)({\n sendOperationFn,\n args: { deploymentName, options },\n spec: deleteAtTenantScopeOperationSpec,\n });\n const poller = await (0, core_lro_1.createHttpPoller)(lro, {\n restoreFrom: options === null || options === void 0 ? void 0 : options.resumeFrom,\n intervalInMs: options === null || options === void 0 ? void 0 : options.updateIntervalInMs,\n });\n await poller.poll();\n return poller;\n }\n /**\n * A template deployment that is currently running cannot be deleted. Deleting a template deployment\n * removes the associated deployment operations. This is an asynchronous operation that returns a\n * status of 202 until the template deployment is successfully deleted. The Location response header\n * contains the URI that is used to obtain the status of the process. While the process is running, a\n * call to the URI in the Location header returns a status of 202. When the process finishes, the URI\n * in the Location header returns a status of 204 on success. If the asynchronous request failed, the\n * URI in the Location header returns an error-level status code.\n * @param deploymentName The name of the deployment.\n * @param options The options parameters.\n */\n async beginDeleteAtTenantScopeAndWait(deploymentName, options) {\n const poller = await this.beginDeleteAtTenantScope(deploymentName, options);\n return poller.pollUntilDone();\n }\n /**\n * Checks whether the deployment exists.\n * @param deploymentName The name of the deployment.\n * @param options The options parameters.\n */\n checkExistenceAtTenantScope(deploymentName, options) {\n return this.client.sendOperationRequest({ deploymentName, options }, checkExistenceAtTenantScopeOperationSpec);\n }\n /**\n * You can provide the template and parameters directly in the request or link to JSON files.\n * @param deploymentName The name of the deployment.\n * @param parameters Additional parameters supplied to the operation.\n * @param options The options parameters.\n */\n async beginCreateOrUpdateAtTenantScope(deploymentName, parameters, options) {\n const directSendOperation = async (args, spec) => {\n return this.client.sendOperationRequest(args, spec);\n };\n const sendOperationFn = async (args, spec) => {\n var _a;\n let currentRawResponse = undefined;\n const providedCallback = (_a = args.options) === null || _a === void 0 ? void 0 : _a.onResponse;\n const callback = (rawResponse, flatResponse) => {\n currentRawResponse = rawResponse;\n providedCallback === null || providedCallback === void 0 ? void 0 : providedCallback(rawResponse, flatResponse);\n };\n const updatedArgs = Object.assign(Object.assign({}, args), { options: Object.assign(Object.assign({}, args.options), { onResponse: callback }) });\n const flatResponse = await directSendOperation(updatedArgs, spec);\n return {\n flatResponse,\n rawResponse: {\n statusCode: currentRawResponse.status,\n body: currentRawResponse.parsedBody,\n headers: currentRawResponse.headers.toJSON(),\n },\n };\n };\n const lro = (0, lroImpl_js_1.createLroSpec)({\n sendOperationFn,\n args: { deploymentName, parameters, options },\n spec: createOrUpdateAtTenantScopeOperationSpec,\n });\n const poller = await (0, core_lro_1.createHttpPoller)(lro, {\n restoreFrom: options === null || options === void 0 ? void 0 : options.resumeFrom,\n intervalInMs: options === null || options === void 0 ? void 0 : options.updateIntervalInMs,\n });\n await poller.poll();\n return poller;\n }\n /**\n * You can provide the template and parameters directly in the request or link to JSON files.\n * @param deploymentName The name of the deployment.\n * @param parameters Additional parameters supplied to the operation.\n * @param options The options parameters.\n */\n async beginCreateOrUpdateAtTenantScopeAndWait(deploymentName, parameters, options) {\n const poller = await this.beginCreateOrUpdateAtTenantScope(deploymentName, parameters, options);\n return poller.pollUntilDone();\n }\n /**\n * Gets a deployment.\n * @param deploymentName The name of the deployment.\n * @param options The options parameters.\n */\n getAtTenantScope(deploymentName, options) {\n return this.client.sendOperationRequest({ deploymentName, options }, getAtTenantScopeOperationSpec);\n }\n /**\n * You can cancel a deployment only if the provisioningState is Accepted or Running. After the\n * deployment is canceled, the provisioningState is set to Canceled. Canceling a template deployment\n * stops the currently running template deployment and leaves the resources partially deployed.\n * @param deploymentName The name of the deployment.\n * @param options The options parameters.\n */\n cancelAtTenantScope(deploymentName, options) {\n return this.client.sendOperationRequest({ deploymentName, options }, cancelAtTenantScopeOperationSpec);\n }\n /**\n * Validates whether the specified template is syntactically correct and will be accepted by Azure\n * Resource Manager..\n * @param deploymentName The name of the deployment.\n * @param parameters Parameters to validate.\n * @param options The options parameters.\n */\n async beginValidateAtTenantScope(deploymentName, parameters, options) {\n const directSendOperation = async (args, spec) => {\n return this.client.sendOperationRequest(args, spec);\n };\n const sendOperationFn = async (args, spec) => {\n var _a;\n let currentRawResponse = undefined;\n const providedCallback = (_a = args.options) === null || _a === void 0 ? void 0 : _a.onResponse;\n const callback = (rawResponse, flatResponse) => {\n currentRawResponse = rawResponse;\n providedCallback === null || providedCallback === void 0 ? void 0 : providedCallback(rawResponse, flatResponse);\n };\n const updatedArgs = Object.assign(Object.assign({}, args), { options: Object.assign(Object.assign({}, args.options), { onResponse: callback }) });\n const flatResponse = await directSendOperation(updatedArgs, spec);\n return {\n flatResponse,\n rawResponse: {\n statusCode: currentRawResponse.status,\n body: currentRawResponse.parsedBody,\n headers: currentRawResponse.headers.toJSON(),\n },\n };\n };\n const lro = (0, lroImpl_js_1.createLroSpec)({\n sendOperationFn,\n args: { deploymentName, parameters, options },\n spec: validateAtTenantScopeOperationSpec,\n });\n const poller = await (0, core_lro_1.createHttpPoller)(lro, {\n restoreFrom: options === null || options === void 0 ? void 0 : options.resumeFrom,\n intervalInMs: options === null || options === void 0 ? void 0 : options.updateIntervalInMs,\n });\n await poller.poll();\n return poller;\n }\n /**\n * Validates whether the specified template is syntactically correct and will be accepted by Azure\n * Resource Manager..\n * @param deploymentName The name of the deployment.\n * @param parameters Parameters to validate.\n * @param options The options parameters.\n */\n async beginValidateAtTenantScopeAndWait(deploymentName, parameters, options) {\n const poller = await this.beginValidateAtTenantScope(deploymentName, parameters, options);\n return poller.pollUntilDone();\n }\n /**\n * Returns changes that will be made by the deployment if executed at the scope of the tenant group.\n * @param deploymentName The name of the deployment.\n * @param parameters Parameters to validate.\n * @param options The options parameters.\n */\n async beginWhatIfAtTenantScope(deploymentName, parameters, options) {\n const directSendOperation = async (args, spec) => {\n return this.client.sendOperationRequest(args, spec);\n };\n const sendOperationFn = async (args, spec) => {\n var _a;\n let currentRawResponse = undefined;\n const providedCallback = (_a = args.options) === null || _a === void 0 ? void 0 : _a.onResponse;\n const callback = (rawResponse, flatResponse) => {\n currentRawResponse = rawResponse;\n providedCallback === null || providedCallback === void 0 ? void 0 : providedCallback(rawResponse, flatResponse);\n };\n const updatedArgs = Object.assign(Object.assign({}, args), { options: Object.assign(Object.assign({}, args.options), { onResponse: callback }) });\n const flatResponse = await directSendOperation(updatedArgs, spec);\n return {\n flatResponse,\n rawResponse: {\n statusCode: currentRawResponse.status,\n body: currentRawResponse.parsedBody,\n headers: currentRawResponse.headers.toJSON(),\n },\n };\n };\n const lro = (0, lroImpl_js_1.createLroSpec)({\n sendOperationFn,\n args: { deploymentName, parameters, options },\n spec: whatIfAtTenantScopeOperationSpec,\n });\n const poller = await (0, core_lro_1.createHttpPoller)(lro, {\n restoreFrom: options === null || options === void 0 ? void 0 : options.resumeFrom,\n intervalInMs: options === null || options === void 0 ? void 0 : options.updateIntervalInMs,\n resourceLocationConfig: \"location\",\n });\n await poller.poll();\n return poller;\n }\n /**\n * Returns changes that will be made by the deployment if executed at the scope of the tenant group.\n * @param deploymentName The name of the deployment.\n * @param parameters Parameters to validate.\n * @param options The options parameters.\n */\n async beginWhatIfAtTenantScopeAndWait(deploymentName, parameters, options) {\n const poller = await this.beginWhatIfAtTenantScope(deploymentName, parameters, options);\n return poller.pollUntilDone();\n }\n /**\n * Exports the template used for specified deployment.\n * @param deploymentName The name of the deployment.\n * @param options The options parameters.\n */\n exportTemplateAtTenantScope(deploymentName, options) {\n return this.client.sendOperationRequest({ deploymentName, options }, exportTemplateAtTenantScopeOperationSpec);\n }\n /**\n * Get all the deployments at the tenant scope.\n * @param options The options parameters.\n */\n _listAtTenantScope(options) {\n return this.client.sendOperationRequest({ options }, listAtTenantScopeOperationSpec);\n }\n /**\n * A template deployment that is currently running cannot be deleted. Deleting a template deployment\n * removes the associated deployment operations. This is an asynchronous operation that returns a\n * status of 202 until the template deployment is successfully deleted. The Location response header\n * contains the URI that is used to obtain the status of the process. While the process is running, a\n * call to the URI in the Location header returns a status of 202. When the process finishes, the URI\n * in the Location header returns a status of 204 on success. If the asynchronous request failed, the\n * URI in the Location header returns an error-level status code.\n * @param groupId The management group ID.\n * @param deploymentName The name of the deployment.\n * @param options The options parameters.\n */\n async beginDeleteAtManagementGroupScope(groupId, deploymentName, options) {\n const directSendOperation = async (args, spec) => {\n return this.client.sendOperationRequest(args, spec);\n };\n const sendOperationFn = async (args, spec) => {\n var _a;\n let currentRawResponse = undefined;\n const providedCallback = (_a = args.options) === null || _a === void 0 ? void 0 : _a.onResponse;\n const callback = (rawResponse, flatResponse) => {\n currentRawResponse = rawResponse;\n providedCallback === null || providedCallback === void 0 ? void 0 : providedCallback(rawResponse, flatResponse);\n };\n const updatedArgs = Object.assign(Object.assign({}, args), { options: Object.assign(Object.assign({}, args.options), { onResponse: callback }) });\n const flatResponse = await directSendOperation(updatedArgs, spec);\n return {\n flatResponse,\n rawResponse: {\n statusCode: currentRawResponse.status,\n body: currentRawResponse.parsedBody,\n headers: currentRawResponse.headers.toJSON(),\n },\n };\n };\n const lro = (0, lroImpl_js_1.createLroSpec)({\n sendOperationFn,\n args: { groupId, deploymentName, options },\n spec: deleteAtManagementGroupScopeOperationSpec,\n });\n const poller = await (0, core_lro_1.createHttpPoller)(lro, {\n restoreFrom: options === null || options === void 0 ? void 0 : options.resumeFrom,\n intervalInMs: options === null || options === void 0 ? void 0 : options.updateIntervalInMs,\n });\n await poller.poll();\n return poller;\n }\n /**\n * A template deployment that is currently running cannot be deleted. Deleting a template deployment\n * removes the associated deployment operations. This is an asynchronous operation that returns a\n * status of 202 until the template deployment is successfully deleted. The Location response header\n * contains the URI that is used to obtain the status of the process. While the process is running, a\n * call to the URI in the Location header returns a status of 202. When the process finishes, the URI\n * in the Location header returns a status of 204 on success. If the asynchronous request failed, the\n * URI in the Location header returns an error-level status code.\n * @param groupId The management group ID.\n * @param deploymentName The name of the deployment.\n * @param options The options parameters.\n */\n async beginDeleteAtManagementGroupScopeAndWait(groupId, deploymentName, options) {\n const poller = await this.beginDeleteAtManagementGroupScope(groupId, deploymentName, options);\n return poller.pollUntilDone();\n }\n /**\n * Checks whether the deployment exists.\n * @param groupId The management group ID.\n * @param deploymentName The name of the deployment.\n * @param options The options parameters.\n */\n checkExistenceAtManagementGroupScope(groupId, deploymentName, options) {\n return this.client.sendOperationRequest({ groupId, deploymentName, options }, checkExistenceAtManagementGroupScopeOperationSpec);\n }\n /**\n * You can provide the template and parameters directly in the request or link to JSON files.\n * @param groupId The management group ID.\n * @param deploymentName The name of the deployment.\n * @param parameters Additional parameters supplied to the operation.\n * @param options The options parameters.\n */\n async beginCreateOrUpdateAtManagementGroupScope(groupId, deploymentName, parameters, options) {\n const directSendOperation = async (args, spec) => {\n return this.client.sendOperationRequest(args, spec);\n };\n const sendOperationFn = async (args, spec) => {\n var _a;\n let currentRawResponse = undefined;\n const providedCallback = (_a = args.options) === null || _a === void 0 ? void 0 : _a.onResponse;\n const callback = (rawResponse, flatResponse) => {\n currentRawResponse = rawResponse;\n providedCallback === null || providedCallback === void 0 ? void 0 : providedCallback(rawResponse, flatResponse);\n };\n const updatedArgs = Object.assign(Object.assign({}, args), { options: Object.assign(Object.assign({}, args.options), { onResponse: callback }) });\n const flatResponse = await directSendOperation(updatedArgs, spec);\n return {\n flatResponse,\n rawResponse: {\n statusCode: currentRawResponse.status,\n body: currentRawResponse.parsedBody,\n headers: currentRawResponse.headers.toJSON(),\n },\n };\n };\n const lro = (0, lroImpl_js_1.createLroSpec)({\n sendOperationFn,\n args: { groupId, deploymentName, parameters, options },\n spec: createOrUpdateAtManagementGroupScopeOperationSpec,\n });\n const poller = await (0, core_lro_1.createHttpPoller)(lro, {\n restoreFrom: options === null || options === void 0 ? void 0 : options.resumeFrom,\n intervalInMs: options === null || options === void 0 ? void 0 : options.updateIntervalInMs,\n });\n await poller.poll();\n return poller;\n }\n /**\n * You can provide the template and parameters directly in the request or link to JSON files.\n * @param groupId The management group ID.\n * @param deploymentName The name of the deployment.\n * @param parameters Additional parameters supplied to the operation.\n * @param options The options parameters.\n */\n async beginCreateOrUpdateAtManagementGroupScopeAndWait(groupId, deploymentName, parameters, options) {\n const poller = await this.beginCreateOrUpdateAtManagementGroupScope(groupId, deploymentName, parameters, options);\n return poller.pollUntilDone();\n }\n /**\n * Gets a deployment.\n * @param groupId The management group ID.\n * @param deploymentName The name of the deployment.\n * @param options The options parameters.\n */\n getAtManagementGroupScope(groupId, deploymentName, options) {\n return this.client.sendOperationRequest({ groupId, deploymentName, options }, getAtManagementGroupScopeOperationSpec);\n }\n /**\n * You can cancel a deployment only if the provisioningState is Accepted or Running. After the\n * deployment is canceled, the provisioningState is set to Canceled. Canceling a template deployment\n * stops the currently running template deployment and leaves the resources partially deployed.\n * @param groupId The management group ID.\n * @param deploymentName The name of the deployment.\n * @param options The options parameters.\n */\n cancelAtManagementGroupScope(groupId, deploymentName, options) {\n return this.client.sendOperationRequest({ groupId, deploymentName, options }, cancelAtManagementGroupScopeOperationSpec);\n }\n /**\n * Validates whether the specified template is syntactically correct and will be accepted by Azure\n * Resource Manager..\n * @param groupId The management group ID.\n * @param deploymentName The name of the deployment.\n * @param parameters Parameters to validate.\n * @param options The options parameters.\n */\n async beginValidateAtManagementGroupScope(groupId, deploymentName, parameters, options) {\n const directSendOperation = async (args, spec) => {\n return this.client.sendOperationRequest(args, spec);\n };\n const sendOperationFn = async (args, spec) => {\n var _a;\n let currentRawResponse = undefined;\n const providedCallback = (_a = args.options) === null || _a === void 0 ? void 0 : _a.onResponse;\n const callback = (rawResponse, flatResponse) => {\n currentRawResponse = rawResponse;\n providedCallback === null || providedCallback === void 0 ? void 0 : providedCallback(rawResponse, flatResponse);\n };\n const updatedArgs = Object.assign(Object.assign({}, args), { options: Object.assign(Object.assign({}, args.options), { onResponse: callback }) });\n const flatResponse = await directSendOperation(updatedArgs, spec);\n return {\n flatResponse,\n rawResponse: {\n statusCode: currentRawResponse.status,\n body: currentRawResponse.parsedBody,\n headers: currentRawResponse.headers.toJSON(),\n },\n };\n };\n const lro = (0, lroImpl_js_1.createLroSpec)({\n sendOperationFn,\n args: { groupId, deploymentName, parameters, options },\n spec: validateAtManagementGroupScopeOperationSpec,\n });\n const poller = await (0, core_lro_1.createHttpPoller)(lro, {\n restoreFrom: options === null || options === void 0 ? void 0 : options.resumeFrom,\n intervalInMs: options === null || options === void 0 ? void 0 : options.updateIntervalInMs,\n });\n await poller.poll();\n return poller;\n }\n /**\n * Validates whether the specified template is syntactically correct and will be accepted by Azure\n * Resource Manager..\n * @param groupId The management group ID.\n * @param deploymentName The name of the deployment.\n * @param parameters Parameters to validate.\n * @param options The options parameters.\n */\n async beginValidateAtManagementGroupScopeAndWait(groupId, deploymentName, parameters, options) {\n const poller = await this.beginValidateAtManagementGroupScope(groupId, deploymentName, parameters, options);\n return poller.pollUntilDone();\n }\n /**\n * Returns changes that will be made by the deployment if executed at the scope of the management\n * group.\n * @param groupId The management group ID.\n * @param deploymentName The name of the deployment.\n * @param parameters Parameters to validate.\n * @param options The options parameters.\n */\n async beginWhatIfAtManagementGroupScope(groupId, deploymentName, parameters, options) {\n const directSendOperation = async (args, spec) => {\n return this.client.sendOperationRequest(args, spec);\n };\n const sendOperationFn = async (args, spec) => {\n var _a;\n let currentRawResponse = undefined;\n const providedCallback = (_a = args.options) === null || _a === void 0 ? void 0 : _a.onResponse;\n const callback = (rawResponse, flatResponse) => {\n currentRawResponse = rawResponse;\n providedCallback === null || providedCallback === void 0 ? void 0 : providedCallback(rawResponse, flatResponse);\n };\n const updatedArgs = Object.assign(Object.assign({}, args), { options: Object.assign(Object.assign({}, args.options), { onResponse: callback }) });\n const flatResponse = await directSendOperation(updatedArgs, spec);\n return {\n flatResponse,\n rawResponse: {\n statusCode: currentRawResponse.status,\n body: currentRawResponse.parsedBody,\n headers: currentRawResponse.headers.toJSON(),\n },\n };\n };\n const lro = (0, lroImpl_js_1.createLroSpec)({\n sendOperationFn,\n args: { groupId, deploymentName, parameters, options },\n spec: whatIfAtManagementGroupScopeOperationSpec,\n });\n const poller = await (0, core_lro_1.createHttpPoller)(lro, {\n restoreFrom: options === null || options === void 0 ? void 0 : options.resumeFrom,\n intervalInMs: options === null || options === void 0 ? void 0 : options.updateIntervalInMs,\n resourceLocationConfig: \"location\",\n });\n await poller.poll();\n return poller;\n }\n /**\n * Returns changes that will be made by the deployment if executed at the scope of the management\n * group.\n * @param groupId The management group ID.\n * @param deploymentName The name of the deployment.\n * @param parameters Parameters to validate.\n * @param options The options parameters.\n */\n async beginWhatIfAtManagementGroupScopeAndWait(groupId, deploymentName, parameters, options) {\n const poller = await this.beginWhatIfAtManagementGroupScope(groupId, deploymentName, parameters, options);\n return poller.pollUntilDone();\n }\n /**\n * Exports the template used for specified deployment.\n * @param groupId The management group ID.\n * @param deploymentName The name of the deployment.\n * @param options The options parameters.\n */\n exportTemplateAtManagementGroupScope(groupId, deploymentName, options) {\n return this.client.sendOperationRequest({ groupId, deploymentName, options }, exportTemplateAtManagementGroupScopeOperationSpec);\n }\n /**\n * Get all the deployments for a management group.\n * @param groupId The management group ID.\n * @param options The options parameters.\n */\n _listAtManagementGroupScope(groupId, options) {\n return this.client.sendOperationRequest({ groupId, options }, listAtManagementGroupScopeOperationSpec);\n }\n /**\n * A template deployment that is currently running cannot be deleted. Deleting a template deployment\n * removes the associated deployment operations. This is an asynchronous operation that returns a\n * status of 202 until the template deployment is successfully deleted. The Location response header\n * contains the URI that is used to obtain the status of the process. While the process is running, a\n * call to the URI in the Location header returns a status of 202. When the process finishes, the URI\n * in the Location header returns a status of 204 on success. If the asynchronous request failed, the\n * URI in the Location header returns an error-level status code.\n * @param deploymentName The name of the deployment.\n * @param options The options parameters.\n */\n async beginDeleteAtSubscriptionScope(deploymentName, options) {\n const directSendOperation = async (args, spec) => {\n return this.client.sendOperationRequest(args, spec);\n };\n const sendOperationFn = async (args, spec) => {\n var _a;\n let currentRawResponse = undefined;\n const providedCallback = (_a = args.options) === null || _a === void 0 ? void 0 : _a.onResponse;\n const callback = (rawResponse, flatResponse) => {\n currentRawResponse = rawResponse;\n providedCallback === null || providedCallback === void 0 ? void 0 : providedCallback(rawResponse, flatResponse);\n };\n const updatedArgs = Object.assign(Object.assign({}, args), { options: Object.assign(Object.assign({}, args.options), { onResponse: callback }) });\n const flatResponse = await directSendOperation(updatedArgs, spec);\n return {\n flatResponse,\n rawResponse: {\n statusCode: currentRawResponse.status,\n body: currentRawResponse.parsedBody,\n headers: currentRawResponse.headers.toJSON(),\n },\n };\n };\n const lro = (0, lroImpl_js_1.createLroSpec)({\n sendOperationFn,\n args: { deploymentName, options },\n spec: deleteAtSubscriptionScopeOperationSpec,\n });\n const poller = await (0, core_lro_1.createHttpPoller)(lro, {\n restoreFrom: options === null || options === void 0 ? void 0 : options.resumeFrom,\n intervalInMs: options === null || options === void 0 ? void 0 : options.updateIntervalInMs,\n });\n await poller.poll();\n return poller;\n }\n /**\n * A template deployment that is currently running cannot be deleted. Deleting a template deployment\n * removes the associated deployment operations. This is an asynchronous operation that returns a\n * status of 202 until the template deployment is successfully deleted. The Location response header\n * contains the URI that is used to obtain the status of the process. While the process is running, a\n * call to the URI in the Location header returns a status of 202. When the process finishes, the URI\n * in the Location header returns a status of 204 on success. If the asynchronous request failed, the\n * URI in the Location header returns an error-level status code.\n * @param deploymentName The name of the deployment.\n * @param options The options parameters.\n */\n async beginDeleteAtSubscriptionScopeAndWait(deploymentName, options) {\n const poller = await this.beginDeleteAtSubscriptionScope(deploymentName, options);\n return poller.pollUntilDone();\n }\n /**\n * Checks whether the deployment exists.\n * @param deploymentName The name of the deployment.\n * @param options The options parameters.\n */\n checkExistenceAtSubscriptionScope(deploymentName, options) {\n return this.client.sendOperationRequest({ deploymentName, options }, checkExistenceAtSubscriptionScopeOperationSpec);\n }\n /**\n * You can provide the template and parameters directly in the request or link to JSON files.\n * @param deploymentName The name of the deployment.\n * @param parameters Additional parameters supplied to the operation.\n * @param options The options parameters.\n */\n async beginCreateOrUpdateAtSubscriptionScope(deploymentName, parameters, options) {\n const directSendOperation = async (args, spec) => {\n return this.client.sendOperationRequest(args, spec);\n };\n const sendOperationFn = async (args, spec) => {\n var _a;\n let currentRawResponse = undefined;\n const providedCallback = (_a = args.options) === null || _a === void 0 ? void 0 : _a.onResponse;\n const callback = (rawResponse, flatResponse) => {\n currentRawResponse = rawResponse;\n providedCallback === null || providedCallback === void 0 ? void 0 : providedCallback(rawResponse, flatResponse);\n };\n const updatedArgs = Object.assign(Object.assign({}, args), { options: Object.assign(Object.assign({}, args.options), { onResponse: callback }) });\n const flatResponse = await directSendOperation(updatedArgs, spec);\n return {\n flatResponse,\n rawResponse: {\n statusCode: currentRawResponse.status,\n body: currentRawResponse.parsedBody,\n headers: currentRawResponse.headers.toJSON(),\n },\n };\n };\n const lro = (0, lroImpl_js_1.createLroSpec)({\n sendOperationFn,\n args: { deploymentName, parameters, options },\n spec: createOrUpdateAtSubscriptionScopeOperationSpec,\n });\n const poller = await (0, core_lro_1.createHttpPoller)(lro, {\n restoreFrom: options === null || options === void 0 ? void 0 : options.resumeFrom,\n intervalInMs: options === null || options === void 0 ? void 0 : options.updateIntervalInMs,\n });\n await poller.poll();\n return poller;\n }\n /**\n * You can provide the template and parameters directly in the request or link to JSON files.\n * @param deploymentName The name of the deployment.\n * @param parameters Additional parameters supplied to the operation.\n * @param options The options parameters.\n */\n async beginCreateOrUpdateAtSubscriptionScopeAndWait(deploymentName, parameters, options) {\n const poller = await this.beginCreateOrUpdateAtSubscriptionScope(deploymentName, parameters, options);\n return poller.pollUntilDone();\n }\n /**\n * Gets a deployment.\n * @param deploymentName The name of the deployment.\n * @param options The options parameters.\n */\n getAtSubscriptionScope(deploymentName, options) {\n return this.client.sendOperationRequest({ deploymentName, options }, getAtSubscriptionScopeOperationSpec);\n }\n /**\n * You can cancel a deployment only if the provisioningState is Accepted or Running. After the\n * deployment is canceled, the provisioningState is set to Canceled. Canceling a template deployment\n * stops the currently running template deployment and leaves the resources partially deployed.\n * @param deploymentName The name of the deployment.\n * @param options The options parameters.\n */\n cancelAtSubscriptionScope(deploymentName, options) {\n return this.client.sendOperationRequest({ deploymentName, options }, cancelAtSubscriptionScopeOperationSpec);\n }\n /**\n * Validates whether the specified template is syntactically correct and will be accepted by Azure\n * Resource Manager..\n * @param deploymentName The name of the deployment.\n * @param parameters Parameters to validate.\n * @param options The options parameters.\n */\n async beginValidateAtSubscriptionScope(deploymentName, parameters, options) {\n const directSendOperation = async (args, spec) => {\n return this.client.sendOperationRequest(args, spec);\n };\n const sendOperationFn = async (args, spec) => {\n var _a;\n let currentRawResponse = undefined;\n const providedCallback = (_a = args.options) === null || _a === void 0 ? void 0 : _a.onResponse;\n const callback = (rawResponse, flatResponse) => {\n currentRawResponse = rawResponse;\n providedCallback === null || providedCallback === void 0 ? void 0 : providedCallback(rawResponse, flatResponse);\n };\n const updatedArgs = Object.assign(Object.assign({}, args), { options: Object.assign(Object.assign({}, args.options), { onResponse: callback }) });\n const flatResponse = await directSendOperation(updatedArgs, spec);\n return {\n flatResponse,\n rawResponse: {\n statusCode: currentRawResponse.status,\n body: currentRawResponse.parsedBody,\n headers: currentRawResponse.headers.toJSON(),\n },\n };\n };\n const lro = (0, lroImpl_js_1.createLroSpec)({\n sendOperationFn,\n args: { deploymentName, parameters, options },\n spec: validateAtSubscriptionScopeOperationSpec,\n });\n const poller = await (0, core_lro_1.createHttpPoller)(lro, {\n restoreFrom: options === null || options === void 0 ? void 0 : options.resumeFrom,\n intervalInMs: options === null || options === void 0 ? void 0 : options.updateIntervalInMs,\n });\n await poller.poll();\n return poller;\n }\n /**\n * Validates whether the specified template is syntactically correct and will be accepted by Azure\n * Resource Manager..\n * @param deploymentName The name of the deployment.\n * @param parameters Parameters to validate.\n * @param options The options parameters.\n */\n async beginValidateAtSubscriptionScopeAndWait(deploymentName, parameters, options) {\n const poller = await this.beginValidateAtSubscriptionScope(deploymentName, parameters, options);\n return poller.pollUntilDone();\n }\n /**\n * Returns changes that will be made by the deployment if executed at the scope of the subscription.\n * @param deploymentName The name of the deployment.\n * @param parameters Parameters to What If.\n * @param options The options parameters.\n */\n async beginWhatIfAtSubscriptionScope(deploymentName, parameters, options) {\n const directSendOperation = async (args, spec) => {\n return this.client.sendOperationRequest(args, spec);\n };\n const sendOperationFn = async (args, spec) => {\n var _a;\n let currentRawResponse = undefined;\n const providedCallback = (_a = args.options) === null || _a === void 0 ? void 0 : _a.onResponse;\n const callback = (rawResponse, flatResponse) => {\n currentRawResponse = rawResponse;\n providedCallback === null || providedCallback === void 0 ? void 0 : providedCallback(rawResponse, flatResponse);\n };\n const updatedArgs = Object.assign(Object.assign({}, args), { options: Object.assign(Object.assign({}, args.options), { onResponse: callback }) });\n const flatResponse = await directSendOperation(updatedArgs, spec);\n return {\n flatResponse,\n rawResponse: {\n statusCode: currentRawResponse.status,\n body: currentRawResponse.parsedBody,\n headers: currentRawResponse.headers.toJSON(),\n },\n };\n };\n const lro = (0, lroImpl_js_1.createLroSpec)({\n sendOperationFn,\n args: { deploymentName, parameters, options },\n spec: whatIfAtSubscriptionScopeOperationSpec,\n });\n const poller = await (0, core_lro_1.createHttpPoller)(lro, {\n restoreFrom: options === null || options === void 0 ? void 0 : options.resumeFrom,\n intervalInMs: options === null || options === void 0 ? void 0 : options.updateIntervalInMs,\n resourceLocationConfig: \"location\",\n });\n await poller.poll();\n return poller;\n }\n /**\n * Returns changes that will be made by the deployment if executed at the scope of the subscription.\n * @param deploymentName The name of the deployment.\n * @param parameters Parameters to What If.\n * @param options The options parameters.\n */\n async beginWhatIfAtSubscriptionScopeAndWait(deploymentName, parameters, options) {\n const poller = await this.beginWhatIfAtSubscriptionScope(deploymentName, parameters, options);\n return poller.pollUntilDone();\n }\n /**\n * Exports the template used for specified deployment.\n * @param deploymentName The name of the deployment.\n * @param options The options parameters.\n */\n exportTemplateAtSubscriptionScope(deploymentName, options) {\n return this.client.sendOperationRequest({ deploymentName, options }, exportTemplateAtSubscriptionScopeOperationSpec);\n }\n /**\n * Get all the deployments for a subscription.\n * @param options The options parameters.\n */\n _listAtSubscriptionScope(options) {\n return this.client.sendOperationRequest({ options }, listAtSubscriptionScopeOperationSpec);\n }\n /**\n * A template deployment that is currently running cannot be deleted. Deleting a template deployment\n * removes the associated deployment operations. Deleting a template deployment does not affect the\n * state of the resource group. This is an asynchronous operation that returns a status of 202 until\n * the template deployment is successfully deleted. The Location response header contains the URI that\n * is used to obtain the status of the process. While the process is running, a call to the URI in the\n * Location header returns a status of 202. When the process finishes, the URI in the Location header\n * returns a status of 204 on success. If the asynchronous request failed, the URI in the Location\n * header returns an error-level status code.\n * @param resourceGroupName The name of the resource group with the deployment to delete. The name is\n * case insensitive.\n * @param deploymentName The name of the deployment.\n * @param options The options parameters.\n */\n async beginDelete(resourceGroupName, deploymentName, options) {\n const directSendOperation = async (args, spec) => {\n return this.client.sendOperationRequest(args, spec);\n };\n const sendOperationFn = async (args, spec) => {\n var _a;\n let currentRawResponse = undefined;\n const providedCallback = (_a = args.options) === null || _a === void 0 ? void 0 : _a.onResponse;\n const callback = (rawResponse, flatResponse) => {\n currentRawResponse = rawResponse;\n providedCallback === null || providedCallback === void 0 ? void 0 : providedCallback(rawResponse, flatResponse);\n };\n const updatedArgs = Object.assign(Object.assign({}, args), { options: Object.assign(Object.assign({}, args.options), { onResponse: callback }) });\n const flatResponse = await directSendOperation(updatedArgs, spec);\n return {\n flatResponse,\n rawResponse: {\n statusCode: currentRawResponse.status,\n body: currentRawResponse.parsedBody,\n headers: currentRawResponse.headers.toJSON(),\n },\n };\n };\n const lro = (0, lroImpl_js_1.createLroSpec)({\n sendOperationFn,\n args: { resourceGroupName, deploymentName, options },\n spec: deleteOperationSpec,\n });\n const poller = await (0, core_lro_1.createHttpPoller)(lro, {\n restoreFrom: options === null || options === void 0 ? void 0 : options.resumeFrom,\n intervalInMs: options === null || options === void 0 ? void 0 : options.updateIntervalInMs,\n });\n await poller.poll();\n return poller;\n }\n /**\n * A template deployment that is currently running cannot be deleted. Deleting a template deployment\n * removes the associated deployment operations. Deleting a template deployment does not affect the\n * state of the resource group. This is an asynchronous operation that returns a status of 202 until\n * the template deployment is successfully deleted. The Location response header contains the URI that\n * is used to obtain the status of the process. While the process is running, a call to the URI in the\n * Location header returns a status of 202. When the process finishes, the URI in the Location header\n * returns a status of 204 on success. If the asynchronous request failed, the URI in the Location\n * header returns an error-level status code.\n * @param resourceGroupName The name of the resource group with the deployment to delete. The name is\n * case insensitive.\n * @param deploymentName The name of the deployment.\n * @param options The options parameters.\n */\n async beginDeleteAndWait(resourceGroupName, deploymentName, options) {\n const poller = await this.beginDelete(resourceGroupName, deploymentName, options);\n return poller.pollUntilDone();\n }\n /**\n * Checks whether the deployment exists.\n * @param resourceGroupName The name of the resource group with the deployment to check. The name is\n * case insensitive.\n * @param deploymentName The name of the deployment.\n * @param options The options parameters.\n */\n checkExistence(resourceGroupName, deploymentName, options) {\n return this.client.sendOperationRequest({ resourceGroupName, deploymentName, options }, checkExistenceOperationSpec);\n }\n /**\n * You can provide the template and parameters directly in the request or link to JSON files.\n * @param resourceGroupName The name of the resource group to deploy the resources to. The name is case\n * insensitive. The resource group must already exist.\n * @param deploymentName The name of the deployment.\n * @param parameters Additional parameters supplied to the operation.\n * @param options The options parameters.\n */\n async beginCreateOrUpdate(resourceGroupName, deploymentName, parameters, options) {\n const directSendOperation = async (args, spec) => {\n return this.client.sendOperationRequest(args, spec);\n };\n const sendOperationFn = async (args, spec) => {\n var _a;\n let currentRawResponse = undefined;\n const providedCallback = (_a = args.options) === null || _a === void 0 ? void 0 : _a.onResponse;\n const callback = (rawResponse, flatResponse) => {\n currentRawResponse = rawResponse;\n providedCallback === null || providedCallback === void 0 ? void 0 : providedCallback(rawResponse, flatResponse);\n };\n const updatedArgs = Object.assign(Object.assign({}, args), { options: Object.assign(Object.assign({}, args.options), { onResponse: callback }) });\n const flatResponse = await directSendOperation(updatedArgs, spec);\n return {\n flatResponse,\n rawResponse: {\n statusCode: currentRawResponse.status,\n body: currentRawResponse.parsedBody,\n headers: currentRawResponse.headers.toJSON(),\n },\n };\n };\n const lro = (0, lroImpl_js_1.createLroSpec)({\n sendOperationFn,\n args: { resourceGroupName, deploymentName, parameters, options },\n spec: createOrUpdateOperationSpec,\n });\n const poller = await (0, core_lro_1.createHttpPoller)(lro, {\n restoreFrom: options === null || options === void 0 ? void 0 : options.resumeFrom,\n intervalInMs: options === null || options === void 0 ? void 0 : options.updateIntervalInMs,\n });\n await poller.poll();\n return poller;\n }\n /**\n * You can provide the template and parameters directly in the request or link to JSON files.\n * @param resourceGroupName The name of the resource group to deploy the resources to. The name is case\n * insensitive. The resource group must already exist.\n * @param deploymentName The name of the deployment.\n * @param parameters Additional parameters supplied to the operation.\n * @param options The options parameters.\n */\n async beginCreateOrUpdateAndWait(resourceGroupName, deploymentName, parameters, options) {\n const poller = await this.beginCreateOrUpdate(resourceGroupName, deploymentName, parameters, options);\n return poller.pollUntilDone();\n }\n /**\n * Gets a deployment.\n * @param resourceGroupName The name of the resource group. The name is case insensitive.\n * @param deploymentName The name of the deployment.\n * @param options The options parameters.\n */\n get(resourceGroupName, deploymentName, options) {\n return this.client.sendOperationRequest({ resourceGroupName, deploymentName, options }, getOperationSpec);\n }\n /**\n * You can cancel a deployment only if the provisioningState is Accepted or Running. After the\n * deployment is canceled, the provisioningState is set to Canceled. Canceling a template deployment\n * stops the currently running template deployment and leaves the resource group partially deployed.\n * @param resourceGroupName The name of the resource group. The name is case insensitive.\n * @param deploymentName The name of the deployment.\n * @param options The options parameters.\n */\n cancel(resourceGroupName, deploymentName, options) {\n return this.client.sendOperationRequest({ resourceGroupName, deploymentName, options }, cancelOperationSpec);\n }\n /**\n * Validates whether the specified template is syntactically correct and will be accepted by Azure\n * Resource Manager..\n * @param resourceGroupName The name of the resource group the template will be deployed to. The name\n * is case insensitive.\n * @param deploymentName The name of the deployment.\n * @param parameters Parameters to validate.\n * @param options The options parameters.\n */\n async beginValidate(resourceGroupName, deploymentName, parameters, options) {\n const directSendOperation = async (args, spec) => {\n return this.client.sendOperationRequest(args, spec);\n };\n const sendOperationFn = async (args, spec) => {\n var _a;\n let currentRawResponse = undefined;\n const providedCallback = (_a = args.options) === null || _a === void 0 ? void 0 : _a.onResponse;\n const callback = (rawResponse, flatResponse) => {\n currentRawResponse = rawResponse;\n providedCallback === null || providedCallback === void 0 ? void 0 : providedCallback(rawResponse, flatResponse);\n };\n const updatedArgs = Object.assign(Object.assign({}, args), { options: Object.assign(Object.assign({}, args.options), { onResponse: callback }) });\n const flatResponse = await directSendOperation(updatedArgs, spec);\n return {\n flatResponse,\n rawResponse: {\n statusCode: currentRawResponse.status,\n body: currentRawResponse.parsedBody,\n headers: currentRawResponse.headers.toJSON(),\n },\n };\n };\n const lro = (0, lroImpl_js_1.createLroSpec)({\n sendOperationFn,\n args: { resourceGroupName, deploymentName, parameters, options },\n spec: validateOperationSpec,\n });\n const poller = await (0, core_lro_1.createHttpPoller)(lro, {\n restoreFrom: options === null || options === void 0 ? void 0 : options.resumeFrom,\n intervalInMs: options === null || options === void 0 ? void 0 : options.updateIntervalInMs,\n });\n await poller.poll();\n return poller;\n }\n /**\n * Validates whether the specified template is syntactically correct and will be accepted by Azure\n * Resource Manager..\n * @param resourceGroupName The name of the resource group the template will be deployed to. The name\n * is case insensitive.\n * @param deploymentName The name of the deployment.\n * @param parameters Parameters to validate.\n * @param options The options parameters.\n */\n async beginValidateAndWait(resourceGroupName, deploymentName, parameters, options) {\n const poller = await this.beginValidate(resourceGroupName, deploymentName, parameters, options);\n return poller.pollUntilDone();\n }\n /**\n * Returns changes that will be made by the deployment if executed at the scope of the resource group.\n * @param resourceGroupName The name of the resource group the template will be deployed to. The name\n * is case insensitive.\n * @param deploymentName The name of the deployment.\n * @param parameters Parameters to validate.\n * @param options The options parameters.\n */\n async beginWhatIf(resourceGroupName, deploymentName, parameters, options) {\n const directSendOperation = async (args, spec) => {\n return this.client.sendOperationRequest(args, spec);\n };\n const sendOperationFn = async (args, spec) => {\n var _a;\n let currentRawResponse = undefined;\n const providedCallback = (_a = args.options) === null || _a === void 0 ? void 0 : _a.onResponse;\n const callback = (rawResponse, flatResponse) => {\n currentRawResponse = rawResponse;\n providedCallback === null || providedCallback === void 0 ? void 0 : providedCallback(rawResponse, flatResponse);\n };\n const updatedArgs = Object.assign(Object.assign({}, args), { options: Object.assign(Object.assign({}, args.options), { onResponse: callback }) });\n const flatResponse = await directSendOperation(updatedArgs, spec);\n return {\n flatResponse,\n rawResponse: {\n statusCode: currentRawResponse.status,\n body: currentRawResponse.parsedBody,\n headers: currentRawResponse.headers.toJSON(),\n },\n };\n };\n const lro = (0, lroImpl_js_1.createLroSpec)({\n sendOperationFn,\n args: { resourceGroupName, deploymentName, parameters, options },\n spec: whatIfOperationSpec,\n });\n const poller = await (0, core_lro_1.createHttpPoller)(lro, {\n restoreFrom: options === null || options === void 0 ? void 0 : options.resumeFrom,\n intervalInMs: options === null || options === void 0 ? void 0 : options.updateIntervalInMs,\n resourceLocationConfig: \"location\",\n });\n await poller.poll();\n return poller;\n }\n /**\n * Returns changes that will be made by the deployment if executed at the scope of the resource group.\n * @param resourceGroupName The name of the resource group the template will be deployed to. The name\n * is case insensitive.\n * @param deploymentName The name of the deployment.\n * @param parameters Parameters to validate.\n * @param options The options parameters.\n */\n async beginWhatIfAndWait(resourceGroupName, deploymentName, parameters, options) {\n const poller = await this.beginWhatIf(resourceGroupName, deploymentName, parameters, options);\n return poller.pollUntilDone();\n }\n /**\n * Exports the template used for specified deployment.\n * @param resourceGroupName The name of the resource group. The name is case insensitive.\n * @param deploymentName The name of the deployment.\n * @param options The options parameters.\n */\n exportTemplate(resourceGroupName, deploymentName, options) {\n return this.client.sendOperationRequest({ resourceGroupName, deploymentName, options }, exportTemplateOperationSpec);\n }\n /**\n * Get all the deployments for a resource group.\n * @param resourceGroupName The name of the resource group with the deployments to get. The name is\n * case insensitive.\n * @param options The options parameters.\n */\n _listByResourceGroup(resourceGroupName, options) {\n return this.client.sendOperationRequest({ resourceGroupName, options }, listByResourceGroupOperationSpec);\n }\n /**\n * Calculate the hash of the given template.\n * @param template The template provided to calculate hash.\n * @param options The options parameters.\n */\n calculateTemplateHash(template, options) {\n return this.client.sendOperationRequest({ template, options }, calculateTemplateHashOperationSpec);\n }\n /**\n * ListAtScopeNext\n * @param scope The resource scope.\n * @param nextLink The nextLink from the previous successful call to the ListAtScope method.\n * @param options The options parameters.\n */\n _listAtScopeNext(scope, nextLink, options) {\n return this.client.sendOperationRequest({ scope, nextLink, options }, listAtScopeNextOperationSpec);\n }\n /**\n * ListAtTenantScopeNext\n * @param nextLink The nextLink from the previous successful call to the ListAtTenantScope method.\n * @param options The options parameters.\n */\n _listAtTenantScopeNext(nextLink, options) {\n return this.client.sendOperationRequest({ nextLink, options }, listAtTenantScopeNextOperationSpec);\n }\n /**\n * ListAtManagementGroupScopeNext\n * @param groupId The management group ID.\n * @param nextLink The nextLink from the previous successful call to the ListAtManagementGroupScope\n * method.\n * @param options The options parameters.\n */\n _listAtManagementGroupScopeNext(groupId, nextLink, options) {\n return this.client.sendOperationRequest({ groupId, nextLink, options }, listAtManagementGroupScopeNextOperationSpec);\n }\n /**\n * ListAtSubscriptionScopeNext\n * @param nextLink The nextLink from the previous successful call to the ListAtSubscriptionScope\n * method.\n * @param options The options parameters.\n */\n _listAtSubscriptionScopeNext(nextLink, options) {\n return this.client.sendOperationRequest({ nextLink, options }, listAtSubscriptionScopeNextOperationSpec);\n }\n /**\n * ListByResourceGroupNext\n * @param resourceGroupName The name of the resource group with the deployments to get. The name is\n * case insensitive.\n * @param nextLink The nextLink from the previous successful call to the ListByResourceGroup method.\n * @param options The options parameters.\n */\n _listByResourceGroupNext(resourceGroupName, nextLink, options) {\n return this.client.sendOperationRequest({ resourceGroupName, nextLink, options }, listByResourceGroupNextOperationSpec);\n }\n}\nexports.DeploymentsImpl = DeploymentsImpl;\n// Operation Specifications\nconst serializer = coreClient.createSerializer(Mappers, /* isXml */ false);\nconst deleteAtScopeOperationSpec = {\n path: \"/{scope}/providers/Microsoft.Resources/deployments/{deploymentName}\",\n httpMethod: \"DELETE\",\n responses: {\n 200: {},\n 201: {},\n 202: {},\n 204: {},\n default: {\n bodyMapper: Mappers.CloudError,\n },\n },\n queryParameters: [Parameters.apiVersion],\n urlParameters: [\n Parameters.$host,\n Parameters.scope,\n Parameters.deploymentName,\n ],\n headerParameters: [Parameters.accept],\n serializer,\n};\nconst checkExistenceAtScopeOperationSpec = {\n path: \"/{scope}/providers/Microsoft.Resources/deployments/{deploymentName}\",\n httpMethod: \"HEAD\",\n responses: {\n 204: {},\n 404: {},\n default: {\n bodyMapper: Mappers.CloudError,\n },\n },\n queryParameters: [Parameters.apiVersion],\n urlParameters: [\n Parameters.$host,\n Parameters.scope,\n Parameters.deploymentName,\n ],\n headerParameters: [Parameters.accept],\n serializer,\n};\nconst createOrUpdateAtScopeOperationSpec = {\n path: \"/{scope}/providers/Microsoft.Resources/deployments/{deploymentName}\",\n httpMethod: \"PUT\",\n responses: {\n 200: {\n bodyMapper: Mappers.DeploymentExtended,\n },\n 201: {\n bodyMapper: Mappers.DeploymentExtended,\n },\n 202: {\n bodyMapper: Mappers.DeploymentExtended,\n },\n 204: {\n bodyMapper: Mappers.DeploymentExtended,\n },\n default: {\n bodyMapper: Mappers.CloudError,\n },\n },\n requestBody: Parameters.parameters,\n queryParameters: [Parameters.apiVersion],\n urlParameters: [\n Parameters.$host,\n Parameters.scope,\n Parameters.deploymentName,\n ],\n headerParameters: [Parameters.accept, Parameters.contentType],\n mediaType: \"json\",\n serializer,\n};\nconst getAtScopeOperationSpec = {\n path: \"/{scope}/providers/Microsoft.Resources/deployments/{deploymentName}\",\n httpMethod: \"GET\",\n responses: {\n 200: {\n bodyMapper: Mappers.DeploymentExtended,\n },\n default: {\n bodyMapper: Mappers.CloudError,\n },\n },\n queryParameters: [Parameters.apiVersion],\n urlParameters: [\n Parameters.$host,\n Parameters.scope,\n Parameters.deploymentName,\n ],\n headerParameters: [Parameters.accept],\n serializer,\n};\nconst cancelAtScopeOperationSpec = {\n path: \"/{scope}/providers/Microsoft.Resources/deployments/{deploymentName}/cancel\",\n httpMethod: \"POST\",\n responses: {\n 204: {},\n default: {\n bodyMapper: Mappers.CloudError,\n },\n },\n queryParameters: [Parameters.apiVersion],\n urlParameters: [\n Parameters.$host,\n Parameters.scope,\n Parameters.deploymentName,\n ],\n headerParameters: [Parameters.accept],\n serializer,\n};\nconst validateAtScopeOperationSpec = {\n path: \"/{scope}/providers/Microsoft.Resources/deployments/{deploymentName}/validate\",\n httpMethod: \"POST\",\n responses: {\n 200: {\n bodyMapper: Mappers.DeploymentValidateResult,\n },\n 201: {\n bodyMapper: Mappers.DeploymentValidateResult,\n },\n 202: {\n bodyMapper: Mappers.DeploymentValidateResult,\n },\n 204: {\n bodyMapper: Mappers.DeploymentValidateResult,\n },\n default: {\n bodyMapper: Mappers.CloudError,\n },\n },\n requestBody: Parameters.parameters,\n queryParameters: [Parameters.apiVersion],\n urlParameters: [\n Parameters.$host,\n Parameters.scope,\n Parameters.deploymentName,\n ],\n headerParameters: [Parameters.accept, Parameters.contentType],\n mediaType: \"json\",\n serializer,\n};\nconst exportTemplateAtScopeOperationSpec = {\n path: \"/{scope}/providers/Microsoft.Resources/deployments/{deploymentName}/exportTemplate\",\n httpMethod: \"POST\",\n responses: {\n 200: {\n bodyMapper: Mappers.DeploymentExportResult,\n },\n default: {\n bodyMapper: Mappers.CloudError,\n },\n },\n queryParameters: [Parameters.apiVersion],\n urlParameters: [\n Parameters.$host,\n Parameters.scope,\n Parameters.deploymentName,\n ],\n headerParameters: [Parameters.accept],\n serializer,\n};\nconst listAtScopeOperationSpec = {\n path: \"/{scope}/providers/Microsoft.Resources/deployments/\",\n httpMethod: \"GET\",\n responses: {\n 200: {\n bodyMapper: Mappers.DeploymentListResult,\n },\n default: {\n bodyMapper: Mappers.CloudError,\n },\n },\n queryParameters: [Parameters.apiVersion, Parameters.filter, Parameters.top],\n urlParameters: [Parameters.$host, Parameters.scope],\n headerParameters: [Parameters.accept],\n serializer,\n};\nconst deleteAtTenantScopeOperationSpec = {\n path: \"/providers/Microsoft.Resources/deployments/{deploymentName}\",\n httpMethod: \"DELETE\",\n responses: {\n 200: {},\n 201: {},\n 202: {},\n 204: {},\n default: {\n bodyMapper: Mappers.CloudError,\n },\n },\n queryParameters: [Parameters.apiVersion],\n urlParameters: [Parameters.$host, Parameters.deploymentName],\n headerParameters: [Parameters.accept],\n serializer,\n};\nconst checkExistenceAtTenantScopeOperationSpec = {\n path: \"/providers/Microsoft.Resources/deployments/{deploymentName}\",\n httpMethod: \"HEAD\",\n responses: {\n 204: {},\n 404: {},\n default: {\n bodyMapper: Mappers.CloudError,\n },\n },\n queryParameters: [Parameters.apiVersion],\n urlParameters: [Parameters.$host, Parameters.deploymentName],\n headerParameters: [Parameters.accept],\n serializer,\n};\nconst createOrUpdateAtTenantScopeOperationSpec = {\n path: \"/providers/Microsoft.Resources/deployments/{deploymentName}\",\n httpMethod: \"PUT\",\n responses: {\n 200: {\n bodyMapper: Mappers.DeploymentExtended,\n },\n 201: {\n bodyMapper: Mappers.DeploymentExtended,\n },\n 202: {\n bodyMapper: Mappers.DeploymentExtended,\n },\n 204: {\n bodyMapper: Mappers.DeploymentExtended,\n },\n default: {\n bodyMapper: Mappers.CloudError,\n },\n },\n requestBody: Parameters.parameters1,\n queryParameters: [Parameters.apiVersion],\n urlParameters: [Parameters.$host, Parameters.deploymentName],\n headerParameters: [Parameters.accept, Parameters.contentType],\n mediaType: \"json\",\n serializer,\n};\nconst getAtTenantScopeOperationSpec = {\n path: \"/providers/Microsoft.Resources/deployments/{deploymentName}\",\n httpMethod: \"GET\",\n responses: {\n 200: {\n bodyMapper: Mappers.DeploymentExtended,\n },\n default: {\n bodyMapper: Mappers.CloudError,\n },\n },\n queryParameters: [Parameters.apiVersion],\n urlParameters: [Parameters.$host, Parameters.deploymentName],\n headerParameters: [Parameters.accept],\n serializer,\n};\nconst cancelAtTenantScopeOperationSpec = {\n path: \"/providers/Microsoft.Resources/deployments/{deploymentName}/cancel\",\n httpMethod: \"POST\",\n responses: {\n 204: {},\n default: {\n bodyMapper: Mappers.CloudError,\n },\n },\n queryParameters: [Parameters.apiVersion],\n urlParameters: [Parameters.$host, Parameters.deploymentName],\n headerParameters: [Parameters.accept],\n serializer,\n};\nconst validateAtTenantScopeOperationSpec = {\n path: \"/providers/Microsoft.Resources/deployments/{deploymentName}/validate\",\n httpMethod: \"POST\",\n responses: {\n 200: {\n bodyMapper: Mappers.DeploymentValidateResult,\n },\n 201: {\n bodyMapper: Mappers.DeploymentValidateResult,\n },\n 202: {\n bodyMapper: Mappers.DeploymentValidateResult,\n },\n 204: {\n bodyMapper: Mappers.DeploymentValidateResult,\n },\n default: {\n bodyMapper: Mappers.CloudError,\n },\n },\n requestBody: Parameters.parameters1,\n queryParameters: [Parameters.apiVersion],\n urlParameters: [Parameters.$host, Parameters.deploymentName],\n headerParameters: [Parameters.accept, Parameters.contentType],\n mediaType: \"json\",\n serializer,\n};\nconst whatIfAtTenantScopeOperationSpec = {\n path: \"/providers/Microsoft.Resources/deployments/{deploymentName}/whatIf\",\n httpMethod: \"POST\",\n responses: {\n 200: {\n bodyMapper: Mappers.WhatIfOperationResult,\n },\n 201: {\n bodyMapper: Mappers.WhatIfOperationResult,\n },\n 202: {\n bodyMapper: Mappers.WhatIfOperationResult,\n },\n 204: {\n bodyMapper: Mappers.WhatIfOperationResult,\n },\n default: {\n bodyMapper: Mappers.CloudError,\n },\n },\n requestBody: Parameters.parameters2,\n queryParameters: [Parameters.apiVersion],\n urlParameters: [Parameters.$host, Parameters.deploymentName],\n headerParameters: [Parameters.accept, Parameters.contentType],\n mediaType: \"json\",\n serializer,\n};\nconst exportTemplateAtTenantScopeOperationSpec = {\n path: \"/providers/Microsoft.Resources/deployments/{deploymentName}/exportTemplate\",\n httpMethod: \"POST\",\n responses: {\n 200: {\n bodyMapper: Mappers.DeploymentExportResult,\n },\n default: {\n bodyMapper: Mappers.CloudError,\n },\n },\n queryParameters: [Parameters.apiVersion],\n urlParameters: [Parameters.$host, Parameters.deploymentName],\n headerParameters: [Parameters.accept],\n serializer,\n};\nconst listAtTenantScopeOperationSpec = {\n path: \"/providers/Microsoft.Resources/deployments/\",\n httpMethod: \"GET\",\n responses: {\n 200: {\n bodyMapper: Mappers.DeploymentListResult,\n },\n default: {\n bodyMapper: Mappers.CloudError,\n },\n },\n queryParameters: [Parameters.apiVersion, Parameters.filter, Parameters.top],\n urlParameters: [Parameters.$host],\n headerParameters: [Parameters.accept],\n serializer,\n};\nconst deleteAtManagementGroupScopeOperationSpec = {\n path: \"/providers/Microsoft.Management/managementGroups/{groupId}/providers/Microsoft.Resources/deployments/{deploymentName}\",\n httpMethod: \"DELETE\",\n responses: {\n 200: {},\n 201: {},\n 202: {},\n 204: {},\n default: {\n bodyMapper: Mappers.CloudError,\n },\n },\n queryParameters: [Parameters.apiVersion],\n urlParameters: [\n Parameters.$host,\n Parameters.deploymentName,\n Parameters.groupId,\n ],\n headerParameters: [Parameters.accept],\n serializer,\n};\nconst checkExistenceAtManagementGroupScopeOperationSpec = {\n path: \"/providers/Microsoft.Management/managementGroups/{groupId}/providers/Microsoft.Resources/deployments/{deploymentName}\",\n httpMethod: \"HEAD\",\n responses: {\n 204: {},\n 404: {},\n default: {\n bodyMapper: Mappers.CloudError,\n },\n },\n queryParameters: [Parameters.apiVersion],\n urlParameters: [\n Parameters.$host,\n Parameters.deploymentName,\n Parameters.groupId,\n ],\n headerParameters: [Parameters.accept],\n serializer,\n};\nconst createOrUpdateAtManagementGroupScopeOperationSpec = {\n path: \"/providers/Microsoft.Management/managementGroups/{groupId}/providers/Microsoft.Resources/deployments/{deploymentName}\",\n httpMethod: \"PUT\",\n responses: {\n 200: {\n bodyMapper: Mappers.DeploymentExtended,\n },\n 201: {\n bodyMapper: Mappers.DeploymentExtended,\n },\n 202: {\n bodyMapper: Mappers.DeploymentExtended,\n },\n 204: {\n bodyMapper: Mappers.DeploymentExtended,\n },\n default: {\n bodyMapper: Mappers.CloudError,\n },\n },\n requestBody: Parameters.parameters1,\n queryParameters: [Parameters.apiVersion],\n urlParameters: [\n Parameters.$host,\n Parameters.deploymentName,\n Parameters.groupId,\n ],\n headerParameters: [Parameters.accept, Parameters.contentType],\n mediaType: \"json\",\n serializer,\n};\nconst getAtManagementGroupScopeOperationSpec = {\n path: \"/providers/Microsoft.Management/managementGroups/{groupId}/providers/Microsoft.Resources/deployments/{deploymentName}\",\n httpMethod: \"GET\",\n responses: {\n 200: {\n bodyMapper: Mappers.DeploymentExtended,\n },\n default: {\n bodyMapper: Mappers.CloudError,\n },\n },\n queryParameters: [Parameters.apiVersion],\n urlParameters: [\n Parameters.$host,\n Parameters.deploymentName,\n Parameters.groupId,\n ],\n headerParameters: [Parameters.accept],\n serializer,\n};\nconst cancelAtManagementGroupScopeOperationSpec = {\n path: \"/providers/Microsoft.Management/managementGroups/{groupId}/providers/Microsoft.Resources/deployments/{deploymentName}/cancel\",\n httpMethod: \"POST\",\n responses: {\n 204: {},\n default: {\n bodyMapper: Mappers.CloudError,\n },\n },\n queryParameters: [Parameters.apiVersion],\n urlParameters: [\n Parameters.$host,\n Parameters.deploymentName,\n Parameters.groupId,\n ],\n headerParameters: [Parameters.accept],\n serializer,\n};\nconst validateAtManagementGroupScopeOperationSpec = {\n path: \"/providers/Microsoft.Management/managementGroups/{groupId}/providers/Microsoft.Resources/deployments/{deploymentName}/validate\",\n httpMethod: \"POST\",\n responses: {\n 200: {\n bodyMapper: Mappers.DeploymentValidateResult,\n },\n 201: {\n bodyMapper: Mappers.DeploymentValidateResult,\n },\n 202: {\n bodyMapper: Mappers.DeploymentValidateResult,\n },\n 204: {\n bodyMapper: Mappers.DeploymentValidateResult,\n },\n default: {\n bodyMapper: Mappers.CloudError,\n },\n },\n requestBody: Parameters.parameters1,\n queryParameters: [Parameters.apiVersion],\n urlParameters: [\n Parameters.$host,\n Parameters.deploymentName,\n Parameters.groupId,\n ],\n headerParameters: [Parameters.accept, Parameters.contentType],\n mediaType: \"json\",\n serializer,\n};\nconst whatIfAtManagementGroupScopeOperationSpec = {\n path: \"/providers/Microsoft.Management/managementGroups/{groupId}/providers/Microsoft.Resources/deployments/{deploymentName}/whatIf\",\n httpMethod: \"POST\",\n responses: {\n 200: {\n bodyMapper: Mappers.WhatIfOperationResult,\n },\n 201: {\n bodyMapper: Mappers.WhatIfOperationResult,\n },\n 202: {\n bodyMapper: Mappers.WhatIfOperationResult,\n },\n 204: {\n bodyMapper: Mappers.WhatIfOperationResult,\n },\n default: {\n bodyMapper: Mappers.CloudError,\n },\n },\n requestBody: Parameters.parameters2,\n queryParameters: [Parameters.apiVersion],\n urlParameters: [\n Parameters.$host,\n Parameters.deploymentName,\n Parameters.groupId,\n ],\n headerParameters: [Parameters.accept, Parameters.contentType],\n mediaType: \"json\",\n serializer,\n};\nconst exportTemplateAtManagementGroupScopeOperationSpec = {\n path: \"/providers/Microsoft.Management/managementGroups/{groupId}/providers/Microsoft.Resources/deployments/{deploymentName}/exportTemplate\",\n httpMethod: \"POST\",\n responses: {\n 200: {\n bodyMapper: Mappers.DeploymentExportResult,\n },\n default: {\n bodyMapper: Mappers.CloudError,\n },\n },\n queryParameters: [Parameters.apiVersion],\n urlParameters: [\n Parameters.$host,\n Parameters.deploymentName,\n Parameters.groupId,\n ],\n headerParameters: [Parameters.accept],\n serializer,\n};\nconst listAtManagementGroupScopeOperationSpec = {\n path: \"/providers/Microsoft.Management/managementGroups/{groupId}/providers/Microsoft.Resources/deployments/\",\n httpMethod: \"GET\",\n responses: {\n 200: {\n bodyMapper: Mappers.DeploymentListResult,\n },\n default: {\n bodyMapper: Mappers.CloudError,\n },\n },\n queryParameters: [Parameters.apiVersion, Parameters.filter, Parameters.top],\n urlParameters: [Parameters.$host, Parameters.groupId],\n headerParameters: [Parameters.accept],\n serializer,\n};\nconst deleteAtSubscriptionScopeOperationSpec = {\n path: \"/subscriptions/{subscriptionId}/providers/Microsoft.Resources/deployments/{deploymentName}\",\n httpMethod: \"DELETE\",\n responses: {\n 200: {},\n 201: {},\n 202: {},\n 204: {},\n default: {\n bodyMapper: Mappers.CloudError,\n },\n },\n queryParameters: [Parameters.apiVersion],\n urlParameters: [\n Parameters.$host,\n Parameters.deploymentName,\n Parameters.subscriptionId,\n ],\n headerParameters: [Parameters.accept],\n serializer,\n};\nconst checkExistenceAtSubscriptionScopeOperationSpec = {\n path: \"/subscriptions/{subscriptionId}/providers/Microsoft.Resources/deployments/{deploymentName}\",\n httpMethod: \"HEAD\",\n responses: {\n 204: {},\n 404: {},\n default: {\n bodyMapper: Mappers.CloudError,\n },\n },\n queryParameters: [Parameters.apiVersion],\n urlParameters: [\n Parameters.$host,\n Parameters.deploymentName,\n Parameters.subscriptionId,\n ],\n headerParameters: [Parameters.accept],\n serializer,\n};\nconst createOrUpdateAtSubscriptionScopeOperationSpec = {\n path: \"/subscriptions/{subscriptionId}/providers/Microsoft.Resources/deployments/{deploymentName}\",\n httpMethod: \"PUT\",\n responses: {\n 200: {\n bodyMapper: Mappers.DeploymentExtended,\n },\n 201: {\n bodyMapper: Mappers.DeploymentExtended,\n },\n 202: {\n bodyMapper: Mappers.DeploymentExtended,\n },\n 204: {\n bodyMapper: Mappers.DeploymentExtended,\n },\n default: {\n bodyMapper: Mappers.CloudError,\n },\n },\n requestBody: Parameters.parameters,\n queryParameters: [Parameters.apiVersion],\n urlParameters: [\n Parameters.$host,\n Parameters.deploymentName,\n Parameters.subscriptionId,\n ],\n headerParameters: [Parameters.accept, Parameters.contentType],\n mediaType: \"json\",\n serializer,\n};\nconst getAtSubscriptionScopeOperationSpec = {\n path: \"/subscriptions/{subscriptionId}/providers/Microsoft.Resources/deployments/{deploymentName}\",\n httpMethod: \"GET\",\n responses: {\n 200: {\n bodyMapper: Mappers.DeploymentExtended,\n },\n default: {\n bodyMapper: Mappers.CloudError,\n },\n },\n queryParameters: [Parameters.apiVersion],\n urlParameters: [\n Parameters.$host,\n Parameters.deploymentName,\n Parameters.subscriptionId,\n ],\n headerParameters: [Parameters.accept],\n serializer,\n};\nconst cancelAtSubscriptionScopeOperationSpec = {\n path: \"/subscriptions/{subscriptionId}/providers/Microsoft.Resources/deployments/{deploymentName}/cancel\",\n httpMethod: \"POST\",\n responses: {\n 204: {},\n default: {\n bodyMapper: Mappers.CloudError,\n },\n },\n queryParameters: [Parameters.apiVersion],\n urlParameters: [\n Parameters.$host,\n Parameters.deploymentName,\n Parameters.subscriptionId,\n ],\n headerParameters: [Parameters.accept],\n serializer,\n};\nconst validateAtSubscriptionScopeOperationSpec = {\n path: \"/subscriptions/{subscriptionId}/providers/Microsoft.Resources/deployments/{deploymentName}/validate\",\n httpMethod: \"POST\",\n responses: {\n 200: {\n bodyMapper: Mappers.DeploymentValidateResult,\n },\n 201: {\n bodyMapper: Mappers.DeploymentValidateResult,\n },\n 202: {\n bodyMapper: Mappers.DeploymentValidateResult,\n },\n 204: {\n bodyMapper: Mappers.DeploymentValidateResult,\n },\n default: {\n bodyMapper: Mappers.CloudError,\n },\n },\n requestBody: Parameters.parameters,\n queryParameters: [Parameters.apiVersion],\n urlParameters: [\n Parameters.$host,\n Parameters.deploymentName,\n Parameters.subscriptionId,\n ],\n headerParameters: [Parameters.accept, Parameters.contentType],\n mediaType: \"json\",\n serializer,\n};\nconst whatIfAtSubscriptionScopeOperationSpec = {\n path: \"/subscriptions/{subscriptionId}/providers/Microsoft.Resources/deployments/{deploymentName}/whatIf\",\n httpMethod: \"POST\",\n responses: {\n 200: {\n bodyMapper: Mappers.WhatIfOperationResult,\n },\n 201: {\n bodyMapper: Mappers.WhatIfOperationResult,\n },\n 202: {\n bodyMapper: Mappers.WhatIfOperationResult,\n },\n 204: {\n bodyMapper: Mappers.WhatIfOperationResult,\n },\n default: {\n bodyMapper: Mappers.CloudError,\n },\n },\n requestBody: Parameters.parameters3,\n queryParameters: [Parameters.apiVersion],\n urlParameters: [\n Parameters.$host,\n Parameters.deploymentName,\n Parameters.subscriptionId,\n ],\n headerParameters: [Parameters.accept, Parameters.contentType],\n mediaType: \"json\",\n serializer,\n};\nconst exportTemplateAtSubscriptionScopeOperationSpec = {\n path: \"/subscriptions/{subscriptionId}/providers/Microsoft.Resources/deployments/{deploymentName}/exportTemplate\",\n httpMethod: \"POST\",\n responses: {\n 200: {\n bodyMapper: Mappers.DeploymentExportResult,\n },\n default: {\n bodyMapper: Mappers.CloudError,\n },\n },\n queryParameters: [Parameters.apiVersion],\n urlParameters: [\n Parameters.$host,\n Parameters.deploymentName,\n Parameters.subscriptionId,\n ],\n headerParameters: [Parameters.accept],\n serializer,\n};\nconst listAtSubscriptionScopeOperationSpec = {\n path: \"/subscriptions/{subscriptionId}/providers/Microsoft.Resources/deployments/\",\n httpMethod: \"GET\",\n responses: {\n 200: {\n bodyMapper: Mappers.DeploymentListResult,\n },\n default: {\n bodyMapper: Mappers.CloudError,\n },\n },\n queryParameters: [Parameters.apiVersion, Parameters.filter, Parameters.top],\n urlParameters: [Parameters.$host, Parameters.subscriptionId],\n headerParameters: [Parameters.accept],\n serializer,\n};\nconst deleteOperationSpec = {\n path: \"/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.Resources/deployments/{deploymentName}\",\n httpMethod: \"DELETE\",\n responses: {\n 200: {},\n 201: {},\n 202: {},\n 204: {},\n default: {\n bodyMapper: Mappers.CloudError,\n },\n },\n queryParameters: [Parameters.apiVersion],\n urlParameters: [\n Parameters.$host,\n Parameters.deploymentName,\n Parameters.subscriptionId,\n Parameters.resourceGroupName,\n ],\n headerParameters: [Parameters.accept],\n serializer,\n};\nconst checkExistenceOperationSpec = {\n path: \"/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.Resources/deployments/{deploymentName}\",\n httpMethod: \"HEAD\",\n responses: {\n 204: {},\n 404: {},\n default: {\n bodyMapper: Mappers.CloudError,\n },\n },\n queryParameters: [Parameters.apiVersion],\n urlParameters: [\n Parameters.$host,\n Parameters.deploymentName,\n Parameters.subscriptionId,\n Parameters.resourceGroupName,\n ],\n headerParameters: [Parameters.accept],\n serializer,\n};\nconst createOrUpdateOperationSpec = {\n path: \"/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.Resources/deployments/{deploymentName}\",\n httpMethod: \"PUT\",\n responses: {\n 200: {\n bodyMapper: Mappers.DeploymentExtended,\n },\n 201: {\n bodyMapper: Mappers.DeploymentExtended,\n },\n 202: {\n bodyMapper: Mappers.DeploymentExtended,\n },\n 204: {\n bodyMapper: Mappers.DeploymentExtended,\n },\n default: {\n bodyMapper: Mappers.CloudError,\n },\n },\n requestBody: Parameters.parameters,\n queryParameters: [Parameters.apiVersion],\n urlParameters: [\n Parameters.$host,\n Parameters.deploymentName,\n Parameters.subscriptionId,\n Parameters.resourceGroupName,\n ],\n headerParameters: [Parameters.accept, Parameters.contentType],\n mediaType: \"json\",\n serializer,\n};\nconst getOperationSpec = {\n path: \"/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.Resources/deployments/{deploymentName}\",\n httpMethod: \"GET\",\n responses: {\n 200: {\n bodyMapper: Mappers.DeploymentExtended,\n },\n default: {\n bodyMapper: Mappers.CloudError,\n },\n },\n queryParameters: [Parameters.apiVersion],\n urlParameters: [\n Parameters.$host,\n Parameters.deploymentName,\n Parameters.subscriptionId,\n Parameters.resourceGroupName,\n ],\n headerParameters: [Parameters.accept],\n serializer,\n};\nconst cancelOperationSpec = {\n path: \"/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.Resources/deployments/{deploymentName}/cancel\",\n httpMethod: \"POST\",\n responses: {\n 204: {},\n default: {\n bodyMapper: Mappers.CloudError,\n },\n },\n queryParameters: [Parameters.apiVersion],\n urlParameters: [\n Parameters.$host,\n Parameters.deploymentName,\n Parameters.subscriptionId,\n Parameters.resourceGroupName,\n ],\n headerParameters: [Parameters.accept],\n serializer,\n};\nconst validateOperationSpec = {\n path: \"/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.Resources/deployments/{deploymentName}/validate\",\n httpMethod: \"POST\",\n responses: {\n 200: {\n bodyMapper: Mappers.DeploymentValidateResult,\n },\n 201: {\n bodyMapper: Mappers.DeploymentValidateResult,\n },\n 202: {\n bodyMapper: Mappers.DeploymentValidateResult,\n },\n 204: {\n bodyMapper: Mappers.DeploymentValidateResult,\n },\n default: {\n bodyMapper: Mappers.CloudError,\n },\n },\n requestBody: Parameters.parameters,\n queryParameters: [Parameters.apiVersion],\n urlParameters: [\n Parameters.$host,\n Parameters.deploymentName,\n Parameters.subscriptionId,\n Parameters.resourceGroupName,\n ],\n headerParameters: [Parameters.accept, Parameters.contentType],\n mediaType: \"json\",\n serializer,\n};\nconst whatIfOperationSpec = {\n path: \"/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.Resources/deployments/{deploymentName}/whatIf\",\n httpMethod: \"POST\",\n responses: {\n 200: {\n bodyMapper: Mappers.WhatIfOperationResult,\n },\n 201: {\n bodyMapper: Mappers.WhatIfOperationResult,\n },\n 202: {\n bodyMapper: Mappers.WhatIfOperationResult,\n },\n 204: {\n bodyMapper: Mappers.WhatIfOperationResult,\n },\n default: {\n bodyMapper: Mappers.CloudError,\n },\n },\n requestBody: Parameters.parameters3,\n queryParameters: [Parameters.apiVersion],\n urlParameters: [\n Parameters.$host,\n Parameters.deploymentName,\n Parameters.subscriptionId,\n Parameters.resourceGroupName,\n ],\n headerParameters: [Parameters.accept, Parameters.contentType],\n mediaType: \"json\",\n serializer,\n};\nconst exportTemplateOperationSpec = {\n path: \"/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.Resources/deployments/{deploymentName}/exportTemplate\",\n httpMethod: \"POST\",\n responses: {\n 200: {\n bodyMapper: Mappers.DeploymentExportResult,\n },\n default: {\n bodyMapper: Mappers.CloudError,\n },\n },\n queryParameters: [Parameters.apiVersion],\n urlParameters: [\n Parameters.$host,\n Parameters.deploymentName,\n Parameters.subscriptionId,\n Parameters.resourceGroupName,\n ],\n headerParameters: [Parameters.accept],\n serializer,\n};\nconst listByResourceGroupOperationSpec = {\n path: \"/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.Resources/deployments/\",\n httpMethod: \"GET\",\n responses: {\n 200: {\n bodyMapper: Mappers.DeploymentListResult,\n },\n default: {\n bodyMapper: Mappers.CloudError,\n },\n },\n queryParameters: [Parameters.apiVersion, Parameters.filter, Parameters.top],\n urlParameters: [\n Parameters.$host,\n Parameters.subscriptionId,\n Parameters.resourceGroupName,\n ],\n headerParameters: [Parameters.accept],\n serializer,\n};\nconst calculateTemplateHashOperationSpec = {\n path: \"/providers/Microsoft.Resources/calculateTemplateHash\",\n httpMethod: \"POST\",\n responses: {\n 200: {\n bodyMapper: Mappers.TemplateHashResult,\n },\n default: {\n bodyMapper: Mappers.CloudError,\n },\n },\n requestBody: Parameters.template,\n queryParameters: [Parameters.apiVersion],\n urlParameters: [Parameters.$host],\n headerParameters: [Parameters.accept, Parameters.contentType],\n mediaType: \"json\",\n serializer,\n};\nconst listAtScopeNextOperationSpec = {\n path: \"{nextLink}\",\n httpMethod: \"GET\",\n responses: {\n 200: {\n bodyMapper: Mappers.DeploymentListResult,\n },\n default: {\n bodyMapper: Mappers.CloudError,\n },\n },\n urlParameters: [Parameters.$host, Parameters.nextLink, Parameters.scope],\n headerParameters: [Parameters.accept],\n serializer,\n};\nconst listAtTenantScopeNextOperationSpec = {\n path: \"{nextLink}\",\n httpMethod: \"GET\",\n responses: {\n 200: {\n bodyMapper: Mappers.DeploymentListResult,\n },\n default: {\n bodyMapper: Mappers.CloudError,\n },\n },\n urlParameters: [Parameters.$host, Parameters.nextLink],\n headerParameters: [Parameters.accept],\n serializer,\n};\nconst listAtManagementGroupScopeNextOperationSpec = {\n path: \"{nextLink}\",\n httpMethod: \"GET\",\n responses: {\n 200: {\n bodyMapper: Mappers.DeploymentListResult,\n },\n default: {\n bodyMapper: Mappers.CloudError,\n },\n },\n urlParameters: [Parameters.$host, Parameters.nextLink, Parameters.groupId],\n headerParameters: [Parameters.accept],\n serializer,\n};\nconst listAtSubscriptionScopeNextOperationSpec = {\n path: \"{nextLink}\",\n httpMethod: \"GET\",\n responses: {\n 200: {\n bodyMapper: Mappers.DeploymentListResult,\n },\n default: {\n bodyMapper: Mappers.CloudError,\n },\n },\n urlParameters: [\n Parameters.$host,\n Parameters.nextLink,\n Parameters.subscriptionId,\n ],\n headerParameters: [Parameters.accept],\n serializer,\n};\nconst listByResourceGroupNextOperationSpec = {\n path: \"{nextLink}\",\n httpMethod: \"GET\",\n responses: {\n 200: {\n bodyMapper: Mappers.DeploymentListResult,\n },\n default: {\n bodyMapper: Mappers.CloudError,\n },\n },\n urlParameters: [\n Parameters.$host,\n Parameters.nextLink,\n Parameters.subscriptionId,\n Parameters.resourceGroupName,\n ],\n headerParameters: [Parameters.accept],\n serializer,\n};\n//# sourceMappingURL=deployments.js.map","\"use strict\";\n/*\n * Copyright (c) Microsoft Corporation.\n * Licensed under the MIT License.\n *\n * Code generated by Microsoft (R) AutoRest Code Generator.\n * Changes may cause incorrect behavior and will be lost if the code is regenerated.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ProvidersImpl = void 0;\nconst tslib_1 = require(\"tslib\");\nconst pagingHelper_js_1 = require(\"../pagingHelper.js\");\nconst coreClient = tslib_1.__importStar(require(\"@azure/core-client\"));\nconst Mappers = tslib_1.__importStar(require(\"../models/mappers.js\"));\nconst Parameters = tslib_1.__importStar(require(\"../models/parameters.js\"));\n/// \n/** Class containing Providers operations. */\nclass ProvidersImpl {\n /**\n * Initialize a new instance of the class Providers class.\n * @param client Reference to the service client\n */\n constructor(client) {\n this.client = client;\n }\n /**\n * Gets all resource providers for a subscription.\n * @param options The options parameters.\n */\n list(options) {\n const iter = this.listPagingAll(options);\n return {\n next() {\n return iter.next();\n },\n [Symbol.asyncIterator]() {\n return this;\n },\n byPage: (settings) => {\n if (settings === null || settings === void 0 ? void 0 : settings.maxPageSize) {\n throw new Error(\"maxPageSize is not supported by this operation.\");\n }\n return this.listPagingPage(options, settings);\n },\n };\n }\n listPagingPage(options, settings) {\n return tslib_1.__asyncGenerator(this, arguments, function* listPagingPage_1() {\n let result;\n let continuationToken = settings === null || settings === void 0 ? void 0 : settings.continuationToken;\n if (!continuationToken) {\n result = yield tslib_1.__await(this._list(options));\n let page = result.value || [];\n continuationToken = result.nextLink;\n (0, pagingHelper_js_1.setContinuationToken)(page, continuationToken);\n yield yield tslib_1.__await(page);\n }\n while (continuationToken) {\n result = yield tslib_1.__await(this._listNext(continuationToken, options));\n continuationToken = result.nextLink;\n let page = result.value || [];\n (0, pagingHelper_js_1.setContinuationToken)(page, continuationToken);\n yield yield tslib_1.__await(page);\n }\n });\n }\n listPagingAll(options) {\n return tslib_1.__asyncGenerator(this, arguments, function* listPagingAll_1() {\n var _a, e_1, _b, _c;\n try {\n for (var _d = true, _e = tslib_1.__asyncValues(this.listPagingPage(options)), _f; _f = yield tslib_1.__await(_e.next()), _a = _f.done, !_a; _d = true) {\n _c = _f.value;\n _d = false;\n const page = _c;\n yield tslib_1.__await(yield* tslib_1.__asyncDelegator(tslib_1.__asyncValues(page)));\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (!_d && !_a && (_b = _e.return)) yield tslib_1.__await(_b.call(_e));\n }\n finally { if (e_1) throw e_1.error; }\n }\n });\n }\n /**\n * Gets all resource providers for the tenant.\n * @param options The options parameters.\n */\n listAtTenantScope(options) {\n const iter = this.listAtTenantScopePagingAll(options);\n return {\n next() {\n return iter.next();\n },\n [Symbol.asyncIterator]() {\n return this;\n },\n byPage: (settings) => {\n if (settings === null || settings === void 0 ? void 0 : settings.maxPageSize) {\n throw new Error(\"maxPageSize is not supported by this operation.\");\n }\n return this.listAtTenantScopePagingPage(options, settings);\n },\n };\n }\n listAtTenantScopePagingPage(options, settings) {\n return tslib_1.__asyncGenerator(this, arguments, function* listAtTenantScopePagingPage_1() {\n let result;\n let continuationToken = settings === null || settings === void 0 ? void 0 : settings.continuationToken;\n if (!continuationToken) {\n result = yield tslib_1.__await(this._listAtTenantScope(options));\n let page = result.value || [];\n continuationToken = result.nextLink;\n (0, pagingHelper_js_1.setContinuationToken)(page, continuationToken);\n yield yield tslib_1.__await(page);\n }\n while (continuationToken) {\n result = yield tslib_1.__await(this._listAtTenantScopeNext(continuationToken, options));\n continuationToken = result.nextLink;\n let page = result.value || [];\n (0, pagingHelper_js_1.setContinuationToken)(page, continuationToken);\n yield yield tslib_1.__await(page);\n }\n });\n }\n listAtTenantScopePagingAll(options) {\n return tslib_1.__asyncGenerator(this, arguments, function* listAtTenantScopePagingAll_1() {\n var _a, e_2, _b, _c;\n try {\n for (var _d = true, _e = tslib_1.__asyncValues(this.listAtTenantScopePagingPage(options)), _f; _f = yield tslib_1.__await(_e.next()), _a = _f.done, !_a; _d = true) {\n _c = _f.value;\n _d = false;\n const page = _c;\n yield tslib_1.__await(yield* tslib_1.__asyncDelegator(tslib_1.__asyncValues(page)));\n }\n }\n catch (e_2_1) { e_2 = { error: e_2_1 }; }\n finally {\n try {\n if (!_d && !_a && (_b = _e.return)) yield tslib_1.__await(_b.call(_e));\n }\n finally { if (e_2) throw e_2.error; }\n }\n });\n }\n /**\n * Unregisters a subscription from a resource provider.\n * @param resourceProviderNamespace The namespace of the resource provider to unregister.\n * @param options The options parameters.\n */\n unregister(resourceProviderNamespace, options) {\n return this.client.sendOperationRequest({ resourceProviderNamespace, options }, unregisterOperationSpec);\n }\n /**\n * Registers a management group with a resource provider. Use this operation to register a resource\n * provider with resource types that can be deployed at the management group scope. It does not\n * recursively register subscriptions within the management group. Instead, you must register\n * subscriptions individually.\n * @param resourceProviderNamespace The namespace of the resource provider to register.\n * @param groupId The management group ID.\n * @param options The options parameters.\n */\n registerAtManagementGroupScope(resourceProviderNamespace, groupId, options) {\n return this.client.sendOperationRequest({ resourceProviderNamespace, groupId, options }, registerAtManagementGroupScopeOperationSpec);\n }\n /**\n * Get the provider permissions.\n * @param resourceProviderNamespace The namespace of the resource provider.\n * @param options The options parameters.\n */\n providerPermissions(resourceProviderNamespace, options) {\n return this.client.sendOperationRequest({ resourceProviderNamespace, options }, providerPermissionsOperationSpec);\n }\n /**\n * Registers a subscription with a resource provider.\n * @param resourceProviderNamespace The namespace of the resource provider to register.\n * @param options The options parameters.\n */\n register(resourceProviderNamespace, options) {\n return this.client.sendOperationRequest({ resourceProviderNamespace, options }, registerOperationSpec);\n }\n /**\n * Gets all resource providers for a subscription.\n * @param options The options parameters.\n */\n _list(options) {\n return this.client.sendOperationRequest({ options }, listOperationSpec);\n }\n /**\n * Gets all resource providers for the tenant.\n * @param options The options parameters.\n */\n _listAtTenantScope(options) {\n return this.client.sendOperationRequest({ options }, listAtTenantScopeOperationSpec);\n }\n /**\n * Gets the specified resource provider.\n * @param resourceProviderNamespace The namespace of the resource provider.\n * @param options The options parameters.\n */\n get(resourceProviderNamespace, options) {\n return this.client.sendOperationRequest({ resourceProviderNamespace, options }, getOperationSpec);\n }\n /**\n * Gets the specified resource provider at the tenant level.\n * @param resourceProviderNamespace The namespace of the resource provider.\n * @param options The options parameters.\n */\n getAtTenantScope(resourceProviderNamespace, options) {\n return this.client.sendOperationRequest({ resourceProviderNamespace, options }, getAtTenantScopeOperationSpec);\n }\n /**\n * ListNext\n * @param nextLink The nextLink from the previous successful call to the List method.\n * @param options The options parameters.\n */\n _listNext(nextLink, options) {\n return this.client.sendOperationRequest({ nextLink, options }, listNextOperationSpec);\n }\n /**\n * ListAtTenantScopeNext\n * @param nextLink The nextLink from the previous successful call to the ListAtTenantScope method.\n * @param options The options parameters.\n */\n _listAtTenantScopeNext(nextLink, options) {\n return this.client.sendOperationRequest({ nextLink, options }, listAtTenantScopeNextOperationSpec);\n }\n}\nexports.ProvidersImpl = ProvidersImpl;\n// Operation Specifications\nconst serializer = coreClient.createSerializer(Mappers, /* isXml */ false);\nconst unregisterOperationSpec = {\n path: \"/subscriptions/{subscriptionId}/providers/{resourceProviderNamespace}/unregister\",\n httpMethod: \"POST\",\n responses: {\n 200: {\n bodyMapper: Mappers.Provider,\n },\n default: {\n bodyMapper: Mappers.CloudError,\n },\n },\n queryParameters: [Parameters.apiVersion],\n urlParameters: [\n Parameters.$host,\n Parameters.subscriptionId,\n Parameters.resourceProviderNamespace,\n ],\n headerParameters: [Parameters.accept],\n serializer,\n};\nconst registerAtManagementGroupScopeOperationSpec = {\n path: \"/providers/Microsoft.Management/managementGroups/{groupId}/providers/{resourceProviderNamespace}/register\",\n httpMethod: \"POST\",\n responses: {\n 200: {},\n default: {\n bodyMapper: Mappers.CloudError,\n },\n },\n queryParameters: [Parameters.apiVersion],\n urlParameters: [\n Parameters.$host,\n Parameters.groupId,\n Parameters.resourceProviderNamespace,\n ],\n headerParameters: [Parameters.accept],\n serializer,\n};\nconst providerPermissionsOperationSpec = {\n path: \"/subscriptions/{subscriptionId}/providers/{resourceProviderNamespace}/providerPermissions\",\n httpMethod: \"GET\",\n responses: {\n 200: {\n bodyMapper: Mappers.ProviderPermissionListResult,\n },\n default: {\n bodyMapper: Mappers.CloudError,\n },\n },\n queryParameters: [Parameters.apiVersion],\n urlParameters: [\n Parameters.$host,\n Parameters.subscriptionId,\n Parameters.resourceProviderNamespace,\n ],\n headerParameters: [Parameters.accept],\n serializer,\n};\nconst registerOperationSpec = {\n path: \"/subscriptions/{subscriptionId}/providers/{resourceProviderNamespace}/register\",\n httpMethod: \"POST\",\n responses: {\n 200: {\n bodyMapper: Mappers.Provider,\n },\n default: {\n bodyMapper: Mappers.CloudError,\n },\n },\n requestBody: Parameters.properties,\n queryParameters: [Parameters.apiVersion],\n urlParameters: [\n Parameters.$host,\n Parameters.subscriptionId,\n Parameters.resourceProviderNamespace,\n ],\n headerParameters: [Parameters.accept, Parameters.contentType],\n mediaType: \"json\",\n serializer,\n};\nconst listOperationSpec = {\n path: \"/subscriptions/{subscriptionId}/providers\",\n httpMethod: \"GET\",\n responses: {\n 200: {\n bodyMapper: Mappers.ProviderListResult,\n },\n default: {\n bodyMapper: Mappers.CloudError,\n },\n },\n queryParameters: [Parameters.apiVersion, Parameters.expand],\n urlParameters: [Parameters.$host, Parameters.subscriptionId],\n headerParameters: [Parameters.accept],\n serializer,\n};\nconst listAtTenantScopeOperationSpec = {\n path: \"/providers\",\n httpMethod: \"GET\",\n responses: {\n 200: {\n bodyMapper: Mappers.ProviderListResult,\n },\n default: {\n bodyMapper: Mappers.CloudError,\n },\n },\n queryParameters: [Parameters.apiVersion, Parameters.expand],\n urlParameters: [Parameters.$host],\n headerParameters: [Parameters.accept],\n serializer,\n};\nconst getOperationSpec = {\n path: \"/subscriptions/{subscriptionId}/providers/{resourceProviderNamespace}\",\n httpMethod: \"GET\",\n responses: {\n 200: {\n bodyMapper: Mappers.Provider,\n },\n default: {\n bodyMapper: Mappers.CloudError,\n },\n },\n queryParameters: [Parameters.apiVersion, Parameters.expand],\n urlParameters: [\n Parameters.$host,\n Parameters.subscriptionId,\n Parameters.resourceProviderNamespace,\n ],\n headerParameters: [Parameters.accept],\n serializer,\n};\nconst getAtTenantScopeOperationSpec = {\n path: \"/providers/{resourceProviderNamespace}\",\n httpMethod: \"GET\",\n responses: {\n 200: {\n bodyMapper: Mappers.Provider,\n },\n default: {\n bodyMapper: Mappers.CloudError,\n },\n },\n queryParameters: [Parameters.apiVersion, Parameters.expand],\n urlParameters: [Parameters.$host, Parameters.resourceProviderNamespace],\n headerParameters: [Parameters.accept],\n serializer,\n};\nconst listNextOperationSpec = {\n path: \"{nextLink}\",\n httpMethod: \"GET\",\n responses: {\n 200: {\n bodyMapper: Mappers.ProviderListResult,\n },\n default: {\n bodyMapper: Mappers.CloudError,\n },\n },\n urlParameters: [\n Parameters.$host,\n Parameters.nextLink,\n Parameters.subscriptionId,\n ],\n headerParameters: [Parameters.accept],\n serializer,\n};\nconst listAtTenantScopeNextOperationSpec = {\n path: \"{nextLink}\",\n httpMethod: \"GET\",\n responses: {\n 200: {\n bodyMapper: Mappers.ProviderListResult,\n },\n default: {\n bodyMapper: Mappers.CloudError,\n },\n },\n urlParameters: [Parameters.$host, Parameters.nextLink],\n headerParameters: [Parameters.accept],\n serializer,\n};\n//# sourceMappingURL=providers.js.map","\"use strict\";\n/*\n * Copyright (c) Microsoft Corporation.\n * Licensed under the MIT License.\n *\n * Code generated by Microsoft (R) AutoRest Code Generator.\n * Changes may cause incorrect behavior and will be lost if the code is regenerated.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ProviderResourceTypesImpl = void 0;\nconst tslib_1 = require(\"tslib\");\nconst coreClient = tslib_1.__importStar(require(\"@azure/core-client\"));\nconst Mappers = tslib_1.__importStar(require(\"../models/mappers.js\"));\nconst Parameters = tslib_1.__importStar(require(\"../models/parameters.js\"));\n/** Class containing ProviderResourceTypes operations. */\nclass ProviderResourceTypesImpl {\n /**\n * Initialize a new instance of the class ProviderResourceTypes class.\n * @param client Reference to the service client\n */\n constructor(client) {\n this.client = client;\n }\n /**\n * List the resource types for a specified resource provider.\n * @param resourceProviderNamespace The namespace of the resource provider.\n * @param options The options parameters.\n */\n list(resourceProviderNamespace, options) {\n return this.client.sendOperationRequest({ resourceProviderNamespace, options }, listOperationSpec);\n }\n}\nexports.ProviderResourceTypesImpl = ProviderResourceTypesImpl;\n// Operation Specifications\nconst serializer = coreClient.createSerializer(Mappers, /* isXml */ false);\nconst listOperationSpec = {\n path: \"/subscriptions/{subscriptionId}/providers/{resourceProviderNamespace}/resourceTypes\",\n httpMethod: \"GET\",\n responses: {\n 200: {\n bodyMapper: Mappers.ProviderResourceTypeListResult,\n },\n default: {\n bodyMapper: Mappers.CloudError,\n },\n },\n queryParameters: [Parameters.apiVersion, Parameters.expand],\n urlParameters: [\n Parameters.$host,\n Parameters.subscriptionId,\n Parameters.resourceProviderNamespace,\n ],\n headerParameters: [Parameters.accept],\n serializer,\n};\n//# sourceMappingURL=providerResourceTypes.js.map","\"use strict\";\n/*\n * Copyright (c) Microsoft Corporation.\n * Licensed under the MIT License.\n *\n * Code generated by Microsoft (R) AutoRest Code Generator.\n * Changes may cause incorrect behavior and will be lost if the code is regenerated.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ResourcesImpl = void 0;\nconst tslib_1 = require(\"tslib\");\nconst pagingHelper_js_1 = require(\"../pagingHelper.js\");\nconst coreClient = tslib_1.__importStar(require(\"@azure/core-client\"));\nconst Mappers = tslib_1.__importStar(require(\"../models/mappers.js\"));\nconst Parameters = tslib_1.__importStar(require(\"../models/parameters.js\"));\nconst core_lro_1 = require(\"@azure/core-lro\");\nconst lroImpl_js_1 = require(\"../lroImpl.js\");\n/// \n/** Class containing Resources operations. */\nclass ResourcesImpl {\n /**\n * Initialize a new instance of the class Resources class.\n * @param client Reference to the service client\n */\n constructor(client) {\n this.client = client;\n }\n /**\n * Get all the resources for a resource group.\n * @param resourceGroupName The resource group with the resources to get.\n * @param options The options parameters.\n */\n listByResourceGroup(resourceGroupName, options) {\n const iter = this.listByResourceGroupPagingAll(resourceGroupName, options);\n return {\n next() {\n return iter.next();\n },\n [Symbol.asyncIterator]() {\n return this;\n },\n byPage: (settings) => {\n if (settings === null || settings === void 0 ? void 0 : settings.maxPageSize) {\n throw new Error(\"maxPageSize is not supported by this operation.\");\n }\n return this.listByResourceGroupPagingPage(resourceGroupName, options, settings);\n },\n };\n }\n listByResourceGroupPagingPage(resourceGroupName, options, settings) {\n return tslib_1.__asyncGenerator(this, arguments, function* listByResourceGroupPagingPage_1() {\n let result;\n let continuationToken = settings === null || settings === void 0 ? void 0 : settings.continuationToken;\n if (!continuationToken) {\n result = yield tslib_1.__await(this._listByResourceGroup(resourceGroupName, options));\n let page = result.value || [];\n continuationToken = result.nextLink;\n (0, pagingHelper_js_1.setContinuationToken)(page, continuationToken);\n yield yield tslib_1.__await(page);\n }\n while (continuationToken) {\n result = yield tslib_1.__await(this._listByResourceGroupNext(resourceGroupName, continuationToken, options));\n continuationToken = result.nextLink;\n let page = result.value || [];\n (0, pagingHelper_js_1.setContinuationToken)(page, continuationToken);\n yield yield tslib_1.__await(page);\n }\n });\n }\n listByResourceGroupPagingAll(resourceGroupName, options) {\n return tslib_1.__asyncGenerator(this, arguments, function* listByResourceGroupPagingAll_1() {\n var _a, e_1, _b, _c;\n try {\n for (var _d = true, _e = tslib_1.__asyncValues(this.listByResourceGroupPagingPage(resourceGroupName, options)), _f; _f = yield tslib_1.__await(_e.next()), _a = _f.done, !_a; _d = true) {\n _c = _f.value;\n _d = false;\n const page = _c;\n yield tslib_1.__await(yield* tslib_1.__asyncDelegator(tslib_1.__asyncValues(page)));\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (!_d && !_a && (_b = _e.return)) yield tslib_1.__await(_b.call(_e));\n }\n finally { if (e_1) throw e_1.error; }\n }\n });\n }\n /**\n * Get all the resources in a subscription.\n * @param options The options parameters.\n */\n list(options) {\n const iter = this.listPagingAll(options);\n return {\n next() {\n return iter.next();\n },\n [Symbol.asyncIterator]() {\n return this;\n },\n byPage: (settings) => {\n if (settings === null || settings === void 0 ? void 0 : settings.maxPageSize) {\n throw new Error(\"maxPageSize is not supported by this operation.\");\n }\n return this.listPagingPage(options, settings);\n },\n };\n }\n listPagingPage(options, settings) {\n return tslib_1.__asyncGenerator(this, arguments, function* listPagingPage_1() {\n let result;\n let continuationToken = settings === null || settings === void 0 ? void 0 : settings.continuationToken;\n if (!continuationToken) {\n result = yield tslib_1.__await(this._list(options));\n let page = result.value || [];\n continuationToken = result.nextLink;\n (0, pagingHelper_js_1.setContinuationToken)(page, continuationToken);\n yield yield tslib_1.__await(page);\n }\n while (continuationToken) {\n result = yield tslib_1.__await(this._listNext(continuationToken, options));\n continuationToken = result.nextLink;\n let page = result.value || [];\n (0, pagingHelper_js_1.setContinuationToken)(page, continuationToken);\n yield yield tslib_1.__await(page);\n }\n });\n }\n listPagingAll(options) {\n return tslib_1.__asyncGenerator(this, arguments, function* listPagingAll_1() {\n var _a, e_2, _b, _c;\n try {\n for (var _d = true, _e = tslib_1.__asyncValues(this.listPagingPage(options)), _f; _f = yield tslib_1.__await(_e.next()), _a = _f.done, !_a; _d = true) {\n _c = _f.value;\n _d = false;\n const page = _c;\n yield tslib_1.__await(yield* tslib_1.__asyncDelegator(tslib_1.__asyncValues(page)));\n }\n }\n catch (e_2_1) { e_2 = { error: e_2_1 }; }\n finally {\n try {\n if (!_d && !_a && (_b = _e.return)) yield tslib_1.__await(_b.call(_e));\n }\n finally { if (e_2) throw e_2.error; }\n }\n });\n }\n /**\n * Get all the resources for a resource group.\n * @param resourceGroupName The resource group with the resources to get.\n * @param options The options parameters.\n */\n _listByResourceGroup(resourceGroupName, options) {\n return this.client.sendOperationRequest({ resourceGroupName, options }, listByResourceGroupOperationSpec);\n }\n /**\n * The resources to be moved must be in the same source resource group in the source subscription being\n * used. The target resource group may be in a different subscription. When moving resources, both the\n * source group and the target group are locked for the duration of the operation. Write and delete\n * operations are blocked on the groups until the move completes.\n * @param sourceResourceGroupName The name of the resource group from the source subscription\n * containing the resources to be moved.\n * @param parameters Parameters for moving resources.\n * @param options The options parameters.\n */\n async beginMoveResources(sourceResourceGroupName, parameters, options) {\n const directSendOperation = async (args, spec) => {\n return this.client.sendOperationRequest(args, spec);\n };\n const sendOperationFn = async (args, spec) => {\n var _a;\n let currentRawResponse = undefined;\n const providedCallback = (_a = args.options) === null || _a === void 0 ? void 0 : _a.onResponse;\n const callback = (rawResponse, flatResponse) => {\n currentRawResponse = rawResponse;\n providedCallback === null || providedCallback === void 0 ? void 0 : providedCallback(rawResponse, flatResponse);\n };\n const updatedArgs = Object.assign(Object.assign({}, args), { options: Object.assign(Object.assign({}, args.options), { onResponse: callback }) });\n const flatResponse = await directSendOperation(updatedArgs, spec);\n return {\n flatResponse,\n rawResponse: {\n statusCode: currentRawResponse.status,\n body: currentRawResponse.parsedBody,\n headers: currentRawResponse.headers.toJSON(),\n },\n };\n };\n const lro = (0, lroImpl_js_1.createLroSpec)({\n sendOperationFn,\n args: { sourceResourceGroupName, parameters, options },\n spec: moveResourcesOperationSpec,\n });\n const poller = await (0, core_lro_1.createHttpPoller)(lro, {\n restoreFrom: options === null || options === void 0 ? void 0 : options.resumeFrom,\n intervalInMs: options === null || options === void 0 ? void 0 : options.updateIntervalInMs,\n });\n await poller.poll();\n return poller;\n }\n /**\n * The resources to be moved must be in the same source resource group in the source subscription being\n * used. The target resource group may be in a different subscription. When moving resources, both the\n * source group and the target group are locked for the duration of the operation. Write and delete\n * operations are blocked on the groups until the move completes.\n * @param sourceResourceGroupName The name of the resource group from the source subscription\n * containing the resources to be moved.\n * @param parameters Parameters for moving resources.\n * @param options The options parameters.\n */\n async beginMoveResourcesAndWait(sourceResourceGroupName, parameters, options) {\n const poller = await this.beginMoveResources(sourceResourceGroupName, parameters, options);\n return poller.pollUntilDone();\n }\n /**\n * This operation checks whether the specified resources can be moved to the target. The resources to\n * be moved must be in the same source resource group in the source subscription being used. The target\n * resource group may be in a different subscription. If validation succeeds, it returns HTTP response\n * code 204 (no content). If validation fails, it returns HTTP response code 409 (Conflict) with an\n * error message. Retrieve the URL in the Location header value to check the result of the long-running\n * operation.\n * @param sourceResourceGroupName The name of the resource group from the source subscription\n * containing the resources to be validated for move.\n * @param parameters Parameters for moving resources.\n * @param options The options parameters.\n */\n async beginValidateMoveResources(sourceResourceGroupName, parameters, options) {\n const directSendOperation = async (args, spec) => {\n return this.client.sendOperationRequest(args, spec);\n };\n const sendOperationFn = async (args, spec) => {\n var _a;\n let currentRawResponse = undefined;\n const providedCallback = (_a = args.options) === null || _a === void 0 ? void 0 : _a.onResponse;\n const callback = (rawResponse, flatResponse) => {\n currentRawResponse = rawResponse;\n providedCallback === null || providedCallback === void 0 ? void 0 : providedCallback(rawResponse, flatResponse);\n };\n const updatedArgs = Object.assign(Object.assign({}, args), { options: Object.assign(Object.assign({}, args.options), { onResponse: callback }) });\n const flatResponse = await directSendOperation(updatedArgs, spec);\n return {\n flatResponse,\n rawResponse: {\n statusCode: currentRawResponse.status,\n body: currentRawResponse.parsedBody,\n headers: currentRawResponse.headers.toJSON(),\n },\n };\n };\n const lro = (0, lroImpl_js_1.createLroSpec)({\n sendOperationFn,\n args: { sourceResourceGroupName, parameters, options },\n spec: validateMoveResourcesOperationSpec,\n });\n const poller = await (0, core_lro_1.createHttpPoller)(lro, {\n restoreFrom: options === null || options === void 0 ? void 0 : options.resumeFrom,\n intervalInMs: options === null || options === void 0 ? void 0 : options.updateIntervalInMs,\n });\n await poller.poll();\n return poller;\n }\n /**\n * This operation checks whether the specified resources can be moved to the target. The resources to\n * be moved must be in the same source resource group in the source subscription being used. The target\n * resource group may be in a different subscription. If validation succeeds, it returns HTTP response\n * code 204 (no content). If validation fails, it returns HTTP response code 409 (Conflict) with an\n * error message. Retrieve the URL in the Location header value to check the result of the long-running\n * operation.\n * @param sourceResourceGroupName The name of the resource group from the source subscription\n * containing the resources to be validated for move.\n * @param parameters Parameters for moving resources.\n * @param options The options parameters.\n */\n async beginValidateMoveResourcesAndWait(sourceResourceGroupName, parameters, options) {\n const poller = await this.beginValidateMoveResources(sourceResourceGroupName, parameters, options);\n return poller.pollUntilDone();\n }\n /**\n * Get all the resources in a subscription.\n * @param options The options parameters.\n */\n _list(options) {\n return this.client.sendOperationRequest({ options }, listOperationSpec);\n }\n /**\n * Checks whether a resource exists.\n * @param resourceGroupName The name of the resource group containing the resource to check. The name\n * is case insensitive.\n * @param resourceProviderNamespace The resource provider of the resource to check.\n * @param parentResourcePath The parent resource identity.\n * @param resourceType The resource type.\n * @param resourceName The name of the resource to check whether it exists.\n * @param apiVersion The API version to use for the operation.\n * @param options The options parameters.\n */\n checkExistence(resourceGroupName, resourceProviderNamespace, parentResourcePath, resourceType, resourceName, apiVersion, options) {\n return this.client.sendOperationRequest({\n resourceGroupName,\n resourceProviderNamespace,\n parentResourcePath,\n resourceType,\n resourceName,\n apiVersion,\n options,\n }, checkExistenceOperationSpec);\n }\n /**\n * Deletes a resource.\n * @param resourceGroupName The name of the resource group that contains the resource to delete. The\n * name is case insensitive.\n * @param resourceProviderNamespace The namespace of the resource provider.\n * @param parentResourcePath The parent resource identity.\n * @param resourceType The resource type.\n * @param resourceName The name of the resource to delete.\n * @param apiVersion The API version to use for the operation.\n * @param options The options parameters.\n */\n async beginDelete(resourceGroupName, resourceProviderNamespace, parentResourcePath, resourceType, resourceName, apiVersion, options) {\n const directSendOperation = async (args, spec) => {\n return this.client.sendOperationRequest(args, spec);\n };\n const sendOperationFn = async (args, spec) => {\n var _a;\n let currentRawResponse = undefined;\n const providedCallback = (_a = args.options) === null || _a === void 0 ? void 0 : _a.onResponse;\n const callback = (rawResponse, flatResponse) => {\n currentRawResponse = rawResponse;\n providedCallback === null || providedCallback === void 0 ? void 0 : providedCallback(rawResponse, flatResponse);\n };\n const updatedArgs = Object.assign(Object.assign({}, args), { options: Object.assign(Object.assign({}, args.options), { onResponse: callback }) });\n const flatResponse = await directSendOperation(updatedArgs, spec);\n return {\n flatResponse,\n rawResponse: {\n statusCode: currentRawResponse.status,\n body: currentRawResponse.parsedBody,\n headers: currentRawResponse.headers.toJSON(),\n },\n };\n };\n const lro = (0, lroImpl_js_1.createLroSpec)({\n sendOperationFn,\n args: {\n resourceGroupName,\n resourceProviderNamespace,\n parentResourcePath,\n resourceType,\n resourceName,\n apiVersion,\n options,\n },\n spec: deleteOperationSpec,\n });\n const poller = await (0, core_lro_1.createHttpPoller)(lro, {\n restoreFrom: options === null || options === void 0 ? void 0 : options.resumeFrom,\n intervalInMs: options === null || options === void 0 ? void 0 : options.updateIntervalInMs,\n });\n await poller.poll();\n return poller;\n }\n /**\n * Deletes a resource.\n * @param resourceGroupName The name of the resource group that contains the resource to delete. The\n * name is case insensitive.\n * @param resourceProviderNamespace The namespace of the resource provider.\n * @param parentResourcePath The parent resource identity.\n * @param resourceType The resource type.\n * @param resourceName The name of the resource to delete.\n * @param apiVersion The API version to use for the operation.\n * @param options The options parameters.\n */\n async beginDeleteAndWait(resourceGroupName, resourceProviderNamespace, parentResourcePath, resourceType, resourceName, apiVersion, options) {\n const poller = await this.beginDelete(resourceGroupName, resourceProviderNamespace, parentResourcePath, resourceType, resourceName, apiVersion, options);\n return poller.pollUntilDone();\n }\n /**\n * Creates a resource.\n * @param resourceGroupName The name of the resource group for the resource. The name is case\n * insensitive.\n * @param resourceProviderNamespace The namespace of the resource provider.\n * @param parentResourcePath The parent resource identity.\n * @param resourceType The resource type of the resource to create.\n * @param resourceName The name of the resource to create.\n * @param apiVersion The API version to use for the operation.\n * @param parameters Parameters for creating or updating the resource.\n * @param options The options parameters.\n */\n async beginCreateOrUpdate(resourceGroupName, resourceProviderNamespace, parentResourcePath, resourceType, resourceName, apiVersion, parameters, options) {\n const directSendOperation = async (args, spec) => {\n return this.client.sendOperationRequest(args, spec);\n };\n const sendOperationFn = async (args, spec) => {\n var _a;\n let currentRawResponse = undefined;\n const providedCallback = (_a = args.options) === null || _a === void 0 ? void 0 : _a.onResponse;\n const callback = (rawResponse, flatResponse) => {\n currentRawResponse = rawResponse;\n providedCallback === null || providedCallback === void 0 ? void 0 : providedCallback(rawResponse, flatResponse);\n };\n const updatedArgs = Object.assign(Object.assign({}, args), { options: Object.assign(Object.assign({}, args.options), { onResponse: callback }) });\n const flatResponse = await directSendOperation(updatedArgs, spec);\n return {\n flatResponse,\n rawResponse: {\n statusCode: currentRawResponse.status,\n body: currentRawResponse.parsedBody,\n headers: currentRawResponse.headers.toJSON(),\n },\n };\n };\n const lro = (0, lroImpl_js_1.createLroSpec)({\n sendOperationFn,\n args: {\n resourceGroupName,\n resourceProviderNamespace,\n parentResourcePath,\n resourceType,\n resourceName,\n apiVersion,\n parameters,\n options,\n },\n spec: createOrUpdateOperationSpec,\n });\n const poller = await (0, core_lro_1.createHttpPoller)(lro, {\n restoreFrom: options === null || options === void 0 ? void 0 : options.resumeFrom,\n intervalInMs: options === null || options === void 0 ? void 0 : options.updateIntervalInMs,\n });\n await poller.poll();\n return poller;\n }\n /**\n * Creates a resource.\n * @param resourceGroupName The name of the resource group for the resource. The name is case\n * insensitive.\n * @param resourceProviderNamespace The namespace of the resource provider.\n * @param parentResourcePath The parent resource identity.\n * @param resourceType The resource type of the resource to create.\n * @param resourceName The name of the resource to create.\n * @param apiVersion The API version to use for the operation.\n * @param parameters Parameters for creating or updating the resource.\n * @param options The options parameters.\n */\n async beginCreateOrUpdateAndWait(resourceGroupName, resourceProviderNamespace, parentResourcePath, resourceType, resourceName, apiVersion, parameters, options) {\n const poller = await this.beginCreateOrUpdate(resourceGroupName, resourceProviderNamespace, parentResourcePath, resourceType, resourceName, apiVersion, parameters, options);\n return poller.pollUntilDone();\n }\n /**\n * Updates a resource.\n * @param resourceGroupName The name of the resource group for the resource. The name is case\n * insensitive.\n * @param resourceProviderNamespace The namespace of the resource provider.\n * @param parentResourcePath The parent resource identity.\n * @param resourceType The resource type of the resource to update.\n * @param resourceName The name of the resource to update.\n * @param apiVersion The API version to use for the operation.\n * @param parameters Parameters for updating the resource.\n * @param options The options parameters.\n */\n async beginUpdate(resourceGroupName, resourceProviderNamespace, parentResourcePath, resourceType, resourceName, apiVersion, parameters, options) {\n const directSendOperation = async (args, spec) => {\n return this.client.sendOperationRequest(args, spec);\n };\n const sendOperationFn = async (args, spec) => {\n var _a;\n let currentRawResponse = undefined;\n const providedCallback = (_a = args.options) === null || _a === void 0 ? void 0 : _a.onResponse;\n const callback = (rawResponse, flatResponse) => {\n currentRawResponse = rawResponse;\n providedCallback === null || providedCallback === void 0 ? void 0 : providedCallback(rawResponse, flatResponse);\n };\n const updatedArgs = Object.assign(Object.assign({}, args), { options: Object.assign(Object.assign({}, args.options), { onResponse: callback }) });\n const flatResponse = await directSendOperation(updatedArgs, spec);\n return {\n flatResponse,\n rawResponse: {\n statusCode: currentRawResponse.status,\n body: currentRawResponse.parsedBody,\n headers: currentRawResponse.headers.toJSON(),\n },\n };\n };\n const lro = (0, lroImpl_js_1.createLroSpec)({\n sendOperationFn,\n args: {\n resourceGroupName,\n resourceProviderNamespace,\n parentResourcePath,\n resourceType,\n resourceName,\n apiVersion,\n parameters,\n options,\n },\n spec: updateOperationSpec,\n });\n const poller = await (0, core_lro_1.createHttpPoller)(lro, {\n restoreFrom: options === null || options === void 0 ? void 0 : options.resumeFrom,\n intervalInMs: options === null || options === void 0 ? void 0 : options.updateIntervalInMs,\n });\n await poller.poll();\n return poller;\n }\n /**\n * Updates a resource.\n * @param resourceGroupName The name of the resource group for the resource. The name is case\n * insensitive.\n * @param resourceProviderNamespace The namespace of the resource provider.\n * @param parentResourcePath The parent resource identity.\n * @param resourceType The resource type of the resource to update.\n * @param resourceName The name of the resource to update.\n * @param apiVersion The API version to use for the operation.\n * @param parameters Parameters for updating the resource.\n * @param options The options parameters.\n */\n async beginUpdateAndWait(resourceGroupName, resourceProviderNamespace, parentResourcePath, resourceType, resourceName, apiVersion, parameters, options) {\n const poller = await this.beginUpdate(resourceGroupName, resourceProviderNamespace, parentResourcePath, resourceType, resourceName, apiVersion, parameters, options);\n return poller.pollUntilDone();\n }\n /**\n * Gets a resource.\n * @param resourceGroupName The name of the resource group containing the resource to get. The name is\n * case insensitive.\n * @param resourceProviderNamespace The namespace of the resource provider.\n * @param parentResourcePath The parent resource identity.\n * @param resourceType The resource type of the resource.\n * @param resourceName The name of the resource to get.\n * @param apiVersion The API version to use for the operation.\n * @param options The options parameters.\n */\n get(resourceGroupName, resourceProviderNamespace, parentResourcePath, resourceType, resourceName, apiVersion, options) {\n return this.client.sendOperationRequest({\n resourceGroupName,\n resourceProviderNamespace,\n parentResourcePath,\n resourceType,\n resourceName,\n apiVersion,\n options,\n }, getOperationSpec);\n }\n /**\n * Checks by ID whether a resource exists. This API currently works only for a limited set of Resource\n * providers. In the event that a Resource provider does not implement this API, ARM will respond with\n * a 405. The alternative then is to use the GET API to check for the existence of the resource.\n * @param resourceId The fully qualified ID of the resource, including the resource name and resource\n * type. Use the format,\n * /subscriptions/{guid}/resourceGroups/{resource-group-name}/{resource-provider-namespace}/{resource-type}/{resource-name}\n * @param apiVersion The API version to use for the operation.\n * @param options The options parameters.\n */\n checkExistenceById(resourceId, apiVersion, options) {\n return this.client.sendOperationRequest({ resourceId, apiVersion, options }, checkExistenceByIdOperationSpec);\n }\n /**\n * Deletes a resource by ID.\n * @param resourceId The fully qualified ID of the resource, including the resource name and resource\n * type. Use the format,\n * /subscriptions/{guid}/resourceGroups/{resource-group-name}/{resource-provider-namespace}/{resource-type}/{resource-name}\n * @param apiVersion The API version to use for the operation.\n * @param options The options parameters.\n */\n async beginDeleteById(resourceId, apiVersion, options) {\n const directSendOperation = async (args, spec) => {\n return this.client.sendOperationRequest(args, spec);\n };\n const sendOperationFn = async (args, spec) => {\n var _a;\n let currentRawResponse = undefined;\n const providedCallback = (_a = args.options) === null || _a === void 0 ? void 0 : _a.onResponse;\n const callback = (rawResponse, flatResponse) => {\n currentRawResponse = rawResponse;\n providedCallback === null || providedCallback === void 0 ? void 0 : providedCallback(rawResponse, flatResponse);\n };\n const updatedArgs = Object.assign(Object.assign({}, args), { options: Object.assign(Object.assign({}, args.options), { onResponse: callback }) });\n const flatResponse = await directSendOperation(updatedArgs, spec);\n return {\n flatResponse,\n rawResponse: {\n statusCode: currentRawResponse.status,\n body: currentRawResponse.parsedBody,\n headers: currentRawResponse.headers.toJSON(),\n },\n };\n };\n const lro = (0, lroImpl_js_1.createLroSpec)({\n sendOperationFn,\n args: { resourceId, apiVersion, options },\n spec: deleteByIdOperationSpec,\n });\n const poller = await (0, core_lro_1.createHttpPoller)(lro, {\n restoreFrom: options === null || options === void 0 ? void 0 : options.resumeFrom,\n intervalInMs: options === null || options === void 0 ? void 0 : options.updateIntervalInMs,\n });\n await poller.poll();\n return poller;\n }\n /**\n * Deletes a resource by ID.\n * @param resourceId The fully qualified ID of the resource, including the resource name and resource\n * type. Use the format,\n * /subscriptions/{guid}/resourceGroups/{resource-group-name}/{resource-provider-namespace}/{resource-type}/{resource-name}\n * @param apiVersion The API version to use for the operation.\n * @param options The options parameters.\n */\n async beginDeleteByIdAndWait(resourceId, apiVersion, options) {\n const poller = await this.beginDeleteById(resourceId, apiVersion, options);\n return poller.pollUntilDone();\n }\n /**\n * Create a resource by ID.\n * @param resourceId The fully qualified ID of the resource, including the resource name and resource\n * type. Use the format,\n * /subscriptions/{guid}/resourceGroups/{resource-group-name}/{resource-provider-namespace}/{resource-type}/{resource-name}\n * @param apiVersion The API version to use for the operation.\n * @param parameters Create or update resource parameters.\n * @param options The options parameters.\n */\n async beginCreateOrUpdateById(resourceId, apiVersion, parameters, options) {\n const directSendOperation = async (args, spec) => {\n return this.client.sendOperationRequest(args, spec);\n };\n const sendOperationFn = async (args, spec) => {\n var _a;\n let currentRawResponse = undefined;\n const providedCallback = (_a = args.options) === null || _a === void 0 ? void 0 : _a.onResponse;\n const callback = (rawResponse, flatResponse) => {\n currentRawResponse = rawResponse;\n providedCallback === null || providedCallback === void 0 ? void 0 : providedCallback(rawResponse, flatResponse);\n };\n const updatedArgs = Object.assign(Object.assign({}, args), { options: Object.assign(Object.assign({}, args.options), { onResponse: callback }) });\n const flatResponse = await directSendOperation(updatedArgs, spec);\n return {\n flatResponse,\n rawResponse: {\n statusCode: currentRawResponse.status,\n body: currentRawResponse.parsedBody,\n headers: currentRawResponse.headers.toJSON(),\n },\n };\n };\n const lro = (0, lroImpl_js_1.createLroSpec)({\n sendOperationFn,\n args: { resourceId, apiVersion, parameters, options },\n spec: createOrUpdateByIdOperationSpec,\n });\n const poller = await (0, core_lro_1.createHttpPoller)(lro, {\n restoreFrom: options === null || options === void 0 ? void 0 : options.resumeFrom,\n intervalInMs: options === null || options === void 0 ? void 0 : options.updateIntervalInMs,\n });\n await poller.poll();\n return poller;\n }\n /**\n * Create a resource by ID.\n * @param resourceId The fully qualified ID of the resource, including the resource name and resource\n * type. Use the format,\n * /subscriptions/{guid}/resourceGroups/{resource-group-name}/{resource-provider-namespace}/{resource-type}/{resource-name}\n * @param apiVersion The API version to use for the operation.\n * @param parameters Create or update resource parameters.\n * @param options The options parameters.\n */\n async beginCreateOrUpdateByIdAndWait(resourceId, apiVersion, parameters, options) {\n const poller = await this.beginCreateOrUpdateById(resourceId, apiVersion, parameters, options);\n return poller.pollUntilDone();\n }\n /**\n * Updates a resource by ID.\n * @param resourceId The fully qualified ID of the resource, including the resource name and resource\n * type. Use the format,\n * /subscriptions/{guid}/resourceGroups/{resource-group-name}/{resource-provider-namespace}/{resource-type}/{resource-name}\n * @param apiVersion The API version to use for the operation.\n * @param parameters Update resource parameters.\n * @param options The options parameters.\n */\n async beginUpdateById(resourceId, apiVersion, parameters, options) {\n const directSendOperation = async (args, spec) => {\n return this.client.sendOperationRequest(args, spec);\n };\n const sendOperationFn = async (args, spec) => {\n var _a;\n let currentRawResponse = undefined;\n const providedCallback = (_a = args.options) === null || _a === void 0 ? void 0 : _a.onResponse;\n const callback = (rawResponse, flatResponse) => {\n currentRawResponse = rawResponse;\n providedCallback === null || providedCallback === void 0 ? void 0 : providedCallback(rawResponse, flatResponse);\n };\n const updatedArgs = Object.assign(Object.assign({}, args), { options: Object.assign(Object.assign({}, args.options), { onResponse: callback }) });\n const flatResponse = await directSendOperation(updatedArgs, spec);\n return {\n flatResponse,\n rawResponse: {\n statusCode: currentRawResponse.status,\n body: currentRawResponse.parsedBody,\n headers: currentRawResponse.headers.toJSON(),\n },\n };\n };\n const lro = (0, lroImpl_js_1.createLroSpec)({\n sendOperationFn,\n args: { resourceId, apiVersion, parameters, options },\n spec: updateByIdOperationSpec,\n });\n const poller = await (0, core_lro_1.createHttpPoller)(lro, {\n restoreFrom: options === null || options === void 0 ? void 0 : options.resumeFrom,\n intervalInMs: options === null || options === void 0 ? void 0 : options.updateIntervalInMs,\n });\n await poller.poll();\n return poller;\n }\n /**\n * Updates a resource by ID.\n * @param resourceId The fully qualified ID of the resource, including the resource name and resource\n * type. Use the format,\n * /subscriptions/{guid}/resourceGroups/{resource-group-name}/{resource-provider-namespace}/{resource-type}/{resource-name}\n * @param apiVersion The API version to use for the operation.\n * @param parameters Update resource parameters.\n * @param options The options parameters.\n */\n async beginUpdateByIdAndWait(resourceId, apiVersion, parameters, options) {\n const poller = await this.beginUpdateById(resourceId, apiVersion, parameters, options);\n return poller.pollUntilDone();\n }\n /**\n * Gets a resource by ID.\n * @param resourceId The fully qualified ID of the resource, including the resource name and resource\n * type. Use the format,\n * /subscriptions/{guid}/resourceGroups/{resource-group-name}/{resource-provider-namespace}/{resource-type}/{resource-name}\n * @param apiVersion The API version to use for the operation.\n * @param options The options parameters.\n */\n getById(resourceId, apiVersion, options) {\n return this.client.sendOperationRequest({ resourceId, apiVersion, options }, getByIdOperationSpec);\n }\n /**\n * ListByResourceGroupNext\n * @param resourceGroupName The resource group with the resources to get.\n * @param nextLink The nextLink from the previous successful call to the ListByResourceGroup method.\n * @param options The options parameters.\n */\n _listByResourceGroupNext(resourceGroupName, nextLink, options) {\n return this.client.sendOperationRequest({ resourceGroupName, nextLink, options }, listByResourceGroupNextOperationSpec);\n }\n /**\n * ListNext\n * @param nextLink The nextLink from the previous successful call to the List method.\n * @param options The options parameters.\n */\n _listNext(nextLink, options) {\n return this.client.sendOperationRequest({ nextLink, options }, listNextOperationSpec);\n }\n}\nexports.ResourcesImpl = ResourcesImpl;\n// Operation Specifications\nconst serializer = coreClient.createSerializer(Mappers, /* isXml */ false);\nconst listByResourceGroupOperationSpec = {\n path: \"/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/resources\",\n httpMethod: \"GET\",\n responses: {\n 200: {\n bodyMapper: Mappers.ResourceListResult,\n },\n default: {\n bodyMapper: Mappers.CloudError,\n },\n },\n queryParameters: [\n Parameters.apiVersion,\n Parameters.filter,\n Parameters.top,\n Parameters.expand,\n ],\n urlParameters: [\n Parameters.$host,\n Parameters.subscriptionId,\n Parameters.resourceGroupName,\n ],\n headerParameters: [Parameters.accept],\n serializer,\n};\nconst moveResourcesOperationSpec = {\n path: \"/subscriptions/{subscriptionId}/resourceGroups/{sourceResourceGroupName}/moveResources\",\n httpMethod: \"POST\",\n responses: {\n 200: {},\n 201: {},\n 202: {},\n 204: {},\n default: {\n bodyMapper: Mappers.CloudError,\n },\n },\n requestBody: Parameters.parameters4,\n queryParameters: [Parameters.apiVersion],\n urlParameters: [\n Parameters.$host,\n Parameters.subscriptionId,\n Parameters.sourceResourceGroupName,\n ],\n headerParameters: [Parameters.accept, Parameters.contentType],\n mediaType: \"json\",\n serializer,\n};\nconst validateMoveResourcesOperationSpec = {\n path: \"/subscriptions/{subscriptionId}/resourceGroups/{sourceResourceGroupName}/validateMoveResources\",\n httpMethod: \"POST\",\n responses: {\n 200: {},\n 201: {},\n 202: {},\n 204: {},\n default: {\n bodyMapper: Mappers.CloudError,\n },\n },\n requestBody: Parameters.parameters4,\n queryParameters: [Parameters.apiVersion],\n urlParameters: [\n Parameters.$host,\n Parameters.subscriptionId,\n Parameters.sourceResourceGroupName,\n ],\n headerParameters: [Parameters.accept, Parameters.contentType],\n mediaType: \"json\",\n serializer,\n};\nconst listOperationSpec = {\n path: \"/subscriptions/{subscriptionId}/resources\",\n httpMethod: \"GET\",\n responses: {\n 200: {\n bodyMapper: Mappers.ResourceListResult,\n },\n default: {\n bodyMapper: Mappers.CloudError,\n },\n },\n queryParameters: [\n Parameters.apiVersion,\n Parameters.filter,\n Parameters.top,\n Parameters.expand,\n ],\n urlParameters: [Parameters.$host, Parameters.subscriptionId],\n headerParameters: [Parameters.accept],\n serializer,\n};\nconst checkExistenceOperationSpec = {\n path: \"/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{parentResourcePath}/{resourceType}/{resourceName}\",\n httpMethod: \"HEAD\",\n responses: {\n 204: {},\n 404: {},\n default: {\n bodyMapper: Mappers.CloudError,\n },\n },\n queryParameters: [Parameters.apiVersion1],\n urlParameters: [\n Parameters.$host,\n Parameters.subscriptionId,\n Parameters.resourceGroupName,\n Parameters.resourceProviderNamespace,\n Parameters.parentResourcePath,\n Parameters.resourceType,\n Parameters.resourceName,\n ],\n headerParameters: [Parameters.accept],\n serializer,\n};\nconst deleteOperationSpec = {\n path: \"/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{parentResourcePath}/{resourceType}/{resourceName}\",\n httpMethod: \"DELETE\",\n responses: {\n 200: {},\n 201: {},\n 202: {},\n 204: {},\n default: {\n bodyMapper: Mappers.CloudError,\n },\n },\n queryParameters: [Parameters.apiVersion1],\n urlParameters: [\n Parameters.$host,\n Parameters.subscriptionId,\n Parameters.resourceGroupName,\n Parameters.resourceProviderNamespace,\n Parameters.parentResourcePath,\n Parameters.resourceType,\n Parameters.resourceName,\n ],\n headerParameters: [Parameters.accept],\n serializer,\n};\nconst createOrUpdateOperationSpec = {\n path: \"/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{parentResourcePath}/{resourceType}/{resourceName}\",\n httpMethod: \"PUT\",\n responses: {\n 200: {\n bodyMapper: Mappers.GenericResource,\n },\n 201: {\n bodyMapper: Mappers.GenericResource,\n },\n 202: {\n bodyMapper: Mappers.GenericResource,\n },\n 204: {\n bodyMapper: Mappers.GenericResource,\n },\n default: {\n bodyMapper: Mappers.CloudError,\n },\n },\n requestBody: Parameters.parameters5,\n queryParameters: [Parameters.apiVersion1],\n urlParameters: [\n Parameters.$host,\n Parameters.subscriptionId,\n Parameters.resourceGroupName,\n Parameters.resourceProviderNamespace,\n Parameters.parentResourcePath,\n Parameters.resourceType,\n Parameters.resourceName,\n ],\n headerParameters: [Parameters.accept, Parameters.contentType],\n mediaType: \"json\",\n serializer,\n};\nconst updateOperationSpec = {\n path: \"/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{parentResourcePath}/{resourceType}/{resourceName}\",\n httpMethod: \"PATCH\",\n responses: {\n 200: {\n bodyMapper: Mappers.GenericResource,\n },\n 201: {\n bodyMapper: Mappers.GenericResource,\n },\n 202: {\n bodyMapper: Mappers.GenericResource,\n },\n 204: {\n bodyMapper: Mappers.GenericResource,\n },\n default: {\n bodyMapper: Mappers.CloudError,\n },\n },\n requestBody: Parameters.parameters5,\n queryParameters: [Parameters.apiVersion1],\n urlParameters: [\n Parameters.$host,\n Parameters.subscriptionId,\n Parameters.resourceGroupName,\n Parameters.resourceProviderNamespace,\n Parameters.parentResourcePath,\n Parameters.resourceType,\n Parameters.resourceName,\n ],\n headerParameters: [Parameters.accept, Parameters.contentType],\n mediaType: \"json\",\n serializer,\n};\nconst getOperationSpec = {\n path: \"/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{parentResourcePath}/{resourceType}/{resourceName}\",\n httpMethod: \"GET\",\n responses: {\n 200: {\n bodyMapper: Mappers.GenericResource,\n },\n default: {\n bodyMapper: Mappers.CloudError,\n },\n },\n queryParameters: [Parameters.apiVersion1],\n urlParameters: [\n Parameters.$host,\n Parameters.subscriptionId,\n Parameters.resourceGroupName,\n Parameters.resourceProviderNamespace,\n Parameters.parentResourcePath,\n Parameters.resourceType,\n Parameters.resourceName,\n ],\n headerParameters: [Parameters.accept],\n serializer,\n};\nconst checkExistenceByIdOperationSpec = {\n path: \"/{resourceId}\",\n httpMethod: \"HEAD\",\n responses: {\n 204: {},\n 404: {},\n default: {\n bodyMapper: Mappers.CloudError,\n },\n },\n queryParameters: [Parameters.apiVersion1],\n urlParameters: [Parameters.$host, Parameters.resourceId],\n headerParameters: [Parameters.accept],\n serializer,\n};\nconst deleteByIdOperationSpec = {\n path: \"/{resourceId}\",\n httpMethod: \"DELETE\",\n responses: {\n 200: {},\n 201: {},\n 202: {},\n 204: {},\n default: {\n bodyMapper: Mappers.CloudError,\n },\n },\n queryParameters: [Parameters.apiVersion1],\n urlParameters: [Parameters.$host, Parameters.resourceId],\n headerParameters: [Parameters.accept],\n serializer,\n};\nconst createOrUpdateByIdOperationSpec = {\n path: \"/{resourceId}\",\n httpMethod: \"PUT\",\n responses: {\n 200: {\n bodyMapper: Mappers.GenericResource,\n },\n 201: {\n bodyMapper: Mappers.GenericResource,\n },\n 202: {\n bodyMapper: Mappers.GenericResource,\n },\n 204: {\n bodyMapper: Mappers.GenericResource,\n },\n default: {\n bodyMapper: Mappers.CloudError,\n },\n },\n requestBody: Parameters.parameters5,\n queryParameters: [Parameters.apiVersion1],\n urlParameters: [Parameters.$host, Parameters.resourceId],\n headerParameters: [Parameters.accept, Parameters.contentType],\n mediaType: \"json\",\n serializer,\n};\nconst updateByIdOperationSpec = {\n path: \"/{resourceId}\",\n httpMethod: \"PATCH\",\n responses: {\n 200: {\n bodyMapper: Mappers.GenericResource,\n },\n 201: {\n bodyMapper: Mappers.GenericResource,\n },\n 202: {\n bodyMapper: Mappers.GenericResource,\n },\n 204: {\n bodyMapper: Mappers.GenericResource,\n },\n default: {\n bodyMapper: Mappers.CloudError,\n },\n },\n requestBody: Parameters.parameters5,\n queryParameters: [Parameters.apiVersion1],\n urlParameters: [Parameters.$host, Parameters.resourceId],\n headerParameters: [Parameters.accept, Parameters.contentType],\n mediaType: \"json\",\n serializer,\n};\nconst getByIdOperationSpec = {\n path: \"/{resourceId}\",\n httpMethod: \"GET\",\n responses: {\n 200: {\n bodyMapper: Mappers.GenericResource,\n },\n default: {\n bodyMapper: Mappers.CloudError,\n },\n },\n queryParameters: [Parameters.apiVersion1],\n urlParameters: [Parameters.$host, Parameters.resourceId],\n headerParameters: [Parameters.accept],\n serializer,\n};\nconst listByResourceGroupNextOperationSpec = {\n path: \"{nextLink}\",\n httpMethod: \"GET\",\n responses: {\n 200: {\n bodyMapper: Mappers.ResourceListResult,\n },\n default: {\n bodyMapper: Mappers.CloudError,\n },\n },\n urlParameters: [\n Parameters.$host,\n Parameters.nextLink,\n Parameters.subscriptionId,\n Parameters.resourceGroupName,\n ],\n headerParameters: [Parameters.accept],\n serializer,\n};\nconst listNextOperationSpec = {\n path: \"{nextLink}\",\n httpMethod: \"GET\",\n responses: {\n 200: {\n bodyMapper: Mappers.ResourceListResult,\n },\n default: {\n bodyMapper: Mappers.CloudError,\n },\n },\n urlParameters: [\n Parameters.$host,\n Parameters.nextLink,\n Parameters.subscriptionId,\n ],\n headerParameters: [Parameters.accept],\n serializer,\n};\n//# sourceMappingURL=resources.js.map","\"use strict\";\n/*\n * Copyright (c) Microsoft Corporation.\n * Licensed under the MIT License.\n *\n * Code generated by Microsoft (R) AutoRest Code Generator.\n * Changes may cause incorrect behavior and will be lost if the code is regenerated.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ResourceGroupsImpl = void 0;\nconst tslib_1 = require(\"tslib\");\nconst pagingHelper_js_1 = require(\"../pagingHelper.js\");\nconst coreClient = tslib_1.__importStar(require(\"@azure/core-client\"));\nconst Mappers = tslib_1.__importStar(require(\"../models/mappers.js\"));\nconst Parameters = tslib_1.__importStar(require(\"../models/parameters.js\"));\nconst core_lro_1 = require(\"@azure/core-lro\");\nconst lroImpl_js_1 = require(\"../lroImpl.js\");\n/// \n/** Class containing ResourceGroups operations. */\nclass ResourceGroupsImpl {\n /**\n * Initialize a new instance of the class ResourceGroups class.\n * @param client Reference to the service client\n */\n constructor(client) {\n this.client = client;\n }\n /**\n * Gets all the resource groups for a subscription.\n * @param options The options parameters.\n */\n list(options) {\n const iter = this.listPagingAll(options);\n return {\n next() {\n return iter.next();\n },\n [Symbol.asyncIterator]() {\n return this;\n },\n byPage: (settings) => {\n if (settings === null || settings === void 0 ? void 0 : settings.maxPageSize) {\n throw new Error(\"maxPageSize is not supported by this operation.\");\n }\n return this.listPagingPage(options, settings);\n },\n };\n }\n listPagingPage(options, settings) {\n return tslib_1.__asyncGenerator(this, arguments, function* listPagingPage_1() {\n let result;\n let continuationToken = settings === null || settings === void 0 ? void 0 : settings.continuationToken;\n if (!continuationToken) {\n result = yield tslib_1.__await(this._list(options));\n let page = result.value || [];\n continuationToken = result.nextLink;\n (0, pagingHelper_js_1.setContinuationToken)(page, continuationToken);\n yield yield tslib_1.__await(page);\n }\n while (continuationToken) {\n result = yield tslib_1.__await(this._listNext(continuationToken, options));\n continuationToken = result.nextLink;\n let page = result.value || [];\n (0, pagingHelper_js_1.setContinuationToken)(page, continuationToken);\n yield yield tslib_1.__await(page);\n }\n });\n }\n listPagingAll(options) {\n return tslib_1.__asyncGenerator(this, arguments, function* listPagingAll_1() {\n var _a, e_1, _b, _c;\n try {\n for (var _d = true, _e = tslib_1.__asyncValues(this.listPagingPage(options)), _f; _f = yield tslib_1.__await(_e.next()), _a = _f.done, !_a; _d = true) {\n _c = _f.value;\n _d = false;\n const page = _c;\n yield tslib_1.__await(yield* tslib_1.__asyncDelegator(tslib_1.__asyncValues(page)));\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (!_d && !_a && (_b = _e.return)) yield tslib_1.__await(_b.call(_e));\n }\n finally { if (e_1) throw e_1.error; }\n }\n });\n }\n /**\n * Checks whether a resource group exists.\n * @param resourceGroupName The name of the resource group to check. The name is case insensitive.\n * @param options The options parameters.\n */\n checkExistence(resourceGroupName, options) {\n return this.client.sendOperationRequest({ resourceGroupName, options }, checkExistenceOperationSpec);\n }\n /**\n * Creates or updates a resource group.\n * @param resourceGroupName The name of the resource group to create or update. Can include\n * alphanumeric, underscore, parentheses, hyphen, period (except at end), and Unicode characters that\n * match the allowed characters.\n * @param parameters Parameters supplied to the create or update a resource group.\n * @param options The options parameters.\n */\n createOrUpdate(resourceGroupName, parameters, options) {\n return this.client.sendOperationRequest({ resourceGroupName, parameters, options }, createOrUpdateOperationSpec);\n }\n /**\n * When you delete a resource group, all of its resources are also deleted. Deleting a resource group\n * deletes all of its template deployments and currently stored operations.\n * @param resourceGroupName The name of the resource group to delete. The name is case insensitive.\n * @param options The options parameters.\n */\n async beginDelete(resourceGroupName, options) {\n const directSendOperation = async (args, spec) => {\n return this.client.sendOperationRequest(args, spec);\n };\n const sendOperationFn = async (args, spec) => {\n var _a;\n let currentRawResponse = undefined;\n const providedCallback = (_a = args.options) === null || _a === void 0 ? void 0 : _a.onResponse;\n const callback = (rawResponse, flatResponse) => {\n currentRawResponse = rawResponse;\n providedCallback === null || providedCallback === void 0 ? void 0 : providedCallback(rawResponse, flatResponse);\n };\n const updatedArgs = Object.assign(Object.assign({}, args), { options: Object.assign(Object.assign({}, args.options), { onResponse: callback }) });\n const flatResponse = await directSendOperation(updatedArgs, spec);\n return {\n flatResponse,\n rawResponse: {\n statusCode: currentRawResponse.status,\n body: currentRawResponse.parsedBody,\n headers: currentRawResponse.headers.toJSON(),\n },\n };\n };\n const lro = (0, lroImpl_js_1.createLroSpec)({\n sendOperationFn,\n args: { resourceGroupName, options },\n spec: deleteOperationSpec,\n });\n const poller = await (0, core_lro_1.createHttpPoller)(lro, {\n restoreFrom: options === null || options === void 0 ? void 0 : options.resumeFrom,\n intervalInMs: options === null || options === void 0 ? void 0 : options.updateIntervalInMs,\n });\n await poller.poll();\n return poller;\n }\n /**\n * When you delete a resource group, all of its resources are also deleted. Deleting a resource group\n * deletes all of its template deployments and currently stored operations.\n * @param resourceGroupName The name of the resource group to delete. The name is case insensitive.\n * @param options The options parameters.\n */\n async beginDeleteAndWait(resourceGroupName, options) {\n const poller = await this.beginDelete(resourceGroupName, options);\n return poller.pollUntilDone();\n }\n /**\n * Gets a resource group.\n * @param resourceGroupName The name of the resource group to get. The name is case insensitive.\n * @param options The options parameters.\n */\n get(resourceGroupName, options) {\n return this.client.sendOperationRequest({ resourceGroupName, options }, getOperationSpec);\n }\n /**\n * Resource groups can be updated through a simple PATCH operation to a group address. The format of\n * the request is the same as that for creating a resource group. If a field is unspecified, the\n * current value is retained.\n * @param resourceGroupName The name of the resource group to update. The name is case insensitive.\n * @param parameters Parameters supplied to update a resource group.\n * @param options The options parameters.\n */\n update(resourceGroupName, parameters, options) {\n return this.client.sendOperationRequest({ resourceGroupName, parameters, options }, updateOperationSpec);\n }\n /**\n * Captures the specified resource group as a template.\n * @param resourceGroupName The name of the resource group. The name is case insensitive.\n * @param parameters Parameters for exporting the template.\n * @param options The options parameters.\n */\n async beginExportTemplate(resourceGroupName, parameters, options) {\n const directSendOperation = async (args, spec) => {\n return this.client.sendOperationRequest(args, spec);\n };\n const sendOperationFn = async (args, spec) => {\n var _a;\n let currentRawResponse = undefined;\n const providedCallback = (_a = args.options) === null || _a === void 0 ? void 0 : _a.onResponse;\n const callback = (rawResponse, flatResponse) => {\n currentRawResponse = rawResponse;\n providedCallback === null || providedCallback === void 0 ? void 0 : providedCallback(rawResponse, flatResponse);\n };\n const updatedArgs = Object.assign(Object.assign({}, args), { options: Object.assign(Object.assign({}, args.options), { onResponse: callback }) });\n const flatResponse = await directSendOperation(updatedArgs, spec);\n return {\n flatResponse,\n rawResponse: {\n statusCode: currentRawResponse.status,\n body: currentRawResponse.parsedBody,\n headers: currentRawResponse.headers.toJSON(),\n },\n };\n };\n const lro = (0, lroImpl_js_1.createLroSpec)({\n sendOperationFn,\n args: { resourceGroupName, parameters, options },\n spec: exportTemplateOperationSpec,\n });\n const poller = await (0, core_lro_1.createHttpPoller)(lro, {\n restoreFrom: options === null || options === void 0 ? void 0 : options.resumeFrom,\n intervalInMs: options === null || options === void 0 ? void 0 : options.updateIntervalInMs,\n resourceLocationConfig: \"location\",\n });\n await poller.poll();\n return poller;\n }\n /**\n * Captures the specified resource group as a template.\n * @param resourceGroupName The name of the resource group. The name is case insensitive.\n * @param parameters Parameters for exporting the template.\n * @param options The options parameters.\n */\n async beginExportTemplateAndWait(resourceGroupName, parameters, options) {\n const poller = await this.beginExportTemplate(resourceGroupName, parameters, options);\n return poller.pollUntilDone();\n }\n /**\n * Gets all the resource groups for a subscription.\n * @param options The options parameters.\n */\n _list(options) {\n return this.client.sendOperationRequest({ options }, listOperationSpec);\n }\n /**\n * ListNext\n * @param nextLink The nextLink from the previous successful call to the List method.\n * @param options The options parameters.\n */\n _listNext(nextLink, options) {\n return this.client.sendOperationRequest({ nextLink, options }, listNextOperationSpec);\n }\n}\nexports.ResourceGroupsImpl = ResourceGroupsImpl;\n// Operation Specifications\nconst serializer = coreClient.createSerializer(Mappers, /* isXml */ false);\nconst checkExistenceOperationSpec = {\n path: \"/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}\",\n httpMethod: \"HEAD\",\n responses: {\n 204: {},\n 404: {},\n default: {\n bodyMapper: Mappers.CloudError,\n },\n },\n queryParameters: [Parameters.apiVersion],\n urlParameters: [\n Parameters.$host,\n Parameters.subscriptionId,\n Parameters.resourceGroupName,\n ],\n headerParameters: [Parameters.accept],\n serializer,\n};\nconst createOrUpdateOperationSpec = {\n path: \"/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}\",\n httpMethod: \"PUT\",\n responses: {\n 200: {\n bodyMapper: Mappers.ResourceGroup,\n },\n 201: {\n bodyMapper: Mappers.ResourceGroup,\n },\n default: {\n bodyMapper: Mappers.CloudError,\n },\n },\n requestBody: Parameters.parameters6,\n queryParameters: [Parameters.apiVersion],\n urlParameters: [\n Parameters.$host,\n Parameters.subscriptionId,\n Parameters.resourceGroupName,\n ],\n headerParameters: [Parameters.accept, Parameters.contentType],\n mediaType: \"json\",\n serializer,\n};\nconst deleteOperationSpec = {\n path: \"/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}\",\n httpMethod: \"DELETE\",\n responses: {\n 200: {},\n 201: {},\n 202: {},\n 204: {},\n default: {\n bodyMapper: Mappers.CloudError,\n },\n },\n queryParameters: [Parameters.apiVersion, Parameters.forceDeletionTypes],\n urlParameters: [\n Parameters.$host,\n Parameters.subscriptionId,\n Parameters.resourceGroupName,\n ],\n headerParameters: [Parameters.accept],\n serializer,\n};\nconst getOperationSpec = {\n path: \"/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}\",\n httpMethod: \"GET\",\n responses: {\n 200: {\n bodyMapper: Mappers.ResourceGroup,\n },\n default: {\n bodyMapper: Mappers.CloudError,\n },\n },\n queryParameters: [Parameters.apiVersion],\n urlParameters: [\n Parameters.$host,\n Parameters.subscriptionId,\n Parameters.resourceGroupName,\n ],\n headerParameters: [Parameters.accept],\n serializer,\n};\nconst updateOperationSpec = {\n path: \"/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}\",\n httpMethod: \"PATCH\",\n responses: {\n 200: {\n bodyMapper: Mappers.ResourceGroup,\n },\n default: {\n bodyMapper: Mappers.CloudError,\n },\n },\n requestBody: Parameters.parameters7,\n queryParameters: [Parameters.apiVersion],\n urlParameters: [\n Parameters.$host,\n Parameters.subscriptionId,\n Parameters.resourceGroupName,\n ],\n headerParameters: [Parameters.accept, Parameters.contentType],\n mediaType: \"json\",\n serializer,\n};\nconst exportTemplateOperationSpec = {\n path: \"/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/exportTemplate\",\n httpMethod: \"POST\",\n responses: {\n 200: {\n bodyMapper: Mappers.ResourceGroupExportResult,\n },\n 201: {\n bodyMapper: Mappers.ResourceGroupExportResult,\n },\n 202: {\n bodyMapper: Mappers.ResourceGroupExportResult,\n },\n 204: {\n bodyMapper: Mappers.ResourceGroupExportResult,\n },\n default: {\n bodyMapper: Mappers.CloudError,\n },\n },\n requestBody: Parameters.parameters8,\n queryParameters: [Parameters.apiVersion],\n urlParameters: [\n Parameters.$host,\n Parameters.subscriptionId,\n Parameters.resourceGroupName1,\n ],\n headerParameters: [Parameters.accept, Parameters.contentType],\n mediaType: \"json\",\n serializer,\n};\nconst listOperationSpec = {\n path: \"/subscriptions/{subscriptionId}/resourcegroups\",\n httpMethod: \"GET\",\n responses: {\n 200: {\n bodyMapper: Mappers.ResourceGroupListResult,\n },\n default: {\n bodyMapper: Mappers.CloudError,\n },\n },\n queryParameters: [Parameters.apiVersion, Parameters.filter, Parameters.top],\n urlParameters: [Parameters.$host, Parameters.subscriptionId],\n headerParameters: [Parameters.accept],\n serializer,\n};\nconst listNextOperationSpec = {\n path: \"{nextLink}\",\n httpMethod: \"GET\",\n responses: {\n 200: {\n bodyMapper: Mappers.ResourceGroupListResult,\n },\n default: {\n bodyMapper: Mappers.CloudError,\n },\n },\n urlParameters: [\n Parameters.$host,\n Parameters.nextLink,\n Parameters.subscriptionId,\n ],\n headerParameters: [Parameters.accept],\n serializer,\n};\n//# sourceMappingURL=resourceGroups.js.map","\"use strict\";\n/*\n * Copyright (c) Microsoft Corporation.\n * Licensed under the MIT License.\n *\n * Code generated by Microsoft (R) AutoRest Code Generator.\n * Changes may cause incorrect behavior and will be lost if the code is regenerated.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.TagsOperationsImpl = void 0;\nconst tslib_1 = require(\"tslib\");\nconst pagingHelper_js_1 = require(\"../pagingHelper.js\");\nconst coreClient = tslib_1.__importStar(require(\"@azure/core-client\"));\nconst Mappers = tslib_1.__importStar(require(\"../models/mappers.js\"));\nconst Parameters = tslib_1.__importStar(require(\"../models/parameters.js\"));\nconst core_lro_1 = require(\"@azure/core-lro\");\nconst lroImpl_js_1 = require(\"../lroImpl.js\");\n/// \n/** Class containing TagsOperations operations. */\nclass TagsOperationsImpl {\n /**\n * Initialize a new instance of the class TagsOperations class.\n * @param client Reference to the service client\n */\n constructor(client) {\n this.client = client;\n }\n /**\n * This operation performs a union of predefined tags, resource tags, resource group tags and\n * subscription tags, and returns a summary of usage for each tag name and value under the given\n * subscription. In case of a large number of tags, this operation may return a previously cached\n * result.\n * @param options The options parameters.\n */\n list(options) {\n const iter = this.listPagingAll(options);\n return {\n next() {\n return iter.next();\n },\n [Symbol.asyncIterator]() {\n return this;\n },\n byPage: (settings) => {\n if (settings === null || settings === void 0 ? void 0 : settings.maxPageSize) {\n throw new Error(\"maxPageSize is not supported by this operation.\");\n }\n return this.listPagingPage(options, settings);\n },\n };\n }\n listPagingPage(options, settings) {\n return tslib_1.__asyncGenerator(this, arguments, function* listPagingPage_1() {\n let result;\n let continuationToken = settings === null || settings === void 0 ? void 0 : settings.continuationToken;\n if (!continuationToken) {\n result = yield tslib_1.__await(this._list(options));\n let page = result.value || [];\n continuationToken = result.nextLink;\n (0, pagingHelper_js_1.setContinuationToken)(page, continuationToken);\n yield yield tslib_1.__await(page);\n }\n while (continuationToken) {\n result = yield tslib_1.__await(this._listNext(continuationToken, options));\n continuationToken = result.nextLink;\n let page = result.value || [];\n (0, pagingHelper_js_1.setContinuationToken)(page, continuationToken);\n yield yield tslib_1.__await(page);\n }\n });\n }\n listPagingAll(options) {\n return tslib_1.__asyncGenerator(this, arguments, function* listPagingAll_1() {\n var _a, e_1, _b, _c;\n try {\n for (var _d = true, _e = tslib_1.__asyncValues(this.listPagingPage(options)), _f; _f = yield tslib_1.__await(_e.next()), _a = _f.done, !_a; _d = true) {\n _c = _f.value;\n _d = false;\n const page = _c;\n yield tslib_1.__await(yield* tslib_1.__asyncDelegator(tslib_1.__asyncValues(page)));\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (!_d && !_a && (_b = _e.return)) yield tslib_1.__await(_b.call(_e));\n }\n finally { if (e_1) throw e_1.error; }\n }\n });\n }\n /**\n * This operation allows deleting a value from the list of predefined values for an existing predefined\n * tag name. The value being deleted must not be in use as a tag value for the given tag name for any\n * resource.\n * @param tagName The name of the tag.\n * @param tagValue The value of the tag to delete.\n * @param options The options parameters.\n */\n deleteValue(tagName, tagValue, options) {\n return this.client.sendOperationRequest({ tagName, tagValue, options }, deleteValueOperationSpec);\n }\n /**\n * This operation allows adding a value to the list of predefined values for an existing predefined tag\n * name. A tag value can have a maximum of 256 characters.\n * @param tagName The name of the tag.\n * @param tagValue The value of the tag to create.\n * @param options The options parameters.\n */\n createOrUpdateValue(tagName, tagValue, options) {\n return this.client.sendOperationRequest({ tagName, tagValue, options }, createOrUpdateValueOperationSpec);\n }\n /**\n * This operation allows adding a name to the list of predefined tag names for the given subscription.\n * A tag name can have a maximum of 512 characters and is case-insensitive. Tag names cannot have the\n * following prefixes which are reserved for Azure use: 'microsoft', 'azure', 'windows'.\n * @param tagName The name of the tag to create.\n * @param options The options parameters.\n */\n createOrUpdate(tagName, options) {\n return this.client.sendOperationRequest({ tagName, options }, createOrUpdateOperationSpec);\n }\n /**\n * This operation allows deleting a name from the list of predefined tag names for the given\n * subscription. The name being deleted must not be in use as a tag name for any resource. All\n * predefined values for the given name must have already been deleted.\n * @param tagName The name of the tag.\n * @param options The options parameters.\n */\n delete(tagName, options) {\n return this.client.sendOperationRequest({ tagName, options }, deleteOperationSpec);\n }\n /**\n * This operation performs a union of predefined tags, resource tags, resource group tags and\n * subscription tags, and returns a summary of usage for each tag name and value under the given\n * subscription. In case of a large number of tags, this operation may return a previously cached\n * result.\n * @param options The options parameters.\n */\n _list(options) {\n return this.client.sendOperationRequest({ options }, listOperationSpec);\n }\n /**\n * This operation allows adding or replacing the entire set of tags on the specified resource or\n * subscription. The specified entity can have a maximum of 50 tags.\n * @param scope The resource scope.\n * @param parameters Wrapper resource for tags API requests and responses.\n * @param options The options parameters.\n */\n async beginCreateOrUpdateAtScope(scope, parameters, options) {\n const directSendOperation = async (args, spec) => {\n return this.client.sendOperationRequest(args, spec);\n };\n const sendOperationFn = async (args, spec) => {\n var _a;\n let currentRawResponse = undefined;\n const providedCallback = (_a = args.options) === null || _a === void 0 ? void 0 : _a.onResponse;\n const callback = (rawResponse, flatResponse) => {\n currentRawResponse = rawResponse;\n providedCallback === null || providedCallback === void 0 ? void 0 : providedCallback(rawResponse, flatResponse);\n };\n const updatedArgs = Object.assign(Object.assign({}, args), { options: Object.assign(Object.assign({}, args.options), { onResponse: callback }) });\n const flatResponse = await directSendOperation(updatedArgs, spec);\n return {\n flatResponse,\n rawResponse: {\n statusCode: currentRawResponse.status,\n body: currentRawResponse.parsedBody,\n headers: currentRawResponse.headers.toJSON(),\n },\n };\n };\n const lro = (0, lroImpl_js_1.createLroSpec)({\n sendOperationFn,\n args: { scope, parameters, options },\n spec: createOrUpdateAtScopeOperationSpec,\n });\n const poller = await (0, core_lro_1.createHttpPoller)(lro, {\n restoreFrom: options === null || options === void 0 ? void 0 : options.resumeFrom,\n intervalInMs: options === null || options === void 0 ? void 0 : options.updateIntervalInMs,\n });\n await poller.poll();\n return poller;\n }\n /**\n * This operation allows adding or replacing the entire set of tags on the specified resource or\n * subscription. The specified entity can have a maximum of 50 tags.\n * @param scope The resource scope.\n * @param parameters Wrapper resource for tags API requests and responses.\n * @param options The options parameters.\n */\n async beginCreateOrUpdateAtScopeAndWait(scope, parameters, options) {\n const poller = await this.beginCreateOrUpdateAtScope(scope, parameters, options);\n return poller.pollUntilDone();\n }\n /**\n * This operation allows replacing, merging or selectively deleting tags on the specified resource or\n * subscription. The specified entity can have a maximum of 50 tags at the end of the operation. The\n * 'replace' option replaces the entire set of existing tags with a new set. The 'merge' option allows\n * adding tags with new names and updating the values of tags with existing names. The 'delete' option\n * allows selectively deleting tags based on given names or name/value pairs.\n * @param scope The resource scope.\n * @param parameters Wrapper resource for tags patch API request only.\n * @param options The options parameters.\n */\n async beginUpdateAtScope(scope, parameters, options) {\n const directSendOperation = async (args, spec) => {\n return this.client.sendOperationRequest(args, spec);\n };\n const sendOperationFn = async (args, spec) => {\n var _a;\n let currentRawResponse = undefined;\n const providedCallback = (_a = args.options) === null || _a === void 0 ? void 0 : _a.onResponse;\n const callback = (rawResponse, flatResponse) => {\n currentRawResponse = rawResponse;\n providedCallback === null || providedCallback === void 0 ? void 0 : providedCallback(rawResponse, flatResponse);\n };\n const updatedArgs = Object.assign(Object.assign({}, args), { options: Object.assign(Object.assign({}, args.options), { onResponse: callback }) });\n const flatResponse = await directSendOperation(updatedArgs, spec);\n return {\n flatResponse,\n rawResponse: {\n statusCode: currentRawResponse.status,\n body: currentRawResponse.parsedBody,\n headers: currentRawResponse.headers.toJSON(),\n },\n };\n };\n const lro = (0, lroImpl_js_1.createLroSpec)({\n sendOperationFn,\n args: { scope, parameters, options },\n spec: updateAtScopeOperationSpec,\n });\n const poller = await (0, core_lro_1.createHttpPoller)(lro, {\n restoreFrom: options === null || options === void 0 ? void 0 : options.resumeFrom,\n intervalInMs: options === null || options === void 0 ? void 0 : options.updateIntervalInMs,\n });\n await poller.poll();\n return poller;\n }\n /**\n * This operation allows replacing, merging or selectively deleting tags on the specified resource or\n * subscription. The specified entity can have a maximum of 50 tags at the end of the operation. The\n * 'replace' option replaces the entire set of existing tags with a new set. The 'merge' option allows\n * adding tags with new names and updating the values of tags with existing names. The 'delete' option\n * allows selectively deleting tags based on given names or name/value pairs.\n * @param scope The resource scope.\n * @param parameters Wrapper resource for tags patch API request only.\n * @param options The options parameters.\n */\n async beginUpdateAtScopeAndWait(scope, parameters, options) {\n const poller = await this.beginUpdateAtScope(scope, parameters, options);\n return poller.pollUntilDone();\n }\n /**\n * Gets the entire set of tags on a resource or subscription.\n * @param scope The resource scope.\n * @param options The options parameters.\n */\n getAtScope(scope, options) {\n return this.client.sendOperationRequest({ scope, options }, getAtScopeOperationSpec);\n }\n /**\n * Deletes the entire set of tags on a resource or subscription.\n * @param scope The resource scope.\n * @param options The options parameters.\n */\n async beginDeleteAtScope(scope, options) {\n const directSendOperation = async (args, spec) => {\n return this.client.sendOperationRequest(args, spec);\n };\n const sendOperationFn = async (args, spec) => {\n var _a;\n let currentRawResponse = undefined;\n const providedCallback = (_a = args.options) === null || _a === void 0 ? void 0 : _a.onResponse;\n const callback = (rawResponse, flatResponse) => {\n currentRawResponse = rawResponse;\n providedCallback === null || providedCallback === void 0 ? void 0 : providedCallback(rawResponse, flatResponse);\n };\n const updatedArgs = Object.assign(Object.assign({}, args), { options: Object.assign(Object.assign({}, args.options), { onResponse: callback }) });\n const flatResponse = await directSendOperation(updatedArgs, spec);\n return {\n flatResponse,\n rawResponse: {\n statusCode: currentRawResponse.status,\n body: currentRawResponse.parsedBody,\n headers: currentRawResponse.headers.toJSON(),\n },\n };\n };\n const lro = (0, lroImpl_js_1.createLroSpec)({\n sendOperationFn,\n args: { scope, options },\n spec: deleteAtScopeOperationSpec,\n });\n const poller = await (0, core_lro_1.createHttpPoller)(lro, {\n restoreFrom: options === null || options === void 0 ? void 0 : options.resumeFrom,\n intervalInMs: options === null || options === void 0 ? void 0 : options.updateIntervalInMs,\n });\n await poller.poll();\n return poller;\n }\n /**\n * Deletes the entire set of tags on a resource or subscription.\n * @param scope The resource scope.\n * @param options The options parameters.\n */\n async beginDeleteAtScopeAndWait(scope, options) {\n const poller = await this.beginDeleteAtScope(scope, options);\n return poller.pollUntilDone();\n }\n /**\n * ListNext\n * @param nextLink The nextLink from the previous successful call to the List method.\n * @param options The options parameters.\n */\n _listNext(nextLink, options) {\n return this.client.sendOperationRequest({ nextLink, options }, listNextOperationSpec);\n }\n}\nexports.TagsOperationsImpl = TagsOperationsImpl;\n// Operation Specifications\nconst serializer = coreClient.createSerializer(Mappers, /* isXml */ false);\nconst deleteValueOperationSpec = {\n path: \"/subscriptions/{subscriptionId}/tagNames/{tagName}/tagValues/{tagValue}\",\n httpMethod: \"DELETE\",\n responses: {\n 200: {},\n 204: {},\n default: {\n bodyMapper: Mappers.CloudError,\n },\n },\n queryParameters: [Parameters.apiVersion],\n urlParameters: [\n Parameters.$host,\n Parameters.subscriptionId,\n Parameters.tagName,\n Parameters.tagValue,\n ],\n headerParameters: [Parameters.accept],\n serializer,\n};\nconst createOrUpdateValueOperationSpec = {\n path: \"/subscriptions/{subscriptionId}/tagNames/{tagName}/tagValues/{tagValue}\",\n httpMethod: \"PUT\",\n responses: {\n 200: {\n bodyMapper: Mappers.TagValue,\n },\n 201: {\n bodyMapper: Mappers.TagValue,\n },\n default: {\n bodyMapper: Mappers.CloudError,\n },\n },\n queryParameters: [Parameters.apiVersion],\n urlParameters: [\n Parameters.$host,\n Parameters.subscriptionId,\n Parameters.tagName,\n Parameters.tagValue,\n ],\n headerParameters: [Parameters.accept],\n serializer,\n};\nconst createOrUpdateOperationSpec = {\n path: \"/subscriptions/{subscriptionId}/tagNames/{tagName}\",\n httpMethod: \"PUT\",\n responses: {\n 200: {\n bodyMapper: Mappers.TagDetails,\n },\n 201: {\n bodyMapper: Mappers.TagDetails,\n },\n default: {\n bodyMapper: Mappers.CloudError,\n },\n },\n queryParameters: [Parameters.apiVersion],\n urlParameters: [\n Parameters.$host,\n Parameters.subscriptionId,\n Parameters.tagName,\n ],\n headerParameters: [Parameters.accept],\n serializer,\n};\nconst deleteOperationSpec = {\n path: \"/subscriptions/{subscriptionId}/tagNames/{tagName}\",\n httpMethod: \"DELETE\",\n responses: {\n 200: {},\n 204: {},\n default: {\n bodyMapper: Mappers.CloudError,\n },\n },\n queryParameters: [Parameters.apiVersion],\n urlParameters: [\n Parameters.$host,\n Parameters.subscriptionId,\n Parameters.tagName,\n ],\n headerParameters: [Parameters.accept],\n serializer,\n};\nconst listOperationSpec = {\n path: \"/subscriptions/{subscriptionId}/tagNames\",\n httpMethod: \"GET\",\n responses: {\n 200: {\n bodyMapper: Mappers.TagsListResult,\n },\n default: {\n bodyMapper: Mappers.CloudError,\n },\n },\n queryParameters: [Parameters.apiVersion],\n urlParameters: [Parameters.$host, Parameters.subscriptionId],\n headerParameters: [Parameters.accept],\n serializer,\n};\nconst createOrUpdateAtScopeOperationSpec = {\n path: \"/{scope}/providers/Microsoft.Resources/tags/default\",\n httpMethod: \"PUT\",\n responses: {\n 200: {\n bodyMapper: Mappers.TagsResource,\n },\n 201: {\n bodyMapper: Mappers.TagsResource,\n },\n 202: {\n bodyMapper: Mappers.TagsResource,\n },\n 204: {\n bodyMapper: Mappers.TagsResource,\n },\n default: {\n bodyMapper: Mappers.CloudError,\n },\n },\n requestBody: Parameters.parameters9,\n queryParameters: [Parameters.apiVersion],\n urlParameters: [Parameters.$host, Parameters.scope],\n headerParameters: [Parameters.accept, Parameters.contentType],\n mediaType: \"json\",\n serializer,\n};\nconst updateAtScopeOperationSpec = {\n path: \"/{scope}/providers/Microsoft.Resources/tags/default\",\n httpMethod: \"PATCH\",\n responses: {\n 200: {\n bodyMapper: Mappers.TagsResource,\n },\n 201: {\n bodyMapper: Mappers.TagsResource,\n },\n 202: {\n bodyMapper: Mappers.TagsResource,\n },\n 204: {\n bodyMapper: Mappers.TagsResource,\n },\n default: {\n bodyMapper: Mappers.CloudError,\n },\n },\n requestBody: Parameters.parameters10,\n queryParameters: [Parameters.apiVersion],\n urlParameters: [Parameters.$host, Parameters.scope],\n headerParameters: [Parameters.accept, Parameters.contentType],\n mediaType: \"json\",\n serializer,\n};\nconst getAtScopeOperationSpec = {\n path: \"/{scope}/providers/Microsoft.Resources/tags/default\",\n httpMethod: \"GET\",\n responses: {\n 200: {\n bodyMapper: Mappers.TagsResource,\n },\n default: {\n bodyMapper: Mappers.CloudError,\n },\n },\n queryParameters: [Parameters.apiVersion],\n urlParameters: [Parameters.$host, Parameters.scope],\n headerParameters: [Parameters.accept],\n serializer,\n};\nconst deleteAtScopeOperationSpec = {\n path: \"/{scope}/providers/Microsoft.Resources/tags/default\",\n httpMethod: \"DELETE\",\n responses: {\n 200: {},\n 201: {},\n 202: {},\n 204: {},\n default: {\n bodyMapper: Mappers.CloudError,\n },\n },\n queryParameters: [Parameters.apiVersion],\n urlParameters: [Parameters.$host, Parameters.scope],\n headerParameters: [Parameters.accept],\n serializer,\n};\nconst listNextOperationSpec = {\n path: \"{nextLink}\",\n httpMethod: \"GET\",\n responses: {\n 200: {\n bodyMapper: Mappers.TagsListResult,\n },\n default: {\n bodyMapper: Mappers.CloudError,\n },\n },\n urlParameters: [\n Parameters.$host,\n Parameters.nextLink,\n Parameters.subscriptionId,\n ],\n headerParameters: [Parameters.accept],\n serializer,\n};\n//# sourceMappingURL=tagsOperations.js.map","\"use strict\";\n/*\n * Copyright (c) Microsoft Corporation.\n * Licensed under the MIT License.\n *\n * Code generated by Microsoft (R) AutoRest Code Generator.\n * Changes may cause incorrect behavior and will be lost if the code is regenerated.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.DeploymentOperationsImpl = void 0;\nconst tslib_1 = require(\"tslib\");\nconst pagingHelper_js_1 = require(\"../pagingHelper.js\");\nconst coreClient = tslib_1.__importStar(require(\"@azure/core-client\"));\nconst Mappers = tslib_1.__importStar(require(\"../models/mappers.js\"));\nconst Parameters = tslib_1.__importStar(require(\"../models/parameters.js\"));\n/// \n/** Class containing DeploymentOperations operations. */\nclass DeploymentOperationsImpl {\n /**\n * Initialize a new instance of the class DeploymentOperations class.\n * @param client Reference to the service client\n */\n constructor(client) {\n this.client = client;\n }\n /**\n * Gets all deployments operations for a deployment.\n * @param scope The resource scope.\n * @param deploymentName The name of the deployment.\n * @param options The options parameters.\n */\n listAtScope(scope, deploymentName, options) {\n const iter = this.listAtScopePagingAll(scope, deploymentName, options);\n return {\n next() {\n return iter.next();\n },\n [Symbol.asyncIterator]() {\n return this;\n },\n byPage: (settings) => {\n if (settings === null || settings === void 0 ? void 0 : settings.maxPageSize) {\n throw new Error(\"maxPageSize is not supported by this operation.\");\n }\n return this.listAtScopePagingPage(scope, deploymentName, options, settings);\n },\n };\n }\n listAtScopePagingPage(scope, deploymentName, options, settings) {\n return tslib_1.__asyncGenerator(this, arguments, function* listAtScopePagingPage_1() {\n let result;\n let continuationToken = settings === null || settings === void 0 ? void 0 : settings.continuationToken;\n if (!continuationToken) {\n result = yield tslib_1.__await(this._listAtScope(scope, deploymentName, options));\n let page = result.value || [];\n continuationToken = result.nextLink;\n (0, pagingHelper_js_1.setContinuationToken)(page, continuationToken);\n yield yield tslib_1.__await(page);\n }\n while (continuationToken) {\n result = yield tslib_1.__await(this._listAtScopeNext(scope, deploymentName, continuationToken, options));\n continuationToken = result.nextLink;\n let page = result.value || [];\n (0, pagingHelper_js_1.setContinuationToken)(page, continuationToken);\n yield yield tslib_1.__await(page);\n }\n });\n }\n listAtScopePagingAll(scope, deploymentName, options) {\n return tslib_1.__asyncGenerator(this, arguments, function* listAtScopePagingAll_1() {\n var _a, e_1, _b, _c;\n try {\n for (var _d = true, _e = tslib_1.__asyncValues(this.listAtScopePagingPage(scope, deploymentName, options)), _f; _f = yield tslib_1.__await(_e.next()), _a = _f.done, !_a; _d = true) {\n _c = _f.value;\n _d = false;\n const page = _c;\n yield tslib_1.__await(yield* tslib_1.__asyncDelegator(tslib_1.__asyncValues(page)));\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (!_d && !_a && (_b = _e.return)) yield tslib_1.__await(_b.call(_e));\n }\n finally { if (e_1) throw e_1.error; }\n }\n });\n }\n /**\n * Gets all deployments operations for a deployment.\n * @param deploymentName The name of the deployment.\n * @param options The options parameters.\n */\n listAtTenantScope(deploymentName, options) {\n const iter = this.listAtTenantScopePagingAll(deploymentName, options);\n return {\n next() {\n return iter.next();\n },\n [Symbol.asyncIterator]() {\n return this;\n },\n byPage: (settings) => {\n if (settings === null || settings === void 0 ? void 0 : settings.maxPageSize) {\n throw new Error(\"maxPageSize is not supported by this operation.\");\n }\n return this.listAtTenantScopePagingPage(deploymentName, options, settings);\n },\n };\n }\n listAtTenantScopePagingPage(deploymentName, options, settings) {\n return tslib_1.__asyncGenerator(this, arguments, function* listAtTenantScopePagingPage_1() {\n let result;\n let continuationToken = settings === null || settings === void 0 ? void 0 : settings.continuationToken;\n if (!continuationToken) {\n result = yield tslib_1.__await(this._listAtTenantScope(deploymentName, options));\n let page = result.value || [];\n continuationToken = result.nextLink;\n (0, pagingHelper_js_1.setContinuationToken)(page, continuationToken);\n yield yield tslib_1.__await(page);\n }\n while (continuationToken) {\n result = yield tslib_1.__await(this._listAtTenantScopeNext(deploymentName, continuationToken, options));\n continuationToken = result.nextLink;\n let page = result.value || [];\n (0, pagingHelper_js_1.setContinuationToken)(page, continuationToken);\n yield yield tslib_1.__await(page);\n }\n });\n }\n listAtTenantScopePagingAll(deploymentName, options) {\n return tslib_1.__asyncGenerator(this, arguments, function* listAtTenantScopePagingAll_1() {\n var _a, e_2, _b, _c;\n try {\n for (var _d = true, _e = tslib_1.__asyncValues(this.listAtTenantScopePagingPage(deploymentName, options)), _f; _f = yield tslib_1.__await(_e.next()), _a = _f.done, !_a; _d = true) {\n _c = _f.value;\n _d = false;\n const page = _c;\n yield tslib_1.__await(yield* tslib_1.__asyncDelegator(tslib_1.__asyncValues(page)));\n }\n }\n catch (e_2_1) { e_2 = { error: e_2_1 }; }\n finally {\n try {\n if (!_d && !_a && (_b = _e.return)) yield tslib_1.__await(_b.call(_e));\n }\n finally { if (e_2) throw e_2.error; }\n }\n });\n }\n /**\n * Gets all deployments operations for a deployment.\n * @param groupId The management group ID.\n * @param deploymentName The name of the deployment.\n * @param options The options parameters.\n */\n listAtManagementGroupScope(groupId, deploymentName, options) {\n const iter = this.listAtManagementGroupScopePagingAll(groupId, deploymentName, options);\n return {\n next() {\n return iter.next();\n },\n [Symbol.asyncIterator]() {\n return this;\n },\n byPage: (settings) => {\n if (settings === null || settings === void 0 ? void 0 : settings.maxPageSize) {\n throw new Error(\"maxPageSize is not supported by this operation.\");\n }\n return this.listAtManagementGroupScopePagingPage(groupId, deploymentName, options, settings);\n },\n };\n }\n listAtManagementGroupScopePagingPage(groupId, deploymentName, options, settings) {\n return tslib_1.__asyncGenerator(this, arguments, function* listAtManagementGroupScopePagingPage_1() {\n let result;\n let continuationToken = settings === null || settings === void 0 ? void 0 : settings.continuationToken;\n if (!continuationToken) {\n result = yield tslib_1.__await(this._listAtManagementGroupScope(groupId, deploymentName, options));\n let page = result.value || [];\n continuationToken = result.nextLink;\n (0, pagingHelper_js_1.setContinuationToken)(page, continuationToken);\n yield yield tslib_1.__await(page);\n }\n while (continuationToken) {\n result = yield tslib_1.__await(this._listAtManagementGroupScopeNext(groupId, deploymentName, continuationToken, options));\n continuationToken = result.nextLink;\n let page = result.value || [];\n (0, pagingHelper_js_1.setContinuationToken)(page, continuationToken);\n yield yield tslib_1.__await(page);\n }\n });\n }\n listAtManagementGroupScopePagingAll(groupId, deploymentName, options) {\n return tslib_1.__asyncGenerator(this, arguments, function* listAtManagementGroupScopePagingAll_1() {\n var _a, e_3, _b, _c;\n try {\n for (var _d = true, _e = tslib_1.__asyncValues(this.listAtManagementGroupScopePagingPage(groupId, deploymentName, options)), _f; _f = yield tslib_1.__await(_e.next()), _a = _f.done, !_a; _d = true) {\n _c = _f.value;\n _d = false;\n const page = _c;\n yield tslib_1.__await(yield* tslib_1.__asyncDelegator(tslib_1.__asyncValues(page)));\n }\n }\n catch (e_3_1) { e_3 = { error: e_3_1 }; }\n finally {\n try {\n if (!_d && !_a && (_b = _e.return)) yield tslib_1.__await(_b.call(_e));\n }\n finally { if (e_3) throw e_3.error; }\n }\n });\n }\n /**\n * Gets all deployments operations for a deployment.\n * @param deploymentName The name of the deployment.\n * @param options The options parameters.\n */\n listAtSubscriptionScope(deploymentName, options) {\n const iter = this.listAtSubscriptionScopePagingAll(deploymentName, options);\n return {\n next() {\n return iter.next();\n },\n [Symbol.asyncIterator]() {\n return this;\n },\n byPage: (settings) => {\n if (settings === null || settings === void 0 ? void 0 : settings.maxPageSize) {\n throw new Error(\"maxPageSize is not supported by this operation.\");\n }\n return this.listAtSubscriptionScopePagingPage(deploymentName, options, settings);\n },\n };\n }\n listAtSubscriptionScopePagingPage(deploymentName, options, settings) {\n return tslib_1.__asyncGenerator(this, arguments, function* listAtSubscriptionScopePagingPage_1() {\n let result;\n let continuationToken = settings === null || settings === void 0 ? void 0 : settings.continuationToken;\n if (!continuationToken) {\n result = yield tslib_1.__await(this._listAtSubscriptionScope(deploymentName, options));\n let page = result.value || [];\n continuationToken = result.nextLink;\n (0, pagingHelper_js_1.setContinuationToken)(page, continuationToken);\n yield yield tslib_1.__await(page);\n }\n while (continuationToken) {\n result = yield tslib_1.__await(this._listAtSubscriptionScopeNext(deploymentName, continuationToken, options));\n continuationToken = result.nextLink;\n let page = result.value || [];\n (0, pagingHelper_js_1.setContinuationToken)(page, continuationToken);\n yield yield tslib_1.__await(page);\n }\n });\n }\n listAtSubscriptionScopePagingAll(deploymentName, options) {\n return tslib_1.__asyncGenerator(this, arguments, function* listAtSubscriptionScopePagingAll_1() {\n var _a, e_4, _b, _c;\n try {\n for (var _d = true, _e = tslib_1.__asyncValues(this.listAtSubscriptionScopePagingPage(deploymentName, options)), _f; _f = yield tslib_1.__await(_e.next()), _a = _f.done, !_a; _d = true) {\n _c = _f.value;\n _d = false;\n const page = _c;\n yield tslib_1.__await(yield* tslib_1.__asyncDelegator(tslib_1.__asyncValues(page)));\n }\n }\n catch (e_4_1) { e_4 = { error: e_4_1 }; }\n finally {\n try {\n if (!_d && !_a && (_b = _e.return)) yield tslib_1.__await(_b.call(_e));\n }\n finally { if (e_4) throw e_4.error; }\n }\n });\n }\n /**\n * Gets all deployments operations for a deployment.\n * @param resourceGroupName The name of the resource group. The name is case insensitive.\n * @param deploymentName The name of the deployment.\n * @param options The options parameters.\n */\n list(resourceGroupName, deploymentName, options) {\n const iter = this.listPagingAll(resourceGroupName, deploymentName, options);\n return {\n next() {\n return iter.next();\n },\n [Symbol.asyncIterator]() {\n return this;\n },\n byPage: (settings) => {\n if (settings === null || settings === void 0 ? void 0 : settings.maxPageSize) {\n throw new Error(\"maxPageSize is not supported by this operation.\");\n }\n return this.listPagingPage(resourceGroupName, deploymentName, options, settings);\n },\n };\n }\n listPagingPage(resourceGroupName, deploymentName, options, settings) {\n return tslib_1.__asyncGenerator(this, arguments, function* listPagingPage_1() {\n let result;\n let continuationToken = settings === null || settings === void 0 ? void 0 : settings.continuationToken;\n if (!continuationToken) {\n result = yield tslib_1.__await(this._list(resourceGroupName, deploymentName, options));\n let page = result.value || [];\n continuationToken = result.nextLink;\n (0, pagingHelper_js_1.setContinuationToken)(page, continuationToken);\n yield yield tslib_1.__await(page);\n }\n while (continuationToken) {\n result = yield tslib_1.__await(this._listNext(resourceGroupName, deploymentName, continuationToken, options));\n continuationToken = result.nextLink;\n let page = result.value || [];\n (0, pagingHelper_js_1.setContinuationToken)(page, continuationToken);\n yield yield tslib_1.__await(page);\n }\n });\n }\n listPagingAll(resourceGroupName, deploymentName, options) {\n return tslib_1.__asyncGenerator(this, arguments, function* listPagingAll_1() {\n var _a, e_5, _b, _c;\n try {\n for (var _d = true, _e = tslib_1.__asyncValues(this.listPagingPage(resourceGroupName, deploymentName, options)), _f; _f = yield tslib_1.__await(_e.next()), _a = _f.done, !_a; _d = true) {\n _c = _f.value;\n _d = false;\n const page = _c;\n yield tslib_1.__await(yield* tslib_1.__asyncDelegator(tslib_1.__asyncValues(page)));\n }\n }\n catch (e_5_1) { e_5 = { error: e_5_1 }; }\n finally {\n try {\n if (!_d && !_a && (_b = _e.return)) yield tslib_1.__await(_b.call(_e));\n }\n finally { if (e_5) throw e_5.error; }\n }\n });\n }\n /**\n * Gets a deployments operation.\n * @param scope The resource scope.\n * @param deploymentName The name of the deployment.\n * @param operationId The ID of the operation to get.\n * @param options The options parameters.\n */\n getAtScope(scope, deploymentName, operationId, options) {\n return this.client.sendOperationRequest({ scope, deploymentName, operationId, options }, getAtScopeOperationSpec);\n }\n /**\n * Gets all deployments operations for a deployment.\n * @param scope The resource scope.\n * @param deploymentName The name of the deployment.\n * @param options The options parameters.\n */\n _listAtScope(scope, deploymentName, options) {\n return this.client.sendOperationRequest({ scope, deploymentName, options }, listAtScopeOperationSpec);\n }\n /**\n * Gets a deployments operation.\n * @param deploymentName The name of the deployment.\n * @param operationId The ID of the operation to get.\n * @param options The options parameters.\n */\n getAtTenantScope(deploymentName, operationId, options) {\n return this.client.sendOperationRequest({ deploymentName, operationId, options }, getAtTenantScopeOperationSpec);\n }\n /**\n * Gets all deployments operations for a deployment.\n * @param deploymentName The name of the deployment.\n * @param options The options parameters.\n */\n _listAtTenantScope(deploymentName, options) {\n return this.client.sendOperationRequest({ deploymentName, options }, listAtTenantScopeOperationSpec);\n }\n /**\n * Gets a deployments operation.\n * @param groupId The management group ID.\n * @param deploymentName The name of the deployment.\n * @param operationId The ID of the operation to get.\n * @param options The options parameters.\n */\n getAtManagementGroupScope(groupId, deploymentName, operationId, options) {\n return this.client.sendOperationRequest({ groupId, deploymentName, operationId, options }, getAtManagementGroupScopeOperationSpec);\n }\n /**\n * Gets all deployments operations for a deployment.\n * @param groupId The management group ID.\n * @param deploymentName The name of the deployment.\n * @param options The options parameters.\n */\n _listAtManagementGroupScope(groupId, deploymentName, options) {\n return this.client.sendOperationRequest({ groupId, deploymentName, options }, listAtManagementGroupScopeOperationSpec);\n }\n /**\n * Gets a deployments operation.\n * @param deploymentName The name of the deployment.\n * @param operationId The ID of the operation to get.\n * @param options The options parameters.\n */\n getAtSubscriptionScope(deploymentName, operationId, options) {\n return this.client.sendOperationRequest({ deploymentName, operationId, options }, getAtSubscriptionScopeOperationSpec);\n }\n /**\n * Gets all deployments operations for a deployment.\n * @param deploymentName The name of the deployment.\n * @param options The options parameters.\n */\n _listAtSubscriptionScope(deploymentName, options) {\n return this.client.sendOperationRequest({ deploymentName, options }, listAtSubscriptionScopeOperationSpec);\n }\n /**\n * Gets a deployments operation.\n * @param resourceGroupName The name of the resource group. The name is case insensitive.\n * @param deploymentName The name of the deployment.\n * @param operationId The ID of the operation to get.\n * @param options The options parameters.\n */\n get(resourceGroupName, deploymentName, operationId, options) {\n return this.client.sendOperationRequest({ resourceGroupName, deploymentName, operationId, options }, getOperationSpec);\n }\n /**\n * Gets all deployments operations for a deployment.\n * @param resourceGroupName The name of the resource group. The name is case insensitive.\n * @param deploymentName The name of the deployment.\n * @param options The options parameters.\n */\n _list(resourceGroupName, deploymentName, options) {\n return this.client.sendOperationRequest({ resourceGroupName, deploymentName, options }, listOperationSpec);\n }\n /**\n * ListAtScopeNext\n * @param scope The resource scope.\n * @param deploymentName The name of the deployment.\n * @param nextLink The nextLink from the previous successful call to the ListAtScope method.\n * @param options The options parameters.\n */\n _listAtScopeNext(scope, deploymentName, nextLink, options) {\n return this.client.sendOperationRequest({ scope, deploymentName, nextLink, options }, listAtScopeNextOperationSpec);\n }\n /**\n * ListAtTenantScopeNext\n * @param deploymentName The name of the deployment.\n * @param nextLink The nextLink from the previous successful call to the ListAtTenantScope method.\n * @param options The options parameters.\n */\n _listAtTenantScopeNext(deploymentName, nextLink, options) {\n return this.client.sendOperationRequest({ deploymentName, nextLink, options }, listAtTenantScopeNextOperationSpec);\n }\n /**\n * ListAtManagementGroupScopeNext\n * @param groupId The management group ID.\n * @param deploymentName The name of the deployment.\n * @param nextLink The nextLink from the previous successful call to the ListAtManagementGroupScope\n * method.\n * @param options The options parameters.\n */\n _listAtManagementGroupScopeNext(groupId, deploymentName, nextLink, options) {\n return this.client.sendOperationRequest({ groupId, deploymentName, nextLink, options }, listAtManagementGroupScopeNextOperationSpec);\n }\n /**\n * ListAtSubscriptionScopeNext\n * @param deploymentName The name of the deployment.\n * @param nextLink The nextLink from the previous successful call to the ListAtSubscriptionScope\n * method.\n * @param options The options parameters.\n */\n _listAtSubscriptionScopeNext(deploymentName, nextLink, options) {\n return this.client.sendOperationRequest({ deploymentName, nextLink, options }, listAtSubscriptionScopeNextOperationSpec);\n }\n /**\n * ListNext\n * @param resourceGroupName The name of the resource group. The name is case insensitive.\n * @param deploymentName The name of the deployment.\n * @param nextLink The nextLink from the previous successful call to the List method.\n * @param options The options parameters.\n */\n _listNext(resourceGroupName, deploymentName, nextLink, options) {\n return this.client.sendOperationRequest({ resourceGroupName, deploymentName, nextLink, options }, listNextOperationSpec);\n }\n}\nexports.DeploymentOperationsImpl = DeploymentOperationsImpl;\n// Operation Specifications\nconst serializer = coreClient.createSerializer(Mappers, /* isXml */ false);\nconst getAtScopeOperationSpec = {\n path: \"/{scope}/providers/Microsoft.Resources/deployments/{deploymentName}/operations/{operationId}\",\n httpMethod: \"GET\",\n responses: {\n 200: {\n bodyMapper: Mappers.DeploymentOperation,\n },\n default: {\n bodyMapper: Mappers.CloudError,\n },\n },\n queryParameters: [Parameters.apiVersion],\n urlParameters: [\n Parameters.$host,\n Parameters.scope,\n Parameters.deploymentName,\n Parameters.operationId,\n ],\n headerParameters: [Parameters.accept],\n serializer,\n};\nconst listAtScopeOperationSpec = {\n path: \"/{scope}/providers/Microsoft.Resources/deployments/{deploymentName}/operations\",\n httpMethod: \"GET\",\n responses: {\n 200: {\n bodyMapper: Mappers.DeploymentOperationsListResult,\n },\n default: {\n bodyMapper: Mappers.CloudError,\n },\n },\n queryParameters: [Parameters.apiVersion, Parameters.top],\n urlParameters: [\n Parameters.$host,\n Parameters.scope,\n Parameters.deploymentName,\n ],\n headerParameters: [Parameters.accept],\n serializer,\n};\nconst getAtTenantScopeOperationSpec = {\n path: \"/providers/Microsoft.Resources/deployments/{deploymentName}/operations/{operationId}\",\n httpMethod: \"GET\",\n responses: {\n 200: {\n bodyMapper: Mappers.DeploymentOperation,\n },\n default: {\n bodyMapper: Mappers.CloudError,\n },\n },\n queryParameters: [Parameters.apiVersion],\n urlParameters: [\n Parameters.$host,\n Parameters.deploymentName,\n Parameters.operationId,\n ],\n headerParameters: [Parameters.accept],\n serializer,\n};\nconst listAtTenantScopeOperationSpec = {\n path: \"/providers/Microsoft.Resources/deployments/{deploymentName}/operations\",\n httpMethod: \"GET\",\n responses: {\n 200: {\n bodyMapper: Mappers.DeploymentOperationsListResult,\n },\n default: {\n bodyMapper: Mappers.CloudError,\n },\n },\n queryParameters: [Parameters.apiVersion, Parameters.top],\n urlParameters: [Parameters.$host, Parameters.deploymentName],\n headerParameters: [Parameters.accept],\n serializer,\n};\nconst getAtManagementGroupScopeOperationSpec = {\n path: \"/providers/Microsoft.Management/managementGroups/{groupId}/providers/Microsoft.Resources/deployments/{deploymentName}/operations/{operationId}\",\n httpMethod: \"GET\",\n responses: {\n 200: {\n bodyMapper: Mappers.DeploymentOperation,\n },\n default: {\n bodyMapper: Mappers.CloudError,\n },\n },\n queryParameters: [Parameters.apiVersion],\n urlParameters: [\n Parameters.$host,\n Parameters.deploymentName,\n Parameters.groupId,\n Parameters.operationId,\n ],\n headerParameters: [Parameters.accept],\n serializer,\n};\nconst listAtManagementGroupScopeOperationSpec = {\n path: \"/providers/Microsoft.Management/managementGroups/{groupId}/providers/Microsoft.Resources/deployments/{deploymentName}/operations\",\n httpMethod: \"GET\",\n responses: {\n 200: {\n bodyMapper: Mappers.DeploymentOperationsListResult,\n },\n default: {\n bodyMapper: Mappers.CloudError,\n },\n },\n queryParameters: [Parameters.apiVersion, Parameters.top],\n urlParameters: [\n Parameters.$host,\n Parameters.deploymentName,\n Parameters.groupId,\n ],\n headerParameters: [Parameters.accept],\n serializer,\n};\nconst getAtSubscriptionScopeOperationSpec = {\n path: \"/subscriptions/{subscriptionId}/providers/Microsoft.Resources/deployments/{deploymentName}/operations/{operationId}\",\n httpMethod: \"GET\",\n responses: {\n 200: {\n bodyMapper: Mappers.DeploymentOperation,\n },\n default: {\n bodyMapper: Mappers.CloudError,\n },\n },\n queryParameters: [Parameters.apiVersion],\n urlParameters: [\n Parameters.$host,\n Parameters.deploymentName,\n Parameters.subscriptionId,\n Parameters.operationId,\n ],\n headerParameters: [Parameters.accept],\n serializer,\n};\nconst listAtSubscriptionScopeOperationSpec = {\n path: \"/subscriptions/{subscriptionId}/providers/Microsoft.Resources/deployments/{deploymentName}/operations\",\n httpMethod: \"GET\",\n responses: {\n 200: {\n bodyMapper: Mappers.DeploymentOperationsListResult,\n },\n default: {\n bodyMapper: Mappers.CloudError,\n },\n },\n queryParameters: [Parameters.apiVersion, Parameters.top],\n urlParameters: [\n Parameters.$host,\n Parameters.deploymentName,\n Parameters.subscriptionId,\n ],\n headerParameters: [Parameters.accept],\n serializer,\n};\nconst getOperationSpec = {\n path: \"/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/deployments/{deploymentName}/operations/{operationId}\",\n httpMethod: \"GET\",\n responses: {\n 200: {\n bodyMapper: Mappers.DeploymentOperation,\n },\n default: {\n bodyMapper: Mappers.CloudError,\n },\n },\n queryParameters: [Parameters.apiVersion],\n urlParameters: [\n Parameters.$host,\n Parameters.deploymentName,\n Parameters.subscriptionId,\n Parameters.resourceGroupName,\n Parameters.operationId,\n ],\n headerParameters: [Parameters.accept],\n serializer,\n};\nconst listOperationSpec = {\n path: \"/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/deployments/{deploymentName}/operations\",\n httpMethod: \"GET\",\n responses: {\n 200: {\n bodyMapper: Mappers.DeploymentOperationsListResult,\n },\n default: {\n bodyMapper: Mappers.CloudError,\n },\n },\n queryParameters: [Parameters.apiVersion, Parameters.top],\n urlParameters: [\n Parameters.$host,\n Parameters.deploymentName,\n Parameters.subscriptionId,\n Parameters.resourceGroupName,\n ],\n headerParameters: [Parameters.accept],\n serializer,\n};\nconst listAtScopeNextOperationSpec = {\n path: \"{nextLink}\",\n httpMethod: \"GET\",\n responses: {\n 200: {\n bodyMapper: Mappers.DeploymentOperationsListResult,\n },\n default: {\n bodyMapper: Mappers.CloudError,\n },\n },\n urlParameters: [\n Parameters.$host,\n Parameters.nextLink,\n Parameters.scope,\n Parameters.deploymentName,\n ],\n headerParameters: [Parameters.accept],\n serializer,\n};\nconst listAtTenantScopeNextOperationSpec = {\n path: \"{nextLink}\",\n httpMethod: \"GET\",\n responses: {\n 200: {\n bodyMapper: Mappers.DeploymentOperationsListResult,\n },\n default: {\n bodyMapper: Mappers.CloudError,\n },\n },\n urlParameters: [\n Parameters.$host,\n Parameters.nextLink,\n Parameters.deploymentName,\n ],\n headerParameters: [Parameters.accept],\n serializer,\n};\nconst listAtManagementGroupScopeNextOperationSpec = {\n path: \"{nextLink}\",\n httpMethod: \"GET\",\n responses: {\n 200: {\n bodyMapper: Mappers.DeploymentOperationsListResult,\n },\n default: {\n bodyMapper: Mappers.CloudError,\n },\n },\n urlParameters: [\n Parameters.$host,\n Parameters.nextLink,\n Parameters.deploymentName,\n Parameters.groupId,\n ],\n headerParameters: [Parameters.accept],\n serializer,\n};\nconst listAtSubscriptionScopeNextOperationSpec = {\n path: \"{nextLink}\",\n httpMethod: \"GET\",\n responses: {\n 200: {\n bodyMapper: Mappers.DeploymentOperationsListResult,\n },\n default: {\n bodyMapper: Mappers.CloudError,\n },\n },\n urlParameters: [\n Parameters.$host,\n Parameters.nextLink,\n Parameters.deploymentName,\n Parameters.subscriptionId,\n ],\n headerParameters: [Parameters.accept],\n serializer,\n};\nconst listNextOperationSpec = {\n path: \"{nextLink}\",\n httpMethod: \"GET\",\n responses: {\n 200: {\n bodyMapper: Mappers.DeploymentOperationsListResult,\n },\n default: {\n bodyMapper: Mappers.CloudError,\n },\n },\n urlParameters: [\n Parameters.$host,\n Parameters.nextLink,\n Parameters.deploymentName,\n Parameters.subscriptionId,\n Parameters.resourceGroupName,\n ],\n headerParameters: [Parameters.accept],\n serializer,\n};\n//# sourceMappingURL=deploymentOperations.js.map","\"use strict\";\n/*\n * Copyright (c) Microsoft Corporation.\n * Licensed under the MIT License.\n *\n * Code generated by Microsoft (R) AutoRest Code Generator.\n * Changes may cause incorrect behavior and will be lost if the code is regenerated.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst tslib_1 = require(\"tslib\");\ntslib_1.__exportStar(require(\"./operations.js\"), exports);\ntslib_1.__exportStar(require(\"./deployments.js\"), exports);\ntslib_1.__exportStar(require(\"./providers.js\"), exports);\ntslib_1.__exportStar(require(\"./providerResourceTypes.js\"), exports);\ntslib_1.__exportStar(require(\"./resources.js\"), exports);\ntslib_1.__exportStar(require(\"./resourceGroups.js\"), exports);\ntslib_1.__exportStar(require(\"./tagsOperations.js\"), exports);\ntslib_1.__exportStar(require(\"./deploymentOperations.js\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\n/*\n * Copyright (c) Microsoft Corporation.\n * Licensed under the MIT License.\n *\n * Code generated by Microsoft (R) AutoRest Code Generator.\n * Changes may cause incorrect behavior and will be lost if the code is regenerated.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ResourceManagementClient = void 0;\nconst tslib_1 = require(\"tslib\");\nconst coreClient = tslib_1.__importStar(require(\"@azure/core-client\"));\nconst coreRestPipeline = tslib_1.__importStar(require(\"@azure/core-rest-pipeline\"));\nconst index_js_1 = require(\"./operations/index.js\");\nclass ResourceManagementClient extends coreClient.ServiceClient {\n constructor(credentials, subscriptionIdOrOptions, options) {\n var _a, _b, _c;\n if (credentials === undefined) {\n throw new Error(\"'credentials' cannot be null\");\n }\n let subscriptionId;\n if (typeof subscriptionIdOrOptions === \"string\") {\n subscriptionId = subscriptionIdOrOptions;\n }\n else if (typeof subscriptionIdOrOptions === \"object\") {\n options = subscriptionIdOrOptions;\n }\n // Initializing default values for options\n if (!options) {\n options = {};\n }\n const defaults = {\n requestContentType: \"application/json; charset=utf-8\",\n credential: credentials,\n };\n const packageDetails = `azsdk-js-arm-resources/6.1.0`;\n const userAgentPrefix = options.userAgentOptions && options.userAgentOptions.userAgentPrefix\n ? `${options.userAgentOptions.userAgentPrefix} ${packageDetails}`\n : `${packageDetails}`;\n const optionsWithDefaults = Object.assign(Object.assign(Object.assign({}, defaults), options), { userAgentOptions: {\n userAgentPrefix,\n }, endpoint: (_b = (_a = options.endpoint) !== null && _a !== void 0 ? _a : options.baseUri) !== null && _b !== void 0 ? _b : \"https://management.azure.com\" });\n super(optionsWithDefaults);\n let bearerTokenAuthenticationPolicyFound = false;\n if ((options === null || options === void 0 ? void 0 : options.pipeline) && options.pipeline.getOrderedPolicies().length > 0) {\n const pipelinePolicies = options.pipeline.getOrderedPolicies();\n bearerTokenAuthenticationPolicyFound = pipelinePolicies.some((pipelinePolicy) => pipelinePolicy.name ===\n coreRestPipeline.bearerTokenAuthenticationPolicyName);\n }\n if (!options ||\n !options.pipeline ||\n options.pipeline.getOrderedPolicies().length == 0 ||\n !bearerTokenAuthenticationPolicyFound) {\n this.pipeline.removePolicy({\n name: coreRestPipeline.bearerTokenAuthenticationPolicyName,\n });\n this.pipeline.addPolicy(coreRestPipeline.bearerTokenAuthenticationPolicy({\n credential: credentials,\n scopes: (_c = optionsWithDefaults.credentialScopes) !== null && _c !== void 0 ? _c : `${optionsWithDefaults.endpoint}/.default`,\n challengeCallbacks: {\n authorizeRequestOnChallenge: coreClient.authorizeRequestOnClaimChallenge,\n },\n }));\n }\n // Parameter assignments\n this.subscriptionId = subscriptionId;\n // Assigning values to Constant parameters\n this.$host = options.$host || \"https://management.azure.com\";\n this.apiVersion = options.apiVersion || \"2025-03-01\";\n this.operations = new index_js_1.OperationsImpl(this);\n this.deployments = new index_js_1.DeploymentsImpl(this);\n this.providers = new index_js_1.ProvidersImpl(this);\n this.providerResourceTypes = new index_js_1.ProviderResourceTypesImpl(this);\n this.resources = new index_js_1.ResourcesImpl(this);\n this.resourceGroups = new index_js_1.ResourceGroupsImpl(this);\n this.tagsOperations = new index_js_1.TagsOperationsImpl(this);\n this.deploymentOperations = new index_js_1.DeploymentOperationsImpl(this);\n this.addCustomApiVersionPolicy(options.apiVersion);\n }\n /** A function that adds a policy that sets the api-version (or equivalent) to reflect the library version. */\n addCustomApiVersionPolicy(apiVersion) {\n if (!apiVersion) {\n return;\n }\n const apiVersionPolicy = {\n name: \"CustomApiVersionPolicy\",\n async sendRequest(request, next) {\n const param = request.url.split(\"?\");\n if (param.length > 1) {\n const newParams = param[1].split(\"&\").map((item) => {\n if (item.indexOf(\"api-version\") > -1) {\n return \"api-version=\" + apiVersion;\n }\n else {\n return item;\n }\n });\n request.url = param[0] + \"?\" + newParams.join(\"&\");\n }\n return next(request);\n },\n };\n this.pipeline.addPolicy(apiVersionPolicy);\n }\n}\nexports.ResourceManagementClient = ResourceManagementClient;\n//# sourceMappingURL=resourceManagementClient.js.map","\"use strict\";\n/*\n * Copyright (c) Microsoft Corporation.\n * Licensed under the MIT License.\n *\n * Code generated by Microsoft (R) AutoRest Code Generator.\n * Changes may cause incorrect behavior and will be lost if the code is regenerated.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\n//# sourceMappingURL=operations.js.map","\"use strict\";\n/*\n * Copyright (c) Microsoft Corporation.\n * Licensed under the MIT License.\n *\n * Code generated by Microsoft (R) AutoRest Code Generator.\n * Changes may cause incorrect behavior and will be lost if the code is regenerated.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\n//# sourceMappingURL=deployments.js.map","\"use strict\";\n/*\n * Copyright (c) Microsoft Corporation.\n * Licensed under the MIT License.\n *\n * Code generated by Microsoft (R) AutoRest Code Generator.\n * Changes may cause incorrect behavior and will be lost if the code is regenerated.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\n//# sourceMappingURL=providers.js.map","\"use strict\";\n/*\n * Copyright (c) Microsoft Corporation.\n * Licensed under the MIT License.\n *\n * Code generated by Microsoft (R) AutoRest Code Generator.\n * Changes may cause incorrect behavior and will be lost if the code is regenerated.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\n//# sourceMappingURL=providerResourceTypes.js.map","\"use strict\";\n/*\n * Copyright (c) Microsoft Corporation.\n * Licensed under the MIT License.\n *\n * Code generated by Microsoft (R) AutoRest Code Generator.\n * Changes may cause incorrect behavior and will be lost if the code is regenerated.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\n//# sourceMappingURL=resources.js.map","\"use strict\";\n/*\n * Copyright (c) Microsoft Corporation.\n * Licensed under the MIT License.\n *\n * Code generated by Microsoft (R) AutoRest Code Generator.\n * Changes may cause incorrect behavior and will be lost if the code is regenerated.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\n//# sourceMappingURL=resourceGroups.js.map","\"use strict\";\n/*\n * Copyright (c) Microsoft Corporation.\n * Licensed under the MIT License.\n *\n * Code generated by Microsoft (R) AutoRest Code Generator.\n * Changes may cause incorrect behavior and will be lost if the code is regenerated.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\n//# sourceMappingURL=tagsOperations.js.map","\"use strict\";\n/*\n * Copyright (c) Microsoft Corporation.\n * Licensed under the MIT License.\n *\n * Code generated by Microsoft (R) AutoRest Code Generator.\n * Changes may cause incorrect behavior and will be lost if the code is regenerated.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\n//# sourceMappingURL=deploymentOperations.js.map","\"use strict\";\n/*\n * Copyright (c) Microsoft Corporation.\n * Licensed under the MIT License.\n *\n * Code generated by Microsoft (R) AutoRest Code Generator.\n * Changes may cause incorrect behavior and will be lost if the code is regenerated.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst tslib_1 = require(\"tslib\");\ntslib_1.__exportStar(require(\"./operations.js\"), exports);\ntslib_1.__exportStar(require(\"./deployments.js\"), exports);\ntslib_1.__exportStar(require(\"./providers.js\"), exports);\ntslib_1.__exportStar(require(\"./providerResourceTypes.js\"), exports);\ntslib_1.__exportStar(require(\"./resources.js\"), exports);\ntslib_1.__exportStar(require(\"./resourceGroups.js\"), exports);\ntslib_1.__exportStar(require(\"./tagsOperations.js\"), exports);\ntslib_1.__exportStar(require(\"./deploymentOperations.js\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\n/*\n * Copyright (c) Microsoft Corporation.\n * Licensed under the MIT License.\n *\n * Code generated by Microsoft (R) AutoRest Code Generator.\n * Changes may cause incorrect behavior and will be lost if the code is regenerated.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ResourceManagementClient = exports.getContinuationToken = void 0;\nconst tslib_1 = require(\"tslib\");\n/// \nvar pagingHelper_js_1 = require(\"./pagingHelper.js\");\nObject.defineProperty(exports, \"getContinuationToken\", { enumerable: true, get: function () { return pagingHelper_js_1.getContinuationToken; } });\ntslib_1.__exportStar(require(\"./models/index.js\"), exports);\nvar resourceManagementClient_js_1 = require(\"./resourceManagementClient.js\");\nObject.defineProperty(exports, \"ResourceManagementClient\", { enumerable: true, get: function () { return resourceManagementClient_js_1.ResourceManagementClient; } });\ntslib_1.__exportStar(require(\"./operationsInterfaces/index.js\"), exports);\n//# sourceMappingURL=index.js.map","'use strict';\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\nvar tslib = require('tslib');\nvar coreClient = require('@azure/core-client');\nvar coreRestPipeline = require('@azure/core-rest-pipeline');\nvar coreLro = require('@azure/core-lro');\n\nfunction _interopNamespaceDefault(e) {\n var n = Object.create(null);\n if (e) {\n Object.keys(e).forEach(function (k) {\n if (k !== 'default') {\n var d = Object.getOwnPropertyDescriptor(e, k);\n Object.defineProperty(n, k, d.get ? d : {\n enumerable: true,\n get: function () { return e[k]; }\n });\n }\n });\n }\n n.default = e;\n return Object.freeze(n);\n}\n\nvar coreClient__namespace = /*#__PURE__*/_interopNamespaceDefault(coreClient);\nvar coreRestPipeline__namespace = /*#__PURE__*/_interopNamespaceDefault(coreRestPipeline);\n\n/*\n * Copyright (c) Microsoft Corporation.\n * Licensed under the MIT License.\n *\n * Code generated by Microsoft (R) AutoRest Code Generator.\n * Changes may cause incorrect behavior and will be lost if the code is regenerated.\n */\nconst pageMap = new WeakMap();\n/**\n * Given the last `.value` produced by the `byPage` iterator,\n * returns a continuation token that can be used to begin paging from\n * that point later.\n * @param page An object from accessing `value` on the IteratorResult from a `byPage` iterator.\n * @returns The continuation token that can be passed into byPage() during future calls.\n */\nfunction getContinuationToken(page) {\n var _a;\n if (typeof page !== \"object\" || page === null) {\n return undefined;\n }\n return (_a = pageMap.get(page)) === null || _a === void 0 ? void 0 : _a.continuationToken;\n}\nfunction setContinuationToken(page, continuationToken) {\n var _a;\n if (typeof page !== \"object\" || page === null || !continuationToken) {\n return;\n }\n const pageInfo = (_a = pageMap.get(page)) !== null && _a !== void 0 ? _a : {};\n pageInfo.continuationToken = continuationToken;\n pageMap.set(page, pageInfo);\n}\n\n/*\n * Copyright (c) Microsoft Corporation.\n * Licensed under the MIT License.\n *\n * Code generated by Microsoft (R) AutoRest Code Generator.\n * Changes may cause incorrect behavior and will be lost if the code is regenerated.\n */\n/** Known values of {@link DeploymentStacksDeleteDetachEnum} that the service accepts. */\nexports.KnownDeploymentStacksDeleteDetachEnum = void 0;\n(function (KnownDeploymentStacksDeleteDetachEnum) {\n /** Delete */\n KnownDeploymentStacksDeleteDetachEnum[\"Delete\"] = \"delete\";\n /** Detach */\n KnownDeploymentStacksDeleteDetachEnum[\"Detach\"] = \"detach\";\n})(exports.KnownDeploymentStacksDeleteDetachEnum || (exports.KnownDeploymentStacksDeleteDetachEnum = {}));\n/** Known values of {@link DenySettingsMode} that the service accepts. */\nexports.KnownDenySettingsMode = void 0;\n(function (KnownDenySettingsMode) {\n /** Authorized users are able to read and modify the resources, but cannot delete. */\n KnownDenySettingsMode[\"DenyDelete\"] = \"denyDelete\";\n /** Authorized users can read from a resource, but cannot modify or delete it. */\n KnownDenySettingsMode[\"DenyWriteAndDelete\"] = \"denyWriteAndDelete\";\n /** No denyAssignments have been applied. */\n KnownDenySettingsMode[\"None\"] = \"none\";\n})(exports.KnownDenySettingsMode || (exports.KnownDenySettingsMode = {}));\n/** Known values of {@link DeploymentStackProvisioningState} that the service accepts. */\nexports.KnownDeploymentStackProvisioningState = void 0;\n(function (KnownDeploymentStackProvisioningState) {\n /** Creating */\n KnownDeploymentStackProvisioningState[\"Creating\"] = \"creating\";\n /** Validating */\n KnownDeploymentStackProvisioningState[\"Validating\"] = \"validating\";\n /** Waiting */\n KnownDeploymentStackProvisioningState[\"Waiting\"] = \"waiting\";\n /** Deploying */\n KnownDeploymentStackProvisioningState[\"Deploying\"] = \"deploying\";\n /** Canceling */\n KnownDeploymentStackProvisioningState[\"Canceling\"] = \"canceling\";\n /** UpdatingDenyAssignments */\n KnownDeploymentStackProvisioningState[\"UpdatingDenyAssignments\"] = \"updatingDenyAssignments\";\n /** DeletingResources */\n KnownDeploymentStackProvisioningState[\"DeletingResources\"] = \"deletingResources\";\n /** Succeeded */\n KnownDeploymentStackProvisioningState[\"Succeeded\"] = \"succeeded\";\n /** Failed */\n KnownDeploymentStackProvisioningState[\"Failed\"] = \"failed\";\n /** Canceled */\n KnownDeploymentStackProvisioningState[\"Canceled\"] = \"canceled\";\n /** Deleting */\n KnownDeploymentStackProvisioningState[\"Deleting\"] = \"deleting\";\n})(exports.KnownDeploymentStackProvisioningState || (exports.KnownDeploymentStackProvisioningState = {}));\n/** Known values of {@link ResourceStatusMode} that the service accepts. */\nexports.KnownResourceStatusMode = void 0;\n(function (KnownResourceStatusMode) {\n /** This resource is managed by the deployment stack. */\n KnownResourceStatusMode[\"Managed\"] = \"managed\";\n /** Unable to remove the deny assignment on resource. */\n KnownResourceStatusMode[\"RemoveDenyFailed\"] = \"removeDenyFailed\";\n /** Unable to delete the resource from Azure. The delete will be retried on the next stack deployment, or can be deleted manually. */\n KnownResourceStatusMode[\"DeleteFailed\"] = \"deleteFailed\";\n})(exports.KnownResourceStatusMode || (exports.KnownResourceStatusMode = {}));\n/** Known values of {@link DenyStatusMode} that the service accepts. */\nexports.KnownDenyStatusMode = void 0;\n(function (KnownDenyStatusMode) {\n /** Authorized users are able to read and modify the resources, but cannot delete. */\n KnownDenyStatusMode[\"DenyDelete\"] = \"denyDelete\";\n /** Resource type does not support denyAssignments. */\n KnownDenyStatusMode[\"NotSupported\"] = \"notSupported\";\n /** denyAssignments are not supported on resources outside the scope of the deployment stack. */\n KnownDenyStatusMode[\"Inapplicable\"] = \"inapplicable\";\n /** Authorized users can only read from a resource, but cannot modify or delete it. */\n KnownDenyStatusMode[\"DenyWriteAndDelete\"] = \"denyWriteAndDelete\";\n /** Deny assignment has been removed by Azure due to a resource management change (management group move, etc.) */\n KnownDenyStatusMode[\"RemovedBySystem\"] = \"removedBySystem\";\n /** No denyAssignments have been applied. */\n KnownDenyStatusMode[\"None\"] = \"none\";\n})(exports.KnownDenyStatusMode || (exports.KnownDenyStatusMode = {}));\n/** Known values of {@link CreatedByType} that the service accepts. */\nexports.KnownCreatedByType = void 0;\n(function (KnownCreatedByType) {\n /** User */\n KnownCreatedByType[\"User\"] = \"User\";\n /** Application */\n KnownCreatedByType[\"Application\"] = \"Application\";\n /** ManagedIdentity */\n KnownCreatedByType[\"ManagedIdentity\"] = \"ManagedIdentity\";\n /** Key */\n KnownCreatedByType[\"Key\"] = \"Key\";\n})(exports.KnownCreatedByType || (exports.KnownCreatedByType = {}));\n/** Known values of {@link UnmanageActionResourceMode} that the service accepts. */\nexports.KnownUnmanageActionResourceMode = void 0;\n(function (KnownUnmanageActionResourceMode) {\n /** Delete */\n KnownUnmanageActionResourceMode[\"Delete\"] = \"delete\";\n /** Detach */\n KnownUnmanageActionResourceMode[\"Detach\"] = \"detach\";\n})(exports.KnownUnmanageActionResourceMode || (exports.KnownUnmanageActionResourceMode = {}));\n/** Known values of {@link UnmanageActionResourceGroupMode} that the service accepts. */\nexports.KnownUnmanageActionResourceGroupMode = void 0;\n(function (KnownUnmanageActionResourceGroupMode) {\n /** Delete */\n KnownUnmanageActionResourceGroupMode[\"Delete\"] = \"delete\";\n /** Detach */\n KnownUnmanageActionResourceGroupMode[\"Detach\"] = \"detach\";\n})(exports.KnownUnmanageActionResourceGroupMode || (exports.KnownUnmanageActionResourceGroupMode = {}));\n/** Known values of {@link UnmanageActionManagementGroupMode} that the service accepts. */\nexports.KnownUnmanageActionManagementGroupMode = void 0;\n(function (KnownUnmanageActionManagementGroupMode) {\n /** Delete */\n KnownUnmanageActionManagementGroupMode[\"Delete\"] = \"delete\";\n /** Detach */\n KnownUnmanageActionManagementGroupMode[\"Detach\"] = \"detach\";\n})(exports.KnownUnmanageActionManagementGroupMode || (exports.KnownUnmanageActionManagementGroupMode = {}));\n\n/*\n * Copyright (c) Microsoft Corporation.\n * Licensed under the MIT License.\n *\n * Code generated by Microsoft (R) AutoRest Code Generator.\n * Changes may cause incorrect behavior and will be lost if the code is regenerated.\n */\nconst DeploymentStackListResult = {\n type: {\n name: \"Composite\",\n className: \"DeploymentStackListResult\",\n modelProperties: {\n value: {\n serializedName: \"value\",\n type: {\n name: \"Sequence\",\n element: {\n type: {\n name: \"Composite\",\n className: \"DeploymentStack\",\n },\n },\n },\n },\n nextLink: {\n serializedName: \"nextLink\",\n readOnly: true,\n type: {\n name: \"String\",\n },\n },\n },\n },\n};\nconst DeploymentStacksTemplateLink = {\n type: {\n name: \"Composite\",\n className: \"DeploymentStacksTemplateLink\",\n modelProperties: {\n uri: {\n serializedName: \"uri\",\n type: {\n name: \"String\",\n },\n },\n id: {\n serializedName: \"id\",\n type: {\n name: \"String\",\n },\n },\n relativePath: {\n serializedName: \"relativePath\",\n type: {\n name: \"String\",\n },\n },\n queryString: {\n serializedName: \"queryString\",\n type: {\n name: \"String\",\n },\n },\n contentVersion: {\n serializedName: \"contentVersion\",\n type: {\n name: \"String\",\n },\n },\n },\n },\n};\nconst DeploymentParameter = {\n type: {\n name: \"Composite\",\n className: \"DeploymentParameter\",\n modelProperties: {\n value: {\n serializedName: \"value\",\n type: {\n name: \"any\",\n },\n },\n type: {\n serializedName: \"type\",\n type: {\n name: \"String\",\n },\n },\n reference: {\n serializedName: \"reference\",\n type: {\n name: \"Composite\",\n className: \"KeyVaultParameterReference\",\n },\n },\n },\n },\n};\nconst KeyVaultParameterReference = {\n type: {\n name: \"Composite\",\n className: \"KeyVaultParameterReference\",\n modelProperties: {\n keyVault: {\n serializedName: \"keyVault\",\n type: {\n name: \"Composite\",\n className: \"KeyVaultReference\",\n },\n },\n secretName: {\n serializedName: \"secretName\",\n required: true,\n type: {\n name: \"String\",\n },\n },\n secretVersion: {\n serializedName: \"secretVersion\",\n type: {\n name: \"String\",\n },\n },\n },\n },\n};\nconst KeyVaultReference = {\n type: {\n name: \"Composite\",\n className: \"KeyVaultReference\",\n modelProperties: {\n id: {\n serializedName: \"id\",\n required: true,\n type: {\n name: \"String\",\n },\n },\n },\n },\n};\nconst DeploymentStacksParametersLink = {\n type: {\n name: \"Composite\",\n className: \"DeploymentStacksParametersLink\",\n modelProperties: {\n uri: {\n serializedName: \"uri\",\n required: true,\n type: {\n name: \"String\",\n },\n },\n contentVersion: {\n serializedName: \"contentVersion\",\n type: {\n name: \"String\",\n },\n },\n },\n },\n};\nconst ActionOnUnmanage = {\n type: {\n name: \"Composite\",\n className: \"ActionOnUnmanage\",\n modelProperties: {\n resources: {\n serializedName: \"resources\",\n required: true,\n type: {\n name: \"String\",\n },\n },\n resourceGroups: {\n serializedName: \"resourceGroups\",\n type: {\n name: \"String\",\n },\n },\n managementGroups: {\n serializedName: \"managementGroups\",\n type: {\n name: \"String\",\n },\n },\n },\n },\n};\nconst DeploymentStacksDebugSetting = {\n type: {\n name: \"Composite\",\n className: \"DeploymentStacksDebugSetting\",\n modelProperties: {\n detailLevel: {\n serializedName: \"detailLevel\",\n type: {\n name: \"String\",\n },\n },\n },\n },\n};\nconst DenySettings = {\n type: {\n name: \"Composite\",\n className: \"DenySettings\",\n modelProperties: {\n mode: {\n serializedName: \"mode\",\n required: true,\n type: {\n name: \"String\",\n },\n },\n excludedPrincipals: {\n serializedName: \"excludedPrincipals\",\n type: {\n name: \"Sequence\",\n element: {\n type: {\n name: \"String\",\n },\n },\n },\n },\n excludedActions: {\n serializedName: \"excludedActions\",\n type: {\n name: \"Sequence\",\n element: {\n type: {\n name: \"String\",\n },\n },\n },\n },\n applyToChildScopes: {\n serializedName: \"applyToChildScopes\",\n type: {\n name: \"Boolean\",\n },\n },\n },\n },\n};\nconst ResourceReference = {\n type: {\n name: \"Composite\",\n className: \"ResourceReference\",\n modelProperties: {\n id: {\n serializedName: \"id\",\n readOnly: true,\n type: {\n name: \"String\",\n },\n },\n },\n },\n};\nconst DeploymentStacksError = {\n type: {\n name: \"Composite\",\n className: \"DeploymentStacksError\",\n modelProperties: {\n error: {\n serializedName: \"error\",\n type: {\n name: \"Composite\",\n className: \"ErrorDetail\",\n },\n },\n },\n },\n};\nconst ErrorDetail = {\n type: {\n name: \"Composite\",\n className: \"ErrorDetail\",\n modelProperties: {\n code: {\n serializedName: \"code\",\n readOnly: true,\n type: {\n name: \"String\",\n },\n },\n message: {\n serializedName: \"message\",\n readOnly: true,\n type: {\n name: \"String\",\n },\n },\n target: {\n serializedName: \"target\",\n readOnly: true,\n type: {\n name: \"String\",\n },\n },\n details: {\n serializedName: \"details\",\n readOnly: true,\n type: {\n name: \"Sequence\",\n element: {\n type: {\n name: \"Composite\",\n className: \"ErrorDetail\",\n },\n },\n },\n },\n additionalInfo: {\n serializedName: \"additionalInfo\",\n readOnly: true,\n type: {\n name: \"Sequence\",\n element: {\n type: {\n name: \"Composite\",\n className: \"ErrorAdditionalInfo\",\n },\n },\n },\n },\n },\n },\n};\nconst ErrorAdditionalInfo = {\n type: {\n name: \"Composite\",\n className: \"ErrorAdditionalInfo\",\n modelProperties: {\n type: {\n serializedName: \"type\",\n readOnly: true,\n type: {\n name: \"String\",\n },\n },\n info: {\n serializedName: \"info\",\n readOnly: true,\n type: {\n name: \"Dictionary\",\n value: { type: { name: \"any\" } },\n },\n },\n },\n },\n};\nconst AzureResourceBase = {\n type: {\n name: \"Composite\",\n className: \"AzureResourceBase\",\n modelProperties: {\n id: {\n serializedName: \"id\",\n readOnly: true,\n type: {\n name: \"String\",\n },\n },\n name: {\n serializedName: \"name\",\n readOnly: true,\n type: {\n name: \"String\",\n },\n },\n type: {\n serializedName: \"type\",\n readOnly: true,\n type: {\n name: \"String\",\n },\n },\n systemData: {\n serializedName: \"systemData\",\n type: {\n name: \"Composite\",\n className: \"SystemData\",\n },\n },\n },\n },\n};\nconst SystemData = {\n type: {\n name: \"Composite\",\n className: \"SystemData\",\n modelProperties: {\n createdBy: {\n serializedName: \"createdBy\",\n type: {\n name: \"String\",\n },\n },\n createdByType: {\n serializedName: \"createdByType\",\n type: {\n name: \"String\",\n },\n },\n createdAt: {\n serializedName: \"createdAt\",\n type: {\n name: \"DateTime\",\n },\n },\n lastModifiedBy: {\n serializedName: \"lastModifiedBy\",\n type: {\n name: \"String\",\n },\n },\n lastModifiedByType: {\n serializedName: \"lastModifiedByType\",\n type: {\n name: \"String\",\n },\n },\n lastModifiedAt: {\n serializedName: \"lastModifiedAt\",\n type: {\n name: \"DateTime\",\n },\n },\n },\n },\n};\nconst DeploymentStackTemplateDefinition = {\n type: {\n name: \"Composite\",\n className: \"DeploymentStackTemplateDefinition\",\n modelProperties: {\n template: {\n serializedName: \"template\",\n type: {\n name: \"Dictionary\",\n value: { type: { name: \"any\" } },\n },\n },\n templateLink: {\n serializedName: \"templateLink\",\n type: {\n name: \"Composite\",\n className: \"DeploymentStacksTemplateLink\",\n },\n },\n },\n },\n};\nconst DeploymentStackValidateProperties = {\n type: {\n name: \"Composite\",\n className: \"DeploymentStackValidateProperties\",\n modelProperties: {\n actionOnUnmanage: {\n serializedName: \"actionOnUnmanage\",\n type: {\n name: \"Composite\",\n className: \"ActionOnUnmanage\",\n },\n },\n correlationId: {\n serializedName: \"correlationId\",\n type: {\n name: \"String\",\n },\n },\n denySettings: {\n serializedName: \"denySettings\",\n type: {\n name: \"Composite\",\n className: \"DenySettings\",\n },\n },\n deploymentScope: {\n serializedName: \"deploymentScope\",\n type: {\n name: \"String\",\n },\n },\n description: {\n serializedName: \"description\",\n type: {\n name: \"String\",\n },\n },\n parameters: {\n serializedName: \"parameters\",\n type: {\n name: \"Dictionary\",\n value: {\n type: { name: \"Composite\", className: \"DeploymentParameter\" },\n },\n },\n },\n templateLink: {\n serializedName: \"templateLink\",\n type: {\n name: \"Composite\",\n className: \"DeploymentStacksTemplateLink\",\n },\n },\n validatedResources: {\n serializedName: \"validatedResources\",\n type: {\n name: \"Sequence\",\n element: {\n type: {\n name: \"Composite\",\n className: \"ResourceReference\",\n },\n },\n },\n },\n },\n },\n};\nconst ResourceReferenceExtended = {\n type: {\n name: \"Composite\",\n className: \"ResourceReferenceExtended\",\n modelProperties: Object.assign(Object.assign({}, ResourceReference.type.modelProperties), DeploymentStacksError.type.modelProperties),\n },\n};\nconst ManagedResourceReference = {\n type: {\n name: \"Composite\",\n className: \"ManagedResourceReference\",\n modelProperties: Object.assign(Object.assign({}, ResourceReference.type.modelProperties), { status: {\n serializedName: \"status\",\n type: {\n name: \"String\",\n },\n }, denyStatus: {\n defaultValue: \"none\",\n serializedName: \"denyStatus\",\n type: {\n name: \"String\",\n },\n } }),\n },\n};\nconst DeploymentStackProperties = {\n type: {\n name: \"Composite\",\n className: \"DeploymentStackProperties\",\n modelProperties: Object.assign(Object.assign({}, DeploymentStacksError.type.modelProperties), { template: {\n serializedName: \"template\",\n type: {\n name: \"Dictionary\",\n value: { type: { name: \"any\" } },\n },\n }, templateLink: {\n serializedName: \"templateLink\",\n type: {\n name: \"Composite\",\n className: \"DeploymentStacksTemplateLink\",\n },\n }, parameters: {\n serializedName: \"parameters\",\n type: {\n name: \"Dictionary\",\n value: {\n type: { name: \"Composite\", className: \"DeploymentParameter\" },\n },\n },\n }, parametersLink: {\n serializedName: \"parametersLink\",\n type: {\n name: \"Composite\",\n className: \"DeploymentStacksParametersLink\",\n },\n }, actionOnUnmanage: {\n serializedName: \"actionOnUnmanage\",\n type: {\n name: \"Composite\",\n className: \"ActionOnUnmanage\",\n },\n }, debugSetting: {\n serializedName: \"debugSetting\",\n type: {\n name: \"Composite\",\n className: \"DeploymentStacksDebugSetting\",\n },\n }, bypassStackOutOfSyncError: {\n serializedName: \"bypassStackOutOfSyncError\",\n type: {\n name: \"Boolean\",\n },\n }, deploymentScope: {\n serializedName: \"deploymentScope\",\n type: {\n name: \"String\",\n },\n }, description: {\n constraints: {\n MaxLength: 4096,\n },\n serializedName: \"description\",\n type: {\n name: \"String\",\n },\n }, denySettings: {\n serializedName: \"denySettings\",\n type: {\n name: \"Composite\",\n className: \"DenySettings\",\n },\n }, provisioningState: {\n serializedName: \"provisioningState\",\n readOnly: true,\n type: {\n name: \"String\",\n },\n }, correlationId: {\n serializedName: \"correlationId\",\n readOnly: true,\n type: {\n name: \"String\",\n },\n }, detachedResources: {\n serializedName: \"detachedResources\",\n readOnly: true,\n type: {\n name: \"Sequence\",\n element: {\n type: {\n name: \"Composite\",\n className: \"ResourceReference\",\n },\n },\n },\n }, deletedResources: {\n serializedName: \"deletedResources\",\n readOnly: true,\n type: {\n name: \"Sequence\",\n element: {\n type: {\n name: \"Composite\",\n className: \"ResourceReference\",\n },\n },\n },\n }, failedResources: {\n serializedName: \"failedResources\",\n readOnly: true,\n type: {\n name: \"Sequence\",\n element: {\n type: {\n name: \"Composite\",\n className: \"ResourceReferenceExtended\",\n },\n },\n },\n }, resources: {\n serializedName: \"resources\",\n readOnly: true,\n type: {\n name: \"Sequence\",\n element: {\n type: {\n name: \"Composite\",\n className: \"ManagedResourceReference\",\n },\n },\n },\n }, deploymentId: {\n serializedName: \"deploymentId\",\n readOnly: true,\n type: {\n name: \"String\",\n },\n }, outputs: {\n serializedName: \"outputs\",\n readOnly: true,\n type: {\n name: \"Dictionary\",\n value: { type: { name: \"any\" } },\n },\n }, duration: {\n serializedName: \"duration\",\n readOnly: true,\n type: {\n name: \"String\",\n },\n } }),\n },\n};\nconst DeploymentStackValidateResult = {\n type: {\n name: \"Composite\",\n className: \"DeploymentStackValidateResult\",\n modelProperties: Object.assign(Object.assign(Object.assign({}, AzureResourceBase.type.modelProperties), DeploymentStacksError.type.modelProperties), { properties: {\n serializedName: \"properties\",\n type: {\n name: \"Composite\",\n className: \"DeploymentStackValidateProperties\",\n },\n } }),\n },\n};\nconst DeploymentStack = {\n type: {\n name: \"Composite\",\n className: \"DeploymentStack\",\n modelProperties: Object.assign(Object.assign({}, AzureResourceBase.type.modelProperties), { location: {\n serializedName: \"location\",\n type: {\n name: \"String\",\n },\n }, tags: {\n serializedName: \"tags\",\n type: {\n name: \"Dictionary\",\n value: { type: { name: \"String\" } },\n },\n }, properties: {\n serializedName: \"properties\",\n type: {\n name: \"Composite\",\n className: \"DeploymentStackProperties\",\n },\n } }),\n },\n};\nconst DeploymentStacksDeleteAtResourceGroupHeaders = {\n type: {\n name: \"Composite\",\n className: \"DeploymentStacksDeleteAtResourceGroupHeaders\",\n modelProperties: {\n location: {\n serializedName: \"location\",\n type: {\n name: \"String\",\n },\n },\n },\n },\n};\nconst DeploymentStacksDeleteAtSubscriptionHeaders = {\n type: {\n name: \"Composite\",\n className: \"DeploymentStacksDeleteAtSubscriptionHeaders\",\n modelProperties: {\n location: {\n serializedName: \"location\",\n type: {\n name: \"String\",\n },\n },\n },\n },\n};\nconst DeploymentStacksDeleteAtManagementGroupHeaders = {\n type: {\n name: \"Composite\",\n className: \"DeploymentStacksDeleteAtManagementGroupHeaders\",\n modelProperties: {\n location: {\n serializedName: \"location\",\n type: {\n name: \"String\",\n },\n },\n },\n },\n};\nconst DeploymentStacksValidateStackAtResourceGroupHeaders = {\n type: {\n name: \"Composite\",\n className: \"DeploymentStacksValidateStackAtResourceGroupHeaders\",\n modelProperties: {\n location: {\n serializedName: \"location\",\n type: {\n name: \"String\",\n },\n },\n retryAfter: {\n serializedName: \"retry-after\",\n type: {\n name: \"String\",\n },\n },\n },\n },\n};\nconst DeploymentStacksValidateStackAtSubscriptionHeaders = {\n type: {\n name: \"Composite\",\n className: \"DeploymentStacksValidateStackAtSubscriptionHeaders\",\n modelProperties: {\n location: {\n serializedName: \"location\",\n type: {\n name: \"String\",\n },\n },\n retryAfter: {\n serializedName: \"retry-after\",\n type: {\n name: \"String\",\n },\n },\n },\n },\n};\nconst DeploymentStacksValidateStackAtManagementGroupHeaders = {\n type: {\n name: \"Composite\",\n className: \"DeploymentStacksValidateStackAtManagementGroupHeaders\",\n modelProperties: {\n location: {\n serializedName: \"location\",\n type: {\n name: \"String\",\n },\n },\n retryAfter: {\n serializedName: \"retry-after\",\n type: {\n name: \"String\",\n },\n },\n },\n },\n};\n\nvar Mappers = /*#__PURE__*/Object.freeze({\n __proto__: null,\n ActionOnUnmanage: ActionOnUnmanage,\n AzureResourceBase: AzureResourceBase,\n DenySettings: DenySettings,\n DeploymentParameter: DeploymentParameter,\n DeploymentStack: DeploymentStack,\n DeploymentStackListResult: DeploymentStackListResult,\n DeploymentStackProperties: DeploymentStackProperties,\n DeploymentStackTemplateDefinition: DeploymentStackTemplateDefinition,\n DeploymentStackValidateProperties: DeploymentStackValidateProperties,\n DeploymentStackValidateResult: DeploymentStackValidateResult,\n DeploymentStacksDebugSetting: DeploymentStacksDebugSetting,\n DeploymentStacksDeleteAtManagementGroupHeaders: DeploymentStacksDeleteAtManagementGroupHeaders,\n DeploymentStacksDeleteAtResourceGroupHeaders: DeploymentStacksDeleteAtResourceGroupHeaders,\n DeploymentStacksDeleteAtSubscriptionHeaders: DeploymentStacksDeleteAtSubscriptionHeaders,\n DeploymentStacksError: DeploymentStacksError,\n DeploymentStacksParametersLink: DeploymentStacksParametersLink,\n DeploymentStacksTemplateLink: DeploymentStacksTemplateLink,\n DeploymentStacksValidateStackAtManagementGroupHeaders: DeploymentStacksValidateStackAtManagementGroupHeaders,\n DeploymentStacksValidateStackAtResourceGroupHeaders: DeploymentStacksValidateStackAtResourceGroupHeaders,\n DeploymentStacksValidateStackAtSubscriptionHeaders: DeploymentStacksValidateStackAtSubscriptionHeaders,\n ErrorAdditionalInfo: ErrorAdditionalInfo,\n ErrorDetail: ErrorDetail,\n KeyVaultParameterReference: KeyVaultParameterReference,\n KeyVaultReference: KeyVaultReference,\n ManagedResourceReference: ManagedResourceReference,\n ResourceReference: ResourceReference,\n ResourceReferenceExtended: ResourceReferenceExtended,\n SystemData: SystemData\n});\n\n/*\n * Copyright (c) Microsoft Corporation.\n * Licensed under the MIT License.\n *\n * Code generated by Microsoft (R) AutoRest Code Generator.\n * Changes may cause incorrect behavior and will be lost if the code is regenerated.\n */\nconst accept = {\n parameterPath: \"accept\",\n mapper: {\n defaultValue: \"application/json\",\n isConstant: true,\n serializedName: \"Accept\",\n type: {\n name: \"String\",\n },\n },\n};\nconst $host = {\n parameterPath: \"$host\",\n mapper: {\n serializedName: \"$host\",\n required: true,\n type: {\n name: \"String\",\n },\n },\n skipEncoding: true,\n};\nconst subscriptionId = {\n parameterPath: \"subscriptionId\",\n mapper: {\n serializedName: \"subscriptionId\",\n required: true,\n type: {\n name: \"Uuid\",\n },\n },\n};\nconst resourceGroupName = {\n parameterPath: \"resourceGroupName\",\n mapper: {\n constraints: {\n MaxLength: 90,\n MinLength: 1,\n },\n serializedName: \"resourceGroupName\",\n required: true,\n type: {\n name: \"String\",\n },\n },\n};\nconst apiVersion = {\n parameterPath: \"apiVersion\",\n mapper: {\n defaultValue: \"2024-03-01\",\n isConstant: true,\n serializedName: \"api-version\",\n type: {\n name: \"String\",\n },\n },\n};\nconst managementGroupId = {\n parameterPath: \"managementGroupId\",\n mapper: {\n constraints: {\n Pattern: new RegExp(\"^[-\\\\w\\\\._\\\\(\\\\)]+$\"),\n MaxLength: 90,\n MinLength: 1,\n },\n serializedName: \"managementGroupId\",\n required: true,\n type: {\n name: \"String\",\n },\n },\n};\nconst contentType = {\n parameterPath: [\"options\", \"contentType\"],\n mapper: {\n defaultValue: \"application/json\",\n isConstant: true,\n serializedName: \"Content-Type\",\n type: {\n name: \"String\",\n },\n },\n};\nconst deploymentStack = {\n parameterPath: \"deploymentStack\",\n mapper: DeploymentStack,\n};\nconst deploymentStackName = {\n parameterPath: \"deploymentStackName\",\n mapper: {\n constraints: {\n Pattern: new RegExp(\"^[-\\\\w\\\\._\\\\(\\\\)]+$\"),\n MaxLength: 90,\n MinLength: 1,\n },\n serializedName: \"deploymentStackName\",\n required: true,\n type: {\n name: \"String\",\n },\n },\n};\nconst unmanageActionResources = {\n parameterPath: [\"options\", \"unmanageActionResources\"],\n mapper: {\n serializedName: \"unmanageAction.Resources\",\n type: {\n name: \"String\",\n },\n },\n};\nconst unmanageActionResourceGroups = {\n parameterPath: [\"options\", \"unmanageActionResourceGroups\"],\n mapper: {\n serializedName: \"unmanageAction.ResourceGroups\",\n type: {\n name: \"String\",\n },\n },\n};\nconst unmanageActionManagementGroups = {\n parameterPath: [\"options\", \"unmanageActionManagementGroups\"],\n mapper: {\n serializedName: \"unmanageAction.ManagementGroups\",\n type: {\n name: \"String\",\n },\n },\n};\nconst bypassStackOutOfSyncError = {\n parameterPath: [\"options\", \"bypassStackOutOfSyncError\"],\n mapper: {\n serializedName: \"bypassStackOutOfSyncError\",\n type: {\n name: \"Boolean\",\n },\n },\n};\nconst nextLink = {\n parameterPath: \"nextLink\",\n mapper: {\n serializedName: \"nextLink\",\n required: true,\n type: {\n name: \"String\",\n },\n },\n skipEncoding: true,\n};\n\n/*\n * Copyright (c) Microsoft Corporation.\n * Licensed under the MIT License.\n *\n * Code generated by Microsoft (R) AutoRest Code Generator.\n * Changes may cause incorrect behavior and will be lost if the code is regenerated.\n */\nfunction createLroSpec(inputs) {\n const { args, spec, sendOperationFn } = inputs;\n return {\n requestMethod: spec.httpMethod,\n requestPath: spec.path,\n sendInitialRequest: () => sendOperationFn(args, spec),\n sendPollRequest: (path, options) => {\n const restSpec = tslib.__rest(spec, [\"requestBody\"]);\n return sendOperationFn(args, Object.assign(Object.assign({}, restSpec), { httpMethod: \"GET\", path, abortSignal: options === null || options === void 0 ? void 0 : options.abortSignal }));\n },\n };\n}\n\n/*\n * Copyright (c) Microsoft Corporation.\n * Licensed under the MIT License.\n *\n * Code generated by Microsoft (R) AutoRest Code Generator.\n * Changes may cause incorrect behavior and will be lost if the code is regenerated.\n */\n/// \n/** Class containing DeploymentStacks operations. */\nclass DeploymentStacksImpl {\n /**\n * Initialize a new instance of the class DeploymentStacks class.\n * @param client Reference to the service client\n */\n constructor(client) {\n this.client = client;\n }\n /**\n * Lists all the Deployment stacks within the specified Resource Group.\n * @param resourceGroupName The name of the resource group. The name is case insensitive.\n * @param options The options parameters.\n */\n listAtResourceGroup(resourceGroupName, options) {\n const iter = this.listAtResourceGroupPagingAll(resourceGroupName, options);\n return {\n next() {\n return iter.next();\n },\n [Symbol.asyncIterator]() {\n return this;\n },\n byPage: (settings) => {\n if (settings === null || settings === void 0 ? void 0 : settings.maxPageSize) {\n throw new Error(\"maxPageSize is not supported by this operation.\");\n }\n return this.listAtResourceGroupPagingPage(resourceGroupName, options, settings);\n },\n };\n }\n listAtResourceGroupPagingPage(resourceGroupName, options, settings) {\n return tslib.__asyncGenerator(this, arguments, function* listAtResourceGroupPagingPage_1() {\n let result;\n let continuationToken = settings === null || settings === void 0 ? void 0 : settings.continuationToken;\n if (!continuationToken) {\n result = yield tslib.__await(this._listAtResourceGroup(resourceGroupName, options));\n let page = result.value || [];\n continuationToken = result.nextLink;\n setContinuationToken(page, continuationToken);\n yield yield tslib.__await(page);\n }\n while (continuationToken) {\n result = yield tslib.__await(this._listAtResourceGroupNext(resourceGroupName, continuationToken, options));\n continuationToken = result.nextLink;\n let page = result.value || [];\n setContinuationToken(page, continuationToken);\n yield yield tslib.__await(page);\n }\n });\n }\n listAtResourceGroupPagingAll(resourceGroupName, options) {\n return tslib.__asyncGenerator(this, arguments, function* listAtResourceGroupPagingAll_1() {\n var _a, e_1, _b, _c;\n try {\n for (var _d = true, _e = tslib.__asyncValues(this.listAtResourceGroupPagingPage(resourceGroupName, options)), _f; _f = yield tslib.__await(_e.next()), _a = _f.done, !_a; _d = true) {\n _c = _f.value;\n _d = false;\n const page = _c;\n yield tslib.__await(yield* tslib.__asyncDelegator(tslib.__asyncValues(page)));\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (!_d && !_a && (_b = _e.return)) yield tslib.__await(_b.call(_e));\n }\n finally { if (e_1) throw e_1.error; }\n }\n });\n }\n /**\n * Lists all the Deployment stacks within the specified Subscription.\n * @param options The options parameters.\n */\n listAtSubscription(options) {\n const iter = this.listAtSubscriptionPagingAll(options);\n return {\n next() {\n return iter.next();\n },\n [Symbol.asyncIterator]() {\n return this;\n },\n byPage: (settings) => {\n if (settings === null || settings === void 0 ? void 0 : settings.maxPageSize) {\n throw new Error(\"maxPageSize is not supported by this operation.\");\n }\n return this.listAtSubscriptionPagingPage(options, settings);\n },\n };\n }\n listAtSubscriptionPagingPage(options, settings) {\n return tslib.__asyncGenerator(this, arguments, function* listAtSubscriptionPagingPage_1() {\n let result;\n let continuationToken = settings === null || settings === void 0 ? void 0 : settings.continuationToken;\n if (!continuationToken) {\n result = yield tslib.__await(this._listAtSubscription(options));\n let page = result.value || [];\n continuationToken = result.nextLink;\n setContinuationToken(page, continuationToken);\n yield yield tslib.__await(page);\n }\n while (continuationToken) {\n result = yield tslib.__await(this._listAtSubscriptionNext(continuationToken, options));\n continuationToken = result.nextLink;\n let page = result.value || [];\n setContinuationToken(page, continuationToken);\n yield yield tslib.__await(page);\n }\n });\n }\n listAtSubscriptionPagingAll(options) {\n return tslib.__asyncGenerator(this, arguments, function* listAtSubscriptionPagingAll_1() {\n var _a, e_2, _b, _c;\n try {\n for (var _d = true, _e = tslib.__asyncValues(this.listAtSubscriptionPagingPage(options)), _f; _f = yield tslib.__await(_e.next()), _a = _f.done, !_a; _d = true) {\n _c = _f.value;\n _d = false;\n const page = _c;\n yield tslib.__await(yield* tslib.__asyncDelegator(tslib.__asyncValues(page)));\n }\n }\n catch (e_2_1) { e_2 = { error: e_2_1 }; }\n finally {\n try {\n if (!_d && !_a && (_b = _e.return)) yield tslib.__await(_b.call(_e));\n }\n finally { if (e_2) throw e_2.error; }\n }\n });\n }\n /**\n * Lists all the Deployment stacks within the specified Management Group.\n * @param managementGroupId Management Group id.\n * @param options The options parameters.\n */\n listAtManagementGroup(managementGroupId, options) {\n const iter = this.listAtManagementGroupPagingAll(managementGroupId, options);\n return {\n next() {\n return iter.next();\n },\n [Symbol.asyncIterator]() {\n return this;\n },\n byPage: (settings) => {\n if (settings === null || settings === void 0 ? void 0 : settings.maxPageSize) {\n throw new Error(\"maxPageSize is not supported by this operation.\");\n }\n return this.listAtManagementGroupPagingPage(managementGroupId, options, settings);\n },\n };\n }\n listAtManagementGroupPagingPage(managementGroupId, options, settings) {\n return tslib.__asyncGenerator(this, arguments, function* listAtManagementGroupPagingPage_1() {\n let result;\n let continuationToken = settings === null || settings === void 0 ? void 0 : settings.continuationToken;\n if (!continuationToken) {\n result = yield tslib.__await(this._listAtManagementGroup(managementGroupId, options));\n let page = result.value || [];\n continuationToken = result.nextLink;\n setContinuationToken(page, continuationToken);\n yield yield tslib.__await(page);\n }\n while (continuationToken) {\n result = yield tslib.__await(this._listAtManagementGroupNext(managementGroupId, continuationToken, options));\n continuationToken = result.nextLink;\n let page = result.value || [];\n setContinuationToken(page, continuationToken);\n yield yield tslib.__await(page);\n }\n });\n }\n listAtManagementGroupPagingAll(managementGroupId, options) {\n return tslib.__asyncGenerator(this, arguments, function* listAtManagementGroupPagingAll_1() {\n var _a, e_3, _b, _c;\n try {\n for (var _d = true, _e = tslib.__asyncValues(this.listAtManagementGroupPagingPage(managementGroupId, options)), _f; _f = yield tslib.__await(_e.next()), _a = _f.done, !_a; _d = true) {\n _c = _f.value;\n _d = false;\n const page = _c;\n yield tslib.__await(yield* tslib.__asyncDelegator(tslib.__asyncValues(page)));\n }\n }\n catch (e_3_1) { e_3 = { error: e_3_1 }; }\n finally {\n try {\n if (!_d && !_a && (_b = _e.return)) yield tslib.__await(_b.call(_e));\n }\n finally { if (e_3) throw e_3.error; }\n }\n });\n }\n /**\n * Lists all the Deployment stacks within the specified Resource Group.\n * @param resourceGroupName The name of the resource group. The name is case insensitive.\n * @param options The options parameters.\n */\n _listAtResourceGroup(resourceGroupName, options) {\n return this.client.sendOperationRequest({ resourceGroupName, options }, listAtResourceGroupOperationSpec);\n }\n /**\n * Lists all the Deployment stacks within the specified Subscription.\n * @param options The options parameters.\n */\n _listAtSubscription(options) {\n return this.client.sendOperationRequest({ options }, listAtSubscriptionOperationSpec);\n }\n /**\n * Lists all the Deployment stacks within the specified Management Group.\n * @param managementGroupId Management Group id.\n * @param options The options parameters.\n */\n _listAtManagementGroup(managementGroupId, options) {\n return this.client.sendOperationRequest({ managementGroupId, options }, listAtManagementGroupOperationSpec);\n }\n /**\n * Creates or updates a Deployment stack at Resource Group scope.\n * @param resourceGroupName The name of the resource group. The name is case insensitive.\n * @param deploymentStackName Name of the deployment stack.\n * @param deploymentStack Deployment stack supplied to the operation.\n * @param options The options parameters.\n */\n beginCreateOrUpdateAtResourceGroup(resourceGroupName, deploymentStackName, deploymentStack, options) {\n return tslib.__awaiter(this, void 0, void 0, function* () {\n const directSendOperation = (args, spec) => tslib.__awaiter(this, void 0, void 0, function* () {\n return this.client.sendOperationRequest(args, spec);\n });\n const sendOperationFn = (args, spec) => tslib.__awaiter(this, void 0, void 0, function* () {\n var _a;\n let currentRawResponse = undefined;\n const providedCallback = (_a = args.options) === null || _a === void 0 ? void 0 : _a.onResponse;\n const callback = (rawResponse, flatResponse) => {\n currentRawResponse = rawResponse;\n providedCallback === null || providedCallback === void 0 ? void 0 : providedCallback(rawResponse, flatResponse);\n };\n const updatedArgs = Object.assign(Object.assign({}, args), { options: Object.assign(Object.assign({}, args.options), { onResponse: callback }) });\n const flatResponse = yield directSendOperation(updatedArgs, spec);\n return {\n flatResponse,\n rawResponse: {\n statusCode: currentRawResponse.status,\n body: currentRawResponse.parsedBody,\n headers: currentRawResponse.headers.toJSON(),\n },\n };\n });\n const lro = createLroSpec({\n sendOperationFn,\n args: {\n resourceGroupName,\n deploymentStackName,\n deploymentStack,\n options,\n },\n spec: createOrUpdateAtResourceGroupOperationSpec,\n });\n const poller = yield coreLro.createHttpPoller(lro, {\n restoreFrom: options === null || options === void 0 ? void 0 : options.resumeFrom,\n intervalInMs: options === null || options === void 0 ? void 0 : options.updateIntervalInMs,\n resourceLocationConfig: \"azure-async-operation\",\n });\n yield poller.poll();\n return poller;\n });\n }\n /**\n * Creates or updates a Deployment stack at Resource Group scope.\n * @param resourceGroupName The name of the resource group. The name is case insensitive.\n * @param deploymentStackName Name of the deployment stack.\n * @param deploymentStack Deployment stack supplied to the operation.\n * @param options The options parameters.\n */\n beginCreateOrUpdateAtResourceGroupAndWait(resourceGroupName, deploymentStackName, deploymentStack, options) {\n return tslib.__awaiter(this, void 0, void 0, function* () {\n const poller = yield this.beginCreateOrUpdateAtResourceGroup(resourceGroupName, deploymentStackName, deploymentStack, options);\n return poller.pollUntilDone();\n });\n }\n /**\n * Gets a Deployment stack with a given name at Resource Group scope.\n * @param resourceGroupName The name of the resource group. The name is case insensitive.\n * @param deploymentStackName Name of the deployment stack.\n * @param options The options parameters.\n */\n getAtResourceGroup(resourceGroupName, deploymentStackName, options) {\n return this.client.sendOperationRequest({ resourceGroupName, deploymentStackName, options }, getAtResourceGroupOperationSpec);\n }\n /**\n * Deletes a Deployment stack by name at Resource Group scope. When operation completes, status code\n * 200 returned without content.\n * @param resourceGroupName The name of the resource group. The name is case insensitive.\n * @param deploymentStackName Name of the deployment stack.\n * @param options The options parameters.\n */\n beginDeleteAtResourceGroup(resourceGroupName, deploymentStackName, options) {\n return tslib.__awaiter(this, void 0, void 0, function* () {\n const directSendOperation = (args, spec) => tslib.__awaiter(this, void 0, void 0, function* () {\n return this.client.sendOperationRequest(args, spec);\n });\n const sendOperationFn = (args, spec) => tslib.__awaiter(this, void 0, void 0, function* () {\n var _a;\n let currentRawResponse = undefined;\n const providedCallback = (_a = args.options) === null || _a === void 0 ? void 0 : _a.onResponse;\n const callback = (rawResponse, flatResponse) => {\n currentRawResponse = rawResponse;\n providedCallback === null || providedCallback === void 0 ? void 0 : providedCallback(rawResponse, flatResponse);\n };\n const updatedArgs = Object.assign(Object.assign({}, args), { options: Object.assign(Object.assign({}, args.options), { onResponse: callback }) });\n const flatResponse = yield directSendOperation(updatedArgs, spec);\n return {\n flatResponse,\n rawResponse: {\n statusCode: currentRawResponse.status,\n body: currentRawResponse.parsedBody,\n headers: currentRawResponse.headers.toJSON(),\n },\n };\n });\n const lro = createLroSpec({\n sendOperationFn,\n args: { resourceGroupName, deploymentStackName, options },\n spec: deleteAtResourceGroupOperationSpec,\n });\n const poller = yield coreLro.createHttpPoller(lro, {\n restoreFrom: options === null || options === void 0 ? void 0 : options.resumeFrom,\n intervalInMs: options === null || options === void 0 ? void 0 : options.updateIntervalInMs,\n resourceLocationConfig: \"location\",\n });\n yield poller.poll();\n return poller;\n });\n }\n /**\n * Deletes a Deployment stack by name at Resource Group scope. When operation completes, status code\n * 200 returned without content.\n * @param resourceGroupName The name of the resource group. The name is case insensitive.\n * @param deploymentStackName Name of the deployment stack.\n * @param options The options parameters.\n */\n beginDeleteAtResourceGroupAndWait(resourceGroupName, deploymentStackName, options) {\n return tslib.__awaiter(this, void 0, void 0, function* () {\n const poller = yield this.beginDeleteAtResourceGroup(resourceGroupName, deploymentStackName, options);\n return poller.pollUntilDone();\n });\n }\n /**\n * Creates or updates a Deployment stack at Subscription scope.\n * @param deploymentStackName Name of the deployment stack.\n * @param deploymentStack Deployment stack supplied to the operation.\n * @param options The options parameters.\n */\n beginCreateOrUpdateAtSubscription(deploymentStackName, deploymentStack, options) {\n return tslib.__awaiter(this, void 0, void 0, function* () {\n const directSendOperation = (args, spec) => tslib.__awaiter(this, void 0, void 0, function* () {\n return this.client.sendOperationRequest(args, spec);\n });\n const sendOperationFn = (args, spec) => tslib.__awaiter(this, void 0, void 0, function* () {\n var _a;\n let currentRawResponse = undefined;\n const providedCallback = (_a = args.options) === null || _a === void 0 ? void 0 : _a.onResponse;\n const callback = (rawResponse, flatResponse) => {\n currentRawResponse = rawResponse;\n providedCallback === null || providedCallback === void 0 ? void 0 : providedCallback(rawResponse, flatResponse);\n };\n const updatedArgs = Object.assign(Object.assign({}, args), { options: Object.assign(Object.assign({}, args.options), { onResponse: callback }) });\n const flatResponse = yield directSendOperation(updatedArgs, spec);\n return {\n flatResponse,\n rawResponse: {\n statusCode: currentRawResponse.status,\n body: currentRawResponse.parsedBody,\n headers: currentRawResponse.headers.toJSON(),\n },\n };\n });\n const lro = createLroSpec({\n sendOperationFn,\n args: { deploymentStackName, deploymentStack, options },\n spec: createOrUpdateAtSubscriptionOperationSpec,\n });\n const poller = yield coreLro.createHttpPoller(lro, {\n restoreFrom: options === null || options === void 0 ? void 0 : options.resumeFrom,\n intervalInMs: options === null || options === void 0 ? void 0 : options.updateIntervalInMs,\n resourceLocationConfig: \"azure-async-operation\",\n });\n yield poller.poll();\n return poller;\n });\n }\n /**\n * Creates or updates a Deployment stack at Subscription scope.\n * @param deploymentStackName Name of the deployment stack.\n * @param deploymentStack Deployment stack supplied to the operation.\n * @param options The options parameters.\n */\n beginCreateOrUpdateAtSubscriptionAndWait(deploymentStackName, deploymentStack, options) {\n return tslib.__awaiter(this, void 0, void 0, function* () {\n const poller = yield this.beginCreateOrUpdateAtSubscription(deploymentStackName, deploymentStack, options);\n return poller.pollUntilDone();\n });\n }\n /**\n * Gets a Deployment stack with a given name at Subscription scope.\n * @param deploymentStackName Name of the deployment stack.\n * @param options The options parameters.\n */\n getAtSubscription(deploymentStackName, options) {\n return this.client.sendOperationRequest({ deploymentStackName, options }, getAtSubscriptionOperationSpec);\n }\n /**\n * Deletes a Deployment stack by name at Subscription scope. When operation completes, status code 200\n * returned without content.\n * @param deploymentStackName Name of the deployment stack.\n * @param options The options parameters.\n */\n beginDeleteAtSubscription(deploymentStackName, options) {\n return tslib.__awaiter(this, void 0, void 0, function* () {\n const directSendOperation = (args, spec) => tslib.__awaiter(this, void 0, void 0, function* () {\n return this.client.sendOperationRequest(args, spec);\n });\n const sendOperationFn = (args, spec) => tslib.__awaiter(this, void 0, void 0, function* () {\n var _a;\n let currentRawResponse = undefined;\n const providedCallback = (_a = args.options) === null || _a === void 0 ? void 0 : _a.onResponse;\n const callback = (rawResponse, flatResponse) => {\n currentRawResponse = rawResponse;\n providedCallback === null || providedCallback === void 0 ? void 0 : providedCallback(rawResponse, flatResponse);\n };\n const updatedArgs = Object.assign(Object.assign({}, args), { options: Object.assign(Object.assign({}, args.options), { onResponse: callback }) });\n const flatResponse = yield directSendOperation(updatedArgs, spec);\n return {\n flatResponse,\n rawResponse: {\n statusCode: currentRawResponse.status,\n body: currentRawResponse.parsedBody,\n headers: currentRawResponse.headers.toJSON(),\n },\n };\n });\n const lro = createLroSpec({\n sendOperationFn,\n args: { deploymentStackName, options },\n spec: deleteAtSubscriptionOperationSpec,\n });\n const poller = yield coreLro.createHttpPoller(lro, {\n restoreFrom: options === null || options === void 0 ? void 0 : options.resumeFrom,\n intervalInMs: options === null || options === void 0 ? void 0 : options.updateIntervalInMs,\n resourceLocationConfig: \"location\",\n });\n yield poller.poll();\n return poller;\n });\n }\n /**\n * Deletes a Deployment stack by name at Subscription scope. When operation completes, status code 200\n * returned without content.\n * @param deploymentStackName Name of the deployment stack.\n * @param options The options parameters.\n */\n beginDeleteAtSubscriptionAndWait(deploymentStackName, options) {\n return tslib.__awaiter(this, void 0, void 0, function* () {\n const poller = yield this.beginDeleteAtSubscription(deploymentStackName, options);\n return poller.pollUntilDone();\n });\n }\n /**\n * Creates or updates a Deployment stack at Management Group scope.\n * @param managementGroupId Management Group id.\n * @param deploymentStackName Name of the deployment stack.\n * @param deploymentStack Deployment stack supplied to the operation.\n * @param options The options parameters.\n */\n beginCreateOrUpdateAtManagementGroup(managementGroupId, deploymentStackName, deploymentStack, options) {\n return tslib.__awaiter(this, void 0, void 0, function* () {\n const directSendOperation = (args, spec) => tslib.__awaiter(this, void 0, void 0, function* () {\n return this.client.sendOperationRequest(args, spec);\n });\n const sendOperationFn = (args, spec) => tslib.__awaiter(this, void 0, void 0, function* () {\n var _a;\n let currentRawResponse = undefined;\n const providedCallback = (_a = args.options) === null || _a === void 0 ? void 0 : _a.onResponse;\n const callback = (rawResponse, flatResponse) => {\n currentRawResponse = rawResponse;\n providedCallback === null || providedCallback === void 0 ? void 0 : providedCallback(rawResponse, flatResponse);\n };\n const updatedArgs = Object.assign(Object.assign({}, args), { options: Object.assign(Object.assign({}, args.options), { onResponse: callback }) });\n const flatResponse = yield directSendOperation(updatedArgs, spec);\n return {\n flatResponse,\n rawResponse: {\n statusCode: currentRawResponse.status,\n body: currentRawResponse.parsedBody,\n headers: currentRawResponse.headers.toJSON(),\n },\n };\n });\n const lro = createLroSpec({\n sendOperationFn,\n args: {\n managementGroupId,\n deploymentStackName,\n deploymentStack,\n options,\n },\n spec: createOrUpdateAtManagementGroupOperationSpec,\n });\n const poller = yield coreLro.createHttpPoller(lro, {\n restoreFrom: options === null || options === void 0 ? void 0 : options.resumeFrom,\n intervalInMs: options === null || options === void 0 ? void 0 : options.updateIntervalInMs,\n resourceLocationConfig: \"azure-async-operation\",\n });\n yield poller.poll();\n return poller;\n });\n }\n /**\n * Creates or updates a Deployment stack at Management Group scope.\n * @param managementGroupId Management Group id.\n * @param deploymentStackName Name of the deployment stack.\n * @param deploymentStack Deployment stack supplied to the operation.\n * @param options The options parameters.\n */\n beginCreateOrUpdateAtManagementGroupAndWait(managementGroupId, deploymentStackName, deploymentStack, options) {\n return tslib.__awaiter(this, void 0, void 0, function* () {\n const poller = yield this.beginCreateOrUpdateAtManagementGroup(managementGroupId, deploymentStackName, deploymentStack, options);\n return poller.pollUntilDone();\n });\n }\n /**\n * Gets a Deployment stack with a given name at Management Group scope.\n * @param managementGroupId Management Group id.\n * @param deploymentStackName Name of the deployment stack.\n * @param options The options parameters.\n */\n getAtManagementGroup(managementGroupId, deploymentStackName, options) {\n return this.client.sendOperationRequest({ managementGroupId, deploymentStackName, options }, getAtManagementGroupOperationSpec);\n }\n /**\n * Deletes a Deployment stack by name at Management Group scope. When operation completes, status code\n * 200 returned without content.\n * @param managementGroupId Management Group id.\n * @param deploymentStackName Name of the deployment stack.\n * @param options The options parameters.\n */\n beginDeleteAtManagementGroup(managementGroupId, deploymentStackName, options) {\n return tslib.__awaiter(this, void 0, void 0, function* () {\n const directSendOperation = (args, spec) => tslib.__awaiter(this, void 0, void 0, function* () {\n return this.client.sendOperationRequest(args, spec);\n });\n const sendOperationFn = (args, spec) => tslib.__awaiter(this, void 0, void 0, function* () {\n var _a;\n let currentRawResponse = undefined;\n const providedCallback = (_a = args.options) === null || _a === void 0 ? void 0 : _a.onResponse;\n const callback = (rawResponse, flatResponse) => {\n currentRawResponse = rawResponse;\n providedCallback === null || providedCallback === void 0 ? void 0 : providedCallback(rawResponse, flatResponse);\n };\n const updatedArgs = Object.assign(Object.assign({}, args), { options: Object.assign(Object.assign({}, args.options), { onResponse: callback }) });\n const flatResponse = yield directSendOperation(updatedArgs, spec);\n return {\n flatResponse,\n rawResponse: {\n statusCode: currentRawResponse.status,\n body: currentRawResponse.parsedBody,\n headers: currentRawResponse.headers.toJSON(),\n },\n };\n });\n const lro = createLroSpec({\n sendOperationFn,\n args: { managementGroupId, deploymentStackName, options },\n spec: deleteAtManagementGroupOperationSpec,\n });\n const poller = yield coreLro.createHttpPoller(lro, {\n restoreFrom: options === null || options === void 0 ? void 0 : options.resumeFrom,\n intervalInMs: options === null || options === void 0 ? void 0 : options.updateIntervalInMs,\n resourceLocationConfig: \"location\",\n });\n yield poller.poll();\n return poller;\n });\n }\n /**\n * Deletes a Deployment stack by name at Management Group scope. When operation completes, status code\n * 200 returned without content.\n * @param managementGroupId Management Group id.\n * @param deploymentStackName Name of the deployment stack.\n * @param options The options parameters.\n */\n beginDeleteAtManagementGroupAndWait(managementGroupId, deploymentStackName, options) {\n return tslib.__awaiter(this, void 0, void 0, function* () {\n const poller = yield this.beginDeleteAtManagementGroup(managementGroupId, deploymentStackName, options);\n return poller.pollUntilDone();\n });\n }\n /**\n * Exports the template used to create the Deployment stack at Resource Group scope.\n * @param resourceGroupName The name of the resource group. The name is case insensitive.\n * @param deploymentStackName Name of the deployment stack.\n * @param options The options parameters.\n */\n exportTemplateAtResourceGroup(resourceGroupName, deploymentStackName, options) {\n return this.client.sendOperationRequest({ resourceGroupName, deploymentStackName, options }, exportTemplateAtResourceGroupOperationSpec);\n }\n /**\n * Exports the template used to create the Deployment stack at Subscription scope.\n * @param deploymentStackName Name of the deployment stack.\n * @param options The options parameters.\n */\n exportTemplateAtSubscription(deploymentStackName, options) {\n return this.client.sendOperationRequest({ deploymentStackName, options }, exportTemplateAtSubscriptionOperationSpec);\n }\n /**\n * Exports the template used to create the Deployment stack at Management Group scope.\n * @param managementGroupId Management Group id.\n * @param deploymentStackName Name of the deployment stack.\n * @param options The options parameters.\n */\n exportTemplateAtManagementGroup(managementGroupId, deploymentStackName, options) {\n return this.client.sendOperationRequest({ managementGroupId, deploymentStackName, options }, exportTemplateAtManagementGroupOperationSpec);\n }\n /**\n * Runs preflight validation on the Resource Group scoped Deployment stack template to verify its\n * acceptance to Azure Resource Manager.\n * @param resourceGroupName The name of the resource group. The name is case insensitive.\n * @param deploymentStackName Name of the deployment stack.\n * @param deploymentStack Deployment stack to validate.\n * @param options The options parameters.\n */\n beginValidateStackAtResourceGroup(resourceGroupName, deploymentStackName, deploymentStack, options) {\n return tslib.__awaiter(this, void 0, void 0, function* () {\n const directSendOperation = (args, spec) => tslib.__awaiter(this, void 0, void 0, function* () {\n return this.client.sendOperationRequest(args, spec);\n });\n const sendOperationFn = (args, spec) => tslib.__awaiter(this, void 0, void 0, function* () {\n var _a;\n let currentRawResponse = undefined;\n const providedCallback = (_a = args.options) === null || _a === void 0 ? void 0 : _a.onResponse;\n const callback = (rawResponse, flatResponse) => {\n currentRawResponse = rawResponse;\n providedCallback === null || providedCallback === void 0 ? void 0 : providedCallback(rawResponse, flatResponse);\n };\n const updatedArgs = Object.assign(Object.assign({}, args), { options: Object.assign(Object.assign({}, args.options), { onResponse: callback }) });\n const flatResponse = yield directSendOperation(updatedArgs, spec);\n return {\n flatResponse,\n rawResponse: {\n statusCode: currentRawResponse.status,\n body: currentRawResponse.parsedBody,\n headers: currentRawResponse.headers.toJSON(),\n },\n };\n });\n const lro = createLroSpec({\n sendOperationFn,\n args: {\n resourceGroupName,\n deploymentStackName,\n deploymentStack,\n options,\n },\n spec: validateStackAtResourceGroupOperationSpec,\n });\n const poller = yield coreLro.createHttpPoller(lro, {\n restoreFrom: options === null || options === void 0 ? void 0 : options.resumeFrom,\n intervalInMs: options === null || options === void 0 ? void 0 : options.updateIntervalInMs,\n resourceLocationConfig: \"location\",\n });\n yield poller.poll();\n return poller;\n });\n }\n /**\n * Runs preflight validation on the Resource Group scoped Deployment stack template to verify its\n * acceptance to Azure Resource Manager.\n * @param resourceGroupName The name of the resource group. The name is case insensitive.\n * @param deploymentStackName Name of the deployment stack.\n * @param deploymentStack Deployment stack to validate.\n * @param options The options parameters.\n */\n beginValidateStackAtResourceGroupAndWait(resourceGroupName, deploymentStackName, deploymentStack, options) {\n return tslib.__awaiter(this, void 0, void 0, function* () {\n const poller = yield this.beginValidateStackAtResourceGroup(resourceGroupName, deploymentStackName, deploymentStack, options);\n return poller.pollUntilDone();\n });\n }\n /**\n * Runs preflight validation on the Subscription scoped Deployment stack template to verify its\n * acceptance to Azure Resource Manager.\n * @param deploymentStackName Name of the deployment stack.\n * @param deploymentStack Deployment stack to validate.\n * @param options The options parameters.\n */\n beginValidateStackAtSubscription(deploymentStackName, deploymentStack, options) {\n return tslib.__awaiter(this, void 0, void 0, function* () {\n const directSendOperation = (args, spec) => tslib.__awaiter(this, void 0, void 0, function* () {\n return this.client.sendOperationRequest(args, spec);\n });\n const sendOperationFn = (args, spec) => tslib.__awaiter(this, void 0, void 0, function* () {\n var _a;\n let currentRawResponse = undefined;\n const providedCallback = (_a = args.options) === null || _a === void 0 ? void 0 : _a.onResponse;\n const callback = (rawResponse, flatResponse) => {\n currentRawResponse = rawResponse;\n providedCallback === null || providedCallback === void 0 ? void 0 : providedCallback(rawResponse, flatResponse);\n };\n const updatedArgs = Object.assign(Object.assign({}, args), { options: Object.assign(Object.assign({}, args.options), { onResponse: callback }) });\n const flatResponse = yield directSendOperation(updatedArgs, spec);\n return {\n flatResponse,\n rawResponse: {\n statusCode: currentRawResponse.status,\n body: currentRawResponse.parsedBody,\n headers: currentRawResponse.headers.toJSON(),\n },\n };\n });\n const lro = createLroSpec({\n sendOperationFn,\n args: { deploymentStackName, deploymentStack, options },\n spec: validateStackAtSubscriptionOperationSpec,\n });\n const poller = yield coreLro.createHttpPoller(lro, {\n restoreFrom: options === null || options === void 0 ? void 0 : options.resumeFrom,\n intervalInMs: options === null || options === void 0 ? void 0 : options.updateIntervalInMs,\n resourceLocationConfig: \"location\",\n });\n yield poller.poll();\n return poller;\n });\n }\n /**\n * Runs preflight validation on the Subscription scoped Deployment stack template to verify its\n * acceptance to Azure Resource Manager.\n * @param deploymentStackName Name of the deployment stack.\n * @param deploymentStack Deployment stack to validate.\n * @param options The options parameters.\n */\n beginValidateStackAtSubscriptionAndWait(deploymentStackName, deploymentStack, options) {\n return tslib.__awaiter(this, void 0, void 0, function* () {\n const poller = yield this.beginValidateStackAtSubscription(deploymentStackName, deploymentStack, options);\n return poller.pollUntilDone();\n });\n }\n /**\n * Runs preflight validation on the Management Group scoped Deployment stack template to verify its\n * acceptance to Azure Resource Manager.\n * @param managementGroupId Management Group id.\n * @param deploymentStackName Name of the deployment stack.\n * @param deploymentStack Deployment stack to validate.\n * @param options The options parameters.\n */\n beginValidateStackAtManagementGroup(managementGroupId, deploymentStackName, deploymentStack, options) {\n return tslib.__awaiter(this, void 0, void 0, function* () {\n const directSendOperation = (args, spec) => tslib.__awaiter(this, void 0, void 0, function* () {\n return this.client.sendOperationRequest(args, spec);\n });\n const sendOperationFn = (args, spec) => tslib.__awaiter(this, void 0, void 0, function* () {\n var _a;\n let currentRawResponse = undefined;\n const providedCallback = (_a = args.options) === null || _a === void 0 ? void 0 : _a.onResponse;\n const callback = (rawResponse, flatResponse) => {\n currentRawResponse = rawResponse;\n providedCallback === null || providedCallback === void 0 ? void 0 : providedCallback(rawResponse, flatResponse);\n };\n const updatedArgs = Object.assign(Object.assign({}, args), { options: Object.assign(Object.assign({}, args.options), { onResponse: callback }) });\n const flatResponse = yield directSendOperation(updatedArgs, spec);\n return {\n flatResponse,\n rawResponse: {\n statusCode: currentRawResponse.status,\n body: currentRawResponse.parsedBody,\n headers: currentRawResponse.headers.toJSON(),\n },\n };\n });\n const lro = createLroSpec({\n sendOperationFn,\n args: {\n managementGroupId,\n deploymentStackName,\n deploymentStack,\n options,\n },\n spec: validateStackAtManagementGroupOperationSpec,\n });\n const poller = yield coreLro.createHttpPoller(lro, {\n restoreFrom: options === null || options === void 0 ? void 0 : options.resumeFrom,\n intervalInMs: options === null || options === void 0 ? void 0 : options.updateIntervalInMs,\n resourceLocationConfig: \"location\",\n });\n yield poller.poll();\n return poller;\n });\n }\n /**\n * Runs preflight validation on the Management Group scoped Deployment stack template to verify its\n * acceptance to Azure Resource Manager.\n * @param managementGroupId Management Group id.\n * @param deploymentStackName Name of the deployment stack.\n * @param deploymentStack Deployment stack to validate.\n * @param options The options parameters.\n */\n beginValidateStackAtManagementGroupAndWait(managementGroupId, deploymentStackName, deploymentStack, options) {\n return tslib.__awaiter(this, void 0, void 0, function* () {\n const poller = yield this.beginValidateStackAtManagementGroup(managementGroupId, deploymentStackName, deploymentStack, options);\n return poller.pollUntilDone();\n });\n }\n /**\n * ListAtResourceGroupNext\n * @param resourceGroupName The name of the resource group. The name is case insensitive.\n * @param nextLink The nextLink from the previous successful call to the ListAtResourceGroup method.\n * @param options The options parameters.\n */\n _listAtResourceGroupNext(resourceGroupName, nextLink, options) {\n return this.client.sendOperationRequest({ resourceGroupName, nextLink, options }, listAtResourceGroupNextOperationSpec);\n }\n /**\n * ListAtSubscriptionNext\n * @param nextLink The nextLink from the previous successful call to the ListAtSubscription method.\n * @param options The options parameters.\n */\n _listAtSubscriptionNext(nextLink, options) {\n return this.client.sendOperationRequest({ nextLink, options }, listAtSubscriptionNextOperationSpec);\n }\n /**\n * ListAtManagementGroupNext\n * @param managementGroupId Management Group id.\n * @param nextLink The nextLink from the previous successful call to the ListAtManagementGroup method.\n * @param options The options parameters.\n */\n _listAtManagementGroupNext(managementGroupId, nextLink, options) {\n return this.client.sendOperationRequest({ managementGroupId, nextLink, options }, listAtManagementGroupNextOperationSpec);\n }\n}\n// Operation Specifications\nconst serializer = coreClient__namespace.createSerializer(Mappers, /* isXml */ false);\nconst listAtResourceGroupOperationSpec = {\n path: \"/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Resources/deploymentStacks\",\n httpMethod: \"GET\",\n responses: {\n 200: {\n bodyMapper: DeploymentStackListResult,\n },\n default: {\n bodyMapper: DeploymentStacksError,\n },\n },\n queryParameters: [apiVersion],\n urlParameters: [\n $host,\n subscriptionId,\n resourceGroupName,\n ],\n headerParameters: [accept],\n serializer,\n};\nconst listAtSubscriptionOperationSpec = {\n path: \"/subscriptions/{subscriptionId}/providers/Microsoft.Resources/deploymentStacks\",\n httpMethod: \"GET\",\n responses: {\n 200: {\n bodyMapper: DeploymentStackListResult,\n },\n default: {\n bodyMapper: DeploymentStacksError,\n },\n },\n queryParameters: [apiVersion],\n urlParameters: [$host, subscriptionId],\n headerParameters: [accept],\n serializer,\n};\nconst listAtManagementGroupOperationSpec = {\n path: \"/providers/Microsoft.Management/managementGroups/{managementGroupId}/providers/Microsoft.Resources/deploymentStacks\",\n httpMethod: \"GET\",\n responses: {\n 200: {\n bodyMapper: DeploymentStackListResult,\n },\n default: {\n bodyMapper: DeploymentStacksError,\n },\n },\n queryParameters: [apiVersion],\n urlParameters: [$host, managementGroupId],\n headerParameters: [accept],\n serializer,\n};\nconst createOrUpdateAtResourceGroupOperationSpec = {\n path: \"/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Resources/deploymentStacks/{deploymentStackName}\",\n httpMethod: \"PUT\",\n responses: {\n 200: {\n bodyMapper: DeploymentStack,\n },\n 201: {\n bodyMapper: DeploymentStack,\n },\n 202: {\n bodyMapper: DeploymentStack,\n },\n 204: {\n bodyMapper: DeploymentStack,\n },\n default: {\n bodyMapper: DeploymentStacksError,\n },\n },\n requestBody: deploymentStack,\n queryParameters: [apiVersion],\n urlParameters: [\n $host,\n subscriptionId,\n resourceGroupName,\n deploymentStackName,\n ],\n headerParameters: [accept, contentType],\n mediaType: \"json\",\n serializer,\n};\nconst getAtResourceGroupOperationSpec = {\n path: \"/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Resources/deploymentStacks/{deploymentStackName}\",\n httpMethod: \"GET\",\n responses: {\n 200: {\n bodyMapper: DeploymentStack,\n },\n default: {\n bodyMapper: DeploymentStacksError,\n },\n },\n queryParameters: [apiVersion],\n urlParameters: [\n $host,\n subscriptionId,\n resourceGroupName,\n deploymentStackName,\n ],\n headerParameters: [accept],\n serializer,\n};\nconst deleteAtResourceGroupOperationSpec = {\n path: \"/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Resources/deploymentStacks/{deploymentStackName}\",\n httpMethod: \"DELETE\",\n responses: {\n 200: {},\n 201: {},\n 202: {},\n 204: {},\n default: {\n bodyMapper: DeploymentStacksError,\n },\n },\n queryParameters: [\n apiVersion,\n unmanageActionResources,\n unmanageActionResourceGroups,\n unmanageActionManagementGroups,\n bypassStackOutOfSyncError,\n ],\n urlParameters: [\n $host,\n subscriptionId,\n resourceGroupName,\n deploymentStackName,\n ],\n headerParameters: [accept],\n serializer,\n};\nconst createOrUpdateAtSubscriptionOperationSpec = {\n path: \"/subscriptions/{subscriptionId}/providers/Microsoft.Resources/deploymentStacks/{deploymentStackName}\",\n httpMethod: \"PUT\",\n responses: {\n 200: {\n bodyMapper: DeploymentStack,\n },\n 201: {\n bodyMapper: DeploymentStack,\n },\n 202: {\n bodyMapper: DeploymentStack,\n },\n 204: {\n bodyMapper: DeploymentStack,\n },\n default: {\n bodyMapper: DeploymentStacksError,\n },\n },\n requestBody: deploymentStack,\n queryParameters: [apiVersion],\n urlParameters: [\n $host,\n subscriptionId,\n deploymentStackName,\n ],\n headerParameters: [accept, contentType],\n mediaType: \"json\",\n serializer,\n};\nconst getAtSubscriptionOperationSpec = {\n path: \"/subscriptions/{subscriptionId}/providers/Microsoft.Resources/deploymentStacks/{deploymentStackName}\",\n httpMethod: \"GET\",\n responses: {\n 200: {\n bodyMapper: DeploymentStack,\n },\n default: {\n bodyMapper: DeploymentStacksError,\n },\n },\n queryParameters: [apiVersion],\n urlParameters: [\n $host,\n subscriptionId,\n deploymentStackName,\n ],\n headerParameters: [accept],\n serializer,\n};\nconst deleteAtSubscriptionOperationSpec = {\n path: \"/subscriptions/{subscriptionId}/providers/Microsoft.Resources/deploymentStacks/{deploymentStackName}\",\n httpMethod: \"DELETE\",\n responses: {\n 200: {},\n 201: {},\n 202: {},\n 204: {},\n default: {\n bodyMapper: DeploymentStacksError,\n },\n },\n queryParameters: [\n apiVersion,\n unmanageActionResources,\n unmanageActionResourceGroups,\n unmanageActionManagementGroups,\n bypassStackOutOfSyncError,\n ],\n urlParameters: [\n $host,\n subscriptionId,\n deploymentStackName,\n ],\n headerParameters: [accept],\n serializer,\n};\nconst createOrUpdateAtManagementGroupOperationSpec = {\n path: \"/providers/Microsoft.Management/managementGroups/{managementGroupId}/providers/Microsoft.Resources/deploymentStacks/{deploymentStackName}\",\n httpMethod: \"PUT\",\n responses: {\n 200: {\n bodyMapper: DeploymentStack,\n },\n 201: {\n bodyMapper: DeploymentStack,\n },\n 202: {\n bodyMapper: DeploymentStack,\n },\n 204: {\n bodyMapper: DeploymentStack,\n },\n default: {\n bodyMapper: DeploymentStacksError,\n },\n },\n requestBody: deploymentStack,\n queryParameters: [apiVersion],\n urlParameters: [\n $host,\n managementGroupId,\n deploymentStackName,\n ],\n headerParameters: [accept, contentType],\n mediaType: \"json\",\n serializer,\n};\nconst getAtManagementGroupOperationSpec = {\n path: \"/providers/Microsoft.Management/managementGroups/{managementGroupId}/providers/Microsoft.Resources/deploymentStacks/{deploymentStackName}\",\n httpMethod: \"GET\",\n responses: {\n 200: {\n bodyMapper: DeploymentStack,\n },\n default: {\n bodyMapper: DeploymentStacksError,\n },\n },\n queryParameters: [apiVersion],\n urlParameters: [\n $host,\n managementGroupId,\n deploymentStackName,\n ],\n headerParameters: [accept],\n serializer,\n};\nconst deleteAtManagementGroupOperationSpec = {\n path: \"/providers/Microsoft.Management/managementGroups/{managementGroupId}/providers/Microsoft.Resources/deploymentStacks/{deploymentStackName}\",\n httpMethod: \"DELETE\",\n responses: {\n 200: {},\n 201: {},\n 202: {},\n 204: {},\n default: {\n bodyMapper: DeploymentStacksError,\n },\n },\n queryParameters: [\n apiVersion,\n unmanageActionResources,\n unmanageActionResourceGroups,\n unmanageActionManagementGroups,\n bypassStackOutOfSyncError,\n ],\n urlParameters: [\n $host,\n managementGroupId,\n deploymentStackName,\n ],\n headerParameters: [accept],\n serializer,\n};\nconst exportTemplateAtResourceGroupOperationSpec = {\n path: \"/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Resources/deploymentStacks/{deploymentStackName}/exportTemplate\",\n httpMethod: \"POST\",\n responses: {\n 200: {\n bodyMapper: DeploymentStackTemplateDefinition,\n },\n default: {\n bodyMapper: DeploymentStacksError,\n },\n },\n queryParameters: [apiVersion],\n urlParameters: [\n $host,\n subscriptionId,\n resourceGroupName,\n deploymentStackName,\n ],\n headerParameters: [accept],\n serializer,\n};\nconst exportTemplateAtSubscriptionOperationSpec = {\n path: \"/subscriptions/{subscriptionId}/providers/Microsoft.Resources/deploymentStacks/{deploymentStackName}/exportTemplate\",\n httpMethod: \"POST\",\n responses: {\n 200: {\n bodyMapper: DeploymentStackTemplateDefinition,\n },\n default: {\n bodyMapper: DeploymentStacksError,\n },\n },\n queryParameters: [apiVersion],\n urlParameters: [\n $host,\n subscriptionId,\n deploymentStackName,\n ],\n headerParameters: [accept],\n serializer,\n};\nconst exportTemplateAtManagementGroupOperationSpec = {\n path: \"/providers/Microsoft.Management/managementGroups/{managementGroupId}/providers/Microsoft.Resources/deploymentStacks/{deploymentStackName}/exportTemplate\",\n httpMethod: \"POST\",\n responses: {\n 200: {\n bodyMapper: DeploymentStackTemplateDefinition,\n },\n default: {\n bodyMapper: DeploymentStacksError,\n },\n },\n queryParameters: [apiVersion],\n urlParameters: [\n $host,\n managementGroupId,\n deploymentStackName,\n ],\n headerParameters: [accept],\n serializer,\n};\nconst validateStackAtResourceGroupOperationSpec = {\n path: \"/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Resources/deploymentStacks/{deploymentStackName}/validate\",\n httpMethod: \"POST\",\n responses: {\n 200: {\n bodyMapper: DeploymentStackValidateResult,\n },\n 201: {\n bodyMapper: DeploymentStackValidateResult,\n },\n 202: {\n bodyMapper: DeploymentStackValidateResult,\n },\n 204: {\n bodyMapper: DeploymentStackValidateResult,\n },\n default: {\n bodyMapper: DeploymentStacksError,\n },\n },\n requestBody: deploymentStack,\n queryParameters: [apiVersion],\n urlParameters: [\n $host,\n subscriptionId,\n resourceGroupName,\n deploymentStackName,\n ],\n headerParameters: [accept, contentType],\n mediaType: \"json\",\n serializer,\n};\nconst validateStackAtSubscriptionOperationSpec = {\n path: \"/subscriptions/{subscriptionId}/providers/Microsoft.Resources/deploymentStacks/{deploymentStackName}/validate\",\n httpMethod: \"POST\",\n responses: {\n 200: {\n bodyMapper: DeploymentStackValidateResult,\n },\n 201: {\n bodyMapper: DeploymentStackValidateResult,\n },\n 202: {\n bodyMapper: DeploymentStackValidateResult,\n },\n 204: {\n bodyMapper: DeploymentStackValidateResult,\n },\n default: {\n bodyMapper: DeploymentStacksError,\n },\n },\n requestBody: deploymentStack,\n queryParameters: [apiVersion],\n urlParameters: [\n $host,\n subscriptionId,\n deploymentStackName,\n ],\n headerParameters: [accept, contentType],\n mediaType: \"json\",\n serializer,\n};\nconst validateStackAtManagementGroupOperationSpec = {\n path: \"/providers/Microsoft.Management/managementGroups/{managementGroupId}/providers/Microsoft.Resources/deploymentStacks/{deploymentStackName}/validate\",\n httpMethod: \"POST\",\n responses: {\n 200: {\n bodyMapper: DeploymentStackValidateResult,\n },\n 201: {\n bodyMapper: DeploymentStackValidateResult,\n },\n 202: {\n bodyMapper: DeploymentStackValidateResult,\n },\n 204: {\n bodyMapper: DeploymentStackValidateResult,\n },\n default: {\n bodyMapper: DeploymentStacksError,\n },\n },\n requestBody: deploymentStack,\n queryParameters: [apiVersion],\n urlParameters: [\n $host,\n managementGroupId,\n deploymentStackName,\n ],\n headerParameters: [accept, contentType],\n mediaType: \"json\",\n serializer,\n};\nconst listAtResourceGroupNextOperationSpec = {\n path: \"{nextLink}\",\n httpMethod: \"GET\",\n responses: {\n 200: {\n bodyMapper: DeploymentStackListResult,\n },\n default: {\n bodyMapper: DeploymentStacksError,\n },\n },\n urlParameters: [\n $host,\n subscriptionId,\n resourceGroupName,\n nextLink,\n ],\n headerParameters: [accept],\n serializer,\n};\nconst listAtSubscriptionNextOperationSpec = {\n path: \"{nextLink}\",\n httpMethod: \"GET\",\n responses: {\n 200: {\n bodyMapper: DeploymentStackListResult,\n },\n default: {\n bodyMapper: DeploymentStacksError,\n },\n },\n urlParameters: [\n $host,\n subscriptionId,\n nextLink,\n ],\n headerParameters: [accept],\n serializer,\n};\nconst listAtManagementGroupNextOperationSpec = {\n path: \"{nextLink}\",\n httpMethod: \"GET\",\n responses: {\n 200: {\n bodyMapper: DeploymentStackListResult,\n },\n default: {\n bodyMapper: DeploymentStacksError,\n },\n },\n urlParameters: [\n $host,\n managementGroupId,\n nextLink,\n ],\n headerParameters: [accept],\n serializer,\n};\n\n/*\n * Copyright (c) Microsoft Corporation.\n * Licensed under the MIT License.\n *\n * Code generated by Microsoft (R) AutoRest Code Generator.\n * Changes may cause incorrect behavior and will be lost if the code is regenerated.\n */\nclass DeploymentStacksClient extends coreClient__namespace.ServiceClient {\n constructor(credentials, subscriptionIdOrOptions, options) {\n var _a, _b, _c;\n if (credentials === undefined) {\n throw new Error(\"'credentials' cannot be null\");\n }\n let subscriptionId;\n if (typeof subscriptionIdOrOptions === \"string\") {\n subscriptionId = subscriptionIdOrOptions;\n }\n else if (typeof subscriptionIdOrOptions === \"object\") {\n options = subscriptionIdOrOptions;\n }\n // Initializing default values for options\n if (!options) {\n options = {};\n }\n const defaults = {\n requestContentType: \"application/json; charset=utf-8\",\n credential: credentials,\n };\n const packageDetails = `azsdk-js-arm-resourcesdeploymentstacks/1.0.0`;\n const userAgentPrefix = options.userAgentOptions && options.userAgentOptions.userAgentPrefix\n ? `${options.userAgentOptions.userAgentPrefix} ${packageDetails}`\n : `${packageDetails}`;\n const optionsWithDefaults = Object.assign(Object.assign(Object.assign({}, defaults), options), { userAgentOptions: {\n userAgentPrefix,\n }, endpoint: (_b = (_a = options.endpoint) !== null && _a !== void 0 ? _a : options.baseUri) !== null && _b !== void 0 ? _b : \"https://management.azure.com\" });\n super(optionsWithDefaults);\n let bearerTokenAuthenticationPolicyFound = false;\n if ((options === null || options === void 0 ? void 0 : options.pipeline) && options.pipeline.getOrderedPolicies().length > 0) {\n const pipelinePolicies = options.pipeline.getOrderedPolicies();\n bearerTokenAuthenticationPolicyFound = pipelinePolicies.some((pipelinePolicy) => pipelinePolicy.name ===\n coreRestPipeline__namespace.bearerTokenAuthenticationPolicyName);\n }\n if (!options ||\n !options.pipeline ||\n options.pipeline.getOrderedPolicies().length == 0 ||\n !bearerTokenAuthenticationPolicyFound) {\n this.pipeline.removePolicy({\n name: coreRestPipeline__namespace.bearerTokenAuthenticationPolicyName,\n });\n this.pipeline.addPolicy(coreRestPipeline__namespace.bearerTokenAuthenticationPolicy({\n credential: credentials,\n scopes: (_c = optionsWithDefaults.credentialScopes) !== null && _c !== void 0 ? _c : `${optionsWithDefaults.endpoint}/.default`,\n challengeCallbacks: {\n authorizeRequestOnChallenge: coreClient__namespace.authorizeRequestOnClaimChallenge,\n },\n }));\n }\n // Parameter assignments\n this.subscriptionId = subscriptionId;\n // Assigning values to Constant parameters\n this.$host = options.$host || \"https://management.azure.com\";\n this.apiVersion = options.apiVersion || \"2024-03-01\";\n this.deploymentStacks = new DeploymentStacksImpl(this);\n this.addCustomApiVersionPolicy(options.apiVersion);\n }\n /** A function that adds a policy that sets the api-version (or equivalent) to reflect the library version. */\n addCustomApiVersionPolicy(apiVersion) {\n if (!apiVersion) {\n return;\n }\n const apiVersionPolicy = {\n name: \"CustomApiVersionPolicy\",\n sendRequest(request, next) {\n return tslib.__awaiter(this, void 0, void 0, function* () {\n const param = request.url.split(\"?\");\n if (param.length > 1) {\n const newParams = param[1].split(\"&\").map((item) => {\n if (item.indexOf(\"api-version\") > -1) {\n return \"api-version=\" + apiVersion;\n }\n else {\n return item;\n }\n });\n request.url = param[0] + \"?\" + newParams.join(\"&\");\n }\n return next(request);\n });\n },\n };\n this.pipeline.addPolicy(apiVersionPolicy);\n }\n}\n\nexports.DeploymentStacksClient = DeploymentStacksClient;\nexports.getContinuationToken = getContinuationToken;\n//# sourceMappingURL=index.js.map\n","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.DEFAULT_TOKEN_CACHE_NAME = exports.CACHE_NON_CAE_SUFFIX = exports.CACHE_CAE_SUFFIX = exports.ALL_TENANTS = exports.DefaultAuthority = exports.DefaultAuthorityHost = exports.AzureAuthorityHosts = exports.DefaultTenantId = exports.DeveloperSignOnClientId = exports.SDK_VERSION = void 0;\n/**\n * Current version of the `@azure/identity` package.\n */\nexports.SDK_VERSION = `4.13.0`;\n/**\n * The default client ID for authentication\n * @internal\n */\n// TODO: temporary - this is the Azure CLI clientID - we'll replace it when\n// Developer Sign On application is available\n// https://github.com/Azure/azure-sdk-for-net/blob/main/sdk/identity/Azure.Identity/src/Constants.cs#L9\nexports.DeveloperSignOnClientId = \"04b07795-8ddb-461a-bbee-02f9e1bf7b46\";\n/**\n * The default tenant for authentication\n * @internal\n */\nexports.DefaultTenantId = \"common\";\n/**\n * A list of known Azure authority hosts\n */\nvar AzureAuthorityHosts;\n(function (AzureAuthorityHosts) {\n /**\n * China-based Azure Authority Host\n */\n AzureAuthorityHosts[\"AzureChina\"] = \"https://login.chinacloudapi.cn\";\n /**\n * Germany-based Azure Authority Host\n *\n * @deprecated Microsoft Cloud Germany was closed on October 29th, 2021.\n *\n * */\n AzureAuthorityHosts[\"AzureGermany\"] = \"https://login.microsoftonline.de\";\n /**\n * US Government Azure Authority Host\n */\n AzureAuthorityHosts[\"AzureGovernment\"] = \"https://login.microsoftonline.us\";\n /**\n * Public Cloud Azure Authority Host\n */\n AzureAuthorityHosts[\"AzurePublicCloud\"] = \"https://login.microsoftonline.com\";\n})(AzureAuthorityHosts || (exports.AzureAuthorityHosts = AzureAuthorityHosts = {}));\n/**\n * @internal\n * The default authority host.\n */\nexports.DefaultAuthorityHost = AzureAuthorityHosts.AzurePublicCloud;\n/**\n * @internal\n * The default environment host for Azure Public Cloud\n */\nexports.DefaultAuthority = \"login.microsoftonline.com\";\n/**\n * @internal\n * Allow acquiring tokens for any tenant for multi-tentant auth.\n */\nexports.ALL_TENANTS = [\"*\"];\n/**\n * @internal\n */\nexports.CACHE_CAE_SUFFIX = \"cae\";\n/**\n * @internal\n */\nexports.CACHE_NON_CAE_SUFFIX = \"nocae\";\n/**\n * @internal\n *\n * The default name for the cache persistence plugin.\n * Matches the constant defined in the cache persistence package.\n */\nexports.DEFAULT_TOKEN_CACHE_NAME = \"msal.cache\";\n//# sourceMappingURL=constants.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.msalPlugins = exports.msalNodeFlowVSCodeCredentialControl = exports.msalNodeFlowNativeBrokerControl = exports.vsCodeBrokerInfo = exports.vsCodeAuthRecordPath = exports.nativeBrokerInfo = exports.msalNodeFlowCacheControl = exports.persistenceProvider = void 0;\nexports.hasNativeBroker = hasNativeBroker;\nexports.hasVSCodePlugin = hasVSCodePlugin;\nconst constants_js_1 = require(\"../../constants.js\");\n/**\n * The current persistence provider, undefined by default.\n * @internal\n */\nexports.persistenceProvider = undefined;\n/**\n * An object that allows setting the persistence provider.\n * @internal\n */\nexports.msalNodeFlowCacheControl = {\n setPersistence(pluginProvider) {\n exports.persistenceProvider = pluginProvider;\n },\n};\n/**\n * The current native broker provider, undefined by default.\n * @internal\n */\nexports.nativeBrokerInfo = undefined;\n/**\n * The current VSCode auth record path, undefined by default.\n * @internal\n */\nexports.vsCodeAuthRecordPath = undefined;\n/**\n * The current VSCode broker, undefined by default.\n * @internal\n */\nexports.vsCodeBrokerInfo = undefined;\nfunction hasNativeBroker() {\n return exports.nativeBrokerInfo !== undefined;\n}\nfunction hasVSCodePlugin() {\n return exports.vsCodeAuthRecordPath !== undefined && exports.vsCodeBrokerInfo !== undefined;\n}\n/**\n * An object that allows setting the native broker provider.\n * @internal\n */\nexports.msalNodeFlowNativeBrokerControl = {\n setNativeBroker(broker) {\n exports.nativeBrokerInfo = {\n broker,\n };\n },\n};\n/**\n * An object that allows setting the VSCode credential auth record path and broker.\n * @internal\n */\nexports.msalNodeFlowVSCodeCredentialControl = {\n setVSCodeAuthRecordPath(path) {\n exports.vsCodeAuthRecordPath = path;\n },\n setVSCodeBroker(broker) {\n exports.vsCodeBrokerInfo = {\n broker,\n };\n },\n};\n/**\n * Configures plugins, validating that required plugins are available and enabled.\n *\n * Does not create the plugins themselves, but rather returns the configuration that will be used to create them.\n *\n * @param options - options for creating the MSAL client\n * @returns plugin configuration\n */\nfunction generatePluginConfiguration(options) {\n const config = {\n cache: {},\n broker: {\n ...options.brokerOptions,\n isEnabled: options.brokerOptions?.enabled ?? false,\n enableMsaPassthrough: options.brokerOptions?.legacyEnableMsaPassthrough ?? false,\n },\n };\n if (options.tokenCachePersistenceOptions?.enabled) {\n if (exports.persistenceProvider === undefined) {\n throw new Error([\n \"Persistent token caching was requested, but no persistence provider was configured.\",\n \"You must install the identity-cache-persistence plugin package (`npm install --save @azure/identity-cache-persistence`)\",\n \"and enable it by importing `useIdentityPlugin` from `@azure/identity` and calling\",\n \"`useIdentityPlugin(cachePersistencePlugin)` before using `tokenCachePersistenceOptions`.\",\n ].join(\" \"));\n }\n const cacheBaseName = options.tokenCachePersistenceOptions.name || constants_js_1.DEFAULT_TOKEN_CACHE_NAME;\n config.cache.cachePlugin = (0, exports.persistenceProvider)({\n name: `${cacheBaseName}.${constants_js_1.CACHE_NON_CAE_SUFFIX}`,\n ...options.tokenCachePersistenceOptions,\n });\n config.cache.cachePluginCae = (0, exports.persistenceProvider)({\n name: `${cacheBaseName}.${constants_js_1.CACHE_CAE_SUFFIX}`,\n ...options.tokenCachePersistenceOptions,\n });\n }\n if (options.brokerOptions?.enabled) {\n config.broker.nativeBrokerPlugin = getBrokerPlugin(options.isVSCodeCredential || false);\n }\n return config;\n}\n// Broker error message templates with variables for credential and package names\nconst brokerErrorTemplates = {\n missing: (credentialName, packageName, pluginVar) => [\n `${credentialName} was requested, but no plugin was configured or no authentication record was found.`,\n `You must install the ${packageName} plugin package (npm install --save ${packageName})`,\n \"and enable it by importing `useIdentityPlugin` from `@azure/identity` and calling\",\n `useIdentityPlugin(${pluginVar}) before using enableBroker.`,\n ].join(\" \"),\n unavailable: (credentialName, packageName) => [\n `${credentialName} was requested, and the plugin is configured, but the broker is unavailable.`,\n `Ensure the ${credentialName} plugin is properly installed and configured.`,\n \"Check for missing native dependencies and ensure the package is properly installed.\",\n `See the README for prerequisites on installing and using ${packageName}.`,\n ].join(\" \"),\n};\n// Values for VSCode and native broker configurations for error message\nconst brokerConfig = {\n vsCode: {\n credentialName: \"Visual Studio Code Credential\",\n packageName: \"@azure/identity-vscode\",\n pluginVar: \"vsCodePlugin\",\n get brokerInfo() {\n return exports.vsCodeBrokerInfo;\n },\n },\n native: {\n credentialName: \"Broker for WAM\",\n packageName: \"@azure/identity-broker\",\n pluginVar: \"nativeBrokerPlugin\",\n get brokerInfo() {\n return exports.nativeBrokerInfo;\n },\n },\n};\n/**\n * Set appropriate broker plugin based on whether VSCode or native broker is requested.\n * @param isVSCodePlugin - true for VSCode broker, false for native broker\n * @returns the broker plugin if available\n */\nfunction getBrokerPlugin(isVSCodePlugin) {\n const { credentialName, packageName, pluginVar, brokerInfo } = brokerConfig[isVSCodePlugin ? \"vsCode\" : \"native\"];\n if (brokerInfo === undefined) {\n throw new Error(brokerErrorTemplates.missing(credentialName, packageName, pluginVar));\n }\n if (brokerInfo.broker.isBrokerAvailable === false) {\n throw new Error(brokerErrorTemplates.unavailable(credentialName, packageName));\n }\n return brokerInfo.broker;\n}\n/**\n * Wraps generatePluginConfiguration as a writeable property for test stubbing purposes.\n */\nexports.msalPlugins = {\n generatePluginConfiguration,\n};\n//# sourceMappingURL=msalPlugins.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.useIdentityPlugin = useIdentityPlugin;\nconst msalPlugins_js_1 = require(\"../msal/nodeFlows/msalPlugins.js\");\n/**\n * The context passed to an Identity plugin. This contains objects that\n * plugins can use to set backend implementations.\n */\nconst pluginContext = {\n cachePluginControl: msalPlugins_js_1.msalNodeFlowCacheControl,\n nativeBrokerPluginControl: msalPlugins_js_1.msalNodeFlowNativeBrokerControl,\n vsCodeCredentialControl: msalPlugins_js_1.msalNodeFlowVSCodeCredentialControl,\n};\n/**\n * Extend Azure Identity with additional functionality. Pass a plugin from\n * a plugin package, such as:\n *\n * - `@azure/identity-cache-persistence`: provides persistent token caching\n * - `@azure/identity-vscode`: provides the dependencies of\n * `VisualStudioCodeCredential` and enables it\n *\n * Example:\n *\n * ```ts snippet:consumer_example\n * import { useIdentityPlugin, DeviceCodeCredential } from \"@azure/identity\";\n *\n * useIdentityPlugin(cachePersistencePlugin);\n * // The plugin has the capability to extend `DeviceCodeCredential` and to\n * // add middleware to the underlying credentials, such as persistence.\n * const credential = new DeviceCodeCredential({\n * tokenCachePersistenceOptions: {\n * enabled: true,\n * },\n * });\n * ```\n *\n * @param plugin - the plugin to register\n */\nfunction useIdentityPlugin(plugin) {\n plugin(pluginContext);\n}\n//# sourceMappingURL=consumer.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.AuthenticationRequiredError = exports.AggregateAuthenticationError = exports.AggregateAuthenticationErrorName = exports.AuthenticationError = exports.AuthenticationErrorName = exports.CredentialUnavailableError = exports.CredentialUnavailableErrorName = void 0;\nfunction isErrorResponse(errorResponse) {\n return (errorResponse &&\n typeof errorResponse.error === \"string\" &&\n typeof errorResponse.error_description === \"string\");\n}\n/**\n * The Error.name value of an CredentialUnavailable\n */\nexports.CredentialUnavailableErrorName = \"CredentialUnavailableError\";\n/**\n * This signifies that the credential that was tried in a chained credential\n * was not available to be used as the credential. Rather than treating this as\n * an error that should halt the chain, it's caught and the chain continues\n */\nclass CredentialUnavailableError extends Error {\n constructor(message, options) {\n super(message, options);\n this.name = exports.CredentialUnavailableErrorName;\n }\n}\nexports.CredentialUnavailableError = CredentialUnavailableError;\n/**\n * The Error.name value of an AuthenticationError\n */\nexports.AuthenticationErrorName = \"AuthenticationError\";\n/**\n * Provides details about a failure to authenticate with Azure Active\n * Directory. The `errorResponse` field contains more details about\n * the specific failure.\n */\nclass AuthenticationError extends Error {\n /**\n * The HTTP status code returned from the authentication request.\n */\n statusCode;\n /**\n * The error response details.\n */\n errorResponse;\n constructor(statusCode, errorBody, options) {\n let errorResponse = {\n error: \"unknown\",\n errorDescription: \"An unknown error occurred and no additional details are available.\",\n };\n if (isErrorResponse(errorBody)) {\n errorResponse = convertOAuthErrorResponseToErrorResponse(errorBody);\n }\n else if (typeof errorBody === \"string\") {\n try {\n // Most error responses will contain JSON-formatted error details\n // in the response body\n const oauthErrorResponse = JSON.parse(errorBody);\n errorResponse = convertOAuthErrorResponseToErrorResponse(oauthErrorResponse);\n }\n catch (e) {\n if (statusCode === 400) {\n errorResponse = {\n error: \"invalid_request\",\n errorDescription: `The service indicated that the request was invalid.\\n\\n${errorBody}`,\n };\n }\n else {\n errorResponse = {\n error: \"unknown_error\",\n errorDescription: `An unknown error has occurred. Response body:\\n\\n${errorBody}`,\n };\n }\n }\n }\n else {\n errorResponse = {\n error: \"unknown_error\",\n errorDescription: \"An unknown error occurred and no additional details are available.\",\n };\n }\n super(`${errorResponse.error} Status code: ${statusCode}\\nMore details:\\n${errorResponse.errorDescription},`, options);\n this.statusCode = statusCode;\n this.errorResponse = errorResponse;\n // Ensure that this type reports the correct name\n this.name = exports.AuthenticationErrorName;\n }\n}\nexports.AuthenticationError = AuthenticationError;\n/**\n * The Error.name value of an AggregateAuthenticationError\n */\nexports.AggregateAuthenticationErrorName = \"AggregateAuthenticationError\";\n/**\n * Provides an `errors` array containing {@link AuthenticationError} instance\n * for authentication failures from credentials in a {@link ChainedTokenCredential}.\n */\nclass AggregateAuthenticationError extends Error {\n /**\n * The array of error objects that were thrown while trying to authenticate\n * with the credentials in a {@link ChainedTokenCredential}.\n */\n errors;\n constructor(errors, errorMessage) {\n const errorDetail = errors.join(\"\\n\");\n super(`${errorMessage}\\n${errorDetail}`);\n this.errors = errors;\n // Ensure that this type reports the correct name\n this.name = exports.AggregateAuthenticationErrorName;\n }\n}\nexports.AggregateAuthenticationError = AggregateAuthenticationError;\nfunction convertOAuthErrorResponseToErrorResponse(errorBody) {\n return {\n error: errorBody.error,\n errorDescription: errorBody.error_description,\n correlationId: errorBody.correlation_id,\n errorCodes: errorBody.error_codes,\n timestamp: errorBody.timestamp,\n traceId: errorBody.trace_id,\n };\n}\n/**\n * Error used to enforce authentication after trying to retrieve a token silently.\n */\nclass AuthenticationRequiredError extends Error {\n /**\n * The list of scopes for which the token will have access.\n */\n scopes;\n /**\n * The options passed to the getToken request.\n */\n getTokenOptions;\n constructor(\n /**\n * Optional parameters. A message can be specified. The {@link GetTokenOptions} of the request can also be specified to more easily associate the error with the received parameters.\n */\n options) {\n super(options.message, options.cause ? { cause: options.cause } : undefined);\n this.scopes = options.scopes;\n this.getTokenOptions = options.getTokenOptions;\n this.name = \"AuthenticationRequiredError\";\n }\n}\nexports.AuthenticationRequiredError = AuthenticationRequiredError;\n//# sourceMappingURL=errors.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.logger = void 0;\nexports.processEnvVars = processEnvVars;\nexports.logEnvVars = logEnvVars;\nexports.formatSuccess = formatSuccess;\nexports.formatError = formatError;\nexports.credentialLoggerInstance = credentialLoggerInstance;\nexports.credentialLogger = credentialLogger;\nconst logger_1 = require(\"@azure/logger\");\n/**\n * The AzureLogger used for all clients within the identity package\n */\nexports.logger = (0, logger_1.createClientLogger)(\"identity\");\n/**\n * Separates a list of environment variable names into a plain object with two arrays: an array of missing environment variables and another array with assigned environment variables.\n * @param supportedEnvVars - List of environment variable names\n */\nfunction processEnvVars(supportedEnvVars) {\n return supportedEnvVars.reduce((acc, envVariable) => {\n if (process.env[envVariable]) {\n acc.assigned.push(envVariable);\n }\n else {\n acc.missing.push(envVariable);\n }\n return acc;\n }, { missing: [], assigned: [] });\n}\n/**\n * Based on a given list of environment variable names,\n * logs the environment variables currently assigned during the usage of a credential that goes by the given name.\n * @param credentialName - Name of the credential in use\n * @param supportedEnvVars - List of environment variables supported by that credential\n */\nfunction logEnvVars(credentialName, supportedEnvVars) {\n const { assigned } = processEnvVars(supportedEnvVars);\n exports.logger.info(`${credentialName} => Found the following environment variables: ${assigned.join(\", \")}`);\n}\n/**\n * Formatting the success event on the credentials\n */\nfunction formatSuccess(scope) {\n return `SUCCESS. Scopes: ${Array.isArray(scope) ? scope.join(\", \") : scope}.`;\n}\n/**\n * Formatting the success event on the credentials\n */\nfunction formatError(scope, error) {\n let message = \"ERROR.\";\n if (scope?.length) {\n message += ` Scopes: ${Array.isArray(scope) ? scope.join(\", \") : scope}.`;\n }\n return `${message} Error message: ${typeof error === \"string\" ? error : error.message}.`;\n}\n/**\n * Generates a CredentialLoggerInstance.\n *\n * It logs with the format:\n *\n * `[title] => [message]`\n *\n */\nfunction credentialLoggerInstance(title, parent, log = exports.logger) {\n const fullTitle = parent ? `${parent.fullTitle} ${title}` : title;\n function info(message) {\n log.info(`${fullTitle} =>`, message);\n }\n function warning(message) {\n log.warning(`${fullTitle} =>`, message);\n }\n function verbose(message) {\n log.verbose(`${fullTitle} =>`, message);\n }\n function error(message) {\n log.error(`${fullTitle} =>`, message);\n }\n return {\n title,\n fullTitle,\n info,\n warning,\n verbose,\n error,\n };\n}\n/**\n * Generates a CredentialLogger, which is a logger declared at the credential's constructor, and used at any point in the credential.\n * It has all the properties of a CredentialLoggerInstance, plus other logger instances, one per method.\n *\n * It logs with the format:\n *\n * `[title] => [message]`\n * `[title] => getToken() => [message]`\n *\n */\nfunction credentialLogger(title, log = exports.logger) {\n const credLogger = credentialLoggerInstance(title, undefined, log);\n return {\n ...credLogger,\n parent: log,\n getToken: credentialLoggerInstance(\"=> getToken()\", credLogger, log),\n };\n}\n//# sourceMappingURL=logging.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.tracingClient = void 0;\nconst constants_js_1 = require(\"../constants.js\");\nconst core_tracing_1 = require(\"@azure/core-tracing\");\n/**\n * Creates a span using the global tracer.\n * @internal\n */\nexports.tracingClient = (0, core_tracing_1.createTracingClient)({\n namespace: \"Microsoft.AAD\",\n packageName: \"@azure/identity\",\n packageVersion: constants_js_1.SDK_VERSION,\n});\n//# sourceMappingURL=tracing.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ChainedTokenCredential = exports.logger = void 0;\nconst errors_js_1 = require(\"../errors.js\");\nconst logging_js_1 = require(\"../util/logging.js\");\nconst tracing_js_1 = require(\"../util/tracing.js\");\n/**\n * @internal\n */\nexports.logger = (0, logging_js_1.credentialLogger)(\"ChainedTokenCredential\");\n/**\n * Enables multiple `TokenCredential` implementations to be tried in order until\n * one of the getToken methods returns an access token. For more information, see\n * [ChainedTokenCredential overview](https://aka.ms/azsdk/js/identity/credential-chains#use-chainedtokencredential-for-granularity).\n */\nclass ChainedTokenCredential {\n _sources = [];\n /**\n * Creates an instance of ChainedTokenCredential using the given credentials.\n *\n * @param sources - `TokenCredential` implementations to be tried in order.\n *\n * Example usage:\n * ```ts snippet:chained_token_credential_example\n * import { ClientSecretCredential, ChainedTokenCredential } from \"@azure/identity\";\n *\n * const tenantId = \"\";\n * const clientId = \"\";\n * const clientSecret = \"\";\n * const anotherClientId = \"\";\n * const anotherSecret = \"\";\n *\n * const firstCredential = new ClientSecretCredential(tenantId, clientId, clientSecret);\n * const secondCredential = new ClientSecretCredential(tenantId, anotherClientId, anotherSecret);\n *\n * const credentialChain = new ChainedTokenCredential(firstCredential, secondCredential);\n * ```\n */\n constructor(...sources) {\n this._sources = sources;\n }\n /**\n * Returns the first access token returned by one of the chained\n * `TokenCredential` implementations. Throws an {@link AggregateAuthenticationError}\n * when one or more credentials throws an {@link AuthenticationError} and\n * no credentials have returned an access token.\n *\n * This method is called automatically by Azure SDK client libraries. You may call this method\n * directly, but you must also handle token caching and token refreshing.\n *\n * @param scopes - The list of scopes for which the token will have access.\n * @param options - The options used to configure any requests this\n * `TokenCredential` implementation might make.\n */\n async getToken(scopes, options = {}) {\n const { token } = await this.getTokenInternal(scopes, options);\n return token;\n }\n async getTokenInternal(scopes, options = {}) {\n let token = null;\n let successfulCredential;\n const errors = [];\n return tracing_js_1.tracingClient.withSpan(\"ChainedTokenCredential.getToken\", options, async (updatedOptions) => {\n for (let i = 0; i < this._sources.length && token === null; i++) {\n try {\n token = await this._sources[i].getToken(scopes, updatedOptions);\n successfulCredential = this._sources[i];\n }\n catch (err) {\n if (err.name === \"CredentialUnavailableError\" ||\n err.name === \"AuthenticationRequiredError\") {\n errors.push(err);\n }\n else {\n exports.logger.getToken.info((0, logging_js_1.formatError)(scopes, err));\n throw err;\n }\n }\n }\n if (!token && errors.length > 0) {\n const err = new errors_js_1.AggregateAuthenticationError(errors, \"ChainedTokenCredential authentication failed.\");\n exports.logger.getToken.info((0, logging_js_1.formatError)(scopes, err));\n throw err;\n }\n exports.logger.getToken.info(`Result for ${successfulCredential.constructor.name}: ${(0, logging_js_1.formatSuccess)(scopes)}`);\n if (token === null) {\n throw new errors_js_1.CredentialUnavailableError(\"Failed to retrieve a valid token\");\n }\n return { token, successfulCredential };\n });\n }\n}\nexports.ChainedTokenCredential = ChainedTokenCredential;\n//# sourceMappingURL=chainedTokenCredential.js.map","import crypto from 'crypto';\nconst rnds8Pool = new Uint8Array(256); // # of random values to pre-allocate\n\nlet poolPtr = rnds8Pool.length;\nexport default function rng() {\n if (poolPtr > rnds8Pool.length - 16) {\n crypto.randomFillSync(rnds8Pool);\n poolPtr = 0;\n }\n\n return rnds8Pool.slice(poolPtr, poolPtr += 16);\n}","export default /^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i;","import REGEX from './regex.js';\n\nfunction validate(uuid) {\n return typeof uuid === 'string' && REGEX.test(uuid);\n}\n\nexport default validate;","import validate from './validate.js';\n/**\n * Convert array of 16 byte values to UUID string format of the form:\n * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX\n */\n\nconst byteToHex = [];\n\nfor (let i = 0; i < 256; ++i) {\n byteToHex.push((i + 0x100).toString(16).substr(1));\n}\n\nfunction stringify(arr, offset = 0) {\n // Note: Be careful editing this code! It's been tuned for performance\n // and works in ways you may not expect. See https://github.com/uuidjs/uuid/pull/434\n const uuid = (byteToHex[arr[offset + 0]] + byteToHex[arr[offset + 1]] + byteToHex[arr[offset + 2]] + byteToHex[arr[offset + 3]] + '-' + byteToHex[arr[offset + 4]] + byteToHex[arr[offset + 5]] + '-' + byteToHex[arr[offset + 6]] + byteToHex[arr[offset + 7]] + '-' + byteToHex[arr[offset + 8]] + byteToHex[arr[offset + 9]] + '-' + byteToHex[arr[offset + 10]] + byteToHex[arr[offset + 11]] + byteToHex[arr[offset + 12]] + byteToHex[arr[offset + 13]] + byteToHex[arr[offset + 14]] + byteToHex[arr[offset + 15]]).toLowerCase(); // Consistency check for valid UUID. If this throws, it's likely due to one\n // of the following:\n // - One or more input array values don't map to a hex octet (leading to\n // \"undefined\" in the uuid)\n // - Invalid input values for the RFC `version` or `variant` fields\n\n if (!validate(uuid)) {\n throw TypeError('Stringified UUID is invalid');\n }\n\n return uuid;\n}\n\nexport default stringify;","import rng from './rng.js';\nimport stringify from './stringify.js'; // **`v1()` - Generate time-based UUID**\n//\n// Inspired by https://github.com/LiosK/UUID.js\n// and http://docs.python.org/library/uuid.html\n\nlet _nodeId;\n\nlet _clockseq; // Previous uuid creation time\n\n\nlet _lastMSecs = 0;\nlet _lastNSecs = 0; // See https://github.com/uuidjs/uuid for API details\n\nfunction v1(options, buf, offset) {\n let i = buf && offset || 0;\n const b = buf || new Array(16);\n options = options || {};\n let node = options.node || _nodeId;\n let clockseq = options.clockseq !== undefined ? options.clockseq : _clockseq; // node and clockseq need to be initialized to random values if they're not\n // specified. We do this lazily to minimize issues related to insufficient\n // system entropy. See #189\n\n if (node == null || clockseq == null) {\n const seedBytes = options.random || (options.rng || rng)();\n\n if (node == null) {\n // Per 4.5, create and 48-bit node id, (47 random bits + multicast bit = 1)\n node = _nodeId = [seedBytes[0] | 0x01, seedBytes[1], seedBytes[2], seedBytes[3], seedBytes[4], seedBytes[5]];\n }\n\n if (clockseq == null) {\n // Per 4.2.2, randomize (14 bit) clockseq\n clockseq = _clockseq = (seedBytes[6] << 8 | seedBytes[7]) & 0x3fff;\n }\n } // UUID timestamps are 100 nano-second units since the Gregorian epoch,\n // (1582-10-15 00:00). JSNumbers aren't precise enough for this, so\n // time is handled internally as 'msecs' (integer milliseconds) and 'nsecs'\n // (100-nanoseconds offset from msecs) since unix epoch, 1970-01-01 00:00.\n\n\n let msecs = options.msecs !== undefined ? options.msecs : Date.now(); // Per 4.2.1.2, use count of uuid's generated during the current clock\n // cycle to simulate higher resolution clock\n\n let nsecs = options.nsecs !== undefined ? options.nsecs : _lastNSecs + 1; // Time since last uuid creation (in msecs)\n\n const dt = msecs - _lastMSecs + (nsecs - _lastNSecs) / 10000; // Per 4.2.1.2, Bump clockseq on clock regression\n\n if (dt < 0 && options.clockseq === undefined) {\n clockseq = clockseq + 1 & 0x3fff;\n } // Reset nsecs if clock regresses (new clockseq) or we've moved onto a new\n // time interval\n\n\n if ((dt < 0 || msecs > _lastMSecs) && options.nsecs === undefined) {\n nsecs = 0;\n } // Per 4.2.1.2 Throw error if too many uuids are requested\n\n\n if (nsecs >= 10000) {\n throw new Error(\"uuid.v1(): Can't create more than 10M uuids/sec\");\n }\n\n _lastMSecs = msecs;\n _lastNSecs = nsecs;\n _clockseq = clockseq; // Per 4.1.4 - Convert from unix epoch to Gregorian epoch\n\n msecs += 12219292800000; // `time_low`\n\n const tl = ((msecs & 0xfffffff) * 10000 + nsecs) % 0x100000000;\n b[i++] = tl >>> 24 & 0xff;\n b[i++] = tl >>> 16 & 0xff;\n b[i++] = tl >>> 8 & 0xff;\n b[i++] = tl & 0xff; // `time_mid`\n\n const tmh = msecs / 0x100000000 * 10000 & 0xfffffff;\n b[i++] = tmh >>> 8 & 0xff;\n b[i++] = tmh & 0xff; // `time_high_and_version`\n\n b[i++] = tmh >>> 24 & 0xf | 0x10; // include version\n\n b[i++] = tmh >>> 16 & 0xff; // `clock_seq_hi_and_reserved` (Per 4.2.2 - include variant)\n\n b[i++] = clockseq >>> 8 | 0x80; // `clock_seq_low`\n\n b[i++] = clockseq & 0xff; // `node`\n\n for (let n = 0; n < 6; ++n) {\n b[i + n] = node[n];\n }\n\n return buf || stringify(b);\n}\n\nexport default v1;","import validate from './validate.js';\n\nfunction parse(uuid) {\n if (!validate(uuid)) {\n throw TypeError('Invalid UUID');\n }\n\n let v;\n const arr = new Uint8Array(16); // Parse ########-....-....-....-............\n\n arr[0] = (v = parseInt(uuid.slice(0, 8), 16)) >>> 24;\n arr[1] = v >>> 16 & 0xff;\n arr[2] = v >>> 8 & 0xff;\n arr[3] = v & 0xff; // Parse ........-####-....-....-............\n\n arr[4] = (v = parseInt(uuid.slice(9, 13), 16)) >>> 8;\n arr[5] = v & 0xff; // Parse ........-....-####-....-............\n\n arr[6] = (v = parseInt(uuid.slice(14, 18), 16)) >>> 8;\n arr[7] = v & 0xff; // Parse ........-....-....-####-............\n\n arr[8] = (v = parseInt(uuid.slice(19, 23), 16)) >>> 8;\n arr[9] = v & 0xff; // Parse ........-....-....-....-############\n // (Use \"/\" to avoid 32-bit truncation when bit-shifting high-order bytes)\n\n arr[10] = (v = parseInt(uuid.slice(24, 36), 16)) / 0x10000000000 & 0xff;\n arr[11] = v / 0x100000000 & 0xff;\n arr[12] = v >>> 24 & 0xff;\n arr[13] = v >>> 16 & 0xff;\n arr[14] = v >>> 8 & 0xff;\n arr[15] = v & 0xff;\n return arr;\n}\n\nexport default parse;","import stringify from './stringify.js';\nimport parse from './parse.js';\n\nfunction stringToBytes(str) {\n str = unescape(encodeURIComponent(str)); // UTF8 escape\n\n const bytes = [];\n\n for (let i = 0; i < str.length; ++i) {\n bytes.push(str.charCodeAt(i));\n }\n\n return bytes;\n}\n\nexport const DNS = '6ba7b810-9dad-11d1-80b4-00c04fd430c8';\nexport const URL = '6ba7b811-9dad-11d1-80b4-00c04fd430c8';\nexport default function (name, version, hashfunc) {\n function generateUUID(value, namespace, buf, offset) {\n if (typeof value === 'string') {\n value = stringToBytes(value);\n }\n\n if (typeof namespace === 'string') {\n namespace = parse(namespace);\n }\n\n if (namespace.length !== 16) {\n throw TypeError('Namespace must be array-like (16 iterable integer values, 0-255)');\n } // Compute hash of namespace and value, Per 4.3\n // Future: Use spread syntax when supported on all platforms, e.g. `bytes =\n // hashfunc([...namespace, ... value])`\n\n\n let bytes = new Uint8Array(16 + value.length);\n bytes.set(namespace);\n bytes.set(value, namespace.length);\n bytes = hashfunc(bytes);\n bytes[6] = bytes[6] & 0x0f | version;\n bytes[8] = bytes[8] & 0x3f | 0x80;\n\n if (buf) {\n offset = offset || 0;\n\n for (let i = 0; i < 16; ++i) {\n buf[offset + i] = bytes[i];\n }\n\n return buf;\n }\n\n return stringify(bytes);\n } // Function#name is not settable on some platforms (#270)\n\n\n try {\n generateUUID.name = name; // eslint-disable-next-line no-empty\n } catch (err) {} // For CommonJS default export support\n\n\n generateUUID.DNS = DNS;\n generateUUID.URL = URL;\n return generateUUID;\n}","import crypto from 'crypto';\n\nfunction md5(bytes) {\n if (Array.isArray(bytes)) {\n bytes = Buffer.from(bytes);\n } else if (typeof bytes === 'string') {\n bytes = Buffer.from(bytes, 'utf8');\n }\n\n return crypto.createHash('md5').update(bytes).digest();\n}\n\nexport default md5;","import v35 from './v35.js';\nimport md5 from './md5.js';\nconst v3 = v35('v3', 0x30, md5);\nexport default v3;","import rng from './rng.js';\nimport stringify from './stringify.js';\n\nfunction v4(options, buf, offset) {\n options = options || {};\n const rnds = options.random || (options.rng || rng)(); // Per 4.4, set bits for version and `clock_seq_hi_and_reserved`\n\n rnds[6] = rnds[6] & 0x0f | 0x40;\n rnds[8] = rnds[8] & 0x3f | 0x80; // Copy bytes to buffer, if provided\n\n if (buf) {\n offset = offset || 0;\n\n for (let i = 0; i < 16; ++i) {\n buf[offset + i] = rnds[i];\n }\n\n return buf;\n }\n\n return stringify(rnds);\n}\n\nexport default v4;","import crypto from 'crypto';\n\nfunction sha1(bytes) {\n if (Array.isArray(bytes)) {\n bytes = Buffer.from(bytes);\n } else if (typeof bytes === 'string') {\n bytes = Buffer.from(bytes, 'utf8');\n }\n\n return crypto.createHash('sha1').update(bytes).digest();\n}\n\nexport default sha1;","import v35 from './v35.js';\nimport sha1 from './sha1.js';\nconst v5 = v35('v5', 0x50, sha1);\nexport default v5;","export default '00000000-0000-0000-0000-000000000000';","import validate from './validate.js';\n\nfunction version(uuid) {\n if (!validate(uuid)) {\n throw TypeError('Invalid UUID');\n }\n\n return parseInt(uuid.substr(14, 1), 16);\n}\n\nexport default version;","export { default as v1 } from './v1.js';\nexport { default as v3 } from './v3.js';\nexport { default as v4 } from './v4.js';\nexport { default as v5 } from './v5.js';\nexport { default as NIL } from './nil.js';\nexport { default as version } from './version.js';\nexport { default as validate } from './validate.js';\nexport { default as stringify } from './stringify.js';\nexport { default as parse } from './parse.js';","/*! @azure/msal-common v15.13.2 2025-11-19 */\n'use strict';\n'use strict';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nconst Constants = {\r\n LIBRARY_NAME: \"MSAL.JS\",\r\n SKU: \"msal.js.common\",\r\n // default authority\r\n DEFAULT_AUTHORITY: \"https://login.microsoftonline.com/common/\",\r\n DEFAULT_AUTHORITY_HOST: \"login.microsoftonline.com\",\r\n DEFAULT_COMMON_TENANT: \"common\",\r\n // ADFS String\r\n ADFS: \"adfs\",\r\n DSTS: \"dstsv2\",\r\n // Default AAD Instance Discovery Endpoint\r\n AAD_INSTANCE_DISCOVERY_ENDPT: \"https://login.microsoftonline.com/common/discovery/instance?api-version=1.1&authorization_endpoint=\",\r\n // CIAM URL\r\n CIAM_AUTH_URL: \".ciamlogin.com\",\r\n AAD_TENANT_DOMAIN_SUFFIX: \".onmicrosoft.com\",\r\n // Resource delimiter - used for certain cache entries\r\n RESOURCE_DELIM: \"|\",\r\n // Placeholder for non-existent account ids/objects\r\n NO_ACCOUNT: \"NO_ACCOUNT\",\r\n // Claims\r\n CLAIMS: \"claims\",\r\n // Consumer UTID\r\n CONSUMER_UTID: \"9188040d-6c67-4c5b-b112-36a304b66dad\",\r\n // Default scopes\r\n OPENID_SCOPE: \"openid\",\r\n PROFILE_SCOPE: \"profile\",\r\n OFFLINE_ACCESS_SCOPE: \"offline_access\",\r\n EMAIL_SCOPE: \"email\",\r\n CODE_GRANT_TYPE: \"authorization_code\",\r\n RT_GRANT_TYPE: \"refresh_token\",\r\n S256_CODE_CHALLENGE_METHOD: \"S256\",\r\n URL_FORM_CONTENT_TYPE: \"application/x-www-form-urlencoded;charset=utf-8\",\r\n AUTHORIZATION_PENDING: \"authorization_pending\",\r\n NOT_DEFINED: \"not_defined\",\r\n EMPTY_STRING: \"\",\r\n NOT_APPLICABLE: \"N/A\",\r\n NOT_AVAILABLE: \"Not Available\",\r\n FORWARD_SLASH: \"/\",\r\n IMDS_ENDPOINT: \"http://169.254.169.254/metadata/instance/compute/location\",\r\n IMDS_VERSION: \"2020-06-01\",\r\n IMDS_TIMEOUT: 2000,\r\n AZURE_REGION_AUTO_DISCOVER_FLAG: \"TryAutoDetect\",\r\n REGIONAL_AUTH_PUBLIC_CLOUD_SUFFIX: \"login.microsoft.com\",\r\n KNOWN_PUBLIC_CLOUDS: [\r\n \"login.microsoftonline.com\",\r\n \"login.windows.net\",\r\n \"login.microsoft.com\",\r\n \"sts.windows.net\",\r\n ],\r\n SHR_NONCE_VALIDITY: 240,\r\n INVALID_INSTANCE: \"invalid_instance\",\r\n};\r\nconst HttpStatus = {\r\n SUCCESS: 200,\r\n SUCCESS_RANGE_START: 200,\r\n SUCCESS_RANGE_END: 299,\r\n REDIRECT: 302,\r\n CLIENT_ERROR: 400,\r\n CLIENT_ERROR_RANGE_START: 400,\r\n BAD_REQUEST: 400,\r\n UNAUTHORIZED: 401,\r\n NOT_FOUND: 404,\r\n REQUEST_TIMEOUT: 408,\r\n GONE: 410,\r\n TOO_MANY_REQUESTS: 429,\r\n CLIENT_ERROR_RANGE_END: 499,\r\n SERVER_ERROR: 500,\r\n SERVER_ERROR_RANGE_START: 500,\r\n SERVICE_UNAVAILABLE: 503,\r\n GATEWAY_TIMEOUT: 504,\r\n SERVER_ERROR_RANGE_END: 599,\r\n MULTI_SIDED_ERROR: 600,\r\n};\r\nconst HttpMethod = {\r\n GET: \"GET\",\r\n POST: \"POST\",\r\n};\r\nconst OIDC_DEFAULT_SCOPES = [\r\n Constants.OPENID_SCOPE,\r\n Constants.PROFILE_SCOPE,\r\n Constants.OFFLINE_ACCESS_SCOPE,\r\n];\r\nconst OIDC_SCOPES = [...OIDC_DEFAULT_SCOPES, Constants.EMAIL_SCOPE];\r\n/**\r\n * Request header names\r\n */\r\nconst HeaderNames = {\r\n CONTENT_TYPE: \"Content-Type\",\r\n CONTENT_LENGTH: \"Content-Length\",\r\n RETRY_AFTER: \"Retry-After\",\r\n CCS_HEADER: \"X-AnchorMailbox\",\r\n WWWAuthenticate: \"WWW-Authenticate\",\r\n AuthenticationInfo: \"Authentication-Info\",\r\n X_MS_REQUEST_ID: \"x-ms-request-id\",\r\n X_MS_HTTP_VERSION: \"x-ms-httpver\",\r\n};\r\n/**\r\n * Persistent cache keys MSAL which stay while user is logged in.\r\n */\r\nconst PersistentCacheKeys = {\r\n ACTIVE_ACCOUNT_FILTERS: \"active-account-filters\", // new cache entry for active_account for a more robust version for browser\r\n};\r\n/**\r\n * String constants related to AAD Authority\r\n */\r\nconst AADAuthorityConstants = {\r\n COMMON: \"common\",\r\n ORGANIZATIONS: \"organizations\",\r\n CONSUMERS: \"consumers\",\r\n};\r\n/**\r\n * Claims request keys\r\n */\r\nconst ClaimsRequestKeys = {\r\n ACCESS_TOKEN: \"access_token\",\r\n XMS_CC: \"xms_cc\",\r\n};\r\n/**\r\n * we considered making this \"enum\" in the request instead of string, however it looks like the allowed list of\r\n * prompt values kept changing over past couple of years. There are some undocumented prompt values for some\r\n * internal partners too, hence the choice of generic \"string\" type instead of the \"enum\"\r\n */\r\nconst PromptValue = {\r\n LOGIN: \"login\",\r\n SELECT_ACCOUNT: \"select_account\",\r\n CONSENT: \"consent\",\r\n NONE: \"none\",\r\n CREATE: \"create\",\r\n NO_SESSION: \"no_session\",\r\n};\r\n/**\r\n * allowed values for codeVerifier\r\n */\r\nconst CodeChallengeMethodValues = {\r\n PLAIN: \"plain\",\r\n S256: \"S256\",\r\n};\r\n/**\r\n * Allowed values for response_type\r\n */\r\nconst OAuthResponseType = {\r\n CODE: \"code\",\r\n IDTOKEN_TOKEN: \"id_token token\",\r\n IDTOKEN_TOKEN_REFRESHTOKEN: \"id_token token refresh_token\",\r\n};\r\n/**\r\n * allowed values for server response type\r\n * @deprecated Use ResponseMode instead\r\n */\r\nconst ServerResponseType = {\r\n QUERY: \"query\",\r\n FRAGMENT: \"fragment\",\r\n};\r\n/**\r\n * allowed values for response_mode\r\n */\r\nconst ResponseMode = {\r\n QUERY: \"query\",\r\n FRAGMENT: \"fragment\",\r\n FORM_POST: \"form_post\",\r\n};\r\n/**\r\n * allowed grant_type\r\n */\r\nconst GrantType = {\r\n IMPLICIT_GRANT: \"implicit\",\r\n AUTHORIZATION_CODE_GRANT: \"authorization_code\",\r\n CLIENT_CREDENTIALS_GRANT: \"client_credentials\",\r\n RESOURCE_OWNER_PASSWORD_GRANT: \"password\",\r\n REFRESH_TOKEN_GRANT: \"refresh_token\",\r\n DEVICE_CODE_GRANT: \"device_code\",\r\n JWT_BEARER: \"urn:ietf:params:oauth:grant-type:jwt-bearer\",\r\n};\r\n/**\r\n * Account types in Cache\r\n */\r\nconst CacheAccountType = {\r\n MSSTS_ACCOUNT_TYPE: \"MSSTS\",\r\n ADFS_ACCOUNT_TYPE: \"ADFS\",\r\n MSAV1_ACCOUNT_TYPE: \"MSA\",\r\n GENERIC_ACCOUNT_TYPE: \"Generic\", // NTLM, Kerberos, FBA, Basic etc\r\n};\r\n/**\r\n * Separators used in cache\r\n */\r\nconst Separators = {\r\n CACHE_KEY_SEPARATOR: \"-\",\r\n CLIENT_INFO_SEPARATOR: \".\",\r\n};\r\n/**\r\n * Credential Type stored in the cache\r\n */\r\nconst CredentialType = {\r\n ID_TOKEN: \"IdToken\",\r\n ACCESS_TOKEN: \"AccessToken\",\r\n ACCESS_TOKEN_WITH_AUTH_SCHEME: \"AccessToken_With_AuthScheme\",\r\n REFRESH_TOKEN: \"RefreshToken\",\r\n};\r\n/**\r\n * Combine all cache types\r\n */\r\nconst CacheType = {\r\n ADFS: 1001,\r\n MSA: 1002,\r\n MSSTS: 1003,\r\n GENERIC: 1004,\r\n ACCESS_TOKEN: 2001,\r\n REFRESH_TOKEN: 2002,\r\n ID_TOKEN: 2003,\r\n APP_METADATA: 3001,\r\n UNDEFINED: 9999,\r\n};\r\n/**\r\n * More Cache related constants\r\n */\r\nconst APP_METADATA = \"appmetadata\";\r\nconst CLIENT_INFO$1 = \"client_info\";\r\nconst THE_FAMILY_ID = \"1\";\r\nconst AUTHORITY_METADATA_CONSTANTS = {\r\n CACHE_KEY: \"authority-metadata\",\r\n REFRESH_TIME_SECONDS: 3600 * 24, // 24 Hours\r\n};\r\nconst AuthorityMetadataSource = {\r\n CONFIG: \"config\",\r\n CACHE: \"cache\",\r\n NETWORK: \"network\",\r\n HARDCODED_VALUES: \"hardcoded_values\",\r\n};\r\nconst SERVER_TELEM_CONSTANTS = {\r\n SCHEMA_VERSION: 5,\r\n MAX_LAST_HEADER_BYTES: 330,\r\n MAX_CACHED_ERRORS: 50,\r\n CACHE_KEY: \"server-telemetry\",\r\n CATEGORY_SEPARATOR: \"|\",\r\n VALUE_SEPARATOR: \",\",\r\n OVERFLOW_TRUE: \"1\",\r\n OVERFLOW_FALSE: \"0\",\r\n UNKNOWN_ERROR: \"unknown_error\",\r\n};\r\n/**\r\n * Type of the authentication request\r\n */\r\nconst AuthenticationScheme = {\r\n BEARER: \"Bearer\",\r\n POP: \"pop\",\r\n SSH: \"ssh-cert\",\r\n};\r\n/**\r\n * Constants related to throttling\r\n */\r\nconst ThrottlingConstants = {\r\n // Default time to throttle RequestThumbprint in seconds\r\n DEFAULT_THROTTLE_TIME_SECONDS: 60,\r\n // Default maximum time to throttle in seconds, overrides what the server sends back\r\n DEFAULT_MAX_THROTTLE_TIME_SECONDS: 3600,\r\n // Prefix for storing throttling entries\r\n THROTTLING_PREFIX: \"throttling\",\r\n // Value assigned to the x-ms-lib-capability header to indicate to the server the library supports throttling\r\n X_MS_LIB_CAPABILITY_VALUE: \"retry-after, h429\",\r\n};\r\nconst Errors = {\r\n INVALID_GRANT_ERROR: \"invalid_grant\",\r\n CLIENT_MISMATCH_ERROR: \"client_mismatch\",\r\n};\r\n/**\r\n * Password grant parameters\r\n */\r\nconst PasswordGrantConstants = {\r\n username: \"username\",\r\n password: \"password\",\r\n};\r\n/**\r\n * Region Discovery Sources\r\n */\r\nconst RegionDiscoverySources = {\r\n FAILED_AUTO_DETECTION: \"1\",\r\n INTERNAL_CACHE: \"2\",\r\n ENVIRONMENT_VARIABLE: \"3\",\r\n IMDS: \"4\",\r\n};\r\n/**\r\n * Region Discovery Outcomes\r\n */\r\nconst RegionDiscoveryOutcomes = {\r\n CONFIGURED_NO_AUTO_DETECTION: \"2\",\r\n AUTO_DETECTION_REQUESTED_SUCCESSFUL: \"4\",\r\n AUTO_DETECTION_REQUESTED_FAILED: \"5\",\r\n};\r\n/**\r\n * Specifies the reason for fetching the access token from the identity provider\r\n */\r\nconst CacheOutcome = {\r\n // When a token is found in the cache or the cache is not supposed to be hit when making the request\r\n NOT_APPLICABLE: \"0\",\r\n // When the token request goes to the identity provider because force_refresh was set to true. Also occurs if claims were requested\r\n FORCE_REFRESH_OR_CLAIMS: \"1\",\r\n // When the token request goes to the identity provider because no cached access token exists\r\n NO_CACHED_ACCESS_TOKEN: \"2\",\r\n // When the token request goes to the identity provider because cached access token expired\r\n CACHED_ACCESS_TOKEN_EXPIRED: \"3\",\r\n // When the token request goes to the identity provider because refresh_in was used and the existing token needs to be refreshed\r\n PROACTIVELY_REFRESHED: \"4\",\r\n};\r\nconst JsonWebTokenTypes = {\r\n Jwt: \"JWT\",\r\n Jwk: \"JWK\",\r\n Pop: \"pop\",\r\n};\r\nconst ONE_DAY_IN_MS = 86400000;\r\n// Token renewal offset default in seconds\r\nconst DEFAULT_TOKEN_RENEWAL_OFFSET_SEC = 300;\r\nconst EncodingTypes = {\r\n BASE64: \"base64\",\r\n HEX: \"hex\",\r\n UTF8: \"utf-8\",\r\n};\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * AuthErrorMessage class containing string constants used by error codes and messages.\r\n */\r\nconst unexpectedError = \"unexpected_error\";\r\nconst postRequestFailed = \"post_request_failed\";\n\nvar AuthErrorCodes = /*#__PURE__*/Object.freeze({\n __proto__: null,\n postRequestFailed: postRequestFailed,\n unexpectedError: unexpectedError\n});\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nconst AuthErrorMessages = {\r\n [unexpectedError]: \"Unexpected error in authentication.\",\r\n [postRequestFailed]: \"Post request failed from the network, could be a 4xx/5xx or a network unavailability. Please check the exact error code for details.\",\r\n};\r\n/**\r\n * AuthErrorMessage class containing string constants used by error codes and messages.\r\n * @deprecated Use AuthErrorCodes instead\r\n */\r\nconst AuthErrorMessage = {\r\n unexpectedError: {\r\n code: unexpectedError,\r\n desc: AuthErrorMessages[unexpectedError],\r\n },\r\n postRequestFailed: {\r\n code: postRequestFailed,\r\n desc: AuthErrorMessages[postRequestFailed],\r\n },\r\n};\r\n/**\r\n * General error class thrown by the MSAL.js library.\r\n */\r\nclass AuthError extends Error {\r\n constructor(errorCode, errorMessage, suberror) {\r\n const errorString = errorMessage\r\n ? `${errorCode}: ${errorMessage}`\r\n : errorCode;\r\n super(errorString);\r\n Object.setPrototypeOf(this, AuthError.prototype);\r\n this.errorCode = errorCode || Constants.EMPTY_STRING;\r\n this.errorMessage = errorMessage || Constants.EMPTY_STRING;\r\n this.subError = suberror || Constants.EMPTY_STRING;\r\n this.name = \"AuthError\";\r\n }\r\n setCorrelationId(correlationId) {\r\n this.correlationId = correlationId;\r\n }\r\n}\r\nfunction createAuthError(code, additionalMessage) {\r\n return new AuthError(code, additionalMessage\r\n ? `${AuthErrorMessages[code]} ${additionalMessage}`\r\n : AuthErrorMessages[code]);\r\n}\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nconst clientInfoDecodingError = \"client_info_decoding_error\";\r\nconst clientInfoEmptyError = \"client_info_empty_error\";\r\nconst tokenParsingError = \"token_parsing_error\";\r\nconst nullOrEmptyToken = \"null_or_empty_token\";\r\nconst endpointResolutionError = \"endpoints_resolution_error\";\r\nconst networkError = \"network_error\";\r\nconst openIdConfigError = \"openid_config_error\";\r\nconst hashNotDeserialized = \"hash_not_deserialized\";\r\nconst invalidState = \"invalid_state\";\r\nconst stateMismatch = \"state_mismatch\";\r\nconst stateNotFound = \"state_not_found\";\r\nconst nonceMismatch = \"nonce_mismatch\";\r\nconst authTimeNotFound = \"auth_time_not_found\";\r\nconst maxAgeTranspired = \"max_age_transpired\";\r\nconst multipleMatchingTokens = \"multiple_matching_tokens\";\r\nconst multipleMatchingAccounts = \"multiple_matching_accounts\";\r\nconst multipleMatchingAppMetadata = \"multiple_matching_appMetadata\";\r\nconst requestCannotBeMade = \"request_cannot_be_made\";\r\nconst cannotRemoveEmptyScope = \"cannot_remove_empty_scope\";\r\nconst cannotAppendScopeSet = \"cannot_append_scopeset\";\r\nconst emptyInputScopeSet = \"empty_input_scopeset\";\r\nconst deviceCodePollingCancelled = \"device_code_polling_cancelled\";\r\nconst deviceCodeExpired = \"device_code_expired\";\r\nconst deviceCodeUnknownError = \"device_code_unknown_error\";\r\nconst noAccountInSilentRequest = \"no_account_in_silent_request\";\r\nconst invalidCacheRecord = \"invalid_cache_record\";\r\nconst invalidCacheEnvironment = \"invalid_cache_environment\";\r\nconst noAccountFound = \"no_account_found\";\r\nconst noCryptoObject = \"no_crypto_object\";\r\nconst unexpectedCredentialType = \"unexpected_credential_type\";\r\nconst invalidAssertion = \"invalid_assertion\";\r\nconst invalidClientCredential = \"invalid_client_credential\";\r\nconst tokenRefreshRequired = \"token_refresh_required\";\r\nconst userTimeoutReached = \"user_timeout_reached\";\r\nconst tokenClaimsCnfRequiredForSignedJwt = \"token_claims_cnf_required_for_signedjwt\";\r\nconst authorizationCodeMissingFromServerResponse = \"authorization_code_missing_from_server_response\";\r\nconst bindingKeyNotRemoved = \"binding_key_not_removed\";\r\nconst endSessionEndpointNotSupported = \"end_session_endpoint_not_supported\";\r\nconst keyIdMissing = \"key_id_missing\";\r\nconst noNetworkConnectivity = \"no_network_connectivity\";\r\nconst userCanceled = \"user_canceled\";\r\nconst missingTenantIdError = \"missing_tenant_id_error\";\r\nconst methodNotImplemented = \"method_not_implemented\";\r\nconst nestedAppAuthBridgeDisabled = \"nested_app_auth_bridge_disabled\";\r\nconst platformBrokerError = \"platform_broker_error\";\n\nvar ClientAuthErrorCodes = /*#__PURE__*/Object.freeze({\n __proto__: null,\n authTimeNotFound: authTimeNotFound,\n authorizationCodeMissingFromServerResponse: authorizationCodeMissingFromServerResponse,\n bindingKeyNotRemoved: bindingKeyNotRemoved,\n cannotAppendScopeSet: cannotAppendScopeSet,\n cannotRemoveEmptyScope: cannotRemoveEmptyScope,\n clientInfoDecodingError: clientInfoDecodingError,\n clientInfoEmptyError: clientInfoEmptyError,\n deviceCodeExpired: deviceCodeExpired,\n deviceCodePollingCancelled: deviceCodePollingCancelled,\n deviceCodeUnknownError: deviceCodeUnknownError,\n emptyInputScopeSet: emptyInputScopeSet,\n endSessionEndpointNotSupported: endSessionEndpointNotSupported,\n endpointResolutionError: endpointResolutionError,\n hashNotDeserialized: hashNotDeserialized,\n invalidAssertion: invalidAssertion,\n invalidCacheEnvironment: invalidCacheEnvironment,\n invalidCacheRecord: invalidCacheRecord,\n invalidClientCredential: invalidClientCredential,\n invalidState: invalidState,\n keyIdMissing: keyIdMissing,\n maxAgeTranspired: maxAgeTranspired,\n methodNotImplemented: methodNotImplemented,\n missingTenantIdError: missingTenantIdError,\n multipleMatchingAccounts: multipleMatchingAccounts,\n multipleMatchingAppMetadata: multipleMatchingAppMetadata,\n multipleMatchingTokens: multipleMatchingTokens,\n nestedAppAuthBridgeDisabled: nestedAppAuthBridgeDisabled,\n networkError: networkError,\n noAccountFound: noAccountFound,\n noAccountInSilentRequest: noAccountInSilentRequest,\n noCryptoObject: noCryptoObject,\n noNetworkConnectivity: noNetworkConnectivity,\n nonceMismatch: nonceMismatch,\n nullOrEmptyToken: nullOrEmptyToken,\n openIdConfigError: openIdConfigError,\n platformBrokerError: platformBrokerError,\n requestCannotBeMade: requestCannotBeMade,\n stateMismatch: stateMismatch,\n stateNotFound: stateNotFound,\n tokenClaimsCnfRequiredForSignedJwt: tokenClaimsCnfRequiredForSignedJwt,\n tokenParsingError: tokenParsingError,\n tokenRefreshRequired: tokenRefreshRequired,\n unexpectedCredentialType: unexpectedCredentialType,\n userCanceled: userCanceled,\n userTimeoutReached: userTimeoutReached\n});\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * ClientAuthErrorMessage class containing string constants used by error codes and messages.\r\n */\r\nconst ClientAuthErrorMessages = {\r\n [clientInfoDecodingError]: \"The client info could not be parsed/decoded correctly\",\r\n [clientInfoEmptyError]: \"The client info was empty\",\r\n [tokenParsingError]: \"Token cannot be parsed\",\r\n [nullOrEmptyToken]: \"The token is null or empty\",\r\n [endpointResolutionError]: \"Endpoints cannot be resolved\",\r\n [networkError]: \"Network request failed\",\r\n [openIdConfigError]: \"Could not retrieve endpoints. Check your authority and verify the .well-known/openid-configuration endpoint returns the required endpoints.\",\r\n [hashNotDeserialized]: \"The hash parameters could not be deserialized\",\r\n [invalidState]: \"State was not the expected format\",\r\n [stateMismatch]: \"State mismatch error\",\r\n [stateNotFound]: \"State not found\",\r\n [nonceMismatch]: \"Nonce mismatch error\",\r\n [authTimeNotFound]: \"Max Age was requested and the ID token is missing the auth_time variable.\" +\r\n \" auth_time is an optional claim and is not enabled by default - it must be enabled.\" +\r\n \" See https://aka.ms/msaljs/optional-claims for more information.\",\r\n [maxAgeTranspired]: \"Max Age is set to 0, or too much time has elapsed since the last end-user authentication.\",\r\n [multipleMatchingTokens]: \"The cache contains multiple tokens satisfying the requirements. \" +\r\n \"Call AcquireToken again providing more requirements such as authority or account.\",\r\n [multipleMatchingAccounts]: \"The cache contains multiple accounts satisfying the given parameters. Please pass more info to obtain the correct account\",\r\n [multipleMatchingAppMetadata]: \"The cache contains multiple appMetadata satisfying the given parameters. Please pass more info to obtain the correct appMetadata\",\r\n [requestCannotBeMade]: \"Token request cannot be made without authorization code or refresh token.\",\r\n [cannotRemoveEmptyScope]: \"Cannot remove null or empty scope from ScopeSet\",\r\n [cannotAppendScopeSet]: \"Cannot append ScopeSet\",\r\n [emptyInputScopeSet]: \"Empty input ScopeSet cannot be processed\",\r\n [deviceCodePollingCancelled]: \"Caller has cancelled token endpoint polling during device code flow by setting DeviceCodeRequest.cancel = true.\",\r\n [deviceCodeExpired]: \"Device code is expired.\",\r\n [deviceCodeUnknownError]: \"Device code stopped polling for unknown reasons.\",\r\n [noAccountInSilentRequest]: \"Please pass an account object, silent flow is not supported without account information\",\r\n [invalidCacheRecord]: \"Cache record object was null or undefined.\",\r\n [invalidCacheEnvironment]: \"Invalid environment when attempting to create cache entry\",\r\n [noAccountFound]: \"No account found in cache for given key.\",\r\n [noCryptoObject]: \"No crypto object detected.\",\r\n [unexpectedCredentialType]: \"Unexpected credential type.\",\r\n [invalidAssertion]: \"Client assertion must meet requirements described in https://tools.ietf.org/html/rfc7515\",\r\n [invalidClientCredential]: \"Client credential (secret, certificate, or assertion) must not be empty when creating a confidential client. An application should at most have one credential\",\r\n [tokenRefreshRequired]: \"Cannot return token from cache because it must be refreshed. This may be due to one of the following reasons: forceRefresh parameter is set to true, claims have been requested, there is no cached access token or it is expired.\",\r\n [userTimeoutReached]: \"User defined timeout for device code polling reached\",\r\n [tokenClaimsCnfRequiredForSignedJwt]: \"Cannot generate a POP jwt if the token_claims are not populated\",\r\n [authorizationCodeMissingFromServerResponse]: \"Server response does not contain an authorization code to proceed\",\r\n [bindingKeyNotRemoved]: \"Could not remove the credential's binding key from storage.\",\r\n [endSessionEndpointNotSupported]: \"The provided authority does not support logout\",\r\n [keyIdMissing]: \"A keyId value is missing from the requested bound token's cache record and is required to match the token to it's stored binding key.\",\r\n [noNetworkConnectivity]: \"No network connectivity. Check your internet connection.\",\r\n [userCanceled]: \"User cancelled the flow.\",\r\n [missingTenantIdError]: \"A tenant id - not common, organizations, or consumers - must be specified when using the client_credentials flow.\",\r\n [methodNotImplemented]: \"This method has not been implemented\",\r\n [nestedAppAuthBridgeDisabled]: \"The nested app auth bridge is disabled\",\r\n [platformBrokerError]: \"An error occurred in the native broker. See the platformBrokerError property for details.\",\r\n};\r\n/**\r\n * String constants used by error codes and messages.\r\n * @deprecated Use ClientAuthErrorCodes instead\r\n */\r\nconst ClientAuthErrorMessage = {\r\n clientInfoDecodingError: {\r\n code: clientInfoDecodingError,\r\n desc: ClientAuthErrorMessages[clientInfoDecodingError],\r\n },\r\n clientInfoEmptyError: {\r\n code: clientInfoEmptyError,\r\n desc: ClientAuthErrorMessages[clientInfoEmptyError],\r\n },\r\n tokenParsingError: {\r\n code: tokenParsingError,\r\n desc: ClientAuthErrorMessages[tokenParsingError],\r\n },\r\n nullOrEmptyToken: {\r\n code: nullOrEmptyToken,\r\n desc: ClientAuthErrorMessages[nullOrEmptyToken],\r\n },\r\n endpointResolutionError: {\r\n code: endpointResolutionError,\r\n desc: ClientAuthErrorMessages[endpointResolutionError],\r\n },\r\n networkError: {\r\n code: networkError,\r\n desc: ClientAuthErrorMessages[networkError],\r\n },\r\n unableToGetOpenidConfigError: {\r\n code: openIdConfigError,\r\n desc: ClientAuthErrorMessages[openIdConfigError],\r\n },\r\n hashNotDeserialized: {\r\n code: hashNotDeserialized,\r\n desc: ClientAuthErrorMessages[hashNotDeserialized],\r\n },\r\n invalidStateError: {\r\n code: invalidState,\r\n desc: ClientAuthErrorMessages[invalidState],\r\n },\r\n stateMismatchError: {\r\n code: stateMismatch,\r\n desc: ClientAuthErrorMessages[stateMismatch],\r\n },\r\n stateNotFoundError: {\r\n code: stateNotFound,\r\n desc: ClientAuthErrorMessages[stateNotFound],\r\n },\r\n nonceMismatchError: {\r\n code: nonceMismatch,\r\n desc: ClientAuthErrorMessages[nonceMismatch],\r\n },\r\n authTimeNotFoundError: {\r\n code: authTimeNotFound,\r\n desc: ClientAuthErrorMessages[authTimeNotFound],\r\n },\r\n maxAgeTranspired: {\r\n code: maxAgeTranspired,\r\n desc: ClientAuthErrorMessages[maxAgeTranspired],\r\n },\r\n multipleMatchingTokens: {\r\n code: multipleMatchingTokens,\r\n desc: ClientAuthErrorMessages[multipleMatchingTokens],\r\n },\r\n multipleMatchingAccounts: {\r\n code: multipleMatchingAccounts,\r\n desc: ClientAuthErrorMessages[multipleMatchingAccounts],\r\n },\r\n multipleMatchingAppMetadata: {\r\n code: multipleMatchingAppMetadata,\r\n desc: ClientAuthErrorMessages[multipleMatchingAppMetadata],\r\n },\r\n tokenRequestCannotBeMade: {\r\n code: requestCannotBeMade,\r\n desc: ClientAuthErrorMessages[requestCannotBeMade],\r\n },\r\n removeEmptyScopeError: {\r\n code: cannotRemoveEmptyScope,\r\n desc: ClientAuthErrorMessages[cannotRemoveEmptyScope],\r\n },\r\n appendScopeSetError: {\r\n code: cannotAppendScopeSet,\r\n desc: ClientAuthErrorMessages[cannotAppendScopeSet],\r\n },\r\n emptyInputScopeSetError: {\r\n code: emptyInputScopeSet,\r\n desc: ClientAuthErrorMessages[emptyInputScopeSet],\r\n },\r\n DeviceCodePollingCancelled: {\r\n code: deviceCodePollingCancelled,\r\n desc: ClientAuthErrorMessages[deviceCodePollingCancelled],\r\n },\r\n DeviceCodeExpired: {\r\n code: deviceCodeExpired,\r\n desc: ClientAuthErrorMessages[deviceCodeExpired],\r\n },\r\n DeviceCodeUnknownError: {\r\n code: deviceCodeUnknownError,\r\n desc: ClientAuthErrorMessages[deviceCodeUnknownError],\r\n },\r\n NoAccountInSilentRequest: {\r\n code: noAccountInSilentRequest,\r\n desc: ClientAuthErrorMessages[noAccountInSilentRequest],\r\n },\r\n invalidCacheRecord: {\r\n code: invalidCacheRecord,\r\n desc: ClientAuthErrorMessages[invalidCacheRecord],\r\n },\r\n invalidCacheEnvironment: {\r\n code: invalidCacheEnvironment,\r\n desc: ClientAuthErrorMessages[invalidCacheEnvironment],\r\n },\r\n noAccountFound: {\r\n code: noAccountFound,\r\n desc: ClientAuthErrorMessages[noAccountFound],\r\n },\r\n noCryptoObj: {\r\n code: noCryptoObject,\r\n desc: ClientAuthErrorMessages[noCryptoObject],\r\n },\r\n unexpectedCredentialType: {\r\n code: unexpectedCredentialType,\r\n desc: ClientAuthErrorMessages[unexpectedCredentialType],\r\n },\r\n invalidAssertion: {\r\n code: invalidAssertion,\r\n desc: ClientAuthErrorMessages[invalidAssertion],\r\n },\r\n invalidClientCredential: {\r\n code: invalidClientCredential,\r\n desc: ClientAuthErrorMessages[invalidClientCredential],\r\n },\r\n tokenRefreshRequired: {\r\n code: tokenRefreshRequired,\r\n desc: ClientAuthErrorMessages[tokenRefreshRequired],\r\n },\r\n userTimeoutReached: {\r\n code: userTimeoutReached,\r\n desc: ClientAuthErrorMessages[userTimeoutReached],\r\n },\r\n tokenClaimsRequired: {\r\n code: tokenClaimsCnfRequiredForSignedJwt,\r\n desc: ClientAuthErrorMessages[tokenClaimsCnfRequiredForSignedJwt],\r\n },\r\n noAuthorizationCodeFromServer: {\r\n code: authorizationCodeMissingFromServerResponse,\r\n desc: ClientAuthErrorMessages[authorizationCodeMissingFromServerResponse],\r\n },\r\n bindingKeyNotRemovedError: {\r\n code: bindingKeyNotRemoved,\r\n desc: ClientAuthErrorMessages[bindingKeyNotRemoved],\r\n },\r\n logoutNotSupported: {\r\n code: endSessionEndpointNotSupported,\r\n desc: ClientAuthErrorMessages[endSessionEndpointNotSupported],\r\n },\r\n keyIdMissing: {\r\n code: keyIdMissing,\r\n desc: ClientAuthErrorMessages[keyIdMissing],\r\n },\r\n noNetworkConnectivity: {\r\n code: noNetworkConnectivity,\r\n desc: ClientAuthErrorMessages[noNetworkConnectivity],\r\n },\r\n userCanceledError: {\r\n code: userCanceled,\r\n desc: ClientAuthErrorMessages[userCanceled],\r\n },\r\n missingTenantIdError: {\r\n code: missingTenantIdError,\r\n desc: ClientAuthErrorMessages[missingTenantIdError],\r\n },\r\n nestedAppAuthBridgeDisabled: {\r\n code: nestedAppAuthBridgeDisabled,\r\n desc: ClientAuthErrorMessages[nestedAppAuthBridgeDisabled],\r\n },\r\n platformBrokerError: {\r\n code: platformBrokerError,\r\n desc: ClientAuthErrorMessages[platformBrokerError],\r\n },\r\n};\r\n/**\r\n * Error thrown when there is an error in the client code running on the browser.\r\n */\r\nclass ClientAuthError extends AuthError {\r\n constructor(errorCode, additionalMessage) {\r\n super(errorCode, additionalMessage\r\n ? `${ClientAuthErrorMessages[errorCode]}: ${additionalMessage}`\r\n : ClientAuthErrorMessages[errorCode]);\r\n this.name = \"ClientAuthError\";\r\n Object.setPrototypeOf(this, ClientAuthError.prototype);\r\n }\r\n}\r\nfunction createClientAuthError(errorCode, additionalMessage) {\r\n return new ClientAuthError(errorCode, additionalMessage);\r\n}\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * Extract token by decoding the rawToken\r\n *\r\n * @param encodedToken\r\n */\r\nfunction extractTokenClaims(encodedToken, base64Decode) {\r\n const jswPayload = getJWSPayload(encodedToken);\r\n // token will be decoded to get the username\r\n try {\r\n // base64Decode() should throw an error if there is an issue\r\n const base64Decoded = base64Decode(jswPayload);\r\n return JSON.parse(base64Decoded);\r\n }\r\n catch (err) {\r\n throw createClientAuthError(tokenParsingError);\r\n }\r\n}\r\n/**\r\n * Check if the signin_state claim contains \"kmsi\"\r\n * @param idTokenClaims\r\n * @returns\r\n */\r\nfunction isKmsi(idTokenClaims) {\r\n if (!idTokenClaims.signin_state) {\r\n return false;\r\n }\r\n /**\r\n * Signin_state claim known values:\r\n * dvc_mngd - device is managed\r\n * dvc_dmjd - device is domain joined\r\n * kmsi - user opted to \"keep me signed in\"\r\n * inknownntwk - Request made inside a known network. Don't use this, use CAE instead.\r\n */\r\n const kmsiClaims = [\"kmsi\", \"dvc_dmjd\"]; // There are some cases where kmsi may not be returned but persistent storage is still OK - allow dvc_dmjd as well\r\n const kmsi = idTokenClaims.signin_state.some((value) => kmsiClaims.includes(value.trim().toLowerCase()));\r\n return kmsi;\r\n}\r\n/**\r\n * decode a JWT\r\n *\r\n * @param authToken\r\n */\r\nfunction getJWSPayload(authToken) {\r\n if (!authToken) {\r\n throw createClientAuthError(nullOrEmptyToken);\r\n }\r\n const tokenPartsRegex = /^([^\\.\\s]*)\\.([^\\.\\s]+)\\.([^\\.\\s]*)$/;\r\n const matches = tokenPartsRegex.exec(authToken);\r\n if (!matches || matches.length < 4) {\r\n throw createClientAuthError(tokenParsingError);\r\n }\r\n /**\r\n * const crackedToken = {\r\n * header: matches[1],\r\n * JWSPayload: matches[2],\r\n * JWSSig: matches[3],\r\n * };\r\n */\r\n return matches[2];\r\n}\r\n/**\r\n * Determine if the token's max_age has transpired\r\n */\r\nfunction checkMaxAge(authTime, maxAge) {\r\n /*\r\n * per https://openid.net/specs/openid-connect-core-1_0.html#AuthRequest\r\n * To force an immediate re-authentication: If an app requires that a user re-authenticate prior to access,\r\n * provide a value of 0 for the max_age parameter and the AS will force a fresh login.\r\n */\r\n const fiveMinuteSkew = 300000; // five minutes in milliseconds\r\n if (maxAge === 0 || Date.now() - fiveMinuteSkew > authTime + maxAge) {\r\n throw createClientAuthError(maxAgeTranspired);\r\n }\r\n}\n\nvar AuthToken = /*#__PURE__*/Object.freeze({\n __proto__: null,\n checkMaxAge: checkMaxAge,\n extractTokenClaims: extractTokenClaims,\n getJWSPayload: getJWSPayload,\n isKmsi: isKmsi\n});\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * Authority types supported by MSAL.\r\n */\r\nconst AuthorityType = {\r\n Default: 0,\r\n Adfs: 1,\r\n Dsts: 2,\r\n Ciam: 3,\r\n};\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nfunction isOpenIdConfigResponse(response) {\r\n return (response.hasOwnProperty(\"authorization_endpoint\") &&\r\n response.hasOwnProperty(\"token_endpoint\") &&\r\n response.hasOwnProperty(\"issuer\") &&\r\n response.hasOwnProperty(\"jwks_uri\"));\r\n}\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nconst redirectUriEmpty = \"redirect_uri_empty\";\r\nconst claimsRequestParsingError = \"claims_request_parsing_error\";\r\nconst authorityUriInsecure = \"authority_uri_insecure\";\r\nconst urlParseError = \"url_parse_error\";\r\nconst urlEmptyError = \"empty_url_error\";\r\nconst emptyInputScopesError = \"empty_input_scopes_error\";\r\nconst invalidClaims = \"invalid_claims\";\r\nconst tokenRequestEmpty = \"token_request_empty\";\r\nconst logoutRequestEmpty = \"logout_request_empty\";\r\nconst invalidCodeChallengeMethod = \"invalid_code_challenge_method\";\r\nconst pkceParamsMissing = \"pkce_params_missing\";\r\nconst invalidCloudDiscoveryMetadata = \"invalid_cloud_discovery_metadata\";\r\nconst invalidAuthorityMetadata = \"invalid_authority_metadata\";\r\nconst untrustedAuthority = \"untrusted_authority\";\r\nconst missingSshJwk = \"missing_ssh_jwk\";\r\nconst missingSshKid = \"missing_ssh_kid\";\r\nconst missingNonceAuthenticationHeader = \"missing_nonce_authentication_header\";\r\nconst invalidAuthenticationHeader = \"invalid_authentication_header\";\r\nconst cannotSetOIDCOptions = \"cannot_set_OIDCOptions\";\r\nconst cannotAllowPlatformBroker = \"cannot_allow_platform_broker\";\r\nconst authorityMismatch = \"authority_mismatch\";\r\nconst invalidRequestMethodForEAR = \"invalid_request_method_for_EAR\";\r\nconst invalidAuthorizePostBodyParameters = \"invalid_authorize_post_body_parameters\";\n\nvar ClientConfigurationErrorCodes = /*#__PURE__*/Object.freeze({\n __proto__: null,\n authorityMismatch: authorityMismatch,\n authorityUriInsecure: authorityUriInsecure,\n cannotAllowPlatformBroker: cannotAllowPlatformBroker,\n cannotSetOIDCOptions: cannotSetOIDCOptions,\n claimsRequestParsingError: claimsRequestParsingError,\n emptyInputScopesError: emptyInputScopesError,\n invalidAuthenticationHeader: invalidAuthenticationHeader,\n invalidAuthorityMetadata: invalidAuthorityMetadata,\n invalidAuthorizePostBodyParameters: invalidAuthorizePostBodyParameters,\n invalidClaims: invalidClaims,\n invalidCloudDiscoveryMetadata: invalidCloudDiscoveryMetadata,\n invalidCodeChallengeMethod: invalidCodeChallengeMethod,\n invalidRequestMethodForEAR: invalidRequestMethodForEAR,\n logoutRequestEmpty: logoutRequestEmpty,\n missingNonceAuthenticationHeader: missingNonceAuthenticationHeader,\n missingSshJwk: missingSshJwk,\n missingSshKid: missingSshKid,\n pkceParamsMissing: pkceParamsMissing,\n redirectUriEmpty: redirectUriEmpty,\n tokenRequestEmpty: tokenRequestEmpty,\n untrustedAuthority: untrustedAuthority,\n urlEmptyError: urlEmptyError,\n urlParseError: urlParseError\n});\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nconst ClientConfigurationErrorMessages = {\r\n [redirectUriEmpty]: \"A redirect URI is required for all calls, and none has been set.\",\r\n [claimsRequestParsingError]: \"Could not parse the given claims request object.\",\r\n [authorityUriInsecure]: \"Authority URIs must use https. Please see here for valid authority configuration options: https://docs.microsoft.com/en-us/azure/active-directory/develop/msal-js-initializing-client-applications#configuration-options\",\r\n [urlParseError]: \"URL could not be parsed into appropriate segments.\",\r\n [urlEmptyError]: \"URL was empty or null.\",\r\n [emptyInputScopesError]: \"Scopes cannot be passed as null, undefined or empty array because they are required to obtain an access token.\",\r\n [invalidClaims]: \"Given claims parameter must be a stringified JSON object.\",\r\n [tokenRequestEmpty]: \"Token request was empty and not found in cache.\",\r\n [logoutRequestEmpty]: \"The logout request was null or undefined.\",\r\n [invalidCodeChallengeMethod]: 'code_challenge_method passed is invalid. Valid values are \"plain\" and \"S256\".',\r\n [pkceParamsMissing]: \"Both params: code_challenge and code_challenge_method are to be passed if to be sent in the request\",\r\n [invalidCloudDiscoveryMetadata]: \"Invalid cloudDiscoveryMetadata provided. Must be a stringified JSON object containing tenant_discovery_endpoint and metadata fields\",\r\n [invalidAuthorityMetadata]: \"Invalid authorityMetadata provided. Must by a stringified JSON object containing authorization_endpoint, token_endpoint, issuer fields.\",\r\n [untrustedAuthority]: \"The provided authority is not a trusted authority. Please include this authority in the knownAuthorities config parameter.\",\r\n [missingSshJwk]: \"Missing sshJwk in SSH certificate request. A stringified JSON Web Key is required when using the SSH authentication scheme.\",\r\n [missingSshKid]: \"Missing sshKid in SSH certificate request. A string that uniquely identifies the public SSH key is required when using the SSH authentication scheme.\",\r\n [missingNonceAuthenticationHeader]: \"Unable to find an authentication header containing server nonce. Either the Authentication-Info or WWW-Authenticate headers must be present in order to obtain a server nonce.\",\r\n [invalidAuthenticationHeader]: \"Invalid authentication header provided\",\r\n [cannotSetOIDCOptions]: \"Cannot set OIDCOptions parameter. Please change the protocol mode to OIDC or use a non-Microsoft authority.\",\r\n [cannotAllowPlatformBroker]: \"Cannot set allowPlatformBroker parameter to true when not in AAD protocol mode.\",\r\n [authorityMismatch]: \"Authority mismatch error. Authority provided in login request or PublicClientApplication config does not match the environment of the provided account. Please use a matching account or make an interactive request to login to this authority.\",\r\n [invalidAuthorizePostBodyParameters]: \"Invalid authorize post body parameters provided. If you are using authorizePostBodyParameters, the request method must be POST. Please check the request method and parameters.\",\r\n [invalidRequestMethodForEAR]: \"Invalid request method for EAR protocol mode. The request method cannot be GET when using EAR protocol mode. Please change the request method to POST.\",\r\n};\r\n/**\r\n * ClientConfigurationErrorMessage class containing string constants used by error codes and messages.\r\n * @deprecated Use ClientConfigurationErrorCodes instead\r\n */\r\nconst ClientConfigurationErrorMessage = {\r\n redirectUriNotSet: {\r\n code: redirectUriEmpty,\r\n desc: ClientConfigurationErrorMessages[redirectUriEmpty],\r\n },\r\n claimsRequestParsingError: {\r\n code: claimsRequestParsingError,\r\n desc: ClientConfigurationErrorMessages[claimsRequestParsingError],\r\n },\r\n authorityUriInsecure: {\r\n code: authorityUriInsecure,\r\n desc: ClientConfigurationErrorMessages[authorityUriInsecure],\r\n },\r\n urlParseError: {\r\n code: urlParseError,\r\n desc: ClientConfigurationErrorMessages[urlParseError],\r\n },\r\n urlEmptyError: {\r\n code: urlEmptyError,\r\n desc: ClientConfigurationErrorMessages[urlEmptyError],\r\n },\r\n emptyScopesError: {\r\n code: emptyInputScopesError,\r\n desc: ClientConfigurationErrorMessages[emptyInputScopesError],\r\n },\r\n invalidClaimsRequest: {\r\n code: invalidClaims,\r\n desc: ClientConfigurationErrorMessages[invalidClaims],\r\n },\r\n tokenRequestEmptyError: {\r\n code: tokenRequestEmpty,\r\n desc: ClientConfigurationErrorMessages[tokenRequestEmpty],\r\n },\r\n logoutRequestEmptyError: {\r\n code: logoutRequestEmpty,\r\n desc: ClientConfigurationErrorMessages[logoutRequestEmpty],\r\n },\r\n invalidCodeChallengeMethod: {\r\n code: invalidCodeChallengeMethod,\r\n desc: ClientConfigurationErrorMessages[invalidCodeChallengeMethod],\r\n },\r\n invalidCodeChallengeParams: {\r\n code: pkceParamsMissing,\r\n desc: ClientConfigurationErrorMessages[pkceParamsMissing],\r\n },\r\n invalidCloudDiscoveryMetadata: {\r\n code: invalidCloudDiscoveryMetadata,\r\n desc: ClientConfigurationErrorMessages[invalidCloudDiscoveryMetadata],\r\n },\r\n invalidAuthorityMetadata: {\r\n code: invalidAuthorityMetadata,\r\n desc: ClientConfigurationErrorMessages[invalidAuthorityMetadata],\r\n },\r\n untrustedAuthority: {\r\n code: untrustedAuthority,\r\n desc: ClientConfigurationErrorMessages[untrustedAuthority],\r\n },\r\n missingSshJwk: {\r\n code: missingSshJwk,\r\n desc: ClientConfigurationErrorMessages[missingSshJwk],\r\n },\r\n missingSshKid: {\r\n code: missingSshKid,\r\n desc: ClientConfigurationErrorMessages[missingSshKid],\r\n },\r\n missingNonceAuthenticationHeader: {\r\n code: missingNonceAuthenticationHeader,\r\n desc: ClientConfigurationErrorMessages[missingNonceAuthenticationHeader],\r\n },\r\n invalidAuthenticationHeader: {\r\n code: invalidAuthenticationHeader,\r\n desc: ClientConfigurationErrorMessages[invalidAuthenticationHeader],\r\n },\r\n cannotSetOIDCOptions: {\r\n code: cannotSetOIDCOptions,\r\n desc: ClientConfigurationErrorMessages[cannotSetOIDCOptions],\r\n },\r\n cannotAllowPlatformBroker: {\r\n code: cannotAllowPlatformBroker,\r\n desc: ClientConfigurationErrorMessages[cannotAllowPlatformBroker],\r\n },\r\n authorityMismatch: {\r\n code: authorityMismatch,\r\n desc: ClientConfigurationErrorMessages[authorityMismatch],\r\n },\r\n invalidAuthorizePostBodyParameters: {\r\n code: invalidAuthorizePostBodyParameters,\r\n desc: ClientConfigurationErrorMessages[invalidAuthorizePostBodyParameters],\r\n },\r\n invalidRequestMethodForEAR: {\r\n code: invalidRequestMethodForEAR,\r\n desc: ClientConfigurationErrorMessages[invalidRequestMethodForEAR],\r\n },\r\n};\r\n/**\r\n * Error thrown when there is an error in configuration of the MSAL.js library.\r\n */\r\nclass ClientConfigurationError extends AuthError {\r\n constructor(errorCode) {\r\n super(errorCode, ClientConfigurationErrorMessages[errorCode]);\r\n this.name = \"ClientConfigurationError\";\r\n Object.setPrototypeOf(this, ClientConfigurationError.prototype);\r\n }\r\n}\r\nfunction createClientConfigurationError(errorCode) {\r\n return new ClientConfigurationError(errorCode);\r\n}\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * @hidden\r\n */\r\nclass StringUtils {\r\n /**\r\n * Check if stringified object is empty\r\n * @param strObj\r\n */\r\n static isEmptyObj(strObj) {\r\n if (strObj) {\r\n try {\r\n const obj = JSON.parse(strObj);\r\n return Object.keys(obj).length === 0;\r\n }\r\n catch (e) { }\r\n }\r\n return true;\r\n }\r\n static startsWith(str, search) {\r\n return str.indexOf(search) === 0;\r\n }\r\n static endsWith(str, search) {\r\n return (str.length >= search.length &&\r\n str.lastIndexOf(search) === str.length - search.length);\r\n }\r\n /**\r\n * Parses string into an object.\r\n *\r\n * @param query\r\n */\r\n static queryStringToObject(query) {\r\n const obj = {};\r\n const params = query.split(\"&\");\r\n const decode = (s) => decodeURIComponent(s.replace(/\\+/g, \" \"));\r\n params.forEach((pair) => {\r\n if (pair.trim()) {\r\n const [key, value] = pair.split(/=(.+)/g, 2); // Split on the first occurence of the '=' character\r\n if (key && value) {\r\n obj[decode(key)] = decode(value);\r\n }\r\n }\r\n });\r\n return obj;\r\n }\r\n /**\r\n * Trims entries in an array.\r\n *\r\n * @param arr\r\n */\r\n static trimArrayEntries(arr) {\r\n return arr.map((entry) => entry.trim());\r\n }\r\n /**\r\n * Removes empty strings from array\r\n * @param arr\r\n */\r\n static removeEmptyStringsFromArray(arr) {\r\n return arr.filter((entry) => {\r\n return !!entry;\r\n });\r\n }\r\n /**\r\n * Attempts to parse a string into JSON\r\n * @param str\r\n */\r\n static jsonParseHelper(str) {\r\n try {\r\n return JSON.parse(str);\r\n }\r\n catch (e) {\r\n return null;\r\n }\r\n }\r\n /**\r\n * Tests if a given string matches a given pattern, with support for wildcards and queries.\r\n * @param pattern Wildcard pattern to string match. Supports \"*\" for wildcards and \"?\" for queries\r\n * @param input String to match against\r\n */\r\n static matchPattern(pattern, input) {\r\n /**\r\n * Wildcard support: https://stackoverflow.com/a/3117248/4888559\r\n * Queries: replaces \"?\" in string with escaped \"\\?\" for regex test\r\n */\r\n // eslint-disable-next-line security/detect-non-literal-regexp\r\n const regex = new RegExp(pattern\r\n .replace(/\\\\/g, \"\\\\\\\\\")\r\n .replace(/\\*/g, \"[^ ]*\")\r\n .replace(/\\?/g, \"\\\\?\"));\r\n return regex.test(input);\r\n }\r\n}\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * Canonicalizes a URL by making it lowercase and ensuring it ends with /\r\n * Inlined version of UrlString.canonicalizeUri to avoid circular dependency\r\n * @param url - URL to canonicalize\r\n * @returns Canonicalized URL\r\n */\r\nfunction canonicalizeUrl(url) {\r\n if (!url) {\r\n return url;\r\n }\r\n let lowerCaseUrl = url.toLowerCase();\r\n if (StringUtils.endsWith(lowerCaseUrl, \"?\")) {\r\n lowerCaseUrl = lowerCaseUrl.slice(0, -1);\r\n }\r\n else if (StringUtils.endsWith(lowerCaseUrl, \"?/\")) {\r\n lowerCaseUrl = lowerCaseUrl.slice(0, -2);\r\n }\r\n if (!StringUtils.endsWith(lowerCaseUrl, \"/\")) {\r\n lowerCaseUrl += \"/\";\r\n }\r\n return lowerCaseUrl;\r\n}\r\n/**\r\n * Parses hash string from given string. Returns empty string if no hash symbol is found.\r\n * @param hashString\r\n */\r\nfunction stripLeadingHashOrQuery(responseString) {\r\n if (responseString.startsWith(\"#/\")) {\r\n return responseString.substring(2);\r\n }\r\n else if (responseString.startsWith(\"#\") ||\r\n responseString.startsWith(\"?\")) {\r\n return responseString.substring(1);\r\n }\r\n return responseString;\r\n}\r\n/**\r\n * Returns URL hash as server auth code response object.\r\n */\r\nfunction getDeserializedResponse(responseString) {\r\n // Check if given hash is empty\r\n if (!responseString || responseString.indexOf(\"=\") < 0) {\r\n return null;\r\n }\r\n try {\r\n // Strip the # or ? symbol if present\r\n const normalizedResponse = stripLeadingHashOrQuery(responseString);\r\n // If # symbol was not present, above will return empty string, so give original hash value\r\n const deserializedHash = Object.fromEntries(new URLSearchParams(normalizedResponse));\r\n // Check for known response properties\r\n if (deserializedHash.code ||\r\n deserializedHash.ear_jwe ||\r\n deserializedHash.error ||\r\n deserializedHash.error_description ||\r\n deserializedHash.state) {\r\n return deserializedHash;\r\n }\r\n }\r\n catch (e) {\r\n throw createClientAuthError(hashNotDeserialized);\r\n }\r\n return null;\r\n}\r\n/**\r\n * Utility to create a URL from the params map\r\n */\r\nfunction mapToQueryString(parameters, encodeExtraParams = true, extraQueryParameters) {\r\n const queryParameterArray = new Array();\r\n parameters.forEach((value, key) => {\r\n if (!encodeExtraParams &&\r\n extraQueryParameters &&\r\n key in extraQueryParameters) {\r\n queryParameterArray.push(`${key}=${value}`);\r\n }\r\n else {\r\n queryParameterArray.push(`${key}=${encodeURIComponent(value)}`);\r\n }\r\n });\r\n return queryParameterArray.join(\"&\");\r\n}\r\n/**\r\n * Normalizes URLs for comparison by removing hash, canonicalizing,\r\n * and ensuring consistent URL encoding in query parameters.\r\n * This fixes redirect loops when URLs contain encoded characters like apostrophes (%27).\r\n * @param url - URL to normalize\r\n * @returns Normalized URL string for comparison\r\n */\r\nfunction normalizeUrlForComparison(url) {\r\n if (!url) {\r\n return url;\r\n }\r\n // Remove hash first\r\n const urlWithoutHash = url.split(\"#\")[0];\r\n try {\r\n // Parse the URL to handle encoding consistently\r\n const urlObj = new URL(urlWithoutHash);\r\n /*\r\n * Reconstruct the URL with properly decoded query parameters\r\n * This ensures that %27 and ' are treated as equivalent\r\n */\r\n const normalizedUrl = urlObj.origin + urlObj.pathname + urlObj.search;\r\n // Apply canonicalization logic inline to avoid circular dependency\r\n return canonicalizeUrl(normalizedUrl);\r\n }\r\n catch (e) {\r\n // Fallback to original logic if URL parsing fails\r\n return canonicalizeUrl(urlWithoutHash);\r\n }\r\n}\n\nvar UrlUtils = /*#__PURE__*/Object.freeze({\n __proto__: null,\n getDeserializedResponse: getDeserializedResponse,\n mapToQueryString: mapToQueryString,\n normalizeUrlForComparison: normalizeUrlForComparison,\n stripLeadingHashOrQuery: stripLeadingHashOrQuery\n});\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * Url object class which can perform various transformations on url strings.\r\n */\r\nclass UrlString {\r\n get urlString() {\r\n return this._urlString;\r\n }\r\n constructor(url) {\r\n this._urlString = url;\r\n if (!this._urlString) {\r\n // Throws error if url is empty\r\n throw createClientConfigurationError(urlEmptyError);\r\n }\r\n if (!url.includes(\"#\")) {\r\n this._urlString = UrlString.canonicalizeUri(url);\r\n }\r\n }\r\n /**\r\n * Ensure urls are lower case and end with a / character.\r\n * @param url\r\n */\r\n static canonicalizeUri(url) {\r\n if (url) {\r\n let lowerCaseUrl = url.toLowerCase();\r\n if (StringUtils.endsWith(lowerCaseUrl, \"?\")) {\r\n lowerCaseUrl = lowerCaseUrl.slice(0, -1);\r\n }\r\n else if (StringUtils.endsWith(lowerCaseUrl, \"?/\")) {\r\n lowerCaseUrl = lowerCaseUrl.slice(0, -2);\r\n }\r\n if (!StringUtils.endsWith(lowerCaseUrl, \"/\")) {\r\n lowerCaseUrl += \"/\";\r\n }\r\n return lowerCaseUrl;\r\n }\r\n return url;\r\n }\r\n /**\r\n * Throws if urlString passed is not a valid authority URI string.\r\n */\r\n validateAsUri() {\r\n // Attempts to parse url for uri components\r\n let components;\r\n try {\r\n components = this.getUrlComponents();\r\n }\r\n catch (e) {\r\n throw createClientConfigurationError(urlParseError);\r\n }\r\n // Throw error if URI or path segments are not parseable.\r\n if (!components.HostNameAndPort || !components.PathSegments) {\r\n throw createClientConfigurationError(urlParseError);\r\n }\r\n // Throw error if uri is insecure.\r\n if (!components.Protocol ||\r\n components.Protocol.toLowerCase() !== \"https:\") {\r\n throw createClientConfigurationError(authorityUriInsecure);\r\n }\r\n }\r\n /**\r\n * Given a url and a query string return the url with provided query string appended\r\n * @param url\r\n * @param queryString\r\n */\r\n static appendQueryString(url, queryString) {\r\n if (!queryString) {\r\n return url;\r\n }\r\n return url.indexOf(\"?\") < 0\r\n ? `${url}?${queryString}`\r\n : `${url}&${queryString}`;\r\n }\r\n /**\r\n * Returns a url with the hash removed\r\n * @param url\r\n */\r\n static removeHashFromUrl(url) {\r\n return UrlString.canonicalizeUri(url.split(\"#\")[0]);\r\n }\r\n /**\r\n * Given a url like https://a:b/common/d?e=f#g, and a tenantId, returns https://a:b/tenantId/d\r\n * @param href The url\r\n * @param tenantId The tenant id to replace\r\n */\r\n replaceTenantPath(tenantId) {\r\n const urlObject = this.getUrlComponents();\r\n const pathArray = urlObject.PathSegments;\r\n if (tenantId &&\r\n pathArray.length !== 0 &&\r\n (pathArray[0] === AADAuthorityConstants.COMMON ||\r\n pathArray[0] === AADAuthorityConstants.ORGANIZATIONS)) {\r\n pathArray[0] = tenantId;\r\n }\r\n return UrlString.constructAuthorityUriFromObject(urlObject);\r\n }\r\n /**\r\n * Parses out the components from a url string.\r\n * @returns An object with the various components. Please cache this value insted of calling this multiple times on the same url.\r\n */\r\n getUrlComponents() {\r\n // https://gist.github.com/curtisz/11139b2cfcaef4a261e0\r\n const regEx = RegExp(\"^(([^:/?#]+):)?(//([^/?#]*))?([^?#]*)(\\\\?([^#]*))?(#(.*))?\");\r\n // If url string does not match regEx, we throw an error\r\n const match = this.urlString.match(regEx);\r\n if (!match) {\r\n throw createClientConfigurationError(urlParseError);\r\n }\r\n // Url component object\r\n const urlComponents = {\r\n Protocol: match[1],\r\n HostNameAndPort: match[4],\r\n AbsolutePath: match[5],\r\n QueryString: match[7],\r\n };\r\n let pathSegments = urlComponents.AbsolutePath.split(\"/\");\r\n pathSegments = pathSegments.filter((val) => val && val.length > 0); // remove empty elements\r\n urlComponents.PathSegments = pathSegments;\r\n if (urlComponents.QueryString &&\r\n urlComponents.QueryString.endsWith(\"/\")) {\r\n urlComponents.QueryString = urlComponents.QueryString.substring(0, urlComponents.QueryString.length - 1);\r\n }\r\n return urlComponents;\r\n }\r\n static getDomainFromUrl(url) {\r\n const regEx = RegExp(\"^([^:/?#]+://)?([^/?#]*)\");\r\n const match = url.match(regEx);\r\n if (!match) {\r\n throw createClientConfigurationError(urlParseError);\r\n }\r\n return match[2];\r\n }\r\n static getAbsoluteUrl(relativeUrl, baseUrl) {\r\n if (relativeUrl[0] === Constants.FORWARD_SLASH) {\r\n const url = new UrlString(baseUrl);\r\n const baseComponents = url.getUrlComponents();\r\n return (baseComponents.Protocol +\r\n \"//\" +\r\n baseComponents.HostNameAndPort +\r\n relativeUrl);\r\n }\r\n return relativeUrl;\r\n }\r\n static constructAuthorityUriFromObject(urlObject) {\r\n return new UrlString(urlObject.Protocol +\r\n \"//\" +\r\n urlObject.HostNameAndPort +\r\n \"/\" +\r\n urlObject.PathSegments.join(\"/\"));\r\n }\r\n /**\r\n * Check if the hash of the URL string contains known properties\r\n * @deprecated This API will be removed in a future version\r\n */\r\n static hashContainsKnownProperties(response) {\r\n return !!getDeserializedResponse(response);\r\n }\r\n}\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nconst rawMetdataJSON = {\r\n endpointMetadata: {\r\n \"login.microsoftonline.com\": {\r\n token_endpoint: \"https://login.microsoftonline.com/{tenantid}/oauth2/v2.0/token\",\r\n jwks_uri: \"https://login.microsoftonline.com/{tenantid}/discovery/v2.0/keys\",\r\n issuer: \"https://login.microsoftonline.com/{tenantid}/v2.0\",\r\n authorization_endpoint: \"https://login.microsoftonline.com/{tenantid}/oauth2/v2.0/authorize\",\r\n end_session_endpoint: \"https://login.microsoftonline.com/{tenantid}/oauth2/v2.0/logout\",\r\n },\r\n \"login.chinacloudapi.cn\": {\r\n token_endpoint: \"https://login.chinacloudapi.cn/{tenantid}/oauth2/v2.0/token\",\r\n jwks_uri: \"https://login.chinacloudapi.cn/{tenantid}/discovery/v2.0/keys\",\r\n issuer: \"https://login.partner.microsoftonline.cn/{tenantid}/v2.0\",\r\n authorization_endpoint: \"https://login.chinacloudapi.cn/{tenantid}/oauth2/v2.0/authorize\",\r\n end_session_endpoint: \"https://login.chinacloudapi.cn/{tenantid}/oauth2/v2.0/logout\",\r\n },\r\n \"login.microsoftonline.us\": {\r\n token_endpoint: \"https://login.microsoftonline.us/{tenantid}/oauth2/v2.0/token\",\r\n jwks_uri: \"https://login.microsoftonline.us/{tenantid}/discovery/v2.0/keys\",\r\n issuer: \"https://login.microsoftonline.us/{tenantid}/v2.0\",\r\n authorization_endpoint: \"https://login.microsoftonline.us/{tenantid}/oauth2/v2.0/authorize\",\r\n end_session_endpoint: \"https://login.microsoftonline.us/{tenantid}/oauth2/v2.0/logout\",\r\n },\r\n },\r\n instanceDiscoveryMetadata: {\r\n metadata: [\r\n {\r\n preferred_network: \"login.microsoftonline.com\",\r\n preferred_cache: \"login.windows.net\",\r\n aliases: [\r\n \"login.microsoftonline.com\",\r\n \"login.windows.net\",\r\n \"login.microsoft.com\",\r\n \"sts.windows.net\",\r\n ],\r\n },\r\n {\r\n preferred_network: \"login.partner.microsoftonline.cn\",\r\n preferred_cache: \"login.partner.microsoftonline.cn\",\r\n aliases: [\r\n \"login.partner.microsoftonline.cn\",\r\n \"login.chinacloudapi.cn\",\r\n ],\r\n },\r\n {\r\n preferred_network: \"login.microsoftonline.de\",\r\n preferred_cache: \"login.microsoftonline.de\",\r\n aliases: [\"login.microsoftonline.de\"],\r\n },\r\n {\r\n preferred_network: \"login.microsoftonline.us\",\r\n preferred_cache: \"login.microsoftonline.us\",\r\n aliases: [\r\n \"login.microsoftonline.us\",\r\n \"login.usgovcloudapi.net\",\r\n ],\r\n },\r\n {\r\n preferred_network: \"login-us.microsoftonline.com\",\r\n preferred_cache: \"login-us.microsoftonline.com\",\r\n aliases: [\"login-us.microsoftonline.com\"],\r\n },\r\n ],\r\n },\r\n};\r\nconst EndpointMetadata = rawMetdataJSON.endpointMetadata;\r\nconst InstanceDiscoveryMetadata = rawMetdataJSON.instanceDiscoveryMetadata;\r\nconst InstanceDiscoveryMetadataAliases = new Set();\r\nInstanceDiscoveryMetadata.metadata.forEach((metadataEntry) => {\r\n metadataEntry.aliases.forEach((alias) => {\r\n InstanceDiscoveryMetadataAliases.add(alias);\r\n });\r\n});\r\n/**\r\n * Attempts to get an aliases array from the static authority metadata sources based on the canonical authority host\r\n * @param staticAuthorityOptions\r\n * @param logger\r\n * @returns\r\n */\r\nfunction getAliasesFromStaticSources(staticAuthorityOptions, logger) {\r\n let staticAliases;\r\n const canonicalAuthority = staticAuthorityOptions.canonicalAuthority;\r\n if (canonicalAuthority) {\r\n const authorityHost = new UrlString(canonicalAuthority).getUrlComponents().HostNameAndPort;\r\n staticAliases =\r\n getAliasesFromMetadata(authorityHost, staticAuthorityOptions.cloudDiscoveryMetadata?.metadata, AuthorityMetadataSource.CONFIG, logger) ||\r\n getAliasesFromMetadata(authorityHost, InstanceDiscoveryMetadata.metadata, AuthorityMetadataSource.HARDCODED_VALUES, logger) ||\r\n staticAuthorityOptions.knownAuthorities;\r\n }\r\n return staticAliases || [];\r\n}\r\n/**\r\n * Returns aliases for from the raw cloud discovery metadata passed in\r\n * @param authorityHost\r\n * @param rawCloudDiscoveryMetadata\r\n * @returns\r\n */\r\nfunction getAliasesFromMetadata(authorityHost, cloudDiscoveryMetadata, source, logger) {\r\n logger?.trace(`getAliasesFromMetadata called with source: ${source}`);\r\n if (authorityHost && cloudDiscoveryMetadata) {\r\n const metadata = getCloudDiscoveryMetadataFromNetworkResponse(cloudDiscoveryMetadata, authorityHost);\r\n if (metadata) {\r\n logger?.trace(`getAliasesFromMetadata: found cloud discovery metadata in ${source}, returning aliases`);\r\n return metadata.aliases;\r\n }\r\n else {\r\n logger?.trace(`getAliasesFromMetadata: did not find cloud discovery metadata in ${source}`);\r\n }\r\n }\r\n return null;\r\n}\r\n/**\r\n * Get cloud discovery metadata for common authorities\r\n */\r\nfunction getCloudDiscoveryMetadataFromHardcodedValues(authorityHost) {\r\n const metadata = getCloudDiscoveryMetadataFromNetworkResponse(InstanceDiscoveryMetadata.metadata, authorityHost);\r\n return metadata;\r\n}\r\n/**\r\n * Searches instance discovery network response for the entry that contains the host in the aliases list\r\n * @param response\r\n * @param authority\r\n */\r\nfunction getCloudDiscoveryMetadataFromNetworkResponse(response, authorityHost) {\r\n for (let i = 0; i < response.length; i++) {\r\n const metadata = response[i];\r\n if (metadata.aliases.includes(authorityHost)) {\r\n return metadata;\r\n }\r\n }\r\n return null;\r\n}\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * Protocol modes supported by MSAL.\r\n */\r\nconst ProtocolMode = {\r\n /**\r\n * Auth Code + PKCE with Entra ID (formerly AAD) specific optimizations and features\r\n */\r\n AAD: \"AAD\",\r\n /**\r\n * Auth Code + PKCE without Entra ID specific optimizations and features. For use only with non-Microsoft owned authorities.\r\n * Support is limited for this mode.\r\n */\r\n OIDC: \"OIDC\",\r\n /**\r\n * Encrypted Authorize Response (EAR) with Entra ID specific optimizations and features\r\n */\r\n EAR: \"EAR\",\r\n};\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nconst AzureCloudInstance = {\r\n // AzureCloudInstance is not specified.\r\n None: \"none\",\r\n // Microsoft Azure public cloud\r\n AzurePublic: \"https://login.microsoftonline.com\",\r\n // Microsoft PPE\r\n AzurePpe: \"https://login.windows-ppe.net\",\r\n // Microsoft Chinese national/regional cloud\r\n AzureChina: \"https://login.chinacloudapi.cn\",\r\n // Microsoft German national/regional cloud (\"Black Forest\")\r\n AzureGermany: \"https://login.microsoftonline.de\",\r\n // US Government cloud\r\n AzureUsGovernment: \"https://login.microsoftonline.us\",\r\n};\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nfunction isCloudInstanceDiscoveryResponse(response) {\r\n return (response.hasOwnProperty(\"tenant_discovery_endpoint\") &&\r\n response.hasOwnProperty(\"metadata\"));\r\n}\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nfunction isCloudInstanceDiscoveryErrorResponse(response) {\r\n return (response.hasOwnProperty(\"error\") &&\r\n response.hasOwnProperty(\"error_description\"));\r\n}\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * Enumeration of operations that are instrumented by have their performance measured by the PerformanceClient.\r\n *\r\n * @export\r\n * @enum {number}\r\n */\r\nconst PerformanceEvents = {\r\n /**\r\n * acquireTokenByCode API (msal-browser and msal-node).\r\n * Used to acquire tokens by trading an authorization code against the token endpoint.\r\n */\r\n AcquireTokenByCode: \"acquireTokenByCode\",\r\n /**\r\n * acquireTokenByRefreshToken API (msal-browser and msal-node).\r\n * Used to renew an access token using a refresh token against the token endpoint.\r\n */\r\n AcquireTokenByRefreshToken: \"acquireTokenByRefreshToken\",\r\n /**\r\n * acquireTokenSilent API (msal-browser and msal-node).\r\n * Used to silently acquire a new access token (from the cache or the network).\r\n */\r\n AcquireTokenSilent: \"acquireTokenSilent\",\r\n /**\r\n * acquireTokenSilentAsync (msal-browser).\r\n * Internal API for acquireTokenSilent.\r\n */\r\n AcquireTokenSilentAsync: \"acquireTokenSilentAsync\",\r\n /**\r\n * acquireTokenPopup (msal-browser).\r\n * Used to acquire a new access token interactively through pop ups\r\n */\r\n AcquireTokenPopup: \"acquireTokenPopup\",\r\n /**\r\n * acquireTokenPreRedirect (msal-browser).\r\n * First part of the redirect flow.\r\n * Used to acquire a new access token interactively through redirects.\r\n */\r\n AcquireTokenPreRedirect: \"acquireTokenPreRedirect\",\r\n /**\r\n * acquireTokenRedirect (msal-browser).\r\n * Second part of the redirect flow.\r\n * Used to acquire a new access token interactively through redirects.\r\n */\r\n AcquireTokenRedirect: \"acquireTokenRedirect\",\r\n /**\r\n * getPublicKeyThumbprint API in CryptoOpts class (msal-browser).\r\n * Used to generate a public/private keypair and generate a public key thumbprint for pop requests.\r\n */\r\n CryptoOptsGetPublicKeyThumbprint: \"cryptoOptsGetPublicKeyThumbprint\",\r\n /**\r\n * signJwt API in CryptoOpts class (msal-browser).\r\n * Used to signed a pop token.\r\n */\r\n CryptoOptsSignJwt: \"cryptoOptsSignJwt\",\r\n /**\r\n * acquireToken API in the SilentCacheClient class (msal-browser).\r\n * Used to read access tokens from the cache.\r\n */\r\n SilentCacheClientAcquireToken: \"silentCacheClientAcquireToken\",\r\n /**\r\n * acquireToken API in the SilentIframeClient class (msal-browser).\r\n * Used to acquire a new set of tokens from the authorize endpoint in a hidden iframe.\r\n */\r\n SilentIframeClientAcquireToken: \"silentIframeClientAcquireToken\",\r\n AwaitConcurrentIframe: \"awaitConcurrentIframe\",\r\n /**\r\n * acquireToken API in SilentRereshClient (msal-browser).\r\n * Used to acquire a new set of tokens from the token endpoint using a refresh token.\r\n */\r\n SilentRefreshClientAcquireToken: \"silentRefreshClientAcquireToken\",\r\n /**\r\n * ssoSilent API (msal-browser).\r\n * Used to silently acquire an authorization code and set of tokens using a hidden iframe.\r\n */\r\n SsoSilent: \"ssoSilent\",\r\n /**\r\n * getDiscoveredAuthority API in StandardInteractionClient class (msal-browser).\r\n * Used to load authority metadata for a request.\r\n */\r\n StandardInteractionClientGetDiscoveredAuthority: \"standardInteractionClientGetDiscoveredAuthority\",\r\n /**\r\n * acquireToken APIs in msal-browser.\r\n * Used to make an /authorize endpoint call with native brokering enabled.\r\n */\r\n FetchAccountIdWithNativeBroker: \"fetchAccountIdWithNativeBroker\",\r\n /**\r\n * acquireToken API in NativeInteractionClient class (msal-browser).\r\n * Used to acquire a token from Native component when native brokering is enabled.\r\n */\r\n NativeInteractionClientAcquireToken: \"nativeInteractionClientAcquireToken\",\r\n /**\r\n * Time spent creating default headers for requests to token endpoint\r\n */\r\n BaseClientCreateTokenRequestHeaders: \"baseClientCreateTokenRequestHeaders\",\r\n /**\r\n * Time spent sending/waiting for the response of a request to the token endpoint\r\n */\r\n NetworkClientSendPostRequestAsync: \"networkClientSendPostRequestAsync\",\r\n RefreshTokenClientExecutePostToTokenEndpoint: \"refreshTokenClientExecutePostToTokenEndpoint\",\r\n AuthorizationCodeClientExecutePostToTokenEndpoint: \"authorizationCodeClientExecutePostToTokenEndpoint\",\r\n /**\r\n * Used to measure the time taken for completing embedded-broker handshake (PW-Broker).\r\n */\r\n BrokerHandhshake: \"brokerHandshake\",\r\n /**\r\n * acquireTokenByRefreshToken API in BrokerClientApplication (PW-Broker) .\r\n */\r\n AcquireTokenByRefreshTokenInBroker: \"acquireTokenByRefreshTokenInBroker\",\r\n /**\r\n * Time taken for token acquisition by broker\r\n */\r\n AcquireTokenByBroker: \"acquireTokenByBroker\",\r\n /**\r\n * Time spent on the network for refresh token acquisition\r\n */\r\n RefreshTokenClientExecuteTokenRequest: \"refreshTokenClientExecuteTokenRequest\",\r\n /**\r\n * Time taken for acquiring refresh token , records RT size\r\n */\r\n RefreshTokenClientAcquireToken: \"refreshTokenClientAcquireToken\",\r\n /**\r\n * Time taken for acquiring cached refresh token\r\n */\r\n RefreshTokenClientAcquireTokenWithCachedRefreshToken: \"refreshTokenClientAcquireTokenWithCachedRefreshToken\",\r\n /**\r\n * acquireTokenByRefreshToken API in RefreshTokenClient (msal-common).\r\n */\r\n RefreshTokenClientAcquireTokenByRefreshToken: \"refreshTokenClientAcquireTokenByRefreshToken\",\r\n /**\r\n * Helper function to create token request body in RefreshTokenClient (msal-common).\r\n */\r\n RefreshTokenClientCreateTokenRequestBody: \"refreshTokenClientCreateTokenRequestBody\",\r\n /**\r\n * acquireTokenFromCache (msal-browser).\r\n * Internal API for acquiring token from cache\r\n */\r\n AcquireTokenFromCache: \"acquireTokenFromCache\",\r\n SilentFlowClientAcquireCachedToken: \"silentFlowClientAcquireCachedToken\",\r\n SilentFlowClientGenerateResultFromCacheRecord: \"silentFlowClientGenerateResultFromCacheRecord\",\r\n /**\r\n * acquireTokenBySilentIframe (msal-browser).\r\n * Internal API for acquiring token by silent Iframe\r\n */\r\n AcquireTokenBySilentIframe: \"acquireTokenBySilentIframe\",\r\n /**\r\n * Internal API for initializing base request in BaseInteractionClient (msal-browser)\r\n */\r\n InitializeBaseRequest: \"initializeBaseRequest\",\r\n /**\r\n * Internal API for initializing silent request in SilentCacheClient (msal-browser)\r\n */\r\n InitializeSilentRequest: \"initializeSilentRequest\",\r\n InitializeClientApplication: \"initializeClientApplication\",\r\n InitializeCache: \"initializeCache\",\r\n /**\r\n * Helper function in SilentIframeClient class (msal-browser).\r\n */\r\n SilentIframeClientTokenHelper: \"silentIframeClientTokenHelper\",\r\n /**\r\n * SilentHandler\r\n */\r\n SilentHandlerInitiateAuthRequest: \"silentHandlerInitiateAuthRequest\",\r\n SilentHandlerMonitorIframeForHash: \"silentHandlerMonitorIframeForHash\",\r\n SilentHandlerLoadFrame: \"silentHandlerLoadFrame\",\r\n SilentHandlerLoadFrameSync: \"silentHandlerLoadFrameSync\",\r\n /**\r\n * Helper functions in StandardInteractionClient class (msal-browser)\r\n */\r\n StandardInteractionClientCreateAuthCodeClient: \"standardInteractionClientCreateAuthCodeClient\",\r\n StandardInteractionClientGetClientConfiguration: \"standardInteractionClientGetClientConfiguration\",\r\n StandardInteractionClientInitializeAuthorizationRequest: \"standardInteractionClientInitializeAuthorizationRequest\",\r\n /**\r\n * getAuthCodeUrl API (msal-browser and msal-node).\r\n */\r\n GetAuthCodeUrl: \"getAuthCodeUrl\",\r\n GetStandardParams: \"getStandardParams\",\r\n /**\r\n * Functions from InteractionHandler (msal-browser)\r\n */\r\n HandleCodeResponseFromServer: \"handleCodeResponseFromServer\",\r\n HandleCodeResponse: \"handleCodeResponse\",\r\n HandleResponseEar: \"handleResponseEar\",\r\n HandleResponsePlatformBroker: \"handleResponsePlatformBroker\",\r\n HandleResponseCode: \"handleResponseCode\",\r\n UpdateTokenEndpointAuthority: \"updateTokenEndpointAuthority\",\r\n /**\r\n * APIs in Authorization Code Client (msal-common)\r\n */\r\n AuthClientAcquireToken: \"authClientAcquireToken\",\r\n AuthClientExecuteTokenRequest: \"authClientExecuteTokenRequest\",\r\n AuthClientCreateTokenRequestBody: \"authClientCreateTokenRequestBody\",\r\n /**\r\n * Generate functions in PopTokenGenerator (msal-common)\r\n */\r\n PopTokenGenerateCnf: \"popTokenGenerateCnf\",\r\n PopTokenGenerateKid: \"popTokenGenerateKid\",\r\n /**\r\n * handleServerTokenResponse API in ResponseHandler (msal-common)\r\n */\r\n HandleServerTokenResponse: \"handleServerTokenResponse\",\r\n DeserializeResponse: \"deserializeResponse\",\r\n /**\r\n * Authority functions\r\n */\r\n AuthorityFactoryCreateDiscoveredInstance: \"authorityFactoryCreateDiscoveredInstance\",\r\n AuthorityResolveEndpointsAsync: \"authorityResolveEndpointsAsync\",\r\n AuthorityResolveEndpointsFromLocalSources: \"authorityResolveEndpointsFromLocalSources\",\r\n AuthorityGetCloudDiscoveryMetadataFromNetwork: \"authorityGetCloudDiscoveryMetadataFromNetwork\",\r\n AuthorityUpdateCloudDiscoveryMetadata: \"authorityUpdateCloudDiscoveryMetadata\",\r\n AuthorityGetEndpointMetadataFromNetwork: \"authorityGetEndpointMetadataFromNetwork\",\r\n AuthorityUpdateEndpointMetadata: \"authorityUpdateEndpointMetadata\",\r\n AuthorityUpdateMetadataWithRegionalInformation: \"authorityUpdateMetadataWithRegionalInformation\",\r\n /**\r\n * Region Discovery functions\r\n */\r\n RegionDiscoveryDetectRegion: \"regionDiscoveryDetectRegion\",\r\n RegionDiscoveryGetRegionFromIMDS: \"regionDiscoveryGetRegionFromIMDS\",\r\n RegionDiscoveryGetCurrentVersion: \"regionDiscoveryGetCurrentVersion\",\r\n AcquireTokenByCodeAsync: \"acquireTokenByCodeAsync\",\r\n GetEndpointMetadataFromNetwork: \"getEndpointMetadataFromNetwork\",\r\n GetCloudDiscoveryMetadataFromNetworkMeasurement: \"getCloudDiscoveryMetadataFromNetworkMeasurement\",\r\n HandleRedirectPromiseMeasurement: \"handleRedirectPromise\",\r\n HandleNativeRedirectPromiseMeasurement: \"handleNativeRedirectPromise\",\r\n UpdateCloudDiscoveryMetadataMeasurement: \"updateCloudDiscoveryMetadataMeasurement\",\r\n UsernamePasswordClientAcquireToken: \"usernamePasswordClientAcquireToken\",\r\n NativeMessageHandlerHandshake: \"nativeMessageHandlerHandshake\",\r\n NativeGenerateAuthResult: \"nativeGenerateAuthResult\",\r\n RemoveHiddenIframe: \"removeHiddenIframe\",\r\n /**\r\n * Cache operations\r\n */\r\n ClearTokensAndKeysWithClaims: \"clearTokensAndKeysWithClaims\",\r\n CacheManagerGetRefreshToken: \"cacheManagerGetRefreshToken\",\r\n ImportExistingCache: \"importExistingCache\",\r\n SetUserData: \"setUserData\",\r\n LocalStorageUpdated: \"localStorageUpdated\",\r\n /**\r\n * Crypto Operations\r\n */\r\n GeneratePkceCodes: \"generatePkceCodes\",\r\n GenerateCodeVerifier: \"generateCodeVerifier\",\r\n GenerateCodeChallengeFromVerifier: \"generateCodeChallengeFromVerifier\",\r\n Sha256Digest: \"sha256Digest\",\r\n GetRandomValues: \"getRandomValues\",\r\n GenerateHKDF: \"generateHKDF\",\r\n GenerateBaseKey: \"generateBaseKey\",\r\n Base64Decode: \"base64Decode\",\r\n UrlEncodeArr: \"urlEncodeArr\",\r\n Encrypt: \"encrypt\",\r\n Decrypt: \"decrypt\",\r\n GenerateEarKey: \"generateEarKey\",\r\n DecryptEarResponse: \"decryptEarResponse\",\r\n};\r\nconst PerformanceEventAbbreviations = new Map([\r\n [PerformanceEvents.AcquireTokenByCode, \"ATByCode\"],\r\n [PerformanceEvents.AcquireTokenByRefreshToken, \"ATByRT\"],\r\n [PerformanceEvents.AcquireTokenSilent, \"ATS\"],\r\n [PerformanceEvents.AcquireTokenSilentAsync, \"ATSAsync\"],\r\n [PerformanceEvents.AcquireTokenPopup, \"ATPopup\"],\r\n [PerformanceEvents.AcquireTokenRedirect, \"ATRedirect\"],\r\n [\r\n PerformanceEvents.CryptoOptsGetPublicKeyThumbprint,\r\n \"CryptoGetPKThumb\",\r\n ],\r\n [PerformanceEvents.CryptoOptsSignJwt, \"CryptoSignJwt\"],\r\n [PerformanceEvents.SilentCacheClientAcquireToken, \"SltCacheClientAT\"],\r\n [PerformanceEvents.SilentIframeClientAcquireToken, \"SltIframeClientAT\"],\r\n [PerformanceEvents.SilentRefreshClientAcquireToken, \"SltRClientAT\"],\r\n [PerformanceEvents.SsoSilent, \"SsoSlt\"],\r\n [\r\n PerformanceEvents.StandardInteractionClientGetDiscoveredAuthority,\r\n \"StdIntClientGetDiscAuth\",\r\n ],\r\n [\r\n PerformanceEvents.FetchAccountIdWithNativeBroker,\r\n \"FetchAccIdWithNtvBroker\",\r\n ],\r\n [\r\n PerformanceEvents.NativeInteractionClientAcquireToken,\r\n \"NtvIntClientAT\",\r\n ],\r\n [\r\n PerformanceEvents.BaseClientCreateTokenRequestHeaders,\r\n \"BaseClientCreateTReqHead\",\r\n ],\r\n [\r\n PerformanceEvents.NetworkClientSendPostRequestAsync,\r\n \"NetClientSendPost\",\r\n ],\r\n [\r\n PerformanceEvents.RefreshTokenClientExecutePostToTokenEndpoint,\r\n \"RTClientExecPost\",\r\n ],\r\n [\r\n PerformanceEvents.AuthorizationCodeClientExecutePostToTokenEndpoint,\r\n \"AuthCodeClientExecPost\",\r\n ],\r\n [PerformanceEvents.BrokerHandhshake, \"BrokerHandshake\"],\r\n [\r\n PerformanceEvents.AcquireTokenByRefreshTokenInBroker,\r\n \"ATByRTInBroker\",\r\n ],\r\n [PerformanceEvents.AcquireTokenByBroker, \"ATByBroker\"],\r\n [\r\n PerformanceEvents.RefreshTokenClientExecuteTokenRequest,\r\n \"RTClientExecTReq\",\r\n ],\r\n [PerformanceEvents.RefreshTokenClientAcquireToken, \"RTClientAT\"],\r\n [\r\n PerformanceEvents.RefreshTokenClientAcquireTokenWithCachedRefreshToken,\r\n \"RTClientATWithCachedRT\",\r\n ],\r\n [\r\n PerformanceEvents.RefreshTokenClientAcquireTokenByRefreshToken,\r\n \"RTClientATByRT\",\r\n ],\r\n [\r\n PerformanceEvents.RefreshTokenClientCreateTokenRequestBody,\r\n \"RTClientCreateTReqBody\",\r\n ],\r\n [PerformanceEvents.AcquireTokenFromCache, \"ATFromCache\"],\r\n [\r\n PerformanceEvents.SilentFlowClientAcquireCachedToken,\r\n \"SltFlowClientATCached\",\r\n ],\r\n [\r\n PerformanceEvents.SilentFlowClientGenerateResultFromCacheRecord,\r\n \"SltFlowClientGenResFromCache\",\r\n ],\r\n [PerformanceEvents.AcquireTokenBySilentIframe, \"ATBySltIframe\"],\r\n [PerformanceEvents.InitializeBaseRequest, \"InitBaseReq\"],\r\n [PerformanceEvents.InitializeSilentRequest, \"InitSltReq\"],\r\n [\r\n PerformanceEvents.InitializeClientApplication,\r\n \"InitClientApplication\",\r\n ],\r\n [PerformanceEvents.InitializeCache, \"InitCache\"],\r\n [PerformanceEvents.ImportExistingCache, \"importCache\"],\r\n [PerformanceEvents.SetUserData, \"setUserData\"],\r\n [PerformanceEvents.LocalStorageUpdated, \"localStorageUpdated\"],\r\n [PerformanceEvents.SilentIframeClientTokenHelper, \"SIClientTHelper\"],\r\n [\r\n PerformanceEvents.SilentHandlerInitiateAuthRequest,\r\n \"SHandlerInitAuthReq\",\r\n ],\r\n [\r\n PerformanceEvents.SilentHandlerMonitorIframeForHash,\r\n \"SltHandlerMonitorIframeForHash\",\r\n ],\r\n [PerformanceEvents.SilentHandlerLoadFrame, \"SHandlerLoadFrame\"],\r\n [PerformanceEvents.SilentHandlerLoadFrameSync, \"SHandlerLoadFrameSync\"],\r\n [\r\n PerformanceEvents.StandardInteractionClientCreateAuthCodeClient,\r\n \"StdIntClientCreateAuthCodeClient\",\r\n ],\r\n [\r\n PerformanceEvents.StandardInteractionClientGetClientConfiguration,\r\n \"StdIntClientGetClientConf\",\r\n ],\r\n [\r\n PerformanceEvents.StandardInteractionClientInitializeAuthorizationRequest,\r\n \"StdIntClientInitAuthReq\",\r\n ],\r\n [PerformanceEvents.GetAuthCodeUrl, \"GetAuthCodeUrl\"],\r\n [\r\n PerformanceEvents.HandleCodeResponseFromServer,\r\n \"HandleCodeResFromServer\",\r\n ],\r\n [PerformanceEvents.HandleCodeResponse, \"HandleCodeResp\"],\r\n [PerformanceEvents.HandleResponseEar, \"HandleRespEar\"],\r\n [PerformanceEvents.HandleResponseCode, \"HandleRespCode\"],\r\n [\r\n PerformanceEvents.HandleResponsePlatformBroker,\r\n \"HandleRespPlatBroker\",\r\n ],\r\n [PerformanceEvents.UpdateTokenEndpointAuthority, \"UpdTEndpointAuth\"],\r\n [PerformanceEvents.AuthClientAcquireToken, \"AuthClientAT\"],\r\n [PerformanceEvents.AuthClientExecuteTokenRequest, \"AuthClientExecTReq\"],\r\n [\r\n PerformanceEvents.AuthClientCreateTokenRequestBody,\r\n \"AuthClientCreateTReqBody\",\r\n ],\r\n [PerformanceEvents.PopTokenGenerateCnf, \"PopTGenCnf\"],\r\n [PerformanceEvents.PopTokenGenerateKid, \"PopTGenKid\"],\r\n [PerformanceEvents.HandleServerTokenResponse, \"HandleServerTRes\"],\r\n [PerformanceEvents.DeserializeResponse, \"DeserializeRes\"],\r\n [\r\n PerformanceEvents.AuthorityFactoryCreateDiscoveredInstance,\r\n \"AuthFactCreateDiscInst\",\r\n ],\r\n [\r\n PerformanceEvents.AuthorityResolveEndpointsAsync,\r\n \"AuthResolveEndpointsAsync\",\r\n ],\r\n [\r\n PerformanceEvents.AuthorityResolveEndpointsFromLocalSources,\r\n \"AuthResolveEndpointsFromLocal\",\r\n ],\r\n [\r\n PerformanceEvents.AuthorityGetCloudDiscoveryMetadataFromNetwork,\r\n \"AuthGetCDMetaFromNet\",\r\n ],\r\n [\r\n PerformanceEvents.AuthorityUpdateCloudDiscoveryMetadata,\r\n \"AuthUpdCDMeta\",\r\n ],\r\n [\r\n PerformanceEvents.AuthorityGetEndpointMetadataFromNetwork,\r\n \"AuthUpdCDMetaFromNet\",\r\n ],\r\n [\r\n PerformanceEvents.AuthorityUpdateEndpointMetadata,\r\n \"AuthUpdEndpointMeta\",\r\n ],\r\n [\r\n PerformanceEvents.AuthorityUpdateMetadataWithRegionalInformation,\r\n \"AuthUpdMetaWithRegInfo\",\r\n ],\r\n [PerformanceEvents.RegionDiscoveryDetectRegion, \"RegDiscDetectReg\"],\r\n [\r\n PerformanceEvents.RegionDiscoveryGetRegionFromIMDS,\r\n \"RegDiscGetRegFromIMDS\",\r\n ],\r\n [\r\n PerformanceEvents.RegionDiscoveryGetCurrentVersion,\r\n \"RegDiscGetCurrentVer\",\r\n ],\r\n [PerformanceEvents.AcquireTokenByCodeAsync, \"ATByCodeAsync\"],\r\n [\r\n PerformanceEvents.GetEndpointMetadataFromNetwork,\r\n \"GetEndpointMetaFromNet\",\r\n ],\r\n [\r\n PerformanceEvents.GetCloudDiscoveryMetadataFromNetworkMeasurement,\r\n \"GetCDMetaFromNet\",\r\n ],\r\n [\r\n PerformanceEvents.HandleRedirectPromiseMeasurement,\r\n \"HandleRedirectPromise\",\r\n ],\r\n [\r\n PerformanceEvents.HandleNativeRedirectPromiseMeasurement,\r\n \"HandleNtvRedirectPromise\",\r\n ],\r\n [\r\n PerformanceEvents.UpdateCloudDiscoveryMetadataMeasurement,\r\n \"UpdateCDMeta\",\r\n ],\r\n [\r\n PerformanceEvents.UsernamePasswordClientAcquireToken,\r\n \"UserPassClientAT\",\r\n ],\r\n [\r\n PerformanceEvents.NativeMessageHandlerHandshake,\r\n \"NtvMsgHandlerHandshake\",\r\n ],\r\n [PerformanceEvents.NativeGenerateAuthResult, \"NtvGenAuthRes\"],\r\n [PerformanceEvents.RemoveHiddenIframe, \"RemoveHiddenIframe\"],\r\n [\r\n PerformanceEvents.ClearTokensAndKeysWithClaims,\r\n \"ClearTAndKeysWithClaims\",\r\n ],\r\n [PerformanceEvents.CacheManagerGetRefreshToken, \"CacheManagerGetRT\"],\r\n [PerformanceEvents.GeneratePkceCodes, \"GenPkceCodes\"],\r\n [PerformanceEvents.GenerateCodeVerifier, \"GenCodeVerifier\"],\r\n [\r\n PerformanceEvents.GenerateCodeChallengeFromVerifier,\r\n \"GenCodeChallengeFromVerifier\",\r\n ],\r\n [PerformanceEvents.Sha256Digest, \"Sha256Digest\"],\r\n [PerformanceEvents.GetRandomValues, \"GetRandomValues\"],\r\n [PerformanceEvents.GenerateHKDF, \"genHKDF\"],\r\n [PerformanceEvents.GenerateBaseKey, \"genBaseKey\"],\r\n [PerformanceEvents.Base64Decode, \"b64Decode\"],\r\n [PerformanceEvents.UrlEncodeArr, \"urlEncArr\"],\r\n [PerformanceEvents.Encrypt, \"encrypt\"],\r\n [PerformanceEvents.Decrypt, \"decrypt\"],\r\n [PerformanceEvents.GenerateEarKey, \"genEarKey\"],\r\n [PerformanceEvents.DecryptEarResponse, \"decryptEarResp\"],\r\n]);\r\n/**\r\n * State of the performance event.\r\n *\r\n * @export\r\n * @enum {number}\r\n */\r\nconst PerformanceEventStatus = {\r\n NotStarted: 0,\r\n InProgress: 1,\r\n Completed: 2,\r\n};\r\nconst IntFields = new Set([\r\n \"accessTokenSize\",\r\n \"durationMs\",\r\n \"idTokenSize\",\r\n \"matsSilentStatus\",\r\n \"matsHttpStatus\",\r\n \"refreshTokenSize\",\r\n \"queuedTimeMs\",\r\n \"startTimeMs\",\r\n \"status\",\r\n \"multiMatchedAT\",\r\n \"multiMatchedID\",\r\n \"multiMatchedRT\",\r\n \"unencryptedCacheCount\",\r\n \"encryptedCacheExpiredCount\",\r\n \"oldAccountCount\",\r\n \"oldAccessCount\",\r\n \"oldIdCount\",\r\n \"oldRefreshCount\",\r\n \"currAccountCount\",\r\n \"currAccessCount\",\r\n \"currIdCount\",\r\n \"currRefreshCount\",\r\n \"expiredCacheRemovedCount\",\r\n \"upgradedCacheCount\",\r\n]);\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * Wraps a function with a performance measurement.\r\n * Usage: invoke(functionToCall, performanceClient, \"EventName\", \"correlationId\")(...argsToPassToFunction)\r\n * @param callback\r\n * @param eventName\r\n * @param logger\r\n * @param telemetryClient\r\n * @param correlationId\r\n * @returns\r\n * @internal\r\n */\r\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\r\nconst invoke = (callback, eventName, logger, telemetryClient, correlationId) => {\r\n return (...args) => {\r\n logger.trace(`Executing function ${eventName}`);\r\n const inProgressEvent = telemetryClient?.startMeasurement(eventName, correlationId);\r\n if (correlationId) {\r\n // Track number of times this API is called in a single request\r\n const eventCount = eventName + \"CallCount\";\r\n telemetryClient?.incrementFields({ [eventCount]: 1 }, correlationId);\r\n }\r\n try {\r\n const result = callback(...args);\r\n inProgressEvent?.end({\r\n success: true,\r\n });\r\n logger.trace(`Returning result from ${eventName}`);\r\n return result;\r\n }\r\n catch (e) {\r\n logger.trace(`Error occurred in ${eventName}`);\r\n try {\r\n logger.trace(JSON.stringify(e));\r\n }\r\n catch (e) {\r\n logger.trace(\"Unable to print error message.\");\r\n }\r\n inProgressEvent?.end({\r\n success: false,\r\n }, e);\r\n throw e;\r\n }\r\n };\r\n};\r\n/**\r\n * Wraps an async function with a performance measurement.\r\n * Usage: invokeAsync(functionToCall, performanceClient, \"EventName\", \"correlationId\")(...argsToPassToFunction)\r\n * @param callback\r\n * @param eventName\r\n * @param logger\r\n * @param telemetryClient\r\n * @param correlationId\r\n * @returns\r\n * @internal\r\n *\r\n */\r\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\r\nconst invokeAsync = (callback, eventName, logger, telemetryClient, correlationId) => {\r\n return (...args) => {\r\n logger.trace(`Executing function ${eventName}`);\r\n const inProgressEvent = telemetryClient?.startMeasurement(eventName, correlationId);\r\n if (correlationId) {\r\n // Track number of times this API is called in a single request\r\n const eventCount = eventName + \"CallCount\";\r\n telemetryClient?.incrementFields({ [eventCount]: 1 }, correlationId);\r\n }\r\n telemetryClient?.setPreQueueTime(eventName, correlationId);\r\n return callback(...args)\r\n .then((response) => {\r\n logger.trace(`Returning result from ${eventName}`);\r\n inProgressEvent?.end({\r\n success: true,\r\n });\r\n return response;\r\n })\r\n .catch((e) => {\r\n logger.trace(`Error occurred in ${eventName}`);\r\n try {\r\n logger.trace(JSON.stringify(e));\r\n }\r\n catch (e) {\r\n logger.trace(\"Unable to print error message.\");\r\n }\r\n inProgressEvent?.end({\r\n success: false,\r\n }, e);\r\n throw e;\r\n });\r\n };\r\n};\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nclass RegionDiscovery {\r\n constructor(networkInterface, logger, performanceClient, correlationId) {\r\n this.networkInterface = networkInterface;\r\n this.logger = logger;\r\n this.performanceClient = performanceClient;\r\n this.correlationId = correlationId;\r\n }\r\n /**\r\n * Detect the region from the application's environment.\r\n *\r\n * @returns Promise\r\n */\r\n async detectRegion(environmentRegion, regionDiscoveryMetadata) {\r\n this.performanceClient?.addQueueMeasurement(PerformanceEvents.RegionDiscoveryDetectRegion, this.correlationId);\r\n // Initialize auto detected region with the region from the envrionment\r\n let autodetectedRegionName = environmentRegion;\r\n // Check if a region was detected from the environment, if not, attempt to get the region from IMDS\r\n if (!autodetectedRegionName) {\r\n const options = RegionDiscovery.IMDS_OPTIONS;\r\n try {\r\n const localIMDSVersionResponse = await invokeAsync(this.getRegionFromIMDS.bind(this), PerformanceEvents.RegionDiscoveryGetRegionFromIMDS, this.logger, this.performanceClient, this.correlationId)(Constants.IMDS_VERSION, options);\r\n if (localIMDSVersionResponse.status === HttpStatus.SUCCESS) {\r\n autodetectedRegionName = localIMDSVersionResponse.body;\r\n regionDiscoveryMetadata.region_source =\r\n RegionDiscoverySources.IMDS;\r\n }\r\n // If the response using the local IMDS version failed, try to fetch the current version of IMDS and retry.\r\n if (localIMDSVersionResponse.status === HttpStatus.BAD_REQUEST) {\r\n const currentIMDSVersion = await invokeAsync(this.getCurrentVersion.bind(this), PerformanceEvents.RegionDiscoveryGetCurrentVersion, this.logger, this.performanceClient, this.correlationId)(options);\r\n if (!currentIMDSVersion) {\r\n regionDiscoveryMetadata.region_source =\r\n RegionDiscoverySources.FAILED_AUTO_DETECTION;\r\n return null;\r\n }\r\n const currentIMDSVersionResponse = await invokeAsync(this.getRegionFromIMDS.bind(this), PerformanceEvents.RegionDiscoveryGetRegionFromIMDS, this.logger, this.performanceClient, this.correlationId)(currentIMDSVersion, options);\r\n if (currentIMDSVersionResponse.status === HttpStatus.SUCCESS) {\r\n autodetectedRegionName =\r\n currentIMDSVersionResponse.body;\r\n regionDiscoveryMetadata.region_source =\r\n RegionDiscoverySources.IMDS;\r\n }\r\n }\r\n }\r\n catch (e) {\r\n regionDiscoveryMetadata.region_source =\r\n RegionDiscoverySources.FAILED_AUTO_DETECTION;\r\n return null;\r\n }\r\n }\r\n else {\r\n regionDiscoveryMetadata.region_source =\r\n RegionDiscoverySources.ENVIRONMENT_VARIABLE;\r\n }\r\n // If no region was auto detected from the environment or from the IMDS endpoint, mark the attempt as a FAILED_AUTO_DETECTION\r\n if (!autodetectedRegionName) {\r\n regionDiscoveryMetadata.region_source =\r\n RegionDiscoverySources.FAILED_AUTO_DETECTION;\r\n }\r\n return autodetectedRegionName || null;\r\n }\r\n /**\r\n * Make the call to the IMDS endpoint\r\n *\r\n * @param imdsEndpointUrl\r\n * @returns Promise>\r\n */\r\n async getRegionFromIMDS(version, options) {\r\n this.performanceClient?.addQueueMeasurement(PerformanceEvents.RegionDiscoveryGetRegionFromIMDS, this.correlationId);\r\n return this.networkInterface.sendGetRequestAsync(`${Constants.IMDS_ENDPOINT}?api-version=${version}&format=text`, options, Constants.IMDS_TIMEOUT);\r\n }\r\n /**\r\n * Get the most recent version of the IMDS endpoint available\r\n *\r\n * @returns Promise\r\n */\r\n async getCurrentVersion(options) {\r\n this.performanceClient?.addQueueMeasurement(PerformanceEvents.RegionDiscoveryGetCurrentVersion, this.correlationId);\r\n try {\r\n const response = await this.networkInterface.sendGetRequestAsync(`${Constants.IMDS_ENDPOINT}?format=json`, options);\r\n // When IMDS endpoint is called without the api version query param, bad request response comes back with latest version.\r\n if (response.status === HttpStatus.BAD_REQUEST &&\r\n response.body &&\r\n response.body[\"newest-versions\"] &&\r\n response.body[\"newest-versions\"].length > 0) {\r\n return response.body[\"newest-versions\"][0];\r\n }\r\n return null;\r\n }\r\n catch (e) {\r\n return null;\r\n }\r\n }\r\n}\r\n// Options for the IMDS endpoint request\r\nRegionDiscovery.IMDS_OPTIONS = {\r\n headers: {\r\n Metadata: \"true\",\r\n },\r\n};\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * Utility functions for managing date and time operations.\r\n */\r\n/**\r\n * return the current time in Unix time (seconds).\r\n */\r\nfunction nowSeconds() {\r\n // Date.getTime() returns in milliseconds.\r\n return Math.round(new Date().getTime() / 1000.0);\r\n}\r\n/**\r\n * Converts JS Date object to seconds\r\n * @param date Date\r\n */\r\nfunction toSecondsFromDate(date) {\r\n // Convert date to seconds\r\n return date.getTime() / 1000;\r\n}\r\n/**\r\n * Convert seconds to JS Date object. Seconds can be in a number or string format or undefined (will still return a date).\r\n * @param seconds\r\n */\r\nfunction toDateFromSeconds(seconds) {\r\n if (seconds) {\r\n return new Date(Number(seconds) * 1000);\r\n }\r\n return new Date();\r\n}\r\n/**\r\n * check if a token is expired based on given UTC time in seconds.\r\n * @param expiresOn\r\n */\r\nfunction isTokenExpired(expiresOn, offset) {\r\n // check for access token expiry\r\n const expirationSec = Number(expiresOn) || 0;\r\n const offsetCurrentTimeSec = nowSeconds() + offset;\r\n // If current time + offset is greater than token expiration time, then token is expired.\r\n return offsetCurrentTimeSec > expirationSec;\r\n}\r\n/**\r\n * Checks if a cache entry is expired based on the last updated time and cache retention days.\r\n * @param lastUpdatedAt\r\n * @param cacheRetentionDays\r\n * @returns\r\n */\r\nfunction isCacheExpired(lastUpdatedAt, cacheRetentionDays) {\r\n const cacheExpirationTimestamp = Number(lastUpdatedAt) + cacheRetentionDays * 24 * 60 * 60 * 1000;\r\n return Date.now() > cacheExpirationTimestamp;\r\n}\r\n/**\r\n * If the current time is earlier than the time that a token was cached at, we must discard the token\r\n * i.e. The system clock was turned back after acquiring the cached token\r\n * @param cachedAt\r\n * @param offset\r\n */\r\nfunction wasClockTurnedBack(cachedAt) {\r\n const cachedAtSec = Number(cachedAt);\r\n return cachedAtSec > nowSeconds();\r\n}\r\n/**\r\n * Waits for t number of milliseconds\r\n * @param t number\r\n * @param value T\r\n */\r\nfunction delay(t, value) {\r\n return new Promise((resolve) => setTimeout(() => resolve(value), t));\r\n}\n\nvar TimeUtils = /*#__PURE__*/Object.freeze({\n __proto__: null,\n delay: delay,\n isCacheExpired: isCacheExpired,\n isTokenExpired: isTokenExpired,\n nowSeconds: nowSeconds,\n toDateFromSeconds: toDateFromSeconds,\n toSecondsFromDate: toSecondsFromDate,\n wasClockTurnedBack: wasClockTurnedBack\n});\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * Create IdTokenEntity\r\n * @param homeAccountId\r\n * @param authenticationResult\r\n * @param clientId\r\n * @param authority\r\n */\r\nfunction createIdTokenEntity(homeAccountId, environment, idToken, clientId, tenantId) {\r\n const idTokenEntity = {\r\n credentialType: CredentialType.ID_TOKEN,\r\n homeAccountId: homeAccountId,\r\n environment: environment,\r\n clientId: clientId,\r\n secret: idToken,\r\n realm: tenantId,\r\n lastUpdatedAt: Date.now().toString(), // Set the last updated time to now\r\n };\r\n return idTokenEntity;\r\n}\r\n/**\r\n * Create AccessTokenEntity\r\n * @param homeAccountId\r\n * @param environment\r\n * @param accessToken\r\n * @param clientId\r\n * @param tenantId\r\n * @param scopes\r\n * @param expiresOn\r\n * @param extExpiresOn\r\n */\r\nfunction createAccessTokenEntity(homeAccountId, environment, accessToken, clientId, tenantId, scopes, expiresOn, extExpiresOn, base64Decode, refreshOn, tokenType, userAssertionHash, keyId, requestedClaims, requestedClaimsHash) {\r\n const atEntity = {\r\n homeAccountId: homeAccountId,\r\n credentialType: CredentialType.ACCESS_TOKEN,\r\n secret: accessToken,\r\n cachedAt: nowSeconds().toString(),\r\n expiresOn: expiresOn.toString(),\r\n extendedExpiresOn: extExpiresOn.toString(),\r\n environment: environment,\r\n clientId: clientId,\r\n realm: tenantId,\r\n target: scopes,\r\n tokenType: tokenType || AuthenticationScheme.BEARER,\r\n lastUpdatedAt: Date.now().toString(), // Set the last updated time to now\r\n };\r\n if (userAssertionHash) {\r\n atEntity.userAssertionHash = userAssertionHash;\r\n }\r\n if (refreshOn) {\r\n atEntity.refreshOn = refreshOn.toString();\r\n }\r\n if (requestedClaims) {\r\n atEntity.requestedClaims = requestedClaims;\r\n atEntity.requestedClaimsHash = requestedClaimsHash;\r\n }\r\n /*\r\n * Create Access Token With Auth Scheme instead of regular access token\r\n * Cast to lower to handle \"bearer\" from ADFS\r\n */\r\n if (atEntity.tokenType?.toLowerCase() !==\r\n AuthenticationScheme.BEARER.toLowerCase()) {\r\n atEntity.credentialType = CredentialType.ACCESS_TOKEN_WITH_AUTH_SCHEME;\r\n switch (atEntity.tokenType) {\r\n case AuthenticationScheme.POP:\r\n // Make sure keyId is present and add it to credential\r\n const tokenClaims = extractTokenClaims(accessToken, base64Decode);\r\n if (!tokenClaims?.cnf?.kid) {\r\n throw createClientAuthError(tokenClaimsCnfRequiredForSignedJwt);\r\n }\r\n atEntity.keyId = tokenClaims.cnf.kid;\r\n break;\r\n case AuthenticationScheme.SSH:\r\n atEntity.keyId = keyId;\r\n }\r\n }\r\n return atEntity;\r\n}\r\n/**\r\n * Create RefreshTokenEntity\r\n * @param homeAccountId\r\n * @param authenticationResult\r\n * @param clientId\r\n * @param authority\r\n */\r\nfunction createRefreshTokenEntity(homeAccountId, environment, refreshToken, clientId, familyId, userAssertionHash, expiresOn) {\r\n const rtEntity = {\r\n credentialType: CredentialType.REFRESH_TOKEN,\r\n homeAccountId: homeAccountId,\r\n environment: environment,\r\n clientId: clientId,\r\n secret: refreshToken,\r\n lastUpdatedAt: Date.now().toString(),\r\n };\r\n if (userAssertionHash) {\r\n rtEntity.userAssertionHash = userAssertionHash;\r\n }\r\n if (familyId) {\r\n rtEntity.familyId = familyId;\r\n }\r\n if (expiresOn) {\r\n rtEntity.expiresOn = expiresOn.toString();\r\n }\r\n return rtEntity;\r\n}\r\nfunction isCredentialEntity(entity) {\r\n return (entity.hasOwnProperty(\"homeAccountId\") &&\r\n entity.hasOwnProperty(\"environment\") &&\r\n entity.hasOwnProperty(\"credentialType\") &&\r\n entity.hasOwnProperty(\"clientId\") &&\r\n entity.hasOwnProperty(\"secret\"));\r\n}\r\n/**\r\n * Validates an entity: checks for all expected params\r\n * @param entity\r\n */\r\nfunction isAccessTokenEntity(entity) {\r\n if (!entity) {\r\n return false;\r\n }\r\n return (isCredentialEntity(entity) &&\r\n entity.hasOwnProperty(\"realm\") &&\r\n entity.hasOwnProperty(\"target\") &&\r\n (entity[\"credentialType\"] === CredentialType.ACCESS_TOKEN ||\r\n entity[\"credentialType\"] ===\r\n CredentialType.ACCESS_TOKEN_WITH_AUTH_SCHEME));\r\n}\r\n/**\r\n * Validates an entity: checks for all expected params\r\n * @param entity\r\n */\r\nfunction isIdTokenEntity(entity) {\r\n if (!entity) {\r\n return false;\r\n }\r\n return (isCredentialEntity(entity) &&\r\n entity.hasOwnProperty(\"realm\") &&\r\n entity[\"credentialType\"] === CredentialType.ID_TOKEN);\r\n}\r\n/**\r\n * Validates an entity: checks for all expected params\r\n * @param entity\r\n */\r\nfunction isRefreshTokenEntity(entity) {\r\n if (!entity) {\r\n return false;\r\n }\r\n return (isCredentialEntity(entity) &&\r\n entity[\"credentialType\"] === CredentialType.REFRESH_TOKEN);\r\n}\r\n/**\r\n * validates if a given cache entry is \"Telemetry\", parses \r\n * @param key\r\n * @param entity\r\n */\r\nfunction isServerTelemetryEntity(key, entity) {\r\n const validateKey = key.indexOf(SERVER_TELEM_CONSTANTS.CACHE_KEY) === 0;\r\n let validateEntity = true;\r\n if (entity) {\r\n validateEntity =\r\n entity.hasOwnProperty(\"failedRequests\") &&\r\n entity.hasOwnProperty(\"errors\") &&\r\n entity.hasOwnProperty(\"cacheHits\");\r\n }\r\n return validateKey && validateEntity;\r\n}\r\n/**\r\n * validates if a given cache entry is \"Throttling\", parses \r\n * @param key\r\n * @param entity\r\n */\r\nfunction isThrottlingEntity(key, entity) {\r\n let validateKey = false;\r\n if (key) {\r\n validateKey = key.indexOf(ThrottlingConstants.THROTTLING_PREFIX) === 0;\r\n }\r\n let validateEntity = true;\r\n if (entity) {\r\n validateEntity = entity.hasOwnProperty(\"throttleTime\");\r\n }\r\n return validateKey && validateEntity;\r\n}\r\n/**\r\n * Generate AppMetadata Cache Key as per the schema: appmetadata--\r\n */\r\nfunction generateAppMetadataKey({ environment, clientId, }) {\r\n const appMetaDataKeyArray = [\r\n APP_METADATA,\r\n environment,\r\n clientId,\r\n ];\r\n return appMetaDataKeyArray\r\n .join(Separators.CACHE_KEY_SEPARATOR)\r\n .toLowerCase();\r\n}\r\n/*\r\n * Validates an entity: checks for all expected params\r\n * @param entity\r\n */\r\nfunction isAppMetadataEntity(key, entity) {\r\n if (!entity) {\r\n return false;\r\n }\r\n return (key.indexOf(APP_METADATA) === 0 &&\r\n entity.hasOwnProperty(\"clientId\") &&\r\n entity.hasOwnProperty(\"environment\"));\r\n}\r\n/**\r\n * Validates an entity: checks for all expected params\r\n * @param entity\r\n */\r\nfunction isAuthorityMetadataEntity(key, entity) {\r\n if (!entity) {\r\n return false;\r\n }\r\n return (key.indexOf(AUTHORITY_METADATA_CONSTANTS.CACHE_KEY) === 0 &&\r\n entity.hasOwnProperty(\"aliases\") &&\r\n entity.hasOwnProperty(\"preferred_cache\") &&\r\n entity.hasOwnProperty(\"preferred_network\") &&\r\n entity.hasOwnProperty(\"canonical_authority\") &&\r\n entity.hasOwnProperty(\"authorization_endpoint\") &&\r\n entity.hasOwnProperty(\"token_endpoint\") &&\r\n entity.hasOwnProperty(\"issuer\") &&\r\n entity.hasOwnProperty(\"aliasesFromNetwork\") &&\r\n entity.hasOwnProperty(\"endpointsFromNetwork\") &&\r\n entity.hasOwnProperty(\"expiresAt\") &&\r\n entity.hasOwnProperty(\"jwks_uri\"));\r\n}\r\n/**\r\n * Reset the exiresAt value\r\n */\r\nfunction generateAuthorityMetadataExpiresAt() {\r\n return (nowSeconds() +\r\n AUTHORITY_METADATA_CONSTANTS.REFRESH_TIME_SECONDS);\r\n}\r\nfunction updateAuthorityEndpointMetadata(authorityMetadata, updatedValues, fromNetwork) {\r\n authorityMetadata.authorization_endpoint =\r\n updatedValues.authorization_endpoint;\r\n authorityMetadata.token_endpoint = updatedValues.token_endpoint;\r\n authorityMetadata.end_session_endpoint = updatedValues.end_session_endpoint;\r\n authorityMetadata.issuer = updatedValues.issuer;\r\n authorityMetadata.endpointsFromNetwork = fromNetwork;\r\n authorityMetadata.jwks_uri = updatedValues.jwks_uri;\r\n}\r\nfunction updateCloudDiscoveryMetadata(authorityMetadata, updatedValues, fromNetwork) {\r\n authorityMetadata.aliases = updatedValues.aliases;\r\n authorityMetadata.preferred_cache = updatedValues.preferred_cache;\r\n authorityMetadata.preferred_network = updatedValues.preferred_network;\r\n authorityMetadata.aliasesFromNetwork = fromNetwork;\r\n}\r\n/**\r\n * Returns whether or not the data needs to be refreshed\r\n */\r\nfunction isAuthorityMetadataExpired(metadata) {\r\n return metadata.expiresAt <= nowSeconds();\r\n}\n\nvar CacheHelpers = /*#__PURE__*/Object.freeze({\n __proto__: null,\n createAccessTokenEntity: createAccessTokenEntity,\n createIdTokenEntity: createIdTokenEntity,\n createRefreshTokenEntity: createRefreshTokenEntity,\n generateAppMetadataKey: generateAppMetadataKey,\n generateAuthorityMetadataExpiresAt: generateAuthorityMetadataExpiresAt,\n isAccessTokenEntity: isAccessTokenEntity,\n isAppMetadataEntity: isAppMetadataEntity,\n isAuthorityMetadataEntity: isAuthorityMetadataEntity,\n isAuthorityMetadataExpired: isAuthorityMetadataExpired,\n isCredentialEntity: isCredentialEntity,\n isIdTokenEntity: isIdTokenEntity,\n isRefreshTokenEntity: isRefreshTokenEntity,\n isServerTelemetryEntity: isServerTelemetryEntity,\n isThrottlingEntity: isThrottlingEntity,\n updateAuthorityEndpointMetadata: updateAuthorityEndpointMetadata,\n updateCloudDiscoveryMetadata: updateCloudDiscoveryMetadata\n});\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * The authority class validates the authority URIs used by the user, and retrieves the OpenID Configuration Data from the\r\n * endpoint. It will store the pertinent config data in this object for use during token calls.\r\n * @internal\r\n */\r\nclass Authority {\r\n constructor(authority, networkInterface, cacheManager, authorityOptions, logger, correlationId, performanceClient, managedIdentity) {\r\n this.canonicalAuthority = authority;\r\n this._canonicalAuthority.validateAsUri();\r\n this.networkInterface = networkInterface;\r\n this.cacheManager = cacheManager;\r\n this.authorityOptions = authorityOptions;\r\n this.regionDiscoveryMetadata = {\r\n region_used: undefined,\r\n region_source: undefined,\r\n region_outcome: undefined,\r\n };\r\n this.logger = logger;\r\n this.performanceClient = performanceClient;\r\n this.correlationId = correlationId;\r\n this.managedIdentity = managedIdentity || false;\r\n this.regionDiscovery = new RegionDiscovery(networkInterface, this.logger, this.performanceClient, this.correlationId);\r\n }\r\n /**\r\n * Get {@link AuthorityType}\r\n * @param authorityUri {@link IUri}\r\n * @private\r\n */\r\n getAuthorityType(authorityUri) {\r\n // CIAM auth url pattern is being standardized as: .ciamlogin.com\r\n if (authorityUri.HostNameAndPort.endsWith(Constants.CIAM_AUTH_URL)) {\r\n return AuthorityType.Ciam;\r\n }\r\n const pathSegments = authorityUri.PathSegments;\r\n if (pathSegments.length) {\r\n switch (pathSegments[0].toLowerCase()) {\r\n case Constants.ADFS:\r\n return AuthorityType.Adfs;\r\n case Constants.DSTS:\r\n return AuthorityType.Dsts;\r\n }\r\n }\r\n return AuthorityType.Default;\r\n }\r\n // See above for AuthorityType\r\n get authorityType() {\r\n return this.getAuthorityType(this.canonicalAuthorityUrlComponents);\r\n }\r\n /**\r\n * ProtocolMode enum representing the way endpoints are constructed.\r\n */\r\n get protocolMode() {\r\n return this.authorityOptions.protocolMode;\r\n }\r\n /**\r\n * Returns authorityOptions which can be used to reinstantiate a new authority instance\r\n */\r\n get options() {\r\n return this.authorityOptions;\r\n }\r\n /**\r\n * A URL that is the authority set by the developer\r\n */\r\n get canonicalAuthority() {\r\n return this._canonicalAuthority.urlString;\r\n }\r\n /**\r\n * Sets canonical authority.\r\n */\r\n set canonicalAuthority(url) {\r\n this._canonicalAuthority = new UrlString(url);\r\n this._canonicalAuthority.validateAsUri();\r\n this._canonicalAuthorityUrlComponents = null;\r\n }\r\n /**\r\n * Get authority components.\r\n */\r\n get canonicalAuthorityUrlComponents() {\r\n if (!this._canonicalAuthorityUrlComponents) {\r\n this._canonicalAuthorityUrlComponents =\r\n this._canonicalAuthority.getUrlComponents();\r\n }\r\n return this._canonicalAuthorityUrlComponents;\r\n }\r\n /**\r\n * Get hostname and port i.e. login.microsoftonline.com\r\n */\r\n get hostnameAndPort() {\r\n return this.canonicalAuthorityUrlComponents.HostNameAndPort.toLowerCase();\r\n }\r\n /**\r\n * Get tenant for authority.\r\n */\r\n get tenant() {\r\n return this.canonicalAuthorityUrlComponents.PathSegments[0];\r\n }\r\n /**\r\n * OAuth /authorize endpoint for requests\r\n */\r\n get authorizationEndpoint() {\r\n if (this.discoveryComplete()) {\r\n return this.replacePath(this.metadata.authorization_endpoint);\r\n }\r\n else {\r\n throw createClientAuthError(endpointResolutionError);\r\n }\r\n }\r\n /**\r\n * OAuth /token endpoint for requests\r\n */\r\n get tokenEndpoint() {\r\n if (this.discoveryComplete()) {\r\n return this.replacePath(this.metadata.token_endpoint);\r\n }\r\n else {\r\n throw createClientAuthError(endpointResolutionError);\r\n }\r\n }\r\n get deviceCodeEndpoint() {\r\n if (this.discoveryComplete()) {\r\n return this.replacePath(this.metadata.token_endpoint.replace(\"/token\", \"/devicecode\"));\r\n }\r\n else {\r\n throw createClientAuthError(endpointResolutionError);\r\n }\r\n }\r\n /**\r\n * OAuth logout endpoint for requests\r\n */\r\n get endSessionEndpoint() {\r\n if (this.discoveryComplete()) {\r\n // ROPC policies may not have end_session_endpoint set\r\n if (!this.metadata.end_session_endpoint) {\r\n throw createClientAuthError(endSessionEndpointNotSupported);\r\n }\r\n return this.replacePath(this.metadata.end_session_endpoint);\r\n }\r\n else {\r\n throw createClientAuthError(endpointResolutionError);\r\n }\r\n }\r\n /**\r\n * OAuth issuer for requests\r\n */\r\n get selfSignedJwtAudience() {\r\n if (this.discoveryComplete()) {\r\n return this.replacePath(this.metadata.issuer);\r\n }\r\n else {\r\n throw createClientAuthError(endpointResolutionError);\r\n }\r\n }\r\n /**\r\n * Jwks_uri for token signing keys\r\n */\r\n get jwksUri() {\r\n if (this.discoveryComplete()) {\r\n return this.replacePath(this.metadata.jwks_uri);\r\n }\r\n else {\r\n throw createClientAuthError(endpointResolutionError);\r\n }\r\n }\r\n /**\r\n * Returns a flag indicating that tenant name can be replaced in authority {@link IUri}\r\n * @param authorityUri {@link IUri}\r\n * @private\r\n */\r\n canReplaceTenant(authorityUri) {\r\n return (authorityUri.PathSegments.length === 1 &&\r\n !Authority.reservedTenantDomains.has(authorityUri.PathSegments[0]) &&\r\n this.getAuthorityType(authorityUri) === AuthorityType.Default &&\r\n this.protocolMode !== ProtocolMode.OIDC);\r\n }\r\n /**\r\n * Replaces tenant in url path with current tenant. Defaults to common.\r\n * @param urlString\r\n */\r\n replaceTenant(urlString) {\r\n return urlString.replace(/{tenant}|{tenantid}/g, this.tenant);\r\n }\r\n /**\r\n * Replaces path such as tenant or policy with the current tenant or policy.\r\n * @param urlString\r\n */\r\n replacePath(urlString) {\r\n let endpoint = urlString;\r\n const cachedAuthorityUrl = new UrlString(this.metadata.canonical_authority);\r\n const cachedAuthorityUrlComponents = cachedAuthorityUrl.getUrlComponents();\r\n const cachedAuthorityParts = cachedAuthorityUrlComponents.PathSegments;\r\n const currentAuthorityParts = this.canonicalAuthorityUrlComponents.PathSegments;\r\n currentAuthorityParts.forEach((currentPart, index) => {\r\n let cachedPart = cachedAuthorityParts[index];\r\n if (index === 0 &&\r\n this.canReplaceTenant(cachedAuthorityUrlComponents)) {\r\n const tenantId = new UrlString(this.metadata.authorization_endpoint).getUrlComponents().PathSegments[0];\r\n /**\r\n * Check if AAD canonical authority contains tenant domain name, for example \"testdomain.onmicrosoft.com\",\r\n * by comparing its first path segment to the corresponding authorization endpoint path segment, which is\r\n * always resolved with tenant id by OIDC.\r\n */\r\n if (cachedPart !== tenantId) {\r\n this.logger.verbose(`Replacing tenant domain name ${cachedPart} with id ${tenantId}`);\r\n cachedPart = tenantId;\r\n }\r\n }\r\n if (currentPart !== cachedPart) {\r\n endpoint = endpoint.replace(`/${cachedPart}/`, `/${currentPart}/`);\r\n }\r\n });\r\n return this.replaceTenant(endpoint);\r\n }\r\n /**\r\n * The default open id configuration endpoint for any canonical authority.\r\n */\r\n get defaultOpenIdConfigurationEndpoint() {\r\n const canonicalAuthorityHost = this.hostnameAndPort;\r\n if (this.canonicalAuthority.endsWith(\"v2.0/\") ||\r\n this.authorityType === AuthorityType.Adfs ||\r\n (this.protocolMode === ProtocolMode.OIDC &&\r\n !this.isAliasOfKnownMicrosoftAuthority(canonicalAuthorityHost))) {\r\n return `${this.canonicalAuthority}.well-known/openid-configuration`;\r\n }\r\n return `${this.canonicalAuthority}v2.0/.well-known/openid-configuration`;\r\n }\r\n /**\r\n * Boolean that returns whether or not tenant discovery has been completed.\r\n */\r\n discoveryComplete() {\r\n return !!this.metadata;\r\n }\r\n /**\r\n * Perform endpoint discovery to discover aliases, preferred_cache, preferred_network\r\n * and the /authorize, /token and logout endpoints.\r\n */\r\n async resolveEndpointsAsync() {\r\n this.performanceClient?.addQueueMeasurement(PerformanceEvents.AuthorityResolveEndpointsAsync, this.correlationId);\r\n const metadataEntity = this.getCurrentMetadataEntity();\r\n const cloudDiscoverySource = await invokeAsync(this.updateCloudDiscoveryMetadata.bind(this), PerformanceEvents.AuthorityUpdateCloudDiscoveryMetadata, this.logger, this.performanceClient, this.correlationId)(metadataEntity);\r\n this.canonicalAuthority = this.canonicalAuthority.replace(this.hostnameAndPort, metadataEntity.preferred_network);\r\n const endpointSource = await invokeAsync(this.updateEndpointMetadata.bind(this), PerformanceEvents.AuthorityUpdateEndpointMetadata, this.logger, this.performanceClient, this.correlationId)(metadataEntity);\r\n this.updateCachedMetadata(metadataEntity, cloudDiscoverySource, {\r\n source: endpointSource,\r\n });\r\n this.performanceClient?.addFields({\r\n cloudDiscoverySource: cloudDiscoverySource,\r\n authorityEndpointSource: endpointSource,\r\n }, this.correlationId);\r\n }\r\n /**\r\n * Returns metadata entity from cache if it exists, otherwiser returns a new metadata entity built\r\n * from the configured canonical authority\r\n * @returns\r\n */\r\n getCurrentMetadataEntity() {\r\n let metadataEntity = this.cacheManager.getAuthorityMetadataByAlias(this.hostnameAndPort);\r\n if (!metadataEntity) {\r\n metadataEntity = {\r\n aliases: [],\r\n preferred_cache: this.hostnameAndPort,\r\n preferred_network: this.hostnameAndPort,\r\n canonical_authority: this.canonicalAuthority,\r\n authorization_endpoint: \"\",\r\n token_endpoint: \"\",\r\n end_session_endpoint: \"\",\r\n issuer: \"\",\r\n aliasesFromNetwork: false,\r\n endpointsFromNetwork: false,\r\n expiresAt: generateAuthorityMetadataExpiresAt(),\r\n jwks_uri: \"\",\r\n };\r\n }\r\n return metadataEntity;\r\n }\r\n /**\r\n * Updates cached metadata based on metadata source and sets the instance's metadata\r\n * property to the same value\r\n * @param metadataEntity\r\n * @param cloudDiscoverySource\r\n * @param endpointMetadataResult\r\n */\r\n updateCachedMetadata(metadataEntity, cloudDiscoverySource, endpointMetadataResult) {\r\n if (cloudDiscoverySource !== AuthorityMetadataSource.CACHE &&\r\n endpointMetadataResult?.source !== AuthorityMetadataSource.CACHE) {\r\n // Reset the expiration time unless both values came from a successful cache lookup\r\n metadataEntity.expiresAt =\r\n generateAuthorityMetadataExpiresAt();\r\n metadataEntity.canonical_authority = this.canonicalAuthority;\r\n }\r\n const cacheKey = this.cacheManager.generateAuthorityMetadataCacheKey(metadataEntity.preferred_cache);\r\n this.cacheManager.setAuthorityMetadata(cacheKey, metadataEntity);\r\n this.metadata = metadataEntity;\r\n }\r\n /**\r\n * Update AuthorityMetadataEntity with new endpoints and return where the information came from\r\n * @param metadataEntity\r\n */\r\n async updateEndpointMetadata(metadataEntity) {\r\n this.performanceClient?.addQueueMeasurement(PerformanceEvents.AuthorityUpdateEndpointMetadata, this.correlationId);\r\n const localMetadata = this.updateEndpointMetadataFromLocalSources(metadataEntity);\r\n // Further update may be required for hardcoded metadata if regional metadata is preferred\r\n if (localMetadata) {\r\n if (localMetadata.source ===\r\n AuthorityMetadataSource.HARDCODED_VALUES) {\r\n // If the user prefers to use an azure region replace the global endpoints with regional information.\r\n if (this.authorityOptions.azureRegionConfiguration?.azureRegion) {\r\n if (localMetadata.metadata) {\r\n const hardcodedMetadata = await invokeAsync(this.updateMetadataWithRegionalInformation.bind(this), PerformanceEvents.AuthorityUpdateMetadataWithRegionalInformation, this.logger, this.performanceClient, this.correlationId)(localMetadata.metadata);\r\n updateAuthorityEndpointMetadata(metadataEntity, hardcodedMetadata, false);\r\n metadataEntity.canonical_authority =\r\n this.canonicalAuthority;\r\n }\r\n }\r\n }\r\n return localMetadata.source;\r\n }\r\n // Get metadata from network if local sources aren't available\r\n let metadata = await invokeAsync(this.getEndpointMetadataFromNetwork.bind(this), PerformanceEvents.AuthorityGetEndpointMetadataFromNetwork, this.logger, this.performanceClient, this.correlationId)();\r\n if (metadata) {\r\n // If the user prefers to use an azure region replace the global endpoints with regional information.\r\n if (this.authorityOptions.azureRegionConfiguration?.azureRegion) {\r\n metadata = await invokeAsync(this.updateMetadataWithRegionalInformation.bind(this), PerformanceEvents.AuthorityUpdateMetadataWithRegionalInformation, this.logger, this.performanceClient, this.correlationId)(metadata);\r\n }\r\n updateAuthorityEndpointMetadata(metadataEntity, metadata, true);\r\n return AuthorityMetadataSource.NETWORK;\r\n }\r\n else {\r\n // Metadata could not be obtained from the config, cache, network or hardcoded values\r\n throw createClientAuthError(openIdConfigError, this.defaultOpenIdConfigurationEndpoint);\r\n }\r\n }\r\n /**\r\n * Updates endpoint metadata from local sources and returns where the information was retrieved from and the metadata config\r\n * response if the source is hardcoded metadata\r\n * @param metadataEntity\r\n * @returns\r\n */\r\n updateEndpointMetadataFromLocalSources(metadataEntity) {\r\n this.logger.verbose(\"Attempting to get endpoint metadata from authority configuration\");\r\n const configMetadata = this.getEndpointMetadataFromConfig();\r\n if (configMetadata) {\r\n this.logger.verbose(\"Found endpoint metadata in authority configuration\");\r\n updateAuthorityEndpointMetadata(metadataEntity, configMetadata, false);\r\n return {\r\n source: AuthorityMetadataSource.CONFIG,\r\n };\r\n }\r\n this.logger.verbose(\"Did not find endpoint metadata in the config... Attempting to get endpoint metadata from the hardcoded values.\");\r\n // skipAuthorityMetadataCache is used to bypass hardcoded authority metadata and force a network metadata cache lookup and network metadata request if no cached response is available.\r\n if (this.authorityOptions.skipAuthorityMetadataCache) {\r\n this.logger.verbose(\"Skipping hardcoded metadata cache since skipAuthorityMetadataCache is set to true. Attempting to get endpoint metadata from the network metadata cache.\");\r\n }\r\n else {\r\n const hardcodedMetadata = this.getEndpointMetadataFromHardcodedValues();\r\n if (hardcodedMetadata) {\r\n updateAuthorityEndpointMetadata(metadataEntity, hardcodedMetadata, false);\r\n return {\r\n source: AuthorityMetadataSource.HARDCODED_VALUES,\r\n metadata: hardcodedMetadata,\r\n };\r\n }\r\n else {\r\n this.logger.verbose(\"Did not find endpoint metadata in hardcoded values... Attempting to get endpoint metadata from the network metadata cache.\");\r\n }\r\n }\r\n // Check cached metadata entity expiration status\r\n const metadataEntityExpired = isAuthorityMetadataExpired(metadataEntity);\r\n if (this.isAuthoritySameType(metadataEntity) &&\r\n metadataEntity.endpointsFromNetwork &&\r\n !metadataEntityExpired) {\r\n // No need to update\r\n this.logger.verbose(\"Found endpoint metadata in the cache.\");\r\n return { source: AuthorityMetadataSource.CACHE };\r\n }\r\n else if (metadataEntityExpired) {\r\n this.logger.verbose(\"The metadata entity is expired.\");\r\n }\r\n return null;\r\n }\r\n /**\r\n * Compares the number of url components after the domain to determine if the cached\r\n * authority metadata can be used for the requested authority. Protects against same domain different\r\n * authority such as login.microsoftonline.com/tenant and login.microsoftonline.com/tfp/tenant/policy\r\n * @param metadataEntity\r\n */\r\n isAuthoritySameType(metadataEntity) {\r\n const cachedAuthorityUrl = new UrlString(metadataEntity.canonical_authority);\r\n const cachedParts = cachedAuthorityUrl.getUrlComponents().PathSegments;\r\n return (cachedParts.length ===\r\n this.canonicalAuthorityUrlComponents.PathSegments.length);\r\n }\r\n /**\r\n * Parse authorityMetadata config option\r\n */\r\n getEndpointMetadataFromConfig() {\r\n if (this.authorityOptions.authorityMetadata) {\r\n try {\r\n return JSON.parse(this.authorityOptions.authorityMetadata);\r\n }\r\n catch (e) {\r\n throw createClientConfigurationError(invalidAuthorityMetadata);\r\n }\r\n }\r\n return null;\r\n }\r\n /**\r\n * Gets OAuth endpoints from the given OpenID configuration endpoint.\r\n *\r\n * @param hasHardcodedMetadata boolean\r\n */\r\n async getEndpointMetadataFromNetwork() {\r\n this.performanceClient?.addQueueMeasurement(PerformanceEvents.AuthorityGetEndpointMetadataFromNetwork, this.correlationId);\r\n const options = {};\r\n /*\r\n * TODO: Add a timeout if the authority exists in our library's\r\n * hardcoded list of metadata\r\n */\r\n const openIdConfigurationEndpoint = this.defaultOpenIdConfigurationEndpoint;\r\n this.logger.verbose(`Authority.getEndpointMetadataFromNetwork: attempting to retrieve OAuth endpoints from ${openIdConfigurationEndpoint}`);\r\n try {\r\n const response = await this.networkInterface.sendGetRequestAsync(openIdConfigurationEndpoint, options);\r\n const isValidResponse = isOpenIdConfigResponse(response.body);\r\n if (isValidResponse) {\r\n return response.body;\r\n }\r\n else {\r\n this.logger.verbose(`Authority.getEndpointMetadataFromNetwork: could not parse response as OpenID configuration`);\r\n return null;\r\n }\r\n }\r\n catch (e) {\r\n this.logger.verbose(`Authority.getEndpointMetadataFromNetwork: ${e}`);\r\n return null;\r\n }\r\n }\r\n /**\r\n * Get OAuth endpoints for common authorities.\r\n */\r\n getEndpointMetadataFromHardcodedValues() {\r\n if (this.hostnameAndPort in EndpointMetadata) {\r\n return EndpointMetadata[this.hostnameAndPort];\r\n }\r\n return null;\r\n }\r\n /**\r\n * Update the retrieved metadata with regional information.\r\n * User selected Azure region will be used if configured.\r\n */\r\n async updateMetadataWithRegionalInformation(metadata) {\r\n this.performanceClient?.addQueueMeasurement(PerformanceEvents.AuthorityUpdateMetadataWithRegionalInformation, this.correlationId);\r\n const userConfiguredAzureRegion = this.authorityOptions.azureRegionConfiguration?.azureRegion;\r\n if (userConfiguredAzureRegion) {\r\n if (userConfiguredAzureRegion !==\r\n Constants.AZURE_REGION_AUTO_DISCOVER_FLAG) {\r\n this.regionDiscoveryMetadata.region_outcome =\r\n RegionDiscoveryOutcomes.CONFIGURED_NO_AUTO_DETECTION;\r\n this.regionDiscoveryMetadata.region_used =\r\n userConfiguredAzureRegion;\r\n return Authority.replaceWithRegionalInformation(metadata, userConfiguredAzureRegion);\r\n }\r\n const autodetectedRegionName = await invokeAsync(this.regionDiscovery.detectRegion.bind(this.regionDiscovery), PerformanceEvents.RegionDiscoveryDetectRegion, this.logger, this.performanceClient, this.correlationId)(this.authorityOptions.azureRegionConfiguration\r\n ?.environmentRegion, this.regionDiscoveryMetadata);\r\n if (autodetectedRegionName) {\r\n this.regionDiscoveryMetadata.region_outcome =\r\n RegionDiscoveryOutcomes.AUTO_DETECTION_REQUESTED_SUCCESSFUL;\r\n this.regionDiscoveryMetadata.region_used =\r\n autodetectedRegionName;\r\n return Authority.replaceWithRegionalInformation(metadata, autodetectedRegionName);\r\n }\r\n this.regionDiscoveryMetadata.region_outcome =\r\n RegionDiscoveryOutcomes.AUTO_DETECTION_REQUESTED_FAILED;\r\n }\r\n return metadata;\r\n }\r\n /**\r\n * Updates the AuthorityMetadataEntity with new aliases, preferred_network and preferred_cache\r\n * and returns where the information was retrieved from\r\n * @param metadataEntity\r\n * @returns AuthorityMetadataSource\r\n */\r\n async updateCloudDiscoveryMetadata(metadataEntity) {\r\n this.performanceClient?.addQueueMeasurement(PerformanceEvents.AuthorityUpdateCloudDiscoveryMetadata, this.correlationId);\r\n const localMetadataSource = this.updateCloudDiscoveryMetadataFromLocalSources(metadataEntity);\r\n if (localMetadataSource) {\r\n return localMetadataSource;\r\n }\r\n // Fallback to network as metadata source\r\n const metadata = await invokeAsync(this.getCloudDiscoveryMetadataFromNetwork.bind(this), PerformanceEvents.AuthorityGetCloudDiscoveryMetadataFromNetwork, this.logger, this.performanceClient, this.correlationId)();\r\n if (metadata) {\r\n updateCloudDiscoveryMetadata(metadataEntity, metadata, true);\r\n return AuthorityMetadataSource.NETWORK;\r\n }\r\n // Metadata could not be obtained from the config, cache, network or hardcoded values\r\n throw createClientConfigurationError(untrustedAuthority);\r\n }\r\n updateCloudDiscoveryMetadataFromLocalSources(metadataEntity) {\r\n this.logger.verbose(\"Attempting to get cloud discovery metadata from authority configuration\");\r\n this.logger.verbosePii(`Known Authorities: ${this.authorityOptions.knownAuthorities ||\r\n Constants.NOT_APPLICABLE}`);\r\n this.logger.verbosePii(`Authority Metadata: ${this.authorityOptions.authorityMetadata ||\r\n Constants.NOT_APPLICABLE}`);\r\n this.logger.verbosePii(`Canonical Authority: ${metadataEntity.canonical_authority || Constants.NOT_APPLICABLE}`);\r\n const metadata = this.getCloudDiscoveryMetadataFromConfig();\r\n if (metadata) {\r\n this.logger.verbose(\"Found cloud discovery metadata in authority configuration\");\r\n updateCloudDiscoveryMetadata(metadataEntity, metadata, false);\r\n return AuthorityMetadataSource.CONFIG;\r\n }\r\n // If the cached metadata came from config but that config was not passed to this instance, we must go to hardcoded values\r\n this.logger.verbose(\"Did not find cloud discovery metadata in the config... Attempting to get cloud discovery metadata from the hardcoded values.\");\r\n if (this.options.skipAuthorityMetadataCache) {\r\n this.logger.verbose(\"Skipping hardcoded cloud discovery metadata cache since skipAuthorityMetadataCache is set to true. Attempting to get cloud discovery metadata from the network metadata cache.\");\r\n }\r\n else {\r\n const hardcodedMetadata = getCloudDiscoveryMetadataFromHardcodedValues(this.hostnameAndPort);\r\n if (hardcodedMetadata) {\r\n this.logger.verbose(\"Found cloud discovery metadata from hardcoded values.\");\r\n updateCloudDiscoveryMetadata(metadataEntity, hardcodedMetadata, false);\r\n return AuthorityMetadataSource.HARDCODED_VALUES;\r\n }\r\n this.logger.verbose(\"Did not find cloud discovery metadata in hardcoded values... Attempting to get cloud discovery metadata from the network metadata cache.\");\r\n }\r\n const metadataEntityExpired = isAuthorityMetadataExpired(metadataEntity);\r\n if (this.isAuthoritySameType(metadataEntity) &&\r\n metadataEntity.aliasesFromNetwork &&\r\n !metadataEntityExpired) {\r\n this.logger.verbose(\"Found cloud discovery metadata in the cache.\");\r\n // No need to update\r\n return AuthorityMetadataSource.CACHE;\r\n }\r\n else if (metadataEntityExpired) {\r\n this.logger.verbose(\"The metadata entity is expired.\");\r\n }\r\n return null;\r\n }\r\n /**\r\n * Parse cloudDiscoveryMetadata config or check knownAuthorities\r\n */\r\n getCloudDiscoveryMetadataFromConfig() {\r\n // CIAM does not support cloud discovery metadata\r\n if (this.authorityType === AuthorityType.Ciam) {\r\n this.logger.verbose(\"CIAM authorities do not support cloud discovery metadata, generate the aliases from authority host.\");\r\n return Authority.createCloudDiscoveryMetadataFromHost(this.hostnameAndPort);\r\n }\r\n // Check if network response was provided in config\r\n if (this.authorityOptions.cloudDiscoveryMetadata) {\r\n this.logger.verbose(\"The cloud discovery metadata has been provided as a network response, in the config.\");\r\n try {\r\n this.logger.verbose(\"Attempting to parse the cloud discovery metadata.\");\r\n const parsedResponse = JSON.parse(this.authorityOptions.cloudDiscoveryMetadata);\r\n const metadata = getCloudDiscoveryMetadataFromNetworkResponse(parsedResponse.metadata, this.hostnameAndPort);\r\n this.logger.verbose(\"Parsed the cloud discovery metadata.\");\r\n if (metadata) {\r\n this.logger.verbose(\"There is returnable metadata attached to the parsed cloud discovery metadata.\");\r\n return metadata;\r\n }\r\n else {\r\n this.logger.verbose(\"There is no metadata attached to the parsed cloud discovery metadata.\");\r\n }\r\n }\r\n catch (e) {\r\n this.logger.verbose(\"Unable to parse the cloud discovery metadata. Throwing Invalid Cloud Discovery Metadata Error.\");\r\n throw createClientConfigurationError(invalidCloudDiscoveryMetadata);\r\n }\r\n }\r\n // If cloudDiscoveryMetadata is empty or does not contain the host, check knownAuthorities\r\n if (this.isInKnownAuthorities()) {\r\n this.logger.verbose(\"The host is included in knownAuthorities. Creating new cloud discovery metadata from the host.\");\r\n return Authority.createCloudDiscoveryMetadataFromHost(this.hostnameAndPort);\r\n }\r\n return null;\r\n }\r\n /**\r\n * Called to get metadata from network if CloudDiscoveryMetadata was not populated by config\r\n *\r\n * @param hasHardcodedMetadata boolean\r\n */\r\n async getCloudDiscoveryMetadataFromNetwork() {\r\n this.performanceClient?.addQueueMeasurement(PerformanceEvents.AuthorityGetCloudDiscoveryMetadataFromNetwork, this.correlationId);\r\n const instanceDiscoveryEndpoint = `${Constants.AAD_INSTANCE_DISCOVERY_ENDPT}${this.canonicalAuthority}oauth2/v2.0/authorize`;\r\n const options = {};\r\n /*\r\n * TODO: Add a timeout if the authority exists in our library's\r\n * hardcoded list of metadata\r\n */\r\n let match = null;\r\n try {\r\n const response = await this.networkInterface.sendGetRequestAsync(instanceDiscoveryEndpoint, options);\r\n let typedResponseBody;\r\n let metadata;\r\n if (isCloudInstanceDiscoveryResponse(response.body)) {\r\n typedResponseBody =\r\n response.body;\r\n metadata = typedResponseBody.metadata;\r\n this.logger.verbosePii(`tenant_discovery_endpoint is: ${typedResponseBody.tenant_discovery_endpoint}`);\r\n }\r\n else if (isCloudInstanceDiscoveryErrorResponse(response.body)) {\r\n this.logger.warning(`A CloudInstanceDiscoveryErrorResponse was returned. The cloud instance discovery network request's status code is: ${response.status}`);\r\n typedResponseBody =\r\n response.body;\r\n if (typedResponseBody.error === Constants.INVALID_INSTANCE) {\r\n this.logger.error(\"The CloudInstanceDiscoveryErrorResponse error is invalid_instance.\");\r\n return null;\r\n }\r\n this.logger.warning(`The CloudInstanceDiscoveryErrorResponse error is ${typedResponseBody.error}`);\r\n this.logger.warning(`The CloudInstanceDiscoveryErrorResponse error description is ${typedResponseBody.error_description}`);\r\n this.logger.warning(\"Setting the value of the CloudInstanceDiscoveryMetadata (returned from the network) to []\");\r\n metadata = [];\r\n }\r\n else {\r\n this.logger.error(\"AAD did not return a CloudInstanceDiscoveryResponse or CloudInstanceDiscoveryErrorResponse\");\r\n return null;\r\n }\r\n this.logger.verbose(\"Attempting to find a match between the developer's authority and the CloudInstanceDiscoveryMetadata returned from the network request.\");\r\n match = getCloudDiscoveryMetadataFromNetworkResponse(metadata, this.hostnameAndPort);\r\n }\r\n catch (error) {\r\n if (error instanceof AuthError) {\r\n this.logger.error(`There was a network error while attempting to get the cloud discovery instance metadata.\\nError: ${error.errorCode}\\nError Description: ${error.errorMessage}`);\r\n }\r\n else {\r\n const typedError = error;\r\n this.logger.error(`A non-MSALJS error was thrown while attempting to get the cloud instance discovery metadata.\\nError: ${typedError.name}\\nError Description: ${typedError.message}`);\r\n }\r\n return null;\r\n }\r\n // Custom Domain scenario, host is trusted because Instance Discovery call succeeded\r\n if (!match) {\r\n this.logger.warning(\"The developer's authority was not found within the CloudInstanceDiscoveryMetadata returned from the network request.\");\r\n this.logger.verbose(\"Creating custom Authority for custom domain scenario.\");\r\n match = Authority.createCloudDiscoveryMetadataFromHost(this.hostnameAndPort);\r\n }\r\n return match;\r\n }\r\n /**\r\n * Helper function to determine if this host is included in the knownAuthorities config option\r\n */\r\n isInKnownAuthorities() {\r\n const matches = this.authorityOptions.knownAuthorities.filter((authority) => {\r\n return (authority &&\r\n UrlString.getDomainFromUrl(authority).toLowerCase() ===\r\n this.hostnameAndPort);\r\n });\r\n return matches.length > 0;\r\n }\r\n /**\r\n * helper function to populate the authority based on azureCloudOptions\r\n * @param authorityString\r\n * @param azureCloudOptions\r\n */\r\n static generateAuthority(authorityString, azureCloudOptions) {\r\n let authorityAzureCloudInstance;\r\n if (azureCloudOptions &&\r\n azureCloudOptions.azureCloudInstance !== AzureCloudInstance.None) {\r\n const tenant = azureCloudOptions.tenant\r\n ? azureCloudOptions.tenant\r\n : Constants.DEFAULT_COMMON_TENANT;\r\n authorityAzureCloudInstance = `${azureCloudOptions.azureCloudInstance}/${tenant}/`;\r\n }\r\n return authorityAzureCloudInstance\r\n ? authorityAzureCloudInstance\r\n : authorityString;\r\n }\r\n /**\r\n * Creates cloud discovery metadata object from a given host\r\n * @param host\r\n */\r\n static createCloudDiscoveryMetadataFromHost(host) {\r\n return {\r\n preferred_network: host,\r\n preferred_cache: host,\r\n aliases: [host],\r\n };\r\n }\r\n /**\r\n * helper function to generate environment from authority object\r\n */\r\n getPreferredCache() {\r\n if (this.managedIdentity) {\r\n return Constants.DEFAULT_AUTHORITY_HOST;\r\n }\r\n else if (this.discoveryComplete()) {\r\n return this.metadata.preferred_cache;\r\n }\r\n else {\r\n throw createClientAuthError(endpointResolutionError);\r\n }\r\n }\r\n /**\r\n * Returns whether or not the provided host is an alias of this authority instance\r\n * @param host\r\n */\r\n isAlias(host) {\r\n return this.metadata.aliases.indexOf(host) > -1;\r\n }\r\n /**\r\n * Returns whether or not the provided host is an alias of a known Microsoft authority for purposes of endpoint discovery\r\n * @param host\r\n */\r\n isAliasOfKnownMicrosoftAuthority(host) {\r\n return InstanceDiscoveryMetadataAliases.has(host);\r\n }\r\n /**\r\n * Checks whether the provided host is that of a public cloud authority\r\n *\r\n * @param authority string\r\n * @returns bool\r\n */\r\n static isPublicCloudAuthority(host) {\r\n return Constants.KNOWN_PUBLIC_CLOUDS.indexOf(host) >= 0;\r\n }\r\n /**\r\n * Rebuild the authority string with the region\r\n *\r\n * @param host string\r\n * @param region string\r\n */\r\n static buildRegionalAuthorityString(host, region, queryString) {\r\n // Create and validate a Url string object with the initial authority string\r\n const authorityUrlInstance = new UrlString(host);\r\n authorityUrlInstance.validateAsUri();\r\n const authorityUrlParts = authorityUrlInstance.getUrlComponents();\r\n let hostNameAndPort = `${region}.${authorityUrlParts.HostNameAndPort}`;\r\n if (this.isPublicCloudAuthority(authorityUrlParts.HostNameAndPort)) {\r\n hostNameAndPort = `${region}.${Constants.REGIONAL_AUTH_PUBLIC_CLOUD_SUFFIX}`;\r\n }\r\n // Include the query string portion of the url\r\n const url = UrlString.constructAuthorityUriFromObject({\r\n ...authorityUrlInstance.getUrlComponents(),\r\n HostNameAndPort: hostNameAndPort,\r\n }).urlString;\r\n // Add the query string if a query string was provided\r\n if (queryString)\r\n return `${url}?${queryString}`;\r\n return url;\r\n }\r\n /**\r\n * Replace the endpoints in the metadata object with their regional equivalents.\r\n *\r\n * @param metadata OpenIdConfigResponse\r\n * @param azureRegion string\r\n */\r\n static replaceWithRegionalInformation(metadata, azureRegion) {\r\n const regionalMetadata = { ...metadata };\r\n regionalMetadata.authorization_endpoint =\r\n Authority.buildRegionalAuthorityString(regionalMetadata.authorization_endpoint, azureRegion);\r\n regionalMetadata.token_endpoint =\r\n Authority.buildRegionalAuthorityString(regionalMetadata.token_endpoint, azureRegion);\r\n if (regionalMetadata.end_session_endpoint) {\r\n regionalMetadata.end_session_endpoint =\r\n Authority.buildRegionalAuthorityString(regionalMetadata.end_session_endpoint, azureRegion);\r\n }\r\n return regionalMetadata;\r\n }\r\n /**\r\n * Transform CIAM_AUTHORIY as per the below rules:\r\n * If no path segments found and it is a CIAM authority (hostname ends with .ciamlogin.com), then transform it\r\n *\r\n * NOTE: The transformation path should go away once STS supports CIAM with the format: `tenantIdorDomain.ciamlogin.com`\r\n * `ciamlogin.com` can also change in the future and we should accommodate the same\r\n *\r\n * @param authority\r\n */\r\n static transformCIAMAuthority(authority) {\r\n let ciamAuthority = authority;\r\n const authorityUrl = new UrlString(authority);\r\n const authorityUrlComponents = authorityUrl.getUrlComponents();\r\n // check if transformation is needed\r\n if (authorityUrlComponents.PathSegments.length === 0 &&\r\n authorityUrlComponents.HostNameAndPort.endsWith(Constants.CIAM_AUTH_URL)) {\r\n const tenantIdOrDomain = authorityUrlComponents.HostNameAndPort.split(\".\")[0];\r\n ciamAuthority = `${ciamAuthority}${tenantIdOrDomain}${Constants.AAD_TENANT_DOMAIN_SUFFIX}`;\r\n }\r\n return ciamAuthority;\r\n }\r\n}\r\n// Reserved tenant domain names that will not be replaced with tenant id\r\nAuthority.reservedTenantDomains = new Set([\r\n \"{tenant}\",\r\n \"{tenantid}\",\r\n AADAuthorityConstants.COMMON,\r\n AADAuthorityConstants.CONSUMERS,\r\n AADAuthorityConstants.ORGANIZATIONS,\r\n]);\r\n/**\r\n * Extract tenantId from authority\r\n */\r\nfunction getTenantFromAuthorityString(authority) {\r\n const authorityUrl = new UrlString(authority);\r\n const authorityUrlComponents = authorityUrl.getUrlComponents();\r\n /**\r\n * For credential matching purposes, tenantId is the last path segment of the authority URL:\r\n * AAD Authority - domain/tenantId -> Credentials are cached with realm = tenantId\r\n * B2C Authority - domain/{tenantId}?/.../policy -> Credentials are cached with realm = policy\r\n * tenantId is downcased because B2C policies can have mixed case but tfp claim is downcased\r\n *\r\n * Note that we may not have any path segments in certain OIDC scenarios.\r\n */\r\n const tenantId = authorityUrlComponents.PathSegments.slice(-1)[0]?.toLowerCase();\r\n switch (tenantId) {\r\n case AADAuthorityConstants.COMMON:\r\n case AADAuthorityConstants.ORGANIZATIONS:\r\n case AADAuthorityConstants.CONSUMERS:\r\n return undefined;\r\n default:\r\n return tenantId;\r\n }\r\n}\r\nfunction formatAuthorityUri(authorityUri) {\r\n return authorityUri.endsWith(Constants.FORWARD_SLASH)\r\n ? authorityUri\r\n : `${authorityUri}${Constants.FORWARD_SLASH}`;\r\n}\r\nfunction buildStaticAuthorityOptions(authOptions) {\r\n const rawCloudDiscoveryMetadata = authOptions.cloudDiscoveryMetadata;\r\n let cloudDiscoveryMetadata = undefined;\r\n if (rawCloudDiscoveryMetadata) {\r\n try {\r\n cloudDiscoveryMetadata = JSON.parse(rawCloudDiscoveryMetadata);\r\n }\r\n catch (e) {\r\n throw createClientConfigurationError(invalidCloudDiscoveryMetadata);\r\n }\r\n }\r\n return {\r\n canonicalAuthority: authOptions.authority\r\n ? formatAuthorityUri(authOptions.authority)\r\n : undefined,\r\n knownAuthorities: authOptions.knownAuthorities,\r\n cloudDiscoveryMetadata: cloudDiscoveryMetadata,\r\n };\r\n}\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * Create an authority object of the correct type based on the url\r\n * Performs basic authority validation - checks to see if the authority is of a valid type (i.e. aad, b2c, adfs)\r\n *\r\n * Also performs endpoint discovery.\r\n *\r\n * @param authorityUri\r\n * @param networkClient\r\n * @param protocolMode\r\n * @internal\r\n */\r\nasync function createDiscoveredInstance(authorityUri, networkClient, cacheManager, authorityOptions, logger, correlationId, performanceClient) {\r\n performanceClient?.addQueueMeasurement(PerformanceEvents.AuthorityFactoryCreateDiscoveredInstance, correlationId);\r\n const authorityUriFinal = Authority.transformCIAMAuthority(formatAuthorityUri(authorityUri));\r\n // Initialize authority and perform discovery endpoint check.\r\n const acquireTokenAuthority = new Authority(authorityUriFinal, networkClient, cacheManager, authorityOptions, logger, correlationId, performanceClient);\r\n try {\r\n await invokeAsync(acquireTokenAuthority.resolveEndpointsAsync.bind(acquireTokenAuthority), PerformanceEvents.AuthorityResolveEndpointsAsync, logger, performanceClient, correlationId)();\r\n return acquireTokenAuthority;\r\n }\r\n catch (e) {\r\n throw createClientAuthError(endpointResolutionError);\r\n }\r\n}\n\nvar AuthorityFactory = /*#__PURE__*/Object.freeze({\n __proto__: null,\n createDiscoveredInstance: createDiscoveredInstance\n});\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nconst CLIENT_ID = \"client_id\";\r\nconst REDIRECT_URI = \"redirect_uri\";\r\nconst RESPONSE_TYPE = \"response_type\";\r\nconst RESPONSE_MODE = \"response_mode\";\r\nconst GRANT_TYPE = \"grant_type\";\r\nconst CLAIMS = \"claims\";\r\nconst SCOPE = \"scope\";\r\nconst ERROR = \"error\";\r\nconst ERROR_DESCRIPTION = \"error_description\";\r\nconst ACCESS_TOKEN = \"access_token\";\r\nconst ID_TOKEN = \"id_token\";\r\nconst REFRESH_TOKEN = \"refresh_token\";\r\nconst EXPIRES_IN = \"expires_in\";\r\nconst REFRESH_TOKEN_EXPIRES_IN = \"refresh_token_expires_in\";\r\nconst STATE = \"state\";\r\nconst NONCE = \"nonce\";\r\nconst PROMPT = \"prompt\";\r\nconst SESSION_STATE = \"session_state\";\r\nconst CLIENT_INFO = \"client_info\";\r\nconst CODE = \"code\";\r\nconst CODE_CHALLENGE = \"code_challenge\";\r\nconst CODE_CHALLENGE_METHOD = \"code_challenge_method\";\r\nconst CODE_VERIFIER = \"code_verifier\";\r\nconst CLIENT_REQUEST_ID = \"client-request-id\";\r\nconst X_CLIENT_SKU = \"x-client-SKU\";\r\nconst X_CLIENT_VER = \"x-client-VER\";\r\nconst X_CLIENT_OS = \"x-client-OS\";\r\nconst X_CLIENT_CPU = \"x-client-CPU\";\r\nconst X_CLIENT_CURR_TELEM = \"x-client-current-telemetry\";\r\nconst X_CLIENT_LAST_TELEM = \"x-client-last-telemetry\";\r\nconst X_MS_LIB_CAPABILITY = \"x-ms-lib-capability\";\r\nconst X_APP_NAME = \"x-app-name\";\r\nconst X_APP_VER = \"x-app-ver\";\r\nconst POST_LOGOUT_URI = \"post_logout_redirect_uri\";\r\nconst ID_TOKEN_HINT = \"id_token_hint\";\r\nconst DEVICE_CODE = \"device_code\";\r\nconst CLIENT_SECRET = \"client_secret\";\r\nconst CLIENT_ASSERTION = \"client_assertion\";\r\nconst CLIENT_ASSERTION_TYPE = \"client_assertion_type\";\r\nconst TOKEN_TYPE = \"token_type\";\r\nconst REQ_CNF = \"req_cnf\";\r\nconst OBO_ASSERTION = \"assertion\";\r\nconst REQUESTED_TOKEN_USE = \"requested_token_use\";\r\nconst ON_BEHALF_OF = \"on_behalf_of\";\r\nconst FOCI = \"foci\";\r\nconst CCS_HEADER = \"X-AnchorMailbox\";\r\nconst RETURN_SPA_CODE = \"return_spa_code\";\r\nconst NATIVE_BROKER = \"nativebroker\";\r\nconst LOGOUT_HINT = \"logout_hint\";\r\nconst SID = \"sid\";\r\nconst LOGIN_HINT = \"login_hint\";\r\nconst DOMAIN_HINT = \"domain_hint\";\r\nconst X_CLIENT_EXTRA_SKU = \"x-client-xtra-sku\";\r\nconst BROKER_CLIENT_ID = \"brk_client_id\";\r\nconst BROKER_REDIRECT_URI = \"brk_redirect_uri\";\r\nconst INSTANCE_AWARE = \"instance_aware\";\r\nconst EAR_JWK = \"ear_jwk\";\r\nconst EAR_JWE_CRYPTO = \"ear_jwe_crypto\";\n\nvar AADServerParamKeys = /*#__PURE__*/Object.freeze({\n __proto__: null,\n ACCESS_TOKEN: ACCESS_TOKEN,\n BROKER_CLIENT_ID: BROKER_CLIENT_ID,\n BROKER_REDIRECT_URI: BROKER_REDIRECT_URI,\n CCS_HEADER: CCS_HEADER,\n CLAIMS: CLAIMS,\n CLIENT_ASSERTION: CLIENT_ASSERTION,\n CLIENT_ASSERTION_TYPE: CLIENT_ASSERTION_TYPE,\n CLIENT_ID: CLIENT_ID,\n CLIENT_INFO: CLIENT_INFO,\n CLIENT_REQUEST_ID: CLIENT_REQUEST_ID,\n CLIENT_SECRET: CLIENT_SECRET,\n CODE: CODE,\n CODE_CHALLENGE: CODE_CHALLENGE,\n CODE_CHALLENGE_METHOD: CODE_CHALLENGE_METHOD,\n CODE_VERIFIER: CODE_VERIFIER,\n DEVICE_CODE: DEVICE_CODE,\n DOMAIN_HINT: DOMAIN_HINT,\n EAR_JWE_CRYPTO: EAR_JWE_CRYPTO,\n EAR_JWK: EAR_JWK,\n ERROR: ERROR,\n ERROR_DESCRIPTION: ERROR_DESCRIPTION,\n EXPIRES_IN: EXPIRES_IN,\n FOCI: FOCI,\n GRANT_TYPE: GRANT_TYPE,\n ID_TOKEN: ID_TOKEN,\n ID_TOKEN_HINT: ID_TOKEN_HINT,\n INSTANCE_AWARE: INSTANCE_AWARE,\n LOGIN_HINT: LOGIN_HINT,\n LOGOUT_HINT: LOGOUT_HINT,\n NATIVE_BROKER: NATIVE_BROKER,\n NONCE: NONCE,\n OBO_ASSERTION: OBO_ASSERTION,\n ON_BEHALF_OF: ON_BEHALF_OF,\n POST_LOGOUT_URI: POST_LOGOUT_URI,\n PROMPT: PROMPT,\n REDIRECT_URI: REDIRECT_URI,\n REFRESH_TOKEN: REFRESH_TOKEN,\n REFRESH_TOKEN_EXPIRES_IN: REFRESH_TOKEN_EXPIRES_IN,\n REQUESTED_TOKEN_USE: REQUESTED_TOKEN_USE,\n REQ_CNF: REQ_CNF,\n RESPONSE_MODE: RESPONSE_MODE,\n RESPONSE_TYPE: RESPONSE_TYPE,\n RETURN_SPA_CODE: RETURN_SPA_CODE,\n SCOPE: SCOPE,\n SESSION_STATE: SESSION_STATE,\n SID: SID,\n STATE: STATE,\n TOKEN_TYPE: TOKEN_TYPE,\n X_APP_NAME: X_APP_NAME,\n X_APP_VER: X_APP_VER,\n X_CLIENT_CPU: X_CLIENT_CPU,\n X_CLIENT_CURR_TELEM: X_CLIENT_CURR_TELEM,\n X_CLIENT_EXTRA_SKU: X_CLIENT_EXTRA_SKU,\n X_CLIENT_LAST_TELEM: X_CLIENT_LAST_TELEM,\n X_CLIENT_OS: X_CLIENT_OS,\n X_CLIENT_SKU: X_CLIENT_SKU,\n X_CLIENT_VER: X_CLIENT_VER,\n X_MS_LIB_CAPABILITY: X_MS_LIB_CAPABILITY\n});\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nconst DEFAULT_CRYPTO_IMPLEMENTATION = {\r\n createNewGuid: () => {\r\n throw createClientAuthError(methodNotImplemented);\r\n },\r\n base64Decode: () => {\r\n throw createClientAuthError(methodNotImplemented);\r\n },\r\n base64Encode: () => {\r\n throw createClientAuthError(methodNotImplemented);\r\n },\r\n base64UrlEncode: () => {\r\n throw createClientAuthError(methodNotImplemented);\r\n },\r\n encodeKid: () => {\r\n throw createClientAuthError(methodNotImplemented);\r\n },\r\n async getPublicKeyThumbprint() {\r\n throw createClientAuthError(methodNotImplemented);\r\n },\r\n async removeTokenBindingKey() {\r\n throw createClientAuthError(methodNotImplemented);\r\n },\r\n async clearKeystore() {\r\n throw createClientAuthError(methodNotImplemented);\r\n },\r\n async signJwt() {\r\n throw createClientAuthError(methodNotImplemented);\r\n },\r\n async hashString() {\r\n throw createClientAuthError(methodNotImplemented);\r\n },\r\n};\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * Log message level.\r\n */\r\nexports.LogLevel = void 0;\r\n(function (LogLevel) {\r\n LogLevel[LogLevel[\"Error\"] = 0] = \"Error\";\r\n LogLevel[LogLevel[\"Warning\"] = 1] = \"Warning\";\r\n LogLevel[LogLevel[\"Info\"] = 2] = \"Info\";\r\n LogLevel[LogLevel[\"Verbose\"] = 3] = \"Verbose\";\r\n LogLevel[LogLevel[\"Trace\"] = 4] = \"Trace\";\r\n})(exports.LogLevel || (exports.LogLevel = {}));\r\n/**\r\n * Class which facilitates logging of messages to a specific place.\r\n */\r\nclass Logger {\r\n constructor(loggerOptions, packageName, packageVersion) {\r\n // Current log level, defaults to info.\r\n this.level = exports.LogLevel.Info;\r\n const defaultLoggerCallback = () => {\r\n return;\r\n };\r\n const setLoggerOptions = loggerOptions || Logger.createDefaultLoggerOptions();\r\n this.localCallback =\r\n setLoggerOptions.loggerCallback || defaultLoggerCallback;\r\n this.piiLoggingEnabled = setLoggerOptions.piiLoggingEnabled || false;\r\n this.level =\r\n typeof setLoggerOptions.logLevel === \"number\"\r\n ? setLoggerOptions.logLevel\r\n : exports.LogLevel.Info;\r\n this.correlationId =\r\n setLoggerOptions.correlationId || Constants.EMPTY_STRING;\r\n this.packageName = packageName || Constants.EMPTY_STRING;\r\n this.packageVersion = packageVersion || Constants.EMPTY_STRING;\r\n }\r\n static createDefaultLoggerOptions() {\r\n return {\r\n loggerCallback: () => {\r\n // allow users to not set loggerCallback\r\n },\r\n piiLoggingEnabled: false,\r\n logLevel: exports.LogLevel.Info,\r\n };\r\n }\r\n /**\r\n * Create new Logger with existing configurations.\r\n */\r\n clone(packageName, packageVersion, correlationId) {\r\n return new Logger({\r\n loggerCallback: this.localCallback,\r\n piiLoggingEnabled: this.piiLoggingEnabled,\r\n logLevel: this.level,\r\n correlationId: correlationId || this.correlationId,\r\n }, packageName, packageVersion);\r\n }\r\n /**\r\n * Log message with required options.\r\n */\r\n logMessage(logMessage, options) {\r\n if (options.logLevel > this.level ||\r\n (!this.piiLoggingEnabled && options.containsPii)) {\r\n return;\r\n }\r\n const timestamp = new Date().toUTCString();\r\n // Add correlationId to logs if set, correlationId provided on log messages take precedence\r\n const logHeader = `[${timestamp}] : [${options.correlationId || this.correlationId || \"\"}]`;\r\n const log = `${logHeader} : ${this.packageName}@${this.packageVersion} : ${exports.LogLevel[options.logLevel]} - ${logMessage}`;\r\n // debug(`msal:${LogLevel[options.logLevel]}${options.containsPii ? \"-Pii\": Constants.EMPTY_STRING}${options.context ? `:${options.context}` : Constants.EMPTY_STRING}`)(logMessage);\r\n this.executeCallback(options.logLevel, log, options.containsPii || false);\r\n }\r\n /**\r\n * Execute callback with message.\r\n */\r\n executeCallback(level, message, containsPii) {\r\n if (this.localCallback) {\r\n this.localCallback(level, message, containsPii);\r\n }\r\n }\r\n /**\r\n * Logs error messages.\r\n */\r\n error(message, correlationId) {\r\n this.logMessage(message, {\r\n logLevel: exports.LogLevel.Error,\r\n containsPii: false,\r\n correlationId: correlationId || Constants.EMPTY_STRING,\r\n });\r\n }\r\n /**\r\n * Logs error messages with PII.\r\n */\r\n errorPii(message, correlationId) {\r\n this.logMessage(message, {\r\n logLevel: exports.LogLevel.Error,\r\n containsPii: true,\r\n correlationId: correlationId || Constants.EMPTY_STRING,\r\n });\r\n }\r\n /**\r\n * Logs warning messages.\r\n */\r\n warning(message, correlationId) {\r\n this.logMessage(message, {\r\n logLevel: exports.LogLevel.Warning,\r\n containsPii: false,\r\n correlationId: correlationId || Constants.EMPTY_STRING,\r\n });\r\n }\r\n /**\r\n * Logs warning messages with PII.\r\n */\r\n warningPii(message, correlationId) {\r\n this.logMessage(message, {\r\n logLevel: exports.LogLevel.Warning,\r\n containsPii: true,\r\n correlationId: correlationId || Constants.EMPTY_STRING,\r\n });\r\n }\r\n /**\r\n * Logs info messages.\r\n */\r\n info(message, correlationId) {\r\n this.logMessage(message, {\r\n logLevel: exports.LogLevel.Info,\r\n containsPii: false,\r\n correlationId: correlationId || Constants.EMPTY_STRING,\r\n });\r\n }\r\n /**\r\n * Logs info messages with PII.\r\n */\r\n infoPii(message, correlationId) {\r\n this.logMessage(message, {\r\n logLevel: exports.LogLevel.Info,\r\n containsPii: true,\r\n correlationId: correlationId || Constants.EMPTY_STRING,\r\n });\r\n }\r\n /**\r\n * Logs verbose messages.\r\n */\r\n verbose(message, correlationId) {\r\n this.logMessage(message, {\r\n logLevel: exports.LogLevel.Verbose,\r\n containsPii: false,\r\n correlationId: correlationId || Constants.EMPTY_STRING,\r\n });\r\n }\r\n /**\r\n * Logs verbose messages with PII.\r\n */\r\n verbosePii(message, correlationId) {\r\n this.logMessage(message, {\r\n logLevel: exports.LogLevel.Verbose,\r\n containsPii: true,\r\n correlationId: correlationId || Constants.EMPTY_STRING,\r\n });\r\n }\r\n /**\r\n * Logs trace messages.\r\n */\r\n trace(message, correlationId) {\r\n this.logMessage(message, {\r\n logLevel: exports.LogLevel.Trace,\r\n containsPii: false,\r\n correlationId: correlationId || Constants.EMPTY_STRING,\r\n });\r\n }\r\n /**\r\n * Logs trace messages with PII.\r\n */\r\n tracePii(message, correlationId) {\r\n this.logMessage(message, {\r\n logLevel: exports.LogLevel.Trace,\r\n containsPii: true,\r\n correlationId: correlationId || Constants.EMPTY_STRING,\r\n });\r\n }\r\n /**\r\n * Returns whether PII Logging is enabled or not.\r\n */\r\n isPiiLoggingEnabled() {\r\n return this.piiLoggingEnabled || false;\r\n }\r\n}\n\n/* eslint-disable header/header */\r\nconst name = \"@azure/msal-common\";\r\nconst version = \"15.13.2\";\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * The ScopeSet class creates a set of scopes. Scopes are case-insensitive, unique values, so the Set object in JS makes\r\n * the most sense to implement for this class. All scopes are trimmed and converted to lower case strings in intersection and union functions\r\n * to ensure uniqueness of strings.\r\n */\r\nclass ScopeSet {\r\n constructor(inputScopes) {\r\n // Filter empty string and null/undefined array items\r\n const scopeArr = inputScopes\r\n ? StringUtils.trimArrayEntries([...inputScopes])\r\n : [];\r\n const filteredInput = scopeArr\r\n ? StringUtils.removeEmptyStringsFromArray(scopeArr)\r\n : [];\r\n // Check if scopes array has at least one member\r\n if (!filteredInput || !filteredInput.length) {\r\n throw createClientConfigurationError(emptyInputScopesError);\r\n }\r\n this.scopes = new Set(); // Iterator in constructor not supported by IE11\r\n filteredInput.forEach((scope) => this.scopes.add(scope));\r\n }\r\n /**\r\n * Factory method to create ScopeSet from space-delimited string\r\n * @param inputScopeString\r\n * @param appClientId\r\n * @param scopesRequired\r\n */\r\n static fromString(inputScopeString) {\r\n const scopeString = inputScopeString || Constants.EMPTY_STRING;\r\n const inputScopes = scopeString.split(\" \");\r\n return new ScopeSet(inputScopes);\r\n }\r\n /**\r\n * Creates the set of scopes to search for in cache lookups\r\n * @param inputScopeString\r\n * @returns\r\n */\r\n static createSearchScopes(inputScopeString) {\r\n // Handle empty scopes by using default OIDC scopes for cache lookup\r\n const scopesToUse = inputScopeString && inputScopeString.length > 0\r\n ? inputScopeString\r\n : [...OIDC_DEFAULT_SCOPES];\r\n const scopeSet = new ScopeSet(scopesToUse);\r\n if (!scopeSet.containsOnlyOIDCScopes()) {\r\n scopeSet.removeOIDCScopes();\r\n }\r\n else {\r\n scopeSet.removeScope(Constants.OFFLINE_ACCESS_SCOPE);\r\n }\r\n return scopeSet;\r\n }\r\n /**\r\n * Check if a given scope is present in this set of scopes.\r\n * @param scope\r\n */\r\n containsScope(scope) {\r\n const lowerCaseScopes = this.printScopesLowerCase().split(\" \");\r\n const lowerCaseScopesSet = new ScopeSet(lowerCaseScopes);\r\n // compare lowercase scopes\r\n return scope\r\n ? lowerCaseScopesSet.scopes.has(scope.toLowerCase())\r\n : false;\r\n }\r\n /**\r\n * Check if a set of scopes is present in this set of scopes.\r\n * @param scopeSet\r\n */\r\n containsScopeSet(scopeSet) {\r\n if (!scopeSet || scopeSet.scopes.size <= 0) {\r\n return false;\r\n }\r\n return (this.scopes.size >= scopeSet.scopes.size &&\r\n scopeSet.asArray().every((scope) => this.containsScope(scope)));\r\n }\r\n /**\r\n * Check if set of scopes contains only the defaults\r\n */\r\n containsOnlyOIDCScopes() {\r\n let defaultScopeCount = 0;\r\n OIDC_SCOPES.forEach((defaultScope) => {\r\n if (this.containsScope(defaultScope)) {\r\n defaultScopeCount += 1;\r\n }\r\n });\r\n return this.scopes.size === defaultScopeCount;\r\n }\r\n /**\r\n * Appends single scope if passed\r\n * @param newScope\r\n */\r\n appendScope(newScope) {\r\n if (newScope) {\r\n this.scopes.add(newScope.trim());\r\n }\r\n }\r\n /**\r\n * Appends multiple scopes if passed\r\n * @param newScopes\r\n */\r\n appendScopes(newScopes) {\r\n try {\r\n newScopes.forEach((newScope) => this.appendScope(newScope));\r\n }\r\n catch (e) {\r\n throw createClientAuthError(cannotAppendScopeSet);\r\n }\r\n }\r\n /**\r\n * Removes element from set of scopes.\r\n * @param scope\r\n */\r\n removeScope(scope) {\r\n if (!scope) {\r\n throw createClientAuthError(cannotRemoveEmptyScope);\r\n }\r\n this.scopes.delete(scope.trim());\r\n }\r\n /**\r\n * Removes default scopes from set of scopes\r\n * Primarily used to prevent cache misses if the default scopes are not returned from the server\r\n */\r\n removeOIDCScopes() {\r\n OIDC_SCOPES.forEach((defaultScope) => {\r\n this.scopes.delete(defaultScope);\r\n });\r\n }\r\n /**\r\n * Combines an array of scopes with the current set of scopes.\r\n * @param otherScopes\r\n */\r\n unionScopeSets(otherScopes) {\r\n if (!otherScopes) {\r\n throw createClientAuthError(emptyInputScopeSet);\r\n }\r\n const unionScopes = new Set(); // Iterator in constructor not supported in IE11\r\n otherScopes.scopes.forEach((scope) => unionScopes.add(scope.toLowerCase()));\r\n this.scopes.forEach((scope) => unionScopes.add(scope.toLowerCase()));\r\n return unionScopes;\r\n }\r\n /**\r\n * Check if scopes intersect between this set and another.\r\n * @param otherScopes\r\n */\r\n intersectingScopeSets(otherScopes) {\r\n if (!otherScopes) {\r\n throw createClientAuthError(emptyInputScopeSet);\r\n }\r\n // Do not allow OIDC scopes to be the only intersecting scopes\r\n if (!otherScopes.containsOnlyOIDCScopes()) {\r\n otherScopes.removeOIDCScopes();\r\n }\r\n const unionScopes = this.unionScopeSets(otherScopes);\r\n const sizeOtherScopes = otherScopes.getScopeCount();\r\n const sizeThisScopes = this.getScopeCount();\r\n const sizeUnionScopes = unionScopes.size;\r\n return sizeUnionScopes < sizeThisScopes + sizeOtherScopes;\r\n }\r\n /**\r\n * Returns size of set of scopes.\r\n */\r\n getScopeCount() {\r\n return this.scopes.size;\r\n }\r\n /**\r\n * Returns the scopes as an array of string values\r\n */\r\n asArray() {\r\n const array = [];\r\n this.scopes.forEach((val) => array.push(val));\r\n return array;\r\n }\r\n /**\r\n * Prints scopes into a space-delimited string\r\n */\r\n printScopes() {\r\n if (this.scopes) {\r\n const scopeArr = this.asArray();\r\n return scopeArr.join(\" \");\r\n }\r\n return Constants.EMPTY_STRING;\r\n }\r\n /**\r\n * Prints scopes into a space-delimited lower-case string (used for caching)\r\n */\r\n printScopesLowerCase() {\r\n return this.printScopes().toLowerCase();\r\n }\r\n}\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * Function to build a client info object from server clientInfo string\r\n * @param rawClientInfo\r\n * @param crypto\r\n */\r\nfunction buildClientInfo(rawClientInfo, base64Decode) {\r\n if (!rawClientInfo) {\r\n throw createClientAuthError(clientInfoEmptyError);\r\n }\r\n try {\r\n const decodedClientInfo = base64Decode(rawClientInfo);\r\n return JSON.parse(decodedClientInfo);\r\n }\r\n catch (e) {\r\n throw createClientAuthError(clientInfoDecodingError);\r\n }\r\n}\r\n/**\r\n * Function to build a client info object from cached homeAccountId string\r\n * @param homeAccountId\r\n */\r\nfunction buildClientInfoFromHomeAccountId(homeAccountId) {\r\n if (!homeAccountId) {\r\n throw createClientAuthError(clientInfoDecodingError);\r\n }\r\n const clientInfoParts = homeAccountId.split(Separators.CLIENT_INFO_SEPARATOR, 2);\r\n return {\r\n uid: clientInfoParts[0],\r\n utid: clientInfoParts.length < 2\r\n ? Constants.EMPTY_STRING\r\n : clientInfoParts[1],\r\n };\r\n}\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * Returns true if tenantId matches the utid portion of homeAccountId\r\n * @param tenantId\r\n * @param homeAccountId\r\n * @returns\r\n */\r\nfunction tenantIdMatchesHomeTenant(tenantId, homeAccountId) {\r\n return (!!tenantId &&\r\n !!homeAccountId &&\r\n tenantId === homeAccountId.split(\".\")[1]);\r\n}\r\n/**\r\n * Build tenant profile\r\n * @param homeAccountId - Home account identifier for this account object\r\n * @param localAccountId - Local account identifer for this account object\r\n * @param tenantId - Full tenant or organizational id that this account belongs to\r\n * @param idTokenClaims - Claims from the ID token\r\n * @returns\r\n */\r\nfunction buildTenantProfile(homeAccountId, localAccountId, tenantId, idTokenClaims) {\r\n if (idTokenClaims) {\r\n const { oid, sub, tid, name, tfp, acr, preferred_username, upn, login_hint, } = idTokenClaims;\r\n /**\r\n * Since there is no way to determine if the authority is AAD or B2C, we exhaust all the possible claims that can serve as tenant ID with the following precedence:\r\n * tid - TenantID claim that identifies the tenant that issued the token in AAD. Expected in all AAD ID tokens, not present in B2C ID Tokens.\r\n * tfp - Trust Framework Policy claim that identifies the policy that was used to authenticate the user. Functions as tenant for B2C scenarios.\r\n * acr - Authentication Context Class Reference claim used only with older B2C policies. Fallback in case tfp is not present, but likely won't be present anyway.\r\n */\r\n const tenantId = tid || tfp || acr || \"\";\r\n return {\r\n tenantId: tenantId,\r\n localAccountId: oid || sub || \"\",\r\n name: name,\r\n username: preferred_username || upn || \"\",\r\n loginHint: login_hint,\r\n isHomeTenant: tenantIdMatchesHomeTenant(tenantId, homeAccountId),\r\n };\r\n }\r\n else {\r\n return {\r\n tenantId,\r\n localAccountId,\r\n username: \"\",\r\n isHomeTenant: tenantIdMatchesHomeTenant(tenantId, homeAccountId),\r\n };\r\n }\r\n}\r\n/**\r\n * Replaces account info that varies by tenant profile sourced from the ID token claims passed in with the tenant-specific account info\r\n * @param baseAccountInfo\r\n * @param idTokenClaims\r\n * @returns\r\n */\r\nfunction updateAccountTenantProfileData(baseAccountInfo, tenantProfile, idTokenClaims, idTokenSecret) {\r\n let updatedAccountInfo = baseAccountInfo;\r\n // Tenant Profile overrides passed in account info\r\n if (tenantProfile) {\r\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n const { isHomeTenant, ...tenantProfileOverride } = tenantProfile;\r\n updatedAccountInfo = { ...baseAccountInfo, ...tenantProfileOverride };\r\n }\r\n // ID token claims override passed in account info and tenant profile\r\n if (idTokenClaims) {\r\n // Ignore isHomeTenant, loginHint, and sid which are part of tenant profile but not base account info\r\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n const { isHomeTenant, ...claimsSourcedTenantProfile } = buildTenantProfile(baseAccountInfo.homeAccountId, baseAccountInfo.localAccountId, baseAccountInfo.tenantId, idTokenClaims);\r\n updatedAccountInfo = {\r\n ...updatedAccountInfo,\r\n ...claimsSourcedTenantProfile,\r\n idTokenClaims: idTokenClaims,\r\n idToken: idTokenSecret,\r\n };\r\n return updatedAccountInfo;\r\n }\r\n return updatedAccountInfo;\r\n}\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * Gets tenantId from available ID token claims to set as credential realm with the following precedence:\r\n * 1. tid - if the token is acquired from an Azure AD tenant tid will be present\r\n * 2. tfp - if the token is acquired from a modern B2C tenant tfp should be present\r\n * 3. acr - if the token is acquired from a legacy B2C tenant acr should be present\r\n * Downcased to match the realm case-insensitive comparison requirements\r\n * @param idTokenClaims\r\n * @returns\r\n */\r\nfunction getTenantIdFromIdTokenClaims(idTokenClaims) {\r\n if (idTokenClaims) {\r\n const tenantId = idTokenClaims.tid || idTokenClaims.tfp || idTokenClaims.acr;\r\n return tenantId || null;\r\n }\r\n return null;\r\n}\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * Type that defines required and optional parameters for an Account field (based on universal cache schema implemented by all MSALs).\r\n *\r\n * Key : Value Schema\r\n *\r\n * Key: --\r\n *\r\n * Value Schema:\r\n * {\r\n * homeAccountId: home account identifier for the auth scheme,\r\n * environment: entity that issued the token, represented as a full host\r\n * realm: Full tenant or organizational identifier that the account belongs to\r\n * localAccountId: Original tenant-specific accountID, usually used for legacy cases\r\n * username: primary username that represents the user, usually corresponds to preferred_username in the v2 endpt\r\n * authorityType: Accounts authority type as a string\r\n * name: Full name for the account, including given name and family name,\r\n * lastModificationTime: last time this entity was modified in the cache\r\n * lastModificationApp:\r\n * nativeAccountId: Account identifier on the native device\r\n * tenantProfiles: Array of tenant profile objects for each tenant that the account has authenticated with in the browser\r\n * }\r\n * @internal\r\n */\r\nclass AccountEntity {\r\n /**\r\n * Returns the AccountInfo interface for this account.\r\n */\r\n static getAccountInfo(accountEntity) {\r\n return {\r\n homeAccountId: accountEntity.homeAccountId,\r\n environment: accountEntity.environment,\r\n tenantId: accountEntity.realm,\r\n username: accountEntity.username,\r\n localAccountId: accountEntity.localAccountId,\r\n loginHint: accountEntity.loginHint,\r\n name: accountEntity.name,\r\n nativeAccountId: accountEntity.nativeAccountId,\r\n authorityType: accountEntity.authorityType,\r\n // Deserialize tenant profiles array into a Map\r\n tenantProfiles: new Map((accountEntity.tenantProfiles || []).map((tenantProfile) => {\r\n return [tenantProfile.tenantId, tenantProfile];\r\n })),\r\n dataBoundary: accountEntity.dataBoundary,\r\n };\r\n }\r\n /**\r\n * Returns true if the account entity is in single tenant format (outdated), false otherwise\r\n */\r\n isSingleTenant() {\r\n return !this.tenantProfiles;\r\n }\r\n /**\r\n * Build Account cache from IdToken, clientInfo and authority/policy. Associated with AAD.\r\n * @param accountDetails\r\n */\r\n static createAccount(accountDetails, authority, base64Decode) {\r\n const account = new AccountEntity();\r\n if (authority.authorityType === AuthorityType.Adfs) {\r\n account.authorityType = CacheAccountType.ADFS_ACCOUNT_TYPE;\r\n }\r\n else if (authority.protocolMode === ProtocolMode.OIDC) {\r\n account.authorityType = CacheAccountType.GENERIC_ACCOUNT_TYPE;\r\n }\r\n else {\r\n account.authorityType = CacheAccountType.MSSTS_ACCOUNT_TYPE;\r\n }\r\n let clientInfo;\r\n if (accountDetails.clientInfo && base64Decode) {\r\n clientInfo = buildClientInfo(accountDetails.clientInfo, base64Decode);\r\n if (clientInfo.xms_tdbr) {\r\n account.dataBoundary =\r\n clientInfo.xms_tdbr === \"EU\" ? \"EU\" : \"None\";\r\n }\r\n }\r\n account.clientInfo = accountDetails.clientInfo;\r\n account.homeAccountId = accountDetails.homeAccountId;\r\n account.nativeAccountId = accountDetails.nativeAccountId;\r\n const env = accountDetails.environment ||\r\n (authority && authority.getPreferredCache());\r\n if (!env) {\r\n throw createClientAuthError(invalidCacheEnvironment);\r\n }\r\n account.environment = env;\r\n // non AAD scenarios can have empty realm\r\n account.realm =\r\n clientInfo?.utid ||\r\n getTenantIdFromIdTokenClaims(accountDetails.idTokenClaims) ||\r\n \"\";\r\n // How do you account for MSA CID here?\r\n account.localAccountId =\r\n clientInfo?.uid ||\r\n accountDetails.idTokenClaims?.oid ||\r\n accountDetails.idTokenClaims?.sub ||\r\n \"\";\r\n /*\r\n * In B2C scenarios the emails claim is used instead of preferred_username and it is an array.\r\n * In most cases it will contain a single email. This field should not be relied upon if a custom\r\n * policy is configured to return more than 1 email.\r\n */\r\n const preferredUsername = accountDetails.idTokenClaims?.preferred_username ||\r\n accountDetails.idTokenClaims?.upn;\r\n const email = accountDetails.idTokenClaims?.emails\r\n ? accountDetails.idTokenClaims.emails[0]\r\n : null;\r\n account.username = preferredUsername || email || \"\";\r\n account.loginHint = accountDetails.idTokenClaims?.login_hint;\r\n account.name = accountDetails.idTokenClaims?.name || \"\";\r\n account.cloudGraphHostName = accountDetails.cloudGraphHostName;\r\n account.msGraphHost = accountDetails.msGraphHost;\r\n if (accountDetails.tenantProfiles) {\r\n account.tenantProfiles = accountDetails.tenantProfiles;\r\n }\r\n else {\r\n const tenantProfile = buildTenantProfile(accountDetails.homeAccountId, account.localAccountId, account.realm, accountDetails.idTokenClaims);\r\n account.tenantProfiles = [tenantProfile];\r\n }\r\n return account;\r\n }\r\n /**\r\n * Creates an AccountEntity object from AccountInfo\r\n * @param accountInfo\r\n * @param cloudGraphHostName\r\n * @param msGraphHost\r\n * @returns\r\n */\r\n static createFromAccountInfo(accountInfo, cloudGraphHostName, msGraphHost) {\r\n const account = new AccountEntity();\r\n account.authorityType =\r\n accountInfo.authorityType || CacheAccountType.GENERIC_ACCOUNT_TYPE;\r\n account.homeAccountId = accountInfo.homeAccountId;\r\n account.localAccountId = accountInfo.localAccountId;\r\n account.nativeAccountId = accountInfo.nativeAccountId;\r\n account.realm = accountInfo.tenantId;\r\n account.environment = accountInfo.environment;\r\n account.username = accountInfo.username;\r\n account.name = accountInfo.name;\r\n account.loginHint = accountInfo.loginHint;\r\n account.cloudGraphHostName = cloudGraphHostName;\r\n account.msGraphHost = msGraphHost;\r\n // Serialize tenant profiles map into an array\r\n account.tenantProfiles = Array.from(accountInfo.tenantProfiles?.values() || []);\r\n account.dataBoundary = accountInfo.dataBoundary;\r\n return account;\r\n }\r\n /**\r\n * Generate HomeAccountId from server response\r\n * @param serverClientInfo\r\n * @param authType\r\n */\r\n static generateHomeAccountId(serverClientInfo, authType, logger, cryptoObj, idTokenClaims) {\r\n // since ADFS/DSTS do not have tid and does not set client_info\r\n if (!(authType === AuthorityType.Adfs ||\r\n authType === AuthorityType.Dsts)) {\r\n // for cases where there is clientInfo\r\n if (serverClientInfo) {\r\n try {\r\n const clientInfo = buildClientInfo(serverClientInfo, cryptoObj.base64Decode);\r\n if (clientInfo.uid && clientInfo.utid) {\r\n return `${clientInfo.uid}.${clientInfo.utid}`;\r\n }\r\n }\r\n catch (e) { }\r\n }\r\n logger.warning(\"No client info in response\");\r\n }\r\n // default to \"sub\" claim\r\n return idTokenClaims?.sub || \"\";\r\n }\r\n /**\r\n * Validates an entity: checks for all expected params\r\n * @param entity\r\n */\r\n static isAccountEntity(entity) {\r\n if (!entity) {\r\n return false;\r\n }\r\n return (entity.hasOwnProperty(\"homeAccountId\") &&\r\n entity.hasOwnProperty(\"environment\") &&\r\n entity.hasOwnProperty(\"realm\") &&\r\n entity.hasOwnProperty(\"localAccountId\") &&\r\n entity.hasOwnProperty(\"username\") &&\r\n entity.hasOwnProperty(\"authorityType\"));\r\n }\r\n /**\r\n * Helper function to determine whether 2 accountInfo objects represent the same account\r\n * @param accountA\r\n * @param accountB\r\n * @param compareClaims - If set to true idTokenClaims will also be compared to determine account equality\r\n */\r\n static accountInfoIsEqual(accountA, accountB, compareClaims) {\r\n if (!accountA || !accountB) {\r\n return false;\r\n }\r\n let claimsMatch = true; // default to true so as to not fail comparison below if compareClaims: false\r\n if (compareClaims) {\r\n const accountAClaims = (accountA.idTokenClaims ||\r\n {});\r\n const accountBClaims = (accountB.idTokenClaims ||\r\n {});\r\n // issued at timestamp and nonce are expected to change each time a new id token is acquired\r\n claimsMatch =\r\n accountAClaims.iat === accountBClaims.iat &&\r\n accountAClaims.nonce === accountBClaims.nonce;\r\n }\r\n return (accountA.homeAccountId === accountB.homeAccountId &&\r\n accountA.localAccountId === accountB.localAccountId &&\r\n accountA.username === accountB.username &&\r\n accountA.tenantId === accountB.tenantId &&\r\n accountA.loginHint === accountB.loginHint &&\r\n accountA.environment === accountB.environment &&\r\n accountA.nativeAccountId === accountB.nativeAccountId &&\r\n claimsMatch);\r\n }\r\n}\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nconst cacheQuotaExceeded = \"cache_quota_exceeded\";\r\nconst cacheErrorUnknown = \"cache_error_unknown\";\n\nvar CacheErrorCodes = /*#__PURE__*/Object.freeze({\n __proto__: null,\n cacheErrorUnknown: cacheErrorUnknown,\n cacheQuotaExceeded: cacheQuotaExceeded\n});\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nconst CacheErrorMessages = {\r\n [cacheQuotaExceeded]: \"Exceeded cache storage capacity.\",\r\n [cacheErrorUnknown]: \"Unexpected error occurred when using cache storage.\",\r\n};\r\n/**\r\n * Error thrown when there is an error with the cache\r\n */\r\nclass CacheError extends AuthError {\r\n constructor(errorCode, errorMessage) {\r\n const message = errorMessage ||\r\n (CacheErrorMessages[errorCode]\r\n ? CacheErrorMessages[errorCode]\r\n : CacheErrorMessages[cacheErrorUnknown]);\r\n super(`${errorCode}: ${message}`);\r\n Object.setPrototypeOf(this, CacheError.prototype);\r\n this.name = \"CacheError\";\r\n this.errorCode = errorCode;\r\n this.errorMessage = message;\r\n }\r\n}\r\n/**\r\n * Helper function to wrap browser errors in a CacheError object\r\n * @param e\r\n * @returns\r\n */\r\nfunction createCacheError(e) {\r\n if (!(e instanceof Error)) {\r\n return new CacheError(cacheErrorUnknown);\r\n }\r\n if (e.name === \"QuotaExceededError\" ||\r\n e.name === \"NS_ERROR_DOM_QUOTA_REACHED\" ||\r\n e.message.includes(\"exceeded the quota\")) {\r\n return new CacheError(cacheQuotaExceeded);\r\n }\r\n else {\r\n return new CacheError(e.name, e.message);\r\n }\r\n}\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * Interface class which implement cache storage functions used by MSAL to perform validity checks, and store tokens.\r\n * @internal\r\n */\r\nclass CacheManager {\r\n constructor(clientId, cryptoImpl, logger, performanceClient, staticAuthorityOptions) {\r\n this.clientId = clientId;\r\n this.cryptoImpl = cryptoImpl;\r\n this.commonLogger = logger.clone(name, version);\r\n this.staticAuthorityOptions = staticAuthorityOptions;\r\n this.performanceClient = performanceClient;\r\n }\r\n /**\r\n * Returns all the accounts in the cache that match the optional filter. If no filter is provided, all accounts are returned.\r\n * @param accountFilter - (Optional) filter to narrow down the accounts returned\r\n * @returns Array of AccountInfo objects in cache\r\n */\r\n getAllAccounts(accountFilter, correlationId) {\r\n return this.buildTenantProfiles(this.getAccountsFilteredBy(accountFilter, correlationId), correlationId, accountFilter);\r\n }\r\n /**\r\n * Gets first tenanted AccountInfo object found based on provided filters\r\n */\r\n getAccountInfoFilteredBy(accountFilter, correlationId) {\r\n if (Object.keys(accountFilter).length === 0 ||\r\n Object.values(accountFilter).every((value) => !value)) {\r\n this.commonLogger.warning(\"getAccountInfoFilteredBy: Account filter is empty or invalid, returning null\");\r\n return null;\r\n }\r\n const allAccounts = this.getAllAccounts(accountFilter, correlationId);\r\n if (allAccounts.length > 1) {\r\n // If one or more accounts are found, prioritize accounts that have an ID token\r\n const sortedAccounts = allAccounts.sort((account) => {\r\n return account.idTokenClaims ? -1 : 1;\r\n });\r\n return sortedAccounts[0];\r\n }\r\n else if (allAccounts.length === 1) {\r\n // If only one account is found, return it regardless of whether a matching ID token was found\r\n return allAccounts[0];\r\n }\r\n else {\r\n return null;\r\n }\r\n }\r\n /**\r\n * Returns a single matching\r\n * @param accountFilter\r\n * @returns\r\n */\r\n getBaseAccountInfo(accountFilter, correlationId) {\r\n const accountEntities = this.getAccountsFilteredBy(accountFilter, correlationId);\r\n if (accountEntities.length > 0) {\r\n return AccountEntity.getAccountInfo(accountEntities[0]);\r\n }\r\n else {\r\n return null;\r\n }\r\n }\r\n /**\r\n * Matches filtered account entities with cached ID tokens that match the tenant profile-specific account filters\r\n * and builds the account info objects from the matching ID token's claims\r\n * @param cachedAccounts\r\n * @param accountFilter\r\n * @returns Array of AccountInfo objects that match account and tenant profile filters\r\n */\r\n buildTenantProfiles(cachedAccounts, correlationId, accountFilter) {\r\n return cachedAccounts.flatMap((accountEntity) => {\r\n return this.getTenantProfilesFromAccountEntity(accountEntity, correlationId, accountFilter?.tenantId, accountFilter);\r\n });\r\n }\r\n getTenantedAccountInfoByFilter(accountInfo, tokenKeys, tenantProfile, correlationId, tenantProfileFilter) {\r\n let tenantedAccountInfo = null;\r\n let idTokenClaims;\r\n if (tenantProfileFilter) {\r\n if (!this.tenantProfileMatchesFilter(tenantProfile, tenantProfileFilter)) {\r\n return null;\r\n }\r\n }\r\n const idToken = this.getIdToken(accountInfo, correlationId, tokenKeys, tenantProfile.tenantId);\r\n if (idToken) {\r\n idTokenClaims = extractTokenClaims(idToken.secret, this.cryptoImpl.base64Decode);\r\n if (!this.idTokenClaimsMatchTenantProfileFilter(idTokenClaims, tenantProfileFilter)) {\r\n // ID token sourced claims don't match so this tenant profile is not a match\r\n return null;\r\n }\r\n }\r\n // Expand tenant profile into account info based on matching tenant profile and if available matching ID token claims\r\n tenantedAccountInfo = updateAccountTenantProfileData(accountInfo, tenantProfile, idTokenClaims, idToken?.secret);\r\n return tenantedAccountInfo;\r\n }\r\n getTenantProfilesFromAccountEntity(accountEntity, correlationId, targetTenantId, tenantProfileFilter) {\r\n const accountInfo = AccountEntity.getAccountInfo(accountEntity);\r\n let searchTenantProfiles = accountInfo.tenantProfiles || new Map();\r\n const tokenKeys = this.getTokenKeys();\r\n // If a tenant ID was provided, only return the tenant profile for that tenant ID if it exists\r\n if (targetTenantId) {\r\n const tenantProfile = searchTenantProfiles.get(targetTenantId);\r\n if (tenantProfile) {\r\n // Reduce search field to just this tenant profile\r\n searchTenantProfiles = new Map([\r\n [targetTenantId, tenantProfile],\r\n ]);\r\n }\r\n else {\r\n // No tenant profile for search tenant ID, return empty array\r\n return [];\r\n }\r\n }\r\n const matchingTenantProfiles = [];\r\n searchTenantProfiles.forEach((tenantProfile) => {\r\n const tenantedAccountInfo = this.getTenantedAccountInfoByFilter(accountInfo, tokenKeys, tenantProfile, correlationId, tenantProfileFilter);\r\n if (tenantedAccountInfo) {\r\n matchingTenantProfiles.push(tenantedAccountInfo);\r\n }\r\n });\r\n return matchingTenantProfiles;\r\n }\r\n tenantProfileMatchesFilter(tenantProfile, tenantProfileFilter) {\r\n if (!!tenantProfileFilter.localAccountId &&\r\n !this.matchLocalAccountIdFromTenantProfile(tenantProfile, tenantProfileFilter.localAccountId)) {\r\n return false;\r\n }\r\n if (!!tenantProfileFilter.name &&\r\n !(tenantProfile.name === tenantProfileFilter.name)) {\r\n return false;\r\n }\r\n if (tenantProfileFilter.isHomeTenant !== undefined &&\r\n !(tenantProfile.isHomeTenant === tenantProfileFilter.isHomeTenant)) {\r\n return false;\r\n }\r\n return true;\r\n }\r\n idTokenClaimsMatchTenantProfileFilter(idTokenClaims, tenantProfileFilter) {\r\n // Tenant Profile filtering\r\n if (tenantProfileFilter) {\r\n if (!!tenantProfileFilter.localAccountId &&\r\n !this.matchLocalAccountIdFromTokenClaims(idTokenClaims, tenantProfileFilter.localAccountId)) {\r\n return false;\r\n }\r\n if (!!tenantProfileFilter.loginHint &&\r\n !this.matchLoginHintFromTokenClaims(idTokenClaims, tenantProfileFilter.loginHint)) {\r\n return false;\r\n }\r\n if (!!tenantProfileFilter.username &&\r\n !this.matchUsername(idTokenClaims.preferred_username, tenantProfileFilter.username)) {\r\n return false;\r\n }\r\n if (!!tenantProfileFilter.name &&\r\n !this.matchName(idTokenClaims, tenantProfileFilter.name)) {\r\n return false;\r\n }\r\n if (!!tenantProfileFilter.sid &&\r\n !this.matchSid(idTokenClaims, tenantProfileFilter.sid)) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n }\r\n /**\r\n * saves a cache record\r\n * @param cacheRecord {CacheRecord}\r\n * @param correlationId {?string} correlation id\r\n * @param kmsi - Keep Me Signed In\r\n * @param storeInCache {?StoreInCache}\r\n */\r\n async saveCacheRecord(cacheRecord, correlationId, kmsi, storeInCache) {\r\n if (!cacheRecord) {\r\n throw createClientAuthError(invalidCacheRecord);\r\n }\r\n try {\r\n if (!!cacheRecord.account) {\r\n await this.setAccount(cacheRecord.account, correlationId, kmsi);\r\n }\r\n if (!!cacheRecord.idToken && storeInCache?.idToken !== false) {\r\n await this.setIdTokenCredential(cacheRecord.idToken, correlationId, kmsi);\r\n }\r\n if (!!cacheRecord.accessToken &&\r\n storeInCache?.accessToken !== false) {\r\n await this.saveAccessToken(cacheRecord.accessToken, correlationId, kmsi);\r\n }\r\n if (!!cacheRecord.refreshToken &&\r\n storeInCache?.refreshToken !== false) {\r\n await this.setRefreshTokenCredential(cacheRecord.refreshToken, correlationId, kmsi);\r\n }\r\n if (!!cacheRecord.appMetadata) {\r\n this.setAppMetadata(cacheRecord.appMetadata, correlationId);\r\n }\r\n }\r\n catch (e) {\r\n this.commonLogger?.error(`CacheManager.saveCacheRecord: failed`);\r\n if (e instanceof AuthError) {\r\n throw e;\r\n }\r\n else {\r\n throw createCacheError(e);\r\n }\r\n }\r\n }\r\n /**\r\n * saves access token credential\r\n * @param credential\r\n */\r\n async saveAccessToken(credential, correlationId, kmsi) {\r\n const accessTokenFilter = {\r\n clientId: credential.clientId,\r\n credentialType: credential.credentialType,\r\n environment: credential.environment,\r\n homeAccountId: credential.homeAccountId,\r\n realm: credential.realm,\r\n tokenType: credential.tokenType,\r\n requestedClaimsHash: credential.requestedClaimsHash,\r\n };\r\n const tokenKeys = this.getTokenKeys();\r\n const currentScopes = ScopeSet.fromString(credential.target);\r\n tokenKeys.accessToken.forEach((key) => {\r\n if (!this.accessTokenKeyMatchesFilter(key, accessTokenFilter, false)) {\r\n return;\r\n }\r\n const tokenEntity = this.getAccessTokenCredential(key, correlationId);\r\n if (tokenEntity &&\r\n this.credentialMatchesFilter(tokenEntity, accessTokenFilter)) {\r\n const tokenScopeSet = ScopeSet.fromString(tokenEntity.target);\r\n if (tokenScopeSet.intersectingScopeSets(currentScopes)) {\r\n this.removeAccessToken(key, correlationId);\r\n }\r\n }\r\n });\r\n await this.setAccessTokenCredential(credential, correlationId, kmsi);\r\n }\r\n /**\r\n * Retrieve account entities matching all provided tenant-agnostic filters; if no filter is set, get all account entities in the cache\r\n * Not checking for casing as keys are all generated in lower case, remember to convert to lower case if object properties are compared\r\n * @param accountFilter - An object containing Account properties to filter by\r\n */\r\n getAccountsFilteredBy(accountFilter, correlationId) {\r\n const allAccountKeys = this.getAccountKeys();\r\n const matchingAccounts = [];\r\n allAccountKeys.forEach((cacheKey) => {\r\n const entity = this.getAccount(cacheKey, correlationId);\r\n // Match base account fields\r\n if (!entity) {\r\n return;\r\n }\r\n if (!!accountFilter.homeAccountId &&\r\n !this.matchHomeAccountId(entity, accountFilter.homeAccountId)) {\r\n return;\r\n }\r\n if (!!accountFilter.username &&\r\n !this.matchUsername(entity.username, accountFilter.username)) {\r\n return;\r\n }\r\n if (!!accountFilter.environment &&\r\n !this.matchEnvironment(entity, accountFilter.environment)) {\r\n return;\r\n }\r\n if (!!accountFilter.realm &&\r\n !this.matchRealm(entity, accountFilter.realm)) {\r\n return;\r\n }\r\n if (!!accountFilter.nativeAccountId &&\r\n !this.matchNativeAccountId(entity, accountFilter.nativeAccountId)) {\r\n return;\r\n }\r\n if (!!accountFilter.authorityType &&\r\n !this.matchAuthorityType(entity, accountFilter.authorityType)) {\r\n return;\r\n }\r\n // If at least one tenant profile matches the tenant profile filter, add the account to the list of matching accounts\r\n const tenantProfileFilter = {\r\n localAccountId: accountFilter?.localAccountId,\r\n name: accountFilter?.name,\r\n };\r\n const matchingTenantProfiles = entity.tenantProfiles?.filter((tenantProfile) => {\r\n return this.tenantProfileMatchesFilter(tenantProfile, tenantProfileFilter);\r\n });\r\n if (matchingTenantProfiles && matchingTenantProfiles.length === 0) {\r\n // No tenant profile for this account matches filter, don't add to list of matching accounts\r\n return;\r\n }\r\n matchingAccounts.push(entity);\r\n });\r\n return matchingAccounts;\r\n }\r\n /**\r\n * Returns whether or not the given credential entity matches the filter\r\n * @param entity\r\n * @param filter\r\n * @returns\r\n */\r\n credentialMatchesFilter(entity, filter) {\r\n if (!!filter.clientId && !this.matchClientId(entity, filter.clientId)) {\r\n return false;\r\n }\r\n if (!!filter.userAssertionHash &&\r\n !this.matchUserAssertionHash(entity, filter.userAssertionHash)) {\r\n return false;\r\n }\r\n /*\r\n * homeAccountId can be undefined, and we want to filter out cached items that have a homeAccountId of \"\"\r\n * because we don't want a client_credential request to return a cached token that has a homeAccountId\r\n */\r\n if (typeof filter.homeAccountId === \"string\" &&\r\n !this.matchHomeAccountId(entity, filter.homeAccountId)) {\r\n return false;\r\n }\r\n if (!!filter.environment &&\r\n !this.matchEnvironment(entity, filter.environment)) {\r\n return false;\r\n }\r\n if (!!filter.realm && !this.matchRealm(entity, filter.realm)) {\r\n return false;\r\n }\r\n if (!!filter.credentialType &&\r\n !this.matchCredentialType(entity, filter.credentialType)) {\r\n return false;\r\n }\r\n if (!!filter.familyId && !this.matchFamilyId(entity, filter.familyId)) {\r\n return false;\r\n }\r\n /*\r\n * idTokens do not have \"target\", target specific refreshTokens do exist for some types of authentication\r\n * Resource specific refresh tokens case will be added when the support is deemed necessary\r\n */\r\n if (!!filter.target && !this.matchTarget(entity, filter.target)) {\r\n return false;\r\n }\r\n // If request OR cached entity has requested Claims Hash, check if they match\r\n if (filter.requestedClaimsHash || entity.requestedClaimsHash) {\r\n // Don't match if either is undefined or they are different\r\n if (entity.requestedClaimsHash !== filter.requestedClaimsHash) {\r\n return false;\r\n }\r\n }\r\n // Access Token with Auth Scheme specific matching\r\n if (entity.credentialType ===\r\n CredentialType.ACCESS_TOKEN_WITH_AUTH_SCHEME) {\r\n if (!!filter.tokenType &&\r\n !this.matchTokenType(entity, filter.tokenType)) {\r\n return false;\r\n }\r\n // KeyId (sshKid) in request must match cached SSH certificate keyId because SSH cert is bound to a specific key\r\n if (filter.tokenType === AuthenticationScheme.SSH) {\r\n if (filter.keyId && !this.matchKeyId(entity, filter.keyId)) {\r\n return false;\r\n }\r\n }\r\n }\r\n return true;\r\n }\r\n /**\r\n * retrieve appMetadata matching all provided filters; if no filter is set, get all appMetadata\r\n * @param filter\r\n */\r\n getAppMetadataFilteredBy(filter) {\r\n const allCacheKeys = this.getKeys();\r\n const matchingAppMetadata = {};\r\n allCacheKeys.forEach((cacheKey) => {\r\n // don't parse any non-appMetadata type cache entities\r\n if (!this.isAppMetadata(cacheKey)) {\r\n return;\r\n }\r\n // Attempt retrieval\r\n const entity = this.getAppMetadata(cacheKey);\r\n if (!entity) {\r\n return;\r\n }\r\n if (!!filter.environment &&\r\n !this.matchEnvironment(entity, filter.environment)) {\r\n return;\r\n }\r\n if (!!filter.clientId &&\r\n !this.matchClientId(entity, filter.clientId)) {\r\n return;\r\n }\r\n matchingAppMetadata[cacheKey] = entity;\r\n });\r\n return matchingAppMetadata;\r\n }\r\n /**\r\n * retrieve authorityMetadata that contains a matching alias\r\n * @param filter\r\n */\r\n getAuthorityMetadataByAlias(host) {\r\n const allCacheKeys = this.getAuthorityMetadataKeys();\r\n let matchedEntity = null;\r\n allCacheKeys.forEach((cacheKey) => {\r\n // don't parse any non-authorityMetadata type cache entities\r\n if (!this.isAuthorityMetadata(cacheKey) ||\r\n cacheKey.indexOf(this.clientId) === -1) {\r\n return;\r\n }\r\n // Attempt retrieval\r\n const entity = this.getAuthorityMetadata(cacheKey);\r\n if (!entity) {\r\n return;\r\n }\r\n if (entity.aliases.indexOf(host) === -1) {\r\n return;\r\n }\r\n matchedEntity = entity;\r\n });\r\n return matchedEntity;\r\n }\r\n /**\r\n * Removes all accounts and related tokens from cache.\r\n */\r\n removeAllAccounts(correlationId) {\r\n const accounts = this.getAllAccounts({}, correlationId);\r\n accounts.forEach((account) => {\r\n this.removeAccount(account, correlationId);\r\n });\r\n }\r\n /**\r\n * Removes the account and related tokens for a given account key\r\n * @param account\r\n */\r\n removeAccount(account, correlationId) {\r\n this.removeAccountContext(account, correlationId);\r\n const accountKeys = this.getAccountKeys();\r\n const keyFilter = (key) => {\r\n return (key.includes(account.homeAccountId) &&\r\n key.includes(account.environment));\r\n };\r\n accountKeys.filter(keyFilter).forEach((key) => {\r\n this.removeItem(key, correlationId);\r\n this.performanceClient.incrementFields({ accountsRemoved: 1 }, correlationId);\r\n });\r\n }\r\n /**\r\n * Removes credentials associated with the provided account\r\n * @param account\r\n */\r\n removeAccountContext(account, correlationId) {\r\n const allTokenKeys = this.getTokenKeys();\r\n const keyFilter = (key) => {\r\n return (key.includes(account.homeAccountId) &&\r\n key.includes(account.environment));\r\n };\r\n allTokenKeys.idToken.filter(keyFilter).forEach((key) => {\r\n this.removeIdToken(key, correlationId);\r\n });\r\n allTokenKeys.accessToken.filter(keyFilter).forEach((key) => {\r\n this.removeAccessToken(key, correlationId);\r\n });\r\n allTokenKeys.refreshToken.filter(keyFilter).forEach((key) => {\r\n this.removeRefreshToken(key, correlationId);\r\n });\r\n }\r\n /**\r\n * Removes accessToken from the cache\r\n * @param key\r\n * @param correlationId\r\n */\r\n removeAccessToken(key, correlationId) {\r\n const credential = this.getAccessTokenCredential(key, correlationId);\r\n this.removeItem(key, correlationId);\r\n this.performanceClient.incrementFields({ accessTokensRemoved: 1 }, correlationId);\r\n if (!credential ||\r\n credential.credentialType.toLowerCase() !==\r\n CredentialType.ACCESS_TOKEN_WITH_AUTH_SCHEME.toLowerCase() ||\r\n credential.tokenType !== AuthenticationScheme.POP) {\r\n // If the credential is not a PoP token, we can return\r\n return;\r\n }\r\n // Remove Token Binding Key from key store for PoP Tokens Credentials\r\n const kid = credential.keyId;\r\n if (kid) {\r\n void this.cryptoImpl.removeTokenBindingKey(kid).catch(() => {\r\n this.commonLogger.error(`Failed to remove token binding key ${kid}`, correlationId);\r\n this.performanceClient?.incrementFields({ removeTokenBindingKeyFailure: 1 }, correlationId);\r\n });\r\n }\r\n }\r\n /**\r\n * Removes all app metadata objects from cache.\r\n */\r\n removeAppMetadata(correlationId) {\r\n const allCacheKeys = this.getKeys();\r\n allCacheKeys.forEach((cacheKey) => {\r\n if (this.isAppMetadata(cacheKey)) {\r\n this.removeItem(cacheKey, correlationId);\r\n }\r\n });\r\n return true;\r\n }\r\n /**\r\n * Retrieve IdTokenEntity from cache\r\n * @param account {AccountInfo}\r\n * @param tokenKeys {?TokenKeys}\r\n * @param targetRealm {?string}\r\n * @param performanceClient {?IPerformanceClient}\r\n * @param correlationId {?string}\r\n */\r\n getIdToken(account, correlationId, tokenKeys, targetRealm, performanceClient) {\r\n this.commonLogger.trace(\"CacheManager - getIdToken called\");\r\n const idTokenFilter = {\r\n homeAccountId: account.homeAccountId,\r\n environment: account.environment,\r\n credentialType: CredentialType.ID_TOKEN,\r\n clientId: this.clientId,\r\n realm: targetRealm,\r\n };\r\n const idTokenMap = this.getIdTokensByFilter(idTokenFilter, correlationId, tokenKeys);\r\n const numIdTokens = idTokenMap.size;\r\n if (numIdTokens < 1) {\r\n this.commonLogger.info(\"CacheManager:getIdToken - No token found\");\r\n return null;\r\n }\r\n else if (numIdTokens > 1) {\r\n let tokensToBeRemoved = idTokenMap;\r\n // Multiple tenant profiles and no tenant specified, pick home account\r\n if (!targetRealm) {\r\n const homeIdTokenMap = new Map();\r\n idTokenMap.forEach((idToken, key) => {\r\n if (idToken.realm === account.tenantId) {\r\n homeIdTokenMap.set(key, idToken);\r\n }\r\n });\r\n const numHomeIdTokens = homeIdTokenMap.size;\r\n if (numHomeIdTokens < 1) {\r\n this.commonLogger.info(\"CacheManager:getIdToken - Multiple ID tokens found for account but none match account entity tenant id, returning first result\");\r\n return idTokenMap.values().next().value;\r\n }\r\n else if (numHomeIdTokens === 1) {\r\n this.commonLogger.info(\"CacheManager:getIdToken - Multiple ID tokens found for account, defaulting to home tenant profile\");\r\n return homeIdTokenMap.values().next().value;\r\n }\r\n else {\r\n // Multiple ID tokens for home tenant profile, remove all and return null\r\n tokensToBeRemoved = homeIdTokenMap;\r\n }\r\n }\r\n // Multiple tokens for a single tenant profile, remove all and return null\r\n this.commonLogger.info(\"CacheManager:getIdToken - Multiple matching ID tokens found, clearing them\");\r\n tokensToBeRemoved.forEach((idToken, key) => {\r\n this.removeIdToken(key, correlationId);\r\n });\r\n if (performanceClient && correlationId) {\r\n performanceClient.addFields({ multiMatchedID: idTokenMap.size }, correlationId);\r\n }\r\n return null;\r\n }\r\n this.commonLogger.info(\"CacheManager:getIdToken - Returning ID token\");\r\n return idTokenMap.values().next().value;\r\n }\r\n /**\r\n * Gets all idTokens matching the given filter\r\n * @param filter\r\n * @returns\r\n */\r\n getIdTokensByFilter(filter, correlationId, tokenKeys) {\r\n const idTokenKeys = (tokenKeys && tokenKeys.idToken) || this.getTokenKeys().idToken;\r\n const idTokens = new Map();\r\n idTokenKeys.forEach((key) => {\r\n if (!this.idTokenKeyMatchesFilter(key, {\r\n clientId: this.clientId,\r\n ...filter,\r\n })) {\r\n return;\r\n }\r\n const idToken = this.getIdTokenCredential(key, correlationId);\r\n if (idToken && this.credentialMatchesFilter(idToken, filter)) {\r\n idTokens.set(key, idToken);\r\n }\r\n });\r\n return idTokens;\r\n }\r\n /**\r\n * Validate the cache key against filter before retrieving and parsing cache value\r\n * @param key\r\n * @param filter\r\n * @returns\r\n */\r\n idTokenKeyMatchesFilter(inputKey, filter) {\r\n const key = inputKey.toLowerCase();\r\n if (filter.clientId &&\r\n key.indexOf(filter.clientId.toLowerCase()) === -1) {\r\n return false;\r\n }\r\n if (filter.homeAccountId &&\r\n key.indexOf(filter.homeAccountId.toLowerCase()) === -1) {\r\n return false;\r\n }\r\n return true;\r\n }\r\n /**\r\n * Removes idToken from the cache\r\n * @param key\r\n */\r\n removeIdToken(key, correlationId) {\r\n this.removeItem(key, correlationId);\r\n }\r\n /**\r\n * Removes refresh token from the cache\r\n * @param key\r\n */\r\n removeRefreshToken(key, correlationId) {\r\n this.removeItem(key, correlationId);\r\n }\r\n /**\r\n * Retrieve AccessTokenEntity from cache\r\n * @param account {AccountInfo}\r\n * @param request {BaseAuthRequest}\r\n * @param correlationId {?string}\r\n * @param tokenKeys {?TokenKeys}\r\n * @param performanceClient {?IPerformanceClient}\r\n */\r\n getAccessToken(account, request, tokenKeys, targetRealm) {\r\n const correlationId = request.correlationId;\r\n this.commonLogger.trace(\"CacheManager - getAccessToken called\", correlationId);\r\n const scopes = ScopeSet.createSearchScopes(request.scopes);\r\n const authScheme = request.authenticationScheme || AuthenticationScheme.BEARER;\r\n /*\r\n * Distinguish between Bearer and PoP/SSH token cache types\r\n * Cast to lowercase to handle \"bearer\" from ADFS\r\n */\r\n const credentialType = authScheme &&\r\n authScheme.toLowerCase() !==\r\n AuthenticationScheme.BEARER.toLowerCase()\r\n ? CredentialType.ACCESS_TOKEN_WITH_AUTH_SCHEME\r\n : CredentialType.ACCESS_TOKEN;\r\n const accessTokenFilter = {\r\n homeAccountId: account.homeAccountId,\r\n environment: account.environment,\r\n credentialType: credentialType,\r\n clientId: this.clientId,\r\n realm: targetRealm || account.tenantId,\r\n target: scopes,\r\n tokenType: authScheme,\r\n keyId: request.sshKid,\r\n requestedClaimsHash: request.requestedClaimsHash,\r\n };\r\n const accessTokenKeys = (tokenKeys && tokenKeys.accessToken) ||\r\n this.getTokenKeys().accessToken;\r\n const accessTokens = [];\r\n accessTokenKeys.forEach((key) => {\r\n // Validate key\r\n if (this.accessTokenKeyMatchesFilter(key, accessTokenFilter, true)) {\r\n const accessToken = this.getAccessTokenCredential(key, correlationId);\r\n // Validate value\r\n if (accessToken &&\r\n this.credentialMatchesFilter(accessToken, accessTokenFilter)) {\r\n accessTokens.push(accessToken);\r\n }\r\n }\r\n });\r\n const numAccessTokens = accessTokens.length;\r\n if (numAccessTokens < 1) {\r\n this.commonLogger.info(\"CacheManager:getAccessToken - No token found\", correlationId);\r\n return null;\r\n }\r\n else if (numAccessTokens > 1) {\r\n this.commonLogger.info(\"CacheManager:getAccessToken - Multiple access tokens found, clearing them\", correlationId);\r\n accessTokens.forEach((accessToken) => {\r\n this.removeAccessToken(this.generateCredentialKey(accessToken), correlationId);\r\n });\r\n this.performanceClient.addFields({ multiMatchedAT: accessTokens.length }, correlationId);\r\n return null;\r\n }\r\n this.commonLogger.info(\"CacheManager:getAccessToken - Returning access token\", correlationId);\r\n return accessTokens[0];\r\n }\r\n /**\r\n * Validate the cache key against filter before retrieving and parsing cache value\r\n * @param key\r\n * @param filter\r\n * @param keyMustContainAllScopes\r\n * @returns\r\n */\r\n accessTokenKeyMatchesFilter(inputKey, filter, keyMustContainAllScopes) {\r\n const key = inputKey.toLowerCase();\r\n if (filter.clientId &&\r\n key.indexOf(filter.clientId.toLowerCase()) === -1) {\r\n return false;\r\n }\r\n if (filter.homeAccountId &&\r\n key.indexOf(filter.homeAccountId.toLowerCase()) === -1) {\r\n return false;\r\n }\r\n if (filter.realm && key.indexOf(filter.realm.toLowerCase()) === -1) {\r\n return false;\r\n }\r\n if (filter.requestedClaimsHash &&\r\n key.indexOf(filter.requestedClaimsHash.toLowerCase()) === -1) {\r\n return false;\r\n }\r\n if (filter.target) {\r\n const scopes = filter.target.asArray();\r\n for (let i = 0; i < scopes.length; i++) {\r\n if (keyMustContainAllScopes &&\r\n !key.includes(scopes[i].toLowerCase())) {\r\n // When performing a cache lookup a missing scope would be a cache miss\r\n return false;\r\n }\r\n else if (!keyMustContainAllScopes &&\r\n key.includes(scopes[i].toLowerCase())) {\r\n // When performing a cache write, any token with a subset of requested scopes should be replaced\r\n return true;\r\n }\r\n }\r\n }\r\n return true;\r\n }\r\n /**\r\n * Gets all access tokens matching the filter\r\n * @param filter\r\n * @returns\r\n */\r\n getAccessTokensByFilter(filter, correlationId) {\r\n const tokenKeys = this.getTokenKeys();\r\n const accessTokens = [];\r\n tokenKeys.accessToken.forEach((key) => {\r\n if (!this.accessTokenKeyMatchesFilter(key, filter, true)) {\r\n return;\r\n }\r\n const accessToken = this.getAccessTokenCredential(key, correlationId);\r\n if (accessToken &&\r\n this.credentialMatchesFilter(accessToken, filter)) {\r\n accessTokens.push(accessToken);\r\n }\r\n });\r\n return accessTokens;\r\n }\r\n /**\r\n * Helper to retrieve the appropriate refresh token from cache\r\n * @param account {AccountInfo}\r\n * @param familyRT {boolean}\r\n * @param correlationId {?string}\r\n * @param tokenKeys {?TokenKeys}\r\n * @param performanceClient {?IPerformanceClient}\r\n */\r\n getRefreshToken(account, familyRT, correlationId, tokenKeys, performanceClient) {\r\n this.commonLogger.trace(\"CacheManager - getRefreshToken called\");\r\n const id = familyRT ? THE_FAMILY_ID : undefined;\r\n const refreshTokenFilter = {\r\n homeAccountId: account.homeAccountId,\r\n environment: account.environment,\r\n credentialType: CredentialType.REFRESH_TOKEN,\r\n clientId: this.clientId,\r\n familyId: id,\r\n };\r\n const refreshTokenKeys = (tokenKeys && tokenKeys.refreshToken) ||\r\n this.getTokenKeys().refreshToken;\r\n const refreshTokens = [];\r\n refreshTokenKeys.forEach((key) => {\r\n // Validate key\r\n if (this.refreshTokenKeyMatchesFilter(key, refreshTokenFilter)) {\r\n const refreshToken = this.getRefreshTokenCredential(key, correlationId);\r\n // Validate value\r\n if (refreshToken &&\r\n this.credentialMatchesFilter(refreshToken, refreshTokenFilter)) {\r\n refreshTokens.push(refreshToken);\r\n }\r\n }\r\n });\r\n const numRefreshTokens = refreshTokens.length;\r\n if (numRefreshTokens < 1) {\r\n this.commonLogger.info(\"CacheManager:getRefreshToken - No refresh token found.\");\r\n return null;\r\n }\r\n // address the else case after remove functions address environment aliases\r\n if (numRefreshTokens > 1 && performanceClient && correlationId) {\r\n performanceClient.addFields({ multiMatchedRT: numRefreshTokens }, correlationId);\r\n }\r\n this.commonLogger.info(\"CacheManager:getRefreshToken - returning refresh token\");\r\n return refreshTokens[0];\r\n }\r\n /**\r\n * Validate the cache key against filter before retrieving and parsing cache value\r\n * @param key\r\n * @param filter\r\n */\r\n refreshTokenKeyMatchesFilter(inputKey, filter) {\r\n const key = inputKey.toLowerCase();\r\n if (filter.familyId &&\r\n key.indexOf(filter.familyId.toLowerCase()) === -1) {\r\n return false;\r\n }\r\n // If familyId is used, clientId is not in the key\r\n if (!filter.familyId &&\r\n filter.clientId &&\r\n key.indexOf(filter.clientId.toLowerCase()) === -1) {\r\n return false;\r\n }\r\n if (filter.homeAccountId &&\r\n key.indexOf(filter.homeAccountId.toLowerCase()) === -1) {\r\n return false;\r\n }\r\n return true;\r\n }\r\n /**\r\n * Retrieve AppMetadataEntity from cache\r\n */\r\n readAppMetadataFromCache(environment) {\r\n const appMetadataFilter = {\r\n environment,\r\n clientId: this.clientId,\r\n };\r\n const appMetadata = this.getAppMetadataFilteredBy(appMetadataFilter);\r\n const appMetadataEntries = Object.keys(appMetadata).map((key) => appMetadata[key]);\r\n const numAppMetadata = appMetadataEntries.length;\r\n if (numAppMetadata < 1) {\r\n return null;\r\n }\r\n else if (numAppMetadata > 1) {\r\n throw createClientAuthError(multipleMatchingAppMetadata);\r\n }\r\n return appMetadataEntries[0];\r\n }\r\n /**\r\n * Return the family_id value associated with FOCI\r\n * @param environment\r\n * @param clientId\r\n */\r\n isAppMetadataFOCI(environment) {\r\n const appMetadata = this.readAppMetadataFromCache(environment);\r\n return !!(appMetadata && appMetadata.familyId === THE_FAMILY_ID);\r\n }\r\n /**\r\n * helper to match account ids\r\n * @param value\r\n * @param homeAccountId\r\n */\r\n matchHomeAccountId(entity, homeAccountId) {\r\n return !!(typeof entity.homeAccountId === \"string\" &&\r\n homeAccountId === entity.homeAccountId);\r\n }\r\n /**\r\n * helper to match account ids\r\n * @param entity\r\n * @param localAccountId\r\n * @returns\r\n */\r\n matchLocalAccountIdFromTokenClaims(tokenClaims, localAccountId) {\r\n const idTokenLocalAccountId = tokenClaims.oid || tokenClaims.sub;\r\n return localAccountId === idTokenLocalAccountId;\r\n }\r\n matchLocalAccountIdFromTenantProfile(tenantProfile, localAccountId) {\r\n return tenantProfile.localAccountId === localAccountId;\r\n }\r\n /**\r\n * helper to match names\r\n * @param entity\r\n * @param name\r\n * @returns true if the downcased name properties are present and match in the filter and the entity\r\n */\r\n matchName(claims, name) {\r\n return !!(name.toLowerCase() === claims.name?.toLowerCase());\r\n }\r\n /**\r\n * helper to match usernames\r\n * @param entity\r\n * @param username\r\n * @returns\r\n */\r\n matchUsername(cachedUsername, filterUsername) {\r\n return !!(cachedUsername &&\r\n typeof cachedUsername === \"string\" &&\r\n filterUsername?.toLowerCase() === cachedUsername.toLowerCase());\r\n }\r\n /**\r\n * helper to match assertion\r\n * @param value\r\n * @param oboAssertion\r\n */\r\n matchUserAssertionHash(entity, userAssertionHash) {\r\n return !!(entity.userAssertionHash &&\r\n userAssertionHash === entity.userAssertionHash);\r\n }\r\n /**\r\n * helper to match environment\r\n * @param value\r\n * @param environment\r\n */\r\n matchEnvironment(entity, environment) {\r\n // Check static authority options first for cases where authority metadata has not been resolved and cached yet\r\n if (this.staticAuthorityOptions) {\r\n const staticAliases = getAliasesFromStaticSources(this.staticAuthorityOptions, this.commonLogger);\r\n if (staticAliases.includes(environment) &&\r\n staticAliases.includes(entity.environment)) {\r\n return true;\r\n }\r\n }\r\n // Query metadata cache if no static authority configuration has aliases that match enviroment\r\n const cloudMetadata = this.getAuthorityMetadataByAlias(environment);\r\n if (cloudMetadata &&\r\n cloudMetadata.aliases.indexOf(entity.environment) > -1) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n /**\r\n * helper to match credential type\r\n * @param entity\r\n * @param credentialType\r\n */\r\n matchCredentialType(entity, credentialType) {\r\n return (entity.credentialType &&\r\n credentialType.toLowerCase() === entity.credentialType.toLowerCase());\r\n }\r\n /**\r\n * helper to match client ids\r\n * @param entity\r\n * @param clientId\r\n */\r\n matchClientId(entity, clientId) {\r\n return !!(entity.clientId && clientId === entity.clientId);\r\n }\r\n /**\r\n * helper to match family ids\r\n * @param entity\r\n * @param familyId\r\n */\r\n matchFamilyId(entity, familyId) {\r\n return !!(entity.familyId && familyId === entity.familyId);\r\n }\r\n /**\r\n * helper to match realm\r\n * @param entity\r\n * @param realm\r\n */\r\n matchRealm(entity, realm) {\r\n return !!(entity.realm?.toLowerCase() === realm.toLowerCase());\r\n }\r\n /**\r\n * helper to match nativeAccountId\r\n * @param entity\r\n * @param nativeAccountId\r\n * @returns boolean indicating the match result\r\n */\r\n matchNativeAccountId(entity, nativeAccountId) {\r\n return !!(entity.nativeAccountId && nativeAccountId === entity.nativeAccountId);\r\n }\r\n /**\r\n * helper to match loginHint which can be either:\r\n * 1. login_hint ID token claim\r\n * 2. username in cached account object\r\n * 3. upn in ID token claims\r\n * @param entity\r\n * @param loginHint\r\n * @returns\r\n */\r\n matchLoginHintFromTokenClaims(tokenClaims, loginHint) {\r\n if (tokenClaims.login_hint === loginHint) {\r\n return true;\r\n }\r\n if (tokenClaims.preferred_username === loginHint) {\r\n return true;\r\n }\r\n if (tokenClaims.upn === loginHint) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n /**\r\n * Helper to match sid\r\n * @param entity\r\n * @param sid\r\n * @returns true if the sid claim is present and matches the filter\r\n */\r\n matchSid(idTokenClaims, sid) {\r\n return idTokenClaims.sid === sid;\r\n }\r\n matchAuthorityType(entity, authorityType) {\r\n return !!(entity.authorityType &&\r\n authorityType.toLowerCase() === entity.authorityType.toLowerCase());\r\n }\r\n /**\r\n * Returns true if the target scopes are a subset of the current entity's scopes, false otherwise.\r\n * @param entity\r\n * @param target\r\n */\r\n matchTarget(entity, target) {\r\n const isNotAccessTokenCredential = entity.credentialType !== CredentialType.ACCESS_TOKEN &&\r\n entity.credentialType !==\r\n CredentialType.ACCESS_TOKEN_WITH_AUTH_SCHEME;\r\n if (isNotAccessTokenCredential || !entity.target) {\r\n return false;\r\n }\r\n const entityScopeSet = ScopeSet.fromString(entity.target);\r\n return entityScopeSet.containsScopeSet(target);\r\n }\r\n /**\r\n * Returns true if the credential's tokenType or Authentication Scheme matches the one in the request, false otherwise\r\n * @param entity\r\n * @param tokenType\r\n */\r\n matchTokenType(entity, tokenType) {\r\n return !!(entity.tokenType && entity.tokenType === tokenType);\r\n }\r\n /**\r\n * Returns true if the credential's keyId matches the one in the request, false otherwise\r\n * @param entity\r\n * @param keyId\r\n */\r\n matchKeyId(entity, keyId) {\r\n return !!(entity.keyId && entity.keyId === keyId);\r\n }\r\n /**\r\n * returns if a given cache entity is of the type appmetadata\r\n * @param key\r\n */\r\n isAppMetadata(key) {\r\n return key.indexOf(APP_METADATA) !== -1;\r\n }\r\n /**\r\n * returns if a given cache entity is of the type authoritymetadata\r\n * @param key\r\n */\r\n isAuthorityMetadata(key) {\r\n return key.indexOf(AUTHORITY_METADATA_CONSTANTS.CACHE_KEY) !== -1;\r\n }\r\n /**\r\n * returns cache key used for cloud instance metadata\r\n */\r\n generateAuthorityMetadataCacheKey(authority) {\r\n return `${AUTHORITY_METADATA_CONSTANTS.CACHE_KEY}-${this.clientId}-${authority}`;\r\n }\r\n /**\r\n * Helper to convert serialized data to object\r\n * @param obj\r\n * @param json\r\n */\r\n static toObject(obj, json) {\r\n for (const propertyName in json) {\r\n obj[propertyName] = json[propertyName];\r\n }\r\n return obj;\r\n }\r\n}\r\n/** @internal */\r\nclass DefaultStorageClass extends CacheManager {\r\n async setAccount() {\r\n throw createClientAuthError(methodNotImplemented);\r\n }\r\n getAccount() {\r\n throw createClientAuthError(methodNotImplemented);\r\n }\r\n async setIdTokenCredential() {\r\n throw createClientAuthError(methodNotImplemented);\r\n }\r\n getIdTokenCredential() {\r\n throw createClientAuthError(methodNotImplemented);\r\n }\r\n async setAccessTokenCredential() {\r\n throw createClientAuthError(methodNotImplemented);\r\n }\r\n getAccessTokenCredential() {\r\n throw createClientAuthError(methodNotImplemented);\r\n }\r\n async setRefreshTokenCredential() {\r\n throw createClientAuthError(methodNotImplemented);\r\n }\r\n getRefreshTokenCredential() {\r\n throw createClientAuthError(methodNotImplemented);\r\n }\r\n setAppMetadata() {\r\n throw createClientAuthError(methodNotImplemented);\r\n }\r\n getAppMetadata() {\r\n throw createClientAuthError(methodNotImplemented);\r\n }\r\n setServerTelemetry() {\r\n throw createClientAuthError(methodNotImplemented);\r\n }\r\n getServerTelemetry() {\r\n throw createClientAuthError(methodNotImplemented);\r\n }\r\n setAuthorityMetadata() {\r\n throw createClientAuthError(methodNotImplemented);\r\n }\r\n getAuthorityMetadata() {\r\n throw createClientAuthError(methodNotImplemented);\r\n }\r\n getAuthorityMetadataKeys() {\r\n throw createClientAuthError(methodNotImplemented);\r\n }\r\n setThrottlingCache() {\r\n throw createClientAuthError(methodNotImplemented);\r\n }\r\n getThrottlingCache() {\r\n throw createClientAuthError(methodNotImplemented);\r\n }\r\n removeItem() {\r\n throw createClientAuthError(methodNotImplemented);\r\n }\r\n getKeys() {\r\n throw createClientAuthError(methodNotImplemented);\r\n }\r\n getAccountKeys() {\r\n throw createClientAuthError(methodNotImplemented);\r\n }\r\n getTokenKeys() {\r\n throw createClientAuthError(methodNotImplemented);\r\n }\r\n generateCredentialKey() {\r\n throw createClientAuthError(methodNotImplemented);\r\n }\r\n generateAccountKey() {\r\n throw createClientAuthError(methodNotImplemented);\r\n }\r\n}\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nclass StubPerformanceMeasurement {\r\n startMeasurement() {\r\n return;\r\n }\r\n endMeasurement() {\r\n return;\r\n }\r\n flushMeasurement() {\r\n return null;\r\n }\r\n}\r\nclass StubPerformanceClient {\r\n generateId() {\r\n return \"callback-id\";\r\n }\r\n startMeasurement(measureName, correlationId) {\r\n return {\r\n end: () => null,\r\n discard: () => { },\r\n add: () => { },\r\n increment: () => { },\r\n event: {\r\n eventId: this.generateId(),\r\n status: PerformanceEventStatus.InProgress,\r\n authority: \"\",\r\n libraryName: \"\",\r\n libraryVersion: \"\",\r\n clientId: \"\",\r\n name: measureName,\r\n startTimeMs: Date.now(),\r\n correlationId: correlationId || \"\",\r\n },\r\n measurement: new StubPerformanceMeasurement(),\r\n };\r\n }\r\n startPerformanceMeasurement() {\r\n return new StubPerformanceMeasurement();\r\n }\r\n calculateQueuedTime() {\r\n return 0;\r\n }\r\n addQueueMeasurement() {\r\n return;\r\n }\r\n setPreQueueTime() {\r\n return;\r\n }\r\n endMeasurement() {\r\n return null;\r\n }\r\n discardMeasurements() {\r\n return;\r\n }\r\n removePerformanceCallback() {\r\n return true;\r\n }\r\n addPerformanceCallback() {\r\n return \"\";\r\n }\r\n emitEvents() {\r\n return;\r\n }\r\n addFields() {\r\n return;\r\n }\r\n incrementFields() {\r\n return;\r\n }\r\n cacheEventByCorrelationId() {\r\n return;\r\n }\r\n}\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nconst DEFAULT_SYSTEM_OPTIONS = {\r\n tokenRenewalOffsetSeconds: DEFAULT_TOKEN_RENEWAL_OFFSET_SEC,\r\n preventCorsPreflight: false,\r\n};\r\nconst DEFAULT_LOGGER_IMPLEMENTATION = {\r\n loggerCallback: () => {\r\n // allow users to not set loggerCallback\r\n },\r\n piiLoggingEnabled: false,\r\n logLevel: exports.LogLevel.Info,\r\n correlationId: Constants.EMPTY_STRING,\r\n};\r\nconst DEFAULT_CACHE_OPTIONS = {\r\n claimsBasedCachingEnabled: false,\r\n};\r\nconst DEFAULT_NETWORK_IMPLEMENTATION = {\r\n async sendGetRequestAsync() {\r\n throw createClientAuthError(methodNotImplemented);\r\n },\r\n async sendPostRequestAsync() {\r\n throw createClientAuthError(methodNotImplemented);\r\n },\r\n};\r\nconst DEFAULT_LIBRARY_INFO = {\r\n sku: Constants.SKU,\r\n version: version,\r\n cpu: Constants.EMPTY_STRING,\r\n os: Constants.EMPTY_STRING,\r\n};\r\nconst DEFAULT_CLIENT_CREDENTIALS = {\r\n clientSecret: Constants.EMPTY_STRING,\r\n clientAssertion: undefined,\r\n};\r\nconst DEFAULT_AZURE_CLOUD_OPTIONS = {\r\n azureCloudInstance: AzureCloudInstance.None,\r\n tenant: `${Constants.DEFAULT_COMMON_TENANT}`,\r\n};\r\nconst DEFAULT_TELEMETRY_OPTIONS = {\r\n application: {\r\n appName: \"\",\r\n appVersion: \"\",\r\n },\r\n};\r\n/**\r\n * Function that sets the default options when not explicitly configured from app developer\r\n *\r\n * @param Configuration\r\n *\r\n * @returns Configuration\r\n */\r\nfunction buildClientConfiguration({ authOptions: userAuthOptions, systemOptions: userSystemOptions, loggerOptions: userLoggerOption, cacheOptions: userCacheOptions, storageInterface: storageImplementation, networkInterface: networkImplementation, cryptoInterface: cryptoImplementation, clientCredentials: clientCredentials, libraryInfo: libraryInfo, telemetry: telemetry, serverTelemetryManager: serverTelemetryManager, persistencePlugin: persistencePlugin, serializableCache: serializableCache, }) {\r\n const loggerOptions = {\r\n ...DEFAULT_LOGGER_IMPLEMENTATION,\r\n ...userLoggerOption,\r\n };\r\n return {\r\n authOptions: buildAuthOptions(userAuthOptions),\r\n systemOptions: { ...DEFAULT_SYSTEM_OPTIONS, ...userSystemOptions },\r\n loggerOptions: loggerOptions,\r\n cacheOptions: { ...DEFAULT_CACHE_OPTIONS, ...userCacheOptions },\r\n storageInterface: storageImplementation ||\r\n new DefaultStorageClass(userAuthOptions.clientId, DEFAULT_CRYPTO_IMPLEMENTATION, new Logger(loggerOptions), new StubPerformanceClient()),\r\n networkInterface: networkImplementation || DEFAULT_NETWORK_IMPLEMENTATION,\r\n cryptoInterface: cryptoImplementation || DEFAULT_CRYPTO_IMPLEMENTATION,\r\n clientCredentials: clientCredentials || DEFAULT_CLIENT_CREDENTIALS,\r\n libraryInfo: { ...DEFAULT_LIBRARY_INFO, ...libraryInfo },\r\n telemetry: { ...DEFAULT_TELEMETRY_OPTIONS, ...telemetry },\r\n serverTelemetryManager: serverTelemetryManager || null,\r\n persistencePlugin: persistencePlugin || null,\r\n serializableCache: serializableCache || null,\r\n };\r\n}\r\n/**\r\n * Construct authoptions from the client and platform passed values\r\n * @param authOptions\r\n */\r\nfunction buildAuthOptions(authOptions) {\r\n return {\r\n clientCapabilities: [],\r\n azureCloudOptions: DEFAULT_AZURE_CLOUD_OPTIONS,\r\n skipAuthorityMetadataCache: false,\r\n instanceAware: false,\r\n encodeExtraQueryParams: false,\r\n ...authOptions,\r\n };\r\n}\r\n/**\r\n * Returns true if config has protocolMode set to ProtocolMode.OIDC, false otherwise\r\n * @param ClientConfiguration\r\n */\r\nfunction isOidcProtocolMode(config) {\r\n return (config.authOptions.authority.options.protocolMode === ProtocolMode.OIDC);\r\n}\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nconst CcsCredentialType = {\r\n HOME_ACCOUNT_ID: \"home_account_id\",\r\n UPN: \"UPN\",\r\n};\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nfunction instrumentBrokerParams(parameters, correlationId, performanceClient) {\r\n if (!correlationId) {\r\n return;\r\n }\r\n const clientId = parameters.get(CLIENT_ID);\r\n if (clientId && parameters.has(BROKER_CLIENT_ID)) {\r\n performanceClient?.addFields({\r\n embeddedClientId: clientId,\r\n embeddedRedirectUri: parameters.get(REDIRECT_URI),\r\n }, correlationId);\r\n }\r\n}\r\n/**\r\n * Add the given response_type\r\n * @param parameters\r\n * @param responseType\r\n */\r\nfunction addResponseType(parameters, responseType) {\r\n parameters.set(RESPONSE_TYPE, responseType);\r\n}\r\n/**\r\n * add response_mode. defaults to query.\r\n * @param responseMode\r\n */\r\nfunction addResponseMode(parameters, responseMode) {\r\n parameters.set(RESPONSE_MODE, responseMode ? responseMode : ResponseMode.QUERY);\r\n}\r\n/**\r\n * Add flag to indicate STS should attempt to use WAM if available\r\n */\r\nfunction addNativeBroker(parameters) {\r\n parameters.set(NATIVE_BROKER, \"1\");\r\n}\r\n/**\r\n * add scopes. set addOidcScopes to false to prevent default scopes in non-user scenarios\r\n * @param scopeSet\r\n * @param addOidcScopes\r\n */\r\nfunction addScopes(parameters, scopes, addOidcScopes = true, defaultScopes = OIDC_DEFAULT_SCOPES) {\r\n // Always add openid to the scopes when adding OIDC scopes\r\n if (addOidcScopes &&\r\n !defaultScopes.includes(\"openid\") &&\r\n !scopes.includes(\"openid\")) {\r\n defaultScopes.push(\"openid\");\r\n }\r\n const requestScopes = addOidcScopes\r\n ? [...(scopes || []), ...defaultScopes]\r\n : scopes || [];\r\n const scopeSet = new ScopeSet(requestScopes);\r\n parameters.set(SCOPE, scopeSet.printScopes());\r\n}\r\n/**\r\n * add clientId\r\n * @param clientId\r\n */\r\nfunction addClientId(parameters, clientId) {\r\n parameters.set(CLIENT_ID, clientId);\r\n}\r\n/**\r\n * add redirect_uri\r\n * @param redirectUri\r\n */\r\nfunction addRedirectUri(parameters, redirectUri) {\r\n parameters.set(REDIRECT_URI, redirectUri);\r\n}\r\n/**\r\n * add post logout redirectUri\r\n * @param redirectUri\r\n */\r\nfunction addPostLogoutRedirectUri(parameters, redirectUri) {\r\n parameters.set(POST_LOGOUT_URI, redirectUri);\r\n}\r\n/**\r\n * add id_token_hint to logout request\r\n * @param idTokenHint\r\n */\r\nfunction addIdTokenHint(parameters, idTokenHint) {\r\n parameters.set(ID_TOKEN_HINT, idTokenHint);\r\n}\r\n/**\r\n * add domain_hint\r\n * @param domainHint\r\n */\r\nfunction addDomainHint(parameters, domainHint) {\r\n parameters.set(DOMAIN_HINT, domainHint);\r\n}\r\n/**\r\n * add login_hint\r\n * @param loginHint\r\n */\r\nfunction addLoginHint(parameters, loginHint) {\r\n parameters.set(LOGIN_HINT, loginHint);\r\n}\r\n/**\r\n * Adds the CCS (Cache Credential Service) query parameter for login_hint\r\n * @param loginHint\r\n */\r\nfunction addCcsUpn(parameters, loginHint) {\r\n parameters.set(HeaderNames.CCS_HEADER, `UPN:${loginHint}`);\r\n}\r\n/**\r\n * Adds the CCS (Cache Credential Service) query parameter for account object\r\n * @param loginHint\r\n */\r\nfunction addCcsOid(parameters, clientInfo) {\r\n parameters.set(HeaderNames.CCS_HEADER, `Oid:${clientInfo.uid}@${clientInfo.utid}`);\r\n}\r\n/**\r\n * add sid\r\n * @param sid\r\n */\r\nfunction addSid(parameters, sid) {\r\n parameters.set(SID, sid);\r\n}\r\n/**\r\n * add claims\r\n * @param claims\r\n */\r\nfunction addClaims(parameters, claims, clientCapabilities) {\r\n const mergedClaims = addClientCapabilitiesToClaims(claims, clientCapabilities);\r\n try {\r\n JSON.parse(mergedClaims);\r\n }\r\n catch (e) {\r\n throw createClientConfigurationError(invalidClaims);\r\n }\r\n parameters.set(CLAIMS, mergedClaims);\r\n}\r\n/**\r\n * add correlationId\r\n * @param correlationId\r\n */\r\nfunction addCorrelationId(parameters, correlationId) {\r\n parameters.set(CLIENT_REQUEST_ID, correlationId);\r\n}\r\n/**\r\n * add library info query params\r\n * @param libraryInfo\r\n */\r\nfunction addLibraryInfo(parameters, libraryInfo) {\r\n // Telemetry Info\r\n parameters.set(X_CLIENT_SKU, libraryInfo.sku);\r\n parameters.set(X_CLIENT_VER, libraryInfo.version);\r\n if (libraryInfo.os) {\r\n parameters.set(X_CLIENT_OS, libraryInfo.os);\r\n }\r\n if (libraryInfo.cpu) {\r\n parameters.set(X_CLIENT_CPU, libraryInfo.cpu);\r\n }\r\n}\r\n/**\r\n * Add client telemetry parameters\r\n * @param appTelemetry\r\n */\r\nfunction addApplicationTelemetry(parameters, appTelemetry) {\r\n if (appTelemetry?.appName) {\r\n parameters.set(X_APP_NAME, appTelemetry.appName);\r\n }\r\n if (appTelemetry?.appVersion) {\r\n parameters.set(X_APP_VER, appTelemetry.appVersion);\r\n }\r\n}\r\n/**\r\n * add prompt\r\n * @param prompt\r\n */\r\nfunction addPrompt(parameters, prompt) {\r\n parameters.set(PROMPT, prompt);\r\n}\r\n/**\r\n * add state\r\n * @param state\r\n */\r\nfunction addState(parameters, state) {\r\n if (state) {\r\n parameters.set(STATE, state);\r\n }\r\n}\r\n/**\r\n * add nonce\r\n * @param nonce\r\n */\r\nfunction addNonce(parameters, nonce) {\r\n parameters.set(NONCE, nonce);\r\n}\r\n/**\r\n * add code_challenge and code_challenge_method\r\n * - throw if either of them are not passed\r\n * @param codeChallenge\r\n * @param codeChallengeMethod\r\n */\r\nfunction addCodeChallengeParams(parameters, codeChallenge, codeChallengeMethod) {\r\n if (codeChallenge && codeChallengeMethod) {\r\n parameters.set(CODE_CHALLENGE, codeChallenge);\r\n parameters.set(CODE_CHALLENGE_METHOD, codeChallengeMethod);\r\n }\r\n else {\r\n throw createClientConfigurationError(pkceParamsMissing);\r\n }\r\n}\r\n/**\r\n * add the `authorization_code` passed by the user to exchange for a token\r\n * @param code\r\n */\r\nfunction addAuthorizationCode(parameters, code) {\r\n parameters.set(CODE, code);\r\n}\r\n/**\r\n * add the `authorization_code` passed by the user to exchange for a token\r\n * @param code\r\n */\r\nfunction addDeviceCode(parameters, code) {\r\n parameters.set(DEVICE_CODE, code);\r\n}\r\n/**\r\n * add the `refreshToken` passed by the user\r\n * @param refreshToken\r\n */\r\nfunction addRefreshToken(parameters, refreshToken) {\r\n parameters.set(REFRESH_TOKEN, refreshToken);\r\n}\r\n/**\r\n * add the `code_verifier` passed by the user to exchange for a token\r\n * @param codeVerifier\r\n */\r\nfunction addCodeVerifier(parameters, codeVerifier) {\r\n parameters.set(CODE_VERIFIER, codeVerifier);\r\n}\r\n/**\r\n * add client_secret\r\n * @param clientSecret\r\n */\r\nfunction addClientSecret(parameters, clientSecret) {\r\n parameters.set(CLIENT_SECRET, clientSecret);\r\n}\r\n/**\r\n * add clientAssertion for confidential client flows\r\n * @param clientAssertion\r\n */\r\nfunction addClientAssertion(parameters, clientAssertion) {\r\n if (clientAssertion) {\r\n parameters.set(CLIENT_ASSERTION, clientAssertion);\r\n }\r\n}\r\n/**\r\n * add clientAssertionType for confidential client flows\r\n * @param clientAssertionType\r\n */\r\nfunction addClientAssertionType(parameters, clientAssertionType) {\r\n if (clientAssertionType) {\r\n parameters.set(CLIENT_ASSERTION_TYPE, clientAssertionType);\r\n }\r\n}\r\n/**\r\n * add OBO assertion for confidential client flows\r\n * @param clientAssertion\r\n */\r\nfunction addOboAssertion(parameters, oboAssertion) {\r\n parameters.set(OBO_ASSERTION, oboAssertion);\r\n}\r\n/**\r\n * add grant type\r\n * @param grantType\r\n */\r\nfunction addRequestTokenUse(parameters, tokenUse) {\r\n parameters.set(REQUESTED_TOKEN_USE, tokenUse);\r\n}\r\n/**\r\n * add grant type\r\n * @param grantType\r\n */\r\nfunction addGrantType(parameters, grantType) {\r\n parameters.set(GRANT_TYPE, grantType);\r\n}\r\n/**\r\n * add client info\r\n *\r\n */\r\nfunction addClientInfo(parameters) {\r\n parameters.set(CLIENT_INFO$1, \"1\");\r\n}\r\nfunction addInstanceAware(parameters) {\r\n if (!parameters.has(INSTANCE_AWARE)) {\r\n parameters.set(INSTANCE_AWARE, \"true\");\r\n }\r\n}\r\n/**\r\n * add extraQueryParams\r\n * @param eQParams\r\n */\r\nfunction addExtraQueryParameters(parameters, eQParams) {\r\n Object.entries(eQParams).forEach(([key, value]) => {\r\n if (!parameters.has(key) && value) {\r\n parameters.set(key, value);\r\n }\r\n });\r\n}\r\nfunction addClientCapabilitiesToClaims(claims, clientCapabilities) {\r\n let mergedClaims;\r\n // Parse provided claims into JSON object or initialize empty object\r\n if (!claims) {\r\n mergedClaims = {};\r\n }\r\n else {\r\n try {\r\n mergedClaims = JSON.parse(claims);\r\n }\r\n catch (e) {\r\n throw createClientConfigurationError(invalidClaims);\r\n }\r\n }\r\n if (clientCapabilities && clientCapabilities.length > 0) {\r\n if (!mergedClaims.hasOwnProperty(ClaimsRequestKeys.ACCESS_TOKEN)) {\r\n // Add access_token key to claims object\r\n mergedClaims[ClaimsRequestKeys.ACCESS_TOKEN] = {};\r\n }\r\n // Add xms_cc claim with provided clientCapabilities to access_token key\r\n mergedClaims[ClaimsRequestKeys.ACCESS_TOKEN][ClaimsRequestKeys.XMS_CC] =\r\n {\r\n values: clientCapabilities,\r\n };\r\n }\r\n return JSON.stringify(mergedClaims);\r\n}\r\n/**\r\n * adds `username` for Password Grant flow\r\n * @param username\r\n */\r\nfunction addUsername(parameters, username) {\r\n parameters.set(PasswordGrantConstants.username, username);\r\n}\r\n/**\r\n * adds `password` for Password Grant flow\r\n * @param password\r\n */\r\nfunction addPassword(parameters, password) {\r\n parameters.set(PasswordGrantConstants.password, password);\r\n}\r\n/**\r\n * add pop_jwk to query params\r\n * @param cnfString\r\n */\r\nfunction addPopToken(parameters, cnfString) {\r\n if (cnfString) {\r\n parameters.set(TOKEN_TYPE, AuthenticationScheme.POP);\r\n parameters.set(REQ_CNF, cnfString);\r\n }\r\n}\r\n/**\r\n * add SSH JWK and key ID to query params\r\n */\r\nfunction addSshJwk(parameters, sshJwkString) {\r\n if (sshJwkString) {\r\n parameters.set(TOKEN_TYPE, AuthenticationScheme.SSH);\r\n parameters.set(REQ_CNF, sshJwkString);\r\n }\r\n}\r\n/**\r\n * add server telemetry fields\r\n * @param serverTelemetryManager\r\n */\r\nfunction addServerTelemetry(parameters, serverTelemetryManager) {\r\n parameters.set(X_CLIENT_CURR_TELEM, serverTelemetryManager.generateCurrentRequestHeaderValue());\r\n parameters.set(X_CLIENT_LAST_TELEM, serverTelemetryManager.generateLastRequestHeaderValue());\r\n}\r\n/**\r\n * Adds parameter that indicates to the server that throttling is supported\r\n */\r\nfunction addThrottling(parameters) {\r\n parameters.set(X_MS_LIB_CAPABILITY, ThrottlingConstants.X_MS_LIB_CAPABILITY_VALUE);\r\n}\r\n/**\r\n * Adds logout_hint parameter for \"silent\" logout which prevent server account picker\r\n */\r\nfunction addLogoutHint(parameters, logoutHint) {\r\n parameters.set(LOGOUT_HINT, logoutHint);\r\n}\r\nfunction addBrokerParameters(parameters, brokerClientId, brokerRedirectUri) {\r\n if (!parameters.has(BROKER_CLIENT_ID)) {\r\n parameters.set(BROKER_CLIENT_ID, brokerClientId);\r\n }\r\n if (!parameters.has(BROKER_REDIRECT_URI)) {\r\n parameters.set(BROKER_REDIRECT_URI, brokerRedirectUri);\r\n }\r\n}\r\n/**\r\n * Add EAR (Encrypted Authorize Response) request parameters\r\n * @param parameters\r\n * @param jwk\r\n */\r\nfunction addEARParameters(parameters, jwk) {\r\n parameters.set(EAR_JWK, encodeURIComponent(jwk));\r\n // ear_jwe_crypto will always have value: {\"alg\":\"dir\",\"enc\":\"A256GCM\"} so we can hardcode this\r\n const jweCryptoB64Encoded = \"eyJhbGciOiJkaXIiLCJlbmMiOiJBMjU2R0NNIn0\";\r\n parameters.set(EAR_JWE_CRYPTO, jweCryptoB64Encoded);\r\n}\r\n/**\r\n * Adds authorize body parameters to the request parameters\r\n * @param parameters\r\n * @param bodyParameters\r\n */\r\nfunction addPostBodyParameters(parameters, bodyParameters) {\r\n Object.entries(bodyParameters).forEach(([key, value]) => {\r\n if (value) {\r\n parameters.set(key, value);\r\n }\r\n });\r\n}\n\nvar RequestParameterBuilder = /*#__PURE__*/Object.freeze({\n __proto__: null,\n addApplicationTelemetry: addApplicationTelemetry,\n addAuthorizationCode: addAuthorizationCode,\n addBrokerParameters: addBrokerParameters,\n addCcsOid: addCcsOid,\n addCcsUpn: addCcsUpn,\n addClaims: addClaims,\n addClientAssertion: addClientAssertion,\n addClientAssertionType: addClientAssertionType,\n addClientCapabilitiesToClaims: addClientCapabilitiesToClaims,\n addClientId: addClientId,\n addClientInfo: addClientInfo,\n addClientSecret: addClientSecret,\n addCodeChallengeParams: addCodeChallengeParams,\n addCodeVerifier: addCodeVerifier,\n addCorrelationId: addCorrelationId,\n addDeviceCode: addDeviceCode,\n addDomainHint: addDomainHint,\n addEARParameters: addEARParameters,\n addExtraQueryParameters: addExtraQueryParameters,\n addGrantType: addGrantType,\n addIdTokenHint: addIdTokenHint,\n addInstanceAware: addInstanceAware,\n addLibraryInfo: addLibraryInfo,\n addLoginHint: addLoginHint,\n addLogoutHint: addLogoutHint,\n addNativeBroker: addNativeBroker,\n addNonce: addNonce,\n addOboAssertion: addOboAssertion,\n addPassword: addPassword,\n addPopToken: addPopToken,\n addPostBodyParameters: addPostBodyParameters,\n addPostLogoutRedirectUri: addPostLogoutRedirectUri,\n addPrompt: addPrompt,\n addRedirectUri: addRedirectUri,\n addRefreshToken: addRefreshToken,\n addRequestTokenUse: addRequestTokenUse,\n addResponseMode: addResponseMode,\n addResponseType: addResponseType,\n addScopes: addScopes,\n addServerTelemetry: addServerTelemetry,\n addSid: addSid,\n addSshJwk: addSshJwk,\n addState: addState,\n addThrottling: addThrottling,\n addUsername: addUsername,\n instrumentBrokerParams: instrumentBrokerParams\n});\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * Error thrown when there is an error with the server code, for example, unavailability.\r\n */\r\nclass ServerError extends AuthError {\r\n constructor(errorCode, errorMessage, subError, errorNo, status) {\r\n super(errorCode, errorMessage, subError);\r\n this.name = \"ServerError\";\r\n this.errorNo = errorNo;\r\n this.status = status;\r\n Object.setPrototypeOf(this, ServerError.prototype);\r\n }\r\n}\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nfunction getRequestThumbprint(clientId, request, homeAccountId) {\r\n return {\r\n clientId: clientId,\r\n authority: request.authority,\r\n scopes: request.scopes,\r\n homeAccountIdentifier: homeAccountId,\r\n claims: request.claims,\r\n authenticationScheme: request.authenticationScheme,\r\n resourceRequestMethod: request.resourceRequestMethod,\r\n resourceRequestUri: request.resourceRequestUri,\r\n shrClaims: request.shrClaims,\r\n sshKid: request.sshKid,\r\n embeddedClientId: request.embeddedClientId || request.tokenBodyParameters?.clientId,\r\n };\r\n}\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/** @internal */\r\nclass ThrottlingUtils {\r\n /**\r\n * Prepares a RequestThumbprint to be stored as a key.\r\n * @param thumbprint\r\n */\r\n static generateThrottlingStorageKey(thumbprint) {\r\n return `${ThrottlingConstants.THROTTLING_PREFIX}.${JSON.stringify(thumbprint)}`;\r\n }\r\n /**\r\n * Performs necessary throttling checks before a network request.\r\n * @param cacheManager\r\n * @param thumbprint\r\n */\r\n static preProcess(cacheManager, thumbprint, correlationId) {\r\n const key = ThrottlingUtils.generateThrottlingStorageKey(thumbprint);\r\n const value = cacheManager.getThrottlingCache(key);\r\n if (value) {\r\n if (value.throttleTime < Date.now()) {\r\n cacheManager.removeItem(key, correlationId);\r\n return;\r\n }\r\n throw new ServerError(value.errorCodes?.join(\" \") || Constants.EMPTY_STRING, value.errorMessage, value.subError);\r\n }\r\n }\r\n /**\r\n * Performs necessary throttling checks after a network request.\r\n * @param cacheManager\r\n * @param thumbprint\r\n * @param response\r\n */\r\n static postProcess(cacheManager, thumbprint, response, correlationId) {\r\n if (ThrottlingUtils.checkResponseStatus(response) ||\r\n ThrottlingUtils.checkResponseForRetryAfter(response)) {\r\n const thumbprintValue = {\r\n throttleTime: ThrottlingUtils.calculateThrottleTime(parseInt(response.headers[HeaderNames.RETRY_AFTER])),\r\n error: response.body.error,\r\n errorCodes: response.body.error_codes,\r\n errorMessage: response.body.error_description,\r\n subError: response.body.suberror,\r\n };\r\n cacheManager.setThrottlingCache(ThrottlingUtils.generateThrottlingStorageKey(thumbprint), thumbprintValue, correlationId);\r\n }\r\n }\r\n /**\r\n * Checks a NetworkResponse object's status codes against 429 or 5xx\r\n * @param response\r\n */\r\n static checkResponseStatus(response) {\r\n return (response.status === 429 ||\r\n (response.status >= 500 && response.status < 600));\r\n }\r\n /**\r\n * Checks a NetworkResponse object's RetryAfter header\r\n * @param response\r\n */\r\n static checkResponseForRetryAfter(response) {\r\n if (response.headers) {\r\n return (response.headers.hasOwnProperty(HeaderNames.RETRY_AFTER) &&\r\n (response.status < 200 || response.status >= 300));\r\n }\r\n return false;\r\n }\r\n /**\r\n * Calculates the Unix-time value for a throttle to expire given throttleTime in seconds.\r\n * @param throttleTime\r\n */\r\n static calculateThrottleTime(throttleTime) {\r\n const time = throttleTime <= 0 ? 0 : throttleTime;\r\n const currentSeconds = Date.now() / 1000;\r\n return Math.floor(Math.min(currentSeconds +\r\n (time || ThrottlingConstants.DEFAULT_THROTTLE_TIME_SECONDS), currentSeconds +\r\n ThrottlingConstants.DEFAULT_MAX_THROTTLE_TIME_SECONDS) * 1000);\r\n }\r\n static removeThrottle(cacheManager, clientId, request, homeAccountIdentifier) {\r\n const thumbprint = getRequestThumbprint(clientId, request, homeAccountIdentifier);\r\n const key = this.generateThrottlingStorageKey(thumbprint);\r\n cacheManager.removeItem(key, request.correlationId);\r\n }\r\n}\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * Represents network related errors\r\n */\r\nclass NetworkError extends AuthError {\r\n constructor(error, httpStatus, responseHeaders) {\r\n super(error.errorCode, error.errorMessage, error.subError);\r\n Object.setPrototypeOf(this, NetworkError.prototype);\r\n this.name = \"NetworkError\";\r\n this.error = error;\r\n this.httpStatus = httpStatus;\r\n this.responseHeaders = responseHeaders;\r\n }\r\n}\r\n/**\r\n * Creates NetworkError object for a failed network request\r\n * @param error - Error to be thrown back to the caller\r\n * @param httpStatus - Status code of the network request\r\n * @param responseHeaders - Response headers of the network request, when available\r\n * @returns NetworkError object\r\n */\r\nfunction createNetworkError(error, httpStatus, responseHeaders, additionalError) {\r\n error.errorMessage = `${error.errorMessage}, additionalErrorInfo: error.name:${additionalError?.name}, error.message:${additionalError?.message}`;\r\n return new NetworkError(error, httpStatus, responseHeaders);\r\n}\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * Base application class which will construct requests to send to and handle responses from the Microsoft STS using the authorization code flow.\r\n * @internal\r\n */\r\nclass BaseClient {\r\n constructor(configuration, performanceClient) {\r\n // Set the configuration\r\n this.config = buildClientConfiguration(configuration);\r\n // Initialize the logger\r\n this.logger = new Logger(this.config.loggerOptions, name, version);\r\n // Initialize crypto\r\n this.cryptoUtils = this.config.cryptoInterface;\r\n // Initialize storage interface\r\n this.cacheManager = this.config.storageInterface;\r\n // Set the network interface\r\n this.networkClient = this.config.networkInterface;\r\n // Set TelemetryManager\r\n this.serverTelemetryManager = this.config.serverTelemetryManager;\r\n // set Authority\r\n this.authority = this.config.authOptions.authority;\r\n // set performance telemetry client\r\n this.performanceClient = performanceClient;\r\n }\r\n /**\r\n * Creates default headers for requests to token endpoint\r\n */\r\n createTokenRequestHeaders(ccsCred) {\r\n const headers = {};\r\n headers[HeaderNames.CONTENT_TYPE] = Constants.URL_FORM_CONTENT_TYPE;\r\n if (!this.config.systemOptions.preventCorsPreflight && ccsCred) {\r\n switch (ccsCred.type) {\r\n case CcsCredentialType.HOME_ACCOUNT_ID:\r\n try {\r\n const clientInfo = buildClientInfoFromHomeAccountId(ccsCred.credential);\r\n headers[HeaderNames.CCS_HEADER] = `Oid:${clientInfo.uid}@${clientInfo.utid}`;\r\n }\r\n catch (e) {\r\n this.logger.verbose(\"Could not parse home account ID for CCS Header: \" +\r\n e);\r\n }\r\n break;\r\n case CcsCredentialType.UPN:\r\n headers[HeaderNames.CCS_HEADER] = `UPN: ${ccsCred.credential}`;\r\n break;\r\n }\r\n }\r\n return headers;\r\n }\r\n /**\r\n * Http post to token endpoint\r\n * @param tokenEndpoint\r\n * @param queryString\r\n * @param headers\r\n * @param thumbprint\r\n */\r\n async executePostToTokenEndpoint(tokenEndpoint, queryString, headers, thumbprint, correlationId, queuedEvent) {\r\n if (queuedEvent) {\r\n this.performanceClient?.addQueueMeasurement(queuedEvent, correlationId);\r\n }\r\n const response = await this.sendPostRequest(thumbprint, tokenEndpoint, { body: queryString, headers: headers }, correlationId);\r\n if (this.config.serverTelemetryManager &&\r\n response.status < 500 &&\r\n response.status !== 429) {\r\n // Telemetry data successfully logged by server, clear Telemetry cache\r\n this.config.serverTelemetryManager.clearTelemetryCache();\r\n }\r\n return response;\r\n }\r\n /**\r\n * Wraps sendPostRequestAsync with necessary preflight and postflight logic\r\n * @param thumbprint - Request thumbprint for throttling\r\n * @param tokenEndpoint - Endpoint to make the POST to\r\n * @param options - Body and Headers to include on the POST request\r\n * @param correlationId - CorrelationId for telemetry\r\n */\r\n async sendPostRequest(thumbprint, tokenEndpoint, options, correlationId) {\r\n ThrottlingUtils.preProcess(this.cacheManager, thumbprint, correlationId);\r\n let response;\r\n try {\r\n response = await invokeAsync((this.networkClient.sendPostRequestAsync.bind(this.networkClient)), PerformanceEvents.NetworkClientSendPostRequestAsync, this.logger, this.performanceClient, correlationId)(tokenEndpoint, options);\r\n const responseHeaders = response.headers || {};\r\n this.performanceClient?.addFields({\r\n refreshTokenSize: response.body.refresh_token?.length || 0,\r\n httpVerToken: responseHeaders[HeaderNames.X_MS_HTTP_VERSION] || \"\",\r\n requestId: responseHeaders[HeaderNames.X_MS_REQUEST_ID] || \"\",\r\n }, correlationId);\r\n }\r\n catch (e) {\r\n if (e instanceof NetworkError) {\r\n const responseHeaders = e.responseHeaders;\r\n if (responseHeaders) {\r\n this.performanceClient?.addFields({\r\n httpVerToken: responseHeaders[HeaderNames.X_MS_HTTP_VERSION] || \"\",\r\n requestId: responseHeaders[HeaderNames.X_MS_REQUEST_ID] ||\r\n \"\",\r\n contentTypeHeader: responseHeaders[HeaderNames.CONTENT_TYPE] ||\r\n undefined,\r\n contentLengthHeader: responseHeaders[HeaderNames.CONTENT_LENGTH] ||\r\n undefined,\r\n httpStatus: e.httpStatus,\r\n }, correlationId);\r\n }\r\n throw e.error;\r\n }\r\n if (e instanceof AuthError) {\r\n throw e;\r\n }\r\n else {\r\n throw createClientAuthError(networkError);\r\n }\r\n }\r\n ThrottlingUtils.postProcess(this.cacheManager, thumbprint, response, correlationId);\r\n return response;\r\n }\r\n /**\r\n * Updates the authority object of the client. Endpoint discovery must be completed.\r\n * @param updatedAuthority\r\n */\r\n async updateAuthority(cloudInstanceHostname, correlationId) {\r\n this.performanceClient?.addQueueMeasurement(PerformanceEvents.UpdateTokenEndpointAuthority, correlationId);\r\n const cloudInstanceAuthorityUri = `https://${cloudInstanceHostname}/${this.authority.tenant}/`;\r\n const cloudInstanceAuthority = await createDiscoveredInstance(cloudInstanceAuthorityUri, this.networkClient, this.cacheManager, this.authority.options, this.logger, correlationId, this.performanceClient);\r\n this.authority = cloudInstanceAuthority;\r\n }\r\n /**\r\n * Creates query string for the /token request\r\n * @param request\r\n */\r\n createTokenQueryParameters(request) {\r\n const parameters = new Map();\r\n if (request.embeddedClientId) {\r\n addBrokerParameters(parameters, this.config.authOptions.clientId, this.config.authOptions.redirectUri);\r\n }\r\n if (request.tokenQueryParameters) {\r\n addExtraQueryParameters(parameters, request.tokenQueryParameters);\r\n }\r\n addCorrelationId(parameters, request.correlationId);\r\n instrumentBrokerParams(parameters, request.correlationId, this.performanceClient);\r\n return mapToQueryString(parameters);\r\n }\r\n}\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n// Codes defined by MSAL\r\nconst noTokensFound = \"no_tokens_found\";\r\nconst nativeAccountUnavailable = \"native_account_unavailable\";\r\nconst refreshTokenExpired = \"refresh_token_expired\";\r\nconst uxNotAllowed = \"ux_not_allowed\";\r\n// Codes potentially returned by server\r\nconst interactionRequired = \"interaction_required\";\r\nconst consentRequired = \"consent_required\";\r\nconst loginRequired = \"login_required\";\r\nconst badToken = \"bad_token\";\n\nvar InteractionRequiredAuthErrorCodes = /*#__PURE__*/Object.freeze({\n __proto__: null,\n badToken: badToken,\n consentRequired: consentRequired,\n interactionRequired: interactionRequired,\n loginRequired: loginRequired,\n nativeAccountUnavailable: nativeAccountUnavailable,\n noTokensFound: noTokensFound,\n refreshTokenExpired: refreshTokenExpired,\n uxNotAllowed: uxNotAllowed\n});\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * InteractionRequiredServerErrorMessage contains string constants used by error codes and messages returned by the server indicating interaction is required\r\n */\r\nconst InteractionRequiredServerErrorMessage = [\r\n interactionRequired,\r\n consentRequired,\r\n loginRequired,\r\n badToken,\r\n uxNotAllowed,\r\n];\r\nconst InteractionRequiredAuthSubErrorMessage = [\r\n \"message_only\",\r\n \"additional_action\",\r\n \"basic_action\",\r\n \"user_password_expired\",\r\n \"consent_required\",\r\n \"bad_token\",\r\n];\r\nconst InteractionRequiredAuthErrorMessages = {\r\n [noTokensFound]: \"No refresh token found in the cache. Please sign-in.\",\r\n [nativeAccountUnavailable]: \"The requested account is not available in the native broker. It may have been deleted or logged out. Please sign-in again using an interactive API.\",\r\n [refreshTokenExpired]: \"Refresh token has expired.\",\r\n [badToken]: \"Identity provider returned bad_token due to an expired or invalid refresh token. Please invoke an interactive API to resolve.\",\r\n [uxNotAllowed]: \"`canShowUI` flag in Edge was set to false. User interaction required on web page. Please invoke an interactive API to resolve.\",\r\n};\r\n/**\r\n * Interaction required errors defined by the SDK\r\n * @deprecated Use InteractionRequiredAuthErrorCodes instead\r\n */\r\nconst InteractionRequiredAuthErrorMessage = {\r\n noTokensFoundError: {\r\n code: noTokensFound,\r\n desc: InteractionRequiredAuthErrorMessages[noTokensFound],\r\n },\r\n native_account_unavailable: {\r\n code: nativeAccountUnavailable,\r\n desc: InteractionRequiredAuthErrorMessages[nativeAccountUnavailable],\r\n },\r\n bad_token: {\r\n code: badToken,\r\n desc: InteractionRequiredAuthErrorMessages[badToken],\r\n },\r\n};\r\n/**\r\n * Error thrown when user interaction is required.\r\n */\r\nclass InteractionRequiredAuthError extends AuthError {\r\n constructor(errorCode, errorMessage, subError, timestamp, traceId, correlationId, claims, errorNo) {\r\n super(errorCode, errorMessage, subError);\r\n Object.setPrototypeOf(this, InteractionRequiredAuthError.prototype);\r\n this.timestamp = timestamp || Constants.EMPTY_STRING;\r\n this.traceId = traceId || Constants.EMPTY_STRING;\r\n this.correlationId = correlationId || Constants.EMPTY_STRING;\r\n this.claims = claims || Constants.EMPTY_STRING;\r\n this.name = \"InteractionRequiredAuthError\";\r\n this.errorNo = errorNo;\r\n }\r\n}\r\n/**\r\n * Helper function used to determine if an error thrown by the server requires interaction to resolve\r\n * @param errorCode\r\n * @param errorString\r\n * @param subError\r\n */\r\nfunction isInteractionRequiredError(errorCode, errorString, subError) {\r\n const isInteractionRequiredErrorCode = !!errorCode &&\r\n InteractionRequiredServerErrorMessage.indexOf(errorCode) > -1;\r\n const isInteractionRequiredSubError = !!subError &&\r\n InteractionRequiredAuthSubErrorMessage.indexOf(subError) > -1;\r\n const isInteractionRequiredErrorDesc = !!errorString &&\r\n InteractionRequiredServerErrorMessage.some((irErrorCode) => {\r\n return errorString.indexOf(irErrorCode) > -1;\r\n });\r\n return (isInteractionRequiredErrorCode ||\r\n isInteractionRequiredErrorDesc ||\r\n isInteractionRequiredSubError);\r\n}\r\n/**\r\n * Creates an InteractionRequiredAuthError\r\n */\r\nfunction createInteractionRequiredAuthError(errorCode) {\r\n return new InteractionRequiredAuthError(errorCode, InteractionRequiredAuthErrorMessages[errorCode]);\r\n}\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * Class which provides helpers for OAuth 2.0 protocol specific values\r\n */\r\nclass ProtocolUtils {\r\n /**\r\n * Appends user state with random guid, or returns random guid.\r\n * @param userState\r\n * @param randomGuid\r\n */\r\n static setRequestState(cryptoObj, userState, meta) {\r\n const libraryState = ProtocolUtils.generateLibraryState(cryptoObj, meta);\r\n return userState\r\n ? `${libraryState}${Constants.RESOURCE_DELIM}${userState}`\r\n : libraryState;\r\n }\r\n /**\r\n * Generates the state value used by the common library.\r\n * @param randomGuid\r\n * @param cryptoObj\r\n */\r\n static generateLibraryState(cryptoObj, meta) {\r\n if (!cryptoObj) {\r\n throw createClientAuthError(noCryptoObject);\r\n }\r\n // Create a state object containing a unique id and the timestamp of the request creation\r\n const stateObj = {\r\n id: cryptoObj.createNewGuid(),\r\n };\r\n if (meta) {\r\n stateObj.meta = meta;\r\n }\r\n const stateString = JSON.stringify(stateObj);\r\n return cryptoObj.base64Encode(stateString);\r\n }\r\n /**\r\n * Parses the state into the RequestStateObject, which contains the LibraryState info and the state passed by the user.\r\n * @param state\r\n * @param cryptoObj\r\n */\r\n static parseRequestState(cryptoObj, state) {\r\n if (!cryptoObj) {\r\n throw createClientAuthError(noCryptoObject);\r\n }\r\n if (!state) {\r\n throw createClientAuthError(invalidState);\r\n }\r\n try {\r\n // Split the state between library state and user passed state and decode them separately\r\n const splitState = state.split(Constants.RESOURCE_DELIM);\r\n const libraryState = splitState[0];\r\n const userState = splitState.length > 1\r\n ? splitState.slice(1).join(Constants.RESOURCE_DELIM)\r\n : Constants.EMPTY_STRING;\r\n const libraryStateString = cryptoObj.base64Decode(libraryState);\r\n const libraryStateObj = JSON.parse(libraryStateString);\r\n return {\r\n userRequestState: userState || Constants.EMPTY_STRING,\r\n libraryState: libraryStateObj,\r\n };\r\n }\r\n catch (e) {\r\n throw createClientAuthError(invalidState);\r\n }\r\n }\r\n}\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nconst KeyLocation = {\r\n SW: \"sw\"};\r\n/** @internal */\r\nclass PopTokenGenerator {\r\n constructor(cryptoUtils, performanceClient) {\r\n this.cryptoUtils = cryptoUtils;\r\n this.performanceClient = performanceClient;\r\n }\r\n /**\r\n * Generates the req_cnf validated at the RP in the POP protocol for SHR parameters\r\n * and returns an object containing the keyid, the full req_cnf string and the req_cnf string hash\r\n * @param request\r\n * @returns\r\n */\r\n async generateCnf(request, logger) {\r\n this.performanceClient?.addQueueMeasurement(PerformanceEvents.PopTokenGenerateCnf, request.correlationId);\r\n const reqCnf = await invokeAsync(this.generateKid.bind(this), PerformanceEvents.PopTokenGenerateCnf, logger, this.performanceClient, request.correlationId)(request);\r\n const reqCnfString = this.cryptoUtils.base64UrlEncode(JSON.stringify(reqCnf));\r\n return {\r\n kid: reqCnf.kid,\r\n reqCnfString,\r\n };\r\n }\r\n /**\r\n * Generates key_id for a SHR token request\r\n * @param request\r\n * @returns\r\n */\r\n async generateKid(request) {\r\n this.performanceClient?.addQueueMeasurement(PerformanceEvents.PopTokenGenerateKid, request.correlationId);\r\n const kidThumbprint = await this.cryptoUtils.getPublicKeyThumbprint(request);\r\n return {\r\n kid: kidThumbprint,\r\n xms_ksl: KeyLocation.SW,\r\n };\r\n }\r\n /**\r\n * Signs the POP access_token with the local generated key-pair\r\n * @param accessToken\r\n * @param request\r\n * @returns\r\n */\r\n async signPopToken(accessToken, keyId, request) {\r\n return this.signPayload(accessToken, keyId, request);\r\n }\r\n /**\r\n * Utility function to generate the signed JWT for an access_token\r\n * @param payload\r\n * @param kid\r\n * @param request\r\n * @param claims\r\n * @returns\r\n */\r\n async signPayload(payload, keyId, request, claims) {\r\n // Deconstruct request to extract SHR parameters\r\n const { resourceRequestMethod, resourceRequestUri, shrClaims, shrNonce, shrOptions, } = request;\r\n const resourceUrlString = resourceRequestUri\r\n ? new UrlString(resourceRequestUri)\r\n : undefined;\r\n const resourceUrlComponents = resourceUrlString?.getUrlComponents();\r\n return this.cryptoUtils.signJwt({\r\n at: payload,\r\n ts: nowSeconds(),\r\n m: resourceRequestMethod?.toUpperCase(),\r\n u: resourceUrlComponents?.HostNameAndPort,\r\n nonce: shrNonce || this.cryptoUtils.createNewGuid(),\r\n p: resourceUrlComponents?.AbsolutePath,\r\n q: resourceUrlComponents?.QueryString\r\n ? [[], resourceUrlComponents.QueryString]\r\n : undefined,\r\n client_claims: shrClaims || undefined,\r\n ...claims,\r\n }, keyId, shrOptions, request.correlationId);\r\n }\r\n}\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * This class instance helps track the memory changes facilitating\r\n * decisions to read from and write to the persistent cache\r\n */ class TokenCacheContext {\r\n constructor(tokenCache, hasChanged) {\r\n this.cache = tokenCache;\r\n this.hasChanged = hasChanged;\r\n }\r\n /**\r\n * boolean which indicates the changes in cache\r\n */\r\n get cacheHasChanged() {\r\n return this.hasChanged;\r\n }\r\n /**\r\n * function to retrieve the token cache\r\n */\r\n get tokenCache() {\r\n return this.cache;\r\n }\r\n}\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * Class that handles response parsing.\r\n * @internal\r\n */\r\nclass ResponseHandler {\r\n constructor(clientId, cacheStorage, cryptoObj, logger, serializableCache, persistencePlugin, performanceClient) {\r\n this.clientId = clientId;\r\n this.cacheStorage = cacheStorage;\r\n this.cryptoObj = cryptoObj;\r\n this.logger = logger;\r\n this.serializableCache = serializableCache;\r\n this.persistencePlugin = persistencePlugin;\r\n this.performanceClient = performanceClient;\r\n }\r\n /**\r\n * Function which validates server authorization token response.\r\n * @param serverResponse\r\n * @param refreshAccessToken\r\n */\r\n validateTokenResponse(serverResponse, refreshAccessToken) {\r\n // Check for error\r\n if (serverResponse.error ||\r\n serverResponse.error_description ||\r\n serverResponse.suberror) {\r\n const errString = `Error(s): ${serverResponse.error_codes || Constants.NOT_AVAILABLE} - Timestamp: ${serverResponse.timestamp || Constants.NOT_AVAILABLE} - Description: ${serverResponse.error_description || Constants.NOT_AVAILABLE} - Correlation ID: ${serverResponse.correlation_id || Constants.NOT_AVAILABLE} - Trace ID: ${serverResponse.trace_id || Constants.NOT_AVAILABLE}`;\r\n const serverErrorNo = serverResponse.error_codes?.length\r\n ? serverResponse.error_codes[0]\r\n : undefined;\r\n const serverError = new ServerError(serverResponse.error, errString, serverResponse.suberror, serverErrorNo, serverResponse.status);\r\n // check if 500 error\r\n if (refreshAccessToken &&\r\n serverResponse.status &&\r\n serverResponse.status >= HttpStatus.SERVER_ERROR_RANGE_START &&\r\n serverResponse.status <= HttpStatus.SERVER_ERROR_RANGE_END) {\r\n this.logger.warning(`executeTokenRequest:validateTokenResponse - AAD is currently unavailable and the access token is unable to be refreshed.\\n${serverError}`);\r\n // don't throw an exception, but alert the user via a log that the token was unable to be refreshed\r\n return;\r\n // check if 400 error\r\n }\r\n else if (refreshAccessToken &&\r\n serverResponse.status &&\r\n serverResponse.status >= HttpStatus.CLIENT_ERROR_RANGE_START &&\r\n serverResponse.status <= HttpStatus.CLIENT_ERROR_RANGE_END) {\r\n this.logger.warning(`executeTokenRequest:validateTokenResponse - AAD is currently available but is unable to refresh the access token.\\n${serverError}`);\r\n // don't throw an exception, but alert the user via a log that the token was unable to be refreshed\r\n return;\r\n }\r\n if (isInteractionRequiredError(serverResponse.error, serverResponse.error_description, serverResponse.suberror)) {\r\n throw new InteractionRequiredAuthError(serverResponse.error, serverResponse.error_description, serverResponse.suberror, serverResponse.timestamp || Constants.EMPTY_STRING, serverResponse.trace_id || Constants.EMPTY_STRING, serverResponse.correlation_id || Constants.EMPTY_STRING, serverResponse.claims || Constants.EMPTY_STRING, serverErrorNo);\r\n }\r\n throw serverError;\r\n }\r\n }\r\n /**\r\n * Returns a constructed token response based on given string. Also manages the cache updates and cleanups.\r\n * @param serverTokenResponse\r\n * @param authority\r\n */\r\n async handleServerTokenResponse(serverTokenResponse, authority, reqTimestamp, request, authCodePayload, userAssertionHash, handlingRefreshTokenResponse, forceCacheRefreshTokenResponse, serverRequestId) {\r\n this.performanceClient?.addQueueMeasurement(PerformanceEvents.HandleServerTokenResponse, serverTokenResponse.correlation_id);\r\n // create an idToken object (not entity)\r\n let idTokenClaims;\r\n if (serverTokenResponse.id_token) {\r\n idTokenClaims = extractTokenClaims(serverTokenResponse.id_token || Constants.EMPTY_STRING, this.cryptoObj.base64Decode);\r\n // token nonce check (TODO: Add a warning if no nonce is given?)\r\n if (authCodePayload && authCodePayload.nonce) {\r\n if (idTokenClaims.nonce !== authCodePayload.nonce) {\r\n throw createClientAuthError(nonceMismatch);\r\n }\r\n }\r\n // token max_age check\r\n if (request.maxAge || request.maxAge === 0) {\r\n const authTime = idTokenClaims.auth_time;\r\n if (!authTime) {\r\n throw createClientAuthError(authTimeNotFound);\r\n }\r\n checkMaxAge(authTime, request.maxAge);\r\n }\r\n }\r\n // generate homeAccountId\r\n this.homeAccountIdentifier = AccountEntity.generateHomeAccountId(serverTokenResponse.client_info || Constants.EMPTY_STRING, authority.authorityType, this.logger, this.cryptoObj, idTokenClaims);\r\n // save the response tokens\r\n let requestStateObj;\r\n if (!!authCodePayload && !!authCodePayload.state) {\r\n requestStateObj = ProtocolUtils.parseRequestState(this.cryptoObj, authCodePayload.state);\r\n }\r\n // Add keyId from request to serverTokenResponse if defined\r\n serverTokenResponse.key_id =\r\n serverTokenResponse.key_id || request.sshKid || undefined;\r\n const cacheRecord = this.generateCacheRecord(serverTokenResponse, authority, reqTimestamp, request, idTokenClaims, userAssertionHash, authCodePayload);\r\n let cacheContext;\r\n try {\r\n if (this.persistencePlugin && this.serializableCache) {\r\n this.logger.verbose(\"Persistence enabled, calling beforeCacheAccess\");\r\n cacheContext = new TokenCacheContext(this.serializableCache, true);\r\n await this.persistencePlugin.beforeCacheAccess(cacheContext);\r\n }\r\n /*\r\n * When saving a refreshed tokens to the cache, it is expected that the account that was used is present in the cache.\r\n * If not present, we should return null, as it's the case that another application called removeAccount in between\r\n * the calls to getAllAccounts and acquireTokenSilent. We should not overwrite that removal, unless explicitly flagged by\r\n * the developer, as in the case of refresh token flow used in ADAL Node to MSAL Node migration.\r\n */\r\n if (handlingRefreshTokenResponse &&\r\n !forceCacheRefreshTokenResponse &&\r\n cacheRecord.account) {\r\n const key = this.cacheStorage.generateAccountKey(AccountEntity.getAccountInfo(cacheRecord.account));\r\n const account = this.cacheStorage.getAccount(key, request.correlationId);\r\n if (!account) {\r\n this.logger.warning(\"Account used to refresh tokens not in persistence, refreshed tokens will not be stored in the cache\");\r\n return await ResponseHandler.generateAuthenticationResult(this.cryptoObj, authority, cacheRecord, false, request, idTokenClaims, requestStateObj, undefined, serverRequestId);\r\n }\r\n }\r\n await this.cacheStorage.saveCacheRecord(cacheRecord, request.correlationId, isKmsi(idTokenClaims || {}), request.storeInCache);\r\n }\r\n finally {\r\n if (this.persistencePlugin &&\r\n this.serializableCache &&\r\n cacheContext) {\r\n this.logger.verbose(\"Persistence enabled, calling afterCacheAccess\");\r\n await this.persistencePlugin.afterCacheAccess(cacheContext);\r\n }\r\n }\r\n return ResponseHandler.generateAuthenticationResult(this.cryptoObj, authority, cacheRecord, false, request, idTokenClaims, requestStateObj, serverTokenResponse, serverRequestId);\r\n }\r\n /**\r\n * Generates CacheRecord\r\n * @param serverTokenResponse\r\n * @param idTokenObj\r\n * @param authority\r\n */\r\n generateCacheRecord(serverTokenResponse, authority, reqTimestamp, request, idTokenClaims, userAssertionHash, authCodePayload) {\r\n const env = authority.getPreferredCache();\r\n if (!env) {\r\n throw createClientAuthError(invalidCacheEnvironment);\r\n }\r\n const claimsTenantId = getTenantIdFromIdTokenClaims(idTokenClaims);\r\n // IdToken: non AAD scenarios can have empty realm\r\n let cachedIdToken;\r\n let cachedAccount;\r\n if (serverTokenResponse.id_token && !!idTokenClaims) {\r\n cachedIdToken = createIdTokenEntity(this.homeAccountIdentifier, env, serverTokenResponse.id_token, this.clientId, claimsTenantId || \"\");\r\n cachedAccount = buildAccountToCache(this.cacheStorage, authority, this.homeAccountIdentifier, this.cryptoObj.base64Decode, request.correlationId, idTokenClaims, serverTokenResponse.client_info, env, claimsTenantId, authCodePayload, undefined, // nativeAccountId\r\n this.logger);\r\n }\r\n // AccessToken\r\n let cachedAccessToken = null;\r\n if (serverTokenResponse.access_token) {\r\n // If scopes not returned in server response, use request scopes\r\n const responseScopes = serverTokenResponse.scope\r\n ? ScopeSet.fromString(serverTokenResponse.scope)\r\n : new ScopeSet(request.scopes || []);\r\n /*\r\n * Use timestamp calculated before request\r\n * Server may return timestamps as strings, parse to numbers if so.\r\n */\r\n const expiresIn = (typeof serverTokenResponse.expires_in === \"string\"\r\n ? parseInt(serverTokenResponse.expires_in, 10)\r\n : serverTokenResponse.expires_in) || 0;\r\n const extExpiresIn = (typeof serverTokenResponse.ext_expires_in === \"string\"\r\n ? parseInt(serverTokenResponse.ext_expires_in, 10)\r\n : serverTokenResponse.ext_expires_in) || 0;\r\n const refreshIn = (typeof serverTokenResponse.refresh_in === \"string\"\r\n ? parseInt(serverTokenResponse.refresh_in, 10)\r\n : serverTokenResponse.refresh_in) || undefined;\r\n const tokenExpirationSeconds = reqTimestamp + expiresIn;\r\n const extendedTokenExpirationSeconds = tokenExpirationSeconds + extExpiresIn;\r\n const refreshOnSeconds = refreshIn && refreshIn > 0\r\n ? reqTimestamp + refreshIn\r\n : undefined;\r\n // non AAD scenarios can have empty realm\r\n cachedAccessToken = createAccessTokenEntity(this.homeAccountIdentifier, env, serverTokenResponse.access_token, this.clientId, claimsTenantId || authority.tenant || \"\", responseScopes.printScopes(), tokenExpirationSeconds, extendedTokenExpirationSeconds, this.cryptoObj.base64Decode, refreshOnSeconds, serverTokenResponse.token_type, userAssertionHash, serverTokenResponse.key_id, request.claims, request.requestedClaimsHash);\r\n }\r\n // refreshToken\r\n let cachedRefreshToken = null;\r\n if (serverTokenResponse.refresh_token) {\r\n let rtExpiresOn;\r\n if (serverTokenResponse.refresh_token_expires_in) {\r\n const rtExpiresIn = typeof serverTokenResponse.refresh_token_expires_in ===\r\n \"string\"\r\n ? parseInt(serverTokenResponse.refresh_token_expires_in, 10)\r\n : serverTokenResponse.refresh_token_expires_in;\r\n rtExpiresOn = reqTimestamp + rtExpiresIn;\r\n }\r\n cachedRefreshToken = createRefreshTokenEntity(this.homeAccountIdentifier, env, serverTokenResponse.refresh_token, this.clientId, serverTokenResponse.foci, userAssertionHash, rtExpiresOn);\r\n }\r\n // appMetadata\r\n let cachedAppMetadata = null;\r\n if (serverTokenResponse.foci) {\r\n cachedAppMetadata = {\r\n clientId: this.clientId,\r\n environment: env,\r\n familyId: serverTokenResponse.foci,\r\n };\r\n }\r\n return {\r\n account: cachedAccount,\r\n idToken: cachedIdToken,\r\n accessToken: cachedAccessToken,\r\n refreshToken: cachedRefreshToken,\r\n appMetadata: cachedAppMetadata,\r\n };\r\n }\r\n /**\r\n * Creates an @AuthenticationResult from @CacheRecord , @IdToken , and a boolean that states whether or not the result is from cache.\r\n *\r\n * Optionally takes a state string that is set as-is in the response.\r\n *\r\n * @param cacheRecord\r\n * @param idTokenObj\r\n * @param fromTokenCache\r\n * @param stateString\r\n */\r\n static async generateAuthenticationResult(cryptoObj, authority, cacheRecord, fromTokenCache, request, idTokenClaims, requestState, serverTokenResponse, requestId) {\r\n let accessToken = Constants.EMPTY_STRING;\r\n let responseScopes = [];\r\n let expiresOn = null;\r\n let extExpiresOn;\r\n let refreshOn;\r\n let familyId = Constants.EMPTY_STRING;\r\n if (cacheRecord.accessToken) {\r\n /*\r\n * if the request object has `popKid` property, `signPopToken` will be set to false and\r\n * the token will be returned unsigned\r\n */\r\n if (cacheRecord.accessToken.tokenType ===\r\n AuthenticationScheme.POP &&\r\n !request.popKid) {\r\n const popTokenGenerator = new PopTokenGenerator(cryptoObj);\r\n const { secret, keyId } = cacheRecord.accessToken;\r\n if (!keyId) {\r\n throw createClientAuthError(keyIdMissing);\r\n }\r\n accessToken = await popTokenGenerator.signPopToken(secret, keyId, request);\r\n }\r\n else {\r\n accessToken = cacheRecord.accessToken.secret;\r\n }\r\n responseScopes = ScopeSet.fromString(cacheRecord.accessToken.target).asArray();\r\n // Access token expiresOn cached in seconds, converting to Date for AuthenticationResult\r\n expiresOn = toDateFromSeconds(cacheRecord.accessToken.expiresOn);\r\n extExpiresOn = toDateFromSeconds(cacheRecord.accessToken.extendedExpiresOn);\r\n if (cacheRecord.accessToken.refreshOn) {\r\n refreshOn = toDateFromSeconds(cacheRecord.accessToken.refreshOn);\r\n }\r\n }\r\n if (cacheRecord.appMetadata) {\r\n familyId =\r\n cacheRecord.appMetadata.familyId === THE_FAMILY_ID\r\n ? THE_FAMILY_ID\r\n : \"\";\r\n }\r\n const uid = idTokenClaims?.oid || idTokenClaims?.sub || \"\";\r\n const tid = idTokenClaims?.tid || \"\";\r\n // for hybrid + native bridge enablement, send back the native account Id\r\n if (serverTokenResponse?.spa_accountid && !!cacheRecord.account) {\r\n cacheRecord.account.nativeAccountId =\r\n serverTokenResponse?.spa_accountid;\r\n }\r\n const accountInfo = cacheRecord.account\r\n ? updateAccountTenantProfileData(AccountEntity.getAccountInfo(cacheRecord.account), undefined, // tenantProfile optional\r\n idTokenClaims, cacheRecord.idToken?.secret)\r\n : null;\r\n return {\r\n authority: authority.canonicalAuthority,\r\n uniqueId: uid,\r\n tenantId: tid,\r\n scopes: responseScopes,\r\n account: accountInfo,\r\n idToken: cacheRecord?.idToken?.secret || \"\",\r\n idTokenClaims: idTokenClaims || {},\r\n accessToken: accessToken,\r\n fromCache: fromTokenCache,\r\n expiresOn: expiresOn,\r\n extExpiresOn: extExpiresOn,\r\n refreshOn: refreshOn,\r\n correlationId: request.correlationId,\r\n requestId: requestId || Constants.EMPTY_STRING,\r\n familyId: familyId,\r\n tokenType: cacheRecord.accessToken?.tokenType || Constants.EMPTY_STRING,\r\n state: requestState\r\n ? requestState.userRequestState\r\n : Constants.EMPTY_STRING,\r\n cloudGraphHostName: cacheRecord.account?.cloudGraphHostName ||\r\n Constants.EMPTY_STRING,\r\n msGraphHost: cacheRecord.account?.msGraphHost || Constants.EMPTY_STRING,\r\n code: serverTokenResponse?.spa_code,\r\n fromNativeBroker: false,\r\n };\r\n }\r\n}\r\nfunction buildAccountToCache(cacheStorage, authority, homeAccountId, base64Decode, correlationId, idTokenClaims, clientInfo, environment, claimsTenantId, authCodePayload, nativeAccountId, logger) {\r\n logger?.verbose(\"setCachedAccount called\");\r\n // Check if base account is already cached\r\n const accountKeys = cacheStorage.getAccountKeys();\r\n const baseAccountKey = accountKeys.find((accountKey) => {\r\n return accountKey.startsWith(homeAccountId);\r\n });\r\n let cachedAccount = null;\r\n if (baseAccountKey) {\r\n cachedAccount = cacheStorage.getAccount(baseAccountKey, correlationId);\r\n }\r\n const baseAccount = cachedAccount ||\r\n AccountEntity.createAccount({\r\n homeAccountId,\r\n idTokenClaims,\r\n clientInfo,\r\n environment,\r\n cloudGraphHostName: authCodePayload?.cloud_graph_host_name,\r\n msGraphHost: authCodePayload?.msgraph_host,\r\n nativeAccountId: nativeAccountId,\r\n }, authority, base64Decode);\r\n const tenantProfiles = baseAccount.tenantProfiles || [];\r\n const tenantId = claimsTenantId || baseAccount.realm;\r\n if (tenantId &&\r\n !tenantProfiles.find((tenantProfile) => {\r\n return tenantProfile.tenantId === tenantId;\r\n })) {\r\n const newTenantProfile = buildTenantProfile(homeAccountId, baseAccount.localAccountId, tenantId, idTokenClaims);\r\n tenantProfiles.push(newTenantProfile);\r\n }\r\n baseAccount.tenantProfiles = tenantProfiles;\r\n return baseAccount;\r\n}\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nasync function getClientAssertion(clientAssertion, clientId, tokenEndpoint) {\r\n if (typeof clientAssertion === \"string\") {\r\n return clientAssertion;\r\n }\r\n else {\r\n const config = {\r\n clientId: clientId,\r\n tokenEndpoint: tokenEndpoint,\r\n };\r\n return clientAssertion(config);\r\n }\r\n}\n\nvar ClientAssertionUtils = /*#__PURE__*/Object.freeze({\n __proto__: null,\n getClientAssertion: getClientAssertion\n});\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * Oauth2.0 Authorization Code client\r\n * @internal\r\n */\r\nclass AuthorizationCodeClient extends BaseClient {\r\n constructor(configuration, performanceClient) {\r\n super(configuration, performanceClient);\r\n // Flag to indicate if client is for hybrid spa auth code redemption\r\n this.includeRedirectUri = true;\r\n this.oidcDefaultScopes =\r\n this.config.authOptions.authority.options.OIDCOptions?.defaultScopes;\r\n }\r\n /**\r\n * API to acquire a token in exchange of 'authorization_code` acquired by the user in the first leg of the\r\n * authorization_code_grant\r\n * @param request\r\n */\r\n async acquireToken(request, authCodePayload) {\r\n this.performanceClient?.addQueueMeasurement(PerformanceEvents.AuthClientAcquireToken, request.correlationId);\r\n if (!request.code) {\r\n throw createClientAuthError(requestCannotBeMade);\r\n }\r\n const reqTimestamp = nowSeconds();\r\n const response = await invokeAsync(this.executeTokenRequest.bind(this), PerformanceEvents.AuthClientExecuteTokenRequest, this.logger, this.performanceClient, request.correlationId)(this.authority, request);\r\n // Retrieve requestId from response headers\r\n const requestId = response.headers?.[HeaderNames.X_MS_REQUEST_ID];\r\n const responseHandler = new ResponseHandler(this.config.authOptions.clientId, this.cacheManager, this.cryptoUtils, this.logger, this.config.serializableCache, this.config.persistencePlugin, this.performanceClient);\r\n // Validate response. This function throws a server error if an error is returned by the server.\r\n responseHandler.validateTokenResponse(response.body);\r\n return invokeAsync(responseHandler.handleServerTokenResponse.bind(responseHandler), PerformanceEvents.HandleServerTokenResponse, this.logger, this.performanceClient, request.correlationId)(response.body, this.authority, reqTimestamp, request, authCodePayload, undefined, undefined, undefined, requestId);\r\n }\r\n /**\r\n * Used to log out the current user, and redirect the user to the postLogoutRedirectUri.\r\n * Default behaviour is to redirect the user to `window.location.href`.\r\n * @param authorityUri\r\n */\r\n getLogoutUri(logoutRequest) {\r\n // Throw error if logoutRequest is null/undefined\r\n if (!logoutRequest) {\r\n throw createClientConfigurationError(logoutRequestEmpty);\r\n }\r\n const queryString = this.createLogoutUrlQueryString(logoutRequest);\r\n // Construct logout URI\r\n return UrlString.appendQueryString(this.authority.endSessionEndpoint, queryString);\r\n }\r\n /**\r\n * Executes POST request to token endpoint\r\n * @param authority\r\n * @param request\r\n */\r\n async executeTokenRequest(authority, request) {\r\n this.performanceClient?.addQueueMeasurement(PerformanceEvents.AuthClientExecuteTokenRequest, request.correlationId);\r\n const queryParametersString = this.createTokenQueryParameters(request);\r\n const endpoint = UrlString.appendQueryString(authority.tokenEndpoint, queryParametersString);\r\n const requestBody = await invokeAsync(this.createTokenRequestBody.bind(this), PerformanceEvents.AuthClientCreateTokenRequestBody, this.logger, this.performanceClient, request.correlationId)(request);\r\n let ccsCredential = undefined;\r\n if (request.clientInfo) {\r\n try {\r\n const clientInfo = buildClientInfo(request.clientInfo, this.cryptoUtils.base64Decode);\r\n ccsCredential = {\r\n credential: `${clientInfo.uid}${Separators.CLIENT_INFO_SEPARATOR}${clientInfo.utid}`,\r\n type: CcsCredentialType.HOME_ACCOUNT_ID,\r\n };\r\n }\r\n catch (e) {\r\n this.logger.verbose(\"Could not parse client info for CCS Header: \" + e);\r\n }\r\n }\r\n const headers = this.createTokenRequestHeaders(ccsCredential || request.ccsCredential);\r\n const thumbprint = getRequestThumbprint(this.config.authOptions.clientId, request);\r\n return invokeAsync(this.executePostToTokenEndpoint.bind(this), PerformanceEvents.AuthorizationCodeClientExecutePostToTokenEndpoint, this.logger, this.performanceClient, request.correlationId)(endpoint, requestBody, headers, thumbprint, request.correlationId, PerformanceEvents.AuthorizationCodeClientExecutePostToTokenEndpoint);\r\n }\r\n /**\r\n * Generates a map for all the params to be sent to the service\r\n * @param request\r\n */\r\n async createTokenRequestBody(request) {\r\n this.performanceClient?.addQueueMeasurement(PerformanceEvents.AuthClientCreateTokenRequestBody, request.correlationId);\r\n const parameters = new Map();\r\n addClientId(parameters, request.embeddedClientId ||\r\n request.tokenBodyParameters?.[CLIENT_ID] ||\r\n this.config.authOptions.clientId);\r\n /*\r\n * For hybrid spa flow, there will be a code but no verifier\r\n * In this scenario, don't include redirect uri as auth code will not be bound to redirect URI\r\n */\r\n if (!this.includeRedirectUri) {\r\n // Just validate\r\n if (!request.redirectUri) {\r\n throw createClientConfigurationError(redirectUriEmpty);\r\n }\r\n }\r\n else {\r\n // Validate and include redirect uri\r\n addRedirectUri(parameters, request.redirectUri);\r\n }\r\n // Add scope array, parameter builder will add default scopes and dedupe\r\n addScopes(parameters, request.scopes, true, this.oidcDefaultScopes);\r\n // add code: user set, not validated\r\n addAuthorizationCode(parameters, request.code);\r\n // Add library metadata\r\n addLibraryInfo(parameters, this.config.libraryInfo);\r\n addApplicationTelemetry(parameters, this.config.telemetry.application);\r\n addThrottling(parameters);\r\n if (this.serverTelemetryManager && !isOidcProtocolMode(this.config)) {\r\n addServerTelemetry(parameters, this.serverTelemetryManager);\r\n }\r\n // add code_verifier if passed\r\n if (request.codeVerifier) {\r\n addCodeVerifier(parameters, request.codeVerifier);\r\n }\r\n if (this.config.clientCredentials.clientSecret) {\r\n addClientSecret(parameters, this.config.clientCredentials.clientSecret);\r\n }\r\n if (this.config.clientCredentials.clientAssertion) {\r\n const clientAssertion = this.config.clientCredentials.clientAssertion;\r\n addClientAssertion(parameters, await getClientAssertion(clientAssertion.assertion, this.config.authOptions.clientId, request.resourceRequestUri));\r\n addClientAssertionType(parameters, clientAssertion.assertionType);\r\n }\r\n addGrantType(parameters, GrantType.AUTHORIZATION_CODE_GRANT);\r\n addClientInfo(parameters);\r\n if (request.authenticationScheme === AuthenticationScheme.POP) {\r\n const popTokenGenerator = new PopTokenGenerator(this.cryptoUtils, this.performanceClient);\r\n let reqCnfData;\r\n if (!request.popKid) {\r\n const generatedReqCnfData = await invokeAsync(popTokenGenerator.generateCnf.bind(popTokenGenerator), PerformanceEvents.PopTokenGenerateCnf, this.logger, this.performanceClient, request.correlationId)(request, this.logger);\r\n reqCnfData = generatedReqCnfData.reqCnfString;\r\n }\r\n else {\r\n reqCnfData = this.cryptoUtils.encodeKid(request.popKid);\r\n }\r\n // SPA PoP requires full Base64Url encoded req_cnf string (unhashed)\r\n addPopToken(parameters, reqCnfData);\r\n }\r\n else if (request.authenticationScheme === AuthenticationScheme.SSH) {\r\n if (request.sshJwk) {\r\n addSshJwk(parameters, request.sshJwk);\r\n }\r\n else {\r\n throw createClientConfigurationError(missingSshJwk);\r\n }\r\n }\r\n if (!StringUtils.isEmptyObj(request.claims) ||\r\n (this.config.authOptions.clientCapabilities &&\r\n this.config.authOptions.clientCapabilities.length > 0)) {\r\n addClaims(parameters, request.claims, this.config.authOptions.clientCapabilities);\r\n }\r\n let ccsCred = undefined;\r\n if (request.clientInfo) {\r\n try {\r\n const clientInfo = buildClientInfo(request.clientInfo, this.cryptoUtils.base64Decode);\r\n ccsCred = {\r\n credential: `${clientInfo.uid}${Separators.CLIENT_INFO_SEPARATOR}${clientInfo.utid}`,\r\n type: CcsCredentialType.HOME_ACCOUNT_ID,\r\n };\r\n }\r\n catch (e) {\r\n this.logger.verbose(\"Could not parse client info for CCS Header: \" + e);\r\n }\r\n }\r\n else {\r\n ccsCred = request.ccsCredential;\r\n }\r\n // Adds these as parameters in the request instead of headers to prevent CORS preflight request\r\n if (this.config.systemOptions.preventCorsPreflight && ccsCred) {\r\n switch (ccsCred.type) {\r\n case CcsCredentialType.HOME_ACCOUNT_ID:\r\n try {\r\n const clientInfo = buildClientInfoFromHomeAccountId(ccsCred.credential);\r\n addCcsOid(parameters, clientInfo);\r\n }\r\n catch (e) {\r\n this.logger.verbose(\"Could not parse home account ID for CCS Header: \" +\r\n e);\r\n }\r\n break;\r\n case CcsCredentialType.UPN:\r\n addCcsUpn(parameters, ccsCred.credential);\r\n break;\r\n }\r\n }\r\n if (request.embeddedClientId) {\r\n addBrokerParameters(parameters, this.config.authOptions.clientId, this.config.authOptions.redirectUri);\r\n }\r\n if (request.tokenBodyParameters) {\r\n addExtraQueryParameters(parameters, request.tokenBodyParameters);\r\n }\r\n // Add hybrid spa parameters if not already provided\r\n if (request.enableSpaAuthorizationCode &&\r\n (!request.tokenBodyParameters ||\r\n !request.tokenBodyParameters[RETURN_SPA_CODE])) {\r\n addExtraQueryParameters(parameters, {\r\n [RETURN_SPA_CODE]: \"1\",\r\n });\r\n }\r\n instrumentBrokerParams(parameters, request.correlationId, this.performanceClient);\r\n return mapToQueryString(parameters);\r\n }\r\n /**\r\n * This API validates the `EndSessionRequest` and creates a URL\r\n * @param request\r\n */\r\n createLogoutUrlQueryString(request) {\r\n const parameters = new Map();\r\n if (request.postLogoutRedirectUri) {\r\n addPostLogoutRedirectUri(parameters, request.postLogoutRedirectUri);\r\n }\r\n if (request.correlationId) {\r\n addCorrelationId(parameters, request.correlationId);\r\n }\r\n if (request.idTokenHint) {\r\n addIdTokenHint(parameters, request.idTokenHint);\r\n }\r\n if (request.state) {\r\n addState(parameters, request.state);\r\n }\r\n if (request.logoutHint) {\r\n addLogoutHint(parameters, request.logoutHint);\r\n }\r\n if (request.extraQueryParameters) {\r\n addExtraQueryParameters(parameters, request.extraQueryParameters);\r\n }\r\n if (this.config.authOptions.instanceAware) {\r\n addInstanceAware(parameters);\r\n }\r\n return mapToQueryString(parameters, this.config.authOptions.encodeExtraQueryParams, request.extraQueryParameters);\r\n }\r\n}\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nconst DEFAULT_REFRESH_TOKEN_EXPIRATION_OFFSET_SECONDS = 300; // 5 Minutes\r\n/**\r\n * OAuth2.0 refresh token client\r\n * @internal\r\n */\r\nclass RefreshTokenClient extends BaseClient {\r\n constructor(configuration, performanceClient) {\r\n super(configuration, performanceClient);\r\n }\r\n async acquireToken(request) {\r\n this.performanceClient?.addQueueMeasurement(PerformanceEvents.RefreshTokenClientAcquireToken, request.correlationId);\r\n const reqTimestamp = nowSeconds();\r\n const response = await invokeAsync(this.executeTokenRequest.bind(this), PerformanceEvents.RefreshTokenClientExecuteTokenRequest, this.logger, this.performanceClient, request.correlationId)(request, this.authority);\r\n // Retrieve requestId from response headers\r\n const requestId = response.headers?.[HeaderNames.X_MS_REQUEST_ID];\r\n const responseHandler = new ResponseHandler(this.config.authOptions.clientId, this.cacheManager, this.cryptoUtils, this.logger, this.config.serializableCache, this.config.persistencePlugin);\r\n responseHandler.validateTokenResponse(response.body);\r\n return invokeAsync(responseHandler.handleServerTokenResponse.bind(responseHandler), PerformanceEvents.HandleServerTokenResponse, this.logger, this.performanceClient, request.correlationId)(response.body, this.authority, reqTimestamp, request, undefined, undefined, true, request.forceCache, requestId);\r\n }\r\n /**\r\n * Gets cached refresh token and attaches to request, then calls acquireToken API\r\n * @param request\r\n */\r\n async acquireTokenByRefreshToken(request) {\r\n // Cannot renew token if no request object is given.\r\n if (!request) {\r\n throw createClientConfigurationError(tokenRequestEmpty);\r\n }\r\n this.performanceClient?.addQueueMeasurement(PerformanceEvents.RefreshTokenClientAcquireTokenByRefreshToken, request.correlationId);\r\n // We currently do not support silent flow for account === null use cases; This will be revisited for confidential flow usecases\r\n if (!request.account) {\r\n throw createClientAuthError(noAccountInSilentRequest);\r\n }\r\n // try checking if FOCI is enabled for the given application\r\n const isFOCI = this.cacheManager.isAppMetadataFOCI(request.account.environment);\r\n // if the app is part of the family, retrive a Family refresh token if present and make a refreshTokenRequest\r\n if (isFOCI) {\r\n try {\r\n return await invokeAsync(this.acquireTokenWithCachedRefreshToken.bind(this), PerformanceEvents.RefreshTokenClientAcquireTokenWithCachedRefreshToken, this.logger, this.performanceClient, request.correlationId)(request, true);\r\n }\r\n catch (e) {\r\n const noFamilyRTInCache = e instanceof InteractionRequiredAuthError &&\r\n e.errorCode ===\r\n noTokensFound;\r\n const clientMismatchErrorWithFamilyRT = e instanceof ServerError &&\r\n e.errorCode === Errors.INVALID_GRANT_ERROR &&\r\n e.subError === Errors.CLIENT_MISMATCH_ERROR;\r\n // if family Refresh Token (FRT) cache acquisition fails or if client_mismatch error is seen with FRT, reattempt with application Refresh Token (ART)\r\n if (noFamilyRTInCache || clientMismatchErrorWithFamilyRT) {\r\n return invokeAsync(this.acquireTokenWithCachedRefreshToken.bind(this), PerformanceEvents.RefreshTokenClientAcquireTokenWithCachedRefreshToken, this.logger, this.performanceClient, request.correlationId)(request, false);\r\n // throw in all other cases\r\n }\r\n else {\r\n throw e;\r\n }\r\n }\r\n }\r\n // fall back to application refresh token acquisition\r\n return invokeAsync(this.acquireTokenWithCachedRefreshToken.bind(this), PerformanceEvents.RefreshTokenClientAcquireTokenWithCachedRefreshToken, this.logger, this.performanceClient, request.correlationId)(request, false);\r\n }\r\n /**\r\n * makes a network call to acquire tokens by exchanging RefreshToken available in userCache; throws if refresh token is not cached\r\n * @param request\r\n */\r\n async acquireTokenWithCachedRefreshToken(request, foci) {\r\n this.performanceClient?.addQueueMeasurement(PerformanceEvents.RefreshTokenClientAcquireTokenWithCachedRefreshToken, request.correlationId);\r\n // fetches family RT or application RT based on FOCI value\r\n const refreshToken = invoke(this.cacheManager.getRefreshToken.bind(this.cacheManager), PerformanceEvents.CacheManagerGetRefreshToken, this.logger, this.performanceClient, request.correlationId)(request.account, foci, request.correlationId, undefined, this.performanceClient);\r\n if (!refreshToken) {\r\n throw createInteractionRequiredAuthError(noTokensFound);\r\n }\r\n if (refreshToken.expiresOn &&\r\n isTokenExpired(refreshToken.expiresOn, request.refreshTokenExpirationOffsetSeconds ||\r\n DEFAULT_REFRESH_TOKEN_EXPIRATION_OFFSET_SECONDS)) {\r\n this.performanceClient?.addFields({ rtExpiresOnMs: Number(refreshToken.expiresOn) }, request.correlationId);\r\n throw createInteractionRequiredAuthError(refreshTokenExpired);\r\n }\r\n // attach cached RT size to the current measurement\r\n const refreshTokenRequest = {\r\n ...request,\r\n refreshToken: refreshToken.secret,\r\n authenticationScheme: request.authenticationScheme || AuthenticationScheme.BEARER,\r\n ccsCredential: {\r\n credential: request.account.homeAccountId,\r\n type: CcsCredentialType.HOME_ACCOUNT_ID,\r\n },\r\n };\r\n try {\r\n return await invokeAsync(this.acquireToken.bind(this), PerformanceEvents.RefreshTokenClientAcquireToken, this.logger, this.performanceClient, request.correlationId)(refreshTokenRequest);\r\n }\r\n catch (e) {\r\n if (e instanceof InteractionRequiredAuthError) {\r\n this.performanceClient?.addFields({ rtExpiresOnMs: Number(refreshToken.expiresOn) }, request.correlationId);\r\n if (e.subError === badToken) {\r\n // Remove bad refresh token from cache\r\n this.logger.verbose(\"acquireTokenWithRefreshToken: bad refresh token, removing from cache\");\r\n const badRefreshTokenKey = this.cacheManager.generateCredentialKey(refreshToken);\r\n this.cacheManager.removeRefreshToken(badRefreshTokenKey, request.correlationId);\r\n }\r\n }\r\n throw e;\r\n }\r\n }\r\n /**\r\n * Constructs the network message and makes a NW call to the underlying secure token service\r\n * @param request\r\n * @param authority\r\n */\r\n async executeTokenRequest(request, authority) {\r\n this.performanceClient?.addQueueMeasurement(PerformanceEvents.RefreshTokenClientExecuteTokenRequest, request.correlationId);\r\n const queryParametersString = this.createTokenQueryParameters(request);\r\n const endpoint = UrlString.appendQueryString(authority.tokenEndpoint, queryParametersString);\r\n const requestBody = await invokeAsync(this.createTokenRequestBody.bind(this), PerformanceEvents.RefreshTokenClientCreateTokenRequestBody, this.logger, this.performanceClient, request.correlationId)(request);\r\n const headers = this.createTokenRequestHeaders(request.ccsCredential);\r\n const thumbprint = getRequestThumbprint(this.config.authOptions.clientId, request);\r\n return invokeAsync(this.executePostToTokenEndpoint.bind(this), PerformanceEvents.RefreshTokenClientExecutePostToTokenEndpoint, this.logger, this.performanceClient, request.correlationId)(endpoint, requestBody, headers, thumbprint, request.correlationId, PerformanceEvents.RefreshTokenClientExecutePostToTokenEndpoint);\r\n }\r\n /**\r\n * Helper function to create the token request body\r\n * @param request\r\n */\r\n async createTokenRequestBody(request) {\r\n this.performanceClient?.addQueueMeasurement(PerformanceEvents.RefreshTokenClientCreateTokenRequestBody, request.correlationId);\r\n const parameters = new Map();\r\n addClientId(parameters, request.embeddedClientId ||\r\n request.tokenBodyParameters?.[CLIENT_ID] ||\r\n this.config.authOptions.clientId);\r\n if (request.redirectUri) {\r\n addRedirectUri(parameters, request.redirectUri);\r\n }\r\n addScopes(parameters, request.scopes, true, this.config.authOptions.authority.options.OIDCOptions?.defaultScopes);\r\n addGrantType(parameters, GrantType.REFRESH_TOKEN_GRANT);\r\n addClientInfo(parameters);\r\n addLibraryInfo(parameters, this.config.libraryInfo);\r\n addApplicationTelemetry(parameters, this.config.telemetry.application);\r\n addThrottling(parameters);\r\n if (this.serverTelemetryManager && !isOidcProtocolMode(this.config)) {\r\n addServerTelemetry(parameters, this.serverTelemetryManager);\r\n }\r\n addRefreshToken(parameters, request.refreshToken);\r\n if (this.config.clientCredentials.clientSecret) {\r\n addClientSecret(parameters, this.config.clientCredentials.clientSecret);\r\n }\r\n if (this.config.clientCredentials.clientAssertion) {\r\n const clientAssertion = this.config.clientCredentials.clientAssertion;\r\n addClientAssertion(parameters, await getClientAssertion(clientAssertion.assertion, this.config.authOptions.clientId, request.resourceRequestUri));\r\n addClientAssertionType(parameters, clientAssertion.assertionType);\r\n }\r\n if (request.authenticationScheme === AuthenticationScheme.POP) {\r\n const popTokenGenerator = new PopTokenGenerator(this.cryptoUtils, this.performanceClient);\r\n let reqCnfData;\r\n if (!request.popKid) {\r\n const generatedReqCnfData = await invokeAsync(popTokenGenerator.generateCnf.bind(popTokenGenerator), PerformanceEvents.PopTokenGenerateCnf, this.logger, this.performanceClient, request.correlationId)(request, this.logger);\r\n reqCnfData = generatedReqCnfData.reqCnfString;\r\n }\r\n else {\r\n reqCnfData = this.cryptoUtils.encodeKid(request.popKid);\r\n }\r\n // SPA PoP requires full Base64Url encoded req_cnf string (unhashed)\r\n addPopToken(parameters, reqCnfData);\r\n }\r\n else if (request.authenticationScheme === AuthenticationScheme.SSH) {\r\n if (request.sshJwk) {\r\n addSshJwk(parameters, request.sshJwk);\r\n }\r\n else {\r\n throw createClientConfigurationError(missingSshJwk);\r\n }\r\n }\r\n if (!StringUtils.isEmptyObj(request.claims) ||\r\n (this.config.authOptions.clientCapabilities &&\r\n this.config.authOptions.clientCapabilities.length > 0)) {\r\n addClaims(parameters, request.claims, this.config.authOptions.clientCapabilities);\r\n }\r\n if (this.config.systemOptions.preventCorsPreflight &&\r\n request.ccsCredential) {\r\n switch (request.ccsCredential.type) {\r\n case CcsCredentialType.HOME_ACCOUNT_ID:\r\n try {\r\n const clientInfo = buildClientInfoFromHomeAccountId(request.ccsCredential.credential);\r\n addCcsOid(parameters, clientInfo);\r\n }\r\n catch (e) {\r\n this.logger.verbose(\"Could not parse home account ID for CCS Header: \" +\r\n e);\r\n }\r\n break;\r\n case CcsCredentialType.UPN:\r\n addCcsUpn(parameters, request.ccsCredential.credential);\r\n break;\r\n }\r\n }\r\n if (request.embeddedClientId) {\r\n addBrokerParameters(parameters, this.config.authOptions.clientId, this.config.authOptions.redirectUri);\r\n }\r\n if (request.tokenBodyParameters) {\r\n addExtraQueryParameters(parameters, request.tokenBodyParameters);\r\n }\r\n instrumentBrokerParams(parameters, request.correlationId, this.performanceClient);\r\n return mapToQueryString(parameters);\r\n }\r\n}\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/** @internal */\r\nclass SilentFlowClient extends BaseClient {\r\n constructor(configuration, performanceClient) {\r\n super(configuration, performanceClient);\r\n }\r\n /**\r\n * Retrieves token from cache or throws an error if it must be refreshed.\r\n * @param request\r\n */\r\n async acquireCachedToken(request) {\r\n this.performanceClient?.addQueueMeasurement(PerformanceEvents.SilentFlowClientAcquireCachedToken, request.correlationId);\r\n let lastCacheOutcome = CacheOutcome.NOT_APPLICABLE;\r\n if (request.forceRefresh ||\r\n (!this.config.cacheOptions.claimsBasedCachingEnabled &&\r\n !StringUtils.isEmptyObj(request.claims))) {\r\n // Must refresh due to present force_refresh flag.\r\n this.setCacheOutcome(CacheOutcome.FORCE_REFRESH_OR_CLAIMS, request.correlationId);\r\n throw createClientAuthError(tokenRefreshRequired);\r\n }\r\n // We currently do not support silent flow for account === null use cases; This will be revisited for confidential flow usecases\r\n if (!request.account) {\r\n throw createClientAuthError(noAccountInSilentRequest);\r\n }\r\n const requestTenantId = request.account.tenantId ||\r\n getTenantFromAuthorityString(request.authority);\r\n const tokenKeys = this.cacheManager.getTokenKeys();\r\n const cachedAccessToken = this.cacheManager.getAccessToken(request.account, request, tokenKeys, requestTenantId);\r\n if (!cachedAccessToken) {\r\n // must refresh due to non-existent access_token\r\n this.setCacheOutcome(CacheOutcome.NO_CACHED_ACCESS_TOKEN, request.correlationId);\r\n throw createClientAuthError(tokenRefreshRequired);\r\n }\r\n else if (wasClockTurnedBack(cachedAccessToken.cachedAt) ||\r\n isTokenExpired(cachedAccessToken.expiresOn, this.config.systemOptions.tokenRenewalOffsetSeconds)) {\r\n // must refresh due to the expires_in value\r\n this.setCacheOutcome(CacheOutcome.CACHED_ACCESS_TOKEN_EXPIRED, request.correlationId);\r\n throw createClientAuthError(tokenRefreshRequired);\r\n }\r\n else if (cachedAccessToken.refreshOn &&\r\n isTokenExpired(cachedAccessToken.refreshOn, 0)) {\r\n // must refresh (in the background) due to the refresh_in value\r\n lastCacheOutcome = CacheOutcome.PROACTIVELY_REFRESHED;\r\n // don't throw ClientAuthError.createRefreshRequiredError(), return cached token instead\r\n }\r\n const environment = request.authority || this.authority.getPreferredCache();\r\n const cacheRecord = {\r\n account: this.cacheManager.getAccount(this.cacheManager.generateAccountKey(request.account), request.correlationId),\r\n accessToken: cachedAccessToken,\r\n idToken: this.cacheManager.getIdToken(request.account, request.correlationId, tokenKeys, requestTenantId, this.performanceClient),\r\n refreshToken: null,\r\n appMetadata: this.cacheManager.readAppMetadataFromCache(environment),\r\n };\r\n this.setCacheOutcome(lastCacheOutcome, request.correlationId);\r\n if (this.config.serverTelemetryManager) {\r\n this.config.serverTelemetryManager.incrementCacheHits();\r\n }\r\n return [\r\n await invokeAsync(this.generateResultFromCacheRecord.bind(this), PerformanceEvents.SilentFlowClientGenerateResultFromCacheRecord, this.logger, this.performanceClient, request.correlationId)(cacheRecord, request),\r\n lastCacheOutcome,\r\n ];\r\n }\r\n setCacheOutcome(cacheOutcome, correlationId) {\r\n this.serverTelemetryManager?.setCacheOutcome(cacheOutcome);\r\n this.performanceClient?.addFields({\r\n cacheOutcome: cacheOutcome,\r\n }, correlationId);\r\n if (cacheOutcome !== CacheOutcome.NOT_APPLICABLE) {\r\n this.logger.info(`Token refresh is required due to cache outcome: ${cacheOutcome}`);\r\n }\r\n }\r\n /**\r\n * Helper function to build response object from the CacheRecord\r\n * @param cacheRecord\r\n */\r\n async generateResultFromCacheRecord(cacheRecord, request) {\r\n this.performanceClient?.addQueueMeasurement(PerformanceEvents.SilentFlowClientGenerateResultFromCacheRecord, request.correlationId);\r\n let idTokenClaims;\r\n if (cacheRecord.idToken) {\r\n idTokenClaims = extractTokenClaims(cacheRecord.idToken.secret, this.config.cryptoInterface.base64Decode);\r\n }\r\n // token max_age check\r\n if (request.maxAge || request.maxAge === 0) {\r\n const authTime = idTokenClaims?.auth_time;\r\n if (!authTime) {\r\n throw createClientAuthError(authTimeNotFound);\r\n }\r\n checkMaxAge(authTime, request.maxAge);\r\n }\r\n return ResponseHandler.generateAuthenticationResult(this.cryptoUtils, this.authority, cacheRecord, true, request, idTokenClaims);\r\n }\r\n}\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nconst StubbedNetworkModule = {\r\n sendGetRequestAsync: () => {\r\n return Promise.reject(createClientAuthError(methodNotImplemented));\r\n },\r\n sendPostRequestAsync: () => {\r\n return Promise.reject(createClientAuthError(methodNotImplemented));\r\n },\r\n};\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * Returns map of parameters that are applicable to all calls to /authorize whether using PKCE or EAR\r\n * @param config\r\n * @param request\r\n * @param logger\r\n * @param performanceClient\r\n * @returns\r\n */\r\nfunction getStandardAuthorizeRequestParameters(authOptions, request, logger, performanceClient) {\r\n // generate the correlationId if not set by the user and add\r\n const correlationId = request.correlationId;\r\n const parameters = new Map();\r\n addClientId(parameters, request.embeddedClientId ||\r\n request.extraQueryParameters?.[CLIENT_ID] ||\r\n authOptions.clientId);\r\n const requestScopes = [\r\n ...(request.scopes || []),\r\n ...(request.extraScopesToConsent || []),\r\n ];\r\n addScopes(parameters, requestScopes, true, authOptions.authority.options.OIDCOptions?.defaultScopes);\r\n addRedirectUri(parameters, request.redirectUri);\r\n addCorrelationId(parameters, correlationId);\r\n // add response_mode. If not passed in it defaults to query.\r\n addResponseMode(parameters, request.responseMode);\r\n // add client_info=1\r\n addClientInfo(parameters);\r\n if (request.prompt) {\r\n addPrompt(parameters, request.prompt);\r\n performanceClient?.addFields({ prompt: request.prompt }, correlationId);\r\n }\r\n if (request.domainHint) {\r\n addDomainHint(parameters, request.domainHint);\r\n performanceClient?.addFields({ domainHintFromRequest: true }, correlationId);\r\n }\r\n // Add sid or loginHint with preference for login_hint claim (in request) -> sid -> loginHint (upn/email) -> username of AccountInfo object\r\n if (request.prompt !== PromptValue.SELECT_ACCOUNT) {\r\n // AAD will throw if prompt=select_account is passed with an account hint\r\n if (request.sid && request.prompt === PromptValue.NONE) {\r\n // SessionID is only used in silent calls\r\n logger.verbose(\"createAuthCodeUrlQueryString: Prompt is none, adding sid from request\");\r\n addSid(parameters, request.sid);\r\n performanceClient?.addFields({ sidFromRequest: true }, correlationId);\r\n }\r\n else if (request.account) {\r\n const accountSid = extractAccountSid(request.account);\r\n let accountLoginHintClaim = extractLoginHint(request.account);\r\n if (accountLoginHintClaim && request.domainHint) {\r\n logger.warning(`AuthorizationCodeClient.createAuthCodeUrlQueryString: \"domainHint\" param is set, skipping opaque \"login_hint\" claim. Please consider not passing domainHint`);\r\n accountLoginHintClaim = null;\r\n }\r\n // If login_hint claim is present, use it over sid/username\r\n if (accountLoginHintClaim) {\r\n logger.verbose(\"createAuthCodeUrlQueryString: login_hint claim present on account\");\r\n addLoginHint(parameters, accountLoginHintClaim);\r\n performanceClient?.addFields({ loginHintFromClaim: true }, correlationId);\r\n try {\r\n const clientInfo = buildClientInfoFromHomeAccountId(request.account.homeAccountId);\r\n addCcsOid(parameters, clientInfo);\r\n }\r\n catch (e) {\r\n logger.verbose(\"createAuthCodeUrlQueryString: Could not parse home account ID for CCS Header\");\r\n }\r\n }\r\n else if (accountSid && request.prompt === PromptValue.NONE) {\r\n /*\r\n * If account and loginHint are provided, we will check account first for sid before adding loginHint\r\n * SessionId is only used in silent calls\r\n */\r\n logger.verbose(\"createAuthCodeUrlQueryString: Prompt is none, adding sid from account\");\r\n addSid(parameters, accountSid);\r\n performanceClient?.addFields({ sidFromClaim: true }, correlationId);\r\n try {\r\n const clientInfo = buildClientInfoFromHomeAccountId(request.account.homeAccountId);\r\n addCcsOid(parameters, clientInfo);\r\n }\r\n catch (e) {\r\n logger.verbose(\"createAuthCodeUrlQueryString: Could not parse home account ID for CCS Header\");\r\n }\r\n }\r\n else if (request.loginHint) {\r\n logger.verbose(\"createAuthCodeUrlQueryString: Adding login_hint from request\");\r\n addLoginHint(parameters, request.loginHint);\r\n addCcsUpn(parameters, request.loginHint);\r\n performanceClient?.addFields({ loginHintFromRequest: true }, correlationId);\r\n }\r\n else if (request.account.username) {\r\n // Fallback to account username if provided\r\n logger.verbose(\"createAuthCodeUrlQueryString: Adding login_hint from account\");\r\n addLoginHint(parameters, request.account.username);\r\n performanceClient?.addFields({ loginHintFromUpn: true }, correlationId);\r\n try {\r\n const clientInfo = buildClientInfoFromHomeAccountId(request.account.homeAccountId);\r\n addCcsOid(parameters, clientInfo);\r\n }\r\n catch (e) {\r\n logger.verbose(\"createAuthCodeUrlQueryString: Could not parse home account ID for CCS Header\");\r\n }\r\n }\r\n }\r\n else if (request.loginHint) {\r\n logger.verbose(\"createAuthCodeUrlQueryString: No account, adding login_hint from request\");\r\n addLoginHint(parameters, request.loginHint);\r\n addCcsUpn(parameters, request.loginHint);\r\n performanceClient?.addFields({ loginHintFromRequest: true }, correlationId);\r\n }\r\n }\r\n else {\r\n logger.verbose(\"createAuthCodeUrlQueryString: Prompt is select_account, ignoring account hints\");\r\n }\r\n if (request.nonce) {\r\n addNonce(parameters, request.nonce);\r\n }\r\n if (request.state) {\r\n addState(parameters, request.state);\r\n }\r\n if (request.claims ||\r\n (authOptions.clientCapabilities &&\r\n authOptions.clientCapabilities.length > 0)) {\r\n addClaims(parameters, request.claims, authOptions.clientCapabilities);\r\n }\r\n if (request.embeddedClientId) {\r\n addBrokerParameters(parameters, authOptions.clientId, authOptions.redirectUri);\r\n }\r\n // If extraQueryParameters includes instance_aware its value will be added when extraQueryParameters are added\r\n if (authOptions.instanceAware &&\r\n (!request.extraQueryParameters ||\r\n !Object.keys(request.extraQueryParameters).includes(INSTANCE_AWARE))) {\r\n addInstanceAware(parameters);\r\n }\r\n return parameters;\r\n}\r\n/**\r\n * Returns authorize endpoint with given request parameters in the query string\r\n * @param authority\r\n * @param requestParameters\r\n * @returns\r\n */\r\nfunction getAuthorizeUrl(authority, requestParameters, encodeParams, extraQueryParameters) {\r\n const queryString = mapToQueryString(requestParameters, encodeParams, extraQueryParameters);\r\n return UrlString.appendQueryString(authority.authorizationEndpoint, queryString);\r\n}\r\n/**\r\n * Handles the hash fragment response from public client code request. Returns a code response used by\r\n * the client to exchange for a token in acquireToken.\r\n * @param serverParams\r\n * @param cachedState\r\n */\r\nfunction getAuthorizationCodePayload(serverParams, cachedState) {\r\n // Get code response\r\n validateAuthorizationResponse(serverParams, cachedState);\r\n // throw when there is no auth code in the response\r\n if (!serverParams.code) {\r\n throw createClientAuthError(authorizationCodeMissingFromServerResponse);\r\n }\r\n return serverParams;\r\n}\r\n/**\r\n * Function which validates server authorization code response.\r\n * @param serverResponseHash\r\n * @param requestState\r\n */\r\nfunction validateAuthorizationResponse(serverResponse, requestState) {\r\n if (!serverResponse.state || !requestState) {\r\n throw serverResponse.state\r\n ? createClientAuthError(stateNotFound, \"Cached State\")\r\n : createClientAuthError(stateNotFound, \"Server State\");\r\n }\r\n let decodedServerResponseState;\r\n let decodedRequestState;\r\n try {\r\n decodedServerResponseState = decodeURIComponent(serverResponse.state);\r\n }\r\n catch (e) {\r\n throw createClientAuthError(invalidState, serverResponse.state);\r\n }\r\n try {\r\n decodedRequestState = decodeURIComponent(requestState);\r\n }\r\n catch (e) {\r\n throw createClientAuthError(invalidState, serverResponse.state);\r\n }\r\n if (decodedServerResponseState !== decodedRequestState) {\r\n throw createClientAuthError(stateMismatch);\r\n }\r\n // Check for error\r\n if (serverResponse.error ||\r\n serverResponse.error_description ||\r\n serverResponse.suberror) {\r\n const serverErrorNo = parseServerErrorNo(serverResponse);\r\n if (isInteractionRequiredError(serverResponse.error, serverResponse.error_description, serverResponse.suberror)) {\r\n throw new InteractionRequiredAuthError(serverResponse.error || \"\", serverResponse.error_description, serverResponse.suberror, serverResponse.timestamp || \"\", serverResponse.trace_id || \"\", serverResponse.correlation_id || \"\", serverResponse.claims || \"\", serverErrorNo);\r\n }\r\n throw new ServerError(serverResponse.error || \"\", serverResponse.error_description, serverResponse.suberror, serverErrorNo);\r\n }\r\n}\r\n/**\r\n * Get server error No from the error_uri\r\n * @param serverResponse\r\n * @returns\r\n */\r\nfunction parseServerErrorNo(serverResponse) {\r\n const errorCodePrefix = \"code=\";\r\n const errorCodePrefixIndex = serverResponse.error_uri?.lastIndexOf(errorCodePrefix);\r\n return errorCodePrefixIndex && errorCodePrefixIndex >= 0\r\n ? serverResponse.error_uri?.substring(errorCodePrefixIndex + errorCodePrefix.length)\r\n : undefined;\r\n}\r\n/**\r\n * Helper to get sid from account. Returns null if idTokenClaims are not present or sid is not present.\r\n * @param account\r\n */\r\nfunction extractAccountSid(account) {\r\n return account.idTokenClaims?.sid || null;\r\n}\r\nfunction extractLoginHint(account) {\r\n return account.loginHint || account.idTokenClaims?.login_hint || null;\r\n}\n\nvar Authorize = /*#__PURE__*/Object.freeze({\n __proto__: null,\n getAuthorizationCodePayload: getAuthorizationCodePayload,\n getAuthorizeUrl: getAuthorizeUrl,\n getStandardAuthorizeRequestParameters: getStandardAuthorizeRequestParameters,\n validateAuthorizationResponse: validateAuthorizationResponse\n});\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * This is a helper class that parses supported HTTP response authentication headers to extract and return\r\n * header challenge values that can be used outside the basic authorization flows.\r\n */\r\nclass AuthenticationHeaderParser {\r\n constructor(headers) {\r\n this.headers = headers;\r\n }\r\n /**\r\n * This method parses the SHR nonce value out of either the Authentication-Info or WWW-Authenticate authentication headers.\r\n * @returns\r\n */\r\n getShrNonce() {\r\n // Attempt to parse nonce from Authentiacation-Info\r\n const authenticationInfo = this.headers[HeaderNames.AuthenticationInfo];\r\n if (authenticationInfo) {\r\n const authenticationInfoChallenges = this.parseChallenges(authenticationInfo);\r\n if (authenticationInfoChallenges.nextnonce) {\r\n return authenticationInfoChallenges.nextnonce;\r\n }\r\n throw createClientConfigurationError(invalidAuthenticationHeader);\r\n }\r\n // Attempt to parse nonce from WWW-Authenticate\r\n const wwwAuthenticate = this.headers[HeaderNames.WWWAuthenticate];\r\n if (wwwAuthenticate) {\r\n const wwwAuthenticateChallenges = this.parseChallenges(wwwAuthenticate);\r\n if (wwwAuthenticateChallenges.nonce) {\r\n return wwwAuthenticateChallenges.nonce;\r\n }\r\n throw createClientConfigurationError(invalidAuthenticationHeader);\r\n }\r\n // If neither header is present, throw missing headers error\r\n throw createClientConfigurationError(missingNonceAuthenticationHeader);\r\n }\r\n /**\r\n * Parses an HTTP header's challenge set into a key/value map.\r\n * @param header\r\n * @returns\r\n */\r\n parseChallenges(header) {\r\n const schemeSeparator = header.indexOf(\" \");\r\n const challenges = header.substr(schemeSeparator + 1).split(\",\");\r\n const challengeMap = {};\r\n challenges.forEach((challenge) => {\r\n const [key, value] = challenge.split(\"=\");\r\n // Remove escaped quotation marks (', \") from challenge string to keep only the challenge value\r\n challengeMap[key] = unescape(value.replace(/['\"]+/g, Constants.EMPTY_STRING));\r\n });\r\n return challengeMap;\r\n }\r\n}\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * Converts a numeric tag to a string representation\r\n * @param tag - The numeric tag to convert\r\n * @returns The string representation of the tag\r\n */\r\nfunction tagToString(tag) {\r\n if (tag === 0) {\r\n return \"UNTAG\";\r\n }\r\n const tagSymbolSpace = \"abcdefghijklmnopqrstuvwxyz0123456789****************************\";\r\n let tagBuffer = \"*****\";\r\n const chars = [\r\n tagSymbolSpace[(tag >> 24) & 0x3f],\r\n tagSymbolSpace[(tag >> 18) & 0x3f],\r\n tagSymbolSpace[(tag >> 12) & 0x3f],\r\n tagSymbolSpace[(tag >> 6) & 0x3f],\r\n tagSymbolSpace[(tag >> 0) & 0x3f],\r\n ];\r\n tagBuffer = chars.join(\"\");\r\n return tagBuffer;\r\n}\r\n/**\r\n * Error class for MSAL Runtime errors that preserves detailed broker information\r\n */\r\nclass PlatformBrokerError extends AuthError {\r\n constructor(errorStatus, errorContext, errorCode, errorTag) {\r\n const tagString = tagToString(errorTag);\r\n const enhancedErrorContext = errorContext\r\n ? `${errorContext} (Error Code: ${errorCode}, Tag: ${tagString})`\r\n : `(Error Code: ${errorCode}, Tag: ${tagString})`;\r\n super(errorStatus, enhancedErrorContext);\r\n this.name = \"PlatformBrokerError\";\r\n this.statusCode = errorCode;\r\n this.tag = tagString;\r\n Object.setPrototypeOf(this, PlatformBrokerError.prototype);\r\n }\r\n}\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nconst skuGroupSeparator = \",\";\r\nconst skuValueSeparator = \"|\";\r\nfunction makeExtraSkuString(params) {\r\n const { skus, libraryName, libraryVersion, extensionName, extensionVersion, } = params;\r\n const skuMap = new Map([\r\n [0, [libraryName, libraryVersion]],\r\n [2, [extensionName, extensionVersion]],\r\n ]);\r\n let skuArr = [];\r\n if (skus?.length) {\r\n skuArr = skus.split(skuGroupSeparator);\r\n // Ignore invalid input sku param\r\n if (skuArr.length < 4) {\r\n return skus;\r\n }\r\n }\r\n else {\r\n skuArr = Array.from({ length: 4 }, () => skuValueSeparator);\r\n }\r\n skuMap.forEach((value, key) => {\r\n if (value.length === 2 && value[0]?.length && value[1]?.length) {\r\n setSku({\r\n skuArr,\r\n index: key,\r\n skuName: value[0],\r\n skuVersion: value[1],\r\n });\r\n }\r\n });\r\n return skuArr.join(skuGroupSeparator);\r\n}\r\nfunction setSku(params) {\r\n const { skuArr, index, skuName, skuVersion } = params;\r\n if (index >= skuArr.length) {\r\n return;\r\n }\r\n skuArr[index] = [skuName, skuVersion].join(skuValueSeparator);\r\n}\r\n/** @internal */\r\nclass ServerTelemetryManager {\r\n constructor(telemetryRequest, cacheManager) {\r\n this.cacheOutcome = CacheOutcome.NOT_APPLICABLE;\r\n this.cacheManager = cacheManager;\r\n this.apiId = telemetryRequest.apiId;\r\n this.correlationId = telemetryRequest.correlationId;\r\n this.wrapperSKU = telemetryRequest.wrapperSKU || Constants.EMPTY_STRING;\r\n this.wrapperVer = telemetryRequest.wrapperVer || Constants.EMPTY_STRING;\r\n this.telemetryCacheKey =\r\n SERVER_TELEM_CONSTANTS.CACHE_KEY +\r\n Separators.CACHE_KEY_SEPARATOR +\r\n telemetryRequest.clientId;\r\n }\r\n /**\r\n * API to add MSER Telemetry to request\r\n */\r\n generateCurrentRequestHeaderValue() {\r\n const request = `${this.apiId}${SERVER_TELEM_CONSTANTS.VALUE_SEPARATOR}${this.cacheOutcome}`;\r\n const platformFieldsArr = [this.wrapperSKU, this.wrapperVer];\r\n const nativeBrokerErrorCode = this.getNativeBrokerErrorCode();\r\n if (nativeBrokerErrorCode?.length) {\r\n platformFieldsArr.push(`broker_error=${nativeBrokerErrorCode}`);\r\n }\r\n const platformFields = platformFieldsArr.join(SERVER_TELEM_CONSTANTS.VALUE_SEPARATOR);\r\n const regionDiscoveryFields = this.getRegionDiscoveryFields();\r\n const requestWithRegionDiscoveryFields = [\r\n request,\r\n regionDiscoveryFields,\r\n ].join(SERVER_TELEM_CONSTANTS.VALUE_SEPARATOR);\r\n return [\r\n SERVER_TELEM_CONSTANTS.SCHEMA_VERSION,\r\n requestWithRegionDiscoveryFields,\r\n platformFields,\r\n ].join(SERVER_TELEM_CONSTANTS.CATEGORY_SEPARATOR);\r\n }\r\n /**\r\n * API to add MSER Telemetry for the last failed request\r\n */\r\n generateLastRequestHeaderValue() {\r\n const lastRequests = this.getLastRequests();\r\n const maxErrors = ServerTelemetryManager.maxErrorsToSend(lastRequests);\r\n const failedRequests = lastRequests.failedRequests\r\n .slice(0, 2 * maxErrors)\r\n .join(SERVER_TELEM_CONSTANTS.VALUE_SEPARATOR);\r\n const errors = lastRequests.errors\r\n .slice(0, maxErrors)\r\n .join(SERVER_TELEM_CONSTANTS.VALUE_SEPARATOR);\r\n const errorCount = lastRequests.errors.length;\r\n // Indicate whether this header contains all data or partial data\r\n const overflow = maxErrors < errorCount\r\n ? SERVER_TELEM_CONSTANTS.OVERFLOW_TRUE\r\n : SERVER_TELEM_CONSTANTS.OVERFLOW_FALSE;\r\n const platformFields = [errorCount, overflow].join(SERVER_TELEM_CONSTANTS.VALUE_SEPARATOR);\r\n return [\r\n SERVER_TELEM_CONSTANTS.SCHEMA_VERSION,\r\n lastRequests.cacheHits,\r\n failedRequests,\r\n errors,\r\n platformFields,\r\n ].join(SERVER_TELEM_CONSTANTS.CATEGORY_SEPARATOR);\r\n }\r\n /**\r\n * API to cache token failures for MSER data capture\r\n * @param error\r\n */\r\n cacheFailedRequest(error) {\r\n const lastRequests = this.getLastRequests();\r\n if (lastRequests.errors.length >=\r\n SERVER_TELEM_CONSTANTS.MAX_CACHED_ERRORS) {\r\n // Remove a cached error to make room, first in first out\r\n lastRequests.failedRequests.shift(); // apiId\r\n lastRequests.failedRequests.shift(); // correlationId\r\n lastRequests.errors.shift();\r\n }\r\n lastRequests.failedRequests.push(this.apiId, this.correlationId);\r\n if (error instanceof Error && !!error && error.toString()) {\r\n if (error instanceof AuthError) {\r\n if (error.subError) {\r\n lastRequests.errors.push(error.subError);\r\n }\r\n else if (error.errorCode) {\r\n lastRequests.errors.push(error.errorCode);\r\n }\r\n else {\r\n lastRequests.errors.push(error.toString());\r\n }\r\n }\r\n else {\r\n lastRequests.errors.push(error.toString());\r\n }\r\n }\r\n else {\r\n lastRequests.errors.push(SERVER_TELEM_CONSTANTS.UNKNOWN_ERROR);\r\n }\r\n this.cacheManager.setServerTelemetry(this.telemetryCacheKey, lastRequests, this.correlationId);\r\n return;\r\n }\r\n /**\r\n * Update server telemetry cache entry by incrementing cache hit counter\r\n */\r\n incrementCacheHits() {\r\n const lastRequests = this.getLastRequests();\r\n lastRequests.cacheHits += 1;\r\n this.cacheManager.setServerTelemetry(this.telemetryCacheKey, lastRequests, this.correlationId);\r\n return lastRequests.cacheHits;\r\n }\r\n /**\r\n * Get the server telemetry entity from cache or initialize a new one\r\n */\r\n getLastRequests() {\r\n const initialValue = {\r\n failedRequests: [],\r\n errors: [],\r\n cacheHits: 0,\r\n };\r\n const lastRequests = this.cacheManager.getServerTelemetry(this.telemetryCacheKey);\r\n return lastRequests || initialValue;\r\n }\r\n /**\r\n * Remove server telemetry cache entry\r\n */\r\n clearTelemetryCache() {\r\n const lastRequests = this.getLastRequests();\r\n const numErrorsFlushed = ServerTelemetryManager.maxErrorsToSend(lastRequests);\r\n const errorCount = lastRequests.errors.length;\r\n if (numErrorsFlushed === errorCount) {\r\n // All errors were sent on last request, clear Telemetry cache\r\n this.cacheManager.removeItem(this.telemetryCacheKey, this.correlationId);\r\n }\r\n else {\r\n // Partial data was flushed to server, construct a new telemetry cache item with errors that were not flushed\r\n const serverTelemEntity = {\r\n failedRequests: lastRequests.failedRequests.slice(numErrorsFlushed * 2),\r\n errors: lastRequests.errors.slice(numErrorsFlushed),\r\n cacheHits: 0,\r\n };\r\n this.cacheManager.setServerTelemetry(this.telemetryCacheKey, serverTelemEntity, this.correlationId);\r\n }\r\n }\r\n /**\r\n * Returns the maximum number of errors that can be flushed to the server in the next network request\r\n * @param serverTelemetryEntity\r\n */\r\n static maxErrorsToSend(serverTelemetryEntity) {\r\n let i;\r\n let maxErrors = 0;\r\n let dataSize = 0;\r\n const errorCount = serverTelemetryEntity.errors.length;\r\n for (i = 0; i < errorCount; i++) {\r\n // failedRequests parameter contains pairs of apiId and correlationId, multiply index by 2 to preserve pairs\r\n const apiId = serverTelemetryEntity.failedRequests[2 * i] ||\r\n Constants.EMPTY_STRING;\r\n const correlationId = serverTelemetryEntity.failedRequests[2 * i + 1] ||\r\n Constants.EMPTY_STRING;\r\n const errorCode = serverTelemetryEntity.errors[i] || Constants.EMPTY_STRING;\r\n // Count number of characters that would be added to header, each character is 1 byte. Add 3 at the end to account for separators\r\n dataSize +=\r\n apiId.toString().length +\r\n correlationId.toString().length +\r\n errorCode.length +\r\n 3;\r\n if (dataSize < SERVER_TELEM_CONSTANTS.MAX_LAST_HEADER_BYTES) {\r\n // Adding this entry to the header would still keep header size below the limit\r\n maxErrors += 1;\r\n }\r\n else {\r\n break;\r\n }\r\n }\r\n return maxErrors;\r\n }\r\n /**\r\n * Get the region discovery fields\r\n *\r\n * @returns string\r\n */\r\n getRegionDiscoveryFields() {\r\n const regionDiscoveryFields = [];\r\n regionDiscoveryFields.push(this.regionUsed || Constants.EMPTY_STRING);\r\n regionDiscoveryFields.push(this.regionSource || Constants.EMPTY_STRING);\r\n regionDiscoveryFields.push(this.regionOutcome || Constants.EMPTY_STRING);\r\n return regionDiscoveryFields.join(\",\");\r\n }\r\n /**\r\n * Update the region discovery metadata\r\n *\r\n * @param regionDiscoveryMetadata\r\n * @returns void\r\n */\r\n updateRegionDiscoveryMetadata(regionDiscoveryMetadata) {\r\n this.regionUsed = regionDiscoveryMetadata.region_used;\r\n this.regionSource = regionDiscoveryMetadata.region_source;\r\n this.regionOutcome = regionDiscoveryMetadata.region_outcome;\r\n }\r\n /**\r\n * Set cache outcome\r\n */\r\n setCacheOutcome(cacheOutcome) {\r\n this.cacheOutcome = cacheOutcome;\r\n }\r\n setNativeBrokerErrorCode(errorCode) {\r\n const lastRequests = this.getLastRequests();\r\n lastRequests.nativeBrokerErrorCode = errorCode;\r\n this.cacheManager.setServerTelemetry(this.telemetryCacheKey, lastRequests, this.correlationId);\r\n }\r\n getNativeBrokerErrorCode() {\r\n return this.getLastRequests().nativeBrokerErrorCode;\r\n }\r\n clearNativeBrokerErrorCode() {\r\n const lastRequests = this.getLastRequests();\r\n delete lastRequests.nativeBrokerErrorCode;\r\n this.cacheManager.setServerTelemetry(this.telemetryCacheKey, lastRequests, this.correlationId);\r\n }\r\n static makeExtraSkuString(params) {\r\n return makeExtraSkuString(params);\r\n }\r\n}\n\nexports.AADAuthorityConstants = AADAuthorityConstants;\nexports.AADServerParamKeys = AADServerParamKeys;\nexports.AccountEntity = AccountEntity;\nexports.AuthError = AuthError;\nexports.AuthErrorCodes = AuthErrorCodes;\nexports.AuthErrorMessage = AuthErrorMessage;\nexports.AuthToken = AuthToken;\nexports.AuthenticationHeaderParser = AuthenticationHeaderParser;\nexports.AuthenticationScheme = AuthenticationScheme;\nexports.Authority = Authority;\nexports.AuthorityFactory = AuthorityFactory;\nexports.AuthorityType = AuthorityType;\nexports.AuthorizationCodeClient = AuthorizationCodeClient;\nexports.Authorize = Authorize;\nexports.AzureCloudInstance = AzureCloudInstance;\nexports.BaseClient = BaseClient;\nexports.CacheAccountType = CacheAccountType;\nexports.CacheError = CacheError;\nexports.CacheErrorCodes = CacheErrorCodes;\nexports.CacheHelpers = CacheHelpers;\nexports.CacheManager = CacheManager;\nexports.CacheOutcome = CacheOutcome;\nexports.CacheType = CacheType;\nexports.CcsCredentialType = CcsCredentialType;\nexports.ClaimsRequestKeys = ClaimsRequestKeys;\nexports.ClientAssertionUtils = ClientAssertionUtils;\nexports.ClientAuthError = ClientAuthError;\nexports.ClientAuthErrorCodes = ClientAuthErrorCodes;\nexports.ClientAuthErrorMessage = ClientAuthErrorMessage;\nexports.ClientConfigurationError = ClientConfigurationError;\nexports.ClientConfigurationErrorCodes = ClientConfigurationErrorCodes;\nexports.ClientConfigurationErrorMessage = ClientConfigurationErrorMessage;\nexports.CodeChallengeMethodValues = CodeChallengeMethodValues;\nexports.Constants = Constants;\nexports.CredentialType = CredentialType;\nexports.DEFAULT_CRYPTO_IMPLEMENTATION = DEFAULT_CRYPTO_IMPLEMENTATION;\nexports.DEFAULT_SYSTEM_OPTIONS = DEFAULT_SYSTEM_OPTIONS;\nexports.DEFAULT_TOKEN_RENEWAL_OFFSET_SEC = DEFAULT_TOKEN_RENEWAL_OFFSET_SEC;\nexports.DefaultStorageClass = DefaultStorageClass;\nexports.EncodingTypes = EncodingTypes;\nexports.Errors = Errors;\nexports.GrantType = GrantType;\nexports.HeaderNames = HeaderNames;\nexports.HttpMethod = HttpMethod;\nexports.HttpStatus = HttpStatus;\nexports.IntFields = IntFields;\nexports.InteractionRequiredAuthError = InteractionRequiredAuthError;\nexports.InteractionRequiredAuthErrorCodes = InteractionRequiredAuthErrorCodes;\nexports.InteractionRequiredAuthErrorMessage = InteractionRequiredAuthErrorMessage;\nexports.JsonWebTokenTypes = JsonWebTokenTypes;\nexports.Logger = Logger;\nexports.NetworkError = NetworkError;\nexports.OAuthResponseType = OAuthResponseType;\nexports.OIDC_DEFAULT_SCOPES = OIDC_DEFAULT_SCOPES;\nexports.ONE_DAY_IN_MS = ONE_DAY_IN_MS;\nexports.PasswordGrantConstants = PasswordGrantConstants;\nexports.PerformanceEventAbbreviations = PerformanceEventAbbreviations;\nexports.PerformanceEventStatus = PerformanceEventStatus;\nexports.PerformanceEvents = PerformanceEvents;\nexports.PersistentCacheKeys = PersistentCacheKeys;\nexports.PlatformBrokerError = PlatformBrokerError;\nexports.PopTokenGenerator = PopTokenGenerator;\nexports.PromptValue = PromptValue;\nexports.ProtocolMode = ProtocolMode;\nexports.ProtocolUtils = ProtocolUtils;\nexports.RefreshTokenClient = RefreshTokenClient;\nexports.RequestParameterBuilder = RequestParameterBuilder;\nexports.ResponseHandler = ResponseHandler;\nexports.ResponseMode = ResponseMode;\nexports.ScopeSet = ScopeSet;\nexports.ServerError = ServerError;\nexports.ServerResponseType = ServerResponseType;\nexports.ServerTelemetryManager = ServerTelemetryManager;\nexports.SilentFlowClient = SilentFlowClient;\nexports.StringUtils = StringUtils;\nexports.StubPerformanceClient = StubPerformanceClient;\nexports.StubPerformanceMeasurement = StubPerformanceMeasurement;\nexports.StubbedNetworkModule = StubbedNetworkModule;\nexports.THE_FAMILY_ID = THE_FAMILY_ID;\nexports.ThrottlingConstants = ThrottlingConstants;\nexports.ThrottlingUtils = ThrottlingUtils;\nexports.TimeUtils = TimeUtils;\nexports.TokenCacheContext = TokenCacheContext;\nexports.UrlString = UrlString;\nexports.UrlUtils = UrlUtils;\nexports.buildAccountToCache = buildAccountToCache;\nexports.buildClientInfo = buildClientInfo;\nexports.buildClientInfoFromHomeAccountId = buildClientInfoFromHomeAccountId;\nexports.buildStaticAuthorityOptions = buildStaticAuthorityOptions;\nexports.buildTenantProfile = buildTenantProfile;\nexports.createAuthError = createAuthError;\nexports.createCacheError = createCacheError;\nexports.createClientAuthError = createClientAuthError;\nexports.createClientConfigurationError = createClientConfigurationError;\nexports.createInteractionRequiredAuthError = createInteractionRequiredAuthError;\nexports.createNetworkError = createNetworkError;\nexports.formatAuthorityUri = formatAuthorityUri;\nexports.getClientAssertion = getClientAssertion;\nexports.getRequestThumbprint = getRequestThumbprint;\nexports.getTenantIdFromIdTokenClaims = getTenantIdFromIdTokenClaims;\nexports.invoke = invoke;\nexports.invokeAsync = invokeAsync;\nexports.tenantIdMatchesHomeTenant = tenantIdMatchesHomeTenant;\nexports.updateAccountTenantProfileData = updateAccountTenantProfileData;\nexports.version = version;\n//# sourceMappingURL=index-node-BF0Vz18w.js.map\n","/*! @azure/msal-common v15.13.2 2025-11-19 */\n'use strict';\n'use strict';\n\nvar indexNode = require('./index-node-BF0Vz18w.js');\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nconst missingKidError = \"missing_kid_error\";\r\nconst missingAlgError = \"missing_alg_error\";\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nconst JoseHeaderErrorMessages = {\r\n [missingKidError]: \"The JOSE Header for the requested JWT, JWS or JWK object requires a keyId to be configured as the 'kid' header claim. No 'kid' value was provided.\",\r\n [missingAlgError]: \"The JOSE Header for the requested JWT, JWS or JWK object requires an algorithm to be specified as the 'alg' header claim. No 'alg' value was provided.\",\r\n};\r\n/**\r\n * Error thrown when there is an error in the client code running on the browser.\r\n */\r\nclass JoseHeaderError extends indexNode.AuthError {\r\n constructor(errorCode, errorMessage) {\r\n super(errorCode, errorMessage);\r\n this.name = \"JoseHeaderError\";\r\n Object.setPrototypeOf(this, JoseHeaderError.prototype);\r\n }\r\n}\r\n/** Returns JoseHeaderError object */\r\nfunction createJoseHeaderError(code) {\r\n return new JoseHeaderError(code, JoseHeaderErrorMessages[code]);\r\n}\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/** @internal */\r\nclass JoseHeader {\r\n constructor(options) {\r\n this.typ = options.typ;\r\n this.alg = options.alg;\r\n this.kid = options.kid;\r\n }\r\n /**\r\n * Builds SignedHttpRequest formatted JOSE Header from the\r\n * JOSE Header options provided or previously set on the object and returns\r\n * the stringified header object.\r\n * Throws if keyId or algorithm aren't provided since they are required for Access Token Binding.\r\n * @param shrHeaderOptions\r\n * @returns\r\n */\r\n static getShrHeaderString(shrHeaderOptions) {\r\n // KeyID is required on the SHR header\r\n if (!shrHeaderOptions.kid) {\r\n throw createJoseHeaderError(missingKidError);\r\n }\r\n // Alg is required on the SHR header\r\n if (!shrHeaderOptions.alg) {\r\n throw createJoseHeaderError(missingAlgError);\r\n }\r\n const shrHeader = new JoseHeader({\r\n // Access Token PoP headers must have type pop, but the type header can be overriden for special cases\r\n typ: shrHeaderOptions.typ || indexNode.JsonWebTokenTypes.Pop,\r\n kid: shrHeaderOptions.kid,\r\n alg: shrHeaderOptions.alg,\r\n });\r\n return JSON.stringify(shrHeader);\r\n }\r\n}\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * Starts context by adding payload to the stack\r\n * @param event {PerformanceEvent}\r\n * @param abbreviations {Map} event name abbreviations\r\n * @param stack {?PerformanceEventStackedContext[]} stack\r\n */\r\nfunction startContext(event, abbreviations, stack) {\r\n if (!stack) {\r\n return;\r\n }\r\n stack.push({\r\n name: abbreviations.get(event.name) || event.name,\r\n });\r\n}\r\n/**\r\n * Ends context by removing payload from the stack and returning parent or self, if stack is empty, payload\r\n *\r\n * @param event {PerformanceEvent}\r\n * @param abbreviations {Map} event name abbreviations\r\n * @param stack {?PerformanceEventStackedContext[]} stack\r\n * @param error {?unknown} error\r\n */\r\nfunction endContext(event, abbreviations, stack, error) {\r\n if (!stack?.length) {\r\n return;\r\n }\r\n const peek = (stack) => {\r\n return stack.length ? stack[stack.length - 1] : undefined;\r\n };\r\n const abbrEventName = abbreviations.get(event.name) || event.name;\r\n const top = peek(stack);\r\n if (top?.name !== abbrEventName) {\r\n return;\r\n }\r\n const current = stack?.pop();\r\n if (!current) {\r\n return;\r\n }\r\n const errorCode = error instanceof indexNode.AuthError\r\n ? error.errorCode\r\n : error instanceof Error\r\n ? error.name\r\n : undefined;\r\n const subErr = error instanceof indexNode.AuthError ? error.subError : undefined;\r\n if (errorCode && current.childErr !== errorCode) {\r\n current.err = errorCode;\r\n if (subErr) {\r\n current.subErr = subErr;\r\n }\r\n }\r\n delete current.name;\r\n delete current.childErr;\r\n const context = {\r\n ...current,\r\n dur: event.durationMs,\r\n };\r\n if (!event.success) {\r\n context.fail = 1;\r\n }\r\n const parent = peek(stack);\r\n if (!parent) {\r\n return { [abbrEventName]: context };\r\n }\r\n if (errorCode) {\r\n parent.childErr = errorCode;\r\n }\r\n let childName;\r\n if (!parent[abbrEventName]) {\r\n childName = abbrEventName;\r\n }\r\n else {\r\n const siblings = Object.keys(parent).filter((key) => key.startsWith(abbrEventName)).length;\r\n childName = `${abbrEventName}_${siblings + 1}`;\r\n }\r\n parent[childName] = context;\r\n return parent;\r\n}\r\n/**\r\n * Adds error name and stack trace to the telemetry event\r\n * @param error {Error}\r\n * @param logger {Logger}\r\n * @param event {PerformanceEvent}\r\n * @param stackMaxSize {number} max error stack size to capture\r\n */\r\nfunction addError(error, logger, event, stackMaxSize = 5) {\r\n if (!(error instanceof Error)) {\r\n logger.trace(\"PerformanceClient.addErrorStack: Input error is not instance of Error\", event.correlationId);\r\n return;\r\n }\r\n else if (error instanceof indexNode.AuthError) {\r\n event.errorCode = error.errorCode;\r\n event.subErrorCode = error.subError;\r\n if (error instanceof indexNode.ServerError ||\r\n error instanceof indexNode.InteractionRequiredAuthError) {\r\n event.serverErrorNo = error.errorNo;\r\n }\r\n return;\r\n }\r\n else if (error instanceof indexNode.CacheError) {\r\n event.errorCode = error.errorCode;\r\n return;\r\n }\r\n else if (event.errorStack?.length) {\r\n logger.trace(\"PerformanceClient.addErrorStack: Stack already exist\", event.correlationId);\r\n return;\r\n }\r\n else if (!error.stack?.length) {\r\n logger.trace(\"PerformanceClient.addErrorStack: Input stack is empty\", event.correlationId);\r\n return;\r\n }\r\n if (error.stack) {\r\n event.errorStack = compactStack(error.stack, stackMaxSize);\r\n }\r\n event.errorName = error.name;\r\n}\r\n/**\r\n * Compacts error stack into array by fetching N first entries\r\n * @param stack {string} error stack\r\n * @param stackMaxSize {number} max error stack size to capture\r\n * @returns {string[]}\r\n */\r\nfunction compactStack(stack, stackMaxSize) {\r\n if (stackMaxSize < 0) {\r\n return [];\r\n }\r\n const stackArr = stack.split(\"\\n\") || [];\r\n const res = [];\r\n // Check for a handful of known, common runtime errors and log them (with redaction where applicable).\r\n const firstLine = stackArr[0];\r\n if (firstLine.startsWith(\"TypeError: Cannot read property\") ||\r\n firstLine.startsWith(\"TypeError: Cannot read properties of\") ||\r\n firstLine.startsWith(\"TypeError: Cannot set property\") ||\r\n firstLine.startsWith(\"TypeError: Cannot set properties of\") ||\r\n firstLine.endsWith(\"is not a function\")) {\r\n // These types of errors are not at risk of leaking PII. They will indicate unavailable APIs\r\n res.push(compactStackLine(firstLine));\r\n }\r\n else if (firstLine.startsWith(\"SyntaxError\") ||\r\n firstLine.startsWith(\"TypeError\")) {\r\n // Prevent unintentional leaking of arbitrary info by redacting contents between both single and double quotes\r\n res.push(compactStackLine(\r\n // Example: SyntaxError: Unexpected token 'e', \"test\" is not valid JSON -> SyntaxError: Unexpected token , is not valid JSON\r\n firstLine.replace(/['].*[']|[\"].*[\"]/g, \"\")));\r\n }\r\n // Get top N stack lines\r\n for (let ix = 1; ix < stackArr.length; ix++) {\r\n if (res.length >= stackMaxSize) {\r\n break;\r\n }\r\n const line = stackArr[ix];\r\n res.push(compactStackLine(line));\r\n }\r\n return res;\r\n}\r\n/**\r\n * Compacts error stack line by shortening file path\r\n * Example: https://localhost/msal-common/src/authority/Authority.js:100:1 -> Authority.js:100:1\r\n * @param line {string} stack line\r\n * @returns {string}\r\n */\r\nfunction compactStackLine(line) {\r\n const filePathIx = line.lastIndexOf(\" \") + 1;\r\n if (filePathIx < 1) {\r\n return line;\r\n }\r\n const filePath = line.substring(filePathIx);\r\n let fileNameIx = filePath.lastIndexOf(\"/\");\r\n fileNameIx = fileNameIx < 0 ? filePath.lastIndexOf(\"\\\\\") : fileNameIx;\r\n if (fileNameIx >= 0) {\r\n return (line.substring(0, filePathIx) +\r\n \"(\" +\r\n filePath.substring(fileNameIx + 1) +\r\n (filePath.charAt(filePath.length - 1) === \")\" ? \"\" : \")\")).trimStart();\r\n }\r\n return line.trimStart();\r\n}\r\nfunction getAccountType(account) {\r\n const idTokenClaims = account?.idTokenClaims;\r\n if (idTokenClaims?.tfp || idTokenClaims?.acr) {\r\n return \"B2C\";\r\n }\r\n if (!idTokenClaims?.tid) {\r\n return undefined;\r\n }\r\n else if (idTokenClaims?.tid === \"9188040d-6c67-4c5b-b112-36a304b66dad\") {\r\n return \"MSA\";\r\n }\r\n return \"AAD\";\r\n}\r\nclass PerformanceClient {\r\n /**\r\n * Creates an instance of PerformanceClient,\r\n * an abstract class containing core performance telemetry logic.\r\n *\r\n * @constructor\r\n * @param {string} clientId Client ID of the application\r\n * @param {string} authority Authority used by the application\r\n * @param {Logger} logger Logger used by the application\r\n * @param {string} libraryName Name of the library\r\n * @param {string} libraryVersion Version of the library\r\n * @param {ApplicationTelemetry} applicationTelemetry application name and version\r\n * @param {Set} intFields integer fields to be truncated\r\n * @param {Map} abbreviations event name abbreviations\r\n */\r\n constructor(clientId, authority, logger, libraryName, libraryVersion, applicationTelemetry, intFields, abbreviations) {\r\n this.authority = authority;\r\n this.libraryName = libraryName;\r\n this.libraryVersion = libraryVersion;\r\n this.applicationTelemetry = applicationTelemetry;\r\n this.clientId = clientId;\r\n this.logger = logger;\r\n this.callbacks = new Map();\r\n this.eventsByCorrelationId = new Map();\r\n this.eventStack = new Map();\r\n this.queueMeasurements = new Map();\r\n this.preQueueTimeByCorrelationId = new Map();\r\n this.intFields = intFields || new Set();\r\n for (const item of indexNode.IntFields) {\r\n this.intFields.add(item);\r\n }\r\n this.abbreviations = abbreviations || new Map();\r\n for (const [key, value] of indexNode.PerformanceEventAbbreviations) {\r\n this.abbreviations.set(key, value);\r\n }\r\n }\r\n /**\r\n * Starts and returns an platform-specific implementation of IPerformanceMeasurement.\r\n * Note: this function can be changed to abstract at the next major version bump.\r\n *\r\n * @param {string} measureName\r\n * @param {string} correlationId\r\n * @returns {IPerformanceMeasurement}\r\n * @deprecated This method will be removed in the next major version\r\n */\r\n startPerformanceMeasurement(measureName, // eslint-disable-line @typescript-eslint/no-unused-vars\r\n correlationId // eslint-disable-line @typescript-eslint/no-unused-vars\r\n ) {\r\n return {};\r\n }\r\n /**\r\n * Gets map of pre-queue times by correlation Id\r\n *\r\n * @param {PerformanceEvents} eventName\r\n * @param {string} correlationId\r\n * @returns {number}\r\n */\r\n getPreQueueTime(eventName, correlationId) {\r\n const preQueueEvent = this.preQueueTimeByCorrelationId.get(correlationId);\r\n if (!preQueueEvent) {\r\n this.logger.trace(`PerformanceClient.getPreQueueTime: no pre-queue times found for correlationId: ${correlationId}, unable to add queue measurement`);\r\n return;\r\n }\r\n else if (preQueueEvent.name !== eventName) {\r\n this.logger.trace(`PerformanceClient.getPreQueueTime: no pre-queue time found for ${eventName}, unable to add queue measurement`);\r\n return;\r\n }\r\n return preQueueEvent.time;\r\n }\r\n /**\r\n * Calculates the difference between current time and time when function was queued.\r\n * Note: It is possible to have 0 as the queue time if the current time and the queued time was the same.\r\n *\r\n * @param {number} preQueueTime\r\n * @param {number} currentTime\r\n * @returns {number}\r\n */\r\n calculateQueuedTime(preQueueTime, currentTime) {\r\n if (preQueueTime < 1) {\r\n this.logger.trace(`PerformanceClient: preQueueTime should be a positive integer and not ${preQueueTime}`);\r\n return 0;\r\n }\r\n if (currentTime < 1) {\r\n this.logger.trace(`PerformanceClient: currentTime should be a positive integer and not ${currentTime}`);\r\n return 0;\r\n }\r\n if (currentTime < preQueueTime) {\r\n this.logger.trace(\"PerformanceClient: currentTime is less than preQueueTime, check how time is being retrieved\");\r\n return 0;\r\n }\r\n return currentTime - preQueueTime;\r\n }\r\n /**\r\n * Adds queue measurement time to QueueMeasurements array for given correlation ID.\r\n *\r\n * @param {PerformanceEvents} eventName\r\n * @param {?string} correlationId\r\n * @param {?number} queueTime\r\n * @param {?boolean} manuallyCompleted - indicator for manually completed queue measurements\r\n * @returns\r\n */\r\n addQueueMeasurement(eventName, correlationId, queueTime, manuallyCompleted) {\r\n if (!correlationId) {\r\n this.logger.trace(`PerformanceClient.addQueueMeasurement: correlationId not provided for ${eventName}, cannot add queue measurement`);\r\n return;\r\n }\r\n if (queueTime === 0) {\r\n // Possible for there to be no queue time after calculation\r\n this.logger.trace(`PerformanceClient.addQueueMeasurement: queue time provided for ${eventName} is ${queueTime}`);\r\n }\r\n else if (!queueTime) {\r\n this.logger.trace(`PerformanceClient.addQueueMeasurement: no queue time provided for ${eventName}`);\r\n return;\r\n }\r\n const queueMeasurement = {\r\n eventName,\r\n // Always default queue time to 0 for manually completed (improperly instrumented)\r\n queueTime: manuallyCompleted ? 0 : queueTime,\r\n manuallyCompleted,\r\n };\r\n // Adds to existing correlation Id if present in queueMeasurements\r\n const existingMeasurements = this.queueMeasurements.get(correlationId);\r\n if (existingMeasurements) {\r\n existingMeasurements.push(queueMeasurement);\r\n this.queueMeasurements.set(correlationId, existingMeasurements);\r\n }\r\n else {\r\n // Sets new correlation Id if not present in queueMeasurements\r\n this.logger.trace(`PerformanceClient.addQueueMeasurement: adding correlationId ${correlationId} to queue measurements`);\r\n const measurementArray = [queueMeasurement];\r\n this.queueMeasurements.set(correlationId, measurementArray);\r\n }\r\n // Delete processed pre-queue event.\r\n this.preQueueTimeByCorrelationId.delete(correlationId);\r\n }\r\n /**\r\n * Starts measuring performance for a given operation. Returns a function that should be used to end the measurement.\r\n *\r\n * @param {PerformanceEvents} measureName\r\n * @param {?string} [correlationId]\r\n * @returns {InProgressPerformanceEvent}\r\n */\r\n startMeasurement(measureName, correlationId) {\r\n // Generate a placeholder correlation if the request does not provide one\r\n const eventCorrelationId = correlationId || this.generateId();\r\n if (!correlationId) {\r\n this.logger.info(`PerformanceClient: No correlation id provided for ${measureName}, generating`, eventCorrelationId);\r\n }\r\n this.logger.trace(`PerformanceClient: Performance measurement started for ${measureName}`, eventCorrelationId);\r\n const inProgressEvent = {\r\n eventId: this.generateId(),\r\n status: indexNode.PerformanceEventStatus.InProgress,\r\n authority: this.authority,\r\n libraryName: this.libraryName,\r\n libraryVersion: this.libraryVersion,\r\n clientId: this.clientId,\r\n name: measureName,\r\n startTimeMs: Date.now(),\r\n correlationId: eventCorrelationId,\r\n appName: this.applicationTelemetry?.appName,\r\n appVersion: this.applicationTelemetry?.appVersion,\r\n };\r\n // Store in progress events so they can be discarded if not ended properly\r\n this.cacheEventByCorrelationId(inProgressEvent);\r\n startContext(inProgressEvent, this.abbreviations, this.eventStack.get(eventCorrelationId));\r\n // Return the event and functions the caller can use to properly end/flush the measurement\r\n return {\r\n end: (event, error, account) => {\r\n return this.endMeasurement({\r\n // Initial set of event properties\r\n ...inProgressEvent,\r\n // Properties set when event ends\r\n ...event,\r\n }, error, account);\r\n },\r\n discard: () => {\r\n return this.discardMeasurements(inProgressEvent.correlationId);\r\n },\r\n add: (fields) => {\r\n return this.addFields(fields, inProgressEvent.correlationId);\r\n },\r\n increment: (fields) => {\r\n return this.incrementFields(fields, inProgressEvent.correlationId);\r\n },\r\n event: inProgressEvent,\r\n measurement: new indexNode.StubPerformanceMeasurement(),\r\n };\r\n }\r\n /**\r\n * Stops measuring the performance for an operation. Should only be called directly by PerformanceClient classes,\r\n * as consumers should instead use the function returned by startMeasurement.\r\n * Adds a new field named as \"[event name]DurationMs\" for sub-measurements, completes and emits an event\r\n * otherwise.\r\n *\r\n * @param {PerformanceEvent} event\r\n * @param {unknown} error\r\n * @param {AccountInfo?} account\r\n * @returns {(PerformanceEvent | null)}\r\n */\r\n endMeasurement(event, error, account) {\r\n const rootEvent = this.eventsByCorrelationId.get(event.correlationId);\r\n if (!rootEvent) {\r\n this.logger.trace(`PerformanceClient: Measurement not found for ${event.eventId}`, event.correlationId);\r\n return null;\r\n }\r\n const isRoot = event.eventId === rootEvent.eventId;\r\n let queueInfo = {\r\n totalQueueTime: 0,\r\n totalQueueCount: 0,\r\n manuallyCompletedCount: 0,\r\n };\r\n event.durationMs = Math.round(event.durationMs || this.getDurationMs(event.startTimeMs));\r\n const context = JSON.stringify(endContext(event, this.abbreviations, this.eventStack.get(rootEvent.correlationId), error));\r\n if (isRoot) {\r\n queueInfo = this.getQueueInfo(event.correlationId);\r\n this.discardMeasurements(rootEvent.correlationId);\r\n }\r\n else {\r\n rootEvent.incompleteSubMeasurements?.delete(event.eventId);\r\n }\r\n this.logger.trace(`PerformanceClient: Performance measurement ended for ${event.name}: ${event.durationMs} ms`, event.correlationId);\r\n if (error) {\r\n addError(error, this.logger, rootEvent);\r\n }\r\n // Add sub-measurement attribute to root event.\r\n if (!isRoot) {\r\n rootEvent[event.name + \"DurationMs\"] = Math.floor(event.durationMs);\r\n return { ...rootEvent };\r\n }\r\n if (isRoot &&\r\n !error &&\r\n (rootEvent.errorCode || rootEvent.subErrorCode)) {\r\n this.logger.trace(`PerformanceClient: Remove error and sub-error codes for root event ${event.name} as intermediate error was successfully handled`, event.correlationId);\r\n rootEvent.errorCode = undefined;\r\n rootEvent.subErrorCode = undefined;\r\n }\r\n let finalEvent = { ...rootEvent, ...event };\r\n let incompleteSubsCount = 0;\r\n // Incomplete sub-measurements are discarded. They are likely an instrumentation bug that should be fixed.\r\n finalEvent.incompleteSubMeasurements?.forEach((subMeasurement) => {\r\n this.logger.trace(`PerformanceClient: Incomplete submeasurement ${subMeasurement.name} found for ${event.name}`, finalEvent.correlationId);\r\n incompleteSubsCount++;\r\n });\r\n finalEvent.incompleteSubMeasurements = undefined;\r\n finalEvent = {\r\n ...finalEvent,\r\n queuedTimeMs: queueInfo.totalQueueTime,\r\n queuedCount: queueInfo.totalQueueCount,\r\n queuedManuallyCompletedCount: queueInfo.manuallyCompletedCount,\r\n status: indexNode.PerformanceEventStatus.Completed,\r\n incompleteSubsCount,\r\n context,\r\n };\r\n if (account) {\r\n finalEvent.accountType = getAccountType(account);\r\n finalEvent.dataBoundary = account.dataBoundary;\r\n }\r\n this.truncateIntegralFields(finalEvent);\r\n this.emitEvents([finalEvent], event.correlationId);\r\n return finalEvent;\r\n }\r\n /**\r\n * Saves extra information to be emitted when the measurements are flushed\r\n * @param fields\r\n * @param correlationId\r\n */\r\n addFields(fields, correlationId) {\r\n this.logger.trace(\"PerformanceClient: Updating static fields\");\r\n const event = this.eventsByCorrelationId.get(correlationId);\r\n if (event) {\r\n this.eventsByCorrelationId.set(correlationId, {\r\n ...event,\r\n ...fields,\r\n });\r\n }\r\n else {\r\n this.logger.trace(\"PerformanceClient: Event not found for\", correlationId);\r\n }\r\n }\r\n /**\r\n * Increment counters to be emitted when the measurements are flushed\r\n * @param fields {string[]}\r\n * @param correlationId {string} correlation identifier\r\n */\r\n incrementFields(fields, correlationId) {\r\n this.logger.trace(\"PerformanceClient: Updating counters\");\r\n const event = this.eventsByCorrelationId.get(correlationId);\r\n if (event) {\r\n for (const counter in fields) {\r\n if (!event.hasOwnProperty(counter)) {\r\n event[counter] = 0;\r\n }\r\n else if (isNaN(Number(event[counter]))) {\r\n return;\r\n }\r\n event[counter] += fields[counter];\r\n }\r\n }\r\n else {\r\n this.logger.trace(\"PerformanceClient: Event not found for\", correlationId);\r\n }\r\n }\r\n /**\r\n * Upserts event into event cache.\r\n * First key is the correlation id, second key is the event id.\r\n * Allows for events to be grouped by correlation id,\r\n * and to easily allow for properties on them to be updated.\r\n *\r\n * @private\r\n * @param {PerformanceEvent} event\r\n */\r\n cacheEventByCorrelationId(event) {\r\n const rootEvent = this.eventsByCorrelationId.get(event.correlationId);\r\n if (rootEvent) {\r\n this.logger.trace(`PerformanceClient: Performance measurement for ${event.name} added/updated`, event.correlationId);\r\n rootEvent.incompleteSubMeasurements =\r\n rootEvent.incompleteSubMeasurements || new Map();\r\n rootEvent.incompleteSubMeasurements.set(event.eventId, {\r\n name: event.name,\r\n startTimeMs: event.startTimeMs,\r\n });\r\n }\r\n else {\r\n this.logger.trace(`PerformanceClient: Performance measurement for ${event.name} started`, event.correlationId);\r\n this.eventsByCorrelationId.set(event.correlationId, { ...event });\r\n this.eventStack.set(event.correlationId, []);\r\n }\r\n }\r\n getQueueInfo(correlationId) {\r\n const queueMeasurementForCorrelationId = this.queueMeasurements.get(correlationId);\r\n if (!queueMeasurementForCorrelationId) {\r\n this.logger.trace(`PerformanceClient: no queue measurements found for for correlationId: ${correlationId}`);\r\n }\r\n let totalQueueTime = 0;\r\n let totalQueueCount = 0;\r\n let manuallyCompletedCount = 0;\r\n queueMeasurementForCorrelationId?.forEach((measurement) => {\r\n totalQueueTime += measurement.queueTime;\r\n totalQueueCount++;\r\n manuallyCompletedCount += measurement.manuallyCompleted ? 1 : 0;\r\n });\r\n return {\r\n totalQueueTime,\r\n totalQueueCount,\r\n manuallyCompletedCount,\r\n };\r\n }\r\n /**\r\n * Removes measurements and aux data for a given correlation id.\r\n *\r\n * @param {string} correlationId\r\n */\r\n discardMeasurements(correlationId) {\r\n this.logger.trace(\"PerformanceClient: Performance measurements discarded\", correlationId);\r\n this.eventsByCorrelationId.delete(correlationId);\r\n this.logger.trace(\"PerformanceClient: QueueMeasurements discarded\", correlationId);\r\n this.queueMeasurements.delete(correlationId);\r\n this.logger.trace(\"PerformanceClient: Pre-queue times discarded\", correlationId);\r\n this.preQueueTimeByCorrelationId.delete(correlationId);\r\n this.logger.trace(\"PerformanceClient: Event stack discarded\", correlationId);\r\n this.eventStack.delete(correlationId);\r\n }\r\n /**\r\n * Registers a callback function to receive performance events.\r\n *\r\n * @param {PerformanceCallbackFunction} callback\r\n * @returns {string}\r\n */\r\n addPerformanceCallback(callback) {\r\n for (const [id, cb] of this.callbacks) {\r\n if (cb.toString() === callback.toString()) {\r\n this.logger.warning(`PerformanceClient: Performance callback is already registered with id: ${id}`);\r\n return id;\r\n }\r\n }\r\n const callbackId = this.generateId();\r\n this.callbacks.set(callbackId, callback);\r\n this.logger.verbose(`PerformanceClient: Performance callback registered with id: ${callbackId}`);\r\n return callbackId;\r\n }\r\n /**\r\n * Removes a callback registered with addPerformanceCallback.\r\n *\r\n * @param {string} callbackId\r\n * @returns {boolean}\r\n */\r\n removePerformanceCallback(callbackId) {\r\n const result = this.callbacks.delete(callbackId);\r\n if (result) {\r\n this.logger.verbose(`PerformanceClient: Performance callback ${callbackId} removed.`);\r\n }\r\n else {\r\n this.logger.verbose(`PerformanceClient: Performance callback ${callbackId} not removed.`);\r\n }\r\n return result;\r\n }\r\n /**\r\n * Emits events to all registered callbacks.\r\n *\r\n * @param {PerformanceEvent[]} events\r\n * @param {?string} [correlationId]\r\n */\r\n emitEvents(events, correlationId) {\r\n this.logger.verbose(\"PerformanceClient: Emitting performance events\", correlationId);\r\n this.callbacks.forEach((callback, callbackId) => {\r\n this.logger.trace(`PerformanceClient: Emitting event to callback ${callbackId}`, correlationId);\r\n callback.apply(null, [events]);\r\n });\r\n }\r\n /**\r\n * Enforce truncation of integral fields in performance event.\r\n * @param {PerformanceEvent} event performance event to update.\r\n */\r\n truncateIntegralFields(event) {\r\n this.intFields.forEach((key) => {\r\n if (key in event && typeof event[key] === \"number\") {\r\n event[key] = Math.floor(event[key]);\r\n }\r\n });\r\n }\r\n /**\r\n * Returns event duration in milliseconds\r\n * @param startTimeMs {number}\r\n * @returns {number}\r\n */\r\n getDurationMs(startTimeMs) {\r\n const durationMs = Date.now() - startTimeMs;\r\n // Handle clock skew\r\n return durationMs < 0 ? durationMs : 0;\r\n }\r\n}\n\nexports.AADAuthorityConstants = indexNode.AADAuthorityConstants;\nexports.AADServerParamKeys = indexNode.AADServerParamKeys;\nexports.AccountEntity = indexNode.AccountEntity;\nexports.AuthError = indexNode.AuthError;\nexports.AuthErrorCodes = indexNode.AuthErrorCodes;\nexports.AuthErrorMessage = indexNode.AuthErrorMessage;\nexports.AuthToken = indexNode.AuthToken;\nexports.AuthenticationHeaderParser = indexNode.AuthenticationHeaderParser;\nexports.AuthenticationScheme = indexNode.AuthenticationScheme;\nexports.Authority = indexNode.Authority;\nexports.AuthorityFactory = indexNode.AuthorityFactory;\nexports.AuthorityType = indexNode.AuthorityType;\nexports.AuthorizationCodeClient = indexNode.AuthorizationCodeClient;\nexports.AuthorizeProtocol = indexNode.Authorize;\nexports.AzureCloudInstance = indexNode.AzureCloudInstance;\nexports.BaseClient = indexNode.BaseClient;\nexports.CacheAccountType = indexNode.CacheAccountType;\nexports.CacheError = indexNode.CacheError;\nexports.CacheErrorCodes = indexNode.CacheErrorCodes;\nexports.CacheHelpers = indexNode.CacheHelpers;\nexports.CacheManager = indexNode.CacheManager;\nexports.CacheOutcome = indexNode.CacheOutcome;\nexports.CacheType = indexNode.CacheType;\nexports.CcsCredentialType = indexNode.CcsCredentialType;\nexports.ClaimsRequestKeys = indexNode.ClaimsRequestKeys;\nexports.ClientAuthError = indexNode.ClientAuthError;\nexports.ClientAuthErrorCodes = indexNode.ClientAuthErrorCodes;\nexports.ClientAuthErrorMessage = indexNode.ClientAuthErrorMessage;\nexports.ClientConfigurationError = indexNode.ClientConfigurationError;\nexports.ClientConfigurationErrorCodes = indexNode.ClientConfigurationErrorCodes;\nexports.ClientConfigurationErrorMessage = indexNode.ClientConfigurationErrorMessage;\nexports.CodeChallengeMethodValues = indexNode.CodeChallengeMethodValues;\nexports.Constants = indexNode.Constants;\nexports.CredentialType = indexNode.CredentialType;\nexports.DEFAULT_CRYPTO_IMPLEMENTATION = indexNode.DEFAULT_CRYPTO_IMPLEMENTATION;\nexports.DEFAULT_SYSTEM_OPTIONS = indexNode.DEFAULT_SYSTEM_OPTIONS;\nexports.DEFAULT_TOKEN_RENEWAL_OFFSET_SEC = indexNode.DEFAULT_TOKEN_RENEWAL_OFFSET_SEC;\nexports.DefaultStorageClass = indexNode.DefaultStorageClass;\nexports.EncodingTypes = indexNode.EncodingTypes;\nexports.Errors = indexNode.Errors;\nexports.GrantType = indexNode.GrantType;\nexports.HeaderNames = indexNode.HeaderNames;\nexports.HttpMethod = indexNode.HttpMethod;\nexports.HttpStatus = indexNode.HttpStatus;\nexports.IntFields = indexNode.IntFields;\nexports.InteractionRequiredAuthError = indexNode.InteractionRequiredAuthError;\nexports.InteractionRequiredAuthErrorCodes = indexNode.InteractionRequiredAuthErrorCodes;\nexports.InteractionRequiredAuthErrorMessage = indexNode.InteractionRequiredAuthErrorMessage;\nexports.JsonWebTokenTypes = indexNode.JsonWebTokenTypes;\nObject.defineProperty(exports, \"LogLevel\", {\n enumerable: true,\n get: function () { return indexNode.LogLevel; }\n});\nexports.Logger = indexNode.Logger;\nexports.NetworkError = indexNode.NetworkError;\nexports.OAuthResponseType = indexNode.OAuthResponseType;\nexports.OIDC_DEFAULT_SCOPES = indexNode.OIDC_DEFAULT_SCOPES;\nexports.ONE_DAY_IN_MS = indexNode.ONE_DAY_IN_MS;\nexports.PasswordGrantConstants = indexNode.PasswordGrantConstants;\nexports.PerformanceEventStatus = indexNode.PerformanceEventStatus;\nexports.PerformanceEvents = indexNode.PerformanceEvents;\nexports.PersistentCacheKeys = indexNode.PersistentCacheKeys;\nexports.PlatformBrokerError = indexNode.PlatformBrokerError;\nexports.PopTokenGenerator = indexNode.PopTokenGenerator;\nexports.PromptValue = indexNode.PromptValue;\nexports.ProtocolMode = indexNode.ProtocolMode;\nexports.ProtocolUtils = indexNode.ProtocolUtils;\nexports.RefreshTokenClient = indexNode.RefreshTokenClient;\nexports.RequestParameterBuilder = indexNode.RequestParameterBuilder;\nexports.ResponseHandler = indexNode.ResponseHandler;\nexports.ResponseMode = indexNode.ResponseMode;\nexports.ScopeSet = indexNode.ScopeSet;\nexports.ServerError = indexNode.ServerError;\nexports.ServerResponseType = indexNode.ServerResponseType;\nexports.ServerTelemetryManager = indexNode.ServerTelemetryManager;\nexports.SilentFlowClient = indexNode.SilentFlowClient;\nexports.StringUtils = indexNode.StringUtils;\nexports.StubPerformanceClient = indexNode.StubPerformanceClient;\nexports.StubbedNetworkModule = indexNode.StubbedNetworkModule;\nexports.THE_FAMILY_ID = indexNode.THE_FAMILY_ID;\nexports.ThrottlingConstants = indexNode.ThrottlingConstants;\nexports.ThrottlingUtils = indexNode.ThrottlingUtils;\nexports.TimeUtils = indexNode.TimeUtils;\nexports.UrlString = indexNode.UrlString;\nexports.UrlUtils = indexNode.UrlUtils;\nexports.buildAccountToCache = indexNode.buildAccountToCache;\nexports.buildClientInfo = indexNode.buildClientInfo;\nexports.buildClientInfoFromHomeAccountId = indexNode.buildClientInfoFromHomeAccountId;\nexports.buildStaticAuthorityOptions = indexNode.buildStaticAuthorityOptions;\nexports.buildTenantProfile = indexNode.buildTenantProfile;\nexports.createAuthError = indexNode.createAuthError;\nexports.createCacheError = indexNode.createCacheError;\nexports.createClientAuthError = indexNode.createClientAuthError;\nexports.createClientConfigurationError = indexNode.createClientConfigurationError;\nexports.createInteractionRequiredAuthError = indexNode.createInteractionRequiredAuthError;\nexports.createNetworkError = indexNode.createNetworkError;\nexports.formatAuthorityUri = indexNode.formatAuthorityUri;\nexports.getRequestThumbprint = indexNode.getRequestThumbprint;\nexports.getTenantIdFromIdTokenClaims = indexNode.getTenantIdFromIdTokenClaims;\nexports.invoke = indexNode.invoke;\nexports.invokeAsync = indexNode.invokeAsync;\nexports.tenantIdMatchesHomeTenant = indexNode.tenantIdMatchesHomeTenant;\nexports.updateAccountTenantProfileData = indexNode.updateAccountTenantProfileData;\nexports.version = indexNode.version;\nexports.JoseHeader = JoseHeader;\nexports.PerformanceClient = PerformanceClient;\n//# sourceMappingURL=index-browser.cjs.map\n","/*! @azure/msal-common v15.13.2 2025-11-19 */\n'use strict';\n'use strict';\n\nvar indexNode = require('./index-node-BF0Vz18w.js');\nvar indexBrowser = require('./index-browser.cjs');\n\n\n\nexports.AADAuthorityConstants = indexNode.AADAuthorityConstants;\nexports.AADServerParamKeys = indexNode.AADServerParamKeys;\nexports.AccountEntity = indexNode.AccountEntity;\nexports.AuthError = indexNode.AuthError;\nexports.AuthErrorCodes = indexNode.AuthErrorCodes;\nexports.AuthErrorMessage = indexNode.AuthErrorMessage;\nexports.AuthToken = indexNode.AuthToken;\nexports.AuthenticationHeaderParser = indexNode.AuthenticationHeaderParser;\nexports.AuthenticationScheme = indexNode.AuthenticationScheme;\nexports.Authority = indexNode.Authority;\nexports.AuthorityFactory = indexNode.AuthorityFactory;\nexports.AuthorityType = indexNode.AuthorityType;\nexports.AuthorizationCodeClient = indexNode.AuthorizationCodeClient;\nexports.AuthorizeProtocol = indexNode.Authorize;\nexports.AzureCloudInstance = indexNode.AzureCloudInstance;\nexports.BaseClient = indexNode.BaseClient;\nexports.CacheAccountType = indexNode.CacheAccountType;\nexports.CacheError = indexNode.CacheError;\nexports.CacheErrorCodes = indexNode.CacheErrorCodes;\nexports.CacheHelpers = indexNode.CacheHelpers;\nexports.CacheManager = indexNode.CacheManager;\nexports.CacheOutcome = indexNode.CacheOutcome;\nexports.CacheType = indexNode.CacheType;\nexports.CcsCredentialType = indexNode.CcsCredentialType;\nexports.ClaimsRequestKeys = indexNode.ClaimsRequestKeys;\nexports.ClientAssertionUtils = indexNode.ClientAssertionUtils;\nexports.ClientAuthError = indexNode.ClientAuthError;\nexports.ClientAuthErrorCodes = indexNode.ClientAuthErrorCodes;\nexports.ClientAuthErrorMessage = indexNode.ClientAuthErrorMessage;\nexports.ClientConfigurationError = indexNode.ClientConfigurationError;\nexports.ClientConfigurationErrorCodes = indexNode.ClientConfigurationErrorCodes;\nexports.ClientConfigurationErrorMessage = indexNode.ClientConfigurationErrorMessage;\nexports.CodeChallengeMethodValues = indexNode.CodeChallengeMethodValues;\nexports.Constants = indexNode.Constants;\nexports.CredentialType = indexNode.CredentialType;\nexports.DEFAULT_CRYPTO_IMPLEMENTATION = indexNode.DEFAULT_CRYPTO_IMPLEMENTATION;\nexports.DEFAULT_SYSTEM_OPTIONS = indexNode.DEFAULT_SYSTEM_OPTIONS;\nexports.DEFAULT_TOKEN_RENEWAL_OFFSET_SEC = indexNode.DEFAULT_TOKEN_RENEWAL_OFFSET_SEC;\nexports.DefaultStorageClass = indexNode.DefaultStorageClass;\nexports.EncodingTypes = indexNode.EncodingTypes;\nexports.Errors = indexNode.Errors;\nexports.GrantType = indexNode.GrantType;\nexports.HeaderNames = indexNode.HeaderNames;\nexports.HttpMethod = indexNode.HttpMethod;\nexports.HttpStatus = indexNode.HttpStatus;\nexports.IntFields = indexNode.IntFields;\nexports.InteractionRequiredAuthError = indexNode.InteractionRequiredAuthError;\nexports.InteractionRequiredAuthErrorCodes = indexNode.InteractionRequiredAuthErrorCodes;\nexports.InteractionRequiredAuthErrorMessage = indexNode.InteractionRequiredAuthErrorMessage;\nexports.JsonWebTokenTypes = indexNode.JsonWebTokenTypes;\nObject.defineProperty(exports, \"LogLevel\", {\n\tenumerable: true,\n\tget: function () { return indexNode.LogLevel; }\n});\nexports.Logger = indexNode.Logger;\nexports.NetworkError = indexNode.NetworkError;\nexports.OAuthResponseType = indexNode.OAuthResponseType;\nexports.OIDC_DEFAULT_SCOPES = indexNode.OIDC_DEFAULT_SCOPES;\nexports.ONE_DAY_IN_MS = indexNode.ONE_DAY_IN_MS;\nexports.PasswordGrantConstants = indexNode.PasswordGrantConstants;\nexports.PerformanceEventStatus = indexNode.PerformanceEventStatus;\nexports.PerformanceEvents = indexNode.PerformanceEvents;\nexports.PersistentCacheKeys = indexNode.PersistentCacheKeys;\nexports.PlatformBrokerError = indexNode.PlatformBrokerError;\nexports.PopTokenGenerator = indexNode.PopTokenGenerator;\nexports.PromptValue = indexNode.PromptValue;\nexports.ProtocolMode = indexNode.ProtocolMode;\nexports.ProtocolUtils = indexNode.ProtocolUtils;\nexports.RefreshTokenClient = indexNode.RefreshTokenClient;\nexports.RequestParameterBuilder = indexNode.RequestParameterBuilder;\nexports.ResponseHandler = indexNode.ResponseHandler;\nexports.ResponseMode = indexNode.ResponseMode;\nexports.ScopeSet = indexNode.ScopeSet;\nexports.ServerError = indexNode.ServerError;\nexports.ServerResponseType = indexNode.ServerResponseType;\nexports.ServerTelemetryManager = indexNode.ServerTelemetryManager;\nexports.SilentFlowClient = indexNode.SilentFlowClient;\nexports.StringUtils = indexNode.StringUtils;\nexports.StubPerformanceClient = indexNode.StubPerformanceClient;\nexports.StubbedNetworkModule = indexNode.StubbedNetworkModule;\nexports.THE_FAMILY_ID = indexNode.THE_FAMILY_ID;\nexports.ThrottlingConstants = indexNode.ThrottlingConstants;\nexports.ThrottlingUtils = indexNode.ThrottlingUtils;\nexports.TimeUtils = indexNode.TimeUtils;\nexports.TokenCacheContext = indexNode.TokenCacheContext;\nexports.UrlString = indexNode.UrlString;\nexports.UrlUtils = indexNode.UrlUtils;\nexports.buildAccountToCache = indexNode.buildAccountToCache;\nexports.buildClientInfo = indexNode.buildClientInfo;\nexports.buildClientInfoFromHomeAccountId = indexNode.buildClientInfoFromHomeAccountId;\nexports.buildStaticAuthorityOptions = indexNode.buildStaticAuthorityOptions;\nexports.buildTenantProfile = indexNode.buildTenantProfile;\nexports.createAuthError = indexNode.createAuthError;\nexports.createCacheError = indexNode.createCacheError;\nexports.createClientAuthError = indexNode.createClientAuthError;\nexports.createClientConfigurationError = indexNode.createClientConfigurationError;\nexports.createInteractionRequiredAuthError = indexNode.createInteractionRequiredAuthError;\nexports.createNetworkError = indexNode.createNetworkError;\nexports.formatAuthorityUri = indexNode.formatAuthorityUri;\nexports.getClientAssertion = indexNode.getClientAssertion;\nexports.getRequestThumbprint = indexNode.getRequestThumbprint;\nexports.getTenantIdFromIdTokenClaims = indexNode.getTenantIdFromIdTokenClaims;\nexports.invoke = indexNode.invoke;\nexports.invokeAsync = indexNode.invokeAsync;\nexports.tenantIdMatchesHomeTenant = indexNode.tenantIdMatchesHomeTenant;\nexports.updateAccountTenantProfileData = indexNode.updateAccountTenantProfileData;\nexports.version = indexNode.version;\nexports.JoseHeader = indexBrowser.JoseHeader;\nexports.PerformanceClient = indexBrowser.PerformanceClient;\n//# sourceMappingURL=index.cjs.map\n","/*! safe-buffer. MIT License. Feross Aboukhadijeh */\n/* eslint-disable node/no-deprecated-api */\nvar buffer = require('buffer')\nvar Buffer = buffer.Buffer\n\n// alternative to using Object.keys for old browsers\nfunction copyProps (src, dst) {\n for (var key in src) {\n dst[key] = src[key]\n }\n}\nif (Buffer.from && Buffer.alloc && Buffer.allocUnsafe && Buffer.allocUnsafeSlow) {\n module.exports = buffer\n} else {\n // Copy properties from require('buffer')\n copyProps(buffer, exports)\n exports.Buffer = SafeBuffer\n}\n\nfunction SafeBuffer (arg, encodingOrOffset, length) {\n return Buffer(arg, encodingOrOffset, length)\n}\n\nSafeBuffer.prototype = Object.create(Buffer.prototype)\n\n// Copy static methods from Buffer\ncopyProps(Buffer, SafeBuffer)\n\nSafeBuffer.from = function (arg, encodingOrOffset, length) {\n if (typeof arg === 'number') {\n throw new TypeError('Argument must not be a number')\n }\n return Buffer(arg, encodingOrOffset, length)\n}\n\nSafeBuffer.alloc = function (size, fill, encoding) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n var buf = Buffer(size)\n if (fill !== undefined) {\n if (typeof encoding === 'string') {\n buf.fill(fill, encoding)\n } else {\n buf.fill(fill)\n }\n } else {\n buf.fill(0)\n }\n return buf\n}\n\nSafeBuffer.allocUnsafe = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n return Buffer(size)\n}\n\nSafeBuffer.allocUnsafeSlow = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n return buffer.SlowBuffer(size)\n}\n","/*global module, process*/\nvar Buffer = require('safe-buffer').Buffer;\nvar Stream = require('stream');\nvar util = require('util');\n\nfunction DataStream(data) {\n this.buffer = null;\n this.writable = true;\n this.readable = true;\n\n // No input\n if (!data) {\n this.buffer = Buffer.alloc(0);\n return this;\n }\n\n // Stream\n if (typeof data.pipe === 'function') {\n this.buffer = Buffer.alloc(0);\n data.pipe(this);\n return this;\n }\n\n // Buffer or String\n // or Object (assumedly a passworded key)\n if (data.length || typeof data === 'object') {\n this.buffer = data;\n this.writable = false;\n process.nextTick(function () {\n this.emit('end', data);\n this.readable = false;\n this.emit('close');\n }.bind(this));\n return this;\n }\n\n throw new TypeError('Unexpected data type ('+ typeof data + ')');\n}\nutil.inherits(DataStream, Stream);\n\nDataStream.prototype.write = function write(data) {\n this.buffer = Buffer.concat([this.buffer, Buffer.from(data)]);\n this.emit('data', data);\n};\n\nDataStream.prototype.end = function end(data) {\n if (data)\n this.write(data);\n this.emit('end', data);\n this.emit('close');\n this.writable = false;\n this.readable = false;\n};\n\nmodule.exports = DataStream;\n","'use strict';\n\nfunction getParamSize(keySize) {\n\tvar result = ((keySize / 8) | 0) + (keySize % 8 === 0 ? 0 : 1);\n\treturn result;\n}\n\nvar paramBytesForAlg = {\n\tES256: getParamSize(256),\n\tES384: getParamSize(384),\n\tES512: getParamSize(521)\n};\n\nfunction getParamBytesForAlg(alg) {\n\tvar paramBytes = paramBytesForAlg[alg];\n\tif (paramBytes) {\n\t\treturn paramBytes;\n\t}\n\n\tthrow new Error('Unknown algorithm \"' + alg + '\"');\n}\n\nmodule.exports = getParamBytesForAlg;\n","'use strict';\n\nvar Buffer = require('safe-buffer').Buffer;\n\nvar getParamBytesForAlg = require('./param-bytes-for-alg');\n\nvar MAX_OCTET = 0x80,\n\tCLASS_UNIVERSAL = 0,\n\tPRIMITIVE_BIT = 0x20,\n\tTAG_SEQ = 0x10,\n\tTAG_INT = 0x02,\n\tENCODED_TAG_SEQ = (TAG_SEQ | PRIMITIVE_BIT) | (CLASS_UNIVERSAL << 6),\n\tENCODED_TAG_INT = TAG_INT | (CLASS_UNIVERSAL << 6);\n\nfunction base64Url(base64) {\n\treturn base64\n\t\t.replace(/=/g, '')\n\t\t.replace(/\\+/g, '-')\n\t\t.replace(/\\//g, '_');\n}\n\nfunction signatureAsBuffer(signature) {\n\tif (Buffer.isBuffer(signature)) {\n\t\treturn signature;\n\t} else if ('string' === typeof signature) {\n\t\treturn Buffer.from(signature, 'base64');\n\t}\n\n\tthrow new TypeError('ECDSA signature must be a Base64 string or a Buffer');\n}\n\nfunction derToJose(signature, alg) {\n\tsignature = signatureAsBuffer(signature);\n\tvar paramBytes = getParamBytesForAlg(alg);\n\n\t// the DER encoded param should at most be the param size, plus a padding\n\t// zero, since due to being a signed integer\n\tvar maxEncodedParamLength = paramBytes + 1;\n\n\tvar inputLength = signature.length;\n\n\tvar offset = 0;\n\tif (signature[offset++] !== ENCODED_TAG_SEQ) {\n\t\tthrow new Error('Could not find expected \"seq\"');\n\t}\n\n\tvar seqLength = signature[offset++];\n\tif (seqLength === (MAX_OCTET | 1)) {\n\t\tseqLength = signature[offset++];\n\t}\n\n\tif (inputLength - offset < seqLength) {\n\t\tthrow new Error('\"seq\" specified length of \"' + seqLength + '\", only \"' + (inputLength - offset) + '\" remaining');\n\t}\n\n\tif (signature[offset++] !== ENCODED_TAG_INT) {\n\t\tthrow new Error('Could not find expected \"int\" for \"r\"');\n\t}\n\n\tvar rLength = signature[offset++];\n\n\tif (inputLength - offset - 2 < rLength) {\n\t\tthrow new Error('\"r\" specified length of \"' + rLength + '\", only \"' + (inputLength - offset - 2) + '\" available');\n\t}\n\n\tif (maxEncodedParamLength < rLength) {\n\t\tthrow new Error('\"r\" specified length of \"' + rLength + '\", max of \"' + maxEncodedParamLength + '\" is acceptable');\n\t}\n\n\tvar rOffset = offset;\n\toffset += rLength;\n\n\tif (signature[offset++] !== ENCODED_TAG_INT) {\n\t\tthrow new Error('Could not find expected \"int\" for \"s\"');\n\t}\n\n\tvar sLength = signature[offset++];\n\n\tif (inputLength - offset !== sLength) {\n\t\tthrow new Error('\"s\" specified length of \"' + sLength + '\", expected \"' + (inputLength - offset) + '\"');\n\t}\n\n\tif (maxEncodedParamLength < sLength) {\n\t\tthrow new Error('\"s\" specified length of \"' + sLength + '\", max of \"' + maxEncodedParamLength + '\" is acceptable');\n\t}\n\n\tvar sOffset = offset;\n\toffset += sLength;\n\n\tif (offset !== inputLength) {\n\t\tthrow new Error('Expected to consume entire buffer, but \"' + (inputLength - offset) + '\" bytes remain');\n\t}\n\n\tvar rPadding = paramBytes - rLength,\n\t\tsPadding = paramBytes - sLength;\n\n\tvar dst = Buffer.allocUnsafe(rPadding + rLength + sPadding + sLength);\n\n\tfor (offset = 0; offset < rPadding; ++offset) {\n\t\tdst[offset] = 0;\n\t}\n\tsignature.copy(dst, offset, rOffset + Math.max(-rPadding, 0), rOffset + rLength);\n\n\toffset = paramBytes;\n\n\tfor (var o = offset; offset < o + sPadding; ++offset) {\n\t\tdst[offset] = 0;\n\t}\n\tsignature.copy(dst, offset, sOffset + Math.max(-sPadding, 0), sOffset + sLength);\n\n\tdst = dst.toString('base64');\n\tdst = base64Url(dst);\n\n\treturn dst;\n}\n\nfunction countPadding(buf, start, stop) {\n\tvar padding = 0;\n\twhile (start + padding < stop && buf[start + padding] === 0) {\n\t\t++padding;\n\t}\n\n\tvar needsSign = buf[start + padding] >= MAX_OCTET;\n\tif (needsSign) {\n\t\t--padding;\n\t}\n\n\treturn padding;\n}\n\nfunction joseToDer(signature, alg) {\n\tsignature = signatureAsBuffer(signature);\n\tvar paramBytes = getParamBytesForAlg(alg);\n\n\tvar signatureBytes = signature.length;\n\tif (signatureBytes !== paramBytes * 2) {\n\t\tthrow new TypeError('\"' + alg + '\" signatures must be \"' + paramBytes * 2 + '\" bytes, saw \"' + signatureBytes + '\"');\n\t}\n\n\tvar rPadding = countPadding(signature, 0, paramBytes);\n\tvar sPadding = countPadding(signature, paramBytes, signature.length);\n\tvar rLength = paramBytes - rPadding;\n\tvar sLength = paramBytes - sPadding;\n\n\tvar rsBytes = 1 + 1 + rLength + 1 + 1 + sLength;\n\n\tvar shortLength = rsBytes < MAX_OCTET;\n\n\tvar dst = Buffer.allocUnsafe((shortLength ? 2 : 3) + rsBytes);\n\n\tvar offset = 0;\n\tdst[offset++] = ENCODED_TAG_SEQ;\n\tif (shortLength) {\n\t\t// Bit 8 has value \"0\"\n\t\t// bits 7-1 give the length.\n\t\tdst[offset++] = rsBytes;\n\t} else {\n\t\t// Bit 8 of first octet has value \"1\"\n\t\t// bits 7-1 give the number of additional length octets.\n\t\tdst[offset++] = MAX_OCTET\t| 1;\n\t\t// length, base 256\n\t\tdst[offset++] = rsBytes & 0xff;\n\t}\n\tdst[offset++] = ENCODED_TAG_INT;\n\tdst[offset++] = rLength;\n\tif (rPadding < 0) {\n\t\tdst[offset++] = 0;\n\t\toffset += signature.copy(dst, offset, 0, paramBytes);\n\t} else {\n\t\toffset += signature.copy(dst, offset, rPadding, paramBytes);\n\t}\n\tdst[offset++] = ENCODED_TAG_INT;\n\tdst[offset++] = sLength;\n\tif (sPadding < 0) {\n\t\tdst[offset++] = 0;\n\t\tsignature.copy(dst, offset, paramBytes);\n\t} else {\n\t\tsignature.copy(dst, offset, paramBytes + sPadding);\n\t}\n\n\treturn dst;\n}\n\nmodule.exports = {\n\tderToJose: derToJose,\n\tjoseToDer: joseToDer\n};\n","/*jshint node:true */\n'use strict';\nvar Buffer = require('buffer').Buffer; // browserify\nvar SlowBuffer = require('buffer').SlowBuffer;\n\nmodule.exports = bufferEq;\n\nfunction bufferEq(a, b) {\n\n // shortcutting on type is necessary for correctness\n if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {\n return false;\n }\n\n // buffer sizes should be well-known information, so despite this\n // shortcutting, it doesn't leak any information about the *contents* of the\n // buffers.\n if (a.length !== b.length) {\n return false;\n }\n\n var c = 0;\n for (var i = 0; i < a.length; i++) {\n /*jshint bitwise:false */\n c |= a[i] ^ b[i]; // XOR\n }\n return c === 0;\n}\n\nbufferEq.install = function() {\n Buffer.prototype.equal = SlowBuffer.prototype.equal = function equal(that) {\n return bufferEq(this, that);\n };\n};\n\nvar origBufEqual = Buffer.prototype.equal;\nvar origSlowBufEqual = SlowBuffer.prototype.equal;\nbufferEq.restore = function() {\n Buffer.prototype.equal = origBufEqual;\n SlowBuffer.prototype.equal = origSlowBufEqual;\n};\n","var Buffer = require('safe-buffer').Buffer;\nvar crypto = require('crypto');\nvar formatEcdsa = require('ecdsa-sig-formatter');\nvar util = require('util');\n\nvar MSG_INVALID_ALGORITHM = '\"%s\" is not a valid algorithm.\\n Supported algorithms are:\\n \"HS256\", \"HS384\", \"HS512\", \"RS256\", \"RS384\", \"RS512\", \"PS256\", \"PS384\", \"PS512\", \"ES256\", \"ES384\", \"ES512\" and \"none\".'\nvar MSG_INVALID_SECRET = 'secret must be a string or buffer';\nvar MSG_INVALID_VERIFIER_KEY = 'key must be a string or a buffer';\nvar MSG_INVALID_SIGNER_KEY = 'key must be a string, a buffer or an object';\n\nvar supportsKeyObjects = typeof crypto.createPublicKey === 'function';\nif (supportsKeyObjects) {\n MSG_INVALID_VERIFIER_KEY += ' or a KeyObject';\n MSG_INVALID_SECRET += 'or a KeyObject';\n}\n\nfunction checkIsPublicKey(key) {\n if (Buffer.isBuffer(key)) {\n return;\n }\n\n if (typeof key === 'string') {\n return;\n }\n\n if (!supportsKeyObjects) {\n throw typeError(MSG_INVALID_VERIFIER_KEY);\n }\n\n if (typeof key !== 'object') {\n throw typeError(MSG_INVALID_VERIFIER_KEY);\n }\n\n if (typeof key.type !== 'string') {\n throw typeError(MSG_INVALID_VERIFIER_KEY);\n }\n\n if (typeof key.asymmetricKeyType !== 'string') {\n throw typeError(MSG_INVALID_VERIFIER_KEY);\n }\n\n if (typeof key.export !== 'function') {\n throw typeError(MSG_INVALID_VERIFIER_KEY);\n }\n};\n\nfunction checkIsPrivateKey(key) {\n if (Buffer.isBuffer(key)) {\n return;\n }\n\n if (typeof key === 'string') {\n return;\n }\n\n if (typeof key === 'object') {\n return;\n }\n\n throw typeError(MSG_INVALID_SIGNER_KEY);\n};\n\nfunction checkIsSecretKey(key) {\n if (Buffer.isBuffer(key)) {\n return;\n }\n\n if (typeof key === 'string') {\n return key;\n }\n\n if (!supportsKeyObjects) {\n throw typeError(MSG_INVALID_SECRET);\n }\n\n if (typeof key !== 'object') {\n throw typeError(MSG_INVALID_SECRET);\n }\n\n if (key.type !== 'secret') {\n throw typeError(MSG_INVALID_SECRET);\n }\n\n if (typeof key.export !== 'function') {\n throw typeError(MSG_INVALID_SECRET);\n }\n}\n\nfunction fromBase64(base64) {\n return base64\n .replace(/=/g, '')\n .replace(/\\+/g, '-')\n .replace(/\\//g, '_');\n}\n\nfunction toBase64(base64url) {\n base64url = base64url.toString();\n\n var padding = 4 - base64url.length % 4;\n if (padding !== 4) {\n for (var i = 0; i < padding; ++i) {\n base64url += '=';\n }\n }\n\n return base64url\n .replace(/\\-/g, '+')\n .replace(/_/g, '/');\n}\n\nfunction typeError(template) {\n var args = [].slice.call(arguments, 1);\n var errMsg = util.format.bind(util, template).apply(null, args);\n return new TypeError(errMsg);\n}\n\nfunction bufferOrString(obj) {\n return Buffer.isBuffer(obj) || typeof obj === 'string';\n}\n\nfunction normalizeInput(thing) {\n if (!bufferOrString(thing))\n thing = JSON.stringify(thing);\n return thing;\n}\n\nfunction createHmacSigner(bits) {\n return function sign(thing, secret) {\n checkIsSecretKey(secret);\n thing = normalizeInput(thing);\n var hmac = crypto.createHmac('sha' + bits, secret);\n var sig = (hmac.update(thing), hmac.digest('base64'))\n return fromBase64(sig);\n }\n}\n\nvar bufferEqual;\nvar timingSafeEqual = 'timingSafeEqual' in crypto ? function timingSafeEqual(a, b) {\n if (a.byteLength !== b.byteLength) {\n return false;\n }\n\n return crypto.timingSafeEqual(a, b)\n} : function timingSafeEqual(a, b) {\n if (!bufferEqual) {\n bufferEqual = require('buffer-equal-constant-time');\n }\n\n return bufferEqual(a, b)\n}\n\nfunction createHmacVerifier(bits) {\n return function verify(thing, signature, secret) {\n var computedSig = createHmacSigner(bits)(thing, secret);\n return timingSafeEqual(Buffer.from(signature), Buffer.from(computedSig));\n }\n}\n\nfunction createKeySigner(bits) {\n return function sign(thing, privateKey) {\n checkIsPrivateKey(privateKey);\n thing = normalizeInput(thing);\n // Even though we are specifying \"RSA\" here, this works with ECDSA\n // keys as well.\n var signer = crypto.createSign('RSA-SHA' + bits);\n var sig = (signer.update(thing), signer.sign(privateKey, 'base64'));\n return fromBase64(sig);\n }\n}\n\nfunction createKeyVerifier(bits) {\n return function verify(thing, signature, publicKey) {\n checkIsPublicKey(publicKey);\n thing = normalizeInput(thing);\n signature = toBase64(signature);\n var verifier = crypto.createVerify('RSA-SHA' + bits);\n verifier.update(thing);\n return verifier.verify(publicKey, signature, 'base64');\n }\n}\n\nfunction createPSSKeySigner(bits) {\n return function sign(thing, privateKey) {\n checkIsPrivateKey(privateKey);\n thing = normalizeInput(thing);\n var signer = crypto.createSign('RSA-SHA' + bits);\n var sig = (signer.update(thing), signer.sign({\n key: privateKey,\n padding: crypto.constants.RSA_PKCS1_PSS_PADDING,\n saltLength: crypto.constants.RSA_PSS_SALTLEN_DIGEST\n }, 'base64'));\n return fromBase64(sig);\n }\n}\n\nfunction createPSSKeyVerifier(bits) {\n return function verify(thing, signature, publicKey) {\n checkIsPublicKey(publicKey);\n thing = normalizeInput(thing);\n signature = toBase64(signature);\n var verifier = crypto.createVerify('RSA-SHA' + bits);\n verifier.update(thing);\n return verifier.verify({\n key: publicKey,\n padding: crypto.constants.RSA_PKCS1_PSS_PADDING,\n saltLength: crypto.constants.RSA_PSS_SALTLEN_DIGEST\n }, signature, 'base64');\n }\n}\n\nfunction createECDSASigner(bits) {\n var inner = createKeySigner(bits);\n return function sign() {\n var signature = inner.apply(null, arguments);\n signature = formatEcdsa.derToJose(signature, 'ES' + bits);\n return signature;\n };\n}\n\nfunction createECDSAVerifer(bits) {\n var inner = createKeyVerifier(bits);\n return function verify(thing, signature, publicKey) {\n signature = formatEcdsa.joseToDer(signature, 'ES' + bits).toString('base64');\n var result = inner(thing, signature, publicKey);\n return result;\n };\n}\n\nfunction createNoneSigner() {\n return function sign() {\n return '';\n }\n}\n\nfunction createNoneVerifier() {\n return function verify(thing, signature) {\n return signature === '';\n }\n}\n\nmodule.exports = function jwa(algorithm) {\n var signerFactories = {\n hs: createHmacSigner,\n rs: createKeySigner,\n ps: createPSSKeySigner,\n es: createECDSASigner,\n none: createNoneSigner,\n }\n var verifierFactories = {\n hs: createHmacVerifier,\n rs: createKeyVerifier,\n ps: createPSSKeyVerifier,\n es: createECDSAVerifer,\n none: createNoneVerifier,\n }\n var match = algorithm.match(/^(RS|PS|ES|HS)(256|384|512)$|^(none)$/i);\n if (!match)\n throw typeError(MSG_INVALID_ALGORITHM, algorithm);\n var algo = (match[1] || match[3]).toLowerCase();\n var bits = match[2];\n\n return {\n sign: signerFactories[algo](bits),\n verify: verifierFactories[algo](bits),\n }\n};\n","/*global module*/\nvar Buffer = require('buffer').Buffer;\n\nmodule.exports = function toString(obj) {\n if (typeof obj === 'string')\n return obj;\n if (typeof obj === 'number' || Buffer.isBuffer(obj))\n return obj.toString();\n return JSON.stringify(obj);\n};\n","/*global module*/\nvar Buffer = require('safe-buffer').Buffer;\nvar DataStream = require('./data-stream');\nvar jwa = require('jwa');\nvar Stream = require('stream');\nvar toString = require('./tostring');\nvar util = require('util');\n\nfunction base64url(string, encoding) {\n return Buffer\n .from(string, encoding)\n .toString('base64')\n .replace(/=/g, '')\n .replace(/\\+/g, '-')\n .replace(/\\//g, '_');\n}\n\nfunction jwsSecuredInput(header, payload, encoding) {\n encoding = encoding || 'utf8';\n var encodedHeader = base64url(toString(header), 'binary');\n var encodedPayload = base64url(toString(payload), encoding);\n return util.format('%s.%s', encodedHeader, encodedPayload);\n}\n\nfunction jwsSign(opts) {\n var header = opts.header;\n var payload = opts.payload;\n var secretOrKey = opts.secret || opts.privateKey;\n var encoding = opts.encoding;\n var algo = jwa(header.alg);\n var securedInput = jwsSecuredInput(header, payload, encoding);\n var signature = algo.sign(securedInput, secretOrKey);\n return util.format('%s.%s', securedInput, signature);\n}\n\nfunction SignStream(opts) {\n var secret = opts.secret||opts.privateKey||opts.key;\n var secretStream = new DataStream(secret);\n this.readable = true;\n this.header = opts.header;\n this.encoding = opts.encoding;\n this.secret = this.privateKey = this.key = secretStream;\n this.payload = new DataStream(opts.payload);\n this.secret.once('close', function () {\n if (!this.payload.writable && this.readable)\n this.sign();\n }.bind(this));\n\n this.payload.once('close', function () {\n if (!this.secret.writable && this.readable)\n this.sign();\n }.bind(this));\n}\nutil.inherits(SignStream, Stream);\n\nSignStream.prototype.sign = function sign() {\n try {\n var signature = jwsSign({\n header: this.header,\n payload: this.payload.buffer,\n secret: this.secret.buffer,\n encoding: this.encoding\n });\n this.emit('done', signature);\n this.emit('data', signature);\n this.emit('end');\n this.readable = false;\n return signature;\n } catch (e) {\n this.readable = false;\n this.emit('error', e);\n this.emit('close');\n }\n};\n\nSignStream.sign = jwsSign;\n\nmodule.exports = SignStream;\n","/*global module*/\nvar Buffer = require('safe-buffer').Buffer;\nvar DataStream = require('./data-stream');\nvar jwa = require('jwa');\nvar Stream = require('stream');\nvar toString = require('./tostring');\nvar util = require('util');\nvar JWS_REGEX = /^[a-zA-Z0-9\\-_]+?\\.[a-zA-Z0-9\\-_]+?\\.([a-zA-Z0-9\\-_]+)?$/;\n\nfunction isObject(thing) {\n return Object.prototype.toString.call(thing) === '[object Object]';\n}\n\nfunction safeJsonParse(thing) {\n if (isObject(thing))\n return thing;\n try { return JSON.parse(thing); }\n catch (e) { return undefined; }\n}\n\nfunction headerFromJWS(jwsSig) {\n var encodedHeader = jwsSig.split('.', 1)[0];\n return safeJsonParse(Buffer.from(encodedHeader, 'base64').toString('binary'));\n}\n\nfunction securedInputFromJWS(jwsSig) {\n return jwsSig.split('.', 2).join('.');\n}\n\nfunction signatureFromJWS(jwsSig) {\n return jwsSig.split('.')[2];\n}\n\nfunction payloadFromJWS(jwsSig, encoding) {\n encoding = encoding || 'utf8';\n var payload = jwsSig.split('.')[1];\n return Buffer.from(payload, 'base64').toString(encoding);\n}\n\nfunction isValidJws(string) {\n return JWS_REGEX.test(string) && !!headerFromJWS(string);\n}\n\nfunction jwsVerify(jwsSig, algorithm, secretOrKey) {\n if (!algorithm) {\n var err = new Error(\"Missing algorithm parameter for jws.verify\");\n err.code = \"MISSING_ALGORITHM\";\n throw err;\n }\n jwsSig = toString(jwsSig);\n var signature = signatureFromJWS(jwsSig);\n var securedInput = securedInputFromJWS(jwsSig);\n var algo = jwa(algorithm);\n return algo.verify(securedInput, signature, secretOrKey);\n}\n\nfunction jwsDecode(jwsSig, opts) {\n opts = opts || {};\n jwsSig = toString(jwsSig);\n\n if (!isValidJws(jwsSig))\n return null;\n\n var header = headerFromJWS(jwsSig);\n\n if (!header)\n return null;\n\n var payload = payloadFromJWS(jwsSig);\n if (header.typ === 'JWT' || opts.json)\n payload = JSON.parse(payload, opts.encoding);\n\n return {\n header: header,\n payload: payload,\n signature: signatureFromJWS(jwsSig)\n };\n}\n\nfunction VerifyStream(opts) {\n opts = opts || {};\n var secretOrKey = opts.secret||opts.publicKey||opts.key;\n var secretStream = new DataStream(secretOrKey);\n this.readable = true;\n this.algorithm = opts.algorithm;\n this.encoding = opts.encoding;\n this.secret = this.publicKey = this.key = secretStream;\n this.signature = new DataStream(opts.signature);\n this.secret.once('close', function () {\n if (!this.signature.writable && this.readable)\n this.verify();\n }.bind(this));\n\n this.signature.once('close', function () {\n if (!this.secret.writable && this.readable)\n this.verify();\n }.bind(this));\n}\nutil.inherits(VerifyStream, Stream);\nVerifyStream.prototype.verify = function verify() {\n try {\n var valid = jwsVerify(this.signature.buffer, this.algorithm, this.key.buffer);\n var obj = jwsDecode(this.signature.buffer, this.encoding);\n this.emit('done', valid, obj);\n this.emit('data', valid);\n this.emit('end');\n this.readable = false;\n return valid;\n } catch (e) {\n this.readable = false;\n this.emit('error', e);\n this.emit('close');\n }\n};\n\nVerifyStream.decode = jwsDecode;\nVerifyStream.isValid = isValidJws;\nVerifyStream.verify = jwsVerify;\n\nmodule.exports = VerifyStream;\n","/*global exports*/\nvar SignStream = require('./lib/sign-stream');\nvar VerifyStream = require('./lib/verify-stream');\n\nvar ALGORITHMS = [\n 'HS256', 'HS384', 'HS512',\n 'RS256', 'RS384', 'RS512',\n 'PS256', 'PS384', 'PS512',\n 'ES256', 'ES384', 'ES512'\n];\n\nexports.ALGORITHMS = ALGORITHMS;\nexports.sign = SignStream.sign;\nexports.verify = VerifyStream.verify;\nexports.decode = VerifyStream.decode;\nexports.isValid = VerifyStream.isValid;\nexports.createSign = function createSign(opts) {\n return new SignStream(opts);\n};\nexports.createVerify = function createVerify(opts) {\n return new VerifyStream(opts);\n};\n","var jws = require('jws');\n\nmodule.exports = function (jwt, options) {\n options = options || {};\n var decoded = jws.decode(jwt, options);\n if (!decoded) { return null; }\n var payload = decoded.payload;\n\n //try parse the payload\n if(typeof payload === 'string') {\n try {\n var obj = JSON.parse(payload);\n if(obj !== null && typeof obj === 'object') {\n payload = obj;\n }\n } catch (e) { }\n }\n\n //return header if `complete` option is enabled. header includes claims\n //such as `kid` and `alg` used to select the key within a JWKS needed to\n //verify the signature\n if (options.complete === true) {\n return {\n header: decoded.header,\n payload: payload,\n signature: decoded.signature\n };\n }\n return payload;\n};\n","var JsonWebTokenError = function (message, error) {\n Error.call(this, message);\n if(Error.captureStackTrace) {\n Error.captureStackTrace(this, this.constructor);\n }\n this.name = 'JsonWebTokenError';\n this.message = message;\n if (error) this.inner = error;\n};\n\nJsonWebTokenError.prototype = Object.create(Error.prototype);\nJsonWebTokenError.prototype.constructor = JsonWebTokenError;\n\nmodule.exports = JsonWebTokenError;\n","var JsonWebTokenError = require('./JsonWebTokenError');\n\nvar NotBeforeError = function (message, date) {\n JsonWebTokenError.call(this, message);\n this.name = 'NotBeforeError';\n this.date = date;\n};\n\nNotBeforeError.prototype = Object.create(JsonWebTokenError.prototype);\n\nNotBeforeError.prototype.constructor = NotBeforeError;\n\nmodule.exports = NotBeforeError;","var JsonWebTokenError = require('./JsonWebTokenError');\n\nvar TokenExpiredError = function (message, expiredAt) {\n JsonWebTokenError.call(this, message);\n this.name = 'TokenExpiredError';\n this.expiredAt = expiredAt;\n};\n\nTokenExpiredError.prototype = Object.create(JsonWebTokenError.prototype);\n\nTokenExpiredError.prototype.constructor = TokenExpiredError;\n\nmodule.exports = TokenExpiredError;","var ms = require('ms');\n\nmodule.exports = function (time, iat) {\n var timestamp = iat || Math.floor(Date.now() / 1000);\n\n if (typeof time === 'string') {\n var milliseconds = ms(time);\n if (typeof milliseconds === 'undefined') {\n return;\n }\n return Math.floor(timestamp + milliseconds / 1000);\n } else if (typeof time === 'number') {\n return timestamp + time;\n } else {\n return;\n }\n\n};","'use strict'\n\n// Note: this is the semver.org version of the spec that it implements\n// Not necessarily the package version of this code.\nconst SEMVER_SPEC_VERSION = '2.0.0'\n\nconst MAX_LENGTH = 256\nconst MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER ||\n/* istanbul ignore next */ 9007199254740991\n\n// Max safe segment length for coercion.\nconst MAX_SAFE_COMPONENT_LENGTH = 16\n\n// Max safe length for a build identifier. The max length minus 6 characters for\n// the shortest version with a build 0.0.0+BUILD.\nconst MAX_SAFE_BUILD_LENGTH = MAX_LENGTH - 6\n\nconst RELEASE_TYPES = [\n 'major',\n 'premajor',\n 'minor',\n 'preminor',\n 'patch',\n 'prepatch',\n 'prerelease',\n]\n\nmodule.exports = {\n MAX_LENGTH,\n MAX_SAFE_COMPONENT_LENGTH,\n MAX_SAFE_BUILD_LENGTH,\n MAX_SAFE_INTEGER,\n RELEASE_TYPES,\n SEMVER_SPEC_VERSION,\n FLAG_INCLUDE_PRERELEASE: 0b001,\n FLAG_LOOSE: 0b010,\n}\n","'use strict'\n\nconst debug = (\n typeof process === 'object' &&\n process.env &&\n process.env.NODE_DEBUG &&\n /\\bsemver\\b/i.test(process.env.NODE_DEBUG)\n) ? (...args) => console.error('SEMVER', ...args)\n : () => {}\n\nmodule.exports = debug\n","'use strict'\n\nconst {\n MAX_SAFE_COMPONENT_LENGTH,\n MAX_SAFE_BUILD_LENGTH,\n MAX_LENGTH,\n} = require('./constants')\nconst debug = require('./debug')\nexports = module.exports = {}\n\n// The actual regexps go on exports.re\nconst re = exports.re = []\nconst safeRe = exports.safeRe = []\nconst src = exports.src = []\nconst safeSrc = exports.safeSrc = []\nconst t = exports.t = {}\nlet R = 0\n\nconst LETTERDASHNUMBER = '[a-zA-Z0-9-]'\n\n// Replace some greedy regex tokens to prevent regex dos issues. These regex are\n// used internally via the safeRe object since all inputs in this library get\n// normalized first to trim and collapse all extra whitespace. The original\n// regexes are exported for userland consumption and lower level usage. A\n// future breaking change could export the safer regex only with a note that\n// all input should have extra whitespace removed.\nconst safeRegexReplacements = [\n ['\\\\s', 1],\n ['\\\\d', MAX_LENGTH],\n [LETTERDASHNUMBER, MAX_SAFE_BUILD_LENGTH],\n]\n\nconst makeSafeRegex = (value) => {\n for (const [token, max] of safeRegexReplacements) {\n value = value\n .split(`${token}*`).join(`${token}{0,${max}}`)\n .split(`${token}+`).join(`${token}{1,${max}}`)\n }\n return value\n}\n\nconst createToken = (name, value, isGlobal) => {\n const safe = makeSafeRegex(value)\n const index = R++\n debug(name, index, value)\n t[name] = index\n src[index] = value\n safeSrc[index] = safe\n re[index] = new RegExp(value, isGlobal ? 'g' : undefined)\n safeRe[index] = new RegExp(safe, isGlobal ? 'g' : undefined)\n}\n\n// The following Regular Expressions can be used for tokenizing,\n// validating, and parsing SemVer version strings.\n\n// ## Numeric Identifier\n// A single `0`, or a non-zero digit followed by zero or more digits.\n\ncreateToken('NUMERICIDENTIFIER', '0|[1-9]\\\\d*')\ncreateToken('NUMERICIDENTIFIERLOOSE', '\\\\d+')\n\n// ## Non-numeric Identifier\n// Zero or more digits, followed by a letter or hyphen, and then zero or\n// more letters, digits, or hyphens.\n\ncreateToken('NONNUMERICIDENTIFIER', `\\\\d*[a-zA-Z-]${LETTERDASHNUMBER}*`)\n\n// ## Main Version\n// Three dot-separated numeric identifiers.\n\ncreateToken('MAINVERSION', `(${src[t.NUMERICIDENTIFIER]})\\\\.` +\n `(${src[t.NUMERICIDENTIFIER]})\\\\.` +\n `(${src[t.NUMERICIDENTIFIER]})`)\n\ncreateToken('MAINVERSIONLOOSE', `(${src[t.NUMERICIDENTIFIERLOOSE]})\\\\.` +\n `(${src[t.NUMERICIDENTIFIERLOOSE]})\\\\.` +\n `(${src[t.NUMERICIDENTIFIERLOOSE]})`)\n\n// ## Pre-release Version Identifier\n// A numeric identifier, or a non-numeric identifier.\n// Non-numberic identifiers include numberic identifiers but can be longer.\n// Therefore non-numberic identifiers must go first.\n\ncreateToken('PRERELEASEIDENTIFIER', `(?:${src[t.NONNUMERICIDENTIFIER]\n}|${src[t.NUMERICIDENTIFIER]})`)\n\ncreateToken('PRERELEASEIDENTIFIERLOOSE', `(?:${src[t.NONNUMERICIDENTIFIER]\n}|${src[t.NUMERICIDENTIFIERLOOSE]})`)\n\n// ## Pre-release Version\n// Hyphen, followed by one or more dot-separated pre-release version\n// identifiers.\n\ncreateToken('PRERELEASE', `(?:-(${src[t.PRERELEASEIDENTIFIER]\n}(?:\\\\.${src[t.PRERELEASEIDENTIFIER]})*))`)\n\ncreateToken('PRERELEASELOOSE', `(?:-?(${src[t.PRERELEASEIDENTIFIERLOOSE]\n}(?:\\\\.${src[t.PRERELEASEIDENTIFIERLOOSE]})*))`)\n\n// ## Build Metadata Identifier\n// Any combination of digits, letters, or hyphens.\n\ncreateToken('BUILDIDENTIFIER', `${LETTERDASHNUMBER}+`)\n\n// ## Build Metadata\n// Plus sign, followed by one or more period-separated build metadata\n// identifiers.\n\ncreateToken('BUILD', `(?:\\\\+(${src[t.BUILDIDENTIFIER]\n}(?:\\\\.${src[t.BUILDIDENTIFIER]})*))`)\n\n// ## Full Version String\n// A main version, followed optionally by a pre-release version and\n// build metadata.\n\n// Note that the only major, minor, patch, and pre-release sections of\n// the version string are capturing groups. The build metadata is not a\n// capturing group, because it should not ever be used in version\n// comparison.\n\ncreateToken('FULLPLAIN', `v?${src[t.MAINVERSION]\n}${src[t.PRERELEASE]}?${\n src[t.BUILD]}?`)\n\ncreateToken('FULL', `^${src[t.FULLPLAIN]}$`)\n\n// like full, but allows v1.2.3 and =1.2.3, which people do sometimes.\n// also, 1.0.0alpha1 (prerelease without the hyphen) which is pretty\n// common in the npm registry.\ncreateToken('LOOSEPLAIN', `[v=\\\\s]*${src[t.MAINVERSIONLOOSE]\n}${src[t.PRERELEASELOOSE]}?${\n src[t.BUILD]}?`)\n\ncreateToken('LOOSE', `^${src[t.LOOSEPLAIN]}$`)\n\ncreateToken('GTLT', '((?:<|>)?=?)')\n\n// Something like \"2.*\" or \"1.2.x\".\n// Note that \"x.x\" is a valid xRange identifer, meaning \"any version\"\n// Only the first item is strictly required.\ncreateToken('XRANGEIDENTIFIERLOOSE', `${src[t.NUMERICIDENTIFIERLOOSE]}|x|X|\\\\*`)\ncreateToken('XRANGEIDENTIFIER', `${src[t.NUMERICIDENTIFIER]}|x|X|\\\\*`)\n\ncreateToken('XRANGEPLAIN', `[v=\\\\s]*(${src[t.XRANGEIDENTIFIER]})` +\n `(?:\\\\.(${src[t.XRANGEIDENTIFIER]})` +\n `(?:\\\\.(${src[t.XRANGEIDENTIFIER]})` +\n `(?:${src[t.PRERELEASE]})?${\n src[t.BUILD]}?` +\n `)?)?`)\n\ncreateToken('XRANGEPLAINLOOSE', `[v=\\\\s]*(${src[t.XRANGEIDENTIFIERLOOSE]})` +\n `(?:\\\\.(${src[t.XRANGEIDENTIFIERLOOSE]})` +\n `(?:\\\\.(${src[t.XRANGEIDENTIFIERLOOSE]})` +\n `(?:${src[t.PRERELEASELOOSE]})?${\n src[t.BUILD]}?` +\n `)?)?`)\n\ncreateToken('XRANGE', `^${src[t.GTLT]}\\\\s*${src[t.XRANGEPLAIN]}$`)\ncreateToken('XRANGELOOSE', `^${src[t.GTLT]}\\\\s*${src[t.XRANGEPLAINLOOSE]}$`)\n\n// Coercion.\n// Extract anything that could conceivably be a part of a valid semver\ncreateToken('COERCEPLAIN', `${'(^|[^\\\\d])' +\n '(\\\\d{1,'}${MAX_SAFE_COMPONENT_LENGTH}})` +\n `(?:\\\\.(\\\\d{1,${MAX_SAFE_COMPONENT_LENGTH}}))?` +\n `(?:\\\\.(\\\\d{1,${MAX_SAFE_COMPONENT_LENGTH}}))?`)\ncreateToken('COERCE', `${src[t.COERCEPLAIN]}(?:$|[^\\\\d])`)\ncreateToken('COERCEFULL', src[t.COERCEPLAIN] +\n `(?:${src[t.PRERELEASE]})?` +\n `(?:${src[t.BUILD]})?` +\n `(?:$|[^\\\\d])`)\ncreateToken('COERCERTL', src[t.COERCE], true)\ncreateToken('COERCERTLFULL', src[t.COERCEFULL], true)\n\n// Tilde ranges.\n// Meaning is \"reasonably at or greater than\"\ncreateToken('LONETILDE', '(?:~>?)')\n\ncreateToken('TILDETRIM', `(\\\\s*)${src[t.LONETILDE]}\\\\s+`, true)\nexports.tildeTrimReplace = '$1~'\n\ncreateToken('TILDE', `^${src[t.LONETILDE]}${src[t.XRANGEPLAIN]}$`)\ncreateToken('TILDELOOSE', `^${src[t.LONETILDE]}${src[t.XRANGEPLAINLOOSE]}$`)\n\n// Caret ranges.\n// Meaning is \"at least and backwards compatible with\"\ncreateToken('LONECARET', '(?:\\\\^)')\n\ncreateToken('CARETTRIM', `(\\\\s*)${src[t.LONECARET]}\\\\s+`, true)\nexports.caretTrimReplace = '$1^'\n\ncreateToken('CARET', `^${src[t.LONECARET]}${src[t.XRANGEPLAIN]}$`)\ncreateToken('CARETLOOSE', `^${src[t.LONECARET]}${src[t.XRANGEPLAINLOOSE]}$`)\n\n// A simple gt/lt/eq thing, or just \"\" to indicate \"any version\"\ncreateToken('COMPARATORLOOSE', `^${src[t.GTLT]}\\\\s*(${src[t.LOOSEPLAIN]})$|^$`)\ncreateToken('COMPARATOR', `^${src[t.GTLT]}\\\\s*(${src[t.FULLPLAIN]})$|^$`)\n\n// An expression to strip any whitespace between the gtlt and the thing\n// it modifies, so that `> 1.2.3` ==> `>1.2.3`\ncreateToken('COMPARATORTRIM', `(\\\\s*)${src[t.GTLT]\n}\\\\s*(${src[t.LOOSEPLAIN]}|${src[t.XRANGEPLAIN]})`, true)\nexports.comparatorTrimReplace = '$1$2$3'\n\n// Something like `1.2.3 - 1.2.4`\n// Note that these all use the loose form, because they'll be\n// checked against either the strict or loose comparator form\n// later.\ncreateToken('HYPHENRANGE', `^\\\\s*(${src[t.XRANGEPLAIN]})` +\n `\\\\s+-\\\\s+` +\n `(${src[t.XRANGEPLAIN]})` +\n `\\\\s*$`)\n\ncreateToken('HYPHENRANGELOOSE', `^\\\\s*(${src[t.XRANGEPLAINLOOSE]})` +\n `\\\\s+-\\\\s+` +\n `(${src[t.XRANGEPLAINLOOSE]})` +\n `\\\\s*$`)\n\n// Star ranges basically just allow anything at all.\ncreateToken('STAR', '(<|>)?=?\\\\s*\\\\*')\n// >=0.0.0 is like a star\ncreateToken('GTE0', '^\\\\s*>=\\\\s*0\\\\.0\\\\.0\\\\s*$')\ncreateToken('GTE0PRE', '^\\\\s*>=\\\\s*0\\\\.0\\\\.0-0\\\\s*$')\n","'use strict'\n\n// parse out just the options we care about\nconst looseOption = Object.freeze({ loose: true })\nconst emptyOpts = Object.freeze({ })\nconst parseOptions = options => {\n if (!options) {\n return emptyOpts\n }\n\n if (typeof options !== 'object') {\n return looseOption\n }\n\n return options\n}\nmodule.exports = parseOptions\n","'use strict'\n\nconst numeric = /^[0-9]+$/\nconst compareIdentifiers = (a, b) => {\n if (typeof a === 'number' && typeof b === 'number') {\n return a === b ? 0 : a < b ? -1 : 1\n }\n\n const anum = numeric.test(a)\n const bnum = numeric.test(b)\n\n if (anum && bnum) {\n a = +a\n b = +b\n }\n\n return a === b ? 0\n : (anum && !bnum) ? -1\n : (bnum && !anum) ? 1\n : a < b ? -1\n : 1\n}\n\nconst rcompareIdentifiers = (a, b) => compareIdentifiers(b, a)\n\nmodule.exports = {\n compareIdentifiers,\n rcompareIdentifiers,\n}\n","'use strict'\n\nconst debug = require('../internal/debug')\nconst { MAX_LENGTH, MAX_SAFE_INTEGER } = require('../internal/constants')\nconst { safeRe: re, t } = require('../internal/re')\n\nconst parseOptions = require('../internal/parse-options')\nconst { compareIdentifiers } = require('../internal/identifiers')\nclass SemVer {\n constructor (version, options) {\n options = parseOptions(options)\n\n if (version instanceof SemVer) {\n if (version.loose === !!options.loose &&\n version.includePrerelease === !!options.includePrerelease) {\n return version\n } else {\n version = version.version\n }\n } else if (typeof version !== 'string') {\n throw new TypeError(`Invalid version. Must be a string. Got type \"${typeof version}\".`)\n }\n\n if (version.length > MAX_LENGTH) {\n throw new TypeError(\n `version is longer than ${MAX_LENGTH} characters`\n )\n }\n\n debug('SemVer', version, options)\n this.options = options\n this.loose = !!options.loose\n // this isn't actually relevant for versions, but keep it so that we\n // don't run into trouble passing this.options around.\n this.includePrerelease = !!options.includePrerelease\n\n const m = version.trim().match(options.loose ? re[t.LOOSE] : re[t.FULL])\n\n if (!m) {\n throw new TypeError(`Invalid Version: ${version}`)\n }\n\n this.raw = version\n\n // these are actually numbers\n this.major = +m[1]\n this.minor = +m[2]\n this.patch = +m[3]\n\n if (this.major > MAX_SAFE_INTEGER || this.major < 0) {\n throw new TypeError('Invalid major version')\n }\n\n if (this.minor > MAX_SAFE_INTEGER || this.minor < 0) {\n throw new TypeError('Invalid minor version')\n }\n\n if (this.patch > MAX_SAFE_INTEGER || this.patch < 0) {\n throw new TypeError('Invalid patch version')\n }\n\n // numberify any prerelease numeric ids\n if (!m[4]) {\n this.prerelease = []\n } else {\n this.prerelease = m[4].split('.').map((id) => {\n if (/^[0-9]+$/.test(id)) {\n const num = +id\n if (num >= 0 && num < MAX_SAFE_INTEGER) {\n return num\n }\n }\n return id\n })\n }\n\n this.build = m[5] ? m[5].split('.') : []\n this.format()\n }\n\n format () {\n this.version = `${this.major}.${this.minor}.${this.patch}`\n if (this.prerelease.length) {\n this.version += `-${this.prerelease.join('.')}`\n }\n return this.version\n }\n\n toString () {\n return this.version\n }\n\n compare (other) {\n debug('SemVer.compare', this.version, this.options, other)\n if (!(other instanceof SemVer)) {\n if (typeof other === 'string' && other === this.version) {\n return 0\n }\n other = new SemVer(other, this.options)\n }\n\n if (other.version === this.version) {\n return 0\n }\n\n return this.compareMain(other) || this.comparePre(other)\n }\n\n compareMain (other) {\n if (!(other instanceof SemVer)) {\n other = new SemVer(other, this.options)\n }\n\n if (this.major < other.major) {\n return -1\n }\n if (this.major > other.major) {\n return 1\n }\n if (this.minor < other.minor) {\n return -1\n }\n if (this.minor > other.minor) {\n return 1\n }\n if (this.patch < other.patch) {\n return -1\n }\n if (this.patch > other.patch) {\n return 1\n }\n return 0\n }\n\n comparePre (other) {\n if (!(other instanceof SemVer)) {\n other = new SemVer(other, this.options)\n }\n\n // NOT having a prerelease is > having one\n if (this.prerelease.length && !other.prerelease.length) {\n return -1\n } else if (!this.prerelease.length && other.prerelease.length) {\n return 1\n } else if (!this.prerelease.length && !other.prerelease.length) {\n return 0\n }\n\n let i = 0\n do {\n const a = this.prerelease[i]\n const b = other.prerelease[i]\n debug('prerelease compare', i, a, b)\n if (a === undefined && b === undefined) {\n return 0\n } else if (b === undefined) {\n return 1\n } else if (a === undefined) {\n return -1\n } else if (a === b) {\n continue\n } else {\n return compareIdentifiers(a, b)\n }\n } while (++i)\n }\n\n compareBuild (other) {\n if (!(other instanceof SemVer)) {\n other = new SemVer(other, this.options)\n }\n\n let i = 0\n do {\n const a = this.build[i]\n const b = other.build[i]\n debug('build compare', i, a, b)\n if (a === undefined && b === undefined) {\n return 0\n } else if (b === undefined) {\n return 1\n } else if (a === undefined) {\n return -1\n } else if (a === b) {\n continue\n } else {\n return compareIdentifiers(a, b)\n }\n } while (++i)\n }\n\n // preminor will bump the version up to the next minor release, and immediately\n // down to pre-release. premajor and prepatch work the same way.\n inc (release, identifier, identifierBase) {\n if (release.startsWith('pre')) {\n if (!identifier && identifierBase === false) {\n throw new Error('invalid increment argument: identifier is empty')\n }\n // Avoid an invalid semver results\n if (identifier) {\n const match = `-${identifier}`.match(this.options.loose ? re[t.PRERELEASELOOSE] : re[t.PRERELEASE])\n if (!match || match[1] !== identifier) {\n throw new Error(`invalid identifier: ${identifier}`)\n }\n }\n }\n\n switch (release) {\n case 'premajor':\n this.prerelease.length = 0\n this.patch = 0\n this.minor = 0\n this.major++\n this.inc('pre', identifier, identifierBase)\n break\n case 'preminor':\n this.prerelease.length = 0\n this.patch = 0\n this.minor++\n this.inc('pre', identifier, identifierBase)\n break\n case 'prepatch':\n // If this is already a prerelease, it will bump to the next version\n // drop any prereleases that might already exist, since they are not\n // relevant at this point.\n this.prerelease.length = 0\n this.inc('patch', identifier, identifierBase)\n this.inc('pre', identifier, identifierBase)\n break\n // If the input is a non-prerelease version, this acts the same as\n // prepatch.\n case 'prerelease':\n if (this.prerelease.length === 0) {\n this.inc('patch', identifier, identifierBase)\n }\n this.inc('pre', identifier, identifierBase)\n break\n case 'release':\n if (this.prerelease.length === 0) {\n throw new Error(`version ${this.raw} is not a prerelease`)\n }\n this.prerelease.length = 0\n break\n\n case 'major':\n // If this is a pre-major version, bump up to the same major version.\n // Otherwise increment major.\n // 1.0.0-5 bumps to 1.0.0\n // 1.1.0 bumps to 2.0.0\n if (\n this.minor !== 0 ||\n this.patch !== 0 ||\n this.prerelease.length === 0\n ) {\n this.major++\n }\n this.minor = 0\n this.patch = 0\n this.prerelease = []\n break\n case 'minor':\n // If this is a pre-minor version, bump up to the same minor version.\n // Otherwise increment minor.\n // 1.2.0-5 bumps to 1.2.0\n // 1.2.1 bumps to 1.3.0\n if (this.patch !== 0 || this.prerelease.length === 0) {\n this.minor++\n }\n this.patch = 0\n this.prerelease = []\n break\n case 'patch':\n // If this is not a pre-release version, it will increment the patch.\n // If it is a pre-release it will bump up to the same patch version.\n // 1.2.0-5 patches to 1.2.0\n // 1.2.0 patches to 1.2.1\n if (this.prerelease.length === 0) {\n this.patch++\n }\n this.prerelease = []\n break\n // This probably shouldn't be used publicly.\n // 1.0.0 'pre' would become 1.0.0-0 which is the wrong direction.\n case 'pre': {\n const base = Number(identifierBase) ? 1 : 0\n\n if (this.prerelease.length === 0) {\n this.prerelease = [base]\n } else {\n let i = this.prerelease.length\n while (--i >= 0) {\n if (typeof this.prerelease[i] === 'number') {\n this.prerelease[i]++\n i = -2\n }\n }\n if (i === -1) {\n // didn't increment anything\n if (identifier === this.prerelease.join('.') && identifierBase === false) {\n throw new Error('invalid increment argument: identifier already exists')\n }\n this.prerelease.push(base)\n }\n }\n if (identifier) {\n // 1.2.0-beta.1 bumps to 1.2.0-beta.2,\n // 1.2.0-beta.fooblz or 1.2.0-beta bumps to 1.2.0-beta.0\n let prerelease = [identifier, base]\n if (identifierBase === false) {\n prerelease = [identifier]\n }\n if (compareIdentifiers(this.prerelease[0], identifier) === 0) {\n if (isNaN(this.prerelease[1])) {\n this.prerelease = prerelease\n }\n } else {\n this.prerelease = prerelease\n }\n }\n break\n }\n default:\n throw new Error(`invalid increment argument: ${release}`)\n }\n this.raw = this.format()\n if (this.build.length) {\n this.raw += `+${this.build.join('.')}`\n }\n return this\n }\n}\n\nmodule.exports = SemVer\n","'use strict'\n\nconst SemVer = require('../classes/semver')\nconst parse = (version, options, throwErrors = false) => {\n if (version instanceof SemVer) {\n return version\n }\n try {\n return new SemVer(version, options)\n } catch (er) {\n if (!throwErrors) {\n return null\n }\n throw er\n }\n}\n\nmodule.exports = parse\n","'use strict'\n\nconst parse = require('./parse')\nconst valid = (version, options) => {\n const v = parse(version, options)\n return v ? v.version : null\n}\nmodule.exports = valid\n","'use strict'\n\nconst parse = require('./parse')\nconst clean = (version, options) => {\n const s = parse(version.trim().replace(/^[=v]+/, ''), options)\n return s ? s.version : null\n}\nmodule.exports = clean\n","'use strict'\n\nconst SemVer = require('../classes/semver')\n\nconst inc = (version, release, options, identifier, identifierBase) => {\n if (typeof (options) === 'string') {\n identifierBase = identifier\n identifier = options\n options = undefined\n }\n\n try {\n return new SemVer(\n version instanceof SemVer ? version.version : version,\n options\n ).inc(release, identifier, identifierBase).version\n } catch (er) {\n return null\n }\n}\nmodule.exports = inc\n","'use strict'\n\nconst parse = require('./parse.js')\n\nconst diff = (version1, version2) => {\n const v1 = parse(version1, null, true)\n const v2 = parse(version2, null, true)\n const comparison = v1.compare(v2)\n\n if (comparison === 0) {\n return null\n }\n\n const v1Higher = comparison > 0\n const highVersion = v1Higher ? v1 : v2\n const lowVersion = v1Higher ? v2 : v1\n const highHasPre = !!highVersion.prerelease.length\n const lowHasPre = !!lowVersion.prerelease.length\n\n if (lowHasPre && !highHasPre) {\n // Going from prerelease -> no prerelease requires some special casing\n\n // If the low version has only a major, then it will always be a major\n // Some examples:\n // 1.0.0-1 -> 1.0.0\n // 1.0.0-1 -> 1.1.1\n // 1.0.0-1 -> 2.0.0\n if (!lowVersion.patch && !lowVersion.minor) {\n return 'major'\n }\n\n // If the main part has no difference\n if (lowVersion.compareMain(highVersion) === 0) {\n if (lowVersion.minor && !lowVersion.patch) {\n return 'minor'\n }\n return 'patch'\n }\n }\n\n // add the `pre` prefix if we are going to a prerelease version\n const prefix = highHasPre ? 'pre' : ''\n\n if (v1.major !== v2.major) {\n return prefix + 'major'\n }\n\n if (v1.minor !== v2.minor) {\n return prefix + 'minor'\n }\n\n if (v1.patch !== v2.patch) {\n return prefix + 'patch'\n }\n\n // high and low are preleases\n return 'prerelease'\n}\n\nmodule.exports = diff\n","'use strict'\n\nconst SemVer = require('../classes/semver')\nconst major = (a, loose) => new SemVer(a, loose).major\nmodule.exports = major\n","'use strict'\n\nconst SemVer = require('../classes/semver')\nconst minor = (a, loose) => new SemVer(a, loose).minor\nmodule.exports = minor\n","'use strict'\n\nconst SemVer = require('../classes/semver')\nconst patch = (a, loose) => new SemVer(a, loose).patch\nmodule.exports = patch\n","'use strict'\n\nconst parse = require('./parse')\nconst prerelease = (version, options) => {\n const parsed = parse(version, options)\n return (parsed && parsed.prerelease.length) ? parsed.prerelease : null\n}\nmodule.exports = prerelease\n","'use strict'\n\nconst SemVer = require('../classes/semver')\nconst compare = (a, b, loose) =>\n new SemVer(a, loose).compare(new SemVer(b, loose))\n\nmodule.exports = compare\n","'use strict'\n\nconst compare = require('./compare')\nconst rcompare = (a, b, loose) => compare(b, a, loose)\nmodule.exports = rcompare\n","'use strict'\n\nconst compare = require('./compare')\nconst compareLoose = (a, b) => compare(a, b, true)\nmodule.exports = compareLoose\n","'use strict'\n\nconst SemVer = require('../classes/semver')\nconst compareBuild = (a, b, loose) => {\n const versionA = new SemVer(a, loose)\n const versionB = new SemVer(b, loose)\n return versionA.compare(versionB) || versionA.compareBuild(versionB)\n}\nmodule.exports = compareBuild\n","'use strict'\n\nconst compareBuild = require('./compare-build')\nconst sort = (list, loose) => list.sort((a, b) => compareBuild(a, b, loose))\nmodule.exports = sort\n","'use strict'\n\nconst compareBuild = require('./compare-build')\nconst rsort = (list, loose) => list.sort((a, b) => compareBuild(b, a, loose))\nmodule.exports = rsort\n","'use strict'\n\nconst compare = require('./compare')\nconst gt = (a, b, loose) => compare(a, b, loose) > 0\nmodule.exports = gt\n","'use strict'\n\nconst compare = require('./compare')\nconst lt = (a, b, loose) => compare(a, b, loose) < 0\nmodule.exports = lt\n","'use strict'\n\nconst compare = require('./compare')\nconst eq = (a, b, loose) => compare(a, b, loose) === 0\nmodule.exports = eq\n","'use strict'\n\nconst compare = require('./compare')\nconst neq = (a, b, loose) => compare(a, b, loose) !== 0\nmodule.exports = neq\n","'use strict'\n\nconst compare = require('./compare')\nconst gte = (a, b, loose) => compare(a, b, loose) >= 0\nmodule.exports = gte\n","'use strict'\n\nconst compare = require('./compare')\nconst lte = (a, b, loose) => compare(a, b, loose) <= 0\nmodule.exports = lte\n","'use strict'\n\nconst eq = require('./eq')\nconst neq = require('./neq')\nconst gt = require('./gt')\nconst gte = require('./gte')\nconst lt = require('./lt')\nconst lte = require('./lte')\n\nconst cmp = (a, op, b, loose) => {\n switch (op) {\n case '===':\n if (typeof a === 'object') {\n a = a.version\n }\n if (typeof b === 'object') {\n b = b.version\n }\n return a === b\n\n case '!==':\n if (typeof a === 'object') {\n a = a.version\n }\n if (typeof b === 'object') {\n b = b.version\n }\n return a !== b\n\n case '':\n case '=':\n case '==':\n return eq(a, b, loose)\n\n case '!=':\n return neq(a, b, loose)\n\n case '>':\n return gt(a, b, loose)\n\n case '>=':\n return gte(a, b, loose)\n\n case '<':\n return lt(a, b, loose)\n\n case '<=':\n return lte(a, b, loose)\n\n default:\n throw new TypeError(`Invalid operator: ${op}`)\n }\n}\nmodule.exports = cmp\n","'use strict'\n\nconst SemVer = require('../classes/semver')\nconst parse = require('./parse')\nconst { safeRe: re, t } = require('../internal/re')\n\nconst coerce = (version, options) => {\n if (version instanceof SemVer) {\n return version\n }\n\n if (typeof version === 'number') {\n version = String(version)\n }\n\n if (typeof version !== 'string') {\n return null\n }\n\n options = options || {}\n\n let match = null\n if (!options.rtl) {\n match = version.match(options.includePrerelease ? re[t.COERCEFULL] : re[t.COERCE])\n } else {\n // Find the right-most coercible string that does not share\n // a terminus with a more left-ward coercible string.\n // Eg, '1.2.3.4' wants to coerce '2.3.4', not '3.4' or '4'\n // With includePrerelease option set, '1.2.3.4-rc' wants to coerce '2.3.4-rc', not '2.3.4'\n //\n // Walk through the string checking with a /g regexp\n // Manually set the index so as to pick up overlapping matches.\n // Stop when we get a match that ends at the string end, since no\n // coercible string can be more right-ward without the same terminus.\n const coerceRtlRegex = options.includePrerelease ? re[t.COERCERTLFULL] : re[t.COERCERTL]\n let next\n while ((next = coerceRtlRegex.exec(version)) &&\n (!match || match.index + match[0].length !== version.length)\n ) {\n if (!match ||\n next.index + next[0].length !== match.index + match[0].length) {\n match = next\n }\n coerceRtlRegex.lastIndex = next.index + next[1].length + next[2].length\n }\n // leave it in a clean state\n coerceRtlRegex.lastIndex = -1\n }\n\n if (match === null) {\n return null\n }\n\n const major = match[2]\n const minor = match[3] || '0'\n const patch = match[4] || '0'\n const prerelease = options.includePrerelease && match[5] ? `-${match[5]}` : ''\n const build = options.includePrerelease && match[6] ? `+${match[6]}` : ''\n\n return parse(`${major}.${minor}.${patch}${prerelease}${build}`, options)\n}\nmodule.exports = coerce\n","'use strict'\n\nclass LRUCache {\n constructor () {\n this.max = 1000\n this.map = new Map()\n }\n\n get (key) {\n const value = this.map.get(key)\n if (value === undefined) {\n return undefined\n } else {\n // Remove the key from the map and add it to the end\n this.map.delete(key)\n this.map.set(key, value)\n return value\n }\n }\n\n delete (key) {\n return this.map.delete(key)\n }\n\n set (key, value) {\n const deleted = this.delete(key)\n\n if (!deleted && value !== undefined) {\n // If cache is full, delete the least recently used item\n if (this.map.size >= this.max) {\n const firstKey = this.map.keys().next().value\n this.delete(firstKey)\n }\n\n this.map.set(key, value)\n }\n\n return this\n }\n}\n\nmodule.exports = LRUCache\n","'use strict'\n\nconst SPACE_CHARACTERS = /\\s+/g\n\n// hoisted class for cyclic dependency\nclass Range {\n constructor (range, options) {\n options = parseOptions(options)\n\n if (range instanceof Range) {\n if (\n range.loose === !!options.loose &&\n range.includePrerelease === !!options.includePrerelease\n ) {\n return range\n } else {\n return new Range(range.raw, options)\n }\n }\n\n if (range instanceof Comparator) {\n // just put it in the set and return\n this.raw = range.value\n this.set = [[range]]\n this.formatted = undefined\n return this\n }\n\n this.options = options\n this.loose = !!options.loose\n this.includePrerelease = !!options.includePrerelease\n\n // First reduce all whitespace as much as possible so we do not have to rely\n // on potentially slow regexes like \\s*. This is then stored and used for\n // future error messages as well.\n this.raw = range.trim().replace(SPACE_CHARACTERS, ' ')\n\n // First, split on ||\n this.set = this.raw\n .split('||')\n // map the range to a 2d array of comparators\n .map(r => this.parseRange(r.trim()))\n // throw out any comparator lists that are empty\n // this generally means that it was not a valid range, which is allowed\n // in loose mode, but will still throw if the WHOLE range is invalid.\n .filter(c => c.length)\n\n if (!this.set.length) {\n throw new TypeError(`Invalid SemVer Range: ${this.raw}`)\n }\n\n // if we have any that are not the null set, throw out null sets.\n if (this.set.length > 1) {\n // keep the first one, in case they're all null sets\n const first = this.set[0]\n this.set = this.set.filter(c => !isNullSet(c[0]))\n if (this.set.length === 0) {\n this.set = [first]\n } else if (this.set.length > 1) {\n // if we have any that are *, then the range is just *\n for (const c of this.set) {\n if (c.length === 1 && isAny(c[0])) {\n this.set = [c]\n break\n }\n }\n }\n }\n\n this.formatted = undefined\n }\n\n get range () {\n if (this.formatted === undefined) {\n this.formatted = ''\n for (let i = 0; i < this.set.length; i++) {\n if (i > 0) {\n this.formatted += '||'\n }\n const comps = this.set[i]\n for (let k = 0; k < comps.length; k++) {\n if (k > 0) {\n this.formatted += ' '\n }\n this.formatted += comps[k].toString().trim()\n }\n }\n }\n return this.formatted\n }\n\n format () {\n return this.range\n }\n\n toString () {\n return this.range\n }\n\n parseRange (range) {\n // memoize range parsing for performance.\n // this is a very hot path, and fully deterministic.\n const memoOpts =\n (this.options.includePrerelease && FLAG_INCLUDE_PRERELEASE) |\n (this.options.loose && FLAG_LOOSE)\n const memoKey = memoOpts + ':' + range\n const cached = cache.get(memoKey)\n if (cached) {\n return cached\n }\n\n const loose = this.options.loose\n // `1.2.3 - 1.2.4` => `>=1.2.3 <=1.2.4`\n const hr = loose ? re[t.HYPHENRANGELOOSE] : re[t.HYPHENRANGE]\n range = range.replace(hr, hyphenReplace(this.options.includePrerelease))\n debug('hyphen replace', range)\n\n // `> 1.2.3 < 1.2.5` => `>1.2.3 <1.2.5`\n range = range.replace(re[t.COMPARATORTRIM], comparatorTrimReplace)\n debug('comparator trim', range)\n\n // `~ 1.2.3` => `~1.2.3`\n range = range.replace(re[t.TILDETRIM], tildeTrimReplace)\n debug('tilde trim', range)\n\n // `^ 1.2.3` => `^1.2.3`\n range = range.replace(re[t.CARETTRIM], caretTrimReplace)\n debug('caret trim', range)\n\n // At this point, the range is completely trimmed and\n // ready to be split into comparators.\n\n let rangeList = range\n .split(' ')\n .map(comp => parseComparator(comp, this.options))\n .join(' ')\n .split(/\\s+/)\n // >=0.0.0 is equivalent to *\n .map(comp => replaceGTE0(comp, this.options))\n\n if (loose) {\n // in loose mode, throw out any that are not valid comparators\n rangeList = rangeList.filter(comp => {\n debug('loose invalid filter', comp, this.options)\n return !!comp.match(re[t.COMPARATORLOOSE])\n })\n }\n debug('range list', rangeList)\n\n // if any comparators are the null set, then replace with JUST null set\n // if more than one comparator, remove any * comparators\n // also, don't include the same comparator more than once\n const rangeMap = new Map()\n const comparators = rangeList.map(comp => new Comparator(comp, this.options))\n for (const comp of comparators) {\n if (isNullSet(comp)) {\n return [comp]\n }\n rangeMap.set(comp.value, comp)\n }\n if (rangeMap.size > 1 && rangeMap.has('')) {\n rangeMap.delete('')\n }\n\n const result = [...rangeMap.values()]\n cache.set(memoKey, result)\n return result\n }\n\n intersects (range, options) {\n if (!(range instanceof Range)) {\n throw new TypeError('a Range is required')\n }\n\n return this.set.some((thisComparators) => {\n return (\n isSatisfiable(thisComparators, options) &&\n range.set.some((rangeComparators) => {\n return (\n isSatisfiable(rangeComparators, options) &&\n thisComparators.every((thisComparator) => {\n return rangeComparators.every((rangeComparator) => {\n return thisComparator.intersects(rangeComparator, options)\n })\n })\n )\n })\n )\n })\n }\n\n // if ANY of the sets match ALL of its comparators, then pass\n test (version) {\n if (!version) {\n return false\n }\n\n if (typeof version === 'string') {\n try {\n version = new SemVer(version, this.options)\n } catch (er) {\n return false\n }\n }\n\n for (let i = 0; i < this.set.length; i++) {\n if (testSet(this.set[i], version, this.options)) {\n return true\n }\n }\n return false\n }\n}\n\nmodule.exports = Range\n\nconst LRU = require('../internal/lrucache')\nconst cache = new LRU()\n\nconst parseOptions = require('../internal/parse-options')\nconst Comparator = require('./comparator')\nconst debug = require('../internal/debug')\nconst SemVer = require('./semver')\nconst {\n safeRe: re,\n t,\n comparatorTrimReplace,\n tildeTrimReplace,\n caretTrimReplace,\n} = require('../internal/re')\nconst { FLAG_INCLUDE_PRERELEASE, FLAG_LOOSE } = require('../internal/constants')\n\nconst isNullSet = c => c.value === '<0.0.0-0'\nconst isAny = c => c.value === ''\n\n// take a set of comparators and determine whether there\n// exists a version which can satisfy it\nconst isSatisfiable = (comparators, options) => {\n let result = true\n const remainingComparators = comparators.slice()\n let testComparator = remainingComparators.pop()\n\n while (result && remainingComparators.length) {\n result = remainingComparators.every((otherComparator) => {\n return testComparator.intersects(otherComparator, options)\n })\n\n testComparator = remainingComparators.pop()\n }\n\n return result\n}\n\n// comprised of xranges, tildes, stars, and gtlt's at this point.\n// already replaced the hyphen ranges\n// turn into a set of JUST comparators.\nconst parseComparator = (comp, options) => {\n comp = comp.replace(re[t.BUILD], '')\n debug('comp', comp, options)\n comp = replaceCarets(comp, options)\n debug('caret', comp)\n comp = replaceTildes(comp, options)\n debug('tildes', comp)\n comp = replaceXRanges(comp, options)\n debug('xrange', comp)\n comp = replaceStars(comp, options)\n debug('stars', comp)\n return comp\n}\n\nconst isX = id => !id || id.toLowerCase() === 'x' || id === '*'\n\n// ~, ~> --> * (any, kinda silly)\n// ~2, ~2.x, ~2.x.x, ~>2, ~>2.x ~>2.x.x --> >=2.0.0 <3.0.0-0\n// ~2.0, ~2.0.x, ~>2.0, ~>2.0.x --> >=2.0.0 <2.1.0-0\n// ~1.2, ~1.2.x, ~>1.2, ~>1.2.x --> >=1.2.0 <1.3.0-0\n// ~1.2.3, ~>1.2.3 --> >=1.2.3 <1.3.0-0\n// ~1.2.0, ~>1.2.0 --> >=1.2.0 <1.3.0-0\n// ~0.0.1 --> >=0.0.1 <0.1.0-0\nconst replaceTildes = (comp, options) => {\n return comp\n .trim()\n .split(/\\s+/)\n .map((c) => replaceTilde(c, options))\n .join(' ')\n}\n\nconst replaceTilde = (comp, options) => {\n const r = options.loose ? re[t.TILDELOOSE] : re[t.TILDE]\n return comp.replace(r, (_, M, m, p, pr) => {\n debug('tilde', comp, _, M, m, p, pr)\n let ret\n\n if (isX(M)) {\n ret = ''\n } else if (isX(m)) {\n ret = `>=${M}.0.0 <${+M + 1}.0.0-0`\n } else if (isX(p)) {\n // ~1.2 == >=1.2.0 <1.3.0-0\n ret = `>=${M}.${m}.0 <${M}.${+m + 1}.0-0`\n } else if (pr) {\n debug('replaceTilde pr', pr)\n ret = `>=${M}.${m}.${p}-${pr\n } <${M}.${+m + 1}.0-0`\n } else {\n // ~1.2.3 == >=1.2.3 <1.3.0-0\n ret = `>=${M}.${m}.${p\n } <${M}.${+m + 1}.0-0`\n }\n\n debug('tilde return', ret)\n return ret\n })\n}\n\n// ^ --> * (any, kinda silly)\n// ^2, ^2.x, ^2.x.x --> >=2.0.0 <3.0.0-0\n// ^2.0, ^2.0.x --> >=2.0.0 <3.0.0-0\n// ^1.2, ^1.2.x --> >=1.2.0 <2.0.0-0\n// ^1.2.3 --> >=1.2.3 <2.0.0-0\n// ^1.2.0 --> >=1.2.0 <2.0.0-0\n// ^0.0.1 --> >=0.0.1 <0.0.2-0\n// ^0.1.0 --> >=0.1.0 <0.2.0-0\nconst replaceCarets = (comp, options) => {\n return comp\n .trim()\n .split(/\\s+/)\n .map((c) => replaceCaret(c, options))\n .join(' ')\n}\n\nconst replaceCaret = (comp, options) => {\n debug('caret', comp, options)\n const r = options.loose ? re[t.CARETLOOSE] : re[t.CARET]\n const z = options.includePrerelease ? '-0' : ''\n return comp.replace(r, (_, M, m, p, pr) => {\n debug('caret', comp, _, M, m, p, pr)\n let ret\n\n if (isX(M)) {\n ret = ''\n } else if (isX(m)) {\n ret = `>=${M}.0.0${z} <${+M + 1}.0.0-0`\n } else if (isX(p)) {\n if (M === '0') {\n ret = `>=${M}.${m}.0${z} <${M}.${+m + 1}.0-0`\n } else {\n ret = `>=${M}.${m}.0${z} <${+M + 1}.0.0-0`\n }\n } else if (pr) {\n debug('replaceCaret pr', pr)\n if (M === '0') {\n if (m === '0') {\n ret = `>=${M}.${m}.${p}-${pr\n } <${M}.${m}.${+p + 1}-0`\n } else {\n ret = `>=${M}.${m}.${p}-${pr\n } <${M}.${+m + 1}.0-0`\n }\n } else {\n ret = `>=${M}.${m}.${p}-${pr\n } <${+M + 1}.0.0-0`\n }\n } else {\n debug('no pr')\n if (M === '0') {\n if (m === '0') {\n ret = `>=${M}.${m}.${p\n }${z} <${M}.${m}.${+p + 1}-0`\n } else {\n ret = `>=${M}.${m}.${p\n }${z} <${M}.${+m + 1}.0-0`\n }\n } else {\n ret = `>=${M}.${m}.${p\n } <${+M + 1}.0.0-0`\n }\n }\n\n debug('caret return', ret)\n return ret\n })\n}\n\nconst replaceXRanges = (comp, options) => {\n debug('replaceXRanges', comp, options)\n return comp\n .split(/\\s+/)\n .map((c) => replaceXRange(c, options))\n .join(' ')\n}\n\nconst replaceXRange = (comp, options) => {\n comp = comp.trim()\n const r = options.loose ? re[t.XRANGELOOSE] : re[t.XRANGE]\n return comp.replace(r, (ret, gtlt, M, m, p, pr) => {\n debug('xRange', comp, ret, gtlt, M, m, p, pr)\n const xM = isX(M)\n const xm = xM || isX(m)\n const xp = xm || isX(p)\n const anyX = xp\n\n if (gtlt === '=' && anyX) {\n gtlt = ''\n }\n\n // if we're including prereleases in the match, then we need\n // to fix this to -0, the lowest possible prerelease value\n pr = options.includePrerelease ? '-0' : ''\n\n if (xM) {\n if (gtlt === '>' || gtlt === '<') {\n // nothing is allowed\n ret = '<0.0.0-0'\n } else {\n // nothing is forbidden\n ret = '*'\n }\n } else if (gtlt && anyX) {\n // we know patch is an x, because we have any x at all.\n // replace X with 0\n if (xm) {\n m = 0\n }\n p = 0\n\n if (gtlt === '>') {\n // >1 => >=2.0.0\n // >1.2 => >=1.3.0\n gtlt = '>='\n if (xm) {\n M = +M + 1\n m = 0\n p = 0\n } else {\n m = +m + 1\n p = 0\n }\n } else if (gtlt === '<=') {\n // <=0.7.x is actually <0.8.0, since any 0.7.x should\n // pass. Similarly, <=7.x is actually <8.0.0, etc.\n gtlt = '<'\n if (xm) {\n M = +M + 1\n } else {\n m = +m + 1\n }\n }\n\n if (gtlt === '<') {\n pr = '-0'\n }\n\n ret = `${gtlt + M}.${m}.${p}${pr}`\n } else if (xm) {\n ret = `>=${M}.0.0${pr} <${+M + 1}.0.0-0`\n } else if (xp) {\n ret = `>=${M}.${m}.0${pr\n } <${M}.${+m + 1}.0-0`\n }\n\n debug('xRange return', ret)\n\n return ret\n })\n}\n\n// Because * is AND-ed with everything else in the comparator,\n// and '' means \"any version\", just remove the *s entirely.\nconst replaceStars = (comp, options) => {\n debug('replaceStars', comp, options)\n // Looseness is ignored here. star is always as loose as it gets!\n return comp\n .trim()\n .replace(re[t.STAR], '')\n}\n\nconst replaceGTE0 = (comp, options) => {\n debug('replaceGTE0', comp, options)\n return comp\n .trim()\n .replace(re[options.includePrerelease ? t.GTE0PRE : t.GTE0], '')\n}\n\n// This function is passed to string.replace(re[t.HYPHENRANGE])\n// M, m, patch, prerelease, build\n// 1.2 - 3.4.5 => >=1.2.0 <=3.4.5\n// 1.2.3 - 3.4 => >=1.2.0 <3.5.0-0 Any 3.4.x will do\n// 1.2 - 3.4 => >=1.2.0 <3.5.0-0\n// TODO build?\nconst hyphenReplace = incPr => ($0,\n from, fM, fm, fp, fpr, fb,\n to, tM, tm, tp, tpr) => {\n if (isX(fM)) {\n from = ''\n } else if (isX(fm)) {\n from = `>=${fM}.0.0${incPr ? '-0' : ''}`\n } else if (isX(fp)) {\n from = `>=${fM}.${fm}.0${incPr ? '-0' : ''}`\n } else if (fpr) {\n from = `>=${from}`\n } else {\n from = `>=${from}${incPr ? '-0' : ''}`\n }\n\n if (isX(tM)) {\n to = ''\n } else if (isX(tm)) {\n to = `<${+tM + 1}.0.0-0`\n } else if (isX(tp)) {\n to = `<${tM}.${+tm + 1}.0-0`\n } else if (tpr) {\n to = `<=${tM}.${tm}.${tp}-${tpr}`\n } else if (incPr) {\n to = `<${tM}.${tm}.${+tp + 1}-0`\n } else {\n to = `<=${to}`\n }\n\n return `${from} ${to}`.trim()\n}\n\nconst testSet = (set, version, options) => {\n for (let i = 0; i < set.length; i++) {\n if (!set[i].test(version)) {\n return false\n }\n }\n\n if (version.prerelease.length && !options.includePrerelease) {\n // Find the set of versions that are allowed to have prereleases\n // For example, ^1.2.3-pr.1 desugars to >=1.2.3-pr.1 <2.0.0\n // That should allow `1.2.3-pr.2` to pass.\n // However, `1.2.4-alpha.notready` should NOT be allowed,\n // even though it's within the range set by the comparators.\n for (let i = 0; i < set.length; i++) {\n debug(set[i].semver)\n if (set[i].semver === Comparator.ANY) {\n continue\n }\n\n if (set[i].semver.prerelease.length > 0) {\n const allowed = set[i].semver\n if (allowed.major === version.major &&\n allowed.minor === version.minor &&\n allowed.patch === version.patch) {\n return true\n }\n }\n }\n\n // Version has a -pre, but it's not one of the ones we like.\n return false\n }\n\n return true\n}\n","'use strict'\n\nconst ANY = Symbol('SemVer ANY')\n// hoisted class for cyclic dependency\nclass Comparator {\n static get ANY () {\n return ANY\n }\n\n constructor (comp, options) {\n options = parseOptions(options)\n\n if (comp instanceof Comparator) {\n if (comp.loose === !!options.loose) {\n return comp\n } else {\n comp = comp.value\n }\n }\n\n comp = comp.trim().split(/\\s+/).join(' ')\n debug('comparator', comp, options)\n this.options = options\n this.loose = !!options.loose\n this.parse(comp)\n\n if (this.semver === ANY) {\n this.value = ''\n } else {\n this.value = this.operator + this.semver.version\n }\n\n debug('comp', this)\n }\n\n parse (comp) {\n const r = this.options.loose ? re[t.COMPARATORLOOSE] : re[t.COMPARATOR]\n const m = comp.match(r)\n\n if (!m) {\n throw new TypeError(`Invalid comparator: ${comp}`)\n }\n\n this.operator = m[1] !== undefined ? m[1] : ''\n if (this.operator === '=') {\n this.operator = ''\n }\n\n // if it literally is just '>' or '' then allow anything.\n if (!m[2]) {\n this.semver = ANY\n } else {\n this.semver = new SemVer(m[2], this.options.loose)\n }\n }\n\n toString () {\n return this.value\n }\n\n test (version) {\n debug('Comparator.test', version, this.options.loose)\n\n if (this.semver === ANY || version === ANY) {\n return true\n }\n\n if (typeof version === 'string') {\n try {\n version = new SemVer(version, this.options)\n } catch (er) {\n return false\n }\n }\n\n return cmp(version, this.operator, this.semver, this.options)\n }\n\n intersects (comp, options) {\n if (!(comp instanceof Comparator)) {\n throw new TypeError('a Comparator is required')\n }\n\n if (this.operator === '') {\n if (this.value === '') {\n return true\n }\n return new Range(comp.value, options).test(this.value)\n } else if (comp.operator === '') {\n if (comp.value === '') {\n return true\n }\n return new Range(this.value, options).test(comp.semver)\n }\n\n options = parseOptions(options)\n\n // Special cases where nothing can possibly be lower\n if (options.includePrerelease &&\n (this.value === '<0.0.0-0' || comp.value === '<0.0.0-0')) {\n return false\n }\n if (!options.includePrerelease &&\n (this.value.startsWith('<0.0.0') || comp.value.startsWith('<0.0.0'))) {\n return false\n }\n\n // Same direction increasing (> or >=)\n if (this.operator.startsWith('>') && comp.operator.startsWith('>')) {\n return true\n }\n // Same direction decreasing (< or <=)\n if (this.operator.startsWith('<') && comp.operator.startsWith('<')) {\n return true\n }\n // same SemVer and both sides are inclusive (<= or >=)\n if (\n (this.semver.version === comp.semver.version) &&\n this.operator.includes('=') && comp.operator.includes('=')) {\n return true\n }\n // opposite directions less than\n if (cmp(this.semver, '<', comp.semver, options) &&\n this.operator.startsWith('>') && comp.operator.startsWith('<')) {\n return true\n }\n // opposite directions greater than\n if (cmp(this.semver, '>', comp.semver, options) &&\n this.operator.startsWith('<') && comp.operator.startsWith('>')) {\n return true\n }\n return false\n }\n}\n\nmodule.exports = Comparator\n\nconst parseOptions = require('../internal/parse-options')\nconst { safeRe: re, t } = require('../internal/re')\nconst cmp = require('../functions/cmp')\nconst debug = require('../internal/debug')\nconst SemVer = require('./semver')\nconst Range = require('./range')\n","'use strict'\n\nconst Range = require('../classes/range')\nconst satisfies = (version, range, options) => {\n try {\n range = new Range(range, options)\n } catch (er) {\n return false\n }\n return range.test(version)\n}\nmodule.exports = satisfies\n","'use strict'\n\nconst Range = require('../classes/range')\n\n// Mostly just for testing and legacy API reasons\nconst toComparators = (range, options) =>\n new Range(range, options).set\n .map(comp => comp.map(c => c.value).join(' ').trim().split(' '))\n\nmodule.exports = toComparators\n","'use strict'\n\nconst SemVer = require('../classes/semver')\nconst Range = require('../classes/range')\n\nconst maxSatisfying = (versions, range, options) => {\n let max = null\n let maxSV = null\n let rangeObj = null\n try {\n rangeObj = new Range(range, options)\n } catch (er) {\n return null\n }\n versions.forEach((v) => {\n if (rangeObj.test(v)) {\n // satisfies(v, range, options)\n if (!max || maxSV.compare(v) === -1) {\n // compare(max, v, true)\n max = v\n maxSV = new SemVer(max, options)\n }\n }\n })\n return max\n}\nmodule.exports = maxSatisfying\n","'use strict'\n\nconst SemVer = require('../classes/semver')\nconst Range = require('../classes/range')\nconst minSatisfying = (versions, range, options) => {\n let min = null\n let minSV = null\n let rangeObj = null\n try {\n rangeObj = new Range(range, options)\n } catch (er) {\n return null\n }\n versions.forEach((v) => {\n if (rangeObj.test(v)) {\n // satisfies(v, range, options)\n if (!min || minSV.compare(v) === 1) {\n // compare(min, v, true)\n min = v\n minSV = new SemVer(min, options)\n }\n }\n })\n return min\n}\nmodule.exports = minSatisfying\n","'use strict'\n\nconst SemVer = require('../classes/semver')\nconst Range = require('../classes/range')\nconst gt = require('../functions/gt')\n\nconst minVersion = (range, loose) => {\n range = new Range(range, loose)\n\n let minver = new SemVer('0.0.0')\n if (range.test(minver)) {\n return minver\n }\n\n minver = new SemVer('0.0.0-0')\n if (range.test(minver)) {\n return minver\n }\n\n minver = null\n for (let i = 0; i < range.set.length; ++i) {\n const comparators = range.set[i]\n\n let setMin = null\n comparators.forEach((comparator) => {\n // Clone to avoid manipulating the comparator's semver object.\n const compver = new SemVer(comparator.semver.version)\n switch (comparator.operator) {\n case '>':\n if (compver.prerelease.length === 0) {\n compver.patch++\n } else {\n compver.prerelease.push(0)\n }\n compver.raw = compver.format()\n /* fallthrough */\n case '':\n case '>=':\n if (!setMin || gt(compver, setMin)) {\n setMin = compver\n }\n break\n case '<':\n case '<=':\n /* Ignore maximum versions */\n break\n /* istanbul ignore next */\n default:\n throw new Error(`Unexpected operation: ${comparator.operator}`)\n }\n })\n if (setMin && (!minver || gt(minver, setMin))) {\n minver = setMin\n }\n }\n\n if (minver && range.test(minver)) {\n return minver\n }\n\n return null\n}\nmodule.exports = minVersion\n","'use strict'\n\nconst Range = require('../classes/range')\nconst validRange = (range, options) => {\n try {\n // Return '*' instead of '' so that truthiness works.\n // This will throw if it's invalid anyway\n return new Range(range, options).range || '*'\n } catch (er) {\n return null\n }\n}\nmodule.exports = validRange\n","'use strict'\n\nconst SemVer = require('../classes/semver')\nconst Comparator = require('../classes/comparator')\nconst { ANY } = Comparator\nconst Range = require('../classes/range')\nconst satisfies = require('../functions/satisfies')\nconst gt = require('../functions/gt')\nconst lt = require('../functions/lt')\nconst lte = require('../functions/lte')\nconst gte = require('../functions/gte')\n\nconst outside = (version, range, hilo, options) => {\n version = new SemVer(version, options)\n range = new Range(range, options)\n\n let gtfn, ltefn, ltfn, comp, ecomp\n switch (hilo) {\n case '>':\n gtfn = gt\n ltefn = lte\n ltfn = lt\n comp = '>'\n ecomp = '>='\n break\n case '<':\n gtfn = lt\n ltefn = gte\n ltfn = gt\n comp = '<'\n ecomp = '<='\n break\n default:\n throw new TypeError('Must provide a hilo val of \"<\" or \">\"')\n }\n\n // If it satisfies the range it is not outside\n if (satisfies(version, range, options)) {\n return false\n }\n\n // From now on, variable terms are as if we're in \"gtr\" mode.\n // but note that everything is flipped for the \"ltr\" function.\n\n for (let i = 0; i < range.set.length; ++i) {\n const comparators = range.set[i]\n\n let high = null\n let low = null\n\n comparators.forEach((comparator) => {\n if (comparator.semver === ANY) {\n comparator = new Comparator('>=0.0.0')\n }\n high = high || comparator\n low = low || comparator\n if (gtfn(comparator.semver, high.semver, options)) {\n high = comparator\n } else if (ltfn(comparator.semver, low.semver, options)) {\n low = comparator\n }\n })\n\n // If the edge version comparator has a operator then our version\n // isn't outside it\n if (high.operator === comp || high.operator === ecomp) {\n return false\n }\n\n // If the lowest version comparator has an operator and our version\n // is less than it then it isn't higher than the range\n if ((!low.operator || low.operator === comp) &&\n ltefn(version, low.semver)) {\n return false\n } else if (low.operator === ecomp && ltfn(version, low.semver)) {\n return false\n }\n }\n return true\n}\n\nmodule.exports = outside\n","'use strict'\n\n// Determine if version is greater than all the versions possible in the range.\nconst outside = require('./outside')\nconst gtr = (version, range, options) => outside(version, range, '>', options)\nmodule.exports = gtr\n","'use strict'\n\nconst outside = require('./outside')\n// Determine if version is less than all the versions possible in the range\nconst ltr = (version, range, options) => outside(version, range, '<', options)\nmodule.exports = ltr\n","'use strict'\n\nconst Range = require('../classes/range')\nconst intersects = (r1, r2, options) => {\n r1 = new Range(r1, options)\n r2 = new Range(r2, options)\n return r1.intersects(r2, options)\n}\nmodule.exports = intersects\n","'use strict'\n\n// given a set of versions and a range, create a \"simplified\" range\n// that includes the same versions that the original range does\n// If the original range is shorter than the simplified one, return that.\nconst satisfies = require('../functions/satisfies.js')\nconst compare = require('../functions/compare.js')\nmodule.exports = (versions, range, options) => {\n const set = []\n let first = null\n let prev = null\n const v = versions.sort((a, b) => compare(a, b, options))\n for (const version of v) {\n const included = satisfies(version, range, options)\n if (included) {\n prev = version\n if (!first) {\n first = version\n }\n } else {\n if (prev) {\n set.push([first, prev])\n }\n prev = null\n first = null\n }\n }\n if (first) {\n set.push([first, null])\n }\n\n const ranges = []\n for (const [min, max] of set) {\n if (min === max) {\n ranges.push(min)\n } else if (!max && min === v[0]) {\n ranges.push('*')\n } else if (!max) {\n ranges.push(`>=${min}`)\n } else if (min === v[0]) {\n ranges.push(`<=${max}`)\n } else {\n ranges.push(`${min} - ${max}`)\n }\n }\n const simplified = ranges.join(' || ')\n const original = typeof range.raw === 'string' ? range.raw : String(range)\n return simplified.length < original.length ? simplified : range\n}\n","'use strict'\n\nconst Range = require('../classes/range.js')\nconst Comparator = require('../classes/comparator.js')\nconst { ANY } = Comparator\nconst satisfies = require('../functions/satisfies.js')\nconst compare = require('../functions/compare.js')\n\n// Complex range `r1 || r2 || ...` is a subset of `R1 || R2 || ...` iff:\n// - Every simple range `r1, r2, ...` is a null set, OR\n// - Every simple range `r1, r2, ...` which is not a null set is a subset of\n// some `R1, R2, ...`\n//\n// Simple range `c1 c2 ...` is a subset of simple range `C1 C2 ...` iff:\n// - If c is only the ANY comparator\n// - If C is only the ANY comparator, return true\n// - Else if in prerelease mode, return false\n// - else replace c with `[>=0.0.0]`\n// - If C is only the ANY comparator\n// - if in prerelease mode, return true\n// - else replace C with `[>=0.0.0]`\n// - Let EQ be the set of = comparators in c\n// - If EQ is more than one, return true (null set)\n// - Let GT be the highest > or >= comparator in c\n// - Let LT be the lowest < or <= comparator in c\n// - If GT and LT, and GT.semver > LT.semver, return true (null set)\n// - If any C is a = range, and GT or LT are set, return false\n// - If EQ\n// - If GT, and EQ does not satisfy GT, return true (null set)\n// - If LT, and EQ does not satisfy LT, return true (null set)\n// - If EQ satisfies every C, return true\n// - Else return false\n// - If GT\n// - If GT.semver is lower than any > or >= comp in C, return false\n// - If GT is >=, and GT.semver does not satisfy every C, return false\n// - If GT.semver has a prerelease, and not in prerelease mode\n// - If no C has a prerelease and the GT.semver tuple, return false\n// - If LT\n// - If LT.semver is greater than any < or <= comp in C, return false\n// - If LT is <=, and LT.semver does not satisfy every C, return false\n// - If GT.semver has a prerelease, and not in prerelease mode\n// - If no C has a prerelease and the LT.semver tuple, return false\n// - Else return true\n\nconst subset = (sub, dom, options = {}) => {\n if (sub === dom) {\n return true\n }\n\n sub = new Range(sub, options)\n dom = new Range(dom, options)\n let sawNonNull = false\n\n OUTER: for (const simpleSub of sub.set) {\n for (const simpleDom of dom.set) {\n const isSub = simpleSubset(simpleSub, simpleDom, options)\n sawNonNull = sawNonNull || isSub !== null\n if (isSub) {\n continue OUTER\n }\n }\n // the null set is a subset of everything, but null simple ranges in\n // a complex range should be ignored. so if we saw a non-null range,\n // then we know this isn't a subset, but if EVERY simple range was null,\n // then it is a subset.\n if (sawNonNull) {\n return false\n }\n }\n return true\n}\n\nconst minimumVersionWithPreRelease = [new Comparator('>=0.0.0-0')]\nconst minimumVersion = [new Comparator('>=0.0.0')]\n\nconst simpleSubset = (sub, dom, options) => {\n if (sub === dom) {\n return true\n }\n\n if (sub.length === 1 && sub[0].semver === ANY) {\n if (dom.length === 1 && dom[0].semver === ANY) {\n return true\n } else if (options.includePrerelease) {\n sub = minimumVersionWithPreRelease\n } else {\n sub = minimumVersion\n }\n }\n\n if (dom.length === 1 && dom[0].semver === ANY) {\n if (options.includePrerelease) {\n return true\n } else {\n dom = minimumVersion\n }\n }\n\n const eqSet = new Set()\n let gt, lt\n for (const c of sub) {\n if (c.operator === '>' || c.operator === '>=') {\n gt = higherGT(gt, c, options)\n } else if (c.operator === '<' || c.operator === '<=') {\n lt = lowerLT(lt, c, options)\n } else {\n eqSet.add(c.semver)\n }\n }\n\n if (eqSet.size > 1) {\n return null\n }\n\n let gtltComp\n if (gt && lt) {\n gtltComp = compare(gt.semver, lt.semver, options)\n if (gtltComp > 0) {\n return null\n } else if (gtltComp === 0 && (gt.operator !== '>=' || lt.operator !== '<=')) {\n return null\n }\n }\n\n // will iterate one or zero times\n for (const eq of eqSet) {\n if (gt && !satisfies(eq, String(gt), options)) {\n return null\n }\n\n if (lt && !satisfies(eq, String(lt), options)) {\n return null\n }\n\n for (const c of dom) {\n if (!satisfies(eq, String(c), options)) {\n return false\n }\n }\n\n return true\n }\n\n let higher, lower\n let hasDomLT, hasDomGT\n // if the subset has a prerelease, we need a comparator in the superset\n // with the same tuple and a prerelease, or it's not a subset\n let needDomLTPre = lt &&\n !options.includePrerelease &&\n lt.semver.prerelease.length ? lt.semver : false\n let needDomGTPre = gt &&\n !options.includePrerelease &&\n gt.semver.prerelease.length ? gt.semver : false\n // exception: <1.2.3-0 is the same as <1.2.3\n if (needDomLTPre && needDomLTPre.prerelease.length === 1 &&\n lt.operator === '<' && needDomLTPre.prerelease[0] === 0) {\n needDomLTPre = false\n }\n\n for (const c of dom) {\n hasDomGT = hasDomGT || c.operator === '>' || c.operator === '>='\n hasDomLT = hasDomLT || c.operator === '<' || c.operator === '<='\n if (gt) {\n if (needDomGTPre) {\n if (c.semver.prerelease && c.semver.prerelease.length &&\n c.semver.major === needDomGTPre.major &&\n c.semver.minor === needDomGTPre.minor &&\n c.semver.patch === needDomGTPre.patch) {\n needDomGTPre = false\n }\n }\n if (c.operator === '>' || c.operator === '>=') {\n higher = higherGT(gt, c, options)\n if (higher === c && higher !== gt) {\n return false\n }\n } else if (gt.operator === '>=' && !satisfies(gt.semver, String(c), options)) {\n return false\n }\n }\n if (lt) {\n if (needDomLTPre) {\n if (c.semver.prerelease && c.semver.prerelease.length &&\n c.semver.major === needDomLTPre.major &&\n c.semver.minor === needDomLTPre.minor &&\n c.semver.patch === needDomLTPre.patch) {\n needDomLTPre = false\n }\n }\n if (c.operator === '<' || c.operator === '<=') {\n lower = lowerLT(lt, c, options)\n if (lower === c && lower !== lt) {\n return false\n }\n } else if (lt.operator === '<=' && !satisfies(lt.semver, String(c), options)) {\n return false\n }\n }\n if (!c.operator && (lt || gt) && gtltComp !== 0) {\n return false\n }\n }\n\n // if there was a < or >, and nothing in the dom, then must be false\n // UNLESS it was limited by another range in the other direction.\n // Eg, >1.0.0 <1.0.1 is still a subset of <2.0.0\n if (gt && hasDomLT && !lt && gtltComp !== 0) {\n return false\n }\n\n if (lt && hasDomGT && !gt && gtltComp !== 0) {\n return false\n }\n\n // we needed a prerelease range in a specific tuple, but didn't get one\n // then this isn't a subset. eg >=1.2.3-pre is not a subset of >=1.0.0,\n // because it includes prereleases in the 1.2.3 tuple\n if (needDomGTPre || needDomLTPre) {\n return false\n }\n\n return true\n}\n\n// >=1.2.3 is lower than >1.2.3\nconst higherGT = (a, b, options) => {\n if (!a) {\n return b\n }\n const comp = compare(a.semver, b.semver, options)\n return comp > 0 ? a\n : comp < 0 ? b\n : b.operator === '>' && a.operator === '>=' ? b\n : a\n}\n\n// <=1.2.3 is higher than <1.2.3\nconst lowerLT = (a, b, options) => {\n if (!a) {\n return b\n }\n const comp = compare(a.semver, b.semver, options)\n return comp < 0 ? a\n : comp > 0 ? b\n : b.operator === '<' && a.operator === '<=' ? b\n : a\n}\n\nmodule.exports = subset\n","'use strict'\n\n// just pre-load all the stuff that index.js lazily exports\nconst internalRe = require('./internal/re')\nconst constants = require('./internal/constants')\nconst SemVer = require('./classes/semver')\nconst identifiers = require('./internal/identifiers')\nconst parse = require('./functions/parse')\nconst valid = require('./functions/valid')\nconst clean = require('./functions/clean')\nconst inc = require('./functions/inc')\nconst diff = require('./functions/diff')\nconst major = require('./functions/major')\nconst minor = require('./functions/minor')\nconst patch = require('./functions/patch')\nconst prerelease = require('./functions/prerelease')\nconst compare = require('./functions/compare')\nconst rcompare = require('./functions/rcompare')\nconst compareLoose = require('./functions/compare-loose')\nconst compareBuild = require('./functions/compare-build')\nconst sort = require('./functions/sort')\nconst rsort = require('./functions/rsort')\nconst gt = require('./functions/gt')\nconst lt = require('./functions/lt')\nconst eq = require('./functions/eq')\nconst neq = require('./functions/neq')\nconst gte = require('./functions/gte')\nconst lte = require('./functions/lte')\nconst cmp = require('./functions/cmp')\nconst coerce = require('./functions/coerce')\nconst Comparator = require('./classes/comparator')\nconst Range = require('./classes/range')\nconst satisfies = require('./functions/satisfies')\nconst toComparators = require('./ranges/to-comparators')\nconst maxSatisfying = require('./ranges/max-satisfying')\nconst minSatisfying = require('./ranges/min-satisfying')\nconst minVersion = require('./ranges/min-version')\nconst validRange = require('./ranges/valid')\nconst outside = require('./ranges/outside')\nconst gtr = require('./ranges/gtr')\nconst ltr = require('./ranges/ltr')\nconst intersects = require('./ranges/intersects')\nconst simplifyRange = require('./ranges/simplify')\nconst subset = require('./ranges/subset')\nmodule.exports = {\n parse,\n valid,\n clean,\n inc,\n diff,\n major,\n minor,\n patch,\n prerelease,\n compare,\n rcompare,\n compareLoose,\n compareBuild,\n sort,\n rsort,\n gt,\n lt,\n eq,\n neq,\n gte,\n lte,\n cmp,\n coerce,\n Comparator,\n Range,\n satisfies,\n toComparators,\n maxSatisfying,\n minSatisfying,\n minVersion,\n validRange,\n outside,\n gtr,\n ltr,\n intersects,\n simplifyRange,\n subset,\n SemVer,\n re: internalRe.re,\n src: internalRe.src,\n tokens: internalRe.t,\n SEMVER_SPEC_VERSION: constants.SEMVER_SPEC_VERSION,\n RELEASE_TYPES: constants.RELEASE_TYPES,\n compareIdentifiers: identifiers.compareIdentifiers,\n rcompareIdentifiers: identifiers.rcompareIdentifiers,\n}\n","const semver = require('semver');\n\nmodule.exports = semver.satisfies(process.version, '>=15.7.0');\n","const semver = require('semver');\n\nmodule.exports = semver.satisfies(process.version, '>=16.9.0');\n","const ASYMMETRIC_KEY_DETAILS_SUPPORTED = require('./asymmetricKeyDetailsSupported');\nconst RSA_PSS_KEY_DETAILS_SUPPORTED = require('./rsaPssKeyDetailsSupported');\n\nconst allowedAlgorithmsForKeys = {\n 'ec': ['ES256', 'ES384', 'ES512'],\n 'rsa': ['RS256', 'PS256', 'RS384', 'PS384', 'RS512', 'PS512'],\n 'rsa-pss': ['PS256', 'PS384', 'PS512']\n};\n\nconst allowedCurves = {\n ES256: 'prime256v1',\n ES384: 'secp384r1',\n ES512: 'secp521r1',\n};\n\nmodule.exports = function(algorithm, key) {\n if (!algorithm || !key) return;\n\n const keyType = key.asymmetricKeyType;\n if (!keyType) return;\n\n const allowedAlgorithms = allowedAlgorithmsForKeys[keyType];\n\n if (!allowedAlgorithms) {\n throw new Error(`Unknown key type \"${keyType}\".`);\n }\n\n if (!allowedAlgorithms.includes(algorithm)) {\n throw new Error(`\"alg\" parameter for \"${keyType}\" key type must be one of: ${allowedAlgorithms.join(', ')}.`)\n }\n\n /*\n * Ignore the next block from test coverage because it gets executed\n * conditionally depending on the Node version. Not ignoring it would\n * prevent us from reaching the target % of coverage for versions of\n * Node under 15.7.0.\n */\n /* istanbul ignore next */\n if (ASYMMETRIC_KEY_DETAILS_SUPPORTED) {\n switch (keyType) {\n case 'ec':\n const keyCurve = key.asymmetricKeyDetails.namedCurve;\n const allowedCurve = allowedCurves[algorithm];\n\n if (keyCurve !== allowedCurve) {\n throw new Error(`\"alg\" parameter \"${algorithm}\" requires curve \"${allowedCurve}\".`);\n }\n break;\n\n case 'rsa-pss':\n if (RSA_PSS_KEY_DETAILS_SUPPORTED) {\n const length = parseInt(algorithm.slice(-3), 10);\n const { hashAlgorithm, mgf1HashAlgorithm, saltLength } = key.asymmetricKeyDetails;\n\n if (hashAlgorithm !== `sha${length}` || mgf1HashAlgorithm !== hashAlgorithm) {\n throw new Error(`Invalid key for this operation, its RSA-PSS parameters do not meet the requirements of \"alg\" ${algorithm}.`);\n }\n\n if (saltLength !== undefined && saltLength > length >> 3) {\n throw new Error(`Invalid key for this operation, its RSA-PSS parameter saltLength does not meet the requirements of \"alg\" ${algorithm}.`)\n }\n }\n break;\n }\n }\n}\n","var semver = require('semver');\n\nmodule.exports = semver.satisfies(process.version, '^6.12.0 || >=8.0.0');\n","const JsonWebTokenError = require('./lib/JsonWebTokenError');\nconst NotBeforeError = require('./lib/NotBeforeError');\nconst TokenExpiredError = require('./lib/TokenExpiredError');\nconst decode = require('./decode');\nconst timespan = require('./lib/timespan');\nconst validateAsymmetricKey = require('./lib/validateAsymmetricKey');\nconst PS_SUPPORTED = require('./lib/psSupported');\nconst jws = require('jws');\nconst {KeyObject, createSecretKey, createPublicKey} = require(\"crypto\");\n\nconst PUB_KEY_ALGS = ['RS256', 'RS384', 'RS512'];\nconst EC_KEY_ALGS = ['ES256', 'ES384', 'ES512'];\nconst RSA_KEY_ALGS = ['RS256', 'RS384', 'RS512'];\nconst HS_ALGS = ['HS256', 'HS384', 'HS512'];\n\nif (PS_SUPPORTED) {\n PUB_KEY_ALGS.splice(PUB_KEY_ALGS.length, 0, 'PS256', 'PS384', 'PS512');\n RSA_KEY_ALGS.splice(RSA_KEY_ALGS.length, 0, 'PS256', 'PS384', 'PS512');\n}\n\nmodule.exports = function (jwtString, secretOrPublicKey, options, callback) {\n if ((typeof options === 'function') && !callback) {\n callback = options;\n options = {};\n }\n\n if (!options) {\n options = {};\n }\n\n //clone this object since we are going to mutate it.\n options = Object.assign({}, options);\n\n let done;\n\n if (callback) {\n done = callback;\n } else {\n done = function(err, data) {\n if (err) throw err;\n return data;\n };\n }\n\n if (options.clockTimestamp && typeof options.clockTimestamp !== 'number') {\n return done(new JsonWebTokenError('clockTimestamp must be a number'));\n }\n\n if (options.nonce !== undefined && (typeof options.nonce !== 'string' || options.nonce.trim() === '')) {\n return done(new JsonWebTokenError('nonce must be a non-empty string'));\n }\n\n if (options.allowInvalidAsymmetricKeyTypes !== undefined && typeof options.allowInvalidAsymmetricKeyTypes !== 'boolean') {\n return done(new JsonWebTokenError('allowInvalidAsymmetricKeyTypes must be a boolean'));\n }\n\n const clockTimestamp = options.clockTimestamp || Math.floor(Date.now() / 1000);\n\n if (!jwtString){\n return done(new JsonWebTokenError('jwt must be provided'));\n }\n\n if (typeof jwtString !== 'string') {\n return done(new JsonWebTokenError('jwt must be a string'));\n }\n\n const parts = jwtString.split('.');\n\n if (parts.length !== 3){\n return done(new JsonWebTokenError('jwt malformed'));\n }\n\n let decodedToken;\n\n try {\n decodedToken = decode(jwtString, { complete: true });\n } catch(err) {\n return done(err);\n }\n\n if (!decodedToken) {\n return done(new JsonWebTokenError('invalid token'));\n }\n\n const header = decodedToken.header;\n let getSecret;\n\n if(typeof secretOrPublicKey === 'function') {\n if(!callback) {\n return done(new JsonWebTokenError('verify must be called asynchronous if secret or public key is provided as a callback'));\n }\n\n getSecret = secretOrPublicKey;\n }\n else {\n getSecret = function(header, secretCallback) {\n return secretCallback(null, secretOrPublicKey);\n };\n }\n\n return getSecret(header, function(err, secretOrPublicKey) {\n if(err) {\n return done(new JsonWebTokenError('error in secret or public key callback: ' + err.message));\n }\n\n const hasSignature = parts[2].trim() !== '';\n\n if (!hasSignature && secretOrPublicKey){\n return done(new JsonWebTokenError('jwt signature is required'));\n }\n\n if (hasSignature && !secretOrPublicKey) {\n return done(new JsonWebTokenError('secret or public key must be provided'));\n }\n\n if (!hasSignature && !options.algorithms) {\n return done(new JsonWebTokenError('please specify \"none\" in \"algorithms\" to verify unsigned tokens'));\n }\n\n if (secretOrPublicKey != null && !(secretOrPublicKey instanceof KeyObject)) {\n try {\n secretOrPublicKey = createPublicKey(secretOrPublicKey);\n } catch (_) {\n try {\n secretOrPublicKey = createSecretKey(typeof secretOrPublicKey === 'string' ? Buffer.from(secretOrPublicKey) : secretOrPublicKey);\n } catch (_) {\n return done(new JsonWebTokenError('secretOrPublicKey is not valid key material'))\n }\n }\n }\n\n if (!options.algorithms) {\n if (secretOrPublicKey.type === 'secret') {\n options.algorithms = HS_ALGS;\n } else if (['rsa', 'rsa-pss'].includes(secretOrPublicKey.asymmetricKeyType)) {\n options.algorithms = RSA_KEY_ALGS\n } else if (secretOrPublicKey.asymmetricKeyType === 'ec') {\n options.algorithms = EC_KEY_ALGS\n } else {\n options.algorithms = PUB_KEY_ALGS\n }\n }\n\n if (options.algorithms.indexOf(decodedToken.header.alg) === -1) {\n return done(new JsonWebTokenError('invalid algorithm'));\n }\n\n if (header.alg.startsWith('HS') && secretOrPublicKey.type !== 'secret') {\n return done(new JsonWebTokenError((`secretOrPublicKey must be a symmetric key when using ${header.alg}`)))\n } else if (/^(?:RS|PS|ES)/.test(header.alg) && secretOrPublicKey.type !== 'public') {\n return done(new JsonWebTokenError((`secretOrPublicKey must be an asymmetric key when using ${header.alg}`)))\n }\n\n if (!options.allowInvalidAsymmetricKeyTypes) {\n try {\n validateAsymmetricKey(header.alg, secretOrPublicKey);\n } catch (e) {\n return done(e);\n }\n }\n\n let valid;\n\n try {\n valid = jws.verify(jwtString, decodedToken.header.alg, secretOrPublicKey);\n } catch (e) {\n return done(e);\n }\n\n if (!valid) {\n return done(new JsonWebTokenError('invalid signature'));\n }\n\n const payload = decodedToken.payload;\n\n if (typeof payload.nbf !== 'undefined' && !options.ignoreNotBefore) {\n if (typeof payload.nbf !== 'number') {\n return done(new JsonWebTokenError('invalid nbf value'));\n }\n if (payload.nbf > clockTimestamp + (options.clockTolerance || 0)) {\n return done(new NotBeforeError('jwt not active', new Date(payload.nbf * 1000)));\n }\n }\n\n if (typeof payload.exp !== 'undefined' && !options.ignoreExpiration) {\n if (typeof payload.exp !== 'number') {\n return done(new JsonWebTokenError('invalid exp value'));\n }\n if (clockTimestamp >= payload.exp + (options.clockTolerance || 0)) {\n return done(new TokenExpiredError('jwt expired', new Date(payload.exp * 1000)));\n }\n }\n\n if (options.audience) {\n const audiences = Array.isArray(options.audience) ? options.audience : [options.audience];\n const target = Array.isArray(payload.aud) ? payload.aud : [payload.aud];\n\n const match = target.some(function (targetAudience) {\n return audiences.some(function (audience) {\n return audience instanceof RegExp ? audience.test(targetAudience) : audience === targetAudience;\n });\n });\n\n if (!match) {\n return done(new JsonWebTokenError('jwt audience invalid. expected: ' + audiences.join(' or ')));\n }\n }\n\n if (options.issuer) {\n const invalid_issuer =\n (typeof options.issuer === 'string' && payload.iss !== options.issuer) ||\n (Array.isArray(options.issuer) && options.issuer.indexOf(payload.iss) === -1);\n\n if (invalid_issuer) {\n return done(new JsonWebTokenError('jwt issuer invalid. expected: ' + options.issuer));\n }\n }\n\n if (options.subject) {\n if (payload.sub !== options.subject) {\n return done(new JsonWebTokenError('jwt subject invalid. expected: ' + options.subject));\n }\n }\n\n if (options.jwtid) {\n if (payload.jti !== options.jwtid) {\n return done(new JsonWebTokenError('jwt jwtid invalid. expected: ' + options.jwtid));\n }\n }\n\n if (options.nonce) {\n if (payload.nonce !== options.nonce) {\n return done(new JsonWebTokenError('jwt nonce invalid. expected: ' + options.nonce));\n }\n }\n\n if (options.maxAge) {\n if (typeof payload.iat !== 'number') {\n return done(new JsonWebTokenError('iat required when maxAge is specified'));\n }\n\n const maxAgeTimestamp = timespan(options.maxAge, payload.iat);\n if (typeof maxAgeTimestamp === 'undefined') {\n return done(new JsonWebTokenError('\"maxAge\" should be a number of seconds or string representing a timespan eg: \"1d\", \"20h\", 60'));\n }\n if (clockTimestamp >= maxAgeTimestamp + (options.clockTolerance || 0)) {\n return done(new TokenExpiredError('maxAge exceeded', new Date(maxAgeTimestamp * 1000)));\n }\n }\n\n if (options.complete === true) {\n const signature = decodedToken.signature;\n\n return done(null, {\n header: header,\n payload: payload,\n signature: signature\n });\n }\n\n return done(null, payload);\n });\n};\n","/**\n * lodash (Custom Build) \n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors \n * Released under MIT license \n * Based on Underscore.js 1.8.3 \n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0,\n MAX_SAFE_INTEGER = 9007199254740991,\n MAX_INTEGER = 1.7976931348623157e+308,\n NAN = 0 / 0;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]';\n\n/** Used to match leading and trailing whitespace. */\nvar reTrim = /^\\s+|\\s+$/g;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\n/**\n * A specialized version of `_.map` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction arrayMap(array, iteratee) {\n var index = -1,\n length = array ? array.length : 0,\n result = Array(length);\n\n while (++index < length) {\n result[index] = iteratee(array[index], index, array);\n }\n return result;\n}\n\n/**\n * The base implementation of `_.findIndex` and `_.findLastIndex` without\n * support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} predicate The function invoked per iteration.\n * @param {number} fromIndex The index to search from.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction baseFindIndex(array, predicate, fromIndex, fromRight) {\n var length = array.length,\n index = fromIndex + (fromRight ? 1 : -1);\n\n while ((fromRight ? index-- : ++index < length)) {\n if (predicate(array[index], index, array)) {\n return index;\n }\n }\n return -1;\n}\n\n/**\n * The base implementation of `_.indexOf` without `fromIndex` bounds checks.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction baseIndexOf(array, value, fromIndex) {\n if (value !== value) {\n return baseFindIndex(array, baseIsNaN, fromIndex);\n }\n var index = fromIndex - 1,\n length = array.length;\n\n while (++index < length) {\n if (array[index] === value) {\n return index;\n }\n }\n return -1;\n}\n\n/**\n * The base implementation of `_.isNaN` without support for number objects.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.\n */\nfunction baseIsNaN(value) {\n return value !== value;\n}\n\n/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n}\n\n/**\n * The base implementation of `_.values` and `_.valuesIn` which creates an\n * array of `object` property values corresponding to the property names\n * of `props`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array} props The property names to get values for.\n * @returns {Object} Returns the array of property values.\n */\nfunction baseValues(object, props) {\n return arrayMap(props, function(key) {\n return object[key];\n });\n}\n\n/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n}\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeKeys = overArg(Object.keys, Object),\n nativeMax = Math.max;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n // Safari 8.1 makes `arguments.callee` enumerable in strict mode.\n // Safari 9 makes `arguments.length` enumerable in strict mode.\n var result = (isArray(value) || isArguments(value))\n ? baseTimes(value.length, String)\n : [];\n\n var length = result.length,\n skipIndexes = !!length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (key == 'length' || isIndex(key, length)))) {\n result.push(key);\n }\n }\n return result;\n}\n\n/**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeys(object) {\n if (!isPrototype(object)) {\n return nativeKeys(object);\n }\n var result = [];\n for (var key in Object(object)) {\n if (hasOwnProperty.call(object, key) && key != 'constructor') {\n result.push(key);\n }\n }\n return result;\n}\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n length = length == null ? MAX_SAFE_INTEGER : length;\n return !!length &&\n (typeof value == 'number' || reIsUint.test(value)) &&\n (value > -1 && value % 1 == 0 && value < length);\n}\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n}\n\n/**\n * Checks if `value` is in `collection`. If `collection` is a string, it's\n * checked for a substring of `value`, otherwise\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * is used for equality comparisons. If `fromIndex` is negative, it's used as\n * the offset from the end of `collection`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object|string} collection The collection to inspect.\n * @param {*} value The value to search for.\n * @param {number} [fromIndex=0] The index to search from.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.reduce`.\n * @returns {boolean} Returns `true` if `value` is found, else `false`.\n * @example\n *\n * _.includes([1, 2, 3], 1);\n * // => true\n *\n * _.includes([1, 2, 3], 1, 2);\n * // => false\n *\n * _.includes({ 'a': 1, 'b': 2 }, 1);\n * // => true\n *\n * _.includes('abcd', 'bc');\n * // => true\n */\nfunction includes(collection, value, fromIndex, guard) {\n collection = isArrayLike(collection) ? collection : values(collection);\n fromIndex = (fromIndex && !guard) ? toInteger(fromIndex) : 0;\n\n var length = collection.length;\n if (fromIndex < 0) {\n fromIndex = nativeMax(length + fromIndex, 0);\n }\n return isString(collection)\n ? (fromIndex <= length && collection.indexOf(value, fromIndex) > -1)\n : (!!length && baseIndexOf(collection, value, fromIndex) > -1);\n}\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nfunction isArguments(value) {\n // Safari 8.1 makes `arguments.callee` enumerable in strict mode.\n return isArrayLikeObject(value) && hasOwnProperty.call(value, 'callee') &&\n (!propertyIsEnumerable.call(value, 'callee') || objectToString.call(value) == argsTag);\n}\n\n/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n}\n\n/**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array-like object,\n * else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\nfunction isArrayLikeObject(value) {\n return isObjectLike(value) && isArrayLike(value);\n}\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 8-9 which returns 'object' for typed array and other constructors.\n var tag = isObject(value) ? objectToString.call(value) : '';\n return tag == funcTag || tag == genTag;\n}\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return !!value && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return !!value && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is classified as a `String` primitive or object.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a string, else `false`.\n * @example\n *\n * _.isString('abc');\n * // => true\n *\n * _.isString(1);\n * // => false\n */\nfunction isString(value) {\n return typeof value == 'string' ||\n (!isArray(value) && isObjectLike(value) && objectToString.call(value) == stringTag);\n}\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && objectToString.call(value) == symbolTag);\n}\n\n/**\n * Converts `value` to a finite number.\n *\n * @static\n * @memberOf _\n * @since 4.12.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted number.\n * @example\n *\n * _.toFinite(3.2);\n * // => 3.2\n *\n * _.toFinite(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toFinite(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toFinite('3.2');\n * // => 3.2\n */\nfunction toFinite(value) {\n if (!value) {\n return value === 0 ? value : 0;\n }\n value = toNumber(value);\n if (value === INFINITY || value === -INFINITY) {\n var sign = (value < 0 ? -1 : 1);\n return sign * MAX_INTEGER;\n }\n return value === value ? value : 0;\n}\n\n/**\n * Converts `value` to an integer.\n *\n * **Note:** This method is loosely based on\n * [`ToInteger`](http://www.ecma-international.org/ecma-262/7.0/#sec-tointeger).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.toInteger(3.2);\n * // => 3\n *\n * _.toInteger(Number.MIN_VALUE);\n * // => 0\n *\n * _.toInteger(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toInteger('3.2');\n * // => 3\n */\nfunction toInteger(value) {\n var result = toFinite(value),\n remainder = result % 1;\n\n return result === result ? (remainder ? result - remainder : result) : 0;\n}\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\nfunction toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? (other + '') : other;\n }\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n value = value.replace(reTrim, '');\n var isBinary = reIsBinary.test(value);\n return (isBinary || reIsOctal.test(value))\n ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n : (reIsBadHex.test(value) ? NAN : +value);\n}\n\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\nfunction keys(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n}\n\n/**\n * Creates an array of the own enumerable string keyed property values of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property values.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.values(new Foo);\n * // => [1, 2] (iteration order is not guaranteed)\n *\n * _.values('hi');\n * // => ['h', 'i']\n */\nfunction values(object) {\n return object ? baseValues(object, keys(object)) : [];\n}\n\nmodule.exports = includes;\n","/**\n * lodash 3.0.3 (Custom Build) \n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright 2012-2016 The Dojo Foundation \n * Based on Underscore.js 1.8.3 \n * Copyright 2009-2016 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n * Available under MIT license \n */\n\n/** `Object#toString` result references. */\nvar boolTag = '[object Boolean]';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/**\n * Checks if `value` is classified as a boolean primitive or object.\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`.\n * @example\n *\n * _.isBoolean(false);\n * // => true\n *\n * _.isBoolean(null);\n * // => false\n */\nfunction isBoolean(value) {\n return value === true || value === false ||\n (isObjectLike(value) && objectToString.call(value) == boolTag);\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return !!value && typeof value == 'object';\n}\n\nmodule.exports = isBoolean;\n","/**\n * lodash (Custom Build) \n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors \n * Released under MIT license \n * Based on Underscore.js 1.8.3 \n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0,\n MAX_INTEGER = 1.7976931348623157e+308,\n NAN = 0 / 0;\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/** Used to match leading and trailing whitespace. */\nvar reTrim = /^\\s+|\\s+$/g;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/**\n * Checks if `value` is an integer.\n *\n * **Note:** This method is based on\n * [`Number.isInteger`](https://mdn.io/Number/isInteger).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an integer, else `false`.\n * @example\n *\n * _.isInteger(3);\n * // => true\n *\n * _.isInteger(Number.MIN_VALUE);\n * // => false\n *\n * _.isInteger(Infinity);\n * // => false\n *\n * _.isInteger('3');\n * // => false\n */\nfunction isInteger(value) {\n return typeof value == 'number' && value == toInteger(value);\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return !!value && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return !!value && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && objectToString.call(value) == symbolTag);\n}\n\n/**\n * Converts `value` to a finite number.\n *\n * @static\n * @memberOf _\n * @since 4.12.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted number.\n * @example\n *\n * _.toFinite(3.2);\n * // => 3.2\n *\n * _.toFinite(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toFinite(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toFinite('3.2');\n * // => 3.2\n */\nfunction toFinite(value) {\n if (!value) {\n return value === 0 ? value : 0;\n }\n value = toNumber(value);\n if (value === INFINITY || value === -INFINITY) {\n var sign = (value < 0 ? -1 : 1);\n return sign * MAX_INTEGER;\n }\n return value === value ? value : 0;\n}\n\n/**\n * Converts `value` to an integer.\n *\n * **Note:** This method is loosely based on\n * [`ToInteger`](http://www.ecma-international.org/ecma-262/7.0/#sec-tointeger).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.toInteger(3.2);\n * // => 3\n *\n * _.toInteger(Number.MIN_VALUE);\n * // => 0\n *\n * _.toInteger(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toInteger('3.2');\n * // => 3\n */\nfunction toInteger(value) {\n var result = toFinite(value),\n remainder = result % 1;\n\n return result === result ? (remainder ? result - remainder : result) : 0;\n}\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\nfunction toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? (other + '') : other;\n }\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n value = value.replace(reTrim, '');\n var isBinary = reIsBinary.test(value);\n return (isBinary || reIsOctal.test(value))\n ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n : (reIsBadHex.test(value) ? NAN : +value);\n}\n\nmodule.exports = isInteger;\n","/**\n * lodash 3.0.3 (Custom Build) \n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright 2012-2016 The Dojo Foundation \n * Based on Underscore.js 1.8.3 \n * Copyright 2009-2016 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n * Available under MIT license \n */\n\n/** `Object#toString` result references. */\nvar numberTag = '[object Number]';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return !!value && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is classified as a `Number` primitive or object.\n *\n * **Note:** To exclude `Infinity`, `-Infinity`, and `NaN`, which are classified\n * as numbers, use the `_.isFinite` method.\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`.\n * @example\n *\n * _.isNumber(3);\n * // => true\n *\n * _.isNumber(Number.MIN_VALUE);\n * // => true\n *\n * _.isNumber(Infinity);\n * // => true\n *\n * _.isNumber('3');\n * // => false\n */\nfunction isNumber(value) {\n return typeof value == 'number' ||\n (isObjectLike(value) && objectToString.call(value) == numberTag);\n}\n\nmodule.exports = isNumber;\n","/**\n * lodash (Custom Build) \n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors \n * Released under MIT license \n * Based on Underscore.js 1.8.3 \n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** `Object#toString` result references. */\nvar objectTag = '[object Object]';\n\n/**\n * Checks if `value` is a host object in IE < 9.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a host object, else `false`.\n */\nfunction isHostObject(value) {\n // Many host objects are `Object` objects that can coerce to strings\n // despite having improperly defined `toString` methods.\n var result = false;\n if (value != null && typeof value.toString != 'function') {\n try {\n result = !!(value + '');\n } catch (e) {}\n }\n return result;\n}\n\n/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n}\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to infer the `Object` constructor. */\nvar objectCtorString = funcToString.call(Object);\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar getPrototype = overArg(Object.getPrototypeOf, Object);\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return !!value && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is a plain object, that is, an object created by the\n * `Object` constructor or one with a `[[Prototype]]` of `null`.\n *\n * @static\n * @memberOf _\n * @since 0.8.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * _.isPlainObject(new Foo);\n * // => false\n *\n * _.isPlainObject([1, 2, 3]);\n * // => false\n *\n * _.isPlainObject({ 'x': 0, 'y': 0 });\n * // => true\n *\n * _.isPlainObject(Object.create(null));\n * // => true\n */\nfunction isPlainObject(value) {\n if (!isObjectLike(value) ||\n objectToString.call(value) != objectTag || isHostObject(value)) {\n return false;\n }\n var proto = getPrototype(value);\n if (proto === null) {\n return true;\n }\n var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor;\n return (typeof Ctor == 'function' &&\n Ctor instanceof Ctor && funcToString.call(Ctor) == objectCtorString);\n}\n\nmodule.exports = isPlainObject;\n","/**\n * lodash 4.0.1 (Custom Build) \n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright 2012-2016 The Dojo Foundation \n * Based on Underscore.js 1.8.3 \n * Copyright 2009-2016 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n * Available under MIT license \n */\n\n/** `Object#toString` result references. */\nvar stringTag = '[object String]';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @type Function\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return !!value && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is classified as a `String` primitive or object.\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`.\n * @example\n *\n * _.isString('abc');\n * // => true\n *\n * _.isString(1);\n * // => false\n */\nfunction isString(value) {\n return typeof value == 'string' ||\n (!isArray(value) && isObjectLike(value) && objectToString.call(value) == stringTag);\n}\n\nmodule.exports = isString;\n","/**\n * lodash (Custom Build) \n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors \n * Released under MIT license \n * Based on Underscore.js 1.8.3 \n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as the `TypeError` message for \"Functions\" methods. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0,\n MAX_INTEGER = 1.7976931348623157e+308,\n NAN = 0 / 0;\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/** Used to match leading and trailing whitespace. */\nvar reTrim = /^\\s+|\\s+$/g;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/**\n * Creates a function that invokes `func`, with the `this` binding and arguments\n * of the created function, while it's called less than `n` times. Subsequent\n * calls to the created function return the result of the last `func` invocation.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {number} n The number of calls at which `func` is no longer invoked.\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new restricted function.\n * @example\n *\n * jQuery(element).on('click', _.before(5, addContactToList));\n * // => Allows adding up to 4 contacts to the list.\n */\nfunction before(n, func) {\n var result;\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n n = toInteger(n);\n return function() {\n if (--n > 0) {\n result = func.apply(this, arguments);\n }\n if (n <= 1) {\n func = undefined;\n }\n return result;\n };\n}\n\n/**\n * Creates a function that is restricted to invoking `func` once. Repeat calls\n * to the function return the value of the first invocation. The `func` is\n * invoked with the `this` binding and arguments of the created function.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new restricted function.\n * @example\n *\n * var initialize = _.once(createApplication);\n * initialize();\n * initialize();\n * // => `createApplication` is invoked once\n */\nfunction once(func) {\n return before(2, func);\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return !!value && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return !!value && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && objectToString.call(value) == symbolTag);\n}\n\n/**\n * Converts `value` to a finite number.\n *\n * @static\n * @memberOf _\n * @since 4.12.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted number.\n * @example\n *\n * _.toFinite(3.2);\n * // => 3.2\n *\n * _.toFinite(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toFinite(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toFinite('3.2');\n * // => 3.2\n */\nfunction toFinite(value) {\n if (!value) {\n return value === 0 ? value : 0;\n }\n value = toNumber(value);\n if (value === INFINITY || value === -INFINITY) {\n var sign = (value < 0 ? -1 : 1);\n return sign * MAX_INTEGER;\n }\n return value === value ? value : 0;\n}\n\n/**\n * Converts `value` to an integer.\n *\n * **Note:** This method is loosely based on\n * [`ToInteger`](http://www.ecma-international.org/ecma-262/7.0/#sec-tointeger).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.toInteger(3.2);\n * // => 3\n *\n * _.toInteger(Number.MIN_VALUE);\n * // => 0\n *\n * _.toInteger(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toInteger('3.2');\n * // => 3\n */\nfunction toInteger(value) {\n var result = toFinite(value),\n remainder = result % 1;\n\n return result === result ? (remainder ? result - remainder : result) : 0;\n}\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\nfunction toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? (other + '') : other;\n }\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n value = value.replace(reTrim, '');\n var isBinary = reIsBinary.test(value);\n return (isBinary || reIsOctal.test(value))\n ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n : (reIsBadHex.test(value) ? NAN : +value);\n}\n\nmodule.exports = once;\n","const timespan = require('./lib/timespan');\nconst PS_SUPPORTED = require('./lib/psSupported');\nconst validateAsymmetricKey = require('./lib/validateAsymmetricKey');\nconst jws = require('jws');\nconst includes = require('lodash.includes');\nconst isBoolean = require('lodash.isboolean');\nconst isInteger = require('lodash.isinteger');\nconst isNumber = require('lodash.isnumber');\nconst isPlainObject = require('lodash.isplainobject');\nconst isString = require('lodash.isstring');\nconst once = require('lodash.once');\nconst { KeyObject, createSecretKey, createPrivateKey } = require('crypto')\n\nconst SUPPORTED_ALGS = ['RS256', 'RS384', 'RS512', 'ES256', 'ES384', 'ES512', 'HS256', 'HS384', 'HS512', 'none'];\nif (PS_SUPPORTED) {\n SUPPORTED_ALGS.splice(3, 0, 'PS256', 'PS384', 'PS512');\n}\n\nconst sign_options_schema = {\n expiresIn: { isValid: function(value) { return isInteger(value) || (isString(value) && value); }, message: '\"expiresIn\" should be a number of seconds or string representing a timespan' },\n notBefore: { isValid: function(value) { return isInteger(value) || (isString(value) && value); }, message: '\"notBefore\" should be a number of seconds or string representing a timespan' },\n audience: { isValid: function(value) { return isString(value) || Array.isArray(value); }, message: '\"audience\" must be a string or array' },\n algorithm: { isValid: includes.bind(null, SUPPORTED_ALGS), message: '\"algorithm\" must be a valid string enum value' },\n header: { isValid: isPlainObject, message: '\"header\" must be an object' },\n encoding: { isValid: isString, message: '\"encoding\" must be a string' },\n issuer: { isValid: isString, message: '\"issuer\" must be a string' },\n subject: { isValid: isString, message: '\"subject\" must be a string' },\n jwtid: { isValid: isString, message: '\"jwtid\" must be a string' },\n noTimestamp: { isValid: isBoolean, message: '\"noTimestamp\" must be a boolean' },\n keyid: { isValid: isString, message: '\"keyid\" must be a string' },\n mutatePayload: { isValid: isBoolean, message: '\"mutatePayload\" must be a boolean' },\n allowInsecureKeySizes: { isValid: isBoolean, message: '\"allowInsecureKeySizes\" must be a boolean'},\n allowInvalidAsymmetricKeyTypes: { isValid: isBoolean, message: '\"allowInvalidAsymmetricKeyTypes\" must be a boolean'}\n};\n\nconst registered_claims_schema = {\n iat: { isValid: isNumber, message: '\"iat\" should be a number of seconds' },\n exp: { isValid: isNumber, message: '\"exp\" should be a number of seconds' },\n nbf: { isValid: isNumber, message: '\"nbf\" should be a number of seconds' }\n};\n\nfunction validate(schema, allowUnknown, object, parameterName) {\n if (!isPlainObject(object)) {\n throw new Error('Expected \"' + parameterName + '\" to be a plain object.');\n }\n Object.keys(object)\n .forEach(function(key) {\n const validator = schema[key];\n if (!validator) {\n if (!allowUnknown) {\n throw new Error('\"' + key + '\" is not allowed in \"' + parameterName + '\"');\n }\n return;\n }\n if (!validator.isValid(object[key])) {\n throw new Error(validator.message);\n }\n });\n}\n\nfunction validateOptions(options) {\n return validate(sign_options_schema, false, options, 'options');\n}\n\nfunction validatePayload(payload) {\n return validate(registered_claims_schema, true, payload, 'payload');\n}\n\nconst options_to_payload = {\n 'audience': 'aud',\n 'issuer': 'iss',\n 'subject': 'sub',\n 'jwtid': 'jti'\n};\n\nconst options_for_objects = [\n 'expiresIn',\n 'notBefore',\n 'noTimestamp',\n 'audience',\n 'issuer',\n 'subject',\n 'jwtid',\n];\n\nmodule.exports = function (payload, secretOrPrivateKey, options, callback) {\n if (typeof options === 'function') {\n callback = options;\n options = {};\n } else {\n options = options || {};\n }\n\n const isObjectPayload = typeof payload === 'object' &&\n !Buffer.isBuffer(payload);\n\n const header = Object.assign({\n alg: options.algorithm || 'HS256',\n typ: isObjectPayload ? 'JWT' : undefined,\n kid: options.keyid\n }, options.header);\n\n function failure(err) {\n if (callback) {\n return callback(err);\n }\n throw err;\n }\n\n if (!secretOrPrivateKey && options.algorithm !== 'none') {\n return failure(new Error('secretOrPrivateKey must have a value'));\n }\n\n if (secretOrPrivateKey != null && !(secretOrPrivateKey instanceof KeyObject)) {\n try {\n secretOrPrivateKey = createPrivateKey(secretOrPrivateKey)\n } catch (_) {\n try {\n secretOrPrivateKey = createSecretKey(typeof secretOrPrivateKey === 'string' ? Buffer.from(secretOrPrivateKey) : secretOrPrivateKey)\n } catch (_) {\n return failure(new Error('secretOrPrivateKey is not valid key material'));\n }\n }\n }\n\n if (header.alg.startsWith('HS') && secretOrPrivateKey.type !== 'secret') {\n return failure(new Error((`secretOrPrivateKey must be a symmetric key when using ${header.alg}`)))\n } else if (/^(?:RS|PS|ES)/.test(header.alg)) {\n if (secretOrPrivateKey.type !== 'private') {\n return failure(new Error((`secretOrPrivateKey must be an asymmetric key when using ${header.alg}`)))\n }\n if (!options.allowInsecureKeySizes &&\n !header.alg.startsWith('ES') &&\n secretOrPrivateKey.asymmetricKeyDetails !== undefined && //KeyObject.asymmetricKeyDetails is supported in Node 15+\n secretOrPrivateKey.asymmetricKeyDetails.modulusLength < 2048) {\n return failure(new Error(`secretOrPrivateKey has a minimum key size of 2048 bits for ${header.alg}`));\n }\n }\n\n if (typeof payload === 'undefined') {\n return failure(new Error('payload is required'));\n } else if (isObjectPayload) {\n try {\n validatePayload(payload);\n }\n catch (error) {\n return failure(error);\n }\n if (!options.mutatePayload) {\n payload = Object.assign({},payload);\n }\n } else {\n const invalid_options = options_for_objects.filter(function (opt) {\n return typeof options[opt] !== 'undefined';\n });\n\n if (invalid_options.length > 0) {\n return failure(new Error('invalid ' + invalid_options.join(',') + ' option for ' + (typeof payload ) + ' payload'));\n }\n }\n\n if (typeof payload.exp !== 'undefined' && typeof options.expiresIn !== 'undefined') {\n return failure(new Error('Bad \"options.expiresIn\" option the payload already has an \"exp\" property.'));\n }\n\n if (typeof payload.nbf !== 'undefined' && typeof options.notBefore !== 'undefined') {\n return failure(new Error('Bad \"options.notBefore\" option the payload already has an \"nbf\" property.'));\n }\n\n try {\n validateOptions(options);\n }\n catch (error) {\n return failure(error);\n }\n\n if (!options.allowInvalidAsymmetricKeyTypes) {\n try {\n validateAsymmetricKey(header.alg, secretOrPrivateKey);\n } catch (error) {\n return failure(error);\n }\n }\n\n const timestamp = payload.iat || Math.floor(Date.now() / 1000);\n\n if (options.noTimestamp) {\n delete payload.iat;\n } else if (isObjectPayload) {\n payload.iat = timestamp;\n }\n\n if (typeof options.notBefore !== 'undefined') {\n try {\n payload.nbf = timespan(options.notBefore, timestamp);\n }\n catch (err) {\n return failure(err);\n }\n if (typeof payload.nbf === 'undefined') {\n return failure(new Error('\"notBefore\" should be a number of seconds or string representing a timespan eg: \"1d\", \"20h\", 60'));\n }\n }\n\n if (typeof options.expiresIn !== 'undefined' && typeof payload === 'object') {\n try {\n payload.exp = timespan(options.expiresIn, timestamp);\n }\n catch (err) {\n return failure(err);\n }\n if (typeof payload.exp === 'undefined') {\n return failure(new Error('\"expiresIn\" should be a number of seconds or string representing a timespan eg: \"1d\", \"20h\", 60'));\n }\n }\n\n Object.keys(options_to_payload).forEach(function (key) {\n const claim = options_to_payload[key];\n if (typeof options[key] !== 'undefined') {\n if (typeof payload[claim] !== 'undefined') {\n return failure(new Error('Bad \"options.' + key + '\" option. The payload already has an \"' + claim + '\" property.'));\n }\n payload[claim] = options[key];\n }\n });\n\n const encoding = options.encoding || 'utf8';\n\n if (typeof callback === 'function') {\n callback = callback && once(callback);\n\n jws.createSign({\n header: header,\n privateKey: secretOrPrivateKey,\n payload: payload,\n encoding: encoding\n }).once('error', callback)\n .once('done', function (signature) {\n // TODO: Remove in favor of the modulus length check before signing once node 15+ is the minimum supported version\n if(!options.allowInsecureKeySizes && /^(?:RS|PS)/.test(header.alg) && signature.length < 256) {\n return callback(new Error(`secretOrPrivateKey has a minimum key size of 2048 bits for ${header.alg}`))\n }\n callback(null, signature);\n });\n } else {\n let signature = jws.sign({header: header, payload: payload, secret: secretOrPrivateKey, encoding: encoding});\n // TODO: Remove in favor of the modulus length check before signing once node 15+ is the minimum supported version\n if(!options.allowInsecureKeySizes && /^(?:RS|PS)/.test(header.alg) && signature.length < 256) {\n throw new Error(`secretOrPrivateKey has a minimum key size of 2048 bits for ${header.alg}`)\n }\n return signature\n }\n};\n","module.exports = {\n decode: require('./decode'),\n verify: require('./verify'),\n sign: require('./sign'),\n JsonWebTokenError: require('./lib/JsonWebTokenError'),\n NotBeforeError: require('./lib/NotBeforeError'),\n TokenExpiredError: require('./lib/TokenExpiredError'),\n};\n","/*! @azure/msal-node v3.8.3 2025-11-19 */\n'use strict';\n'use strict';\n\nvar http = require('http');\nvar https = require('https');\nvar uuid = require('uuid');\nvar crypto = require('crypto');\nvar msalCommon = require('@azure/msal-common');\nvar jwt = require('jsonwebtoken');\nvar fs = require('fs');\nvar path = require('path');\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * This class serializes cache entities to be saved into in-memory object types defined internally\r\n * @internal\r\n */\r\nclass Serializer {\r\n /**\r\n * serialize the JSON blob\r\n * @param data - JSON blob cache\r\n */\r\n static serializeJSONBlob(data) {\r\n return JSON.stringify(data);\r\n }\r\n /**\r\n * Serialize Accounts\r\n * @param accCache - cache of accounts\r\n */\r\n static serializeAccounts(accCache) {\r\n const accounts = {};\r\n Object.keys(accCache).map(function (key) {\r\n const accountEntity = accCache[key];\r\n accounts[key] = {\r\n home_account_id: accountEntity.homeAccountId,\r\n environment: accountEntity.environment,\r\n realm: accountEntity.realm,\r\n local_account_id: accountEntity.localAccountId,\r\n username: accountEntity.username,\r\n authority_type: accountEntity.authorityType,\r\n name: accountEntity.name,\r\n client_info: accountEntity.clientInfo,\r\n last_modification_time: accountEntity.lastModificationTime,\r\n last_modification_app: accountEntity.lastModificationApp,\r\n tenantProfiles: accountEntity.tenantProfiles?.map((tenantProfile) => {\r\n return JSON.stringify(tenantProfile);\r\n }),\r\n };\r\n });\r\n return accounts;\r\n }\r\n /**\r\n * Serialize IdTokens\r\n * @param idTCache - cache of ID tokens\r\n */\r\n static serializeIdTokens(idTCache) {\r\n const idTokens = {};\r\n Object.keys(idTCache).map(function (key) {\r\n const idTEntity = idTCache[key];\r\n idTokens[key] = {\r\n home_account_id: idTEntity.homeAccountId,\r\n environment: idTEntity.environment,\r\n credential_type: idTEntity.credentialType,\r\n client_id: idTEntity.clientId,\r\n secret: idTEntity.secret,\r\n realm: idTEntity.realm,\r\n };\r\n });\r\n return idTokens;\r\n }\r\n /**\r\n * Serializes AccessTokens\r\n * @param atCache - cache of access tokens\r\n */\r\n static serializeAccessTokens(atCache) {\r\n const accessTokens = {};\r\n Object.keys(atCache).map(function (key) {\r\n const atEntity = atCache[key];\r\n accessTokens[key] = {\r\n home_account_id: atEntity.homeAccountId,\r\n environment: atEntity.environment,\r\n credential_type: atEntity.credentialType,\r\n client_id: atEntity.clientId,\r\n secret: atEntity.secret,\r\n realm: atEntity.realm,\r\n target: atEntity.target,\r\n cached_at: atEntity.cachedAt,\r\n expires_on: atEntity.expiresOn,\r\n extended_expires_on: atEntity.extendedExpiresOn,\r\n refresh_on: atEntity.refreshOn,\r\n key_id: atEntity.keyId,\r\n token_type: atEntity.tokenType,\r\n requestedClaims: atEntity.requestedClaims,\r\n requestedClaimsHash: atEntity.requestedClaimsHash,\r\n userAssertionHash: atEntity.userAssertionHash,\r\n };\r\n });\r\n return accessTokens;\r\n }\r\n /**\r\n * Serialize refreshTokens\r\n * @param rtCache - cache of refresh tokens\r\n */\r\n static serializeRefreshTokens(rtCache) {\r\n const refreshTokens = {};\r\n Object.keys(rtCache).map(function (key) {\r\n const rtEntity = rtCache[key];\r\n refreshTokens[key] = {\r\n home_account_id: rtEntity.homeAccountId,\r\n environment: rtEntity.environment,\r\n credential_type: rtEntity.credentialType,\r\n client_id: rtEntity.clientId,\r\n secret: rtEntity.secret,\r\n family_id: rtEntity.familyId,\r\n target: rtEntity.target,\r\n realm: rtEntity.realm,\r\n };\r\n });\r\n return refreshTokens;\r\n }\r\n /**\r\n * Serialize amdtCache\r\n * @param amdtCache - cache of app metadata\r\n */\r\n static serializeAppMetadata(amdtCache) {\r\n const appMetadata = {};\r\n Object.keys(amdtCache).map(function (key) {\r\n const amdtEntity = amdtCache[key];\r\n appMetadata[key] = {\r\n client_id: amdtEntity.clientId,\r\n environment: amdtEntity.environment,\r\n family_id: amdtEntity.familyId,\r\n };\r\n });\r\n return appMetadata;\r\n }\r\n /**\r\n * Serialize the cache\r\n * @param inMemCache - itemised cache read from the JSON\r\n */\r\n static serializeAllCache(inMemCache) {\r\n return {\r\n Account: this.serializeAccounts(inMemCache.accounts),\r\n IdToken: this.serializeIdTokens(inMemCache.idTokens),\r\n AccessToken: this.serializeAccessTokens(inMemCache.accessTokens),\r\n RefreshToken: this.serializeRefreshTokens(inMemCache.refreshTokens),\r\n AppMetadata: this.serializeAppMetadata(inMemCache.appMetadata),\r\n };\r\n }\r\n}\n\n/*! @azure/msal-common v15.13.2 2025-11-19 */\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nconst Constants$1 = {\r\n LIBRARY_NAME: \"MSAL.JS\",\r\n SKU: \"msal.js.common\",\r\n // default authority\r\n DEFAULT_AUTHORITY: \"https://login.microsoftonline.com/common/\",\r\n DEFAULT_AUTHORITY_HOST: \"login.microsoftonline.com\",\r\n DEFAULT_COMMON_TENANT: \"common\",\r\n // ADFS String\r\n ADFS: \"adfs\",\r\n DSTS: \"dstsv2\",\r\n // Default AAD Instance Discovery Endpoint\r\n AAD_INSTANCE_DISCOVERY_ENDPT: \"https://login.microsoftonline.com/common/discovery/instance?api-version=1.1&authorization_endpoint=\",\r\n // CIAM URL\r\n CIAM_AUTH_URL: \".ciamlogin.com\",\r\n AAD_TENANT_DOMAIN_SUFFIX: \".onmicrosoft.com\",\r\n // Resource delimiter - used for certain cache entries\r\n RESOURCE_DELIM: \"|\",\r\n // Placeholder for non-existent account ids/objects\r\n NO_ACCOUNT: \"NO_ACCOUNT\",\r\n // Claims\r\n CLAIMS: \"claims\",\r\n // Consumer UTID\r\n CONSUMER_UTID: \"9188040d-6c67-4c5b-b112-36a304b66dad\",\r\n // Default scopes\r\n OPENID_SCOPE: \"openid\",\r\n PROFILE_SCOPE: \"profile\",\r\n OFFLINE_ACCESS_SCOPE: \"offline_access\",\r\n EMAIL_SCOPE: \"email\",\r\n CODE_GRANT_TYPE: \"authorization_code\",\r\n RT_GRANT_TYPE: \"refresh_token\",\r\n S256_CODE_CHALLENGE_METHOD: \"S256\",\r\n URL_FORM_CONTENT_TYPE: \"application/x-www-form-urlencoded;charset=utf-8\",\r\n AUTHORIZATION_PENDING: \"authorization_pending\",\r\n NOT_DEFINED: \"not_defined\",\r\n EMPTY_STRING: \"\",\r\n NOT_APPLICABLE: \"N/A\",\r\n NOT_AVAILABLE: \"Not Available\",\r\n FORWARD_SLASH: \"/\",\r\n IMDS_ENDPOINT: \"http://169.254.169.254/metadata/instance/compute/location\",\r\n IMDS_VERSION: \"2020-06-01\",\r\n IMDS_TIMEOUT: 2000,\r\n AZURE_REGION_AUTO_DISCOVER_FLAG: \"TryAutoDetect\",\r\n REGIONAL_AUTH_PUBLIC_CLOUD_SUFFIX: \"login.microsoft.com\",\r\n KNOWN_PUBLIC_CLOUDS: [\r\n \"login.microsoftonline.com\",\r\n \"login.windows.net\",\r\n \"login.microsoft.com\",\r\n \"sts.windows.net\",\r\n ],\r\n SHR_NONCE_VALIDITY: 240,\r\n INVALID_INSTANCE: \"invalid_instance\",\r\n};\r\nconst HttpStatus = {\r\n SUCCESS: 200,\r\n SUCCESS_RANGE_START: 200,\r\n SUCCESS_RANGE_END: 299,\r\n REDIRECT: 302,\r\n CLIENT_ERROR: 400,\r\n CLIENT_ERROR_RANGE_START: 400,\r\n BAD_REQUEST: 400,\r\n UNAUTHORIZED: 401,\r\n NOT_FOUND: 404,\r\n REQUEST_TIMEOUT: 408,\r\n GONE: 410,\r\n TOO_MANY_REQUESTS: 429,\r\n CLIENT_ERROR_RANGE_END: 499,\r\n SERVER_ERROR: 500,\r\n SERVER_ERROR_RANGE_START: 500,\r\n SERVICE_UNAVAILABLE: 503,\r\n GATEWAY_TIMEOUT: 504,\r\n SERVER_ERROR_RANGE_END: 599,\r\n MULTI_SIDED_ERROR: 600,\r\n};\r\nconst OIDC_DEFAULT_SCOPES = [\r\n Constants$1.OPENID_SCOPE,\r\n Constants$1.PROFILE_SCOPE,\r\n Constants$1.OFFLINE_ACCESS_SCOPE,\r\n];\r\nconst OIDC_SCOPES = [...OIDC_DEFAULT_SCOPES, Constants$1.EMAIL_SCOPE];\r\n/**\r\n * Request header names\r\n */\r\nconst HeaderNames = {\r\n CONTENT_TYPE: \"Content-Type\",\r\n CONTENT_LENGTH: \"Content-Length\",\r\n RETRY_AFTER: \"Retry-After\",\r\n CCS_HEADER: \"X-AnchorMailbox\",\r\n WWWAuthenticate: \"WWW-Authenticate\",\r\n AuthenticationInfo: \"Authentication-Info\",\r\n X_MS_REQUEST_ID: \"x-ms-request-id\",\r\n X_MS_HTTP_VERSION: \"x-ms-httpver\",\r\n};\r\n/**\r\n * String constants related to AAD Authority\r\n */\r\nconst AADAuthorityConstants = {\r\n COMMON: \"common\",\r\n ORGANIZATIONS: \"organizations\",\r\n CONSUMERS: \"consumers\",\r\n};\r\n/**\r\n * Claims request keys\r\n */\r\nconst ClaimsRequestKeys = {\r\n ACCESS_TOKEN: \"access_token\",\r\n XMS_CC: \"xms_cc\",\r\n};\r\n/**\r\n * we considered making this \"enum\" in the request instead of string, however it looks like the allowed list of\r\n * prompt values kept changing over past couple of years. There are some undocumented prompt values for some\r\n * internal partners too, hence the choice of generic \"string\" type instead of the \"enum\"\r\n */\r\nconst PromptValue = {\r\n LOGIN: \"login\",\r\n SELECT_ACCOUNT: \"select_account\",\r\n CONSENT: \"consent\",\r\n NONE: \"none\",\r\n CREATE: \"create\",\r\n NO_SESSION: \"no_session\",\r\n};\r\n/**\r\n * allowed values for codeVerifier\r\n */\r\nconst CodeChallengeMethodValues = {\r\n PLAIN: \"plain\",\r\n S256: \"S256\",\r\n};\r\n/**\r\n * Allowed values for response_type\r\n */\r\nconst OAuthResponseType = {\r\n CODE: \"code\",\r\n IDTOKEN_TOKEN: \"id_token token\"};\r\n/**\r\n * allowed values for response_mode\r\n */\r\nconst ResponseMode = {\r\n QUERY: \"query\",\r\n FRAGMENT: \"fragment\",\r\n FORM_POST: \"form_post\",\r\n};\r\n/**\r\n * allowed grant_type\r\n */\r\nconst GrantType = {\r\n AUTHORIZATION_CODE_GRANT: \"authorization_code\",\r\n CLIENT_CREDENTIALS_GRANT: \"client_credentials\",\r\n RESOURCE_OWNER_PASSWORD_GRANT: \"password\",\r\n REFRESH_TOKEN_GRANT: \"refresh_token\",\r\n DEVICE_CODE_GRANT: \"device_code\",\r\n JWT_BEARER: \"urn:ietf:params:oauth:grant-type:jwt-bearer\",\r\n};\r\n/**\r\n * Account types in Cache\r\n */\r\nconst CacheAccountType = {\r\n MSSTS_ACCOUNT_TYPE: \"MSSTS\",\r\n ADFS_ACCOUNT_TYPE: \"ADFS\",\r\n GENERIC_ACCOUNT_TYPE: \"Generic\", // NTLM, Kerberos, FBA, Basic etc\r\n};\r\n/**\r\n * Separators used in cache\r\n */\r\nconst Separators = {\r\n CACHE_KEY_SEPARATOR: \"-\",\r\n CLIENT_INFO_SEPARATOR: \".\",\r\n};\r\n/**\r\n * Credential Type stored in the cache\r\n */\r\nconst CredentialType = {\r\n ID_TOKEN: \"IdToken\",\r\n ACCESS_TOKEN: \"AccessToken\",\r\n ACCESS_TOKEN_WITH_AUTH_SCHEME: \"AccessToken_With_AuthScheme\",\r\n REFRESH_TOKEN: \"RefreshToken\",\r\n};\r\n/**\r\n * More Cache related constants\r\n */\r\nconst APP_METADATA = \"appmetadata\";\r\nconst CLIENT_INFO = \"client_info\";\r\nconst THE_FAMILY_ID = \"1\";\r\nconst AUTHORITY_METADATA_CONSTANTS = {\r\n CACHE_KEY: \"authority-metadata\",\r\n REFRESH_TIME_SECONDS: 3600 * 24, // 24 Hours\r\n};\r\nconst AuthorityMetadataSource = {\r\n CONFIG: \"config\",\r\n CACHE: \"cache\",\r\n NETWORK: \"network\",\r\n HARDCODED_VALUES: \"hardcoded_values\",\r\n};\r\nconst SERVER_TELEM_CONSTANTS = {\r\n SCHEMA_VERSION: 5,\r\n MAX_LAST_HEADER_BYTES: 330,\r\n MAX_CACHED_ERRORS: 50,\r\n CACHE_KEY: \"server-telemetry\",\r\n CATEGORY_SEPARATOR: \"|\",\r\n VALUE_SEPARATOR: \",\",\r\n OVERFLOW_TRUE: \"1\",\r\n OVERFLOW_FALSE: \"0\",\r\n UNKNOWN_ERROR: \"unknown_error\",\r\n};\r\n/**\r\n * Type of the authentication request\r\n */\r\nconst AuthenticationScheme = {\r\n BEARER: \"Bearer\",\r\n POP: \"pop\",\r\n SSH: \"ssh-cert\",\r\n};\r\n/**\r\n * Constants related to throttling\r\n */\r\nconst ThrottlingConstants = {\r\n // Default time to throttle RequestThumbprint in seconds\r\n DEFAULT_THROTTLE_TIME_SECONDS: 60,\r\n // Default maximum time to throttle in seconds, overrides what the server sends back\r\n DEFAULT_MAX_THROTTLE_TIME_SECONDS: 3600,\r\n // Prefix for storing throttling entries\r\n THROTTLING_PREFIX: \"throttling\",\r\n // Value assigned to the x-ms-lib-capability header to indicate to the server the library supports throttling\r\n X_MS_LIB_CAPABILITY_VALUE: \"retry-after, h429\",\r\n};\r\nconst Errors = {\r\n INVALID_GRANT_ERROR: \"invalid_grant\",\r\n CLIENT_MISMATCH_ERROR: \"client_mismatch\",\r\n};\r\n/**\r\n * Password grant parameters\r\n */\r\nconst PasswordGrantConstants = {\r\n username: \"username\",\r\n password: \"password\",\r\n};\r\n/**\r\n * Region Discovery Sources\r\n */\r\nconst RegionDiscoverySources = {\r\n FAILED_AUTO_DETECTION: \"1\",\r\n INTERNAL_CACHE: \"2\",\r\n ENVIRONMENT_VARIABLE: \"3\",\r\n IMDS: \"4\",\r\n};\r\n/**\r\n * Region Discovery Outcomes\r\n */\r\nconst RegionDiscoveryOutcomes = {\r\n CONFIGURED_NO_AUTO_DETECTION: \"2\",\r\n AUTO_DETECTION_REQUESTED_SUCCESSFUL: \"4\",\r\n AUTO_DETECTION_REQUESTED_FAILED: \"5\",\r\n};\r\n/**\r\n * Specifies the reason for fetching the access token from the identity provider\r\n */\r\nconst CacheOutcome = {\r\n // When a token is found in the cache or the cache is not supposed to be hit when making the request\r\n NOT_APPLICABLE: \"0\",\r\n // When the token request goes to the identity provider because force_refresh was set to true. Also occurs if claims were requested\r\n FORCE_REFRESH_OR_CLAIMS: \"1\",\r\n // When the token request goes to the identity provider because no cached access token exists\r\n NO_CACHED_ACCESS_TOKEN: \"2\",\r\n // When the token request goes to the identity provider because cached access token expired\r\n CACHED_ACCESS_TOKEN_EXPIRED: \"3\",\r\n // When the token request goes to the identity provider because refresh_in was used and the existing token needs to be refreshed\r\n PROACTIVELY_REFRESHED: \"4\",\r\n};\r\n// Token renewal offset default in seconds\r\nconst DEFAULT_TOKEN_RENEWAL_OFFSET_SEC = 300;\r\nconst EncodingTypes = {\r\n BASE64: \"base64\",\r\n HEX: \"hex\",\r\n UTF8: \"utf-8\",\r\n};\n\n/*! @azure/msal-common v15.13.2 2025-11-19 */\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * AuthErrorMessage class containing string constants used by error codes and messages.\r\n */\r\nconst unexpectedError = \"unexpected_error\";\r\nconst postRequestFailed = \"post_request_failed\";\n\nvar AuthErrorCodes = /*#__PURE__*/Object.freeze({\n __proto__: null,\n postRequestFailed: postRequestFailed,\n unexpectedError: unexpectedError\n});\n\n/*! @azure/msal-common v15.13.2 2025-11-19 */\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nconst AuthErrorMessages = {\r\n [unexpectedError]: \"Unexpected error in authentication.\",\r\n [postRequestFailed]: \"Post request failed from the network, could be a 4xx/5xx or a network unavailability. Please check the exact error code for details.\",\r\n};\r\n/**\r\n * AuthErrorMessage class containing string constants used by error codes and messages.\r\n * @deprecated Use AuthErrorCodes instead\r\n */\r\nconst AuthErrorMessage = {\r\n unexpectedError: {\r\n code: unexpectedError,\r\n desc: AuthErrorMessages[unexpectedError],\r\n },\r\n postRequestFailed: {\r\n code: postRequestFailed,\r\n desc: AuthErrorMessages[postRequestFailed],\r\n },\r\n};\r\n/**\r\n * General error class thrown by the MSAL.js library.\r\n */\r\nclass AuthError extends Error {\r\n constructor(errorCode, errorMessage, suberror) {\r\n const errorString = errorMessage\r\n ? `${errorCode}: ${errorMessage}`\r\n : errorCode;\r\n super(errorString);\r\n Object.setPrototypeOf(this, AuthError.prototype);\r\n this.errorCode = errorCode || Constants$1.EMPTY_STRING;\r\n this.errorMessage = errorMessage || Constants$1.EMPTY_STRING;\r\n this.subError = suberror || Constants$1.EMPTY_STRING;\r\n this.name = \"AuthError\";\r\n }\r\n setCorrelationId(correlationId) {\r\n this.correlationId = correlationId;\r\n }\r\n}\r\nfunction createAuthError(code, additionalMessage) {\r\n return new AuthError(code, additionalMessage\r\n ? `${AuthErrorMessages[code]} ${additionalMessage}`\r\n : AuthErrorMessages[code]);\r\n}\n\n/*! @azure/msal-common v15.13.2 2025-11-19 */\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nconst clientInfoDecodingError = \"client_info_decoding_error\";\r\nconst clientInfoEmptyError = \"client_info_empty_error\";\r\nconst tokenParsingError = \"token_parsing_error\";\r\nconst nullOrEmptyToken = \"null_or_empty_token\";\r\nconst endpointResolutionError = \"endpoints_resolution_error\";\r\nconst networkError = \"network_error\";\r\nconst openIdConfigError = \"openid_config_error\";\r\nconst hashNotDeserialized = \"hash_not_deserialized\";\r\nconst invalidState = \"invalid_state\";\r\nconst stateMismatch = \"state_mismatch\";\r\nconst stateNotFound = \"state_not_found\";\r\nconst nonceMismatch = \"nonce_mismatch\";\r\nconst authTimeNotFound = \"auth_time_not_found\";\r\nconst maxAgeTranspired = \"max_age_transpired\";\r\nconst multipleMatchingTokens = \"multiple_matching_tokens\";\r\nconst multipleMatchingAccounts = \"multiple_matching_accounts\";\r\nconst multipleMatchingAppMetadata = \"multiple_matching_appMetadata\";\r\nconst requestCannotBeMade = \"request_cannot_be_made\";\r\nconst cannotRemoveEmptyScope = \"cannot_remove_empty_scope\";\r\nconst cannotAppendScopeSet = \"cannot_append_scopeset\";\r\nconst emptyInputScopeSet = \"empty_input_scopeset\";\r\nconst deviceCodePollingCancelled = \"device_code_polling_cancelled\";\r\nconst deviceCodeExpired = \"device_code_expired\";\r\nconst deviceCodeUnknownError = \"device_code_unknown_error\";\r\nconst noAccountInSilentRequest = \"no_account_in_silent_request\";\r\nconst invalidCacheRecord = \"invalid_cache_record\";\r\nconst invalidCacheEnvironment = \"invalid_cache_environment\";\r\nconst noAccountFound = \"no_account_found\";\r\nconst noCryptoObject = \"no_crypto_object\";\r\nconst unexpectedCredentialType = \"unexpected_credential_type\";\r\nconst invalidAssertion = \"invalid_assertion\";\r\nconst invalidClientCredential = \"invalid_client_credential\";\r\nconst tokenRefreshRequired = \"token_refresh_required\";\r\nconst userTimeoutReached = \"user_timeout_reached\";\r\nconst tokenClaimsCnfRequiredForSignedJwt = \"token_claims_cnf_required_for_signedjwt\";\r\nconst authorizationCodeMissingFromServerResponse = \"authorization_code_missing_from_server_response\";\r\nconst bindingKeyNotRemoved = \"binding_key_not_removed\";\r\nconst endSessionEndpointNotSupported = \"end_session_endpoint_not_supported\";\r\nconst keyIdMissing = \"key_id_missing\";\r\nconst noNetworkConnectivity = \"no_network_connectivity\";\r\nconst userCanceled = \"user_canceled\";\r\nconst missingTenantIdError = \"missing_tenant_id_error\";\r\nconst methodNotImplemented = \"method_not_implemented\";\r\nconst nestedAppAuthBridgeDisabled = \"nested_app_auth_bridge_disabled\";\r\nconst platformBrokerError = \"platform_broker_error\";\n\nvar ClientAuthErrorCodes = /*#__PURE__*/Object.freeze({\n __proto__: null,\n authTimeNotFound: authTimeNotFound,\n authorizationCodeMissingFromServerResponse: authorizationCodeMissingFromServerResponse,\n bindingKeyNotRemoved: bindingKeyNotRemoved,\n cannotAppendScopeSet: cannotAppendScopeSet,\n cannotRemoveEmptyScope: cannotRemoveEmptyScope,\n clientInfoDecodingError: clientInfoDecodingError,\n clientInfoEmptyError: clientInfoEmptyError,\n deviceCodeExpired: deviceCodeExpired,\n deviceCodePollingCancelled: deviceCodePollingCancelled,\n deviceCodeUnknownError: deviceCodeUnknownError,\n emptyInputScopeSet: emptyInputScopeSet,\n endSessionEndpointNotSupported: endSessionEndpointNotSupported,\n endpointResolutionError: endpointResolutionError,\n hashNotDeserialized: hashNotDeserialized,\n invalidAssertion: invalidAssertion,\n invalidCacheEnvironment: invalidCacheEnvironment,\n invalidCacheRecord: invalidCacheRecord,\n invalidClientCredential: invalidClientCredential,\n invalidState: invalidState,\n keyIdMissing: keyIdMissing,\n maxAgeTranspired: maxAgeTranspired,\n methodNotImplemented: methodNotImplemented,\n missingTenantIdError: missingTenantIdError,\n multipleMatchingAccounts: multipleMatchingAccounts,\n multipleMatchingAppMetadata: multipleMatchingAppMetadata,\n multipleMatchingTokens: multipleMatchingTokens,\n nestedAppAuthBridgeDisabled: nestedAppAuthBridgeDisabled,\n networkError: networkError,\n noAccountFound: noAccountFound,\n noAccountInSilentRequest: noAccountInSilentRequest,\n noCryptoObject: noCryptoObject,\n noNetworkConnectivity: noNetworkConnectivity,\n nonceMismatch: nonceMismatch,\n nullOrEmptyToken: nullOrEmptyToken,\n openIdConfigError: openIdConfigError,\n platformBrokerError: platformBrokerError,\n requestCannotBeMade: requestCannotBeMade,\n stateMismatch: stateMismatch,\n stateNotFound: stateNotFound,\n tokenClaimsCnfRequiredForSignedJwt: tokenClaimsCnfRequiredForSignedJwt,\n tokenParsingError: tokenParsingError,\n tokenRefreshRequired: tokenRefreshRequired,\n unexpectedCredentialType: unexpectedCredentialType,\n userCanceled: userCanceled,\n userTimeoutReached: userTimeoutReached\n});\n\n/*! @azure/msal-common v15.13.2 2025-11-19 */\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * ClientAuthErrorMessage class containing string constants used by error codes and messages.\r\n */\r\nconst ClientAuthErrorMessages = {\r\n [clientInfoDecodingError]: \"The client info could not be parsed/decoded correctly\",\r\n [clientInfoEmptyError]: \"The client info was empty\",\r\n [tokenParsingError]: \"Token cannot be parsed\",\r\n [nullOrEmptyToken]: \"The token is null or empty\",\r\n [endpointResolutionError]: \"Endpoints cannot be resolved\",\r\n [networkError]: \"Network request failed\",\r\n [openIdConfigError]: \"Could not retrieve endpoints. Check your authority and verify the .well-known/openid-configuration endpoint returns the required endpoints.\",\r\n [hashNotDeserialized]: \"The hash parameters could not be deserialized\",\r\n [invalidState]: \"State was not the expected format\",\r\n [stateMismatch]: \"State mismatch error\",\r\n [stateNotFound]: \"State not found\",\r\n [nonceMismatch]: \"Nonce mismatch error\",\r\n [authTimeNotFound]: \"Max Age was requested and the ID token is missing the auth_time variable.\" +\r\n \" auth_time is an optional claim and is not enabled by default - it must be enabled.\" +\r\n \" See https://aka.ms/msaljs/optional-claims for more information.\",\r\n [maxAgeTranspired]: \"Max Age is set to 0, or too much time has elapsed since the last end-user authentication.\",\r\n [multipleMatchingTokens]: \"The cache contains multiple tokens satisfying the requirements. \" +\r\n \"Call AcquireToken again providing more requirements such as authority or account.\",\r\n [multipleMatchingAccounts]: \"The cache contains multiple accounts satisfying the given parameters. Please pass more info to obtain the correct account\",\r\n [multipleMatchingAppMetadata]: \"The cache contains multiple appMetadata satisfying the given parameters. Please pass more info to obtain the correct appMetadata\",\r\n [requestCannotBeMade]: \"Token request cannot be made without authorization code or refresh token.\",\r\n [cannotRemoveEmptyScope]: \"Cannot remove null or empty scope from ScopeSet\",\r\n [cannotAppendScopeSet]: \"Cannot append ScopeSet\",\r\n [emptyInputScopeSet]: \"Empty input ScopeSet cannot be processed\",\r\n [deviceCodePollingCancelled]: \"Caller has cancelled token endpoint polling during device code flow by setting DeviceCodeRequest.cancel = true.\",\r\n [deviceCodeExpired]: \"Device code is expired.\",\r\n [deviceCodeUnknownError]: \"Device code stopped polling for unknown reasons.\",\r\n [noAccountInSilentRequest]: \"Please pass an account object, silent flow is not supported without account information\",\r\n [invalidCacheRecord]: \"Cache record object was null or undefined.\",\r\n [invalidCacheEnvironment]: \"Invalid environment when attempting to create cache entry\",\r\n [noAccountFound]: \"No account found in cache for given key.\",\r\n [noCryptoObject]: \"No crypto object detected.\",\r\n [unexpectedCredentialType]: \"Unexpected credential type.\",\r\n [invalidAssertion]: \"Client assertion must meet requirements described in https://tools.ietf.org/html/rfc7515\",\r\n [invalidClientCredential]: \"Client credential (secret, certificate, or assertion) must not be empty when creating a confidential client. An application should at most have one credential\",\r\n [tokenRefreshRequired]: \"Cannot return token from cache because it must be refreshed. This may be due to one of the following reasons: forceRefresh parameter is set to true, claims have been requested, there is no cached access token or it is expired.\",\r\n [userTimeoutReached]: \"User defined timeout for device code polling reached\",\r\n [tokenClaimsCnfRequiredForSignedJwt]: \"Cannot generate a POP jwt if the token_claims are not populated\",\r\n [authorizationCodeMissingFromServerResponse]: \"Server response does not contain an authorization code to proceed\",\r\n [bindingKeyNotRemoved]: \"Could not remove the credential's binding key from storage.\",\r\n [endSessionEndpointNotSupported]: \"The provided authority does not support logout\",\r\n [keyIdMissing]: \"A keyId value is missing from the requested bound token's cache record and is required to match the token to it's stored binding key.\",\r\n [noNetworkConnectivity]: \"No network connectivity. Check your internet connection.\",\r\n [userCanceled]: \"User cancelled the flow.\",\r\n [missingTenantIdError]: \"A tenant id - not common, organizations, or consumers - must be specified when using the client_credentials flow.\",\r\n [methodNotImplemented]: \"This method has not been implemented\",\r\n [nestedAppAuthBridgeDisabled]: \"The nested app auth bridge is disabled\",\r\n [platformBrokerError]: \"An error occurred in the native broker. See the platformBrokerError property for details.\",\r\n};\r\n/**\r\n * String constants used by error codes and messages.\r\n * @deprecated Use ClientAuthErrorCodes instead\r\n */\r\nconst ClientAuthErrorMessage = {\r\n clientInfoDecodingError: {\r\n code: clientInfoDecodingError,\r\n desc: ClientAuthErrorMessages[clientInfoDecodingError],\r\n },\r\n clientInfoEmptyError: {\r\n code: clientInfoEmptyError,\r\n desc: ClientAuthErrorMessages[clientInfoEmptyError],\r\n },\r\n tokenParsingError: {\r\n code: tokenParsingError,\r\n desc: ClientAuthErrorMessages[tokenParsingError],\r\n },\r\n nullOrEmptyToken: {\r\n code: nullOrEmptyToken,\r\n desc: ClientAuthErrorMessages[nullOrEmptyToken],\r\n },\r\n endpointResolutionError: {\r\n code: endpointResolutionError,\r\n desc: ClientAuthErrorMessages[endpointResolutionError],\r\n },\r\n networkError: {\r\n code: networkError,\r\n desc: ClientAuthErrorMessages[networkError],\r\n },\r\n unableToGetOpenidConfigError: {\r\n code: openIdConfigError,\r\n desc: ClientAuthErrorMessages[openIdConfigError],\r\n },\r\n hashNotDeserialized: {\r\n code: hashNotDeserialized,\r\n desc: ClientAuthErrorMessages[hashNotDeserialized],\r\n },\r\n invalidStateError: {\r\n code: invalidState,\r\n desc: ClientAuthErrorMessages[invalidState],\r\n },\r\n stateMismatchError: {\r\n code: stateMismatch,\r\n desc: ClientAuthErrorMessages[stateMismatch],\r\n },\r\n stateNotFoundError: {\r\n code: stateNotFound,\r\n desc: ClientAuthErrorMessages[stateNotFound],\r\n },\r\n nonceMismatchError: {\r\n code: nonceMismatch,\r\n desc: ClientAuthErrorMessages[nonceMismatch],\r\n },\r\n authTimeNotFoundError: {\r\n code: authTimeNotFound,\r\n desc: ClientAuthErrorMessages[authTimeNotFound],\r\n },\r\n maxAgeTranspired: {\r\n code: maxAgeTranspired,\r\n desc: ClientAuthErrorMessages[maxAgeTranspired],\r\n },\r\n multipleMatchingTokens: {\r\n code: multipleMatchingTokens,\r\n desc: ClientAuthErrorMessages[multipleMatchingTokens],\r\n },\r\n multipleMatchingAccounts: {\r\n code: multipleMatchingAccounts,\r\n desc: ClientAuthErrorMessages[multipleMatchingAccounts],\r\n },\r\n multipleMatchingAppMetadata: {\r\n code: multipleMatchingAppMetadata,\r\n desc: ClientAuthErrorMessages[multipleMatchingAppMetadata],\r\n },\r\n tokenRequestCannotBeMade: {\r\n code: requestCannotBeMade,\r\n desc: ClientAuthErrorMessages[requestCannotBeMade],\r\n },\r\n removeEmptyScopeError: {\r\n code: cannotRemoveEmptyScope,\r\n desc: ClientAuthErrorMessages[cannotRemoveEmptyScope],\r\n },\r\n appendScopeSetError: {\r\n code: cannotAppendScopeSet,\r\n desc: ClientAuthErrorMessages[cannotAppendScopeSet],\r\n },\r\n emptyInputScopeSetError: {\r\n code: emptyInputScopeSet,\r\n desc: ClientAuthErrorMessages[emptyInputScopeSet],\r\n },\r\n DeviceCodePollingCancelled: {\r\n code: deviceCodePollingCancelled,\r\n desc: ClientAuthErrorMessages[deviceCodePollingCancelled],\r\n },\r\n DeviceCodeExpired: {\r\n code: deviceCodeExpired,\r\n desc: ClientAuthErrorMessages[deviceCodeExpired],\r\n },\r\n DeviceCodeUnknownError: {\r\n code: deviceCodeUnknownError,\r\n desc: ClientAuthErrorMessages[deviceCodeUnknownError],\r\n },\r\n NoAccountInSilentRequest: {\r\n code: noAccountInSilentRequest,\r\n desc: ClientAuthErrorMessages[noAccountInSilentRequest],\r\n },\r\n invalidCacheRecord: {\r\n code: invalidCacheRecord,\r\n desc: ClientAuthErrorMessages[invalidCacheRecord],\r\n },\r\n invalidCacheEnvironment: {\r\n code: invalidCacheEnvironment,\r\n desc: ClientAuthErrorMessages[invalidCacheEnvironment],\r\n },\r\n noAccountFound: {\r\n code: noAccountFound,\r\n desc: ClientAuthErrorMessages[noAccountFound],\r\n },\r\n noCryptoObj: {\r\n code: noCryptoObject,\r\n desc: ClientAuthErrorMessages[noCryptoObject],\r\n },\r\n unexpectedCredentialType: {\r\n code: unexpectedCredentialType,\r\n desc: ClientAuthErrorMessages[unexpectedCredentialType],\r\n },\r\n invalidAssertion: {\r\n code: invalidAssertion,\r\n desc: ClientAuthErrorMessages[invalidAssertion],\r\n },\r\n invalidClientCredential: {\r\n code: invalidClientCredential,\r\n desc: ClientAuthErrorMessages[invalidClientCredential],\r\n },\r\n tokenRefreshRequired: {\r\n code: tokenRefreshRequired,\r\n desc: ClientAuthErrorMessages[tokenRefreshRequired],\r\n },\r\n userTimeoutReached: {\r\n code: userTimeoutReached,\r\n desc: ClientAuthErrorMessages[userTimeoutReached],\r\n },\r\n tokenClaimsRequired: {\r\n code: tokenClaimsCnfRequiredForSignedJwt,\r\n desc: ClientAuthErrorMessages[tokenClaimsCnfRequiredForSignedJwt],\r\n },\r\n noAuthorizationCodeFromServer: {\r\n code: authorizationCodeMissingFromServerResponse,\r\n desc: ClientAuthErrorMessages[authorizationCodeMissingFromServerResponse],\r\n },\r\n bindingKeyNotRemovedError: {\r\n code: bindingKeyNotRemoved,\r\n desc: ClientAuthErrorMessages[bindingKeyNotRemoved],\r\n },\r\n logoutNotSupported: {\r\n code: endSessionEndpointNotSupported,\r\n desc: ClientAuthErrorMessages[endSessionEndpointNotSupported],\r\n },\r\n keyIdMissing: {\r\n code: keyIdMissing,\r\n desc: ClientAuthErrorMessages[keyIdMissing],\r\n },\r\n noNetworkConnectivity: {\r\n code: noNetworkConnectivity,\r\n desc: ClientAuthErrorMessages[noNetworkConnectivity],\r\n },\r\n userCanceledError: {\r\n code: userCanceled,\r\n desc: ClientAuthErrorMessages[userCanceled],\r\n },\r\n missingTenantIdError: {\r\n code: missingTenantIdError,\r\n desc: ClientAuthErrorMessages[missingTenantIdError],\r\n },\r\n nestedAppAuthBridgeDisabled: {\r\n code: nestedAppAuthBridgeDisabled,\r\n desc: ClientAuthErrorMessages[nestedAppAuthBridgeDisabled],\r\n },\r\n platformBrokerError: {\r\n code: platformBrokerError,\r\n desc: ClientAuthErrorMessages[platformBrokerError],\r\n },\r\n};\r\n/**\r\n * Error thrown when there is an error in the client code running on the browser.\r\n */\r\nclass ClientAuthError extends AuthError {\r\n constructor(errorCode, additionalMessage) {\r\n super(errorCode, additionalMessage\r\n ? `${ClientAuthErrorMessages[errorCode]}: ${additionalMessage}`\r\n : ClientAuthErrorMessages[errorCode]);\r\n this.name = \"ClientAuthError\";\r\n Object.setPrototypeOf(this, ClientAuthError.prototype);\r\n }\r\n}\r\nfunction createClientAuthError(errorCode, additionalMessage) {\r\n return new ClientAuthError(errorCode, additionalMessage);\r\n}\n\n/*! @azure/msal-common v15.13.2 2025-11-19 */\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nconst DEFAULT_CRYPTO_IMPLEMENTATION = {\r\n createNewGuid: () => {\r\n throw createClientAuthError(methodNotImplemented);\r\n },\r\n base64Decode: () => {\r\n throw createClientAuthError(methodNotImplemented);\r\n },\r\n base64Encode: () => {\r\n throw createClientAuthError(methodNotImplemented);\r\n },\r\n base64UrlEncode: () => {\r\n throw createClientAuthError(methodNotImplemented);\r\n },\r\n encodeKid: () => {\r\n throw createClientAuthError(methodNotImplemented);\r\n },\r\n async getPublicKeyThumbprint() {\r\n throw createClientAuthError(methodNotImplemented);\r\n },\r\n async removeTokenBindingKey() {\r\n throw createClientAuthError(methodNotImplemented);\r\n },\r\n async clearKeystore() {\r\n throw createClientAuthError(methodNotImplemented);\r\n },\r\n async signJwt() {\r\n throw createClientAuthError(methodNotImplemented);\r\n },\r\n async hashString() {\r\n throw createClientAuthError(methodNotImplemented);\r\n },\r\n};\n\n/*! @azure/msal-common v15.13.2 2025-11-19 */\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * Log message level.\r\n */\r\nexports.LogLevel = void 0;\r\n(function (LogLevel) {\r\n LogLevel[LogLevel[\"Error\"] = 0] = \"Error\";\r\n LogLevel[LogLevel[\"Warning\"] = 1] = \"Warning\";\r\n LogLevel[LogLevel[\"Info\"] = 2] = \"Info\";\r\n LogLevel[LogLevel[\"Verbose\"] = 3] = \"Verbose\";\r\n LogLevel[LogLevel[\"Trace\"] = 4] = \"Trace\";\r\n})(exports.LogLevel || (exports.LogLevel = {}));\r\n/**\r\n * Class which facilitates logging of messages to a specific place.\r\n */\r\nclass Logger {\r\n constructor(loggerOptions, packageName, packageVersion) {\r\n // Current log level, defaults to info.\r\n this.level = exports.LogLevel.Info;\r\n const defaultLoggerCallback = () => {\r\n return;\r\n };\r\n const setLoggerOptions = loggerOptions || Logger.createDefaultLoggerOptions();\r\n this.localCallback =\r\n setLoggerOptions.loggerCallback || defaultLoggerCallback;\r\n this.piiLoggingEnabled = setLoggerOptions.piiLoggingEnabled || false;\r\n this.level =\r\n typeof setLoggerOptions.logLevel === \"number\"\r\n ? setLoggerOptions.logLevel\r\n : exports.LogLevel.Info;\r\n this.correlationId =\r\n setLoggerOptions.correlationId || Constants$1.EMPTY_STRING;\r\n this.packageName = packageName || Constants$1.EMPTY_STRING;\r\n this.packageVersion = packageVersion || Constants$1.EMPTY_STRING;\r\n }\r\n static createDefaultLoggerOptions() {\r\n return {\r\n loggerCallback: () => {\r\n // allow users to not set loggerCallback\r\n },\r\n piiLoggingEnabled: false,\r\n logLevel: exports.LogLevel.Info,\r\n };\r\n }\r\n /**\r\n * Create new Logger with existing configurations.\r\n */\r\n clone(packageName, packageVersion, correlationId) {\r\n return new Logger({\r\n loggerCallback: this.localCallback,\r\n piiLoggingEnabled: this.piiLoggingEnabled,\r\n logLevel: this.level,\r\n correlationId: correlationId || this.correlationId,\r\n }, packageName, packageVersion);\r\n }\r\n /**\r\n * Log message with required options.\r\n */\r\n logMessage(logMessage, options) {\r\n if (options.logLevel > this.level ||\r\n (!this.piiLoggingEnabled && options.containsPii)) {\r\n return;\r\n }\r\n const timestamp = new Date().toUTCString();\r\n // Add correlationId to logs if set, correlationId provided on log messages take precedence\r\n const logHeader = `[${timestamp}] : [${options.correlationId || this.correlationId || \"\"}]`;\r\n const log = `${logHeader} : ${this.packageName}@${this.packageVersion} : ${exports.LogLevel[options.logLevel]} - ${logMessage}`;\r\n // debug(`msal:${LogLevel[options.logLevel]}${options.containsPii ? \"-Pii\": Constants.EMPTY_STRING}${options.context ? `:${options.context}` : Constants.EMPTY_STRING}`)(logMessage);\r\n this.executeCallback(options.logLevel, log, options.containsPii || false);\r\n }\r\n /**\r\n * Execute callback with message.\r\n */\r\n executeCallback(level, message, containsPii) {\r\n if (this.localCallback) {\r\n this.localCallback(level, message, containsPii);\r\n }\r\n }\r\n /**\r\n * Logs error messages.\r\n */\r\n error(message, correlationId) {\r\n this.logMessage(message, {\r\n logLevel: exports.LogLevel.Error,\r\n containsPii: false,\r\n correlationId: correlationId || Constants$1.EMPTY_STRING,\r\n });\r\n }\r\n /**\r\n * Logs error messages with PII.\r\n */\r\n errorPii(message, correlationId) {\r\n this.logMessage(message, {\r\n logLevel: exports.LogLevel.Error,\r\n containsPii: true,\r\n correlationId: correlationId || Constants$1.EMPTY_STRING,\r\n });\r\n }\r\n /**\r\n * Logs warning messages.\r\n */\r\n warning(message, correlationId) {\r\n this.logMessage(message, {\r\n logLevel: exports.LogLevel.Warning,\r\n containsPii: false,\r\n correlationId: correlationId || Constants$1.EMPTY_STRING,\r\n });\r\n }\r\n /**\r\n * Logs warning messages with PII.\r\n */\r\n warningPii(message, correlationId) {\r\n this.logMessage(message, {\r\n logLevel: exports.LogLevel.Warning,\r\n containsPii: true,\r\n correlationId: correlationId || Constants$1.EMPTY_STRING,\r\n });\r\n }\r\n /**\r\n * Logs info messages.\r\n */\r\n info(message, correlationId) {\r\n this.logMessage(message, {\r\n logLevel: exports.LogLevel.Info,\r\n containsPii: false,\r\n correlationId: correlationId || Constants$1.EMPTY_STRING,\r\n });\r\n }\r\n /**\r\n * Logs info messages with PII.\r\n */\r\n infoPii(message, correlationId) {\r\n this.logMessage(message, {\r\n logLevel: exports.LogLevel.Info,\r\n containsPii: true,\r\n correlationId: correlationId || Constants$1.EMPTY_STRING,\r\n });\r\n }\r\n /**\r\n * Logs verbose messages.\r\n */\r\n verbose(message, correlationId) {\r\n this.logMessage(message, {\r\n logLevel: exports.LogLevel.Verbose,\r\n containsPii: false,\r\n correlationId: correlationId || Constants$1.EMPTY_STRING,\r\n });\r\n }\r\n /**\r\n * Logs verbose messages with PII.\r\n */\r\n verbosePii(message, correlationId) {\r\n this.logMessage(message, {\r\n logLevel: exports.LogLevel.Verbose,\r\n containsPii: true,\r\n correlationId: correlationId || Constants$1.EMPTY_STRING,\r\n });\r\n }\r\n /**\r\n * Logs trace messages.\r\n */\r\n trace(message, correlationId) {\r\n this.logMessage(message, {\r\n logLevel: exports.LogLevel.Trace,\r\n containsPii: false,\r\n correlationId: correlationId || Constants$1.EMPTY_STRING,\r\n });\r\n }\r\n /**\r\n * Logs trace messages with PII.\r\n */\r\n tracePii(message, correlationId) {\r\n this.logMessage(message, {\r\n logLevel: exports.LogLevel.Trace,\r\n containsPii: true,\r\n correlationId: correlationId || Constants$1.EMPTY_STRING,\r\n });\r\n }\r\n /**\r\n * Returns whether PII Logging is enabled or not.\r\n */\r\n isPiiLoggingEnabled() {\r\n return this.piiLoggingEnabled || false;\r\n }\r\n}\n\n/*! @azure/msal-common v15.13.2 2025-11-19 */\n/* eslint-disable header/header */\r\nconst name$1 = \"@azure/msal-common\";\r\nconst version$1 = \"15.13.2\";\n\n/*! @azure/msal-common v15.13.2 2025-11-19 */\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nconst AzureCloudInstance = {\r\n // AzureCloudInstance is not specified.\r\n None: \"none\",\r\n // Microsoft Azure public cloud\r\n AzurePublic: \"https://login.microsoftonline.com\",\r\n // Microsoft PPE\r\n AzurePpe: \"https://login.windows-ppe.net\",\r\n // Microsoft Chinese national/regional cloud\r\n AzureChina: \"https://login.chinacloudapi.cn\",\r\n // Microsoft German national/regional cloud (\"Black Forest\")\r\n AzureGermany: \"https://login.microsoftonline.de\",\r\n // US Government cloud\r\n AzureUsGovernment: \"https://login.microsoftonline.us\",\r\n};\n\n/*! @azure/msal-common v15.13.2 2025-11-19 */\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nconst redirectUriEmpty = \"redirect_uri_empty\";\r\nconst claimsRequestParsingError = \"claims_request_parsing_error\";\r\nconst authorityUriInsecure = \"authority_uri_insecure\";\r\nconst urlParseError = \"url_parse_error\";\r\nconst urlEmptyError = \"empty_url_error\";\r\nconst emptyInputScopesError = \"empty_input_scopes_error\";\r\nconst invalidClaims = \"invalid_claims\";\r\nconst tokenRequestEmpty = \"token_request_empty\";\r\nconst logoutRequestEmpty = \"logout_request_empty\";\r\nconst invalidCodeChallengeMethod = \"invalid_code_challenge_method\";\r\nconst pkceParamsMissing = \"pkce_params_missing\";\r\nconst invalidCloudDiscoveryMetadata = \"invalid_cloud_discovery_metadata\";\r\nconst invalidAuthorityMetadata = \"invalid_authority_metadata\";\r\nconst untrustedAuthority = \"untrusted_authority\";\r\nconst missingSshJwk = \"missing_ssh_jwk\";\r\nconst missingSshKid = \"missing_ssh_kid\";\r\nconst missingNonceAuthenticationHeader = \"missing_nonce_authentication_header\";\r\nconst invalidAuthenticationHeader = \"invalid_authentication_header\";\r\nconst cannotSetOIDCOptions = \"cannot_set_OIDCOptions\";\r\nconst cannotAllowPlatformBroker = \"cannot_allow_platform_broker\";\r\nconst authorityMismatch = \"authority_mismatch\";\r\nconst invalidRequestMethodForEAR = \"invalid_request_method_for_EAR\";\r\nconst invalidAuthorizePostBodyParameters = \"invalid_authorize_post_body_parameters\";\n\nvar ClientConfigurationErrorCodes = /*#__PURE__*/Object.freeze({\n __proto__: null,\n authorityMismatch: authorityMismatch,\n authorityUriInsecure: authorityUriInsecure,\n cannotAllowPlatformBroker: cannotAllowPlatformBroker,\n cannotSetOIDCOptions: cannotSetOIDCOptions,\n claimsRequestParsingError: claimsRequestParsingError,\n emptyInputScopesError: emptyInputScopesError,\n invalidAuthenticationHeader: invalidAuthenticationHeader,\n invalidAuthorityMetadata: invalidAuthorityMetadata,\n invalidAuthorizePostBodyParameters: invalidAuthorizePostBodyParameters,\n invalidClaims: invalidClaims,\n invalidCloudDiscoveryMetadata: invalidCloudDiscoveryMetadata,\n invalidCodeChallengeMethod: invalidCodeChallengeMethod,\n invalidRequestMethodForEAR: invalidRequestMethodForEAR,\n logoutRequestEmpty: logoutRequestEmpty,\n missingNonceAuthenticationHeader: missingNonceAuthenticationHeader,\n missingSshJwk: missingSshJwk,\n missingSshKid: missingSshKid,\n pkceParamsMissing: pkceParamsMissing,\n redirectUriEmpty: redirectUriEmpty,\n tokenRequestEmpty: tokenRequestEmpty,\n untrustedAuthority: untrustedAuthority,\n urlEmptyError: urlEmptyError,\n urlParseError: urlParseError\n});\n\n/*! @azure/msal-common v15.13.2 2025-11-19 */\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nconst ClientConfigurationErrorMessages = {\r\n [redirectUriEmpty]: \"A redirect URI is required for all calls, and none has been set.\",\r\n [claimsRequestParsingError]: \"Could not parse the given claims request object.\",\r\n [authorityUriInsecure]: \"Authority URIs must use https. Please see here for valid authority configuration options: https://docs.microsoft.com/en-us/azure/active-directory/develop/msal-js-initializing-client-applications#configuration-options\",\r\n [urlParseError]: \"URL could not be parsed into appropriate segments.\",\r\n [urlEmptyError]: \"URL was empty or null.\",\r\n [emptyInputScopesError]: \"Scopes cannot be passed as null, undefined or empty array because they are required to obtain an access token.\",\r\n [invalidClaims]: \"Given claims parameter must be a stringified JSON object.\",\r\n [tokenRequestEmpty]: \"Token request was empty and not found in cache.\",\r\n [logoutRequestEmpty]: \"The logout request was null or undefined.\",\r\n [invalidCodeChallengeMethod]: 'code_challenge_method passed is invalid. Valid values are \"plain\" and \"S256\".',\r\n [pkceParamsMissing]: \"Both params: code_challenge and code_challenge_method are to be passed if to be sent in the request\",\r\n [invalidCloudDiscoveryMetadata]: \"Invalid cloudDiscoveryMetadata provided. Must be a stringified JSON object containing tenant_discovery_endpoint and metadata fields\",\r\n [invalidAuthorityMetadata]: \"Invalid authorityMetadata provided. Must by a stringified JSON object containing authorization_endpoint, token_endpoint, issuer fields.\",\r\n [untrustedAuthority]: \"The provided authority is not a trusted authority. Please include this authority in the knownAuthorities config parameter.\",\r\n [missingSshJwk]: \"Missing sshJwk in SSH certificate request. A stringified JSON Web Key is required when using the SSH authentication scheme.\",\r\n [missingSshKid]: \"Missing sshKid in SSH certificate request. A string that uniquely identifies the public SSH key is required when using the SSH authentication scheme.\",\r\n [missingNonceAuthenticationHeader]: \"Unable to find an authentication header containing server nonce. Either the Authentication-Info or WWW-Authenticate headers must be present in order to obtain a server nonce.\",\r\n [invalidAuthenticationHeader]: \"Invalid authentication header provided\",\r\n [cannotSetOIDCOptions]: \"Cannot set OIDCOptions parameter. Please change the protocol mode to OIDC or use a non-Microsoft authority.\",\r\n [cannotAllowPlatformBroker]: \"Cannot set allowPlatformBroker parameter to true when not in AAD protocol mode.\",\r\n [authorityMismatch]: \"Authority mismatch error. Authority provided in login request or PublicClientApplication config does not match the environment of the provided account. Please use a matching account or make an interactive request to login to this authority.\",\r\n [invalidAuthorizePostBodyParameters]: \"Invalid authorize post body parameters provided. If you are using authorizePostBodyParameters, the request method must be POST. Please check the request method and parameters.\",\r\n [invalidRequestMethodForEAR]: \"Invalid request method for EAR protocol mode. The request method cannot be GET when using EAR protocol mode. Please change the request method to POST.\",\r\n};\r\n/**\r\n * ClientConfigurationErrorMessage class containing string constants used by error codes and messages.\r\n * @deprecated Use ClientConfigurationErrorCodes instead\r\n */\r\nconst ClientConfigurationErrorMessage = {\r\n redirectUriNotSet: {\r\n code: redirectUriEmpty,\r\n desc: ClientConfigurationErrorMessages[redirectUriEmpty],\r\n },\r\n claimsRequestParsingError: {\r\n code: claimsRequestParsingError,\r\n desc: ClientConfigurationErrorMessages[claimsRequestParsingError],\r\n },\r\n authorityUriInsecure: {\r\n code: authorityUriInsecure,\r\n desc: ClientConfigurationErrorMessages[authorityUriInsecure],\r\n },\r\n urlParseError: {\r\n code: urlParseError,\r\n desc: ClientConfigurationErrorMessages[urlParseError],\r\n },\r\n urlEmptyError: {\r\n code: urlEmptyError,\r\n desc: ClientConfigurationErrorMessages[urlEmptyError],\r\n },\r\n emptyScopesError: {\r\n code: emptyInputScopesError,\r\n desc: ClientConfigurationErrorMessages[emptyInputScopesError],\r\n },\r\n invalidClaimsRequest: {\r\n code: invalidClaims,\r\n desc: ClientConfigurationErrorMessages[invalidClaims],\r\n },\r\n tokenRequestEmptyError: {\r\n code: tokenRequestEmpty,\r\n desc: ClientConfigurationErrorMessages[tokenRequestEmpty],\r\n },\r\n logoutRequestEmptyError: {\r\n code: logoutRequestEmpty,\r\n desc: ClientConfigurationErrorMessages[logoutRequestEmpty],\r\n },\r\n invalidCodeChallengeMethod: {\r\n code: invalidCodeChallengeMethod,\r\n desc: ClientConfigurationErrorMessages[invalidCodeChallengeMethod],\r\n },\r\n invalidCodeChallengeParams: {\r\n code: pkceParamsMissing,\r\n desc: ClientConfigurationErrorMessages[pkceParamsMissing],\r\n },\r\n invalidCloudDiscoveryMetadata: {\r\n code: invalidCloudDiscoveryMetadata,\r\n desc: ClientConfigurationErrorMessages[invalidCloudDiscoveryMetadata],\r\n },\r\n invalidAuthorityMetadata: {\r\n code: invalidAuthorityMetadata,\r\n desc: ClientConfigurationErrorMessages[invalidAuthorityMetadata],\r\n },\r\n untrustedAuthority: {\r\n code: untrustedAuthority,\r\n desc: ClientConfigurationErrorMessages[untrustedAuthority],\r\n },\r\n missingSshJwk: {\r\n code: missingSshJwk,\r\n desc: ClientConfigurationErrorMessages[missingSshJwk],\r\n },\r\n missingSshKid: {\r\n code: missingSshKid,\r\n desc: ClientConfigurationErrorMessages[missingSshKid],\r\n },\r\n missingNonceAuthenticationHeader: {\r\n code: missingNonceAuthenticationHeader,\r\n desc: ClientConfigurationErrorMessages[missingNonceAuthenticationHeader],\r\n },\r\n invalidAuthenticationHeader: {\r\n code: invalidAuthenticationHeader,\r\n desc: ClientConfigurationErrorMessages[invalidAuthenticationHeader],\r\n },\r\n cannotSetOIDCOptions: {\r\n code: cannotSetOIDCOptions,\r\n desc: ClientConfigurationErrorMessages[cannotSetOIDCOptions],\r\n },\r\n cannotAllowPlatformBroker: {\r\n code: cannotAllowPlatformBroker,\r\n desc: ClientConfigurationErrorMessages[cannotAllowPlatformBroker],\r\n },\r\n authorityMismatch: {\r\n code: authorityMismatch,\r\n desc: ClientConfigurationErrorMessages[authorityMismatch],\r\n },\r\n invalidAuthorizePostBodyParameters: {\r\n code: invalidAuthorizePostBodyParameters,\r\n desc: ClientConfigurationErrorMessages[invalidAuthorizePostBodyParameters],\r\n },\r\n invalidRequestMethodForEAR: {\r\n code: invalidRequestMethodForEAR,\r\n desc: ClientConfigurationErrorMessages[invalidRequestMethodForEAR],\r\n },\r\n};\r\n/**\r\n * Error thrown when there is an error in configuration of the MSAL.js library.\r\n */\r\nclass ClientConfigurationError extends AuthError {\r\n constructor(errorCode) {\r\n super(errorCode, ClientConfigurationErrorMessages[errorCode]);\r\n this.name = \"ClientConfigurationError\";\r\n Object.setPrototypeOf(this, ClientConfigurationError.prototype);\r\n }\r\n}\r\nfunction createClientConfigurationError(errorCode) {\r\n return new ClientConfigurationError(errorCode);\r\n}\n\n/*! @azure/msal-common v15.13.2 2025-11-19 */\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * @hidden\r\n */\r\nclass StringUtils {\r\n /**\r\n * Check if stringified object is empty\r\n * @param strObj\r\n */\r\n static isEmptyObj(strObj) {\r\n if (strObj) {\r\n try {\r\n const obj = JSON.parse(strObj);\r\n return Object.keys(obj).length === 0;\r\n }\r\n catch (e) { }\r\n }\r\n return true;\r\n }\r\n static startsWith(str, search) {\r\n return str.indexOf(search) === 0;\r\n }\r\n static endsWith(str, search) {\r\n return (str.length >= search.length &&\r\n str.lastIndexOf(search) === str.length - search.length);\r\n }\r\n /**\r\n * Parses string into an object.\r\n *\r\n * @param query\r\n */\r\n static queryStringToObject(query) {\r\n const obj = {};\r\n const params = query.split(\"&\");\r\n const decode = (s) => decodeURIComponent(s.replace(/\\+/g, \" \"));\r\n params.forEach((pair) => {\r\n if (pair.trim()) {\r\n const [key, value] = pair.split(/=(.+)/g, 2); // Split on the first occurence of the '=' character\r\n if (key && value) {\r\n obj[decode(key)] = decode(value);\r\n }\r\n }\r\n });\r\n return obj;\r\n }\r\n /**\r\n * Trims entries in an array.\r\n *\r\n * @param arr\r\n */\r\n static trimArrayEntries(arr) {\r\n return arr.map((entry) => entry.trim());\r\n }\r\n /**\r\n * Removes empty strings from array\r\n * @param arr\r\n */\r\n static removeEmptyStringsFromArray(arr) {\r\n return arr.filter((entry) => {\r\n return !!entry;\r\n });\r\n }\r\n /**\r\n * Attempts to parse a string into JSON\r\n * @param str\r\n */\r\n static jsonParseHelper(str) {\r\n try {\r\n return JSON.parse(str);\r\n }\r\n catch (e) {\r\n return null;\r\n }\r\n }\r\n /**\r\n * Tests if a given string matches a given pattern, with support for wildcards and queries.\r\n * @param pattern Wildcard pattern to string match. Supports \"*\" for wildcards and \"?\" for queries\r\n * @param input String to match against\r\n */\r\n static matchPattern(pattern, input) {\r\n /**\r\n * Wildcard support: https://stackoverflow.com/a/3117248/4888559\r\n * Queries: replaces \"?\" in string with escaped \"\\?\" for regex test\r\n */\r\n // eslint-disable-next-line security/detect-non-literal-regexp\r\n const regex = new RegExp(pattern\r\n .replace(/\\\\/g, \"\\\\\\\\\")\r\n .replace(/\\*/g, \"[^ ]*\")\r\n .replace(/\\?/g, \"\\\\?\"));\r\n return regex.test(input);\r\n }\r\n}\n\n/*! @azure/msal-common v15.13.2 2025-11-19 */\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * The ScopeSet class creates a set of scopes. Scopes are case-insensitive, unique values, so the Set object in JS makes\r\n * the most sense to implement for this class. All scopes are trimmed and converted to lower case strings in intersection and union functions\r\n * to ensure uniqueness of strings.\r\n */\r\nclass ScopeSet {\r\n constructor(inputScopes) {\r\n // Filter empty string and null/undefined array items\r\n const scopeArr = inputScopes\r\n ? StringUtils.trimArrayEntries([...inputScopes])\r\n : [];\r\n const filteredInput = scopeArr\r\n ? StringUtils.removeEmptyStringsFromArray(scopeArr)\r\n : [];\r\n // Check if scopes array has at least one member\r\n if (!filteredInput || !filteredInput.length) {\r\n throw createClientConfigurationError(emptyInputScopesError);\r\n }\r\n this.scopes = new Set(); // Iterator in constructor not supported by IE11\r\n filteredInput.forEach((scope) => this.scopes.add(scope));\r\n }\r\n /**\r\n * Factory method to create ScopeSet from space-delimited string\r\n * @param inputScopeString\r\n * @param appClientId\r\n * @param scopesRequired\r\n */\r\n static fromString(inputScopeString) {\r\n const scopeString = inputScopeString || Constants$1.EMPTY_STRING;\r\n const inputScopes = scopeString.split(\" \");\r\n return new ScopeSet(inputScopes);\r\n }\r\n /**\r\n * Creates the set of scopes to search for in cache lookups\r\n * @param inputScopeString\r\n * @returns\r\n */\r\n static createSearchScopes(inputScopeString) {\r\n // Handle empty scopes by using default OIDC scopes for cache lookup\r\n const scopesToUse = inputScopeString && inputScopeString.length > 0\r\n ? inputScopeString\r\n : [...OIDC_DEFAULT_SCOPES];\r\n const scopeSet = new ScopeSet(scopesToUse);\r\n if (!scopeSet.containsOnlyOIDCScopes()) {\r\n scopeSet.removeOIDCScopes();\r\n }\r\n else {\r\n scopeSet.removeScope(Constants$1.OFFLINE_ACCESS_SCOPE);\r\n }\r\n return scopeSet;\r\n }\r\n /**\r\n * Check if a given scope is present in this set of scopes.\r\n * @param scope\r\n */\r\n containsScope(scope) {\r\n const lowerCaseScopes = this.printScopesLowerCase().split(\" \");\r\n const lowerCaseScopesSet = new ScopeSet(lowerCaseScopes);\r\n // compare lowercase scopes\r\n return scope\r\n ? lowerCaseScopesSet.scopes.has(scope.toLowerCase())\r\n : false;\r\n }\r\n /**\r\n * Check if a set of scopes is present in this set of scopes.\r\n * @param scopeSet\r\n */\r\n containsScopeSet(scopeSet) {\r\n if (!scopeSet || scopeSet.scopes.size <= 0) {\r\n return false;\r\n }\r\n return (this.scopes.size >= scopeSet.scopes.size &&\r\n scopeSet.asArray().every((scope) => this.containsScope(scope)));\r\n }\r\n /**\r\n * Check if set of scopes contains only the defaults\r\n */\r\n containsOnlyOIDCScopes() {\r\n let defaultScopeCount = 0;\r\n OIDC_SCOPES.forEach((defaultScope) => {\r\n if (this.containsScope(defaultScope)) {\r\n defaultScopeCount += 1;\r\n }\r\n });\r\n return this.scopes.size === defaultScopeCount;\r\n }\r\n /**\r\n * Appends single scope if passed\r\n * @param newScope\r\n */\r\n appendScope(newScope) {\r\n if (newScope) {\r\n this.scopes.add(newScope.trim());\r\n }\r\n }\r\n /**\r\n * Appends multiple scopes if passed\r\n * @param newScopes\r\n */\r\n appendScopes(newScopes) {\r\n try {\r\n newScopes.forEach((newScope) => this.appendScope(newScope));\r\n }\r\n catch (e) {\r\n throw createClientAuthError(cannotAppendScopeSet);\r\n }\r\n }\r\n /**\r\n * Removes element from set of scopes.\r\n * @param scope\r\n */\r\n removeScope(scope) {\r\n if (!scope) {\r\n throw createClientAuthError(cannotRemoveEmptyScope);\r\n }\r\n this.scopes.delete(scope.trim());\r\n }\r\n /**\r\n * Removes default scopes from set of scopes\r\n * Primarily used to prevent cache misses if the default scopes are not returned from the server\r\n */\r\n removeOIDCScopes() {\r\n OIDC_SCOPES.forEach((defaultScope) => {\r\n this.scopes.delete(defaultScope);\r\n });\r\n }\r\n /**\r\n * Combines an array of scopes with the current set of scopes.\r\n * @param otherScopes\r\n */\r\n unionScopeSets(otherScopes) {\r\n if (!otherScopes) {\r\n throw createClientAuthError(emptyInputScopeSet);\r\n }\r\n const unionScopes = new Set(); // Iterator in constructor not supported in IE11\r\n otherScopes.scopes.forEach((scope) => unionScopes.add(scope.toLowerCase()));\r\n this.scopes.forEach((scope) => unionScopes.add(scope.toLowerCase()));\r\n return unionScopes;\r\n }\r\n /**\r\n * Check if scopes intersect between this set and another.\r\n * @param otherScopes\r\n */\r\n intersectingScopeSets(otherScopes) {\r\n if (!otherScopes) {\r\n throw createClientAuthError(emptyInputScopeSet);\r\n }\r\n // Do not allow OIDC scopes to be the only intersecting scopes\r\n if (!otherScopes.containsOnlyOIDCScopes()) {\r\n otherScopes.removeOIDCScopes();\r\n }\r\n const unionScopes = this.unionScopeSets(otherScopes);\r\n const sizeOtherScopes = otherScopes.getScopeCount();\r\n const sizeThisScopes = this.getScopeCount();\r\n const sizeUnionScopes = unionScopes.size;\r\n return sizeUnionScopes < sizeThisScopes + sizeOtherScopes;\r\n }\r\n /**\r\n * Returns size of set of scopes.\r\n */\r\n getScopeCount() {\r\n return this.scopes.size;\r\n }\r\n /**\r\n * Returns the scopes as an array of string values\r\n */\r\n asArray() {\r\n const array = [];\r\n this.scopes.forEach((val) => array.push(val));\r\n return array;\r\n }\r\n /**\r\n * Prints scopes into a space-delimited string\r\n */\r\n printScopes() {\r\n if (this.scopes) {\r\n const scopeArr = this.asArray();\r\n return scopeArr.join(\" \");\r\n }\r\n return Constants$1.EMPTY_STRING;\r\n }\r\n /**\r\n * Prints scopes into a space-delimited lower-case string (used for caching)\r\n */\r\n printScopesLowerCase() {\r\n return this.printScopes().toLowerCase();\r\n }\r\n}\n\n/*! @azure/msal-common v15.13.2 2025-11-19 */\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * Function to build a client info object from server clientInfo string\r\n * @param rawClientInfo\r\n * @param crypto\r\n */\r\nfunction buildClientInfo(rawClientInfo, base64Decode) {\r\n if (!rawClientInfo) {\r\n throw createClientAuthError(clientInfoEmptyError);\r\n }\r\n try {\r\n const decodedClientInfo = base64Decode(rawClientInfo);\r\n return JSON.parse(decodedClientInfo);\r\n }\r\n catch (e) {\r\n throw createClientAuthError(clientInfoDecodingError);\r\n }\r\n}\r\n/**\r\n * Function to build a client info object from cached homeAccountId string\r\n * @param homeAccountId\r\n */\r\nfunction buildClientInfoFromHomeAccountId(homeAccountId) {\r\n if (!homeAccountId) {\r\n throw createClientAuthError(clientInfoDecodingError);\r\n }\r\n const clientInfoParts = homeAccountId.split(Separators.CLIENT_INFO_SEPARATOR, 2);\r\n return {\r\n uid: clientInfoParts[0],\r\n utid: clientInfoParts.length < 2\r\n ? Constants$1.EMPTY_STRING\r\n : clientInfoParts[1],\r\n };\r\n}\n\n/*! @azure/msal-common v15.13.2 2025-11-19 */\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * Returns true if tenantId matches the utid portion of homeAccountId\r\n * @param tenantId\r\n * @param homeAccountId\r\n * @returns\r\n */\r\nfunction tenantIdMatchesHomeTenant(tenantId, homeAccountId) {\r\n return (!!tenantId &&\r\n !!homeAccountId &&\r\n tenantId === homeAccountId.split(\".\")[1]);\r\n}\r\n/**\r\n * Build tenant profile\r\n * @param homeAccountId - Home account identifier for this account object\r\n * @param localAccountId - Local account identifer for this account object\r\n * @param tenantId - Full tenant or organizational id that this account belongs to\r\n * @param idTokenClaims - Claims from the ID token\r\n * @returns\r\n */\r\nfunction buildTenantProfile(homeAccountId, localAccountId, tenantId, idTokenClaims) {\r\n if (idTokenClaims) {\r\n const { oid, sub, tid, name, tfp, acr, preferred_username, upn, login_hint, } = idTokenClaims;\r\n /**\r\n * Since there is no way to determine if the authority is AAD or B2C, we exhaust all the possible claims that can serve as tenant ID with the following precedence:\r\n * tid - TenantID claim that identifies the tenant that issued the token in AAD. Expected in all AAD ID tokens, not present in B2C ID Tokens.\r\n * tfp - Trust Framework Policy claim that identifies the policy that was used to authenticate the user. Functions as tenant for B2C scenarios.\r\n * acr - Authentication Context Class Reference claim used only with older B2C policies. Fallback in case tfp is not present, but likely won't be present anyway.\r\n */\r\n const tenantId = tid || tfp || acr || \"\";\r\n return {\r\n tenantId: tenantId,\r\n localAccountId: oid || sub || \"\",\r\n name: name,\r\n username: preferred_username || upn || \"\",\r\n loginHint: login_hint,\r\n isHomeTenant: tenantIdMatchesHomeTenant(tenantId, homeAccountId),\r\n };\r\n }\r\n else {\r\n return {\r\n tenantId,\r\n localAccountId,\r\n username: \"\",\r\n isHomeTenant: tenantIdMatchesHomeTenant(tenantId, homeAccountId),\r\n };\r\n }\r\n}\r\n/**\r\n * Replaces account info that varies by tenant profile sourced from the ID token claims passed in with the tenant-specific account info\r\n * @param baseAccountInfo\r\n * @param idTokenClaims\r\n * @returns\r\n */\r\nfunction updateAccountTenantProfileData(baseAccountInfo, tenantProfile, idTokenClaims, idTokenSecret) {\r\n let updatedAccountInfo = baseAccountInfo;\r\n // Tenant Profile overrides passed in account info\r\n if (tenantProfile) {\r\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n const { isHomeTenant, ...tenantProfileOverride } = tenantProfile;\r\n updatedAccountInfo = { ...baseAccountInfo, ...tenantProfileOverride };\r\n }\r\n // ID token claims override passed in account info and tenant profile\r\n if (idTokenClaims) {\r\n // Ignore isHomeTenant, loginHint, and sid which are part of tenant profile but not base account info\r\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n const { isHomeTenant, ...claimsSourcedTenantProfile } = buildTenantProfile(baseAccountInfo.homeAccountId, baseAccountInfo.localAccountId, baseAccountInfo.tenantId, idTokenClaims);\r\n updatedAccountInfo = {\r\n ...updatedAccountInfo,\r\n ...claimsSourcedTenantProfile,\r\n idTokenClaims: idTokenClaims,\r\n idToken: idTokenSecret,\r\n };\r\n return updatedAccountInfo;\r\n }\r\n return updatedAccountInfo;\r\n}\n\n/*! @azure/msal-common v15.13.2 2025-11-19 */\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * Authority types supported by MSAL.\r\n */\r\nconst AuthorityType = {\r\n Default: 0,\r\n Adfs: 1,\r\n Dsts: 2,\r\n Ciam: 3,\r\n};\n\n/*! @azure/msal-common v15.13.2 2025-11-19 */\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * Gets tenantId from available ID token claims to set as credential realm with the following precedence:\r\n * 1. tid - if the token is acquired from an Azure AD tenant tid will be present\r\n * 2. tfp - if the token is acquired from a modern B2C tenant tfp should be present\r\n * 3. acr - if the token is acquired from a legacy B2C tenant acr should be present\r\n * Downcased to match the realm case-insensitive comparison requirements\r\n * @param idTokenClaims\r\n * @returns\r\n */\r\nfunction getTenantIdFromIdTokenClaims(idTokenClaims) {\r\n if (idTokenClaims) {\r\n const tenantId = idTokenClaims.tid || idTokenClaims.tfp || idTokenClaims.acr;\r\n return tenantId || null;\r\n }\r\n return null;\r\n}\n\n/*! @azure/msal-common v15.13.2 2025-11-19 */\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * Protocol modes supported by MSAL.\r\n */\r\nconst ProtocolMode = {\r\n /**\r\n * Auth Code + PKCE with Entra ID (formerly AAD) specific optimizations and features\r\n */\r\n AAD: \"AAD\",\r\n /**\r\n * Auth Code + PKCE without Entra ID specific optimizations and features. For use only with non-Microsoft owned authorities.\r\n * Support is limited for this mode.\r\n */\r\n OIDC: \"OIDC\",\r\n /**\r\n * Encrypted Authorize Response (EAR) with Entra ID specific optimizations and features\r\n */\r\n EAR: \"EAR\",\r\n};\n\n/*! @azure/msal-common v15.13.2 2025-11-19 */\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * Type that defines required and optional parameters for an Account field (based on universal cache schema implemented by all MSALs).\r\n *\r\n * Key : Value Schema\r\n *\r\n * Key: --\r\n *\r\n * Value Schema:\r\n * {\r\n * homeAccountId: home account identifier for the auth scheme,\r\n * environment: entity that issued the token, represented as a full host\r\n * realm: Full tenant or organizational identifier that the account belongs to\r\n * localAccountId: Original tenant-specific accountID, usually used for legacy cases\r\n * username: primary username that represents the user, usually corresponds to preferred_username in the v2 endpt\r\n * authorityType: Accounts authority type as a string\r\n * name: Full name for the account, including given name and family name,\r\n * lastModificationTime: last time this entity was modified in the cache\r\n * lastModificationApp:\r\n * nativeAccountId: Account identifier on the native device\r\n * tenantProfiles: Array of tenant profile objects for each tenant that the account has authenticated with in the browser\r\n * }\r\n * @internal\r\n */\r\nclass AccountEntity {\r\n /**\r\n * Returns the AccountInfo interface for this account.\r\n */\r\n static getAccountInfo(accountEntity) {\r\n return {\r\n homeAccountId: accountEntity.homeAccountId,\r\n environment: accountEntity.environment,\r\n tenantId: accountEntity.realm,\r\n username: accountEntity.username,\r\n localAccountId: accountEntity.localAccountId,\r\n loginHint: accountEntity.loginHint,\r\n name: accountEntity.name,\r\n nativeAccountId: accountEntity.nativeAccountId,\r\n authorityType: accountEntity.authorityType,\r\n // Deserialize tenant profiles array into a Map\r\n tenantProfiles: new Map((accountEntity.tenantProfiles || []).map((tenantProfile) => {\r\n return [tenantProfile.tenantId, tenantProfile];\r\n })),\r\n dataBoundary: accountEntity.dataBoundary,\r\n };\r\n }\r\n /**\r\n * Returns true if the account entity is in single tenant format (outdated), false otherwise\r\n */\r\n isSingleTenant() {\r\n return !this.tenantProfiles;\r\n }\r\n /**\r\n * Build Account cache from IdToken, clientInfo and authority/policy. Associated with AAD.\r\n * @param accountDetails\r\n */\r\n static createAccount(accountDetails, authority, base64Decode) {\r\n const account = new AccountEntity();\r\n if (authority.authorityType === AuthorityType.Adfs) {\r\n account.authorityType = CacheAccountType.ADFS_ACCOUNT_TYPE;\r\n }\r\n else if (authority.protocolMode === ProtocolMode.OIDC) {\r\n account.authorityType = CacheAccountType.GENERIC_ACCOUNT_TYPE;\r\n }\r\n else {\r\n account.authorityType = CacheAccountType.MSSTS_ACCOUNT_TYPE;\r\n }\r\n let clientInfo;\r\n if (accountDetails.clientInfo && base64Decode) {\r\n clientInfo = buildClientInfo(accountDetails.clientInfo, base64Decode);\r\n if (clientInfo.xms_tdbr) {\r\n account.dataBoundary =\r\n clientInfo.xms_tdbr === \"EU\" ? \"EU\" : \"None\";\r\n }\r\n }\r\n account.clientInfo = accountDetails.clientInfo;\r\n account.homeAccountId = accountDetails.homeAccountId;\r\n account.nativeAccountId = accountDetails.nativeAccountId;\r\n const env = accountDetails.environment ||\r\n (authority && authority.getPreferredCache());\r\n if (!env) {\r\n throw createClientAuthError(invalidCacheEnvironment);\r\n }\r\n account.environment = env;\r\n // non AAD scenarios can have empty realm\r\n account.realm =\r\n clientInfo?.utid ||\r\n getTenantIdFromIdTokenClaims(accountDetails.idTokenClaims) ||\r\n \"\";\r\n // How do you account for MSA CID here?\r\n account.localAccountId =\r\n clientInfo?.uid ||\r\n accountDetails.idTokenClaims?.oid ||\r\n accountDetails.idTokenClaims?.sub ||\r\n \"\";\r\n /*\r\n * In B2C scenarios the emails claim is used instead of preferred_username and it is an array.\r\n * In most cases it will contain a single email. This field should not be relied upon if a custom\r\n * policy is configured to return more than 1 email.\r\n */\r\n const preferredUsername = accountDetails.idTokenClaims?.preferred_username ||\r\n accountDetails.idTokenClaims?.upn;\r\n const email = accountDetails.idTokenClaims?.emails\r\n ? accountDetails.idTokenClaims.emails[0]\r\n : null;\r\n account.username = preferredUsername || email || \"\";\r\n account.loginHint = accountDetails.idTokenClaims?.login_hint;\r\n account.name = accountDetails.idTokenClaims?.name || \"\";\r\n account.cloudGraphHostName = accountDetails.cloudGraphHostName;\r\n account.msGraphHost = accountDetails.msGraphHost;\r\n if (accountDetails.tenantProfiles) {\r\n account.tenantProfiles = accountDetails.tenantProfiles;\r\n }\r\n else {\r\n const tenantProfile = buildTenantProfile(accountDetails.homeAccountId, account.localAccountId, account.realm, accountDetails.idTokenClaims);\r\n account.tenantProfiles = [tenantProfile];\r\n }\r\n return account;\r\n }\r\n /**\r\n * Creates an AccountEntity object from AccountInfo\r\n * @param accountInfo\r\n * @param cloudGraphHostName\r\n * @param msGraphHost\r\n * @returns\r\n */\r\n static createFromAccountInfo(accountInfo, cloudGraphHostName, msGraphHost) {\r\n const account = new AccountEntity();\r\n account.authorityType =\r\n accountInfo.authorityType || CacheAccountType.GENERIC_ACCOUNT_TYPE;\r\n account.homeAccountId = accountInfo.homeAccountId;\r\n account.localAccountId = accountInfo.localAccountId;\r\n account.nativeAccountId = accountInfo.nativeAccountId;\r\n account.realm = accountInfo.tenantId;\r\n account.environment = accountInfo.environment;\r\n account.username = accountInfo.username;\r\n account.name = accountInfo.name;\r\n account.loginHint = accountInfo.loginHint;\r\n account.cloudGraphHostName = cloudGraphHostName;\r\n account.msGraphHost = msGraphHost;\r\n // Serialize tenant profiles map into an array\r\n account.tenantProfiles = Array.from(accountInfo.tenantProfiles?.values() || []);\r\n account.dataBoundary = accountInfo.dataBoundary;\r\n return account;\r\n }\r\n /**\r\n * Generate HomeAccountId from server response\r\n * @param serverClientInfo\r\n * @param authType\r\n */\r\n static generateHomeAccountId(serverClientInfo, authType, logger, cryptoObj, idTokenClaims) {\r\n // since ADFS/DSTS do not have tid and does not set client_info\r\n if (!(authType === AuthorityType.Adfs ||\r\n authType === AuthorityType.Dsts)) {\r\n // for cases where there is clientInfo\r\n if (serverClientInfo) {\r\n try {\r\n const clientInfo = buildClientInfo(serverClientInfo, cryptoObj.base64Decode);\r\n if (clientInfo.uid && clientInfo.utid) {\r\n return `${clientInfo.uid}.${clientInfo.utid}`;\r\n }\r\n }\r\n catch (e) { }\r\n }\r\n logger.warning(\"No client info in response\");\r\n }\r\n // default to \"sub\" claim\r\n return idTokenClaims?.sub || \"\";\r\n }\r\n /**\r\n * Validates an entity: checks for all expected params\r\n * @param entity\r\n */\r\n static isAccountEntity(entity) {\r\n if (!entity) {\r\n return false;\r\n }\r\n return (entity.hasOwnProperty(\"homeAccountId\") &&\r\n entity.hasOwnProperty(\"environment\") &&\r\n entity.hasOwnProperty(\"realm\") &&\r\n entity.hasOwnProperty(\"localAccountId\") &&\r\n entity.hasOwnProperty(\"username\") &&\r\n entity.hasOwnProperty(\"authorityType\"));\r\n }\r\n /**\r\n * Helper function to determine whether 2 accountInfo objects represent the same account\r\n * @param accountA\r\n * @param accountB\r\n * @param compareClaims - If set to true idTokenClaims will also be compared to determine account equality\r\n */\r\n static accountInfoIsEqual(accountA, accountB, compareClaims) {\r\n if (!accountA || !accountB) {\r\n return false;\r\n }\r\n let claimsMatch = true; // default to true so as to not fail comparison below if compareClaims: false\r\n if (compareClaims) {\r\n const accountAClaims = (accountA.idTokenClaims ||\r\n {});\r\n const accountBClaims = (accountB.idTokenClaims ||\r\n {});\r\n // issued at timestamp and nonce are expected to change each time a new id token is acquired\r\n claimsMatch =\r\n accountAClaims.iat === accountBClaims.iat &&\r\n accountAClaims.nonce === accountBClaims.nonce;\r\n }\r\n return (accountA.homeAccountId === accountB.homeAccountId &&\r\n accountA.localAccountId === accountB.localAccountId &&\r\n accountA.username === accountB.username &&\r\n accountA.tenantId === accountB.tenantId &&\r\n accountA.loginHint === accountB.loginHint &&\r\n accountA.environment === accountB.environment &&\r\n accountA.nativeAccountId === accountB.nativeAccountId &&\r\n claimsMatch);\r\n }\r\n}\n\n/*! @azure/msal-common v15.13.2 2025-11-19 */\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * Extract token by decoding the rawToken\r\n *\r\n * @param encodedToken\r\n */\r\nfunction extractTokenClaims(encodedToken, base64Decode) {\r\n const jswPayload = getJWSPayload(encodedToken);\r\n // token will be decoded to get the username\r\n try {\r\n // base64Decode() should throw an error if there is an issue\r\n const base64Decoded = base64Decode(jswPayload);\r\n return JSON.parse(base64Decoded);\r\n }\r\n catch (err) {\r\n throw createClientAuthError(tokenParsingError);\r\n }\r\n}\r\n/**\r\n * Check if the signin_state claim contains \"kmsi\"\r\n * @param idTokenClaims\r\n * @returns\r\n */\r\nfunction isKmsi(idTokenClaims) {\r\n if (!idTokenClaims.signin_state) {\r\n return false;\r\n }\r\n /**\r\n * Signin_state claim known values:\r\n * dvc_mngd - device is managed\r\n * dvc_dmjd - device is domain joined\r\n * kmsi - user opted to \"keep me signed in\"\r\n * inknownntwk - Request made inside a known network. Don't use this, use CAE instead.\r\n */\r\n const kmsiClaims = [\"kmsi\", \"dvc_dmjd\"]; // There are some cases where kmsi may not be returned but persistent storage is still OK - allow dvc_dmjd as well\r\n const kmsi = idTokenClaims.signin_state.some((value) => kmsiClaims.includes(value.trim().toLowerCase()));\r\n return kmsi;\r\n}\r\n/**\r\n * decode a JWT\r\n *\r\n * @param authToken\r\n */\r\nfunction getJWSPayload(authToken) {\r\n if (!authToken) {\r\n throw createClientAuthError(nullOrEmptyToken);\r\n }\r\n const tokenPartsRegex = /^([^\\.\\s]*)\\.([^\\.\\s]+)\\.([^\\.\\s]*)$/;\r\n const matches = tokenPartsRegex.exec(authToken);\r\n if (!matches || matches.length < 4) {\r\n throw createClientAuthError(tokenParsingError);\r\n }\r\n /**\r\n * const crackedToken = {\r\n * header: matches[1],\r\n * JWSPayload: matches[2],\r\n * JWSSig: matches[3],\r\n * };\r\n */\r\n return matches[2];\r\n}\r\n/**\r\n * Determine if the token's max_age has transpired\r\n */\r\nfunction checkMaxAge(authTime, maxAge) {\r\n /*\r\n * per https://openid.net/specs/openid-connect-core-1_0.html#AuthRequest\r\n * To force an immediate re-authentication: If an app requires that a user re-authenticate prior to access,\r\n * provide a value of 0 for the max_age parameter and the AS will force a fresh login.\r\n */\r\n const fiveMinuteSkew = 300000; // five minutes in milliseconds\r\n if (maxAge === 0 || Date.now() - fiveMinuteSkew > authTime + maxAge) {\r\n throw createClientAuthError(maxAgeTranspired);\r\n }\r\n}\n\n/*! @azure/msal-common v15.13.2 2025-11-19 */\n/**\r\n * Parses hash string from given string. Returns empty string if no hash symbol is found.\r\n * @param hashString\r\n */\r\nfunction stripLeadingHashOrQuery(responseString) {\r\n if (responseString.startsWith(\"#/\")) {\r\n return responseString.substring(2);\r\n }\r\n else if (responseString.startsWith(\"#\") ||\r\n responseString.startsWith(\"?\")) {\r\n return responseString.substring(1);\r\n }\r\n return responseString;\r\n}\r\n/**\r\n * Returns URL hash as server auth code response object.\r\n */\r\nfunction getDeserializedResponse(responseString) {\r\n // Check if given hash is empty\r\n if (!responseString || responseString.indexOf(\"=\") < 0) {\r\n return null;\r\n }\r\n try {\r\n // Strip the # or ? symbol if present\r\n const normalizedResponse = stripLeadingHashOrQuery(responseString);\r\n // If # symbol was not present, above will return empty string, so give original hash value\r\n const deserializedHash = Object.fromEntries(new URLSearchParams(normalizedResponse));\r\n // Check for known response properties\r\n if (deserializedHash.code ||\r\n deserializedHash.ear_jwe ||\r\n deserializedHash.error ||\r\n deserializedHash.error_description ||\r\n deserializedHash.state) {\r\n return deserializedHash;\r\n }\r\n }\r\n catch (e) {\r\n throw createClientAuthError(hashNotDeserialized);\r\n }\r\n return null;\r\n}\r\n/**\r\n * Utility to create a URL from the params map\r\n */\r\nfunction mapToQueryString(parameters, encodeExtraParams = true, extraQueryParameters) {\r\n const queryParameterArray = new Array();\r\n parameters.forEach((value, key) => {\r\n if (!encodeExtraParams &&\r\n extraQueryParameters &&\r\n key in extraQueryParameters) {\r\n queryParameterArray.push(`${key}=${value}`);\r\n }\r\n else {\r\n queryParameterArray.push(`${key}=${encodeURIComponent(value)}`);\r\n }\r\n });\r\n return queryParameterArray.join(\"&\");\r\n}\n\n/*! @azure/msal-common v15.13.2 2025-11-19 */\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * Url object class which can perform various transformations on url strings.\r\n */\r\nclass UrlString {\r\n get urlString() {\r\n return this._urlString;\r\n }\r\n constructor(url) {\r\n this._urlString = url;\r\n if (!this._urlString) {\r\n // Throws error if url is empty\r\n throw createClientConfigurationError(urlEmptyError);\r\n }\r\n if (!url.includes(\"#\")) {\r\n this._urlString = UrlString.canonicalizeUri(url);\r\n }\r\n }\r\n /**\r\n * Ensure urls are lower case and end with a / character.\r\n * @param url\r\n */\r\n static canonicalizeUri(url) {\r\n if (url) {\r\n let lowerCaseUrl = url.toLowerCase();\r\n if (StringUtils.endsWith(lowerCaseUrl, \"?\")) {\r\n lowerCaseUrl = lowerCaseUrl.slice(0, -1);\r\n }\r\n else if (StringUtils.endsWith(lowerCaseUrl, \"?/\")) {\r\n lowerCaseUrl = lowerCaseUrl.slice(0, -2);\r\n }\r\n if (!StringUtils.endsWith(lowerCaseUrl, \"/\")) {\r\n lowerCaseUrl += \"/\";\r\n }\r\n return lowerCaseUrl;\r\n }\r\n return url;\r\n }\r\n /**\r\n * Throws if urlString passed is not a valid authority URI string.\r\n */\r\n validateAsUri() {\r\n // Attempts to parse url for uri components\r\n let components;\r\n try {\r\n components = this.getUrlComponents();\r\n }\r\n catch (e) {\r\n throw createClientConfigurationError(urlParseError);\r\n }\r\n // Throw error if URI or path segments are not parseable.\r\n if (!components.HostNameAndPort || !components.PathSegments) {\r\n throw createClientConfigurationError(urlParseError);\r\n }\r\n // Throw error if uri is insecure.\r\n if (!components.Protocol ||\r\n components.Protocol.toLowerCase() !== \"https:\") {\r\n throw createClientConfigurationError(authorityUriInsecure);\r\n }\r\n }\r\n /**\r\n * Given a url and a query string return the url with provided query string appended\r\n * @param url\r\n * @param queryString\r\n */\r\n static appendQueryString(url, queryString) {\r\n if (!queryString) {\r\n return url;\r\n }\r\n return url.indexOf(\"?\") < 0\r\n ? `${url}?${queryString}`\r\n : `${url}&${queryString}`;\r\n }\r\n /**\r\n * Returns a url with the hash removed\r\n * @param url\r\n */\r\n static removeHashFromUrl(url) {\r\n return UrlString.canonicalizeUri(url.split(\"#\")[0]);\r\n }\r\n /**\r\n * Given a url like https://a:b/common/d?e=f#g, and a tenantId, returns https://a:b/tenantId/d\r\n * @param href The url\r\n * @param tenantId The tenant id to replace\r\n */\r\n replaceTenantPath(tenantId) {\r\n const urlObject = this.getUrlComponents();\r\n const pathArray = urlObject.PathSegments;\r\n if (tenantId &&\r\n pathArray.length !== 0 &&\r\n (pathArray[0] === AADAuthorityConstants.COMMON ||\r\n pathArray[0] === AADAuthorityConstants.ORGANIZATIONS)) {\r\n pathArray[0] = tenantId;\r\n }\r\n return UrlString.constructAuthorityUriFromObject(urlObject);\r\n }\r\n /**\r\n * Parses out the components from a url string.\r\n * @returns An object with the various components. Please cache this value insted of calling this multiple times on the same url.\r\n */\r\n getUrlComponents() {\r\n // https://gist.github.com/curtisz/11139b2cfcaef4a261e0\r\n const regEx = RegExp(\"^(([^:/?#]+):)?(//([^/?#]*))?([^?#]*)(\\\\?([^#]*))?(#(.*))?\");\r\n // If url string does not match regEx, we throw an error\r\n const match = this.urlString.match(regEx);\r\n if (!match) {\r\n throw createClientConfigurationError(urlParseError);\r\n }\r\n // Url component object\r\n const urlComponents = {\r\n Protocol: match[1],\r\n HostNameAndPort: match[4],\r\n AbsolutePath: match[5],\r\n QueryString: match[7],\r\n };\r\n let pathSegments = urlComponents.AbsolutePath.split(\"/\");\r\n pathSegments = pathSegments.filter((val) => val && val.length > 0); // remove empty elements\r\n urlComponents.PathSegments = pathSegments;\r\n if (urlComponents.QueryString &&\r\n urlComponents.QueryString.endsWith(\"/\")) {\r\n urlComponents.QueryString = urlComponents.QueryString.substring(0, urlComponents.QueryString.length - 1);\r\n }\r\n return urlComponents;\r\n }\r\n static getDomainFromUrl(url) {\r\n const regEx = RegExp(\"^([^:/?#]+://)?([^/?#]*)\");\r\n const match = url.match(regEx);\r\n if (!match) {\r\n throw createClientConfigurationError(urlParseError);\r\n }\r\n return match[2];\r\n }\r\n static getAbsoluteUrl(relativeUrl, baseUrl) {\r\n if (relativeUrl[0] === Constants$1.FORWARD_SLASH) {\r\n const url = new UrlString(baseUrl);\r\n const baseComponents = url.getUrlComponents();\r\n return (baseComponents.Protocol +\r\n \"//\" +\r\n baseComponents.HostNameAndPort +\r\n relativeUrl);\r\n }\r\n return relativeUrl;\r\n }\r\n static constructAuthorityUriFromObject(urlObject) {\r\n return new UrlString(urlObject.Protocol +\r\n \"//\" +\r\n urlObject.HostNameAndPort +\r\n \"/\" +\r\n urlObject.PathSegments.join(\"/\"));\r\n }\r\n /**\r\n * Check if the hash of the URL string contains known properties\r\n * @deprecated This API will be removed in a future version\r\n */\r\n static hashContainsKnownProperties(response) {\r\n return !!getDeserializedResponse(response);\r\n }\r\n}\n\n/*! @azure/msal-common v15.13.2 2025-11-19 */\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nconst rawMetdataJSON = {\r\n endpointMetadata: {\r\n \"login.microsoftonline.com\": {\r\n token_endpoint: \"https://login.microsoftonline.com/{tenantid}/oauth2/v2.0/token\",\r\n jwks_uri: \"https://login.microsoftonline.com/{tenantid}/discovery/v2.0/keys\",\r\n issuer: \"https://login.microsoftonline.com/{tenantid}/v2.0\",\r\n authorization_endpoint: \"https://login.microsoftonline.com/{tenantid}/oauth2/v2.0/authorize\",\r\n end_session_endpoint: \"https://login.microsoftonline.com/{tenantid}/oauth2/v2.0/logout\",\r\n },\r\n \"login.chinacloudapi.cn\": {\r\n token_endpoint: \"https://login.chinacloudapi.cn/{tenantid}/oauth2/v2.0/token\",\r\n jwks_uri: \"https://login.chinacloudapi.cn/{tenantid}/discovery/v2.0/keys\",\r\n issuer: \"https://login.partner.microsoftonline.cn/{tenantid}/v2.0\",\r\n authorization_endpoint: \"https://login.chinacloudapi.cn/{tenantid}/oauth2/v2.0/authorize\",\r\n end_session_endpoint: \"https://login.chinacloudapi.cn/{tenantid}/oauth2/v2.0/logout\",\r\n },\r\n \"login.microsoftonline.us\": {\r\n token_endpoint: \"https://login.microsoftonline.us/{tenantid}/oauth2/v2.0/token\",\r\n jwks_uri: \"https://login.microsoftonline.us/{tenantid}/discovery/v2.0/keys\",\r\n issuer: \"https://login.microsoftonline.us/{tenantid}/v2.0\",\r\n authorization_endpoint: \"https://login.microsoftonline.us/{tenantid}/oauth2/v2.0/authorize\",\r\n end_session_endpoint: \"https://login.microsoftonline.us/{tenantid}/oauth2/v2.0/logout\",\r\n },\r\n },\r\n instanceDiscoveryMetadata: {\r\n metadata: [\r\n {\r\n preferred_network: \"login.microsoftonline.com\",\r\n preferred_cache: \"login.windows.net\",\r\n aliases: [\r\n \"login.microsoftonline.com\",\r\n \"login.windows.net\",\r\n \"login.microsoft.com\",\r\n \"sts.windows.net\",\r\n ],\r\n },\r\n {\r\n preferred_network: \"login.partner.microsoftonline.cn\",\r\n preferred_cache: \"login.partner.microsoftonline.cn\",\r\n aliases: [\r\n \"login.partner.microsoftonline.cn\",\r\n \"login.chinacloudapi.cn\",\r\n ],\r\n },\r\n {\r\n preferred_network: \"login.microsoftonline.de\",\r\n preferred_cache: \"login.microsoftonline.de\",\r\n aliases: [\"login.microsoftonline.de\"],\r\n },\r\n {\r\n preferred_network: \"login.microsoftonline.us\",\r\n preferred_cache: \"login.microsoftonline.us\",\r\n aliases: [\r\n \"login.microsoftonline.us\",\r\n \"login.usgovcloudapi.net\",\r\n ],\r\n },\r\n {\r\n preferred_network: \"login-us.microsoftonline.com\",\r\n preferred_cache: \"login-us.microsoftonline.com\",\r\n aliases: [\"login-us.microsoftonline.com\"],\r\n },\r\n ],\r\n },\r\n};\r\nconst EndpointMetadata = rawMetdataJSON.endpointMetadata;\r\nconst InstanceDiscoveryMetadata = rawMetdataJSON.instanceDiscoveryMetadata;\r\nconst InstanceDiscoveryMetadataAliases = new Set();\r\nInstanceDiscoveryMetadata.metadata.forEach((metadataEntry) => {\r\n metadataEntry.aliases.forEach((alias) => {\r\n InstanceDiscoveryMetadataAliases.add(alias);\r\n });\r\n});\r\n/**\r\n * Attempts to get an aliases array from the static authority metadata sources based on the canonical authority host\r\n * @param staticAuthorityOptions\r\n * @param logger\r\n * @returns\r\n */\r\nfunction getAliasesFromStaticSources(staticAuthorityOptions, logger) {\r\n let staticAliases;\r\n const canonicalAuthority = staticAuthorityOptions.canonicalAuthority;\r\n if (canonicalAuthority) {\r\n const authorityHost = new UrlString(canonicalAuthority).getUrlComponents().HostNameAndPort;\r\n staticAliases =\r\n getAliasesFromMetadata(authorityHost, staticAuthorityOptions.cloudDiscoveryMetadata?.metadata, AuthorityMetadataSource.CONFIG, logger) ||\r\n getAliasesFromMetadata(authorityHost, InstanceDiscoveryMetadata.metadata, AuthorityMetadataSource.HARDCODED_VALUES, logger) ||\r\n staticAuthorityOptions.knownAuthorities;\r\n }\r\n return staticAliases || [];\r\n}\r\n/**\r\n * Returns aliases for from the raw cloud discovery metadata passed in\r\n * @param authorityHost\r\n * @param rawCloudDiscoveryMetadata\r\n * @returns\r\n */\r\nfunction getAliasesFromMetadata(authorityHost, cloudDiscoveryMetadata, source, logger) {\r\n logger?.trace(`getAliasesFromMetadata called with source: ${source}`);\r\n if (authorityHost && cloudDiscoveryMetadata) {\r\n const metadata = getCloudDiscoveryMetadataFromNetworkResponse(cloudDiscoveryMetadata, authorityHost);\r\n if (metadata) {\r\n logger?.trace(`getAliasesFromMetadata: found cloud discovery metadata in ${source}, returning aliases`);\r\n return metadata.aliases;\r\n }\r\n else {\r\n logger?.trace(`getAliasesFromMetadata: did not find cloud discovery metadata in ${source}`);\r\n }\r\n }\r\n return null;\r\n}\r\n/**\r\n * Get cloud discovery metadata for common authorities\r\n */\r\nfunction getCloudDiscoveryMetadataFromHardcodedValues(authorityHost) {\r\n const metadata = getCloudDiscoveryMetadataFromNetworkResponse(InstanceDiscoveryMetadata.metadata, authorityHost);\r\n return metadata;\r\n}\r\n/**\r\n * Searches instance discovery network response for the entry that contains the host in the aliases list\r\n * @param response\r\n * @param authority\r\n */\r\nfunction getCloudDiscoveryMetadataFromNetworkResponse(response, authorityHost) {\r\n for (let i = 0; i < response.length; i++) {\r\n const metadata = response[i];\r\n if (metadata.aliases.includes(authorityHost)) {\r\n return metadata;\r\n }\r\n }\r\n return null;\r\n}\n\n/*! @azure/msal-common v15.13.2 2025-11-19 */\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nconst cacheQuotaExceeded = \"cache_quota_exceeded\";\r\nconst cacheErrorUnknown = \"cache_error_unknown\";\n\n/*! @azure/msal-common v15.13.2 2025-11-19 */\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nconst CacheErrorMessages = {\r\n [cacheQuotaExceeded]: \"Exceeded cache storage capacity.\",\r\n [cacheErrorUnknown]: \"Unexpected error occurred when using cache storage.\",\r\n};\r\n/**\r\n * Error thrown when there is an error with the cache\r\n */\r\nclass CacheError extends AuthError {\r\n constructor(errorCode, errorMessage) {\r\n const message = errorMessage ||\r\n (CacheErrorMessages[errorCode]\r\n ? CacheErrorMessages[errorCode]\r\n : CacheErrorMessages[cacheErrorUnknown]);\r\n super(`${errorCode}: ${message}`);\r\n Object.setPrototypeOf(this, CacheError.prototype);\r\n this.name = \"CacheError\";\r\n this.errorCode = errorCode;\r\n this.errorMessage = message;\r\n }\r\n}\r\n/**\r\n * Helper function to wrap browser errors in a CacheError object\r\n * @param e\r\n * @returns\r\n */\r\nfunction createCacheError(e) {\r\n if (!(e instanceof Error)) {\r\n return new CacheError(cacheErrorUnknown);\r\n }\r\n if (e.name === \"QuotaExceededError\" ||\r\n e.name === \"NS_ERROR_DOM_QUOTA_REACHED\" ||\r\n e.message.includes(\"exceeded the quota\")) {\r\n return new CacheError(cacheQuotaExceeded);\r\n }\r\n else {\r\n return new CacheError(e.name, e.message);\r\n }\r\n}\n\n/*! @azure/msal-common v15.13.2 2025-11-19 */\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * Interface class which implement cache storage functions used by MSAL to perform validity checks, and store tokens.\r\n * @internal\r\n */\r\nclass CacheManager {\r\n constructor(clientId, cryptoImpl, logger, performanceClient, staticAuthorityOptions) {\r\n this.clientId = clientId;\r\n this.cryptoImpl = cryptoImpl;\r\n this.commonLogger = logger.clone(name$1, version$1);\r\n this.staticAuthorityOptions = staticAuthorityOptions;\r\n this.performanceClient = performanceClient;\r\n }\r\n /**\r\n * Returns all the accounts in the cache that match the optional filter. If no filter is provided, all accounts are returned.\r\n * @param accountFilter - (Optional) filter to narrow down the accounts returned\r\n * @returns Array of AccountInfo objects in cache\r\n */\r\n getAllAccounts(accountFilter, correlationId) {\r\n return this.buildTenantProfiles(this.getAccountsFilteredBy(accountFilter, correlationId), correlationId, accountFilter);\r\n }\r\n /**\r\n * Gets first tenanted AccountInfo object found based on provided filters\r\n */\r\n getAccountInfoFilteredBy(accountFilter, correlationId) {\r\n if (Object.keys(accountFilter).length === 0 ||\r\n Object.values(accountFilter).every((value) => !value)) {\r\n this.commonLogger.warning(\"getAccountInfoFilteredBy: Account filter is empty or invalid, returning null\");\r\n return null;\r\n }\r\n const allAccounts = this.getAllAccounts(accountFilter, correlationId);\r\n if (allAccounts.length > 1) {\r\n // If one or more accounts are found, prioritize accounts that have an ID token\r\n const sortedAccounts = allAccounts.sort((account) => {\r\n return account.idTokenClaims ? -1 : 1;\r\n });\r\n return sortedAccounts[0];\r\n }\r\n else if (allAccounts.length === 1) {\r\n // If only one account is found, return it regardless of whether a matching ID token was found\r\n return allAccounts[0];\r\n }\r\n else {\r\n return null;\r\n }\r\n }\r\n /**\r\n * Returns a single matching\r\n * @param accountFilter\r\n * @returns\r\n */\r\n getBaseAccountInfo(accountFilter, correlationId) {\r\n const accountEntities = this.getAccountsFilteredBy(accountFilter, correlationId);\r\n if (accountEntities.length > 0) {\r\n return AccountEntity.getAccountInfo(accountEntities[0]);\r\n }\r\n else {\r\n return null;\r\n }\r\n }\r\n /**\r\n * Matches filtered account entities with cached ID tokens that match the tenant profile-specific account filters\r\n * and builds the account info objects from the matching ID token's claims\r\n * @param cachedAccounts\r\n * @param accountFilter\r\n * @returns Array of AccountInfo objects that match account and tenant profile filters\r\n */\r\n buildTenantProfiles(cachedAccounts, correlationId, accountFilter) {\r\n return cachedAccounts.flatMap((accountEntity) => {\r\n return this.getTenantProfilesFromAccountEntity(accountEntity, correlationId, accountFilter?.tenantId, accountFilter);\r\n });\r\n }\r\n getTenantedAccountInfoByFilter(accountInfo, tokenKeys, tenantProfile, correlationId, tenantProfileFilter) {\r\n let tenantedAccountInfo = null;\r\n let idTokenClaims;\r\n if (tenantProfileFilter) {\r\n if (!this.tenantProfileMatchesFilter(tenantProfile, tenantProfileFilter)) {\r\n return null;\r\n }\r\n }\r\n const idToken = this.getIdToken(accountInfo, correlationId, tokenKeys, tenantProfile.tenantId);\r\n if (idToken) {\r\n idTokenClaims = extractTokenClaims(idToken.secret, this.cryptoImpl.base64Decode);\r\n if (!this.idTokenClaimsMatchTenantProfileFilter(idTokenClaims, tenantProfileFilter)) {\r\n // ID token sourced claims don't match so this tenant profile is not a match\r\n return null;\r\n }\r\n }\r\n // Expand tenant profile into account info based on matching tenant profile and if available matching ID token claims\r\n tenantedAccountInfo = updateAccountTenantProfileData(accountInfo, tenantProfile, idTokenClaims, idToken?.secret);\r\n return tenantedAccountInfo;\r\n }\r\n getTenantProfilesFromAccountEntity(accountEntity, correlationId, targetTenantId, tenantProfileFilter) {\r\n const accountInfo = AccountEntity.getAccountInfo(accountEntity);\r\n let searchTenantProfiles = accountInfo.tenantProfiles || new Map();\r\n const tokenKeys = this.getTokenKeys();\r\n // If a tenant ID was provided, only return the tenant profile for that tenant ID if it exists\r\n if (targetTenantId) {\r\n const tenantProfile = searchTenantProfiles.get(targetTenantId);\r\n if (tenantProfile) {\r\n // Reduce search field to just this tenant profile\r\n searchTenantProfiles = new Map([\r\n [targetTenantId, tenantProfile],\r\n ]);\r\n }\r\n else {\r\n // No tenant profile for search tenant ID, return empty array\r\n return [];\r\n }\r\n }\r\n const matchingTenantProfiles = [];\r\n searchTenantProfiles.forEach((tenantProfile) => {\r\n const tenantedAccountInfo = this.getTenantedAccountInfoByFilter(accountInfo, tokenKeys, tenantProfile, correlationId, tenantProfileFilter);\r\n if (tenantedAccountInfo) {\r\n matchingTenantProfiles.push(tenantedAccountInfo);\r\n }\r\n });\r\n return matchingTenantProfiles;\r\n }\r\n tenantProfileMatchesFilter(tenantProfile, tenantProfileFilter) {\r\n if (!!tenantProfileFilter.localAccountId &&\r\n !this.matchLocalAccountIdFromTenantProfile(tenantProfile, tenantProfileFilter.localAccountId)) {\r\n return false;\r\n }\r\n if (!!tenantProfileFilter.name &&\r\n !(tenantProfile.name === tenantProfileFilter.name)) {\r\n return false;\r\n }\r\n if (tenantProfileFilter.isHomeTenant !== undefined &&\r\n !(tenantProfile.isHomeTenant === tenantProfileFilter.isHomeTenant)) {\r\n return false;\r\n }\r\n return true;\r\n }\r\n idTokenClaimsMatchTenantProfileFilter(idTokenClaims, tenantProfileFilter) {\r\n // Tenant Profile filtering\r\n if (tenantProfileFilter) {\r\n if (!!tenantProfileFilter.localAccountId &&\r\n !this.matchLocalAccountIdFromTokenClaims(idTokenClaims, tenantProfileFilter.localAccountId)) {\r\n return false;\r\n }\r\n if (!!tenantProfileFilter.loginHint &&\r\n !this.matchLoginHintFromTokenClaims(idTokenClaims, tenantProfileFilter.loginHint)) {\r\n return false;\r\n }\r\n if (!!tenantProfileFilter.username &&\r\n !this.matchUsername(idTokenClaims.preferred_username, tenantProfileFilter.username)) {\r\n return false;\r\n }\r\n if (!!tenantProfileFilter.name &&\r\n !this.matchName(idTokenClaims, tenantProfileFilter.name)) {\r\n return false;\r\n }\r\n if (!!tenantProfileFilter.sid &&\r\n !this.matchSid(idTokenClaims, tenantProfileFilter.sid)) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n }\r\n /**\r\n * saves a cache record\r\n * @param cacheRecord {CacheRecord}\r\n * @param correlationId {?string} correlation id\r\n * @param kmsi - Keep Me Signed In\r\n * @param storeInCache {?StoreInCache}\r\n */\r\n async saveCacheRecord(cacheRecord, correlationId, kmsi, storeInCache) {\r\n if (!cacheRecord) {\r\n throw createClientAuthError(invalidCacheRecord);\r\n }\r\n try {\r\n if (!!cacheRecord.account) {\r\n await this.setAccount(cacheRecord.account, correlationId, kmsi);\r\n }\r\n if (!!cacheRecord.idToken && storeInCache?.idToken !== false) {\r\n await this.setIdTokenCredential(cacheRecord.idToken, correlationId, kmsi);\r\n }\r\n if (!!cacheRecord.accessToken &&\r\n storeInCache?.accessToken !== false) {\r\n await this.saveAccessToken(cacheRecord.accessToken, correlationId, kmsi);\r\n }\r\n if (!!cacheRecord.refreshToken &&\r\n storeInCache?.refreshToken !== false) {\r\n await this.setRefreshTokenCredential(cacheRecord.refreshToken, correlationId, kmsi);\r\n }\r\n if (!!cacheRecord.appMetadata) {\r\n this.setAppMetadata(cacheRecord.appMetadata, correlationId);\r\n }\r\n }\r\n catch (e) {\r\n this.commonLogger?.error(`CacheManager.saveCacheRecord: failed`);\r\n if (e instanceof AuthError) {\r\n throw e;\r\n }\r\n else {\r\n throw createCacheError(e);\r\n }\r\n }\r\n }\r\n /**\r\n * saves access token credential\r\n * @param credential\r\n */\r\n async saveAccessToken(credential, correlationId, kmsi) {\r\n const accessTokenFilter = {\r\n clientId: credential.clientId,\r\n credentialType: credential.credentialType,\r\n environment: credential.environment,\r\n homeAccountId: credential.homeAccountId,\r\n realm: credential.realm,\r\n tokenType: credential.tokenType,\r\n requestedClaimsHash: credential.requestedClaimsHash,\r\n };\r\n const tokenKeys = this.getTokenKeys();\r\n const currentScopes = ScopeSet.fromString(credential.target);\r\n tokenKeys.accessToken.forEach((key) => {\r\n if (!this.accessTokenKeyMatchesFilter(key, accessTokenFilter, false)) {\r\n return;\r\n }\r\n const tokenEntity = this.getAccessTokenCredential(key, correlationId);\r\n if (tokenEntity &&\r\n this.credentialMatchesFilter(tokenEntity, accessTokenFilter)) {\r\n const tokenScopeSet = ScopeSet.fromString(tokenEntity.target);\r\n if (tokenScopeSet.intersectingScopeSets(currentScopes)) {\r\n this.removeAccessToken(key, correlationId);\r\n }\r\n }\r\n });\r\n await this.setAccessTokenCredential(credential, correlationId, kmsi);\r\n }\r\n /**\r\n * Retrieve account entities matching all provided tenant-agnostic filters; if no filter is set, get all account entities in the cache\r\n * Not checking for casing as keys are all generated in lower case, remember to convert to lower case if object properties are compared\r\n * @param accountFilter - An object containing Account properties to filter by\r\n */\r\n getAccountsFilteredBy(accountFilter, correlationId) {\r\n const allAccountKeys = this.getAccountKeys();\r\n const matchingAccounts = [];\r\n allAccountKeys.forEach((cacheKey) => {\r\n const entity = this.getAccount(cacheKey, correlationId);\r\n // Match base account fields\r\n if (!entity) {\r\n return;\r\n }\r\n if (!!accountFilter.homeAccountId &&\r\n !this.matchHomeAccountId(entity, accountFilter.homeAccountId)) {\r\n return;\r\n }\r\n if (!!accountFilter.username &&\r\n !this.matchUsername(entity.username, accountFilter.username)) {\r\n return;\r\n }\r\n if (!!accountFilter.environment &&\r\n !this.matchEnvironment(entity, accountFilter.environment)) {\r\n return;\r\n }\r\n if (!!accountFilter.realm &&\r\n !this.matchRealm(entity, accountFilter.realm)) {\r\n return;\r\n }\r\n if (!!accountFilter.nativeAccountId &&\r\n !this.matchNativeAccountId(entity, accountFilter.nativeAccountId)) {\r\n return;\r\n }\r\n if (!!accountFilter.authorityType &&\r\n !this.matchAuthorityType(entity, accountFilter.authorityType)) {\r\n return;\r\n }\r\n // If at least one tenant profile matches the tenant profile filter, add the account to the list of matching accounts\r\n const tenantProfileFilter = {\r\n localAccountId: accountFilter?.localAccountId,\r\n name: accountFilter?.name,\r\n };\r\n const matchingTenantProfiles = entity.tenantProfiles?.filter((tenantProfile) => {\r\n return this.tenantProfileMatchesFilter(tenantProfile, tenantProfileFilter);\r\n });\r\n if (matchingTenantProfiles && matchingTenantProfiles.length === 0) {\r\n // No tenant profile for this account matches filter, don't add to list of matching accounts\r\n return;\r\n }\r\n matchingAccounts.push(entity);\r\n });\r\n return matchingAccounts;\r\n }\r\n /**\r\n * Returns whether or not the given credential entity matches the filter\r\n * @param entity\r\n * @param filter\r\n * @returns\r\n */\r\n credentialMatchesFilter(entity, filter) {\r\n if (!!filter.clientId && !this.matchClientId(entity, filter.clientId)) {\r\n return false;\r\n }\r\n if (!!filter.userAssertionHash &&\r\n !this.matchUserAssertionHash(entity, filter.userAssertionHash)) {\r\n return false;\r\n }\r\n /*\r\n * homeAccountId can be undefined, and we want to filter out cached items that have a homeAccountId of \"\"\r\n * because we don't want a client_credential request to return a cached token that has a homeAccountId\r\n */\r\n if (typeof filter.homeAccountId === \"string\" &&\r\n !this.matchHomeAccountId(entity, filter.homeAccountId)) {\r\n return false;\r\n }\r\n if (!!filter.environment &&\r\n !this.matchEnvironment(entity, filter.environment)) {\r\n return false;\r\n }\r\n if (!!filter.realm && !this.matchRealm(entity, filter.realm)) {\r\n return false;\r\n }\r\n if (!!filter.credentialType &&\r\n !this.matchCredentialType(entity, filter.credentialType)) {\r\n return false;\r\n }\r\n if (!!filter.familyId && !this.matchFamilyId(entity, filter.familyId)) {\r\n return false;\r\n }\r\n /*\r\n * idTokens do not have \"target\", target specific refreshTokens do exist for some types of authentication\r\n * Resource specific refresh tokens case will be added when the support is deemed necessary\r\n */\r\n if (!!filter.target && !this.matchTarget(entity, filter.target)) {\r\n return false;\r\n }\r\n // If request OR cached entity has requested Claims Hash, check if they match\r\n if (filter.requestedClaimsHash || entity.requestedClaimsHash) {\r\n // Don't match if either is undefined or they are different\r\n if (entity.requestedClaimsHash !== filter.requestedClaimsHash) {\r\n return false;\r\n }\r\n }\r\n // Access Token with Auth Scheme specific matching\r\n if (entity.credentialType ===\r\n CredentialType.ACCESS_TOKEN_WITH_AUTH_SCHEME) {\r\n if (!!filter.tokenType &&\r\n !this.matchTokenType(entity, filter.tokenType)) {\r\n return false;\r\n }\r\n // KeyId (sshKid) in request must match cached SSH certificate keyId because SSH cert is bound to a specific key\r\n if (filter.tokenType === AuthenticationScheme.SSH) {\r\n if (filter.keyId && !this.matchKeyId(entity, filter.keyId)) {\r\n return false;\r\n }\r\n }\r\n }\r\n return true;\r\n }\r\n /**\r\n * retrieve appMetadata matching all provided filters; if no filter is set, get all appMetadata\r\n * @param filter\r\n */\r\n getAppMetadataFilteredBy(filter) {\r\n const allCacheKeys = this.getKeys();\r\n const matchingAppMetadata = {};\r\n allCacheKeys.forEach((cacheKey) => {\r\n // don't parse any non-appMetadata type cache entities\r\n if (!this.isAppMetadata(cacheKey)) {\r\n return;\r\n }\r\n // Attempt retrieval\r\n const entity = this.getAppMetadata(cacheKey);\r\n if (!entity) {\r\n return;\r\n }\r\n if (!!filter.environment &&\r\n !this.matchEnvironment(entity, filter.environment)) {\r\n return;\r\n }\r\n if (!!filter.clientId &&\r\n !this.matchClientId(entity, filter.clientId)) {\r\n return;\r\n }\r\n matchingAppMetadata[cacheKey] = entity;\r\n });\r\n return matchingAppMetadata;\r\n }\r\n /**\r\n * retrieve authorityMetadata that contains a matching alias\r\n * @param filter\r\n */\r\n getAuthorityMetadataByAlias(host) {\r\n const allCacheKeys = this.getAuthorityMetadataKeys();\r\n let matchedEntity = null;\r\n allCacheKeys.forEach((cacheKey) => {\r\n // don't parse any non-authorityMetadata type cache entities\r\n if (!this.isAuthorityMetadata(cacheKey) ||\r\n cacheKey.indexOf(this.clientId) === -1) {\r\n return;\r\n }\r\n // Attempt retrieval\r\n const entity = this.getAuthorityMetadata(cacheKey);\r\n if (!entity) {\r\n return;\r\n }\r\n if (entity.aliases.indexOf(host) === -1) {\r\n return;\r\n }\r\n matchedEntity = entity;\r\n });\r\n return matchedEntity;\r\n }\r\n /**\r\n * Removes all accounts and related tokens from cache.\r\n */\r\n removeAllAccounts(correlationId) {\r\n const accounts = this.getAllAccounts({}, correlationId);\r\n accounts.forEach((account) => {\r\n this.removeAccount(account, correlationId);\r\n });\r\n }\r\n /**\r\n * Removes the account and related tokens for a given account key\r\n * @param account\r\n */\r\n removeAccount(account, correlationId) {\r\n this.removeAccountContext(account, correlationId);\r\n const accountKeys = this.getAccountKeys();\r\n const keyFilter = (key) => {\r\n return (key.includes(account.homeAccountId) &&\r\n key.includes(account.environment));\r\n };\r\n accountKeys.filter(keyFilter).forEach((key) => {\r\n this.removeItem(key, correlationId);\r\n this.performanceClient.incrementFields({ accountsRemoved: 1 }, correlationId);\r\n });\r\n }\r\n /**\r\n * Removes credentials associated with the provided account\r\n * @param account\r\n */\r\n removeAccountContext(account, correlationId) {\r\n const allTokenKeys = this.getTokenKeys();\r\n const keyFilter = (key) => {\r\n return (key.includes(account.homeAccountId) &&\r\n key.includes(account.environment));\r\n };\r\n allTokenKeys.idToken.filter(keyFilter).forEach((key) => {\r\n this.removeIdToken(key, correlationId);\r\n });\r\n allTokenKeys.accessToken.filter(keyFilter).forEach((key) => {\r\n this.removeAccessToken(key, correlationId);\r\n });\r\n allTokenKeys.refreshToken.filter(keyFilter).forEach((key) => {\r\n this.removeRefreshToken(key, correlationId);\r\n });\r\n }\r\n /**\r\n * Removes accessToken from the cache\r\n * @param key\r\n * @param correlationId\r\n */\r\n removeAccessToken(key, correlationId) {\r\n const credential = this.getAccessTokenCredential(key, correlationId);\r\n this.removeItem(key, correlationId);\r\n this.performanceClient.incrementFields({ accessTokensRemoved: 1 }, correlationId);\r\n if (!credential ||\r\n credential.credentialType.toLowerCase() !==\r\n CredentialType.ACCESS_TOKEN_WITH_AUTH_SCHEME.toLowerCase() ||\r\n credential.tokenType !== AuthenticationScheme.POP) {\r\n // If the credential is not a PoP token, we can return\r\n return;\r\n }\r\n // Remove Token Binding Key from key store for PoP Tokens Credentials\r\n const kid = credential.keyId;\r\n if (kid) {\r\n void this.cryptoImpl.removeTokenBindingKey(kid).catch(() => {\r\n this.commonLogger.error(`Failed to remove token binding key ${kid}`, correlationId);\r\n this.performanceClient?.incrementFields({ removeTokenBindingKeyFailure: 1 }, correlationId);\r\n });\r\n }\r\n }\r\n /**\r\n * Removes all app metadata objects from cache.\r\n */\r\n removeAppMetadata(correlationId) {\r\n const allCacheKeys = this.getKeys();\r\n allCacheKeys.forEach((cacheKey) => {\r\n if (this.isAppMetadata(cacheKey)) {\r\n this.removeItem(cacheKey, correlationId);\r\n }\r\n });\r\n return true;\r\n }\r\n /**\r\n * Retrieve IdTokenEntity from cache\r\n * @param account {AccountInfo}\r\n * @param tokenKeys {?TokenKeys}\r\n * @param targetRealm {?string}\r\n * @param performanceClient {?IPerformanceClient}\r\n * @param correlationId {?string}\r\n */\r\n getIdToken(account, correlationId, tokenKeys, targetRealm, performanceClient) {\r\n this.commonLogger.trace(\"CacheManager - getIdToken called\");\r\n const idTokenFilter = {\r\n homeAccountId: account.homeAccountId,\r\n environment: account.environment,\r\n credentialType: CredentialType.ID_TOKEN,\r\n clientId: this.clientId,\r\n realm: targetRealm,\r\n };\r\n const idTokenMap = this.getIdTokensByFilter(idTokenFilter, correlationId, tokenKeys);\r\n const numIdTokens = idTokenMap.size;\r\n if (numIdTokens < 1) {\r\n this.commonLogger.info(\"CacheManager:getIdToken - No token found\");\r\n return null;\r\n }\r\n else if (numIdTokens > 1) {\r\n let tokensToBeRemoved = idTokenMap;\r\n // Multiple tenant profiles and no tenant specified, pick home account\r\n if (!targetRealm) {\r\n const homeIdTokenMap = new Map();\r\n idTokenMap.forEach((idToken, key) => {\r\n if (idToken.realm === account.tenantId) {\r\n homeIdTokenMap.set(key, idToken);\r\n }\r\n });\r\n const numHomeIdTokens = homeIdTokenMap.size;\r\n if (numHomeIdTokens < 1) {\r\n this.commonLogger.info(\"CacheManager:getIdToken - Multiple ID tokens found for account but none match account entity tenant id, returning first result\");\r\n return idTokenMap.values().next().value;\r\n }\r\n else if (numHomeIdTokens === 1) {\r\n this.commonLogger.info(\"CacheManager:getIdToken - Multiple ID tokens found for account, defaulting to home tenant profile\");\r\n return homeIdTokenMap.values().next().value;\r\n }\r\n else {\r\n // Multiple ID tokens for home tenant profile, remove all and return null\r\n tokensToBeRemoved = homeIdTokenMap;\r\n }\r\n }\r\n // Multiple tokens for a single tenant profile, remove all and return null\r\n this.commonLogger.info(\"CacheManager:getIdToken - Multiple matching ID tokens found, clearing them\");\r\n tokensToBeRemoved.forEach((idToken, key) => {\r\n this.removeIdToken(key, correlationId);\r\n });\r\n if (performanceClient && correlationId) {\r\n performanceClient.addFields({ multiMatchedID: idTokenMap.size }, correlationId);\r\n }\r\n return null;\r\n }\r\n this.commonLogger.info(\"CacheManager:getIdToken - Returning ID token\");\r\n return idTokenMap.values().next().value;\r\n }\r\n /**\r\n * Gets all idTokens matching the given filter\r\n * @param filter\r\n * @returns\r\n */\r\n getIdTokensByFilter(filter, correlationId, tokenKeys) {\r\n const idTokenKeys = (tokenKeys && tokenKeys.idToken) || this.getTokenKeys().idToken;\r\n const idTokens = new Map();\r\n idTokenKeys.forEach((key) => {\r\n if (!this.idTokenKeyMatchesFilter(key, {\r\n clientId: this.clientId,\r\n ...filter,\r\n })) {\r\n return;\r\n }\r\n const idToken = this.getIdTokenCredential(key, correlationId);\r\n if (idToken && this.credentialMatchesFilter(idToken, filter)) {\r\n idTokens.set(key, idToken);\r\n }\r\n });\r\n return idTokens;\r\n }\r\n /**\r\n * Validate the cache key against filter before retrieving and parsing cache value\r\n * @param key\r\n * @param filter\r\n * @returns\r\n */\r\n idTokenKeyMatchesFilter(inputKey, filter) {\r\n const key = inputKey.toLowerCase();\r\n if (filter.clientId &&\r\n key.indexOf(filter.clientId.toLowerCase()) === -1) {\r\n return false;\r\n }\r\n if (filter.homeAccountId &&\r\n key.indexOf(filter.homeAccountId.toLowerCase()) === -1) {\r\n return false;\r\n }\r\n return true;\r\n }\r\n /**\r\n * Removes idToken from the cache\r\n * @param key\r\n */\r\n removeIdToken(key, correlationId) {\r\n this.removeItem(key, correlationId);\r\n }\r\n /**\r\n * Removes refresh token from the cache\r\n * @param key\r\n */\r\n removeRefreshToken(key, correlationId) {\r\n this.removeItem(key, correlationId);\r\n }\r\n /**\r\n * Retrieve AccessTokenEntity from cache\r\n * @param account {AccountInfo}\r\n * @param request {BaseAuthRequest}\r\n * @param correlationId {?string}\r\n * @param tokenKeys {?TokenKeys}\r\n * @param performanceClient {?IPerformanceClient}\r\n */\r\n getAccessToken(account, request, tokenKeys, targetRealm) {\r\n const correlationId = request.correlationId;\r\n this.commonLogger.trace(\"CacheManager - getAccessToken called\", correlationId);\r\n const scopes = ScopeSet.createSearchScopes(request.scopes);\r\n const authScheme = request.authenticationScheme || AuthenticationScheme.BEARER;\r\n /*\r\n * Distinguish between Bearer and PoP/SSH token cache types\r\n * Cast to lowercase to handle \"bearer\" from ADFS\r\n */\r\n const credentialType = authScheme.toLowerCase() !==\r\n AuthenticationScheme.BEARER.toLowerCase()\r\n ? CredentialType.ACCESS_TOKEN_WITH_AUTH_SCHEME\r\n : CredentialType.ACCESS_TOKEN;\r\n const accessTokenFilter = {\r\n homeAccountId: account.homeAccountId,\r\n environment: account.environment,\r\n credentialType: credentialType,\r\n clientId: this.clientId,\r\n realm: targetRealm || account.tenantId,\r\n target: scopes,\r\n tokenType: authScheme,\r\n keyId: request.sshKid,\r\n requestedClaimsHash: request.requestedClaimsHash,\r\n };\r\n const accessTokenKeys = (tokenKeys && tokenKeys.accessToken) ||\r\n this.getTokenKeys().accessToken;\r\n const accessTokens = [];\r\n accessTokenKeys.forEach((key) => {\r\n // Validate key\r\n if (this.accessTokenKeyMatchesFilter(key, accessTokenFilter, true)) {\r\n const accessToken = this.getAccessTokenCredential(key, correlationId);\r\n // Validate value\r\n if (accessToken &&\r\n this.credentialMatchesFilter(accessToken, accessTokenFilter)) {\r\n accessTokens.push(accessToken);\r\n }\r\n }\r\n });\r\n const numAccessTokens = accessTokens.length;\r\n if (numAccessTokens < 1) {\r\n this.commonLogger.info(\"CacheManager:getAccessToken - No token found\", correlationId);\r\n return null;\r\n }\r\n else if (numAccessTokens > 1) {\r\n this.commonLogger.info(\"CacheManager:getAccessToken - Multiple access tokens found, clearing them\", correlationId);\r\n accessTokens.forEach((accessToken) => {\r\n this.removeAccessToken(this.generateCredentialKey(accessToken), correlationId);\r\n });\r\n this.performanceClient.addFields({ multiMatchedAT: accessTokens.length }, correlationId);\r\n return null;\r\n }\r\n this.commonLogger.info(\"CacheManager:getAccessToken - Returning access token\", correlationId);\r\n return accessTokens[0];\r\n }\r\n /**\r\n * Validate the cache key against filter before retrieving and parsing cache value\r\n * @param key\r\n * @param filter\r\n * @param keyMustContainAllScopes\r\n * @returns\r\n */\r\n accessTokenKeyMatchesFilter(inputKey, filter, keyMustContainAllScopes) {\r\n const key = inputKey.toLowerCase();\r\n if (filter.clientId &&\r\n key.indexOf(filter.clientId.toLowerCase()) === -1) {\r\n return false;\r\n }\r\n if (filter.homeAccountId &&\r\n key.indexOf(filter.homeAccountId.toLowerCase()) === -1) {\r\n return false;\r\n }\r\n if (filter.realm && key.indexOf(filter.realm.toLowerCase()) === -1) {\r\n return false;\r\n }\r\n if (filter.requestedClaimsHash &&\r\n key.indexOf(filter.requestedClaimsHash.toLowerCase()) === -1) {\r\n return false;\r\n }\r\n if (filter.target) {\r\n const scopes = filter.target.asArray();\r\n for (let i = 0; i < scopes.length; i++) {\r\n if (keyMustContainAllScopes &&\r\n !key.includes(scopes[i].toLowerCase())) {\r\n // When performing a cache lookup a missing scope would be a cache miss\r\n return false;\r\n }\r\n else if (!keyMustContainAllScopes &&\r\n key.includes(scopes[i].toLowerCase())) {\r\n // When performing a cache write, any token with a subset of requested scopes should be replaced\r\n return true;\r\n }\r\n }\r\n }\r\n return true;\r\n }\r\n /**\r\n * Gets all access tokens matching the filter\r\n * @param filter\r\n * @returns\r\n */\r\n getAccessTokensByFilter(filter, correlationId) {\r\n const tokenKeys = this.getTokenKeys();\r\n const accessTokens = [];\r\n tokenKeys.accessToken.forEach((key) => {\r\n if (!this.accessTokenKeyMatchesFilter(key, filter, true)) {\r\n return;\r\n }\r\n const accessToken = this.getAccessTokenCredential(key, correlationId);\r\n if (accessToken &&\r\n this.credentialMatchesFilter(accessToken, filter)) {\r\n accessTokens.push(accessToken);\r\n }\r\n });\r\n return accessTokens;\r\n }\r\n /**\r\n * Helper to retrieve the appropriate refresh token from cache\r\n * @param account {AccountInfo}\r\n * @param familyRT {boolean}\r\n * @param correlationId {?string}\r\n * @param tokenKeys {?TokenKeys}\r\n * @param performanceClient {?IPerformanceClient}\r\n */\r\n getRefreshToken(account, familyRT, correlationId, tokenKeys, performanceClient) {\r\n this.commonLogger.trace(\"CacheManager - getRefreshToken called\");\r\n const id = familyRT ? THE_FAMILY_ID : undefined;\r\n const refreshTokenFilter = {\r\n homeAccountId: account.homeAccountId,\r\n environment: account.environment,\r\n credentialType: CredentialType.REFRESH_TOKEN,\r\n clientId: this.clientId,\r\n familyId: id,\r\n };\r\n const refreshTokenKeys = (tokenKeys && tokenKeys.refreshToken) ||\r\n this.getTokenKeys().refreshToken;\r\n const refreshTokens = [];\r\n refreshTokenKeys.forEach((key) => {\r\n // Validate key\r\n if (this.refreshTokenKeyMatchesFilter(key, refreshTokenFilter)) {\r\n const refreshToken = this.getRefreshTokenCredential(key, correlationId);\r\n // Validate value\r\n if (refreshToken &&\r\n this.credentialMatchesFilter(refreshToken, refreshTokenFilter)) {\r\n refreshTokens.push(refreshToken);\r\n }\r\n }\r\n });\r\n const numRefreshTokens = refreshTokens.length;\r\n if (numRefreshTokens < 1) {\r\n this.commonLogger.info(\"CacheManager:getRefreshToken - No refresh token found.\");\r\n return null;\r\n }\r\n // address the else case after remove functions address environment aliases\r\n if (numRefreshTokens > 1 && performanceClient && correlationId) {\r\n performanceClient.addFields({ multiMatchedRT: numRefreshTokens }, correlationId);\r\n }\r\n this.commonLogger.info(\"CacheManager:getRefreshToken - returning refresh token\");\r\n return refreshTokens[0];\r\n }\r\n /**\r\n * Validate the cache key against filter before retrieving and parsing cache value\r\n * @param key\r\n * @param filter\r\n */\r\n refreshTokenKeyMatchesFilter(inputKey, filter) {\r\n const key = inputKey.toLowerCase();\r\n if (filter.familyId &&\r\n key.indexOf(filter.familyId.toLowerCase()) === -1) {\r\n return false;\r\n }\r\n // If familyId is used, clientId is not in the key\r\n if (!filter.familyId &&\r\n filter.clientId &&\r\n key.indexOf(filter.clientId.toLowerCase()) === -1) {\r\n return false;\r\n }\r\n if (filter.homeAccountId &&\r\n key.indexOf(filter.homeAccountId.toLowerCase()) === -1) {\r\n return false;\r\n }\r\n return true;\r\n }\r\n /**\r\n * Retrieve AppMetadataEntity from cache\r\n */\r\n readAppMetadataFromCache(environment) {\r\n const appMetadataFilter = {\r\n environment,\r\n clientId: this.clientId,\r\n };\r\n const appMetadata = this.getAppMetadataFilteredBy(appMetadataFilter);\r\n const appMetadataEntries = Object.keys(appMetadata).map((key) => appMetadata[key]);\r\n const numAppMetadata = appMetadataEntries.length;\r\n if (numAppMetadata < 1) {\r\n return null;\r\n }\r\n else if (numAppMetadata > 1) {\r\n throw createClientAuthError(multipleMatchingAppMetadata);\r\n }\r\n return appMetadataEntries[0];\r\n }\r\n /**\r\n * Return the family_id value associated with FOCI\r\n * @param environment\r\n * @param clientId\r\n */\r\n isAppMetadataFOCI(environment) {\r\n const appMetadata = this.readAppMetadataFromCache(environment);\r\n return !!(appMetadata && appMetadata.familyId === THE_FAMILY_ID);\r\n }\r\n /**\r\n * helper to match account ids\r\n * @param value\r\n * @param homeAccountId\r\n */\r\n matchHomeAccountId(entity, homeAccountId) {\r\n return !!(typeof entity.homeAccountId === \"string\" &&\r\n homeAccountId === entity.homeAccountId);\r\n }\r\n /**\r\n * helper to match account ids\r\n * @param entity\r\n * @param localAccountId\r\n * @returns\r\n */\r\n matchLocalAccountIdFromTokenClaims(tokenClaims, localAccountId) {\r\n const idTokenLocalAccountId = tokenClaims.oid || tokenClaims.sub;\r\n return localAccountId === idTokenLocalAccountId;\r\n }\r\n matchLocalAccountIdFromTenantProfile(tenantProfile, localAccountId) {\r\n return tenantProfile.localAccountId === localAccountId;\r\n }\r\n /**\r\n * helper to match names\r\n * @param entity\r\n * @param name\r\n * @returns true if the downcased name properties are present and match in the filter and the entity\r\n */\r\n matchName(claims, name) {\r\n return !!(name.toLowerCase() === claims.name?.toLowerCase());\r\n }\r\n /**\r\n * helper to match usernames\r\n * @param entity\r\n * @param username\r\n * @returns\r\n */\r\n matchUsername(cachedUsername, filterUsername) {\r\n return !!(cachedUsername &&\r\n typeof cachedUsername === \"string\" &&\r\n filterUsername?.toLowerCase() === cachedUsername.toLowerCase());\r\n }\r\n /**\r\n * helper to match assertion\r\n * @param value\r\n * @param oboAssertion\r\n */\r\n matchUserAssertionHash(entity, userAssertionHash) {\r\n return !!(entity.userAssertionHash &&\r\n userAssertionHash === entity.userAssertionHash);\r\n }\r\n /**\r\n * helper to match environment\r\n * @param value\r\n * @param environment\r\n */\r\n matchEnvironment(entity, environment) {\r\n // Check static authority options first for cases where authority metadata has not been resolved and cached yet\r\n if (this.staticAuthorityOptions) {\r\n const staticAliases = getAliasesFromStaticSources(this.staticAuthorityOptions, this.commonLogger);\r\n if (staticAliases.includes(environment) &&\r\n staticAliases.includes(entity.environment)) {\r\n return true;\r\n }\r\n }\r\n // Query metadata cache if no static authority configuration has aliases that match enviroment\r\n const cloudMetadata = this.getAuthorityMetadataByAlias(environment);\r\n if (cloudMetadata &&\r\n cloudMetadata.aliases.indexOf(entity.environment) > -1) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n /**\r\n * helper to match credential type\r\n * @param entity\r\n * @param credentialType\r\n */\r\n matchCredentialType(entity, credentialType) {\r\n return (entity.credentialType &&\r\n credentialType.toLowerCase() === entity.credentialType.toLowerCase());\r\n }\r\n /**\r\n * helper to match client ids\r\n * @param entity\r\n * @param clientId\r\n */\r\n matchClientId(entity, clientId) {\r\n return !!(entity.clientId && clientId === entity.clientId);\r\n }\r\n /**\r\n * helper to match family ids\r\n * @param entity\r\n * @param familyId\r\n */\r\n matchFamilyId(entity, familyId) {\r\n return !!(entity.familyId && familyId === entity.familyId);\r\n }\r\n /**\r\n * helper to match realm\r\n * @param entity\r\n * @param realm\r\n */\r\n matchRealm(entity, realm) {\r\n return !!(entity.realm?.toLowerCase() === realm.toLowerCase());\r\n }\r\n /**\r\n * helper to match nativeAccountId\r\n * @param entity\r\n * @param nativeAccountId\r\n * @returns boolean indicating the match result\r\n */\r\n matchNativeAccountId(entity, nativeAccountId) {\r\n return !!(entity.nativeAccountId && nativeAccountId === entity.nativeAccountId);\r\n }\r\n /**\r\n * helper to match loginHint which can be either:\r\n * 1. login_hint ID token claim\r\n * 2. username in cached account object\r\n * 3. upn in ID token claims\r\n * @param entity\r\n * @param loginHint\r\n * @returns\r\n */\r\n matchLoginHintFromTokenClaims(tokenClaims, loginHint) {\r\n if (tokenClaims.login_hint === loginHint) {\r\n return true;\r\n }\r\n if (tokenClaims.preferred_username === loginHint) {\r\n return true;\r\n }\r\n if (tokenClaims.upn === loginHint) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n /**\r\n * Helper to match sid\r\n * @param entity\r\n * @param sid\r\n * @returns true if the sid claim is present and matches the filter\r\n */\r\n matchSid(idTokenClaims, sid) {\r\n return idTokenClaims.sid === sid;\r\n }\r\n matchAuthorityType(entity, authorityType) {\r\n return !!(entity.authorityType &&\r\n authorityType.toLowerCase() === entity.authorityType.toLowerCase());\r\n }\r\n /**\r\n * Returns true if the target scopes are a subset of the current entity's scopes, false otherwise.\r\n * @param entity\r\n * @param target\r\n */\r\n matchTarget(entity, target) {\r\n const isNotAccessTokenCredential = entity.credentialType !== CredentialType.ACCESS_TOKEN &&\r\n entity.credentialType !==\r\n CredentialType.ACCESS_TOKEN_WITH_AUTH_SCHEME;\r\n if (isNotAccessTokenCredential || !entity.target) {\r\n return false;\r\n }\r\n const entityScopeSet = ScopeSet.fromString(entity.target);\r\n return entityScopeSet.containsScopeSet(target);\r\n }\r\n /**\r\n * Returns true if the credential's tokenType or Authentication Scheme matches the one in the request, false otherwise\r\n * @param entity\r\n * @param tokenType\r\n */\r\n matchTokenType(entity, tokenType) {\r\n return !!(entity.tokenType && entity.tokenType === tokenType);\r\n }\r\n /**\r\n * Returns true if the credential's keyId matches the one in the request, false otherwise\r\n * @param entity\r\n * @param keyId\r\n */\r\n matchKeyId(entity, keyId) {\r\n return !!(entity.keyId && entity.keyId === keyId);\r\n }\r\n /**\r\n * returns if a given cache entity is of the type appmetadata\r\n * @param key\r\n */\r\n isAppMetadata(key) {\r\n return key.indexOf(APP_METADATA) !== -1;\r\n }\r\n /**\r\n * returns if a given cache entity is of the type authoritymetadata\r\n * @param key\r\n */\r\n isAuthorityMetadata(key) {\r\n return key.indexOf(AUTHORITY_METADATA_CONSTANTS.CACHE_KEY) !== -1;\r\n }\r\n /**\r\n * returns cache key used for cloud instance metadata\r\n */\r\n generateAuthorityMetadataCacheKey(authority) {\r\n return `${AUTHORITY_METADATA_CONSTANTS.CACHE_KEY}-${this.clientId}-${authority}`;\r\n }\r\n /**\r\n * Helper to convert serialized data to object\r\n * @param obj\r\n * @param json\r\n */\r\n static toObject(obj, json) {\r\n for (const propertyName in json) {\r\n obj[propertyName] = json[propertyName];\r\n }\r\n return obj;\r\n }\r\n}\r\n/** @internal */\r\nclass DefaultStorageClass extends CacheManager {\r\n async setAccount() {\r\n throw createClientAuthError(methodNotImplemented);\r\n }\r\n getAccount() {\r\n throw createClientAuthError(methodNotImplemented);\r\n }\r\n async setIdTokenCredential() {\r\n throw createClientAuthError(methodNotImplemented);\r\n }\r\n getIdTokenCredential() {\r\n throw createClientAuthError(methodNotImplemented);\r\n }\r\n async setAccessTokenCredential() {\r\n throw createClientAuthError(methodNotImplemented);\r\n }\r\n getAccessTokenCredential() {\r\n throw createClientAuthError(methodNotImplemented);\r\n }\r\n async setRefreshTokenCredential() {\r\n throw createClientAuthError(methodNotImplemented);\r\n }\r\n getRefreshTokenCredential() {\r\n throw createClientAuthError(methodNotImplemented);\r\n }\r\n setAppMetadata() {\r\n throw createClientAuthError(methodNotImplemented);\r\n }\r\n getAppMetadata() {\r\n throw createClientAuthError(methodNotImplemented);\r\n }\r\n setServerTelemetry() {\r\n throw createClientAuthError(methodNotImplemented);\r\n }\r\n getServerTelemetry() {\r\n throw createClientAuthError(methodNotImplemented);\r\n }\r\n setAuthorityMetadata() {\r\n throw createClientAuthError(methodNotImplemented);\r\n }\r\n getAuthorityMetadata() {\r\n throw createClientAuthError(methodNotImplemented);\r\n }\r\n getAuthorityMetadataKeys() {\r\n throw createClientAuthError(methodNotImplemented);\r\n }\r\n setThrottlingCache() {\r\n throw createClientAuthError(methodNotImplemented);\r\n }\r\n getThrottlingCache() {\r\n throw createClientAuthError(methodNotImplemented);\r\n }\r\n removeItem() {\r\n throw createClientAuthError(methodNotImplemented);\r\n }\r\n getKeys() {\r\n throw createClientAuthError(methodNotImplemented);\r\n }\r\n getAccountKeys() {\r\n throw createClientAuthError(methodNotImplemented);\r\n }\r\n getTokenKeys() {\r\n throw createClientAuthError(methodNotImplemented);\r\n }\r\n generateCredentialKey() {\r\n throw createClientAuthError(methodNotImplemented);\r\n }\r\n generateAccountKey() {\r\n throw createClientAuthError(methodNotImplemented);\r\n }\r\n}\n\n/*! @azure/msal-common v15.13.2 2025-11-19 */\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * Enumeration of operations that are instrumented by have their performance measured by the PerformanceClient.\r\n *\r\n * @export\r\n * @enum {number}\r\n */\r\nconst PerformanceEvents = {\r\n /**\r\n * acquireTokenByCode API (msal-browser and msal-node).\r\n * Used to acquire tokens by trading an authorization code against the token endpoint.\r\n */\r\n AcquireTokenByCode: \"acquireTokenByCode\",\r\n /**\r\n * acquireTokenByRefreshToken API (msal-browser and msal-node).\r\n * Used to renew an access token using a refresh token against the token endpoint.\r\n */\r\n AcquireTokenByRefreshToken: \"acquireTokenByRefreshToken\",\r\n /**\r\n * acquireTokenSilent API (msal-browser and msal-node).\r\n * Used to silently acquire a new access token (from the cache or the network).\r\n */\r\n AcquireTokenSilent: \"acquireTokenSilent\",\r\n /**\r\n * acquireTokenSilentAsync (msal-browser).\r\n * Internal API for acquireTokenSilent.\r\n */\r\n AcquireTokenSilentAsync: \"acquireTokenSilentAsync\",\r\n /**\r\n * acquireTokenPopup (msal-browser).\r\n * Used to acquire a new access token interactively through pop ups\r\n */\r\n AcquireTokenPopup: \"acquireTokenPopup\",\r\n /**\r\n * acquireTokenPreRedirect (msal-browser).\r\n * First part of the redirect flow.\r\n * Used to acquire a new access token interactively through redirects.\r\n */\r\n AcquireTokenPreRedirect: \"acquireTokenPreRedirect\",\r\n /**\r\n * acquireTokenRedirect (msal-browser).\r\n * Second part of the redirect flow.\r\n * Used to acquire a new access token interactively through redirects.\r\n */\r\n AcquireTokenRedirect: \"acquireTokenRedirect\",\r\n /**\r\n * getPublicKeyThumbprint API in CryptoOpts class (msal-browser).\r\n * Used to generate a public/private keypair and generate a public key thumbprint for pop requests.\r\n */\r\n CryptoOptsGetPublicKeyThumbprint: \"cryptoOptsGetPublicKeyThumbprint\",\r\n /**\r\n * signJwt API in CryptoOpts class (msal-browser).\r\n * Used to signed a pop token.\r\n */\r\n CryptoOptsSignJwt: \"cryptoOptsSignJwt\",\r\n /**\r\n * acquireToken API in the SilentCacheClient class (msal-browser).\r\n * Used to read access tokens from the cache.\r\n */\r\n SilentCacheClientAcquireToken: \"silentCacheClientAcquireToken\",\r\n /**\r\n * acquireToken API in the SilentIframeClient class (msal-browser).\r\n * Used to acquire a new set of tokens from the authorize endpoint in a hidden iframe.\r\n */\r\n SilentIframeClientAcquireToken: \"silentIframeClientAcquireToken\",\r\n AwaitConcurrentIframe: \"awaitConcurrentIframe\",\r\n /**\r\n * acquireToken API in SilentRereshClient (msal-browser).\r\n * Used to acquire a new set of tokens from the token endpoint using a refresh token.\r\n */\r\n SilentRefreshClientAcquireToken: \"silentRefreshClientAcquireToken\",\r\n /**\r\n * ssoSilent API (msal-browser).\r\n * Used to silently acquire an authorization code and set of tokens using a hidden iframe.\r\n */\r\n SsoSilent: \"ssoSilent\",\r\n /**\r\n * getDiscoveredAuthority API in StandardInteractionClient class (msal-browser).\r\n * Used to load authority metadata for a request.\r\n */\r\n StandardInteractionClientGetDiscoveredAuthority: \"standardInteractionClientGetDiscoveredAuthority\",\r\n /**\r\n * acquireToken APIs in msal-browser.\r\n * Used to make an /authorize endpoint call with native brokering enabled.\r\n */\r\n FetchAccountIdWithNativeBroker: \"fetchAccountIdWithNativeBroker\",\r\n /**\r\n * acquireToken API in NativeInteractionClient class (msal-browser).\r\n * Used to acquire a token from Native component when native brokering is enabled.\r\n */\r\n NativeInteractionClientAcquireToken: \"nativeInteractionClientAcquireToken\",\r\n /**\r\n * Time spent creating default headers for requests to token endpoint\r\n */\r\n BaseClientCreateTokenRequestHeaders: \"baseClientCreateTokenRequestHeaders\",\r\n /**\r\n * Time spent sending/waiting for the response of a request to the token endpoint\r\n */\r\n NetworkClientSendPostRequestAsync: \"networkClientSendPostRequestAsync\",\r\n RefreshTokenClientExecutePostToTokenEndpoint: \"refreshTokenClientExecutePostToTokenEndpoint\",\r\n AuthorizationCodeClientExecutePostToTokenEndpoint: \"authorizationCodeClientExecutePostToTokenEndpoint\",\r\n /**\r\n * Used to measure the time taken for completing embedded-broker handshake (PW-Broker).\r\n */\r\n BrokerHandhshake: \"brokerHandshake\",\r\n /**\r\n * acquireTokenByRefreshToken API in BrokerClientApplication (PW-Broker) .\r\n */\r\n AcquireTokenByRefreshTokenInBroker: \"acquireTokenByRefreshTokenInBroker\",\r\n /**\r\n * Time taken for token acquisition by broker\r\n */\r\n AcquireTokenByBroker: \"acquireTokenByBroker\",\r\n /**\r\n * Time spent on the network for refresh token acquisition\r\n */\r\n RefreshTokenClientExecuteTokenRequest: \"refreshTokenClientExecuteTokenRequest\",\r\n /**\r\n * Time taken for acquiring refresh token , records RT size\r\n */\r\n RefreshTokenClientAcquireToken: \"refreshTokenClientAcquireToken\",\r\n /**\r\n * Time taken for acquiring cached refresh token\r\n */\r\n RefreshTokenClientAcquireTokenWithCachedRefreshToken: \"refreshTokenClientAcquireTokenWithCachedRefreshToken\",\r\n /**\r\n * acquireTokenByRefreshToken API in RefreshTokenClient (msal-common).\r\n */\r\n RefreshTokenClientAcquireTokenByRefreshToken: \"refreshTokenClientAcquireTokenByRefreshToken\",\r\n /**\r\n * Helper function to create token request body in RefreshTokenClient (msal-common).\r\n */\r\n RefreshTokenClientCreateTokenRequestBody: \"refreshTokenClientCreateTokenRequestBody\",\r\n /**\r\n * acquireTokenFromCache (msal-browser).\r\n * Internal API for acquiring token from cache\r\n */\r\n AcquireTokenFromCache: \"acquireTokenFromCache\",\r\n SilentFlowClientAcquireCachedToken: \"silentFlowClientAcquireCachedToken\",\r\n SilentFlowClientGenerateResultFromCacheRecord: \"silentFlowClientGenerateResultFromCacheRecord\",\r\n /**\r\n * acquireTokenBySilentIframe (msal-browser).\r\n * Internal API for acquiring token by silent Iframe\r\n */\r\n AcquireTokenBySilentIframe: \"acquireTokenBySilentIframe\",\r\n /**\r\n * Internal API for initializing base request in BaseInteractionClient (msal-browser)\r\n */\r\n InitializeBaseRequest: \"initializeBaseRequest\",\r\n /**\r\n * Internal API for initializing silent request in SilentCacheClient (msal-browser)\r\n */\r\n InitializeSilentRequest: \"initializeSilentRequest\",\r\n InitializeClientApplication: \"initializeClientApplication\",\r\n InitializeCache: \"initializeCache\",\r\n /**\r\n * Helper function in SilentIframeClient class (msal-browser).\r\n */\r\n SilentIframeClientTokenHelper: \"silentIframeClientTokenHelper\",\r\n /**\r\n * SilentHandler\r\n */\r\n SilentHandlerInitiateAuthRequest: \"silentHandlerInitiateAuthRequest\",\r\n SilentHandlerMonitorIframeForHash: \"silentHandlerMonitorIframeForHash\",\r\n SilentHandlerLoadFrame: \"silentHandlerLoadFrame\",\r\n SilentHandlerLoadFrameSync: \"silentHandlerLoadFrameSync\",\r\n /**\r\n * Helper functions in StandardInteractionClient class (msal-browser)\r\n */\r\n StandardInteractionClientCreateAuthCodeClient: \"standardInteractionClientCreateAuthCodeClient\",\r\n StandardInteractionClientGetClientConfiguration: \"standardInteractionClientGetClientConfiguration\",\r\n StandardInteractionClientInitializeAuthorizationRequest: \"standardInteractionClientInitializeAuthorizationRequest\",\r\n /**\r\n * getAuthCodeUrl API (msal-browser and msal-node).\r\n */\r\n GetAuthCodeUrl: \"getAuthCodeUrl\",\r\n GetStandardParams: \"getStandardParams\",\r\n /**\r\n * Functions from InteractionHandler (msal-browser)\r\n */\r\n HandleCodeResponseFromServer: \"handleCodeResponseFromServer\",\r\n HandleCodeResponse: \"handleCodeResponse\",\r\n HandleResponseEar: \"handleResponseEar\",\r\n HandleResponsePlatformBroker: \"handleResponsePlatformBroker\",\r\n HandleResponseCode: \"handleResponseCode\",\r\n UpdateTokenEndpointAuthority: \"updateTokenEndpointAuthority\",\r\n /**\r\n * APIs in Authorization Code Client (msal-common)\r\n */\r\n AuthClientAcquireToken: \"authClientAcquireToken\",\r\n AuthClientExecuteTokenRequest: \"authClientExecuteTokenRequest\",\r\n AuthClientCreateTokenRequestBody: \"authClientCreateTokenRequestBody\",\r\n /**\r\n * Generate functions in PopTokenGenerator (msal-common)\r\n */\r\n PopTokenGenerateCnf: \"popTokenGenerateCnf\",\r\n PopTokenGenerateKid: \"popTokenGenerateKid\",\r\n /**\r\n * handleServerTokenResponse API in ResponseHandler (msal-common)\r\n */\r\n HandleServerTokenResponse: \"handleServerTokenResponse\",\r\n DeserializeResponse: \"deserializeResponse\",\r\n /**\r\n * Authority functions\r\n */\r\n AuthorityFactoryCreateDiscoveredInstance: \"authorityFactoryCreateDiscoveredInstance\",\r\n AuthorityResolveEndpointsAsync: \"authorityResolveEndpointsAsync\",\r\n AuthorityResolveEndpointsFromLocalSources: \"authorityResolveEndpointsFromLocalSources\",\r\n AuthorityGetCloudDiscoveryMetadataFromNetwork: \"authorityGetCloudDiscoveryMetadataFromNetwork\",\r\n AuthorityUpdateCloudDiscoveryMetadata: \"authorityUpdateCloudDiscoveryMetadata\",\r\n AuthorityGetEndpointMetadataFromNetwork: \"authorityGetEndpointMetadataFromNetwork\",\r\n AuthorityUpdateEndpointMetadata: \"authorityUpdateEndpointMetadata\",\r\n AuthorityUpdateMetadataWithRegionalInformation: \"authorityUpdateMetadataWithRegionalInformation\",\r\n /**\r\n * Region Discovery functions\r\n */\r\n RegionDiscoveryDetectRegion: \"regionDiscoveryDetectRegion\",\r\n RegionDiscoveryGetRegionFromIMDS: \"regionDiscoveryGetRegionFromIMDS\",\r\n RegionDiscoveryGetCurrentVersion: \"regionDiscoveryGetCurrentVersion\",\r\n AcquireTokenByCodeAsync: \"acquireTokenByCodeAsync\",\r\n GetEndpointMetadataFromNetwork: \"getEndpointMetadataFromNetwork\",\r\n GetCloudDiscoveryMetadataFromNetworkMeasurement: \"getCloudDiscoveryMetadataFromNetworkMeasurement\",\r\n HandleRedirectPromiseMeasurement: \"handleRedirectPromise\",\r\n HandleNativeRedirectPromiseMeasurement: \"handleNativeRedirectPromise\",\r\n UpdateCloudDiscoveryMetadataMeasurement: \"updateCloudDiscoveryMetadataMeasurement\",\r\n UsernamePasswordClientAcquireToken: \"usernamePasswordClientAcquireToken\",\r\n NativeMessageHandlerHandshake: \"nativeMessageHandlerHandshake\",\r\n NativeGenerateAuthResult: \"nativeGenerateAuthResult\",\r\n RemoveHiddenIframe: \"removeHiddenIframe\",\r\n /**\r\n * Cache operations\r\n */\r\n ClearTokensAndKeysWithClaims: \"clearTokensAndKeysWithClaims\",\r\n CacheManagerGetRefreshToken: \"cacheManagerGetRefreshToken\",\r\n ImportExistingCache: \"importExistingCache\",\r\n SetUserData: \"setUserData\",\r\n LocalStorageUpdated: \"localStorageUpdated\",\r\n /**\r\n * Crypto Operations\r\n */\r\n GeneratePkceCodes: \"generatePkceCodes\",\r\n GenerateCodeVerifier: \"generateCodeVerifier\",\r\n GenerateCodeChallengeFromVerifier: \"generateCodeChallengeFromVerifier\",\r\n Sha256Digest: \"sha256Digest\",\r\n GetRandomValues: \"getRandomValues\",\r\n GenerateHKDF: \"generateHKDF\",\r\n GenerateBaseKey: \"generateBaseKey\",\r\n Base64Decode: \"base64Decode\",\r\n UrlEncodeArr: \"urlEncodeArr\",\r\n Encrypt: \"encrypt\",\r\n Decrypt: \"decrypt\",\r\n GenerateEarKey: \"generateEarKey\",\r\n DecryptEarResponse: \"decryptEarResponse\",\r\n};\r\n/**\r\n * State of the performance event.\r\n *\r\n * @export\r\n * @enum {number}\r\n */\r\nconst PerformanceEventStatus = {\r\n InProgress: 1};\n\n/*! @azure/msal-common v15.13.2 2025-11-19 */\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nclass StubPerformanceMeasurement {\r\n startMeasurement() {\r\n return;\r\n }\r\n endMeasurement() {\r\n return;\r\n }\r\n flushMeasurement() {\r\n return null;\r\n }\r\n}\r\nclass StubPerformanceClient {\r\n generateId() {\r\n return \"callback-id\";\r\n }\r\n startMeasurement(measureName, correlationId) {\r\n return {\r\n end: () => null,\r\n discard: () => { },\r\n add: () => { },\r\n increment: () => { },\r\n event: {\r\n eventId: this.generateId(),\r\n status: PerformanceEventStatus.InProgress,\r\n authority: \"\",\r\n libraryName: \"\",\r\n libraryVersion: \"\",\r\n clientId: \"\",\r\n name: measureName,\r\n startTimeMs: Date.now(),\r\n correlationId: correlationId || \"\",\r\n },\r\n measurement: new StubPerformanceMeasurement(),\r\n };\r\n }\r\n startPerformanceMeasurement() {\r\n return new StubPerformanceMeasurement();\r\n }\r\n calculateQueuedTime() {\r\n return 0;\r\n }\r\n addQueueMeasurement() {\r\n return;\r\n }\r\n setPreQueueTime() {\r\n return;\r\n }\r\n endMeasurement() {\r\n return null;\r\n }\r\n discardMeasurements() {\r\n return;\r\n }\r\n removePerformanceCallback() {\r\n return true;\r\n }\r\n addPerformanceCallback() {\r\n return \"\";\r\n }\r\n emitEvents() {\r\n return;\r\n }\r\n addFields() {\r\n return;\r\n }\r\n incrementFields() {\r\n return;\r\n }\r\n cacheEventByCorrelationId() {\r\n return;\r\n }\r\n}\n\n/*! @azure/msal-common v15.13.2 2025-11-19 */\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nconst DEFAULT_SYSTEM_OPTIONS$1 = {\r\n tokenRenewalOffsetSeconds: DEFAULT_TOKEN_RENEWAL_OFFSET_SEC,\r\n preventCorsPreflight: false,\r\n};\r\nconst DEFAULT_LOGGER_IMPLEMENTATION = {\r\n loggerCallback: () => {\r\n // allow users to not set loggerCallback\r\n },\r\n piiLoggingEnabled: false,\r\n logLevel: exports.LogLevel.Info,\r\n correlationId: Constants$1.EMPTY_STRING,\r\n};\r\nconst DEFAULT_CACHE_OPTIONS$1 = {\r\n claimsBasedCachingEnabled: false,\r\n};\r\nconst DEFAULT_NETWORK_IMPLEMENTATION = {\r\n async sendGetRequestAsync() {\r\n throw createClientAuthError(methodNotImplemented);\r\n },\r\n async sendPostRequestAsync() {\r\n throw createClientAuthError(methodNotImplemented);\r\n },\r\n};\r\nconst DEFAULT_LIBRARY_INFO = {\r\n sku: Constants$1.SKU,\r\n version: version$1,\r\n cpu: Constants$1.EMPTY_STRING,\r\n os: Constants$1.EMPTY_STRING,\r\n};\r\nconst DEFAULT_CLIENT_CREDENTIALS = {\r\n clientSecret: Constants$1.EMPTY_STRING,\r\n clientAssertion: undefined,\r\n};\r\nconst DEFAULT_AZURE_CLOUD_OPTIONS = {\r\n azureCloudInstance: AzureCloudInstance.None,\r\n tenant: `${Constants$1.DEFAULT_COMMON_TENANT}`,\r\n};\r\nconst DEFAULT_TELEMETRY_OPTIONS$1 = {\r\n application: {\r\n appName: \"\",\r\n appVersion: \"\",\r\n },\r\n};\r\n/**\r\n * Function that sets the default options when not explicitly configured from app developer\r\n *\r\n * @param Configuration\r\n *\r\n * @returns Configuration\r\n */\r\nfunction buildClientConfiguration({ authOptions: userAuthOptions, systemOptions: userSystemOptions, loggerOptions: userLoggerOption, cacheOptions: userCacheOptions, storageInterface: storageImplementation, networkInterface: networkImplementation, cryptoInterface: cryptoImplementation, clientCredentials: clientCredentials, libraryInfo: libraryInfo, telemetry: telemetry, serverTelemetryManager: serverTelemetryManager, persistencePlugin: persistencePlugin, serializableCache: serializableCache, }) {\r\n const loggerOptions = {\r\n ...DEFAULT_LOGGER_IMPLEMENTATION,\r\n ...userLoggerOption,\r\n };\r\n return {\r\n authOptions: buildAuthOptions(userAuthOptions),\r\n systemOptions: { ...DEFAULT_SYSTEM_OPTIONS$1, ...userSystemOptions },\r\n loggerOptions: loggerOptions,\r\n cacheOptions: { ...DEFAULT_CACHE_OPTIONS$1, ...userCacheOptions },\r\n storageInterface: storageImplementation ||\r\n new DefaultStorageClass(userAuthOptions.clientId, DEFAULT_CRYPTO_IMPLEMENTATION, new Logger(loggerOptions), new StubPerformanceClient()),\r\n networkInterface: networkImplementation || DEFAULT_NETWORK_IMPLEMENTATION,\r\n cryptoInterface: cryptoImplementation || DEFAULT_CRYPTO_IMPLEMENTATION,\r\n clientCredentials: clientCredentials || DEFAULT_CLIENT_CREDENTIALS,\r\n libraryInfo: { ...DEFAULT_LIBRARY_INFO, ...libraryInfo },\r\n telemetry: { ...DEFAULT_TELEMETRY_OPTIONS$1, ...telemetry },\r\n serverTelemetryManager: serverTelemetryManager || null,\r\n persistencePlugin: persistencePlugin || null,\r\n serializableCache: serializableCache || null,\r\n };\r\n}\r\n/**\r\n * Construct authoptions from the client and platform passed values\r\n * @param authOptions\r\n */\r\nfunction buildAuthOptions(authOptions) {\r\n return {\r\n clientCapabilities: [],\r\n azureCloudOptions: DEFAULT_AZURE_CLOUD_OPTIONS,\r\n skipAuthorityMetadataCache: false,\r\n instanceAware: false,\r\n encodeExtraQueryParams: false,\r\n ...authOptions,\r\n };\r\n}\r\n/**\r\n * Returns true if config has protocolMode set to ProtocolMode.OIDC, false otherwise\r\n * @param ClientConfiguration\r\n */\r\nfunction isOidcProtocolMode(config) {\r\n return (config.authOptions.authority.options.protocolMode === ProtocolMode.OIDC);\r\n}\n\n/*! @azure/msal-common v15.13.2 2025-11-19 */\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nconst CcsCredentialType = {\r\n HOME_ACCOUNT_ID: \"home_account_id\",\r\n UPN: \"UPN\",\r\n};\n\n/*! @azure/msal-common v15.13.2 2025-11-19 */\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nconst CLIENT_ID = \"client_id\";\r\nconst REDIRECT_URI = \"redirect_uri\";\r\nconst RESPONSE_TYPE = \"response_type\";\r\nconst RESPONSE_MODE = \"response_mode\";\r\nconst GRANT_TYPE = \"grant_type\";\r\nconst CLAIMS = \"claims\";\r\nconst SCOPE = \"scope\";\r\nconst REFRESH_TOKEN = \"refresh_token\";\r\nconst STATE = \"state\";\r\nconst NONCE = \"nonce\";\r\nconst PROMPT = \"prompt\";\r\nconst CODE = \"code\";\r\nconst CODE_CHALLENGE = \"code_challenge\";\r\nconst CODE_CHALLENGE_METHOD = \"code_challenge_method\";\r\nconst CODE_VERIFIER = \"code_verifier\";\r\nconst CLIENT_REQUEST_ID = \"client-request-id\";\r\nconst X_CLIENT_SKU = \"x-client-SKU\";\r\nconst X_CLIENT_VER = \"x-client-VER\";\r\nconst X_CLIENT_OS = \"x-client-OS\";\r\nconst X_CLIENT_CPU = \"x-client-CPU\";\r\nconst X_CLIENT_CURR_TELEM = \"x-client-current-telemetry\";\r\nconst X_CLIENT_LAST_TELEM = \"x-client-last-telemetry\";\r\nconst X_MS_LIB_CAPABILITY = \"x-ms-lib-capability\";\r\nconst X_APP_NAME = \"x-app-name\";\r\nconst X_APP_VER = \"x-app-ver\";\r\nconst POST_LOGOUT_URI = \"post_logout_redirect_uri\";\r\nconst ID_TOKEN_HINT = \"id_token_hint\";\r\nconst DEVICE_CODE = \"device_code\";\r\nconst CLIENT_SECRET = \"client_secret\";\r\nconst CLIENT_ASSERTION = \"client_assertion\";\r\nconst CLIENT_ASSERTION_TYPE = \"client_assertion_type\";\r\nconst TOKEN_TYPE = \"token_type\";\r\nconst REQ_CNF = \"req_cnf\";\r\nconst OBO_ASSERTION = \"assertion\";\r\nconst REQUESTED_TOKEN_USE = \"requested_token_use\";\r\nconst ON_BEHALF_OF = \"on_behalf_of\";\r\nconst RETURN_SPA_CODE = \"return_spa_code\";\r\nconst LOGOUT_HINT = \"logout_hint\";\r\nconst SID = \"sid\";\r\nconst LOGIN_HINT = \"login_hint\";\r\nconst DOMAIN_HINT = \"domain_hint\";\r\nconst X_CLIENT_EXTRA_SKU = \"x-client-xtra-sku\";\r\nconst BROKER_CLIENT_ID = \"brk_client_id\";\r\nconst BROKER_REDIRECT_URI = \"brk_redirect_uri\";\r\nconst INSTANCE_AWARE = \"instance_aware\";\n\n/*! @azure/msal-common v15.13.2 2025-11-19 */\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nfunction instrumentBrokerParams(parameters, correlationId, performanceClient) {\r\n if (!correlationId) {\r\n return;\r\n }\r\n const clientId = parameters.get(CLIENT_ID);\r\n if (clientId && parameters.has(BROKER_CLIENT_ID)) {\r\n performanceClient?.addFields({\r\n embeddedClientId: clientId,\r\n embeddedRedirectUri: parameters.get(REDIRECT_URI),\r\n }, correlationId);\r\n }\r\n}\r\n/**\r\n * Add the given response_type\r\n * @param parameters\r\n * @param responseType\r\n */\r\nfunction addResponseType(parameters, responseType) {\r\n parameters.set(RESPONSE_TYPE, responseType);\r\n}\r\n/**\r\n * add response_mode. defaults to query.\r\n * @param responseMode\r\n */\r\nfunction addResponseMode(parameters, responseMode) {\r\n parameters.set(RESPONSE_MODE, responseMode ? responseMode : ResponseMode.QUERY);\r\n}\r\n/**\r\n * add scopes. set addOidcScopes to false to prevent default scopes in non-user scenarios\r\n * @param scopeSet\r\n * @param addOidcScopes\r\n */\r\nfunction addScopes(parameters, scopes, addOidcScopes = true, defaultScopes = OIDC_DEFAULT_SCOPES) {\r\n // Always add openid to the scopes when adding OIDC scopes\r\n if (addOidcScopes &&\r\n !defaultScopes.includes(\"openid\") &&\r\n !scopes.includes(\"openid\")) {\r\n defaultScopes.push(\"openid\");\r\n }\r\n const requestScopes = addOidcScopes\r\n ? [...(scopes || []), ...defaultScopes]\r\n : scopes || [];\r\n const scopeSet = new ScopeSet(requestScopes);\r\n parameters.set(SCOPE, scopeSet.printScopes());\r\n}\r\n/**\r\n * add clientId\r\n * @param clientId\r\n */\r\nfunction addClientId(parameters, clientId) {\r\n parameters.set(CLIENT_ID, clientId);\r\n}\r\n/**\r\n * add redirect_uri\r\n * @param redirectUri\r\n */\r\nfunction addRedirectUri(parameters, redirectUri) {\r\n parameters.set(REDIRECT_URI, redirectUri);\r\n}\r\n/**\r\n * add post logout redirectUri\r\n * @param redirectUri\r\n */\r\nfunction addPostLogoutRedirectUri(parameters, redirectUri) {\r\n parameters.set(POST_LOGOUT_URI, redirectUri);\r\n}\r\n/**\r\n * add id_token_hint to logout request\r\n * @param idTokenHint\r\n */\r\nfunction addIdTokenHint(parameters, idTokenHint) {\r\n parameters.set(ID_TOKEN_HINT, idTokenHint);\r\n}\r\n/**\r\n * add domain_hint\r\n * @param domainHint\r\n */\r\nfunction addDomainHint(parameters, domainHint) {\r\n parameters.set(DOMAIN_HINT, domainHint);\r\n}\r\n/**\r\n * add login_hint\r\n * @param loginHint\r\n */\r\nfunction addLoginHint(parameters, loginHint) {\r\n parameters.set(LOGIN_HINT, loginHint);\r\n}\r\n/**\r\n * Adds the CCS (Cache Credential Service) query parameter for login_hint\r\n * @param loginHint\r\n */\r\nfunction addCcsUpn(parameters, loginHint) {\r\n parameters.set(HeaderNames.CCS_HEADER, `UPN:${loginHint}`);\r\n}\r\n/**\r\n * Adds the CCS (Cache Credential Service) query parameter for account object\r\n * @param loginHint\r\n */\r\nfunction addCcsOid(parameters, clientInfo) {\r\n parameters.set(HeaderNames.CCS_HEADER, `Oid:${clientInfo.uid}@${clientInfo.utid}`);\r\n}\r\n/**\r\n * add sid\r\n * @param sid\r\n */\r\nfunction addSid(parameters, sid) {\r\n parameters.set(SID, sid);\r\n}\r\n/**\r\n * add claims\r\n * @param claims\r\n */\r\nfunction addClaims(parameters, claims, clientCapabilities) {\r\n const mergedClaims = addClientCapabilitiesToClaims(claims, clientCapabilities);\r\n try {\r\n JSON.parse(mergedClaims);\r\n }\r\n catch (e) {\r\n throw createClientConfigurationError(invalidClaims);\r\n }\r\n parameters.set(CLAIMS, mergedClaims);\r\n}\r\n/**\r\n * add correlationId\r\n * @param correlationId\r\n */\r\nfunction addCorrelationId(parameters, correlationId) {\r\n parameters.set(CLIENT_REQUEST_ID, correlationId);\r\n}\r\n/**\r\n * add library info query params\r\n * @param libraryInfo\r\n */\r\nfunction addLibraryInfo(parameters, libraryInfo) {\r\n // Telemetry Info\r\n parameters.set(X_CLIENT_SKU, libraryInfo.sku);\r\n parameters.set(X_CLIENT_VER, libraryInfo.version);\r\n if (libraryInfo.os) {\r\n parameters.set(X_CLIENT_OS, libraryInfo.os);\r\n }\r\n if (libraryInfo.cpu) {\r\n parameters.set(X_CLIENT_CPU, libraryInfo.cpu);\r\n }\r\n}\r\n/**\r\n * Add client telemetry parameters\r\n * @param appTelemetry\r\n */\r\nfunction addApplicationTelemetry(parameters, appTelemetry) {\r\n if (appTelemetry?.appName) {\r\n parameters.set(X_APP_NAME, appTelemetry.appName);\r\n }\r\n if (appTelemetry?.appVersion) {\r\n parameters.set(X_APP_VER, appTelemetry.appVersion);\r\n }\r\n}\r\n/**\r\n * add prompt\r\n * @param prompt\r\n */\r\nfunction addPrompt(parameters, prompt) {\r\n parameters.set(PROMPT, prompt);\r\n}\r\n/**\r\n * add state\r\n * @param state\r\n */\r\nfunction addState(parameters, state) {\r\n if (state) {\r\n parameters.set(STATE, state);\r\n }\r\n}\r\n/**\r\n * add nonce\r\n * @param nonce\r\n */\r\nfunction addNonce(parameters, nonce) {\r\n parameters.set(NONCE, nonce);\r\n}\r\n/**\r\n * add code_challenge and code_challenge_method\r\n * - throw if either of them are not passed\r\n * @param codeChallenge\r\n * @param codeChallengeMethod\r\n */\r\nfunction addCodeChallengeParams(parameters, codeChallenge, codeChallengeMethod) {\r\n if (codeChallenge && codeChallengeMethod) {\r\n parameters.set(CODE_CHALLENGE, codeChallenge);\r\n parameters.set(CODE_CHALLENGE_METHOD, codeChallengeMethod);\r\n }\r\n else {\r\n throw createClientConfigurationError(pkceParamsMissing);\r\n }\r\n}\r\n/**\r\n * add the `authorization_code` passed by the user to exchange for a token\r\n * @param code\r\n */\r\nfunction addAuthorizationCode(parameters, code) {\r\n parameters.set(CODE, code);\r\n}\r\n/**\r\n * add the `authorization_code` passed by the user to exchange for a token\r\n * @param code\r\n */\r\nfunction addDeviceCode(parameters, code) {\r\n parameters.set(DEVICE_CODE, code);\r\n}\r\n/**\r\n * add the `refreshToken` passed by the user\r\n * @param refreshToken\r\n */\r\nfunction addRefreshToken(parameters, refreshToken) {\r\n parameters.set(REFRESH_TOKEN, refreshToken);\r\n}\r\n/**\r\n * add the `code_verifier` passed by the user to exchange for a token\r\n * @param codeVerifier\r\n */\r\nfunction addCodeVerifier(parameters, codeVerifier) {\r\n parameters.set(CODE_VERIFIER, codeVerifier);\r\n}\r\n/**\r\n * add client_secret\r\n * @param clientSecret\r\n */\r\nfunction addClientSecret(parameters, clientSecret) {\r\n parameters.set(CLIENT_SECRET, clientSecret);\r\n}\r\n/**\r\n * add clientAssertion for confidential client flows\r\n * @param clientAssertion\r\n */\r\nfunction addClientAssertion(parameters, clientAssertion) {\r\n if (clientAssertion) {\r\n parameters.set(CLIENT_ASSERTION, clientAssertion);\r\n }\r\n}\r\n/**\r\n * add clientAssertionType for confidential client flows\r\n * @param clientAssertionType\r\n */\r\nfunction addClientAssertionType(parameters, clientAssertionType) {\r\n if (clientAssertionType) {\r\n parameters.set(CLIENT_ASSERTION_TYPE, clientAssertionType);\r\n }\r\n}\r\n/**\r\n * add OBO assertion for confidential client flows\r\n * @param clientAssertion\r\n */\r\nfunction addOboAssertion(parameters, oboAssertion) {\r\n parameters.set(OBO_ASSERTION, oboAssertion);\r\n}\r\n/**\r\n * add grant type\r\n * @param grantType\r\n */\r\nfunction addRequestTokenUse(parameters, tokenUse) {\r\n parameters.set(REQUESTED_TOKEN_USE, tokenUse);\r\n}\r\n/**\r\n * add grant type\r\n * @param grantType\r\n */\r\nfunction addGrantType(parameters, grantType) {\r\n parameters.set(GRANT_TYPE, grantType);\r\n}\r\n/**\r\n * add client info\r\n *\r\n */\r\nfunction addClientInfo(parameters) {\r\n parameters.set(CLIENT_INFO, \"1\");\r\n}\r\nfunction addInstanceAware(parameters) {\r\n if (!parameters.has(INSTANCE_AWARE)) {\r\n parameters.set(INSTANCE_AWARE, \"true\");\r\n }\r\n}\r\n/**\r\n * add extraQueryParams\r\n * @param eQParams\r\n */\r\nfunction addExtraQueryParameters(parameters, eQParams) {\r\n Object.entries(eQParams).forEach(([key, value]) => {\r\n if (!parameters.has(key) && value) {\r\n parameters.set(key, value);\r\n }\r\n });\r\n}\r\nfunction addClientCapabilitiesToClaims(claims, clientCapabilities) {\r\n let mergedClaims;\r\n // Parse provided claims into JSON object or initialize empty object\r\n if (!claims) {\r\n mergedClaims = {};\r\n }\r\n else {\r\n try {\r\n mergedClaims = JSON.parse(claims);\r\n }\r\n catch (e) {\r\n throw createClientConfigurationError(invalidClaims);\r\n }\r\n }\r\n if (clientCapabilities && clientCapabilities.length > 0) {\r\n if (!mergedClaims.hasOwnProperty(ClaimsRequestKeys.ACCESS_TOKEN)) {\r\n // Add access_token key to claims object\r\n mergedClaims[ClaimsRequestKeys.ACCESS_TOKEN] = {};\r\n }\r\n // Add xms_cc claim with provided clientCapabilities to access_token key\r\n mergedClaims[ClaimsRequestKeys.ACCESS_TOKEN][ClaimsRequestKeys.XMS_CC] =\r\n {\r\n values: clientCapabilities,\r\n };\r\n }\r\n return JSON.stringify(mergedClaims);\r\n}\r\n/**\r\n * adds `username` for Password Grant flow\r\n * @param username\r\n */\r\nfunction addUsername(parameters, username) {\r\n parameters.set(PasswordGrantConstants.username, username);\r\n}\r\n/**\r\n * adds `password` for Password Grant flow\r\n * @param password\r\n */\r\nfunction addPassword(parameters, password) {\r\n parameters.set(PasswordGrantConstants.password, password);\r\n}\r\n/**\r\n * add pop_jwk to query params\r\n * @param cnfString\r\n */\r\nfunction addPopToken(parameters, cnfString) {\r\n if (cnfString) {\r\n parameters.set(TOKEN_TYPE, AuthenticationScheme.POP);\r\n parameters.set(REQ_CNF, cnfString);\r\n }\r\n}\r\n/**\r\n * add SSH JWK and key ID to query params\r\n */\r\nfunction addSshJwk(parameters, sshJwkString) {\r\n if (sshJwkString) {\r\n parameters.set(TOKEN_TYPE, AuthenticationScheme.SSH);\r\n parameters.set(REQ_CNF, sshJwkString);\r\n }\r\n}\r\n/**\r\n * add server telemetry fields\r\n * @param serverTelemetryManager\r\n */\r\nfunction addServerTelemetry(parameters, serverTelemetryManager) {\r\n parameters.set(X_CLIENT_CURR_TELEM, serverTelemetryManager.generateCurrentRequestHeaderValue());\r\n parameters.set(X_CLIENT_LAST_TELEM, serverTelemetryManager.generateLastRequestHeaderValue());\r\n}\r\n/**\r\n * Adds parameter that indicates to the server that throttling is supported\r\n */\r\nfunction addThrottling(parameters) {\r\n parameters.set(X_MS_LIB_CAPABILITY, ThrottlingConstants.X_MS_LIB_CAPABILITY_VALUE);\r\n}\r\n/**\r\n * Adds logout_hint parameter for \"silent\" logout which prevent server account picker\r\n */\r\nfunction addLogoutHint(parameters, logoutHint) {\r\n parameters.set(LOGOUT_HINT, logoutHint);\r\n}\r\nfunction addBrokerParameters(parameters, brokerClientId, brokerRedirectUri) {\r\n if (!parameters.has(BROKER_CLIENT_ID)) {\r\n parameters.set(BROKER_CLIENT_ID, brokerClientId);\r\n }\r\n if (!parameters.has(BROKER_REDIRECT_URI)) {\r\n parameters.set(BROKER_REDIRECT_URI, brokerRedirectUri);\r\n }\r\n}\n\n/*! @azure/msal-common v15.13.2 2025-11-19 */\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nfunction isOpenIdConfigResponse(response) {\r\n return (response.hasOwnProperty(\"authorization_endpoint\") &&\r\n response.hasOwnProperty(\"token_endpoint\") &&\r\n response.hasOwnProperty(\"issuer\") &&\r\n response.hasOwnProperty(\"jwks_uri\"));\r\n}\n\n/*! @azure/msal-common v15.13.2 2025-11-19 */\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nfunction isCloudInstanceDiscoveryResponse(response) {\r\n return (response.hasOwnProperty(\"tenant_discovery_endpoint\") &&\r\n response.hasOwnProperty(\"metadata\"));\r\n}\n\n/*! @azure/msal-common v15.13.2 2025-11-19 */\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nfunction isCloudInstanceDiscoveryErrorResponse(response) {\r\n return (response.hasOwnProperty(\"error\") &&\r\n response.hasOwnProperty(\"error_description\"));\r\n}\n\n/*! @azure/msal-common v15.13.2 2025-11-19 */\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * Wraps a function with a performance measurement.\r\n * Usage: invoke(functionToCall, performanceClient, \"EventName\", \"correlationId\")(...argsToPassToFunction)\r\n * @param callback\r\n * @param eventName\r\n * @param logger\r\n * @param telemetryClient\r\n * @param correlationId\r\n * @returns\r\n * @internal\r\n */\r\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\r\nconst invoke = (callback, eventName, logger, telemetryClient, correlationId) => {\r\n return (...args) => {\r\n logger.trace(`Executing function ${eventName}`);\r\n const inProgressEvent = telemetryClient?.startMeasurement(eventName, correlationId);\r\n if (correlationId) {\r\n // Track number of times this API is called in a single request\r\n const eventCount = eventName + \"CallCount\";\r\n telemetryClient?.incrementFields({ [eventCount]: 1 }, correlationId);\r\n }\r\n try {\r\n const result = callback(...args);\r\n inProgressEvent?.end({\r\n success: true,\r\n });\r\n logger.trace(`Returning result from ${eventName}`);\r\n return result;\r\n }\r\n catch (e) {\r\n logger.trace(`Error occurred in ${eventName}`);\r\n try {\r\n logger.trace(JSON.stringify(e));\r\n }\r\n catch (e) {\r\n logger.trace(\"Unable to print error message.\");\r\n }\r\n inProgressEvent?.end({\r\n success: false,\r\n }, e);\r\n throw e;\r\n }\r\n };\r\n};\r\n/**\r\n * Wraps an async function with a performance measurement.\r\n * Usage: invokeAsync(functionToCall, performanceClient, \"EventName\", \"correlationId\")(...argsToPassToFunction)\r\n * @param callback\r\n * @param eventName\r\n * @param logger\r\n * @param telemetryClient\r\n * @param correlationId\r\n * @returns\r\n * @internal\r\n *\r\n */\r\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\r\nconst invokeAsync = (callback, eventName, logger, telemetryClient, correlationId) => {\r\n return (...args) => {\r\n logger.trace(`Executing function ${eventName}`);\r\n const inProgressEvent = telemetryClient?.startMeasurement(eventName, correlationId);\r\n if (correlationId) {\r\n // Track number of times this API is called in a single request\r\n const eventCount = eventName + \"CallCount\";\r\n telemetryClient?.incrementFields({ [eventCount]: 1 }, correlationId);\r\n }\r\n telemetryClient?.setPreQueueTime(eventName, correlationId);\r\n return callback(...args)\r\n .then((response) => {\r\n logger.trace(`Returning result from ${eventName}`);\r\n inProgressEvent?.end({\r\n success: true,\r\n });\r\n return response;\r\n })\r\n .catch((e) => {\r\n logger.trace(`Error occurred in ${eventName}`);\r\n try {\r\n logger.trace(JSON.stringify(e));\r\n }\r\n catch (e) {\r\n logger.trace(\"Unable to print error message.\");\r\n }\r\n inProgressEvent?.end({\r\n success: false,\r\n }, e);\r\n throw e;\r\n });\r\n };\r\n};\n\n/*! @azure/msal-common v15.13.2 2025-11-19 */\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nclass RegionDiscovery {\r\n constructor(networkInterface, logger, performanceClient, correlationId) {\r\n this.networkInterface = networkInterface;\r\n this.logger = logger;\r\n this.performanceClient = performanceClient;\r\n this.correlationId = correlationId;\r\n }\r\n /**\r\n * Detect the region from the application's environment.\r\n *\r\n * @returns Promise\r\n */\r\n async detectRegion(environmentRegion, regionDiscoveryMetadata) {\r\n this.performanceClient?.addQueueMeasurement(PerformanceEvents.RegionDiscoveryDetectRegion, this.correlationId);\r\n // Initialize auto detected region with the region from the envrionment\r\n let autodetectedRegionName = environmentRegion;\r\n // Check if a region was detected from the environment, if not, attempt to get the region from IMDS\r\n if (!autodetectedRegionName) {\r\n const options = RegionDiscovery.IMDS_OPTIONS;\r\n try {\r\n const localIMDSVersionResponse = await invokeAsync(this.getRegionFromIMDS.bind(this), PerformanceEvents.RegionDiscoveryGetRegionFromIMDS, this.logger, this.performanceClient, this.correlationId)(Constants$1.IMDS_VERSION, options);\r\n if (localIMDSVersionResponse.status === HttpStatus.SUCCESS) {\r\n autodetectedRegionName = localIMDSVersionResponse.body;\r\n regionDiscoveryMetadata.region_source =\r\n RegionDiscoverySources.IMDS;\r\n }\r\n // If the response using the local IMDS version failed, try to fetch the current version of IMDS and retry.\r\n if (localIMDSVersionResponse.status === HttpStatus.BAD_REQUEST) {\r\n const currentIMDSVersion = await invokeAsync(this.getCurrentVersion.bind(this), PerformanceEvents.RegionDiscoveryGetCurrentVersion, this.logger, this.performanceClient, this.correlationId)(options);\r\n if (!currentIMDSVersion) {\r\n regionDiscoveryMetadata.region_source =\r\n RegionDiscoverySources.FAILED_AUTO_DETECTION;\r\n return null;\r\n }\r\n const currentIMDSVersionResponse = await invokeAsync(this.getRegionFromIMDS.bind(this), PerformanceEvents.RegionDiscoveryGetRegionFromIMDS, this.logger, this.performanceClient, this.correlationId)(currentIMDSVersion, options);\r\n if (currentIMDSVersionResponse.status === HttpStatus.SUCCESS) {\r\n autodetectedRegionName =\r\n currentIMDSVersionResponse.body;\r\n regionDiscoveryMetadata.region_source =\r\n RegionDiscoverySources.IMDS;\r\n }\r\n }\r\n }\r\n catch (e) {\r\n regionDiscoveryMetadata.region_source =\r\n RegionDiscoverySources.FAILED_AUTO_DETECTION;\r\n return null;\r\n }\r\n }\r\n else {\r\n regionDiscoveryMetadata.region_source =\r\n RegionDiscoverySources.ENVIRONMENT_VARIABLE;\r\n }\r\n // If no region was auto detected from the environment or from the IMDS endpoint, mark the attempt as a FAILED_AUTO_DETECTION\r\n if (!autodetectedRegionName) {\r\n regionDiscoveryMetadata.region_source =\r\n RegionDiscoverySources.FAILED_AUTO_DETECTION;\r\n }\r\n return autodetectedRegionName || null;\r\n }\r\n /**\r\n * Make the call to the IMDS endpoint\r\n *\r\n * @param imdsEndpointUrl\r\n * @returns Promise>\r\n */\r\n async getRegionFromIMDS(version, options) {\r\n this.performanceClient?.addQueueMeasurement(PerformanceEvents.RegionDiscoveryGetRegionFromIMDS, this.correlationId);\r\n return this.networkInterface.sendGetRequestAsync(`${Constants$1.IMDS_ENDPOINT}?api-version=${version}&format=text`, options, Constants$1.IMDS_TIMEOUT);\r\n }\r\n /**\r\n * Get the most recent version of the IMDS endpoint available\r\n *\r\n * @returns Promise\r\n */\r\n async getCurrentVersion(options) {\r\n this.performanceClient?.addQueueMeasurement(PerformanceEvents.RegionDiscoveryGetCurrentVersion, this.correlationId);\r\n try {\r\n const response = await this.networkInterface.sendGetRequestAsync(`${Constants$1.IMDS_ENDPOINT}?format=json`, options);\r\n // When IMDS endpoint is called without the api version query param, bad request response comes back with latest version.\r\n if (response.status === HttpStatus.BAD_REQUEST &&\r\n response.body &&\r\n response.body[\"newest-versions\"] &&\r\n response.body[\"newest-versions\"].length > 0) {\r\n return response.body[\"newest-versions\"][0];\r\n }\r\n return null;\r\n }\r\n catch (e) {\r\n return null;\r\n }\r\n }\r\n}\r\n// Options for the IMDS endpoint request\r\nRegionDiscovery.IMDS_OPTIONS = {\r\n headers: {\r\n Metadata: \"true\",\r\n },\r\n};\n\n/*! @azure/msal-common v15.13.2 2025-11-19 */\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * Utility functions for managing date and time operations.\r\n */\r\n/**\r\n * return the current time in Unix time (seconds).\r\n */\r\nfunction nowSeconds() {\r\n // Date.getTime() returns in milliseconds.\r\n return Math.round(new Date().getTime() / 1000.0);\r\n}\r\n/**\r\n * Convert seconds to JS Date object. Seconds can be in a number or string format or undefined (will still return a date).\r\n * @param seconds\r\n */\r\nfunction toDateFromSeconds(seconds) {\r\n if (seconds) {\r\n return new Date(Number(seconds) * 1000);\r\n }\r\n return new Date();\r\n}\r\n/**\r\n * check if a token is expired based on given UTC time in seconds.\r\n * @param expiresOn\r\n */\r\nfunction isTokenExpired(expiresOn, offset) {\r\n // check for access token expiry\r\n const expirationSec = Number(expiresOn) || 0;\r\n const offsetCurrentTimeSec = nowSeconds() + offset;\r\n // If current time + offset is greater than token expiration time, then token is expired.\r\n return offsetCurrentTimeSec > expirationSec;\r\n}\r\n/**\r\n * If the current time is earlier than the time that a token was cached at, we must discard the token\r\n * i.e. The system clock was turned back after acquiring the cached token\r\n * @param cachedAt\r\n * @param offset\r\n */\r\nfunction wasClockTurnedBack(cachedAt) {\r\n const cachedAtSec = Number(cachedAt);\r\n return cachedAtSec > nowSeconds();\r\n}\r\n/**\r\n * Waits for t number of milliseconds\r\n * @param t number\r\n * @param value T\r\n */\r\nfunction delay(t, value) {\r\n return new Promise((resolve) => setTimeout(() => resolve(value), t));\r\n}\n\n/*! @azure/msal-common v15.13.2 2025-11-19 */\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * Create IdTokenEntity\r\n * @param homeAccountId\r\n * @param authenticationResult\r\n * @param clientId\r\n * @param authority\r\n */\r\nfunction createIdTokenEntity(homeAccountId, environment, idToken, clientId, tenantId) {\r\n const idTokenEntity = {\r\n credentialType: CredentialType.ID_TOKEN,\r\n homeAccountId: homeAccountId,\r\n environment: environment,\r\n clientId: clientId,\r\n secret: idToken,\r\n realm: tenantId,\r\n lastUpdatedAt: Date.now().toString(), // Set the last updated time to now\r\n };\r\n return idTokenEntity;\r\n}\r\n/**\r\n * Create AccessTokenEntity\r\n * @param homeAccountId\r\n * @param environment\r\n * @param accessToken\r\n * @param clientId\r\n * @param tenantId\r\n * @param scopes\r\n * @param expiresOn\r\n * @param extExpiresOn\r\n */\r\nfunction createAccessTokenEntity(homeAccountId, environment, accessToken, clientId, tenantId, scopes, expiresOn, extExpiresOn, base64Decode, refreshOn, tokenType, userAssertionHash, keyId, requestedClaims, requestedClaimsHash) {\r\n const atEntity = {\r\n homeAccountId: homeAccountId,\r\n credentialType: CredentialType.ACCESS_TOKEN,\r\n secret: accessToken,\r\n cachedAt: nowSeconds().toString(),\r\n expiresOn: expiresOn.toString(),\r\n extendedExpiresOn: extExpiresOn.toString(),\r\n environment: environment,\r\n clientId: clientId,\r\n realm: tenantId,\r\n target: scopes,\r\n tokenType: tokenType || AuthenticationScheme.BEARER,\r\n lastUpdatedAt: Date.now().toString(), // Set the last updated time to now\r\n };\r\n if (userAssertionHash) {\r\n atEntity.userAssertionHash = userAssertionHash;\r\n }\r\n if (refreshOn) {\r\n atEntity.refreshOn = refreshOn.toString();\r\n }\r\n if (requestedClaims) {\r\n atEntity.requestedClaims = requestedClaims;\r\n atEntity.requestedClaimsHash = requestedClaimsHash;\r\n }\r\n /*\r\n * Create Access Token With Auth Scheme instead of regular access token\r\n * Cast to lower to handle \"bearer\" from ADFS\r\n */\r\n if (atEntity.tokenType?.toLowerCase() !==\r\n AuthenticationScheme.BEARER.toLowerCase()) {\r\n atEntity.credentialType = CredentialType.ACCESS_TOKEN_WITH_AUTH_SCHEME;\r\n switch (atEntity.tokenType) {\r\n case AuthenticationScheme.POP:\r\n // Make sure keyId is present and add it to credential\r\n const tokenClaims = extractTokenClaims(accessToken, base64Decode);\r\n if (!tokenClaims?.cnf?.kid) {\r\n throw createClientAuthError(tokenClaimsCnfRequiredForSignedJwt);\r\n }\r\n atEntity.keyId = tokenClaims.cnf.kid;\r\n break;\r\n case AuthenticationScheme.SSH:\r\n atEntity.keyId = keyId;\r\n }\r\n }\r\n return atEntity;\r\n}\r\n/**\r\n * Create RefreshTokenEntity\r\n * @param homeAccountId\r\n * @param authenticationResult\r\n * @param clientId\r\n * @param authority\r\n */\r\nfunction createRefreshTokenEntity(homeAccountId, environment, refreshToken, clientId, familyId, userAssertionHash, expiresOn) {\r\n const rtEntity = {\r\n credentialType: CredentialType.REFRESH_TOKEN,\r\n homeAccountId: homeAccountId,\r\n environment: environment,\r\n clientId: clientId,\r\n secret: refreshToken,\r\n lastUpdatedAt: Date.now().toString(),\r\n };\r\n if (userAssertionHash) {\r\n rtEntity.userAssertionHash = userAssertionHash;\r\n }\r\n if (familyId) {\r\n rtEntity.familyId = familyId;\r\n }\r\n if (expiresOn) {\r\n rtEntity.expiresOn = expiresOn.toString();\r\n }\r\n return rtEntity;\r\n}\r\nfunction isCredentialEntity(entity) {\r\n return (entity.hasOwnProperty(\"homeAccountId\") &&\r\n entity.hasOwnProperty(\"environment\") &&\r\n entity.hasOwnProperty(\"credentialType\") &&\r\n entity.hasOwnProperty(\"clientId\") &&\r\n entity.hasOwnProperty(\"secret\"));\r\n}\r\n/**\r\n * Validates an entity: checks for all expected params\r\n * @param entity\r\n */\r\nfunction isAccessTokenEntity(entity) {\r\n if (!entity) {\r\n return false;\r\n }\r\n return (isCredentialEntity(entity) &&\r\n entity.hasOwnProperty(\"realm\") &&\r\n entity.hasOwnProperty(\"target\") &&\r\n (entity[\"credentialType\"] === CredentialType.ACCESS_TOKEN ||\r\n entity[\"credentialType\"] ===\r\n CredentialType.ACCESS_TOKEN_WITH_AUTH_SCHEME));\r\n}\r\n/**\r\n * Validates an entity: checks for all expected params\r\n * @param entity\r\n */\r\nfunction isIdTokenEntity(entity) {\r\n if (!entity) {\r\n return false;\r\n }\r\n return (isCredentialEntity(entity) &&\r\n entity.hasOwnProperty(\"realm\") &&\r\n entity[\"credentialType\"] === CredentialType.ID_TOKEN);\r\n}\r\n/**\r\n * Validates an entity: checks for all expected params\r\n * @param entity\r\n */\r\nfunction isRefreshTokenEntity(entity) {\r\n if (!entity) {\r\n return false;\r\n }\r\n return (isCredentialEntity(entity) &&\r\n entity[\"credentialType\"] === CredentialType.REFRESH_TOKEN);\r\n}\r\n/**\r\n * validates if a given cache entry is \"Telemetry\", parses \r\n * @param key\r\n * @param entity\r\n */\r\nfunction isServerTelemetryEntity(key, entity) {\r\n const validateKey = key.indexOf(SERVER_TELEM_CONSTANTS.CACHE_KEY) === 0;\r\n let validateEntity = true;\r\n if (entity) {\r\n validateEntity =\r\n entity.hasOwnProperty(\"failedRequests\") &&\r\n entity.hasOwnProperty(\"errors\") &&\r\n entity.hasOwnProperty(\"cacheHits\");\r\n }\r\n return validateKey && validateEntity;\r\n}\r\n/**\r\n * validates if a given cache entry is \"Throttling\", parses \r\n * @param key\r\n * @param entity\r\n */\r\nfunction isThrottlingEntity(key, entity) {\r\n let validateKey = false;\r\n if (key) {\r\n validateKey = key.indexOf(ThrottlingConstants.THROTTLING_PREFIX) === 0;\r\n }\r\n let validateEntity = true;\r\n if (entity) {\r\n validateEntity = entity.hasOwnProperty(\"throttleTime\");\r\n }\r\n return validateKey && validateEntity;\r\n}\r\n/**\r\n * Generate AppMetadata Cache Key as per the schema: appmetadata--\r\n */\r\nfunction generateAppMetadataKey({ environment, clientId, }) {\r\n const appMetaDataKeyArray = [\r\n APP_METADATA,\r\n environment,\r\n clientId,\r\n ];\r\n return appMetaDataKeyArray\r\n .join(Separators.CACHE_KEY_SEPARATOR)\r\n .toLowerCase();\r\n}\r\n/*\r\n * Validates an entity: checks for all expected params\r\n * @param entity\r\n */\r\nfunction isAppMetadataEntity(key, entity) {\r\n if (!entity) {\r\n return false;\r\n }\r\n return (key.indexOf(APP_METADATA) === 0 &&\r\n entity.hasOwnProperty(\"clientId\") &&\r\n entity.hasOwnProperty(\"environment\"));\r\n}\r\n/**\r\n * Validates an entity: checks for all expected params\r\n * @param entity\r\n */\r\nfunction isAuthorityMetadataEntity(key, entity) {\r\n if (!entity) {\r\n return false;\r\n }\r\n return (key.indexOf(AUTHORITY_METADATA_CONSTANTS.CACHE_KEY) === 0 &&\r\n entity.hasOwnProperty(\"aliases\") &&\r\n entity.hasOwnProperty(\"preferred_cache\") &&\r\n entity.hasOwnProperty(\"preferred_network\") &&\r\n entity.hasOwnProperty(\"canonical_authority\") &&\r\n entity.hasOwnProperty(\"authorization_endpoint\") &&\r\n entity.hasOwnProperty(\"token_endpoint\") &&\r\n entity.hasOwnProperty(\"issuer\") &&\r\n entity.hasOwnProperty(\"aliasesFromNetwork\") &&\r\n entity.hasOwnProperty(\"endpointsFromNetwork\") &&\r\n entity.hasOwnProperty(\"expiresAt\") &&\r\n entity.hasOwnProperty(\"jwks_uri\"));\r\n}\r\n/**\r\n * Reset the exiresAt value\r\n */\r\nfunction generateAuthorityMetadataExpiresAt() {\r\n return (nowSeconds() +\r\n AUTHORITY_METADATA_CONSTANTS.REFRESH_TIME_SECONDS);\r\n}\r\nfunction updateAuthorityEndpointMetadata(authorityMetadata, updatedValues, fromNetwork) {\r\n authorityMetadata.authorization_endpoint =\r\n updatedValues.authorization_endpoint;\r\n authorityMetadata.token_endpoint = updatedValues.token_endpoint;\r\n authorityMetadata.end_session_endpoint = updatedValues.end_session_endpoint;\r\n authorityMetadata.issuer = updatedValues.issuer;\r\n authorityMetadata.endpointsFromNetwork = fromNetwork;\r\n authorityMetadata.jwks_uri = updatedValues.jwks_uri;\r\n}\r\nfunction updateCloudDiscoveryMetadata(authorityMetadata, updatedValues, fromNetwork) {\r\n authorityMetadata.aliases = updatedValues.aliases;\r\n authorityMetadata.preferred_cache = updatedValues.preferred_cache;\r\n authorityMetadata.preferred_network = updatedValues.preferred_network;\r\n authorityMetadata.aliasesFromNetwork = fromNetwork;\r\n}\r\n/**\r\n * Returns whether or not the data needs to be refreshed\r\n */\r\nfunction isAuthorityMetadataExpired(metadata) {\r\n return metadata.expiresAt <= nowSeconds();\r\n}\n\n/*! @azure/msal-common v15.13.2 2025-11-19 */\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * The authority class validates the authority URIs used by the user, and retrieves the OpenID Configuration Data from the\r\n * endpoint. It will store the pertinent config data in this object for use during token calls.\r\n * @internal\r\n */\r\nclass Authority {\r\n constructor(authority, networkInterface, cacheManager, authorityOptions, logger, correlationId, performanceClient, managedIdentity) {\r\n this.canonicalAuthority = authority;\r\n this._canonicalAuthority.validateAsUri();\r\n this.networkInterface = networkInterface;\r\n this.cacheManager = cacheManager;\r\n this.authorityOptions = authorityOptions;\r\n this.regionDiscoveryMetadata = {\r\n region_used: undefined,\r\n region_source: undefined,\r\n region_outcome: undefined,\r\n };\r\n this.logger = logger;\r\n this.performanceClient = performanceClient;\r\n this.correlationId = correlationId;\r\n this.managedIdentity = managedIdentity || false;\r\n this.regionDiscovery = new RegionDiscovery(networkInterface, this.logger, this.performanceClient, this.correlationId);\r\n }\r\n /**\r\n * Get {@link AuthorityType}\r\n * @param authorityUri {@link IUri}\r\n * @private\r\n */\r\n getAuthorityType(authorityUri) {\r\n // CIAM auth url pattern is being standardized as: .ciamlogin.com\r\n if (authorityUri.HostNameAndPort.endsWith(Constants$1.CIAM_AUTH_URL)) {\r\n return AuthorityType.Ciam;\r\n }\r\n const pathSegments = authorityUri.PathSegments;\r\n if (pathSegments.length) {\r\n switch (pathSegments[0].toLowerCase()) {\r\n case Constants$1.ADFS:\r\n return AuthorityType.Adfs;\r\n case Constants$1.DSTS:\r\n return AuthorityType.Dsts;\r\n }\r\n }\r\n return AuthorityType.Default;\r\n }\r\n // See above for AuthorityType\r\n get authorityType() {\r\n return this.getAuthorityType(this.canonicalAuthorityUrlComponents);\r\n }\r\n /**\r\n * ProtocolMode enum representing the way endpoints are constructed.\r\n */\r\n get protocolMode() {\r\n return this.authorityOptions.protocolMode;\r\n }\r\n /**\r\n * Returns authorityOptions which can be used to reinstantiate a new authority instance\r\n */\r\n get options() {\r\n return this.authorityOptions;\r\n }\r\n /**\r\n * A URL that is the authority set by the developer\r\n */\r\n get canonicalAuthority() {\r\n return this._canonicalAuthority.urlString;\r\n }\r\n /**\r\n * Sets canonical authority.\r\n */\r\n set canonicalAuthority(url) {\r\n this._canonicalAuthority = new UrlString(url);\r\n this._canonicalAuthority.validateAsUri();\r\n this._canonicalAuthorityUrlComponents = null;\r\n }\r\n /**\r\n * Get authority components.\r\n */\r\n get canonicalAuthorityUrlComponents() {\r\n if (!this._canonicalAuthorityUrlComponents) {\r\n this._canonicalAuthorityUrlComponents =\r\n this._canonicalAuthority.getUrlComponents();\r\n }\r\n return this._canonicalAuthorityUrlComponents;\r\n }\r\n /**\r\n * Get hostname and port i.e. login.microsoftonline.com\r\n */\r\n get hostnameAndPort() {\r\n return this.canonicalAuthorityUrlComponents.HostNameAndPort.toLowerCase();\r\n }\r\n /**\r\n * Get tenant for authority.\r\n */\r\n get tenant() {\r\n return this.canonicalAuthorityUrlComponents.PathSegments[0];\r\n }\r\n /**\r\n * OAuth /authorize endpoint for requests\r\n */\r\n get authorizationEndpoint() {\r\n if (this.discoveryComplete()) {\r\n return this.replacePath(this.metadata.authorization_endpoint);\r\n }\r\n else {\r\n throw createClientAuthError(endpointResolutionError);\r\n }\r\n }\r\n /**\r\n * OAuth /token endpoint for requests\r\n */\r\n get tokenEndpoint() {\r\n if (this.discoveryComplete()) {\r\n return this.replacePath(this.metadata.token_endpoint);\r\n }\r\n else {\r\n throw createClientAuthError(endpointResolutionError);\r\n }\r\n }\r\n get deviceCodeEndpoint() {\r\n if (this.discoveryComplete()) {\r\n return this.replacePath(this.metadata.token_endpoint.replace(\"/token\", \"/devicecode\"));\r\n }\r\n else {\r\n throw createClientAuthError(endpointResolutionError);\r\n }\r\n }\r\n /**\r\n * OAuth logout endpoint for requests\r\n */\r\n get endSessionEndpoint() {\r\n if (this.discoveryComplete()) {\r\n // ROPC policies may not have end_session_endpoint set\r\n if (!this.metadata.end_session_endpoint) {\r\n throw createClientAuthError(endSessionEndpointNotSupported);\r\n }\r\n return this.replacePath(this.metadata.end_session_endpoint);\r\n }\r\n else {\r\n throw createClientAuthError(endpointResolutionError);\r\n }\r\n }\r\n /**\r\n * OAuth issuer for requests\r\n */\r\n get selfSignedJwtAudience() {\r\n if (this.discoveryComplete()) {\r\n return this.replacePath(this.metadata.issuer);\r\n }\r\n else {\r\n throw createClientAuthError(endpointResolutionError);\r\n }\r\n }\r\n /**\r\n * Jwks_uri for token signing keys\r\n */\r\n get jwksUri() {\r\n if (this.discoveryComplete()) {\r\n return this.replacePath(this.metadata.jwks_uri);\r\n }\r\n else {\r\n throw createClientAuthError(endpointResolutionError);\r\n }\r\n }\r\n /**\r\n * Returns a flag indicating that tenant name can be replaced in authority {@link IUri}\r\n * @param authorityUri {@link IUri}\r\n * @private\r\n */\r\n canReplaceTenant(authorityUri) {\r\n return (authorityUri.PathSegments.length === 1 &&\r\n !Authority.reservedTenantDomains.has(authorityUri.PathSegments[0]) &&\r\n this.getAuthorityType(authorityUri) === AuthorityType.Default &&\r\n this.protocolMode !== ProtocolMode.OIDC);\r\n }\r\n /**\r\n * Replaces tenant in url path with current tenant. Defaults to common.\r\n * @param urlString\r\n */\r\n replaceTenant(urlString) {\r\n return urlString.replace(/{tenant}|{tenantid}/g, this.tenant);\r\n }\r\n /**\r\n * Replaces path such as tenant or policy with the current tenant or policy.\r\n * @param urlString\r\n */\r\n replacePath(urlString) {\r\n let endpoint = urlString;\r\n const cachedAuthorityUrl = new UrlString(this.metadata.canonical_authority);\r\n const cachedAuthorityUrlComponents = cachedAuthorityUrl.getUrlComponents();\r\n const cachedAuthorityParts = cachedAuthorityUrlComponents.PathSegments;\r\n const currentAuthorityParts = this.canonicalAuthorityUrlComponents.PathSegments;\r\n currentAuthorityParts.forEach((currentPart, index) => {\r\n let cachedPart = cachedAuthorityParts[index];\r\n if (index === 0 &&\r\n this.canReplaceTenant(cachedAuthorityUrlComponents)) {\r\n const tenantId = new UrlString(this.metadata.authorization_endpoint).getUrlComponents().PathSegments[0];\r\n /**\r\n * Check if AAD canonical authority contains tenant domain name, for example \"testdomain.onmicrosoft.com\",\r\n * by comparing its first path segment to the corresponding authorization endpoint path segment, which is\r\n * always resolved with tenant id by OIDC.\r\n */\r\n if (cachedPart !== tenantId) {\r\n this.logger.verbose(`Replacing tenant domain name ${cachedPart} with id ${tenantId}`);\r\n cachedPart = tenantId;\r\n }\r\n }\r\n if (currentPart !== cachedPart) {\r\n endpoint = endpoint.replace(`/${cachedPart}/`, `/${currentPart}/`);\r\n }\r\n });\r\n return this.replaceTenant(endpoint);\r\n }\r\n /**\r\n * The default open id configuration endpoint for any canonical authority.\r\n */\r\n get defaultOpenIdConfigurationEndpoint() {\r\n const canonicalAuthorityHost = this.hostnameAndPort;\r\n if (this.canonicalAuthority.endsWith(\"v2.0/\") ||\r\n this.authorityType === AuthorityType.Adfs ||\r\n (this.protocolMode === ProtocolMode.OIDC &&\r\n !this.isAliasOfKnownMicrosoftAuthority(canonicalAuthorityHost))) {\r\n return `${this.canonicalAuthority}.well-known/openid-configuration`;\r\n }\r\n return `${this.canonicalAuthority}v2.0/.well-known/openid-configuration`;\r\n }\r\n /**\r\n * Boolean that returns whether or not tenant discovery has been completed.\r\n */\r\n discoveryComplete() {\r\n return !!this.metadata;\r\n }\r\n /**\r\n * Perform endpoint discovery to discover aliases, preferred_cache, preferred_network\r\n * and the /authorize, /token and logout endpoints.\r\n */\r\n async resolveEndpointsAsync() {\r\n this.performanceClient?.addQueueMeasurement(PerformanceEvents.AuthorityResolveEndpointsAsync, this.correlationId);\r\n const metadataEntity = this.getCurrentMetadataEntity();\r\n const cloudDiscoverySource = await invokeAsync(this.updateCloudDiscoveryMetadata.bind(this), PerformanceEvents.AuthorityUpdateCloudDiscoveryMetadata, this.logger, this.performanceClient, this.correlationId)(metadataEntity);\r\n this.canonicalAuthority = this.canonicalAuthority.replace(this.hostnameAndPort, metadataEntity.preferred_network);\r\n const endpointSource = await invokeAsync(this.updateEndpointMetadata.bind(this), PerformanceEvents.AuthorityUpdateEndpointMetadata, this.logger, this.performanceClient, this.correlationId)(metadataEntity);\r\n this.updateCachedMetadata(metadataEntity, cloudDiscoverySource, {\r\n source: endpointSource,\r\n });\r\n this.performanceClient?.addFields({\r\n cloudDiscoverySource: cloudDiscoverySource,\r\n authorityEndpointSource: endpointSource,\r\n }, this.correlationId);\r\n }\r\n /**\r\n * Returns metadata entity from cache if it exists, otherwiser returns a new metadata entity built\r\n * from the configured canonical authority\r\n * @returns\r\n */\r\n getCurrentMetadataEntity() {\r\n let metadataEntity = this.cacheManager.getAuthorityMetadataByAlias(this.hostnameAndPort);\r\n if (!metadataEntity) {\r\n metadataEntity = {\r\n aliases: [],\r\n preferred_cache: this.hostnameAndPort,\r\n preferred_network: this.hostnameAndPort,\r\n canonical_authority: this.canonicalAuthority,\r\n authorization_endpoint: \"\",\r\n token_endpoint: \"\",\r\n end_session_endpoint: \"\",\r\n issuer: \"\",\r\n aliasesFromNetwork: false,\r\n endpointsFromNetwork: false,\r\n expiresAt: generateAuthorityMetadataExpiresAt(),\r\n jwks_uri: \"\",\r\n };\r\n }\r\n return metadataEntity;\r\n }\r\n /**\r\n * Updates cached metadata based on metadata source and sets the instance's metadata\r\n * property to the same value\r\n * @param metadataEntity\r\n * @param cloudDiscoverySource\r\n * @param endpointMetadataResult\r\n */\r\n updateCachedMetadata(metadataEntity, cloudDiscoverySource, endpointMetadataResult) {\r\n if (cloudDiscoverySource !== AuthorityMetadataSource.CACHE &&\r\n endpointMetadataResult?.source !== AuthorityMetadataSource.CACHE) {\r\n // Reset the expiration time unless both values came from a successful cache lookup\r\n metadataEntity.expiresAt =\r\n generateAuthorityMetadataExpiresAt();\r\n metadataEntity.canonical_authority = this.canonicalAuthority;\r\n }\r\n const cacheKey = this.cacheManager.generateAuthorityMetadataCacheKey(metadataEntity.preferred_cache);\r\n this.cacheManager.setAuthorityMetadata(cacheKey, metadataEntity);\r\n this.metadata = metadataEntity;\r\n }\r\n /**\r\n * Update AuthorityMetadataEntity with new endpoints and return where the information came from\r\n * @param metadataEntity\r\n */\r\n async updateEndpointMetadata(metadataEntity) {\r\n this.performanceClient?.addQueueMeasurement(PerformanceEvents.AuthorityUpdateEndpointMetadata, this.correlationId);\r\n const localMetadata = this.updateEndpointMetadataFromLocalSources(metadataEntity);\r\n // Further update may be required for hardcoded metadata if regional metadata is preferred\r\n if (localMetadata) {\r\n if (localMetadata.source ===\r\n AuthorityMetadataSource.HARDCODED_VALUES) {\r\n // If the user prefers to use an azure region replace the global endpoints with regional information.\r\n if (this.authorityOptions.azureRegionConfiguration?.azureRegion) {\r\n if (localMetadata.metadata) {\r\n const hardcodedMetadata = await invokeAsync(this.updateMetadataWithRegionalInformation.bind(this), PerformanceEvents.AuthorityUpdateMetadataWithRegionalInformation, this.logger, this.performanceClient, this.correlationId)(localMetadata.metadata);\r\n updateAuthorityEndpointMetadata(metadataEntity, hardcodedMetadata, false);\r\n metadataEntity.canonical_authority =\r\n this.canonicalAuthority;\r\n }\r\n }\r\n }\r\n return localMetadata.source;\r\n }\r\n // Get metadata from network if local sources aren't available\r\n let metadata = await invokeAsync(this.getEndpointMetadataFromNetwork.bind(this), PerformanceEvents.AuthorityGetEndpointMetadataFromNetwork, this.logger, this.performanceClient, this.correlationId)();\r\n if (metadata) {\r\n // If the user prefers to use an azure region replace the global endpoints with regional information.\r\n if (this.authorityOptions.azureRegionConfiguration?.azureRegion) {\r\n metadata = await invokeAsync(this.updateMetadataWithRegionalInformation.bind(this), PerformanceEvents.AuthorityUpdateMetadataWithRegionalInformation, this.logger, this.performanceClient, this.correlationId)(metadata);\r\n }\r\n updateAuthorityEndpointMetadata(metadataEntity, metadata, true);\r\n return AuthorityMetadataSource.NETWORK;\r\n }\r\n else {\r\n // Metadata could not be obtained from the config, cache, network or hardcoded values\r\n throw createClientAuthError(openIdConfigError, this.defaultOpenIdConfigurationEndpoint);\r\n }\r\n }\r\n /**\r\n * Updates endpoint metadata from local sources and returns where the information was retrieved from and the metadata config\r\n * response if the source is hardcoded metadata\r\n * @param metadataEntity\r\n * @returns\r\n */\r\n updateEndpointMetadataFromLocalSources(metadataEntity) {\r\n this.logger.verbose(\"Attempting to get endpoint metadata from authority configuration\");\r\n const configMetadata = this.getEndpointMetadataFromConfig();\r\n if (configMetadata) {\r\n this.logger.verbose(\"Found endpoint metadata in authority configuration\");\r\n updateAuthorityEndpointMetadata(metadataEntity, configMetadata, false);\r\n return {\r\n source: AuthorityMetadataSource.CONFIG,\r\n };\r\n }\r\n this.logger.verbose(\"Did not find endpoint metadata in the config... Attempting to get endpoint metadata from the hardcoded values.\");\r\n // skipAuthorityMetadataCache is used to bypass hardcoded authority metadata and force a network metadata cache lookup and network metadata request if no cached response is available.\r\n if (this.authorityOptions.skipAuthorityMetadataCache) {\r\n this.logger.verbose(\"Skipping hardcoded metadata cache since skipAuthorityMetadataCache is set to true. Attempting to get endpoint metadata from the network metadata cache.\");\r\n }\r\n else {\r\n const hardcodedMetadata = this.getEndpointMetadataFromHardcodedValues();\r\n if (hardcodedMetadata) {\r\n updateAuthorityEndpointMetadata(metadataEntity, hardcodedMetadata, false);\r\n return {\r\n source: AuthorityMetadataSource.HARDCODED_VALUES,\r\n metadata: hardcodedMetadata,\r\n };\r\n }\r\n else {\r\n this.logger.verbose(\"Did not find endpoint metadata in hardcoded values... Attempting to get endpoint metadata from the network metadata cache.\");\r\n }\r\n }\r\n // Check cached metadata entity expiration status\r\n const metadataEntityExpired = isAuthorityMetadataExpired(metadataEntity);\r\n if (this.isAuthoritySameType(metadataEntity) &&\r\n metadataEntity.endpointsFromNetwork &&\r\n !metadataEntityExpired) {\r\n // No need to update\r\n this.logger.verbose(\"Found endpoint metadata in the cache.\");\r\n return { source: AuthorityMetadataSource.CACHE };\r\n }\r\n else if (metadataEntityExpired) {\r\n this.logger.verbose(\"The metadata entity is expired.\");\r\n }\r\n return null;\r\n }\r\n /**\r\n * Compares the number of url components after the domain to determine if the cached\r\n * authority metadata can be used for the requested authority. Protects against same domain different\r\n * authority such as login.microsoftonline.com/tenant and login.microsoftonline.com/tfp/tenant/policy\r\n * @param metadataEntity\r\n */\r\n isAuthoritySameType(metadataEntity) {\r\n const cachedAuthorityUrl = new UrlString(metadataEntity.canonical_authority);\r\n const cachedParts = cachedAuthorityUrl.getUrlComponents().PathSegments;\r\n return (cachedParts.length ===\r\n this.canonicalAuthorityUrlComponents.PathSegments.length);\r\n }\r\n /**\r\n * Parse authorityMetadata config option\r\n */\r\n getEndpointMetadataFromConfig() {\r\n if (this.authorityOptions.authorityMetadata) {\r\n try {\r\n return JSON.parse(this.authorityOptions.authorityMetadata);\r\n }\r\n catch (e) {\r\n throw createClientConfigurationError(invalidAuthorityMetadata);\r\n }\r\n }\r\n return null;\r\n }\r\n /**\r\n * Gets OAuth endpoints from the given OpenID configuration endpoint.\r\n *\r\n * @param hasHardcodedMetadata boolean\r\n */\r\n async getEndpointMetadataFromNetwork() {\r\n this.performanceClient?.addQueueMeasurement(PerformanceEvents.AuthorityGetEndpointMetadataFromNetwork, this.correlationId);\r\n const options = {};\r\n /*\r\n * TODO: Add a timeout if the authority exists in our library's\r\n * hardcoded list of metadata\r\n */\r\n const openIdConfigurationEndpoint = this.defaultOpenIdConfigurationEndpoint;\r\n this.logger.verbose(`Authority.getEndpointMetadataFromNetwork: attempting to retrieve OAuth endpoints from ${openIdConfigurationEndpoint}`);\r\n try {\r\n const response = await this.networkInterface.sendGetRequestAsync(openIdConfigurationEndpoint, options);\r\n const isValidResponse = isOpenIdConfigResponse(response.body);\r\n if (isValidResponse) {\r\n return response.body;\r\n }\r\n else {\r\n this.logger.verbose(`Authority.getEndpointMetadataFromNetwork: could not parse response as OpenID configuration`);\r\n return null;\r\n }\r\n }\r\n catch (e) {\r\n this.logger.verbose(`Authority.getEndpointMetadataFromNetwork: ${e}`);\r\n return null;\r\n }\r\n }\r\n /**\r\n * Get OAuth endpoints for common authorities.\r\n */\r\n getEndpointMetadataFromHardcodedValues() {\r\n if (this.hostnameAndPort in EndpointMetadata) {\r\n return EndpointMetadata[this.hostnameAndPort];\r\n }\r\n return null;\r\n }\r\n /**\r\n * Update the retrieved metadata with regional information.\r\n * User selected Azure region will be used if configured.\r\n */\r\n async updateMetadataWithRegionalInformation(metadata) {\r\n this.performanceClient?.addQueueMeasurement(PerformanceEvents.AuthorityUpdateMetadataWithRegionalInformation, this.correlationId);\r\n const userConfiguredAzureRegion = this.authorityOptions.azureRegionConfiguration?.azureRegion;\r\n if (userConfiguredAzureRegion) {\r\n if (userConfiguredAzureRegion !==\r\n Constants$1.AZURE_REGION_AUTO_DISCOVER_FLAG) {\r\n this.regionDiscoveryMetadata.region_outcome =\r\n RegionDiscoveryOutcomes.CONFIGURED_NO_AUTO_DETECTION;\r\n this.regionDiscoveryMetadata.region_used =\r\n userConfiguredAzureRegion;\r\n return Authority.replaceWithRegionalInformation(metadata, userConfiguredAzureRegion);\r\n }\r\n const autodetectedRegionName = await invokeAsync(this.regionDiscovery.detectRegion.bind(this.regionDiscovery), PerformanceEvents.RegionDiscoveryDetectRegion, this.logger, this.performanceClient, this.correlationId)(this.authorityOptions.azureRegionConfiguration\r\n ?.environmentRegion, this.regionDiscoveryMetadata);\r\n if (autodetectedRegionName) {\r\n this.regionDiscoveryMetadata.region_outcome =\r\n RegionDiscoveryOutcomes.AUTO_DETECTION_REQUESTED_SUCCESSFUL;\r\n this.regionDiscoveryMetadata.region_used =\r\n autodetectedRegionName;\r\n return Authority.replaceWithRegionalInformation(metadata, autodetectedRegionName);\r\n }\r\n this.regionDiscoveryMetadata.region_outcome =\r\n RegionDiscoveryOutcomes.AUTO_DETECTION_REQUESTED_FAILED;\r\n }\r\n return metadata;\r\n }\r\n /**\r\n * Updates the AuthorityMetadataEntity with new aliases, preferred_network and preferred_cache\r\n * and returns where the information was retrieved from\r\n * @param metadataEntity\r\n * @returns AuthorityMetadataSource\r\n */\r\n async updateCloudDiscoveryMetadata(metadataEntity) {\r\n this.performanceClient?.addQueueMeasurement(PerformanceEvents.AuthorityUpdateCloudDiscoveryMetadata, this.correlationId);\r\n const localMetadataSource = this.updateCloudDiscoveryMetadataFromLocalSources(metadataEntity);\r\n if (localMetadataSource) {\r\n return localMetadataSource;\r\n }\r\n // Fallback to network as metadata source\r\n const metadata = await invokeAsync(this.getCloudDiscoveryMetadataFromNetwork.bind(this), PerformanceEvents.AuthorityGetCloudDiscoveryMetadataFromNetwork, this.logger, this.performanceClient, this.correlationId)();\r\n if (metadata) {\r\n updateCloudDiscoveryMetadata(metadataEntity, metadata, true);\r\n return AuthorityMetadataSource.NETWORK;\r\n }\r\n // Metadata could not be obtained from the config, cache, network or hardcoded values\r\n throw createClientConfigurationError(untrustedAuthority);\r\n }\r\n updateCloudDiscoveryMetadataFromLocalSources(metadataEntity) {\r\n this.logger.verbose(\"Attempting to get cloud discovery metadata from authority configuration\");\r\n this.logger.verbosePii(`Known Authorities: ${this.authorityOptions.knownAuthorities ||\r\n Constants$1.NOT_APPLICABLE}`);\r\n this.logger.verbosePii(`Authority Metadata: ${this.authorityOptions.authorityMetadata ||\r\n Constants$1.NOT_APPLICABLE}`);\r\n this.logger.verbosePii(`Canonical Authority: ${metadataEntity.canonical_authority || Constants$1.NOT_APPLICABLE}`);\r\n const metadata = this.getCloudDiscoveryMetadataFromConfig();\r\n if (metadata) {\r\n this.logger.verbose(\"Found cloud discovery metadata in authority configuration\");\r\n updateCloudDiscoveryMetadata(metadataEntity, metadata, false);\r\n return AuthorityMetadataSource.CONFIG;\r\n }\r\n // If the cached metadata came from config but that config was not passed to this instance, we must go to hardcoded values\r\n this.logger.verbose(\"Did not find cloud discovery metadata in the config... Attempting to get cloud discovery metadata from the hardcoded values.\");\r\n if (this.options.skipAuthorityMetadataCache) {\r\n this.logger.verbose(\"Skipping hardcoded cloud discovery metadata cache since skipAuthorityMetadataCache is set to true. Attempting to get cloud discovery metadata from the network metadata cache.\");\r\n }\r\n else {\r\n const hardcodedMetadata = getCloudDiscoveryMetadataFromHardcodedValues(this.hostnameAndPort);\r\n if (hardcodedMetadata) {\r\n this.logger.verbose(\"Found cloud discovery metadata from hardcoded values.\");\r\n updateCloudDiscoveryMetadata(metadataEntity, hardcodedMetadata, false);\r\n return AuthorityMetadataSource.HARDCODED_VALUES;\r\n }\r\n this.logger.verbose(\"Did not find cloud discovery metadata in hardcoded values... Attempting to get cloud discovery metadata from the network metadata cache.\");\r\n }\r\n const metadataEntityExpired = isAuthorityMetadataExpired(metadataEntity);\r\n if (this.isAuthoritySameType(metadataEntity) &&\r\n metadataEntity.aliasesFromNetwork &&\r\n !metadataEntityExpired) {\r\n this.logger.verbose(\"Found cloud discovery metadata in the cache.\");\r\n // No need to update\r\n return AuthorityMetadataSource.CACHE;\r\n }\r\n else if (metadataEntityExpired) {\r\n this.logger.verbose(\"The metadata entity is expired.\");\r\n }\r\n return null;\r\n }\r\n /**\r\n * Parse cloudDiscoveryMetadata config or check knownAuthorities\r\n */\r\n getCloudDiscoveryMetadataFromConfig() {\r\n // CIAM does not support cloud discovery metadata\r\n if (this.authorityType === AuthorityType.Ciam) {\r\n this.logger.verbose(\"CIAM authorities do not support cloud discovery metadata, generate the aliases from authority host.\");\r\n return Authority.createCloudDiscoveryMetadataFromHost(this.hostnameAndPort);\r\n }\r\n // Check if network response was provided in config\r\n if (this.authorityOptions.cloudDiscoveryMetadata) {\r\n this.logger.verbose(\"The cloud discovery metadata has been provided as a network response, in the config.\");\r\n try {\r\n this.logger.verbose(\"Attempting to parse the cloud discovery metadata.\");\r\n const parsedResponse = JSON.parse(this.authorityOptions.cloudDiscoveryMetadata);\r\n const metadata = getCloudDiscoveryMetadataFromNetworkResponse(parsedResponse.metadata, this.hostnameAndPort);\r\n this.logger.verbose(\"Parsed the cloud discovery metadata.\");\r\n if (metadata) {\r\n this.logger.verbose(\"There is returnable metadata attached to the parsed cloud discovery metadata.\");\r\n return metadata;\r\n }\r\n else {\r\n this.logger.verbose(\"There is no metadata attached to the parsed cloud discovery metadata.\");\r\n }\r\n }\r\n catch (e) {\r\n this.logger.verbose(\"Unable to parse the cloud discovery metadata. Throwing Invalid Cloud Discovery Metadata Error.\");\r\n throw createClientConfigurationError(invalidCloudDiscoveryMetadata);\r\n }\r\n }\r\n // If cloudDiscoveryMetadata is empty or does not contain the host, check knownAuthorities\r\n if (this.isInKnownAuthorities()) {\r\n this.logger.verbose(\"The host is included in knownAuthorities. Creating new cloud discovery metadata from the host.\");\r\n return Authority.createCloudDiscoveryMetadataFromHost(this.hostnameAndPort);\r\n }\r\n return null;\r\n }\r\n /**\r\n * Called to get metadata from network if CloudDiscoveryMetadata was not populated by config\r\n *\r\n * @param hasHardcodedMetadata boolean\r\n */\r\n async getCloudDiscoveryMetadataFromNetwork() {\r\n this.performanceClient?.addQueueMeasurement(PerformanceEvents.AuthorityGetCloudDiscoveryMetadataFromNetwork, this.correlationId);\r\n const instanceDiscoveryEndpoint = `${Constants$1.AAD_INSTANCE_DISCOVERY_ENDPT}${this.canonicalAuthority}oauth2/v2.0/authorize`;\r\n const options = {};\r\n /*\r\n * TODO: Add a timeout if the authority exists in our library's\r\n * hardcoded list of metadata\r\n */\r\n let match = null;\r\n try {\r\n const response = await this.networkInterface.sendGetRequestAsync(instanceDiscoveryEndpoint, options);\r\n let typedResponseBody;\r\n let metadata;\r\n if (isCloudInstanceDiscoveryResponse(response.body)) {\r\n typedResponseBody =\r\n response.body;\r\n metadata = typedResponseBody.metadata;\r\n this.logger.verbosePii(`tenant_discovery_endpoint is: ${typedResponseBody.tenant_discovery_endpoint}`);\r\n }\r\n else if (isCloudInstanceDiscoveryErrorResponse(response.body)) {\r\n this.logger.warning(`A CloudInstanceDiscoveryErrorResponse was returned. The cloud instance discovery network request's status code is: ${response.status}`);\r\n typedResponseBody =\r\n response.body;\r\n if (typedResponseBody.error === Constants$1.INVALID_INSTANCE) {\r\n this.logger.error(\"The CloudInstanceDiscoveryErrorResponse error is invalid_instance.\");\r\n return null;\r\n }\r\n this.logger.warning(`The CloudInstanceDiscoveryErrorResponse error is ${typedResponseBody.error}`);\r\n this.logger.warning(`The CloudInstanceDiscoveryErrorResponse error description is ${typedResponseBody.error_description}`);\r\n this.logger.warning(\"Setting the value of the CloudInstanceDiscoveryMetadata (returned from the network) to []\");\r\n metadata = [];\r\n }\r\n else {\r\n this.logger.error(\"AAD did not return a CloudInstanceDiscoveryResponse or CloudInstanceDiscoveryErrorResponse\");\r\n return null;\r\n }\r\n this.logger.verbose(\"Attempting to find a match between the developer's authority and the CloudInstanceDiscoveryMetadata returned from the network request.\");\r\n match = getCloudDiscoveryMetadataFromNetworkResponse(metadata, this.hostnameAndPort);\r\n }\r\n catch (error) {\r\n if (error instanceof AuthError) {\r\n this.logger.error(`There was a network error while attempting to get the cloud discovery instance metadata.\\nError: ${error.errorCode}\\nError Description: ${error.errorMessage}`);\r\n }\r\n else {\r\n const typedError = error;\r\n this.logger.error(`A non-MSALJS error was thrown while attempting to get the cloud instance discovery metadata.\\nError: ${typedError.name}\\nError Description: ${typedError.message}`);\r\n }\r\n return null;\r\n }\r\n // Custom Domain scenario, host is trusted because Instance Discovery call succeeded\r\n if (!match) {\r\n this.logger.warning(\"The developer's authority was not found within the CloudInstanceDiscoveryMetadata returned from the network request.\");\r\n this.logger.verbose(\"Creating custom Authority for custom domain scenario.\");\r\n match = Authority.createCloudDiscoveryMetadataFromHost(this.hostnameAndPort);\r\n }\r\n return match;\r\n }\r\n /**\r\n * Helper function to determine if this host is included in the knownAuthorities config option\r\n */\r\n isInKnownAuthorities() {\r\n const matches = this.authorityOptions.knownAuthorities.filter((authority) => {\r\n return (authority &&\r\n UrlString.getDomainFromUrl(authority).toLowerCase() ===\r\n this.hostnameAndPort);\r\n });\r\n return matches.length > 0;\r\n }\r\n /**\r\n * helper function to populate the authority based on azureCloudOptions\r\n * @param authorityString\r\n * @param azureCloudOptions\r\n */\r\n static generateAuthority(authorityString, azureCloudOptions) {\r\n let authorityAzureCloudInstance;\r\n if (azureCloudOptions &&\r\n azureCloudOptions.azureCloudInstance !== AzureCloudInstance.None) {\r\n const tenant = azureCloudOptions.tenant\r\n ? azureCloudOptions.tenant\r\n : Constants$1.DEFAULT_COMMON_TENANT;\r\n authorityAzureCloudInstance = `${azureCloudOptions.azureCloudInstance}/${tenant}/`;\r\n }\r\n return authorityAzureCloudInstance\r\n ? authorityAzureCloudInstance\r\n : authorityString;\r\n }\r\n /**\r\n * Creates cloud discovery metadata object from a given host\r\n * @param host\r\n */\r\n static createCloudDiscoveryMetadataFromHost(host) {\r\n return {\r\n preferred_network: host,\r\n preferred_cache: host,\r\n aliases: [host],\r\n };\r\n }\r\n /**\r\n * helper function to generate environment from authority object\r\n */\r\n getPreferredCache() {\r\n if (this.managedIdentity) {\r\n return Constants$1.DEFAULT_AUTHORITY_HOST;\r\n }\r\n else if (this.discoveryComplete()) {\r\n return this.metadata.preferred_cache;\r\n }\r\n else {\r\n throw createClientAuthError(endpointResolutionError);\r\n }\r\n }\r\n /**\r\n * Returns whether or not the provided host is an alias of this authority instance\r\n * @param host\r\n */\r\n isAlias(host) {\r\n return this.metadata.aliases.indexOf(host) > -1;\r\n }\r\n /**\r\n * Returns whether or not the provided host is an alias of a known Microsoft authority for purposes of endpoint discovery\r\n * @param host\r\n */\r\n isAliasOfKnownMicrosoftAuthority(host) {\r\n return InstanceDiscoveryMetadataAliases.has(host);\r\n }\r\n /**\r\n * Checks whether the provided host is that of a public cloud authority\r\n *\r\n * @param authority string\r\n * @returns bool\r\n */\r\n static isPublicCloudAuthority(host) {\r\n return Constants$1.KNOWN_PUBLIC_CLOUDS.indexOf(host) >= 0;\r\n }\r\n /**\r\n * Rebuild the authority string with the region\r\n *\r\n * @param host string\r\n * @param region string\r\n */\r\n static buildRegionalAuthorityString(host, region, queryString) {\r\n // Create and validate a Url string object with the initial authority string\r\n const authorityUrlInstance = new UrlString(host);\r\n authorityUrlInstance.validateAsUri();\r\n const authorityUrlParts = authorityUrlInstance.getUrlComponents();\r\n let hostNameAndPort = `${region}.${authorityUrlParts.HostNameAndPort}`;\r\n if (this.isPublicCloudAuthority(authorityUrlParts.HostNameAndPort)) {\r\n hostNameAndPort = `${region}.${Constants$1.REGIONAL_AUTH_PUBLIC_CLOUD_SUFFIX}`;\r\n }\r\n // Include the query string portion of the url\r\n const url = UrlString.constructAuthorityUriFromObject({\r\n ...authorityUrlInstance.getUrlComponents(),\r\n HostNameAndPort: hostNameAndPort,\r\n }).urlString;\r\n // Add the query string if a query string was provided\r\n if (queryString)\r\n return `${url}?${queryString}`;\r\n return url;\r\n }\r\n /**\r\n * Replace the endpoints in the metadata object with their regional equivalents.\r\n *\r\n * @param metadata OpenIdConfigResponse\r\n * @param azureRegion string\r\n */\r\n static replaceWithRegionalInformation(metadata, azureRegion) {\r\n const regionalMetadata = { ...metadata };\r\n regionalMetadata.authorization_endpoint =\r\n Authority.buildRegionalAuthorityString(regionalMetadata.authorization_endpoint, azureRegion);\r\n regionalMetadata.token_endpoint =\r\n Authority.buildRegionalAuthorityString(regionalMetadata.token_endpoint, azureRegion);\r\n if (regionalMetadata.end_session_endpoint) {\r\n regionalMetadata.end_session_endpoint =\r\n Authority.buildRegionalAuthorityString(regionalMetadata.end_session_endpoint, azureRegion);\r\n }\r\n return regionalMetadata;\r\n }\r\n /**\r\n * Transform CIAM_AUTHORIY as per the below rules:\r\n * If no path segments found and it is a CIAM authority (hostname ends with .ciamlogin.com), then transform it\r\n *\r\n * NOTE: The transformation path should go away once STS supports CIAM with the format: `tenantIdorDomain.ciamlogin.com`\r\n * `ciamlogin.com` can also change in the future and we should accommodate the same\r\n *\r\n * @param authority\r\n */\r\n static transformCIAMAuthority(authority) {\r\n let ciamAuthority = authority;\r\n const authorityUrl = new UrlString(authority);\r\n const authorityUrlComponents = authorityUrl.getUrlComponents();\r\n // check if transformation is needed\r\n if (authorityUrlComponents.PathSegments.length === 0 &&\r\n authorityUrlComponents.HostNameAndPort.endsWith(Constants$1.CIAM_AUTH_URL)) {\r\n const tenantIdOrDomain = authorityUrlComponents.HostNameAndPort.split(\".\")[0];\r\n ciamAuthority = `${ciamAuthority}${tenantIdOrDomain}${Constants$1.AAD_TENANT_DOMAIN_SUFFIX}`;\r\n }\r\n return ciamAuthority;\r\n }\r\n}\r\n// Reserved tenant domain names that will not be replaced with tenant id\r\nAuthority.reservedTenantDomains = new Set([\r\n \"{tenant}\",\r\n \"{tenantid}\",\r\n AADAuthorityConstants.COMMON,\r\n AADAuthorityConstants.CONSUMERS,\r\n AADAuthorityConstants.ORGANIZATIONS,\r\n]);\r\n/**\r\n * Extract tenantId from authority\r\n */\r\nfunction getTenantFromAuthorityString(authority) {\r\n const authorityUrl = new UrlString(authority);\r\n const authorityUrlComponents = authorityUrl.getUrlComponents();\r\n /**\r\n * For credential matching purposes, tenantId is the last path segment of the authority URL:\r\n * AAD Authority - domain/tenantId -> Credentials are cached with realm = tenantId\r\n * B2C Authority - domain/{tenantId}?/.../policy -> Credentials are cached with realm = policy\r\n * tenantId is downcased because B2C policies can have mixed case but tfp claim is downcased\r\n *\r\n * Note that we may not have any path segments in certain OIDC scenarios.\r\n */\r\n const tenantId = authorityUrlComponents.PathSegments.slice(-1)[0]?.toLowerCase();\r\n switch (tenantId) {\r\n case AADAuthorityConstants.COMMON:\r\n case AADAuthorityConstants.ORGANIZATIONS:\r\n case AADAuthorityConstants.CONSUMERS:\r\n return undefined;\r\n default:\r\n return tenantId;\r\n }\r\n}\r\nfunction formatAuthorityUri(authorityUri) {\r\n return authorityUri.endsWith(Constants$1.FORWARD_SLASH)\r\n ? authorityUri\r\n : `${authorityUri}${Constants$1.FORWARD_SLASH}`;\r\n}\r\nfunction buildStaticAuthorityOptions(authOptions) {\r\n const rawCloudDiscoveryMetadata = authOptions.cloudDiscoveryMetadata;\r\n let cloudDiscoveryMetadata = undefined;\r\n if (rawCloudDiscoveryMetadata) {\r\n try {\r\n cloudDiscoveryMetadata = JSON.parse(rawCloudDiscoveryMetadata);\r\n }\r\n catch (e) {\r\n throw createClientConfigurationError(invalidCloudDiscoveryMetadata);\r\n }\r\n }\r\n return {\r\n canonicalAuthority: authOptions.authority\r\n ? formatAuthorityUri(authOptions.authority)\r\n : undefined,\r\n knownAuthorities: authOptions.knownAuthorities,\r\n cloudDiscoveryMetadata: cloudDiscoveryMetadata,\r\n };\r\n}\n\n/*! @azure/msal-common v15.13.2 2025-11-19 */\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * Create an authority object of the correct type based on the url\r\n * Performs basic authority validation - checks to see if the authority is of a valid type (i.e. aad, b2c, adfs)\r\n *\r\n * Also performs endpoint discovery.\r\n *\r\n * @param authorityUri\r\n * @param networkClient\r\n * @param protocolMode\r\n * @internal\r\n */\r\nasync function createDiscoveredInstance(authorityUri, networkClient, cacheManager, authorityOptions, logger, correlationId, performanceClient) {\r\n performanceClient?.addQueueMeasurement(PerformanceEvents.AuthorityFactoryCreateDiscoveredInstance, correlationId);\r\n const authorityUriFinal = Authority.transformCIAMAuthority(formatAuthorityUri(authorityUri));\r\n // Initialize authority and perform discovery endpoint check.\r\n const acquireTokenAuthority = new Authority(authorityUriFinal, networkClient, cacheManager, authorityOptions, logger, correlationId, performanceClient);\r\n try {\r\n await invokeAsync(acquireTokenAuthority.resolveEndpointsAsync.bind(acquireTokenAuthority), PerformanceEvents.AuthorityResolveEndpointsAsync, logger, performanceClient, correlationId)();\r\n return acquireTokenAuthority;\r\n }\r\n catch (e) {\r\n throw createClientAuthError(endpointResolutionError);\r\n }\r\n}\n\n/*! @azure/msal-common v15.13.2 2025-11-19 */\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * Error thrown when there is an error with the server code, for example, unavailability.\r\n */\r\nclass ServerError extends AuthError {\r\n constructor(errorCode, errorMessage, subError, errorNo, status) {\r\n super(errorCode, errorMessage, subError);\r\n this.name = \"ServerError\";\r\n this.errorNo = errorNo;\r\n this.status = status;\r\n Object.setPrototypeOf(this, ServerError.prototype);\r\n }\r\n}\n\n/*! @azure/msal-common v15.13.2 2025-11-19 */\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nfunction getRequestThumbprint(clientId, request, homeAccountId) {\r\n return {\r\n clientId: clientId,\r\n authority: request.authority,\r\n scopes: request.scopes,\r\n homeAccountIdentifier: homeAccountId,\r\n claims: request.claims,\r\n authenticationScheme: request.authenticationScheme,\r\n resourceRequestMethod: request.resourceRequestMethod,\r\n resourceRequestUri: request.resourceRequestUri,\r\n shrClaims: request.shrClaims,\r\n sshKid: request.sshKid,\r\n embeddedClientId: request.embeddedClientId || request.tokenBodyParameters?.clientId,\r\n };\r\n}\n\n/*! @azure/msal-common v15.13.2 2025-11-19 */\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/** @internal */\r\nclass ThrottlingUtils {\r\n /**\r\n * Prepares a RequestThumbprint to be stored as a key.\r\n * @param thumbprint\r\n */\r\n static generateThrottlingStorageKey(thumbprint) {\r\n return `${ThrottlingConstants.THROTTLING_PREFIX}.${JSON.stringify(thumbprint)}`;\r\n }\r\n /**\r\n * Performs necessary throttling checks before a network request.\r\n * @param cacheManager\r\n * @param thumbprint\r\n */\r\n static preProcess(cacheManager, thumbprint, correlationId) {\r\n const key = ThrottlingUtils.generateThrottlingStorageKey(thumbprint);\r\n const value = cacheManager.getThrottlingCache(key);\r\n if (value) {\r\n if (value.throttleTime < Date.now()) {\r\n cacheManager.removeItem(key, correlationId);\r\n return;\r\n }\r\n throw new ServerError(value.errorCodes?.join(\" \") || Constants$1.EMPTY_STRING, value.errorMessage, value.subError);\r\n }\r\n }\r\n /**\r\n * Performs necessary throttling checks after a network request.\r\n * @param cacheManager\r\n * @param thumbprint\r\n * @param response\r\n */\r\n static postProcess(cacheManager, thumbprint, response, correlationId) {\r\n if (ThrottlingUtils.checkResponseStatus(response) ||\r\n ThrottlingUtils.checkResponseForRetryAfter(response)) {\r\n const thumbprintValue = {\r\n throttleTime: ThrottlingUtils.calculateThrottleTime(parseInt(response.headers[HeaderNames.RETRY_AFTER])),\r\n error: response.body.error,\r\n errorCodes: response.body.error_codes,\r\n errorMessage: response.body.error_description,\r\n subError: response.body.suberror,\r\n };\r\n cacheManager.setThrottlingCache(ThrottlingUtils.generateThrottlingStorageKey(thumbprint), thumbprintValue, correlationId);\r\n }\r\n }\r\n /**\r\n * Checks a NetworkResponse object's status codes against 429 or 5xx\r\n * @param response\r\n */\r\n static checkResponseStatus(response) {\r\n return (response.status === 429 ||\r\n (response.status >= 500 && response.status < 600));\r\n }\r\n /**\r\n * Checks a NetworkResponse object's RetryAfter header\r\n * @param response\r\n */\r\n static checkResponseForRetryAfter(response) {\r\n if (response.headers) {\r\n return (response.headers.hasOwnProperty(HeaderNames.RETRY_AFTER) &&\r\n (response.status < 200 || response.status >= 300));\r\n }\r\n return false;\r\n }\r\n /**\r\n * Calculates the Unix-time value for a throttle to expire given throttleTime in seconds.\r\n * @param throttleTime\r\n */\r\n static calculateThrottleTime(throttleTime) {\r\n const time = throttleTime <= 0 ? 0 : throttleTime;\r\n const currentSeconds = Date.now() / 1000;\r\n return Math.floor(Math.min(currentSeconds +\r\n (time || ThrottlingConstants.DEFAULT_THROTTLE_TIME_SECONDS), currentSeconds +\r\n ThrottlingConstants.DEFAULT_MAX_THROTTLE_TIME_SECONDS) * 1000);\r\n }\r\n static removeThrottle(cacheManager, clientId, request, homeAccountIdentifier) {\r\n const thumbprint = getRequestThumbprint(clientId, request, homeAccountIdentifier);\r\n const key = this.generateThrottlingStorageKey(thumbprint);\r\n cacheManager.removeItem(key, request.correlationId);\r\n }\r\n}\n\n/*! @azure/msal-common v15.13.2 2025-11-19 */\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * Represents network related errors\r\n */\r\nclass NetworkError extends AuthError {\r\n constructor(error, httpStatus, responseHeaders) {\r\n super(error.errorCode, error.errorMessage, error.subError);\r\n Object.setPrototypeOf(this, NetworkError.prototype);\r\n this.name = \"NetworkError\";\r\n this.error = error;\r\n this.httpStatus = httpStatus;\r\n this.responseHeaders = responseHeaders;\r\n }\r\n}\n\n/*! @azure/msal-common v15.13.2 2025-11-19 */\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * Base application class which will construct requests to send to and handle responses from the Microsoft STS using the authorization code flow.\r\n * @internal\r\n */\r\nclass BaseClient {\r\n constructor(configuration, performanceClient) {\r\n // Set the configuration\r\n this.config = buildClientConfiguration(configuration);\r\n // Initialize the logger\r\n this.logger = new Logger(this.config.loggerOptions, name$1, version$1);\r\n // Initialize crypto\r\n this.cryptoUtils = this.config.cryptoInterface;\r\n // Initialize storage interface\r\n this.cacheManager = this.config.storageInterface;\r\n // Set the network interface\r\n this.networkClient = this.config.networkInterface;\r\n // Set TelemetryManager\r\n this.serverTelemetryManager = this.config.serverTelemetryManager;\r\n // set Authority\r\n this.authority = this.config.authOptions.authority;\r\n // set performance telemetry client\r\n this.performanceClient = performanceClient;\r\n }\r\n /**\r\n * Creates default headers for requests to token endpoint\r\n */\r\n createTokenRequestHeaders(ccsCred) {\r\n const headers = {};\r\n headers[HeaderNames.CONTENT_TYPE] = Constants$1.URL_FORM_CONTENT_TYPE;\r\n if (!this.config.systemOptions.preventCorsPreflight && ccsCred) {\r\n switch (ccsCred.type) {\r\n case CcsCredentialType.HOME_ACCOUNT_ID:\r\n try {\r\n const clientInfo = buildClientInfoFromHomeAccountId(ccsCred.credential);\r\n headers[HeaderNames.CCS_HEADER] = `Oid:${clientInfo.uid}@${clientInfo.utid}`;\r\n }\r\n catch (e) {\r\n this.logger.verbose(\"Could not parse home account ID for CCS Header: \" +\r\n e);\r\n }\r\n break;\r\n case CcsCredentialType.UPN:\r\n headers[HeaderNames.CCS_HEADER] = `UPN: ${ccsCred.credential}`;\r\n break;\r\n }\r\n }\r\n return headers;\r\n }\r\n /**\r\n * Http post to token endpoint\r\n * @param tokenEndpoint\r\n * @param queryString\r\n * @param headers\r\n * @param thumbprint\r\n */\r\n async executePostToTokenEndpoint(tokenEndpoint, queryString, headers, thumbprint, correlationId, queuedEvent) {\r\n if (queuedEvent) {\r\n this.performanceClient?.addQueueMeasurement(queuedEvent, correlationId);\r\n }\r\n const response = await this.sendPostRequest(thumbprint, tokenEndpoint, { body: queryString, headers: headers }, correlationId);\r\n if (this.config.serverTelemetryManager &&\r\n response.status < 500 &&\r\n response.status !== 429) {\r\n // Telemetry data successfully logged by server, clear Telemetry cache\r\n this.config.serverTelemetryManager.clearTelemetryCache();\r\n }\r\n return response;\r\n }\r\n /**\r\n * Wraps sendPostRequestAsync with necessary preflight and postflight logic\r\n * @param thumbprint - Request thumbprint for throttling\r\n * @param tokenEndpoint - Endpoint to make the POST to\r\n * @param options - Body and Headers to include on the POST request\r\n * @param correlationId - CorrelationId for telemetry\r\n */\r\n async sendPostRequest(thumbprint, tokenEndpoint, options, correlationId) {\r\n ThrottlingUtils.preProcess(this.cacheManager, thumbprint, correlationId);\r\n let response;\r\n try {\r\n response = await invokeAsync((this.networkClient.sendPostRequestAsync.bind(this.networkClient)), PerformanceEvents.NetworkClientSendPostRequestAsync, this.logger, this.performanceClient, correlationId)(tokenEndpoint, options);\r\n const responseHeaders = response.headers || {};\r\n this.performanceClient?.addFields({\r\n refreshTokenSize: response.body.refresh_token?.length || 0,\r\n httpVerToken: responseHeaders[HeaderNames.X_MS_HTTP_VERSION] || \"\",\r\n requestId: responseHeaders[HeaderNames.X_MS_REQUEST_ID] || \"\",\r\n }, correlationId);\r\n }\r\n catch (e) {\r\n if (e instanceof NetworkError) {\r\n const responseHeaders = e.responseHeaders;\r\n if (responseHeaders) {\r\n this.performanceClient?.addFields({\r\n httpVerToken: responseHeaders[HeaderNames.X_MS_HTTP_VERSION] || \"\",\r\n requestId: responseHeaders[HeaderNames.X_MS_REQUEST_ID] ||\r\n \"\",\r\n contentTypeHeader: responseHeaders[HeaderNames.CONTENT_TYPE] ||\r\n undefined,\r\n contentLengthHeader: responseHeaders[HeaderNames.CONTENT_LENGTH] ||\r\n undefined,\r\n httpStatus: e.httpStatus,\r\n }, correlationId);\r\n }\r\n throw e.error;\r\n }\r\n if (e instanceof AuthError) {\r\n throw e;\r\n }\r\n else {\r\n throw createClientAuthError(networkError);\r\n }\r\n }\r\n ThrottlingUtils.postProcess(this.cacheManager, thumbprint, response, correlationId);\r\n return response;\r\n }\r\n /**\r\n * Updates the authority object of the client. Endpoint discovery must be completed.\r\n * @param updatedAuthority\r\n */\r\n async updateAuthority(cloudInstanceHostname, correlationId) {\r\n this.performanceClient?.addQueueMeasurement(PerformanceEvents.UpdateTokenEndpointAuthority, correlationId);\r\n const cloudInstanceAuthorityUri = `https://${cloudInstanceHostname}/${this.authority.tenant}/`;\r\n const cloudInstanceAuthority = await createDiscoveredInstance(cloudInstanceAuthorityUri, this.networkClient, this.cacheManager, this.authority.options, this.logger, correlationId, this.performanceClient);\r\n this.authority = cloudInstanceAuthority;\r\n }\r\n /**\r\n * Creates query string for the /token request\r\n * @param request\r\n */\r\n createTokenQueryParameters(request) {\r\n const parameters = new Map();\r\n if (request.embeddedClientId) {\r\n addBrokerParameters(parameters, this.config.authOptions.clientId, this.config.authOptions.redirectUri);\r\n }\r\n if (request.tokenQueryParameters) {\r\n addExtraQueryParameters(parameters, request.tokenQueryParameters);\r\n }\r\n addCorrelationId(parameters, request.correlationId);\r\n instrumentBrokerParams(parameters, request.correlationId, this.performanceClient);\r\n return mapToQueryString(parameters);\r\n }\r\n}\n\n/*! @azure/msal-common v15.13.2 2025-11-19 */\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n// Codes defined by MSAL\r\nconst noTokensFound = \"no_tokens_found\";\r\nconst nativeAccountUnavailable = \"native_account_unavailable\";\r\nconst refreshTokenExpired = \"refresh_token_expired\";\r\nconst uxNotAllowed = \"ux_not_allowed\";\r\n// Codes potentially returned by server\r\nconst interactionRequired = \"interaction_required\";\r\nconst consentRequired = \"consent_required\";\r\nconst loginRequired = \"login_required\";\r\nconst badToken = \"bad_token\";\n\nvar InteractionRequiredAuthErrorCodes = /*#__PURE__*/Object.freeze({\n __proto__: null,\n badToken: badToken,\n consentRequired: consentRequired,\n interactionRequired: interactionRequired,\n loginRequired: loginRequired,\n nativeAccountUnavailable: nativeAccountUnavailable,\n noTokensFound: noTokensFound,\n refreshTokenExpired: refreshTokenExpired,\n uxNotAllowed: uxNotAllowed\n});\n\n/*! @azure/msal-common v15.13.2 2025-11-19 */\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * InteractionRequiredServerErrorMessage contains string constants used by error codes and messages returned by the server indicating interaction is required\r\n */\r\nconst InteractionRequiredServerErrorMessage = [\r\n interactionRequired,\r\n consentRequired,\r\n loginRequired,\r\n badToken,\r\n uxNotAllowed,\r\n];\r\nconst InteractionRequiredAuthSubErrorMessage = [\r\n \"message_only\",\r\n \"additional_action\",\r\n \"basic_action\",\r\n \"user_password_expired\",\r\n \"consent_required\",\r\n \"bad_token\",\r\n];\r\nconst InteractionRequiredAuthErrorMessages = {\r\n [noTokensFound]: \"No refresh token found in the cache. Please sign-in.\",\r\n [nativeAccountUnavailable]: \"The requested account is not available in the native broker. It may have been deleted or logged out. Please sign-in again using an interactive API.\",\r\n [refreshTokenExpired]: \"Refresh token has expired.\",\r\n [badToken]: \"Identity provider returned bad_token due to an expired or invalid refresh token. Please invoke an interactive API to resolve.\",\r\n [uxNotAllowed]: \"`canShowUI` flag in Edge was set to false. User interaction required on web page. Please invoke an interactive API to resolve.\",\r\n};\r\n/**\r\n * Interaction required errors defined by the SDK\r\n * @deprecated Use InteractionRequiredAuthErrorCodes instead\r\n */\r\nconst InteractionRequiredAuthErrorMessage = {\r\n noTokensFoundError: {\r\n code: noTokensFound,\r\n desc: InteractionRequiredAuthErrorMessages[noTokensFound],\r\n },\r\n native_account_unavailable: {\r\n code: nativeAccountUnavailable,\r\n desc: InteractionRequiredAuthErrorMessages[nativeAccountUnavailable],\r\n },\r\n bad_token: {\r\n code: badToken,\r\n desc: InteractionRequiredAuthErrorMessages[badToken],\r\n },\r\n};\r\n/**\r\n * Error thrown when user interaction is required.\r\n */\r\nclass InteractionRequiredAuthError extends AuthError {\r\n constructor(errorCode, errorMessage, subError, timestamp, traceId, correlationId, claims, errorNo) {\r\n super(errorCode, errorMessage, subError);\r\n Object.setPrototypeOf(this, InteractionRequiredAuthError.prototype);\r\n this.timestamp = timestamp || Constants$1.EMPTY_STRING;\r\n this.traceId = traceId || Constants$1.EMPTY_STRING;\r\n this.correlationId = correlationId || Constants$1.EMPTY_STRING;\r\n this.claims = claims || Constants$1.EMPTY_STRING;\r\n this.name = \"InteractionRequiredAuthError\";\r\n this.errorNo = errorNo;\r\n }\r\n}\r\n/**\r\n * Helper function used to determine if an error thrown by the server requires interaction to resolve\r\n * @param errorCode\r\n * @param errorString\r\n * @param subError\r\n */\r\nfunction isInteractionRequiredError(errorCode, errorString, subError) {\r\n const isInteractionRequiredErrorCode = !!errorCode &&\r\n InteractionRequiredServerErrorMessage.indexOf(errorCode) > -1;\r\n const isInteractionRequiredSubError = !!subError &&\r\n InteractionRequiredAuthSubErrorMessage.indexOf(subError) > -1;\r\n const isInteractionRequiredErrorDesc = !!errorString &&\r\n InteractionRequiredServerErrorMessage.some((irErrorCode) => {\r\n return errorString.indexOf(irErrorCode) > -1;\r\n });\r\n return (isInteractionRequiredErrorCode ||\r\n isInteractionRequiredErrorDesc ||\r\n isInteractionRequiredSubError);\r\n}\r\n/**\r\n * Creates an InteractionRequiredAuthError\r\n */\r\nfunction createInteractionRequiredAuthError(errorCode) {\r\n return new InteractionRequiredAuthError(errorCode, InteractionRequiredAuthErrorMessages[errorCode]);\r\n}\n\n/*! @azure/msal-common v15.13.2 2025-11-19 */\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * Class which provides helpers for OAuth 2.0 protocol specific values\r\n */\r\nclass ProtocolUtils {\r\n /**\r\n * Appends user state with random guid, or returns random guid.\r\n * @param userState\r\n * @param randomGuid\r\n */\r\n static setRequestState(cryptoObj, userState, meta) {\r\n const libraryState = ProtocolUtils.generateLibraryState(cryptoObj, meta);\r\n return userState\r\n ? `${libraryState}${Constants$1.RESOURCE_DELIM}${userState}`\r\n : libraryState;\r\n }\r\n /**\r\n * Generates the state value used by the common library.\r\n * @param randomGuid\r\n * @param cryptoObj\r\n */\r\n static generateLibraryState(cryptoObj, meta) {\r\n if (!cryptoObj) {\r\n throw createClientAuthError(noCryptoObject);\r\n }\r\n // Create a state object containing a unique id and the timestamp of the request creation\r\n const stateObj = {\r\n id: cryptoObj.createNewGuid(),\r\n };\r\n if (meta) {\r\n stateObj.meta = meta;\r\n }\r\n const stateString = JSON.stringify(stateObj);\r\n return cryptoObj.base64Encode(stateString);\r\n }\r\n /**\r\n * Parses the state into the RequestStateObject, which contains the LibraryState info and the state passed by the user.\r\n * @param state\r\n * @param cryptoObj\r\n */\r\n static parseRequestState(cryptoObj, state) {\r\n if (!cryptoObj) {\r\n throw createClientAuthError(noCryptoObject);\r\n }\r\n if (!state) {\r\n throw createClientAuthError(invalidState);\r\n }\r\n try {\r\n // Split the state between library state and user passed state and decode them separately\r\n const splitState = state.split(Constants$1.RESOURCE_DELIM);\r\n const libraryState = splitState[0];\r\n const userState = splitState.length > 1\r\n ? splitState.slice(1).join(Constants$1.RESOURCE_DELIM)\r\n : Constants$1.EMPTY_STRING;\r\n const libraryStateString = cryptoObj.base64Decode(libraryState);\r\n const libraryStateObj = JSON.parse(libraryStateString);\r\n return {\r\n userRequestState: userState || Constants$1.EMPTY_STRING,\r\n libraryState: libraryStateObj,\r\n };\r\n }\r\n catch (e) {\r\n throw createClientAuthError(invalidState);\r\n }\r\n }\r\n}\n\n/*! @azure/msal-common v15.13.2 2025-11-19 */\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nconst KeyLocation = {\r\n SW: \"sw\"};\r\n/** @internal */\r\nclass PopTokenGenerator {\r\n constructor(cryptoUtils, performanceClient) {\r\n this.cryptoUtils = cryptoUtils;\r\n this.performanceClient = performanceClient;\r\n }\r\n /**\r\n * Generates the req_cnf validated at the RP in the POP protocol for SHR parameters\r\n * and returns an object containing the keyid, the full req_cnf string and the req_cnf string hash\r\n * @param request\r\n * @returns\r\n */\r\n async generateCnf(request, logger) {\r\n this.performanceClient?.addQueueMeasurement(PerformanceEvents.PopTokenGenerateCnf, request.correlationId);\r\n const reqCnf = await invokeAsync(this.generateKid.bind(this), PerformanceEvents.PopTokenGenerateCnf, logger, this.performanceClient, request.correlationId)(request);\r\n const reqCnfString = this.cryptoUtils.base64UrlEncode(JSON.stringify(reqCnf));\r\n return {\r\n kid: reqCnf.kid,\r\n reqCnfString,\r\n };\r\n }\r\n /**\r\n * Generates key_id for a SHR token request\r\n * @param request\r\n * @returns\r\n */\r\n async generateKid(request) {\r\n this.performanceClient?.addQueueMeasurement(PerformanceEvents.PopTokenGenerateKid, request.correlationId);\r\n const kidThumbprint = await this.cryptoUtils.getPublicKeyThumbprint(request);\r\n return {\r\n kid: kidThumbprint,\r\n xms_ksl: KeyLocation.SW,\r\n };\r\n }\r\n /**\r\n * Signs the POP access_token with the local generated key-pair\r\n * @param accessToken\r\n * @param request\r\n * @returns\r\n */\r\n async signPopToken(accessToken, keyId, request) {\r\n return this.signPayload(accessToken, keyId, request);\r\n }\r\n /**\r\n * Utility function to generate the signed JWT for an access_token\r\n * @param payload\r\n * @param kid\r\n * @param request\r\n * @param claims\r\n * @returns\r\n */\r\n async signPayload(payload, keyId, request, claims) {\r\n // Deconstruct request to extract SHR parameters\r\n const { resourceRequestMethod, resourceRequestUri, shrClaims, shrNonce, shrOptions, } = request;\r\n const resourceUrlString = resourceRequestUri\r\n ? new UrlString(resourceRequestUri)\r\n : undefined;\r\n const resourceUrlComponents = resourceUrlString?.getUrlComponents();\r\n return this.cryptoUtils.signJwt({\r\n at: payload,\r\n ts: nowSeconds(),\r\n m: resourceRequestMethod?.toUpperCase(),\r\n u: resourceUrlComponents?.HostNameAndPort,\r\n nonce: shrNonce || this.cryptoUtils.createNewGuid(),\r\n p: resourceUrlComponents?.AbsolutePath,\r\n q: resourceUrlComponents?.QueryString\r\n ? [[], resourceUrlComponents.QueryString]\r\n : undefined,\r\n client_claims: shrClaims || undefined,\r\n ...claims,\r\n }, keyId, shrOptions, request.correlationId);\r\n }\r\n}\n\n/*! @azure/msal-common v15.13.2 2025-11-19 */\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * This class instance helps track the memory changes facilitating\r\n * decisions to read from and write to the persistent cache\r\n */ class TokenCacheContext {\r\n constructor(tokenCache, hasChanged) {\r\n this.cache = tokenCache;\r\n this.hasChanged = hasChanged;\r\n }\r\n /**\r\n * boolean which indicates the changes in cache\r\n */\r\n get cacheHasChanged() {\r\n return this.hasChanged;\r\n }\r\n /**\r\n * function to retrieve the token cache\r\n */\r\n get tokenCache() {\r\n return this.cache;\r\n }\r\n}\n\n/*! @azure/msal-common v15.13.2 2025-11-19 */\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * Class that handles response parsing.\r\n * @internal\r\n */\r\nclass ResponseHandler {\r\n constructor(clientId, cacheStorage, cryptoObj, logger, serializableCache, persistencePlugin, performanceClient) {\r\n this.clientId = clientId;\r\n this.cacheStorage = cacheStorage;\r\n this.cryptoObj = cryptoObj;\r\n this.logger = logger;\r\n this.serializableCache = serializableCache;\r\n this.persistencePlugin = persistencePlugin;\r\n this.performanceClient = performanceClient;\r\n }\r\n /**\r\n * Function which validates server authorization token response.\r\n * @param serverResponse\r\n * @param refreshAccessToken\r\n */\r\n validateTokenResponse(serverResponse, refreshAccessToken) {\r\n // Check for error\r\n if (serverResponse.error ||\r\n serverResponse.error_description ||\r\n serverResponse.suberror) {\r\n const errString = `Error(s): ${serverResponse.error_codes || Constants$1.NOT_AVAILABLE} - Timestamp: ${serverResponse.timestamp || Constants$1.NOT_AVAILABLE} - Description: ${serverResponse.error_description || Constants$1.NOT_AVAILABLE} - Correlation ID: ${serverResponse.correlation_id || Constants$1.NOT_AVAILABLE} - Trace ID: ${serverResponse.trace_id || Constants$1.NOT_AVAILABLE}`;\r\n const serverErrorNo = serverResponse.error_codes?.length\r\n ? serverResponse.error_codes[0]\r\n : undefined;\r\n const serverError = new ServerError(serverResponse.error, errString, serverResponse.suberror, serverErrorNo, serverResponse.status);\r\n // check if 500 error\r\n if (refreshAccessToken &&\r\n serverResponse.status &&\r\n serverResponse.status >= HttpStatus.SERVER_ERROR_RANGE_START &&\r\n serverResponse.status <= HttpStatus.SERVER_ERROR_RANGE_END) {\r\n this.logger.warning(`executeTokenRequest:validateTokenResponse - AAD is currently unavailable and the access token is unable to be refreshed.\\n${serverError}`);\r\n // don't throw an exception, but alert the user via a log that the token was unable to be refreshed\r\n return;\r\n // check if 400 error\r\n }\r\n else if (refreshAccessToken &&\r\n serverResponse.status &&\r\n serverResponse.status >= HttpStatus.CLIENT_ERROR_RANGE_START &&\r\n serverResponse.status <= HttpStatus.CLIENT_ERROR_RANGE_END) {\r\n this.logger.warning(`executeTokenRequest:validateTokenResponse - AAD is currently available but is unable to refresh the access token.\\n${serverError}`);\r\n // don't throw an exception, but alert the user via a log that the token was unable to be refreshed\r\n return;\r\n }\r\n if (isInteractionRequiredError(serverResponse.error, serverResponse.error_description, serverResponse.suberror)) {\r\n throw new InteractionRequiredAuthError(serverResponse.error, serverResponse.error_description, serverResponse.suberror, serverResponse.timestamp || Constants$1.EMPTY_STRING, serverResponse.trace_id || Constants$1.EMPTY_STRING, serverResponse.correlation_id || Constants$1.EMPTY_STRING, serverResponse.claims || Constants$1.EMPTY_STRING, serverErrorNo);\r\n }\r\n throw serverError;\r\n }\r\n }\r\n /**\r\n * Returns a constructed token response based on given string. Also manages the cache updates and cleanups.\r\n * @param serverTokenResponse\r\n * @param authority\r\n */\r\n async handleServerTokenResponse(serverTokenResponse, authority, reqTimestamp, request, authCodePayload, userAssertionHash, handlingRefreshTokenResponse, forceCacheRefreshTokenResponse, serverRequestId) {\r\n this.performanceClient?.addQueueMeasurement(PerformanceEvents.HandleServerTokenResponse, serverTokenResponse.correlation_id);\r\n // create an idToken object (not entity)\r\n let idTokenClaims;\r\n if (serverTokenResponse.id_token) {\r\n idTokenClaims = extractTokenClaims(serverTokenResponse.id_token || Constants$1.EMPTY_STRING, this.cryptoObj.base64Decode);\r\n // token nonce check (TODO: Add a warning if no nonce is given?)\r\n if (authCodePayload && authCodePayload.nonce) {\r\n if (idTokenClaims.nonce !== authCodePayload.nonce) {\r\n throw createClientAuthError(nonceMismatch);\r\n }\r\n }\r\n // token max_age check\r\n if (request.maxAge || request.maxAge === 0) {\r\n const authTime = idTokenClaims.auth_time;\r\n if (!authTime) {\r\n throw createClientAuthError(authTimeNotFound);\r\n }\r\n checkMaxAge(authTime, request.maxAge);\r\n }\r\n }\r\n // generate homeAccountId\r\n this.homeAccountIdentifier = AccountEntity.generateHomeAccountId(serverTokenResponse.client_info || Constants$1.EMPTY_STRING, authority.authorityType, this.logger, this.cryptoObj, idTokenClaims);\r\n // save the response tokens\r\n let requestStateObj;\r\n if (!!authCodePayload && !!authCodePayload.state) {\r\n requestStateObj = ProtocolUtils.parseRequestState(this.cryptoObj, authCodePayload.state);\r\n }\r\n // Add keyId from request to serverTokenResponse if defined\r\n serverTokenResponse.key_id =\r\n serverTokenResponse.key_id || request.sshKid || undefined;\r\n const cacheRecord = this.generateCacheRecord(serverTokenResponse, authority, reqTimestamp, request, idTokenClaims, userAssertionHash, authCodePayload);\r\n let cacheContext;\r\n try {\r\n if (this.persistencePlugin && this.serializableCache) {\r\n this.logger.verbose(\"Persistence enabled, calling beforeCacheAccess\");\r\n cacheContext = new TokenCacheContext(this.serializableCache, true);\r\n await this.persistencePlugin.beforeCacheAccess(cacheContext);\r\n }\r\n /*\r\n * When saving a refreshed tokens to the cache, it is expected that the account that was used is present in the cache.\r\n * If not present, we should return null, as it's the case that another application called removeAccount in between\r\n * the calls to getAllAccounts and acquireTokenSilent. We should not overwrite that removal, unless explicitly flagged by\r\n * the developer, as in the case of refresh token flow used in ADAL Node to MSAL Node migration.\r\n */\r\n if (handlingRefreshTokenResponse &&\r\n !forceCacheRefreshTokenResponse &&\r\n cacheRecord.account) {\r\n const key = this.cacheStorage.generateAccountKey(AccountEntity.getAccountInfo(cacheRecord.account));\r\n const account = this.cacheStorage.getAccount(key, request.correlationId);\r\n if (!account) {\r\n this.logger.warning(\"Account used to refresh tokens not in persistence, refreshed tokens will not be stored in the cache\");\r\n return await ResponseHandler.generateAuthenticationResult(this.cryptoObj, authority, cacheRecord, false, request, idTokenClaims, requestStateObj, undefined, serverRequestId);\r\n }\r\n }\r\n await this.cacheStorage.saveCacheRecord(cacheRecord, request.correlationId, isKmsi(idTokenClaims || {}), request.storeInCache);\r\n }\r\n finally {\r\n if (this.persistencePlugin &&\r\n this.serializableCache &&\r\n cacheContext) {\r\n this.logger.verbose(\"Persistence enabled, calling afterCacheAccess\");\r\n await this.persistencePlugin.afterCacheAccess(cacheContext);\r\n }\r\n }\r\n return ResponseHandler.generateAuthenticationResult(this.cryptoObj, authority, cacheRecord, false, request, idTokenClaims, requestStateObj, serverTokenResponse, serverRequestId);\r\n }\r\n /**\r\n * Generates CacheRecord\r\n * @param serverTokenResponse\r\n * @param idTokenObj\r\n * @param authority\r\n */\r\n generateCacheRecord(serverTokenResponse, authority, reqTimestamp, request, idTokenClaims, userAssertionHash, authCodePayload) {\r\n const env = authority.getPreferredCache();\r\n if (!env) {\r\n throw createClientAuthError(invalidCacheEnvironment);\r\n }\r\n const claimsTenantId = getTenantIdFromIdTokenClaims(idTokenClaims);\r\n // IdToken: non AAD scenarios can have empty realm\r\n let cachedIdToken;\r\n let cachedAccount;\r\n if (serverTokenResponse.id_token && !!idTokenClaims) {\r\n cachedIdToken = createIdTokenEntity(this.homeAccountIdentifier, env, serverTokenResponse.id_token, this.clientId, claimsTenantId || \"\");\r\n cachedAccount = buildAccountToCache(this.cacheStorage, authority, this.homeAccountIdentifier, this.cryptoObj.base64Decode, request.correlationId, idTokenClaims, serverTokenResponse.client_info, env, claimsTenantId, authCodePayload, undefined, // nativeAccountId\r\n this.logger);\r\n }\r\n // AccessToken\r\n let cachedAccessToken = null;\r\n if (serverTokenResponse.access_token) {\r\n // If scopes not returned in server response, use request scopes\r\n const responseScopes = serverTokenResponse.scope\r\n ? ScopeSet.fromString(serverTokenResponse.scope)\r\n : new ScopeSet(request.scopes || []);\r\n /*\r\n * Use timestamp calculated before request\r\n * Server may return timestamps as strings, parse to numbers if so.\r\n */\r\n const expiresIn = (typeof serverTokenResponse.expires_in === \"string\"\r\n ? parseInt(serverTokenResponse.expires_in, 10)\r\n : serverTokenResponse.expires_in) || 0;\r\n const extExpiresIn = (typeof serverTokenResponse.ext_expires_in === \"string\"\r\n ? parseInt(serverTokenResponse.ext_expires_in, 10)\r\n : serverTokenResponse.ext_expires_in) || 0;\r\n const refreshIn = (typeof serverTokenResponse.refresh_in === \"string\"\r\n ? parseInt(serverTokenResponse.refresh_in, 10)\r\n : serverTokenResponse.refresh_in) || undefined;\r\n const tokenExpirationSeconds = reqTimestamp + expiresIn;\r\n const extendedTokenExpirationSeconds = tokenExpirationSeconds + extExpiresIn;\r\n const refreshOnSeconds = refreshIn && refreshIn > 0\r\n ? reqTimestamp + refreshIn\r\n : undefined;\r\n // non AAD scenarios can have empty realm\r\n cachedAccessToken = createAccessTokenEntity(this.homeAccountIdentifier, env, serverTokenResponse.access_token, this.clientId, claimsTenantId || authority.tenant || \"\", responseScopes.printScopes(), tokenExpirationSeconds, extendedTokenExpirationSeconds, this.cryptoObj.base64Decode, refreshOnSeconds, serverTokenResponse.token_type, userAssertionHash, serverTokenResponse.key_id, request.claims, request.requestedClaimsHash);\r\n }\r\n // refreshToken\r\n let cachedRefreshToken = null;\r\n if (serverTokenResponse.refresh_token) {\r\n let rtExpiresOn;\r\n if (serverTokenResponse.refresh_token_expires_in) {\r\n const rtExpiresIn = typeof serverTokenResponse.refresh_token_expires_in ===\r\n \"string\"\r\n ? parseInt(serverTokenResponse.refresh_token_expires_in, 10)\r\n : serverTokenResponse.refresh_token_expires_in;\r\n rtExpiresOn = reqTimestamp + rtExpiresIn;\r\n }\r\n cachedRefreshToken = createRefreshTokenEntity(this.homeAccountIdentifier, env, serverTokenResponse.refresh_token, this.clientId, serverTokenResponse.foci, userAssertionHash, rtExpiresOn);\r\n }\r\n // appMetadata\r\n let cachedAppMetadata = null;\r\n if (serverTokenResponse.foci) {\r\n cachedAppMetadata = {\r\n clientId: this.clientId,\r\n environment: env,\r\n familyId: serverTokenResponse.foci,\r\n };\r\n }\r\n return {\r\n account: cachedAccount,\r\n idToken: cachedIdToken,\r\n accessToken: cachedAccessToken,\r\n refreshToken: cachedRefreshToken,\r\n appMetadata: cachedAppMetadata,\r\n };\r\n }\r\n /**\r\n * Creates an @AuthenticationResult from @CacheRecord , @IdToken , and a boolean that states whether or not the result is from cache.\r\n *\r\n * Optionally takes a state string that is set as-is in the response.\r\n *\r\n * @param cacheRecord\r\n * @param idTokenObj\r\n * @param fromTokenCache\r\n * @param stateString\r\n */\r\n static async generateAuthenticationResult(cryptoObj, authority, cacheRecord, fromTokenCache, request, idTokenClaims, requestState, serverTokenResponse, requestId) {\r\n let accessToken = Constants$1.EMPTY_STRING;\r\n let responseScopes = [];\r\n let expiresOn = null;\r\n let extExpiresOn;\r\n let refreshOn;\r\n let familyId = Constants$1.EMPTY_STRING;\r\n if (cacheRecord.accessToken) {\r\n /*\r\n * if the request object has `popKid` property, `signPopToken` will be set to false and\r\n * the token will be returned unsigned\r\n */\r\n if (cacheRecord.accessToken.tokenType ===\r\n AuthenticationScheme.POP &&\r\n !request.popKid) {\r\n const popTokenGenerator = new PopTokenGenerator(cryptoObj);\r\n const { secret, keyId } = cacheRecord.accessToken;\r\n if (!keyId) {\r\n throw createClientAuthError(keyIdMissing);\r\n }\r\n accessToken = await popTokenGenerator.signPopToken(secret, keyId, request);\r\n }\r\n else {\r\n accessToken = cacheRecord.accessToken.secret;\r\n }\r\n responseScopes = ScopeSet.fromString(cacheRecord.accessToken.target).asArray();\r\n // Access token expiresOn cached in seconds, converting to Date for AuthenticationResult\r\n expiresOn = toDateFromSeconds(cacheRecord.accessToken.expiresOn);\r\n extExpiresOn = toDateFromSeconds(cacheRecord.accessToken.extendedExpiresOn);\r\n if (cacheRecord.accessToken.refreshOn) {\r\n refreshOn = toDateFromSeconds(cacheRecord.accessToken.refreshOn);\r\n }\r\n }\r\n if (cacheRecord.appMetadata) {\r\n familyId =\r\n cacheRecord.appMetadata.familyId === THE_FAMILY_ID\r\n ? THE_FAMILY_ID\r\n : \"\";\r\n }\r\n const uid = idTokenClaims?.oid || idTokenClaims?.sub || \"\";\r\n const tid = idTokenClaims?.tid || \"\";\r\n // for hybrid + native bridge enablement, send back the native account Id\r\n if (serverTokenResponse?.spa_accountid && !!cacheRecord.account) {\r\n cacheRecord.account.nativeAccountId =\r\n serverTokenResponse?.spa_accountid;\r\n }\r\n const accountInfo = cacheRecord.account\r\n ? updateAccountTenantProfileData(AccountEntity.getAccountInfo(cacheRecord.account), undefined, // tenantProfile optional\r\n idTokenClaims, cacheRecord.idToken?.secret)\r\n : null;\r\n return {\r\n authority: authority.canonicalAuthority,\r\n uniqueId: uid,\r\n tenantId: tid,\r\n scopes: responseScopes,\r\n account: accountInfo,\r\n idToken: cacheRecord?.idToken?.secret || \"\",\r\n idTokenClaims: idTokenClaims || {},\r\n accessToken: accessToken,\r\n fromCache: fromTokenCache,\r\n expiresOn: expiresOn,\r\n extExpiresOn: extExpiresOn,\r\n refreshOn: refreshOn,\r\n correlationId: request.correlationId,\r\n requestId: requestId || Constants$1.EMPTY_STRING,\r\n familyId: familyId,\r\n tokenType: cacheRecord.accessToken?.tokenType || Constants$1.EMPTY_STRING,\r\n state: requestState\r\n ? requestState.userRequestState\r\n : Constants$1.EMPTY_STRING,\r\n cloudGraphHostName: cacheRecord.account?.cloudGraphHostName ||\r\n Constants$1.EMPTY_STRING,\r\n msGraphHost: cacheRecord.account?.msGraphHost || Constants$1.EMPTY_STRING,\r\n code: serverTokenResponse?.spa_code,\r\n fromNativeBroker: false,\r\n };\r\n }\r\n}\r\nfunction buildAccountToCache(cacheStorage, authority, homeAccountId, base64Decode, correlationId, idTokenClaims, clientInfo, environment, claimsTenantId, authCodePayload, nativeAccountId, logger) {\r\n logger?.verbose(\"setCachedAccount called\");\r\n // Check if base account is already cached\r\n const accountKeys = cacheStorage.getAccountKeys();\r\n const baseAccountKey = accountKeys.find((accountKey) => {\r\n return accountKey.startsWith(homeAccountId);\r\n });\r\n let cachedAccount = null;\r\n if (baseAccountKey) {\r\n cachedAccount = cacheStorage.getAccount(baseAccountKey, correlationId);\r\n }\r\n const baseAccount = cachedAccount ||\r\n AccountEntity.createAccount({\r\n homeAccountId,\r\n idTokenClaims,\r\n clientInfo,\r\n environment,\r\n cloudGraphHostName: authCodePayload?.cloud_graph_host_name,\r\n msGraphHost: authCodePayload?.msgraph_host,\r\n nativeAccountId: nativeAccountId,\r\n }, authority, base64Decode);\r\n const tenantProfiles = baseAccount.tenantProfiles || [];\r\n const tenantId = claimsTenantId || baseAccount.realm;\r\n if (tenantId &&\r\n !tenantProfiles.find((tenantProfile) => {\r\n return tenantProfile.tenantId === tenantId;\r\n })) {\r\n const newTenantProfile = buildTenantProfile(homeAccountId, baseAccount.localAccountId, tenantId, idTokenClaims);\r\n tenantProfiles.push(newTenantProfile);\r\n }\r\n baseAccount.tenantProfiles = tenantProfiles;\r\n return baseAccount;\r\n}\n\n/*! @azure/msal-common v15.13.2 2025-11-19 */\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nasync function getClientAssertion(clientAssertion, clientId, tokenEndpoint) {\r\n if (typeof clientAssertion === \"string\") {\r\n return clientAssertion;\r\n }\r\n else {\r\n const config = {\r\n clientId: clientId,\r\n tokenEndpoint: tokenEndpoint,\r\n };\r\n return clientAssertion(config);\r\n }\r\n}\n\n/*! @azure/msal-common v15.13.2 2025-11-19 */\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * Oauth2.0 Authorization Code client\r\n * @internal\r\n */\r\nclass AuthorizationCodeClient extends BaseClient {\r\n constructor(configuration, performanceClient) {\r\n super(configuration, performanceClient);\r\n // Flag to indicate if client is for hybrid spa auth code redemption\r\n this.includeRedirectUri = true;\r\n this.oidcDefaultScopes =\r\n this.config.authOptions.authority.options.OIDCOptions?.defaultScopes;\r\n }\r\n /**\r\n * API to acquire a token in exchange of 'authorization_code` acquired by the user in the first leg of the\r\n * authorization_code_grant\r\n * @param request\r\n */\r\n async acquireToken(request, authCodePayload) {\r\n this.performanceClient?.addQueueMeasurement(PerformanceEvents.AuthClientAcquireToken, request.correlationId);\r\n if (!request.code) {\r\n throw createClientAuthError(requestCannotBeMade);\r\n }\r\n const reqTimestamp = nowSeconds();\r\n const response = await invokeAsync(this.executeTokenRequest.bind(this), PerformanceEvents.AuthClientExecuteTokenRequest, this.logger, this.performanceClient, request.correlationId)(this.authority, request);\r\n // Retrieve requestId from response headers\r\n const requestId = response.headers?.[HeaderNames.X_MS_REQUEST_ID];\r\n const responseHandler = new ResponseHandler(this.config.authOptions.clientId, this.cacheManager, this.cryptoUtils, this.logger, this.config.serializableCache, this.config.persistencePlugin, this.performanceClient);\r\n // Validate response. This function throws a server error if an error is returned by the server.\r\n responseHandler.validateTokenResponse(response.body);\r\n return invokeAsync(responseHandler.handleServerTokenResponse.bind(responseHandler), PerformanceEvents.HandleServerTokenResponse, this.logger, this.performanceClient, request.correlationId)(response.body, this.authority, reqTimestamp, request, authCodePayload, undefined, undefined, undefined, requestId);\r\n }\r\n /**\r\n * Used to log out the current user, and redirect the user to the postLogoutRedirectUri.\r\n * Default behaviour is to redirect the user to `window.location.href`.\r\n * @param authorityUri\r\n */\r\n getLogoutUri(logoutRequest) {\r\n // Throw error if logoutRequest is null/undefined\r\n if (!logoutRequest) {\r\n throw createClientConfigurationError(logoutRequestEmpty);\r\n }\r\n const queryString = this.createLogoutUrlQueryString(logoutRequest);\r\n // Construct logout URI\r\n return UrlString.appendQueryString(this.authority.endSessionEndpoint, queryString);\r\n }\r\n /**\r\n * Executes POST request to token endpoint\r\n * @param authority\r\n * @param request\r\n */\r\n async executeTokenRequest(authority, request) {\r\n this.performanceClient?.addQueueMeasurement(PerformanceEvents.AuthClientExecuteTokenRequest, request.correlationId);\r\n const queryParametersString = this.createTokenQueryParameters(request);\r\n const endpoint = UrlString.appendQueryString(authority.tokenEndpoint, queryParametersString);\r\n const requestBody = await invokeAsync(this.createTokenRequestBody.bind(this), PerformanceEvents.AuthClientCreateTokenRequestBody, this.logger, this.performanceClient, request.correlationId)(request);\r\n let ccsCredential = undefined;\r\n if (request.clientInfo) {\r\n try {\r\n const clientInfo = buildClientInfo(request.clientInfo, this.cryptoUtils.base64Decode);\r\n ccsCredential = {\r\n credential: `${clientInfo.uid}${Separators.CLIENT_INFO_SEPARATOR}${clientInfo.utid}`,\r\n type: CcsCredentialType.HOME_ACCOUNT_ID,\r\n };\r\n }\r\n catch (e) {\r\n this.logger.verbose(\"Could not parse client info for CCS Header: \" + e);\r\n }\r\n }\r\n const headers = this.createTokenRequestHeaders(ccsCredential || request.ccsCredential);\r\n const thumbprint = getRequestThumbprint(this.config.authOptions.clientId, request);\r\n return invokeAsync(this.executePostToTokenEndpoint.bind(this), PerformanceEvents.AuthorizationCodeClientExecutePostToTokenEndpoint, this.logger, this.performanceClient, request.correlationId)(endpoint, requestBody, headers, thumbprint, request.correlationId, PerformanceEvents.AuthorizationCodeClientExecutePostToTokenEndpoint);\r\n }\r\n /**\r\n * Generates a map for all the params to be sent to the service\r\n * @param request\r\n */\r\n async createTokenRequestBody(request) {\r\n this.performanceClient?.addQueueMeasurement(PerformanceEvents.AuthClientCreateTokenRequestBody, request.correlationId);\r\n const parameters = new Map();\r\n addClientId(parameters, request.embeddedClientId ||\r\n request.tokenBodyParameters?.[CLIENT_ID] ||\r\n this.config.authOptions.clientId);\r\n /*\r\n * For hybrid spa flow, there will be a code but no verifier\r\n * In this scenario, don't include redirect uri as auth code will not be bound to redirect URI\r\n */\r\n if (!this.includeRedirectUri) {\r\n // Just validate\r\n if (!request.redirectUri) {\r\n throw createClientConfigurationError(redirectUriEmpty);\r\n }\r\n }\r\n else {\r\n // Validate and include redirect uri\r\n addRedirectUri(parameters, request.redirectUri);\r\n }\r\n // Add scope array, parameter builder will add default scopes and dedupe\r\n addScopes(parameters, request.scopes, true, this.oidcDefaultScopes);\r\n // add code: user set, not validated\r\n addAuthorizationCode(parameters, request.code);\r\n // Add library metadata\r\n addLibraryInfo(parameters, this.config.libraryInfo);\r\n addApplicationTelemetry(parameters, this.config.telemetry.application);\r\n addThrottling(parameters);\r\n if (this.serverTelemetryManager && !isOidcProtocolMode(this.config)) {\r\n addServerTelemetry(parameters, this.serverTelemetryManager);\r\n }\r\n // add code_verifier if passed\r\n if (request.codeVerifier) {\r\n addCodeVerifier(parameters, request.codeVerifier);\r\n }\r\n if (this.config.clientCredentials.clientSecret) {\r\n addClientSecret(parameters, this.config.clientCredentials.clientSecret);\r\n }\r\n if (this.config.clientCredentials.clientAssertion) {\r\n const clientAssertion = this.config.clientCredentials.clientAssertion;\r\n addClientAssertion(parameters, await getClientAssertion(clientAssertion.assertion, this.config.authOptions.clientId, request.resourceRequestUri));\r\n addClientAssertionType(parameters, clientAssertion.assertionType);\r\n }\r\n addGrantType(parameters, GrantType.AUTHORIZATION_CODE_GRANT);\r\n addClientInfo(parameters);\r\n if (request.authenticationScheme === AuthenticationScheme.POP) {\r\n const popTokenGenerator = new PopTokenGenerator(this.cryptoUtils, this.performanceClient);\r\n let reqCnfData;\r\n if (!request.popKid) {\r\n const generatedReqCnfData = await invokeAsync(popTokenGenerator.generateCnf.bind(popTokenGenerator), PerformanceEvents.PopTokenGenerateCnf, this.logger, this.performanceClient, request.correlationId)(request, this.logger);\r\n reqCnfData = generatedReqCnfData.reqCnfString;\r\n }\r\n else {\r\n reqCnfData = this.cryptoUtils.encodeKid(request.popKid);\r\n }\r\n // SPA PoP requires full Base64Url encoded req_cnf string (unhashed)\r\n addPopToken(parameters, reqCnfData);\r\n }\r\n else if (request.authenticationScheme === AuthenticationScheme.SSH) {\r\n if (request.sshJwk) {\r\n addSshJwk(parameters, request.sshJwk);\r\n }\r\n else {\r\n throw createClientConfigurationError(missingSshJwk);\r\n }\r\n }\r\n if (!StringUtils.isEmptyObj(request.claims) ||\r\n (this.config.authOptions.clientCapabilities &&\r\n this.config.authOptions.clientCapabilities.length > 0)) {\r\n addClaims(parameters, request.claims, this.config.authOptions.clientCapabilities);\r\n }\r\n let ccsCred = undefined;\r\n if (request.clientInfo) {\r\n try {\r\n const clientInfo = buildClientInfo(request.clientInfo, this.cryptoUtils.base64Decode);\r\n ccsCred = {\r\n credential: `${clientInfo.uid}${Separators.CLIENT_INFO_SEPARATOR}${clientInfo.utid}`,\r\n type: CcsCredentialType.HOME_ACCOUNT_ID,\r\n };\r\n }\r\n catch (e) {\r\n this.logger.verbose(\"Could not parse client info for CCS Header: \" + e);\r\n }\r\n }\r\n else {\r\n ccsCred = request.ccsCredential;\r\n }\r\n // Adds these as parameters in the request instead of headers to prevent CORS preflight request\r\n if (this.config.systemOptions.preventCorsPreflight && ccsCred) {\r\n switch (ccsCred.type) {\r\n case CcsCredentialType.HOME_ACCOUNT_ID:\r\n try {\r\n const clientInfo = buildClientInfoFromHomeAccountId(ccsCred.credential);\r\n addCcsOid(parameters, clientInfo);\r\n }\r\n catch (e) {\r\n this.logger.verbose(\"Could not parse home account ID for CCS Header: \" +\r\n e);\r\n }\r\n break;\r\n case CcsCredentialType.UPN:\r\n addCcsUpn(parameters, ccsCred.credential);\r\n break;\r\n }\r\n }\r\n if (request.embeddedClientId) {\r\n addBrokerParameters(parameters, this.config.authOptions.clientId, this.config.authOptions.redirectUri);\r\n }\r\n if (request.tokenBodyParameters) {\r\n addExtraQueryParameters(parameters, request.tokenBodyParameters);\r\n }\r\n // Add hybrid spa parameters if not already provided\r\n if (request.enableSpaAuthorizationCode &&\r\n (!request.tokenBodyParameters ||\r\n !request.tokenBodyParameters[RETURN_SPA_CODE])) {\r\n addExtraQueryParameters(parameters, {\r\n [RETURN_SPA_CODE]: \"1\",\r\n });\r\n }\r\n instrumentBrokerParams(parameters, request.correlationId, this.performanceClient);\r\n return mapToQueryString(parameters);\r\n }\r\n /**\r\n * This API validates the `EndSessionRequest` and creates a URL\r\n * @param request\r\n */\r\n createLogoutUrlQueryString(request) {\r\n const parameters = new Map();\r\n if (request.postLogoutRedirectUri) {\r\n addPostLogoutRedirectUri(parameters, request.postLogoutRedirectUri);\r\n }\r\n if (request.correlationId) {\r\n addCorrelationId(parameters, request.correlationId);\r\n }\r\n if (request.idTokenHint) {\r\n addIdTokenHint(parameters, request.idTokenHint);\r\n }\r\n if (request.state) {\r\n addState(parameters, request.state);\r\n }\r\n if (request.logoutHint) {\r\n addLogoutHint(parameters, request.logoutHint);\r\n }\r\n if (request.extraQueryParameters) {\r\n addExtraQueryParameters(parameters, request.extraQueryParameters);\r\n }\r\n if (this.config.authOptions.instanceAware) {\r\n addInstanceAware(parameters);\r\n }\r\n return mapToQueryString(parameters, this.config.authOptions.encodeExtraQueryParams, request.extraQueryParameters);\r\n }\r\n}\n\n/*! @azure/msal-common v15.13.2 2025-11-19 */\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nconst DEFAULT_REFRESH_TOKEN_EXPIRATION_OFFSET_SECONDS = 300; // 5 Minutes\r\n/**\r\n * OAuth2.0 refresh token client\r\n * @internal\r\n */\r\nclass RefreshTokenClient extends BaseClient {\r\n constructor(configuration, performanceClient) {\r\n super(configuration, performanceClient);\r\n }\r\n async acquireToken(request) {\r\n this.performanceClient?.addQueueMeasurement(PerformanceEvents.RefreshTokenClientAcquireToken, request.correlationId);\r\n const reqTimestamp = nowSeconds();\r\n const response = await invokeAsync(this.executeTokenRequest.bind(this), PerformanceEvents.RefreshTokenClientExecuteTokenRequest, this.logger, this.performanceClient, request.correlationId)(request, this.authority);\r\n // Retrieve requestId from response headers\r\n const requestId = response.headers?.[HeaderNames.X_MS_REQUEST_ID];\r\n const responseHandler = new ResponseHandler(this.config.authOptions.clientId, this.cacheManager, this.cryptoUtils, this.logger, this.config.serializableCache, this.config.persistencePlugin);\r\n responseHandler.validateTokenResponse(response.body);\r\n return invokeAsync(responseHandler.handleServerTokenResponse.bind(responseHandler), PerformanceEvents.HandleServerTokenResponse, this.logger, this.performanceClient, request.correlationId)(response.body, this.authority, reqTimestamp, request, undefined, undefined, true, request.forceCache, requestId);\r\n }\r\n /**\r\n * Gets cached refresh token and attaches to request, then calls acquireToken API\r\n * @param request\r\n */\r\n async acquireTokenByRefreshToken(request) {\r\n // Cannot renew token if no request object is given.\r\n if (!request) {\r\n throw createClientConfigurationError(tokenRequestEmpty);\r\n }\r\n this.performanceClient?.addQueueMeasurement(PerformanceEvents.RefreshTokenClientAcquireTokenByRefreshToken, request.correlationId);\r\n // We currently do not support silent flow for account === null use cases; This will be revisited for confidential flow usecases\r\n if (!request.account) {\r\n throw createClientAuthError(noAccountInSilentRequest);\r\n }\r\n // try checking if FOCI is enabled for the given application\r\n const isFOCI = this.cacheManager.isAppMetadataFOCI(request.account.environment);\r\n // if the app is part of the family, retrive a Family refresh token if present and make a refreshTokenRequest\r\n if (isFOCI) {\r\n try {\r\n return await invokeAsync(this.acquireTokenWithCachedRefreshToken.bind(this), PerformanceEvents.RefreshTokenClientAcquireTokenWithCachedRefreshToken, this.logger, this.performanceClient, request.correlationId)(request, true);\r\n }\r\n catch (e) {\r\n const noFamilyRTInCache = e instanceof InteractionRequiredAuthError &&\r\n e.errorCode ===\r\n noTokensFound;\r\n const clientMismatchErrorWithFamilyRT = e instanceof ServerError &&\r\n e.errorCode === Errors.INVALID_GRANT_ERROR &&\r\n e.subError === Errors.CLIENT_MISMATCH_ERROR;\r\n // if family Refresh Token (FRT) cache acquisition fails or if client_mismatch error is seen with FRT, reattempt with application Refresh Token (ART)\r\n if (noFamilyRTInCache || clientMismatchErrorWithFamilyRT) {\r\n return invokeAsync(this.acquireTokenWithCachedRefreshToken.bind(this), PerformanceEvents.RefreshTokenClientAcquireTokenWithCachedRefreshToken, this.logger, this.performanceClient, request.correlationId)(request, false);\r\n // throw in all other cases\r\n }\r\n else {\r\n throw e;\r\n }\r\n }\r\n }\r\n // fall back to application refresh token acquisition\r\n return invokeAsync(this.acquireTokenWithCachedRefreshToken.bind(this), PerformanceEvents.RefreshTokenClientAcquireTokenWithCachedRefreshToken, this.logger, this.performanceClient, request.correlationId)(request, false);\r\n }\r\n /**\r\n * makes a network call to acquire tokens by exchanging RefreshToken available in userCache; throws if refresh token is not cached\r\n * @param request\r\n */\r\n async acquireTokenWithCachedRefreshToken(request, foci) {\r\n this.performanceClient?.addQueueMeasurement(PerformanceEvents.RefreshTokenClientAcquireTokenWithCachedRefreshToken, request.correlationId);\r\n // fetches family RT or application RT based on FOCI value\r\n const refreshToken = invoke(this.cacheManager.getRefreshToken.bind(this.cacheManager), PerformanceEvents.CacheManagerGetRefreshToken, this.logger, this.performanceClient, request.correlationId)(request.account, foci, request.correlationId, undefined, this.performanceClient);\r\n if (!refreshToken) {\r\n throw createInteractionRequiredAuthError(noTokensFound);\r\n }\r\n if (refreshToken.expiresOn &&\r\n isTokenExpired(refreshToken.expiresOn, request.refreshTokenExpirationOffsetSeconds ||\r\n DEFAULT_REFRESH_TOKEN_EXPIRATION_OFFSET_SECONDS)) {\r\n this.performanceClient?.addFields({ rtExpiresOnMs: Number(refreshToken.expiresOn) }, request.correlationId);\r\n throw createInteractionRequiredAuthError(refreshTokenExpired);\r\n }\r\n // attach cached RT size to the current measurement\r\n const refreshTokenRequest = {\r\n ...request,\r\n refreshToken: refreshToken.secret,\r\n authenticationScheme: request.authenticationScheme || AuthenticationScheme.BEARER,\r\n ccsCredential: {\r\n credential: request.account.homeAccountId,\r\n type: CcsCredentialType.HOME_ACCOUNT_ID,\r\n },\r\n };\r\n try {\r\n return await invokeAsync(this.acquireToken.bind(this), PerformanceEvents.RefreshTokenClientAcquireToken, this.logger, this.performanceClient, request.correlationId)(refreshTokenRequest);\r\n }\r\n catch (e) {\r\n if (e instanceof InteractionRequiredAuthError) {\r\n this.performanceClient?.addFields({ rtExpiresOnMs: Number(refreshToken.expiresOn) }, request.correlationId);\r\n if (e.subError === badToken) {\r\n // Remove bad refresh token from cache\r\n this.logger.verbose(\"acquireTokenWithRefreshToken: bad refresh token, removing from cache\");\r\n const badRefreshTokenKey = this.cacheManager.generateCredentialKey(refreshToken);\r\n this.cacheManager.removeRefreshToken(badRefreshTokenKey, request.correlationId);\r\n }\r\n }\r\n throw e;\r\n }\r\n }\r\n /**\r\n * Constructs the network message and makes a NW call to the underlying secure token service\r\n * @param request\r\n * @param authority\r\n */\r\n async executeTokenRequest(request, authority) {\r\n this.performanceClient?.addQueueMeasurement(PerformanceEvents.RefreshTokenClientExecuteTokenRequest, request.correlationId);\r\n const queryParametersString = this.createTokenQueryParameters(request);\r\n const endpoint = UrlString.appendQueryString(authority.tokenEndpoint, queryParametersString);\r\n const requestBody = await invokeAsync(this.createTokenRequestBody.bind(this), PerformanceEvents.RefreshTokenClientCreateTokenRequestBody, this.logger, this.performanceClient, request.correlationId)(request);\r\n const headers = this.createTokenRequestHeaders(request.ccsCredential);\r\n const thumbprint = getRequestThumbprint(this.config.authOptions.clientId, request);\r\n return invokeAsync(this.executePostToTokenEndpoint.bind(this), PerformanceEvents.RefreshTokenClientExecutePostToTokenEndpoint, this.logger, this.performanceClient, request.correlationId)(endpoint, requestBody, headers, thumbprint, request.correlationId, PerformanceEvents.RefreshTokenClientExecutePostToTokenEndpoint);\r\n }\r\n /**\r\n * Helper function to create the token request body\r\n * @param request\r\n */\r\n async createTokenRequestBody(request) {\r\n this.performanceClient?.addQueueMeasurement(PerformanceEvents.RefreshTokenClientCreateTokenRequestBody, request.correlationId);\r\n const parameters = new Map();\r\n addClientId(parameters, request.embeddedClientId ||\r\n request.tokenBodyParameters?.[CLIENT_ID] ||\r\n this.config.authOptions.clientId);\r\n if (request.redirectUri) {\r\n addRedirectUri(parameters, request.redirectUri);\r\n }\r\n addScopes(parameters, request.scopes, true, this.config.authOptions.authority.options.OIDCOptions?.defaultScopes);\r\n addGrantType(parameters, GrantType.REFRESH_TOKEN_GRANT);\r\n addClientInfo(parameters);\r\n addLibraryInfo(parameters, this.config.libraryInfo);\r\n addApplicationTelemetry(parameters, this.config.telemetry.application);\r\n addThrottling(parameters);\r\n if (this.serverTelemetryManager && !isOidcProtocolMode(this.config)) {\r\n addServerTelemetry(parameters, this.serverTelemetryManager);\r\n }\r\n addRefreshToken(parameters, request.refreshToken);\r\n if (this.config.clientCredentials.clientSecret) {\r\n addClientSecret(parameters, this.config.clientCredentials.clientSecret);\r\n }\r\n if (this.config.clientCredentials.clientAssertion) {\r\n const clientAssertion = this.config.clientCredentials.clientAssertion;\r\n addClientAssertion(parameters, await getClientAssertion(clientAssertion.assertion, this.config.authOptions.clientId, request.resourceRequestUri));\r\n addClientAssertionType(parameters, clientAssertion.assertionType);\r\n }\r\n if (request.authenticationScheme === AuthenticationScheme.POP) {\r\n const popTokenGenerator = new PopTokenGenerator(this.cryptoUtils, this.performanceClient);\r\n let reqCnfData;\r\n if (!request.popKid) {\r\n const generatedReqCnfData = await invokeAsync(popTokenGenerator.generateCnf.bind(popTokenGenerator), PerformanceEvents.PopTokenGenerateCnf, this.logger, this.performanceClient, request.correlationId)(request, this.logger);\r\n reqCnfData = generatedReqCnfData.reqCnfString;\r\n }\r\n else {\r\n reqCnfData = this.cryptoUtils.encodeKid(request.popKid);\r\n }\r\n // SPA PoP requires full Base64Url encoded req_cnf string (unhashed)\r\n addPopToken(parameters, reqCnfData);\r\n }\r\n else if (request.authenticationScheme === AuthenticationScheme.SSH) {\r\n if (request.sshJwk) {\r\n addSshJwk(parameters, request.sshJwk);\r\n }\r\n else {\r\n throw createClientConfigurationError(missingSshJwk);\r\n }\r\n }\r\n if (!StringUtils.isEmptyObj(request.claims) ||\r\n (this.config.authOptions.clientCapabilities &&\r\n this.config.authOptions.clientCapabilities.length > 0)) {\r\n addClaims(parameters, request.claims, this.config.authOptions.clientCapabilities);\r\n }\r\n if (this.config.systemOptions.preventCorsPreflight &&\r\n request.ccsCredential) {\r\n switch (request.ccsCredential.type) {\r\n case CcsCredentialType.HOME_ACCOUNT_ID:\r\n try {\r\n const clientInfo = buildClientInfoFromHomeAccountId(request.ccsCredential.credential);\r\n addCcsOid(parameters, clientInfo);\r\n }\r\n catch (e) {\r\n this.logger.verbose(\"Could not parse home account ID for CCS Header: \" +\r\n e);\r\n }\r\n break;\r\n case CcsCredentialType.UPN:\r\n addCcsUpn(parameters, request.ccsCredential.credential);\r\n break;\r\n }\r\n }\r\n if (request.embeddedClientId) {\r\n addBrokerParameters(parameters, this.config.authOptions.clientId, this.config.authOptions.redirectUri);\r\n }\r\n if (request.tokenBodyParameters) {\r\n addExtraQueryParameters(parameters, request.tokenBodyParameters);\r\n }\r\n instrumentBrokerParams(parameters, request.correlationId, this.performanceClient);\r\n return mapToQueryString(parameters);\r\n }\r\n}\n\n/*! @azure/msal-common v15.13.2 2025-11-19 */\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/** @internal */\r\nclass SilentFlowClient extends BaseClient {\r\n constructor(configuration, performanceClient) {\r\n super(configuration, performanceClient);\r\n }\r\n /**\r\n * Retrieves token from cache or throws an error if it must be refreshed.\r\n * @param request\r\n */\r\n async acquireCachedToken(request) {\r\n this.performanceClient?.addQueueMeasurement(PerformanceEvents.SilentFlowClientAcquireCachedToken, request.correlationId);\r\n let lastCacheOutcome = CacheOutcome.NOT_APPLICABLE;\r\n if (request.forceRefresh ||\r\n (!this.config.cacheOptions.claimsBasedCachingEnabled &&\r\n !StringUtils.isEmptyObj(request.claims))) {\r\n // Must refresh due to present force_refresh flag.\r\n this.setCacheOutcome(CacheOutcome.FORCE_REFRESH_OR_CLAIMS, request.correlationId);\r\n throw createClientAuthError(tokenRefreshRequired);\r\n }\r\n // We currently do not support silent flow for account === null use cases; This will be revisited for confidential flow usecases\r\n if (!request.account) {\r\n throw createClientAuthError(noAccountInSilentRequest);\r\n }\r\n const requestTenantId = request.account.tenantId ||\r\n getTenantFromAuthorityString(request.authority);\r\n const tokenKeys = this.cacheManager.getTokenKeys();\r\n const cachedAccessToken = this.cacheManager.getAccessToken(request.account, request, tokenKeys, requestTenantId);\r\n if (!cachedAccessToken) {\r\n // must refresh due to non-existent access_token\r\n this.setCacheOutcome(CacheOutcome.NO_CACHED_ACCESS_TOKEN, request.correlationId);\r\n throw createClientAuthError(tokenRefreshRequired);\r\n }\r\n else if (wasClockTurnedBack(cachedAccessToken.cachedAt) ||\r\n isTokenExpired(cachedAccessToken.expiresOn, this.config.systemOptions.tokenRenewalOffsetSeconds)) {\r\n // must refresh due to the expires_in value\r\n this.setCacheOutcome(CacheOutcome.CACHED_ACCESS_TOKEN_EXPIRED, request.correlationId);\r\n throw createClientAuthError(tokenRefreshRequired);\r\n }\r\n else if (cachedAccessToken.refreshOn &&\r\n isTokenExpired(cachedAccessToken.refreshOn, 0)) {\r\n // must refresh (in the background) due to the refresh_in value\r\n lastCacheOutcome = CacheOutcome.PROACTIVELY_REFRESHED;\r\n // don't throw ClientAuthError.createRefreshRequiredError(), return cached token instead\r\n }\r\n const environment = request.authority || this.authority.getPreferredCache();\r\n const cacheRecord = {\r\n account: this.cacheManager.getAccount(this.cacheManager.generateAccountKey(request.account), request.correlationId),\r\n accessToken: cachedAccessToken,\r\n idToken: this.cacheManager.getIdToken(request.account, request.correlationId, tokenKeys, requestTenantId, this.performanceClient),\r\n refreshToken: null,\r\n appMetadata: this.cacheManager.readAppMetadataFromCache(environment),\r\n };\r\n this.setCacheOutcome(lastCacheOutcome, request.correlationId);\r\n if (this.config.serverTelemetryManager) {\r\n this.config.serverTelemetryManager.incrementCacheHits();\r\n }\r\n return [\r\n await invokeAsync(this.generateResultFromCacheRecord.bind(this), PerformanceEvents.SilentFlowClientGenerateResultFromCacheRecord, this.logger, this.performanceClient, request.correlationId)(cacheRecord, request),\r\n lastCacheOutcome,\r\n ];\r\n }\r\n setCacheOutcome(cacheOutcome, correlationId) {\r\n this.serverTelemetryManager?.setCacheOutcome(cacheOutcome);\r\n this.performanceClient?.addFields({\r\n cacheOutcome: cacheOutcome,\r\n }, correlationId);\r\n if (cacheOutcome !== CacheOutcome.NOT_APPLICABLE) {\r\n this.logger.info(`Token refresh is required due to cache outcome: ${cacheOutcome}`);\r\n }\r\n }\r\n /**\r\n * Helper function to build response object from the CacheRecord\r\n * @param cacheRecord\r\n */\r\n async generateResultFromCacheRecord(cacheRecord, request) {\r\n this.performanceClient?.addQueueMeasurement(PerformanceEvents.SilentFlowClientGenerateResultFromCacheRecord, request.correlationId);\r\n let idTokenClaims;\r\n if (cacheRecord.idToken) {\r\n idTokenClaims = extractTokenClaims(cacheRecord.idToken.secret, this.config.cryptoInterface.base64Decode);\r\n }\r\n // token max_age check\r\n if (request.maxAge || request.maxAge === 0) {\r\n const authTime = idTokenClaims?.auth_time;\r\n if (!authTime) {\r\n throw createClientAuthError(authTimeNotFound);\r\n }\r\n checkMaxAge(authTime, request.maxAge);\r\n }\r\n return ResponseHandler.generateAuthenticationResult(this.cryptoUtils, this.authority, cacheRecord, true, request, idTokenClaims);\r\n }\r\n}\n\n/*! @azure/msal-common v15.13.2 2025-11-19 */\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * Returns map of parameters that are applicable to all calls to /authorize whether using PKCE or EAR\r\n * @param config\r\n * @param request\r\n * @param logger\r\n * @param performanceClient\r\n * @returns\r\n */\r\nfunction getStandardAuthorizeRequestParameters(authOptions, request, logger, performanceClient) {\r\n // generate the correlationId if not set by the user and add\r\n const correlationId = request.correlationId;\r\n const parameters = new Map();\r\n addClientId(parameters, request.embeddedClientId ||\r\n request.extraQueryParameters?.[CLIENT_ID] ||\r\n authOptions.clientId);\r\n const requestScopes = [\r\n ...(request.scopes || []),\r\n ...(request.extraScopesToConsent || []),\r\n ];\r\n addScopes(parameters, requestScopes, true, authOptions.authority.options.OIDCOptions?.defaultScopes);\r\n addRedirectUri(parameters, request.redirectUri);\r\n addCorrelationId(parameters, correlationId);\r\n // add response_mode. If not passed in it defaults to query.\r\n addResponseMode(parameters, request.responseMode);\r\n // add client_info=1\r\n addClientInfo(parameters);\r\n if (request.prompt) {\r\n addPrompt(parameters, request.prompt);\r\n }\r\n if (request.domainHint) {\r\n addDomainHint(parameters, request.domainHint);\r\n }\r\n // Add sid or loginHint with preference for login_hint claim (in request) -> sid -> loginHint (upn/email) -> username of AccountInfo object\r\n if (request.prompt !== PromptValue.SELECT_ACCOUNT) {\r\n // AAD will throw if prompt=select_account is passed with an account hint\r\n if (request.sid && request.prompt === PromptValue.NONE) {\r\n // SessionID is only used in silent calls\r\n logger.verbose(\"createAuthCodeUrlQueryString: Prompt is none, adding sid from request\");\r\n addSid(parameters, request.sid);\r\n }\r\n else if (request.account) {\r\n const accountSid = extractAccountSid(request.account);\r\n let accountLoginHintClaim = extractLoginHint(request.account);\r\n if (accountLoginHintClaim && request.domainHint) {\r\n logger.warning(`AuthorizationCodeClient.createAuthCodeUrlQueryString: \"domainHint\" param is set, skipping opaque \"login_hint\" claim. Please consider not passing domainHint`);\r\n accountLoginHintClaim = null;\r\n }\r\n // If login_hint claim is present, use it over sid/username\r\n if (accountLoginHintClaim) {\r\n logger.verbose(\"createAuthCodeUrlQueryString: login_hint claim present on account\");\r\n addLoginHint(parameters, accountLoginHintClaim);\r\n try {\r\n const clientInfo = buildClientInfoFromHomeAccountId(request.account.homeAccountId);\r\n addCcsOid(parameters, clientInfo);\r\n }\r\n catch (e) {\r\n logger.verbose(\"createAuthCodeUrlQueryString: Could not parse home account ID for CCS Header\");\r\n }\r\n }\r\n else if (accountSid && request.prompt === PromptValue.NONE) {\r\n /*\r\n * If account and loginHint are provided, we will check account first for sid before adding loginHint\r\n * SessionId is only used in silent calls\r\n */\r\n logger.verbose(\"createAuthCodeUrlQueryString: Prompt is none, adding sid from account\");\r\n addSid(parameters, accountSid);\r\n try {\r\n const clientInfo = buildClientInfoFromHomeAccountId(request.account.homeAccountId);\r\n addCcsOid(parameters, clientInfo);\r\n }\r\n catch (e) {\r\n logger.verbose(\"createAuthCodeUrlQueryString: Could not parse home account ID for CCS Header\");\r\n }\r\n }\r\n else if (request.loginHint) {\r\n logger.verbose(\"createAuthCodeUrlQueryString: Adding login_hint from request\");\r\n addLoginHint(parameters, request.loginHint);\r\n addCcsUpn(parameters, request.loginHint);\r\n }\r\n else if (request.account.username) {\r\n // Fallback to account username if provided\r\n logger.verbose(\"createAuthCodeUrlQueryString: Adding login_hint from account\");\r\n addLoginHint(parameters, request.account.username);\r\n try {\r\n const clientInfo = buildClientInfoFromHomeAccountId(request.account.homeAccountId);\r\n addCcsOid(parameters, clientInfo);\r\n }\r\n catch (e) {\r\n logger.verbose(\"createAuthCodeUrlQueryString: Could not parse home account ID for CCS Header\");\r\n }\r\n }\r\n }\r\n else if (request.loginHint) {\r\n logger.verbose(\"createAuthCodeUrlQueryString: No account, adding login_hint from request\");\r\n addLoginHint(parameters, request.loginHint);\r\n addCcsUpn(parameters, request.loginHint);\r\n }\r\n }\r\n else {\r\n logger.verbose(\"createAuthCodeUrlQueryString: Prompt is select_account, ignoring account hints\");\r\n }\r\n if (request.nonce) {\r\n addNonce(parameters, request.nonce);\r\n }\r\n if (request.state) {\r\n addState(parameters, request.state);\r\n }\r\n if (request.claims ||\r\n (authOptions.clientCapabilities &&\r\n authOptions.clientCapabilities.length > 0)) {\r\n addClaims(parameters, request.claims, authOptions.clientCapabilities);\r\n }\r\n if (request.embeddedClientId) {\r\n addBrokerParameters(parameters, authOptions.clientId, authOptions.redirectUri);\r\n }\r\n // If extraQueryParameters includes instance_aware its value will be added when extraQueryParameters are added\r\n if (authOptions.instanceAware &&\r\n (!request.extraQueryParameters ||\r\n !Object.keys(request.extraQueryParameters).includes(INSTANCE_AWARE))) {\r\n addInstanceAware(parameters);\r\n }\r\n return parameters;\r\n}\r\n/**\r\n * Returns authorize endpoint with given request parameters in the query string\r\n * @param authority\r\n * @param requestParameters\r\n * @returns\r\n */\r\nfunction getAuthorizeUrl(authority, requestParameters, encodeParams, extraQueryParameters) {\r\n const queryString = mapToQueryString(requestParameters, encodeParams, extraQueryParameters);\r\n return UrlString.appendQueryString(authority.authorizationEndpoint, queryString);\r\n}\r\n/**\r\n * Helper to get sid from account. Returns null if idTokenClaims are not present or sid is not present.\r\n * @param account\r\n */\r\nfunction extractAccountSid(account) {\r\n return account.idTokenClaims?.sid || null;\r\n}\r\nfunction extractLoginHint(account) {\r\n return account.loginHint || account.idTokenClaims?.login_hint || null;\r\n}\n\n/*! @azure/msal-common v15.13.2 2025-11-19 */\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nconst skuGroupSeparator = \",\";\r\nconst skuValueSeparator = \"|\";\r\nfunction makeExtraSkuString(params) {\r\n const { skus, libraryName, libraryVersion, extensionName, extensionVersion, } = params;\r\n const skuMap = new Map([\r\n [0, [libraryName, libraryVersion]],\r\n [2, [extensionName, extensionVersion]],\r\n ]);\r\n let skuArr = [];\r\n if (skus?.length) {\r\n skuArr = skus.split(skuGroupSeparator);\r\n // Ignore invalid input sku param\r\n if (skuArr.length < 4) {\r\n return skus;\r\n }\r\n }\r\n else {\r\n skuArr = Array.from({ length: 4 }, () => skuValueSeparator);\r\n }\r\n skuMap.forEach((value, key) => {\r\n if (value.length === 2 && value[0]?.length && value[1]?.length) {\r\n setSku({\r\n skuArr,\r\n index: key,\r\n skuName: value[0],\r\n skuVersion: value[1],\r\n });\r\n }\r\n });\r\n return skuArr.join(skuGroupSeparator);\r\n}\r\nfunction setSku(params) {\r\n const { skuArr, index, skuName, skuVersion } = params;\r\n if (index >= skuArr.length) {\r\n return;\r\n }\r\n skuArr[index] = [skuName, skuVersion].join(skuValueSeparator);\r\n}\r\n/** @internal */\r\nclass ServerTelemetryManager {\r\n constructor(telemetryRequest, cacheManager) {\r\n this.cacheOutcome = CacheOutcome.NOT_APPLICABLE;\r\n this.cacheManager = cacheManager;\r\n this.apiId = telemetryRequest.apiId;\r\n this.correlationId = telemetryRequest.correlationId;\r\n this.wrapperSKU = telemetryRequest.wrapperSKU || Constants$1.EMPTY_STRING;\r\n this.wrapperVer = telemetryRequest.wrapperVer || Constants$1.EMPTY_STRING;\r\n this.telemetryCacheKey =\r\n SERVER_TELEM_CONSTANTS.CACHE_KEY +\r\n Separators.CACHE_KEY_SEPARATOR +\r\n telemetryRequest.clientId;\r\n }\r\n /**\r\n * API to add MSER Telemetry to request\r\n */\r\n generateCurrentRequestHeaderValue() {\r\n const request = `${this.apiId}${SERVER_TELEM_CONSTANTS.VALUE_SEPARATOR}${this.cacheOutcome}`;\r\n const platformFieldsArr = [this.wrapperSKU, this.wrapperVer];\r\n const nativeBrokerErrorCode = this.getNativeBrokerErrorCode();\r\n if (nativeBrokerErrorCode?.length) {\r\n platformFieldsArr.push(`broker_error=${nativeBrokerErrorCode}`);\r\n }\r\n const platformFields = platformFieldsArr.join(SERVER_TELEM_CONSTANTS.VALUE_SEPARATOR);\r\n const regionDiscoveryFields = this.getRegionDiscoveryFields();\r\n const requestWithRegionDiscoveryFields = [\r\n request,\r\n regionDiscoveryFields,\r\n ].join(SERVER_TELEM_CONSTANTS.VALUE_SEPARATOR);\r\n return [\r\n SERVER_TELEM_CONSTANTS.SCHEMA_VERSION,\r\n requestWithRegionDiscoveryFields,\r\n platformFields,\r\n ].join(SERVER_TELEM_CONSTANTS.CATEGORY_SEPARATOR);\r\n }\r\n /**\r\n * API to add MSER Telemetry for the last failed request\r\n */\r\n generateLastRequestHeaderValue() {\r\n const lastRequests = this.getLastRequests();\r\n const maxErrors = ServerTelemetryManager.maxErrorsToSend(lastRequests);\r\n const failedRequests = lastRequests.failedRequests\r\n .slice(0, 2 * maxErrors)\r\n .join(SERVER_TELEM_CONSTANTS.VALUE_SEPARATOR);\r\n const errors = lastRequests.errors\r\n .slice(0, maxErrors)\r\n .join(SERVER_TELEM_CONSTANTS.VALUE_SEPARATOR);\r\n const errorCount = lastRequests.errors.length;\r\n // Indicate whether this header contains all data or partial data\r\n const overflow = maxErrors < errorCount\r\n ? SERVER_TELEM_CONSTANTS.OVERFLOW_TRUE\r\n : SERVER_TELEM_CONSTANTS.OVERFLOW_FALSE;\r\n const platformFields = [errorCount, overflow].join(SERVER_TELEM_CONSTANTS.VALUE_SEPARATOR);\r\n return [\r\n SERVER_TELEM_CONSTANTS.SCHEMA_VERSION,\r\n lastRequests.cacheHits,\r\n failedRequests,\r\n errors,\r\n platformFields,\r\n ].join(SERVER_TELEM_CONSTANTS.CATEGORY_SEPARATOR);\r\n }\r\n /**\r\n * API to cache token failures for MSER data capture\r\n * @param error\r\n */\r\n cacheFailedRequest(error) {\r\n const lastRequests = this.getLastRequests();\r\n if (lastRequests.errors.length >=\r\n SERVER_TELEM_CONSTANTS.MAX_CACHED_ERRORS) {\r\n // Remove a cached error to make room, first in first out\r\n lastRequests.failedRequests.shift(); // apiId\r\n lastRequests.failedRequests.shift(); // correlationId\r\n lastRequests.errors.shift();\r\n }\r\n lastRequests.failedRequests.push(this.apiId, this.correlationId);\r\n if (error instanceof Error && !!error && error.toString()) {\r\n if (error instanceof AuthError) {\r\n if (error.subError) {\r\n lastRequests.errors.push(error.subError);\r\n }\r\n else if (error.errorCode) {\r\n lastRequests.errors.push(error.errorCode);\r\n }\r\n else {\r\n lastRequests.errors.push(error.toString());\r\n }\r\n }\r\n else {\r\n lastRequests.errors.push(error.toString());\r\n }\r\n }\r\n else {\r\n lastRequests.errors.push(SERVER_TELEM_CONSTANTS.UNKNOWN_ERROR);\r\n }\r\n this.cacheManager.setServerTelemetry(this.telemetryCacheKey, lastRequests, this.correlationId);\r\n return;\r\n }\r\n /**\r\n * Update server telemetry cache entry by incrementing cache hit counter\r\n */\r\n incrementCacheHits() {\r\n const lastRequests = this.getLastRequests();\r\n lastRequests.cacheHits += 1;\r\n this.cacheManager.setServerTelemetry(this.telemetryCacheKey, lastRequests, this.correlationId);\r\n return lastRequests.cacheHits;\r\n }\r\n /**\r\n * Get the server telemetry entity from cache or initialize a new one\r\n */\r\n getLastRequests() {\r\n const initialValue = {\r\n failedRequests: [],\r\n errors: [],\r\n cacheHits: 0,\r\n };\r\n const lastRequests = this.cacheManager.getServerTelemetry(this.telemetryCacheKey);\r\n return lastRequests || initialValue;\r\n }\r\n /**\r\n * Remove server telemetry cache entry\r\n */\r\n clearTelemetryCache() {\r\n const lastRequests = this.getLastRequests();\r\n const numErrorsFlushed = ServerTelemetryManager.maxErrorsToSend(lastRequests);\r\n const errorCount = lastRequests.errors.length;\r\n if (numErrorsFlushed === errorCount) {\r\n // All errors were sent on last request, clear Telemetry cache\r\n this.cacheManager.removeItem(this.telemetryCacheKey, this.correlationId);\r\n }\r\n else {\r\n // Partial data was flushed to server, construct a new telemetry cache item with errors that were not flushed\r\n const serverTelemEntity = {\r\n failedRequests: lastRequests.failedRequests.slice(numErrorsFlushed * 2),\r\n errors: lastRequests.errors.slice(numErrorsFlushed),\r\n cacheHits: 0,\r\n };\r\n this.cacheManager.setServerTelemetry(this.telemetryCacheKey, serverTelemEntity, this.correlationId);\r\n }\r\n }\r\n /**\r\n * Returns the maximum number of errors that can be flushed to the server in the next network request\r\n * @param serverTelemetryEntity\r\n */\r\n static maxErrorsToSend(serverTelemetryEntity) {\r\n let i;\r\n let maxErrors = 0;\r\n let dataSize = 0;\r\n const errorCount = serverTelemetryEntity.errors.length;\r\n for (i = 0; i < errorCount; i++) {\r\n // failedRequests parameter contains pairs of apiId and correlationId, multiply index by 2 to preserve pairs\r\n const apiId = serverTelemetryEntity.failedRequests[2 * i] ||\r\n Constants$1.EMPTY_STRING;\r\n const correlationId = serverTelemetryEntity.failedRequests[2 * i + 1] ||\r\n Constants$1.EMPTY_STRING;\r\n const errorCode = serverTelemetryEntity.errors[i] || Constants$1.EMPTY_STRING;\r\n // Count number of characters that would be added to header, each character is 1 byte. Add 3 at the end to account for separators\r\n dataSize +=\r\n apiId.toString().length +\r\n correlationId.toString().length +\r\n errorCode.length +\r\n 3;\r\n if (dataSize < SERVER_TELEM_CONSTANTS.MAX_LAST_HEADER_BYTES) {\r\n // Adding this entry to the header would still keep header size below the limit\r\n maxErrors += 1;\r\n }\r\n else {\r\n break;\r\n }\r\n }\r\n return maxErrors;\r\n }\r\n /**\r\n * Get the region discovery fields\r\n *\r\n * @returns string\r\n */\r\n getRegionDiscoveryFields() {\r\n const regionDiscoveryFields = [];\r\n regionDiscoveryFields.push(this.regionUsed || Constants$1.EMPTY_STRING);\r\n regionDiscoveryFields.push(this.regionSource || Constants$1.EMPTY_STRING);\r\n regionDiscoveryFields.push(this.regionOutcome || Constants$1.EMPTY_STRING);\r\n return regionDiscoveryFields.join(\",\");\r\n }\r\n /**\r\n * Update the region discovery metadata\r\n *\r\n * @param regionDiscoveryMetadata\r\n * @returns void\r\n */\r\n updateRegionDiscoveryMetadata(regionDiscoveryMetadata) {\r\n this.regionUsed = regionDiscoveryMetadata.region_used;\r\n this.regionSource = regionDiscoveryMetadata.region_source;\r\n this.regionOutcome = regionDiscoveryMetadata.region_outcome;\r\n }\r\n /**\r\n * Set cache outcome\r\n */\r\n setCacheOutcome(cacheOutcome) {\r\n this.cacheOutcome = cacheOutcome;\r\n }\r\n setNativeBrokerErrorCode(errorCode) {\r\n const lastRequests = this.getLastRequests();\r\n lastRequests.nativeBrokerErrorCode = errorCode;\r\n this.cacheManager.setServerTelemetry(this.telemetryCacheKey, lastRequests, this.correlationId);\r\n }\r\n getNativeBrokerErrorCode() {\r\n return this.getLastRequests().nativeBrokerErrorCode;\r\n }\r\n clearNativeBrokerErrorCode() {\r\n const lastRequests = this.getLastRequests();\r\n delete lastRequests.nativeBrokerErrorCode;\r\n this.cacheManager.setServerTelemetry(this.telemetryCacheKey, lastRequests, this.correlationId);\r\n }\r\n static makeExtraSkuString(params) {\r\n return makeExtraSkuString(params);\r\n }\r\n}\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * This class deserializes cache entities read from the file into in-memory object types defined internally\r\n * @internal\r\n */\r\nclass Deserializer {\r\n /**\r\n * Parse the JSON blob in memory and deserialize the content\r\n * @param cachedJson - JSON blob cache\r\n */\r\n static deserializeJSONBlob(jsonFile) {\r\n const deserializedCache = !jsonFile ? {} : JSON.parse(jsonFile);\r\n return deserializedCache;\r\n }\r\n /**\r\n * Deserializes accounts to AccountEntity objects\r\n * @param accounts - accounts of type SerializedAccountEntity\r\n */\r\n static deserializeAccounts(accounts) {\r\n const accountObjects = {};\r\n if (accounts) {\r\n Object.keys(accounts).map(function (key) {\r\n const serializedAcc = accounts[key];\r\n const mappedAcc = {\r\n homeAccountId: serializedAcc.home_account_id,\r\n environment: serializedAcc.environment,\r\n realm: serializedAcc.realm,\r\n localAccountId: serializedAcc.local_account_id,\r\n username: serializedAcc.username,\r\n authorityType: serializedAcc.authority_type,\r\n name: serializedAcc.name,\r\n clientInfo: serializedAcc.client_info,\r\n lastModificationTime: serializedAcc.last_modification_time,\r\n lastModificationApp: serializedAcc.last_modification_app,\r\n tenantProfiles: serializedAcc.tenantProfiles?.map((serializedTenantProfile) => {\r\n return JSON.parse(serializedTenantProfile);\r\n }),\r\n lastUpdatedAt: Date.now().toString(),\r\n };\r\n const account = new AccountEntity();\r\n CacheManager.toObject(account, mappedAcc);\r\n accountObjects[key] = account;\r\n });\r\n }\r\n return accountObjects;\r\n }\r\n /**\r\n * Deserializes id tokens to IdTokenEntity objects\r\n * @param idTokens - credentials of type SerializedIdTokenEntity\r\n */\r\n static deserializeIdTokens(idTokens) {\r\n const idObjects = {};\r\n if (idTokens) {\r\n Object.keys(idTokens).map(function (key) {\r\n const serializedIdT = idTokens[key];\r\n const idToken = {\r\n homeAccountId: serializedIdT.home_account_id,\r\n environment: serializedIdT.environment,\r\n credentialType: serializedIdT.credential_type,\r\n clientId: serializedIdT.client_id,\r\n secret: serializedIdT.secret,\r\n realm: serializedIdT.realm,\r\n lastUpdatedAt: Date.now().toString(),\r\n };\r\n idObjects[key] = idToken;\r\n });\r\n }\r\n return idObjects;\r\n }\r\n /**\r\n * Deserializes access tokens to AccessTokenEntity objects\r\n * @param accessTokens - access tokens of type SerializedAccessTokenEntity\r\n */\r\n static deserializeAccessTokens(accessTokens) {\r\n const atObjects = {};\r\n if (accessTokens) {\r\n Object.keys(accessTokens).map(function (key) {\r\n const serializedAT = accessTokens[key];\r\n const accessToken = {\r\n homeAccountId: serializedAT.home_account_id,\r\n environment: serializedAT.environment,\r\n credentialType: serializedAT.credential_type,\r\n clientId: serializedAT.client_id,\r\n secret: serializedAT.secret,\r\n realm: serializedAT.realm,\r\n target: serializedAT.target,\r\n cachedAt: serializedAT.cached_at,\r\n expiresOn: serializedAT.expires_on,\r\n extendedExpiresOn: serializedAT.extended_expires_on,\r\n refreshOn: serializedAT.refresh_on,\r\n keyId: serializedAT.key_id,\r\n tokenType: serializedAT.token_type,\r\n requestedClaims: serializedAT.requestedClaims,\r\n requestedClaimsHash: serializedAT.requestedClaimsHash,\r\n userAssertionHash: serializedAT.userAssertionHash,\r\n lastUpdatedAt: Date.now().toString(),\r\n };\r\n atObjects[key] = accessToken;\r\n });\r\n }\r\n return atObjects;\r\n }\r\n /**\r\n * Deserializes refresh tokens to RefreshTokenEntity objects\r\n * @param refreshTokens - refresh tokens of type SerializedRefreshTokenEntity\r\n */\r\n static deserializeRefreshTokens(refreshTokens) {\r\n const rtObjects = {};\r\n if (refreshTokens) {\r\n Object.keys(refreshTokens).map(function (key) {\r\n const serializedRT = refreshTokens[key];\r\n const refreshToken = {\r\n homeAccountId: serializedRT.home_account_id,\r\n environment: serializedRT.environment,\r\n credentialType: serializedRT.credential_type,\r\n clientId: serializedRT.client_id,\r\n secret: serializedRT.secret,\r\n familyId: serializedRT.family_id,\r\n target: serializedRT.target,\r\n realm: serializedRT.realm,\r\n lastUpdatedAt: Date.now().toString(),\r\n };\r\n rtObjects[key] = refreshToken;\r\n });\r\n }\r\n return rtObjects;\r\n }\r\n /**\r\n * Deserializes appMetadata to AppMetaData objects\r\n * @param appMetadata - app metadata of type SerializedAppMetadataEntity\r\n */\r\n static deserializeAppMetadata(appMetadata) {\r\n const appMetadataObjects = {};\r\n if (appMetadata) {\r\n Object.keys(appMetadata).map(function (key) {\r\n const serializedAmdt = appMetadata[key];\r\n appMetadataObjects[key] = {\r\n clientId: serializedAmdt.client_id,\r\n environment: serializedAmdt.environment,\r\n familyId: serializedAmdt.family_id,\r\n };\r\n });\r\n }\r\n return appMetadataObjects;\r\n }\r\n /**\r\n * Deserialize an inMemory Cache\r\n * @param jsonCache - JSON blob cache\r\n */\r\n static deserializeAllCache(jsonCache) {\r\n return {\r\n accounts: jsonCache.Account\r\n ? this.deserializeAccounts(jsonCache.Account)\r\n : {},\r\n idTokens: jsonCache.IdToken\r\n ? this.deserializeIdTokens(jsonCache.IdToken)\r\n : {},\r\n accessTokens: jsonCache.AccessToken\r\n ? this.deserializeAccessTokens(jsonCache.AccessToken)\r\n : {},\r\n refreshTokens: jsonCache.RefreshToken\r\n ? this.deserializeRefreshTokens(jsonCache.RefreshToken)\r\n : {},\r\n appMetadata: jsonCache.AppMetadata\r\n ? this.deserializeAppMetadata(jsonCache.AppMetadata)\r\n : {},\r\n };\r\n }\r\n}\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * Warning: This set of exports is purely intended to be used by other MSAL libraries, and should be considered potentially unstable. We strongly discourage using them directly, you do so at your own risk.\r\n * Breaking changes to these APIs will be shipped under a minor version, instead of a major version.\r\n */\n\nvar internals = /*#__PURE__*/Object.freeze({\n __proto__: null,\n Deserializer: Deserializer,\n Serializer: Serializer\n});\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n// MSI Constants. Docs for MSI are available here https://docs.microsoft.com/azure/app-service/overview-managed-identity\r\nconst DEFAULT_MANAGED_IDENTITY_ID = \"system_assigned_managed_identity\";\r\nconst MANAGED_IDENTITY_DEFAULT_TENANT = \"managed_identity\";\r\nconst DEFAULT_AUTHORITY_FOR_MANAGED_IDENTITY = `https://login.microsoftonline.com/${MANAGED_IDENTITY_DEFAULT_TENANT}/`;\r\n/**\r\n * Managed Identity Headers - used in network requests\r\n */\r\nconst ManagedIdentityHeaders = {\r\n AUTHORIZATION_HEADER_NAME: \"Authorization\",\r\n METADATA_HEADER_NAME: \"Metadata\",\r\n APP_SERVICE_SECRET_HEADER_NAME: \"X-IDENTITY-HEADER\",\r\n ML_AND_SF_SECRET_HEADER_NAME: \"secret\",\r\n};\r\n/**\r\n * Managed Identity Query Parameters - used in network requests\r\n */\r\nconst ManagedIdentityQueryParameters = {\r\n API_VERSION: \"api-version\",\r\n RESOURCE: \"resource\",\r\n SHA256_TOKEN_TO_REFRESH: \"token_sha256_to_refresh\",\r\n XMS_CC: \"xms_cc\",\r\n};\r\n/**\r\n * Managed Identity Environment Variable Names\r\n */\r\nconst ManagedIdentityEnvironmentVariableNames = {\r\n AZURE_POD_IDENTITY_AUTHORITY_HOST: \"AZURE_POD_IDENTITY_AUTHORITY_HOST\",\r\n DEFAULT_IDENTITY_CLIENT_ID: \"DEFAULT_IDENTITY_CLIENT_ID\",\r\n IDENTITY_ENDPOINT: \"IDENTITY_ENDPOINT\",\r\n IDENTITY_HEADER: \"IDENTITY_HEADER\",\r\n IDENTITY_SERVER_THUMBPRINT: \"IDENTITY_SERVER_THUMBPRINT\",\r\n IMDS_ENDPOINT: \"IMDS_ENDPOINT\",\r\n MSI_ENDPOINT: \"MSI_ENDPOINT\",\r\n MSI_SECRET: \"MSI_SECRET\",\r\n};\r\n/**\r\n * Managed Identity Source Names\r\n * @public\r\n */\r\nconst ManagedIdentitySourceNames = {\r\n APP_SERVICE: \"AppService\",\r\n AZURE_ARC: \"AzureArc\",\r\n CLOUD_SHELL: \"CloudShell\",\r\n DEFAULT_TO_IMDS: \"DefaultToImds\",\r\n IMDS: \"Imds\",\r\n MACHINE_LEARNING: \"MachineLearning\",\r\n SERVICE_FABRIC: \"ServiceFabric\",\r\n};\r\n/**\r\n * Managed Identity Ids\r\n */\r\nconst ManagedIdentityIdType = {\r\n SYSTEM_ASSIGNED: \"system-assigned\",\r\n USER_ASSIGNED_CLIENT_ID: \"user-assigned-client-id\",\r\n USER_ASSIGNED_RESOURCE_ID: \"user-assigned-resource-id\",\r\n USER_ASSIGNED_OBJECT_ID: \"user-assigned-object-id\",\r\n};\r\n/**\r\n * http methods\r\n */\r\nconst HttpMethod = {\r\n GET: \"get\",\r\n POST: \"post\",\r\n};\r\nconst ProxyStatus = {\r\n SUCCESS_RANGE_START: HttpStatus.SUCCESS_RANGE_START,\r\n SUCCESS_RANGE_END: HttpStatus.SUCCESS_RANGE_END,\r\n SERVER_ERROR: HttpStatus.SERVER_ERROR,\r\n};\r\n/**\r\n * Constants used for region discovery\r\n */\r\nconst REGION_ENVIRONMENT_VARIABLE = \"REGION_NAME\";\r\nconst MSAL_FORCE_REGION = \"MSAL_FORCE_REGION\";\r\n/**\r\n * Constant used for PKCE\r\n */\r\nconst RANDOM_OCTET_SIZE = 32;\r\n/**\r\n * Constants used in PKCE\r\n */\r\nconst Hash = {\r\n SHA256: \"sha256\",\r\n};\r\n/**\r\n * Constants for encoding schemes\r\n */\r\nconst CharSet = {\r\n CV_CHARSET: \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-._~\",\r\n};\r\n/**\r\n * Cache Constants\r\n */\r\nconst CACHE = {\r\n KEY_SEPARATOR: \"-\",\r\n};\r\n/**\r\n * Constants\r\n */\r\nconst Constants = {\r\n MSAL_SKU: \"msal.js.node\",\r\n JWT_BEARER_ASSERTION_TYPE: \"urn:ietf:params:oauth:client-assertion-type:jwt-bearer\",\r\n AUTHORIZATION_PENDING: \"authorization_pending\",\r\n HTTP_PROTOCOL: \"http://\",\r\n LOCALHOST: \"localhost\",\r\n};\r\n/**\r\n * API Codes for Telemetry purposes.\r\n * Before adding a new code you must claim it in the MSAL Telemetry tracker as these number spaces are shared across all MSALs\r\n * 0-99 Silent Flow\r\n * 600-699 Device Code Flow\r\n * 800-899 Auth Code Flow\r\n */\r\nconst ApiId = {\r\n acquireTokenSilent: 62,\r\n acquireTokenByUsernamePassword: 371,\r\n acquireTokenByDeviceCode: 671,\r\n acquireTokenByClientCredential: 771,\r\n acquireTokenByCode: 871,\r\n acquireTokenByRefreshToken: 872,\r\n};\r\n/**\r\n * JWT constants\r\n */\r\nconst JwtConstants = {\r\n RSA_256: \"RS256\",\r\n PSS_256: \"PS256\",\r\n X5T_256: \"x5t#S256\",\r\n X5T: \"x5t\",\r\n X5C: \"x5c\",\r\n AUDIENCE: \"aud\",\r\n EXPIRATION_TIME: \"exp\",\r\n ISSUER: \"iss\",\r\n SUBJECT: \"sub\",\r\n NOT_BEFORE: \"nbf\",\r\n JWT_ID: \"jti\",\r\n};\r\nconst LOOPBACK_SERVER_CONSTANTS = {\r\n INTERVAL_MS: 100,\r\n TIMEOUT_MS: 5000,\r\n};\r\nconst AZURE_ARC_SECRET_FILE_MAX_SIZE_BYTES = 4096; // 4 KB\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nclass NetworkUtils {\r\n static getNetworkResponse(headers, body, statusCode) {\r\n return {\r\n headers: headers,\r\n body: body,\r\n status: statusCode,\r\n };\r\n }\r\n /*\r\n * Utility function that converts a URL object into an ordinary options object as expected by the\r\n * http.request and https.request APIs.\r\n * https://github.com/nodejs/node/blob/main/lib/internal/url.js#L1090\r\n */\r\n static urlToHttpOptions(url) {\r\n const options = {\r\n protocol: url.protocol,\r\n hostname: url.hostname && url.hostname.startsWith(\"[\")\r\n ? url.hostname.slice(1, -1)\r\n : url.hostname,\r\n hash: url.hash,\r\n search: url.search,\r\n pathname: url.pathname,\r\n path: `${url.pathname || \"\"}${url.search || \"\"}`,\r\n href: url.href,\r\n };\r\n if (url.port !== \"\") {\r\n options.port = Number(url.port);\r\n }\r\n if (url.username || url.password) {\r\n options.auth = `${decodeURIComponent(url.username)}:${decodeURIComponent(url.password)}`;\r\n }\r\n return options;\r\n }\r\n}\n\n/* eslint-disable header/header */\r\nconst name = \"@azure/msal-node\";\r\nconst version = \"3.8.3\";\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * This class implements the API for network requests.\r\n */\r\nclass HttpClient {\r\n constructor(proxyUrl, customAgentOptions, loggerOptions) {\r\n this.networkRequestViaProxy = (httpMethod, destinationUrlString, options, timeout) => {\r\n const destinationUrl = new URL(destinationUrlString);\r\n const proxyUrl = new URL(this.proxyUrl);\r\n // \"method: connect\" must be used to establish a connection to the proxy\r\n const headers = options?.headers || {};\r\n const tunnelRequestOptions = {\r\n host: proxyUrl.hostname,\r\n port: proxyUrl.port,\r\n method: \"CONNECT\",\r\n path: destinationUrl.hostname,\r\n headers: headers,\r\n };\r\n if (this.customAgentOptions &&\r\n Object.keys(this.customAgentOptions).length) {\r\n tunnelRequestOptions.agent = new http.Agent(this.customAgentOptions);\r\n }\r\n // compose a request string for the socket\r\n let postRequestStringContent = \"\";\r\n if (httpMethod === HttpMethod.POST) {\r\n const body = options?.body || \"\";\r\n postRequestStringContent =\r\n \"Content-Type: application/x-www-form-urlencoded\\r\\n\" +\r\n `Content-Length: ${body.length}\\r\\n` +\r\n `\\r\\n${body}`;\r\n }\r\n else {\r\n // optional timeout is only for get requests (regionDiscovery, for example)\r\n if (timeout) {\r\n tunnelRequestOptions.timeout = timeout;\r\n }\r\n }\r\n const outgoingRequestString = `${httpMethod.toUpperCase()} ${destinationUrl.href} HTTP/1.1\\r\\n` +\r\n `Host: ${destinationUrl.host}\\r\\n` +\r\n \"Connection: close\\r\\n\" +\r\n postRequestStringContent +\r\n \"\\r\\n\";\r\n return new Promise((resolve, reject) => {\r\n const request = http.request(tunnelRequestOptions);\r\n if (timeout) {\r\n request.on(\"timeout\", () => {\r\n this.logUrlWithPiiAwareness(`Request timeout after ${timeout}ms for URL`, destinationUrlString);\r\n request.destroy();\r\n reject(new Error(`Request time out after ${timeout}ms`));\r\n });\r\n }\r\n request.end();\r\n // establish connection to the proxy\r\n request.on(\"connect\", (response, socket) => {\r\n const proxyStatusCode = response?.statusCode || ProxyStatus.SERVER_ERROR;\r\n if (proxyStatusCode < ProxyStatus.SUCCESS_RANGE_START ||\r\n proxyStatusCode > ProxyStatus.SUCCESS_RANGE_END) {\r\n request.destroy();\r\n socket.destroy();\r\n reject(new Error(`Error connecting to proxy. Http status code: ${response.statusCode}. Http status message: ${response?.statusMessage || \"Unknown\"}`));\r\n }\r\n // make a request over an HTTP tunnel\r\n socket.write(outgoingRequestString);\r\n const data = [];\r\n socket.on(\"data\", (chunk) => {\r\n data.push(chunk);\r\n });\r\n socket.on(\"end\", () => {\r\n // combine all received buffer streams into one buffer, and then into a string\r\n const dataString = Buffer.concat([...data]).toString();\r\n // separate each line into it's own entry in an arry\r\n const dataStringArray = dataString.split(\"\\r\\n\");\r\n // the first entry will contain the statusCode and statusMessage\r\n const httpStatusCode = parseInt(dataStringArray[0].split(\" \")[1]);\r\n // remove \"HTTP/1.1\" and the status code to get the status message\r\n const statusMessage = dataStringArray[0]\r\n .split(\" \")\r\n .slice(2)\r\n .join(\" \");\r\n // the last entry will contain the body\r\n const body = dataStringArray[dataStringArray.length - 1];\r\n // everything in between the first and last entries are the headers\r\n const headersArray = dataStringArray.slice(1, dataStringArray.length - 2);\r\n // build an object out of all the headers\r\n const entries = new Map();\r\n headersArray.forEach((header) => {\r\n /**\r\n * the header might look like \"Content-Length: 1531\", but that is just a string\r\n * it needs to be converted to a key/value pair\r\n * split the string at the first instance of \":\"\r\n * there may be more than one \":\" if the value of the header is supposed to be a JSON object\r\n */\r\n const headerKeyValue = header.split(new RegExp(/:\\s(.*)/s));\r\n const headerKey = headerKeyValue[0];\r\n let headerValue = headerKeyValue[1];\r\n // check if the value of the header is supposed to be a JSON object\r\n try {\r\n const object = JSON.parse(headerValue);\r\n // if it is, then convert it from a string to a JSON object\r\n if (object && typeof object === \"object\") {\r\n headerValue = object;\r\n }\r\n }\r\n catch (e) {\r\n // otherwise, leave it as a string\r\n }\r\n entries.set(headerKey, headerValue);\r\n });\r\n const headers = Object.fromEntries(entries);\r\n const parsedHeaders = headers;\r\n const networkResponse = NetworkUtils.getNetworkResponse(parsedHeaders, this.parseBody(httpStatusCode, statusMessage, parsedHeaders, body), httpStatusCode);\r\n if (this.shouldDestroyRequest(httpStatusCode, networkResponse)) {\r\n request.destroy();\r\n }\r\n resolve(networkResponse);\r\n });\r\n socket.on(\"error\", (chunk) => {\r\n request.destroy();\r\n socket.destroy();\r\n reject(new Error(chunk.toString()));\r\n });\r\n });\r\n request.on(\"error\", (chunk) => {\r\n this.logger.error(`HttpClient - Proxy request error: ${chunk.toString()}`, \"\");\r\n this.logUrlWithPiiAwareness(\"Destination URL\", destinationUrlString);\r\n this.logUrlWithPiiAwareness(\"Proxy URL\", this.proxyUrl);\r\n this.logger.error(`HttpClient - Method: ${httpMethod}`, \"\");\r\n this.logger.errorPii(`HttpClient - Headers: ${JSON.stringify(headers)}`, \"\");\r\n request.destroy();\r\n reject(new Error(chunk.toString()));\r\n });\r\n });\r\n };\r\n this.networkRequestViaHttps = (httpMethod, urlString, options, timeout) => {\r\n const isPostRequest = httpMethod === HttpMethod.POST;\r\n const body = options?.body || \"\";\r\n const url = new URL(urlString);\r\n const headers = options?.headers || {};\r\n const customOptions = {\r\n method: httpMethod,\r\n headers: headers,\r\n ...NetworkUtils.urlToHttpOptions(url),\r\n };\r\n if (this.customAgentOptions &&\r\n Object.keys(this.customAgentOptions).length) {\r\n customOptions.agent = new https.Agent(this.customAgentOptions);\r\n }\r\n if (isPostRequest) {\r\n // needed for post request to work\r\n customOptions.headers = {\r\n ...customOptions.headers,\r\n \"Content-Length\": body.length,\r\n };\r\n }\r\n else {\r\n // optional timeout is only for get requests (regionDiscovery, for example)\r\n if (timeout) {\r\n customOptions.timeout = timeout;\r\n }\r\n }\r\n return new Promise((resolve, reject) => {\r\n let request;\r\n // managed identity sources use http instead of https\r\n if (customOptions.protocol === \"http:\") {\r\n request = http.request(customOptions);\r\n }\r\n else {\r\n request = https.request(customOptions);\r\n }\r\n if (isPostRequest) {\r\n request.write(body);\r\n }\r\n if (timeout) {\r\n request.on(\"timeout\", () => {\r\n this.logUrlWithPiiAwareness(`HTTPS request timeout after ${timeout}ms for URL`, urlString);\r\n request.destroy();\r\n reject(new Error(`Request time out after ${timeout}ms`));\r\n });\r\n }\r\n request.end();\r\n request.on(\"response\", (response) => {\r\n const headers = response.headers;\r\n const statusCode = response.statusCode;\r\n const statusMessage = response.statusMessage;\r\n const data = [];\r\n response.on(\"data\", (chunk) => {\r\n data.push(chunk);\r\n });\r\n response.on(\"end\", () => {\r\n // combine all received buffer streams into one buffer, and then into a string\r\n const body = Buffer.concat([...data]).toString();\r\n const parsedHeaders = headers;\r\n const networkResponse = NetworkUtils.getNetworkResponse(parsedHeaders, this.parseBody(statusCode, statusMessage, parsedHeaders, body), statusCode);\r\n if (this.shouldDestroyRequest(statusCode, networkResponse)) {\r\n request.destroy();\r\n }\r\n resolve(networkResponse);\r\n });\r\n });\r\n request.on(\"error\", (chunk) => {\r\n this.logger.error(`HttpClient - HTTPS request error: ${chunk.toString()}`, \"\");\r\n this.logUrlWithPiiAwareness(\"URL\", urlString);\r\n this.logger.error(`HttpClient - Method: ${httpMethod}`, \"\");\r\n this.logger.errorPii(`HttpClient - Headers: ${JSON.stringify(headers)}`, \"\");\r\n request.destroy();\r\n reject(new Error(chunk.toString()));\r\n });\r\n });\r\n };\r\n /**\r\n * Check if extra parsing is needed on the repsonse from the server\r\n * @param statusCode {number} the status code of the response from the server\r\n * @param statusMessage {string | undefined} the status message of the response from the server\r\n * @param headers {Record} the headers of the response from the server\r\n * @param body {string} the body from the response of the server\r\n * @returns {Object} JSON parsed body or error object\r\n */\r\n this.parseBody = (statusCode, statusMessage, headers, body) => {\r\n /*\r\n * Informational responses (100 – 199)\r\n * Successful responses (200 – 299)\r\n * Redirection messages (300 – 399)\r\n * Client error responses (400 – 499)\r\n * Server error responses (500 – 599)\r\n */\r\n let parsedBody;\r\n try {\r\n parsedBody = JSON.parse(body);\r\n }\r\n catch (error) {\r\n let errorType;\r\n let errorDescriptionHelper;\r\n if (statusCode >= HttpStatus.CLIENT_ERROR_RANGE_START &&\r\n statusCode <= HttpStatus.CLIENT_ERROR_RANGE_END) {\r\n errorType = \"client_error\";\r\n errorDescriptionHelper = \"A client\";\r\n }\r\n else if (statusCode >= HttpStatus.SERVER_ERROR_RANGE_START &&\r\n statusCode <= HttpStatus.SERVER_ERROR_RANGE_END) {\r\n errorType = \"server_error\";\r\n errorDescriptionHelper = \"A server\";\r\n }\r\n else {\r\n errorType = \"unknown_error\";\r\n errorDescriptionHelper = \"An unknown\";\r\n }\r\n parsedBody = {\r\n error: errorType,\r\n error_description: `${errorDescriptionHelper} error occured.\\nHttp status code: ${statusCode}\\nHttp status message: ${statusMessage || \"Unknown\"}\\nHeaders: ${JSON.stringify(headers)}`,\r\n };\r\n }\r\n return parsedBody;\r\n };\r\n /**\r\n * Helper function to log a formatted message containing URLs, with PII-aware sanitization\r\n * @param label {string} the label for the log message\r\n * @param urlString {string} the URL to log\r\n */\r\n this.logUrlWithPiiAwareness = (label, urlString) => {\r\n if (this.isPiiEnabled) {\r\n this.logger.errorPii(`HttpClient - ${label}: ${urlString}`, \"\");\r\n }\r\n else {\r\n let urlHelper;\r\n try {\r\n const url = new URL(urlString);\r\n urlHelper = `${url.protocol}//${url.host}${url.pathname}`;\r\n }\r\n catch {\r\n urlHelper = urlString.split(\"?\")[0] || \"unknown\";\r\n }\r\n this.logger.error(`HttpClient - ${label}: ${urlHelper} [Enable PII logging to see additional details]`, \"\");\r\n }\r\n };\r\n /**\r\n * Helper function to determine if a request should be destroyed based on status code and response body.\r\n * Checks if the response is an error and not part of the device code flow (authorization_pending).\r\n * @param statusCode {number} the status code of the response\r\n * @param networkResponse {NetworkResponse} the network response object\r\n * @returns {boolean} true if the request should be destroyed, false otherwise\r\n */\r\n this.shouldDestroyRequest = (statusCode, networkResponse) => {\r\n return ((statusCode < HttpStatus.SUCCESS_RANGE_START ||\r\n statusCode > HttpStatus.SUCCESS_RANGE_END) &&\r\n // do not destroy the request for the device code flow\r\n !(networkResponse.body &&\r\n typeof networkResponse.body === \"object\" &&\r\n \"error\" in networkResponse.body &&\r\n networkResponse.body.error ===\r\n Constants.AUTHORIZATION_PENDING));\r\n };\r\n this.proxyUrl = proxyUrl || \"\";\r\n this.customAgentOptions = customAgentOptions || {};\r\n this.logger = new Logger(loggerOptions || {}, name, version);\r\n this.isPiiEnabled = this.logger.isPiiLoggingEnabled();\r\n }\r\n /**\r\n * Http Get request\r\n * @param url\r\n * @param options\r\n */\r\n async sendGetRequestAsync(url, options, timeout) {\r\n if (this.proxyUrl) {\r\n return this.networkRequestViaProxy(HttpMethod.GET, url, options, timeout);\r\n }\r\n else {\r\n return this.networkRequestViaHttps(HttpMethod.GET, url, options, timeout);\r\n }\r\n }\r\n /**\r\n * Http Post request\r\n * @param url\r\n * @param options\r\n */\r\n async sendPostRequestAsync(url, options) {\r\n if (this.proxyUrl) {\r\n return this.networkRequestViaProxy(HttpMethod.POST, url, options);\r\n }\r\n else {\r\n return this.networkRequestViaHttps(HttpMethod.POST, url, options);\r\n }\r\n }\r\n}\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nconst invalidFileExtension = \"invalid_file_extension\";\r\nconst invalidFilePath = \"invalid_file_path\";\r\nconst invalidManagedIdentityIdType = \"invalid_managed_identity_id_type\";\r\nconst invalidSecret = \"invalid_secret\";\r\nconst missingId = \"missing_client_id\";\r\nconst networkUnavailable = \"network_unavailable\";\r\nconst platformNotSupported = \"platform_not_supported\";\r\nconst unableToCreateAzureArc = \"unable_to_create_azure_arc\";\r\nconst unableToCreateCloudShell = \"unable_to_create_cloud_shell\";\r\nconst unableToCreateSource = \"unable_to_create_source\";\r\nconst unableToReadSecretFile = \"unable_to_read_secret_file\";\r\nconst userAssignedNotAvailableAtRuntime = \"user_assigned_not_available_at_runtime\";\r\nconst wwwAuthenticateHeaderMissing = \"www_authenticate_header_missing\";\r\nconst wwwAuthenticateHeaderUnsupportedFormat = \"www_authenticate_header_unsupported_format\";\r\nconst MsiEnvironmentVariableUrlMalformedErrorCodes = {\r\n [ManagedIdentityEnvironmentVariableNames.AZURE_POD_IDENTITY_AUTHORITY_HOST]: \"azure_pod_identity_authority_host_url_malformed\",\r\n [ManagedIdentityEnvironmentVariableNames.IDENTITY_ENDPOINT]: \"identity_endpoint_url_malformed\",\r\n [ManagedIdentityEnvironmentVariableNames.IMDS_ENDPOINT]: \"imds_endpoint_url_malformed\",\r\n [ManagedIdentityEnvironmentVariableNames.MSI_ENDPOINT]: \"msi_endpoint_url_malformed\",\r\n};\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * ManagedIdentityErrorMessage class containing string constants used by error codes and messages.\r\n */\r\nconst ManagedIdentityErrorMessages = {\r\n [invalidFileExtension]: \"The file path in the WWW-Authenticate header does not contain a .key file.\",\r\n [invalidFilePath]: \"The file path in the WWW-Authenticate header is not in a valid Windows or Linux Format.\",\r\n [invalidManagedIdentityIdType]: \"More than one ManagedIdentityIdType was provided.\",\r\n [invalidSecret]: \"The secret in the file on the file path in the WWW-Authenticate header is greater than 4096 bytes.\",\r\n [platformNotSupported]: \"The platform is not supported by Azure Arc. Azure Arc only supports Windows and Linux.\",\r\n [missingId]: \"A ManagedIdentityId id was not provided.\",\r\n [MsiEnvironmentVariableUrlMalformedErrorCodes\r\n .AZURE_POD_IDENTITY_AUTHORITY_HOST]: `The Managed Identity's '${ManagedIdentityEnvironmentVariableNames.AZURE_POD_IDENTITY_AUTHORITY_HOST}' environment variable is malformed.`,\r\n [MsiEnvironmentVariableUrlMalformedErrorCodes\r\n .IDENTITY_ENDPOINT]: `The Managed Identity's '${ManagedIdentityEnvironmentVariableNames.IDENTITY_ENDPOINT}' environment variable is malformed.`,\r\n [MsiEnvironmentVariableUrlMalformedErrorCodes\r\n .IMDS_ENDPOINT]: `The Managed Identity's '${ManagedIdentityEnvironmentVariableNames.IMDS_ENDPOINT}' environment variable is malformed.`,\r\n [MsiEnvironmentVariableUrlMalformedErrorCodes\r\n .MSI_ENDPOINT]: `The Managed Identity's '${ManagedIdentityEnvironmentVariableNames.MSI_ENDPOINT}' environment variable is malformed.`,\r\n [networkUnavailable]: \"Authentication unavailable. The request to the managed identity endpoint timed out.\",\r\n [unableToCreateAzureArc]: \"Azure Arc Managed Identities can only be system assigned.\",\r\n [unableToCreateCloudShell]: \"Cloud Shell Managed Identities can only be system assigned.\",\r\n [unableToCreateSource]: \"Unable to create a Managed Identity source based on environment variables.\",\r\n [unableToReadSecretFile]: \"Unable to read the secret file.\",\r\n [userAssignedNotAvailableAtRuntime]: \"Service Fabric user assigned managed identity ClientId or ResourceId is not configurable at runtime.\",\r\n [wwwAuthenticateHeaderMissing]: \"A 401 response was received form the Azure Arc Managed Identity, but the www-authenticate header is missing.\",\r\n [wwwAuthenticateHeaderUnsupportedFormat]: \"A 401 response was received form the Azure Arc Managed Identity, but the www-authenticate header is in an unsupported format.\",\r\n};\r\nclass ManagedIdentityError extends AuthError {\r\n constructor(errorCode) {\r\n super(errorCode, ManagedIdentityErrorMessages[errorCode]);\r\n this.name = \"ManagedIdentityError\";\r\n Object.setPrototypeOf(this, ManagedIdentityError.prototype);\r\n }\r\n}\r\nfunction createManagedIdentityError(errorCode) {\r\n return new ManagedIdentityError(errorCode);\r\n}\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nclass ManagedIdentityId {\r\n get id() {\r\n return this._id;\r\n }\r\n set id(value) {\r\n this._id = value;\r\n }\r\n get idType() {\r\n return this._idType;\r\n }\r\n set idType(value) {\r\n this._idType = value;\r\n }\r\n constructor(managedIdentityIdParams) {\r\n const userAssignedClientId = managedIdentityIdParams?.userAssignedClientId;\r\n const userAssignedResourceId = managedIdentityIdParams?.userAssignedResourceId;\r\n const userAssignedObjectId = managedIdentityIdParams?.userAssignedObjectId;\r\n if (userAssignedClientId) {\r\n if (userAssignedResourceId || userAssignedObjectId) {\r\n throw createManagedIdentityError(invalidManagedIdentityIdType);\r\n }\r\n this.id = userAssignedClientId;\r\n this.idType = ManagedIdentityIdType.USER_ASSIGNED_CLIENT_ID;\r\n }\r\n else if (userAssignedResourceId) {\r\n if (userAssignedClientId || userAssignedObjectId) {\r\n throw createManagedIdentityError(invalidManagedIdentityIdType);\r\n }\r\n this.id = userAssignedResourceId;\r\n this.idType = ManagedIdentityIdType.USER_ASSIGNED_RESOURCE_ID;\r\n }\r\n else if (userAssignedObjectId) {\r\n if (userAssignedClientId || userAssignedResourceId) {\r\n throw createManagedIdentityError(invalidManagedIdentityIdType);\r\n }\r\n this.id = userAssignedObjectId;\r\n this.idType = ManagedIdentityIdType.USER_ASSIGNED_OBJECT_ID;\r\n }\r\n else {\r\n this.id = DEFAULT_MANAGED_IDENTITY_ID;\r\n this.idType = ManagedIdentityIdType.SYSTEM_ASSIGNED;\r\n }\r\n }\r\n}\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * NodeAuthErrorMessage class containing string constants used by error codes and messages.\r\n */\r\nconst NodeAuthErrorMessage = {\r\n invalidLoopbackAddressType: {\r\n code: \"invalid_loopback_server_address_type\",\r\n desc: \"Loopback server address is not type string. This is unexpected.\",\r\n },\r\n unableToLoadRedirectUri: {\r\n code: \"unable_to_load_redirectUrl\",\r\n desc: \"Loopback server callback was invoked without a url. This is unexpected.\",\r\n },\r\n noAuthCodeInResponse: {\r\n code: \"no_auth_code_in_response\",\r\n desc: \"No auth code found in the server response. Please check your network trace to determine what happened.\",\r\n },\r\n noLoopbackServerExists: {\r\n code: \"no_loopback_server_exists\",\r\n desc: \"No loopback server exists yet.\",\r\n },\r\n loopbackServerAlreadyExists: {\r\n code: \"loopback_server_already_exists\",\r\n desc: \"Loopback server already exists. Cannot create another.\",\r\n },\r\n loopbackServerTimeout: {\r\n code: \"loopback_server_timeout\",\r\n desc: \"Timed out waiting for auth code listener to be registered.\",\r\n },\r\n stateNotFoundError: {\r\n code: \"state_not_found\",\r\n desc: \"State not found. Please verify that the request originated from msal.\",\r\n },\r\n thumbprintMissing: {\r\n code: \"thumbprint_missing_from_client_certificate\",\r\n desc: \"Client certificate does not contain a SHA-1 or SHA-256 thumbprint.\",\r\n },\r\n redirectUriNotSupported: {\r\n code: \"redirect_uri_not_supported\",\r\n desc: \"RedirectUri is not supported in this scenario. Please remove redirectUri from the request.\",\r\n },\r\n};\r\nclass NodeAuthError extends AuthError {\r\n constructor(errorCode, errorMessage) {\r\n super(errorCode, errorMessage);\r\n this.name = \"NodeAuthError\";\r\n }\r\n /**\r\n * Creates an error thrown if loopback server address is of type string.\r\n */\r\n static createInvalidLoopbackAddressTypeError() {\r\n return new NodeAuthError(NodeAuthErrorMessage.invalidLoopbackAddressType.code, `${NodeAuthErrorMessage.invalidLoopbackAddressType.desc}`);\r\n }\r\n /**\r\n * Creates an error thrown if the loopback server is unable to get a url.\r\n */\r\n static createUnableToLoadRedirectUrlError() {\r\n return new NodeAuthError(NodeAuthErrorMessage.unableToLoadRedirectUri.code, `${NodeAuthErrorMessage.unableToLoadRedirectUri.desc}`);\r\n }\r\n /**\r\n * Creates an error thrown if the server response does not contain an auth code.\r\n */\r\n static createNoAuthCodeInResponseError() {\r\n return new NodeAuthError(NodeAuthErrorMessage.noAuthCodeInResponse.code, `${NodeAuthErrorMessage.noAuthCodeInResponse.desc}`);\r\n }\r\n /**\r\n * Creates an error thrown if the loopback server has not been spun up yet.\r\n */\r\n static createNoLoopbackServerExistsError() {\r\n return new NodeAuthError(NodeAuthErrorMessage.noLoopbackServerExists.code, `${NodeAuthErrorMessage.noLoopbackServerExists.desc}`);\r\n }\r\n /**\r\n * Creates an error thrown if a loopback server already exists when attempting to create another one.\r\n */\r\n static createLoopbackServerAlreadyExistsError() {\r\n return new NodeAuthError(NodeAuthErrorMessage.loopbackServerAlreadyExists.code, `${NodeAuthErrorMessage.loopbackServerAlreadyExists.desc}`);\r\n }\r\n /**\r\n * Creates an error thrown if the loopback server times out registering the auth code listener.\r\n */\r\n static createLoopbackServerTimeoutError() {\r\n return new NodeAuthError(NodeAuthErrorMessage.loopbackServerTimeout.code, `${NodeAuthErrorMessage.loopbackServerTimeout.desc}`);\r\n }\r\n /**\r\n * Creates an error thrown when the state is not present.\r\n */\r\n static createStateNotFoundError() {\r\n return new NodeAuthError(NodeAuthErrorMessage.stateNotFoundError.code, NodeAuthErrorMessage.stateNotFoundError.desc);\r\n }\r\n /**\r\n * Creates an error thrown when client certificate was provided, but neither the SHA-1 or SHA-256 thumbprints were provided\r\n */\r\n static createThumbprintMissingError() {\r\n return new NodeAuthError(NodeAuthErrorMessage.thumbprintMissing.code, NodeAuthErrorMessage.thumbprintMissing.desc);\r\n }\r\n /**\r\n * Creates an error thrown when redirectUri is provided in an unsupported scenario\r\n */\r\n static createRedirectUriNotSupportedError() {\r\n return new NodeAuthError(NodeAuthErrorMessage.redirectUriNotSupported.code, NodeAuthErrorMessage.redirectUriNotSupported.desc);\r\n }\r\n}\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nconst DEFAULT_AUTH_OPTIONS = {\r\n clientId: Constants$1.EMPTY_STRING,\r\n authority: Constants$1.DEFAULT_AUTHORITY,\r\n clientSecret: Constants$1.EMPTY_STRING,\r\n clientAssertion: Constants$1.EMPTY_STRING,\r\n clientCertificate: {\r\n thumbprint: Constants$1.EMPTY_STRING,\r\n thumbprintSha256: Constants$1.EMPTY_STRING,\r\n privateKey: Constants$1.EMPTY_STRING,\r\n x5c: Constants$1.EMPTY_STRING,\r\n },\r\n knownAuthorities: [],\r\n cloudDiscoveryMetadata: Constants$1.EMPTY_STRING,\r\n authorityMetadata: Constants$1.EMPTY_STRING,\r\n clientCapabilities: [],\r\n protocolMode: ProtocolMode.AAD,\r\n azureCloudOptions: {\r\n azureCloudInstance: AzureCloudInstance.None,\r\n tenant: Constants$1.EMPTY_STRING,\r\n },\r\n skipAuthorityMetadataCache: false,\r\n encodeExtraQueryParams: false,\r\n};\r\nconst DEFAULT_CACHE_OPTIONS = {\r\n claimsBasedCachingEnabled: false,\r\n};\r\nconst DEFAULT_LOGGER_OPTIONS = {\r\n loggerCallback: () => {\r\n // allow users to not set logger call back\r\n },\r\n piiLoggingEnabled: false,\r\n logLevel: exports.LogLevel.Info,\r\n};\r\nconst DEFAULT_SYSTEM_OPTIONS = {\r\n loggerOptions: DEFAULT_LOGGER_OPTIONS,\r\n networkClient: new HttpClient(),\r\n proxyUrl: Constants$1.EMPTY_STRING,\r\n customAgentOptions: {},\r\n disableInternalRetries: false,\r\n};\r\nconst DEFAULT_TELEMETRY_OPTIONS = {\r\n application: {\r\n appName: Constants$1.EMPTY_STRING,\r\n appVersion: Constants$1.EMPTY_STRING,\r\n },\r\n};\r\n/**\r\n * Sets the default options when not explicitly configured from app developer\r\n *\r\n * @param auth - Authentication options\r\n * @param cache - Cache options\r\n * @param system - System options\r\n * @param telemetry - Telemetry options\r\n *\r\n * @returns Configuration\r\n * @internal\r\n */\r\nfunction buildAppConfiguration({ auth, broker, cache, system, telemetry, }) {\r\n const systemOptions = {\r\n ...DEFAULT_SYSTEM_OPTIONS,\r\n networkClient: new HttpClient(system?.proxyUrl, system?.customAgentOptions),\r\n loggerOptions: system?.loggerOptions || DEFAULT_LOGGER_OPTIONS,\r\n disableInternalRetries: system?.disableInternalRetries || false,\r\n };\r\n // if client certificate was provided, ensure that at least one of the SHA-1 or SHA-256 thumbprints were provided\r\n if (!!auth.clientCertificate &&\r\n !!!auth.clientCertificate.thumbprint &&\r\n !!!auth.clientCertificate.thumbprintSha256) {\r\n throw NodeAuthError.createStateNotFoundError();\r\n }\r\n return {\r\n auth: { ...DEFAULT_AUTH_OPTIONS, ...auth },\r\n broker: { ...broker },\r\n cache: { ...DEFAULT_CACHE_OPTIONS, ...cache },\r\n system: { ...systemOptions, ...system },\r\n telemetry: { ...DEFAULT_TELEMETRY_OPTIONS, ...telemetry },\r\n };\r\n}\r\nfunction buildManagedIdentityConfiguration({ clientCapabilities, managedIdentityIdParams, system, }) {\r\n const managedIdentityId = new ManagedIdentityId(managedIdentityIdParams);\r\n const loggerOptions = system?.loggerOptions || DEFAULT_LOGGER_OPTIONS;\r\n let networkClient;\r\n // use developer provided network client if passed in\r\n if (system?.networkClient) {\r\n networkClient = system.networkClient;\r\n // otherwise, create a new one\r\n }\r\n else {\r\n networkClient = new HttpClient(system?.proxyUrl, system?.customAgentOptions);\r\n }\r\n return {\r\n clientCapabilities: clientCapabilities || [],\r\n managedIdentityId: managedIdentityId,\r\n system: {\r\n loggerOptions,\r\n networkClient,\r\n },\r\n disableInternalRetries: system?.disableInternalRetries || false,\r\n };\r\n}\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nclass GuidGenerator {\r\n /**\r\n *\r\n * RFC4122: The version 4 UUID is meant for generating UUIDs from truly-random or pseudo-random numbers.\r\n * uuidv4 generates guids from cryprtographically-string random\r\n */\r\n generateGuid() {\r\n return uuid.v4();\r\n }\r\n /**\r\n * verifies if a string is GUID\r\n * @param guid\r\n */\r\n isGuid(guid) {\r\n const regexGuid = /^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i;\r\n return regexGuid.test(guid);\r\n }\r\n}\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nclass EncodingUtils {\r\n /**\r\n * 'utf8': Multibyte encoded Unicode characters. Many web pages and other document formats use UTF-8.\r\n * 'base64': Base64 encoding.\r\n *\r\n * @param str text\r\n */\r\n static base64Encode(str, encoding) {\r\n return Buffer.from(str, encoding).toString(EncodingTypes.BASE64);\r\n }\r\n /**\r\n * encode a URL\r\n * @param str\r\n */\r\n static base64EncodeUrl(str, encoding) {\r\n return EncodingUtils.base64Encode(str, encoding)\r\n .replace(/=/g, Constants$1.EMPTY_STRING)\r\n .replace(/\\+/g, \"-\")\r\n .replace(/\\//g, \"_\");\r\n }\r\n /**\r\n * 'utf8': Multibyte encoded Unicode characters. Many web pages and other document formats use UTF-8.\r\n * 'base64': Base64 encoding.\r\n *\r\n * @param base64Str Base64 encoded text\r\n */\r\n static base64Decode(base64Str) {\r\n return Buffer.from(base64Str, EncodingTypes.BASE64).toString(\"utf8\");\r\n }\r\n /**\r\n * @param base64Str Base64 encoded Url\r\n */\r\n static base64DecodeUrl(base64Str) {\r\n let str = base64Str.replace(/-/g, \"+\").replace(/_/g, \"/\");\r\n while (str.length % 4) {\r\n str += \"=\";\r\n }\r\n return EncodingUtils.base64Decode(str);\r\n }\r\n}\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nclass HashUtils {\r\n /**\r\n * generate 'SHA256' hash\r\n * @param buffer\r\n */\r\n sha256(buffer) {\r\n return crypto.createHash(Hash.SHA256).update(buffer).digest();\r\n }\r\n}\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * https://tools.ietf.org/html/rfc7636#page-8\r\n */\r\nclass PkceGenerator {\r\n constructor() {\r\n this.hashUtils = new HashUtils();\r\n }\r\n /**\r\n * generates the codeVerfier and the challenge from the codeVerfier\r\n * reference: https://tools.ietf.org/html/rfc7636#section-4.1 and https://tools.ietf.org/html/rfc7636#section-4.2\r\n */\r\n async generatePkceCodes() {\r\n const verifier = this.generateCodeVerifier();\r\n const challenge = this.generateCodeChallengeFromVerifier(verifier);\r\n return { verifier, challenge };\r\n }\r\n /**\r\n * generates the codeVerfier; reference: https://tools.ietf.org/html/rfc7636#section-4.1\r\n */\r\n generateCodeVerifier() {\r\n const charArr = [];\r\n const maxNumber = 256 - (256 % CharSet.CV_CHARSET.length);\r\n while (charArr.length <= RANDOM_OCTET_SIZE) {\r\n const byte = crypto.randomBytes(1)[0];\r\n if (byte >= maxNumber) {\r\n /*\r\n * Ignore this number to maintain randomness.\r\n * Including it would result in an unequal distribution of characters after doing the modulo\r\n */\r\n continue;\r\n }\r\n const index = byte % CharSet.CV_CHARSET.length;\r\n charArr.push(CharSet.CV_CHARSET[index]);\r\n }\r\n const verifier = charArr.join(Constants$1.EMPTY_STRING);\r\n return EncodingUtils.base64EncodeUrl(verifier);\r\n }\r\n /**\r\n * generate the challenge from the codeVerfier; reference: https://tools.ietf.org/html/rfc7636#section-4.2\r\n * @param codeVerifier\r\n */\r\n generateCodeChallengeFromVerifier(codeVerifier) {\r\n return EncodingUtils.base64EncodeUrl(this.hashUtils.sha256(codeVerifier).toString(EncodingTypes.BASE64), EncodingTypes.BASE64);\r\n }\r\n}\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * This class implements MSAL node's crypto interface, which allows it to perform base64 encoding and decoding, generating cryptographically random GUIDs and\r\n * implementing Proof Key for Code Exchange specs for the OAuth Authorization Code Flow using PKCE (rfc here: https://tools.ietf.org/html/rfc7636).\r\n * @public\r\n */\r\nclass CryptoProvider {\r\n constructor() {\r\n // Browser crypto needs to be validated first before any other classes can be set.\r\n this.pkceGenerator = new PkceGenerator();\r\n this.guidGenerator = new GuidGenerator();\r\n this.hashUtils = new HashUtils();\r\n }\r\n /**\r\n * base64 URL safe encoded string\r\n */\r\n base64UrlEncode() {\r\n throw new Error(\"Method not implemented.\");\r\n }\r\n /**\r\n * Stringifies and base64Url encodes input public key\r\n * @param inputKid - public key id\r\n * @returns Base64Url encoded public key\r\n */\r\n encodeKid() {\r\n throw new Error(\"Method not implemented.\");\r\n }\r\n /**\r\n * Creates a new random GUID - used to populate state and nonce.\r\n * @returns string (GUID)\r\n */\r\n createNewGuid() {\r\n return this.guidGenerator.generateGuid();\r\n }\r\n /**\r\n * Encodes input string to base64.\r\n * @param input - string to be encoded\r\n */\r\n base64Encode(input) {\r\n return EncodingUtils.base64Encode(input);\r\n }\r\n /**\r\n * Decodes input string from base64.\r\n * @param input - string to be decoded\r\n */\r\n base64Decode(input) {\r\n return EncodingUtils.base64Decode(input);\r\n }\r\n /**\r\n * Generates PKCE codes used in Authorization Code Flow.\r\n */\r\n generatePkceCodes() {\r\n return this.pkceGenerator.generatePkceCodes();\r\n }\r\n /**\r\n * Generates a keypair, stores it and returns a thumbprint - not yet implemented for node\r\n */\r\n getPublicKeyThumbprint() {\r\n throw new Error(\"Method not implemented.\");\r\n }\r\n /**\r\n * Removes cryptographic keypair from key store matching the keyId passed in\r\n * @param kid - public key id\r\n */\r\n removeTokenBindingKey() {\r\n throw new Error(\"Method not implemented.\");\r\n }\r\n /**\r\n * Removes all cryptographic keys from Keystore\r\n */\r\n clearKeystore() {\r\n throw new Error(\"Method not implemented.\");\r\n }\r\n /**\r\n * Signs the given object as a jwt payload with private key retrieved by given kid - currently not implemented for node\r\n */\r\n signJwt() {\r\n throw new Error(\"Method not implemented.\");\r\n }\r\n /**\r\n * Returns the SHA-256 hash of an input string\r\n */\r\n async hashString(plainText) {\r\n return EncodingUtils.base64EncodeUrl(this.hashUtils.sha256(plainText).toString(EncodingTypes.BASE64), EncodingTypes.BASE64);\r\n }\r\n}\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nfunction generateCredentialKey(credential) {\r\n const familyId = (credential.credentialType === CredentialType.REFRESH_TOKEN &&\r\n credential.familyId) ||\r\n credential.clientId;\r\n const scheme = credential.tokenType &&\r\n credential.tokenType.toLowerCase() !==\r\n AuthenticationScheme.BEARER.toLowerCase()\r\n ? credential.tokenType.toLowerCase()\r\n : \"\";\r\n const credentialKey = [\r\n credential.homeAccountId,\r\n credential.environment,\r\n credential.credentialType,\r\n familyId,\r\n credential.realm || \"\",\r\n credential.target || \"\",\r\n credential.requestedClaimsHash || \"\",\r\n scheme,\r\n ];\r\n return credentialKey.join(CACHE.KEY_SEPARATOR).toLowerCase();\r\n}\r\nfunction generateAccountKey(account) {\r\n const homeTenantId = account.homeAccountId.split(\".\")[1];\r\n const accountKey = [\r\n account.homeAccountId,\r\n account.environment,\r\n homeTenantId || account.tenantId || \"\",\r\n ];\r\n return accountKey.join(CACHE.KEY_SEPARATOR).toLowerCase();\r\n}\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * This class implements Storage for node, reading cache from user specified storage location or an extension library\r\n * @public\r\n */\r\nclass NodeStorage extends CacheManager {\r\n constructor(logger, clientId, cryptoImpl, staticAuthorityOptions) {\r\n super(clientId, cryptoImpl, logger, new msalCommon.StubPerformanceClient(), staticAuthorityOptions);\r\n this.cache = {};\r\n this.changeEmitters = [];\r\n this.logger = logger;\r\n }\r\n /**\r\n * Queue up callbacks\r\n * @param func - a callback function for cache change indication\r\n */\r\n registerChangeEmitter(func) {\r\n this.changeEmitters.push(func);\r\n }\r\n /**\r\n * Invoke the callback when cache changes\r\n */\r\n emitChange() {\r\n this.changeEmitters.forEach((func) => func.call(null));\r\n }\r\n /**\r\n * Converts cacheKVStore to InMemoryCache\r\n * @param cache - key value store\r\n */\r\n cacheToInMemoryCache(cache) {\r\n const inMemoryCache = {\r\n accounts: {},\r\n idTokens: {},\r\n accessTokens: {},\r\n refreshTokens: {},\r\n appMetadata: {},\r\n };\r\n for (const key in cache) {\r\n const value = cache[key];\r\n if (typeof value !== \"object\") {\r\n continue;\r\n }\r\n if (value instanceof AccountEntity) {\r\n inMemoryCache.accounts[key] = value;\r\n }\r\n else if (isIdTokenEntity(value)) {\r\n inMemoryCache.idTokens[key] = value;\r\n }\r\n else if (isAccessTokenEntity(value)) {\r\n inMemoryCache.accessTokens[key] = value;\r\n }\r\n else if (isRefreshTokenEntity(value)) {\r\n inMemoryCache.refreshTokens[key] = value;\r\n }\r\n else if (isAppMetadataEntity(key, value)) {\r\n inMemoryCache.appMetadata[key] = value;\r\n }\r\n else {\r\n continue;\r\n }\r\n }\r\n return inMemoryCache;\r\n }\r\n /**\r\n * converts inMemoryCache to CacheKVStore\r\n * @param inMemoryCache - kvstore map for inmemory\r\n */\r\n inMemoryCacheToCache(inMemoryCache) {\r\n // convert in memory cache to a flat Key-Value map\r\n let cache = this.getCache();\r\n cache = {\r\n ...cache,\r\n ...inMemoryCache.accounts,\r\n ...inMemoryCache.idTokens,\r\n ...inMemoryCache.accessTokens,\r\n ...inMemoryCache.refreshTokens,\r\n ...inMemoryCache.appMetadata,\r\n };\r\n // convert in memory cache to a flat Key-Value map\r\n return cache;\r\n }\r\n /**\r\n * gets the current in memory cache for the client\r\n */\r\n getInMemoryCache() {\r\n this.logger.trace(\"Getting in-memory cache\");\r\n // convert the cache key value store to inMemoryCache\r\n const inMemoryCache = this.cacheToInMemoryCache(this.getCache());\r\n return inMemoryCache;\r\n }\r\n /**\r\n * sets the current in memory cache for the client\r\n * @param inMemoryCache - key value map in memory\r\n */\r\n setInMemoryCache(inMemoryCache) {\r\n this.logger.trace(\"Setting in-memory cache\");\r\n // convert and append the inMemoryCache to cacheKVStore\r\n const cache = this.inMemoryCacheToCache(inMemoryCache);\r\n this.setCache(cache);\r\n this.emitChange();\r\n }\r\n /**\r\n * get the current cache key-value store\r\n */\r\n getCache() {\r\n this.logger.trace(\"Getting cache key-value store\");\r\n return this.cache;\r\n }\r\n /**\r\n * sets the current cache (key value store)\r\n * @param cacheMap - key value map\r\n */\r\n setCache(cache) {\r\n this.logger.trace(\"Setting cache key value store\");\r\n this.cache = cache;\r\n // mark change in cache\r\n this.emitChange();\r\n }\r\n /**\r\n * Gets cache item with given key.\r\n * @param key - lookup key for the cache entry\r\n */\r\n getItem(key) {\r\n this.logger.tracePii(`Item key: ${key}`);\r\n // read cache\r\n const cache = this.getCache();\r\n return cache[key];\r\n }\r\n /**\r\n * Gets cache item with given key-value\r\n * @param key - lookup key for the cache entry\r\n * @param value - value of the cache entry\r\n */\r\n setItem(key, value) {\r\n this.logger.tracePii(`Item key: ${key}`);\r\n // read cache\r\n const cache = this.getCache();\r\n cache[key] = value;\r\n // write to cache\r\n this.setCache(cache);\r\n }\r\n generateCredentialKey(credential) {\r\n return generateCredentialKey(credential);\r\n }\r\n generateAccountKey(account) {\r\n return generateAccountKey(account);\r\n }\r\n getAccountKeys() {\r\n const inMemoryCache = this.getInMemoryCache();\r\n const accountKeys = Object.keys(inMemoryCache.accounts);\r\n return accountKeys;\r\n }\r\n getTokenKeys() {\r\n const inMemoryCache = this.getInMemoryCache();\r\n const tokenKeys = {\r\n idToken: Object.keys(inMemoryCache.idTokens),\r\n accessToken: Object.keys(inMemoryCache.accessTokens),\r\n refreshToken: Object.keys(inMemoryCache.refreshTokens),\r\n };\r\n return tokenKeys;\r\n }\r\n /**\r\n * Reads account from cache, builds it into an account entity and returns it.\r\n * @param accountKey - lookup key to fetch cache type AccountEntity\r\n * @returns\r\n */\r\n getAccount(accountKey) {\r\n const cachedAccount = this.getItem(accountKey);\r\n return cachedAccount\r\n ? Object.assign(new AccountEntity(), this.getItem(accountKey))\r\n : null;\r\n }\r\n /**\r\n * set account entity\r\n * @param account - cache value to be set of type AccountEntity\r\n */\r\n async setAccount(account) {\r\n const accountKey = this.generateAccountKey(AccountEntity.getAccountInfo(account));\r\n this.setItem(accountKey, account);\r\n }\r\n /**\r\n * fetch the idToken credential\r\n * @param idTokenKey - lookup key to fetch cache type IdTokenEntity\r\n */\r\n getIdTokenCredential(idTokenKey) {\r\n const idToken = this.getItem(idTokenKey);\r\n if (isIdTokenEntity(idToken)) {\r\n return idToken;\r\n }\r\n return null;\r\n }\r\n /**\r\n * set idToken credential\r\n * @param idToken - cache value to be set of type IdTokenEntity\r\n */\r\n async setIdTokenCredential(idToken) {\r\n const idTokenKey = this.generateCredentialKey(idToken);\r\n this.setItem(idTokenKey, idToken);\r\n }\r\n /**\r\n * fetch the accessToken credential\r\n * @param accessTokenKey - lookup key to fetch cache type AccessTokenEntity\r\n */\r\n getAccessTokenCredential(accessTokenKey) {\r\n const accessToken = this.getItem(accessTokenKey);\r\n if (isAccessTokenEntity(accessToken)) {\r\n return accessToken;\r\n }\r\n return null;\r\n }\r\n /**\r\n * set accessToken credential\r\n * @param accessToken - cache value to be set of type AccessTokenEntity\r\n */\r\n async setAccessTokenCredential(accessToken) {\r\n const accessTokenKey = this.generateCredentialKey(accessToken);\r\n this.setItem(accessTokenKey, accessToken);\r\n }\r\n /**\r\n * fetch the refreshToken credential\r\n * @param refreshTokenKey - lookup key to fetch cache type RefreshTokenEntity\r\n */\r\n getRefreshTokenCredential(refreshTokenKey) {\r\n const refreshToken = this.getItem(refreshTokenKey);\r\n if (isRefreshTokenEntity(refreshToken)) {\r\n return refreshToken;\r\n }\r\n return null;\r\n }\r\n /**\r\n * set refreshToken credential\r\n * @param refreshToken - cache value to be set of type RefreshTokenEntity\r\n */\r\n async setRefreshTokenCredential(refreshToken) {\r\n const refreshTokenKey = this.generateCredentialKey(refreshToken);\r\n this.setItem(refreshTokenKey, refreshToken);\r\n }\r\n /**\r\n * fetch appMetadata entity from the platform cache\r\n * @param appMetadataKey - lookup key to fetch cache type AppMetadataEntity\r\n */\r\n getAppMetadata(appMetadataKey) {\r\n const appMetadata = this.getItem(appMetadataKey);\r\n if (isAppMetadataEntity(appMetadataKey, appMetadata)) {\r\n return appMetadata;\r\n }\r\n return null;\r\n }\r\n /**\r\n * set appMetadata entity to the platform cache\r\n * @param appMetadata - cache value to be set of type AppMetadataEntity\r\n */\r\n setAppMetadata(appMetadata) {\r\n const appMetadataKey = generateAppMetadataKey(appMetadata);\r\n this.setItem(appMetadataKey, appMetadata);\r\n }\r\n /**\r\n * fetch server telemetry entity from the platform cache\r\n * @param serverTelemetrykey - lookup key to fetch cache type ServerTelemetryEntity\r\n */\r\n getServerTelemetry(serverTelemetrykey) {\r\n const serverTelemetryEntity = this.getItem(serverTelemetrykey);\r\n if (serverTelemetryEntity &&\r\n isServerTelemetryEntity(serverTelemetrykey, serverTelemetryEntity)) {\r\n return serverTelemetryEntity;\r\n }\r\n return null;\r\n }\r\n /**\r\n * set server telemetry entity to the platform cache\r\n * @param serverTelemetryKey - lookup key to fetch cache type ServerTelemetryEntity\r\n * @param serverTelemetry - cache value to be set of type ServerTelemetryEntity\r\n */\r\n setServerTelemetry(serverTelemetryKey, serverTelemetry) {\r\n this.setItem(serverTelemetryKey, serverTelemetry);\r\n }\r\n /**\r\n * fetch authority metadata entity from the platform cache\r\n * @param key - lookup key to fetch cache type AuthorityMetadataEntity\r\n */\r\n getAuthorityMetadata(key) {\r\n const authorityMetadataEntity = this.getItem(key);\r\n if (authorityMetadataEntity &&\r\n isAuthorityMetadataEntity(key, authorityMetadataEntity)) {\r\n return authorityMetadataEntity;\r\n }\r\n return null;\r\n }\r\n /**\r\n * Get all authority metadata keys\r\n */\r\n getAuthorityMetadataKeys() {\r\n return this.getKeys().filter((key) => {\r\n return this.isAuthorityMetadata(key);\r\n });\r\n }\r\n /**\r\n * set authority metadata entity to the platform cache\r\n * @param key - lookup key to fetch cache type AuthorityMetadataEntity\r\n * @param metadata - cache value to be set of type AuthorityMetadataEntity\r\n */\r\n setAuthorityMetadata(key, metadata) {\r\n this.setItem(key, metadata);\r\n }\r\n /**\r\n * fetch throttling entity from the platform cache\r\n * @param throttlingCacheKey - lookup key to fetch cache type ThrottlingEntity\r\n */\r\n getThrottlingCache(throttlingCacheKey) {\r\n const throttlingCache = this.getItem(throttlingCacheKey);\r\n if (throttlingCache &&\r\n isThrottlingEntity(throttlingCacheKey, throttlingCache)) {\r\n return throttlingCache;\r\n }\r\n return null;\r\n }\r\n /**\r\n * set throttling entity to the platform cache\r\n * @param throttlingCacheKey - lookup key to fetch cache type ThrottlingEntity\r\n * @param throttlingCache - cache value to be set of type ThrottlingEntity\r\n */\r\n setThrottlingCache(throttlingCacheKey, throttlingCache) {\r\n this.setItem(throttlingCacheKey, throttlingCache);\r\n }\r\n /**\r\n * Removes the cache item from memory with the given key.\r\n * @param key - lookup key to remove a cache entity\r\n * @param inMemory - key value map of the cache\r\n */\r\n removeItem(key) {\r\n this.logger.tracePii(`Item key: ${key}`);\r\n // read inMemoryCache\r\n let result = false;\r\n const cache = this.getCache();\r\n if (!!cache[key]) {\r\n delete cache[key];\r\n result = true;\r\n }\r\n // write to the cache after removal\r\n if (result) {\r\n this.setCache(cache);\r\n this.emitChange();\r\n }\r\n return result;\r\n }\r\n /**\r\n * Remove account entity from the platform cache if it's outdated\r\n * @param accountKey - lookup key to fetch cache type AccountEntity\r\n */\r\n removeOutdatedAccount(accountKey) {\r\n this.removeItem(accountKey);\r\n }\r\n /**\r\n * Checks whether key is in cache.\r\n * @param key - look up key for a cache entity\r\n */\r\n containsKey(key) {\r\n return this.getKeys().includes(key);\r\n }\r\n /**\r\n * Gets all keys in window.\r\n */\r\n getKeys() {\r\n this.logger.trace(\"Retrieving all cache keys\");\r\n // read cache\r\n const cache = this.getCache();\r\n return [...Object.keys(cache)];\r\n }\r\n /**\r\n * Clears all cache entries created by MSAL (except tokens).\r\n */\r\n clear() {\r\n this.logger.trace(\"Clearing cache entries created by MSAL\");\r\n // read inMemoryCache\r\n const cacheKeys = this.getKeys();\r\n // delete each element\r\n cacheKeys.forEach((key) => {\r\n this.removeItem(key);\r\n });\r\n this.emitChange();\r\n }\r\n /**\r\n * Initialize in memory cache from an exisiting cache vault\r\n * @param cache - blob formatted cache (JSON)\r\n */\r\n static generateInMemoryCache(cache) {\r\n return Deserializer.deserializeAllCache(Deserializer.deserializeJSONBlob(cache));\r\n }\r\n /**\r\n * retrieves the final JSON\r\n * @param inMemoryCache - itemised cache read from the JSON\r\n */\r\n static generateJsonCache(inMemoryCache) {\r\n return Serializer.serializeAllCache(inMemoryCache);\r\n }\r\n /**\r\n * Updates a credential's cache key if the current cache key is outdated\r\n */\r\n updateCredentialCacheKey(currentCacheKey, credential) {\r\n const updatedCacheKey = this.generateCredentialKey(credential);\r\n if (currentCacheKey !== updatedCacheKey) {\r\n const cacheItem = this.getItem(currentCacheKey);\r\n if (cacheItem) {\r\n this.removeItem(currentCacheKey);\r\n this.setItem(updatedCacheKey, cacheItem);\r\n this.logger.verbose(`Updated an outdated ${credential.credentialType} cache key`);\r\n return updatedCacheKey;\r\n }\r\n else {\r\n this.logger.error(`Attempted to update an outdated ${credential.credentialType} cache key but no item matching the outdated key was found in storage`);\r\n }\r\n }\r\n return currentCacheKey;\r\n }\r\n}\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nconst defaultSerializedCache = {\r\n Account: {},\r\n IdToken: {},\r\n AccessToken: {},\r\n RefreshToken: {},\r\n AppMetadata: {},\r\n};\r\n/**\r\n * In-memory token cache manager\r\n * @public\r\n */\r\nclass TokenCache {\r\n constructor(storage, logger, cachePlugin) {\r\n this.cacheHasChanged = false;\r\n this.storage = storage;\r\n this.storage.registerChangeEmitter(this.handleChangeEvent.bind(this));\r\n if (cachePlugin) {\r\n this.persistence = cachePlugin;\r\n }\r\n this.logger = logger;\r\n }\r\n /**\r\n * Set to true if cache state has changed since last time serialize or writeToPersistence was called\r\n */\r\n hasChanged() {\r\n return this.cacheHasChanged;\r\n }\r\n /**\r\n * Serializes in memory cache to JSON\r\n */\r\n serialize() {\r\n this.logger.trace(\"Serializing in-memory cache\");\r\n let finalState = Serializer.serializeAllCache(this.storage.getInMemoryCache());\r\n // if cacheSnapshot not null or empty, merge\r\n if (this.cacheSnapshot) {\r\n this.logger.trace(\"Reading cache snapshot from disk\");\r\n finalState = this.mergeState(JSON.parse(this.cacheSnapshot), finalState);\r\n }\r\n else {\r\n this.logger.trace(\"No cache snapshot to merge\");\r\n }\r\n this.cacheHasChanged = false;\r\n return JSON.stringify(finalState);\r\n }\r\n /**\r\n * Deserializes JSON to in-memory cache. JSON should be in MSAL cache schema format\r\n * @param cache - blob formatted cache\r\n */\r\n deserialize(cache) {\r\n this.logger.trace(\"Deserializing JSON to in-memory cache\");\r\n this.cacheSnapshot = cache;\r\n if (this.cacheSnapshot) {\r\n this.logger.trace(\"Reading cache snapshot from disk\");\r\n const deserializedCache = Deserializer.deserializeAllCache(this.overlayDefaults(JSON.parse(this.cacheSnapshot)));\r\n this.storage.setInMemoryCache(deserializedCache);\r\n }\r\n else {\r\n this.logger.trace(\"No cache snapshot to deserialize\");\r\n }\r\n }\r\n /**\r\n * Fetches the cache key-value map\r\n */\r\n getKVStore() {\r\n return this.storage.getCache();\r\n }\r\n /**\r\n * Gets cache snapshot in CacheKVStore format\r\n */\r\n getCacheSnapshot() {\r\n const deserializedPersistentStorage = NodeStorage.generateInMemoryCache(this.cacheSnapshot);\r\n return this.storage.inMemoryCacheToCache(deserializedPersistentStorage);\r\n }\r\n /**\r\n * API that retrieves all accounts currently in cache to the user\r\n */\r\n async getAllAccounts(correlationId = new CryptoProvider().createNewGuid()) {\r\n this.logger.trace(\"getAllAccounts called\");\r\n let cacheContext;\r\n try {\r\n if (this.persistence) {\r\n cacheContext = new TokenCacheContext(this, false);\r\n await this.persistence.beforeCacheAccess(cacheContext);\r\n }\r\n return this.storage.getAllAccounts({}, correlationId);\r\n }\r\n finally {\r\n if (this.persistence && cacheContext) {\r\n await this.persistence.afterCacheAccess(cacheContext);\r\n }\r\n }\r\n }\r\n /**\r\n * Returns the signed in account matching homeAccountId.\r\n * (the account object is created at the time of successful login)\r\n * or null when no matching account is found\r\n * @param homeAccountId - unique identifier for an account (uid.utid)\r\n */\r\n async getAccountByHomeId(homeAccountId) {\r\n const allAccounts = await this.getAllAccounts();\r\n if (homeAccountId && allAccounts && allAccounts.length) {\r\n return (allAccounts.filter((accountObj) => accountObj.homeAccountId === homeAccountId)[0] || null);\r\n }\r\n else {\r\n return null;\r\n }\r\n }\r\n /**\r\n * Returns the signed in account matching localAccountId.\r\n * (the account object is created at the time of successful login)\r\n * or null when no matching account is found\r\n * @param localAccountId - unique identifier of an account (sub/obj when homeAccountId cannot be populated)\r\n */\r\n async getAccountByLocalId(localAccountId) {\r\n const allAccounts = await this.getAllAccounts();\r\n if (localAccountId && allAccounts && allAccounts.length) {\r\n return (allAccounts.filter((accountObj) => accountObj.localAccountId === localAccountId)[0] || null);\r\n }\r\n else {\r\n return null;\r\n }\r\n }\r\n /**\r\n * API to remove a specific account and the relevant data from cache\r\n * @param account - AccountInfo passed by the user\r\n */\r\n async removeAccount(account, correlationId) {\r\n this.logger.trace(\"removeAccount called\");\r\n let cacheContext;\r\n try {\r\n if (this.persistence) {\r\n cacheContext = new TokenCacheContext(this, true);\r\n await this.persistence.beforeCacheAccess(cacheContext);\r\n }\r\n this.storage.removeAccount(account, correlationId || new GuidGenerator().generateGuid());\r\n }\r\n finally {\r\n if (this.persistence && cacheContext) {\r\n await this.persistence.afterCacheAccess(cacheContext);\r\n }\r\n }\r\n }\r\n /**\r\n * Overwrites in-memory cache with persistent cache\r\n */\r\n async overwriteCache() {\r\n if (!this.persistence) {\r\n this.logger.info(\"No persistence layer specified, cache cannot be overwritten\");\r\n return;\r\n }\r\n this.logger.info(\"Overwriting in-memory cache with persistent cache\");\r\n this.storage.clear();\r\n const cacheContext = new TokenCacheContext(this, false);\r\n await this.persistence.beforeCacheAccess(cacheContext);\r\n const cacheSnapshot = this.getCacheSnapshot();\r\n this.storage.setCache(cacheSnapshot);\r\n await this.persistence.afterCacheAccess(cacheContext);\r\n }\r\n /**\r\n * Called when the cache has changed state.\r\n */\r\n handleChangeEvent() {\r\n this.cacheHasChanged = true;\r\n }\r\n /**\r\n * Merge in memory cache with the cache snapshot.\r\n * @param oldState - cache before changes\r\n * @param currentState - current cache state in the library\r\n */\r\n mergeState(oldState, currentState) {\r\n this.logger.trace(\"Merging in-memory cache with cache snapshot\");\r\n const stateAfterRemoval = this.mergeRemovals(oldState, currentState);\r\n return this.mergeUpdates(stateAfterRemoval, currentState);\r\n }\r\n /**\r\n * Deep update of oldState based on newState values\r\n * @param oldState - cache before changes\r\n * @param newState - updated cache\r\n */\r\n mergeUpdates(oldState, newState) {\r\n Object.keys(newState).forEach((newKey) => {\r\n const newValue = newState[newKey];\r\n // if oldState does not contain value but newValue does, add it\r\n if (!oldState.hasOwnProperty(newKey)) {\r\n if (newValue !== null) {\r\n oldState[newKey] = newValue;\r\n }\r\n }\r\n else {\r\n // both oldState and newState contain the key, do deep update\r\n const newValueNotNull = newValue !== null;\r\n const newValueIsObject = typeof newValue === \"object\";\r\n const newValueIsNotArray = !Array.isArray(newValue);\r\n const oldStateNotUndefinedOrNull = typeof oldState[newKey] !== \"undefined\" &&\r\n oldState[newKey] !== null;\r\n if (newValueNotNull &&\r\n newValueIsObject &&\r\n newValueIsNotArray &&\r\n oldStateNotUndefinedOrNull) {\r\n this.mergeUpdates(oldState[newKey], newValue);\r\n }\r\n else {\r\n oldState[newKey] = newValue;\r\n }\r\n }\r\n });\r\n return oldState;\r\n }\r\n /**\r\n * Removes entities in oldState that the were removed from newState. If there are any unknown values in root of\r\n * oldState that are not recognized, they are left untouched.\r\n * @param oldState - cache before changes\r\n * @param newState - updated cache\r\n */\r\n mergeRemovals(oldState, newState) {\r\n this.logger.trace(\"Remove updated entries in cache\");\r\n const accounts = oldState.Account\r\n ? this.mergeRemovalsDict(oldState.Account, newState.Account)\r\n : oldState.Account;\r\n const accessTokens = oldState.AccessToken\r\n ? this.mergeRemovalsDict(oldState.AccessToken, newState.AccessToken)\r\n : oldState.AccessToken;\r\n const refreshTokens = oldState.RefreshToken\r\n ? this.mergeRemovalsDict(oldState.RefreshToken, newState.RefreshToken)\r\n : oldState.RefreshToken;\r\n const idTokens = oldState.IdToken\r\n ? this.mergeRemovalsDict(oldState.IdToken, newState.IdToken)\r\n : oldState.IdToken;\r\n const appMetadata = oldState.AppMetadata\r\n ? this.mergeRemovalsDict(oldState.AppMetadata, newState.AppMetadata)\r\n : oldState.AppMetadata;\r\n return {\r\n ...oldState,\r\n Account: accounts,\r\n AccessToken: accessTokens,\r\n RefreshToken: refreshTokens,\r\n IdToken: idTokens,\r\n AppMetadata: appMetadata,\r\n };\r\n }\r\n /**\r\n * Helper to merge new cache with the old one\r\n * @param oldState - cache before changes\r\n * @param newState - updated cache\r\n */\r\n mergeRemovalsDict(oldState, newState) {\r\n const finalState = { ...oldState };\r\n Object.keys(oldState).forEach((oldKey) => {\r\n if (!newState || !newState.hasOwnProperty(oldKey)) {\r\n delete finalState[oldKey];\r\n }\r\n });\r\n return finalState;\r\n }\r\n /**\r\n * Helper to overlay as a part of cache merge\r\n * @param passedInCache - cache read from the blob\r\n */\r\n overlayDefaults(passedInCache) {\r\n this.logger.trace(\"Overlaying input cache with the default cache\");\r\n return {\r\n Account: {\r\n ...defaultSerializedCache.Account,\r\n ...passedInCache.Account,\r\n },\r\n IdToken: {\r\n ...defaultSerializedCache.IdToken,\r\n ...passedInCache.IdToken,\r\n },\r\n AccessToken: {\r\n ...defaultSerializedCache.AccessToken,\r\n ...passedInCache.AccessToken,\r\n },\r\n RefreshToken: {\r\n ...defaultSerializedCache.RefreshToken,\r\n ...passedInCache.RefreshToken,\r\n },\r\n AppMetadata: {\r\n ...defaultSerializedCache.AppMetadata,\r\n ...passedInCache.AppMetadata,\r\n },\r\n };\r\n }\r\n}\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * Client assertion of type jwt-bearer used in confidential client flows\r\n * @public\r\n */\r\nclass ClientAssertion {\r\n /**\r\n * Initialize the ClientAssertion class from the clientAssertion passed by the user\r\n * @param assertion - refer https://tools.ietf.org/html/rfc7521\r\n */\r\n static fromAssertion(assertion) {\r\n const clientAssertion = new ClientAssertion();\r\n clientAssertion.jwt = assertion;\r\n return clientAssertion;\r\n }\r\n /**\r\n * @deprecated Use fromCertificateWithSha256Thumbprint instead, with a SHA-256 thumprint\r\n * Initialize the ClientAssertion class from the certificate passed by the user\r\n * @param thumbprint - identifier of a certificate\r\n * @param privateKey - secret key\r\n * @param publicCertificate - electronic document provided to prove the ownership of the public key\r\n */\r\n static fromCertificate(thumbprint, privateKey, publicCertificate) {\r\n const clientAssertion = new ClientAssertion();\r\n clientAssertion.privateKey = privateKey;\r\n clientAssertion.thumbprint = thumbprint;\r\n clientAssertion.useSha256 = false;\r\n if (publicCertificate) {\r\n clientAssertion.publicCertificate =\r\n this.parseCertificate(publicCertificate);\r\n }\r\n return clientAssertion;\r\n }\r\n /**\r\n * Initialize the ClientAssertion class from the certificate passed by the user\r\n * @param thumbprint - identifier of a certificate\r\n * @param privateKey - secret key\r\n * @param publicCertificate - electronic document provided to prove the ownership of the public key\r\n */\r\n static fromCertificateWithSha256Thumbprint(thumbprint, privateKey, publicCertificate) {\r\n const clientAssertion = new ClientAssertion();\r\n clientAssertion.privateKey = privateKey;\r\n clientAssertion.thumbprint = thumbprint;\r\n clientAssertion.useSha256 = true;\r\n if (publicCertificate) {\r\n clientAssertion.publicCertificate =\r\n this.parseCertificate(publicCertificate);\r\n }\r\n return clientAssertion;\r\n }\r\n /**\r\n * Update JWT for certificate based clientAssertion, if passed by the user, uses it as is\r\n * @param cryptoProvider - library's crypto helper\r\n * @param issuer - iss claim\r\n * @param jwtAudience - aud claim\r\n */\r\n getJwt(cryptoProvider, issuer, jwtAudience) {\r\n // if assertion was created from certificate, check if jwt is expired and create new one.\r\n if (this.privateKey && this.thumbprint) {\r\n if (this.jwt &&\r\n !this.isExpired() &&\r\n issuer === this.issuer &&\r\n jwtAudience === this.jwtAudience) {\r\n return this.jwt;\r\n }\r\n return this.createJwt(cryptoProvider, issuer, jwtAudience);\r\n }\r\n /*\r\n * if assertion was created by caller, then we just append it. It is up to the caller to\r\n * ensure that it contains necessary claims and that it is not expired.\r\n */\r\n if (this.jwt) {\r\n return this.jwt;\r\n }\r\n throw createClientAuthError(invalidAssertion);\r\n }\r\n /**\r\n * JWT format and required claims specified: https://tools.ietf.org/html/rfc7523#section-3\r\n */\r\n createJwt(cryptoProvider, issuer, jwtAudience) {\r\n this.issuer = issuer;\r\n this.jwtAudience = jwtAudience;\r\n const issuedAt = nowSeconds();\r\n this.expirationTime = issuedAt + 600;\r\n const algorithm = this.useSha256\r\n ? JwtConstants.PSS_256\r\n : JwtConstants.RSA_256;\r\n const header = {\r\n alg: algorithm,\r\n };\r\n const thumbprintHeader = this.useSha256\r\n ? JwtConstants.X5T_256\r\n : JwtConstants.X5T;\r\n Object.assign(header, {\r\n [thumbprintHeader]: EncodingUtils.base64EncodeUrl(this.thumbprint, EncodingTypes.HEX),\r\n });\r\n if (this.publicCertificate) {\r\n Object.assign(header, {\r\n [JwtConstants.X5C]: this.publicCertificate,\r\n });\r\n }\r\n const payload = {\r\n [JwtConstants.AUDIENCE]: this.jwtAudience,\r\n [JwtConstants.EXPIRATION_TIME]: this.expirationTime,\r\n [JwtConstants.ISSUER]: this.issuer,\r\n [JwtConstants.SUBJECT]: this.issuer,\r\n [JwtConstants.NOT_BEFORE]: issuedAt,\r\n [JwtConstants.JWT_ID]: cryptoProvider.createNewGuid(),\r\n };\r\n this.jwt = jwt.sign(payload, this.privateKey, { header });\r\n return this.jwt;\r\n }\r\n /**\r\n * Utility API to check expiration\r\n */\r\n isExpired() {\r\n return this.expirationTime < nowSeconds();\r\n }\r\n /**\r\n * Extracts the raw certs from a given certificate string and returns them in an array.\r\n * @param publicCertificate - electronic document provided to prove the ownership of the public key\r\n */\r\n static parseCertificate(publicCertificate) {\r\n /**\r\n * This is regex to identify the certs in a given certificate string.\r\n * We want to look for the contents between the BEGIN and END certificate strings, without the associated newlines.\r\n * The information in parens \"(.+?)\" is the capture group to represent the cert we want isolated.\r\n * \".\" means any string character, \"+\" means match 1 or more times, and \"?\" means the shortest match.\r\n * The \"g\" at the end of the regex means search the string globally, and the \"s\" enables the \".\" to match newlines.\r\n */\r\n const regexToFindCerts = /-----BEGIN CERTIFICATE-----\\r*\\n(.+?)\\r*\\n-----END CERTIFICATE-----/gs;\r\n const certs = [];\r\n let matches;\r\n while ((matches = regexToFindCerts.exec(publicCertificate)) !== null) {\r\n // matches[1] represents the first parens capture group in the regex.\r\n certs.push(matches[1].replace(/\\r*\\n/g, Constants$1.EMPTY_STRING));\r\n }\r\n return certs;\r\n }\r\n}\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * Oauth2.0 Password grant client\r\n * Note: We are only supporting public clients for password grant and for purely testing purposes\r\n * @public\r\n * @deprecated - Use a more secure flow instead\r\n */\r\nclass UsernamePasswordClient extends BaseClient {\r\n constructor(configuration) {\r\n super(configuration);\r\n }\r\n /**\r\n * API to acquire a token by passing the username and password to the service in exchage of credentials\r\n * password_grant\r\n * @param request - CommonUsernamePasswordRequest\r\n */\r\n async acquireToken(request) {\r\n this.logger.info(\"in acquireToken call in username-password client\");\r\n const reqTimestamp = nowSeconds();\r\n const response = await this.executeTokenRequest(this.authority, request);\r\n const responseHandler = new ResponseHandler(this.config.authOptions.clientId, this.cacheManager, this.cryptoUtils, this.logger, this.config.serializableCache, this.config.persistencePlugin);\r\n // Validate response. This function throws a server error if an error is returned by the server.\r\n responseHandler.validateTokenResponse(response.body);\r\n const tokenResponse = responseHandler.handleServerTokenResponse(response.body, this.authority, reqTimestamp, request);\r\n return tokenResponse;\r\n }\r\n /**\r\n * Executes POST request to token endpoint\r\n * @param authority - authority object\r\n * @param request - CommonUsernamePasswordRequest provided by the developer\r\n */\r\n async executeTokenRequest(authority, request) {\r\n const queryParametersString = this.createTokenQueryParameters(request);\r\n const endpoint = UrlString.appendQueryString(authority.tokenEndpoint, queryParametersString);\r\n const requestBody = await this.createTokenRequestBody(request);\r\n const headers = this.createTokenRequestHeaders({\r\n credential: request.username,\r\n type: CcsCredentialType.UPN,\r\n });\r\n const thumbprint = {\r\n clientId: this.config.authOptions.clientId,\r\n authority: authority.canonicalAuthority,\r\n scopes: request.scopes,\r\n claims: request.claims,\r\n authenticationScheme: request.authenticationScheme,\r\n resourceRequestMethod: request.resourceRequestMethod,\r\n resourceRequestUri: request.resourceRequestUri,\r\n shrClaims: request.shrClaims,\r\n sshKid: request.sshKid,\r\n };\r\n return this.executePostToTokenEndpoint(endpoint, requestBody, headers, thumbprint, request.correlationId);\r\n }\r\n /**\r\n * Generates a map for all the params to be sent to the service\r\n * @param request - CommonUsernamePasswordRequest provided by the developer\r\n */\r\n async createTokenRequestBody(request) {\r\n const parameters = new Map();\r\n addClientId(parameters, this.config.authOptions.clientId);\r\n addUsername(parameters, request.username);\r\n addPassword(parameters, request.password);\r\n addScopes(parameters, request.scopes);\r\n addResponseType(parameters, OAuthResponseType.IDTOKEN_TOKEN);\r\n addGrantType(parameters, GrantType.RESOURCE_OWNER_PASSWORD_GRANT);\r\n addClientInfo(parameters);\r\n addLibraryInfo(parameters, this.config.libraryInfo);\r\n addApplicationTelemetry(parameters, this.config.telemetry.application);\r\n addThrottling(parameters);\r\n if (this.serverTelemetryManager) {\r\n addServerTelemetry(parameters, this.serverTelemetryManager);\r\n }\r\n const correlationId = request.correlationId ||\r\n this.config.cryptoInterface.createNewGuid();\r\n addCorrelationId(parameters, correlationId);\r\n if (this.config.clientCredentials.clientSecret) {\r\n addClientSecret(parameters, this.config.clientCredentials.clientSecret);\r\n }\r\n const clientAssertion = this.config.clientCredentials.clientAssertion;\r\n if (clientAssertion) {\r\n addClientAssertion(parameters, await getClientAssertion(clientAssertion.assertion, this.config.authOptions.clientId, request.resourceRequestUri));\r\n addClientAssertionType(parameters, clientAssertion.assertionType);\r\n }\r\n if (!StringUtils.isEmptyObj(request.claims) ||\r\n (this.config.authOptions.clientCapabilities &&\r\n this.config.authOptions.clientCapabilities.length > 0)) {\r\n addClaims(parameters, request.claims, this.config.authOptions.clientCapabilities);\r\n }\r\n if (this.config.systemOptions.preventCorsPreflight &&\r\n request.username) {\r\n addCcsUpn(parameters, request.username);\r\n }\r\n return mapToQueryString(parameters);\r\n }\r\n}\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * Constructs the full /authorize URL with request parameters\r\n * @param config\r\n * @param authority\r\n * @param request\r\n * @param logger\r\n * @returns\r\n */\r\nfunction getAuthCodeRequestUrl(config, authority, request, logger) {\r\n const parameters = getStandardAuthorizeRequestParameters({\r\n ...config.auth,\r\n authority: authority,\r\n redirectUri: request.redirectUri || \"\",\r\n }, request, logger);\r\n addLibraryInfo(parameters, {\r\n sku: Constants.MSAL_SKU,\r\n version: version,\r\n cpu: process.arch || \"\",\r\n os: process.platform || \"\",\r\n });\r\n if (config.auth.protocolMode !== ProtocolMode.OIDC) {\r\n addApplicationTelemetry(parameters, config.telemetry.application);\r\n }\r\n addResponseType(parameters, OAuthResponseType.CODE);\r\n if (request.codeChallenge && request.codeChallengeMethod) {\r\n addCodeChallengeParams(parameters, request.codeChallenge, request.codeChallengeMethod);\r\n }\r\n addExtraQueryParameters(parameters, request.extraQueryParameters || {});\r\n return getAuthorizeUrl(authority, parameters, config.auth.encodeExtraQueryParams, request.extraQueryParameters);\r\n}\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * Base abstract class for all ClientApplications - public and confidential\r\n * @public\r\n */\r\nclass ClientApplication {\r\n /**\r\n * Constructor for the ClientApplication\r\n */\r\n constructor(configuration) {\r\n this.config = buildAppConfiguration(configuration);\r\n this.cryptoProvider = new CryptoProvider();\r\n this.logger = new Logger(this.config.system.loggerOptions, name, version);\r\n this.storage = new NodeStorage(this.logger, this.config.auth.clientId, this.cryptoProvider, buildStaticAuthorityOptions(this.config.auth));\r\n this.tokenCache = new TokenCache(this.storage, this.logger, this.config.cache.cachePlugin);\r\n }\r\n /**\r\n * Creates the URL of the authorization request, letting the user input credentials and consent to the\r\n * application. The URL targets the /authorize endpoint of the authority configured in the\r\n * application object.\r\n *\r\n * Once the user inputs their credentials and consents, the authority will send a response to the redirect URI\r\n * sent in the request and should contain an authorization code, which can then be used to acquire tokens via\r\n * `acquireTokenByCode(AuthorizationCodeRequest)`.\r\n */\r\n async getAuthCodeUrl(request) {\r\n this.logger.info(\"getAuthCodeUrl called\", request.correlationId);\r\n const validRequest = {\r\n ...request,\r\n ...(await this.initializeBaseRequest(request)),\r\n responseMode: request.responseMode || ResponseMode.QUERY,\r\n authenticationScheme: AuthenticationScheme.BEARER,\r\n state: request.state || \"\",\r\n nonce: request.nonce || \"\",\r\n };\r\n const discoveredAuthority = await this.createAuthority(validRequest.authority, validRequest.correlationId, undefined, request.azureCloudOptions);\r\n return getAuthCodeRequestUrl(this.config, discoveredAuthority, validRequest, this.logger);\r\n }\r\n /**\r\n * Acquires a token by exchanging the Authorization Code received from the first step of OAuth2.0\r\n * Authorization Code flow.\r\n *\r\n * `getAuthCodeUrl(AuthorizationCodeUrlRequest)` can be used to create the URL for the first step of OAuth2.0\r\n * Authorization Code flow. Ensure that values for redirectUri and scopes in AuthorizationCodeUrlRequest and\r\n * AuthorizationCodeRequest are the same.\r\n */\r\n async acquireTokenByCode(request, authCodePayLoad) {\r\n this.logger.info(\"acquireTokenByCode called\");\r\n if (request.state && authCodePayLoad) {\r\n this.logger.info(\"acquireTokenByCode - validating state\");\r\n this.validateState(request.state, authCodePayLoad.state || \"\");\r\n // eslint-disable-next-line no-param-reassign\r\n authCodePayLoad = { ...authCodePayLoad, state: \"\" };\r\n }\r\n const validRequest = {\r\n ...request,\r\n ...(await this.initializeBaseRequest(request)),\r\n authenticationScheme: AuthenticationScheme.BEARER,\r\n };\r\n const serverTelemetryManager = this.initializeServerTelemetryManager(ApiId.acquireTokenByCode, validRequest.correlationId);\r\n try {\r\n const discoveredAuthority = await this.createAuthority(validRequest.authority, validRequest.correlationId, undefined, request.azureCloudOptions);\r\n const authClientConfig = await this.buildOauthClientConfiguration(discoveredAuthority, validRequest.correlationId, validRequest.redirectUri, serverTelemetryManager);\r\n const authorizationCodeClient = new AuthorizationCodeClient(authClientConfig);\r\n this.logger.verbose(\"Auth code client created\", validRequest.correlationId);\r\n return await authorizationCodeClient.acquireToken(validRequest, authCodePayLoad);\r\n }\r\n catch (e) {\r\n if (e instanceof AuthError) {\r\n e.setCorrelationId(validRequest.correlationId);\r\n }\r\n serverTelemetryManager.cacheFailedRequest(e);\r\n throw e;\r\n }\r\n }\r\n /**\r\n * Acquires a token by exchanging the refresh token provided for a new set of tokens.\r\n *\r\n * This API is provided only for scenarios where you would like to migrate from ADAL to MSAL. Otherwise, it is\r\n * recommended that you use `acquireTokenSilent()` for silent scenarios. When using `acquireTokenSilent()`, MSAL will\r\n * handle the caching and refreshing of tokens automatically.\r\n */\r\n async acquireTokenByRefreshToken(request) {\r\n this.logger.info(\"acquireTokenByRefreshToken called\", request.correlationId);\r\n const validRequest = {\r\n ...request,\r\n ...(await this.initializeBaseRequest(request)),\r\n authenticationScheme: AuthenticationScheme.BEARER,\r\n };\r\n const serverTelemetryManager = this.initializeServerTelemetryManager(ApiId.acquireTokenByRefreshToken, validRequest.correlationId);\r\n try {\r\n const discoveredAuthority = await this.createAuthority(validRequest.authority, validRequest.correlationId, undefined, request.azureCloudOptions);\r\n const refreshTokenClientConfig = await this.buildOauthClientConfiguration(discoveredAuthority, validRequest.correlationId, validRequest.redirectUri || \"\", serverTelemetryManager);\r\n const refreshTokenClient = new RefreshTokenClient(refreshTokenClientConfig);\r\n this.logger.verbose(\"Refresh token client created\", validRequest.correlationId);\r\n return await refreshTokenClient.acquireToken(validRequest);\r\n }\r\n catch (e) {\r\n if (e instanceof AuthError) {\r\n e.setCorrelationId(validRequest.correlationId);\r\n }\r\n serverTelemetryManager.cacheFailedRequest(e);\r\n throw e;\r\n }\r\n }\r\n /**\r\n * Acquires a token silently when a user specifies the account the token is requested for.\r\n *\r\n * This API expects the user to provide an account object and looks into the cache to retrieve the token if present.\r\n * There is also an optional \"forceRefresh\" boolean the user can send to bypass the cache for access_token and id_token.\r\n * In case the refresh_token is expired or not found, an error is thrown\r\n * and the guidance is for the user to call any interactive token acquisition API (eg: `acquireTokenByCode()`).\r\n */\r\n async acquireTokenSilent(request) {\r\n const validRequest = {\r\n ...request,\r\n ...(await this.initializeBaseRequest(request)),\r\n forceRefresh: request.forceRefresh || false,\r\n };\r\n const serverTelemetryManager = this.initializeServerTelemetryManager(ApiId.acquireTokenSilent, validRequest.correlationId, validRequest.forceRefresh);\r\n try {\r\n const discoveredAuthority = await this.createAuthority(validRequest.authority, validRequest.correlationId, undefined, request.azureCloudOptions);\r\n const clientConfiguration = await this.buildOauthClientConfiguration(discoveredAuthority, validRequest.correlationId, validRequest.redirectUri || \"\", serverTelemetryManager);\r\n const silentFlowClient = new SilentFlowClient(clientConfiguration);\r\n this.logger.verbose(\"Silent flow client created\", validRequest.correlationId);\r\n try {\r\n // always overwrite the in-memory cache with the persistence cache (if it exists) before a cache lookup\r\n await this.tokenCache.overwriteCache();\r\n return await this.acquireCachedTokenSilent(validRequest, silentFlowClient, clientConfiguration);\r\n }\r\n catch (error) {\r\n if (error instanceof ClientAuthError &&\r\n error.errorCode ===\r\n tokenRefreshRequired) {\r\n const refreshTokenClient = new RefreshTokenClient(clientConfiguration);\r\n return refreshTokenClient.acquireTokenByRefreshToken(validRequest);\r\n }\r\n throw error;\r\n }\r\n }\r\n catch (error) {\r\n if (error instanceof AuthError) {\r\n error.setCorrelationId(validRequest.correlationId);\r\n }\r\n serverTelemetryManager.cacheFailedRequest(error);\r\n throw error;\r\n }\r\n }\r\n async acquireCachedTokenSilent(validRequest, silentFlowClient, clientConfiguration) {\r\n const [authResponse, cacheOutcome] = await silentFlowClient.acquireCachedToken({\r\n ...validRequest,\r\n scopes: validRequest.scopes?.length\r\n ? validRequest.scopes\r\n : [...OIDC_DEFAULT_SCOPES],\r\n });\r\n if (cacheOutcome === CacheOutcome.PROACTIVELY_REFRESHED) {\r\n this.logger.info(\"ClientApplication:acquireCachedTokenSilent - Cached access token's refreshOn property has been exceeded'. It's not expired, but must be refreshed.\");\r\n // refresh the access token in the background\r\n const refreshTokenClient = new RefreshTokenClient(clientConfiguration);\r\n try {\r\n await refreshTokenClient.acquireTokenByRefreshToken(validRequest);\r\n }\r\n catch {\r\n // do nothing, this is running in the background and no action is to be taken upon success or failure\r\n }\r\n }\r\n // return the cached token\r\n return authResponse;\r\n }\r\n /**\r\n * Acquires tokens with password grant by exchanging client applications username and password for credentials\r\n *\r\n * The latest OAuth 2.0 Security Best Current Practice disallows the password grant entirely.\r\n * More details on this recommendation at https://tools.ietf.org/html/draft-ietf-oauth-security-topics-13#section-3.4\r\n * Microsoft's documentation and recommendations are at:\r\n * https://docs.microsoft.com/en-us/azure/active-directory/develop/msal-authentication-flows#usernamepassword\r\n *\r\n * @param request - UsenamePasswordRequest\r\n * @deprecated - Use a more secure flow instead\r\n */\r\n async acquireTokenByUsernamePassword(request) {\r\n this.logger.info(\"acquireTokenByUsernamePassword called\", request.correlationId);\r\n const validRequest = {\r\n ...request,\r\n ...(await this.initializeBaseRequest(request)),\r\n };\r\n const serverTelemetryManager = this.initializeServerTelemetryManager(ApiId.acquireTokenByUsernamePassword, validRequest.correlationId);\r\n try {\r\n const discoveredAuthority = await this.createAuthority(validRequest.authority, validRequest.correlationId, undefined, request.azureCloudOptions);\r\n const usernamePasswordClientConfig = await this.buildOauthClientConfiguration(discoveredAuthority, validRequest.correlationId, \"\", serverTelemetryManager);\r\n const usernamePasswordClient = new UsernamePasswordClient(usernamePasswordClientConfig);\r\n this.logger.verbose(\"Username password client created\", validRequest.correlationId);\r\n return await usernamePasswordClient.acquireToken(validRequest);\r\n }\r\n catch (e) {\r\n if (e instanceof AuthError) {\r\n e.setCorrelationId(validRequest.correlationId);\r\n }\r\n serverTelemetryManager.cacheFailedRequest(e);\r\n throw e;\r\n }\r\n }\r\n /**\r\n * Gets the token cache for the application.\r\n */\r\n getTokenCache() {\r\n this.logger.info(\"getTokenCache called\");\r\n return this.tokenCache;\r\n }\r\n /**\r\n * Validates OIDC state by comparing the user cached state with the state received from the server.\r\n *\r\n * This API is provided for scenarios where you would use OAuth2.0 state parameter to mitigate against\r\n * CSRF attacks.\r\n * For more information about state, visit https://datatracker.ietf.org/doc/html/rfc6819#section-3.6.\r\n * @param state - Unique GUID generated by the user that is cached by the user and sent to the server during the first leg of the flow\r\n * @param cachedState - This string is sent back by the server with the authorization code\r\n */\r\n validateState(state, cachedState) {\r\n if (!state) {\r\n throw NodeAuthError.createStateNotFoundError();\r\n }\r\n if (state !== cachedState) {\r\n throw createClientAuthError(stateMismatch);\r\n }\r\n }\r\n /**\r\n * Returns the logger instance\r\n */\r\n getLogger() {\r\n return this.logger;\r\n }\r\n /**\r\n * Replaces the default logger set in configurations with new Logger with new configurations\r\n * @param logger - Logger instance\r\n */\r\n setLogger(logger) {\r\n this.logger = logger;\r\n }\r\n /**\r\n * Builds the common configuration to be passed to the common component based on the platform configurarion\r\n * @param authority - user passed authority in configuration\r\n * @param serverTelemetryManager - initializes servertelemetry if passed\r\n */\r\n async buildOauthClientConfiguration(discoveredAuthority, requestCorrelationId, redirectUri, serverTelemetryManager) {\r\n this.logger.verbose(\"buildOauthClientConfiguration called\", requestCorrelationId);\r\n this.logger.info(`Building oauth client configuration with the following authority: ${discoveredAuthority.tokenEndpoint}.`, requestCorrelationId);\r\n serverTelemetryManager?.updateRegionDiscoveryMetadata(discoveredAuthority.regionDiscoveryMetadata);\r\n const clientConfiguration = {\r\n authOptions: {\r\n clientId: this.config.auth.clientId,\r\n authority: discoveredAuthority,\r\n clientCapabilities: this.config.auth.clientCapabilities,\r\n redirectUri,\r\n },\r\n loggerOptions: {\r\n logLevel: this.config.system.loggerOptions.logLevel,\r\n loggerCallback: this.config.system.loggerOptions.loggerCallback,\r\n piiLoggingEnabled: this.config.system.loggerOptions.piiLoggingEnabled,\r\n correlationId: requestCorrelationId,\r\n },\r\n cacheOptions: {\r\n claimsBasedCachingEnabled: this.config.cache.claimsBasedCachingEnabled,\r\n },\r\n cryptoInterface: this.cryptoProvider,\r\n networkInterface: this.config.system.networkClient,\r\n storageInterface: this.storage,\r\n serverTelemetryManager: serverTelemetryManager,\r\n clientCredentials: {\r\n clientSecret: this.clientSecret,\r\n clientAssertion: await this.getClientAssertion(discoveredAuthority),\r\n },\r\n libraryInfo: {\r\n sku: Constants.MSAL_SKU,\r\n version: version,\r\n cpu: process.arch || Constants$1.EMPTY_STRING,\r\n os: process.platform || Constants$1.EMPTY_STRING,\r\n },\r\n telemetry: this.config.telemetry,\r\n persistencePlugin: this.config.cache.cachePlugin,\r\n serializableCache: this.tokenCache,\r\n };\r\n return clientConfiguration;\r\n }\r\n async getClientAssertion(authority) {\r\n if (this.developerProvidedClientAssertion) {\r\n this.clientAssertion = ClientAssertion.fromAssertion(await getClientAssertion(this.developerProvidedClientAssertion, this.config.auth.clientId, authority.tokenEndpoint));\r\n }\r\n return (this.clientAssertion && {\r\n assertion: this.clientAssertion.getJwt(this.cryptoProvider, this.config.auth.clientId, authority.tokenEndpoint),\r\n assertionType: Constants.JWT_BEARER_ASSERTION_TYPE,\r\n });\r\n }\r\n /**\r\n * Generates a request with the default scopes & generates a correlationId.\r\n * @param authRequest - BaseAuthRequest for initialization\r\n */\r\n async initializeBaseRequest(authRequest) {\r\n this.logger.verbose(\"initializeRequestScopes called\", authRequest.correlationId);\r\n // Default authenticationScheme to Bearer, log that POP isn't supported yet\r\n if (authRequest.authenticationScheme &&\r\n authRequest.authenticationScheme === AuthenticationScheme.POP) {\r\n this.logger.verbose(\"Authentication Scheme 'pop' is not supported yet, setting Authentication Scheme to 'Bearer' for request\", authRequest.correlationId);\r\n }\r\n authRequest.authenticationScheme = AuthenticationScheme.BEARER;\r\n // Set requested claims hash if claims-based caching is enabled and claims were requested\r\n if (this.config.cache.claimsBasedCachingEnabled &&\r\n authRequest.claims &&\r\n // Checks for empty stringified object \"{}\" which doesn't qualify as requested claims\r\n !StringUtils.isEmptyObj(authRequest.claims)) {\r\n authRequest.requestedClaimsHash =\r\n await this.cryptoProvider.hashString(authRequest.claims);\r\n }\r\n return {\r\n ...authRequest,\r\n scopes: [\r\n ...((authRequest && authRequest.scopes) || []),\r\n ...OIDC_DEFAULT_SCOPES,\r\n ],\r\n correlationId: (authRequest && authRequest.correlationId) ||\r\n this.cryptoProvider.createNewGuid(),\r\n authority: authRequest.authority || this.config.auth.authority,\r\n };\r\n }\r\n /**\r\n * Initializes the server telemetry payload\r\n * @param apiId - Id for a specific request\r\n * @param correlationId - GUID\r\n * @param forceRefresh - boolean to indicate network call\r\n */\r\n initializeServerTelemetryManager(apiId, correlationId, forceRefresh) {\r\n const telemetryPayload = {\r\n clientId: this.config.auth.clientId,\r\n correlationId: correlationId,\r\n apiId: apiId,\r\n forceRefresh: forceRefresh || false,\r\n };\r\n return new ServerTelemetryManager(telemetryPayload, this.storage);\r\n }\r\n /**\r\n * Create authority instance. If authority not passed in request, default to authority set on the application\r\n * object. If no authority set in application object, then default to common authority.\r\n * @param authorityString - authority from user configuration\r\n */\r\n async createAuthority(authorityString, requestCorrelationId, azureRegionConfiguration, azureCloudOptions) {\r\n this.logger.verbose(\"createAuthority called\", requestCorrelationId);\r\n // build authority string based on auth params - azureCloudInstance is prioritized if provided\r\n const authorityUrl = Authority.generateAuthority(authorityString, azureCloudOptions || this.config.auth.azureCloudOptions);\r\n const authorityOptions = {\r\n protocolMode: this.config.auth.protocolMode,\r\n knownAuthorities: this.config.auth.knownAuthorities,\r\n cloudDiscoveryMetadata: this.config.auth.cloudDiscoveryMetadata,\r\n authorityMetadata: this.config.auth.authorityMetadata,\r\n azureRegionConfiguration,\r\n skipAuthorityMetadataCache: this.config.auth.skipAuthorityMetadataCache,\r\n };\r\n return createDiscoveredInstance(authorityUrl, this.config.system.networkClient, this.storage, authorityOptions, this.logger, requestCorrelationId);\r\n }\r\n /**\r\n * Clear the cache\r\n */\r\n clearCache() {\r\n this.storage.clear();\r\n }\r\n}\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nclass LoopbackClient {\r\n /**\r\n * Spins up a loopback server which returns the server response when the localhost redirectUri is hit\r\n * @param successTemplate\r\n * @param errorTemplate\r\n * @returns\r\n */\r\n async listenForAuthCode(successTemplate, errorTemplate) {\r\n if (this.server) {\r\n throw NodeAuthError.createLoopbackServerAlreadyExistsError();\r\n }\r\n return new Promise((resolve, reject) => {\r\n this.server = http.createServer((req, res) => {\r\n const url = req.url;\r\n if (!url) {\r\n res.end(errorTemplate ||\r\n \"Error occurred loading redirectUrl\");\r\n reject(NodeAuthError.createUnableToLoadRedirectUrlError());\r\n return;\r\n }\r\n else if (url === Constants$1.FORWARD_SLASH) {\r\n res.end(successTemplate ||\r\n \"Auth code was successfully acquired. You can close this window now.\");\r\n return;\r\n }\r\n const redirectUri = this.getRedirectUri();\r\n const parsedUrl = new URL(url, redirectUri);\r\n const authCodeResponse = getDeserializedResponse(parsedUrl.search) ||\r\n {};\r\n if (authCodeResponse.code) {\r\n res.writeHead(HttpStatus.REDIRECT, {\r\n location: redirectUri,\r\n }); // Prevent auth code from being saved in the browser history\r\n res.end();\r\n }\r\n if (authCodeResponse.error) {\r\n res.end(errorTemplate ||\r\n `Error occurred: ${authCodeResponse.error}`);\r\n }\r\n resolve(authCodeResponse);\r\n });\r\n this.server.listen(0, \"127.0.0.1\"); // Listen on any available port\r\n });\r\n }\r\n /**\r\n * Get the port that the loopback server is running on\r\n * @returns\r\n */\r\n getRedirectUri() {\r\n if (!this.server || !this.server.listening) {\r\n throw NodeAuthError.createNoLoopbackServerExistsError();\r\n }\r\n const address = this.server.address();\r\n if (!address || typeof address === \"string\" || !address.port) {\r\n this.closeServer();\r\n throw NodeAuthError.createInvalidLoopbackAddressTypeError();\r\n }\r\n const port = address && address.port;\r\n return `${Constants.HTTP_PROTOCOL}${Constants.LOCALHOST}:${port}`;\r\n }\r\n /**\r\n * Close the loopback server\r\n */\r\n closeServer() {\r\n if (this.server) {\r\n // Only stops accepting new connections, server will close once open/idle connections are closed.\r\n this.server.close();\r\n if (typeof this.server.closeAllConnections === \"function\") {\r\n /*\r\n * Close open/idle connections. This API is available in Node versions 18.2 and higher\r\n */\r\n this.server.closeAllConnections();\r\n }\r\n this.server.unref();\r\n this.server = undefined;\r\n }\r\n }\r\n}\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * OAuth2.0 Device code client\r\n * @public\r\n */\r\nclass DeviceCodeClient extends BaseClient {\r\n constructor(configuration) {\r\n super(configuration);\r\n }\r\n /**\r\n * Gets device code from device code endpoint, calls back to with device code response, and\r\n * polls token endpoint to exchange device code for tokens\r\n * @param request - developer provided CommonDeviceCodeRequest\r\n */\r\n async acquireToken(request) {\r\n const deviceCodeResponse = await this.getDeviceCode(request);\r\n request.deviceCodeCallback(deviceCodeResponse);\r\n const reqTimestamp = nowSeconds();\r\n const response = await this.acquireTokenWithDeviceCode(request, deviceCodeResponse);\r\n const responseHandler = new ResponseHandler(this.config.authOptions.clientId, this.cacheManager, this.cryptoUtils, this.logger, this.config.serializableCache, this.config.persistencePlugin);\r\n // Validate response. This function throws a server error if an error is returned by the server.\r\n responseHandler.validateTokenResponse(response);\r\n return responseHandler.handleServerTokenResponse(response, this.authority, reqTimestamp, request);\r\n }\r\n /**\r\n * Creates device code request and executes http GET\r\n * @param request - developer provided CommonDeviceCodeRequest\r\n */\r\n async getDeviceCode(request) {\r\n const queryParametersString = this.createExtraQueryParameters(request);\r\n const endpoint = UrlString.appendQueryString(this.authority.deviceCodeEndpoint, queryParametersString);\r\n const queryString = this.createQueryString(request);\r\n const headers = this.createTokenRequestHeaders();\r\n const thumbprint = {\r\n clientId: this.config.authOptions.clientId,\r\n authority: request.authority,\r\n scopes: request.scopes,\r\n claims: request.claims,\r\n authenticationScheme: request.authenticationScheme,\r\n resourceRequestMethod: request.resourceRequestMethod,\r\n resourceRequestUri: request.resourceRequestUri,\r\n shrClaims: request.shrClaims,\r\n sshKid: request.sshKid,\r\n };\r\n return this.executePostRequestToDeviceCodeEndpoint(endpoint, queryString, headers, thumbprint, request.correlationId);\r\n }\r\n /**\r\n * Creates query string for the device code request\r\n * @param request - developer provided CommonDeviceCodeRequest\r\n */\r\n createExtraQueryParameters(request) {\r\n const parameters = new Map();\r\n if (request.extraQueryParameters) {\r\n addExtraQueryParameters(parameters, request.extraQueryParameters);\r\n }\r\n return mapToQueryString(parameters);\r\n }\r\n /**\r\n * Executes POST request to device code endpoint\r\n * @param deviceCodeEndpoint - token endpoint\r\n * @param queryString - string to be used in the body of the request\r\n * @param headers - headers for the request\r\n * @param thumbprint - unique request thumbprint\r\n * @param correlationId - correlation id to be used in the request\r\n */\r\n async executePostRequestToDeviceCodeEndpoint(deviceCodeEndpoint, queryString, headers, thumbprint, correlationId) {\r\n const { body: { user_code: userCode, device_code: deviceCode, verification_uri: verificationUri, expires_in: expiresIn, interval, message, }, } = await this.sendPostRequest(thumbprint, deviceCodeEndpoint, {\r\n body: queryString,\r\n headers: headers,\r\n }, correlationId);\r\n return {\r\n userCode,\r\n deviceCode,\r\n verificationUri,\r\n expiresIn,\r\n interval,\r\n message,\r\n };\r\n }\r\n /**\r\n * Create device code endpoint query parameters and returns string\r\n * @param request - developer provided CommonDeviceCodeRequest\r\n */\r\n createQueryString(request) {\r\n const parameters = new Map();\r\n addScopes(parameters, request.scopes);\r\n addClientId(parameters, this.config.authOptions.clientId);\r\n if (request.extraQueryParameters) {\r\n addExtraQueryParameters(parameters, request.extraQueryParameters);\r\n }\r\n if (request.claims ||\r\n (this.config.authOptions.clientCapabilities &&\r\n this.config.authOptions.clientCapabilities.length > 0)) {\r\n addClaims(parameters, request.claims, this.config.authOptions.clientCapabilities);\r\n }\r\n return mapToQueryString(parameters);\r\n }\r\n /**\r\n * Breaks the polling with specific conditions\r\n * @param deviceCodeExpirationTime - expiration time for the device code request\r\n * @param userSpecifiedTimeout - developer provided timeout, to be compared against deviceCodeExpirationTime\r\n * @param userSpecifiedCancelFlag - boolean indicating the developer would like to cancel the request\r\n */\r\n continuePolling(deviceCodeExpirationTime, userSpecifiedTimeout, userSpecifiedCancelFlag) {\r\n if (userSpecifiedCancelFlag) {\r\n this.logger.error(\"Token request cancelled by setting DeviceCodeRequest.cancel = true\");\r\n throw createClientAuthError(deviceCodePollingCancelled);\r\n }\r\n else if (userSpecifiedTimeout &&\r\n userSpecifiedTimeout < deviceCodeExpirationTime &&\r\n nowSeconds() > userSpecifiedTimeout) {\r\n this.logger.error(`User defined timeout for device code polling reached. The timeout was set for ${userSpecifiedTimeout}`);\r\n throw createClientAuthError(userTimeoutReached);\r\n }\r\n else if (nowSeconds() > deviceCodeExpirationTime) {\r\n if (userSpecifiedTimeout) {\r\n this.logger.verbose(`User specified timeout ignored as the device code has expired before the timeout elapsed. The user specified timeout was set for ${userSpecifiedTimeout}`);\r\n }\r\n this.logger.error(`Device code expired. Expiration time of device code was ${deviceCodeExpirationTime}`);\r\n throw createClientAuthError(deviceCodeExpired);\r\n }\r\n return true;\r\n }\r\n /**\r\n * Creates token request with device code response and polls token endpoint at interval set by the device code response\r\n * @param request - developer provided CommonDeviceCodeRequest\r\n * @param deviceCodeResponse - DeviceCodeResponse returned by the security token service device code endpoint\r\n */\r\n async acquireTokenWithDeviceCode(request, deviceCodeResponse) {\r\n const queryParametersString = this.createTokenQueryParameters(request);\r\n const endpoint = UrlString.appendQueryString(this.authority.tokenEndpoint, queryParametersString);\r\n const requestBody = this.createTokenRequestBody(request, deviceCodeResponse);\r\n const headers = this.createTokenRequestHeaders();\r\n const userSpecifiedTimeout = request.timeout\r\n ? nowSeconds() + request.timeout\r\n : undefined;\r\n const deviceCodeExpirationTime = nowSeconds() + deviceCodeResponse.expiresIn;\r\n const pollingIntervalMilli = deviceCodeResponse.interval * 1000;\r\n /*\r\n * Poll token endpoint while (device code is not expired AND operation has not been cancelled by\r\n * setting CancellationToken.cancel = true). POST request is sent at interval set by pollingIntervalMilli\r\n */\r\n while (this.continuePolling(deviceCodeExpirationTime, userSpecifiedTimeout, request.cancel)) {\r\n const thumbprint = {\r\n clientId: this.config.authOptions.clientId,\r\n authority: request.authority,\r\n scopes: request.scopes,\r\n claims: request.claims,\r\n authenticationScheme: request.authenticationScheme,\r\n resourceRequestMethod: request.resourceRequestMethod,\r\n resourceRequestUri: request.resourceRequestUri,\r\n shrClaims: request.shrClaims,\r\n sshKid: request.sshKid,\r\n };\r\n const response = await this.executePostToTokenEndpoint(endpoint, requestBody, headers, thumbprint, request.correlationId);\r\n if (response.body && response.body.error) {\r\n // user authorization is pending. Sleep for polling interval and try again\r\n if (response.body.error === Constants$1.AUTHORIZATION_PENDING) {\r\n this.logger.info(\"Authorization pending. Continue polling.\");\r\n await delay(pollingIntervalMilli);\r\n }\r\n else {\r\n // for any other error, throw\r\n this.logger.info(\"Unexpected error in polling from the server\");\r\n throw createAuthError(postRequestFailed, response.body.error);\r\n }\r\n }\r\n else {\r\n this.logger.verbose(\"Authorization completed successfully. Polling stopped.\");\r\n return response.body;\r\n }\r\n }\r\n /*\r\n * The above code should've thrown by this point, but to satisfy TypeScript,\r\n * and in the rare case the conditionals in continuePolling() may not catch everything...\r\n */\r\n this.logger.error(\"Polling stopped for unknown reasons.\");\r\n throw createClientAuthError(deviceCodeUnknownError);\r\n }\r\n /**\r\n * Creates query parameters and converts to string.\r\n * @param request - developer provided CommonDeviceCodeRequest\r\n * @param deviceCodeResponse - DeviceCodeResponse returned by the security token service device code endpoint\r\n */\r\n createTokenRequestBody(request, deviceCodeResponse) {\r\n const parameters = new Map();\r\n addScopes(parameters, request.scopes);\r\n addClientId(parameters, this.config.authOptions.clientId);\r\n addGrantType(parameters, GrantType.DEVICE_CODE_GRANT);\r\n addDeviceCode(parameters, deviceCodeResponse.deviceCode);\r\n const correlationId = request.correlationId ||\r\n this.config.cryptoInterface.createNewGuid();\r\n addCorrelationId(parameters, correlationId);\r\n addClientInfo(parameters);\r\n addLibraryInfo(parameters, this.config.libraryInfo);\r\n addApplicationTelemetry(parameters, this.config.telemetry.application);\r\n addThrottling(parameters);\r\n if (this.serverTelemetryManager) {\r\n addServerTelemetry(parameters, this.serverTelemetryManager);\r\n }\r\n if (!StringUtils.isEmptyObj(request.claims) ||\r\n (this.config.authOptions.clientCapabilities &&\r\n this.config.authOptions.clientCapabilities.length > 0)) {\r\n addClaims(parameters, request.claims, this.config.authOptions.clientCapabilities);\r\n }\r\n return mapToQueryString(parameters);\r\n }\r\n}\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * This class is to be used to acquire tokens for public client applications (desktop, mobile). Public client applications\r\n * are not trusted to safely store application secrets, and therefore can only request tokens in the name of an user.\r\n * @public\r\n */\r\nclass PublicClientApplication extends ClientApplication {\r\n /**\r\n * Important attributes in the Configuration object for auth are:\r\n * - clientID: the application ID of your application. You can obtain one by registering your application with our Application registration portal.\r\n * - authority: the authority URL for your application.\r\n *\r\n * AAD authorities are of the form https://login.microsoftonline.com/\\{Enter_the_Tenant_Info_Here\\}.\r\n * - If your application supports Accounts in one organizational directory, replace \"Enter_the_Tenant_Info_Here\" value with the Tenant Id or Tenant name (for example, contoso.microsoft.com).\r\n * - If your application supports Accounts in any organizational directory, replace \"Enter_the_Tenant_Info_Here\" value with organizations.\r\n * - If your application supports Accounts in any organizational directory and personal Microsoft accounts, replace \"Enter_the_Tenant_Info_Here\" value with common.\r\n * - To restrict support to Personal Microsoft accounts only, replace \"Enter_the_Tenant_Info_Here\" value with consumers.\r\n *\r\n * Azure B2C authorities are of the form https://\\{instance\\}/\\{tenant\\}/\\{policy\\}. Each policy is considered\r\n * its own authority. You will have to set the all of the knownAuthorities at the time of the client application\r\n * construction.\r\n *\r\n * ADFS authorities are of the form https://\\{instance\\}/adfs.\r\n */\r\n constructor(configuration) {\r\n super(configuration);\r\n if (this.config.broker.nativeBrokerPlugin) {\r\n if (this.config.broker.nativeBrokerPlugin.isBrokerAvailable) {\r\n this.nativeBrokerPlugin = this.config.broker.nativeBrokerPlugin;\r\n this.nativeBrokerPlugin.setLogger(this.config.system.loggerOptions);\r\n }\r\n else {\r\n this.logger.warning(\"NativeBroker implementation was provided but the broker is unavailable.\");\r\n }\r\n }\r\n this.skus = ServerTelemetryManager.makeExtraSkuString({\r\n libraryName: Constants.MSAL_SKU,\r\n libraryVersion: version,\r\n });\r\n }\r\n /**\r\n * Acquires a token from the authority using OAuth2.0 device code flow.\r\n * This flow is designed for devices that do not have access to a browser or have input constraints.\r\n * The authorization server issues a DeviceCode object with a verification code, an end-user code,\r\n * and the end-user verification URI. The DeviceCode object is provided through a callback, and the end-user should be\r\n * instructed to use another device to navigate to the verification URI to input credentials.\r\n * Since the client cannot receive incoming requests, it polls the authorization server repeatedly\r\n * until the end-user completes input of credentials.\r\n */\r\n async acquireTokenByDeviceCode(request) {\r\n this.logger.info(\"acquireTokenByDeviceCode called\", request.correlationId);\r\n const validRequest = Object.assign(request, await this.initializeBaseRequest(request));\r\n const serverTelemetryManager = this.initializeServerTelemetryManager(ApiId.acquireTokenByDeviceCode, validRequest.correlationId);\r\n try {\r\n const discoveredAuthority = await this.createAuthority(validRequest.authority, validRequest.correlationId, undefined, request.azureCloudOptions);\r\n const deviceCodeConfig = await this.buildOauthClientConfiguration(discoveredAuthority, validRequest.correlationId, \"\", serverTelemetryManager);\r\n const deviceCodeClient = new DeviceCodeClient(deviceCodeConfig);\r\n this.logger.verbose(\"Device code client created\", validRequest.correlationId);\r\n return await deviceCodeClient.acquireToken(validRequest);\r\n }\r\n catch (e) {\r\n if (e instanceof AuthError) {\r\n e.setCorrelationId(validRequest.correlationId);\r\n }\r\n serverTelemetryManager.cacheFailedRequest(e);\r\n throw e;\r\n }\r\n }\r\n /**\r\n * Acquires a token interactively via the browser by requesting an authorization code then exchanging it for a token.\r\n */\r\n async acquireTokenInteractive(request) {\r\n const correlationId = request.correlationId || this.cryptoProvider.createNewGuid();\r\n this.logger.trace(\"acquireTokenInteractive called\", correlationId);\r\n const { openBrowser, successTemplate, errorTemplate, windowHandle, loopbackClient: customLoopbackClient, ...remainingProperties } = request;\r\n if (this.nativeBrokerPlugin) {\r\n const brokerRequest = {\r\n ...remainingProperties,\r\n clientId: this.config.auth.clientId,\r\n scopes: request.scopes || OIDC_DEFAULT_SCOPES,\r\n redirectUri: request.redirectUri || \"\",\r\n authority: request.authority || this.config.auth.authority,\r\n correlationId: correlationId,\r\n extraParameters: {\r\n ...remainingProperties.extraQueryParameters,\r\n ...remainingProperties.tokenQueryParameters,\r\n [X_CLIENT_EXTRA_SKU]: this.skus,\r\n },\r\n accountId: remainingProperties.account?.nativeAccountId,\r\n };\r\n return this.nativeBrokerPlugin.acquireTokenInteractive(brokerRequest, windowHandle);\r\n }\r\n if (request.redirectUri) {\r\n // If its not a broker fallback scenario, we throw a error\r\n if (!this.config.broker.nativeBrokerPlugin) {\r\n throw NodeAuthError.createRedirectUriNotSupportedError();\r\n }\r\n // If a redirect URI is provided for a broker flow but MSAL runtime startup failed, we fall back to the browser flow and will ignore the redirect URI provided for the broker flow\r\n request.redirectUri = \"\";\r\n }\r\n const { verifier, challenge } = await this.cryptoProvider.generatePkceCodes();\r\n const loopbackClient = customLoopbackClient || new LoopbackClient();\r\n let authCodeResponse = {};\r\n let authCodeListenerError = null;\r\n try {\r\n const authCodeListener = loopbackClient\r\n .listenForAuthCode(successTemplate, errorTemplate)\r\n .then((response) => {\r\n authCodeResponse = response;\r\n })\r\n .catch((e) => {\r\n // Store the promise instead of throwing so we can control when its thrown\r\n authCodeListenerError = e;\r\n });\r\n // Wait for server to be listening\r\n const redirectUri = await this.waitForRedirectUri(loopbackClient);\r\n const validRequest = {\r\n ...remainingProperties,\r\n correlationId: correlationId,\r\n scopes: request.scopes || OIDC_DEFAULT_SCOPES,\r\n redirectUri: redirectUri,\r\n responseMode: ResponseMode.QUERY,\r\n codeChallenge: challenge,\r\n codeChallengeMethod: CodeChallengeMethodValues.S256,\r\n };\r\n const authCodeUrl = await this.getAuthCodeUrl(validRequest);\r\n await openBrowser(authCodeUrl);\r\n await authCodeListener;\r\n if (authCodeListenerError) {\r\n throw authCodeListenerError;\r\n }\r\n if (authCodeResponse.error) {\r\n throw new ServerError(authCodeResponse.error, authCodeResponse.error_description, authCodeResponse.suberror);\r\n }\r\n else if (!authCodeResponse.code) {\r\n throw NodeAuthError.createNoAuthCodeInResponseError();\r\n }\r\n const clientInfo = authCodeResponse.client_info;\r\n const tokenRequest = {\r\n code: authCodeResponse.code,\r\n codeVerifier: verifier,\r\n clientInfo: clientInfo || Constants$1.EMPTY_STRING,\r\n ...validRequest,\r\n };\r\n return await this.acquireTokenByCode(tokenRequest); // Await this so the server doesn't close prematurely\r\n }\r\n finally {\r\n loopbackClient.closeServer();\r\n }\r\n }\r\n /**\r\n * Returns a token retrieved either from the cache or by exchanging the refresh token for a fresh access token. If brokering is enabled the token request will be serviced by the broker.\r\n * @param request - developer provided SilentFlowRequest\r\n * @returns\r\n */\r\n async acquireTokenSilent(request) {\r\n const correlationId = request.correlationId || this.cryptoProvider.createNewGuid();\r\n this.logger.trace(\"acquireTokenSilent called\", correlationId);\r\n if (this.nativeBrokerPlugin) {\r\n const brokerRequest = {\r\n ...request,\r\n clientId: this.config.auth.clientId,\r\n scopes: request.scopes || OIDC_DEFAULT_SCOPES,\r\n redirectUri: request.redirectUri || \"\",\r\n authority: request.authority || this.config.auth.authority,\r\n correlationId: correlationId,\r\n extraParameters: {\r\n ...request.tokenQueryParameters,\r\n [X_CLIENT_EXTRA_SKU]: this.skus,\r\n },\r\n accountId: request.account.nativeAccountId,\r\n forceRefresh: request.forceRefresh || false,\r\n };\r\n return this.nativeBrokerPlugin.acquireTokenSilent(brokerRequest);\r\n }\r\n if (request.redirectUri) {\r\n // If its not a broker fallback scenario, we throw a error\r\n if (!this.config.broker.nativeBrokerPlugin) {\r\n throw NodeAuthError.createRedirectUriNotSupportedError();\r\n }\r\n request.redirectUri = \"\";\r\n }\r\n return super.acquireTokenSilent(request);\r\n }\r\n /**\r\n * Removes cache artifacts associated with the given account\r\n * @param request - developer provided SignOutRequest\r\n * @returns\r\n */\r\n async signOut(request) {\r\n if (this.nativeBrokerPlugin && request.account.nativeAccountId) {\r\n const signoutRequest = {\r\n clientId: this.config.auth.clientId,\r\n accountId: request.account.nativeAccountId,\r\n correlationId: request.correlationId ||\r\n this.cryptoProvider.createNewGuid(),\r\n };\r\n await this.nativeBrokerPlugin.signOut(signoutRequest);\r\n }\r\n await this.getTokenCache().removeAccount(request.account, request.correlationId);\r\n }\r\n /**\r\n * Returns all cached accounts for this application. If brokering is enabled this request will be serviced by the broker.\r\n * @returns\r\n */\r\n async getAllAccounts() {\r\n if (this.nativeBrokerPlugin) {\r\n const correlationId = this.cryptoProvider.createNewGuid();\r\n return this.nativeBrokerPlugin.getAllAccounts(this.config.auth.clientId, correlationId);\r\n }\r\n return this.getTokenCache().getAllAccounts();\r\n }\r\n /**\r\n * Attempts to retrieve the redirectUri from the loopback server. If the loopback server does not start listening for requests within the timeout this will throw.\r\n * @param loopbackClient - developer provided custom loopback server implementation\r\n * @returns\r\n */\r\n async waitForRedirectUri(loopbackClient) {\r\n return new Promise((resolve, reject) => {\r\n let ticks = 0;\r\n const id = setInterval(() => {\r\n if (LOOPBACK_SERVER_CONSTANTS.TIMEOUT_MS /\r\n LOOPBACK_SERVER_CONSTANTS.INTERVAL_MS <\r\n ticks) {\r\n clearInterval(id);\r\n reject(NodeAuthError.createLoopbackServerTimeoutError());\r\n return;\r\n }\r\n try {\r\n const r = loopbackClient.getRedirectUri();\r\n clearInterval(id);\r\n resolve(r);\r\n return;\r\n }\r\n catch (e) {\r\n if (e instanceof AuthError &&\r\n e.errorCode ===\r\n NodeAuthErrorMessage.noLoopbackServerExists.code) {\r\n // Loopback server is not listening yet\r\n ticks++;\r\n return;\r\n }\r\n clearInterval(id);\r\n reject(e);\r\n return;\r\n }\r\n }, LOOPBACK_SERVER_CONSTANTS.INTERVAL_MS);\r\n });\r\n }\r\n}\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * OAuth2.0 client credential grant\r\n * @public\r\n */\r\nclass ClientCredentialClient extends BaseClient {\r\n constructor(configuration, appTokenProvider) {\r\n super(configuration);\r\n this.appTokenProvider = appTokenProvider;\r\n }\r\n /**\r\n * Public API to acquire a token with ClientCredential Flow for Confidential clients\r\n * @param request - CommonClientCredentialRequest provided by the developer\r\n */\r\n async acquireToken(request) {\r\n if (request.skipCache || request.claims) {\r\n return this.executeTokenRequest(request, this.authority);\r\n }\r\n const [cachedAuthenticationResult, lastCacheOutcome] = await this.getCachedAuthenticationResult(request, this.config, this.cryptoUtils, this.authority, this.cacheManager, this.serverTelemetryManager);\r\n if (cachedAuthenticationResult) {\r\n // if the token is not expired but must be refreshed; get a new one in the background\r\n if (lastCacheOutcome === CacheOutcome.PROACTIVELY_REFRESHED) {\r\n this.logger.info(\"ClientCredentialClient:getCachedAuthenticationResult - Cached access token's refreshOn property has been exceeded'. It's not expired, but must be refreshed.\");\r\n // refresh the access token in the background\r\n const refreshAccessToken = true;\r\n await this.executeTokenRequest(request, this.authority, refreshAccessToken);\r\n }\r\n // return the cached token\r\n return cachedAuthenticationResult;\r\n }\r\n else {\r\n return this.executeTokenRequest(request, this.authority);\r\n }\r\n }\r\n /**\r\n * looks up cache if the tokens are cached already\r\n */\r\n async getCachedAuthenticationResult(request, config, cryptoUtils, authority, cacheManager, serverTelemetryManager) {\r\n const clientConfiguration = config;\r\n const managedIdentityConfiguration = config;\r\n let lastCacheOutcome = CacheOutcome.NOT_APPLICABLE;\r\n // read the user-supplied cache into memory, if applicable\r\n let cacheContext;\r\n if (clientConfiguration.serializableCache &&\r\n clientConfiguration.persistencePlugin) {\r\n cacheContext = new TokenCacheContext(clientConfiguration.serializableCache, false);\r\n await clientConfiguration.persistencePlugin.beforeCacheAccess(cacheContext);\r\n }\r\n const cachedAccessToken = this.readAccessTokenFromCache(authority, managedIdentityConfiguration.managedIdentityId?.id ||\r\n clientConfiguration.authOptions.clientId, new ScopeSet(request.scopes || []), cacheManager, request.correlationId);\r\n if (clientConfiguration.serializableCache &&\r\n clientConfiguration.persistencePlugin &&\r\n cacheContext) {\r\n await clientConfiguration.persistencePlugin.afterCacheAccess(cacheContext);\r\n }\r\n // must refresh due to non-existent access_token\r\n if (!cachedAccessToken) {\r\n serverTelemetryManager?.setCacheOutcome(CacheOutcome.NO_CACHED_ACCESS_TOKEN);\r\n return [null, CacheOutcome.NO_CACHED_ACCESS_TOKEN];\r\n }\r\n // must refresh due to the expires_in value\r\n if (isTokenExpired(cachedAccessToken.expiresOn, clientConfiguration.systemOptions?.tokenRenewalOffsetSeconds ||\r\n DEFAULT_TOKEN_RENEWAL_OFFSET_SEC)) {\r\n serverTelemetryManager?.setCacheOutcome(CacheOutcome.CACHED_ACCESS_TOKEN_EXPIRED);\r\n return [null, CacheOutcome.CACHED_ACCESS_TOKEN_EXPIRED];\r\n }\r\n // must refresh (in the background) due to the refresh_in value\r\n if (cachedAccessToken.refreshOn &&\r\n isTokenExpired(cachedAccessToken.refreshOn.toString(), 0)) {\r\n lastCacheOutcome = CacheOutcome.PROACTIVELY_REFRESHED;\r\n serverTelemetryManager?.setCacheOutcome(CacheOutcome.PROACTIVELY_REFRESHED);\r\n }\r\n return [\r\n await ResponseHandler.generateAuthenticationResult(cryptoUtils, authority, {\r\n account: null,\r\n idToken: null,\r\n accessToken: cachedAccessToken,\r\n refreshToken: null,\r\n appMetadata: null,\r\n }, true, request),\r\n lastCacheOutcome,\r\n ];\r\n }\r\n /**\r\n * Reads access token from the cache\r\n */\r\n readAccessTokenFromCache(authority, id, scopeSet, cacheManager, correlationId) {\r\n const accessTokenFilter = {\r\n homeAccountId: Constants$1.EMPTY_STRING,\r\n environment: authority.canonicalAuthorityUrlComponents.HostNameAndPort,\r\n credentialType: CredentialType.ACCESS_TOKEN,\r\n clientId: id,\r\n realm: authority.tenant,\r\n target: ScopeSet.createSearchScopes(scopeSet.asArray()),\r\n };\r\n const accessTokens = cacheManager.getAccessTokensByFilter(accessTokenFilter, correlationId);\r\n if (accessTokens.length < 1) {\r\n return null;\r\n }\r\n else if (accessTokens.length > 1) {\r\n throw createClientAuthError(multipleMatchingTokens);\r\n }\r\n return accessTokens[0];\r\n }\r\n /**\r\n * Makes a network call to request the token from the service\r\n * @param request - CommonClientCredentialRequest provided by the developer\r\n * @param authority - authority object\r\n */\r\n async executeTokenRequest(request, authority, refreshAccessToken) {\r\n let serverTokenResponse;\r\n let reqTimestamp;\r\n if (this.appTokenProvider) {\r\n this.logger.info(\"Using appTokenProvider extensibility.\");\r\n const appTokenPropviderParameters = {\r\n correlationId: request.correlationId,\r\n tenantId: this.config.authOptions.authority.tenant,\r\n scopes: request.scopes,\r\n claims: request.claims,\r\n };\r\n reqTimestamp = nowSeconds();\r\n const appTokenProviderResult = await this.appTokenProvider(appTokenPropviderParameters);\r\n serverTokenResponse = {\r\n access_token: appTokenProviderResult.accessToken,\r\n expires_in: appTokenProviderResult.expiresInSeconds,\r\n refresh_in: appTokenProviderResult.refreshInSeconds,\r\n token_type: AuthenticationScheme.BEARER,\r\n };\r\n }\r\n else {\r\n const queryParametersString = this.createTokenQueryParameters(request);\r\n const endpoint = UrlString.appendQueryString(authority.tokenEndpoint, queryParametersString);\r\n const requestBody = await this.createTokenRequestBody(request);\r\n const headers = this.createTokenRequestHeaders();\r\n const thumbprint = {\r\n clientId: this.config.authOptions.clientId,\r\n authority: request.authority,\r\n scopes: request.scopes,\r\n claims: request.claims,\r\n authenticationScheme: request.authenticationScheme,\r\n resourceRequestMethod: request.resourceRequestMethod,\r\n resourceRequestUri: request.resourceRequestUri,\r\n shrClaims: request.shrClaims,\r\n sshKid: request.sshKid,\r\n };\r\n this.logger.info(\"Sending token request to endpoint: \" + authority.tokenEndpoint);\r\n reqTimestamp = nowSeconds();\r\n const response = await this.executePostToTokenEndpoint(endpoint, requestBody, headers, thumbprint, request.correlationId);\r\n serverTokenResponse = response.body;\r\n serverTokenResponse.status = response.status;\r\n }\r\n const responseHandler = new ResponseHandler(this.config.authOptions.clientId, this.cacheManager, this.cryptoUtils, this.logger, this.config.serializableCache, this.config.persistencePlugin);\r\n responseHandler.validateTokenResponse(serverTokenResponse, refreshAccessToken);\r\n const tokenResponse = await responseHandler.handleServerTokenResponse(serverTokenResponse, this.authority, reqTimestamp, request);\r\n return tokenResponse;\r\n }\r\n /**\r\n * generate the request to the server in the acceptable format\r\n * @param request - CommonClientCredentialRequest provided by the developer\r\n */\r\n async createTokenRequestBody(request) {\r\n const parameters = new Map();\r\n addClientId(parameters, this.config.authOptions.clientId);\r\n addScopes(parameters, request.scopes, false);\r\n addGrantType(parameters, GrantType.CLIENT_CREDENTIALS_GRANT);\r\n addLibraryInfo(parameters, this.config.libraryInfo);\r\n addApplicationTelemetry(parameters, this.config.telemetry.application);\r\n addThrottling(parameters);\r\n if (this.serverTelemetryManager) {\r\n addServerTelemetry(parameters, this.serverTelemetryManager);\r\n }\r\n const correlationId = request.correlationId ||\r\n this.config.cryptoInterface.createNewGuid();\r\n addCorrelationId(parameters, correlationId);\r\n if (this.config.clientCredentials.clientSecret) {\r\n addClientSecret(parameters, this.config.clientCredentials.clientSecret);\r\n }\r\n // Use clientAssertion from request, fallback to client assertion in base configuration\r\n const clientAssertion = request.clientAssertion ||\r\n this.config.clientCredentials.clientAssertion;\r\n if (clientAssertion) {\r\n addClientAssertion(parameters, await getClientAssertion(clientAssertion.assertion, this.config.authOptions.clientId, request.resourceRequestUri));\r\n addClientAssertionType(parameters, clientAssertion.assertionType);\r\n }\r\n if (!StringUtils.isEmptyObj(request.claims) ||\r\n (this.config.authOptions.clientCapabilities &&\r\n this.config.authOptions.clientCapabilities.length > 0)) {\r\n addClaims(parameters, request.claims, this.config.authOptions.clientCapabilities);\r\n }\r\n return mapToQueryString(parameters);\r\n }\r\n}\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * On-Behalf-Of client\r\n * @public\r\n */\r\nclass OnBehalfOfClient extends BaseClient {\r\n constructor(configuration) {\r\n super(configuration);\r\n }\r\n /**\r\n * Public API to acquire tokens with on behalf of flow\r\n * @param request - developer provided CommonOnBehalfOfRequest\r\n */\r\n async acquireToken(request) {\r\n this.scopeSet = new ScopeSet(request.scopes || []);\r\n // generate the user_assertion_hash for OBOAssertion\r\n this.userAssertionHash = await this.cryptoUtils.hashString(request.oboAssertion);\r\n if (request.skipCache || request.claims) {\r\n return this.executeTokenRequest(request, this.authority, this.userAssertionHash);\r\n }\r\n try {\r\n return await this.getCachedAuthenticationResult(request);\r\n }\r\n catch (e) {\r\n // Any failure falls back to interactive request, once we implement distributed cache, we plan to handle `createRefreshRequiredError` to refresh using the RT\r\n return await this.executeTokenRequest(request, this.authority, this.userAssertionHash);\r\n }\r\n }\r\n /**\r\n * look up cache for tokens\r\n * Find idtoken in the cache\r\n * Find accessToken based on user assertion and account info in the cache\r\n * Please note we are not yet supported OBO tokens refreshed with long lived RT. User will have to send a new assertion if the current access token expires\r\n * This is to prevent security issues when the assertion changes over time, however, longlived RT helps retaining the session\r\n * @param request - developer provided CommonOnBehalfOfRequest\r\n */\r\n async getCachedAuthenticationResult(request) {\r\n // look in the cache for the access_token which matches the incoming_assertion\r\n const cachedAccessToken = this.readAccessTokenFromCacheForOBO(this.config.authOptions.clientId, request);\r\n if (!cachedAccessToken) {\r\n // Must refresh due to non-existent access_token.\r\n this.serverTelemetryManager?.setCacheOutcome(CacheOutcome.NO_CACHED_ACCESS_TOKEN);\r\n this.logger.info(\"SilentFlowClient:acquireCachedToken - No access token found in cache for the given properties.\");\r\n throw createClientAuthError(tokenRefreshRequired);\r\n }\r\n else if (isTokenExpired(cachedAccessToken.expiresOn, this.config.systemOptions.tokenRenewalOffsetSeconds)) {\r\n // Access token expired, will need to renewed\r\n this.serverTelemetryManager?.setCacheOutcome(CacheOutcome.CACHED_ACCESS_TOKEN_EXPIRED);\r\n this.logger.info(`OnbehalfofFlow:getCachedAuthenticationResult - Cached access token is expired or will expire within ${this.config.systemOptions.tokenRenewalOffsetSeconds} seconds.`);\r\n throw createClientAuthError(tokenRefreshRequired);\r\n }\r\n // fetch the idToken from cache\r\n const cachedIdToken = this.readIdTokenFromCacheForOBO(cachedAccessToken.homeAccountId, request.correlationId);\r\n let idTokenClaims;\r\n let cachedAccount = null;\r\n if (cachedIdToken) {\r\n idTokenClaims = extractTokenClaims(cachedIdToken.secret, EncodingUtils.base64Decode);\r\n const localAccountId = idTokenClaims.oid || idTokenClaims.sub;\r\n const accountInfo = {\r\n homeAccountId: cachedIdToken.homeAccountId,\r\n environment: cachedIdToken.environment,\r\n tenantId: cachedIdToken.realm,\r\n username: Constants$1.EMPTY_STRING,\r\n localAccountId: localAccountId || Constants$1.EMPTY_STRING,\r\n };\r\n cachedAccount = this.cacheManager.getAccount(this.cacheManager.generateAccountKey(accountInfo), request.correlationId);\r\n }\r\n // increment telemetry cache hit counter\r\n if (this.config.serverTelemetryManager) {\r\n this.config.serverTelemetryManager.incrementCacheHits();\r\n }\r\n return ResponseHandler.generateAuthenticationResult(this.cryptoUtils, this.authority, {\r\n account: cachedAccount,\r\n accessToken: cachedAccessToken,\r\n idToken: cachedIdToken,\r\n refreshToken: null,\r\n appMetadata: null,\r\n }, true, request, idTokenClaims);\r\n }\r\n /**\r\n * read idtoken from cache, this is a specific implementation for OBO as the requirements differ from a generic lookup in the cacheManager\r\n * Certain use cases of OBO flow do not expect an idToken in the cache/or from the service\r\n * @param atHomeAccountId - account id\r\n */\r\n readIdTokenFromCacheForOBO(atHomeAccountId, correlationId) {\r\n const idTokenFilter = {\r\n homeAccountId: atHomeAccountId,\r\n environment: this.authority.canonicalAuthorityUrlComponents.HostNameAndPort,\r\n credentialType: CredentialType.ID_TOKEN,\r\n clientId: this.config.authOptions.clientId,\r\n realm: this.authority.tenant,\r\n };\r\n const idTokenMap = this.cacheManager.getIdTokensByFilter(idTokenFilter, correlationId);\r\n // When acquiring a token on behalf of an application, there might not be an id token in the cache\r\n if (Object.values(idTokenMap).length < 1) {\r\n return null;\r\n }\r\n return Object.values(idTokenMap)[0];\r\n }\r\n /**\r\n * Fetches the cached access token based on incoming assertion\r\n * @param clientId - client id\r\n * @param request - developer provided CommonOnBehalfOfRequest\r\n */\r\n readAccessTokenFromCacheForOBO(clientId, request) {\r\n const authScheme = request.authenticationScheme || AuthenticationScheme.BEARER;\r\n /*\r\n * Distinguish between Bearer and PoP/SSH token cache types\r\n * Cast to lowercase to handle \"bearer\" from ADFS\r\n */\r\n const credentialType = authScheme.toLowerCase() !==\r\n AuthenticationScheme.BEARER.toLowerCase()\r\n ? CredentialType.ACCESS_TOKEN_WITH_AUTH_SCHEME\r\n : CredentialType.ACCESS_TOKEN;\r\n const accessTokenFilter = {\r\n credentialType: credentialType,\r\n clientId,\r\n target: ScopeSet.createSearchScopes(this.scopeSet.asArray()),\r\n tokenType: authScheme,\r\n keyId: request.sshKid,\r\n requestedClaimsHash: request.requestedClaimsHash,\r\n userAssertionHash: this.userAssertionHash,\r\n };\r\n const accessTokens = this.cacheManager.getAccessTokensByFilter(accessTokenFilter, request.correlationId);\r\n const numAccessTokens = accessTokens.length;\r\n if (numAccessTokens < 1) {\r\n return null;\r\n }\r\n else if (numAccessTokens > 1) {\r\n throw createClientAuthError(multipleMatchingTokens);\r\n }\r\n return accessTokens[0];\r\n }\r\n /**\r\n * Make a network call to the server requesting credentials\r\n * @param request - developer provided CommonOnBehalfOfRequest\r\n * @param authority - authority object\r\n */\r\n async executeTokenRequest(request, authority, userAssertionHash) {\r\n const queryParametersString = this.createTokenQueryParameters(request);\r\n const endpoint = UrlString.appendQueryString(authority.tokenEndpoint, queryParametersString);\r\n const requestBody = await this.createTokenRequestBody(request);\r\n const headers = this.createTokenRequestHeaders();\r\n const thumbprint = {\r\n clientId: this.config.authOptions.clientId,\r\n authority: request.authority,\r\n scopes: request.scopes,\r\n claims: request.claims,\r\n authenticationScheme: request.authenticationScheme,\r\n resourceRequestMethod: request.resourceRequestMethod,\r\n resourceRequestUri: request.resourceRequestUri,\r\n shrClaims: request.shrClaims,\r\n sshKid: request.sshKid,\r\n };\r\n const reqTimestamp = nowSeconds();\r\n const response = await this.executePostToTokenEndpoint(endpoint, requestBody, headers, thumbprint, request.correlationId);\r\n const responseHandler = new ResponseHandler(this.config.authOptions.clientId, this.cacheManager, this.cryptoUtils, this.logger, this.config.serializableCache, this.config.persistencePlugin);\r\n responseHandler.validateTokenResponse(response.body);\r\n const tokenResponse = await responseHandler.handleServerTokenResponse(response.body, this.authority, reqTimestamp, request, undefined, userAssertionHash);\r\n return tokenResponse;\r\n }\r\n /**\r\n * generate a server request in accepable format\r\n * @param request - developer provided CommonOnBehalfOfRequest\r\n */\r\n async createTokenRequestBody(request) {\r\n const parameters = new Map();\r\n addClientId(parameters, this.config.authOptions.clientId);\r\n addScopes(parameters, request.scopes);\r\n addGrantType(parameters, GrantType.JWT_BEARER);\r\n addClientInfo(parameters);\r\n addLibraryInfo(parameters, this.config.libraryInfo);\r\n addApplicationTelemetry(parameters, this.config.telemetry.application);\r\n addThrottling(parameters);\r\n if (this.serverTelemetryManager) {\r\n addServerTelemetry(parameters, this.serverTelemetryManager);\r\n }\r\n const correlationId = request.correlationId ||\r\n this.config.cryptoInterface.createNewGuid();\r\n addCorrelationId(parameters, correlationId);\r\n addRequestTokenUse(parameters, ON_BEHALF_OF);\r\n addOboAssertion(parameters, request.oboAssertion);\r\n if (this.config.clientCredentials.clientSecret) {\r\n addClientSecret(parameters, this.config.clientCredentials.clientSecret);\r\n }\r\n const clientAssertion = this.config.clientCredentials.clientAssertion;\r\n if (clientAssertion) {\r\n addClientAssertion(parameters, await getClientAssertion(clientAssertion.assertion, this.config.authOptions.clientId, request.resourceRequestUri));\r\n addClientAssertionType(parameters, clientAssertion.assertionType);\r\n }\r\n if (request.claims ||\r\n (this.config.authOptions.clientCapabilities &&\r\n this.config.authOptions.clientCapabilities.length > 0)) {\r\n addClaims(parameters, request.claims, this.config.authOptions.clientCapabilities);\r\n }\r\n return mapToQueryString(parameters);\r\n }\r\n}\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n// AADAuthorityConstants\r\n/**\r\n * This class is to be used to acquire tokens for confidential client applications (webApp, webAPI). Confidential client applications\r\n * will configure application secrets, client certificates/assertions as applicable\r\n * @public\r\n */\r\nclass ConfidentialClientApplication extends ClientApplication {\r\n /**\r\n * Constructor for the ConfidentialClientApplication\r\n *\r\n * Required attributes in the Configuration object are:\r\n * - clientID: the application ID of your application. You can obtain one by registering your application with our application registration portal\r\n * - authority: the authority URL for your application.\r\n * - client credential: Must set either client secret, certificate, or assertion for confidential clients. You can obtain a client secret from the application registration portal.\r\n *\r\n * In Azure AD, authority is a URL indicating of the form https://login.microsoftonline.com/\\{Enter_the_Tenant_Info_Here\\}.\r\n * If your application supports Accounts in one organizational directory, replace \"Enter_the_Tenant_Info_Here\" value with the Tenant Id or Tenant name (for example, contoso.microsoft.com).\r\n * If your application supports Accounts in any organizational directory, replace \"Enter_the_Tenant_Info_Here\" value with organizations.\r\n * If your application supports Accounts in any organizational directory and personal Microsoft accounts, replace \"Enter_the_Tenant_Info_Here\" value with common.\r\n * To restrict support to Personal Microsoft accounts only, replace \"Enter_the_Tenant_Info_Here\" value with consumers.\r\n *\r\n * In Azure B2C, authority is of the form https://\\{instance\\}/tfp/\\{tenant\\}/\\{policyName\\}/\r\n * Full B2C functionality will be available in this library in future versions.\r\n *\r\n * @param Configuration - configuration object for the MSAL ConfidentialClientApplication instance\r\n */\r\n constructor(configuration) {\r\n super(configuration);\r\n const clientSecretNotEmpty = !!this.config.auth.clientSecret;\r\n const clientAssertionNotEmpty = !!this.config.auth.clientAssertion;\r\n const certificateNotEmpty = (!!this.config.auth.clientCertificate?.thumbprint ||\r\n !!this.config.auth.clientCertificate?.thumbprintSha256) &&\r\n !!this.config.auth.clientCertificate?.privateKey;\r\n /*\r\n * If app developer configures this callback, they don't need a credential\r\n * i.e. AzureSDK can get token from Managed Identity without a cert / secret\r\n */\r\n if (this.appTokenProvider) {\r\n return;\r\n }\r\n // Check that at most one credential is set on the application\r\n if ((clientSecretNotEmpty && clientAssertionNotEmpty) ||\r\n (clientAssertionNotEmpty && certificateNotEmpty) ||\r\n (clientSecretNotEmpty && certificateNotEmpty)) {\r\n throw createClientAuthError(invalidClientCredential);\r\n }\r\n if (this.config.auth.clientSecret) {\r\n this.clientSecret = this.config.auth.clientSecret;\r\n return;\r\n }\r\n if (this.config.auth.clientAssertion) {\r\n this.developerProvidedClientAssertion =\r\n this.config.auth.clientAssertion;\r\n return;\r\n }\r\n if (!certificateNotEmpty) {\r\n throw createClientAuthError(invalidClientCredential);\r\n }\r\n else {\r\n this.clientAssertion = !!this.config.auth.clientCertificate\r\n .thumbprintSha256\r\n ? ClientAssertion.fromCertificateWithSha256Thumbprint(this.config.auth.clientCertificate.thumbprintSha256, this.config.auth.clientCertificate.privateKey, this.config.auth.clientCertificate.x5c)\r\n : ClientAssertion.fromCertificate(\r\n // guaranteed to be a string, due to prior error checking in this function\r\n this.config.auth.clientCertificate.thumbprint, this.config.auth.clientCertificate.privateKey, this.config.auth.clientCertificate.x5c);\r\n }\r\n this.appTokenProvider = undefined;\r\n }\r\n /**\r\n * This extensibility point only works for the client_credential flow, i.e. acquireTokenByClientCredential and\r\n * is meant for Azure SDK to enhance Managed Identity support.\r\n *\r\n * @param IAppTokenProvider - Extensibility interface, which allows the app developer to return a token from a custom source.\r\n */\r\n SetAppTokenProvider(provider) {\r\n this.appTokenProvider = provider;\r\n }\r\n /**\r\n * Acquires tokens from the authority for the application (not for an end user).\r\n */\r\n async acquireTokenByClientCredential(request) {\r\n this.logger.info(\"acquireTokenByClientCredential called\", request.correlationId);\r\n // If there is a client assertion present in the request, it overrides the one present in the client configuration\r\n let clientAssertion;\r\n if (request.clientAssertion) {\r\n clientAssertion = {\r\n assertion: await getClientAssertion(request.clientAssertion, this.config.auth.clientId\r\n // tokenEndpoint will be undefined. resourceRequestUri is omitted in ClientCredentialRequest\r\n ),\r\n assertionType: Constants.JWT_BEARER_ASSERTION_TYPE,\r\n };\r\n }\r\n const baseRequest = await this.initializeBaseRequest(request);\r\n // valid base request should not contain oidc scopes in this grant type\r\n const validBaseRequest = {\r\n ...baseRequest,\r\n scopes: baseRequest.scopes.filter((scope) => !OIDC_DEFAULT_SCOPES.includes(scope)),\r\n };\r\n const validRequest = {\r\n ...request,\r\n ...validBaseRequest,\r\n clientAssertion,\r\n };\r\n /*\r\n * valid request should not have \"common\" or \"organizations\" in lieu of the tenant_id in the authority in the auth configuration\r\n * example authority: \"https://login.microsoftonline.com/TenantId\",\r\n */\r\n const authority = new UrlString(validRequest.authority);\r\n const tenantId = authority.getUrlComponents().PathSegments[0];\r\n if (Object.values(AADAuthorityConstants).includes(tenantId)) {\r\n throw createClientAuthError(missingTenantIdError);\r\n }\r\n /*\r\n * if this env variable is set, and the developer provided region isn't defined and isn't \"DisableMsalForceRegion\",\r\n * MSAL shall opt-in to ESTS-R with the value of this variable\r\n */\r\n const ENV_MSAL_FORCE_REGION = process.env[MSAL_FORCE_REGION];\r\n let region;\r\n if (validRequest.azureRegion !== \"DisableMsalForceRegion\") {\r\n if (!validRequest.azureRegion && ENV_MSAL_FORCE_REGION) {\r\n region = ENV_MSAL_FORCE_REGION;\r\n }\r\n else {\r\n region = validRequest.azureRegion;\r\n }\r\n }\r\n const azureRegionConfiguration = {\r\n azureRegion: region,\r\n environmentRegion: process.env[REGION_ENVIRONMENT_VARIABLE],\r\n };\r\n const serverTelemetryManager = this.initializeServerTelemetryManager(ApiId.acquireTokenByClientCredential, validRequest.correlationId, validRequest.skipCache);\r\n try {\r\n const discoveredAuthority = await this.createAuthority(validRequest.authority, validRequest.correlationId, azureRegionConfiguration, request.azureCloudOptions);\r\n const clientCredentialConfig = await this.buildOauthClientConfiguration(discoveredAuthority, validRequest.correlationId, \"\", serverTelemetryManager);\r\n const clientCredentialClient = new ClientCredentialClient(clientCredentialConfig, this.appTokenProvider);\r\n this.logger.verbose(\"Client credential client created\", validRequest.correlationId);\r\n return await clientCredentialClient.acquireToken(validRequest);\r\n }\r\n catch (e) {\r\n if (e instanceof AuthError) {\r\n e.setCorrelationId(validRequest.correlationId);\r\n }\r\n serverTelemetryManager.cacheFailedRequest(e);\r\n throw e;\r\n }\r\n }\r\n /**\r\n * Acquires tokens from the authority for the application.\r\n *\r\n * Used in scenarios where the current app is a middle-tier service which was called with a token\r\n * representing an end user. The current app can use the token (oboAssertion) to request another\r\n * token to access downstream web API, on behalf of that user.\r\n *\r\n * The current middle-tier app has no user interaction to obtain consent.\r\n * See how to gain consent upfront for your middle-tier app from this article.\r\n * https://docs.microsoft.com/en-us/azure/active-directory/develop/v2-oauth2-on-behalf-of-flow#gaining-consent-for-the-middle-tier-application\r\n */\r\n async acquireTokenOnBehalfOf(request) {\r\n this.logger.info(\"acquireTokenOnBehalfOf called\", request.correlationId);\r\n const validRequest = {\r\n ...request,\r\n ...(await this.initializeBaseRequest(request)),\r\n };\r\n try {\r\n const discoveredAuthority = await this.createAuthority(validRequest.authority, validRequest.correlationId, undefined, request.azureCloudOptions);\r\n const onBehalfOfConfig = await this.buildOauthClientConfiguration(discoveredAuthority, validRequest.correlationId, \"\", undefined);\r\n const oboClient = new OnBehalfOfClient(onBehalfOfConfig);\r\n this.logger.verbose(\"On behalf of client created\", validRequest.correlationId);\r\n return await oboClient.acquireToken(validRequest);\r\n }\r\n catch (e) {\r\n if (e instanceof AuthError) {\r\n e.setCorrelationId(validRequest.correlationId);\r\n }\r\n throw e;\r\n }\r\n }\r\n}\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * @internal\r\n * Checks if a given date string is in ISO 8601 format.\r\n *\r\n * @param dateString - The date string to be checked.\r\n * @returns boolean - Returns true if the date string is in ISO 8601 format, otherwise false.\r\n */\r\nfunction isIso8601(dateString) {\r\n if (typeof dateString !== \"string\") {\r\n return false;\r\n }\r\n const date = new Date(dateString);\r\n return !isNaN(date.getTime()) && date.toISOString() === dateString;\r\n}\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nclass HttpClientWithRetries {\r\n constructor(httpClientNoRetries, retryPolicy, logger) {\r\n this.httpClientNoRetries = httpClientNoRetries;\r\n this.retryPolicy = retryPolicy;\r\n this.logger = logger;\r\n }\r\n async sendNetworkRequestAsyncHelper(httpMethod, url, options) {\r\n if (httpMethod === HttpMethod.GET) {\r\n return this.httpClientNoRetries.sendGetRequestAsync(url, options);\r\n }\r\n else {\r\n return this.httpClientNoRetries.sendPostRequestAsync(url, options);\r\n }\r\n }\r\n async sendNetworkRequestAsync(httpMethod, url, options) {\r\n // the underlying network module (custom or HttpClient) will make the call\r\n let response = await this.sendNetworkRequestAsyncHelper(httpMethod, url, options);\r\n if (\"isNewRequest\" in this.retryPolicy) {\r\n this.retryPolicy.isNewRequest = true;\r\n }\r\n let currentRetry = 0;\r\n while (await this.retryPolicy.pauseForRetry(response.status, currentRetry, this.logger, response.headers[HeaderNames.RETRY_AFTER])) {\r\n response = await this.sendNetworkRequestAsyncHelper(httpMethod, url, options);\r\n currentRetry++;\r\n }\r\n return response;\r\n }\r\n async sendGetRequestAsync(url, options) {\r\n return this.sendNetworkRequestAsync(HttpMethod.GET, url, options);\r\n }\r\n async sendPostRequestAsync(url, options) {\r\n return this.sendNetworkRequestAsync(HttpMethod.POST, url, options);\r\n }\r\n}\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * Managed Identity User Assigned Id Query Parameter Names\r\n */\r\nconst ManagedIdentityUserAssignedIdQueryParameterNames = {\r\n MANAGED_IDENTITY_CLIENT_ID_2017: \"clientid\",\r\n MANAGED_IDENTITY_CLIENT_ID: \"client_id\",\r\n MANAGED_IDENTITY_OBJECT_ID: \"object_id\",\r\n MANAGED_IDENTITY_RESOURCE_ID_IMDS: \"msi_res_id\",\r\n MANAGED_IDENTITY_RESOURCE_ID_NON_IMDS: \"mi_res_id\",\r\n};\r\n/**\r\n * Base class for all Managed Identity sources. Provides common functionality for\r\n * authenticating with Azure Managed Identity endpoints across different Azure services\r\n * including IMDS, App Service, Azure Arc, Service Fabric, Cloud Shell, and Machine Learning.\r\n *\r\n * This abstract class handles token acquisition, response processing, and network communication\r\n * while allowing concrete implementations to define source-specific request creation logic.\r\n */\r\nclass BaseManagedIdentitySource {\r\n /**\r\n * Creates an instance of BaseManagedIdentitySource.\r\n *\r\n * @param logger - Logger instance for diagnostic information\r\n * @param nodeStorage - Storage interface for caching tokens\r\n * @param networkClient - Network client for making HTTP requests\r\n * @param cryptoProvider - Cryptographic provider for token operations\r\n * @param disableInternalRetries - Whether to disable automatic retry logic\r\n */\r\n constructor(logger, nodeStorage, networkClient, cryptoProvider, disableInternalRetries) {\r\n this.logger = logger;\r\n this.nodeStorage = nodeStorage;\r\n this.networkClient = networkClient;\r\n this.cryptoProvider = cryptoProvider;\r\n this.disableInternalRetries = disableInternalRetries;\r\n }\r\n /**\r\n * Processes the network response and converts it to a standardized server token response.\r\n * This async version allows for source-specific response processing logic while maintaining\r\n * backward compatibility with the synchronous version.\r\n *\r\n * @param response - The network response containing the managed identity token\r\n * @param _networkClient - Network client used for the request (unused in base implementation)\r\n * @param _networkRequest - The original network request parameters (unused in base implementation)\r\n * @param _networkRequestOptions - The network request options (unused in base implementation)\r\n *\r\n * @returns Promise resolving to a standardized server authorization token response\r\n */\r\n async getServerTokenResponseAsync(response, \r\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n _networkClient, \r\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n _networkRequest, \r\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n _networkRequestOptions) {\r\n return this.getServerTokenResponse(response);\r\n }\r\n /**\r\n * Converts a managed identity token response to a standardized server authorization token response.\r\n * Handles time format conversion, expiration calculation, and error mapping to ensure\r\n * compatibility with the MSAL response handling pipeline.\r\n *\r\n * @param response - The network response containing the managed identity token\r\n *\r\n * @returns Standardized server authorization token response with normalized fields\r\n */\r\n getServerTokenResponse(response) {\r\n let refreshIn, expiresIn;\r\n if (response.body.expires_on) {\r\n // if the expires_on field in the response body is a string and in ISO 8601 format, convert it to a Unix timestamp (seconds since epoch)\r\n if (isIso8601(response.body.expires_on)) {\r\n response.body.expires_on =\r\n new Date(response.body.expires_on).getTime() / 1000;\r\n }\r\n expiresIn = response.body.expires_on - nowSeconds();\r\n // compute refresh_in as 1/2 of expires_in, but only if expires_in > 2h\r\n if (expiresIn > 2 * 3600) {\r\n refreshIn = expiresIn / 2;\r\n }\r\n }\r\n const serverTokenResponse = {\r\n status: response.status,\r\n // success\r\n access_token: response.body.access_token,\r\n expires_in: expiresIn,\r\n scope: response.body.resource,\r\n token_type: response.body.token_type,\r\n refresh_in: refreshIn,\r\n // error\r\n correlation_id: response.body.correlation_id || response.body.correlationId,\r\n error: typeof response.body.error === \"string\"\r\n ? response.body.error\r\n : response.body.error?.code,\r\n error_description: response.body.message ||\r\n (typeof response.body.error === \"string\"\r\n ? response.body.error_description\r\n : response.body.error?.message),\r\n error_codes: response.body.error_codes,\r\n timestamp: response.body.timestamp,\r\n trace_id: response.body.trace_id,\r\n };\r\n return serverTokenResponse;\r\n }\r\n /**\r\n * Acquires an access token using the managed identity endpoint for the specified resource.\r\n * This is the primary method for token acquisition, handling the complete flow from\r\n * request creation through response processing and token caching.\r\n *\r\n * @param managedIdentityRequest - The managed identity request containing resource and optional parameters\r\n * @param managedIdentityId - The managed identity configuration (system or user-assigned)\r\n * @param fakeAuthority - Authority instance used for token caching (managed identity uses a placeholder authority)\r\n * @param refreshAccessToken - Whether this is a token refresh operation\r\n *\r\n * @returns Promise resolving to an authentication result containing the access token and metadata\r\n *\r\n * @throws {AuthError} When network requests fail or token validation fails\r\n * @throws {ClientAuthError} When network errors occur during the request\r\n */\r\n async acquireTokenWithManagedIdentity(managedIdentityRequest, managedIdentityId, fakeAuthority, refreshAccessToken) {\r\n const networkRequest = this.createRequest(managedIdentityRequest.resource, managedIdentityId);\r\n if (managedIdentityRequest.revokedTokenSha256Hash) {\r\n this.logger.info(`[Managed Identity] The following claims are present in the request: ${managedIdentityRequest.claims}`);\r\n networkRequest.queryParameters[ManagedIdentityQueryParameters.SHA256_TOKEN_TO_REFRESH] = managedIdentityRequest.revokedTokenSha256Hash;\r\n }\r\n if (managedIdentityRequest.clientCapabilities?.length) {\r\n const clientCapabilities = managedIdentityRequest.clientCapabilities.toString();\r\n this.logger.info(`[Managed Identity] The following client capabilities are present in the request: ${clientCapabilities}`);\r\n networkRequest.queryParameters[ManagedIdentityQueryParameters.XMS_CC] = clientCapabilities;\r\n }\r\n const headers = networkRequest.headers;\r\n headers[HeaderNames.CONTENT_TYPE] = Constants$1.URL_FORM_CONTENT_TYPE;\r\n const networkRequestOptions = { headers };\r\n if (Object.keys(networkRequest.bodyParameters).length) {\r\n networkRequestOptions.body =\r\n networkRequest.computeParametersBodyString();\r\n }\r\n /**\r\n * Initializes the network client helper based on the retry policy configuration.\r\n * If internal retries are disabled, it uses the provided network client directly.\r\n * Otherwise, it wraps the network client with an HTTP client that supports retries.\r\n */\r\n const networkClientHelper = this.disableInternalRetries\r\n ? this.networkClient\r\n : new HttpClientWithRetries(this.networkClient, networkRequest.retryPolicy, this.logger);\r\n const reqTimestamp = nowSeconds();\r\n let response;\r\n try {\r\n // Sources that send POST requests: Cloud Shell\r\n if (networkRequest.httpMethod === HttpMethod.POST) {\r\n response =\r\n await networkClientHelper.sendPostRequestAsync(networkRequest.computeUri(), networkRequestOptions);\r\n // Sources that send GET requests: App Service, Azure Arc, IMDS, Service Fabric\r\n }\r\n else {\r\n response =\r\n await networkClientHelper.sendGetRequestAsync(networkRequest.computeUri(), networkRequestOptions);\r\n }\r\n }\r\n catch (error) {\r\n if (error instanceof AuthError) {\r\n throw error;\r\n }\r\n else {\r\n throw createClientAuthError(networkError);\r\n }\r\n }\r\n const responseHandler = new ResponseHandler(managedIdentityId.id, this.nodeStorage, this.cryptoProvider, this.logger, null, null);\r\n const serverTokenResponse = await this.getServerTokenResponseAsync(response, networkClientHelper, networkRequest, networkRequestOptions);\r\n responseHandler.validateTokenResponse(serverTokenResponse, refreshAccessToken);\r\n // caches the token\r\n return responseHandler.handleServerTokenResponse(serverTokenResponse, fakeAuthority, reqTimestamp, managedIdentityRequest);\r\n }\r\n /**\r\n * Determines the appropriate query parameter name for user-assigned managed identity\r\n * based on the identity type, API version, and endpoint characteristics.\r\n * Different Azure services and API versions use different parameter names for the same identity types.\r\n *\r\n * @param managedIdentityIdType - The type of user-assigned managed identity (client ID, object ID, or resource ID)\r\n * @param isImds - Whether the request is being made to the IMDS (Instance Metadata Service) endpoint\r\n * @param usesApi2017 - Whether the endpoint uses the 2017-09-01 API version (affects client ID parameter name)\r\n *\r\n * @returns The correct query parameter name for the specified identity type and endpoint\r\n *\r\n * @throws {ManagedIdentityError} When an invalid managed identity ID type is provided\r\n */\r\n getManagedIdentityUserAssignedIdQueryParameterKey(managedIdentityIdType, isImds, usesApi2017) {\r\n switch (managedIdentityIdType) {\r\n case ManagedIdentityIdType.USER_ASSIGNED_CLIENT_ID:\r\n this.logger.info(`[Managed Identity] [API version ${usesApi2017 ? \"2017+\" : \"2019+\"}] Adding user assigned client id to the request.`);\r\n // The Machine Learning source uses the 2017-09-01 API version, which uses \"clientid\" instead of \"client_id\"\r\n return usesApi2017\r\n ? ManagedIdentityUserAssignedIdQueryParameterNames.MANAGED_IDENTITY_CLIENT_ID_2017\r\n : ManagedIdentityUserAssignedIdQueryParameterNames.MANAGED_IDENTITY_CLIENT_ID;\r\n case ManagedIdentityIdType.USER_ASSIGNED_RESOURCE_ID:\r\n this.logger.info(\"[Managed Identity] Adding user assigned resource id to the request.\");\r\n return isImds\r\n ? ManagedIdentityUserAssignedIdQueryParameterNames.MANAGED_IDENTITY_RESOURCE_ID_IMDS\r\n : ManagedIdentityUserAssignedIdQueryParameterNames.MANAGED_IDENTITY_RESOURCE_ID_NON_IMDS;\r\n case ManagedIdentityIdType.USER_ASSIGNED_OBJECT_ID:\r\n this.logger.info(\"[Managed Identity] Adding user assigned object id to the request.\");\r\n return ManagedIdentityUserAssignedIdQueryParameterNames.MANAGED_IDENTITY_OBJECT_ID;\r\n default:\r\n throw createManagedIdentityError(invalidManagedIdentityIdType);\r\n }\r\n }\r\n}\r\n/**\r\n * Validates and normalizes an environment variable containing a URL string.\r\n * This static utility method ensures that environment variables used for managed identity\r\n * endpoints contain properly formatted URLs and provides informative error messages when validation fails.\r\n *\r\n * @param envVariableStringName - The name of the environment variable being validated (for error reporting)\r\n * @param envVariable - The environment variable value containing the URL string\r\n * @param sourceName - The name of the managed identity source (for error reporting)\r\n * @param logger - Logger instance for diagnostic information\r\n *\r\n * @returns The validated and normalized URL string\r\n *\r\n * @throws {ManagedIdentityError} When the environment variable contains a malformed URL\r\n */\r\nBaseManagedIdentitySource.getValidatedEnvVariableUrlString = (envVariableStringName, envVariable, sourceName, logger) => {\r\n try {\r\n return new UrlString(envVariable).urlString;\r\n }\r\n catch (error) {\r\n logger.info(`[Managed Identity] ${sourceName} managed identity is unavailable because the '${envVariableStringName}' environment variable is malformed.`);\r\n throw createManagedIdentityError(MsiEnvironmentVariableUrlMalformedErrorCodes[envVariableStringName]);\r\n }\r\n};\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nclass LinearRetryStrategy {\r\n /**\r\n * Calculates the number of milliseconds to sleep based on the `retry-after` HTTP header.\r\n *\r\n * @param retryHeader - The value of the `retry-after` HTTP header. This can be either a number of seconds\r\n * or an HTTP date string.\r\n * @returns The number of milliseconds to sleep before retrying the request. If the `retry-after` header is not\r\n * present or cannot be parsed, returns 0.\r\n */\r\n calculateDelay(retryHeader, minimumDelay) {\r\n if (!retryHeader) {\r\n return minimumDelay;\r\n }\r\n // retry-after header is in seconds\r\n let millisToSleep = Math.round(parseFloat(retryHeader) * 1000);\r\n /*\r\n * retry-after header is in HTTP Date format\r\n * , :: GMT\r\n */\r\n if (isNaN(millisToSleep)) {\r\n // .valueOf() is needed to subtract dates in TypeScript\r\n millisToSleep =\r\n new Date(retryHeader).valueOf() - new Date().valueOf();\r\n }\r\n return Math.max(minimumDelay, millisToSleep);\r\n }\r\n}\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nconst DEFAULT_MANAGED_IDENTITY_MAX_RETRIES = 3; // referenced in unit test\r\nconst DEFAULT_MANAGED_IDENTITY_RETRY_DELAY_MS = 1000;\r\nconst DEFAULT_MANAGED_IDENTITY_HTTP_STATUS_CODES_TO_RETRY_ON = [\r\n msalCommon.HttpStatus.NOT_FOUND,\r\n msalCommon.HttpStatus.REQUEST_TIMEOUT,\r\n msalCommon.HttpStatus.TOO_MANY_REQUESTS,\r\n msalCommon.HttpStatus.SERVER_ERROR,\r\n msalCommon.HttpStatus.SERVICE_UNAVAILABLE,\r\n msalCommon.HttpStatus.GATEWAY_TIMEOUT,\r\n];\r\nclass DefaultManagedIdentityRetryPolicy {\r\n constructor() {\r\n this.linearRetryStrategy = new LinearRetryStrategy();\r\n }\r\n /*\r\n * this is defined here as a static variable despite being defined as a constant outside of the\r\n * class because it needs to be overridden in the unit tests so that the unit tests run faster\r\n */\r\n static get DEFAULT_MANAGED_IDENTITY_RETRY_DELAY_MS() {\r\n return DEFAULT_MANAGED_IDENTITY_RETRY_DELAY_MS;\r\n }\r\n async pauseForRetry(httpStatusCode, currentRetry, logger, retryAfterHeader) {\r\n if (DEFAULT_MANAGED_IDENTITY_HTTP_STATUS_CODES_TO_RETRY_ON.includes(httpStatusCode) &&\r\n currentRetry < DEFAULT_MANAGED_IDENTITY_MAX_RETRIES) {\r\n const retryAfterDelay = this.linearRetryStrategy.calculateDelay(retryAfterHeader, DefaultManagedIdentityRetryPolicy.DEFAULT_MANAGED_IDENTITY_RETRY_DELAY_MS);\r\n logger.verbose(`Retrying request in ${retryAfterDelay}ms (retry attempt: ${currentRetry + 1})`);\r\n // pause execution for the calculated delay\r\n await new Promise((resolve) => {\r\n // retryAfterHeader value of 0 evaluates to false, and DEFAULT_MANAGED_IDENTITY_RETRY_DELAY_MS will be used\r\n return setTimeout(resolve, retryAfterDelay);\r\n });\r\n return true;\r\n }\r\n // if the status code is not retriable or max retries have been reached, do not retry\r\n return false;\r\n }\r\n}\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nclass ManagedIdentityRequestParameters {\r\n constructor(httpMethod, endpoint, retryPolicy) {\r\n this.httpMethod = httpMethod;\r\n this._baseEndpoint = endpoint;\r\n this.headers = {};\r\n this.bodyParameters = {};\r\n this.queryParameters = {};\r\n this.retryPolicy =\r\n retryPolicy || new DefaultManagedIdentityRetryPolicy();\r\n }\r\n computeUri() {\r\n const parameters = new Map();\r\n if (this.queryParameters) {\r\n addExtraQueryParameters(parameters, this.queryParameters);\r\n }\r\n const queryParametersString = mapToQueryString(parameters);\r\n return UrlString.appendQueryString(this._baseEndpoint, queryParametersString);\r\n }\r\n computeParametersBodyString() {\r\n const parameters = new Map();\r\n if (this.bodyParameters) {\r\n addExtraQueryParameters(parameters, this.bodyParameters);\r\n }\r\n return mapToQueryString(parameters);\r\n }\r\n}\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n// MSI Constants. Docs for MSI are available here https://docs.microsoft.com/azure/app-service/overview-managed-identity\r\nconst APP_SERVICE_MSI_API_VERSION = \"2019-08-01\";\r\n/**\r\n * Azure App Service Managed Identity Source implementation.\r\n *\r\n * This class provides managed identity authentication for applications running in Azure App Service.\r\n * It uses the local metadata service endpoint available within App Service environments to obtain\r\n * access tokens without requiring explicit credentials.\r\n *\r\n * Original source of code: https://github.com/Azure/azure-sdk-for-net/blob/main/sdk/identity/Azure.Identity/src/AppServiceManagedIdentitySource.cs\r\n */\r\nclass AppService extends BaseManagedIdentitySource {\r\n /**\r\n * Creates a new instance of the AppService managed identity source.\r\n *\r\n * @param logger - Logger instance for diagnostic output\r\n * @param nodeStorage - Node.js storage implementation for caching\r\n * @param networkClient - Network client for making HTTP requests\r\n * @param cryptoProvider - Cryptographic operations provider\r\n * @param disableInternalRetries - Whether to disable internal retry logic\r\n * @param identityEndpoint - The App Service identity endpoint URL\r\n * @param identityHeader - The secret header value required for authentication\r\n */\r\n constructor(logger, nodeStorage, networkClient, cryptoProvider, disableInternalRetries, identityEndpoint, identityHeader) {\r\n super(logger, nodeStorage, networkClient, cryptoProvider, disableInternalRetries);\r\n this.identityEndpoint = identityEndpoint;\r\n this.identityHeader = identityHeader;\r\n }\r\n /**\r\n * Retrieves the required environment variables for App Service managed identity.\r\n *\r\n * App Service managed identity requires two environment variables:\r\n * - IDENTITY_ENDPOINT: The URL of the local metadata service\r\n * - IDENTITY_HEADER: A secret header value for authentication\r\n *\r\n * @returns An array containing [identityEndpoint, identityHeader] values from environment variables.\r\n * Either value may be undefined if the environment variable is not set.\r\n */\r\n static getEnvironmentVariables() {\r\n const identityEndpoint = process.env[ManagedIdentityEnvironmentVariableNames.IDENTITY_ENDPOINT];\r\n const identityHeader = process.env[ManagedIdentityEnvironmentVariableNames.IDENTITY_HEADER];\r\n return [identityEndpoint, identityHeader];\r\n }\r\n /**\r\n * Attempts to create an AppService managed identity source if the environment supports it.\r\n *\r\n * This method checks for the presence of required environment variables and validates\r\n * the identity endpoint URL. If the environment is not suitable for App Service managed\r\n * identity (missing environment variables or invalid endpoint), it returns null.\r\n *\r\n * @param logger - Logger instance for diagnostic output\r\n * @param nodeStorage - Node.js storage implementation for caching\r\n * @param networkClient - Network client for making HTTP requests\r\n * @param cryptoProvider - Cryptographic operations provider\r\n * @param disableInternalRetries - Whether to disable internal retry logic\r\n *\r\n * @returns A new AppService instance if the environment is suitable, null otherwise\r\n */\r\n static tryCreate(logger, nodeStorage, networkClient, cryptoProvider, disableInternalRetries) {\r\n const [identityEndpoint, identityHeader] = AppService.getEnvironmentVariables();\r\n // if either of the identity endpoint or identity header variables are undefined, this MSI provider is unavailable.\r\n if (!identityEndpoint || !identityHeader) {\r\n logger.info(`[Managed Identity] ${ManagedIdentitySourceNames.APP_SERVICE} managed identity is unavailable because one or both of the '${ManagedIdentityEnvironmentVariableNames.IDENTITY_HEADER}' and '${ManagedIdentityEnvironmentVariableNames.IDENTITY_ENDPOINT}' environment variables are not defined.`);\r\n return null;\r\n }\r\n const validatedIdentityEndpoint = AppService.getValidatedEnvVariableUrlString(ManagedIdentityEnvironmentVariableNames.IDENTITY_ENDPOINT, identityEndpoint, ManagedIdentitySourceNames.APP_SERVICE, logger);\r\n logger.info(`[Managed Identity] Environment variables validation passed for ${ManagedIdentitySourceNames.APP_SERVICE} managed identity. Endpoint URI: ${validatedIdentityEndpoint}. Creating ${ManagedIdentitySourceNames.APP_SERVICE} managed identity.`);\r\n return new AppService(logger, nodeStorage, networkClient, cryptoProvider, disableInternalRetries, identityEndpoint, identityHeader);\r\n }\r\n /**\r\n * Creates a managed identity token request for the App Service environment.\r\n *\r\n * This method constructs an HTTP GET request to the App Service identity endpoint\r\n * with the required headers, query parameters, and managed identity configuration.\r\n * The request includes the secret header for authentication and appropriate API version.\r\n *\r\n * @param resource - The target resource/scope for which to request an access token (e.g., \"https://graph.microsoft.com/.default\")\r\n * @param managedIdentityId - The managed identity configuration specifying whether to use system-assigned or user-assigned identity\r\n *\r\n * @returns A configured ManagedIdentityRequestParameters object ready for network execution\r\n */\r\n createRequest(resource, managedIdentityId) {\r\n const request = new ManagedIdentityRequestParameters(HttpMethod.GET, this.identityEndpoint);\r\n request.headers[ManagedIdentityHeaders.APP_SERVICE_SECRET_HEADER_NAME] =\r\n this.identityHeader;\r\n request.queryParameters[ManagedIdentityQueryParameters.API_VERSION] =\r\n APP_SERVICE_MSI_API_VERSION;\r\n request.queryParameters[ManagedIdentityQueryParameters.RESOURCE] =\r\n resource;\r\n if (managedIdentityId.idType !== ManagedIdentityIdType.SYSTEM_ASSIGNED) {\r\n request.queryParameters[this.getManagedIdentityUserAssignedIdQueryParameterKey(managedIdentityId.idType)] = managedIdentityId.id;\r\n }\r\n // bodyParameters calculated in BaseManagedIdentity.acquireTokenWithManagedIdentity\r\n return request;\r\n }\r\n}\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nconst ARC_API_VERSION = \"2019-11-01\";\r\nconst DEFAULT_AZURE_ARC_IDENTITY_ENDPOINT = \"http://127.0.0.1:40342/metadata/identity/oauth2/token\";\r\nconst HIMDS_EXECUTABLE_HELPER_STRING = \"N/A: himds executable exists\";\r\nconst SUPPORTED_AZURE_ARC_PLATFORMS = {\r\n win32: `${process.env[\"ProgramData\"]}\\\\AzureConnectedMachineAgent\\\\Tokens\\\\`,\r\n linux: \"/var/opt/azcmagent/tokens/\",\r\n};\r\nconst AZURE_ARC_FILE_DETECTION = {\r\n win32: `${process.env[\"ProgramFiles\"]}\\\\AzureConnectedMachineAgent\\\\himds.exe`,\r\n linux: \"/opt/azcmagent/bin/himds\",\r\n};\r\n/**\r\n * Azure Arc managed identity source implementation for acquiring tokens from Azure Arc-enabled servers.\r\n *\r\n * This class provides managed identity authentication for applications running on Azure Arc-enabled servers\r\n * by communicating with the local Hybrid Instance Metadata Service (HIMDS). It supports both environment\r\n * variable-based configuration and automatic detection through the HIMDS executable.\r\n *\r\n * Original source of code: https://github.com/Azure/azure-sdk-for-net/blob/main/sdk/identity/Azure.Identity/src/AzureArcManagedIdentitySource.cs\r\n */\r\nclass AzureArc extends BaseManagedIdentitySource {\r\n /**\r\n * Creates a new instance of the AzureArc managed identity source.\r\n *\r\n * @param logger - Logger instance for capturing telemetry and diagnostic information\r\n * @param nodeStorage - Storage implementation for caching tokens and metadata\r\n * @param networkClient - Network client for making HTTP requests to the identity endpoint\r\n * @param cryptoProvider - Cryptographic operations provider for token validation and encryption\r\n * @param disableInternalRetries - Flag to disable automatic retry logic for failed requests\r\n * @param identityEndpoint - The Azure Arc identity endpoint URL for token requests\r\n */\r\n constructor(logger, nodeStorage, networkClient, cryptoProvider, disableInternalRetries, identityEndpoint) {\r\n super(logger, nodeStorage, networkClient, cryptoProvider, disableInternalRetries);\r\n this.identityEndpoint = identityEndpoint;\r\n }\r\n /**\r\n * Retrieves and validates Azure Arc environment variables for managed identity configuration.\r\n *\r\n * This method checks for IDENTITY_ENDPOINT and IMDS_ENDPOINT environment variables.\r\n * If either is missing, it attempts to detect the Azure Arc environment by checking for\r\n * the HIMDS executable at platform-specific paths. On successful detection, it returns\r\n * the default identity endpoint and a helper string indicating file-based detection.\r\n *\r\n * @returns An array containing [identityEndpoint, imdsEndpoint] where both values are\r\n * strings if Azure Arc is available, or undefined if not available.\r\n */\r\n static getEnvironmentVariables() {\r\n let identityEndpoint = process.env[ManagedIdentityEnvironmentVariableNames.IDENTITY_ENDPOINT];\r\n let imdsEndpoint = process.env[ManagedIdentityEnvironmentVariableNames.IMDS_ENDPOINT];\r\n // if either of the identity or imds endpoints are undefined, check if the himds executable exists\r\n if (!identityEndpoint || !imdsEndpoint) {\r\n // get the expected Windows or Linux file path of the himds executable\r\n const fileDetectionPath = AZURE_ARC_FILE_DETECTION[process.platform];\r\n try {\r\n /*\r\n * check if the himds executable exists and its permissions allow it to be read\r\n * returns undefined if true, throws an error otherwise\r\n */\r\n fs.accessSync(fileDetectionPath, fs.constants.F_OK | fs.constants.R_OK);\r\n identityEndpoint = DEFAULT_AZURE_ARC_IDENTITY_ENDPOINT;\r\n imdsEndpoint = HIMDS_EXECUTABLE_HELPER_STRING;\r\n }\r\n catch (err) {\r\n /*\r\n * do nothing\r\n * accessSync returns undefined on success, and throws an error on failure\r\n */\r\n }\r\n }\r\n return [identityEndpoint, imdsEndpoint];\r\n }\r\n /**\r\n * Attempts to create an AzureArc managed identity source instance.\r\n *\r\n * Validates the Azure Arc environment by checking environment variables\r\n * and performing file-based detection. It ensures that only system-assigned managed identities\r\n * are supported for Azure Arc scenarios. The method performs comprehensive validation of\r\n * endpoint URLs and logs detailed information about the detection process.\r\n *\r\n * @param logger - Logger instance for capturing creation and validation steps\r\n * @param nodeStorage - Storage implementation for the managed identity source\r\n * @param networkClient - Network client for HTTP communication\r\n * @param cryptoProvider - Cryptographic operations provider\r\n * @param disableInternalRetries - Whether to disable automatic retry mechanisms\r\n * @param managedIdentityId - The managed identity configuration, must be system-assigned\r\n *\r\n * @returns AzureArc instance if the environment supports Azure Arc managed identity, null otherwise\r\n *\r\n * @throws {ManagedIdentityError} When a user-assigned managed identity is specified (not supported for Azure Arc)\r\n */\r\n static tryCreate(logger, nodeStorage, networkClient, cryptoProvider, disableInternalRetries, managedIdentityId) {\r\n const [identityEndpoint, imdsEndpoint] = AzureArc.getEnvironmentVariables();\r\n // if either of the identity or imds endpoints are undefined (even after himds file detection)\r\n if (!identityEndpoint || !imdsEndpoint) {\r\n logger.info(`[Managed Identity] ${ManagedIdentitySourceNames.AZURE_ARC} managed identity is unavailable through environment variables because one or both of '${ManagedIdentityEnvironmentVariableNames.IDENTITY_ENDPOINT}' and '${ManagedIdentityEnvironmentVariableNames.IMDS_ENDPOINT}' are not defined. ${ManagedIdentitySourceNames.AZURE_ARC} managed identity is also unavailable through file detection.`);\r\n return null;\r\n }\r\n // check if the imds endpoint is set to the default for file detection\r\n if (imdsEndpoint === HIMDS_EXECUTABLE_HELPER_STRING) {\r\n logger.info(`[Managed Identity] ${ManagedIdentitySourceNames.AZURE_ARC} managed identity is available through file detection. Defaulting to known ${ManagedIdentitySourceNames.AZURE_ARC} endpoint: ${DEFAULT_AZURE_ARC_IDENTITY_ENDPOINT}. Creating ${ManagedIdentitySourceNames.AZURE_ARC} managed identity.`);\r\n }\r\n else {\r\n // otherwise, both the identity and imds endpoints are defined without file detection; validate them\r\n const validatedIdentityEndpoint = AzureArc.getValidatedEnvVariableUrlString(ManagedIdentityEnvironmentVariableNames.IDENTITY_ENDPOINT, identityEndpoint, ManagedIdentitySourceNames.AZURE_ARC, logger);\r\n // remove trailing slash\r\n validatedIdentityEndpoint.endsWith(\"/\")\r\n ? validatedIdentityEndpoint.slice(0, -1)\r\n : validatedIdentityEndpoint;\r\n AzureArc.getValidatedEnvVariableUrlString(ManagedIdentityEnvironmentVariableNames.IMDS_ENDPOINT, imdsEndpoint, ManagedIdentitySourceNames.AZURE_ARC, logger);\r\n logger.info(`[Managed Identity] Environment variables validation passed for ${ManagedIdentitySourceNames.AZURE_ARC} managed identity. Endpoint URI: ${validatedIdentityEndpoint}. Creating ${ManagedIdentitySourceNames.AZURE_ARC} managed identity.`);\r\n }\r\n if (managedIdentityId.idType !== ManagedIdentityIdType.SYSTEM_ASSIGNED) {\r\n throw createManagedIdentityError(unableToCreateAzureArc);\r\n }\r\n return new AzureArc(logger, nodeStorage, networkClient, cryptoProvider, disableInternalRetries, identityEndpoint);\r\n }\r\n /**\r\n * Creates a properly formatted HTTP request for acquiring tokens from the Azure Arc identity endpoint.\r\n *\r\n * This method constructs a GET request to the Azure Arc HIMDS endpoint with the required metadata header\r\n * and query parameters. The endpoint URL is normalized to use 127.0.0.1 instead of localhost for\r\n * consistency. Additional body parameters are calculated by the base class during token acquisition.\r\n *\r\n * @param resource - The target resource/scope for which to request an access token (e.g., \"https://graph.microsoft.com/.default\")\r\n *\r\n * @returns A configured ManagedIdentityRequestParameters object ready for network execution\r\n */\r\n createRequest(resource) {\r\n const request = new ManagedIdentityRequestParameters(HttpMethod.GET, this.identityEndpoint.replace(\"localhost\", \"127.0.0.1\"));\r\n request.headers[ManagedIdentityHeaders.METADATA_HEADER_NAME] = \"true\";\r\n request.queryParameters[ManagedIdentityQueryParameters.API_VERSION] =\r\n ARC_API_VERSION;\r\n request.queryParameters[ManagedIdentityQueryParameters.RESOURCE] =\r\n resource;\r\n // bodyParameters calculated in BaseManagedIdentity.acquireTokenWithManagedIdentity\r\n return request;\r\n }\r\n /**\r\n * Processes the server response and handles Azure Arc-specific authentication challenges.\r\n *\r\n * This method implements the Azure Arc authentication flow which may require reading a secret file\r\n * for authorization. When the initial request returns HTTP 401 Unauthorized, it extracts the file\r\n * path from the WWW-Authenticate header, validates the file location and size, reads the secret,\r\n * and retries the request with Basic authentication. The method includes comprehensive security\r\n * validations to prevent path traversal and ensure file integrity.\r\n *\r\n * @param originalResponse - The initial HTTP response from the identity endpoint\r\n * @param networkClient - Network client for making the retry request if needed\r\n * @param networkRequest - The original request parameters (modified with auth header for retry)\r\n * @param networkRequestOptions - Additional options for network requests\r\n *\r\n * @returns A promise that resolves to the server token response with access token and metadata\r\n *\r\n * @throws {ManagedIdentityError} When:\r\n * - WWW-Authenticate header is missing or has unsupported format\r\n * - Platform is not supported (not Windows or Linux)\r\n * - Secret file has invalid extension (not .key)\r\n * - Secret file path doesn't match expected platform path\r\n * - Secret file cannot be read or is too large (>4096 bytes)\r\n * @throws {ClientAuthError} When network errors occur during retry request\r\n */\r\n async getServerTokenResponseAsync(originalResponse, networkClient, networkRequest, networkRequestOptions) {\r\n let retryResponse;\r\n if (originalResponse.status === HttpStatus.UNAUTHORIZED) {\r\n const wwwAuthHeader = originalResponse.headers[\"www-authenticate\"];\r\n if (!wwwAuthHeader) {\r\n throw createManagedIdentityError(wwwAuthenticateHeaderMissing);\r\n }\r\n if (!wwwAuthHeader.includes(\"Basic realm=\")) {\r\n throw createManagedIdentityError(wwwAuthenticateHeaderUnsupportedFormat);\r\n }\r\n const secretFilePath = wwwAuthHeader.split(\"Basic realm=\")[1];\r\n // throw an error if the managed identity application is not being run on Windows or Linux\r\n if (!SUPPORTED_AZURE_ARC_PLATFORMS.hasOwnProperty(process.platform)) {\r\n throw createManagedIdentityError(platformNotSupported);\r\n }\r\n // get the expected Windows or Linux file path\r\n const expectedSecretFilePath = SUPPORTED_AZURE_ARC_PLATFORMS[process.platform];\r\n // throw an error if the file in the file path is not a .key file\r\n const fileName = path.basename(secretFilePath);\r\n if (!fileName.endsWith(\".key\")) {\r\n throw createManagedIdentityError(invalidFileExtension);\r\n }\r\n /*\r\n * throw an error if the file path from the www-authenticate header does not match the\r\n * expected file path for the platform (Windows or Linux) the managed identity application\r\n * is running on\r\n */\r\n if (expectedSecretFilePath + fileName !== secretFilePath) {\r\n throw createManagedIdentityError(invalidFilePath);\r\n }\r\n let secretFileSize;\r\n // attempt to get the secret file's size, in bytes\r\n try {\r\n secretFileSize = await fs.statSync(secretFilePath).size;\r\n }\r\n catch (e) {\r\n throw createManagedIdentityError(unableToReadSecretFile);\r\n }\r\n // throw an error if the secret file's size is greater than 4096 bytes\r\n if (secretFileSize > AZURE_ARC_SECRET_FILE_MAX_SIZE_BYTES) {\r\n throw createManagedIdentityError(invalidSecret);\r\n }\r\n // attempt to read the contents of the secret file\r\n let secret;\r\n try {\r\n secret = fs.readFileSync(secretFilePath, EncodingTypes.UTF8);\r\n }\r\n catch (e) {\r\n throw createManagedIdentityError(unableToReadSecretFile);\r\n }\r\n const authHeaderValue = `Basic ${secret}`;\r\n this.logger.info(`[Managed Identity] Adding authorization header to the request.`);\r\n networkRequest.headers[ManagedIdentityHeaders.AUTHORIZATION_HEADER_NAME] = authHeaderValue;\r\n try {\r\n retryResponse =\r\n await networkClient.sendGetRequestAsync(networkRequest.computeUri(), networkRequestOptions);\r\n }\r\n catch (error) {\r\n if (error instanceof AuthError) {\r\n throw error;\r\n }\r\n else {\r\n throw createClientAuthError(networkError);\r\n }\r\n }\r\n }\r\n return this.getServerTokenResponse(retryResponse || originalResponse);\r\n }\r\n}\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * Azure Cloud Shell managed identity source implementation.\r\n *\r\n * This class handles authentication for applications running in Azure Cloud Shell environment.\r\n * Cloud Shell provides a browser-accessible shell for managing Azure resources and includes\r\n * a pre-configured managed identity for authentication.\r\n *\r\n * Original source of code: https://github.com/Azure/azure-sdk-for-net/blob/main/sdk/identity/Azure.Identity/src/CloudShellManagedIdentitySource.cs\r\n */\r\nclass CloudShell extends BaseManagedIdentitySource {\r\n /**\r\n * Creates a new CloudShell managed identity source instance.\r\n *\r\n * @param logger - Logger instance for diagnostic logging\r\n * @param nodeStorage - Node.js storage implementation for caching\r\n * @param networkClient - HTTP client for making requests to the managed identity endpoint\r\n * @param cryptoProvider - Cryptographic operations provider\r\n * @param disableInternalRetries - Whether to disable automatic retry logic for failed requests\r\n * @param msiEndpoint - The MSI endpoint URL obtained from environment variables\r\n */\r\n constructor(logger, nodeStorage, networkClient, cryptoProvider, disableInternalRetries, msiEndpoint) {\r\n super(logger, nodeStorage, networkClient, cryptoProvider, disableInternalRetries);\r\n this.msiEndpoint = msiEndpoint;\r\n }\r\n /**\r\n * Retrieves the required environment variables for Cloud Shell managed identity.\r\n *\r\n * Cloud Shell requires the MSI_ENDPOINT environment variable to be set, which\r\n * contains the URL of the managed identity service endpoint.\r\n *\r\n * @returns An array containing the MSI_ENDPOINT environment variable value (or undefined if not set)\r\n */\r\n static getEnvironmentVariables() {\r\n const msiEndpoint = process.env[ManagedIdentityEnvironmentVariableNames.MSI_ENDPOINT];\r\n return [msiEndpoint];\r\n }\r\n /**\r\n * Attempts to create a CloudShell managed identity source instance.\r\n *\r\n * This method validates that the required environment variables are present and\r\n * creates a CloudShell instance if the environment is properly configured.\r\n * Cloud Shell only supports system-assigned managed identities.\r\n *\r\n * @param logger - Logger instance for diagnostic logging\r\n * @param nodeStorage - Node.js storage implementation for caching\r\n * @param networkClient - HTTP client for making requests\r\n * @param cryptoProvider - Cryptographic operations provider\r\n * @param disableInternalRetries - Whether to disable automatic retry logic\r\n * @param managedIdentityId - The managed identity configuration (must be system-assigned)\r\n *\r\n * @returns A CloudShell instance if the environment is valid, null otherwise\r\n *\r\n * @throws {ManagedIdentityError} When a user-assigned managed identity is requested,\r\n * as Cloud Shell only supports system-assigned identities\r\n */\r\n static tryCreate(logger, nodeStorage, networkClient, cryptoProvider, disableInternalRetries, managedIdentityId) {\r\n const [msiEndpoint] = CloudShell.getEnvironmentVariables();\r\n // if the msi endpoint environment variable is undefined, this MSI provider is unavailable.\r\n if (!msiEndpoint) {\r\n logger.info(`[Managed Identity] ${ManagedIdentitySourceNames.CLOUD_SHELL} managed identity is unavailable because the '${ManagedIdentityEnvironmentVariableNames.MSI_ENDPOINT} environment variable is not defined.`);\r\n return null;\r\n }\r\n const validatedMsiEndpoint = CloudShell.getValidatedEnvVariableUrlString(ManagedIdentityEnvironmentVariableNames.MSI_ENDPOINT, msiEndpoint, ManagedIdentitySourceNames.CLOUD_SHELL, logger);\r\n logger.info(`[Managed Identity] Environment variable validation passed for ${ManagedIdentitySourceNames.CLOUD_SHELL} managed identity. Endpoint URI: ${validatedMsiEndpoint}. Creating ${ManagedIdentitySourceNames.CLOUD_SHELL} managed identity.`);\r\n if (managedIdentityId.idType !== ManagedIdentityIdType.SYSTEM_ASSIGNED) {\r\n throw createManagedIdentityError(unableToCreateCloudShell);\r\n }\r\n return new CloudShell(logger, nodeStorage, networkClient, cryptoProvider, disableInternalRetries, msiEndpoint);\r\n }\r\n /**\r\n * Creates an HTTP request to acquire an access token from the Cloud Shell managed identity endpoint.\r\n *\r\n * This method constructs a POST request to the MSI endpoint with the required headers and\r\n * body parameters for Cloud Shell authentication. The request includes the target resource\r\n * for which the access token is being requested.\r\n *\r\n * @param resource - The target resource/scope for which to request an access token (e.g., \"https://graph.microsoft.com/.default\")\r\n *\r\n * @returns A configured ManagedIdentityRequestParameters object ready for network execution\r\n */\r\n createRequest(resource) {\r\n const request = new ManagedIdentityRequestParameters(HttpMethod.POST, this.msiEndpoint);\r\n request.headers[ManagedIdentityHeaders.METADATA_HEADER_NAME] = \"true\";\r\n request.bodyParameters[ManagedIdentityQueryParameters.RESOURCE] =\r\n resource;\r\n return request;\r\n }\r\n}\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nclass ExponentialRetryStrategy {\r\n constructor(minExponentialBackoff, maxExponentialBackoff, exponentialDeltaBackoff) {\r\n this.minExponentialBackoff = minExponentialBackoff;\r\n this.maxExponentialBackoff = maxExponentialBackoff;\r\n this.exponentialDeltaBackoff = exponentialDeltaBackoff;\r\n }\r\n /**\r\n * Calculates the exponential delay based on the current retry attempt.\r\n *\r\n * @param {number} currentRetry - The current retry attempt number.\r\n * @returns {number} - The calculated exponential delay in milliseconds.\r\n *\r\n * The delay is calculated using the formula:\r\n * - If `currentRetry` is 0, it returns the minimum backoff time.\r\n * - Otherwise, it calculates the delay as the minimum of:\r\n * - `(2^(currentRetry - 1)) * deltaBackoff`\r\n * - `maxBackoff`\r\n *\r\n * This ensures that the delay increases exponentially with each retry attempt,\r\n * but does not exceed the maximum backoff time.\r\n */\r\n calculateDelay(currentRetry) {\r\n // Attempt 1\r\n if (currentRetry === 0) {\r\n return this.minExponentialBackoff;\r\n }\r\n // Attempt 2+\r\n const exponentialDelay = Math.min(Math.pow(2, currentRetry - 1) * this.exponentialDeltaBackoff, this.maxExponentialBackoff);\r\n return exponentialDelay;\r\n }\r\n}\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nconst HTTP_STATUS_400_CODES_FOR_EXPONENTIAL_STRATEGY = [\r\n msalCommon.HttpStatus.NOT_FOUND,\r\n msalCommon.HttpStatus.REQUEST_TIMEOUT,\r\n msalCommon.HttpStatus.GONE,\r\n msalCommon.HttpStatus.TOO_MANY_REQUESTS,\r\n];\r\nconst EXPONENTIAL_STRATEGY_NUM_RETRIES = 3;\r\nconst LINEAR_STRATEGY_NUM_RETRIES = 7;\r\nconst MIN_EXPONENTIAL_BACKOFF_MS = 1000;\r\nconst MAX_EXPONENTIAL_BACKOFF_MS = 4000;\r\nconst EXPONENTIAL_DELTA_BACKOFF_MS = 2000;\r\nconst HTTP_STATUS_GONE_RETRY_AFTER_MS = 10 * 1000; // 10 seconds\r\nclass ImdsRetryPolicy {\r\n constructor() {\r\n this.exponentialRetryStrategy = new ExponentialRetryStrategy(ImdsRetryPolicy.MIN_EXPONENTIAL_BACKOFF_MS, ImdsRetryPolicy.MAX_EXPONENTIAL_BACKOFF_MS, ImdsRetryPolicy.EXPONENTIAL_DELTA_BACKOFF_MS);\r\n }\r\n /*\r\n * these are defined here as static variables despite being defined as constants outside of the\r\n * class because they need to be overridden in the unit tests so that the unit tests run faster\r\n */\r\n static get MIN_EXPONENTIAL_BACKOFF_MS() {\r\n return MIN_EXPONENTIAL_BACKOFF_MS;\r\n }\r\n static get MAX_EXPONENTIAL_BACKOFF_MS() {\r\n return MAX_EXPONENTIAL_BACKOFF_MS;\r\n }\r\n static get EXPONENTIAL_DELTA_BACKOFF_MS() {\r\n return EXPONENTIAL_DELTA_BACKOFF_MS;\r\n }\r\n static get HTTP_STATUS_GONE_RETRY_AFTER_MS() {\r\n return HTTP_STATUS_GONE_RETRY_AFTER_MS;\r\n }\r\n set isNewRequest(value) {\r\n this._isNewRequest = value;\r\n }\r\n /**\r\n * Pauses execution for a calculated delay before retrying a request.\r\n *\r\n * @param httpStatusCode - The HTTP status code of the response.\r\n * @param currentRetry - The current retry attempt number.\r\n * @param retryAfterHeader - The value of the \"retry-after\" header from the response.\r\n * @returns A promise that resolves to a boolean indicating whether a retry should be attempted.\r\n */\r\n async pauseForRetry(httpStatusCode, currentRetry, logger) {\r\n if (this._isNewRequest) {\r\n this._isNewRequest = false;\r\n // calculate the maxRetries based on the status code, once per request\r\n this.maxRetries =\r\n httpStatusCode === msalCommon.HttpStatus.GONE\r\n ? LINEAR_STRATEGY_NUM_RETRIES\r\n : EXPONENTIAL_STRATEGY_NUM_RETRIES;\r\n }\r\n /**\r\n * (status code is one of the retriable 400 status code\r\n * or\r\n * status code is >= 500 and <= 599)\r\n * and\r\n * current count of retries is less than the max number of retries\r\n */\r\n if ((HTTP_STATUS_400_CODES_FOR_EXPONENTIAL_STRATEGY.includes(httpStatusCode) ||\r\n (httpStatusCode >= msalCommon.HttpStatus.SERVER_ERROR_RANGE_START &&\r\n httpStatusCode <= msalCommon.HttpStatus.SERVER_ERROR_RANGE_END &&\r\n currentRetry < this.maxRetries)) &&\r\n currentRetry < this.maxRetries) {\r\n const retryAfterDelay = httpStatusCode === msalCommon.HttpStatus.GONE\r\n ? ImdsRetryPolicy.HTTP_STATUS_GONE_RETRY_AFTER_MS\r\n : this.exponentialRetryStrategy.calculateDelay(currentRetry);\r\n logger.verbose(`Retrying request in ${retryAfterDelay}ms (retry attempt: ${currentRetry + 1})`);\r\n // pause execution for the calculated delay\r\n await new Promise((resolve) => {\r\n return setTimeout(resolve, retryAfterDelay);\r\n });\r\n return true;\r\n }\r\n // if the status code is not retriable or max retries have been reached, do not retry\r\n return false;\r\n }\r\n}\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n// Documentation for IMDS is available at https://docs.microsoft.com/azure/active-directory/managed-identities-azure-resources/how-to-use-vm-token#get-a-token-using-http\r\nconst IMDS_TOKEN_PATH = \"/metadata/identity/oauth2/token\";\r\nconst DEFAULT_IMDS_ENDPOINT = `http://169.254.169.254${IMDS_TOKEN_PATH}`;\r\nconst IMDS_API_VERSION = \"2018-02-01\";\r\n/**\r\n * Managed Identity source implementation for Azure Instance Metadata Service (IMDS).\r\n *\r\n * IMDS is available on Azure Virtual Machines and Virtual Machine Scale Sets and provides\r\n * a REST endpoint to obtain OAuth tokens for managed identities. This implementation\r\n * handles both system-assigned and user-assigned managed identities.\r\n *\r\n * Original source of code: https://github.com/Azure/azure-sdk-for-net/blob/main/sdk/identity/Azure.Identity/src/ImdsManagedIdentitySource.cs\r\n */\r\nclass Imds extends BaseManagedIdentitySource {\r\n /**\r\n * Constructs an Imds instance with the specified configuration.\r\n *\r\n * @param logger - Logger instance for recording debug information and errors\r\n * @param nodeStorage - NodeStorage instance used for token caching operations\r\n * @param networkClient - Network client implementation for making HTTP requests to IMDS\r\n * @param cryptoProvider - CryptoProvider for generating correlation IDs and other cryptographic operations\r\n * @param disableInternalRetries - When true, disables the built-in retry logic for IMDS requests\r\n * @param identityEndpoint - The complete IMDS endpoint URL including the token path\r\n */\r\n constructor(logger, nodeStorage, networkClient, cryptoProvider, disableInternalRetries, identityEndpoint) {\r\n super(logger, nodeStorage, networkClient, cryptoProvider, disableInternalRetries);\r\n this.identityEndpoint = identityEndpoint;\r\n }\r\n /**\r\n * Creates an Imds instance with the appropriate endpoint configuration.\r\n *\r\n * This method checks for the presence of the AZURE_POD_IDENTITY_AUTHORITY_HOST environment\r\n * variable, which is used in Azure Kubernetes Service (AKS) environments with Azure AD\r\n * Pod Identity. If found, it uses that endpoint; otherwise, it falls back to the standard\r\n * IMDS endpoint (169.254.169.254).\r\n *\r\n * @param logger - Logger instance for recording endpoint discovery and validation\r\n * @param nodeStorage - NodeStorage instance for token caching\r\n * @param networkClient - Network client for HTTP requests\r\n * @param cryptoProvider - CryptoProvider for cryptographic operations\r\n * @param disableInternalRetries - Whether to disable built-in retry logic\r\n *\r\n * @returns A configured Imds instance ready to make token requests\r\n */\r\n static tryCreate(logger, nodeStorage, networkClient, cryptoProvider, disableInternalRetries) {\r\n let validatedIdentityEndpoint;\r\n if (process.env[ManagedIdentityEnvironmentVariableNames\r\n .AZURE_POD_IDENTITY_AUTHORITY_HOST]) {\r\n logger.info(`[Managed Identity] Environment variable ${ManagedIdentityEnvironmentVariableNames.AZURE_POD_IDENTITY_AUTHORITY_HOST} for ${ManagedIdentitySourceNames.IMDS} returned endpoint: ${process.env[ManagedIdentityEnvironmentVariableNames\r\n .AZURE_POD_IDENTITY_AUTHORITY_HOST]}`);\r\n validatedIdentityEndpoint = Imds.getValidatedEnvVariableUrlString(ManagedIdentityEnvironmentVariableNames.AZURE_POD_IDENTITY_AUTHORITY_HOST, `${process.env[ManagedIdentityEnvironmentVariableNames\r\n .AZURE_POD_IDENTITY_AUTHORITY_HOST]}${IMDS_TOKEN_PATH}`, ManagedIdentitySourceNames.IMDS, logger);\r\n }\r\n else {\r\n logger.info(`[Managed Identity] Unable to find ${ManagedIdentityEnvironmentVariableNames.AZURE_POD_IDENTITY_AUTHORITY_HOST} environment variable for ${ManagedIdentitySourceNames.IMDS}, using the default endpoint.`);\r\n validatedIdentityEndpoint = DEFAULT_IMDS_ENDPOINT;\r\n }\r\n return new Imds(logger, nodeStorage, networkClient, cryptoProvider, disableInternalRetries, validatedIdentityEndpoint);\r\n }\r\n /**\r\n * Creates a properly configured HTTP request for acquiring an access token from IMDS.\r\n *\r\n * This method builds a complete request object with all necessary headers, query parameters,\r\n * and retry policies required by the Azure Instance Metadata Service.\r\n *\r\n * Key request components:\r\n * - HTTP GET method to the IMDS token endpoint\r\n * - Metadata header set to \"true\" (required by IMDS)\r\n * - API version parameter (currently \"2018-02-01\")\r\n * - Resource parameter specifying the target audience\r\n * - Identity-specific parameters for user-assigned managed identities\r\n * - IMDS-specific retry policy\r\n *\r\n * @param resource - The target resource/scope for which to request an access token (e.g., \"https://graph.microsoft.com/.default\")\r\n * @param managedIdentityId - The managed identity configuration specifying whether to use system-assigned or user-assigned identity\r\n *\r\n * @returns A configured ManagedIdentityRequestParameters object ready for network execution\r\n */\r\n createRequest(resource, managedIdentityId) {\r\n const request = new ManagedIdentityRequestParameters(HttpMethod.GET, this.identityEndpoint);\r\n request.headers[ManagedIdentityHeaders.METADATA_HEADER_NAME] = \"true\";\r\n request.queryParameters[ManagedIdentityQueryParameters.API_VERSION] =\r\n IMDS_API_VERSION;\r\n request.queryParameters[ManagedIdentityQueryParameters.RESOURCE] =\r\n resource;\r\n if (managedIdentityId.idType !== ManagedIdentityIdType.SYSTEM_ASSIGNED) {\r\n request.queryParameters[this.getManagedIdentityUserAssignedIdQueryParameterKey(managedIdentityId.idType, true // indicates source is IMDS\r\n )] = managedIdentityId.id;\r\n }\r\n // The bodyParameters are calculated in BaseManagedIdentity.acquireTokenWithManagedIdentity.\r\n request.retryPolicy = new ImdsRetryPolicy();\r\n return request;\r\n }\r\n}\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nconst SERVICE_FABRIC_MSI_API_VERSION = \"2019-07-01-preview\";\r\n/**\r\n * Original source of code: https://github.com/Azure/azure-sdk-for-net/blob/main/sdk/identity/Azure.Identity/src/ServiceFabricManagedIdentitySource.cs\r\n */\r\nclass ServiceFabric extends BaseManagedIdentitySource {\r\n /**\r\n * Constructs a new ServiceFabric managed identity source for acquiring tokens from Azure Service Fabric clusters.\r\n *\r\n * Service Fabric managed identity allows applications running in Service Fabric clusters to authenticate\r\n * without storing credentials in code. This source handles token acquisition using the Service Fabric\r\n * Managed Identity Token Service (MITS).\r\n *\r\n * @param logger - Logger instance for logging authentication events and debugging information\r\n * @param nodeStorage - NodeStorage instance for caching tokens and other authentication artifacts\r\n * @param networkClient - Network client for making HTTP requests to the Service Fabric identity endpoint\r\n * @param cryptoProvider - Crypto provider for cryptographic operations like token validation\r\n * @param disableInternalRetries - Whether to disable internal retry logic for failed requests\r\n * @param identityEndpoint - The Service Fabric managed identity endpoint URL\r\n * @param identityHeader - The Service Fabric managed identity secret header value\r\n */\r\n constructor(logger, nodeStorage, networkClient, cryptoProvider, disableInternalRetries, identityEndpoint, identityHeader) {\r\n super(logger, nodeStorage, networkClient, cryptoProvider, disableInternalRetries);\r\n this.identityEndpoint = identityEndpoint;\r\n this.identityHeader = identityHeader;\r\n }\r\n /**\r\n * Retrieves the environment variables required for Service Fabric managed identity authentication.\r\n *\r\n * Service Fabric managed identity requires three specific environment variables to be set by the\r\n * Service Fabric runtime:\r\n * - IDENTITY_ENDPOINT: The endpoint URL for the Managed Identity Token Service (MITS)\r\n * - IDENTITY_HEADER: A secret value used for authentication with the MITS\r\n * - IDENTITY_SERVER_THUMBPRINT: The thumbprint of the MITS server certificate for secure communication\r\n *\r\n * @returns An array containing the identity endpoint, identity header, and identity server thumbprint values.\r\n * Elements will be undefined if the corresponding environment variables are not set.\r\n */\r\n static getEnvironmentVariables() {\r\n const identityEndpoint = process.env[ManagedIdentityEnvironmentVariableNames.IDENTITY_ENDPOINT];\r\n const identityHeader = process.env[ManagedIdentityEnvironmentVariableNames.IDENTITY_HEADER];\r\n const identityServerThumbprint = process.env[ManagedIdentityEnvironmentVariableNames\r\n .IDENTITY_SERVER_THUMBPRINT];\r\n return [identityEndpoint, identityHeader, identityServerThumbprint];\r\n }\r\n /**\r\n * Attempts to create a ServiceFabric managed identity source if the runtime environment supports it.\r\n *\r\n * Checks for the presence of all required Service Fabric environment variables\r\n * and validates the endpoint URL format. It will only create a ServiceFabric instance if the application\r\n * is running in a properly configured Service Fabric cluster with managed identity enabled.\r\n *\r\n * Note: User-assigned managed identities must be configured at the cluster level, not at runtime.\r\n * This method will log a warning if a user-assigned identity is requested.\r\n *\r\n * @param logger - Logger instance for logging creation events and validation results\r\n * @param nodeStorage - NodeStorage instance for caching tokens and authentication artifacts\r\n * @param networkClient - Network client for making HTTP requests to the identity endpoint\r\n * @param cryptoProvider - Crypto provider for cryptographic operations\r\n * @param disableInternalRetries - Whether to disable internal retry logic for failed requests\r\n * @param managedIdentityId - Managed identity identifier specifying system-assigned or user-assigned identity\r\n *\r\n * @returns A ServiceFabric instance if all environment variables are valid and present, otherwise null\r\n */\r\n static tryCreate(logger, nodeStorage, networkClient, cryptoProvider, disableInternalRetries, managedIdentityId) {\r\n const [identityEndpoint, identityHeader, identityServerThumbprint] = ServiceFabric.getEnvironmentVariables();\r\n if (!identityEndpoint || !identityHeader || !identityServerThumbprint) {\r\n logger.info(`[Managed Identity] ${ManagedIdentitySourceNames.SERVICE_FABRIC} managed identity is unavailable because one or all of the '${ManagedIdentityEnvironmentVariableNames.IDENTITY_HEADER}', '${ManagedIdentityEnvironmentVariableNames.IDENTITY_ENDPOINT}' or '${ManagedIdentityEnvironmentVariableNames.IDENTITY_SERVER_THUMBPRINT}' environment variables are not defined.`);\r\n return null;\r\n }\r\n const validatedIdentityEndpoint = ServiceFabric.getValidatedEnvVariableUrlString(ManagedIdentityEnvironmentVariableNames.IDENTITY_ENDPOINT, identityEndpoint, ManagedIdentitySourceNames.SERVICE_FABRIC, logger);\r\n logger.info(`[Managed Identity] Environment variables validation passed for ${ManagedIdentitySourceNames.SERVICE_FABRIC} managed identity. Endpoint URI: ${validatedIdentityEndpoint}. Creating ${ManagedIdentitySourceNames.SERVICE_FABRIC} managed identity.`);\r\n if (managedIdentityId.idType !== ManagedIdentityIdType.SYSTEM_ASSIGNED) {\r\n logger.warning(`[Managed Identity] ${ManagedIdentitySourceNames.SERVICE_FABRIC} user assigned managed identity is configured in the cluster, not during runtime. See also: https://learn.microsoft.com/en-us/azure/service-fabric/configure-existing-cluster-enable-managed-identity-token-service.`);\r\n }\r\n return new ServiceFabric(logger, nodeStorage, networkClient, cryptoProvider, disableInternalRetries, identityEndpoint, identityHeader);\r\n }\r\n /**\r\n * Creates HTTP request parameters for acquiring an access token from the Service Fabric Managed Identity Token Service (MITS).\r\n *\r\n * This method constructs a properly formatted HTTP GET request that includes:\r\n * - The secret header for authentication with MITS\r\n * - API version parameter for the Service Fabric MSI endpoint\r\n * - Resource parameter specifying the target Azure service\r\n * - Optional identity parameters for user-assigned managed identities\r\n *\r\n * The request follows the Service Fabric managed identity protocol and uses the 2019-07-01-preview API version.\r\n * For user-assigned identities, the appropriate query parameter (client_id, object_id, or resource_id) is added\r\n * based on the identity type.\r\n *\r\n * @param resource - The Azure resource URI for which the access token is requested (e.g., \"https://vault.azure.net/\")\r\n * @param managedIdentityId - The managed identity configuration specifying system-assigned or user-assigned identity details\r\n *\r\n * @returns A configured ManagedIdentityRequestParameters object ready for network execution\r\n */\r\n createRequest(resource, managedIdentityId) {\r\n const request = new ManagedIdentityRequestParameters(HttpMethod.GET, this.identityEndpoint);\r\n request.headers[ManagedIdentityHeaders.ML_AND_SF_SECRET_HEADER_NAME] =\r\n this.identityHeader;\r\n request.queryParameters[ManagedIdentityQueryParameters.API_VERSION] =\r\n SERVICE_FABRIC_MSI_API_VERSION;\r\n request.queryParameters[ManagedIdentityQueryParameters.RESOURCE] =\r\n resource;\r\n if (managedIdentityId.idType !== ManagedIdentityIdType.SYSTEM_ASSIGNED) {\r\n request.queryParameters[this.getManagedIdentityUserAssignedIdQueryParameterKey(managedIdentityId.idType)] = managedIdentityId.id;\r\n }\r\n // bodyParameters calculated in BaseManagedIdentity.acquireTokenWithManagedIdentity\r\n return request;\r\n }\r\n}\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nconst MACHINE_LEARNING_MSI_API_VERSION = \"2017-09-01\";\r\nconst MANAGED_IDENTITY_MACHINE_LEARNING_UNSUPPORTED_ID_TYPE_ERROR = `Only client id is supported for user-assigned managed identity in ${ManagedIdentitySourceNames.MACHINE_LEARNING}.`; // referenced in unit test\r\n/**\r\n * Machine Learning Managed Identity Source implementation for Azure Machine Learning environments.\r\n *\r\n * This class handles managed identity authentication specifically for Azure Machine Learning services.\r\n * It supports both system-assigned and user-assigned managed identities, using the MSI_ENDPOINT\r\n * and MSI_SECRET environment variables that are automatically provided in Azure ML environments.\r\n */\r\nclass MachineLearning extends BaseManagedIdentitySource {\r\n /**\r\n * Creates a new MachineLearning managed identity source instance.\r\n *\r\n * @param logger - Logger instance for diagnostic information\r\n * @param nodeStorage - Node storage implementation for caching\r\n * @param networkClient - Network client for making HTTP requests\r\n * @param cryptoProvider - Cryptographic operations provider\r\n * @param disableInternalRetries - Whether to disable automatic request retries\r\n * @param msiEndpoint - The MSI endpoint URL from environment variables\r\n * @param secret - The MSI secret from environment variables\r\n */\r\n constructor(logger, nodeStorage, networkClient, cryptoProvider, disableInternalRetries, msiEndpoint, secret) {\r\n super(logger, nodeStorage, networkClient, cryptoProvider, disableInternalRetries);\r\n this.msiEndpoint = msiEndpoint;\r\n this.secret = secret;\r\n }\r\n /**\r\n * Retrieves the required environment variables for Azure Machine Learning managed identity.\r\n *\r\n * This method checks for the presence of MSI_ENDPOINT and MSI_SECRET environment variables\r\n * that are automatically set by the Azure Machine Learning platform when managed identity\r\n * is enabled for the compute instance or cluster.\r\n *\r\n * @returns An array containing [msiEndpoint, secret] where either value may be undefined\r\n * if the corresponding environment variable is not set\r\n */\r\n static getEnvironmentVariables() {\r\n const msiEndpoint = process.env[ManagedIdentityEnvironmentVariableNames.MSI_ENDPOINT];\r\n const secret = process.env[ManagedIdentityEnvironmentVariableNames.MSI_SECRET];\r\n return [msiEndpoint, secret];\r\n }\r\n /**\r\n * Attempts to create a MachineLearning managed identity source.\r\n *\r\n * This method validates the Azure Machine Learning environment by checking for the required\r\n * MSI_ENDPOINT and MSI_SECRET environment variables. If both are present and valid,\r\n * it creates and returns a MachineLearning instance. If either is missing or invalid,\r\n * it returns null, indicating that this managed identity source is not available\r\n * in the current environment.\r\n *\r\n * @param logger - Logger instance for diagnostic information\r\n * @param nodeStorage - Node storage implementation for caching\r\n * @param networkClient - Network client for making HTTP requests\r\n * @param cryptoProvider - Cryptographic operations provider\r\n * @param disableInternalRetries - Whether to disable automatic request retries\r\n *\r\n * @returns A new MachineLearning instance if the environment is valid, null otherwise\r\n */\r\n static tryCreate(logger, nodeStorage, networkClient, cryptoProvider, disableInternalRetries) {\r\n const [msiEndpoint, secret] = MachineLearning.getEnvironmentVariables();\r\n // if either of the MSI endpoint or MSI secret variables are undefined, this MSI provider is unavailable.\r\n if (!msiEndpoint || !secret) {\r\n logger.info(`[Managed Identity] ${ManagedIdentitySourceNames.MACHINE_LEARNING} managed identity is unavailable because one or both of the '${ManagedIdentityEnvironmentVariableNames.MSI_ENDPOINT}' and '${ManagedIdentityEnvironmentVariableNames.MSI_SECRET}' environment variables are not defined.`);\r\n return null;\r\n }\r\n const validatedMsiEndpoint = MachineLearning.getValidatedEnvVariableUrlString(ManagedIdentityEnvironmentVariableNames.MSI_ENDPOINT, msiEndpoint, ManagedIdentitySourceNames.MACHINE_LEARNING, logger);\r\n logger.info(`[Managed Identity] Environment variables validation passed for ${ManagedIdentitySourceNames.MACHINE_LEARNING} managed identity. Endpoint URI: ${validatedMsiEndpoint}. Creating ${ManagedIdentitySourceNames.MACHINE_LEARNING} managed identity.`);\r\n return new MachineLearning(logger, nodeStorage, networkClient, cryptoProvider, disableInternalRetries, msiEndpoint, secret);\r\n }\r\n /**\r\n * Creates a managed identity token request for Azure Machine Learning environments.\r\n *\r\n * This method constructs the HTTP request parameters needed to acquire an access token\r\n * from the Azure Machine Learning managed identity endpoint. It handles both system-assigned\r\n * and user-assigned managed identities with specific logic for each type:\r\n *\r\n * - System-assigned: Uses the DEFAULT_IDENTITY_CLIENT_ID environment variable\r\n * - User-assigned: Only supports client ID-based identification (not object ID or resource ID)\r\n *\r\n * The request uses the 2017-09-01 API version and includes the required secret header\r\n * for authentication with the MSI endpoint.\r\n *\r\n * @param resource - The target resource/scope for which to request an access token (e.g., \"https://graph.microsoft.com/.default\")\r\n * @param managedIdentityId - The managed identity configuration specifying whether to use system-assigned or user-assigned identity\r\n *\r\n * @returns A configured ManagedIdentityRequestParameters object ready for network execution\r\n *\r\n * @throws Error if an unsupported managed identity ID type is specified (only client ID is supported for user-assigned)\r\n */\r\n createRequest(resource, managedIdentityId) {\r\n const request = new ManagedIdentityRequestParameters(HttpMethod.GET, this.msiEndpoint);\r\n request.headers[ManagedIdentityHeaders.METADATA_HEADER_NAME] = \"true\";\r\n request.headers[ManagedIdentityHeaders.ML_AND_SF_SECRET_HEADER_NAME] =\r\n this.secret;\r\n request.queryParameters[ManagedIdentityQueryParameters.API_VERSION] =\r\n MACHINE_LEARNING_MSI_API_VERSION;\r\n request.queryParameters[ManagedIdentityQueryParameters.RESOURCE] =\r\n resource;\r\n if (managedIdentityId.idType === ManagedIdentityIdType.SYSTEM_ASSIGNED) {\r\n request.queryParameters[ManagedIdentityUserAssignedIdQueryParameterNames.MANAGED_IDENTITY_CLIENT_ID_2017] = process.env[ManagedIdentityEnvironmentVariableNames\r\n .DEFAULT_IDENTITY_CLIENT_ID]; // this environment variable is always set in an Azure Machine Learning source\r\n }\r\n else if (managedIdentityId.idType ===\r\n ManagedIdentityIdType.USER_ASSIGNED_CLIENT_ID) {\r\n request.queryParameters[this.getManagedIdentityUserAssignedIdQueryParameterKey(managedIdentityId.idType, false, // isIMDS\r\n true // uses2017API\r\n )] = managedIdentityId.id;\r\n }\r\n else {\r\n throw new Error(MANAGED_IDENTITY_MACHINE_LEARNING_UNSUPPORTED_ID_TYPE_ERROR);\r\n }\r\n // bodyParameters calculated in BaseManagedIdentity.acquireTokenWithManagedIdentity\r\n return request;\r\n }\r\n}\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/*\r\n * Class to initialize a managed identity and identify the service.\r\n * Original source of code: https://github.com/Azure/azure-sdk-for-net/blob/main/sdk/identity/Azure.Identity/src/ManagedIdentityClient.cs\r\n */\r\nclass ManagedIdentityClient {\r\n constructor(logger, nodeStorage, networkClient, cryptoProvider, disableInternalRetries) {\r\n this.logger = logger;\r\n this.nodeStorage = nodeStorage;\r\n this.networkClient = networkClient;\r\n this.cryptoProvider = cryptoProvider;\r\n this.disableInternalRetries = disableInternalRetries;\r\n }\r\n async sendManagedIdentityTokenRequest(managedIdentityRequest, managedIdentityId, fakeAuthority, refreshAccessToken) {\r\n if (!ManagedIdentityClient.identitySource) {\r\n ManagedIdentityClient.identitySource =\r\n this.selectManagedIdentitySource(this.logger, this.nodeStorage, this.networkClient, this.cryptoProvider, this.disableInternalRetries, managedIdentityId);\r\n }\r\n return ManagedIdentityClient.identitySource.acquireTokenWithManagedIdentity(managedIdentityRequest, managedIdentityId, fakeAuthority, refreshAccessToken);\r\n }\r\n allEnvironmentVariablesAreDefined(environmentVariables) {\r\n return Object.values(environmentVariables).every((environmentVariable) => {\r\n return environmentVariable !== undefined;\r\n });\r\n }\r\n /**\r\n * Determine the Managed Identity Source based on available environment variables. This API is consumed by ManagedIdentityApplication's getManagedIdentitySource.\r\n * @returns ManagedIdentitySourceNames - The Managed Identity source's name\r\n */\r\n getManagedIdentitySource() {\r\n ManagedIdentityClient.sourceName =\r\n this.allEnvironmentVariablesAreDefined(ServiceFabric.getEnvironmentVariables())\r\n ? ManagedIdentitySourceNames.SERVICE_FABRIC\r\n : this.allEnvironmentVariablesAreDefined(AppService.getEnvironmentVariables())\r\n ? ManagedIdentitySourceNames.APP_SERVICE\r\n : this.allEnvironmentVariablesAreDefined(MachineLearning.getEnvironmentVariables())\r\n ? ManagedIdentitySourceNames.MACHINE_LEARNING\r\n : this.allEnvironmentVariablesAreDefined(CloudShell.getEnvironmentVariables())\r\n ? ManagedIdentitySourceNames.CLOUD_SHELL\r\n : this.allEnvironmentVariablesAreDefined(AzureArc.getEnvironmentVariables())\r\n ? ManagedIdentitySourceNames.AZURE_ARC\r\n : ManagedIdentitySourceNames.DEFAULT_TO_IMDS;\r\n return ManagedIdentityClient.sourceName;\r\n }\r\n /**\r\n * Tries to create a managed identity source for all sources\r\n * @returns the managed identity Source\r\n */\r\n selectManagedIdentitySource(logger, nodeStorage, networkClient, cryptoProvider, disableInternalRetries, managedIdentityId) {\r\n const source = ServiceFabric.tryCreate(logger, nodeStorage, networkClient, cryptoProvider, disableInternalRetries, managedIdentityId) ||\r\n AppService.tryCreate(logger, nodeStorage, networkClient, cryptoProvider, disableInternalRetries) ||\r\n MachineLearning.tryCreate(logger, nodeStorage, networkClient, cryptoProvider, disableInternalRetries) ||\r\n CloudShell.tryCreate(logger, nodeStorage, networkClient, cryptoProvider, disableInternalRetries, managedIdentityId) ||\r\n AzureArc.tryCreate(logger, nodeStorage, networkClient, cryptoProvider, disableInternalRetries, managedIdentityId) ||\r\n Imds.tryCreate(logger, nodeStorage, networkClient, cryptoProvider, disableInternalRetries);\r\n if (!source) {\r\n throw createManagedIdentityError(unableToCreateSource);\r\n }\r\n return source;\r\n }\r\n}\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nconst SOURCES_THAT_SUPPORT_TOKEN_REVOCATION = [ManagedIdentitySourceNames.SERVICE_FABRIC];\r\n/**\r\n * Class to initialize a managed identity and identify the service\r\n * @public\r\n */\r\nclass ManagedIdentityApplication {\r\n constructor(configuration) {\r\n // undefined config means the managed identity is system-assigned\r\n this.config = buildManagedIdentityConfiguration(configuration || {});\r\n this.logger = new Logger(this.config.system.loggerOptions, name, version);\r\n const fakeStatusAuthorityOptions = {\r\n canonicalAuthority: Constants$1.DEFAULT_AUTHORITY,\r\n };\r\n if (!ManagedIdentityApplication.nodeStorage) {\r\n ManagedIdentityApplication.nodeStorage = new NodeStorage(this.logger, this.config.managedIdentityId.id, DEFAULT_CRYPTO_IMPLEMENTATION, fakeStatusAuthorityOptions);\r\n }\r\n this.networkClient = this.config.system.networkClient;\r\n this.cryptoProvider = new CryptoProvider();\r\n const fakeAuthorityOptions = {\r\n protocolMode: ProtocolMode.AAD,\r\n knownAuthorities: [DEFAULT_AUTHORITY_FOR_MANAGED_IDENTITY],\r\n cloudDiscoveryMetadata: \"\",\r\n authorityMetadata: \"\",\r\n };\r\n this.fakeAuthority = new Authority(DEFAULT_AUTHORITY_FOR_MANAGED_IDENTITY, this.networkClient, ManagedIdentityApplication.nodeStorage, fakeAuthorityOptions, this.logger, this.cryptoProvider.createNewGuid(), // correlationID\r\n undefined, true);\r\n this.fakeClientCredentialClient = new ClientCredentialClient({\r\n authOptions: {\r\n clientId: this.config.managedIdentityId.id,\r\n authority: this.fakeAuthority,\r\n },\r\n });\r\n this.managedIdentityClient = new ManagedIdentityClient(this.logger, ManagedIdentityApplication.nodeStorage, this.networkClient, this.cryptoProvider, this.config.disableInternalRetries);\r\n this.hashUtils = new HashUtils();\r\n }\r\n /**\r\n * Acquire an access token from the cache or the managed identity\r\n * @param managedIdentityRequest - the ManagedIdentityRequestParams object passed in by the developer\r\n * @returns the access token\r\n */\r\n async acquireToken(managedIdentityRequestParams) {\r\n if (!managedIdentityRequestParams.resource) {\r\n throw createClientConfigurationError(urlEmptyError);\r\n }\r\n const managedIdentityRequest = {\r\n forceRefresh: managedIdentityRequestParams.forceRefresh,\r\n resource: managedIdentityRequestParams.resource.replace(\"/.default\", \"\"),\r\n scopes: [\r\n managedIdentityRequestParams.resource.replace(\"/.default\", \"\"),\r\n ],\r\n authority: this.fakeAuthority.canonicalAuthority,\r\n correlationId: this.cryptoProvider.createNewGuid(),\r\n claims: managedIdentityRequestParams.claims,\r\n clientCapabilities: this.config.clientCapabilities,\r\n };\r\n if (managedIdentityRequest.forceRefresh) {\r\n return this.acquireTokenFromManagedIdentity(managedIdentityRequest, this.config.managedIdentityId, this.fakeAuthority);\r\n }\r\n const [cachedAuthenticationResult, lastCacheOutcome] = await this.fakeClientCredentialClient.getCachedAuthenticationResult(managedIdentityRequest, this.config, this.cryptoProvider, this.fakeAuthority, ManagedIdentityApplication.nodeStorage);\r\n /*\r\n * Check if claims are present in the managed identity request.\r\n * If so, the cached token will not be used.\r\n */\r\n if (managedIdentityRequest.claims) {\r\n const sourceName = this.managedIdentityClient.getManagedIdentitySource();\r\n /*\r\n * Check if there is a cached token and if the Managed Identity source supports token revocation.\r\n * If so, hash the cached access token and add it to the request.\r\n */\r\n if (cachedAuthenticationResult &&\r\n SOURCES_THAT_SUPPORT_TOKEN_REVOCATION.includes(sourceName)) {\r\n const revokedTokenSha256Hash = this.hashUtils\r\n .sha256(cachedAuthenticationResult.accessToken)\r\n .toString(EncodingTypes.HEX);\r\n managedIdentityRequest.revokedTokenSha256Hash =\r\n revokedTokenSha256Hash;\r\n }\r\n return this.acquireTokenFromManagedIdentity(managedIdentityRequest, this.config.managedIdentityId, this.fakeAuthority);\r\n }\r\n if (cachedAuthenticationResult) {\r\n // if the token is not expired but must be refreshed; get a new one in the background\r\n if (lastCacheOutcome === CacheOutcome.PROACTIVELY_REFRESHED) {\r\n this.logger.info(\"ClientCredentialClient:getCachedAuthenticationResult - Cached access token's refreshOn property has been exceeded'. It's not expired, but must be refreshed.\");\r\n // force refresh; will run in the background\r\n const refreshAccessToken = true;\r\n await this.acquireTokenFromManagedIdentity(managedIdentityRequest, this.config.managedIdentityId, this.fakeAuthority, refreshAccessToken);\r\n }\r\n return cachedAuthenticationResult;\r\n }\r\n else {\r\n return this.acquireTokenFromManagedIdentity(managedIdentityRequest, this.config.managedIdentityId, this.fakeAuthority);\r\n }\r\n }\r\n /**\r\n * Acquires a token from a managed identity endpoint.\r\n *\r\n * @param managedIdentityRequest - The request object containing parameters for the managed identity token request.\r\n * @param managedIdentityId - The identifier for the managed identity (e.g., client ID or resource ID).\r\n * @param fakeAuthority - A placeholder authority used for the token request.\r\n * @param refreshAccessToken - Optional flag indicating whether to force a refresh of the access token.\r\n * @returns A promise that resolves to an AuthenticationResult containing the acquired token and related information.\r\n */\r\n async acquireTokenFromManagedIdentity(managedIdentityRequest, managedIdentityId, fakeAuthority, refreshAccessToken) {\r\n // make a network call to the managed identity\r\n return this.managedIdentityClient.sendManagedIdentityTokenRequest(managedIdentityRequest, managedIdentityId, fakeAuthority, refreshAccessToken);\r\n }\r\n /**\r\n * Determine the Managed Identity Source based on available environment variables. This API is consumed by Azure Identity SDK.\r\n * @returns ManagedIdentitySourceNames - The Managed Identity source's name\r\n */\r\n getManagedIdentitySource() {\r\n return (ManagedIdentityClient.sourceName ||\r\n this.managedIdentityClient.getManagedIdentitySource());\r\n }\r\n}\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * Cache plugin that serializes data to the cache and deserializes data from the cache\r\n * @public\r\n */\r\nclass DistributedCachePlugin {\r\n constructor(client, partitionManager) {\r\n this.client = client;\r\n this.partitionManager = partitionManager;\r\n }\r\n /**\r\n * Deserializes the cache before accessing it\r\n * @param cacheContext - TokenCacheContext\r\n */\r\n async beforeCacheAccess(cacheContext) {\r\n const partitionKey = await this.partitionManager.getKey();\r\n const cacheData = await this.client.get(partitionKey);\r\n cacheContext.tokenCache.deserialize(cacheData);\r\n }\r\n /**\r\n * Serializes the cache after accessing it\r\n * @param cacheContext - TokenCacheContext\r\n */\r\n async afterCacheAccess(cacheContext) {\r\n if (cacheContext.cacheHasChanged) {\r\n const kvStore = cacheContext.tokenCache.getKVStore();\r\n const accountEntities = Object.values(kvStore).filter((value) => AccountEntity.isAccountEntity(value));\r\n let partitionKey;\r\n if (accountEntities.length > 0) {\r\n const accountEntity = accountEntities[0];\r\n partitionKey = await this.partitionManager.extractKey(accountEntity);\r\n }\r\n else {\r\n partitionKey = await this.partitionManager.getKey();\r\n }\r\n await this.client.set(partitionKey, cacheContext.tokenCache.serialize());\r\n }\r\n }\r\n}\n\nexports.AuthError = AuthError;\nexports.AuthErrorCodes = AuthErrorCodes;\nexports.AuthErrorMessage = AuthErrorMessage;\nexports.AzureCloudInstance = AzureCloudInstance;\nexports.ClientApplication = ClientApplication;\nexports.ClientAssertion = ClientAssertion;\nexports.ClientAuthError = ClientAuthError;\nexports.ClientAuthErrorCodes = ClientAuthErrorCodes;\nexports.ClientAuthErrorMessage = ClientAuthErrorMessage;\nexports.ClientConfigurationError = ClientConfigurationError;\nexports.ClientConfigurationErrorCodes = ClientConfigurationErrorCodes;\nexports.ClientConfigurationErrorMessage = ClientConfigurationErrorMessage;\nexports.ClientCredentialClient = ClientCredentialClient;\nexports.ConfidentialClientApplication = ConfidentialClientApplication;\nexports.CryptoProvider = CryptoProvider;\nexports.DeviceCodeClient = DeviceCodeClient;\nexports.DistributedCachePlugin = DistributedCachePlugin;\nexports.InteractionRequiredAuthError = InteractionRequiredAuthError;\nexports.InteractionRequiredAuthErrorCodes = InteractionRequiredAuthErrorCodes;\nexports.InteractionRequiredAuthErrorMessage = InteractionRequiredAuthErrorMessage;\nexports.Logger = Logger;\nexports.ManagedIdentityApplication = ManagedIdentityApplication;\nexports.ManagedIdentitySourceNames = ManagedIdentitySourceNames;\nexports.OnBehalfOfClient = OnBehalfOfClient;\nexports.PromptValue = PromptValue;\nexports.ProtocolMode = ProtocolMode;\nexports.PublicClientApplication = PublicClientApplication;\nexports.ResponseMode = ResponseMode;\nexports.ServerError = ServerError;\nexports.TokenCache = TokenCache;\nexports.TokenCacheContext = TokenCacheContext;\nexports.UsernamePasswordClient = UsernamePasswordClient;\nexports.internals = internals;\nexports.version = version;\n//# sourceMappingURL=msal-node.cjs.map\n","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.msalCommon = void 0;\nconst tslib_1 = require(\"tslib\");\nconst msalCommon = tslib_1.__importStar(require(\"@azure/msal-node\"));\nexports.msalCommon = msalCommon;\n//# sourceMappingURL=msal.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.defaultLoggerCallback = void 0;\nexports.ensureValidMsalToken = ensureValidMsalToken;\nexports.getAuthorityHost = getAuthorityHost;\nexports.getAuthority = getAuthority;\nexports.getKnownAuthorities = getKnownAuthorities;\nexports.getMSALLogLevel = getMSALLogLevel;\nexports.randomUUID = randomUUID;\nexports.handleMsalError = handleMsalError;\nexports.publicToMsal = publicToMsal;\nexports.msalToPublic = msalToPublic;\nexports.serializeAuthenticationRecord = serializeAuthenticationRecord;\nexports.deserializeAuthenticationRecord = deserializeAuthenticationRecord;\nconst errors_js_1 = require(\"../errors.js\");\nconst logging_js_1 = require(\"../util/logging.js\");\nconst constants_js_1 = require(\"../constants.js\");\nconst core_util_1 = require(\"@azure/core-util\");\nconst abort_controller_1 = require(\"@azure/abort-controller\");\nconst msal_js_1 = require(\"./msal.js\");\nconst logger = (0, logging_js_1.credentialLogger)(\"IdentityUtils\");\n/**\n * Latest AuthenticationRecord version\n */\nconst LatestAuthenticationRecordVersion = \"1.0\";\n/**\n * Ensures the validity of the MSAL token\n * @internal\n */\nfunction ensureValidMsalToken(scopes, msalToken, getTokenOptions) {\n const error = (message) => {\n logger.getToken.info(message);\n return new errors_js_1.AuthenticationRequiredError({\n scopes: Array.isArray(scopes) ? scopes : [scopes],\n getTokenOptions,\n message,\n });\n };\n if (!msalToken) {\n throw error(\"No response\");\n }\n if (!msalToken.expiresOn) {\n throw error(`Response had no \"expiresOn\" property.`);\n }\n if (!msalToken.accessToken) {\n throw error(`Response had no \"accessToken\" property.`);\n }\n}\n/**\n * Returns the authority host from either the options bag or the AZURE_AUTHORITY_HOST environment variable.\n *\n * Defaults to {@link DefaultAuthorityHost}.\n * @internal\n */\nfunction getAuthorityHost(options) {\n let authorityHost = options?.authorityHost;\n if (!authorityHost && core_util_1.isNodeLike) {\n authorityHost = process.env.AZURE_AUTHORITY_HOST;\n }\n return authorityHost ?? constants_js_1.DefaultAuthorityHost;\n}\n/**\n * Generates a valid authority by combining a host with a tenantId.\n * @internal\n */\nfunction getAuthority(tenantId, host) {\n if (!host) {\n host = constants_js_1.DefaultAuthorityHost;\n }\n if (new RegExp(`${tenantId}/?$`).test(host)) {\n return host;\n }\n if (host.endsWith(\"/\")) {\n return host + tenantId;\n }\n else {\n return `${host}/${tenantId}`;\n }\n}\n/**\n * Generates the known authorities.\n * If the Tenant Id is `adfs`, the authority can't be validated since the format won't match the expected one.\n * For that reason, we have to force MSAL to disable validating the authority\n * by sending it within the known authorities in the MSAL configuration.\n * @internal\n */\nfunction getKnownAuthorities(tenantId, authorityHost, disableInstanceDiscovery) {\n if ((tenantId === \"adfs\" && authorityHost) || disableInstanceDiscovery) {\n return [authorityHost];\n }\n return [];\n}\n/**\n * Generates a logger that can be passed to the MSAL clients.\n * @param credLogger - The logger of the credential.\n * @internal\n */\nconst defaultLoggerCallback = (credLogger, platform = core_util_1.isNode ? \"Node\" : \"Browser\") => (level, message, containsPii) => {\n if (containsPii) {\n return;\n }\n switch (level) {\n case msal_js_1.msalCommon.LogLevel.Error:\n credLogger.info(`MSAL ${platform} V2 error: ${message}`);\n return;\n case msal_js_1.msalCommon.LogLevel.Info:\n credLogger.info(`MSAL ${platform} V2 info message: ${message}`);\n return;\n case msal_js_1.msalCommon.LogLevel.Verbose:\n credLogger.info(`MSAL ${platform} V2 verbose message: ${message}`);\n return;\n case msal_js_1.msalCommon.LogLevel.Warning:\n credLogger.info(`MSAL ${platform} V2 warning: ${message}`);\n return;\n }\n};\nexports.defaultLoggerCallback = defaultLoggerCallback;\n/**\n * @internal\n */\nfunction getMSALLogLevel(logLevel) {\n switch (logLevel) {\n case \"error\":\n return msal_js_1.msalCommon.LogLevel.Error;\n case \"info\":\n return msal_js_1.msalCommon.LogLevel.Info;\n case \"verbose\":\n return msal_js_1.msalCommon.LogLevel.Verbose;\n case \"warning\":\n return msal_js_1.msalCommon.LogLevel.Warning;\n default:\n // default msal logging level should be Info\n return msal_js_1.msalCommon.LogLevel.Info;\n }\n}\n/**\n * Wraps core-util's randomUUID in order to allow for mocking in tests.\n * This prepares the library for the upcoming core-util update to ESM.\n *\n * @internal\n * @returns A string containing a random UUID\n */\nfunction randomUUID() {\n return (0, core_util_1.randomUUID)();\n}\n/**\n * Handles MSAL errors.\n */\nfunction handleMsalError(scopes, error, getTokenOptions) {\n if (error.name === \"AuthError\" ||\n error.name === \"ClientAuthError\" ||\n error.name === \"BrowserAuthError\") {\n const msalError = error;\n switch (msalError.errorCode) {\n case \"endpoints_resolution_error\":\n logger.info((0, logging_js_1.formatError)(scopes, error.message));\n return new errors_js_1.CredentialUnavailableError(error.message);\n case \"device_code_polling_cancelled\":\n return new abort_controller_1.AbortError(\"The authentication has been aborted by the caller.\");\n case \"consent_required\":\n case \"interaction_required\":\n case \"login_required\":\n logger.info((0, logging_js_1.formatError)(scopes, `Authentication returned errorCode ${msalError.errorCode}`));\n break;\n default:\n logger.info((0, logging_js_1.formatError)(scopes, `Failed to acquire token: ${error.message}`));\n break;\n }\n }\n if (error.name === \"ClientConfigurationError\" ||\n error.name === \"BrowserConfigurationAuthError\" ||\n error.name === \"AbortError\" ||\n error.name === \"AuthenticationError\") {\n return error;\n }\n if (error.name === \"NativeAuthError\") {\n logger.info((0, logging_js_1.formatError)(scopes, `Error from the native broker: ${error.message} with status code: ${error.statusCode}`));\n return error;\n }\n return new errors_js_1.AuthenticationRequiredError({ scopes, getTokenOptions, message: error.message });\n}\n// transformations\nfunction publicToMsal(account) {\n return {\n localAccountId: account.homeAccountId,\n environment: account.authority,\n username: account.username,\n homeAccountId: account.homeAccountId,\n tenantId: account.tenantId,\n };\n}\nfunction msalToPublic(clientId, account) {\n const record = {\n authority: account.environment ?? constants_js_1.DefaultAuthority,\n homeAccountId: account.homeAccountId,\n tenantId: account.tenantId || constants_js_1.DefaultTenantId,\n username: account.username,\n clientId,\n version: LatestAuthenticationRecordVersion,\n };\n return record;\n}\n/**\n * Serializes an `AuthenticationRecord` into a string.\n *\n * The output of a serialized authentication record will contain the following properties:\n *\n * - \"authority\"\n * - \"homeAccountId\"\n * - \"clientId\"\n * - \"tenantId\"\n * - \"username\"\n * - \"version\"\n *\n * To later convert this string to a serialized `AuthenticationRecord`, please use the exported function `deserializeAuthenticationRecord()`.\n */\nfunction serializeAuthenticationRecord(record) {\n return JSON.stringify(record);\n}\n/**\n * Deserializes a previously serialized authentication record from a string into an object.\n *\n * The input string must contain the following properties:\n *\n * - \"authority\"\n * - \"homeAccountId\"\n * - \"clientId\"\n * - \"tenantId\"\n * - \"username\"\n * - \"version\"\n *\n * If the version we receive is unsupported, an error will be thrown.\n *\n * At the moment, the only available version is: \"1.0\", which is always set when the authentication record is serialized.\n *\n * @param serializedRecord - Authentication record previously serialized into string.\n * @returns AuthenticationRecord.\n */\nfunction deserializeAuthenticationRecord(serializedRecord) {\n const parsed = JSON.parse(serializedRecord);\n if (parsed.version && parsed.version !== LatestAuthenticationRecordVersion) {\n throw Error(\"Unsupported AuthenticationRecord version\");\n }\n return parsed;\n}\n//# sourceMappingURL=utils.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getIdentityTokenEndpointSuffix = getIdentityTokenEndpointSuffix;\nfunction getIdentityTokenEndpointSuffix(tenantId) {\n if (tenantId === \"adfs\") {\n return \"oauth2/token\";\n }\n else {\n return \"oauth2/v2.0/token\";\n }\n}\n//# sourceMappingURL=identityTokenEndpoint.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.serviceFabricErrorMessage = void 0;\nexports.mapScopesToResource = mapScopesToResource;\nexports.parseExpirationTimestamp = parseExpirationTimestamp;\nexports.parseRefreshTimestamp = parseRefreshTimestamp;\nconst DefaultScopeSuffix = \"/.default\";\n/**\n * Error message for Service Fabric Managed Identity environment.\n */\nexports.serviceFabricErrorMessage = \"Specifying a `clientId` or `resourceId` is not supported by the Service Fabric managed identity environment. The managed identity configuration is determined by the Service Fabric cluster resource configuration. See https://aka.ms/servicefabricmi for more information\";\n/**\n * Most MSIs send requests to the IMDS endpoint, or a similar endpoint.\n * These are GET requests that require sending a `resource` parameter on the query.\n * This resource can be derived from the scopes received through the getToken call, as long as only one scope is received.\n * Multiple scopes assume that the resulting token will have access to multiple resources, which won't be the case.\n *\n * For that reason, when we encounter multiple scopes, we return undefined.\n * It's up to the individual MSI implementations to throw the errors (which helps us provide less generic errors).\n */\nfunction mapScopesToResource(scopes) {\n let scope = \"\";\n if (Array.isArray(scopes)) {\n if (scopes.length !== 1) {\n return;\n }\n scope = scopes[0];\n }\n else if (typeof scopes === \"string\") {\n scope = scopes;\n }\n if (!scope.endsWith(DefaultScopeSuffix)) {\n return scope;\n }\n return scope.substr(0, scope.lastIndexOf(DefaultScopeSuffix));\n}\n/**\n * Given a token response, return the expiration timestamp as the number of milliseconds from the Unix epoch.\n * @param body - A parsed response body from the authentication endpoint.\n */\nfunction parseExpirationTimestamp(body) {\n if (typeof body.expires_on === \"number\") {\n return body.expires_on * 1000;\n }\n if (typeof body.expires_on === \"string\") {\n const asNumber = +body.expires_on;\n if (!isNaN(asNumber)) {\n return asNumber * 1000;\n }\n const asDate = Date.parse(body.expires_on);\n if (!isNaN(asDate)) {\n return asDate;\n }\n }\n if (typeof body.expires_in === \"number\") {\n return Date.now() + body.expires_in * 1000;\n }\n throw new Error(`Failed to parse token expiration from body. expires_in=\"${body.expires_in}\", expires_on=\"${body.expires_on}\"`);\n}\n/**\n * Given a token response, return the expiration timestamp as the number of milliseconds from the Unix epoch.\n * @param body - A parsed response body from the authentication endpoint.\n */\nfunction parseRefreshTimestamp(body) {\n if (body.refresh_on) {\n if (typeof body.refresh_on === \"number\") {\n return body.refresh_on * 1000;\n }\n if (typeof body.refresh_on === \"string\") {\n const asNumber = +body.refresh_on;\n if (!isNaN(asNumber)) {\n return asNumber * 1000;\n }\n const asDate = Date.parse(body.refresh_on);\n if (!isNaN(asDate)) {\n return asDate;\n }\n }\n throw new Error(`Failed to parse refresh_on from body. refresh_on=\"${body.refresh_on}\"`);\n }\n else {\n return undefined;\n }\n}\n//# sourceMappingURL=utils.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.IdentityClient = void 0;\nexports.getIdentityClientAuthorityHost = getIdentityClientAuthorityHost;\nconst core_client_1 = require(\"@azure/core-client\");\nconst core_util_1 = require(\"@azure/core-util\");\nconst core_rest_pipeline_1 = require(\"@azure/core-rest-pipeline\");\nconst errors_js_1 = require(\"../errors.js\");\nconst identityTokenEndpoint_js_1 = require(\"../util/identityTokenEndpoint.js\");\nconst constants_js_1 = require(\"../constants.js\");\nconst tracing_js_1 = require(\"../util/tracing.js\");\nconst logging_js_1 = require(\"../util/logging.js\");\nconst utils_js_1 = require(\"../credentials/managedIdentityCredential/utils.js\");\nconst noCorrelationId = \"noCorrelationId\";\n/**\n * @internal\n */\nfunction getIdentityClientAuthorityHost(options) {\n // The authorityHost can come from options or from the AZURE_AUTHORITY_HOST environment variable.\n let authorityHost = options?.authorityHost;\n // The AZURE_AUTHORITY_HOST environment variable can only be provided in Node.js.\n if (core_util_1.isNode) {\n authorityHost = authorityHost ?? process.env.AZURE_AUTHORITY_HOST;\n }\n // If the authorityHost is not provided, we use the default one from the public cloud: https://login.microsoftonline.com\n return authorityHost ?? constants_js_1.DefaultAuthorityHost;\n}\n/**\n * The network module used by the Identity credentials.\n *\n * It allows for credentials to abort any pending request independently of the MSAL flow,\n * by calling to the `abortRequests()` method.\n *\n */\nclass IdentityClient extends core_client_1.ServiceClient {\n authorityHost;\n allowLoggingAccountIdentifiers;\n abortControllers;\n allowInsecureConnection = false;\n // used for WorkloadIdentity\n tokenCredentialOptions;\n constructor(options) {\n const packageDetails = `azsdk-js-identity/${constants_js_1.SDK_VERSION}`;\n const userAgentPrefix = options?.userAgentOptions?.userAgentPrefix\n ? `${options.userAgentOptions.userAgentPrefix} ${packageDetails}`\n : `${packageDetails}`;\n const baseUri = getIdentityClientAuthorityHost(options);\n if (!baseUri.startsWith(\"https:\")) {\n throw new Error(\"The authorityHost address must use the 'https' protocol.\");\n }\n super({\n requestContentType: \"application/json; charset=utf-8\",\n retryOptions: {\n maxRetries: 3,\n },\n ...options,\n userAgentOptions: {\n userAgentPrefix,\n },\n baseUri,\n });\n this.authorityHost = baseUri;\n this.abortControllers = new Map();\n this.allowLoggingAccountIdentifiers = options?.loggingOptions?.allowLoggingAccountIdentifiers;\n // used for WorkloadIdentity\n this.tokenCredentialOptions = { ...options };\n // used for ManagedIdentity\n if (options?.allowInsecureConnection) {\n this.allowInsecureConnection = options.allowInsecureConnection;\n }\n }\n async sendTokenRequest(request) {\n logging_js_1.logger.info(`IdentityClient: sending token request to [${request.url}]`);\n const response = await this.sendRequest(request);\n if (response.bodyAsText && (response.status === 200 || response.status === 201)) {\n const parsedBody = JSON.parse(response.bodyAsText);\n if (!parsedBody.access_token) {\n return null;\n }\n this.logIdentifiers(response);\n const token = {\n accessToken: {\n token: parsedBody.access_token,\n expiresOnTimestamp: (0, utils_js_1.parseExpirationTimestamp)(parsedBody),\n refreshAfterTimestamp: (0, utils_js_1.parseRefreshTimestamp)(parsedBody),\n tokenType: \"Bearer\",\n },\n refreshToken: parsedBody.refresh_token,\n };\n logging_js_1.logger.info(`IdentityClient: [${request.url}] token acquired, expires on ${token.accessToken.expiresOnTimestamp}`);\n return token;\n }\n else {\n const error = new errors_js_1.AuthenticationError(response.status, response.bodyAsText);\n logging_js_1.logger.warning(`IdentityClient: authentication error. HTTP status: ${response.status}, ${error.errorResponse.errorDescription}`);\n throw error;\n }\n }\n async refreshAccessToken(tenantId, clientId, scopes, refreshToken, clientSecret, options = {}) {\n if (refreshToken === undefined) {\n return null;\n }\n logging_js_1.logger.info(`IdentityClient: refreshing access token with client ID: ${clientId}, scopes: ${scopes} started`);\n const refreshParams = {\n grant_type: \"refresh_token\",\n client_id: clientId,\n refresh_token: refreshToken,\n scope: scopes,\n };\n if (clientSecret !== undefined) {\n refreshParams.client_secret = clientSecret;\n }\n const query = new URLSearchParams(refreshParams);\n return tracing_js_1.tracingClient.withSpan(\"IdentityClient.refreshAccessToken\", options, async (updatedOptions) => {\n try {\n const urlSuffix = (0, identityTokenEndpoint_js_1.getIdentityTokenEndpointSuffix)(tenantId);\n const request = (0, core_rest_pipeline_1.createPipelineRequest)({\n url: `${this.authorityHost}/${tenantId}/${urlSuffix}`,\n method: \"POST\",\n body: query.toString(),\n abortSignal: options.abortSignal,\n headers: (0, core_rest_pipeline_1.createHttpHeaders)({\n Accept: \"application/json\",\n \"Content-Type\": \"application/x-www-form-urlencoded\",\n }),\n tracingOptions: updatedOptions.tracingOptions,\n });\n const response = await this.sendTokenRequest(request);\n logging_js_1.logger.info(`IdentityClient: refreshed token for client ID: ${clientId}`);\n return response;\n }\n catch (err) {\n if (err.name === errors_js_1.AuthenticationErrorName &&\n err.errorResponse.error === \"interaction_required\") {\n // It's likely that the refresh token has expired, so\n // return null so that the credential implementation will\n // initiate the authentication flow again.\n logging_js_1.logger.info(`IdentityClient: interaction required for client ID: ${clientId}`);\n return null;\n }\n else {\n logging_js_1.logger.warning(`IdentityClient: failed refreshing token for client ID: ${clientId}: ${err}`);\n throw err;\n }\n }\n });\n }\n // Here is a custom layer that allows us to abort requests that go through MSAL,\n // since MSAL doesn't allow us to pass options all the way through.\n generateAbortSignal(correlationId) {\n const controller = new AbortController();\n const controllers = this.abortControllers.get(correlationId) || [];\n controllers.push(controller);\n this.abortControllers.set(correlationId, controllers);\n const existingOnAbort = controller.signal.onabort;\n controller.signal.onabort = (...params) => {\n this.abortControllers.set(correlationId, undefined);\n if (existingOnAbort) {\n existingOnAbort.apply(controller.signal, params);\n }\n };\n return controller.signal;\n }\n abortRequests(correlationId) {\n const key = correlationId || noCorrelationId;\n const controllers = [\n ...(this.abortControllers.get(key) || []),\n // MSAL passes no correlation ID to the get requests...\n ...(this.abortControllers.get(noCorrelationId) || []),\n ];\n if (!controllers.length) {\n return;\n }\n for (const controller of controllers) {\n controller.abort();\n }\n this.abortControllers.set(key, undefined);\n }\n getCorrelationId(options) {\n const parameter = options?.body\n ?.split(\"&\")\n .map((part) => part.split(\"=\"))\n .find(([key]) => key === \"client-request-id\");\n return parameter && parameter.length ? parameter[1] || noCorrelationId : noCorrelationId;\n }\n // The MSAL network module methods follow\n async sendGetRequestAsync(url, options) {\n const request = (0, core_rest_pipeline_1.createPipelineRequest)({\n url,\n method: \"GET\",\n body: options?.body,\n allowInsecureConnection: this.allowInsecureConnection,\n headers: (0, core_rest_pipeline_1.createHttpHeaders)(options?.headers),\n abortSignal: this.generateAbortSignal(noCorrelationId),\n });\n const response = await this.sendRequest(request);\n this.logIdentifiers(response);\n return {\n body: response.bodyAsText ? JSON.parse(response.bodyAsText) : undefined,\n headers: response.headers.toJSON(),\n status: response.status,\n };\n }\n async sendPostRequestAsync(url, options) {\n const request = (0, core_rest_pipeline_1.createPipelineRequest)({\n url,\n method: \"POST\",\n body: options?.body,\n headers: (0, core_rest_pipeline_1.createHttpHeaders)(options?.headers),\n allowInsecureConnection: this.allowInsecureConnection,\n // MSAL doesn't send the correlation ID on the get requests.\n abortSignal: this.generateAbortSignal(this.getCorrelationId(options)),\n });\n const response = await this.sendRequest(request);\n this.logIdentifiers(response);\n return {\n body: response.bodyAsText ? JSON.parse(response.bodyAsText) : undefined,\n headers: response.headers.toJSON(),\n status: response.status,\n };\n }\n /**\n *\n * @internal\n */\n getTokenCredentialOptions() {\n return this.tokenCredentialOptions;\n }\n /**\n * If allowLoggingAccountIdentifiers was set on the constructor options\n * we try to log the account identifiers by parsing the received access token.\n *\n * The account identifiers we try to log are:\n * - `appid`: The application or Client Identifier.\n * - `upn`: User Principal Name.\n * - It might not be available in some authentication scenarios.\n * - If it's not available, we put a placeholder: \"No User Principal Name available\".\n * - `tid`: Tenant Identifier.\n * - `oid`: Object Identifier of the authenticated user.\n */\n logIdentifiers(response) {\n if (!this.allowLoggingAccountIdentifiers || !response.bodyAsText) {\n return;\n }\n const unavailableUpn = \"No User Principal Name available\";\n try {\n const parsed = response.parsedBody || JSON.parse(response.bodyAsText);\n const accessToken = parsed.access_token;\n if (!accessToken) {\n // Without an access token allowLoggingAccountIdentifiers isn't useful.\n return;\n }\n const base64Metadata = accessToken.split(\".\")[1];\n const { appid, upn, tid, oid } = JSON.parse(Buffer.from(base64Metadata, \"base64\").toString(\"utf8\"));\n logging_js_1.logger.info(`[Authenticated account] Client ID: ${appid}. Tenant ID: ${tid}. User Principal Name: ${upn || unavailableUpn}. Object ID (user): ${oid}`);\n }\n catch (e) {\n logging_js_1.logger.warning(\"allowLoggingAccountIdentifiers was set, but we couldn't log the account information. Error:\", e.message);\n }\n }\n}\nexports.IdentityClient = IdentityClient;\n//# sourceMappingURL=identityClient.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.RegionalAuthority = void 0;\nexports.calculateRegionalAuthority = calculateRegionalAuthority;\n/**\n * Helps specify a regional authority, or \"AutoDiscoverRegion\" to auto-detect the region.\n */\nvar RegionalAuthority;\n(function (RegionalAuthority) {\n /** Instructs MSAL to attempt to discover the region */\n RegionalAuthority[\"AutoDiscoverRegion\"] = \"AutoDiscoverRegion\";\n /** Uses the {@link RegionalAuthority} for the Azure 'westus' region. */\n RegionalAuthority[\"USWest\"] = \"westus\";\n /** Uses the {@link RegionalAuthority} for the Azure 'westus2' region. */\n RegionalAuthority[\"USWest2\"] = \"westus2\";\n /** Uses the {@link RegionalAuthority} for the Azure 'centralus' region. */\n RegionalAuthority[\"USCentral\"] = \"centralus\";\n /** Uses the {@link RegionalAuthority} for the Azure 'eastus' region. */\n RegionalAuthority[\"USEast\"] = \"eastus\";\n /** Uses the {@link RegionalAuthority} for the Azure 'eastus2' region. */\n RegionalAuthority[\"USEast2\"] = \"eastus2\";\n /** Uses the {@link RegionalAuthority} for the Azure 'northcentralus' region. */\n RegionalAuthority[\"USNorthCentral\"] = \"northcentralus\";\n /** Uses the {@link RegionalAuthority} for the Azure 'southcentralus' region. */\n RegionalAuthority[\"USSouthCentral\"] = \"southcentralus\";\n /** Uses the {@link RegionalAuthority} for the Azure 'westcentralus' region. */\n RegionalAuthority[\"USWestCentral\"] = \"westcentralus\";\n /** Uses the {@link RegionalAuthority} for the Azure 'canadacentral' region. */\n RegionalAuthority[\"CanadaCentral\"] = \"canadacentral\";\n /** Uses the {@link RegionalAuthority} for the Azure 'canadaeast' region. */\n RegionalAuthority[\"CanadaEast\"] = \"canadaeast\";\n /** Uses the {@link RegionalAuthority} for the Azure 'brazilsouth' region. */\n RegionalAuthority[\"BrazilSouth\"] = \"brazilsouth\";\n /** Uses the {@link RegionalAuthority} for the Azure 'northeurope' region. */\n RegionalAuthority[\"EuropeNorth\"] = \"northeurope\";\n /** Uses the {@link RegionalAuthority} for the Azure 'westeurope' region. */\n RegionalAuthority[\"EuropeWest\"] = \"westeurope\";\n /** Uses the {@link RegionalAuthority} for the Azure 'uksouth' region. */\n RegionalAuthority[\"UKSouth\"] = \"uksouth\";\n /** Uses the {@link RegionalAuthority} for the Azure 'ukwest' region. */\n RegionalAuthority[\"UKWest\"] = \"ukwest\";\n /** Uses the {@link RegionalAuthority} for the Azure 'francecentral' region. */\n RegionalAuthority[\"FranceCentral\"] = \"francecentral\";\n /** Uses the {@link RegionalAuthority} for the Azure 'francesouth' region. */\n RegionalAuthority[\"FranceSouth\"] = \"francesouth\";\n /** Uses the {@link RegionalAuthority} for the Azure 'switzerlandnorth' region. */\n RegionalAuthority[\"SwitzerlandNorth\"] = \"switzerlandnorth\";\n /** Uses the {@link RegionalAuthority} for the Azure 'switzerlandwest' region. */\n RegionalAuthority[\"SwitzerlandWest\"] = \"switzerlandwest\";\n /** Uses the {@link RegionalAuthority} for the Azure 'germanynorth' region. */\n RegionalAuthority[\"GermanyNorth\"] = \"germanynorth\";\n /** Uses the {@link RegionalAuthority} for the Azure 'germanywestcentral' region. */\n RegionalAuthority[\"GermanyWestCentral\"] = \"germanywestcentral\";\n /** Uses the {@link RegionalAuthority} for the Azure 'norwaywest' region. */\n RegionalAuthority[\"NorwayWest\"] = \"norwaywest\";\n /** Uses the {@link RegionalAuthority} for the Azure 'norwayeast' region. */\n RegionalAuthority[\"NorwayEast\"] = \"norwayeast\";\n /** Uses the {@link RegionalAuthority} for the Azure 'eastasia' region. */\n RegionalAuthority[\"AsiaEast\"] = \"eastasia\";\n /** Uses the {@link RegionalAuthority} for the Azure 'southeastasia' region. */\n RegionalAuthority[\"AsiaSouthEast\"] = \"southeastasia\";\n /** Uses the {@link RegionalAuthority} for the Azure 'japaneast' region. */\n RegionalAuthority[\"JapanEast\"] = \"japaneast\";\n /** Uses the {@link RegionalAuthority} for the Azure 'japanwest' region. */\n RegionalAuthority[\"JapanWest\"] = \"japanwest\";\n /** Uses the {@link RegionalAuthority} for the Azure 'australiaeast' region. */\n RegionalAuthority[\"AustraliaEast\"] = \"australiaeast\";\n /** Uses the {@link RegionalAuthority} for the Azure 'australiasoutheast' region. */\n RegionalAuthority[\"AustraliaSouthEast\"] = \"australiasoutheast\";\n /** Uses the {@link RegionalAuthority} for the Azure 'australiacentral' region. */\n RegionalAuthority[\"AustraliaCentral\"] = \"australiacentral\";\n /** Uses the {@link RegionalAuthority} for the Azure 'australiacentral2' region. */\n RegionalAuthority[\"AustraliaCentral2\"] = \"australiacentral2\";\n /** Uses the {@link RegionalAuthority} for the Azure 'centralindia' region. */\n RegionalAuthority[\"IndiaCentral\"] = \"centralindia\";\n /** Uses the {@link RegionalAuthority} for the Azure 'southindia' region. */\n RegionalAuthority[\"IndiaSouth\"] = \"southindia\";\n /** Uses the {@link RegionalAuthority} for the Azure 'westindia' region. */\n RegionalAuthority[\"IndiaWest\"] = \"westindia\";\n /** Uses the {@link RegionalAuthority} for the Azure 'koreasouth' region. */\n RegionalAuthority[\"KoreaSouth\"] = \"koreasouth\";\n /** Uses the {@link RegionalAuthority} for the Azure 'koreacentral' region. */\n RegionalAuthority[\"KoreaCentral\"] = \"koreacentral\";\n /** Uses the {@link RegionalAuthority} for the Azure 'uaecentral' region. */\n RegionalAuthority[\"UAECentral\"] = \"uaecentral\";\n /** Uses the {@link RegionalAuthority} for the Azure 'uaenorth' region. */\n RegionalAuthority[\"UAENorth\"] = \"uaenorth\";\n /** Uses the {@link RegionalAuthority} for the Azure 'southafricanorth' region. */\n RegionalAuthority[\"SouthAfricaNorth\"] = \"southafricanorth\";\n /** Uses the {@link RegionalAuthority} for the Azure 'southafricawest' region. */\n RegionalAuthority[\"SouthAfricaWest\"] = \"southafricawest\";\n /** Uses the {@link RegionalAuthority} for the Azure 'chinanorth' region. */\n RegionalAuthority[\"ChinaNorth\"] = \"chinanorth\";\n /** Uses the {@link RegionalAuthority} for the Azure 'chinaeast' region. */\n RegionalAuthority[\"ChinaEast\"] = \"chinaeast\";\n /** Uses the {@link RegionalAuthority} for the Azure 'chinanorth2' region. */\n RegionalAuthority[\"ChinaNorth2\"] = \"chinanorth2\";\n /** Uses the {@link RegionalAuthority} for the Azure 'chinaeast2' region. */\n RegionalAuthority[\"ChinaEast2\"] = \"chinaeast2\";\n /** Uses the {@link RegionalAuthority} for the Azure 'germanycentral' region. */\n RegionalAuthority[\"GermanyCentral\"] = \"germanycentral\";\n /** Uses the {@link RegionalAuthority} for the Azure 'germanynortheast' region. */\n RegionalAuthority[\"GermanyNorthEast\"] = \"germanynortheast\";\n /** Uses the {@link RegionalAuthority} for the Azure 'usgovvirginia' region. */\n RegionalAuthority[\"GovernmentUSVirginia\"] = \"usgovvirginia\";\n /** Uses the {@link RegionalAuthority} for the Azure 'usgoviowa' region. */\n RegionalAuthority[\"GovernmentUSIowa\"] = \"usgoviowa\";\n /** Uses the {@link RegionalAuthority} for the Azure 'usgovarizona' region. */\n RegionalAuthority[\"GovernmentUSArizona\"] = \"usgovarizona\";\n /** Uses the {@link RegionalAuthority} for the Azure 'usgovtexas' region. */\n RegionalAuthority[\"GovernmentUSTexas\"] = \"usgovtexas\";\n /** Uses the {@link RegionalAuthority} for the Azure 'usdodeast' region. */\n RegionalAuthority[\"GovernmentUSDodEast\"] = \"usdodeast\";\n /** Uses the {@link RegionalAuthority} for the Azure 'usdodcentral' region. */\n RegionalAuthority[\"GovernmentUSDodCentral\"] = \"usdodcentral\";\n})(RegionalAuthority || (exports.RegionalAuthority = RegionalAuthority = {}));\n/**\n * Calculates the correct regional authority based on the supplied value\n * and the AZURE_REGIONAL_AUTHORITY_NAME environment variable.\n *\n * Values will be returned verbatim, except for {@link RegionalAuthority.AutoDiscoverRegion}\n * which is mapped to a value MSAL can understand.\n *\n * @internal\n */\nfunction calculateRegionalAuthority(regionalAuthority) {\n // Note: as of today only 3 credentials support regional authority, and the parameter\n // is not exposed via the public API. Regional Authority is _only_ supported\n // via the AZURE_REGIONAL_AUTHORITY_NAME env var and _only_ for: ClientSecretCredential, ClientCertificateCredential, and ClientAssertionCredential.\n // Accepting the regionalAuthority parameter will allow us to support it in the future.\n let azureRegion = regionalAuthority;\n if (azureRegion === undefined &&\n globalThis.process?.env?.AZURE_REGIONAL_AUTHORITY_NAME !== undefined) {\n azureRegion = process.env.AZURE_REGIONAL_AUTHORITY_NAME;\n }\n if (azureRegion === RegionalAuthority.AutoDiscoverRegion) {\n return \"AUTO_DISCOVER\";\n }\n return azureRegion;\n}\n//# sourceMappingURL=regionalAuthority.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.processMultiTenantRequest = processMultiTenantRequest;\nconst errors_js_1 = require(\"../errors.js\");\nfunction createConfigurationErrorMessage(tenantId) {\n return `The current credential is not configured to acquire tokens for tenant ${tenantId}. To enable acquiring tokens for this tenant add it to the AdditionallyAllowedTenants on the credential options, or add \"*\" to AdditionallyAllowedTenants to allow acquiring tokens for any tenant.`;\n}\n/**\n * Of getToken contains a tenantId, this functions allows picking this tenantId as the appropriate for authentication,\n * unless multitenant authentication has been disabled through the AZURE_IDENTITY_DISABLE_MULTITENANTAUTH (on Node.js),\n * or unless the original tenant Id is `adfs`.\n * @internal\n */\nfunction processMultiTenantRequest(tenantId, getTokenOptions, additionallyAllowedTenantIds = [], logger) {\n let resolvedTenantId;\n if (process.env.AZURE_IDENTITY_DISABLE_MULTITENANTAUTH) {\n resolvedTenantId = tenantId;\n }\n else if (tenantId === \"adfs\") {\n resolvedTenantId = tenantId;\n }\n else {\n resolvedTenantId = getTokenOptions?.tenantId ?? tenantId;\n }\n if (tenantId &&\n resolvedTenantId !== tenantId &&\n !additionallyAllowedTenantIds.includes(\"*\") &&\n !additionallyAllowedTenantIds.some((t) => t.localeCompare(resolvedTenantId) === 0)) {\n const message = createConfigurationErrorMessage(resolvedTenantId);\n logger?.info(message);\n throw new errors_js_1.CredentialUnavailableError(message);\n }\n return resolvedTenantId;\n}\n//# sourceMappingURL=processMultiTenantRequest.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.processMultiTenantRequest = void 0;\nexports.checkTenantId = checkTenantId;\nexports.resolveTenantId = resolveTenantId;\nexports.resolveAdditionallyAllowedTenantIds = resolveAdditionallyAllowedTenantIds;\nconst constants_js_1 = require(\"../constants.js\");\nconst logging_js_1 = require(\"./logging.js\");\nvar processMultiTenantRequest_js_1 = require(\"./processMultiTenantRequest.js\");\nObject.defineProperty(exports, \"processMultiTenantRequest\", { enumerable: true, get: function () { return processMultiTenantRequest_js_1.processMultiTenantRequest; } });\n/**\n * @internal\n */\nfunction checkTenantId(logger, tenantId) {\n if (!tenantId.match(/^[0-9a-zA-Z-.]+$/)) {\n const error = new Error(\"Invalid tenant id provided. You can locate your tenant id by following the instructions listed here: https://learn.microsoft.com/partner-center/find-ids-and-domain-names.\");\n logger.info((0, logging_js_1.formatError)(\"\", error));\n throw error;\n }\n}\n/**\n * @internal\n */\nfunction resolveTenantId(logger, tenantId, clientId) {\n if (tenantId) {\n checkTenantId(logger, tenantId);\n return tenantId;\n }\n if (!clientId) {\n clientId = constants_js_1.DeveloperSignOnClientId;\n }\n if (clientId !== constants_js_1.DeveloperSignOnClientId) {\n return \"common\";\n }\n return \"organizations\";\n}\n/**\n * @internal\n */\nfunction resolveAdditionallyAllowedTenantIds(additionallyAllowedTenants) {\n if (!additionallyAllowedTenants || additionallyAllowedTenants.length === 0) {\n return [];\n }\n if (additionallyAllowedTenants.includes(\"*\")) {\n return constants_js_1.ALL_TENANTS;\n }\n return additionallyAllowedTenants;\n}\n//# sourceMappingURL=tenantIdUtils.js.map","import fs from 'node:fs';\n\nlet isDockerCached;\n\nfunction hasDockerEnv() {\n\ttry {\n\t\tfs.statSync('/.dockerenv');\n\t\treturn true;\n\t} catch {\n\t\treturn false;\n\t}\n}\n\nfunction hasDockerCGroup() {\n\ttry {\n\t\treturn fs.readFileSync('/proc/self/cgroup', 'utf8').includes('docker');\n\t} catch {\n\t\treturn false;\n\t}\n}\n\nexport default function isDocker() {\n\t// TODO: Use `??=` when targeting Node.js 16.\n\tif (isDockerCached === undefined) {\n\t\tisDockerCached = hasDockerEnv() || hasDockerCGroup();\n\t}\n\n\treturn isDockerCached;\n}\n","import fs from 'node:fs';\nimport isDocker from 'is-docker';\n\nlet cachedResult;\n\n// Podman detection\nconst hasContainerEnv = () => {\n\ttry {\n\t\tfs.statSync('/run/.containerenv');\n\t\treturn true;\n\t} catch {\n\t\treturn false;\n\t}\n};\n\nexport default function isInsideContainer() {\n\t// TODO: Use `??=` when targeting Node.js 16.\n\tif (cachedResult === undefined) {\n\t\tcachedResult = hasContainerEnv() || isDocker();\n\t}\n\n\treturn cachedResult;\n}\n","import process from 'node:process';\nimport os from 'node:os';\nimport fs from 'node:fs';\nimport isInsideContainer from 'is-inside-container';\n\nconst isWsl = () => {\n\tif (process.platform !== 'linux') {\n\t\treturn false;\n\t}\n\n\tif (os.release().toLowerCase().includes('microsoft')) {\n\t\tif (isInsideContainer()) {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t}\n\n\ttry {\n\t\treturn fs.readFileSync('/proc/version', 'utf8').toLowerCase().includes('microsoft')\n\t\t\t? !isInsideContainer() : false;\n\t} catch {\n\t\treturn false;\n\t}\n};\n\nexport default process.env.__IS_WSL_TEST__ ? isWsl : isWsl();\n","import process from 'node:process';\nimport fs, {constants as fsConstants} from 'node:fs/promises';\nimport isWsl from 'is-wsl';\n\nexport const wslDrivesMountPoint = (() => {\n\t// Default value for \"root\" param\n\t// according to https://docs.microsoft.com/en-us/windows/wsl/wsl-config\n\tconst defaultMountPoint = '/mnt/';\n\n\tlet mountPoint;\n\n\treturn async function () {\n\t\tif (mountPoint) {\n\t\t\t// Return memoized mount point value\n\t\t\treturn mountPoint;\n\t\t}\n\n\t\tconst configFilePath = '/etc/wsl.conf';\n\n\t\tlet isConfigFileExists = false;\n\t\ttry {\n\t\t\tawait fs.access(configFilePath, fsConstants.F_OK);\n\t\t\tisConfigFileExists = true;\n\t\t} catch {}\n\n\t\tif (!isConfigFileExists) {\n\t\t\treturn defaultMountPoint;\n\t\t}\n\n\t\tconst configContent = await fs.readFile(configFilePath, {encoding: 'utf8'});\n\t\tconst configMountPoint = /(?.*)/g.exec(configContent);\n\n\t\tif (!configMountPoint) {\n\t\t\treturn defaultMountPoint;\n\t\t}\n\n\t\tmountPoint = configMountPoint.groups.mountPoint.trim();\n\t\tmountPoint = mountPoint.endsWith('/') ? mountPoint : `${mountPoint}/`;\n\n\t\treturn mountPoint;\n\t};\n})();\n\nexport const powerShellPathFromWsl = async () => {\n\tconst mountPoint = await wslDrivesMountPoint();\n\treturn `${mountPoint}c/Windows/System32/WindowsPowerShell/v1.0/powershell.exe`;\n};\n\nexport const powerShellPath = async () => {\n\tif (isWsl) {\n\t\treturn powerShellPathFromWsl();\n\t}\n\n\treturn `${process.env.SYSTEMROOT || process.env.windir || String.raw`C:\\Windows`}\\\\System32\\\\WindowsPowerShell\\\\v1.0\\\\powershell.exe`;\n};\n\nexport {default as isWsl} from 'is-wsl';\n","export default function defineLazyProperty(object, propertyName, valueGetter) {\n\tconst define = value => Object.defineProperty(object, propertyName, {value, enumerable: true, writable: true});\n\n\tObject.defineProperty(object, propertyName, {\n\t\tconfigurable: true,\n\t\tenumerable: true,\n\t\tget() {\n\t\t\tconst result = valueGetter();\n\t\t\tdefine(result);\n\t\t\treturn result;\n\t\t},\n\t\tset(value) {\n\t\t\tdefine(value);\n\t\t}\n\t});\n\n\treturn object;\n}\n","import {promisify} from 'node:util';\nimport process from 'node:process';\nimport {execFile} from 'node:child_process';\n\nconst execFileAsync = promisify(execFile);\n\nexport default async function defaultBrowserId() {\n\tif (process.platform !== 'darwin') {\n\t\tthrow new Error('macOS only');\n\t}\n\n\tconst {stdout} = await execFileAsync('defaults', ['read', 'com.apple.LaunchServices/com.apple.launchservices.secure', 'LSHandlers']);\n\n\t// `(?!-)` is to prevent matching `LSHandlerRoleAll = \"-\";`.\n\tconst match = /LSHandlerRoleAll = \"(?!-)(?[^\"]+?)\";\\s+?LSHandlerURLScheme = (?:http|https);/.exec(stdout);\n\n\tconst browserId = match?.groups.id ?? 'com.apple.Safari';\n\n\t// Correct the case for Safari's bundle identifier\n\tif (browserId === 'com.apple.safari') {\n\t\treturn 'com.apple.Safari';\n\t}\n\n\treturn browserId;\n}\n","import process from 'node:process';\nimport {promisify} from 'node:util';\nimport {execFile, execFileSync} from 'node:child_process';\n\nconst execFileAsync = promisify(execFile);\n\nexport async function runAppleScript(script, {humanReadableOutput = true, signal} = {}) {\n\tif (process.platform !== 'darwin') {\n\t\tthrow new Error('macOS only');\n\t}\n\n\tconst outputArguments = humanReadableOutput ? [] : ['-ss'];\n\n\tconst execOptions = {};\n\tif (signal) {\n\t\texecOptions.signal = signal;\n\t}\n\n\tconst {stdout} = await execFileAsync('osascript', ['-e', script, outputArguments], execOptions);\n\treturn stdout.trim();\n}\n\nexport function runAppleScriptSync(script, {humanReadableOutput = true} = {}) {\n\tif (process.platform !== 'darwin') {\n\t\tthrow new Error('macOS only');\n\t}\n\n\tconst outputArguments = humanReadableOutput ? [] : ['-ss'];\n\n\tconst stdout = execFileSync('osascript', ['-e', script, ...outputArguments], {\n\t\tencoding: 'utf8',\n\t\tstdio: ['ignore', 'pipe', 'ignore'],\n\t\ttimeout: 500,\n\t});\n\n\treturn stdout.trim();\n}\n","import {runAppleScript} from 'run-applescript';\n\nexport default async function bundleName(bundleId) {\n\treturn runAppleScript(`tell application \"Finder\" to set app_path to application file id \"${bundleId}\" as string\\ntell application \"System Events\" to get value of property list item \"CFBundleName\" of property list file (app_path & \":Contents:Info.plist\")`);\n}\n","import {promisify} from 'node:util';\nimport {execFile} from 'node:child_process';\n\nconst execFileAsync = promisify(execFile);\n\n// TODO: Fix the casing of bundle identifiers in the next major version.\n\n// Windows doesn't have browser IDs in the same way macOS/Linux does so we give fake\n// ones that look real and match the macOS/Linux versions for cross-platform apps.\nconst windowsBrowserProgIds = {\n\tMSEdgeHTM: {name: 'Edge', id: 'com.microsoft.edge'}, // The missing `L` is correct.\n\tMSEdgeBHTML: {name: 'Edge Beta', id: 'com.microsoft.edge.beta'},\n\tMSEdgeDHTML: {name: 'Edge Dev', id: 'com.microsoft.edge.dev'},\n\tAppXq0fevzme2pys62n3e0fbqa7peapykr8v: {name: 'Edge', id: 'com.microsoft.edge.old'},\n\tChromeHTML: {name: 'Chrome', id: 'com.google.chrome'},\n\tChromeBHTML: {name: 'Chrome Beta', id: 'com.google.chrome.beta'},\n\tChromeDHTML: {name: 'Chrome Dev', id: 'com.google.chrome.dev'},\n\tChromiumHTM: {name: 'Chromium', id: 'org.chromium.Chromium'},\n\tBraveHTML: {name: 'Brave', id: 'com.brave.Browser'},\n\tBraveBHTML: {name: 'Brave Beta', id: 'com.brave.Browser.beta'},\n\tBraveDHTML: {name: 'Brave Dev', id: 'com.brave.Browser.dev'},\n\tBraveSSHTM: {name: 'Brave Nightly', id: 'com.brave.Browser.nightly'},\n\tFirefoxURL: {name: 'Firefox', id: 'org.mozilla.firefox'},\n\tOperaStable: {name: 'Opera', id: 'com.operasoftware.Opera'},\n\tVivaldiHTM: {name: 'Vivaldi', id: 'com.vivaldi.Vivaldi'},\n\t'IE.HTTP': {name: 'Internet Explorer', id: 'com.microsoft.ie'},\n};\n\nexport const _windowsBrowserProgIdMap = new Map(Object.entries(windowsBrowserProgIds));\n\nexport class UnknownBrowserError extends Error {}\n\nexport default async function defaultBrowser(_execFileAsync = execFileAsync) {\n\tconst {stdout} = await _execFileAsync('reg', [\n\t\t'QUERY',\n\t\t' HKEY_CURRENT_USER\\\\Software\\\\Microsoft\\\\Windows\\\\Shell\\\\Associations\\\\UrlAssociations\\\\http\\\\UserChoice',\n\t\t'/v',\n\t\t'ProgId',\n\t]);\n\n\tconst match = /ProgId\\s*REG_SZ\\s*(?\\S+)/.exec(stdout);\n\tif (!match) {\n\t\tthrow new UnknownBrowserError(`Cannot find Windows browser in stdout: ${JSON.stringify(stdout)}`);\n\t}\n\n\tconst {id} = match.groups;\n\n\tconst browser = windowsBrowserProgIds[id];\n\tif (!browser) {\n\t\tthrow new UnknownBrowserError(`Unknown browser ID: ${id}`);\n\t}\n\n\treturn browser;\n}\n","import {promisify} from 'node:util';\nimport process from 'node:process';\nimport {execFile} from 'node:child_process';\nimport defaultBrowserId from 'default-browser-id';\nimport bundleName from 'bundle-name';\nimport windows from './windows.js';\n\nexport {_windowsBrowserProgIdMap} from './windows.js';\n\nconst execFileAsync = promisify(execFile);\n\n// Inlined: https://github.com/sindresorhus/titleize/blob/main/index.js\nconst titleize = string => string.toLowerCase().replaceAll(/(?:^|\\s|-)\\S/g, x => x.toUpperCase());\n\nexport default async function defaultBrowser() {\n\tif (process.platform === 'darwin') {\n\t\tconst id = await defaultBrowserId();\n\t\tconst name = await bundleName(id);\n\t\treturn {name, id};\n\t}\n\n\tif (process.platform === 'linux') {\n\t\tconst {stdout} = await execFileAsync('xdg-mime', ['query', 'default', 'x-scheme-handler/http']);\n\t\tconst id = stdout.trim();\n\t\tconst name = titleize(id.replace(/.desktop$/, '').replace('-', ' '));\n\t\treturn {name, id};\n\t}\n\n\tif (process.platform === 'win32') {\n\t\treturn windows();\n\t}\n\n\tthrow new Error('Only macOS, Linux, and Windows are supported');\n}\n","import process from 'node:process';\nimport {Buffer} from 'node:buffer';\nimport path from 'node:path';\nimport {fileURLToPath} from 'node:url';\nimport {promisify} from 'node:util';\nimport childProcess from 'node:child_process';\nimport fs, {constants as fsConstants} from 'node:fs/promises';\nimport {isWsl, powerShellPath} from 'wsl-utils';\nimport defineLazyProperty from 'define-lazy-prop';\nimport defaultBrowser from 'default-browser';\nimport isInsideContainer from 'is-inside-container';\n\nconst execFile = promisify(childProcess.execFile);\n\n// Path to included `xdg-open`.\nconst __dirname = path.dirname(fileURLToPath(import.meta.url));\nconst localXdgOpenPath = path.join(__dirname, 'xdg-open');\n\nconst {platform, arch} = process;\n\n/**\nGet the default browser name in Windows from WSL.\n\n@returns {Promise} Browser name.\n*/\nasync function getWindowsDefaultBrowserFromWsl() {\n\tconst powershellPath = await powerShellPath();\n\tconst rawCommand = String.raw`(Get-ItemProperty -Path \"HKCU:\\Software\\Microsoft\\Windows\\Shell\\Associations\\UrlAssociations\\http\\UserChoice\").ProgId`;\n\tconst encodedCommand = Buffer.from(rawCommand, 'utf16le').toString('base64');\n\n\tconst {stdout} = await execFile(\n\t\tpowershellPath,\n\t\t[\n\t\t\t'-NoProfile',\n\t\t\t'-NonInteractive',\n\t\t\t'-ExecutionPolicy',\n\t\t\t'Bypass',\n\t\t\t'-EncodedCommand',\n\t\t\tencodedCommand,\n\t\t],\n\t\t{encoding: 'utf8'},\n\t);\n\n\tconst progId = stdout.trim();\n\n\t// Map ProgId to browser IDs\n\tconst browserMap = {\n\t\tChromeHTML: 'com.google.chrome',\n\t\tBraveHTML: 'com.brave.Browser',\n\t\tMSEdgeHTM: 'com.microsoft.edge',\n\t\tFirefoxURL: 'org.mozilla.firefox',\n\t};\n\n\treturn browserMap[progId] ? {id: browserMap[progId]} : {};\n}\n\nconst pTryEach = async (array, mapper) => {\n\tlet latestError;\n\n\tfor (const item of array) {\n\t\ttry {\n\t\t\treturn await mapper(item); // eslint-disable-line no-await-in-loop\n\t\t} catch (error) {\n\t\t\tlatestError = error;\n\t\t}\n\t}\n\n\tthrow latestError;\n};\n\n// eslint-disable-next-line complexity\nconst baseOpen = async options => {\n\toptions = {\n\t\twait: false,\n\t\tbackground: false,\n\t\tnewInstance: false,\n\t\tallowNonzeroExitCode: false,\n\t\t...options,\n\t};\n\n\tif (Array.isArray(options.app)) {\n\t\treturn pTryEach(options.app, singleApp => baseOpen({\n\t\t\t...options,\n\t\t\tapp: singleApp,\n\t\t}));\n\t}\n\n\tlet {name: app, arguments: appArguments = []} = options.app ?? {};\n\tappArguments = [...appArguments];\n\n\tif (Array.isArray(app)) {\n\t\treturn pTryEach(app, appName => baseOpen({\n\t\t\t...options,\n\t\t\tapp: {\n\t\t\t\tname: appName,\n\t\t\t\targuments: appArguments,\n\t\t\t},\n\t\t}));\n\t}\n\n\tif (app === 'browser' || app === 'browserPrivate') {\n\t\t// IDs from default-browser for macOS and windows are the same\n\t\tconst ids = {\n\t\t\t'com.google.chrome': 'chrome',\n\t\t\t'google-chrome.desktop': 'chrome',\n\t\t\t'com.brave.Browser': 'brave',\n\t\t\t'org.mozilla.firefox': 'firefox',\n\t\t\t'firefox.desktop': 'firefox',\n\t\t\t'com.microsoft.msedge': 'edge',\n\t\t\t'com.microsoft.edge': 'edge',\n\t\t\t'com.microsoft.edgemac': 'edge',\n\t\t\t'microsoft-edge.desktop': 'edge',\n\t\t};\n\n\t\t// Incognito flags for each browser in `apps`.\n\t\tconst flags = {\n\t\t\tchrome: '--incognito',\n\t\t\tbrave: '--incognito',\n\t\t\tfirefox: '--private-window',\n\t\t\tedge: '--inPrivate',\n\t\t};\n\n\t\tconst browser = isWsl ? await getWindowsDefaultBrowserFromWsl() : await defaultBrowser();\n\t\tif (browser.id in ids) {\n\t\t\tconst browserName = ids[browser.id];\n\n\t\t\tif (app === 'browserPrivate') {\n\t\t\t\tappArguments.push(flags[browserName]);\n\t\t\t}\n\n\t\t\treturn baseOpen({\n\t\t\t\t...options,\n\t\t\t\tapp: {\n\t\t\t\t\tname: apps[browserName],\n\t\t\t\t\targuments: appArguments,\n\t\t\t\t},\n\t\t\t});\n\t\t}\n\n\t\tthrow new Error(`${browser.name} is not supported as a default browser`);\n\t}\n\n\tlet command;\n\tconst cliArguments = [];\n\tconst childProcessOptions = {};\n\n\tif (platform === 'darwin') {\n\t\tcommand = 'open';\n\n\t\tif (options.wait) {\n\t\t\tcliArguments.push('--wait-apps');\n\t\t}\n\n\t\tif (options.background) {\n\t\t\tcliArguments.push('--background');\n\t\t}\n\n\t\tif (options.newInstance) {\n\t\t\tcliArguments.push('--new');\n\t\t}\n\n\t\tif (app) {\n\t\t\tcliArguments.push('-a', app);\n\t\t}\n\t} else if (platform === 'win32' || (isWsl && !isInsideContainer() && !app)) {\n\t\tcommand = await powerShellPath();\n\n\t\tcliArguments.push(\n\t\t\t'-NoProfile',\n\t\t\t'-NonInteractive',\n\t\t\t'-ExecutionPolicy',\n\t\t\t'Bypass',\n\t\t\t'-EncodedCommand',\n\t\t);\n\n\t\tif (!isWsl) {\n\t\t\tchildProcessOptions.windowsVerbatimArguments = true;\n\t\t}\n\n\t\tconst encodedArguments = ['Start'];\n\n\t\tif (options.wait) {\n\t\t\tencodedArguments.push('-Wait');\n\t\t}\n\n\t\tif (app) {\n\t\t\t// Double quote with double quotes to ensure the inner quotes are passed through.\n\t\t\t// Inner quotes are delimited for PowerShell interpretation with backticks.\n\t\t\tencodedArguments.push(`\"\\`\"${app}\\`\"\"`);\n\t\t\tif (options.target) {\n\t\t\t\tappArguments.push(options.target);\n\t\t\t}\n\t\t} else if (options.target) {\n\t\t\tencodedArguments.push(`\"${options.target}\"`);\n\t\t}\n\n\t\tif (appArguments.length > 0) {\n\t\t\tappArguments = appArguments.map(argument => `\"\\`\"${argument}\\`\"\"`);\n\t\t\tencodedArguments.push('-ArgumentList', appArguments.join(','));\n\t\t}\n\n\t\t// Using Base64-encoded command, accepted by PowerShell, to allow special characters.\n\t\toptions.target = Buffer.from(encodedArguments.join(' '), 'utf16le').toString('base64');\n\t} else {\n\t\tif (app) {\n\t\t\tcommand = app;\n\t\t} else {\n\t\t\t// When bundled by Webpack, there's no actual package file path and no local `xdg-open`.\n\t\t\tconst isBundled = !__dirname || __dirname === '/';\n\n\t\t\t// Check if local `xdg-open` exists and is executable.\n\t\t\tlet exeLocalXdgOpen = false;\n\t\t\ttry {\n\t\t\t\tawait fs.access(localXdgOpenPath, fsConstants.X_OK);\n\t\t\t\texeLocalXdgOpen = true;\n\t\t\t} catch {}\n\n\t\t\tconst useSystemXdgOpen = process.versions.electron\n\t\t\t\t?? (platform === 'android' || isBundled || !exeLocalXdgOpen);\n\t\t\tcommand = useSystemXdgOpen ? 'xdg-open' : localXdgOpenPath;\n\t\t}\n\n\t\tif (appArguments.length > 0) {\n\t\t\tcliArguments.push(...appArguments);\n\t\t}\n\n\t\tif (!options.wait) {\n\t\t\t// `xdg-open` will block the process unless stdio is ignored\n\t\t\t// and it's detached from the parent even if it's unref'd.\n\t\t\tchildProcessOptions.stdio = 'ignore';\n\t\t\tchildProcessOptions.detached = true;\n\t\t}\n\t}\n\n\tif (platform === 'darwin' && appArguments.length > 0) {\n\t\tcliArguments.push('--args', ...appArguments);\n\t}\n\n\t// This has to come after `--args`.\n\tif (options.target) {\n\t\tcliArguments.push(options.target);\n\t}\n\n\tconst subprocess = childProcess.spawn(command, cliArguments, childProcessOptions);\n\n\tif (options.wait) {\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tsubprocess.once('error', reject);\n\n\t\t\tsubprocess.once('close', exitCode => {\n\t\t\t\tif (!options.allowNonzeroExitCode && exitCode > 0) {\n\t\t\t\t\treject(new Error(`Exited with code ${exitCode}`));\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tresolve(subprocess);\n\t\t\t});\n\t\t});\n\t}\n\n\tsubprocess.unref();\n\n\treturn subprocess;\n};\n\nconst open = (target, options) => {\n\tif (typeof target !== 'string') {\n\t\tthrow new TypeError('Expected a `target`');\n\t}\n\n\treturn baseOpen({\n\t\t...options,\n\t\ttarget,\n\t});\n};\n\nexport const openApp = (name, options) => {\n\tif (typeof name !== 'string' && !Array.isArray(name)) {\n\t\tthrow new TypeError('Expected a valid `name`');\n\t}\n\n\tconst {arguments: appArguments = []} = options ?? {};\n\tif (appArguments !== undefined && appArguments !== null && !Array.isArray(appArguments)) {\n\t\tthrow new TypeError('Expected `appArguments` as Array type');\n\t}\n\n\treturn baseOpen({\n\t\t...options,\n\t\tapp: {\n\t\t\tname,\n\t\t\targuments: appArguments,\n\t\t},\n\t});\n};\n\nfunction detectArchBinary(binary) {\n\tif (typeof binary === 'string' || Array.isArray(binary)) {\n\t\treturn binary;\n\t}\n\n\tconst {[arch]: archBinary} = binary;\n\n\tif (!archBinary) {\n\t\tthrow new Error(`${arch} is not supported`);\n\t}\n\n\treturn archBinary;\n}\n\nfunction detectPlatformBinary({[platform]: platformBinary}, {wsl}) {\n\tif (wsl && isWsl) {\n\t\treturn detectArchBinary(wsl);\n\t}\n\n\tif (!platformBinary) {\n\t\tthrow new Error(`${platform} is not supported`);\n\t}\n\n\treturn detectArchBinary(platformBinary);\n}\n\nexport const apps = {};\n\ndefineLazyProperty(apps, 'chrome', () => detectPlatformBinary({\n\tdarwin: 'google chrome',\n\twin32: 'chrome',\n\tlinux: ['google-chrome', 'google-chrome-stable', 'chromium'],\n}, {\n\twsl: {\n\t\tia32: '/mnt/c/Program Files (x86)/Google/Chrome/Application/chrome.exe',\n\t\tx64: ['/mnt/c/Program Files/Google/Chrome/Application/chrome.exe', '/mnt/c/Program Files (x86)/Google/Chrome/Application/chrome.exe'],\n\t},\n}));\n\ndefineLazyProperty(apps, 'brave', () => detectPlatformBinary({\n\tdarwin: 'brave browser',\n\twin32: 'brave',\n\tlinux: ['brave-browser', 'brave'],\n}, {\n\twsl: {\n\t\tia32: '/mnt/c/Program Files (x86)/BraveSoftware/Brave-Browser/Application/brave.exe',\n\t\tx64: ['/mnt/c/Program Files/BraveSoftware/Brave-Browser/Application/brave.exe', '/mnt/c/Program Files (x86)/BraveSoftware/Brave-Browser/Application/brave.exe'],\n\t},\n}));\n\ndefineLazyProperty(apps, 'firefox', () => detectPlatformBinary({\n\tdarwin: 'firefox',\n\twin32: String.raw`C:\\Program Files\\Mozilla Firefox\\firefox.exe`,\n\tlinux: 'firefox',\n}, {\n\twsl: '/mnt/c/Program Files/Mozilla Firefox/firefox.exe',\n}));\n\ndefineLazyProperty(apps, 'edge', () => detectPlatformBinary({\n\tdarwin: 'microsoft edge',\n\twin32: 'msedge',\n\tlinux: ['microsoft-edge', 'microsoft-edge-dev'],\n}, {\n\twsl: '/mnt/c/Program Files (x86)/Microsoft/Edge/Application/msedge.exe',\n}));\n\ndefineLazyProperty(apps, 'browser', () => 'browser');\n\ndefineLazyProperty(apps, 'browserPrivate', () => 'browserPrivate');\n\nexport default open;\n","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.generateMsalConfiguration = generateMsalConfiguration;\nexports.createMsalClient = createMsalClient;\nconst tslib_1 = require(\"tslib\");\nconst msal = tslib_1.__importStar(require(\"@azure/msal-node\"));\nconst logging_js_1 = require(\"../../util/logging.js\");\nconst msalPlugins_js_1 = require(\"./msalPlugins.js\");\nconst utils_js_1 = require(\"../utils.js\");\nconst errors_js_1 = require(\"../../errors.js\");\nconst identityClient_js_1 = require(\"../../client/identityClient.js\");\nconst regionalAuthority_js_1 = require(\"../../regionalAuthority.js\");\nconst logger_1 = require(\"@azure/logger\");\nconst tenantIdUtils_js_1 = require(\"../../util/tenantIdUtils.js\");\n/**\n * The default logger used if no logger was passed in by the credential.\n */\nconst msalLogger = (0, logging_js_1.credentialLogger)(\"MsalClient\");\n/**\n * Generates the configuration for MSAL (Microsoft Authentication Library).\n *\n * @param clientId - The client ID of the application.\n * @param tenantId - The tenant ID of the Azure Active Directory.\n * @param msalClientOptions - Optional. Additional options for creating the MSAL client.\n * @returns The MSAL configuration object.\n */\nfunction generateMsalConfiguration(clientId, tenantId, msalClientOptions = {}) {\n const resolvedTenant = (0, tenantIdUtils_js_1.resolveTenantId)(msalClientOptions.logger ?? msalLogger, tenantId, clientId);\n // TODO: move and reuse getIdentityClientAuthorityHost\n const authority = (0, utils_js_1.getAuthority)(resolvedTenant, (0, utils_js_1.getAuthorityHost)(msalClientOptions));\n const httpClient = new identityClient_js_1.IdentityClient({\n ...msalClientOptions.tokenCredentialOptions,\n authorityHost: authority,\n loggingOptions: msalClientOptions.loggingOptions,\n });\n const msalConfig = {\n auth: {\n clientId,\n authority,\n knownAuthorities: (0, utils_js_1.getKnownAuthorities)(resolvedTenant, authority, msalClientOptions.disableInstanceDiscovery),\n },\n system: {\n networkClient: httpClient,\n loggerOptions: {\n loggerCallback: (0, utils_js_1.defaultLoggerCallback)(msalClientOptions.logger ?? msalLogger),\n logLevel: (0, utils_js_1.getMSALLogLevel)((0, logger_1.getLogLevel)()),\n piiLoggingEnabled: msalClientOptions.loggingOptions?.enableUnsafeSupportLogging,\n },\n },\n };\n return msalConfig;\n}\n/**\n * Creates an instance of the MSAL (Microsoft Authentication Library) client.\n *\n * @param clientId - The client ID of the application.\n * @param tenantId - The tenant ID of the Azure Active Directory.\n * @param createMsalClientOptions - Optional. Additional options for creating the MSAL client.\n * @returns An instance of the MSAL client.\n *\n * @public\n */\nfunction createMsalClient(clientId, tenantId, createMsalClientOptions = {}) {\n const state = {\n msalConfig: generateMsalConfiguration(clientId, tenantId, createMsalClientOptions),\n cachedAccount: createMsalClientOptions.authenticationRecord\n ? (0, utils_js_1.publicToMsal)(createMsalClientOptions.authenticationRecord)\n : null,\n pluginConfiguration: msalPlugins_js_1.msalPlugins.generatePluginConfiguration(createMsalClientOptions),\n logger: createMsalClientOptions.logger ?? msalLogger,\n };\n const publicApps = new Map();\n async function getPublicApp(options = {}) {\n const appKey = options.enableCae ? \"CAE\" : \"default\";\n let publicClientApp = publicApps.get(appKey);\n if (publicClientApp) {\n state.logger.getToken.info(\"Existing PublicClientApplication found in cache, returning it.\");\n return publicClientApp;\n }\n // Initialize a new app and cache it\n state.logger.getToken.info(`Creating new PublicClientApplication with CAE ${options.enableCae ? \"enabled\" : \"disabled\"}.`);\n const cachePlugin = options.enableCae\n ? state.pluginConfiguration.cache.cachePluginCae\n : state.pluginConfiguration.cache.cachePlugin;\n state.msalConfig.auth.clientCapabilities = options.enableCae ? [\"cp1\"] : undefined;\n publicClientApp = new msal.PublicClientApplication({\n ...state.msalConfig,\n broker: { nativeBrokerPlugin: state.pluginConfiguration.broker.nativeBrokerPlugin },\n cache: { cachePlugin: await cachePlugin },\n });\n publicApps.set(appKey, publicClientApp);\n return publicClientApp;\n }\n const confidentialApps = new Map();\n async function getConfidentialApp(options = {}) {\n const appKey = options.enableCae ? \"CAE\" : \"default\";\n let confidentialClientApp = confidentialApps.get(appKey);\n if (confidentialClientApp) {\n state.logger.getToken.info(\"Existing ConfidentialClientApplication found in cache, returning it.\");\n return confidentialClientApp;\n }\n // Initialize a new app and cache it\n state.logger.getToken.info(`Creating new ConfidentialClientApplication with CAE ${options.enableCae ? \"enabled\" : \"disabled\"}.`);\n const cachePlugin = options.enableCae\n ? state.pluginConfiguration.cache.cachePluginCae\n : state.pluginConfiguration.cache.cachePlugin;\n state.msalConfig.auth.clientCapabilities = options.enableCae ? [\"cp1\"] : undefined;\n confidentialClientApp = new msal.ConfidentialClientApplication({\n ...state.msalConfig,\n broker: { nativeBrokerPlugin: state.pluginConfiguration.broker.nativeBrokerPlugin },\n cache: { cachePlugin: await cachePlugin },\n });\n confidentialApps.set(appKey, confidentialClientApp);\n return confidentialClientApp;\n }\n async function getTokenSilent(app, scopes, options = {}) {\n if (state.cachedAccount === null) {\n state.logger.getToken.info(\"No cached account found in local state.\");\n throw new errors_js_1.AuthenticationRequiredError({ scopes });\n }\n // Keep track and reuse the claims we received across challenges\n if (options.claims) {\n state.cachedClaims = options.claims;\n }\n const silentRequest = {\n account: state.cachedAccount,\n scopes,\n claims: state.cachedClaims,\n };\n if (state.pluginConfiguration.broker.isEnabled) {\n silentRequest.tokenQueryParameters ||= {};\n if (state.pluginConfiguration.broker.enableMsaPassthrough) {\n silentRequest.tokenQueryParameters[\"msal_request_type\"] = \"consumer_passthrough\";\n }\n }\n if (options.proofOfPossessionOptions) {\n silentRequest.shrNonce = options.proofOfPossessionOptions.nonce;\n silentRequest.authenticationScheme = \"pop\";\n silentRequest.resourceRequestMethod = options.proofOfPossessionOptions.resourceRequestMethod;\n silentRequest.resourceRequestUri = options.proofOfPossessionOptions.resourceRequestUrl;\n }\n state.logger.getToken.info(\"Attempting to acquire token silently\");\n try {\n return await app.acquireTokenSilent(silentRequest);\n }\n catch (err) {\n throw (0, utils_js_1.handleMsalError)(scopes, err, options);\n }\n }\n /**\n * Builds an authority URL for the given request. The authority may be different than the one used when creating the MSAL client\n * if the user is creating cross-tenant requests\n */\n function calculateRequestAuthority(options) {\n if (options?.tenantId) {\n return (0, utils_js_1.getAuthority)(options.tenantId, (0, utils_js_1.getAuthorityHost)(createMsalClientOptions));\n }\n return state.msalConfig.auth.authority;\n }\n /**\n * Performs silent authentication using MSAL to acquire an access token.\n * If silent authentication fails, falls back to interactive authentication.\n *\n * @param msalApp - The MSAL application instance.\n * @param scopes - The scopes for which to acquire the access token.\n * @param options - The options for acquiring the access token.\n * @param onAuthenticationRequired - A callback function to handle interactive authentication when silent authentication fails.\n * @returns A promise that resolves to an AccessToken object containing the access token and its expiration timestamp.\n */\n async function withSilentAuthentication(msalApp, scopes, options, onAuthenticationRequired) {\n let response = null;\n try {\n response = await getTokenSilent(msalApp, scopes, options);\n }\n catch (e) {\n if (e.name !== \"AuthenticationRequiredError\") {\n throw e;\n }\n if (options.disableAutomaticAuthentication) {\n throw new errors_js_1.AuthenticationRequiredError({\n scopes,\n getTokenOptions: options,\n message: \"Automatic authentication has been disabled. You may call the authentication() method.\",\n });\n }\n }\n // Silent authentication failed\n if (response === null) {\n try {\n response = await onAuthenticationRequired();\n }\n catch (err) {\n throw (0, utils_js_1.handleMsalError)(scopes, err, options);\n }\n }\n // At this point we should have a token, process it\n (0, utils_js_1.ensureValidMsalToken)(scopes, response, options);\n state.cachedAccount = response?.account ?? null;\n state.logger.getToken.info((0, logging_js_1.formatSuccess)(scopes));\n return {\n token: response.accessToken,\n expiresOnTimestamp: response.expiresOn.getTime(),\n refreshAfterTimestamp: response.refreshOn?.getTime(),\n tokenType: response.tokenType,\n };\n }\n async function getTokenByClientSecret(scopes, clientSecret, options = {}) {\n state.logger.getToken.info(`Attempting to acquire token using client secret`);\n state.msalConfig.auth.clientSecret = clientSecret;\n const msalApp = await getConfidentialApp(options);\n try {\n const response = await msalApp.acquireTokenByClientCredential({\n scopes,\n authority: calculateRequestAuthority(options),\n azureRegion: (0, regionalAuthority_js_1.calculateRegionalAuthority)(),\n claims: options?.claims,\n });\n (0, utils_js_1.ensureValidMsalToken)(scopes, response, options);\n state.logger.getToken.info((0, logging_js_1.formatSuccess)(scopes));\n return {\n token: response.accessToken,\n expiresOnTimestamp: response.expiresOn.getTime(),\n refreshAfterTimestamp: response.refreshOn?.getTime(),\n tokenType: response.tokenType,\n };\n }\n catch (err) {\n throw (0, utils_js_1.handleMsalError)(scopes, err, options);\n }\n }\n async function getTokenByClientAssertion(scopes, clientAssertion, options = {}) {\n state.logger.getToken.info(`Attempting to acquire token using client assertion`);\n state.msalConfig.auth.clientAssertion = clientAssertion;\n const msalApp = await getConfidentialApp(options);\n try {\n const response = await msalApp.acquireTokenByClientCredential({\n scopes,\n authority: calculateRequestAuthority(options),\n azureRegion: (0, regionalAuthority_js_1.calculateRegionalAuthority)(),\n claims: options?.claims,\n clientAssertion,\n });\n (0, utils_js_1.ensureValidMsalToken)(scopes, response, options);\n state.logger.getToken.info((0, logging_js_1.formatSuccess)(scopes));\n return {\n token: response.accessToken,\n expiresOnTimestamp: response.expiresOn.getTime(),\n refreshAfterTimestamp: response.refreshOn?.getTime(),\n tokenType: response.tokenType,\n };\n }\n catch (err) {\n throw (0, utils_js_1.handleMsalError)(scopes, err, options);\n }\n }\n async function getTokenByClientCertificate(scopes, certificate, options = {}) {\n state.logger.getToken.info(`Attempting to acquire token using client certificate`);\n state.msalConfig.auth.clientCertificate = certificate;\n const msalApp = await getConfidentialApp(options);\n try {\n const response = await msalApp.acquireTokenByClientCredential({\n scopes,\n authority: calculateRequestAuthority(options),\n azureRegion: (0, regionalAuthority_js_1.calculateRegionalAuthority)(),\n claims: options?.claims,\n });\n (0, utils_js_1.ensureValidMsalToken)(scopes, response, options);\n state.logger.getToken.info((0, logging_js_1.formatSuccess)(scopes));\n return {\n token: response.accessToken,\n expiresOnTimestamp: response.expiresOn.getTime(),\n refreshAfterTimestamp: response.refreshOn?.getTime(),\n tokenType: response.tokenType,\n };\n }\n catch (err) {\n throw (0, utils_js_1.handleMsalError)(scopes, err, options);\n }\n }\n async function getTokenByDeviceCode(scopes, deviceCodeCallback, options = {}) {\n state.logger.getToken.info(`Attempting to acquire token using device code`);\n const msalApp = await getPublicApp(options);\n return withSilentAuthentication(msalApp, scopes, options, () => {\n const requestOptions = {\n scopes,\n cancel: options?.abortSignal?.aborted ?? false,\n deviceCodeCallback,\n authority: calculateRequestAuthority(options),\n claims: options?.claims,\n };\n const deviceCodeRequest = msalApp.acquireTokenByDeviceCode(requestOptions);\n if (options.abortSignal) {\n options.abortSignal.addEventListener(\"abort\", () => {\n requestOptions.cancel = true;\n });\n }\n return deviceCodeRequest;\n });\n }\n async function getTokenByUsernamePassword(scopes, username, password, options = {}) {\n state.logger.getToken.info(`Attempting to acquire token using username and password`);\n const msalApp = await getPublicApp(options);\n return withSilentAuthentication(msalApp, scopes, options, () => {\n const requestOptions = {\n scopes,\n username,\n password,\n authority: calculateRequestAuthority(options),\n claims: options?.claims,\n };\n return msalApp.acquireTokenByUsernamePassword(requestOptions);\n });\n }\n function getActiveAccount() {\n if (!state.cachedAccount) {\n return undefined;\n }\n return (0, utils_js_1.msalToPublic)(clientId, state.cachedAccount);\n }\n async function getTokenByAuthorizationCode(scopes, redirectUri, authorizationCode, clientSecret, options = {}) {\n state.logger.getToken.info(`Attempting to acquire token using authorization code`);\n let msalApp;\n if (clientSecret) {\n // If a client secret is provided, we need to use a confidential client application\n // See https://learn.microsoft.com/entra/identity-platform/v2-oauth2-auth-code-flow#request-an-access-token-with-a-client_secret\n state.msalConfig.auth.clientSecret = clientSecret;\n msalApp = await getConfidentialApp(options);\n }\n else {\n msalApp = await getPublicApp(options);\n }\n return withSilentAuthentication(msalApp, scopes, options, () => {\n return msalApp.acquireTokenByCode({\n scopes,\n redirectUri,\n code: authorizationCode,\n authority: calculateRequestAuthority(options),\n claims: options?.claims,\n });\n });\n }\n async function getTokenOnBehalfOf(scopes, userAssertionToken, clientCredentials, options = {}) {\n msalLogger.getToken.info(`Attempting to acquire token on behalf of another user`);\n if (typeof clientCredentials === \"string\") {\n // Client secret\n msalLogger.getToken.info(`Using client secret for on behalf of flow`);\n state.msalConfig.auth.clientSecret = clientCredentials;\n }\n else if (typeof clientCredentials === \"function\") {\n // Client Assertion\n msalLogger.getToken.info(`Using client assertion callback for on behalf of flow`);\n state.msalConfig.auth.clientAssertion = clientCredentials;\n }\n else {\n // Client certificate\n msalLogger.getToken.info(`Using client certificate for on behalf of flow`);\n state.msalConfig.auth.clientCertificate = clientCredentials;\n }\n const msalApp = await getConfidentialApp(options);\n try {\n const response = await msalApp.acquireTokenOnBehalfOf({\n scopes,\n authority: calculateRequestAuthority(options),\n claims: options.claims,\n oboAssertion: userAssertionToken,\n });\n (0, utils_js_1.ensureValidMsalToken)(scopes, response, options);\n msalLogger.getToken.info((0, logging_js_1.formatSuccess)(scopes));\n return {\n token: response.accessToken,\n expiresOnTimestamp: response.expiresOn.getTime(),\n refreshAfterTimestamp: response.refreshOn?.getTime(),\n tokenType: response.tokenType,\n };\n }\n catch (err) {\n throw (0, utils_js_1.handleMsalError)(scopes, err, options);\n }\n }\n /**\n * Creates a base interactive request configuration for MSAL interactive authentication.\n * This is shared between interactive and brokered authentication flows.\n */\n function createBaseInteractiveRequest(scopes, options) {\n return {\n openBrowser: async (url) => {\n const open = await import(\"open\");\n await open.default(url, { newInstance: true });\n },\n scopes,\n authority: calculateRequestAuthority(options),\n claims: options?.claims,\n loginHint: options?.loginHint,\n errorTemplate: options?.browserCustomizationOptions?.errorMessage,\n successTemplate: options?.browserCustomizationOptions?.successMessage,\n prompt: options?.loginHint ? \"login\" : \"select_account\",\n };\n }\n /**\n * @internal\n */\n async function getBrokeredTokenInternal(scopes, useDefaultBrokerAccount, options = {}) {\n msalLogger.verbose(\"Authentication will resume through the broker\");\n const app = await getPublicApp(options);\n const interactiveRequest = createBaseInteractiveRequest(scopes, options);\n if (state.pluginConfiguration.broker.parentWindowHandle) {\n interactiveRequest.windowHandle = Buffer.from(state.pluginConfiguration.broker.parentWindowHandle);\n }\n else {\n // this is a bug, as the pluginConfiguration handler should validate this case.\n msalLogger.warning(\"Parent window handle is not specified for the broker. This may cause unexpected behavior. Please provide the parentWindowHandle.\");\n }\n if (state.pluginConfiguration.broker.enableMsaPassthrough) {\n (interactiveRequest.tokenQueryParameters ??= {})[\"msal_request_type\"] =\n \"consumer_passthrough\";\n }\n if (useDefaultBrokerAccount) {\n interactiveRequest.prompt = \"none\";\n msalLogger.verbose(\"Attempting broker authentication using the default broker account\");\n }\n else {\n msalLogger.verbose(\"Attempting broker authentication without the default broker account\");\n }\n if (options.proofOfPossessionOptions) {\n interactiveRequest.shrNonce = options.proofOfPossessionOptions.nonce;\n interactiveRequest.authenticationScheme = \"pop\";\n interactiveRequest.resourceRequestMethod =\n options.proofOfPossessionOptions.resourceRequestMethod;\n interactiveRequest.resourceRequestUri = options.proofOfPossessionOptions.resourceRequestUrl;\n }\n try {\n return await app.acquireTokenInteractive(interactiveRequest);\n }\n catch (e) {\n msalLogger.verbose(`Failed to authenticate through the broker: ${e.message}`);\n if (options.disableAutomaticAuthentication) {\n throw new errors_js_1.AuthenticationRequiredError({\n scopes,\n getTokenOptions: options,\n message: \"Cannot silently authenticate with default broker account.\",\n });\n }\n // If we tried to use the default broker account and failed, fall back to interactive authentication\n if (useDefaultBrokerAccount) {\n return getBrokeredTokenInternal(scopes, false, options);\n }\n else {\n throw e;\n }\n }\n }\n /**\n * A helper function that supports brokered authentication through the MSAL's public application.\n *\n * When useDefaultBrokerAccount is true, the method will attempt to authenticate using the default broker account.\n * If the default broker account is not available, the method will fall back to interactive authentication.\n */\n async function getBrokeredToken(scopes, useDefaultBrokerAccount, options = {}) {\n msalLogger.getToken.info(`Attempting to acquire token using brokered authentication with useDefaultBrokerAccount: ${useDefaultBrokerAccount}`);\n const response = await getBrokeredTokenInternal(scopes, useDefaultBrokerAccount, options);\n (0, utils_js_1.ensureValidMsalToken)(scopes, response, options);\n state.cachedAccount = response?.account ?? null;\n state.logger.getToken.info((0, logging_js_1.formatSuccess)(scopes));\n return {\n token: response.accessToken,\n expiresOnTimestamp: response.expiresOn.getTime(),\n refreshAfterTimestamp: response.refreshOn?.getTime(),\n tokenType: response.tokenType,\n };\n }\n async function getTokenByInteractiveRequest(scopes, options = {}) {\n msalLogger.getToken.info(`Attempting to acquire token interactively`);\n const app = await getPublicApp(options);\n return withSilentAuthentication(app, scopes, options, async () => {\n const interactiveRequest = createBaseInteractiveRequest(scopes, options);\n if (state.pluginConfiguration.broker.isEnabled) {\n return getBrokeredTokenInternal(scopes, state.pluginConfiguration.broker.useDefaultBrokerAccount ?? false, options);\n }\n if (options.proofOfPossessionOptions) {\n interactiveRequest.shrNonce = options.proofOfPossessionOptions.nonce;\n interactiveRequest.authenticationScheme = \"pop\";\n interactiveRequest.resourceRequestMethod =\n options.proofOfPossessionOptions.resourceRequestMethod;\n interactiveRequest.resourceRequestUri = options.proofOfPossessionOptions.resourceRequestUrl;\n }\n return app.acquireTokenInteractive(interactiveRequest);\n });\n }\n return {\n getActiveAccount,\n getBrokeredToken,\n getTokenByClientSecret,\n getTokenByClientAssertion,\n getTokenByClientCertificate,\n getTokenByDeviceCode,\n getTokenByUsernamePassword,\n getTokenByAuthorizationCode,\n getTokenOnBehalfOf,\n getTokenByInteractiveRequest,\n };\n}\n//# sourceMappingURL=msalClient.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ClientCertificateCredential = void 0;\nexports.parseCertificate = parseCertificate;\nconst msalClient_js_1 = require(\"../msal/nodeFlows/msalClient.js\");\nconst node_crypto_1 = require(\"node:crypto\");\nconst tenantIdUtils_js_1 = require(\"../util/tenantIdUtils.js\");\nconst logging_js_1 = require(\"../util/logging.js\");\nconst promises_1 = require(\"node:fs/promises\");\nconst tracing_js_1 = require(\"../util/tracing.js\");\nconst credentialName = \"ClientCertificateCredential\";\nconst logger = (0, logging_js_1.credentialLogger)(credentialName);\n/**\n * Enables authentication to Microsoft Entra ID using a PEM-encoded\n * certificate that is assigned to an App Registration. More information\n * on how to configure certificate authentication can be found here:\n *\n * https://learn.microsoft.com/azure/active-directory/develop/active-directory-certificate-credentials#register-your-certificate-with-azure-ad\n *\n */\nclass ClientCertificateCredential {\n tenantId;\n additionallyAllowedTenantIds;\n certificateConfiguration;\n sendCertificateChain;\n msalClient;\n constructor(tenantId, clientId, certificatePathOrConfiguration, options = {}) {\n if (!tenantId || !clientId) {\n throw new Error(`${credentialName}: tenantId and clientId are required parameters.`);\n }\n this.tenantId = tenantId;\n this.additionallyAllowedTenantIds = (0, tenantIdUtils_js_1.resolveAdditionallyAllowedTenantIds)(options?.additionallyAllowedTenants);\n this.sendCertificateChain = options.sendCertificateChain;\n this.certificateConfiguration = {\n ...(typeof certificatePathOrConfiguration === \"string\"\n ? {\n certificatePath: certificatePathOrConfiguration,\n }\n : certificatePathOrConfiguration),\n };\n const certificate = this.certificateConfiguration\n .certificate;\n const certificatePath = this.certificateConfiguration\n .certificatePath;\n if (!this.certificateConfiguration || !(certificate || certificatePath)) {\n throw new Error(`${credentialName}: Provide either a PEM certificate in string form, or the path to that certificate in the filesystem. To troubleshoot, visit https://aka.ms/azsdk/js/identity/serviceprincipalauthentication/troubleshoot.`);\n }\n if (certificate && certificatePath) {\n throw new Error(`${credentialName}: To avoid unexpected behaviors, providing both the contents of a PEM certificate and the path to a PEM certificate is forbidden. To troubleshoot, visit https://aka.ms/azsdk/js/identity/serviceprincipalauthentication/troubleshoot.`);\n }\n this.msalClient = (0, msalClient_js_1.createMsalClient)(clientId, tenantId, {\n ...options,\n logger,\n tokenCredentialOptions: options,\n });\n }\n /**\n * Authenticates with Microsoft Entra ID and returns an access token if successful.\n * If authentication fails, a {@link CredentialUnavailableError} will be thrown with the details of the failure.\n *\n * @param scopes - The list of scopes for which the token will have access.\n * @param options - The options used to configure any requests this\n * TokenCredential implementation might make.\n */\n async getToken(scopes, options = {}) {\n return tracing_js_1.tracingClient.withSpan(`${credentialName}.getToken`, options, async (newOptions) => {\n newOptions.tenantId = (0, tenantIdUtils_js_1.processMultiTenantRequest)(this.tenantId, newOptions, this.additionallyAllowedTenantIds, logger);\n const arrayScopes = Array.isArray(scopes) ? scopes : [scopes];\n const certificate = await this.buildClientCertificate();\n return this.msalClient.getTokenByClientCertificate(arrayScopes, certificate, newOptions);\n });\n }\n async buildClientCertificate() {\n const parts = await parseCertificate(this.certificateConfiguration, this.sendCertificateChain ?? false);\n let privateKey;\n if (this.certificateConfiguration.certificatePassword !== undefined) {\n privateKey = (0, node_crypto_1.createPrivateKey)({\n key: parts.certificateContents,\n passphrase: this.certificateConfiguration.certificatePassword,\n format: \"pem\",\n })\n .export({\n format: \"pem\",\n type: \"pkcs8\",\n })\n .toString();\n }\n else {\n privateKey = parts.certificateContents;\n }\n return {\n thumbprint: parts.thumbprint,\n thumbprintSha256: parts.thumbprintSha256,\n privateKey,\n x5c: parts.x5c,\n };\n }\n}\nexports.ClientCertificateCredential = ClientCertificateCredential;\n/**\n * Parses a certificate into its relevant parts\n *\n * @param certificateConfiguration - The certificate contents or path to the certificate\n * @param sendCertificateChain - true if the entire certificate chain should be sent for SNI, false otherwise\n * @returns The parsed certificate parts and the certificate contents\n */\nasync function parseCertificate(certificateConfiguration, sendCertificateChain) {\n const certificate = certificateConfiguration.certificate;\n const certificatePath = certificateConfiguration\n .certificatePath;\n const certificateContents = certificate || (await (0, promises_1.readFile)(certificatePath, \"utf8\"));\n const x5c = sendCertificateChain ? certificateContents : undefined;\n const certificatePattern = /(-+BEGIN CERTIFICATE-+)(\\n\\r?|\\r\\n?)([A-Za-z0-9+/\\n\\r]+=*)(\\n\\r?|\\r\\n?)(-+END CERTIFICATE-+)/g;\n const publicKeys = [];\n // Match all possible certificates, in the order they are in the file. These will form the chain that is used for x5c\n let match;\n do {\n match = certificatePattern.exec(certificateContents);\n if (match) {\n publicKeys.push(match[3]);\n }\n } while (match);\n if (publicKeys.length === 0) {\n throw new Error(\"The file at the specified path does not contain a PEM-encoded certificate.\");\n }\n const thumbprint = (0, node_crypto_1.createHash)(\"sha1\") // CodeQL [SM04514] Needed for backward compatibility reason\n .update(Buffer.from(publicKeys[0], \"base64\"))\n .digest(\"hex\")\n .toUpperCase();\n const thumbprintSha256 = (0, node_crypto_1.createHash)(\"sha256\")\n .update(Buffer.from(publicKeys[0], \"base64\"))\n .digest(\"hex\")\n .toUpperCase();\n return {\n certificateContents,\n thumbprintSha256,\n thumbprint,\n x5c,\n };\n}\n//# sourceMappingURL=clientCertificateCredential.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ensureScopes = ensureScopes;\nexports.ensureValidScopeForDevTimeCreds = ensureValidScopeForDevTimeCreds;\nexports.getScopeResource = getScopeResource;\nconst logging_js_1 = require(\"./logging.js\");\n/**\n * Ensures the scopes value is an array.\n * @internal\n */\nfunction ensureScopes(scopes) {\n return Array.isArray(scopes) ? scopes : [scopes];\n}\n/**\n * Throws if the received scope is not valid.\n * @internal\n */\nfunction ensureValidScopeForDevTimeCreds(scope, logger) {\n if (!scope.match(/^[0-9a-zA-Z-_.:/]+$/)) {\n const error = new Error(\"Invalid scope was specified by the user or calling client\");\n logger.getToken.info((0, logging_js_1.formatError)(scope, error));\n throw error;\n }\n}\n/**\n * Returns the resource out of a scope.\n * @internal\n */\nfunction getScopeResource(scope) {\n return scope.replace(/\\/.default$/, \"\");\n}\n//# sourceMappingURL=scopeUtils.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ClientSecretCredential = void 0;\nconst msalClient_js_1 = require(\"../msal/nodeFlows/msalClient.js\");\nconst tenantIdUtils_js_1 = require(\"../util/tenantIdUtils.js\");\nconst errors_js_1 = require(\"../errors.js\");\nconst logging_js_1 = require(\"../util/logging.js\");\nconst scopeUtils_js_1 = require(\"../util/scopeUtils.js\");\nconst tracing_js_1 = require(\"../util/tracing.js\");\nconst logger = (0, logging_js_1.credentialLogger)(\"ClientSecretCredential\");\n/**\n * Enables authentication to Microsoft Entra ID using a client secret\n * that was generated for an App Registration. More information on how\n * to configure a client secret can be found here:\n *\n * https://learn.microsoft.com/entra/identity-platform/quickstart-configure-app-access-web-apis#add-credentials-to-your-web-application\n *\n */\nclass ClientSecretCredential {\n tenantId;\n additionallyAllowedTenantIds;\n msalClient;\n clientSecret;\n /**\n * Creates an instance of the ClientSecretCredential with the details\n * needed to authenticate against Microsoft Entra ID with a client\n * secret.\n *\n * @param tenantId - The Microsoft Entra tenant (directory) ID.\n * @param clientId - The client (application) ID of an App Registration in the tenant.\n * @param clientSecret - A client secret that was generated for the App Registration.\n * @param options - Options for configuring the client which makes the authentication request.\n */\n constructor(tenantId, clientId, clientSecret, options = {}) {\n if (!tenantId) {\n throw new errors_js_1.CredentialUnavailableError(\"ClientSecretCredential: tenantId is a required parameter. To troubleshoot, visit https://aka.ms/azsdk/js/identity/serviceprincipalauthentication/troubleshoot.\");\n }\n if (!clientId) {\n throw new errors_js_1.CredentialUnavailableError(\"ClientSecretCredential: clientId is a required parameter. To troubleshoot, visit https://aka.ms/azsdk/js/identity/serviceprincipalauthentication/troubleshoot.\");\n }\n if (!clientSecret) {\n throw new errors_js_1.CredentialUnavailableError(\"ClientSecretCredential: clientSecret is a required parameter. To troubleshoot, visit https://aka.ms/azsdk/js/identity/serviceprincipalauthentication/troubleshoot.\");\n }\n this.clientSecret = clientSecret;\n this.tenantId = tenantId;\n this.additionallyAllowedTenantIds = (0, tenantIdUtils_js_1.resolveAdditionallyAllowedTenantIds)(options?.additionallyAllowedTenants);\n this.msalClient = (0, msalClient_js_1.createMsalClient)(clientId, tenantId, {\n ...options,\n logger,\n tokenCredentialOptions: options,\n });\n }\n /**\n * Authenticates with Microsoft Entra ID and returns an access token if successful.\n * If authentication fails, a {@link CredentialUnavailableError} will be thrown with the details of the failure.\n *\n * @param scopes - The list of scopes for which the token will have access.\n * @param options - The options used to configure any requests this\n * TokenCredential implementation might make.\n */\n async getToken(scopes, options = {}) {\n return tracing_js_1.tracingClient.withSpan(`${this.constructor.name}.getToken`, options, async (newOptions) => {\n newOptions.tenantId = (0, tenantIdUtils_js_1.processMultiTenantRequest)(this.tenantId, newOptions, this.additionallyAllowedTenantIds, logger);\n const arrayScopes = (0, scopeUtils_js_1.ensureScopes)(scopes);\n return this.msalClient.getTokenByClientSecret(arrayScopes, this.clientSecret, newOptions);\n });\n }\n}\nexports.ClientSecretCredential = ClientSecretCredential;\n//# sourceMappingURL=clientSecretCredential.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.UsernamePasswordCredential = void 0;\nconst msalClient_js_1 = require(\"../msal/nodeFlows/msalClient.js\");\nconst tenantIdUtils_js_1 = require(\"../util/tenantIdUtils.js\");\nconst errors_js_1 = require(\"../errors.js\");\nconst logging_js_1 = require(\"../util/logging.js\");\nconst scopeUtils_js_1 = require(\"../util/scopeUtils.js\");\nconst tracing_js_1 = require(\"../util/tracing.js\");\nconst logger = (0, logging_js_1.credentialLogger)(\"UsernamePasswordCredential\");\n/**\n * Enables authentication to Microsoft Entra ID with a user's\n * username and password. This credential requires a high degree of\n * trust so you should only use it when other, more secure credential\n * types can't be used.\n * @deprecated UsernamePasswordCredential is deprecated. Use a more secure credential. See https://aka.ms/azsdk/identity/mfa for details.\n */\nclass UsernamePasswordCredential {\n tenantId;\n additionallyAllowedTenantIds;\n msalClient;\n username;\n password;\n /**\n * Creates an instance of the UsernamePasswordCredential with the details\n * needed to authenticate against Microsoft Entra ID with a username\n * and password.\n *\n * @param tenantId - The Microsoft Entra tenant (directory).\n * @param clientId - The client (application) ID of an App Registration in the tenant.\n * @param username - The user account's e-mail address (user name).\n * @param password - The user account's account password\n * @param options - Options for configuring the client which makes the authentication request.\n */\n constructor(tenantId, clientId, username, password, options = {}) {\n if (!tenantId) {\n throw new errors_js_1.CredentialUnavailableError(\"UsernamePasswordCredential: tenantId is a required parameter. To troubleshoot, visit https://aka.ms/azsdk/js/identity/usernamepasswordcredential/troubleshoot.\");\n }\n if (!clientId) {\n throw new errors_js_1.CredentialUnavailableError(\"UsernamePasswordCredential: clientId is a required parameter. To troubleshoot, visit https://aka.ms/azsdk/js/identity/usernamepasswordcredential/troubleshoot.\");\n }\n if (!username) {\n throw new errors_js_1.CredentialUnavailableError(\"UsernamePasswordCredential: username is a required parameter. To troubleshoot, visit https://aka.ms/azsdk/js/identity/usernamepasswordcredential/troubleshoot.\");\n }\n if (!password) {\n throw new errors_js_1.CredentialUnavailableError(\"UsernamePasswordCredential: password is a required parameter. To troubleshoot, visit https://aka.ms/azsdk/js/identity/usernamepasswordcredential/troubleshoot.\");\n }\n this.tenantId = tenantId;\n this.additionallyAllowedTenantIds = (0, tenantIdUtils_js_1.resolveAdditionallyAllowedTenantIds)(options?.additionallyAllowedTenants);\n this.username = username;\n this.password = password;\n this.msalClient = (0, msalClient_js_1.createMsalClient)(clientId, this.tenantId, {\n ...options,\n tokenCredentialOptions: options ?? {},\n });\n }\n /**\n * Authenticates with Microsoft Entra ID and returns an access token if successful.\n * If authentication fails, a {@link CredentialUnavailableError} will be thrown with the details of the failure.\n *\n * If the user provided the option `disableAutomaticAuthentication`,\n * once the token can't be retrieved silently,\n * this method won't attempt to request user interaction to retrieve the token.\n *\n * @param scopes - The list of scopes for which the token will have access.\n * @param options - The options used to configure any requests this\n * TokenCredential implementation might make.\n */\n async getToken(scopes, options = {}) {\n return tracing_js_1.tracingClient.withSpan(`${this.constructor.name}.getToken`, options, async (newOptions) => {\n newOptions.tenantId = (0, tenantIdUtils_js_1.processMultiTenantRequest)(this.tenantId, newOptions, this.additionallyAllowedTenantIds, logger);\n const arrayScopes = (0, scopeUtils_js_1.ensureScopes)(scopes);\n return this.msalClient.getTokenByUsernamePassword(arrayScopes, this.username, this.password, newOptions);\n });\n }\n}\nexports.UsernamePasswordCredential = UsernamePasswordCredential;\n//# sourceMappingURL=usernamePasswordCredential.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.EnvironmentCredential = exports.AllSupportedEnvironmentVariables = void 0;\nexports.getSendCertificateChain = getSendCertificateChain;\nconst errors_js_1 = require(\"../errors.js\");\nconst logging_js_1 = require(\"../util/logging.js\");\nconst clientCertificateCredential_js_1 = require(\"./clientCertificateCredential.js\");\nconst clientSecretCredential_js_1 = require(\"./clientSecretCredential.js\");\nconst usernamePasswordCredential_js_1 = require(\"./usernamePasswordCredential.js\");\nconst tenantIdUtils_js_1 = require(\"../util/tenantIdUtils.js\");\nconst tracing_js_1 = require(\"../util/tracing.js\");\n/**\n * Contains the list of all supported environment variable names so that an\n * appropriate error message can be generated when no credentials can be\n * configured.\n *\n * @internal\n */\nexports.AllSupportedEnvironmentVariables = [\n \"AZURE_TENANT_ID\",\n \"AZURE_CLIENT_ID\",\n \"AZURE_CLIENT_SECRET\",\n \"AZURE_CLIENT_CERTIFICATE_PATH\",\n \"AZURE_CLIENT_CERTIFICATE_PASSWORD\",\n \"AZURE_USERNAME\",\n \"AZURE_PASSWORD\",\n \"AZURE_ADDITIONALLY_ALLOWED_TENANTS\",\n \"AZURE_CLIENT_SEND_CERTIFICATE_CHAIN\",\n];\nfunction getAdditionallyAllowedTenants() {\n const additionallyAllowedValues = process.env.AZURE_ADDITIONALLY_ALLOWED_TENANTS ?? \"\";\n return additionallyAllowedValues.split(\";\");\n}\nconst credentialName = \"EnvironmentCredential\";\nconst logger = (0, logging_js_1.credentialLogger)(credentialName);\nfunction getSendCertificateChain() {\n const sendCertificateChain = (process.env.AZURE_CLIENT_SEND_CERTIFICATE_CHAIN ?? \"\").toLowerCase();\n const result = sendCertificateChain === \"true\" || sendCertificateChain === \"1\";\n logger.verbose(`AZURE_CLIENT_SEND_CERTIFICATE_CHAIN: ${process.env.AZURE_CLIENT_SEND_CERTIFICATE_CHAIN}; sendCertificateChain: ${result}`);\n return result;\n}\n/**\n * Enables authentication to Microsoft Entra ID using a client secret or certificate.\n */\nclass EnvironmentCredential {\n _credential = undefined;\n /**\n * Creates an instance of the EnvironmentCredential class and decides what credential to use depending on the available environment variables.\n *\n * Required environment variables:\n * - `AZURE_TENANT_ID`: The Microsoft Entra tenant (directory) ID.\n * - `AZURE_CLIENT_ID`: The client (application) ID of an App Registration in the tenant.\n *\n * If setting the AZURE_TENANT_ID, then you can also set the additionally allowed tenants\n * - `AZURE_ADDITIONALLY_ALLOWED_TENANTS`: For multi-tenant applications, specifies additional tenants for which the credential may acquire tokens with a single semicolon delimited string. Use * to allow all tenants.\n *\n * Environment variables used for client credential authentication:\n * - `AZURE_CLIENT_SECRET`: A client secret that was generated for the App Registration.\n * - `AZURE_CLIENT_CERTIFICATE_PATH`: The path to a PEM certificate to use during the authentication, instead of the client secret.\n * - `AZURE_CLIENT_CERTIFICATE_PASSWORD`: (optional) password for the certificate file.\n * - `AZURE_CLIENT_SEND_CERTIFICATE_CHAIN`: (optional) indicates that the certificate chain should be set in x5c header to support subject name / issuer based authentication.\n *\n * Username and password authentication is deprecated, since it doesn't support multifactor authentication (MFA). See https://aka.ms/azsdk/identity/mfa for more details. Users can still provide environment variables for this authentication method:\n * - `AZURE_USERNAME`: Username to authenticate with.\n * - `AZURE_PASSWORD`: Password to authenticate with.\n *\n * If the environment variables required to perform the authentication are missing, a {@link CredentialUnavailableError} will be thrown.\n * If the authentication fails, or if there's an unknown error, an {@link AuthenticationError} will be thrown.\n *\n * @param options - Options for configuring the client which makes the authentication request.\n */\n constructor(options) {\n // Keep track of any missing environment variables for error details\n const assigned = (0, logging_js_1.processEnvVars)(exports.AllSupportedEnvironmentVariables).assigned.join(\", \");\n logger.info(`Found the following environment variables: ${assigned}`);\n const tenantId = process.env.AZURE_TENANT_ID, clientId = process.env.AZURE_CLIENT_ID, clientSecret = process.env.AZURE_CLIENT_SECRET;\n const additionallyAllowedTenantIds = getAdditionallyAllowedTenants();\n const sendCertificateChain = getSendCertificateChain();\n const newOptions = { ...options, additionallyAllowedTenantIds, sendCertificateChain };\n if (tenantId) {\n (0, tenantIdUtils_js_1.checkTenantId)(logger, tenantId);\n }\n if (tenantId && clientId && clientSecret) {\n logger.info(`Invoking ClientSecretCredential with tenant ID: ${tenantId}, clientId: ${clientId} and clientSecret: [REDACTED]`);\n this._credential = new clientSecretCredential_js_1.ClientSecretCredential(tenantId, clientId, clientSecret, newOptions);\n return;\n }\n const certificatePath = process.env.AZURE_CLIENT_CERTIFICATE_PATH;\n const certificatePassword = process.env.AZURE_CLIENT_CERTIFICATE_PASSWORD;\n if (tenantId && clientId && certificatePath) {\n logger.info(`Invoking ClientCertificateCredential with tenant ID: ${tenantId}, clientId: ${clientId} and certificatePath: ${certificatePath}`);\n this._credential = new clientCertificateCredential_js_1.ClientCertificateCredential(tenantId, clientId, { certificatePath, certificatePassword }, newOptions);\n return;\n }\n const username = process.env.AZURE_USERNAME;\n const password = process.env.AZURE_PASSWORD;\n if (tenantId && clientId && username && password) {\n logger.info(`Invoking UsernamePasswordCredential with tenant ID: ${tenantId}, clientId: ${clientId} and username: ${username}`);\n logger.warning(\"Environment is configured to use username and password authentication. This authentication method is deprecated, as it doesn't support multifactor authentication (MFA). Use a more secure credential. For more details, see https://aka.ms/azsdk/identity/mfa.\");\n this._credential = new usernamePasswordCredential_js_1.UsernamePasswordCredential(tenantId, clientId, username, password, newOptions);\n }\n }\n /**\n * Authenticates with Microsoft Entra ID and returns an access token if successful.\n *\n * @param scopes - The list of scopes for which the token will have access.\n * @param options - Optional parameters. See {@link GetTokenOptions}.\n */\n async getToken(scopes, options = {}) {\n return tracing_js_1.tracingClient.withSpan(`${credentialName}.getToken`, options, async (newOptions) => {\n if (this._credential) {\n try {\n const result = await this._credential.getToken(scopes, newOptions);\n logger.getToken.info((0, logging_js_1.formatSuccess)(scopes));\n return result;\n }\n catch (err) {\n const authenticationError = new errors_js_1.AuthenticationError(400, {\n error: `${credentialName} authentication failed. To troubleshoot, visit https://aka.ms/azsdk/js/identity/environmentcredential/troubleshoot.`,\n error_description: err.message.toString().split(\"More details:\").join(\"\"),\n });\n logger.getToken.info((0, logging_js_1.formatError)(scopes, authenticationError));\n throw authenticationError;\n }\n }\n throw new errors_js_1.CredentialUnavailableError(`${credentialName} is unavailable. No underlying credential could be used. To troubleshoot, visit https://aka.ms/azsdk/js/identity/environmentcredential/troubleshoot.`);\n });\n }\n}\nexports.EnvironmentCredential = EnvironmentCredential;\n//# sourceMappingURL=environmentCredential.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.imdsRetryPolicy = imdsRetryPolicy;\nconst core_rest_pipeline_1 = require(\"@azure/core-rest-pipeline\");\nconst core_util_1 = require(\"@azure/core-util\");\n// Matches the default retry configuration in expontentialRetryStrategy.ts\nconst DEFAULT_CLIENT_MAX_RETRY_INTERVAL = 1000 * 64;\n// For 410 responses, we need at least 70 seconds total retry duration\n// With 5 retries using exponential backoff: delays of d, 2d, 4d, 8d, 16d sum to 31d\n// Accounting for jitter (which can reduce delays by 20%), we need 31d * 0.8 >= 70\n// So we need d >= 70/24.8 = 2.82 seconds. Using 3 seconds to be safe.\nconst MIN_DELAY_FOR_410_MS = 3000;\n/**\n * An additional policy that retries on 404 and 410 errors. The default retry policy does not retry on\n * 404s or 410s, but the IMDS endpoint can return these when the token is not yet available or when\n * the identity is still being set up. This policy will retry on 404s and 410s with an exponential backoff.\n * For 410 responses, it uses a minimum 3-second initial delay to ensure at least 70 seconds total duration.\n *\n * @param msiRetryConfig - The retry configuration for the MSI credential.\n * @returns - The policy that will retry on 404s and 410s.\n */\nfunction imdsRetryPolicy(msiRetryConfig) {\n return (0, core_rest_pipeline_1.retryPolicy)([\n {\n name: \"imdsRetryPolicy\",\n retry: ({ retryCount, response }) => {\n if (response?.status !== 404 && response?.status !== 410) {\n return { skipStrategy: true };\n }\n // For 410 responses, use a minimum 3-second delay to ensure at least 70 seconds total retry duration\n const initialDelayMs = response?.status === 410\n ? Math.max(MIN_DELAY_FOR_410_MS, msiRetryConfig.startDelayInMs)\n : msiRetryConfig.startDelayInMs;\n return (0, core_util_1.calculateRetryDelay)(retryCount, {\n retryDelayInMs: initialDelayMs,\n maxRetryDelayInMs: DEFAULT_CLIENT_MAX_RETRY_INTERVAL,\n });\n },\n },\n ], {\n maxRetries: msiRetryConfig.maxRetries,\n });\n}\n//# sourceMappingURL=imdsRetryPolicy.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.imdsMsi = void 0;\nconst core_rest_pipeline_1 = require(\"@azure/core-rest-pipeline\");\nconst core_util_1 = require(\"@azure/core-util\");\nconst logging_js_1 = require(\"../../util/logging.js\");\nconst utils_js_1 = require(\"./utils.js\");\nconst tracing_js_1 = require(\"../../util/tracing.js\");\nconst msiName = \"ManagedIdentityCredential - IMDS\";\nconst logger = (0, logging_js_1.credentialLogger)(msiName);\nconst imdsHost = \"http://169.254.169.254\";\nconst imdsEndpointPath = \"/metadata/identity/oauth2/token\";\n/**\n * Generates an invalid request options to get a response quickly from IMDS endpoint.\n * The response indicates the availability of IMSD service; otherwise the request would time out.\n */\nfunction prepareInvalidRequestOptions(scopes) {\n const resource = (0, utils_js_1.mapScopesToResource)(scopes);\n if (!resource) {\n throw new Error(`${msiName}: Multiple scopes are not supported.`);\n }\n // Pod Identity will try to process this request even if the Metadata header is missing.\n // We can exclude the request query to ensure no IMDS endpoint tries to process the ping request.\n const url = new URL(imdsEndpointPath, process.env.AZURE_POD_IDENTITY_AUTHORITY_HOST ?? imdsHost);\n const rawHeaders = {\n Accept: \"application/json\",\n // intentionally leave out the Metadata header to invoke an error from IMDS endpoint.\n };\n return {\n // intentionally not including any query\n url: `${url}`,\n method: \"GET\",\n headers: (0, core_rest_pipeline_1.createHttpHeaders)(rawHeaders),\n };\n}\n/**\n * Defines how to determine whether the Azure IMDS MSI is available.\n *\n * Actually getting the token once we determine IMDS is available is handled by MSAL.\n */\nexports.imdsMsi = {\n name: \"imdsMsi\",\n async isAvailable(options) {\n const { scopes, identityClient, getTokenOptions } = options;\n const resource = (0, utils_js_1.mapScopesToResource)(scopes);\n if (!resource) {\n logger.info(`${msiName}: Unavailable. Multiple scopes are not supported.`);\n return false;\n }\n // if the PodIdentityEndpoint environment variable was set no need to probe the endpoint, it can be assumed to exist\n if (process.env.AZURE_POD_IDENTITY_AUTHORITY_HOST) {\n return true;\n }\n if (!identityClient) {\n throw new Error(\"Missing IdentityClient\");\n }\n const requestOptions = prepareInvalidRequestOptions(resource);\n return tracing_js_1.tracingClient.withSpan(\"ManagedIdentityCredential-pingImdsEndpoint\", getTokenOptions ?? {}, async (updatedOptions) => {\n requestOptions.tracingOptions = updatedOptions.tracingOptions;\n // Create a request with a timeout since we expect that\n // not having a \"Metadata\" header should cause an error to be\n // returned quickly from the endpoint, proving its availability.\n const request = (0, core_rest_pipeline_1.createPipelineRequest)(requestOptions);\n // Default to 1000 if the default of 0 is used.\n // Negative values can still be used to disable the timeout.\n request.timeout = updatedOptions.requestOptions?.timeout || 1000;\n // This MSI uses the imdsEndpoint to get the token, which only uses http://\n request.allowInsecureConnection = true;\n let response;\n try {\n logger.info(`${msiName}: Pinging the Azure IMDS endpoint`);\n response = await identityClient.sendRequest(request);\n }\n catch (err) {\n // If the request failed, or Node.js was unable to establish a connection,\n // or the host was down, we'll assume the IMDS endpoint isn't available.\n if ((0, core_util_1.isError)(err)) {\n logger.verbose(`${msiName}: Caught error ${err.name}: ${err.message}`);\n }\n // This is a special case for Docker Desktop which responds with a 403 with a message that contains \"A socket operation was attempted to an unreachable network\" or \"A socket operation was attempted to an unreachable host\"\n // rather than just timing out, as expected.\n logger.info(`${msiName}: The Azure IMDS endpoint is unavailable`);\n return false;\n }\n if (response.status === 403) {\n if (response.bodyAsText?.includes(\"unreachable\")) {\n logger.info(`${msiName}: The Azure IMDS endpoint is unavailable`);\n logger.info(`${msiName}: ${response.bodyAsText}`);\n return false;\n }\n }\n // If we received any response, the endpoint is available\n logger.info(`${msiName}: The Azure IMDS endpoint is available`);\n return true;\n });\n },\n};\n//# sourceMappingURL=imdsMsi.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ClientAssertionCredential = void 0;\nconst msalClient_js_1 = require(\"../msal/nodeFlows/msalClient.js\");\nconst tenantIdUtils_js_1 = require(\"../util/tenantIdUtils.js\");\nconst errors_js_1 = require(\"../errors.js\");\nconst logging_js_1 = require(\"../util/logging.js\");\nconst tracing_js_1 = require(\"../util/tracing.js\");\nconst logger = (0, logging_js_1.credentialLogger)(\"ClientAssertionCredential\");\n/**\n * Authenticates a service principal with a JWT assertion.\n */\nclass ClientAssertionCredential {\n msalClient;\n tenantId;\n additionallyAllowedTenantIds;\n getAssertion;\n options;\n /**\n * Creates an instance of the ClientAssertionCredential with the details\n * needed to authenticate against Microsoft Entra ID with a client\n * assertion provided by the developer through the `getAssertion` function parameter.\n *\n * @param tenantId - The Microsoft Entra tenant (directory) ID.\n * @param clientId - The client (application) ID of an App Registration in the tenant.\n * @param getAssertion - A function that retrieves the assertion for the credential to use.\n * @param options - Options for configuring the client which makes the authentication request.\n */\n constructor(tenantId, clientId, getAssertion, options = {}) {\n if (!tenantId) {\n throw new errors_js_1.CredentialUnavailableError(\"ClientAssertionCredential: tenantId is a required parameter.\");\n }\n if (!clientId) {\n throw new errors_js_1.CredentialUnavailableError(\"ClientAssertionCredential: clientId is a required parameter.\");\n }\n if (!getAssertion) {\n throw new errors_js_1.CredentialUnavailableError(\"ClientAssertionCredential: clientAssertion is a required parameter.\");\n }\n this.tenantId = tenantId;\n this.additionallyAllowedTenantIds = (0, tenantIdUtils_js_1.resolveAdditionallyAllowedTenantIds)(options?.additionallyAllowedTenants);\n this.options = options;\n this.getAssertion = getAssertion;\n this.msalClient = (0, msalClient_js_1.createMsalClient)(clientId, tenantId, {\n ...options,\n logger,\n tokenCredentialOptions: this.options,\n });\n }\n /**\n * Authenticates with Microsoft Entra ID and returns an access token if successful.\n * If authentication fails, a {@link CredentialUnavailableError} will be thrown with the details of the failure.\n *\n * @param scopes - The list of scopes for which the token will have access.\n * @param options - The options used to configure any requests this\n * TokenCredential implementation might make.\n */\n async getToken(scopes, options = {}) {\n return tracing_js_1.tracingClient.withSpan(`${this.constructor.name}.getToken`, options, async (newOptions) => {\n newOptions.tenantId = (0, tenantIdUtils_js_1.processMultiTenantRequest)(this.tenantId, newOptions, this.additionallyAllowedTenantIds, logger);\n const arrayScopes = Array.isArray(scopes) ? scopes : [scopes];\n return this.msalClient.getTokenByClientAssertion(arrayScopes, this.getAssertion, newOptions);\n });\n }\n}\nexports.ClientAssertionCredential = ClientAssertionCredential;\n//# sourceMappingURL=clientAssertionCredential.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.WorkloadIdentityCredential = exports.SupportedWorkloadEnvironmentVariables = void 0;\nconst logging_js_1 = require(\"../util/logging.js\");\nconst clientAssertionCredential_js_1 = require(\"./clientAssertionCredential.js\");\nconst errors_js_1 = require(\"../errors.js\");\nconst tenantIdUtils_js_1 = require(\"../util/tenantIdUtils.js\");\nconst promises_1 = require(\"node:fs/promises\");\nconst credentialName = \"WorkloadIdentityCredential\";\n/**\n * Contains the list of all supported environment variable names so that an\n * appropriate error message can be generated when no credentials can be\n * configured.\n *\n * @internal\n */\nexports.SupportedWorkloadEnvironmentVariables = [\n \"AZURE_TENANT_ID\",\n \"AZURE_CLIENT_ID\",\n \"AZURE_FEDERATED_TOKEN_FILE\",\n];\nconst logger = (0, logging_js_1.credentialLogger)(credentialName);\n/**\n * Workload Identity authentication is a feature in Azure that allows applications running on virtual machines (VMs)\n * to access other Azure resources without the need for a service principal or managed identity. With Workload Identity\n * authentication, applications authenticate themselves using their own identity, rather than using a shared service\n * principal or managed identity. Under the hood, Workload Identity authentication uses the concept of Service Account\n * Credentials (SACs), which are automatically created by Azure and stored securely in the VM. By using Workload\n * Identity authentication, you can avoid the need to manage and rotate service principals or managed identities for\n * each application on each VM. Additionally, because SACs are created automatically and managed by Azure, you don't\n * need to worry about storing and securing sensitive credentials themselves.\n * The WorkloadIdentityCredential supports Microsoft Entra Workload ID authentication on Azure Kubernetes and acquires\n * a token using the SACs available in the Azure Kubernetes environment.\n * Refer to Microsoft Entra\n * Workload ID for more information.\n */\nclass WorkloadIdentityCredential {\n client;\n azureFederatedTokenFileContent = undefined;\n cacheDate = undefined;\n federatedTokenFilePath;\n /**\n * WorkloadIdentityCredential supports Microsoft Entra Workload ID on Kubernetes.\n *\n * @param options - The identity client options to use for authentication.\n */\n constructor(options) {\n // Logging environment variables for error details\n const assignedEnv = (0, logging_js_1.processEnvVars)(exports.SupportedWorkloadEnvironmentVariables).assigned.join(\", \");\n logger.info(`Found the following environment variables: ${assignedEnv}`);\n const workloadIdentityCredentialOptions = options ?? {};\n const tenantId = workloadIdentityCredentialOptions.tenantId || process.env.AZURE_TENANT_ID;\n const clientId = workloadIdentityCredentialOptions.clientId || process.env.AZURE_CLIENT_ID;\n this.federatedTokenFilePath =\n workloadIdentityCredentialOptions.tokenFilePath || process.env.AZURE_FEDERATED_TOKEN_FILE;\n if (tenantId) {\n (0, tenantIdUtils_js_1.checkTenantId)(logger, tenantId);\n }\n if (!clientId) {\n throw new errors_js_1.CredentialUnavailableError(`${credentialName}: is unavailable. clientId is a required parameter. In DefaultAzureCredential and ManagedIdentityCredential, this can be provided as an environment variable - \"AZURE_CLIENT_ID\".\n See the troubleshooting guide for more information: https://aka.ms/azsdk/js/identity/workloadidentitycredential/troubleshoot`);\n }\n if (!tenantId) {\n throw new errors_js_1.CredentialUnavailableError(`${credentialName}: is unavailable. tenantId is a required parameter. In DefaultAzureCredential and ManagedIdentityCredential, this can be provided as an environment variable - \"AZURE_TENANT_ID\".\n See the troubleshooting guide for more information: https://aka.ms/azsdk/js/identity/workloadidentitycredential/troubleshoot`);\n }\n if (!this.federatedTokenFilePath) {\n throw new errors_js_1.CredentialUnavailableError(`${credentialName}: is unavailable. federatedTokenFilePath is a required parameter. In DefaultAzureCredential and ManagedIdentityCredential, this can be provided as an environment variable - \"AZURE_FEDERATED_TOKEN_FILE\".\n See the troubleshooting guide for more information: https://aka.ms/azsdk/js/identity/workloadidentitycredential/troubleshoot`);\n }\n logger.info(`Invoking ClientAssertionCredential with tenant ID: ${tenantId}, clientId: ${workloadIdentityCredentialOptions.clientId} and federated token path: [REDACTED]`);\n this.client = new clientAssertionCredential_js_1.ClientAssertionCredential(tenantId, clientId, this.readFileContents.bind(this), options);\n }\n /**\n * Authenticates with Microsoft Entra ID and returns an access token if successful.\n * If authentication fails, a {@link CredentialUnavailableError} will be thrown with the details of the failure.\n *\n * @param scopes - The list of scopes for which the token will have access.\n * @param options - The options used to configure any requests this\n * TokenCredential implementation might make.\n */\n async getToken(scopes, options) {\n if (!this.client) {\n const errorMessage = `${credentialName}: is unavailable. tenantId, clientId, and federatedTokenFilePath are required parameters. \n In DefaultAzureCredential and ManagedIdentityCredential, these can be provided as environment variables - \n \"AZURE_TENANT_ID\",\n \"AZURE_CLIENT_ID\",\n \"AZURE_FEDERATED_TOKEN_FILE\". See the troubleshooting guide for more information: https://aka.ms/azsdk/js/identity/workloadidentitycredential/troubleshoot`;\n logger.info(errorMessage);\n throw new errors_js_1.CredentialUnavailableError(errorMessage);\n }\n logger.info(\"Invoking getToken() of Client Assertion Credential\");\n return this.client.getToken(scopes, options);\n }\n async readFileContents() {\n // Cached assertions expire after 5 minutes\n if (this.cacheDate !== undefined && Date.now() - this.cacheDate >= 1000 * 60 * 5) {\n this.azureFederatedTokenFileContent = undefined;\n }\n if (!this.federatedTokenFilePath) {\n throw new errors_js_1.CredentialUnavailableError(`${credentialName}: is unavailable. Invalid file path provided ${this.federatedTokenFilePath}.`);\n }\n if (!this.azureFederatedTokenFileContent) {\n const file = await (0, promises_1.readFile)(this.federatedTokenFilePath, \"utf8\");\n const value = file.trim();\n if (!value) {\n throw new errors_js_1.CredentialUnavailableError(`${credentialName}: is unavailable. No content on the file ${this.federatedTokenFilePath}.`);\n }\n else {\n this.azureFederatedTokenFileContent = value;\n this.cacheDate = Date.now();\n }\n }\n return this.azureFederatedTokenFileContent;\n }\n}\nexports.WorkloadIdentityCredential = WorkloadIdentityCredential;\n//# sourceMappingURL=workloadIdentityCredential.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.tokenExchangeMsi = void 0;\nconst workloadIdentityCredential_js_1 = require(\"../workloadIdentityCredential.js\");\nconst logging_js_1 = require(\"../../util/logging.js\");\nconst msiName = \"ManagedIdentityCredential - Token Exchange\";\nconst logger = (0, logging_js_1.credentialLogger)(msiName);\n/**\n * Defines how to determine whether the token exchange MSI is available, and also how to retrieve a token from the token exchange MSI.\n *\n * Token exchange MSI (used by AKS) is the only MSI implementation handled entirely by Azure Identity.\n * The rest have been migrated to MSAL.\n */\nexports.tokenExchangeMsi = {\n name: \"tokenExchangeMsi\",\n async isAvailable(clientId) {\n const env = process.env;\n const result = Boolean((clientId || env.AZURE_CLIENT_ID) &&\n env.AZURE_TENANT_ID &&\n process.env.AZURE_FEDERATED_TOKEN_FILE);\n if (!result) {\n logger.info(`${msiName}: Unavailable. The environment variables needed are: AZURE_CLIENT_ID (or the client ID sent through the parameters), AZURE_TENANT_ID and AZURE_FEDERATED_TOKEN_FILE`);\n }\n return result;\n },\n async getToken(configuration, getTokenOptions = {}) {\n const { scopes, clientId } = configuration;\n const identityClientTokenCredentialOptions = {};\n const workloadIdentityCredential = new workloadIdentityCredential_js_1.WorkloadIdentityCredential({\n clientId,\n tenantId: process.env.AZURE_TENANT_ID,\n tokenFilePath: process.env.AZURE_FEDERATED_TOKEN_FILE,\n ...identityClientTokenCredentialOptions,\n disableInstanceDiscovery: true,\n });\n return workloadIdentityCredential.getToken(scopes, getTokenOptions);\n },\n};\n//# sourceMappingURL=tokenExchangeMsi.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ManagedIdentityCredential = void 0;\nconst logger_1 = require(\"@azure/logger\");\nconst msal_node_1 = require(\"@azure/msal-node\");\nconst identityClient_js_1 = require(\"../../client/identityClient.js\");\nconst errors_js_1 = require(\"../../errors.js\");\nconst utils_js_1 = require(\"../../msal/utils.js\");\nconst imdsRetryPolicy_js_1 = require(\"./imdsRetryPolicy.js\");\nconst logging_js_1 = require(\"../../util/logging.js\");\nconst tracing_js_1 = require(\"../../util/tracing.js\");\nconst imdsMsi_js_1 = require(\"./imdsMsi.js\");\nconst tokenExchangeMsi_js_1 = require(\"./tokenExchangeMsi.js\");\nconst utils_js_2 = require(\"./utils.js\");\nconst logger = (0, logging_js_1.credentialLogger)(\"ManagedIdentityCredential\");\n/**\n * Attempts authentication using a managed identity available at the deployment environment.\n * This authentication type works in Azure VMs, App Service instances, Azure Functions applications,\n * Azure Kubernetes Services, Azure Service Fabric instances and inside of the Azure Cloud Shell.\n *\n * More information about configuring managed identities can be found here:\n * https://learn.microsoft.com/azure/active-directory/managed-identities-azure-resources/overview\n */\nclass ManagedIdentityCredential {\n managedIdentityApp;\n identityClient;\n clientId;\n resourceId;\n objectId;\n msiRetryConfig = {\n maxRetries: 5,\n startDelayInMs: 800,\n intervalIncrement: 2,\n };\n isAvailableIdentityClient;\n sendProbeRequest;\n /**\n * @internal\n * @hidden\n */\n constructor(clientIdOrOptions, options) {\n let _options;\n if (typeof clientIdOrOptions === \"string\") {\n this.clientId = clientIdOrOptions;\n _options = options ?? {};\n }\n else {\n this.clientId = clientIdOrOptions?.clientId;\n _options = clientIdOrOptions ?? {};\n }\n this.resourceId = _options?.resourceId;\n this.objectId = _options?.objectId;\n this.sendProbeRequest =\n _options?.sendProbeRequest ?? false;\n // For JavaScript users.\n const providedIds = [\n { key: \"clientId\", value: this.clientId },\n { key: \"resourceId\", value: this.resourceId },\n { key: \"objectId\", value: this.objectId },\n ].filter((id) => id.value);\n if (providedIds.length > 1) {\n throw new Error(`ManagedIdentityCredential: only one of 'clientId', 'resourceId', or 'objectId' can be provided. Received values: ${JSON.stringify({ clientId: this.clientId, resourceId: this.resourceId, objectId: this.objectId })}`);\n }\n // ManagedIdentity uses http for local requests\n _options.allowInsecureConnection = true;\n if (_options.retryOptions?.maxRetries !== undefined) {\n this.msiRetryConfig.maxRetries = _options.retryOptions.maxRetries;\n }\n this.identityClient = new identityClient_js_1.IdentityClient({\n ..._options,\n additionalPolicies: [{ policy: (0, imdsRetryPolicy_js_1.imdsRetryPolicy)(this.msiRetryConfig), position: \"perCall\" }],\n });\n this.managedIdentityApp = new msal_node_1.ManagedIdentityApplication({\n managedIdentityIdParams: {\n userAssignedClientId: this.clientId,\n userAssignedResourceId: this.resourceId,\n userAssignedObjectId: this.objectId,\n },\n system: {\n disableInternalRetries: true,\n networkClient: this.identityClient,\n loggerOptions: {\n logLevel: (0, utils_js_1.getMSALLogLevel)((0, logger_1.getLogLevel)()),\n piiLoggingEnabled: _options.loggingOptions?.enableUnsafeSupportLogging,\n loggerCallback: (0, utils_js_1.defaultLoggerCallback)(logger),\n },\n },\n });\n this.isAvailableIdentityClient = new identityClient_js_1.IdentityClient({\n ..._options,\n retryOptions: {\n maxRetries: 0,\n },\n });\n const managedIdentitySource = this.managedIdentityApp.getManagedIdentitySource();\n // CloudShell MSI will ignore any user-assigned identity passed as parameters. To avoid confusion, we prevent this from happening as early as possible.\n if (managedIdentitySource === \"CloudShell\") {\n if (this.clientId || this.resourceId || this.objectId) {\n logger.warning(`CloudShell MSI detected with user-provided IDs - throwing. Received values: ${JSON.stringify({\n clientId: this.clientId,\n resourceId: this.resourceId,\n objectId: this.objectId,\n })}.`);\n throw new errors_js_1.CredentialUnavailableError(\"ManagedIdentityCredential: Specifying a user-assigned managed identity is not supported for CloudShell at runtime. When using Managed Identity in CloudShell, omit the clientId, resourceId, and objectId parameters.\");\n }\n }\n // ServiceFabric does not support specifying user-assigned managed identity by client ID or resource ID. The managed identity selected is based on the resource configuration.\n if (managedIdentitySource === \"ServiceFabric\") {\n if (this.clientId || this.resourceId || this.objectId) {\n logger.warning(`Service Fabric detected with user-provided IDs - throwing. Received values: ${JSON.stringify({\n clientId: this.clientId,\n resourceId: this.resourceId,\n objectId: this.objectId,\n })}.`);\n throw new errors_js_1.CredentialUnavailableError(`ManagedIdentityCredential: ${utils_js_2.serviceFabricErrorMessage}`);\n }\n }\n logger.info(`Using ${managedIdentitySource} managed identity.`);\n // Check if either clientId, resourceId or objectId was provided and log the value used\n if (providedIds.length === 1) {\n const { key, value } = providedIds[0];\n logger.info(`${managedIdentitySource} with ${key}: ${value}`);\n }\n }\n /**\n * Authenticates with Microsoft Entra ID and returns an access token if successful.\n * If authentication fails, a {@link CredentialUnavailableError} will be thrown with the details of the failure.\n * If an unexpected error occurs, an {@link AuthenticationError} will be thrown with the details of the failure.\n *\n * @param scopes - The list of scopes for which the token will have access.\n * @param options - The options used to configure any requests this\n * TokenCredential implementation might make.\n */\n async getToken(scopes, options = {}) {\n logger.getToken.info(\"Using the MSAL provider for Managed Identity.\");\n const resource = (0, utils_js_2.mapScopesToResource)(scopes);\n if (!resource) {\n throw new errors_js_1.CredentialUnavailableError(`ManagedIdentityCredential: Multiple scopes are not supported. Scopes: ${JSON.stringify(scopes)}`);\n }\n return tracing_js_1.tracingClient.withSpan(\"ManagedIdentityCredential.getToken\", options, async () => {\n try {\n const isTokenExchangeMsi = await tokenExchangeMsi_js_1.tokenExchangeMsi.isAvailable(this.clientId);\n // Most scenarios are handled by MSAL except for two:\n // AKS pod identity - MSAL does not implement the token exchange flow.\n // IMDS Endpoint probing - MSAL does not do any probing before trying to get a token.\n // As a DefaultAzureCredential optimization we probe the IMDS endpoint with a short timeout and no retries before actually trying to get a token\n // We will continue to implement these features in the Identity library.\n const identitySource = this.managedIdentityApp.getManagedIdentitySource();\n const isImdsMsi = identitySource === \"DefaultToImds\" || identitySource === \"Imds\"; // Neither actually checks that IMDS endpoint is available, just that it's the source the MSAL _would_ try to use.\n logger.getToken.info(`MSAL Identity source: ${identitySource}`);\n if (isTokenExchangeMsi) {\n // In the AKS scenario we will use the existing tokenExchangeMsi indefinitely.\n logger.getToken.info(\"Using the token exchange managed identity.\");\n const result = await tokenExchangeMsi_js_1.tokenExchangeMsi.getToken({\n scopes,\n clientId: this.clientId,\n identityClient: this.identityClient,\n retryConfig: this.msiRetryConfig,\n resourceId: this.resourceId,\n });\n if (result === null) {\n throw new errors_js_1.CredentialUnavailableError(\"Attempted to use the token exchange managed identity, but received a null response.\");\n }\n return result;\n }\n else if (isImdsMsi && this.sendProbeRequest) {\n // In the IMDS scenario we will probe the IMDS endpoint to ensure it's available before trying to get a token.\n // If the IMDS endpoint is not available and this is the source that MSAL will use, we will fail-fast with an error that tells DAC to move to the next credential.\n logger.getToken.info(\"Using the IMDS endpoint to probe for availability.\");\n const isAvailable = await imdsMsi_js_1.imdsMsi.isAvailable({\n scopes,\n clientId: this.clientId,\n getTokenOptions: options,\n identityClient: this.isAvailableIdentityClient,\n resourceId: this.resourceId,\n });\n if (!isAvailable) {\n throw new errors_js_1.CredentialUnavailableError(`Attempted to use the IMDS endpoint, but it is not available.`);\n }\n }\n // If we got this far, it means:\n // - This is not a tokenExchangeMsi,\n // - We already probed for IMDS endpoint availability and failed-fast if it's unreachable,\n // or we skip probing because the credential is set in DAC.\n // We can proceed normally by calling MSAL for a token.\n logger.getToken.info(\"Calling into MSAL for managed identity token.\");\n const token = await this.managedIdentityApp.acquireToken({\n resource,\n });\n this.ensureValidMsalToken(scopes, token, options);\n logger.getToken.info((0, logging_js_1.formatSuccess)(scopes));\n return {\n expiresOnTimestamp: token.expiresOn.getTime(),\n token: token.accessToken,\n refreshAfterTimestamp: token.refreshOn?.getTime(),\n tokenType: \"Bearer\",\n };\n }\n catch (err) {\n logger.getToken.error((0, logging_js_1.formatError)(scopes, err));\n // AuthenticationRequiredError described as Error to enforce authentication after trying to retrieve a token silently.\n // TODO: why would this _ever_ happen considering we're not trying the silent request in this flow?\n if (err.name === \"AuthenticationRequiredError\") {\n throw err;\n }\n if (isNetworkError(err)) {\n throw new errors_js_1.CredentialUnavailableError(`ManagedIdentityCredential: Network unreachable. Message: ${err.message}`, { cause: err });\n }\n throw new errors_js_1.CredentialUnavailableError(`ManagedIdentityCredential: Authentication failed. Message ${err.message}`, { cause: err });\n }\n });\n }\n /**\n * Ensures the validity of the MSAL token\n */\n ensureValidMsalToken(scopes, msalToken, getTokenOptions) {\n const createError = (message) => {\n logger.getToken.info(message);\n return new errors_js_1.AuthenticationRequiredError({\n scopes: Array.isArray(scopes) ? scopes : [scopes],\n getTokenOptions,\n message,\n });\n };\n if (!msalToken) {\n throw createError(\"No response.\");\n }\n if (!msalToken.expiresOn) {\n throw createError(`Response had no \"expiresOn\" property.`);\n }\n if (!msalToken.accessToken) {\n throw createError(`Response had no \"accessToken\" property.`);\n }\n }\n}\nexports.ManagedIdentityCredential = ManagedIdentityCredential;\nfunction isNetworkError(err) {\n // MSAL error\n if (err.errorCode === \"network_error\") {\n return true;\n }\n // Probe errors\n if (err.code === \"ENETUNREACH\" || err.code === \"EHOSTUNREACH\") {\n return true;\n }\n // This is a special case for Docker Desktop which responds with a 403 with a message that contains \"A socket operation was attempted to an unreachable network\" or \"A socket operation was attempted to an unreachable host\"\n // rather than just timing out, as expected.\n if (err.statusCode === 403 || err.code === 403) {\n if (err.message.includes(\"unreachable\")) {\n return true;\n }\n }\n return false;\n}\n//# sourceMappingURL=index.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.AzureDeveloperCliCredential = exports.developerCliCredentialInternals = exports.azureDeveloperCliPublicErrorMessages = void 0;\nconst tslib_1 = require(\"tslib\");\nconst logging_js_1 = require(\"../util/logging.js\");\nconst errors_js_1 = require(\"../errors.js\");\nconst child_process_1 = tslib_1.__importDefault(require(\"child_process\"));\nconst tenantIdUtils_js_1 = require(\"../util/tenantIdUtils.js\");\nconst tracing_js_1 = require(\"../util/tracing.js\");\nconst scopeUtils_js_1 = require(\"../util/scopeUtils.js\");\nconst logger = (0, logging_js_1.credentialLogger)(\"AzureDeveloperCliCredential\");\n/**\n * Messages to use when throwing in this credential.\n * @internal\n */\nexports.azureDeveloperCliPublicErrorMessages = {\n notInstalled: \"Azure Developer CLI couldn't be found. To mitigate this issue, see the troubleshooting guidelines at https://aka.ms/azsdk/js/identity/azdevclicredential/troubleshoot.\",\n login: \"Please run 'azd auth login' from a command prompt to authenticate before using this credential. For more information, see the troubleshooting guidelines at https://aka.ms/azsdk/js/identity/azdevclicredential/troubleshoot.\",\n unknown: \"Unknown error while trying to retrieve the access token\",\n claim: \"This credential doesn't support claims challenges. To authenticate with the required claims, please run the following command:\",\n};\n/**\n * Mockable reference to the Developer CLI credential cliCredentialFunctions\n * @internal\n */\nexports.developerCliCredentialInternals = {\n /**\n * @internal\n */\n getSafeWorkingDir() {\n if (process.platform === \"win32\") {\n let systemRoot = process.env.SystemRoot || process.env[\"SYSTEMROOT\"];\n if (!systemRoot) {\n logger.getToken.warning(\"The SystemRoot environment variable is not set. This may cause issues when using the Azure Developer CLI credential.\");\n systemRoot = \"C:\\\\Windows\";\n }\n return systemRoot;\n }\n else {\n return \"/bin\";\n }\n },\n /**\n * Gets the access token from Azure Developer CLI\n * @param scopes - The scopes to use when getting the token\n * @internal\n */\n async getAzdAccessToken(scopes, tenantId, timeout, claims) {\n let tenantSection = [];\n if (tenantId) {\n tenantSection = [\"--tenant-id\", tenantId];\n }\n let claimsSections = [];\n if (claims) {\n const encodedClaims = btoa(claims);\n claimsSections = [\"--claims\", encodedClaims];\n }\n return new Promise((resolve, reject) => {\n try {\n const args = [\n \"auth\",\n \"token\",\n \"--output\",\n \"json\",\n \"--no-prompt\",\n ...scopes.reduce((previous, current) => previous.concat(\"--scope\", current), []),\n ...tenantSection,\n ...claimsSections,\n ];\n const command = [\"azd\", ...args].join(\" \");\n child_process_1.default.exec(command, {\n cwd: exports.developerCliCredentialInternals.getSafeWorkingDir(),\n timeout,\n }, (error, stdout, stderr) => {\n resolve({ stdout, stderr, error });\n });\n }\n catch (err) {\n reject(err);\n }\n });\n },\n};\n/**\n * Azure Developer CLI is a command-line interface tool that allows developers to create, manage, and deploy\n * resources in Azure. It's built on top of the Azure CLI and provides additional functionality specific\n * to Azure developers. It allows users to authenticate as a user and/or a service principal against\n * Microsoft Entra ID. The\n * AzureDeveloperCliCredential authenticates in a development environment and acquires a token on behalf of\n * the logged-in user or service principal in the Azure Developer CLI. It acts as the Azure Developer CLI logged in user or\n * service principal and executes an Azure CLI command underneath to authenticate the application against\n * Microsoft Entra ID.\n *\n *

Configure AzureDeveloperCliCredential

\n *\n * To use this credential, the developer needs to authenticate locally in Azure Developer CLI using one of the\n * commands below:\n *\n *
    \n *
  1. Run \"azd auth login\" in Azure Developer CLI to authenticate interactively as a user.
  2. \n *
  3. Run \"azd auth login --client-id clientID --client-secret clientSecret\n * --tenant-id tenantID\" to authenticate as a service principal.
  4. \n *
\n *\n * You may need to repeat this process after a certain time period, depending on the refresh token validity in your\n * organization. Generally, the refresh token validity period is a few weeks to a few months.\n * AzureDeveloperCliCredential will prompt you to sign in again.\n */\nclass AzureDeveloperCliCredential {\n tenantId;\n additionallyAllowedTenantIds;\n timeout;\n /**\n * Creates an instance of the {@link AzureDeveloperCliCredential}.\n *\n * To use this credential, ensure that you have already logged\n * in via the 'azd' tool using the command \"azd auth login\" from the commandline.\n *\n * @param options - Options, to optionally allow multi-tenant requests.\n */\n constructor(options) {\n if (options?.tenantId) {\n (0, tenantIdUtils_js_1.checkTenantId)(logger, options?.tenantId);\n this.tenantId = options?.tenantId;\n }\n this.additionallyAllowedTenantIds = (0, tenantIdUtils_js_1.resolveAdditionallyAllowedTenantIds)(options?.additionallyAllowedTenants);\n this.timeout = options?.processTimeoutInMs;\n }\n /**\n * Authenticates with Microsoft Entra ID and returns an access token if successful.\n * If authentication fails, a {@link CredentialUnavailableError} will be thrown with the details of the failure.\n *\n * @param scopes - The list of scopes for which the token will have access.\n * @param options - The options used to configure any requests this\n * TokenCredential implementation might make.\n */\n async getToken(scopes, options = {}) {\n const tenantId = (0, tenantIdUtils_js_1.processMultiTenantRequest)(this.tenantId, options, this.additionallyAllowedTenantIds);\n if (tenantId) {\n (0, tenantIdUtils_js_1.checkTenantId)(logger, tenantId);\n }\n let scopeList;\n if (typeof scopes === \"string\") {\n scopeList = [scopes];\n }\n else {\n scopeList = scopes;\n }\n logger.getToken.info(`Using the scopes ${scopes}`);\n return tracing_js_1.tracingClient.withSpan(`${this.constructor.name}.getToken`, options, async () => {\n try {\n scopeList.forEach((scope) => {\n (0, scopeUtils_js_1.ensureValidScopeForDevTimeCreds)(scope, logger);\n });\n const obj = await exports.developerCliCredentialInternals.getAzdAccessToken(scopeList, tenantId, this.timeout, options.claims);\n const isMFARequiredError = obj.stderr?.match(\"must use multi-factor authentication\") ||\n obj.stderr?.match(\"reauthentication required\");\n const isNotLoggedInError = obj.stderr?.match(\"not logged in, run `azd login` to login\") ||\n obj.stderr?.match(\"not logged in, run `azd auth login` to login\");\n const isNotInstallError = obj.stderr?.match(\"azd:(.*)not found\") ||\n obj.stderr?.startsWith(\"'azd' is not recognized\");\n if (isNotInstallError || (obj.error && obj.error.code === \"ENOENT\")) {\n const error = new errors_js_1.CredentialUnavailableError(exports.azureDeveloperCliPublicErrorMessages.notInstalled);\n logger.getToken.info((0, logging_js_1.formatError)(scopes, error));\n throw error;\n }\n if (isNotLoggedInError) {\n const error = new errors_js_1.CredentialUnavailableError(exports.azureDeveloperCliPublicErrorMessages.login);\n logger.getToken.info((0, logging_js_1.formatError)(scopes, error));\n throw error;\n }\n if (isMFARequiredError) {\n const scope = scopeList\n .reduce((previous, current) => previous.concat(\"--scope\", current), [])\n .join(\" \");\n const loginCmd = `azd auth login ${scope}`;\n const error = new errors_js_1.CredentialUnavailableError(`${exports.azureDeveloperCliPublicErrorMessages.claim} ${loginCmd}`);\n logger.getToken.info((0, logging_js_1.formatError)(scopes, error));\n throw error;\n }\n try {\n const resp = JSON.parse(obj.stdout);\n logger.getToken.info((0, logging_js_1.formatSuccess)(scopes));\n return {\n token: resp.token,\n expiresOnTimestamp: new Date(resp.expiresOn).getTime(),\n tokenType: \"Bearer\",\n };\n }\n catch (e) {\n if (obj.stderr) {\n throw new errors_js_1.CredentialUnavailableError(obj.stderr);\n }\n throw e;\n }\n }\n catch (err) {\n const error = err.name === \"CredentialUnavailableError\"\n ? err\n : new errors_js_1.CredentialUnavailableError(err.message || exports.azureDeveloperCliPublicErrorMessages.unknown);\n logger.getToken.info((0, logging_js_1.formatError)(scopes, error));\n throw error;\n }\n });\n }\n}\nexports.AzureDeveloperCliCredential = AzureDeveloperCliCredential;\n//# sourceMappingURL=azureDeveloperCliCredential.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.checkSubscription = checkSubscription;\nconst logging_js_1 = require(\"./logging.js\");\n/**\n * @internal\n */\nfunction checkSubscription(logger, subscription) {\n if (!subscription.match(/^[0-9a-zA-Z-._ ]+$/)) {\n const error = new Error(`Subscription '${subscription}' contains invalid characters. If this is the name of a subscription, use ` +\n `its ID instead. You can locate your subscription by following the instructions listed here: ` +\n `https://learn.microsoft.com/azure/azure-portal/get-subscription-tenant-id`);\n logger.info((0, logging_js_1.formatError)(\"\", error));\n throw error;\n }\n}\n//# sourceMappingURL=subscriptionUtils.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.AzureCliCredential = exports.cliCredentialInternals = exports.azureCliPublicErrorMessages = void 0;\nconst tslib_1 = require(\"tslib\");\nconst tenantIdUtils_js_1 = require(\"../util/tenantIdUtils.js\");\nconst logging_js_1 = require(\"../util/logging.js\");\nconst scopeUtils_js_1 = require(\"../util/scopeUtils.js\");\nconst errors_js_1 = require(\"../errors.js\");\nconst child_process_1 = tslib_1.__importDefault(require(\"child_process\"));\nconst tracing_js_1 = require(\"../util/tracing.js\");\nconst subscriptionUtils_js_1 = require(\"../util/subscriptionUtils.js\");\nconst logger = (0, logging_js_1.credentialLogger)(\"AzureCliCredential\");\n/**\n * Messages to use when throwing in this credential.\n * @internal\n */\nexports.azureCliPublicErrorMessages = {\n claim: \"This credential doesn't support claims challenges. To authenticate with the required claims, please run the following command:\",\n notInstalled: \"Azure CLI could not be found. Please visit https://aka.ms/azure-cli for installation instructions and then, once installed, authenticate to your Azure account using 'az login'.\",\n login: \"Please run 'az login' from a command prompt to authenticate before using this credential.\",\n unknown: \"Unknown error while trying to retrieve the access token\",\n unexpectedResponse: 'Unexpected response from Azure CLI when getting token. Expected \"expiresOn\" to be a RFC3339 date string. Got:',\n};\n/**\n * Mockable reference to the CLI credential cliCredentialFunctions\n * @internal\n */\nexports.cliCredentialInternals = {\n /**\n * @internal\n */\n getSafeWorkingDir() {\n if (process.platform === \"win32\") {\n let systemRoot = process.env.SystemRoot || process.env[\"SYSTEMROOT\"];\n if (!systemRoot) {\n logger.getToken.warning(\"The SystemRoot environment variable is not set. This may cause issues when using the Azure CLI credential.\");\n systemRoot = \"C:\\\\Windows\";\n }\n return systemRoot;\n }\n else {\n return \"/bin\";\n }\n },\n /**\n * Gets the access token from Azure CLI\n * @param resource - The resource to use when getting the token\n * @internal\n */\n async getAzureCliAccessToken(resource, tenantId, subscription, timeout) {\n let tenantSection = [];\n let subscriptionSection = [];\n if (tenantId) {\n tenantSection = [\"--tenant\", tenantId];\n }\n if (subscription) {\n // Add quotes around the subscription to handle subscriptions with spaces\n subscriptionSection = [\"--subscription\", `\"${subscription}\"`];\n }\n return new Promise((resolve, reject) => {\n try {\n const args = [\n \"account\",\n \"get-access-token\",\n \"--output\",\n \"json\",\n \"--resource\",\n resource,\n ...tenantSection,\n ...subscriptionSection,\n ];\n const command = [\"az\", ...args].join(\" \");\n child_process_1.default.exec(command, { cwd: exports.cliCredentialInternals.getSafeWorkingDir(), timeout }, (error, stdout, stderr) => {\n resolve({ stdout: stdout, stderr: stderr, error });\n });\n }\n catch (err) {\n reject(err);\n }\n });\n },\n};\n/**\n * This credential will use the currently logged-in user login information\n * via the Azure CLI ('az') commandline tool.\n * To do so, it will read the user access token and expire time\n * with Azure CLI command \"az account get-access-token\".\n */\nclass AzureCliCredential {\n tenantId;\n additionallyAllowedTenantIds;\n timeout;\n subscription;\n /**\n * Creates an instance of the {@link AzureCliCredential}.\n *\n * To use this credential, ensure that you have already logged\n * in via the 'az' tool using the command \"az login\" from the commandline.\n *\n * @param options - Options, to optionally allow multi-tenant requests.\n */\n constructor(options) {\n if (options?.tenantId) {\n (0, tenantIdUtils_js_1.checkTenantId)(logger, options?.tenantId);\n this.tenantId = options?.tenantId;\n }\n if (options?.subscription) {\n (0, subscriptionUtils_js_1.checkSubscription)(logger, options?.subscription);\n this.subscription = options?.subscription;\n }\n this.additionallyAllowedTenantIds = (0, tenantIdUtils_js_1.resolveAdditionallyAllowedTenantIds)(options?.additionallyAllowedTenants);\n this.timeout = options?.processTimeoutInMs;\n }\n /**\n * Authenticates with Microsoft Entra ID and returns an access token if successful.\n * If authentication fails, a {@link CredentialUnavailableError} will be thrown with the details of the failure.\n *\n * @param scopes - The list of scopes for which the token will have access.\n * @param options - The options used to configure any requests this\n * TokenCredential implementation might make.\n */\n async getToken(scopes, options = {}) {\n const scope = typeof scopes === \"string\" ? scopes : scopes[0];\n const claimsValue = options.claims;\n if (claimsValue && claimsValue.trim()) {\n const encodedClaims = btoa(claimsValue);\n let loginCmd = `az login --claims-challenge ${encodedClaims} --scope ${scope}`;\n const tenantIdFromOptions = options.tenantId;\n if (tenantIdFromOptions) {\n loginCmd += ` --tenant ${tenantIdFromOptions}`;\n }\n const error = new errors_js_1.CredentialUnavailableError(`${exports.azureCliPublicErrorMessages.claim} ${loginCmd}`);\n logger.getToken.info((0, logging_js_1.formatError)(scope, error));\n throw error;\n }\n const tenantId = (0, tenantIdUtils_js_1.processMultiTenantRequest)(this.tenantId, options, this.additionallyAllowedTenantIds);\n if (tenantId) {\n (0, tenantIdUtils_js_1.checkTenantId)(logger, tenantId);\n }\n if (this.subscription) {\n (0, subscriptionUtils_js_1.checkSubscription)(logger, this.subscription);\n }\n logger.getToken.info(`Using the scope ${scope}`);\n return tracing_js_1.tracingClient.withSpan(`${this.constructor.name}.getToken`, options, async () => {\n try {\n (0, scopeUtils_js_1.ensureValidScopeForDevTimeCreds)(scope, logger);\n const resource = (0, scopeUtils_js_1.getScopeResource)(scope);\n const obj = await exports.cliCredentialInternals.getAzureCliAccessToken(resource, tenantId, this.subscription, this.timeout);\n const specificScope = obj.stderr?.match(\"(.*)az login --scope(.*)\");\n const isLoginError = obj.stderr?.match(\"(.*)az login(.*)\") && !specificScope;\n const isNotInstallError = obj.stderr?.match(\"az:(.*)not found\") || obj.stderr?.startsWith(\"'az' is not recognized\");\n if (isNotInstallError) {\n const error = new errors_js_1.CredentialUnavailableError(exports.azureCliPublicErrorMessages.notInstalled);\n logger.getToken.info((0, logging_js_1.formatError)(scopes, error));\n throw error;\n }\n if (isLoginError) {\n const error = new errors_js_1.CredentialUnavailableError(exports.azureCliPublicErrorMessages.login);\n logger.getToken.info((0, logging_js_1.formatError)(scopes, error));\n throw error;\n }\n try {\n const responseData = obj.stdout;\n const response = this.parseRawResponse(responseData);\n logger.getToken.info((0, logging_js_1.formatSuccess)(scopes));\n return response;\n }\n catch (e) {\n if (obj.stderr) {\n throw new errors_js_1.CredentialUnavailableError(obj.stderr);\n }\n throw e;\n }\n }\n catch (err) {\n const error = err.name === \"CredentialUnavailableError\"\n ? err\n : new errors_js_1.CredentialUnavailableError(err.message || exports.azureCliPublicErrorMessages.unknown);\n logger.getToken.info((0, logging_js_1.formatError)(scopes, error));\n throw error;\n }\n });\n }\n /**\n * Parses the raw JSON response from the Azure CLI into a usable AccessToken object\n *\n * @param rawResponse - The raw JSON response from the Azure CLI\n * @returns An access token with the expiry time parsed from the raw response\n *\n * The expiryTime of the credential's access token, in milliseconds, is calculated as follows:\n *\n * When available, expires_on (introduced in Azure CLI v2.54.0) will be preferred. Otherwise falls back to expiresOn.\n */\n parseRawResponse(rawResponse) {\n const response = JSON.parse(rawResponse);\n const token = response.accessToken;\n // if available, expires_on will be a number representing seconds since epoch.\n // ensure it's a number or NaN\n let expiresOnTimestamp = Number.parseInt(response.expires_on, 10) * 1000;\n if (!isNaN(expiresOnTimestamp)) {\n logger.getToken.info(\"expires_on is available and is valid, using it\");\n return {\n token,\n expiresOnTimestamp,\n tokenType: \"Bearer\",\n };\n }\n // fallback to the older expiresOn - an RFC3339 date string\n expiresOnTimestamp = new Date(response.expiresOn).getTime();\n // ensure expiresOn is well-formatted\n if (isNaN(expiresOnTimestamp)) {\n throw new errors_js_1.CredentialUnavailableError(`${exports.azureCliPublicErrorMessages.unexpectedResponse} \"${response.expiresOn}\"`);\n }\n return {\n token,\n expiresOnTimestamp,\n tokenType: \"Bearer\",\n };\n }\n}\nexports.AzureCliCredential = AzureCliCredential;\n//# sourceMappingURL=azureCliCredential.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.processUtils = void 0;\nconst tslib_1 = require(\"tslib\");\nconst node_child_process_1 = tslib_1.__importDefault(require(\"node:child_process\"));\n/**\n * Easy to mock childProcess utils.\n * @internal\n */\nexports.processUtils = {\n /**\n * Promisifying childProcess.execFile\n * @internal\n */\n execFile(file, params, options) {\n return new Promise((resolve, reject) => {\n node_child_process_1.default.execFile(file, params, options, (error, stdout, stderr) => {\n if (Buffer.isBuffer(stdout)) {\n stdout = stdout.toString(\"utf8\");\n }\n if (Buffer.isBuffer(stderr)) {\n stderr = stderr.toString(\"utf8\");\n }\n if (stderr || error) {\n reject(stderr ? new Error(stderr) : error);\n }\n else {\n resolve(stdout);\n }\n });\n });\n },\n};\n//# sourceMappingURL=processUtils.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.AzurePowerShellCredential = exports.commandStack = exports.powerShellPublicErrorMessages = exports.powerShellErrors = void 0;\nexports.formatCommand = formatCommand;\nexports.parseJsonToken = parseJsonToken;\nconst tenantIdUtils_js_1 = require(\"../util/tenantIdUtils.js\");\nconst logging_js_1 = require(\"../util/logging.js\");\nconst scopeUtils_js_1 = require(\"../util/scopeUtils.js\");\nconst errors_js_1 = require(\"../errors.js\");\nconst processUtils_js_1 = require(\"../util/processUtils.js\");\nconst tracing_js_1 = require(\"../util/tracing.js\");\nconst logger = (0, logging_js_1.credentialLogger)(\"AzurePowerShellCredential\");\nconst isWindows = process.platform === \"win32\";\n/**\n * Returns a platform-appropriate command name by appending \".exe\" on Windows.\n *\n * @internal\n */\nfunction formatCommand(commandName) {\n if (isWindows) {\n return `${commandName}.exe`;\n }\n else {\n return commandName;\n }\n}\n/**\n * Receives a list of commands to run, executes them, then returns the outputs.\n * If anything fails, an error is thrown.\n * @internal\n */\nasync function runCommands(commands, timeout) {\n const results = [];\n for (const command of commands) {\n const [file, ...parameters] = command;\n const result = (await processUtils_js_1.processUtils.execFile(file, parameters, {\n encoding: \"utf8\",\n timeout,\n }));\n results.push(result);\n }\n return results;\n}\n/**\n * Known PowerShell errors\n * @internal\n */\nexports.powerShellErrors = {\n login: \"Run Connect-AzAccount to login\",\n installed: \"The specified module 'Az.Accounts' with version '2.2.0' was not loaded because no valid module file was found in any module directory\",\n};\n/**\n * Messages to use when throwing in this credential.\n * @internal\n */\nexports.powerShellPublicErrorMessages = {\n login: \"Please run 'Connect-AzAccount' from PowerShell to authenticate before using this credential.\",\n installed: `The 'Az.Account' module >= 2.2.0 is not installed. Install the Azure Az PowerShell module with: \"Install-Module -Name Az -Scope CurrentUser -Repository PSGallery -Force\".`,\n claim: \"This credential doesn't support claims challenges. To authenticate with the required claims, please run the following command:\",\n troubleshoot: `To troubleshoot, visit https://aka.ms/azsdk/js/identity/powershellcredential/troubleshoot.`,\n};\n// PowerShell Azure User not logged in error check.\nconst isLoginError = (err) => err.message.match(`(.*)${exports.powerShellErrors.login}(.*)`);\n// Az Module not Installed in Azure PowerShell check.\nconst isNotInstalledError = (err) => err.message.match(exports.powerShellErrors.installed);\n/**\n * The PowerShell commands to be tried, in order.\n *\n * @internal\n */\nexports.commandStack = [formatCommand(\"pwsh\")];\nif (isWindows) {\n exports.commandStack.push(formatCommand(\"powershell\"));\n}\n/**\n * This credential will use the currently logged-in user information from the\n * Azure PowerShell module. To do so, it will read the user access token and\n * expire time with Azure PowerShell command `Get-AzAccessToken -ResourceUrl {ResourceScope}`\n */\nclass AzurePowerShellCredential {\n tenantId;\n additionallyAllowedTenantIds;\n timeout;\n /**\n * Creates an instance of the {@link AzurePowerShellCredential}.\n *\n * To use this credential:\n * - Install the Azure Az PowerShell module with:\n * `Install-Module -Name Az -Scope CurrentUser -Repository PSGallery -Force`.\n * - You have already logged in to Azure PowerShell using the command\n * `Connect-AzAccount` from the command line.\n *\n * @param options - Options, to optionally allow multi-tenant requests.\n */\n constructor(options) {\n if (options?.tenantId) {\n (0, tenantIdUtils_js_1.checkTenantId)(logger, options?.tenantId);\n this.tenantId = options?.tenantId;\n }\n this.additionallyAllowedTenantIds = (0, tenantIdUtils_js_1.resolveAdditionallyAllowedTenantIds)(options?.additionallyAllowedTenants);\n this.timeout = options?.processTimeoutInMs;\n }\n /**\n * Gets the access token from Azure PowerShell\n * @param resource - The resource to use when getting the token\n */\n async getAzurePowerShellAccessToken(resource, tenantId, timeout) {\n // Clone the stack to avoid mutating it while iterating\n for (const powerShellCommand of [...exports.commandStack]) {\n try {\n await runCommands([[powerShellCommand, \"/?\"]], timeout);\n }\n catch (e) {\n // Remove this credential from the original stack so that we don't try it again.\n exports.commandStack.shift();\n continue;\n }\n const results = await runCommands([\n [\n powerShellCommand,\n \"-NoProfile\",\n \"-NonInteractive\",\n \"-Command\",\n `\n $tenantId = \"${tenantId ?? \"\"}\"\n $m = Import-Module Az.Accounts -MinimumVersion 2.2.0 -PassThru\n $useSecureString = $m.Version -ge [version]'2.17.0' -and $m.Version -lt [version]'5.0.0'\n\n $params = @{\n ResourceUrl = \"${resource}\"\n }\n\n if ($tenantId.Length -gt 0) {\n $params[\"TenantId\"] = $tenantId\n }\n\n if ($useSecureString) {\n $params[\"AsSecureString\"] = $true\n }\n\n $token = Get-AzAccessToken @params\n\n $result = New-Object -TypeName PSObject\n $result | Add-Member -MemberType NoteProperty -Name ExpiresOn -Value $token.ExpiresOn\n\n if ($token.Token -is [System.Security.SecureString]) {\n if ($PSVersionTable.PSVersion.Major -lt 7) {\n $ssPtr = [System.Runtime.InteropServices.Marshal]::SecureStringToBSTR($token.Token)\n try {\n $result | Add-Member -MemberType NoteProperty -Name Token -Value ([System.Runtime.InteropServices.Marshal]::PtrToStringBSTR($ssPtr))\n }\n finally {\n [System.Runtime.InteropServices.Marshal]::ZeroFreeBSTR($ssPtr)\n }\n }\n else {\n $result | Add-Member -MemberType NoteProperty -Name Token -Value ($token.Token | ConvertFrom-SecureString -AsPlainText)\n }\n }\n else {\n $result | Add-Member -MemberType NoteProperty -Name Token -Value $token.Token\n }\n\n Write-Output (ConvertTo-Json $result)\n `,\n ],\n ]);\n const result = results[0];\n return parseJsonToken(result);\n }\n throw new Error(`Unable to execute PowerShell. Ensure that it is installed in your system`);\n }\n /**\n * Authenticates with Microsoft Entra ID and returns an access token if successful.\n * If the authentication cannot be performed through PowerShell, a {@link CredentialUnavailableError} will be thrown.\n *\n * @param scopes - The list of scopes for which the token will have access.\n * @param options - The options used to configure any requests this TokenCredential implementation might make.\n */\n async getToken(scopes, options = {}) {\n return tracing_js_1.tracingClient.withSpan(`${this.constructor.name}.getToken`, options, async () => {\n const scope = typeof scopes === \"string\" ? scopes : scopes[0];\n const claimsValue = options.claims;\n if (claimsValue && claimsValue.trim()) {\n const encodedClaims = btoa(claimsValue);\n let loginCmd = `Connect-AzAccount -ClaimsChallenge ${encodedClaims}`;\n const tenantIdFromOptions = options.tenantId;\n if (tenantIdFromOptions) {\n loginCmd += ` -Tenant ${tenantIdFromOptions}`;\n }\n const error = new errors_js_1.CredentialUnavailableError(`${exports.powerShellPublicErrorMessages.claim} ${loginCmd}`);\n logger.getToken.info((0, logging_js_1.formatError)(scope, error));\n throw error;\n }\n const tenantId = (0, tenantIdUtils_js_1.processMultiTenantRequest)(this.tenantId, options, this.additionallyAllowedTenantIds);\n if (tenantId) {\n (0, tenantIdUtils_js_1.checkTenantId)(logger, tenantId);\n }\n try {\n (0, scopeUtils_js_1.ensureValidScopeForDevTimeCreds)(scope, logger);\n logger.getToken.info(`Using the scope ${scope}`);\n const resource = (0, scopeUtils_js_1.getScopeResource)(scope);\n const response = await this.getAzurePowerShellAccessToken(resource, tenantId, this.timeout);\n logger.getToken.info((0, logging_js_1.formatSuccess)(scopes));\n return {\n token: response.Token,\n expiresOnTimestamp: new Date(response.ExpiresOn).getTime(),\n tokenType: \"Bearer\",\n };\n }\n catch (err) {\n if (isNotInstalledError(err)) {\n const error = new errors_js_1.CredentialUnavailableError(exports.powerShellPublicErrorMessages.installed);\n logger.getToken.info((0, logging_js_1.formatError)(scope, error));\n throw error;\n }\n else if (isLoginError(err)) {\n const error = new errors_js_1.CredentialUnavailableError(exports.powerShellPublicErrorMessages.login);\n logger.getToken.info((0, logging_js_1.formatError)(scope, error));\n throw error;\n }\n const error = new errors_js_1.CredentialUnavailableError(`${err}. ${exports.powerShellPublicErrorMessages.troubleshoot}`);\n logger.getToken.info((0, logging_js_1.formatError)(scope, error));\n throw error;\n }\n });\n }\n}\nexports.AzurePowerShellCredential = AzurePowerShellCredential;\n/**\n *\n * @internal\n */\nasync function parseJsonToken(result) {\n const jsonRegex = /{[^{}]*}/g;\n const matches = result.match(jsonRegex);\n let resultWithoutToken = result;\n if (matches) {\n try {\n for (const item of matches) {\n try {\n const jsonContent = JSON.parse(item);\n if (jsonContent?.Token) {\n resultWithoutToken = resultWithoutToken.replace(item, \"\");\n if (resultWithoutToken) {\n logger.getToken.warning(resultWithoutToken);\n }\n return jsonContent;\n }\n }\n catch (e) {\n continue;\n }\n }\n }\n catch (e) {\n throw new Error(`Unable to parse the output of PowerShell. Received output: ${result}`);\n }\n }\n throw new Error(`No access token found in the output. Received output: ${result}`);\n}\n//# sourceMappingURL=azurePowerShellCredential.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.VisualStudioCodeCredential = void 0;\nconst logging_js_1 = require(\"../util/logging.js\");\nconst tenantIdUtils_js_1 = require(\"../util/tenantIdUtils.js\");\nconst errors_js_1 = require(\"../errors.js\");\nconst tenantIdUtils_js_2 = require(\"../util/tenantIdUtils.js\");\nconst msalClient_js_1 = require(\"../msal/nodeFlows/msalClient.js\");\nconst scopeUtils_js_1 = require(\"../util/scopeUtils.js\");\nconst msalPlugins_js_1 = require(\"../msal/nodeFlows/msalPlugins.js\");\nconst utils_js_1 = require(\"../msal/utils.js\");\nconst promises_1 = require(\"node:fs/promises\");\nconst CommonTenantId = \"common\";\nconst VSCodeClientId = \"aebc6443-996d-45c2-90f0-388ff96faa56\";\nconst logger = (0, logging_js_1.credentialLogger)(\"VisualStudioCodeCredential\");\n// Map of unsupported Tenant IDs and the errors we will be throwing.\nconst unsupportedTenantIds = {\n adfs: \"The VisualStudioCodeCredential does not support authentication with ADFS tenants.\",\n};\nfunction checkUnsupportedTenant(tenantId) {\n // If the Tenant ID isn't supported, we throw.\n const unsupportedTenantError = unsupportedTenantIds[tenantId];\n if (unsupportedTenantError) {\n throw new errors_js_1.CredentialUnavailableError(unsupportedTenantError);\n }\n}\n/**\n * Connects to Azure using the user account signed in through the Azure Resources extension in Visual Studio Code.\n * Once the user has logged in via the extension, this credential can share the same refresh token\n * that is cached by the extension.\n */\nclass VisualStudioCodeCredential {\n tenantId;\n additionallyAllowedTenantIds;\n msalClient;\n options;\n /**\n * Creates an instance of VisualStudioCodeCredential to use for automatically authenticating via VSCode.\n *\n * **Note**: `VisualStudioCodeCredential` is provided by a plugin package:\n * `@azure/identity-vscode`. If this package is not installed, then authentication using\n * `VisualStudioCodeCredential` will not be available.\n *\n * @param options - Options for configuring the client which makes the authentication request.\n */\n constructor(options) {\n this.options = options || {};\n if (options && options.tenantId) {\n (0, tenantIdUtils_js_2.checkTenantId)(logger, options.tenantId);\n this.tenantId = options.tenantId;\n }\n else {\n this.tenantId = CommonTenantId;\n }\n this.additionallyAllowedTenantIds = (0, tenantIdUtils_js_1.resolveAdditionallyAllowedTenantIds)(options?.additionallyAllowedTenants);\n checkUnsupportedTenant(this.tenantId);\n }\n /**\n * Runs preparations for any further getToken request:\n * - Validates that the plugin is available.\n * - Loads the authentication record from VSCode if available.\n * - Creates the MSAL client with the loaded plugin and authentication record.\n */\n async prepare(scopes) {\n const tenantId = (0, tenantIdUtils_js_1.processMultiTenantRequest)(this.tenantId, this.options, this.additionallyAllowedTenantIds, logger) || this.tenantId;\n if (!(0, msalPlugins_js_1.hasVSCodePlugin)() || !msalPlugins_js_1.vsCodeAuthRecordPath) {\n throw new errors_js_1.CredentialUnavailableError(\"Visual Studio Code Authentication is not available.\" +\n \" Ensure you have have Azure Resources Extension installed in VS Code,\" +\n \" signed into Azure via VS Code, installed the @azure/identity-vscode package,\" +\n \" and properly configured the extension.\");\n }\n // Load the authentication record directly from the path\n const authenticationRecord = await this.loadAuthRecord(msalPlugins_js_1.vsCodeAuthRecordPath, scopes);\n this.msalClient = (0, msalClient_js_1.createMsalClient)(VSCodeClientId, tenantId, {\n ...this.options,\n isVSCodeCredential: true,\n brokerOptions: {\n enabled: true,\n parentWindowHandle: new Uint8Array(0),\n useDefaultBrokerAccount: true,\n },\n authenticationRecord,\n });\n }\n /**\n * The promise of the single preparation that will be executed at the first getToken request for an instance of this class.\n */\n preparePromise;\n /**\n * Runs preparations for any further getToken, but only once.\n */\n prepareOnce(scopes) {\n if (!this.preparePromise) {\n this.preparePromise = this.prepare(scopes);\n }\n return this.preparePromise;\n }\n /**\n * Returns the token found by searching VSCode's authentication cache or\n * returns null if no token could be found.\n *\n * @param scopes - The list of scopes for which the token will have access.\n * @param options - The options used to configure any requests this\n * `TokenCredential` implementation might make.\n */\n async getToken(scopes, options) {\n // Load the plugin and authentication record only once\n const scopeArray = (0, scopeUtils_js_1.ensureScopes)(scopes);\n await this.prepareOnce(scopeArray);\n if (!this.msalClient) {\n throw new errors_js_1.CredentialUnavailableError(\"Visual Studio Code Authentication failed to initialize.\" +\n \" Ensure you have have Azure Resources Extension installed in VS Code,\" +\n \" signed into Azure via VS Code, installed the @azure/identity-vscode package,\" +\n \" and properly configured the extension.\");\n }\n // Disable automatic authentication to ensure that the user is not prompted interactively if no token is available\n return this.msalClient.getTokenByInteractiveRequest(scopeArray, {\n ...options,\n disableAutomaticAuthentication: true,\n });\n }\n /**\n * Loads the authentication record from the specified path.\n * @param authRecordPath - The path to the authentication record file.\n * @param scopes - The list of scopes for which the token will have access.\n * @returns The authentication record or undefined if loading fails.\n */\n async loadAuthRecord(authRecordPath, scopes) {\n try {\n const authRecordContent = await (0, promises_1.readFile)(authRecordPath, { encoding: \"utf8\" });\n return (0, utils_js_1.deserializeAuthenticationRecord)(authRecordContent);\n }\n catch (error) {\n logger.getToken.info((0, logging_js_1.formatError)(scopes, error));\n throw new errors_js_1.CredentialUnavailableError(\"Cannot load authentication record in Visual Studio Code.\" +\n \" Ensure you have have Azure Resources Extension installed in VS Code,\" +\n \" signed into Azure via VS Code, installed the @azure/identity-vscode package,\" +\n \" and properly configured the extension.\");\n }\n }\n}\nexports.VisualStudioCodeCredential = VisualStudioCodeCredential;\n//# sourceMappingURL=visualStudioCodeCredential.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.BrokerCredential = void 0;\nconst tenantIdUtils_js_1 = require(\"../util/tenantIdUtils.js\");\nconst logging_js_1 = require(\"../util/logging.js\");\nconst scopeUtils_js_1 = require(\"../util/scopeUtils.js\");\nconst tracing_js_1 = require(\"../util/tracing.js\");\nconst msalClient_js_1 = require(\"../msal/nodeFlows/msalClient.js\");\nconst constants_js_1 = require(\"../constants.js\");\nconst errors_js_1 = require(\"../errors.js\");\nconst logger = (0, logging_js_1.credentialLogger)(\"BrokerCredential\");\n/**\n * Enables authentication to Microsoft Entra ID using WAM (Web Account Manager) broker.\n * This credential uses the default account logged into the OS via a broker.\n */\nclass BrokerCredential {\n brokerMsalClient;\n brokerTenantId;\n brokerAdditionallyAllowedTenantIds;\n /**\n * Creates an instance of BrokerCredential with the required broker options.\n *\n * This credential uses WAM (Web Account Manager) for authentication, which provides\n * better security and user experience on Windows platforms.\n *\n * @param options - Options for configuring the broker credential, including required broker options.\n */\n constructor(options) {\n this.brokerTenantId = (0, tenantIdUtils_js_1.resolveTenantId)(logger, options.tenantId);\n this.brokerAdditionallyAllowedTenantIds = (0, tenantIdUtils_js_1.resolveAdditionallyAllowedTenantIds)(options?.additionallyAllowedTenants);\n const msalClientOptions = {\n ...options,\n tokenCredentialOptions: options,\n logger,\n brokerOptions: {\n enabled: true,\n parentWindowHandle: new Uint8Array(0),\n useDefaultBrokerAccount: true,\n },\n };\n this.brokerMsalClient = (0, msalClient_js_1.createMsalClient)(constants_js_1.DeveloperSignOnClientId, this.brokerTenantId, msalClientOptions);\n }\n /**\n * Authenticates with Microsoft Entra ID using WAM broker and returns an access token if successful.\n * If authentication fails, a {@link CredentialUnavailableError} will be thrown with the details of the failure.\n *\n * This method extends the base getToken method to support silentAuthenticationOnly option\n * when using broker authentication.\n *\n * @param scopes - The list of scopes for which the token will have access.\n * @param options - The options used to configure the token request, including silentAuthenticationOnly option.\n */\n async getToken(scopes, options = {}) {\n return tracing_js_1.tracingClient.withSpan(`${this.constructor.name}.getToken`, options, async (newOptions) => {\n newOptions.tenantId = (0, tenantIdUtils_js_1.processMultiTenantRequest)(this.brokerTenantId, newOptions, this.brokerAdditionallyAllowedTenantIds, logger);\n const arrayScopes = (0, scopeUtils_js_1.ensureScopes)(scopes);\n try {\n return this.brokerMsalClient.getBrokeredToken(arrayScopes, true, {\n ...newOptions,\n disableAutomaticAuthentication: true,\n });\n }\n catch (e) {\n logger.getToken.info((0, logging_js_1.formatError)(arrayScopes, e));\n throw new errors_js_1.CredentialUnavailableError(\"Failed to acquire token using broker authentication\", { cause: e });\n }\n });\n }\n}\nexports.BrokerCredential = BrokerCredential;\n//# sourceMappingURL=brokerCredential.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.createDefaultBrokerCredential = createDefaultBrokerCredential;\nexports.createDefaultVisualStudioCodeCredential = createDefaultVisualStudioCodeCredential;\nexports.createDefaultManagedIdentityCredential = createDefaultManagedIdentityCredential;\nexports.createDefaultWorkloadIdentityCredential = createDefaultWorkloadIdentityCredential;\nexports.createDefaultAzureDeveloperCliCredential = createDefaultAzureDeveloperCliCredential;\nexports.createDefaultAzureCliCredential = createDefaultAzureCliCredential;\nexports.createDefaultAzurePowershellCredential = createDefaultAzurePowershellCredential;\nexports.createDefaultEnvironmentCredential = createDefaultEnvironmentCredential;\nconst environmentCredential_js_1 = require(\"./environmentCredential.js\");\nconst index_js_1 = require(\"./managedIdentityCredential/index.js\");\nconst workloadIdentityCredential_js_1 = require(\"./workloadIdentityCredential.js\");\nconst azureDeveloperCliCredential_js_1 = require(\"./azureDeveloperCliCredential.js\");\nconst azureCliCredential_js_1 = require(\"./azureCliCredential.js\");\nconst azurePowerShellCredential_js_1 = require(\"./azurePowerShellCredential.js\");\nconst visualStudioCodeCredential_js_1 = require(\"./visualStudioCodeCredential.js\");\nconst brokerCredential_js_1 = require(\"./brokerCredential.js\");\n/**\n * Creates a {@link BrokerCredential} instance with the provided options.\n * This credential uses the Windows Authentication Manager (WAM) broker for authentication.\n * It will only attempt to authenticate silently using the default broker account\n *\n * @param options - Options for configuring the credential.\n *\n * @internal\n */\nfunction createDefaultBrokerCredential(options = {}) {\n return new brokerCredential_js_1.BrokerCredential(options);\n}\n/**\n * Creates a {@link VisualStudioCodeCredential} from the provided options.\n * @param options - Options to configure the credential.\n *\n * @internal\n */\nfunction createDefaultVisualStudioCodeCredential(options = {}) {\n return new visualStudioCodeCredential_js_1.VisualStudioCodeCredential(options);\n}\n/**\n * Creates a {@link ManagedIdentityCredential} from the provided options.\n * @param options - Options to configure the credential.\n *\n * @internal\n */\nfunction createDefaultManagedIdentityCredential(options = {}) {\n options.retryOptions ??= {\n maxRetries: 5,\n retryDelayInMs: 800,\n };\n // ManagedIdentityCredential inside DAC chain should send a probe request by default.\n // This is different from standalone ManagedIdentityCredential behavior\n // or when AZURE_TOKEN_CREDENTIALS is set to only ManagedIdentityCredential.\n options.sendProbeRequest ??= true;\n const managedIdentityClientId = options?.managedIdentityClientId ??\n process.env.AZURE_CLIENT_ID;\n const workloadIdentityClientId = options?.workloadIdentityClientId ??\n managedIdentityClientId;\n const managedResourceId = options\n ?.managedIdentityResourceId;\n const workloadFile = process.env.AZURE_FEDERATED_TOKEN_FILE;\n const tenantId = options?.tenantId ?? process.env.AZURE_TENANT_ID;\n if (managedResourceId) {\n const managedIdentityResourceIdOptions = {\n ...options,\n resourceId: managedResourceId,\n };\n return new index_js_1.ManagedIdentityCredential(managedIdentityResourceIdOptions);\n }\n if (workloadFile && workloadIdentityClientId) {\n const workloadIdentityCredentialOptions = {\n ...options,\n tenantId: tenantId,\n };\n return new index_js_1.ManagedIdentityCredential(workloadIdentityClientId, workloadIdentityCredentialOptions);\n }\n if (managedIdentityClientId) {\n const managedIdentityClientOptions = {\n ...options,\n clientId: managedIdentityClientId,\n };\n return new index_js_1.ManagedIdentityCredential(managedIdentityClientOptions);\n }\n // We may be able to return a UnavailableCredential here, but that may be a breaking change\n return new index_js_1.ManagedIdentityCredential(options);\n}\n/**\n * Creates a {@link WorkloadIdentityCredential} from the provided options.\n * @param options - Options to configure the credential.\n *\n * @internal\n */\nfunction createDefaultWorkloadIdentityCredential(options) {\n const managedIdentityClientId = options?.managedIdentityClientId ??\n process.env.AZURE_CLIENT_ID;\n const workloadIdentityClientId = options?.workloadIdentityClientId ??\n managedIdentityClientId;\n const workloadFile = process.env.AZURE_FEDERATED_TOKEN_FILE;\n const tenantId = options?.tenantId ?? process.env.AZURE_TENANT_ID;\n if (workloadFile && workloadIdentityClientId) {\n const workloadIdentityCredentialOptions = {\n ...options,\n tenantId,\n clientId: workloadIdentityClientId,\n tokenFilePath: workloadFile,\n };\n return new workloadIdentityCredential_js_1.WorkloadIdentityCredential(workloadIdentityCredentialOptions);\n }\n if (tenantId) {\n const workloadIdentityClientTenantOptions = {\n ...options,\n tenantId,\n };\n return new workloadIdentityCredential_js_1.WorkloadIdentityCredential(workloadIdentityClientTenantOptions);\n }\n // We may be able to return a UnavailableCredential here, but that may be a breaking change\n return new workloadIdentityCredential_js_1.WorkloadIdentityCredential(options);\n}\n/**\n * Creates a {@link AzureDeveloperCliCredential} from the provided options.\n * @param options - Options to configure the credential.\n *\n * @internal\n */\nfunction createDefaultAzureDeveloperCliCredential(options = {}) {\n return new azureDeveloperCliCredential_js_1.AzureDeveloperCliCredential(options);\n}\n/**\n * Creates a {@link AzureCliCredential} from the provided options.\n * @param options - Options to configure the credential.\n *\n * @internal\n */\nfunction createDefaultAzureCliCredential(options = {}) {\n return new azureCliCredential_js_1.AzureCliCredential(options);\n}\n/**\n * Creates a {@link AzurePowerShellCredential} from the provided options.\n * @param options - Options to configure the credential.\n *\n * @internal\n */\nfunction createDefaultAzurePowershellCredential(options = {}) {\n return new azurePowerShellCredential_js_1.AzurePowerShellCredential(options);\n}\n/**\n * Creates an {@link EnvironmentCredential} from the provided options.\n * @param options - Options to configure the credential.\n *\n * @internal\n */\nfunction createDefaultEnvironmentCredential(options = {}) {\n return new environmentCredential_js_1.EnvironmentCredential(options);\n}\n//# sourceMappingURL=defaultAzureCredentialFunctions.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.DefaultAzureCredential = exports.UnavailableDefaultCredential = void 0;\nconst chainedTokenCredential_js_1 = require(\"./chainedTokenCredential.js\");\nconst logging_js_1 = require(\"../util/logging.js\");\nconst defaultAzureCredentialFunctions_js_1 = require(\"./defaultAzureCredentialFunctions.js\");\nconst logger = (0, logging_js_1.credentialLogger)(\"DefaultAzureCredential\");\n/**\n * A no-op credential that logs the reason it was skipped if getToken is called.\n * @internal\n */\nclass UnavailableDefaultCredential {\n credentialUnavailableErrorMessage;\n credentialName;\n constructor(credentialName, message) {\n this.credentialName = credentialName;\n this.credentialUnavailableErrorMessage = message;\n }\n getToken() {\n logger.getToken.info(`Skipping ${this.credentialName}, reason: ${this.credentialUnavailableErrorMessage}`);\n return Promise.resolve(null);\n }\n}\nexports.UnavailableDefaultCredential = UnavailableDefaultCredential;\n/**\n * Provides a default {@link ChainedTokenCredential} configuration that works for most\n * applications that use Azure SDK client libraries. For more information, see\n * [DefaultAzureCredential overview](https://aka.ms/azsdk/js/identity/credential-chains#use-defaultazurecredential-for-flexibility).\n *\n * The following credential types will be tried, in order:\n *\n * - {@link EnvironmentCredential}\n * - {@link WorkloadIdentityCredential}\n * - {@link ManagedIdentityCredential}\n * - {@link VisualStudioCodeCredential}\n * - {@link AzureCliCredential}\n * - {@link AzurePowerShellCredential}\n * - {@link AzureDeveloperCliCredential}\n * - BrokerCredential (a broker-enabled credential that requires \\@azure/identity-broker is installed)\n *\n * Consult the documentation of these credential types for more information\n * on how they attempt authentication.\n *\n * The following example demonstrates how to use the `requiredEnvVars` option to ensure that certain environment variables are set before the `DefaultAzureCredential` is instantiated.\n * If any of the specified environment variables are missing or empty, an error will be thrown, preventing the application from continuing execution without the necessary configuration.\n * It also demonstrates how to set the `AZURE_TOKEN_CREDENTIALS` environment variable to control which credentials are included in the chain.\n \n * ```ts snippet:defaultazurecredential_requiredEnvVars\n * import { DefaultAzureCredential } from \"@azure/identity\";\n *\n * const credential = new DefaultAzureCredential({\n * requiredEnvVars: [\n * \"AZURE_CLIENT_ID\",\n * \"AZURE_TENANT_ID\",\n * \"AZURE_CLIENT_SECRET\",\n * \"AZURE_TOKEN_CREDENTIALS\",\n * ],\n * });\n * ```\n */\nclass DefaultAzureCredential extends chainedTokenCredential_js_1.ChainedTokenCredential {\n constructor(options) {\n validateRequiredEnvVars(options);\n // If AZURE_TOKEN_CREDENTIALS is not set, use the default credential chain.\n const azureTokenCredentials = process.env.AZURE_TOKEN_CREDENTIALS\n ? process.env.AZURE_TOKEN_CREDENTIALS.trim().toLowerCase()\n : undefined;\n const devCredentialFunctions = [\n defaultAzureCredentialFunctions_js_1.createDefaultVisualStudioCodeCredential,\n defaultAzureCredentialFunctions_js_1.createDefaultAzureCliCredential,\n defaultAzureCredentialFunctions_js_1.createDefaultAzurePowershellCredential,\n defaultAzureCredentialFunctions_js_1.createDefaultAzureDeveloperCliCredential,\n defaultAzureCredentialFunctions_js_1.createDefaultBrokerCredential,\n ];\n const prodCredentialFunctions = [\n defaultAzureCredentialFunctions_js_1.createDefaultEnvironmentCredential,\n defaultAzureCredentialFunctions_js_1.createDefaultWorkloadIdentityCredential,\n defaultAzureCredentialFunctions_js_1.createDefaultManagedIdentityCredential,\n ];\n let credentialFunctions = [];\n const validCredentialNames = \"EnvironmentCredential, WorkloadIdentityCredential, ManagedIdentityCredential, VisualStudioCodeCredential, AzureCliCredential, AzurePowerShellCredential, AzureDeveloperCliCredential\";\n // If AZURE_TOKEN_CREDENTIALS is set, use it to determine which credentials to use.\n // The value of AZURE_TOKEN_CREDENTIALS should be either \"dev\" or \"prod\" or any one of these credentials - {validCredentialNames}.\n if (azureTokenCredentials) {\n switch (azureTokenCredentials) {\n case \"dev\":\n credentialFunctions = devCredentialFunctions;\n break;\n case \"prod\":\n credentialFunctions = prodCredentialFunctions;\n break;\n case \"environmentcredential\":\n credentialFunctions = [defaultAzureCredentialFunctions_js_1.createDefaultEnvironmentCredential];\n break;\n case \"workloadidentitycredential\":\n credentialFunctions = [defaultAzureCredentialFunctions_js_1.createDefaultWorkloadIdentityCredential];\n break;\n case \"managedidentitycredential\":\n // Setting `sendProbeRequest` to false to ensure ManagedIdentityCredential behavior\n // is consistent when used standalone in DAC chain or used directly.\n credentialFunctions = [\n () => (0, defaultAzureCredentialFunctions_js_1.createDefaultManagedIdentityCredential)({ sendProbeRequest: false }),\n ];\n break;\n case \"visualstudiocodecredential\":\n credentialFunctions = [defaultAzureCredentialFunctions_js_1.createDefaultVisualStudioCodeCredential];\n break;\n case \"azureclicredential\":\n credentialFunctions = [defaultAzureCredentialFunctions_js_1.createDefaultAzureCliCredential];\n break;\n case \"azurepowershellcredential\":\n credentialFunctions = [defaultAzureCredentialFunctions_js_1.createDefaultAzurePowershellCredential];\n break;\n case \"azuredeveloperclicredential\":\n credentialFunctions = [defaultAzureCredentialFunctions_js_1.createDefaultAzureDeveloperCliCredential];\n break;\n default: {\n // If AZURE_TOKEN_CREDENTIALS is set to an unsupported value, throw an error.\n // This will prevent the creation of the DefaultAzureCredential.\n const errorMessage = `Invalid value for AZURE_TOKEN_CREDENTIALS = ${process.env.AZURE_TOKEN_CREDENTIALS}. Valid values are 'prod' or 'dev' or any of these credentials - ${validCredentialNames}.`;\n logger.warning(errorMessage);\n throw new Error(errorMessage);\n }\n }\n }\n else {\n // If AZURE_TOKEN_CREDENTIALS is not set, use the default credential chain.\n credentialFunctions = [...prodCredentialFunctions, ...devCredentialFunctions];\n }\n // Errors from individual credentials should not be thrown in the DefaultAzureCredential constructor, instead throwing on getToken() which is handled by ChainedTokenCredential.\n // When adding new credentials to the default chain, consider:\n // 1. Making the constructor parameters required and explicit\n // 2. Validating any required parameters in the factory function\n // 3. Returning a UnavailableDefaultCredential from the factory function if a credential is unavailable for any reason\n const credentials = credentialFunctions.map((createCredentialFn) => {\n try {\n return createCredentialFn(options ?? {});\n }\n catch (err) {\n logger.warning(`Skipped ${createCredentialFn.name} because of an error creating the credential: ${err}`);\n return new UnavailableDefaultCredential(createCredentialFn.name, err.message);\n }\n });\n super(...credentials);\n }\n}\nexports.DefaultAzureCredential = DefaultAzureCredential;\n/**\n * This function checks that all environment variables in `options.requiredEnvVars` are set and non-empty.\n * If any are missing or empty, it throws an error.\n */\nfunction validateRequiredEnvVars(options) {\n if (options?.requiredEnvVars) {\n const requiredVars = Array.isArray(options.requiredEnvVars)\n ? options.requiredEnvVars\n : [options.requiredEnvVars];\n const missing = requiredVars.filter((envVar) => !process.env[envVar]);\n if (missing.length > 0) {\n const errorMessage = `Required environment ${missing.length === 1 ? \"variable\" : \"variables\"} '${missing.join(\", \")}' for DefaultAzureCredential ${missing.length === 1 ? \"is\" : \"are\"} not set or empty.`;\n logger.warning(errorMessage);\n throw new Error(errorMessage);\n }\n }\n}\n//# sourceMappingURL=defaultAzureCredential.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.InteractiveBrowserCredential = void 0;\nconst tenantIdUtils_js_1 = require(\"../util/tenantIdUtils.js\");\nconst logging_js_1 = require(\"../util/logging.js\");\nconst scopeUtils_js_1 = require(\"../util/scopeUtils.js\");\nconst tracing_js_1 = require(\"../util/tracing.js\");\nconst msalClient_js_1 = require(\"../msal/nodeFlows/msalClient.js\");\nconst constants_js_1 = require(\"../constants.js\");\nconst logger = (0, logging_js_1.credentialLogger)(\"InteractiveBrowserCredential\");\n/**\n * Enables authentication to Microsoft Entra ID inside of the web browser\n * using the interactive login flow.\n */\nclass InteractiveBrowserCredential {\n tenantId;\n additionallyAllowedTenantIds;\n msalClient;\n disableAutomaticAuthentication;\n browserCustomizationOptions;\n loginHint;\n /**\n * Creates an instance of InteractiveBrowserCredential with the details needed.\n *\n * This credential uses the [Authorization Code Flow](https://learn.microsoft.com/entra/identity-platform/v2-oauth2-auth-code-flow).\n * On Node.js, it will open a browser window while it listens for a redirect response from the authentication service.\n * On browsers, it authenticates via popups. The `loginStyle` optional parameter can be set to `redirect` to authenticate by redirecting the user to an Azure secure login page, which then will redirect the user back to the web application where the authentication started.\n *\n * For Node.js, if a `clientId` is provided, the Microsoft Entra application will need to be configured to have a \"Mobile and desktop applications\" redirect endpoint.\n * Follow our guide on [setting up Redirect URIs for Desktop apps that calls to web APIs](https://learn.microsoft.com/entra/identity-platform/scenario-desktop-app-registration#redirect-uris).\n *\n * @param options - Options for configuring the client which makes the authentication requests.\n */\n constructor(options) {\n this.tenantId = (0, tenantIdUtils_js_1.resolveTenantId)(logger, options.tenantId, options.clientId);\n this.additionallyAllowedTenantIds = (0, tenantIdUtils_js_1.resolveAdditionallyAllowedTenantIds)(options?.additionallyAllowedTenants);\n const msalClientOptions = {\n ...options,\n tokenCredentialOptions: options,\n logger,\n };\n const ibcNodeOptions = options;\n this.browserCustomizationOptions = ibcNodeOptions.browserCustomizationOptions;\n this.loginHint = ibcNodeOptions.loginHint;\n if (ibcNodeOptions?.brokerOptions?.enabled) {\n if (!ibcNodeOptions?.brokerOptions?.parentWindowHandle) {\n throw new Error(\"In order to do WAM authentication, `parentWindowHandle` under `brokerOptions` is a required parameter\");\n }\n else {\n msalClientOptions.brokerOptions = {\n enabled: true,\n parentWindowHandle: ibcNodeOptions.brokerOptions.parentWindowHandle,\n legacyEnableMsaPassthrough: ibcNodeOptions.brokerOptions?.legacyEnableMsaPassthrough,\n useDefaultBrokerAccount: ibcNodeOptions.brokerOptions?.useDefaultBrokerAccount,\n };\n }\n }\n this.msalClient = (0, msalClient_js_1.createMsalClient)(options.clientId ?? constants_js_1.DeveloperSignOnClientId, this.tenantId, msalClientOptions);\n this.disableAutomaticAuthentication = options?.disableAutomaticAuthentication;\n }\n /**\n * Authenticates with Microsoft Entra ID and returns an access token if successful.\n * If authentication fails, a {@link CredentialUnavailableError} will be thrown with the details of the failure.\n *\n * If the user provided the option `disableAutomaticAuthentication`,\n * once the token can't be retrieved silently,\n * this method won't attempt to request user interaction to retrieve the token.\n *\n * @param scopes - The list of scopes for which the token will have access.\n * @param options - The options used to configure any requests this\n * TokenCredential implementation might make.\n */\n async getToken(scopes, options = {}) {\n return tracing_js_1.tracingClient.withSpan(`${this.constructor.name}.getToken`, options, async (newOptions) => {\n newOptions.tenantId = (0, tenantIdUtils_js_1.processMultiTenantRequest)(this.tenantId, newOptions, this.additionallyAllowedTenantIds, logger);\n const arrayScopes = (0, scopeUtils_js_1.ensureScopes)(scopes);\n return this.msalClient.getTokenByInteractiveRequest(arrayScopes, {\n ...newOptions,\n disableAutomaticAuthentication: this.disableAutomaticAuthentication,\n browserCustomizationOptions: this.browserCustomizationOptions,\n loginHint: this.loginHint,\n });\n });\n }\n /**\n * Authenticates with Microsoft Entra ID and returns an access token if successful.\n * If authentication fails, a {@link CredentialUnavailableError} will be thrown with the details of the failure.\n *\n * If the token can't be retrieved silently, this method will always generate a challenge for the user.\n *\n * On Node.js, this credential has [Proof Key for Code Exchange (PKCE)](https://datatracker.ietf.org/doc/html/rfc7636) enabled by default.\n * PKCE is a security feature that mitigates authentication code interception attacks.\n *\n * @param scopes - The list of scopes for which the token will have access.\n * @param options - The options used to configure any requests this\n * TokenCredential implementation might make.\n */\n async authenticate(scopes, options = {}) {\n return tracing_js_1.tracingClient.withSpan(`${this.constructor.name}.authenticate`, options, async (newOptions) => {\n const arrayScopes = (0, scopeUtils_js_1.ensureScopes)(scopes);\n await this.msalClient.getTokenByInteractiveRequest(arrayScopes, {\n ...newOptions,\n disableAutomaticAuthentication: false, // this method should always allow user interaction\n browserCustomizationOptions: this.browserCustomizationOptions,\n loginHint: this.loginHint,\n });\n return this.msalClient.getActiveAccount();\n });\n }\n}\nexports.InteractiveBrowserCredential = InteractiveBrowserCredential;\n//# sourceMappingURL=interactiveBrowserCredential.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.DeviceCodeCredential = void 0;\nexports.defaultDeviceCodePromptCallback = defaultDeviceCodePromptCallback;\nconst tenantIdUtils_js_1 = require(\"../util/tenantIdUtils.js\");\nconst logging_js_1 = require(\"../util/logging.js\");\nconst scopeUtils_js_1 = require(\"../util/scopeUtils.js\");\nconst tracing_js_1 = require(\"../util/tracing.js\");\nconst msalClient_js_1 = require(\"../msal/nodeFlows/msalClient.js\");\nconst constants_js_1 = require(\"../constants.js\");\nconst logger = (0, logging_js_1.credentialLogger)(\"DeviceCodeCredential\");\n/**\n * Method that logs the user code from the DeviceCodeCredential.\n * @param deviceCodeInfo - The device code.\n */\nfunction defaultDeviceCodePromptCallback(deviceCodeInfo) {\n console.log(deviceCodeInfo.message);\n}\n/**\n * Enables authentication to Microsoft Entra ID using a device code\n * that the user can enter into https://microsoft.com/devicelogin.\n */\nclass DeviceCodeCredential {\n tenantId;\n additionallyAllowedTenantIds;\n disableAutomaticAuthentication;\n msalClient;\n userPromptCallback;\n /**\n * Creates an instance of DeviceCodeCredential with the details needed\n * to initiate the device code authorization flow with Microsoft Entra ID.\n *\n * A message will be logged, giving users a code that they can use to authenticate once they go to https://microsoft.com/devicelogin\n *\n * Developers can configure how this message is shown by passing a custom `userPromptCallback`:\n *\n * ```ts snippet:device_code_credential_example\n * import { DeviceCodeCredential } from \"@azure/identity\";\n *\n * const credential = new DeviceCodeCredential({\n * tenantId: process.env.AZURE_TENANT_ID,\n * clientId: process.env.AZURE_CLIENT_ID,\n * userPromptCallback: (info) => {\n * console.log(\"CUSTOMIZED PROMPT CALLBACK\", info.message);\n * },\n * });\n * ```\n *\n * @param options - Options for configuring the client which makes the authentication requests.\n */\n constructor(options) {\n this.tenantId = options?.tenantId;\n this.additionallyAllowedTenantIds = (0, tenantIdUtils_js_1.resolveAdditionallyAllowedTenantIds)(options?.additionallyAllowedTenants);\n const clientId = options?.clientId ?? constants_js_1.DeveloperSignOnClientId;\n const tenantId = (0, tenantIdUtils_js_1.resolveTenantId)(logger, options?.tenantId, clientId);\n this.userPromptCallback = options?.userPromptCallback ?? defaultDeviceCodePromptCallback;\n this.msalClient = (0, msalClient_js_1.createMsalClient)(clientId, tenantId, {\n ...options,\n logger,\n tokenCredentialOptions: options || {},\n });\n this.disableAutomaticAuthentication = options?.disableAutomaticAuthentication;\n }\n /**\n * Authenticates with Microsoft Entra ID and returns an access token if successful.\n * If authentication fails, a {@link CredentialUnavailableError} will be thrown with the details of the failure.\n *\n * If the user provided the option `disableAutomaticAuthentication`,\n * once the token can't be retrieved silently,\n * this method won't attempt to request user interaction to retrieve the token.\n *\n * @param scopes - The list of scopes for which the token will have access.\n * @param options - The options used to configure any requests this\n * TokenCredential implementation might make.\n */\n async getToken(scopes, options = {}) {\n return tracing_js_1.tracingClient.withSpan(`${this.constructor.name}.getToken`, options, async (newOptions) => {\n newOptions.tenantId = (0, tenantIdUtils_js_1.processMultiTenantRequest)(this.tenantId, newOptions, this.additionallyAllowedTenantIds, logger);\n const arrayScopes = (0, scopeUtils_js_1.ensureScopes)(scopes);\n return this.msalClient.getTokenByDeviceCode(arrayScopes, this.userPromptCallback, {\n ...newOptions,\n disableAutomaticAuthentication: this.disableAutomaticAuthentication,\n });\n });\n }\n /**\n * Authenticates with Microsoft Entra ID and returns an access token if successful.\n * If authentication fails, a {@link CredentialUnavailableError} will be thrown with the details of the failure.\n *\n * If the token can't be retrieved silently, this method will always generate a challenge for the user.\n *\n * @param scopes - The list of scopes for which the token will have access.\n * @param options - The options used to configure any requests this\n * TokenCredential implementation might make.\n */\n async authenticate(scopes, options = {}) {\n return tracing_js_1.tracingClient.withSpan(`${this.constructor.name}.authenticate`, options, async (newOptions) => {\n const arrayScopes = Array.isArray(scopes) ? scopes : [scopes];\n await this.msalClient.getTokenByDeviceCode(arrayScopes, this.userPromptCallback, {\n ...newOptions,\n disableAutomaticAuthentication: false, // this method should always allow user interaction\n });\n return this.msalClient.getActiveAccount();\n });\n }\n}\nexports.DeviceCodeCredential = DeviceCodeCredential;\n//# sourceMappingURL=deviceCodeCredential.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.AzurePipelinesCredential = void 0;\nexports.handleOidcResponse = handleOidcResponse;\nconst errors_js_1 = require(\"../errors.js\");\nconst core_rest_pipeline_1 = require(\"@azure/core-rest-pipeline\");\nconst clientAssertionCredential_js_1 = require(\"./clientAssertionCredential.js\");\nconst identityClient_js_1 = require(\"../client/identityClient.js\");\nconst tenantIdUtils_js_1 = require(\"../util/tenantIdUtils.js\");\nconst logging_js_1 = require(\"../util/logging.js\");\nconst credentialName = \"AzurePipelinesCredential\";\nconst logger = (0, logging_js_1.credentialLogger)(credentialName);\nconst OIDC_API_VERSION = \"7.1\";\n/**\n * This credential is designed to be used in Azure Pipelines with service connections\n * as a setup for workload identity federation.\n */\nclass AzurePipelinesCredential {\n clientAssertionCredential;\n identityClient;\n /**\n * AzurePipelinesCredential supports Federated Identity on Azure Pipelines through Service Connections.\n * @param tenantId - tenantId associated with the service connection\n * @param clientId - clientId associated with the service connection\n * @param serviceConnectionId - Unique ID for the service connection, as found in the querystring's resourceId key\n * @param systemAccessToken - The pipeline's System.AccessToken value.\n * @param options - The identity client options to use for authentication.\n */\n constructor(tenantId, clientId, serviceConnectionId, systemAccessToken, options = {}) {\n if (!clientId) {\n throw new errors_js_1.CredentialUnavailableError(`${credentialName}: is unavailable. clientId is a required parameter.`);\n }\n if (!tenantId) {\n throw new errors_js_1.CredentialUnavailableError(`${credentialName}: is unavailable. tenantId is a required parameter.`);\n }\n if (!serviceConnectionId) {\n throw new errors_js_1.CredentialUnavailableError(`${credentialName}: is unavailable. serviceConnectionId is a required parameter.`);\n }\n if (!systemAccessToken) {\n throw new errors_js_1.CredentialUnavailableError(`${credentialName}: is unavailable. systemAccessToken is a required parameter.`);\n }\n // Allow these headers to be logged for troubleshooting by AzurePipelines.\n options.loggingOptions = {\n ...options?.loggingOptions,\n additionalAllowedHeaderNames: [\n ...(options.loggingOptions?.additionalAllowedHeaderNames ?? []),\n \"x-vss-e2eid\",\n \"x-msedge-ref\",\n ],\n };\n this.identityClient = new identityClient_js_1.IdentityClient(options);\n (0, tenantIdUtils_js_1.checkTenantId)(logger, tenantId);\n logger.info(`Invoking AzurePipelinesCredential with tenant ID: ${tenantId}, client ID: ${clientId}, and service connection ID: ${serviceConnectionId}`);\n if (!process.env.SYSTEM_OIDCREQUESTURI) {\n throw new errors_js_1.CredentialUnavailableError(`${credentialName}: is unavailable. Ensure that you're running this task in an Azure Pipeline, so that following missing system variable(s) can be defined- \"SYSTEM_OIDCREQUESTURI\"`);\n }\n const oidcRequestUrl = `${process.env.SYSTEM_OIDCREQUESTURI}?api-version=${OIDC_API_VERSION}&serviceConnectionId=${serviceConnectionId}`;\n logger.info(`Invoking ClientAssertionCredential with tenant ID: ${tenantId}, client ID: ${clientId} and service connection ID: ${serviceConnectionId}`);\n this.clientAssertionCredential = new clientAssertionCredential_js_1.ClientAssertionCredential(tenantId, clientId, this.requestOidcToken.bind(this, oidcRequestUrl, systemAccessToken), options);\n }\n /**\n * Authenticates with Microsoft Entra ID and returns an access token if successful.\n * If authentication fails, a {@link CredentialUnavailableError} or {@link AuthenticationError} will be thrown with the details of the failure.\n *\n * @param scopes - The list of scopes for which the token will have access.\n * @param options - The options used to configure any requests this\n * TokenCredential implementation might make.\n */\n async getToken(scopes, options) {\n if (!this.clientAssertionCredential) {\n const errorMessage = `${credentialName}: is unavailable. To use Federation Identity in Azure Pipelines, the following parameters are required - \n tenantId,\n clientId,\n serviceConnectionId,\n systemAccessToken,\n \"SYSTEM_OIDCREQUESTURI\". \n See the troubleshooting guide for more information: https://aka.ms/azsdk/js/identity/azurepipelinescredential/troubleshoot`;\n logger.error(errorMessage);\n throw new errors_js_1.CredentialUnavailableError(errorMessage);\n }\n logger.info(\"Invoking getToken() of Client Assertion Credential\");\n return this.clientAssertionCredential.getToken(scopes, options);\n }\n /**\n *\n * @param oidcRequestUrl - oidc request url\n * @param systemAccessToken - system access token\n * @returns OIDC token from Azure Pipelines\n */\n async requestOidcToken(oidcRequestUrl, systemAccessToken) {\n logger.info(\"Requesting OIDC token from Azure Pipelines...\");\n logger.info(oidcRequestUrl);\n const request = (0, core_rest_pipeline_1.createPipelineRequest)({\n url: oidcRequestUrl,\n method: \"POST\",\n headers: (0, core_rest_pipeline_1.createHttpHeaders)({\n \"Content-Type\": \"application/json\",\n Authorization: `Bearer ${systemAccessToken}`,\n // Prevents the service from responding with a redirect HTTP status code (useful for automation).\n \"X-TFS-FedAuthRedirect\": \"Suppress\",\n }),\n });\n const response = await this.identityClient.sendRequest(request);\n return handleOidcResponse(response);\n }\n}\nexports.AzurePipelinesCredential = AzurePipelinesCredential;\nfunction handleOidcResponse(response) {\n // OIDC token is present in `bodyAsText` field\n const text = response.bodyAsText;\n if (!text) {\n logger.error(`${credentialName}: Authentication Failed. Received null token from OIDC request. Response status- ${response.status}. Complete response - ${JSON.stringify(response)}`);\n throw new errors_js_1.AuthenticationError(response.status, {\n error: `${credentialName}: Authentication Failed. Received null token from OIDC request.`,\n error_description: `${JSON.stringify(response)}. See the troubleshooting guide for more information: https://aka.ms/azsdk/js/identity/azurepipelinescredential/troubleshoot`,\n });\n }\n try {\n const result = JSON.parse(text);\n if (result?.oidcToken) {\n return result.oidcToken;\n }\n else {\n const errorMessage = `${credentialName}: Authentication Failed. oidcToken field not detected in the response.`;\n let errorDescription = ``;\n if (response.status !== 200) {\n errorDescription = `Response body = ${text}. Response Headers [\"x-vss-e2eid\"] = ${response.headers.get(\"x-vss-e2eid\")} and [\"x-msedge-ref\"] = ${response.headers.get(\"x-msedge-ref\")}. See the troubleshooting guide for more information: https://aka.ms/azsdk/js/identity/azurepipelinescredential/troubleshoot`;\n }\n logger.error(errorMessage);\n logger.error(errorDescription);\n throw new errors_js_1.AuthenticationError(response.status, {\n error: errorMessage,\n error_description: errorDescription,\n });\n }\n }\n catch (e) {\n const errorDetails = `${credentialName}: Authentication Failed. oidcToken field not detected in the response.`;\n logger.error(`Response from service = ${text}, Response Headers [\"x-vss-e2eid\"] = ${response.headers.get(\"x-vss-e2eid\")} \n and [\"x-msedge-ref\"] = ${response.headers.get(\"x-msedge-ref\")}, error message = ${e.message}`);\n logger.error(errorDetails);\n throw new errors_js_1.AuthenticationError(response.status, {\n error: errorDetails,\n error_description: `Response = ${text}. Response headers [\"x-vss-e2eid\"] = ${response.headers.get(\"x-vss-e2eid\")} and [\"x-msedge-ref\"] = ${response.headers.get(\"x-msedge-ref\")}. See the troubleshooting guide for more information: https://aka.ms/azsdk/js/identity/azurepipelinescredential/troubleshoot`,\n });\n }\n}\n//# sourceMappingURL=azurePipelinesCredential.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.AuthorizationCodeCredential = void 0;\nconst tenantIdUtils_js_1 = require(\"../util/tenantIdUtils.js\");\nconst tenantIdUtils_js_2 = require(\"../util/tenantIdUtils.js\");\nconst logging_js_1 = require(\"../util/logging.js\");\nconst scopeUtils_js_1 = require(\"../util/scopeUtils.js\");\nconst tracing_js_1 = require(\"../util/tracing.js\");\nconst msalClient_js_1 = require(\"../msal/nodeFlows/msalClient.js\");\nconst logger = (0, logging_js_1.credentialLogger)(\"AuthorizationCodeCredential\");\n/**\n * Enables authentication to Microsoft Entra ID using an authorization code\n * that was obtained through the authorization code flow, described in more detail\n * in the Microsoft Entra ID documentation:\n *\n * https://learn.microsoft.com/entra/identity-platform/v2-oauth2-auth-code-flow\n */\nclass AuthorizationCodeCredential {\n msalClient;\n disableAutomaticAuthentication;\n authorizationCode;\n redirectUri;\n tenantId;\n additionallyAllowedTenantIds;\n clientSecret;\n /**\n * @hidden\n * @internal\n */\n constructor(tenantId, clientId, clientSecretOrAuthorizationCode, authorizationCodeOrRedirectUri, redirectUriOrOptions, options) {\n (0, tenantIdUtils_js_2.checkTenantId)(logger, tenantId);\n this.clientSecret = clientSecretOrAuthorizationCode;\n if (typeof redirectUriOrOptions === \"string\") {\n // the clientId+clientSecret constructor\n this.authorizationCode = authorizationCodeOrRedirectUri;\n this.redirectUri = redirectUriOrOptions;\n // in this case, options are good as they come\n }\n else {\n // clientId only\n this.authorizationCode = clientSecretOrAuthorizationCode;\n this.redirectUri = authorizationCodeOrRedirectUri;\n this.clientSecret = undefined;\n options = redirectUriOrOptions;\n }\n // TODO: Validate tenant if provided\n this.tenantId = tenantId;\n this.additionallyAllowedTenantIds = (0, tenantIdUtils_js_1.resolveAdditionallyAllowedTenantIds)(options?.additionallyAllowedTenants);\n this.msalClient = (0, msalClient_js_1.createMsalClient)(clientId, tenantId, {\n ...options,\n logger,\n tokenCredentialOptions: options ?? {},\n });\n }\n /**\n * Authenticates with Microsoft Entra ID and returns an access token if successful.\n * If authentication fails, a {@link CredentialUnavailableError} will be thrown with the details of the failure.\n *\n * @param scopes - The list of scopes for which the token will have access.\n * @param options - The options used to configure any requests this\n * TokenCredential implementation might make.\n */\n async getToken(scopes, options = {}) {\n return tracing_js_1.tracingClient.withSpan(`${this.constructor.name}.getToken`, options, async (newOptions) => {\n const tenantId = (0, tenantIdUtils_js_1.processMultiTenantRequest)(this.tenantId, newOptions, this.additionallyAllowedTenantIds);\n newOptions.tenantId = tenantId;\n const arrayScopes = (0, scopeUtils_js_1.ensureScopes)(scopes);\n return this.msalClient.getTokenByAuthorizationCode(arrayScopes, this.redirectUri, this.authorizationCode, this.clientSecret, {\n ...newOptions,\n disableAutomaticAuthentication: this.disableAutomaticAuthentication,\n });\n });\n }\n}\nexports.AuthorizationCodeCredential = AuthorizationCodeCredential;\n//# sourceMappingURL=authorizationCodeCredential.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.OnBehalfOfCredential = void 0;\nconst msalClient_js_1 = require(\"../msal/nodeFlows/msalClient.js\");\nconst logging_js_1 = require(\"../util/logging.js\");\nconst tenantIdUtils_js_1 = require(\"../util/tenantIdUtils.js\");\nconst errors_js_1 = require(\"../errors.js\");\nconst node_crypto_1 = require(\"node:crypto\");\nconst scopeUtils_js_1 = require(\"../util/scopeUtils.js\");\nconst promises_1 = require(\"node:fs/promises\");\nconst tracing_js_1 = require(\"../util/tracing.js\");\nconst credentialName = \"OnBehalfOfCredential\";\nconst logger = (0, logging_js_1.credentialLogger)(credentialName);\n/**\n * Enables authentication to Microsoft Entra ID using the [On Behalf Of flow](https://learn.microsoft.com/entra/identity-platform/v2-oauth2-on-behalf-of-flow).\n */\nclass OnBehalfOfCredential {\n tenantId;\n additionallyAllowedTenantIds;\n msalClient;\n sendCertificateChain;\n certificatePath;\n clientSecret;\n userAssertionToken;\n clientAssertion;\n constructor(options) {\n const { clientSecret } = options;\n const { certificatePath, sendCertificateChain } = options;\n const { getAssertion } = options;\n const { tenantId, clientId, userAssertionToken, additionallyAllowedTenants: additionallyAllowedTenantIds, } = options;\n if (!tenantId) {\n throw new errors_js_1.CredentialUnavailableError(`${credentialName}: tenantId is a required parameter. To troubleshoot, visit https://aka.ms/azsdk/js/identity/serviceprincipalauthentication/troubleshoot.`);\n }\n if (!clientId) {\n throw new errors_js_1.CredentialUnavailableError(`${credentialName}: clientId is a required parameter. To troubleshoot, visit https://aka.ms/azsdk/js/identity/serviceprincipalauthentication/troubleshoot.`);\n }\n if (!clientSecret && !certificatePath && !getAssertion) {\n throw new errors_js_1.CredentialUnavailableError(`${credentialName}: You must provide one of clientSecret, certificatePath, or a getAssertion callback but none were provided. To troubleshoot, visit https://aka.ms/azsdk/js/identity/serviceprincipalauthentication/troubleshoot.`);\n }\n if (!userAssertionToken) {\n throw new errors_js_1.CredentialUnavailableError(`${credentialName}: userAssertionToken is a required parameter. To troubleshoot, visit https://aka.ms/azsdk/js/identity/serviceprincipalauthentication/troubleshoot.`);\n }\n this.certificatePath = certificatePath;\n this.clientSecret = clientSecret;\n this.userAssertionToken = userAssertionToken;\n this.sendCertificateChain = sendCertificateChain;\n this.clientAssertion = getAssertion;\n this.tenantId = tenantId;\n this.additionallyAllowedTenantIds = (0, tenantIdUtils_js_1.resolveAdditionallyAllowedTenantIds)(additionallyAllowedTenantIds);\n this.msalClient = (0, msalClient_js_1.createMsalClient)(clientId, this.tenantId, {\n ...options,\n logger,\n tokenCredentialOptions: options,\n });\n }\n /**\n * Authenticates with Microsoft Entra ID and returns an access token if successful.\n * If authentication fails, a {@link CredentialUnavailableError} will be thrown with the details of the failure.\n *\n * @param scopes - The list of scopes for which the token will have access.\n * @param options - The options used to configure the underlying network requests.\n */\n async getToken(scopes, options = {}) {\n return tracing_js_1.tracingClient.withSpan(`${credentialName}.getToken`, options, async (newOptions) => {\n newOptions.tenantId = (0, tenantIdUtils_js_1.processMultiTenantRequest)(this.tenantId, newOptions, this.additionallyAllowedTenantIds, logger);\n const arrayScopes = (0, scopeUtils_js_1.ensureScopes)(scopes);\n if (this.certificatePath) {\n const clientCertificate = await this.buildClientCertificate(this.certificatePath);\n return this.msalClient.getTokenOnBehalfOf(arrayScopes, this.userAssertionToken, clientCertificate, newOptions);\n }\n else if (this.clientSecret) {\n return this.msalClient.getTokenOnBehalfOf(arrayScopes, this.userAssertionToken, this.clientSecret, options);\n }\n else if (this.clientAssertion) {\n return this.msalClient.getTokenOnBehalfOf(arrayScopes, this.userAssertionToken, this.clientAssertion, options);\n }\n else {\n // this is an invalid scenario and is a bug, as the constructor should have thrown an error if neither clientSecret nor certificatePath nor clientAssertion were provided\n throw new Error(\"Expected either clientSecret or certificatePath or clientAssertion to be defined.\");\n }\n });\n }\n async buildClientCertificate(certificatePath) {\n try {\n const parts = await this.parseCertificate({ certificatePath }, this.sendCertificateChain);\n return {\n thumbprint: parts.thumbprint,\n thumbprintSha256: parts.thumbprintSha256,\n privateKey: parts.certificateContents,\n x5c: parts.x5c,\n };\n }\n catch (error) {\n logger.info((0, logging_js_1.formatError)(\"\", error));\n throw error;\n }\n }\n async parseCertificate(configuration, sendCertificateChain) {\n const certificatePath = configuration.certificatePath;\n const certificateContents = await (0, promises_1.readFile)(certificatePath, \"utf8\");\n const x5c = sendCertificateChain ? certificateContents : undefined;\n const certificatePattern = /(-+BEGIN CERTIFICATE-+)(\\n\\r?|\\r\\n?)([A-Za-z0-9+/\\n\\r]+=*)(\\n\\r?|\\r\\n?)(-+END CERTIFICATE-+)/g;\n const publicKeys = [];\n // Match all possible certificates, in the order they are in the file. These will form the chain that is used for x5c\n let match;\n do {\n match = certificatePattern.exec(certificateContents);\n if (match) {\n publicKeys.push(match[3]);\n }\n } while (match);\n if (publicKeys.length === 0) {\n throw new Error(\"The file at the specified path does not contain a PEM-encoded certificate.\");\n }\n const thumbprint = (0, node_crypto_1.createHash)(\"sha1\") // CodeQL [SM04514] Needed for backward compatibility reason\n .update(Buffer.from(publicKeys[0], \"base64\"))\n .digest(\"hex\")\n .toUpperCase();\n const thumbprintSha256 = (0, node_crypto_1.createHash)(\"sha256\")\n .update(Buffer.from(publicKeys[0], \"base64\"))\n .digest(\"hex\")\n .toUpperCase();\n return {\n certificateContents,\n thumbprintSha256,\n thumbprint,\n x5c,\n };\n }\n}\nexports.OnBehalfOfCredential = OnBehalfOfCredential;\n//# sourceMappingURL=onBehalfOfCredential.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getBearerTokenProvider = getBearerTokenProvider;\nconst core_rest_pipeline_1 = require(\"@azure/core-rest-pipeline\");\n/**\n * Returns a callback that provides a bearer token.\n * For example, the bearer token can be used to authenticate a request as follows:\n * ```ts snippet:token_provider_example\n * import { DefaultAzureCredential, getBearerTokenProvider } from \"@azure/identity\";\n * import { createPipelineRequest } from \"@azure/core-rest-pipeline\";\n *\n * const credential = new DefaultAzureCredential();\n * const scope = \"https://cognitiveservices.azure.com/.default\";\n * const getAccessToken = getBearerTokenProvider(credential, scope);\n * const token = await getAccessToken();\n *\n * // usage\n * const request = createPipelineRequest({ url: \"https://example.com\" });\n * request.headers.set(\"Authorization\", `Bearer ${token}`);\n * ```\n *\n * @param credential - The credential used to authenticate the request.\n * @param scopes - The scopes required for the bearer token.\n * @param options - Options to configure the token provider.\n * @returns a callback that provides a bearer token.\n */\nfunction getBearerTokenProvider(credential, scopes, options) {\n const { abortSignal, tracingOptions } = options || {};\n const pipeline = (0, core_rest_pipeline_1.createEmptyPipeline)();\n pipeline.addPolicy((0, core_rest_pipeline_1.bearerTokenAuthenticationPolicy)({ credential, scopes }));\n async function getRefreshedToken() {\n // Create a pipeline with just the bearer token policy\n // and run a dummy request through it to get the token\n const res = await pipeline.sendRequest({\n sendRequest: (request) => Promise.resolve({\n request,\n status: 200,\n headers: request.headers,\n }),\n }, (0, core_rest_pipeline_1.createPipelineRequest)({\n url: \"https://example.com\",\n abortSignal,\n tracingOptions,\n }));\n const accessToken = res.headers.get(\"authorization\")?.split(\" \")[1];\n if (!accessToken) {\n throw new Error(\"Failed to get access token\");\n }\n return accessToken;\n }\n return getRefreshedToken;\n}\n//# sourceMappingURL=tokenProvider.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getBearerTokenProvider = exports.AzureAuthorityHosts = exports.logger = exports.WorkloadIdentityCredential = exports.OnBehalfOfCredential = exports.VisualStudioCodeCredential = exports.UsernamePasswordCredential = exports.AzurePowerShellCredential = exports.AuthorizationCodeCredential = exports.AzurePipelinesCredential = exports.DeviceCodeCredential = exports.ManagedIdentityCredential = exports.InteractiveBrowserCredential = exports.AzureDeveloperCliCredential = exports.AzureCliCredential = exports.ClientAssertionCredential = exports.ClientCertificateCredential = exports.EnvironmentCredential = exports.DefaultAzureCredential = exports.ClientSecretCredential = exports.ChainedTokenCredential = exports.deserializeAuthenticationRecord = exports.serializeAuthenticationRecord = exports.AuthenticationRequiredError = exports.CredentialUnavailableErrorName = exports.CredentialUnavailableError = exports.AggregateAuthenticationErrorName = exports.AuthenticationErrorName = exports.AggregateAuthenticationError = exports.AuthenticationError = void 0;\nexports.getDefaultAzureCredential = getDefaultAzureCredential;\nconst tslib_1 = require(\"tslib\");\ntslib_1.__exportStar(require(\"./plugins/consumer.js\"), exports);\nconst defaultAzureCredential_js_1 = require(\"./credentials/defaultAzureCredential.js\");\nvar errors_js_1 = require(\"./errors.js\");\nObject.defineProperty(exports, \"AuthenticationError\", { enumerable: true, get: function () { return errors_js_1.AuthenticationError; } });\nObject.defineProperty(exports, \"AggregateAuthenticationError\", { enumerable: true, get: function () { return errors_js_1.AggregateAuthenticationError; } });\nObject.defineProperty(exports, \"AuthenticationErrorName\", { enumerable: true, get: function () { return errors_js_1.AuthenticationErrorName; } });\nObject.defineProperty(exports, \"AggregateAuthenticationErrorName\", { enumerable: true, get: function () { return errors_js_1.AggregateAuthenticationErrorName; } });\nObject.defineProperty(exports, \"CredentialUnavailableError\", { enumerable: true, get: function () { return errors_js_1.CredentialUnavailableError; } });\nObject.defineProperty(exports, \"CredentialUnavailableErrorName\", { enumerable: true, get: function () { return errors_js_1.CredentialUnavailableErrorName; } });\nObject.defineProperty(exports, \"AuthenticationRequiredError\", { enumerable: true, get: function () { return errors_js_1.AuthenticationRequiredError; } });\nvar utils_js_1 = require(\"./msal/utils.js\");\nObject.defineProperty(exports, \"serializeAuthenticationRecord\", { enumerable: true, get: function () { return utils_js_1.serializeAuthenticationRecord; } });\nObject.defineProperty(exports, \"deserializeAuthenticationRecord\", { enumerable: true, get: function () { return utils_js_1.deserializeAuthenticationRecord; } });\nvar chainedTokenCredential_js_1 = require(\"./credentials/chainedTokenCredential.js\");\nObject.defineProperty(exports, \"ChainedTokenCredential\", { enumerable: true, get: function () { return chainedTokenCredential_js_1.ChainedTokenCredential; } });\nvar clientSecretCredential_js_1 = require(\"./credentials/clientSecretCredential.js\");\nObject.defineProperty(exports, \"ClientSecretCredential\", { enumerable: true, get: function () { return clientSecretCredential_js_1.ClientSecretCredential; } });\nvar defaultAzureCredential_js_2 = require(\"./credentials/defaultAzureCredential.js\");\nObject.defineProperty(exports, \"DefaultAzureCredential\", { enumerable: true, get: function () { return defaultAzureCredential_js_2.DefaultAzureCredential; } });\nvar environmentCredential_js_1 = require(\"./credentials/environmentCredential.js\");\nObject.defineProperty(exports, \"EnvironmentCredential\", { enumerable: true, get: function () { return environmentCredential_js_1.EnvironmentCredential; } });\nvar clientCertificateCredential_js_1 = require(\"./credentials/clientCertificateCredential.js\");\nObject.defineProperty(exports, \"ClientCertificateCredential\", { enumerable: true, get: function () { return clientCertificateCredential_js_1.ClientCertificateCredential; } });\nvar clientAssertionCredential_js_1 = require(\"./credentials/clientAssertionCredential.js\");\nObject.defineProperty(exports, \"ClientAssertionCredential\", { enumerable: true, get: function () { return clientAssertionCredential_js_1.ClientAssertionCredential; } });\nvar azureCliCredential_js_1 = require(\"./credentials/azureCliCredential.js\");\nObject.defineProperty(exports, \"AzureCliCredential\", { enumerable: true, get: function () { return azureCliCredential_js_1.AzureCliCredential; } });\nvar azureDeveloperCliCredential_js_1 = require(\"./credentials/azureDeveloperCliCredential.js\");\nObject.defineProperty(exports, \"AzureDeveloperCliCredential\", { enumerable: true, get: function () { return azureDeveloperCliCredential_js_1.AzureDeveloperCliCredential; } });\nvar interactiveBrowserCredential_js_1 = require(\"./credentials/interactiveBrowserCredential.js\");\nObject.defineProperty(exports, \"InteractiveBrowserCredential\", { enumerable: true, get: function () { return interactiveBrowserCredential_js_1.InteractiveBrowserCredential; } });\nvar index_js_1 = require(\"./credentials/managedIdentityCredential/index.js\");\nObject.defineProperty(exports, \"ManagedIdentityCredential\", { enumerable: true, get: function () { return index_js_1.ManagedIdentityCredential; } });\nvar deviceCodeCredential_js_1 = require(\"./credentials/deviceCodeCredential.js\");\nObject.defineProperty(exports, \"DeviceCodeCredential\", { enumerable: true, get: function () { return deviceCodeCredential_js_1.DeviceCodeCredential; } });\nvar azurePipelinesCredential_js_1 = require(\"./credentials/azurePipelinesCredential.js\");\nObject.defineProperty(exports, \"AzurePipelinesCredential\", { enumerable: true, get: function () { return azurePipelinesCredential_js_1.AzurePipelinesCredential; } });\nvar authorizationCodeCredential_js_1 = require(\"./credentials/authorizationCodeCredential.js\");\nObject.defineProperty(exports, \"AuthorizationCodeCredential\", { enumerable: true, get: function () { return authorizationCodeCredential_js_1.AuthorizationCodeCredential; } });\nvar azurePowerShellCredential_js_1 = require(\"./credentials/azurePowerShellCredential.js\");\nObject.defineProperty(exports, \"AzurePowerShellCredential\", { enumerable: true, get: function () { return azurePowerShellCredential_js_1.AzurePowerShellCredential; } });\nvar usernamePasswordCredential_js_1 = require(\"./credentials/usernamePasswordCredential.js\");\nObject.defineProperty(exports, \"UsernamePasswordCredential\", { enumerable: true, get: function () { return usernamePasswordCredential_js_1.UsernamePasswordCredential; } });\nvar visualStudioCodeCredential_js_1 = require(\"./credentials/visualStudioCodeCredential.js\");\nObject.defineProperty(exports, \"VisualStudioCodeCredential\", { enumerable: true, get: function () { return visualStudioCodeCredential_js_1.VisualStudioCodeCredential; } });\nvar onBehalfOfCredential_js_1 = require(\"./credentials/onBehalfOfCredential.js\");\nObject.defineProperty(exports, \"OnBehalfOfCredential\", { enumerable: true, get: function () { return onBehalfOfCredential_js_1.OnBehalfOfCredential; } });\nvar workloadIdentityCredential_js_1 = require(\"./credentials/workloadIdentityCredential.js\");\nObject.defineProperty(exports, \"WorkloadIdentityCredential\", { enumerable: true, get: function () { return workloadIdentityCredential_js_1.WorkloadIdentityCredential; } });\nvar logging_js_1 = require(\"./util/logging.js\");\nObject.defineProperty(exports, \"logger\", { enumerable: true, get: function () { return logging_js_1.logger; } });\nvar constants_js_1 = require(\"./constants.js\");\nObject.defineProperty(exports, \"AzureAuthorityHosts\", { enumerable: true, get: function () { return constants_js_1.AzureAuthorityHosts; } });\n/**\n * Returns a new instance of the {@link DefaultAzureCredential}.\n */\nfunction getDefaultAzureCredential() {\n return new defaultAzureCredential_js_1.DefaultAzureCredential();\n}\nvar tokenProvider_js_1 = require(\"./tokenProvider.js\");\nObject.defineProperty(exports, \"getBearerTokenProvider\", { enumerable: true, get: function () { return tokenProvider_js_1.getBearerTokenProvider; } });\n//# sourceMappingURL=index.js.map","var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=Object.getOwnPropertyNames,i=Object.getPrototypeOf,a=Object.prototype.hasOwnProperty,o=(e,i,o,s)=>{if(i&&typeof i==`object`||typeof i==`function`)for(var c=r(i),l=0,u=c.length,d;li[e]).bind(null,d),enumerable:!(s=n(i,d))||s.enumerable});return e},s=(n,r,a)=>(a=n==null?{}:e(i(n)),o(r||!n||!n.__esModule?t(a,`default`,{value:n,enumerable:!0}):a,n));let c=require(`yaml`);c=s(c);let l=require(`fs/promises`);l=s(l);let u=require(`path`);u=s(u);let d=require(`os`);d=s(d);let f=require(`bicep-node`),ee=require(`@azure/arm-resources`),te=require(`@azure/arm-resourcesdeploymentstacks`),p=require(`@azure/identity`),ne=require(`node:util`);async function re(e){let t=await l.mkdtemp(u.join(d.tmpdir(),`bicep-`));return await f.Bicep.install(t,e)}async function ie(e,t,n,r){let i=await ce(await re(r),t=>t.compileParams({path:e,parameterOverrides:n??{}}),t);if(ue(i.diagnostics,t),!i.success)throw`Failed to compile Bicep parameters file: ${e}`;return{parameters:i.parameters,template:i.template,templateSpecId:i.templateSpecId}}async function ae(e,t,n){let r=await ce(await re(n),t=>t.compile({path:e}),t);if(ue(r.diagnostics,t),!r.success)throw`Failed to compile Bicep file: ${e}`;return{template:r.contents}}async function oe(e){let{parametersFile:t,parameters:n}=e,r=t?JSON.parse(await l.readFile(t,`utf8`)):{parameters:{}};for(let[e,t]of Object.entries(n??{}))r.parameters[e]={value:t};return JSON.stringify(r)}async function se(e,t){let{parametersFile:n,templateFile:r}=e;if(n&&u.extname(n).toLowerCase()===`.bicepparam`)return m(await ie(n,t,e.parameters,e.bicepVersion));if(n&&u.extname(n).toLowerCase()!==`.json`)throw Error(`Unsupported parameters file type: ${n}`);let i=await oe(e);if(r&&u.extname(r).toLowerCase()===`.bicep`){let{template:n}=await ae(r,t,e.bicepVersion);return m({template:n,parameters:i})}if(r&&u.extname(r).toLowerCase()!==`.json`)throw Error(`Unsupported template file type: ${r}`);if(!r)throw Error(`Template file is required`);return m({template:await l.readFile(r,`utf8`),parameters:i})}function m(e){let{parameters:t,template:n,templateSpecId:r}=e;return{parametersContents:t?JSON.parse(t):void 0,templateContents:n?JSON.parse(n):void 0,templateSpecId:r}}async function ce(e,t,n){let r=await f.Bicep.initialize(e);try{let i=await r.version();return n.logInfo(`Installed Bicep version ${i} to ${e}`),await t(r)}finally{r.dispose()}}function le(e){return u.resolve(e)}function ue(e,t){for(let n of e){let e=`${n.source}(${n.range.start.line+1},${n.range.start.char+1}) : ${n.level} ${n.code}: ${n.message}`;n.level===`Error`&&t.logError(e),n.level===`Warning`&&t.logWarning(e),n.level===`Info`&&t.logInfo(e)}}function h(e,t){return C(e,t,void 0,!0)}function g(e,t){return C(e,t,void 0,!1)}function _(e,t,n){return C(e,n,t,!0)}function v(e,t,n){return C(e,n,t,!1)}function y(e,t){let n=g(e,t);if(n)return le(n)}function b(e,t){let n=g(e,t);if(!n)return!1;if(n.toLowerCase()===`true`)return!0;if(n.toLowerCase()===`false`)return!1;throw Error(`Action input '${e}' must be a boolean value`)}function x(e,t){let n=g(e,t);return n?he(n):void 0}function de(e,t,n){let r=x(e,n);if(!r)return;let i=t;for(let n of r)if(i.indexOf(n)===-1)throw Error(`Action input '${e}' must be one of the following values: '${t.join(`', '`)}'`);return r}function S(e,t){let n=g(e,t);if(!n)return;let r=pe(n)??me(n);if(typeof r!=`object`)throw Error(`Action input '${e}' must be a valid JSON or YAML object`);return r}function fe(e,t){let n=S(e,t);if(n)return Object.keys(n).forEach(t=>{if(typeof n[t]!=`string`)throw Error(`Action input '${e}' must be a valid JSON or YAML object containing only string values`)}),n}function pe(e){try{return JSON.parse(e)}catch{return}}function me(e){try{return c.parse(e)}catch{return}}function he(e){return e.split(`,`).map(e=>e.trim()).filter(e=>e.length>0)}function C(e,t,n,r=!0){let i=t.getInput(e)?.trim();if(!i){if(r)throw Error(`Action input '${e}' is required but not provided`);return}if(n&&!n.includes(i))throw Error(`Action input '${e}' must be one of the following values: '${n.join(`', '`)}'`);return i}function ge(e,t){let n=_(t.type,[`deployment`,`deploymentStack`],e),r=g(t.name,e),i=g(t.location,e),a=y(t.templateFile,e),o=y(t.paramtersFile,e),s=S(t.parameters,e),c=g(t.bicepVersion,e),l=g(t.description,e),u=fe(t.tags,e),d=x(t.maskedOutputs,e),f=v(t.environment,[`azureCloud`,`azureChinaCloud`,`azureGermanCloud`,`azureUSGovernment`],e)??`azureCloud`;switch(n){case`deployment`:return{type:n,name:r,location:i,templateFile:a,parametersFile:o,parameters:s,bicepVersion:c,tags:u,maskedOutputs:d,environment:f,operation:_(t.operation,[`create`,`validate`,`whatIf`],e),scope:_e(e,t),whatIf:{excludeChangeTypes:de(t.whatIfExcludeChangeTypes,[`create`,`delete`,`modify`,`deploy`,`noChange`,`ignore`,`unsupported`],e)},validationLevel:v(t.validationLevel,[`provider`,`template`,`providerNoRbac`],e)};case`deploymentStack`:return{type:n,name:r,location:i,templateFile:a,parametersFile:o,parameters:s,bicepVersion:c,description:l,tags:u,maskedOutputs:d,environment:f,operation:_(t.operation,[`create`,`validate`,`delete`],e),scope:ve(e,t),actionOnUnManage:{resources:_(t.actionOnUnmanageResources,[`delete`,`detach`],e),resourceGroups:v(t.actionOnUnmanageResourceGroups,[`delete`,`detach`],e),managementGroups:v(t.actionOnUnmanageManagementGroups,[`delete`,`detach`],e)},bypassStackOutOfSyncError:b(t.bypasStackOutOfSyncError,e),denySettings:{mode:_(t.denySettingsMode,[`denyDelete`,`denyWriteAndDelete`,`none`],e),excludedActions:x(t.denySettingsExcludedActions,e),excludedPrincipals:x(t.denySettingsExcludedPrincipals,e),applyToChildScopes:b(t.denySettingsApplyToChildScopes,e)}}}}function _e(e,t){let n=_(t.scope,[`tenant`,`managementGroup`,`subscription`,`resourceGroup`],e),r=g(t.tenantId,e);switch(n){case`tenant`:return{type:n,tenantId:r};case`managementGroup`:return{type:n,tenantId:r,managementGroup:h(t.managementGroupId,e)};case`subscription`:return{type:n,tenantId:r,subscriptionId:h(t.subscriptionId,e)};case`resourceGroup`:return{type:n,tenantId:r,subscriptionId:h(t.subscriptionId,e),resourceGroup:h(t.resourceGroupName,e)}}}function ve(e,t){let n=_(t.scope,[`managementGroup`,`subscription`,`resourceGroup`],e),r=g(t.tenantId,e);switch(n){case`managementGroup`:return{type:n,tenantId:r,managementGroup:h(t.managementGroupId,e)};case`subscription`:return{type:n,tenantId:r,subscriptionId:h(t.subscriptionId,e)};case`resourceGroup`:return{type:n,tenantId:r,subscriptionId:h(t.subscriptionId,e),resourceGroup:h(t.resourceGroupName,e)}}}const ye=`gh-azure-bicep-deploy`,be=`00000000-0000-0000-0000-000000000000`,xe={azureCloud:`https://management.azure.com`,azureChinaCloud:`https://management.chinacloudapi.cn`,azureGermanCloud:`https://management.microsoftazure.de`,azureUSGovernment:`https://management.usgovcloudapi.net`};function Se(e,t,n,r){return new ee.ResourceManagementClient(Te(r),n??be,{userAgentOptions:{userAgentPrefix:ye},additionalPolicies:[we(t)],apiVersion:`2024-03-01`,endpoint:xe[e.environment]})}function Ce(e,t,n,r){return new te.DeploymentStacksClient(Te(r),n??be,{userAgentOptions:{userAgentPrefix:ye},additionalPolicies:[we(t)],endpoint:xe[e.environment]})}function we(e){return{position:`perCall`,policy:{name:`debugLoggingPolicy`,async sendRequest(t,n){if(e.isDebugEnabled()&&(e.debug(`Request: ${t.method} ${t.url}`),t.body)){let n=JSON.parse(t.body.toString());e.debug(`Body: ${JSON.stringify(n,null,2)}`)}let r=await n(t);if(e.isDebugEnabled()){if(e.debug(`Response: ${r.status}`),r.bodyAsText){let t=JSON.parse(r.bodyAsText);e.debug(`Body: ${JSON.stringify(t,null,2)}`)}let t=r.headers.get(`x-ms-correlation-request-id`);e.debug(`CorrelationId: ${t}`);let n=r.headers.get(`x-ms-request-id`);e.debug(`ActivityId: ${n}`)}return r}}}}function Te(e){return new p.ChainedTokenCredential(new p.EnvironmentCredential,new p.AzureCliCredential({tenantId:e}),new p.AzurePowerShellCredential({tenantId:e}))}function Ee(e){return typeof e==`object`&&!!e&&!Array.isArray(e)&&!(e instanceof RegExp)&&!(e instanceof Date)}function De(e){if(Ee(e)){let t=typeof e.name==`string`,n=typeof e.message==`string`;return t&&n}return!1}const Oe=ne.inspect.custom,w=`REDACTED`,ke=`x-ms-client-request-id.x-ms-return-client-request-id.x-ms-useragent.x-ms-correlation-request-id.x-ms-request-id.client-request-id.ms-cv.return-client-request-id.traceparent.Access-Control-Allow-Credentials.Access-Control-Allow-Headers.Access-Control-Allow-Methods.Access-Control-Allow-Origin.Access-Control-Expose-Headers.Access-Control-Max-Age.Access-Control-Request-Headers.Access-Control-Request-Method.Origin.Accept.Accept-Encoding.Cache-Control.Connection.Content-Length.Content-Type.Date.ETag.Expires.If-Match.If-Modified-Since.If-None-Match.If-Unmodified-Since.Last-Modified.Pragma.Request-Id.Retry-After.Server.Transfer-Encoding.User-Agent.WWW-Authenticate`.split(`.`),Ae=[`api-version`];var je=class{constructor({additionalAllowedHeaderNames:e=[],additionalAllowedQueryParameters:t=[]}={}){e=ke.concat(e),t=Ae.concat(t),this.allowedHeaderNames=new Set(e.map(e=>e.toLowerCase())),this.allowedQueryParameters=new Set(t.map(e=>e.toLowerCase()))}sanitize(e){let t=new Set;return JSON.stringify(e,(e,n)=>{if(n instanceof Error)return{...n,name:n.name,message:n.message};if(e===`headers`)return this.sanitizeHeaders(n);if(e===`url`)return this.sanitizeUrl(n);if(e===`query`)return this.sanitizeQuery(n);if(e!==`body`&&e!==`response`&&e!==`operationSpec`){if(Array.isArray(n)||Ee(n)){if(t.has(n))return`[Circular]`;t.add(n)}return n}},2)}sanitizeUrl(e){if(typeof e!=`string`||e===null||e===``)return e;let t=new URL(e);if(!t.search)return e;for(let[e]of t.searchParams)this.allowedQueryParameters.has(e.toLowerCase())||t.searchParams.set(e,w);return t.toString()}sanitizeHeaders(e){let t={};for(let n of Object.keys(e))this.allowedHeaderNames.has(n.toLowerCase())?t[n]=e[n]:t[n]=w;return t}sanitizeQuery(e){if(typeof e!=`object`||!e)return e;let t={};for(let n of Object.keys(e))this.allowedQueryParameters.has(n.toLowerCase())?t[n]=e[n]:t[n]=w;return t}};const Me=new je;var T=class e extends Error{constructor(t,n={}){super(t),this.name=`RestError`,this.code=n.code,this.statusCode=n.statusCode,Object.defineProperty(this,`request`,{value:n.request,enumerable:!1}),Object.defineProperty(this,`response`,{value:n.response,enumerable:!1});let r=this.request?.agent?{maxFreeSockets:this.request.agent.maxFreeSockets,maxSockets:this.request.agent.maxSockets}:void 0;Object.defineProperty(this,Oe,{value:()=>`RestError: ${this.message} \\n ${Me.sanitize({...this,request:{...this.request,agent:r},response:this.response})}`,enumerable:!1}),Object.setPrototypeOf(this,e.prototype)}};T.REQUEST_SEND_ERROR=`REQUEST_SEND_ERROR`,T.PARSE_ERROR=`PARSE_ERROR`;function Ne(e){return e instanceof T?!0:De(e)&&e.name===`RestError`}function Pe(e){return Ne(e)}const E=`azure-bicep-deploy`;function D(e,t,n){let{tenantId:r}=t;return Se(e,n,`subscriptionId`in t?t.subscriptionId:void 0,r)}function O(e,t,n){let{tenantId:r}=t;return Ce(e,n,`subscriptionId`in t?t.subscriptionId:void 0,r)}function k(){return{onResponse:(e,t)=>{if(t&&t.error&&t.error.code&&t.error.message)throw new A(t,e)}}}var A=class{constructor(e,t){this.details=e,this.response=t}};function j(e){if(!e.location)throw Error(`Location is required`);return e.location}function M(e,t){if(e.length!==0){t.logInfo(`Diagnostics returned by the API`);for(let n of e){let e=`[${n.level}] ${n.code}: ${n.message}`;switch(n.level.toLowerCase()){case`error`:t.logError(e);break;case`warning`:t.logWarning(e);break;default:t.logInfo(e);break}}}}function Fe(e,t){let n=Ie(t);if(n&&n!==e.scope.type)throw Error(`The target scope ${n} does not match the deployment scope ${e.scope.type}.`)}function Ie(e){let t=e.templateContents??{},n=t.metadata?._generator?.name,r=t.$schema;if(!n)return;let i=/https:\\/\\/schema\\.management\\.azure\\.com\\/schemas\\/[0-9a-zA-Z-]+\\/([a-zA-Z]+)Template\\.json#?/.exec(r);switch(i?i[1].toLowerCase():null){case`tenantdeployment`:return`tenant`;case`managementgroupdeployment`:return`managementGroup`;case`subscriptiondeployment`:return`subscription`;case`deployment`:return`resourceGroup`;default:throw Error(`Failed to determine deployment scope from Bicep file.`)}}async function N(e,t,n){try{return await e()}catch(e){if(Pe(e)){let r=e.response?.headers.get(`x-ms-correlation-request-id`);n.logError(`Request failed. CorrelationId: ${r}`);let{error:i}=e.details;if(i){t(i);return}}if(e instanceof A){let r=e.response?.headers.get(`x-ms-correlation-request-id`);n.logError(`Request failed. CorrelationId: ${r}`);let{error:i}=e.details;if(i){t(i);return}}throw e}}async function Le(e,t,n){let r=e.name??E,i=e.scope,a=D(e,i,n),o=P(e,t);switch(i.type){case`resourceGroup`:return await a.deployments.beginCreateOrUpdateAndWait(i.resourceGroup,r,o,k());case`subscription`:return await a.deployments.beginCreateOrUpdateAtSubscriptionScopeAndWait(r,{...o,location:j(e)},k());case`managementGroup`:return await a.deployments.beginCreateOrUpdateAtManagementGroupScopeAndWait(i.managementGroup,r,{...o,location:j(e)},k());case`tenant`:return await a.deployments.beginCreateOrUpdateAtTenantScopeAndWait(r,{...o,location:j(e)},k())}}async function Re(e,t,n){let r=e.name??E,i=e.scope,a=D(e,i,n),o=P(e,t);switch(i.type){case`resourceGroup`:return await a.deployments.beginValidateAndWait(i.resourceGroup,r,o);case`subscription`:return await a.deployments.beginValidateAtSubscriptionScopeAndWait(r,{...o,location:j(e)});case`managementGroup`:return await a.deployments.beginValidateAtManagementGroupScopeAndWait(i.managementGroup,r,{...o,location:j(e)});case`tenant`:await a.deployments.beginValidateAtTenantScopeAndWait(r,{...o,location:j(e)})}}async function ze(e,t,n){let r=e.name??E,i=e.scope,a=D(e,i,n),o=P(e,t);switch(i.type){case`resourceGroup`:return await a.deployments.beginWhatIfAndWait(i.resourceGroup,r,o);case`subscription`:return await a.deployments.beginWhatIfAtSubscriptionScopeAndWait(r,{...o,location:j(e)});case`managementGroup`:return await a.deployments.beginWhatIfAtManagementGroupScopeAndWait(i.managementGroup,r,{...o,location:j(e)});case`tenant`:return await a.deployments.beginWhatIfAtTenantScopeAndWait(r,{...o,location:j(e)})}}function P(e,t){let{templateContents:n,templateSpecId:r,parametersContents:i}=t;return{location:e.location,properties:{mode:`Incremental`,template:n,templateLink:r?{id:r}:void 0,parameters:i.parameters,expressionEvaluationOptions:{scope:`inner`},validationLevel:e.validationLevel},tags:e.tags}}async function Be(e,t,n){let r=e.name??E,i=e.scope,a=O(e,i,n),o=Ue(e,t);switch(i.type){case`resourceGroup`:return await a.deploymentStacks.beginCreateOrUpdateAtResourceGroupAndWait(i.resourceGroup,r,o,k());case`subscription`:return await a.deploymentStacks.beginCreateOrUpdateAtSubscriptionAndWait(r,{...o,location:j(e)},k());case`managementGroup`:return await a.deploymentStacks.beginCreateOrUpdateAtManagementGroupAndWait(i.managementGroup,r,{...o,location:j(e)},k())}}async function Ve(e,t,n){let r=e.name??E,i=e.scope,a=O(e,i,n),o=Ue(e,t);switch(i.type){case`resourceGroup`:return await a.deploymentStacks.beginValidateStackAtResourceGroupAndWait(i.resourceGroup,r,o);case`subscription`:return await a.deploymentStacks.beginValidateStackAtSubscriptionAndWait(r,{...o,location:j(e)});case`managementGroup`:return await a.deploymentStacks.beginValidateStackAtManagementGroupAndWait(i.managementGroup,r,{...o,location:j(e)})}}async function He(e,t){let n=e.name??E,r=e.scope,i=O(e,r,t),a=We(e);switch(r.type){case`resourceGroup`:return await i.deploymentStacks.beginDeleteAtResourceGroupAndWait(r.resourceGroup,n,a);case`subscription`:return await i.deploymentStacks.beginDeleteAtSubscriptionAndWait(n,a);case`managementGroup`:return await i.deploymentStacks.beginDeleteAtManagementGroupAndWait(r.managementGroup,n,a)}}function Ue(e,t){let{templateContents:n,templateSpecId:r,parametersContents:i}=t;return{properties:{template:n,templateLink:r?{id:r}:void 0,parameters:i.parameters,description:e.description,actionOnUnmanage:e.actionOnUnManage,denySettings:e.denySettings,bypassStackOutOfSyncError:e.bypassStackOutOfSyncError},tags:e.tags}}function We(e){return{unmanageActionResources:e.actionOnUnManage.resources,unmanageActionResourceGroups:e.actionOnUnManage.resourceGroups,unmanageActionManagementGroups:e.actionOnUnManage.managementGroups,bypassStackOutOfSyncError:e.bypassStackOutOfSyncError}}let F=function(e){return e.Reset=`\\x1B[0m`,e.Red=`\\x1B[31m`,e.Green=`\\x1B[32m`,e.Yellow=`\\x1B[33m`,e.Blue=`\\x1B[34m`,e.Magenta=`\\x1B[35m`,e.Cyan=`\\x1B[36m`,e.White=`\\x1B[37m`,e}({});const Ge={\"\\x1B[0m\":`Reset`,\"\\x1B[31m\":`Red`,\"\\x1B[32m\":`Green`,\"\\x1B[33m\":`Yellow`,\"\\x1B[34m\":`Blue`,\"\\x1B[35m\":`Magenta`,\"\\x1B[36m\":`Cyan`,\"\\x1B[37m\":`White`};function Ke(e,t){return e.split(`\n`).map(e=>`${t}${e}${F.Reset}`).join(`\n`)}function qe(e){for(let t in Ge)e=e.replaceAll(t,``);return e}function I(e,t){switch(e){case`off`:return``;case`ansii`:return t;case`debug`:return`<${Ge[t].toUpperCase()}>`}return t}var L=class{constructor(e){this.colorMode=e,this.colorStack=[],this.buffer=``}append(e,t){return t&&this.pushColor(t),this.buffer+=e,t&&this.popColor(),this}appendLine(e=``){return this.append(e+`\n`)}withColorScope(e,t){this.pushColor(e),t(),this.popColor()}pushColor(e){this.colorStack.push(e),this.buffer+=I(this.colorMode,e)}popColor(){this.colorStack.pop();let e=this.colorStack[this.colorStack.length-1]??F.Reset;this.buffer+=I(this.colorMode,e)}build(){return this.buffer}},R=function(e){return e.WhiteSpace=` `,e.Quote=`\"`,e.Colon=`:`,e.LeftSquareBracket=`[`,e.RightSquareBracket=`]`,e.Dot=`.`,e.Equal=`=`,e.Asterisk=`*`,e.Plus=`+`,e.Minus=`-`,e.Tilde=`~`,e.ExclamationPoint=`!`,e.Cross=`x`,e}(R||{});const Je={Create:F.Green,Delete:F.Red,Modify:F.Magenta,Deploy:F.Blue,NoChange:F.Reset,Ignore:F.White,Unsupported:F.White},z={Create:F.Green,Delete:F.Red,Modify:F.Magenta,Array:F.Magenta,NoEffect:F.White},Ye={Create:R.Plus,Delete:R.Minus,Modify:R.Tilde,Deploy:R.ExclamationPoint,NoChange:R.Equal,Ignore:R.Asterisk,Unsupported:R.Cross},Xe={Create:R.Plus,Delete:R.Minus,Modify:R.Tilde,Array:R.Tilde,NoEffect:R.Cross},B={Delete:0,Create:1,Deploy:2,Modify:3,NoChange:4,Unsupported:5,Ignore:6},Ze={Delete:0,Create:1,Modify:2,Array:2,NoEffect:3},Qe={Array:`Modify`,Create:`Create`,Delete:`Delete`,Modify:`Modify`,NoEffect:`NoChange`};function $e(e,t){let n=new L(t);return W(n,e),n.build()}function et(e,t){let n=new L(t);return tt(n),nt(n,e.changes??[]),at(n,e.changes??[]),rt(n,e.changes??[]),n.build()}function tt(e){e.appendLine(`Note: The result may contain false positive predictions (noise).\nYou can help us improve the accuracy of the result by opening an issue here: https://aka.ms/WhatIfIssues`),e.appendLine()}function nt(e,t){if(!t.length)return;let n=new Set;function r(e){if(e.length)for(let t of e){let e=t.propertyChangeType;n.add(Qe[e]),r(t.children??[])}}for(let e of t)n.add(e.changeType),r(e.delta??[]);let i=Array.from(n).sort((e,t)=>B[e]-B[t]);e.append(`Resource and property changes are indicated with `),e.appendLine(i.length===1?`this symbol:`:`these symbols:`);for(let t of i){let n=Ye[t],r=Je[t];q(e),e.append(n,r).append(R.WhiteSpace),e.appendLine(t.charAt(0).toUpperCase()+t.slice(1))}}function rt(e,t){if(e.appendLine().append(`Resource changes: `),!t.length){e.append(`no change.`);return}let n=Q(At(t.sort((e,t)=>B[e.changeType]-B[t.changeType]),e=>e.changeType)).map(([e,t])=>({key:e,count:t.length})).filter(e=>e.count>0).map(e=>it(e.key,e.count));e.append(n.join(`, `)).append(`.`)}function it(e,t){switch(e){case`Create`:return`${t} to create`;case`Delete`:return`${t} to delete`;case`Deploy`:return`${t} to deploy`;case`Modify`:return`${t} to modify`;case`Ignore`:return`${t} to ignore`;case`NoChange`:return`${t} no change`;case`Unsupported`:return`${t} unsupported`;default:throw Error(`Invalid ChangeType: ${e}`)}}function at(e,t){if(!t.length)return;let n=new Set(t.map(U)).size,r=At(t.sort((e,t)=>U(e).localeCompare(U(t))),U);e.appendLine(),e.appendLine(`The deployment will update the following ${n===1?`scope:`:`scopes:`}`);for(let[,t]of Q(r))ot(e,bt(t[0]),t)}function ot(e,t,n){e.appendLine().appendLine(`Scope: ${t}`);let r=n.sort((e,t)=>B[e.changeType]-B[t.changeType]),i=At(r,e=>e.changeType);for(let[t,n]of Q(i))e.withColorScope(Je[t],()=>{for(let t of n)st(e,t,t===r[r.length-1])})}function st(e,t,n){let r=t.changeType,i=xt(t),a=yt(t);if(e.appendLine(),ct(e,r,i,a),r===`Create`&&t.after)W(e,t.after,void 0,void 0,2);else if(r===`Delete`&&t.before)W(e,t.before,void 0,void 0,2);else if(t.delta){let n=t.delta;e.withColorScope(F.Reset,()=>{e.appendLine(),V(e,Z(n))})}else n&&e.appendLine()}function ct(e,t,n,r){K(e,n,0,1,e=>lt(e,t),e=>ut(e,r))}function lt(e,t){let n=Ye[t];e.append(n).append(R.WhiteSpace)}function ut(e,t){t&&e.withColorScope(F.Reset,()=>{e.append(R.WhiteSpace),e.append(R.LeftSquareBracket),e.append(t),e.append(R.RightSquareBracket)})}function V(e,t,n=2){let r=St(t);for(let i of t)dt(e,i,r,n),e.appendLine()}function dt(e,t,n,r){let i=t.propertyChangeType,a=t.before,o=t.after,s=t.children||[];switch(i){case`Create`:H(e,t,t.after,n,r),mt(e,o,r+1);break;case`Delete`:H(e,t,t.before,n,r),ht(e,a,r+1);break;case`Modify`:H(e,t,t.before,n,r),_t(e,a,o,s,r+1);break;case`Array`:H(e,t,t.children,n,r),vt(e,t,s,r+1);break;case`NoEffect`:H(e,t,t.after,n,r),pt(e,o,r+1);break;default:throw Error(`Unknown property change type: ${i}.`)}}function H(e,t,n,r,i){if(!t.path)return;let a=t.path,o=t.propertyChangeType,s=r-a.length+1;Y(n)?s=1:(X(n)||o===`Modify`&&t.children)&&(s=0),K(e,a,s,i,e=>ft(e,o),Dt)}function ft(e,t){let n=Xe[t],r=z[t];e.append(n,r).append(R.WhiteSpace)}function pt(e,t,n){e.withColorScope(z.NoEffect,()=>{W(e,t,void 0,void 0,n)})}function mt(e,t,n){e.withColorScope(z.Create,()=>{W(e,t,void 0,void 0,n)})}function ht(e,t,n){e.withColorScope(z.Delete,()=>{W(e,t,void 0,void 0,n)})}function gt(e){if(typeof e!=`object`||!e||Object.keys(e).length===0)return e;let t=``,n=e,r=Object.keys(n);for(let i=0;i0?(e.appendLine().appendLine(),V(e,Z(r),i)):(ht(e,t,i),X(t)?(e.appendLine(),q(e,i)):e.append(R.WhiteSpace),e.append(`=>`),X(n)||e.append(R.WhiteSpace),mt(e,n,i),!J(t)&&J(n)&&e.appendLine())}function vt(e,t,n,r){if(t.path||(--r,q(e,r)),!n||n.length===0){e.appendLine(`[]`);return}e.append(R.LeftSquareBracket).appendLine(),V(e,Z(n),r),q(e,r),e.append(R.RightSquareBracket)}function yt(e){if(e.before)return e.before.apiVersion;if(e.after)return e.after.apiVersion}function bt(e){if(!e.resourceId)throw Error(`Extensible resource what-if is not currently supported by this Action. Please raise an issue: https://github.com/Azure/bicep-deploy/issues.`);let[t]=jt(e.resourceId);return t}function U(e){return bt(e).toUpperCase()}function xt(e){if(!e.resourceId)throw Error(`Extensible resource what-if is not currently supported by this Action. Please raise an issue: https://github.com/Azure/bicep-deploy/issues.`);let[,t]=jt(e.resourceId);return t}function St(e){if(!e||e.length===0)return 0;let t=e.filter(Ct).map(e=>e.path.length);return Math.max(...t,0)}function Ct(e){let t=e.propertyChangeType;return t===`Create`?J(e.after):t===`Delete`||t===`Modify`?J(e.before):!e.children}function W(e,t,n=``,r=0,i=0){if(t=gt(t),J(t)){let a=r-n.length+1;G(e,n,a>0?a:0,i),wt(e,t)}else if(Y(t))G(e,n,1,i),Tt(e,t,i);else if(X(t))Et(e,t,n,r,i);else throw Error(`Invalid JSON value: ${t}`)}function wt(e,t){t===null?e.append(`null`):typeof t==`boolean`?e.append(String(t).toLowerCase()):typeof t==`string`?e.append(R.Quote).append(t).append(R.Quote):Array.isArray(t)&&t.length===0?e.append(`[]`):typeof t==`object`?e.append(`{}`):e.append(String(t))}function Tt(e,t,n){e.append(R.LeftSquareBracket,F.Reset).appendLine();let r=Ot(t);t.forEach((t,i)=>{let a=String(i);X(t)?(G(e,a,0,n+1),Et(e,t,void 0,void 0,n+1)):W(e,t,a,r,n+1),e.appendLine()}),q(e,n),e.append(R.RightSquareBracket,F.Reset)}function Et(e,t,n=``,r=0,i=0){let a=!n;n||(e.appendLine().appendLine(),r=kt(t),i+=1);for(let[o,s]of Q(t))W(e,s,a?o:`${n}${R.Dot}${o}`,r,i),X(s)||e.appendLine()}function G(e,t,n,r){K(e,t,n,r,void 0,Dt)}function K(e,t,n,r,i,a){t&&(q(e,r),i&&i(e),e.append(t),a&&a(e),e.append(` `.repeat(n)))}function Dt(e){e.append(R.Colon,F.Reset)}function q(e,t=1){e.append(` `.repeat(2*t))}function Ot(e){let t=0;return e.forEach((e,n)=>{J(e)&&(t=n)}),String(t).length}function kt(e){let t=0;for(let[n,r]of Q(e)){if(Y(r))continue;let e=X(r)?n.length+1+kt(r):n.length;t=Math.max(t,e)}return t}function J(e){return e==null||typeof e==`boolean`||typeof e==`number`||typeof e==`string`||Array.isArray(e)&&e.length===0||typeof e==`object`&&e&&Object.keys(e).length===0}function Y(e){return Array.isArray(e)&&e.length>0}function X(e){return typeof e==`object`&&!!e&&Object.keys(e).length>0}function Z(e){return e.slice().sort((e,t)=>Ze[e.propertyChangeType]-Ze[t.propertyChangeType]||e.path.localeCompare(t.path))}function At(e,t){return e.reduce((e,n)=>{let r=t(n);return(e[r]=e[r]||[]).push(n),e},{})}function Q(e){return Object.entries(e)}function jt(e){let t=e.lastIndexOf(`/providers/`);if(t===-1){let t=[...e.matchAll(/^(\\/subscriptions\\/[^/]+)\\/(resourceGroups\\/[^/]+)$/gi)];return t[0]?[t[0][1],t[0][2]]:[`/`,e.substring(1)]}return[e.substring(0,t),e.substring(t+11)]}function $(e,t,n){if(n)for(let r of Object.keys(n)){let i=n[r];t.setOutput(r,i.value),e.maskedOutputs&&e.maskedOutputs.some(e=>e.toLowerCase()===r.toLowerCase())&&t.setSecret(i.value)}}async function Mt(e,t,n,r){try{switch(Fe(e,t),e.type){case`deployment`:switch(e.operation){case`create`:await N(async()=>{$(e,r,(await Le(e,t,n))?.properties?.outputs)},e=>{n.logError(JSON.stringify(e,null,2)),r.setFailed(`Create failed`)},n);break;case`validate`:await N(async()=>{M((await Re(e,t,n))?.properties?.diagnostics??[],n)},e=>{n.logError(JSON.stringify(e,null,2)),r.setFailed(`Validation failed`)},n);break;case`whatIf`:{let r=await ze(e,t,n),i=et(r,`ansii`);n.logInfoRaw(i),M(r.diagnostics??[],n);break}}break;case`deploymentStack`:switch(e.operation){case`create`:await N(async()=>{$(e,r,(await Be(e,t,n))?.properties?.outputs)},e=>{n.logError(JSON.stringify(e,null,2)),r.setFailed(`Create failed`)},n);break;case`validate`:await N(()=>Ve(e,t,n),e=>{n.logError(JSON.stringify(e,null,2)),r.setFailed(`Validation failed`)},n);break;case`delete`:await He(e,n);break}break}}catch(e){if(Pe(e)&&e.response?.bodyAsText){let t=e.response.headers.get(`x-ms-correlation-request-id`);n.logError(`Request failed. CorrelationId: ${t}`);let r=JSON.parse(e.response.bodyAsText);n.logError(JSON.stringify(r,null,2))}throw r.setFailed(`Operation failed`),e}}exports.Color=F,exports.ColorStringBuilder=L,exports.CustomPollingError=A,exports.colorize=Ke,exports.defaultName=E,exports.deploymentCreate=Le,exports.deploymentValidate=Re,exports.deploymentWhatIf=ze,exports.execute=Mt,exports.formatJson=$e,exports.formatWhatIfOperationResult=et,exports.getColorString=I,exports.getCreateOperationOptions=k,exports.getDeploymentClient=D,exports.getJsonParameters=oe,exports.getOptionalBooleanInput=b,exports.getOptionalDictionaryInput=S,exports.getOptionalEnumArrayInput=de,exports.getOptionalEnumInput=v,exports.getOptionalFilePath=y,exports.getOptionalStringArrayInput=x,exports.getOptionalStringDictionaryInput=fe,exports.getOptionalStringInput=g,exports.getRequiredEnumInput=_,exports.getRequiredStringInput=h,exports.getStacksClient=O,exports.getTemplateAndParameters=se,exports.logDiagnostics=M,exports.parse=m,exports.parseConfig=ge,exports.removeColors=qe,exports.requireLocation=j,exports.resolvePath=le,exports.setOutputs=$,exports.stackCreate=Be,exports.stackDelete=He,exports.stackValidate=Ve,exports.tryWithErrorHandling=N,exports.validateFileScope=Fe;\n//# sourceMappingURL=index.cjs.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport * as core from \"@actions/core\";\n\nimport {\n InputReader,\n OutputSetter,\n InputParameterNames,\n} from \"@azure/bicep-deploy-common\";\n\nexport class ActionInputReader implements InputReader {\n getInput = (inputName: string) => core.getInput(inputName);\n}\n\nexport class ActionOutputSetter implements OutputSetter {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n setOutput = (name: string, value: any) => core.setOutput(name, value);\n setFailed = (message: string) => core.setFailed(message);\n setSecret = (secret: string) => core.setSecret(secret);\n}\n\nexport class ActionInputParameterNames implements InputParameterNames {\n type = \"type\";\n name = \"name\";\n location = \"location\";\n templateFile = \"template-file\";\n paramtersFile = \"parameters-file\";\n parameters = \"parameters\";\n bicepVersion = \"bicep-version\";\n description = \"description\";\n tags = \"tags\";\n maskedOutputs = \"masked-outputs\";\n environment = \"environment\";\n operation = \"operation\";\n whatIfExcludeChangeTypes = \"what-if-exclude-change-types\";\n validationLevel = \"validation-level\";\n actionOnUnmanageResources = \"action-on-unmanage-resources\";\n actionOnUnmanageResourceGroups = \"action-on-unmanage-resourcegroups\";\n actionOnUnmanageManagementGroups = \"action-on-unmanage-managementgroups\";\n bypasStackOutOfSyncError = \"bypass-stack-out-of-sync-error\";\n denySettingsMode = \"deny-settings-mode\";\n denySettingsExcludedActions = \"deny-settings-excluded-actions\";\n denySettingsExcludedPrincipals = \"deny-settings-excluded-principals\";\n denySettingsApplyToChildScopes = \"deny-settings-apply-to-child-scopes\";\n scope = \"scope\";\n tenantId = \"tenant-id\";\n managementGroupId = \"management-group-id\";\n subscriptionId = \"subscription-id\";\n resourceGroupName = \"resource-group-name\";\n}\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport * as core from \"@actions/core\";\n\nimport { Color, colorize, Logger } from \"@azure/bicep-deploy-common\";\n\nconst logWarningRaw = (message: string) => core.warning(message);\nconst logErrorRaw = (message: string) => core.error(message);\n\nexport class ActionLogger implements Logger {\n isDebugEnabled = () => core.isDebug();\n debug = (message: string) => core.debug(message);\n logInfoRaw = (message: string) => core.info(message);\n logInfo = (message: string) => this.logInfoRaw(colorize(message, Color.Blue));\n logWarning = (message: string) =>\n logWarningRaw(colorize(message, Color.Yellow));\n logError = (message: string) => logErrorRaw(colorize(message, Color.Red));\n}\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport * as core from \"@actions/core\";\n\nimport {\n getTemplateAndParameters,\n parseConfig,\n execute,\n} from \"@azure/bicep-deploy-common\";\n\nimport {\n ActionInputReader,\n ActionOutputSetter,\n ActionInputParameterNames,\n} from \"./actionIO\";\n\nimport { ActionLogger } from \"./logging\";\n\n/**\n * The main function for the action.\n * @returns {Promise} Resolves when the action is complete.\n */\nexport async function run(): Promise {\n try {\n const inputReader = new ActionInputReader();\n const inputParameterNames = new ActionInputParameterNames();\n const config = parseConfig(inputReader, inputParameterNames);\n const logger = new ActionLogger();\n const outputSetter = new ActionOutputSetter();\n logger.logInfo(`Action config: ${JSON.stringify(config, null, 2)}`);\n\n const files = await getTemplateAndParameters(config, logger);\n\n await execute(config, files, logger, outputSetter);\n } catch (error) {\n // Fail the workflow run if an error occurs\n const message = error instanceof Error ? error.message : `${error}`;\n core.setFailed(message);\n }\n}\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport { run } from \"./main\";\n\nrun();\n"],"x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,297,298,299,300,301,302,303,304,305,306,307,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,327,328,329,330,331,332,333,334,335,336,337,338,339,340,341,342,343,344,345,346,347,348,349,350,351,352,353,354,355,356,357,358,359,360,361,362,363,364,365,366,367,368,369,370,371,372,373,374,375,376,377,378,379,380,381,382,383,384,385,386,387,388,389,390,391,392,393,394,395,396,397,398,399,400,401,402,403,404,405,406,407,408,409,410,411,412,413,414,415,416,417,418,419,420,421,422,423,424,425,426,427,428,429,430,431,432,433,434,435,436,437,438,439,440,441,442,443,444,445,446,447,448,449,450,451,452,453,454,455,456,457,458,459,460,461,462,463,464,465,466,467,468,469,470,471,472,473,474,475,476,477,478,479,480,481,482,483,484,485,486,487,488,489,490,491,492,493,494,495,496,497,498,499,500,501,502,503,504,505,506,507,508,509,510,511,512,513,514,515,516,517,518,519,520,521,522,523,524,525,526,527,528,529,530,531,532,533,534,535,536,537,538],"mappings":"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MAAO,IAAQ,MAAO,IAAQ,MAAO,IAAQ,MAAO,IACnE,MAAO,IAAQ,MAAO,IAAQ,MAAO,IAAQ,MAAO,IAAQ,MAAO,IACnE,MAAO,IAAQ,MAAO,IAAQ,MAAO,IAAQ,MAAO,IAAQ,MAAO,OACnE,MAAO,OAAQ,MAAO,IAAQ,MAAO,IAAQ,MAAO,IAAQ,MAAO,IACnE,MAAO,IAAQ,MAAO,IAAQ,MAAO,IAAQ,MAAO,IAAQ,MAAO,IACnE,MAAO,IAAQ,MAAO,IAAQ,MAAO,IAAQ,MAAO,IAAQ,MAAO,IACnE,MAAO,IAAQ,MAAO,IAAQ,MAAO,IAAQ,MAAO,IAAQ,MAAO,IACnE,MAAO,IAAQ,MAAO,IAAQ,MAAO,IAAQ,MAAO,IAAQ,MAAO,IACnE,MAAO,IAAQ,MAAO,IAAQ,MAAO,IAAQ,MAAO,IAAQ,MAAO,IACnE,MAAO,IAAQ,MAAO,IAAQ,MAAO,IAAQ,MAAO,IAAQ,MAAO,IACnE,MAAO,IAAQ,MAAO,IAAQ,MAAO,IAAQ,MAAO,IAAQ,MAAO,IACnE,MAAO,IAAQ,MAAO,IAAQ,MAAO,IAAQ,MAAO,IAAQ,MAAO,IACnE,MAAO,IAAQ,MAAO,IAAQ,MAAO,IAAQ,MAAO,IAAQ,MAAO,IACnE,MAAO,IAAQ,MAAO,IAAQ,MAAO,IAAQ,MAAO,IAAQ,MAAO,IACnE,MAAO,IAAQ,MAAO,IAAQ,MAAO,IAAQ,MAAO,IAAQ,MAAO,IACnE,MAAO,IAAQ,MAAO,IAAQ,MAAO,IAAQ,MAAO,IAAQ,MAAO,IACnE,MAAO,IAAQ,MAAO,IAAQ,MAAO,IAAQ,MAAO,IAAQ,MAAO,IACnE,MAAO,IAAQ,MAAO,IAAQ,MAAO,IAAQ,MAAO,IAAQ,MAAO,IACnE,MAAO,IAAQ,MAAO,IAAQ,MAAO,IAAQ,MAAO,IAAQ,MAAO,IACnE,MAAO,IAAQ,MAAO,IAAQ,MAAO,IAAQ,MAAO,IAAQ,MAAO,IACnE,MAAO,IAAQ,MAAO,IAAQ,MAAO,IAAQ,MAAO,IAAQ,MAAO,KACnE,MAAO,KAAQ,MAAO,IAAQ,MAAO,IAAQ,MAAO,IAAQ,MAAO,IACnE,MAAO,IAAQ,MAAO,IAAQ,MAAO,IAAQ,MAAO,IAAQ,MAAO,IACnE,MAAO,IAAQ,MAAO,IAAQ,MAAO,IAAQ,MAAO,IAAQ,MAAO,IACnE,MAAO,IAAQ,MAAO,IAAQ,MAAO,IAAQ,MAAO,IAAQ,MAAO,IACnE,MAAO,IAAQ,MAAO,IAAQ,MAAO,IAAQ,MAAO,IAAQ,MAAO,IACnE,MAAO,IAAQ,MAAO,IAAQ,MAAO,IAAQ,MAAO,IAAQ,MAAO,IACnE,MAAO,IAAQ,MAAO,IAAQ,MAAO,IAAQ,MAAO,IAAQ,MAAO,IACnE,MAAO,IAAQ,MAAO,IAAQ,MAAO,IAAQ,MAAO,IAAQ,MAAO,IACnE,MAAO,IAAQ,MAAO,IAAQ,MAAO,IAAQ,MAAO,IAAQ,MAAO,IACnE,MAAO,IAAQ,MAAO,IAAQ,MAAO,IAAQ,MAAO,IAAQ,MAAO,IACnE,MAAO,IAAQ,MAAO,IAAQ,MAAO,IAAQ,MAAO,IAAQ,MAAO,IACnE,MAAO,IAAQ,MAAO,IAAQ,MAAO,IAAQ,MAAO,IAAQ,MAAO,IACnE,MAAO,IAAQ,MAAO,IAAQ,MAAO,IAAQ,MAAO,IAAQ,MAAO,IACnE,MAAO,IAAQ,MAAO,IAAQ,MAAO,IAAQ,MAAO,IAAQ,MAAO,IACnE,MAAO,IAAQ,MAAO,IAAQ,MAAO,IAAQ,MAAO,IAAQ,MAAO,IACnE,MAAO,IAAQ,MAAO,IAAQ,MAAO,IAAQ,MAAO,IAAQ,MAAO,IACnE,MAAO,IAAQ,MAAO,IAAQ,MAAO,IAAQ,MAAO,IAAQ,MAAO,IACnE,MAAO,IAAQ,MAAO,IAAQ,MAAO,IAAQ,MAAO,IAAQ,MAAO,IACnE,MAAO,IAAQ,MAAO,IAAQ,MAAO,IAAQ,MAAO,IAAQ,MAAO,IACnE,MAAO,OAAQ,MAAO,OAAQ,MAAO,IAAQ,MAAO,IAAQ,MAAO,IACnE,MAAO,IAAQ,MAAO,IAAQ,MAAO,IAAQ,MAAO,IAAQ,MAAO,IACnE,MAAO,IAAQ,MAAO,IAAQ,MAAO,IAAQ,MAAO,IAAQ,MAAO,IACnE,MAAO,IAAQ,MAAO,IAAQ,MAAO,IAAQ,MAAO,IAAQ,MAAO,IACnE,MAAO,IAAQ,MAAO,IAAQ,MAAO,IAAQ,MAAO,IAAQ,MAAO,IACnE,MAAO,IAAQ,MAAO,IAAQ,MAAO,IAAQ,MAAO,IAAQ,MAAO,IACnE,MAAO,IAAQ,MAAO,IAAQ,MAAO,IAAQ,MAAO,IAAQ,MAAO,IACnE,MAAO,IAAQ,MAAO,IAAQ,MAAO,IAAQ,MAAO,IAAQ,MAAO,IACnE,MAAO,IAAQ,MAAO,IAAQ,MAAO,IAAQ,MAAO,IAAQ,MAAO,IACnE,MAAO,IAAQ,MAAO,IAAQ,MAAO,IAAQ,MAAO,IAAQ,MAAO,IACnE,MAAO,IAAQ,MAAO,IAAQ,MAAO,IAAQ,MAAO,IAAQ,MAAO,IACnE,MAAO,IAAQ,MAAO,IAAQ,MAAO,IAAQ,MAAO,IAAQ,MAAO,IACnE,MAAO,IAAQ,MAAO,IAAQ,MAAO,IAAQ,MAAO,IAAQ,MAAO,IACnE,MAAO,IAAQ,MAAO,IAAQ,MAAO,IAAQ,MAAO,IAAQ,MAAO,IACnE,MAAO,IAAQ,MAAO,IAAQ,MAAO,IAAQ,MAAO,IAAQ,MAAO,IACnE,MAAO,IAAQ,MAAO,IAAQ,MAAO,IAAQ,MAAO,IAAQ,MAAO,IACnE,MAAO,IAAQ,MAAO,IAAQ,MAAO,IAAQ,MAAO,IAAQ,MAAO,IACnE,MAAO,IAAQ,MAAO,IAAQ,MAAO,IAAQ,MAAO,IAAQ,MAAO,IACnE,MAAO,IAAQ,MAAO,IAAQ,MAAO,IAAQ,MAAO,IAAQ,MAAO,IACnE,MAAO,IAAQ,MAAO,IAAQ,MAAO,IAAQ,MAAO,IAAQ,MAAO,IACnE,MAAO,IAAQ,MAAO,IAAQ,MAAO,IAAQ,MAAO,IAAQ,MAAO,IACnE,MAAO,IAAQ,MAAO,IAAQ,MAAO,IAAQ,MAAO,IAAQ,MAAO,IACnE,MAAO,IAAQ,MAAO,IAAQ,MAAO,IAAQ,MAAO,IAAQ,MAAO,IACnE,MAAO,IAAQ,MAAO,IAAQ,MAAO,IAAQ,MAAO,IAAQ,MAAO,IACnE,MAAO,IAAQ,MAAO,IAAQ,MAAO,IAAQ,MAAO,IAAQ,MAAO,IACnE,MAAO,IAAQ,MAAO,IAAQ,MAAO,IAAQ,MAAO,IAAQ,MAAO,IACnE,MAAO,IAAQ,MAAO,IAAQ,MAAO,IAAQ,MAAO,IAAQ,MAAO,IACnE,MAAO,IAAQ,MAAO,IAAQ,MAAO,IAAQ,MAAO,IAAQ,MAAO,IACnE,MAAO,IAAQ,MAAO,IAAQ,MAAO,IAAQ,MAAO,IAAQ,MAAO,IACnE,MAAO,IAAQ,MAAO,IAAQ,MAAO,IAAQ,MAAO,IAAQ,MAAO,IACnE,MAAO,IAAQ,MAAO,IAAQ,MAAO,IAAQ,MAAO,IAAQ,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ACL,IAAK,aACL,IAAK,aACL,IAAK,YACL,IAAK,WACL,IAAK,aACL,IAAK,kBACL,IAAK,KACL,IAAK,SACH,MAAO,aACT,IAAK,cACL,IAAK,aACL,IAAK,aACL,IAAK,YACL,IAAK,WACL,IAAK,aACL,IAAK,kBACL,IAAK,KACL,IAAK,SACH,MAAO,aACT,IAAK,qBACL,IAAK,WACL,IAAK,aACL,IAAK,aACL,IAAK,YACL,IAAK,WACL,IAAK,aACL,IAAK,kBACH,MAAO,aACT,IAAK,SACL,IAAK,WACL,IAAK,cACL,IAAK,cACL,IAAK,mBACL,IAAK,WACL,IAAK,aACL,IAAK,eACL,IAAK,eACL,IAAK,aACL,IAAK,YACL,IAAK,WACL,IAAK,aACL,IAAK,kBACH,MAAO,aACT,IAAK,kBACL,IAAK,WACL,IAAK,WACL,IAAK,QACL,IAAK,SACL,IAAK,aACL,IAAK,aACL,IAAK,YACL,IAAK,WACL,IAAK,aACL,IAAK,kBACL,IAAK,eACH,MAAO,aACT,IAAK,cACL,IAAK,mBACL,IAAK,SACL,IAAK,aACL,IAAK,eACL,IAAK,aACL,IAAK,YACL,IAAK,WACL,IAAK,aACL,IAAK,kBACL,IAAK,SACH,MAAO,aACT,IAAK,cACL,IAAK,eACL,IAAK,UACH,MAAO,eACT,IAAK,cACL,IAAK,cACL,IAAK,aACL,IAAK,aACL,IAAK,YACL,IAAK,KACL,IAAK,SACH,MAAO,cACT,IAAK,cACL,IAAK,aACL,IAAK,YACH,MAAO,cACT,IAAK,cACL,IAAK,aACL,IAAK,YACH,MAAO,cACT,IAAK,cACL,IAAK,cACL,IAAK,aACL,IAAK,YACL,IAAK,cACL,IAAK,KACH,MAAO,cACT,IAAK,cACH,MAAO,cACT,IAAK,UACL,IAAK,MACL,IAAK,OACL,IAAK,SACL,IAAK,SACH,MAAO,SACT,IAAK,UACL,IAAK,SACH,MAAO,SACT,IAAK,cACL,IAAK,MACL,IAAK,YACL,IAAK,cACH,MAAO,YACT,IAAK,cACL,IAAK,aACL,IAAK,YACL,IAAK,UACL,IAAK,cACH,MAAO,cACT,IAAK,SACL,IAAK,eACL,IAAK,WACH,MAAO,eACT,IAAK,SACL,IAAK,eACL,IAAK,WACH,MAAO,eACT,IAAK,iBACL,IAAK,QACL,IAAK,SACL,IAAK,QACL,IAAK,cACL,IAAK,SACL,IAAK,aACL,IAAK,aACL,IAAK,YACL,IAAK,WACL,IAAK,aACL,IAAK,kBACL,IAAK,KACL,IAAK,SACL,IAAK,WACL,IAAK,eACL,IAAK,WACH,MAAO,eACT,IAAK,SACL,IAAK,eACL,IAAK,WACH,MAAO,eACT,IAAK,SACL,IAAK,cACL,IAAK,aACL,IAAK,aACL,IAAK,YACL,IAAK,WACL,IAAK,aACL,IAAK,kBACL,IAAK,KACL,IAAK,SACL,IAAK,eACL,IAAK,WACH,MAAO,eACT,IAAK,SACL,IAAK,eACL,IAAK,WACH,MAAO,eACT,IAAK,SACL,IAAK,eACL,IAAK,WACH,MAAO,eACT,IAAK,SACL,IAAK,eACL,IAAK,WACH,MAAO,eACT,IAAK,SACL,IAAK,eACL,IAAK,WACH,MAAO,eACT,IAAK,iBACL,IAAK,kBACH,MAAO,iBACT,IAAK,UACL,IAAK,WACL,IAAK,kBACL,IAAK,SACL,IAAK,UACL,IAAK,aACL,IAAK,MACL,IAAK,YACL,IAAK,QACH,MAAO,MACT,IAAK,UACH,MAAO,UACT,IAAK,OACL,IAAK,aACL,IAAK,UACL,IAAK,SACL,IAAK,WACH,MAAO,OACT,IAAK,sBACL,IAAK,SACL,IAAK,WACH,MAAO,SACT,IAAK,cACL,IAAK,cACH,MAAO,cACT,IAAK,aACL,IAAK,QACL,IAAK,WACL,IAAK,YACL,IAAK,YACL,IAAK,OACL,IAAK,cACL,IAAK,SACH,MAAO,YACT,IAAK,UACL,IAAK,gBACL,IAAK,SACL,IAAK,aACL,IAAK,SACL,IAAK,iBACL,IAAK,iBACL,IAAK,UACL,IAAK,WACL,IAAK,cACH,MAAO,SACT,IAAK,cACL,IAAK,aACL,IAAK,cACL,IAAK,kBACL,IAAK,cACL,IAAK,cACH,MAAO,cACT,IAAK,cACL,IAAK,WACH,MAAO,WACT,IAAK,YACL,IAAK,kBACL,IAAK,QACL,IAA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AAG,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,wBAAwB,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,wBAAwB,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,wBAAwB,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,wBAAwB,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,yBAAyB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,yBAAyB,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,yBAAyB,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,yBAAyB,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,yBAAyB,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,YAAY,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,yBAAyB,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,yBAAyB,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,yBAAyB,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,yBAAyB,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,yBAAyB,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,yBAAyB,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,yBAAyB,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,yBAAyB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,yBAAyB,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,yBAAyB,CAAC,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAK,IAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,IAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,yBAAyB,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,yBAAyB,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,yBAAyB,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,yBAAyB,CAAC,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,yBAAyB,CAAC,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,yBAAyB,CAAC,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,yBAAyB,CAAC,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,yBAAyB,CAAC,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,yBAAyB,CAAC,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,yBAAyB,CAAC,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAA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AAC,CAAC,KAAK,KAAK,CAAC,yBAAyB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,yBAAyB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,yBAAyB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,yBAAyB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,yBAAyB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,yBAAyB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,yBAAyB,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,yBAAyB,CAAC,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,yBAAyB,CAAC,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,yBAAyB,CAAC,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,GAAG,KAAK,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,IAAI,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,IAAI,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,wBAAwB,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,wBAAwB,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,IAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,yBAAyB,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,yBAAyB,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,yBAAyB,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,yBAAyB,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,yBAAyB,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,yBAAyB,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,yBAAyB,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,yBAAyB,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,yBAAyB,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,yBAAyB,CAAC,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,yBAAyB,CAAC,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,yBAAyB,CAAC,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,yBAAyB,CAAC,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,yBAAyB,CAAC,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,yBAAyB,CAAC,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,yBAAyB,CAAC,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,yBAAyB,CAAC,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,yBAAyB,CAAC,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,yBAAyB,CAAC,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,yBAAyB,CAAC,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,yBAAyB,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,yBAAyB,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,yBAAyB,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,yBAAyB,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,yBAAyB,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,yBAAyB,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,yBAAyB,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,yBAAyB,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,yBAAyB,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,yBAAyB,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,yBAAyB,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,yBAAyB,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,yBAAyB,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,yBAAyB,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,yBAAyB,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,yBAAyB,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,yBAAyB,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,yBAAyB,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,yBAAyB,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,yBAAyB,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,yBAAyB,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,yBAAyB,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,yBAAyB,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,yBAAyB,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,yBAAyB,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,yBAAyB,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,yBAAyB,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,yBAAyB,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,yBAAyB,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,yBAAyB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,yBAAyB,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,yBAAyB,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,yBAAyB,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,yBAAyB,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,yBAAyB,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,yBAAyB,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,yBAAyB,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,yBAAyB,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,yBAAyB,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,yBAAyB,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,yBAAyB,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,yBAAyB,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,yBAAyB,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,yBAAyB,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,yBAAyB,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,yBAAyB,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,yBAAyB,CAAC,GAAG,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,yBAAyB,CAAC,GAAG,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,yBAAyB,CAAC,GAAG,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,yBAAyB,CAAC,GAAG,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,yBAAyB,CAAC,GAAG,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,yBAAyB,CAAC,GAAG,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,yBAAyB,CAAC,GAAG,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,yBAAyB,CAAC,GAAG,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,yBAAyB,CAAC,GAAG,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,yBAAyB,CAAC,GAAG,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,yBAAyB,CAAC,GAAG,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,yBAAyB,CAAC,GAAG,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,yBAAyB,CAAC,GAAG,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,yBAAyB,CAAC,GAAG,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,yBAAyB,CAAC,GAAG,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,yBAAyB,CAAC,GAAG,MAAM,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,yBAAyB,CAAC,GAAG,MAAM,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,yBAAyB,CAAC,GAAG,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,yBAAyB,CAAC,GAAG,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,yBAAyB,CAAC,GAAG,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,yBAAyB,CAAC,GAAG,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,yBAAyB,CAAC,GAAG,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,yBAAyB,CAAC,GAAG,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,yBAAyB,CAAC,GAAG,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,yBAAyB,CAAC,GAAG,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,yBAAyB,CAAC,GAAG,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,yBAAyB,CAAC,GAAG,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,yBAAyB,CAAC,GAAG,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,yBAAyB,CAAC,GAAG,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,yBAAyB,CAAC,GAAG,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,yBAAyB,CAAC,GAAG,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,yBAAyB,CAAC,GAAG,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,yBAAyB,CAAC,GAAG,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,yBAAyB,CAAC,GAAG,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,yBAAyB,CAAC,GAAG,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,yBAAyB,CAAC,GAAG,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,yBAAyB,CAAC,GAAG,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,yBAAyB,CAAC,GAAG,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,yBAAyB,CAAC,GAAG,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,yBAAyB,CAAC,GAAG,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,yBAAyB,CAAC,GAAG,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,yBAAyB,CAAC,GAAG,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,yBAAyB,CAAC,GAAG,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,yBAAyB,CAAC,GAAG,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,yBAAyB,CAAC,GAAG,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,yBAAyB,CAAC,GAAG,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,yBAAyB,CAAC,GAAG,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,yBAAyB,CAAC,GAAG,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,yBAAyB,CAAC,GAAG,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,yBAAyB,CAAC,GAAG,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,yBAAyB,CAAC,GAAG,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,yBAAyB,CAAC,GAAG,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,yBAAyB,CAAC,GAAG,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,KAAM,KAAM,CAAC,SAAS,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,MAAM,MAAM,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,MAAM,MAAM,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,MAAM,MAAM,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,MAAM,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,MAAM,MAAM,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,MAAM,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,MAAM,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,MAAM,MAAM,MAAM,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,MAAM,MAAM,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,MAAM,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,MAAM,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,MAAM,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,MAAM,MAAM,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,MAAM,MAAM,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,MAAM,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,MAAM,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,MAAM,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,MAAM,MAAM,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,MAAM,MAAM,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,MAAM,MAAM,MAAM,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,MAAM,MAAM,MAAM,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,MAAM,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,MAAM,MAAM,MAAM,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,MAAM,MAAM,MAAM,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,MAAM,MAAM,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,MAAM,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,MAAM,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,MAAM,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,MAAM,MAAM,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,MAAM,MAAM,MAAM,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,MAAM,MAAM,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,MAAM,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,MAAM,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,MAAM,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,MAAM,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,MAAM,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,MAAM,MAAM,MAAM,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,MAAM,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,MAAM,MAAM,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,MAAM,MAAM,MAAM,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,MAAM,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,MAAM,MAAM,MAAM,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,MAAM,MAAM,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,MAAM,MAAM,MAAM,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,MAAM,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,MAAM,MAAM,MAAM,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,MAAM,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,MAAM,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,MAAM,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,MAAM,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,MAAM,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,MAAM,MAAM,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,MAAM,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,MAAM,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,MAAM,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,MAAM,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,MAAM,MAAM,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,MAAM,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,MAAM,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,MAAM,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,MAAM,MAAM,MAAM,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,MAAM,MAAM,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,MAAM,MAAM,MAAM,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,MAAM,MAAM,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,MAAM,MAAM,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,MAAM,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,MAAM,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,MAAM,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,MAAM,MAAM,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,MAAM,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,MAAM,MAAM,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,MAAM,MAAM,MAAM,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,MAAM,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,MAAM,MAAM,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,KAAK,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,GAAG,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,GAAG,IAAI,KAAK,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,GAAG,KAAK,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,GAAG,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAM,KAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAM,KAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,yBAAyB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,yBAAyB,CAAC,GAAG,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,yBAAyB,CAAC,GAAG,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,yBAAyB,CAAC,GAAG,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,yBAAyB,CAAC,GAAG,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,yBAAyB,CAAC,GAAG,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,yBAAyB,CAAC,GAAG,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,yBAAyB,CAAC,KAAK,KAAK,KAAK,GAAG,KAAK,KAAK,KAAK,KAAK,GAAG,KAAK,KAAK,KAAK,KAAK,GAAG,KAAK,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,yBAAyB,CAAC,KAAK,KAAK,GAAG,KAAK,KAAK,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,yBAAyB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,yBAAyB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,yBAAyB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,yBAAyB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,yBAAyB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,yBAAyB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,yBAAyB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,yBAAyB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,yBAAyB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,yBAAyB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,yBAAyB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,yBAAyB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,yBAAyB,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,yBAAyB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,yBAAyB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,yBAAyB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,yBAAyB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,yBAAyB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,yBAAyB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,yBAAyB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,yBAAyB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,yBAAyB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,yBAAyB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,yBAAyB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,yBAAyB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,yBAAyB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,yBAAyB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,yBAAyB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,yBAAyB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,yBAAyB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,yBAAyB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,yBAAyB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,yBAAyB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,yBAAyB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,yBAAyB,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,yBAAyB,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,yBAAyB,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,yBAAyB,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,yBAAyB,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,yBAAyB,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,yBAAyB,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,yBAAyB,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,yBAAyB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,yBAAyB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,yBAAyB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,yBAAyB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,yBAAyB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,yBAAyB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,yBAAyB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,yBAAyB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,yBAAyB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,yBAAyB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,yBAAyB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,yBAAyB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,yBAAyB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,yBAAyB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,yBAAyB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,yBAAyB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,yBAAyB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,yBAAyB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,yBAAyB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,yBAAyB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,yBAAyB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,yBAAyB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,yBAAyB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,yBAAyB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,yBAAyB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,yBAAyB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,yBAAyB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,yBAAyB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,yBAAyB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,yBAAyB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,yBAAyB,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,KAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,OAAO,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,OAAO,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,OAAO,OAAO,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,OAAO,OAAO,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,OAAO,OAAO,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,OAAO,OAAO,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,OAAO,OAAO,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,OAAO,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,OAAO,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,OAAO,OAAO,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,OAAO,OAAO,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,OAAO,OAAO,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,OAAO,OAAO,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAO,KAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,yBAAyB,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,yBAAyB,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,yBAAyB,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,yBAAyB,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,yBAAyB,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,yBAAyB,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,yBAAyB,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,yBAAyB,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,yBAAyB,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,yBAAyB,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,yBAAyB,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,yBAAyB,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,yBAAyB,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,yBAAyB,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,yBAAyB,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,yBAAyB,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,yBAAyB,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,yBAAyB,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,yBAAyB,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,yBAAyB,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,yBAAyB,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,yBAAyB,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,yBAAyB,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,yBAAyB,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,yBAAyB,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,yBAAyB,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,yBAAyB,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,yBAAyB,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,yBAAyB,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,yBAAyB,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,yBAAyB,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,yBAAyB,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,yBAAyB,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,yBAAyB,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,yBAAyB,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,yBAAyB,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,MAAM,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,MAAM,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,MAAM,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,MAAM,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,MAAM,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,MAAM,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,MAAM,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,MAAM,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,MAAM,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAO,OAAO,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,KAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAO,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,KAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAO,MAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,MAAO,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,QAAQ,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,QAAQ,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,QAAQ,QAAQ,CAAC,aAAa,mBCEh97P,IAAIC,EAAW,QAA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ACP,IAAK,EAAE,CACP,IAAK,EAAE,CACP,IAAK,EAAE,CACP,QAAS,CACL,WAAY,EACf,CACJ,CACD,gBAAiB,CACb,EACA,GACA,GACA,EACA,GACH,CACD,cAAe,CACX,EACA,EACA,EACA,EACH,CACD,iBAAkB,CAAC,EAAO,CAC1B,aACH,CACK,GAA4C,CAC9C,KAAM,uGACN,WAAY,MACZ,UAAW,CACP,IAAK,CACD,WAAY,EACf,CACD,IAAK,CACD,WAAY,EACf,CACD,IAAK,CACD,WAAY,EACf,CACD,IAAK,CACD,WAAY,EACf,CACD,QAAS,CACL,WAAY,EACf,CACJ,CACD,YAAa,GACb,gBAAiB,CAAC,EAAW,CAC7B,cAAe,CACX,EACA,EACA,EACH,CACD,iBAAkB,CAAC,EAAQ,EAAY,CACvC,UAAW,OACX,aACH,CACK,GAAiC,CACnC,KAAM,uGACN,WAAY,MACZ,UAAW,CACP,IAAK,CACD,WAAY,EACf,CACD,QAAS,CACL,WAAY,EACf,CACJ,CACD,gBAAiB,CAAC,EAAW,CAC7B,cAAe,CACX,EACA,EACA,EACH,CACD,iBAAkB,CAAC,EAAO,CAC1B,aACH,CACK,GAAoC,CACtC,KAAM,uGACN,WAAY,SACZ,UAAW,CACP,IAAK,EAAE,CACP,IAAK,EAAE,CACP,IAAK,EAAE,CACP,IAAK,EAAE,CACP,QAAS,CACL,WAAY,EACf,CACJ,CACD,gBAAiB,CACb,EACA,GACA,GACA,EACA,GACH,CACD,cAAe,CACX,EACA,EACA,EACH,CACD,iBAAkB,CAAC,EAAO,CAC1B,aACH,CACK,GAA+C,CACjD,KAAM,4IACN,WAAY,MACZ,UAAW,CACP,IAAK,CACD,WAAY,EACf,CACD,IAAK,CACD,WAAY,EACf,CACD,IAAK,CACD,WAAY,EACf,CACD,IAAK,CACD,WAAY,EACf,CACD,QAAS,CACL,WAAY,EACf,CACJ,CACD,YAAa,GACb,gBAAiB,CAAC,EAAW,CAC7B,cAAe,CACX,EACA,EACA,EACH,CACD,iBAAkB,CAAC,EAAQ,EAAY,CACvC,UAAW,OACX,aACH,CACK,GAAoC,CACtC,KAAM,4IAC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ACA,EAAkB,mBAAoB,MAAM,CAC7C,CAACA,EAAkB,wBAAyB,WAAW,CACvD,CAACA,EAAkB,kBAAmB,UAAU,CAChD,CAACA,EAAkB,qBAAsB,aAAa,CACtD,CACIA,EAAkB,iCAClB,mBACH,CACD,CAACA,EAAkB,kBAAmB,gBAAgB,CACtD,CAACA,EAAkB,8BAA+B,mBAAmB,CACrE,CAACA,EAAkB,+BAAgC,oBAAoB,CACvE,CAACA,EAAkB,gCAAiC,eAAe,CACnE,CAACA,EAAkB,UAAW,SAAS,CACvC,CACIA,EAAkB,gDAClB,0BACH,CACD,CACIA,EAAkB,+BAClB,0BACH,CACD,CACIA,EAAkB,oCAClB,iBACH,CACD,CACIA,EAAkB,oCAClB,2BACH,CACD,CACIA,EAAkB,kCAClB,oBACH,CACD,CACIA,EAAkB,6CAClB,mBACH,CACD,CACIA,EAAkB,kDAClB,yBACH,CACD,CAACA,EAAkB,iBAAkB,kBAAkB,CACvD,CACIA,EAAkB,mCAClB,iBACH,CACD,CAACA,EAAkB,qBAAsB,aAAa,CACtD,CACIA,EAAkB,sCAClB,mBACH,CACD,CAACA,EAAkB,+BAAgC,aAAa,CAChE,CACIA,EAAkB,qDAClB,yBACH,CACD,CACIA,EAAkB,6CAClB,iBACH,CACD,CACIA,EAAkB,yCAClB,yBACH,CACD,CAACA,EAAkB,sBAAuB,cAAc,CACxD,CACIA,EAAkB,mCAClB,wBACH,CACD,CACIA,EAAkB,8CAClB,+BACH,CACD,CAACA,EAAkB,2BAA4B,gBAAgB,CAC/D,CAACA,EAAkB,sBAAuB,cAAc,CACxD,CAACA,EAAkB,wBAAyB,aAAa,CACzD,CACIA,EAAkB,4BAClB,wBACH,CACD,CAACA,EAAkB,gBAAiB,YAAY,CAChD,CAACA,EAAkB,oBAAqB,cAAc,CACtD,CAACA,EAAkB,YAAa,cAAc,CAC9C,CAACA,EAAkB,oBAAqB,sBAAsB,CAC9D,CAACA,EAAkB,8BAA+B,kBAAkB,CACpE,CACIA,EAAkB,iCAClB,sBACH,CACD,CACIA,EAAkB,kCAClB,iCACH,CACD,CAACA,EAAkB,uBAAwB,oBAAoB,CAC/D,CAACA,EAAkB,2BAA4B,wBAAwB,CACvE,CACIA,EAAkB,8CAClB,mCACH,CACD,CACIA,EAAkB,gDAClB,4BACH,CACD,CACIA,EAAkB,wDAClB,0BACH,CACD,CAACA,EAAkB,eAAgB,iBAAiB,CACpD,CACIA,EAAkB,6BAClB,0BACH,CACD,CAACA,EAAkB,mBAAoB,iBAAiB,CACxD,CAACA,EAAkB,kBAAmB,gBAAgB,CACtD,CAACA,EAAkB,mBAAoB,iBAAiB,CACxD,CACIA,EAAkB,6BAClB,uBACH,CACD,CAACA,EAAkB,6BAA8B,mBAAmB,CACpE,CAACA,EAAkB,uBAAwB,eAAe,CAC1D,CAACA,EAAkB,8BAA+B,qBAAqB,CACvE,CACIA,EAAkB,iCAClB,2BACH,CACD,CAACA,EAAkB,oBAAqB,aAAa,CACrD,CAACA,EAAkB,oBAAqB,aAAa,CACrD,CAACA,EAAkB,0BAA2B,mBAAmB,CACjE,CAACA,EAAkB,oBAAqB,iBAAiB,CACzD,CACIA,EAAkB,yCAClB,yBACH,CACD,CACIA,EAAkB,+BAClB,4BACH,CACD,CACIA,EAAkB,0CAClB,gCACH,CACD,CACIA,EAAkB,8CAClB,uBACH,CACD,CACIA,EAAkB,sCAClB,gBACH,CACD,CACIA,EAAkB,wCAClB,uBACH,CACD,CACIA,EAAkB,gCAClB,sBACH,CACD,CACIA,EAAkB,+CAClB,yBACH,CACD,CAACA,EAAkB,4BAA6B,mBAAmB,CACnE,CACIA,EAAkB,iCAClB,wBACH,CACD,CACIA,EAAkB,iCAClB,uBACH,CACD,CAACA,EAAkB,wBAAyB,gBAAgB,CAC5D,CACIA,EAAkB,+BAClB,yBACH,CACD,CACIA,EAAkB,gDAClB,mBACH,CACD,CACIA,EAAkB,iCAClB,wBACH,CACD,CACIA,EAAkB,uCAClB,2BACH,CACD,CACIA,EAAkB,wCAClB,eACH,CACD,CACIA,EAAkB,mCAClB,mBACH,CACD,CACIA,EAAkB,8BAClB,yBACH,CACD,CAACA,EAAkB,yBAA0B,gBAAgB,CAC7D,CAACA,EAAkB,mBAAoB,qBAAqB,CA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"} \ No newline at end of file diff --git a/dist/index.js b/dist/index.js deleted file mode 100644 index 829d888..0000000 --- a/dist/index.js +++ /dev/null @@ -1,460 +0,0 @@ -"use strict";var uZ=Object.create;var ym=Object.defineProperty;var mZ=Object.getOwnPropertyDescriptor;var hZ=Object.getOwnPropertyNames;var fZ=Object.getPrototypeOf,gZ=Object.prototype.hasOwnProperty;var MR=t=>{throw TypeError(t)};var EZ=(t,e,r)=>e in t?ym(t,e,{enumerable:!0,configurable:!0,writable:!0,value:r}):t[e]=r;var fs=(t,e)=>()=>(t&&(e=t(t=0)),e);var g=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports),Ur=(t,e)=>{for(var r in e)ym(t,r,{get:e[r],enumerable:!0})},OR=(t,e,r,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of hZ(e))!gZ.call(t,i)&&i!==r&&ym(t,i,{get:()=>e[i],enumerable:!(n=mZ(e,i))||n.enumerable});return t};var Ce=(t,e,r)=>(r=t!=null?uZ(fZ(t)):{},OR(e||!t||!t.__esModule?ym(r,"default",{value:t,enumerable:!0}):r,t)),Lo=t=>OR(ym({},"__esModule",{value:!0}),t);var xR=(t,e,r)=>EZ(t,typeof e!="symbol"?e+"":e,r),_4=(t,e,r)=>e.has(t)||MR("Cannot "+r);var k=(t,e,r)=>(_4(t,e,"read from private field"),r?r.call(t):e.get(t)),er=(t,e,r)=>e.has(t)?MR("Cannot add the same private member more than once"):e instanceof WeakSet?e.add(t):e.set(t,r),We=(t,e,r,n)=>(_4(t,e,"write to private field"),n?n.call(t,r):e.set(t,r),r),Fi=(t,e,r)=>(_4(t,e,"access private method"),r);var yg=g(od=>{"use strict";Object.defineProperty(od,"__esModule",{value:!0});od.toCommandProperties=od.toCommandValue=void 0;function yZ(t){return t==null?"":typeof t=="string"||t instanceof String?t:JSON.stringify(t)}od.toCommandValue=yZ;function CZ(t){return Object.keys(t).length?{title:t.title,file:t.file,line:t.startLine,endLine:t.endLine,col:t.startColumn,endColumn:t.endColumn}:{}}od.toCommandProperties=CZ});var qR=g(Ui=>{"use strict";var IZ=Ui&&Ui.__createBinding||(Object.create?function(t,e,r,n){n===void 0&&(n=r);var i=Object.getOwnPropertyDescriptor(e,r);(!i||("get"in i?!e.__esModule:i.writable||i.configurable))&&(i={enumerable:!0,get:function(){return e[r]}}),Object.defineProperty(t,n,i)}:function(t,e,r,n){n===void 0&&(n=r),t[n]=e[r]}),BZ=Ui&&Ui.__setModuleDefault||(Object.create?function(t,e){Object.defineProperty(t,"default",{enumerable:!0,value:e})}:function(t,e){t.default=e}),QZ=Ui&&Ui.__importStar||function(t){if(t&&t.__esModule)return t;var e={};if(t!=null)for(var r in t)r!=="default"&&Object.prototype.hasOwnProperty.call(t,r)&&IZ(e,t,r);return BZ(e,t),e};Object.defineProperty(Ui,"__esModule",{value:!0});Ui.issue=Ui.issueCommand=void 0;var wZ=QZ(require("os")),FR=yg();function UR(t,e,r){let n=new M4(t,e,r);process.stdout.write(n.toString()+wZ.EOL)}Ui.issueCommand=UR;function SZ(t,e=""){UR(t,{},e)}Ui.issue=SZ;var LR="::",M4=class{constructor(e,r,n){e||(e="missing.command"),this.command=e,this.properties=r,this.message=n}toString(){let e=LR+this.command;if(this.properties&&Object.keys(this.properties).length>0){e+=" ";let r=!0;for(let n in this.properties)if(this.properties.hasOwnProperty(n)){let i=this.properties[n];i&&(r?r=!1:e+=",",e+=`${n}=${vZ(i)}`)}}return e+=`${LR}${bZ(this.message)}`,e}};function bZ(t){return(0,FR.toCommandValue)(t).replace(/%/g,"%25").replace(/\r/g,"%0D").replace(/\n/g,"%0A")}function vZ(t){return(0,FR.toCommandValue)(t).replace(/%/g,"%25").replace(/\r/g,"%0D").replace(/\n/g,"%0A").replace(/:/g,"%3A").replace(/,/g,"%2C")}});var HR=g(qi=>{"use strict";var RZ=qi&&qi.__createBinding||(Object.create?function(t,e,r,n){n===void 0&&(n=r);var i=Object.getOwnPropertyDescriptor(e,r);(!i||("get"in i?!e.__esModule:i.writable||i.configurable))&&(i={enumerable:!0,get:function(){return e[r]}}),Object.defineProperty(t,n,i)}:function(t,e,r,n){n===void 0&&(n=r),t[n]=e[r]}),NZ=qi&&qi.__setModuleDefault||(Object.create?function(t,e){Object.defineProperty(t,"default",{enumerable:!0,value:e})}:function(t,e){t.default=e}),x4=qi&&qi.__importStar||function(t){if(t&&t.__esModule)return t;var e={};if(t!=null)for(var r in t)r!=="default"&&Object.prototype.hasOwnProperty.call(t,r)&&RZ(e,t,r);return NZ(e,t),e};Object.defineProperty(qi,"__esModule",{value:!0});qi.prepareKeyValueMessage=qi.issueFileCommand=void 0;var TZ=x4(require("crypto")),VR=x4(require("fs")),O4=x4(require("os")),GR=yg();function DZ(t,e){let r=process.env[`GITHUB_${t}`];if(!r)throw new Error(`Unable to find environment variable for file command ${t}`);if(!VR.existsSync(r))throw new Error(`Missing file at path: ${r}`);VR.appendFileSync(r,`${(0,GR.toCommandValue)(e)}${O4.EOL}`,{encoding:"utf8"})}qi.issueFileCommand=DZ;function kZ(t,e){let r=`ghadelimiter_${TZ.randomUUID()}`,n=(0,GR.toCommandValue)(e);if(t.includes(r))throw new Error(`Unexpected input: name should not contain the delimiter "${r}"`);if(n.includes(r))throw new Error(`Unexpected input: value should not contain the delimiter "${r}"`);return`${t}<<${r}${O4.EOL}${n}${O4.EOL}${r}`}qi.prepareKeyValueMessage=kZ});var JR=g(Ad=>{"use strict";Object.defineProperty(Ad,"__esModule",{value:!0});Ad.checkBypass=Ad.getProxyUrl=void 0;function PZ(t){let e=t.protocol==="https:";if(YR(t))return;let r=e?process.env.https_proxy||process.env.HTTPS_PROXY:process.env.http_proxy||process.env.HTTP_PROXY;if(r)try{return new Cg(r)}catch{if(!r.startsWith("http://")&&!r.startsWith("https://"))return new Cg(`http://${r}`)}else return}Ad.getProxyUrl=PZ;function YR(t){if(!t.hostname)return!1;let e=t.hostname;if(_Z(e))return!0;let r=process.env.no_proxy||process.env.NO_PROXY||"";if(!r)return!1;let n;t.port?n=Number(t.port):t.protocol==="http:"?n=80:t.protocol==="https:"&&(n=443);let i=[t.hostname.toUpperCase()];typeof n=="number"&&i.push(`${i[0]}:${n}`);for(let s of r.split(",").map(a=>a.trim().toUpperCase()).filter(a=>a))if(s==="*"||i.some(a=>a===s||a.endsWith(`.${s}`)||s.startsWith(".")&&a.endsWith(`${s}`)))return!0;return!1}Ad.checkBypass=YR;function _Z(t){let e=t.toLowerCase();return e==="localhost"||e.startsWith("127.")||e.startsWith("[::1]")||e.startsWith("[0:0:0:0:0:0:0:1]")}var Cg=class extends URL{constructor(e,r){super(e,r),this._decodedUsername=decodeURIComponent(super.username),this._decodedPassword=decodeURIComponent(super.password)}get username(){return this._decodedUsername}get password(){return this._decodedPassword}}});var $R=g(ld=>{"use strict";var GTe=require("net"),MZ=require("tls"),L4=require("http"),jR=require("https"),OZ=require("events"),HTe=require("assert"),xZ=require("util");ld.httpOverHttp=LZ;ld.httpsOverHttp=FZ;ld.httpOverHttps=UZ;ld.httpsOverHttps=qZ;function LZ(t){var e=new Oa(t);return e.request=L4.request,e}function FZ(t){var e=new Oa(t);return e.request=L4.request,e.createSocket=zR,e.defaultPort=443,e}function UZ(t){var e=new Oa(t);return e.request=jR.request,e}function qZ(t){var e=new Oa(t);return e.request=jR.request,e.createSocket=zR,e.defaultPort=443,e}function Oa(t){var e=this;e.options=t||{},e.proxyOptions=e.options.proxy||{},e.maxSockets=e.options.maxSockets||L4.Agent.defaultMaxSockets,e.requests=[],e.sockets=[],e.on("free",function(n,i,s,a){for(var o=WR(i,s,a),A=0,l=e.requests.length;A=this.maxSockets){s.requests.push(a);return}s.createSocket(a,function(o){o.on("free",A),o.on("close",l),o.on("agentRemove",l),e.onSocket(o);function A(){s.emit("free",o,a)}function l(c){s.removeSocket(o),o.removeListener("free",A),o.removeListener("close",l),o.removeListener("agentRemove",l)}})};Oa.prototype.createSocket=function(e,r){var n=this,i={};n.sockets.push(i);var s=F4({},n.proxyOptions,{method:"CONNECT",path:e.host+":"+e.port,agent:!1,headers:{host:e.host+":"+e.port}});e.localAddress&&(s.localAddress=e.localAddress),s.proxyAuth&&(s.headers=s.headers||{},s.headers["Proxy-Authorization"]="Basic "+new Buffer(s.proxyAuth).toString("base64")),Fo("making CONNECT request");var a=n.request(s);a.useChunkedEncodingByDefault=!1,a.once("response",o),a.once("upgrade",A),a.once("connect",l),a.once("error",c),a.end();function o(d){d.upgrade=!0}function A(d,p,u){process.nextTick(function(){l(d,p,u)})}function l(d,p,u){if(a.removeAllListeners(),p.removeAllListeners(),d.statusCode!==200){Fo("tunneling socket could not be established, statusCode=%d",d.statusCode),p.destroy();var m=new Error("tunneling socket could not be established, statusCode="+d.statusCode);m.code="ECONNRESET",e.request.emit("error",m),n.removeSocket(i);return}if(u.length>0){Fo("got illegal response body from proxy"),p.destroy();var m=new Error("got illegal response body from proxy");m.code="ECONNRESET",e.request.emit("error",m),n.removeSocket(i);return}return Fo("tunneling connection has established"),n.sockets[n.sockets.indexOf(i)]=p,r(p)}function c(d){a.removeAllListeners(),Fo(`tunneling socket could not be established, cause=%s -`,d.message,d.stack);var p=new Error("tunneling socket could not be established, cause="+d.message);p.code="ECONNRESET",e.request.emit("error",p),n.removeSocket(i)}};Oa.prototype.removeSocket=function(e){var r=this.sockets.indexOf(e);if(r!==-1){this.sockets.splice(r,1);var n=this.requests.shift();n&&this.createSocket(n,function(i){n.request.onSocket(i)})}};function zR(t,e){var r=this;Oa.prototype.createSocket.call(r,t,function(n){var i=t.request.getHeader("host"),s=F4({},r.options,{socket:n,servername:i?i.replace(/:.*$/,""):t.host}),a=MZ.connect(0,s);r.sockets[r.sockets.indexOf(n)]=a,e(a)})}function WR(t,e,r){return typeof t=="string"?{host:t,port:e,localAddress:r}:t}function F4(t){for(var e=1,r=arguments.length;e{KR.exports=$R()});var pt=g((jTe,ZR)=>{ZR.exports={kClose:Symbol("close"),kDestroy:Symbol("destroy"),kDispatch:Symbol("dispatch"),kUrl:Symbol("url"),kWriting:Symbol("writing"),kResuming:Symbol("resuming"),kQueue:Symbol("queue"),kConnect:Symbol("connect"),kConnecting:Symbol("connecting"),kHeadersList:Symbol("headers list"),kKeepAliveDefaultTimeout:Symbol("default keep alive timeout"),kKeepAliveMaxTimeout:Symbol("max keep alive timeout"),kKeepAliveTimeoutThreshold:Symbol("keep alive timeout threshold"),kKeepAliveTimeoutValue:Symbol("keep alive timeout"),kKeepAlive:Symbol("keep alive"),kHeadersTimeout:Symbol("headers timeout"),kBodyTimeout:Symbol("body timeout"),kServerName:Symbol("server name"),kLocalAddress:Symbol("local address"),kHost:Symbol("host"),kNoRef:Symbol("no ref"),kBodyUsed:Symbol("used"),kRunning:Symbol("running"),kBlocking:Symbol("blocking"),kPending:Symbol("pending"),kSize:Symbol("size"),kBusy:Symbol("busy"),kQueued:Symbol("queued"),kFree:Symbol("free"),kConnected:Symbol("connected"),kClosed:Symbol("closed"),kNeedDrain:Symbol("need drain"),kReset:Symbol("reset"),kDestroyed:Symbol.for("nodejs.stream.destroyed"),kMaxHeadersSize:Symbol("max headers size"),kRunningIdx:Symbol("running index"),kPendingIdx:Symbol("pending index"),kError:Symbol("error"),kClients:Symbol("clients"),kClient:Symbol("client"),kParser:Symbol("parser"),kOnDestroyed:Symbol("destroy callbacks"),kPipelining:Symbol("pipelining"),kSocket:Symbol("socket"),kHostHeader:Symbol("host header"),kConnector:Symbol("connector"),kStrictContentLength:Symbol("strict content length"),kMaxRedirections:Symbol("maxRedirections"),kMaxRequests:Symbol("maxRequestsPerClient"),kProxy:Symbol("proxy agent options"),kCounter:Symbol("socket request counter"),kInterceptors:Symbol("dispatch interceptors"),kMaxResponseSize:Symbol("max response size"),kHTTP2Session:Symbol("http2Session"),kHTTP2SessionState:Symbol("http2Session state"),kHTTP2BuildRequest:Symbol("http2 build request"),kHTTP1BuildRequest:Symbol("http1 build request"),kHTTP2CopyHeaders:Symbol("http2 copy headers"),kHTTPConnVersion:Symbol("http connection version"),kRetryHandlerDefaultRetry:Symbol("retry agent default retry"),kConstruct:Symbol("constructable")}});var ot=g((zTe,eN)=>{"use strict";var tr=class extends Error{constructor(e){super(e),this.name="UndiciError",this.code="UND_ERR"}},U4=class t extends tr{constructor(e){super(e),Error.captureStackTrace(this,t),this.name="ConnectTimeoutError",this.message=e||"Connect Timeout Error",this.code="UND_ERR_CONNECT_TIMEOUT"}},q4=class t extends tr{constructor(e){super(e),Error.captureStackTrace(this,t),this.name="HeadersTimeoutError",this.message=e||"Headers Timeout Error",this.code="UND_ERR_HEADERS_TIMEOUT"}},V4=class t extends tr{constructor(e){super(e),Error.captureStackTrace(this,t),this.name="HeadersOverflowError",this.message=e||"Headers Overflow Error",this.code="UND_ERR_HEADERS_OVERFLOW"}},G4=class t extends tr{constructor(e){super(e),Error.captureStackTrace(this,t),this.name="BodyTimeoutError",this.message=e||"Body Timeout Error",this.code="UND_ERR_BODY_TIMEOUT"}},H4=class t extends tr{constructor(e,r,n,i){super(e),Error.captureStackTrace(this,t),this.name="ResponseStatusCodeError",this.message=e||"Response Status Code Error",this.code="UND_ERR_RESPONSE_STATUS_CODE",this.body=i,this.status=r,this.statusCode=r,this.headers=n}},Y4=class t extends tr{constructor(e){super(e),Error.captureStackTrace(this,t),this.name="InvalidArgumentError",this.message=e||"Invalid Argument Error",this.code="UND_ERR_INVALID_ARG"}},J4=class t extends tr{constructor(e){super(e),Error.captureStackTrace(this,t),this.name="InvalidReturnValueError",this.message=e||"Invalid Return Value Error",this.code="UND_ERR_INVALID_RETURN_VALUE"}},j4=class t extends tr{constructor(e){super(e),Error.captureStackTrace(this,t),this.name="AbortError",this.message=e||"Request aborted",this.code="UND_ERR_ABORTED"}},z4=class t extends tr{constructor(e){super(e),Error.captureStackTrace(this,t),this.name="InformationalError",this.message=e||"Request information",this.code="UND_ERR_INFO"}},W4=class t extends tr{constructor(e){super(e),Error.captureStackTrace(this,t),this.name="RequestContentLengthMismatchError",this.message=e||"Request body length does not match content-length header",this.code="UND_ERR_REQ_CONTENT_LENGTH_MISMATCH"}},$4=class t extends tr{constructor(e){super(e),Error.captureStackTrace(this,t),this.name="ResponseContentLengthMismatchError",this.message=e||"Response body length does not match content-length header",this.code="UND_ERR_RES_CONTENT_LENGTH_MISMATCH"}},K4=class t extends tr{constructor(e){super(e),Error.captureStackTrace(this,t),this.name="ClientDestroyedError",this.message=e||"The client is destroyed",this.code="UND_ERR_DESTROYED"}},X4=class t extends tr{constructor(e){super(e),Error.captureStackTrace(this,t),this.name="ClientClosedError",this.message=e||"The client is closed",this.code="UND_ERR_CLOSED"}},Z4=class t extends tr{constructor(e,r){super(e),Error.captureStackTrace(this,t),this.name="SocketError",this.message=e||"Socket error",this.code="UND_ERR_SOCKET",this.socket=r}},Ig=class t extends tr{constructor(e){super(e),Error.captureStackTrace(this,t),this.name="NotSupportedError",this.message=e||"Not supported error",this.code="UND_ERR_NOT_SUPPORTED"}},e6=class extends tr{constructor(e){super(e),Error.captureStackTrace(this,Ig),this.name="MissingUpstreamError",this.message=e||"No upstream has been added to the BalancedPool",this.code="UND_ERR_BPL_MISSING_UPSTREAM"}},t6=class t extends Error{constructor(e,r,n){super(e),Error.captureStackTrace(this,t),this.name="HTTPParserError",this.code=r?`HPE_${r}`:void 0,this.data=n?n.toString():void 0}},r6=class t extends tr{constructor(e){super(e),Error.captureStackTrace(this,t),this.name="ResponseExceededMaxSizeError",this.message=e||"Response content exceeded max size",this.code="UND_ERR_RES_EXCEEDED_MAX_SIZE"}},n6=class t extends tr{constructor(e,r,{headers:n,data:i}){super(e),Error.captureStackTrace(this,t),this.name="RequestRetryError",this.message=e||"Request retry error",this.code="UND_ERR_REQ_RETRY",this.statusCode=r,this.data=i,this.headers=n}};eN.exports={HTTPParserError:t6,UndiciError:tr,HeadersTimeoutError:q4,HeadersOverflowError:V4,BodyTimeoutError:G4,RequestContentLengthMismatchError:W4,ConnectTimeoutError:U4,ResponseStatusCodeError:H4,InvalidArgumentError:Y4,InvalidReturnValueError:J4,RequestAbortedError:j4,ClientDestroyedError:K4,ClientClosedError:X4,InformationalError:z4,SocketError:Z4,NotSupportedError:Ig,ResponseContentLengthMismatchError:$4,BalancedPoolMissingUpstreamError:e6,ResponseExceededMaxSizeError:r6,RequestRetryError:n6}});var rN=g((WTe,tN)=>{"use strict";var Bg={},i6=["Accept","Accept-Encoding","Accept-Language","Accept-Ranges","Access-Control-Allow-Credentials","Access-Control-Allow-Headers","Access-Control-Allow-Methods","Access-Control-Allow-Origin","Access-Control-Expose-Headers","Access-Control-Max-Age","Access-Control-Request-Headers","Access-Control-Request-Method","Age","Allow","Alt-Svc","Alt-Used","Authorization","Cache-Control","Clear-Site-Data","Connection","Content-Disposition","Content-Encoding","Content-Language","Content-Length","Content-Location","Content-Range","Content-Security-Policy","Content-Security-Policy-Report-Only","Content-Type","Cookie","Cross-Origin-Embedder-Policy","Cross-Origin-Opener-Policy","Cross-Origin-Resource-Policy","Date","Device-Memory","Downlink","ECT","ETag","Expect","Expect-CT","Expires","Forwarded","From","Host","If-Match","If-Modified-Since","If-None-Match","If-Range","If-Unmodified-Since","Keep-Alive","Last-Modified","Link","Location","Max-Forwards","Origin","Permissions-Policy","Pragma","Proxy-Authenticate","Proxy-Authorization","RTT","Range","Referer","Referrer-Policy","Refresh","Retry-After","Sec-WebSocket-Accept","Sec-WebSocket-Extensions","Sec-WebSocket-Key","Sec-WebSocket-Protocol","Sec-WebSocket-Version","Server","Server-Timing","Service-Worker-Allowed","Service-Worker-Navigation-Preload","Set-Cookie","SourceMap","Strict-Transport-Security","Supports-Loading-Mode","TE","Timing-Allow-Origin","Trailer","Transfer-Encoding","Upgrade","Upgrade-Insecure-Requests","User-Agent","Vary","Via","WWW-Authenticate","X-Content-Type-Options","X-DNS-Prefetch-Control","X-Frame-Options","X-Permitted-Cross-Domain-Policies","X-Powered-By","X-Requested-With","X-XSS-Protection"];for(let t=0;t{"use strict";var aN=require("assert"),{kDestroyed:oN,kBodyUsed:nN}=pt(),{IncomingMessage:VZ}=require("http"),cd=require("stream"),GZ=require("net"),{InvalidArgumentError:qr}=ot(),{Blob:iN}=require("buffer"),Qg=require("util"),{stringify:HZ}=require("querystring"),{headerNameLowerCasedRecord:YZ}=rN(),[s6,sN]=process.versions.node.split(".").map(t=>Number(t));function JZ(){}function a6(t){return t&&typeof t=="object"&&typeof t.pipe=="function"&&typeof t.on=="function"}function AN(t){return iN&&t instanceof iN||t&&typeof t=="object"&&(typeof t.stream=="function"||typeof t.arrayBuffer=="function")&&/^(Blob|File)$/.test(t[Symbol.toStringTag])}function jZ(t,e){if(t.includes("?")||t.includes("#"))throw new Error('Query params cannot be passed when url already contains "?" or "#".');let r=HZ(e);return r&&(t+="?"+r),t}function lN(t){if(typeof t=="string"){if(t=new URL(t),!/^https?:/.test(t.origin||t.protocol))throw new qr("Invalid URL protocol: the URL must start with `http:` or `https:`.");return t}if(!t||typeof t!="object")throw new qr("Invalid URL: The URL argument must be a non-null object.");if(!/^https?:/.test(t.origin||t.protocol))throw new qr("Invalid URL protocol: the URL must start with `http:` or `https:`.");if(!(t instanceof URL)){if(t.port!=null&&t.port!==""&&!Number.isFinite(parseInt(t.port)))throw new qr("Invalid URL: port must be a valid integer or a string representation of an integer.");if(t.path!=null&&typeof t.path!="string")throw new qr("Invalid URL path: the path must be a string or null/undefined.");if(t.pathname!=null&&typeof t.pathname!="string")throw new qr("Invalid URL pathname: the pathname must be a string or null/undefined.");if(t.hostname!=null&&typeof t.hostname!="string")throw new qr("Invalid URL hostname: the hostname must be a string or null/undefined.");if(t.origin!=null&&typeof t.origin!="string")throw new qr("Invalid URL origin: the origin must be a string or null/undefined.");let e=t.port!=null?t.port:t.protocol==="https:"?443:80,r=t.origin!=null?t.origin:`${t.protocol}//${t.hostname}:${e}`,n=t.path!=null?t.path:`${t.pathname||""}${t.search||""}`;r.endsWith("/")&&(r=r.substring(0,r.length-1)),n&&!n.startsWith("/")&&(n=`/${n}`),t=new URL(r+n)}return t}function zZ(t){if(t=lN(t),t.pathname!=="/"||t.search||t.hash)throw new qr("invalid url");return t}function WZ(t){if(t[0]==="["){let r=t.indexOf("]");return aN(r!==-1),t.substring(1,r)}let e=t.indexOf(":");return e===-1?t:t.substring(0,e)}function $Z(t){if(!t)return null;aN.strictEqual(typeof t,"string");let e=WZ(t);return GZ.isIP(e)?"":e}function KZ(t){return JSON.parse(JSON.stringify(t))}function XZ(t){return t!=null&&typeof t[Symbol.asyncIterator]=="function"}function ZZ(t){return t!=null&&(typeof t[Symbol.iterator]=="function"||typeof t[Symbol.asyncIterator]=="function")}function eee(t){if(t==null)return 0;if(a6(t)){let e=t._readableState;return e&&e.objectMode===!1&&e.ended===!0&&Number.isFinite(e.length)?e.length:null}else{if(AN(t))return t.size!=null?t.size:null;if(dN(t))return t.byteLength}return null}function o6(t){return!t||!!(t.destroyed||t[oN])}function cN(t){let e=t&&t._readableState;return o6(t)&&e&&!e.endEmitted}function tee(t,e){t==null||!a6(t)||o6(t)||(typeof t.destroy=="function"?(Object.getPrototypeOf(t).constructor===VZ&&(t.socket=null),t.destroy(e)):e&&process.nextTick((r,n)=>{r.emit("error",n)},t,e),t.destroyed!==!0&&(t[oN]=!0))}var ree=/timeout=(\d+)/;function nee(t){let e=t.toString().match(ree);return e?parseInt(e[1],10)*1e3:null}function iee(t){return YZ[t]||t.toLowerCase()}function see(t,e={}){if(!Array.isArray(t))return t;for(let r=0;rs.toString("utf8")):e[n]=t[r+1].toString("utf8")}return"content-length"in e&&"content-disposition"in e&&(e["content-disposition"]=Buffer.from(e["content-disposition"]).toString("latin1")),e}function aee(t){let e=[],r=!1,n=-1;for(let i=0;i{r.close()});else{let s=Buffer.isBuffer(i)?i:Buffer.from(i);r.enqueue(new Uint8Array(s))}return r.desiredSize>0},async cancel(r){await e.return()}},0)}function mee(t){return t&&typeof t=="object"&&typeof t.append=="function"&&typeof t.delete=="function"&&typeof t.get=="function"&&typeof t.getAll=="function"&&typeof t.has=="function"&&typeof t.set=="function"&&t[Symbol.toStringTag]==="FormData"}function hee(t){if(t){if(typeof t.throwIfAborted=="function")t.throwIfAborted();else if(t.aborted){let e=new Error("The operation was aborted");throw e.name="AbortError",e}}}function fee(t,e){return"addEventListener"in t?(t.addEventListener("abort",e,{once:!0}),()=>t.removeEventListener("abort",e)):(t.addListener("abort",e),()=>t.removeListener("abort",e))}var gee=!!String.prototype.toWellFormed;function Eee(t){return gee?`${t}`.toWellFormed():Qg.toUSVString?Qg.toUSVString(t):`${t}`}function yee(t){if(t==null||t==="")return{start:0,end:null,size:null};let e=t?t.match(/^bytes (\d+)-(\d+)\/(\d+)?$/):null;return e?{start:parseInt(e[1]),end:e[2]?parseInt(e[2]):null,size:e[3]?parseInt(e[3]):null}:null}var pN=Object.create(null);pN.enumerable=!0;uN.exports={kEnumerableProperty:pN,nop:JZ,isDisturbed:Aee,isErrored:lee,isReadable:cee,toUSVString:Eee,isReadableAborted:cN,isBlobLike:AN,parseOrigin:zZ,parseURL:lN,getServerName:$Z,isStream:a6,isIterable:ZZ,isAsyncIterable:XZ,isDestroyed:o6,headerNameToString:iee,parseRawHeaders:aee,parseHeaders:see,parseKeepAliveTimeout:nee,destroy:tee,bodyLength:eee,deepClone:KZ,ReadableStreamFrom:uee,isBuffer:dN,validateHandler:oee,getSocketInfo:dee,isFormDataLike:mee,buildURL:jZ,throwIfAborted:hee,addAbortListener:fee,parseRangeHeader:yee,nodeMajor:s6,nodeMinor:sN,nodeHasAutoSelectFamily:s6>18||s6===18&&sN>=13,safeHTTPMethods:["GET","HEAD","OPTIONS","TRACE"]}});var fN=g((KTe,hN)=>{"use strict";var A6=Date.now(),Uo,qo=[];function Cee(){A6=Date.now();let t=qo.length,e=0;for(;e0&&A6>=r.state&&(r.state=-1,r.callback(r.opaque)),r.state===-1?(r.state=-2,e!==t-1?qo[e]=qo.pop():qo.pop(),t-=1):e+=1}qo.length>0&&mN()}function mN(){Uo&&Uo.refresh?Uo.refresh():(clearTimeout(Uo),Uo=setTimeout(Cee,1e3),Uo.unref&&Uo.unref())}var wg=class{constructor(e,r,n){this.callback=e,this.delay=r,this.opaque=n,this.state=-2,this.refresh()}refresh(){this.state===-2&&(qo.push(this),(!Uo||qo.length===1)&&mN()),this.state=0}clear(){this.state=-1}};hN.exports={setTimeout(t,e,r){return e<1e3?setTimeout(t,e,r):new wg(t,e,r)},clearTimeout(t){t instanceof wg?t.clear():clearTimeout(t)}}});var l6=g((XTe,gN)=>{"use strict";var Iee=require("node:events").EventEmitter,Bee=require("node:util").inherits;function sl(t){if(typeof t=="string"&&(t=Buffer.from(t)),!Buffer.isBuffer(t))throw new TypeError("The needle has to be a String or a Buffer.");let e=t.length;if(e===0)throw new Error("The needle cannot be an empty String/Buffer.");if(e>256)throw new Error("The needle cannot have a length bigger than 256.");this.maxMatches=1/0,this.matches=0,this._occ=new Array(256).fill(e),this._lookbehind_size=0,this._needle=t,this._bufpos=0,this._lookbehind=Buffer.alloc(e);for(var r=0;r=0)this.emit("info",!1,this._lookbehind,0,this._lookbehind_size),this._lookbehind_size=0;else{let o=this._lookbehind_size+s;return o>0&&this.emit("info",!1,this._lookbehind,0,o),this._lookbehind.copy(this._lookbehind,0,o,this._lookbehind_size-o),this._lookbehind_size-=o,t.copy(this._lookbehind,this._lookbehind_size),this._lookbehind_size+=e,this._bufpos=e,e}}if(s+=(s>=0)*this._bufpos,t.indexOf(r,s)!==-1)return s=t.indexOf(r,s),++this.matches,s>0?this.emit("info",!0,t,this._bufpos,s):this.emit("info",!0),this._bufpos=s+n;for(s=e-n;s0&&this.emit("info",!1,t,this._bufpos,s{"use strict";var Qee=require("node:util").inherits,EN=require("node:stream").Readable;function c6(t){EN.call(this,t)}Qee(c6,EN);c6.prototype._read=function(t){};yN.exports=c6});var Sg=g((eDe,IN)=>{"use strict";IN.exports=function(e,r,n){if(!e||e[r]===void 0||e[r]===null)return n;if(typeof e[r]!="number"||isNaN(e[r]))throw new TypeError("Limit "+r+" is not a valid number");return e[r]}});var SN=g((tDe,wN)=>{"use strict";var QN=require("node:events").EventEmitter,wee=require("node:util").inherits,BN=Sg(),See=l6(),bee=Buffer.from(`\r -\r -`),vee=/\r\n/g,Ree=/^([^:]+):[ \t]?([\x00-\xFF]+)?$/;function dd(t){QN.call(this),t=t||{};let e=this;this.nread=0,this.maxed=!1,this.npairs=0,this.maxHeaderPairs=BN(t,"maxHeaderPairs",2e3),this.maxHeaderSize=BN(t,"maxHeaderSize",80*1024),this.buffer="",this.header={},this.finished=!1,this.ss=new See(bee),this.ss.on("info",function(r,n,i,s){n&&!e.maxed&&(e.nread+s-i>=e.maxHeaderSize?(s=e.maxHeaderSize-e.nread+i,e.nread=e.maxHeaderSize,e.maxed=!0):e.nread+=s-i,e.buffer+=n.toString("binary",i,s)),r&&e._finish()})}wee(dd,QN);dd.prototype.push=function(t){let e=this.ss.push(t);if(this.finished)return e};dd.prototype.reset=function(){this.finished=!1,this.buffer="",this.header={},this.ss.reset()};dd.prototype._finish=function(){this.buffer&&this._parseHeader(),this.ss.matches=this.ss.maxMatches;let t=this.header;this.header={},this.buffer="",this.finished=!0,this.nread=this.npairs=0,this.maxed=!1,this.emit("header",t)};dd.prototype._parseHeader=function(){if(this.npairs===this.maxHeaderPairs)return;let t=this.buffer.split(vee),e=t.length,r,n;for(var i=0;i{"use strict";var d6=require("node:stream").Writable,Nee=require("node:util").inherits,Tee=l6(),bN=CN(),Dee=SN(),kee=45,Pee=Buffer.from("-"),_ee=Buffer.from(`\r -`),Mee=function(){};function gs(t){if(!(this instanceof gs))return new gs(t);if(d6.call(this,t),!t||!t.headerFirst&&typeof t.boundary!="string")throw new TypeError("Boundary required");typeof t.boundary=="string"?this.setBoundary(t.boundary):this._bparser=void 0,this._headerFirst=t.headerFirst,this._dashes=0,this._parts=0,this._finished=!1,this._realFinish=!1,this._isPreamble=!0,this._justMatched=!1,this._firstWrite=!0,this._inHeader=!0,this._part=void 0,this._cb=void 0,this._ignoreData=!1,this._partOpts={highWaterMark:t.partHwm},this._pause=!1;let e=this;this._hparser=new Dee(t),this._hparser.on("header",function(r){e._inHeader=!1,e._part.emit("header",r)})}Nee(gs,d6);gs.prototype.emit=function(t){if(t==="finish"&&!this._realFinish){if(!this._finished){let e=this;process.nextTick(function(){if(e.emit("error",new Error("Unexpected end of multipart data")),e._part&&!e._ignoreData){let r=e._isPreamble?"Preamble":"Part";e._part.emit("error",new Error(r+" terminated early due to unexpected end of multipart data")),e._part.push(null),process.nextTick(function(){e._realFinish=!0,e.emit("finish"),e._realFinish=!1});return}e._realFinish=!0,e.emit("finish"),e._realFinish=!1})}}else d6.prototype.emit.apply(this,arguments)};gs.prototype._write=function(t,e,r){if(!this._hparser&&!this._bparser)return r();if(this._headerFirst&&this._isPreamble){this._part||(this._part=new bN(this._partOpts),this.listenerCount("preamble")!==0?this.emit("preamble",this._part):this._ignore());let n=this._hparser.push(t);if(!this._inHeader&&n!==void 0&&n{"use strict";var RN=new TextDecoder("utf-8"),NN=new Map([["utf-8",RN],["utf8",RN]]);function Oee(t){let e;for(;;)switch(t){case"utf-8":case"utf8":return Im.utf8;case"latin1":case"ascii":case"us-ascii":case"iso-8859-1":case"iso8859-1":case"iso88591":case"iso_8859-1":case"windows-1252":case"iso_8859-1:1987":case"cp1252":case"x-cp1252":return Im.latin1;case"utf16le":case"utf-16le":case"ucs2":case"ucs-2":return Im.utf16le;case"base64":return Im.base64;default:if(e===void 0){e=!0,t=t.toLowerCase();continue}return Im.other.bind(t)}}var Im={utf8:(t,e)=>t.length===0?"":(typeof t=="string"&&(t=Buffer.from(t,e)),t.utf8Slice(0,t.length)),latin1:(t,e)=>t.length===0?"":typeof t=="string"?t:t.latin1Slice(0,t.length),utf16le:(t,e)=>t.length===0?"":(typeof t=="string"&&(t=Buffer.from(t,e)),t.ucs2Slice(0,t.length)),base64:(t,e)=>t.length===0?"":(typeof t=="string"&&(t=Buffer.from(t,e)),t.base64Slice(0,t.length)),other:(t,e)=>{if(t.length===0)return"";if(typeof t=="string"&&(t=Buffer.from(t,e)),NN.has(u6.toString()))try{return NN.get(u6).decode(t)}catch{}return typeof t=="string"?t:t.toString()}};function xee(t,e,r){return t&&Oee(r)(t,e)}TN.exports=xee});var h6=g((nDe,MN)=>{"use strict";var vg=bg(),DN=/%[a-fA-F0-9][a-fA-F0-9]/g,Lee={"%00":"\0","%01":"","%02":"","%03":"","%04":"","%05":"","%06":"","%07":"\x07","%08":"\b","%09":" ","%0a":` -`,"%0A":` -`,"%0b":"\v","%0B":"\v","%0c":"\f","%0C":"\f","%0d":"\r","%0D":"\r","%0e":"","%0E":"","%0f":"","%0F":"","%10":"","%11":"","%12":"","%13":"","%14":"","%15":"","%16":"","%17":"","%18":"","%19":"","%1a":"","%1A":"","%1b":"\x1B","%1B":"\x1B","%1c":"","%1C":"","%1d":"","%1D":"","%1e":"","%1E":"","%1f":"","%1F":"","%20":" ","%21":"!","%22":'"',"%23":"#","%24":"$","%25":"%","%26":"&","%27":"'","%28":"(","%29":")","%2a":"*","%2A":"*","%2b":"+","%2B":"+","%2c":",","%2C":",","%2d":"-","%2D":"-","%2e":".","%2E":".","%2f":"/","%2F":"/","%30":"0","%31":"1","%32":"2","%33":"3","%34":"4","%35":"5","%36":"6","%37":"7","%38":"8","%39":"9","%3a":":","%3A":":","%3b":";","%3B":";","%3c":"<","%3C":"<","%3d":"=","%3D":"=","%3e":">","%3E":">","%3f":"?","%3F":"?","%40":"@","%41":"A","%42":"B","%43":"C","%44":"D","%45":"E","%46":"F","%47":"G","%48":"H","%49":"I","%4a":"J","%4A":"J","%4b":"K","%4B":"K","%4c":"L","%4C":"L","%4d":"M","%4D":"M","%4e":"N","%4E":"N","%4f":"O","%4F":"O","%50":"P","%51":"Q","%52":"R","%53":"S","%54":"T","%55":"U","%56":"V","%57":"W","%58":"X","%59":"Y","%5a":"Z","%5A":"Z","%5b":"[","%5B":"[","%5c":"\\","%5C":"\\","%5d":"]","%5D":"]","%5e":"^","%5E":"^","%5f":"_","%5F":"_","%60":"`","%61":"a","%62":"b","%63":"c","%64":"d","%65":"e","%66":"f","%67":"g","%68":"h","%69":"i","%6a":"j","%6A":"j","%6b":"k","%6B":"k","%6c":"l","%6C":"l","%6d":"m","%6D":"m","%6e":"n","%6E":"n","%6f":"o","%6F":"o","%70":"p","%71":"q","%72":"r","%73":"s","%74":"t","%75":"u","%76":"v","%77":"w","%78":"x","%79":"y","%7a":"z","%7A":"z","%7b":"{","%7B":"{","%7c":"|","%7C":"|","%7d":"}","%7D":"}","%7e":"~","%7E":"~","%7f":"\x7F","%7F":"\x7F","%80":"\x80","%81":"\x81","%82":"\x82","%83":"\x83","%84":"\x84","%85":"\x85","%86":"\x86","%87":"\x87","%88":"\x88","%89":"\x89","%8a":"\x8A","%8A":"\x8A","%8b":"\x8B","%8B":"\x8B","%8c":"\x8C","%8C":"\x8C","%8d":"\x8D","%8D":"\x8D","%8e":"\x8E","%8E":"\x8E","%8f":"\x8F","%8F":"\x8F","%90":"\x90","%91":"\x91","%92":"\x92","%93":"\x93","%94":"\x94","%95":"\x95","%96":"\x96","%97":"\x97","%98":"\x98","%99":"\x99","%9a":"\x9A","%9A":"\x9A","%9b":"\x9B","%9B":"\x9B","%9c":"\x9C","%9C":"\x9C","%9d":"\x9D","%9D":"\x9D","%9e":"\x9E","%9E":"\x9E","%9f":"\x9F","%9F":"\x9F","%a0":"\xA0","%A0":"\xA0","%a1":"\xA1","%A1":"\xA1","%a2":"\xA2","%A2":"\xA2","%a3":"\xA3","%A3":"\xA3","%a4":"\xA4","%A4":"\xA4","%a5":"\xA5","%A5":"\xA5","%a6":"\xA6","%A6":"\xA6","%a7":"\xA7","%A7":"\xA7","%a8":"\xA8","%A8":"\xA8","%a9":"\xA9","%A9":"\xA9","%aa":"\xAA","%Aa":"\xAA","%aA":"\xAA","%AA":"\xAA","%ab":"\xAB","%Ab":"\xAB","%aB":"\xAB","%AB":"\xAB","%ac":"\xAC","%Ac":"\xAC","%aC":"\xAC","%AC":"\xAC","%ad":"\xAD","%Ad":"\xAD","%aD":"\xAD","%AD":"\xAD","%ae":"\xAE","%Ae":"\xAE","%aE":"\xAE","%AE":"\xAE","%af":"\xAF","%Af":"\xAF","%aF":"\xAF","%AF":"\xAF","%b0":"\xB0","%B0":"\xB0","%b1":"\xB1","%B1":"\xB1","%b2":"\xB2","%B2":"\xB2","%b3":"\xB3","%B3":"\xB3","%b4":"\xB4","%B4":"\xB4","%b5":"\xB5","%B5":"\xB5","%b6":"\xB6","%B6":"\xB6","%b7":"\xB7","%B7":"\xB7","%b8":"\xB8","%B8":"\xB8","%b9":"\xB9","%B9":"\xB9","%ba":"\xBA","%Ba":"\xBA","%bA":"\xBA","%BA":"\xBA","%bb":"\xBB","%Bb":"\xBB","%bB":"\xBB","%BB":"\xBB","%bc":"\xBC","%Bc":"\xBC","%bC":"\xBC","%BC":"\xBC","%bd":"\xBD","%Bd":"\xBD","%bD":"\xBD","%BD":"\xBD","%be":"\xBE","%Be":"\xBE","%bE":"\xBE","%BE":"\xBE","%bf":"\xBF","%Bf":"\xBF","%bF":"\xBF","%BF":"\xBF","%c0":"\xC0","%C0":"\xC0","%c1":"\xC1","%C1":"\xC1","%c2":"\xC2","%C2":"\xC2","%c3":"\xC3","%C3":"\xC3","%c4":"\xC4","%C4":"\xC4","%c5":"\xC5","%C5":"\xC5","%c6":"\xC6","%C6":"\xC6","%c7":"\xC7","%C7":"\xC7","%c8":"\xC8","%C8":"\xC8","%c9":"\xC9","%C9":"\xC9","%ca":"\xCA","%Ca":"\xCA","%cA":"\xCA","%CA":"\xCA","%cb":"\xCB","%Cb":"\xCB","%cB":"\xCB","%CB":"\xCB","%cc":"\xCC","%Cc":"\xCC","%cC":"\xCC","%CC":"\xCC","%cd":"\xCD","%Cd":"\xCD","%cD":"\xCD","%CD":"\xCD","%ce":"\xCE","%Ce":"\xCE","%cE":"\xCE","%CE":"\xCE","%cf":"\xCF","%Cf":"\xCF","%cF":"\xCF","%CF":"\xCF","%d0":"\xD0","%D0":"\xD0","%d1":"\xD1","%D1":"\xD1","%d2":"\xD2","%D2":"\xD2","%d3":"\xD3","%D3":"\xD3","%d4":"\xD4","%D4":"\xD4","%d5":"\xD5","%D5":"\xD5","%d6":"\xD6","%D6":"\xD6","%d7":"\xD7","%D7":"\xD7","%d8":"\xD8","%D8":"\xD8","%d9":"\xD9","%D9":"\xD9","%da":"\xDA","%Da":"\xDA","%dA":"\xDA","%DA":"\xDA","%db":"\xDB","%Db":"\xDB","%dB":"\xDB","%DB":"\xDB","%dc":"\xDC","%Dc":"\xDC","%dC":"\xDC","%DC":"\xDC","%dd":"\xDD","%Dd":"\xDD","%dD":"\xDD","%DD":"\xDD","%de":"\xDE","%De":"\xDE","%dE":"\xDE","%DE":"\xDE","%df":"\xDF","%Df":"\xDF","%dF":"\xDF","%DF":"\xDF","%e0":"\xE0","%E0":"\xE0","%e1":"\xE1","%E1":"\xE1","%e2":"\xE2","%E2":"\xE2","%e3":"\xE3","%E3":"\xE3","%e4":"\xE4","%E4":"\xE4","%e5":"\xE5","%E5":"\xE5","%e6":"\xE6","%E6":"\xE6","%e7":"\xE7","%E7":"\xE7","%e8":"\xE8","%E8":"\xE8","%e9":"\xE9","%E9":"\xE9","%ea":"\xEA","%Ea":"\xEA","%eA":"\xEA","%EA":"\xEA","%eb":"\xEB","%Eb":"\xEB","%eB":"\xEB","%EB":"\xEB","%ec":"\xEC","%Ec":"\xEC","%eC":"\xEC","%EC":"\xEC","%ed":"\xED","%Ed":"\xED","%eD":"\xED","%ED":"\xED","%ee":"\xEE","%Ee":"\xEE","%eE":"\xEE","%EE":"\xEE","%ef":"\xEF","%Ef":"\xEF","%eF":"\xEF","%EF":"\xEF","%f0":"\xF0","%F0":"\xF0","%f1":"\xF1","%F1":"\xF1","%f2":"\xF2","%F2":"\xF2","%f3":"\xF3","%F3":"\xF3","%f4":"\xF4","%F4":"\xF4","%f5":"\xF5","%F5":"\xF5","%f6":"\xF6","%F6":"\xF6","%f7":"\xF7","%F7":"\xF7","%f8":"\xF8","%F8":"\xF8","%f9":"\xF9","%F9":"\xF9","%fa":"\xFA","%Fa":"\xFA","%fA":"\xFA","%FA":"\xFA","%fb":"\xFB","%Fb":"\xFB","%fB":"\xFB","%FB":"\xFB","%fc":"\xFC","%Fc":"\xFC","%fC":"\xFC","%FC":"\xFC","%fd":"\xFD","%Fd":"\xFD","%fD":"\xFD","%FD":"\xFD","%fe":"\xFE","%Fe":"\xFE","%fE":"\xFE","%FE":"\xFE","%ff":"\xFF","%Ff":"\xFF","%fF":"\xFF","%FF":"\xFF"};function kN(t){return Lee[t]}var Rg=0,PN=1,m6=2,_N=3;function Fee(t){let e=[],r=Rg,n="",i=!1,s=!1,a=0,o="",A=t.length;for(var l=0;l{"use strict";ON.exports=function(e){if(typeof e!="string")return"";for(var r=e.length-1;r>=0;--r)switch(e.charCodeAt(r)){case 47:case 92:return e=e.slice(r+1),e===".."||e==="."?"":e}return e===".."||e==="."?"":e}});var qN=g((sDe,UN)=>{"use strict";var{Readable:FN}=require("node:stream"),{inherits:Uee}=require("node:util"),qee=p6(),LN=h6(),Vee=bg(),Gee=xN(),al=Sg(),Hee=/^boundary$/i,Yee=/^form-data$/i,Jee=/^charset$/i,jee=/^filename$/i,zee=/^name$/i;Ng.detect=/^multipart\/form-data/i;function Ng(t,e){let r,n,i=this,s,a=e.limits,o=e.isPartAFile||((V,O,ye)=>O==="application/octet-stream"||ye!==void 0),A=e.parsedConType||[],l=e.defCharset||"utf8",c=e.preservePath,d={highWaterMark:e.fileHwm};for(r=0,n=A.length;rE)return i.parser.removeListener("part",V),i.parser.on("part",pd),t.hitPartsLimit=!0,t.emit("partsLimit"),pd(O);if(v){let ye=v;ye.emit("end"),ye.removeAllListeners("end")}O.on("header",function(ye){let Ze,Oi,Er,hs,il,Oo,xi=0;if(ye["content-type"]&&(Er=LN(ye["content-type"][0]),Er[0])){for(Ze=Er[0].toLowerCase(),r=0,n=Er.length;rm){let Li=m-xi+di.length;Li>0&&cr.push(di.slice(0,Li)),cr.truncated=!0,cr.bytesRead=m,O.removeAllListeners("data"),cr.emit("limit");return}else cr.push(di)||(i._pause=!0);cr.bytesRead=xi},fm=function(){b=void 0,cr.push(null)}}else{if(C===f)return t.hitFieldsLimit||(t.hitFieldsLimit=!0,t.emit("fieldsLimit")),pd(O);++C,++w;let cr="",di=!1;v=O,id=function(Li){if((xi+=Li.length)>u){let D4=u-(xi-Li.length);cr+=Li.toString("binary",0,D4),di=!0,O.removeAllListeners("data")}else cr+=Li.toString("binary")},fm=function(){v=void 0,cr.length&&(cr=Vee(cr,"binary",hs)),t.emit("field",Oi,cr,!1,di,il,Ze),--w,p()}}O._readableState.sync=!1,O.on("data",id),O.on("end",fm)}).on("error",function(ye){b&&b.emit("error",ye)})}).on("error",function(V){t.emit("error",V)}).on("finish",function(){q=!0,p()})}Ng.prototype.write=function(t,e){let r=this.parser.write(t);r&&!this._pause?e():(this._needDrain=!r,this._cb=e)};Ng.prototype.end=function(){let t=this;t.parser.writable?t.parser.end():t._boy._done||process.nextTick(function(){t._boy._done=!0,t._boy.emit("finish")})};function pd(t){t.resume()}function f6(t){FN.call(this,t),this.bytesRead=0,this.truncated=!1}Uee(f6,FN);f6.prototype._read=function(t){};UN.exports=Ng});var GN=g((aDe,VN)=>{"use strict";var Wee=/\+/g,$ee=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0];function g6(){this.buffer=void 0}g6.prototype.write=function(t){t=t.replace(Wee," ");let e="",r=0,n=0,i=t.length;for(;rn&&(e+=t.substring(n,r),n=r),this.buffer="",++n);return n{"use strict";var Kee=GN(),ud=bg(),E6=Sg(),Xee=/^charset$/i;Tg.detect=/^application\/x-www-form-urlencoded/i;function Tg(t,e){let r=e.limits,n=e.parsedConType;this.boy=t,this.fieldSizeLimit=E6(r,"fieldSize",1*1024*1024),this.fieldNameSizeLimit=E6(r,"fieldNameSize",100),this.fieldsLimit=E6(r,"fields",1/0);let i;for(var s=0,a=n.length;ss&&(this._key+=this.decoder.write(t.toString("binary",s,r))),this._state="val",this._hitLimit=!1,this._checkingBytes=!0,this._val="",this._bytesVal=0,this._valTrunc=!1,this.decoder.reset(),s=r+1;else if(n!==void 0){++this._fields;let o,A=this._keyTrunc;if(n>s?o=this._key+=this.decoder.write(t.toString("binary",s,n)):o=this._key,this._hitLimit=!1,this._checkingBytes=!0,this._key="",this._bytesKey=0,this._keyTrunc=!1,this.decoder.reset(),o.length&&this.boy.emit("field",ud(o,"binary",this.charset),"",A,!1),s=n+1,this._fields===this.fieldsLimit)return e()}else this._hitLimit?(i>s&&(this._key+=this.decoder.write(t.toString("binary",s,i))),s=i,(this._bytesKey=this._key.length)===this.fieldNameSizeLimit&&(this._checkingBytes=!1,this._keyTrunc=!0)):(ss&&(this._val+=this.decoder.write(t.toString("binary",s,n))),this.boy.emit("field",ud(this._key,"binary",this.charset),ud(this._val,"binary",this.charset),this._keyTrunc,this._valTrunc),this._state="key",this._hitLimit=!1,this._checkingBytes=!0,this._key="",this._bytesKey=0,this._keyTrunc=!1,this.decoder.reset(),s=n+1,this._fields===this.fieldsLimit)return e()}else this._hitLimit?(i>s&&(this._val+=this.decoder.write(t.toString("binary",s,i))),s=i,(this._val===""&&this.fieldSizeLimit===0||(this._bytesVal=this._val.length)===this.fieldSizeLimit)&&(this._checkingBytes=!1,this._valTrunc=!0)):(s0?this.boy.emit("field",ud(this._key,"binary",this.charset),"",this._keyTrunc,!1):this._state==="val"&&this.boy.emit("field",ud(this._key,"binary",this.charset),ud(this._val,"binary",this.charset),this._keyTrunc,this._valTrunc),this.boy._done=!0,this.boy.emit("finish"))};HN.exports=Tg});var zN=g((ADe,Bm)=>{"use strict";var y6=require("node:stream").Writable,{inherits:Zee}=require("node:util"),ete=p6(),JN=qN(),jN=YN(),tte=h6();function xa(t){if(!(this instanceof xa))return new xa(t);if(typeof t!="object")throw new TypeError("Busboy expected an options-Object.");if(typeof t.headers!="object")throw new TypeError("Busboy expected an options-Object with headers-attribute.");if(typeof t.headers["content-type"]!="string")throw new TypeError("Missing Content-Type-header.");let{headers:e,...r}=t;this.opts={autoDestroy:!1,...r},y6.call(this,this.opts),this._done=!1,this._parser=this.getParserByHeaders(e),this._finished=!1}Zee(xa,y6);xa.prototype.emit=function(t){if(t==="finish"){if(this._done){if(this._finished)return}else{this._parser?.end();return}this._finished=!0}y6.prototype.emit.apply(this,arguments)};xa.prototype.getParserByHeaders=function(t){let e=tte(t["content-type"]),r={defCharset:this.opts.defCharset,fileHwm:this.opts.fileHwm,headers:t,highWaterMark:this.opts.highWaterMark,isPartAFile:this.opts.isPartAFile,limits:this.opts.limits,parsedConType:e,preservePath:this.opts.preservePath};if(JN.detect.test(e[0]))return new JN(this,r);if(jN.detect.test(e[0]))return new jN(this,r);throw new Error("Unsupported Content-Type.")};xa.prototype._write=function(t,e,r){this._parser.write(t,r)};Bm.exports=xa;Bm.exports.default=xa;Bm.exports.Busboy=xa;Bm.exports.Dicer=ete});var Vo=g((lDe,rT)=>{"use strict";var{MessageChannel:rte,receiveMessageOnPort:nte}=require("worker_threads"),WN=["GET","HEAD","POST"],ite=new Set(WN),ste=[101,204,205,304],$N=[301,302,303,307,308],ate=new Set($N),KN=["1","7","9","11","13","15","17","19","20","21","22","23","25","37","42","43","53","69","77","79","87","95","101","102","103","104","109","110","111","113","115","117","119","123","135","137","139","143","161","179","389","427","465","512","513","514","515","526","530","531","532","540","548","554","556","563","587","601","636","989","990","993","995","1719","1720","1723","2049","3659","4045","5060","5061","6000","6566","6665","6666","6667","6668","6669","6697","10080"],ote=new Set(KN),XN=["","no-referrer","no-referrer-when-downgrade","same-origin","origin","strict-origin","origin-when-cross-origin","strict-origin-when-cross-origin","unsafe-url"],Ate=new Set(XN),lte=["follow","manual","error"],ZN=["GET","HEAD","OPTIONS","TRACE"],cte=new Set(ZN),dte=["navigate","same-origin","no-cors","cors"],pte=["omit","same-origin","include"],ute=["default","no-store","reload","no-cache","force-cache","only-if-cached"],mte=["content-encoding","content-language","content-location","content-type","content-length"],hte=["half"],eT=["CONNECT","TRACE","TRACK"],fte=new Set(eT),tT=["audio","audioworklet","font","image","manifest","paintworklet","script","style","track","video","xslt",""],gte=new Set(tT),Ete=globalThis.DOMException??(()=>{try{atob("~")}catch(t){return Object.getPrototypeOf(t).constructor}})(),md,yte=globalThis.structuredClone??function(e,r=void 0){if(arguments.length===0)throw new TypeError("missing argument");return md||(md=new rte),md.port1.unref(),md.port2.unref(),md.port1.postMessage(e,r?.transfer),nte(md.port2).message};rT.exports={DOMException:Ete,structuredClone:yte,subresource:tT,forbiddenMethods:eT,requestBodyHeader:mte,referrerPolicy:XN,requestRedirect:lte,requestMode:dte,requestCredentials:pte,requestCache:ute,redirectStatus:$N,corsSafeListedMethods:WN,nullBodyStatus:ste,safeMethods:ZN,badPorts:KN,requestDuplex:hte,subresourceSet:gte,badPortsSet:ote,redirectStatusSet:ate,corsSafeListedMethodsSet:ite,safeMethodsSet:cte,forbiddenMethodsSet:fte,referrerPolicySet:Ate}});var hd=g((cDe,nT)=>{"use strict";var C6=Symbol.for("undici.globalOrigin.1");function Cte(){return globalThis[C6]}function Ite(t){if(t===void 0){Object.defineProperty(globalThis,C6,{value:void 0,writable:!0,enumerable:!1,configurable:!1});return}let e=new URL(t);if(e.protocol!=="http:"&&e.protocol!=="https:")throw new TypeError(`Only http & https urls are allowed, received ${e.protocol}`);Object.defineProperty(globalThis,C6,{value:e,writable:!0,enumerable:!1,configurable:!1})}nT.exports={getGlobalOrigin:Cte,setGlobalOrigin:Ite}});var Vi=g((dDe,dT)=>{"use strict";var{redirectStatusSet:Bte,referrerPolicySet:Qte,badPortsSet:wte}=Vo(),{getGlobalOrigin:Ste}=hd(),{performance:bte}=require("perf_hooks"),{isBlobLike:vte,toUSVString:Rte,ReadableStreamFrom:Nte}=Le(),fd=require("assert"),{isUint8Array:Tte}=require("util/types"),iT=[],Dg;try{Dg=require("crypto");let t=["sha256","sha384","sha512"];iT=Dg.getHashes().filter(e=>t.includes(e))}catch{}function sT(t){let e=t.urlList,r=e.length;return r===0?null:e[r-1].toString()}function Dte(t,e){if(!Bte.has(t.status))return null;let r=t.headersList.get("location");return r!==null&&oT(r)&&(r=new URL(r,sT(t))),r&&!r.hash&&(r.hash=e),r}function wm(t){return t.urlList[t.urlList.length-1]}function kte(t){let e=wm(t);return cT(e)&&wte.has(e.port)?"blocked":"allowed"}function Pte(t){return t instanceof Error||t?.constructor?.name==="Error"||t?.constructor?.name==="DOMException"}function _te(t){for(let e=0;e=32&&r<=126||r>=128&&r<=255))return!1}return!0}function Mte(t){switch(t){case 34:case 40:case 41:case 44:case 47:case 58:case 59:case 60:case 61:case 62:case 63:case 64:case 91:case 92:case 93:case 123:case 125:return!1;default:return t>=33&&t<=126}}function aT(t){if(t.length===0)return!1;for(let e=0;e0)for(let s=n.length;s!==0;s--){let a=n[s-1].trim();if(Qte.has(a)){i=a;break}}i!==""&&(t.referrerPolicy=i)}function Lte(){return"allowed"}function Fte(){return"success"}function Ute(){return"success"}function qte(t){let e=null;e=t.mode,t.headersList.set("sec-fetch-mode",e)}function Vte(t){let e=t.origin;if(t.responseTainting==="cors"||t.mode==="websocket")e&&t.headersList.append("origin",e);else if(t.method!=="GET"&&t.method!=="HEAD"){switch(t.referrerPolicy){case"no-referrer":e=null;break;case"no-referrer-when-downgrade":case"strict-origin":case"strict-origin-when-cross-origin":t.origin&&Q6(t.origin)&&!Q6(wm(t))&&(e=null);break;case"same-origin":kg(t,wm(t))||(e=null);break;default:}e&&t.headersList.append("origin",e)}}function Gte(t){return bte.now()}function Hte(t){return{startTime:t.startTime??0,redirectStartTime:0,redirectEndTime:0,postRedirectStartTime:t.startTime??0,finalServiceWorkerStartTime:0,finalNetworkResponseStartTime:0,finalNetworkRequestStartTime:0,endTime:0,encodedBodySize:0,decodedBodySize:0,finalConnectionTimingInfo:null}}function Yte(){return{referrerPolicy:"strict-origin-when-cross-origin"}}function Jte(t){return{referrerPolicy:t.referrerPolicy}}function jte(t){let e=t.referrerPolicy;fd(e);let r=null;if(t.referrer==="client"){let o=Ste();if(!o||o.origin==="null")return"no-referrer";r=new URL(o)}else t.referrer instanceof URL&&(r=t.referrer);let n=I6(r),i=I6(r,!0);n.toString().length>4096&&(n=i);let s=kg(t,n),a=Qm(n)&&!Qm(t.url);switch(e){case"origin":return i??I6(r,!0);case"unsafe-url":return n;case"same-origin":return s?i:"no-referrer";case"origin-when-cross-origin":return s?n:i;case"strict-origin-when-cross-origin":{let o=wm(t);return kg(n,o)?n:Qm(n)&&!Qm(o)?"no-referrer":i}case"strict-origin":case"no-referrer-when-downgrade":default:return a?"no-referrer":i}}function I6(t,e){return fd(t instanceof URL),t.protocol==="file:"||t.protocol==="about:"||t.protocol==="blank:"?"no-referrer":(t.username="",t.password="",t.hash="",e&&(t.pathname="",t.search=""),t)}function Qm(t){if(!(t instanceof URL))return!1;if(t.href==="about:blank"||t.href==="about:srcdoc"||t.protocol==="data:"||t.protocol==="file:")return!0;return e(t.origin);function e(r){if(r==null||r==="null")return!1;let n=new URL(r);return!!(n.protocol==="https:"||n.protocol==="wss:"||/^127(?:\.[0-9]+){0,2}\.[0-9]+$|^\[(?:0*:)*?:?0*1\]$/.test(n.hostname)||n.hostname==="localhost"||n.hostname.includes("localhost.")||n.hostname.endsWith(".localhost"))}}function zte(t,e){if(Dg===void 0)return!0;let r=AT(e);if(r==="no metadata"||r.length===0)return!0;let n=$te(r),i=Kte(r,n);for(let s of i){let a=s.algo,o=s.hash,A=Dg.createHash(a).update(t).digest("base64");if(A[A.length-1]==="="&&(A[A.length-2]==="="?A=A.slice(0,-2):A=A.slice(0,-1)),Xte(A,o))return!0}return!1}var Wte=/(?sha256|sha384|sha512)-((?[A-Za-z0-9+/]+|[A-Za-z0-9_-]+)={0,2}(?:\s|$)( +[!-~]*)?)?/i;function AT(t){let e=[],r=!0;for(let n of t.split(" ")){r=!1;let i=Wte.exec(n);if(i===null||i.groups===void 0||i.groups.algo===void 0)continue;let s=i.groups.algo.toLowerCase();iT.includes(s)&&e.push(i.groups)}return r===!0?"no metadata":e}function $te(t){let e=t[0].algo;if(e[3]==="5")return e;for(let r=1;r{t=n,e=i}),resolve:t,reject:e}}function tre(t){return t.controller.state==="aborted"}function rre(t){return t.controller.state==="aborted"||t.controller.state==="terminated"}var w6={delete:"DELETE",DELETE:"DELETE",get:"GET",GET:"GET",head:"HEAD",HEAD:"HEAD",options:"OPTIONS",OPTIONS:"OPTIONS",post:"POST",POST:"POST",put:"PUT",PUT:"PUT"};Object.setPrototypeOf(w6,null);function nre(t){return w6[t.toLowerCase()]??t}function ire(t){let e=JSON.stringify(t);if(e===void 0)throw new TypeError("Value is not JSON serializable");return fd(typeof e=="string"),e}var sre=Object.getPrototypeOf(Object.getPrototypeOf([][Symbol.iterator]()));function are(t,e,r){let n={index:0,kind:r,target:t},i={next(){if(Object.getPrototypeOf(this)!==i)throw new TypeError(`'next' called on an object that does not implement interface ${e} Iterator.`);let{index:s,kind:a,target:o}=n,A=o(),l=A.length;if(s>=l)return{value:void 0,done:!0};let c=A[s];return n.index=s+1,ore(c,a)},[Symbol.toStringTag]:`${e} Iterator`};return Object.setPrototypeOf(i,sre),Object.setPrototypeOf({},i)}function ore(t,e){let r;switch(e){case"key":{r=t[0];break}case"value":{r=t[1];break}case"key+value":{r=t;break}}return{value:r,done:!1}}async function Are(t,e,r){let n=e,i=r,s;try{s=t.stream.getReader()}catch(a){i(a);return}try{let a=await lT(s);n(a)}catch(a){i(a)}}var B6=globalThis.ReadableStream;function lre(t){return B6||(B6=require("stream/web").ReadableStream),t instanceof B6||t[Symbol.toStringTag]==="ReadableStream"&&typeof t.tee=="function"}var cre=65535;function dre(t){return t.lengthe+String.fromCharCode(r),"")}function pre(t){try{t.close()}catch(e){if(!e.message.includes("Controller is already closed"))throw e}}function ure(t){for(let e=0;eObject.prototype.hasOwnProperty.call(t,e));dT.exports={isAborted:tre,isCancelled:rre,createDeferredPromise:ere,ReadableStreamFrom:Nte,toUSVString:Rte,tryUpgradeRequestToAPotentiallyTrustworthyURL:Zte,coarsenedSharedCurrentTime:Gte,determineRequestsReferrer:jte,makePolicyContainer:Yte,clonePolicyContainer:Jte,appendFetchMetadata:qte,appendRequestOriginHeader:Vte,TAOCheck:Ute,corsCheck:Fte,crossOriginResourcePolicyCheck:Lte,createOpaqueTimingInfo:Hte,setRequestReferrerPolicyOnRedirect:xte,isValidHTTPToken:aT,requestBadPort:kte,requestCurrentURL:wm,responseURL:sT,responseLocationURL:Dte,isBlobLike:vte,isURLPotentiallyTrustworthy:Qm,isValidReasonPhrase:_te,sameOrigin:kg,normalizeMethod:nre,serializeJavascriptValueToJSONString:ire,makeIterator:are,isValidHeaderName:Ote,isValidHeaderValue:oT,hasOwn:hre,isErrorLike:Pte,fullyReadBody:Are,bytesMatch:zte,isReadableStreamLike:lre,readableStreamClose:pre,isomorphicEncode:ure,isomorphicDecode:dre,urlIsLocal:mre,urlHasHttpsScheme:Q6,urlIsHttpHttpsScheme:cT,readAllBytes:lT,normalizeMethodRecord:w6,parseMetadata:AT}});var La=g((pDe,pT)=>{"use strict";pT.exports={kUrl:Symbol("url"),kHeaders:Symbol("headers"),kSignal:Symbol("signal"),kState:Symbol("state"),kGuard:Symbol("guard"),kRealm:Symbol("realm")}});var gn=g((uDe,mT)=>{"use strict";var{types:Gs}=require("util"),{hasOwn:uT,toUSVString:fre}=Vi(),Y={};Y.converters={};Y.util={};Y.errors={};Y.errors.exception=function(t){return new TypeError(`${t.header}: ${t.message}`)};Y.errors.conversionFailed=function(t){let e=t.types.length===1?"":" one of",r=`${t.argument} could not be converted to${e}: ${t.types.join(", ")}.`;return Y.errors.exception({header:t.prefix,message:r})};Y.errors.invalidArgument=function(t){return Y.errors.exception({header:t.prefix,message:`"${t.value}" is an invalid ${t.type}.`})};Y.brandCheck=function(t,e,r=void 0){if(r?.strict!==!1&&!(t instanceof e))throw new TypeError("Illegal invocation");return t?.[Symbol.toStringTag]===e.prototype[Symbol.toStringTag]};Y.argumentLengthCheck=function({length:t},e,r){if(ti)throw Y.errors.exception({header:"Integer conversion",message:`Value must be between ${s}-${i}, got ${a}.`});return a}return!Number.isNaN(a)&&n.clamp===!0?(a=Math.min(Math.max(a,s),i),Math.floor(a)%2===0?a=Math.floor(a):a=Math.ceil(a),a):Number.isNaN(a)||a===0&&Object.is(0,a)||a===Number.POSITIVE_INFINITY||a===Number.NEGATIVE_INFINITY?0:(a=Y.util.IntegerPart(a),a=a%Math.pow(2,e),r==="signed"&&a>=Math.pow(2,e)-1?a-Math.pow(2,e):a)};Y.util.IntegerPart=function(t){let e=Math.floor(Math.abs(t));return t<0?-1*e:e};Y.sequenceConverter=function(t){return e=>{if(Y.util.Type(e)!=="Object")throw Y.errors.exception({header:"Sequence",message:`Value of type ${Y.util.Type(e)} is not an Object.`});let r=e?.[Symbol.iterator]?.(),n=[];if(r===void 0||typeof r.next!="function")throw Y.errors.exception({header:"Sequence",message:"Object is not an iterator."});for(;;){let{done:i,value:s}=r.next();if(i)break;n.push(t(s))}return n}};Y.recordConverter=function(t,e){return r=>{if(Y.util.Type(r)!=="Object")throw Y.errors.exception({header:"Record",message:`Value of type ${Y.util.Type(r)} is not an Object.`});let n={};if(!Gs.isProxy(r)){let s=Object.keys(r);for(let a of s){let o=t(a),A=e(r[a]);n[o]=A}return n}let i=Reflect.ownKeys(r);for(let s of i)if(Reflect.getOwnPropertyDescriptor(r,s)?.enumerable){let o=t(s),A=e(r[s]);n[o]=A}return n}};Y.interfaceConverter=function(t){return(e,r={})=>{if(r.strict!==!1&&!(e instanceof t))throw Y.errors.exception({header:t.name,message:`Expected ${e} to be an instance of ${t.name}.`});return e}};Y.dictionaryConverter=function(t){return e=>{let r=Y.util.Type(e),n={};if(r==="Null"||r==="Undefined")return n;if(r!=="Object")throw Y.errors.exception({header:"Dictionary",message:`Expected ${e} to be one of: Null, Undefined, Object.`});for(let i of t){let{key:s,defaultValue:a,required:o,converter:A}=i;if(o===!0&&!uT(e,s))throw Y.errors.exception({header:"Dictionary",message:`Missing required key "${s}".`});let l=e[s],c=uT(i,"defaultValue");if(c&&l!==null&&(l=l??a),o||c||l!==void 0){if(l=A(l),i.allowedValues&&!i.allowedValues.includes(l))throw Y.errors.exception({header:"Dictionary",message:`${l} is not an accepted type. Expected one of ${i.allowedValues.join(", ")}.`});n[s]=l}}return n}};Y.nullableConverter=function(t){return e=>e===null?e:t(e)};Y.converters.DOMString=function(t,e={}){if(t===null&&e.legacyNullToEmptyString)return"";if(typeof t=="symbol")throw new TypeError("Could not convert argument of type symbol to string.");return String(t)};Y.converters.ByteString=function(t){let e=Y.converters.DOMString(t);for(let r=0;r255)throw new TypeError(`Cannot convert argument to a ByteString because the character at index ${r} has a value of ${e.charCodeAt(r)} which is greater than 255.`);return e};Y.converters.USVString=fre;Y.converters.boolean=function(t){return!!t};Y.converters.any=function(t){return t};Y.converters["long long"]=function(t){return Y.util.ConvertToInt(t,64,"signed")};Y.converters["unsigned long long"]=function(t){return Y.util.ConvertToInt(t,64,"unsigned")};Y.converters["unsigned long"]=function(t){return Y.util.ConvertToInt(t,32,"unsigned")};Y.converters["unsigned short"]=function(t,e){return Y.util.ConvertToInt(t,16,"unsigned",e)};Y.converters.ArrayBuffer=function(t,e={}){if(Y.util.Type(t)!=="Object"||!Gs.isAnyArrayBuffer(t))throw Y.errors.conversionFailed({prefix:`${t}`,argument:`${t}`,types:["ArrayBuffer"]});if(e.allowShared===!1&&Gs.isSharedArrayBuffer(t))throw Y.errors.exception({header:"ArrayBuffer",message:"SharedArrayBuffer is not allowed."});return t};Y.converters.TypedArray=function(t,e,r={}){if(Y.util.Type(t)!=="Object"||!Gs.isTypedArray(t)||t.constructor.name!==e.name)throw Y.errors.conversionFailed({prefix:`${e.name}`,argument:`${t}`,types:[e.name]});if(r.allowShared===!1&&Gs.isSharedArrayBuffer(t.buffer))throw Y.errors.exception({header:"ArrayBuffer",message:"SharedArrayBuffer is not allowed."});return t};Y.converters.DataView=function(t,e={}){if(Y.util.Type(t)!=="Object"||!Gs.isDataView(t))throw Y.errors.exception({header:"DataView",message:"Object is not a DataView."});if(e.allowShared===!1&&Gs.isSharedArrayBuffer(t.buffer))throw Y.errors.exception({header:"ArrayBuffer",message:"SharedArrayBuffer is not allowed."});return t};Y.converters.BufferSource=function(t,e={}){if(Gs.isAnyArrayBuffer(t))return Y.converters.ArrayBuffer(t,e);if(Gs.isTypedArray(t))return Y.converters.TypedArray(t,t.constructor);if(Gs.isDataView(t))return Y.converters.DataView(t,e);throw new TypeError(`Could not convert ${t} to a BufferSource.`)};Y.converters["sequence"]=Y.sequenceConverter(Y.converters.ByteString);Y.converters["sequence>"]=Y.sequenceConverter(Y.converters["sequence"]);Y.converters["record"]=Y.recordConverter(Y.converters.ByteString,Y.converters.ByteString);mT.exports={webidl:Y}});var Es=g((mDe,CT)=>{var _g=require("assert"),{atob:gre}=require("buffer"),{isomorphicDecode:Ere}=Vi(),yre=new TextEncoder,Pg=/^[!#$%&'*+-.^_|~A-Za-z0-9]+$/,Cre=/(\u000A|\u000D|\u0009|\u0020)/,Ire=/[\u0009|\u0020-\u007E|\u0080-\u00FF]/;function Bre(t){_g(t.protocol==="data:");let e=gT(t,!0);e=e.slice(5);let r={position:0},n=gd(",",e,r),i=n.length;if(n=bre(n,!0,!0),r.position>=e.length)return"failure";r.position++;let s=e.slice(i+1),a=ET(s);if(/;(\u0020){0,}base64$/i.test(n)){let A=Ere(a);if(a=wre(A),a==="failure")return"failure";n=n.slice(0,-6),n=n.replace(/(\u0020)+$/,""),n=n.slice(0,-1)}n.startsWith(";")&&(n="text/plain"+n);let o=b6(n);return o==="failure"&&(o=b6("text/plain;charset=US-ASCII")),{mimeType:o,body:a}}function gT(t,e=!1){if(!e)return t.href;let r=t.href,n=t.hash.length;return n===0?r:r.substring(0,r.length-n)}function Mg(t,e,r){let n="";for(;r.positiont.length)return"failure";e.position++;let n=gd(";",t,e);if(n=S6(n,!1,!0),n.length===0||!Pg.test(n))return"failure";let i=r.toLowerCase(),s=n.toLowerCase(),a={type:i,subtype:s,parameters:new Map,essence:`${i}/${s}`};for(;e.positionCre.test(l),t,e);let o=Mg(l=>l!==";"&&l!=="=",t,e);if(o=o.toLowerCase(),e.positiont.length)break;let A=null;if(t[e.position]==='"')A=yT(t,e,!0),gd(";",t,e);else if(A=gd(";",t,e),A=S6(A,!1,!0),A.length===0)continue;o.length!==0&&Pg.test(o)&&(A.length===0||Ire.test(A))&&!a.parameters.has(o)&&a.parameters.set(o,A)}return a}function wre(t){if(t=t.replace(/[\u0009\u000A\u000C\u000D\u0020]/g,""),t.length%4===0&&(t=t.replace(/=?=$/,"")),t.length%4===1||/[^+/0-9A-Za-z]/.test(t))return"failure";let e=gre(t),r=new Uint8Array(e.length);for(let n=0;na!=='"'&&a!=="\\",t,e),!(e.position>=t.length);){let s=t[e.position];if(e.position++,s==="\\"){if(e.position>=t.length){i+="\\";break}i+=t[e.position],e.position++}else{_g(s==='"');break}}return r?i:t.slice(n,e.position)}function Sre(t){_g(t!=="failure");let{parameters:e,essence:r}=t,n=r;for(let[i,s]of e.entries())n+=";",n+=i,n+="=",Pg.test(s)||(s=s.replace(/(\\|")/g,"\\$1"),s='"'+s,s+='"'),n+=s;return n}function hT(t){return t==="\r"||t===` -`||t===" "||t===" "}function S6(t,e=!0,r=!0){let n=0,i=t.length-1;if(e)for(;n0&&hT(t[i]);i--);return t.slice(n,i+1)}function fT(t){return t==="\r"||t===` -`||t===" "||t==="\f"||t===" "}function bre(t,e=!0,r=!0){let n=0,i=t.length-1;if(e)for(;n0&&fT(t[i]);i--);return t.slice(n,i+1)}CT.exports={dataURLProcessor:Bre,URLSerializer:gT,collectASequenceOfCodePoints:Mg,collectASequenceOfCodePointsFast:gd,stringPercentDecode:ET,parseMIMEType:b6,collectAnHTTPQuotedString:yT,serializeAMimeType:Sre}});var Og=g((hDe,ST)=>{"use strict";var{Blob:QT,File:IT}=require("buffer"),{types:v6}=require("util"),{kState:pi}=La(),{isBlobLike:wT}=Vi(),{webidl:$e}=gn(),{parseMIMEType:vre,serializeAMimeType:Rre}=Es(),{kEnumerableProperty:BT}=Le(),Nre=new TextEncoder,Sm=class t extends QT{constructor(e,r,n={}){$e.argumentLengthCheck(arguments,2,{header:"File constructor"}),e=$e.converters["sequence"](e),r=$e.converters.USVString(r),n=$e.converters.FilePropertyBag(n);let i=r,s=n.type,a;e:{if(s){if(s=vre(s),s==="failure"){s="";break e}s=Rre(s).toLowerCase()}a=n.lastModified}super(Tre(e,n),{type:s}),this[pi]={name:i,lastModified:a,type:s}}get name(){return $e.brandCheck(this,t),this[pi].name}get lastModified(){return $e.brandCheck(this,t),this[pi].lastModified}get type(){return $e.brandCheck(this,t),this[pi].type}},R6=class t{constructor(e,r,n={}){let i=r,s=n.type,a=n.lastModified??Date.now();this[pi]={blobLike:e,name:i,type:s,lastModified:a}}stream(...e){return $e.brandCheck(this,t),this[pi].blobLike.stream(...e)}arrayBuffer(...e){return $e.brandCheck(this,t),this[pi].blobLike.arrayBuffer(...e)}slice(...e){return $e.brandCheck(this,t),this[pi].blobLike.slice(...e)}text(...e){return $e.brandCheck(this,t),this[pi].blobLike.text(...e)}get size(){return $e.brandCheck(this,t),this[pi].blobLike.size}get type(){return $e.brandCheck(this,t),this[pi].blobLike.type}get name(){return $e.brandCheck(this,t),this[pi].name}get lastModified(){return $e.brandCheck(this,t),this[pi].lastModified}get[Symbol.toStringTag](){return"File"}};Object.defineProperties(Sm.prototype,{[Symbol.toStringTag]:{value:"File",configurable:!0},name:BT,lastModified:BT});$e.converters.Blob=$e.interfaceConverter(QT);$e.converters.BlobPart=function(t,e){if($e.util.Type(t)==="Object"){if(wT(t))return $e.converters.Blob(t,{strict:!1});if(ArrayBuffer.isView(t)||v6.isAnyArrayBuffer(t))return $e.converters.BufferSource(t,e)}return $e.converters.USVString(t,e)};$e.converters["sequence"]=$e.sequenceConverter($e.converters.BlobPart);$e.converters.FilePropertyBag=$e.dictionaryConverter([{key:"lastModified",converter:$e.converters["long long"],get defaultValue(){return Date.now()}},{key:"type",converter:$e.converters.DOMString,defaultValue:""},{key:"endings",converter:t=>(t=$e.converters.DOMString(t),t=t.toLowerCase(),t!=="native"&&(t="transparent"),t),defaultValue:"transparent"}]);function Tre(t,e){let r=[];for(let n of t)if(typeof n=="string"){let i=n;e.endings==="native"&&(i=Dre(i)),r.push(Nre.encode(i))}else v6.isAnyArrayBuffer(n)||v6.isTypedArray(n)?n.buffer?r.push(new Uint8Array(n.buffer,n.byteOffset,n.byteLength)):r.push(new Uint8Array(n)):wT(n)&&r.push(n);return r}function Dre(t){let e=` -`;return process.platform==="win32"&&(e=`\r -`),t.replace(/\r?\n/g,e)}function kre(t){return IT&&t instanceof IT||t instanceof Sm||t&&(typeof t.stream=="function"||typeof t.arrayBuffer=="function")&&t[Symbol.toStringTag]==="File"}ST.exports={File:Sm,FileLike:R6,isFileLike:kre}});var Lg=g((fDe,TT)=>{"use strict";var{isBlobLike:xg,toUSVString:Pre,makeIterator:N6}=Vi(),{kState:on}=La(),{File:NT,FileLike:bT,isFileLike:_re}=Og(),{webidl:tt}=gn(),{Blob:Mre,File:T6}=require("buffer"),vT=T6??NT,Ed=class t{constructor(e){if(e!==void 0)throw tt.errors.conversionFailed({prefix:"FormData constructor",argument:"Argument 1",types:["undefined"]});this[on]=[]}append(e,r,n=void 0){if(tt.brandCheck(this,t),tt.argumentLengthCheck(arguments,2,{header:"FormData.append"}),arguments.length===3&&!xg(r))throw new TypeError("Failed to execute 'append' on 'FormData': parameter 2 is not of type 'Blob'");e=tt.converters.USVString(e),r=xg(r)?tt.converters.Blob(r,{strict:!1}):tt.converters.USVString(r),n=arguments.length===3?tt.converters.USVString(n):void 0;let i=RT(e,r,n);this[on].push(i)}delete(e){tt.brandCheck(this,t),tt.argumentLengthCheck(arguments,1,{header:"FormData.delete"}),e=tt.converters.USVString(e),this[on]=this[on].filter(r=>r.name!==e)}get(e){tt.brandCheck(this,t),tt.argumentLengthCheck(arguments,1,{header:"FormData.get"}),e=tt.converters.USVString(e);let r=this[on].findIndex(n=>n.name===e);return r===-1?null:this[on][r].value}getAll(e){return tt.brandCheck(this,t),tt.argumentLengthCheck(arguments,1,{header:"FormData.getAll"}),e=tt.converters.USVString(e),this[on].filter(r=>r.name===e).map(r=>r.value)}has(e){return tt.brandCheck(this,t),tt.argumentLengthCheck(arguments,1,{header:"FormData.has"}),e=tt.converters.USVString(e),this[on].findIndex(r=>r.name===e)!==-1}set(e,r,n=void 0){if(tt.brandCheck(this,t),tt.argumentLengthCheck(arguments,2,{header:"FormData.set"}),arguments.length===3&&!xg(r))throw new TypeError("Failed to execute 'set' on 'FormData': parameter 2 is not of type 'Blob'");e=tt.converters.USVString(e),r=xg(r)?tt.converters.Blob(r,{strict:!1}):tt.converters.USVString(r),n=arguments.length===3?Pre(n):void 0;let i=RT(e,r,n),s=this[on].findIndex(a=>a.name===e);s!==-1?this[on]=[...this[on].slice(0,s),i,...this[on].slice(s+1).filter(a=>a.name!==e)]:this[on].push(i)}entries(){return tt.brandCheck(this,t),N6(()=>this[on].map(e=>[e.name,e.value]),"FormData","key+value")}keys(){return tt.brandCheck(this,t),N6(()=>this[on].map(e=>[e.name,e.value]),"FormData","key")}values(){return tt.brandCheck(this,t),N6(()=>this[on].map(e=>[e.name,e.value]),"FormData","value")}forEach(e,r=globalThis){if(tt.brandCheck(this,t),tt.argumentLengthCheck(arguments,1,{header:"FormData.forEach"}),typeof e!="function")throw new TypeError("Failed to execute 'forEach' on 'FormData': parameter 1 is not of type 'Function'.");for(let[n,i]of this)e.apply(r,[i,n,this])}};Ed.prototype[Symbol.iterator]=Ed.prototype.entries;Object.defineProperties(Ed.prototype,{[Symbol.toStringTag]:{value:"FormData",configurable:!0}});function RT(t,e,r){if(t=Buffer.from(t).toString("utf8"),typeof e=="string")e=Buffer.from(e).toString("utf8");else if(_re(e)||(e=e instanceof Mre?new vT([e],"blob",{type:e.type}):new bT(e,"blob",{type:e.type})),r!==void 0){let n={type:e.type,lastModified:e.lastModified};e=T6&&e instanceof T6||e instanceof NT?new vT([e],r,n):new bT(e,r,n)}return{name:t,value:e}}TT.exports={FormData:Ed}});var bm=g((gDe,FT)=>{"use strict";var Ore=zN(),yd=Le(),{ReadableStreamFrom:xre,isBlobLike:DT,isReadableStreamLike:Lre,readableStreamClose:Fre,createDeferredPromise:Ure,fullyReadBody:qre}=Vi(),{FormData:kT}=Lg(),{kState:Ua}=La(),{webidl:D6}=gn(),{DOMException:MT,structuredClone:Vre}=Vo(),{Blob:Gre,File:Hre}=require("buffer"),{kBodyUsed:Yre}=pt(),k6=require("assert"),{isErrored:Jre}=Le(),{isUint8Array:OT,isArrayBuffer:jre}=require("util/types"),{File:zre}=Og(),{parseMIMEType:Wre,serializeAMimeType:$re}=Es(),P6;try{let t=require("node:crypto");P6=e=>t.randomInt(0,e)}catch{P6=t=>Math.floor(Math.random(t))}var Fa=globalThis.ReadableStream,PT=Hre??zre,Fg=new TextEncoder,Kre=new TextDecoder;function xT(t,e=!1){Fa||(Fa=require("stream/web").ReadableStream);let r=null;t instanceof Fa?r=t:DT(t)?r=t.stream():r=new Fa({async pull(A){A.enqueue(typeof i=="string"?Fg.encode(i):i),queueMicrotask(()=>Fre(A))},start(){},type:void 0}),k6(Lre(r));let n=null,i=null,s=null,a=null;if(typeof t=="string")i=t,a="text/plain;charset=UTF-8";else if(t instanceof URLSearchParams)i=t.toString(),a="application/x-www-form-urlencoded;charset=UTF-8";else if(jre(t))i=new Uint8Array(t.slice());else if(ArrayBuffer.isView(t))i=new Uint8Array(t.buffer.slice(t.byteOffset,t.byteOffset+t.byteLength));else if(yd.isFormDataLike(t)){let A=`----formdata-undici-0${`${P6(1e11)}`.padStart(11,"0")}`,l=`--${A}\r -Content-Disposition: form-data`;let c=f=>f.replace(/\n/g,"%0A").replace(/\r/g,"%0D").replace(/"/g,"%22"),d=f=>f.replace(/\r?\n|\r/g,`\r -`),p=[],u=new Uint8Array([13,10]);s=0;let m=!1;for(let[f,E]of t)if(typeof E=="string"){let y=Fg.encode(l+`; name="${c(d(f))}"\r -\r -${d(E)}\r -`);p.push(y),s+=y.byteLength}else{let y=Fg.encode(`${l}; name="${c(d(f))}"`+(E.name?`; filename="${c(E.name)}"`:"")+`\r -Content-Type: ${E.type||"application/octet-stream"}\r -\r -`);p.push(y,E,u),typeof E.size=="number"?s+=y.byteLength+E.size+u.byteLength:m=!0}let h=Fg.encode(`--${A}--`);p.push(h),s+=h.byteLength,m&&(s=null),i=t,n=async function*(){for(let f of p)f.stream?yield*f.stream():yield f},a="multipart/form-data; boundary="+A}else if(DT(t))i=t,s=t.size,t.type&&(a=t.type);else if(typeof t[Symbol.asyncIterator]=="function"){if(e)throw new TypeError("keepalive");if(yd.isDisturbed(t)||t.locked)throw new TypeError("Response body object should not be disturbed or locked");r=t instanceof Fa?t:xre(t)}if((typeof i=="string"||yd.isBuffer(i))&&(s=Buffer.byteLength(i)),n!=null){let A;r=new Fa({async start(){A=n(t)[Symbol.asyncIterator]()},async pull(l){let{value:c,done:d}=await A.next();return d?queueMicrotask(()=>{l.close()}):Jre(r)||l.enqueue(new Uint8Array(c)),l.desiredSize>0},async cancel(l){await A.return()},type:void 0})}return[{stream:r,source:i,length:s},a]}function Xre(t,e=!1){return Fa||(Fa=require("stream/web").ReadableStream),t instanceof Fa&&(k6(!yd.isDisturbed(t),"The body has already been consumed."),k6(!t.locked,"The stream is locked.")),xT(t,e)}function Zre(t){let[e,r]=t.stream.tee(),n=Vre(r,{transfer:[r]}),[,i]=n.tee();return t.stream=e,{stream:i,length:t.length,source:t.source}}async function*_T(t){if(t)if(OT(t))yield t;else{let e=t.stream;if(yd.isDisturbed(e))throw new TypeError("The body has already been consumed.");if(e.locked)throw new TypeError("The stream is locked.");e[Yre]=!0,yield*e}}function _6(t){if(t.aborted)throw new MT("The operation was aborted.","AbortError")}function ene(t){return{blob(){return Ug(this,r=>{let n=ine(this);return n==="failure"?n="":n&&(n=$re(n)),new Gre([r],{type:n})},t)},arrayBuffer(){return Ug(this,r=>new Uint8Array(r).buffer,t)},text(){return Ug(this,LT,t)},json(){return Ug(this,nne,t)},async formData(){D6.brandCheck(this,t),_6(this[Ua]);let r=this.headers.get("Content-Type");if(/multipart\/form-data/.test(r)){let n={};for(let[o,A]of this.headers)n[o.toLowerCase()]=A;let i=new kT,s;try{s=new Ore({headers:n,preservePath:!0})}catch(o){throw new MT(`${o}`,"AbortError")}s.on("field",(o,A)=>{i.append(o,A)}),s.on("file",(o,A,l,c,d)=>{let p=[];if(c==="base64"||c.toLowerCase()==="base64"){let u="";A.on("data",m=>{u+=m.toString().replace(/[\r\n]/gm,"");let h=u.length-u.length%4;p.push(Buffer.from(u.slice(0,h),"base64")),u=u.slice(h)}),A.on("end",()=>{p.push(Buffer.from(u,"base64")),i.append(o,new PT(p,l,{type:d}))})}else A.on("data",u=>{p.push(u)}),A.on("end",()=>{i.append(o,new PT(p,l,{type:d}))})});let a=new Promise((o,A)=>{s.on("finish",o),s.on("error",l=>A(new TypeError(l)))});if(this.body!==null)for await(let o of _T(this[Ua].body))s.write(o);return s.end(),await a,i}else if(/application\/x-www-form-urlencoded/.test(r)){let n;try{let s="",a=new TextDecoder("utf-8",{ignoreBOM:!0});for await(let o of _T(this[Ua].body)){if(!OT(o))throw new TypeError("Expected Uint8Array chunk");s+=a.decode(o,{stream:!0})}s+=a.decode(),n=new URLSearchParams(s)}catch(s){throw Object.assign(new TypeError,{cause:s})}let i=new kT;for(let[s,a]of n)i.append(s,a);return i}else throw await Promise.resolve(),_6(this[Ua]),D6.errors.exception({header:`${t.name}.formData`,message:"Could not parse content as FormData."})}}}function tne(t){Object.assign(t.prototype,ene(t))}async function Ug(t,e,r){if(D6.brandCheck(t,r),_6(t[Ua]),rne(t[Ua].body))throw new TypeError("Body is unusable");let n=Ure(),i=a=>n.reject(a),s=a=>{try{n.resolve(e(a))}catch(o){i(o)}};return t[Ua].body==null?(s(new Uint8Array),n.promise):(await qre(t[Ua].body,s,i),n.promise)}function rne(t){return t!=null&&(t.stream.locked||yd.isDisturbed(t.stream))}function LT(t){return t.length===0?"":(t[0]===239&&t[1]===187&&t[2]===191&&(t=t.subarray(3)),Kre.decode(t))}function nne(t){return JSON.parse(LT(t))}function ine(t){let{headersList:e}=t[Ua],r=e.get("content-type");return r===null?"failure":Wre(r)}FT.exports={extractBody:xT,safelyExtractBody:Xre,cloneBody:Zre,mixinBody:tne}});var GT=g((EDe,VT)=>{"use strict";var{InvalidArgumentError:ut,NotSupportedError:sne}=ot(),qa=require("assert"),{kHTTP2BuildRequest:ane,kHTTP2CopyHeaders:one,kHTTP1BuildRequest:Ane}=pt(),On=Le(),UT=/^[\^_`a-zA-Z\-0-9!#$%&'*+.|~]+$/,qT=/[^\t\x20-\x7e\x80-\xff]/,lne=/[^\u0021-\u00ff]/,ys=Symbol("handler"),dr={},M6;try{let t=require("diagnostics_channel");dr.create=t.channel("undici:request:create"),dr.bodySent=t.channel("undici:request:bodySent"),dr.headers=t.channel("undici:request:headers"),dr.trailers=t.channel("undici:request:trailers"),dr.error=t.channel("undici:request:error")}catch{dr.create={hasSubscribers:!1},dr.bodySent={hasSubscribers:!1},dr.headers={hasSubscribers:!1},dr.trailers={hasSubscribers:!1},dr.error={hasSubscribers:!1}}var O6=class t{constructor(e,{path:r,method:n,body:i,headers:s,query:a,idempotent:o,blocking:A,upgrade:l,headersTimeout:c,bodyTimeout:d,reset:p,throwOnError:u,expectContinue:m},h){if(typeof r!="string")throw new ut("path must be a string");if(r[0]!=="/"&&!(r.startsWith("http://")||r.startsWith("https://"))&&n!=="CONNECT")throw new ut("path must be an absolute URL or start with a slash");if(lne.exec(r)!==null)throw new ut("invalid request path");if(typeof n!="string")throw new ut("method must be a string");if(UT.exec(n)===null)throw new ut("invalid request method");if(l&&typeof l!="string")throw new ut("upgrade must be a string");if(c!=null&&(!Number.isFinite(c)||c<0))throw new ut("invalid headersTimeout");if(d!=null&&(!Number.isFinite(d)||d<0))throw new ut("invalid bodyTimeout");if(p!=null&&typeof p!="boolean")throw new ut("invalid reset");if(m!=null&&typeof m!="boolean")throw new ut("invalid expectContinue");if(this.headersTimeout=c,this.bodyTimeout=d,this.throwOnError=u===!0,this.method=n,this.abort=null,i==null)this.body=null;else if(On.isStream(i)){this.body=i;let f=this.body._readableState;(!f||!f.autoDestroy)&&(this.endHandler=function(){On.destroy(this)},this.body.on("end",this.endHandler)),this.errorHandler=E=>{this.abort?this.abort(E):this.error=E},this.body.on("error",this.errorHandler)}else if(On.isBuffer(i))this.body=i.byteLength?i:null;else if(ArrayBuffer.isView(i))this.body=i.buffer.byteLength?Buffer.from(i.buffer,i.byteOffset,i.byteLength):null;else if(i instanceof ArrayBuffer)this.body=i.byteLength?Buffer.from(i):null;else if(typeof i=="string")this.body=i.length?Buffer.from(i):null;else if(On.isFormDataLike(i)||On.isIterable(i)||On.isBlobLike(i))this.body=i;else throw new ut("body must be a string, a Buffer, a Readable stream, an iterable, or an async iterable");if(this.completed=!1,this.aborted=!1,this.upgrade=l||null,this.path=a?On.buildURL(r,a):r,this.origin=e,this.idempotent=o??(n==="HEAD"||n==="GET"),this.blocking=A??!1,this.reset=p??null,this.host=null,this.contentLength=null,this.contentType=null,this.headers="",this.expectContinue=m??!1,Array.isArray(s)){if(s.length%2!==0)throw new ut("headers array must be even");for(let f=0;f{"use strict";var cne=require("events"),x6=class extends cne{dispatch(){throw new Error("not implemented")}close(){throw new Error("not implemented")}destroy(){throw new Error("not implemented")}};HT.exports=x6});var Nm=g((CDe,YT)=>{"use strict";var dne=qg(),{ClientDestroyedError:L6,ClientClosedError:pne,InvalidArgumentError:Cd}=ot(),{kDestroy:une,kClose:mne,kDispatch:F6,kInterceptors:Al}=pt(),Id=Symbol("destroyed"),Rm=Symbol("closed"),Va=Symbol("onDestroyed"),Bd=Symbol("onClosed"),Vg=Symbol("Intercepted Dispatch"),U6=class extends dne{constructor(){super(),this[Id]=!1,this[Va]=null,this[Rm]=!1,this[Bd]=[]}get destroyed(){return this[Id]}get closed(){return this[Rm]}get interceptors(){return this[Al]}set interceptors(e){if(e){for(let r=e.length-1;r>=0;r--)if(typeof this[Al][r]!="function")throw new Cd("interceptor must be an function")}this[Al]=e}close(e){if(e===void 0)return new Promise((n,i)=>{this.close((s,a)=>s?i(s):n(a))});if(typeof e!="function")throw new Cd("invalid callback");if(this[Id]){queueMicrotask(()=>e(new L6,null));return}if(this[Rm]){this[Bd]?this[Bd].push(e):queueMicrotask(()=>e(null,null));return}this[Rm]=!0,this[Bd].push(e);let r=()=>{let n=this[Bd];this[Bd]=null;for(let i=0;ithis.destroy()).then(()=>{queueMicrotask(r)})}destroy(e,r){if(typeof e=="function"&&(r=e,e=null),r===void 0)return new Promise((i,s)=>{this.destroy(e,(a,o)=>a?s(a):i(o))});if(typeof r!="function")throw new Cd("invalid callback");if(this[Id]){this[Va]?this[Va].push(r):queueMicrotask(()=>r(null,null));return}e||(e=new L6),this[Id]=!0,this[Va]=this[Va]||[],this[Va].push(r);let n=()=>{let i=this[Va];this[Va]=null;for(let s=0;s{queueMicrotask(n)})}[Vg](e,r){if(!this[Al]||this[Al].length===0)return this[Vg]=this[F6],this[F6](e,r);let n=this[F6].bind(this);for(let i=this[Al].length-1;i>=0;i--)n=this[Al][i](n);return this[Vg]=n,n(e,r)}dispatch(e,r){if(!r||typeof r!="object")throw new Cd("handler must be an object");try{if(!e||typeof e!="object")throw new Cd("opts must be an object.");if(this[Id]||this[Va])throw new L6;if(this[Rm])throw new pne;return this[Vg](e,r)}catch(n){if(typeof r.onError!="function")throw new Cd("invalid onError method");return r.onError(n),!1}}};YT.exports=U6});var Tm=g((QDe,zT)=>{"use strict";var hne=require("net"),JT=require("assert"),jT=Le(),{InvalidArgumentError:fne,ConnectTimeoutError:gne}=ot(),q6,V6;global.FinalizationRegistry&&!process.env.NODE_V8_COVERAGE?V6=class{constructor(e){this._maxCachedSessions=e,this._sessionCache=new Map,this._sessionRegistry=new global.FinalizationRegistry(r=>{if(this._sessionCache.size=this._maxCachedSessions){let{value:n}=this._sessionCache.keys().next();this._sessionCache.delete(n)}this._sessionCache.set(e,r)}}};function Ene({allowH2:t,maxCachedSessions:e,socketPath:r,timeout:n,...i}){if(e!=null&&(!Number.isInteger(e)||e<0))throw new fne("maxCachedSessions must be a positive integer or zero");let s={path:r,...i},a=new V6(e??100);return n=n??1e4,t=t??!1,function({hostname:A,host:l,protocol:c,port:d,servername:p,localAddress:u,httpSocket:m},h){let f;if(c==="https:"){q6||(q6=require("tls")),p=p||s.servername||jT.getServerName(l)||null;let y=p||A,B=a.get(y)||null;JT(y),f=q6.connect({highWaterMark:16384,...s,servername:p,session:B,localAddress:u,ALPNProtocols:t?["http/1.1","h2"]:["http/1.1"],socket:m,port:d||443,host:A}),f.on("session",function(Q){a.set(y,Q)})}else JT(!m,"httpSocket can only be sent on TLS update"),f=hne.connect({highWaterMark:64*1024,...s,localAddress:u,port:d||80,host:A});if(s.keepAlive==null||s.keepAlive){let y=s.keepAliveInitialDelay===void 0?6e4:s.keepAliveInitialDelay;f.setKeepAlive(!0,y)}let E=yne(()=>Cne(f),n);return f.setNoDelay(!0).once(c==="https:"?"secureConnect":"connect",function(){if(E(),h){let y=h;h=null,y(null,this)}}).on("error",function(y){if(E(),h){let B=h;h=null,B(y)}}),f}}function yne(t,e){if(!e)return()=>{};let r=null,n=null,i=setTimeout(()=>{r=setImmediate(()=>{process.platform==="win32"?n=setImmediate(()=>t()):t()})},e);return()=>{clearTimeout(i),clearImmediate(r),clearImmediate(n)}}function Cne(t){jT.destroy(t,new gne)}zT.exports=Ene});var WT=g(Gg=>{"use strict";Object.defineProperty(Gg,"__esModule",{value:!0});Gg.enumToMap=void 0;function Ine(t){let e={};return Object.keys(t).forEach(r=>{let n=t[r];typeof n=="number"&&(e[r]=n)}),e}Gg.enumToMap=Ine});var $T=g(G=>{"use strict";Object.defineProperty(G,"__esModule",{value:!0});G.SPECIAL_HEADERS=G.HEADER_STATE=G.MINOR=G.MAJOR=G.CONNECTION_TOKEN_CHARS=G.HEADER_CHARS=G.TOKEN=G.STRICT_TOKEN=G.HEX=G.URL_CHAR=G.STRICT_URL_CHAR=G.USERINFO_CHARS=G.MARK=G.ALPHANUM=G.NUM=G.HEX_MAP=G.NUM_MAP=G.ALPHA=G.FINISH=G.H_METHOD_MAP=G.METHOD_MAP=G.METHODS_RTSP=G.METHODS_ICE=G.METHODS_HTTP=G.METHODS=G.LENIENT_FLAGS=G.FLAGS=G.TYPE=G.ERROR=void 0;var Bne=WT(),Qne;(function(t){t[t.OK=0]="OK",t[t.INTERNAL=1]="INTERNAL",t[t.STRICT=2]="STRICT",t[t.LF_EXPECTED=3]="LF_EXPECTED",t[t.UNEXPECTED_CONTENT_LENGTH=4]="UNEXPECTED_CONTENT_LENGTH",t[t.CLOSED_CONNECTION=5]="CLOSED_CONNECTION",t[t.INVALID_METHOD=6]="INVALID_METHOD",t[t.INVALID_URL=7]="INVALID_URL",t[t.INVALID_CONSTANT=8]="INVALID_CONSTANT",t[t.INVALID_VERSION=9]="INVALID_VERSION",t[t.INVALID_HEADER_TOKEN=10]="INVALID_HEADER_TOKEN",t[t.INVALID_CONTENT_LENGTH=11]="INVALID_CONTENT_LENGTH",t[t.INVALID_CHUNK_SIZE=12]="INVALID_CHUNK_SIZE",t[t.INVALID_STATUS=13]="INVALID_STATUS",t[t.INVALID_EOF_STATE=14]="INVALID_EOF_STATE",t[t.INVALID_TRANSFER_ENCODING=15]="INVALID_TRANSFER_ENCODING",t[t.CB_MESSAGE_BEGIN=16]="CB_MESSAGE_BEGIN",t[t.CB_HEADERS_COMPLETE=17]="CB_HEADERS_COMPLETE",t[t.CB_MESSAGE_COMPLETE=18]="CB_MESSAGE_COMPLETE",t[t.CB_CHUNK_HEADER=19]="CB_CHUNK_HEADER",t[t.CB_CHUNK_COMPLETE=20]="CB_CHUNK_COMPLETE",t[t.PAUSED=21]="PAUSED",t[t.PAUSED_UPGRADE=22]="PAUSED_UPGRADE",t[t.PAUSED_H2_UPGRADE=23]="PAUSED_H2_UPGRADE",t[t.USER=24]="USER"})(Qne=G.ERROR||(G.ERROR={}));var wne;(function(t){t[t.BOTH=0]="BOTH",t[t.REQUEST=1]="REQUEST",t[t.RESPONSE=2]="RESPONSE"})(wne=G.TYPE||(G.TYPE={}));var Sne;(function(t){t[t.CONNECTION_KEEP_ALIVE=1]="CONNECTION_KEEP_ALIVE",t[t.CONNECTION_CLOSE=2]="CONNECTION_CLOSE",t[t.CONNECTION_UPGRADE=4]="CONNECTION_UPGRADE",t[t.CHUNKED=8]="CHUNKED",t[t.UPGRADE=16]="UPGRADE",t[t.CONTENT_LENGTH=32]="CONTENT_LENGTH",t[t.SKIPBODY=64]="SKIPBODY",t[t.TRAILING=128]="TRAILING",t[t.TRANSFER_ENCODING=512]="TRANSFER_ENCODING"})(Sne=G.FLAGS||(G.FLAGS={}));var bne;(function(t){t[t.HEADERS=1]="HEADERS",t[t.CHUNKED_LENGTH=2]="CHUNKED_LENGTH",t[t.KEEP_ALIVE=4]="KEEP_ALIVE"})(bne=G.LENIENT_FLAGS||(G.LENIENT_FLAGS={}));var ie;(function(t){t[t.DELETE=0]="DELETE",t[t.GET=1]="GET",t[t.HEAD=2]="HEAD",t[t.POST=3]="POST",t[t.PUT=4]="PUT",t[t.CONNECT=5]="CONNECT",t[t.OPTIONS=6]="OPTIONS",t[t.TRACE=7]="TRACE",t[t.COPY=8]="COPY",t[t.LOCK=9]="LOCK",t[t.MKCOL=10]="MKCOL",t[t.MOVE=11]="MOVE",t[t.PROPFIND=12]="PROPFIND",t[t.PROPPATCH=13]="PROPPATCH",t[t.SEARCH=14]="SEARCH",t[t.UNLOCK=15]="UNLOCK",t[t.BIND=16]="BIND",t[t.REBIND=17]="REBIND",t[t.UNBIND=18]="UNBIND",t[t.ACL=19]="ACL",t[t.REPORT=20]="REPORT",t[t.MKACTIVITY=21]="MKACTIVITY",t[t.CHECKOUT=22]="CHECKOUT",t[t.MERGE=23]="MERGE",t[t["M-SEARCH"]=24]="M-SEARCH",t[t.NOTIFY=25]="NOTIFY",t[t.SUBSCRIBE=26]="SUBSCRIBE",t[t.UNSUBSCRIBE=27]="UNSUBSCRIBE",t[t.PATCH=28]="PATCH",t[t.PURGE=29]="PURGE",t[t.MKCALENDAR=30]="MKCALENDAR",t[t.LINK=31]="LINK",t[t.UNLINK=32]="UNLINK",t[t.SOURCE=33]="SOURCE",t[t.PRI=34]="PRI",t[t.DESCRIBE=35]="DESCRIBE",t[t.ANNOUNCE=36]="ANNOUNCE",t[t.SETUP=37]="SETUP",t[t.PLAY=38]="PLAY",t[t.PAUSE=39]="PAUSE",t[t.TEARDOWN=40]="TEARDOWN",t[t.GET_PARAMETER=41]="GET_PARAMETER",t[t.SET_PARAMETER=42]="SET_PARAMETER",t[t.REDIRECT=43]="REDIRECT",t[t.RECORD=44]="RECORD",t[t.FLUSH=45]="FLUSH"})(ie=G.METHODS||(G.METHODS={}));G.METHODS_HTTP=[ie.DELETE,ie.GET,ie.HEAD,ie.POST,ie.PUT,ie.CONNECT,ie.OPTIONS,ie.TRACE,ie.COPY,ie.LOCK,ie.MKCOL,ie.MOVE,ie.PROPFIND,ie.PROPPATCH,ie.SEARCH,ie.UNLOCK,ie.BIND,ie.REBIND,ie.UNBIND,ie.ACL,ie.REPORT,ie.MKACTIVITY,ie.CHECKOUT,ie.MERGE,ie["M-SEARCH"],ie.NOTIFY,ie.SUBSCRIBE,ie.UNSUBSCRIBE,ie.PATCH,ie.PURGE,ie.MKCALENDAR,ie.LINK,ie.UNLINK,ie.PRI,ie.SOURCE];G.METHODS_ICE=[ie.SOURCE];G.METHODS_RTSP=[ie.OPTIONS,ie.DESCRIBE,ie.ANNOUNCE,ie.SETUP,ie.PLAY,ie.PAUSE,ie.TEARDOWN,ie.GET_PARAMETER,ie.SET_PARAMETER,ie.REDIRECT,ie.RECORD,ie.FLUSH,ie.GET,ie.POST];G.METHOD_MAP=Bne.enumToMap(ie);G.H_METHOD_MAP={};Object.keys(G.METHOD_MAP).forEach(t=>{/^H/.test(t)&&(G.H_METHOD_MAP[t]=G.METHOD_MAP[t])});var vne;(function(t){t[t.SAFE=0]="SAFE",t[t.SAFE_WITH_CB=1]="SAFE_WITH_CB",t[t.UNSAFE=2]="UNSAFE"})(vne=G.FINISH||(G.FINISH={}));G.ALPHA=[];for(let t=65;t<=90;t++)G.ALPHA.push(String.fromCharCode(t)),G.ALPHA.push(String.fromCharCode(t+32));G.NUM_MAP={0:0,1:1,2:2,3:3,4:4,5:5,6:6,7:7,8:8,9:9};G.HEX_MAP={0:0,1:1,2:2,3:3,4:4,5:5,6:6,7:7,8:8,9:9,A:10,B:11,C:12,D:13,E:14,F:15,a:10,b:11,c:12,d:13,e:14,f:15};G.NUM=["0","1","2","3","4","5","6","7","8","9"];G.ALPHANUM=G.ALPHA.concat(G.NUM);G.MARK=["-","_",".","!","~","*","'","(",")"];G.USERINFO_CHARS=G.ALPHANUM.concat(G.MARK).concat(["%",";",":","&","=","+","$",","]);G.STRICT_URL_CHAR=["!",'"',"$","%","&","'","(",")","*","+",",","-",".","/",":",";","<","=",">","@","[","\\","]","^","_","`","{","|","}","~"].concat(G.ALPHANUM);G.URL_CHAR=G.STRICT_URL_CHAR.concat([" ","\f"]);for(let t=128;t<=255;t++)G.URL_CHAR.push(t);G.HEX=G.NUM.concat(["a","b","c","d","e","f","A","B","C","D","E","F"]);G.STRICT_TOKEN=["!","#","$","%","&","'","*","+","-",".","^","_","`","|","~"].concat(G.ALPHANUM);G.TOKEN=G.STRICT_TOKEN.concat([" "]);G.HEADER_CHARS=[" "];for(let t=32;t<=255;t++)t!==127&&G.HEADER_CHARS.push(t);G.CONNECTION_TOKEN_CHARS=G.HEADER_CHARS.filter(t=>t!==44);G.MAJOR=G.NUM_MAP;G.MINOR=G.MAJOR;var Qd;(function(t){t[t.GENERAL=0]="GENERAL",t[t.CONNECTION=1]="CONNECTION",t[t.CONTENT_LENGTH=2]="CONTENT_LENGTH",t[t.TRANSFER_ENCODING=3]="TRANSFER_ENCODING",t[t.UPGRADE=4]="UPGRADE",t[t.CONNECTION_KEEP_ALIVE=5]="CONNECTION_KEEP_ALIVE",t[t.CONNECTION_CLOSE=6]="CONNECTION_CLOSE",t[t.CONNECTION_UPGRADE=7]="CONNECTION_UPGRADE",t[t.TRANSFER_ENCODING_CHUNKED=8]="TRANSFER_ENCODING_CHUNKED"})(Qd=G.HEADER_STATE||(G.HEADER_STATE={}));G.SPECIAL_HEADERS={connection:Qd.CONNECTION,"content-length":Qd.CONTENT_LENGTH,"proxy-connection":Qd.CONNECTION,"transfer-encoding":Qd.TRANSFER_ENCODING,upgrade:Qd.UPGRADE}});var Y6=g((bDe,ZT)=>{"use strict";var Ga=Le(),{kBodyUsed:Dm}=pt(),H6=require("assert"),{InvalidArgumentError:Rne}=ot(),Nne=require("events"),Tne=[300,301,302,303,307,308],KT=Symbol("body"),Hg=class{constructor(e){this[KT]=e,this[Dm]=!1}async*[Symbol.asyncIterator](){H6(!this[Dm],"disturbed"),this[Dm]=!0,yield*this[KT]}},G6=class{constructor(e,r,n,i){if(r!=null&&(!Number.isInteger(r)||r<0))throw new Rne("maxRedirections must be a positive number");Ga.validateHandler(i,n.method,n.upgrade),this.dispatch=e,this.location=null,this.abort=null,this.opts={...n,maxRedirections:0},this.maxRedirections=r,this.handler=i,this.history=[],Ga.isStream(this.opts.body)?(Ga.bodyLength(this.opts.body)===0&&this.opts.body.on("data",function(){H6(!1)}),typeof this.opts.body.readableDidRead!="boolean"&&(this.opts.body[Dm]=!1,Nne.prototype.on.call(this.opts.body,"data",function(){this[Dm]=!0}))):this.opts.body&&typeof this.opts.body.pipeTo=="function"?this.opts.body=new Hg(this.opts.body):this.opts.body&&typeof this.opts.body!="string"&&!ArrayBuffer.isView(this.opts.body)&&Ga.isIterable(this.opts.body)&&(this.opts.body=new Hg(this.opts.body))}onConnect(e){this.abort=e,this.handler.onConnect(e,{history:this.history})}onUpgrade(e,r,n){this.handler.onUpgrade(e,r,n)}onError(e){this.handler.onError(e)}onHeaders(e,r,n,i){if(this.location=this.history.length>=this.maxRedirections||Ga.isDisturbed(this.opts.body)?null:Dne(e,r),this.opts.origin&&this.history.push(new URL(this.opts.path,this.opts.origin)),!this.location)return this.handler.onHeaders(e,r,n,i);let{origin:s,pathname:a,search:o}=Ga.parseURL(new URL(this.location,this.opts.origin&&new URL(this.opts.path,this.opts.origin))),A=o?`${a}${o}`:a;this.opts.headers=kne(this.opts.headers,e===303,this.opts.origin!==s),this.opts.path=A,this.opts.origin=s,this.opts.maxRedirections=0,this.opts.query=null,e===303&&this.opts.method!=="HEAD"&&(this.opts.method="GET",this.opts.body=null)}onData(e){if(!this.location)return this.handler.onData(e)}onComplete(e){this.location?(this.location=null,this.abort=null,this.dispatch(this.opts,this)):this.handler.onComplete(e)}onBodySent(e){this.handler.onBodySent&&this.handler.onBodySent(e)}};function Dne(t,e){if(Tne.indexOf(t)===-1)return null;for(let r=0;r{"use strict";var Pne=Y6();function _ne({maxRedirections:t}){return e=>function(n,i){let{maxRedirections:s=t}=n;if(!s)return e(n,i);let a=new Pne(e,s,n,i);return n={...n,maxRedirections:0},e(n,a)}}eD.exports=_ne});var J6=g((RDe,tD)=>{tD.exports="AGFzbQEAAAABMAhgAX8Bf2ADf39/AX9gBH9/f38Bf2AAAGADf39/AGABfwBgAn9/AGAGf39/f39/AALLAQgDZW52GHdhc21fb25faGVhZGVyc19jb21wbGV0ZQACA2VudhV3YXNtX29uX21lc3NhZ2VfYmVnaW4AAANlbnYLd2FzbV9vbl91cmwAAQNlbnYOd2FzbV9vbl9zdGF0dXMAAQNlbnYUd2FzbV9vbl9oZWFkZXJfZmllbGQAAQNlbnYUd2FzbV9vbl9oZWFkZXJfdmFsdWUAAQNlbnYMd2FzbV9vbl9ib2R5AAEDZW52GHdhc21fb25fbWVzc2FnZV9jb21wbGV0ZQAAA0ZFAwMEAAAFAAAAAAAABQEFAAUFBQAABgAAAAAGBgYGAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAAABAQcAAAUFAwABBAUBcAESEgUDAQACBggBfwFBgNQECwfRBSIGbWVtb3J5AgALX2luaXRpYWxpemUACRlfX2luZGlyZWN0X2Z1bmN0aW9uX3RhYmxlAQALbGxodHRwX2luaXQAChhsbGh0dHBfc2hvdWxkX2tlZXBfYWxpdmUAQQxsbGh0dHBfYWxsb2MADAZtYWxsb2MARgtsbGh0dHBfZnJlZQANBGZyZWUASA9sbGh0dHBfZ2V0X3R5cGUADhVsbGh0dHBfZ2V0X2h0dHBfbWFqb3IADxVsbGh0dHBfZ2V0X2h0dHBfbWlub3IAEBFsbGh0dHBfZ2V0X21ldGhvZAARFmxsaHR0cF9nZXRfc3RhdHVzX2NvZGUAEhJsbGh0dHBfZ2V0X3VwZ3JhZGUAEwxsbGh0dHBfcmVzZXQAFA5sbGh0dHBfZXhlY3V0ZQAVFGxsaHR0cF9zZXR0aW5nc19pbml0ABYNbGxodHRwX2ZpbmlzaAAXDGxsaHR0cF9wYXVzZQAYDWxsaHR0cF9yZXN1bWUAGRtsbGh0dHBfcmVzdW1lX2FmdGVyX3VwZ3JhZGUAGhBsbGh0dHBfZ2V0X2Vycm5vABsXbGxodHRwX2dldF9lcnJvcl9yZWFzb24AHBdsbGh0dHBfc2V0X2Vycm9yX3JlYXNvbgAdFGxsaHR0cF9nZXRfZXJyb3JfcG9zAB4RbGxodHRwX2Vycm5vX25hbWUAHxJsbGh0dHBfbWV0aG9kX25hbWUAIBJs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ADcDACAAQShqQgA3AwAgAEEgakIANwMAIABBEGpCADcDACAAQQhqQgA3AwAgAEHdATYCHEEAC3sBAX8CQCAAKAIMIgMNAAJAIAAoAgRFDQAgACABNgIECwJAIAAgASACEMSAgIAAIgMNACAAKAIMDwsgACADNgIcQQAhAyAAKAIEIgFFDQAgACABIAIgACgCCBGBgICAAAAiAUUNACAAIAI2AhQgACABNgIMIAEhAwsgAwvk8wEDDn8DfgR/I4CAgIAAQRBrIgMkgICAgAAgASEEIAEhBSABIQYgASEHIAEhCCABIQkgASEKIAEhCyABIQwgASENIAEhDiABIQ8CQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgACgCHCIQQX9qDt0B2gEB2QECAwQFBgcICQoLDA0O2AEPENcBERLWARMUFRYXGBkaG+AB3wEcHR7VAR8gISIjJCXUASYnKCkqKyzTAdIBLS7RAdABLzAxMjM0NTY3ODk6Ozw9Pj9AQUJDREVG2wFHSElKzwHOAUvNAUzMAU1OT1BRUlNUVVZXWFlaW1xdXl9gYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXp7fH1+f4ABgQGCAYMBhAGFAYYBhwGIAYkB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QAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAC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FCAAIBA2AgxBACEQDLIBCyAAKAIEIRAgAEEANgIEAkAgACAQIAEQp4CAgAAiEA0AIAEhAQxNCyAAQdMANgIcIAAgATYCFCAAIBA2AgxBACEQDLEBCyAAKAIEIRAgAEEANgIEAkAgACAQIAEQp4CAgAAiEA0AIAEhAQxRCyAAQeUANgIcIAAgATYCFCAAIBA2AgxBACEQDLABCyAAQQA2AhwgACABNgIUIABBxoqAgAA2AhAgAEEHNgIMQQAhEAyvAQsgACgCBCEQIABBADYCBAJAIAAgECABEKeAgIAAIhANACABIQEMSQsgAEHSADYCHCAAIAE2AhQgACAQNgIMQQAhEAyuAQsgACgCBCEQIABBADYCBAJAIAAgECABEKeAgIAAIhANACABIQEMSQsgAEHTADYCHCAAIAE2AhQgACAQNgIMQQAhEAytAQsgACgCBCEQIABBADYCBAJAIAAgECABEKeAgIAAIhANACABIQEMTQsgAEHlADYCHCAAIAE2AhQgACAQNgIMQQAhEAysAQsgAEEANgIcIAAgATYCFCAAQdyIgIAANgIQIABBBzYCDEEAIRAMqwELIBBBP0cNASABQQFqIQELQQUhEAyQAQtBACEQIABBADYCHCAAIAE2AhQgAEH9koCAADYCECAAQQc2AgwMqAELIAAoAgQhECAAQQA2AgQCQCAAIBAgARCngICAACIQDQAgASEBDEILIABB0gA2AhwgACABNgIUIAAgEDYCDEEAIRAMpwELIAAoAgQhECAAQQA2AgQCQCAAIBAgARCngICAACIQDQAgASEBDEILIABB0wA2AhwgACABNgIUIAAgEDYCDEEAIRAMpgELIAAoAgQhECAAQQA2AgQCQCAAIBAgARCngICAACIQDQAgASEBDEYLIABB5QA2AhwgACABNgIUIAAgEDYCDEEAIRAMpQELIAAoAgQhASAAQQA2AgQCQCAAIAEgFBCngICAACIBDQAgFCEBDD8LIABB0gA2AhwgACAUNgIUIAAgATYCDEEAIRAMpAELIAAoAgQhASAAQQA2AgQCQCAAIAEgFBCngICAACIBDQAgFCEBDD8LIABB0wA2AhwgACAUNgIUIAAgATYCDEEAIRAMowELIAAoAgQhASAAQQA2AgQCQCAAIAEgFBCngICAACIBDQAgFCEBDEMLIABB5QA2AhwgACAUNgIUIAAgATYCDEEAIRAMogELIABBADYCHCAAIBQ2AhQgAEHDj4CAADYCECAAQQc2AgxBACEQDKEBCyAAQQA2AhwgACABNgIUIABBw4+AgAA2AhAgAEEHNgIMQQAhEAygAQtBACEQIABBADYCHCAAIBQ2AhQgAEGMnICAADYCECAAQQc2AgwMnwELIABBADYCHCAAIBQ2AhQgAEGMnICAADYCECAAQQc2AgxBACEQDJ4BCyAAQQA2AhwgACAUNgIUIABB/pGAgAA2AhAgAEEHNgIMQQAhEAydAQsgAEEANgIcIAAgATYCFCAAQY6bgIAANgIQIABBBjYCDEEAIRAMnAELIBBBFUYNVyAAQQA2AhwgACABNgIUIABBzI6AgAA2AhAgAEEgNgIMQQAhEAybAQsgAEEANgIAIBBBAWohAUEkIRALIAAgEDoAKSAAKAIEIRAgAEEANgIEIAAgECABEKuAgIAAIhANVCABIQEMPgsgAEEANgIAC0EAIRAgAEEANgIcIAAgBDYCFCAAQfGbgIAANgIQIABBBjYCDAyXAQsgAUEVRg1QIABBADYCHCAAIAU2AhQgAEHwjICAADYCECAAQRs2AgxBACEQDJYBCyAAKAIEIQUgAEEANgIEIAAgBSAQEKmAgIAAIgUNASAQQQFqIQULQa0BIRAMewsgAEHBATYCHCAAIAU2AgwgACAQQQFqNgIUQQAhEAyTAQsgACgCBCEGIABBADYCBCAAIAYgEBCpgICAACIGDQEgEEEBaiEGC0GuASEQDHgLIABBwgE2AhwgACAGNgIMIAAgEEEBajYCFEEAIRAMkAELIABBADYCHCAAIAc2AhQgAEGXi4CAADYCECAAQQ02AgxBACEQDI8BCyAAQQA2AhwgACAINgIUIABB45CAgAA2AhAgAEEJNgIMQQAhEAyOAQsgAEEANgIcIAAgCDYCFCAAQZSNgIAANgIQIABBITYCDEEAIRAMjQELQQEhFkEAIRdBACEUQQEhEAsgACAQOgArIAlBAWohCAJAAkAgAC0ALUEQcQ0AAkACQAJAIAAtACoOAwEAAgQLIBZFDQMMAgsgFA0BDAILIBdFDQELIAAoAgQhECAAQQA2AgQgACAQIAgQrYCAgAAiEEUNPSAAQckBNgIcIAAgCDYCFCAAIBA2AgxBACEQDIwBCyAAKAIEIQQgAEEANgIEIAAgBCAIEK2AgIAAIgRFDXYgAEHKATYCHCAAIAg2AhQgACAENgIMQQAhEAyLAQsgACgCBCEEIABBADYCBCAAIAQgCRCtgICAACIERQ10IABBywE2AhwgACAJNgIUIAAgBDYCDEEAIRAMigELIAAoAgQhBCAAQQA2AgQgACAEIAoQrYCAgAAiBEUNciAAQc0BNgIcIAAgCjYCFCAAIAQ2AgxBACEQDIkBCwJAIAstAABBUGoiEEH/AXFBCk8NACAAIBA6ACogC0EBaiEKQbYBIRAMcAsgACgCBCEEIABBADYCBCAAIAQgCxCtgICAACIERQ1wIABBzwE2AhwgACALNgIUIAAgBDYCDEEAIRAMiAELIABBADYCHCAAIAQ2AhQgAEGQs4CAADYCECAAQQg2AgwgAEEANgIAQQAhEAyHAQsgAUEVRg0/IABBADYCHCAAIAw2AhQgAEHMjoCAADYCECAAQSA2AgxBACEQDIYBCyAAQYEEOwEoIAAoAgQhECAAQgA3AwAgACAQIAxBAWoiDBCrgICAACIQRQ04IABB0wE2AhwgACAMNgIUIAAgEDYCDEEAIRAMhQELIABBADYCAAtBACEQIABBADYCHCAAIAQ2AhQgAEHYm4CAADYCECAAQQg2AgwMgwELIAAoAgQhECAAQgA3AwAgACAQIAtBAWoiCxCrgICAACIQDQFBxgEhEAxpCyAAQQI6ACgMVQsgAEHVATYCHCAAIAs2AhQgACAQNgIMQQAhEAyAAQsgEEEVRg03IABBADYCHCAAIAQ2AhQgAEGkjICAADYCECAAQRA2AgxBACEQDH8LIAAtADRBAUcNNCAAIAQgAhC8gICAACIQRQ00IBBBFUcNNSAAQdwBNgIcIAAgBDYCFCAAQdWWgIAANgIQIABBFTYCDEEAIRAMfgtBACEQIABBADYCHCAAQa+LgIAANgIQIABBAjYCDCAAIBRBAWo2AhQMfQtBACEQDGMLQQIhEAxiC0ENIRAMYQtBDyEQDGALQSUhEAxfC0ETIRAMXgtBFSEQDF0LQRYhEAxcC0EXIRAMWwtBGCEQDFoLQRkhEAxZC0EaIRAMWAtBGyEQDFcLQRwhEAxWC0EdIRAMVQtBHyEQDFQLQSEhEAxTC0EjIRAMUgtBxgAhEAxRC0EuIRAMUAtBLyEQDE8LQTshEAxOC0E9IRAMTQtByAAhEAxMC0HJACEQDEsLQcsAIRAMSgtBzAAhEAxJC0HOACEQDEgLQdEAIRAMRwtB1QAhEAxGC0HYACEQDEULQdkAIRAMRAtB2wAhEAxDC0HkACEQDEILQeUAIRAMQQtB8QAhEAxAC0H0ACEQDD8LQY0BIRAMPgtBlwEhEAw9C0GpASEQDDwLQawBIRAMOwtBwAEhEAw6C0G5ASEQDDkLQa8BIRAMOAtBsQEhEAw3C0GyASEQDDYLQbQBIRAMNQtBtQEhEAw0C0G6ASEQDDMLQb0BIRAMMgtBvwEhEAwxC0HBASEQDDALIABBADYCHCAAIAQ2AhQgAEHpi4CAADYCECAAQR82AgxBACEQDEgLIABB2wE2AhwgACAENgIUIABB+paAgAA2AhAgAEEVNgIMQQAhEAxHCyAAQfgANgIcIAAgDDYCFCAAQcqYgIAANgIQIABBFTYCDEEAIRAMRgsgAEHRADYCHCAAIAU2AhQgAEGwl4CAADYCECAAQRU2AgxBACEQDEULIABB+QA2AhwgACABNgIUIAAgEDYCDEEAIRAMRAsgAEH4ADYCHCAAIAE2AhQgAEHKmICAADYCECAAQRU2AgxBACEQDEMLIABB5AA2AhwgACABNgIUIABB45eAgAA2AhAgAEEVNgIMQQAhEAxCCyAAQdcANgIcIAAgATYCFCAAQcmXgIAANgIQIABBFTYCDEEAIRAMQQsgAEEANgIcIAAgATYCFCAAQbmNgIAANgIQIABBGjYCDEEAIRAMQAsgAEHCADYCHCAAIAE2AhQgAEHjmICAADYCECAAQRU2AgxBACEQDD8LIABBADYCBCAAIA8gDxCxgICAACIERQ0BIABBOjYCHCAAIAQ2AgwgACAPQQFqNgIUQQAhEAw+CyAAKAIEIQQgAEEANgIEAkAgACAEIAEQsYCAgAAiBEUNACAAQTs2AhwgACAENgIMIAAgAUEBajYCFEEAIRAMPgsgAUEBaiEBDC0LIA9BAWohAQwtCyAAQQA2AhwgACAPNgIUIABB5JKAgAA2AhAgAEEENgIMQQAhEAw7CyAAQTY2AhwgACAENgIUIAAgAjYCDEEAIRAMOgsgAEEuNgIcIAAgDjYCFCAAIAQ2AgxBACEQDDkLIABB0AA2AhwgACABNgIUIABBkZiAgAA2AhAgAEEVNgIMQQAhEAw4CyANQQFqIQEMLAsgAEEVNgIcIAAgATYCFCAAQYKZgIAANgIQIABBFTYCDEEAIRAMNgsgAEEbNgIcIAAgATYCFCAAQZGXgIAANgIQIABBFTYCDEEAIRAMNQsgAEEPNgIcIAAgATYCFCAAQZGXgIAANgIQIABBFTYCDEEAIRAMNAsgAEELNgIcIAAgATYCFCAAQZGXgIAANgIQIABBFTYCDEEAIRAMMwsgAEEaNgIcIAAgATYCFCAAQYKZgIAANgIQIABBFTYCDEEAIRAMMgsgAEELNgIcIAAgATYCFCAAQYKZgIAANgIQIABBFTYCDEEAIRAMMQsgAEEKNgIcIAAgATYCFCAAQeSWgIAANgIQIABBFTYCDEEAIRAMMAsgAEEeNgIcIAAgATYCFCAAQfmXgIAANgIQIABBFTYCDEEAIRAMLwsgAEEANgIcIAAgEDYCFCAAQdqNgIAANgIQIABBFDYCDEEAIRAMLgsgAEEENgIcIAAgATYCFCAAQbCYgIAANgIQIABBFTYCDEEAIRAMLQsgAEEANgIAIAtBAWohCwtBuAEhEAwSCyAAQQA2AgAgEEEBaiEBQfUAIRAMEQsgASEBAkAgAC0AKUEFRw0AQeMAIRAMEQtB4gAhEAwQC0EAIRAgAEEANgIcIABB5JGAgAA2AhAgAEEHNgIMIAAgFEEBajYCFAwoCyAAQQA2AgAgF0EBaiEBQcAAIRAMDgtBASEBCyAAIAE6ACwgAEEANgIAIBdBAWohAQtBKCEQDAsLIAEhAQtBOCEQDAkLAkAgASIPIAJGDQADQAJAIA8tAABBgL6AgABqLQAAIgFBAUYNACABQQJHDQMgD0EBaiEBDAQLIA9BAWoiDyACRw0AC0E+IRAMIgtBPiEQDCELIABBADoALCAPIQEMAQtBCyEQDAYLQTohEAwFCyABQQFqIQFBLSEQDAQLIAAgAToALCAAQQA2AgAgFkEBaiEBQQwhEAwDCyAAQQA2AgAgF0EBaiEBQQohEAwCCyAAQQA2AgALIABBADoALCANIQFBCSEQDAALC0EAIRAgAEEANgIcIAAgCzYCFCAAQc2QgIAANgIQIABBCTYCDAwXC0EAIRAgAEEANgIcIAAgCjYCFCAAQemKgIAANgIQIABBCTYCDAwWC0EAIRAgAEEANgIcIAAgCTYCFCAAQbeQgIAANgIQIABBCTYCDAwVC0EAIRAgAEEANgIcIAAgCDYCFCAAQZyRgIAANgIQIABBCTYCDAwUC0EAIRAgAEEANgIcIAAgATYCFCAAQc2QgIAANgIQIABBCTYCDAwTC0EAIRAgAEEANgIcIAAgATYCFCAAQemKgIAANgIQIABBCTYCDAwSC0EAIRAgAEEANgIcIAAgATYCFCAAQbeQgIAANgIQIABBCTYCDAwRC0EAIRAgAEEANgIcIAAgATYCFCAAQZyRgIAANgIQIABBCTYCDAwQC0EAIRAgAEEANgIcIAAgATYCFCAAQZeVgIAANgIQIABBDzYCDAwPC0EAIRAgAEEANgIcIAAgATYCFCAAQZeVgIAANgIQIABBDzYCDAwOC0EAIRAgAEEANgIcIAAgATYCFCAAQcCSgIAANgIQIABBCzYCDAwNC0EAIRAgAEEANgIcIAAgATYCFCAAQZWJgIAANgIQIABBCzYCDAwMC0EAIRAgAEEANgIcIAAgATYCFCAAQeGPgIAANgIQIABBCjYCDAwLC0EAIRAgAEEANgIcIAAgATYCFCAAQfuPgIAANgIQIABBCjYCDAwKC0EAIRAgAEEANgIcIAAgATYCFCAAQfGZgIAANgIQIABBAjYCDAwJC0EAIRAgAEEANgIcIAAgATYCFCAAQcSUgIAANgIQIABBAjYCDAwIC0EAIRAgAEEANgIcIAAgATYCFCAAQfKVgIAANgIQIABBAjYCDAwHCyAAQQI2AhwgACABNgIUIABBnJqAgAA2AhAgAEEWNgIMQQAhEAwGC0EBIRAMBQtB1AAhECABIgQgAkYNBCADQQhqIAAgBCACQdjCgIAAQQoQxYCAgAAgAygCDCEEIAMoAggOAwEEAgALEMqAgIAAAAsgAEEANgIcIABBtZqAgAA2AhAgAEEXNgIMIAAgBEEBajYCFEEAIRAMAgsgAEEANgIcIAAgBDYCFCAAQcqagIAANgIQIABBCTYCDEEAIRAMAQsCQCABIgQgAkcNAEEiIRAMAQsgAEGJgICAADYCCCAAIAQ2AgRBISEQCyADQRBqJICAgIAAIBALrwEBAn8gASgCACEGAkACQCACIANGDQAgBCAGaiEEIAYgA2ogAmshByACIAZBf3MgBWoiBmohBQNAAkAgAi0AACAELQAARg0AQQIhBAwDCwJAIAYNAEEAIQQgBSECDAMLIAZBf2ohBiAEQQFqIQQgAkEBaiICIANHDQALIAchBiADIQILIABBATYCACABIAY2AgAgACACNgIEDwsgAUEANgIAIAAgBDYCACAAIAI2AgQLCgAgABDHgICAAAvyNgELfyOAgICAAEEQayIBJICAgIAAAkBBACgCoNCAgAANAEEAEMuAgIAAQYDUhIAAayICQdkASQ0AQQAhAwJAQQAoAuDTgIAAIgQNAEEAQn83AuzTgIAAQQBCgICEgICAwAA3AuTTgIAAQQAgAUEIakFwcUHYqtWqBXMiBDYC4NOAgABBAEEANgL004CAAEEAQQA2AsTTgIAAC0EAIAI2AszTgIAAQQBBgNSEgAA2AsjTgIAAQQBBgNSEgAA2ApjQgIAAQQAgBDYCrNCAgABBAEF/NgKo0ICAAANAIANBxNCAgABqIANBuNCAgABqIgQ2AgAgBCADQbDQgIAAaiIFNgIAIANBvNCAgABqIAU2AgAgA0HM0ICAAGogA0HA0ICAAGoiBTYCACAFIAQ2AgAgA0HU0ICAAGogA0HI0ICAAGoiBDYCACAEIAU2AgAgA0HQ0ICAAGogBDYCACADQSBqIgNBgAJHDQALQYDUhIAAQXhBgNSEgABrQQ9xQQBBgNSEgABBCGpBD3EbIgNqIgRBBGogAkFIaiIFIANrIgNBAXI2AgBBAEEAKALw04CAADYCpNCAgABBACADNgKU0ICAAEEAIAQ2AqDQgIAAQYDUhIAAIAVqQTg2AgQLAkACQAJAAkACQAJAAkACQAJAAkACQAJAIABB7AFLDQACQEEAKAKI0ICAACIGQRAgAEETakFwcSAAQQtJGyICQQN2IgR2IgNBA3FFDQACQAJAIANBAXEgBHJBAXMiBUEDdCIEQbDQgIAAaiIDIARBuNCAgABqKAIAIgQoAggiAkcNAEEAIAZBfiAFd3E2AojQgIAADAELIAMgAjYCCCACIAM2AgwLIARBCGohAyAEIAVBA3QiBUEDcjYCBCAEIAVqIgQgBCgCBEEBcjYCBAwMCyACQQAoApDQgIAAIgdNDQECQCADRQ0AAkACQCADIAR0QQIgBHQiA0EAIANrcnEiA0EAIANrcUF/aiIDIANBDHZBEHEiA3YiBEEFdkEIcSIFIANyIAQgBXYiA0ECdkEEcSIEciADIAR2IgNBAXZBAnEiBHIgAyAEdiIDQQF2QQFxIgRyIAMgBHZqIgRBA3QiA0Gw0ICAAGoiBSADQbjQgIAAaigCACIDKAIIIgBHDQBBACAGQX4gBHdxIgY2AojQgIAADAELIAUgADYCCCAAIAU2AgwLIAMgAkEDcjYCBCADIARBA3QiBGogBCACayIFNgIAIAMgAmoiACAFQQFyNgIEAkAgB0UNACAHQXhxQbDQgIAAaiECQQAoApzQgIAAIQQCQAJAIAZBASAHQQN2dCIIcQ0AQQAgBiAIcjYCiNCAgAAgAiEIDAELIAIoAgghCAsgCCAENgIMIAIgBDYCCCAEIAI2AgwgBCAINgIICyADQQhqIQNBACAANgKc0ICAAEEAIAU2ApDQgIAADAwLQQAoAozQgIAAIglFDQEgCUEAIAlrcUF/aiIDIANBDHZBEHEiA3YiBEEFdkEIcSIFIANyIAQgBXYiA0ECdkEEcSIEciADIAR2IgNBAXZBAnEiBHIgAyAEdiIDQQF2QQFxIgRyIAMgBHZqQQJ0QbjSgIAAaigCACIAKAIEQXhxIAJrIQQgACEFAkADQAJAIAUoAhAiAw0AIAVBFGooAgAiA0UNAgsgAygCBEF4cSACayIFIAQgBSAESSIFGyEEIAMgACAFGyEAIAMhBQwACwsgACgCGCEKAkAgACgCDCIIIABGDQAgACgCCCIDQQAoApjQgIAASRogCCADNgIIIAMgCDYCDAwLCwJAIABBFGoiBSgCACIDDQAgACgCECIDRQ0DIABBEGohBQsDQCAFIQsgAyIIQRRqIgUoAgAiAw0AIAhBEGohBSAIKAIQIgMNAAsgC0EANgIADAoLQX8hAiAAQb9/Sw0AIABBE2oiA0FwcSECQQAoAozQgIAAIgdFDQBBACELAkAgAkGAAkkNAEEfIQsgAkH///8HSw0AIANBCHYiAyADQYD+P2pBEHZBCHEiA3QiBCAEQYDgH2pBEHZBBHEiBHQiBSAFQYCAD2pBEHZBAnEiBXRBD3YgAyAEciAFcmsiA0EBdCACIANBFWp2QQFxckEcaiELC0EAIAJrIQQCQAJAAkACQCALQQJ0QbjSgIAAaigCACIFDQBBACEDQQAhCAwBC0EAIQMgAkEAQRkgC0EBdmsgC0EfRht0IQBBACEIA0ACQCAFKAIEQXhxIAJrIgYgBE8NACAGIQQgBSEIIAYNAEEAIQQgBSEIIAUhAwwDCyADIAVBFGooAgAiBiAGIAUgAEEddkEEcWpBEGooAgAiBUYbIAMgBhshAyAAQQF0IQAgBQ0ACwsCQCADIAhyDQBBACEIQQIgC3QiA0EAIANrciAHcSIDRQ0DIANBACADa3FBf2oiAyADQQx2QRBxIgN2IgVBBXZBCHEiACADciAFIAB2IgNBAnZBBHEiBXIgAyAFdiIDQQF2QQJxIgVyIAMgBXYiA0EBdkEBcSIFciADIAV2akECdEG40oCAAGooAgAhAwsgA0UNAQsDQCADKAIEQXhxIAJrIgYgBEkhAAJAIAMoAhAiBQ0AIANBFGooAgAhBQsgBiAEIAAbIQQgAyAIIAAbIQggBSEDIAUNAAsLIAhFDQAgBEEAKAKQ0ICAACACa08NACAIKAIYIQsCQCAIKAIMIgAgCEYNACAIKAIIIgNBACgCmNCAgABJGiAAIAM2AgggAyAANgIMDAkLAkAgCEEUaiIFKAIAIgMNACAIKAIQIgNFDQMgCEEQaiEFCwNAIAUhBiADIgBBFGoiBSgCACIDDQAgAEEQaiEFIAAoAhAiAw0ACyAGQQA2AgAMCAsCQEEAKAKQ0ICAACIDIAJJDQBBACgCnNCAgAAhBAJAAkAgAyACayIFQRBJDQAgBCACaiIAIAVBAXI2AgRBACAFNgKQ0ICAAEEAIAA2ApzQgIAAIAQgA2ogBTYCACAEIAJBA3I2AgQMAQsgBCADQQNyNgIEIAQgA2oiAyADKAIEQQFyNgIEQQBBADYCnNCAgABBAEEANgKQ0ICAAAsgBEEIaiEDDAoLAkBBACgClNCAgAAiACACTQ0AQQAoAqDQgIAAIgMgAmoiBCAAIAJrIgVBAXI2AgRBACAFNgKU0ICAAEEAIAQ2AqDQgIAAIAMgAkEDcjYCBCADQQhqIQMMCgsCQAJAQQAoAuDTgIAARQ0AQQAoAujTgIAAIQQMAQtBAEJ/NwLs04CAAEEAQoCAhICAgMAANwLk04CAAEEAIAFBDGpBcHFB2KrVqgVzNgLg04CAAEEAQQA2AvTTgIAAQQBBADYCxNOAgABBgIAEIQQLQQAhAwJAIAQgAkHHAGoiB2oiBkEAIARrIgtxIgggAksNAEEAQTA2AvjTgIAADAoLAkBBACgCwNOAgAAiA0UNAAJAQQAoArjTgIAAIgQgCGoiBSAETQ0AIAUgA00NAQtBACEDQQBBMDYC+NOAgAAMCgtBAC0AxNOAgABBBHENBAJAAkACQEEAKAKg0ICAACIERQ0AQcjTgIAAIQMDQAJAIAMoAgAiBSAESw0AIAUgAygCBGogBEsNAwsgAygCCCIDDQALC0EAEMuAgIAAIgBBf0YNBSAIIQYCQEEAKALk04CAACIDQX9qIgQgAHFFDQAgCCAAayAEIABqQQAgA2txaiEGCyAGIAJNDQUgBkH+////B0sNBQJAQQAoAsDTgIAAIgNFDQBBACgCuNOAgAAiBCAGaiIFIARNDQYgBSADSw0GCyAGEMuAgIAAIgMgAEcNAQwHCyAGIABrIAtxIgZB/v///wdLDQQgBhDLgICAACIAIAMoAgAgAygCBGpGDQMgACEDCwJAIANBf0YNACACQcgAaiAGTQ0AAkAgByAGa0EAKALo04CAACIEakEAIARrcSIEQf7///8HTQ0AIAMhAAwHCwJAIAQQy4CAgABBf0YNACAEIAZqIQYgAyEADAcLQQAgBmsQy4CAgAAaDAQLIAMhACADQX9HDQUMAwtBACEIDAcLQQAhAAwFCyAAQX9HDQILQQBBACgCxNOAgABBBHI2AsTTgIAACyAIQf7///8HSw0BIAgQy4CAgAAhAEEAEMuAgIAAIQMgAEF/Rg0BIANBf0YNASAAIANPDQEgAyAAayIGIAJBOGpNDQELQQBBACgCuNOAgAAgBmoiAzYCuNOAgAACQCADQQAoArzTgIAATQ0AQQAgAzYCvNOAgAALAkACQAJAAkBBACgCoNCAgAAiBEUNAEHI04CAACEDA0AgACADKAIAIgUgAygCBCIIakYNAiADKAIIIgMNAAwDCwsCQAJAQQAoApjQgIAAIgNFDQAgACADTw0BC0EAIAA2ApjQgIAAC0EAIQNBACAGNgLM04CAAEEAIAA2AsjTgIAAQQBBfzYCqNCAgABBAEEAKALg04CAADYCrNCAgABBAEEANgLU04CAAANAIANBxNCAgABqIANBuNCAgABqIgQ2AgAgBCADQbDQgIAAaiIFNgIAIANBvNCAgABqIAU2AgAgA0HM0ICAAGogA0HA0ICAAGoiBTYCACAFIAQ2AgAgA0HU0ICAAGogA0HI0ICAAGoiBDYCACAEIAU2AgAgA0HQ0ICAAGogBDYCACADQSBqIgNBgAJHDQALIABBeCAAa0EPcUEAIABBCGpBD3EbIgNqIgQgBkFIaiIFIANrIgNBAXI2AgRBAEEAKALw04CAADYCpNCAgABBACADNgKU0ICAAEEAIAQ2AqDQgIAAIAAgBWpBODYCBAwCCyADLQAMQQhxDQAgBCAFSQ0AIAQgAE8NACAEQXggBGtBD3FBACAEQQhqQQ9xGyIFaiIAQQAoApTQgIAAIAZqIgsgBWsiBUEBcjYCBCADIAggBmo2AgRBAEEAKALw04CAADYCpNCAgABBACAFNgKU0ICAAEEAIAA2AqDQgIAAIAQgC2pBODYCBAwBCwJAIABBACgCmNCAgAAiCE8NAEEAIAA2ApjQgIAAIAAhCAsgACAGaiEFQcjTgIAAIQMCQAJAAkACQAJAAkACQANAIAMoAgAgBUYNASADKAIIIgMNAAwCCwsgAy0ADEEIcUUNAQtByNOAgAAhAwNAAkAgAygCACIFIARLDQAgBSADKAIEaiIFIARLDQMLIAMoAgghAwwACwsgAyAANgIAIAMgAygCBCAGajYCBCAAQXggAGtBD3FBACAAQQhqQQ9xG2oiCyACQQNyNgIEIAVBeCAFa0EPcUEAIAVBCGpBD3EbaiIGIAsgAmoiAmshAwJAIAYgBEcNAEEAIAI2AqDQgIAAQQBBACgClNCAgAAgA2oiAzYClNCAgAAgAiADQQFyNgIEDAMLAkAgBkEAKAKc0ICAAEcNAEEAIAI2ApzQgIAAQQBBACgCkNCAgAAgA2oiAzYCkNCAgAAgAiADQQFyNgIEIAIgA2ogAzYCAAwDCwJAIAYoAgQiBEEDcUEBRw0AIARBeHEhBwJAAkAgBEH/AUsNACAGKAIIIgUgBEEDdiIIQQN0QbDQgIAAaiIARhoCQCAGKAIMIgQgBUcNAEEAQQAoAojQgIAAQX4gCHdxNgKI0ICAAAwCCyAEIABGGiAEIAU2AgggBSAENgIMDAELIAYoAhghCQJAAkAgBigCDCIAIAZGDQAgBigCCCIEIAhJGiAAIAQ2AgggBCAANgIMDAELAkAgBkEUaiIEKAIAIgUNACAGQRBqIgQoAgAiBQ0AQQAhAAwBCwNAIAQhCCAFIgBBFGoiBCgCACIFDQAgAEEQaiEEIAAoAhAiBQ0ACyAIQQA2AgALIAlFDQACQAJAIAYgBigCHCIFQQJ0QbjSgIAAaiIEKAIARw0AIAQgADYCACAADQFBAEEAKAKM0ICAAEF+IAV3cTYCjNCAgAAMAgsgCUEQQRQgCSgCECAGRhtqIAA2AgAgAEUNAQsgACAJNgIYAkAgBigCECIERQ0AIAAgBDYCECAEIAA2AhgLIAYoAhQiBEUNACAAQRRqIAQ2AgAgBCAANgIYCyAHIANqIQMgBiAHaiIGKAIEIQQLIAYgBEF+cTYCBCACIANqIAM2AgAgAiADQQFyNgIEAkAgA0H/AUsNACADQXhxQbDQgIAAaiEEAkACQEEAKAKI0ICAACIFQQEgA0EDdnQiA3ENAEEAIAUgA3I2AojQgIAAIAQhAwwBCyAEKAIIIQMLIAMgAjYCDCAEIAI2AgggAiAENgIMIAIgAzYCCAwDC0EfIQQCQCADQf///wdLDQAgA0EIdiIEIARBgP4/akEQdkEIcSIEdCIFIAVBgOAfakEQdkEEcSIFdCIAIABBgIAPakEQdkECcSIAdEEPdiAEIAVyIAByayIEQQF0IAMgBEEVanZBAXFyQRxqIQQLIAIgBDYCHCACQgA3AhAgBEECdEG40oCAAGohBQJAQQAoAozQgIAAIgBBASAEdCIIcQ0AIAUgAjYCAEEAIAAgCHI2AozQgIAAIAIgBTYCGCACIAI2AgggAiACNgIMDAMLIANBAEEZIARBAXZrIARBH0YbdCEEIAUoAgAhAANAIAAiBSgCBEF4cSADRg0CIARBHXYhACAEQQF0IQQgBSAAQQRxakEQaiIIKAIAIgANAAsgCCACNgIAIAIgBTYCGCACIAI2AgwgAiACNgIIDAILIABBeCAAa0EPcUEAIABBCGpBD3EbIgNqIgsgBkFIaiIIIANrIgNBAXI2AgQgACAIakE4NgIEIAQgBUE3IAVrQQ9xQQAgBUFJakEPcRtqQUFqIgggCCAEQRBqSRsiCEEjNgIEQQBBACgC8NOAgAA2AqTQgIAAQQAgAzYClNCAgABBACALNgKg0ICAACAIQRBqQQApAtDTgIAANwIAIAhBACkCyNOAgAA3AghBACAIQQhqNgLQ04CAAEEAIAY2AszTgIAAQQAgADYCyNOAgABBAEEANgLU04CAACAIQSRqIQMDQCADQQc2AgAgA0EEaiIDIAVJDQALIAggBEYNAyAIIAgoAgRBfnE2AgQgCCAIIARrIgA2AgAgBCAAQQFyNgIEAkAgAEH/AUsNACAAQXhxQbDQgIAAaiEDAkACQEEAKAKI0ICAACIFQQEgAEEDdnQiAHENAEEAIAUgAHI2AojQgIAAIAMhBQwBCyADKAIIIQULIAUgBDYCDCADIAQ2AgggBCADNgIMIAQgBTYCCAwEC0EfIQMCQCAAQf///wdLDQAgAEEIdiIDIANBgP4/akEQdkEIcSIDdCIFIAVBgOAfakEQdkEEcSIFdCIIIAhBgIAPakEQdkECcSIIdEEPdiADIAVyIAhyayIDQQF0IAAgA0EVanZBAXFyQRxqIQMLIAQgAzYCHCAEQgA3AhAgA0ECdEG40oCAAGohBQJAQQAoAozQgIAAIghBASADdCIGcQ0AIAUgBDYCAEEAIAggBnI2AozQgIAAIAQgBTYCGCAEIAQ2AgggBCAENgIMDAQLIABBAEEZIANBAXZrIANBH0YbdCEDIAUoAgAhCANAIAgiBSgCBEF4cSAARg0DIANBHXYhCCADQQF0IQMgBSAIQQRxakEQaiIGKAIAIggNAAsgBiAENgIAIAQgBTYCGCAEIAQ2AgwgBCAENgIIDAMLIAUoAggiAyACNgIMIAUgAjYCCCACQQA2AhggAiAFNgIMIAIgAzYCCAsgC0EIaiEDDAULIAUoAggiAyAENgIMIAUgBDYCCCAEQQA2AhggBCAFNgIMIAQgAzYCCAtBACgClNCAgAAiAyACTQ0AQQAoAqDQgIAAIgQgAmoiBSADIAJrIgNBAXI2AgRBACADNgKU0ICAAEEAIAU2AqDQgIAAIAQgAkEDcjYCBCAEQQhqIQMMAwtBACEDQQBBMDYC+NOAgAAMAgsCQCALRQ0AAkACQCAIIAgoAhwiBUECdEG40oCAAGoiAygCAEcNACADIAA2AgAgAA0BQQAgB0F+IAV3cSIHNgKM0ICAAAwCCyALQRBBFCALKAIQIAhGG2ogADYCACAARQ0BCyAAIAs2AhgCQCAIKAIQIgNFDQAgACADNgIQIAMgADYCGAsgCEEUaigCACIDRQ0AIABBFGogAzYCACADIAA2AhgLAkACQCAEQQ9LDQAgCCAEIAJqIgNBA3I2AgQgCCADaiIDIAMoAgRBAXI2AgQMAQsgCCACaiIAIARBAXI2AgQgCCACQQNyNgIEIAAgBGogBDYCAAJAIARB/wFLDQAgBEF4cUGw0ICAAGohAwJAAkBBACgCiNCAgAAiBUEBIARBA3Z0IgRxDQBBACAFIARyNgKI0ICAACADIQQMAQsgAygCCCEECyAEIAA2AgwgAyAANgIIIAAgAzYCDCAAIAQ2AggMAQtBHyEDAkAgBEH///8HSw0AIARBCHYiAyADQYD+P2pBEHZBCHEiA3QiBSAFQYDgH2pBEHZBBHEiBXQiAiACQYCAD2pBEHZBAnEiAnRBD3YgAyAFciACcmsiA0EBdCAEIANBFWp2QQFxckEcaiEDCyAAIAM2AhwgAEIANwIQIANBAnRBuNKAgABqIQUCQCAHQQEgA3QiAnENACAFIAA2AgBBACAHIAJyNgKM0ICAACAAIAU2AhggACAANgIIIAAgADYCDAwBCyAEQQBBGSADQQF2ayADQR9GG3QhAyAFKAIAIQICQANAIAIiBSgCBEF4cSAERg0BIANBHXYhAiADQQF0IQMgBSACQQRxakEQaiIGKAIAIgINAAsgBiAANgIAIAAgBTYCGCAAIAA2AgwgACAANgIIDAELIAUoAggiAyAANgIMIAUgADYCCCAAQQA2AhggACAFNgIMIAAgAzYCCAsgCEEIaiEDDAELAkAgCkUNAAJAAkAgACAAKAIcIgVBAnRBuNKAgABqIgMoAgBHDQAgAyAINgIAIAgNAUEAIAlBfiAFd3E2AozQgIAADAILIApBEEEUIAooAhAgAEYbaiAINgIAIAhFDQELIAggCjYCGAJAIAAoAhAiA0UNACAIIAM2AhAgAyAINgIYCyAAQRRqKAIAIgNFDQAgCEEUaiADNgIAIAMgCDYCGAsCQAJAIARBD0sNACAAIAQgAmoiA0EDcjYCBCAAIANqIgMgAygCBEEBcjYCBAwBCyAAIAJqIgUgBEEBcjYCBCAAIAJBA3I2AgQgBSAEaiAENgIAAkAgB0UNACAHQXhxQbDQgIAAaiECQQAoApzQgIAAIQMCQAJAQQEgB0EDdnQiCCAGcQ0AQQAgCCAGcjYCiNCAgAAgAiEIDAELIAIoAgghCAsgCCADNgIMIAIgAzYCCCADIAI2AgwgAyAINgIIC0EAIAU2ApzQgIAAQQAgBDYCkNCAgAALIABBCGohAwsgAUEQaiSAgICAACADCwoAIAAQyYCAgAAL4g0BB38CQCAARQ0AIABBeGoiASAAQXxqKAIAIgJBeHEiAGohAwJAIAJBAXENACACQQNxRQ0BIAEgASgCACICayIBQQAoApjQgIAAIgRJDQEgAiAAaiEAAkAgAUEAKAKc0ICAAEYNAAJAIAJB/wFLDQAgASgCCCIEIAJBA3YiBUEDdEGw0ICAAGoiBkYaAkAgASgCDCICIARHDQBBAEEAKAKI0ICAAEF+IAV3cTYCiNCAgAAMAwsgAiAGRhogAiAENgIIIAQgAjYCDAwCCyABKAIYIQcCQAJAIAEoAgwiBiABRg0AIAEoAggiAiAESRogBiACNgIIIAIgBjYCDAwBCwJAIAFBFGoiAigCACIEDQAgAUEQaiICKAIAIgQNAEEAIQYMAQsDQCACIQUgBCIGQRRqIgIoAgAiBA0AIAZBEGohAiAGKAIQIgQNAAsgBUEANgIACyAHRQ0BAkACQCABIAEoAhwiBEECdEG40oCAAGoiAigCAEcNACACIAY2AgAgBg0BQQBBACgCjNCAgABBfiAEd3E2AozQgIAADAMLIAdBEEEUIAcoAhAgAUYbaiAGNgIAIAZFDQILIAYgBzYCGAJAIAEoAhAiAkUNACAGIAI2AhAgAiAGNgIYCyABKAIUIgJFDQEgBkEUaiACNgIAIAIgBjYCGAwBCyADKAIEIgJBA3FBA0cNACADIAJBfnE2AgRBACAANgKQ0ICAACABIABqIAA2AgAgASAAQQFyNgIEDwsgASADTw0AIAMoAgQiAkEBcUUNAAJAAkAgAkECcQ0AAkAgA0EAKAKg0ICAAEcNAEEAIAE2AqDQgIAAQQBBACgClNCAgAAgAGoiADYClNCAgAAgASAAQQFyNgIEIAFBACgCnNCAgABHDQNBAEEANgKQ0ICAAEEAQQA2ApzQgIAADwsCQCADQQAoApzQgIAARw0AQQAgATYCnNCAgABBAEEAKAKQ0ICAACAAaiIANgKQ0ICAACABIABBAXI2AgQgASAAaiAANgIADwsgAkF4cSAAaiEAAkACQCACQf8BSw0AIAMoAggiBCACQQN2IgVBA3RBsNCAgABqIgZGGgJAIAMoAgwiAiAERw0AQQBBACgCiNCAgABBfiAFd3E2AojQgIAADAILIAIgBkYaIAIgBDYCCCAEIAI2AgwMAQsgAygCGCEHAkACQCADKAIMIgYgA0YNACADKAIIIgJBACgCmNCAgABJGiAGIAI2AgggAiAGNgIMDAELAkAgA0EUaiICKAIAIgQNACADQRBqIgIoAgAiBA0AQQAhBgwBCwNAIAIhBSAEIgZBFGoiAigCACIEDQAgBkEQaiECIAYoAhAiBA0ACyAFQQA2AgALIAdFDQACQAJAIAMgAygCHCIEQQJ0QbjSgIAAaiICKAIARw0AIAIgBjYCACAGDQFBAEEAKAKM0ICAAEF+IAR3cTYCjNCAgAAMAgsgB0EQQRQgBygCECADRhtqIAY2AgAgBkUNAQsgBiAHNgIYAkAgAygCECICRQ0AIAYgAjYCECACIAY2AhgLIAMoAhQiAkUNACAGQRRqIAI2AgAgAiAGNgIYCyABIABqIAA2AgAgASAAQQFyNgIEIAFBACgCnNCAgABHDQFBACAANgKQ0ICAAA8LIAMgAkF+cTYCBCABIABqIAA2AgAgASAAQQFyNgIECwJAIABB/wFLDQAgAEF4cUGw0ICAAGohAgJAAkBBACgCiNCAgAAiBEEBIABBA3Z0IgBxDQBBACAEIAByNgKI0ICAACACIQAMAQsgAigCCCEACyAAIAE2AgwgAiABNgIIIAEgAjYCDCABIAA2AggPC0EfIQICQCAAQf///wdLDQAgAEEIdiICIAJBgP4/akEQdkEIcSICdCIEIARBgOAfakEQdkEEcSIEdCIGIAZBgIAPakEQdkECcSIGdEEPdiACIARyIAZyayICQQF0IAAgAkEVanZBAXFyQRxqIQILIAEgAjYCHCABQgA3AhAgAkECdEG40oCAAGohBAJAAkBBACgCjNCAgAAiBkEBIAJ0IgNxDQAgBCABNgIAQQAgBiADcjYCjNCAgAAgASAENgIYIAEgATYCCCABIAE2AgwMAQsgAEEAQRkgAkEBdmsgAkEfRht0IQIgBCgCACEGAkADQCAGIgQoAgRBeHEgAEYNASACQR12IQYgAkEBdCECIAQgBkEEcWpBEGoiAygCACIGDQALIAMgATYCACABIAQ2AhggASABNgIMIAEgATYCCAwBCyAEKAIIIgAgATYCDCAEIAE2AgggAUEANgIYIAEgBDYCDCABIAA2AggLQQBBACgCqNCAgABBf2oiAUF/IAEbNgKo0ICAAAsLBAAAAAtOAAJAIAANAD8AQRB0DwsCQCAAQf//A3ENACAAQX9MDQACQCAAQRB2QAAiAEF/Rw0AQQBBMDYC+NOAgABBfw8LIABBEHQPCxDKgICAAAAL8gICA38BfgJAIAJFDQAgACABOgAAIAIgAGoiA0F/aiABOgAAIAJBA0kNACAAIAE6AAIgACABOgABIANBfWogAToAACADQX5qIAE6AAAgAkEHSQ0AIAAgAToAAyADQXxqIAE6AAAgAkEJSQ0AIABBACAAa0EDcSIEaiIDIAFB/wFxQYGChAhsIgE2AgAgAyACIARrQXxxIgRqIgJBfGogATYCACAEQQlJDQAgAyABNgIIIAMgATYCBCACQXhqIAE2AgAgAkF0aiABNgIAIARBGUkNACADIAE2AhggAyABNgIUIAMgATYCECADIAE2AgwgAkFwaiABNgIAIAJBbGogATYCACACQWhqIAE2AgAgAkFkaiABNgIAIAQgA0EEcUEYciIFayICQSBJDQAgAa1CgYCAgBB+IQYgAyAFaiEBA0AgASAGNwMYIAEgBjcDECABIAY3AwggASAGNwMAIAFBIGohASACQWBqIgJBH0sNAAsLIAALC45IAQBBgAgLhkgBAAAAAgAAAAMAAAAAAAAAAAAAAAQAAAAFAAAAAAAAAAAAAAAGAAAABwAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEludmFsaWQgY2hhciBpbiB1cmwgcXVlcnkAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9ib2R5AENvbnRlbnQtTGVuZ3RoIG92ZXJmbG93AENodW5rIHNpemUgb3ZlcmZsb3cAUmVzcG9uc2Ugb3ZlcmZsb3cASW52YWxpZCBtZXRob2QgZm9yIEhUVFAveC54IHJlcXVlc3QASW52YWxpZCBtZXRob2QgZm9yIFJUU1AveC54IHJlcXVlc3QARXhwZWN0ZWQgU09VUkNFIG1ldGhvZCBmb3IgSUNFL3gueCByZXF1ZXN0AEludmFsaWQgY2hhciBpbiB1cmwgZnJhZ21lbnQgc3RhcnQARXhwZWN0ZWQgZG90AFNwYW4gY2FsbGJhY2sgZXJyb3IgaW4gb25fc3RhdHVzAEludmFsaWQgcmVzcG9uc2Ugc3RhdHVzAEludmFsaWQgY2hhcmFjdGVyIGluIGNodW5rIGV4dGVuc2lvbnMAVXNlciBjYWxsYmFjayBlcnJvcgBgb25fcmVzZXRgIGNhbGxiYWNrIGVycm9yAGBvbl9jaHVua19oZWFkZXJgIGNhbGxiYWNrIGVycm9yAGBvbl9tZXNzYWdlX2JlZ2luYCBjYWxsYmFjayBlcnJvcgBgb25fY2h1bmtfZXh0ZW5zaW9uX3ZhbHVlYCBjYWxsYmFjayBlcnJvcgBgb25fc3RhdHVzX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fdmVyc2lvbl9jb21wbGV0ZWAgY2FsbGJhY2sgZXJyb3IAYG9uX3VybF9jb21wbGV0ZWAgY2FsbGJhY2sgZXJyb3IAYG9uX2NodW5rX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25faGVhZGVyX3ZhbHVlX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fbWVzc2FnZV9jb21wbGV0ZWAgY2FsbGJhY2sgZXJyb3IAYG9uX21ldGhvZF9jb21wbGV0ZWAgY2FsbGJhY2sgZXJyb3IAYG9uX2hlYWRlcl9maWVsZF9jb21wbGV0ZWAgY2FsbGJhY2sgZXJyb3IAYG9uX2NodW5rX2V4dGVuc2lvbl9uYW1lYCBjYWxsYmFjayBlcnJvcgBVbmV4cGVjdGVkIGNoYXIgaW4gdXJsIHNlcnZlcgBJbnZhbGlkIGhlYWRlciB2YWx1ZSBjaGFyAEludmFsaWQgaGVhZGVyIGZpZWxkIGNoYXIAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl92ZXJzaW9uAEludmFsaWQgbWlub3IgdmVyc2lvbgBJbnZhbGlkIG1ham9yIHZlcnNpb24ARXhwZWN0ZWQgc3BhY2UgYWZ0ZXIgdmVyc2lvbgBFeHBlY3RlZCBDUkxGIGFmdGVyIHZlcnNpb24ASW52YWxpZCBIVFRQIHZlcnNpb24ASW52YWxpZCBoZWFkZXIgdG9rZW4AU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl91cmwASW52YWxpZCBjaGFyYWN0ZXJzIGluIHVybABVbmV4cGVjdGVkIHN0YXJ0IGNoYXIgaW4gdXJsAERvdWJsZSBAIGluIHVybABFbXB0eSBDb250ZW50LUxlbmd0aABJbnZhbGlkIGNoYXJhY3RlciBpbiBDb250ZW50LUxlbmd0aABEdXBsaWNhdGUgQ29udGVudC1MZW5ndGgASW52YWxpZCBjaGFyIGluIHVybCBwYXRoAENvbnRlbnQtTGVuZ3RoIGNhbid0IGJlIHByZXNlbnQgd2l0aCBUcmFuc2Zlci1FbmNvZGluZwBJbnZhbGlkIGNoYXJhY3RlciBpbiBjaHVuayBzaXplAFNwYW4gY2FsbGJhY2sgZXJyb3IgaW4gb25faGVhZGVyX3ZhbHVlAFNwYW4gY2FsbGJhY2sgZXJyb3IgaW4gb25fY2h1bmtfZXh0ZW5zaW9uX3ZhbHVlAEludmFsaWQgY2hhcmFjdGVyIGluIGNodW5rIGV4dGVuc2lvbnMgdmFsdWUATWlzc2luZyBleHBlY3RlZCBMRiBhZnRlciBoZWFkZXIgdmFsdWUASW52YWxpZCBgVHJhbnNmZXItRW5jb2RpbmdgIGhlYWRlciB2YWx1ZQBJbnZhbGlkIGNoYXJhY3RlciBpbiBjaHVuayBleHRlbnNpb25zIHF1b3RlIHZhbHVlAEludmFsaWQgY2hhcmFjdGVyIGluIGNodW5rIGV4dGVuc2lvbnMgcXVvdGVkIHZhbHVlAFBhdXNlZCBieSBvbl9oZWFkZXJzX2NvbXBsZXRlAEludmFsaWQgRU9GIHN0YXRlAG9uX3Jlc2V0IHBhdXNlAG9uX2NodW5rX2hlYWRlciBwYXVzZQBvbl9tZXNzYWdlX2JlZ2luIHBhdXNlAG9uX2NodW5rX2V4dGVuc2lvbl92YWx1ZSBwYXVzZQBvbl9zdGF0dXNfY29tcGxldGUgcGF1c2UAb25fdmVyc2lvbl9jb21wbGV0ZSBwYXVzZQBvbl91cmxfY29tcGxldGUgcGF1c2UAb25fY2h1bmtfY29tcGxldGUgcGF1c2UAb25faGVhZGVyX3ZhbHVlX2NvbXBsZXRlIHBhdXNlAG9uX21lc3NhZ2VfY29tcGxldGUgcGF1c2UAb25fbWV0aG9kX2NvbXBsZXRlIHBhdXNlAG9uX2hlYWRlcl9maWVsZF9jb21wbGV0ZSBwYXVzZQBvbl9jaHVua19leHRlbnNpb25fbmFtZSBwYXVzZQBVbmV4cGVjdGVkIHNwYWNlIGFmdGVyIHN0YXJ0IGxpbmUAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9jaHVua19leHRlbnNpb25fbmFtZQBJbnZhbGlkIGNoYXJhY3RlciBpbiBjaHVuayBleHRlbnNpb25zIG5hbWUAUGF1c2Ugb24gQ09OTkVDVC9VcGdyYWRlAFBhdXNlIG9uIFBSSS9VcGdyYWRlAEV4cGVjdGVkIEhUVFAvMiBDb25uZWN0aW9uIFByZWZhY2UAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9tZXRob2QARXhwZWN0ZWQgc3BhY2UgYWZ0ZXIgbWV0aG9kAFNwYW4gY2FsbGJhY2sgZXJyb3IgaW4gb25faGVhZGVyX2ZpZWxkAFBhdXNlZABJbnZhbGlkIHdvcmQgZW5jb3VudGVyZWQASW52YWxpZCBtZXRob2QgZW5jb3VudGVyZWQAVW5leHBlY3RlZCBjaGFyIGluIHVybCBzY2hlbWEAUmVxdWVzdCBoYXMgaW52YWxpZCBgVHJhbnNmZXItRW5jb2RpbmdgAFNXSVRDSF9QUk9YWQBVU0VfUFJPWFkATUtBQ1RJVklUWQBVTlBST0NFU1NBQkxFX0VOVElUWQBDT1BZAE1PVkVEX1BFUk1BTkVOVExZAFRPT19FQVJMWQBOT1RJRlkARkFJTEVEX0RFUEVOREVOQ1kAQkFEX0dBVEVXQVkAUExBWQBQVVQAQ0hFQ0tPVVQAR0FURVdBWV9USU1FT1VUAFJFUVVFU1RfVElNRU9VVABORVRXT1JLX0NPTk5FQ1RfVElNRU9VVABDT05ORUNUSU9OX1RJTUVPVVQATE9HSU5fVElNRU9VVABORVRXT1JLX1JFQURfVElNRU9VVABQT1NUAE1JU0RJUkVDVEVEX1JFUVVFU1QAQ0xJRU5UX0NMT1NFRF9SRVFVRVNUAENMSUVOVF9DTE9TRURfTE9BRF9CQUxBTkNFRF9SRVFVRVNUAEJBRF9SRVFVRVNUAEhUVFBfUkVRVUVTVF9TRU5UX1RPX0hUVFBTX1BPUlQAUkVQT1JUAElNX0FfVEVBUE9UAFJFU0VUX0NPTlRFTlQATk9fQ09OVEVOVABQQVJUSUFMX0NPTlRFTlQASFBFX0lOVkFMSURfQ09OU1RBTlQASFBFX0NCX1JFU0VUAEdFVABIUEVfU1RSSUNUAENPTkZMSUNUAFRFTVBPUkFSWV9SRURJUkVDVABQRVJNQU5FTlRfUkVESVJFQ1QAQ09OTkVDVABNVUxUSV9TVEFUVVMASFBFX0lOVkFMSURfU1RBVFVTAFRPT19NQU5ZX1JFUVVFU1RTAEVBUkxZX0hJTlRTAFVOQVZBSUxBQkxFX0ZPUl9MRUdBTF9SRUFTT05TAE9QVElPTlMAU1dJVENISU5HX1BST1RPQ09MUwBWQVJJQU5UX0FMU09fTkVHT1RJQVRFUwBNVUxUSVBMRV9DSE9JQ0VTAElOVEVSTkFMX1NFUlZFUl9FUlJPUgBXRUJfU0VSVkVSX1VOS05PV05fRVJST1IAUkFJTEdVTl9FUlJPUgBJREVOVElUWV9QUk9WSURFUl9BVVRIRU5USUNBVElPTl9FUlJPUgBTU0xfQ0VSVElGSUNBVEVfRVJST1IASU5WQUxJRF9YX0ZPUldBUkRFRF9GT1IAU0VUX1BBUkFNRVRFUgBHRVRfUEFSQU1FVEVSAEhQRV9VU0VSAFNFRV9PVEhFUgBIUEVfQ0JfQ0hVTktfSEVBREVSAE1LQ0FMRU5EQVIAU0VUVVAAV0VCX1NFUlZFUl9JU19ET1dOAFRFQVJET1dOAEhQRV9DTE9TRURfQ09OTkVDVElPTgBIRVVSSVNUSUNfRVhQSVJBVElPTgBESVNDT05ORUNURURfT1BFUkFUSU9OAE5PTl9BVVRIT1JJVEFUSVZFX0lORk9STUFUSU9OAEhQRV9JTlZBTElEX1ZFUlNJT04ASFBFX0NCX01FU1NBR0VfQkVHSU4AU0lURV9JU19GUk9aRU4ASFBFX0lOVkFMSURfSEVBREVSX1RPS0VOAElOVkFMSURfVE9LRU4ARk9SQklEREVOAEVOSEFOQ0VfWU9VUl9DQUxNAEhQRV9JTlZBTElEX1VSTABCTE9DS0VEX0JZX1BBUkVOVEFMX0NPTlRST0wATUtDT0wAQUNMAEhQRV9JTlRFUk5BTABSRVFVRVNUX0hFQURFUl9GSUVMRFNfVE9PX0xBUkdFX1VOT0ZGSUNJQUwASFBFX09LAFVOTElOSwBVTkxPQ0sAUFJJAFJFVFJZX1dJVEgASFBFX0lOVkFMSURfQ09OVEVOVF9MRU5HVEgASFBFX1VORVhQRUNURURfQ09OVEVOVF9MRU5HVEgARkxVU0gAUFJPUFBBVENIAE0tU0VBUkNIAFVSSV9UT09fTE9ORwBQUk9DRVNTSU5HAE1JU0NFTExBTkVPVVNfUEVSU0lTVEVOVF9XQVJOSU5HAE1JU0NFTExBTkVPVVNfV0FSTklORwBIUEVfSU5WQUxJRF9UUkFOU0ZFUl9FTkNPRElORwBFeHBlY3RlZCBDUkxGAEhQRV9JTlZBTElEX0NIVU5LX1NJWkUATU9WRQBDT05USU5VRQBIUEVfQ0JfU1RBVFVTX0NPTVBMRVRFAEhQRV9DQl9IRUFERVJTX0NPTVBMRVRFAEhQRV9DQl9WRVJTSU9OX0NPTVBMRVRFAEhQRV9DQl9VUkxfQ09NUExFVEUASFBFX0NCX0NIVU5LX0NPTVBMRVRFAEhQRV9DQl9IRUFERVJfVkFMVUVfQ09NUExFVEUASFBFX0NCX0NIVU5LX0VYVEVOU0lPTl9WQUxVRV9DT01QTEVURQBIUEVfQ0JfQ0hVTktfRVhURU5TSU9OX05BTUVfQ09NUExFVEUASFBFX0NCX01FU1NBR0VfQ09NUExFVEUASFBFX0NCX01FVEhPRF9DT01QTEVURQBIUEVfQ0JfSEVBREVSX0ZJRUxEX0NPTVBMRVRFAERFTEVURQBIUEVfSU5WQUxJRF9FT0ZfU1RBVEUASU5WQUxJRF9TU0xfQ0VSVElGSUNBVEUAUEFVU0UATk9fUkVTUE9OU0UAVU5TVVBQT1JURURfTUVESUFfVFlQRQBHT05FAE5PVF9BQ0NFUFRBQkxFAFNFUlZJQ0VfVU5BVkFJTEFCTEUAUkFOR0VfTk9UX1NBVElTRklBQkxFAE9SSUdJTl9JU19VTlJFQUNIQUJMRQBSRVNQT05TRV9JU19TVEFMRQBQVVJHRQBNRVJHRQBSRVFVRVNUX0hFQURFUl9GSUVMRFNfVE9PX0xBUkdFAFJFUVVFU1RfSEVBREVSX1RPT19MQVJHRQBQQVlMT0FEX1RPT19MQVJHRQBJTlNVRkZJQ0lFTlRfU1RPUkFHRQBIUEVfUEFVU0VEX1VQR1JBREUASFBFX1BBVVNFRF9IMl9VUEdSQURFAFNPVVJDRQBBTk5PVU5DRQBUUkFDRQBIUEVfVU5FWFBFQ1RFRF9TUEFDRQBERVNDUklCRQBVTlNVQlNDUklCRQBSRUNPUkQASFBFX0lOVkFMSURfTUVUSE9EAE5PVF9GT1VORABQUk9QRklORABVTkJJTkQAUkVCSU5EAFVOQVVUSE9SSVpFRABNRVRIT0RfTk9UX0FMTE9XRUQASFRUUF9WRVJTSU9OX05PVF9TVVBQT1JURUQAQUxSRUFEWV9SRVBPUlRFRABBQ0NFUFRFRABOT1RfSU1QTEVNRU5URUQATE9PUF9ERVRFQ1RFRABIUEVfQ1JfRVhQRUNURUQASFBFX0xGX0VYUEVDVEVEAENSRUFURUQASU1fVVNFRABIUEVfUEFVU0VEAFRJTUVPVVRfT0NDVVJFRABQQVlNRU5UX1JFUVVJUkVEAFBSRUNPTkRJVElPTl9SRVFVSVJFRABQUk9YWV9BVVRIRU5USUNBVElPTl9SRVFVSVJFRABORVRXT1JLX0FVVEhFTlRJQ0FUSU9OX1JFUVVJUkVEAExFTkdUSF9SRVFVSVJFRABTU0xfQ0VSVElGSUNBVEVfUkVRVUlSRUQAVVBHUkFERV9SRVFVSVJFRABQQUdFX0VYUElSRUQAUFJFQ09ORElUSU9OX0ZBSUxFRABFWFBFQ1RBVElPTl9GQUlMRUQAUkVWQUxJREFUSU9OX0ZBSUxFRABTU0xfSEFORFNIQUtFX0ZBSUxFRABMT0NLRUQAVFJBTlNGT1JNQVRJT05fQVBQTElFRABOT1RfTU9ESUZJRUQATk9UX0VYVEVOREVEAEJBTkRXSURUSF9MSU1JVF9FWENFRURFRABTSVRFX0lTX09WRVJMT0FERUQASEVBRABFeHBlY3RlZCBIVFRQLwAAXhMAACYTAAAwEAAA8BcAAJ0TAAAVEgAAORcAAPASAAAKEAAAdRIAAK0SAACCEwAATxQAAH8QAACgFQAAIxQAAIkSAACLFAAATRUAANQRAADPFAAAEBgAAMkWAADcFgAAwREAAOAXAAC7FAAAdBQAAHwVAADlFAAACBcAAB8QAABlFQAAoxQAACgVAAACFQAAmRUAACwQAACLGQAATw8AANQOAABqEAAAzhAAAAIXAACJDgAAbhMAABwTAABmFAAAVhcAAMETAADNEwAAbBMAAGgXAABmFwAAXxcAACITAADODwAAaQ4AANgOAABjFgAAyxMAAKoOAAAoFwAAJhcAAMUTAABdFgAA6BEAAGcTAABlEwAA8hYAAHMTAAAdFwAA+RYAAPMRAADPDgAAzhUAAAwSAACzEQAApREAAGEQAAAyFwAAuxMAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQIBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAIDAgICAgIAAAICAAICAAICAgICAgICAgIABAAAAAAAAgICAgICAgICAgICAgICAgICAgICAgICAgIAAAACAgICAgICAgICAgICAgICAgICAgICAgICAgICAgACAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAACAAICAgICAAACAgACAgACAgICAgICAgICAAMABAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAAgACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbG9zZWVlcC1hbGl2ZQAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQIBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBY2h1bmtlZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEAAQEBAQEAAAEBAAEBAAEBAQEBAQEBAQEAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABlY3Rpb25lbnQtbGVuZ3Rob25yb3h5LWNvbm5lY3Rpb24AAAAAAAAAAAAAAAAAAAByYW5zZmVyLWVuY29kaW5ncGdyYWRlDQoNCg0KU00NCg0KVFRQL0NFL1RTUC8AAAAAAAAAAAAAAAABAgABAwAAAAAAAAAAAAAAAAAAAAAAAAQBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAQIAAQMAAAAAAAAAAAAAAAAAAAAAAAAEAQEFAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAEAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAQAAAgAAAAAAAAAAAAAAAAAAAAAAAAMEAAAEBAQEBAQEBAQEBAUEBAQEBAQEBAQEBAQABAAGBwQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEAAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAEAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAADAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwAAAAAAAAMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAABAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAIAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAAAAAAAADAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABOT1VOQ0VFQ0tPVVRORUNURVRFQ1JJQkVMVVNIRVRFQURTRUFSQ0hSR0VDVElWSVRZTEVOREFSVkVPVElGWVBUSU9OU0NIU0VBWVNUQVRDSEdFT1JESVJFQ1RPUlRSQ0hQQVJBTUVURVJVUkNFQlNDUklCRUFSRE9XTkFDRUlORE5LQ0tVQlNDUklCRUhUVFAvQURUUC8="});var nD=g((NDe,rD)=>{rD.exports="AGFzbQEAAAABMAhgAX8Bf2ADf39/AX9gBH9/f38Bf2AAAGADf39/AGABfwBgAn9/AGAGf39/f39/AALLAQgDZW52GHdhc21fb25faGVhZGVyc19jb21wbGV0ZQACA2VudhV3YXNtX29uX21lc3NhZ2VfYmVnaW4AAANlbnYLd2FzbV9vbl91cmwAAQNlbnYOd2FzbV9vbl9zdGF0dXMAAQNlbnYUd2FzbV9vbl9oZWFkZXJfZmllbGQAAQNlbnYUd2FzbV9vbl9oZWFkZXJfdmFsdWUAAQNlbnYMd2FzbV9vbl9ib2R5AAEDZW52GHdhc21fb25fbWVzc2FnZV9jb21wbGV0ZQAAA0ZFAwMEAAAFAAAAAAAABQEFAAUFBQAABgAAAAAGBgYGAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAAABAQcAAAUFAwABBAUBcAESEgUDAQACBggBfwFBgNQECwfRBSIGbWVtb3J5AgALX2luaXRpYWxpemUACRlfX2luZGlyZWN0X2Z1bmN0aW9uX3RhYmxlAQALbGxodHRwX2luaXQAChhsbGh0dHBfc2hvdWxkX2tlZXBfYWxpdmUAQQxsbGh0dHBfYWxsb2MADAZtYWxsb2MARgtsbGh0dHBfZnJlZQANBGZyZWUASA9sbGh0dHBfZ2V0X3R5cGUADhVsbGh0dHBfZ2V0X2h0dHBfbWFqb3IADxVsbGh0dHBfZ2V0X2h0dHBfbWlub3IAEBFsbGh0dHBfZ2V0X21ldGhvZAARFmxsaHR0cF9nZXRfc3RhdHVzX2NvZGUAEhJsbGh0dHBfZ2V0X3VwZ3JhZGUAEwxsbGh0dHBfcmVzZXQAFA5sbGh0dHBfZXhlY3V0ZQAVFGxsaHR0cF9zZXR0aW5nc19pbml0ABYNbGxodHRwX2ZpbmlzaAAXDGxsaHR0cF9wYXVzZQAYDWxsaHR0cF9yZXN1bWUAGRtsbGh0dHBfcmVzdW1lX2FmdGVyX3VwZ3JhZGUAGhBsbGh0dHBfZ2V0X2Vycm5vABsXbGxodHRwX2dldF9lcnJvcl9yZWFzb24AHBdsbGh0dHBfc2V0X2Vycm9yX3JlYXNvbgAdFGxsaHR0cF9nZXRfZXJyb3JfcG9zAB4RbGxodHRwX2Vycm5vX25hbWUAHxJsbGh0dHBfbWV0aG9kX25hbWUAIBJs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IAH9CwMAIABBMGogAf0LAwAgAEEgaiAB/QsDACAAQd0BNgIcQQALewEBfwJAIAAoAgwiAw0AAkAgACgCBEUNACAAIAE2AgQLAkAgACABIAIQxICAgAAiAw0AIAAoAgwPCyAAIAM2AhxBACEDIAAoAgQiAUUNACAAIAEgAiAAKAIIEYGAgIAAACIBRQ0AIAAgAjYCFCAAIAE2AgwgASEDCyADC+TzAQMOfwN+BH8jgICAgABBEGsiAySAgICAACABIQQgASEFIAEhBiABIQcgASEIIAEhCSABIQogASELIAEhDCABIQ0gASEOIAEhDwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCAAKAIcIhBBf2oO3QHaAQHZAQIDBAUGBwgJCgsMDQ7YAQ8Q1wEREtYBExQVFhcYGRob4AHfARwdHtUBHyAhIiMkJdQBJicoKSorLNMB0gEtLtEB0AEvMDEyMzQ1Njc4OTo7PD0+P0BBQkNERUbbAUdISUrPAc4BS80BTMwBTU5PUFFSU1RVVldYWVpbXF1eX2BhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ent8fX5/gAGBAYIBgwGEAYUBhgGHAYgBiQGKAYsBjAGNAY4BjwGQAZEB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QAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIBAOxwEAAQID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YWNrIGVycm9yAGBvbl9jaHVua19leHRlbnNpb25fdmFsdWVgIGNhbGxiYWNrIGVycm9yAGBvbl9zdGF0dXNfY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl92ZXJzaW9uX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fdXJsX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fY2h1bmtfY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl9oZWFkZXJfdmFsdWVfY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl9tZXNzYWdlX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fbWV0aG9kX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25faGVhZGVyX2ZpZWxkX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fY2h1bmtfZXh0ZW5zaW9uX25hbWVgIGNhbGxiYWNrIGVycm9yAFVuZXhwZWN0ZWQgY2hhciBpbiB1cmwgc2VydmVyAEludmFsaWQgaGVhZGVyIHZhbHVlIGNoYXIASW52YWxpZCBoZWFkZXIgZmllbGQgY2hhcgBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX3ZlcnNpb24ASW52YWxpZCBtaW5vciB2ZXJzaW9uAEludmFsaWQgbWFqb3IgdmVyc2lvbgBFeHBlY3RlZCBzcGFjZSBhZnRlciB2ZXJzaW9uAEV4cGVjdGVkIENSTEYgYWZ0ZXIgdmVyc2lvbgBJbnZhbGlkIEhUVFAgdmVyc2lvbgBJbnZhbGlkIGhlYWRlciB0b2tlbgBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX3VybABJbnZhbGlkIGNoYXJhY3RlcnMgaW4gdXJsAFVuZXhwZWN0ZWQgc3RhcnQgY2hhciBpbiB1cmwARG91YmxlIEAgaW4gdXJsAEVtcHR5IENvbnRlbnQtTGVuZ3RoAEludmFsaWQgY2hhcmFjdGVyIGluIENvbnRlbnQtTGVuZ3RoAER1cGxpY2F0ZSBDb250ZW50LUxlbmd0aABJbnZhbGlkIGNoYXIgaW4gdXJsIHBhdGgAQ29udGVudC1MZW5ndGggY2FuJ3QgYmUgcHJlc2VudCB3aXRoIFRyYW5zZmVyLUVuY29kaW5nAEludmFsaWQgY2hhcmFjdGVyIGluIGNodW5rIHNpemUAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9oZWFkZXJfdmFsdWUAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9jaHVua19leHRlbnNpb25fdmFsdWUASW52YWxpZCBjaGFyYWN0ZXIgaW4gY2h1bmsgZXh0ZW5zaW9ucyB2YWx1ZQBNaXNzaW5nIGV4cGVjdGVkIExGIGFmdGVyIGhlYWRlciB2YWx1ZQBJbnZhbGlkIGBUcmFuc2Zlci1FbmNvZGluZ2AgaGVhZGVyIHZhbHVlAEludmFsaWQgY2hhcmFjdGVyIGluIGNodW5rIGV4dGVuc2lvbnMgcXVvdGUgdmFsdWUASW52YWxpZCBjaGFyYWN0ZXIgaW4gY2h1bmsgZXh0ZW5zaW9ucyBxdW90ZWQgdmFsdWUAUGF1c2VkIGJ5IG9uX2hlYWRlcnNfY29tcGxldGUASW52YWxpZCBFT0Ygc3RhdGUAb25fcmVzZXQgcGF1c2UAb25fY2h1bmtfaGVhZGVyIHBhdXNlAG9uX21lc3NhZ2VfYmVnaW4gcGF1c2UAb25fY2h1bmtfZXh0ZW5zaW9uX3ZhbHVlIHBhdXNlAG9uX3N0YXR1c19jb21wbGV0ZSBwYXVzZQBvbl92ZXJzaW9uX2NvbXBsZXRlIHBhdXNlAG9uX3VybF9jb21wbGV0ZSBwYXVzZQBvbl9jaHVua19jb21wbGV0ZSBwYXVzZQBvbl9oZWFkZXJfdmFsdWVfY29tcGxldGUgcGF1c2UAb25fbWVzc2FnZV9jb21wbGV0ZSBwYXVzZQBvbl9tZXRob2RfY29tcGxldGUgcGF1c2UAb25faGVhZGVyX2ZpZWxkX2NvbXBsZXRlIHBhdXNlAG9uX2NodW5rX2V4dGVuc2lvbl9uYW1lIHBhdXNlAFVuZXhwZWN0ZWQgc3BhY2UgYWZ0ZXIgc3RhcnQgbGluZQBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX2NodW5rX2V4dGVuc2lvbl9uYW1lAEludmFsaWQgY2hhcmFjdGVyIGluIGNodW5rIGV4dGVuc2lvbnMgbmFtZQBQYXVzZSBvbiBDT05ORUNUL1VwZ3JhZGUAUGF1c2Ugb24gUFJJL1VwZ3JhZGUARXhwZWN0ZWQgSFRUUC8yIENvbm5lY3Rpb24gUHJlZmFjZQBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX21ldGhvZABFeHBlY3RlZCBzcGFjZSBhZnRlciBtZXRob2QAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9oZWFkZXJfZmllbGQAUGF1c2VkAEludmFsaWQgd29yZCBlbmNvdW50ZXJlZABJbnZhbGlkIG1ldGhvZCBlbmNvdW50ZXJlZABVbmV4cGVjdGVkIGNoYXIgaW4gdXJsIHNjaGVtYQBSZXF1ZXN0IGhhcyBpbnZhbGlkIGBUcmFuc2Zlci1FbmNvZGluZ2AAU1dJVENIX1BST1hZAFVTRV9QUk9YWQBNS0FDVElWSVRZAFVOUFJPQ0VTU0FCTEVfRU5USVRZAENPUFkATU9WRURfUEVSTUFORU5UTFkAVE9PX0VBUkxZAE5PVElGWQBGQUlMRURfREVQRU5ERU5DWQBCQURfR0FURVdBWQBQTEFZAFBVVABDSEVDS09VVABHQVRFV0FZX1RJTUVPVVQAUkVRVUVTVF9USU1FT1VUAE5FVFdPUktfQ09OTkVDVF9USU1FT1VUAENPTk5FQ1RJT05fVElNRU9VVABMT0dJTl9USU1FT1VUAE5FVFdPUktfUkVBRF9USU1FT1VUAFBPU1QATUlTRElSRUNURURfUkVRVUVTVABDTElFTlRfQ0xPU0VEX1JFUVVFU1QAQ0xJRU5UX0NMT1NFRF9MT0FEX0JBTEFOQ0VEX1JFUVVFU1QAQkFEX1JFUVVFU1QASFRUUF9SRVFVRVNUX1NFTlRfVE9fSFRUUFNfUE9SVABSRVBPUlQASU1fQV9URUFQT1QAUkVTRVRfQ09OVEVOVABOT19DT05URU5UAFBBUlRJQUxfQ09OVEVOVABIUEVfSU5WQUxJRF9DT05TVEFOVABIUEVfQ0JfUkVTRVQAR0VUAEhQRV9TVFJJQ1QAQ09ORkxJQ1QAVEVNUE9SQVJZX1JFRElSRUNUAFBFUk1BTkVOVF9SRURJUkVDVABDT05ORUNUAE1VTFRJX1NUQVRVUwBIUEVfSU5WQUxJRF9TVEFUVVMAVE9PX01BTllfUkVRVUVTVFMARUFSTFlfSElOVFMAVU5BVkFJTEFCTEVfRk9SX0xFR0FMX1JFQVNPTlMAT1BUSU9OUwBTV0lUQ0hJTkdfUFJPVE9DT0xTAFZBUklBTlRfQUxTT19ORUdPVElBVEVTAE1VTFRJUExFX0NIT0lDRVMASU5URVJOQUxfU0VSVkVSX0VSUk9SAFdFQl9TRVJWRVJfVU5LTk9XTl9FUlJPUgBSQUlMR1VOX0VSUk9SAElERU5USVRZX1BST1ZJREVSX0FVVEhFTlRJQ0FUSU9OX0VSUk9SAFNTTF9DRVJUSUZJQ0FURV9FUlJPUgBJTlZBTElEX1hfRk9SV0FSREVEX0ZPUgBTRVRfUEFSQU1FVEVSAEdFVF9QQVJBTUVURVIASFBFX1VTRVIAU0VFX09USEVSAEhQRV9DQl9DSFVOS19IRUFERVIATUtDQUxFTkRBUgBTRVRVUABXRUJfU0VSVkVSX0lTX0RPV04AVEVBUkRPV04ASFBFX0NMT1NFRF9DT05ORUNUSU9OAEhFVVJJU1RJQ19FWFBJUkFUSU9OAERJU0NPTk5FQ1RFRF9PUEVSQVRJT04ATk9OX0FVVEhPUklUQVRJVkVfSU5GT1JNQVRJT04ASFBFX0lOVkFMSURfVkVSU0lPTgBIUEVfQ0JfTUVTU0FHRV9CRUdJTgBTSVRFX0lTX0ZST1pFTgBIUEVfSU5WQUxJRF9IRUFERVJfVE9LRU4ASU5WQUxJRF9UT0tFTgBGT1JCSURERU4ARU5IQU5DRV9ZT1VSX0NBTE0ASFBFX0lOVkFMSURfVVJMAEJMT0NLRURfQllfUEFSRU5UQUxfQ09OVFJPTABNS0NPTABBQ0wASFBFX0lOVEVSTkFMAFJFUVVFU1RfSEVBREVSX0ZJRUxEU19UT09fTEFSR0VfVU5PRkZJQ0lBTABIUEVfT0sAVU5MSU5LAFVOTE9DSwBQUkkAUkVUUllfV0lUSABIUEVfSU5WQUxJRF9DT05URU5UX0xFTkdUSABIUEVfVU5FWFBFQ1RFRF9DT05URU5UX0xFTkdUSABGTFVTSABQUk9QUEFUQ0gATS1TRUFSQ0gAVVJJX1RPT19MT05HAFBST0NFU1NJTkcATUlTQ0VMTEFORU9VU19QRVJTSVNURU5UX1dBUk5JTkcATUlTQ0VMTEFORU9VU19XQVJOSU5HAEhQRV9JTlZBTElEX1RSQU5TRkVSX0VOQ09ESU5HAEV4cGVjdGVkIENSTEYASFBFX0lOVkFMSURfQ0hVTktfU0laRQBNT1ZFAENPTlRJTlVFAEhQRV9DQl9TVEFUVVNfQ09NUExFVEUASFBFX0NCX0hFQURFUlNfQ09NUExFVEUASFBFX0NCX1ZFUlNJT05fQ09NUExFVEUASFBFX0NCX1VSTF9DT01QTEVURQBIUEVfQ0JfQ0hVTktfQ09NUExFVEUASFBFX0NCX0hFQURFUl9WQUxVRV9DT01QTEVURQBIUEVfQ0JfQ0hVTktfRVhURU5TSU9OX1ZBTFVFX0NPTVBMRVRFAEhQRV9DQl9DSFVOS19FWFRFTlNJT05fTkFNRV9DT01QTEVURQBIUEVfQ0JfTUVTU0FHRV9DT01QTEVURQBIUEVfQ0JfTUVUSE9EX0NPTVBMRVRFAEhQRV9DQl9IRUFERVJfRklFTERfQ09NUExFVEUAREVMRVRFAEhQRV9JTlZBTElEX0VPRl9TVEFURQBJTlZBTElEX1NTTF9DRVJUSUZJQ0FURQBQQVVTRQBOT19SRVNQT05TRQBVTlNVUFBPUlRFRF9NRURJQV9UWVBFAEdPTkUATk9UX0FDQ0VQVEFCTEUAU0VSVklDRV9VTkFWQUlMQUJMRQBSQU5HRV9OT1RfU0FUSVNGSUFCTEUAT1JJR0lOX0lTX1VOUkVBQ0hBQkxFAFJFU1BPTlNFX0lTX1NUQUxFAFBVUkdFAE1FUkdFAFJFUVVFU1RfSEVBREVSX0ZJRUxEU19UT09fTEFSR0UAUkVRVUVTVF9IRUFERVJfVE9PX0xBUkdFAFBBWUxPQURfVE9PX0xBUkdFAElOU1VGRklDSUVOVF9TVE9SQUdFAEhQRV9QQVVTRURfVVBHUkFERQBIUEVfUEFVU0VEX0gyX1VQR1JBREUAU09VUkNFAEFOTk9VTkNFAFRSQUNFAEhQRV9VTkVYUEVDVEVEX1NQQUNFAERFU0NSSUJFAFVOU1VCU0NSSUJFAFJFQ09SRABIUEVfSU5WQUxJRF9NRVRIT0QATk9UX0ZPVU5EAFBST1BGSU5EAFVOQklORABSRUJJTkQAVU5BVVRIT1JJWkVEAE1FVEhPRF9OT1RfQUxMT1dFRABIVFRQX1ZFUlNJT05fTk9UX1NVUFBPUlRFRABBTFJFQURZX1JFUE9SVEVEAEFDQ0VQVEVEAE5PVF9JTVBMRU1FTlRFRABMT09QX0RFVEVDVEVEAEhQRV9DUl9FWFBFQ1RFRABIUEVfTEZfRVhQRUNURUQAQ1JFQVRFRABJTV9VU0VEAEhQRV9QQVVTRUQAVElNRU9VVF9PQ0NVUkVEAFBBWU1FTlRfUkVRVUlSRUQAUFJFQ09ORElUSU9OX1JFUVVJUkVEAFBST1hZX0FVVEhFTlRJQ0FUSU9OX1JFUVVJUkVEAE5FVFdPUktfQVVUSEVOVElDQVRJT05fUkVRVUlSRUQATEVOR1RIX1JFUVVJUkVEAFNTTF9DRVJUSUZJQ0FURV9SRVFVSVJFRABVUEdSQURFX1JFUVVJUkVEAFBBR0VfRVhQSVJFRABQUkVDT05ESVRJT05fRkFJTEVEAEVYUEVDVEFUSU9OX0ZBSUxFRABSRVZBTElEQVRJT05fRkFJTEVEAFNTTF9IQU5EU0hBS0VfRkFJTEVEAExPQ0tFRABUUkFOU0ZPUk1BVElPTl9BUFBMSUVEAE5PVF9NT0RJRklFRABOT1RfRVhURU5ERUQAQkFORFdJRFRIX0xJTUlUX0VYQ0VFREVEAFNJVEVfSVNfT1ZFUkxPQURFRABIRUFEAEV4cGVjdGVkIEhUVFAvAABeEwAAJhMAADAQAADwFwAAnRMAABUSAAA5FwAA8BIAAAoQAAB1EgAArRIAAIITAABPFAAAfxAAAKAVAAAjFAAAiRIAAIsUAABNFQAA1BEAAM8UAAAQGAAAyRYAANwWAADBEQAA4BcAALsUAAB0FAAAfBUAAOUUAAAIFwAAHxAAAGUVAACjFAAAKBUAAAIVAACZFQAALBAAAIsZAABPDwAA1A4AAGoQAADOEAAAAhcAAIkOAABuEwAAHBMAAGYUAABWFwAAwRMAAM0TAABsEwAAaBcAAGYXAABfFwAAIhMAAM4PAABpDgAA2A4AAGMWAADLEwAAqg4AACgXAAAmFwAAxRMAAF0WAADoEQAAZxMAAGUTAADyFgAAcxMAAB0XAAD5FgAA8xEAAM8OAADOFQAADBIAALMRAAClEQAAYRAAADIXAAC7EwAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAgMCAgICAgAAAgIAAgIAAgICAgICAgICAgAEAAAAAAACAgICAgICAgICAgICAgICAgICAgICAgICAgAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAIAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAIAAgICAgIAAAICAAICAAICAgICAgICAgIAAwAEAAAAAgICAgICAgICAgICAgICAgICAgICAgICAgIAAAACAgICAgICAgICAgICAgICAgICAgICAgICAgICAgACAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABsb3NlZWVwLWFsaXZlAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQFjaHVua2VkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQABAQEBAQAAAQEAAQEAAQEBAQEBAQEBAQAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGVjdGlvbmVudC1sZW5ndGhvbnJveHktY29ubmVjdGlvbgAAAAAAAAAAAAAAAAAAAHJhbnNmZXItZW5jb2RpbmdwZ3JhZGUNCg0KDQpTTQ0KDQpUVFAvQ0UvVFNQLwAAAAAAAAAAAAAAAAECAAEDAAAAAAAAAAAAAAAAAAAAAAAABAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAABAgABAwAAAAAAAAAAAAAAAAAAAAAAAAQBAQUBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAQAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAABAAACAAAAAAAAAAAAAAAAAAAAAAAAAwQAAAQEBAQEBAQEBAQEBQQEBAQEBAQEBAQEBAAEAAYHBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQABAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAQAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAAAAAAAAAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAEAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAgAAAAACAAAAAAAAAAAAAAAAAAAAAAADAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwAAAAAAAAMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAE5PVU5DRUVDS09VVE5FQ1RFVEVDUklCRUxVU0hFVEVBRFNFQVJDSFJHRUNUSVZJVFlMRU5EQVJWRU9USUZZUFRJT05TQ0hTRUFZU1RBVENIR0VPUkRJUkVDVE9SVFJDSFBBUkFNRVRFUlVSQ0VCU0NSSUJFQVJET1dOQUNFSU5ETktDS1VCU0NSSUJFSFRUUC9BRFRQLw=="});var Lm=g((TDe,BD)=>{"use strict";var $=require("assert"),aD=require("net"),Mne=require("http"),{pipeline:One}=require("stream"),ne=Le(),j6=fN(),W6=GT(),xne=Nm(),{RequestContentLengthMismatchError:Ha,ResponseContentLengthMismatchError:Lne,InvalidArgumentError:rr,RequestAbortedError:nB,HeadersTimeoutError:Fne,HeadersOverflowError:Une,SocketError:Sd,InformationalError:js,BodyTimeoutError:qne,HTTPParserError:Vne,ResponseExceededMaxSizeError:Gne,ClientDestroyedError:Hne}=ot(),Yne=Tm(),{kUrl:Vr,kReset:En,kServerName:Go,kClient:zs,kBusy:$6,kParser:Gt,kConnect:Jne,kBlocking:bd,kResuming:ll,kRunning:Mt,kPending:dl,kSize:cl,kWriting:Ya,kQueue:It,kConnected:jne,kConnecting:wd,kNeedDrain:Yo,kNoRef:km,kKeepAliveDefaultTimeout:K6,kHostHeader:oD,kPendingIdx:ui,kRunningIdx:Bt,kError:Gr,kPipelining:Jo,kSocket:Ht,kKeepAliveTimeoutValue:Mm,kMaxHeadersSize:zg,kKeepAliveMaxTimeout:AD,kKeepAliveTimeoutThreshold:lD,kHeadersTimeout:cD,kBodyTimeout:dD,kStrictContentLength:Om,kConnector:Pm,kMaxRedirections:zne,kMaxRequests:xm,kCounter:pD,kClose:Wne,kDestroy:$ne,kDispatch:Kne,kInterceptors:Xne,kLocalAddress:_m,kMaxResponseSize:uD,kHTTPConnVersion:Ws,kHost:mD,kHTTP2Session:mi,kHTTP2SessionState:$g,kHTTP2BuildRequest:Zne,kHTTP2CopyHeaders:eie,kHTTP1BuildRequest:tie}=pt(),Kg;try{Kg=require("http2")}catch{Kg={constants:{}}}var{constants:{HTTP2_HEADER_AUTHORITY:rie,HTTP2_HEADER_METHOD:nie,HTTP2_HEADER_PATH:iie,HTTP2_HEADER_SCHEME:sie,HTTP2_HEADER_CONTENT_LENGTH:aie,HTTP2_HEADER_EXPECT:oie,HTTP2_HEADER_STATUS:Aie}}=Kg,iD=!1,Jg=Buffer[Symbol.species],Ho=Symbol("kClosedResolve"),An={};try{let t=require("diagnostics_channel");An.sendHeaders=t.channel("undici:client:sendHeaders"),An.beforeConnect=t.channel("undici:client:beforeConnect"),An.connectError=t.channel("undici:client:connectError"),An.connected=t.channel("undici:client:connected")}catch{An.sendHeaders={hasSubscribers:!1},An.beforeConnect={hasSubscribers:!1},An.connectError={hasSubscribers:!1},An.connected={hasSubscribers:!1}}var X6=class extends xne{constructor(e,{interceptors:r,maxHeaderSize:n,headersTimeout:i,socketTimeout:s,requestTimeout:a,connectTimeout:o,bodyTimeout:A,idleTimeout:l,keepAlive:c,keepAliveTimeout:d,maxKeepAliveTimeout:p,keepAliveMaxTimeout:u,keepAliveTimeoutThreshold:m,socketPath:h,pipelining:f,tls:E,strictContentLength:y,maxCachedSessions:B,maxRedirections:Q,connect:C,maxRequestsPerClient:w,localAddress:b,maxResponseSize:v,autoSelectFamily:q,autoSelectFamilyAttemptTimeout:L,allowH2:V,maxConcurrentStreams:O}={}){if(super(),c!==void 0)throw new rr("unsupported keepAlive, use pipelining=0 instead");if(s!==void 0)throw new rr("unsupported socketTimeout, use headersTimeout & bodyTimeout instead");if(a!==void 0)throw new rr("unsupported requestTimeout, use headersTimeout & bodyTimeout instead");if(l!==void 0)throw new rr("unsupported idleTimeout, use keepAliveTimeout instead");if(p!==void 0)throw new rr("unsupported maxKeepAliveTimeout, use keepAliveMaxTimeout instead");if(n!=null&&!Number.isFinite(n))throw new rr("invalid maxHeaderSize");if(h!=null&&typeof h!="string")throw new rr("invalid socketPath");if(o!=null&&(!Number.isFinite(o)||o<0))throw new rr("invalid connectTimeout");if(d!=null&&(!Number.isFinite(d)||d<=0))throw new rr("invalid keepAliveTimeout");if(u!=null&&(!Number.isFinite(u)||u<=0))throw new rr("invalid keepAliveMaxTimeout");if(m!=null&&!Number.isFinite(m))throw new rr("invalid keepAliveTimeoutThreshold");if(i!=null&&(!Number.isInteger(i)||i<0))throw new rr("headersTimeout must be a positive integer or zero");if(A!=null&&(!Number.isInteger(A)||A<0))throw new rr("bodyTimeout must be a positive integer or zero");if(C!=null&&typeof C!="function"&&typeof C!="object")throw new rr("connect must be a function or an object");if(Q!=null&&(!Number.isInteger(Q)||Q<0))throw new rr("maxRedirections must be a positive number");if(w!=null&&(!Number.isInteger(w)||w<0))throw new rr("maxRequestsPerClient must be a positive number");if(b!=null&&(typeof b!="string"||aD.isIP(b)===0))throw new rr("localAddress must be valid string IP address");if(v!=null&&(!Number.isInteger(v)||v<-1))throw new rr("maxResponseSize must be a positive number");if(L!=null&&(!Number.isInteger(L)||L<-1))throw new rr("autoSelectFamilyAttemptTimeout must be a positive number");if(V!=null&&typeof V!="boolean")throw new rr("allowH2 must be a valid boolean value");if(O!=null&&(typeof O!="number"||O<1))throw new rr("maxConcurrentStreams must be a possitive integer, greater than 0");typeof C!="function"&&(C=Yne({...E,maxCachedSessions:B,allowH2:V,socketPath:h,timeout:o,...ne.nodeHasAutoSelectFamily&&q?{autoSelectFamily:q,autoSelectFamilyAttemptTimeout:L}:void 0,...C})),this[Xne]=r&&r.Client&&Array.isArray(r.Client)?r.Client:[uie({maxRedirections:Q})],this[Vr]=ne.parseOrigin(e),this[Pm]=C,this[Ht]=null,this[Jo]=f??1,this[zg]=n||Mne.maxHeaderSize,this[K6]=d??4e3,this[AD]=u??6e5,this[lD]=m??1e3,this[Mm]=this[K6],this[Go]=null,this[_m]=b??null,this[ll]=0,this[Yo]=0,this[oD]=`host: ${this[Vr].hostname}${this[Vr].port?`:${this[Vr].port}`:""}\r -`,this[dD]=A??3e5,this[cD]=i??3e5,this[Om]=y??!0,this[zne]=Q,this[xm]=w,this[Ho]=null,this[uD]=v>-1?v:-1,this[Ws]="h1",this[mi]=null,this[$g]=V?{openStreams:0,maxConcurrentStreams:O??100}:null,this[mD]=`${this[Vr].hostname}${this[Vr].port?`:${this[Vr].port}`:""}`,this[It]=[],this[Bt]=0,this[ui]=0}get pipelining(){return this[Jo]}set pipelining(e){this[Jo]=e,hi(this,!0)}get[dl](){return this[It].length-this[ui]}get[Mt](){return this[ui]-this[Bt]}get[cl](){return this[It].length-this[Bt]}get[jne](){return!!this[Ht]&&!this[wd]&&!this[Ht].destroyed}get[$6](){let e=this[Ht];return e&&(e[En]||e[Ya]||e[bd])||this[cl]>=(this[Jo]||1)||this[dl]>0}[Jne](e){ED(this),this.once("connect",e)}[Kne](e,r){let n=e.origin||this[Vr].origin,i=this[Ws]==="h2"?W6[Zne](n,e,r):W6[tie](n,e,r);return this[It].push(i),this[ll]||(ne.bodyLength(i.body)==null&&ne.isIterable(i.body)?(this[ll]=1,process.nextTick(hi,this)):hi(this,!0)),this[ll]&&this[Yo]!==2&&this[$6]&&(this[Yo]=2),this[Yo]<2}async[Wne](){return new Promise(e=>{this[cl]?this[Ho]=e:e(null)})}async[$ne](e){return new Promise(r=>{let n=this[It].splice(this[ui]);for(let s=0;s{this[Ho]&&(this[Ho](),this[Ho]=null),r()};this[mi]!=null&&(ne.destroy(this[mi],e),this[mi]=null,this[$g]=null),this[Ht]?ne.destroy(this[Ht].on("close",i),e):queueMicrotask(i),hi(this)})}};function lie(t){$(t.code!=="ERR_TLS_CERT_ALTNAME_INVALID"),this[Ht][Gr]=t,e0(this[zs],t)}function cie(t,e,r){let n=new js(`HTTP/2: "frameError" received - type ${t}, code ${e}`);r===0&&(this[Ht][Gr]=n,e0(this[zs],n))}function die(){ne.destroy(this,new Sd("other side closed")),ne.destroy(this[Ht],new Sd("other side closed"))}function pie(t){let e=this[zs],r=new js(`HTTP/2: "GOAWAY" frame received with code ${t}`);if(e[Ht]=null,e[mi]=null,e.destroyed){$(this[dl]===0);let n=e[It].splice(e[Bt]);for(let i=0;i0){let n=e[It][e[Bt]];e[It][e[Bt]++]=null,yn(e,n,r)}e[ui]=e[Bt],$(e[Mt]===0),e.emit("disconnect",e[Vr],[e],r),hi(e)}var Hs=$T(),uie=Yg(),mie=Buffer.alloc(0);async function hie(){let t=process.env.JEST_WORKER_ID?J6():void 0,e;try{e=await WebAssembly.compile(Buffer.from(nD(),"base64"))}catch{e=await WebAssembly.compile(Buffer.from(t||J6(),"base64"))}return await WebAssembly.instantiate(e,{env:{wasm_on_url:(r,n,i)=>0,wasm_on_status:(r,n,i)=>{$.strictEqual(Cr.ptr,r);let s=n-Js+Ys.byteOffset;return Cr.onStatus(new Jg(Ys.buffer,s,i))||0},wasm_on_message_begin:r=>($.strictEqual(Cr.ptr,r),Cr.onMessageBegin()||0),wasm_on_header_field:(r,n,i)=>{$.strictEqual(Cr.ptr,r);let s=n-Js+Ys.byteOffset;return Cr.onHeaderField(new Jg(Ys.buffer,s,i))||0},wasm_on_header_value:(r,n,i)=>{$.strictEqual(Cr.ptr,r);let s=n-Js+Ys.byteOffset;return Cr.onHeaderValue(new Jg(Ys.buffer,s,i))||0},wasm_on_headers_complete:(r,n,i,s)=>($.strictEqual(Cr.ptr,r),Cr.onHeadersComplete(n,!!i,!!s)||0),wasm_on_body:(r,n,i)=>{$.strictEqual(Cr.ptr,r);let s=n-Js+Ys.byteOffset;return Cr.onBody(new Jg(Ys.buffer,s,i))||0},wasm_on_message_complete:r=>($.strictEqual(Cr.ptr,r),Cr.onMessageComplete()||0)}})}var z6=null,Z6=hie();Z6.catch();var Cr=null,Ys=null,jg=0,Js=null,vd=1,Wg=2,eB=3,tB=class{constructor(e,r,{exports:n}){$(Number.isFinite(e[zg])&&e[zg]>0),this.llhttp=n,this.ptr=this.llhttp.llhttp_alloc(Hs.TYPE.RESPONSE),this.client=e,this.socket=r,this.timeout=null,this.timeoutValue=null,this.timeoutType=null,this.statusCode=null,this.statusText="",this.upgrade=!1,this.headers=[],this.headersSize=0,this.headersMaxSize=e[zg],this.shouldKeepAlive=!1,this.paused=!1,this.resume=this.resume.bind(this),this.bytesRead=0,this.keepAlive="",this.contentLength="",this.connection="",this.maxResponseSize=e[uD]}setTimeout(e,r){this.timeoutType=r,e!==this.timeoutValue?(j6.clearTimeout(this.timeout),e?(this.timeout=j6.setTimeout(fie,e,this),this.timeout.unref&&this.timeout.unref()):this.timeout=null,this.timeoutValue=e):this.timeout&&this.timeout.refresh&&this.timeout.refresh()}resume(){this.socket.destroyed||!this.paused||($(this.ptr!=null),$(Cr==null),this.llhttp.llhttp_resume(this.ptr),$(this.timeoutType===Wg),this.timeout&&this.timeout.refresh&&this.timeout.refresh(),this.paused=!1,this.execute(this.socket.read()||mie),this.readMore())}readMore(){for(;!this.paused&&this.ptr;){let e=this.socket.read();if(e===null)break;this.execute(e)}}execute(e){$(this.ptr!=null),$(Cr==null),$(!this.paused);let{socket:r,llhttp:n}=this;e.length>jg&&(Js&&n.free(Js),jg=Math.ceil(e.length/4096)*4096,Js=n.malloc(jg)),new Uint8Array(n.memory.buffer,Js,jg).set(e);try{let i;try{Ys=e,Cr=this,i=n.llhttp_execute(this.ptr,Js,e.length)}catch(a){throw a}finally{Cr=null,Ys=null}let s=n.llhttp_get_error_pos(this.ptr)-Js;if(i===Hs.ERROR.PAUSED_UPGRADE)this.onUpgrade(e.slice(s));else if(i===Hs.ERROR.PAUSED)this.paused=!0,r.unshift(e.slice(s));else if(i!==Hs.ERROR.OK){let a=n.llhttp_get_error_reason(this.ptr),o="";if(a){let A=new Uint8Array(n.memory.buffer,a).indexOf(0);o="Response does not match the HTTP/1.1 protocol ("+Buffer.from(n.memory.buffer,a,A).toString()+")"}throw new Vne(o,Hs.ERROR[i],e.slice(s))}}catch(i){ne.destroy(r,i)}}destroy(){$(this.ptr!=null),$(Cr==null),this.llhttp.llhttp_free(this.ptr),this.ptr=null,j6.clearTimeout(this.timeout),this.timeout=null,this.timeoutValue=null,this.timeoutType=null,this.paused=!1}onStatus(e){this.statusText=e.toString()}onMessageBegin(){let{socket:e,client:r}=this;if(e.destroyed||!r[It][r[Bt]])return-1}onHeaderField(e){let r=this.headers.length;(r&1)===0?this.headers.push(e):this.headers[r-1]=Buffer.concat([this.headers[r-1],e]),this.trackHeader(e.length)}onHeaderValue(e){let r=this.headers.length;(r&1)===1?(this.headers.push(e),r+=1):this.headers[r-1]=Buffer.concat([this.headers[r-1],e]);let n=this.headers[r-2];n.length===10&&n.toString().toLowerCase()==="keep-alive"?this.keepAlive+=e.toString():n.length===10&&n.toString().toLowerCase()==="connection"?this.connection+=e.toString():n.length===14&&n.toString().toLowerCase()==="content-length"&&(this.contentLength+=e.toString()),this.trackHeader(e.length)}trackHeader(e){this.headersSize+=e,this.headersSize>=this.headersMaxSize&&ne.destroy(this.socket,new Une)}onUpgrade(e){let{upgrade:r,client:n,socket:i,headers:s,statusCode:a}=this;$(r);let o=n[It][n[Bt]];$(o),$(!i.destroyed),$(i===n[Ht]),$(!this.paused),$(o.upgrade||o.method==="CONNECT"),this.statusCode=null,this.statusText="",this.shouldKeepAlive=null,$(this.headers.length%2===0),this.headers=[],this.headersSize=0,i.unshift(e),i[Gt].destroy(),i[Gt]=null,i[zs]=null,i[Gr]=null,i.removeListener("error",fD).removeListener("readable",hD).removeListener("end",gD).removeListener("close",rB),n[Ht]=null,n[It][n[Bt]++]=null,n.emit("disconnect",n[Vr],[n],new js("upgrade"));try{o.onUpgrade(a,s,i)}catch(A){ne.destroy(i,A)}hi(n)}onHeadersComplete(e,r,n){let{client:i,socket:s,headers:a,statusText:o}=this;if(s.destroyed)return-1;let A=i[It][i[Bt]];if(!A)return-1;if($(!this.upgrade),$(this.statusCode<200),e===100)return ne.destroy(s,new Sd("bad response",ne.getSocketInfo(s))),-1;if(r&&!A.upgrade)return ne.destroy(s,new Sd("bad upgrade",ne.getSocketInfo(s))),-1;if($.strictEqual(this.timeoutType,vd),this.statusCode=e,this.shouldKeepAlive=n||A.method==="HEAD"&&!s[En]&&this.connection.toLowerCase()==="keep-alive",this.statusCode>=200){let c=A.bodyTimeout!=null?A.bodyTimeout:i[dD];this.setTimeout(c,Wg)}else this.timeout&&this.timeout.refresh&&this.timeout.refresh();if(A.method==="CONNECT")return $(i[Mt]===1),this.upgrade=!0,2;if(r)return $(i[Mt]===1),this.upgrade=!0,2;if($(this.headers.length%2===0),this.headers=[],this.headersSize=0,this.shouldKeepAlive&&i[Jo]){let c=this.keepAlive?ne.parseKeepAliveTimeout(this.keepAlive):null;if(c!=null){let d=Math.min(c-i[lD],i[AD]);d<=0?s[En]=!0:i[Mm]=d}else i[Mm]=i[K6]}else s[En]=!0;let l=A.onHeaders(e,a,this.resume,o)===!1;return A.aborted?-1:A.method==="HEAD"||e<200?1:(s[bd]&&(s[bd]=!1,hi(i)),l?Hs.ERROR.PAUSED:0)}onBody(e){let{client:r,socket:n,statusCode:i,maxResponseSize:s}=this;if(n.destroyed)return-1;let a=r[It][r[Bt]];if($(a),$.strictEqual(this.timeoutType,Wg),this.timeout&&this.timeout.refresh&&this.timeout.refresh(),$(i>=200),s>-1&&this.bytesRead+e.length>s)return ne.destroy(n,new Gne),-1;if(this.bytesRead+=e.length,a.onData(e)===!1)return Hs.ERROR.PAUSED}onMessageComplete(){let{client:e,socket:r,statusCode:n,upgrade:i,headers:s,contentLength:a,bytesRead:o,shouldKeepAlive:A}=this;if(r.destroyed&&(!n||A))return-1;if(i)return;let l=e[It][e[Bt]];if($(l),$(n>=100),this.statusCode=null,this.statusText="",this.bytesRead=0,this.contentLength="",this.keepAlive="",this.connection="",$(this.headers.length%2===0),this.headers=[],this.headersSize=0,!(n<200)){if(l.method!=="HEAD"&&a&&o!==parseInt(a,10))return ne.destroy(r,new Lne),-1;if(l.onComplete(s),e[It][e[Bt]++]=null,r[Ya])return $.strictEqual(e[Mt],0),ne.destroy(r,new js("reset")),Hs.ERROR.PAUSED;if(A){if(r[En]&&e[Mt]===0)return ne.destroy(r,new js("reset")),Hs.ERROR.PAUSED;e[Jo]===1?setImmediate(hi,e):hi(e)}else return ne.destroy(r,new js("reset")),Hs.ERROR.PAUSED}}};function fie(t){let{socket:e,timeoutType:r,client:n}=t;r===vd?(!e[Ya]||e.writableNeedDrain||n[Mt]>1)&&($(!t.paused,"cannot be paused while waiting for headers"),ne.destroy(e,new Fne)):r===Wg?t.paused||ne.destroy(e,new qne):r===eB&&($(n[Mt]===0&&n[Mm]),ne.destroy(e,new js("socket idle timeout")))}function hD(){let{[Gt]:t}=this;t&&t.readMore()}function fD(t){let{[zs]:e,[Gt]:r}=this;if($(t.code!=="ERR_TLS_CERT_ALTNAME_INVALID"),e[Ws]!=="h2"&&t.code==="ECONNRESET"&&r.statusCode&&!r.shouldKeepAlive){r.onMessageComplete();return}this[Gr]=t,e0(this[zs],t)}function e0(t,e){if(t[Mt]===0&&e.code!=="UND_ERR_INFO"&&e.code!=="UND_ERR_SOCKET"){$(t[ui]===t[Bt]);let r=t[It].splice(t[Bt]);for(let n=0;n0&&r.code!=="UND_ERR_INFO"){let n=t[It][t[Bt]];t[It][t[Bt]++]=null,yn(t,n,r)}t[ui]=t[Bt],$(t[Mt]===0),t.emit("disconnect",t[Vr],[t],r),hi(t)}async function ED(t){$(!t[wd]),$(!t[Ht]);let{host:e,hostname:r,protocol:n,port:i}=t[Vr];if(r[0]==="["){let s=r.indexOf("]");$(s!==-1);let a=r.substring(1,s);$(aD.isIP(a)),r=a}t[wd]=!0,An.beforeConnect.hasSubscribers&&An.beforeConnect.publish({connectParams:{host:e,hostname:r,protocol:n,port:i,servername:t[Go],localAddress:t[_m]},connector:t[Pm]});try{let s=await new Promise((o,A)=>{t[Pm]({host:e,hostname:r,protocol:n,port:i,servername:t[Go],localAddress:t[_m]},(l,c)=>{l?A(l):o(c)})});if(t.destroyed){ne.destroy(s.on("error",()=>{}),new Hne);return}if(t[wd]=!1,$(s),s.alpnProtocol==="h2"){iD||(iD=!0,process.emitWarning("H2 support is experimental, expect them to change at any time.",{code:"UNDICI-H2"}));let o=Kg.connect(t[Vr],{createConnection:()=>s,peerMaxConcurrentStreams:t[$g].maxConcurrentStreams});t[Ws]="h2",o[zs]=t,o[Ht]=s,o.on("error",lie),o.on("frameError",cie),o.on("end",die),o.on("goaway",pie),o.on("close",rB),o.unref(),t[mi]=o,s[mi]=o}else z6||(z6=await Z6,Z6=null),s[km]=!1,s[Ya]=!1,s[En]=!1,s[bd]=!1,s[Gt]=new tB(t,s,z6);s[pD]=0,s[xm]=t[xm],s[zs]=t,s[Gr]=null,s.on("error",fD).on("readable",hD).on("end",gD).on("close",rB),t[Ht]=s,An.connected.hasSubscribers&&An.connected.publish({connectParams:{host:e,hostname:r,protocol:n,port:i,servername:t[Go],localAddress:t[_m]},connector:t[Pm],socket:s}),t.emit("connect",t[Vr],[t])}catch(s){if(t.destroyed)return;if(t[wd]=!1,An.connectError.hasSubscribers&&An.connectError.publish({connectParams:{host:e,hostname:r,protocol:n,port:i,servername:t[Go],localAddress:t[_m]},connector:t[Pm],error:s}),s.code==="ERR_TLS_CERT_ALTNAME_INVALID")for($(t[Mt]===0);t[dl]>0&&t[It][t[ui]].servername===t[Go];){let a=t[It][t[ui]++];yn(t,a,s)}else e0(t,s);t.emit("connectionError",t[Vr],[t],s)}hi(t)}function sD(t){t[Yo]=0,t.emit("drain",t[Vr],[t])}function hi(t,e){t[ll]!==2&&(t[ll]=2,gie(t,e),t[ll]=0,t[Bt]>256&&(t[It].splice(0,t[Bt]),t[ui]-=t[Bt],t[Bt]=0))}function gie(t,e){for(;;){if(t.destroyed){$(t[dl]===0);return}if(t[Ho]&&!t[cl]){t[Ho](),t[Ho]=null;return}let r=t[Ht];if(r&&!r.destroyed&&r.alpnProtocol!=="h2"){if(t[cl]===0?!r[km]&&r.unref&&(r.unref(),r[km]=!0):r[km]&&r.ref&&(r.ref(),r[km]=!1),t[cl]===0)r[Gt].timeoutType!==eB&&r[Gt].setTimeout(t[Mm],eB);else if(t[Mt]>0&&r[Gt].statusCode<200&&r[Gt].timeoutType!==vd){let i=t[It][t[Bt]],s=i.headersTimeout!=null?i.headersTimeout:t[cD];r[Gt].setTimeout(s,vd)}}if(t[$6])t[Yo]=2;else if(t[Yo]===2){e?(t[Yo]=1,process.nextTick(sD,t)):sD(t);continue}if(t[dl]===0||t[Mt]>=(t[Jo]||1))return;let n=t[It][t[ui]];if(t[Vr].protocol==="https:"&&t[Go]!==n.servername){if(t[Mt]>0)return;if(t[Go]=n.servername,r&&r.servername!==n.servername){ne.destroy(r,new js("servername changed"));return}}if(t[wd])return;if(!r&&!t[mi]){ED(t);return}if(r.destroyed||r[Ya]||r[En]||r[bd]||t[Mt]>0&&!n.idempotent||t[Mt]>0&&(n.upgrade||n.method==="CONNECT")||t[Mt]>0&&ne.bodyLength(n.body)!==0&&(ne.isStream(n.body)||ne.isAsyncIterable(n.body)))return;!n.aborted&&Eie(t,n)?t[ui]++:t[It].splice(t[ui],1)}}function yD(t){return t!=="GET"&&t!=="HEAD"&&t!=="OPTIONS"&&t!=="TRACE"&&t!=="CONNECT"}function Eie(t,e){if(t[Ws]==="h2"){yie(t,t[mi],e);return}let{body:r,method:n,path:i,host:s,upgrade:a,headers:o,blocking:A,reset:l}=e,c=n==="PUT"||n==="POST"||n==="PATCH";r&&typeof r.read=="function"&&r.read(0);let d=ne.bodyLength(r),p=d;if(p===null&&(p=e.contentLength),p===0&&!c&&(p=null),yD(n)&&p>0&&e.contentLength!==null&&e.contentLength!==p){if(t[Om])return yn(t,e,new Ha),!1;process.emitWarning(new Ha)}let u=t[Ht];try{e.onConnect(h=>{e.aborted||e.completed||(yn(t,e,h||new nB),ne.destroy(u,new js("aborted")))})}catch(h){yn(t,e,h)}if(e.aborted)return!1;n==="HEAD"&&(u[En]=!0),(a||n==="CONNECT")&&(u[En]=!0),l!=null&&(u[En]=l),t[xm]&&u[pD]++>=t[xm]&&(u[En]=!0),A&&(u[bd]=!0);let m=`${n} ${i} HTTP/1.1\r -`;return typeof s=="string"?m+=`host: ${s}\r -`:m+=t[oD],a?m+=`connection: upgrade\r -upgrade: ${a}\r -`:t[Jo]&&!u[En]?m+=`connection: keep-alive\r -`:m+=`connection: close\r -`,o&&(m+=o),An.sendHeaders.hasSubscribers&&An.sendHeaders.publish({request:e,headers:m,socket:u}),!r||d===0?(p===0?u.write(`${m}content-length: 0\r -\r -`,"latin1"):($(p===null,"no body must not have content length"),u.write(`${m}\r -`,"latin1")),e.onRequestSent()):ne.isBuffer(r)?($(p===r.byteLength,"buffer body must have content length"),u.cork(),u.write(`${m}content-length: ${p}\r -\r -`,"latin1"),u.write(r),u.uncork(),e.onBodySent(r),e.onRequestSent(),c||(u[En]=!0)):ne.isBlobLike(r)?typeof r.stream=="function"?Xg({body:r.stream(),client:t,request:e,socket:u,contentLength:p,header:m,expectsPayload:c}):ID({body:r,client:t,request:e,socket:u,contentLength:p,header:m,expectsPayload:c}):ne.isStream(r)?CD({body:r,client:t,request:e,socket:u,contentLength:p,header:m,expectsPayload:c}):ne.isIterable(r)?Xg({body:r,client:t,request:e,socket:u,contentLength:p,header:m,expectsPayload:c}):$(!1),!0}function yie(t,e,r){let{body:n,method:i,path:s,host:a,upgrade:o,expectContinue:A,signal:l,headers:c}=r,d;if(typeof c=="string"?d=W6[eie](c.trim()):d=c,o)return yn(t,r,new Error("Upgrade not supported for H2")),!1;try{r.onConnect(y=>{r.aborted||r.completed||yn(t,r,y||new nB)})}catch(y){yn(t,r,y)}if(r.aborted)return!1;let p,u=t[$g];if(d[rie]=a||t[mD],d[nie]=i,i==="CONNECT")return e.ref(),p=e.request(d,{endStream:!1,signal:l}),p.id&&!p.pending?(r.onUpgrade(null,null,p),++u.openStreams):p.once("ready",()=>{r.onUpgrade(null,null,p),++u.openStreams}),p.once("close",()=>{u.openStreams-=1,u.openStreams===0&&e.unref()}),!0;d[iie]=s,d[sie]="https";let m=i==="PUT"||i==="POST"||i==="PATCH";n&&typeof n.read=="function"&&n.read(0);let h=ne.bodyLength(n);if(h==null&&(h=r.contentLength),(h===0||!m)&&(h=null),yD(i)&&h>0&&r.contentLength!=null&&r.contentLength!==h){if(t[Om])return yn(t,r,new Ha),!1;process.emitWarning(new Ha)}h!=null&&($(n,"no body must not have content length"),d[aie]=`${h}`),e.ref();let f=i==="GET"||i==="HEAD";return A?(d[oie]="100-continue",p=e.request(d,{endStream:f,signal:l}),p.once("continue",E)):(p=e.request(d,{endStream:f,signal:l}),E()),++u.openStreams,p.once("response",y=>{let{[Aie]:B,...Q}=y;r.onHeaders(Number(B),Q,p.resume.bind(p),"")===!1&&p.pause()}),p.once("end",()=>{r.onComplete([])}),p.on("data",y=>{r.onData(y)===!1&&p.pause()}),p.once("close",()=>{u.openStreams-=1,u.openStreams===0&&e.unref()}),p.once("error",function(y){t[mi]&&!t[mi].destroyed&&!this.closed&&!this.destroyed&&(u.streams-=1,ne.destroy(p,y))}),p.once("frameError",(y,B)=>{let Q=new js(`HTTP/2: "frameError" received - type ${y}, code ${B}`);yn(t,r,Q),t[mi]&&!t[mi].destroyed&&!this.closed&&!this.destroyed&&(u.streams-=1,ne.destroy(p,Q))}),!0;function E(){n?ne.isBuffer(n)?($(h===n.byteLength,"buffer body must have content length"),p.cork(),p.write(n),p.uncork(),p.end(),r.onBodySent(n),r.onRequestSent()):ne.isBlobLike(n)?typeof n.stream=="function"?Xg({client:t,request:r,contentLength:h,h2stream:p,expectsPayload:m,body:n.stream(),socket:t[Ht],header:""}):ID({body:n,client:t,request:r,contentLength:h,expectsPayload:m,h2stream:p,header:"",socket:t[Ht]}):ne.isStream(n)?CD({body:n,client:t,request:r,contentLength:h,expectsPayload:m,socket:t[Ht],h2stream:p,header:""}):ne.isIterable(n)?Xg({body:n,client:t,request:r,contentLength:h,expectsPayload:m,header:"",h2stream:p,socket:t[Ht]}):$(!1):r.onRequestSent()}}function CD({h2stream:t,body:e,client:r,request:n,socket:i,contentLength:s,header:a,expectsPayload:o}){if($(s!==0||r[Mt]===0,"stream body cannot be pipelined"),r[Ws]==="h2"){let h=function(f){n.onBodySent(f)},m=One(e,t,f=>{f?(ne.destroy(e,f),ne.destroy(t,f)):n.onRequestSent()});m.on("data",h),m.once("end",()=>{m.removeListener("data",h),ne.destroy(m)});return}let A=!1,l=new Zg({socket:i,request:n,contentLength:s,client:r,expectsPayload:o,header:a}),c=function(m){if(!A)try{!l.write(m)&&this.pause&&this.pause()}catch(h){ne.destroy(this,h)}},d=function(){A||e.resume&&e.resume()},p=function(){if(A)return;let m=new nB;queueMicrotask(()=>u(m))},u=function(m){if(!A){if(A=!0,$(i.destroyed||i[Ya]&&r[Mt]<=1),i.off("drain",d).off("error",u),e.removeListener("data",c).removeListener("end",u).removeListener("error",u).removeListener("close",p),!m)try{l.end()}catch(h){m=h}l.destroy(m),m&&(m.code!=="UND_ERR_INFO"||m.message!=="reset")?ne.destroy(e,m):ne.destroy(e)}};e.on("data",c).on("end",u).on("error",u).on("close",p),e.resume&&e.resume(),i.on("drain",d).on("error",u)}async function ID({h2stream:t,body:e,client:r,request:n,socket:i,contentLength:s,header:a,expectsPayload:o}){$(s===e.size,"blob body must have content length");let A=r[Ws]==="h2";try{if(s!=null&&s!==e.size)throw new Ha;let l=Buffer.from(await e.arrayBuffer());A?(t.cork(),t.write(l),t.uncork()):(i.cork(),i.write(`${a}content-length: ${s}\r -\r -`,"latin1"),i.write(l),i.uncork()),n.onBodySent(l),n.onRequestSent(),o||(i[En]=!0),hi(r)}catch(l){ne.destroy(A?t:i,l)}}async function Xg({h2stream:t,body:e,client:r,request:n,socket:i,contentLength:s,header:a,expectsPayload:o}){$(s!==0||r[Mt]===0,"iterator body cannot be pipelined");let A=null;function l(){if(A){let p=A;A=null,p()}}let c=()=>new Promise((p,u)=>{$(A===null),i[Gr]?u(i[Gr]):A=p});if(r[Ws]==="h2"){t.on("close",l).on("drain",l);try{for await(let p of e){if(i[Gr])throw i[Gr];let u=t.write(p);n.onBodySent(p),u||await c()}}catch(p){t.destroy(p)}finally{n.onRequestSent(),t.end(),t.off("close",l).off("drain",l)}return}i.on("close",l).on("drain",l);let d=new Zg({socket:i,request:n,contentLength:s,client:r,expectsPayload:o,header:a});try{for await(let p of e){if(i[Gr])throw i[Gr];d.write(p)||await c()}d.end()}catch(p){d.destroy(p)}finally{i.off("close",l).off("drain",l)}}var Zg=class{constructor({socket:e,request:r,contentLength:n,client:i,expectsPayload:s,header:a}){this.socket=e,this.request=r,this.contentLength=n,this.client=i,this.bytesWritten=0,this.expectsPayload=s,this.header=a,e[Ya]=!0}write(e){let{socket:r,request:n,contentLength:i,client:s,bytesWritten:a,expectsPayload:o,header:A}=this;if(r[Gr])throw r[Gr];if(r.destroyed)return!1;let l=Buffer.byteLength(e);if(!l)return!0;if(i!==null&&a+l>i){if(s[Om])throw new Ha;process.emitWarning(new Ha)}r.cork(),a===0&&(o||(r[En]=!0),i===null?r.write(`${A}transfer-encoding: chunked\r -`,"latin1"):r.write(`${A}content-length: ${i}\r -\r -`,"latin1")),i===null&&r.write(`\r -${l.toString(16)}\r -`,"latin1"),this.bytesWritten+=l;let c=r.write(e);return r.uncork(),n.onBodySent(e),c||r[Gt].timeout&&r[Gt].timeoutType===vd&&r[Gt].timeout.refresh&&r[Gt].timeout.refresh(),c}end(){let{socket:e,contentLength:r,client:n,bytesWritten:i,expectsPayload:s,header:a,request:o}=this;if(o.onRequestSent(),e[Ya]=!1,e[Gr])throw e[Gr];if(!e.destroyed){if(i===0?s?e.write(`${a}content-length: 0\r -\r -`,"latin1"):e.write(`${a}\r -`,"latin1"):r===null&&e.write(`\r -0\r -\r -`,"latin1"),r!==null&&i!==r){if(n[Om])throw new Ha;process.emitWarning(new Ha)}e[Gt].timeout&&e[Gt].timeoutType===vd&&e[Gt].timeout.refresh&&e[Gt].timeout.refresh(),hi(n)}}destroy(e){let{socket:r,client:n}=this;r[Ya]=!1,e&&($(n[Mt]<=1,"pipeline should only contain this request"),ne.destroy(r,e))}};function yn(t,e,r){try{e.onError(r),$(e.aborted)}catch(n){t.emit("error",n)}}BD.exports=X6});var wD=g((kDe,QD)=>{"use strict";var t0=class{constructor(){this.bottom=0,this.top=0,this.list=new Array(2048),this.next=null}isEmpty(){return this.top===this.bottom}isFull(){return(this.top+1&2047)===this.bottom}push(e){this.list[this.top]=e,this.top=this.top+1&2047}shift(){let e=this.list[this.bottom];return e===void 0?null:(this.list[this.bottom]=void 0,this.bottom=this.bottom+1&2047,e)}};QD.exports=class{constructor(){this.head=this.tail=new t0}isEmpty(){return this.head.isEmpty()}push(e){this.head.isFull()&&(this.head=this.head.next=new t0),this.head.push(e)}shift(){let e=this.tail,r=e.shift();return e.isEmpty()&&e.next!==null&&(this.tail=e.next),r}}});var bD=g((PDe,SD)=>{var{kFree:Cie,kConnected:Iie,kPending:Bie,kQueued:Qie,kRunning:wie,kSize:Sie}=pt(),pl=Symbol("pool"),iB=class{constructor(e){this[pl]=e}get connected(){return this[pl][Iie]}get free(){return this[pl][Cie]}get pending(){return this[pl][Bie]}get queued(){return this[pl][Qie]}get running(){return this[pl][wie]}get size(){return this[pl][Sie]}};SD.exports=iB});var cB=g((_De,OD)=>{"use strict";var bie=Nm(),vie=wD(),{kConnected:sB,kSize:vD,kRunning:RD,kPending:ND,kQueued:Fm,kBusy:Rie,kFree:Nie,kUrl:Tie,kClose:Die,kDestroy:kie,kDispatch:Pie}=pt(),_ie=bD(),xn=Symbol("clients"),Cn=Symbol("needDrain"),Um=Symbol("queue"),aB=Symbol("closed resolve"),oB=Symbol("onDrain"),TD=Symbol("onConnect"),DD=Symbol("onDisconnect"),kD=Symbol("onConnectionError"),AB=Symbol("get dispatcher"),_D=Symbol("add client"),MD=Symbol("remove client"),PD=Symbol("stats"),lB=class extends bie{constructor(){super(),this[Um]=new vie,this[xn]=[],this[Fm]=0;let e=this;this[oB]=function(n,i){let s=e[Um],a=!1;for(;!a;){let o=s.shift();if(!o)break;e[Fm]--,a=!this.dispatch(o.opts,o.handler)}this[Cn]=a,!this[Cn]&&e[Cn]&&(e[Cn]=!1,e.emit("drain",n,[e,...i])),e[aB]&&s.isEmpty()&&Promise.all(e[xn].map(o=>o.close())).then(e[aB])},this[TD]=(r,n)=>{e.emit("connect",r,[e,...n])},this[DD]=(r,n,i)=>{e.emit("disconnect",r,[e,...n],i)},this[kD]=(r,n,i)=>{e.emit("connectionError",r,[e,...n],i)},this[PD]=new _ie(this)}get[Rie](){return this[Cn]}get[sB](){return this[xn].filter(e=>e[sB]).length}get[Nie](){return this[xn].filter(e=>e[sB]&&!e[Cn]).length}get[ND](){let e=this[Fm];for(let{[ND]:r}of this[xn])e+=r;return e}get[RD](){let e=0;for(let{[RD]:r}of this[xn])e+=r;return e}get[vD](){let e=this[Fm];for(let{[vD]:r}of this[xn])e+=r;return e}get stats(){return this[PD]}async[Die](){return this[Um].isEmpty()?Promise.all(this[xn].map(e=>e.close())):new Promise(e=>{this[aB]=e})}async[kie](e){for(;;){let r=this[Um].shift();if(!r)break;r.handler.onError(e)}return Promise.all(this[xn].map(r=>r.destroy(e)))}[Pie](e,r){let n=this[AB]();return n?n.dispatch(e,r)||(n[Cn]=!0,this[Cn]=!this[AB]()):(this[Cn]=!0,this[Um].push({opts:e,handler:r}),this[Fm]++),!this[Cn]}[_D](e){return e.on("drain",this[oB]).on("connect",this[TD]).on("disconnect",this[DD]).on("connectionError",this[kD]),this[xn].push(e),this[Cn]&&process.nextTick(()=>{this[Cn]&&this[oB](e[Tie],[this,e])}),this}[MD](e){e.close(()=>{let r=this[xn].indexOf(e);r!==-1&&this[xn].splice(r,1)}),this[Cn]=this[xn].some(r=>!r[Cn]&&r.closed!==!0&&r.destroyed!==!0)}};OD.exports={PoolBase:lB,kClients:xn,kNeedDrain:Cn,kAddClient:_D,kRemoveClient:MD,kGetDispatcher:AB}});var Rd=g((MDe,UD)=>{"use strict";var{PoolBase:Mie,kClients:xD,kNeedDrain:Oie,kAddClient:xie,kGetDispatcher:Lie}=cB(),Fie=Lm(),{InvalidArgumentError:dB}=ot(),pB=Le(),{kUrl:LD,kInterceptors:Uie}=pt(),qie=Tm(),uB=Symbol("options"),mB=Symbol("connections"),FD=Symbol("factory");function Vie(t,e){return new Fie(t,e)}var hB=class extends Mie{constructor(e,{connections:r,factory:n=Vie,connect:i,connectTimeout:s,tls:a,maxCachedSessions:o,socketPath:A,autoSelectFamily:l,autoSelectFamilyAttemptTimeout:c,allowH2:d,...p}={}){if(super(),r!=null&&(!Number.isFinite(r)||r<0))throw new dB("invalid connections");if(typeof n!="function")throw new dB("factory must be a function.");if(i!=null&&typeof i!="function"&&typeof i!="object")throw new dB("connect must be a function or an object");typeof i!="function"&&(i=qie({...a,maxCachedSessions:o,allowH2:d,socketPath:A,timeout:s,...pB.nodeHasAutoSelectFamily&&l?{autoSelectFamily:l,autoSelectFamilyAttemptTimeout:c}:void 0,...i})),this[Uie]=p.interceptors&&p.interceptors.Pool&&Array.isArray(p.interceptors.Pool)?p.interceptors.Pool:[],this[mB]=r||null,this[LD]=pB.parseOrigin(e),this[uB]={...pB.deepClone(p),connect:i,allowH2:d},this[uB].interceptors=p.interceptors?{...p.interceptors}:void 0,this[FD]=n}[Lie](){let e=this[xD].find(r=>!r[Oie]);return e||((!this[mB]||this[xD].length{"use strict";var{BalancedPoolMissingUpstreamError:Gie,InvalidArgumentError:Hie}=ot(),{PoolBase:Yie,kClients:In,kNeedDrain:qm,kAddClient:Jie,kRemoveClient:jie,kGetDispatcher:zie}=cB(),Wie=Rd(),{kUrl:fB,kInterceptors:$ie}=pt(),{parseOrigin:qD}=Le(),VD=Symbol("factory"),r0=Symbol("options"),GD=Symbol("kGreatestCommonDivisor"),ul=Symbol("kCurrentWeight"),ml=Symbol("kIndex"),Gi=Symbol("kWeight"),n0=Symbol("kMaxWeightPerServer"),i0=Symbol("kErrorPenalty");function HD(t,e){return e===0?t:HD(e,t%e)}function Kie(t,e){return new Wie(t,e)}var gB=class extends Yie{constructor(e=[],{factory:r=Kie,...n}={}){if(super(),this[r0]=n,this[ml]=-1,this[ul]=0,this[n0]=this[r0].maxWeightPerServer||100,this[i0]=this[r0].errorPenalty||15,Array.isArray(e)||(e=[e]),typeof r!="function")throw new Hie("factory must be a function.");this[$ie]=n.interceptors&&n.interceptors.BalancedPool&&Array.isArray(n.interceptors.BalancedPool)?n.interceptors.BalancedPool:[],this[VD]=r;for(let i of e)this.addUpstream(i);this._updateBalancedPoolStats()}addUpstream(e){let r=qD(e).origin;if(this[In].find(i=>i[fB].origin===r&&i.closed!==!0&&i.destroyed!==!0))return this;let n=this[VD](r,Object.assign({},this[r0]));this[Jie](n),n.on("connect",()=>{n[Gi]=Math.min(this[n0],n[Gi]+this[i0])}),n.on("connectionError",()=>{n[Gi]=Math.max(1,n[Gi]-this[i0]),this._updateBalancedPoolStats()}),n.on("disconnect",(...i)=>{let s=i[2];s&&s.code==="UND_ERR_SOCKET"&&(n[Gi]=Math.max(1,n[Gi]-this[i0]),this._updateBalancedPoolStats())});for(let i of this[In])i[Gi]=this[n0];return this._updateBalancedPoolStats(),this}_updateBalancedPoolStats(){this[GD]=this[In].map(e=>e[Gi]).reduce(HD,0)}removeUpstream(e){let r=qD(e).origin,n=this[In].find(i=>i[fB].origin===r&&i.closed!==!0&&i.destroyed!==!0);return n&&this[jie](n),this}get upstreams(){return this[In].filter(e=>e.closed!==!0&&e.destroyed!==!0).map(e=>e[fB].origin)}[zie](){if(this[In].length===0)throw new Gie;if(!this[In].find(s=>!s[qm]&&s.closed!==!0&&s.destroyed!==!0)||this[In].map(s=>s[qm]).reduce((s,a)=>s&&a,!0))return;let n=0,i=this[In].findIndex(s=>!s[qm]);for(;n++this[In][i][Gi]&&!s[qm]&&(i=this[ml]),this[ml]===0&&(this[ul]=this[ul]-this[GD],this[ul]<=0&&(this[ul]=this[n0])),s[Gi]>=this[ul]&&!s[qm])return s}return this[ul]=this[In][i][Gi],this[ml]=i,this[In][i]}};YD.exports=gB});var EB=g((xDe,WD)=>{"use strict";var{kConnected:jD,kSize:zD}=pt(),s0=class{constructor(e){this.value=e}deref(){return this.value[jD]===0&&this.value[zD]===0?void 0:this.value}},a0=class{constructor(e){this.finalizer=e}register(e,r){e.on&&e.on("disconnect",()=>{e[jD]===0&&e[zD]===0&&this.finalizer(r)})}};WD.exports=function(){return process.env.NODE_V8_COVERAGE?{WeakRef:s0,FinalizationRegistry:a0}:{WeakRef:global.WeakRef||s0,FinalizationRegistry:global.FinalizationRegistry||a0}}});var Vm=g((LDe,nk)=>{"use strict";var{InvalidArgumentError:o0}=ot(),{kClients:jo,kRunning:$D,kClose:Xie,kDestroy:Zie,kDispatch:ese,kInterceptors:tse}=pt(),rse=Nm(),nse=Rd(),ise=Lm(),sse=Le(),ase=Yg(),{WeakRef:ose,FinalizationRegistry:Ase}=EB()(),KD=Symbol("onConnect"),XD=Symbol("onDisconnect"),ZD=Symbol("onConnectionError"),lse=Symbol("maxRedirections"),ek=Symbol("onDrain"),tk=Symbol("factory"),rk=Symbol("finalizer"),yB=Symbol("options");function cse(t,e){return e&&e.connections===1?new ise(t,e):new nse(t,e)}var CB=class extends rse{constructor({factory:e=cse,maxRedirections:r=0,connect:n,...i}={}){if(super(),typeof e!="function")throw new o0("factory must be a function.");if(n!=null&&typeof n!="function"&&typeof n!="object")throw new o0("connect must be a function or an object");if(!Number.isInteger(r)||r<0)throw new o0("maxRedirections must be a positive number");n&&typeof n!="function"&&(n={...n}),this[tse]=i.interceptors&&i.interceptors.Agent&&Array.isArray(i.interceptors.Agent)?i.interceptors.Agent:[ase({maxRedirections:r})],this[yB]={...sse.deepClone(i),connect:n},this[yB].interceptors=i.interceptors?{...i.interceptors}:void 0,this[lse]=r,this[tk]=e,this[jo]=new Map,this[rk]=new Ase(a=>{let o=this[jo].get(a);o!==void 0&&o.deref()===void 0&&this[jo].delete(a)});let s=this;this[ek]=(a,o)=>{s.emit("drain",a,[s,...o])},this[KD]=(a,o)=>{s.emit("connect",a,[s,...o])},this[XD]=(a,o,A)=>{s.emit("disconnect",a,[s,...o],A)},this[ZD]=(a,o,A)=>{s.emit("connectionError",a,[s,...o],A)}}get[$D](){let e=0;for(let r of this[jo].values()){let n=r.deref();n&&(e+=n[$D])}return e}[ese](e,r){let n;if(e.origin&&(typeof e.origin=="string"||e.origin instanceof URL))n=String(e.origin);else throw new o0("opts.origin must be a non-empty string or URL.");let i=this[jo].get(n),s=i?i.deref():null;return s||(s=this[tk](e.origin,this[yB]).on("drain",this[ek]).on("connect",this[KD]).on("disconnect",this[XD]).on("connectionError",this[ZD]),this[jo].set(n,new ose(s)),this[rk].register(s,n)),s.dispatch(e,r)}async[Xie](){let e=[];for(let r of this[jo].values()){let n=r.deref();n&&e.push(n.close())}await Promise.all(e)}async[Zie](e){let r=[];for(let n of this[jo].values()){let i=n.deref();i&&r.push(i.destroy(e))}await Promise.all(r)}};nk.exports=CB});var pk=g((UDe,dk)=>{"use strict";var ok=require("assert"),{Readable:dse}=require("stream"),{RequestAbortedError:Ak,NotSupportedError:pse,InvalidArgumentError:use}=ot(),c0=Le(),{ReadableStreamFrom:mse,toUSVString:hse}=Le(),IB,fi=Symbol("kConsume"),A0=Symbol("kReading"),zo=Symbol("kBody"),ik=Symbol("abort"),lk=Symbol("kContentType"),sk=()=>{};dk.exports=class extends dse{constructor({resume:e,abort:r,contentType:n="",highWaterMark:i=64*1024}){super({autoDestroy:!0,read:e,highWaterMark:i}),this._readableState.dataEmitted=!1,this[ik]=r,this[fi]=null,this[zo]=null,this[lk]=n,this[A0]=!1}destroy(e){return this.destroyed?this:(!e&&!this._readableState.endEmitted&&(e=new Ak),e&&this[ik](),super.destroy(e))}emit(e,...r){return e==="data"?this._readableState.dataEmitted=!0:e==="error"&&(this._readableState.errorEmitted=!0),super.emit(e,...r)}on(e,...r){return(e==="data"||e==="readable")&&(this[A0]=!0),super.on(e,...r)}addListener(e,...r){return this.on(e,...r)}off(e,...r){let n=super.off(e,...r);return(e==="data"||e==="readable")&&(this[A0]=this.listenerCount("data")>0||this.listenerCount("readable")>0),n}removeListener(e,...r){return this.off(e,...r)}push(e){return this[fi]&&e!==null&&this.readableLength===0?(ck(this[fi],e),this[A0]?super.push(e):!0):super.push(e)}async text(){return l0(this,"text")}async json(){return l0(this,"json")}async blob(){return l0(this,"blob")}async arrayBuffer(){return l0(this,"arrayBuffer")}async formData(){throw new pse}get bodyUsed(){return c0.isDisturbed(this)}get body(){return this[zo]||(this[zo]=mse(this),this[fi]&&(this[zo].getReader(),ok(this[zo].locked))),this[zo]}dump(e){let r=e&&Number.isFinite(e.limit)?e.limit:262144,n=e&&e.signal;if(n)try{if(typeof n!="object"||!("aborted"in n))throw new use("signal must be an AbortSignal");c0.throwIfAborted(n)}catch(i){return Promise.reject(i)}return this.closed?Promise.resolve(null):new Promise((i,s)=>{let a=n?c0.addAbortListener(n,()=>{this.destroy()}):sk;this.on("close",function(){a(),n&&n.aborted?s(n.reason||Object.assign(new Error("The operation was aborted"),{name:"AbortError"})):i(null)}).on("error",sk).on("data",function(o){r-=o.length,r<=0&&this.destroy()}).resume()})}};function fse(t){return t[zo]&&t[zo].locked===!0||t[fi]}function gse(t){return c0.isDisturbed(t)||fse(t)}async function l0(t,e){if(gse(t))throw new TypeError("unusable");return ok(!t[fi]),new Promise((r,n)=>{t[fi]={type:e,stream:t,resolve:r,reject:n,length:0,body:[]},t.on("error",function(i){BB(this[fi],i)}).on("close",function(){this[fi].body!==null&&BB(this[fi],new Ak)}),process.nextTick(Ese,t[fi])})}function Ese(t){if(t.body===null)return;let{_readableState:e}=t.stream;for(let r of e.buffer)ck(t,r);for(e.endEmitted?ak(this[fi]):t.stream.on("end",function(){ak(this[fi])}),t.stream.resume();t.stream.read()!=null;);}function ak(t){let{type:e,body:r,resolve:n,stream:i,length:s}=t;try{if(e==="text")n(hse(Buffer.concat(r)));else if(e==="json")n(JSON.parse(Buffer.concat(r)));else if(e==="arrayBuffer"){let a=new Uint8Array(s),o=0;for(let A of r)a.set(A,o),o+=A.byteLength;n(a.buffer)}else e==="blob"&&(IB||(IB=require("buffer").Blob),n(new IB(r,{type:i[lk]})));BB(t)}catch(a){i.destroy(a)}}function ck(t,e){t.length+=e.length,t.body.push(e)}function BB(t,e){t.body!==null&&(e?t.reject(e):t.resolve(),t.type=null,t.stream=null,t.resolve=null,t.reject=null,t.length=0,t.body=null)}});var QB=g((qDe,mk)=>{var yse=require("assert"),{ResponseStatusCodeError:d0}=ot(),{toUSVString:uk}=Le();async function Cse({callback:t,body:e,contentType:r,statusCode:n,statusMessage:i,headers:s}){yse(e);let a=[],o=0;for await(let A of e)if(a.push(A),o+=A.length,o>128*1024){a=null;break}if(n===204||!r||!a){process.nextTick(t,new d0(`Response status code ${n}${i?`: ${i}`:""}`,n,s));return}try{if(r.startsWith("application/json")){let A=JSON.parse(uk(Buffer.concat(a)));process.nextTick(t,new d0(`Response status code ${n}${i?`: ${i}`:""}`,n,s,A));return}if(r.startsWith("text/")){let A=uk(Buffer.concat(a));process.nextTick(t,new d0(`Response status code ${n}${i?`: ${i}`:""}`,n,s,A));return}}catch{}process.nextTick(t,new d0(`Response status code ${n}${i?`: ${i}`:""}`,n,s))}mk.exports={getResolveErrorBodyCallback:Cse}});var Td=g((VDe,fk)=>{var{addAbortListener:Ise}=Le(),{RequestAbortedError:Bse}=ot(),Nd=Symbol("kListener"),Wo=Symbol("kSignal");function hk(t){t.abort?t.abort():t.onError(new Bse)}function Qse(t,e){if(t[Wo]=null,t[Nd]=null,!!e){if(e.aborted){hk(t);return}t[Wo]=e,t[Nd]=()=>{hk(t)},Ise(t[Wo],t[Nd])}}function wse(t){t[Wo]&&("removeEventListener"in t[Wo]?t[Wo].removeEventListener("abort",t[Nd]):t[Wo].removeListener("abort",t[Nd]),t[Wo]=null,t[Nd]=null)}fk.exports={addSignal:Qse,removeSignal:wse}});var yk=g((GDe,wB)=>{"use strict";var Sse=pk(),{InvalidArgumentError:Dd,RequestAbortedError:bse}=ot(),$s=Le(),{getResolveErrorBodyCallback:vse}=QB(),{AsyncResource:Rse}=require("async_hooks"),{addSignal:Nse,removeSignal:gk}=Td(),p0=class extends Rse{constructor(e,r){if(!e||typeof e!="object")throw new Dd("invalid opts");let{signal:n,method:i,opaque:s,body:a,onInfo:o,responseHeaders:A,throwOnError:l,highWaterMark:c}=e;try{if(typeof r!="function")throw new Dd("invalid callback");if(c&&(typeof c!="number"||c<0))throw new Dd("invalid highWaterMark");if(n&&typeof n.on!="function"&&typeof n.addEventListener!="function")throw new Dd("signal must be an EventEmitter or EventTarget");if(i==="CONNECT")throw new Dd("invalid method");if(o&&typeof o!="function")throw new Dd("invalid onInfo callback");super("UNDICI_REQUEST")}catch(d){throw $s.isStream(a)&&$s.destroy(a.on("error",$s.nop),d),d}this.responseHeaders=A||null,this.opaque=s||null,this.callback=r,this.res=null,this.abort=null,this.body=a,this.trailers={},this.context=null,this.onInfo=o||null,this.throwOnError=l,this.highWaterMark=c,$s.isStream(a)&&a.on("error",d=>{this.onError(d)}),Nse(this,n)}onConnect(e,r){if(!this.callback)throw new bse;this.abort=e,this.context=r}onHeaders(e,r,n,i){let{callback:s,opaque:a,abort:o,context:A,responseHeaders:l,highWaterMark:c}=this,d=l==="raw"?$s.parseRawHeaders(r):$s.parseHeaders(r);if(e<200){this.onInfo&&this.onInfo({statusCode:e,headers:d});return}let u=(l==="raw"?$s.parseHeaders(r):d)["content-type"],m=new Sse({resume:n,abort:o,contentType:u,highWaterMark:c});this.callback=null,this.res=m,s!==null&&(this.throwOnError&&e>=400?this.runInAsyncScope(vse,null,{callback:s,body:m,contentType:u,statusCode:e,statusMessage:i,headers:d}):this.runInAsyncScope(s,null,null,{statusCode:e,headers:d,trailers:this.trailers,opaque:a,body:m,context:A}))}onData(e){let{res:r}=this;return r.push(e)}onComplete(e){let{res:r}=this;gk(this),$s.parseHeaders(e,this.trailers),r.push(null)}onError(e){let{res:r,callback:n,body:i,opaque:s}=this;gk(this),n&&(this.callback=null,queueMicrotask(()=>{this.runInAsyncScope(n,null,e,{opaque:s})})),r&&(this.res=null,queueMicrotask(()=>{$s.destroy(r,e)})),i&&(this.body=null,$s.destroy(i,e))}};function Ek(t,e){if(e===void 0)return new Promise((r,n)=>{Ek.call(this,t,(i,s)=>i?n(i):r(s))});try{this.dispatch(t,new p0(t,e))}catch(r){if(typeof e!="function")throw r;let n=t&&t.opaque;queueMicrotask(()=>e(r,{opaque:n}))}}wB.exports=Ek;wB.exports.RequestHandler=p0});var Qk=g((HDe,Bk)=>{"use strict";var{finished:Tse,PassThrough:Dse}=require("stream"),{InvalidArgumentError:kd,InvalidReturnValueError:kse,RequestAbortedError:Pse}=ot(),Cs=Le(),{getResolveErrorBodyCallback:_se}=QB(),{AsyncResource:Mse}=require("async_hooks"),{addSignal:Ose,removeSignal:Ck}=Td(),SB=class extends Mse{constructor(e,r,n){if(!e||typeof e!="object")throw new kd("invalid opts");let{signal:i,method:s,opaque:a,body:o,onInfo:A,responseHeaders:l,throwOnError:c}=e;try{if(typeof n!="function")throw new kd("invalid callback");if(typeof r!="function")throw new kd("invalid factory");if(i&&typeof i.on!="function"&&typeof i.addEventListener!="function")throw new kd("signal must be an EventEmitter or EventTarget");if(s==="CONNECT")throw new kd("invalid method");if(A&&typeof A!="function")throw new kd("invalid onInfo callback");super("UNDICI_STREAM")}catch(d){throw Cs.isStream(o)&&Cs.destroy(o.on("error",Cs.nop),d),d}this.responseHeaders=l||null,this.opaque=a||null,this.factory=r,this.callback=n,this.res=null,this.abort=null,this.context=null,this.trailers=null,this.body=o,this.onInfo=A||null,this.throwOnError=c||!1,Cs.isStream(o)&&o.on("error",d=>{this.onError(d)}),Ose(this,i)}onConnect(e,r){if(!this.callback)throw new Pse;this.abort=e,this.context=r}onHeaders(e,r,n,i){let{factory:s,opaque:a,context:o,callback:A,responseHeaders:l}=this,c=l==="raw"?Cs.parseRawHeaders(r):Cs.parseHeaders(r);if(e<200){this.onInfo&&this.onInfo({statusCode:e,headers:c});return}this.factory=null;let d;if(this.throwOnError&&e>=400){let m=(l==="raw"?Cs.parseHeaders(r):c)["content-type"];d=new Dse,this.callback=null,this.runInAsyncScope(_se,null,{callback:A,body:d,contentType:m,statusCode:e,statusMessage:i,headers:c})}else{if(s===null)return;if(d=this.runInAsyncScope(s,null,{statusCode:e,headers:c,opaque:a,context:o}),!d||typeof d.write!="function"||typeof d.end!="function"||typeof d.on!="function")throw new kse("expected Writable");Tse(d,{readable:!1},u=>{let{callback:m,res:h,opaque:f,trailers:E,abort:y}=this;this.res=null,(u||!h.readable)&&Cs.destroy(h,u),this.callback=null,this.runInAsyncScope(m,null,u||null,{opaque:f,trailers:E}),u&&y()})}return d.on("drain",n),this.res=d,(d.writableNeedDrain!==void 0?d.writableNeedDrain:d._writableState&&d._writableState.needDrain)!==!0}onData(e){let{res:r}=this;return r?r.write(e):!0}onComplete(e){let{res:r}=this;Ck(this),r&&(this.trailers=Cs.parseHeaders(e),r.end())}onError(e){let{res:r,callback:n,opaque:i,body:s}=this;Ck(this),this.factory=null,r?(this.res=null,Cs.destroy(r,e)):n&&(this.callback=null,queueMicrotask(()=>{this.runInAsyncScope(n,null,e,{opaque:i})})),s&&(this.body=null,Cs.destroy(s,e))}};function Ik(t,e,r){if(r===void 0)return new Promise((n,i)=>{Ik.call(this,t,e,(s,a)=>s?i(s):n(a))});try{this.dispatch(t,new SB(t,e,r))}catch(n){if(typeof r!="function")throw n;let i=t&&t.opaque;queueMicrotask(()=>r(n,{opaque:i}))}}Bk.exports=Ik});var bk=g((YDe,Sk)=>{"use strict";var{Readable:wk,Duplex:xse,PassThrough:Lse}=require("stream"),{InvalidArgumentError:Gm,InvalidReturnValueError:Fse,RequestAbortedError:u0}=ot(),Hi=Le(),{AsyncResource:Use}=require("async_hooks"),{addSignal:qse,removeSignal:Vse}=Td(),Gse=require("assert"),Pd=Symbol("resume"),bB=class extends wk{constructor(){super({autoDestroy:!0}),this[Pd]=null}_read(){let{[Pd]:e}=this;e&&(this[Pd]=null,e())}_destroy(e,r){this._read(),r(e)}},vB=class extends wk{constructor(e){super({autoDestroy:!0}),this[Pd]=e}_read(){this[Pd]()}_destroy(e,r){!e&&!this._readableState.endEmitted&&(e=new u0),r(e)}},RB=class extends Use{constructor(e,r){if(!e||typeof e!="object")throw new Gm("invalid opts");if(typeof r!="function")throw new Gm("invalid handler");let{signal:n,method:i,opaque:s,onInfo:a,responseHeaders:o}=e;if(n&&typeof n.on!="function"&&typeof n.addEventListener!="function")throw new Gm("signal must be an EventEmitter or EventTarget");if(i==="CONNECT")throw new Gm("invalid method");if(a&&typeof a!="function")throw new Gm("invalid onInfo callback");super("UNDICI_PIPELINE"),this.opaque=s||null,this.responseHeaders=o||null,this.handler=r,this.abort=null,this.context=null,this.onInfo=a||null,this.req=new bB().on("error",Hi.nop),this.ret=new xse({readableObjectMode:e.objectMode,autoDestroy:!0,read:()=>{let{body:A}=this;A&&A.resume&&A.resume()},write:(A,l,c)=>{let{req:d}=this;d.push(A,l)||d._readableState.destroyed?c():d[Pd]=c},destroy:(A,l)=>{let{body:c,req:d,res:p,ret:u,abort:m}=this;!A&&!u._readableState.endEmitted&&(A=new u0),m&&A&&m(),Hi.destroy(c,A),Hi.destroy(d,A),Hi.destroy(p,A),Vse(this),l(A)}}).on("prefinish",()=>{let{req:A}=this;A.push(null)}),this.res=null,qse(this,n)}onConnect(e,r){let{ret:n,res:i}=this;if(Gse(!i,"pipeline cannot be retried"),n.destroyed)throw new u0;this.abort=e,this.context=r}onHeaders(e,r,n){let{opaque:i,handler:s,context:a}=this;if(e<200){if(this.onInfo){let A=this.responseHeaders==="raw"?Hi.parseRawHeaders(r):Hi.parseHeaders(r);this.onInfo({statusCode:e,headers:A})}return}this.res=new vB(n);let o;try{this.handler=null;let A=this.responseHeaders==="raw"?Hi.parseRawHeaders(r):Hi.parseHeaders(r);o=this.runInAsyncScope(s,null,{statusCode:e,headers:A,opaque:i,body:this.res,context:a})}catch(A){throw this.res.on("error",Hi.nop),A}if(!o||typeof o.on!="function")throw new Fse("expected Readable");o.on("data",A=>{let{ret:l,body:c}=this;!l.push(A)&&c.pause&&c.pause()}).on("error",A=>{let{ret:l}=this;Hi.destroy(l,A)}).on("end",()=>{let{ret:A}=this;A.push(null)}).on("close",()=>{let{ret:A}=this;A._readableState.ended||Hi.destroy(A,new u0)}),this.body=o}onData(e){let{res:r}=this;return r.push(e)}onComplete(e){let{res:r}=this;r.push(null)}onError(e){let{ret:r}=this;this.handler=null,Hi.destroy(r,e)}};function Hse(t,e){try{let r=new RB(t,e);return this.dispatch({...t,body:r.req},r),r.ret}catch(r){return new Lse().destroy(r)}}Sk.exports=Hse});var Dk=g((JDe,Tk)=>{"use strict";var{InvalidArgumentError:NB,RequestAbortedError:Yse,SocketError:Jse}=ot(),{AsyncResource:jse}=require("async_hooks"),vk=Le(),{addSignal:zse,removeSignal:Rk}=Td(),Wse=require("assert"),TB=class extends jse{constructor(e,r){if(!e||typeof e!="object")throw new NB("invalid opts");if(typeof r!="function")throw new NB("invalid callback");let{signal:n,opaque:i,responseHeaders:s}=e;if(n&&typeof n.on!="function"&&typeof n.addEventListener!="function")throw new NB("signal must be an EventEmitter or EventTarget");super("UNDICI_UPGRADE"),this.responseHeaders=s||null,this.opaque=i||null,this.callback=r,this.abort=null,this.context=null,zse(this,n)}onConnect(e,r){if(!this.callback)throw new Yse;this.abort=e,this.context=null}onHeaders(){throw new Jse("bad upgrade",null)}onUpgrade(e,r,n){let{callback:i,opaque:s,context:a}=this;Wse.strictEqual(e,101),Rk(this),this.callback=null;let o=this.responseHeaders==="raw"?vk.parseRawHeaders(r):vk.parseHeaders(r);this.runInAsyncScope(i,null,null,{headers:o,socket:n,opaque:s,context:a})}onError(e){let{callback:r,opaque:n}=this;Rk(this),r&&(this.callback=null,queueMicrotask(()=>{this.runInAsyncScope(r,null,e,{opaque:n})}))}};function Nk(t,e){if(e===void 0)return new Promise((r,n)=>{Nk.call(this,t,(i,s)=>i?n(i):r(s))});try{let r=new TB(t,e);this.dispatch({...t,method:t.method||"GET",upgrade:t.protocol||"Websocket"},r)}catch(r){if(typeof e!="function")throw r;let n=t&&t.opaque;queueMicrotask(()=>e(r,{opaque:n}))}}Tk.exports=Nk});var Ok=g((jDe,Mk)=>{"use strict";var{AsyncResource:$se}=require("async_hooks"),{InvalidArgumentError:DB,RequestAbortedError:Kse,SocketError:Xse}=ot(),kk=Le(),{addSignal:Zse,removeSignal:Pk}=Td(),kB=class extends $se{constructor(e,r){if(!e||typeof e!="object")throw new DB("invalid opts");if(typeof r!="function")throw new DB("invalid callback");let{signal:n,opaque:i,responseHeaders:s}=e;if(n&&typeof n.on!="function"&&typeof n.addEventListener!="function")throw new DB("signal must be an EventEmitter or EventTarget");super("UNDICI_CONNECT"),this.opaque=i||null,this.responseHeaders=s||null,this.callback=r,this.abort=null,Zse(this,n)}onConnect(e,r){if(!this.callback)throw new Kse;this.abort=e,this.context=r}onHeaders(){throw new Xse("bad connect",null)}onUpgrade(e,r,n){let{callback:i,opaque:s,context:a}=this;Pk(this),this.callback=null;let o=r;o!=null&&(o=this.responseHeaders==="raw"?kk.parseRawHeaders(r):kk.parseHeaders(r)),this.runInAsyncScope(i,null,null,{statusCode:e,headers:o,socket:n,opaque:s,context:a})}onError(e){let{callback:r,opaque:n}=this;Pk(this),r&&(this.callback=null,queueMicrotask(()=>{this.runInAsyncScope(r,null,e,{opaque:n})}))}};function _k(t,e){if(e===void 0)return new Promise((r,n)=>{_k.call(this,t,(i,s)=>i?n(i):r(s))});try{let r=new kB(t,e);this.dispatch({...t,method:"CONNECT"},r)}catch(r){if(typeof e!="function")throw r;let n=t&&t.opaque;queueMicrotask(()=>e(r,{opaque:n}))}}Mk.exports=_k});var xk=g((zDe,_d)=>{"use strict";_d.exports.request=yk();_d.exports.stream=Qk();_d.exports.pipeline=bk();_d.exports.upgrade=Dk();_d.exports.connect=Ok()});var _B=g((WDe,Lk)=>{"use strict";var{UndiciError:eae}=ot(),PB=class t extends eae{constructor(e){super(e),Error.captureStackTrace(this,t),this.name="MockNotMatchedError",this.message=e||"The request does not match any registered mock dispatches",this.code="UND_MOCK_ERR_MOCK_NOT_MATCHED"}};Lk.exports={MockNotMatchedError:PB}});var Md=g(($De,Fk)=>{"use strict";Fk.exports={kAgent:Symbol("agent"),kOptions:Symbol("options"),kFactory:Symbol("factory"),kDispatches:Symbol("dispatches"),kDispatchKey:Symbol("dispatch key"),kDefaultHeaders:Symbol("default headers"),kDefaultTrailers:Symbol("default trailers"),kContentLength:Symbol("content length"),kMockAgent:Symbol("mock agent"),kMockAgentSet:Symbol("mock agent set"),kMockAgentGet:Symbol("mock agent get"),kMockDispatch:Symbol("mock dispatch"),kClose:Symbol("close"),kOriginalClose:Symbol("original agent close"),kOrigin:Symbol("origin"),kIsMockActive:Symbol("is mock active"),kNetConnect:Symbol("net connect"),kGetNetConnect:Symbol("get net connect"),kConnected:Symbol("connected")}});var Hm=g((KDe,Kk)=>{"use strict";var{MockNotMatchedError:hl}=_B(),{kDispatches:m0,kMockAgent:tae,kOriginalDispatch:rae,kOrigin:nae,kGetNetConnect:iae}=Md(),{buildURL:sae,nop:aae}=Le(),{STATUS_CODES:oae}=require("http"),{types:{isPromise:Aae}}=require("util");function Ja(t,e){return typeof t=="string"?t===e:t instanceof RegExp?t.test(e):typeof t=="function"?t(e)===!0:!1}function qk(t){return Object.fromEntries(Object.entries(t).map(([e,r])=>[e.toLocaleLowerCase(),r]))}function Vk(t,e){if(Array.isArray(t)){for(let r=0;r"u")return!0;if(typeof e!="object"||typeof t.headers!="object")return!1;for(let[r,n]of Object.entries(t.headers)){let i=Vk(e,r);if(!Ja(n,i))return!1}return!0}function Uk(t){if(typeof t!="string")return t;let e=t.split("?");if(e.length!==2)return t;let r=new URLSearchParams(e.pop());return r.sort(),[...e,r.toString()].join("?")}function lae(t,{path:e,method:r,body:n,headers:i}){let s=Ja(t.path,e),a=Ja(t.method,r),o=typeof t.body<"u"?Ja(t.body,n):!0,A=Hk(t,i);return s&&a&&o&&A}function Yk(t){return Buffer.isBuffer(t)?t:typeof t=="object"?JSON.stringify(t):t.toString()}function Jk(t,e){let r=e.query?sae(e.path,e.query):e.path,n=typeof r=="string"?Uk(r):r,i=t.filter(({consumed:s})=>!s).filter(({path:s})=>Ja(Uk(s),n));if(i.length===0)throw new hl(`Mock dispatch not matched for path '${n}'`);if(i=i.filter(({method:s})=>Ja(s,e.method)),i.length===0)throw new hl(`Mock dispatch not matched for method '${e.method}'`);if(i=i.filter(({body:s})=>typeof s<"u"?Ja(s,e.body):!0),i.length===0)throw new hl(`Mock dispatch not matched for body '${e.body}'`);if(i=i.filter(s=>Hk(s,e.headers)),i.length===0)throw new hl(`Mock dispatch not matched for headers '${typeof e.headers=="object"?JSON.stringify(e.headers):e.headers}'`);return i[0]}function cae(t,e,r){let n={timesInvoked:0,times:1,persist:!1,consumed:!1},i=typeof r=="function"?{callback:r}:{...r},s={...n,...e,pending:!0,data:{error:null,...i}};return t.push(s),s}function MB(t,e){let r=t.findIndex(n=>n.consumed?lae(n,e):!1);r!==-1&&t.splice(r,1)}function jk(t){let{path:e,method:r,body:n,headers:i,query:s}=t;return{path:e,method:r,body:n,headers:i,query:s}}function OB(t){return Object.entries(t).reduce((e,[r,n])=>[...e,Buffer.from(`${r}`),Array.isArray(n)?n.map(i=>Buffer.from(`${i}`)):Buffer.from(`${n}`)],[])}function zk(t){return oae[t]||"unknown"}async function dae(t){let e=[];for await(let r of t)e.push(r);return Buffer.concat(e).toString("utf8")}function Wk(t,e){let r=jk(t),n=Jk(this[m0],r);n.timesInvoked++,n.data.callback&&(n.data={...n.data,...n.data.callback(t)});let{data:{statusCode:i,data:s,headers:a,trailers:o,error:A},delay:l,persist:c}=n,{timesInvoked:d,times:p}=n;if(n.consumed=!c&&d>=p,n.pending=d0?setTimeout(()=>{u(this[m0])},l):u(this[m0]);function u(h,f=s){let E=Array.isArray(t.headers)?Gk(t.headers):t.headers,y=typeof f=="function"?f({...t,headers:E}):f;if(Aae(y)){y.then(w=>u(h,w));return}let B=Yk(y),Q=OB(a),C=OB(o);e.abort=aae,e.onHeaders(i,Q,m,zk(i)),e.onData(Buffer.from(B)),e.onComplete(C),MB(h,r)}function m(){}return!0}function pae(){let t=this[tae],e=this[nae],r=this[rae];return function(i,s){if(t.isMockActive)try{Wk.call(this,i,s)}catch(a){if(a instanceof hl){let o=t[iae]();if(o===!1)throw new hl(`${a.message}: subsequent request to origin ${e} was not allowed (net.connect disabled)`);if($k(o,e))r.call(this,i,s);else throw new hl(`${a.message}: subsequent request to origin ${e} was not allowed (net.connect is not enabled for this origin)`)}else throw a}else r.call(this,i,s)}}function $k(t,e){let r=new URL(e);return t===!0?!0:!!(Array.isArray(t)&&t.some(n=>Ja(n,r.host)))}function uae(t){if(t){let{agent:e,...r}=t;return r}}Kk.exports={getResponseData:Yk,getMockDispatch:Jk,addMockDispatch:cae,deleteMockDispatch:MB,buildKey:jk,generateKeyValues:OB,matchValue:Ja,getResponse:dae,getStatusText:zk,mockDispatch:Wk,buildMockDispatch:pae,checkNetConnect:$k,buildMockOptions:uae,getHeaderByName:Vk}});var GB=g((XDe,VB)=>{"use strict";var{getResponseData:mae,buildKey:hae,addMockDispatch:xB}=Hm(),{kDispatches:h0,kDispatchKey:f0,kDefaultHeaders:LB,kDefaultTrailers:FB,kContentLength:UB,kMockDispatch:g0}=Md(),{InvalidArgumentError:Is}=ot(),{buildURL:fae}=Le(),Od=class{constructor(e){this[g0]=e}delay(e){if(typeof e!="number"||!Number.isInteger(e)||e<=0)throw new Is("waitInMs must be a valid integer > 0");return this[g0].delay=e,this}persist(){return this[g0].persist=!0,this}times(e){if(typeof e!="number"||!Number.isInteger(e)||e<=0)throw new Is("repeatTimes must be a valid integer > 0");return this[g0].times=e,this}},qB=class{constructor(e,r){if(typeof e!="object")throw new Is("opts must be an object");if(typeof e.path>"u")throw new Is("opts.path must be defined");if(typeof e.method>"u"&&(e.method="GET"),typeof e.path=="string")if(e.query)e.path=fae(e.path,e.query);else{let n=new URL(e.path,"data://");e.path=n.pathname+n.search}typeof e.method=="string"&&(e.method=e.method.toUpperCase()),this[f0]=hae(e),this[h0]=r,this[LB]={},this[FB]={},this[UB]=!1}createMockScopeDispatchData(e,r,n={}){let i=mae(r),s=this[UB]?{"content-length":i.length}:{},a={...this[LB],...s,...n.headers},o={...this[FB],...n.trailers};return{statusCode:e,data:r,headers:a,trailers:o}}validateReplyParameters(e,r,n){if(typeof e>"u")throw new Is("statusCode must be defined");if(typeof r>"u")throw new Is("data must be defined");if(typeof n!="object")throw new Is("responseOptions must be an object")}reply(e){if(typeof e=="function"){let o=l=>{let c=e(l);if(typeof c!="object")throw new Is("reply options callback must return an object");let{statusCode:d,data:p="",responseOptions:u={}}=c;return this.validateReplyParameters(d,p,u),{...this.createMockScopeDispatchData(d,p,u)}},A=xB(this[h0],this[f0],o);return new Od(A)}let[r,n="",i={}]=[...arguments];this.validateReplyParameters(r,n,i);let s=this.createMockScopeDispatchData(r,n,i),a=xB(this[h0],this[f0],s);return new Od(a)}replyWithError(e){if(typeof e>"u")throw new Is("error must be defined");let r=xB(this[h0],this[f0],{error:e});return new Od(r)}defaultReplyHeaders(e){if(typeof e>"u")throw new Is("headers must be defined");return this[LB]=e,this}defaultReplyTrailers(e){if(typeof e>"u")throw new Is("trailers must be defined");return this[FB]=e,this}replyContentLength(){return this[UB]=!0,this}};VB.exports.MockInterceptor=qB;VB.exports.MockScope=Od});var JB=g((ZDe,iP)=>{"use strict";var{promisify:gae}=require("util"),Eae=Lm(),{buildMockDispatch:yae}=Hm(),{kDispatches:Xk,kMockAgent:Zk,kClose:eP,kOriginalClose:tP,kOrigin:rP,kOriginalDispatch:Cae,kConnected:HB}=Md(),{MockInterceptor:Iae}=GB(),nP=pt(),{InvalidArgumentError:Bae}=ot(),YB=class extends Eae{constructor(e,r){if(super(e,r),!r||!r.agent||typeof r.agent.dispatch!="function")throw new Bae("Argument opts.agent must implement Agent");this[Zk]=r.agent,this[rP]=e,this[Xk]=[],this[HB]=1,this[Cae]=this.dispatch,this[tP]=this.close.bind(this),this.dispatch=yae.call(this),this.close=this[eP]}get[nP.kConnected](){return this[HB]}intercept(e){return new Iae(e,this[Xk])}async[eP](){await gae(this[tP])(),this[HB]=0,this[Zk][nP.kClients].delete(this[rP])}};iP.exports=YB});var WB=g((eke,dP)=>{"use strict";var{promisify:Qae}=require("util"),wae=Rd(),{buildMockDispatch:Sae}=Hm(),{kDispatches:sP,kMockAgent:aP,kClose:oP,kOriginalClose:AP,kOrigin:lP,kOriginalDispatch:bae,kConnected:jB}=Md(),{MockInterceptor:vae}=GB(),cP=pt(),{InvalidArgumentError:Rae}=ot(),zB=class extends wae{constructor(e,r){if(super(e,r),!r||!r.agent||typeof r.agent.dispatch!="function")throw new Rae("Argument opts.agent must implement Agent");this[aP]=r.agent,this[lP]=e,this[sP]=[],this[jB]=1,this[bae]=this.dispatch,this[AP]=this.close.bind(this),this.dispatch=Sae.call(this),this.close=this[oP]}get[cP.kConnected](){return this[jB]}intercept(e){return new vae(e,this[sP])}async[oP](){await Qae(this[AP])(),this[jB]=0,this[aP][cP.kClients].delete(this[lP])}};dP.exports=zB});var uP=g((rke,pP)=>{"use strict";var Nae={pronoun:"it",is:"is",was:"was",this:"this"},Tae={pronoun:"they",is:"are",was:"were",this:"these"};pP.exports=class{constructor(e,r){this.singular=e,this.plural=r}pluralize(e){let r=e===1,n=r?Nae:Tae,i=r?this.singular:this.plural;return{...n,count:e,noun:i}}}});var hP=g((ike,mP)=>{"use strict";var{Transform:Dae}=require("stream"),{Console:kae}=require("console");mP.exports=class{constructor({disableColors:e}={}){this.transform=new Dae({transform(r,n,i){i(null,r)}}),this.logger=new kae({stdout:this.transform,inspectOptions:{colors:!e&&!process.env.CI}})}format(e){let r=e.map(({method:n,path:i,data:{statusCode:s},persist:a,times:o,timesInvoked:A,origin:l})=>({Method:n,Origin:l,Path:i,"Status code":s,Persistent:a?"\u2705":"\u274C",Invocations:A,Remaining:a?1/0:o-A}));return this.logger.table(r),this.transform.read().toString()}}});var yP=g((ske,EP)=>{"use strict";var{kClients:fl}=pt(),Pae=Vm(),{kAgent:$B,kMockAgentSet:E0,kMockAgentGet:fP,kDispatches:KB,kIsMockActive:y0,kNetConnect:gl,kGetNetConnect:_ae,kOptions:C0,kFactory:I0}=Md(),Mae=JB(),Oae=WB(),{matchValue:xae,buildMockOptions:Lae}=Hm(),{InvalidArgumentError:gP,UndiciError:Fae}=ot(),Uae=qg(),qae=uP(),Vae=hP(),XB=class{constructor(e){this.value=e}deref(){return this.value}},ZB=class extends Uae{constructor(e){if(super(e),this[gl]=!0,this[y0]=!0,e&&e.agent&&typeof e.agent.dispatch!="function")throw new gP("Argument opts.agent must implement Agent");let r=e&&e.agent?e.agent:new Pae(e);this[$B]=r,this[fl]=r[fl],this[C0]=Lae(e)}get(e){let r=this[fP](e);return r||(r=this[I0](e),this[E0](e,r)),r}dispatch(e,r){return this.get(e.origin),this[$B].dispatch(e,r)}async close(){await this[$B].close(),this[fl].clear()}deactivate(){this[y0]=!1}activate(){this[y0]=!0}enableNetConnect(e){if(typeof e=="string"||typeof e=="function"||e instanceof RegExp)Array.isArray(this[gl])?this[gl].push(e):this[gl]=[e];else if(typeof e>"u")this[gl]=!0;else throw new gP("Unsupported matcher. Must be one of String|Function|RegExp.")}disableNetConnect(){this[gl]=!1}get isMockActive(){return this[y0]}[E0](e,r){this[fl].set(e,new XB(r))}[I0](e){let r=Object.assign({agent:this},this[C0]);return this[C0]&&this[C0].connections===1?new Mae(e,r):new Oae(e,r)}[fP](e){let r=this[fl].get(e);if(r)return r.deref();if(typeof e!="string"){let n=this[I0]("http://localhost:9999");return this[E0](e,n),n}for(let[n,i]of Array.from(this[fl])){let s=i.deref();if(s&&typeof n!="string"&&xae(n,e)){let a=this[I0](e);return this[E0](e,a),a[KB]=s[KB],a}}}[_ae](){return this[gl]}pendingInterceptors(){let e=this[fl];return Array.from(e.entries()).flatMap(([r,n])=>n.deref()[KB].map(i=>({...i,origin:r}))).filter(({pending:r})=>r)}assertNoPendingInterceptors({pendingInterceptorsFormatter:e=new Vae}={}){let r=this.pendingInterceptors();if(r.length===0)return;let n=new qae("interceptor","interceptors").pluralize(r.length);throw new Fae(` -${n.count} ${n.noun} ${n.is} pending: - -${e.format(r)} -`.trim())}};EP.exports=ZB});var SP=g((ake,wP)=>{"use strict";var{kProxy:Gae,kClose:Hae,kDestroy:Yae,kInterceptors:Jae}=pt(),{URL:CP}=require("url"),IP=Vm(),jae=Rd(),zae=Nm(),{InvalidArgumentError:jm,RequestAbortedError:Wae}=ot(),BP=Tm(),Ym=Symbol("proxy agent"),B0=Symbol("proxy client"),Jm=Symbol("proxy headers"),e9=Symbol("request tls settings"),$ae=Symbol("proxy tls settings"),QP=Symbol("connect endpoint function");function Kae(t){return t==="https:"?443:80}function Xae(t){if(typeof t=="string"&&(t={uri:t}),!t||!t.uri)throw new jm("Proxy opts.uri is mandatory");return{uri:t.uri,protocol:t.protocol||"https"}}function Zae(t,e){return new jae(t,e)}var t9=class extends zae{constructor(e){if(super(e),this[Gae]=Xae(e),this[Ym]=new IP(e),this[Jae]=e.interceptors&&e.interceptors.ProxyAgent&&Array.isArray(e.interceptors.ProxyAgent)?e.interceptors.ProxyAgent:[],typeof e=="string"&&(e={uri:e}),!e||!e.uri)throw new jm("Proxy opts.uri is mandatory");let{clientFactory:r=Zae}=e;if(typeof r!="function")throw new jm("Proxy opts.clientFactory must be a function.");this[e9]=e.requestTls,this[$ae]=e.proxyTls,this[Jm]=e.headers||{};let n=new CP(e.uri),{origin:i,port:s,host:a,username:o,password:A}=n;if(e.auth&&e.token)throw new jm("opts.auth cannot be used in combination with opts.token");e.auth?this[Jm]["proxy-authorization"]=`Basic ${e.auth}`:e.token?this[Jm]["proxy-authorization"]=e.token:o&&A&&(this[Jm]["proxy-authorization"]=`Basic ${Buffer.from(`${decodeURIComponent(o)}:${decodeURIComponent(A)}`).toString("base64")}`);let l=BP({...e.proxyTls});this[QP]=BP({...e.requestTls}),this[B0]=r(n,{connect:l}),this[Ym]=new IP({...e,connect:async(c,d)=>{let p=c.host;c.port||(p+=`:${Kae(c.protocol)}`);try{let{socket:u,statusCode:m}=await this[B0].connect({origin:i,port:s,path:p,signal:c.signal,headers:{...this[Jm],host:a}});if(m!==200&&(u.on("error",()=>{}).destroy(),d(new Wae(`Proxy response (${m}) !== 200 when HTTP Tunneling`))),c.protocol!=="https:"){d(null,u);return}let h;this[e9]?h=this[e9].servername:h=c.servername,this[QP]({...c,servername:h,httpSocket:u},d)}catch(u){d(u)}}})}dispatch(e,r){let{host:n}=new CP(e.origin),i=eoe(e.headers);return toe(i),this[Ym].dispatch({...e,headers:{...i,host:n}},r)}async[Hae](){await this[Ym].close(),await this[B0].close()}async[Yae](){await this[Ym].destroy(),await this[B0].destroy()}};function eoe(t){if(Array.isArray(t)){let e={};for(let r=0;rr.toLowerCase()==="proxy-authorization"))throw new jm("Proxy-Authorization should be sent in ProxyAgent constructor")}wP.exports=t9});var TP=g((oke,NP)=>{var El=require("assert"),{kRetryHandlerDefaultRetry:bP}=pt(),{RequestRetryError:Q0}=ot(),{isDisturbed:vP,parseHeaders:roe,parseRangeHeader:RP}=Le();function noe(t){let e=Date.now();return new Date(t).getTime()-e}var r9=class t{constructor(e,r){let{retryOptions:n,...i}=e,{retry:s,maxRetries:a,maxTimeout:o,minTimeout:A,timeoutFactor:l,methods:c,errorCodes:d,retryAfter:p,statusCodes:u}=n??{};this.dispatch=r.dispatch,this.handler=r.handler,this.opts=i,this.abort=null,this.aborted=!1,this.retryOpts={retry:s??t[bP],retryAfter:p??!0,maxTimeout:o??30*1e3,timeout:A??500,timeoutFactor:l??2,maxRetries:a??5,methods:c??["GET","HEAD","OPTIONS","PUT","DELETE","TRACE"],statusCodes:u??[500,502,503,504,429],errorCodes:d??["ECONNRESET","ECONNREFUSED","ENOTFOUND","ENETDOWN","ENETUNREACH","EHOSTDOWN","EHOSTUNREACH","EPIPE"]},this.retryCount=0,this.start=0,this.end=null,this.etag=null,this.resume=null,this.handler.onConnect(m=>{this.aborted=!0,this.abort?this.abort(m):this.reason=m})}onRequestSent(){this.handler.onRequestSent&&this.handler.onRequestSent()}onUpgrade(e,r,n){this.handler.onUpgrade&&this.handler.onUpgrade(e,r,n)}onConnect(e){this.aborted?e(this.reason):this.abort=e}onBodySent(e){if(this.handler.onBodySent)return this.handler.onBodySent(e)}static[bP](e,{state:r,opts:n},i){let{statusCode:s,code:a,headers:o}=e,{method:A,retryOptions:l}=n,{maxRetries:c,timeout:d,maxTimeout:p,timeoutFactor:u,statusCodes:m,errorCodes:h,methods:f}=l,{counter:E,currentTimeout:y}=r;if(y=y!=null&&y>0?y:d,a&&a!=="UND_ERR_REQ_RETRY"&&a!=="UND_ERR_SOCKET"&&!h.includes(a)){i(e);return}if(Array.isArray(f)&&!f.includes(A)){i(e);return}if(s!=null&&Array.isArray(m)&&!m.includes(s)){i(e);return}if(E>c){i(e);return}let B=o!=null&&o["retry-after"];B&&(B=Number(B),B=isNaN(B)?noe(B):B*1e3);let Q=B>0?Math.min(B,p):Math.min(y*u**E,p);r.currentTimeout=Q,setTimeout(()=>i(null),Q)}onHeaders(e,r,n,i){let s=roe(r);if(this.retryCount+=1,e>=300)return this.abort(new Q0("Request failed",e,{headers:s,count:this.retryCount})),!1;if(this.resume!=null){if(this.resume=null,e!==206)return!0;let o=RP(s["content-range"]);if(!o)return this.abort(new Q0("Content-Range mismatch",e,{headers:s,count:this.retryCount})),!1;if(this.etag!=null&&this.etag!==s.etag)return this.abort(new Q0("ETag mismatch",e,{headers:s,count:this.retryCount})),!1;let{start:A,size:l,end:c=l}=o;return El(this.start===A,"content-range mismatch"),El(this.end==null||this.end===c,"content-range mismatch"),this.resume=n,!0}if(this.end==null){if(e===206){let o=RP(s["content-range"]);if(o==null)return this.handler.onHeaders(e,r,n,i);let{start:A,size:l,end:c=l}=o;El(A!=null&&Number.isFinite(A)&&this.start!==A,"content-range mismatch"),El(Number.isFinite(A)),El(c!=null&&Number.isFinite(c)&&this.end!==c,"invalid content-length"),this.start=A,this.end=c}if(this.end==null){let o=s["content-length"];this.end=o!=null?Number(o):null}return El(Number.isFinite(this.start)),El(this.end==null||Number.isFinite(this.end),"invalid content-length"),this.resume=n,this.etag=s.etag!=null?s.etag:null,this.handler.onHeaders(e,r,n,i)}let a=new Q0("Request failed",e,{headers:s,count:this.retryCount});return this.abort(a),!1}onData(e){return this.start+=e.length,this.handler.onData(e)}onComplete(e){return this.retryCount=0,this.handler.onComplete(e)}onError(e){if(this.aborted||vP(this.opts.body))return this.handler.onError(e);this.retryOpts.retry(e,{state:{counter:this.retryCount++,currentTimeout:this.retryAfter},opts:{retryOptions:this.retryOpts,...this.opts}},r.bind(this));function r(n){if(n!=null||this.aborted||vP(this.opts.body))return this.handler.onError(n);this.start!==0&&(this.opts={...this.opts,headers:{...this.opts.headers,range:`bytes=${this.start}-${this.end??""}`}});try{this.dispatch(this.opts,this)}catch(i){this.handler.onError(i)}}}};NP.exports=r9});var xd=g((Ake,_P)=>{"use strict";var DP=Symbol.for("undici.globalDispatcher.1"),{InvalidArgumentError:ioe}=ot(),soe=Vm();PP()===void 0&&kP(new soe);function kP(t){if(!t||typeof t.dispatch!="function")throw new ioe("Argument agent must implement Agent");Object.defineProperty(globalThis,DP,{value:t,writable:!0,enumerable:!1,configurable:!1})}function PP(){return globalThis[DP]}_P.exports={setGlobalDispatcher:kP,getGlobalDispatcher:PP}});var OP=g((cke,MP)=>{"use strict";MP.exports=class{constructor(e){this.handler=e}onConnect(...e){return this.handler.onConnect(...e)}onError(...e){return this.handler.onError(...e)}onUpgrade(...e){return this.handler.onUpgrade(...e)}onHeaders(...e){return this.handler.onHeaders(...e)}onData(...e){return this.handler.onData(...e)}onComplete(...e){return this.handler.onComplete(...e)}onBodySent(...e){return this.handler.onBodySent(...e)}}});var yl=g((dke,qP)=>{"use strict";var{kHeadersList:Fn,kConstruct:aoe}=pt(),{kGuard:Xs}=La(),{kEnumerableProperty:Ks}=Le(),{makeIterator:Ld,isValidHeaderName:zm,isValidHeaderValue:LP}=Vi(),{webidl:ve}=gn(),ooe=require("assert"),Ln=Symbol("headers map"),Hr=Symbol("headers map sorted");function xP(t){return t===10||t===13||t===9||t===32}function FP(t){let e=0,r=t.length;for(;r>e&&xP(t.charCodeAt(r-1));)--r;for(;r>e&&xP(t.charCodeAt(e));)++e;return e===0&&r===t.length?t:t.substring(e,r)}function UP(t,e){if(Array.isArray(e))for(let r=0;r>","record"]})}function n9(t,e,r){if(r=FP(r),zm(e)){if(!LP(r))throw ve.errors.invalidArgument({prefix:"Headers.append",value:r,type:"header value"})}else throw ve.errors.invalidArgument({prefix:"Headers.append",value:e,type:"header name"});if(t[Xs]==="immutable")throw new TypeError("immutable");return t[Xs],t[Fn].append(e,r)}var w0=class t{constructor(e){xR(this,"cookies",null);e instanceof t?(this[Ln]=new Map(e[Ln]),this[Hr]=e[Hr],this.cookies=e.cookies===null?null:[...e.cookies]):(this[Ln]=new Map(e),this[Hr]=null)}contains(e){return e=e.toLowerCase(),this[Ln].has(e)}clear(){this[Ln].clear(),this[Hr]=null,this.cookies=null}append(e,r){this[Hr]=null;let n=e.toLowerCase(),i=this[Ln].get(n);if(i){let s=n==="cookie"?"; ":", ";this[Ln].set(n,{name:i.name,value:`${i.value}${s}${r}`})}else this[Ln].set(n,{name:e,value:r});n==="set-cookie"&&(this.cookies??=[],this.cookies.push(r))}set(e,r){this[Hr]=null;let n=e.toLowerCase();n==="set-cookie"&&(this.cookies=[r]),this[Ln].set(n,{name:e,value:r})}delete(e){this[Hr]=null,e=e.toLowerCase(),e==="set-cookie"&&(this.cookies=null),this[Ln].delete(e)}get(e){let r=this[Ln].get(e.toLowerCase());return r===void 0?null:r.value}*[Symbol.iterator](){for(let[e,{value:r}]of this[Ln])yield[e,r]}get entries(){let e={};if(this[Ln].size)for(let{name:r,value:n}of this[Ln].values())e[r]=n;return e}},Fd=class t{constructor(e=void 0){e!==aoe&&(this[Fn]=new w0,this[Xs]="none",e!==void 0&&(e=ve.converters.HeadersInit(e),UP(this,e)))}append(e,r){return ve.brandCheck(this,t),ve.argumentLengthCheck(arguments,2,{header:"Headers.append"}),e=ve.converters.ByteString(e),r=ve.converters.ByteString(r),n9(this,e,r)}delete(e){if(ve.brandCheck(this,t),ve.argumentLengthCheck(arguments,1,{header:"Headers.delete"}),e=ve.converters.ByteString(e),!zm(e))throw ve.errors.invalidArgument({prefix:"Headers.delete",value:e,type:"header name"});if(this[Xs]==="immutable")throw new TypeError("immutable");this[Xs],this[Fn].contains(e)&&this[Fn].delete(e)}get(e){if(ve.brandCheck(this,t),ve.argumentLengthCheck(arguments,1,{header:"Headers.get"}),e=ve.converters.ByteString(e),!zm(e))throw ve.errors.invalidArgument({prefix:"Headers.get",value:e,type:"header name"});return this[Fn].get(e)}has(e){if(ve.brandCheck(this,t),ve.argumentLengthCheck(arguments,1,{header:"Headers.has"}),e=ve.converters.ByteString(e),!zm(e))throw ve.errors.invalidArgument({prefix:"Headers.has",value:e,type:"header name"});return this[Fn].contains(e)}set(e,r){if(ve.brandCheck(this,t),ve.argumentLengthCheck(arguments,2,{header:"Headers.set"}),e=ve.converters.ByteString(e),r=ve.converters.ByteString(r),r=FP(r),zm(e)){if(!LP(r))throw ve.errors.invalidArgument({prefix:"Headers.set",value:r,type:"header value"})}else throw ve.errors.invalidArgument({prefix:"Headers.set",value:e,type:"header name"});if(this[Xs]==="immutable")throw new TypeError("immutable");this[Xs],this[Fn].set(e,r)}getSetCookie(){ve.brandCheck(this,t);let e=this[Fn].cookies;return e?[...e]:[]}get[Hr](){if(this[Fn][Hr])return this[Fn][Hr];let e=[],r=[...this[Fn]].sort((i,s)=>i[0]e,"Headers","key")}return Ld(()=>[...this[Hr].values()],"Headers","key")}values(){if(ve.brandCheck(this,t),this[Xs]==="immutable"){let e=this[Hr];return Ld(()=>e,"Headers","value")}return Ld(()=>[...this[Hr].values()],"Headers","value")}entries(){if(ve.brandCheck(this,t),this[Xs]==="immutable"){let e=this[Hr];return Ld(()=>e,"Headers","key+value")}return Ld(()=>[...this[Hr].values()],"Headers","key+value")}forEach(e,r=globalThis){if(ve.brandCheck(this,t),ve.argumentLengthCheck(arguments,1,{header:"Headers.forEach"}),typeof e!="function")throw new TypeError("Failed to execute 'forEach' on 'Headers': parameter 1 is not of type 'Function'.");for(let[n,i]of this)e.apply(r,[i,n,this])}[Symbol.for("nodejs.util.inspect.custom")](){return ve.brandCheck(this,t),this[Fn]}};Fd.prototype[Symbol.iterator]=Fd.prototype.entries;Object.defineProperties(Fd.prototype,{append:Ks,delete:Ks,get:Ks,has:Ks,set:Ks,getSetCookie:Ks,keys:Ks,values:Ks,entries:Ks,forEach:Ks,[Symbol.iterator]:{enumerable:!1},[Symbol.toStringTag]:{value:"Headers",configurable:!0}});ve.converters.HeadersInit=function(t){if(ve.util.Type(t)==="Object")return t[Symbol.iterator]?ve.converters["sequence>"](t):ve.converters["record"](t);throw ve.errors.conversionFailed({prefix:"Headers constructor",argument:"Argument 1",types:["sequence>","record"]})};qP.exports={fill:UP,Headers:Fd,HeadersList:w0}});var R0=g((uke,WP)=>{"use strict";var{Headers:Aoe,HeadersList:VP,fill:loe}=yl(),{extractBody:GP,cloneBody:coe,mixinBody:doe}=bm(),a9=Le(),{kEnumerableProperty:Ei}=a9,{isValidReasonPhrase:poe,isCancelled:uoe,isAborted:moe,isBlobLike:hoe,serializeJavascriptValueToJSONString:foe,isErrorLike:goe,isomorphicEncode:Eoe}=Vi(),{redirectStatusSet:yoe,nullBodyStatus:Coe,DOMException:HP}=Vo(),{kState:Tt,kHeaders:Rr,kGuard:Ud,kRealm:gi}=La(),{webidl:be}=gn(),{FormData:Ioe}=Lg(),{getGlobalOrigin:Boe}=hd(),{URLSerializer:YP}=Es(),{kHeadersList:i9,kConstruct:Qoe}=pt(),o9=require("assert"),{types:s9}=require("util"),jP=globalThis.ReadableStream||require("stream/web").ReadableStream,woe=new TextEncoder("utf-8"),qd=class t{static error(){let e={settingsObject:{}},r=new t;return r[Tt]=b0(),r[gi]=e,r[Rr][i9]=r[Tt].headersList,r[Rr][Ud]="immutable",r[Rr][gi]=e,r}static json(e,r={}){be.argumentLengthCheck(arguments,1,{header:"Response.json"}),r!==null&&(r=be.converters.ResponseInit(r));let n=woe.encode(foe(e)),i=GP(n),s={settingsObject:{}},a=new t;return a[gi]=s,a[Rr][Ud]="response",a[Rr][gi]=s,JP(a,r,{body:i[0],type:"application/json"}),a}static redirect(e,r=302){let n={settingsObject:{}};be.argumentLengthCheck(arguments,1,{header:"Response.redirect"}),e=be.converters.USVString(e),r=be.converters["unsigned short"](r);let i;try{i=new URL(e,Boe())}catch(o){throw Object.assign(new TypeError("Failed to parse URL from "+e),{cause:o})}if(!yoe.has(r))throw new RangeError("Invalid status code "+r);let s=new t;s[gi]=n,s[Rr][Ud]="immutable",s[Rr][gi]=n,s[Tt].status=r;let a=Eoe(YP(i));return s[Tt].headersList.append("location",a),s}constructor(e=null,r={}){e!==null&&(e=be.converters.BodyInit(e)),r=be.converters.ResponseInit(r),this[gi]={settingsObject:{}},this[Tt]=v0({}),this[Rr]=new Aoe(Qoe),this[Rr][Ud]="response",this[Rr][i9]=this[Tt].headersList,this[Rr][gi]=this[gi];let n=null;if(e!=null){let[i,s]=GP(e);n={body:i,type:s}}JP(this,r,n)}get type(){return be.brandCheck(this,t),this[Tt].type}get url(){be.brandCheck(this,t);let e=this[Tt].urlList,r=e[e.length-1]??null;return r===null?"":YP(r,!0)}get redirected(){return be.brandCheck(this,t),this[Tt].urlList.length>1}get status(){return be.brandCheck(this,t),this[Tt].status}get ok(){return be.brandCheck(this,t),this[Tt].status>=200&&this[Tt].status<=299}get statusText(){return be.brandCheck(this,t),this[Tt].statusText}get headers(){return be.brandCheck(this,t),this[Rr]}get body(){return be.brandCheck(this,t),this[Tt].body?this[Tt].body.stream:null}get bodyUsed(){return be.brandCheck(this,t),!!this[Tt].body&&a9.isDisturbed(this[Tt].body.stream)}clone(){if(be.brandCheck(this,t),this.bodyUsed||this.body&&this.body.locked)throw be.errors.exception({header:"Response.clone",message:"Body has already been consumed."});let e=A9(this[Tt]),r=new t;return r[Tt]=e,r[gi]=this[gi],r[Rr][i9]=e.headersList,r[Rr][Ud]=this[Rr][Ud],r[Rr][gi]=this[Rr][gi],r}};doe(qd);Object.defineProperties(qd.prototype,{type:Ei,url:Ei,status:Ei,ok:Ei,redirected:Ei,statusText:Ei,headers:Ei,clone:Ei,body:Ei,bodyUsed:Ei,[Symbol.toStringTag]:{value:"Response",configurable:!0}});Object.defineProperties(qd,{json:Ei,redirect:Ei,error:Ei});function A9(t){if(t.internalResponse)return zP(A9(t.internalResponse),t.type);let e=v0({...t,body:null});return t.body!=null&&(e.body=coe(t.body)),e}function v0(t){return{aborted:!1,rangeRequested:!1,timingAllowPassed:!1,requestIncludesCredentials:!1,type:"default",status:200,timingInfo:null,cacheState:"",statusText:"",...t,headersList:t.headersList?new VP(t.headersList):new VP,urlList:t.urlList?[...t.urlList]:[]}}function b0(t){let e=goe(t);return v0({type:"error",status:0,error:e?t:new Error(t&&String(t)),aborted:t&&t.name==="AbortError"})}function S0(t,e){return e={internalResponse:t,...e},new Proxy(t,{get(r,n){return n in e?e[n]:r[n]},set(r,n,i){return o9(!(n in e)),r[n]=i,!0}})}function zP(t,e){if(e==="basic")return S0(t,{type:"basic",headersList:t.headersList});if(e==="cors")return S0(t,{type:"cors",headersList:t.headersList});if(e==="opaque")return S0(t,{type:"opaque",urlList:Object.freeze([]),status:0,statusText:"",body:null});if(e==="opaqueredirect")return S0(t,{type:"opaqueredirect",status:0,statusText:"",headersList:[],body:null});o9(!1)}function Soe(t,e=null){return o9(uoe(t)),moe(t)?b0(Object.assign(new HP("The operation was aborted.","AbortError"),{cause:e})):b0(Object.assign(new HP("Request was cancelled."),{cause:e}))}function JP(t,e,r){if(e.status!==null&&(e.status<200||e.status>599))throw new RangeError('init["status"] must be in the range of 200 to 599, inclusive.');if("statusText"in e&&e.statusText!=null&&!poe(String(e.statusText)))throw new TypeError("Invalid statusText");if("status"in e&&e.status!=null&&(t[Tt].status=e.status),"statusText"in e&&e.statusText!=null&&(t[Tt].statusText=e.statusText),"headers"in e&&e.headers!=null&&loe(t[Rr],e.headers),r){if(Coe.includes(t.status))throw be.errors.exception({header:"Response constructor",message:"Invalid response status code "+t.status});t[Tt].body=r.body,r.type!=null&&!t[Tt].headersList.contains("Content-Type")&&t[Tt].headersList.append("content-type",r.type)}}be.converters.ReadableStream=be.interfaceConverter(jP);be.converters.FormData=be.interfaceConverter(Ioe);be.converters.URLSearchParams=be.interfaceConverter(URLSearchParams);be.converters.XMLHttpRequestBodyInit=function(t){return typeof t=="string"?be.converters.USVString(t):hoe(t)?be.converters.Blob(t,{strict:!1}):s9.isArrayBuffer(t)||s9.isTypedArray(t)||s9.isDataView(t)?be.converters.BufferSource(t):a9.isFormDataLike(t)?be.converters.FormData(t,{strict:!1}):t instanceof URLSearchParams?be.converters.URLSearchParams(t):be.converters.DOMString(t)};be.converters.BodyInit=function(t){return t instanceof jP?be.converters.ReadableStream(t):t?.[Symbol.asyncIterator]?t:be.converters.XMLHttpRequestBodyInit(t)};be.converters.ResponseInit=be.dictionaryConverter([{key:"status",converter:be.converters["unsigned short"],defaultValue:200},{key:"statusText",converter:be.converters.ByteString,defaultValue:""},{key:"headers",converter:be.converters.HeadersInit}]);WP.exports={makeNetworkError:b0,makeResponse:v0,makeAppropriateNetworkError:Soe,filterResponse:zP,Response:qd,cloneResponse:A9}});var Km=g((mke,t_)=>{"use strict";var{extractBody:boe,mixinBody:voe,cloneBody:Roe}=bm(),{Headers:$P,fill:Noe,HeadersList:k0}=yl(),{FinalizationRegistry:Toe}=EB()(),$m=Le(),{isValidHTTPToken:Doe,sameOrigin:KP,normalizeMethod:koe,makePolicyContainer:Poe,normalizeMethodRecord:_oe}=Vi(),{forbiddenMethodsSet:Moe,corsSafeListedMethodsSet:Ooe,referrerPolicy:xoe,requestRedirect:Loe,requestMode:Foe,requestCredentials:Uoe,requestCache:qoe,requestDuplex:Voe}=Vo(),{kEnumerableProperty:pr}=$m,{kHeaders:ln,kSignal:Wm,kState:Qt,kGuard:N0,kRealm:yi}=La(),{webidl:de}=gn(),{getGlobalOrigin:Goe}=hd(),{URLSerializer:Hoe}=Es(),{kHeadersList:T0,kConstruct:D0}=pt(),Yoe=require("assert"),{getMaxListeners:XP,setMaxListeners:ZP,getEventListeners:Joe,defaultMaxListeners:e_}=require("events"),l9=globalThis.TransformStream,joe=Symbol("abortController"),zoe=new Toe(({signal:t,abort:e})=>{t.removeEventListener("abort",e)}),Cl=class t{constructor(e,r={}){if(e===D0)return;de.argumentLengthCheck(arguments,1,{header:"Request constructor"}),e=de.converters.RequestInfo(e),r=de.converters.RequestInit(r),this[yi]={settingsObject:{baseUrl:Goe(),get origin(){return this.baseUrl?.origin},policyContainer:Poe()}};let n=null,i=null,s=this[yi].settingsObject.baseUrl,a=null;if(typeof e=="string"){let f;try{f=new URL(e,s)}catch(E){throw new TypeError("Failed to parse URL from "+e,{cause:E})}if(f.username||f.password)throw new TypeError("Request cannot be constructed from a URL that includes credentials: "+e);n=P0({urlList:[f]}),i="cors"}else Yoe(e instanceof t),n=e[Qt],a=e[Wm];let o=this[yi].settingsObject.origin,A="client";if(n.window?.constructor?.name==="EnvironmentSettingsObject"&&KP(n.window,o)&&(A=n.window),r.window!=null)throw new TypeError(`'window' option '${A}' must be null`);"window"in r&&(A="no-window"),n=P0({method:n.method,headersList:n.headersList,unsafeRequest:n.unsafeRequest,client:this[yi].settingsObject,window:A,priority:n.priority,origin:n.origin,referrer:n.referrer,referrerPolicy:n.referrerPolicy,mode:n.mode,credentials:n.credentials,cache:n.cache,redirect:n.redirect,integrity:n.integrity,keepalive:n.keepalive,reloadNavigation:n.reloadNavigation,historyNavigation:n.historyNavigation,urlList:[...n.urlList]});let l=Object.keys(r).length!==0;if(l&&(n.mode==="navigate"&&(n.mode="same-origin"),n.reloadNavigation=!1,n.historyNavigation=!1,n.origin="client",n.referrer="client",n.referrerPolicy="",n.url=n.urlList[n.urlList.length-1],n.urlList=[n.url]),r.referrer!==void 0){let f=r.referrer;if(f==="")n.referrer="no-referrer";else{let E;try{E=new URL(f,s)}catch(y){throw new TypeError(`Referrer "${f}" is not a valid URL.`,{cause:y})}E.protocol==="about:"&&E.hostname==="client"||o&&!KP(E,this[yi].settingsObject.baseUrl)?n.referrer="client":n.referrer=E}}r.referrerPolicy!==void 0&&(n.referrerPolicy=r.referrerPolicy);let c;if(r.mode!==void 0?c=r.mode:c=i,c==="navigate")throw de.errors.exception({header:"Request constructor",message:"invalid request mode navigate."});if(c!=null&&(n.mode=c),r.credentials!==void 0&&(n.credentials=r.credentials),r.cache!==void 0&&(n.cache=r.cache),n.cache==="only-if-cached"&&n.mode!=="same-origin")throw new TypeError("'only-if-cached' can be set only with 'same-origin' mode");if(r.redirect!==void 0&&(n.redirect=r.redirect),r.integrity!=null&&(n.integrity=String(r.integrity)),r.keepalive!==void 0&&(n.keepalive=!!r.keepalive),r.method!==void 0){let f=r.method;if(!Doe(f))throw new TypeError(`'${f}' is not a valid HTTP method.`);if(Moe.has(f.toUpperCase()))throw new TypeError(`'${f}' HTTP method is unsupported.`);f=_oe[f]??koe(f),n.method=f}r.signal!==void 0&&(a=r.signal),this[Qt]=n;let d=new AbortController;if(this[Wm]=d.signal,this[Wm][yi]=this[yi],a!=null){if(!a||typeof a.aborted!="boolean"||typeof a.addEventListener!="function")throw new TypeError("Failed to construct 'Request': member signal is not of type AbortSignal.");if(a.aborted)d.abort(a.reason);else{this[joe]=d;let f=new WeakRef(d),E=function(){let y=f.deref();y!==void 0&&y.abort(this.reason)};try{(typeof XP=="function"&&XP(a)===e_||Joe(a,"abort").length>=e_)&&ZP(100,a)}catch{}$m.addAbortListener(a,E),zoe.register(d,{signal:a,abort:E})}}if(this[ln]=new $P(D0),this[ln][T0]=n.headersList,this[ln][N0]="request",this[ln][yi]=this[yi],c==="no-cors"){if(!Ooe.has(n.method))throw new TypeError(`'${n.method} is unsupported in no-cors mode.`);this[ln][N0]="request-no-cors"}if(l){let f=this[ln][T0],E=r.headers!==void 0?r.headers:new k0(f);if(f.clear(),E instanceof k0){for(let[y,B]of E)f.append(y,B);f.cookies=E.cookies}else Noe(this[ln],E)}let p=e instanceof t?e[Qt].body:null;if((r.body!=null||p!=null)&&(n.method==="GET"||n.method==="HEAD"))throw new TypeError("Request with GET/HEAD method cannot have body.");let u=null;if(r.body!=null){let[f,E]=boe(r.body,n.keepalive);u=f,E&&!this[ln][T0].contains("content-type")&&this[ln].append("content-type",E)}let m=u??p;if(m!=null&&m.source==null){if(u!=null&&r.duplex==null)throw new TypeError("RequestInit: duplex option is required when sending a body.");if(n.mode!=="same-origin"&&n.mode!=="cors")throw new TypeError('If request is made from ReadableStream, mode should be "same-origin" or "cors"');n.useCORSPreflightFlag=!0}let h=m;if(u==null&&p!=null){if($m.isDisturbed(p.stream)||p.stream.locked)throw new TypeError("Cannot construct a Request with a Request object that has already been used.");l9||(l9=require("stream/web").TransformStream);let f=new l9;p.stream.pipeThrough(f),h={source:p.source,length:p.length,stream:f.readable}}this[Qt].body=h}get method(){return de.brandCheck(this,t),this[Qt].method}get url(){return de.brandCheck(this,t),Hoe(this[Qt].url)}get headers(){return de.brandCheck(this,t),this[ln]}get destination(){return de.brandCheck(this,t),this[Qt].destination}get referrer(){return de.brandCheck(this,t),this[Qt].referrer==="no-referrer"?"":this[Qt].referrer==="client"?"about:client":this[Qt].referrer.toString()}get referrerPolicy(){return de.brandCheck(this,t),this[Qt].referrerPolicy}get mode(){return de.brandCheck(this,t),this[Qt].mode}get credentials(){return this[Qt].credentials}get cache(){return de.brandCheck(this,t),this[Qt].cache}get redirect(){return de.brandCheck(this,t),this[Qt].redirect}get integrity(){return de.brandCheck(this,t),this[Qt].integrity}get keepalive(){return de.brandCheck(this,t),this[Qt].keepalive}get isReloadNavigation(){return de.brandCheck(this,t),this[Qt].reloadNavigation}get isHistoryNavigation(){return de.brandCheck(this,t),this[Qt].historyNavigation}get signal(){return de.brandCheck(this,t),this[Wm]}get body(){return de.brandCheck(this,t),this[Qt].body?this[Qt].body.stream:null}get bodyUsed(){return de.brandCheck(this,t),!!this[Qt].body&&$m.isDisturbed(this[Qt].body.stream)}get duplex(){return de.brandCheck(this,t),"half"}clone(){if(de.brandCheck(this,t),this.bodyUsed||this.body?.locked)throw new TypeError("unusable");let e=Woe(this[Qt]),r=new t(D0);r[Qt]=e,r[yi]=this[yi],r[ln]=new $P(D0),r[ln][T0]=e.headersList,r[ln][N0]=this[ln][N0],r[ln][yi]=this[ln][yi];let n=new AbortController;return this.signal.aborted?n.abort(this.signal.reason):$m.addAbortListener(this.signal,()=>{n.abort(this.signal.reason)}),r[Wm]=n.signal,r}};voe(Cl);function P0(t){let e={method:"GET",localURLsOnly:!1,unsafeRequest:!1,body:null,client:null,reservedClient:null,replacesClientId:"",window:"client",keepalive:!1,serviceWorkers:"all",initiator:"",destination:"",priority:null,origin:"client",policyContainer:"client",referrer:"client",referrerPolicy:"",mode:"no-cors",useCORSPreflightFlag:!1,credentials:"same-origin",useCredentials:!1,cache:"default",redirect:"follow",integrity:"",cryptoGraphicsNonceMetadata:"",parserMetadata:"",reloadNavigation:!1,historyNavigation:!1,userActivation:!1,taintedOrigin:!1,redirectCount:0,responseTainting:"basic",preventNoCacheCacheControlHeaderModification:!1,done:!1,timingAllowFailed:!1,...t,headersList:t.headersList?new k0(t.headersList):new k0};return e.url=e.urlList[0],e}function Woe(t){let e=P0({...t,body:null});return t.body!=null&&(e.body=Roe(t.body)),e}Object.defineProperties(Cl.prototype,{method:pr,url:pr,headers:pr,redirect:pr,clone:pr,signal:pr,duplex:pr,destination:pr,body:pr,bodyUsed:pr,isHistoryNavigation:pr,isReloadNavigation:pr,keepalive:pr,integrity:pr,cache:pr,credentials:pr,attribute:pr,referrerPolicy:pr,referrer:pr,mode:pr,[Symbol.toStringTag]:{value:"Request",configurable:!0}});de.converters.Request=de.interfaceConverter(Cl);de.converters.RequestInfo=function(t){return typeof t=="string"?de.converters.USVString(t):t instanceof Cl?de.converters.Request(t):de.converters.USVString(t)};de.converters.AbortSignal=de.interfaceConverter(AbortSignal);de.converters.RequestInit=de.dictionaryConverter([{key:"method",converter:de.converters.ByteString},{key:"headers",converter:de.converters.HeadersInit},{key:"body",converter:de.nullableConverter(de.converters.BodyInit)},{key:"referrer",converter:de.converters.USVString},{key:"referrerPolicy",converter:de.converters.DOMString,allowedValues:xoe},{key:"mode",converter:de.converters.DOMString,allowedValues:Foe},{key:"credentials",converter:de.converters.DOMString,allowedValues:Uoe},{key:"cache",converter:de.converters.DOMString,allowedValues:qoe},{key:"redirect",converter:de.converters.DOMString,allowedValues:Loe},{key:"integrity",converter:de.converters.DOMString},{key:"keepalive",converter:de.converters.boolean},{key:"signal",converter:de.nullableConverter(t=>de.converters.AbortSignal(t,{strict:!1}))},{key:"window",converter:de.converters.any},{key:"duplex",converter:de.converters.DOMString,allowedValues:Voe}]);t_.exports={Request:Cl,makeRequest:P0}});var U0=g((hke,h_)=>{"use strict";var{Response:$oe,makeNetworkError:At,makeAppropriateNetworkError:_0,filterResponse:c9,makeResponse:M0}=R0(),{Headers:r_}=yl(),{Request:Koe,makeRequest:Xoe}=Km(),Xm=require("zlib"),{bytesMatch:Zoe,makePolicyContainer:eAe,clonePolicyContainer:tAe,requestBadPort:rAe,TAOCheck:nAe,appendRequestOriginHeader:iAe,responseLocationURL:sAe,requestCurrentURL:Zs,setRequestReferrerPolicyOnRedirect:aAe,tryUpgradeRequestToAPotentiallyTrustworthyURL:oAe,createOpaqueTimingInfo:y9,appendFetchMetadata:AAe,corsCheck:lAe,crossOriginResourcePolicyCheck:cAe,determineRequestsReferrer:dAe,coarsenedSharedCurrentTime:C9,createDeferredPromise:pAe,isBlobLike:uAe,sameOrigin:f9,isCancelled:Gd,isAborted:n_,isErrorLike:mAe,fullyReadBody:o_,readableStreamClose:hAe,isomorphicEncode:g9,urlIsLocal:fAe,urlIsHttpHttpsScheme:I9,urlHasHttpsScheme:gAe}=Vi(),{kState:E9,kHeaders:d9,kGuard:EAe,kRealm:i_}=La(),Hd=require("assert"),{safelyExtractBody:O0}=bm(),{redirectStatusSet:A_,nullBodyStatus:l_,safeMethodsSet:yAe,requestBodyHeader:CAe,subresourceSet:IAe,DOMException:x0}=Vo(),{kHeadersList:Vd}=pt(),BAe=require("events"),{Readable:QAe,pipeline:wAe}=require("stream"),{addAbortListener:SAe,isErrored:bAe,isReadable:L0,nodeMajor:s_,nodeMinor:vAe}=Le(),{dataURLProcessor:RAe,serializeAMimeType:NAe}=Es(),{TransformStream:TAe}=require("stream/web"),{getGlobalDispatcher:DAe}=xd(),{webidl:kAe}=gn(),{STATUS_CODES:PAe}=require("http"),_Ae=["GET","HEAD"],p9,u9=globalThis.ReadableStream,F0=class extends BAe{constructor(e){super(),this.dispatcher=e,this.connection=null,this.dump=!1,this.state="ongoing",this.setMaxListeners(21)}terminate(e){this.state==="ongoing"&&(this.state="terminated",this.connection?.destroy(e),this.emit("terminated",e))}abort(e){this.state==="ongoing"&&(this.state="aborted",e||(e=new x0("The operation was aborted.","AbortError")),this.serializedAbortReason=e,this.connection?.destroy(e),this.emit("terminated",e))}};function MAe(t,e={}){kAe.argumentLengthCheck(arguments,1,{header:"globalThis.fetch"});let r=pAe(),n;try{n=new Koe(t,e)}catch(p){return r.reject(p),r.promise}let i=n[E9];if(n.signal.aborted)return m9(r,i,null,n.signal.reason),r.promise;i.client.globalObject?.constructor?.name==="ServiceWorkerGlobalScope"&&(i.serviceWorkers="none");let a=null,o=null,A=!1,l=null;return SAe(n.signal,()=>{A=!0,Hd(l!=null),l.abort(n.signal.reason),m9(r,i,a,n.signal.reason)}),l=d_({request:i,processResponseEndOfBody:p=>c_(p,"fetch"),processResponse:p=>{if(A)return Promise.resolve();if(p.aborted)return m9(r,i,a,l.serializedAbortReason),Promise.resolve();if(p.type==="error")return r.reject(Object.assign(new TypeError("fetch failed"),{cause:p.error})),Promise.resolve();a=new $oe,a[E9]=p,a[i_]=o,a[d9][Vd]=p.headersList,a[d9][EAe]="immutable",a[d9][i_]=o,r.resolve(a)},dispatcher:e.dispatcher??DAe()}),r.promise}function c_(t,e="other"){if(t.type==="error"&&t.aborted||!t.urlList?.length)return;let r=t.urlList[0],n=t.timingInfo,i=t.cacheState;I9(r)&&n!==null&&(t.timingAllowPassed||(n=y9({startTime:n.startTime}),i=""),n.endTime=C9(),t.timingInfo=n,OAe(n,r,e,globalThis,i))}function OAe(t,e,r,n,i){(s_>18||s_===18&&vAe>=2)&&performance.markResourceTiming(t,e.href,r,n,i)}function m9(t,e,r,n){if(n||(n=new x0("The operation was aborted.","AbortError")),t.reject(n),e.body!=null&&L0(e.body?.stream)&&e.body.stream.cancel(n).catch(s=>{if(s.code!=="ERR_INVALID_STATE")throw s}),r==null)return;let i=r[E9];i.body!=null&&L0(i.body?.stream)&&i.body.stream.cancel(n).catch(s=>{if(s.code!=="ERR_INVALID_STATE")throw s})}function d_({request:t,processRequestBodyChunkLength:e,processRequestEndOfBody:r,processResponse:n,processResponseEndOfBody:i,processResponseConsumeBody:s,useParallelQueue:a=!1,dispatcher:o}){let A=null,l=!1;t.client!=null&&(A=t.client.globalObject,l=t.client.crossOriginIsolatedCapability);let c=C9(l),d=y9({startTime:c}),p={controller:new F0(o),request:t,timingInfo:d,processRequestBodyChunkLength:e,processRequestEndOfBody:r,processResponse:n,processResponseConsumeBody:s,processResponseEndOfBody:i,taskDestination:A,crossOriginIsolatedCapability:l};return Hd(!t.body||t.body.stream),t.window==="client"&&(t.window=t.client?.globalObject?.constructor?.name==="Window"?t.client:"no-window"),t.origin==="client"&&(t.origin=t.client?.origin),t.policyContainer==="client"&&(t.client!=null?t.policyContainer=tAe(t.client.policyContainer):t.policyContainer=eAe()),t.headersList.contains("accept")||t.headersList.append("accept","*/*"),t.headersList.contains("accept-language")||t.headersList.append("accept-language","*"),t.priority,IAe.has(t.destination),p_(p).catch(u=>{p.controller.terminate(u)}),p.controller}async function p_(t,e=!1){let r=t.request,n=null;if(r.localURLsOnly&&!fAe(Zs(r))&&(n=At("local URLs only")),oAe(r),rAe(r)==="blocked"&&(n=At("bad port")),r.referrerPolicy===""&&(r.referrerPolicy=r.policyContainer.referrerPolicy),r.referrer!=="no-referrer"&&(r.referrer=dAe(r)),n===null&&(n=await(async()=>{let s=Zs(r);return f9(s,r.url)&&r.responseTainting==="basic"||s.protocol==="data:"||r.mode==="navigate"||r.mode==="websocket"?(r.responseTainting="basic",await a_(t)):r.mode==="same-origin"?At('request mode cannot be "same-origin"'):r.mode==="no-cors"?r.redirect!=="follow"?At('redirect mode cannot be "follow" for "no-cors" request'):(r.responseTainting="opaque",await a_(t)):I9(Zs(r))?(r.responseTainting="cors",await u_(t)):At("URL scheme must be a HTTP(S) scheme")})()),e)return n;n.status!==0&&!n.internalResponse&&(r.responseTainting,r.responseTainting==="basic"?n=c9(n,"basic"):r.responseTainting==="cors"?n=c9(n,"cors"):r.responseTainting==="opaque"?n=c9(n,"opaque"):Hd(!1));let i=n.status===0?n:n.internalResponse;if(i.urlList.length===0&&i.urlList.push(...r.urlList),r.timingAllowFailed||(n.timingAllowPassed=!0),n.type==="opaque"&&i.status===206&&i.rangeRequested&&!r.headers.contains("range")&&(n=i=At()),n.status!==0&&(r.method==="HEAD"||r.method==="CONNECT"||l_.includes(i.status))&&(i.body=null,t.controller.dump=!0),r.integrity){let s=o=>h9(t,At(o));if(r.responseTainting==="opaque"||n.body==null){s(n.error);return}let a=o=>{if(!Zoe(o,r.integrity)){s("integrity mismatch");return}n.body=O0(o)[0],h9(t,n)};await o_(n.body,a,s)}else h9(t,n)}function a_(t){if(Gd(t)&&t.request.redirectCount===0)return Promise.resolve(_0(t));let{request:e}=t,{protocol:r}=Zs(e);switch(r){case"about:":return Promise.resolve(At("about scheme is not supported"));case"blob:":{p9||(p9=require("buffer").resolveObjectURL);let n=Zs(e);if(n.search.length!==0)return Promise.resolve(At("NetworkError when attempting to fetch resource."));let i=p9(n.toString());if(e.method!=="GET"||!uAe(i))return Promise.resolve(At("invalid method"));let s=O0(i),a=s[0],o=g9(`${a.length}`),A=s[1]??"",l=M0({statusText:"OK",headersList:[["content-length",{name:"Content-Length",value:o}],["content-type",{name:"Content-Type",value:A}]]});return l.body=a,Promise.resolve(l)}case"data:":{let n=Zs(e),i=RAe(n);if(i==="failure")return Promise.resolve(At("failed to fetch the data URL"));let s=NAe(i.mimeType);return Promise.resolve(M0({statusText:"OK",headersList:[["content-type",{name:"Content-Type",value:s}]],body:O0(i.body)[0]}))}case"file:":return Promise.resolve(At("not implemented... yet..."));case"http:":case"https:":return u_(t).catch(n=>At(n));default:return Promise.resolve(At("unknown scheme"))}}function xAe(t,e){t.request.done=!0,t.processResponseDone!=null&&queueMicrotask(()=>t.processResponseDone(e))}function h9(t,e){e.type==="error"&&(e.urlList=[t.request.urlList[0]],e.timingInfo=y9({startTime:t.timingInfo.startTime}));let r=()=>{t.request.done=!0,t.processResponseEndOfBody!=null&&queueMicrotask(()=>t.processResponseEndOfBody(e))};if(t.processResponse!=null&&queueMicrotask(()=>t.processResponse(e)),e.body==null)r();else{let n=(s,a)=>{a.enqueue(s)},i=new TAe({start(){},transform:n,flush:r},{size(){return 1}},{size(){return 1}});e.body={stream:e.body.stream.pipeThrough(i)}}if(t.processResponseConsumeBody!=null){let n=s=>t.processResponseConsumeBody(e,s),i=s=>t.processResponseConsumeBody(e,s);if(e.body==null)queueMicrotask(()=>n(null));else return o_(e.body,n,i);return Promise.resolve()}}async function u_(t){let e=t.request,r=null,n=null,i=t.timingInfo;if(e.serviceWorkers,r===null){if(e.redirect==="follow"&&(e.serviceWorkers="none"),n=r=await m_(t),e.responseTainting==="cors"&&lAe(e,r)==="failure")return At("cors failure");nAe(e,r)==="failure"&&(e.timingAllowFailed=!0)}return(e.responseTainting==="opaque"||r.type==="opaque")&&cAe(e.origin,e.client,e.destination,n)==="blocked"?At("blocked"):(A_.has(n.status)&&(e.redirect!=="manual"&&t.controller.connection.destroy(),e.redirect==="error"?r=At("unexpected redirect"):e.redirect==="manual"?r=n:e.redirect==="follow"?r=await LAe(t,r):Hd(!1)),r.timingInfo=i,r)}function LAe(t,e){let r=t.request,n=e.internalResponse?e.internalResponse:e,i;try{if(i=sAe(n,Zs(r).hash),i==null)return e}catch(a){return Promise.resolve(At(a))}if(!I9(i))return Promise.resolve(At("URL scheme must be a HTTP(S) scheme"));if(r.redirectCount===20)return Promise.resolve(At("redirect count exceeded"));if(r.redirectCount+=1,r.mode==="cors"&&(i.username||i.password)&&!f9(r,i))return Promise.resolve(At('cross origin not allowed for request mode "cors"'));if(r.responseTainting==="cors"&&(i.username||i.password))return Promise.resolve(At('URL cannot contain credentials for request mode "cors"'));if(n.status!==303&&r.body!=null&&r.body.source==null)return Promise.resolve(At());if([301,302].includes(n.status)&&r.method==="POST"||n.status===303&&!_Ae.includes(r.method)){r.method="GET",r.body=null;for(let a of CAe)r.headersList.delete(a)}f9(Zs(r),i)||(r.headersList.delete("authorization"),r.headersList.delete("proxy-authorization",!0),r.headersList.delete("cookie"),r.headersList.delete("host")),r.body!=null&&(Hd(r.body.source!=null),r.body=O0(r.body.source)[0]);let s=t.timingInfo;return s.redirectEndTime=s.postRedirectStartTime=C9(t.crossOriginIsolatedCapability),s.redirectStartTime===0&&(s.redirectStartTime=s.startTime),r.urlList.push(i),aAe(r,n),p_(t,!0)}async function m_(t,e=!1,r=!1){let n=t.request,i=null,s=null,a=null,o=null,A=!1;n.window==="no-window"&&n.redirect==="error"?(i=t,s=n):(s=Xoe(n),i={...t},i.request=s);let l=n.credentials==="include"||n.credentials==="same-origin"&&n.responseTainting==="basic",c=s.body?s.body.length:null,d=null;if(s.body==null&&["POST","PUT"].includes(s.method)&&(d="0"),c!=null&&(d=g9(`${c}`)),d!=null&&s.headersList.append("content-length",d),c!=null&&s.keepalive,s.referrer instanceof URL&&s.headersList.append("referer",g9(s.referrer.href)),iAe(s),AAe(s),s.headersList.contains("user-agent")||s.headersList.append("user-agent",typeof esbuildDetection>"u"?"undici":"node"),s.cache==="default"&&(s.headersList.contains("if-modified-since")||s.headersList.contains("if-none-match")||s.headersList.contains("if-unmodified-since")||s.headersList.contains("if-match")||s.headersList.contains("if-range"))&&(s.cache="no-store"),s.cache==="no-cache"&&!s.preventNoCacheCacheControlHeaderModification&&!s.headersList.contains("cache-control")&&s.headersList.append("cache-control","max-age=0"),(s.cache==="no-store"||s.cache==="reload")&&(s.headersList.contains("pragma")||s.headersList.append("pragma","no-cache"),s.headersList.contains("cache-control")||s.headersList.append("cache-control","no-cache")),s.headersList.contains("range")&&s.headersList.append("accept-encoding","identity"),s.headersList.contains("accept-encoding")||(gAe(Zs(s))?s.headersList.append("accept-encoding","br, gzip, deflate"):s.headersList.append("accept-encoding","gzip, deflate")),s.headersList.delete("host"),o==null&&(s.cache="no-store"),s.mode!=="no-store"&&s.mode,a==null){if(s.mode==="only-if-cached")return At("only if cached");let p=await FAe(i,l,r);!yAe.has(s.method)&&p.status>=200&&p.status<=399,A&&p.status,a==null&&(a=p)}if(a.urlList=[...s.urlList],s.headersList.contains("range")&&(a.rangeRequested=!0),a.requestIncludesCredentials=l,a.status===407)return n.window==="no-window"?At():Gd(t)?_0(t):At("proxy authentication required");if(a.status===421&&!r&&(n.body==null||n.body.source!=null)){if(Gd(t))return _0(t);t.controller.connection.destroy(),a=await m_(t,e,!0)}return a}async function FAe(t,e=!1,r=!1){Hd(!t.controller.connection||t.controller.connection.destroyed),t.controller.connection={abort:null,destroyed:!1,destroy(m){this.destroyed||(this.destroyed=!0,this.abort?.(m??new x0("The operation was aborted.","AbortError")))}};let n=t.request,i=null,s=t.timingInfo;null==null&&(n.cache="no-store");let o=r?"yes":"no";n.mode;let A=null;if(n.body==null&&t.processRequestEndOfBody)queueMicrotask(()=>t.processRequestEndOfBody());else if(n.body!=null){let m=async function*(E){Gd(t)||(yield E,t.processRequestBodyChunkLength?.(E.byteLength))},h=()=>{Gd(t)||t.processRequestEndOfBody&&t.processRequestEndOfBody()},f=E=>{Gd(t)||(E.name==="AbortError"?t.controller.abort():t.controller.terminate(E))};A=async function*(){try{for await(let E of n.body.stream)yield*m(E);h()}catch(E){f(E)}}()}try{let{body:m,status:h,statusText:f,headersList:E,socket:y}=await u({body:A});if(y)i=M0({status:h,statusText:f,headersList:E,socket:y});else{let B=m[Symbol.asyncIterator]();t.controller.next=()=>B.next(),i=M0({status:h,statusText:f,headersList:E})}}catch(m){return m.name==="AbortError"?(t.controller.connection.destroy(),_0(t,m)):At(m)}let l=()=>{t.controller.resume()},c=m=>{t.controller.abort(m)};u9||(u9=require("stream/web").ReadableStream);let d=new u9({async start(m){t.controller.controller=m},async pull(m){await l(m)},async cancel(m){await c(m)}},{highWaterMark:0,size(){return 1}});i.body={stream:d},t.controller.on("terminated",p),t.controller.resume=async()=>{for(;;){let m,h;try{let{done:f,value:E}=await t.controller.next();if(n_(t))break;m=f?void 0:E}catch(f){t.controller.ended&&!s.encodedBodySize?m=void 0:(m=f,h=!0)}if(m===void 0){hAe(t.controller.controller),xAe(t,i);return}if(s.decodedBodySize+=m?.byteLength??0,h){t.controller.terminate(m);return}if(t.controller.controller.enqueue(new Uint8Array(m)),bAe(d)){t.controller.terminate();return}if(!t.controller.controller.desiredSize)return}};function p(m){n_(t)?(i.aborted=!0,L0(d)&&t.controller.controller.error(t.controller.serializedAbortReason)):L0(d)&&t.controller.controller.error(new TypeError("terminated",{cause:mAe(m)?m:void 0})),t.controller.connection.destroy()}return i;async function u({body:m}){let h=Zs(n),f=t.controller.dispatcher;return new Promise((E,y)=>f.dispatch({path:h.pathname+h.search,origin:h.origin,method:n.method,body:t.controller.dispatcher.isMockActive?n.body&&(n.body.source||n.body.stream):m,headers:n.headersList.entries,maxRedirections:0,upgrade:n.mode==="websocket"?"websocket":void 0},{body:null,abort:null,onConnect(B){let{connection:Q}=t.controller;Q.destroyed?B(new x0("The operation was aborted.","AbortError")):(t.controller.on("terminated",B),this.abort=Q.abort=B)},onHeaders(B,Q,C,w){if(B<200)return;let b=[],v="",q=new r_;if(Array.isArray(Q))for(let O=0;OOi.trim()):ye.toLowerCase()==="location"&&(v=Ze),q[Vd].append(ye,Ze)}else{let O=Object.keys(Q);for(let ye of O){let Ze=Q[ye];ye.toLowerCase()==="content-encoding"?b=Ze.toLowerCase().split(",").map(Oi=>Oi.trim()).reverse():ye.toLowerCase()==="location"&&(v=Ze),q[Vd].append(ye,Ze)}}this.body=new QAe({read:C});let L=[],V=n.redirect==="follow"&&v&&A_.has(B);if(n.method!=="HEAD"&&n.method!=="CONNECT"&&!l_.includes(B)&&!V)for(let O of b)if(O==="x-gzip"||O==="gzip")L.push(Xm.createGunzip({flush:Xm.constants.Z_SYNC_FLUSH,finishFlush:Xm.constants.Z_SYNC_FLUSH}));else if(O==="deflate")L.push(Xm.createInflate());else if(O==="br")L.push(Xm.createBrotliDecompress());else{L.length=0;break}return E({status:B,statusText:w,headersList:q[Vd],body:L.length?wAe(this.body,...L,()=>{}):this.body.on("error",()=>{})}),!0},onData(B){if(t.controller.dump)return;let Q=B;return s.encodedBodySize+=Q.byteLength,this.body.push(Q)},onComplete(){this.abort&&t.controller.off("terminated",this.abort),t.controller.ended=!0,this.body.push(null)},onError(B){this.abort&&t.controller.off("terminated",this.abort),this.body?.destroy(B),t.controller.terminate(B),y(B)},onUpgrade(B,Q,C){if(B!==101)return;let w=new r_;for(let b=0;b{"use strict";f_.exports={kState:Symbol("FileReader state"),kResult:Symbol("FileReader result"),kError:Symbol("FileReader error"),kLastProgressEventFired:Symbol("FileReader last progress event fired timestamp"),kEvents:Symbol("FileReader events"),kAborted:Symbol("FileReader aborted")}});var E_=g((gke,g_)=>{"use strict";var{webidl:Ci}=gn(),q0=Symbol("ProgressEvent state"),Q9=class t extends Event{constructor(e,r={}){e=Ci.converters.DOMString(e),r=Ci.converters.ProgressEventInit(r??{}),super(e,r),this[q0]={lengthComputable:r.lengthComputable,loaded:r.loaded,total:r.total}}get lengthComputable(){return Ci.brandCheck(this,t),this[q0].lengthComputable}get loaded(){return Ci.brandCheck(this,t),this[q0].loaded}get total(){return Ci.brandCheck(this,t),this[q0].total}};Ci.converters.ProgressEventInit=Ci.dictionaryConverter([{key:"lengthComputable",converter:Ci.converters.boolean,defaultValue:!1},{key:"loaded",converter:Ci.converters["unsigned long long"],defaultValue:0},{key:"total",converter:Ci.converters["unsigned long long"],defaultValue:0},{key:"bubbles",converter:Ci.converters.boolean,defaultValue:!1},{key:"cancelable",converter:Ci.converters.boolean,defaultValue:!1},{key:"composed",converter:Ci.converters.boolean,defaultValue:!1}]);g_.exports={ProgressEvent:Q9}});var C_=g((Eke,y_)=>{"use strict";function UAe(t){if(!t)return"failure";switch(t.trim().toLowerCase()){case"unicode-1-1-utf-8":case"unicode11utf8":case"unicode20utf8":case"utf-8":case"utf8":case"x-unicode20utf8":return"UTF-8";case"866":case"cp866":case"csibm866":case"ibm866":return"IBM866";case"csisolatin2":case"iso-8859-2":case"iso-ir-101":case"iso8859-2":case"iso88592":case"iso_8859-2":case"iso_8859-2:1987":case"l2":case"latin2":return"ISO-8859-2";case"csisolatin3":case"iso-8859-3":case"iso-ir-109":case"iso8859-3":case"iso88593":case"iso_8859-3":case"iso_8859-3:1988":case"l3":case"latin3":return"ISO-8859-3";case"csisolatin4":case"iso-8859-4":case"iso-ir-110":case"iso8859-4":case"iso88594":case"iso_8859-4":case"iso_8859-4:1988":case"l4":case"latin4":return"ISO-8859-4";case"csisolatincyrillic":case"cyrillic":case"iso-8859-5":case"iso-ir-144":case"iso8859-5":case"iso88595":case"iso_8859-5":case"iso_8859-5:1988":return"ISO-8859-5";case"arabic":case"asmo-708":case"csiso88596e":case"csiso88596i":case"csisolatinarabic":case"ecma-114":case"iso-8859-6":case"iso-8859-6-e":case"iso-8859-6-i":case"iso-ir-127":case"iso8859-6":case"iso88596":case"iso_8859-6":case"iso_8859-6:1987":return"ISO-8859-6";case"csisolatingreek":case"ecma-118":case"elot_928":case"greek":case"greek8":case"iso-8859-7":case"iso-ir-126":case"iso8859-7":case"iso88597":case"iso_8859-7":case"iso_8859-7:1987":case"sun_eu_greek":return"ISO-8859-7";case"csiso88598e":case"csisolatinhebrew":case"hebrew":case"iso-8859-8":case"iso-8859-8-e":case"iso-ir-138":case"iso8859-8":case"iso88598":case"iso_8859-8":case"iso_8859-8:1988":case"visual":return"ISO-8859-8";case"csiso88598i":case"iso-8859-8-i":case"logical":return"ISO-8859-8-I";case"csisolatin6":case"iso-8859-10":case"iso-ir-157":case"iso8859-10":case"iso885910":case"l6":case"latin6":return"ISO-8859-10";case"iso-8859-13":case"iso8859-13":case"iso885913":return"ISO-8859-13";case"iso-8859-14":case"iso8859-14":case"iso885914":return"ISO-8859-14";case"csisolatin9":case"iso-8859-15":case"iso8859-15":case"iso885915":case"iso_8859-15":case"l9":return"ISO-8859-15";case"iso-8859-16":return"ISO-8859-16";case"cskoi8r":case"koi":case"koi8":case"koi8-r":case"koi8_r":return"KOI8-R";case"koi8-ru":case"koi8-u":return"KOI8-U";case"csmacintosh":case"mac":case"macintosh":case"x-mac-roman":return"macintosh";case"iso-8859-11":case"iso8859-11":case"iso885911":case"tis-620":case"windows-874":return"windows-874";case"cp1250":case"windows-1250":case"x-cp1250":return"windows-1250";case"cp1251":case"windows-1251":case"x-cp1251":return"windows-1251";case"ansi_x3.4-1968":case"ascii":case"cp1252":case"cp819":case"csisolatin1":case"ibm819":case"iso-8859-1":case"iso-ir-100":case"iso8859-1":case"iso88591":case"iso_8859-1":case"iso_8859-1:1987":case"l1":case"latin1":case"us-ascii":case"windows-1252":case"x-cp1252":return"windows-1252";case"cp1253":case"windows-1253":case"x-cp1253":return"windows-1253";case"cp1254":case"csisolatin5":case"iso-8859-9":case"iso-ir-148":case"iso8859-9":case"iso88599":case"iso_8859-9":case"iso_8859-9:1989":case"l5":case"latin5":case"windows-1254":case"x-cp1254":return"windows-1254";case"cp1255":case"windows-1255":case"x-cp1255":return"windows-1255";case"cp1256":case"windows-1256":case"x-cp1256":return"windows-1256";case"cp1257":case"windows-1257":case"x-cp1257":return"windows-1257";case"cp1258":case"windows-1258":case"x-cp1258":return"windows-1258";case"x-mac-cyrillic":case"x-mac-ukrainian":return"x-mac-cyrillic";case"chinese":case"csgb2312":case"csiso58gb231280":case"gb2312":case"gb_2312":case"gb_2312-80":case"gbk":case"iso-ir-58":case"x-gbk":return"GBK";case"gb18030":return"gb18030";case"big5":case"big5-hkscs":case"cn-big5":case"csbig5":case"x-x-big5":return"Big5";case"cseucpkdfmtjapanese":case"euc-jp":case"x-euc-jp":return"EUC-JP";case"csiso2022jp":case"iso-2022-jp":return"ISO-2022-JP";case"csshiftjis":case"ms932":case"ms_kanji":case"shift-jis":case"shift_jis":case"sjis":case"windows-31j":case"x-sjis":return"Shift_JIS";case"cseuckr":case"csksc56011987":case"euc-kr":case"iso-ir-149":case"korean":case"ks_c_5601-1987":case"ks_c_5601-1989":case"ksc5601":case"ksc_5601":case"windows-949":return"EUC-KR";case"csiso2022kr":case"hz-gb-2312":case"iso-2022-cn":case"iso-2022-cn-ext":case"iso-2022-kr":case"replacement":return"replacement";case"unicodefffe":case"utf-16be":return"UTF-16BE";case"csunicode":case"iso-10646-ucs-2":case"ucs-2":case"unicode":case"unicodefeff":case"utf-16":case"utf-16le":return"UTF-16LE";case"x-user-defined":return"x-user-defined";default:return"failure"}}y_.exports={getEncoding:UAe}});var R_=g((yke,v_)=>{"use strict";var{kState:Yd,kError:w9,kResult:I_,kAborted:Zm,kLastProgressEventFired:S9}=B9(),{ProgressEvent:qAe}=E_(),{getEncoding:B_}=C_(),{DOMException:VAe}=Vo(),{serializeAMimeType:GAe,parseMIMEType:Q_}=Es(),{types:HAe}=require("util"),{StringDecoder:w_}=require("string_decoder"),{btoa:S_}=require("buffer"),YAe={enumerable:!0,writable:!1,configurable:!1};function JAe(t,e,r,n){if(t[Yd]==="loading")throw new VAe("Invalid state","InvalidStateError");t[Yd]="loading",t[I_]=null,t[w9]=null;let s=e.stream().getReader(),a=[],o=s.read(),A=!0;(async()=>{for(;!t[Zm];)try{let{done:l,value:c}=await o;if(A&&!t[Zm]&&queueMicrotask(()=>{$o("loadstart",t)}),A=!1,!l&&HAe.isUint8Array(c))a.push(c),(t[S9]===void 0||Date.now()-t[S9]>=50)&&!t[Zm]&&(t[S9]=Date.now(),queueMicrotask(()=>{$o("progress",t)})),o=s.read();else if(l){queueMicrotask(()=>{t[Yd]="done";try{let d=jAe(a,r,e.type,n);if(t[Zm])return;t[I_]=d,$o("load",t)}catch(d){t[w9]=d,$o("error",t)}t[Yd]!=="loading"&&$o("loadend",t)});break}}catch(l){if(t[Zm])return;queueMicrotask(()=>{t[Yd]="done",t[w9]=l,$o("error",t),t[Yd]!=="loading"&&$o("loadend",t)});break}})()}function $o(t,e){let r=new qAe(t,{bubbles:!1,cancelable:!1});e.dispatchEvent(r)}function jAe(t,e,r,n){switch(e){case"DataURL":{let i="data:",s=Q_(r||"application/octet-stream");s!=="failure"&&(i+=GAe(s)),i+=";base64,";let a=new w_("latin1");for(let o of t)i+=S_(a.write(o));return i+=S_(a.end()),i}case"Text":{let i="failure";if(n&&(i=B_(n)),i==="failure"&&r){let s=Q_(r);s!=="failure"&&(i=B_(s.parameters.get("charset")))}return i==="failure"&&(i="UTF-8"),zAe(t,i)}case"ArrayBuffer":return b_(t).buffer;case"BinaryString":{let i="",s=new w_("latin1");for(let a of t)i+=s.write(a);return i+=s.end(),i}}}function zAe(t,e){let r=b_(t),n=WAe(r),i=0;n!==null&&(e=n,i=n==="UTF-8"?3:2);let s=r.slice(i);return new TextDecoder(e).decode(s)}function WAe(t){let[e,r,n]=t;return e===239&&r===187&&n===191?"UTF-8":e===254&&r===255?"UTF-16BE":e===255&&r===254?"UTF-16LE":null}function b_(t){let e=t.reduce((n,i)=>n+i.byteLength,0),r=0;return t.reduce((n,i)=>(n.set(i,r),r+=i.byteLength,n),new Uint8Array(e))}v_.exports={staticPropertyDescriptors:YAe,readOperation:JAe,fireAProgressEvent:$o}});var k_=g((Cke,D_)=>{"use strict";var{staticPropertyDescriptors:Jd,readOperation:V0,fireAProgressEvent:N_}=R_(),{kState:Il,kError:T_,kResult:G0,kEvents:Je,kAborted:$Ae}=B9(),{webidl:it}=gn(),{kEnumerableProperty:Un}=Le(),Bs=class t extends EventTarget{constructor(){super(),this[Il]="empty",this[G0]=null,this[T_]=null,this[Je]={loadend:null,error:null,abort:null,load:null,progress:null,loadstart:null}}readAsArrayBuffer(e){it.brandCheck(this,t),it.argumentLengthCheck(arguments,1,{header:"FileReader.readAsArrayBuffer"}),e=it.converters.Blob(e,{strict:!1}),V0(this,e,"ArrayBuffer")}readAsBinaryString(e){it.brandCheck(this,t),it.argumentLengthCheck(arguments,1,{header:"FileReader.readAsBinaryString"}),e=it.converters.Blob(e,{strict:!1}),V0(this,e,"BinaryString")}readAsText(e,r=void 0){it.brandCheck(this,t),it.argumentLengthCheck(arguments,1,{header:"FileReader.readAsText"}),e=it.converters.Blob(e,{strict:!1}),r!==void 0&&(r=it.converters.DOMString(r)),V0(this,e,"Text",r)}readAsDataURL(e){it.brandCheck(this,t),it.argumentLengthCheck(arguments,1,{header:"FileReader.readAsDataURL"}),e=it.converters.Blob(e,{strict:!1}),V0(this,e,"DataURL")}abort(){if(this[Il]==="empty"||this[Il]==="done"){this[G0]=null;return}this[Il]==="loading"&&(this[Il]="done",this[G0]=null),this[$Ae]=!0,N_("abort",this),this[Il]!=="loading"&&N_("loadend",this)}get readyState(){switch(it.brandCheck(this,t),this[Il]){case"empty":return this.EMPTY;case"loading":return this.LOADING;case"done":return this.DONE}}get result(){return it.brandCheck(this,t),this[G0]}get error(){return it.brandCheck(this,t),this[T_]}get onloadend(){return it.brandCheck(this,t),this[Je].loadend}set onloadend(e){it.brandCheck(this,t),this[Je].loadend&&this.removeEventListener("loadend",this[Je].loadend),typeof e=="function"?(this[Je].loadend=e,this.addEventListener("loadend",e)):this[Je].loadend=null}get onerror(){return it.brandCheck(this,t),this[Je].error}set onerror(e){it.brandCheck(this,t),this[Je].error&&this.removeEventListener("error",this[Je].error),typeof e=="function"?(this[Je].error=e,this.addEventListener("error",e)):this[Je].error=null}get onloadstart(){return it.brandCheck(this,t),this[Je].loadstart}set onloadstart(e){it.brandCheck(this,t),this[Je].loadstart&&this.removeEventListener("loadstart",this[Je].loadstart),typeof e=="function"?(this[Je].loadstart=e,this.addEventListener("loadstart",e)):this[Je].loadstart=null}get onprogress(){return it.brandCheck(this,t),this[Je].progress}set onprogress(e){it.brandCheck(this,t),this[Je].progress&&this.removeEventListener("progress",this[Je].progress),typeof e=="function"?(this[Je].progress=e,this.addEventListener("progress",e)):this[Je].progress=null}get onload(){return it.brandCheck(this,t),this[Je].load}set onload(e){it.brandCheck(this,t),this[Je].load&&this.removeEventListener("load",this[Je].load),typeof e=="function"?(this[Je].load=e,this.addEventListener("load",e)):this[Je].load=null}get onabort(){return it.brandCheck(this,t),this[Je].abort}set onabort(e){it.brandCheck(this,t),this[Je].abort&&this.removeEventListener("abort",this[Je].abort),typeof e=="function"?(this[Je].abort=e,this.addEventListener("abort",e)):this[Je].abort=null}};Bs.EMPTY=Bs.prototype.EMPTY=0;Bs.LOADING=Bs.prototype.LOADING=1;Bs.DONE=Bs.prototype.DONE=2;Object.defineProperties(Bs.prototype,{EMPTY:Jd,LOADING:Jd,DONE:Jd,readAsArrayBuffer:Un,readAsBinaryString:Un,readAsText:Un,readAsDataURL:Un,abort:Un,readyState:Un,result:Un,error:Un,onloadstart:Un,onprogress:Un,onload:Un,onabort:Un,onerror:Un,onloadend:Un,[Symbol.toStringTag]:{value:"FileReader",writable:!1,enumerable:!1,configurable:!0}});Object.defineProperties(Bs,{EMPTY:Jd,LOADING:Jd,DONE:Jd});D_.exports={FileReader:Bs}});var H0=g((Ike,P_)=>{"use strict";P_.exports={kConstruct:pt().kConstruct}});var O_=g((Bke,M_)=>{"use strict";var KAe=require("assert"),{URLSerializer:__}=Es(),{isValidHeaderName:XAe}=Vi();function ZAe(t,e,r=!1){let n=__(t,r),i=__(e,r);return n===i}function ele(t){KAe(t!==null);let e=[];for(let r of t.split(",")){if(r=r.trim(),r.length){if(!XAe(r))continue}else continue;e.push(r)}return e}M_.exports={urlEquals:ZAe,fieldValues:ele}});var G_=g((Qke,V_)=>{"use strict";var{kConstruct:tle}=H0(),{urlEquals:rle,fieldValues:b9}=O_(),{kEnumerableProperty:Bl,isDisturbed:nle}=Le(),{kHeadersList:x_}=pt(),{webidl:se}=gn(),{Response:F_,cloneResponse:ile}=R0(),{Request:ea}=Km(),{kState:Bn,kHeaders:Y0,kGuard:L_,kRealm:sle}=La(),{fetching:ale}=U0(),{urlIsHttpHttpsScheme:J0,createDeferredPromise:jd,readAllBytes:ole}=Vi(),v9=require("assert"),{getGlobalDispatcher:Ale}=xd(),ta,qn,j0,zd,U_,ja=class ja{constructor(){er(this,qn);er(this,ta);arguments[0]!==tle&&se.illegalConstructor(),We(this,ta,arguments[1])}async match(e,r={}){se.brandCheck(this,ja),se.argumentLengthCheck(arguments,1,{header:"Cache.match"}),e=se.converters.RequestInfo(e),r=se.converters.CacheQueryOptions(r);let n=await this.matchAll(e,r);if(n.length!==0)return n[0]}async matchAll(e=void 0,r={}){se.brandCheck(this,ja),e!==void 0&&(e=se.converters.RequestInfo(e)),r=se.converters.CacheQueryOptions(r);let n=null;if(e!==void 0)if(e instanceof ea){if(n=e[Bn],n.method!=="GET"&&!r.ignoreMethod)return[]}else typeof e=="string"&&(n=new ea(e)[Bn]);let i=[];if(e===void 0)for(let a of k(this,ta))i.push(a[1]);else{let a=Fi(this,qn,zd).call(this,n,r);for(let o of a)i.push(o[1])}let s=[];for(let a of i){let o=new F_(a.body?.source??null),A=o[Bn].body;o[Bn]=a,o[Bn].body=A,o[Y0][x_]=a.headersList,o[Y0][L_]="immutable",s.push(o)}return Object.freeze(s)}async add(e){se.brandCheck(this,ja),se.argumentLengthCheck(arguments,1,{header:"Cache.add"}),e=se.converters.RequestInfo(e);let r=[e];return await this.addAll(r)}async addAll(e){se.brandCheck(this,ja),se.argumentLengthCheck(arguments,1,{header:"Cache.addAll"}),e=se.converters["sequence"](e);let r=[],n=[];for(let d of e){if(typeof d=="string")continue;let p=d[Bn];if(!J0(p.url)||p.method!=="GET")throw se.errors.exception({header:"Cache.addAll",message:"Expected http/s scheme when method is not GET."})}let i=[];for(let d of e){let p=new ea(d)[Bn];if(!J0(p.url))throw se.errors.exception({header:"Cache.addAll",message:"Expected http/s scheme."});p.initiator="fetch",p.destination="subresource",n.push(p);let u=jd();i.push(ale({request:p,dispatcher:Ale(),processResponse(m){if(m.type==="error"||m.status===206||m.status<200||m.status>299)u.reject(se.errors.exception({header:"Cache.addAll",message:"Received an invalid status code or the request failed."}));else if(m.headersList.contains("vary")){let h=b9(m.headersList.get("vary"));for(let f of h)if(f==="*"){u.reject(se.errors.exception({header:"Cache.addAll",message:"invalid vary field value"}));for(let E of i)E.abort();return}}},processResponseEndOfBody(m){if(m.aborted){u.reject(new DOMException("aborted","AbortError"));return}u.resolve(m)}})),r.push(u.promise)}let a=await Promise.all(r),o=[],A=0;for(let d of a){let p={type:"put",request:n[A],response:d};o.push(p),A++}let l=jd(),c=null;try{Fi(this,qn,j0).call(this,o)}catch(d){c=d}return queueMicrotask(()=>{c===null?l.resolve(void 0):l.reject(c)}),l.promise}async put(e,r){se.brandCheck(this,ja),se.argumentLengthCheck(arguments,2,{header:"Cache.put"}),e=se.converters.RequestInfo(e),r=se.converters.Response(r);let n=null;if(e instanceof ea?n=e[Bn]:n=new ea(e)[Bn],!J0(n.url)||n.method!=="GET")throw se.errors.exception({header:"Cache.put",message:"Expected an http/s scheme when method is not GET"});let i=r[Bn];if(i.status===206)throw se.errors.exception({header:"Cache.put",message:"Got 206 status"});if(i.headersList.contains("vary")){let p=b9(i.headersList.get("vary"));for(let u of p)if(u==="*")throw se.errors.exception({header:"Cache.put",message:"Got * vary field value"})}if(i.body&&(nle(i.body.stream)||i.body.stream.locked))throw se.errors.exception({header:"Cache.put",message:"Response body is locked or disturbed"});let s=ile(i),a=jd();if(i.body!=null){let u=i.body.stream.getReader();ole(u).then(a.resolve,a.reject)}else a.resolve(void 0);let o=[],A={type:"put",request:n,response:s};o.push(A);let l=await a.promise;s.body!=null&&(s.body.source=l);let c=jd(),d=null;try{Fi(this,qn,j0).call(this,o)}catch(p){d=p}return queueMicrotask(()=>{d===null?c.resolve():c.reject(d)}),c.promise}async delete(e,r={}){se.brandCheck(this,ja),se.argumentLengthCheck(arguments,1,{header:"Cache.delete"}),e=se.converters.RequestInfo(e),r=se.converters.CacheQueryOptions(r);let n=null;if(e instanceof ea){if(n=e[Bn],n.method!=="GET"&&!r.ignoreMethod)return!1}else v9(typeof e=="string"),n=new ea(e)[Bn];let i=[],s={type:"delete",request:n,options:r};i.push(s);let a=jd(),o=null,A;try{A=Fi(this,qn,j0).call(this,i)}catch(l){o=l}return queueMicrotask(()=>{o===null?a.resolve(!!A?.length):a.reject(o)}),a.promise}async keys(e=void 0,r={}){se.brandCheck(this,ja),e!==void 0&&(e=se.converters.RequestInfo(e)),r=se.converters.CacheQueryOptions(r);let n=null;if(e!==void 0)if(e instanceof ea){if(n=e[Bn],n.method!=="GET"&&!r.ignoreMethod)return[]}else typeof e=="string"&&(n=new ea(e)[Bn]);let i=jd(),s=[];if(e===void 0)for(let a of k(this,ta))s.push(a[0]);else{let a=Fi(this,qn,zd).call(this,n,r);for(let o of a)s.push(o[0])}return queueMicrotask(()=>{let a=[];for(let o of s){let A=new ea("https://a");A[Bn]=o,A[Y0][x_]=o.headersList,A[Y0][L_]="immutable",A[sle]=o.client,a.push(A)}i.resolve(Object.freeze(a))}),i.promise}};ta=new WeakMap,qn=new WeakSet,j0=function(e){let r=k(this,ta),n=[...r],i=[],s=[];try{for(let a of e){if(a.type!=="delete"&&a.type!=="put")throw se.errors.exception({header:"Cache.#batchCacheOperations",message:'operation type does not match "delete" or "put"'});if(a.type==="delete"&&a.response!=null)throw se.errors.exception({header:"Cache.#batchCacheOperations",message:"delete operation should not have an associated response"});if(Fi(this,qn,zd).call(this,a.request,a.options,i).length)throw new DOMException("???","InvalidStateError");let o;if(a.type==="delete"){if(o=Fi(this,qn,zd).call(this,a.request,a.options),o.length===0)return[];for(let A of o){let l=r.indexOf(A);v9(l!==-1),r.splice(l,1)}}else if(a.type==="put"){if(a.response==null)throw se.errors.exception({header:"Cache.#batchCacheOperations",message:"put operation should have an associated response"});let A=a.request;if(!J0(A.url))throw se.errors.exception({header:"Cache.#batchCacheOperations",message:"expected http or https scheme"});if(A.method!=="GET")throw se.errors.exception({header:"Cache.#batchCacheOperations",message:"not get method"});if(a.options!=null)throw se.errors.exception({header:"Cache.#batchCacheOperations",message:"options must not be defined"});o=Fi(this,qn,zd).call(this,a.request);for(let l of o){let c=r.indexOf(l);v9(c!==-1),r.splice(c,1)}r.push([a.request,a.response]),i.push([a.request,a.response])}s.push([a.request,a.response])}return s}catch(a){throw k(this,ta).length=0,We(this,ta,n),a}},zd=function(e,r,n){let i=[],s=n??k(this,ta);for(let a of s){let[o,A]=a;Fi(this,qn,U_).call(this,e,o,A,r)&&i.push(a)}return i},U_=function(e,r,n=null,i){let s=new URL(e.url),a=new URL(r.url);if(i?.ignoreSearch&&(a.search="",s.search=""),!rle(s,a,!0))return!1;if(n==null||i?.ignoreVary||!n.headersList.contains("vary"))return!0;let o=b9(n.headersList.get("vary"));for(let A of o){if(A==="*")return!1;let l=r.headersList.get(A),c=e.headersList.get(A);if(l!==c)return!1}return!0};var z0=ja;Object.defineProperties(z0.prototype,{[Symbol.toStringTag]:{value:"Cache",configurable:!0},match:Bl,matchAll:Bl,add:Bl,addAll:Bl,put:Bl,delete:Bl,keys:Bl});var q_=[{key:"ignoreSearch",converter:se.converters.boolean,defaultValue:!1},{key:"ignoreMethod",converter:se.converters.boolean,defaultValue:!1},{key:"ignoreVary",converter:se.converters.boolean,defaultValue:!1}];se.converters.CacheQueryOptions=se.dictionaryConverter(q_);se.converters.MultiCacheQueryOptions=se.dictionaryConverter([...q_,{key:"cacheName",converter:se.converters.DOMString}]);se.converters.Response=se.interfaceConverter(F_);se.converters["sequence"]=se.sequenceConverter(se.converters.RequestInfo);V_.exports={Cache:z0}});var Y_=g((Ske,H_)=>{"use strict";var{kConstruct:eh}=H0(),{Cache:W0}=G_(),{webidl:Qn}=gn(),{kEnumerableProperty:th}=Le(),Yi,Ql=class Ql{constructor(){er(this,Yi,new Map);arguments[0]!==eh&&Qn.illegalConstructor()}async match(e,r={}){if(Qn.brandCheck(this,Ql),Qn.argumentLengthCheck(arguments,1,{header:"CacheStorage.match"}),e=Qn.converters.RequestInfo(e),r=Qn.converters.MultiCacheQueryOptions(r),r.cacheName!=null){if(k(this,Yi).has(r.cacheName)){let n=k(this,Yi).get(r.cacheName);return await new W0(eh,n).match(e,r)}}else for(let n of k(this,Yi).values()){let s=await new W0(eh,n).match(e,r);if(s!==void 0)return s}}async has(e){return Qn.brandCheck(this,Ql),Qn.argumentLengthCheck(arguments,1,{header:"CacheStorage.has"}),e=Qn.converters.DOMString(e),k(this,Yi).has(e)}async open(e){if(Qn.brandCheck(this,Ql),Qn.argumentLengthCheck(arguments,1,{header:"CacheStorage.open"}),e=Qn.converters.DOMString(e),k(this,Yi).has(e)){let n=k(this,Yi).get(e);return new W0(eh,n)}let r=[];return k(this,Yi).set(e,r),new W0(eh,r)}async delete(e){return Qn.brandCheck(this,Ql),Qn.argumentLengthCheck(arguments,1,{header:"CacheStorage.delete"}),e=Qn.converters.DOMString(e),k(this,Yi).delete(e)}async keys(){return Qn.brandCheck(this,Ql),[...k(this,Yi).keys()]}};Yi=new WeakMap;var $0=Ql;Object.defineProperties($0.prototype,{[Symbol.toStringTag]:{value:"CacheStorage",configurable:!0},match:th,has:th,open:th,delete:th,keys:th});H_.exports={CacheStorage:$0}});var j_=g((vke,J_)=>{"use strict";J_.exports={maxAttributeValueSize:1024,maxNameValuePairSize:4096}});var R9=g((Rke,$_)=>{"use strict";var z_=require("assert"),{kHeadersList:W_}=pt();function lle(t){if(t.length===0)return!1;for(let e of t){let r=e.charCodeAt(0);if(r>=0||r<=8||r>=10||r<=31||r===127)return!1}}function cle(t){for(let e of t){let r=e.charCodeAt(0);if(r<=32||r>127||e==="("||e===")"||e===">"||e==="<"||e==="@"||e===","||e===";"||e===":"||e==="\\"||e==='"'||e==="/"||e==="["||e==="]"||e==="?"||e==="="||e==="{"||e==="}")throw new Error("Invalid cookie name")}}function dle(t){for(let e of t){let r=e.charCodeAt(0);if(r<33||r===34||r===44||r===59||r===92||r>126)throw new Error("Invalid header value")}}function ple(t){for(let e of t)if(e.charCodeAt(0)<33||e===";")throw new Error("Invalid cookie path")}function ule(t){if(t.startsWith("-")||t.endsWith(".")||t.endsWith("-"))throw new Error("Invalid cookie domain")}function mle(t){typeof t=="number"&&(t=new Date(t));let e=["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],r=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],n=e[t.getUTCDay()],i=t.getUTCDate().toString().padStart(2,"0"),s=r[t.getUTCMonth()],a=t.getUTCFullYear(),o=t.getUTCHours().toString().padStart(2,"0"),A=t.getUTCMinutes().toString().padStart(2,"0"),l=t.getUTCSeconds().toString().padStart(2,"0");return`${n}, ${i} ${s} ${a} ${o}:${A}:${l} GMT`}function hle(t){if(t<0)throw new Error("Invalid cookie max-age")}function fle(t){if(t.name.length===0)return null;cle(t.name),dle(t.value);let e=[`${t.name}=${t.value}`];t.name.startsWith("__Secure-")&&(t.secure=!0),t.name.startsWith("__Host-")&&(t.secure=!0,t.domain=null,t.path="/"),t.secure&&e.push("Secure"),t.httpOnly&&e.push("HttpOnly"),typeof t.maxAge=="number"&&(hle(t.maxAge),e.push(`Max-Age=${t.maxAge}`)),t.domain&&(ule(t.domain),e.push(`Domain=${t.domain}`)),t.path&&(ple(t.path),e.push(`Path=${t.path}`)),t.expires&&t.expires.toString()!=="Invalid Date"&&e.push(`Expires=${mle(t.expires)}`),t.sameSite&&e.push(`SameSite=${t.sameSite}`);for(let r of t.unparsed){if(!r.includes("="))throw new Error("Invalid unparsed");let[n,...i]=r.split("=");e.push(`${n.trim()}=${i.join("=")}`)}return e.join("; ")}var K0;function gle(t){if(t[W_])return t[W_];K0||(K0=Object.getOwnPropertySymbols(t).find(r=>r.description==="headers list"),z_(K0,"Headers cannot be parsed"));let e=t[K0];return z_(e),e}$_.exports={isCTLExcludingHtab:lle,stringify:fle,getHeadersList:gle}});var X_=g((Nke,K_)=>{"use strict";var{maxNameValuePairSize:Ele,maxAttributeValueSize:yle}=j_(),{isCTLExcludingHtab:Cle}=R9(),{collectASequenceOfCodePointsFast:X0}=Es(),Ile=require("assert");function Ble(t){if(Cle(t))return null;let e="",r="",n="",i="";if(t.includes(";")){let s={position:0};e=X0(";",t,s),r=t.slice(s.position)}else e=t;if(!e.includes("="))i=e;else{let s={position:0};n=X0("=",e,s),i=e.slice(s.position+1)}return n=n.trim(),i=i.trim(),n.length+i.length>Ele?null:{name:n,value:i,...Wd(r)}}function Wd(t,e={}){if(t.length===0)return e;Ile(t[0]===";"),t=t.slice(1);let r="";t.includes(";")?(r=X0(";",t,{position:0}),t=t.slice(r.length)):(r=t,t="");let n="",i="";if(r.includes("=")){let a={position:0};n=X0("=",r,a),i=r.slice(a.position+1)}else n=r;if(n=n.trim(),i=i.trim(),i.length>yle)return Wd(t,e);let s=n.toLowerCase();if(s==="expires"){let a=new Date(i);e.expires=a}else if(s==="max-age"){let a=i.charCodeAt(0);if((a<48||a>57)&&i[0]!=="-"||!/^\d+$/.test(i))return Wd(t,e);let o=Number(i);e.maxAge=o}else if(s==="domain"){let a=i;a[0]==="."&&(a=a.slice(1)),a=a.toLowerCase(),e.domain=a}else if(s==="path"){let a="";i.length===0||i[0]!=="/"?a="/":a=i,e.path=a}else if(s==="secure")e.secure=!0;else if(s==="httponly")e.httpOnly=!0;else if(s==="samesite"){let a="Default",o=i.toLowerCase();o.includes("none")&&(a="None"),o.includes("strict")&&(a="Strict"),o.includes("lax")&&(a="Lax"),e.sameSite=a}else e.unparsed??=[],e.unparsed.push(`${n}=${i}`);return Wd(t,e)}K_.exports={parseSetCookie:Ble,parseUnparsedAttributes:Wd}});var rM=g((Tke,tM)=>{"use strict";var{parseSetCookie:Qle}=X_(),{stringify:Z_,getHeadersList:wle}=R9(),{webidl:Pe}=gn(),{Headers:Z0}=yl();function Sle(t){Pe.argumentLengthCheck(arguments,1,{header:"getCookies"}),Pe.brandCheck(t,Z0,{strict:!1});let e=t.get("cookie"),r={};if(!e)return r;for(let n of e.split(";")){let[i,...s]=n.split("=");r[i.trim()]=s.join("=")}return r}function ble(t,e,r){Pe.argumentLengthCheck(arguments,2,{header:"deleteCookie"}),Pe.brandCheck(t,Z0,{strict:!1}),e=Pe.converters.DOMString(e),r=Pe.converters.DeleteCookieAttributes(r),eM(t,{name:e,value:"",expires:new Date(0),...r})}function vle(t){Pe.argumentLengthCheck(arguments,1,{header:"getSetCookies"}),Pe.brandCheck(t,Z0,{strict:!1});let e=wle(t).cookies;return e?e.map(r=>Qle(Array.isArray(r)?r[1]:r)):[]}function eM(t,e){Pe.argumentLengthCheck(arguments,2,{header:"setCookie"}),Pe.brandCheck(t,Z0,{strict:!1}),e=Pe.converters.Cookie(e),Z_(e)&&t.append("Set-Cookie",Z_(e))}Pe.converters.DeleteCookieAttributes=Pe.dictionaryConverter([{converter:Pe.nullableConverter(Pe.converters.DOMString),key:"path",defaultValue:null},{converter:Pe.nullableConverter(Pe.converters.DOMString),key:"domain",defaultValue:null}]);Pe.converters.Cookie=Pe.dictionaryConverter([{converter:Pe.converters.DOMString,key:"name"},{converter:Pe.converters.DOMString,key:"value"},{converter:Pe.nullableConverter(t=>typeof t=="number"?Pe.converters["unsigned long long"](t):new Date(t)),key:"expires",defaultValue:null},{converter:Pe.nullableConverter(Pe.converters["long long"]),key:"maxAge",defaultValue:null},{converter:Pe.nullableConverter(Pe.converters.DOMString),key:"domain",defaultValue:null},{converter:Pe.nullableConverter(Pe.converters.DOMString),key:"path",defaultValue:null},{converter:Pe.nullableConverter(Pe.converters.boolean),key:"secure",defaultValue:null},{converter:Pe.nullableConverter(Pe.converters.boolean),key:"httpOnly",defaultValue:null},{converter:Pe.converters.USVString,key:"sameSite",allowedValues:["Strict","Lax","None"]},{converter:Pe.sequenceConverter(Pe.converters.DOMString),key:"unparsed",defaultValue:[]}]);tM.exports={getCookies:Sle,deleteCookie:ble,getSetCookies:vle,setCookie:eM}});var $d=g((Dke,nM)=>{"use strict";var Rle="258EAFA5-E914-47DA-95CA-C5AB0DC85B11",Nle={enumerable:!0,writable:!1,configurable:!1},Tle={CONNECTING:0,OPEN:1,CLOSING:2,CLOSED:3},Dle={CONTINUATION:0,TEXT:1,BINARY:2,CLOSE:8,PING:9,PONG:10},kle=2**16-1,Ple={INFO:0,PAYLOADLENGTH_16:2,PAYLOADLENGTH_64:3,READ_DATA:4},_le=Buffer.allocUnsafe(0);nM.exports={uid:Rle,staticPropertyDescriptors:Nle,states:Tle,opcodes:Dle,maxUnsigned16Bit:kle,parserStates:Ple,emptyBuffer:_le}});var rh=g((kke,iM)=>{"use strict";iM.exports={kWebSocketURL:Symbol("url"),kReadyState:Symbol("ready state"),kController:Symbol("controller"),kResponse:Symbol("response"),kBinaryType:Symbol("binary type"),kSentClose:Symbol("sent close"),kReceivedClose:Symbol("received close"),kByteParser:Symbol("byte parser")}});var T9=g((Pke,sM)=>{"use strict";var{webidl:ae}=gn(),{kEnumerableProperty:Vn}=Le(),{MessagePort:Mle}=require("worker_threads"),Qs,za=class za extends Event{constructor(r,n={}){ae.argumentLengthCheck(arguments,1,{header:"MessageEvent constructor"}),r=ae.converters.DOMString(r),n=ae.converters.MessageEventInit(n);super(r,n);er(this,Qs);We(this,Qs,n)}get data(){return ae.brandCheck(this,za),k(this,Qs).data}get origin(){return ae.brandCheck(this,za),k(this,Qs).origin}get lastEventId(){return ae.brandCheck(this,za),k(this,Qs).lastEventId}get source(){return ae.brandCheck(this,za),k(this,Qs).source}get ports(){return ae.brandCheck(this,za),Object.isFrozen(k(this,Qs).ports)||Object.freeze(k(this,Qs).ports),k(this,Qs).ports}initMessageEvent(r,n=!1,i=!1,s=null,a="",o="",A=null,l=[]){return ae.brandCheck(this,za),ae.argumentLengthCheck(arguments,1,{header:"MessageEvent.initMessageEvent"}),new za(r,{bubbles:n,cancelable:i,data:s,origin:a,lastEventId:o,source:A,ports:l})}};Qs=new WeakMap;var eE=za,Sl,nh=class nh extends Event{constructor(r,n={}){ae.argumentLengthCheck(arguments,1,{header:"CloseEvent constructor"}),r=ae.converters.DOMString(r),n=ae.converters.CloseEventInit(n);super(r,n);er(this,Sl);We(this,Sl,n)}get wasClean(){return ae.brandCheck(this,nh),k(this,Sl).wasClean}get code(){return ae.brandCheck(this,nh),k(this,Sl).code}get reason(){return ae.brandCheck(this,nh),k(this,Sl).reason}};Sl=new WeakMap;var tE=nh,Wa,wl=class wl extends Event{constructor(r,n){ae.argumentLengthCheck(arguments,1,{header:"ErrorEvent constructor"});super(r,n);er(this,Wa);r=ae.converters.DOMString(r),n=ae.converters.ErrorEventInit(n??{}),We(this,Wa,n)}get message(){return ae.brandCheck(this,wl),k(this,Wa).message}get filename(){return ae.brandCheck(this,wl),k(this,Wa).filename}get lineno(){return ae.brandCheck(this,wl),k(this,Wa).lineno}get colno(){return ae.brandCheck(this,wl),k(this,Wa).colno}get error(){return ae.brandCheck(this,wl),k(this,Wa).error}};Wa=new WeakMap;var rE=wl;Object.defineProperties(eE.prototype,{[Symbol.toStringTag]:{value:"MessageEvent",configurable:!0},data:Vn,origin:Vn,lastEventId:Vn,source:Vn,ports:Vn,initMessageEvent:Vn});Object.defineProperties(tE.prototype,{[Symbol.toStringTag]:{value:"CloseEvent",configurable:!0},reason:Vn,code:Vn,wasClean:Vn});Object.defineProperties(rE.prototype,{[Symbol.toStringTag]:{value:"ErrorEvent",configurable:!0},message:Vn,filename:Vn,lineno:Vn,colno:Vn,error:Vn});ae.converters.MessagePort=ae.interfaceConverter(Mle);ae.converters["sequence"]=ae.sequenceConverter(ae.converters.MessagePort);var N9=[{key:"bubbles",converter:ae.converters.boolean,defaultValue:!1},{key:"cancelable",converter:ae.converters.boolean,defaultValue:!1},{key:"composed",converter:ae.converters.boolean,defaultValue:!1}];ae.converters.MessageEventInit=ae.dictionaryConverter([...N9,{key:"data",converter:ae.converters.any,defaultValue:null},{key:"origin",converter:ae.converters.USVString,defaultValue:""},{key:"lastEventId",converter:ae.converters.DOMString,defaultValue:""},{key:"source",converter:ae.nullableConverter(ae.converters.MessagePort),defaultValue:null},{key:"ports",converter:ae.converters["sequence"],get defaultValue(){return[]}}]);ae.converters.CloseEventInit=ae.dictionaryConverter([...N9,{key:"wasClean",converter:ae.converters.boolean,defaultValue:!1},{key:"code",converter:ae.converters["unsigned short"],defaultValue:0},{key:"reason",converter:ae.converters.USVString,defaultValue:""}]);ae.converters.ErrorEventInit=ae.dictionaryConverter([...N9,{key:"message",converter:ae.converters.DOMString,defaultValue:""},{key:"filename",converter:ae.converters.USVString,defaultValue:""},{key:"lineno",converter:ae.converters["unsigned long"],defaultValue:0},{key:"colno",converter:ae.converters["unsigned long"],defaultValue:0},{key:"error",converter:ae.converters.any}]);sM.exports={MessageEvent:eE,CloseEvent:tE,ErrorEvent:rE}});var sE=g((Mke,AM)=>{"use strict";var{kReadyState:nE,kController:Ole,kResponse:xle,kBinaryType:Lle,kWebSocketURL:Fle}=rh(),{states:iE,opcodes:aM}=$d(),{MessageEvent:Ule,ErrorEvent:qle}=T9();function Vle(t){return t[nE]===iE.OPEN}function Gle(t){return t[nE]===iE.CLOSING}function Hle(t){return t[nE]===iE.CLOSED}function D9(t,e,r=Event,n){let i=new r(t,n);e.dispatchEvent(i)}function Yle(t,e,r){if(t[nE]!==iE.OPEN)return;let n;if(e===aM.TEXT)try{n=new TextDecoder("utf-8",{fatal:!0}).decode(r)}catch{oM(t,"Received invalid UTF-8 in text frame.");return}else e===aM.BINARY&&(t[Lle]==="blob"?n=new Blob([r]):n=new Uint8Array(r).buffer);D9("message",t,Ule,{origin:t[Fle].origin,data:n})}function Jle(t){if(t.length===0)return!1;for(let e of t){let r=e.charCodeAt(0);if(r<33||r>126||e==="("||e===")"||e==="<"||e===">"||e==="@"||e===","||e===";"||e===":"||e==="\\"||e==='"'||e==="/"||e==="["||e==="]"||e==="?"||e==="="||e==="{"||e==="}"||r===32||r===9)return!1}return!0}function jle(t){return t>=1e3&&t<1015?t!==1004&&t!==1005&&t!==1006:t>=3e3&&t<=4999}function oM(t,e){let{[Ole]:r,[xle]:n}=t;r.abort(),n?.socket&&!n.socket.destroyed&&n.socket.destroy(),e&&D9("error",t,qle,{error:new Error(e)})}AM.exports={isEstablished:Vle,isClosing:Gle,isClosed:Hle,fireEvent:D9,isValidSubprotocol:Jle,isValidStatusCode:jle,failWebsocketConnection:oM,websocketMessageReceived:Yle}});var mM=g((Oke,uM)=>{"use strict";var P9=require("diagnostics_channel"),{uid:zle,states:cM}=$d(),{kReadyState:dM,kSentClose:lM,kByteParser:pM,kReceivedClose:Wle}=rh(),{fireEvent:$le,failWebsocketConnection:bl}=sE(),{CloseEvent:Kle}=T9(),{makeRequest:Xle}=Km(),{fetching:Zle}=U0(),{Headers:ece}=yl(),{getGlobalDispatcher:tce}=xd(),{kHeadersList:rce}=pt(),$a={};$a.open=P9.channel("undici:websocket:open");$a.close=P9.channel("undici:websocket:close");$a.socketError=P9.channel("undici:websocket:socket_error");var k9;try{k9=require("crypto")}catch{}function nce(t,e,r,n,i){let s=t;s.protocol=t.protocol==="ws:"?"http:":"https:";let a=Xle({urlList:[s],serviceWorkers:"none",referrer:"no-referrer",mode:"websocket",credentials:"include",cache:"no-store",redirect:"error"});if(i.headers){let c=new ece(i.headers)[rce];a.headersList=c}let o=k9.randomBytes(16).toString("base64");a.headersList.append("sec-websocket-key",o),a.headersList.append("sec-websocket-version","13");for(let c of e)a.headersList.append("sec-websocket-protocol",c);let A="";return Zle({request:a,useParallelQueue:!0,dispatcher:i.dispatcher??tce(),processResponse(c){if(c.type==="error"||c.status!==101){bl(r,"Received network error or non-101 status code.");return}if(e.length!==0&&!c.headersList.get("Sec-WebSocket-Protocol")){bl(r,"Server did not respond with sent protocols.");return}if(c.headersList.get("Upgrade")?.toLowerCase()!=="websocket"){bl(r,'Server did not set Upgrade header to "websocket".');return}if(c.headersList.get("Connection")?.toLowerCase()!=="upgrade"){bl(r,'Server did not set Connection header to "upgrade".');return}let d=c.headersList.get("Sec-WebSocket-Accept"),p=k9.createHash("sha1").update(o+zle).digest("base64");if(d!==p){bl(r,"Incorrect hash received in Sec-WebSocket-Accept header.");return}let u=c.headersList.get("Sec-WebSocket-Extensions");if(u!==null&&u!==A){bl(r,"Received different permessage-deflate than the one set.");return}let m=c.headersList.get("Sec-WebSocket-Protocol");if(m!==null&&m!==a.headersList.get("Sec-WebSocket-Protocol")){bl(r,"Protocol was not set in the opening handshake.");return}c.socket.on("data",ice),c.socket.on("close",sce),c.socket.on("error",ace),$a.open.hasSubscribers&&$a.open.publish({address:c.socket.address(),protocol:m,extensions:u}),n(c)}})}function ice(t){this.ws[pM].write(t)||this.pause()}function sce(){let{ws:t}=this,e=t[lM]&&t[Wle],r=1005,n="",i=t[pM].closingInfo;i?(r=i.code??1005,n=i.reason):t[lM]||(r=1006),t[dM]=cM.CLOSED,$le("close",t,Kle,{wasClean:e,code:r,reason:n}),$a.close.hasSubscribers&&$a.close.publish({websocket:t,code:r,reason:n})}function ace(t){let{ws:e}=this;e[dM]=cM.CLOSING,$a.socketError.hasSubscribers&&$a.socketError.publish(t),this.destroy()}uM.exports={establishWebSocketConnection:nce}});var M9=g((xke,fM)=>{"use strict";var{maxUnsigned16Bit:oce}=$d(),hM;try{hM=require("crypto")}catch{}var _9=class{constructor(e){this.frameData=e,this.maskKey=hM.randomBytes(4)}createFrame(e){let r=this.frameData?.byteLength??0,n=r,i=6;r>oce?(i+=8,n=127):r>125&&(i+=2,n=126);let s=Buffer.allocUnsafe(r+i);s[0]=s[1]=0,s[0]|=128,s[0]=(s[0]&240)+e;s[i-4]=this.maskKey[0],s[i-3]=this.maskKey[1],s[i-2]=this.maskKey[2],s[i-1]=this.maskKey[3],s[1]=n,n===126?s.writeUInt16BE(r,2):n===127&&(s[2]=s[3]=0,s.writeUIntBE(r,4,6)),s[1]|=128;for(let a=0;a{"use strict";var{Writable:Ace}=require("stream"),BM=require("diagnostics_channel"),{parserStates:Ji,opcodes:ji,states:lce,emptyBuffer:cce}=$d(),{kReadyState:dce,kSentClose:gM,kResponse:EM,kReceivedClose:yM}=rh(),{isValidStatusCode:CM,failWebsocketConnection:ih,websocketMessageReceived:pce}=sE(),{WebsocketFrameSend:IM}=M9(),Kd={};Kd.ping=BM.channel("undici:websocket:ping");Kd.pong=BM.channel("undici:websocket:pong");var ws,wn,Gn,Fe,Xd,O9=class extends Ace{constructor(r){super();er(this,ws,[]);er(this,wn,0);er(this,Gn,Ji.INFO);er(this,Fe,{});er(this,Xd,[]);this.ws=r}_write(r,n,i){k(this,ws).push(r),We(this,wn,k(this,wn)+r.length),this.run(i)}run(r){for(;;){if(k(this,Gn)===Ji.INFO){if(k(this,wn)<2)return r();let n=this.consume(2);if(k(this,Fe).fin=(n[0]&128)!==0,k(this,Fe).opcode=n[0]&15,k(this,Fe).originalOpcode??=k(this,Fe).opcode,k(this,Fe).fragmented=!k(this,Fe).fin&&k(this,Fe).opcode!==ji.CONTINUATION,k(this,Fe).fragmented&&k(this,Fe).opcode!==ji.BINARY&&k(this,Fe).opcode!==ji.TEXT){ih(this.ws,"Invalid frame type was fragmented.");return}let i=n[1]&127;if(i<=125?(k(this,Fe).payloadLength=i,We(this,Gn,Ji.READ_DATA)):i===126?We(this,Gn,Ji.PAYLOADLENGTH_16):i===127&&We(this,Gn,Ji.PAYLOADLENGTH_64),k(this,Fe).fragmented&&i>125){ih(this.ws,"Fragmented frame exceeded 125 bytes.");return}else if((k(this,Fe).opcode===ji.PING||k(this,Fe).opcode===ji.PONG||k(this,Fe).opcode===ji.CLOSE)&&i>125){ih(this.ws,"Payload length for control frame exceeded 125 bytes.");return}else if(k(this,Fe).opcode===ji.CLOSE){if(i===1){ih(this.ws,"Received close frame with a 1-byte body.");return}let s=this.consume(i);if(k(this,Fe).closeInfo=this.parseCloseBody(!1,s),!this.ws[gM]){let a=Buffer.allocUnsafe(2);a.writeUInt16BE(k(this,Fe).closeInfo.code,0);let o=new IM(a);this.ws[EM].socket.write(o.createFrame(ji.CLOSE),A=>{A||(this.ws[gM]=!0)})}this.ws[dce]=lce.CLOSING,this.ws[yM]=!0,this.end();return}else if(k(this,Fe).opcode===ji.PING){let s=this.consume(i);if(!this.ws[yM]){let a=new IM(s);this.ws[EM].socket.write(a.createFrame(ji.PONG)),Kd.ping.hasSubscribers&&Kd.ping.publish({payload:s})}if(We(this,Gn,Ji.INFO),k(this,wn)>0)continue;r();return}else if(k(this,Fe).opcode===ji.PONG){let s=this.consume(i);if(Kd.pong.hasSubscribers&&Kd.pong.publish({payload:s}),k(this,wn)>0)continue;r();return}}else if(k(this,Gn)===Ji.PAYLOADLENGTH_16){if(k(this,wn)<2)return r();let n=this.consume(2);k(this,Fe).payloadLength=n.readUInt16BE(0),We(this,Gn,Ji.READ_DATA)}else if(k(this,Gn)===Ji.PAYLOADLENGTH_64){if(k(this,wn)<8)return r();let n=this.consume(8),i=n.readUInt32BE(0);if(i>2**31-1){ih(this.ws,"Received payload length > 2^31 bytes.");return}let s=n.readUInt32BE(4);k(this,Fe).payloadLength=(i<<8)+s,We(this,Gn,Ji.READ_DATA)}else if(k(this,Gn)===Ji.READ_DATA){if(k(this,wn)=k(this,Fe).payloadLength){let n=this.consume(k(this,Fe).payloadLength);if(k(this,Xd).push(n),!k(this,Fe).fragmented||k(this,Fe).fin&&k(this,Fe).opcode===ji.CONTINUATION){let i=Buffer.concat(k(this,Xd));pce(this.ws,k(this,Fe).originalOpcode,i),We(this,Fe,{}),k(this,Xd).length=0}We(this,Gn,Ji.INFO)}}if(!(k(this,wn)>0)){r();break}}}consume(r){if(r>k(this,wn))return null;if(r===0)return cce;if(k(this,ws)[0].length===r)return We(this,wn,k(this,wn)-k(this,ws)[0].length),k(this,ws).shift();let n=Buffer.allocUnsafe(r),i=0;for(;i!==r;){let s=k(this,ws)[0],{length:a}=s;if(a+i===r){n.set(k(this,ws).shift(),i);break}else if(a+i>r){n.set(s.subarray(0,r-i),i),k(this,ws)[0]=s.subarray(r-i);break}else n.set(k(this,ws).shift(),i),i+=s.length}return We(this,wn,k(this,wn)-r),n}parseCloseBody(r,n){let i;if(n.length>=2&&(i=n.readUInt16BE(0)),r)return CM(i)?{code:i}:null;let s=n.subarray(2);if(s[0]===239&&s[1]===187&&s[2]===191&&(s=s.subarray(3)),i!==void 0&&!CM(i))return null;try{s=new TextDecoder("utf-8",{fatal:!0}).decode(s)}catch{return null}return{code:i,reason:s}}get closingInfo(){return k(this,Fe).closeInfo}};ws=new WeakMap,wn=new WeakMap,Gn=new WeakMap,Fe=new WeakMap,Xd=new WeakMap;QM.exports={ByteParser:O9}});var PM=g((Uke,kM)=>{"use strict";var{webidl:me}=gn(),{DOMException:Ko}=Vo(),{URLSerializer:uce}=Es(),{getGlobalOrigin:mce}=hd(),{staticPropertyDescriptors:Xo,states:Zd,opcodes:sh,emptyBuffer:hce}=$d(),{kWebSocketURL:SM,kReadyState:Ka,kController:fce,kBinaryType:aE,kResponse:oE,kSentClose:gce,kByteParser:Ece}=rh(),{isEstablished:bM,isClosing:vM,isValidSubprotocol:yce,failWebsocketConnection:Cce,fireEvent:Ice}=sE(),{establishWebSocketConnection:Bce}=mM(),{WebsocketFrameSend:ah}=M9(),{ByteParser:Qce}=wM(),{kEnumerableProperty:zi,isBlobLike:NM}=Le(),{getGlobalDispatcher:wce}=xd(),{types:TM}=require("util"),RM=!1,Ot,Wi,oh,Ah,AE,DM,wt=class wt extends EventTarget{constructor(r,n=[]){super();er(this,AE);er(this,Ot,{open:null,error:null,close:null,message:null});er(this,Wi,0);er(this,oh,"");er(this,Ah,"");me.argumentLengthCheck(arguments,1,{header:"WebSocket constructor"}),RM||(RM=!0,process.emitWarning("WebSockets are experimental, expect them to change at any time.",{code:"UNDICI-WS"}));let i=me.converters["DOMString or sequence or WebSocketInit"](n);r=me.converters.USVString(r),n=i.protocols;let s=mce(),a;try{a=new URL(r,s)}catch(o){throw new Ko(o,"SyntaxError")}if(a.protocol==="http:"?a.protocol="ws:":a.protocol==="https:"&&(a.protocol="wss:"),a.protocol!=="ws:"&&a.protocol!=="wss:")throw new Ko(`Expected a ws: or wss: protocol, got ${a.protocol}`,"SyntaxError");if(a.hash||a.href.endsWith("#"))throw new Ko("Got fragment","SyntaxError");if(typeof n=="string"&&(n=[n]),n.length!==new Set(n.map(o=>o.toLowerCase())).size)throw new Ko("Invalid Sec-WebSocket-Protocol value","SyntaxError");if(n.length>0&&!n.every(o=>yce(o)))throw new Ko("Invalid Sec-WebSocket-Protocol value","SyntaxError");this[SM]=new URL(a.href),this[fce]=Bce(a,n,this,o=>Fi(this,AE,DM).call(this,o),i),this[Ka]=wt.CONNECTING,this[aE]="blob"}close(r=void 0,n=void 0){if(me.brandCheck(this,wt),r!==void 0&&(r=me.converters["unsigned short"](r,{clamp:!0})),n!==void 0&&(n=me.converters.USVString(n)),r!==void 0&&r!==1e3&&(r<3e3||r>4999))throw new Ko("invalid code","InvalidAccessError");let i=0;if(n!==void 0&&(i=Buffer.byteLength(n),i>123))throw new Ko(`Reason must be less than 123 bytes; received ${i}`,"SyntaxError");if(!(this[Ka]===wt.CLOSING||this[Ka]===wt.CLOSED))if(!bM(this))Cce(this,"Connection was closed before it was established."),this[Ka]=wt.CLOSING;else if(vM(this))this[Ka]=wt.CLOSING;else{let s=new ah;r!==void 0&&n===void 0?(s.frameData=Buffer.allocUnsafe(2),s.frameData.writeUInt16BE(r,0)):r!==void 0&&n!==void 0?(s.frameData=Buffer.allocUnsafe(2+i),s.frameData.writeUInt16BE(r,0),s.frameData.write(n,2,"utf-8")):s.frameData=hce,this[oE].socket.write(s.createFrame(sh.CLOSE),o=>{o||(this[gce]=!0)}),this[Ka]=Zd.CLOSING}}send(r){if(me.brandCheck(this,wt),me.argumentLengthCheck(arguments,1,{header:"WebSocket.send"}),r=me.converters.WebSocketSendData(r),this[Ka]===wt.CONNECTING)throw new Ko("Sent before connected.","InvalidStateError");if(!bM(this)||vM(this))return;let n=this[oE].socket;if(typeof r=="string"){let i=Buffer.from(r),a=new ah(i).createFrame(sh.TEXT);We(this,Wi,k(this,Wi)+i.byteLength),n.write(a,()=>{We(this,Wi,k(this,Wi)-i.byteLength)})}else if(TM.isArrayBuffer(r)){let i=Buffer.from(r),a=new ah(i).createFrame(sh.BINARY);We(this,Wi,k(this,Wi)+i.byteLength),n.write(a,()=>{We(this,Wi,k(this,Wi)-i.byteLength)})}else if(ArrayBuffer.isView(r)){let i=Buffer.from(r,r.byteOffset,r.byteLength),a=new ah(i).createFrame(sh.BINARY);We(this,Wi,k(this,Wi)+i.byteLength),n.write(a,()=>{We(this,Wi,k(this,Wi)-i.byteLength)})}else if(NM(r)){let i=new ah;r.arrayBuffer().then(s=>{let a=Buffer.from(s);i.frameData=a;let o=i.createFrame(sh.BINARY);We(this,Wi,k(this,Wi)+a.byteLength),n.write(o,()=>{We(this,Wi,k(this,Wi)-a.byteLength)})})}}get readyState(){return me.brandCheck(this,wt),this[Ka]}get bufferedAmount(){return me.brandCheck(this,wt),k(this,Wi)}get url(){return me.brandCheck(this,wt),uce(this[SM])}get extensions(){return me.brandCheck(this,wt),k(this,Ah)}get protocol(){return me.brandCheck(this,wt),k(this,oh)}get onopen(){return me.brandCheck(this,wt),k(this,Ot).open}set onopen(r){me.brandCheck(this,wt),k(this,Ot).open&&this.removeEventListener("open",k(this,Ot).open),typeof r=="function"?(k(this,Ot).open=r,this.addEventListener("open",r)):k(this,Ot).open=null}get onerror(){return me.brandCheck(this,wt),k(this,Ot).error}set onerror(r){me.brandCheck(this,wt),k(this,Ot).error&&this.removeEventListener("error",k(this,Ot).error),typeof r=="function"?(k(this,Ot).error=r,this.addEventListener("error",r)):k(this,Ot).error=null}get onclose(){return me.brandCheck(this,wt),k(this,Ot).close}set onclose(r){me.brandCheck(this,wt),k(this,Ot).close&&this.removeEventListener("close",k(this,Ot).close),typeof r=="function"?(k(this,Ot).close=r,this.addEventListener("close",r)):k(this,Ot).close=null}get onmessage(){return me.brandCheck(this,wt),k(this,Ot).message}set onmessage(r){me.brandCheck(this,wt),k(this,Ot).message&&this.removeEventListener("message",k(this,Ot).message),typeof r=="function"?(k(this,Ot).message=r,this.addEventListener("message",r)):k(this,Ot).message=null}get binaryType(){return me.brandCheck(this,wt),this[aE]}set binaryType(r){me.brandCheck(this,wt),r!=="blob"&&r!=="arraybuffer"?this[aE]="blob":this[aE]=r}};Ot=new WeakMap,Wi=new WeakMap,oh=new WeakMap,Ah=new WeakMap,AE=new WeakSet,DM=function(r){this[oE]=r;let n=new Qce(this);n.on("drain",function(){this.ws[oE].socket.resume()}),r.socket.ws=this,this[Ece]=n,this[Ka]=Zd.OPEN;let i=r.headersList.get("sec-websocket-extensions");i!==null&&We(this,Ah,i);let s=r.headersList.get("sec-websocket-protocol");s!==null&&We(this,oh,s),Ice("open",this)};var Ii=wt;Ii.CONNECTING=Ii.prototype.CONNECTING=Zd.CONNECTING;Ii.OPEN=Ii.prototype.OPEN=Zd.OPEN;Ii.CLOSING=Ii.prototype.CLOSING=Zd.CLOSING;Ii.CLOSED=Ii.prototype.CLOSED=Zd.CLOSED;Object.defineProperties(Ii.prototype,{CONNECTING:Xo,OPEN:Xo,CLOSING:Xo,CLOSED:Xo,url:zi,readyState:zi,bufferedAmount:zi,onopen:zi,onerror:zi,onclose:zi,close:zi,onmessage:zi,binaryType:zi,send:zi,extensions:zi,protocol:zi,[Symbol.toStringTag]:{value:"WebSocket",writable:!1,enumerable:!1,configurable:!0}});Object.defineProperties(Ii,{CONNECTING:Xo,OPEN:Xo,CLOSING:Xo,CLOSED:Xo});me.converters["sequence"]=me.sequenceConverter(me.converters.DOMString);me.converters["DOMString or sequence"]=function(t){return me.util.Type(t)==="Object"&&Symbol.iterator in t?me.converters["sequence"](t):me.converters.DOMString(t)};me.converters.WebSocketInit=me.dictionaryConverter([{key:"protocols",converter:me.converters["DOMString or sequence"],get defaultValue(){return[]}},{key:"dispatcher",converter:t=>t,get defaultValue(){return wce()}},{key:"headers",converter:me.nullableConverter(me.converters.HeadersInit)}]);me.converters["DOMString or sequence or WebSocketInit"]=function(t){return me.util.Type(t)==="Object"&&!(Symbol.iterator in t)?me.converters.WebSocketInit(t):{protocols:me.converters["DOMString or sequence"](t)}};me.converters.WebSocketSendData=function(t){if(me.util.Type(t)==="Object"){if(NM(t))return me.converters.Blob(t,{strict:!1});if(ArrayBuffer.isView(t)||TM.isAnyArrayBuffer(t))return me.converters.BufferSource(t)}return me.converters.USVString(t)};kM.exports={WebSocket:Ii}});var xM=g((Vke,we)=>{"use strict";var Sce=Lm(),_M=qg(),MM=ot(),bce=Rd(),vce=JD(),Rce=Vm(),vl=Le(),{InvalidArgumentError:lE}=MM,ep=xk(),Nce=Tm(),Tce=JB(),Dce=yP(),kce=WB(),Pce=_B(),_ce=SP(),Mce=TP(),{getGlobalDispatcher:OM,setGlobalDispatcher:Oce}=xd(),xce=OP(),Lce=Y6(),Fce=Yg(),x9;try{require("crypto"),x9=!0}catch{x9=!1}Object.assign(_M.prototype,ep);we.exports.Dispatcher=_M;we.exports.Client=Sce;we.exports.Pool=bce;we.exports.BalancedPool=vce;we.exports.Agent=Rce;we.exports.ProxyAgent=_ce;we.exports.RetryHandler=Mce;we.exports.DecoratorHandler=xce;we.exports.RedirectHandler=Lce;we.exports.createRedirectInterceptor=Fce;we.exports.buildConnector=Nce;we.exports.errors=MM;function lh(t){return(e,r,n)=>{if(typeof r=="function"&&(n=r,r=null),!e||typeof e!="string"&&typeof e!="object"&&!(e instanceof URL))throw new lE("invalid url");if(r!=null&&typeof r!="object")throw new lE("invalid opts");if(r&&r.path!=null){if(typeof r.path!="string")throw new lE("invalid opts.path");let a=r.path;r.path.startsWith("/")||(a=`/${a}`),e=new URL(vl.parseOrigin(e).origin+a)}else r||(r=typeof e=="object"?e:{}),e=vl.parseURL(e);let{agent:i,dispatcher:s=OM()}=r;if(i)throw new lE("unsupported opts.agent. Did you mean opts.client?");return t.call(s,{...r,origin:e.origin,path:e.search?`${e.pathname}${e.search}`:e.pathname,method:r.method||(r.body?"PUT":"GET")},n)}}we.exports.setGlobalDispatcher=Oce;we.exports.getGlobalDispatcher=OM;if(vl.nodeMajor>16||vl.nodeMajor===16&&vl.nodeMinor>=8){let t=null;we.exports.fetch=async function(a){t||(t=U0().fetch);try{return await t(...arguments)}catch(o){throw typeof o=="object"&&Error.captureStackTrace(o,this),o}},we.exports.Headers=yl().Headers,we.exports.Response=R0().Response,we.exports.Request=Km().Request,we.exports.FormData=Lg().FormData,we.exports.File=Og().File,we.exports.FileReader=k_().FileReader;let{setGlobalOrigin:e,getGlobalOrigin:r}=hd();we.exports.setGlobalOrigin=e,we.exports.getGlobalOrigin=r;let{CacheStorage:n}=Y_(),{kConstruct:i}=H0();we.exports.caches=new n(i)}if(vl.nodeMajor>=16){let{deleteCookie:t,getCookies:e,getSetCookies:r,setCookie:n}=rM();we.exports.deleteCookie=t,we.exports.getCookies=e,we.exports.getSetCookies=r,we.exports.setCookie=n;let{parseMIMEType:i,serializeAMimeType:s}=Es();we.exports.parseMIMEType=i,we.exports.serializeAMimeType=s}if(vl.nodeMajor>=18&&x9){let{WebSocket:t}=PM();we.exports.WebSocket=t}we.exports.request=lh(ep.request);we.exports.stream=lh(ep.stream);we.exports.pipeline=lh(ep.pipeline);we.exports.connect=lh(ep.connect);we.exports.upgrade=lh(ep.upgrade);we.exports.MockClient=Tce;we.exports.MockPool=kce;we.exports.MockAgent=Dce;we.exports.mockErrors=Pce});var FM=g(mt=>{"use strict";var Uce=mt&&mt.__createBinding||(Object.create?function(t,e,r,n){n===void 0&&(n=r);var i=Object.getOwnPropertyDescriptor(e,r);(!i||("get"in i?!e.__esModule:i.writable||i.configurable))&&(i={enumerable:!0,get:function(){return e[r]}}),Object.defineProperty(t,n,i)}:function(t,e,r,n){n===void 0&&(n=r),t[n]=e[r]}),qce=mt&&mt.__setModuleDefault||(Object.create?function(t,e){Object.defineProperty(t,"default",{enumerable:!0,value:e})}:function(t,e){t.default=e}),mE=mt&&mt.__importStar||function(t){if(t&&t.__esModule)return t;var e={};if(t!=null)for(var r in t)r!=="default"&&Object.prototype.hasOwnProperty.call(t,r)&&Uce(e,t,r);return qce(e,t),e},nr=mt&&mt.__awaiter||function(t,e,r,n){function i(s){return s instanceof r?s:new r(function(a){a(s)})}return new(r||(r=Promise))(function(s,a){function o(c){try{l(n.next(c))}catch(d){a(d)}}function A(c){try{l(n.throw(c))}catch(d){a(d)}}function l(c){c.done?s(c.value):i(c.value).then(o,A)}l((n=n.apply(t,e||[])).next())})};Object.defineProperty(mt,"__esModule",{value:!0});mt.HttpClient=mt.isHttps=mt.HttpClientResponse=mt.HttpClientError=mt.getProxyUrl=mt.MediaTypes=mt.Headers=mt.HttpCodes=void 0;var L9=mE(require("http")),LM=mE(require("https")),F9=mE(JR()),cE=mE(XR()),Vce=xM(),$i;(function(t){t[t.OK=200]="OK",t[t.MultipleChoices=300]="MultipleChoices",t[t.MovedPermanently=301]="MovedPermanently",t[t.ResourceMoved=302]="ResourceMoved",t[t.SeeOther=303]="SeeOther",t[t.NotModified=304]="NotModified",t[t.UseProxy=305]="UseProxy",t[t.SwitchProxy=306]="SwitchProxy",t[t.TemporaryRedirect=307]="TemporaryRedirect",t[t.PermanentRedirect=308]="PermanentRedirect",t[t.BadRequest=400]="BadRequest",t[t.Unauthorized=401]="Unauthorized",t[t.PaymentRequired=402]="PaymentRequired",t[t.Forbidden=403]="Forbidden",t[t.NotFound=404]="NotFound",t[t.MethodNotAllowed=405]="MethodNotAllowed",t[t.NotAcceptable=406]="NotAcceptable",t[t.ProxyAuthenticationRequired=407]="ProxyAuthenticationRequired",t[t.RequestTimeout=408]="RequestTimeout",t[t.Conflict=409]="Conflict",t[t.Gone=410]="Gone",t[t.TooManyRequests=429]="TooManyRequests",t[t.InternalServerError=500]="InternalServerError",t[t.NotImplemented=501]="NotImplemented",t[t.BadGateway=502]="BadGateway",t[t.ServiceUnavailable=503]="ServiceUnavailable",t[t.GatewayTimeout=504]="GatewayTimeout"})($i||(mt.HttpCodes=$i={}));var cn;(function(t){t.Accept="accept",t.ContentType="content-type"})(cn||(mt.Headers=cn={}));var Xa;(function(t){t.ApplicationJson="application/json"})(Xa||(mt.MediaTypes=Xa={}));function Gce(t){let e=F9.getProxyUrl(new URL(t));return e?e.href:""}mt.getProxyUrl=Gce;var Hce=[$i.MovedPermanently,$i.ResourceMoved,$i.SeeOther,$i.TemporaryRedirect,$i.PermanentRedirect],Yce=[$i.BadGateway,$i.ServiceUnavailable,$i.GatewayTimeout],Jce=["OPTIONS","GET","DELETE","HEAD"],jce=10,zce=5,pE=class t extends Error{constructor(e,r){super(e),this.name="HttpClientError",this.statusCode=r,Object.setPrototypeOf(this,t.prototype)}};mt.HttpClientError=pE;var uE=class{constructor(e){this.message=e}readBody(){return nr(this,void 0,void 0,function*(){return new Promise(e=>nr(this,void 0,void 0,function*(){let r=Buffer.alloc(0);this.message.on("data",n=>{r=Buffer.concat([r,n])}),this.message.on("end",()=>{e(r.toString())})}))})}readBodyBuffer(){return nr(this,void 0,void 0,function*(){return new Promise(e=>nr(this,void 0,void 0,function*(){let r=[];this.message.on("data",n=>{r.push(n)}),this.message.on("end",()=>{e(Buffer.concat(r))})}))})}};mt.HttpClientResponse=uE;function Wce(t){return new URL(t).protocol==="https:"}mt.isHttps=Wce;var U9=class{constructor(e,r,n){this._ignoreSslError=!1,this._allowRedirects=!0,this._allowRedirectDowngrade=!1,this._maxRedirects=50,this._allowRetries=!1,this._maxRetries=1,this._keepAlive=!1,this._disposed=!1,this.userAgent=e,this.handlers=r||[],this.requestOptions=n,n&&(n.ignoreSslError!=null&&(this._ignoreSslError=n.ignoreSslError),this._socketTimeout=n.socketTimeout,n.allowRedirects!=null&&(this._allowRedirects=n.allowRedirects),n.allowRedirectDowngrade!=null&&(this._allowRedirectDowngrade=n.allowRedirectDowngrade),n.maxRedirects!=null&&(this._maxRedirects=Math.max(n.maxRedirects,0)),n.keepAlive!=null&&(this._keepAlive=n.keepAlive),n.allowRetries!=null&&(this._allowRetries=n.allowRetries),n.maxRetries!=null&&(this._maxRetries=n.maxRetries))}options(e,r){return nr(this,void 0,void 0,function*(){return this.request("OPTIONS",e,null,r||{})})}get(e,r){return nr(this,void 0,void 0,function*(){return this.request("GET",e,null,r||{})})}del(e,r){return nr(this,void 0,void 0,function*(){return this.request("DELETE",e,null,r||{})})}post(e,r,n){return nr(this,void 0,void 0,function*(){return this.request("POST",e,r,n||{})})}patch(e,r,n){return nr(this,void 0,void 0,function*(){return this.request("PATCH",e,r,n||{})})}put(e,r,n){return nr(this,void 0,void 0,function*(){return this.request("PUT",e,r,n||{})})}head(e,r){return nr(this,void 0,void 0,function*(){return this.request("HEAD",e,null,r||{})})}sendStream(e,r,n,i){return nr(this,void 0,void 0,function*(){return this.request(e,r,n,i)})}getJson(e,r={}){return nr(this,void 0,void 0,function*(){r[cn.Accept]=this._getExistingOrDefaultHeader(r,cn.Accept,Xa.ApplicationJson);let n=yield this.get(e,r);return this._processResponse(n,this.requestOptions)})}postJson(e,r,n={}){return nr(this,void 0,void 0,function*(){let i=JSON.stringify(r,null,2);n[cn.Accept]=this._getExistingOrDefaultHeader(n,cn.Accept,Xa.ApplicationJson),n[cn.ContentType]=this._getExistingOrDefaultHeader(n,cn.ContentType,Xa.ApplicationJson);let s=yield this.post(e,i,n);return this._processResponse(s,this.requestOptions)})}putJson(e,r,n={}){return nr(this,void 0,void 0,function*(){let i=JSON.stringify(r,null,2);n[cn.Accept]=this._getExistingOrDefaultHeader(n,cn.Accept,Xa.ApplicationJson),n[cn.ContentType]=this._getExistingOrDefaultHeader(n,cn.ContentType,Xa.ApplicationJson);let s=yield this.put(e,i,n);return this._processResponse(s,this.requestOptions)})}patchJson(e,r,n={}){return nr(this,void 0,void 0,function*(){let i=JSON.stringify(r,null,2);n[cn.Accept]=this._getExistingOrDefaultHeader(n,cn.Accept,Xa.ApplicationJson),n[cn.ContentType]=this._getExistingOrDefaultHeader(n,cn.ContentType,Xa.ApplicationJson);let s=yield this.patch(e,i,n);return this._processResponse(s,this.requestOptions)})}request(e,r,n,i){return nr(this,void 0,void 0,function*(){if(this._disposed)throw new Error("Client has already been disposed.");let s=new URL(r),a=this._prepareRequest(e,s,i),o=this._allowRetries&&Jce.includes(e)?this._maxRetries+1:1,A=0,l;do{if(l=yield this.requestRaw(a,n),l&&l.message&&l.message.statusCode===$i.Unauthorized){let d;for(let p of this.handlers)if(p.canHandleAuthentication(l)){d=p;break}return d?d.handleAuthentication(this,a,n):l}let c=this._maxRedirects;for(;l.message.statusCode&&Hce.includes(l.message.statusCode)&&this._allowRedirects&&c>0;){let d=l.message.headers.location;if(!d)break;let p=new URL(d);if(s.protocol==="https:"&&s.protocol!==p.protocol&&!this._allowRedirectDowngrade)throw new Error("Redirect from HTTPS to HTTP protocol. This downgrade is not allowed for security reasons. If you want to allow this behavior, set the allowRedirectDowngrade option to true.");if(yield l.readBody(),p.hostname!==s.hostname)for(let u in i)u.toLowerCase()==="authorization"&&delete i[u];a=this._prepareRequest(e,p,i),l=yield this.requestRaw(a,n),c--}if(!l.message.statusCode||!Yce.includes(l.message.statusCode))return l;A+=1,A{function s(a,o){a?i(a):o?n(o):i(new Error("Unknown error"))}this.requestRawWithCallback(e,r,s)})})}requestRawWithCallback(e,r,n){typeof r=="string"&&(e.options.headers||(e.options.headers={}),e.options.headers["Content-Length"]=Buffer.byteLength(r,"utf8"));let i=!1;function s(A,l){i||(i=!0,n(A,l))}let a=e.httpModule.request(e.options,A=>{let l=new uE(A);s(void 0,l)}),o;a.on("socket",A=>{o=A}),a.setTimeout(this._socketTimeout||3*6e4,()=>{o&&o.end(),s(new Error(`Request timeout: ${e.options.path}`))}),a.on("error",function(A){s(A)}),r&&typeof r=="string"&&a.write(r,"utf8"),r&&typeof r!="string"?(r.on("close",function(){a.end()}),r.pipe(a)):a.end()}getAgent(e){let r=new URL(e);return this._getAgent(r)}getAgentDispatcher(e){let r=new URL(e),n=F9.getProxyUrl(r);if(n&&n.hostname)return this._getProxyAgentDispatcher(r,n)}_prepareRequest(e,r,n){let i={};i.parsedUrl=r;let s=i.parsedUrl.protocol==="https:";i.httpModule=s?LM:L9;let a=s?443:80;if(i.options={},i.options.host=i.parsedUrl.hostname,i.options.port=i.parsedUrl.port?parseInt(i.parsedUrl.port):a,i.options.path=(i.parsedUrl.pathname||"")+(i.parsedUrl.search||""),i.options.method=e,i.options.headers=this._mergeHeaders(n),this.userAgent!=null&&(i.options.headers["user-agent"]=this.userAgent),i.options.agent=this._getAgent(i.parsedUrl),this.handlers)for(let o of this.handlers)o.prepareRequest(i.options);return i}_mergeHeaders(e){return this.requestOptions&&this.requestOptions.headers?Object.assign({},dE(this.requestOptions.headers),dE(e||{})):dE(e||{})}_getExistingOrDefaultHeader(e,r,n){let i;return this.requestOptions&&this.requestOptions.headers&&(i=dE(this.requestOptions.headers)[r]),e[r]||i||n}_getAgent(e){let r,n=F9.getProxyUrl(e),i=n&&n.hostname;if(this._keepAlive&&i&&(r=this._proxyAgent),i||(r=this._agent),r)return r;let s=e.protocol==="https:",a=100;if(this.requestOptions&&(a=this.requestOptions.maxSockets||L9.globalAgent.maxSockets),n&&n.hostname){let o={maxSockets:a,keepAlive:this._keepAlive,proxy:Object.assign(Object.assign({},(n.username||n.password)&&{proxyAuth:`${n.username}:${n.password}`}),{host:n.hostname,port:n.port})},A,l=n.protocol==="https:";s?A=l?cE.httpsOverHttps:cE.httpsOverHttp:A=l?cE.httpOverHttps:cE.httpOverHttp,r=A(o),this._proxyAgent=r}if(!r){let o={keepAlive:this._keepAlive,maxSockets:a};r=s?new LM.Agent(o):new L9.Agent(o),this._agent=r}return s&&this._ignoreSslError&&(r.options=Object.assign(r.options||{},{rejectUnauthorized:!1})),r}_getProxyAgentDispatcher(e,r){let n;if(this._keepAlive&&(n=this._proxyAgentDispatcher),n)return n;let i=e.protocol==="https:";return n=new Vce.ProxyAgent(Object.assign({uri:r.href,pipelining:this._keepAlive?1:0},(r.username||r.password)&&{token:`Basic ${Buffer.from(`${r.username}:${r.password}`).toString("base64")}`})),this._proxyAgentDispatcher=n,i&&this._ignoreSslError&&(n.options=Object.assign(n.options.requestTls||{},{rejectUnauthorized:!1})),n}_performExponentialBackoff(e){return nr(this,void 0,void 0,function*(){e=Math.min(jce,e);let r=zce*Math.pow(2,e);return new Promise(n=>setTimeout(()=>n(),r))})}_processResponse(e,r){return nr(this,void 0,void 0,function*(){return new Promise((n,i)=>nr(this,void 0,void 0,function*(){let s=e.message.statusCode||0,a={statusCode:s,result:null,headers:{}};s===$i.NotFound&&n(a);function o(c,d){if(typeof d=="string"){let p=new Date(d);if(!isNaN(p.valueOf()))return p}return d}let A,l;try{l=yield e.readBody(),l&&l.length>0&&(r&&r.deserializeDates?A=JSON.parse(l,o):A=JSON.parse(l),a.result=A),a.headers=e.message.headers}catch{}if(s>299){let c;A&&A.message?c=A.message:l&&l.length>0?c=l:c=`Failed request: (${s})`;let d=new pE(c,s);d.result=a.result,i(d)}else n(a)}))})}};mt.HttpClient=U9;var dE=t=>Object.keys(t).reduce((e,r)=>(e[r.toLowerCase()]=t[r],e),{})});var UM=g(ra=>{"use strict";var H9=ra&&ra.__awaiter||function(t,e,r,n){function i(s){return s instanceof r?s:new r(function(a){a(s)})}return new(r||(r=Promise))(function(s,a){function o(c){try{l(n.next(c))}catch(d){a(d)}}function A(c){try{l(n.throw(c))}catch(d){a(d)}}function l(c){c.done?s(c.value):i(c.value).then(o,A)}l((n=n.apply(t,e||[])).next())})};Object.defineProperty(ra,"__esModule",{value:!0});ra.PersonalAccessTokenCredentialHandler=ra.BearerCredentialHandler=ra.BasicCredentialHandler=void 0;var q9=class{constructor(e,r){this.username=e,this.password=r}prepareRequest(e){if(!e.headers)throw Error("The request has no headers");e.headers.Authorization=`Basic ${Buffer.from(`${this.username}:${this.password}`).toString("base64")}`}canHandleAuthentication(){return!1}handleAuthentication(){return H9(this,void 0,void 0,function*(){throw new Error("not implemented")})}};ra.BasicCredentialHandler=q9;var V9=class{constructor(e){this.token=e}prepareRequest(e){if(!e.headers)throw Error("The request has no headers");e.headers.Authorization=`Bearer ${this.token}`}canHandleAuthentication(){return!1}handleAuthentication(){return H9(this,void 0,void 0,function*(){throw new Error("not implemented")})}};ra.BearerCredentialHandler=V9;var G9=class{constructor(e){this.token=e}prepareRequest(e){if(!e.headers)throw Error("The request has no headers");e.headers.Authorization=`Basic ${Buffer.from(`PAT:${this.token}`).toString("base64")}`}canHandleAuthentication(){return!1}handleAuthentication(){return H9(this,void 0,void 0,function*(){throw new Error("not implemented")})}};ra.PersonalAccessTokenCredentialHandler=G9});var GM=g(tp=>{"use strict";var qM=tp&&tp.__awaiter||function(t,e,r,n){function i(s){return s instanceof r?s:new r(function(a){a(s)})}return new(r||(r=Promise))(function(s,a){function o(c){try{l(n.next(c))}catch(d){a(d)}}function A(c){try{l(n.throw(c))}catch(d){a(d)}}function l(c){c.done?s(c.value):i(c.value).then(o,A)}l((n=n.apply(t,e||[])).next())})};Object.defineProperty(tp,"__esModule",{value:!0});tp.OidcClient=void 0;var $ce=FM(),Kce=UM(),VM=Rl(),Y9=class t{static createHttpClient(e=!0,r=10){let n={allowRetries:e,maxRetries:r};return new $ce.HttpClient("actions/oidc-client",[new Kce.BearerCredentialHandler(t.getRequestToken())],n)}static getRequestToken(){let e=process.env.ACTIONS_ID_TOKEN_REQUEST_TOKEN;if(!e)throw new Error("Unable to get ACTIONS_ID_TOKEN_REQUEST_TOKEN env variable");return e}static getIDTokenUrl(){let e=process.env.ACTIONS_ID_TOKEN_REQUEST_URL;if(!e)throw new Error("Unable to get ACTIONS_ID_TOKEN_REQUEST_URL env variable");return e}static getCall(e){var r;return qM(this,void 0,void 0,function*(){let s=(r=(yield t.createHttpClient().getJson(e).catch(a=>{throw new Error(`Failed to get ID Token. - - Error Code : ${a.statusCode} - - Error Message: ${a.message}`)})).result)===null||r===void 0?void 0:r.value;if(!s)throw new Error("Response json body do not have ID Token field");return s})}static getIDToken(e){return qM(this,void 0,void 0,function*(){try{let r=t.getIDTokenUrl();if(e){let i=encodeURIComponent(e);r=`${r}&audience=${i}`}(0,VM.debug)(`ID token url is ${r}`);let n=yield t.getCall(r);return(0,VM.setSecret)(n),n}catch(r){throw new Error(`Error message: ${r.message}`)}})}};tp.OidcClient=Y9});var W9=g(Hn=>{"use strict";var J9=Hn&&Hn.__awaiter||function(t,e,r,n){function i(s){return s instanceof r?s:new r(function(a){a(s)})}return new(r||(r=Promise))(function(s,a){function o(c){try{l(n.next(c))}catch(d){a(d)}}function A(c){try{l(n.throw(c))}catch(d){a(d)}}function l(c){c.done?s(c.value):i(c.value).then(o,A)}l((n=n.apply(t,e||[])).next())})};Object.defineProperty(Hn,"__esModule",{value:!0});Hn.summary=Hn.markdownSummary=Hn.SUMMARY_DOCS_URL=Hn.SUMMARY_ENV_VAR=void 0;var Xce=require("os"),j9=require("fs"),{access:Zce,appendFile:ede,writeFile:tde}=j9.promises;Hn.SUMMARY_ENV_VAR="GITHUB_STEP_SUMMARY";Hn.SUMMARY_DOCS_URL="https://docs.github.com/actions/using-workflows/workflow-commands-for-github-actions#adding-a-job-summary";var z9=class{constructor(){this._buffer=""}filePath(){return J9(this,void 0,void 0,function*(){if(this._filePath)return this._filePath;let e=process.env[Hn.SUMMARY_ENV_VAR];if(!e)throw new Error(`Unable to find environment variable for $${Hn.SUMMARY_ENV_VAR}. Check if your runtime environment supports job summaries.`);try{yield Zce(e,j9.constants.R_OK|j9.constants.W_OK)}catch{throw new Error(`Unable to access summary file: '${e}'. Check if the file has correct read/write permissions.`)}return this._filePath=e,this._filePath})}wrap(e,r,n={}){let i=Object.entries(n).map(([s,a])=>` ${s}="${a}"`).join("");return r?`<${e}${i}>${r}`:`<${e}${i}>`}write(e){return J9(this,void 0,void 0,function*(){let r=!!e?.overwrite,n=yield this.filePath();return yield(r?tde:ede)(n,this._buffer,{encoding:"utf8"}),this.emptyBuffer()})}clear(){return J9(this,void 0,void 0,function*(){return this.emptyBuffer().write({overwrite:!0})})}stringify(){return this._buffer}isEmptyBuffer(){return this._buffer.length===0}emptyBuffer(){return this._buffer="",this}addRaw(e,r=!1){return this._buffer+=e,r?this.addEOL():this}addEOL(){return this.addRaw(Xce.EOL)}addCodeBlock(e,r){let n=Object.assign({},r&&{lang:r}),i=this.wrap("pre",this.wrap("code",e),n);return this.addRaw(i).addEOL()}addList(e,r=!1){let n=r?"ol":"ul",i=e.map(a=>this.wrap("li",a)).join(""),s=this.wrap(n,i);return this.addRaw(s).addEOL()}addTable(e){let r=e.map(i=>{let s=i.map(a=>{if(typeof a=="string")return this.wrap("td",a);let{header:o,data:A,colspan:l,rowspan:c}=a,d=o?"th":"td",p=Object.assign(Object.assign({},l&&{colspan:l}),c&&{rowspan:c});return this.wrap(d,A,p)}).join("");return this.wrap("tr",s)}).join(""),n=this.wrap("table",r);return this.addRaw(n).addEOL()}addDetails(e,r){let n=this.wrap("details",this.wrap("summary",e)+r);return this.addRaw(n).addEOL()}addImage(e,r,n){let{width:i,height:s}=n||{},a=Object.assign(Object.assign({},i&&{width:i}),s&&{height:s}),o=this.wrap("img",null,Object.assign({src:e,alt:r},a));return this.addRaw(o).addEOL()}addHeading(e,r){let n=`h${r}`,i=["h1","h2","h3","h4","h5","h6"].includes(n)?n:"h1",s=this.wrap(i,e);return this.addRaw(s).addEOL()}addSeparator(){let e=this.wrap("hr",null);return this.addRaw(e).addEOL()}addBreak(){let e=this.wrap("br",null);return this.addRaw(e).addEOL()}addQuote(e,r){let n=Object.assign({},r&&{cite:r}),i=this.wrap("blockquote",e,n);return this.addRaw(i).addEOL()}addLink(e,r){let n=this.wrap("a",e,{href:r});return this.addRaw(n).addEOL()}},HM=new z9;Hn.markdownSummary=HM;Hn.summary=HM});var YM=g(Yn=>{"use strict";var rde=Yn&&Yn.__createBinding||(Object.create?function(t,e,r,n){n===void 0&&(n=r);var i=Object.getOwnPropertyDescriptor(e,r);(!i||("get"in i?!e.__esModule:i.writable||i.configurable))&&(i={enumerable:!0,get:function(){return e[r]}}),Object.defineProperty(t,n,i)}:function(t,e,r,n){n===void 0&&(n=r),t[n]=e[r]}),nde=Yn&&Yn.__setModuleDefault||(Object.create?function(t,e){Object.defineProperty(t,"default",{enumerable:!0,value:e})}:function(t,e){t.default=e}),ide=Yn&&Yn.__importStar||function(t){if(t&&t.__esModule)return t;var e={};if(t!=null)for(var r in t)r!=="default"&&Object.prototype.hasOwnProperty.call(t,r)&&rde(e,t,r);return nde(e,t),e};Object.defineProperty(Yn,"__esModule",{value:!0});Yn.toPlatformPath=Yn.toWin32Path=Yn.toPosixPath=void 0;var sde=ide(require("path"));function ade(t){return t.replace(/[\\]/g,"/")}Yn.toPosixPath=ade;function ode(t){return t.replace(/[/]/g,"\\")}Yn.toWin32Path=ode;function Ade(t){return t.replace(/[/\\]/g,sde.sep)}Yn.toPlatformPath=Ade});var K9=g(Z=>{"use strict";var lde=Z&&Z.__createBinding||(Object.create?function(t,e,r,n){n===void 0&&(n=r),Object.defineProperty(t,n,{enumerable:!0,get:function(){return e[r]}})}:function(t,e,r,n){n===void 0&&(n=r),t[n]=e[r]}),cde=Z&&Z.__setModuleDefault||(Object.create?function(t,e){Object.defineProperty(t,"default",{enumerable:!0,value:e})}:function(t,e){t.default=e}),jM=Z&&Z.__importStar||function(t){if(t&&t.__esModule)return t;var e={};if(t!=null)for(var r in t)r!=="default"&&Object.hasOwnProperty.call(t,r)&&lde(e,t,r);return cde(e,t),e},$9=Z&&Z.__awaiter||function(t,e,r,n){function i(s){return s instanceof r?s:new r(function(a){a(s)})}return new(r||(r=Promise))(function(s,a){function o(c){try{l(n.next(c))}catch(d){a(d)}}function A(c){try{l(n.throw(c))}catch(d){a(d)}}function l(c){c.done?s(c.value):i(c.value).then(o,A)}l((n=n.apply(t,e||[])).next())})},Jn;Object.defineProperty(Z,"__esModule",{value:!0});Z.getCmdPath=Z.tryGetExecutablePath=Z.isRooted=Z.isDirectory=Z.exists=Z.READONLY=Z.UV_FS_O_EXLOCK=Z.IS_WINDOWS=Z.unlink=Z.symlink=Z.stat=Z.rmdir=Z.rm=Z.rename=Z.readlink=Z.readdir=Z.open=Z.mkdir=Z.lstat=Z.copyFile=Z.chmod=void 0;var zM=jM(require("fs")),hE=jM(require("path"));Jn=zM.promises,Z.chmod=Jn.chmod,Z.copyFile=Jn.copyFile,Z.lstat=Jn.lstat,Z.mkdir=Jn.mkdir,Z.open=Jn.open,Z.readdir=Jn.readdir,Z.readlink=Jn.readlink,Z.rename=Jn.rename,Z.rm=Jn.rm,Z.rmdir=Jn.rmdir,Z.stat=Jn.stat,Z.symlink=Jn.symlink,Z.unlink=Jn.unlink;Z.IS_WINDOWS=process.platform==="win32";Z.UV_FS_O_EXLOCK=268435456;Z.READONLY=zM.constants.O_RDONLY;function dde(t){return $9(this,void 0,void 0,function*(){try{yield Z.stat(t)}catch(e){if(e.code==="ENOENT")return!1;throw e}return!0})}Z.exists=dde;function pde(t,e=!1){return $9(this,void 0,void 0,function*(){return(e?yield Z.stat(t):yield Z.lstat(t)).isDirectory()})}Z.isDirectory=pde;function ude(t){if(t=hde(t),!t)throw new Error('isRooted() parameter "p" cannot be empty');return Z.IS_WINDOWS?t.startsWith("\\")||/^[A-Z]:/i.test(t):t.startsWith("/")}Z.isRooted=ude;function mde(t,e){return $9(this,void 0,void 0,function*(){let r;try{r=yield Z.stat(t)}catch(i){i.code!=="ENOENT"&&console.log(`Unexpected error attempting to determine if executable file exists '${t}': ${i}`)}if(r&&r.isFile()){if(Z.IS_WINDOWS){let i=hE.extname(t).toUpperCase();if(e.some(s=>s.toUpperCase()===i))return t}else if(JM(r))return t}let n=t;for(let i of e){t=n+i,r=void 0;try{r=yield Z.stat(t)}catch(s){s.code!=="ENOENT"&&console.log(`Unexpected error attempting to determine if executable file exists '${t}': ${s}`)}if(r&&r.isFile()){if(Z.IS_WINDOWS){try{let s=hE.dirname(t),a=hE.basename(t).toUpperCase();for(let o of yield Z.readdir(s))if(a===o.toUpperCase()){t=hE.join(s,o);break}}catch(s){console.log(`Unexpected error attempting to determine the actual case of the file '${t}': ${s}`)}return t}else if(JM(r))return t}}return""})}Z.tryGetExecutablePath=mde;function hde(t){return t=t||"",Z.IS_WINDOWS?(t=t.replace(/\//g,"\\"),t.replace(/\\\\+/g,"\\")):t.replace(/\/\/+/g,"/")}function JM(t){return(t.mode&1)>0||(t.mode&8)>0&&t.gid===process.getgid()||(t.mode&64)>0&&t.uid===process.getuid()}function fde(){var t;return(t=process.env.COMSPEC)!==null&&t!==void 0?t:"cmd.exe"}Z.getCmdPath=fde});var tO=g(Yt=>{"use strict";var gde=Yt&&Yt.__createBinding||(Object.create?function(t,e,r,n){n===void 0&&(n=r),Object.defineProperty(t,n,{enumerable:!0,get:function(){return e[r]}})}:function(t,e,r,n){n===void 0&&(n=r),t[n]=e[r]}),Ede=Yt&&Yt.__setModuleDefault||(Object.create?function(t,e){Object.defineProperty(t,"default",{enumerable:!0,value:e})}:function(t,e){t.default=e}),WM=Yt&&Yt.__importStar||function(t){if(t&&t.__esModule)return t;var e={};if(t!=null)for(var r in t)r!=="default"&&Object.hasOwnProperty.call(t,r)&&gde(e,t,r);return Ede(e,t),e},Zo=Yt&&Yt.__awaiter||function(t,e,r,n){function i(s){return s instanceof r?s:new r(function(a){a(s)})}return new(r||(r=Promise))(function(s,a){function o(c){try{l(n.next(c))}catch(d){a(d)}}function A(c){try{l(n.throw(c))}catch(d){a(d)}}function l(c){c.done?s(c.value):i(c.value).then(o,A)}l((n=n.apply(t,e||[])).next())})};Object.defineProperty(Yt,"__esModule",{value:!0});Yt.findInPath=Yt.which=Yt.mkdirP=Yt.rmRF=Yt.mv=Yt.cp=void 0;var yde=require("assert"),na=WM(require("path")),Ke=WM(K9());function Cde(t,e,r={}){return Zo(this,void 0,void 0,function*(){let{force:n,recursive:i,copySourceDirectory:s}=Bde(r),a=(yield Ke.exists(e))?yield Ke.stat(e):null;if(a&&a.isFile()&&!n)return;let o=a&&a.isDirectory()&&s?na.join(e,na.basename(t)):e;if(!(yield Ke.exists(t)))throw new Error(`no such file or directory: ${t}`);if((yield Ke.stat(t)).isDirectory())if(i)yield ZM(t,o,0,n);else throw new Error(`Failed to copy. ${t} is a directory, but tried to copy without recursive flag.`);else{if(na.relative(t,o)==="")throw new Error(`'${o}' and '${t}' are the same file`);yield eO(t,o,n)}})}Yt.cp=Cde;function Ide(t,e,r={}){return Zo(this,void 0,void 0,function*(){if(yield Ke.exists(e)){let n=!0;if((yield Ke.isDirectory(e))&&(e=na.join(e,na.basename(t)),n=yield Ke.exists(e)),n)if(r.force==null||r.force)yield $M(e);else throw new Error("Destination already exists")}yield X9(na.dirname(e)),yield Ke.rename(t,e)})}Yt.mv=Ide;function $M(t){return Zo(this,void 0,void 0,function*(){if(Ke.IS_WINDOWS&&/[*"<>|]/.test(t))throw new Error('File path must not contain `*`, `"`, `<`, `>` or `|` on Windows');try{yield Ke.rm(t,{force:!0,maxRetries:3,recursive:!0,retryDelay:300})}catch(e){throw new Error(`File was unable to be removed ${e}`)}})}Yt.rmRF=$M;function X9(t){return Zo(this,void 0,void 0,function*(){yde.ok(t,"a path argument must be provided"),yield Ke.mkdir(t,{recursive:!0})})}Yt.mkdirP=X9;function KM(t,e){return Zo(this,void 0,void 0,function*(){if(!t)throw new Error("parameter 'tool' is required");if(e){let n=yield KM(t,!1);if(!n)throw Ke.IS_WINDOWS?new Error(`Unable to locate executable file: ${t}. Please verify either the file path exists or the file can be found within a directory specified by the PATH environment variable. Also verify the file has a valid extension for an executable file.`):new Error(`Unable to locate executable file: ${t}. Please verify either the file path exists or the file can be found within a directory specified by the PATH environment variable. Also check the file mode to verify the file is executable.`);return n}let r=yield XM(t);return r&&r.length>0?r[0]:""})}Yt.which=KM;function XM(t){return Zo(this,void 0,void 0,function*(){if(!t)throw new Error("parameter 'tool' is required");let e=[];if(Ke.IS_WINDOWS&&process.env.PATHEXT)for(let i of process.env.PATHEXT.split(na.delimiter))i&&e.push(i);if(Ke.isRooted(t)){let i=yield Ke.tryGetExecutablePath(t,e);return i?[i]:[]}if(t.includes(na.sep))return[];let r=[];if(process.env.PATH)for(let i of process.env.PATH.split(na.delimiter))i&&r.push(i);let n=[];for(let i of r){let s=yield Ke.tryGetExecutablePath(na.join(i,t),e);s&&n.push(s)}return n})}Yt.findInPath=XM;function Bde(t){let e=t.force==null?!0:t.force,r=!!t.recursive,n=t.copySourceDirectory==null?!0:!!t.copySourceDirectory;return{force:e,recursive:r,copySourceDirectory:n}}function ZM(t,e,r,n){return Zo(this,void 0,void 0,function*(){if(r>=255)return;r++,yield X9(e);let i=yield Ke.readdir(t);for(let s of i){let a=`${t}/${s}`,o=`${e}/${s}`;(yield Ke.lstat(a)).isDirectory()?yield ZM(a,o,r,n):yield eO(a,o,n)}yield Ke.chmod(e,(yield Ke.stat(t)).mode)})}function eO(t,e,r){return Zo(this,void 0,void 0,function*(){if((yield Ke.lstat(t)).isSymbolicLink()){try{yield Ke.lstat(e),yield Ke.unlink(e)}catch(i){i.code==="EPERM"&&(yield Ke.chmod(e,"0666"),yield Ke.unlink(e))}let n=yield Ke.readlink(t);yield Ke.symlink(n,e,Ke.IS_WINDOWS?"junction":null)}else(!(yield Ke.exists(e))||r)&&(yield Ke.copyFile(t,e))})}});var sO=g(jn=>{"use strict";var Qde=jn&&jn.__createBinding||(Object.create?function(t,e,r,n){n===void 0&&(n=r),Object.defineProperty(t,n,{enumerable:!0,get:function(){return e[r]}})}:function(t,e,r,n){n===void 0&&(n=r),t[n]=e[r]}),wde=jn&&jn.__setModuleDefault||(Object.create?function(t,e){Object.defineProperty(t,"default",{enumerable:!0,value:e})}:function(t,e){t.default=e}),rp=jn&&jn.__importStar||function(t){if(t&&t.__esModule)return t;var e={};if(t!=null)for(var r in t)r!=="default"&&Object.hasOwnProperty.call(t,r)&&Qde(e,t,r);return wde(e,t),e},rO=jn&&jn.__awaiter||function(t,e,r,n){function i(s){return s instanceof r?s:new r(function(a){a(s)})}return new(r||(r=Promise))(function(s,a){function o(c){try{l(n.next(c))}catch(d){a(d)}}function A(c){try{l(n.throw(c))}catch(d){a(d)}}function l(c){c.done?s(c.value):i(c.value).then(o,A)}l((n=n.apply(t,e||[])).next())})};Object.defineProperty(jn,"__esModule",{value:!0});jn.argStringToArray=jn.ToolRunner=void 0;var fE=rp(require("os")),iO=rp(require("events")),Sde=rp(require("child_process")),bde=rp(require("path")),vde=rp(tO()),nO=rp(K9()),Rde=require("timers"),gE=process.platform==="win32",Z9=class extends iO.EventEmitter{constructor(e,r,n){if(super(),!e)throw new Error("Parameter 'toolPath' cannot be null or empty.");this.toolPath=e,this.args=r||[],this.options=n||{}}_debug(e){this.options.listeners&&this.options.listeners.debug&&this.options.listeners.debug(e)}_getCommandString(e,r){let n=this._getSpawnFileName(),i=this._getSpawnArgs(e),s=r?"":"[command]";if(gE)if(this._isCmdFile()){s+=n;for(let a of i)s+=` ${a}`}else if(e.windowsVerbatimArguments){s+=`"${n}"`;for(let a of i)s+=` ${a}`}else{s+=this._windowsQuoteCmdArg(n);for(let a of i)s+=` ${this._windowsQuoteCmdArg(a)}`}else{s+=n;for(let a of i)s+=` ${a}`}return s}_processLineBuffer(e,r,n){try{let i=r+e.toString(),s=i.indexOf(fE.EOL);for(;s>-1;){let a=i.substring(0,s);n(a),i=i.substring(s+fE.EOL.length),s=i.indexOf(fE.EOL)}return i}catch(i){return this._debug(`error processing line. Failed with error ${i}`),""}}_getSpawnFileName(){return gE&&this._isCmdFile()?process.env.COMSPEC||"cmd.exe":this.toolPath}_getSpawnArgs(e){if(gE&&this._isCmdFile()){let r=`/D /S /C "${this._windowsQuoteCmdArg(this.toolPath)}`;for(let n of this.args)r+=" ",r+=e.windowsVerbatimArguments?n:this._windowsQuoteCmdArg(n);return r+='"',[r]}return this.args}_endsWith(e,r){return e.endsWith(r)}_isCmdFile(){let e=this.toolPath.toUpperCase();return this._endsWith(e,".CMD")||this._endsWith(e,".BAT")}_windowsQuoteCmdArg(e){if(!this._isCmdFile())return this._uvQuoteCmdArg(e);if(!e)return'""';let r=[" "," ","&","(",")","[","]","{","}","^","=",";","!","'","+",",","`","~","|","<",">",'"'],n=!1;for(let a of e)if(r.some(o=>o===a)){n=!0;break}if(!n)return e;let i='"',s=!0;for(let a=e.length;a>0;a--)i+=e[a-1],s&&e[a-1]==="\\"?i+="\\":e[a-1]==='"'?(s=!0,i+='"'):s=!1;return i+='"',i.split("").reverse().join("")}_uvQuoteCmdArg(e){if(!e)return'""';if(!e.includes(" ")&&!e.includes(" ")&&!e.includes('"'))return e;if(!e.includes('"')&&!e.includes("\\"))return`"${e}"`;let r='"',n=!0;for(let i=e.length;i>0;i--)r+=e[i-1],n&&e[i-1]==="\\"?r+="\\":e[i-1]==='"'?(n=!0,r+="\\"):n=!1;return r+='"',r.split("").reverse().join("")}_cloneExecOptions(e){e=e||{};let r={cwd:e.cwd||process.cwd(),env:e.env||process.env,silent:e.silent||!1,windowsVerbatimArguments:e.windowsVerbatimArguments||!1,failOnStdErr:e.failOnStdErr||!1,ignoreReturnCode:e.ignoreReturnCode||!1,delay:e.delay||1e4};return r.outStream=e.outStream||process.stdout,r.errStream=e.errStream||process.stderr,r}_getSpawnOptions(e,r){e=e||{};let n={};return n.cwd=e.cwd,n.env=e.env,n.windowsVerbatimArguments=e.windowsVerbatimArguments||this._isCmdFile(),e.windowsVerbatimArguments&&(n.argv0=`"${r}"`),n}exec(){return rO(this,void 0,void 0,function*(){return!nO.isRooted(this.toolPath)&&(this.toolPath.includes("/")||gE&&this.toolPath.includes("\\"))&&(this.toolPath=bde.resolve(process.cwd(),this.options.cwd||process.cwd(),this.toolPath)),this.toolPath=yield vde.which(this.toolPath,!0),new Promise((e,r)=>rO(this,void 0,void 0,function*(){this._debug(`exec tool: ${this.toolPath}`),this._debug("arguments:");for(let l of this.args)this._debug(` ${l}`);let n=this._cloneExecOptions(this.options);!n.silent&&n.outStream&&n.outStream.write(this._getCommandString(n)+fE.EOL);let i=new e3(n,this.toolPath);if(i.on("debug",l=>{this._debug(l)}),this.options.cwd&&!(yield nO.exists(this.options.cwd)))return r(new Error(`The cwd: ${this.options.cwd} does not exist!`));let s=this._getSpawnFileName(),a=Sde.spawn(s,this._getSpawnArgs(n),this._getSpawnOptions(this.options,s)),o="";a.stdout&&a.stdout.on("data",l=>{this.options.listeners&&this.options.listeners.stdout&&this.options.listeners.stdout(l),!n.silent&&n.outStream&&n.outStream.write(l),o=this._processLineBuffer(l,o,c=>{this.options.listeners&&this.options.listeners.stdline&&this.options.listeners.stdline(c)})});let A="";if(a.stderr&&a.stderr.on("data",l=>{i.processStderr=!0,this.options.listeners&&this.options.listeners.stderr&&this.options.listeners.stderr(l),!n.silent&&n.errStream&&n.outStream&&(n.failOnStdErr?n.errStream:n.outStream).write(l),A=this._processLineBuffer(l,A,c=>{this.options.listeners&&this.options.listeners.errline&&this.options.listeners.errline(c)})}),a.on("error",l=>{i.processError=l.message,i.processExited=!0,i.processClosed=!0,i.CheckComplete()}),a.on("exit",l=>{i.processExitCode=l,i.processExited=!0,this._debug(`Exit code ${l} received from tool '${this.toolPath}'`),i.CheckComplete()}),a.on("close",l=>{i.processExitCode=l,i.processExited=!0,i.processClosed=!0,this._debug(`STDIO streams have closed for tool '${this.toolPath}'`),i.CheckComplete()}),i.on("done",(l,c)=>{o.length>0&&this.emit("stdline",o),A.length>0&&this.emit("errline",A),a.removeAllListeners(),l?r(l):e(c)}),this.options.input){if(!a.stdin)throw new Error("child process missing stdin");a.stdin.end(this.options.input)}}))})}};jn.ToolRunner=Z9;function Nde(t){let e=[],r=!1,n=!1,i="";function s(a){n&&a!=='"'&&(i+="\\"),i+=a,n=!1}for(let a=0;a0&&(e.push(i),i="");continue}s(o)}return i.length>0&&e.push(i.trim()),e}jn.argStringToArray=Nde;var e3=class t extends iO.EventEmitter{constructor(e,r){if(super(),this.processClosed=!1,this.processError="",this.processExitCode=0,this.processExited=!1,this.processStderr=!1,this.delay=1e4,this.done=!1,this.timeout=null,!r)throw new Error("toolPath must not be empty");this.options=e,this.toolPath=r,e.delay&&(this.delay=e.delay)}CheckComplete(){this.done||(this.processClosed?this._setResult():this.processExited&&(this.timeout=Rde.setTimeout(t.HandleTimeout,this.delay,this)))}_debug(e){this.emit("debug",e)}_setResult(){let e;this.processExited&&(this.processError?e=new Error(`There was an error when attempting to execute the process '${this.toolPath}'. This may indicate the process failed to start. Error: ${this.processError}`):this.processExitCode!==0&&!this.options.ignoreReturnCode?e=new Error(`The process '${this.toolPath}' failed with exit code ${this.processExitCode}`):this.processStderr&&this.options.failOnStdErr&&(e=new Error(`The process '${this.toolPath}' failed because one or more lines were written to the STDERR stream`))),this.timeout&&(clearTimeout(this.timeout),this.timeout=null),this.done=!0,this.emit("done",e,this.processExitCode)}static HandleTimeout(e){if(!e.done){if(!e.processClosed&&e.processExited){let r=`The STDIO streams did not close within ${e.delay/1e3} seconds of the exit event from process '${e.toolPath}'. This may indicate a child process inherited the STDIO streams and has not yet exited.`;e._debug(r)}e._setResult()}}}});var cO=g(zn=>{"use strict";var Tde=zn&&zn.__createBinding||(Object.create?function(t,e,r,n){n===void 0&&(n=r),Object.defineProperty(t,n,{enumerable:!0,get:function(){return e[r]}})}:function(t,e,r,n){n===void 0&&(n=r),t[n]=e[r]}),Dde=zn&&zn.__setModuleDefault||(Object.create?function(t,e){Object.defineProperty(t,"default",{enumerable:!0,value:e})}:function(t,e){t.default=e}),kde=zn&&zn.__importStar||function(t){if(t&&t.__esModule)return t;var e={};if(t!=null)for(var r in t)r!=="default"&&Object.hasOwnProperty.call(t,r)&&Tde(e,t,r);return Dde(e,t),e},AO=zn&&zn.__awaiter||function(t,e,r,n){function i(s){return s instanceof r?s:new r(function(a){a(s)})}return new(r||(r=Promise))(function(s,a){function o(c){try{l(n.next(c))}catch(d){a(d)}}function A(c){try{l(n.throw(c))}catch(d){a(d)}}function l(c){c.done?s(c.value):i(c.value).then(o,A)}l((n=n.apply(t,e||[])).next())})};Object.defineProperty(zn,"__esModule",{value:!0});zn.getExecOutput=zn.exec=void 0;var aO=require("string_decoder"),oO=kde(sO());function lO(t,e,r){return AO(this,void 0,void 0,function*(){let n=oO.argStringToArray(t);if(n.length===0)throw new Error("Parameter 'commandLine' cannot be null or empty.");let i=n[0];return e=n.slice(1).concat(e||[]),new oO.ToolRunner(i,e,r).exec()})}zn.exec=lO;function Pde(t,e,r){var n,i;return AO(this,void 0,void 0,function*(){let s="",a="",o=new aO.StringDecoder("utf8"),A=new aO.StringDecoder("utf8"),l=(n=r?.listeners)===null||n===void 0?void 0:n.stdout,c=(i=r?.listeners)===null||i===void 0?void 0:i.stderr,d=h=>{a+=A.write(h),c&&c(h)},p=h=>{s+=o.write(h),l&&l(h)},u=Object.assign(Object.assign({},r?.listeners),{stdout:p,stderr:d}),m=yield lO(t,e,Object.assign(Object.assign({},r),{listeners:u}));return s+=o.end(),a+=A.end(),{exitCode:m,stdout:s,stderr:a}})}zn.getExecOutput=Pde});var pO=g(Ue=>{"use strict";var _de=Ue&&Ue.__createBinding||(Object.create?function(t,e,r,n){n===void 0&&(n=r);var i=Object.getOwnPropertyDescriptor(e,r);(!i||("get"in i?!e.__esModule:i.writable||i.configurable))&&(i={enumerable:!0,get:function(){return e[r]}}),Object.defineProperty(t,n,i)}:function(t,e,r,n){n===void 0&&(n=r),t[n]=e[r]}),Mde=Ue&&Ue.__setModuleDefault||(Object.create?function(t,e){Object.defineProperty(t,"default",{enumerable:!0,value:e})}:function(t,e){t.default=e}),Ode=Ue&&Ue.__importStar||function(t){if(t&&t.__esModule)return t;var e={};if(t!=null)for(var r in t)r!=="default"&&Object.prototype.hasOwnProperty.call(t,r)&&_de(e,t,r);return Mde(e,t),e},yE=Ue&&Ue.__awaiter||function(t,e,r,n){function i(s){return s instanceof r?s:new r(function(a){a(s)})}return new(r||(r=Promise))(function(s,a){function o(c){try{l(n.next(c))}catch(d){a(d)}}function A(c){try{l(n.throw(c))}catch(d){a(d)}}function l(c){c.done?s(c.value):i(c.value).then(o,A)}l((n=n.apply(t,e||[])).next())})},xde=Ue&&Ue.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(Ue,"__esModule",{value:!0});Ue.getDetails=Ue.isLinux=Ue.isMacOS=Ue.isWindows=Ue.arch=Ue.platform=void 0;var dO=xde(require("os")),EE=Ode(cO()),Lde=()=>yE(void 0,void 0,void 0,function*(){let{stdout:t}=yield EE.getExecOutput('powershell -command "(Get-CimInstance -ClassName Win32_OperatingSystem).Version"',void 0,{silent:!0}),{stdout:e}=yield EE.getExecOutput('powershell -command "(Get-CimInstance -ClassName Win32_OperatingSystem).Caption"',void 0,{silent:!0});return{name:e.trim(),version:t.trim()}}),Fde=()=>yE(void 0,void 0,void 0,function*(){var t,e,r,n;let{stdout:i}=yield EE.getExecOutput("sw_vers",void 0,{silent:!0}),s=(e=(t=i.match(/ProductVersion:\s*(.+)/))===null||t===void 0?void 0:t[1])!==null&&e!==void 0?e:"";return{name:(n=(r=i.match(/ProductName:\s*(.+)/))===null||r===void 0?void 0:r[1])!==null&&n!==void 0?n:"",version:s}}),Ude=()=>yE(void 0,void 0,void 0,function*(){let{stdout:t}=yield EE.getExecOutput("lsb_release",["-i","-r","-s"],{silent:!0}),[e,r]=t.trim().split(` -`);return{name:e,version:r}});Ue.platform=dO.default.platform();Ue.arch=dO.default.arch();Ue.isWindows=Ue.platform==="win32";Ue.isMacOS=Ue.platform==="darwin";Ue.isLinux=Ue.platform==="linux";function qde(){return yE(this,void 0,void 0,function*(){return Object.assign(Object.assign({},yield Ue.isWindows?Lde():Ue.isMacOS?Fde():Ude()),{platform:Ue.platform,arch:Ue.arch,isWindows:Ue.isWindows,isMacOS:Ue.isMacOS,isLinux:Ue.isLinux})})}Ue.getDetails=qde});var Rl=g(K=>{"use strict";var Vde=K&&K.__createBinding||(Object.create?function(t,e,r,n){n===void 0&&(n=r);var i=Object.getOwnPropertyDescriptor(e,r);(!i||("get"in i?!e.__esModule:i.writable||i.configurable))&&(i={enumerable:!0,get:function(){return e[r]}}),Object.defineProperty(t,n,i)}:function(t,e,r,n){n===void 0&&(n=r),t[n]=e[r]}),Gde=K&&K.__setModuleDefault||(Object.create?function(t,e){Object.defineProperty(t,"default",{enumerable:!0,value:e})}:function(t,e){t.default=e}),r3=K&&K.__importStar||function(t){if(t&&t.__esModule)return t;var e={};if(t!=null)for(var r in t)r!=="default"&&Object.prototype.hasOwnProperty.call(t,r)&&Vde(e,t,r);return Gde(e,t),e},uO=K&&K.__awaiter||function(t,e,r,n){function i(s){return s instanceof r?s:new r(function(a){a(s)})}return new(r||(r=Promise))(function(s,a){function o(c){try{l(n.next(c))}catch(d){a(d)}}function A(c){try{l(n.throw(c))}catch(d){a(d)}}function l(c){c.done?s(c.value):i(c.value).then(o,A)}l((n=n.apply(t,e||[])).next())})};Object.defineProperty(K,"__esModule",{value:!0});K.platform=K.toPlatformPath=K.toWin32Path=K.toPosixPath=K.markdownSummary=K.summary=K.getIDToken=K.getState=K.saveState=K.group=K.endGroup=K.startGroup=K.info=K.notice=K.warning=K.error=K.debug=K.isDebug=K.setFailed=K.setCommandEcho=K.setOutput=K.getBooleanInput=K.getMultilineInput=K.getInput=K.addPath=K.setSecret=K.exportVariable=K.ExitCode=void 0;var Ki=qR(),Nl=HR(),np=yg(),mO=r3(require("os")),Hde=r3(require("path")),Yde=GM(),t3;(function(t){t[t.Success=0]="Success",t[t.Failure=1]="Failure"})(t3||(K.ExitCode=t3={}));function Jde(t,e){let r=(0,np.toCommandValue)(e);if(process.env[t]=r,process.env.GITHUB_ENV||"")return(0,Nl.issueFileCommand)("ENV",(0,Nl.prepareKeyValueMessage)(t,e));(0,Ki.issueCommand)("set-env",{name:t},r)}K.exportVariable=Jde;function jde(t){(0,Ki.issueCommand)("add-mask",{},t)}K.setSecret=jde;function zde(t){process.env.GITHUB_PATH||""?(0,Nl.issueFileCommand)("PATH",t):(0,Ki.issueCommand)("add-path",{},t),process.env.PATH=`${t}${Hde.delimiter}${process.env.PATH}`}K.addPath=zde;function n3(t,e){let r=process.env[`INPUT_${t.replace(/ /g,"_").toUpperCase()}`]||"";if(e&&e.required&&!r)throw new Error(`Input required and not supplied: ${t}`);return e&&e.trimWhitespace===!1?r:r.trim()}K.getInput=n3;function Wde(t,e){let r=n3(t,e).split(` -`).filter(n=>n!=="");return e&&e.trimWhitespace===!1?r:r.map(n=>n.trim())}K.getMultilineInput=Wde;function $de(t,e){let r=["true","True","TRUE"],n=["false","False","FALSE"],i=n3(t,e);if(r.includes(i))return!0;if(n.includes(i))return!1;throw new TypeError(`Input does not meet YAML 1.2 "Core Schema" specification: ${t} -Support boolean input list: \`true | True | TRUE | false | False | FALSE\``)}K.getBooleanInput=$de;function Kde(t,e){if(process.env.GITHUB_OUTPUT||"")return(0,Nl.issueFileCommand)("OUTPUT",(0,Nl.prepareKeyValueMessage)(t,e));process.stdout.write(mO.EOL),(0,Ki.issueCommand)("set-output",{name:t},(0,np.toCommandValue)(e))}K.setOutput=Kde;function Xde(t){(0,Ki.issue)("echo",t?"on":"off")}K.setCommandEcho=Xde;function Zde(t){process.exitCode=t3.Failure,hO(t)}K.setFailed=Zde;function epe(){return process.env.RUNNER_DEBUG==="1"}K.isDebug=epe;function tpe(t){(0,Ki.issueCommand)("debug",{},t)}K.debug=tpe;function hO(t,e={}){(0,Ki.issueCommand)("error",(0,np.toCommandProperties)(e),t instanceof Error?t.toString():t)}K.error=hO;function rpe(t,e={}){(0,Ki.issueCommand)("warning",(0,np.toCommandProperties)(e),t instanceof Error?t.toString():t)}K.warning=rpe;function npe(t,e={}){(0,Ki.issueCommand)("notice",(0,np.toCommandProperties)(e),t instanceof Error?t.toString():t)}K.notice=npe;function ipe(t){process.stdout.write(t+mO.EOL)}K.info=ipe;function fO(t){(0,Ki.issue)("group",t)}K.startGroup=fO;function gO(){(0,Ki.issue)("endgroup")}K.endGroup=gO;function spe(t,e){return uO(this,void 0,void 0,function*(){fO(t);let r;try{r=yield e()}finally{gO()}return r})}K.group=spe;function ape(t,e){if(process.env.GITHUB_STATE||"")return(0,Nl.issueFileCommand)("STATE",(0,Nl.prepareKeyValueMessage)(t,e));(0,Ki.issueCommand)("save-state",{name:t},(0,np.toCommandValue)(e))}K.saveState=ape;function ope(t){return process.env[`STATE_${t}`]||""}K.getState=ope;function Ape(t){return uO(this,void 0,void 0,function*(){return yield Yde.OidcClient.getIDToken(t)})}K.getIDToken=Ape;var lpe=W9();Object.defineProperty(K,"summary",{enumerable:!0,get:function(){return lpe.summary}});var cpe=W9();Object.defineProperty(K,"markdownSummary",{enumerable:!0,get:function(){return cpe.markdownSummary}});var i3=YM();Object.defineProperty(K,"toPosixPath",{enumerable:!0,get:function(){return i3.toPosixPath}});Object.defineProperty(K,"toWin32Path",{enumerable:!0,get:function(){return i3.toWin32Path}});Object.defineProperty(K,"toPlatformPath",{enumerable:!0,get:function(){return i3.toPlatformPath}});K.platform=r3(pO())});var qe=g(Yr=>{"use strict";var s3=Symbol.for("yaml.alias"),EO=Symbol.for("yaml.document"),CE=Symbol.for("yaml.map"),yO=Symbol.for("yaml.pair"),a3=Symbol.for("yaml.scalar"),IE=Symbol.for("yaml.seq"),Za=Symbol.for("yaml.node.type"),dpe=t=>!!t&&typeof t=="object"&&t[Za]===s3,ppe=t=>!!t&&typeof t=="object"&&t[Za]===EO,upe=t=>!!t&&typeof t=="object"&&t[Za]===CE,mpe=t=>!!t&&typeof t=="object"&&t[Za]===yO,CO=t=>!!t&&typeof t=="object"&&t[Za]===a3,hpe=t=>!!t&&typeof t=="object"&&t[Za]===IE;function IO(t){if(t&&typeof t=="object")switch(t[Za]){case CE:case IE:return!0}return!1}function fpe(t){if(t&&typeof t=="object")switch(t[Za]){case s3:case CE:case a3:case IE:return!0}return!1}var gpe=t=>(CO(t)||IO(t))&&!!t.anchor;Yr.ALIAS=s3;Yr.DOC=EO;Yr.MAP=CE;Yr.NODE_TYPE=Za;Yr.PAIR=yO;Yr.SCALAR=a3;Yr.SEQ=IE;Yr.hasAnchor=gpe;Yr.isAlias=dpe;Yr.isCollection=IO;Yr.isDocument=ppe;Yr.isMap=upe;Yr.isNode=fpe;Yr.isPair=mpe;Yr.isScalar=CO;Yr.isSeq=hpe});var ch=g(o3=>{"use strict";var Ir=qe(),Wn=Symbol("break visit"),BO=Symbol("skip children"),ia=Symbol("remove node");function BE(t,e){let r=QO(e);Ir.isDocument(t)?ip(null,t.contents,r,Object.freeze([t]))===ia&&(t.contents=null):ip(null,t,r,Object.freeze([]))}BE.BREAK=Wn;BE.SKIP=BO;BE.REMOVE=ia;function ip(t,e,r,n){let i=wO(t,e,r,n);if(Ir.isNode(i)||Ir.isPair(i))return SO(t,n,i),ip(t,i,r,n);if(typeof i!="symbol"){if(Ir.isCollection(e)){n=Object.freeze(n.concat(e));for(let s=0;s{"use strict";var bO=qe(),Epe=ch(),ype={"!":"%21",",":"%2C","[":"%5B","]":"%5D","{":"%7B","}":"%7D"},Cpe=t=>t.replace(/[!,[\]{}]/g,e=>ype[e]),dh=class t{constructor(e,r){this.docStart=null,this.docEnd=!1,this.yaml=Object.assign({},t.defaultYaml,e),this.tags=Object.assign({},t.defaultTags,r)}clone(){let e=new t(this.yaml,this.tags);return e.docStart=this.docStart,e}atDocument(){let e=new t(this.yaml,this.tags);switch(this.yaml.version){case"1.1":this.atNextDocument=!0;break;case"1.2":this.atNextDocument=!1,this.yaml={explicit:t.defaultYaml.explicit,version:"1.2"},this.tags=Object.assign({},t.defaultTags);break}return e}add(e,r){this.atNextDocument&&(this.yaml={explicit:t.defaultYaml.explicit,version:"1.1"},this.tags=Object.assign({},t.defaultTags),this.atNextDocument=!1);let n=e.trim().split(/[ \t]+/),i=n.shift();switch(i){case"%TAG":{if(n.length!==2&&(r(0,"%TAG directive should contain exactly two parts"),n.length<2))return!1;let[s,a]=n;return this.tags[s]=a,!0}case"%YAML":{if(this.yaml.explicit=!0,n.length!==1)return r(0,"%YAML directive should contain exactly one part"),!1;let[s]=n;if(s==="1.1"||s==="1.2")return this.yaml.version=s,!0;{let a=/^\d+\.\d+$/.test(s);return r(6,`Unsupported YAML version ${s}`,a),!1}}default:return r(0,`Unknown directive ${i}`,!0),!1}}tagName(e,r){if(e==="!")return"!";if(e[0]!=="!")return r(`Not a valid tag: ${e}`),null;if(e[1]==="<"){let a=e.slice(2,-1);return a==="!"||a==="!!"?(r(`Verbatim tags aren't resolved, so ${e} is invalid.`),null):(e[e.length-1]!==">"&&r("Verbatim tags must end with a >"),a)}let[,n,i]=e.match(/^(.*!)([^!]*)$/s);i||r(`The ${e} tag has no suffix`);let s=this.tags[n];if(s)try{return s+decodeURIComponent(i)}catch(a){return r(String(a)),null}return n==="!"?e:(r(`Could not resolve tag: ${e}`),null)}tagString(e){for(let[r,n]of Object.entries(this.tags))if(e.startsWith(n))return r+Cpe(e.substring(n.length));return e[0]==="!"?e:`!<${e}>`}toString(e){let r=this.yaml.explicit?[`%YAML ${this.yaml.version||"1.2"}`]:[],n=Object.entries(this.tags),i;if(e&&n.length>0&&bO.isNode(e.contents)){let s={};Epe.visit(e.contents,(a,o)=>{bO.isNode(o)&&o.tag&&(s[o.tag]=!0)}),i=Object.keys(s)}else i=[];for(let[s,a]of n)s==="!!"&&a==="tag:yaml.org,2002:"||(!e||i.some(o=>o.startsWith(a)))&&r.push(`%TAG ${s} ${a}`);return r.join(` -`)}};dh.defaultYaml={explicit:!1,version:"1.2"};dh.defaultTags={"!!":"tag:yaml.org,2002:"};vO.Directives=dh});var wE=g(ph=>{"use strict";var RO=qe(),Ipe=ch();function Bpe(t){if(/[\x00-\x19\s,[\]{}]/.test(t)){let r=`Anchor must not contain whitespace or control characters: ${JSON.stringify(t)}`;throw new Error(r)}return!0}function NO(t){let e=new Set;return Ipe.visit(t,{Value(r,n){n.anchor&&e.add(n.anchor)}}),e}function TO(t,e){for(let r=1;;++r){let n=`${t}${r}`;if(!e.has(n))return n}}function Qpe(t,e){let r=[],n=new Map,i=null;return{onAnchor:s=>{r.push(s),i||(i=NO(t));let a=TO(e,i);return i.add(a),a},setAnchors:()=>{for(let s of r){let a=n.get(s);if(typeof a=="object"&&a.anchor&&(RO.isScalar(a.node)||RO.isCollection(a.node)))a.node.anchor=a.anchor;else{let o=new Error("Failed to resolve repeated object (this should not happen)");throw o.source=s,o}}},sourceObjects:n}}ph.anchorIsValid=Bpe;ph.anchorNames=NO;ph.createNodeAnchors=Qpe;ph.findNewAnchor=TO});var l3=g(DO=>{"use strict";function uh(t,e,r,n){if(n&&typeof n=="object")if(Array.isArray(n))for(let i=0,s=n.length;i{"use strict";var wpe=qe();function kO(t,e,r){if(Array.isArray(t))return t.map((n,i)=>kO(n,String(i),r));if(t&&typeof t.toJSON=="function"){if(!r||!wpe.hasAnchor(t))return t.toJSON(e,r);let n={aliasCount:0,count:1,res:void 0};r.anchors.set(t,n),r.onCreate=s=>{n.res=s,delete r.onCreate};let i=t.toJSON(e,r);return r.onCreate&&r.onCreate(i),i}return typeof t=="bigint"&&!r?.keep?Number(t):t}PO.toJS=kO});var SE=g(MO=>{"use strict";var Spe=l3(),_O=qe(),bpe=eA(),c3=class{constructor(e){Object.defineProperty(this,_O.NODE_TYPE,{value:e})}clone(){let e=Object.create(Object.getPrototypeOf(this),Object.getOwnPropertyDescriptors(this));return this.range&&(e.range=this.range.slice()),e}toJS(e,{mapAsMap:r,maxAliasCount:n,onAnchor:i,reviver:s}={}){if(!_O.isDocument(e))throw new TypeError("A document argument is required");let a={anchors:new Map,doc:e,keep:!0,mapAsMap:r===!0,mapKeyWarned:!1,maxAliasCount:typeof n=="number"?n:100},o=bpe.toJS(this,"",a);if(typeof i=="function")for(let{count:A,res:l}of a.anchors.values())i(l,A);return typeof s=="function"?Spe.applyReviver(s,{"":o},"",o):o}};MO.NodeBase=c3});var mh=g(xO=>{"use strict";var vpe=wE(),OO=ch(),bE=qe(),Rpe=SE(),Npe=eA(),d3=class extends Rpe.NodeBase{constructor(e){super(bE.ALIAS),this.source=e,Object.defineProperty(this,"tag",{set(){throw new Error("Alias nodes cannot have tags")}})}resolve(e){let r;return OO.visit(e,{Node:(n,i)=>{if(i===this)return OO.visit.BREAK;i.anchor===this.source&&(r=i)}}),r}toJSON(e,r){if(!r)return{source:this.source};let{anchors:n,doc:i,maxAliasCount:s}=r,a=this.resolve(i);if(!a){let A=`Unresolved alias (the anchor must be set before the alias): ${this.source}`;throw new ReferenceError(A)}let o=n.get(a);if(o||(Npe.toJS(a,null,r),o=n.get(a)),!o||o.res===void 0){let A="This should not happen: Alias anchor was not resolved?";throw new ReferenceError(A)}if(s>=0&&(o.count+=1,o.aliasCount===0&&(o.aliasCount=vE(i,a,n)),o.count*o.aliasCount>s)){let A="Excessive alias count indicates a resource exhaustion attack";throw new ReferenceError(A)}return o.res}toString(e,r,n){let i=`*${this.source}`;if(e){if(vpe.anchorIsValid(this.source),e.options.verifyAliasOrder&&!e.anchors.has(this.source)){let s=`Unresolved alias (the anchor must be set before the alias): ${this.source}`;throw new Error(s)}if(e.implicitKey)return`${i} `}return i}};function vE(t,e,r){if(bE.isAlias(e)){let n=e.resolve(t),i=r&&n&&r.get(n);return i?i.count*i.aliasCount:0}else if(bE.isCollection(e)){let n=0;for(let i of e.items){let s=vE(t,i,r);s>n&&(n=s)}return n}else if(bE.isPair(e)){let n=vE(t,e.key,r),i=vE(t,e.value,r);return Math.max(n,i)}return 1}xO.Alias=d3});var ur=g(p3=>{"use strict";var Tpe=qe(),Dpe=SE(),kpe=eA(),Ppe=t=>!t||typeof t!="function"&&typeof t!="object",tA=class extends Dpe.NodeBase{constructor(e){super(Tpe.SCALAR),this.value=e}toJSON(e,r){return r?.keep?this.value:kpe.toJS(this.value,e,r)}toString(){return String(this.value)}};tA.BLOCK_FOLDED="BLOCK_FOLDED";tA.BLOCK_LITERAL="BLOCK_LITERAL";tA.PLAIN="PLAIN";tA.QUOTE_DOUBLE="QUOTE_DOUBLE";tA.QUOTE_SINGLE="QUOTE_SINGLE";p3.Scalar=tA;p3.isScalarValue=Ppe});var hh=g(FO=>{"use strict";var _pe=mh(),Tl=qe(),LO=ur(),Mpe="tag:yaml.org,2002:";function Ope(t,e,r){if(e){let n=r.filter(s=>s.tag===e),i=n.find(s=>!s.format)??n[0];if(!i)throw new Error(`Tag ${e} not found`);return i}return r.find(n=>n.identify?.(t)&&!n.format)}function xpe(t,e,r){if(Tl.isDocument(t)&&(t=t.contents),Tl.isNode(t))return t;if(Tl.isPair(t)){let d=r.schema[Tl.MAP].createNode?.(r.schema,null,r);return d.items.push(t),d}(t instanceof String||t instanceof Number||t instanceof Boolean||typeof BigInt<"u"&&t instanceof BigInt)&&(t=t.valueOf());let{aliasDuplicateObjects:n,onAnchor:i,onTagObj:s,schema:a,sourceObjects:o}=r,A;if(n&&t&&typeof t=="object"){if(A=o.get(t),A)return A.anchor||(A.anchor=i(t)),new _pe.Alias(A.anchor);A={anchor:null,node:null},o.set(t,A)}e?.startsWith("!!")&&(e=Mpe+e.slice(2));let l=Ope(t,e,a.tags);if(!l){if(t&&typeof t.toJSON=="function"&&(t=t.toJSON()),!t||typeof t!="object"){let d=new LO.Scalar(t);return A&&(A.node=d),d}l=t instanceof Map?a[Tl.MAP]:Symbol.iterator in Object(t)?a[Tl.SEQ]:a[Tl.MAP]}s&&(s(l),delete r.onTagObj);let c=l?.createNode?l.createNode(r.schema,t,r):typeof l?.nodeClass?.from=="function"?l.nodeClass.from(r.schema,t,r):new LO.Scalar(t);return e?c.tag=e:l.default||(c.tag=l.tag),A&&(A.node=c),c}FO.createNode=xpe});var NE=g(RE=>{"use strict";var Lpe=hh(),sa=qe(),Fpe=SE();function u3(t,e,r){let n=r;for(let i=e.length-1;i>=0;--i){let s=e[i];if(typeof s=="number"&&Number.isInteger(s)&&s>=0){let a=[];a[s]=n,n=a}else n=new Map([[s,n]])}return Lpe.createNode(n,void 0,{aliasDuplicateObjects:!1,keepUndefined:!1,onAnchor:()=>{throw new Error("This should not happen, please report a bug.")},schema:t,sourceObjects:new Map})}var UO=t=>t==null||typeof t=="object"&&!!t[Symbol.iterator]().next().done,m3=class extends Fpe.NodeBase{constructor(e,r){super(e),Object.defineProperty(this,"schema",{value:r,configurable:!0,enumerable:!1,writable:!0})}clone(e){let r=Object.create(Object.getPrototypeOf(this),Object.getOwnPropertyDescriptors(this));return e&&(r.schema=e),r.items=r.items.map(n=>sa.isNode(n)||sa.isPair(n)?n.clone(e):n),this.range&&(r.range=this.range.slice()),r}addIn(e,r){if(UO(e))this.add(r);else{let[n,...i]=e,s=this.get(n,!0);if(sa.isCollection(s))s.addIn(i,r);else if(s===void 0&&this.schema)this.set(n,u3(this.schema,i,r));else throw new Error(`Expected YAML collection at ${n}. Remaining path: ${i}`)}}deleteIn(e){let[r,...n]=e;if(n.length===0)return this.delete(r);let i=this.get(r,!0);if(sa.isCollection(i))return i.deleteIn(n);throw new Error(`Expected YAML collection at ${r}. Remaining path: ${n}`)}getIn(e,r){let[n,...i]=e,s=this.get(n,!0);return i.length===0?!r&&sa.isScalar(s)?s.value:s:sa.isCollection(s)?s.getIn(i,r):void 0}hasAllNullValues(e){return this.items.every(r=>{if(!sa.isPair(r))return!1;let n=r.value;return n==null||e&&sa.isScalar(n)&&n.value==null&&!n.commentBefore&&!n.comment&&!n.tag})}hasIn(e){let[r,...n]=e;if(n.length===0)return this.has(r);let i=this.get(r,!0);return sa.isCollection(i)?i.hasIn(n):!1}setIn(e,r){let[n,...i]=e;if(i.length===0)this.set(n,r);else{let s=this.get(n,!0);if(sa.isCollection(s))s.setIn(i,r);else if(s===void 0&&this.schema)this.set(n,u3(this.schema,i,r));else throw new Error(`Expected YAML collection at ${n}. Remaining path: ${i}`)}}};RE.Collection=m3;RE.collectionFromPath=u3;RE.isEmptyPath=UO});var fh=g(TE=>{"use strict";var Upe=t=>t.replace(/^(?!$)(?: $)?/gm,"#");function h3(t,e){return/^\n+$/.test(t)?t.substring(1):e?t.replace(/^(?! *$)/gm,e):t}var qpe=(t,e,r)=>t.endsWith(` -`)?h3(r,e):r.includes(` -`)?` -`+h3(r,e):(t.endsWith(" ")?"":" ")+r;TE.indentComment=h3;TE.lineComment=qpe;TE.stringifyComment=Upe});var VO=g(gh=>{"use strict";var Vpe="flow",f3="block",DE="quoted";function Gpe(t,e,r="flow",{indentAtStart:n,lineWidth:i=80,minContentWidth:s=20,onFold:a,onOverflow:o}={}){if(!i||i<0)return t;ii-Math.max(2,s)?l.push(0):d=i-n);let p,u,m=!1,h=-1,f=-1,E=-1;r===f3&&(h=qO(t,h,e.length),h!==-1&&(d=h+A));for(let B;B=t[h+=1];){if(r===DE&&B==="\\"){switch(f=h,t[h+1]){case"x":h+=3;break;case"u":h+=5;break;case"U":h+=9;break;default:h+=1}E=h}if(B===` -`)r===f3&&(h=qO(t,h,e.length)),d=h+e.length+A,p=void 0;else{if(B===" "&&u&&u!==" "&&u!==` -`&&u!==" "){let Q=t[h+1];Q&&Q!==" "&&Q!==` -`&&Q!==" "&&(p=h)}if(h>=d)if(p)l.push(p),d=p+A,p=void 0;else if(r===DE){for(;u===" "||u===" ";)u=B,B=t[h+=1],m=!0;let Q=h>E+1?h-2:f-1;if(c[Q])return t;l.push(Q),c[Q]=!0,d=Q+A,p=void 0}else m=!0}u=B}if(m&&o&&o(),l.length===0)return t;a&&a();let y=t.slice(0,l[0]);for(let B=0;B{"use strict";var Ss=ur(),rA=VO(),PE=(t,e)=>({indentAtStart:e?t.indent.length:t.indentAtStart,lineWidth:t.options.lineWidth,minContentWidth:t.options.minContentWidth}),_E=t=>/^(%|---|\.\.\.)/m.test(t);function Hpe(t,e,r){if(!e||e<0)return!1;let n=e-r,i=t.length;if(i<=n)return!1;for(let s=0,a=0;sn)return!0;if(a=s+1,i-a<=n)return!1}return!0}function Eh(t,e){let r=JSON.stringify(t);if(e.options.doubleQuotedAsJSON)return r;let{implicitKey:n}=e,i=e.options.doubleQuotedMinMultiLineLength,s=e.indent||(_E(t)?" ":""),a="",o=0;for(let A=0,l=r[A];l;l=r[++A])if(l===" "&&r[A+1]==="\\"&&r[A+2]==="n"&&(a+=r.slice(o,A)+"\\ ",A+=1,o=A,l="\\"),l==="\\")switch(r[A+1]){case"u":{a+=r.slice(o,A);let c=r.substr(A+2,4);switch(c){case"0000":a+="\\0";break;case"0007":a+="\\a";break;case"000b":a+="\\v";break;case"001b":a+="\\e";break;case"0085":a+="\\N";break;case"00a0":a+="\\_";break;case"2028":a+="\\L";break;case"2029":a+="\\P";break;default:c.substr(0,2)==="00"?a+="\\x"+c.substr(2):a+=r.substr(A,6)}A+=5,o=A+1}break;case"n":if(n||r[A+2]==='"'||r.length -`;let d,p;for(p=r.length;p>0;--p){let C=r[p-1];if(C!==` -`&&C!==" "&&C!==" ")break}let u=r.substring(p),m=u.indexOf(` -`);m===-1?d="-":r===u||m!==u.length-1?(d="+",s&&s()):d="",u&&(r=r.slice(0,-u.length),u[u.length-1]===` -`&&(u=u.slice(0,-1)),u=u.replace(E3,`$&${l}`));let h=!1,f,E=-1;for(f=0;f{w=!0});let v=rA.foldFlowLines(`${y}${C}${u}`,l,rA.FOLD_BLOCK,b);if(!w)return`>${Q} -${l}${v}`}return r=r.replace(/\n+/g,`$&${l}`),`|${Q} -${l}${y}${r}${u}`}function Ype(t,e,r,n){let{type:i,value:s}=t,{actualString:a,implicitKey:o,indent:A,indentStep:l,inFlow:c}=e;if(o&&s.includes(` -`)||c&&/[[\]{},]/.test(s))return ap(s,e);if(!s||/^[\n\t ,[\]{}#&*!|>'"%@`]|^[?-]$|^[?-][ \t]|[\n:][ \t]|[ \t]\n|[\n\t ]#|[\n\t :]$/.test(s))return o||c||!s.includes(` -`)?ap(s,e):kE(t,e,r,n);if(!o&&!c&&i!==Ss.Scalar.PLAIN&&s.includes(` -`))return kE(t,e,r,n);if(_E(s)){if(A==="")return e.forceBlockIndent=!0,kE(t,e,r,n);if(o&&A===l)return ap(s,e)}let d=s.replace(/\n+/g,`$& -${A}`);if(a){let p=h=>h.default&&h.tag!=="tag:yaml.org,2002:str"&&h.test?.test(d),{compat:u,tags:m}=e.doc.schema;if(m.some(p)||u?.some(p))return ap(s,e)}return o?d:rA.foldFlowLines(d,A,rA.FOLD_FLOW,PE(e,!1))}function Jpe(t,e,r,n){let{implicitKey:i,inFlow:s}=e,a=typeof t.value=="string"?t:Object.assign({},t,{value:String(t.value)}),{type:o}=t;o!==Ss.Scalar.QUOTE_DOUBLE&&/[\x00-\x08\x0b-\x1f\x7f-\x9f\u{D800}-\u{DFFF}]/u.test(a.value)&&(o=Ss.Scalar.QUOTE_DOUBLE);let A=c=>{switch(c){case Ss.Scalar.BLOCK_FOLDED:case Ss.Scalar.BLOCK_LITERAL:return i||s?ap(a.value,e):kE(a,e,r,n);case Ss.Scalar.QUOTE_DOUBLE:return Eh(a.value,e);case Ss.Scalar.QUOTE_SINGLE:return g3(a.value,e);case Ss.Scalar.PLAIN:return Ype(a,e,r,n);default:return null}},l=A(o);if(l===null){let{defaultKeyType:c,defaultStringType:d}=e.options,p=i&&c||d;if(l=A(p),l===null)throw new Error(`Unsupported default string type ${p}`)}return l}GO.stringifyString=Jpe});var Ch=g(y3=>{"use strict";var jpe=wE(),nA=qe(),zpe=fh(),Wpe=yh();function $pe(t,e){let r=Object.assign({blockQuote:!0,commentString:zpe.stringifyComment,defaultKeyType:null,defaultStringType:"PLAIN",directives:null,doubleQuotedAsJSON:!1,doubleQuotedMinMultiLineLength:40,falseStr:"false",flowCollectionPadding:!0,indentSeq:!0,lineWidth:80,minContentWidth:20,nullStr:"null",simpleKeys:!1,singleQuote:null,trueStr:"true",verifyAliasOrder:!0},t.schema.toStringOptions,e),n;switch(r.collectionStyle){case"block":n=!1;break;case"flow":n=!0;break;default:n=null}return{anchors:new Set,doc:t,flowCollectionPadding:r.flowCollectionPadding?" ":"",indent:"",indentStep:typeof r.indent=="number"?" ".repeat(r.indent):" ",inFlow:n,options:r}}function Kpe(t,e){if(e.tag){let i=t.filter(s=>s.tag===e.tag);if(i.length>0)return i.find(s=>s.format===e.format)??i[0]}let r,n;if(nA.isScalar(e)){n=e.value;let i=t.filter(s=>s.identify?.(n));if(i.length>1){let s=i.filter(a=>a.test);s.length>0&&(i=s)}r=i.find(s=>s.format===e.format)??i.find(s=>!s.format)}else n=e,r=t.find(i=>i.nodeClass&&n instanceof i.nodeClass);if(!r){let i=n?.constructor?.name??typeof n;throw new Error(`Tag not resolved for ${i} value`)}return r}function Xpe(t,e,{anchors:r,doc:n}){if(!n.directives)return"";let i=[],s=(nA.isScalar(t)||nA.isCollection(t))&&t.anchor;s&&jpe.anchorIsValid(s)&&(r.add(s),i.push(`&${s}`));let a=t.tag?t.tag:e.default?null:e.tag;return a&&i.push(n.directives.tagString(a)),i.join(" ")}function Zpe(t,e,r,n){if(nA.isPair(t))return t.toString(e,r,n);if(nA.isAlias(t)){if(e.doc.directives)return t.toString(e);if(e.resolvedAliases?.has(t))throw new TypeError("Cannot stringify circular structure without alias nodes");e.resolvedAliases?e.resolvedAliases.add(t):e.resolvedAliases=new Set([t]),t=t.resolve(e.doc)}let i,s=nA.isNode(t)?t:e.doc.createNode(t,{onTagObj:A=>i=A});i||(i=Kpe(e.doc.schema.tags,s));let a=Xpe(s,i,e);a.length>0&&(e.indentAtStart=(e.indentAtStart??0)+a.length+1);let o=typeof i.stringify=="function"?i.stringify(s,e,r,n):nA.isScalar(s)?Wpe.stringifyString(s,e,r,n):s.toString(e,r,n);return a?nA.isScalar(s)||o[0]==="{"||o[0]==="["?`${a} ${o}`:`${a} -${e.indent}${o}`:o}y3.createStringifyContext=$pe;y3.stringify=Zpe});var jO=g(JO=>{"use strict";var eo=qe(),HO=ur(),YO=Ch(),Ih=fh();function eue({key:t,value:e},r,n,i){let{allNullValues:s,doc:a,indent:o,indentStep:A,options:{commentString:l,indentSeq:c,simpleKeys:d}}=r,p=eo.isNode(t)&&t.comment||null;if(d){if(p)throw new Error("With simple keys, key nodes cannot have comments");if(eo.isCollection(t)||!eo.isNode(t)&&typeof t=="object"){let b="With simple keys, collection cannot be used as a key value";throw new Error(b)}}let u=!d&&(!t||p&&e==null&&!r.inFlow||eo.isCollection(t)||(eo.isScalar(t)?t.type===HO.Scalar.BLOCK_FOLDED||t.type===HO.Scalar.BLOCK_LITERAL:typeof t=="object"));r=Object.assign({},r,{allNullValues:!1,implicitKey:!u&&(d||!s),indent:o+A});let m=!1,h=!1,f=YO.stringify(t,r,()=>m=!0,()=>h=!0);if(!u&&!r.inFlow&&f.length>1024){if(d)throw new Error("With simple keys, single line scalar must not span more than 1024 characters");u=!0}if(r.inFlow){if(s||e==null)return m&&n&&n(),f===""?"?":u?`? ${f}`:f}else if(s&&!d||e==null&&u)return f=`? ${f}`,p&&!m?f+=Ih.lineComment(f,r.indent,l(p)):h&&i&&i(),f;m&&(p=null),u?(p&&(f+=Ih.lineComment(f,r.indent,l(p))),f=`? ${f} -${o}:`):(f=`${f}:`,p&&(f+=Ih.lineComment(f,r.indent,l(p))));let E,y,B;eo.isNode(e)?(E=!!e.spaceBefore,y=e.commentBefore,B=e.comment):(E=!1,y=null,B=null,e&&typeof e=="object"&&(e=a.createNode(e))),r.implicitKey=!1,!u&&!p&&eo.isScalar(e)&&(r.indentAtStart=f.length+1),h=!1,!c&&A.length>=2&&!r.inFlow&&!u&&eo.isSeq(e)&&!e.flow&&!e.tag&&!e.anchor&&(r.indent=r.indent.substring(2));let Q=!1,C=YO.stringify(e,r,()=>Q=!0,()=>h=!0),w=" ";if(p||E||y){if(w=E?` -`:"",y){let b=l(y);w+=` -${Ih.indentComment(b,r.indent)}`}C===""&&!r.inFlow?w===` -`&&(w=` - -`):w+=` -${r.indent}`}else if(!u&&eo.isCollection(e)){let b=C[0],v=C.indexOf(` -`),q=v!==-1,L=r.inFlow??e.flow??e.items.length===0;if(q||!L){let V=!1;if(q&&(b==="&"||b==="!")){let O=C.indexOf(" ");b==="&"&&O!==-1&&O{"use strict";var zO=require("node:process");function tue(t,...e){t==="debug"&&console.log(...e)}function rue(t,e){(t==="debug"||t==="warn")&&(typeof zO.emitWarning=="function"?zO.emitWarning(e):console.warn(e))}C3.debug=tue;C3.warn=rue});var LE=g(xE=>{"use strict";var Bh=qe(),WO=ur(),ME="<<",OE={identify:t=>t===ME||typeof t=="symbol"&&t.description===ME,default:"key",tag:"tag:yaml.org,2002:merge",test:/^<<$/,resolve:()=>Object.assign(new WO.Scalar(Symbol(ME)),{addToJSMap:$O}),stringify:()=>ME},nue=(t,e)=>(OE.identify(e)||Bh.isScalar(e)&&(!e.type||e.type===WO.Scalar.PLAIN)&&OE.identify(e.value))&&t?.doc.schema.tags.some(r=>r.tag===OE.tag&&r.default);function $O(t,e,r){if(r=t&&Bh.isAlias(r)?r.resolve(t.doc):r,Bh.isSeq(r))for(let n of r.items)B3(t,e,n);else if(Array.isArray(r))for(let n of r)B3(t,e,n);else B3(t,e,r)}function B3(t,e,r){let n=t&&Bh.isAlias(r)?r.resolve(t.doc):r;if(!Bh.isMap(n))throw new Error("Merge sources must be maps or map aliases");let i=n.toJSON(null,t,Map);for(let[s,a]of i)e instanceof Map?e.has(s)||e.set(s,a):e instanceof Set?e.add(s):Object.prototype.hasOwnProperty.call(e,s)||Object.defineProperty(e,s,{value:a,writable:!0,enumerable:!0,configurable:!0});return e}xE.addMergeToJSMap=$O;xE.isMergeKey=nue;xE.merge=OE});var w3=g(ZO=>{"use strict";var iue=I3(),KO=LE(),sue=Ch(),XO=qe(),Q3=eA();function aue(t,e,{key:r,value:n}){if(XO.isNode(r)&&r.addToJSMap)r.addToJSMap(t,e,n);else if(KO.isMergeKey(t,r))KO.addMergeToJSMap(t,e,n);else{let i=Q3.toJS(r,"",t);if(e instanceof Map)e.set(i,Q3.toJS(n,i,t));else if(e instanceof Set)e.add(i);else{let s=oue(r,i,t),a=Q3.toJS(n,s,t);s in e?Object.defineProperty(e,s,{value:a,writable:!0,enumerable:!0,configurable:!0}):e[s]=a}}return e}function oue(t,e,r){if(e===null)return"";if(typeof e!="object")return String(e);if(XO.isNode(t)&&r?.doc){let n=sue.createStringifyContext(r.doc,{});n.anchors=new Set;for(let s of r.anchors.keys())n.anchors.add(s.anchor);n.inFlow=!0,n.inStringifyKey=!0;let i=t.toString(n);if(!r.mapKeyWarned){let s=JSON.stringify(i);s.length>40&&(s=s.substring(0,36)+'..."'),iue.warn(r.doc.options.logLevel,`Keys with collection values will be stringified due to JS Object restrictions: ${s}. Set mapAsMap: true to use object keys.`),r.mapKeyWarned=!0}return i}return JSON.stringify(e)}ZO.addPairToJSMap=aue});var iA=g(S3=>{"use strict";var ex=hh(),Aue=jO(),lue=w3(),FE=qe();function cue(t,e,r){let n=ex.createNode(t,void 0,r),i=ex.createNode(e,void 0,r);return new UE(n,i)}var UE=class t{constructor(e,r=null){Object.defineProperty(this,FE.NODE_TYPE,{value:FE.PAIR}),this.key=e,this.value=r}clone(e){let{key:r,value:n}=this;return FE.isNode(r)&&(r=r.clone(e)),FE.isNode(n)&&(n=n.clone(e)),new t(r,n)}toJSON(e,r){let n=r?.mapAsMap?new Map:{};return lue.addPairToJSMap(r,n,this)}toString(e,r,n){return e?.doc?Aue.stringifyPair(this,e,r,n):JSON.stringify(this)}};S3.Pair=UE;S3.createPair=cue});var b3=g(rx=>{"use strict";var Dl=qe(),tx=Ch(),qE=fh();function due(t,e,r){return(e.inFlow??t.flow?uue:pue)(t,e,r)}function pue({comment:t,items:e},r,{blockItemPrefix:n,flowChars:i,itemIndent:s,onChompKeep:a,onComment:o}){let{indent:A,options:{commentString:l}}=r,c=Object.assign({},r,{indent:s,type:null}),d=!1,p=[];for(let m=0;mf=null,()=>d=!0);f&&(E+=qE.lineComment(E,s,l(f))),d&&f&&(d=!1),p.push(n+E)}let u;if(p.length===0)u=i.start+i.end;else{u=p[0];for(let m=1;mf=null);mc||E.includes(` -`))&&(l=!0),d.push(E),c=d.length}let{start:p,end:u}=r;if(d.length===0)return p+u;if(!l){let m=d.reduce((h,f)=>h+f.length+2,2);l=e.options.lineWidth>0&&m>e.options.lineWidth}if(l){let m=p;for(let h of d)m+=h?` -${s}${i}${h}`:` -`;return`${m} -${i}${u}`}else return`${p}${a}${d.join(" ")}${a}${u}`}function VE({indent:t,options:{commentString:e}},r,n,i){if(n&&i&&(n=n.replace(/^\n+/,"")),n){let s=qE.indentComment(e(n),t);r.push(s.trimStart())}}rx.stringifyCollection=due});var aA=g(R3=>{"use strict";var mue=b3(),hue=w3(),fue=NE(),sA=qe(),GE=iA(),gue=ur();function Qh(t,e){let r=sA.isScalar(e)?e.value:e;for(let n of t)if(sA.isPair(n)&&(n.key===e||n.key===r||sA.isScalar(n.key)&&n.key.value===r))return n}var v3=class extends fue.Collection{static get tagName(){return"tag:yaml.org,2002:map"}constructor(e){super(sA.MAP,e),this.items=[]}static from(e,r,n){let{keepUndefined:i,replacer:s}=n,a=new this(e),o=(A,l)=>{if(typeof s=="function")l=s.call(r,A,l);else if(Array.isArray(s)&&!s.includes(A))return;(l!==void 0||i)&&a.items.push(GE.createPair(A,l,n))};if(r instanceof Map)for(let[A,l]of r)o(A,l);else if(r&&typeof r=="object")for(let A of Object.keys(r))o(A,r[A]);return typeof e.sortMapEntries=="function"&&a.items.sort(e.sortMapEntries),a}add(e,r){let n;sA.isPair(e)?n=e:!e||typeof e!="object"||!("key"in e)?n=new GE.Pair(e,e?.value):n=new GE.Pair(e.key,e.value);let i=Qh(this.items,n.key),s=this.schema?.sortMapEntries;if(i){if(!r)throw new Error(`Key ${n.key} already set`);sA.isScalar(i.value)&&gue.isScalarValue(n.value)?i.value.value=n.value:i.value=n.value}else if(s){let a=this.items.findIndex(o=>s(n,o)<0);a===-1?this.items.push(n):this.items.splice(a,0,n)}else this.items.push(n)}delete(e){let r=Qh(this.items,e);return r?this.items.splice(this.items.indexOf(r),1).length>0:!1}get(e,r){let i=Qh(this.items,e)?.value;return(!r&&sA.isScalar(i)?i.value:i)??void 0}has(e){return!!Qh(this.items,e)}set(e,r){this.add(new GE.Pair(e,r),!0)}toJSON(e,r,n){let i=n?new n:r?.mapAsMap?new Map:{};r?.onCreate&&r.onCreate(i);for(let s of this.items)hue.addPairToJSMap(r,i,s);return i}toString(e,r,n){if(!e)return JSON.stringify(this);for(let i of this.items)if(!sA.isPair(i))throw new Error(`Map items must all be pairs; found ${JSON.stringify(i)} instead`);return!e.allNullValues&&this.hasAllNullValues(!1)&&(e=Object.assign({},e,{allNullValues:!0})),mue.stringifyCollection(this,e,{blockItemPrefix:"",flowChars:{start:"{",end:"}"},itemIndent:e.indent||"",onChompKeep:n,onComment:r})}};R3.YAMLMap=v3;R3.findPair=Qh});var op=g(ix=>{"use strict";var Eue=qe(),nx=aA(),yue={collection:"map",default:!0,nodeClass:nx.YAMLMap,tag:"tag:yaml.org,2002:map",resolve(t,e){return Eue.isMap(t)||e("Expected a mapping for this tag"),t},createNode:(t,e,r)=>nx.YAMLMap.from(t,e,r)};ix.map=yue});var oA=g(sx=>{"use strict";var Cue=hh(),Iue=b3(),Bue=NE(),YE=qe(),Que=ur(),wue=eA(),N3=class extends Bue.Collection{static get tagName(){return"tag:yaml.org,2002:seq"}constructor(e){super(YE.SEQ,e),this.items=[]}add(e){this.items.push(e)}delete(e){let r=HE(e);return typeof r!="number"?!1:this.items.splice(r,1).length>0}get(e,r){let n=HE(e);if(typeof n!="number")return;let i=this.items[n];return!r&&YE.isScalar(i)?i.value:i}has(e){let r=HE(e);return typeof r=="number"&&r=0?e:null}sx.YAMLSeq=N3});var Ap=g(ox=>{"use strict";var Sue=qe(),ax=oA(),bue={collection:"seq",default:!0,nodeClass:ax.YAMLSeq,tag:"tag:yaml.org,2002:seq",resolve(t,e){return Sue.isSeq(t)||e("Expected a sequence for this tag"),t},createNode:(t,e,r)=>ax.YAMLSeq.from(t,e,r)};ox.seq=bue});var wh=g(Ax=>{"use strict";var vue=yh(),Rue={identify:t=>typeof t=="string",default:!0,tag:"tag:yaml.org,2002:str",resolve:t=>t,stringify(t,e,r,n){return e=Object.assign({actualString:!0},e),vue.stringifyString(t,e,r,n)}};Ax.string=Rue});var JE=g(dx=>{"use strict";var lx=ur(),cx={identify:t=>t==null,createNode:()=>new lx.Scalar(null),default:!0,tag:"tag:yaml.org,2002:null",test:/^(?:~|[Nn]ull|NULL)?$/,resolve:()=>new lx.Scalar(null),stringify:({source:t},e)=>typeof t=="string"&&cx.test.test(t)?t:e.options.nullStr};dx.nullTag=cx});var T3=g(ux=>{"use strict";var Nue=ur(),px={identify:t=>typeof t=="boolean",default:!0,tag:"tag:yaml.org,2002:bool",test:/^(?:[Tt]rue|TRUE|[Ff]alse|FALSE)$/,resolve:t=>new Nue.Scalar(t[0]==="t"||t[0]==="T"),stringify({source:t,value:e},r){if(t&&px.test.test(t)){let n=t[0]==="t"||t[0]==="T";if(e===n)return t}return e?r.options.trueStr:r.options.falseStr}};ux.boolTag=px});var lp=g(mx=>{"use strict";function Tue({format:t,minFractionDigits:e,tag:r,value:n}){if(typeof n=="bigint")return String(n);let i=typeof n=="number"?n:Number(n);if(!isFinite(i))return isNaN(i)?".nan":i<0?"-.inf":".inf";let s=JSON.stringify(n);if(!t&&e&&(!r||r==="tag:yaml.org,2002:float")&&/^\d/.test(s)){let a=s.indexOf(".");a<0&&(a=s.length,s+=".");let o=e-(s.length-a-1);for(;o-- >0;)s+="0"}return s}mx.stringifyNumber=Tue});var k3=g(jE=>{"use strict";var Due=ur(),D3=lp(),kue={identify:t=>typeof t=="number",default:!0,tag:"tag:yaml.org,2002:float",test:/^(?:[-+]?\.(?:inf|Inf|INF)|\.nan|\.NaN|\.NAN)$/,resolve:t=>t.slice(-3).toLowerCase()==="nan"?NaN:t[0]==="-"?Number.NEGATIVE_INFINITY:Number.POSITIVE_INFINITY,stringify:D3.stringifyNumber},Pue={identify:t=>typeof t=="number",default:!0,tag:"tag:yaml.org,2002:float",format:"EXP",test:/^[-+]?(?:\.[0-9]+|[0-9]+(?:\.[0-9]*)?)[eE][-+]?[0-9]+$/,resolve:t=>parseFloat(t),stringify(t){let e=Number(t.value);return isFinite(e)?e.toExponential():D3.stringifyNumber(t)}},_ue={identify:t=>typeof t=="number",default:!0,tag:"tag:yaml.org,2002:float",test:/^[-+]?(?:\.[0-9]+|[0-9]+\.[0-9]*)$/,resolve(t){let e=new Due.Scalar(parseFloat(t)),r=t.indexOf(".");return r!==-1&&t[t.length-1]==="0"&&(e.minFractionDigits=t.length-r-1),e},stringify:D3.stringifyNumber};jE.float=_ue;jE.floatExp=Pue;jE.floatNaN=kue});var _3=g(WE=>{"use strict";var hx=lp(),zE=t=>typeof t=="bigint"||Number.isInteger(t),P3=(t,e,r,{intAsBigInt:n})=>n?BigInt(t):parseInt(t.substring(e),r);function fx(t,e,r){let{value:n}=t;return zE(n)&&n>=0?r+n.toString(e):hx.stringifyNumber(t)}var Mue={identify:t=>zE(t)&&t>=0,default:!0,tag:"tag:yaml.org,2002:int",format:"OCT",test:/^0o[0-7]+$/,resolve:(t,e,r)=>P3(t,2,8,r),stringify:t=>fx(t,8,"0o")},Oue={identify:zE,default:!0,tag:"tag:yaml.org,2002:int",test:/^[-+]?[0-9]+$/,resolve:(t,e,r)=>P3(t,0,10,r),stringify:hx.stringifyNumber},xue={identify:t=>zE(t)&&t>=0,default:!0,tag:"tag:yaml.org,2002:int",format:"HEX",test:/^0x[0-9a-fA-F]+$/,resolve:(t,e,r)=>P3(t,2,16,r),stringify:t=>fx(t,16,"0x")};WE.int=Oue;WE.intHex=xue;WE.intOct=Mue});var Ex=g(gx=>{"use strict";var Lue=op(),Fue=JE(),Uue=Ap(),que=wh(),Vue=T3(),M3=k3(),O3=_3(),Gue=[Lue.map,Uue.seq,que.string,Fue.nullTag,Vue.boolTag,O3.intOct,O3.int,O3.intHex,M3.floatNaN,M3.floatExp,M3.float];gx.schema=Gue});var Ix=g(Cx=>{"use strict";var Hue=ur(),Yue=op(),Jue=Ap();function yx(t){return typeof t=="bigint"||Number.isInteger(t)}var $E=({value:t})=>JSON.stringify(t),jue=[{identify:t=>typeof t=="string",default:!0,tag:"tag:yaml.org,2002:str",resolve:t=>t,stringify:$E},{identify:t=>t==null,createNode:()=>new Hue.Scalar(null),default:!0,tag:"tag:yaml.org,2002:null",test:/^null$/,resolve:()=>null,stringify:$E},{identify:t=>typeof t=="boolean",default:!0,tag:"tag:yaml.org,2002:bool",test:/^true$|^false$/,resolve:t=>t==="true",stringify:$E},{identify:yx,default:!0,tag:"tag:yaml.org,2002:int",test:/^-?(?:0|[1-9][0-9]*)$/,resolve:(t,e,{intAsBigInt:r})=>r?BigInt(t):parseInt(t,10),stringify:({value:t})=>yx(t)?t.toString():JSON.stringify(t)},{identify:t=>typeof t=="number",default:!0,tag:"tag:yaml.org,2002:float",test:/^-?(?:0|[1-9][0-9]*)(?:\.[0-9]*)?(?:[eE][-+]?[0-9]+)?$/,resolve:t=>parseFloat(t),stringify:$E}],zue={default:!0,tag:"",test:/^/,resolve(t,e){return e(`Unresolved plain scalar ${JSON.stringify(t)}`),t}},Wue=[Yue.map,Jue.seq].concat(jue,zue);Cx.schema=Wue});var L3=g(Bx=>{"use strict";var Sh=require("node:buffer"),x3=ur(),$ue=yh(),Kue={identify:t=>t instanceof Uint8Array,default:!1,tag:"tag:yaml.org,2002:binary",resolve(t,e){if(typeof Sh.Buffer=="function")return Sh.Buffer.from(t,"base64");if(typeof atob=="function"){let r=atob(t.replace(/[\n\r]/g,"")),n=new Uint8Array(r.length);for(let i=0;i{"use strict";var KE=qe(),F3=iA(),Xue=ur(),Zue=oA();function Qx(t,e){if(KE.isSeq(t))for(let r=0;r1&&e("Each pair must have its own sequence indicator");let i=n.items[0]||new F3.Pair(new Xue.Scalar(null));if(n.commentBefore&&(i.key.commentBefore=i.key.commentBefore?`${n.commentBefore} -${i.key.commentBefore}`:n.commentBefore),n.comment){let s=i.value??i.key;s.comment=s.comment?`${n.comment} -${s.comment}`:n.comment}n=i}t.items[r]=KE.isPair(n)?n:new F3.Pair(n)}}else e("Expected a sequence for this tag");return t}function wx(t,e,r){let{replacer:n}=r,i=new Zue.YAMLSeq(t);i.tag="tag:yaml.org,2002:pairs";let s=0;if(e&&Symbol.iterator in Object(e))for(let a of e){typeof n=="function"&&(a=n.call(e,String(s++),a));let o,A;if(Array.isArray(a))if(a.length===2)o=a[0],A=a[1];else throw new TypeError(`Expected [key, value] tuple: ${a}`);else if(a&&a instanceof Object){let l=Object.keys(a);if(l.length===1)o=l[0],A=a[o];else throw new TypeError(`Expected tuple with one key, not ${l.length} keys`)}else o=a;i.items.push(F3.createPair(o,A,r))}return i}var eme={collection:"seq",default:!1,tag:"tag:yaml.org,2002:pairs",resolve:Qx,createNode:wx};XE.createPairs=wx;XE.pairs=eme;XE.resolvePairs=Qx});var V3=g(q3=>{"use strict";var Sx=qe(),U3=eA(),bh=aA(),tme=oA(),bx=ZE(),kl=class t extends tme.YAMLSeq{constructor(){super(),this.add=bh.YAMLMap.prototype.add.bind(this),this.delete=bh.YAMLMap.prototype.delete.bind(this),this.get=bh.YAMLMap.prototype.get.bind(this),this.has=bh.YAMLMap.prototype.has.bind(this),this.set=bh.YAMLMap.prototype.set.bind(this),this.tag=t.tag}toJSON(e,r){if(!r)return super.toJSON(e);let n=new Map;r?.onCreate&&r.onCreate(n);for(let i of this.items){let s,a;if(Sx.isPair(i)?(s=U3.toJS(i.key,"",r),a=U3.toJS(i.value,s,r)):s=U3.toJS(i,"",r),n.has(s))throw new Error("Ordered maps must not include duplicate keys");n.set(s,a)}return n}static from(e,r,n){let i=bx.createPairs(e,r,n),s=new this;return s.items=i.items,s}};kl.tag="tag:yaml.org,2002:omap";var rme={collection:"seq",identify:t=>t instanceof Map,nodeClass:kl,default:!1,tag:"tag:yaml.org,2002:omap",resolve(t,e){let r=bx.resolvePairs(t,e),n=[];for(let{key:i}of r.items)Sx.isScalar(i)&&(n.includes(i.value)?e(`Ordered maps must not include duplicate keys: ${i.value}`):n.push(i.value));return Object.assign(new kl,r)},createNode:(t,e,r)=>kl.from(t,e,r)};q3.YAMLOMap=kl;q3.omap=rme});var Dx=g(G3=>{"use strict";var vx=ur();function Rx({value:t,source:e},r){return e&&(t?Nx:Tx).test.test(e)?e:t?r.options.trueStr:r.options.falseStr}var Nx={identify:t=>t===!0,default:!0,tag:"tag:yaml.org,2002:bool",test:/^(?:Y|y|[Yy]es|YES|[Tt]rue|TRUE|[Oo]n|ON)$/,resolve:()=>new vx.Scalar(!0),stringify:Rx},Tx={identify:t=>t===!1,default:!0,tag:"tag:yaml.org,2002:bool",test:/^(?:N|n|[Nn]o|NO|[Ff]alse|FALSE|[Oo]ff|OFF)$/,resolve:()=>new vx.Scalar(!1),stringify:Rx};G3.falseTag=Tx;G3.trueTag=Nx});var kx=g(e2=>{"use strict";var nme=ur(),H3=lp(),ime={identify:t=>typeof t=="number",default:!0,tag:"tag:yaml.org,2002:float",test:/^(?:[-+]?\.(?:inf|Inf|INF)|\.nan|\.NaN|\.NAN)$/,resolve:t=>t.slice(-3).toLowerCase()==="nan"?NaN:t[0]==="-"?Number.NEGATIVE_INFINITY:Number.POSITIVE_INFINITY,stringify:H3.stringifyNumber},sme={identify:t=>typeof t=="number",default:!0,tag:"tag:yaml.org,2002:float",format:"EXP",test:/^[-+]?(?:[0-9][0-9_]*)?(?:\.[0-9_]*)?[eE][-+]?[0-9]+$/,resolve:t=>parseFloat(t.replace(/_/g,"")),stringify(t){let e=Number(t.value);return isFinite(e)?e.toExponential():H3.stringifyNumber(t)}},ame={identify:t=>typeof t=="number",default:!0,tag:"tag:yaml.org,2002:float",test:/^[-+]?(?:[0-9][0-9_]*)?\.[0-9_]*$/,resolve(t){let e=new nme.Scalar(parseFloat(t.replace(/_/g,""))),r=t.indexOf(".");if(r!==-1){let n=t.substring(r+1).replace(/_/g,"");n[n.length-1]==="0"&&(e.minFractionDigits=n.length)}return e},stringify:H3.stringifyNumber};e2.float=ame;e2.floatExp=sme;e2.floatNaN=ime});var _x=g(Rh=>{"use strict";var Px=lp(),vh=t=>typeof t=="bigint"||Number.isInteger(t);function t2(t,e,r,{intAsBigInt:n}){let i=t[0];if((i==="-"||i==="+")&&(e+=1),t=t.substring(e).replace(/_/g,""),n){switch(r){case 2:t=`0b${t}`;break;case 8:t=`0o${t}`;break;case 16:t=`0x${t}`;break}let a=BigInt(t);return i==="-"?BigInt(-1)*a:a}let s=parseInt(t,r);return i==="-"?-1*s:s}function Y3(t,e,r){let{value:n}=t;if(vh(n)){let i=n.toString(e);return n<0?"-"+r+i.substr(1):r+i}return Px.stringifyNumber(t)}var ome={identify:vh,default:!0,tag:"tag:yaml.org,2002:int",format:"BIN",test:/^[-+]?0b[0-1_]+$/,resolve:(t,e,r)=>t2(t,2,2,r),stringify:t=>Y3(t,2,"0b")},Ame={identify:vh,default:!0,tag:"tag:yaml.org,2002:int",format:"OCT",test:/^[-+]?0[0-7_]+$/,resolve:(t,e,r)=>t2(t,1,8,r),stringify:t=>Y3(t,8,"0")},lme={identify:vh,default:!0,tag:"tag:yaml.org,2002:int",test:/^[-+]?[0-9][0-9_]*$/,resolve:(t,e,r)=>t2(t,0,10,r),stringify:Px.stringifyNumber},cme={identify:vh,default:!0,tag:"tag:yaml.org,2002:int",format:"HEX",test:/^[-+]?0x[0-9a-fA-F_]+$/,resolve:(t,e,r)=>t2(t,2,16,r),stringify:t=>Y3(t,16,"0x")};Rh.int=lme;Rh.intBin=ome;Rh.intHex=cme;Rh.intOct=Ame});var j3=g(J3=>{"use strict";var i2=qe(),r2=iA(),n2=aA(),Pl=class t extends n2.YAMLMap{constructor(e){super(e),this.tag=t.tag}add(e){let r;i2.isPair(e)?r=e:e&&typeof e=="object"&&"key"in e&&"value"in e&&e.value===null?r=new r2.Pair(e.key,null):r=new r2.Pair(e,null),n2.findPair(this.items,r.key)||this.items.push(r)}get(e,r){let n=n2.findPair(this.items,e);return!r&&i2.isPair(n)?i2.isScalar(n.key)?n.key.value:n.key:n}set(e,r){if(typeof r!="boolean")throw new Error(`Expected boolean value for set(key, value) in a YAML set, not ${typeof r}`);let n=n2.findPair(this.items,e);n&&!r?this.items.splice(this.items.indexOf(n),1):!n&&r&&this.items.push(new r2.Pair(e))}toJSON(e,r){return super.toJSON(e,r,Set)}toString(e,r,n){if(!e)return JSON.stringify(this);if(this.hasAllNullValues(!0))return super.toString(Object.assign({},e,{allNullValues:!0}),r,n);throw new Error("Set items must all have null values")}static from(e,r,n){let{replacer:i}=n,s=new this(e);if(r&&Symbol.iterator in Object(r))for(let a of r)typeof i=="function"&&(a=i.call(r,a,a)),s.items.push(r2.createPair(a,null,n));return s}};Pl.tag="tag:yaml.org,2002:set";var dme={collection:"map",identify:t=>t instanceof Set,nodeClass:Pl,default:!1,tag:"tag:yaml.org,2002:set",createNode:(t,e,r)=>Pl.from(t,e,r),resolve(t,e){if(i2.isMap(t)){if(t.hasAllNullValues(!0))return Object.assign(new Pl,t);e("Set items must all have null values")}else e("Expected a mapping for this tag");return t}};J3.YAMLSet=Pl;J3.set=dme});var W3=g(s2=>{"use strict";var pme=lp();function z3(t,e){let r=t[0],n=r==="-"||r==="+"?t.substring(1):t,i=a=>e?BigInt(a):Number(a),s=n.replace(/_/g,"").split(":").reduce((a,o)=>a*i(60)+i(o),i(0));return r==="-"?i(-1)*s:s}function Mx(t){let{value:e}=t,r=a=>a;if(typeof e=="bigint")r=a=>BigInt(a);else if(isNaN(e)||!isFinite(e))return pme.stringifyNumber(t);let n="";e<0&&(n="-",e*=r(-1));let i=r(60),s=[e%i];return e<60?s.unshift(0):(e=(e-s[0])/i,s.unshift(e%i),e>=60&&(e=(e-s[0])/i,s.unshift(e))),n+s.map(a=>String(a).padStart(2,"0")).join(":").replace(/000000\d*$/,"")}var ume={identify:t=>typeof t=="bigint"||Number.isInteger(t),default:!0,tag:"tag:yaml.org,2002:int",format:"TIME",test:/^[-+]?[0-9][0-9_]*(?::[0-5]?[0-9])+$/,resolve:(t,e,{intAsBigInt:r})=>z3(t,r),stringify:Mx},mme={identify:t=>typeof t=="number",default:!0,tag:"tag:yaml.org,2002:float",format:"TIME",test:/^[-+]?[0-9][0-9_]*(?::[0-5]?[0-9])+\.[0-9_]*$/,resolve:t=>z3(t,!1),stringify:Mx},Ox={identify:t=>t instanceof Date,default:!0,tag:"tag:yaml.org,2002:timestamp",test:RegExp("^([0-9]{4})-([0-9]{1,2})-([0-9]{1,2})(?:(?:t|T|[ \\t]+)([0-9]{1,2}):([0-9]{1,2}):([0-9]{1,2}(\\.[0-9]+)?)(?:[ \\t]*(Z|[-+][012]?[0-9](?::[0-9]{2})?))?)?$"),resolve(t){let e=t.match(Ox.test);if(!e)throw new Error("!!timestamp expects a date, starting with yyyy-mm-dd");let[,r,n,i,s,a,o]=e.map(Number),A=e[7]?Number((e[7]+"00").substr(1,3)):0,l=Date.UTC(r,n-1,i,s||0,a||0,o||0,A),c=e[8];if(c&&c!=="Z"){let d=z3(c,!1);Math.abs(d)<30&&(d*=60),l-=6e4*d}return new Date(l)},stringify:({value:t})=>t?.toISOString().replace(/(T00:00:00)?\.000Z$/,"")??""};s2.floatTime=mme;s2.intTime=ume;s2.timestamp=Ox});var Fx=g(Lx=>{"use strict";var hme=op(),fme=JE(),gme=Ap(),Eme=wh(),yme=L3(),xx=Dx(),$3=kx(),a2=_x(),Cme=LE(),Ime=V3(),Bme=ZE(),Qme=j3(),K3=W3(),wme=[hme.map,gme.seq,Eme.string,fme.nullTag,xx.trueTag,xx.falseTag,a2.intBin,a2.intOct,a2.int,a2.intHex,$3.floatNaN,$3.floatExp,$3.float,yme.binary,Cme.merge,Ime.omap,Bme.pairs,Qme.set,K3.intTime,K3.floatTime,K3.timestamp];Lx.schema=wme});var Wx=g(eQ=>{"use strict";var Gx=op(),Sme=JE(),Hx=Ap(),bme=wh(),vme=T3(),X3=k3(),Z3=_3(),Rme=Ex(),Nme=Ix(),Yx=L3(),Nh=LE(),Jx=V3(),jx=ZE(),Ux=Fx(),zx=j3(),o2=W3(),qx=new Map([["core",Rme.schema],["failsafe",[Gx.map,Hx.seq,bme.string]],["json",Nme.schema],["yaml11",Ux.schema],["yaml-1.1",Ux.schema]]),Vx={binary:Yx.binary,bool:vme.boolTag,float:X3.float,floatExp:X3.floatExp,floatNaN:X3.floatNaN,floatTime:o2.floatTime,int:Z3.int,intHex:Z3.intHex,intOct:Z3.intOct,intTime:o2.intTime,map:Gx.map,merge:Nh.merge,null:Sme.nullTag,omap:Jx.omap,pairs:jx.pairs,seq:Hx.seq,set:zx.set,timestamp:o2.timestamp},Tme={"tag:yaml.org,2002:binary":Yx.binary,"tag:yaml.org,2002:merge":Nh.merge,"tag:yaml.org,2002:omap":Jx.omap,"tag:yaml.org,2002:pairs":jx.pairs,"tag:yaml.org,2002:set":zx.set,"tag:yaml.org,2002:timestamp":o2.timestamp};function Dme(t,e,r){let n=qx.get(e);if(n&&!t)return r&&!n.includes(Nh.merge)?n.concat(Nh.merge):n.slice();let i=n;if(!i)if(Array.isArray(t))i=[];else{let s=Array.from(qx.keys()).filter(a=>a!=="yaml11").map(a=>JSON.stringify(a)).join(", ");throw new Error(`Unknown schema "${e}"; use one of ${s} or define customTags array`)}if(Array.isArray(t))for(let s of t)i=i.concat(s);else typeof t=="function"&&(i=t(i.slice()));return r&&(i=i.concat(Nh.merge)),i.reduce((s,a)=>{let o=typeof a=="string"?Vx[a]:a;if(!o){let A=JSON.stringify(a),l=Object.keys(Vx).map(c=>JSON.stringify(c)).join(", ");throw new Error(`Unknown custom tag ${A}; use one of ${l}`)}return s.includes(o)||s.push(o),s},[])}eQ.coreKnownTags=Tme;eQ.getTags=Dme});var nQ=g($x=>{"use strict";var tQ=qe(),kme=op(),Pme=Ap(),_me=wh(),A2=Wx(),Mme=(t,e)=>t.keye.key?1:0,rQ=class t{constructor({compat:e,customTags:r,merge:n,resolveKnownTags:i,schema:s,sortMapEntries:a,toStringDefaults:o}){this.compat=Array.isArray(e)?A2.getTags(e,"compat"):e?A2.getTags(null,e):null,this.name=typeof s=="string"&&s||"core",this.knownTags=i?A2.coreKnownTags:{},this.tags=A2.getTags(r,this.name,n),this.toStringOptions=o??null,Object.defineProperty(this,tQ.MAP,{value:kme.map}),Object.defineProperty(this,tQ.SCALAR,{value:_me.string}),Object.defineProperty(this,tQ.SEQ,{value:Pme.seq}),this.sortMapEntries=typeof a=="function"?a:a===!0?Mme:null}clone(){let e=Object.create(t.prototype,Object.getOwnPropertyDescriptors(this));return e.tags=this.tags.slice(),e}};$x.Schema=rQ});var Xx=g(Kx=>{"use strict";var Ome=qe(),iQ=Ch(),Th=fh();function xme(t,e){let r=[],n=e.directives===!0;if(e.directives!==!1&&t.directives){let A=t.directives.toString(t);A?(r.push(A),n=!0):t.directives.docStart&&(n=!0)}n&&r.push("---");let i=iQ.createStringifyContext(t,e),{commentString:s}=i.options;if(t.commentBefore){r.length!==1&&r.unshift("");let A=s(t.commentBefore);r.unshift(Th.indentComment(A,""))}let a=!1,o=null;if(t.contents){if(Ome.isNode(t.contents)){if(t.contents.spaceBefore&&n&&r.push(""),t.contents.commentBefore){let c=s(t.contents.commentBefore);r.push(Th.indentComment(c,""))}i.forceBlockIndent=!!t.comment,o=t.contents.comment}let A=o?void 0:()=>a=!0,l=iQ.stringify(t.contents,i,()=>o=null,A);o&&(l+=Th.lineComment(l,"",s(o))),(l[0]==="|"||l[0]===">")&&r[r.length-1]==="---"?r[r.length-1]=`--- ${l}`:r.push(l)}else r.push(iQ.stringify(t.contents,i));if(t.directives?.docEnd)if(t.comment){let A=s(t.comment);A.includes(` -`)?(r.push("..."),r.push(Th.indentComment(A,""))):r.push(`... ${A}`)}else r.push("...");else{let A=t.comment;A&&a&&(A=A.replace(/^\n+/,"")),A&&((!a||o)&&r[r.length-1]!==""&&r.push(""),r.push(Th.indentComment(s(A),"")))}return r.join(` -`)+` -`}Kx.stringifyDocument=xme});var Dh=g(Zx=>{"use strict";var Lme=mh(),cp=NE(),Xi=qe(),Fme=iA(),Ume=eA(),qme=nQ(),Vme=Xx(),sQ=wE(),Gme=l3(),Hme=hh(),aQ=A3(),oQ=class t{constructor(e,r,n){this.commentBefore=null,this.comment=null,this.errors=[],this.warnings=[],Object.defineProperty(this,Xi.NODE_TYPE,{value:Xi.DOC});let i=null;typeof r=="function"||Array.isArray(r)?i=r:n===void 0&&r&&(n=r,r=void 0);let s=Object.assign({intAsBigInt:!1,keepSourceTokens:!1,logLevel:"warn",prettyErrors:!0,strict:!0,stringKeys:!1,uniqueKeys:!0,version:"1.2"},n);this.options=s;let{version:a}=s;n?._directives?(this.directives=n._directives.atDocument(),this.directives.yaml.explicit&&(a=this.directives.yaml.version)):this.directives=new aQ.Directives({version:a}),this.setSchema(a,n),this.contents=e===void 0?null:this.createNode(e,i,n)}clone(){let e=Object.create(t.prototype,{[Xi.NODE_TYPE]:{value:Xi.DOC}});return e.commentBefore=this.commentBefore,e.comment=this.comment,e.errors=this.errors.slice(),e.warnings=this.warnings.slice(),e.options=Object.assign({},this.options),this.directives&&(e.directives=this.directives.clone()),e.schema=this.schema.clone(),e.contents=Xi.isNode(this.contents)?this.contents.clone(e.schema):this.contents,this.range&&(e.range=this.range.slice()),e}add(e){dp(this.contents)&&this.contents.add(e)}addIn(e,r){dp(this.contents)&&this.contents.addIn(e,r)}createAlias(e,r){if(!e.anchor){let n=sQ.anchorNames(this);e.anchor=!r||n.has(r)?sQ.findNewAnchor(r||"a",n):r}return new Lme.Alias(e.anchor)}createNode(e,r,n){let i;if(typeof r=="function")e=r.call({"":e},"",e),i=r;else if(Array.isArray(r)){let f=y=>typeof y=="number"||y instanceof String||y instanceof Number,E=r.filter(f).map(String);E.length>0&&(r=r.concat(E)),i=r}else n===void 0&&r&&(n=r,r=void 0);let{aliasDuplicateObjects:s,anchorPrefix:a,flow:o,keepUndefined:A,onTagObj:l,tag:c}=n??{},{onAnchor:d,setAnchors:p,sourceObjects:u}=sQ.createNodeAnchors(this,a||"a"),m={aliasDuplicateObjects:s??!0,keepUndefined:A??!1,onAnchor:d,onTagObj:l,replacer:i,schema:this.schema,sourceObjects:u},h=Hme.createNode(e,c,m);return o&&Xi.isCollection(h)&&(h.flow=!0),p(),h}createPair(e,r,n={}){let i=this.createNode(e,null,n),s=this.createNode(r,null,n);return new Fme.Pair(i,s)}delete(e){return dp(this.contents)?this.contents.delete(e):!1}deleteIn(e){return cp.isEmptyPath(e)?this.contents==null?!1:(this.contents=null,!0):dp(this.contents)?this.contents.deleteIn(e):!1}get(e,r){return Xi.isCollection(this.contents)?this.contents.get(e,r):void 0}getIn(e,r){return cp.isEmptyPath(e)?!r&&Xi.isScalar(this.contents)?this.contents.value:this.contents:Xi.isCollection(this.contents)?this.contents.getIn(e,r):void 0}has(e){return Xi.isCollection(this.contents)?this.contents.has(e):!1}hasIn(e){return cp.isEmptyPath(e)?this.contents!==void 0:Xi.isCollection(this.contents)?this.contents.hasIn(e):!1}set(e,r){this.contents==null?this.contents=cp.collectionFromPath(this.schema,[e],r):dp(this.contents)&&this.contents.set(e,r)}setIn(e,r){cp.isEmptyPath(e)?this.contents=r:this.contents==null?this.contents=cp.collectionFromPath(this.schema,Array.from(e),r):dp(this.contents)&&this.contents.setIn(e,r)}setSchema(e,r={}){typeof e=="number"&&(e=String(e));let n;switch(e){case"1.1":this.directives?this.directives.yaml.version="1.1":this.directives=new aQ.Directives({version:"1.1"}),n={resolveKnownTags:!1,schema:"yaml-1.1"};break;case"1.2":case"next":this.directives?this.directives.yaml.version=e:this.directives=new aQ.Directives({version:e}),n={resolveKnownTags:!0,schema:"core"};break;case null:this.directives&&delete this.directives,n=null;break;default:{let i=JSON.stringify(e);throw new Error(`Expected '1.1', '1.2' or null as first argument, but found: ${i}`)}}if(r.schema instanceof Object)this.schema=r.schema;else if(n)this.schema=new qme.Schema(Object.assign(n,r));else throw new Error("With a null YAML version, the { schema: Schema } option is required")}toJS({json:e,jsonArg:r,mapAsMap:n,maxAliasCount:i,onAnchor:s,reviver:a}={}){let o={anchors:new Map,doc:this,keep:!e,mapAsMap:n===!0,mapKeyWarned:!1,maxAliasCount:typeof i=="number"?i:100},A=Ume.toJS(this.contents,r??"",o);if(typeof s=="function")for(let{count:l,res:c}of o.anchors.values())s(c,l);return typeof a=="function"?Gme.applyReviver(a,{"":A},"",A):A}toJSON(e,r){return this.toJS({json:!0,jsonArg:e,mapAsMap:!1,onAnchor:r})}toString(e={}){if(this.errors.length>0)throw new Error("Document with errors cannot be stringified");if("indent"in e&&(!Number.isInteger(e.indent)||Number(e.indent)<=0)){let r=JSON.stringify(e.indent);throw new Error(`"indent" option must be a positive integer, not ${r}`)}return Vme.stringifyDocument(this,e)}};function dp(t){if(Xi.isCollection(t))return!0;throw new Error("Expected a YAML collection as document contents")}Zx.Document=oQ});var _h=g(Ph=>{"use strict";var kh=class extends Error{constructor(e,r,n,i){super(),this.name=e,this.code=n,this.message=i,this.pos=r}},AQ=class extends kh{constructor(e,r,n){super("YAMLParseError",e,r,n)}},lQ=class extends kh{constructor(e,r,n){super("YAMLWarning",e,r,n)}},Yme=(t,e)=>r=>{if(r.pos[0]===-1)return;r.linePos=r.pos.map(o=>e.linePos(o));let{line:n,col:i}=r.linePos[0];r.message+=` at line ${n}, column ${i}`;let s=i-1,a=t.substring(e.lineStarts[n-1],e.lineStarts[n]).replace(/[\n\r]+$/,"");if(s>=60&&a.length>80){let o=Math.min(s-39,a.length-79);a="\u2026"+a.substring(o),s-=o-1}if(a.length>80&&(a=a.substring(0,79)+"\u2026"),n>1&&/^ *$/.test(a.substring(0,s))){let o=t.substring(e.lineStarts[n-2],e.lineStarts[n-1]);o.length>80&&(o=o.substring(0,79)+`\u2026 -`),a=o+a}if(/[^ ]/.test(a)){let o=1,A=r.linePos[1];A&&A.line===n&&A.col>i&&(o=Math.max(1,Math.min(A.col-i,80-s)));let l=" ".repeat(s)+"^".repeat(o);r.message+=`: - -${a} -${l} -`}};Ph.YAMLError=kh;Ph.YAMLParseError=AQ;Ph.YAMLWarning=lQ;Ph.prettifyError=Yme});var Mh=g(eL=>{"use strict";function Jme(t,{flow:e,indicator:r,next:n,offset:i,onError:s,parentIndent:a,startOnNewline:o}){let A=!1,l=o,c=o,d="",p="",u=!1,m=!1,h=null,f=null,E=null,y=null,B=null,Q=null,C=null;for(let v of t)switch(m&&(v.type!=="space"&&v.type!=="newline"&&v.type!=="comma"&&s(v.offset,"MISSING_CHAR","Tags and anchors must be separated from the next token by white space"),m=!1),h&&(l&&v.type!=="comment"&&v.type!=="newline"&&s(h,"TAB_AS_INDENT","Tabs are not allowed as indentation"),h=null),v.type){case"space":!e&&(r!=="doc-start"||n?.type!=="flow-collection")&&v.source.includes(" ")&&(h=v),c=!0;break;case"comment":{c||s(v,"MISSING_CHAR","Comments must be separated from other tokens by white space characters");let q=v.source.substring(1)||" ";d?d+=p+q:d=q,p="",l=!1;break}case"newline":l?d?d+=v.source:(!Q||r!=="seq-item-ind")&&(A=!0):p+=v.source,l=!0,u=!0,(f||E)&&(y=v),c=!0;break;case"anchor":f&&s(v,"MULTIPLE_ANCHORS","A node can have at most one anchor"),v.source.endsWith(":")&&s(v.offset+v.source.length-1,"BAD_ALIAS","Anchor ending in : is ambiguous",!0),f=v,C===null&&(C=v.offset),l=!1,c=!1,m=!0;break;case"tag":{E&&s(v,"MULTIPLE_TAGS","A node can have at most one tag"),E=v,C===null&&(C=v.offset),l=!1,c=!1,m=!0;break}case r:(f||E)&&s(v,"BAD_PROP_ORDER",`Anchors and tags must be after the ${v.source} indicator`),Q&&s(v,"UNEXPECTED_TOKEN",`Unexpected ${v.source} in ${e??"collection"}`),Q=v,l=r==="seq-item-ind"||r==="explicit-key-ind",c=!1;break;case"comma":if(e){B&&s(v,"UNEXPECTED_TOKEN",`Unexpected , in ${e}`),B=v,l=!1,c=!1;break}default:s(v,"UNEXPECTED_TOKEN",`Unexpected ${v.type} token`),l=!1,c=!1}let w=t[t.length-1],b=w?w.offset+w.source.length:i;return m&&n&&n.type!=="space"&&n.type!=="newline"&&n.type!=="comma"&&(n.type!=="scalar"||n.source!=="")&&s(n.offset,"MISSING_CHAR","Tags and anchors must be separated from the next token by white space"),h&&(l&&h.indent<=a||n?.type==="block-map"||n?.type==="block-seq")&&s(h,"TAB_AS_INDENT","Tabs are not allowed as indentation"),{comma:B,found:Q,spaceBefore:A,comment:d,hasNewline:u,anchor:f,tag:E,newlineAfterProp:y,end:b,start:C??b}}eL.resolveProps=Jme});var l2=g(tL=>{"use strict";function cQ(t){if(!t)return null;switch(t.type){case"alias":case"scalar":case"double-quoted-scalar":case"single-quoted-scalar":if(t.source.includes(` -`))return!0;if(t.end){for(let e of t.end)if(e.type==="newline")return!0}return!1;case"flow-collection":for(let e of t.items){for(let r of e.start)if(r.type==="newline")return!0;if(e.sep){for(let r of e.sep)if(r.type==="newline")return!0}if(cQ(e.key)||cQ(e.value))return!0}return!1;default:return!0}}tL.containsNewline=cQ});var dQ=g(rL=>{"use strict";var jme=l2();function zme(t,e,r){if(e?.type==="flow-collection"){let n=e.end[0];n.indent===t&&(n.source==="]"||n.source==="}")&&jme.containsNewline(e)&&r(n,"BAD_INDENT","Flow end indicator should be more indented than parent",!0)}}rL.flowIndentCheck=zme});var pQ=g(iL=>{"use strict";var nL=qe();function Wme(t,e,r){let{uniqueKeys:n}=t.options;if(n===!1)return!1;let i=typeof n=="function"?n:(s,a)=>s===a||nL.isScalar(s)&&nL.isScalar(a)&&s.value===a.value;return e.some(s=>i(s.key,r))}iL.mapIncludes=Wme});var cL=g(lL=>{"use strict";var sL=iA(),$me=aA(),aL=Mh(),Kme=l2(),oL=dQ(),Xme=pQ(),AL="All mapping items must start at the same column";function Zme({composeNode:t,composeEmptyNode:e},r,n,i,s){let a=s?.nodeClass??$me.YAMLMap,o=new a(r.schema);r.atRoot&&(r.atRoot=!1);let A=n.offset,l=null;for(let c of n.items){let{start:d,key:p,sep:u,value:m}=c,h=aL.resolveProps(d,{indicator:"explicit-key-ind",next:p??u?.[0],offset:A,onError:i,parentIndent:n.indent,startOnNewline:!0}),f=!h.found;if(f){if(p&&(p.type==="block-seq"?i(A,"BLOCK_AS_IMPLICIT_KEY","A block sequence may not be used as an implicit map key"):"indent"in p&&p.indent!==n.indent&&i(A,"BAD_INDENT",AL)),!h.anchor&&!h.tag&&!u){l=h.end,h.comment&&(o.comment?o.comment+=` -`+h.comment:o.comment=h.comment);continue}(h.newlineAfterProp||Kme.containsNewline(p))&&i(p??d[d.length-1],"MULTILINE_IMPLICIT_KEY","Implicit keys need to be on a single line")}else h.found?.indent!==n.indent&&i(A,"BAD_INDENT",AL);r.atKey=!0;let E=h.end,y=p?t(r,p,h,i):e(r,E,d,null,h,i);r.schema.compat&&oL.flowIndentCheck(n.indent,p,i),r.atKey=!1,Xme.mapIncludes(r,o.items,y)&&i(E,"DUPLICATE_KEY","Map keys must be unique");let B=aL.resolveProps(u??[],{indicator:"map-value-ind",next:m,offset:y.range[2],onError:i,parentIndent:n.indent,startOnNewline:!p||p.type==="block-scalar"});if(A=B.end,B.found){f&&(m?.type==="block-map"&&!B.hasNewline&&i(A,"BLOCK_AS_IMPLICIT_KEY","Nested mappings are not allowed in compact mappings"),r.options.strict&&h.start{"use strict";var ehe=oA(),the=Mh(),rhe=dQ();function nhe({composeNode:t,composeEmptyNode:e},r,n,i,s){let a=s?.nodeClass??ehe.YAMLSeq,o=new a(r.schema);r.atRoot&&(r.atRoot=!1),r.atKey&&(r.atKey=!1);let A=n.offset,l=null;for(let{start:c,value:d}of n.items){let p=the.resolveProps(c,{indicator:"seq-item-ind",next:d,offset:A,onError:i,parentIndent:n.indent,startOnNewline:!0});if(!p.found)if(p.anchor||p.tag||d)d&&d.type==="block-seq"?i(p.end,"BAD_INDENT","All sequence items must start at the same column"):i(A,"MISSING_CHAR","Sequence item without - indicator");else{l=p.end,p.comment&&(o.comment=p.comment);continue}let u=d?t(r,d,p,i):e(r,p.end,c,null,p,i);r.schema.compat&&rhe.flowIndentCheck(n.indent,d,i),A=u.range[2],o.items.push(u)}return o.range=[n.offset,A,l??A],o}dL.resolveBlockSeq=nhe});var pp=g(uL=>{"use strict";function ihe(t,e,r,n){let i="";if(t){let s=!1,a="";for(let o of t){let{source:A,type:l}=o;switch(l){case"space":s=!0;break;case"comment":{r&&!s&&n(o,"MISSING_CHAR","Comments must be separated from other tokens by white space characters");let c=A.substring(1)||" ";i?i+=a+c:i=c,a="";break}case"newline":i&&(a+=A),s=!0;break;default:n(o,"UNEXPECTED_TOKEN",`Unexpected ${l} at node end`)}e+=A.length}}return{comment:i,offset:e}}uL.resolveEnd=ihe});var gL=g(fL=>{"use strict";var she=qe(),ahe=iA(),mL=aA(),ohe=oA(),Ahe=pp(),hL=Mh(),lhe=l2(),che=pQ(),uQ="Block collections are not allowed within flow collections",mQ=t=>t&&(t.type==="block-map"||t.type==="block-seq");function dhe({composeNode:t,composeEmptyNode:e},r,n,i,s){let a=n.start.source==="{",o=a?"flow map":"flow sequence",A=s?.nodeClass??(a?mL.YAMLMap:ohe.YAMLSeq),l=new A(r.schema);l.flow=!0;let c=r.atRoot;c&&(r.atRoot=!1),r.atKey&&(r.atKey=!1);let d=n.offset+n.start.source.length;for(let f=0;f0){let f=Ahe.resolveEnd(m,h,r.options.strict,i);f.comment&&(l.comment?l.comment+=` -`+f.comment:l.comment=f.comment),l.range=[n.offset,h,f.offset]}else l.range=[n.offset,h,h];return l}fL.resolveFlowCollection=dhe});var yL=g(EL=>{"use strict";var phe=qe(),uhe=ur(),mhe=aA(),hhe=oA(),fhe=cL(),ghe=pL(),Ehe=gL();function hQ(t,e,r,n,i,s){let a=r.type==="block-map"?fhe.resolveBlockMap(t,e,r,n,s):r.type==="block-seq"?ghe.resolveBlockSeq(t,e,r,n,s):Ehe.resolveFlowCollection(t,e,r,n,s),o=a.constructor;return i==="!"||i===o.tagName?(a.tag=o.tagName,a):(i&&(a.tag=i),a)}function yhe(t,e,r,n,i){let s=n.tag,a=s?e.directives.tagName(s.source,p=>i(s,"TAG_RESOLVE_FAILED",p)):null;if(r.type==="block-seq"){let{anchor:p,newlineAfterProp:u}=n,m=p&&s?p.offset>s.offset?p:s:p??s;m&&(!u||u.offsetp.tag===a&&p.collection===o);if(!A){let p=e.schema.knownTags[a];if(p&&p.collection===o)e.schema.tags.push(Object.assign({},p,{default:!1})),A=p;else return p?i(s,"BAD_COLLECTION_TYPE",`${p.tag} used for ${o} collection, but expects ${p.collection??"scalar"}`,!0):i(s,"TAG_RESOLVE_FAILED",`Unresolved tag: ${a}`,!0),hQ(t,e,r,i,a)}let l=hQ(t,e,r,i,a,A),c=A.resolve?.(l,p=>i(s,"TAG_RESOLVE_FAILED",p),e.options)??l,d=phe.isNode(c)?c:new uhe.Scalar(c);return d.range=l.range,d.tag=a,A?.format&&(d.format=A.format),d}EL.composeCollection=yhe});var gQ=g(CL=>{"use strict";var fQ=ur();function Che(t,e,r){let n=e.offset,i=Ihe(e,t.options.strict,r);if(!i)return{value:"",type:null,comment:"",range:[n,n,n]};let s=i.mode===">"?fQ.Scalar.BLOCK_FOLDED:fQ.Scalar.BLOCK_LITERAL,a=e.source?Bhe(e.source):[],o=a.length;for(let h=a.length-1;h>=0;--h){let f=a[h][1];if(f===""||f==="\r")o=h;else break}if(o===0){let h=i.chomp==="+"&&a.length>0?` -`.repeat(Math.max(1,a.length-1)):"",f=n+i.length;return e.source&&(f+=e.source.length),{value:h,type:s,comment:i.comment,range:[n,f,f]}}let A=e.indent+i.indent,l=e.offset+i.length,c=0;for(let h=0;hA&&(A=f.length);else{f.length=o;--h)a[h][0].length>A&&(o=h+1);let d="",p="",u=!1;for(let h=0;hA||E[0]===" "?(p===" "?p=` -`:!u&&p===` -`&&(p=` - -`),d+=p+f.slice(A)+E,p=` -`,u=!0):E===""?p===` -`?d+=` -`:p=` -`:(d+=p+E,p=" ",u=!1)}switch(i.chomp){case"-":break;case"+":for(let h=o;h{"use strict";var EQ=ur(),Qhe=pp();function whe(t,e,r){let{offset:n,type:i,source:s,end:a}=t,o,A,l=(p,u,m)=>r(n+p,u,m);switch(i){case"scalar":o=EQ.Scalar.PLAIN,A=She(s,l);break;case"single-quoted-scalar":o=EQ.Scalar.QUOTE_SINGLE,A=bhe(s,l);break;case"double-quoted-scalar":o=EQ.Scalar.QUOTE_DOUBLE,A=vhe(s,l);break;default:return r(t,"UNEXPECTED_TOKEN",`Expected a flow scalar value, but found: ${i}`),{value:"",type:null,comment:"",range:[n,n+s.length,n+s.length]}}let c=n+s.length,d=Qhe.resolveEnd(a,c,e,r);return{value:A,type:o,comment:d.comment,range:[n,c,d.offset]}}function She(t,e){let r="";switch(t[0]){case" ":r="a tab character";break;case",":r="flow indicator character ,";break;case"%":r="directive indicator character %";break;case"|":case">":{r=`block scalar indicator ${t[0]}`;break}case"@":case"`":{r=`reserved character ${t[0]}`;break}}return r&&e(0,"BAD_SCALAR_START",`Plain value cannot start with ${r}`),IL(t)}function bhe(t,e){return(t[t.length-1]!=="'"||t.length===1)&&e(t.length,"MISSING_CHAR","Missing closing 'quote"),IL(t.slice(1,-1)).replace(/''/g,"'")}function IL(t){let e,r;try{e=new RegExp(`(.*?)(?s?t.slice(s,n+1):i)}else r+=i}return(t[t.length-1]!=='"'||t.length===1)&&e(t.length,"MISSING_CHAR",'Missing closing "quote'),r}function Rhe(t,e){let r="",n=t[e+1];for(;(n===" "||n===" "||n===` -`||n==="\r")&&!(n==="\r"&&t[e+2]!==` -`);)n===` -`&&(r+=` -`),e+=1,n=t[e+1];return r||(r=" "),{fold:r,offset:e}}var Nhe={0:"\0",a:"\x07",b:"\b",e:"\x1B",f:"\f",n:` -`,r:"\r",t:" ",v:"\v",N:"\x85",_:"\xA0",L:"\u2028",P:"\u2029"," ":" ",'"':'"',"/":"/","\\":"\\"," ":" "};function The(t,e,r,n){let i=t.substr(e,r),a=i.length===r&&/^[0-9a-fA-F]+$/.test(i)?parseInt(i,16):NaN;if(isNaN(a)){let o=t.substr(e-2,r+2);return n(e-2,"BAD_DQ_ESCAPE",`Invalid escape sequence ${o}`),o}return String.fromCodePoint(a)}BL.resolveFlowScalar=whe});var SL=g(wL=>{"use strict";var _l=qe(),QL=ur(),Dhe=gQ(),khe=yQ();function Phe(t,e,r,n){let{value:i,type:s,comment:a,range:o}=e.type==="block-scalar"?Dhe.resolveBlockScalar(t,e,n):khe.resolveFlowScalar(e,t.options.strict,n),A=r?t.directives.tagName(r.source,d=>n(r,"TAG_RESOLVE_FAILED",d)):null,l;t.options.stringKeys&&t.atKey?l=t.schema[_l.SCALAR]:A?l=_he(t.schema,i,A,r,n):e.type==="scalar"?l=Mhe(t,i,e,n):l=t.schema[_l.SCALAR];let c;try{let d=l.resolve(i,p=>n(r??e,"TAG_RESOLVE_FAILED",p),t.options);c=_l.isScalar(d)?d:new QL.Scalar(d)}catch(d){let p=d instanceof Error?d.message:String(d);n(r??e,"TAG_RESOLVE_FAILED",p),c=new QL.Scalar(i)}return c.range=o,c.source=i,s&&(c.type=s),A&&(c.tag=A),l.format&&(c.format=l.format),a&&(c.comment=a),c}function _he(t,e,r,n,i){if(r==="!")return t[_l.SCALAR];let s=[];for(let o of t.tags)if(!o.collection&&o.tag===r)if(o.default&&o.test)s.push(o);else return o;for(let o of s)if(o.test?.test(e))return o;let a=t.knownTags[r];return a&&!a.collection?(t.tags.push(Object.assign({},a,{default:!1,test:void 0})),a):(i(n,"TAG_RESOLVE_FAILED",`Unresolved tag: ${r}`,r!=="tag:yaml.org,2002:str"),t[_l.SCALAR])}function Mhe({atKey:t,directives:e,schema:r},n,i,s){let a=r.tags.find(o=>(o.default===!0||t&&o.default==="key")&&o.test?.test(n))||r[_l.SCALAR];if(r.compat){let o=r.compat.find(A=>A.default&&A.test?.test(n))??r[_l.SCALAR];if(a.tag!==o.tag){let A=e.tagString(a.tag),l=e.tagString(o.tag),c=`Value may be parsed as either ${A} or ${l}`;s(i,"TAG_RESOLVE_FAILED",c,!0)}}return a}wL.composeScalar=Phe});var vL=g(bL=>{"use strict";function Ohe(t,e,r){if(e){r===null&&(r=e.length);for(let n=r-1;n>=0;--n){let i=e[n];switch(i.type){case"space":case"comment":case"newline":t-=i.source.length;continue}for(i=e[++n];i?.type==="space";)t+=i.source.length,i=e[++n];break}}return t}bL.emptyScalarPosition=Ohe});var TL=g(IQ=>{"use strict";var xhe=mh(),Lhe=qe(),Fhe=yL(),RL=SL(),Uhe=pp(),qhe=vL(),Vhe={composeNode:NL,composeEmptyNode:CQ};function NL(t,e,r,n){let i=t.atKey,{spaceBefore:s,comment:a,anchor:o,tag:A}=r,l,c=!0;switch(e.type){case"alias":l=Ghe(t,e,n),(o||A)&&n(e,"ALIAS_PROPS","An alias node must not specify any properties");break;case"scalar":case"single-quoted-scalar":case"double-quoted-scalar":case"block-scalar":l=RL.composeScalar(t,e,A,n),o&&(l.anchor=o.source.substring(1));break;case"block-map":case"block-seq":case"flow-collection":l=Fhe.composeCollection(Vhe,t,e,r,n),o&&(l.anchor=o.source.substring(1));break;default:{let d=e.type==="error"?e.message:`Unsupported token (type: ${e.type})`;n(e,"UNEXPECTED_TOKEN",d),l=CQ(t,e.offset,void 0,null,r,n),c=!1}}return o&&l.anchor===""&&n(o,"BAD_ALIAS","Anchor cannot be an empty string"),i&&t.options.stringKeys&&(!Lhe.isScalar(l)||typeof l.value!="string"||l.tag&&l.tag!=="tag:yaml.org,2002:str")&&n(A??e,"NON_STRING_KEY","With stringKeys, all keys must be strings"),s&&(l.spaceBefore=!0),a&&(e.type==="scalar"&&e.source===""?l.comment=a:l.commentBefore=a),t.options.keepSourceTokens&&c&&(l.srcToken=e),l}function CQ(t,e,r,n,{spaceBefore:i,comment:s,anchor:a,tag:o,end:A},l){let c={type:"scalar",offset:qhe.emptyScalarPosition(e,r,n),indent:-1,source:""},d=RL.composeScalar(t,c,o,l);return a&&(d.anchor=a.source.substring(1),d.anchor===""&&l(a,"BAD_ALIAS","Anchor cannot be an empty string")),i&&(d.spaceBefore=!0),s&&(d.comment=s,d.range[2]=A),d}function Ghe({options:t},{offset:e,source:r,end:n},i){let s=new xhe.Alias(r.substring(1));s.source===""&&i(e,"BAD_ALIAS","Alias cannot be an empty string"),s.source.endsWith(":")&&i(e+r.length-1,"BAD_ALIAS","Alias ending in : is ambiguous",!0);let a=e+r.length,o=Uhe.resolveEnd(n,a,t.strict,i);return s.range=[e,a,o.offset],o.comment&&(s.comment=o.comment),s}IQ.composeEmptyNode=CQ;IQ.composeNode=NL});var PL=g(kL=>{"use strict";var Hhe=Dh(),DL=TL(),Yhe=pp(),Jhe=Mh();function jhe(t,e,{offset:r,start:n,value:i,end:s},a){let o=Object.assign({_directives:e},t),A=new Hhe.Document(void 0,o),l={atKey:!1,atRoot:!0,directives:A.directives,options:A.options,schema:A.schema},c=Jhe.resolveProps(n,{indicator:"doc-start",next:i??s?.[0],offset:r,onError:a,parentIndent:0,startOnNewline:!0});c.found&&(A.directives.docStart=!0,i&&(i.type==="block-map"||i.type==="block-seq")&&!c.hasNewline&&a(c.end,"MISSING_CHAR","Block collection cannot start on same line with directives-end marker")),A.contents=i?DL.composeNode(l,i,c,a):DL.composeEmptyNode(l,c.end,n,null,c,a);let d=A.contents.range[2],p=Yhe.resolveEnd(s,d,!1,a);return p.comment&&(A.comment=p.comment),A.range=[r,d,p.offset],A}kL.composeDoc=jhe});var QQ=g(OL=>{"use strict";var zhe=require("node:process"),Whe=A3(),$he=Dh(),Oh=_h(),_L=qe(),Khe=PL(),Xhe=pp();function xh(t){if(typeof t=="number")return[t,t+1];if(Array.isArray(t))return t.length===2?t:[t[0],t[1]];let{offset:e,source:r}=t;return[e,e+(typeof r=="string"?r.length:1)]}function ML(t){let e="",r=!1,n=!1;for(let i=0;i{let a=xh(r);s?this.warnings.push(new Oh.YAMLWarning(a,n,i)):this.errors.push(new Oh.YAMLParseError(a,n,i))},this.directives=new Whe.Directives({version:e.version||"1.2"}),this.options=e}decorate(e,r){let{comment:n,afterEmptyLine:i}=ML(this.prelude);if(n){let s=e.contents;if(r)e.comment=e.comment?`${e.comment} -${n}`:n;else if(i||e.directives.docStart||!s)e.commentBefore=n;else if(_L.isCollection(s)&&!s.flow&&s.items.length>0){let a=s.items[0];_L.isPair(a)&&(a=a.key);let o=a.commentBefore;a.commentBefore=o?`${n} -${o}`:n}else{let a=s.commentBefore;s.commentBefore=a?`${n} -${a}`:n}}r?(Array.prototype.push.apply(e.errors,this.errors),Array.prototype.push.apply(e.warnings,this.warnings)):(e.errors=this.errors,e.warnings=this.warnings),this.prelude=[],this.errors=[],this.warnings=[]}streamInfo(){return{comment:ML(this.prelude).comment,directives:this.directives,errors:this.errors,warnings:this.warnings}}*compose(e,r=!1,n=-1){for(let i of e)yield*this.next(i);yield*this.end(r,n)}*next(e){switch(zhe.env.LOG_STREAM&&console.dir(e,{depth:null}),e.type){case"directive":this.directives.add(e.source,(r,n,i)=>{let s=xh(e);s[0]+=r,this.onError(s,"BAD_DIRECTIVE",n,i)}),this.prelude.push(e.source),this.atDirectives=!0;break;case"document":{let r=Khe.composeDoc(this.options,this.directives,e,this.onError);this.atDirectives&&!r.directives.docStart&&this.onError(e,"MISSING_CHAR","Missing directives-end/doc-start indicator line"),this.decorate(r,!1),this.doc&&(yield this.doc),this.doc=r,this.atDirectives=!1;break}case"byte-order-mark":case"space":break;case"comment":case"newline":this.prelude.push(e.source);break;case"error":{let r=e.source?`${e.message}: ${JSON.stringify(e.source)}`:e.message,n=new Oh.YAMLParseError(xh(e),"UNEXPECTED_TOKEN",r);this.atDirectives||!this.doc?this.errors.push(n):this.doc.errors.push(n);break}case"doc-end":{if(!this.doc){let n="Unexpected doc-end without preceding document";this.errors.push(new Oh.YAMLParseError(xh(e),"UNEXPECTED_TOKEN",n));break}this.doc.directives.docEnd=!0;let r=Xhe.resolveEnd(e.end,e.offset+e.source.length,this.doc.options.strict,this.onError);if(this.decorate(this.doc,!0),r.comment){let n=this.doc.comment;this.doc.comment=n?`${n} -${r.comment}`:r.comment}this.doc.range[2]=r.offset;break}default:this.errors.push(new Oh.YAMLParseError(xh(e),"UNEXPECTED_TOKEN",`Unsupported token ${e.type}`))}}*end(e=!1,r=-1){if(this.doc)this.decorate(this.doc,!0),yield this.doc,this.doc=null;else if(e){let n=Object.assign({_directives:this.directives},this.options),i=new $he.Document(void 0,n);this.atDirectives&&this.onError(r,"MISSING_CHAR","Missing directives-end indicator line"),i.range=[0,r,r],this.decorate(i,!1),yield i}}};OL.Composer=BQ});var FL=g(c2=>{"use strict";var Zhe=gQ(),efe=yQ(),tfe=_h(),xL=yh();function rfe(t,e=!0,r){if(t){let n=(i,s,a)=>{let o=typeof i=="number"?i:Array.isArray(i)?i[0]:i.offset;if(r)r(o,s,a);else throw new tfe.YAMLParseError([o,o+1],s,a)};switch(t.type){case"scalar":case"single-quoted-scalar":case"double-quoted-scalar":return efe.resolveFlowScalar(t,e,n);case"block-scalar":return Zhe.resolveBlockScalar({options:{strict:e}},t,n)}}return null}function nfe(t,e){let{implicitKey:r=!1,indent:n,inFlow:i=!1,offset:s=-1,type:a="PLAIN"}=e,o=xL.stringifyString({type:a,value:t},{implicitKey:r,indent:n>0?" ".repeat(n):"",inFlow:i,options:{blockQuote:!0,lineWidth:-1}}),A=e.end??[{type:"newline",offset:-1,indent:n,source:` -`}];switch(o[0]){case"|":case">":{let l=o.indexOf(` -`),c=o.substring(0,l),d=o.substring(l+1)+` -`,p=[{type:"block-scalar-header",offset:s,indent:n,source:c}];return LL(p,A)||p.push({type:"newline",offset:-1,indent:n,source:` -`}),{type:"block-scalar",offset:s,indent:n,props:p,source:d}}case'"':return{type:"double-quoted-scalar",offset:s,indent:n,source:o,end:A};case"'":return{type:"single-quoted-scalar",offset:s,indent:n,source:o,end:A};default:return{type:"scalar",offset:s,indent:n,source:o,end:A}}}function ife(t,e,r={}){let{afterKey:n=!1,implicitKey:i=!1,inFlow:s=!1,type:a}=r,o="indent"in t?t.indent:null;if(n&&typeof o=="number"&&(o+=2),!a)switch(t.type){case"single-quoted-scalar":a="QUOTE_SINGLE";break;case"double-quoted-scalar":a="QUOTE_DOUBLE";break;case"block-scalar":{let l=t.props[0];if(l.type!=="block-scalar-header")throw new Error("Invalid block scalar header");a=l.source[0]===">"?"BLOCK_FOLDED":"BLOCK_LITERAL";break}default:a="PLAIN"}let A=xL.stringifyString({type:a,value:e},{implicitKey:i||o===null,indent:o!==null&&o>0?" ".repeat(o):"",inFlow:s,options:{blockQuote:!0,lineWidth:-1}});switch(A[0]){case"|":case">":sfe(t,A);break;case'"':wQ(t,A,"double-quoted-scalar");break;case"'":wQ(t,A,"single-quoted-scalar");break;default:wQ(t,A,"scalar")}}function sfe(t,e){let r=e.indexOf(` -`),n=e.substring(0,r),i=e.substring(r+1)+` -`;if(t.type==="block-scalar"){let s=t.props[0];if(s.type!=="block-scalar-header")throw new Error("Invalid block scalar header");s.source=n,t.source=i}else{let{offset:s}=t,a="indent"in t?t.indent:-1,o=[{type:"block-scalar-header",offset:s,indent:a,source:n}];LL(o,"end"in t?t.end:void 0)||o.push({type:"newline",offset:-1,indent:a,source:` -`});for(let A of Object.keys(t))A!=="type"&&A!=="offset"&&delete t[A];Object.assign(t,{type:"block-scalar",indent:a,props:o,source:i})}}function LL(t,e){if(e)for(let r of e)switch(r.type){case"space":case"comment":t.push(r);break;case"newline":return t.push(r),!0}return!1}function wQ(t,e,r){switch(t.type){case"scalar":case"double-quoted-scalar":case"single-quoted-scalar":t.type=r,t.source=e;break;case"block-scalar":{let n=t.props.slice(1),i=e.length;t.props[0].type==="block-scalar-header"&&(i-=t.props[0].source.length);for(let s of n)s.offset+=i;delete t.props,Object.assign(t,{type:r,source:e,end:n});break}case"block-map":case"block-seq":{let i={type:"newline",offset:t.offset+e.length,indent:t.indent,source:` -`};delete t.items,Object.assign(t,{type:r,source:e,end:[i]});break}default:{let n="indent"in t?t.indent:-1,i="end"in t&&Array.isArray(t.end)?t.end.filter(s=>s.type==="space"||s.type==="comment"||s.type==="newline"):[];for(let s of Object.keys(t))s!=="type"&&s!=="offset"&&delete t[s];Object.assign(t,{type:r,indent:n,source:e,end:i})}}}c2.createScalarToken=nfe;c2.resolveAsScalar=rfe;c2.setScalarValue=ife});var qL=g(UL=>{"use strict";var afe=t=>"type"in t?p2(t):d2(t);function p2(t){switch(t.type){case"block-scalar":{let e="";for(let r of t.props)e+=p2(r);return e+t.source}case"block-map":case"block-seq":{let e="";for(let r of t.items)e+=d2(r);return e}case"flow-collection":{let e=t.start.source;for(let r of t.items)e+=d2(r);for(let r of t.end)e+=r.source;return e}case"document":{let e=d2(t);if(t.end)for(let r of t.end)e+=r.source;return e}default:{let e=t.source;if("end"in t&&t.end)for(let r of t.end)e+=r.source;return e}}}function d2({start:t,key:e,sep:r,value:n}){let i="";for(let s of t)i+=s.source;if(e&&(i+=p2(e)),r)for(let s of r)i+=s.source;return n&&(i+=p2(n)),i}UL.stringify=afe});var YL=g(HL=>{"use strict";var SQ=Symbol("break visit"),ofe=Symbol("skip children"),VL=Symbol("remove item");function Ml(t,e){"type"in t&&t.type==="document"&&(t={start:t.start,value:t.value}),GL(Object.freeze([]),t,e)}Ml.BREAK=SQ;Ml.SKIP=ofe;Ml.REMOVE=VL;Ml.itemAtPath=(t,e)=>{let r=t;for(let[n,i]of e){let s=r?.[n];if(s&&"items"in s)r=s.items[i];else return}return r};Ml.parentCollection=(t,e)=>{let r=Ml.itemAtPath(t,e.slice(0,-1)),n=e[e.length-1][0],i=r?.[n];if(i&&"items"in i)return i;throw new Error("Parent collection not found")};function GL(t,e,r){let n=r(e,t);if(typeof n=="symbol")return n;for(let i of["key","value"]){let s=e[i];if(s&&"items"in s){for(let a=0;a{"use strict";var bQ=FL(),Afe=qL(),lfe=YL(),vQ="\uFEFF",RQ="",NQ="",TQ="",cfe=t=>!!t&&"items"in t,dfe=t=>!!t&&(t.type==="scalar"||t.type==="single-quoted-scalar"||t.type==="double-quoted-scalar"||t.type==="block-scalar");function pfe(t){switch(t){case vQ:return"";case RQ:return"";case NQ:return"";case TQ:return"";default:return JSON.stringify(t)}}function ufe(t){switch(t){case vQ:return"byte-order-mark";case RQ:return"doc-mode";case NQ:return"flow-error-end";case TQ:return"scalar";case"---":return"doc-start";case"...":return"doc-end";case"":case` -`:case`\r -`:return"newline";case"-":return"seq-item-ind";case"?":return"explicit-key-ind";case":":return"map-value-ind";case"{":return"flow-map-start";case"}":return"flow-map-end";case"[":return"flow-seq-start";case"]":return"flow-seq-end";case",":return"comma"}switch(t[0]){case" ":case" ":return"space";case"#":return"comment";case"%":return"directive-line";case"*":return"alias";case"&":return"anchor";case"!":return"tag";case"'":return"single-quoted-scalar";case'"':return"double-quoted-scalar";case"|":case">":return"block-scalar-header"}return null}$n.createScalarToken=bQ.createScalarToken;$n.resolveAsScalar=bQ.resolveAsScalar;$n.setScalarValue=bQ.setScalarValue;$n.stringify=Afe.stringify;$n.visit=lfe.visit;$n.BOM=vQ;$n.DOCUMENT=RQ;$n.FLOW_END=NQ;$n.SCALAR=TQ;$n.isCollection=cfe;$n.isScalar=dfe;$n.prettyToken=pfe;$n.tokenType=ufe});var PQ=g(jL=>{"use strict";var Lh=u2();function bs(t){switch(t){case void 0:case" ":case` -`:case"\r":case" ":return!0;default:return!1}}var JL=new Set("0123456789ABCDEFabcdef"),mfe=new Set("0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-#;/?:@&=+$_.!~*'()"),m2=new Set(",[]{}"),hfe=new Set(` ,[]{} -\r `),DQ=t=>!t||hfe.has(t),kQ=class{constructor(){this.atEnd=!1,this.blockScalarIndent=-1,this.blockScalarKeep=!1,this.buffer="",this.flowKey=!1,this.flowLevel=0,this.indentNext=0,this.indentValue=0,this.lineEndPos=null,this.next=null,this.pos=0}*lex(e,r=!1){if(e){if(typeof e!="string")throw TypeError("source is not a string");this.buffer=this.buffer?this.buffer+e:e,this.lineEndPos=null}this.atEnd=!r;let n=this.next??"stream";for(;n&&(r||this.hasChars(1));)n=yield*this.parseNext(n)}atLineEnd(){let e=this.pos,r=this.buffer[e];for(;r===" "||r===" ";)r=this.buffer[++e];return!r||r==="#"||r===` -`?!0:r==="\r"?this.buffer[e+1]===` -`:!1}charAt(e){return this.buffer[this.pos+e]}continueScalar(e){let r=this.buffer[e];if(this.indentNext>0){let n=0;for(;r===" ";)r=this.buffer[++n+e];if(r==="\r"){let i=this.buffer[n+e+1];if(i===` -`||!i&&!this.atEnd)return e+n+1}return r===` -`||n>=this.indentNext||!r&&!this.atEnd?e+n:-1}if(r==="-"||r==="."){let n=this.buffer.substr(e,3);if((n==="---"||n==="...")&&bs(this.buffer[e+3]))return-1}return e}getLine(){let e=this.lineEndPos;return(typeof e!="number"||e!==-1&&ethis.indentValue&&!bs(this.charAt(1))&&(this.indentNext=this.indentValue),yield*this.parseBlockStart()}*parseBlockStart(){let[e,r]=this.peek(2);if(!r&&!this.atEnd)return this.setNext("block-start");if((e==="-"||e==="?"||e===":")&&bs(r)){let n=(yield*this.pushCount(1))+(yield*this.pushSpaces(!0));return this.indentNext=this.indentValue+1,this.indentValue+=n,yield*this.parseBlockStart()}return"doc"}*parseDocument(){yield*this.pushSpaces(!0);let e=this.getLine();if(e===null)return this.setNext("doc");let r=yield*this.pushIndicators();switch(e[r]){case"#":yield*this.pushCount(e.length-r);case void 0:return yield*this.pushNewline(),yield*this.parseLineStart();case"{":case"[":return yield*this.pushCount(1),this.flowKey=!1,this.flowLevel=1,"flow";case"}":case"]":return yield*this.pushCount(1),"doc";case"*":return yield*this.pushUntil(DQ),"doc";case'"':case"'":return yield*this.parseQuotedScalar();case"|":case">":return r+=yield*this.parseBlockScalarHeader(),r+=yield*this.pushSpaces(!0),yield*this.pushCount(e.length-r),yield*this.pushNewline(),yield*this.parseBlockScalar();default:return yield*this.parsePlainScalar()}}*parseFlowCollection(){let e,r,n=-1;do e=yield*this.pushNewline(),e>0?(r=yield*this.pushSpaces(!1),this.indentValue=n=r):r=0,r+=yield*this.pushSpaces(!0);while(e+r>0);let i=this.getLine();if(i===null)return this.setNext("flow");if((n!==-1&&n"0"&&r<="9")this.blockScalarIndent=Number(r)-1;else if(r!=="-")break}return yield*this.pushUntil(r=>bs(r)||r==="#")}*parseBlockScalar(){let e=this.pos-1,r=0,n;e:for(let s=this.pos;n=this.buffer[s];++s)switch(n){case" ":r+=1;break;case` -`:e=s,r=0;break;case"\r":{let a=this.buffer[s+1];if(!a&&!this.atEnd)return this.setNext("block-scalar");if(a===` -`)break}default:break e}if(!n&&!this.atEnd)return this.setNext("block-scalar");if(r>=this.indentNext){this.blockScalarIndent===-1?this.indentNext=r:this.indentNext=this.blockScalarIndent+(this.indentNext===0?1:this.indentNext);do{let s=this.continueScalar(e+1);if(s===-1)break;e=this.buffer.indexOf(` -`,s)}while(e!==-1);if(e===-1){if(!this.atEnd)return this.setNext("block-scalar");e=this.buffer.length}}let i=e+1;for(n=this.buffer[i];n===" ";)n=this.buffer[++i];if(n===" "){for(;n===" "||n===" "||n==="\r"||n===` -`;)n=this.buffer[++i];e=i-1}else if(!this.blockScalarKeep)do{let s=e-1,a=this.buffer[s];a==="\r"&&(a=this.buffer[--s]);let o=s;for(;a===" ";)a=this.buffer[--s];if(a===` -`&&s>=this.pos&&s+1+r>o)e=s;else break}while(!0);return yield Lh.SCALAR,yield*this.pushToIndex(e+1,!0),yield*this.parseLineStart()}*parsePlainScalar(){let e=this.flowLevel>0,r=this.pos-1,n=this.pos-1,i;for(;i=this.buffer[++n];)if(i===":"){let s=this.buffer[n+1];if(bs(s)||e&&m2.has(s))break;r=n}else if(bs(i)){let s=this.buffer[n+1];if(i==="\r"&&(s===` -`?(n+=1,i=` -`,s=this.buffer[n+1]):r=n),s==="#"||e&&m2.has(s))break;if(i===` -`){let a=this.continueScalar(n+1);if(a===-1)break;n=Math.max(n,a-2)}}else{if(e&&m2.has(i))break;r=n}return!i&&!this.atEnd?this.setNext("plain-scalar"):(yield Lh.SCALAR,yield*this.pushToIndex(r+1,!0),e?"flow":"doc")}*pushCount(e){return e>0?(yield this.buffer.substr(this.pos,e),this.pos+=e,e):0}*pushToIndex(e,r){let n=this.buffer.slice(this.pos,e);return n?(yield n,this.pos+=n.length,n.length):(r&&(yield""),0)}*pushIndicators(){switch(this.charAt(0)){case"!":return(yield*this.pushTag())+(yield*this.pushSpaces(!0))+(yield*this.pushIndicators());case"&":return(yield*this.pushUntil(DQ))+(yield*this.pushSpaces(!0))+(yield*this.pushIndicators());case"-":case"?":case":":{let e=this.flowLevel>0,r=this.charAt(1);if(bs(r)||e&&m2.has(r))return e?this.flowKey&&(this.flowKey=!1):this.indentNext=this.indentValue+1,(yield*this.pushCount(1))+(yield*this.pushSpaces(!0))+(yield*this.pushIndicators())}}return 0}*pushTag(){if(this.charAt(1)==="<"){let e=this.pos+2,r=this.buffer[e];for(;!bs(r)&&r!==">";)r=this.buffer[++e];return yield*this.pushToIndex(r===">"?e+1:e,!1)}else{let e=this.pos+1,r=this.buffer[e];for(;r;)if(mfe.has(r))r=this.buffer[++e];else if(r==="%"&&JL.has(this.buffer[e+1])&&JL.has(this.buffer[e+2]))r=this.buffer[e+=3];else break;return yield*this.pushToIndex(e,!1)}}*pushNewline(){let e=this.buffer[this.pos];return e===` -`?yield*this.pushCount(1):e==="\r"&&this.charAt(1)===` -`?yield*this.pushCount(2):0}*pushSpaces(e){let r=this.pos-1,n;do n=this.buffer[++r];while(n===" "||e&&n===" ");let i=r-this.pos;return i>0&&(yield this.buffer.substr(this.pos,i),this.pos=r),i}*pushUntil(e){let r=this.pos,n=this.buffer[r];for(;!e(n);)n=this.buffer[++r];return yield*this.pushToIndex(r,!1)}};jL.Lexer=kQ});var MQ=g(zL=>{"use strict";var _Q=class{constructor(){this.lineStarts=[],this.addNewLine=e=>this.lineStarts.push(e),this.linePos=e=>{let r=0,n=this.lineStarts.length;for(;r>1;this.lineStarts[s]{"use strict";var ffe=require("node:process"),WL=u2(),gfe=PQ();function AA(t,e){for(let r=0;r=0;)switch(t[e].type){case"doc-start":case"explicit-key-ind":case"map-value-ind":case"seq-item-ind":case"newline":break e}for(;t[++e]?.type==="space";);return t.splice(e,t.length)}function KL(t){if(t.start.type==="flow-seq-start")for(let e of t.items)e.sep&&!e.value&&!AA(e.start,"explicit-key-ind")&&!AA(e.sep,"map-value-ind")&&(e.key&&(e.value=e.key),delete e.key,XL(e.value)?e.value.end?Array.prototype.push.apply(e.value.end,e.sep):e.value.end=e.sep:Array.prototype.push.apply(e.start,e.sep),delete e.sep)}var OQ=class{constructor(e){this.atNewLine=!0,this.atScalar=!1,this.indent=0,this.offset=0,this.onKeyLine=!1,this.stack=[],this.source="",this.type="",this.lexer=new gfe.Lexer,this.onNewLine=e}*parse(e,r=!1){this.onNewLine&&this.offset===0&&this.onNewLine(0);for(let n of this.lexer.lex(e,r))yield*this.next(n);r||(yield*this.end())}*next(e){if(this.source=e,ffe.env.LOG_TOKENS&&console.log("|",WL.prettyToken(e)),this.atScalar){this.atScalar=!1,yield*this.step(),this.offset+=e.length;return}let r=WL.tokenType(e);if(r)if(r==="scalar")this.atNewLine=!1,this.atScalar=!0,this.type="scalar";else{switch(this.type=r,yield*this.step(),r){case"newline":this.atNewLine=!0,this.indent=0,this.onNewLine&&this.onNewLine(this.offset+e.length);break;case"space":this.atNewLine&&e[0]===" "&&(this.indent+=e.length);break;case"explicit-key-ind":case"map-value-ind":case"seq-item-ind":this.atNewLine&&(this.indent+=e.length);break;case"doc-mode":case"flow-error-end":return;default:this.atNewLine=!1}this.offset+=e.length}else{let n=`Not a YAML token: ${e}`;yield*this.pop({type:"error",offset:this.offset,message:n,source:e}),this.offset+=e.length}}*end(){for(;this.stack.length>0;)yield*this.pop()}get sourceToken(){return{type:this.type,offset:this.offset,indent:this.indent,source:this.source}}*step(){let e=this.peek(1);if(this.type==="doc-end"&&(!e||e.type!=="doc-end")){for(;this.stack.length>0;)yield*this.pop();this.stack.push({type:"doc-end",offset:this.offset,source:this.source});return}if(!e)return yield*this.stream();switch(e.type){case"document":return yield*this.document(e);case"alias":case"scalar":case"single-quoted-scalar":case"double-quoted-scalar":return yield*this.scalar(e);case"block-scalar":return yield*this.blockScalar(e);case"block-map":return yield*this.blockMap(e);case"block-seq":return yield*this.blockSequence(e);case"flow-collection":return yield*this.flowCollection(e);case"doc-end":return yield*this.documentEnd(e)}yield*this.pop()}peek(e){return this.stack[this.stack.length-e]}*pop(e){let r=e??this.stack.pop();if(!r)yield{type:"error",offset:this.offset,source:"",message:"Tried to pop an empty stack"};else if(this.stack.length===0)yield r;else{let n=this.peek(1);switch(r.type==="block-scalar"?r.indent="indent"in n?n.indent:0:r.type==="flow-collection"&&n.type==="document"&&(r.indent=0),r.type==="flow-collection"&&KL(r),n.type){case"document":n.value=r;break;case"block-scalar":n.props.push(r);break;case"block-map":{let i=n.items[n.items.length-1];if(i.value){n.items.push({start:[],key:r,sep:[]}),this.onKeyLine=!0;return}else if(i.sep)i.value=r;else{Object.assign(i,{key:r,sep:[]}),this.onKeyLine=!i.explicitKey;return}break}case"block-seq":{let i=n.items[n.items.length-1];i.value?n.items.push({start:[],value:r}):i.value=r;break}case"flow-collection":{let i=n.items[n.items.length-1];!i||i.value?n.items.push({start:[],key:r,sep:[]}):i.sep?i.value=r:Object.assign(i,{key:r,sep:[]});return}default:yield*this.pop(),yield*this.pop(r)}if((n.type==="document"||n.type==="block-map"||n.type==="block-seq")&&(r.type==="block-map"||r.type==="block-seq")){let i=r.items[r.items.length-1];i&&!i.sep&&!i.value&&i.start.length>0&&$L(i.start)===-1&&(r.indent===0||i.start.every(s=>s.type!=="comment"||s.indent=e.indent){let n=!this.onKeyLine&&this.indent===e.indent,i=n&&(r.sep||r.explicitKey)&&this.type!=="seq-item-ind",s=[];if(i&&r.sep&&!r.value){let a=[];for(let o=0;oe.indent&&(a.length=0);break;default:a.length=0}}a.length>=2&&(s=r.sep.splice(a[1]))}switch(this.type){case"anchor":case"tag":i||r.value?(s.push(this.sourceToken),e.items.push({start:s}),this.onKeyLine=!0):r.sep?r.sep.push(this.sourceToken):r.start.push(this.sourceToken);return;case"explicit-key-ind":!r.sep&&!r.explicitKey?(r.start.push(this.sourceToken),r.explicitKey=!0):i||r.value?(s.push(this.sourceToken),e.items.push({start:s,explicitKey:!0})):this.stack.push({type:"block-map",offset:this.offset,indent:this.indent,items:[{start:[this.sourceToken],explicitKey:!0}]}),this.onKeyLine=!0;return;case"map-value-ind":if(r.explicitKey)if(r.sep)if(r.value)e.items.push({start:[],key:null,sep:[this.sourceToken]});else if(AA(r.sep,"map-value-ind"))this.stack.push({type:"block-map",offset:this.offset,indent:this.indent,items:[{start:s,key:null,sep:[this.sourceToken]}]});else if(XL(r.key)&&!AA(r.sep,"newline")){let a=up(r.start),o=r.key,A=r.sep;A.push(this.sourceToken),delete r.key,delete r.sep,this.stack.push({type:"block-map",offset:this.offset,indent:this.indent,items:[{start:a,key:o,sep:A}]})}else s.length>0?r.sep=r.sep.concat(s,this.sourceToken):r.sep.push(this.sourceToken);else if(AA(r.start,"newline"))Object.assign(r,{key:null,sep:[this.sourceToken]});else{let a=up(r.start);this.stack.push({type:"block-map",offset:this.offset,indent:this.indent,items:[{start:a,key:null,sep:[this.sourceToken]}]})}else r.sep?r.value||i?e.items.push({start:s,key:null,sep:[this.sourceToken]}):AA(r.sep,"map-value-ind")?this.stack.push({type:"block-map",offset:this.offset,indent:this.indent,items:[{start:[],key:null,sep:[this.sourceToken]}]}):r.sep.push(this.sourceToken):Object.assign(r,{key:null,sep:[this.sourceToken]});this.onKeyLine=!0;return;case"alias":case"scalar":case"single-quoted-scalar":case"double-quoted-scalar":{let a=this.flowScalar(this.type);i||r.value?(e.items.push({start:s,key:a,sep:[]}),this.onKeyLine=!0):r.sep?this.stack.push(a):(Object.assign(r,{key:a,sep:[]}),this.onKeyLine=!0);return}default:{let a=this.startBlockValue(e);if(a){if(a.type==="block-seq"){if(!r.explicitKey&&r.sep&&!AA(r.sep,"newline")){yield*this.pop({type:"error",offset:this.offset,message:"Unexpected block-seq-ind on same line with key",source:this.source});return}}else n&&e.items.push({start:s});this.stack.push(a);return}}}}yield*this.pop(),yield*this.step()}*blockSequence(e){let r=e.items[e.items.length-1];switch(this.type){case"newline":if(r.value){let n="end"in r.value?r.value.end:void 0;(Array.isArray(n)?n[n.length-1]:void 0)?.type==="comment"?n?.push(this.sourceToken):e.items.push({start:[this.sourceToken]})}else r.start.push(this.sourceToken);return;case"space":case"comment":if(r.value)e.items.push({start:[this.sourceToken]});else{if(this.atIndentedComment(r.start,e.indent)){let i=e.items[e.items.length-2]?.value?.end;if(Array.isArray(i)){Array.prototype.push.apply(i,r.start),i.push(this.sourceToken),e.items.pop();return}}r.start.push(this.sourceToken)}return;case"anchor":case"tag":if(r.value||this.indent<=e.indent)break;r.start.push(this.sourceToken);return;case"seq-item-ind":if(this.indent!==e.indent)break;r.value||AA(r.start,"seq-item-ind")?e.items.push({start:[this.sourceToken]}):r.start.push(this.sourceToken);return}if(this.indent>e.indent){let n=this.startBlockValue(e);if(n){this.stack.push(n);return}}yield*this.pop(),yield*this.step()}*flowCollection(e){let r=e.items[e.items.length-1];if(this.type==="flow-error-end"){let n;do yield*this.pop(),n=this.peek(1);while(n&&n.type==="flow-collection")}else if(e.end.length===0){switch(this.type){case"comma":case"explicit-key-ind":!r||r.sep?e.items.push({start:[this.sourceToken]}):r.start.push(this.sourceToken);return;case"map-value-ind":!r||r.value?e.items.push({start:[],key:null,sep:[this.sourceToken]}):r.sep?r.sep.push(this.sourceToken):Object.assign(r,{key:null,sep:[this.sourceToken]});return;case"space":case"comment":case"newline":case"anchor":case"tag":!r||r.value?e.items.push({start:[this.sourceToken]}):r.sep?r.sep.push(this.sourceToken):r.start.push(this.sourceToken);return;case"alias":case"scalar":case"single-quoted-scalar":case"double-quoted-scalar":{let i=this.flowScalar(this.type);!r||r.value?e.items.push({start:[],key:i,sep:[]}):r.sep?this.stack.push(i):Object.assign(r,{key:i,sep:[]});return}case"flow-map-end":case"flow-seq-end":e.end.push(this.sourceToken);return}let n=this.startBlockValue(e);n?this.stack.push(n):(yield*this.pop(),yield*this.step())}else{let n=this.peek(2);if(n.type==="block-map"&&(this.type==="map-value-ind"&&n.indent===e.indent||this.type==="newline"&&!n.items[n.items.length-1].sep))yield*this.pop(),yield*this.step();else if(this.type==="map-value-ind"&&n.type!=="flow-collection"){let i=h2(n),s=up(i);KL(e);let a=e.end.splice(1,e.end.length);a.push(this.sourceToken);let o={type:"block-map",offset:e.offset,indent:e.indent,items:[{start:s,key:e,sep:a}]};this.onKeyLine=!0,this.stack[this.stack.length-1]=o}else yield*this.lineEnd(e)}}flowScalar(e){if(this.onNewLine){let r=this.source.indexOf(` -`)+1;for(;r!==0;)this.onNewLine(this.offset+r),r=this.source.indexOf(` -`,r)+1}return{type:e,offset:this.offset,indent:this.indent,source:this.source}}startBlockValue(e){switch(this.type){case"alias":case"scalar":case"single-quoted-scalar":case"double-quoted-scalar":return this.flowScalar(this.type);case"block-scalar-header":return{type:"block-scalar",offset:this.offset,indent:this.indent,props:[this.sourceToken],source:""};case"flow-map-start":case"flow-seq-start":return{type:"flow-collection",offset:this.offset,indent:this.indent,start:this.sourceToken,items:[],end:[]};case"seq-item-ind":return{type:"block-seq",offset:this.offset,indent:this.indent,items:[{start:[this.sourceToken]}]};case"explicit-key-ind":{this.onKeyLine=!0;let r=h2(e),n=up(r);return n.push(this.sourceToken),{type:"block-map",offset:this.offset,indent:this.indent,items:[{start:n,explicitKey:!0}]}}case"map-value-ind":{this.onKeyLine=!0;let r=h2(e),n=up(r);return{type:"block-map",offset:this.offset,indent:this.indent,items:[{start:n,key:null,sep:[this.sourceToken]}]}}}return null}atIndentedComment(e,r){return this.type!=="comment"||this.indent<=r?!1:e.every(n=>n.type==="newline"||n.type==="space")}*documentEnd(e){this.type!=="doc-mode"&&(e.end?e.end.push(this.sourceToken):e.end=[this.sourceToken],this.type==="newline"&&(yield*this.pop()))}*lineEnd(e){switch(this.type){case"comma":case"doc-start":case"doc-end":case"flow-seq-end":case"flow-map-end":case"map-value-ind":yield*this.pop(),yield*this.step();break;case"newline":this.onKeyLine=!1;case"space":case"comment":default:e.end?e.end.push(this.sourceToken):e.end=[this.sourceToken],this.type==="newline"&&(yield*this.pop())}}};ZL.Parser=OQ});var iF=g(Uh=>{"use strict";var eF=QQ(),Efe=Dh(),Fh=_h(),yfe=I3(),Cfe=qe(),Ife=MQ(),tF=xQ();function rF(t){let e=t.prettyErrors!==!1;return{lineCounter:t.lineCounter||e&&new Ife.LineCounter||null,prettyErrors:e}}function Bfe(t,e={}){let{lineCounter:r,prettyErrors:n}=rF(e),i=new tF.Parser(r?.addNewLine),s=new eF.Composer(e),a=Array.from(s.compose(i.parse(t)));if(n&&r)for(let o of a)o.errors.forEach(Fh.prettifyError(t,r)),o.warnings.forEach(Fh.prettifyError(t,r));return a.length>0?a:Object.assign([],{empty:!0},s.streamInfo())}function nF(t,e={}){let{lineCounter:r,prettyErrors:n}=rF(e),i=new tF.Parser(r?.addNewLine),s=new eF.Composer(e),a=null;for(let o of s.compose(i.parse(t),!0,t.length))if(!a)a=o;else if(a.options.logLevel!=="silent"){a.errors.push(new Fh.YAMLParseError(o.range.slice(0,2),"MULTIPLE_DOCS","Source contains multiple documents; please use YAML.parseAllDocuments()"));break}return n&&r&&(a.errors.forEach(Fh.prettifyError(t,r)),a.warnings.forEach(Fh.prettifyError(t,r))),a}function Qfe(t,e,r){let n;typeof e=="function"?n=e:r===void 0&&e&&typeof e=="object"&&(r=e);let i=nF(t,r);if(!i)return null;if(i.warnings.forEach(s=>yfe.warn(i.options.logLevel,s)),i.errors.length>0){if(i.options.logLevel!=="silent")throw i.errors[0];i.errors=[]}return i.toJS(Object.assign({reviver:n},r))}function wfe(t,e,r){let n=null;if(typeof e=="function"||Array.isArray(e)?n=e:r===void 0&&e&&(r=e),typeof r=="string"&&(r=r.length),typeof r=="number"){let i=Math.round(r);r=i<1?void 0:i>8?{indent:8}:{indent:i}}if(t===void 0){let{keepUndefined:i}=r??e??{};if(!i)return}return Cfe.isDocument(t)&&!n?t.toString(r):new Efe.Document(t,n,r).toString(r)}Uh.parse=Qfe;Uh.parseAllDocuments=Bfe;Uh.parseDocument=nF;Uh.stringify=wfe});var aF=g(Xe=>{"use strict";var Sfe=QQ(),bfe=Dh(),vfe=nQ(),LQ=_h(),Rfe=mh(),lA=qe(),Nfe=iA(),Tfe=ur(),Dfe=aA(),kfe=oA(),Pfe=u2(),_fe=PQ(),Mfe=MQ(),Ofe=xQ(),f2=iF(),sF=ch();Xe.Composer=Sfe.Composer;Xe.Document=bfe.Document;Xe.Schema=vfe.Schema;Xe.YAMLError=LQ.YAMLError;Xe.YAMLParseError=LQ.YAMLParseError;Xe.YAMLWarning=LQ.YAMLWarning;Xe.Alias=Rfe.Alias;Xe.isAlias=lA.isAlias;Xe.isCollection=lA.isCollection;Xe.isDocument=lA.isDocument;Xe.isMap=lA.isMap;Xe.isNode=lA.isNode;Xe.isPair=lA.isPair;Xe.isScalar=lA.isScalar;Xe.isSeq=lA.isSeq;Xe.Pair=Nfe.Pair;Xe.Scalar=Tfe.Scalar;Xe.YAMLMap=Dfe.YAMLMap;Xe.YAMLSeq=kfe.YAMLSeq;Xe.CST=Pfe;Xe.Lexer=_fe.Lexer;Xe.LineCounter=Mfe.LineCounter;Xe.Parser=Ofe.Parser;Xe.parse=f2.parse;Xe.parseAllDocuments=f2.parseAllDocuments;Xe.parseDocument=f2.parseDocument;Xe.stringify=f2.stringify;Xe.visit=sF.visit;Xe.visitAsync=sF.visitAsync});var lF=g((E_e,AF)=>{"use strict";var Jt={};AF.exports=Jt;function oF(t){return t<0?-1:1}function xfe(t){return t%1===.5&&(t&1)===0?Math.floor(t):Math.round(t)}function cA(t,e){e.unsigned||--t;let r=e.unsigned?0:-Math.pow(2,t),n=Math.pow(2,t)-1,i=e.moduloBitLength?Math.pow(2,e.moduloBitLength):Math.pow(2,t),s=e.moduloBitLength?Math.pow(2,e.moduloBitLength-1):Math.pow(2,t-1);return function(a,o){o||(o={});let A=+a;if(o.enforceRange){if(!Number.isFinite(A))throw new TypeError("Argument is not a finite number");if(A=oF(A)*Math.floor(Math.abs(A)),An)throw new TypeError("Argument is not in byte range");return A}if(!isNaN(A)&&o.clamp)return A=xfe(A),An&&(A=n),A;if(!Number.isFinite(A)||A===0)return 0;if(A=oF(A)*Math.floor(Math.abs(A)),A=A%i,!e.unsigned&&A>=s)return A-i;if(e.unsigned){if(A<0)A+=i;else if(A===-0)return 0}return A}}Jt.void=function(){};Jt.boolean=function(t){return!!t};Jt.byte=cA(8,{unsigned:!1});Jt.octet=cA(8,{unsigned:!0});Jt.short=cA(16,{unsigned:!1});Jt["unsigned short"]=cA(16,{unsigned:!0});Jt.long=cA(32,{unsigned:!1});Jt["unsigned long"]=cA(32,{unsigned:!0});Jt["long long"]=cA(32,{unsigned:!1,moduloBitLength:64});Jt["unsigned long long"]=cA(32,{unsigned:!0,moduloBitLength:64});Jt.double=function(t){let e=+t;if(!Number.isFinite(e))throw new TypeError("Argument is not a finite floating-point value");return e};Jt["unrestricted double"]=function(t){let e=+t;if(isNaN(e))throw new TypeError("Argument is NaN");return e};Jt.float=Jt.double;Jt["unrestricted float"]=Jt["unrestricted double"];Jt.DOMString=function(t,e){return e||(e={}),e.treatNullAsEmptyString&&t===null?"":String(t)};Jt.ByteString=function(t,e){let r=String(t),n;for(let i=0;(n=r.codePointAt(i))!==void 0;++i)if(n>255)throw new TypeError("Argument is not a valid bytestring");return r};Jt.USVString=function(t){let e=String(t),r=e.length,n=[];for(let i=0;i57343)n.push(String.fromCodePoint(s));else if(56320<=s&&s<=57343)n.push(String.fromCodePoint(65533));else if(i===r-1)n.push(String.fromCodePoint(65533));else{let a=e.charCodeAt(i+1);if(56320<=a&&a<=57343){let o=s&1023,A=a&1023;n.push(String.fromCodePoint(65536+1024*o+A)),++i}else n.push(String.fromCodePoint(65533))}}return n.join("")};Jt.Date=function(t,e){if(!(t instanceof Date))throw new TypeError("Argument is not a Date object");if(!isNaN(t))return t};Jt.RegExp=function(t,e){return t instanceof RegExp||(t=new RegExp(t)),t}});var cF=g((y_e,dA)=>{"use strict";dA.exports.mixin=function(e,r){let n=Object.getOwnPropertyNames(r);for(let i=0;i{Lfe.exports=[[[0,44],"disallowed_STD3_valid"],[[45,46],"valid"],[[47,47],"disallowed_STD3_valid"],[[48,57],"valid"],[[58,64],"disallowed_STD3_valid"],[[65,65],"mapped",[97]],[[66,66],"mapped",[98]],[[67,67],"mapped",[99]],[[68,68],"mapped",[100]],[[69,69],"mapped",[101]],[[70,70],"mapped",[102]],[[71,71],"mapped",[103]],[[72,72],"mapped",[104]],[[73,73],"mapped",[105]],[[74,74],"mapped",[106]],[[75,75],"mapped",[107]],[[76,76],"mapped",[108]],[[77,77],"mapped",[109]],[[78,78],"mapped",[110]],[[79,79],"mapped",[111]],[[80,80],"mapped",[112]],[[81,81],"mapped",[113]],[[82,82],"mapped",[114]],[[83,83],"mapped",[115]],[[84,84],"mapped",[116]],[[85,85],"mapped",[117]],[[86,86],"mapped",[118]],[[87,87],"mapped",[119]],[[88,88],"mapped",[120]],[[89,89],"mapped",[121]],[[90,90],"mapped",[122]],[[91,96],"disallowed_STD3_valid"],[[97,122],"valid"],[[123,127],"disallowed_STD3_valid"],[[128,159],"disallowed"],[[160,160],"disallowed_STD3_mapped",[32]],[[161,167],"valid",[],"NV8"],[[168,168],"disallowed_STD3_mapped",[32,776]],[[169,169],"valid",[],"NV8"],[[170,170],"mapped",[97]],[[171,172],"valid",[],"NV8"],[[173,173],"ignored"],[[174,174],"valid",[],"NV8"],[[175,175],"disallowed_STD3_mapped",[32,772]],[[176,177],"valid",[],"NV8"],[[178,178],"mapped",[50]],[[179,179],"mapped",[51]],[[180,180],"disallowed_STD3_mapped",[32,769]],[[181,181],"mapped",[956]],[[182,182],"valid",[],"NV8"],[[183,183],"valid"],[[184,184],"disallowed_STD3_mapped",[32,807]],[[185,185],"mapped",[49]],[[186,186],"mapped",[111]],[[187,187],"valid",[],"NV8"],[[188,188],"mapped",[49,8260,52]],[[189,189],"mapped",[49,8260,50]],[[190,190],"mapped",[51,8260,52]],[[191,191],"valid",[],"NV8"],[[192,192],"mapped",[224]],[[193,193],"mapped",[225]],[[194,194],"mapped",[226]],[[195,195],"mapped",[227]],[[196,196],"mapped",[228]],[[197,197],"mapped",[229]],[[198,198],"mapped",[230]],[[199,199],"mapped",[231]],[[200,200],"mapped",[232]],[[201,201],"mapped",[233]],[[202,202],"mapped",[234]],[[203,203],"mapped",[235]],[[204,204],"mapped",[236]],[[205,205],"mapped",[237]],[[206,206],"mapped",[238]],[[207,207],"mapped",[239]],[[208,208],"mapped",[240]],[[209,209],"mapped",[241]],[[210,210],"mapped",[242]],[[211,211],"mapped",[243]],[[212,212],"mapped",[244]],[[213,213],"mapped",[245]],[[214,214],"mapped",[246]],[[215,215],"valid",[],"NV8"],[[216,216],"mapped",[248]],[[217,217],"mapped",[249]],[[218,218],"mapped",[250]],[[219,219],"mapped",[251]],[[220,220],"mapped",[252]],[[221,221],"mapped",[253]],[[222,222],"mapped",[254]],[[223,223],"deviation",[115,115]],[[224,246],"valid"],[[247,247],"valid",[],"NV8"],[[248,255],"valid"],[[256,256],"mapped",[257]],[[257,257],"valid"],[[258,258],"mapped",[259]],[[259,259],"valid"],[[260,260],"mapped",[261]],[[261,261],"valid"],[[262,262],"mapped",[263]],[[263,263],"valid"],[[264,264],"mapped",[265]],[[265,265],"valid"],[[266,266],"mapped",[267]],[[267,267],"valid"],[[268,268],"mapped",[269]],[[269,269],"valid"],[[270,270],"mapped",[271]],[[271,271],"valid"],[[272,272],"mapped",[273]],[[273,273],"valid"],[[274,274],"mapped",[275]],[[275,275],"valid"],[[276,276],"mapped",[277]],[[277,277],"valid"],[[278,278],"mapped",[279]],[[279,279],"valid"],[[280,280],"mapped",[281]],[[281,281],"valid"],[[282,282],"mapped",[283]],[[283,283],"valid"],[[284,284],"mapped",[285]],[[285,285],"valid"],[[286,286],"mapped",[287]],[[287,287],"valid"],[[288,288],"mapped",[289]],[[289,289],"valid"],[[290,290],"mapped",[291]],[[291,291],"valid"],[[292,292],"mapped",[293]],[[293,293],"valid"],[[294,294],"mapped",[295]],[[295,295],"valid"],[[296,296],"mapped",[297]],[[297,297],"valid"],[[298,298],"mapped",[299]],[[299,299],"valid"],[[300,300],"mapped",[301]],[[301,301],"valid"],[[302,302],"mapped",[303]],[[303,303],"valid"],[[304,304],"mapped",[105,775]],[[305,305],"valid"],[[306,307],"mapped",[105,106]],[[308,308],"mapped",[309]],[[309,309],"valid"],[[310,310],"mapped",[311]],[[311,312],"valid"],[[313,313],"mapped",[314]],[[314,314],"valid"],[[315,315],"mapped",[316]],[[316,316],"valid"],[[317,317],"mapped",[318]],[[318,318],"valid"],[[319,320],"mapped",[108,183]],[[321,321],"mapped",[322]],[[322,322],"valid"],[[323,323],"mapped",[324]],[[324,324],"valid"],[[325,325],"mapped",[326]],[[326,326],"valid"],[[327,327],"mapped",[328]],[[328,328],"valid"],[[329,329],"mapped",[700,110]],[[330,330],"mapped",[331]],[[331,331],"valid"],[[332,332],"mapped",[333]],[[333,333],"valid"],[[334,334],"mapped",[335]],[[335,335],"valid"],[[336,336],"mapped",[337]],[[337,337],"valid"],[[338,338],"mapped",[339]],[[339,339],"valid"],[[340,340],"mapped",[341]],[[341,341],"valid"],[[342,342],"mapped",[343]],[[343,343],"valid"],[[344,344],"mapped",[345]],[[345,345],"valid"],[[346,346],"mapped",[347]],[[347,347],"valid"],[[348,348],"mapped",[349]],[[349,349],"valid"],[[350,350],"mapped",[351]],[[351,351],"valid"],[[352,352],"mapped",[353]],[[353,353],"valid"],[[354,354],"mapped",[355]],[[355,355],"valid"],[[356,356],"mapped",[357]],[[357,357],"valid"],[[358,358],"mapped",[359]],[[359,359],"valid"],[[360,360],"mapped",[361]],[[361,361],"valid"],[[362,362],"mapped",[363]],[[363,363],"valid"],[[364,364],"mapped",[365]],[[365,365],"valid"],[[366,366],"mapped",[367]],[[367,367],"valid"],[[368,368],"mapped",[369]],[[369,369],"valid"],[[370,370],"mapped",[371]],[[371,371],"valid"],[[372,372],"mapped",[373]],[[373,373],"valid"],[[374,374],"mapped",[375]],[[375,375],"valid"],[[376,376],"mapped",[255]],[[377,377],"mapped",[378]],[[378,378],"valid"],[[379,379],"mapped",[380]],[[380,380],"valid"],[[381,381],"mapped",[382]],[[382,382],"valid"],[[383,383],"mapped",[115]],[[384,384],"valid"],[[385,385],"mapped",[595]],[[386,386],"mapped",[387]],[[387,387],"valid"],[[388,388],"mapped",[389]],[[389,389],"valid"],[[390,390],"mapped",[596]],[[391,391],"mapped",[392]],[[392,392],"valid"],[[393,393],"mapped",[598]],[[394,394],"mapped",[599]],[[395,395],"mapped",[396]],[[396,397],"valid"],[[398,398],"mapped",[477]],[[399,399],"mapped",[601]],[[400,400],"mapped",[603]],[[401,401],"mapped",[402]],[[402,402],"valid"],[[403,403],"mapped",[608]],[[404,404],"mapped",[611]],[[405,405],"valid"],[[406,406],"mapped",[617]],[[407,407],"mapped",[616]],[[408,408],"mapped",[409]],[[409,411],"valid"],[[412,412],"mapped",[623]],[[413,413],"mapped",[626]],[[414,414],"valid"],[[415,415],"mapped",[629]],[[416,416],"mapped",[417]],[[417,417],"valid"],[[418,418],"mapped",[419]],[[419,419],"valid"],[[420,420],"mapped",[421]],[[421,421],"valid"],[[422,422],"mapped",[640]],[[423,423],"mapped",[424]],[[424,424],"valid"],[[425,425],"mapped",[643]],[[426,427],"valid"],[[428,428],"mapped",[429]],[[429,429],"valid"],[[430,430],"mapped",[648]],[[431,431],"mapped",[432]],[[432,432],"valid"],[[433,433],"mapped",[650]],[[434,434],"mapped",[651]],[[435,435],"mapped",[436]],[[436,436],"valid"],[[437,437],"mapped",[438]],[[438,438],"valid"],[[439,439],"mapped",[658]],[[440,440],"mapped",[441]],[[441,443],"valid"],[[444,444],"mapped",[445]],[[445,451],"valid"],[[452,454],"mapped",[100,382]],[[455,457],"mapped",[108,106]],[[458,460],"mapped",[110,106]],[[461,461],"mapped",[462]],[[462,462],"valid"],[[463,463],"mapped",[464]],[[464,464],"valid"],[[465,465],"mapped",[466]],[[466,466],"valid"],[[467,467],"mapped",[468]],[[468,468],"valid"],[[469,469],"mapped",[470]],[[470,470],"valid"],[[471,471],"mapped",[472]],[[472,472],"valid"],[[473,473],"mapped",[474]],[[474,474],"valid"],[[475,475],"mapped",[476]],[[476,477],"valid"],[[478,478],"mapped",[479]],[[479,479],"valid"],[[480,480],"mapped",[481]],[[481,481],"valid"],[[482,482],"mapped",[483]],[[483,483],"valid"],[[484,484],"mapped",[485]],[[485,485],"valid"],[[486,486],"mapped",[487]],[[487,487],"valid"],[[488,488],"mapped",[489]],[[489,489],"valid"],[[490,490],"mapped",[491]],[[491,491],"valid"],[[492,492],"mapped",[493]],[[493,493],"valid"],[[494,494],"mapped",[495]],[[495,496],"valid"],[[497,499],"mapped",[100,122]],[[500,500],"mapped",[501]],[[501,501],"valid"],[[502,502],"mapped",[405]],[[503,503],"mapped",[447]],[[504,504],"mapped",[505]],[[505,505],"valid"],[[506,506],"mapped",[507]],[[507,507],"valid"],[[508,508],"mapped",[509]],[[509,509],"valid"],[[510,510],"mapped",[511]],[[511,511],"valid"],[[512,512],"mapped",[513]],[[513,513],"valid"],[[514,514],"mapped",[515]],[[515,515],"valid"],[[516,516],"mapped",[517]],[[517,517],"valid"],[[518,518],"mapped",[519]],[[519,519],"valid"],[[520,520],"mapped",[521]],[[521,521],"valid"],[[522,522],"mapped",[523]],[[523,523],"valid"],[[524,524],"mapped",[525]],[[525,525],"valid"],[[526,526],"mapped",[527]],[[527,527],"valid"],[[528,528],"mapped",[529]],[[529,529],"valid"],[[530,530],"mapped",[531]],[[531,531],"valid"],[[532,532],"mapped",[533]],[[533,533],"valid"],[[534,534],"mapped",[535]],[[535,535],"valid"],[[536,536],"mapped",[537]],[[537,537],"valid"],[[538,538],"mapped",[539]],[[539,539],"valid"],[[540,540],"mapped",[541]],[[541,541],"valid"],[[542,542],"mapped",[543]],[[543,543],"valid"],[[544,544],"mapped",[414]],[[545,545],"valid"],[[546,546],"mapped",[547]],[[547,547],"valid"],[[548,548],"mapped",[549]],[[549,549],"valid"],[[550,550],"mapped",[551]],[[551,551],"valid"],[[552,552],"mapped",[553]],[[553,553],"valid"],[[554,554],"mapped",[555]],[[555,555],"valid"],[[556,556],"mapped",[557]],[[557,557],"valid"],[[558,558],"mapped",[559]],[[559,559],"valid"],[[560,560],"mapped",[561]],[[561,561],"valid"],[[562,562],"mapped",[563]],[[563,563],"valid"],[[564,566],"valid"],[[567,569],"valid"],[[570,570],"mapped",[11365]],[[571,571],"mapped",[572]],[[572,572],"valid"],[[573,573],"mapped",[410]],[[574,574],"mapped",[11366]],[[575,576],"valid"],[[577,577],"mapped",[578]],[[578,578],"valid"],[[579,579],"mapped",[384]],[[580,580],"mapped",[649]],[[581,581],"mapped",[652]],[[582,582],"mapped",[583]],[[583,583],"valid"],[[584,584],"mapped",[585]],[[585,585],"valid"],[[586,586],"mapped",[587]],[[587,587],"valid"],[[588,588],"mapped",[589]],[[589,589],"valid"],[[590,590],"mapped",[591]],[[591,591],"valid"],[[592,680],"valid"],[[681,685],"valid"],[[686,687],"valid"],[[688,688],"mapped",[104]],[[689,689],"mapped",[614]],[[690,690],"mapped",[106]],[[691,691],"mapped",[114]],[[692,692],"mapped",[633]],[[693,693],"mapped",[635]],[[694,694],"mapped",[641]],[[695,695],"mapped",[119]],[[696,696],"mapped",[121]],[[697,705],"valid"],[[706,709],"valid",[],"NV8"],[[710,721],"valid"],[[722,727],"valid",[],"NV8"],[[728,728],"disallowed_STD3_mapped",[32,774]],[[729,729],"disallowed_STD3_mapped",[32,775]],[[730,730],"disallowed_STD3_mapped",[32,778]],[[731,731],"disallowed_STD3_mapped",[32,808]],[[732,732],"disallowed_STD3_mapped",[32,771]],[[733,733],"disallowed_STD3_mapped",[32,779]],[[734,734],"valid",[],"NV8"],[[735,735],"valid",[],"NV8"],[[736,736],"mapped",[611]],[[737,737],"mapped",[108]],[[738,738],"mapped",[115]],[[739,739],"mapped",[120]],[[740,740],"mapped",[661]],[[741,745],"valid",[],"NV8"],[[746,747],"valid",[],"NV8"],[[748,748],"valid"],[[749,749],"valid",[],"NV8"],[[750,750],"valid"],[[751,767],"valid",[],"NV8"],[[768,831],"valid"],[[832,832],"mapped",[768]],[[833,833],"mapped",[769]],[[834,834],"valid"],[[835,835],"mapped",[787]],[[836,836],"mapped",[776,769]],[[837,837],"mapped",[953]],[[838,846],"valid"],[[847,847],"ignored"],[[848,855],"valid"],[[856,860],"valid"],[[861,863],"valid"],[[864,865],"valid"],[[866,866],"valid"],[[867,879],"valid"],[[880,880],"mapped",[881]],[[881,881],"valid"],[[882,882],"mapped",[883]],[[883,883],"valid"],[[884,884],"mapped",[697]],[[885,885],"valid"],[[886,886],"mapped",[887]],[[887,887],"valid"],[[888,889],"disallowed"],[[890,890],"disallowed_STD3_mapped",[32,953]],[[891,893],"valid"],[[894,894],"disallowed_STD3_mapped",[59]],[[895,895],"mapped",[1011]],[[896,899],"disallowed"],[[900,900],"disallowed_STD3_mapped",[32,769]],[[901,901],"disallowed_STD3_mapped",[32,776,769]],[[902,902],"mapped",[940]],[[903,903],"mapped",[183]],[[904,904],"mapped",[941]],[[905,905],"mapped",[942]],[[906,906],"mapped",[943]],[[907,907],"disallowed"],[[908,908],"mapped",[972]],[[909,909],"disallowed"],[[910,910],"mapped",[973]],[[911,911],"mapped",[974]],[[912,912],"valid"],[[913,913],"mapped",[945]],[[914,914],"mapped",[946]],[[915,915],"mapped",[947]],[[916,916],"mapped",[948]],[[917,917],"mapped",[949]],[[918,918],"mapped",[950]],[[919,919],"mapped",[951]],[[920,920],"mapped",[952]],[[921,921],"mapped",[953]],[[922,922],"mapped",[954]],[[923,923],"mapped",[955]],[[924,924],"mapped",[956]],[[925,925],"mapped",[957]],[[926,926],"mapped",[958]],[[927,927],"mapped",[959]],[[928,928],"mapped",[960]],[[929,929],"mapped",[961]],[[930,930],"disallowed"],[[931,931],"mapped",[963]],[[932,932],"mapped",[964]],[[933,933],"mapped",[965]],[[934,934],"mapped",[966]],[[935,935],"mapped",[967]],[[936,936],"mapped",[968]],[[937,937],"mapped",[969]],[[938,938],"mapped",[970]],[[939,939],"mapped",[971]],[[940,961],"valid"],[[962,962],"deviation",[963]],[[963,974],"valid"],[[975,975],"mapped",[983]],[[976,976],"mapped",[946]],[[977,977],"mapped",[952]],[[978,978],"mapped",[965]],[[979,979],"mapped",[973]],[[980,980],"mapped",[971]],[[981,981],"mapped",[966]],[[982,982],"mapped",[960]],[[983,983],"valid"],[[984,984],"mapped",[985]],[[985,985],"valid"],[[986,986],"mapped",[987]],[[987,987],"valid"],[[988,988],"mapped",[989]],[[989,989],"valid"],[[990,990],"mapped",[991]],[[991,991],"valid"],[[992,992],"mapped",[993]],[[993,993],"valid"],[[994,994],"mapped",[995]],[[995,995],"valid"],[[996,996],"mapped",[997]],[[997,997],"valid"],[[998,998],"mapped",[999]],[[999,999],"valid"],[[1e3,1e3],"mapped",[1001]],[[1001,1001],"valid"],[[1002,1002],"mapped",[1003]],[[1003,1003],"valid"],[[1004,1004],"mapped",[1005]],[[1005,1005],"valid"],[[1006,1006],"mapped",[1007]],[[1007,1007],"valid"],[[1008,1008],"mapped",[954]],[[1009,1009],"mapped",[961]],[[1010,1010],"mapped",[963]],[[1011,1011],"valid"],[[1012,1012],"mapped",[952]],[[1013,1013],"mapped",[949]],[[1014,1014],"valid",[],"NV8"],[[1015,1015],"mapped",[1016]],[[1016,1016],"valid"],[[1017,1017],"mapped",[963]],[[1018,1018],"mapped",[1019]],[[1019,1019],"valid"],[[1020,1020],"valid"],[[1021,1021],"mapped",[891]],[[1022,1022],"mapped",[892]],[[1023,1023],"mapped",[893]],[[1024,1024],"mapped",[1104]],[[1025,1025],"mapped",[1105]],[[1026,1026],"mapped",[1106]],[[1027,1027],"mapped",[1107]],[[1028,1028],"mapped",[1108]],[[1029,1029],"mapped",[1109]],[[1030,1030],"mapped",[1110]],[[1031,1031],"mapped",[1111]],[[1032,1032],"mapped",[1112]],[[1033,1033],"mapped",[1113]],[[1034,1034],"mapped",[1114]],[[1035,1035],"mapped",[1115]],[[1036,1036],"mapped",[1116]],[[1037,1037],"mapped",[1117]],[[1038,1038],"mapped",[1118]],[[1039,1039],"mapped",[1119]],[[1040,1040],"mapped",[1072]],[[1041,1041],"mapped",[1073]],[[1042,1042],"mapped",[1074]],[[1043,1043],"mapped",[1075]],[[1044,1044],"mapped",[1076]],[[1045,1045],"mapped",[1077]],[[1046,1046],"mapped",[1078]],[[1047,1047],"mapped",[1079]],[[1048,1048],"mapped",[1080]],[[1049,1049],"mapped",[1081]],[[1050,1050],"mapped",[1082]],[[1051,1051],"mapped",[1083]],[[1052,1052],"mapped",[1084]],[[1053,1053],"mapped",[1085]],[[1054,1054],"mapped",[1086]],[[1055,1055],"mapped",[1087]],[[1056,1056],"mapped",[1088]],[[1057,1057],"mapped",[1089]],[[1058,1058],"mapped",[1090]],[[1059,1059],"mapped",[1091]],[[1060,1060],"mapped",[1092]],[[1061,1061],"mapped",[1093]],[[1062,1062],"mapped",[1094]],[[1063,1063],"mapped",[1095]],[[1064,1064],"mapped",[1096]],[[1065,1065],"mapped",[1097]],[[1066,1066],"mapped",[1098]],[[1067,1067],"mapped",[1099]],[[1068,1068],"mapped",[1100]],[[1069,1069],"mapped",[1101]],[[1070,1070],"mapped",[1102]],[[1071,1071],"mapped",[1103]],[[1072,1103],"valid"],[[1104,1104],"valid"],[[1105,1116],"valid"],[[1117,1117],"valid"],[[1118,1119],"valid"],[[1120,1120],"mapped",[1121]],[[1121,1121],"valid"],[[1122,1122],"mapped",[1123]],[[1123,1123],"valid"],[[1124,1124],"mapped",[1125]],[[1125,1125],"valid"],[[1126,1126],"mapped",[1127]],[[1127,1127],"valid"],[[1128,1128],"mapped",[1129]],[[1129,1129],"valid"],[[1130,1130],"mapped",[1131]],[[1131,1131],"valid"],[[1132,1132],"mapped",[1133]],[[1133,1133],"valid"],[[1134,1134],"mapped",[1135]],[[1135,1135],"valid"],[[1136,1136],"mapped",[1137]],[[1137,1137],"valid"],[[1138,1138],"mapped",[1139]],[[1139,1139],"valid"],[[1140,1140],"mapped",[1141]],[[1141,1141],"valid"],[[1142,1142],"mapped",[1143]],[[1143,1143],"valid"],[[1144,1144],"mapped",[1145]],[[1145,1145],"valid"],[[1146,1146],"mapped",[1147]],[[1147,1147],"valid"],[[1148,1148],"mapped",[1149]],[[1149,1149],"valid"],[[1150,1150],"mapped",[1151]],[[1151,1151],"valid"],[[1152,1152],"mapped",[1153]],[[1153,1153],"valid"],[[1154,1154],"valid",[],"NV8"],[[1155,1158],"valid"],[[1159,1159],"valid"],[[1160,1161],"valid",[],"NV8"],[[1162,1162],"mapped",[1163]],[[1163,1163],"valid"],[[1164,1164],"mapped",[1165]],[[1165,1165],"valid"],[[1166,1166],"mapped",[1167]],[[1167,1167],"valid"],[[1168,1168],"mapped",[1169]],[[1169,1169],"valid"],[[1170,1170],"mapped",[1171]],[[1171,1171],"valid"],[[1172,1172],"mapped",[1173]],[[1173,1173],"valid"],[[1174,1174],"mapped",[1175]],[[1175,1175],"valid"],[[1176,1176],"mapped",[1177]],[[1177,1177],"valid"],[[1178,1178],"mapped",[1179]],[[1179,1179],"valid"],[[1180,1180],"mapped",[1181]],[[1181,1181],"valid"],[[1182,1182],"mapped",[1183]],[[1183,1183],"valid"],[[1184,1184],"mapped",[1185]],[[1185,1185],"valid"],[[1186,1186],"mapped",[1187]],[[1187,1187],"valid"],[[1188,1188],"mapped",[1189]],[[1189,1189],"valid"],[[1190,1190],"mapped",[1191]],[[1191,1191],"valid"],[[1192,1192],"mapped",[1193]],[[1193,1193],"valid"],[[1194,1194],"mapped",[1195]],[[1195,1195],"valid"],[[1196,1196],"mapped",[1197]],[[1197,1197],"valid"],[[1198,1198],"mapped",[1199]],[[1199,1199],"valid"],[[1200,1200],"mapped",[1201]],[[1201,1201],"valid"],[[1202,1202],"mapped",[1203]],[[1203,1203],"valid"],[[1204,1204],"mapped",[1205]],[[1205,1205],"valid"],[[1206,1206],"mapped",[1207]],[[1207,1207],"valid"],[[1208,1208],"mapped",[1209]],[[1209,1209],"valid"],[[1210,1210],"mapped",[1211]],[[1211,1211],"valid"],[[1212,1212],"mapped",[1213]],[[1213,1213],"valid"],[[1214,1214],"mapped",[1215]],[[1215,1215],"valid"],[[1216,1216],"disallowed"],[[1217,1217],"mapped",[1218]],[[1218,1218],"valid"],[[1219,1219],"mapped",[1220]],[[1220,1220],"valid"],[[1221,1221],"mapped",[1222]],[[1222,1222],"valid"],[[1223,1223],"mapped",[1224]],[[1224,1224],"valid"],[[1225,1225],"mapped",[1226]],[[1226,1226],"valid"],[[1227,1227],"mapped",[1228]],[[1228,1228],"valid"],[[1229,1229],"mapped",[1230]],[[1230,1230],"valid"],[[1231,1231],"valid"],[[1232,1232],"mapped",[1233]],[[1233,1233],"valid"],[[1234,1234],"mapped",[1235]],[[1235,1235],"valid"],[[1236,1236],"mapped",[1237]],[[1237,1237],"valid"],[[1238,1238],"mapped",[1239]],[[1239,1239],"valid"],[[1240,1240],"mapped",[1241]],[[1241,1241],"valid"],[[1242,1242],"mapped",[1243]],[[1243,1243],"valid"],[[1244,1244],"mapped",[1245]],[[1245,1245],"valid"],[[1246,1246],"mapped",[1247]],[[1247,1247],"valid"],[[1248,1248],"mapped",[1249]],[[1249,1249],"valid"],[[1250,1250],"mapped",[1251]],[[1251,1251],"valid"],[[1252,1252],"mapped",[1253]],[[1253,1253],"valid"],[[1254,1254],"mapped",[1255]],[[1255,1255],"valid"],[[1256,1256],"mapped",[1257]],[[1257,1257],"valid"],[[1258,1258],"mapped",[1259]],[[1259,1259],"valid"],[[1260,1260],"mapped",[1261]],[[1261,1261],"valid"],[[1262,1262],"mapped",[1263]],[[1263,1263],"valid"],[[1264,1264],"mapped",[1265]],[[1265,1265],"valid"],[[1266,1266],"mapped",[1267]],[[1267,1267],"valid"],[[1268,1268],"mapped",[1269]],[[1269,1269],"valid"],[[1270,1270],"mapped",[1271]],[[1271,1271],"valid"],[[1272,1272],"mapped",[1273]],[[1273,1273],"valid"],[[1274,1274],"mapped",[1275]],[[1275,1275],"valid"],[[1276,1276],"mapped",[1277]],[[1277,1277],"valid"],[[1278,1278],"mapped",[1279]],[[1279,1279],"valid"],[[1280,1280],"mapped",[1281]],[[1281,1281],"valid"],[[1282,1282],"mapped",[1283]],[[1283,1283],"valid"],[[1284,1284],"mapped",[1285]],[[1285,1285],"valid"],[[1286,1286],"mapped",[1287]],[[1287,1287],"valid"],[[1288,1288],"mapped",[1289]],[[1289,1289],"valid"],[[1290,1290],"mapped",[1291]],[[1291,1291],"valid"],[[1292,1292],"mapped",[1293]],[[1293,1293],"valid"],[[1294,1294],"mapped",[1295]],[[1295,1295],"valid"],[[1296,1296],"mapped",[1297]],[[1297,1297],"valid"],[[1298,1298],"mapped",[1299]],[[1299,1299],"valid"],[[1300,1300],"mapped",[1301]],[[1301,1301],"valid"],[[1302,1302],"mapped",[1303]],[[1303,1303],"valid"],[[1304,1304],"mapped",[1305]],[[1305,1305],"valid"],[[1306,1306],"mapped",[1307]],[[1307,1307],"valid"],[[1308,1308],"mapped",[1309]],[[1309,1309],"valid"],[[1310,1310],"mapped",[1311]],[[1311,1311],"valid"],[[1312,1312],"mapped",[1313]],[[1313,1313],"valid"],[[1314,1314],"mapped",[1315]],[[1315,1315],"valid"],[[1316,1316],"mapped",[1317]],[[1317,1317],"valid"],[[1318,1318],"mapped",[1319]],[[1319,1319],"valid"],[[1320,1320],"mapped",[1321]],[[1321,1321],"valid"],[[1322,1322],"mapped",[1323]],[[1323,1323],"valid"],[[1324,1324],"mapped",[1325]],[[1325,1325],"valid"],[[1326,1326],"mapped",[1327]],[[1327,1327],"valid"],[[1328,1328],"disallowed"],[[1329,1329],"mapped",[1377]],[[1330,1330],"mapped",[1378]],[[1331,1331],"mapped",[1379]],[[1332,1332],"mapped",[1380]],[[1333,1333],"mapped",[1381]],[[1334,1334],"mapped",[1382]],[[1335,1335],"mapped",[1383]],[[1336,1336],"mapped",[1384]],[[1337,1337],"mapped",[1385]],[[1338,1338],"mapped",[1386]],[[1339,1339],"mapped",[1387]],[[1340,1340],"mapped",[1388]],[[1341,1341],"mapped",[1389]],[[1342,1342],"mapped",[1390]],[[1343,1343],"mapped",[1391]],[[1344,1344],"mapped",[1392]],[[1345,1345],"mapped",[1393]],[[1346,1346],"mapped",[1394]],[[1347,1347],"mapped",[1395]],[[1348,1348],"mapped",[1396]],[[1349,1349],"mapped",[1397]],[[1350,1350],"mapped",[1398]],[[1351,1351],"mapped",[1399]],[[1352,1352],"mapped",[1400]],[[1353,1353],"mapped",[1401]],[[1354,1354],"mapped",[1402]],[[1355,1355],"mapped",[1403]],[[1356,1356],"mapped",[1404]],[[1357,1357],"mapped",[1405]],[[1358,1358],"mapped",[1406]],[[1359,1359],"mapped",[1407]],[[1360,1360],"mapped",[1408]],[[1361,1361],"mapped",[1409]],[[1362,1362],"mapped",[1410]],[[1363,1363],"mapped",[1411]],[[1364,1364],"mapped",[1412]],[[1365,1365],"mapped",[1413]],[[1366,1366],"mapped",[1414]],[[1367,1368],"disallowed"],[[1369,1369],"valid"],[[1370,1375],"valid",[],"NV8"],[[1376,1376],"disallowed"],[[1377,1414],"valid"],[[1415,1415],"mapped",[1381,1410]],[[1416,1416],"disallowed"],[[1417,1417],"valid",[],"NV8"],[[1418,1418],"valid",[],"NV8"],[[1419,1420],"disallowed"],[[1421,1422],"valid",[],"NV8"],[[1423,1423],"valid",[],"NV8"],[[1424,1424],"disallowed"],[[1425,1441],"valid"],[[1442,1442],"valid"],[[1443,1455],"valid"],[[1456,1465],"valid"],[[1466,1466],"valid"],[[1467,1469],"valid"],[[1470,1470],"valid",[],"NV8"],[[1471,1471],"valid"],[[1472,1472],"valid",[],"NV8"],[[1473,1474],"valid"],[[1475,1475],"valid",[],"NV8"],[[1476,1476],"valid"],[[1477,1477],"valid"],[[1478,1478],"valid",[],"NV8"],[[1479,1479],"valid"],[[1480,1487],"disallowed"],[[1488,1514],"valid"],[[1515,1519],"disallowed"],[[1520,1524],"valid"],[[1525,1535],"disallowed"],[[1536,1539],"disallowed"],[[1540,1540],"disallowed"],[[1541,1541],"disallowed"],[[1542,1546],"valid",[],"NV8"],[[1547,1547],"valid",[],"NV8"],[[1548,1548],"valid",[],"NV8"],[[1549,1551],"valid",[],"NV8"],[[1552,1557],"valid"],[[1558,1562],"valid"],[[1563,1563],"valid",[],"NV8"],[[1564,1564],"disallowed"],[[1565,1565],"disallowed"],[[1566,1566],"valid",[],"NV8"],[[1567,1567],"valid",[],"NV8"],[[1568,1568],"valid"],[[1569,1594],"valid"],[[1595,1599],"valid"],[[1600,1600],"valid",[],"NV8"],[[1601,1618],"valid"],[[1619,1621],"valid"],[[1622,1624],"valid"],[[1625,1630],"valid"],[[1631,1631],"valid"],[[1632,1641],"valid"],[[1642,1645],"valid",[],"NV8"],[[1646,1647],"valid"],[[1648,1652],"valid"],[[1653,1653],"mapped",[1575,1652]],[[1654,1654],"mapped",[1608,1652]],[[1655,1655],"mapped",[1735,1652]],[[1656,1656],"mapped",[1610,1652]],[[1657,1719],"valid"],[[1720,1721],"valid"],[[1722,1726],"valid"],[[1727,1727],"valid"],[[1728,1742],"valid"],[[1743,1743],"valid"],[[1744,1747],"valid"],[[1748,1748],"valid",[],"NV8"],[[1749,1756],"valid"],[[1757,1757],"disallowed"],[[1758,1758],"valid",[],"NV8"],[[1759,1768],"valid"],[[1769,1769],"valid",[],"NV8"],[[1770,1773],"valid"],[[1774,1775],"valid"],[[1776,1785],"valid"],[[1786,1790],"valid"],[[1791,1791],"valid"],[[1792,1805],"valid",[],"NV8"],[[1806,1806],"disallowed"],[[1807,1807],"disallowed"],[[1808,1836],"valid"],[[1837,1839],"valid"],[[1840,1866],"valid"],[[1867,1868],"disallowed"],[[1869,1871],"valid"],[[1872,1901],"valid"],[[1902,1919],"valid"],[[1920,1968],"valid"],[[1969,1969],"valid"],[[1970,1983],"disallowed"],[[1984,2037],"valid"],[[2038,2042],"valid",[],"NV8"],[[2043,2047],"disallowed"],[[2048,2093],"valid"],[[2094,2095],"disallowed"],[[2096,2110],"valid",[],"NV8"],[[2111,2111],"disallowed"],[[2112,2139],"valid"],[[2140,2141],"disallowed"],[[2142,2142],"valid",[],"NV8"],[[2143,2207],"disallowed"],[[2208,2208],"valid"],[[2209,2209],"valid"],[[2210,2220],"valid"],[[2221,2226],"valid"],[[2227,2228],"valid"],[[2229,2274],"disallowed"],[[2275,2275],"valid"],[[2276,2302],"valid"],[[2303,2303],"valid"],[[2304,2304],"valid"],[[2305,2307],"valid"],[[2308,2308],"valid"],[[2309,2361],"valid"],[[2362,2363],"valid"],[[2364,2381],"valid"],[[2382,2382],"valid"],[[2383,2383],"valid"],[[2384,2388],"valid"],[[2389,2389],"valid"],[[2390,2391],"valid"],[[2392,2392],"mapped",[2325,2364]],[[2393,2393],"mapped",[2326,2364]],[[2394,2394],"mapped",[2327,2364]],[[2395,2395],"mapped",[2332,2364]],[[2396,2396],"mapped",[2337,2364]],[[2397,2397],"mapped",[2338,2364]],[[2398,2398],"mapped",[2347,2364]],[[2399,2399],"mapped",[2351,2364]],[[2400,2403],"valid"],[[2404,2405],"valid",[],"NV8"],[[2406,2415],"valid"],[[2416,2416],"valid",[],"NV8"],[[2417,2418],"valid"],[[2419,2423],"valid"],[[2424,2424],"valid"],[[2425,2426],"valid"],[[2427,2428],"valid"],[[2429,2429],"valid"],[[2430,2431],"valid"],[[2432,2432],"valid"],[[2433,2435],"valid"],[[2436,2436],"disallowed"],[[2437,2444],"valid"],[[2445,2446],"disallowed"],[[2447,2448],"valid"],[[2449,2450],"disallowed"],[[2451,2472],"valid"],[[2473,2473],"disallowed"],[[2474,2480],"valid"],[[2481,2481],"disallowed"],[[2482,2482],"valid"],[[2483,2485],"disallowed"],[[2486,2489],"valid"],[[2490,2491],"disallowed"],[[2492,2492],"valid"],[[2493,2493],"valid"],[[2494,2500],"valid"],[[2501,2502],"disallowed"],[[2503,2504],"valid"],[[2505,2506],"disallowed"],[[2507,2509],"valid"],[[2510,2510],"valid"],[[2511,2518],"disallowed"],[[2519,2519],"valid"],[[2520,2523],"disallowed"],[[2524,2524],"mapped",[2465,2492]],[[2525,2525],"mapped",[2466,2492]],[[2526,2526],"disallowed"],[[2527,2527],"mapped",[2479,2492]],[[2528,2531],"valid"],[[2532,2533],"disallowed"],[[2534,2545],"valid"],[[2546,2554],"valid",[],"NV8"],[[2555,2555],"valid",[],"NV8"],[[2556,2560],"disallowed"],[[2561,2561],"valid"],[[2562,2562],"valid"],[[2563,2563],"valid"],[[2564,2564],"disallowed"],[[2565,2570],"valid"],[[2571,2574],"disallowed"],[[2575,2576],"valid"],[[2577,2578],"disallowed"],[[2579,2600],"valid"],[[2601,2601],"disallowed"],[[2602,2608],"valid"],[[2609,2609],"disallowed"],[[2610,2610],"valid"],[[2611,2611],"mapped",[2610,2620]],[[2612,2612],"disallowed"],[[2613,2613],"valid"],[[2614,2614],"mapped",[2616,2620]],[[2615,2615],"disallowed"],[[2616,2617],"valid"],[[2618,2619],"disallowed"],[[2620,2620],"valid"],[[2621,2621],"disallowed"],[[2622,2626],"valid"],[[2627,2630],"disallowed"],[[2631,2632],"valid"],[[2633,2634],"disallowed"],[[2635,2637],"valid"],[[2638,2640],"disallowed"],[[2641,2641],"valid"],[[2642,2648],"disallowed"],[[2649,2649],"mapped",[2582,2620]],[[2650,2650],"mapped",[2583,2620]],[[2651,2651],"mapped",[2588,2620]],[[2652,2652],"valid"],[[2653,2653],"disallowed"],[[2654,2654],"mapped",[2603,2620]],[[2655,2661],"disallowed"],[[2662,2676],"valid"],[[2677,2677],"valid"],[[2678,2688],"disallowed"],[[2689,2691],"valid"],[[2692,2692],"disallowed"],[[2693,2699],"valid"],[[2700,2700],"valid"],[[2701,2701],"valid"],[[2702,2702],"disallowed"],[[2703,2705],"valid"],[[2706,2706],"disallowed"],[[2707,2728],"valid"],[[2729,2729],"disallowed"],[[2730,2736],"valid"],[[2737,2737],"disallowed"],[[2738,2739],"valid"],[[2740,2740],"disallowed"],[[2741,2745],"valid"],[[2746,2747],"disallowed"],[[2748,2757],"valid"],[[2758,2758],"disallowed"],[[2759,2761],"valid"],[[2762,2762],"disallowed"],[[2763,2765],"valid"],[[2766,2767],"disallowed"],[[2768,2768],"valid"],[[2769,2783],"disallowed"],[[2784,2784],"valid"],[[2785,2787],"valid"],[[2788,2789],"disallowed"],[[2790,2799],"valid"],[[2800,2800],"valid",[],"NV8"],[[2801,2801],"valid",[],"NV8"],[[2802,2808],"disallowed"],[[2809,2809],"valid"],[[2810,2816],"disallowed"],[[2817,2819],"valid"],[[2820,2820],"disallowed"],[[2821,2828],"valid"],[[2829,2830],"disallowed"],[[2831,2832],"valid"],[[2833,2834],"disallowed"],[[2835,2856],"valid"],[[2857,2857],"disallowed"],[[2858,2864],"valid"],[[2865,2865],"disallowed"],[[2866,2867],"valid"],[[2868,2868],"disallowed"],[[2869,2869],"valid"],[[2870,2873],"valid"],[[2874,2875],"disallowed"],[[2876,2883],"valid"],[[2884,2884],"valid"],[[2885,2886],"disallowed"],[[2887,2888],"valid"],[[2889,2890],"disallowed"],[[2891,2893],"valid"],[[2894,2901],"disallowed"],[[2902,2903],"valid"],[[2904,2907],"disallowed"],[[2908,2908],"mapped",[2849,2876]],[[2909,2909],"mapped",[2850,2876]],[[2910,2910],"disallowed"],[[2911,2913],"valid"],[[2914,2915],"valid"],[[2916,2917],"disallowed"],[[2918,2927],"valid"],[[2928,2928],"valid",[],"NV8"],[[2929,2929],"valid"],[[2930,2935],"valid",[],"NV8"],[[2936,2945],"disallowed"],[[2946,2947],"valid"],[[2948,2948],"disallowed"],[[2949,2954],"valid"],[[2955,2957],"disallowed"],[[2958,2960],"valid"],[[2961,2961],"disallowed"],[[2962,2965],"valid"],[[2966,2968],"disallowed"],[[2969,2970],"valid"],[[2971,2971],"disallowed"],[[2972,2972],"valid"],[[2973,2973],"disallowed"],[[2974,2975],"valid"],[[2976,2978],"disallowed"],[[2979,2980],"valid"],[[2981,2983],"disallowed"],[[2984,2986],"valid"],[[2987,2989],"disallowed"],[[2990,2997],"valid"],[[2998,2998],"valid"],[[2999,3001],"valid"],[[3002,3005],"disallowed"],[[3006,3010],"valid"],[[3011,3013],"disallowed"],[[3014,3016],"valid"],[[3017,3017],"disallowed"],[[3018,3021],"valid"],[[3022,3023],"disallowed"],[[3024,3024],"valid"],[[3025,3030],"disallowed"],[[3031,3031],"valid"],[[3032,3045],"disallowed"],[[3046,3046],"valid"],[[3047,3055],"valid"],[[3056,3058],"valid",[],"NV8"],[[3059,3066],"valid",[],"NV8"],[[3067,3071],"disallowed"],[[3072,3072],"valid"],[[3073,3075],"valid"],[[3076,3076],"disallowed"],[[3077,3084],"valid"],[[3085,3085],"disallowed"],[[3086,3088],"valid"],[[3089,3089],"disallowed"],[[3090,3112],"valid"],[[3113,3113],"disallowed"],[[3114,3123],"valid"],[[3124,3124],"valid"],[[3125,3129],"valid"],[[3130,3132],"disallowed"],[[3133,3133],"valid"],[[3134,3140],"valid"],[[3141,3141],"disallowed"],[[3142,3144],"valid"],[[3145,3145],"disallowed"],[[3146,3149],"valid"],[[3150,3156],"disallowed"],[[3157,3158],"valid"],[[3159,3159],"disallowed"],[[3160,3161],"valid"],[[3162,3162],"valid"],[[3163,3167],"disallowed"],[[3168,3169],"valid"],[[3170,3171],"valid"],[[3172,3173],"disallowed"],[[3174,3183],"valid"],[[3184,3191],"disallowed"],[[3192,3199],"valid",[],"NV8"],[[3200,3200],"disallowed"],[[3201,3201],"valid"],[[3202,3203],"valid"],[[3204,3204],"disallowed"],[[3205,3212],"valid"],[[3213,3213],"disallowed"],[[3214,3216],"valid"],[[3217,3217],"disallowed"],[[3218,3240],"valid"],[[3241,3241],"disallowed"],[[3242,3251],"valid"],[[3252,3252],"disallowed"],[[3253,3257],"valid"],[[3258,3259],"disallowed"],[[3260,3261],"valid"],[[3262,3268],"valid"],[[3269,3269],"disallowed"],[[3270,3272],"valid"],[[3273,3273],"disallowed"],[[3274,3277],"valid"],[[3278,3284],"disallowed"],[[3285,3286],"valid"],[[3287,3293],"disallowed"],[[3294,3294],"valid"],[[3295,3295],"disallowed"],[[3296,3297],"valid"],[[3298,3299],"valid"],[[3300,3301],"disallowed"],[[3302,3311],"valid"],[[3312,3312],"disallowed"],[[3313,3314],"valid"],[[3315,3328],"disallowed"],[[3329,3329],"valid"],[[3330,3331],"valid"],[[3332,3332],"disallowed"],[[3333,3340],"valid"],[[3341,3341],"disallowed"],[[3342,3344],"valid"],[[3345,3345],"disallowed"],[[3346,3368],"valid"],[[3369,3369],"valid"],[[3370,3385],"valid"],[[3386,3386],"valid"],[[3387,3388],"disallowed"],[[3389,3389],"valid"],[[3390,3395],"valid"],[[3396,3396],"valid"],[[3397,3397],"disallowed"],[[3398,3400],"valid"],[[3401,3401],"disallowed"],[[3402,3405],"valid"],[[3406,3406],"valid"],[[3407,3414],"disallowed"],[[3415,3415],"valid"],[[3416,3422],"disallowed"],[[3423,3423],"valid"],[[3424,3425],"valid"],[[3426,3427],"valid"],[[3428,3429],"disallowed"],[[3430,3439],"valid"],[[3440,3445],"valid",[],"NV8"],[[3446,3448],"disallowed"],[[3449,3449],"valid",[],"NV8"],[[3450,3455],"valid"],[[3456,3457],"disallowed"],[[3458,3459],"valid"],[[3460,3460],"disallowed"],[[3461,3478],"valid"],[[3479,3481],"disallowed"],[[3482,3505],"valid"],[[3506,3506],"disallowed"],[[3507,3515],"valid"],[[3516,3516],"disallowed"],[[3517,3517],"valid"],[[3518,3519],"disallowed"],[[3520,3526],"valid"],[[3527,3529],"disallowed"],[[3530,3530],"valid"],[[3531,3534],"disallowed"],[[3535,3540],"valid"],[[3541,3541],"disallowed"],[[3542,3542],"valid"],[[3543,3543],"disallowed"],[[3544,3551],"valid"],[[3552,3557],"disallowed"],[[3558,3567],"valid"],[[3568,3569],"disallowed"],[[3570,3571],"valid"],[[3572,3572],"valid",[],"NV8"],[[3573,3584],"disallowed"],[[3585,3634],"valid"],[[3635,3635],"mapped",[3661,3634]],[[3636,3642],"valid"],[[3643,3646],"disallowed"],[[3647,3647],"valid",[],"NV8"],[[3648,3662],"valid"],[[3663,3663],"valid",[],"NV8"],[[3664,3673],"valid"],[[3674,3675],"valid",[],"NV8"],[[3676,3712],"disallowed"],[[3713,3714],"valid"],[[3715,3715],"disallowed"],[[3716,3716],"valid"],[[3717,3718],"disallowed"],[[3719,3720],"valid"],[[3721,3721],"disallowed"],[[3722,3722],"valid"],[[3723,3724],"disallowed"],[[3725,3725],"valid"],[[3726,3731],"disallowed"],[[3732,3735],"valid"],[[3736,3736],"disallowed"],[[3737,3743],"valid"],[[3744,3744],"disallowed"],[[3745,3747],"valid"],[[3748,3748],"disallowed"],[[3749,3749],"valid"],[[3750,3750],"disallowed"],[[3751,3751],"valid"],[[3752,3753],"disallowed"],[[3754,3755],"valid"],[[3756,3756],"disallowed"],[[3757,3762],"valid"],[[3763,3763],"mapped",[3789,3762]],[[3764,3769],"valid"],[[3770,3770],"disallowed"],[[3771,3773],"valid"],[[3774,3775],"disallowed"],[[3776,3780],"valid"],[[3781,3781],"disallowed"],[[3782,3782],"valid"],[[3783,3783],"disallowed"],[[3784,3789],"valid"],[[3790,3791],"disallowed"],[[3792,3801],"valid"],[[3802,3803],"disallowed"],[[3804,3804],"mapped",[3755,3737]],[[3805,3805],"mapped",[3755,3745]],[[3806,3807],"valid"],[[3808,3839],"disallowed"],[[3840,3840],"valid"],[[3841,3850],"valid",[],"NV8"],[[3851,3851],"valid"],[[3852,3852],"mapped",[3851]],[[3853,3863],"valid",[],"NV8"],[[3864,3865],"valid"],[[3866,3871],"valid",[],"NV8"],[[3872,3881],"valid"],[[3882,3892],"valid",[],"NV8"],[[3893,3893],"valid"],[[3894,3894],"valid",[],"NV8"],[[3895,3895],"valid"],[[3896,3896],"valid",[],"NV8"],[[3897,3897],"valid"],[[3898,3901],"valid",[],"NV8"],[[3902,3906],"valid"],[[3907,3907],"mapped",[3906,4023]],[[3908,3911],"valid"],[[3912,3912],"disallowed"],[[3913,3916],"valid"],[[3917,3917],"mapped",[3916,4023]],[[3918,3921],"valid"],[[3922,3922],"mapped",[3921,4023]],[[3923,3926],"valid"],[[3927,3927],"mapped",[3926,4023]],[[3928,3931],"valid"],[[3932,3932],"mapped",[3931,4023]],[[3933,3944],"valid"],[[3945,3945],"mapped",[3904,4021]],[[3946,3946],"valid"],[[3947,3948],"valid"],[[3949,3952],"disallowed"],[[3953,3954],"valid"],[[3955,3955],"mapped",[3953,3954]],[[3956,3956],"valid"],[[3957,3957],"mapped",[3953,3956]],[[3958,3958],"mapped",[4018,3968]],[[3959,3959],"mapped",[4018,3953,3968]],[[3960,3960],"mapped",[4019,3968]],[[3961,3961],"mapped",[4019,3953,3968]],[[3962,3968],"valid"],[[3969,3969],"mapped",[3953,3968]],[[3970,3972],"valid"],[[3973,3973],"valid",[],"NV8"],[[3974,3979],"valid"],[[3980,3983],"valid"],[[3984,3986],"valid"],[[3987,3987],"mapped",[3986,4023]],[[3988,3989],"valid"],[[3990,3990],"valid"],[[3991,3991],"valid"],[[3992,3992],"disallowed"],[[3993,3996],"valid"],[[3997,3997],"mapped",[3996,4023]],[[3998,4001],"valid"],[[4002,4002],"mapped",[4001,4023]],[[4003,4006],"valid"],[[4007,4007],"mapped",[4006,4023]],[[4008,4011],"valid"],[[4012,4012],"mapped",[4011,4023]],[[4013,4013],"valid"],[[4014,4016],"valid"],[[4017,4023],"valid"],[[4024,4024],"valid"],[[4025,4025],"mapped",[3984,4021]],[[4026,4028],"valid"],[[4029,4029],"disallowed"],[[4030,4037],"valid",[],"NV8"],[[4038,4038],"valid"],[[4039,4044],"valid",[],"NV8"],[[4045,4045],"disallowed"],[[4046,4046],"valid",[],"NV8"],[[4047,4047],"valid",[],"NV8"],[[4048,4049],"valid",[],"NV8"],[[4050,4052],"valid",[],"NV8"],[[4053,4056],"valid",[],"NV8"],[[4057,4058],"valid",[],"NV8"],[[4059,4095],"disallowed"],[[4096,4129],"valid"],[[4130,4130],"valid"],[[4131,4135],"valid"],[[4136,4136],"valid"],[[4137,4138],"valid"],[[4139,4139],"valid"],[[4140,4146],"valid"],[[4147,4149],"valid"],[[4150,4153],"valid"],[[4154,4159],"valid"],[[4160,4169],"valid"],[[4170,4175],"valid",[],"NV8"],[[4176,4185],"valid"],[[4186,4249],"valid"],[[4250,4253],"valid"],[[4254,4255],"valid",[],"NV8"],[[4256,4293],"disallowed"],[[4294,4294],"disallowed"],[[4295,4295],"mapped",[11559]],[[4296,4300],"disallowed"],[[4301,4301],"mapped",[11565]],[[4302,4303],"disallowed"],[[4304,4342],"valid"],[[4343,4344],"valid"],[[4345,4346],"valid"],[[4347,4347],"valid",[],"NV8"],[[4348,4348],"mapped",[4316]],[[4349,4351],"valid"],[[4352,4441],"valid",[],"NV8"],[[4442,4446],"valid",[],"NV8"],[[4447,4448],"disallowed"],[[4449,4514],"valid",[],"NV8"],[[4515,4519],"valid",[],"NV8"],[[4520,4601],"valid",[],"NV8"],[[4602,4607],"valid",[],"NV8"],[[4608,4614],"valid"],[[4615,4615],"valid"],[[4616,4678],"valid"],[[4679,4679],"valid"],[[4680,4680],"valid"],[[4681,4681],"disallowed"],[[4682,4685],"valid"],[[4686,4687],"disallowed"],[[4688,4694],"valid"],[[4695,4695],"disallowed"],[[4696,4696],"valid"],[[4697,4697],"disallowed"],[[4698,4701],"valid"],[[4702,4703],"disallowed"],[[4704,4742],"valid"],[[4743,4743],"valid"],[[4744,4744],"valid"],[[4745,4745],"disallowed"],[[4746,4749],"valid"],[[4750,4751],"disallowed"],[[4752,4782],"valid"],[[4783,4783],"valid"],[[4784,4784],"valid"],[[4785,4785],"disallowed"],[[4786,4789],"valid"],[[4790,4791],"disallowed"],[[4792,4798],"valid"],[[4799,4799],"disallowed"],[[4800,4800],"valid"],[[4801,4801],"disallowed"],[[4802,4805],"valid"],[[4806,4807],"disallowed"],[[4808,4814],"valid"],[[4815,4815],"valid"],[[4816,4822],"valid"],[[4823,4823],"disallowed"],[[4824,4846],"valid"],[[4847,4847],"valid"],[[4848,4878],"valid"],[[4879,4879],"valid"],[[4880,4880],"valid"],[[4881,4881],"disallowed"],[[4882,4885],"valid"],[[4886,4887],"disallowed"],[[4888,4894],"valid"],[[4895,4895],"valid"],[[4896,4934],"valid"],[[4935,4935],"valid"],[[4936,4954],"valid"],[[4955,4956],"disallowed"],[[4957,4958],"valid"],[[4959,4959],"valid"],[[4960,4960],"valid",[],"NV8"],[[4961,4988],"valid",[],"NV8"],[[4989,4991],"disallowed"],[[4992,5007],"valid"],[[5008,5017],"valid",[],"NV8"],[[5018,5023],"disallowed"],[[5024,5108],"valid"],[[5109,5109],"valid"],[[5110,5111],"disallowed"],[[5112,5112],"mapped",[5104]],[[5113,5113],"mapped",[5105]],[[5114,5114],"mapped",[5106]],[[5115,5115],"mapped",[5107]],[[5116,5116],"mapped",[5108]],[[5117,5117],"mapped",[5109]],[[5118,5119],"disallowed"],[[5120,5120],"valid",[],"NV8"],[[5121,5740],"valid"],[[5741,5742],"valid",[],"NV8"],[[5743,5750],"valid"],[[5751,5759],"valid"],[[5760,5760],"disallowed"],[[5761,5786],"valid"],[[5787,5788],"valid",[],"NV8"],[[5789,5791],"disallowed"],[[5792,5866],"valid"],[[5867,5872],"valid",[],"NV8"],[[5873,5880],"valid"],[[5881,5887],"disallowed"],[[5888,5900],"valid"],[[5901,5901],"disallowed"],[[5902,5908],"valid"],[[5909,5919],"disallowed"],[[5920,5940],"valid"],[[5941,5942],"valid",[],"NV8"],[[5943,5951],"disallowed"],[[5952,5971],"valid"],[[5972,5983],"disallowed"],[[5984,5996],"valid"],[[5997,5997],"disallowed"],[[5998,6e3],"valid"],[[6001,6001],"disallowed"],[[6002,6003],"valid"],[[6004,6015],"disallowed"],[[6016,6067],"valid"],[[6068,6069],"disallowed"],[[6070,6099],"valid"],[[6100,6102],"valid",[],"NV8"],[[6103,6103],"valid"],[[6104,6107],"valid",[],"NV8"],[[6108,6108],"valid"],[[6109,6109],"valid"],[[6110,6111],"disallowed"],[[6112,6121],"valid"],[[6122,6127],"disallowed"],[[6128,6137],"valid",[],"NV8"],[[6138,6143],"disallowed"],[[6144,6149],"valid",[],"NV8"],[[6150,6150],"disallowed"],[[6151,6154],"valid",[],"NV8"],[[6155,6157],"ignored"],[[6158,6158],"disallowed"],[[6159,6159],"disallowed"],[[6160,6169],"valid"],[[6170,6175],"disallowed"],[[6176,6263],"valid"],[[6264,6271],"disallowed"],[[6272,6313],"valid"],[[6314,6314],"valid"],[[6315,6319],"disallowed"],[[6320,6389],"valid"],[[6390,6399],"disallowed"],[[6400,6428],"valid"],[[6429,6430],"valid"],[[6431,6431],"disallowed"],[[6432,6443],"valid"],[[6444,6447],"disallowed"],[[6448,6459],"valid"],[[6460,6463],"disallowed"],[[6464,6464],"valid",[],"NV8"],[[6465,6467],"disallowed"],[[6468,6469],"valid",[],"NV8"],[[6470,6509],"valid"],[[6510,6511],"disallowed"],[[6512,6516],"valid"],[[6517,6527],"disallowed"],[[6528,6569],"valid"],[[6570,6571],"valid"],[[6572,6575],"disallowed"],[[6576,6601],"valid"],[[6602,6607],"disallowed"],[[6608,6617],"valid"],[[6618,6618],"valid",[],"XV8"],[[6619,6621],"disallowed"],[[6622,6623],"valid",[],"NV8"],[[6624,6655],"valid",[],"NV8"],[[6656,6683],"valid"],[[6684,6685],"disallowed"],[[6686,6687],"valid",[],"NV8"],[[6688,6750],"valid"],[[6751,6751],"disallowed"],[[6752,6780],"valid"],[[6781,6782],"disallowed"],[[6783,6793],"valid"],[[6794,6799],"disallowed"],[[6800,6809],"valid"],[[6810,6815],"disallowed"],[[6816,6822],"valid",[],"NV8"],[[6823,6823],"valid"],[[6824,6829],"valid",[],"NV8"],[[6830,6831],"disallowed"],[[6832,6845],"valid"],[[6846,6846],"valid",[],"NV8"],[[6847,6911],"disallowed"],[[6912,6987],"valid"],[[6988,6991],"disallowed"],[[6992,7001],"valid"],[[7002,7018],"valid",[],"NV8"],[[7019,7027],"valid"],[[7028,7036],"valid",[],"NV8"],[[7037,7039],"disallowed"],[[7040,7082],"valid"],[[7083,7085],"valid"],[[7086,7097],"valid"],[[7098,7103],"valid"],[[7104,7155],"valid"],[[7156,7163],"disallowed"],[[7164,7167],"valid",[],"NV8"],[[7168,7223],"valid"],[[7224,7226],"disallowed"],[[7227,7231],"valid",[],"NV8"],[[7232,7241],"valid"],[[7242,7244],"disallowed"],[[7245,7293],"valid"],[[7294,7295],"valid",[],"NV8"],[[7296,7359],"disallowed"],[[7360,7367],"valid",[],"NV8"],[[7368,7375],"disallowed"],[[7376,7378],"valid"],[[7379,7379],"valid",[],"NV8"],[[7380,7410],"valid"],[[7411,7414],"valid"],[[7415,7415],"disallowed"],[[7416,7417],"valid"],[[7418,7423],"disallowed"],[[7424,7467],"valid"],[[7468,7468],"mapped",[97]],[[7469,7469],"mapped",[230]],[[7470,7470],"mapped",[98]],[[7471,7471],"valid"],[[7472,7472],"mapped",[100]],[[7473,7473],"mapped",[101]],[[7474,7474],"mapped",[477]],[[7475,7475],"mapped",[103]],[[7476,7476],"mapped",[104]],[[7477,7477],"mapped",[105]],[[7478,7478],"mapped",[106]],[[7479,7479],"mapped",[107]],[[7480,7480],"mapped",[108]],[[7481,7481],"mapped",[109]],[[7482,7482],"mapped",[110]],[[7483,7483],"valid"],[[7484,7484],"mapped",[111]],[[7485,7485],"mapped",[547]],[[7486,7486],"mapped",[112]],[[7487,7487],"mapped",[114]],[[7488,7488],"mapped",[116]],[[7489,7489],"mapped",[117]],[[7490,7490],"mapped",[119]],[[7491,7491],"mapped",[97]],[[7492,7492],"mapped",[592]],[[7493,7493],"mapped",[593]],[[7494,7494],"mapped",[7426]],[[7495,7495],"mapped",[98]],[[7496,7496],"mapped",[100]],[[7497,7497],"mapped",[101]],[[7498,7498],"mapped",[601]],[[7499,7499],"mapped",[603]],[[7500,7500],"mapped",[604]],[[7501,7501],"mapped",[103]],[[7502,7502],"valid"],[[7503,7503],"mapped",[107]],[[7504,7504],"mapped",[109]],[[7505,7505],"mapped",[331]],[[7506,7506],"mapped",[111]],[[7507,7507],"mapped",[596]],[[7508,7508],"mapped",[7446]],[[7509,7509],"mapped",[7447]],[[7510,7510],"mapped",[112]],[[7511,7511],"mapped",[116]],[[7512,7512],"mapped",[117]],[[7513,7513],"mapped",[7453]],[[7514,7514],"mapped",[623]],[[7515,7515],"mapped",[118]],[[7516,7516],"mapped",[7461]],[[7517,7517],"mapped",[946]],[[7518,7518],"mapped",[947]],[[7519,7519],"mapped",[948]],[[7520,7520],"mapped",[966]],[[7521,7521],"mapped",[967]],[[7522,7522],"mapped",[105]],[[7523,7523],"mapped",[114]],[[7524,7524],"mapped",[117]],[[7525,7525],"mapped",[118]],[[7526,7526],"mapped",[946]],[[7527,7527],"mapped",[947]],[[7528,7528],"mapped",[961]],[[7529,7529],"mapped",[966]],[[7530,7530],"mapped",[967]],[[7531,7531],"valid"],[[7532,7543],"valid"],[[7544,7544],"mapped",[1085]],[[7545,7578],"valid"],[[7579,7579],"mapped",[594]],[[7580,7580],"mapped",[99]],[[7581,7581],"mapped",[597]],[[7582,7582],"mapped",[240]],[[7583,7583],"mapped",[604]],[[7584,7584],"mapped",[102]],[[7585,7585],"mapped",[607]],[[7586,7586],"mapped",[609]],[[7587,7587],"mapped",[613]],[[7588,7588],"mapped",[616]],[[7589,7589],"mapped",[617]],[[7590,7590],"mapped",[618]],[[7591,7591],"mapped",[7547]],[[7592,7592],"mapped",[669]],[[7593,7593],"mapped",[621]],[[7594,7594],"mapped",[7557]],[[7595,7595],"mapped",[671]],[[7596,7596],"mapped",[625]],[[7597,7597],"mapped",[624]],[[7598,7598],"mapped",[626]],[[7599,7599],"mapped",[627]],[[7600,7600],"mapped",[628]],[[7601,7601],"mapped",[629]],[[7602,7602],"mapped",[632]],[[7603,7603],"mapped",[642]],[[7604,7604],"mapped",[643]],[[7605,7605],"mapped",[427]],[[7606,7606],"mapped",[649]],[[7607,7607],"mapped",[650]],[[7608,7608],"mapped",[7452]],[[7609,7609],"mapped",[651]],[[7610,7610],"mapped",[652]],[[7611,7611],"mapped",[122]],[[7612,7612],"mapped",[656]],[[7613,7613],"mapped",[657]],[[7614,7614],"mapped",[658]],[[7615,7615],"mapped",[952]],[[7616,7619],"valid"],[[7620,7626],"valid"],[[7627,7654],"valid"],[[7655,7669],"valid"],[[7670,7675],"disallowed"],[[7676,7676],"valid"],[[7677,7677],"valid"],[[7678,7679],"valid"],[[7680,7680],"mapped",[7681]],[[7681,7681],"valid"],[[7682,7682],"mapped",[7683]],[[7683,7683],"valid"],[[7684,7684],"mapped",[7685]],[[7685,7685],"valid"],[[7686,7686],"mapped",[7687]],[[7687,7687],"valid"],[[7688,7688],"mapped",[7689]],[[7689,7689],"valid"],[[7690,7690],"mapped",[7691]],[[7691,7691],"valid"],[[7692,7692],"mapped",[7693]],[[7693,7693],"valid"],[[7694,7694],"mapped",[7695]],[[7695,7695],"valid"],[[7696,7696],"mapped",[7697]],[[7697,7697],"valid"],[[7698,7698],"mapped",[7699]],[[7699,7699],"valid"],[[7700,7700],"mapped",[7701]],[[7701,7701],"valid"],[[7702,7702],"mapped",[7703]],[[7703,7703],"valid"],[[7704,7704],"mapped",[7705]],[[7705,7705],"valid"],[[7706,7706],"mapped",[7707]],[[7707,7707],"valid"],[[7708,7708],"mapped",[7709]],[[7709,7709],"valid"],[[7710,7710],"mapped",[7711]],[[7711,7711],"valid"],[[7712,7712],"mapped",[7713]],[[7713,7713],"valid"],[[7714,7714],"mapped",[7715]],[[7715,7715],"valid"],[[7716,7716],"mapped",[7717]],[[7717,7717],"valid"],[[7718,7718],"mapped",[7719]],[[7719,7719],"valid"],[[7720,7720],"mapped",[7721]],[[7721,7721],"valid"],[[7722,7722],"mapped",[7723]],[[7723,7723],"valid"],[[7724,7724],"mapped",[7725]],[[7725,7725],"valid"],[[7726,7726],"mapped",[7727]],[[7727,7727],"valid"],[[7728,7728],"mapped",[7729]],[[7729,7729],"valid"],[[7730,7730],"mapped",[7731]],[[7731,7731],"valid"],[[7732,7732],"mapped",[7733]],[[7733,7733],"valid"],[[7734,7734],"mapped",[7735]],[[7735,7735],"valid"],[[7736,7736],"mapped",[7737]],[[7737,7737],"valid"],[[7738,7738],"mapped",[7739]],[[7739,7739],"valid"],[[7740,7740],"mapped",[7741]],[[7741,7741],"valid"],[[7742,7742],"mapped",[7743]],[[7743,7743],"valid"],[[7744,7744],"mapped",[7745]],[[7745,7745],"valid"],[[7746,7746],"mapped",[7747]],[[7747,7747],"valid"],[[7748,7748],"mapped",[7749]],[[7749,7749],"valid"],[[7750,7750],"mapped",[7751]],[[7751,7751],"valid"],[[7752,7752],"mapped",[7753]],[[7753,7753],"valid"],[[7754,7754],"mapped",[7755]],[[7755,7755],"valid"],[[7756,7756],"mapped",[7757]],[[7757,7757],"valid"],[[7758,7758],"mapped",[7759]],[[7759,7759],"valid"],[[7760,7760],"mapped",[7761]],[[7761,7761],"valid"],[[7762,7762],"mapped",[7763]],[[7763,7763],"valid"],[[7764,7764],"mapped",[7765]],[[7765,7765],"valid"],[[7766,7766],"mapped",[7767]],[[7767,7767],"valid"],[[7768,7768],"mapped",[7769]],[[7769,7769],"valid"],[[7770,7770],"mapped",[7771]],[[7771,7771],"valid"],[[7772,7772],"mapped",[7773]],[[7773,7773],"valid"],[[7774,7774],"mapped",[7775]],[[7775,7775],"valid"],[[7776,7776],"mapped",[7777]],[[7777,7777],"valid"],[[7778,7778],"mapped",[7779]],[[7779,7779],"valid"],[[7780,7780],"mapped",[7781]],[[7781,7781],"valid"],[[7782,7782],"mapped",[7783]],[[7783,7783],"valid"],[[7784,7784],"mapped",[7785]],[[7785,7785],"valid"],[[7786,7786],"mapped",[7787]],[[7787,7787],"valid"],[[7788,7788],"mapped",[7789]],[[7789,7789],"valid"],[[7790,7790],"mapped",[7791]],[[7791,7791],"valid"],[[7792,7792],"mapped",[7793]],[[7793,7793],"valid"],[[7794,7794],"mapped",[7795]],[[7795,7795],"valid"],[[7796,7796],"mapped",[7797]],[[7797,7797],"valid"],[[7798,7798],"mapped",[7799]],[[7799,7799],"valid"],[[7800,7800],"mapped",[7801]],[[7801,7801],"valid"],[[7802,7802],"mapped",[7803]],[[7803,7803],"valid"],[[7804,7804],"mapped",[7805]],[[7805,7805],"valid"],[[7806,7806],"mapped",[7807]],[[7807,7807],"valid"],[[7808,7808],"mapped",[7809]],[[7809,7809],"valid"],[[7810,7810],"mapped",[7811]],[[7811,7811],"valid"],[[7812,7812],"mapped",[7813]],[[7813,7813],"valid"],[[7814,7814],"mapped",[7815]],[[7815,7815],"valid"],[[7816,7816],"mapped",[7817]],[[7817,7817],"valid"],[[7818,7818],"mapped",[7819]],[[7819,7819],"valid"],[[7820,7820],"mapped",[7821]],[[7821,7821],"valid"],[[7822,7822],"mapped",[7823]],[[7823,7823],"valid"],[[7824,7824],"mapped",[7825]],[[7825,7825],"valid"],[[7826,7826],"mapped",[7827]],[[7827,7827],"valid"],[[7828,7828],"mapped",[7829]],[[7829,7833],"valid"],[[7834,7834],"mapped",[97,702]],[[7835,7835],"mapped",[7777]],[[7836,7837],"valid"],[[7838,7838],"mapped",[115,115]],[[7839,7839],"valid"],[[7840,7840],"mapped",[7841]],[[7841,7841],"valid"],[[7842,7842],"mapped",[7843]],[[7843,7843],"valid"],[[7844,7844],"mapped",[7845]],[[7845,7845],"valid"],[[7846,7846],"mapped",[7847]],[[7847,7847],"valid"],[[7848,7848],"mapped",[7849]],[[7849,7849],"valid"],[[7850,7850],"mapped",[7851]],[[7851,7851],"valid"],[[7852,7852],"mapped",[7853]],[[7853,7853],"valid"],[[7854,7854],"mapped",[7855]],[[7855,7855],"valid"],[[7856,7856],"mapped",[7857]],[[7857,7857],"valid"],[[7858,7858],"mapped",[7859]],[[7859,7859],"valid"],[[7860,7860],"mapped",[7861]],[[7861,7861],"valid"],[[7862,7862],"mapped",[7863]],[[7863,7863],"valid"],[[7864,7864],"mapped",[7865]],[[7865,7865],"valid"],[[7866,7866],"mapped",[7867]],[[7867,7867],"valid"],[[7868,7868],"mapped",[7869]],[[7869,7869],"valid"],[[7870,7870],"mapped",[7871]],[[7871,7871],"valid"],[[7872,7872],"mapped",[7873]],[[7873,7873],"valid"],[[7874,7874],"mapped",[7875]],[[7875,7875],"valid"],[[7876,7876],"mapped",[7877]],[[7877,7877],"valid"],[[7878,7878],"mapped",[7879]],[[7879,7879],"valid"],[[7880,7880],"mapped",[7881]],[[7881,7881],"valid"],[[7882,7882],"mapped",[7883]],[[7883,7883],"valid"],[[7884,7884],"mapped",[7885]],[[7885,7885],"valid"],[[7886,7886],"mapped",[7887]],[[7887,7887],"valid"],[[7888,7888],"mapped",[7889]],[[7889,7889],"valid"],[[7890,7890],"mapped",[7891]],[[7891,7891],"valid"],[[7892,7892],"mapped",[7893]],[[7893,7893],"valid"],[[7894,7894],"mapped",[7895]],[[7895,7895],"valid"],[[7896,7896],"mapped",[7897]],[[7897,7897],"valid"],[[7898,7898],"mapped",[7899]],[[7899,7899],"valid"],[[7900,7900],"mapped",[7901]],[[7901,7901],"valid"],[[7902,7902],"mapped",[7903]],[[7903,7903],"valid"],[[7904,7904],"mapped",[7905]],[[7905,7905],"valid"],[[7906,7906],"mapped",[7907]],[[7907,7907],"valid"],[[7908,7908],"mapped",[7909]],[[7909,7909],"valid"],[[7910,7910],"mapped",[7911]],[[7911,7911],"valid"],[[7912,7912],"mapped",[7913]],[[7913,7913],"valid"],[[7914,7914],"mapped",[7915]],[[7915,7915],"valid"],[[7916,7916],"mapped",[7917]],[[7917,7917],"valid"],[[7918,7918],"mapped",[7919]],[[7919,7919],"valid"],[[7920,7920],"mapped",[7921]],[[7921,7921],"valid"],[[7922,7922],"mapped",[7923]],[[7923,7923],"valid"],[[7924,7924],"mapped",[7925]],[[7925,7925],"valid"],[[7926,7926],"mapped",[7927]],[[7927,7927],"valid"],[[7928,7928],"mapped",[7929]],[[7929,7929],"valid"],[[7930,7930],"mapped",[7931]],[[7931,7931],"valid"],[[7932,7932],"mapped",[7933]],[[7933,7933],"valid"],[[7934,7934],"mapped",[7935]],[[7935,7935],"valid"],[[7936,7943],"valid"],[[7944,7944],"mapped",[7936]],[[7945,7945],"mapped",[7937]],[[7946,7946],"mapped",[7938]],[[7947,7947],"mapped",[7939]],[[7948,7948],"mapped",[7940]],[[7949,7949],"mapped",[7941]],[[7950,7950],"mapped",[7942]],[[7951,7951],"mapped",[7943]],[[7952,7957],"valid"],[[7958,7959],"disallowed"],[[7960,7960],"mapped",[7952]],[[7961,7961],"mapped",[7953]],[[7962,7962],"mapped",[7954]],[[7963,7963],"mapped",[7955]],[[7964,7964],"mapped",[7956]],[[7965,7965],"mapped",[7957]],[[7966,7967],"disallowed"],[[7968,7975],"valid"],[[7976,7976],"mapped",[7968]],[[7977,7977],"mapped",[7969]],[[7978,7978],"mapped",[7970]],[[7979,7979],"mapped",[7971]],[[7980,7980],"mapped",[7972]],[[7981,7981],"mapped",[7973]],[[7982,7982],"mapped",[7974]],[[7983,7983],"mapped",[7975]],[[7984,7991],"valid"],[[7992,7992],"mapped",[7984]],[[7993,7993],"mapped",[7985]],[[7994,7994],"mapped",[7986]],[[7995,7995],"mapped",[7987]],[[7996,7996],"mapped",[7988]],[[7997,7997],"mapped",[7989]],[[7998,7998],"mapped",[7990]],[[7999,7999],"mapped",[7991]],[[8e3,8005],"valid"],[[8006,8007],"disallowed"],[[8008,8008],"mapped",[8e3]],[[8009,8009],"mapped",[8001]],[[8010,8010],"mapped",[8002]],[[8011,8011],"mapped",[8003]],[[8012,8012],"mapped",[8004]],[[8013,8013],"mapped",[8005]],[[8014,8015],"disallowed"],[[8016,8023],"valid"],[[8024,8024],"disallowed"],[[8025,8025],"mapped",[8017]],[[8026,8026],"disallowed"],[[8027,8027],"mapped",[8019]],[[8028,8028],"disallowed"],[[8029,8029],"mapped",[8021]],[[8030,8030],"disallowed"],[[8031,8031],"mapped",[8023]],[[8032,8039],"valid"],[[8040,8040],"mapped",[8032]],[[8041,8041],"mapped",[8033]],[[8042,8042],"mapped",[8034]],[[8043,8043],"mapped",[8035]],[[8044,8044],"mapped",[8036]],[[8045,8045],"mapped",[8037]],[[8046,8046],"mapped",[8038]],[[8047,8047],"mapped",[8039]],[[8048,8048],"valid"],[[8049,8049],"mapped",[940]],[[8050,8050],"valid"],[[8051,8051],"mapped",[941]],[[8052,8052],"valid"],[[8053,8053],"mapped",[942]],[[8054,8054],"valid"],[[8055,8055],"mapped",[943]],[[8056,8056],"valid"],[[8057,8057],"mapped",[972]],[[8058,8058],"valid"],[[8059,8059],"mapped",[973]],[[8060,8060],"valid"],[[8061,8061],"mapped",[974]],[[8062,8063],"disallowed"],[[8064,8064],"mapped",[7936,953]],[[8065,8065],"mapped",[7937,953]],[[8066,8066],"mapped",[7938,953]],[[8067,8067],"mapped",[7939,953]],[[8068,8068],"mapped",[7940,953]],[[8069,8069],"mapped",[7941,953]],[[8070,8070],"mapped",[7942,953]],[[8071,8071],"mapped",[7943,953]],[[8072,8072],"mapped",[7936,953]],[[8073,8073],"mapped",[7937,953]],[[8074,8074],"mapped",[7938,953]],[[8075,8075],"mapped",[7939,953]],[[8076,8076],"mapped",[7940,953]],[[8077,8077],"mapped",[7941,953]],[[8078,8078],"mapped",[7942,953]],[[8079,8079],"mapped",[7943,953]],[[8080,8080],"mapped",[7968,953]],[[8081,8081],"mapped",[7969,953]],[[8082,8082],"mapped",[7970,953]],[[8083,8083],"mapped",[7971,953]],[[8084,8084],"mapped",[7972,953]],[[8085,8085],"mapped",[7973,953]],[[8086,8086],"mapped",[7974,953]],[[8087,8087],"mapped",[7975,953]],[[8088,8088],"mapped",[7968,953]],[[8089,8089],"mapped",[7969,953]],[[8090,8090],"mapped",[7970,953]],[[8091,8091],"mapped",[7971,953]],[[8092,8092],"mapped",[7972,953]],[[8093,8093],"mapped",[7973,953]],[[8094,8094],"mapped",[7974,953]],[[8095,8095],"mapped",[7975,953]],[[8096,8096],"mapped",[8032,953]],[[8097,8097],"mapped",[8033,953]],[[8098,8098],"mapped",[8034,953]],[[8099,8099],"mapped",[8035,953]],[[8100,8100],"mapped",[8036,953]],[[8101,8101],"mapped",[8037,953]],[[8102,8102],"mapped",[8038,953]],[[8103,8103],"mapped",[8039,953]],[[8104,8104],"mapped",[8032,953]],[[8105,8105],"mapped",[8033,953]],[[8106,8106],"mapped",[8034,953]],[[8107,8107],"mapped",[8035,953]],[[8108,8108],"mapped",[8036,953]],[[8109,8109],"mapped",[8037,953]],[[8110,8110],"mapped",[8038,953]],[[8111,8111],"mapped",[8039,953]],[[8112,8113],"valid"],[[8114,8114],"mapped",[8048,953]],[[8115,8115],"mapped",[945,953]],[[8116,8116],"mapped",[940,953]],[[8117,8117],"disallowed"],[[8118,8118],"valid"],[[8119,8119],"mapped",[8118,953]],[[8120,8120],"mapped",[8112]],[[8121,8121],"mapped",[8113]],[[8122,8122],"mapped",[8048]],[[8123,8123],"mapped",[940]],[[8124,8124],"mapped",[945,953]],[[8125,8125],"disallowed_STD3_mapped",[32,787]],[[8126,8126],"mapped",[953]],[[8127,8127],"disallowed_STD3_mapped",[32,787]],[[8128,8128],"disallowed_STD3_mapped",[32,834]],[[8129,8129],"disallowed_STD3_mapped",[32,776,834]],[[8130,8130],"mapped",[8052,953]],[[8131,8131],"mapped",[951,953]],[[8132,8132],"mapped",[942,953]],[[8133,8133],"disallowed"],[[8134,8134],"valid"],[[8135,8135],"mapped",[8134,953]],[[8136,8136],"mapped",[8050]],[[8137,8137],"mapped",[941]],[[8138,8138],"mapped",[8052]],[[8139,8139],"mapped",[942]],[[8140,8140],"mapped",[951,953]],[[8141,8141],"disallowed_STD3_mapped",[32,787,768]],[[8142,8142],"disallowed_STD3_mapped",[32,787,769]],[[8143,8143],"disallowed_STD3_mapped",[32,787,834]],[[8144,8146],"valid"],[[8147,8147],"mapped",[912]],[[8148,8149],"disallowed"],[[8150,8151],"valid"],[[8152,8152],"mapped",[8144]],[[8153,8153],"mapped",[8145]],[[8154,8154],"mapped",[8054]],[[8155,8155],"mapped",[943]],[[8156,8156],"disallowed"],[[8157,8157],"disallowed_STD3_mapped",[32,788,768]],[[8158,8158],"disallowed_STD3_mapped",[32,788,769]],[[8159,8159],"disallowed_STD3_mapped",[32,788,834]],[[8160,8162],"valid"],[[8163,8163],"mapped",[944]],[[8164,8167],"valid"],[[8168,8168],"mapped",[8160]],[[8169,8169],"mapped",[8161]],[[8170,8170],"mapped",[8058]],[[8171,8171],"mapped",[973]],[[8172,8172],"mapped",[8165]],[[8173,8173],"disallowed_STD3_mapped",[32,776,768]],[[8174,8174],"disallowed_STD3_mapped",[32,776,769]],[[8175,8175],"disallowed_STD3_mapped",[96]],[[8176,8177],"disallowed"],[[8178,8178],"mapped",[8060,953]],[[8179,8179],"mapped",[969,953]],[[8180,8180],"mapped",[974,953]],[[8181,8181],"disallowed"],[[8182,8182],"valid"],[[8183,8183],"mapped",[8182,953]],[[8184,8184],"mapped",[8056]],[[8185,8185],"mapped",[972]],[[8186,8186],"mapped",[8060]],[[8187,8187],"mapped",[974]],[[8188,8188],"mapped",[969,953]],[[8189,8189],"disallowed_STD3_mapped",[32,769]],[[8190,8190],"disallowed_STD3_mapped",[32,788]],[[8191,8191],"disallowed"],[[8192,8202],"disallowed_STD3_mapped",[32]],[[8203,8203],"ignored"],[[8204,8205],"deviation",[]],[[8206,8207],"disallowed"],[[8208,8208],"valid",[],"NV8"],[[8209,8209],"mapped",[8208]],[[8210,8214],"valid",[],"NV8"],[[8215,8215],"disallowed_STD3_mapped",[32,819]],[[8216,8227],"valid",[],"NV8"],[[8228,8230],"disallowed"],[[8231,8231],"valid",[],"NV8"],[[8232,8238],"disallowed"],[[8239,8239],"disallowed_STD3_mapped",[32]],[[8240,8242],"valid",[],"NV8"],[[8243,8243],"mapped",[8242,8242]],[[8244,8244],"mapped",[8242,8242,8242]],[[8245,8245],"valid",[],"NV8"],[[8246,8246],"mapped",[8245,8245]],[[8247,8247],"mapped",[8245,8245,8245]],[[8248,8251],"valid",[],"NV8"],[[8252,8252],"disallowed_STD3_mapped",[33,33]],[[8253,8253],"valid",[],"NV8"],[[8254,8254],"disallowed_STD3_mapped",[32,773]],[[8255,8262],"valid",[],"NV8"],[[8263,8263],"disallowed_STD3_mapped",[63,63]],[[8264,8264],"disallowed_STD3_mapped",[63,33]],[[8265,8265],"disallowed_STD3_mapped",[33,63]],[[8266,8269],"valid",[],"NV8"],[[8270,8274],"valid",[],"NV8"],[[8275,8276],"valid",[],"NV8"],[[8277,8278],"valid",[],"NV8"],[[8279,8279],"mapped",[8242,8242,8242,8242]],[[8280,8286],"valid",[],"NV8"],[[8287,8287],"disallowed_STD3_mapped",[32]],[[8288,8288],"ignored"],[[8289,8291],"disallowed"],[[8292,8292],"ignored"],[[8293,8293],"disallowed"],[[8294,8297],"disallowed"],[[8298,8303],"disallowed"],[[8304,8304],"mapped",[48]],[[8305,8305],"mapped",[105]],[[8306,8307],"disallowed"],[[8308,8308],"mapped",[52]],[[8309,8309],"mapped",[53]],[[8310,8310],"mapped",[54]],[[8311,8311],"mapped",[55]],[[8312,8312],"mapped",[56]],[[8313,8313],"mapped",[57]],[[8314,8314],"disallowed_STD3_mapped",[43]],[[8315,8315],"mapped",[8722]],[[8316,8316],"disallowed_STD3_mapped",[61]],[[8317,8317],"disallowed_STD3_mapped",[40]],[[8318,8318],"disallowed_STD3_mapped",[41]],[[8319,8319],"mapped",[110]],[[8320,8320],"mapped",[48]],[[8321,8321],"mapped",[49]],[[8322,8322],"mapped",[50]],[[8323,8323],"mapped",[51]],[[8324,8324],"mapped",[52]],[[8325,8325],"mapped",[53]],[[8326,8326],"mapped",[54]],[[8327,8327],"mapped",[55]],[[8328,8328],"mapped",[56]],[[8329,8329],"mapped",[57]],[[8330,8330],"disallowed_STD3_mapped",[43]],[[8331,8331],"mapped",[8722]],[[8332,8332],"disallowed_STD3_mapped",[61]],[[8333,8333],"disallowed_STD3_mapped",[40]],[[8334,8334],"disallowed_STD3_mapped",[41]],[[8335,8335],"disallowed"],[[8336,8336],"mapped",[97]],[[8337,8337],"mapped",[101]],[[8338,8338],"mapped",[111]],[[8339,8339],"mapped",[120]],[[8340,8340],"mapped",[601]],[[8341,8341],"mapped",[104]],[[8342,8342],"mapped",[107]],[[8343,8343],"mapped",[108]],[[8344,8344],"mapped",[109]],[[8345,8345],"mapped",[110]],[[8346,8346],"mapped",[112]],[[8347,8347],"mapped",[115]],[[8348,8348],"mapped",[116]],[[8349,8351],"disallowed"],[[8352,8359],"valid",[],"NV8"],[[8360,8360],"mapped",[114,115]],[[8361,8362],"valid",[],"NV8"],[[8363,8363],"valid",[],"NV8"],[[8364,8364],"valid",[],"NV8"],[[8365,8367],"valid",[],"NV8"],[[8368,8369],"valid",[],"NV8"],[[8370,8373],"valid",[],"NV8"],[[8374,8376],"valid",[],"NV8"],[[8377,8377],"valid",[],"NV8"],[[8378,8378],"valid",[],"NV8"],[[8379,8381],"valid",[],"NV8"],[[8382,8382],"valid",[],"NV8"],[[8383,8399],"disallowed"],[[8400,8417],"valid",[],"NV8"],[[8418,8419],"valid",[],"NV8"],[[8420,8426],"valid",[],"NV8"],[[8427,8427],"valid",[],"NV8"],[[8428,8431],"valid",[],"NV8"],[[8432,8432],"valid",[],"NV8"],[[8433,8447],"disallowed"],[[8448,8448],"disallowed_STD3_mapped",[97,47,99]],[[8449,8449],"disallowed_STD3_mapped",[97,47,115]],[[8450,8450],"mapped",[99]],[[8451,8451],"mapped",[176,99]],[[8452,8452],"valid",[],"NV8"],[[8453,8453],"disallowed_STD3_mapped",[99,47,111]],[[8454,8454],"disallowed_STD3_mapped",[99,47,117]],[[8455,8455],"mapped",[603]],[[8456,8456],"valid",[],"NV8"],[[8457,8457],"mapped",[176,102]],[[8458,8458],"mapped",[103]],[[8459,8462],"mapped",[104]],[[8463,8463],"mapped",[295]],[[8464,8465],"mapped",[105]],[[8466,8467],"mapped",[108]],[[8468,8468],"valid",[],"NV8"],[[8469,8469],"mapped",[110]],[[8470,8470],"mapped",[110,111]],[[8471,8472],"valid",[],"NV8"],[[8473,8473],"mapped",[112]],[[8474,8474],"mapped",[113]],[[8475,8477],"mapped",[114]],[[8478,8479],"valid",[],"NV8"],[[8480,8480],"mapped",[115,109]],[[8481,8481],"mapped",[116,101,108]],[[8482,8482],"mapped",[116,109]],[[8483,8483],"valid",[],"NV8"],[[8484,8484],"mapped",[122]],[[8485,8485],"valid",[],"NV8"],[[8486,8486],"mapped",[969]],[[8487,8487],"valid",[],"NV8"],[[8488,8488],"mapped",[122]],[[8489,8489],"valid",[],"NV8"],[[8490,8490],"mapped",[107]],[[8491,8491],"mapped",[229]],[[8492,8492],"mapped",[98]],[[8493,8493],"mapped",[99]],[[8494,8494],"valid",[],"NV8"],[[8495,8496],"mapped",[101]],[[8497,8497],"mapped",[102]],[[8498,8498],"disallowed"],[[8499,8499],"mapped",[109]],[[8500,8500],"mapped",[111]],[[8501,8501],"mapped",[1488]],[[8502,8502],"mapped",[1489]],[[8503,8503],"mapped",[1490]],[[8504,8504],"mapped",[1491]],[[8505,8505],"mapped",[105]],[[8506,8506],"valid",[],"NV8"],[[8507,8507],"mapped",[102,97,120]],[[8508,8508],"mapped",[960]],[[8509,8510],"mapped",[947]],[[8511,8511],"mapped",[960]],[[8512,8512],"mapped",[8721]],[[8513,8516],"valid",[],"NV8"],[[8517,8518],"mapped",[100]],[[8519,8519],"mapped",[101]],[[8520,8520],"mapped",[105]],[[8521,8521],"mapped",[106]],[[8522,8523],"valid",[],"NV8"],[[8524,8524],"valid",[],"NV8"],[[8525,8525],"valid",[],"NV8"],[[8526,8526],"valid"],[[8527,8527],"valid",[],"NV8"],[[8528,8528],"mapped",[49,8260,55]],[[8529,8529],"mapped",[49,8260,57]],[[8530,8530],"mapped",[49,8260,49,48]],[[8531,8531],"mapped",[49,8260,51]],[[8532,8532],"mapped",[50,8260,51]],[[8533,8533],"mapped",[49,8260,53]],[[8534,8534],"mapped",[50,8260,53]],[[8535,8535],"mapped",[51,8260,53]],[[8536,8536],"mapped",[52,8260,53]],[[8537,8537],"mapped",[49,8260,54]],[[8538,8538],"mapped",[53,8260,54]],[[8539,8539],"mapped",[49,8260,56]],[[8540,8540],"mapped",[51,8260,56]],[[8541,8541],"mapped",[53,8260,56]],[[8542,8542],"mapped",[55,8260,56]],[[8543,8543],"mapped",[49,8260]],[[8544,8544],"mapped",[105]],[[8545,8545],"mapped",[105,105]],[[8546,8546],"mapped",[105,105,105]],[[8547,8547],"mapped",[105,118]],[[8548,8548],"mapped",[118]],[[8549,8549],"mapped",[118,105]],[[8550,8550],"mapped",[118,105,105]],[[8551,8551],"mapped",[118,105,105,105]],[[8552,8552],"mapped",[105,120]],[[8553,8553],"mapped",[120]],[[8554,8554],"mapped",[120,105]],[[8555,8555],"mapped",[120,105,105]],[[8556,8556],"mapped",[108]],[[8557,8557],"mapped",[99]],[[8558,8558],"mapped",[100]],[[8559,8559],"mapped",[109]],[[8560,8560],"mapped",[105]],[[8561,8561],"mapped",[105,105]],[[8562,8562],"mapped",[105,105,105]],[[8563,8563],"mapped",[105,118]],[[8564,8564],"mapped",[118]],[[8565,8565],"mapped",[118,105]],[[8566,8566],"mapped",[118,105,105]],[[8567,8567],"mapped",[118,105,105,105]],[[8568,8568],"mapped",[105,120]],[[8569,8569],"mapped",[120]],[[8570,8570],"mapped",[120,105]],[[8571,8571],"mapped",[120,105,105]],[[8572,8572],"mapped",[108]],[[8573,8573],"mapped",[99]],[[8574,8574],"mapped",[100]],[[8575,8575],"mapped",[109]],[[8576,8578],"valid",[],"NV8"],[[8579,8579],"disallowed"],[[8580,8580],"valid"],[[8581,8584],"valid",[],"NV8"],[[8585,8585],"mapped",[48,8260,51]],[[8586,8587],"valid",[],"NV8"],[[8588,8591],"disallowed"],[[8592,8682],"valid",[],"NV8"],[[8683,8691],"valid",[],"NV8"],[[8692,8703],"valid",[],"NV8"],[[8704,8747],"valid",[],"NV8"],[[8748,8748],"mapped",[8747,8747]],[[8749,8749],"mapped",[8747,8747,8747]],[[8750,8750],"valid",[],"NV8"],[[8751,8751],"mapped",[8750,8750]],[[8752,8752],"mapped",[8750,8750,8750]],[[8753,8799],"valid",[],"NV8"],[[8800,8800],"disallowed_STD3_valid"],[[8801,8813],"valid",[],"NV8"],[[8814,8815],"disallowed_STD3_valid"],[[8816,8945],"valid",[],"NV8"],[[8946,8959],"valid",[],"NV8"],[[8960,8960],"valid",[],"NV8"],[[8961,8961],"valid",[],"NV8"],[[8962,9e3],"valid",[],"NV8"],[[9001,9001],"mapped",[12296]],[[9002,9002],"mapped",[12297]],[[9003,9082],"valid",[],"NV8"],[[9083,9083],"valid",[],"NV8"],[[9084,9084],"valid",[],"NV8"],[[9085,9114],"valid",[],"NV8"],[[9115,9166],"valid",[],"NV8"],[[9167,9168],"valid",[],"NV8"],[[9169,9179],"valid",[],"NV8"],[[9180,9191],"valid",[],"NV8"],[[9192,9192],"valid",[],"NV8"],[[9193,9203],"valid",[],"NV8"],[[9204,9210],"valid",[],"NV8"],[[9211,9215],"disallowed"],[[9216,9252],"valid",[],"NV8"],[[9253,9254],"valid",[],"NV8"],[[9255,9279],"disallowed"],[[9280,9290],"valid",[],"NV8"],[[9291,9311],"disallowed"],[[9312,9312],"mapped",[49]],[[9313,9313],"mapped",[50]],[[9314,9314],"mapped",[51]],[[9315,9315],"mapped",[52]],[[9316,9316],"mapped",[53]],[[9317,9317],"mapped",[54]],[[9318,9318],"mapped",[55]],[[9319,9319],"mapped",[56]],[[9320,9320],"mapped",[57]],[[9321,9321],"mapped",[49,48]],[[9322,9322],"mapped",[49,49]],[[9323,9323],"mapped",[49,50]],[[9324,9324],"mapped",[49,51]],[[9325,9325],"mapped",[49,52]],[[9326,9326],"mapped",[49,53]],[[9327,9327],"mapped",[49,54]],[[9328,9328],"mapped",[49,55]],[[9329,9329],"mapped",[49,56]],[[9330,9330],"mapped",[49,57]],[[9331,9331],"mapped",[50,48]],[[9332,9332],"disallowed_STD3_mapped",[40,49,41]],[[9333,9333],"disallowed_STD3_mapped",[40,50,41]],[[9334,9334],"disallowed_STD3_mapped",[40,51,41]],[[9335,9335],"disallowed_STD3_mapped",[40,52,41]],[[9336,9336],"disallowed_STD3_mapped",[40,53,41]],[[9337,9337],"disallowed_STD3_mapped",[40,54,41]],[[9338,9338],"disallowed_STD3_mapped",[40,55,41]],[[9339,9339],"disallowed_STD3_mapped",[40,56,41]],[[9340,9340],"disallowed_STD3_mapped",[40,57,41]],[[9341,9341],"disallowed_STD3_mapped",[40,49,48,41]],[[9342,9342],"disallowed_STD3_mapped",[40,49,49,41]],[[9343,9343],"disallowed_STD3_mapped",[40,49,50,41]],[[9344,9344],"disallowed_STD3_mapped",[40,49,51,41]],[[9345,9345],"disallowed_STD3_mapped",[40,49,52,41]],[[9346,9346],"disallowed_STD3_mapped",[40,49,53,41]],[[9347,9347],"disallowed_STD3_mapped",[40,49,54,41]],[[9348,9348],"disallowed_STD3_mapped",[40,49,55,41]],[[9349,9349],"disallowed_STD3_mapped",[40,49,56,41]],[[9350,9350],"disallowed_STD3_mapped",[40,49,57,41]],[[9351,9351],"disallowed_STD3_mapped",[40,50,48,41]],[[9352,9371],"disallowed"],[[9372,9372],"disallowed_STD3_mapped",[40,97,41]],[[9373,9373],"disallowed_STD3_mapped",[40,98,41]],[[9374,9374],"disallowed_STD3_mapped",[40,99,41]],[[9375,9375],"disallowed_STD3_mapped",[40,100,41]],[[9376,9376],"disallowed_STD3_mapped",[40,101,41]],[[9377,9377],"disallowed_STD3_mapped",[40,102,41]],[[9378,9378],"disallowed_STD3_mapped",[40,103,41]],[[9379,9379],"disallowed_STD3_mapped",[40,104,41]],[[9380,9380],"disallowed_STD3_mapped",[40,105,41]],[[9381,9381],"disallowed_STD3_mapped",[40,106,41]],[[9382,9382],"disallowed_STD3_mapped",[40,107,41]],[[9383,9383],"disallowed_STD3_mapped",[40,108,41]],[[9384,9384],"disallowed_STD3_mapped",[40,109,41]],[[9385,9385],"disallowed_STD3_mapped",[40,110,41]],[[9386,9386],"disallowed_STD3_mapped",[40,111,41]],[[9387,9387],"disallowed_STD3_mapped",[40,112,41]],[[9388,9388],"disallowed_STD3_mapped",[40,113,41]],[[9389,9389],"disallowed_STD3_mapped",[40,114,41]],[[9390,9390],"disallowed_STD3_mapped",[40,115,41]],[[9391,9391],"disallowed_STD3_mapped",[40,116,41]],[[9392,9392],"disallowed_STD3_mapped",[40,117,41]],[[9393,9393],"disallowed_STD3_mapped",[40,118,41]],[[9394,9394],"disallowed_STD3_mapped",[40,119,41]],[[9395,9395],"disallowed_STD3_mapped",[40,120,41]],[[9396,9396],"disallowed_STD3_mapped",[40,121,41]],[[9397,9397],"disallowed_STD3_mapped",[40,122,41]],[[9398,9398],"mapped",[97]],[[9399,9399],"mapped",[98]],[[9400,9400],"mapped",[99]],[[9401,9401],"mapped",[100]],[[9402,9402],"mapped",[101]],[[9403,9403],"mapped",[102]],[[9404,9404],"mapped",[103]],[[9405,9405],"mapped",[104]],[[9406,9406],"mapped",[105]],[[9407,9407],"mapped",[106]],[[9408,9408],"mapped",[107]],[[9409,9409],"mapped",[108]],[[9410,9410],"mapped",[109]],[[9411,9411],"mapped",[110]],[[9412,9412],"mapped",[111]],[[9413,9413],"mapped",[112]],[[9414,9414],"mapped",[113]],[[9415,9415],"mapped",[114]],[[9416,9416],"mapped",[115]],[[9417,9417],"mapped",[116]],[[9418,9418],"mapped",[117]],[[9419,9419],"mapped",[118]],[[9420,9420],"mapped",[119]],[[9421,9421],"mapped",[120]],[[9422,9422],"mapped",[121]],[[9423,9423],"mapped",[122]],[[9424,9424],"mapped",[97]],[[9425,9425],"mapped",[98]],[[9426,9426],"mapped",[99]],[[9427,9427],"mapped",[100]],[[9428,9428],"mapped",[101]],[[9429,9429],"mapped",[102]],[[9430,9430],"mapped",[103]],[[9431,9431],"mapped",[104]],[[9432,9432],"mapped",[105]],[[9433,9433],"mapped",[106]],[[9434,9434],"mapped",[107]],[[9435,9435],"mapped",[108]],[[9436,9436],"mapped",[109]],[[9437,9437],"mapped",[110]],[[9438,9438],"mapped",[111]],[[9439,9439],"mapped",[112]],[[9440,9440],"mapped",[113]],[[9441,9441],"mapped",[114]],[[9442,9442],"mapped",[115]],[[9443,9443],"mapped",[116]],[[9444,9444],"mapped",[117]],[[9445,9445],"mapped",[118]],[[9446,9446],"mapped",[119]],[[9447,9447],"mapped",[120]],[[9448,9448],"mapped",[121]],[[9449,9449],"mapped",[122]],[[9450,9450],"mapped",[48]],[[9451,9470],"valid",[],"NV8"],[[9471,9471],"valid",[],"NV8"],[[9472,9621],"valid",[],"NV8"],[[9622,9631],"valid",[],"NV8"],[[9632,9711],"valid",[],"NV8"],[[9712,9719],"valid",[],"NV8"],[[9720,9727],"valid",[],"NV8"],[[9728,9747],"valid",[],"NV8"],[[9748,9749],"valid",[],"NV8"],[[9750,9751],"valid",[],"NV8"],[[9752,9752],"valid",[],"NV8"],[[9753,9753],"valid",[],"NV8"],[[9754,9839],"valid",[],"NV8"],[[9840,9841],"valid",[],"NV8"],[[9842,9853],"valid",[],"NV8"],[[9854,9855],"valid",[],"NV8"],[[9856,9865],"valid",[],"NV8"],[[9866,9873],"valid",[],"NV8"],[[9874,9884],"valid",[],"NV8"],[[9885,9885],"valid",[],"NV8"],[[9886,9887],"valid",[],"NV8"],[[9888,9889],"valid",[],"NV8"],[[9890,9905],"valid",[],"NV8"],[[9906,9906],"valid",[],"NV8"],[[9907,9916],"valid",[],"NV8"],[[9917,9919],"valid",[],"NV8"],[[9920,9923],"valid",[],"NV8"],[[9924,9933],"valid",[],"NV8"],[[9934,9934],"valid",[],"NV8"],[[9935,9953],"valid",[],"NV8"],[[9954,9954],"valid",[],"NV8"],[[9955,9955],"valid",[],"NV8"],[[9956,9959],"valid",[],"NV8"],[[9960,9983],"valid",[],"NV8"],[[9984,9984],"valid",[],"NV8"],[[9985,9988],"valid",[],"NV8"],[[9989,9989],"valid",[],"NV8"],[[9990,9993],"valid",[],"NV8"],[[9994,9995],"valid",[],"NV8"],[[9996,10023],"valid",[],"NV8"],[[10024,10024],"valid",[],"NV8"],[[10025,10059],"valid",[],"NV8"],[[10060,10060],"valid",[],"NV8"],[[10061,10061],"valid",[],"NV8"],[[10062,10062],"valid",[],"NV8"],[[10063,10066],"valid",[],"NV8"],[[10067,10069],"valid",[],"NV8"],[[10070,10070],"valid",[],"NV8"],[[10071,10071],"valid",[],"NV8"],[[10072,10078],"valid",[],"NV8"],[[10079,10080],"valid",[],"NV8"],[[10081,10087],"valid",[],"NV8"],[[10088,10101],"valid",[],"NV8"],[[10102,10132],"valid",[],"NV8"],[[10133,10135],"valid",[],"NV8"],[[10136,10159],"valid",[],"NV8"],[[10160,10160],"valid",[],"NV8"],[[10161,10174],"valid",[],"NV8"],[[10175,10175],"valid",[],"NV8"],[[10176,10182],"valid",[],"NV8"],[[10183,10186],"valid",[],"NV8"],[[10187,10187],"valid",[],"NV8"],[[10188,10188],"valid",[],"NV8"],[[10189,10189],"valid",[],"NV8"],[[10190,10191],"valid",[],"NV8"],[[10192,10219],"valid",[],"NV8"],[[10220,10223],"valid",[],"NV8"],[[10224,10239],"valid",[],"NV8"],[[10240,10495],"valid",[],"NV8"],[[10496,10763],"valid",[],"NV8"],[[10764,10764],"mapped",[8747,8747,8747,8747]],[[10765,10867],"valid",[],"NV8"],[[10868,10868],"disallowed_STD3_mapped",[58,58,61]],[[10869,10869],"disallowed_STD3_mapped",[61,61]],[[10870,10870],"disallowed_STD3_mapped",[61,61,61]],[[10871,10971],"valid",[],"NV8"],[[10972,10972],"mapped",[10973,824]],[[10973,11007],"valid",[],"NV8"],[[11008,11021],"valid",[],"NV8"],[[11022,11027],"valid",[],"NV8"],[[11028,11034],"valid",[],"NV8"],[[11035,11039],"valid",[],"NV8"],[[11040,11043],"valid",[],"NV8"],[[11044,11084],"valid",[],"NV8"],[[11085,11087],"valid",[],"NV8"],[[11088,11092],"valid",[],"NV8"],[[11093,11097],"valid",[],"NV8"],[[11098,11123],"valid",[],"NV8"],[[11124,11125],"disallowed"],[[11126,11157],"valid",[],"NV8"],[[11158,11159],"disallowed"],[[11160,11193],"valid",[],"NV8"],[[11194,11196],"disallowed"],[[11197,11208],"valid",[],"NV8"],[[11209,11209],"disallowed"],[[11210,11217],"valid",[],"NV8"],[[11218,11243],"disallowed"],[[11244,11247],"valid",[],"NV8"],[[11248,11263],"disallowed"],[[11264,11264],"mapped",[11312]],[[11265,11265],"mapped",[11313]],[[11266,11266],"mapped",[11314]],[[11267,11267],"mapped",[11315]],[[11268,11268],"mapped",[11316]],[[11269,11269],"mapped",[11317]],[[11270,11270],"mapped",[11318]],[[11271,11271],"mapped",[11319]],[[11272,11272],"mapped",[11320]],[[11273,11273],"mapped",[11321]],[[11274,11274],"mapped",[11322]],[[11275,11275],"mapped",[11323]],[[11276,11276],"mapped",[11324]],[[11277,11277],"mapped",[11325]],[[11278,11278],"mapped",[11326]],[[11279,11279],"mapped",[11327]],[[11280,11280],"mapped",[11328]],[[11281,11281],"mapped",[11329]],[[11282,11282],"mapped",[11330]],[[11283,11283],"mapped",[11331]],[[11284,11284],"mapped",[11332]],[[11285,11285],"mapped",[11333]],[[11286,11286],"mapped",[11334]],[[11287,11287],"mapped",[11335]],[[11288,11288],"mapped",[11336]],[[11289,11289],"mapped",[11337]],[[11290,11290],"mapped",[11338]],[[11291,11291],"mapped",[11339]],[[11292,11292],"mapped",[11340]],[[11293,11293],"mapped",[11341]],[[11294,11294],"mapped",[11342]],[[11295,11295],"mapped",[11343]],[[11296,11296],"mapped",[11344]],[[11297,11297],"mapped",[11345]],[[11298,11298],"mapped",[11346]],[[11299,11299],"mapped",[11347]],[[11300,11300],"mapped",[11348]],[[11301,11301],"mapped",[11349]],[[11302,11302],"mapped",[11350]],[[11303,11303],"mapped",[11351]],[[11304,11304],"mapped",[11352]],[[11305,11305],"mapped",[11353]],[[11306,11306],"mapped",[11354]],[[11307,11307],"mapped",[11355]],[[11308,11308],"mapped",[11356]],[[11309,11309],"mapped",[11357]],[[11310,11310],"mapped",[11358]],[[11311,11311],"disallowed"],[[11312,11358],"valid"],[[11359,11359],"disallowed"],[[11360,11360],"mapped",[11361]],[[11361,11361],"valid"],[[11362,11362],"mapped",[619]],[[11363,11363],"mapped",[7549]],[[11364,11364],"mapped",[637]],[[11365,11366],"valid"],[[11367,11367],"mapped",[11368]],[[11368,11368],"valid"],[[11369,11369],"mapped",[11370]],[[11370,11370],"valid"],[[11371,11371],"mapped",[11372]],[[11372,11372],"valid"],[[11373,11373],"mapped",[593]],[[11374,11374],"mapped",[625]],[[11375,11375],"mapped",[592]],[[11376,11376],"mapped",[594]],[[11377,11377],"valid"],[[11378,11378],"mapped",[11379]],[[11379,11379],"valid"],[[11380,11380],"valid"],[[11381,11381],"mapped",[11382]],[[11382,11383],"valid"],[[11384,11387],"valid"],[[11388,11388],"mapped",[106]],[[11389,11389],"mapped",[118]],[[11390,11390],"mapped",[575]],[[11391,11391],"mapped",[576]],[[11392,11392],"mapped",[11393]],[[11393,11393],"valid"],[[11394,11394],"mapped",[11395]],[[11395,11395],"valid"],[[11396,11396],"mapped",[11397]],[[11397,11397],"valid"],[[11398,11398],"mapped",[11399]],[[11399,11399],"valid"],[[11400,11400],"mapped",[11401]],[[11401,11401],"valid"],[[11402,11402],"mapped",[11403]],[[11403,11403],"valid"],[[11404,11404],"mapped",[11405]],[[11405,11405],"valid"],[[11406,11406],"mapped",[11407]],[[11407,11407],"valid"],[[11408,11408],"mapped",[11409]],[[11409,11409],"valid"],[[11410,11410],"mapped",[11411]],[[11411,11411],"valid"],[[11412,11412],"mapped",[11413]],[[11413,11413],"valid"],[[11414,11414],"mapped",[11415]],[[11415,11415],"valid"],[[11416,11416],"mapped",[11417]],[[11417,11417],"valid"],[[11418,11418],"mapped",[11419]],[[11419,11419],"valid"],[[11420,11420],"mapped",[11421]],[[11421,11421],"valid"],[[11422,11422],"mapped",[11423]],[[11423,11423],"valid"],[[11424,11424],"mapped",[11425]],[[11425,11425],"valid"],[[11426,11426],"mapped",[11427]],[[11427,11427],"valid"],[[11428,11428],"mapped",[11429]],[[11429,11429],"valid"],[[11430,11430],"mapped",[11431]],[[11431,11431],"valid"],[[11432,11432],"mapped",[11433]],[[11433,11433],"valid"],[[11434,11434],"mapped",[11435]],[[11435,11435],"valid"],[[11436,11436],"mapped",[11437]],[[11437,11437],"valid"],[[11438,11438],"mapped",[11439]],[[11439,11439],"valid"],[[11440,11440],"mapped",[11441]],[[11441,11441],"valid"],[[11442,11442],"mapped",[11443]],[[11443,11443],"valid"],[[11444,11444],"mapped",[11445]],[[11445,11445],"valid"],[[11446,11446],"mapped",[11447]],[[11447,11447],"valid"],[[11448,11448],"mapped",[11449]],[[11449,11449],"valid"],[[11450,11450],"mapped",[11451]],[[11451,11451],"valid"],[[11452,11452],"mapped",[11453]],[[11453,11453],"valid"],[[11454,11454],"mapped",[11455]],[[11455,11455],"valid"],[[11456,11456],"mapped",[11457]],[[11457,11457],"valid"],[[11458,11458],"mapped",[11459]],[[11459,11459],"valid"],[[11460,11460],"mapped",[11461]],[[11461,11461],"valid"],[[11462,11462],"mapped",[11463]],[[11463,11463],"valid"],[[11464,11464],"mapped",[11465]],[[11465,11465],"valid"],[[11466,11466],"mapped",[11467]],[[11467,11467],"valid"],[[11468,11468],"mapped",[11469]],[[11469,11469],"valid"],[[11470,11470],"mapped",[11471]],[[11471,11471],"valid"],[[11472,11472],"mapped",[11473]],[[11473,11473],"valid"],[[11474,11474],"mapped",[11475]],[[11475,11475],"valid"],[[11476,11476],"mapped",[11477]],[[11477,11477],"valid"],[[11478,11478],"mapped",[11479]],[[11479,11479],"valid"],[[11480,11480],"mapped",[11481]],[[11481,11481],"valid"],[[11482,11482],"mapped",[11483]],[[11483,11483],"valid"],[[11484,11484],"mapped",[11485]],[[11485,11485],"valid"],[[11486,11486],"mapped",[11487]],[[11487,11487],"valid"],[[11488,11488],"mapped",[11489]],[[11489,11489],"valid"],[[11490,11490],"mapped",[11491]],[[11491,11492],"valid"],[[11493,11498],"valid",[],"NV8"],[[11499,11499],"mapped",[11500]],[[11500,11500],"valid"],[[11501,11501],"mapped",[11502]],[[11502,11505],"valid"],[[11506,11506],"mapped",[11507]],[[11507,11507],"valid"],[[11508,11512],"disallowed"],[[11513,11519],"valid",[],"NV8"],[[11520,11557],"valid"],[[11558,11558],"disallowed"],[[11559,11559],"valid"],[[11560,11564],"disallowed"],[[11565,11565],"valid"],[[11566,11567],"disallowed"],[[11568,11621],"valid"],[[11622,11623],"valid"],[[11624,11630],"disallowed"],[[11631,11631],"mapped",[11617]],[[11632,11632],"valid",[],"NV8"],[[11633,11646],"disallowed"],[[11647,11647],"valid"],[[11648,11670],"valid"],[[11671,11679],"disallowed"],[[11680,11686],"valid"],[[11687,11687],"disallowed"],[[11688,11694],"valid"],[[11695,11695],"disallowed"],[[11696,11702],"valid"],[[11703,11703],"disallowed"],[[11704,11710],"valid"],[[11711,11711],"disallowed"],[[11712,11718],"valid"],[[11719,11719],"disallowed"],[[11720,11726],"valid"],[[11727,11727],"disallowed"],[[11728,11734],"valid"],[[11735,11735],"disallowed"],[[11736,11742],"valid"],[[11743,11743],"disallowed"],[[11744,11775],"valid"],[[11776,11799],"valid",[],"NV8"],[[11800,11803],"valid",[],"NV8"],[[11804,11805],"valid",[],"NV8"],[[11806,11822],"valid",[],"NV8"],[[11823,11823],"valid"],[[11824,11824],"valid",[],"NV8"],[[11825,11825],"valid",[],"NV8"],[[11826,11835],"valid",[],"NV8"],[[11836,11842],"valid",[],"NV8"],[[11843,11903],"disallowed"],[[11904,11929],"valid",[],"NV8"],[[11930,11930],"disallowed"],[[11931,11934],"valid",[],"NV8"],[[11935,11935],"mapped",[27597]],[[11936,12018],"valid",[],"NV8"],[[12019,12019],"mapped",[40863]],[[12020,12031],"disallowed"],[[12032,12032],"mapped",[19968]],[[12033,12033],"mapped",[20008]],[[12034,12034],"mapped",[20022]],[[12035,12035],"mapped",[20031]],[[12036,12036],"mapped",[20057]],[[12037,12037],"mapped",[20101]],[[12038,12038],"mapped",[20108]],[[12039,12039],"mapped",[20128]],[[12040,12040],"mapped",[20154]],[[12041,12041],"mapped",[20799]],[[12042,12042],"mapped",[20837]],[[12043,12043],"mapped",[20843]],[[12044,12044],"mapped",[20866]],[[12045,12045],"mapped",[20886]],[[12046,12046],"mapped",[20907]],[[12047,12047],"mapped",[20960]],[[12048,12048],"mapped",[20981]],[[12049,12049],"mapped",[20992]],[[12050,12050],"mapped",[21147]],[[12051,12051],"mapped",[21241]],[[12052,12052],"mapped",[21269]],[[12053,12053],"mapped",[21274]],[[12054,12054],"mapped",[21304]],[[12055,12055],"mapped",[21313]],[[12056,12056],"mapped",[21340]],[[12057,12057],"mapped",[21353]],[[12058,12058],"mapped",[21378]],[[12059,12059],"mapped",[21430]],[[12060,12060],"mapped",[21448]],[[12061,12061],"mapped",[21475]],[[12062,12062],"mapped",[22231]],[[12063,12063],"mapped",[22303]],[[12064,12064],"mapped",[22763]],[[12065,12065],"mapped",[22786]],[[12066,12066],"mapped",[22794]],[[12067,12067],"mapped",[22805]],[[12068,12068],"mapped",[22823]],[[12069,12069],"mapped",[22899]],[[12070,12070],"mapped",[23376]],[[12071,12071],"mapped",[23424]],[[12072,12072],"mapped",[23544]],[[12073,12073],"mapped",[23567]],[[12074,12074],"mapped",[23586]],[[12075,12075],"mapped",[23608]],[[12076,12076],"mapped",[23662]],[[12077,12077],"mapped",[23665]],[[12078,12078],"mapped",[24027]],[[12079,12079],"mapped",[24037]],[[12080,12080],"mapped",[24049]],[[12081,12081],"mapped",[24062]],[[12082,12082],"mapped",[24178]],[[12083,12083],"mapped",[24186]],[[12084,12084],"mapped",[24191]],[[12085,12085],"mapped",[24308]],[[12086,12086],"mapped",[24318]],[[12087,12087],"mapped",[24331]],[[12088,12088],"mapped",[24339]],[[12089,12089],"mapped",[24400]],[[12090,12090],"mapped",[24417]],[[12091,12091],"mapped",[24435]],[[12092,12092],"mapped",[24515]],[[12093,12093],"mapped",[25096]],[[12094,12094],"mapped",[25142]],[[12095,12095],"mapped",[25163]],[[12096,12096],"mapped",[25903]],[[12097,12097],"mapped",[25908]],[[12098,12098],"mapped",[25991]],[[12099,12099],"mapped",[26007]],[[12100,12100],"mapped",[26020]],[[12101,12101],"mapped",[26041]],[[12102,12102],"mapped",[26080]],[[12103,12103],"mapped",[26085]],[[12104,12104],"mapped",[26352]],[[12105,12105],"mapped",[26376]],[[12106,12106],"mapped",[26408]],[[12107,12107],"mapped",[27424]],[[12108,12108],"mapped",[27490]],[[12109,12109],"mapped",[27513]],[[12110,12110],"mapped",[27571]],[[12111,12111],"mapped",[27595]],[[12112,12112],"mapped",[27604]],[[12113,12113],"mapped",[27611]],[[12114,12114],"mapped",[27663]],[[12115,12115],"mapped",[27668]],[[12116,12116],"mapped",[27700]],[[12117,12117],"mapped",[28779]],[[12118,12118],"mapped",[29226]],[[12119,12119],"mapped",[29238]],[[12120,12120],"mapped",[29243]],[[12121,12121],"mapped",[29247]],[[12122,12122],"mapped",[29255]],[[12123,12123],"mapped",[29273]],[[12124,12124],"mapped",[29275]],[[12125,12125],"mapped",[29356]],[[12126,12126],"mapped",[29572]],[[12127,12127],"mapped",[29577]],[[12128,12128],"mapped",[29916]],[[12129,12129],"mapped",[29926]],[[12130,12130],"mapped",[29976]],[[12131,12131],"mapped",[29983]],[[12132,12132],"mapped",[29992]],[[12133,12133],"mapped",[3e4]],[[12134,12134],"mapped",[30091]],[[12135,12135],"mapped",[30098]],[[12136,12136],"mapped",[30326]],[[12137,12137],"mapped",[30333]],[[12138,12138],"mapped",[30382]],[[12139,12139],"mapped",[30399]],[[12140,12140],"mapped",[30446]],[[12141,12141],"mapped",[30683]],[[12142,12142],"mapped",[30690]],[[12143,12143],"mapped",[30707]],[[12144,12144],"mapped",[31034]],[[12145,12145],"mapped",[31160]],[[12146,12146],"mapped",[31166]],[[12147,12147],"mapped",[31348]],[[12148,12148],"mapped",[31435]],[[12149,12149],"mapped",[31481]],[[12150,12150],"mapped",[31859]],[[12151,12151],"mapped",[31992]],[[12152,12152],"mapped",[32566]],[[12153,12153],"mapped",[32593]],[[12154,12154],"mapped",[32650]],[[12155,12155],"mapped",[32701]],[[12156,12156],"mapped",[32769]],[[12157,12157],"mapped",[32780]],[[12158,12158],"mapped",[32786]],[[12159,12159],"mapped",[32819]],[[12160,12160],"mapped",[32895]],[[12161,12161],"mapped",[32905]],[[12162,12162],"mapped",[33251]],[[12163,12163],"mapped",[33258]],[[12164,12164],"mapped",[33267]],[[12165,12165],"mapped",[33276]],[[12166,12166],"mapped",[33292]],[[12167,12167],"mapped",[33307]],[[12168,12168],"mapped",[33311]],[[12169,12169],"mapped",[33390]],[[12170,12170],"mapped",[33394]],[[12171,12171],"mapped",[33400]],[[12172,12172],"mapped",[34381]],[[12173,12173],"mapped",[34411]],[[12174,12174],"mapped",[34880]],[[12175,12175],"mapped",[34892]],[[12176,12176],"mapped",[34915]],[[12177,12177],"mapped",[35198]],[[12178,12178],"mapped",[35211]],[[12179,12179],"mapped",[35282]],[[12180,12180],"mapped",[35328]],[[12181,12181],"mapped",[35895]],[[12182,12182],"mapped",[35910]],[[12183,12183],"mapped",[35925]],[[12184,12184],"mapped",[35960]],[[12185,12185],"mapped",[35997]],[[12186,12186],"mapped",[36196]],[[12187,12187],"mapped",[36208]],[[12188,12188],"mapped",[36275]],[[12189,12189],"mapped",[36523]],[[12190,12190],"mapped",[36554]],[[12191,12191],"mapped",[36763]],[[12192,12192],"mapped",[36784]],[[12193,12193],"mapped",[36789]],[[12194,12194],"mapped",[37009]],[[12195,12195],"mapped",[37193]],[[12196,12196],"mapped",[37318]],[[12197,12197],"mapped",[37324]],[[12198,12198],"mapped",[37329]],[[12199,12199],"mapped",[38263]],[[12200,12200],"mapped",[38272]],[[12201,12201],"mapped",[38428]],[[12202,12202],"mapped",[38582]],[[12203,12203],"mapped",[38585]],[[12204,12204],"mapped",[38632]],[[12205,12205],"mapped",[38737]],[[12206,12206],"mapped",[38750]],[[12207,12207],"mapped",[38754]],[[12208,12208],"mapped",[38761]],[[12209,12209],"mapped",[38859]],[[12210,12210],"mapped",[38893]],[[12211,12211],"mapped",[38899]],[[12212,12212],"mapped",[38913]],[[12213,12213],"mapped",[39080]],[[12214,12214],"mapped",[39131]],[[12215,12215],"mapped",[39135]],[[12216,12216],"mapped",[39318]],[[12217,12217],"mapped",[39321]],[[12218,12218],"mapped",[39340]],[[12219,12219],"mapped",[39592]],[[12220,12220],"mapped",[39640]],[[12221,12221],"mapped",[39647]],[[12222,12222],"mapped",[39717]],[[12223,12223],"mapped",[39727]],[[12224,12224],"mapped",[39730]],[[12225,12225],"mapped",[39740]],[[12226,12226],"mapped",[39770]],[[12227,12227],"mapped",[40165]],[[12228,12228],"mapped",[40565]],[[12229,12229],"mapped",[40575]],[[12230,12230],"mapped",[40613]],[[12231,12231],"mapped",[40635]],[[12232,12232],"mapped",[40643]],[[12233,12233],"mapped",[40653]],[[12234,12234],"mapped",[40657]],[[12235,12235],"mapped",[40697]],[[12236,12236],"mapped",[40701]],[[12237,12237],"mapped",[40718]],[[12238,12238],"mapped",[40723]],[[12239,12239],"mapped",[40736]],[[12240,12240],"mapped",[40763]],[[12241,12241],"mapped",[40778]],[[12242,12242],"mapped",[40786]],[[12243,12243],"mapped",[40845]],[[12244,12244],"mapped",[40860]],[[12245,12245],"mapped",[40864]],[[12246,12271],"disallowed"],[[12272,12283],"disallowed"],[[12284,12287],"disallowed"],[[12288,12288],"disallowed_STD3_mapped",[32]],[[12289,12289],"valid",[],"NV8"],[[12290,12290],"mapped",[46]],[[12291,12292],"valid",[],"NV8"],[[12293,12295],"valid"],[[12296,12329],"valid",[],"NV8"],[[12330,12333],"valid"],[[12334,12341],"valid",[],"NV8"],[[12342,12342],"mapped",[12306]],[[12343,12343],"valid",[],"NV8"],[[12344,12344],"mapped",[21313]],[[12345,12345],"mapped",[21316]],[[12346,12346],"mapped",[21317]],[[12347,12347],"valid",[],"NV8"],[[12348,12348],"valid"],[[12349,12349],"valid",[],"NV8"],[[12350,12350],"valid",[],"NV8"],[[12351,12351],"valid",[],"NV8"],[[12352,12352],"disallowed"],[[12353,12436],"valid"],[[12437,12438],"valid"],[[12439,12440],"disallowed"],[[12441,12442],"valid"],[[12443,12443],"disallowed_STD3_mapped",[32,12441]],[[12444,12444],"disallowed_STD3_mapped",[32,12442]],[[12445,12446],"valid"],[[12447,12447],"mapped",[12424,12426]],[[12448,12448],"valid",[],"NV8"],[[12449,12542],"valid"],[[12543,12543],"mapped",[12467,12488]],[[12544,12548],"disallowed"],[[12549,12588],"valid"],[[12589,12589],"valid"],[[12590,12592],"disallowed"],[[12593,12593],"mapped",[4352]],[[12594,12594],"mapped",[4353]],[[12595,12595],"mapped",[4522]],[[12596,12596],"mapped",[4354]],[[12597,12597],"mapped",[4524]],[[12598,12598],"mapped",[4525]],[[12599,12599],"mapped",[4355]],[[12600,12600],"mapped",[4356]],[[12601,12601],"mapped",[4357]],[[12602,12602],"mapped",[4528]],[[12603,12603],"mapped",[4529]],[[12604,12604],"mapped",[4530]],[[12605,12605],"mapped",[4531]],[[12606,12606],"mapped",[4532]],[[12607,12607],"mapped",[4533]],[[12608,12608],"mapped",[4378]],[[12609,12609],"mapped",[4358]],[[12610,12610],"mapped",[4359]],[[12611,12611],"mapped",[4360]],[[12612,12612],"mapped",[4385]],[[12613,12613],"mapped",[4361]],[[12614,12614],"mapped",[4362]],[[12615,12615],"mapped",[4363]],[[12616,12616],"mapped",[4364]],[[12617,12617],"mapped",[4365]],[[12618,12618],"mapped",[4366]],[[12619,12619],"mapped",[4367]],[[12620,12620],"mapped",[4368]],[[12621,12621],"mapped",[4369]],[[12622,12622],"mapped",[4370]],[[12623,12623],"mapped",[4449]],[[12624,12624],"mapped",[4450]],[[12625,12625],"mapped",[4451]],[[12626,12626],"mapped",[4452]],[[12627,12627],"mapped",[4453]],[[12628,12628],"mapped",[4454]],[[12629,12629],"mapped",[4455]],[[12630,12630],"mapped",[4456]],[[12631,12631],"mapped",[4457]],[[12632,12632],"mapped",[4458]],[[12633,12633],"mapped",[4459]],[[12634,12634],"mapped",[4460]],[[12635,12635],"mapped",[4461]],[[12636,12636],"mapped",[4462]],[[12637,12637],"mapped",[4463]],[[12638,12638],"mapped",[4464]],[[12639,12639],"mapped",[4465]],[[12640,12640],"mapped",[4466]],[[12641,12641],"mapped",[4467]],[[12642,12642],"mapped",[4468]],[[12643,12643],"mapped",[4469]],[[12644,12644],"disallowed"],[[12645,12645],"mapped",[4372]],[[12646,12646],"mapped",[4373]],[[12647,12647],"mapped",[4551]],[[12648,12648],"mapped",[4552]],[[12649,12649],"mapped",[4556]],[[12650,12650],"mapped",[4558]],[[12651,12651],"mapped",[4563]],[[12652,12652],"mapped",[4567]],[[12653,12653],"mapped",[4569]],[[12654,12654],"mapped",[4380]],[[12655,12655],"mapped",[4573]],[[12656,12656],"mapped",[4575]],[[12657,12657],"mapped",[4381]],[[12658,12658],"mapped",[4382]],[[12659,12659],"mapped",[4384]],[[12660,12660],"mapped",[4386]],[[12661,12661],"mapped",[4387]],[[12662,12662],"mapped",[4391]],[[12663,12663],"mapped",[4393]],[[12664,12664],"mapped",[4395]],[[12665,12665],"mapped",[4396]],[[12666,12666],"mapped",[4397]],[[12667,12667],"mapped",[4398]],[[12668,12668],"mapped",[4399]],[[12669,12669],"mapped",[4402]],[[12670,12670],"mapped",[4406]],[[12671,12671],"mapped",[4416]],[[12672,12672],"mapped",[4423]],[[12673,12673],"mapped",[4428]],[[12674,12674],"mapped",[4593]],[[12675,12675],"mapped",[4594]],[[12676,12676],"mapped",[4439]],[[12677,12677],"mapped",[4440]],[[12678,12678],"mapped",[4441]],[[12679,12679],"mapped",[4484]],[[12680,12680],"mapped",[4485]],[[12681,12681],"mapped",[4488]],[[12682,12682],"mapped",[4497]],[[12683,12683],"mapped",[4498]],[[12684,12684],"mapped",[4500]],[[12685,12685],"mapped",[4510]],[[12686,12686],"mapped",[4513]],[[12687,12687],"disallowed"],[[12688,12689],"valid",[],"NV8"],[[12690,12690],"mapped",[19968]],[[12691,12691],"mapped",[20108]],[[12692,12692],"mapped",[19977]],[[12693,12693],"mapped",[22235]],[[12694,12694],"mapped",[19978]],[[12695,12695],"mapped",[20013]],[[12696,12696],"mapped",[19979]],[[12697,12697],"mapped",[30002]],[[12698,12698],"mapped",[20057]],[[12699,12699],"mapped",[19993]],[[12700,12700],"mapped",[19969]],[[12701,12701],"mapped",[22825]],[[12702,12702],"mapped",[22320]],[[12703,12703],"mapped",[20154]],[[12704,12727],"valid"],[[12728,12730],"valid"],[[12731,12735],"disallowed"],[[12736,12751],"valid",[],"NV8"],[[12752,12771],"valid",[],"NV8"],[[12772,12783],"disallowed"],[[12784,12799],"valid"],[[12800,12800],"disallowed_STD3_mapped",[40,4352,41]],[[12801,12801],"disallowed_STD3_mapped",[40,4354,41]],[[12802,12802],"disallowed_STD3_mapped",[40,4355,41]],[[12803,12803],"disallowed_STD3_mapped",[40,4357,41]],[[12804,12804],"disallowed_STD3_mapped",[40,4358,41]],[[12805,12805],"disallowed_STD3_mapped",[40,4359,41]],[[12806,12806],"disallowed_STD3_mapped",[40,4361,41]],[[12807,12807],"disallowed_STD3_mapped",[40,4363,41]],[[12808,12808],"disallowed_STD3_mapped",[40,4364,41]],[[12809,12809],"disallowed_STD3_mapped",[40,4366,41]],[[12810,12810],"disallowed_STD3_mapped",[40,4367,41]],[[12811,12811],"disallowed_STD3_mapped",[40,4368,41]],[[12812,12812],"disallowed_STD3_mapped",[40,4369,41]],[[12813,12813],"disallowed_STD3_mapped",[40,4370,41]],[[12814,12814],"disallowed_STD3_mapped",[40,44032,41]],[[12815,12815],"disallowed_STD3_mapped",[40,45208,41]],[[12816,12816],"disallowed_STD3_mapped",[40,45796,41]],[[12817,12817],"disallowed_STD3_mapped",[40,46972,41]],[[12818,12818],"disallowed_STD3_mapped",[40,47560,41]],[[12819,12819],"disallowed_STD3_mapped",[40,48148,41]],[[12820,12820],"disallowed_STD3_mapped",[40,49324,41]],[[12821,12821],"disallowed_STD3_mapped",[40,50500,41]],[[12822,12822],"disallowed_STD3_mapped",[40,51088,41]],[[12823,12823],"disallowed_STD3_mapped",[40,52264,41]],[[12824,12824],"disallowed_STD3_mapped",[40,52852,41]],[[12825,12825],"disallowed_STD3_mapped",[40,53440,41]],[[12826,12826],"disallowed_STD3_mapped",[40,54028,41]],[[12827,12827],"disallowed_STD3_mapped",[40,54616,41]],[[12828,12828],"disallowed_STD3_mapped",[40,51452,41]],[[12829,12829],"disallowed_STD3_mapped",[40,50724,51204,41]],[[12830,12830],"disallowed_STD3_mapped",[40,50724,54980,41]],[[12831,12831],"disallowed"],[[12832,12832],"disallowed_STD3_mapped",[40,19968,41]],[[12833,12833],"disallowed_STD3_mapped",[40,20108,41]],[[12834,12834],"disallowed_STD3_mapped",[40,19977,41]],[[12835,12835],"disallowed_STD3_mapped",[40,22235,41]],[[12836,12836],"disallowed_STD3_mapped",[40,20116,41]],[[12837,12837],"disallowed_STD3_mapped",[40,20845,41]],[[12838,12838],"disallowed_STD3_mapped",[40,19971,41]],[[12839,12839],"disallowed_STD3_mapped",[40,20843,41]],[[12840,12840],"disallowed_STD3_mapped",[40,20061,41]],[[12841,12841],"disallowed_STD3_mapped",[40,21313,41]],[[12842,12842],"disallowed_STD3_mapped",[40,26376,41]],[[12843,12843],"disallowed_STD3_mapped",[40,28779,41]],[[12844,12844],"disallowed_STD3_mapped",[40,27700,41]],[[12845,12845],"disallowed_STD3_mapped",[40,26408,41]],[[12846,12846],"disallowed_STD3_mapped",[40,37329,41]],[[12847,12847],"disallowed_STD3_mapped",[40,22303,41]],[[12848,12848],"disallowed_STD3_mapped",[40,26085,41]],[[12849,12849],"disallowed_STD3_mapped",[40,26666,41]],[[12850,12850],"disallowed_STD3_mapped",[40,26377,41]],[[12851,12851],"disallowed_STD3_mapped",[40,31038,41]],[[12852,12852],"disallowed_STD3_mapped",[40,21517,41]],[[12853,12853],"disallowed_STD3_mapped",[40,29305,41]],[[12854,12854],"disallowed_STD3_mapped",[40,36001,41]],[[12855,12855],"disallowed_STD3_mapped",[40,31069,41]],[[12856,12856],"disallowed_STD3_mapped",[40,21172,41]],[[12857,12857],"disallowed_STD3_mapped",[40,20195,41]],[[12858,12858],"disallowed_STD3_mapped",[40,21628,41]],[[12859,12859],"disallowed_STD3_mapped",[40,23398,41]],[[12860,12860],"disallowed_STD3_mapped",[40,30435,41]],[[12861,12861],"disallowed_STD3_mapped",[40,20225,41]],[[12862,12862],"disallowed_STD3_mapped",[40,36039,41]],[[12863,12863],"disallowed_STD3_mapped",[40,21332,41]],[[12864,12864],"disallowed_STD3_mapped",[40,31085,41]],[[12865,12865],"disallowed_STD3_mapped",[40,20241,41]],[[12866,12866],"disallowed_STD3_mapped",[40,33258,41]],[[12867,12867],"disallowed_STD3_mapped",[40,33267,41]],[[12868,12868],"mapped",[21839]],[[12869,12869],"mapped",[24188]],[[12870,12870],"mapped",[25991]],[[12871,12871],"mapped",[31631]],[[12872,12879],"valid",[],"NV8"],[[12880,12880],"mapped",[112,116,101]],[[12881,12881],"mapped",[50,49]],[[12882,12882],"mapped",[50,50]],[[12883,12883],"mapped",[50,51]],[[12884,12884],"mapped",[50,52]],[[12885,12885],"mapped",[50,53]],[[12886,12886],"mapped",[50,54]],[[12887,12887],"mapped",[50,55]],[[12888,12888],"mapped",[50,56]],[[12889,12889],"mapped",[50,57]],[[12890,12890],"mapped",[51,48]],[[12891,12891],"mapped",[51,49]],[[12892,12892],"mapped",[51,50]],[[12893,12893],"mapped",[51,51]],[[12894,12894],"mapped",[51,52]],[[12895,12895],"mapped",[51,53]],[[12896,12896],"mapped",[4352]],[[12897,12897],"mapped",[4354]],[[12898,12898],"mapped",[4355]],[[12899,12899],"mapped",[4357]],[[12900,12900],"mapped",[4358]],[[12901,12901],"mapped",[4359]],[[12902,12902],"mapped",[4361]],[[12903,12903],"mapped",[4363]],[[12904,12904],"mapped",[4364]],[[12905,12905],"mapped",[4366]],[[12906,12906],"mapped",[4367]],[[12907,12907],"mapped",[4368]],[[12908,12908],"mapped",[4369]],[[12909,12909],"mapped",[4370]],[[12910,12910],"mapped",[44032]],[[12911,12911],"mapped",[45208]],[[12912,12912],"mapped",[45796]],[[12913,12913],"mapped",[46972]],[[12914,12914],"mapped",[47560]],[[12915,12915],"mapped",[48148]],[[12916,12916],"mapped",[49324]],[[12917,12917],"mapped",[50500]],[[12918,12918],"mapped",[51088]],[[12919,12919],"mapped",[52264]],[[12920,12920],"mapped",[52852]],[[12921,12921],"mapped",[53440]],[[12922,12922],"mapped",[54028]],[[12923,12923],"mapped",[54616]],[[12924,12924],"mapped",[52280,44256]],[[12925,12925],"mapped",[51452,51032]],[[12926,12926],"mapped",[50864]],[[12927,12927],"valid",[],"NV8"],[[12928,12928],"mapped",[19968]],[[12929,12929],"mapped",[20108]],[[12930,12930],"mapped",[19977]],[[12931,12931],"mapped",[22235]],[[12932,12932],"mapped",[20116]],[[12933,12933],"mapped",[20845]],[[12934,12934],"mapped",[19971]],[[12935,12935],"mapped",[20843]],[[12936,12936],"mapped",[20061]],[[12937,12937],"mapped",[21313]],[[12938,12938],"mapped",[26376]],[[12939,12939],"mapped",[28779]],[[12940,12940],"mapped",[27700]],[[12941,12941],"mapped",[26408]],[[12942,12942],"mapped",[37329]],[[12943,12943],"mapped",[22303]],[[12944,12944],"mapped",[26085]],[[12945,12945],"mapped",[26666]],[[12946,12946],"mapped",[26377]],[[12947,12947],"mapped",[31038]],[[12948,12948],"mapped",[21517]],[[12949,12949],"mapped",[29305]],[[12950,12950],"mapped",[36001]],[[12951,12951],"mapped",[31069]],[[12952,12952],"mapped",[21172]],[[12953,12953],"mapped",[31192]],[[12954,12954],"mapped",[30007]],[[12955,12955],"mapped",[22899]],[[12956,12956],"mapped",[36969]],[[12957,12957],"mapped",[20778]],[[12958,12958],"mapped",[21360]],[[12959,12959],"mapped",[27880]],[[12960,12960],"mapped",[38917]],[[12961,12961],"mapped",[20241]],[[12962,12962],"mapped",[20889]],[[12963,12963],"mapped",[27491]],[[12964,12964],"mapped",[19978]],[[12965,12965],"mapped",[20013]],[[12966,12966],"mapped",[19979]],[[12967,12967],"mapped",[24038]],[[12968,12968],"mapped",[21491]],[[12969,12969],"mapped",[21307]],[[12970,12970],"mapped",[23447]],[[12971,12971],"mapped",[23398]],[[12972,12972],"mapped",[30435]],[[12973,12973],"mapped",[20225]],[[12974,12974],"mapped",[36039]],[[12975,12975],"mapped",[21332]],[[12976,12976],"mapped",[22812]],[[12977,12977],"mapped",[51,54]],[[12978,12978],"mapped",[51,55]],[[12979,12979],"mapped",[51,56]],[[12980,12980],"mapped",[51,57]],[[12981,12981],"mapped",[52,48]],[[12982,12982],"mapped",[52,49]],[[12983,12983],"mapped",[52,50]],[[12984,12984],"mapped",[52,51]],[[12985,12985],"mapped",[52,52]],[[12986,12986],"mapped",[52,53]],[[12987,12987],"mapped",[52,54]],[[12988,12988],"mapped",[52,55]],[[12989,12989],"mapped",[52,56]],[[12990,12990],"mapped",[52,57]],[[12991,12991],"mapped",[53,48]],[[12992,12992],"mapped",[49,26376]],[[12993,12993],"mapped",[50,26376]],[[12994,12994],"mapped",[51,26376]],[[12995,12995],"mapped",[52,26376]],[[12996,12996],"mapped",[53,26376]],[[12997,12997],"mapped",[54,26376]],[[12998,12998],"mapped",[55,26376]],[[12999,12999],"mapped",[56,26376]],[[13e3,13e3],"mapped",[57,26376]],[[13001,13001],"mapped",[49,48,26376]],[[13002,13002],"mapped",[49,49,26376]],[[13003,13003],"mapped",[49,50,26376]],[[13004,13004],"mapped",[104,103]],[[13005,13005],"mapped",[101,114,103]],[[13006,13006],"mapped",[101,118]],[[13007,13007],"mapped",[108,116,100]],[[13008,13008],"mapped",[12450]],[[13009,13009],"mapped",[12452]],[[13010,13010],"mapped",[12454]],[[13011,13011],"mapped",[12456]],[[13012,13012],"mapped",[12458]],[[13013,13013],"mapped",[12459]],[[13014,13014],"mapped",[12461]],[[13015,13015],"mapped",[12463]],[[13016,13016],"mapped",[12465]],[[13017,13017],"mapped",[12467]],[[13018,13018],"mapped",[12469]],[[13019,13019],"mapped",[12471]],[[13020,13020],"mapped",[12473]],[[13021,13021],"mapped",[12475]],[[13022,13022],"mapped",[12477]],[[13023,13023],"mapped",[12479]],[[13024,13024],"mapped",[12481]],[[13025,13025],"mapped",[12484]],[[13026,13026],"mapped",[12486]],[[13027,13027],"mapped",[12488]],[[13028,13028],"mapped",[12490]],[[13029,13029],"mapped",[12491]],[[13030,13030],"mapped",[12492]],[[13031,13031],"mapped",[12493]],[[13032,13032],"mapped",[12494]],[[13033,13033],"mapped",[12495]],[[13034,13034],"mapped",[12498]],[[13035,13035],"mapped",[12501]],[[13036,13036],"mapped",[12504]],[[13037,13037],"mapped",[12507]],[[13038,13038],"mapped",[12510]],[[13039,13039],"mapped",[12511]],[[13040,13040],"mapped",[12512]],[[13041,13041],"mapped",[12513]],[[13042,13042],"mapped",[12514]],[[13043,13043],"mapped",[12516]],[[13044,13044],"mapped",[12518]],[[13045,13045],"mapped",[12520]],[[13046,13046],"mapped",[12521]],[[13047,13047],"mapped",[12522]],[[13048,13048],"mapped",[12523]],[[13049,13049],"mapped",[12524]],[[13050,13050],"mapped",[12525]],[[13051,13051],"mapped",[12527]],[[13052,13052],"mapped",[12528]],[[13053,13053],"mapped",[12529]],[[13054,13054],"mapped",[12530]],[[13055,13055],"disallowed"],[[13056,13056],"mapped",[12450,12497,12540,12488]],[[13057,13057],"mapped",[12450,12523,12501,12449]],[[13058,13058],"mapped",[12450,12531,12506,12450]],[[13059,13059],"mapped",[12450,12540,12523]],[[13060,13060],"mapped",[12452,12491,12531,12464]],[[13061,13061],"mapped",[12452,12531,12481]],[[13062,13062],"mapped",[12454,12457,12531]],[[13063,13063],"mapped",[12456,12473,12463,12540,12489]],[[13064,13064],"mapped",[12456,12540,12459,12540]],[[13065,13065],"mapped",[12458,12531,12473]],[[13066,13066],"mapped",[12458,12540,12512]],[[13067,13067],"mapped",[12459,12452,12522]],[[13068,13068],"mapped",[12459,12521,12483,12488]],[[13069,13069],"mapped",[12459,12525,12522,12540]],[[13070,13070],"mapped",[12460,12525,12531]],[[13071,13071],"mapped",[12460,12531,12510]],[[13072,13072],"mapped",[12462,12460]],[[13073,13073],"mapped",[12462,12491,12540]],[[13074,13074],"mapped",[12461,12517,12522,12540]],[[13075,13075],"mapped",[12462,12523,12480,12540]],[[13076,13076],"mapped",[12461,12525]],[[13077,13077],"mapped",[12461,12525,12464,12521,12512]],[[13078,13078],"mapped",[12461,12525,12513,12540,12488,12523]],[[13079,13079],"mapped",[12461,12525,12527,12483,12488]],[[13080,13080],"mapped",[12464,12521,12512]],[[13081,13081],"mapped",[12464,12521,12512,12488,12531]],[[13082,13082],"mapped",[12463,12523,12476,12452,12525]],[[13083,13083],"mapped",[12463,12525,12540,12493]],[[13084,13084],"mapped",[12465,12540,12473]],[[13085,13085],"mapped",[12467,12523,12490]],[[13086,13086],"mapped",[12467,12540,12509]],[[13087,13087],"mapped",[12469,12452,12463,12523]],[[13088,13088],"mapped",[12469,12531,12481,12540,12512]],[[13089,13089],"mapped",[12471,12522,12531,12464]],[[13090,13090],"mapped",[12475,12531,12481]],[[13091,13091],"mapped",[12475,12531,12488]],[[13092,13092],"mapped",[12480,12540,12473]],[[13093,13093],"mapped",[12487,12471]],[[13094,13094],"mapped",[12489,12523]],[[13095,13095],"mapped",[12488,12531]],[[13096,13096],"mapped",[12490,12494]],[[13097,13097],"mapped",[12494,12483,12488]],[[13098,13098],"mapped",[12495,12452,12484]],[[13099,13099],"mapped",[12497,12540,12475,12531,12488]],[[13100,13100],"mapped",[12497,12540,12484]],[[13101,13101],"mapped",[12496,12540,12524,12523]],[[13102,13102],"mapped",[12500,12450,12473,12488,12523]],[[13103,13103],"mapped",[12500,12463,12523]],[[13104,13104],"mapped",[12500,12467]],[[13105,13105],"mapped",[12499,12523]],[[13106,13106],"mapped",[12501,12449,12521,12483,12489]],[[13107,13107],"mapped",[12501,12451,12540,12488]],[[13108,13108],"mapped",[12502,12483,12471,12455,12523]],[[13109,13109],"mapped",[12501,12521,12531]],[[13110,13110],"mapped",[12504,12463,12479,12540,12523]],[[13111,13111],"mapped",[12506,12477]],[[13112,13112],"mapped",[12506,12491,12498]],[[13113,13113],"mapped",[12504,12523,12484]],[[13114,13114],"mapped",[12506,12531,12473]],[[13115,13115],"mapped",[12506,12540,12472]],[[13116,13116],"mapped",[12505,12540,12479]],[[13117,13117],"mapped",[12509,12452,12531,12488]],[[13118,13118],"mapped",[12508,12523,12488]],[[13119,13119],"mapped",[12507,12531]],[[13120,13120],"mapped",[12509,12531,12489]],[[13121,13121],"mapped",[12507,12540,12523]],[[13122,13122],"mapped",[12507,12540,12531]],[[13123,13123],"mapped",[12510,12452,12463,12525]],[[13124,13124],"mapped",[12510,12452,12523]],[[13125,13125],"mapped",[12510,12483,12495]],[[13126,13126],"mapped",[12510,12523,12463]],[[13127,13127],"mapped",[12510,12531,12471,12519,12531]],[[13128,13128],"mapped",[12511,12463,12525,12531]],[[13129,13129],"mapped",[12511,12522]],[[13130,13130],"mapped",[12511,12522,12496,12540,12523]],[[13131,13131],"mapped",[12513,12460]],[[13132,13132],"mapped",[12513,12460,12488,12531]],[[13133,13133],"mapped",[12513,12540,12488,12523]],[[13134,13134],"mapped",[12516,12540,12489]],[[13135,13135],"mapped",[12516,12540,12523]],[[13136,13136],"mapped",[12518,12450,12531]],[[13137,13137],"mapped",[12522,12483,12488,12523]],[[13138,13138],"mapped",[12522,12521]],[[13139,13139],"mapped",[12523,12500,12540]],[[13140,13140],"mapped",[12523,12540,12502,12523]],[[13141,13141],"mapped",[12524,12512]],[[13142,13142],"mapped",[12524,12531,12488,12466,12531]],[[13143,13143],"mapped",[12527,12483,12488]],[[13144,13144],"mapped",[48,28857]],[[13145,13145],"mapped",[49,28857]],[[13146,13146],"mapped",[50,28857]],[[13147,13147],"mapped",[51,28857]],[[13148,13148],"mapped",[52,28857]],[[13149,13149],"mapped",[53,28857]],[[13150,13150],"mapped",[54,28857]],[[13151,13151],"mapped",[55,28857]],[[13152,13152],"mapped",[56,28857]],[[13153,13153],"mapped",[57,28857]],[[13154,13154],"mapped",[49,48,28857]],[[13155,13155],"mapped",[49,49,28857]],[[13156,13156],"mapped",[49,50,28857]],[[13157,13157],"mapped",[49,51,28857]],[[13158,13158],"mapped",[49,52,28857]],[[13159,13159],"mapped",[49,53,28857]],[[13160,13160],"mapped",[49,54,28857]],[[13161,13161],"mapped",[49,55,28857]],[[13162,13162],"mapped",[49,56,28857]],[[13163,13163],"mapped",[49,57,28857]],[[13164,13164],"mapped",[50,48,28857]],[[13165,13165],"mapped",[50,49,28857]],[[13166,13166],"mapped",[50,50,28857]],[[13167,13167],"mapped",[50,51,28857]],[[13168,13168],"mapped",[50,52,28857]],[[13169,13169],"mapped",[104,112,97]],[[13170,13170],"mapped",[100,97]],[[13171,13171],"mapped",[97,117]],[[13172,13172],"mapped",[98,97,114]],[[13173,13173],"mapped",[111,118]],[[13174,13174],"mapped",[112,99]],[[13175,13175],"mapped",[100,109]],[[13176,13176],"mapped",[100,109,50]],[[13177,13177],"mapped",[100,109,51]],[[13178,13178],"mapped",[105,117]],[[13179,13179],"mapped",[24179,25104]],[[13180,13180],"mapped",[26157,21644]],[[13181,13181],"mapped",[22823,27491]],[[13182,13182],"mapped",[26126,27835]],[[13183,13183],"mapped",[26666,24335,20250,31038]],[[13184,13184],"mapped",[112,97]],[[13185,13185],"mapped",[110,97]],[[13186,13186],"mapped",[956,97]],[[13187,13187],"mapped",[109,97]],[[13188,13188],"mapped",[107,97]],[[13189,13189],"mapped",[107,98]],[[13190,13190],"mapped",[109,98]],[[13191,13191],"mapped",[103,98]],[[13192,13192],"mapped",[99,97,108]],[[13193,13193],"mapped",[107,99,97,108]],[[13194,13194],"mapped",[112,102]],[[13195,13195],"mapped",[110,102]],[[13196,13196],"mapped",[956,102]],[[13197,13197],"mapped",[956,103]],[[13198,13198],"mapped",[109,103]],[[13199,13199],"mapped",[107,103]],[[13200,13200],"mapped",[104,122]],[[13201,13201],"mapped",[107,104,122]],[[13202,13202],"mapped",[109,104,122]],[[13203,13203],"mapped",[103,104,122]],[[13204,13204],"mapped",[116,104,122]],[[13205,13205],"mapped",[956,108]],[[13206,13206],"mapped",[109,108]],[[13207,13207],"mapped",[100,108]],[[13208,13208],"mapped",[107,108]],[[13209,13209],"mapped",[102,109]],[[13210,13210],"mapped",[110,109]],[[13211,13211],"mapped",[956,109]],[[13212,13212],"mapped",[109,109]],[[13213,13213],"mapped",[99,109]],[[13214,13214],"mapped",[107,109]],[[13215,13215],"mapped",[109,109,50]],[[13216,13216],"mapped",[99,109,50]],[[13217,13217],"mapped",[109,50]],[[13218,13218],"mapped",[107,109,50]],[[13219,13219],"mapped",[109,109,51]],[[13220,13220],"mapped",[99,109,51]],[[13221,13221],"mapped",[109,51]],[[13222,13222],"mapped",[107,109,51]],[[13223,13223],"mapped",[109,8725,115]],[[13224,13224],"mapped",[109,8725,115,50]],[[13225,13225],"mapped",[112,97]],[[13226,13226],"mapped",[107,112,97]],[[13227,13227],"mapped",[109,112,97]],[[13228,13228],"mapped",[103,112,97]],[[13229,13229],"mapped",[114,97,100]],[[13230,13230],"mapped",[114,97,100,8725,115]],[[13231,13231],"mapped",[114,97,100,8725,115,50]],[[13232,13232],"mapped",[112,115]],[[13233,13233],"mapped",[110,115]],[[13234,13234],"mapped",[956,115]],[[13235,13235],"mapped",[109,115]],[[13236,13236],"mapped",[112,118]],[[13237,13237],"mapped",[110,118]],[[13238,13238],"mapped",[956,118]],[[13239,13239],"mapped",[109,118]],[[13240,13240],"mapped",[107,118]],[[13241,13241],"mapped",[109,118]],[[13242,13242],"mapped",[112,119]],[[13243,13243],"mapped",[110,119]],[[13244,13244],"mapped",[956,119]],[[13245,13245],"mapped",[109,119]],[[13246,13246],"mapped",[107,119]],[[13247,13247],"mapped",[109,119]],[[13248,13248],"mapped",[107,969]],[[13249,13249],"mapped",[109,969]],[[13250,13250],"disallowed"],[[13251,13251],"mapped",[98,113]],[[13252,13252],"mapped",[99,99]],[[13253,13253],"mapped",[99,100]],[[13254,13254],"mapped",[99,8725,107,103]],[[13255,13255],"disallowed"],[[13256,13256],"mapped",[100,98]],[[13257,13257],"mapped",[103,121]],[[13258,13258],"mapped",[104,97]],[[13259,13259],"mapped",[104,112]],[[13260,13260],"mapped",[105,110]],[[13261,13261],"mapped",[107,107]],[[13262,13262],"mapped",[107,109]],[[13263,13263],"mapped",[107,116]],[[13264,13264],"mapped",[108,109]],[[13265,13265],"mapped",[108,110]],[[13266,13266],"mapped",[108,111,103]],[[13267,13267],"mapped",[108,120]],[[13268,13268],"mapped",[109,98]],[[13269,13269],"mapped",[109,105,108]],[[13270,13270],"mapped",[109,111,108]],[[13271,13271],"mapped",[112,104]],[[13272,13272],"disallowed"],[[13273,13273],"mapped",[112,112,109]],[[13274,13274],"mapped",[112,114]],[[13275,13275],"mapped",[115,114]],[[13276,13276],"mapped",[115,118]],[[13277,13277],"mapped",[119,98]],[[13278,13278],"mapped",[118,8725,109]],[[13279,13279],"mapped",[97,8725,109]],[[13280,13280],"mapped",[49,26085]],[[13281,13281],"mapped",[50,26085]],[[13282,13282],"mapped",[51,26085]],[[13283,13283],"mapped",[52,26085]],[[13284,13284],"mapped",[53,26085]],[[13285,13285],"mapped",[54,26085]],[[13286,13286],"mapped",[55,26085]],[[13287,13287],"mapped",[56,26085]],[[13288,13288],"mapped",[57,26085]],[[13289,13289],"mapped",[49,48,26085]],[[13290,13290],"mapped",[49,49,26085]],[[13291,13291],"mapped",[49,50,26085]],[[13292,13292],"mapped",[49,51,26085]],[[13293,13293],"mapped",[49,52,26085]],[[13294,13294],"mapped",[49,53,26085]],[[13295,13295],"mapped",[49,54,26085]],[[13296,13296],"mapped",[49,55,26085]],[[13297,13297],"mapped",[49,56,26085]],[[13298,13298],"mapped",[49,57,26085]],[[13299,13299],"mapped",[50,48,26085]],[[13300,13300],"mapped",[50,49,26085]],[[13301,13301],"mapped",[50,50,26085]],[[13302,13302],"mapped",[50,51,26085]],[[13303,13303],"mapped",[50,52,26085]],[[13304,13304],"mapped",[50,53,26085]],[[13305,13305],"mapped",[50,54,26085]],[[13306,13306],"mapped",[50,55,26085]],[[13307,13307],"mapped",[50,56,26085]],[[13308,13308],"mapped",[50,57,26085]],[[13309,13309],"mapped",[51,48,26085]],[[13310,13310],"mapped",[51,49,26085]],[[13311,13311],"mapped",[103,97,108]],[[13312,19893],"valid"],[[19894,19903],"disallowed"],[[19904,19967],"valid",[],"NV8"],[[19968,40869],"valid"],[[40870,40891],"valid"],[[40892,40899],"valid"],[[40900,40907],"valid"],[[40908,40908],"valid"],[[40909,40917],"valid"],[[40918,40959],"disallowed"],[[40960,42124],"valid"],[[42125,42127],"disallowed"],[[42128,42145],"valid",[],"NV8"],[[42146,42147],"valid",[],"NV8"],[[42148,42163],"valid",[],"NV8"],[[42164,42164],"valid",[],"NV8"],[[42165,42176],"valid",[],"NV8"],[[42177,42177],"valid",[],"NV8"],[[42178,42180],"valid",[],"NV8"],[[42181,42181],"valid",[],"NV8"],[[42182,42182],"valid",[],"NV8"],[[42183,42191],"disallowed"],[[42192,42237],"valid"],[[42238,42239],"valid",[],"NV8"],[[42240,42508],"valid"],[[42509,42511],"valid",[],"NV8"],[[42512,42539],"valid"],[[42540,42559],"disallowed"],[[42560,42560],"mapped",[42561]],[[42561,42561],"valid"],[[42562,42562],"mapped",[42563]],[[42563,42563],"valid"],[[42564,42564],"mapped",[42565]],[[42565,42565],"valid"],[[42566,42566],"mapped",[42567]],[[42567,42567],"valid"],[[42568,42568],"mapped",[42569]],[[42569,42569],"valid"],[[42570,42570],"mapped",[42571]],[[42571,42571],"valid"],[[42572,42572],"mapped",[42573]],[[42573,42573],"valid"],[[42574,42574],"mapped",[42575]],[[42575,42575],"valid"],[[42576,42576],"mapped",[42577]],[[42577,42577],"valid"],[[42578,42578],"mapped",[42579]],[[42579,42579],"valid"],[[42580,42580],"mapped",[42581]],[[42581,42581],"valid"],[[42582,42582],"mapped",[42583]],[[42583,42583],"valid"],[[42584,42584],"mapped",[42585]],[[42585,42585],"valid"],[[42586,42586],"mapped",[42587]],[[42587,42587],"valid"],[[42588,42588],"mapped",[42589]],[[42589,42589],"valid"],[[42590,42590],"mapped",[42591]],[[42591,42591],"valid"],[[42592,42592],"mapped",[42593]],[[42593,42593],"valid"],[[42594,42594],"mapped",[42595]],[[42595,42595],"valid"],[[42596,42596],"mapped",[42597]],[[42597,42597],"valid"],[[42598,42598],"mapped",[42599]],[[42599,42599],"valid"],[[42600,42600],"mapped",[42601]],[[42601,42601],"valid"],[[42602,42602],"mapped",[42603]],[[42603,42603],"valid"],[[42604,42604],"mapped",[42605]],[[42605,42607],"valid"],[[42608,42611],"valid",[],"NV8"],[[42612,42619],"valid"],[[42620,42621],"valid"],[[42622,42622],"valid",[],"NV8"],[[42623,42623],"valid"],[[42624,42624],"mapped",[42625]],[[42625,42625],"valid"],[[42626,42626],"mapped",[42627]],[[42627,42627],"valid"],[[42628,42628],"mapped",[42629]],[[42629,42629],"valid"],[[42630,42630],"mapped",[42631]],[[42631,42631],"valid"],[[42632,42632],"mapped",[42633]],[[42633,42633],"valid"],[[42634,42634],"mapped",[42635]],[[42635,42635],"valid"],[[42636,42636],"mapped",[42637]],[[42637,42637],"valid"],[[42638,42638],"mapped",[42639]],[[42639,42639],"valid"],[[42640,42640],"mapped",[42641]],[[42641,42641],"valid"],[[42642,42642],"mapped",[42643]],[[42643,42643],"valid"],[[42644,42644],"mapped",[42645]],[[42645,42645],"valid"],[[42646,42646],"mapped",[42647]],[[42647,42647],"valid"],[[42648,42648],"mapped",[42649]],[[42649,42649],"valid"],[[42650,42650],"mapped",[42651]],[[42651,42651],"valid"],[[42652,42652],"mapped",[1098]],[[42653,42653],"mapped",[1100]],[[42654,42654],"valid"],[[42655,42655],"valid"],[[42656,42725],"valid"],[[42726,42735],"valid",[],"NV8"],[[42736,42737],"valid"],[[42738,42743],"valid",[],"NV8"],[[42744,42751],"disallowed"],[[42752,42774],"valid",[],"NV8"],[[42775,42778],"valid"],[[42779,42783],"valid"],[[42784,42785],"valid",[],"NV8"],[[42786,42786],"mapped",[42787]],[[42787,42787],"valid"],[[42788,42788],"mapped",[42789]],[[42789,42789],"valid"],[[42790,42790],"mapped",[42791]],[[42791,42791],"valid"],[[42792,42792],"mapped",[42793]],[[42793,42793],"valid"],[[42794,42794],"mapped",[42795]],[[42795,42795],"valid"],[[42796,42796],"mapped",[42797]],[[42797,42797],"valid"],[[42798,42798],"mapped",[42799]],[[42799,42801],"valid"],[[42802,42802],"mapped",[42803]],[[42803,42803],"valid"],[[42804,42804],"mapped",[42805]],[[42805,42805],"valid"],[[42806,42806],"mapped",[42807]],[[42807,42807],"valid"],[[42808,42808],"mapped",[42809]],[[42809,42809],"valid"],[[42810,42810],"mapped",[42811]],[[42811,42811],"valid"],[[42812,42812],"mapped",[42813]],[[42813,42813],"valid"],[[42814,42814],"mapped",[42815]],[[42815,42815],"valid"],[[42816,42816],"mapped",[42817]],[[42817,42817],"valid"],[[42818,42818],"mapped",[42819]],[[42819,42819],"valid"],[[42820,42820],"mapped",[42821]],[[42821,42821],"valid"],[[42822,42822],"mapped",[42823]],[[42823,42823],"valid"],[[42824,42824],"mapped",[42825]],[[42825,42825],"valid"],[[42826,42826],"mapped",[42827]],[[42827,42827],"valid"],[[42828,42828],"mapped",[42829]],[[42829,42829],"valid"],[[42830,42830],"mapped",[42831]],[[42831,42831],"valid"],[[42832,42832],"mapped",[42833]],[[42833,42833],"valid"],[[42834,42834],"mapped",[42835]],[[42835,42835],"valid"],[[42836,42836],"mapped",[42837]],[[42837,42837],"valid"],[[42838,42838],"mapped",[42839]],[[42839,42839],"valid"],[[42840,42840],"mapped",[42841]],[[42841,42841],"valid"],[[42842,42842],"mapped",[42843]],[[42843,42843],"valid"],[[42844,42844],"mapped",[42845]],[[42845,42845],"valid"],[[42846,42846],"mapped",[42847]],[[42847,42847],"valid"],[[42848,42848],"mapped",[42849]],[[42849,42849],"valid"],[[42850,42850],"mapped",[42851]],[[42851,42851],"valid"],[[42852,42852],"mapped",[42853]],[[42853,42853],"valid"],[[42854,42854],"mapped",[42855]],[[42855,42855],"valid"],[[42856,42856],"mapped",[42857]],[[42857,42857],"valid"],[[42858,42858],"mapped",[42859]],[[42859,42859],"valid"],[[42860,42860],"mapped",[42861]],[[42861,42861],"valid"],[[42862,42862],"mapped",[42863]],[[42863,42863],"valid"],[[42864,42864],"mapped",[42863]],[[42865,42872],"valid"],[[42873,42873],"mapped",[42874]],[[42874,42874],"valid"],[[42875,42875],"mapped",[42876]],[[42876,42876],"valid"],[[42877,42877],"mapped",[7545]],[[42878,42878],"mapped",[42879]],[[42879,42879],"valid"],[[42880,42880],"mapped",[42881]],[[42881,42881],"valid"],[[42882,42882],"mapped",[42883]],[[42883,42883],"valid"],[[42884,42884],"mapped",[42885]],[[42885,42885],"valid"],[[42886,42886],"mapped",[42887]],[[42887,42888],"valid"],[[42889,42890],"valid",[],"NV8"],[[42891,42891],"mapped",[42892]],[[42892,42892],"valid"],[[42893,42893],"mapped",[613]],[[42894,42894],"valid"],[[42895,42895],"valid"],[[42896,42896],"mapped",[42897]],[[42897,42897],"valid"],[[42898,42898],"mapped",[42899]],[[42899,42899],"valid"],[[42900,42901],"valid"],[[42902,42902],"mapped",[42903]],[[42903,42903],"valid"],[[42904,42904],"mapped",[42905]],[[42905,42905],"valid"],[[42906,42906],"mapped",[42907]],[[42907,42907],"valid"],[[42908,42908],"mapped",[42909]],[[42909,42909],"valid"],[[42910,42910],"mapped",[42911]],[[42911,42911],"valid"],[[42912,42912],"mapped",[42913]],[[42913,42913],"valid"],[[42914,42914],"mapped",[42915]],[[42915,42915],"valid"],[[42916,42916],"mapped",[42917]],[[42917,42917],"valid"],[[42918,42918],"mapped",[42919]],[[42919,42919],"valid"],[[42920,42920],"mapped",[42921]],[[42921,42921],"valid"],[[42922,42922],"mapped",[614]],[[42923,42923],"mapped",[604]],[[42924,42924],"mapped",[609]],[[42925,42925],"mapped",[620]],[[42926,42927],"disallowed"],[[42928,42928],"mapped",[670]],[[42929,42929],"mapped",[647]],[[42930,42930],"mapped",[669]],[[42931,42931],"mapped",[43859]],[[42932,42932],"mapped",[42933]],[[42933,42933],"valid"],[[42934,42934],"mapped",[42935]],[[42935,42935],"valid"],[[42936,42998],"disallowed"],[[42999,42999],"valid"],[[43e3,43e3],"mapped",[295]],[[43001,43001],"mapped",[339]],[[43002,43002],"valid"],[[43003,43007],"valid"],[[43008,43047],"valid"],[[43048,43051],"valid",[],"NV8"],[[43052,43055],"disallowed"],[[43056,43065],"valid",[],"NV8"],[[43066,43071],"disallowed"],[[43072,43123],"valid"],[[43124,43127],"valid",[],"NV8"],[[43128,43135],"disallowed"],[[43136,43204],"valid"],[[43205,43213],"disallowed"],[[43214,43215],"valid",[],"NV8"],[[43216,43225],"valid"],[[43226,43231],"disallowed"],[[43232,43255],"valid"],[[43256,43258],"valid",[],"NV8"],[[43259,43259],"valid"],[[43260,43260],"valid",[],"NV8"],[[43261,43261],"valid"],[[43262,43263],"disallowed"],[[43264,43309],"valid"],[[43310,43311],"valid",[],"NV8"],[[43312,43347],"valid"],[[43348,43358],"disallowed"],[[43359,43359],"valid",[],"NV8"],[[43360,43388],"valid",[],"NV8"],[[43389,43391],"disallowed"],[[43392,43456],"valid"],[[43457,43469],"valid",[],"NV8"],[[43470,43470],"disallowed"],[[43471,43481],"valid"],[[43482,43485],"disallowed"],[[43486,43487],"valid",[],"NV8"],[[43488,43518],"valid"],[[43519,43519],"disallowed"],[[43520,43574],"valid"],[[43575,43583],"disallowed"],[[43584,43597],"valid"],[[43598,43599],"disallowed"],[[43600,43609],"valid"],[[43610,43611],"disallowed"],[[43612,43615],"valid",[],"NV8"],[[43616,43638],"valid"],[[43639,43641],"valid",[],"NV8"],[[43642,43643],"valid"],[[43644,43647],"valid"],[[43648,43714],"valid"],[[43715,43738],"disallowed"],[[43739,43741],"valid"],[[43742,43743],"valid",[],"NV8"],[[43744,43759],"valid"],[[43760,43761],"valid",[],"NV8"],[[43762,43766],"valid"],[[43767,43776],"disallowed"],[[43777,43782],"valid"],[[43783,43784],"disallowed"],[[43785,43790],"valid"],[[43791,43792],"disallowed"],[[43793,43798],"valid"],[[43799,43807],"disallowed"],[[43808,43814],"valid"],[[43815,43815],"disallowed"],[[43816,43822],"valid"],[[43823,43823],"disallowed"],[[43824,43866],"valid"],[[43867,43867],"valid",[],"NV8"],[[43868,43868],"mapped",[42791]],[[43869,43869],"mapped",[43831]],[[43870,43870],"mapped",[619]],[[43871,43871],"mapped",[43858]],[[43872,43875],"valid"],[[43876,43877],"valid"],[[43878,43887],"disallowed"],[[43888,43888],"mapped",[5024]],[[43889,43889],"mapped",[5025]],[[43890,43890],"mapped",[5026]],[[43891,43891],"mapped",[5027]],[[43892,43892],"mapped",[5028]],[[43893,43893],"mapped",[5029]],[[43894,43894],"mapped",[5030]],[[43895,43895],"mapped",[5031]],[[43896,43896],"mapped",[5032]],[[43897,43897],"mapped",[5033]],[[43898,43898],"mapped",[5034]],[[43899,43899],"mapped",[5035]],[[43900,43900],"mapped",[5036]],[[43901,43901],"mapped",[5037]],[[43902,43902],"mapped",[5038]],[[43903,43903],"mapped",[5039]],[[43904,43904],"mapped",[5040]],[[43905,43905],"mapped",[5041]],[[43906,43906],"mapped",[5042]],[[43907,43907],"mapped",[5043]],[[43908,43908],"mapped",[5044]],[[43909,43909],"mapped",[5045]],[[43910,43910],"mapped",[5046]],[[43911,43911],"mapped",[5047]],[[43912,43912],"mapped",[5048]],[[43913,43913],"mapped",[5049]],[[43914,43914],"mapped",[5050]],[[43915,43915],"mapped",[5051]],[[43916,43916],"mapped",[5052]],[[43917,43917],"mapped",[5053]],[[43918,43918],"mapped",[5054]],[[43919,43919],"mapped",[5055]],[[43920,43920],"mapped",[5056]],[[43921,43921],"mapped",[5057]],[[43922,43922],"mapped",[5058]],[[43923,43923],"mapped",[5059]],[[43924,43924],"mapped",[5060]],[[43925,43925],"mapped",[5061]],[[43926,43926],"mapped",[5062]],[[43927,43927],"mapped",[5063]],[[43928,43928],"mapped",[5064]],[[43929,43929],"mapped",[5065]],[[43930,43930],"mapped",[5066]],[[43931,43931],"mapped",[5067]],[[43932,43932],"mapped",[5068]],[[43933,43933],"mapped",[5069]],[[43934,43934],"mapped",[5070]],[[43935,43935],"mapped",[5071]],[[43936,43936],"mapped",[5072]],[[43937,43937],"mapped",[5073]],[[43938,43938],"mapped",[5074]],[[43939,43939],"mapped",[5075]],[[43940,43940],"mapped",[5076]],[[43941,43941],"mapped",[5077]],[[43942,43942],"mapped",[5078]],[[43943,43943],"mapped",[5079]],[[43944,43944],"mapped",[5080]],[[43945,43945],"mapped",[5081]],[[43946,43946],"mapped",[5082]],[[43947,43947],"mapped",[5083]],[[43948,43948],"mapped",[5084]],[[43949,43949],"mapped",[5085]],[[43950,43950],"mapped",[5086]],[[43951,43951],"mapped",[5087]],[[43952,43952],"mapped",[5088]],[[43953,43953],"mapped",[5089]],[[43954,43954],"mapped",[5090]],[[43955,43955],"mapped",[5091]],[[43956,43956],"mapped",[5092]],[[43957,43957],"mapped",[5093]],[[43958,43958],"mapped",[5094]],[[43959,43959],"mapped",[5095]],[[43960,43960],"mapped",[5096]],[[43961,43961],"mapped",[5097]],[[43962,43962],"mapped",[5098]],[[43963,43963],"mapped",[5099]],[[43964,43964],"mapped",[5100]],[[43965,43965],"mapped",[5101]],[[43966,43966],"mapped",[5102]],[[43967,43967],"mapped",[5103]],[[43968,44010],"valid"],[[44011,44011],"valid",[],"NV8"],[[44012,44013],"valid"],[[44014,44015],"disallowed"],[[44016,44025],"valid"],[[44026,44031],"disallowed"],[[44032,55203],"valid"],[[55204,55215],"disallowed"],[[55216,55238],"valid",[],"NV8"],[[55239,55242],"disallowed"],[[55243,55291],"valid",[],"NV8"],[[55292,55295],"disallowed"],[[55296,57343],"disallowed"],[[57344,63743],"disallowed"],[[63744,63744],"mapped",[35912]],[[63745,63745],"mapped",[26356]],[[63746,63746],"mapped",[36554]],[[63747,63747],"mapped",[36040]],[[63748,63748],"mapped",[28369]],[[63749,63749],"mapped",[20018]],[[63750,63750],"mapped",[21477]],[[63751,63752],"mapped",[40860]],[[63753,63753],"mapped",[22865]],[[63754,63754],"mapped",[37329]],[[63755,63755],"mapped",[21895]],[[63756,63756],"mapped",[22856]],[[63757,63757],"mapped",[25078]],[[63758,63758],"mapped",[30313]],[[63759,63759],"mapped",[32645]],[[63760,63760],"mapped",[34367]],[[63761,63761],"mapped",[34746]],[[63762,63762],"mapped",[35064]],[[63763,63763],"mapped",[37007]],[[63764,63764],"mapped",[27138]],[[63765,63765],"mapped",[27931]],[[63766,63766],"mapped",[28889]],[[63767,63767],"mapped",[29662]],[[63768,63768],"mapped",[33853]],[[63769,63769],"mapped",[37226]],[[63770,63770],"mapped",[39409]],[[63771,63771],"mapped",[20098]],[[63772,63772],"mapped",[21365]],[[63773,63773],"mapped",[27396]],[[63774,63774],"mapped",[29211]],[[63775,63775],"mapped",[34349]],[[63776,63776],"mapped",[40478]],[[63777,63777],"mapped",[23888]],[[63778,63778],"mapped",[28651]],[[63779,63779],"mapped",[34253]],[[63780,63780],"mapped",[35172]],[[63781,63781],"mapped",[25289]],[[63782,63782],"mapped",[33240]],[[63783,63783],"mapped",[34847]],[[63784,63784],"mapped",[24266]],[[63785,63785],"mapped",[26391]],[[63786,63786],"mapped",[28010]],[[63787,63787],"mapped",[29436]],[[63788,63788],"mapped",[37070]],[[63789,63789],"mapped",[20358]],[[63790,63790],"mapped",[20919]],[[63791,63791],"mapped",[21214]],[[63792,63792],"mapped",[25796]],[[63793,63793],"mapped",[27347]],[[63794,63794],"mapped",[29200]],[[63795,63795],"mapped",[30439]],[[63796,63796],"mapped",[32769]],[[63797,63797],"mapped",[34310]],[[63798,63798],"mapped",[34396]],[[63799,63799],"mapped",[36335]],[[63800,63800],"mapped",[38706]],[[63801,63801],"mapped",[39791]],[[63802,63802],"mapped",[40442]],[[63803,63803],"mapped",[30860]],[[63804,63804],"mapped",[31103]],[[63805,63805],"mapped",[32160]],[[63806,63806],"mapped",[33737]],[[63807,63807],"mapped",[37636]],[[63808,63808],"mapped",[40575]],[[63809,63809],"mapped",[35542]],[[63810,63810],"mapped",[22751]],[[63811,63811],"mapped",[24324]],[[63812,63812],"mapped",[31840]],[[63813,63813],"mapped",[32894]],[[63814,63814],"mapped",[29282]],[[63815,63815],"mapped",[30922]],[[63816,63816],"mapped",[36034]],[[63817,63817],"mapped",[38647]],[[63818,63818],"mapped",[22744]],[[63819,63819],"mapped",[23650]],[[63820,63820],"mapped",[27155]],[[63821,63821],"mapped",[28122]],[[63822,63822],"mapped",[28431]],[[63823,63823],"mapped",[32047]],[[63824,63824],"mapped",[32311]],[[63825,63825],"mapped",[38475]],[[63826,63826],"mapped",[21202]],[[63827,63827],"mapped",[32907]],[[63828,63828],"mapped",[20956]],[[63829,63829],"mapped",[20940]],[[63830,63830],"mapped",[31260]],[[63831,63831],"mapped",[32190]],[[63832,63832],"mapped",[33777]],[[63833,63833],"mapped",[38517]],[[63834,63834],"mapped",[35712]],[[63835,63835],"mapped",[25295]],[[63836,63836],"mapped",[27138]],[[63837,63837],"mapped",[35582]],[[63838,63838],"mapped",[20025]],[[63839,63839],"mapped",[23527]],[[63840,63840],"mapped",[24594]],[[63841,63841],"mapped",[29575]],[[63842,63842],"mapped",[30064]],[[63843,63843],"mapped",[21271]],[[63844,63844],"mapped",[30971]],[[63845,63845],"mapped",[20415]],[[63846,63846],"mapped",[24489]],[[63847,63847],"mapped",[19981]],[[63848,63848],"mapped",[27852]],[[63849,63849],"mapped",[25976]],[[63850,63850],"mapped",[32034]],[[63851,63851],"mapped",[21443]],[[63852,63852],"mapped",[22622]],[[63853,63853],"mapped",[30465]],[[63854,63854],"mapped",[33865]],[[63855,63855],"mapped",[35498]],[[63856,63856],"mapped",[27578]],[[63857,63857],"mapped",[36784]],[[63858,63858],"mapped",[27784]],[[63859,63859],"mapped",[25342]],[[63860,63860],"mapped",[33509]],[[63861,63861],"mapped",[25504]],[[63862,63862],"mapped",[30053]],[[63863,63863],"mapped",[20142]],[[63864,63864],"mapped",[20841]],[[63865,63865],"mapped",[20937]],[[63866,63866],"mapped",[26753]],[[63867,63867],"mapped",[31975]],[[63868,63868],"mapped",[33391]],[[63869,63869],"mapped",[35538]],[[63870,63870],"mapped",[37327]],[[63871,63871],"mapped",[21237]],[[63872,63872],"mapped",[21570]],[[63873,63873],"mapped",[22899]],[[63874,63874],"mapped",[24300]],[[63875,63875],"mapped",[26053]],[[63876,63876],"mapped",[28670]],[[63877,63877],"mapped",[31018]],[[63878,63878],"mapped",[38317]],[[63879,63879],"mapped",[39530]],[[63880,63880],"mapped",[40599]],[[63881,63881],"mapped",[40654]],[[63882,63882],"mapped",[21147]],[[63883,63883],"mapped",[26310]],[[63884,63884],"mapped",[27511]],[[63885,63885],"mapped",[36706]],[[63886,63886],"mapped",[24180]],[[63887,63887],"mapped",[24976]],[[63888,63888],"mapped",[25088]],[[63889,63889],"mapped",[25754]],[[63890,63890],"mapped",[28451]],[[63891,63891],"mapped",[29001]],[[63892,63892],"mapped",[29833]],[[63893,63893],"mapped",[31178]],[[63894,63894],"mapped",[32244]],[[63895,63895],"mapped",[32879]],[[63896,63896],"mapped",[36646]],[[63897,63897],"mapped",[34030]],[[63898,63898],"mapped",[36899]],[[63899,63899],"mapped",[37706]],[[63900,63900],"mapped",[21015]],[[63901,63901],"mapped",[21155]],[[63902,63902],"mapped",[21693]],[[63903,63903],"mapped",[28872]],[[63904,63904],"mapped",[35010]],[[63905,63905],"mapped",[35498]],[[63906,63906],"mapped",[24265]],[[63907,63907],"mapped",[24565]],[[63908,63908],"mapped",[25467]],[[63909,63909],"mapped",[27566]],[[63910,63910],"mapped",[31806]],[[63911,63911],"mapped",[29557]],[[63912,63912],"mapped",[20196]],[[63913,63913],"mapped",[22265]],[[63914,63914],"mapped",[23527]],[[63915,63915],"mapped",[23994]],[[63916,63916],"mapped",[24604]],[[63917,63917],"mapped",[29618]],[[63918,63918],"mapped",[29801]],[[63919,63919],"mapped",[32666]],[[63920,63920],"mapped",[32838]],[[63921,63921],"mapped",[37428]],[[63922,63922],"mapped",[38646]],[[63923,63923],"mapped",[38728]],[[63924,63924],"mapped",[38936]],[[63925,63925],"mapped",[20363]],[[63926,63926],"mapped",[31150]],[[63927,63927],"mapped",[37300]],[[63928,63928],"mapped",[38584]],[[63929,63929],"mapped",[24801]],[[63930,63930],"mapped",[20102]],[[63931,63931],"mapped",[20698]],[[63932,63932],"mapped",[23534]],[[63933,63933],"mapped",[23615]],[[63934,63934],"mapped",[26009]],[[63935,63935],"mapped",[27138]],[[63936,63936],"mapped",[29134]],[[63937,63937],"mapped",[30274]],[[63938,63938],"mapped",[34044]],[[63939,63939],"mapped",[36988]],[[63940,63940],"mapped",[40845]],[[63941,63941],"mapped",[26248]],[[63942,63942],"mapped",[38446]],[[63943,63943],"mapped",[21129]],[[63944,63944],"mapped",[26491]],[[63945,63945],"mapped",[26611]],[[63946,63946],"mapped",[27969]],[[63947,63947],"mapped",[28316]],[[63948,63948],"mapped",[29705]],[[63949,63949],"mapped",[30041]],[[63950,63950],"mapped",[30827]],[[63951,63951],"mapped",[32016]],[[63952,63952],"mapped",[39006]],[[63953,63953],"mapped",[20845]],[[63954,63954],"mapped",[25134]],[[63955,63955],"mapped",[38520]],[[63956,63956],"mapped",[20523]],[[63957,63957],"mapped",[23833]],[[63958,63958],"mapped",[28138]],[[63959,63959],"mapped",[36650]],[[63960,63960],"mapped",[24459]],[[63961,63961],"mapped",[24900]],[[63962,63962],"mapped",[26647]],[[63963,63963],"mapped",[29575]],[[63964,63964],"mapped",[38534]],[[63965,63965],"mapped",[21033]],[[63966,63966],"mapped",[21519]],[[63967,63967],"mapped",[23653]],[[63968,63968],"mapped",[26131]],[[63969,63969],"mapped",[26446]],[[63970,63970],"mapped",[26792]],[[63971,63971],"mapped",[27877]],[[63972,63972],"mapped",[29702]],[[63973,63973],"mapped",[30178]],[[63974,63974],"mapped",[32633]],[[63975,63975],"mapped",[35023]],[[63976,63976],"mapped",[35041]],[[63977,63977],"mapped",[37324]],[[63978,63978],"mapped",[38626]],[[63979,63979],"mapped",[21311]],[[63980,63980],"mapped",[28346]],[[63981,63981],"mapped",[21533]],[[63982,63982],"mapped",[29136]],[[63983,63983],"mapped",[29848]],[[63984,63984],"mapped",[34298]],[[63985,63985],"mapped",[38563]],[[63986,63986],"mapped",[40023]],[[63987,63987],"mapped",[40607]],[[63988,63988],"mapped",[26519]],[[63989,63989],"mapped",[28107]],[[63990,63990],"mapped",[33256]],[[63991,63991],"mapped",[31435]],[[63992,63992],"mapped",[31520]],[[63993,63993],"mapped",[31890]],[[63994,63994],"mapped",[29376]],[[63995,63995],"mapped",[28825]],[[63996,63996],"mapped",[35672]],[[63997,63997],"mapped",[20160]],[[63998,63998],"mapped",[33590]],[[63999,63999],"mapped",[21050]],[[64e3,64e3],"mapped",[20999]],[[64001,64001],"mapped",[24230]],[[64002,64002],"mapped",[25299]],[[64003,64003],"mapped",[31958]],[[64004,64004],"mapped",[23429]],[[64005,64005],"mapped",[27934]],[[64006,64006],"mapped",[26292]],[[64007,64007],"mapped",[36667]],[[64008,64008],"mapped",[34892]],[[64009,64009],"mapped",[38477]],[[64010,64010],"mapped",[35211]],[[64011,64011],"mapped",[24275]],[[64012,64012],"mapped",[20800]],[[64013,64013],"mapped",[21952]],[[64014,64015],"valid"],[[64016,64016],"mapped",[22618]],[[64017,64017],"valid"],[[64018,64018],"mapped",[26228]],[[64019,64020],"valid"],[[64021,64021],"mapped",[20958]],[[64022,64022],"mapped",[29482]],[[64023,64023],"mapped",[30410]],[[64024,64024],"mapped",[31036]],[[64025,64025],"mapped",[31070]],[[64026,64026],"mapped",[31077]],[[64027,64027],"mapped",[31119]],[[64028,64028],"mapped",[38742]],[[64029,64029],"mapped",[31934]],[[64030,64030],"mapped",[32701]],[[64031,64031],"valid"],[[64032,64032],"mapped",[34322]],[[64033,64033],"valid"],[[64034,64034],"mapped",[35576]],[[64035,64036],"valid"],[[64037,64037],"mapped",[36920]],[[64038,64038],"mapped",[37117]],[[64039,64041],"valid"],[[64042,64042],"mapped",[39151]],[[64043,64043],"mapped",[39164]],[[64044,64044],"mapped",[39208]],[[64045,64045],"mapped",[40372]],[[64046,64046],"mapped",[37086]],[[64047,64047],"mapped",[38583]],[[64048,64048],"mapped",[20398]],[[64049,64049],"mapped",[20711]],[[64050,64050],"mapped",[20813]],[[64051,64051],"mapped",[21193]],[[64052,64052],"mapped",[21220]],[[64053,64053],"mapped",[21329]],[[64054,64054],"mapped",[21917]],[[64055,64055],"mapped",[22022]],[[64056,64056],"mapped",[22120]],[[64057,64057],"mapped",[22592]],[[64058,64058],"mapped",[22696]],[[64059,64059],"mapped",[23652]],[[64060,64060],"mapped",[23662]],[[64061,64061],"mapped",[24724]],[[64062,64062],"mapped",[24936]],[[64063,64063],"mapped",[24974]],[[64064,64064],"mapped",[25074]],[[64065,64065],"mapped",[25935]],[[64066,64066],"mapped",[26082]],[[64067,64067],"mapped",[26257]],[[64068,64068],"mapped",[26757]],[[64069,64069],"mapped",[28023]],[[64070,64070],"mapped",[28186]],[[64071,64071],"mapped",[28450]],[[64072,64072],"mapped",[29038]],[[64073,64073],"mapped",[29227]],[[64074,64074],"mapped",[29730]],[[64075,64075],"mapped",[30865]],[[64076,64076],"mapped",[31038]],[[64077,64077],"mapped",[31049]],[[64078,64078],"mapped",[31048]],[[64079,64079],"mapped",[31056]],[[64080,64080],"mapped",[31062]],[[64081,64081],"mapped",[31069]],[[64082,64082],"mapped",[31117]],[[64083,64083],"mapped",[31118]],[[64084,64084],"mapped",[31296]],[[64085,64085],"mapped",[31361]],[[64086,64086],"mapped",[31680]],[[64087,64087],"mapped",[32244]],[[64088,64088],"mapped",[32265]],[[64089,64089],"mapped",[32321]],[[64090,64090],"mapped",[32626]],[[64091,64091],"mapped",[32773]],[[64092,64092],"mapped",[33261]],[[64093,64094],"mapped",[33401]],[[64095,64095],"mapped",[33879]],[[64096,64096],"mapped",[35088]],[[64097,64097],"mapped",[35222]],[[64098,64098],"mapped",[35585]],[[64099,64099],"mapped",[35641]],[[64100,64100],"mapped",[36051]],[[64101,64101],"mapped",[36104]],[[64102,64102],"mapped",[36790]],[[64103,64103],"mapped",[36920]],[[64104,64104],"mapped",[38627]],[[64105,64105],"mapped",[38911]],[[64106,64106],"mapped",[38971]],[[64107,64107],"mapped",[24693]],[[64108,64108],"mapped",[148206]],[[64109,64109],"mapped",[33304]],[[64110,64111],"disallowed"],[[64112,64112],"mapped",[20006]],[[64113,64113],"mapped",[20917]],[[64114,64114],"mapped",[20840]],[[64115,64115],"mapped",[20352]],[[64116,64116],"mapped",[20805]],[[64117,64117],"mapped",[20864]],[[64118,64118],"mapped",[21191]],[[64119,64119],"mapped",[21242]],[[64120,64120],"mapped",[21917]],[[64121,64121],"mapped",[21845]],[[64122,64122],"mapped",[21913]],[[64123,64123],"mapped",[21986]],[[64124,64124],"mapped",[22618]],[[64125,64125],"mapped",[22707]],[[64126,64126],"mapped",[22852]],[[64127,64127],"mapped",[22868]],[[64128,64128],"mapped",[23138]],[[64129,64129],"mapped",[23336]],[[64130,64130],"mapped",[24274]],[[64131,64131],"mapped",[24281]],[[64132,64132],"mapped",[24425]],[[64133,64133],"mapped",[24493]],[[64134,64134],"mapped",[24792]],[[64135,64135],"mapped",[24910]],[[64136,64136],"mapped",[24840]],[[64137,64137],"mapped",[24974]],[[64138,64138],"mapped",[24928]],[[64139,64139],"mapped",[25074]],[[64140,64140],"mapped",[25140]],[[64141,64141],"mapped",[25540]],[[64142,64142],"mapped",[25628]],[[64143,64143],"mapped",[25682]],[[64144,64144],"mapped",[25942]],[[64145,64145],"mapped",[26228]],[[64146,64146],"mapped",[26391]],[[64147,64147],"mapped",[26395]],[[64148,64148],"mapped",[26454]],[[64149,64149],"mapped",[27513]],[[64150,64150],"mapped",[27578]],[[64151,64151],"mapped",[27969]],[[64152,64152],"mapped",[28379]],[[64153,64153],"mapped",[28363]],[[64154,64154],"mapped",[28450]],[[64155,64155],"mapped",[28702]],[[64156,64156],"mapped",[29038]],[[64157,64157],"mapped",[30631]],[[64158,64158],"mapped",[29237]],[[64159,64159],"mapped",[29359]],[[64160,64160],"mapped",[29482]],[[64161,64161],"mapped",[29809]],[[64162,64162],"mapped",[29958]],[[64163,64163],"mapped",[30011]],[[64164,64164],"mapped",[30237]],[[64165,64165],"mapped",[30239]],[[64166,64166],"mapped",[30410]],[[64167,64167],"mapped",[30427]],[[64168,64168],"mapped",[30452]],[[64169,64169],"mapped",[30538]],[[64170,64170],"mapped",[30528]],[[64171,64171],"mapped",[30924]],[[64172,64172],"mapped",[31409]],[[64173,64173],"mapped",[31680]],[[64174,64174],"mapped",[31867]],[[64175,64175],"mapped",[32091]],[[64176,64176],"mapped",[32244]],[[64177,64177],"mapped",[32574]],[[64178,64178],"mapped",[32773]],[[64179,64179],"mapped",[33618]],[[64180,64180],"mapped",[33775]],[[64181,64181],"mapped",[34681]],[[64182,64182],"mapped",[35137]],[[64183,64183],"mapped",[35206]],[[64184,64184],"mapped",[35222]],[[64185,64185],"mapped",[35519]],[[64186,64186],"mapped",[35576]],[[64187,64187],"mapped",[35531]],[[64188,64188],"mapped",[35585]],[[64189,64189],"mapped",[35582]],[[64190,64190],"mapped",[35565]],[[64191,64191],"mapped",[35641]],[[64192,64192],"mapped",[35722]],[[64193,64193],"mapped",[36104]],[[64194,64194],"mapped",[36664]],[[64195,64195],"mapped",[36978]],[[64196,64196],"mapped",[37273]],[[64197,64197],"mapped",[37494]],[[64198,64198],"mapped",[38524]],[[64199,64199],"mapped",[38627]],[[64200,64200],"mapped",[38742]],[[64201,64201],"mapped",[38875]],[[64202,64202],"mapped",[38911]],[[64203,64203],"mapped",[38923]],[[64204,64204],"mapped",[38971]],[[64205,64205],"mapped",[39698]],[[64206,64206],"mapped",[40860]],[[64207,64207],"mapped",[141386]],[[64208,64208],"mapped",[141380]],[[64209,64209],"mapped",[144341]],[[64210,64210],"mapped",[15261]],[[64211,64211],"mapped",[16408]],[[64212,64212],"mapped",[16441]],[[64213,64213],"mapped",[152137]],[[64214,64214],"mapped",[154832]],[[64215,64215],"mapped",[163539]],[[64216,64216],"mapped",[40771]],[[64217,64217],"mapped",[40846]],[[64218,64255],"disallowed"],[[64256,64256],"mapped",[102,102]],[[64257,64257],"mapped",[102,105]],[[64258,64258],"mapped",[102,108]],[[64259,64259],"mapped",[102,102,105]],[[64260,64260],"mapped",[102,102,108]],[[64261,64262],"mapped",[115,116]],[[64263,64274],"disallowed"],[[64275,64275],"mapped",[1396,1398]],[[64276,64276],"mapped",[1396,1381]],[[64277,64277],"mapped",[1396,1387]],[[64278,64278],"mapped",[1406,1398]],[[64279,64279],"mapped",[1396,1389]],[[64280,64284],"disallowed"],[[64285,64285],"mapped",[1497,1460]],[[64286,64286],"valid"],[[64287,64287],"mapped",[1522,1463]],[[64288,64288],"mapped",[1506]],[[64289,64289],"mapped",[1488]],[[64290,64290],"mapped",[1491]],[[64291,64291],"mapped",[1492]],[[64292,64292],"mapped",[1499]],[[64293,64293],"mapped",[1500]],[[64294,64294],"mapped",[1501]],[[64295,64295],"mapped",[1512]],[[64296,64296],"mapped",[1514]],[[64297,64297],"disallowed_STD3_mapped",[43]],[[64298,64298],"mapped",[1513,1473]],[[64299,64299],"mapped",[1513,1474]],[[64300,64300],"mapped",[1513,1468,1473]],[[64301,64301],"mapped",[1513,1468,1474]],[[64302,64302],"mapped",[1488,1463]],[[64303,64303],"mapped",[1488,1464]],[[64304,64304],"mapped",[1488,1468]],[[64305,64305],"mapped",[1489,1468]],[[64306,64306],"mapped",[1490,1468]],[[64307,64307],"mapped",[1491,1468]],[[64308,64308],"mapped",[1492,1468]],[[64309,64309],"mapped",[1493,1468]],[[64310,64310],"mapped",[1494,1468]],[[64311,64311],"disallowed"],[[64312,64312],"mapped",[1496,1468]],[[64313,64313],"mapped",[1497,1468]],[[64314,64314],"mapped",[1498,1468]],[[64315,64315],"mapped",[1499,1468]],[[64316,64316],"mapped",[1500,1468]],[[64317,64317],"disallowed"],[[64318,64318],"mapped",[1502,1468]],[[64319,64319],"disallowed"],[[64320,64320],"mapped",[1504,1468]],[[64321,64321],"mapped",[1505,1468]],[[64322,64322],"disallowed"],[[64323,64323],"mapped",[1507,1468]],[[64324,64324],"mapped",[1508,1468]],[[64325,64325],"disallowed"],[[64326,64326],"mapped",[1510,1468]],[[64327,64327],"mapped",[1511,1468]],[[64328,64328],"mapped",[1512,1468]],[[64329,64329],"mapped",[1513,1468]],[[64330,64330],"mapped",[1514,1468]],[[64331,64331],"mapped",[1493,1465]],[[64332,64332],"mapped",[1489,1471]],[[64333,64333],"mapped",[1499,1471]],[[64334,64334],"mapped",[1508,1471]],[[64335,64335],"mapped",[1488,1500]],[[64336,64337],"mapped",[1649]],[[64338,64341],"mapped",[1659]],[[64342,64345],"mapped",[1662]],[[64346,64349],"mapped",[1664]],[[64350,64353],"mapped",[1658]],[[64354,64357],"mapped",[1663]],[[64358,64361],"mapped",[1657]],[[64362,64365],"mapped",[1700]],[[64366,64369],"mapped",[1702]],[[64370,64373],"mapped",[1668]],[[64374,64377],"mapped",[1667]],[[64378,64381],"mapped",[1670]],[[64382,64385],"mapped",[1671]],[[64386,64387],"mapped",[1677]],[[64388,64389],"mapped",[1676]],[[64390,64391],"mapped",[1678]],[[64392,64393],"mapped",[1672]],[[64394,64395],"mapped",[1688]],[[64396,64397],"mapped",[1681]],[[64398,64401],"mapped",[1705]],[[64402,64405],"mapped",[1711]],[[64406,64409],"mapped",[1715]],[[64410,64413],"mapped",[1713]],[[64414,64415],"mapped",[1722]],[[64416,64419],"mapped",[1723]],[[64420,64421],"mapped",[1728]],[[64422,64425],"mapped",[1729]],[[64426,64429],"mapped",[1726]],[[64430,64431],"mapped",[1746]],[[64432,64433],"mapped",[1747]],[[64434,64449],"valid",[],"NV8"],[[64450,64466],"disallowed"],[[64467,64470],"mapped",[1709]],[[64471,64472],"mapped",[1735]],[[64473,64474],"mapped",[1734]],[[64475,64476],"mapped",[1736]],[[64477,64477],"mapped",[1735,1652]],[[64478,64479],"mapped",[1739]],[[64480,64481],"mapped",[1733]],[[64482,64483],"mapped",[1737]],[[64484,64487],"mapped",[1744]],[[64488,64489],"mapped",[1609]],[[64490,64491],"mapped",[1574,1575]],[[64492,64493],"mapped",[1574,1749]],[[64494,64495],"mapped",[1574,1608]],[[64496,64497],"mapped",[1574,1735]],[[64498,64499],"mapped",[1574,1734]],[[64500,64501],"mapped",[1574,1736]],[[64502,64504],"mapped",[1574,1744]],[[64505,64507],"mapped",[1574,1609]],[[64508,64511],"mapped",[1740]],[[64512,64512],"mapped",[1574,1580]],[[64513,64513],"mapped",[1574,1581]],[[64514,64514],"mapped",[1574,1605]],[[64515,64515],"mapped",[1574,1609]],[[64516,64516],"mapped",[1574,1610]],[[64517,64517],"mapped",[1576,1580]],[[64518,64518],"mapped",[1576,1581]],[[64519,64519],"mapped",[1576,1582]],[[64520,64520],"mapped",[1576,1605]],[[64521,64521],"mapped",[1576,1609]],[[64522,64522],"mapped",[1576,1610]],[[64523,64523],"mapped",[1578,1580]],[[64524,64524],"mapped",[1578,1581]],[[64525,64525],"mapped",[1578,1582]],[[64526,64526],"mapped",[1578,1605]],[[64527,64527],"mapped",[1578,1609]],[[64528,64528],"mapped",[1578,1610]],[[64529,64529],"mapped",[1579,1580]],[[64530,64530],"mapped",[1579,1605]],[[64531,64531],"mapped",[1579,1609]],[[64532,64532],"mapped",[1579,1610]],[[64533,64533],"mapped",[1580,1581]],[[64534,64534],"mapped",[1580,1605]],[[64535,64535],"mapped",[1581,1580]],[[64536,64536],"mapped",[1581,1605]],[[64537,64537],"mapped",[1582,1580]],[[64538,64538],"mapped",[1582,1581]],[[64539,64539],"mapped",[1582,1605]],[[64540,64540],"mapped",[1587,1580]],[[64541,64541],"mapped",[1587,1581]],[[64542,64542],"mapped",[1587,1582]],[[64543,64543],"mapped",[1587,1605]],[[64544,64544],"mapped",[1589,1581]],[[64545,64545],"mapped",[1589,1605]],[[64546,64546],"mapped",[1590,1580]],[[64547,64547],"mapped",[1590,1581]],[[64548,64548],"mapped",[1590,1582]],[[64549,64549],"mapped",[1590,1605]],[[64550,64550],"mapped",[1591,1581]],[[64551,64551],"mapped",[1591,1605]],[[64552,64552],"mapped",[1592,1605]],[[64553,64553],"mapped",[1593,1580]],[[64554,64554],"mapped",[1593,1605]],[[64555,64555],"mapped",[1594,1580]],[[64556,64556],"mapped",[1594,1605]],[[64557,64557],"mapped",[1601,1580]],[[64558,64558],"mapped",[1601,1581]],[[64559,64559],"mapped",[1601,1582]],[[64560,64560],"mapped",[1601,1605]],[[64561,64561],"mapped",[1601,1609]],[[64562,64562],"mapped",[1601,1610]],[[64563,64563],"mapped",[1602,1581]],[[64564,64564],"mapped",[1602,1605]],[[64565,64565],"mapped",[1602,1609]],[[64566,64566],"mapped",[1602,1610]],[[64567,64567],"mapped",[1603,1575]],[[64568,64568],"mapped",[1603,1580]],[[64569,64569],"mapped",[1603,1581]],[[64570,64570],"mapped",[1603,1582]],[[64571,64571],"mapped",[1603,1604]],[[64572,64572],"mapped",[1603,1605]],[[64573,64573],"mapped",[1603,1609]],[[64574,64574],"mapped",[1603,1610]],[[64575,64575],"mapped",[1604,1580]],[[64576,64576],"mapped",[1604,1581]],[[64577,64577],"mapped",[1604,1582]],[[64578,64578],"mapped",[1604,1605]],[[64579,64579],"mapped",[1604,1609]],[[64580,64580],"mapped",[1604,1610]],[[64581,64581],"mapped",[1605,1580]],[[64582,64582],"mapped",[1605,1581]],[[64583,64583],"mapped",[1605,1582]],[[64584,64584],"mapped",[1605,1605]],[[64585,64585],"mapped",[1605,1609]],[[64586,64586],"mapped",[1605,1610]],[[64587,64587],"mapped",[1606,1580]],[[64588,64588],"mapped",[1606,1581]],[[64589,64589],"mapped",[1606,1582]],[[64590,64590],"mapped",[1606,1605]],[[64591,64591],"mapped",[1606,1609]],[[64592,64592],"mapped",[1606,1610]],[[64593,64593],"mapped",[1607,1580]],[[64594,64594],"mapped",[1607,1605]],[[64595,64595],"mapped",[1607,1609]],[[64596,64596],"mapped",[1607,1610]],[[64597,64597],"mapped",[1610,1580]],[[64598,64598],"mapped",[1610,1581]],[[64599,64599],"mapped",[1610,1582]],[[64600,64600],"mapped",[1610,1605]],[[64601,64601],"mapped",[1610,1609]],[[64602,64602],"mapped",[1610,1610]],[[64603,64603],"mapped",[1584,1648]],[[64604,64604],"mapped",[1585,1648]],[[64605,64605],"mapped",[1609,1648]],[[64606,64606],"disallowed_STD3_mapped",[32,1612,1617]],[[64607,64607],"disallowed_STD3_mapped",[32,1613,1617]],[[64608,64608],"disallowed_STD3_mapped",[32,1614,1617]],[[64609,64609],"disallowed_STD3_mapped",[32,1615,1617]],[[64610,64610],"disallowed_STD3_mapped",[32,1616,1617]],[[64611,64611],"disallowed_STD3_mapped",[32,1617,1648]],[[64612,64612],"mapped",[1574,1585]],[[64613,64613],"mapped",[1574,1586]],[[64614,64614],"mapped",[1574,1605]],[[64615,64615],"mapped",[1574,1606]],[[64616,64616],"mapped",[1574,1609]],[[64617,64617],"mapped",[1574,1610]],[[64618,64618],"mapped",[1576,1585]],[[64619,64619],"mapped",[1576,1586]],[[64620,64620],"mapped",[1576,1605]],[[64621,64621],"mapped",[1576,1606]],[[64622,64622],"mapped",[1576,1609]],[[64623,64623],"mapped",[1576,1610]],[[64624,64624],"mapped",[1578,1585]],[[64625,64625],"mapped",[1578,1586]],[[64626,64626],"mapped",[1578,1605]],[[64627,64627],"mapped",[1578,1606]],[[64628,64628],"mapped",[1578,1609]],[[64629,64629],"mapped",[1578,1610]],[[64630,64630],"mapped",[1579,1585]],[[64631,64631],"mapped",[1579,1586]],[[64632,64632],"mapped",[1579,1605]],[[64633,64633],"mapped",[1579,1606]],[[64634,64634],"mapped",[1579,1609]],[[64635,64635],"mapped",[1579,1610]],[[64636,64636],"mapped",[1601,1609]],[[64637,64637],"mapped",[1601,1610]],[[64638,64638],"mapped",[1602,1609]],[[64639,64639],"mapped",[1602,1610]],[[64640,64640],"mapped",[1603,1575]],[[64641,64641],"mapped",[1603,1604]],[[64642,64642],"mapped",[1603,1605]],[[64643,64643],"mapped",[1603,1609]],[[64644,64644],"mapped",[1603,1610]],[[64645,64645],"mapped",[1604,1605]],[[64646,64646],"mapped",[1604,1609]],[[64647,64647],"mapped",[1604,1610]],[[64648,64648],"mapped",[1605,1575]],[[64649,64649],"mapped",[1605,1605]],[[64650,64650],"mapped",[1606,1585]],[[64651,64651],"mapped",[1606,1586]],[[64652,64652],"mapped",[1606,1605]],[[64653,64653],"mapped",[1606,1606]],[[64654,64654],"mapped",[1606,1609]],[[64655,64655],"mapped",[1606,1610]],[[64656,64656],"mapped",[1609,1648]],[[64657,64657],"mapped",[1610,1585]],[[64658,64658],"mapped",[1610,1586]],[[64659,64659],"mapped",[1610,1605]],[[64660,64660],"mapped",[1610,1606]],[[64661,64661],"mapped",[1610,1609]],[[64662,64662],"mapped",[1610,1610]],[[64663,64663],"mapped",[1574,1580]],[[64664,64664],"mapped",[1574,1581]],[[64665,64665],"mapped",[1574,1582]],[[64666,64666],"mapped",[1574,1605]],[[64667,64667],"mapped",[1574,1607]],[[64668,64668],"mapped",[1576,1580]],[[64669,64669],"mapped",[1576,1581]],[[64670,64670],"mapped",[1576,1582]],[[64671,64671],"mapped",[1576,1605]],[[64672,64672],"mapped",[1576,1607]],[[64673,64673],"mapped",[1578,1580]],[[64674,64674],"mapped",[1578,1581]],[[64675,64675],"mapped",[1578,1582]],[[64676,64676],"mapped",[1578,1605]],[[64677,64677],"mapped",[1578,1607]],[[64678,64678],"mapped",[1579,1605]],[[64679,64679],"mapped",[1580,1581]],[[64680,64680],"mapped",[1580,1605]],[[64681,64681],"mapped",[1581,1580]],[[64682,64682],"mapped",[1581,1605]],[[64683,64683],"mapped",[1582,1580]],[[64684,64684],"mapped",[1582,1605]],[[64685,64685],"mapped",[1587,1580]],[[64686,64686],"mapped",[1587,1581]],[[64687,64687],"mapped",[1587,1582]],[[64688,64688],"mapped",[1587,1605]],[[64689,64689],"mapped",[1589,1581]],[[64690,64690],"mapped",[1589,1582]],[[64691,64691],"mapped",[1589,1605]],[[64692,64692],"mapped",[1590,1580]],[[64693,64693],"mapped",[1590,1581]],[[64694,64694],"mapped",[1590,1582]],[[64695,64695],"mapped",[1590,1605]],[[64696,64696],"mapped",[1591,1581]],[[64697,64697],"mapped",[1592,1605]],[[64698,64698],"mapped",[1593,1580]],[[64699,64699],"mapped",[1593,1605]],[[64700,64700],"mapped",[1594,1580]],[[64701,64701],"mapped",[1594,1605]],[[64702,64702],"mapped",[1601,1580]],[[64703,64703],"mapped",[1601,1581]],[[64704,64704],"mapped",[1601,1582]],[[64705,64705],"mapped",[1601,1605]],[[64706,64706],"mapped",[1602,1581]],[[64707,64707],"mapped",[1602,1605]],[[64708,64708],"mapped",[1603,1580]],[[64709,64709],"mapped",[1603,1581]],[[64710,64710],"mapped",[1603,1582]],[[64711,64711],"mapped",[1603,1604]],[[64712,64712],"mapped",[1603,1605]],[[64713,64713],"mapped",[1604,1580]],[[64714,64714],"mapped",[1604,1581]],[[64715,64715],"mapped",[1604,1582]],[[64716,64716],"mapped",[1604,1605]],[[64717,64717],"mapped",[1604,1607]],[[64718,64718],"mapped",[1605,1580]],[[64719,64719],"mapped",[1605,1581]],[[64720,64720],"mapped",[1605,1582]],[[64721,64721],"mapped",[1605,1605]],[[64722,64722],"mapped",[1606,1580]],[[64723,64723],"mapped",[1606,1581]],[[64724,64724],"mapped",[1606,1582]],[[64725,64725],"mapped",[1606,1605]],[[64726,64726],"mapped",[1606,1607]],[[64727,64727],"mapped",[1607,1580]],[[64728,64728],"mapped",[1607,1605]],[[64729,64729],"mapped",[1607,1648]],[[64730,64730],"mapped",[1610,1580]],[[64731,64731],"mapped",[1610,1581]],[[64732,64732],"mapped",[1610,1582]],[[64733,64733],"mapped",[1610,1605]],[[64734,64734],"mapped",[1610,1607]],[[64735,64735],"mapped",[1574,1605]],[[64736,64736],"mapped",[1574,1607]],[[64737,64737],"mapped",[1576,1605]],[[64738,64738],"mapped",[1576,1607]],[[64739,64739],"mapped",[1578,1605]],[[64740,64740],"mapped",[1578,1607]],[[64741,64741],"mapped",[1579,1605]],[[64742,64742],"mapped",[1579,1607]],[[64743,64743],"mapped",[1587,1605]],[[64744,64744],"mapped",[1587,1607]],[[64745,64745],"mapped",[1588,1605]],[[64746,64746],"mapped",[1588,1607]],[[64747,64747],"mapped",[1603,1604]],[[64748,64748],"mapped",[1603,1605]],[[64749,64749],"mapped",[1604,1605]],[[64750,64750],"mapped",[1606,1605]],[[64751,64751],"mapped",[1606,1607]],[[64752,64752],"mapped",[1610,1605]],[[64753,64753],"mapped",[1610,1607]],[[64754,64754],"mapped",[1600,1614,1617]],[[64755,64755],"mapped",[1600,1615,1617]],[[64756,64756],"mapped",[1600,1616,1617]],[[64757,64757],"mapped",[1591,1609]],[[64758,64758],"mapped",[1591,1610]],[[64759,64759],"mapped",[1593,1609]],[[64760,64760],"mapped",[1593,1610]],[[64761,64761],"mapped",[1594,1609]],[[64762,64762],"mapped",[1594,1610]],[[64763,64763],"mapped",[1587,1609]],[[64764,64764],"mapped",[1587,1610]],[[64765,64765],"mapped",[1588,1609]],[[64766,64766],"mapped",[1588,1610]],[[64767,64767],"mapped",[1581,1609]],[[64768,64768],"mapped",[1581,1610]],[[64769,64769],"mapped",[1580,1609]],[[64770,64770],"mapped",[1580,1610]],[[64771,64771],"mapped",[1582,1609]],[[64772,64772],"mapped",[1582,1610]],[[64773,64773],"mapped",[1589,1609]],[[64774,64774],"mapped",[1589,1610]],[[64775,64775],"mapped",[1590,1609]],[[64776,64776],"mapped",[1590,1610]],[[64777,64777],"mapped",[1588,1580]],[[64778,64778],"mapped",[1588,1581]],[[64779,64779],"mapped",[1588,1582]],[[64780,64780],"mapped",[1588,1605]],[[64781,64781],"mapped",[1588,1585]],[[64782,64782],"mapped",[1587,1585]],[[64783,64783],"mapped",[1589,1585]],[[64784,64784],"mapped",[1590,1585]],[[64785,64785],"mapped",[1591,1609]],[[64786,64786],"mapped",[1591,1610]],[[64787,64787],"mapped",[1593,1609]],[[64788,64788],"mapped",[1593,1610]],[[64789,64789],"mapped",[1594,1609]],[[64790,64790],"mapped",[1594,1610]],[[64791,64791],"mapped",[1587,1609]],[[64792,64792],"mapped",[1587,1610]],[[64793,64793],"mapped",[1588,1609]],[[64794,64794],"mapped",[1588,1610]],[[64795,64795],"mapped",[1581,1609]],[[64796,64796],"mapped",[1581,1610]],[[64797,64797],"mapped",[1580,1609]],[[64798,64798],"mapped",[1580,1610]],[[64799,64799],"mapped",[1582,1609]],[[64800,64800],"mapped",[1582,1610]],[[64801,64801],"mapped",[1589,1609]],[[64802,64802],"mapped",[1589,1610]],[[64803,64803],"mapped",[1590,1609]],[[64804,64804],"mapped",[1590,1610]],[[64805,64805],"mapped",[1588,1580]],[[64806,64806],"mapped",[1588,1581]],[[64807,64807],"mapped",[1588,1582]],[[64808,64808],"mapped",[1588,1605]],[[64809,64809],"mapped",[1588,1585]],[[64810,64810],"mapped",[1587,1585]],[[64811,64811],"mapped",[1589,1585]],[[64812,64812],"mapped",[1590,1585]],[[64813,64813],"mapped",[1588,1580]],[[64814,64814],"mapped",[1588,1581]],[[64815,64815],"mapped",[1588,1582]],[[64816,64816],"mapped",[1588,1605]],[[64817,64817],"mapped",[1587,1607]],[[64818,64818],"mapped",[1588,1607]],[[64819,64819],"mapped",[1591,1605]],[[64820,64820],"mapped",[1587,1580]],[[64821,64821],"mapped",[1587,1581]],[[64822,64822],"mapped",[1587,1582]],[[64823,64823],"mapped",[1588,1580]],[[64824,64824],"mapped",[1588,1581]],[[64825,64825],"mapped",[1588,1582]],[[64826,64826],"mapped",[1591,1605]],[[64827,64827],"mapped",[1592,1605]],[[64828,64829],"mapped",[1575,1611]],[[64830,64831],"valid",[],"NV8"],[[64832,64847],"disallowed"],[[64848,64848],"mapped",[1578,1580,1605]],[[64849,64850],"mapped",[1578,1581,1580]],[[64851,64851],"mapped",[1578,1581,1605]],[[64852,64852],"mapped",[1578,1582,1605]],[[64853,64853],"mapped",[1578,1605,1580]],[[64854,64854],"mapped",[1578,1605,1581]],[[64855,64855],"mapped",[1578,1605,1582]],[[64856,64857],"mapped",[1580,1605,1581]],[[64858,64858],"mapped",[1581,1605,1610]],[[64859,64859],"mapped",[1581,1605,1609]],[[64860,64860],"mapped",[1587,1581,1580]],[[64861,64861],"mapped",[1587,1580,1581]],[[64862,64862],"mapped",[1587,1580,1609]],[[64863,64864],"mapped",[1587,1605,1581]],[[64865,64865],"mapped",[1587,1605,1580]],[[64866,64867],"mapped",[1587,1605,1605]],[[64868,64869],"mapped",[1589,1581,1581]],[[64870,64870],"mapped",[1589,1605,1605]],[[64871,64872],"mapped",[1588,1581,1605]],[[64873,64873],"mapped",[1588,1580,1610]],[[64874,64875],"mapped",[1588,1605,1582]],[[64876,64877],"mapped",[1588,1605,1605]],[[64878,64878],"mapped",[1590,1581,1609]],[[64879,64880],"mapped",[1590,1582,1605]],[[64881,64882],"mapped",[1591,1605,1581]],[[64883,64883],"mapped",[1591,1605,1605]],[[64884,64884],"mapped",[1591,1605,1610]],[[64885,64885],"mapped",[1593,1580,1605]],[[64886,64887],"mapped",[1593,1605,1605]],[[64888,64888],"mapped",[1593,1605,1609]],[[64889,64889],"mapped",[1594,1605,1605]],[[64890,64890],"mapped",[1594,1605,1610]],[[64891,64891],"mapped",[1594,1605,1609]],[[64892,64893],"mapped",[1601,1582,1605]],[[64894,64894],"mapped",[1602,1605,1581]],[[64895,64895],"mapped",[1602,1605,1605]],[[64896,64896],"mapped",[1604,1581,1605]],[[64897,64897],"mapped",[1604,1581,1610]],[[64898,64898],"mapped",[1604,1581,1609]],[[64899,64900],"mapped",[1604,1580,1580]],[[64901,64902],"mapped",[1604,1582,1605]],[[64903,64904],"mapped",[1604,1605,1581]],[[64905,64905],"mapped",[1605,1581,1580]],[[64906,64906],"mapped",[1605,1581,1605]],[[64907,64907],"mapped",[1605,1581,1610]],[[64908,64908],"mapped",[1605,1580,1581]],[[64909,64909],"mapped",[1605,1580,1605]],[[64910,64910],"mapped",[1605,1582,1580]],[[64911,64911],"mapped",[1605,1582,1605]],[[64912,64913],"disallowed"],[[64914,64914],"mapped",[1605,1580,1582]],[[64915,64915],"mapped",[1607,1605,1580]],[[64916,64916],"mapped",[1607,1605,1605]],[[64917,64917],"mapped",[1606,1581,1605]],[[64918,64918],"mapped",[1606,1581,1609]],[[64919,64920],"mapped",[1606,1580,1605]],[[64921,64921],"mapped",[1606,1580,1609]],[[64922,64922],"mapped",[1606,1605,1610]],[[64923,64923],"mapped",[1606,1605,1609]],[[64924,64925],"mapped",[1610,1605,1605]],[[64926,64926],"mapped",[1576,1582,1610]],[[64927,64927],"mapped",[1578,1580,1610]],[[64928,64928],"mapped",[1578,1580,1609]],[[64929,64929],"mapped",[1578,1582,1610]],[[64930,64930],"mapped",[1578,1582,1609]],[[64931,64931],"mapped",[1578,1605,1610]],[[64932,64932],"mapped",[1578,1605,1609]],[[64933,64933],"mapped",[1580,1605,1610]],[[64934,64934],"mapped",[1580,1581,1609]],[[64935,64935],"mapped",[1580,1605,1609]],[[64936,64936],"mapped",[1587,1582,1609]],[[64937,64937],"mapped",[1589,1581,1610]],[[64938,64938],"mapped",[1588,1581,1610]],[[64939,64939],"mapped",[1590,1581,1610]],[[64940,64940],"mapped",[1604,1580,1610]],[[64941,64941],"mapped",[1604,1605,1610]],[[64942,64942],"mapped",[1610,1581,1610]],[[64943,64943],"mapped",[1610,1580,1610]],[[64944,64944],"mapped",[1610,1605,1610]],[[64945,64945],"mapped",[1605,1605,1610]],[[64946,64946],"mapped",[1602,1605,1610]],[[64947,64947],"mapped",[1606,1581,1610]],[[64948,64948],"mapped",[1602,1605,1581]],[[64949,64949],"mapped",[1604,1581,1605]],[[64950,64950],"mapped",[1593,1605,1610]],[[64951,64951],"mapped",[1603,1605,1610]],[[64952,64952],"mapped",[1606,1580,1581]],[[64953,64953],"mapped",[1605,1582,1610]],[[64954,64954],"mapped",[1604,1580,1605]],[[64955,64955],"mapped",[1603,1605,1605]],[[64956,64956],"mapped",[1604,1580,1605]],[[64957,64957],"mapped",[1606,1580,1581]],[[64958,64958],"mapped",[1580,1581,1610]],[[64959,64959],"mapped",[1581,1580,1610]],[[64960,64960],"mapped",[1605,1580,1610]],[[64961,64961],"mapped",[1601,1605,1610]],[[64962,64962],"mapped",[1576,1581,1610]],[[64963,64963],"mapped",[1603,1605,1605]],[[64964,64964],"mapped",[1593,1580,1605]],[[64965,64965],"mapped",[1589,1605,1605]],[[64966,64966],"mapped",[1587,1582,1610]],[[64967,64967],"mapped",[1606,1580,1610]],[[64968,64975],"disallowed"],[[64976,65007],"disallowed"],[[65008,65008],"mapped",[1589,1604,1746]],[[65009,65009],"mapped",[1602,1604,1746]],[[65010,65010],"mapped",[1575,1604,1604,1607]],[[65011,65011],"mapped",[1575,1603,1576,1585]],[[65012,65012],"mapped",[1605,1581,1605,1583]],[[65013,65013],"mapped",[1589,1604,1593,1605]],[[65014,65014],"mapped",[1585,1587,1608,1604]],[[65015,65015],"mapped",[1593,1604,1610,1607]],[[65016,65016],"mapped",[1608,1587,1604,1605]],[[65017,65017],"mapped",[1589,1604,1609]],[[65018,65018],"disallowed_STD3_mapped",[1589,1604,1609,32,1575,1604,1604,1607,32,1593,1604,1610,1607,32,1608,1587,1604,1605]],[[65019,65019],"disallowed_STD3_mapped",[1580,1604,32,1580,1604,1575,1604,1607]],[[65020,65020],"mapped",[1585,1740,1575,1604]],[[65021,65021],"valid",[],"NV8"],[[65022,65023],"disallowed"],[[65024,65039],"ignored"],[[65040,65040],"disallowed_STD3_mapped",[44]],[[65041,65041],"mapped",[12289]],[[65042,65042],"disallowed"],[[65043,65043],"disallowed_STD3_mapped",[58]],[[65044,65044],"disallowed_STD3_mapped",[59]],[[65045,65045],"disallowed_STD3_mapped",[33]],[[65046,65046],"disallowed_STD3_mapped",[63]],[[65047,65047],"mapped",[12310]],[[65048,65048],"mapped",[12311]],[[65049,65049],"disallowed"],[[65050,65055],"disallowed"],[[65056,65059],"valid"],[[65060,65062],"valid"],[[65063,65069],"valid"],[[65070,65071],"valid"],[[65072,65072],"disallowed"],[[65073,65073],"mapped",[8212]],[[65074,65074],"mapped",[8211]],[[65075,65076],"disallowed_STD3_mapped",[95]],[[65077,65077],"disallowed_STD3_mapped",[40]],[[65078,65078],"disallowed_STD3_mapped",[41]],[[65079,65079],"disallowed_STD3_mapped",[123]],[[65080,65080],"disallowed_STD3_mapped",[125]],[[65081,65081],"mapped",[12308]],[[65082,65082],"mapped",[12309]],[[65083,65083],"mapped",[12304]],[[65084,65084],"mapped",[12305]],[[65085,65085],"mapped",[12298]],[[65086,65086],"mapped",[12299]],[[65087,65087],"mapped",[12296]],[[65088,65088],"mapped",[12297]],[[65089,65089],"mapped",[12300]],[[65090,65090],"mapped",[12301]],[[65091,65091],"mapped",[12302]],[[65092,65092],"mapped",[12303]],[[65093,65094],"valid",[],"NV8"],[[65095,65095],"disallowed_STD3_mapped",[91]],[[65096,65096],"disallowed_STD3_mapped",[93]],[[65097,65100],"disallowed_STD3_mapped",[32,773]],[[65101,65103],"disallowed_STD3_mapped",[95]],[[65104,65104],"disallowed_STD3_mapped",[44]],[[65105,65105],"mapped",[12289]],[[65106,65106],"disallowed"],[[65107,65107],"disallowed"],[[65108,65108],"disallowed_STD3_mapped",[59]],[[65109,65109],"disallowed_STD3_mapped",[58]],[[65110,65110],"disallowed_STD3_mapped",[63]],[[65111,65111],"disallowed_STD3_mapped",[33]],[[65112,65112],"mapped",[8212]],[[65113,65113],"disallowed_STD3_mapped",[40]],[[65114,65114],"disallowed_STD3_mapped",[41]],[[65115,65115],"disallowed_STD3_mapped",[123]],[[65116,65116],"disallowed_STD3_mapped",[125]],[[65117,65117],"mapped",[12308]],[[65118,65118],"mapped",[12309]],[[65119,65119],"disallowed_STD3_mapped",[35]],[[65120,65120],"disallowed_STD3_mapped",[38]],[[65121,65121],"disallowed_STD3_mapped",[42]],[[65122,65122],"disallowed_STD3_mapped",[43]],[[65123,65123],"mapped",[45]],[[65124,65124],"disallowed_STD3_mapped",[60]],[[65125,65125],"disallowed_STD3_mapped",[62]],[[65126,65126],"disallowed_STD3_mapped",[61]],[[65127,65127],"disallowed"],[[65128,65128],"disallowed_STD3_mapped",[92]],[[65129,65129],"disallowed_STD3_mapped",[36]],[[65130,65130],"disallowed_STD3_mapped",[37]],[[65131,65131],"disallowed_STD3_mapped",[64]],[[65132,65135],"disallowed"],[[65136,65136],"disallowed_STD3_mapped",[32,1611]],[[65137,65137],"mapped",[1600,1611]],[[65138,65138],"disallowed_STD3_mapped",[32,1612]],[[65139,65139],"valid"],[[65140,65140],"disallowed_STD3_mapped",[32,1613]],[[65141,65141],"disallowed"],[[65142,65142],"disallowed_STD3_mapped",[32,1614]],[[65143,65143],"mapped",[1600,1614]],[[65144,65144],"disallowed_STD3_mapped",[32,1615]],[[65145,65145],"mapped",[1600,1615]],[[65146,65146],"disallowed_STD3_mapped",[32,1616]],[[65147,65147],"mapped",[1600,1616]],[[65148,65148],"disallowed_STD3_mapped",[32,1617]],[[65149,65149],"mapped",[1600,1617]],[[65150,65150],"disallowed_STD3_mapped",[32,1618]],[[65151,65151],"mapped",[1600,1618]],[[65152,65152],"mapped",[1569]],[[65153,65154],"mapped",[1570]],[[65155,65156],"mapped",[1571]],[[65157,65158],"mapped",[1572]],[[65159,65160],"mapped",[1573]],[[65161,65164],"mapped",[1574]],[[65165,65166],"mapped",[1575]],[[65167,65170],"mapped",[1576]],[[65171,65172],"mapped",[1577]],[[65173,65176],"mapped",[1578]],[[65177,65180],"mapped",[1579]],[[65181,65184],"mapped",[1580]],[[65185,65188],"mapped",[1581]],[[65189,65192],"mapped",[1582]],[[65193,65194],"mapped",[1583]],[[65195,65196],"mapped",[1584]],[[65197,65198],"mapped",[1585]],[[65199,65200],"mapped",[1586]],[[65201,65204],"mapped",[1587]],[[65205,65208],"mapped",[1588]],[[65209,65212],"mapped",[1589]],[[65213,65216],"mapped",[1590]],[[65217,65220],"mapped",[1591]],[[65221,65224],"mapped",[1592]],[[65225,65228],"mapped",[1593]],[[65229,65232],"mapped",[1594]],[[65233,65236],"mapped",[1601]],[[65237,65240],"mapped",[1602]],[[65241,65244],"mapped",[1603]],[[65245,65248],"mapped",[1604]],[[65249,65252],"mapped",[1605]],[[65253,65256],"mapped",[1606]],[[65257,65260],"mapped",[1607]],[[65261,65262],"mapped",[1608]],[[65263,65264],"mapped",[1609]],[[65265,65268],"mapped",[1610]],[[65269,65270],"mapped",[1604,1570]],[[65271,65272],"mapped",[1604,1571]],[[65273,65274],"mapped",[1604,1573]],[[65275,65276],"mapped",[1604,1575]],[[65277,65278],"disallowed"],[[65279,65279],"ignored"],[[65280,65280],"disallowed"],[[65281,65281],"disallowed_STD3_mapped",[33]],[[65282,65282],"disallowed_STD3_mapped",[34]],[[65283,65283],"disallowed_STD3_mapped",[35]],[[65284,65284],"disallowed_STD3_mapped",[36]],[[65285,65285],"disallowed_STD3_mapped",[37]],[[65286,65286],"disallowed_STD3_mapped",[38]],[[65287,65287],"disallowed_STD3_mapped",[39]],[[65288,65288],"disallowed_STD3_mapped",[40]],[[65289,65289],"disallowed_STD3_mapped",[41]],[[65290,65290],"disallowed_STD3_mapped",[42]],[[65291,65291],"disallowed_STD3_mapped",[43]],[[65292,65292],"disallowed_STD3_mapped",[44]],[[65293,65293],"mapped",[45]],[[65294,65294],"mapped",[46]],[[65295,65295],"disallowed_STD3_mapped",[47]],[[65296,65296],"mapped",[48]],[[65297,65297],"mapped",[49]],[[65298,65298],"mapped",[50]],[[65299,65299],"mapped",[51]],[[65300,65300],"mapped",[52]],[[65301,65301],"mapped",[53]],[[65302,65302],"mapped",[54]],[[65303,65303],"mapped",[55]],[[65304,65304],"mapped",[56]],[[65305,65305],"mapped",[57]],[[65306,65306],"disallowed_STD3_mapped",[58]],[[65307,65307],"disallowed_STD3_mapped",[59]],[[65308,65308],"disallowed_STD3_mapped",[60]],[[65309,65309],"disallowed_STD3_mapped",[61]],[[65310,65310],"disallowed_STD3_mapped",[62]],[[65311,65311],"disallowed_STD3_mapped",[63]],[[65312,65312],"disallowed_STD3_mapped",[64]],[[65313,65313],"mapped",[97]],[[65314,65314],"mapped",[98]],[[65315,65315],"mapped",[99]],[[65316,65316],"mapped",[100]],[[65317,65317],"mapped",[101]],[[65318,65318],"mapped",[102]],[[65319,65319],"mapped",[103]],[[65320,65320],"mapped",[104]],[[65321,65321],"mapped",[105]],[[65322,65322],"mapped",[106]],[[65323,65323],"mapped",[107]],[[65324,65324],"mapped",[108]],[[65325,65325],"mapped",[109]],[[65326,65326],"mapped",[110]],[[65327,65327],"mapped",[111]],[[65328,65328],"mapped",[112]],[[65329,65329],"mapped",[113]],[[65330,65330],"mapped",[114]],[[65331,65331],"mapped",[115]],[[65332,65332],"mapped",[116]],[[65333,65333],"mapped",[117]],[[65334,65334],"mapped",[118]],[[65335,65335],"mapped",[119]],[[65336,65336],"mapped",[120]],[[65337,65337],"mapped",[121]],[[65338,65338],"mapped",[122]],[[65339,65339],"disallowed_STD3_mapped",[91]],[[65340,65340],"disallowed_STD3_mapped",[92]],[[65341,65341],"disallowed_STD3_mapped",[93]],[[65342,65342],"disallowed_STD3_mapped",[94]],[[65343,65343],"disallowed_STD3_mapped",[95]],[[65344,65344],"disallowed_STD3_mapped",[96]],[[65345,65345],"mapped",[97]],[[65346,65346],"mapped",[98]],[[65347,65347],"mapped",[99]],[[65348,65348],"mapped",[100]],[[65349,65349],"mapped",[101]],[[65350,65350],"mapped",[102]],[[65351,65351],"mapped",[103]],[[65352,65352],"mapped",[104]],[[65353,65353],"mapped",[105]],[[65354,65354],"mapped",[106]],[[65355,65355],"mapped",[107]],[[65356,65356],"mapped",[108]],[[65357,65357],"mapped",[109]],[[65358,65358],"mapped",[110]],[[65359,65359],"mapped",[111]],[[65360,65360],"mapped",[112]],[[65361,65361],"mapped",[113]],[[65362,65362],"mapped",[114]],[[65363,65363],"mapped",[115]],[[65364,65364],"mapped",[116]],[[65365,65365],"mapped",[117]],[[65366,65366],"mapped",[118]],[[65367,65367],"mapped",[119]],[[65368,65368],"mapped",[120]],[[65369,65369],"mapped",[121]],[[65370,65370],"mapped",[122]],[[65371,65371],"disallowed_STD3_mapped",[123]],[[65372,65372],"disallowed_STD3_mapped",[124]],[[65373,65373],"disallowed_STD3_mapped",[125]],[[65374,65374],"disallowed_STD3_mapped",[126]],[[65375,65375],"mapped",[10629]],[[65376,65376],"mapped",[10630]],[[65377,65377],"mapped",[46]],[[65378,65378],"mapped",[12300]],[[65379,65379],"mapped",[12301]],[[65380,65380],"mapped",[12289]],[[65381,65381],"mapped",[12539]],[[65382,65382],"mapped",[12530]],[[65383,65383],"mapped",[12449]],[[65384,65384],"mapped",[12451]],[[65385,65385],"mapped",[12453]],[[65386,65386],"mapped",[12455]],[[65387,65387],"mapped",[12457]],[[65388,65388],"mapped",[12515]],[[65389,65389],"mapped",[12517]],[[65390,65390],"mapped",[12519]],[[65391,65391],"mapped",[12483]],[[65392,65392],"mapped",[12540]],[[65393,65393],"mapped",[12450]],[[65394,65394],"mapped",[12452]],[[65395,65395],"mapped",[12454]],[[65396,65396],"mapped",[12456]],[[65397,65397],"mapped",[12458]],[[65398,65398],"mapped",[12459]],[[65399,65399],"mapped",[12461]],[[65400,65400],"mapped",[12463]],[[65401,65401],"mapped",[12465]],[[65402,65402],"mapped",[12467]],[[65403,65403],"mapped",[12469]],[[65404,65404],"mapped",[12471]],[[65405,65405],"mapped",[12473]],[[65406,65406],"mapped",[12475]],[[65407,65407],"mapped",[12477]],[[65408,65408],"mapped",[12479]],[[65409,65409],"mapped",[12481]],[[65410,65410],"mapped",[12484]],[[65411,65411],"mapped",[12486]],[[65412,65412],"mapped",[12488]],[[65413,65413],"mapped",[12490]],[[65414,65414],"mapped",[12491]],[[65415,65415],"mapped",[12492]],[[65416,65416],"mapped",[12493]],[[65417,65417],"mapped",[12494]],[[65418,65418],"mapped",[12495]],[[65419,65419],"mapped",[12498]],[[65420,65420],"mapped",[12501]],[[65421,65421],"mapped",[12504]],[[65422,65422],"mapped",[12507]],[[65423,65423],"mapped",[12510]],[[65424,65424],"mapped",[12511]],[[65425,65425],"mapped",[12512]],[[65426,65426],"mapped",[12513]],[[65427,65427],"mapped",[12514]],[[65428,65428],"mapped",[12516]],[[65429,65429],"mapped",[12518]],[[65430,65430],"mapped",[12520]],[[65431,65431],"mapped",[12521]],[[65432,65432],"mapped",[12522]],[[65433,65433],"mapped",[12523]],[[65434,65434],"mapped",[12524]],[[65435,65435],"mapped",[12525]],[[65436,65436],"mapped",[12527]],[[65437,65437],"mapped",[12531]],[[65438,65438],"mapped",[12441]],[[65439,65439],"mapped",[12442]],[[65440,65440],"disallowed"],[[65441,65441],"mapped",[4352]],[[65442,65442],"mapped",[4353]],[[65443,65443],"mapped",[4522]],[[65444,65444],"mapped",[4354]],[[65445,65445],"mapped",[4524]],[[65446,65446],"mapped",[4525]],[[65447,65447],"mapped",[4355]],[[65448,65448],"mapped",[4356]],[[65449,65449],"mapped",[4357]],[[65450,65450],"mapped",[4528]],[[65451,65451],"mapped",[4529]],[[65452,65452],"mapped",[4530]],[[65453,65453],"mapped",[4531]],[[65454,65454],"mapped",[4532]],[[65455,65455],"mapped",[4533]],[[65456,65456],"mapped",[4378]],[[65457,65457],"mapped",[4358]],[[65458,65458],"mapped",[4359]],[[65459,65459],"mapped",[4360]],[[65460,65460],"mapped",[4385]],[[65461,65461],"mapped",[4361]],[[65462,65462],"mapped",[4362]],[[65463,65463],"mapped",[4363]],[[65464,65464],"mapped",[4364]],[[65465,65465],"mapped",[4365]],[[65466,65466],"mapped",[4366]],[[65467,65467],"mapped",[4367]],[[65468,65468],"mapped",[4368]],[[65469,65469],"mapped",[4369]],[[65470,65470],"mapped",[4370]],[[65471,65473],"disallowed"],[[65474,65474],"mapped",[4449]],[[65475,65475],"mapped",[4450]],[[65476,65476],"mapped",[4451]],[[65477,65477],"mapped",[4452]],[[65478,65478],"mapped",[4453]],[[65479,65479],"mapped",[4454]],[[65480,65481],"disallowed"],[[65482,65482],"mapped",[4455]],[[65483,65483],"mapped",[4456]],[[65484,65484],"mapped",[4457]],[[65485,65485],"mapped",[4458]],[[65486,65486],"mapped",[4459]],[[65487,65487],"mapped",[4460]],[[65488,65489],"disallowed"],[[65490,65490],"mapped",[4461]],[[65491,65491],"mapped",[4462]],[[65492,65492],"mapped",[4463]],[[65493,65493],"mapped",[4464]],[[65494,65494],"mapped",[4465]],[[65495,65495],"mapped",[4466]],[[65496,65497],"disallowed"],[[65498,65498],"mapped",[4467]],[[65499,65499],"mapped",[4468]],[[65500,65500],"mapped",[4469]],[[65501,65503],"disallowed"],[[65504,65504],"mapped",[162]],[[65505,65505],"mapped",[163]],[[65506,65506],"mapped",[172]],[[65507,65507],"disallowed_STD3_mapped",[32,772]],[[65508,65508],"mapped",[166]],[[65509,65509],"mapped",[165]],[[65510,65510],"mapped",[8361]],[[65511,65511],"disallowed"],[[65512,65512],"mapped",[9474]],[[65513,65513],"mapped",[8592]],[[65514,65514],"mapped",[8593]],[[65515,65515],"mapped",[8594]],[[65516,65516],"mapped",[8595]],[[65517,65517],"mapped",[9632]],[[65518,65518],"mapped",[9675]],[[65519,65528],"disallowed"],[[65529,65531],"disallowed"],[[65532,65532],"disallowed"],[[65533,65533],"disallowed"],[[65534,65535],"disallowed"],[[65536,65547],"valid"],[[65548,65548],"disallowed"],[[65549,65574],"valid"],[[65575,65575],"disallowed"],[[65576,65594],"valid"],[[65595,65595],"disallowed"],[[65596,65597],"valid"],[[65598,65598],"disallowed"],[[65599,65613],"valid"],[[65614,65615],"disallowed"],[[65616,65629],"valid"],[[65630,65663],"disallowed"],[[65664,65786],"valid"],[[65787,65791],"disallowed"],[[65792,65794],"valid",[],"NV8"],[[65795,65798],"disallowed"],[[65799,65843],"valid",[],"NV8"],[[65844,65846],"disallowed"],[[65847,65855],"valid",[],"NV8"],[[65856,65930],"valid",[],"NV8"],[[65931,65932],"valid",[],"NV8"],[[65933,65935],"disallowed"],[[65936,65947],"valid",[],"NV8"],[[65948,65951],"disallowed"],[[65952,65952],"valid",[],"NV8"],[[65953,65999],"disallowed"],[[66e3,66044],"valid",[],"NV8"],[[66045,66045],"valid"],[[66046,66175],"disallowed"],[[66176,66204],"valid"],[[66205,66207],"disallowed"],[[66208,66256],"valid"],[[66257,66271],"disallowed"],[[66272,66272],"valid"],[[66273,66299],"valid",[],"NV8"],[[66300,66303],"disallowed"],[[66304,66334],"valid"],[[66335,66335],"valid"],[[66336,66339],"valid",[],"NV8"],[[66340,66351],"disallowed"],[[66352,66368],"valid"],[[66369,66369],"valid",[],"NV8"],[[66370,66377],"valid"],[[66378,66378],"valid",[],"NV8"],[[66379,66383],"disallowed"],[[66384,66426],"valid"],[[66427,66431],"disallowed"],[[66432,66461],"valid"],[[66462,66462],"disallowed"],[[66463,66463],"valid",[],"NV8"],[[66464,66499],"valid"],[[66500,66503],"disallowed"],[[66504,66511],"valid"],[[66512,66517],"valid",[],"NV8"],[[66518,66559],"disallowed"],[[66560,66560],"mapped",[66600]],[[66561,66561],"mapped",[66601]],[[66562,66562],"mapped",[66602]],[[66563,66563],"mapped",[66603]],[[66564,66564],"mapped",[66604]],[[66565,66565],"mapped",[66605]],[[66566,66566],"mapped",[66606]],[[66567,66567],"mapped",[66607]],[[66568,66568],"mapped",[66608]],[[66569,66569],"mapped",[66609]],[[66570,66570],"mapped",[66610]],[[66571,66571],"mapped",[66611]],[[66572,66572],"mapped",[66612]],[[66573,66573],"mapped",[66613]],[[66574,66574],"mapped",[66614]],[[66575,66575],"mapped",[66615]],[[66576,66576],"mapped",[66616]],[[66577,66577],"mapped",[66617]],[[66578,66578],"mapped",[66618]],[[66579,66579],"mapped",[66619]],[[66580,66580],"mapped",[66620]],[[66581,66581],"mapped",[66621]],[[66582,66582],"mapped",[66622]],[[66583,66583],"mapped",[66623]],[[66584,66584],"mapped",[66624]],[[66585,66585],"mapped",[66625]],[[66586,66586],"mapped",[66626]],[[66587,66587],"mapped",[66627]],[[66588,66588],"mapped",[66628]],[[66589,66589],"mapped",[66629]],[[66590,66590],"mapped",[66630]],[[66591,66591],"mapped",[66631]],[[66592,66592],"mapped",[66632]],[[66593,66593],"mapped",[66633]],[[66594,66594],"mapped",[66634]],[[66595,66595],"mapped",[66635]],[[66596,66596],"mapped",[66636]],[[66597,66597],"mapped",[66637]],[[66598,66598],"mapped",[66638]],[[66599,66599],"mapped",[66639]],[[66600,66637],"valid"],[[66638,66717],"valid"],[[66718,66719],"disallowed"],[[66720,66729],"valid"],[[66730,66815],"disallowed"],[[66816,66855],"valid"],[[66856,66863],"disallowed"],[[66864,66915],"valid"],[[66916,66926],"disallowed"],[[66927,66927],"valid",[],"NV8"],[[66928,67071],"disallowed"],[[67072,67382],"valid"],[[67383,67391],"disallowed"],[[67392,67413],"valid"],[[67414,67423],"disallowed"],[[67424,67431],"valid"],[[67432,67583],"disallowed"],[[67584,67589],"valid"],[[67590,67591],"disallowed"],[[67592,67592],"valid"],[[67593,67593],"disallowed"],[[67594,67637],"valid"],[[67638,67638],"disallowed"],[[67639,67640],"valid"],[[67641,67643],"disallowed"],[[67644,67644],"valid"],[[67645,67646],"disallowed"],[[67647,67647],"valid"],[[67648,67669],"valid"],[[67670,67670],"disallowed"],[[67671,67679],"valid",[],"NV8"],[[67680,67702],"valid"],[[67703,67711],"valid",[],"NV8"],[[67712,67742],"valid"],[[67743,67750],"disallowed"],[[67751,67759],"valid",[],"NV8"],[[67760,67807],"disallowed"],[[67808,67826],"valid"],[[67827,67827],"disallowed"],[[67828,67829],"valid"],[[67830,67834],"disallowed"],[[67835,67839],"valid",[],"NV8"],[[67840,67861],"valid"],[[67862,67865],"valid",[],"NV8"],[[67866,67867],"valid",[],"NV8"],[[67868,67870],"disallowed"],[[67871,67871],"valid",[],"NV8"],[[67872,67897],"valid"],[[67898,67902],"disallowed"],[[67903,67903],"valid",[],"NV8"],[[67904,67967],"disallowed"],[[67968,68023],"valid"],[[68024,68027],"disallowed"],[[68028,68029],"valid",[],"NV8"],[[68030,68031],"valid"],[[68032,68047],"valid",[],"NV8"],[[68048,68049],"disallowed"],[[68050,68095],"valid",[],"NV8"],[[68096,68099],"valid"],[[68100,68100],"disallowed"],[[68101,68102],"valid"],[[68103,68107],"disallowed"],[[68108,68115],"valid"],[[68116,68116],"disallowed"],[[68117,68119],"valid"],[[68120,68120],"disallowed"],[[68121,68147],"valid"],[[68148,68151],"disallowed"],[[68152,68154],"valid"],[[68155,68158],"disallowed"],[[68159,68159],"valid"],[[68160,68167],"valid",[],"NV8"],[[68168,68175],"disallowed"],[[68176,68184],"valid",[],"NV8"],[[68185,68191],"disallowed"],[[68192,68220],"valid"],[[68221,68223],"valid",[],"NV8"],[[68224,68252],"valid"],[[68253,68255],"valid",[],"NV8"],[[68256,68287],"disallowed"],[[68288,68295],"valid"],[[68296,68296],"valid",[],"NV8"],[[68297,68326],"valid"],[[68327,68330],"disallowed"],[[68331,68342],"valid",[],"NV8"],[[68343,68351],"disallowed"],[[68352,68405],"valid"],[[68406,68408],"disallowed"],[[68409,68415],"valid",[],"NV8"],[[68416,68437],"valid"],[[68438,68439],"disallowed"],[[68440,68447],"valid",[],"NV8"],[[68448,68466],"valid"],[[68467,68471],"disallowed"],[[68472,68479],"valid",[],"NV8"],[[68480,68497],"valid"],[[68498,68504],"disallowed"],[[68505,68508],"valid",[],"NV8"],[[68509,68520],"disallowed"],[[68521,68527],"valid",[],"NV8"],[[68528,68607],"disallowed"],[[68608,68680],"valid"],[[68681,68735],"disallowed"],[[68736,68736],"mapped",[68800]],[[68737,68737],"mapped",[68801]],[[68738,68738],"mapped",[68802]],[[68739,68739],"mapped",[68803]],[[68740,68740],"mapped",[68804]],[[68741,68741],"mapped",[68805]],[[68742,68742],"mapped",[68806]],[[68743,68743],"mapped",[68807]],[[68744,68744],"mapped",[68808]],[[68745,68745],"mapped",[68809]],[[68746,68746],"mapped",[68810]],[[68747,68747],"mapped",[68811]],[[68748,68748],"mapped",[68812]],[[68749,68749],"mapped",[68813]],[[68750,68750],"mapped",[68814]],[[68751,68751],"mapped",[68815]],[[68752,68752],"mapped",[68816]],[[68753,68753],"mapped",[68817]],[[68754,68754],"mapped",[68818]],[[68755,68755],"mapped",[68819]],[[68756,68756],"mapped",[68820]],[[68757,68757],"mapped",[68821]],[[68758,68758],"mapped",[68822]],[[68759,68759],"mapped",[68823]],[[68760,68760],"mapped",[68824]],[[68761,68761],"mapped",[68825]],[[68762,68762],"mapped",[68826]],[[68763,68763],"mapped",[68827]],[[68764,68764],"mapped",[68828]],[[68765,68765],"mapped",[68829]],[[68766,68766],"mapped",[68830]],[[68767,68767],"mapped",[68831]],[[68768,68768],"mapped",[68832]],[[68769,68769],"mapped",[68833]],[[68770,68770],"mapped",[68834]],[[68771,68771],"mapped",[68835]],[[68772,68772],"mapped",[68836]],[[68773,68773],"mapped",[68837]],[[68774,68774],"mapped",[68838]],[[68775,68775],"mapped",[68839]],[[68776,68776],"mapped",[68840]],[[68777,68777],"mapped",[68841]],[[68778,68778],"mapped",[68842]],[[68779,68779],"mapped",[68843]],[[68780,68780],"mapped",[68844]],[[68781,68781],"mapped",[68845]],[[68782,68782],"mapped",[68846]],[[68783,68783],"mapped",[68847]],[[68784,68784],"mapped",[68848]],[[68785,68785],"mapped",[68849]],[[68786,68786],"mapped",[68850]],[[68787,68799],"disallowed"],[[68800,68850],"valid"],[[68851,68857],"disallowed"],[[68858,68863],"valid",[],"NV8"],[[68864,69215],"disallowed"],[[69216,69246],"valid",[],"NV8"],[[69247,69631],"disallowed"],[[69632,69702],"valid"],[[69703,69709],"valid",[],"NV8"],[[69710,69713],"disallowed"],[[69714,69733],"valid",[],"NV8"],[[69734,69743],"valid"],[[69744,69758],"disallowed"],[[69759,69759],"valid"],[[69760,69818],"valid"],[[69819,69820],"valid",[],"NV8"],[[69821,69821],"disallowed"],[[69822,69825],"valid",[],"NV8"],[[69826,69839],"disallowed"],[[69840,69864],"valid"],[[69865,69871],"disallowed"],[[69872,69881],"valid"],[[69882,69887],"disallowed"],[[69888,69940],"valid"],[[69941,69941],"disallowed"],[[69942,69951],"valid"],[[69952,69955],"valid",[],"NV8"],[[69956,69967],"disallowed"],[[69968,70003],"valid"],[[70004,70005],"valid",[],"NV8"],[[70006,70006],"valid"],[[70007,70015],"disallowed"],[[70016,70084],"valid"],[[70085,70088],"valid",[],"NV8"],[[70089,70089],"valid",[],"NV8"],[[70090,70092],"valid"],[[70093,70093],"valid",[],"NV8"],[[70094,70095],"disallowed"],[[70096,70105],"valid"],[[70106,70106],"valid"],[[70107,70107],"valid",[],"NV8"],[[70108,70108],"valid"],[[70109,70111],"valid",[],"NV8"],[[70112,70112],"disallowed"],[[70113,70132],"valid",[],"NV8"],[[70133,70143],"disallowed"],[[70144,70161],"valid"],[[70162,70162],"disallowed"],[[70163,70199],"valid"],[[70200,70205],"valid",[],"NV8"],[[70206,70271],"disallowed"],[[70272,70278],"valid"],[[70279,70279],"disallowed"],[[70280,70280],"valid"],[[70281,70281],"disallowed"],[[70282,70285],"valid"],[[70286,70286],"disallowed"],[[70287,70301],"valid"],[[70302,70302],"disallowed"],[[70303,70312],"valid"],[[70313,70313],"valid",[],"NV8"],[[70314,70319],"disallowed"],[[70320,70378],"valid"],[[70379,70383],"disallowed"],[[70384,70393],"valid"],[[70394,70399],"disallowed"],[[70400,70400],"valid"],[[70401,70403],"valid"],[[70404,70404],"disallowed"],[[70405,70412],"valid"],[[70413,70414],"disallowed"],[[70415,70416],"valid"],[[70417,70418],"disallowed"],[[70419,70440],"valid"],[[70441,70441],"disallowed"],[[70442,70448],"valid"],[[70449,70449],"disallowed"],[[70450,70451],"valid"],[[70452,70452],"disallowed"],[[70453,70457],"valid"],[[70458,70459],"disallowed"],[[70460,70468],"valid"],[[70469,70470],"disallowed"],[[70471,70472],"valid"],[[70473,70474],"disallowed"],[[70475,70477],"valid"],[[70478,70479],"disallowed"],[[70480,70480],"valid"],[[70481,70486],"disallowed"],[[70487,70487],"valid"],[[70488,70492],"disallowed"],[[70493,70499],"valid"],[[70500,70501],"disallowed"],[[70502,70508],"valid"],[[70509,70511],"disallowed"],[[70512,70516],"valid"],[[70517,70783],"disallowed"],[[70784,70853],"valid"],[[70854,70854],"valid",[],"NV8"],[[70855,70855],"valid"],[[70856,70863],"disallowed"],[[70864,70873],"valid"],[[70874,71039],"disallowed"],[[71040,71093],"valid"],[[71094,71095],"disallowed"],[[71096,71104],"valid"],[[71105,71113],"valid",[],"NV8"],[[71114,71127],"valid",[],"NV8"],[[71128,71133],"valid"],[[71134,71167],"disallowed"],[[71168,71232],"valid"],[[71233,71235],"valid",[],"NV8"],[[71236,71236],"valid"],[[71237,71247],"disallowed"],[[71248,71257],"valid"],[[71258,71295],"disallowed"],[[71296,71351],"valid"],[[71352,71359],"disallowed"],[[71360,71369],"valid"],[[71370,71423],"disallowed"],[[71424,71449],"valid"],[[71450,71452],"disallowed"],[[71453,71467],"valid"],[[71468,71471],"disallowed"],[[71472,71481],"valid"],[[71482,71487],"valid",[],"NV8"],[[71488,71839],"disallowed"],[[71840,71840],"mapped",[71872]],[[71841,71841],"mapped",[71873]],[[71842,71842],"mapped",[71874]],[[71843,71843],"mapped",[71875]],[[71844,71844],"mapped",[71876]],[[71845,71845],"mapped",[71877]],[[71846,71846],"mapped",[71878]],[[71847,71847],"mapped",[71879]],[[71848,71848],"mapped",[71880]],[[71849,71849],"mapped",[71881]],[[71850,71850],"mapped",[71882]],[[71851,71851],"mapped",[71883]],[[71852,71852],"mapped",[71884]],[[71853,71853],"mapped",[71885]],[[71854,71854],"mapped",[71886]],[[71855,71855],"mapped",[71887]],[[71856,71856],"mapped",[71888]],[[71857,71857],"mapped",[71889]],[[71858,71858],"mapped",[71890]],[[71859,71859],"mapped",[71891]],[[71860,71860],"mapped",[71892]],[[71861,71861],"mapped",[71893]],[[71862,71862],"mapped",[71894]],[[71863,71863],"mapped",[71895]],[[71864,71864],"mapped",[71896]],[[71865,71865],"mapped",[71897]],[[71866,71866],"mapped",[71898]],[[71867,71867],"mapped",[71899]],[[71868,71868],"mapped",[71900]],[[71869,71869],"mapped",[71901]],[[71870,71870],"mapped",[71902]],[[71871,71871],"mapped",[71903]],[[71872,71913],"valid"],[[71914,71922],"valid",[],"NV8"],[[71923,71934],"disallowed"],[[71935,71935],"valid"],[[71936,72383],"disallowed"],[[72384,72440],"valid"],[[72441,73727],"disallowed"],[[73728,74606],"valid"],[[74607,74648],"valid"],[[74649,74649],"valid"],[[74650,74751],"disallowed"],[[74752,74850],"valid",[],"NV8"],[[74851,74862],"valid",[],"NV8"],[[74863,74863],"disallowed"],[[74864,74867],"valid",[],"NV8"],[[74868,74868],"valid",[],"NV8"],[[74869,74879],"disallowed"],[[74880,75075],"valid"],[[75076,77823],"disallowed"],[[77824,78894],"valid"],[[78895,82943],"disallowed"],[[82944,83526],"valid"],[[83527,92159],"disallowed"],[[92160,92728],"valid"],[[92729,92735],"disallowed"],[[92736,92766],"valid"],[[92767,92767],"disallowed"],[[92768,92777],"valid"],[[92778,92781],"disallowed"],[[92782,92783],"valid",[],"NV8"],[[92784,92879],"disallowed"],[[92880,92909],"valid"],[[92910,92911],"disallowed"],[[92912,92916],"valid"],[[92917,92917],"valid",[],"NV8"],[[92918,92927],"disallowed"],[[92928,92982],"valid"],[[92983,92991],"valid",[],"NV8"],[[92992,92995],"valid"],[[92996,92997],"valid",[],"NV8"],[[92998,93007],"disallowed"],[[93008,93017],"valid"],[[93018,93018],"disallowed"],[[93019,93025],"valid",[],"NV8"],[[93026,93026],"disallowed"],[[93027,93047],"valid"],[[93048,93052],"disallowed"],[[93053,93071],"valid"],[[93072,93951],"disallowed"],[[93952,94020],"valid"],[[94021,94031],"disallowed"],[[94032,94078],"valid"],[[94079,94094],"disallowed"],[[94095,94111],"valid"],[[94112,110591],"disallowed"],[[110592,110593],"valid"],[[110594,113663],"disallowed"],[[113664,113770],"valid"],[[113771,113775],"disallowed"],[[113776,113788],"valid"],[[113789,113791],"disallowed"],[[113792,113800],"valid"],[[113801,113807],"disallowed"],[[113808,113817],"valid"],[[113818,113819],"disallowed"],[[113820,113820],"valid",[],"NV8"],[[113821,113822],"valid"],[[113823,113823],"valid",[],"NV8"],[[113824,113827],"ignored"],[[113828,118783],"disallowed"],[[118784,119029],"valid",[],"NV8"],[[119030,119039],"disallowed"],[[119040,119078],"valid",[],"NV8"],[[119079,119080],"disallowed"],[[119081,119081],"valid",[],"NV8"],[[119082,119133],"valid",[],"NV8"],[[119134,119134],"mapped",[119127,119141]],[[119135,119135],"mapped",[119128,119141]],[[119136,119136],"mapped",[119128,119141,119150]],[[119137,119137],"mapped",[119128,119141,119151]],[[119138,119138],"mapped",[119128,119141,119152]],[[119139,119139],"mapped",[119128,119141,119153]],[[119140,119140],"mapped",[119128,119141,119154]],[[119141,119154],"valid",[],"NV8"],[[119155,119162],"disallowed"],[[119163,119226],"valid",[],"NV8"],[[119227,119227],"mapped",[119225,119141]],[[119228,119228],"mapped",[119226,119141]],[[119229,119229],"mapped",[119225,119141,119150]],[[119230,119230],"mapped",[119226,119141,119150]],[[119231,119231],"mapped",[119225,119141,119151]],[[119232,119232],"mapped",[119226,119141,119151]],[[119233,119261],"valid",[],"NV8"],[[119262,119272],"valid",[],"NV8"],[[119273,119295],"disallowed"],[[119296,119365],"valid",[],"NV8"],[[119366,119551],"disallowed"],[[119552,119638],"valid",[],"NV8"],[[119639,119647],"disallowed"],[[119648,119665],"valid",[],"NV8"],[[119666,119807],"disallowed"],[[119808,119808],"mapped",[97]],[[119809,119809],"mapped",[98]],[[119810,119810],"mapped",[99]],[[119811,119811],"mapped",[100]],[[119812,119812],"mapped",[101]],[[119813,119813],"mapped",[102]],[[119814,119814],"mapped",[103]],[[119815,119815],"mapped",[104]],[[119816,119816],"mapped",[105]],[[119817,119817],"mapped",[106]],[[119818,119818],"mapped",[107]],[[119819,119819],"mapped",[108]],[[119820,119820],"mapped",[109]],[[119821,119821],"mapped",[110]],[[119822,119822],"mapped",[111]],[[119823,119823],"mapped",[112]],[[119824,119824],"mapped",[113]],[[119825,119825],"mapped",[114]],[[119826,119826],"mapped",[115]],[[119827,119827],"mapped",[116]],[[119828,119828],"mapped",[117]],[[119829,119829],"mapped",[118]],[[119830,119830],"mapped",[119]],[[119831,119831],"mapped",[120]],[[119832,119832],"mapped",[121]],[[119833,119833],"mapped",[122]],[[119834,119834],"mapped",[97]],[[119835,119835],"mapped",[98]],[[119836,119836],"mapped",[99]],[[119837,119837],"mapped",[100]],[[119838,119838],"mapped",[101]],[[119839,119839],"mapped",[102]],[[119840,119840],"mapped",[103]],[[119841,119841],"mapped",[104]],[[119842,119842],"mapped",[105]],[[119843,119843],"mapped",[106]],[[119844,119844],"mapped",[107]],[[119845,119845],"mapped",[108]],[[119846,119846],"mapped",[109]],[[119847,119847],"mapped",[110]],[[119848,119848],"mapped",[111]],[[119849,119849],"mapped",[112]],[[119850,119850],"mapped",[113]],[[119851,119851],"mapped",[114]],[[119852,119852],"mapped",[115]],[[119853,119853],"mapped",[116]],[[119854,119854],"mapped",[117]],[[119855,119855],"mapped",[118]],[[119856,119856],"mapped",[119]],[[119857,119857],"mapped",[120]],[[119858,119858],"mapped",[121]],[[119859,119859],"mapped",[122]],[[119860,119860],"mapped",[97]],[[119861,119861],"mapped",[98]],[[119862,119862],"mapped",[99]],[[119863,119863],"mapped",[100]],[[119864,119864],"mapped",[101]],[[119865,119865],"mapped",[102]],[[119866,119866],"mapped",[103]],[[119867,119867],"mapped",[104]],[[119868,119868],"mapped",[105]],[[119869,119869],"mapped",[106]],[[119870,119870],"mapped",[107]],[[119871,119871],"mapped",[108]],[[119872,119872],"mapped",[109]],[[119873,119873],"mapped",[110]],[[119874,119874],"mapped",[111]],[[119875,119875],"mapped",[112]],[[119876,119876],"mapped",[113]],[[119877,119877],"mapped",[114]],[[119878,119878],"mapped",[115]],[[119879,119879],"mapped",[116]],[[119880,119880],"mapped",[117]],[[119881,119881],"mapped",[118]],[[119882,119882],"mapped",[119]],[[119883,119883],"mapped",[120]],[[119884,119884],"mapped",[121]],[[119885,119885],"mapped",[122]],[[119886,119886],"mapped",[97]],[[119887,119887],"mapped",[98]],[[119888,119888],"mapped",[99]],[[119889,119889],"mapped",[100]],[[119890,119890],"mapped",[101]],[[119891,119891],"mapped",[102]],[[119892,119892],"mapped",[103]],[[119893,119893],"disallowed"],[[119894,119894],"mapped",[105]],[[119895,119895],"mapped",[106]],[[119896,119896],"mapped",[107]],[[119897,119897],"mapped",[108]],[[119898,119898],"mapped",[109]],[[119899,119899],"mapped",[110]],[[119900,119900],"mapped",[111]],[[119901,119901],"mapped",[112]],[[119902,119902],"mapped",[113]],[[119903,119903],"mapped",[114]],[[119904,119904],"mapped",[115]],[[119905,119905],"mapped",[116]],[[119906,119906],"mapped",[117]],[[119907,119907],"mapped",[118]],[[119908,119908],"mapped",[119]],[[119909,119909],"mapped",[120]],[[119910,119910],"mapped",[121]],[[119911,119911],"mapped",[122]],[[119912,119912],"mapped",[97]],[[119913,119913],"mapped",[98]],[[119914,119914],"mapped",[99]],[[119915,119915],"mapped",[100]],[[119916,119916],"mapped",[101]],[[119917,119917],"mapped",[102]],[[119918,119918],"mapped",[103]],[[119919,119919],"mapped",[104]],[[119920,119920],"mapped",[105]],[[119921,119921],"mapped",[106]],[[119922,119922],"mapped",[107]],[[119923,119923],"mapped",[108]],[[119924,119924],"mapped",[109]],[[119925,119925],"mapped",[110]],[[119926,119926],"mapped",[111]],[[119927,119927],"mapped",[112]],[[119928,119928],"mapped",[113]],[[119929,119929],"mapped",[114]],[[119930,119930],"mapped",[115]],[[119931,119931],"mapped",[116]],[[119932,119932],"mapped",[117]],[[119933,119933],"mapped",[118]],[[119934,119934],"mapped",[119]],[[119935,119935],"mapped",[120]],[[119936,119936],"mapped",[121]],[[119937,119937],"mapped",[122]],[[119938,119938],"mapped",[97]],[[119939,119939],"mapped",[98]],[[119940,119940],"mapped",[99]],[[119941,119941],"mapped",[100]],[[119942,119942],"mapped",[101]],[[119943,119943],"mapped",[102]],[[119944,119944],"mapped",[103]],[[119945,119945],"mapped",[104]],[[119946,119946],"mapped",[105]],[[119947,119947],"mapped",[106]],[[119948,119948],"mapped",[107]],[[119949,119949],"mapped",[108]],[[119950,119950],"mapped",[109]],[[119951,119951],"mapped",[110]],[[119952,119952],"mapped",[111]],[[119953,119953],"mapped",[112]],[[119954,119954],"mapped",[113]],[[119955,119955],"mapped",[114]],[[119956,119956],"mapped",[115]],[[119957,119957],"mapped",[116]],[[119958,119958],"mapped",[117]],[[119959,119959],"mapped",[118]],[[119960,119960],"mapped",[119]],[[119961,119961],"mapped",[120]],[[119962,119962],"mapped",[121]],[[119963,119963],"mapped",[122]],[[119964,119964],"mapped",[97]],[[119965,119965],"disallowed"],[[119966,119966],"mapped",[99]],[[119967,119967],"mapped",[100]],[[119968,119969],"disallowed"],[[119970,119970],"mapped",[103]],[[119971,119972],"disallowed"],[[119973,119973],"mapped",[106]],[[119974,119974],"mapped",[107]],[[119975,119976],"disallowed"],[[119977,119977],"mapped",[110]],[[119978,119978],"mapped",[111]],[[119979,119979],"mapped",[112]],[[119980,119980],"mapped",[113]],[[119981,119981],"disallowed"],[[119982,119982],"mapped",[115]],[[119983,119983],"mapped",[116]],[[119984,119984],"mapped",[117]],[[119985,119985],"mapped",[118]],[[119986,119986],"mapped",[119]],[[119987,119987],"mapped",[120]],[[119988,119988],"mapped",[121]],[[119989,119989],"mapped",[122]],[[119990,119990],"mapped",[97]],[[119991,119991],"mapped",[98]],[[119992,119992],"mapped",[99]],[[119993,119993],"mapped",[100]],[[119994,119994],"disallowed"],[[119995,119995],"mapped",[102]],[[119996,119996],"disallowed"],[[119997,119997],"mapped",[104]],[[119998,119998],"mapped",[105]],[[119999,119999],"mapped",[106]],[[12e4,12e4],"mapped",[107]],[[120001,120001],"mapped",[108]],[[120002,120002],"mapped",[109]],[[120003,120003],"mapped",[110]],[[120004,120004],"disallowed"],[[120005,120005],"mapped",[112]],[[120006,120006],"mapped",[113]],[[120007,120007],"mapped",[114]],[[120008,120008],"mapped",[115]],[[120009,120009],"mapped",[116]],[[120010,120010],"mapped",[117]],[[120011,120011],"mapped",[118]],[[120012,120012],"mapped",[119]],[[120013,120013],"mapped",[120]],[[120014,120014],"mapped",[121]],[[120015,120015],"mapped",[122]],[[120016,120016],"mapped",[97]],[[120017,120017],"mapped",[98]],[[120018,120018],"mapped",[99]],[[120019,120019],"mapped",[100]],[[120020,120020],"mapped",[101]],[[120021,120021],"mapped",[102]],[[120022,120022],"mapped",[103]],[[120023,120023],"mapped",[104]],[[120024,120024],"mapped",[105]],[[120025,120025],"mapped",[106]],[[120026,120026],"mapped",[107]],[[120027,120027],"mapped",[108]],[[120028,120028],"mapped",[109]],[[120029,120029],"mapped",[110]],[[120030,120030],"mapped",[111]],[[120031,120031],"mapped",[112]],[[120032,120032],"mapped",[113]],[[120033,120033],"mapped",[114]],[[120034,120034],"mapped",[115]],[[120035,120035],"mapped",[116]],[[120036,120036],"mapped",[117]],[[120037,120037],"mapped",[118]],[[120038,120038],"mapped",[119]],[[120039,120039],"mapped",[120]],[[120040,120040],"mapped",[121]],[[120041,120041],"mapped",[122]],[[120042,120042],"mapped",[97]],[[120043,120043],"mapped",[98]],[[120044,120044],"mapped",[99]],[[120045,120045],"mapped",[100]],[[120046,120046],"mapped",[101]],[[120047,120047],"mapped",[102]],[[120048,120048],"mapped",[103]],[[120049,120049],"mapped",[104]],[[120050,120050],"mapped",[105]],[[120051,120051],"mapped",[106]],[[120052,120052],"mapped",[107]],[[120053,120053],"mapped",[108]],[[120054,120054],"mapped",[109]],[[120055,120055],"mapped",[110]],[[120056,120056],"mapped",[111]],[[120057,120057],"mapped",[112]],[[120058,120058],"mapped",[113]],[[120059,120059],"mapped",[114]],[[120060,120060],"mapped",[115]],[[120061,120061],"mapped",[116]],[[120062,120062],"mapped",[117]],[[120063,120063],"mapped",[118]],[[120064,120064],"mapped",[119]],[[120065,120065],"mapped",[120]],[[120066,120066],"mapped",[121]],[[120067,120067],"mapped",[122]],[[120068,120068],"mapped",[97]],[[120069,120069],"mapped",[98]],[[120070,120070],"disallowed"],[[120071,120071],"mapped",[100]],[[120072,120072],"mapped",[101]],[[120073,120073],"mapped",[102]],[[120074,120074],"mapped",[103]],[[120075,120076],"disallowed"],[[120077,120077],"mapped",[106]],[[120078,120078],"mapped",[107]],[[120079,120079],"mapped",[108]],[[120080,120080],"mapped",[109]],[[120081,120081],"mapped",[110]],[[120082,120082],"mapped",[111]],[[120083,120083],"mapped",[112]],[[120084,120084],"mapped",[113]],[[120085,120085],"disallowed"],[[120086,120086],"mapped",[115]],[[120087,120087],"mapped",[116]],[[120088,120088],"mapped",[117]],[[120089,120089],"mapped",[118]],[[120090,120090],"mapped",[119]],[[120091,120091],"mapped",[120]],[[120092,120092],"mapped",[121]],[[120093,120093],"disallowed"],[[120094,120094],"mapped",[97]],[[120095,120095],"mapped",[98]],[[120096,120096],"mapped",[99]],[[120097,120097],"mapped",[100]],[[120098,120098],"mapped",[101]],[[120099,120099],"mapped",[102]],[[120100,120100],"mapped",[103]],[[120101,120101],"mapped",[104]],[[120102,120102],"mapped",[105]],[[120103,120103],"mapped",[106]],[[120104,120104],"mapped",[107]],[[120105,120105],"mapped",[108]],[[120106,120106],"mapped",[109]],[[120107,120107],"mapped",[110]],[[120108,120108],"mapped",[111]],[[120109,120109],"mapped",[112]],[[120110,120110],"mapped",[113]],[[120111,120111],"mapped",[114]],[[120112,120112],"mapped",[115]],[[120113,120113],"mapped",[116]],[[120114,120114],"mapped",[117]],[[120115,120115],"mapped",[118]],[[120116,120116],"mapped",[119]],[[120117,120117],"mapped",[120]],[[120118,120118],"mapped",[121]],[[120119,120119],"mapped",[122]],[[120120,120120],"mapped",[97]],[[120121,120121],"mapped",[98]],[[120122,120122],"disallowed"],[[120123,120123],"mapped",[100]],[[120124,120124],"mapped",[101]],[[120125,120125],"mapped",[102]],[[120126,120126],"mapped",[103]],[[120127,120127],"disallowed"],[[120128,120128],"mapped",[105]],[[120129,120129],"mapped",[106]],[[120130,120130],"mapped",[107]],[[120131,120131],"mapped",[108]],[[120132,120132],"mapped",[109]],[[120133,120133],"disallowed"],[[120134,120134],"mapped",[111]],[[120135,120137],"disallowed"],[[120138,120138],"mapped",[115]],[[120139,120139],"mapped",[116]],[[120140,120140],"mapped",[117]],[[120141,120141],"mapped",[118]],[[120142,120142],"mapped",[119]],[[120143,120143],"mapped",[120]],[[120144,120144],"mapped",[121]],[[120145,120145],"disallowed"],[[120146,120146],"mapped",[97]],[[120147,120147],"mapped",[98]],[[120148,120148],"mapped",[99]],[[120149,120149],"mapped",[100]],[[120150,120150],"mapped",[101]],[[120151,120151],"mapped",[102]],[[120152,120152],"mapped",[103]],[[120153,120153],"mapped",[104]],[[120154,120154],"mapped",[105]],[[120155,120155],"mapped",[106]],[[120156,120156],"mapped",[107]],[[120157,120157],"mapped",[108]],[[120158,120158],"mapped",[109]],[[120159,120159],"mapped",[110]],[[120160,120160],"mapped",[111]],[[120161,120161],"mapped",[112]],[[120162,120162],"mapped",[113]],[[120163,120163],"mapped",[114]],[[120164,120164],"mapped",[115]],[[120165,120165],"mapped",[116]],[[120166,120166],"mapped",[117]],[[120167,120167],"mapped",[118]],[[120168,120168],"mapped",[119]],[[120169,120169],"mapped",[120]],[[120170,120170],"mapped",[121]],[[120171,120171],"mapped",[122]],[[120172,120172],"mapped",[97]],[[120173,120173],"mapped",[98]],[[120174,120174],"mapped",[99]],[[120175,120175],"mapped",[100]],[[120176,120176],"mapped",[101]],[[120177,120177],"mapped",[102]],[[120178,120178],"mapped",[103]],[[120179,120179],"mapped",[104]],[[120180,120180],"mapped",[105]],[[120181,120181],"mapped",[106]],[[120182,120182],"mapped",[107]],[[120183,120183],"mapped",[108]],[[120184,120184],"mapped",[109]],[[120185,120185],"mapped",[110]],[[120186,120186],"mapped",[111]],[[120187,120187],"mapped",[112]],[[120188,120188],"mapped",[113]],[[120189,120189],"mapped",[114]],[[120190,120190],"mapped",[115]],[[120191,120191],"mapped",[116]],[[120192,120192],"mapped",[117]],[[120193,120193],"mapped",[118]],[[120194,120194],"mapped",[119]],[[120195,120195],"mapped",[120]],[[120196,120196],"mapped",[121]],[[120197,120197],"mapped",[122]],[[120198,120198],"mapped",[97]],[[120199,120199],"mapped",[98]],[[120200,120200],"mapped",[99]],[[120201,120201],"mapped",[100]],[[120202,120202],"mapped",[101]],[[120203,120203],"mapped",[102]],[[120204,120204],"mapped",[103]],[[120205,120205],"mapped",[104]],[[120206,120206],"mapped",[105]],[[120207,120207],"mapped",[106]],[[120208,120208],"mapped",[107]],[[120209,120209],"mapped",[108]],[[120210,120210],"mapped",[109]],[[120211,120211],"mapped",[110]],[[120212,120212],"mapped",[111]],[[120213,120213],"mapped",[112]],[[120214,120214],"mapped",[113]],[[120215,120215],"mapped",[114]],[[120216,120216],"mapped",[115]],[[120217,120217],"mapped",[116]],[[120218,120218],"mapped",[117]],[[120219,120219],"mapped",[118]],[[120220,120220],"mapped",[119]],[[120221,120221],"mapped",[120]],[[120222,120222],"mapped",[121]],[[120223,120223],"mapped",[122]],[[120224,120224],"mapped",[97]],[[120225,120225],"mapped",[98]],[[120226,120226],"mapped",[99]],[[120227,120227],"mapped",[100]],[[120228,120228],"mapped",[101]],[[120229,120229],"mapped",[102]],[[120230,120230],"mapped",[103]],[[120231,120231],"mapped",[104]],[[120232,120232],"mapped",[105]],[[120233,120233],"mapped",[106]],[[120234,120234],"mapped",[107]],[[120235,120235],"mapped",[108]],[[120236,120236],"mapped",[109]],[[120237,120237],"mapped",[110]],[[120238,120238],"mapped",[111]],[[120239,120239],"mapped",[112]],[[120240,120240],"mapped",[113]],[[120241,120241],"mapped",[114]],[[120242,120242],"mapped",[115]],[[120243,120243],"mapped",[116]],[[120244,120244],"mapped",[117]],[[120245,120245],"mapped",[118]],[[120246,120246],"mapped",[119]],[[120247,120247],"mapped",[120]],[[120248,120248],"mapped",[121]],[[120249,120249],"mapped",[122]],[[120250,120250],"mapped",[97]],[[120251,120251],"mapped",[98]],[[120252,120252],"mapped",[99]],[[120253,120253],"mapped",[100]],[[120254,120254],"mapped",[101]],[[120255,120255],"mapped",[102]],[[120256,120256],"mapped",[103]],[[120257,120257],"mapped",[104]],[[120258,120258],"mapped",[105]],[[120259,120259],"mapped",[106]],[[120260,120260],"mapped",[107]],[[120261,120261],"mapped",[108]],[[120262,120262],"mapped",[109]],[[120263,120263],"mapped",[110]],[[120264,120264],"mapped",[111]],[[120265,120265],"mapped",[112]],[[120266,120266],"mapped",[113]],[[120267,120267],"mapped",[114]],[[120268,120268],"mapped",[115]],[[120269,120269],"mapped",[116]],[[120270,120270],"mapped",[117]],[[120271,120271],"mapped",[118]],[[120272,120272],"mapped",[119]],[[120273,120273],"mapped",[120]],[[120274,120274],"mapped",[121]],[[120275,120275],"mapped",[122]],[[120276,120276],"mapped",[97]],[[120277,120277],"mapped",[98]],[[120278,120278],"mapped",[99]],[[120279,120279],"mapped",[100]],[[120280,120280],"mapped",[101]],[[120281,120281],"mapped",[102]],[[120282,120282],"mapped",[103]],[[120283,120283],"mapped",[104]],[[120284,120284],"mapped",[105]],[[120285,120285],"mapped",[106]],[[120286,120286],"mapped",[107]],[[120287,120287],"mapped",[108]],[[120288,120288],"mapped",[109]],[[120289,120289],"mapped",[110]],[[120290,120290],"mapped",[111]],[[120291,120291],"mapped",[112]],[[120292,120292],"mapped",[113]],[[120293,120293],"mapped",[114]],[[120294,120294],"mapped",[115]],[[120295,120295],"mapped",[116]],[[120296,120296],"mapped",[117]],[[120297,120297],"mapped",[118]],[[120298,120298],"mapped",[119]],[[120299,120299],"mapped",[120]],[[120300,120300],"mapped",[121]],[[120301,120301],"mapped",[122]],[[120302,120302],"mapped",[97]],[[120303,120303],"mapped",[98]],[[120304,120304],"mapped",[99]],[[120305,120305],"mapped",[100]],[[120306,120306],"mapped",[101]],[[120307,120307],"mapped",[102]],[[120308,120308],"mapped",[103]],[[120309,120309],"mapped",[104]],[[120310,120310],"mapped",[105]],[[120311,120311],"mapped",[106]],[[120312,120312],"mapped",[107]],[[120313,120313],"mapped",[108]],[[120314,120314],"mapped",[109]],[[120315,120315],"mapped",[110]],[[120316,120316],"mapped",[111]],[[120317,120317],"mapped",[112]],[[120318,120318],"mapped",[113]],[[120319,120319],"mapped",[114]],[[120320,120320],"mapped",[115]],[[120321,120321],"mapped",[116]],[[120322,120322],"mapped",[117]],[[120323,120323],"mapped",[118]],[[120324,120324],"mapped",[119]],[[120325,120325],"mapped",[120]],[[120326,120326],"mapped",[121]],[[120327,120327],"mapped",[122]],[[120328,120328],"mapped",[97]],[[120329,120329],"mapped",[98]],[[120330,120330],"mapped",[99]],[[120331,120331],"mapped",[100]],[[120332,120332],"mapped",[101]],[[120333,120333],"mapped",[102]],[[120334,120334],"mapped",[103]],[[120335,120335],"mapped",[104]],[[120336,120336],"mapped",[105]],[[120337,120337],"mapped",[106]],[[120338,120338],"mapped",[107]],[[120339,120339],"mapped",[108]],[[120340,120340],"mapped",[109]],[[120341,120341],"mapped",[110]],[[120342,120342],"mapped",[111]],[[120343,120343],"mapped",[112]],[[120344,120344],"mapped",[113]],[[120345,120345],"mapped",[114]],[[120346,120346],"mapped",[115]],[[120347,120347],"mapped",[116]],[[120348,120348],"mapped",[117]],[[120349,120349],"mapped",[118]],[[120350,120350],"mapped",[119]],[[120351,120351],"mapped",[120]],[[120352,120352],"mapped",[121]],[[120353,120353],"mapped",[122]],[[120354,120354],"mapped",[97]],[[120355,120355],"mapped",[98]],[[120356,120356],"mapped",[99]],[[120357,120357],"mapped",[100]],[[120358,120358],"mapped",[101]],[[120359,120359],"mapped",[102]],[[120360,120360],"mapped",[103]],[[120361,120361],"mapped",[104]],[[120362,120362],"mapped",[105]],[[120363,120363],"mapped",[106]],[[120364,120364],"mapped",[107]],[[120365,120365],"mapped",[108]],[[120366,120366],"mapped",[109]],[[120367,120367],"mapped",[110]],[[120368,120368],"mapped",[111]],[[120369,120369],"mapped",[112]],[[120370,120370],"mapped",[113]],[[120371,120371],"mapped",[114]],[[120372,120372],"mapped",[115]],[[120373,120373],"mapped",[116]],[[120374,120374],"mapped",[117]],[[120375,120375],"mapped",[118]],[[120376,120376],"mapped",[119]],[[120377,120377],"mapped",[120]],[[120378,120378],"mapped",[121]],[[120379,120379],"mapped",[122]],[[120380,120380],"mapped",[97]],[[120381,120381],"mapped",[98]],[[120382,120382],"mapped",[99]],[[120383,120383],"mapped",[100]],[[120384,120384],"mapped",[101]],[[120385,120385],"mapped",[102]],[[120386,120386],"mapped",[103]],[[120387,120387],"mapped",[104]],[[120388,120388],"mapped",[105]],[[120389,120389],"mapped",[106]],[[120390,120390],"mapped",[107]],[[120391,120391],"mapped",[108]],[[120392,120392],"mapped",[109]],[[120393,120393],"mapped",[110]],[[120394,120394],"mapped",[111]],[[120395,120395],"mapped",[112]],[[120396,120396],"mapped",[113]],[[120397,120397],"mapped",[114]],[[120398,120398],"mapped",[115]],[[120399,120399],"mapped",[116]],[[120400,120400],"mapped",[117]],[[120401,120401],"mapped",[118]],[[120402,120402],"mapped",[119]],[[120403,120403],"mapped",[120]],[[120404,120404],"mapped",[121]],[[120405,120405],"mapped",[122]],[[120406,120406],"mapped",[97]],[[120407,120407],"mapped",[98]],[[120408,120408],"mapped",[99]],[[120409,120409],"mapped",[100]],[[120410,120410],"mapped",[101]],[[120411,120411],"mapped",[102]],[[120412,120412],"mapped",[103]],[[120413,120413],"mapped",[104]],[[120414,120414],"mapped",[105]],[[120415,120415],"mapped",[106]],[[120416,120416],"mapped",[107]],[[120417,120417],"mapped",[108]],[[120418,120418],"mapped",[109]],[[120419,120419],"mapped",[110]],[[120420,120420],"mapped",[111]],[[120421,120421],"mapped",[112]],[[120422,120422],"mapped",[113]],[[120423,120423],"mapped",[114]],[[120424,120424],"mapped",[115]],[[120425,120425],"mapped",[116]],[[120426,120426],"mapped",[117]],[[120427,120427],"mapped",[118]],[[120428,120428],"mapped",[119]],[[120429,120429],"mapped",[120]],[[120430,120430],"mapped",[121]],[[120431,120431],"mapped",[122]],[[120432,120432],"mapped",[97]],[[120433,120433],"mapped",[98]],[[120434,120434],"mapped",[99]],[[120435,120435],"mapped",[100]],[[120436,120436],"mapped",[101]],[[120437,120437],"mapped",[102]],[[120438,120438],"mapped",[103]],[[120439,120439],"mapped",[104]],[[120440,120440],"mapped",[105]],[[120441,120441],"mapped",[106]],[[120442,120442],"mapped",[107]],[[120443,120443],"mapped",[108]],[[120444,120444],"mapped",[109]],[[120445,120445],"mapped",[110]],[[120446,120446],"mapped",[111]],[[120447,120447],"mapped",[112]],[[120448,120448],"mapped",[113]],[[120449,120449],"mapped",[114]],[[120450,120450],"mapped",[115]],[[120451,120451],"mapped",[116]],[[120452,120452],"mapped",[117]],[[120453,120453],"mapped",[118]],[[120454,120454],"mapped",[119]],[[120455,120455],"mapped",[120]],[[120456,120456],"mapped",[121]],[[120457,120457],"mapped",[122]],[[120458,120458],"mapped",[97]],[[120459,120459],"mapped",[98]],[[120460,120460],"mapped",[99]],[[120461,120461],"mapped",[100]],[[120462,120462],"mapped",[101]],[[120463,120463],"mapped",[102]],[[120464,120464],"mapped",[103]],[[120465,120465],"mapped",[104]],[[120466,120466],"mapped",[105]],[[120467,120467],"mapped",[106]],[[120468,120468],"mapped",[107]],[[120469,120469],"mapped",[108]],[[120470,120470],"mapped",[109]],[[120471,120471],"mapped",[110]],[[120472,120472],"mapped",[111]],[[120473,120473],"mapped",[112]],[[120474,120474],"mapped",[113]],[[120475,120475],"mapped",[114]],[[120476,120476],"mapped",[115]],[[120477,120477],"mapped",[116]],[[120478,120478],"mapped",[117]],[[120479,120479],"mapped",[118]],[[120480,120480],"mapped",[119]],[[120481,120481],"mapped",[120]],[[120482,120482],"mapped",[121]],[[120483,120483],"mapped",[122]],[[120484,120484],"mapped",[305]],[[120485,120485],"mapped",[567]],[[120486,120487],"disallowed"],[[120488,120488],"mapped",[945]],[[120489,120489],"mapped",[946]],[[120490,120490],"mapped",[947]],[[120491,120491],"mapped",[948]],[[120492,120492],"mapped",[949]],[[120493,120493],"mapped",[950]],[[120494,120494],"mapped",[951]],[[120495,120495],"mapped",[952]],[[120496,120496],"mapped",[953]],[[120497,120497],"mapped",[954]],[[120498,120498],"mapped",[955]],[[120499,120499],"mapped",[956]],[[120500,120500],"mapped",[957]],[[120501,120501],"mapped",[958]],[[120502,120502],"mapped",[959]],[[120503,120503],"mapped",[960]],[[120504,120504],"mapped",[961]],[[120505,120505],"mapped",[952]],[[120506,120506],"mapped",[963]],[[120507,120507],"mapped",[964]],[[120508,120508],"mapped",[965]],[[120509,120509],"mapped",[966]],[[120510,120510],"mapped",[967]],[[120511,120511],"mapped",[968]],[[120512,120512],"mapped",[969]],[[120513,120513],"mapped",[8711]],[[120514,120514],"mapped",[945]],[[120515,120515],"mapped",[946]],[[120516,120516],"mapped",[947]],[[120517,120517],"mapped",[948]],[[120518,120518],"mapped",[949]],[[120519,120519],"mapped",[950]],[[120520,120520],"mapped",[951]],[[120521,120521],"mapped",[952]],[[120522,120522],"mapped",[953]],[[120523,120523],"mapped",[954]],[[120524,120524],"mapped",[955]],[[120525,120525],"mapped",[956]],[[120526,120526],"mapped",[957]],[[120527,120527],"mapped",[958]],[[120528,120528],"mapped",[959]],[[120529,120529],"mapped",[960]],[[120530,120530],"mapped",[961]],[[120531,120532],"mapped",[963]],[[120533,120533],"mapped",[964]],[[120534,120534],"mapped",[965]],[[120535,120535],"mapped",[966]],[[120536,120536],"mapped",[967]],[[120537,120537],"mapped",[968]],[[120538,120538],"mapped",[969]],[[120539,120539],"mapped",[8706]],[[120540,120540],"mapped",[949]],[[120541,120541],"mapped",[952]],[[120542,120542],"mapped",[954]],[[120543,120543],"mapped",[966]],[[120544,120544],"mapped",[961]],[[120545,120545],"mapped",[960]],[[120546,120546],"mapped",[945]],[[120547,120547],"mapped",[946]],[[120548,120548],"mapped",[947]],[[120549,120549],"mapped",[948]],[[120550,120550],"mapped",[949]],[[120551,120551],"mapped",[950]],[[120552,120552],"mapped",[951]],[[120553,120553],"mapped",[952]],[[120554,120554],"mapped",[953]],[[120555,120555],"mapped",[954]],[[120556,120556],"mapped",[955]],[[120557,120557],"mapped",[956]],[[120558,120558],"mapped",[957]],[[120559,120559],"mapped",[958]],[[120560,120560],"mapped",[959]],[[120561,120561],"mapped",[960]],[[120562,120562],"mapped",[961]],[[120563,120563],"mapped",[952]],[[120564,120564],"mapped",[963]],[[120565,120565],"mapped",[964]],[[120566,120566],"mapped",[965]],[[120567,120567],"mapped",[966]],[[120568,120568],"mapped",[967]],[[120569,120569],"mapped",[968]],[[120570,120570],"mapped",[969]],[[120571,120571],"mapped",[8711]],[[120572,120572],"mapped",[945]],[[120573,120573],"mapped",[946]],[[120574,120574],"mapped",[947]],[[120575,120575],"mapped",[948]],[[120576,120576],"mapped",[949]],[[120577,120577],"mapped",[950]],[[120578,120578],"mapped",[951]],[[120579,120579],"mapped",[952]],[[120580,120580],"mapped",[953]],[[120581,120581],"mapped",[954]],[[120582,120582],"mapped",[955]],[[120583,120583],"mapped",[956]],[[120584,120584],"mapped",[957]],[[120585,120585],"mapped",[958]],[[120586,120586],"mapped",[959]],[[120587,120587],"mapped",[960]],[[120588,120588],"mapped",[961]],[[120589,120590],"mapped",[963]],[[120591,120591],"mapped",[964]],[[120592,120592],"mapped",[965]],[[120593,120593],"mapped",[966]],[[120594,120594],"mapped",[967]],[[120595,120595],"mapped",[968]],[[120596,120596],"mapped",[969]],[[120597,120597],"mapped",[8706]],[[120598,120598],"mapped",[949]],[[120599,120599],"mapped",[952]],[[120600,120600],"mapped",[954]],[[120601,120601],"mapped",[966]],[[120602,120602],"mapped",[961]],[[120603,120603],"mapped",[960]],[[120604,120604],"mapped",[945]],[[120605,120605],"mapped",[946]],[[120606,120606],"mapped",[947]],[[120607,120607],"mapped",[948]],[[120608,120608],"mapped",[949]],[[120609,120609],"mapped",[950]],[[120610,120610],"mapped",[951]],[[120611,120611],"mapped",[952]],[[120612,120612],"mapped",[953]],[[120613,120613],"mapped",[954]],[[120614,120614],"mapped",[955]],[[120615,120615],"mapped",[956]],[[120616,120616],"mapped",[957]],[[120617,120617],"mapped",[958]],[[120618,120618],"mapped",[959]],[[120619,120619],"mapped",[960]],[[120620,120620],"mapped",[961]],[[120621,120621],"mapped",[952]],[[120622,120622],"mapped",[963]],[[120623,120623],"mapped",[964]],[[120624,120624],"mapped",[965]],[[120625,120625],"mapped",[966]],[[120626,120626],"mapped",[967]],[[120627,120627],"mapped",[968]],[[120628,120628],"mapped",[969]],[[120629,120629],"mapped",[8711]],[[120630,120630],"mapped",[945]],[[120631,120631],"mapped",[946]],[[120632,120632],"mapped",[947]],[[120633,120633],"mapped",[948]],[[120634,120634],"mapped",[949]],[[120635,120635],"mapped",[950]],[[120636,120636],"mapped",[951]],[[120637,120637],"mapped",[952]],[[120638,120638],"mapped",[953]],[[120639,120639],"mapped",[954]],[[120640,120640],"mapped",[955]],[[120641,120641],"mapped",[956]],[[120642,120642],"mapped",[957]],[[120643,120643],"mapped",[958]],[[120644,120644],"mapped",[959]],[[120645,120645],"mapped",[960]],[[120646,120646],"mapped",[961]],[[120647,120648],"mapped",[963]],[[120649,120649],"mapped",[964]],[[120650,120650],"mapped",[965]],[[120651,120651],"mapped",[966]],[[120652,120652],"mapped",[967]],[[120653,120653],"mapped",[968]],[[120654,120654],"mapped",[969]],[[120655,120655],"mapped",[8706]],[[120656,120656],"mapped",[949]],[[120657,120657],"mapped",[952]],[[120658,120658],"mapped",[954]],[[120659,120659],"mapped",[966]],[[120660,120660],"mapped",[961]],[[120661,120661],"mapped",[960]],[[120662,120662],"mapped",[945]],[[120663,120663],"mapped",[946]],[[120664,120664],"mapped",[947]],[[120665,120665],"mapped",[948]],[[120666,120666],"mapped",[949]],[[120667,120667],"mapped",[950]],[[120668,120668],"mapped",[951]],[[120669,120669],"mapped",[952]],[[120670,120670],"mapped",[953]],[[120671,120671],"mapped",[954]],[[120672,120672],"mapped",[955]],[[120673,120673],"mapped",[956]],[[120674,120674],"mapped",[957]],[[120675,120675],"mapped",[958]],[[120676,120676],"mapped",[959]],[[120677,120677],"mapped",[960]],[[120678,120678],"mapped",[961]],[[120679,120679],"mapped",[952]],[[120680,120680],"mapped",[963]],[[120681,120681],"mapped",[964]],[[120682,120682],"mapped",[965]],[[120683,120683],"mapped",[966]],[[120684,120684],"mapped",[967]],[[120685,120685],"mapped",[968]],[[120686,120686],"mapped",[969]],[[120687,120687],"mapped",[8711]],[[120688,120688],"mapped",[945]],[[120689,120689],"mapped",[946]],[[120690,120690],"mapped",[947]],[[120691,120691],"mapped",[948]],[[120692,120692],"mapped",[949]],[[120693,120693],"mapped",[950]],[[120694,120694],"mapped",[951]],[[120695,120695],"mapped",[952]],[[120696,120696],"mapped",[953]],[[120697,120697],"mapped",[954]],[[120698,120698],"mapped",[955]],[[120699,120699],"mapped",[956]],[[120700,120700],"mapped",[957]],[[120701,120701],"mapped",[958]],[[120702,120702],"mapped",[959]],[[120703,120703],"mapped",[960]],[[120704,120704],"mapped",[961]],[[120705,120706],"mapped",[963]],[[120707,120707],"mapped",[964]],[[120708,120708],"mapped",[965]],[[120709,120709],"mapped",[966]],[[120710,120710],"mapped",[967]],[[120711,120711],"mapped",[968]],[[120712,120712],"mapped",[969]],[[120713,120713],"mapped",[8706]],[[120714,120714],"mapped",[949]],[[120715,120715],"mapped",[952]],[[120716,120716],"mapped",[954]],[[120717,120717],"mapped",[966]],[[120718,120718],"mapped",[961]],[[120719,120719],"mapped",[960]],[[120720,120720],"mapped",[945]],[[120721,120721],"mapped",[946]],[[120722,120722],"mapped",[947]],[[120723,120723],"mapped",[948]],[[120724,120724],"mapped",[949]],[[120725,120725],"mapped",[950]],[[120726,120726],"mapped",[951]],[[120727,120727],"mapped",[952]],[[120728,120728],"mapped",[953]],[[120729,120729],"mapped",[954]],[[120730,120730],"mapped",[955]],[[120731,120731],"mapped",[956]],[[120732,120732],"mapped",[957]],[[120733,120733],"mapped",[958]],[[120734,120734],"mapped",[959]],[[120735,120735],"mapped",[960]],[[120736,120736],"mapped",[961]],[[120737,120737],"mapped",[952]],[[120738,120738],"mapped",[963]],[[120739,120739],"mapped",[964]],[[120740,120740],"mapped",[965]],[[120741,120741],"mapped",[966]],[[120742,120742],"mapped",[967]],[[120743,120743],"mapped",[968]],[[120744,120744],"mapped",[969]],[[120745,120745],"mapped",[8711]],[[120746,120746],"mapped",[945]],[[120747,120747],"mapped",[946]],[[120748,120748],"mapped",[947]],[[120749,120749],"mapped",[948]],[[120750,120750],"mapped",[949]],[[120751,120751],"mapped",[950]],[[120752,120752],"mapped",[951]],[[120753,120753],"mapped",[952]],[[120754,120754],"mapped",[953]],[[120755,120755],"mapped",[954]],[[120756,120756],"mapped",[955]],[[120757,120757],"mapped",[956]],[[120758,120758],"mapped",[957]],[[120759,120759],"mapped",[958]],[[120760,120760],"mapped",[959]],[[120761,120761],"mapped",[960]],[[120762,120762],"mapped",[961]],[[120763,120764],"mapped",[963]],[[120765,120765],"mapped",[964]],[[120766,120766],"mapped",[965]],[[120767,120767],"mapped",[966]],[[120768,120768],"mapped",[967]],[[120769,120769],"mapped",[968]],[[120770,120770],"mapped",[969]],[[120771,120771],"mapped",[8706]],[[120772,120772],"mapped",[949]],[[120773,120773],"mapped",[952]],[[120774,120774],"mapped",[954]],[[120775,120775],"mapped",[966]],[[120776,120776],"mapped",[961]],[[120777,120777],"mapped",[960]],[[120778,120779],"mapped",[989]],[[120780,120781],"disallowed"],[[120782,120782],"mapped",[48]],[[120783,120783],"mapped",[49]],[[120784,120784],"mapped",[50]],[[120785,120785],"mapped",[51]],[[120786,120786],"mapped",[52]],[[120787,120787],"mapped",[53]],[[120788,120788],"mapped",[54]],[[120789,120789],"mapped",[55]],[[120790,120790],"mapped",[56]],[[120791,120791],"mapped",[57]],[[120792,120792],"mapped",[48]],[[120793,120793],"mapped",[49]],[[120794,120794],"mapped",[50]],[[120795,120795],"mapped",[51]],[[120796,120796],"mapped",[52]],[[120797,120797],"mapped",[53]],[[120798,120798],"mapped",[54]],[[120799,120799],"mapped",[55]],[[120800,120800],"mapped",[56]],[[120801,120801],"mapped",[57]],[[120802,120802],"mapped",[48]],[[120803,120803],"mapped",[49]],[[120804,120804],"mapped",[50]],[[120805,120805],"mapped",[51]],[[120806,120806],"mapped",[52]],[[120807,120807],"mapped",[53]],[[120808,120808],"mapped",[54]],[[120809,120809],"mapped",[55]],[[120810,120810],"mapped",[56]],[[120811,120811],"mapped",[57]],[[120812,120812],"mapped",[48]],[[120813,120813],"mapped",[49]],[[120814,120814],"mapped",[50]],[[120815,120815],"mapped",[51]],[[120816,120816],"mapped",[52]],[[120817,120817],"mapped",[53]],[[120818,120818],"mapped",[54]],[[120819,120819],"mapped",[55]],[[120820,120820],"mapped",[56]],[[120821,120821],"mapped",[57]],[[120822,120822],"mapped",[48]],[[120823,120823],"mapped",[49]],[[120824,120824],"mapped",[50]],[[120825,120825],"mapped",[51]],[[120826,120826],"mapped",[52]],[[120827,120827],"mapped",[53]],[[120828,120828],"mapped",[54]],[[120829,120829],"mapped",[55]],[[120830,120830],"mapped",[56]],[[120831,120831],"mapped",[57]],[[120832,121343],"valid",[],"NV8"],[[121344,121398],"valid"],[[121399,121402],"valid",[],"NV8"],[[121403,121452],"valid"],[[121453,121460],"valid",[],"NV8"],[[121461,121461],"valid"],[[121462,121475],"valid",[],"NV8"],[[121476,121476],"valid"],[[121477,121483],"valid",[],"NV8"],[[121484,121498],"disallowed"],[[121499,121503],"valid"],[[121504,121504],"disallowed"],[[121505,121519],"valid"],[[121520,124927],"disallowed"],[[124928,125124],"valid"],[[125125,125126],"disallowed"],[[125127,125135],"valid",[],"NV8"],[[125136,125142],"valid"],[[125143,126463],"disallowed"],[[126464,126464],"mapped",[1575]],[[126465,126465],"mapped",[1576]],[[126466,126466],"mapped",[1580]],[[126467,126467],"mapped",[1583]],[[126468,126468],"disallowed"],[[126469,126469],"mapped",[1608]],[[126470,126470],"mapped",[1586]],[[126471,126471],"mapped",[1581]],[[126472,126472],"mapped",[1591]],[[126473,126473],"mapped",[1610]],[[126474,126474],"mapped",[1603]],[[126475,126475],"mapped",[1604]],[[126476,126476],"mapped",[1605]],[[126477,126477],"mapped",[1606]],[[126478,126478],"mapped",[1587]],[[126479,126479],"mapped",[1593]],[[126480,126480],"mapped",[1601]],[[126481,126481],"mapped",[1589]],[[126482,126482],"mapped",[1602]],[[126483,126483],"mapped",[1585]],[[126484,126484],"mapped",[1588]],[[126485,126485],"mapped",[1578]],[[126486,126486],"mapped",[1579]],[[126487,126487],"mapped",[1582]],[[126488,126488],"mapped",[1584]],[[126489,126489],"mapped",[1590]],[[126490,126490],"mapped",[1592]],[[126491,126491],"mapped",[1594]],[[126492,126492],"mapped",[1646]],[[126493,126493],"mapped",[1722]],[[126494,126494],"mapped",[1697]],[[126495,126495],"mapped",[1647]],[[126496,126496],"disallowed"],[[126497,126497],"mapped",[1576]],[[126498,126498],"mapped",[1580]],[[126499,126499],"disallowed"],[[126500,126500],"mapped",[1607]],[[126501,126502],"disallowed"],[[126503,126503],"mapped",[1581]],[[126504,126504],"disallowed"],[[126505,126505],"mapped",[1610]],[[126506,126506],"mapped",[1603]],[[126507,126507],"mapped",[1604]],[[126508,126508],"mapped",[1605]],[[126509,126509],"mapped",[1606]],[[126510,126510],"mapped",[1587]],[[126511,126511],"mapped",[1593]],[[126512,126512],"mapped",[1601]],[[126513,126513],"mapped",[1589]],[[126514,126514],"mapped",[1602]],[[126515,126515],"disallowed"],[[126516,126516],"mapped",[1588]],[[126517,126517],"mapped",[1578]],[[126518,126518],"mapped",[1579]],[[126519,126519],"mapped",[1582]],[[126520,126520],"disallowed"],[[126521,126521],"mapped",[1590]],[[126522,126522],"disallowed"],[[126523,126523],"mapped",[1594]],[[126524,126529],"disallowed"],[[126530,126530],"mapped",[1580]],[[126531,126534],"disallowed"],[[126535,126535],"mapped",[1581]],[[126536,126536],"disallowed"],[[126537,126537],"mapped",[1610]],[[126538,126538],"disallowed"],[[126539,126539],"mapped",[1604]],[[126540,126540],"disallowed"],[[126541,126541],"mapped",[1606]],[[126542,126542],"mapped",[1587]],[[126543,126543],"mapped",[1593]],[[126544,126544],"disallowed"],[[126545,126545],"mapped",[1589]],[[126546,126546],"mapped",[1602]],[[126547,126547],"disallowed"],[[126548,126548],"mapped",[1588]],[[126549,126550],"disallowed"],[[126551,126551],"mapped",[1582]],[[126552,126552],"disallowed"],[[126553,126553],"mapped",[1590]],[[126554,126554],"disallowed"],[[126555,126555],"mapped",[1594]],[[126556,126556],"disallowed"],[[126557,126557],"mapped",[1722]],[[126558,126558],"disallowed"],[[126559,126559],"mapped",[1647]],[[126560,126560],"disallowed"],[[126561,126561],"mapped",[1576]],[[126562,126562],"mapped",[1580]],[[126563,126563],"disallowed"],[[126564,126564],"mapped",[1607]],[[126565,126566],"disallowed"],[[126567,126567],"mapped",[1581]],[[126568,126568],"mapped",[1591]],[[126569,126569],"mapped",[1610]],[[126570,126570],"mapped",[1603]],[[126571,126571],"disallowed"],[[126572,126572],"mapped",[1605]],[[126573,126573],"mapped",[1606]],[[126574,126574],"mapped",[1587]],[[126575,126575],"mapped",[1593]],[[126576,126576],"mapped",[1601]],[[126577,126577],"mapped",[1589]],[[126578,126578],"mapped",[1602]],[[126579,126579],"disallowed"],[[126580,126580],"mapped",[1588]],[[126581,126581],"mapped",[1578]],[[126582,126582],"mapped",[1579]],[[126583,126583],"mapped",[1582]],[[126584,126584],"disallowed"],[[126585,126585],"mapped",[1590]],[[126586,126586],"mapped",[1592]],[[126587,126587],"mapped",[1594]],[[126588,126588],"mapped",[1646]],[[126589,126589],"disallowed"],[[126590,126590],"mapped",[1697]],[[126591,126591],"disallowed"],[[126592,126592],"mapped",[1575]],[[126593,126593],"mapped",[1576]],[[126594,126594],"mapped",[1580]],[[126595,126595],"mapped",[1583]],[[126596,126596],"mapped",[1607]],[[126597,126597],"mapped",[1608]],[[126598,126598],"mapped",[1586]],[[126599,126599],"mapped",[1581]],[[126600,126600],"mapped",[1591]],[[126601,126601],"mapped",[1610]],[[126602,126602],"disallowed"],[[126603,126603],"mapped",[1604]],[[126604,126604],"mapped",[1605]],[[126605,126605],"mapped",[1606]],[[126606,126606],"mapped",[1587]],[[126607,126607],"mapped",[1593]],[[126608,126608],"mapped",[1601]],[[126609,126609],"mapped",[1589]],[[126610,126610],"mapped",[1602]],[[126611,126611],"mapped",[1585]],[[126612,126612],"mapped",[1588]],[[126613,126613],"mapped",[1578]],[[126614,126614],"mapped",[1579]],[[126615,126615],"mapped",[1582]],[[126616,126616],"mapped",[1584]],[[126617,126617],"mapped",[1590]],[[126618,126618],"mapped",[1592]],[[126619,126619],"mapped",[1594]],[[126620,126624],"disallowed"],[[126625,126625],"mapped",[1576]],[[126626,126626],"mapped",[1580]],[[126627,126627],"mapped",[1583]],[[126628,126628],"disallowed"],[[126629,126629],"mapped",[1608]],[[126630,126630],"mapped",[1586]],[[126631,126631],"mapped",[1581]],[[126632,126632],"mapped",[1591]],[[126633,126633],"mapped",[1610]],[[126634,126634],"disallowed"],[[126635,126635],"mapped",[1604]],[[126636,126636],"mapped",[1605]],[[126637,126637],"mapped",[1606]],[[126638,126638],"mapped",[1587]],[[126639,126639],"mapped",[1593]],[[126640,126640],"mapped",[1601]],[[126641,126641],"mapped",[1589]],[[126642,126642],"mapped",[1602]],[[126643,126643],"mapped",[1585]],[[126644,126644],"mapped",[1588]],[[126645,126645],"mapped",[1578]],[[126646,126646],"mapped",[1579]],[[126647,126647],"mapped",[1582]],[[126648,126648],"mapped",[1584]],[[126649,126649],"mapped",[1590]],[[126650,126650],"mapped",[1592]],[[126651,126651],"mapped",[1594]],[[126652,126703],"disallowed"],[[126704,126705],"valid",[],"NV8"],[[126706,126975],"disallowed"],[[126976,127019],"valid",[],"NV8"],[[127020,127023],"disallowed"],[[127024,127123],"valid",[],"NV8"],[[127124,127135],"disallowed"],[[127136,127150],"valid",[],"NV8"],[[127151,127152],"disallowed"],[[127153,127166],"valid",[],"NV8"],[[127167,127167],"valid",[],"NV8"],[[127168,127168],"disallowed"],[[127169,127183],"valid",[],"NV8"],[[127184,127184],"disallowed"],[[127185,127199],"valid",[],"NV8"],[[127200,127221],"valid",[],"NV8"],[[127222,127231],"disallowed"],[[127232,127232],"disallowed"],[[127233,127233],"disallowed_STD3_mapped",[48,44]],[[127234,127234],"disallowed_STD3_mapped",[49,44]],[[127235,127235],"disallowed_STD3_mapped",[50,44]],[[127236,127236],"disallowed_STD3_mapped",[51,44]],[[127237,127237],"disallowed_STD3_mapped",[52,44]],[[127238,127238],"disallowed_STD3_mapped",[53,44]],[[127239,127239],"disallowed_STD3_mapped",[54,44]],[[127240,127240],"disallowed_STD3_mapped",[55,44]],[[127241,127241],"disallowed_STD3_mapped",[56,44]],[[127242,127242],"disallowed_STD3_mapped",[57,44]],[[127243,127244],"valid",[],"NV8"],[[127245,127247],"disallowed"],[[127248,127248],"disallowed_STD3_mapped",[40,97,41]],[[127249,127249],"disallowed_STD3_mapped",[40,98,41]],[[127250,127250],"disallowed_STD3_mapped",[40,99,41]],[[127251,127251],"disallowed_STD3_mapped",[40,100,41]],[[127252,127252],"disallowed_STD3_mapped",[40,101,41]],[[127253,127253],"disallowed_STD3_mapped",[40,102,41]],[[127254,127254],"disallowed_STD3_mapped",[40,103,41]],[[127255,127255],"disallowed_STD3_mapped",[40,104,41]],[[127256,127256],"disallowed_STD3_mapped",[40,105,41]],[[127257,127257],"disallowed_STD3_mapped",[40,106,41]],[[127258,127258],"disallowed_STD3_mapped",[40,107,41]],[[127259,127259],"disallowed_STD3_mapped",[40,108,41]],[[127260,127260],"disallowed_STD3_mapped",[40,109,41]],[[127261,127261],"disallowed_STD3_mapped",[40,110,41]],[[127262,127262],"disallowed_STD3_mapped",[40,111,41]],[[127263,127263],"disallowed_STD3_mapped",[40,112,41]],[[127264,127264],"disallowed_STD3_mapped",[40,113,41]],[[127265,127265],"disallowed_STD3_mapped",[40,114,41]],[[127266,127266],"disallowed_STD3_mapped",[40,115,41]],[[127267,127267],"disallowed_STD3_mapped",[40,116,41]],[[127268,127268],"disallowed_STD3_mapped",[40,117,41]],[[127269,127269],"disallowed_STD3_mapped",[40,118,41]],[[127270,127270],"disallowed_STD3_mapped",[40,119,41]],[[127271,127271],"disallowed_STD3_mapped",[40,120,41]],[[127272,127272],"disallowed_STD3_mapped",[40,121,41]],[[127273,127273],"disallowed_STD3_mapped",[40,122,41]],[[127274,127274],"mapped",[12308,115,12309]],[[127275,127275],"mapped",[99]],[[127276,127276],"mapped",[114]],[[127277,127277],"mapped",[99,100]],[[127278,127278],"mapped",[119,122]],[[127279,127279],"disallowed"],[[127280,127280],"mapped",[97]],[[127281,127281],"mapped",[98]],[[127282,127282],"mapped",[99]],[[127283,127283],"mapped",[100]],[[127284,127284],"mapped",[101]],[[127285,127285],"mapped",[102]],[[127286,127286],"mapped",[103]],[[127287,127287],"mapped",[104]],[[127288,127288],"mapped",[105]],[[127289,127289],"mapped",[106]],[[127290,127290],"mapped",[107]],[[127291,127291],"mapped",[108]],[[127292,127292],"mapped",[109]],[[127293,127293],"mapped",[110]],[[127294,127294],"mapped",[111]],[[127295,127295],"mapped",[112]],[[127296,127296],"mapped",[113]],[[127297,127297],"mapped",[114]],[[127298,127298],"mapped",[115]],[[127299,127299],"mapped",[116]],[[127300,127300],"mapped",[117]],[[127301,127301],"mapped",[118]],[[127302,127302],"mapped",[119]],[[127303,127303],"mapped",[120]],[[127304,127304],"mapped",[121]],[[127305,127305],"mapped",[122]],[[127306,127306],"mapped",[104,118]],[[127307,127307],"mapped",[109,118]],[[127308,127308],"mapped",[115,100]],[[127309,127309],"mapped",[115,115]],[[127310,127310],"mapped",[112,112,118]],[[127311,127311],"mapped",[119,99]],[[127312,127318],"valid",[],"NV8"],[[127319,127319],"valid",[],"NV8"],[[127320,127326],"valid",[],"NV8"],[[127327,127327],"valid",[],"NV8"],[[127328,127337],"valid",[],"NV8"],[[127338,127338],"mapped",[109,99]],[[127339,127339],"mapped",[109,100]],[[127340,127343],"disallowed"],[[127344,127352],"valid",[],"NV8"],[[127353,127353],"valid",[],"NV8"],[[127354,127354],"valid",[],"NV8"],[[127355,127356],"valid",[],"NV8"],[[127357,127358],"valid",[],"NV8"],[[127359,127359],"valid",[],"NV8"],[[127360,127369],"valid",[],"NV8"],[[127370,127373],"valid",[],"NV8"],[[127374,127375],"valid",[],"NV8"],[[127376,127376],"mapped",[100,106]],[[127377,127386],"valid",[],"NV8"],[[127387,127461],"disallowed"],[[127462,127487],"valid",[],"NV8"],[[127488,127488],"mapped",[12411,12363]],[[127489,127489],"mapped",[12467,12467]],[[127490,127490],"mapped",[12469]],[[127491,127503],"disallowed"],[[127504,127504],"mapped",[25163]],[[127505,127505],"mapped",[23383]],[[127506,127506],"mapped",[21452]],[[127507,127507],"mapped",[12487]],[[127508,127508],"mapped",[20108]],[[127509,127509],"mapped",[22810]],[[127510,127510],"mapped",[35299]],[[127511,127511],"mapped",[22825]],[[127512,127512],"mapped",[20132]],[[127513,127513],"mapped",[26144]],[[127514,127514],"mapped",[28961]],[[127515,127515],"mapped",[26009]],[[127516,127516],"mapped",[21069]],[[127517,127517],"mapped",[24460]],[[127518,127518],"mapped",[20877]],[[127519,127519],"mapped",[26032]],[[127520,127520],"mapped",[21021]],[[127521,127521],"mapped",[32066]],[[127522,127522],"mapped",[29983]],[[127523,127523],"mapped",[36009]],[[127524,127524],"mapped",[22768]],[[127525,127525],"mapped",[21561]],[[127526,127526],"mapped",[28436]],[[127527,127527],"mapped",[25237]],[[127528,127528],"mapped",[25429]],[[127529,127529],"mapped",[19968]],[[127530,127530],"mapped",[19977]],[[127531,127531],"mapped",[36938]],[[127532,127532],"mapped",[24038]],[[127533,127533],"mapped",[20013]],[[127534,127534],"mapped",[21491]],[[127535,127535],"mapped",[25351]],[[127536,127536],"mapped",[36208]],[[127537,127537],"mapped",[25171]],[[127538,127538],"mapped",[31105]],[[127539,127539],"mapped",[31354]],[[127540,127540],"mapped",[21512]],[[127541,127541],"mapped",[28288]],[[127542,127542],"mapped",[26377]],[[127543,127543],"mapped",[26376]],[[127544,127544],"mapped",[30003]],[[127545,127545],"mapped",[21106]],[[127546,127546],"mapped",[21942]],[[127547,127551],"disallowed"],[[127552,127552],"mapped",[12308,26412,12309]],[[127553,127553],"mapped",[12308,19977,12309]],[[127554,127554],"mapped",[12308,20108,12309]],[[127555,127555],"mapped",[12308,23433,12309]],[[127556,127556],"mapped",[12308,28857,12309]],[[127557,127557],"mapped",[12308,25171,12309]],[[127558,127558],"mapped",[12308,30423,12309]],[[127559,127559],"mapped",[12308,21213,12309]],[[127560,127560],"mapped",[12308,25943,12309]],[[127561,127567],"disallowed"],[[127568,127568],"mapped",[24471]],[[127569,127569],"mapped",[21487]],[[127570,127743],"disallowed"],[[127744,127776],"valid",[],"NV8"],[[127777,127788],"valid",[],"NV8"],[[127789,127791],"valid",[],"NV8"],[[127792,127797],"valid",[],"NV8"],[[127798,127798],"valid",[],"NV8"],[[127799,127868],"valid",[],"NV8"],[[127869,127869],"valid",[],"NV8"],[[127870,127871],"valid",[],"NV8"],[[127872,127891],"valid",[],"NV8"],[[127892,127903],"valid",[],"NV8"],[[127904,127940],"valid",[],"NV8"],[[127941,127941],"valid",[],"NV8"],[[127942,127946],"valid",[],"NV8"],[[127947,127950],"valid",[],"NV8"],[[127951,127955],"valid",[],"NV8"],[[127956,127967],"valid",[],"NV8"],[[127968,127984],"valid",[],"NV8"],[[127985,127991],"valid",[],"NV8"],[[127992,127999],"valid",[],"NV8"],[[128e3,128062],"valid",[],"NV8"],[[128063,128063],"valid",[],"NV8"],[[128064,128064],"valid",[],"NV8"],[[128065,128065],"valid",[],"NV8"],[[128066,128247],"valid",[],"NV8"],[[128248,128248],"valid",[],"NV8"],[[128249,128252],"valid",[],"NV8"],[[128253,128254],"valid",[],"NV8"],[[128255,128255],"valid",[],"NV8"],[[128256,128317],"valid",[],"NV8"],[[128318,128319],"valid",[],"NV8"],[[128320,128323],"valid",[],"NV8"],[[128324,128330],"valid",[],"NV8"],[[128331,128335],"valid",[],"NV8"],[[128336,128359],"valid",[],"NV8"],[[128360,128377],"valid",[],"NV8"],[[128378,128378],"disallowed"],[[128379,128419],"valid",[],"NV8"],[[128420,128420],"disallowed"],[[128421,128506],"valid",[],"NV8"],[[128507,128511],"valid",[],"NV8"],[[128512,128512],"valid",[],"NV8"],[[128513,128528],"valid",[],"NV8"],[[128529,128529],"valid",[],"NV8"],[[128530,128532],"valid",[],"NV8"],[[128533,128533],"valid",[],"NV8"],[[128534,128534],"valid",[],"NV8"],[[128535,128535],"valid",[],"NV8"],[[128536,128536],"valid",[],"NV8"],[[128537,128537],"valid",[],"NV8"],[[128538,128538],"valid",[],"NV8"],[[128539,128539],"valid",[],"NV8"],[[128540,128542],"valid",[],"NV8"],[[128543,128543],"valid",[],"NV8"],[[128544,128549],"valid",[],"NV8"],[[128550,128551],"valid",[],"NV8"],[[128552,128555],"valid",[],"NV8"],[[128556,128556],"valid",[],"NV8"],[[128557,128557],"valid",[],"NV8"],[[128558,128559],"valid",[],"NV8"],[[128560,128563],"valid",[],"NV8"],[[128564,128564],"valid",[],"NV8"],[[128565,128576],"valid",[],"NV8"],[[128577,128578],"valid",[],"NV8"],[[128579,128580],"valid",[],"NV8"],[[128581,128591],"valid",[],"NV8"],[[128592,128639],"valid",[],"NV8"],[[128640,128709],"valid",[],"NV8"],[[128710,128719],"valid",[],"NV8"],[[128720,128720],"valid",[],"NV8"],[[128721,128735],"disallowed"],[[128736,128748],"valid",[],"NV8"],[[128749,128751],"disallowed"],[[128752,128755],"valid",[],"NV8"],[[128756,128767],"disallowed"],[[128768,128883],"valid",[],"NV8"],[[128884,128895],"disallowed"],[[128896,128980],"valid",[],"NV8"],[[128981,129023],"disallowed"],[[129024,129035],"valid",[],"NV8"],[[129036,129039],"disallowed"],[[129040,129095],"valid",[],"NV8"],[[129096,129103],"disallowed"],[[129104,129113],"valid",[],"NV8"],[[129114,129119],"disallowed"],[[129120,129159],"valid",[],"NV8"],[[129160,129167],"disallowed"],[[129168,129197],"valid",[],"NV8"],[[129198,129295],"disallowed"],[[129296,129304],"valid",[],"NV8"],[[129305,129407],"disallowed"],[[129408,129412],"valid",[],"NV8"],[[129413,129471],"disallowed"],[[129472,129472],"valid",[],"NV8"],[[129473,131069],"disallowed"],[[131070,131071],"disallowed"],[[131072,173782],"valid"],[[173783,173823],"disallowed"],[[173824,177972],"valid"],[[177973,177983],"disallowed"],[[177984,178205],"valid"],[[178206,178207],"disallowed"],[[178208,183969],"valid"],[[183970,194559],"disallowed"],[[194560,194560],"mapped",[20029]],[[194561,194561],"mapped",[20024]],[[194562,194562],"mapped",[20033]],[[194563,194563],"mapped",[131362]],[[194564,194564],"mapped",[20320]],[[194565,194565],"mapped",[20398]],[[194566,194566],"mapped",[20411]],[[194567,194567],"mapped",[20482]],[[194568,194568],"mapped",[20602]],[[194569,194569],"mapped",[20633]],[[194570,194570],"mapped",[20711]],[[194571,194571],"mapped",[20687]],[[194572,194572],"mapped",[13470]],[[194573,194573],"mapped",[132666]],[[194574,194574],"mapped",[20813]],[[194575,194575],"mapped",[20820]],[[194576,194576],"mapped",[20836]],[[194577,194577],"mapped",[20855]],[[194578,194578],"mapped",[132380]],[[194579,194579],"mapped",[13497]],[[194580,194580],"mapped",[20839]],[[194581,194581],"mapped",[20877]],[[194582,194582],"mapped",[132427]],[[194583,194583],"mapped",[20887]],[[194584,194584],"mapped",[20900]],[[194585,194585],"mapped",[20172]],[[194586,194586],"mapped",[20908]],[[194587,194587],"mapped",[20917]],[[194588,194588],"mapped",[168415]],[[194589,194589],"mapped",[20981]],[[194590,194590],"mapped",[20995]],[[194591,194591],"mapped",[13535]],[[194592,194592],"mapped",[21051]],[[194593,194593],"mapped",[21062]],[[194594,194594],"mapped",[21106]],[[194595,194595],"mapped",[21111]],[[194596,194596],"mapped",[13589]],[[194597,194597],"mapped",[21191]],[[194598,194598],"mapped",[21193]],[[194599,194599],"mapped",[21220]],[[194600,194600],"mapped",[21242]],[[194601,194601],"mapped",[21253]],[[194602,194602],"mapped",[21254]],[[194603,194603],"mapped",[21271]],[[194604,194604],"mapped",[21321]],[[194605,194605],"mapped",[21329]],[[194606,194606],"mapped",[21338]],[[194607,194607],"mapped",[21363]],[[194608,194608],"mapped",[21373]],[[194609,194611],"mapped",[21375]],[[194612,194612],"mapped",[133676]],[[194613,194613],"mapped",[28784]],[[194614,194614],"mapped",[21450]],[[194615,194615],"mapped",[21471]],[[194616,194616],"mapped",[133987]],[[194617,194617],"mapped",[21483]],[[194618,194618],"mapped",[21489]],[[194619,194619],"mapped",[21510]],[[194620,194620],"mapped",[21662]],[[194621,194621],"mapped",[21560]],[[194622,194622],"mapped",[21576]],[[194623,194623],"mapped",[21608]],[[194624,194624],"mapped",[21666]],[[194625,194625],"mapped",[21750]],[[194626,194626],"mapped",[21776]],[[194627,194627],"mapped",[21843]],[[194628,194628],"mapped",[21859]],[[194629,194630],"mapped",[21892]],[[194631,194631],"mapped",[21913]],[[194632,194632],"mapped",[21931]],[[194633,194633],"mapped",[21939]],[[194634,194634],"mapped",[21954]],[[194635,194635],"mapped",[22294]],[[194636,194636],"mapped",[22022]],[[194637,194637],"mapped",[22295]],[[194638,194638],"mapped",[22097]],[[194639,194639],"mapped",[22132]],[[194640,194640],"mapped",[20999]],[[194641,194641],"mapped",[22766]],[[194642,194642],"mapped",[22478]],[[194643,194643],"mapped",[22516]],[[194644,194644],"mapped",[22541]],[[194645,194645],"mapped",[22411]],[[194646,194646],"mapped",[22578]],[[194647,194647],"mapped",[22577]],[[194648,194648],"mapped",[22700]],[[194649,194649],"mapped",[136420]],[[194650,194650],"mapped",[22770]],[[194651,194651],"mapped",[22775]],[[194652,194652],"mapped",[22790]],[[194653,194653],"mapped",[22810]],[[194654,194654],"mapped",[22818]],[[194655,194655],"mapped",[22882]],[[194656,194656],"mapped",[136872]],[[194657,194657],"mapped",[136938]],[[194658,194658],"mapped",[23020]],[[194659,194659],"mapped",[23067]],[[194660,194660],"mapped",[23079]],[[194661,194661],"mapped",[23e3]],[[194662,194662],"mapped",[23142]],[[194663,194663],"mapped",[14062]],[[194664,194664],"disallowed"],[[194665,194665],"mapped",[23304]],[[194666,194667],"mapped",[23358]],[[194668,194668],"mapped",[137672]],[[194669,194669],"mapped",[23491]],[[194670,194670],"mapped",[23512]],[[194671,194671],"mapped",[23527]],[[194672,194672],"mapped",[23539]],[[194673,194673],"mapped",[138008]],[[194674,194674],"mapped",[23551]],[[194675,194675],"mapped",[23558]],[[194676,194676],"disallowed"],[[194677,194677],"mapped",[23586]],[[194678,194678],"mapped",[14209]],[[194679,194679],"mapped",[23648]],[[194680,194680],"mapped",[23662]],[[194681,194681],"mapped",[23744]],[[194682,194682],"mapped",[23693]],[[194683,194683],"mapped",[138724]],[[194684,194684],"mapped",[23875]],[[194685,194685],"mapped",[138726]],[[194686,194686],"mapped",[23918]],[[194687,194687],"mapped",[23915]],[[194688,194688],"mapped",[23932]],[[194689,194689],"mapped",[24033]],[[194690,194690],"mapped",[24034]],[[194691,194691],"mapped",[14383]],[[194692,194692],"mapped",[24061]],[[194693,194693],"mapped",[24104]],[[194694,194694],"mapped",[24125]],[[194695,194695],"mapped",[24169]],[[194696,194696],"mapped",[14434]],[[194697,194697],"mapped",[139651]],[[194698,194698],"mapped",[14460]],[[194699,194699],"mapped",[24240]],[[194700,194700],"mapped",[24243]],[[194701,194701],"mapped",[24246]],[[194702,194702],"mapped",[24266]],[[194703,194703],"mapped",[172946]],[[194704,194704],"mapped",[24318]],[[194705,194706],"mapped",[140081]],[[194707,194707],"mapped",[33281]],[[194708,194709],"mapped",[24354]],[[194710,194710],"mapped",[14535]],[[194711,194711],"mapped",[144056]],[[194712,194712],"mapped",[156122]],[[194713,194713],"mapped",[24418]],[[194714,194714],"mapped",[24427]],[[194715,194715],"mapped",[14563]],[[194716,194716],"mapped",[24474]],[[194717,194717],"mapped",[24525]],[[194718,194718],"mapped",[24535]],[[194719,194719],"mapped",[24569]],[[194720,194720],"mapped",[24705]],[[194721,194721],"mapped",[14650]],[[194722,194722],"mapped",[14620]],[[194723,194723],"mapped",[24724]],[[194724,194724],"mapped",[141012]],[[194725,194725],"mapped",[24775]],[[194726,194726],"mapped",[24904]],[[194727,194727],"mapped",[24908]],[[194728,194728],"mapped",[24910]],[[194729,194729],"mapped",[24908]],[[194730,194730],"mapped",[24954]],[[194731,194731],"mapped",[24974]],[[194732,194732],"mapped",[25010]],[[194733,194733],"mapped",[24996]],[[194734,194734],"mapped",[25007]],[[194735,194735],"mapped",[25054]],[[194736,194736],"mapped",[25074]],[[194737,194737],"mapped",[25078]],[[194738,194738],"mapped",[25104]],[[194739,194739],"mapped",[25115]],[[194740,194740],"mapped",[25181]],[[194741,194741],"mapped",[25265]],[[194742,194742],"mapped",[25300]],[[194743,194743],"mapped",[25424]],[[194744,194744],"mapped",[142092]],[[194745,194745],"mapped",[25405]],[[194746,194746],"mapped",[25340]],[[194747,194747],"mapped",[25448]],[[194748,194748],"mapped",[25475]],[[194749,194749],"mapped",[25572]],[[194750,194750],"mapped",[142321]],[[194751,194751],"mapped",[25634]],[[194752,194752],"mapped",[25541]],[[194753,194753],"mapped",[25513]],[[194754,194754],"mapped",[14894]],[[194755,194755],"mapped",[25705]],[[194756,194756],"mapped",[25726]],[[194757,194757],"mapped",[25757]],[[194758,194758],"mapped",[25719]],[[194759,194759],"mapped",[14956]],[[194760,194760],"mapped",[25935]],[[194761,194761],"mapped",[25964]],[[194762,194762],"mapped",[143370]],[[194763,194763],"mapped",[26083]],[[194764,194764],"mapped",[26360]],[[194765,194765],"mapped",[26185]],[[194766,194766],"mapped",[15129]],[[194767,194767],"mapped",[26257]],[[194768,194768],"mapped",[15112]],[[194769,194769],"mapped",[15076]],[[194770,194770],"mapped",[20882]],[[194771,194771],"mapped",[20885]],[[194772,194772],"mapped",[26368]],[[194773,194773],"mapped",[26268]],[[194774,194774],"mapped",[32941]],[[194775,194775],"mapped",[17369]],[[194776,194776],"mapped",[26391]],[[194777,194777],"mapped",[26395]],[[194778,194778],"mapped",[26401]],[[194779,194779],"mapped",[26462]],[[194780,194780],"mapped",[26451]],[[194781,194781],"mapped",[144323]],[[194782,194782],"mapped",[15177]],[[194783,194783],"mapped",[26618]],[[194784,194784],"mapped",[26501]],[[194785,194785],"mapped",[26706]],[[194786,194786],"mapped",[26757]],[[194787,194787],"mapped",[144493]],[[194788,194788],"mapped",[26766]],[[194789,194789],"mapped",[26655]],[[194790,194790],"mapped",[26900]],[[194791,194791],"mapped",[15261]],[[194792,194792],"mapped",[26946]],[[194793,194793],"mapped",[27043]],[[194794,194794],"mapped",[27114]],[[194795,194795],"mapped",[27304]],[[194796,194796],"mapped",[145059]],[[194797,194797],"mapped",[27355]],[[194798,194798],"mapped",[15384]],[[194799,194799],"mapped",[27425]],[[194800,194800],"mapped",[145575]],[[194801,194801],"mapped",[27476]],[[194802,194802],"mapped",[15438]],[[194803,194803],"mapped",[27506]],[[194804,194804],"mapped",[27551]],[[194805,194805],"mapped",[27578]],[[194806,194806],"mapped",[27579]],[[194807,194807],"mapped",[146061]],[[194808,194808],"mapped",[138507]],[[194809,194809],"mapped",[146170]],[[194810,194810],"mapped",[27726]],[[194811,194811],"mapped",[146620]],[[194812,194812],"mapped",[27839]],[[194813,194813],"mapped",[27853]],[[194814,194814],"mapped",[27751]],[[194815,194815],"mapped",[27926]],[[194816,194816],"mapped",[27966]],[[194817,194817],"mapped",[28023]],[[194818,194818],"mapped",[27969]],[[194819,194819],"mapped",[28009]],[[194820,194820],"mapped",[28024]],[[194821,194821],"mapped",[28037]],[[194822,194822],"mapped",[146718]],[[194823,194823],"mapped",[27956]],[[194824,194824],"mapped",[28207]],[[194825,194825],"mapped",[28270]],[[194826,194826],"mapped",[15667]],[[194827,194827],"mapped",[28363]],[[194828,194828],"mapped",[28359]],[[194829,194829],"mapped",[147153]],[[194830,194830],"mapped",[28153]],[[194831,194831],"mapped",[28526]],[[194832,194832],"mapped",[147294]],[[194833,194833],"mapped",[147342]],[[194834,194834],"mapped",[28614]],[[194835,194835],"mapped",[28729]],[[194836,194836],"mapped",[28702]],[[194837,194837],"mapped",[28699]],[[194838,194838],"mapped",[15766]],[[194839,194839],"mapped",[28746]],[[194840,194840],"mapped",[28797]],[[194841,194841],"mapped",[28791]],[[194842,194842],"mapped",[28845]],[[194843,194843],"mapped",[132389]],[[194844,194844],"mapped",[28997]],[[194845,194845],"mapped",[148067]],[[194846,194846],"mapped",[29084]],[[194847,194847],"disallowed"],[[194848,194848],"mapped",[29224]],[[194849,194849],"mapped",[29237]],[[194850,194850],"mapped",[29264]],[[194851,194851],"mapped",[149e3]],[[194852,194852],"mapped",[29312]],[[194853,194853],"mapped",[29333]],[[194854,194854],"mapped",[149301]],[[194855,194855],"mapped",[149524]],[[194856,194856],"mapped",[29562]],[[194857,194857],"mapped",[29579]],[[194858,194858],"mapped",[16044]],[[194859,194859],"mapped",[29605]],[[194860,194861],"mapped",[16056]],[[194862,194862],"mapped",[29767]],[[194863,194863],"mapped",[29788]],[[194864,194864],"mapped",[29809]],[[194865,194865],"mapped",[29829]],[[194866,194866],"mapped",[29898]],[[194867,194867],"mapped",[16155]],[[194868,194868],"mapped",[29988]],[[194869,194869],"mapped",[150582]],[[194870,194870],"mapped",[30014]],[[194871,194871],"mapped",[150674]],[[194872,194872],"mapped",[30064]],[[194873,194873],"mapped",[139679]],[[194874,194874],"mapped",[30224]],[[194875,194875],"mapped",[151457]],[[194876,194876],"mapped",[151480]],[[194877,194877],"mapped",[151620]],[[194878,194878],"mapped",[16380]],[[194879,194879],"mapped",[16392]],[[194880,194880],"mapped",[30452]],[[194881,194881],"mapped",[151795]],[[194882,194882],"mapped",[151794]],[[194883,194883],"mapped",[151833]],[[194884,194884],"mapped",[151859]],[[194885,194885],"mapped",[30494]],[[194886,194887],"mapped",[30495]],[[194888,194888],"mapped",[30538]],[[194889,194889],"mapped",[16441]],[[194890,194890],"mapped",[30603]],[[194891,194891],"mapped",[16454]],[[194892,194892],"mapped",[16534]],[[194893,194893],"mapped",[152605]],[[194894,194894],"mapped",[30798]],[[194895,194895],"mapped",[30860]],[[194896,194896],"mapped",[30924]],[[194897,194897],"mapped",[16611]],[[194898,194898],"mapped",[153126]],[[194899,194899],"mapped",[31062]],[[194900,194900],"mapped",[153242]],[[194901,194901],"mapped",[153285]],[[194902,194902],"mapped",[31119]],[[194903,194903],"mapped",[31211]],[[194904,194904],"mapped",[16687]],[[194905,194905],"mapped",[31296]],[[194906,194906],"mapped",[31306]],[[194907,194907],"mapped",[31311]],[[194908,194908],"mapped",[153980]],[[194909,194910],"mapped",[154279]],[[194911,194911],"disallowed"],[[194912,194912],"mapped",[16898]],[[194913,194913],"mapped",[154539]],[[194914,194914],"mapped",[31686]],[[194915,194915],"mapped",[31689]],[[194916,194916],"mapped",[16935]],[[194917,194917],"mapped",[154752]],[[194918,194918],"mapped",[31954]],[[194919,194919],"mapped",[17056]],[[194920,194920],"mapped",[31976]],[[194921,194921],"mapped",[31971]],[[194922,194922],"mapped",[32e3]],[[194923,194923],"mapped",[155526]],[[194924,194924],"mapped",[32099]],[[194925,194925],"mapped",[17153]],[[194926,194926],"mapped",[32199]],[[194927,194927],"mapped",[32258]],[[194928,194928],"mapped",[32325]],[[194929,194929],"mapped",[17204]],[[194930,194930],"mapped",[156200]],[[194931,194931],"mapped",[156231]],[[194932,194932],"mapped",[17241]],[[194933,194933],"mapped",[156377]],[[194934,194934],"mapped",[32634]],[[194935,194935],"mapped",[156478]],[[194936,194936],"mapped",[32661]],[[194937,194937],"mapped",[32762]],[[194938,194938],"mapped",[32773]],[[194939,194939],"mapped",[156890]],[[194940,194940],"mapped",[156963]],[[194941,194941],"mapped",[32864]],[[194942,194942],"mapped",[157096]],[[194943,194943],"mapped",[32880]],[[194944,194944],"mapped",[144223]],[[194945,194945],"mapped",[17365]],[[194946,194946],"mapped",[32946]],[[194947,194947],"mapped",[33027]],[[194948,194948],"mapped",[17419]],[[194949,194949],"mapped",[33086]],[[194950,194950],"mapped",[23221]],[[194951,194951],"mapped",[157607]],[[194952,194952],"mapped",[157621]],[[194953,194953],"mapped",[144275]],[[194954,194954],"mapped",[144284]],[[194955,194955],"mapped",[33281]],[[194956,194956],"mapped",[33284]],[[194957,194957],"mapped",[36766]],[[194958,194958],"mapped",[17515]],[[194959,194959],"mapped",[33425]],[[194960,194960],"mapped",[33419]],[[194961,194961],"mapped",[33437]],[[194962,194962],"mapped",[21171]],[[194963,194963],"mapped",[33457]],[[194964,194964],"mapped",[33459]],[[194965,194965],"mapped",[33469]],[[194966,194966],"mapped",[33510]],[[194967,194967],"mapped",[158524]],[[194968,194968],"mapped",[33509]],[[194969,194969],"mapped",[33565]],[[194970,194970],"mapped",[33635]],[[194971,194971],"mapped",[33709]],[[194972,194972],"mapped",[33571]],[[194973,194973],"mapped",[33725]],[[194974,194974],"mapped",[33767]],[[194975,194975],"mapped",[33879]],[[194976,194976],"mapped",[33619]],[[194977,194977],"mapped",[33738]],[[194978,194978],"mapped",[33740]],[[194979,194979],"mapped",[33756]],[[194980,194980],"mapped",[158774]],[[194981,194981],"mapped",[159083]],[[194982,194982],"mapped",[158933]],[[194983,194983],"mapped",[17707]],[[194984,194984],"mapped",[34033]],[[194985,194985],"mapped",[34035]],[[194986,194986],"mapped",[34070]],[[194987,194987],"mapped",[160714]],[[194988,194988],"mapped",[34148]],[[194989,194989],"mapped",[159532]],[[194990,194990],"mapped",[17757]],[[194991,194991],"mapped",[17761]],[[194992,194992],"mapped",[159665]],[[194993,194993],"mapped",[159954]],[[194994,194994],"mapped",[17771]],[[194995,194995],"mapped",[34384]],[[194996,194996],"mapped",[34396]],[[194997,194997],"mapped",[34407]],[[194998,194998],"mapped",[34409]],[[194999,194999],"mapped",[34473]],[[195e3,195e3],"mapped",[34440]],[[195001,195001],"mapped",[34574]],[[195002,195002],"mapped",[34530]],[[195003,195003],"mapped",[34681]],[[195004,195004],"mapped",[34600]],[[195005,195005],"mapped",[34667]],[[195006,195006],"mapped",[34694]],[[195007,195007],"disallowed"],[[195008,195008],"mapped",[34785]],[[195009,195009],"mapped",[34817]],[[195010,195010],"mapped",[17913]],[[195011,195011],"mapped",[34912]],[[195012,195012],"mapped",[34915]],[[195013,195013],"mapped",[161383]],[[195014,195014],"mapped",[35031]],[[195015,195015],"mapped",[35038]],[[195016,195016],"mapped",[17973]],[[195017,195017],"mapped",[35066]],[[195018,195018],"mapped",[13499]],[[195019,195019],"mapped",[161966]],[[195020,195020],"mapped",[162150]],[[195021,195021],"mapped",[18110]],[[195022,195022],"mapped",[18119]],[[195023,195023],"mapped",[35488]],[[195024,195024],"mapped",[35565]],[[195025,195025],"mapped",[35722]],[[195026,195026],"mapped",[35925]],[[195027,195027],"mapped",[162984]],[[195028,195028],"mapped",[36011]],[[195029,195029],"mapped",[36033]],[[195030,195030],"mapped",[36123]],[[195031,195031],"mapped",[36215]],[[195032,195032],"mapped",[163631]],[[195033,195033],"mapped",[133124]],[[195034,195034],"mapped",[36299]],[[195035,195035],"mapped",[36284]],[[195036,195036],"mapped",[36336]],[[195037,195037],"mapped",[133342]],[[195038,195038],"mapped",[36564]],[[195039,195039],"mapped",[36664]],[[195040,195040],"mapped",[165330]],[[195041,195041],"mapped",[165357]],[[195042,195042],"mapped",[37012]],[[195043,195043],"mapped",[37105]],[[195044,195044],"mapped",[37137]],[[195045,195045],"mapped",[165678]],[[195046,195046],"mapped",[37147]],[[195047,195047],"mapped",[37432]],[[195048,195048],"mapped",[37591]],[[195049,195049],"mapped",[37592]],[[195050,195050],"mapped",[37500]],[[195051,195051],"mapped",[37881]],[[195052,195052],"mapped",[37909]],[[195053,195053],"mapped",[166906]],[[195054,195054],"mapped",[38283]],[[195055,195055],"mapped",[18837]],[[195056,195056],"mapped",[38327]],[[195057,195057],"mapped",[167287]],[[195058,195058],"mapped",[18918]],[[195059,195059],"mapped",[38595]],[[195060,195060],"mapped",[23986]],[[195061,195061],"mapped",[38691]],[[195062,195062],"mapped",[168261]],[[195063,195063],"mapped",[168474]],[[195064,195064],"mapped",[19054]],[[195065,195065],"mapped",[19062]],[[195066,195066],"mapped",[38880]],[[195067,195067],"mapped",[168970]],[[195068,195068],"mapped",[19122]],[[195069,195069],"mapped",[169110]],[[195070,195071],"mapped",[38923]],[[195072,195072],"mapped",[38953]],[[195073,195073],"mapped",[169398]],[[195074,195074],"mapped",[39138]],[[195075,195075],"mapped",[19251]],[[195076,195076],"mapped",[39209]],[[195077,195077],"mapped",[39335]],[[195078,195078],"mapped",[39362]],[[195079,195079],"mapped",[39422]],[[195080,195080],"mapped",[19406]],[[195081,195081],"mapped",[170800]],[[195082,195082],"mapped",[39698]],[[195083,195083],"mapped",[4e4]],[[195084,195084],"mapped",[40189]],[[195085,195085],"mapped",[19662]],[[195086,195086],"mapped",[19693]],[[195087,195087],"mapped",[40295]],[[195088,195088],"mapped",[172238]],[[195089,195089],"mapped",[19704]],[[195090,195090],"mapped",[172293]],[[195091,195091],"mapped",[172558]],[[195092,195092],"mapped",[172689]],[[195093,195093],"mapped",[40635]],[[195094,195094],"mapped",[19798]],[[195095,195095],"mapped",[40697]],[[195096,195096],"mapped",[40702]],[[195097,195097],"mapped",[40709]],[[195098,195098],"mapped",[40719]],[[195099,195099],"mapped",[40726]],[[195100,195100],"mapped",[40763]],[[195101,195101],"mapped",[173568]],[[195102,196605],"disallowed"],[[196606,196607],"disallowed"],[[196608,262141],"disallowed"],[[262142,262143],"disallowed"],[[262144,327677],"disallowed"],[[327678,327679],"disallowed"],[[327680,393213],"disallowed"],[[393214,393215],"disallowed"],[[393216,458749],"disallowed"],[[458750,458751],"disallowed"],[[458752,524285],"disallowed"],[[524286,524287],"disallowed"],[[524288,589821],"disallowed"],[[589822,589823],"disallowed"],[[589824,655357],"disallowed"],[[655358,655359],"disallowed"],[[655360,720893],"disallowed"],[[720894,720895],"disallowed"],[[720896,786429],"disallowed"],[[786430,786431],"disallowed"],[[786432,851965],"disallowed"],[[851966,851967],"disallowed"],[[851968,917501],"disallowed"],[[917502,917503],"disallowed"],[[917504,917504],"disallowed"],[[917505,917505],"disallowed"],[[917506,917535],"disallowed"],[[917536,917631],"disallowed"],[[917632,917759],"disallowed"],[[917760,917999],"ignored"],[[918e3,983037],"disallowed"],[[983038,983039],"disallowed"],[[983040,1048573],"disallowed"],[[1048574,1048575],"disallowed"],[[1048576,1114109],"disallowed"],[[1114110,1114111],"disallowed"]]});var gF=g((I_e,E2)=>{"use strict";var uF=require("punycode"),pF=dF(),mp={TRANSITIONAL:0,NONTRANSITIONAL:1};function mF(t){return t.split("\0").map(function(e){return e.normalize("NFC")}).join("\0")}function hF(t){for(var e=0,r=pF.length-1;e<=r;){var n=Math.floor((e+r)/2),i=pF[n];if(i[0][0]<=t&&i[0][1]>=t)return i;i[0][0]>t?r=n-1:e=n+1}return null}var Ffe=/[\uD800-\uDBFF][\uDC00-\uDFFF]/g;function fF(t){return t.replace(Ffe,"_").length}function Ufe(t,e,r){for(var n=!1,i="",s=fF(t),a=0;a253||a.length===0)&&(i.error=!0);for(var o=0;o63||s.length===0){i.error=!0;break}}return i.error?null:s.join(".")};E2.exports.toUnicode=function(t,e){var r=g2(t,e,mp.NONTRANSITIONAL);return{domain:r.string,error:r.error}};E2.exports.PROCESSING_OPTIONS=mp});var aa=g((B_e,Bi)=>{"use strict";var hp=require("punycode"),EF=gF(),BF={ftp:21,file:null,gopher:70,http:80,https:443,ws:80,wss:443},Te=Symbol("failure");function yF(t){return hp.ucs2.decode(t).length}function CF(t,e){let r=t[e];return isNaN(r)?void 0:String.fromCodePoint(r)}function qh(t){return t>=48&&t<=57}function Vh(t){return t>=65&&t<=90||t>=97&&t<=122}function Gfe(t){return Vh(t)||qh(t)}function vs(t){return qh(t)||t>=65&&t<=70||t>=97&&t<=102}function IF(t){return t==="."||t.toLowerCase()==="%2e"}function Hfe(t){return t=t.toLowerCase(),t===".."||t==="%2e."||t===".%2e"||t==="%2e%2e"}function Yfe(t,e){return Vh(t)&&(e===58||e===124)}function QF(t){return t.length===2&&Vh(t.codePointAt(0))&&(t[1]===":"||t[1]==="|")}function Jfe(t){return t.length===2&&Vh(t.codePointAt(0))&&t[1]===":"}function jfe(t){return t.search(/\u0000|\u0009|\u000A|\u000D|\u0020|#|%|\/|:|\?|@|\[|\\|\]/)!==-1}function zfe(t){return t.search(/\u0000|\u0009|\u000A|\u000D|\u0020|#|\/|:|\?|@|\[|\\|\]/)!==-1}function FQ(t){return BF[t]!==void 0}function Br(t){return FQ(t.scheme)}function Wfe(t){return BF[t]}function wF(t){let e=t.toString(16).toUpperCase();return e.length===1&&(e="0"+e),"%"+e}function $fe(t){let e=new Buffer(t),r="";for(let n=0;n126}var Xfe=new Set([32,34,35,60,62,63,96,123,125]);function SF(t){return y2(t)||Xfe.has(t)}var Zfe=new Set([47,58,59,61,64,91,92,93,94,124]);function qQ(t){return SF(t)||Zfe.has(t)}function Ol(t,e){let r=String.fromCodePoint(t);return e(t)?$fe(r):r}function e1e(t){let e=10;return t.length>=2&&t.charAt(0)==="0"&&t.charAt(1).toLowerCase()==="x"?(t=t.substring(2),e=16):t.length>=2&&t.charAt(0)==="0"&&(t=t.substring(1),e=8),t===""?0:(e===10?/[^0-9]/:e===16?/[^0-9A-Fa-f]/:/[^0-7]/).test(t)?Te:parseInt(t,e)}function t1e(t){let e=t.split(".");if(e[e.length-1]===""&&e.length>1&&e.pop(),e.length>4)return t;let r=[];for(let s of e){if(s==="")return t;let a=e1e(s);if(a===Te)return t;r.push(a)}for(let s=0;s255)return Te;if(r[r.length-1]>=Math.pow(256,5-r.length))return Te;let n=r.pop(),i=0;for(let s of r)n+=s*Math.pow(256,3-i),++i;return n}function r1e(t){let e="",r=t;for(let n=1;n<=4;++n)e=String(r%256)+e,n!==4&&(e="."+e),r=Math.floor(r/256);return e}function n1e(t){let e=[0,0,0,0,0,0,0,0],r=0,n=null,i=0;if(t=hp.ucs2.decode(t),t[i]===58){if(t[i+1]!==58)return Te;i+=2,++r,n=r}for(;i6))return Te;let o=0;for(;t[i]!==void 0;){let A=null;if(o>0)if(t[i]===46&&o<4)++i;else return Te;if(!qh(t[i]))return Te;for(;qh(t[i]);){let l=parseInt(CF(t,i));if(A===null)A=l;else{if(A===0)return Te;A=A*10+l}if(A>255)return Te;++i}e[r]=e[r]*256+A,++o,(o===2||o===4)&&++r}if(o!==4)return Te;break}else if(t[i]===58){if(++i,t[i]===void 0)return Te}else if(t[i]!==void 0)return Te;e[r]=s,++r}if(n!==null){let s=r-n;for(r=7;r!==0&&s>0;){let a=e[n+s-1];e[n+s-1]=e[r],e[r]=a,--r,--s}}else if(n===null&&r!==8)return Te;return e}function i1e(t){let e="",n=a1e(t).idx,i=!1;for(let s=0;s<=7;++s)if(!(i&&t[s]===0)){if(i&&(i=!1),n===s){e+=s===0?"::":":",i=!0;continue}e+=t[s].toString(16),s!==7&&(e+=":")}return e}function UQ(t,e){if(t[0]==="[")return t[t.length-1]!=="]"?Te:n1e(t.substring(1,t.length-1));if(!e)return s1e(t);let r=Kfe(t),n=EF.toASCII(r,!1,EF.PROCESSING_OPTIONS.NONTRANSITIONAL,!1);if(n===null||jfe(n))return Te;let i=t1e(n);return typeof i=="number"||i===Te?i:n}function s1e(t){if(zfe(t))return Te;let e="",r=hp.ucs2.decode(t);for(let n=0;nr&&(e=n,r=i),n=null,i=0):(n===null&&(n=s),++i);return i>r&&(e=n,r=i),{idx:e,len:r}}function VQ(t){return typeof t=="number"?r1e(t):t instanceof Array?"["+i1e(t)+"]":t}function o1e(t){return t.replace(/^[\u0000-\u001F\u0020]+|[\u0000-\u001F\u0020]+$/g,"")}function A1e(t){return t.replace(/\u0009|\u000A|\u000D/g,"")}function bF(t){let e=t.path;e.length!==0&&(t.scheme==="file"&&e.length===1&&c1e(e[0])||e.pop())}function vF(t){return t.username!==""||t.password!==""}function l1e(t){return t.host===null||t.host===""||t.cannotBeABaseURL||t.scheme==="file"}function c1e(t){return/^[A-Za-z]:$/.test(t)}function jt(t,e,r,n,i){if(this.pointer=0,this.input=t,this.base=e||null,this.encodingOverride=r||"utf-8",this.stateOverride=i,this.url=n,this.failure=!1,this.parseError=!1,!this.url){this.url={scheme:"",username:"",password:"",host:null,port:null,path:[],query:null,fragment:null,cannotBeABaseURL:!1};let a=o1e(this.input);a!==this.input&&(this.parseError=!0),this.input=a}let s=A1e(this.input);for(s!==this.input&&(this.parseError=!0),this.input=s,this.state=i||"scheme start",this.buffer="",this.atFlag=!1,this.arrFlag=!1,this.passwordTokenSeenFlag=!1,this.input=hp.ucs2.decode(this.input);this.pointer<=this.input.length;++this.pointer){let a=this.input[this.pointer],o=isNaN(a)?void 0:String.fromCodePoint(a),A=this["parse "+this.state](a,o);if(A){if(A===Te){this.failure=!0;break}}else break}}jt.prototype["parse scheme start"]=function(e,r){if(Vh(e))this.buffer+=r.toLowerCase(),this.state="scheme";else if(!this.stateOverride)this.state="no scheme",--this.pointer;else return this.parseError=!0,Te;return!0};jt.prototype["parse scheme"]=function(e,r){if(Gfe(e)||e===43||e===45||e===46)this.buffer+=r.toLowerCase();else if(e===58){if(this.stateOverride&&(Br(this.url)&&!FQ(this.buffer)||!Br(this.url)&&FQ(this.buffer)||(vF(this.url)||this.url.port!==null)&&this.buffer==="file"||this.url.scheme==="file"&&(this.url.host===""||this.url.host===null))||(this.url.scheme=this.buffer,this.buffer="",this.stateOverride))return!1;this.url.scheme==="file"?((this.input[this.pointer+1]!==47||this.input[this.pointer+2]!==47)&&(this.parseError=!0),this.state="file"):Br(this.url)&&this.base!==null&&this.base.scheme===this.url.scheme?this.state="special relative or authority":Br(this.url)?this.state="special authority slashes":this.input[this.pointer+1]===47?(this.state="path or authority",++this.pointer):(this.url.cannotBeABaseURL=!0,this.url.path.push(""),this.state="cannot-be-a-base-URL path")}else if(!this.stateOverride)this.buffer="",this.state="no scheme",this.pointer=-1;else return this.parseError=!0,Te;return!0};jt.prototype["parse no scheme"]=function(e){return this.base===null||this.base.cannotBeABaseURL&&e!==35?Te:(this.base.cannotBeABaseURL&&e===35?(this.url.scheme=this.base.scheme,this.url.path=this.base.path.slice(),this.url.query=this.base.query,this.url.fragment="",this.url.cannotBeABaseURL=!0,this.state="fragment"):this.base.scheme==="file"?(this.state="file",--this.pointer):(this.state="relative",--this.pointer),!0)};jt.prototype["parse special relative or authority"]=function(e){return e===47&&this.input[this.pointer+1]===47?(this.state="special authority ignore slashes",++this.pointer):(this.parseError=!0,this.state="relative",--this.pointer),!0};jt.prototype["parse path or authority"]=function(e){return e===47?this.state="authority":(this.state="path",--this.pointer),!0};jt.prototype["parse relative"]=function(e){return this.url.scheme=this.base.scheme,isNaN(e)?(this.url.username=this.base.username,this.url.password=this.base.password,this.url.host=this.base.host,this.url.port=this.base.port,this.url.path=this.base.path.slice(),this.url.query=this.base.query):e===47?this.state="relative slash":e===63?(this.url.username=this.base.username,this.url.password=this.base.password,this.url.host=this.base.host,this.url.port=this.base.port,this.url.path=this.base.path.slice(),this.url.query="",this.state="query"):e===35?(this.url.username=this.base.username,this.url.password=this.base.password,this.url.host=this.base.host,this.url.port=this.base.port,this.url.path=this.base.path.slice(),this.url.query=this.base.query,this.url.fragment="",this.state="fragment"):Br(this.url)&&e===92?(this.parseError=!0,this.state="relative slash"):(this.url.username=this.base.username,this.url.password=this.base.password,this.url.host=this.base.host,this.url.port=this.base.port,this.url.path=this.base.path.slice(0,this.base.path.length-1),this.state="path",--this.pointer),!0};jt.prototype["parse relative slash"]=function(e){return Br(this.url)&&(e===47||e===92)?(e===92&&(this.parseError=!0),this.state="special authority ignore slashes"):e===47?this.state="authority":(this.url.username=this.base.username,this.url.password=this.base.password,this.url.host=this.base.host,this.url.port=this.base.port,this.state="path",--this.pointer),!0};jt.prototype["parse special authority slashes"]=function(e){return e===47&&this.input[this.pointer+1]===47?(this.state="special authority ignore slashes",++this.pointer):(this.parseError=!0,this.state="special authority ignore slashes",--this.pointer),!0};jt.prototype["parse special authority ignore slashes"]=function(e){return e!==47&&e!==92?(this.state="authority",--this.pointer):this.parseError=!0,!0};jt.prototype["parse authority"]=function(e,r){if(e===64){this.parseError=!0,this.atFlag&&(this.buffer="%40"+this.buffer),this.atFlag=!0;let n=yF(this.buffer);for(let i=0;iMath.pow(2,16)-1)return this.parseError=!0,Te;this.url.port=n===Wfe(this.url.scheme)?null:n,this.buffer=""}if(this.stateOverride)return!1;this.state="path start",--this.pointer}else return this.parseError=!0,Te;return!0};var d1e=new Set([47,92,63,35]);jt.prototype["parse file"]=function(e){return this.url.scheme="file",e===47||e===92?(e===92&&(this.parseError=!0),this.state="file slash"):this.base!==null&&this.base.scheme==="file"?isNaN(e)?(this.url.host=this.base.host,this.url.path=this.base.path.slice(),this.url.query=this.base.query):e===63?(this.url.host=this.base.host,this.url.path=this.base.path.slice(),this.url.query="",this.state="query"):e===35?(this.url.host=this.base.host,this.url.path=this.base.path.slice(),this.url.query=this.base.query,this.url.fragment="",this.state="fragment"):(this.input.length-this.pointer-1===0||!Yfe(e,this.input[this.pointer+1])||this.input.length-this.pointer-1>=2&&!d1e.has(this.input[this.pointer+2])?(this.url.host=this.base.host,this.url.path=this.base.path.slice(),bF(this.url)):this.parseError=!0,this.state="path",--this.pointer):(this.state="path",--this.pointer),!0};jt.prototype["parse file slash"]=function(e){return e===47||e===92?(e===92&&(this.parseError=!0),this.state="file host"):(this.base!==null&&this.base.scheme==="file"&&(Jfe(this.base.path[0])?this.url.path.push(this.base.path[0]):this.url.host=this.base.host),this.state="path",--this.pointer),!0};jt.prototype["parse file host"]=function(e,r){if(isNaN(e)||e===47||e===92||e===63||e===35)if(--this.pointer,!this.stateOverride&&QF(this.buffer))this.parseError=!0,this.state="path";else if(this.buffer===""){if(this.url.host="",this.stateOverride)return!1;this.state="path start"}else{let n=UQ(this.buffer,Br(this.url));if(n===Te)return Te;if(n==="localhost"&&(n=""),this.url.host=n,this.stateOverride)return!1;this.buffer="",this.state="path start"}else this.buffer+=r;return!0};jt.prototype["parse path start"]=function(e){return Br(this.url)?(e===92&&(this.parseError=!0),this.state="path",e!==47&&e!==92&&--this.pointer):!this.stateOverride&&e===63?(this.url.query="",this.state="query"):!this.stateOverride&&e===35?(this.url.fragment="",this.state="fragment"):e!==void 0&&(this.state="path",e!==47&&--this.pointer),!0};jt.prototype["parse path"]=function(e){if(isNaN(e)||e===47||Br(this.url)&&e===92||!this.stateOverride&&(e===63||e===35)){if(Br(this.url)&&e===92&&(this.parseError=!0),Hfe(this.buffer)?(bF(this.url),e!==47&&!(Br(this.url)&&e===92)&&this.url.path.push("")):IF(this.buffer)&&e!==47&&!(Br(this.url)&&e===92)?this.url.path.push(""):IF(this.buffer)||(this.url.scheme==="file"&&this.url.path.length===0&&QF(this.buffer)&&(this.url.host!==""&&this.url.host!==null&&(this.parseError=!0,this.url.host=""),this.buffer=this.buffer[0]+":"),this.url.path.push(this.buffer)),this.buffer="",this.url.scheme==="file"&&(e===void 0||e===63||e===35))for(;this.url.path.length>1&&this.url.path[0]==="";)this.parseError=!0,this.url.path.shift();e===63&&(this.url.query="",this.state="query"),e===35&&(this.url.fragment="",this.state="fragment")}else e===37&&(!vs(this.input[this.pointer+1])||!vs(this.input[this.pointer+2]))&&(this.parseError=!0),this.buffer+=Ol(e,SF);return!0};jt.prototype["parse cannot-be-a-base-URL path"]=function(e){return e===63?(this.url.query="",this.state="query"):e===35?(this.url.fragment="",this.state="fragment"):(!isNaN(e)&&e!==37&&(this.parseError=!0),e===37&&(!vs(this.input[this.pointer+1])||!vs(this.input[this.pointer+2]))&&(this.parseError=!0),isNaN(e)||(this.url.path[0]=this.url.path[0]+Ol(e,y2))),!0};jt.prototype["parse query"]=function(e,r){if(isNaN(e)||!this.stateOverride&&e===35){(!Br(this.url)||this.url.scheme==="ws"||this.url.scheme==="wss")&&(this.encodingOverride="utf-8");let n=new Buffer(this.buffer);for(let i=0;i126||n[i]===34||n[i]===35||n[i]===60||n[i]===62?this.url.query+=wF(n[i]):this.url.query+=String.fromCodePoint(n[i]);this.buffer="",e===35&&(this.url.fragment="",this.state="fragment")}else e===37&&(!vs(this.input[this.pointer+1])||!vs(this.input[this.pointer+2]))&&(this.parseError=!0),this.buffer+=r;return!0};jt.prototype["parse fragment"]=function(e){return isNaN(e)||(e===0?this.parseError=!0:(e===37&&(!vs(this.input[this.pointer+1])||!vs(this.input[this.pointer+2]))&&(this.parseError=!0),this.url.fragment+=Ol(e,y2))),!0};function p1e(t,e){let r=t.scheme+":";if(t.host!==null?(r+="//",(t.username!==""||t.password!=="")&&(r+=t.username,t.password!==""&&(r+=":"+t.password),r+="@"),r+=VQ(t.host),t.port!==null&&(r+=":"+t.port)):t.host===null&&t.scheme==="file"&&(r+="//"),t.cannotBeABaseURL)r+=t.path[0];else for(let n of t.path)r+="/"+n;return t.query!==null&&(r+="?"+t.query),!e&&t.fragment!==null&&(r+="#"+t.fragment),r}function u1e(t){let e=t.scheme+"://";return e+=VQ(t.host),t.port!==null&&(e+=":"+t.port),e}Bi.exports.serializeURL=p1e;Bi.exports.serializeURLOrigin=function(t){switch(t.scheme){case"blob":try{return Bi.exports.serializeURLOrigin(Bi.exports.parseURL(t.path[0]))}catch{return"null"}case"ftp":case"gopher":case"http":case"https":case"ws":case"wss":return u1e({scheme:t.scheme,host:t.host,port:t.port});case"file":return"file://";default:return"null"}};Bi.exports.basicURLParse=function(t,e){e===void 0&&(e={});let r=new jt(t,e.baseURL,e.encodingOverride,e.url,e.stateOverride);return r.failure?"failure":r.url};Bi.exports.setTheUsername=function(t,e){t.username="";let r=hp.ucs2.decode(e);for(let n=0;n{"use strict";var zt=aa();RF.implementation=class{constructor(e){let r=e[0],n=e[1],i=null;if(n!==void 0&&(i=zt.basicURLParse(n),i==="failure"))throw new TypeError("Invalid base URL");let s=zt.basicURLParse(r,{baseURL:i});if(s==="failure")throw new TypeError("Invalid URL");this._url=s}get href(){return zt.serializeURL(this._url)}set href(e){let r=zt.basicURLParse(e);if(r==="failure")throw new TypeError("Invalid URL");this._url=r}get origin(){return zt.serializeURLOrigin(this._url)}get protocol(){return this._url.scheme+":"}set protocol(e){zt.basicURLParse(e+":",{url:this._url,stateOverride:"scheme start"})}get username(){return this._url.username}set username(e){zt.cannotHaveAUsernamePasswordPort(this._url)||zt.setTheUsername(this._url,e)}get password(){return this._url.password}set password(e){zt.cannotHaveAUsernamePasswordPort(this._url)||zt.setThePassword(this._url,e)}get host(){let e=this._url;return e.host===null?"":e.port===null?zt.serializeHost(e.host):zt.serializeHost(e.host)+":"+zt.serializeInteger(e.port)}set host(e){this._url.cannotBeABaseURL||zt.basicURLParse(e,{url:this._url,stateOverride:"host"})}get hostname(){return this._url.host===null?"":zt.serializeHost(this._url.host)}set hostname(e){this._url.cannotBeABaseURL||zt.basicURLParse(e,{url:this._url,stateOverride:"hostname"})}get port(){return this._url.port===null?"":zt.serializeInteger(this._url.port)}set port(e){zt.cannotHaveAUsernamePasswordPort(this._url)||(e===""?this._url.port=null:zt.basicURLParse(e,{url:this._url,stateOverride:"port"}))}get pathname(){return this._url.cannotBeABaseURL?this._url.path[0]:this._url.path.length===0?"":"/"+this._url.path.join("/")}set pathname(e){this._url.cannotBeABaseURL||(this._url.path=[],zt.basicURLParse(e,{url:this._url,stateOverride:"path start"}))}get search(){return this._url.query===null||this._url.query===""?"":"?"+this._url.query}set search(e){let r=this._url;if(e===""){r.query=null;return}let n=e[0]==="?"?e.substring(1):e;r.query="",zt.basicURLParse(n,{url:r,stateOverride:"query"})}get hash(){return this._url.fragment===null||this._url.fragment===""?"":"#"+this._url.fragment}set hash(e){if(e===""){this._url.fragment=null;return}let r=e[0]==="#"?e.substring(1):e;this._url.fragment="",zt.basicURLParse(r,{url:this._url,stateOverride:"fragment"})}toJSON(){return this.href}}});var kF=g((S_e,Gh)=>{"use strict";var Zi=lF(),DF=cF(),TF=NF(),lt=DF.implSymbol;function Nr(t){if(!this||this[lt]||!(this instanceof Nr))throw new TypeError("Failed to construct 'URL': Please use the 'new' operator, this DOM object constructor cannot be called as a function.");if(arguments.length<1)throw new TypeError("Failed to construct 'URL': 1 argument required, but only "+arguments.length+" present.");let e=[];for(let r=0;r{"use strict";oa.URL=kF().interface;oa.serializeURL=aa().serializeURL;oa.serializeURLOrigin=aa().serializeURLOrigin;oa.basicURLParse=aa().basicURLParse;oa.setTheUsername=aa().setTheUsername;oa.setThePassword=aa().setThePassword;oa.serializeHost=aa().serializeHost;oa.serializeInteger=aa().serializeInteger;oa.parseURL=aa().parseURL});var YF=g((Ns,HF)=>{"use strict";Object.defineProperty(Ns,"__esModule",{value:!0});function yp(t){return t&&typeof t=="object"&&"default"in t?t.default:t}var Rs=yp(require("stream")),xF=yp(require("http")),I2=yp(require("url")),LF=yp(PF()),m1e=yp(require("https")),xl=yp(require("zlib")),h1e=Rs.Readable,to=Symbol("buffer"),GQ=Symbol("type"),Yh=class t{constructor(){this[GQ]="";let e=arguments[0],r=arguments[1],n=[],i=0;if(e){let a=e,o=Number(a.length);for(let A=0;A1&&arguments[1]!==void 0?arguments[1]:{},n=r.size;let i=n===void 0?0:n;var s=r.timeout;let a=s===void 0?0:s;t==null?t=null:FF(t)?t=Buffer.from(t.toString()):jh(t)||Buffer.isBuffer(t)||(Object.prototype.toString.call(t)==="[object ArrayBuffer]"?t=Buffer.from(t):ArrayBuffer.isView(t)?t=Buffer.from(t.buffer,t.byteOffset,t.byteLength):t instanceof Rs||(t=Buffer.from(String(t)))),this[no]={body:t,disturbed:!1,error:null},this.size=i,this.timeout=a,t instanceof Rs&&t.on("error",function(o){let A=o.name==="AbortError"?o:new Jr(`Invalid response body while trying to fetch ${e.url}: ${o.message}`,"system",o);e[no].error=A})}Tr.prototype={get body(){return this[no].body},get bodyUsed(){return this[no].disturbed},arrayBuffer(){return fp.call(this).then(function(t){return t.buffer.slice(t.byteOffset,t.byteOffset+t.byteLength)})},blob(){let t=this.headers&&this.headers.get("content-type")||"";return fp.call(this).then(function(e){return Object.assign(new Yh([],{type:t.toLowerCase()}),{[to]:e})})},json(){var t=this;return fp.call(this).then(function(e){try{return JSON.parse(e.toString())}catch(r){return Tr.Promise.reject(new Jr(`invalid json response body at ${t.url} reason: ${r.message}`,"invalid-json"))}})},text(){return fp.call(this).then(function(t){return t.toString()})},buffer(){return fp.call(this)},textConverted(){var t=this;return fp.call(this).then(function(e){return f1e(e,t.headers)})}};Object.defineProperties(Tr.prototype,{body:{enumerable:!0},bodyUsed:{enumerable:!0},arrayBuffer:{enumerable:!0},blob:{enumerable:!0},json:{enumerable:!0},text:{enumerable:!0}});Tr.mixIn=function(t){for(let e of Object.getOwnPropertyNames(Tr.prototype))if(!(e in t)){let r=Object.getOwnPropertyDescriptor(Tr.prototype,e);Object.defineProperty(t,e,r)}};function fp(){var t=this;if(this[no].disturbed)return Tr.Promise.reject(new TypeError(`body used already for: ${this.url}`));if(this[no].disturbed=!0,this[no].error)return Tr.Promise.reject(this[no].error);let e=this.body;if(e===null)return Tr.Promise.resolve(Buffer.alloc(0));if(jh(e)&&(e=e.stream()),Buffer.isBuffer(e))return Tr.Promise.resolve(e);if(!(e instanceof Rs))return Tr.Promise.resolve(Buffer.alloc(0));let r=[],n=0,i=!1;return new Tr.Promise(function(s,a){let o;t.timeout&&(o=setTimeout(function(){i=!0,a(new Jr(`Response timeout while trying to fetch ${t.url} (over ${t.timeout}ms)`,"body-timeout"))},t.timeout)),e.on("error",function(A){A.name==="AbortError"?(i=!0,a(A)):a(new Jr(`Invalid response body while trying to fetch ${t.url}: ${A.message}`,"system",A))}),e.on("data",function(A){if(!(i||A===null)){if(t.size&&n+A.length>t.size){i=!0,a(new Jr(`content size at ${t.url} over limit: ${t.size}`,"max-size"));return}n+=A.length,r.push(A)}}),e.on("end",function(){if(!i){clearTimeout(o);try{s(Buffer.concat(r,n))}catch(A){a(new Jr(`Could not create Buffer from response body for ${t.url}: ${A.message}`,"system",A))}}})})}function f1e(t,e){if(typeof jQ!="function")throw new Error("The package `encoding` must be installed to use the textConverted() function");let r=e.get("content-type"),n="utf-8",i,s;return r&&(i=/charset=([^;]*)/i.exec(r)),s=t.slice(0,1024).toString(),!i&&s&&(i=/0&&arguments[0]!==void 0?arguments[0]:void 0;if(this[ir]=Object.create(null),e instanceof t){let r=e.raw(),n=Object.keys(r);for(let i of n)for(let s of r[i])this.append(i,s);return}if(e!=null)if(typeof e=="object"){let r=e[Symbol.iterator];if(r!=null){if(typeof r!="function")throw new TypeError("Header pairs must be iterable");let n=[];for(let i of e){if(typeof i!="object"||typeof i[Symbol.iterator]!="function")throw new TypeError("Each header pair must be iterable");n.push(Array.from(i))}for(let i of n){if(i.length!==2)throw new TypeError("Each header pair must be a name/value tuple");this.append(i[0],i[1])}}else for(let n of Object.keys(e)){let i=e[n];this.append(n,i)}}else throw new TypeError("Provided initializer must be an object")}get(e){e=`${e}`,Hh(e);let r=gp(this[ir],e);return r===void 0?null:this[ir][r].join(", ")}forEach(e){let r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:void 0,n=WQ(this),i=0;for(;i1&&arguments[1]!==void 0?arguments[1]:"key+value";return Object.keys(t[ir]).sort().map(e==="key"?function(n){return n.toLowerCase()}:e==="value"?function(n){return t[ir][n].join(", ")}:function(n){return[n.toLowerCase(),t[ir][n].join(", ")]})}var $Q=Symbol("internal");function HQ(t,e){let r=Object.create(KQ);return r[$Q]={target:t,kind:e,index:0},r}var KQ=Object.setPrototypeOf({next(){if(!this||Object.getPrototypeOf(this)!==KQ)throw new TypeError("Value of `this` is not a HeadersIterator");var t=this[$Q];let e=t.target,r=t.kind,n=t.index,i=WQ(e,r),s=i.length;return n>=s?{value:void 0,done:!0}:(this[$Q].index=n+1,{value:i[n],done:!1})}},Object.getPrototypeOf(Object.getPrototypeOf([][Symbol.iterator]())));Object.defineProperty(KQ,Symbol.toStringTag,{value:"HeadersIterator",writable:!1,enumerable:!1,configurable:!0});function E1e(t){let e=Object.assign({__proto__:null},t[ir]),r=gp(t[ir],"Host");return r!==void 0&&(e[r]=e[r][0]),e}function y1e(t){let e=new ts;for(let r of Object.keys(t))if(!GF.test(r))if(Array.isArray(t[r]))for(let n of t[r])zQ.test(n)||(e[ir][r]===void 0?e[ir][r]=[n]:e[ir][r].push(n));else zQ.test(t[r])||(e[ir][r]=[t[r]]);return e}var pA=Symbol("Response internals"),C1e=xF.STATUS_CODES,es=class t{constructor(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:null,r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};Tr.call(this,e,r);let n=r.status||200,i=new ts(r.headers);if(e!=null&&!i.has("Content-Type")){let s=qF(e);s&&i.append("Content-Type",s)}this[pA]={url:r.url,status:n,statusText:r.statusText||C1e[n],headers:i,counter:r.counter}}get url(){return this[pA].url||""}get status(){return this[pA].status}get ok(){return this[pA].status>=200&&this[pA].status<300}get redirected(){return this[pA].counter>0}get statusText(){return this[pA].statusText}get headers(){return this[pA].headers}clone(){return new t(UF(this),{url:this.url,status:this.status,statusText:this.statusText,headers:this.headers,ok:this.ok,redirected:this.redirected})}};Tr.mixIn(es.prototype);Object.defineProperties(es.prototype,{url:{enumerable:!0},status:{enumerable:!0},ok:{enumerable:!0},redirected:{enumerable:!0},statusText:{enumerable:!0},headers:{enumerable:!0},clone:{enumerable:!0}});Object.defineProperty(es.prototype,Symbol.toStringTag,{value:"Response",writable:!1,enumerable:!1,configurable:!0});var ro=Symbol("Request internals"),I1e=I2.URL||LF.URL,B1e=I2.parse,Q1e=I2.format;function YQ(t){return/^[a-zA-Z][a-zA-Z\d+\-.]*:/.exec(t)&&(t=new I1e(t).toString()),B1e(t)}var w1e="destroy"in Rs.Readable.prototype;function C2(t){return typeof t=="object"&&typeof t[ro]=="object"}function S1e(t){let e=t&&typeof t=="object"&&Object.getPrototypeOf(t);return!!(e&&e.constructor.name==="AbortSignal")}var mA=class t{constructor(e){let r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},n;C2(e)?n=YQ(e.url):(e&&e.href?n=YQ(e.href):n=YQ(`${e}`),e={});let i=r.method||e.method||"GET";if(i=i.toUpperCase(),(r.body!=null||C2(e)&&e.body!==null)&&(i==="GET"||i==="HEAD"))throw new TypeError("Request with GET/HEAD method cannot have body");let s=r.body!=null?r.body:C2(e)&&e.body!==null?UF(e):null;Tr.call(this,s,{timeout:r.timeout||e.timeout||0,size:r.size||e.size||0});let a=new ts(r.headers||e.headers||{});if(s!=null&&!a.has("Content-Type")){let A=qF(s);A&&a.append("Content-Type",A)}let o=C2(e)?e.signal:null;if("signal"in r&&(o=r.signal),o!=null&&!S1e(o))throw new TypeError("Expected signal to be an instanceof AbortSignal");this[ro]={method:i,redirect:r.redirect||e.redirect||"follow",headers:a,parsedURL:n,signal:o},this.follow=r.follow!==void 0?r.follow:e.follow!==void 0?e.follow:20,this.compress=r.compress!==void 0?r.compress:e.compress!==void 0?e.compress:!0,this.counter=r.counter||e.counter||0,this.agent=r.agent||e.agent}get method(){return this[ro].method}get url(){return Q1e(this[ro].parsedURL)}get headers(){return this[ro].headers}get redirect(){return this[ro].redirect}get signal(){return this[ro].signal}clone(){return new t(this)}};Tr.mixIn(mA.prototype);Object.defineProperty(mA.prototype,Symbol.toStringTag,{value:"Request",writable:!1,enumerable:!1,configurable:!0});Object.defineProperties(mA.prototype,{method:{enumerable:!0},url:{enumerable:!0},headers:{enumerable:!0},redirect:{enumerable:!0},clone:{enumerable:!0},signal:{enumerable:!0}});function b1e(t){let e=t[ro].parsedURL,r=new ts(t[ro].headers);if(r.has("Accept")||r.set("Accept","*/*"),!e.protocol||!e.hostname)throw new TypeError("Only absolute URLs are supported");if(!/^https?:$/.test(e.protocol))throw new TypeError("Only HTTP(S) protocols are supported");if(t.signal&&t.body instanceof Rs.Readable&&!w1e)throw new Error("Cancellation of streamed requests with AbortSignal is not supported in node < 8");let n=null;if(t.body==null&&/^(POST|PUT)$/i.test(t.method)&&(n="0"),t.body!=null){let s=VF(t);typeof s=="number"&&(n=String(s))}n&&r.set("Content-Length",n),r.has("User-Agent")||r.set("User-Agent","node-fetch/1.0 (+https://github.com/bitinn/node-fetch)"),t.compress&&!r.has("Accept-Encoding")&&r.set("Accept-Encoding","gzip,deflate");let i=t.agent;return typeof i=="function"&&(i=i(e)),Object.assign({},e,{method:t.method,headers:E1e(r),agent:i})}function Ep(t){Error.call(this,t),this.type="aborted",this.message=t,Error.captureStackTrace(this,this.constructor)}Ep.prototype=Object.create(Error.prototype);Ep.prototype.constructor=Ep;Ep.prototype.name="AbortError";var Jh=I2.URL||LF.URL,OF=Rs.PassThrough,v1e=function(e,r){let n=new Jh(r).hostname,i=new Jh(e).hostname;return n===i||n[n.length-i.length-1]==="."&&n.endsWith(i)},R1e=function(e,r){let n=new Jh(r).protocol,i=new Jh(e).protocol;return n===i};function uA(t,e){if(!uA.Promise)throw new Error("native promise missing, set fetch.Promise to your favorite alternative");return Tr.Promise=uA.Promise,new uA.Promise(function(r,n){let i=new mA(t,e),s=b1e(i),a=(s.protocol==="https:"?m1e:xF).request,o=i.signal,A=null,l=function(){let h=new Ep("The user aborted a request.");n(h),i.body&&i.body instanceof Rs.Readable&&JQ(i.body,h),!(!A||!A.body)&&A.body.emit("error",h)};if(o&&o.aborted){l();return}let c=function(){l(),u()},d=a(s),p;o&&o.addEventListener("abort",c);function u(){d.abort(),o&&o.removeEventListener("abort",c),clearTimeout(p)}i.timeout&&d.once("socket",function(m){p=setTimeout(function(){n(new Jr(`network timeout at: ${i.url}`,"request-timeout")),u()},i.timeout)}),d.on("error",function(m){n(new Jr(`request to ${i.url} failed, reason: ${m.message}`,"system",m)),A&&A.body&&JQ(A.body,m),u()}),N1e(d,function(m){o&&o.aborted||A&&A.body&&JQ(A.body,m)}),parseInt(process.version.substring(1))<14&&d.on("socket",function(m){m.addListener("close",function(h){let f=m.listenerCount("data")>0;if(A&&f&&!h&&!(o&&o.aborted)){let E=new Error("Premature close");E.code="ERR_STREAM_PREMATURE_CLOSE",A.body.emit("error",E)}})}),d.on("response",function(m){clearTimeout(p);let h=y1e(m.headers);if(uA.isRedirect(m.statusCode)){let Q=h.get("Location"),C=null;try{C=Q===null?null:new Jh(Q,i.url).toString()}catch{if(i.redirect!=="manual"){n(new Jr(`uri requested responds with an invalid redirect URL: ${Q}`,"invalid-redirect")),u();return}}switch(i.redirect){case"error":n(new Jr(`uri requested responds with a redirect, redirect mode is set to error: ${i.url}`,"no-redirect")),u();return;case"manual":if(C!==null)try{h.set("Location",C)}catch(b){n(b)}break;case"follow":if(C===null)break;if(i.counter>=i.follow){n(new Jr(`maximum redirect reached at: ${i.url}`,"max-redirect")),u();return}let w={headers:new ts(i.headers),follow:i.follow,counter:i.counter+1,agent:i.agent,compress:i.compress,method:i.method,body:i.body,signal:i.signal,timeout:i.timeout,size:i.size};if(!v1e(i.url,C)||!R1e(i.url,C))for(let b of["authorization","www-authenticate","cookie","cookie2"])w.headers.delete(b);if(m.statusCode!==303&&i.body&&VF(i)===null){n(new Jr("Cannot follow redirect with body being a readable stream","unsupported-redirect")),u();return}(m.statusCode===303||(m.statusCode===301||m.statusCode===302)&&i.method==="POST")&&(w.method="GET",w.body=void 0,w.headers.delete("content-length")),r(uA(new mA(C,w))),u();return}}m.once("end",function(){o&&o.removeEventListener("abort",c)});let f=m.pipe(new OF),E={url:i.url,status:m.statusCode,statusText:m.statusMessage,headers:h,size:i.size,timeout:i.timeout,counter:i.counter},y=h.get("Content-Encoding");if(!i.compress||i.method==="HEAD"||y===null||m.statusCode===204||m.statusCode===304){A=new es(f,E),r(A);return}let B={flush:xl.Z_SYNC_FLUSH,finishFlush:xl.Z_SYNC_FLUSH};if(y=="gzip"||y=="x-gzip"){f=f.pipe(xl.createGunzip(B)),A=new es(f,E),r(A);return}if(y=="deflate"||y=="x-deflate"){let Q=m.pipe(new OF);Q.once("data",function(C){(C[0]&15)===8?f=f.pipe(xl.createInflate()):f=f.pipe(xl.createInflateRaw()),A=new es(f,E),r(A)}),Q.on("end",function(){A||(A=new es(f,E),r(A))});return}if(y=="br"&&typeof xl.createBrotliDecompress=="function"){f=f.pipe(xl.createBrotliDecompress()),A=new es(f,E),r(A);return}A=new es(f,E),r(A)}),g1e(d,i)})}function N1e(t,e){let r;t.on("socket",function(n){r=n}),t.on("response",function(n){let i=n.headers;i["transfer-encoding"]==="chunked"&&!i["content-length"]&&n.once("close",function(s){if(r&&r.listenerCount("data")>0&&!s){let o=new Error("Premature close");o.code="ERR_STREAM_PREMATURE_CLOSE",e(o)}})})}function JQ(t,e){t.destroy?t.destroy(e):(t.emit("error",e),t.end())}uA.isRedirect=function(t){return t===301||t===302||t===303||t===307||t===308};uA.Promise=global.Promise;HF.exports=Ns=uA;Object.defineProperty(Ns,"__esModule",{value:!0});Ns.default=Ns;Ns.Headers=ts;Ns.Request=mA;Ns.Response=es;Ns.FetchError=Jr;Ns.AbortError=Ep});var $F=g(hA=>{"use strict";var XQ=hA&&hA.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(hA,"__esModule",{value:!0});hA.installBicepCliWithArch=hA.getBicepCliDownloadUrl=void 0;var T1e=XQ(require("path")),JF=XQ(require("fs/promises")),jF=XQ(YF()),zF="https://downloads.bicep.azure.com",D1e=`${zF}/releases/latest`,Cp=(t,e)=>`${zF}/${t}/${e}`;async function k1e(){let t=await(0,jF.default)(D1e);if(!t.ok)throw`Failed to find latest release of Bicep CLI. Status code: ${t.status}`;return(await t.json()).tag_name}function P1e(t,e,r){switch(`${t}_${e}`.toLowerCase()){case"win32_x64":return Cp(r,"bicep-win-x64.exe");case"win32_arm64":return Cp(r,"bicep-win-arm64.exe");case"linux_x64":return Cp(r,"bicep-linux-x64");case"linux_arm64":return Cp(r,"bicep-linux-arm64");case"darwin_x64":return Cp(r,"bicep-osx-x64");case"darwin_arm64":return Cp(r,"bicep-osx-arm64");default:throw`Bicep CLI is not available for platform ${t} and architecture ${e}`}}async function WF(t,e,r){let n=r?`v${r}`:await k1e();return P1e(t,e,n)}hA.getBicepCliDownloadUrl=WF;async function _1e(t,e,r,n){let i=e==="win32"?"bicep.exe":"bicep",s=await WF(e,r,n),a=await(0,jF.default)(s);if(!a.ok)throw`Failed to download Bicep CLI. Status code: ${a.status}`;let o=await a.arrayBuffer(),A=T1e.default.join(t,i);return await JF.default.writeFile(A,Buffer.from(o)),await JF.default.chmod(A,493),A}hA.installBicepCliWithArch=_1e});var Ip=g(dn=>{"use strict";Object.defineProperty(dn,"__esModule",{value:!0});dn.stringArray=dn.array=dn.func=dn.error=dn.number=dn.string=dn.boolean=void 0;function M1e(t){return t===!0||t===!1}dn.boolean=M1e;function KF(t){return typeof t=="string"||t instanceof String}dn.string=KF;function O1e(t){return typeof t=="number"||t instanceof Number}dn.number=O1e;function x1e(t){return t instanceof Error}dn.error=x1e;function L1e(t){return typeof t=="function"}dn.func=L1e;function XF(t){return Array.isArray(t)}dn.array=XF;function F1e(t){return XF(t)&&t.every(e=>KF(e))}dn.stringArray=F1e});var Q8=g(te=>{"use strict";Object.defineProperty(te,"__esModule",{value:!0});te.Message=te.NotificationType9=te.NotificationType8=te.NotificationType7=te.NotificationType6=te.NotificationType5=te.NotificationType4=te.NotificationType3=te.NotificationType2=te.NotificationType1=te.NotificationType0=te.NotificationType=te.RequestType9=te.RequestType8=te.RequestType7=te.RequestType6=te.RequestType5=te.RequestType4=te.RequestType3=te.RequestType2=te.RequestType1=te.RequestType=te.RequestType0=te.AbstractMessageSignature=te.ParameterStructures=te.ResponseError=te.ErrorCodes=void 0;var Ll=Ip(),ZQ;(function(t){t.ParseError=-32700,t.InvalidRequest=-32600,t.MethodNotFound=-32601,t.InvalidParams=-32602,t.InternalError=-32603,t.jsonrpcReservedErrorRangeStart=-32099,t.serverErrorStart=-32099,t.MessageWriteError=-32099,t.MessageReadError=-32098,t.PendingResponseRejected=-32097,t.ConnectionInactive=-32096,t.ServerNotInitialized=-32002,t.UnknownErrorCode=-32001,t.jsonrpcReservedErrorRangeEnd=-32e3,t.serverErrorEnd=-32e3})(ZQ||(te.ErrorCodes=ZQ={}));var e8=class t extends Error{constructor(e,r,n){super(r),this.code=Ll.number(e)?e:ZQ.UnknownErrorCode,this.data=n,Object.setPrototypeOf(this,t.prototype)}toJson(){let e={code:this.code,message:this.message};return this.data!==void 0&&(e.data=this.data),e}};te.ResponseError=e8;var Kn=class t{constructor(e){this.kind=e}static is(e){return e===t.auto||e===t.byName||e===t.byPosition}toString(){return this.kind}};te.ParameterStructures=Kn;Kn.auto=new Kn("auto");Kn.byPosition=new Kn("byPosition");Kn.byName=new Kn("byName");var St=class{constructor(e,r){this.method=e,this.numberOfParams=r}get parameterStructures(){return Kn.auto}};te.AbstractMessageSignature=St;var t8=class extends St{constructor(e){super(e,0)}};te.RequestType0=t8;var r8=class extends St{constructor(e,r=Kn.auto){super(e,1),this._parameterStructures=r}get parameterStructures(){return this._parameterStructures}};te.RequestType=r8;var n8=class extends St{constructor(e,r=Kn.auto){super(e,1),this._parameterStructures=r}get parameterStructures(){return this._parameterStructures}};te.RequestType1=n8;var i8=class extends St{constructor(e){super(e,2)}};te.RequestType2=i8;var s8=class extends St{constructor(e){super(e,3)}};te.RequestType3=s8;var a8=class extends St{constructor(e){super(e,4)}};te.RequestType4=a8;var o8=class extends St{constructor(e){super(e,5)}};te.RequestType5=o8;var A8=class extends St{constructor(e){super(e,6)}};te.RequestType6=A8;var l8=class extends St{constructor(e){super(e,7)}};te.RequestType7=l8;var c8=class extends St{constructor(e){super(e,8)}};te.RequestType8=c8;var d8=class extends St{constructor(e){super(e,9)}};te.RequestType9=d8;var p8=class extends St{constructor(e,r=Kn.auto){super(e,1),this._parameterStructures=r}get parameterStructures(){return this._parameterStructures}};te.NotificationType=p8;var u8=class extends St{constructor(e){super(e,0)}};te.NotificationType0=u8;var m8=class extends St{constructor(e,r=Kn.auto){super(e,1),this._parameterStructures=r}get parameterStructures(){return this._parameterStructures}};te.NotificationType1=m8;var h8=class extends St{constructor(e){super(e,2)}};te.NotificationType2=h8;var f8=class extends St{constructor(e){super(e,3)}};te.NotificationType3=f8;var g8=class extends St{constructor(e){super(e,4)}};te.NotificationType4=g8;var E8=class extends St{constructor(e){super(e,5)}};te.NotificationType5=E8;var y8=class extends St{constructor(e){super(e,6)}};te.NotificationType6=y8;var C8=class extends St{constructor(e){super(e,7)}};te.NotificationType7=C8;var I8=class extends St{constructor(e){super(e,8)}};te.NotificationType8=I8;var B8=class extends St{constructor(e){super(e,9)}};te.NotificationType9=B8;var ZF;(function(t){function e(i){let s=i;return s&&Ll.string(s.method)&&(Ll.string(s.id)||Ll.number(s.id))}t.isRequest=e;function r(i){let s=i;return s&&Ll.string(s.method)&&i.id===void 0}t.isNotification=r;function n(i){let s=i;return s&&(s.result!==void 0||!!s.error)&&(Ll.string(s.id)||Ll.number(s.id)||s.id===null)}t.isResponse=n})(ZF||(te.Message=ZF={}))});var S8=g(fA=>{"use strict";var eU;Object.defineProperty(fA,"__esModule",{value:!0});fA.LRUCache=fA.LinkedMap=fA.Touch=void 0;var pn;(function(t){t.None=0,t.First=1,t.AsOld=t.First,t.Last=2,t.AsNew=t.Last})(pn||(fA.Touch=pn={}));var B2=class{constructor(){this[eU]="LinkedMap",this._map=new Map,this._head=void 0,this._tail=void 0,this._size=0,this._state=0}clear(){this._map.clear(),this._head=void 0,this._tail=void 0,this._size=0,this._state++}isEmpty(){return!this._head&&!this._tail}get size(){return this._size}get first(){return this._head?.value}get last(){return this._tail?.value}has(e){return this._map.has(e)}get(e,r=pn.None){let n=this._map.get(e);if(n)return r!==pn.None&&this.touch(n,r),n.value}set(e,r,n=pn.None){let i=this._map.get(e);if(i)i.value=r,n!==pn.None&&this.touch(i,n);else{switch(i={key:e,value:r,next:void 0,previous:void 0},n){case pn.None:this.addItemLast(i);break;case pn.First:this.addItemFirst(i);break;case pn.Last:this.addItemLast(i);break;default:this.addItemLast(i);break}this._map.set(e,i),this._size++}return this}delete(e){return!!this.remove(e)}remove(e){let r=this._map.get(e);if(r)return this._map.delete(e),this.removeItem(r),this._size--,r.value}shift(){if(!this._head&&!this._tail)return;if(!this._head||!this._tail)throw new Error("Invalid list");let e=this._head;return this._map.delete(e.key),this.removeItem(e),this._size--,e.value}forEach(e,r){let n=this._state,i=this._head;for(;i;){if(r?e.bind(r)(i.value,i.key,this):e(i.value,i.key,this),this._state!==n)throw new Error("LinkedMap got modified during iteration.");i=i.next}}keys(){let e=this._state,r=this._head,n={[Symbol.iterator]:()=>n,next:()=>{if(this._state!==e)throw new Error("LinkedMap got modified during iteration.");if(r){let i={value:r.key,done:!1};return r=r.next,i}else return{value:void 0,done:!0}}};return n}values(){let e=this._state,r=this._head,n={[Symbol.iterator]:()=>n,next:()=>{if(this._state!==e)throw new Error("LinkedMap got modified during iteration.");if(r){let i={value:r.value,done:!1};return r=r.next,i}else return{value:void 0,done:!0}}};return n}entries(){let e=this._state,r=this._head,n={[Symbol.iterator]:()=>n,next:()=>{if(this._state!==e)throw new Error("LinkedMap got modified during iteration.");if(r){let i={value:[r.key,r.value],done:!1};return r=r.next,i}else return{value:void 0,done:!0}}};return n}[(eU=Symbol.toStringTag,Symbol.iterator)](){return this.entries()}trimOld(e){if(e>=this.size)return;if(e===0){this.clear();return}let r=this._head,n=this.size;for(;r&&n>e;)this._map.delete(r.key),r=r.next,n--;this._head=r,this._size=n,r&&(r.previous=void 0),this._state++}addItemFirst(e){if(!this._head&&!this._tail)this._tail=e;else if(this._head)e.next=this._head,this._head.previous=e;else throw new Error("Invalid list");this._head=e,this._state++}addItemLast(e){if(!this._head&&!this._tail)this._head=e;else if(this._tail)e.previous=this._tail,this._tail.next=e;else throw new Error("Invalid list");this._tail=e,this._state++}removeItem(e){if(e===this._head&&e===this._tail)this._head=void 0,this._tail=void 0;else if(e===this._head){if(!e.next)throw new Error("Invalid list");e.next.previous=void 0,this._head=e.next}else if(e===this._tail){if(!e.previous)throw new Error("Invalid list");e.previous.next=void 0,this._tail=e.previous}else{let r=e.next,n=e.previous;if(!r||!n)throw new Error("Invalid list");r.previous=n,n.next=r}e.next=void 0,e.previous=void 0,this._state++}touch(e,r){if(!this._head||!this._tail)throw new Error("Invalid list");if(!(r!==pn.First&&r!==pn.Last)){if(r===pn.First){if(e===this._head)return;let n=e.next,i=e.previous;e===this._tail?(i.next=void 0,this._tail=i):(n.previous=i,i.next=n),e.previous=void 0,e.next=this._head,this._head.previous=e,this._head=e,this._state++}else if(r===pn.Last){if(e===this._tail)return;let n=e.next,i=e.previous;e===this._head?(n.previous=void 0,this._head=n):(n.previous=i,i.next=n),e.next=void 0,e.previous=this._tail,this._tail.next=e,this._tail=e,this._state++}}}toJSON(){let e=[];return this.forEach((r,n)=>{e.push([n,r])}),e}fromJSON(e){this.clear();for(let[r,n]of e)this.set(r,n)}};fA.LinkedMap=B2;var w8=class extends B2{constructor(e,r=1){super(),this._limit=e,this._ratio=Math.min(Math.max(0,r),1)}get limit(){return this._limit}set limit(e){this._limit=e,this.checkTrim()}get ratio(){return this._ratio}set ratio(e){this._ratio=Math.min(Math.max(0,e),1),this.checkTrim()}get(e,r=pn.AsNew){return super.get(e,r)}peek(e){return super.get(e,pn.None)}set(e,r){return super.set(e,r,pn.Last),this.checkTrim(),this}checkTrim(){this.size>this._limit&&this.trimOld(Math.round(this._limit*this._ratio))}};fA.LRUCache=w8});var rU=g(Q2=>{"use strict";Object.defineProperty(Q2,"__esModule",{value:!0});Q2.Disposable=void 0;var tU;(function(t){function e(r){return{dispose:r}}t.create=e})(tU||(Q2.Disposable=tU={}))});var gA=g(R8=>{"use strict";Object.defineProperty(R8,"__esModule",{value:!0});var b8;function v8(){if(b8===void 0)throw new Error("No runtime abstraction layer installed");return b8}(function(t){function e(r){if(r===void 0)throw new Error("No runtime abstraction layer provided");b8=r}t.install=e})(v8||(v8={}));R8.default=v8});var Qp=g(Bp=>{"use strict";Object.defineProperty(Bp,"__esModule",{value:!0});Bp.Emitter=Bp.Event=void 0;var U1e=gA(),nU;(function(t){let e={dispose(){}};t.None=function(){return e}})(nU||(Bp.Event=nU={}));var N8=class{add(e,r=null,n){this._callbacks||(this._callbacks=[],this._contexts=[]),this._callbacks.push(e),this._contexts.push(r),Array.isArray(n)&&n.push({dispose:()=>this.remove(e,r)})}remove(e,r=null){if(!this._callbacks)return;let n=!1;for(let i=0,s=this._callbacks.length;i{this._callbacks||(this._callbacks=new N8),this._options&&this._options.onFirstListenerAdd&&this._callbacks.isEmpty()&&this._options.onFirstListenerAdd(this),this._callbacks.add(e,r);let i={dispose:()=>{this._callbacks&&(this._callbacks.remove(e,r),i.dispose=t._noop,this._options&&this._options.onLastListenerRemove&&this._callbacks.isEmpty()&&this._options.onLastListenerRemove(this))}};return Array.isArray(n)&&n.push(i),i}),this._event}fire(e){this._callbacks&&this._callbacks.invoke.call(this._callbacks,e)}dispose(){this._callbacks&&(this._callbacks.dispose(),this._callbacks=void 0)}};Bp.Emitter=w2;w2._noop=function(){}});var v2=g(wp=>{"use strict";Object.defineProperty(wp,"__esModule",{value:!0});wp.CancellationTokenSource=wp.CancellationToken=void 0;var q1e=gA(),V1e=Ip(),T8=Qp(),S2;(function(t){t.None=Object.freeze({isCancellationRequested:!1,onCancellationRequested:T8.Event.None}),t.Cancelled=Object.freeze({isCancellationRequested:!0,onCancellationRequested:T8.Event.None});function e(r){let n=r;return n&&(n===t.None||n===t.Cancelled||V1e.boolean(n.isCancellationRequested)&&!!n.onCancellationRequested)}t.is=e})(S2||(wp.CancellationToken=S2={}));var G1e=Object.freeze(function(t,e){let r=(0,q1e.default)().timer.setTimeout(t.bind(e),0);return{dispose(){r.dispose()}}}),b2=class{constructor(){this._isCancelled=!1}cancel(){this._isCancelled||(this._isCancelled=!0,this._emitter&&(this._emitter.fire(void 0),this.dispose()))}get isCancellationRequested(){return this._isCancelled}get onCancellationRequested(){return this._isCancelled?G1e:(this._emitter||(this._emitter=new T8.Emitter),this._emitter.event)}dispose(){this._emitter&&(this._emitter.dispose(),this._emitter=void 0)}},D8=class{get token(){return this._token||(this._token=new b2),this._token}cancel(){this._token?this._token.cancel():this._token=S2.Cancelled}dispose(){this._token?this._token instanceof b2&&this._token.dispose():this._token=S2.None}};wp.CancellationTokenSource=D8});var iU=g(Sp=>{"use strict";Object.defineProperty(Sp,"__esModule",{value:!0});Sp.SharedArrayReceiverStrategy=Sp.SharedArraySenderStrategy=void 0;var H1e=v2(),zh;(function(t){t.Continue=0,t.Cancelled=1})(zh||(zh={}));var k8=class{constructor(){this.buffers=new Map}enableCancellation(e){if(e.id===null)return;let r=new SharedArrayBuffer(4),n=new Int32Array(r,0,1);n[0]=zh.Continue,this.buffers.set(e.id,r),e.$cancellationData=r}async sendCancellation(e,r){let n=this.buffers.get(r);if(n===void 0)return;let i=new Int32Array(n,0,1);Atomics.store(i,0,zh.Cancelled)}cleanup(e){this.buffers.delete(e)}dispose(){this.buffers.clear()}};Sp.SharedArraySenderStrategy=k8;var P8=class{constructor(e){this.data=new Int32Array(e,0,1)}get isCancellationRequested(){return Atomics.load(this.data,0)===zh.Cancelled}get onCancellationRequested(){throw new Error("Cancellation over SharedArrayBuffer doesn't support cancellation events")}},_8=class{constructor(e){this.token=new P8(e)}cancel(){}dispose(){}},M8=class{constructor(){this.kind="request"}createCancellationTokenSource(e){let r=e.$cancellationData;return r===void 0?new H1e.CancellationTokenSource:new _8(r)}};Sp.SharedArrayReceiverStrategy=M8});var x8=g(R2=>{"use strict";Object.defineProperty(R2,"__esModule",{value:!0});R2.Semaphore=void 0;var Y1e=gA(),O8=class{constructor(e=1){if(e<=0)throw new Error("Capacity must be greater than 0");this._capacity=e,this._active=0,this._waiting=[]}lock(e){return new Promise((r,n)=>{this._waiting.push({thunk:e,resolve:r,reject:n}),this.runNext()})}get active(){return this._active}runNext(){this._waiting.length===0||this._active===this._capacity||(0,Y1e.default)().timer.setImmediate(()=>this.doRunNext())}doRunNext(){if(this._waiting.length===0||this._active===this._capacity)return;let e=this._waiting.shift();if(this._active++,this._active>this._capacity)throw new Error("To many thunks active");try{let r=e.thunk();r instanceof Promise?r.then(n=>{this._active--,e.resolve(n),this.runNext()},n=>{this._active--,e.reject(n),this.runNext()}):(this._active--,e.resolve(r),this.runNext())}catch(r){this._active--,e.reject(r),this.runNext()}}};R2.Semaphore=O8});var aU=g(EA=>{"use strict";Object.defineProperty(EA,"__esModule",{value:!0});EA.ReadableStreamMessageReader=EA.AbstractMessageReader=EA.MessageReader=void 0;var F8=gA(),bp=Ip(),L8=Qp(),J1e=x8(),sU;(function(t){function e(r){let n=r;return n&&bp.func(n.listen)&&bp.func(n.dispose)&&bp.func(n.onError)&&bp.func(n.onClose)&&bp.func(n.onPartialMessage)}t.is=e})(sU||(EA.MessageReader=sU={}));var N2=class{constructor(){this.errorEmitter=new L8.Emitter,this.closeEmitter=new L8.Emitter,this.partialMessageEmitter=new L8.Emitter}dispose(){this.errorEmitter.dispose(),this.closeEmitter.dispose()}get onError(){return this.errorEmitter.event}fireError(e){this.errorEmitter.fire(this.asError(e))}get onClose(){return this.closeEmitter.event}fireClose(){this.closeEmitter.fire(void 0)}get onPartialMessage(){return this.partialMessageEmitter.event}firePartialMessage(e){this.partialMessageEmitter.fire(e)}asError(e){return e instanceof Error?e:new Error(`Reader received error. Reason: ${bp.string(e.message)?e.message:"unknown"}`)}};EA.AbstractMessageReader=N2;var U8;(function(t){function e(r){let n,i,s,a=new Map,o,A=new Map;if(r===void 0||typeof r=="string")n=r??"utf-8";else{if(n=r.charset??"utf-8",r.contentDecoder!==void 0&&(s=r.contentDecoder,a.set(s.name,s)),r.contentDecoders!==void 0)for(let l of r.contentDecoders)a.set(l.name,l);if(r.contentTypeDecoder!==void 0&&(o=r.contentTypeDecoder,A.set(o.name,o)),r.contentTypeDecoders!==void 0)for(let l of r.contentTypeDecoders)A.set(l.name,l)}return o===void 0&&(o=(0,F8.default)().applicationJson.decoder,A.set(o.name,o)),{charset:n,contentDecoder:s,contentDecoders:a,contentTypeDecoder:o,contentTypeDecoders:A}}t.fromOptions=e})(U8||(U8={}));var q8=class extends N2{constructor(e,r){super(),this.readable=e,this.options=U8.fromOptions(r),this.buffer=(0,F8.default)().messageBuffer.create(this.options.charset),this._partialMessageTimeout=1e4,this.nextMessageLength=-1,this.messageToken=0,this.readSemaphore=new J1e.Semaphore(1)}set partialMessageTimeout(e){this._partialMessageTimeout=e}get partialMessageTimeout(){return this._partialMessageTimeout}listen(e){this.nextMessageLength=-1,this.messageToken=0,this.partialMessageTimer=void 0,this.callback=e;let r=this.readable.onData(n=>{this.onData(n)});return this.readable.onError(n=>this.fireError(n)),this.readable.onClose(()=>this.fireClose()),r}onData(e){try{for(this.buffer.append(e);;){if(this.nextMessageLength===-1){let n=this.buffer.tryReadHeaders(!0);if(!n)return;let i=n.get("content-length");if(!i){this.fireError(new Error(`Header must provide a Content-Length property. -${JSON.stringify(Object.fromEntries(n))}`));return}let s=parseInt(i);if(isNaN(s)){this.fireError(new Error(`Content-Length value must be a number. Got ${i}`));return}this.nextMessageLength=s}let r=this.buffer.tryReadBody(this.nextMessageLength);if(r===void 0){this.setPartialMessageTimer();return}this.clearPartialMessageTimer(),this.nextMessageLength=-1,this.readSemaphore.lock(async()=>{let n=this.options.contentDecoder!==void 0?await this.options.contentDecoder.decode(r):r,i=await this.options.contentTypeDecoder.decode(n,this.options);this.callback(i)}).catch(n=>{this.fireError(n)})}}catch(r){this.fireError(r)}}clearPartialMessageTimer(){this.partialMessageTimer&&(this.partialMessageTimer.dispose(),this.partialMessageTimer=void 0)}setPartialMessageTimer(){this.clearPartialMessageTimer(),!(this._partialMessageTimeout<=0)&&(this.partialMessageTimer=(0,F8.default)().timer.setTimeout((e,r)=>{this.partialMessageTimer=void 0,e===this.messageToken&&(this.firePartialMessage({messageToken:e,waitingTime:r}),this.setPartialMessageTimer())},this._partialMessageTimeout,this.messageToken,this._partialMessageTimeout))}};EA.ReadableStreamMessageReader=q8});var dU=g(yA=>{"use strict";Object.defineProperty(yA,"__esModule",{value:!0});yA.WriteableStreamMessageWriter=yA.AbstractMessageWriter=yA.MessageWriter=void 0;var oU=gA(),Wh=Ip(),j1e=x8(),AU=Qp(),z1e="Content-Length: ",lU=`\r -`,cU;(function(t){function e(r){let n=r;return n&&Wh.func(n.dispose)&&Wh.func(n.onClose)&&Wh.func(n.onError)&&Wh.func(n.write)}t.is=e})(cU||(yA.MessageWriter=cU={}));var T2=class{constructor(){this.errorEmitter=new AU.Emitter,this.closeEmitter=new AU.Emitter}dispose(){this.errorEmitter.dispose(),this.closeEmitter.dispose()}get onError(){return this.errorEmitter.event}fireError(e,r,n){this.errorEmitter.fire([this.asError(e),r,n])}get onClose(){return this.closeEmitter.event}fireClose(){this.closeEmitter.fire(void 0)}asError(e){return e instanceof Error?e:new Error(`Writer received error. Reason: ${Wh.string(e.message)?e.message:"unknown"}`)}};yA.AbstractMessageWriter=T2;var V8;(function(t){function e(r){return r===void 0||typeof r=="string"?{charset:r??"utf-8",contentTypeEncoder:(0,oU.default)().applicationJson.encoder}:{charset:r.charset??"utf-8",contentEncoder:r.contentEncoder,contentTypeEncoder:r.contentTypeEncoder??(0,oU.default)().applicationJson.encoder}}t.fromOptions=e})(V8||(V8={}));var G8=class extends T2{constructor(e,r){super(),this.writable=e,this.options=V8.fromOptions(r),this.errorCount=0,this.writeSemaphore=new j1e.Semaphore(1),this.writable.onError(n=>this.fireError(n)),this.writable.onClose(()=>this.fireClose())}async write(e){return this.writeSemaphore.lock(async()=>this.options.contentTypeEncoder.encode(e,this.options).then(n=>this.options.contentEncoder!==void 0?this.options.contentEncoder.encode(n):n).then(n=>{let i=[];return i.push(z1e,n.byteLength.toString(),lU),i.push(lU),this.doWrite(e,i,n)},n=>{throw this.fireError(n),n}))}async doWrite(e,r,n){try{return await this.writable.write(r.join(""),"ascii"),this.writable.write(n)}catch(i){return this.handleError(i,e),Promise.reject(i)}}handleError(e,r){this.errorCount++,this.fireError(e,r,this.errorCount)}end(){this.writable.end()}};yA.WriteableStreamMessageWriter=G8});var pU=g(D2=>{"use strict";Object.defineProperty(D2,"__esModule",{value:!0});D2.AbstractMessageBuffer=void 0;var W1e=13,$1e=10,K1e=`\r -`,H8=class{constructor(e="utf-8"){this._encoding=e,this._chunks=[],this._totalLength=0}get encoding(){return this._encoding}append(e){let r=typeof e=="string"?this.fromString(e,this._encoding):e;this._chunks.push(r),this._totalLength+=r.byteLength}tryReadHeaders(e=!1){if(this._chunks.length===0)return;let r=0,n=0,i=0,s=0;e:for(;nthis._totalLength)throw new Error("Cannot read so many bytes!");if(this._chunks[0].byteLength===e){let s=this._chunks[0];return this._chunks.shift(),this._totalLength-=e,this.asNative(s)}if(this._chunks[0].byteLength>e){let s=this._chunks[0],a=this.asNative(s,e);return this._chunks[0]=s.slice(e),this._totalLength-=e,a}let r=this.allocNative(e),n=0,i=0;for(;e>0;){let s=this._chunks[i];if(s.byteLength>e){let a=s.slice(0,e);r.set(a,n),n+=e,this._chunks[i]=s.slice(e),this._totalLength-=e,e-=e}else r.set(s,n),n+=s.byteLength,this._chunks.shift(),this._totalLength-=s.byteLength,e-=s.byteLength}return r}};D2.AbstractMessageBuffer=H8});var gU=g(Be=>{"use strict";Object.defineProperty(Be,"__esModule",{value:!0});Be.createMessageConnection=Be.ConnectionOptions=Be.MessageStrategy=Be.CancellationStrategy=Be.CancellationSenderStrategy=Be.CancellationReceiverStrategy=Be.RequestCancellationReceiverStrategy=Be.IdCancellationReceiverStrategy=Be.ConnectionStrategy=Be.ConnectionError=Be.ConnectionErrors=Be.LogTraceNotification=Be.SetTraceNotification=Be.TraceFormat=Be.TraceValues=Be.Trace=Be.NullLogger=Be.ProgressType=Be.ProgressToken=void 0;var uU=gA(),xt=Ip(),le=Q8(),mU=S8(),$h=Qp(),Y8=v2(),Zh;(function(t){t.type=new le.NotificationType("$/cancelRequest")})(Zh||(Zh={}));var J8;(function(t){function e(r){return typeof r=="string"||typeof r=="number"}t.is=e})(J8||(Be.ProgressToken=J8={}));var Kh;(function(t){t.type=new le.NotificationType("$/progress")})(Kh||(Kh={}));var j8=class{constructor(){}};Be.ProgressType=j8;var z8;(function(t){function e(r){return xt.func(r)}t.is=e})(z8||(z8={}));Be.NullLogger=Object.freeze({error:()=>{},warn:()=>{},info:()=>{},log:()=>{}});var je;(function(t){t[t.Off=0]="Off",t[t.Messages=1]="Messages",t[t.Compact=2]="Compact",t[t.Verbose=3]="Verbose"})(je||(Be.Trace=je={}));var hU;(function(t){t.Off="off",t.Messages="messages",t.Compact="compact",t.Verbose="verbose"})(hU||(Be.TraceValues=hU={}));(function(t){function e(n){if(!xt.string(n))return t.Off;switch(n=n.toLowerCase(),n){case"off":return t.Off;case"messages":return t.Messages;case"compact":return t.Compact;case"verbose":return t.Verbose;default:return t.Off}}t.fromString=e;function r(n){switch(n){case t.Off:return"off";case t.Messages:return"messages";case t.Compact:return"compact";case t.Verbose:return"verbose";default:return"off"}}t.toString=r})(je||(Be.Trace=je={}));var Qi;(function(t){t.Text="text",t.JSON="json"})(Qi||(Be.TraceFormat=Qi={}));(function(t){function e(r){return xt.string(r)?(r=r.toLowerCase(),r==="json"?t.JSON:t.Text):t.Text}t.fromString=e})(Qi||(Be.TraceFormat=Qi={}));var W8;(function(t){t.type=new le.NotificationType("$/setTrace")})(W8||(Be.SetTraceNotification=W8={}));var k2;(function(t){t.type=new le.NotificationType("$/logTrace")})(k2||(Be.LogTraceNotification=k2={}));var Xh;(function(t){t[t.Closed=1]="Closed",t[t.Disposed=2]="Disposed",t[t.AlreadyListening=3]="AlreadyListening"})(Xh||(Be.ConnectionErrors=Xh={}));var vp=class t extends Error{constructor(e,r){super(r),this.code=e,Object.setPrototypeOf(this,t.prototype)}};Be.ConnectionError=vp;var $8;(function(t){function e(r){let n=r;return n&&xt.func(n.cancelUndispatched)}t.is=e})($8||(Be.ConnectionStrategy=$8={}));var P2;(function(t){function e(r){let n=r;return n&&(n.kind===void 0||n.kind==="id")&&xt.func(n.createCancellationTokenSource)&&(n.dispose===void 0||xt.func(n.dispose))}t.is=e})(P2||(Be.IdCancellationReceiverStrategy=P2={}));var K8;(function(t){function e(r){let n=r;return n&&n.kind==="request"&&xt.func(n.createCancellationTokenSource)&&(n.dispose===void 0||xt.func(n.dispose))}t.is=e})(K8||(Be.RequestCancellationReceiverStrategy=K8={}));var _2;(function(t){t.Message=Object.freeze({createCancellationTokenSource(r){return new Y8.CancellationTokenSource}});function e(r){return P2.is(r)||K8.is(r)}t.is=e})(_2||(Be.CancellationReceiverStrategy=_2={}));var M2;(function(t){t.Message=Object.freeze({sendCancellation(r,n){return r.sendNotification(Zh.type,{id:n})},cleanup(r){}});function e(r){let n=r;return n&&xt.func(n.sendCancellation)&&xt.func(n.cleanup)}t.is=e})(M2||(Be.CancellationSenderStrategy=M2={}));var O2;(function(t){t.Message=Object.freeze({receiver:_2.Message,sender:M2.Message});function e(r){let n=r;return n&&_2.is(n.receiver)&&M2.is(n.sender)}t.is=e})(O2||(Be.CancellationStrategy=O2={}));var x2;(function(t){function e(r){let n=r;return n&&xt.func(n.handleMessage)}t.is=e})(x2||(Be.MessageStrategy=x2={}));var fU;(function(t){function e(r){let n=r;return n&&(O2.is(n.cancellationStrategy)||$8.is(n.connectionStrategy)||x2.is(n.messageStrategy))}t.is=e})(fU||(Be.ConnectionOptions=fU={}));var Ts;(function(t){t[t.New=1]="New",t[t.Listening=2]="Listening",t[t.Closed=3]="Closed",t[t.Disposed=4]="Disposed"})(Ts||(Ts={}));function X1e(t,e,r,n){let i=r!==void 0?r:Be.NullLogger,s=0,a=0,o=0,A="2.0",l,c=new Map,d,p=new Map,u=new Map,m,h=new mU.LinkedMap,f=new Map,E=new Set,y=new Map,B=je.Off,Q=Qi.Text,C,w=Ts.New,b=new $h.Emitter,v=new $h.Emitter,q=new $h.Emitter,L=new $h.Emitter,V=new $h.Emitter,O=n&&n.cancellationStrategy?n.cancellationStrategy:O2.Message;function ye(I){if(I===null)throw new Error("Can't send requests with id null since the response can't be correlated.");return"req-"+I.toString()}function Ze(I){return I===null?"res-unknown-"+(++o).toString():"res-"+I.toString()}function Oi(){return"not-"+(++a).toString()}function Er(I,x){le.Message.isRequest(x)?I.set(ye(x.id),x):le.Message.isResponse(x)?I.set(Ze(x.id),x):I.set(Oi(),x)}function hs(I){}function il(){return w===Ts.Listening}function Oo(){return w===Ts.Closed}function xi(){return w===Ts.Disposed}function id(){(w===Ts.New||w===Ts.Listening)&&(w=Ts.Closed,v.fire(void 0))}function fm(I){b.fire([I,void 0,void 0])}function cr(I){b.fire(I)}t.onClose(id),t.onError(fm),e.onClose(id),e.onError(cr);function di(){m||h.size===0||(m=(0,uU.default)().timer.setImmediate(()=>{m=void 0,D4()}))}function Li(I){le.Message.isRequest(I)?rZ(I):le.Message.isNotification(I)?iZ(I):le.Message.isResponse(I)?nZ(I):sZ(I)}function D4(){if(h.size===0)return;let I=h.shift();try{let x=n?.messageStrategy;x2.is(x)?x.handleMessage(I,Li):Li(I)}finally{di()}}let tZ=I=>{try{if(le.Message.isNotification(I)&&I.method===Zh.type.method){let x=I.params.id,H=ye(x),ee=h.get(H);if(le.Message.isRequest(ee)){let nt=n?.connectionStrategy,Vt=nt&&nt.cancelUndispatched?nt.cancelUndispatched(ee,hs):void 0;if(Vt&&(Vt.error!==void 0||Vt.result!==void 0)){h.delete(H),y.delete(x),Vt.id=ee.id,Eg(Vt,I.method,Date.now()),e.write(Vt).catch(()=>i.error("Sending response for canceled message failed."));return}}let Ct=y.get(x);if(Ct!==void 0){Ct.cancel(),k4(I);return}else E.add(x)}Er(h,I)}finally{di()}};function rZ(I){if(xi())return;function x(Ge,_t,et){let yr={jsonrpc:A,id:I.id};Ge instanceof le.ResponseError?yr.error=Ge.toJson():yr.result=Ge===void 0?null:Ge,Eg(yr,_t,et),e.write(yr).catch(()=>i.error("Sending response failed."))}function H(Ge,_t,et){let yr={jsonrpc:A,id:I.id,error:Ge.toJson()};Eg(yr,_t,et),e.write(yr).catch(()=>i.error("Sending response failed."))}function ee(Ge,_t,et){Ge===void 0&&(Ge=null);let yr={jsonrpc:A,id:I.id,result:Ge};Eg(yr,_t,et),e.write(yr).catch(()=>i.error("Sending response failed."))}AZ(I);let Ct=c.get(I.method),nt,Vt;Ct&&(nt=Ct.type,Vt=Ct.handler);let Zt=Date.now();if(Vt||l){let Ge=I.id??String(Date.now()),_t=P2.is(O.receiver)?O.receiver.createCancellationTokenSource(Ge):O.receiver.createCancellationTokenSource(I);I.id!==null&&E.has(I.id)&&_t.cancel(),I.id!==null&&y.set(Ge,_t);try{let et;if(Vt)if(I.params===void 0){if(nt!==void 0&&nt.numberOfParams!==0){H(new le.ResponseError(le.ErrorCodes.InvalidParams,`Request ${I.method} defines ${nt.numberOfParams} params but received none.`),I.method,Zt);return}et=Vt(_t.token)}else if(Array.isArray(I.params)){if(nt!==void 0&&nt.parameterStructures===le.ParameterStructures.byName){H(new le.ResponseError(le.ErrorCodes.InvalidParams,`Request ${I.method} defines parameters by name but received parameters by position`),I.method,Zt);return}et=Vt(...I.params,_t.token)}else{if(nt!==void 0&&nt.parameterStructures===le.ParameterStructures.byPosition){H(new le.ResponseError(le.ErrorCodes.InvalidParams,`Request ${I.method} defines parameters by position but received parameters by name`),I.method,Zt);return}et=Vt(I.params,_t.token)}else l&&(et=l(I.method,I.params,_t.token));let yr=et;et?yr.then?yr.then(fn=>{y.delete(Ge),x(fn,I.method,Zt)},fn=>{y.delete(Ge),fn instanceof le.ResponseError?H(fn,I.method,Zt):fn&&xt.string(fn.message)?H(new le.ResponseError(le.ErrorCodes.InternalError,`Request ${I.method} failed with message: ${fn.message}`),I.method,Zt):H(new le.ResponseError(le.ErrorCodes.InternalError,`Request ${I.method} failed unexpectedly without providing any details.`),I.method,Zt)}):(y.delete(Ge),x(et,I.method,Zt)):(y.delete(Ge),ee(et,I.method,Zt))}catch(et){y.delete(Ge),et instanceof le.ResponseError?x(et,I.method,Zt):et&&xt.string(et.message)?H(new le.ResponseError(le.ErrorCodes.InternalError,`Request ${I.method} failed with message: ${et.message}`),I.method,Zt):H(new le.ResponseError(le.ErrorCodes.InternalError,`Request ${I.method} failed unexpectedly without providing any details.`),I.method,Zt)}}else H(new le.ResponseError(le.ErrorCodes.MethodNotFound,`Unhandled method ${I.method}`),I.method,Zt)}function nZ(I){if(!xi())if(I.id===null)I.error?i.error(`Received response message without id: Error is: -${JSON.stringify(I.error,void 0,4)}`):i.error("Received response message without id. No further error information provided.");else{let x=I.id,H=f.get(x);if(lZ(I,H),H!==void 0){f.delete(x);try{if(I.error){let ee=I.error;H.reject(new le.ResponseError(ee.code,ee.message,ee.data))}else if(I.result!==void 0)H.resolve(I.result);else throw new Error("Should never happen.")}catch(ee){ee.message?i.error(`Response handler '${H.method}' failed with message: ${ee.message}`):i.error(`Response handler '${H.method}' failed unexpectedly.`)}}}}function iZ(I){if(xi())return;let x,H;if(I.method===Zh.type.method){let ee=I.params.id;E.delete(ee),k4(I);return}else{let ee=p.get(I.method);ee&&(H=ee.handler,x=ee.type)}if(H||d)try{if(k4(I),H)if(I.params===void 0)x!==void 0&&x.numberOfParams!==0&&x.parameterStructures!==le.ParameterStructures.byName&&i.error(`Notification ${I.method} defines ${x.numberOfParams} params but received none.`),H();else if(Array.isArray(I.params)){let ee=I.params;I.method===Kh.type.method&&ee.length===2&&J8.is(ee[0])?H({token:ee[0],value:ee[1]}):(x!==void 0&&(x.parameterStructures===le.ParameterStructures.byName&&i.error(`Notification ${I.method} defines parameters by name but received parameters by position`),x.numberOfParams!==I.params.length&&i.error(`Notification ${I.method} defines ${x.numberOfParams} params but received ${ee.length} arguments`)),H(...ee))}else x!==void 0&&x.parameterStructures===le.ParameterStructures.byPosition&&i.error(`Notification ${I.method} defines parameters by position but received parameters by name`),H(I.params);else d&&d(I.method,I.params)}catch(ee){ee.message?i.error(`Notification handler '${I.method}' failed with message: ${ee.message}`):i.error(`Notification handler '${I.method}' failed unexpectedly.`)}else q.fire(I)}function sZ(I){if(!I){i.error("Received empty message.");return}i.error(`Received message which is neither a response nor a notification message: -${JSON.stringify(I,null,4)}`);let x=I;if(xt.string(x.id)||xt.number(x.id)){let H=x.id,ee=f.get(H);ee&&ee.reject(new Error("The received response has neither a result nor an error property."))}}function xo(I){if(I!=null)switch(B){case je.Verbose:return JSON.stringify(I,null,4);case je.Compact:return JSON.stringify(I);default:return}}function aZ(I){if(!(B===je.Off||!C))if(Q===Qi.Text){let x;(B===je.Verbose||B===je.Compact)&&I.params&&(x=`Params: ${xo(I.params)} - -`),C.log(`Sending request '${I.method} - (${I.id})'.`,x)}else sd("send-request",I)}function oZ(I){if(!(B===je.Off||!C))if(Q===Qi.Text){let x;(B===je.Verbose||B===je.Compact)&&(I.params?x=`Params: ${xo(I.params)} - -`:x=`No parameters provided. - -`),C.log(`Sending notification '${I.method}'.`,x)}else sd("send-notification",I)}function Eg(I,x,H){if(!(B===je.Off||!C))if(Q===Qi.Text){let ee;(B===je.Verbose||B===je.Compact)&&(I.error&&I.error.data?ee=`Error data: ${xo(I.error.data)} - -`:I.result?ee=`Result: ${xo(I.result)} - -`:I.error===void 0&&(ee=`No result returned. - -`)),C.log(`Sending response '${x} - (${I.id})'. Processing request took ${Date.now()-H}ms`,ee)}else sd("send-response",I)}function AZ(I){if(!(B===je.Off||!C))if(Q===Qi.Text){let x;(B===je.Verbose||B===je.Compact)&&I.params&&(x=`Params: ${xo(I.params)} - -`),C.log(`Received request '${I.method} - (${I.id})'.`,x)}else sd("receive-request",I)}function k4(I){if(!(B===je.Off||!C||I.method===k2.type.method))if(Q===Qi.Text){let x;(B===je.Verbose||B===je.Compact)&&(I.params?x=`Params: ${xo(I.params)} - -`:x=`No parameters provided. - -`),C.log(`Received notification '${I.method}'.`,x)}else sd("receive-notification",I)}function lZ(I,x){if(!(B===je.Off||!C))if(Q===Qi.Text){let H;if((B===je.Verbose||B===je.Compact)&&(I.error&&I.error.data?H=`Error data: ${xo(I.error.data)} - -`:I.result?H=`Result: ${xo(I.result)} - -`:I.error===void 0&&(H=`No result returned. - -`)),x){let ee=I.error?` Request failed: ${I.error.message} (${I.error.code}).`:"";C.log(`Received response '${x.method} - (${I.id})' in ${Date.now()-x.timerStart}ms.${ee}`,H)}else C.log(`Received response ${I.id} without active response promise.`,H)}else sd("receive-response",I)}function sd(I,x){if(!C||B===je.Off)return;let H={isLSPMessage:!0,type:I,message:x,timestamp:Date.now()};C.log(H)}function gm(){if(Oo())throw new vp(Xh.Closed,"Connection is closed.");if(xi())throw new vp(Xh.Disposed,"Connection is disposed.")}function cZ(){if(il())throw new vp(Xh.AlreadyListening,"Connection is already listening")}function dZ(){if(!il())throw new Error("Call listen() first.")}function Em(I){return I===void 0?null:I}function kR(I){if(I!==null)return I}function PR(I){return I!=null&&!Array.isArray(I)&&typeof I=="object"}function P4(I,x){switch(I){case le.ParameterStructures.auto:return PR(x)?kR(x):[Em(x)];case le.ParameterStructures.byName:if(!PR(x))throw new Error("Received parameters by name but param is not an object literal.");return kR(x);case le.ParameterStructures.byPosition:return[Em(x)];default:throw new Error(`Unknown parameter structure ${I.toString()}`)}}function _R(I,x){let H,ee=I.numberOfParams;switch(ee){case 0:H=void 0;break;case 1:H=P4(I.parameterStructures,x[0]);break;default:H=[];for(let Ct=0;Ct{gm();let H,ee;if(xt.string(I)){H=I;let nt=x[0],Vt=0,Zt=le.ParameterStructures.auto;le.ParameterStructures.is(nt)&&(Vt=1,Zt=nt);let Ge=x.length,_t=Ge-Vt;switch(_t){case 0:ee=void 0;break;case 1:ee=P4(Zt,x[Vt]);break;default:if(Zt===le.ParameterStructures.byName)throw new Error(`Received ${_t} parameters for 'by Name' notification parameter structure.`);ee=x.slice(Vt,Ge).map(et=>Em(et));break}}else{let nt=x;H=I.method,ee=_R(I,nt)}let Ct={jsonrpc:A,method:H,params:ee};return oZ(Ct),e.write(Ct).catch(nt=>{throw i.error("Sending notification failed."),nt})},onNotification:(I,x)=>{gm();let H;return xt.func(I)?d=I:x&&(xt.string(I)?(H=I,p.set(I,{type:void 0,handler:x})):(H=I.method,p.set(I.method,{type:I,handler:x}))),{dispose:()=>{H!==void 0?p.delete(H):d=void 0}}},onProgress:(I,x,H)=>{if(u.has(x))throw new Error(`Progress handler for token ${x} already registered`);return u.set(x,H),{dispose:()=>{u.delete(x)}}},sendProgress:(I,x,H)=>ad.sendNotification(Kh.type,{token:x,value:H}),onUnhandledProgress:L.event,sendRequest:(I,...x)=>{gm(),dZ();let H,ee,Ct;if(xt.string(I)){H=I;let Ge=x[0],_t=x[x.length-1],et=0,yr=le.ParameterStructures.auto;le.ParameterStructures.is(Ge)&&(et=1,yr=Ge);let fn=x.length;Y8.CancellationToken.is(_t)&&(fn=fn-1,Ct=_t);let Vs=fn-et;switch(Vs){case 0:ee=void 0;break;case 1:ee=P4(yr,x[et]);break;default:if(yr===le.ParameterStructures.byName)throw new Error(`Received ${Vs} parameters for 'by Name' request parameter structure.`);ee=x.slice(et,fn).map(pZ=>Em(pZ));break}}else{let Ge=x;H=I.method,ee=_R(I,Ge);let _t=I.numberOfParams;Ct=Y8.CancellationToken.is(Ge[_t])?Ge[_t]:void 0}let nt=s++,Vt;Ct&&(Vt=Ct.onCancellationRequested(()=>{let Ge=O.sender.sendCancellation(ad,nt);return Ge===void 0?(i.log(`Received no promise from cancellation strategy when cancelling id ${nt}`),Promise.resolve()):Ge.catch(()=>{i.log(`Sending cancellation messages for id ${nt} failed`)})}));let Zt={jsonrpc:A,id:nt,method:H,params:ee};return aZ(Zt),typeof O.sender.enableCancellation=="function"&&O.sender.enableCancellation(Zt),new Promise(async(Ge,_t)=>{let et=Vs=>{Ge(Vs),O.sender.cleanup(nt),Vt?.dispose()},yr=Vs=>{_t(Vs),O.sender.cleanup(nt),Vt?.dispose()},fn={method:H,timerStart:Date.now(),resolve:et,reject:yr};try{f.set(nt,fn),await e.write(Zt)}catch(Vs){throw f.delete(nt),fn.reject(new le.ResponseError(le.ErrorCodes.MessageWriteError,Vs.message?Vs.message:"Unknown reason")),i.error("Sending request failed."),Vs}})},onRequest:(I,x)=>{gm();let H=null;return z8.is(I)?(H=void 0,l=I):xt.string(I)?(H=null,x!==void 0&&(H=I,c.set(I,{handler:x,type:void 0}))):x!==void 0&&(H=I.method,c.set(I.method,{type:I,handler:x})),{dispose:()=>{H!==null&&(H!==void 0?c.delete(H):l=void 0)}}},hasPendingResponse:()=>f.size>0,trace:async(I,x,H)=>{let ee=!1,Ct=Qi.Text;H!==void 0&&(xt.boolean(H)?ee=H:(ee=H.sendNotification||!1,Ct=H.traceFormat||Qi.Text)),B=I,Q=Ct,B===je.Off?C=void 0:C=x,ee&&!Oo()&&!xi()&&await ad.sendNotification(W8.type,{value:je.toString(I)})},onError:b.event,onClose:v.event,onUnhandledNotification:q.event,onDispose:V.event,end:()=>{e.end()},dispose:()=>{if(xi())return;w=Ts.Disposed,V.fire(void 0);let I=new le.ResponseError(le.ErrorCodes.PendingResponseRejected,"Pending response rejected since connection got disposed");for(let x of f.values())x.reject(I);f=new Map,y=new Map,E=new Set,h=new mU.LinkedMap,xt.func(e.dispose)&&e.dispose(),xt.func(t.dispose)&&t.dispose()},listen:()=>{gm(),cZ(),w=Ts.Listening,t.listen(tZ)},inspect:()=>{(0,uU.default)().console.log("inspect")}};return ad.onNotification(k2.type,I=>{if(B===je.Off||!C)return;let x=B===je.Verbose||B===je.Compact;C.log(I.message,x?I.verbose:void 0)}),ad.onNotification(Kh.type,I=>{let x=u.get(I.token);x?x(I.value):L.fire(I)}),ad}Be.createMessageConnection=X1e});var L2=g(T=>{"use strict";Object.defineProperty(T,"__esModule",{value:!0});T.ProgressType=T.ProgressToken=T.createMessageConnection=T.NullLogger=T.ConnectionOptions=T.ConnectionStrategy=T.AbstractMessageBuffer=T.WriteableStreamMessageWriter=T.AbstractMessageWriter=T.MessageWriter=T.ReadableStreamMessageReader=T.AbstractMessageReader=T.MessageReader=T.SharedArrayReceiverStrategy=T.SharedArraySenderStrategy=T.CancellationToken=T.CancellationTokenSource=T.Emitter=T.Event=T.Disposable=T.LRUCache=T.Touch=T.LinkedMap=T.ParameterStructures=T.NotificationType9=T.NotificationType8=T.NotificationType7=T.NotificationType6=T.NotificationType5=T.NotificationType4=T.NotificationType3=T.NotificationType2=T.NotificationType1=T.NotificationType0=T.NotificationType=T.ErrorCodes=T.ResponseError=T.RequestType9=T.RequestType8=T.RequestType7=T.RequestType6=T.RequestType5=T.RequestType4=T.RequestType3=T.RequestType2=T.RequestType1=T.RequestType0=T.RequestType=T.Message=T.RAL=void 0;T.MessageStrategy=T.CancellationStrategy=T.CancellationSenderStrategy=T.CancellationReceiverStrategy=T.ConnectionError=T.ConnectionErrors=T.LogTraceNotification=T.SetTraceNotification=T.TraceFormat=T.TraceValues=T.Trace=void 0;var ht=Q8();Object.defineProperty(T,"Message",{enumerable:!0,get:function(){return ht.Message}});Object.defineProperty(T,"RequestType",{enumerable:!0,get:function(){return ht.RequestType}});Object.defineProperty(T,"RequestType0",{enumerable:!0,get:function(){return ht.RequestType0}});Object.defineProperty(T,"RequestType1",{enumerable:!0,get:function(){return ht.RequestType1}});Object.defineProperty(T,"RequestType2",{enumerable:!0,get:function(){return ht.RequestType2}});Object.defineProperty(T,"RequestType3",{enumerable:!0,get:function(){return ht.RequestType3}});Object.defineProperty(T,"RequestType4",{enumerable:!0,get:function(){return ht.RequestType4}});Object.defineProperty(T,"RequestType5",{enumerable:!0,get:function(){return ht.RequestType5}});Object.defineProperty(T,"RequestType6",{enumerable:!0,get:function(){return ht.RequestType6}});Object.defineProperty(T,"RequestType7",{enumerable:!0,get:function(){return ht.RequestType7}});Object.defineProperty(T,"RequestType8",{enumerable:!0,get:function(){return ht.RequestType8}});Object.defineProperty(T,"RequestType9",{enumerable:!0,get:function(){return ht.RequestType9}});Object.defineProperty(T,"ResponseError",{enumerable:!0,get:function(){return ht.ResponseError}});Object.defineProperty(T,"ErrorCodes",{enumerable:!0,get:function(){return ht.ErrorCodes}});Object.defineProperty(T,"NotificationType",{enumerable:!0,get:function(){return ht.NotificationType}});Object.defineProperty(T,"NotificationType0",{enumerable:!0,get:function(){return ht.NotificationType0}});Object.defineProperty(T,"NotificationType1",{enumerable:!0,get:function(){return ht.NotificationType1}});Object.defineProperty(T,"NotificationType2",{enumerable:!0,get:function(){return ht.NotificationType2}});Object.defineProperty(T,"NotificationType3",{enumerable:!0,get:function(){return ht.NotificationType3}});Object.defineProperty(T,"NotificationType4",{enumerable:!0,get:function(){return ht.NotificationType4}});Object.defineProperty(T,"NotificationType5",{enumerable:!0,get:function(){return ht.NotificationType5}});Object.defineProperty(T,"NotificationType6",{enumerable:!0,get:function(){return ht.NotificationType6}});Object.defineProperty(T,"NotificationType7",{enumerable:!0,get:function(){return ht.NotificationType7}});Object.defineProperty(T,"NotificationType8",{enumerable:!0,get:function(){return ht.NotificationType8}});Object.defineProperty(T,"NotificationType9",{enumerable:!0,get:function(){return ht.NotificationType9}});Object.defineProperty(T,"ParameterStructures",{enumerable:!0,get:function(){return ht.ParameterStructures}});var X8=S8();Object.defineProperty(T,"LinkedMap",{enumerable:!0,get:function(){return X8.LinkedMap}});Object.defineProperty(T,"LRUCache",{enumerable:!0,get:function(){return X8.LRUCache}});Object.defineProperty(T,"Touch",{enumerable:!0,get:function(){return X8.Touch}});var Z1e=rU();Object.defineProperty(T,"Disposable",{enumerable:!0,get:function(){return Z1e.Disposable}});var EU=Qp();Object.defineProperty(T,"Event",{enumerable:!0,get:function(){return EU.Event}});Object.defineProperty(T,"Emitter",{enumerable:!0,get:function(){return EU.Emitter}});var yU=v2();Object.defineProperty(T,"CancellationTokenSource",{enumerable:!0,get:function(){return yU.CancellationTokenSource}});Object.defineProperty(T,"CancellationToken",{enumerable:!0,get:function(){return yU.CancellationToken}});var CU=iU();Object.defineProperty(T,"SharedArraySenderStrategy",{enumerable:!0,get:function(){return CU.SharedArraySenderStrategy}});Object.defineProperty(T,"SharedArrayReceiverStrategy",{enumerable:!0,get:function(){return CU.SharedArrayReceiverStrategy}});var Z8=aU();Object.defineProperty(T,"MessageReader",{enumerable:!0,get:function(){return Z8.MessageReader}});Object.defineProperty(T,"AbstractMessageReader",{enumerable:!0,get:function(){return Z8.AbstractMessageReader}});Object.defineProperty(T,"ReadableStreamMessageReader",{enumerable:!0,get:function(){return Z8.ReadableStreamMessageReader}});var e5=dU();Object.defineProperty(T,"MessageWriter",{enumerable:!0,get:function(){return e5.MessageWriter}});Object.defineProperty(T,"AbstractMessageWriter",{enumerable:!0,get:function(){return e5.AbstractMessageWriter}});Object.defineProperty(T,"WriteableStreamMessageWriter",{enumerable:!0,get:function(){return e5.WriteableStreamMessageWriter}});var ege=pU();Object.defineProperty(T,"AbstractMessageBuffer",{enumerable:!0,get:function(){return ege.AbstractMessageBuffer}});var jr=gU();Object.defineProperty(T,"ConnectionStrategy",{enumerable:!0,get:function(){return jr.ConnectionStrategy}});Object.defineProperty(T,"ConnectionOptions",{enumerable:!0,get:function(){return jr.ConnectionOptions}});Object.defineProperty(T,"NullLogger",{enumerable:!0,get:function(){return jr.NullLogger}});Object.defineProperty(T,"createMessageConnection",{enumerable:!0,get:function(){return jr.createMessageConnection}});Object.defineProperty(T,"ProgressToken",{enumerable:!0,get:function(){return jr.ProgressToken}});Object.defineProperty(T,"ProgressType",{enumerable:!0,get:function(){return jr.ProgressType}});Object.defineProperty(T,"Trace",{enumerable:!0,get:function(){return jr.Trace}});Object.defineProperty(T,"TraceValues",{enumerable:!0,get:function(){return jr.TraceValues}});Object.defineProperty(T,"TraceFormat",{enumerable:!0,get:function(){return jr.TraceFormat}});Object.defineProperty(T,"SetTraceNotification",{enumerable:!0,get:function(){return jr.SetTraceNotification}});Object.defineProperty(T,"LogTraceNotification",{enumerable:!0,get:function(){return jr.LogTraceNotification}});Object.defineProperty(T,"ConnectionErrors",{enumerable:!0,get:function(){return jr.ConnectionErrors}});Object.defineProperty(T,"ConnectionError",{enumerable:!0,get:function(){return jr.ConnectionError}});Object.defineProperty(T,"CancellationReceiverStrategy",{enumerable:!0,get:function(){return jr.CancellationReceiverStrategy}});Object.defineProperty(T,"CancellationSenderStrategy",{enumerable:!0,get:function(){return jr.CancellationSenderStrategy}});Object.defineProperty(T,"CancellationStrategy",{enumerable:!0,get:function(){return jr.CancellationStrategy}});Object.defineProperty(T,"MessageStrategy",{enumerable:!0,get:function(){return jr.MessageStrategy}});var tge=gA();T.RAL=tge.default});var QU=g(i5=>{"use strict";Object.defineProperty(i5,"__esModule",{value:!0});var IU=require("util"),io=L2(),F2=class t extends io.AbstractMessageBuffer{constructor(e="utf-8"){super(e)}emptyBuffer(){return t.emptyBuffer}fromString(e,r){return Buffer.from(e,r)}toString(e,r){return e instanceof Buffer?e.toString(r):new IU.TextDecoder(r).decode(e)}asNative(e,r){return r===void 0?e instanceof Buffer?e:Buffer.from(e):e instanceof Buffer?e.slice(0,r):Buffer.from(e,0,r)}allocNative(e){return Buffer.allocUnsafe(e)}};F2.emptyBuffer=Buffer.allocUnsafe(0);var t5=class{constructor(e){this.stream=e}onClose(e){return this.stream.on("close",e),io.Disposable.create(()=>this.stream.off("close",e))}onError(e){return this.stream.on("error",e),io.Disposable.create(()=>this.stream.off("error",e))}onEnd(e){return this.stream.on("end",e),io.Disposable.create(()=>this.stream.off("end",e))}onData(e){return this.stream.on("data",e),io.Disposable.create(()=>this.stream.off("data",e))}},r5=class{constructor(e){this.stream=e}onClose(e){return this.stream.on("close",e),io.Disposable.create(()=>this.stream.off("close",e))}onError(e){return this.stream.on("error",e),io.Disposable.create(()=>this.stream.off("error",e))}onEnd(e){return this.stream.on("end",e),io.Disposable.create(()=>this.stream.off("end",e))}write(e,r){return new Promise((n,i)=>{let s=a=>{a==null?n():i(a)};typeof e=="string"?this.stream.write(e,r,s):this.stream.write(e,s)})}end(){this.stream.end()}},BU=Object.freeze({messageBuffer:Object.freeze({create:t=>new F2(t)}),applicationJson:Object.freeze({encoder:Object.freeze({name:"application/json",encode:(t,e)=>{try{return Promise.resolve(Buffer.from(JSON.stringify(t,void 0,0),e.charset))}catch(r){return Promise.reject(r)}}}),decoder:Object.freeze({name:"application/json",decode:(t,e)=>{try{return t instanceof Buffer?Promise.resolve(JSON.parse(t.toString(e.charset))):Promise.resolve(JSON.parse(new IU.TextDecoder(e.charset).decode(t)))}catch(r){return Promise.reject(r)}}})}),stream:Object.freeze({asReadableStream:t=>new t5(t),asWritableStream:t=>new r5(t)}),console,timer:Object.freeze({setTimeout(t,e,...r){let n=setTimeout(t,e,...r);return{dispose:()=>clearTimeout(n)}},setImmediate(t,...e){let r=setImmediate(t,...e);return{dispose:()=>clearImmediate(r)}},setInterval(t,e,...r){let n=setInterval(t,e,...r);return{dispose:()=>clearInterval(n)}}})});function n5(){return BU}(function(t){function e(){io.RAL.install(BU)}t.install=e})(n5||(n5={}));i5.default=n5});var bU=g(xe=>{"use strict";var rge=xe&&xe.__createBinding||(Object.create?function(t,e,r,n){n===void 0&&(n=r);var i=Object.getOwnPropertyDescriptor(e,r);(!i||("get"in i?!e.__esModule:i.writable||i.configurable))&&(i={enumerable:!0,get:function(){return e[r]}}),Object.defineProperty(t,n,i)}:function(t,e,r,n){n===void 0&&(n=r),t[n]=e[r]}),nge=xe&&xe.__exportStar||function(t,e){for(var r in t)r!=="default"&&!Object.prototype.hasOwnProperty.call(e,r)&&rge(e,t,r)};Object.defineProperty(xe,"__esModule",{value:!0});xe.createMessageConnection=xe.createServerSocketTransport=xe.createClientSocketTransport=xe.createServerPipeTransport=xe.createClientPipeTransport=xe.generateRandomPipeName=xe.StreamMessageWriter=xe.StreamMessageReader=xe.SocketMessageWriter=xe.SocketMessageReader=xe.PortMessageWriter=xe.PortMessageReader=xe.IPCMessageWriter=xe.IPCMessageReader=void 0;var Rp=QU();Rp.default.install();var wU=require("path"),ige=require("os"),sge=require("crypto"),V2=require("net"),wi=L2();nge(L2(),xe);var s5=class extends wi.AbstractMessageReader{constructor(e){super(),this.process=e;let r=this.process;r.on("error",n=>this.fireError(n)),r.on("close",()=>this.fireClose())}listen(e){return this.process.on("message",e),wi.Disposable.create(()=>this.process.off("message",e))}};xe.IPCMessageReader=s5;var a5=class extends wi.AbstractMessageWriter{constructor(e){super(),this.process=e,this.errorCount=0;let r=this.process;r.on("error",n=>this.fireError(n)),r.on("close",()=>this.fireClose)}write(e){try{return typeof this.process.send=="function"&&this.process.send(e,void 0,void 0,r=>{r?(this.errorCount++,this.handleError(r,e)):this.errorCount=0}),Promise.resolve()}catch(r){return this.handleError(r,e),Promise.reject(r)}}handleError(e,r){this.errorCount++,this.fireError(e,r,this.errorCount)}end(){}};xe.IPCMessageWriter=a5;var o5=class extends wi.AbstractMessageReader{constructor(e){super(),this.onData=new wi.Emitter,e.on("close",()=>this.fireClose),e.on("error",r=>this.fireError(r)),e.on("message",r=>{this.onData.fire(r)})}listen(e){return this.onData.event(e)}};xe.PortMessageReader=o5;var A5=class extends wi.AbstractMessageWriter{constructor(e){super(),this.port=e,this.errorCount=0,e.on("close",()=>this.fireClose()),e.on("error",r=>this.fireError(r))}write(e){try{return this.port.postMessage(e),Promise.resolve()}catch(r){return this.handleError(r,e),Promise.reject(r)}}handleError(e,r){this.errorCount++,this.fireError(e,r,this.errorCount)}end(){}};xe.PortMessageWriter=A5;var Fl=class extends wi.ReadableStreamMessageReader{constructor(e,r="utf-8"){super((0,Rp.default)().stream.asReadableStream(e),r)}};xe.SocketMessageReader=Fl;var Ul=class extends wi.WriteableStreamMessageWriter{constructor(e,r){super((0,Rp.default)().stream.asWritableStream(e),r),this.socket=e}dispose(){super.dispose(),this.socket.destroy()}};xe.SocketMessageWriter=Ul;var U2=class extends wi.ReadableStreamMessageReader{constructor(e,r){super((0,Rp.default)().stream.asReadableStream(e),r)}};xe.StreamMessageReader=U2;var q2=class extends wi.WriteableStreamMessageWriter{constructor(e,r){super((0,Rp.default)().stream.asWritableStream(e),r)}};xe.StreamMessageWriter=q2;var SU=process.env.XDG_RUNTIME_DIR,age=new Map([["linux",107],["darwin",103]]);function oge(){let t=(0,sge.randomBytes)(21).toString("hex");if(process.platform==="win32")return`\\\\.\\pipe\\vscode-jsonrpc-${t}-sock`;let e;SU?e=wU.join(SU,`vscode-ipc-${t}.sock`):e=wU.join(ige.tmpdir(),`vscode-${t}.sock`);let r=age.get(process.platform);return r!==void 0&&e.length>r&&(0,Rp.default)().console.warn(`WARNING: IPC handle "${e}" is longer than ${r} characters.`),e}xe.generateRandomPipeName=oge;function Age(t,e="utf-8"){let r,n=new Promise((i,s)=>{r=i});return new Promise((i,s)=>{let a=(0,V2.createServer)(o=>{a.close(),r([new Fl(o,e),new Ul(o,e)])});a.on("error",s),a.listen(t,()=>{a.removeListener("error",s),i({onConnected:()=>n})})})}xe.createClientPipeTransport=Age;function lge(t,e="utf-8"){let r=(0,V2.createConnection)(t);return[new Fl(r,e),new Ul(r,e)]}xe.createServerPipeTransport=lge;function cge(t,e="utf-8"){let r,n=new Promise((i,s)=>{r=i});return new Promise((i,s)=>{let a=(0,V2.createServer)(o=>{a.close(),r([new Fl(o,e),new Ul(o,e)])});a.on("error",s),a.listen(t,"127.0.0.1",()=>{a.removeListener("error",s),i({onConnected:()=>n})})})}xe.createClientSocketTransport=cge;function dge(t,e="utf-8"){let r=(0,V2.createConnection)(t,"127.0.0.1");return[new Fl(r,e),new Ul(r,e)]}xe.createServerSocketTransport=dge;function pge(t){let e=t;return e.read!==void 0&&e.addListener!==void 0}function uge(t){let e=t;return e.write!==void 0&&e.addListener!==void 0}function mge(t,e,r,n){r||(r=wi.NullLogger);let i=pge(t)?new U2(t):t,s=uge(e)?new q2(e):e;return wi.ConnectionStrategy.is(n)&&(n={connectionStrategy:n}),(0,wi.createMessageConnection)(i,s,r,n)}xe.createMessageConnection=mge});var RU=g((H_e,vU)=>{"use strict";vU.exports=bU()});var kU=g(mr=>{"use strict";var NU=mr&&mr.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(mr,"__esModule",{value:!0});mr.openConnection=mr.hasMinimumVersion=mr.getFileReferencesRequestType=mr.getDeploymentGraphRequestType=mr.getMetadataRequestType=mr.compileParamsRequestType=mr.compileRequestType=mr.versionRequestType=void 0;var hge=NU(require("path")),fge=NU(require("os")),TU=require("child_process"),gge=require("crypto"),Ege=require("net"),so=RU();mr.versionRequestType=new so.RequestType("bicep/version");mr.compileRequestType=new so.RequestType("bicep/compile");mr.compileParamsRequestType=new so.RequestType("bicep/compileParams");mr.getMetadataRequestType=new so.RequestType("bicep/getMetadata");mr.getDeploymentGraphRequestType=new so.RequestType("bicep/getDeploymentGraph");mr.getFileReferencesRequestType=new so.RequestType("bicep/getFileReferences");function DU(t){let e="0.25.3";return{success:t.localeCompare(e,void 0,{numeric:!0,sensitivity:"base"})>=0,minimumVersion:e}}mr.hasMinimumVersion=DU;function yge(t){let e=(0,TU.spawnSync)(t,["--version"],{encoding:"utf-8"});if(e.status!==0)return`Failed to obtain valid Bicep version from '${t} --version'`;let r=e.stdout.match(/Bicep CLI version ([^ ]+) /);if(!r)return`Failed to obtain valid Bicep version from '${t} --version'`;let n=r[1],{success:i,minimumVersion:s}=DU(n);if(!i)return`A minimum Bicep version of ${s} is required. Detected version ${n} from '${t} --version'`}function Cge(){let t=(0,gge.randomBytes)(21).toString("hex");return process.platform==="win32"?`\\\\.\\pipe\\bicep-${t}-sock`:hge.default.join(fge.default.tmpdir(),`bicep-${t}.sock`)}function Ige(t,e){return new Promise((r,n)=>{let i=()=>{s.close(),n()},s=(0,Ege.createServer)(a=>{e.removeListener("exit",i),s.close(),r([new so.SocketMessageReader(a,"utf-8"),new so.SocketMessageWriter(a,"utf-8")])});e.on("exit",i),e.on("error",i),s.on("error",i),s.listen(t,()=>s.removeListener("error",i))})}async function Bge(t){let e=Cge(),r=(0,TU.spawn)(t,["jsonrpc","--pipe",e]),n="";r.stderr.on("data",c=>n+=c.toString());let i=new Promise((c,d)=>{r.on("error",p=>{d(`Failed to invoke '${t} jsonrpc'. Error: ${p}`)}),r.on("exit",()=>{let p=yge(t);d(p||`Failed to invoke '${t} jsonrpc'. Error: ${n}`)})}),s=Ige(e,r),a=await Promise.race([s,i]),[o,A]=a,l=(0,so.createMessageConnection)(o,A,console);return l.onDispose(()=>r.kill()),r.on("exit",()=>l.dispose()),l.listen(),l}mr.openConnection=Bge});var _U=g(Np=>{"use strict";var Qge=Np&&Np.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(Np,"__esModule",{value:!0});Np.Bicep=void 0;var G2=Qge(require("os")),PU=$F(),CA=kU(),l5=class t{constructor(e){this.connection=e}static async initialize(e){let r=await(0,CA.openConnection)(e),n=new t(r);try{let i=await n.version(),{success:s,minimumVersion:a}=(0,CA.hasMinimumVersion)(i);if(!s)throw new Error(`Bicep CLI version ${i} is not supported. Please install version ${a} or later.`);return n}catch(i){throw n.dispose(),i}}static async getDownloadUrl(e,r,n){return r??(r=G2.default.platform()),n??(n=G2.default.arch()),await(0,PU.getBicepCliDownloadUrl)(r,n,e)}static async install(e,r,n,i){return n??(n=G2.default.platform()),i??(i=G2.default.arch()),await(0,PU.installBicepCliWithArch)(e,n,i,r)}async version(){return(await this.connection.sendRequest(CA.versionRequestType,{})).version}async compile(e){return await this.connection.sendRequest(CA.compileRequestType,e)}async compileParams(e){return await this.connection.sendRequest(CA.compileParamsRequestType,e)}async getMetadata(e){return await this.connection.sendRequest(CA.getMetadataRequestType,e)}async getDeploymentGraph(e){return await this.connection.sendRequest(CA.getDeploymentGraphRequestType,e)}async getFileReferences(e){return await this.connection.sendRequest(CA.getFileReferencesRequestType,e)}dispose(){this.connection.dispose()}};Np.Bicep=l5});var OU=g(MU=>{"use strict";Object.defineProperty(MU,"__esModule",{value:!0})});var LU=g(IA=>{"use strict";var wge=IA&&IA.__createBinding||(Object.create?function(t,e,r,n){n===void 0&&(n=r);var i=Object.getOwnPropertyDescriptor(e,r);(!i||("get"in i?!e.__esModule:i.writable||i.configurable))&&(i={enumerable:!0,get:function(){return e[r]}}),Object.defineProperty(t,n,i)}:function(t,e,r,n){n===void 0&&(n=r),t[n]=e[r]}),xU=IA&&IA.__exportStar||function(t,e){for(var r in t)r!=="default"&&!Object.prototype.hasOwnProperty.call(e,r)&&wge(e,t,r)};Object.defineProperty(IA,"__esModule",{value:!0});xU(_U(),IA);xU(OU(),IA)});var Ao={};Ur(Ao,{__addDisposableResource:()=>qq,__assign:()=>ry,__asyncDelegator:()=>ft,__asyncGenerator:()=>ue,__asyncValues:()=>he,__await:()=>N,__awaiter:()=>Nq,__classPrivateFieldGet:()=>Lq,__classPrivateFieldIn:()=>Uq,__classPrivateFieldSet:()=>Fq,__createBinding:()=>sy,__decorate:()=>Bq,__disposeResources:()=>Vq,__esDecorate:()=>wq,__exportStar:()=>Dq,__extends:()=>Iq,__generator:()=>Tq,__importDefault:()=>xq,__importStar:()=>Oq,__makeTemplateObject:()=>Mq,__metadata:()=>Rq,__param:()=>Qq,__propKey:()=>bq,__read:()=>F5,__rest:()=>iy,__rewriteRelativeImportExtension:()=>Gq,__runInitializers:()=>Sq,__setFunctionName:()=>vq,__spread:()=>kq,__spreadArray:()=>_q,__spreadArrays:()=>Pq,__values:()=>ny,default:()=>Xge});function Iq(t,e){if(typeof e!="function"&&e!==null)throw new TypeError("Class extends value "+String(e)+" is not a constructor or null");x5(t,e);function r(){this.constructor=t}t.prototype=e===null?Object.create(e):(r.prototype=e.prototype,new r)}function iy(t,e){var r={};for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&e.indexOf(n)<0&&(r[n]=t[n]);if(t!=null&&typeof Object.getOwnPropertySymbols=="function")for(var i=0,n=Object.getOwnPropertySymbols(t);i=0;o--)(a=t[o])&&(s=(i<3?a(s):i>3?a(e,r,s):a(e,r))||s);return i>3&&s&&Object.defineProperty(e,r,s),s}function Qq(t,e){return function(r,n){e(r,n,t)}}function wq(t,e,r,n,i,s){function a(E){if(E!==void 0&&typeof E!="function")throw new TypeError("Function expected");return E}for(var o=n.kind,A=o==="getter"?"get":o==="setter"?"set":"value",l=!e&&t?n.static?t:t.prototype:null,c=e||(l?Object.getOwnPropertyDescriptor(l,n.name):{}),d,p=!1,u=r.length-1;u>=0;u--){var m={};for(var h in n)m[h]=h==="access"?{}:n[h];for(var h in n.access)m.access[h]=n.access[h];m.addInitializer=function(E){if(p)throw new TypeError("Cannot add initializers after decoration has completed");s.push(a(E||null))};var f=(0,r[u])(o==="accessor"?{get:c.get,set:c.set}:c[A],m);if(o==="accessor"){if(f===void 0)continue;if(f===null||typeof f!="object")throw new TypeError("Object expected");(d=a(f.get))&&(c.get=d),(d=a(f.set))&&(c.set=d),(d=a(f.init))&&i.unshift(d)}else(d=a(f))&&(o==="field"?i.unshift(d):c[A]=d)}l&&Object.defineProperty(l,n.name,c),p=!0}function Sq(t,e,r){for(var n=arguments.length>2,i=0;i0&&s[s.length-1])&&(l[0]===6||l[0]===2)){r=0;continue}if(l[0]===3&&(!s||l[1]>s[0]&&l[1]=t.length&&(t=void 0),{value:t&&t[n++],done:!t}}};throw new TypeError(e?"Object is not iterable.":"Symbol.iterator is not defined.")}function F5(t,e){var r=typeof Symbol=="function"&&t[Symbol.iterator];if(!r)return t;var n=r.call(t),i,s=[],a;try{for(;(e===void 0||e-- >0)&&!(i=n.next()).done;)s.push(i.value)}catch(o){a={error:o}}finally{try{i&&!i.done&&(r=n.return)&&r.call(n)}finally{if(a)throw a.error}}return s}function kq(){for(var t=[],e=0;e1||A(u,h)})},m&&(i[u]=m(i[u])))}function A(u,m){try{l(n[u](m))}catch(h){p(s[0][3],h)}}function l(u){u.value instanceof N?Promise.resolve(u.value.v).then(c,d):p(s[0][2],u)}function c(u){A("next",u)}function d(u){A("throw",u)}function p(u,m){u(m),s.shift(),s.length&&A(s[0][0],s[0][1])}}function ft(t){var e,r;return e={},n("next"),n("throw",function(i){throw i}),n("return"),e[Symbol.iterator]=function(){return this},e;function n(i,s){e[i]=t[i]?function(a){return(r=!r)?{value:N(t[i](a)),done:!1}:s?s(a):a}:s}}function he(t){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var e=t[Symbol.asyncIterator],r;return e?e.call(t):(t=typeof ny=="function"?ny(t):t[Symbol.iterator](),r={},n("next"),n("throw"),n("return"),r[Symbol.asyncIterator]=function(){return this},r);function n(s){r[s]=t[s]&&function(a){return new Promise(function(o,A){a=t[s](a),i(o,A,a.done,a.value)})}}function i(s,a,o,A){Promise.resolve(A).then(function(l){s({value:l,done:o})},a)}}function Mq(t,e){return Object.defineProperty?Object.defineProperty(t,"raw",{value:e}):t.raw=e,t}function Oq(t){if(t&&t.__esModule)return t;var e={};if(t!=null)for(var r=L5(t),n=0;n{x5=function(t,e){return x5=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(r,n){r.__proto__=n}||function(r,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(r[i]=n[i])},x5(t,e)};ry=function(){return ry=Object.assign||function(e){for(var r,n=1,i=arguments.length;n{var Mp=1e3,Op=Mp*60,xp=Op*60,Hl=xp*24,B0e=Hl*7,Q0e=Hl*365.25;tV.exports=function(t,e){e=e||{};var r=typeof t;if(r==="string"&&t.length>0)return w0e(t);if(r==="number"&&isFinite(t))return e.long?b0e(t):S0e(t);throw new Error("val is not a non-empty string or a valid number. val="+JSON.stringify(t))};function w0e(t){if(t=String(t),!(t.length>100)){var e=/^(-?(?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(t);if(e){var r=parseFloat(e[1]),n=(e[2]||"ms").toLowerCase();switch(n){case"years":case"year":case"yrs":case"yr":case"y":return r*Q0e;case"weeks":case"week":case"w":return r*B0e;case"days":case"day":case"d":return r*Hl;case"hours":case"hour":case"hrs":case"hr":case"h":return r*xp;case"minutes":case"minute":case"mins":case"min":case"m":return r*Op;case"seconds":case"second":case"secs":case"sec":case"s":return r*Mp;case"milliseconds":case"millisecond":case"msecs":case"msec":case"ms":return r;default:return}}}}function S0e(t){var e=Math.abs(t);return e>=Hl?Math.round(t/Hl)+"d":e>=xp?Math.round(t/xp)+"h":e>=Op?Math.round(t/Op)+"m":e>=Mp?Math.round(t/Mp)+"s":t+"ms"}function b0e(t){var e=Math.abs(t);return e>=Hl?py(t,e,Hl,"day"):e>=xp?py(t,e,xp,"hour"):e>=Op?py(t,e,Op,"minute"):e>=Mp?py(t,e,Mp,"second"):t+" ms"}function py(t,e,r,n){var i=e>=r*1.5;return Math.round(t/r)+" "+n+(i?"s":"")}});var z5=g((jOe,rV)=>{function v0e(t){r.debug=r,r.default=r,r.coerce=A,r.disable=a,r.enable=i,r.enabled=o,r.humanize=j5(),r.destroy=l,Object.keys(t).forEach(c=>{r[c]=t[c]}),r.names=[],r.skips=[],r.formatters={};function e(c){let d=0;for(let p=0;p{if(w==="%%")return"%";Q++;let v=r.formatters[b];if(typeof v=="function"){let q=f[Q];w=v.call(E,q),f.splice(Q,1),Q--}return w}),r.formatArgs.call(E,f),(E.log||r.log).apply(E,f)}return h.namespace=c,h.useColors=r.useColors(),h.color=r.selectColor(c),h.extend=n,h.destroy=r.destroy,Object.defineProperty(h,"enabled",{enumerable:!0,configurable:!1,get:()=>p!==null?p:(u!==r.namespaces&&(u=r.namespaces,m=r.enabled(c)),m),set:f=>{p=f}}),typeof r.init=="function"&&r.init(h),h}function n(c,d){let p=r(this.namespace+(typeof d>"u"?":":d)+c);return p.log=this.log,p}function i(c){r.save(c),r.namespaces=c,r.names=[],r.skips=[];let d=(typeof c=="string"?c:"").trim().replace(/\s+/g,",").split(",").filter(Boolean);for(let p of d)p[0]==="-"?r.skips.push(p.slice(1)):r.names.push(p)}function s(c,d){let p=0,u=0,m=-1,h=0;for(;p"-"+d)].join(",");return r.enable(""),c}function o(c){for(let d of r.skips)if(s(c,d))return!1;for(let d of r.names)if(s(c,d))return!0;return!1}function A(c){return c instanceof Error?c.stack||c.message:c}function l(){console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.")}return r.enable(r.load()),r}rV.exports=v0e});var nV=g((Zn,uy)=>{Zn.formatArgs=N0e;Zn.save=T0e;Zn.load=D0e;Zn.useColors=R0e;Zn.storage=k0e();Zn.destroy=(()=>{let t=!1;return()=>{t||(t=!0,console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`."))}})();Zn.colors=["#0000CC","#0000FF","#0033CC","#0033FF","#0066CC","#0066FF","#0099CC","#0099FF","#00CC00","#00CC33","#00CC66","#00CC99","#00CCCC","#00CCFF","#3300CC","#3300FF","#3333CC","#3333FF","#3366CC","#3366FF","#3399CC","#3399FF","#33CC00","#33CC33","#33CC66","#33CC99","#33CCCC","#33CCFF","#6600CC","#6600FF","#6633CC","#6633FF","#66CC00","#66CC33","#9900CC","#9900FF","#9933CC","#9933FF","#99CC00","#99CC33","#CC0000","#CC0033","#CC0066","#CC0099","#CC00CC","#CC00FF","#CC3300","#CC3333","#CC3366","#CC3399","#CC33CC","#CC33FF","#CC6600","#CC6633","#CC9900","#CC9933","#CCCC00","#CCCC33","#FF0000","#FF0033","#FF0066","#FF0099","#FF00CC","#FF00FF","#FF3300","#FF3333","#FF3366","#FF3399","#FF33CC","#FF33FF","#FF6600","#FF6633","#FF9900","#FF9933","#FFCC00","#FFCC33"];function R0e(){if(typeof window<"u"&&window.process&&(window.process.type==="renderer"||window.process.__nwjs))return!0;if(typeof navigator<"u"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/(edge|trident)\/(\d+)/))return!1;let t;return typeof document<"u"&&document.documentElement&&document.documentElement.style&&document.documentElement.style.WebkitAppearance||typeof window<"u"&&window.console&&(window.console.firebug||window.console.exception&&window.console.table)||typeof navigator<"u"&&navigator.userAgent&&(t=navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/))&&parseInt(t[1],10)>=31||typeof navigator<"u"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/)}function N0e(t){if(t[0]=(this.useColors?"%c":"")+this.namespace+(this.useColors?" %c":" ")+t[0]+(this.useColors?"%c ":" ")+"+"+uy.exports.humanize(this.diff),!this.useColors)return;let e="color: "+this.color;t.splice(1,0,e,"color: inherit");let r=0,n=0;t[0].replace(/%[a-zA-Z%]/g,i=>{i!=="%%"&&(r++,i==="%c"&&(n=r))}),t.splice(n,0,e)}Zn.log=console.debug||console.log||(()=>{});function T0e(t){try{t?Zn.storage.setItem("debug",t):Zn.storage.removeItem("debug")}catch{}}function D0e(){let t;try{t=Zn.storage.getItem("debug")||Zn.storage.getItem("DEBUG")}catch{}return!t&&typeof process<"u"&&"env"in process&&(t=process.env.DEBUG),t}function k0e(){try{return localStorage}catch{}}uy.exports=z5()(Zn);var{formatters:P0e}=uy.exports;P0e.j=function(t){try{return JSON.stringify(t)}catch(e){return"[UnexpectedJSONParseError]: "+e.message}}});var sV=g((zOe,iV)=>{"use strict";iV.exports=(t,e=process.argv)=>{let r=t.startsWith("-")?"":t.length===1?"-":"--",n=e.indexOf(r+t),i=e.indexOf("--");return n!==-1&&(i===-1||n{"use strict";var _0e=require("os"),aV=require("tty"),ns=sV(),{env:Pr}=process,SA;ns("no-color")||ns("no-colors")||ns("color=false")||ns("color=never")?SA=0:(ns("color")||ns("colors")||ns("color=true")||ns("color=always"))&&(SA=1);"FORCE_COLOR"in Pr&&(Pr.FORCE_COLOR==="true"?SA=1:Pr.FORCE_COLOR==="false"?SA=0:SA=Pr.FORCE_COLOR.length===0?1:Math.min(parseInt(Pr.FORCE_COLOR,10),3));function W5(t){return t===0?!1:{level:t,hasBasic:!0,has256:t>=2,has16m:t>=3}}function $5(t,e){if(SA===0)return 0;if(ns("color=16m")||ns("color=full")||ns("color=truecolor"))return 3;if(ns("color=256"))return 2;if(t&&!e&&SA===void 0)return 0;let r=SA||0;if(Pr.TERM==="dumb")return r;if(process.platform==="win32"){let n=_0e.release().split(".");return Number(n[0])>=10&&Number(n[2])>=10586?Number(n[2])>=14931?3:2:1}if("CI"in Pr)return["TRAVIS","CIRCLECI","APPVEYOR","GITLAB_CI","GITHUB_ACTIONS","BUILDKITE"].some(n=>n in Pr)||Pr.CI_NAME==="codeship"?1:r;if("TEAMCITY_VERSION"in Pr)return/^(9\.(0*[1-9]\d*)\.|\d{2,}\.)/.test(Pr.TEAMCITY_VERSION)?1:0;if(Pr.COLORTERM==="truecolor")return 3;if("TERM_PROGRAM"in Pr){let n=parseInt((Pr.TERM_PROGRAM_VERSION||"").split(".")[0],10);switch(Pr.TERM_PROGRAM){case"iTerm.app":return n>=3?3:2;case"Apple_Terminal":return 2}}return/-256(color)?$/i.test(Pr.TERM)?2:/^screen|^xterm|^vt100|^vt220|^rxvt|color|ansi|cygwin|linux/i.test(Pr.TERM)||"COLORTERM"in Pr?1:r}function M0e(t){let e=$5(t,t&&t.isTTY);return W5(e)}oV.exports={supportsColor:M0e,stdout:W5($5(!0,aV.isatty(1))),stderr:W5($5(!0,aV.isatty(2)))}});var cV=g((_r,hy)=>{var O0e=require("tty"),my=require("util");_r.init=G0e;_r.log=U0e;_r.formatArgs=L0e;_r.save=q0e;_r.load=V0e;_r.useColors=x0e;_r.destroy=my.deprecate(()=>{},"Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.");_r.colors=[6,2,3,4,5,1];try{let t=AV();t&&(t.stderr||t).level>=2&&(_r.colors=[20,21,26,27,32,33,38,39,40,41,42,43,44,45,56,57,62,63,68,69,74,75,76,77,78,79,80,81,92,93,98,99,112,113,128,129,134,135,148,149,160,161,162,163,164,165,166,167,168,169,170,171,172,173,178,179,184,185,196,197,198,199,200,201,202,203,204,205,206,207,208,209,214,215,220,221])}catch{}_r.inspectOpts=Object.keys(process.env).filter(t=>/^debug_/i.test(t)).reduce((t,e)=>{let r=e.substring(6).toLowerCase().replace(/_([a-z])/g,(i,s)=>s.toUpperCase()),n=process.env[e];return/^(yes|on|true|enabled)$/i.test(n)?n=!0:/^(no|off|false|disabled)$/i.test(n)?n=!1:n==="null"?n=null:n=Number(n),t[r]=n,t},{});function x0e(){return"colors"in _r.inspectOpts?!!_r.inspectOpts.colors:O0e.isatty(process.stderr.fd)}function L0e(t){let{namespace:e,useColors:r}=this;if(r){let n=this.color,i="\x1B[3"+(n<8?n:"8;5;"+n),s=` ${i};1m${e} \x1B[0m`;t[0]=s+t[0].split(` -`).join(` -`+s),t.push(i+"m+"+hy.exports.humanize(this.diff)+"\x1B[0m")}else t[0]=F0e()+e+" "+t[0]}function F0e(){return _r.inspectOpts.hideDate?"":new Date().toISOString()+" "}function U0e(...t){return process.stderr.write(my.formatWithOptions(_r.inspectOpts,...t)+` -`)}function q0e(t){t?process.env.DEBUG=t:delete process.env.DEBUG}function V0e(){return process.env.DEBUG}function G0e(t){t.inspectOpts={};let e=Object.keys(_r.inspectOpts);for(let r=0;re.trim()).join(" ")};lV.O=function(t){return this.inspectOpts.colors=this.useColors,my.inspect(t,this.inspectOpts)}});var fy=g(($Oe,K5)=>{typeof process>"u"||process.type==="renderer"||process.browser===!0||process.__nwjs?K5.exports=nV():K5.exports=cV()});var uV=g(ei=>{"use strict";var H0e=ei&&ei.__createBinding||(Object.create?function(t,e,r,n){n===void 0&&(n=r);var i=Object.getOwnPropertyDescriptor(e,r);(!i||("get"in i?!e.__esModule:i.writable||i.configurable))&&(i={enumerable:!0,get:function(){return e[r]}}),Object.defineProperty(t,n,i)}:function(t,e,r,n){n===void 0&&(n=r),t[n]=e[r]}),Y0e=ei&&ei.__setModuleDefault||(Object.create?function(t,e){Object.defineProperty(t,"default",{enumerable:!0,value:e})}:function(t,e){t.default=e}),dV=ei&&ei.__importStar||function(t){if(t&&t.__esModule)return t;var e={};if(t!=null)for(var r in t)r!=="default"&&Object.prototype.hasOwnProperty.call(t,r)&&H0e(e,t,r);return Y0e(e,t),e};Object.defineProperty(ei,"__esModule",{value:!0});ei.req=ei.json=ei.toBuffer=void 0;var J0e=dV(require("http")),j0e=dV(require("https"));async function pV(t){let e=0,r=[];for await(let n of t)e+=n.length,r.push(n);return Buffer.concat(r,e)}ei.toBuffer=pV;async function z0e(t){let r=(await pV(t)).toString("utf8");try{return JSON.parse(r)}catch(n){let i=n;throw i.message+=` (input: ${r})`,i}}ei.json=z0e;function W0e(t,e={}){let n=((typeof t=="string"?t:t.href).startsWith("https:")?j0e:J0e).request(t,e),i=new Promise((s,a)=>{n.once("response",s).once("error",a).end()});return n.then=i.then.bind(i),n}ei.req=W0e});var Z5=g(Si=>{"use strict";var hV=Si&&Si.__createBinding||(Object.create?function(t,e,r,n){n===void 0&&(n=r);var i=Object.getOwnPropertyDescriptor(e,r);(!i||("get"in i?!e.__esModule:i.writable||i.configurable))&&(i={enumerable:!0,get:function(){return e[r]}}),Object.defineProperty(t,n,i)}:function(t,e,r,n){n===void 0&&(n=r),t[n]=e[r]}),$0e=Si&&Si.__setModuleDefault||(Object.create?function(t,e){Object.defineProperty(t,"default",{enumerable:!0,value:e})}:function(t,e){t.default=e}),fV=Si&&Si.__importStar||function(t){if(t&&t.__esModule)return t;var e={};if(t!=null)for(var r in t)r!=="default"&&Object.prototype.hasOwnProperty.call(t,r)&&hV(e,t,r);return $0e(e,t),e},K0e=Si&&Si.__exportStar||function(t,e){for(var r in t)r!=="default"&&!Object.prototype.hasOwnProperty.call(e,r)&&hV(e,t,r)};Object.defineProperty(Si,"__esModule",{value:!0});Si.Agent=void 0;var X0e=fV(require("net")),mV=fV(require("http")),Z0e=require("https");K0e(uV(),Si);var pa=Symbol("AgentBaseInternalState"),X5=class extends mV.Agent{constructor(e){super(e),this[pa]={}}isSecureEndpoint(e){if(e){if(typeof e.secureEndpoint=="boolean")return e.secureEndpoint;if(typeof e.protocol=="string")return e.protocol==="https:"}let{stack:r}=new Error;return typeof r!="string"?!1:r.split(` -`).some(n=>n.indexOf("(https.js:")!==-1||n.indexOf("node:https:")!==-1)}incrementSockets(e){if(this.maxSockets===1/0&&this.maxTotalSockets===1/0)return null;this.sockets[e]||(this.sockets[e]=[]);let r=new X0e.Socket({writable:!1});return this.sockets[e].push(r),this.totalSocketCount++,r}decrementSockets(e,r){if(!this.sockets[e]||r===null)return;let n=this.sockets[e],i=n.indexOf(r);i!==-1&&(n.splice(i,1),this.totalSocketCount--,n.length===0&&delete this.sockets[e])}getName(e){return(typeof e.secureEndpoint=="boolean"?e.secureEndpoint:this.isSecureEndpoint(e))?Z0e.Agent.prototype.getName.call(this,e):super.getName(e)}createSocket(e,r,n){let i={...r,secureEndpoint:this.isSecureEndpoint(r)},s=this.getName(i),a=this.incrementSockets(s);Promise.resolve().then(()=>this.connect(e,i)).then(o=>{if(this.decrementSockets(s,a),o instanceof mV.Agent)return o.addRequest(e,i);this[pa].currentSocket=o,super.createSocket(e,r,n)},o=>{this.decrementSockets(s,a),n(o)})}createConnection(){let e=this[pa].currentSocket;if(this[pa].currentSocket=void 0,!e)throw new Error("No socket was returned in the `connect()` function");return e}get defaultPort(){return this[pa].defaultPort??(this.protocol==="https:"?443:80)}set defaultPort(e){this[pa]&&(this[pa].defaultPort=e)}get protocol(){return this[pa].protocol??(this.isSecureEndpoint()?"https:":"http:")}set protocol(e){this[pa]&&(this[pa].protocol=e)}};Si.Agent=X5});var gV=g(Lp=>{"use strict";var eEe=Lp&&Lp.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(Lp,"__esModule",{value:!0});Lp.parseProxyResponse=void 0;var tEe=eEe(fy()),gy=(0,tEe.default)("https-proxy-agent:parse-proxy-response");function rEe(t){return new Promise((e,r)=>{let n=0,i=[];function s(){let c=t.read();c?l(c):t.once("readable",s)}function a(){t.removeListener("end",o),t.removeListener("error",A),t.removeListener("readable",s)}function o(){a(),gy("onend"),r(new Error("Proxy connection ended before receiving CONNECT response"))}function A(c){a(),gy("onerror %o",c),r(c)}function l(c){i.push(c),n+=c.length;let d=Buffer.concat(i,n),p=d.indexOf(`\r -\r -`);if(p===-1){gy("have not received end of HTTP headers yet..."),s();return}let u=d.slice(0,p).toString("ascii").split(`\r -`),m=u.shift();if(!m)return t.destroy(),r(new Error("No header received from proxy CONNECT response"));let h=m.split(" "),f=+h[1],E=h.slice(2).join(" "),y={};for(let B of u){if(!B)continue;let Q=B.indexOf(":");if(Q===-1)return t.destroy(),r(new Error(`Invalid header from proxy CONNECT response: "${B}"`));let C=B.slice(0,Q).toLowerCase(),w=B.slice(Q+1).trimStart(),b=y[C];typeof b=="string"?y[C]=[b,w]:Array.isArray(b)?b.push(w):y[C]=w}gy("got proxy server response: %o %o",m,y),a(),e({connect:{statusCode:f,statusText:E,headers:y},buffered:d})}t.on("error",A),t.on("end",o),s()})}Lp.parseProxyResponse=rEe});var tw=g(is=>{"use strict";var nEe=is&&is.__createBinding||(Object.create?function(t,e,r,n){n===void 0&&(n=r);var i=Object.getOwnPropertyDescriptor(e,r);(!i||("get"in i?!e.__esModule:i.writable||i.configurable))&&(i={enumerable:!0,get:function(){return e[r]}}),Object.defineProperty(t,n,i)}:function(t,e,r,n){n===void 0&&(n=r),t[n]=e[r]}),iEe=is&&is.__setModuleDefault||(Object.create?function(t,e){Object.defineProperty(t,"default",{enumerable:!0,value:e})}:function(t,e){t.default=e}),CV=is&&is.__importStar||function(t){if(t&&t.__esModule)return t;var e={};if(t!=null)for(var r in t)r!=="default"&&Object.prototype.hasOwnProperty.call(t,r)&&nEe(e,t,r);return iEe(e,t),e},IV=is&&is.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(is,"__esModule",{value:!0});is.HttpsProxyAgent=void 0;var ew=CV(require("net")),EV=CV(require("tls")),sEe=IV(require("assert")),aEe=IV(fy()),oEe=Z5(),AEe=require("url"),lEe=gV(),of=(0,aEe.default)("https-proxy-agent"),Ey=class extends oEe.Agent{constructor(e,r){super(r),this.options={path:void 0},this.proxy=typeof e=="string"?new AEe.URL(e):e,this.proxyHeaders=r?.headers??{},of("Creating new HttpsProxyAgent instance: %o",this.proxy.href);let n=(this.proxy.hostname||this.proxy.host).replace(/^\[|\]$/g,""),i=this.proxy.port?parseInt(this.proxy.port,10):this.proxy.protocol==="https:"?443:80;this.connectOpts={ALPNProtocols:["http/1.1"],...r?yV(r,"headers"):null,host:n,port:i}}async connect(e,r){let{proxy:n}=this;if(!r.host)throw new TypeError('No "host" provided');let i;if(n.protocol==="https:"){of("Creating `tls.Socket`: %o",this.connectOpts);let p=this.connectOpts.servername||this.connectOpts.host;i=EV.connect({...this.connectOpts,servername:p})}else of("Creating `net.Socket`: %o",this.connectOpts),i=ew.connect(this.connectOpts);let s=typeof this.proxyHeaders=="function"?this.proxyHeaders():{...this.proxyHeaders},a=ew.isIPv6(r.host)?`[${r.host}]`:r.host,o=`CONNECT ${a}:${r.port} HTTP/1.1\r -`;if(n.username||n.password){let p=`${decodeURIComponent(n.username)}:${decodeURIComponent(n.password)}`;s["Proxy-Authorization"]=`Basic ${Buffer.from(p).toString("base64")}`}s.Host=`${a}:${r.port}`,s["Proxy-Connection"]||(s["Proxy-Connection"]=this.keepAlive?"Keep-Alive":"close");for(let p of Object.keys(s))o+=`${p}: ${s[p]}\r -`;let A=(0,lEe.parseProxyResponse)(i);i.write(`${o}\r -`);let{connect:l,buffered:c}=await A;if(e.emit("proxyConnect",l),this.emit("proxyConnect",l,e),l.statusCode===200){if(e.once("socket",cEe),r.secureEndpoint){of("Upgrading socket connection to TLS");let p=r.servername||r.host;return EV.connect({...yV(r,"host","path","port"),socket:i,servername:p})}return i}i.destroy();let d=new ew.Socket({writable:!1});return d.readable=!0,e.once("socket",p=>{of("Replaying proxy buffer for failed request"),(0,sEe.default)(p.listenerCount("data")>0),p.push(c),p.push(null)}),d}};Ey.protocols=["http","https"];is.HttpsProxyAgent=Ey;function cEe(t){t.resume()}function yV(t,...e){let r={},n;for(n in t)e.includes(n)||(r[n]=t[n]);return r}});var rw=g(ss=>{"use strict";var dEe=ss&&ss.__createBinding||(Object.create?function(t,e,r,n){n===void 0&&(n=r);var i=Object.getOwnPropertyDescriptor(e,r);(!i||("get"in i?!e.__esModule:i.writable||i.configurable))&&(i={enumerable:!0,get:function(){return e[r]}}),Object.defineProperty(t,n,i)}:function(t,e,r,n){n===void 0&&(n=r),t[n]=e[r]}),pEe=ss&&ss.__setModuleDefault||(Object.create?function(t,e){Object.defineProperty(t,"default",{enumerable:!0,value:e})}:function(t,e){t.default=e}),QV=ss&&ss.__importStar||function(t){if(t&&t.__esModule)return t;var e={};if(t!=null)for(var r in t)r!=="default"&&Object.prototype.hasOwnProperty.call(t,r)&&dEe(e,t,r);return pEe(e,t),e},uEe=ss&&ss.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(ss,"__esModule",{value:!0});ss.HttpProxyAgent=void 0;var mEe=QV(require("net")),hEe=QV(require("tls")),fEe=uEe(fy()),gEe=require("events"),EEe=Z5(),BV=require("url"),Fp=(0,fEe.default)("http-proxy-agent"),yy=class extends EEe.Agent{constructor(e,r){super(r),this.proxy=typeof e=="string"?new BV.URL(e):e,this.proxyHeaders=r?.headers??{},Fp("Creating new HttpProxyAgent instance: %o",this.proxy.href);let n=(this.proxy.hostname||this.proxy.host).replace(/^\[|\]$/g,""),i=this.proxy.port?parseInt(this.proxy.port,10):this.proxy.protocol==="https:"?443:80;this.connectOpts={...r?yEe(r,"headers"):null,host:n,port:i}}addRequest(e,r){e._header=null,this.setRequestProps(e,r),super.addRequest(e,r)}setRequestProps(e,r){let{proxy:n}=this,i=r.secureEndpoint?"https:":"http:",s=e.getHeader("host")||"localhost",a=`${i}//${s}`,o=new BV.URL(e.path,a);r.port!==80&&(o.port=String(r.port)),e.path=String(o);let A=typeof this.proxyHeaders=="function"?this.proxyHeaders():{...this.proxyHeaders};if(n.username||n.password){let l=`${decodeURIComponent(n.username)}:${decodeURIComponent(n.password)}`;A["Proxy-Authorization"]=`Basic ${Buffer.from(l).toString("base64")}`}A["Proxy-Connection"]||(A["Proxy-Connection"]=this.keepAlive?"Keep-Alive":"close");for(let l of Object.keys(A)){let c=A[l];c&&e.setHeader(l,c)}}async connect(e,r){e._header=null,e.path.includes("://")||this.setRequestProps(e,r);let n,i;Fp("Regenerating stored HTTP header string for request"),e._implicitHeader(),e.outputData&&e.outputData.length>0&&(Fp("Patching connection write() output buffer with updated header"),n=e.outputData[0].data,i=n.indexOf(`\r -\r -`)+4,e.outputData[0].data=e._header+n.substring(i),Fp("Output buffer: %o",e.outputData[0].data));let s;return this.proxy.protocol==="https:"?(Fp("Creating `tls.Socket`: %o",this.connectOpts),s=hEe.connect(this.connectOpts)):(Fp("Creating `net.Socket`: %o",this.connectOpts),s=mEe.connect(this.connectOpts)),await(0,gEe.once)(s,"connect"),s}};yy.protocols=["http","https"];ss.HttpProxyAgent=yy;function yEe(t,...e){let r={},n;for(n in t)e.includes(n)||(r[n]=t[n]);return r}});var Aw=g(Iy=>{"use strict";Object.defineProperty(Iy,"__esModule",{value:!0});Iy.state=void 0;Iy.state={instrumenterImplementation:void 0}});var Cw=g(vy=>{"use strict";Object.defineProperty(vy,"__esModule",{value:!0});vy.state=void 0;vy.state={operationRequestMap:new WeakMap}});var $w=g(ya=>{"use strict";Object.defineProperty(ya,"__esModule",{value:!0});ya.decodeStringToString=ya.decodeString=ya.encodeByteArray=ya.encodeString=void 0;function s4e(t){return Buffer.from(t).toString("base64")}ya.encodeString=s4e;function a4e(t){return(t instanceof Buffer?t:Buffer.from(t.buffer)).toString("base64")}ya.encodeByteArray=a4e;function o4e(t){return Buffer.from(t,"base64")}ya.decodeString=o4e;function A4e(t){return Buffer.from(t,"base64").toString()}ya.decodeStringToString=A4e});var gf=g(Zp=>{"use strict";Object.defineProperty(Zp,"__esModule",{value:!0});Zp.XML_CHARKEY=Zp.XML_ATTRKEY=void 0;Zp.XML_ATTRKEY="$";Zp.XML_CHARKEY="_"});var Kw=g(Ca=>{"use strict";Object.defineProperty(Ca,"__esModule",{value:!0});Ca.flattenResponse=Ca.isValidUuid=Ca.isDuration=Ca.isPrimitiveBody=void 0;function WG(t,e){return e!=="Composite"&&e!=="Dictionary"&&(typeof t=="string"||typeof t=="number"||typeof t=="boolean"||e?.match(/^(Date|DateTime|DateTimeRfc1123|UnixTime|ByteArray|Base64Url)$/i)!==null||t===void 0||t===null)}Ca.isPrimitiveBody=WG;var l4e=/^(-|\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/;function c4e(t){return l4e.test(t)}Ca.isDuration=c4e;var d4e=/^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/i;function p4e(t){return d4e.test(t)}Ca.isValidUuid=p4e;function u4e(t){let e=Object.assign(Object.assign({},t.headers),t.body);return t.hasNullableType&&Object.getOwnPropertyNames(e).length===0?t.shouldWrapBody?{body:null}:null:t.shouldWrapBody?Object.assign(Object.assign({},t.headers),{body:t.body}):e}function m4e(t,e){var r,n;let i=t.parsedHeaders;if(t.request.method==="HEAD")return Object.assign(Object.assign({},i),{body:t.parsedBody});let s=e&&e.bodyMapper,a=!!s?.nullable,o=s?.type.name;if(o==="Stream")return Object.assign(Object.assign({},i),{blobBody:t.blobBody,readableStreamBody:t.readableStreamBody});let A=o==="Composite"&&s.type.modelProperties||{},l=Object.keys(A).some(c=>A[c].serializedName==="");if(o==="Sequence"||l){let c=(r=t.parsedBody)!==null&&r!==void 0?r:[];for(let d of Object.keys(A))A[d].serializedName&&(c[d]=(n=t.parsedBody)===null||n===void 0?void 0:n[d]);if(i)for(let d of Object.keys(i))c[d]=i[d];return a&&!t.parsedBody&&!i&&Object.getOwnPropertyNames(A).length===0?null:c}return u4e({body:t.parsedBody,headers:i,hasNullableType:a,shouldWrapBody:WG(t.parsedBody,o)})}Ca.flattenResponse=m4e});var Ef=g(eu=>{"use strict";Object.defineProperty(eu,"__esModule",{value:!0});eu.MapperTypeNames=eu.createSerializer=void 0;var h4e=(kr(),Lo(Ao)),Gy=h4e.__importStar($w()),Or=gf(),KG=Kw(),Xw=class{constructor(e={},r=!1){this.modelMappers=e,this.isXML=r}validateConstraints(e,r,n){let i=(s,a)=>{throw new Error(`"${n}" with value "${r}" should satisfy the constraint "${s}": ${a}.`)};if(e.constraints&&r!==void 0&&r!==null){let{ExclusiveMaximum:s,ExclusiveMinimum:a,InclusiveMaximum:o,InclusiveMinimum:A,MaxItems:l,MaxLength:c,MinItems:d,MinLength:p,MultipleOf:u,Pattern:m,UniqueItems:h}=e.constraints;if(s!==void 0&&r>=s&&i("ExclusiveMaximum",s),a!==void 0&&r<=a&&i("ExclusiveMinimum",a),o!==void 0&&r>o&&i("InclusiveMaximum",o),A!==void 0&&rl&&i("MaxItems",l),c!==void 0&&r.length>c&&i("MaxLength",c),d!==void 0&&r.lengthy.indexOf(f)!==E)&&i("UniqueItems",h)}}serialize(e,r,n,i={xml:{}}){var s,a,o;let A={xml:{rootName:(s=i.xml.rootName)!==null&&s!==void 0?s:"",includeRoot:(a=i.xml.includeRoot)!==null&&a!==void 0?a:!1,xmlCharKey:(o=i.xml.xmlCharKey)!==null&&o!==void 0?o:Or.XML_CHARKEY}},l={},c=e.type.name;n||(n=e.serializedName),c.match(/^Sequence$/i)!==null&&(l=[]),e.isConstant&&(r=e.defaultValue);let{required:d,nullable:p}=e;if(d&&p&&r===void 0)throw new Error(`${n} cannot be undefined.`);if(d&&!p&&r==null)throw new Error(`${n} cannot be null or undefined.`);if(!d&&p===!1&&r===null)throw new Error(`${n} cannot be null.`);return r==null||c.match(/^any$/i)!==null?l=r:c.match(/^(Number|String|Boolean|Object|Stream|Uuid)$/i)!==null?l=B4e(c,n,r):c.match(/^Enum$/i)!==null?l=Q4e(n,e.type.allowedValues,r):c.match(/^(Date|DateTime|TimeSpan|DateTimeRfc1123|UnixTime)$/i)!==null?l=b4e(c,r,n):c.match(/^ByteArray$/i)!==null?l=w4e(n,r):c.match(/^Base64Url$/i)!==null?l=S4e(n,r):c.match(/^Sequence$/i)!==null?l=v4e(this,e,r,n,!!this.isXML,A):c.match(/^Dictionary$/i)!==null?l=R4e(this,e,r,n,!!this.isXML,A):c.match(/^Composite$/i)!==null&&(l=T4e(this,e,r,n,!!this.isXML,A)),l}deserialize(e,r,n,i={xml:{}}){var s,a,o,A;let l={xml:{rootName:(s=i.xml.rootName)!==null&&s!==void 0?s:"",includeRoot:(a=i.xml.includeRoot)!==null&&a!==void 0?a:!1,xmlCharKey:(o=i.xml.xmlCharKey)!==null&&o!==void 0?o:Or.XML_CHARKEY},ignoreUnknownProperties:(A=i.ignoreUnknownProperties)!==null&&A!==void 0?A:!1};if(r==null)return this.isXML&&e.type.name==="Sequence"&&!e.xmlIsWrapped&&(r=[]),e.defaultValue!==void 0&&(r=e.defaultValue),r;let c,d=e.type.name;if(n||(n=e.serializedName),d.match(/^Composite$/i)!==null)c=k4e(this,e,r,n,l);else{if(this.isXML){let p=l.xml.xmlCharKey;r[Or.XML_ATTRKEY]!==void 0&&r[p]!==void 0&&(r=r[p])}d.match(/^Number$/i)!==null?(c=parseFloat(r),isNaN(c)&&(c=r)):d.match(/^Boolean$/i)!==null?r==="true"?c=!0:r==="false"?c=!1:c=r:d.match(/^(String|Enum|Object|Stream|Uuid|TimeSpan|any)$/i)!==null?c=r:d.match(/^(Date|DateTime|DateTimeRfc1123)$/i)!==null?c=new Date(r):d.match(/^UnixTime$/i)!==null?c=I4e(r):d.match(/^ByteArray$/i)!==null?c=Gy.decodeString(r):d.match(/^Base64Url$/i)!==null?c=y4e(r):d.match(/^Sequence$/i)!==null?c=_4e(this,e,r,n,l):d.match(/^Dictionary$/i)!==null&&(c=P4e(this,e,r,n,l))}return e.isConstant&&(c=e.defaultValue),c}};function f4e(t={},e=!1){return new Xw(t,e)}eu.createSerializer=f4e;function g4e(t,e){let r=t.length;for(;r-1>=0&&t[r-1]===e;)--r;return t.substr(0,r)}function E4e(t){if(!t)return;if(!(t instanceof Uint8Array))throw new Error("Please provide an input of type Uint8Array for converting to Base64Url.");let e=Gy.encodeByteArray(t);return g4e(e,"=").replace(/\+/g,"-").replace(/\//g,"_")}function y4e(t){if(t){if(t&&typeof t.valueOf()!="string")throw new Error("Please provide an input of type string for converting to Uint8Array");return t=t.replace(/-/g,"+").replace(/_/g,"/"),Gy.decodeString(t)}}function Zw(t){let e=[],r="";if(t){let n=t.split(".");for(let i of n)i.charAt(i.length-1)==="\\"?r+=i.substr(0,i.length-1)+".":(r+=i,e.push(r),r="")}return e}function C4e(t){if(t)return typeof t.valueOf()=="string"&&(t=new Date(t)),Math.floor(t.getTime()/1e3)}function I4e(t){if(t)return new Date(t*1e3)}function B4e(t,e,r){if(r!=null){if(t.match(/^Number$/i)!==null){if(typeof r!="number")throw new Error(`${e} with value ${r} must be of type number.`)}else if(t.match(/^String$/i)!==null){if(typeof r.valueOf()!="string")throw new Error(`${e} with value "${r}" must be of type string.`)}else if(t.match(/^Uuid$/i)!==null){if(!(typeof r.valueOf()=="string"&&(0,KG.isValidUuid)(r)))throw new Error(`${e} with value "${r}" must be of type string and a valid uuid.`)}else if(t.match(/^Boolean$/i)!==null){if(typeof r!="boolean")throw new Error(`${e} with value ${r} must be of type boolean.`)}else if(t.match(/^Stream$/i)!==null){let n=typeof r;if(n!=="string"&&typeof r.pipe!="function"&&typeof r.tee!="function"&&!(r instanceof ArrayBuffer)&&!ArrayBuffer.isView(r)&&!((typeof Blob=="function"||typeof Blob=="object")&&r instanceof Blob)&&n!=="function")throw new Error(`${e} must be a string, Blob, ArrayBuffer, ArrayBufferView, ReadableStream, or () => ReadableStream.`)}}return r}function Q4e(t,e,r){if(!e)throw new Error(`Please provide a set of allowedValues to validate ${t} as an Enum Type.`);if(!e.some(i=>typeof i.valueOf()=="string"?i.toLowerCase()===r.toLowerCase():i===r))throw new Error(`${r} is not a valid value for ${t}. The valid values are: ${JSON.stringify(e)}.`);return r}function w4e(t,e){if(e!=null){if(!(e instanceof Uint8Array))throw new Error(`${t} must be of type Uint8Array.`);e=Gy.encodeByteArray(e)}return e}function S4e(t,e){if(e!=null){if(!(e instanceof Uint8Array))throw new Error(`${t} must be of type Uint8Array.`);e=E4e(e)}return e}function b4e(t,e,r){if(e!=null){if(t.match(/^Date$/i)!==null){if(!(e instanceof Date||typeof e.valueOf()=="string"&&!isNaN(Date.parse(e))))throw new Error(`${r} must be an instanceof Date or a string in ISO8601 format.`);e=e instanceof Date?e.toISOString().substring(0,10):new Date(e).toISOString().substring(0,10)}else if(t.match(/^DateTime$/i)!==null){if(!(e instanceof Date||typeof e.valueOf()=="string"&&!isNaN(Date.parse(e))))throw new Error(`${r} must be an instanceof Date or a string in ISO8601 format.`);e=e instanceof Date?e.toISOString():new Date(e).toISOString()}else if(t.match(/^DateTimeRfc1123$/i)!==null){if(!(e instanceof Date||typeof e.valueOf()=="string"&&!isNaN(Date.parse(e))))throw new Error(`${r} must be an instanceof Date or a string in RFC-1123 format.`);e=e instanceof Date?e.toUTCString():new Date(e).toUTCString()}else if(t.match(/^UnixTime$/i)!==null){if(!(e instanceof Date||typeof e.valueOf()=="string"&&!isNaN(Date.parse(e))))throw new Error(`${r} must be an instanceof Date or a string in RFC-1123/ISO8601 format for it to be serialized in UnixTime/Epoch format.`);e=C4e(e)}else if(t.match(/^TimeSpan$/i)!==null&&!(0,KG.isDuration)(e))throw new Error(`${r} must be a string in ISO 8601 format. Instead was "${e}".`)}return e}function v4e(t,e,r,n,i,s){var a;if(!Array.isArray(r))throw new Error(`${n} must be of type Array.`);let o=e.type.element;if(!o||typeof o!="object")throw new Error(`element" metadata for an Array must be defined in the mapper and it must of type "object" in ${n}.`);o.type.name==="Composite"&&o.type.className&&(o=(a=t.modelMappers[o.type.className])!==null&&a!==void 0?a:o);let A=[];for(let l=0;lp!==c)&&(a[c]=t.serialize(A,r[c],n+'["'+c+'"]',s))}return a}return r}function eH(t,e,r,n){if(!r||!t.xmlNamespace)return e;let s={[t.xmlNamespacePrefix?`xmlns:${t.xmlNamespacePrefix}`:"xmlns"]:t.xmlNamespace};if(["Composite"].includes(t.type.name)){if(e[Or.XML_ATTRKEY])return e;{let o=Object.assign({},e);return o[Or.XML_ATTRKEY]=s,o}}let a={};return a[n.xml.xmlCharKey]=e,a[Or.XML_ATTRKEY]=s,a}function D4e(t,e){return[Or.XML_ATTRKEY,e.xml.xmlCharKey].includes(t)}function k4e(t,e,r,n,i){var s,a;let o=(s=i.xml.xmlCharKey)!==null&&s!==void 0?s:Or.XML_CHARKEY;Vy(t,e)&&(e=tH(t,e,r,"serializedName"));let A=ZG(t,e,n),l={},c=[];for(let p of Object.keys(A)){let u=A[p],m=Zw(A[p].serializedName);c.push(m[0]);let{serializedName:h,xmlName:f,xmlElementName:E}=u,y=n;h!==""&&h!==void 0&&(y=n+"."+h);let B=u.headerCollectionPrefix;if(B){let Q={};for(let C of Object.keys(r))C.startsWith(B)&&(Q[C.substring(B.length)]=t.deserialize(u.type.value,r[C],y,i)),c.push(C);l[p]=Q}else if(t.isXML)if(u.xmlIsAttribute&&r[Or.XML_ATTRKEY])l[p]=t.deserialize(u,r[Or.XML_ATTRKEY][f],y,i);else if(u.xmlIsMsText)r[o]!==void 0?l[p]=r[o]:typeof r=="string"&&(l[p]=r);else{let Q=E||f||h;if(u.xmlIsWrapped){let C=r[f],w=(a=C?.[E])!==null&&a!==void 0?a:[];l[p]=t.deserialize(u,w,y,i),c.push(f)}else{let C=r[Q];l[p]=t.deserialize(u,C,y,i),c.push(Q)}}else{let Q,C=r,w=0;for(let q of m){if(!C)break;w++,C=C[q]}C===null&&w{for(let m in A)if(Zw(A[m].serializedName)[0]===u)return!1;return!0};for(let u in r)p(u)&&(l[u]=t.deserialize(d,r[u],n+'["'+u+'"]',i))}else if(r&&!i.ignoreUnknownProperties)for(let p of Object.keys(r))l[p]===void 0&&!c.includes(p)&&!D4e(p,i)&&(l[p]=r[p]);return l}function P4e(t,e,r,n,i){let s=e.type.value;if(!s||typeof s!="object")throw new Error(`"value" metadata for a Dictionary must be defined in the mapper and it must of type "object" in ${n}`);if(r){let a={};for(let o of Object.keys(r))a[o]=t.deserialize(s,r[o],n,i);return a}return r}function _4e(t,e,r,n,i){var s;let a=e.type.element;if(!a||typeof a!="object")throw new Error(`element" metadata for an Array must be defined in the mapper and it must of type "object" in ${n}`);if(r){Array.isArray(r)||(r=[r]),a.type.name==="Composite"&&a.type.className&&(a=(s=t.modelMappers[a.type.className])!==null&&s!==void 0?s:a);let o=[];for(let A=0;A{"use strict";Object.defineProperty(tS,"__esModule",{value:!0});tS.createEmptyPipeline=O4e;var rH=new Set(["Deserialize","Serialize","Retry","Sign"]),eS=class t{constructor(e){var r;this._policies=[],this._policies=(r=e?.slice(0))!==null&&r!==void 0?r:[],this._orderedPolicies=void 0}addPolicy(e,r={}){if(r.phase&&r.afterPhase)throw new Error("Policies inside a phase cannot specify afterPhase.");if(r.phase&&!rH.has(r.phase))throw new Error(`Invalid phase name: ${r.phase}`);if(r.afterPhase&&!rH.has(r.afterPhase))throw new Error(`Invalid afterPhase name: ${r.afterPhase}`);this._policies.push({policy:e,options:r}),this._orderedPolicies=void 0}removePolicy(e){let r=[];return this._policies=this._policies.filter(n=>e.name&&n.policy.name===e.name||e.phase&&n.options.phase===e.phase?(r.push(n.policy),!1):!0),this._orderedPolicies=void 0,r}sendRequest(e,r){return this.getOrderedPolicies().reduceRight((s,a)=>o=>a.sendRequest(o,s),s=>e.sendRequest(s))(r)}getOrderedPolicies(){return this._orderedPolicies||(this._orderedPolicies=this.orderPolicies()),this._orderedPolicies}clone(){return new t(this._policies)}static create(){return new t}orderPolicies(){let e=[],r=new Map;function n(m){return{name:m,policies:new Set,hasRun:!1,hasAfterPolicies:!1}}let i=n("Serialize"),s=n("None"),a=n("Deserialize"),o=n("Retry"),A=n("Sign"),l=[i,s,a,o,A];function c(m){return m==="Retry"?o:m==="Serialize"?i:m==="Deserialize"?a:m==="Sign"?A:s}for(let m of this._policies){let h=m.policy,f=m.options,E=h.name;if(r.has(E))throw new Error("Duplicate policy names not allowed in pipeline");let y={policy:h,dependsOn:new Set,dependants:new Set};f.afterPhase&&(y.afterPhase=c(f.afterPhase),y.afterPhase.hasAfterPolicies=!0),r.set(E,y),c(f.phase).policies.add(y)}for(let m of this._policies){let{policy:h,options:f}=m,E=h.name,y=r.get(E);if(!y)throw new Error(`Missing node for policy ${E}`);if(f.afterPolicies)for(let B of f.afterPolicies){let Q=r.get(B);Q&&(y.dependsOn.add(Q),Q.dependants.add(y))}if(f.beforePolicies)for(let B of f.beforePolicies){let Q=r.get(B);Q&&(Q.dependsOn.add(y),y.dependants.add(Q))}}function d(m){m.hasRun=!0;for(let h of m.policies)if(!(h.afterPhase&&(!h.afterPhase.hasRun||h.afterPhase.policies.size))&&h.dependsOn.size===0){e.push(h.policy);for(let f of h.dependants)f.dependsOn.delete(h);r.delete(h.policy.name),m.policies.delete(h)}}function p(){for(let m of l){if(d(m),m.policies.size>0&&m!==s){s.hasRun||d(s);return}m.hasAfterPolicies&&d(s)}}let u=0;for(;r.size>0;){u++;let m=e.length;if(p(),e.length<=m&&u>1)throw new Error("Cannot satisfy policy dependencies due to requirements cycle.")}return e}};function O4e(){return eS.create()}});var iH=g(nS=>{"use strict";Object.defineProperty(nS,"__esModule",{value:!0});nS.log=U4e;var nH=(kr(),Lo(Ao)),x4e=require("node:os"),L4e=nH.__importDefault(require("node:util")),F4e=nH.__importStar(require("node:process"));function U4e(t,...e){F4e.stderr.write(`${L4e.default.format(t,...e)}${x4e.EOL}`)}});var lH=g(AS=>{"use strict";Object.defineProperty(AS,"__esModule",{value:!0});var q4e=iH(),sH=typeof process<"u"&&process.env&&process.env.DEBUG||void 0,aH,iS=[],sS=[],Hy=[];sH&&aS(sH);var oH=Object.assign(t=>AH(t),{enable:aS,enabled:oS,disable:V4e,log:q4e.log});function aS(t){aH=t,iS=[],sS=[];let e=/\*/g,r=t.split(",").map(n=>n.trim().replace(e,".*?"));for(let n of r)n.startsWith("-")?sS.push(new RegExp(`^${n.substr(1)}$`)):iS.push(new RegExp(`^${n}$`));for(let n of Hy)n.enabled=oS(n.namespace)}function oS(t){if(t.endsWith("*"))return!0;for(let e of sS)if(e.test(t))return!1;for(let e of iS)if(e.test(t))return!0;return!1}function V4e(){let t=aH||"";return aS(""),t}function AH(t){let e=Object.assign(r,{enabled:oS(t),destroy:G4e,log:oH.log,namespace:t,extend:H4e});function r(...n){e.enabled&&(n.length>0&&(n[0]=`${t} ${n[0]}`),e.log(...n))}return Hy.push(e),e}function G4e(){let t=Hy.indexOf(this);return t>=0?(Hy.splice(t,1),!0):!1}function H4e(t){let e=AH(`${this.namespace}:${t}`);return e.log=this.log,e}AS.default=oH});var Cf=g(Ia=>{"use strict";Object.defineProperty(Ia,"__esModule",{value:!0});Ia.AzureLogger=void 0;Ia.setLogLevel=pH;Ia.getLogLevel=J4e;Ia.createClientLogger=j4e;var Y4e=(kr(),Lo(Ao)),yf=Y4e.__importDefault(lH()),dH=new Set,Yy=typeof process<"u"&&process.env&&process.env.AZURE_LOG_LEVEL||void 0,jy;Ia.AzureLogger=(0,yf.default)("azure");Ia.AzureLogger.log=(...t)=>{yf.default.log(...t)};var lS=["verbose","info","warning","error"];Yy&&(hH(Yy)?pH(Yy):console.error(`AZURE_LOG_LEVEL set to unknown log level '${Yy}'; logging is not enabled. Acceptable values: ${lS.join(", ")}.`));function pH(t){if(t&&!hH(t))throw new Error(`Unknown log level '${t}'. Acceptable values: ${lS.join(",")}`);jy=t;let e=[];for(let r of dH)mH(r)&&e.push(r.namespace);yf.default.enable(e.join(","))}function J4e(){return jy}var cH={verbose:400,info:300,warning:200,error:100};function j4e(t){let e=Ia.AzureLogger.extend(t);return uH(Ia.AzureLogger,e),{error:Jy(e,"error"),warning:Jy(e,"warning"),info:Jy(e,"info"),verbose:Jy(e,"verbose")}}function uH(t,e){e.log=(...r)=>{t.log(...r)}}function Jy(t,e){let r=Object.assign(t.extend(e),{level:e});if(uH(t,r),mH(r)){let n=yf.default.disable();yf.default.enable(n+","+r.namespace)}return dH.add(r),r}function mH(t){return!!(jy&&cH[t.level]<=cH[jy])}function hH(t){return lS.includes(t)}});var Wl=g(zy=>{"use strict";Object.defineProperty(zy,"__esModule",{value:!0});zy.logger=void 0;var z4e=Cf();zy.logger=(0,z4e.createClientLogger)("core-rest-pipeline")});var fH=g(Wy=>{"use strict";Object.defineProperty(Wy,"__esModule",{value:!0});Wy.AbortError=void 0;var cS=class extends Error{constructor(e){super(e),this.name="AbortError"}};Wy.AbortError=cS});var gH=g($y=>{"use strict";Object.defineProperty($y,"__esModule",{value:!0});$y.AbortError=void 0;var W4e=fH();Object.defineProperty($y,"AbortError",{enumerable:!0,get:function(){return W4e.AbortError}})});var pS=g(dS=>{"use strict";Object.defineProperty(dS,"__esModule",{value:!0});dS.createAbortablePromise=K4e;var $4e=gH();function K4e(t,e){let{cleanupBeforeAbort:r,abortSignal:n,abortErrorMsg:i}=e??{};return new Promise((s,a)=>{function o(){a(new $4e.AbortError(i??"The operation was aborted."))}function A(){n?.removeEventListener("abort",l)}function l(){r?.(),A(),o()}if(n?.aborted)return o();try{t(c=>{A(),s(c)},c=>{A(),a(c)})}catch(c){a(c)}n?.addEventListener("abort",l)})}});var mS=g(uS=>{"use strict";Object.defineProperty(uS,"__esModule",{value:!0});uS.getRandomIntegerInclusive=X4e;function X4e(t,e){return t=Math.ceil(t),e=Math.floor(e),Math.floor(Math.random()*(e-t+1))+t}});var EH=g(Ky=>{"use strict";Object.defineProperty(Ky,"__esModule",{value:!0});Ky.delay=r6e;Ky.calculateRetryDelay=n6e;var Z4e=pS(),e6e=mS(),t6e="The delay was aborted.";function r6e(t,e){let r,{abortSignal:n,abortErrorMsg:i}=e??{};return(0,Z4e.createAbortablePromise)(s=>{r=setTimeout(s,t)},{cleanupBeforeAbort:()=>clearTimeout(r),abortSignal:n,abortErrorMsg:i??t6e})}function n6e(t,e){let r=e.retryDelayInMs*Math.pow(2,t),n=Math.min(e.maxRetryDelayInMs,r);return{retryAfterInMs:n/2+(0,e6e.getRandomIntegerInclusive)(0,n/2)}}});var yH=g(hS=>{"use strict";Object.defineProperty(hS,"__esModule",{value:!0});hS.cancelablePromiseRace=i6e;async function i6e(t,e){var r,n;let i=new AbortController;function s(){i.abort()}(r=e?.abortSignal)===null||r===void 0||r.addEventListener("abort",s);try{return await Promise.race(t.map(a=>a({abortSignal:i.signal})))}finally{i.abort(),(n=e?.abortSignal)===null||n===void 0||n.removeEventListener("abort",s)}}});var gS=g(fS=>{"use strict";Object.defineProperty(fS,"__esModule",{value:!0});fS.isObject=s6e;function s6e(t){return typeof t=="object"&&t!==null&&!Array.isArray(t)&&!(t instanceof RegExp)&&!(t instanceof Date)}});var IH=g(Xy=>{"use strict";Object.defineProperty(Xy,"__esModule",{value:!0});Xy.isError=CH;Xy.getErrorMessage=o6e;var a6e=gS();function CH(t){if((0,a6e.isObject)(t)){let e=typeof t.name=="string",r=typeof t.message=="string";return e&&r}return!1}function o6e(t){if(CH(t))return t.message;{let e;try{typeof t=="object"&&t?e=JSON.stringify(t):e=String(t)}catch{e="[unable to stringify input]"}return`Unknown error ${e}`}}});var QH=g(Zy=>{"use strict";Object.defineProperty(Zy,"__esModule",{value:!0});Zy.computeSha256Hmac=A6e;Zy.computeSha256Hash=l6e;var BH=require("crypto");async function A6e(t,e,r){let n=Buffer.from(t,"base64");return(0,BH.createHmac)("sha256",n).update(e).digest(r)}async function l6e(t,e){return(0,BH.createHash)("sha256").update(t).digest(e)}});var SH=g(If=>{"use strict";Object.defineProperty(If,"__esModule",{value:!0});If.isDefined=ES;If.isObjectWithProperties=c6e;If.objectHasProperty=wH;function ES(t){return typeof t<"u"&&t!==null}function c6e(t,e){if(!ES(t)||typeof t!="object")return!1;for(let r of e)if(!wH(t,r))return!1;return!0}function wH(t,e){return ES(t)&&typeof t=="object"&&e in t}});var bH=g(CS=>{"use strict";var yS;Object.defineProperty(CS,"__esModule",{value:!0});CS.randomUUID=u6e;var d6e=require("crypto"),p6e=typeof((yS=globalThis?.crypto)===null||yS===void 0?void 0:yS.randomUUID)=="function"?globalThis.crypto.randomUUID.bind(globalThis.crypto):d6e.randomUUID;function u6e(){return p6e()}});var vH=g($t=>{"use strict";var IS,BS,QS,wS;Object.defineProperty($t,"__esModule",{value:!0});$t.isReactNative=$t.isNodeRuntime=$t.isNode=$t.isNodeLike=$t.isBun=$t.isDeno=$t.isWebWorker=$t.isBrowser=void 0;$t.isBrowser=typeof window<"u"&&typeof window.document<"u";$t.isWebWorker=typeof self=="object"&&typeof self?.importScripts=="function"&&(((IS=self.constructor)===null||IS===void 0?void 0:IS.name)==="DedicatedWorkerGlobalScope"||((BS=self.constructor)===null||BS===void 0?void 0:BS.name)==="ServiceWorkerGlobalScope"||((QS=self.constructor)===null||QS===void 0?void 0:QS.name)==="SharedWorkerGlobalScope");$t.isDeno=typeof Deno<"u"&&typeof Deno.version<"u"&&typeof Deno.version.deno<"u";$t.isBun=typeof Bun<"u"&&typeof Bun.version<"u";$t.isNodeLike=typeof globalThis.process<"u"&&!!globalThis.process.version&&!!(!((wS=globalThis.process.versions)===null||wS===void 0)&&wS.node);$t.isNode=$t.isNodeLike;$t.isNodeRuntime=$t.isNodeLike&&!$t.isBun&&!$t.isDeno;$t.isReactNative=typeof navigator<"u"&&navigator?.product==="ReactNative"});var RH=g(eC=>{"use strict";Object.defineProperty(eC,"__esModule",{value:!0});eC.uint8ArrayToString=m6e;eC.stringToUint8Array=h6e;function m6e(t,e){return Buffer.from(t).toString(e)}function h6e(t,e){return Buffer.from(t,e)}});var _s=g(Ae=>{"use strict";Object.defineProperty(Ae,"__esModule",{value:!0});Ae.stringToUint8Array=Ae.uint8ArrayToString=Ae.isWebWorker=Ae.isReactNative=Ae.isDeno=Ae.isNodeRuntime=Ae.isNodeLike=Ae.isNode=Ae.isBun=Ae.isBrowser=Ae.randomUUID=Ae.objectHasProperty=Ae.isObjectWithProperties=Ae.isDefined=Ae.computeSha256Hmac=Ae.computeSha256Hash=Ae.getErrorMessage=Ae.isError=Ae.isObject=Ae.getRandomIntegerInclusive=Ae.createAbortablePromise=Ae.cancelablePromiseRace=Ae.calculateRetryDelay=Ae.delay=void 0;var NH=EH();Object.defineProperty(Ae,"delay",{enumerable:!0,get:function(){return NH.delay}});Object.defineProperty(Ae,"calculateRetryDelay",{enumerable:!0,get:function(){return NH.calculateRetryDelay}});var f6e=yH();Object.defineProperty(Ae,"cancelablePromiseRace",{enumerable:!0,get:function(){return f6e.cancelablePromiseRace}});var g6e=pS();Object.defineProperty(Ae,"createAbortablePromise",{enumerable:!0,get:function(){return g6e.createAbortablePromise}});var E6e=mS();Object.defineProperty(Ae,"getRandomIntegerInclusive",{enumerable:!0,get:function(){return E6e.getRandomIntegerInclusive}});var y6e=gS();Object.defineProperty(Ae,"isObject",{enumerable:!0,get:function(){return y6e.isObject}});var TH=IH();Object.defineProperty(Ae,"isError",{enumerable:!0,get:function(){return TH.isError}});Object.defineProperty(Ae,"getErrorMessage",{enumerable:!0,get:function(){return TH.getErrorMessage}});var DH=QH();Object.defineProperty(Ae,"computeSha256Hash",{enumerable:!0,get:function(){return DH.computeSha256Hash}});Object.defineProperty(Ae,"computeSha256Hmac",{enumerable:!0,get:function(){return DH.computeSha256Hmac}});var SS=SH();Object.defineProperty(Ae,"isDefined",{enumerable:!0,get:function(){return SS.isDefined}});Object.defineProperty(Ae,"isObjectWithProperties",{enumerable:!0,get:function(){return SS.isObjectWithProperties}});Object.defineProperty(Ae,"objectHasProperty",{enumerable:!0,get:function(){return SS.objectHasProperty}});var C6e=bH();Object.defineProperty(Ae,"randomUUID",{enumerable:!0,get:function(){return C6e.randomUUID}});var DA=vH();Object.defineProperty(Ae,"isBrowser",{enumerable:!0,get:function(){return DA.isBrowser}});Object.defineProperty(Ae,"isBun",{enumerable:!0,get:function(){return DA.isBun}});Object.defineProperty(Ae,"isNode",{enumerable:!0,get:function(){return DA.isNode}});Object.defineProperty(Ae,"isNodeLike",{enumerable:!0,get:function(){return DA.isNodeLike}});Object.defineProperty(Ae,"isNodeRuntime",{enumerable:!0,get:function(){return DA.isNodeRuntime}});Object.defineProperty(Ae,"isDeno",{enumerable:!0,get:function(){return DA.isDeno}});Object.defineProperty(Ae,"isReactNative",{enumerable:!0,get:function(){return DA.isReactNative}});Object.defineProperty(Ae,"isWebWorker",{enumerable:!0,get:function(){return DA.isWebWorker}});var kH=RH();Object.defineProperty(Ae,"uint8ArrayToString",{enumerable:!0,get:function(){return kH.uint8ArrayToString}});Object.defineProperty(Ae,"stringToUint8Array",{enumerable:!0,get:function(){return kH.stringToUint8Array}})});var rC=g(tC=>{"use strict";Object.defineProperty(tC,"__esModule",{value:!0});tC.Sanitizer=void 0;var I6e=_s(),bS="REDACTED",B6e=["x-ms-client-request-id","x-ms-return-client-request-id","x-ms-useragent","x-ms-correlation-request-id","x-ms-request-id","client-request-id","ms-cv","return-client-request-id","traceparent","Access-Control-Allow-Credentials","Access-Control-Allow-Headers","Access-Control-Allow-Methods","Access-Control-Allow-Origin","Access-Control-Expose-Headers","Access-Control-Max-Age","Access-Control-Request-Headers","Access-Control-Request-Method","Origin","Accept","Accept-Encoding","Cache-Control","Connection","Content-Length","Content-Type","Date","ETag","Expires","If-Match","If-Modified-Since","If-None-Match","If-Unmodified-Since","Last-Modified","Pragma","Request-Id","Retry-After","Server","Transfer-Encoding","User-Agent","WWW-Authenticate"],Q6e=["api-version"],vS=class{constructor({additionalAllowedHeaderNames:e=[],additionalAllowedQueryParameters:r=[]}={}){e=B6e.concat(e),r=Q6e.concat(r),this.allowedHeaderNames=new Set(e.map(n=>n.toLowerCase())),this.allowedQueryParameters=new Set(r.map(n=>n.toLowerCase()))}sanitize(e){let r=new Set;return JSON.stringify(e,(n,i)=>{if(i instanceof Error)return Object.assign(Object.assign({},i),{name:i.name,message:i.message});if(n==="headers")return this.sanitizeHeaders(i);if(n==="url")return this.sanitizeUrl(i);if(n==="query")return this.sanitizeQuery(i);if(n==="body")return;if(n==="response")return;if(n==="operationSpec")return;if(Array.isArray(i)||(0,I6e.isObject)(i)){if(r.has(i))return"[Circular]";r.add(i)}return i},2)}sanitizeUrl(e){if(typeof e!="string"||e===null||e==="")return e;let r=new URL(e);if(!r.search)return e;for(let[n]of r.searchParams)this.allowedQueryParameters.has(n.toLowerCase())||r.searchParams.set(n,bS);return r.toString()}sanitizeHeaders(e){let r={};for(let n of Object.keys(e))this.allowedHeaderNames.has(n.toLowerCase())?r[n]=e[n]:r[n]=bS;return r}sanitizeQuery(e){if(typeof e!="object"||e===null)return e;let r={};for(let n of Object.keys(e))this.allowedQueryParameters.has(n.toLowerCase())?r[n]=e[n]:r[n]=bS;return r}};tC.Sanitizer=vS});var RS=g(tu=>{"use strict";Object.defineProperty(tu,"__esModule",{value:!0});tu.logPolicyName=void 0;tu.logPolicy=b6e;var w6e=Wl(),S6e=rC();tu.logPolicyName="logPolicy";function b6e(t={}){var e;let r=(e=t.logger)!==null&&e!==void 0?e:w6e.logger.info,n=new S6e.Sanitizer({additionalAllowedHeaderNames:t.additionalAllowedHeaderNames,additionalAllowedQueryParameters:t.additionalAllowedQueryParameters});return{name:tu.logPolicyName,async sendRequest(i,s){if(!r.enabled)return s(i);r(`Request: ${n.sanitize(i)}`);let a=await s(i);return r(`Response status code: ${a.status}`),r(`Headers: ${n.sanitize(a.headers)}`),a}}}});var NS=g(ru=>{"use strict";Object.defineProperty(ru,"__esModule",{value:!0});ru.redirectPolicyName=void 0;ru.redirectPolicy=v6e;ru.redirectPolicyName="redirectPolicy";var PH=["GET","HEAD"];function v6e(t={}){let{maxRetries:e=20}=t;return{name:ru.redirectPolicyName,async sendRequest(r,n){let i=await n(r);return _H(n,i,e)}}}async function _H(t,e,r,n=0){let{request:i,status:s,headers:a}=e,o=a.get("location");if(o&&(s===300||s===301&&PH.includes(i.method)||s===302&&PH.includes(i.method)||s===303&&i.method==="POST"||s===307)&&n{"use strict";Object.defineProperty(nC,"__esModule",{value:!0});nC.getHeaderName=R6e;nC.setPlatformSpecificData=N6e;var MH=(kr(),Lo(Ao)),TS=MH.__importStar(require("node:os")),DS=MH.__importStar(require("node:process"));function R6e(){return"User-Agent"}async function N6e(t){if(DS&&DS.versions){let e=DS.versions;e.bun?t.set("Bun",e.bun):e.deno?t.set("Deno",e.deno):e.node&&t.set("Node",e.node)}t.set("OS",`(${TS.arch()}-${TS.type()}-${TS.release()})`)}});var kA=g(nu=>{"use strict";Object.defineProperty(nu,"__esModule",{value:!0});nu.DEFAULT_RETRY_POLICY_COUNT=nu.SDK_VERSION=void 0;nu.SDK_VERSION="1.19.0";nu.DEFAULT_RETRY_POLICY_COUNT=3});var kS=g(iC=>{"use strict";Object.defineProperty(iC,"__esModule",{value:!0});iC.getUserAgentHeaderName=k6e;iC.getUserAgentValue=P6e;var xH=OH(),T6e=kA();function D6e(t){let e=[];for(let[r,n]of t){let i=n?`${r}/${n}`:r;e.push(i)}return e.join(" ")}function k6e(){return(0,xH.getHeaderName)()}async function P6e(t){let e=new Map;e.set("core-rest-pipeline",T6e.SDK_VERSION),await(0,xH.setPlatformSpecificData)(e);let r=D6e(e);return t?`${t} ${r}`:r}});var PS=g(iu=>{"use strict";Object.defineProperty(iu,"__esModule",{value:!0});iu.userAgentPolicyName=void 0;iu.userAgentPolicy=_6e;var FH=kS(),LH=(0,FH.getUserAgentHeaderName)();iu.userAgentPolicyName="userAgentPolicy";function _6e(t={}){let e=(0,FH.getUserAgentValue)(t.userAgentPrefix);return{name:iu.userAgentPolicyName,async sendRequest(r,n){return r.headers.has(LH)||r.headers.set(LH,await e),n(r)}}}});var sC=g(su=>{"use strict";Object.defineProperty(su,"__esModule",{value:!0});su.isNodeReadableStream=UH;su.isWebReadableStream=qH;su.isReadableStream=M6e;su.isBlob=O6e;function UH(t){return!!(t&&typeof t.pipe=="function")}function qH(t){return!!(t&&typeof t.getReader=="function"&&typeof t.tee=="function")}function M6e(t){return UH(t)||qH(t)}function O6e(t){return typeof t.stream=="function"}});var _S=g(Bf=>{"use strict";Object.defineProperty(Bf,"__esModule",{value:!0});Bf.getRawContent=U6e;Bf.createFileFromStream=q6e;Bf.createFile=V6e;var x6e=_s(),L6e=sC(),VH={arrayBuffer:()=>{throw new Error("Not implemented")},bytes:()=>{throw new Error("Not implemented")},slice:()=>{throw new Error("Not implemented")},text:()=>{throw new Error("Not implemented")}},aC=Symbol("rawContent");function F6e(t){return typeof t[aC]=="function"}function U6e(t){return F6e(t)?t[aC]():t.stream()}function q6e(t,e,r={}){var n,i,s,a;return Object.assign(Object.assign({},VH),{type:(n=r.type)!==null&&n!==void 0?n:"",lastModified:(i=r.lastModified)!==null&&i!==void 0?i:new Date().getTime(),webkitRelativePath:(s=r.webkitRelativePath)!==null&&s!==void 0?s:"",size:(a=r.size)!==null&&a!==void 0?a:-1,name:e,stream:()=>{let o=t();if((0,L6e.isNodeReadableStream)(o))throw new Error("Not supported: a Node stream was provided as input to createFileFromStream.");return o},[aC]:t})}function V6e(t,e,r={}){var n,i,s;return x6e.isNodeLike?Object.assign(Object.assign({},VH),{type:(n=r.type)!==null&&n!==void 0?n:"",lastModified:(i=r.lastModified)!==null&&i!==void 0?i:new Date().getTime(),webkitRelativePath:(s=r.webkitRelativePath)!==null&&s!==void 0?s:"",size:t.byteLength,name:e,arrayBuffer:async()=>t.buffer,stream:()=>new Blob([t]).stream(),[aC]:()=>t}):new File([t],e,r)}});var YH=g(OS=>{"use strict";Object.defineProperty(OS,"__esModule",{value:!0});OS.concat=j6e;var uo=(kr(),Lo(Ao)),MS=require("node:stream"),G6e=sC(),H6e=_S();function GH(){return uo.__asyncGenerator(this,arguments,function*(){let e=this.getReader();try{for(;;){let{done:r,value:n}=yield uo.__await(e.read());if(r)return yield uo.__await(void 0);yield yield uo.__await(n)}}finally{e.releaseLock()}})}function Y6e(t){t[Symbol.asyncIterator]||(t[Symbol.asyncIterator]=GH.bind(t)),t.values||(t.values=GH.bind(t))}function J6e(t){return t instanceof ReadableStream?(Y6e(t),MS.Readable.fromWeb(t)):t}function HH(t){return t instanceof Uint8Array?MS.Readable.from(Buffer.from(t)):(0,G6e.isBlob)(t)?HH((0,H6e.getRawContent)(t)):J6e(t)}async function j6e(t){return function(){let e=t.map(r=>typeof r=="function"?r():r).map(HH);return MS.Readable.from(function(){return uo.__asyncGenerator(this,arguments,function*(){var r,n,i,s;for(let l of e)try{for(var a=!0,o=(n=void 0,uo.__asyncValues(l)),A;A=yield uo.__await(o.next()),r=A.done,!r;a=!0){s=A.value,a=!1;let c=s;yield yield uo.__await(c)}}catch(c){n={error:c}}finally{try{!a&&!r&&(i=o.return)&&(yield uo.__await(i.call(o)))}finally{if(n)throw n.error}}})}())}}});var xS=g(au=>{"use strict";Object.defineProperty(au,"__esModule",{value:!0});au.multipartPolicyName=void 0;au.multipartPolicy=iBe;var $l=_s(),z6e=YH(),W6e=sC();function $6e(){return`----AzSDKFormBoundary${(0,$l.randomUUID)()}`}function K6e(t){let e="";for(let[r,n]of t)e+=`${r}: ${n}\r -`;return e}function X6e(t){return t instanceof Uint8Array?t.byteLength:(0,W6e.isBlob)(t)?t.size===-1?void 0:t.size:void 0}function Z6e(t){let e=0;for(let r of t){let n=X6e(r);if(n===void 0)return;e+=n}return e}async function eBe(t,e,r){let n=[(0,$l.stringToUint8Array)(`--${r}`,"utf-8"),...e.flatMap(s=>[(0,$l.stringToUint8Array)(`\r -`,"utf-8"),(0,$l.stringToUint8Array)(K6e(s.headers),"utf-8"),(0,$l.stringToUint8Array)(`\r -`,"utf-8"),s.body,(0,$l.stringToUint8Array)(`\r ---${r}`,"utf-8")]),(0,$l.stringToUint8Array)(`--\r -\r -`,"utf-8")],i=Z6e(n);i&&t.headers.set("Content-Length",i),t.body=await(0,z6e.concat)(n)}au.multipartPolicyName="multipartPolicy";var tBe=70,rBe=new Set("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789'()+,-./:=?");function nBe(t){if(t.length>tBe)throw new Error(`Multipart boundary "${t}" exceeds maximum length of 70 characters`);if(Array.from(t).some(e=>!rBe.has(e)))throw new Error(`Multipart boundary "${t}" contains invalid characters`)}function iBe(){return{name:au.multipartPolicyName,async sendRequest(t,e){var r;if(!t.multipartBody)return e(t);if(t.body)throw new Error("multipartBody and regular body cannot be set at the same time");let n=t.multipartBody.boundary,i=(r=t.headers.get("Content-Type"))!==null&&r!==void 0?r:"multipart/mixed",s=i.match(/^(multipart\/[^ ;]+)(?:; *boundary=(.+))?$/);if(!s)throw new Error(`Got multipart request body, but content-type header was not multipart: ${i}`);let[,a,o]=s;if(o&&n&&o!==n)throw new Error(`Multipart boundary was specified as ${o} in the header, but got ${n} in the request body`);return n??(n=o),n?nBe(n):n=$6e(),t.headers.set("Content-Type",`${a}; boundary=${n}`),await eBe(t,t.multipartBody.parts,n),t.multipartBody=void 0,e(t)}}}});var LS=g(ou=>{"use strict";Object.defineProperty(ou,"__esModule",{value:!0});ou.decompressResponsePolicyName=void 0;ou.decompressResponsePolicy=sBe;ou.decompressResponsePolicyName="decompressResponsePolicy";function sBe(){return{name:ou.decompressResponsePolicyName,async sendRequest(t,e){return t.method!=="HEAD"&&t.headers.set("Accept-Encoding","gzip,deflate"),e(t)}}}});var JH=g(oC=>{"use strict";Object.defineProperty(oC,"__esModule",{value:!0});oC.AbortError=void 0;var FS=class extends Error{constructor(e){super(e),this.name="AbortError"}};oC.AbortError=FS});var lC=g(AC=>{"use strict";Object.defineProperty(AC,"__esModule",{value:!0});AC.AbortError=void 0;var aBe=JH();Object.defineProperty(AC,"AbortError",{enumerable:!0,get:function(){return aBe.AbortError}})});var dC=g(cC=>{"use strict";Object.defineProperty(cC,"__esModule",{value:!0});cC.delay=lBe;cC.parseHeaderValueAsNumber=cBe;var oBe=lC(),ABe="The operation was aborted.";function lBe(t,e,r){return new Promise((n,i)=>{let s,a,o=()=>i(new oBe.AbortError(r?.abortErrorMsg?r?.abortErrorMsg:ABe)),A=()=>{r?.abortSignal&&a&&r.abortSignal.removeEventListener("abort",a)};if(a=()=>(s&&clearTimeout(s),A(),o()),r?.abortSignal&&r.abortSignal.aborted)return o();s=setTimeout(()=>{A(),n(e)},t),r?.abortSignal&&r.abortSignal.addEventListener("abort",a)})}function cBe(t,e){let r=t.headers.get(e);if(!r)return;let n=Number(r);if(!Number.isNaN(n))return n}});var uC=g(pC=>{"use strict";Object.defineProperty(pC,"__esModule",{value:!0});pC.isThrottlingRetryResponse=uBe;pC.throttlingRetryStrategy=mBe;var dBe=dC(),US="Retry-After",pBe=["retry-after-ms","x-ms-retry-after-ms",US];function jH(t){if(t&&[429,503].includes(t.status))try{for(let i of pBe){let s=(0,dBe.parseHeaderValueAsNumber)(t,i);if(s===0||s)return s*(i===US?1e3:1)}let e=t.headers.get(US);if(!e)return;let n=Date.parse(e)-Date.now();return Number.isFinite(n)?Math.max(0,n):void 0}catch{return}}function uBe(t){return Number.isFinite(jH(t))}function mBe(){return{name:"throttlingRetryStrategy",retry({response:t}){let e=jH(t);return Number.isFinite(e)?{retryAfterInMs:e}:{skipStrategy:!0}}}}});var mC=g(Qf=>{"use strict";Object.defineProperty(Qf,"__esModule",{value:!0});Qf.exponentialRetryStrategy=yBe;Qf.isExponentialRetryResponse=zH;Qf.isSystemError=WH;var hBe=_s(),fBe=uC(),gBe=1e3,EBe=1e3*64;function yBe(t={}){var e,r;let n=(e=t.retryDelayInMs)!==null&&e!==void 0?e:gBe,i=(r=t.maxRetryDelayInMs)!==null&&r!==void 0?r:EBe;return{name:"exponentialRetryStrategy",retry({retryCount:s,response:a,responseError:o}){let A=WH(o),l=A&&t.ignoreSystemErrors,c=zH(a),d=c&&t.ignoreHttpStatusCodes;return a&&((0,fBe.isThrottlingRetryResponse)(a)||!c)||d||l?{skipStrategy:!0}:o&&!A&&!c?{errorToThrow:o}:(0,hBe.calculateRetryDelay)(s,{retryDelayInMs:n,maxRetryDelayInMs:i})}}}function zH(t){return!!(t&&t.status!==void 0&&(t.status>=500||t.status===408)&&t.status!==501&&t.status!==505)}function WH(t){return t?t.code==="ETIMEDOUT"||t.code==="ESOCKETTIMEDOUT"||t.code==="ECONNREFUSED"||t.code==="ECONNRESET"||t.code==="ENOENT"||t.code==="ENOTFOUND":!1}});var Au=g(qS=>{"use strict";Object.defineProperty(qS,"__esModule",{value:!0});qS.retryPolicy=wBe;var CBe=dC(),IBe=Cf(),BBe=lC(),$H=kA(),KH=(0,IBe.createClientLogger)("core-rest-pipeline retryPolicy"),QBe="retryPolicy";function wBe(t,e={maxRetries:$H.DEFAULT_RETRY_POLICY_COUNT}){let r=e.logger||KH;return{name:QBe,async sendRequest(n,i){var s,a;let o,A,l=-1;e:for(;;){l+=1,o=void 0,A=void 0;try{r.info(`Retry ${l}: Attempting to send request`,n.requestId),o=await i(n),r.info(`Retry ${l}: Received a response from request`,n.requestId)}catch(c){if(r.error(`Retry ${l}: Received an error from request`,n.requestId),A=c,!c||A.name!=="RestError")throw c;o=A.response}if(!((s=n.abortSignal)===null||s===void 0)&&s.aborted)throw r.error(`Retry ${l}: Request aborted.`),new BBe.AbortError;if(l>=((a=e.maxRetries)!==null&&a!==void 0?a:$H.DEFAULT_RETRY_POLICY_COUNT)){if(r.info(`Retry ${l}: Maximum retries reached. Returning the last received response, or throwing the last received error.`),A)throw A;if(o)return o;throw new Error("Maximum retries reached with no response or error to throw")}r.info(`Retry ${l}: Processing ${t.length} retry strategies.`);t:for(let c of t){let d=c.logger||KH;d.info(`Retry ${l}: Processing retry strategy ${c.name}.`);let p=c.retry({retryCount:l,response:o,responseError:A});if(p.skipStrategy){d.info(`Retry ${l}: Skipped.`);continue t}let{errorToThrow:u,retryAfterInMs:m,redirectTo:h}=p;if(u)throw d.error(`Retry ${l}: Retry strategy ${c.name} throws error:`,u),u;if(m||m===0){d.info(`Retry ${l}: Retry strategy ${c.name} retries after ${m}`),await(0,CBe.delay)(m,void 0,{abortSignal:n.abortSignal});continue e}if(h){d.info(`Retry ${l}: Retry strategy ${c.name} redirects to ${h}`),n.url=h;continue e}}if(A)throw r.info("None of the retry strategies could work with the received error. Throwing it."),A;if(o)return r.info("None of the retry strategies could work with the received response. Returning it."),o}}}}});var VS=g(lu=>{"use strict";Object.defineProperty(lu,"__esModule",{value:!0});lu.defaultRetryPolicyName=void 0;lu.defaultRetryPolicy=NBe;var SBe=mC(),bBe=uC(),vBe=Au(),RBe=kA();lu.defaultRetryPolicyName="defaultRetryPolicy";function NBe(t={}){var e;return{name:lu.defaultRetryPolicyName,sendRequest:(0,vBe.retryPolicy)([(0,bBe.throttlingRetryStrategy)(),(0,SBe.exponentialRetryStrategy)(t)],{maxRetries:(e=t.maxRetries)!==null&&e!==void 0?e:RBe.DEFAULT_RETRY_POLICY_COUNT}).sendRequest}}});var wf=g(HS=>{"use strict";Object.defineProperty(HS,"__esModule",{value:!0});HS.createHttpHeaders=DBe;function hC(t){return t.toLowerCase()}function*TBe(t){for(let e of t.values())yield[e.name,e.value]}var GS=class{constructor(e){if(this._headersMap=new Map,e)for(let r of Object.keys(e))this.set(r,e[r])}set(e,r){this._headersMap.set(hC(e),{name:e,value:String(r).trim()})}get(e){var r;return(r=this._headersMap.get(hC(e)))===null||r===void 0?void 0:r.value}has(e){return this._headersMap.has(hC(e))}delete(e){this._headersMap.delete(hC(e))}toJSON(e={}){let r={};if(e.preserveCase)for(let n of this._headersMap.values())r[n.name]=n.value;else for(let[n,i]of this._headersMap)r[n]=i.value;return r}toString(){return JSON.stringify(this.toJSON({preserveCase:!0}))}[Symbol.iterator](){return TBe(this._headersMap)}};function DBe(t){return new GS(t)}});var YS=g(cu=>{"use strict";Object.defineProperty(cu,"__esModule",{value:!0});cu.formDataPolicyName=void 0;cu.formDataPolicy=PBe;var ZH=_s(),XH=wf();cu.formDataPolicyName="formDataPolicy";function kBe(t){var e;let r={};for(let[n,i]of t.entries())(e=r[n])!==null&&e!==void 0||(r[n]=[]),r[n].push(i);return r}function PBe(){return{name:cu.formDataPolicyName,async sendRequest(t,e){if(ZH.isNodeLike&&typeof FormData<"u"&&t.body instanceof FormData&&(t.formData=kBe(t.body),t.body=void 0),t.formData){let r=t.headers.get("Content-Type");r&&r.indexOf("application/x-www-form-urlencoded")!==-1?t.body=_Be(t.formData):await MBe(t.formData,t),t.formData=void 0}return e(t)}}}function _Be(t){let e=new URLSearchParams;for(let[r,n]of Object.entries(t))if(Array.isArray(n))for(let i of n)e.append(r,i.toString());else e.append(r,n.toString());return e.toString()}async function MBe(t,e){let r=e.headers.get("Content-Type");if(r&&!r.startsWith("multipart/form-data"))return;e.headers.set("Content-Type",r??"multipart/form-data");let n=[];for(let[i,s]of Object.entries(t))for(let a of Array.isArray(s)?s:[s])if(typeof a=="string")n.push({headers:(0,XH.createHttpHeaders)({"Content-Disposition":`form-data; name="${i}"`}),body:(0,ZH.stringToUint8Array)(a,"utf-8")});else{if(a==null||typeof a!="object")throw new Error(`Unexpected value for key ${i}: ${a}. Value should be serialized to string first.`);{let o=a.name||"blob",A=(0,XH.createHttpHeaders)();A.set("Content-Disposition",`form-data; name="${i}"; filename="${o}"`),A.set("Content-Type",a.type||"application/octet-stream"),n.push({headers:A,body:a})}}e.multipartBody={parts:n}}});var JS=g(As=>{"use strict";Object.defineProperty(As,"__esModule",{value:!0});As.globalNoProxyList=As.proxyPolicyName=void 0;As.loadNoProxy=iY;As.getDefaultProxySettings=YBe;As.proxyPolicy=jBe;var OBe=tw(),xBe=rw(),LBe=Wl(),FBe="HTTPS_PROXY",UBe="HTTP_PROXY",qBe="ALL_PROXY",VBe="NO_PROXY";As.proxyPolicyName="proxyPolicy";As.globalNoProxyList=[];var rY=!1,GBe=new Map;function fC(t){if(process.env[t])return process.env[t];if(process.env[t.toLowerCase()])return process.env[t.toLowerCase()]}function nY(){if(!process)return;let t=fC(FBe),e=fC(qBe),r=fC(UBe);return t||e||r}function HBe(t,e,r){if(e.length===0)return!1;let n=new URL(t).hostname;if(r?.has(n))return r.get(n);let i=!1;for(let s of e)s[0]==="."?(n.endsWith(s)||n.length===s.length-1&&n===s.slice(1))&&(i=!0):n===s&&(i=!0);return r?.set(n,i),i}function iY(){let t=fC(VBe);return rY=!0,t?t.split(",").map(e=>e.trim()).filter(e=>e.length):[]}function YBe(t){if(!t&&(t=nY(),!t))return;let e=new URL(t);return{host:(e.protocol?e.protocol+"//":"")+e.hostname,port:Number.parseInt(e.port||"80"),username:e.username,password:e.password}}function JBe(){let t=nY();return t?new URL(t):void 0}function eY(t){let e;try{e=new URL(t.host)}catch{throw new Error(`Expecting a valid host string in proxy settings, but found "${t.host}".`)}return e.port=String(t.port),t.username&&(e.username=t.username),t.password&&(e.password=t.password),e}function tY(t,e,r){if(t.agent)return;let i=new URL(t.url).protocol!=="https:";t.tlsSettings&&LBe.logger.warning("TLS settings are not supported in combination with custom Proxy, certificates provided to the client will be ignored.");let s=t.headers.toJSON();i?(e.httpProxyAgent||(e.httpProxyAgent=new xBe.HttpProxyAgent(r,{headers:s})),t.agent=e.httpProxyAgent):(e.httpsProxyAgent||(e.httpsProxyAgent=new OBe.HttpsProxyAgent(r,{headers:s})),t.agent=e.httpsProxyAgent)}function jBe(t,e){rY||As.globalNoProxyList.push(...iY());let r=t?eY(t):JBe(),n={};return{name:As.proxyPolicyName,async sendRequest(i,s){var a;return!i.proxySettings&&r&&!HBe(i.url,(a=e?.customNoProxyList)!==null&&a!==void 0?a:As.globalNoProxyList,e?.customNoProxyList?void 0:GBe)?tY(i,n,r):i.proxySettings&&tY(i,n,eY(i.proxySettings)),s(i)}}}});var jS=g(du=>{"use strict";Object.defineProperty(du,"__esModule",{value:!0});du.setClientRequestIdPolicyName=void 0;du.setClientRequestIdPolicy=zBe;du.setClientRequestIdPolicyName="setClientRequestIdPolicy";function zBe(t="x-ms-client-request-id"){return{name:du.setClientRequestIdPolicyName,async sendRequest(e,r){return e.headers.has(t)||e.headers.set(t,e.requestId),r(e)}}}});var zS=g(pu=>{"use strict";Object.defineProperty(pu,"__esModule",{value:!0});pu.agentPolicyName=void 0;pu.agentPolicy=WBe;pu.agentPolicyName="agentPolicy";function WBe(t){return{name:pu.agentPolicyName,sendRequest:async(e,r)=>(e.agent||(e.agent=t),r(e))}}});var WS=g(uu=>{"use strict";Object.defineProperty(uu,"__esModule",{value:!0});uu.tlsPolicyName=void 0;uu.tlsPolicy=$Be;uu.tlsPolicyName="tlsPolicy";function $Be(t){return{name:uu.tlsPolicyName,sendRequest:async(e,r)=>(e.tlsSettings||(e.tlsSettings=t),r(e))}}});var $S=g(Ba=>{"use strict";Object.defineProperty(Ba,"__esModule",{value:!0});Ba.TracingContextImpl=Ba.createTracingContext=Ba.knownContextKeys=void 0;Ba.knownContextKeys={span:Symbol.for("@azure/core-tracing span"),namespace:Symbol.for("@azure/core-tracing namespace")};function KBe(t={}){let e=new gC(t.parentContext);return t.span&&(e=e.setValue(Ba.knownContextKeys.span,t.span)),t.namespace&&(e=e.setValue(Ba.knownContextKeys.namespace,t.namespace)),e}Ba.createTracingContext=KBe;var gC=class t{constructor(e){this._contextMap=e instanceof t?new Map(e._contextMap):new Map}setValue(e,r){let n=new t(this);return n._contextMap.set(e,r),n}getValue(e){return this._contextMap.get(e)}deleteValue(e){let r=new t(this);return r._contextMap.delete(e),r}};Ba.TracingContextImpl=gC});var KS=g(Qa=>{"use strict";Object.defineProperty(Qa,"__esModule",{value:!0});Qa.getInstrumenter=Qa.useInstrumenter=Qa.createDefaultInstrumenter=Qa.createDefaultTracingSpan=void 0;var XBe=$S(),EC=Aw();function sY(){return{end:()=>{},isRecording:()=>!1,recordException:()=>{},setAttribute:()=>{},setStatus:()=>{}}}Qa.createDefaultTracingSpan=sY;function aY(){return{createRequestHeaders:()=>({}),parseTraceparentHeader:()=>{},startSpan:(t,e)=>({span:sY(),tracingContext:(0,XBe.createTracingContext)({parentContext:e.tracingContext})}),withContext(t,e,...r){return e(...r)}}}Qa.createDefaultInstrumenter=aY;function ZBe(t){EC.state.instrumenterImplementation=t}Qa.useInstrumenter=ZBe;function e9e(){return EC.state.instrumenterImplementation||(EC.state.instrumenterImplementation=aY()),EC.state.instrumenterImplementation}Qa.getInstrumenter=e9e});var oY=g(CC=>{"use strict";Object.defineProperty(CC,"__esModule",{value:!0});CC.createTracingClient=void 0;var yC=KS(),XS=$S();function t9e(t){let{namespace:e,packageName:r,packageVersion:n}=t;function i(l,c,d){var p;let u=(0,yC.getInstrumenter)().startSpan(l,Object.assign(Object.assign({},d),{packageName:r,packageVersion:n,tracingContext:(p=c?.tracingOptions)===null||p===void 0?void 0:p.tracingContext})),m=u.tracingContext,h=u.span;m.getValue(XS.knownContextKeys.namespace)||(m=m.setValue(XS.knownContextKeys.namespace,e)),h.setAttribute("az.namespace",m.getValue(XS.knownContextKeys.namespace));let f=Object.assign({},c,{tracingOptions:Object.assign(Object.assign({},c?.tracingOptions),{tracingContext:m})});return{span:h,updatedOptions:f}}async function s(l,c,d,p){let{span:u,updatedOptions:m}=i(l,c,p);try{let h=await a(m.tracingOptions.tracingContext,()=>Promise.resolve(d(m,u)));return u.setStatus({status:"success"}),h}catch(h){throw u.setStatus({status:"error",error:h}),h}finally{u.end()}}function a(l,c,...d){return(0,yC.getInstrumenter)().withContext(l,c,...d)}function o(l){return(0,yC.getInstrumenter)().parseTraceparentHeader(l)}function A(l){return(0,yC.getInstrumenter)().createRequestHeaders(l)}return{startSpan:i,withSpan:s,withContext:a,parseTraceparentHeader:o,createRequestHeaders:A}}CC.createTracingClient=t9e});var AY=g(mu=>{"use strict";Object.defineProperty(mu,"__esModule",{value:!0});mu.createTracingClient=mu.useInstrumenter=void 0;var r9e=KS();Object.defineProperty(mu,"useInstrumenter",{enumerable:!0,get:function(){return r9e.useInstrumenter}});var n9e=oY();Object.defineProperty(mu,"createTracingClient",{enumerable:!0,get:function(){return n9e.createTracingClient}})});var lY=g(IC=>{"use strict";Object.defineProperty(IC,"__esModule",{value:!0});IC.custom=void 0;var i9e=require("node:util");IC.custom=i9e.inspect.custom});var bf=g(Sf=>{"use strict";Object.defineProperty(Sf,"__esModule",{value:!0});Sf.RestError=void 0;Sf.isRestError=l9e;var s9e=_s(),a9e=lY(),o9e=rC(),A9e=new o9e.Sanitizer,hu=class t extends Error{constructor(e,r={}){super(e),this.name="RestError",this.code=r.code,this.statusCode=r.statusCode,Object.defineProperty(this,"request",{value:r.request,enumerable:!1}),Object.defineProperty(this,"response",{value:r.response,enumerable:!1}),Object.setPrototypeOf(this,t.prototype)}[a9e.custom](){return`RestError: ${this.message} - ${A9e.sanitize(Object.assign(Object.assign({},this),{request:this.request,response:this.response}))}`}};Sf.RestError=hu;hu.REQUEST_SEND_ERROR="REQUEST_SEND_ERROR";hu.PARSE_ERROR="PARSE_ERROR";function l9e(t){return t instanceof hu?!0:(0,s9e.isError)(t)&&t.name==="RestError"}});var ZS=g(fu=>{"use strict";Object.defineProperty(fu,"__esModule",{value:!0});fu.tracingPolicyName=void 0;fu.tracingPolicy=h9e;var c9e=AY(),d9e=kA(),p9e=kS(),BC=Wl(),vf=_s(),u9e=bf(),m9e=rC();fu.tracingPolicyName="tracingPolicy";function h9e(t={}){let e=(0,p9e.getUserAgentValue)(t.userAgentPrefix),r=new m9e.Sanitizer({additionalAllowedQueryParameters:t.additionalAllowedQueryParameters}),n=f9e();return{name:fu.tracingPolicyName,async sendRequest(i,s){var a;if(!n)return s(i);let o=await e,A={"http.url":r.sanitizeUrl(i.url),"http.method":i.method,"http.user_agent":o,requestId:i.requestId};o&&(A["http.user_agent"]=o);let{span:l,tracingContext:c}=(a=g9e(n,i,A))!==null&&a!==void 0?a:{};if(!l||!c)return s(i);try{let d=await n.withContext(c,s,i);return y9e(l,d),d}catch(d){throw E9e(l,d),d}}}}function f9e(){try{return(0,c9e.createTracingClient)({namespace:"",packageName:"@azure/core-rest-pipeline",packageVersion:d9e.SDK_VERSION})}catch(t){BC.logger.warning(`Error when creating the TracingClient: ${(0,vf.getErrorMessage)(t)}`);return}}function g9e(t,e,r){try{let{span:n,updatedOptions:i}=t.startSpan(`HTTP ${e.method}`,{tracingOptions:e.tracingOptions},{spanKind:"client",spanAttributes:r});if(!n.isRecording()){n.end();return}let s=t.createRequestHeaders(i.tracingOptions.tracingContext);for(let[a,o]of Object.entries(s))e.headers.set(a,o);return{span:n,tracingContext:i.tracingOptions.tracingContext}}catch(n){BC.logger.warning(`Skipping creating a tracing span due to an error: ${(0,vf.getErrorMessage)(n)}`);return}}function E9e(t,e){try{t.setStatus({status:"error",error:(0,vf.isError)(e)?e:void 0}),(0,u9e.isRestError)(e)&&e.statusCode&&t.setAttribute("http.status_code",e.statusCode),t.end()}catch(r){BC.logger.warning(`Skipping tracing span processing due to an error: ${(0,vf.getErrorMessage)(r)}`)}}function y9e(t,e){try{t.setAttribute("http.status_code",e.status);let r=e.headers.get("x-ms-request-id");r&&t.setAttribute("serviceRequestId",r),e.status>=400&&t.setStatus({status:"error"}),t.end()}catch(r){BC.logger.warning(`Skipping tracing span processing due to an error: ${(0,vf.getErrorMessage)(r)}`)}}});var pY=g(eb=>{"use strict";Object.defineProperty(eb,"__esModule",{value:!0});eb.createPipelineFromOptions=k9e;var C9e=RS(),I9e=rS(),B9e=NS(),Q9e=PS(),cY=xS(),w9e=LS(),S9e=VS(),b9e=YS(),dY=_s(),v9e=JS(),R9e=jS(),N9e=zS(),T9e=WS(),D9e=ZS();function k9e(t){var e;let r=(0,I9e.createEmptyPipeline)();return dY.isNodeLike&&(t.agent&&r.addPolicy((0,N9e.agentPolicy)(t.agent)),t.tlsOptions&&r.addPolicy((0,T9e.tlsPolicy)(t.tlsOptions)),r.addPolicy((0,v9e.proxyPolicy)(t.proxyOptions)),r.addPolicy((0,w9e.decompressResponsePolicy)())),r.addPolicy((0,b9e.formDataPolicy)(),{beforePolicies:[cY.multipartPolicyName]}),r.addPolicy((0,Q9e.userAgentPolicy)(t.userAgentOptions)),r.addPolicy((0,R9e.setClientRequestIdPolicy)((e=t.telemetryOptions)===null||e===void 0?void 0:e.clientRequestIdHeaderName)),r.addPolicy((0,cY.multipartPolicy)(),{afterPhase:"Deserialize"}),r.addPolicy((0,S9e.defaultRetryPolicy)(t.retryOptions),{phase:"Retry"}),r.addPolicy((0,D9e.tracingPolicy)(Object.assign(Object.assign({},t.userAgentOptions),t.loggingOptions)),{afterPhase:"Retry"}),dY.isNodeLike&&r.addPolicy((0,B9e.redirectPolicy)(t.redirectOptions),{afterPhase:"Retry"}),r.addPolicy((0,C9e.logPolicy)(t.loggingOptions),{afterPhase:"Sign"}),r}});var EY=g(wC=>{"use strict";Object.defineProperty(wC,"__esModule",{value:!0});wC.getBodyLength=gY;wC.createNodeHttpClient=F9e;var ib=(kr(),Lo(Ao)),tb=ib.__importStar(require("node:http")),rb=ib.__importStar(require("node:https")),uY=ib.__importStar(require("node:zlib")),P9e=require("node:stream"),mY=lC(),_9e=wf(),Tf=bf(),Rf=Wl(),M9e={};function Nf(t){return t&&typeof t.pipe=="function"}function hY(t){return t.readable===!1?Promise.resolve():new Promise(e=>{let r=()=>{e(),t.removeListener("close",r),t.removeListener("end",r),t.removeListener("error",r)};t.on("close",r),t.on("end",r),t.on("error",r)})}function fY(t){return t&&typeof t.byteLength=="number"}var QC=class extends P9e.Transform{_transform(e,r,n){this.push(e),this.loadedBytes+=e.length;try{this.progressCallback({loadedBytes:this.loadedBytes}),n()}catch(i){n(i)}}constructor(e){super(),this.loadedBytes=0,this.progressCallback=e}},nb=class{constructor(){this.cachedHttpsAgents=new WeakMap}async sendRequest(e){var r,n,i;let s=new AbortController,a;if(e.abortSignal){if(e.abortSignal.aborted)throw new mY.AbortError("The operation was aborted.");a=d=>{d.type==="abort"&&s.abort()},e.abortSignal.addEventListener("abort",a)}e.timeout>0&&setTimeout(()=>{s.abort()},e.timeout);let o=e.headers.get("Accept-Encoding"),A=o?.includes("gzip")||o?.includes("deflate"),l=typeof e.body=="function"?e.body():e.body;if(l&&!e.headers.has("Content-Length")){let d=gY(l);d!==null&&e.headers.set("Content-Length",d)}let c;try{if(l&&e.onUploadProgress){let f=e.onUploadProgress,E=new QC(f);E.on("error",y=>{Rf.logger.error("Error in upload progress",y)}),Nf(l)?l.pipe(E):E.end(l),l=E}let d=await this.makeRequest(e,s,l),p=O9e(d),m={status:(r=d.statusCode)!==null&&r!==void 0?r:0,headers:p,request:e};if(e.method==="HEAD")return d.resume(),m;c=A?x9e(d,p):d;let h=e.onDownloadProgress;if(h){let f=new QC(h);f.on("error",E=>{Rf.logger.error("Error in download progress",E)}),c.pipe(f),c=f}return!((n=e.streamResponseStatusCodes)===null||n===void 0)&&n.has(Number.POSITIVE_INFINITY)||!((i=e.streamResponseStatusCodes)===null||i===void 0)&&i.has(m.status)?m.readableStreamBody=c:m.bodyAsText=await L9e(c),m}finally{if(e.abortSignal&&a){let d=Promise.resolve();Nf(l)&&(d=hY(l));let p=Promise.resolve();Nf(c)&&(p=hY(c)),Promise.all([d,p]).then(()=>{var u;a&&((u=e.abortSignal)===null||u===void 0||u.removeEventListener("abort",a))}).catch(u=>{Rf.logger.warning("Error when cleaning up abortListener on httpRequest",u)})}}}makeRequest(e,r,n){var i;let s=new URL(e.url),a=s.protocol!=="https:";if(a&&!e.allowInsecureConnection)throw new Error(`Cannot connect to ${e.url} while allowInsecureConnection is false.`);let A={agent:(i=e.agent)!==null&&i!==void 0?i:this.getOrCreateAgent(e,a),hostname:s.hostname,path:`${s.pathname}${s.search}`,port:s.port,method:e.method,headers:e.headers.toJSON({preserveCase:!0})};return new Promise((l,c)=>{let d=a?tb.request(A,l):rb.request(A,l);d.once("error",p=>{var u;c(new Tf.RestError(p.message,{code:(u=p.code)!==null&&u!==void 0?u:Tf.RestError.REQUEST_SEND_ERROR,request:e}))}),r.signal.addEventListener("abort",()=>{let p=new mY.AbortError("The operation was aborted.");d.destroy(p),c(p)}),n&&Nf(n)?n.pipe(d):n?typeof n=="string"||Buffer.isBuffer(n)?d.end(n):fY(n)?d.end(ArrayBuffer.isView(n)?Buffer.from(n.buffer):Buffer.from(n)):(Rf.logger.error("Unrecognized body type",n),c(new Tf.RestError("Unrecognized body type"))):d.end()})}getOrCreateAgent(e,r){var n;let i=e.disableKeepAlive;if(r)return i?tb.globalAgent:(this.cachedHttpAgent||(this.cachedHttpAgent=new tb.Agent({keepAlive:!0})),this.cachedHttpAgent);{if(i&&!e.tlsSettings)return rb.globalAgent;let s=(n=e.tlsSettings)!==null&&n!==void 0?n:M9e,a=this.cachedHttpsAgents.get(s);return a&&a.options.keepAlive===!i||(Rf.logger.info("No cached TLS Agent exist, creating a new Agent"),a=new rb.Agent(Object.assign({keepAlive:!i},s)),this.cachedHttpsAgents.set(s,a)),a}}};function O9e(t){let e=(0,_9e.createHttpHeaders)();for(let r of Object.keys(t.headers)){let n=t.headers[r];Array.isArray(n)?n.length>0&&e.set(r,n[0]):n&&e.set(r,n)}return e}function x9e(t,e){let r=e.get("Content-Encoding");if(r==="gzip"){let n=uY.createGunzip();return t.pipe(n),n}else if(r==="deflate"){let n=uY.createInflate();return t.pipe(n),n}return t}function L9e(t){return new Promise((e,r)=>{let n=[];t.on("data",i=>{Buffer.isBuffer(i)?n.push(i):n.push(Buffer.from(i))}),t.on("end",()=>{e(Buffer.concat(n).toString("utf8"))}),t.on("error",i=>{i&&i?.name==="AbortError"?r(i):r(new Tf.RestError(`Error reading response as text: ${i.message}`,{code:Tf.RestError.PARSE_ERROR}))})})}function gY(t){return t?Buffer.isBuffer(t)?t.length:Nf(t)?null:fY(t)?t.byteLength:typeof t=="string"?Buffer.from(t).length:null:0}function F9e(){return new nb}});var yY=g(sb=>{"use strict";Object.defineProperty(sb,"__esModule",{value:!0});sb.createDefaultHttpClient=q9e;var U9e=EY();function q9e(){return(0,U9e.createNodeHttpClient)()}});var CY=g(ob=>{"use strict";Object.defineProperty(ob,"__esModule",{value:!0});ob.createPipelineRequest=H9e;var V9e=wf(),G9e=_s(),ab=class{constructor(e){var r,n,i,s,a,o,A;this.url=e.url,this.body=e.body,this.headers=(r=e.headers)!==null&&r!==void 0?r:(0,V9e.createHttpHeaders)(),this.method=(n=e.method)!==null&&n!==void 0?n:"GET",this.timeout=(i=e.timeout)!==null&&i!==void 0?i:0,this.multipartBody=e.multipartBody,this.formData=e.formData,this.disableKeepAlive=(s=e.disableKeepAlive)!==null&&s!==void 0?s:!1,this.proxySettings=e.proxySettings,this.streamResponseStatusCodes=e.streamResponseStatusCodes,this.withCredentials=(a=e.withCredentials)!==null&&a!==void 0?a:!1,this.abortSignal=e.abortSignal,this.tracingOptions=e.tracingOptions,this.onUploadProgress=e.onUploadProgress,this.onDownloadProgress=e.onDownloadProgress,this.requestId=e.requestId||(0,G9e.randomUUID)(),this.allowInsecureConnection=(o=e.allowInsecureConnection)!==null&&o!==void 0?o:!1,this.enableBrowserStreams=(A=e.enableBrowserStreams)!==null&&A!==void 0?A:!1,this.agent=e.agent,this.tlsSettings=e.tlsSettings}};function H9e(t){return new ab(t)}});var IY=g(Df=>{"use strict";Object.defineProperty(Df,"__esModule",{value:!0});Df.exponentialRetryPolicyName=void 0;Df.exponentialRetryPolicy=z9e;var Y9e=mC(),J9e=Au(),j9e=kA();Df.exponentialRetryPolicyName="exponentialRetryPolicy";function z9e(t={}){var e;return(0,J9e.retryPolicy)([(0,Y9e.exponentialRetryStrategy)(Object.assign(Object.assign({},t),{ignoreSystemErrors:!0}))],{maxRetries:(e=t.maxRetries)!==null&&e!==void 0?e:j9e.DEFAULT_RETRY_POLICY_COUNT})}});var BY=g(gu=>{"use strict";Object.defineProperty(gu,"__esModule",{value:!0});gu.systemErrorRetryPolicyName=void 0;gu.systemErrorRetryPolicy=X9e;var W9e=mC(),$9e=Au(),K9e=kA();gu.systemErrorRetryPolicyName="systemErrorRetryPolicy";function X9e(t={}){var e;return{name:gu.systemErrorRetryPolicyName,sendRequest:(0,$9e.retryPolicy)([(0,W9e.exponentialRetryStrategy)(Object.assign(Object.assign({},t),{ignoreHttpStatusCodes:!0}))],{maxRetries:(e=t.maxRetries)!==null&&e!==void 0?e:K9e.DEFAULT_RETRY_POLICY_COUNT}).sendRequest}}});var QY=g(Eu=>{"use strict";Object.defineProperty(Eu,"__esModule",{value:!0});Eu.throttlingRetryPolicyName=void 0;Eu.throttlingRetryPolicy=r3e;var Z9e=uC(),e3e=Au(),t3e=kA();Eu.throttlingRetryPolicyName="throttlingRetryPolicy";function r3e(t={}){var e;return{name:Eu.throttlingRetryPolicyName,sendRequest:(0,e3e.retryPolicy)([(0,Z9e.throttlingRetryStrategy)()],{maxRetries:(e=t.maxRetries)!==null&&e!==void 0?e:t3e.DEFAULT_RETRY_POLICY_COUNT}).sendRequest}}});var Ab=g(yu=>{"use strict";Object.defineProperty(yu,"__esModule",{value:!0});yu.DEFAULT_CYCLER_OPTIONS=void 0;yu.createTokenCycler=s3e;var n3e=dC();yu.DEFAULT_CYCLER_OPTIONS={forcedRefreshWindowInMs:1e3,retryIntervalInMs:3e3,refreshWindowInMs:1e3*60*2};async function i3e(t,e,r){async function n(){if(Date.now()t.getToken(A,l),s.retryIntervalInMs,(c=n?.expiresOnTimestamp)!==null&&c!==void 0?c:Date.now()).then(p=>(r=null,n=p,i=l.tenantId,n)).catch(p=>{throw r=null,n=null,i=void 0,p})),r}return async(A,l)=>{let c=!!l.claims,d=i!==l.tenantId;return c&&(n=null),d||c||a.mustRefresh?o(A,l):(a.shouldRefresh&&o(A,l),n)}}});var RY=g(Kl=>{"use strict";Object.defineProperty(Kl,"__esModule",{value:!0});Kl.bearerTokenAuthenticationPolicyName=void 0;Kl.bearerTokenAuthenticationPolicy=c3e;Kl.parseChallenges=vY;var a3e=Ab(),o3e=Wl(),A3e=bf();Kl.bearerTokenAuthenticationPolicyName="bearerTokenAuthenticationPolicy";async function SC(t,e){try{return[await e(t),void 0]}catch(r){if((0,A3e.isRestError)(r)&&r.response)return[r.response,r];throw r}}async function l3e(t){let{scopes:e,getAccessToken:r,request:n}=t,i={abortSignal:n.abortSignal,tracingOptions:n.tracingOptions,enableCae:!0},s=await r(e,i);s&&t.request.headers.set("Authorization",`Bearer ${s.token}`)}function wY(t){return t.status===401&&t.headers.has("WWW-Authenticate")}async function SY(t,e){var r;let{scopes:n}=t,i=await t.getAccessToken(n,{enableCae:!0,claims:e});return i?(t.request.headers.set("Authorization",`${(r=i.tokenType)!==null&&r!==void 0?r:"Bearer"} ${i.token}`),!0):!1}function c3e(t){var e,r,n;let{credential:i,scopes:s,challengeCallbacks:a}=t,o=t.logger||o3e.logger,A={authorizeRequest:(r=(e=a?.authorizeRequest)===null||e===void 0?void 0:e.bind(a))!==null&&r!==void 0?r:l3e,authorizeRequestOnChallenge:(n=a?.authorizeRequestOnChallenge)===null||n===void 0?void 0:n.bind(a)},l=i?(0,a3e.createTokenCycler)(i):()=>Promise.resolve(null);return{name:Kl.bearerTokenAuthenticationPolicyName,async sendRequest(c,d){if(!c.url.toLowerCase().startsWith("https://"))throw new Error("Bearer token authentication is not permitted for non-TLS protected (non-https) URLs.");await A.authorizeRequest({scopes:Array.isArray(s)?s:[s],request:c,getAccessToken:l,logger:o});let p,u,m;if([p,u]=await SC(c,d),wY(p)){let h=bY(p.headers.get("WWW-Authenticate"));if(h){let f;try{f=atob(h)}catch{return o.warning(`The WWW-Authenticate header contains "claims" that cannot be parsed. Unable to perform the Continuous Access Evaluation authentication flow. Unparsable claims: ${h}`),p}m=await SY({scopes:Array.isArray(s)?s:[s],response:p,request:c,getAccessToken:l,logger:o},f),m&&([p,u]=await SC(c,d))}else if(A.authorizeRequestOnChallenge&&(m=await A.authorizeRequestOnChallenge({scopes:Array.isArray(s)?s:[s],request:c,response:p,getAccessToken:l,logger:o}),m&&([p,u]=await SC(c,d)),wY(p)&&(h=bY(p.headers.get("WWW-Authenticate")),h))){let f;try{f=atob(h)}catch{return o.warning(`The WWW-Authenticate header contains "claims" that cannot be parsed. Unable to perform the Continuous Access Evaluation authentication flow. Unparsable claims: ${h}`),p}m=await SY({scopes:Array.isArray(s)?s:[s],response:p,request:c,getAccessToken:l,logger:o},f),m&&([p,u]=await SC(c,d))}}if(u)throw u;return p}}}function vY(t){let e=/(\w+)\s+((?:\w+=(?:"[^"]*"|[^,]*),?\s*)+)/g,r=/(\w+)="([^"]*)"/g,n=[],i;for(;(i=e.exec(t))!==null;){let s=i[1],a=i[2],o={},A;for(;(A=r.exec(a))!==null;)o[A[1]]=A[2];n.push({scheme:s,params:o})}return n}function bY(t){var e;return t?(e=vY(t).find(n=>n.scheme==="Bearer"&&n.params.claims&&n.params.error==="insufficient_claims"))===null||e===void 0?void 0:e.params.claims:void 0}});var NY=g(Cu=>{"use strict";Object.defineProperty(Cu,"__esModule",{value:!0});Cu.ndJsonPolicyName=void 0;Cu.ndJsonPolicy=d3e;Cu.ndJsonPolicyName="ndJsonPolicy";function d3e(){return{name:Cu.ndJsonPolicyName,async sendRequest(t,e){if(typeof t.body=="string"&&t.body.startsWith("[")){let r=JSON.parse(t.body);Array.isArray(r)&&(t.body=r.map(n=>JSON.stringify(n)+` -`).join(""))}return e(t)}}}});var DY=g(Xl=>{"use strict";Object.defineProperty(Xl,"__esModule",{value:!0});Xl.auxiliaryAuthenticationHeaderPolicyName=void 0;Xl.auxiliaryAuthenticationHeaderPolicy=h3e;var p3e=Ab(),u3e=Wl();Xl.auxiliaryAuthenticationHeaderPolicyName="auxiliaryAuthenticationHeaderPolicy";var TY="x-ms-authorization-auxiliary";async function m3e(t){var e,r;let{scopes:n,getAccessToken:i,request:s}=t,a={abortSignal:s.abortSignal,tracingOptions:s.tracingOptions};return(r=(e=await i(n,a))===null||e===void 0?void 0:e.token)!==null&&r!==void 0?r:""}function h3e(t){let{credentials:e,scopes:r}=t,n=t.logger||u3e.logger,i=new WeakMap;return{name:Xl.auxiliaryAuthenticationHeaderPolicyName,async sendRequest(s,a){if(!s.url.toLowerCase().startsWith("https://"))throw new Error("Bearer token authentication for auxiliary header is not permitted for non-TLS protected (non-https) URLs.");if(!e||e.length===0)return n.info(`${Xl.auxiliaryAuthenticationHeaderPolicyName} header will not be set due to empty credentials.`),a(s);let o=[];for(let l of e){let c=i.get(l);c||(c=(0,p3e.createTokenCycler)(l),i.set(l,c)),o.push(m3e({scopes:Array.isArray(r)?r:[r],request:s,getAccessToken:c,logger:n}))}let A=(await Promise.all(o)).filter(l=>!!l);return A.length===0?(n.warning(`None of the auxiliary tokens are valid. ${TY} header will not be set.`),a(s)):(s.headers.set(TY,A.map(l=>`Bearer ${l}`).join(", ")),a(s))}}}});var Iu=g(F=>{"use strict";Object.defineProperty(F,"__esModule",{value:!0});F.createFileFromStream=F.createFile=F.agentPolicyName=F.agentPolicy=F.auxiliaryAuthenticationHeaderPolicyName=F.auxiliaryAuthenticationHeaderPolicy=F.ndJsonPolicyName=F.ndJsonPolicy=F.bearerTokenAuthenticationPolicyName=F.bearerTokenAuthenticationPolicy=F.formDataPolicyName=F.formDataPolicy=F.tlsPolicyName=F.tlsPolicy=F.userAgentPolicyName=F.userAgentPolicy=F.defaultRetryPolicy=F.tracingPolicyName=F.tracingPolicy=F.retryPolicy=F.throttlingRetryPolicyName=F.throttlingRetryPolicy=F.systemErrorRetryPolicyName=F.systemErrorRetryPolicy=F.redirectPolicyName=F.redirectPolicy=F.getDefaultProxySettings=F.proxyPolicyName=F.proxyPolicy=F.multipartPolicyName=F.multipartPolicy=F.logPolicyName=F.logPolicy=F.setClientRequestIdPolicyName=F.setClientRequestIdPolicy=F.exponentialRetryPolicyName=F.exponentialRetryPolicy=F.decompressResponsePolicyName=F.decompressResponsePolicy=F.isRestError=F.RestError=F.createPipelineRequest=F.createHttpHeaders=F.createDefaultHttpClient=F.createPipelineFromOptions=F.createEmptyPipeline=void 0;var f3e=rS();Object.defineProperty(F,"createEmptyPipeline",{enumerable:!0,get:function(){return f3e.createEmptyPipeline}});var g3e=pY();Object.defineProperty(F,"createPipelineFromOptions",{enumerable:!0,get:function(){return g3e.createPipelineFromOptions}});var E3e=yY();Object.defineProperty(F,"createDefaultHttpClient",{enumerable:!0,get:function(){return E3e.createDefaultHttpClient}});var y3e=wf();Object.defineProperty(F,"createHttpHeaders",{enumerable:!0,get:function(){return y3e.createHttpHeaders}});var C3e=CY();Object.defineProperty(F,"createPipelineRequest",{enumerable:!0,get:function(){return C3e.createPipelineRequest}});var kY=bf();Object.defineProperty(F,"RestError",{enumerable:!0,get:function(){return kY.RestError}});Object.defineProperty(F,"isRestError",{enumerable:!0,get:function(){return kY.isRestError}});var PY=LS();Object.defineProperty(F,"decompressResponsePolicy",{enumerable:!0,get:function(){return PY.decompressResponsePolicy}});Object.defineProperty(F,"decompressResponsePolicyName",{enumerable:!0,get:function(){return PY.decompressResponsePolicyName}});var _Y=IY();Object.defineProperty(F,"exponentialRetryPolicy",{enumerable:!0,get:function(){return _Y.exponentialRetryPolicy}});Object.defineProperty(F,"exponentialRetryPolicyName",{enumerable:!0,get:function(){return _Y.exponentialRetryPolicyName}});var MY=jS();Object.defineProperty(F,"setClientRequestIdPolicy",{enumerable:!0,get:function(){return MY.setClientRequestIdPolicy}});Object.defineProperty(F,"setClientRequestIdPolicyName",{enumerable:!0,get:function(){return MY.setClientRequestIdPolicyName}});var OY=RS();Object.defineProperty(F,"logPolicy",{enumerable:!0,get:function(){return OY.logPolicy}});Object.defineProperty(F,"logPolicyName",{enumerable:!0,get:function(){return OY.logPolicyName}});var xY=xS();Object.defineProperty(F,"multipartPolicy",{enumerable:!0,get:function(){return xY.multipartPolicy}});Object.defineProperty(F,"multipartPolicyName",{enumerable:!0,get:function(){return xY.multipartPolicyName}});var lb=JS();Object.defineProperty(F,"proxyPolicy",{enumerable:!0,get:function(){return lb.proxyPolicy}});Object.defineProperty(F,"proxyPolicyName",{enumerable:!0,get:function(){return lb.proxyPolicyName}});Object.defineProperty(F,"getDefaultProxySettings",{enumerable:!0,get:function(){return lb.getDefaultProxySettings}});var LY=NS();Object.defineProperty(F,"redirectPolicy",{enumerable:!0,get:function(){return LY.redirectPolicy}});Object.defineProperty(F,"redirectPolicyName",{enumerable:!0,get:function(){return LY.redirectPolicyName}});var FY=BY();Object.defineProperty(F,"systemErrorRetryPolicy",{enumerable:!0,get:function(){return FY.systemErrorRetryPolicy}});Object.defineProperty(F,"systemErrorRetryPolicyName",{enumerable:!0,get:function(){return FY.systemErrorRetryPolicyName}});var UY=QY();Object.defineProperty(F,"throttlingRetryPolicy",{enumerable:!0,get:function(){return UY.throttlingRetryPolicy}});Object.defineProperty(F,"throttlingRetryPolicyName",{enumerable:!0,get:function(){return UY.throttlingRetryPolicyName}});var I3e=Au();Object.defineProperty(F,"retryPolicy",{enumerable:!0,get:function(){return I3e.retryPolicy}});var qY=ZS();Object.defineProperty(F,"tracingPolicy",{enumerable:!0,get:function(){return qY.tracingPolicy}});Object.defineProperty(F,"tracingPolicyName",{enumerable:!0,get:function(){return qY.tracingPolicyName}});var B3e=VS();Object.defineProperty(F,"defaultRetryPolicy",{enumerable:!0,get:function(){return B3e.defaultRetryPolicy}});var VY=PS();Object.defineProperty(F,"userAgentPolicy",{enumerable:!0,get:function(){return VY.userAgentPolicy}});Object.defineProperty(F,"userAgentPolicyName",{enumerable:!0,get:function(){return VY.userAgentPolicyName}});var GY=WS();Object.defineProperty(F,"tlsPolicy",{enumerable:!0,get:function(){return GY.tlsPolicy}});Object.defineProperty(F,"tlsPolicyName",{enumerable:!0,get:function(){return GY.tlsPolicyName}});var HY=YS();Object.defineProperty(F,"formDataPolicy",{enumerable:!0,get:function(){return HY.formDataPolicy}});Object.defineProperty(F,"formDataPolicyName",{enumerable:!0,get:function(){return HY.formDataPolicyName}});var YY=RY();Object.defineProperty(F,"bearerTokenAuthenticationPolicy",{enumerable:!0,get:function(){return YY.bearerTokenAuthenticationPolicy}});Object.defineProperty(F,"bearerTokenAuthenticationPolicyName",{enumerable:!0,get:function(){return YY.bearerTokenAuthenticationPolicyName}});var JY=NY();Object.defineProperty(F,"ndJsonPolicy",{enumerable:!0,get:function(){return JY.ndJsonPolicy}});Object.defineProperty(F,"ndJsonPolicyName",{enumerable:!0,get:function(){return JY.ndJsonPolicyName}});var jY=DY();Object.defineProperty(F,"auxiliaryAuthenticationHeaderPolicy",{enumerable:!0,get:function(){return jY.auxiliaryAuthenticationHeaderPolicy}});Object.defineProperty(F,"auxiliaryAuthenticationHeaderPolicyName",{enumerable:!0,get:function(){return jY.auxiliaryAuthenticationHeaderPolicyName}});var zY=zS();Object.defineProperty(F,"agentPolicy",{enumerable:!0,get:function(){return zY.agentPolicy}});Object.defineProperty(F,"agentPolicyName",{enumerable:!0,get:function(){return zY.agentPolicyName}});var WY=_S();Object.defineProperty(F,"createFile",{enumerable:!0,get:function(){return WY.createFile}});Object.defineProperty(F,"createFileFromStream",{enumerable:!0,get:function(){return WY.createFileFromStream}})});var kf=g(Bu=>{"use strict";Object.defineProperty(Bu,"__esModule",{value:!0});Bu.getOperationRequestInfo=Bu.getOperationArgumentValueFromParameter=void 0;var $Y=Cw();function XY(t,e,r){let n=e.parameterPath,i=e.mapper,s;if(typeof n=="string"&&(n=[n]),Array.isArray(n)){if(n.length>0)if(i.isConstant)s=i.defaultValue;else{let a=KY(t,n);!a.propertyFound&&r&&(a=KY(r,n));let o=!1;a.propertyFound||(o=i.required||n[0]==="options"&&n.length===2),s=o?i.defaultValue:a.propertyValue}}else{i.required&&(s={});for(let a in n){let o=i.type.modelProperties[a],A=n[a],l=XY(t,{parameterPath:A,mapper:o},r);l!==void 0&&(s||(s={}),s[a]=l)}}return s}Bu.getOperationArgumentValueFromParameter=XY;function KY(t,e){let r={propertyFound:!1},n=0;for(;n{"use strict";Object.defineProperty(Zl,"__esModule",{value:!0});Zl.deserializationPolicy=Zl.deserializationPolicyName=void 0;var w3e=gf(),bC=Iu(),tJ=Ef(),cb=kf(),S3e=["application/json","text/json"],b3e=["application/xml","application/atom+xml"];Zl.deserializationPolicyName="deserializationPolicy";function v3e(t={}){var e,r,n,i,s,a,o;let A=(r=(e=t.expectedContentTypes)===null||e===void 0?void 0:e.json)!==null&&r!==void 0?r:S3e,l=(i=(n=t.expectedContentTypes)===null||n===void 0?void 0:n.xml)!==null&&i!==void 0?i:b3e,c=t.parseXML,d=t.serializerOptions,p={xml:{rootName:(s=d?.xml.rootName)!==null&&s!==void 0?s:"",includeRoot:(a=d?.xml.includeRoot)!==null&&a!==void 0?a:!1,xmlCharKey:(o=d?.xml.xmlCharKey)!==null&&o!==void 0?o:w3e.XML_CHARKEY}};return{name:Zl.deserializationPolicyName,async sendRequest(u,m){let h=await m(u);return T3e(A,l,h,p,c)}}}Zl.deserializationPolicy=v3e;function R3e(t){let e,r=t.request,n=(0,cb.getOperationRequestInfo)(r),i=n?.operationSpec;return i&&(n?.operationResponseGetter?e=n?.operationResponseGetter(i,t):e=i.responses[t.status]),e}function N3e(t){let e=t.request,r=(0,cb.getOperationRequestInfo)(e),n=r?.shouldDeserialize,i;return n===void 0?i=!0:typeof n=="boolean"?i=n:i=n(t),i}async function T3e(t,e,r,n,i){let s=await P3e(t,e,r,n,i);if(!N3e(s))return s;let a=(0,cb.getOperationRequestInfo)(s.request),o=a?.operationSpec;if(!o||!o.responses)return s;let A=R3e(s),{error:l,shouldReturnResponse:c}=k3e(s,o,A,n);if(l)throw l;if(c)return s;if(A){if(A.bodyMapper){let d=s.parsedBody;o.isXML&&A.bodyMapper.type.name===tJ.MapperTypeNames.Sequence&&(d=typeof d=="object"?d[A.bodyMapper.xmlElementName]:[]);try{s.parsedBody=o.serializer.deserialize(A.bodyMapper,d,"operationRes.parsedBody",n)}catch(p){throw new bC.RestError(`Error ${p} occurred in deserializing the responseBody - ${s.bodyAsText}`,{statusCode:s.status,request:s.request,response:s})}}else o.httpMethod==="HEAD"&&(s.parsedBody=r.status>=200&&r.status<300);A.headersMapper&&(s.parsedHeaders=o.serializer.deserialize(A.headersMapper,s.headers.toJSON(),"operationRes.parsedHeaders",{xml:{},ignoreUnknownProperties:!0}))}return s}function D3e(t){let e=Object.keys(t.responses);return e.length===0||e.length===1&&e[0]==="default"}function k3e(t,e,r,n){var i;let s=200<=t.status&&t.status<300;if(D3e(e)?s:!!r)if(r){if(!r.isError)return{error:null,shouldReturnResponse:!1}}else return{error:null,shouldReturnResponse:!1};let o=r??e.responses.default,A=!((i=t.request.streamResponseStatusCodes)===null||i===void 0)&&i.has(t.status)?`Unexpected status code: ${t.status}`:t.bodyAsText,l=new bC.RestError(A,{statusCode:t.status,request:t.request,response:t});if(!o)throw l;let c=o.bodyMapper,d=o.headersMapper;try{if(t.parsedBody){let p=t.parsedBody,u;if(c){let h=p;if(e.isXML&&c.type.name===tJ.MapperTypeNames.Sequence){h=[];let f=c.xmlElementName;typeof p=="object"&&f&&(h=p[f])}u=e.serializer.deserialize(c,h,"error.response.parsedBody",n)}let m=p.error||u||p;l.code=m.code,m.message&&(l.message=m.message),c&&(l.response.parsedBody=u)}t.headers&&d&&(l.response.parsedHeaders=e.serializer.deserialize(d,t.headers.toJSON(),"operationRes.parsedHeaders"))}catch(p){l.message=`Error "${p.message}" occurred in deserializing the responseBody - "${t.bodyAsText}" for the default response.`}return{error:l,shouldReturnResponse:!1}}async function P3e(t,e,r,n,i){var s;if(!(!((s=r.request.streamResponseStatusCodes)===null||s===void 0)&&s.has(r.status))&&r.bodyAsText){let a=r.bodyAsText,o=r.headers.get("Content-Type")||"",A=o?o.split(";").map(l=>l.toLowerCase()):[];try{if(A.length===0||A.some(l=>t.indexOf(l)!==-1))return r.parsedBody=JSON.parse(a),r;if(A.some(l=>e.indexOf(l)!==-1)){if(!i)throw new Error("Parsing XML not supported.");let l=await i(a,n.xml);return r.parsedBody=l,r}}catch(l){let c=`Error "${l}" occurred while parsing the response body - ${r.bodyAsText}.`,d=l.code||bC.RestError.PARSE_ERROR;throw new bC.RestError(c,{code:d,statusCode:r.status,request:r.request,response:r})}}return r}});var vC=g(Qu=>{"use strict";Object.defineProperty(Qu,"__esModule",{value:!0});Qu.getPathStringFromParameter=Qu.getStreamingResponseStatusCodes=void 0;var _3e=Ef();function M3e(t){let e=new Set;for(let r in t.responses){let n=t.responses[r];n.bodyMapper&&n.bodyMapper.type.name===_3e.MapperTypeNames.Stream&&e.add(Number(r))}return e}Qu.getStreamingResponseStatusCodes=M3e;function O3e(t){let{parameterPath:e,mapper:r}=t,n;return typeof e=="string"?n=e:Array.isArray(e)?n=e.join("."):n=r.serializedName,n}Qu.getPathStringFromParameter=O3e});var mb=g(Ms=>{"use strict";Object.defineProperty(Ms,"__esModule",{value:!0});Ms.serializeRequestBody=Ms.serializeHeaders=Ms.serializationPolicy=Ms.serializationPolicyName=void 0;var ub=gf(),RC=kf(),pb=Ef(),Pf=vC();Ms.serializationPolicyName="serializationPolicy";function x3e(t={}){let e=t.stringifyXML;return{name:Ms.serializationPolicyName,async sendRequest(r,n){let i=(0,RC.getOperationRequestInfo)(r),s=i?.operationSpec,a=i?.operationArguments;return s&&a&&(rJ(r,a,s),nJ(r,a,s,e)),n(r)}}}Ms.serializationPolicy=x3e;function rJ(t,e,r){var n,i;if(r.headerParameters)for(let a of r.headerParameters){let o=(0,RC.getOperationArgumentValueFromParameter)(e,a);if(o!=null||a.mapper.required){o=r.serializer.serialize(a.mapper,o,(0,Pf.getPathStringFromParameter)(a));let A=a.mapper.headerCollectionPrefix;if(A)for(let l of Object.keys(o))t.headers.set(A+l,o[l]);else t.headers.set(a.mapper.serializedName||(0,Pf.getPathStringFromParameter)(a),o)}}let s=(i=(n=e.options)===null||n===void 0?void 0:n.requestOptions)===null||i===void 0?void 0:i.customHeaders;if(s)for(let a of Object.keys(s))t.headers.set(a,s[a])}Ms.serializeHeaders=rJ;function nJ(t,e,r,n=function(){throw new Error("XML serialization unsupported!")}){var i,s,a,o,A;let l=(i=e.options)===null||i===void 0?void 0:i.serializerOptions,c={xml:{rootName:(s=l?.xml.rootName)!==null&&s!==void 0?s:"",includeRoot:(a=l?.xml.includeRoot)!==null&&a!==void 0?a:!1,xmlCharKey:(o=l?.xml.xmlCharKey)!==null&&o!==void 0?o:ub.XML_CHARKEY}},d=c.xml.xmlCharKey;if(r.requestBody&&r.requestBody.mapper){t.body=(0,RC.getOperationArgumentValueFromParameter)(e,r.requestBody);let p=r.requestBody.mapper,{required:u,serializedName:m,xmlName:h,xmlElementName:f,xmlNamespace:E,xmlNamespacePrefix:y,nullable:B}=p,Q=p.type.name;try{if(t.body!==void 0&&t.body!==null||B&&t.body===null||u){let C=(0,Pf.getPathStringFromParameter)(r.requestBody);t.body=r.serializer.serialize(p,t.body,C,c);let w=Q===pb.MapperTypeNames.Stream;if(r.isXML){let b=y?`xmlns:${y}`:"xmlns",v=L3e(E,b,Q,t.body,c);Q===pb.MapperTypeNames.Sequence?t.body=n(F3e(v,f||h||m,b,E),{rootName:h||m,xmlCharKey:d}):w||(t.body=n(v,{rootName:h||m,xmlCharKey:d}))}else{if(Q===pb.MapperTypeNames.String&&(!((A=r.contentType)===null||A===void 0)&&A.match("text/plain")||r.mediaType==="text"))return;w||(t.body=JSON.stringify(t.body))}}}catch(C){throw new Error(`Error "${C.message}" occurred in serializing the payload - ${JSON.stringify(m,void 0," ")}.`)}}else if(r.formDataParameters&&r.formDataParameters.length>0){t.formData={};for(let p of r.formDataParameters){let u=(0,RC.getOperationArgumentValueFromParameter)(e,p);if(u!=null){let m=p.mapper.serializedName||(0,Pf.getPathStringFromParameter)(p);t.formData[m]=r.serializer.serialize(p.mapper,u,(0,Pf.getPathStringFromParameter)(p),c)}}}}Ms.serializeRequestBody=nJ;function L3e(t,e,r,n,i){if(t&&!["Composite","Sequence","Dictionary"].includes(r)){let s={};return s[i.xml.xmlCharKey]=n,s[ub.XML_ATTRKEY]={[e]:t},s}return n}function F3e(t,e,r,n){if(Array.isArray(t)||(t=[t]),!r||!n)return{[e]:t};let i={[e]:t};return i[ub.XML_ATTRKEY]={[r]:n},i}});var hb=g(NC=>{"use strict";Object.defineProperty(NC,"__esModule",{value:!0});NC.createClientPipeline=void 0;var U3e=db(),iJ=Iu(),q3e=mb();function V3e(t={}){let e=(0,iJ.createPipelineFromOptions)(t??{});return t.credentialOptions&&e.addPolicy((0,iJ.bearerTokenAuthenticationPolicy)({credential:t.credentialOptions.credential,scopes:t.credentialOptions.credentialScopes})),e.addPolicy((0,q3e.serializationPolicy)(t.serializationOptions),{phase:"Serialize"}),e.addPolicy((0,U3e.deserializationPolicy)(t.deserializationOptions),{phase:"Deserialize"}),e}NC.createClientPipeline=V3e});var sJ=g(TC=>{"use strict";Object.defineProperty(TC,"__esModule",{value:!0});TC.getCachedDefaultHttpClient=void 0;var G3e=Iu(),fb;function H3e(){return fb||(fb=(0,G3e.createDefaultHttpClient)()),fb}TC.getCachedDefaultHttpClient=H3e});var lJ=g(wu=>{"use strict";Object.defineProperty(wu,"__esModule",{value:!0});wu.appendQueryParams=wu.getRequestUrl=void 0;var oJ=kf(),gb=vC(),Y3e={CSV:",",SSV:" ",Multi:"Multi",TSV:" ",Pipes:"|"};function J3e(t,e,r,n){let i=j3e(e,r,n),s=!1,a=aJ(t,i);if(e.path){let l=aJ(e.path,i);e.path==="/{nextLink}"&&l.startsWith("/")&&(l=l.substring(1)),z3e(l)?(a=l,s=!0):a=W3e(a,l)}let{queryParams:o,sequenceParams:A}=$3e(e,r,n);return a=AJ(a,o,A,s),a}wu.getRequestUrl=J3e;function aJ(t,e){let r=t;for(let[n,i]of e)r=r.split(n).join(i);return r}function j3e(t,e,r){var n;let i=new Map;if(!((n=t.urlParameters)===null||n===void 0)&&n.length)for(let s of t.urlParameters){let a=(0,oJ.getOperationArgumentValueFromParameter)(e,s,r),o=(0,gb.getPathStringFromParameter)(s);a=t.serializer.serialize(s.mapper,a,o),s.skipEncoding||(a=encodeURIComponent(a)),i.set(`{${s.mapper.serializedName||o}}`,a)}return i}function z3e(t){return t.includes("://")}function W3e(t,e){if(!e)return t;let r=new URL(t),n=r.pathname;n.endsWith("/")||(n=`${n}/`),e.startsWith("/")&&(e=e.substring(1));let i=e.indexOf("?");if(i!==-1){let s=e.substring(0,i),a=e.substring(i+1);n=n+s,a&&(r.search=r.search?`${r.search}&${a}`:a)}else n=n+e;return r.pathname=n,r.toString()}function $3e(t,e,r){var n;let i=new Map,s=new Set;if(!((n=t.queryParameters)===null||n===void 0)&&n.length)for(let a of t.queryParameters){a.mapper.type.name==="Sequence"&&a.mapper.serializedName&&s.add(a.mapper.serializedName);let o=(0,oJ.getOperationArgumentValueFromParameter)(e,a,r);if(o!=null||a.mapper.required){o=t.serializer.serialize(a.mapper,o,(0,gb.getPathStringFromParameter)(a));let A=a.collectionFormat?Y3e[a.collectionFormat]:"";if(Array.isArray(o)&&(o=o.map(l=>l??"")),a.collectionFormat==="Multi"&&o.length===0)continue;Array.isArray(o)&&(a.collectionFormat==="SSV"||a.collectionFormat==="TSV")&&(o=o.join(A)),a.skipEncoding||(Array.isArray(o)?o=o.map(l=>encodeURIComponent(l)):o=encodeURIComponent(o)),Array.isArray(o)&&(a.collectionFormat==="CSV"||a.collectionFormat==="Pipes")&&(o=o.join(A)),i.set(a.mapper.serializedName||(0,gb.getPathStringFromParameter)(a),o)}}return{queryParams:i,sequenceParams:s}}function K3e(t){let e=new Map;if(!t||t[0]!=="?")return e;t=t.slice(1);let r=t.split("&");for(let n of r){let[i,s]=n.split("=",2),a=e.get(i);a?Array.isArray(a)?a.push(s):e.set(i,[a,s]):e.set(i,s)}return e}function AJ(t,e,r,n=!1){if(e.size===0)return t;let i=new URL(t),s=K3e(i.search);for(let[o,A]of e){let l=s.get(o);if(Array.isArray(l))if(Array.isArray(A)){l.push(...A);let c=new Set(l);s.set(o,Array.from(c))}else l.push(A);else l?(Array.isArray(A)?A.unshift(l):r.has(o)&&s.set(o,[l,A]),n||s.set(o,A)):s.set(o,A)}let a=[];for(let[o,A]of s)if(typeof A=="string")a.push(`${o}=${A}`);else if(Array.isArray(A))for(let l of A)a.push(`${o}=${l}`);else a.push(`${o}=${A}`);return i.search=a.length?`?${a.join("&")}`:"",i.toString()}wu.appendQueryParams=AJ});var Eb=g(DC=>{"use strict";Object.defineProperty(DC,"__esModule",{value:!0});DC.logger=void 0;var X3e=Cf();DC.logger=(0,X3e.createClientLogger)("core-client")});var dJ=g(kC=>{"use strict";Object.defineProperty(kC,"__esModule",{value:!0});kC.ServiceClient=void 0;var Z3e=Iu(),eQe=hb(),cJ=Kw(),tQe=sJ(),rQe=kf(),nQe=lJ(),iQe=vC(),sQe=Eb(),yb=class{constructor(e={}){var r,n;if(this._requestContentType=e.requestContentType,this._endpoint=(r=e.endpoint)!==null&&r!==void 0?r:e.baseUri,e.baseUri&&sQe.logger.warning("The baseUri option for SDK Clients has been deprecated, please use endpoint instead."),this._allowInsecureConnection=e.allowInsecureConnection,this._httpClient=e.httpClient||(0,tQe.getCachedDefaultHttpClient)(),this.pipeline=e.pipeline||aQe(e),!((n=e.additionalPolicies)===null||n===void 0)&&n.length)for(let{policy:i,position:s}of e.additionalPolicies){let a=s==="perRetry"?"Sign":void 0;this.pipeline.addPolicy(i,{afterPhase:a})}}async sendRequest(e){return this.pipeline.sendRequest(this._httpClient,e)}async sendOperationRequest(e,r){let n=r.baseUrl||this._endpoint;if(!n)throw new Error("If operationSpec.baseUrl is not specified, then the ServiceClient must have a endpoint string property that contains the base URL to use.");let i=(0,nQe.getRequestUrl)(n,r,e,this),s=(0,Z3e.createPipelineRequest)({url:i});s.method=r.httpMethod;let a=(0,rQe.getOperationRequestInfo)(s);a.operationSpec=r,a.operationArguments=e;let o=r.contentType||this._requestContentType;o&&r.requestBody&&s.headers.set("Content-Type",o);let A=e.options;if(A){let l=A.requestOptions;l&&(l.timeout&&(s.timeout=l.timeout),l.onUploadProgress&&(s.onUploadProgress=l.onUploadProgress),l.onDownloadProgress&&(s.onDownloadProgress=l.onDownloadProgress),l.shouldDeserialize!==void 0&&(a.shouldDeserialize=l.shouldDeserialize),l.allowInsecureConnection&&(s.allowInsecureConnection=!0)),A.abortSignal&&(s.abortSignal=A.abortSignal),A.tracingOptions&&(s.tracingOptions=A.tracingOptions)}this._allowInsecureConnection&&(s.allowInsecureConnection=!0),s.streamResponseStatusCodes===void 0&&(s.streamResponseStatusCodes=(0,iQe.getStreamingResponseStatusCodes)(r));try{let l=await this.sendRequest(s),c=(0,cJ.flattenResponse)(l,r.responses[l.status]);return A?.onResponse&&A.onResponse(l,c),c}catch(l){if(typeof l=="object"&&l?.response){let c=l.response,d=(0,cJ.flattenResponse)(c,r.responses[l.statusCode]||r.responses.default);l.details=d,A?.onResponse&&A.onResponse(c,d,l)}throw l}}};kC.ServiceClient=yb;function aQe(t){let e=oQe(t),r=t.credential&&e?{credentialScopes:e,credential:t.credential}:void 0;return(0,eQe.createClientPipeline)(Object.assign(Object.assign({},t),{credentialOptions:r}))}function oQe(t){if(t.credentialScopes)return t.credentialScopes;if(t.endpoint)return`${t.endpoint}/.default`;if(t.baseUri)return`${t.baseUri}/.default`;if(t.credential&&!t.credentialScopes)throw new Error("When using credentials, the ServiceClientOptions must contain either a endpoint or a credentialScopes. Unable to create a bearerTokenAuthenticationPolicy")}});var uJ=g(Su=>{"use strict";Object.defineProperty(Su,"__esModule",{value:!0});Su.authorizeRequestOnClaimChallenge=Su.parseCAEChallenge=void 0;var AQe=Eb(),lQe=$w();function pJ(t){return`, ${t.trim()}`.split(", Bearer ").filter(r=>r).map(r=>`${r.trim()}, `.split('", ').filter(s=>s).map(s=>(([a,o])=>({[a]:o}))(s.trim().split('="'))).reduce((s,a)=>Object.assign(Object.assign({},s),a),{}))}Su.parseCAEChallenge=pJ;async function cQe(t){let{scopes:e,response:r}=t,n=t.logger||AQe.logger,i=r.headers.get("WWW-Authenticate");if(!i)return n.info("The WWW-Authenticate header was missing. Failed to perform the Continuous Access Evaluation authentication flow."),!1;let a=(pJ(i)||[]).find(A=>A.claims);if(!a)return n.info('The WWW-Authenticate header was missing the necessary "claims" to perform the Continuous Access Evaluation authentication flow.'),!1;let o=await t.getAccessToken(a.scope?[a.scope]:e,{claims:(0,lQe.decodeStringToString)(a.claims)});return o?(t.request.headers.set("Authorization",`Bearer ${o.token}`),!0):!1}Su.authorizeRequestOnClaimChallenge=cQe});var hJ=g(PC=>{"use strict";Object.defineProperty(PC,"__esModule",{value:!0});PC.authorizeRequestOnTenantChallenge=void 0;var mJ={DefaultScope:"/.default",HeaderConstants:{AUTHORIZATION:"authorization"}};function dQe(t){return/^[0-9a-fA-F]{8}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{12}$/.test(t)}var pQe=async t=>{let e=gQe(t.request),r=hQe(t.response);if(r){let n=fQe(r),i=mQe(t,n),s=uQe(n);if(!s)return!1;let a=await t.getAccessToken(i,Object.assign(Object.assign({},e),{tenantId:s}));return a?(t.request.headers.set(mJ.HeaderConstants.AUTHORIZATION,`Bearer ${a.token}`),!0):!1}return!1};PC.authorizeRequestOnTenantChallenge=pQe;function uQe(t){let n=new URL(t.authorization_uri).pathname.split("/")[1];if(n&&dQe(n))return n}function mQe(t,e){if(!e.resource_id)return t.scopes;let r=new URL(e.resource_id);r.pathname=mJ.DefaultScope;let n=r.toString();return n==="https://disk.azure.com/.default"&&(n="https://disk.azure.com//.default"),[n]}function hQe(t){let e=t.headers.get("WWW-Authenticate");if(t.status===401&&e)return e}function fQe(t){return`${t.slice(7).trim()} `.split(" ").filter(i=>i).map(i=>(([s,a])=>({[s]:a}))(i.trim().split("="))).reduce((i,s)=>Object.assign(Object.assign({},i),s),{})}function gQe(t){return{abortSignal:t.abortSignal,requestOptions:{timeout:t.timeout},tracingOptions:t.tracingOptions}}});var CJ=g(gt=>{"use strict";Object.defineProperty(gt,"__esModule",{value:!0});gt.authorizeRequestOnTenantChallenge=gt.authorizeRequestOnClaimChallenge=gt.serializationPolicyName=gt.serializationPolicy=gt.deserializationPolicyName=gt.deserializationPolicy=gt.XML_CHARKEY=gt.XML_ATTRKEY=gt.createClientPipeline=gt.ServiceClient=gt.MapperTypeNames=gt.createSerializer=void 0;var fJ=Ef();Object.defineProperty(gt,"createSerializer",{enumerable:!0,get:function(){return fJ.createSerializer}});Object.defineProperty(gt,"MapperTypeNames",{enumerable:!0,get:function(){return fJ.MapperTypeNames}});var EQe=dJ();Object.defineProperty(gt,"ServiceClient",{enumerable:!0,get:function(){return EQe.ServiceClient}});var yQe=hb();Object.defineProperty(gt,"createClientPipeline",{enumerable:!0,get:function(){return yQe.createClientPipeline}});var gJ=gf();Object.defineProperty(gt,"XML_ATTRKEY",{enumerable:!0,get:function(){return gJ.XML_ATTRKEY}});Object.defineProperty(gt,"XML_CHARKEY",{enumerable:!0,get:function(){return gJ.XML_CHARKEY}});var EJ=db();Object.defineProperty(gt,"deserializationPolicy",{enumerable:!0,get:function(){return EJ.deserializationPolicy}});Object.defineProperty(gt,"deserializationPolicyName",{enumerable:!0,get:function(){return EJ.deserializationPolicyName}});var yJ=mb();Object.defineProperty(gt,"serializationPolicy",{enumerable:!0,get:function(){return yJ.serializationPolicy}});Object.defineProperty(gt,"serializationPolicyName",{enumerable:!0,get:function(){return yJ.serializationPolicyName}});var CQe=uJ();Object.defineProperty(gt,"authorizeRequestOnClaimChallenge",{enumerable:!0,get:function(){return CQe.authorizeRequestOnClaimChallenge}});var IQe=hJ();Object.defineProperty(gt,"authorizeRequestOnTenantChallenge",{enumerable:!0,get:function(){return IQe.authorizeRequestOnTenantChallenge}})});var MC=g(_C=>{"use strict";Object.defineProperty(_C,"__esModule",{value:!0});_C.logger=void 0;var BQe=Cf();_C.logger=(0,BQe.createClientLogger)("core-lro")});var OC=g(bu=>{"use strict";Object.defineProperty(bu,"__esModule",{value:!0});bu.terminalStates=bu.POLL_INTERVAL_IN_MS=void 0;bu.POLL_INTERVAL_IN_MS=2e3;bu.terminalStates=["succeeded","canceled","failed"]});var xC=g(PA=>{"use strict";Object.defineProperty(PA,"__esModule",{value:!0});PA.pollOperation=PA.initOperation=PA.deserializeState=void 0;var Cb=MC(),BJ=OC();function QQe(t){try{return JSON.parse(t).state}catch{throw new Error(`Unable to deserialize input state: ${t}`)}}PA.deserializeState=QQe;function IJ(t){let{state:e,stateProxy:r,isOperationError:n}=t;return i=>{throw n(i)&&(r.setError(e,i),r.setFailed(e)),i}}function wQe(t,e){let r=t;return r.slice(-1)!=="."&&(r=r+"."),r+" "+e}function SQe(t){let e=t.message,r=t.code,n=t;for(;n.innererror;)n=n.innererror,r=n.code,e=wQe(e,n.message);return{code:r,message:e}}function QJ(t){let{state:e,stateProxy:r,status:n,isDone:i,processResult:s,getError:a,response:o,setErrorAsResult:A}=t;switch(n){case"succeeded":{r.setSucceeded(e);break}case"failed":{let l=a?.(o),c="";if(l){let{code:p,message:u}=SQe(l);c=`. ${p}. ${u}`}let d=`The long-running operation has failed${c}`;r.setError(e,new Error(d)),r.setFailed(e),Cb.logger.warning(d);break}case"canceled":{r.setCanceled(e);break}}(i?.(o,e)||i===void 0&&["succeeded","canceled"].concat(A?[]:["failed"]).includes(n))&&r.setResult(e,bQe({response:o,state:e,processResult:s}))}function bQe(t){let{processResult:e,response:r,state:n}=t;return e?e(r,n):r}async function vQe(t){let{init:e,stateProxy:r,processResult:n,getOperationStatus:i,withOperationLocation:s,setErrorAsResult:a}=t,{operationLocation:o,resourceLocation:A,metadata:l,response:c}=await e();o&&s?.(o,!1);let d={metadata:l,operationLocation:o,resourceLocation:A};Cb.logger.verbose("LRO: Operation description:",d);let p=r.initState(d),u=i({response:c,state:p,operationLocation:o});return QJ({state:p,status:u,stateProxy:r,response:c,setErrorAsResult:a,processResult:n}),p}PA.initOperation=vQe;async function RQe(t){let{poll:e,state:r,stateProxy:n,operationLocation:i,getOperationStatus:s,getResourceLocation:a,isOperationError:o,options:A}=t,l=await e(i,A).catch(IJ({state:r,stateProxy:n,isOperationError:o})),c=s(l,r);if(Cb.logger.verbose(`LRO: Status: - Polling from: ${r.config.operationLocation} - Operation status: ${c} - Polling status: ${BJ.terminalStates.includes(c)?"Stopped":"Running"}`),c==="succeeded"){let d=a(l,r);if(d!==void 0)return{response:await e(d).catch(IJ({state:r,stateProxy:n,isOperationError:o})),status:c}}return{response:l,status:c}}async function NQe(t){let{poll:e,state:r,stateProxy:n,options:i,getOperationStatus:s,getResourceLocation:a,getOperationLocation:o,isOperationError:A,withOperationLocation:l,getPollingInterval:c,processResult:d,getError:p,updateState:u,setDelay:m,isDone:h,setErrorAsResult:f}=t,{operationLocation:E}=r.config;if(E!==void 0){let{response:y,status:B}=await RQe({poll:e,getOperationStatus:s,state:r,stateProxy:n,operationLocation:E,getResourceLocation:a,isOperationError:A,options:i});if(QJ({status:B,response:y,state:r,stateProxy:n,isDone:h,processResult:d,getError:p,setErrorAsResult:f}),!BJ.terminalStates.includes(B)){let Q=c?.(y);Q&&m(Q);let C=o?.(y,r);if(C!==void 0){let w=E!==C;r.config.operationLocation=C,l?.(C,w)}else l?.(E,!1)}u?.(r,y)}}PA.pollOperation=NQe});var wb=g(Kt=>{"use strict";Object.defineProperty(Kt,"__esModule",{value:!0});Kt.pollHttpOperation=Kt.isOperationError=Kt.getResourceLocation=Kt.getOperationStatus=Kt.getOperationLocation=Kt.initHttpOperation=Kt.getStatusFromInitialResponse=Kt.getErrorFromResponse=Kt.parseRetryAfter=Kt.inferLroMode=void 0;var wJ=xC(),Ib=MC();function SJ(t){let{azureAsyncOperation:e,operationLocation:r}=t;return r??e}function bJ(t){return t.headers.location}function vJ(t){return t.headers["operation-location"]}function RJ(t){return t.headers["azure-asyncoperation"]}function TQe(t){var e;let{location:r,requestMethod:n,requestPath:i,resourceLocationConfig:s}=t;switch(n){case"PUT":return i;case"DELETE":return;case"PATCH":return(e=a())!==null&&e!==void 0?e:i;default:return a()}function a(){switch(s){case"azure-async-operation":return;case"original-uri":return i;case"location":default:return r}}}function NJ(t){let{rawResponse:e,requestMethod:r,requestPath:n,resourceLocationConfig:i}=t,s=vJ(e),a=RJ(e),o=SJ({operationLocation:s,azureAsyncOperation:a}),A=bJ(e),l=r?.toLocaleUpperCase();return o!==void 0?{mode:"OperationLocation",operationLocation:o,resourceLocation:TQe({requestMethod:l,location:A,requestPath:n,resourceLocationConfig:i})}:A!==void 0?{mode:"ResourceLocation",operationLocation:A}:l==="PUT"&&n?{mode:"Body",operationLocation:n}:void 0}Kt.inferLroMode=NJ;function TJ(t){let{status:e,statusCode:r}=t;if(typeof e!="string"&&e!==void 0)throw new Error(`Polling was unsuccessful. Expected status to have a string value or no value but it has instead: ${e}. This doesn't necessarily indicate the operation has failed. Check your Azure subscription or resource status for more information.`);switch(e?.toLocaleLowerCase()){case void 0:return Bb(r);case"succeeded":return"succeeded";case"failed":return"failed";case"running":case"accepted":case"started":case"canceling":case"cancelling":return"running";case"canceled":case"cancelled":return"canceled";default:return Ib.logger.verbose(`LRO: unrecognized operation status: ${e}`),e}}function DQe(t){var e;let{status:r}=(e=t.body)!==null&&e!==void 0?e:{};return TJ({status:r,statusCode:t.statusCode})}function kQe(t){var e,r;let{properties:n,provisioningState:i}=(e=t.body)!==null&&e!==void 0?e:{},s=(r=n?.provisioningState)!==null&&r!==void 0?r:i;return TJ({status:s,statusCode:t.statusCode})}function Bb(t){return t===202?"running":t<300?"succeeded":"failed"}function DJ({rawResponse:t}){let e=t.headers["retry-after"];if(e!==void 0){let r=parseInt(e);return isNaN(r)?PQe(new Date(e)):r*1e3}}Kt.parseRetryAfter=DJ;function kJ(t){let e=MJ(t,"error");if(!e){Ib.logger.warning("The long-running operation failed but there is no error property in the response's body");return}if(!e.code||!e.message){Ib.logger.warning("The long-running operation failed but the error property in the response's body doesn't contain code or message");return}return e}Kt.getErrorFromResponse=kJ;function PQe(t){let e=Math.floor(new Date().getTime()),r=t.getTime();if(e{let a=await i.sendInitialRequest(),o=NJ({rawResponse:a.rawResponse,requestPath:i.requestPath,requestMethod:i.requestMethod,resourceLocationConfig:r});return Object.assign({response:a,operationLocation:o?.operationLocation,resourceLocation:o?.resourceLocation},o?.mode?{metadata:{mode:o.mode}}:{})},stateProxy:e,processResult:n?({flatResponse:a},o)=>n(a,o):({flatResponse:a})=>a,getOperationStatus:PJ,setErrorAsResult:s})}Kt.initHttpOperation=_Qe;function _J({rawResponse:t},e){var r;switch((r=e.config.metadata)===null||r===void 0?void 0:r.mode){case"OperationLocation":return SJ({operationLocation:vJ(t),azureAsyncOperation:RJ(t)});case"ResourceLocation":return bJ(t);case"Body":default:return}}Kt.getOperationLocation=_J;function Qb({rawResponse:t},e){var r;let n=(r=e.config.metadata)===null||r===void 0?void 0:r.mode;switch(n){case"OperationLocation":return DQe(t);case"ResourceLocation":return Bb(t.statusCode);case"Body":return kQe(t);default:throw new Error(`Internal error: Unexpected operation mode: ${n}`)}}Kt.getOperationStatus=Qb;function MJ({flatResponse:t,rawResponse:e},r){var n,i;return(n=t?.[r])!==null&&n!==void 0?n:(i=e.body)===null||i===void 0?void 0:i[r]}function OJ(t,e){let r=MJ(t,"resourceLocation");return r&&typeof r=="string"&&(e.config.resourceLocation=r),e.config.resourceLocation}Kt.getResourceLocation=OJ;function xJ(t){return t.name==="RestError"}Kt.isOperationError=xJ;async function MQe(t){let{lro:e,stateProxy:r,options:n,processResult:i,updateState:s,setDelay:a,state:o,setErrorAsResult:A}=t;return(0,wJ.pollOperation)({state:o,stateProxy:r,setDelay:a,processResult:i?({flatResponse:l},c)=>i(l,c):({flatResponse:l})=>l,getError:kJ,updateState:s,getPollingInterval:DJ,getOperationLocation:_J,getOperationStatus:Qb,isOperationError:xJ,getResourceLocation:OJ,options:n,poll:async(l,c)=>e.sendPollRequest(l,c),setErrorAsResult:A})}Kt.pollHttpOperation=MQe});var LJ=g(LC=>{"use strict";Object.defineProperty(LC,"__esModule",{value:!0});LC.buildCreatePoller=void 0;var Sb=xC(),OQe=OC(),xQe=_s(),LQe=()=>({initState:t=>({status:"running",config:t}),setCanceled:t=>t.status="canceled",setError:(t,e)=>t.error=e,setResult:(t,e)=>t.result=e,setRunning:t=>t.status="running",setSucceeded:t=>t.status="succeeded",setFailed:t=>t.status="failed",getError:t=>t.error,getResult:t=>t.result,isCanceled:t=>t.status==="canceled",isFailed:t=>t.status==="failed",isRunning:t=>t.status==="running",isSucceeded:t=>t.status==="succeeded"});function FQe(t){let{getOperationLocation:e,getStatusFromInitialResponse:r,getStatusFromPollResponse:n,isOperationError:i,getResourceLocation:s,getPollingInterval:a,getError:o,resolveOnUnsuccessful:A}=t;return async({init:l,poll:c},d)=>{let{processResult:p,updateState:u,withOperationLocation:m,intervalInMs:h=OQe.POLL_INTERVAL_IN_MS,restoreFrom:f}=d||{},E=LQe(),y=m?(()=>{let V=!1;return(O,ye)=>{ye?m(O):V||m(O),V=!0}})():void 0,B=f?(0,Sb.deserializeState)(f):await(0,Sb.initOperation)({init:l,stateProxy:E,processResult:p,getOperationStatus:r,withOperationLocation:y,setErrorAsResult:!A}),Q,C=new AbortController,w=new Map,b=async()=>w.forEach(V=>V(B)),v="Operation was canceled",q=h,L={getOperationState:()=>B,getResult:()=>B.result,isDone:()=>["succeeded","failed","canceled"].includes(B.status),isStopped:()=>Q===void 0,stopPolling:()=>{C.abort()},toString:()=>JSON.stringify({state:B}),onProgress:V=>{let O=Symbol();return w.set(O,V),()=>w.delete(O)},pollUntilDone:V=>Q??(Q=(async()=>{let{abortSignal:O}=V||{};function ye(){C.abort()}let Ze=C.signal;O?.aborted?C.abort():Ze.aborted||O?.addEventListener("abort",ye,{once:!0});try{if(!L.isDone())for(await L.poll({abortSignal:Ze});!L.isDone();)await(0,xQe.delay)(q,{abortSignal:Ze}),await L.poll({abortSignal:Ze})}finally{O?.removeEventListener("abort",ye)}if(A)return L.getResult();switch(B.status){case"succeeded":return L.getResult();case"canceled":throw new Error(v);case"failed":throw B.error;case"notStarted":case"running":throw new Error("Polling completed without succeeding or failing")}})().finally(()=>{Q=void 0})),async poll(V){if(A){if(L.isDone())return}else switch(B.status){case"succeeded":return;case"canceled":throw new Error(v);case"failed":throw B.error}if(await(0,Sb.pollOperation)({poll:c,state:B,stateProxy:E,getOperationLocation:e,isOperationError:i,withOperationLocation:y,getPollingInterval:a,getOperationStatus:n,getResourceLocation:s,processResult:p,getError:o,updateState:u,options:V,setDelay:O=>{q=O},setErrorAsResult:!A}),await b(),!A)switch(B.status){case"canceled":throw new Error(v);case"failed":throw B.error}}};return L}}LC.buildCreatePoller=FQe});var FJ=g(FC=>{"use strict";Object.defineProperty(FC,"__esModule",{value:!0});FC.createHttpPoller=void 0;var _A=wb(),UQe=LJ();async function qQe(t,e){let{resourceLocationConfig:r,intervalInMs:n,processResult:i,restoreFrom:s,updateState:a,withOperationLocation:o,resolveOnUnsuccessful:A=!1}=e||{};return(0,UQe.buildCreatePoller)({getStatusFromInitialResponse:_A.getStatusFromInitialResponse,getStatusFromPollResponse:_A.getOperationStatus,isOperationError:_A.isOperationError,getOperationLocation:_A.getOperationLocation,getResourceLocation:_A.getResourceLocation,getPollingInterval:_A.parseRetryAfter,getError:_A.getErrorFromResponse,resolveOnUnsuccessful:A})({init:async()=>{let l=await t.sendInitialRequest(),c=(0,_A.inferLroMode)({rawResponse:l.rawResponse,requestPath:t.requestPath,requestMethod:t.requestMethod,resourceLocationConfig:r});return Object.assign({response:l,operationLocation:c?.operationLocation,resourceLocation:c?.resourceLocation},c?.mode?{metadata:{mode:c.mode}}:{})},poll:t.sendPollRequest},{intervalInMs:n,withOperationLocation:o,restoreFrom:s,updateState:a,processResult:i?({flatResponse:l},c)=>i(l,c):({flatResponse:l})=>l})}FC.createHttpPoller=qQe});var qJ=g(UC=>{"use strict";Object.defineProperty(UC,"__esModule",{value:!0});UC.GenericPollOperation=void 0;var UJ=wb(),VQe=MC(),GQe=()=>({initState:t=>({config:t,isStarted:!0}),setCanceled:t=>t.isCancelled=!0,setError:(t,e)=>t.error=e,setResult:(t,e)=>t.result=e,setRunning:t=>t.isStarted=!0,setSucceeded:t=>t.isCompleted=!0,setFailed:()=>{},getError:t=>t.error,getResult:t=>t.result,isCanceled:t=>!!t.isCancelled,isFailed:t=>!!t.error,isRunning:t=>!!t.isStarted,isSucceeded:t=>!!(t.isCompleted&&!t.isCancelled&&!t.error)}),bb=class{constructor(e,r,n,i,s,a,o){this.state=e,this.lro=r,this.setErrorAsResult=n,this.lroResourceLocationConfig=i,this.processResult=s,this.updateState=a,this.isDone=o}setPollerConfig(e){this.pollerConfig=e}async update(e){var r;let n=GQe();this.state.isStarted||(this.state=Object.assign(Object.assign({},this.state),await(0,UJ.initHttpOperation)({lro:this.lro,stateProxy:n,resourceLocationConfig:this.lroResourceLocationConfig,processResult:this.processResult,setErrorAsResult:this.setErrorAsResult})));let i=this.updateState,s=this.isDone;return!this.state.isCompleted&&this.state.error===void 0&&await(0,UJ.pollHttpOperation)({lro:this.lro,state:this.state,stateProxy:n,processResult:this.processResult,updateState:i?(a,{rawResponse:o})=>i(a,o):void 0,isDone:s?({flatResponse:a},o)=>s(a,o):void 0,options:e,setDelay:a=>{this.pollerConfig.intervalInMs=a},setErrorAsResult:this.setErrorAsResult}),(r=e?.fireProgress)===null||r===void 0||r.call(e,this.state),this}async cancel(){return VQe.logger.error("`cancelOperation` is deprecated because it wasn't implemented"),this}toString(){return JSON.stringify({state:this.state})}};UC.GenericPollOperation=bb});var Rb=g(MA=>{"use strict";Object.defineProperty(MA,"__esModule",{value:!0});MA.Poller=MA.PollerCancelledError=MA.PollerStoppedError=void 0;var qC=class t extends Error{constructor(e){super(e),this.name="PollerStoppedError",Object.setPrototypeOf(this,t.prototype)}};MA.PollerStoppedError=qC;var VC=class t extends Error{constructor(e){super(e),this.name="PollerCancelledError",Object.setPrototypeOf(this,t.prototype)}};MA.PollerCancelledError=VC;var vb=class{constructor(e){this.resolveOnUnsuccessful=!1,this.stopped=!0,this.pollProgressCallbacks=[],this.operation=e,this.promise=new Promise((r,n)=>{this.resolve=r,this.reject=n}),this.promise.catch(()=>{})}async startPolling(e={}){for(this.stopped&&(this.stopped=!1);!this.isStopped()&&!this.isDone();)await this.poll(e),await this.delay()}async pollOnce(e={}){this.isDone()||(this.operation=await this.operation.update({abortSignal:e.abortSignal,fireProgress:this.fireProgress.bind(this)})),this.processUpdatedState()}fireProgress(e){for(let r of this.pollProgressCallbacks)r(e)}async cancelOnce(e={}){this.operation=await this.operation.cancel(e)}poll(e={}){if(!this.pollOncePromise){this.pollOncePromise=this.pollOnce(e);let r=()=>{this.pollOncePromise=void 0};this.pollOncePromise.then(r,r).catch(this.reject)}return this.pollOncePromise}processUpdatedState(){if(this.operation.state.error&&(this.stopped=!0,!this.resolveOnUnsuccessful))throw this.reject(this.operation.state.error),this.operation.state.error;if(this.operation.state.isCancelled&&(this.stopped=!0,!this.resolveOnUnsuccessful)){let e=new VC("Operation was canceled");throw this.reject(e),e}this.isDone()&&this.resolve&&this.resolve(this.getResult())}async pollUntilDone(e={}){return this.stopped&&this.startPolling(e).catch(this.reject),this.processUpdatedState(),this.promise}onProgress(e){return this.pollProgressCallbacks.push(e),()=>{this.pollProgressCallbacks=this.pollProgressCallbacks.filter(r=>r!==e)}}isDone(){let e=this.operation.state;return!!(e.isCompleted||e.isCancelled||e.error)}stopPolling(){this.stopped||(this.stopped=!0,this.reject&&this.reject(new qC("This poller is already stopped")))}isStopped(){return this.stopped}cancelOperation(e={}){if(!this.cancelPromise)this.cancelPromise=this.cancelOnce(e);else if(e.abortSignal)throw new Error("A cancel request is currently pending");return this.cancelPromise}getOperationState(){return this.operation.state}getResult(){return this.operation.state.result}toString(){return this.operation.toString()}};MA.Poller=vb});var VJ=g(GC=>{"use strict";Object.defineProperty(GC,"__esModule",{value:!0});GC.LroEngine=void 0;var HQe=qJ(),YQe=OC(),JQe=Rb(),jQe=xC(),Nb=class extends JQe.Poller{constructor(e,r){let{intervalInMs:n=YQe.POLL_INTERVAL_IN_MS,resumeFrom:i,resolveOnUnsuccessful:s=!1,isDone:a,lroResourceLocationConfig:o,processResult:A,updateState:l}=r||{},c=i?(0,jQe.deserializeState)(i):{},d=new HQe.GenericPollOperation(c,e,!s,o,A,l,a);super(d),this.resolveOnUnsuccessful=s,this.config={intervalInMs:n},d.setPollerConfig(this.config)}delay(){return new Promise(e=>setTimeout(()=>e(),this.config.intervalInMs))}};GC.LroEngine=Nb});var GJ=g(HC=>{"use strict";Object.defineProperty(HC,"__esModule",{value:!0});HC.LroEngine=void 0;var zQe=VJ();Object.defineProperty(HC,"LroEngine",{enumerable:!0,get:function(){return zQe.LroEngine}})});var YJ=g(HJ=>{"use strict";Object.defineProperty(HJ,"__esModule",{value:!0})});var JJ=g(ec=>{"use strict";Object.defineProperty(ec,"__esModule",{value:!0});ec.createHttpPoller=void 0;var Tb=(kr(),Lo(Ao)),WQe=FJ();Object.defineProperty(ec,"createHttpPoller",{enumerable:!0,get:function(){return WQe.createHttpPoller}});Tb.__exportStar(GJ(),ec);Tb.__exportStar(Rb(),ec);Tb.__exportStar(YJ(),ec)});var zJ=g(ze=>{"use strict";Object.defineProperty(ze,"__esModule",{value:!0});var j=(kr(),Lo(Ao)),$Qe=CJ(),KQe=Iu(),mo=JJ();function jJ(t){var e=Object.create(null);return t&&Object.keys(t).forEach(function(r){if(r!=="default"){var n=Object.getOwnPropertyDescriptor(t,r);Object.defineProperty(e,r,n.get?n:{enumerable:!0,get:function(){return t[r]}})}}),e.default=t,Object.freeze(e)}var kb=jJ($Qe),Db=jJ(KQe),Pb=new WeakMap;function XQe(t){var e;if(!(typeof t!="object"||t===null))return(e=Pb.get(t))===null||e===void 0?void 0:e.continuationToken}function vu(t,e){var r;if(typeof t!="object"||t===null||!e)return;let n=(r=Pb.get(t))!==null&&r!==void 0?r:{};n.continuationToken=e,Pb.set(t,n)}ze.KnownDeploymentStacksDeleteDetachEnum=void 0;(function(t){t.Delete="delete",t.Detach="detach"})(ze.KnownDeploymentStacksDeleteDetachEnum||(ze.KnownDeploymentStacksDeleteDetachEnum={}));ze.KnownDenySettingsMode=void 0;(function(t){t.DenyDelete="denyDelete",t.DenyWriteAndDelete="denyWriteAndDelete",t.None="none"})(ze.KnownDenySettingsMode||(ze.KnownDenySettingsMode={}));ze.KnownDeploymentStackProvisioningState=void 0;(function(t){t.Creating="creating",t.Validating="validating",t.Waiting="waiting",t.Deploying="deploying",t.Canceling="canceling",t.UpdatingDenyAssignments="updatingDenyAssignments",t.DeletingResources="deletingResources",t.Succeeded="succeeded",t.Failed="failed",t.Canceled="canceled",t.Deleting="deleting"})(ze.KnownDeploymentStackProvisioningState||(ze.KnownDeploymentStackProvisioningState={}));ze.KnownResourceStatusMode=void 0;(function(t){t.Managed="managed",t.RemoveDenyFailed="removeDenyFailed",t.DeleteFailed="deleteFailed"})(ze.KnownResourceStatusMode||(ze.KnownResourceStatusMode={}));ze.KnownDenyStatusMode=void 0;(function(t){t.DenyDelete="denyDelete",t.NotSupported="notSupported",t.Inapplicable="inapplicable",t.DenyWriteAndDelete="denyWriteAndDelete",t.RemovedBySystem="removedBySystem",t.None="none"})(ze.KnownDenyStatusMode||(ze.KnownDenyStatusMode={}));ze.KnownCreatedByType=void 0;(function(t){t.User="User",t.Application="Application",t.ManagedIdentity="ManagedIdentity",t.Key="Key"})(ze.KnownCreatedByType||(ze.KnownCreatedByType={}));ze.KnownUnmanageActionResourceMode=void 0;(function(t){t.Delete="delete",t.Detach="detach"})(ze.KnownUnmanageActionResourceMode||(ze.KnownUnmanageActionResourceMode={}));ze.KnownUnmanageActionResourceGroupMode=void 0;(function(t){t.Delete="delete",t.Detach="detach"})(ze.KnownUnmanageActionResourceGroupMode||(ze.KnownUnmanageActionResourceGroupMode={}));ze.KnownUnmanageActionManagementGroupMode=void 0;(function(t){t.Delete="delete",t.Detach="detach"})(ze.KnownUnmanageActionManagementGroupMode||(ze.KnownUnmanageActionManagementGroupMode={}));var tc={type:{name:"Composite",className:"DeploymentStackListResult",modelProperties:{value:{serializedName:"value",type:{name:"Sequence",element:{type:{name:"Composite",className:"DeploymentStack"}}}},nextLink:{serializedName:"nextLink",readOnly:!0,type:{name:"String"}}}}},ZQe={type:{name:"Composite",className:"DeploymentStacksTemplateLink",modelProperties:{uri:{serializedName:"uri",type:{name:"String"}},id:{serializedName:"id",type:{name:"String"}},relativePath:{serializedName:"relativePath",type:{name:"String"}},queryString:{serializedName:"queryString",type:{name:"String"}},contentVersion:{serializedName:"contentVersion",type:{name:"String"}}}}},e8e={type:{name:"Composite",className:"DeploymentParameter",modelProperties:{value:{serializedName:"value",type:{name:"any"}},type:{serializedName:"type",type:{name:"String"}},reference:{serializedName:"reference",type:{name:"Composite",className:"KeyVaultParameterReference"}}}}},t8e={type:{name:"Composite",className:"KeyVaultParameterReference",modelProperties:{keyVault:{serializedName:"keyVault",type:{name:"Composite",className:"KeyVaultReference"}},secretName:{serializedName:"secretName",required:!0,type:{name:"String"}},secretVersion:{serializedName:"secretVersion",type:{name:"String"}}}}},r8e={type:{name:"Composite",className:"KeyVaultReference",modelProperties:{id:{serializedName:"id",required:!0,type:{name:"String"}}}}},n8e={type:{name:"Composite",className:"DeploymentStacksParametersLink",modelProperties:{uri:{serializedName:"uri",required:!0,type:{name:"String"}},contentVersion:{serializedName:"contentVersion",type:{name:"String"}}}}},i8e={type:{name:"Composite",className:"ActionOnUnmanage",modelProperties:{resources:{serializedName:"resources",required:!0,type:{name:"String"}},resourceGroups:{serializedName:"resourceGroups",type:{name:"String"}},managementGroups:{serializedName:"managementGroups",type:{name:"String"}}}}},s8e={type:{name:"Composite",className:"DeploymentStacksDebugSetting",modelProperties:{detailLevel:{serializedName:"detailLevel",type:{name:"String"}}}}},a8e={type:{name:"Composite",className:"DenySettings",modelProperties:{mode:{serializedName:"mode",required:!0,type:{name:"String"}},excludedPrincipals:{serializedName:"excludedPrincipals",type:{name:"Sequence",element:{type:{name:"String"}}}},excludedActions:{serializedName:"excludedActions",type:{name:"Sequence",element:{type:{name:"String"}}}},applyToChildScopes:{serializedName:"applyToChildScopes",type:{name:"Boolean"}}}}},Ob={type:{name:"Composite",className:"ResourceReference",modelProperties:{id:{serializedName:"id",readOnly:!0,type:{name:"String"}}}}},bt={type:{name:"Composite",className:"DeploymentStacksError",modelProperties:{error:{serializedName:"error",type:{name:"Composite",className:"ErrorDetail"}}}}},o8e={type:{name:"Composite",className:"ErrorDetail",modelProperties:{code:{serializedName:"code",readOnly:!0,type:{name:"String"}},message:{serializedName:"message",readOnly:!0,type:{name:"String"}},target:{serializedName:"target",readOnly:!0,type:{name:"String"}},details:{serializedName:"details",readOnly:!0,type:{name:"Sequence",element:{type:{name:"Composite",className:"ErrorDetail"}}}},additionalInfo:{serializedName:"additionalInfo",readOnly:!0,type:{name:"Sequence",element:{type:{name:"Composite",className:"ErrorAdditionalInfo"}}}}}}},A8e={type:{name:"Composite",className:"ErrorAdditionalInfo",modelProperties:{type:{serializedName:"type",readOnly:!0,type:{name:"String"}},info:{serializedName:"info",readOnly:!0,type:{name:"Dictionary",value:{type:{name:"any"}}}}}}},xb={type:{name:"Composite",className:"AzureResourceBase",modelProperties:{id:{serializedName:"id",readOnly:!0,type:{name:"String"}},name:{serializedName:"name",readOnly:!0,type:{name:"String"}},type:{serializedName:"type",readOnly:!0,type:{name:"String"}},systemData:{serializedName:"systemData",type:{name:"Composite",className:"SystemData"}}}}},l8e={type:{name:"Composite",className:"SystemData",modelProperties:{createdBy:{serializedName:"createdBy",type:{name:"String"}},createdByType:{serializedName:"createdByType",type:{name:"String"}},createdAt:{serializedName:"createdAt",type:{name:"DateTime"}},lastModifiedBy:{serializedName:"lastModifiedBy",type:{name:"String"}},lastModifiedByType:{serializedName:"lastModifiedByType",type:{name:"String"}},lastModifiedAt:{serializedName:"lastModifiedAt",type:{name:"DateTime"}}}}},YC={type:{name:"Composite",className:"DeploymentStackTemplateDefinition",modelProperties:{template:{serializedName:"template",type:{name:"Dictionary",value:{type:{name:"any"}}}},templateLink:{serializedName:"templateLink",type:{name:"Composite",className:"DeploymentStacksTemplateLink"}}}}},c8e={type:{name:"Composite",className:"DeploymentStackValidateProperties",modelProperties:{actionOnUnmanage:{serializedName:"actionOnUnmanage",type:{name:"Composite",className:"ActionOnUnmanage"}},correlationId:{serializedName:"correlationId",type:{name:"String"}},denySettings:{serializedName:"denySettings",type:{name:"Composite",className:"DenySettings"}},deploymentScope:{serializedName:"deploymentScope",type:{name:"String"}},description:{serializedName:"description",type:{name:"String"}},parameters:{serializedName:"parameters",type:{name:"Dictionary",value:{type:{name:"Composite",className:"DeploymentParameter"}}}},templateLink:{serializedName:"templateLink",type:{name:"Composite",className:"DeploymentStacksTemplateLink"}},validatedResources:{serializedName:"validatedResources",type:{name:"Sequence",element:{type:{name:"Composite",className:"ResourceReference"}}}}}}},d8e={type:{name:"Composite",className:"ResourceReferenceExtended",modelProperties:Object.assign(Object.assign({},Ob.type.modelProperties),bt.type.modelProperties)}},p8e={type:{name:"Composite",className:"ManagedResourceReference",modelProperties:Object.assign(Object.assign({},Ob.type.modelProperties),{status:{serializedName:"status",type:{name:"String"}},denyStatus:{defaultValue:"none",serializedName:"denyStatus",type:{name:"String"}}})}},u8e={type:{name:"Composite",className:"DeploymentStackProperties",modelProperties:Object.assign(Object.assign({},bt.type.modelProperties),{template:{serializedName:"template",type:{name:"Dictionary",value:{type:{name:"any"}}}},templateLink:{serializedName:"templateLink",type:{name:"Composite",className:"DeploymentStacksTemplateLink"}},parameters:{serializedName:"parameters",type:{name:"Dictionary",value:{type:{name:"Composite",className:"DeploymentParameter"}}}},parametersLink:{serializedName:"parametersLink",type:{name:"Composite",className:"DeploymentStacksParametersLink"}},actionOnUnmanage:{serializedName:"actionOnUnmanage",type:{name:"Composite",className:"ActionOnUnmanage"}},debugSetting:{serializedName:"debugSetting",type:{name:"Composite",className:"DeploymentStacksDebugSetting"}},bypassStackOutOfSyncError:{serializedName:"bypassStackOutOfSyncError",type:{name:"Boolean"}},deploymentScope:{serializedName:"deploymentScope",type:{name:"String"}},description:{constraints:{MaxLength:4096},serializedName:"description",type:{name:"String"}},denySettings:{serializedName:"denySettings",type:{name:"Composite",className:"DenySettings"}},provisioningState:{serializedName:"provisioningState",readOnly:!0,type:{name:"String"}},correlationId:{serializedName:"correlationId",readOnly:!0,type:{name:"String"}},detachedResources:{serializedName:"detachedResources",readOnly:!0,type:{name:"Sequence",element:{type:{name:"Composite",className:"ResourceReference"}}}},deletedResources:{serializedName:"deletedResources",readOnly:!0,type:{name:"Sequence",element:{type:{name:"Composite",className:"ResourceReference"}}}},failedResources:{serializedName:"failedResources",readOnly:!0,type:{name:"Sequence",element:{type:{name:"Composite",className:"ResourceReferenceExtended"}}}},resources:{serializedName:"resources",readOnly:!0,type:{name:"Sequence",element:{type:{name:"Composite",className:"ManagedResourceReference"}}}},deploymentId:{serializedName:"deploymentId",readOnly:!0,type:{name:"String"}},outputs:{serializedName:"outputs",readOnly:!0,type:{name:"Dictionary",value:{type:{name:"any"}}}},duration:{serializedName:"duration",readOnly:!0,type:{name:"String"}}})}},vi={type:{name:"Composite",className:"DeploymentStackValidateResult",modelProperties:Object.assign(Object.assign(Object.assign({},xb.type.modelProperties),bt.type.modelProperties),{properties:{serializedName:"properties",type:{name:"Composite",className:"DeploymentStackValidateProperties"}}})}},Xr={type:{name:"Composite",className:"DeploymentStack",modelProperties:Object.assign(Object.assign({},xb.type.modelProperties),{location:{serializedName:"location",type:{name:"String"}},tags:{serializedName:"tags",type:{name:"Dictionary",value:{type:{name:"String"}}}},properties:{serializedName:"properties",type:{name:"Composite",className:"DeploymentStackProperties"}}})}},m8e={type:{name:"Composite",className:"DeploymentStacksDeleteAtResourceGroupHeaders",modelProperties:{location:{serializedName:"location",type:{name:"String"}}}}},h8e={type:{name:"Composite",className:"DeploymentStacksDeleteAtSubscriptionHeaders",modelProperties:{location:{serializedName:"location",type:{name:"String"}}}}},f8e={type:{name:"Composite",className:"DeploymentStacksDeleteAtManagementGroupHeaders",modelProperties:{location:{serializedName:"location",type:{name:"String"}}}}},g8e={type:{name:"Composite",className:"DeploymentStacksValidateStackAtResourceGroupHeaders",modelProperties:{location:{serializedName:"location",type:{name:"String"}},retryAfter:{serializedName:"retry-after",type:{name:"String"}}}}},E8e={type:{name:"Composite",className:"DeploymentStacksValidateStackAtSubscriptionHeaders",modelProperties:{location:{serializedName:"location",type:{name:"String"}},retryAfter:{serializedName:"retry-after",type:{name:"String"}}}}},y8e={type:{name:"Composite",className:"DeploymentStacksValidateStackAtManagementGroupHeaders",modelProperties:{location:{serializedName:"location",type:{name:"String"}},retryAfter:{serializedName:"retry-after",type:{name:"String"}}}}},C8e=Object.freeze({__proto__:null,ActionOnUnmanage:i8e,AzureResourceBase:xb,DenySettings:a8e,DeploymentParameter:e8e,DeploymentStack:Xr,DeploymentStackListResult:tc,DeploymentStackProperties:u8e,DeploymentStackTemplateDefinition:YC,DeploymentStackValidateProperties:c8e,DeploymentStackValidateResult:vi,DeploymentStacksDebugSetting:s8e,DeploymentStacksDeleteAtManagementGroupHeaders:f8e,DeploymentStacksDeleteAtResourceGroupHeaders:m8e,DeploymentStacksDeleteAtSubscriptionHeaders:h8e,DeploymentStacksError:bt,DeploymentStacksParametersLink:n8e,DeploymentStacksTemplateLink:ZQe,DeploymentStacksValidateStackAtManagementGroupHeaders:y8e,DeploymentStacksValidateStackAtResourceGroupHeaders:g8e,DeploymentStacksValidateStackAtSubscriptionHeaders:E8e,ErrorAdditionalInfo:A8e,ErrorDetail:o8e,KeyVaultParameterReference:t8e,KeyVaultReference:r8e,ManagedResourceReference:p8e,ResourceReference:Ob,ResourceReferenceExtended:d8e,SystemData:l8e}),sr={parameterPath:"accept",mapper:{defaultValue:"application/json",isConstant:!0,serializedName:"Accept",type:{name:"String"}}},ar={parameterPath:"$host",mapper:{serializedName:"$host",required:!0,type:{name:"String"}},skipEncoding:!0},ti={parameterPath:"subscriptionId",mapper:{serializedName:"subscriptionId",required:!0,type:{name:"Uuid"}}},rc={parameterPath:"resourceGroupName",mapper:{constraints:{MaxLength:90,MinLength:1},serializedName:"resourceGroupName",required:!0,type:{name:"String"}}},xr={parameterPath:"apiVersion",mapper:{defaultValue:"2024-03-01",isConstant:!0,serializedName:"api-version",type:{name:"String"}}},nc={parameterPath:"managementGroupId",mapper:{constraints:{Pattern:new RegExp("^[-\\w\\._\\(\\)]+$"),MaxLength:90,MinLength:1},serializedName:"managementGroupId",required:!0,type:{name:"String"}}},Ru={parameterPath:["options","contentType"],mapper:{defaultValue:"application/json",isConstant:!0,serializedName:"Content-Type",type:{name:"String"}}},Nu={parameterPath:"deploymentStack",mapper:Xr},vn={parameterPath:"deploymentStackName",mapper:{constraints:{Pattern:new RegExp("^[-\\w\\._\\(\\)]+$"),MaxLength:90,MinLength:1},serializedName:"deploymentStackName",required:!0,type:{name:"String"}}},Lb={parameterPath:["options","unmanageActionResources"],mapper:{serializedName:"unmanageAction.Resources",type:{name:"String"}}},Fb={parameterPath:["options","unmanageActionResourceGroups"],mapper:{serializedName:"unmanageAction.ResourceGroups",type:{name:"String"}}},Ub={parameterPath:["options","unmanageActionManagementGroups"],mapper:{serializedName:"unmanageAction.ManagementGroups",type:{name:"String"}}},qb={parameterPath:["options","bypassStackOutOfSyncError"],mapper:{serializedName:"bypassStackOutOfSyncError",type:{name:"Boolean"}}},Vb={parameterPath:"nextLink",mapper:{serializedName:"nextLink",required:!0,type:{name:"String"}},skipEncoding:!0};function ho(t){let{args:e,spec:r,sendOperationFn:n}=t;return{requestMethod:r.httpMethod,requestPath:r.path,sendInitialRequest:()=>n(e,r),sendPollRequest:(i,s)=>{let a=j.__rest(r,["requestBody"]);return n(e,Object.assign(Object.assign({},a),{httpMethod:"GET",path:i,abortSignal:s?.abortSignal}))}}}var _b=class{constructor(e){this.client=e}listAtResourceGroup(e,r){let n=this.listAtResourceGroupPagingAll(e,r);return{next(){return n.next()},[Symbol.asyncIterator](){return this},byPage:i=>{if(i?.maxPageSize)throw new Error("maxPageSize is not supported by this operation.");return this.listAtResourceGroupPagingPage(e,r,i)}}}listAtResourceGroupPagingPage(e,r,n){return j.__asyncGenerator(this,arguments,function*(){let s,a=n?.continuationToken;if(!a){s=yield j.__await(this._listAtResourceGroup(e,r));let o=s.value||[];a=s.nextLink,vu(o,a),yield yield j.__await(o)}for(;a;){s=yield j.__await(this._listAtResourceGroupNext(e,a,r)),a=s.nextLink;let o=s.value||[];vu(o,a),yield yield j.__await(o)}})}listAtResourceGroupPagingAll(e,r){return j.__asyncGenerator(this,arguments,function*(){var i,s,a,o;try{for(var A=!0,l=j.__asyncValues(this.listAtResourceGroupPagingPage(e,r)),c;c=yield j.__await(l.next()),i=c.done,!i;A=!0){o=c.value,A=!1;let d=o;yield j.__await(yield*j.__asyncDelegator(j.__asyncValues(d)))}}catch(d){s={error:d}}finally{try{!A&&!i&&(a=l.return)&&(yield j.__await(a.call(l)))}finally{if(s)throw s.error}}})}listAtSubscription(e){let r=this.listAtSubscriptionPagingAll(e);return{next(){return r.next()},[Symbol.asyncIterator](){return this},byPage:n=>{if(n?.maxPageSize)throw new Error("maxPageSize is not supported by this operation.");return this.listAtSubscriptionPagingPage(e,n)}}}listAtSubscriptionPagingPage(e,r){return j.__asyncGenerator(this,arguments,function*(){let i,s=r?.continuationToken;if(!s){i=yield j.__await(this._listAtSubscription(e));let a=i.value||[];s=i.nextLink,vu(a,s),yield yield j.__await(a)}for(;s;){i=yield j.__await(this._listAtSubscriptionNext(s,e)),s=i.nextLink;let a=i.value||[];vu(a,s),yield yield j.__await(a)}})}listAtSubscriptionPagingAll(e){return j.__asyncGenerator(this,arguments,function*(){var n,i,s,a;try{for(var o=!0,A=j.__asyncValues(this.listAtSubscriptionPagingPage(e)),l;l=yield j.__await(A.next()),n=l.done,!n;o=!0){a=l.value,o=!1;let c=a;yield j.__await(yield*j.__asyncDelegator(j.__asyncValues(c)))}}catch(c){i={error:c}}finally{try{!o&&!n&&(s=A.return)&&(yield j.__await(s.call(A)))}finally{if(i)throw i.error}}})}listAtManagementGroup(e,r){let n=this.listAtManagementGroupPagingAll(e,r);return{next(){return n.next()},[Symbol.asyncIterator](){return this},byPage:i=>{if(i?.maxPageSize)throw new Error("maxPageSize is not supported by this operation.");return this.listAtManagementGroupPagingPage(e,r,i)}}}listAtManagementGroupPagingPage(e,r,n){return j.__asyncGenerator(this,arguments,function*(){let s,a=n?.continuationToken;if(!a){s=yield j.__await(this._listAtManagementGroup(e,r));let o=s.value||[];a=s.nextLink,vu(o,a),yield yield j.__await(o)}for(;a;){s=yield j.__await(this._listAtManagementGroupNext(e,a,r)),a=s.nextLink;let o=s.value||[];vu(o,a),yield yield j.__await(o)}})}listAtManagementGroupPagingAll(e,r){return j.__asyncGenerator(this,arguments,function*(){var i,s,a,o;try{for(var A=!0,l=j.__asyncValues(this.listAtManagementGroupPagingPage(e,r)),c;c=yield j.__await(l.next()),i=c.done,!i;A=!0){o=c.value,A=!1;let d=o;yield j.__await(yield*j.__asyncDelegator(j.__asyncValues(d)))}}catch(d){s={error:d}}finally{try{!A&&!i&&(a=l.return)&&(yield j.__await(a.call(l)))}finally{if(s)throw s.error}}})}_listAtResourceGroup(e,r){return this.client.sendOperationRequest({resourceGroupName:e,options:r},I8e)}_listAtSubscription(e){return this.client.sendOperationRequest({options:e},B8e)}_listAtManagementGroup(e,r){return this.client.sendOperationRequest({managementGroupId:e,options:r},Q8e)}beginCreateOrUpdateAtResourceGroup(e,r,n,i){return j.__awaiter(this,void 0,void 0,function*(){let s=(l,c)=>j.__awaiter(this,void 0,void 0,function*(){return this.client.sendOperationRequest(l,c)}),o=ho({sendOperationFn:(l,c)=>j.__awaiter(this,void 0,void 0,function*(){var d;let p,u=(d=l.options)===null||d===void 0?void 0:d.onResponse,m=(E,y)=>{p=E,u?.(E,y)},h=Object.assign(Object.assign({},l),{options:Object.assign(Object.assign({},l.options),{onResponse:m})});return{flatResponse:yield s(h,c),rawResponse:{statusCode:p.status,body:p.parsedBody,headers:p.headers.toJSON()}}}),args:{resourceGroupName:e,deploymentStackName:r,deploymentStack:n,options:i},spec:w8e}),A=yield mo.createHttpPoller(o,{restoreFrom:i?.resumeFrom,intervalInMs:i?.updateIntervalInMs,resourceLocationConfig:"azure-async-operation"});return yield A.poll(),A})}beginCreateOrUpdateAtResourceGroupAndWait(e,r,n,i){return j.__awaiter(this,void 0,void 0,function*(){return(yield this.beginCreateOrUpdateAtResourceGroup(e,r,n,i)).pollUntilDone()})}getAtResourceGroup(e,r,n){return this.client.sendOperationRequest({resourceGroupName:e,deploymentStackName:r,options:n},S8e)}beginDeleteAtResourceGroup(e,r,n){return j.__awaiter(this,void 0,void 0,function*(){let i=(A,l)=>j.__awaiter(this,void 0,void 0,function*(){return this.client.sendOperationRequest(A,l)}),a=ho({sendOperationFn:(A,l)=>j.__awaiter(this,void 0,void 0,function*(){var c;let d,p=(c=A.options)===null||c===void 0?void 0:c.onResponse,u=(f,E)=>{d=f,p?.(f,E)},m=Object.assign(Object.assign({},A),{options:Object.assign(Object.assign({},A.options),{onResponse:u})});return{flatResponse:yield i(m,l),rawResponse:{statusCode:d.status,body:d.parsedBody,headers:d.headers.toJSON()}}}),args:{resourceGroupName:e,deploymentStackName:r,options:n},spec:b8e}),o=yield mo.createHttpPoller(a,{restoreFrom:n?.resumeFrom,intervalInMs:n?.updateIntervalInMs,resourceLocationConfig:"location"});return yield o.poll(),o})}beginDeleteAtResourceGroupAndWait(e,r,n){return j.__awaiter(this,void 0,void 0,function*(){return(yield this.beginDeleteAtResourceGroup(e,r,n)).pollUntilDone()})}beginCreateOrUpdateAtSubscription(e,r,n){return j.__awaiter(this,void 0,void 0,function*(){let i=(A,l)=>j.__awaiter(this,void 0,void 0,function*(){return this.client.sendOperationRequest(A,l)}),a=ho({sendOperationFn:(A,l)=>j.__awaiter(this,void 0,void 0,function*(){var c;let d,p=(c=A.options)===null||c===void 0?void 0:c.onResponse,u=(f,E)=>{d=f,p?.(f,E)},m=Object.assign(Object.assign({},A),{options:Object.assign(Object.assign({},A.options),{onResponse:u})});return{flatResponse:yield i(m,l),rawResponse:{statusCode:d.status,body:d.parsedBody,headers:d.headers.toJSON()}}}),args:{deploymentStackName:e,deploymentStack:r,options:n},spec:v8e}),o=yield mo.createHttpPoller(a,{restoreFrom:n?.resumeFrom,intervalInMs:n?.updateIntervalInMs,resourceLocationConfig:"azure-async-operation"});return yield o.poll(),o})}beginCreateOrUpdateAtSubscriptionAndWait(e,r,n){return j.__awaiter(this,void 0,void 0,function*(){return(yield this.beginCreateOrUpdateAtSubscription(e,r,n)).pollUntilDone()})}getAtSubscription(e,r){return this.client.sendOperationRequest({deploymentStackName:e,options:r},R8e)}beginDeleteAtSubscription(e,r){return j.__awaiter(this,void 0,void 0,function*(){let n=(o,A)=>j.__awaiter(this,void 0,void 0,function*(){return this.client.sendOperationRequest(o,A)}),s=ho({sendOperationFn:(o,A)=>j.__awaiter(this,void 0,void 0,function*(){var l;let c,d=(l=o.options)===null||l===void 0?void 0:l.onResponse,p=(h,f)=>{c=h,d?.(h,f)},u=Object.assign(Object.assign({},o),{options:Object.assign(Object.assign({},o.options),{onResponse:p})});return{flatResponse:yield n(u,A),rawResponse:{statusCode:c.status,body:c.parsedBody,headers:c.headers.toJSON()}}}),args:{deploymentStackName:e,options:r},spec:N8e}),a=yield mo.createHttpPoller(s,{restoreFrom:r?.resumeFrom,intervalInMs:r?.updateIntervalInMs,resourceLocationConfig:"location"});return yield a.poll(),a})}beginDeleteAtSubscriptionAndWait(e,r){return j.__awaiter(this,void 0,void 0,function*(){return(yield this.beginDeleteAtSubscription(e,r)).pollUntilDone()})}beginCreateOrUpdateAtManagementGroup(e,r,n,i){return j.__awaiter(this,void 0,void 0,function*(){let s=(l,c)=>j.__awaiter(this,void 0,void 0,function*(){return this.client.sendOperationRequest(l,c)}),o=ho({sendOperationFn:(l,c)=>j.__awaiter(this,void 0,void 0,function*(){var d;let p,u=(d=l.options)===null||d===void 0?void 0:d.onResponse,m=(E,y)=>{p=E,u?.(E,y)},h=Object.assign(Object.assign({},l),{options:Object.assign(Object.assign({},l.options),{onResponse:m})});return{flatResponse:yield s(h,c),rawResponse:{statusCode:p.status,body:p.parsedBody,headers:p.headers.toJSON()}}}),args:{managementGroupId:e,deploymentStackName:r,deploymentStack:n,options:i},spec:T8e}),A=yield mo.createHttpPoller(o,{restoreFrom:i?.resumeFrom,intervalInMs:i?.updateIntervalInMs,resourceLocationConfig:"azure-async-operation"});return yield A.poll(),A})}beginCreateOrUpdateAtManagementGroupAndWait(e,r,n,i){return j.__awaiter(this,void 0,void 0,function*(){return(yield this.beginCreateOrUpdateAtManagementGroup(e,r,n,i)).pollUntilDone()})}getAtManagementGroup(e,r,n){return this.client.sendOperationRequest({managementGroupId:e,deploymentStackName:r,options:n},D8e)}beginDeleteAtManagementGroup(e,r,n){return j.__awaiter(this,void 0,void 0,function*(){let i=(A,l)=>j.__awaiter(this,void 0,void 0,function*(){return this.client.sendOperationRequest(A,l)}),a=ho({sendOperationFn:(A,l)=>j.__awaiter(this,void 0,void 0,function*(){var c;let d,p=(c=A.options)===null||c===void 0?void 0:c.onResponse,u=(f,E)=>{d=f,p?.(f,E)},m=Object.assign(Object.assign({},A),{options:Object.assign(Object.assign({},A.options),{onResponse:u})});return{flatResponse:yield i(m,l),rawResponse:{statusCode:d.status,body:d.parsedBody,headers:d.headers.toJSON()}}}),args:{managementGroupId:e,deploymentStackName:r,options:n},spec:k8e}),o=yield mo.createHttpPoller(a,{restoreFrom:n?.resumeFrom,intervalInMs:n?.updateIntervalInMs,resourceLocationConfig:"location"});return yield o.poll(),o})}beginDeleteAtManagementGroupAndWait(e,r,n){return j.__awaiter(this,void 0,void 0,function*(){return(yield this.beginDeleteAtManagementGroup(e,r,n)).pollUntilDone()})}exportTemplateAtResourceGroup(e,r,n){return this.client.sendOperationRequest({resourceGroupName:e,deploymentStackName:r,options:n},P8e)}exportTemplateAtSubscription(e,r){return this.client.sendOperationRequest({deploymentStackName:e,options:r},_8e)}exportTemplateAtManagementGroup(e,r,n){return this.client.sendOperationRequest({managementGroupId:e,deploymentStackName:r,options:n},M8e)}beginValidateStackAtResourceGroup(e,r,n,i){return j.__awaiter(this,void 0,void 0,function*(){let s=(l,c)=>j.__awaiter(this,void 0,void 0,function*(){return this.client.sendOperationRequest(l,c)}),o=ho({sendOperationFn:(l,c)=>j.__awaiter(this,void 0,void 0,function*(){var d;let p,u=(d=l.options)===null||d===void 0?void 0:d.onResponse,m=(E,y)=>{p=E,u?.(E,y)},h=Object.assign(Object.assign({},l),{options:Object.assign(Object.assign({},l.options),{onResponse:m})});return{flatResponse:yield s(h,c),rawResponse:{statusCode:p.status,body:p.parsedBody,headers:p.headers.toJSON()}}}),args:{resourceGroupName:e,deploymentStackName:r,deploymentStack:n,options:i},spec:O8e}),A=yield mo.createHttpPoller(o,{restoreFrom:i?.resumeFrom,intervalInMs:i?.updateIntervalInMs,resourceLocationConfig:"location"});return yield A.poll(),A})}beginValidateStackAtResourceGroupAndWait(e,r,n,i){return j.__awaiter(this,void 0,void 0,function*(){return(yield this.beginValidateStackAtResourceGroup(e,r,n,i)).pollUntilDone()})}beginValidateStackAtSubscription(e,r,n){return j.__awaiter(this,void 0,void 0,function*(){let i=(A,l)=>j.__awaiter(this,void 0,void 0,function*(){return this.client.sendOperationRequest(A,l)}),a=ho({sendOperationFn:(A,l)=>j.__awaiter(this,void 0,void 0,function*(){var c;let d,p=(c=A.options)===null||c===void 0?void 0:c.onResponse,u=(f,E)=>{d=f,p?.(f,E)},m=Object.assign(Object.assign({},A),{options:Object.assign(Object.assign({},A.options),{onResponse:u})});return{flatResponse:yield i(m,l),rawResponse:{statusCode:d.status,body:d.parsedBody,headers:d.headers.toJSON()}}}),args:{deploymentStackName:e,deploymentStack:r,options:n},spec:x8e}),o=yield mo.createHttpPoller(a,{restoreFrom:n?.resumeFrom,intervalInMs:n?.updateIntervalInMs,resourceLocationConfig:"location"});return yield o.poll(),o})}beginValidateStackAtSubscriptionAndWait(e,r,n){return j.__awaiter(this,void 0,void 0,function*(){return(yield this.beginValidateStackAtSubscription(e,r,n)).pollUntilDone()})}beginValidateStackAtManagementGroup(e,r,n,i){return j.__awaiter(this,void 0,void 0,function*(){let s=(l,c)=>j.__awaiter(this,void 0,void 0,function*(){return this.client.sendOperationRequest(l,c)}),o=ho({sendOperationFn:(l,c)=>j.__awaiter(this,void 0,void 0,function*(){var d;let p,u=(d=l.options)===null||d===void 0?void 0:d.onResponse,m=(E,y)=>{p=E,u?.(E,y)},h=Object.assign(Object.assign({},l),{options:Object.assign(Object.assign({},l.options),{onResponse:m})});return{flatResponse:yield s(h,c),rawResponse:{statusCode:p.status,body:p.parsedBody,headers:p.headers.toJSON()}}}),args:{managementGroupId:e,deploymentStackName:r,deploymentStack:n,options:i},spec:L8e}),A=yield mo.createHttpPoller(o,{restoreFrom:i?.resumeFrom,intervalInMs:i?.updateIntervalInMs,resourceLocationConfig:"location"});return yield A.poll(),A})}beginValidateStackAtManagementGroupAndWait(e,r,n,i){return j.__awaiter(this,void 0,void 0,function*(){return(yield this.beginValidateStackAtManagementGroup(e,r,n,i)).pollUntilDone()})}_listAtResourceGroupNext(e,r,n){return this.client.sendOperationRequest({resourceGroupName:e,nextLink:r,options:n},F8e)}_listAtSubscriptionNext(e,r){return this.client.sendOperationRequest({nextLink:e,options:r},U8e)}_listAtManagementGroupNext(e,r,n){return this.client.sendOperationRequest({managementGroupId:e,nextLink:r,options:n},q8e)}},or=kb.createSerializer(C8e,!1),I8e={path:"/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Resources/deploymentStacks",httpMethod:"GET",responses:{200:{bodyMapper:tc},default:{bodyMapper:bt}},queryParameters:[xr],urlParameters:[ar,ti,rc],headerParameters:[sr],serializer:or},B8e={path:"/subscriptions/{subscriptionId}/providers/Microsoft.Resources/deploymentStacks",httpMethod:"GET",responses:{200:{bodyMapper:tc},default:{bodyMapper:bt}},queryParameters:[xr],urlParameters:[ar,ti],headerParameters:[sr],serializer:or},Q8e={path:"/providers/Microsoft.Management/managementGroups/{managementGroupId}/providers/Microsoft.Resources/deploymentStacks",httpMethod:"GET",responses:{200:{bodyMapper:tc},default:{bodyMapper:bt}},queryParameters:[xr],urlParameters:[ar,nc],headerParameters:[sr],serializer:or},w8e={path:"/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Resources/deploymentStacks/{deploymentStackName}",httpMethod:"PUT",responses:{200:{bodyMapper:Xr},201:{bodyMapper:Xr},202:{bodyMapper:Xr},204:{bodyMapper:Xr},default:{bodyMapper:bt}},requestBody:Nu,queryParameters:[xr],urlParameters:[ar,ti,rc,vn],headerParameters:[sr,Ru],mediaType:"json",serializer:or},S8e={path:"/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Resources/deploymentStacks/{deploymentStackName}",httpMethod:"GET",responses:{200:{bodyMapper:Xr},default:{bodyMapper:bt}},queryParameters:[xr],urlParameters:[ar,ti,rc,vn],headerParameters:[sr],serializer:or},b8e={path:"/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Resources/deploymentStacks/{deploymentStackName}",httpMethod:"DELETE",responses:{200:{},201:{},202:{},204:{},default:{bodyMapper:bt}},queryParameters:[xr,Lb,Fb,Ub,qb],urlParameters:[ar,ti,rc,vn],headerParameters:[sr],serializer:or},v8e={path:"/subscriptions/{subscriptionId}/providers/Microsoft.Resources/deploymentStacks/{deploymentStackName}",httpMethod:"PUT",responses:{200:{bodyMapper:Xr},201:{bodyMapper:Xr},202:{bodyMapper:Xr},204:{bodyMapper:Xr},default:{bodyMapper:bt}},requestBody:Nu,queryParameters:[xr],urlParameters:[ar,ti,vn],headerParameters:[sr,Ru],mediaType:"json",serializer:or},R8e={path:"/subscriptions/{subscriptionId}/providers/Microsoft.Resources/deploymentStacks/{deploymentStackName}",httpMethod:"GET",responses:{200:{bodyMapper:Xr},default:{bodyMapper:bt}},queryParameters:[xr],urlParameters:[ar,ti,vn],headerParameters:[sr],serializer:or},N8e={path:"/subscriptions/{subscriptionId}/providers/Microsoft.Resources/deploymentStacks/{deploymentStackName}",httpMethod:"DELETE",responses:{200:{},201:{},202:{},204:{},default:{bodyMapper:bt}},queryParameters:[xr,Lb,Fb,Ub,qb],urlParameters:[ar,ti,vn],headerParameters:[sr],serializer:or},T8e={path:"/providers/Microsoft.Management/managementGroups/{managementGroupId}/providers/Microsoft.Resources/deploymentStacks/{deploymentStackName}",httpMethod:"PUT",responses:{200:{bodyMapper:Xr},201:{bodyMapper:Xr},202:{bodyMapper:Xr},204:{bodyMapper:Xr},default:{bodyMapper:bt}},requestBody:Nu,queryParameters:[xr],urlParameters:[ar,nc,vn],headerParameters:[sr,Ru],mediaType:"json",serializer:or},D8e={path:"/providers/Microsoft.Management/managementGroups/{managementGroupId}/providers/Microsoft.Resources/deploymentStacks/{deploymentStackName}",httpMethod:"GET",responses:{200:{bodyMapper:Xr},default:{bodyMapper:bt}},queryParameters:[xr],urlParameters:[ar,nc,vn],headerParameters:[sr],serializer:or},k8e={path:"/providers/Microsoft.Management/managementGroups/{managementGroupId}/providers/Microsoft.Resources/deploymentStacks/{deploymentStackName}",httpMethod:"DELETE",responses:{200:{},201:{},202:{},204:{},default:{bodyMapper:bt}},queryParameters:[xr,Lb,Fb,Ub,qb],urlParameters:[ar,nc,vn],headerParameters:[sr],serializer:or},P8e={path:"/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Resources/deploymentStacks/{deploymentStackName}/exportTemplate",httpMethod:"POST",responses:{200:{bodyMapper:YC},default:{bodyMapper:bt}},queryParameters:[xr],urlParameters:[ar,ti,rc,vn],headerParameters:[sr],serializer:or},_8e={path:"/subscriptions/{subscriptionId}/providers/Microsoft.Resources/deploymentStacks/{deploymentStackName}/exportTemplate",httpMethod:"POST",responses:{200:{bodyMapper:YC},default:{bodyMapper:bt}},queryParameters:[xr],urlParameters:[ar,ti,vn],headerParameters:[sr],serializer:or},M8e={path:"/providers/Microsoft.Management/managementGroups/{managementGroupId}/providers/Microsoft.Resources/deploymentStacks/{deploymentStackName}/exportTemplate",httpMethod:"POST",responses:{200:{bodyMapper:YC},default:{bodyMapper:bt}},queryParameters:[xr],urlParameters:[ar,nc,vn],headerParameters:[sr],serializer:or},O8e={path:"/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Resources/deploymentStacks/{deploymentStackName}/validate",httpMethod:"POST",responses:{200:{bodyMapper:vi},201:{bodyMapper:vi},202:{bodyMapper:vi},204:{bodyMapper:vi},default:{bodyMapper:bt}},requestBody:Nu,queryParameters:[xr],urlParameters:[ar,ti,rc,vn],headerParameters:[sr,Ru],mediaType:"json",serializer:or},x8e={path:"/subscriptions/{subscriptionId}/providers/Microsoft.Resources/deploymentStacks/{deploymentStackName}/validate",httpMethod:"POST",responses:{200:{bodyMapper:vi},201:{bodyMapper:vi},202:{bodyMapper:vi},204:{bodyMapper:vi},default:{bodyMapper:bt}},requestBody:Nu,queryParameters:[xr],urlParameters:[ar,ti,vn],headerParameters:[sr,Ru],mediaType:"json",serializer:or},L8e={path:"/providers/Microsoft.Management/managementGroups/{managementGroupId}/providers/Microsoft.Resources/deploymentStacks/{deploymentStackName}/validate",httpMethod:"POST",responses:{200:{bodyMapper:vi},201:{bodyMapper:vi},202:{bodyMapper:vi},204:{bodyMapper:vi},default:{bodyMapper:bt}},requestBody:Nu,queryParameters:[xr],urlParameters:[ar,nc,vn],headerParameters:[sr,Ru],mediaType:"json",serializer:or},F8e={path:"{nextLink}",httpMethod:"GET",responses:{200:{bodyMapper:tc},default:{bodyMapper:bt}},urlParameters:[ar,ti,rc,Vb],headerParameters:[sr],serializer:or},U8e={path:"{nextLink}",httpMethod:"GET",responses:{200:{bodyMapper:tc},default:{bodyMapper:bt}},urlParameters:[ar,ti,Vb],headerParameters:[sr],serializer:or},q8e={path:"{nextLink}",httpMethod:"GET",responses:{200:{bodyMapper:tc},default:{bodyMapper:bt}},urlParameters:[ar,nc,Vb],headerParameters:[sr],serializer:or},Mb=class extends kb.ServiceClient{constructor(e,r,n){var i,s,a;if(e===void 0)throw new Error("'credentials' cannot be null");let o;typeof r=="string"?o=r:typeof r=="object"&&(n=r),n||(n={});let A={requestContentType:"application/json; charset=utf-8",credential:e},l="azsdk-js-arm-resourcesdeploymentstacks/1.0.0",c=n.userAgentOptions&&n.userAgentOptions.userAgentPrefix?`${n.userAgentOptions.userAgentPrefix} ${l}`:`${l}`,d=Object.assign(Object.assign(Object.assign({},A),n),{userAgentOptions:{userAgentPrefix:c},endpoint:(s=(i=n.endpoint)!==null&&i!==void 0?i:n.baseUri)!==null&&s!==void 0?s:"https://management.azure.com"});super(d);let p=!1;n?.pipeline&&n.pipeline.getOrderedPolicies().length>0&&(p=n.pipeline.getOrderedPolicies().some(m=>m.name===Db.bearerTokenAuthenticationPolicyName)),(!n||!n.pipeline||n.pipeline.getOrderedPolicies().length==0||!p)&&(this.pipeline.removePolicy({name:Db.bearerTokenAuthenticationPolicyName}),this.pipeline.addPolicy(Db.bearerTokenAuthenticationPolicy({credential:e,scopes:(a=d.credentialScopes)!==null&&a!==void 0?a:`${d.endpoint}/.default`,challengeCallbacks:{authorizeRequestOnChallenge:kb.authorizeRequestOnClaimChallenge}}))),this.subscriptionId=o,this.$host=n.$host||"https://management.azure.com",this.apiVersion=n.apiVersion||"2024-03-01",this.deploymentStacks=new _b(this),this.addCustomApiVersionPolicy(n.apiVersion)}addCustomApiVersionPolicy(e){if(!e)return;let r={name:"CustomApiVersionPolicy",sendRequest(n,i){return j.__awaiter(this,void 0,void 0,function*(){let s=n.url.split("?");if(s.length>1){let a=s[1].split("&").map(o=>o.indexOf("api-version")>-1?"api-version="+e:o);n.url=s[0]+"?"+a.join("&")}return i(n)})}};this.pipeline.addPolicy(r)}};ze.DeploymentStacksClient=Mb;ze.getContinuationToken=XQe});var zu=g((u7,Zj)=>{var UI=require("buffer"),Pa=UI.Buffer;function Xj(t,e){for(var r in t)e[r]=t[r]}Pa.from&&Pa.alloc&&Pa.allocUnsafe&&Pa.allocUnsafeSlow?Zj.exports=UI:(Xj(UI,u7),u7.Buffer=zc);function zc(t,e,r){return Pa(t,e,r)}zc.prototype=Object.create(Pa.prototype);Xj(Pa,zc);zc.from=function(t,e,r){if(typeof t=="number")throw new TypeError("Argument must not be a number");return Pa(t,e,r)};zc.alloc=function(t,e,r){if(typeof t!="number")throw new TypeError("Argument must be a number");var n=Pa(t);return e!==void 0?typeof r=="string"?n.fill(e,r):n.fill(e):n.fill(0),n};zc.allocUnsafe=function(t){if(typeof t!="number")throw new TypeError("Argument must be a number");return Pa(t)};zc.allocUnsafeSlow=function(t){if(typeof t!="number")throw new TypeError("Argument must be a number");return UI.SlowBuffer(t)}});var m7=g((pKe,ez)=>{var qI=zu().Buffer,Awe=require("stream"),lwe=require("util");function VI(t){if(this.buffer=null,this.writable=!0,this.readable=!0,!t)return this.buffer=qI.alloc(0),this;if(typeof t.pipe=="function")return this.buffer=qI.alloc(0),t.pipe(this),this;if(t.length||typeof t=="object")return this.buffer=t,this.writable=!1,process.nextTick(function(){this.emit("end",t),this.readable=!1,this.emit("close")}.bind(this)),this;throw new TypeError("Unexpected data type ("+typeof t+")")}lwe.inherits(VI,Awe);VI.prototype.write=function(e){this.buffer=qI.concat([this.buffer,qI.from(e)]),this.emit("data",e)};VI.prototype.end=function(e){e&&this.write(e),this.emit("end",e),this.emit("close"),this.writable=!1,this.readable=!1};ez.exports=VI});var rz=g((uKe,tz)=>{"use strict";function h7(t){var e=(t/8|0)+(t%8===0?0:1);return e}var cwe={ES256:h7(256),ES384:h7(384),ES512:h7(521)};function dwe(t){var e=cwe[t];if(e)return e;throw new Error('Unknown algorithm "'+t+'"')}tz.exports=dwe});var lz=g((mKe,Az)=>{"use strict";var GI=zu().Buffer,iz=rz(),HI=128,sz=0,pwe=32,uwe=16,mwe=2,az=uwe|pwe|sz<<6,YI=mwe|sz<<6;function hwe(t){return t.replace(/=/g,"").replace(/\+/g,"-").replace(/\//g,"_")}function oz(t){if(GI.isBuffer(t))return t;if(typeof t=="string")return GI.from(t,"base64");throw new TypeError("ECDSA signature must be a Base64 string or a Buffer")}function fwe(t,e){t=oz(t);var r=iz(e),n=r+1,i=t.length,s=0;if(t[s++]!==az)throw new Error('Could not find expected "seq"');var a=t[s++];if(a===(HI|1)&&(a=t[s++]),i-s=HI;return i&&--n,n}function gwe(t,e){t=oz(t);var r=iz(e),n=t.length;if(n!==r*2)throw new TypeError('"'+e+'" signatures must be "'+r*2+'" bytes, saw "'+n+'"');var i=nz(t,0,r),s=nz(t,r,t.length),a=r-i,o=r-s,A=2+a+1+1+o,l=A{"use strict";var q1=require("buffer").Buffer,f7=require("buffer").SlowBuffer;cz.exports=JI;function JI(t,e){if(!q1.isBuffer(t)||!q1.isBuffer(e)||t.length!==e.length)return!1;for(var r=0,n=0;n{var $u=zu().Buffer,ds=require("crypto"),uz=lz(),pz=require("util"),Cwe=`"%s" is not a valid algorithm. - Supported algorithms are: - "HS256", "HS384", "HS512", "RS256", "RS384", "RS512", "PS256", "PS384", "PS512", "ES256", "ES384", "ES512" and "none".`,V1="secret must be a string or buffer",Wu="key must be a string or a buffer",Iwe="key must be a string, a buffer or an object",E7=typeof ds.createPublicKey=="function";E7&&(Wu+=" or a KeyObject",V1+="or a KeyObject");function mz(t){if(!$u.isBuffer(t)&&typeof t!="string"&&(!E7||typeof t!="object"||typeof t.type!="string"||typeof t.asymmetricKeyType!="string"||typeof t.export!="function"))throw Fs(Wu)}function hz(t){if(!$u.isBuffer(t)&&typeof t!="string"&&typeof t!="object")throw Fs(Iwe)}function Bwe(t){if(!$u.isBuffer(t)){if(typeof t=="string")return t;if(!E7||typeof t!="object"||t.type!=="secret"||typeof t.export!="function")throw Fs(V1)}}function y7(t){return t.replace(/=/g,"").replace(/\+/g,"-").replace(/\//g,"_")}function fz(t){t=t.toString();var e=4-t.length%4;if(e!==4)for(var r=0;r{var kwe=require("buffer").Buffer;Iz.exports=function(e){return typeof e=="string"?e:typeof e=="number"||kwe.isBuffer(e)?e.toString():JSON.stringify(e)}});var vz=g((EKe,bz)=>{var Pwe=zu().Buffer,Bz=m7(),_we=C7(),Mwe=require("stream"),Qz=I7(),B7=require("util");function wz(t,e){return Pwe.from(t,e).toString("base64").replace(/=/g,"").replace(/\+/g,"-").replace(/\//g,"_")}function Owe(t,e,r){r=r||"utf8";var n=wz(Qz(t),"binary"),i=wz(Qz(e),r);return B7.format("%s.%s",n,i)}function Sz(t){var e=t.header,r=t.payload,n=t.secret||t.privateKey,i=t.encoding,s=_we(e.alg),a=Owe(e,r,i),o=s.sign(a,n);return B7.format("%s.%s",a,o)}function jI(t){var e=t.secret||t.privateKey||t.key,r=new Bz(e);this.readable=!0,this.header=t.header,this.encoding=t.encoding,this.secret=this.privateKey=this.key=r,this.payload=new Bz(t.payload),this.secret.once("close",function(){!this.payload.writable&&this.readable&&this.sign()}.bind(this)),this.payload.once("close",function(){!this.secret.writable&&this.readable&&this.sign()}.bind(this))}B7.inherits(jI,Mwe);jI.prototype.sign=function(){try{var e=Sz({header:this.header,payload:this.payload.buffer,secret:this.secret.buffer,encoding:this.encoding});return this.emit("done",e),this.emit("data",e),this.emit("end"),this.readable=!1,e}catch(r){this.readable=!1,this.emit("error",r),this.emit("close")}};jI.sign=Sz;bz.exports=jI});var xz=g((yKe,Oz)=>{var Nz=zu().Buffer,Rz=m7(),xwe=C7(),Lwe=require("stream"),Tz=I7(),Fwe=require("util"),Uwe=/^[a-zA-Z0-9\-_]+?\.[a-zA-Z0-9\-_]+?\.([a-zA-Z0-9\-_]+)?$/;function qwe(t){return Object.prototype.toString.call(t)==="[object Object]"}function Vwe(t){if(qwe(t))return t;try{return JSON.parse(t)}catch{return}}function Dz(t){var e=t.split(".",1)[0];return Vwe(Nz.from(e,"base64").toString("binary"))}function Gwe(t){return t.split(".",2).join(".")}function kz(t){return t.split(".")[2]}function Hwe(t,e){e=e||"utf8";var r=t.split(".")[1];return Nz.from(r,"base64").toString(e)}function Pz(t){return Uwe.test(t)&&!!Dz(t)}function _z(t,e,r){if(!e){var n=new Error("Missing algorithm parameter for jws.verify");throw n.code="MISSING_ALGORITHM",n}t=Tz(t);var i=kz(t),s=Gwe(t),a=xwe(e);return a.verify(s,i,r)}function Mz(t,e){if(e=e||{},t=Tz(t),!Pz(t))return null;var r=Dz(t);if(!r)return null;var n=Hwe(t);return(r.typ==="JWT"||e.json)&&(n=JSON.parse(n,e.encoding)),{header:r,payload:n,signature:kz(t)}}function Ku(t){t=t||{};var e=t.secret||t.publicKey||t.key,r=new Rz(e);this.readable=!0,this.algorithm=t.algorithm,this.encoding=t.encoding,this.secret=this.publicKey=this.key=r,this.signature=new Rz(t.signature),this.secret.once("close",function(){!this.signature.writable&&this.readable&&this.verify()}.bind(this)),this.signature.once("close",function(){!this.secret.writable&&this.readable&&this.verify()}.bind(this))}Fwe.inherits(Ku,Lwe);Ku.prototype.verify=function(){try{var e=_z(this.signature.buffer,this.algorithm,this.key.buffer),r=Mz(this.signature.buffer,this.encoding);return this.emit("done",e,r),this.emit("data",e),this.emit("end"),this.readable=!1,e}catch(n){this.readable=!1,this.emit("error",n),this.emit("close")}};Ku.decode=Mz;Ku.isValid=Pz;Ku.verify=_z;Oz.exports=Ku});var WI=g(ZA=>{var Lz=vz(),zI=xz(),Ywe=["HS256","HS384","HS512","RS256","RS384","RS512","PS256","PS384","PS512","ES256","ES384","ES512"];ZA.ALGORITHMS=Ywe;ZA.sign=Lz.sign;ZA.verify=zI.verify;ZA.decode=zI.decode;ZA.isValid=zI.isValid;ZA.createSign=function(e){return new Lz(e)};ZA.createVerify=function(e){return new zI(e)}});var Q7=g((IKe,Fz)=>{var Jwe=WI();Fz.exports=function(t,e){e=e||{};var r=Jwe.decode(t,e);if(!r)return null;var n=r.payload;if(typeof n=="string")try{var i=JSON.parse(n);i!==null&&typeof i=="object"&&(n=i)}catch{}return e.complete===!0?{header:r.header,payload:n,signature:r.signature}:n}});var H1=g((BKe,Uz)=>{var $I=function(t,e){Error.call(this,t),Error.captureStackTrace&&Error.captureStackTrace(this,this.constructor),this.name="JsonWebTokenError",this.message=t,e&&(this.inner=e)};$I.prototype=Object.create(Error.prototype);$I.prototype.constructor=$I;Uz.exports=$I});var w7=g((QKe,Vz)=>{var qz=H1(),KI=function(t,e){qz.call(this,t),this.name="NotBeforeError",this.date=e};KI.prototype=Object.create(qz.prototype);KI.prototype.constructor=KI;Vz.exports=KI});var S7=g((wKe,Hz)=>{var Gz=H1(),XI=function(t,e){Gz.call(this,t),this.name="TokenExpiredError",this.expiredAt=e};XI.prototype=Object.create(Gz.prototype);XI.prototype.constructor=XI;Hz.exports=XI});var b7=g((SKe,Yz)=>{var jwe=j5();Yz.exports=function(t,e){var r=e||Math.floor(Date.now()/1e3);if(typeof t=="string"){var n=jwe(t);return typeof n>"u"?void 0:Math.floor(r+n/1e3)}else return typeof t=="number"?r+t:void 0}});var Y1=g((bKe,Jz)=>{var zwe="2.0.0",Wwe=Number.MAX_SAFE_INTEGER||9007199254740991,$we=16,Kwe=250,Xwe=["major","premajor","minor","preminor","patch","prepatch","prerelease"];Jz.exports={MAX_LENGTH:256,MAX_SAFE_COMPONENT_LENGTH:$we,MAX_SAFE_BUILD_LENGTH:Kwe,MAX_SAFE_INTEGER:Wwe,RELEASE_TYPES:Xwe,SEMVER_SPEC_VERSION:zwe,FLAG_INCLUDE_PRERELEASE:1,FLAG_LOOSE:2}});var J1=g((vKe,jz)=>{var Zwe=typeof process=="object"&&process.env&&process.env.NODE_DEBUG&&/\bsemver\b/i.test(process.env.NODE_DEBUG)?(...t)=>console.error("SEMVER",...t):()=>{};jz.exports=Zwe});var Xu=g((Do,zz)=>{var{MAX_SAFE_COMPONENT_LENGTH:v7,MAX_SAFE_BUILD_LENGTH:eSe,MAX_LENGTH:tSe}=Y1(),rSe=J1();Do=zz.exports={};var nSe=Do.re=[],iSe=Do.safeRe=[],z=Do.src=[],W=Do.t={},sSe=0,R7="[a-zA-Z0-9-]",aSe=[["\\s",1],["\\d",tSe],[R7,eSe]],oSe=t=>{for(let[e,r]of aSe)t=t.split(`${e}*`).join(`${e}{0,${r}}`).split(`${e}+`).join(`${e}{1,${r}}`);return t},Qe=(t,e,r)=>{let n=oSe(e),i=sSe++;rSe(t,i,e),W[t]=i,z[i]=e,nSe[i]=new RegExp(e,r?"g":void 0),iSe[i]=new RegExp(n,r?"g":void 0)};Qe("NUMERICIDENTIFIER","0|[1-9]\\d*");Qe("NUMERICIDENTIFIERLOOSE","\\d+");Qe("NONNUMERICIDENTIFIER",`\\d*[a-zA-Z-]${R7}*`);Qe("MAINVERSION",`(${z[W.NUMERICIDENTIFIER]})\\.(${z[W.NUMERICIDENTIFIER]})\\.(${z[W.NUMERICIDENTIFIER]})`);Qe("MAINVERSIONLOOSE",`(${z[W.NUMERICIDENTIFIERLOOSE]})\\.(${z[W.NUMERICIDENTIFIERLOOSE]})\\.(${z[W.NUMERICIDENTIFIERLOOSE]})`);Qe("PRERELEASEIDENTIFIER",`(?:${z[W.NUMERICIDENTIFIER]}|${z[W.NONNUMERICIDENTIFIER]})`);Qe("PRERELEASEIDENTIFIERLOOSE",`(?:${z[W.NUMERICIDENTIFIERLOOSE]}|${z[W.NONNUMERICIDENTIFIER]})`);Qe("PRERELEASE",`(?:-(${z[W.PRERELEASEIDENTIFIER]}(?:\\.${z[W.PRERELEASEIDENTIFIER]})*))`);Qe("PRERELEASELOOSE",`(?:-?(${z[W.PRERELEASEIDENTIFIERLOOSE]}(?:\\.${z[W.PRERELEASEIDENTIFIERLOOSE]})*))`);Qe("BUILDIDENTIFIER",`${R7}+`);Qe("BUILD",`(?:\\+(${z[W.BUILDIDENTIFIER]}(?:\\.${z[W.BUILDIDENTIFIER]})*))`);Qe("FULLPLAIN",`v?${z[W.MAINVERSION]}${z[W.PRERELEASE]}?${z[W.BUILD]}?`);Qe("FULL",`^${z[W.FULLPLAIN]}$`);Qe("LOOSEPLAIN",`[v=\\s]*${z[W.MAINVERSIONLOOSE]}${z[W.PRERELEASELOOSE]}?${z[W.BUILD]}?`);Qe("LOOSE",`^${z[W.LOOSEPLAIN]}$`);Qe("GTLT","((?:<|>)?=?)");Qe("XRANGEIDENTIFIERLOOSE",`${z[W.NUMERICIDENTIFIERLOOSE]}|x|X|\\*`);Qe("XRANGEIDENTIFIER",`${z[W.NUMERICIDENTIFIER]}|x|X|\\*`);Qe("XRANGEPLAIN",`[v=\\s]*(${z[W.XRANGEIDENTIFIER]})(?:\\.(${z[W.XRANGEIDENTIFIER]})(?:\\.(${z[W.XRANGEIDENTIFIER]})(?:${z[W.PRERELEASE]})?${z[W.BUILD]}?)?)?`);Qe("XRANGEPLAINLOOSE",`[v=\\s]*(${z[W.XRANGEIDENTIFIERLOOSE]})(?:\\.(${z[W.XRANGEIDENTIFIERLOOSE]})(?:\\.(${z[W.XRANGEIDENTIFIERLOOSE]})(?:${z[W.PRERELEASELOOSE]})?${z[W.BUILD]}?)?)?`);Qe("XRANGE",`^${z[W.GTLT]}\\s*${z[W.XRANGEPLAIN]}$`);Qe("XRANGELOOSE",`^${z[W.GTLT]}\\s*${z[W.XRANGEPLAINLOOSE]}$`);Qe("COERCEPLAIN",`(^|[^\\d])(\\d{1,${v7}})(?:\\.(\\d{1,${v7}}))?(?:\\.(\\d{1,${v7}}))?`);Qe("COERCE",`${z[W.COERCEPLAIN]}(?:$|[^\\d])`);Qe("COERCEFULL",z[W.COERCEPLAIN]+`(?:${z[W.PRERELEASE]})?(?:${z[W.BUILD]})?(?:$|[^\\d])`);Qe("COERCERTL",z[W.COERCE],!0);Qe("COERCERTLFULL",z[W.COERCEFULL],!0);Qe("LONETILDE","(?:~>?)");Qe("TILDETRIM",`(\\s*)${z[W.LONETILDE]}\\s+`,!0);Do.tildeTrimReplace="$1~";Qe("TILDE",`^${z[W.LONETILDE]}${z[W.XRANGEPLAIN]}$`);Qe("TILDELOOSE",`^${z[W.LONETILDE]}${z[W.XRANGEPLAINLOOSE]}$`);Qe("LONECARET","(?:\\^)");Qe("CARETTRIM",`(\\s*)${z[W.LONECARET]}\\s+`,!0);Do.caretTrimReplace="$1^";Qe("CARET",`^${z[W.LONECARET]}${z[W.XRANGEPLAIN]}$`);Qe("CARETLOOSE",`^${z[W.LONECARET]}${z[W.XRANGEPLAINLOOSE]}$`);Qe("COMPARATORLOOSE",`^${z[W.GTLT]}\\s*(${z[W.LOOSEPLAIN]})$|^$`);Qe("COMPARATOR",`^${z[W.GTLT]}\\s*(${z[W.FULLPLAIN]})$|^$`);Qe("COMPARATORTRIM",`(\\s*)${z[W.GTLT]}\\s*(${z[W.LOOSEPLAIN]}|${z[W.XRANGEPLAIN]})`,!0);Do.comparatorTrimReplace="$1$2$3";Qe("HYPHENRANGE",`^\\s*(${z[W.XRANGEPLAIN]})\\s+-\\s+(${z[W.XRANGEPLAIN]})\\s*$`);Qe("HYPHENRANGELOOSE",`^\\s*(${z[W.XRANGEPLAINLOOSE]})\\s+-\\s+(${z[W.XRANGEPLAINLOOSE]})\\s*$`);Qe("STAR","(<|>)?=?\\s*\\*");Qe("GTE0","^\\s*>=\\s*0\\.0\\.0\\s*$");Qe("GTE0PRE","^\\s*>=\\s*0\\.0\\.0-0\\s*$")});var ZI=g((RKe,Wz)=>{var ASe=Object.freeze({loose:!0}),lSe=Object.freeze({}),cSe=t=>t?typeof t!="object"?ASe:t:lSe;Wz.exports=cSe});var N7=g((NKe,Xz)=>{var $z=/^[0-9]+$/,Kz=(t,e)=>{let r=$z.test(t),n=$z.test(e);return r&&n&&(t=+t,e=+e),t===e?0:r&&!n?-1:n&&!r?1:tKz(e,t);Xz.exports={compareIdentifiers:Kz,rcompareIdentifiers:dSe}});var hn=g((TKe,rW)=>{var e4=J1(),{MAX_LENGTH:Zz,MAX_SAFE_INTEGER:t4}=Y1(),{safeRe:eW,t:tW}=Xu(),pSe=ZI(),{compareIdentifiers:Zu}=N7(),T7=class t{constructor(e,r){if(r=pSe(r),e instanceof t){if(e.loose===!!r.loose&&e.includePrerelease===!!r.includePrerelease)return e;e=e.version}else if(typeof e!="string")throw new TypeError(`Invalid version. Must be a string. Got type "${typeof e}".`);if(e.length>Zz)throw new TypeError(`version is longer than ${Zz} characters`);e4("SemVer",e,r),this.options=r,this.loose=!!r.loose,this.includePrerelease=!!r.includePrerelease;let n=e.trim().match(r.loose?eW[tW.LOOSE]:eW[tW.FULL]);if(!n)throw new TypeError(`Invalid Version: ${e}`);if(this.raw=e,this.major=+n[1],this.minor=+n[2],this.patch=+n[3],this.major>t4||this.major<0)throw new TypeError("Invalid major version");if(this.minor>t4||this.minor<0)throw new TypeError("Invalid minor version");if(this.patch>t4||this.patch<0)throw new TypeError("Invalid patch version");n[4]?this.prerelease=n[4].split(".").map(i=>{if(/^[0-9]+$/.test(i)){let s=+i;if(s>=0&&s=0;)typeof this.prerelease[s]=="number"&&(this.prerelease[s]++,s=-2);if(s===-1){if(r===this.prerelease.join(".")&&n===!1)throw new Error("invalid increment argument: identifier already exists");this.prerelease.push(i)}}if(r){let s=[r,i];n===!1&&(s=[r]),Zu(this.prerelease[0],r)===0?isNaN(this.prerelease[1])&&(this.prerelease=s):this.prerelease=s}break}default:throw new Error(`invalid increment argument: ${e}`)}return this.raw=this.format(),this.build.length&&(this.raw+=`+${this.build.join(".")}`),this}};rW.exports=T7});var Wc=g((DKe,iW)=>{var nW=hn(),uSe=(t,e,r=!1)=>{if(t instanceof nW)return t;try{return new nW(t,e)}catch(n){if(!r)return null;throw n}};iW.exports=uSe});var aW=g((kKe,sW)=>{var mSe=Wc(),hSe=(t,e)=>{let r=mSe(t,e);return r?r.version:null};sW.exports=hSe});var AW=g((PKe,oW)=>{var fSe=Wc(),gSe=(t,e)=>{let r=fSe(t.trim().replace(/^[=v]+/,""),e);return r?r.version:null};oW.exports=gSe});var dW=g((_Ke,cW)=>{var lW=hn(),ESe=(t,e,r,n,i)=>{typeof r=="string"&&(i=n,n=r,r=void 0);try{return new lW(t instanceof lW?t.version:t,r).inc(e,n,i).version}catch{return null}};cW.exports=ESe});var mW=g((MKe,uW)=>{var pW=Wc(),ySe=(t,e)=>{let r=pW(t,null,!0),n=pW(e,null,!0),i=r.compare(n);if(i===0)return null;let s=i>0,a=s?r:n,o=s?n:r,A=!!a.prerelease.length;if(!!o.prerelease.length&&!A)return!o.patch&&!o.minor?"major":a.patch?"patch":a.minor?"minor":"major";let c=A?"pre":"";return r.major!==n.major?c+"major":r.minor!==n.minor?c+"minor":r.patch!==n.patch?c+"patch":"prerelease"};uW.exports=ySe});var fW=g((OKe,hW)=>{var CSe=hn(),ISe=(t,e)=>new CSe(t,e).major;hW.exports=ISe});var EW=g((xKe,gW)=>{var BSe=hn(),QSe=(t,e)=>new BSe(t,e).minor;gW.exports=QSe});var CW=g((LKe,yW)=>{var wSe=hn(),SSe=(t,e)=>new wSe(t,e).patch;yW.exports=SSe});var BW=g((FKe,IW)=>{var bSe=Wc(),vSe=(t,e)=>{let r=bSe(t,e);return r&&r.prerelease.length?r.prerelease:null};IW.exports=vSe});var ps=g((UKe,wW)=>{var QW=hn(),RSe=(t,e,r)=>new QW(t,r).compare(new QW(e,r));wW.exports=RSe});var bW=g((qKe,SW)=>{var NSe=ps(),TSe=(t,e,r)=>NSe(e,t,r);SW.exports=TSe});var RW=g((VKe,vW)=>{var DSe=ps(),kSe=(t,e)=>DSe(t,e,!0);vW.exports=kSe});var r4=g((GKe,TW)=>{var NW=hn(),PSe=(t,e,r)=>{let n=new NW(t,r),i=new NW(e,r);return n.compare(i)||n.compareBuild(i)};TW.exports=PSe});var kW=g((HKe,DW)=>{var _Se=r4(),MSe=(t,e)=>t.sort((r,n)=>_Se(r,n,e));DW.exports=MSe});var _W=g((YKe,PW)=>{var OSe=r4(),xSe=(t,e)=>t.sort((r,n)=>OSe(n,r,e));PW.exports=xSe});var j1=g((JKe,MW)=>{var LSe=ps(),FSe=(t,e,r)=>LSe(t,e,r)>0;MW.exports=FSe});var n4=g((jKe,OW)=>{var USe=ps(),qSe=(t,e,r)=>USe(t,e,r)<0;OW.exports=qSe});var D7=g((zKe,xW)=>{var VSe=ps(),GSe=(t,e,r)=>VSe(t,e,r)===0;xW.exports=GSe});var k7=g((WKe,LW)=>{var HSe=ps(),YSe=(t,e,r)=>HSe(t,e,r)!==0;LW.exports=YSe});var i4=g(($Ke,FW)=>{var JSe=ps(),jSe=(t,e,r)=>JSe(t,e,r)>=0;FW.exports=jSe});var s4=g((KKe,UW)=>{var zSe=ps(),WSe=(t,e,r)=>zSe(t,e,r)<=0;UW.exports=WSe});var P7=g((XKe,qW)=>{var $Se=D7(),KSe=k7(),XSe=j1(),ZSe=i4(),ebe=n4(),tbe=s4(),rbe=(t,e,r,n)=>{switch(e){case"===":return typeof t=="object"&&(t=t.version),typeof r=="object"&&(r=r.version),t===r;case"!==":return typeof t=="object"&&(t=t.version),typeof r=="object"&&(r=r.version),t!==r;case"":case"=":case"==":return $Se(t,r,n);case"!=":return KSe(t,r,n);case">":return XSe(t,r,n);case">=":return ZSe(t,r,n);case"<":return ebe(t,r,n);case"<=":return tbe(t,r,n);default:throw new TypeError(`Invalid operator: ${e}`)}};qW.exports=rbe});var GW=g((ZKe,VW)=>{var nbe=hn(),ibe=Wc(),{safeRe:a4,t:o4}=Xu(),sbe=(t,e)=>{if(t instanceof nbe)return t;if(typeof t=="number"&&(t=String(t)),typeof t!="string")return null;e=e||{};let r=null;if(!e.rtl)r=t.match(e.includePrerelease?a4[o4.COERCEFULL]:a4[o4.COERCE]);else{let A=e.includePrerelease?a4[o4.COERCERTLFULL]:a4[o4.COERCERTL],l;for(;(l=A.exec(t))&&(!r||r.index+r[0].length!==t.length);)(!r||l.index+l[0].length!==r.index+r[0].length)&&(r=l),A.lastIndex=l.index+l[1].length+l[2].length;A.lastIndex=-1}if(r===null)return null;let n=r[2],i=r[3]||"0",s=r[4]||"0",a=e.includePrerelease&&r[5]?`-${r[5]}`:"",o=e.includePrerelease&&r[6]?`+${r[6]}`:"";return ibe(`${n}.${i}.${s}${a}${o}`,e)};VW.exports=sbe});var YW=g((eXe,HW)=>{var _7=class{constructor(){this.max=1e3,this.map=new Map}get(e){let r=this.map.get(e);if(r!==void 0)return this.map.delete(e),this.map.set(e,r),r}delete(e){return this.map.delete(e)}set(e,r){if(!this.delete(e)&&r!==void 0){if(this.map.size>=this.max){let i=this.map.keys().next().value;this.delete(i)}this.map.set(e,r)}return this}};HW.exports=_7});var us=g((tXe,WW)=>{var abe=/\s+/g,M7=class t{constructor(e,r){if(r=Abe(r),e instanceof t)return e.loose===!!r.loose&&e.includePrerelease===!!r.includePrerelease?e:new t(e.raw,r);if(e instanceof O7)return this.raw=e.value,this.set=[[e]],this.formatted=void 0,this;if(this.options=r,this.loose=!!r.loose,this.includePrerelease=!!r.includePrerelease,this.raw=e.trim().replace(abe," "),this.set=this.raw.split("||").map(n=>this.parseRange(n.trim())).filter(n=>n.length),!this.set.length)throw new TypeError(`Invalid SemVer Range: ${this.raw}`);if(this.set.length>1){let n=this.set[0];if(this.set=this.set.filter(i=>!jW(i[0])),this.set.length===0)this.set=[n];else if(this.set.length>1){for(let i of this.set)if(i.length===1&&hbe(i[0])){this.set=[i];break}}}this.formatted=void 0}get range(){if(this.formatted===void 0){this.formatted="";for(let e=0;e0&&(this.formatted+="||");let r=this.set[e];for(let n=0;n0&&(this.formatted+=" "),this.formatted+=r[n].toString().trim()}}return this.formatted}format(){return this.range}toString(){return this.range}parseRange(e){let n=((this.options.includePrerelease&&ube)|(this.options.loose&&mbe))+":"+e,i=JW.get(n);if(i)return i;let s=this.options.loose,a=s?Ai[Pn.HYPHENRANGELOOSE]:Ai[Pn.HYPHENRANGE];e=e.replace(a,Sbe(this.options.includePrerelease)),Nt("hyphen replace",e),e=e.replace(Ai[Pn.COMPARATORTRIM],cbe),Nt("comparator trim",e),e=e.replace(Ai[Pn.TILDETRIM],dbe),Nt("tilde trim",e),e=e.replace(Ai[Pn.CARETTRIM],pbe),Nt("caret trim",e);let o=e.split(" ").map(d=>fbe(d,this.options)).join(" ").split(/\s+/).map(d=>wbe(d,this.options));s&&(o=o.filter(d=>(Nt("loose invalid filter",d,this.options),!!d.match(Ai[Pn.COMPARATORLOOSE])))),Nt("range list",o);let A=new Map,l=o.map(d=>new O7(d,this.options));for(let d of l){if(jW(d))return[d];A.set(d.value,d)}A.size>1&&A.has("")&&A.delete("");let c=[...A.values()];return JW.set(n,c),c}intersects(e,r){if(!(e instanceof t))throw new TypeError("a Range is required");return this.set.some(n=>zW(n,r)&&e.set.some(i=>zW(i,r)&&n.every(s=>i.every(a=>s.intersects(a,r)))))}test(e){if(!e)return!1;if(typeof e=="string")try{e=new lbe(e,this.options)}catch{return!1}for(let r=0;rt.value==="<0.0.0-0",hbe=t=>t.value==="",zW=(t,e)=>{let r=!0,n=t.slice(),i=n.pop();for(;r&&n.length;)r=n.every(s=>i.intersects(s,e)),i=n.pop();return r},fbe=(t,e)=>(Nt("comp",t,e),t=ybe(t,e),Nt("caret",t),t=gbe(t,e),Nt("tildes",t),t=Ibe(t,e),Nt("xrange",t),t=Qbe(t,e),Nt("stars",t),t),_n=t=>!t||t.toLowerCase()==="x"||t==="*",gbe=(t,e)=>t.trim().split(/\s+/).map(r=>Ebe(r,e)).join(" "),Ebe=(t,e)=>{let r=e.loose?Ai[Pn.TILDELOOSE]:Ai[Pn.TILDE];return t.replace(r,(n,i,s,a,o)=>{Nt("tilde",t,n,i,s,a,o);let A;return _n(i)?A="":_n(s)?A=`>=${i}.0.0 <${+i+1}.0.0-0`:_n(a)?A=`>=${i}.${s}.0 <${i}.${+s+1}.0-0`:o?(Nt("replaceTilde pr",o),A=`>=${i}.${s}.${a}-${o} <${i}.${+s+1}.0-0`):A=`>=${i}.${s}.${a} <${i}.${+s+1}.0-0`,Nt("tilde return",A),A})},ybe=(t,e)=>t.trim().split(/\s+/).map(r=>Cbe(r,e)).join(" "),Cbe=(t,e)=>{Nt("caret",t,e);let r=e.loose?Ai[Pn.CARETLOOSE]:Ai[Pn.CARET],n=e.includePrerelease?"-0":"";return t.replace(r,(i,s,a,o,A)=>{Nt("caret",t,i,s,a,o,A);let l;return _n(s)?l="":_n(a)?l=`>=${s}.0.0${n} <${+s+1}.0.0-0`:_n(o)?s==="0"?l=`>=${s}.${a}.0${n} <${s}.${+a+1}.0-0`:l=`>=${s}.${a}.0${n} <${+s+1}.0.0-0`:A?(Nt("replaceCaret pr",A),s==="0"?a==="0"?l=`>=${s}.${a}.${o}-${A} <${s}.${a}.${+o+1}-0`:l=`>=${s}.${a}.${o}-${A} <${s}.${+a+1}.0-0`:l=`>=${s}.${a}.${o}-${A} <${+s+1}.0.0-0`):(Nt("no pr"),s==="0"?a==="0"?l=`>=${s}.${a}.${o}${n} <${s}.${a}.${+o+1}-0`:l=`>=${s}.${a}.${o}${n} <${s}.${+a+1}.0-0`:l=`>=${s}.${a}.${o} <${+s+1}.0.0-0`),Nt("caret return",l),l})},Ibe=(t,e)=>(Nt("replaceXRanges",t,e),t.split(/\s+/).map(r=>Bbe(r,e)).join(" ")),Bbe=(t,e)=>{t=t.trim();let r=e.loose?Ai[Pn.XRANGELOOSE]:Ai[Pn.XRANGE];return t.replace(r,(n,i,s,a,o,A)=>{Nt("xRange",t,n,i,s,a,o,A);let l=_n(s),c=l||_n(a),d=c||_n(o),p=d;return i==="="&&p&&(i=""),A=e.includePrerelease?"-0":"",l?i===">"||i==="<"?n="<0.0.0-0":n="*":i&&p?(c&&(a=0),o=0,i===">"?(i=">=",c?(s=+s+1,a=0,o=0):(a=+a+1,o=0)):i==="<="&&(i="<",c?s=+s+1:a=+a+1),i==="<"&&(A="-0"),n=`${i+s}.${a}.${o}${A}`):c?n=`>=${s}.0.0${A} <${+s+1}.0.0-0`:d&&(n=`>=${s}.${a}.0${A} <${s}.${+a+1}.0-0`),Nt("xRange return",n),n})},Qbe=(t,e)=>(Nt("replaceStars",t,e),t.trim().replace(Ai[Pn.STAR],"")),wbe=(t,e)=>(Nt("replaceGTE0",t,e),t.trim().replace(Ai[e.includePrerelease?Pn.GTE0PRE:Pn.GTE0],"")),Sbe=t=>(e,r,n,i,s,a,o,A,l,c,d,p)=>(_n(n)?r="":_n(i)?r=`>=${n}.0.0${t?"-0":""}`:_n(s)?r=`>=${n}.${i}.0${t?"-0":""}`:a?r=`>=${r}`:r=`>=${r}${t?"-0":""}`,_n(l)?A="":_n(c)?A=`<${+l+1}.0.0-0`:_n(d)?A=`<${l}.${+c+1}.0-0`:p?A=`<=${l}.${c}.${d}-${p}`:t?A=`<${l}.${c}.${+d+1}-0`:A=`<=${A}`,`${r} ${A}`.trim()),bbe=(t,e,r)=>{for(let n=0;n0){let i=t[n].semver;if(i.major===e.major&&i.minor===e.minor&&i.patch===e.patch)return!0}return!1}return!0}});var z1=g((rXe,t$)=>{var W1=Symbol("SemVer ANY"),F7=class t{static get ANY(){return W1}constructor(e,r){if(r=$W(r),e instanceof t){if(e.loose===!!r.loose)return e;e=e.value}e=e.trim().split(/\s+/).join(" "),L7("comparator",e,r),this.options=r,this.loose=!!r.loose,this.parse(e),this.semver===W1?this.value="":this.value=this.operator+this.semver.version,L7("comp",this)}parse(e){let r=this.options.loose?KW[XW.COMPARATORLOOSE]:KW[XW.COMPARATOR],n=e.match(r);if(!n)throw new TypeError(`Invalid comparator: ${e}`);this.operator=n[1]!==void 0?n[1]:"",this.operator==="="&&(this.operator=""),n[2]?this.semver=new ZW(n[2],this.options.loose):this.semver=W1}toString(){return this.value}test(e){if(L7("Comparator.test",e,this.options.loose),this.semver===W1||e===W1)return!0;if(typeof e=="string")try{e=new ZW(e,this.options)}catch{return!1}return x7(e,this.operator,this.semver,this.options)}intersects(e,r){if(!(e instanceof t))throw new TypeError("a Comparator is required");return this.operator===""?this.value===""?!0:new e$(e.value,r).test(this.value):e.operator===""?e.value===""?!0:new e$(this.value,r).test(e.semver):(r=$W(r),r.includePrerelease&&(this.value==="<0.0.0-0"||e.value==="<0.0.0-0")||!r.includePrerelease&&(this.value.startsWith("<0.0.0")||e.value.startsWith("<0.0.0"))?!1:!!(this.operator.startsWith(">")&&e.operator.startsWith(">")||this.operator.startsWith("<")&&e.operator.startsWith("<")||this.semver.version===e.semver.version&&this.operator.includes("=")&&e.operator.includes("=")||x7(this.semver,"<",e.semver,r)&&this.operator.startsWith(">")&&e.operator.startsWith("<")||x7(this.semver,">",e.semver,r)&&this.operator.startsWith("<")&&e.operator.startsWith(">")))}};t$.exports=F7;var $W=ZI(),{safeRe:KW,t:XW}=Xu(),x7=P7(),L7=J1(),ZW=hn(),e$=us()});var $1=g((nXe,r$)=>{var vbe=us(),Rbe=(t,e,r)=>{try{e=new vbe(e,r)}catch{return!1}return e.test(t)};r$.exports=Rbe});var i$=g((iXe,n$)=>{var Nbe=us(),Tbe=(t,e)=>new Nbe(t,e).set.map(r=>r.map(n=>n.value).join(" ").trim().split(" "));n$.exports=Tbe});var a$=g((sXe,s$)=>{var Dbe=hn(),kbe=us(),Pbe=(t,e,r)=>{let n=null,i=null,s=null;try{s=new kbe(e,r)}catch{return null}return t.forEach(a=>{s.test(a)&&(!n||i.compare(a)===-1)&&(n=a,i=new Dbe(n,r))}),n};s$.exports=Pbe});var A$=g((aXe,o$)=>{var _be=hn(),Mbe=us(),Obe=(t,e,r)=>{let n=null,i=null,s=null;try{s=new Mbe(e,r)}catch{return null}return t.forEach(a=>{s.test(a)&&(!n||i.compare(a)===1)&&(n=a,i=new _be(n,r))}),n};o$.exports=Obe});var d$=g((oXe,c$)=>{var U7=hn(),xbe=us(),l$=j1(),Lbe=(t,e)=>{t=new xbe(t,e);let r=new U7("0.0.0");if(t.test(r)||(r=new U7("0.0.0-0"),t.test(r)))return r;r=null;for(let n=0;n{let o=new U7(a.semver.version);switch(a.operator){case">":o.prerelease.length===0?o.patch++:o.prerelease.push(0),o.raw=o.format();case"":case">=":(!s||l$(o,s))&&(s=o);break;case"<":case"<=":break;default:throw new Error(`Unexpected operation: ${a.operator}`)}}),s&&(!r||l$(r,s))&&(r=s)}return r&&t.test(r)?r:null};c$.exports=Lbe});var u$=g((AXe,p$)=>{var Fbe=us(),Ube=(t,e)=>{try{return new Fbe(t,e).range||"*"}catch{return null}};p$.exports=Ube});var A4=g((lXe,g$)=>{var qbe=hn(),f$=z1(),{ANY:Vbe}=f$,Gbe=us(),Hbe=$1(),m$=j1(),h$=n4(),Ybe=s4(),Jbe=i4(),jbe=(t,e,r,n)=>{t=new qbe(t,n),e=new Gbe(e,n);let i,s,a,o,A;switch(r){case">":i=m$,s=Ybe,a=h$,o=">",A=">=";break;case"<":i=h$,s=Jbe,a=m$,o="<",A="<=";break;default:throw new TypeError('Must provide a hilo val of "<" or ">"')}if(Hbe(t,e,n))return!1;for(let l=0;l{u.semver===Vbe&&(u=new f$(">=0.0.0")),d=d||u,p=p||u,i(u.semver,d.semver,n)?d=u:a(u.semver,p.semver,n)&&(p=u)}),d.operator===o||d.operator===A||(!p.operator||p.operator===o)&&s(t,p.semver))return!1;if(p.operator===A&&a(t,p.semver))return!1}return!0};g$.exports=jbe});var y$=g((cXe,E$)=>{var zbe=A4(),Wbe=(t,e,r)=>zbe(t,e,">",r);E$.exports=Wbe});var I$=g((dXe,C$)=>{var $be=A4(),Kbe=(t,e,r)=>$be(t,e,"<",r);C$.exports=Kbe});var w$=g((pXe,Q$)=>{var B$=us(),Xbe=(t,e,r)=>(t=new B$(t,r),e=new B$(e,r),t.intersects(e,r));Q$.exports=Xbe});var b$=g((uXe,S$)=>{var Zbe=$1(),eve=ps();S$.exports=(t,e,r)=>{let n=[],i=null,s=null,a=t.sort((c,d)=>eve(c,d,r));for(let c of a)Zbe(c,e,r)?(s=c,i||(i=c)):(s&&n.push([i,s]),s=null,i=null);i&&n.push([i,null]);let o=[];for(let[c,d]of n)c===d?o.push(c):!d&&c===a[0]?o.push("*"):d?c===a[0]?o.push(`<=${d}`):o.push(`${c} - ${d}`):o.push(`>=${c}`);let A=o.join(" || "),l=typeof e.raw=="string"?e.raw:String(e);return A.length{var v$=us(),V7=z1(),{ANY:q7}=V7,K1=$1(),G7=ps(),tve=(t,e,r={})=>{if(t===e)return!0;t=new v$(t,r),e=new v$(e,r);let n=!1;e:for(let i of t.set){for(let s of e.set){let a=nve(i,s,r);if(n=n||a!==null,a)continue e}if(n)return!1}return!0},rve=[new V7(">=0.0.0-0")],R$=[new V7(">=0.0.0")],nve=(t,e,r)=>{if(t===e)return!0;if(t.length===1&&t[0].semver===q7){if(e.length===1&&e[0].semver===q7)return!0;r.includePrerelease?t=rve:t=R$}if(e.length===1&&e[0].semver===q7){if(r.includePrerelease)return!0;e=R$}let n=new Set,i,s;for(let u of t)u.operator===">"||u.operator===">="?i=N$(i,u,r):u.operator==="<"||u.operator==="<="?s=T$(s,u,r):n.add(u.semver);if(n.size>1)return null;let a;if(i&&s){if(a=G7(i.semver,s.semver,r),a>0)return null;if(a===0&&(i.operator!==">="||s.operator!=="<="))return null}for(let u of n){if(i&&!K1(u,String(i),r)||s&&!K1(u,String(s),r))return null;for(let m of e)if(!K1(u,String(m),r))return!1;return!0}let o,A,l,c,d=s&&!r.includePrerelease&&s.semver.prerelease.length?s.semver:!1,p=i&&!r.includePrerelease&&i.semver.prerelease.length?i.semver:!1;d&&d.prerelease.length===1&&s.operator==="<"&&d.prerelease[0]===0&&(d=!1);for(let u of e){if(c=c||u.operator===">"||u.operator===">=",l=l||u.operator==="<"||u.operator==="<=",i){if(p&&u.semver.prerelease&&u.semver.prerelease.length&&u.semver.major===p.major&&u.semver.minor===p.minor&&u.semver.patch===p.patch&&(p=!1),u.operator===">"||u.operator===">="){if(o=N$(i,u,r),o===u&&o!==i)return!1}else if(i.operator===">="&&!K1(i.semver,String(u),r))return!1}if(s){if(d&&u.semver.prerelease&&u.semver.prerelease.length&&u.semver.major===d.major&&u.semver.minor===d.minor&&u.semver.patch===d.patch&&(d=!1),u.operator==="<"||u.operator==="<="){if(A=T$(s,u,r),A===u&&A!==s)return!1}else if(s.operator==="<="&&!K1(s.semver,String(u),r))return!1}if(!u.operator&&(s||i)&&a!==0)return!1}return!(i&&l&&!s&&a!==0||s&&c&&!i&&a!==0||p||d)},N$=(t,e,r)=>{if(!t)return e;let n=G7(t.semver,e.semver,r);return n>0?t:n<0||e.operator===">"&&t.operator===">="?e:t},T$=(t,e,r)=>{if(!t)return e;let n=G7(t.semver,e.semver,r);return n<0?t:n>0||e.operator==="<"&&t.operator==="<="?e:t};D$.exports=tve});var l4=g((hXe,M$)=>{var H7=Xu(),P$=Y1(),ive=hn(),_$=N7(),sve=Wc(),ave=aW(),ove=AW(),Ave=dW(),lve=mW(),cve=fW(),dve=EW(),pve=CW(),uve=BW(),mve=ps(),hve=bW(),fve=RW(),gve=r4(),Eve=kW(),yve=_W(),Cve=j1(),Ive=n4(),Bve=D7(),Qve=k7(),wve=i4(),Sve=s4(),bve=P7(),vve=GW(),Rve=z1(),Nve=us(),Tve=$1(),Dve=i$(),kve=a$(),Pve=A$(),_ve=d$(),Mve=u$(),Ove=A4(),xve=y$(),Lve=I$(),Fve=w$(),Uve=b$(),qve=k$();M$.exports={parse:sve,valid:ave,clean:ove,inc:Ave,diff:lve,major:cve,minor:dve,patch:pve,prerelease:uve,compare:mve,rcompare:hve,compareLoose:fve,compareBuild:gve,sort:Eve,rsort:yve,gt:Cve,lt:Ive,eq:Bve,neq:Qve,gte:wve,lte:Sve,cmp:bve,coerce:vve,Comparator:Rve,Range:Nve,satisfies:Tve,toComparators:Dve,maxSatisfying:kve,minSatisfying:Pve,minVersion:_ve,validRange:Mve,outside:Ove,gtr:xve,ltr:Lve,intersects:Fve,simplifyRange:Uve,subset:qve,SemVer:ive,re:H7.re,src:H7.src,tokens:H7.t,SEMVER_SPEC_VERSION:P$.SEMVER_SPEC_VERSION,RELEASE_TYPES:P$.RELEASE_TYPES,compareIdentifiers:_$.compareIdentifiers,rcompareIdentifiers:_$.rcompareIdentifiers}});var x$=g((fXe,O$)=>{var Vve=l4();O$.exports=Vve.satisfies(process.version,">=15.7.0")});var F$=g((gXe,L$)=>{var Gve=l4();L$.exports=Gve.satisfies(process.version,">=16.9.0")});var Y7=g((EXe,U$)=>{var Hve=x$(),Yve=F$(),Jve={ec:["ES256","ES384","ES512"],rsa:["RS256","PS256","RS384","PS384","RS512","PS512"],"rsa-pss":["PS256","PS384","PS512"]},jve={ES256:"prime256v1",ES384:"secp384r1",ES512:"secp521r1"};U$.exports=function(t,e){if(!t||!e)return;let r=e.asymmetricKeyType;if(!r)return;let n=Jve[r];if(!n)throw new Error(`Unknown key type "${r}".`);if(!n.includes(t))throw new Error(`"alg" parameter for "${r}" key type must be one of: ${n.join(", ")}.`);if(Hve)switch(r){case"ec":let i=e.asymmetricKeyDetails.namedCurve,s=jve[t];if(i!==s)throw new Error(`"alg" parameter "${t}" requires curve "${s}".`);break;case"rsa-pss":if(Yve){let a=parseInt(t.slice(-3),10),{hashAlgorithm:o,mgf1HashAlgorithm:A,saltLength:l}=e.asymmetricKeyDetails;if(o!==`sha${a}`||A!==o)throw new Error(`Invalid key for this operation, its RSA-PSS parameters do not meet the requirements of "alg" ${t}.`);if(l!==void 0&&l>a>>3)throw new Error(`Invalid key for this operation, its RSA-PSS parameter saltLength does not meet the requirements of "alg" ${t}.`)}break}}});var J7=g((yXe,q$)=>{var zve=l4();q$.exports=zve.satisfies(process.version,"^6.12.0 || >=8.0.0")});var H$=g((CXe,G$)=>{var yt=H1(),Wve=w7(),V$=S7(),$ve=Q7(),Kve=b7(),Xve=Y7(),Zve=J7(),e7e=WI(),{KeyObject:t7e,createSecretKey:r7e,createPublicKey:n7e}=require("crypto"),j7=["RS256","RS384","RS512"],i7e=["ES256","ES384","ES512"],z7=["RS256","RS384","RS512"],s7e=["HS256","HS384","HS512"];Zve&&(j7.splice(j7.length,0,"PS256","PS384","PS512"),z7.splice(z7.length,0,"PS256","PS384","PS512"));G$.exports=function(t,e,r,n){typeof r=="function"&&!n&&(n=r,r={}),r||(r={}),r=Object.assign({},r);let i;if(n?i=n:i=function(c,d){if(c)throw c;return d},r.clockTimestamp&&typeof r.clockTimestamp!="number")return i(new yt("clockTimestamp must be a number"));if(r.nonce!==void 0&&(typeof r.nonce!="string"||r.nonce.trim()===""))return i(new yt("nonce must be a non-empty string"));if(r.allowInvalidAsymmetricKeyTypes!==void 0&&typeof r.allowInvalidAsymmetricKeyTypes!="boolean")return i(new yt("allowInvalidAsymmetricKeyTypes must be a boolean"));let s=r.clockTimestamp||Math.floor(Date.now()/1e3);if(!t)return i(new yt("jwt must be provided"));if(typeof t!="string")return i(new yt("jwt must be a string"));let a=t.split(".");if(a.length!==3)return i(new yt("jwt malformed"));let o;try{o=$ve(t,{complete:!0})}catch(c){return i(c)}if(!o)return i(new yt("invalid token"));let A=o.header,l;if(typeof e=="function"){if(!n)return i(new yt("verify must be called asynchronous if secret or public key is provided as a callback"));l=e}else l=function(c,d){return d(null,e)};return l(A,function(c,d){if(c)return i(new yt("error in secret or public key callback: "+c.message));let p=a[2].trim()!=="";if(!p&&d)return i(new yt("jwt signature is required"));if(p&&!d)return i(new yt("secret or public key must be provided"));if(!p&&!r.algorithms)return i(new yt('please specify "none" in "algorithms" to verify unsigned tokens'));if(d!=null&&!(d instanceof t7e))try{d=n7e(d)}catch{try{d=r7e(typeof d=="string"?Buffer.from(d):d)}catch{return i(new yt("secretOrPublicKey is not valid key material"))}}if(r.algorithms||(d.type==="secret"?r.algorithms=s7e:["rsa","rsa-pss"].includes(d.asymmetricKeyType)?r.algorithms=z7:d.asymmetricKeyType==="ec"?r.algorithms=i7e:r.algorithms=j7),r.algorithms.indexOf(o.header.alg)===-1)return i(new yt("invalid algorithm"));if(A.alg.startsWith("HS")&&d.type!=="secret")return i(new yt(`secretOrPublicKey must be a symmetric key when using ${A.alg}`));if(/^(?:RS|PS|ES)/.test(A.alg)&&d.type!=="public")return i(new yt(`secretOrPublicKey must be an asymmetric key when using ${A.alg}`));if(!r.allowInvalidAsymmetricKeyTypes)try{Xve(A.alg,d)}catch(h){return i(h)}let u;try{u=e7e.verify(t,o.header.alg,d)}catch(h){return i(h)}if(!u)return i(new yt("invalid signature"));let m=o.payload;if(typeof m.nbf<"u"&&!r.ignoreNotBefore){if(typeof m.nbf!="number")return i(new yt("invalid nbf value"));if(m.nbf>s+(r.clockTolerance||0))return i(new Wve("jwt not active",new Date(m.nbf*1e3)))}if(typeof m.exp<"u"&&!r.ignoreExpiration){if(typeof m.exp!="number")return i(new yt("invalid exp value"));if(s>=m.exp+(r.clockTolerance||0))return i(new V$("jwt expired",new Date(m.exp*1e3)))}if(r.audience){let h=Array.isArray(r.audience)?r.audience:[r.audience];if(!(Array.isArray(m.aud)?m.aud:[m.aud]).some(function(y){return h.some(function(B){return B instanceof RegExp?B.test(y):B===y})}))return i(new yt("jwt audience invalid. expected: "+h.join(" or ")))}if(r.issuer&&(typeof r.issuer=="string"&&m.iss!==r.issuer||Array.isArray(r.issuer)&&r.issuer.indexOf(m.iss)===-1))return i(new yt("jwt issuer invalid. expected: "+r.issuer));if(r.subject&&m.sub!==r.subject)return i(new yt("jwt subject invalid. expected: "+r.subject));if(r.jwtid&&m.jti!==r.jwtid)return i(new yt("jwt jwtid invalid. expected: "+r.jwtid));if(r.nonce&&m.nonce!==r.nonce)return i(new yt("jwt nonce invalid. expected: "+r.nonce));if(r.maxAge){if(typeof m.iat!="number")return i(new yt("iat required when maxAge is specified"));let h=Kve(r.maxAge,m.iat);if(typeof h>"u")return i(new yt('"maxAge" should be a number of seconds or string representing a timespan eg: "1d", "20h", 60'));if(s>=h+(r.clockTolerance||0))return i(new V$("maxAge exceeded",new Date(h*1e3)))}if(r.complete===!0){let h=o.signature;return i(null,{header:A,payload:m,signature:h})}return i(null,m)})}});var $$=g((IXe,W$)=>{var Y$=1/0,j$=9007199254740991,a7e=17976931348623157e292,J$=NaN,o7e="[object Arguments]",A7e="[object Function]",l7e="[object GeneratorFunction]",c7e="[object String]",d7e="[object Symbol]",p7e=/^\s+|\s+$/g,u7e=/^[-+]0x[0-9a-f]+$/i,m7e=/^0b[01]+$/i,h7e=/^0o[0-7]+$/i,f7e=/^(?:0|[1-9]\d*)$/,g7e=parseInt;function E7e(t,e){for(var r=-1,n=t?t.length:0,i=Array(n);++r-1&&t%1==0&&t-1:!!i&&C7e(t,e,r)>-1}function P7e(t){return _7e(t)&&$7.call(t,"callee")&&(!S7e.call(t,"callee")||d4.call(t)==o7e)}var z$=Array.isArray;function K7(t){return t!=null&&O7e(t.length)&&!M7e(t)}function _7e(t){return X7(t)&&K7(t)}function M7e(t){var e=W7(t)?d4.call(t):"";return e==A7e||e==l7e}function O7e(t){return typeof t=="number"&&t>-1&&t%1==0&&t<=j$}function W7(t){var e=typeof t;return!!t&&(e=="object"||e=="function")}function X7(t){return!!t&&typeof t=="object"}function x7e(t){return typeof t=="string"||!z$(t)&&X7(t)&&d4.call(t)==c7e}function L7e(t){return typeof t=="symbol"||X7(t)&&d4.call(t)==d7e}function F7e(t){if(!t)return t===0?t:0;if(t=q7e(t),t===Y$||t===-Y$){var e=t<0?-1:1;return e*a7e}return t===t?t:0}function U7e(t){var e=F7e(t),r=e%1;return e===e?r?e-r:e:0}function q7e(t){if(typeof t=="number")return t;if(L7e(t))return J$;if(W7(t)){var e=typeof t.valueOf=="function"?t.valueOf():t;t=W7(e)?e+"":e}if(typeof t!="string")return t===0?t:+t;t=t.replace(p7e,"");var r=m7e.test(t);return r||h7e.test(t)?g7e(t.slice(2),r?2:8):u7e.test(t)?J$:+t}function V7e(t){return K7(t)?R7e(t):N7e(t)}function G7e(t){return t?Q7e(t,V7e(t)):[]}W$.exports=k7e});var X$=g((BXe,K$)=>{var H7e="[object Boolean]",Y7e=Object.prototype,J7e=Y7e.toString;function j7e(t){return t===!0||t===!1||z7e(t)&&J7e.call(t)==H7e}function z7e(t){return!!t&&typeof t=="object"}K$.exports=j7e});var nK=g((QXe,rK)=>{var Z$=1/0,W7e=17976931348623157e292,eK=NaN,$7e="[object Symbol]",K7e=/^\s+|\s+$/g,X7e=/^[-+]0x[0-9a-f]+$/i,Z7e=/^0b[01]+$/i,eRe=/^0o[0-7]+$/i,tRe=parseInt,rRe=Object.prototype,nRe=rRe.toString;function iRe(t){return typeof t=="number"&&t==ARe(t)}function tK(t){var e=typeof t;return!!t&&(e=="object"||e=="function")}function sRe(t){return!!t&&typeof t=="object"}function aRe(t){return typeof t=="symbol"||sRe(t)&&nRe.call(t)==$7e}function oRe(t){if(!t)return t===0?t:0;if(t=lRe(t),t===Z$||t===-Z$){var e=t<0?-1:1;return e*W7e}return t===t?t:0}function ARe(t){var e=oRe(t),r=e%1;return e===e?r?e-r:e:0}function lRe(t){if(typeof t=="number")return t;if(aRe(t))return eK;if(tK(t)){var e=typeof t.valueOf=="function"?t.valueOf():t;t=tK(e)?e+"":e}if(typeof t!="string")return t===0?t:+t;t=t.replace(K7e,"");var r=Z7e.test(t);return r||eRe.test(t)?tRe(t.slice(2),r?2:8):X7e.test(t)?eK:+t}rK.exports=iRe});var sK=g((wXe,iK)=>{var cRe="[object Number]",dRe=Object.prototype,pRe=dRe.toString;function uRe(t){return!!t&&typeof t=="object"}function mRe(t){return typeof t=="number"||uRe(t)&&pRe.call(t)==cRe}iK.exports=mRe});var lK=g((SXe,AK)=>{var hRe="[object Object]";function fRe(t){var e=!1;if(t!=null&&typeof t.toString!="function")try{e=!!(t+"")}catch{}return e}function gRe(t,e){return function(r){return t(e(r))}}var ERe=Function.prototype,aK=Object.prototype,oK=ERe.toString,yRe=aK.hasOwnProperty,CRe=oK.call(Object),IRe=aK.toString,BRe=gRe(Object.getPrototypeOf,Object);function QRe(t){return!!t&&typeof t=="object"}function wRe(t){if(!QRe(t)||IRe.call(t)!=hRe||fRe(t))return!1;var e=BRe(t);if(e===null)return!0;var r=yRe.call(e,"constructor")&&e.constructor;return typeof r=="function"&&r instanceof r&&oK.call(r)==CRe}AK.exports=wRe});var dK=g((bXe,cK)=>{var SRe="[object String]",bRe=Object.prototype,vRe=bRe.toString,RRe=Array.isArray;function NRe(t){return!!t&&typeof t=="object"}function TRe(t){return typeof t=="string"||!RRe(t)&&NRe(t)&&vRe.call(t)==SRe}cK.exports=TRe});var fK=g((vXe,hK)=>{var DRe="Expected a function",pK=1/0,kRe=17976931348623157e292,uK=NaN,PRe="[object Symbol]",_Re=/^\s+|\s+$/g,MRe=/^[-+]0x[0-9a-f]+$/i,ORe=/^0b[01]+$/i,xRe=/^0o[0-7]+$/i,LRe=parseInt,FRe=Object.prototype,URe=FRe.toString;function qRe(t,e){var r;if(typeof e!="function")throw new TypeError(DRe);return t=JRe(t),function(){return--t>0&&(r=e.apply(this,arguments)),t<=1&&(e=void 0),r}}function VRe(t){return qRe(2,t)}function mK(t){var e=typeof t;return!!t&&(e=="object"||e=="function")}function GRe(t){return!!t&&typeof t=="object"}function HRe(t){return typeof t=="symbol"||GRe(t)&&URe.call(t)==PRe}function YRe(t){if(!t)return t===0?t:0;if(t=jRe(t),t===pK||t===-pK){var e=t<0?-1:1;return e*kRe}return t===t?t:0}function JRe(t){var e=YRe(t),r=e%1;return e===e?r?e-r:e:0}function jRe(t){if(typeof t=="number")return t;if(HRe(t))return uK;if(mK(t)){var e=typeof t.valueOf=="function"?t.valueOf():t;t=mK(e)?e+"":e}if(typeof t!="string")return t===0?t:+t;t=t.replace(_Re,"");var r=ORe.test(t);return r||xRe.test(t)?LRe(t.slice(2),r?2:8):MRe.test(t)?uK:+t}hK.exports=VRe});var SK=g((RXe,wK)=>{var gK=b7(),zRe=J7(),WRe=Y7(),EK=WI(),$Re=$$(),p4=X$(),yK=nK(),Z7=sK(),IK=lK(),el=dK(),KRe=fK(),{KeyObject:XRe,createSecretKey:ZRe,createPrivateKey:eNe}=require("crypto"),BK=["RS256","RS384","RS512","ES256","ES384","ES512","HS256","HS384","HS512","none"];zRe&&BK.splice(3,0,"PS256","PS384","PS512");var tNe={expiresIn:{isValid:function(t){return yK(t)||el(t)&&t},message:'"expiresIn" should be a number of seconds or string representing a timespan'},notBefore:{isValid:function(t){return yK(t)||el(t)&&t},message:'"notBefore" should be a number of seconds or string representing a timespan'},audience:{isValid:function(t){return el(t)||Array.isArray(t)},message:'"audience" must be a string or array'},algorithm:{isValid:$Re.bind(null,BK),message:'"algorithm" must be a valid string enum value'},header:{isValid:IK,message:'"header" must be an object'},encoding:{isValid:el,message:'"encoding" must be a string'},issuer:{isValid:el,message:'"issuer" must be a string'},subject:{isValid:el,message:'"subject" must be a string'},jwtid:{isValid:el,message:'"jwtid" must be a string'},noTimestamp:{isValid:p4,message:'"noTimestamp" must be a boolean'},keyid:{isValid:el,message:'"keyid" must be a string'},mutatePayload:{isValid:p4,message:'"mutatePayload" must be a boolean'},allowInsecureKeySizes:{isValid:p4,message:'"allowInsecureKeySizes" must be a boolean'},allowInvalidAsymmetricKeyTypes:{isValid:p4,message:'"allowInvalidAsymmetricKeyTypes" must be a boolean'}},rNe={iat:{isValid:Z7,message:'"iat" should be a number of seconds'},exp:{isValid:Z7,message:'"exp" should be a number of seconds'},nbf:{isValid:Z7,message:'"nbf" should be a number of seconds'}};function QK(t,e,r,n){if(!IK(r))throw new Error('Expected "'+n+'" to be a plain object.');Object.keys(r).forEach(function(i){let s=t[i];if(!s){if(!e)throw new Error('"'+i+'" is not allowed in "'+n+'"');return}if(!s.isValid(r[i]))throw new Error(s.message)})}function nNe(t){return QK(tNe,!1,t,"options")}function iNe(t){return QK(rNe,!0,t,"payload")}var CK={audience:"aud",issuer:"iss",subject:"sub",jwtid:"jti"},sNe=["expiresIn","notBefore","noTimestamp","audience","issuer","subject","jwtid"];wK.exports=function(t,e,r,n){typeof r=="function"?(n=r,r={}):r=r||{};let i=typeof t=="object"&&!Buffer.isBuffer(t),s=Object.assign({alg:r.algorithm||"HS256",typ:i?"JWT":void 0,kid:r.keyid},r.header);function a(l){if(n)return n(l);throw l}if(!e&&r.algorithm!=="none")return a(new Error("secretOrPrivateKey must have a value"));if(e!=null&&!(e instanceof XRe))try{e=eNe(e)}catch{try{e=ZRe(typeof e=="string"?Buffer.from(e):e)}catch{return a(new Error("secretOrPrivateKey is not valid key material"))}}if(s.alg.startsWith("HS")&&e.type!=="secret")return a(new Error(`secretOrPrivateKey must be a symmetric key when using ${s.alg}`));if(/^(?:RS|PS|ES)/.test(s.alg)){if(e.type!=="private")return a(new Error(`secretOrPrivateKey must be an asymmetric key when using ${s.alg}`));if(!r.allowInsecureKeySizes&&!s.alg.startsWith("ES")&&e.asymmetricKeyDetails!==void 0&&e.asymmetricKeyDetails.modulusLength<2048)return a(new Error(`secretOrPrivateKey has a minimum key size of 2048 bits for ${s.alg}`))}if(typeof t>"u")return a(new Error("payload is required"));if(i){try{iNe(t)}catch(l){return a(l)}r.mutatePayload||(t=Object.assign({},t))}else{let l=sNe.filter(function(c){return typeof r[c]<"u"});if(l.length>0)return a(new Error("invalid "+l.join(",")+" option for "+typeof t+" payload"))}if(typeof t.exp<"u"&&typeof r.expiresIn<"u")return a(new Error('Bad "options.expiresIn" option the payload already has an "exp" property.'));if(typeof t.nbf<"u"&&typeof r.notBefore<"u")return a(new Error('Bad "options.notBefore" option the payload already has an "nbf" property.'));try{nNe(r)}catch(l){return a(l)}if(!r.allowInvalidAsymmetricKeyTypes)try{WRe(s.alg,e)}catch(l){return a(l)}let o=t.iat||Math.floor(Date.now()/1e3);if(r.noTimestamp?delete t.iat:i&&(t.iat=o),typeof r.notBefore<"u"){try{t.nbf=gK(r.notBefore,o)}catch(l){return a(l)}if(typeof t.nbf>"u")return a(new Error('"notBefore" should be a number of seconds or string representing a timespan eg: "1d", "20h", 60'))}if(typeof r.expiresIn<"u"&&typeof t=="object"){try{t.exp=gK(r.expiresIn,o)}catch(l){return a(l)}if(typeof t.exp>"u")return a(new Error('"expiresIn" should be a number of seconds or string representing a timespan eg: "1d", "20h", 60'))}Object.keys(CK).forEach(function(l){let c=CK[l];if(typeof r[l]<"u"){if(typeof t[c]<"u")return a(new Error('Bad "options.'+l+'" option. The payload already has an "'+c+'" property.'));t[c]=r[l]}});let A=r.encoding||"utf8";if(typeof n=="function")n=n&&KRe(n),EK.createSign({header:s,privateKey:e,payload:t,encoding:A}).once("error",n).once("done",function(l){if(!r.allowInsecureKeySizes&&/^(?:RS|PS)/.test(s.alg)&&l.length<256)return n(new Error(`secretOrPrivateKey has a minimum key size of 2048 bits for ${s.alg}`));n(null,l)});else{let l=EK.sign({header:s,payload:t,secret:e,encoding:A});if(!r.allowInsecureKeySizes&&/^(?:RS|PS)/.test(s.alg)&&l.length<256)throw new Error(`secretOrPrivateKey has a minimum key size of 2048 bits for ${s.alg}`);return l}}});var vK=g((NXe,bK)=>{bK.exports={decode:Q7(),verify:H$(),sign:SK(),JsonWebTokenError:H1(),NotBeforeError:w7(),TokenExpiredError:S7()}});function RNe(){try{return aR.default.statSync("/.dockerenv"),!0}catch{return!1}}function NNe(){try{return aR.default.readFileSync("/proc/self/cgroup","utf8").includes("docker")}catch{return!1}}function oR(){return sR===void 0&&(sR=RNe()||NNe()),sR}var aR,sR,UK=fs(()=>{aR=Ce(require("node:fs"),1)});function am(){return AR===void 0&&(AR=TNe()||oR()),AR}var qK,AR,TNe,lR=fs(()=>{qK=Ce(require("node:fs"),1);UK();TNe=()=>{try{return qK.default.statSync("/run/.containerenv"),!0}catch{return!1}}});var cR,GK,HK,VK,og,YK=fs(()=>{cR=Ce(require("node:process"),1),GK=Ce(require("node:os"),1),HK=Ce(require("node:fs"),1);lR();VK=()=>{if(cR.default.platform!=="linux")return!1;if(GK.default.release().toLowerCase().includes("microsoft"))return!am();try{return HK.default.readFileSync("/proc/version","utf8").toLowerCase().includes("microsoft")?!am():!1}catch{return!1}},og=cR.default.env.__IS_WSL_TEST__?VK:VK()});function Xc(t,e,r){let n=i=>Object.defineProperty(t,e,{value:i,enumerable:!0,writable:!0});return Object.defineProperty(t,e,{configurable:!0,enumerable:!0,get(){let i=r();return n(i),i},set(i){n(i)}}),t}var JK=fs(()=>{});async function dR(){if(zK.default.platform!=="darwin")throw new Error("macOS only");let{stdout:t}=await DNe("defaults",["read","com.apple.LaunchServices/com.apple.launchservices.secure","LSHandlers"]);return/LSHandlerRoleAll = "(?!-)(?[^"]+?)";\s+?LSHandlerURLScheme = (?:http|https);/.exec(t)?.groups.id??"com.apple.Safari"}var jK,zK,WK,DNe,$K=fs(()=>{jK=require("node:util"),zK=Ce(require("node:process"),1),WK=require("node:child_process"),DNe=(0,jK.promisify)(WK.execFile)});async function ZK(t,{humanReadableOutput:e=!0}={}){if(KK.default.platform!=="darwin")throw new Error("macOS only");let r=e?[]:["-ss"],{stdout:n}=await kNe("osascript",["-e",t,r]);return n.trim()}var KK,XK,pR,kNe,eX=fs(()=>{KK=Ce(require("node:process"),1),XK=require("node:util"),pR=require("node:child_process"),kNe=(0,XK.promisify)(pR.execFile)});async function uR(t){return ZK(`tell application "Finder" to set app_path to application file id "${t}" as string -tell application "System Events" to get value of property list item "CFBundleName" of property list file (app_path & ":Contents:Info.plist")`)}var tX=fs(()=>{eX()});async function mR(t=PNe){let{stdout:e}=await t("reg",["QUERY"," HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\Shell\\Associations\\UrlAssociations\\http\\UserChoice","/v","ProgId"]),r=/ProgId\s*REG_SZ\s*(?\S+)/.exec(e);if(!r)throw new Q4(`Cannot find Windows browser in stdout: ${JSON.stringify(e)}`);let{id:n}=r.groups,i=_Ne[n];if(!i)throw new Q4(`Unknown browser ID: ${n}`);return i}var rX,nX,PNe,_Ne,Q4,iX=fs(()=>{rX=require("node:util"),nX=require("node:child_process"),PNe=(0,rX.promisify)(nX.execFile),_Ne={AppXq0fevzme2pys62n3e0fbqa7peapykr8v:{name:"Edge",id:"com.microsoft.edge.old"},MSEdgeDHTML:{name:"Edge",id:"com.microsoft.edge"},MSEdgeHTM:{name:"Edge",id:"com.microsoft.edge"},"IE.HTTP":{name:"Internet Explorer",id:"com.microsoft.ie"},FirefoxURL:{name:"Firefox",id:"org.mozilla.firefox"},ChromeHTML:{name:"Chrome",id:"com.google.chrome"},BraveHTML:{name:"Brave",id:"com.brave.Browser"},BraveBHTML:{name:"Brave Beta",id:"com.brave.Browser.beta"},BraveSSHTM:{name:"Brave Nightly",id:"com.brave.Browser.nightly"}},Q4=class extends Error{}});async function hR(){if(w4.default.platform==="darwin"){let t=await dR();return{name:await uR(t),id:t}}if(w4.default.platform==="linux"){let{stdout:t}=await MNe("xdg-mime",["query","default","x-scheme-handler/http"]),e=t.trim();return{name:ONe(e.replace(/.desktop$/,"").replace("-"," ")),id:e}}if(w4.default.platform==="win32")return mR();throw new Error("Only macOS, Linux, and Windows are supported")}var sX,w4,aX,MNe,ONe,oX=fs(()=>{sX=require("node:util"),w4=Ce(require("node:process"),1),aX=require("node:child_process");$K();tX();iX();MNe=(0,sX.promisify)(aX.execFile),ONe=t=>t.toLowerCase().replaceAll(/(?:^|\s|-)\S/g,e=>e.toUpperCase())});var hX={};Ur(hX,{apps:()=>ed,default:()=>UNe,openApp:()=>FNe});function dX(t){if(typeof t=="string"||Array.isArray(t))return t;let{[lX]:e}=t;if(!e)throw new Error(`${lX} is not supported`);return e}function ER({[om]:t},{wsl:e}){if(e&&og)return dX(e);if(!t)throw new Error(`${om} is not supported`);return dX(t)}var Ag,pX,gR,uX,mX,Zc,qNe,fR,AX,om,lX,xNe,cX,lg,LNe,FNe,ed,UNe,fX=fs(()=>{Ag=Ce(require("node:process"),1),pX=require("node:buffer"),gR=Ce(require("node:path"),1),uX=require("node:url"),mX=Ce(require("node:child_process"),1),Zc=Ce(require("node:fs/promises"),1);YK();JK();oX();lR();qNe={},fR=gR.default.dirname((0,uX.fileURLToPath)(qNe.url)),AX=gR.default.join(fR,"xdg-open"),{platform:om,arch:lX}=Ag.default,xNe=(()=>{let t="/mnt/",e;return async function(){if(e)return e;let r="/etc/wsl.conf",n=!1;try{await Zc.default.access(r,Zc.constants.F_OK),n=!0}catch{}if(!n)return t;let i=await Zc.default.readFile(r,{encoding:"utf8"}),s=/(?.*)/g.exec(i);return s?(e=s.groups.mountPoint.trim(),e=e.endsWith("/")?e:`${e}/`,e):t}})(),cX=async(t,e)=>{let r;for(let n of t)try{return await e(n)}catch(i){r=i}throw r},lg=async t=>{if(t={wait:!1,background:!1,newInstance:!1,allowNonzeroExitCode:!1,...t},Array.isArray(t.app))return cX(t.app,o=>lg({...t,app:o}));let{name:e,arguments:r=[]}=t.app??{};if(r=[...r],Array.isArray(e))return cX(e,o=>lg({...t,app:{name:o,arguments:r}}));if(e==="browser"||e==="browserPrivate"){let o={"com.google.chrome":"chrome","google-chrome.desktop":"chrome","org.mozilla.firefox":"firefox","firefox.desktop":"firefox","com.microsoft.msedge":"edge","com.microsoft.edge":"edge","microsoft-edge.desktop":"edge"},A={chrome:"--incognito",firefox:"--private-window",edge:"--inPrivate"},l=await hR();if(l.id in o){let c=o[l.id];return e==="browserPrivate"&&r.push(A[c]),lg({...t,app:{name:ed[c],arguments:r}})}throw new Error(`${l.name} is not supported as a default browser`)}let n,i=[],s={};if(om==="darwin")n="open",t.wait&&i.push("--wait-apps"),t.background&&i.push("--background"),t.newInstance&&i.push("--new"),e&&i.push("-a",e);else if(om==="win32"||og&&!am()&&!e){let o=await xNe();n=og?`${o}c/Windows/System32/WindowsPowerShell/v1.0/powershell.exe`:`${Ag.default.env.SYSTEMROOT||Ag.default.env.windir||"C:\\Windows"}\\System32\\WindowsPowerShell\\v1.0\\powershell`,i.push("-NoProfile","-NonInteractive","-ExecutionPolicy","Bypass","-EncodedCommand"),og||(s.windowsVerbatimArguments=!0);let A=["Start"];t.wait&&A.push("-Wait"),e?(A.push(`"\`"${e}\`""`),t.target&&r.push(t.target)):t.target&&A.push(`"${t.target}"`),r.length>0&&(r=r.map(l=>`"\`"${l}\`""`),A.push("-ArgumentList",r.join(","))),t.target=pX.Buffer.from(A.join(" "),"utf16le").toString("base64")}else{if(e)n=e;else{let o=!fR||fR==="/",A=!1;try{await Zc.default.access(AX,Zc.constants.X_OK),A=!0}catch{}n=Ag.default.versions.electron??(om==="android"||o||!A)?"xdg-open":AX}r.length>0&&i.push(...r),t.wait||(s.stdio="ignore",s.detached=!0)}om==="darwin"&&r.length>0&&i.push("--args",...r),t.target&&i.push(t.target);let a=mX.default.spawn(n,i,s);return t.wait?new Promise((o,A)=>{a.once("error",A),a.once("close",l=>{if(!t.allowNonzeroExitCode&&l>0){A(new Error(`Exited with code ${l}`));return}o(a)})}):(a.unref(),a)},LNe=(t,e)=>{if(typeof t!="string")throw new TypeError("Expected a `target`");return lg({...e,target:t})},FNe=(t,e)=>{if(typeof t!="string"&&!Array.isArray(t))throw new TypeError("Expected a valid `name`");let{arguments:r=[]}=e??{};if(r!=null&&!Array.isArray(r))throw new TypeError("Expected `appArguments` as Array type");return lg({...e,app:{name:t,arguments:r}})};ed={};Xc(ed,"chrome",()=>ER({darwin:"google chrome",win32:"chrome",linux:["google-chrome","google-chrome-stable","chromium"]},{wsl:{ia32:"/mnt/c/Program Files (x86)/Google/Chrome/Application/chrome.exe",x64:["/mnt/c/Program Files/Google/Chrome/Application/chrome.exe","/mnt/c/Program Files (x86)/Google/Chrome/Application/chrome.exe"]}}));Xc(ed,"firefox",()=>ER({darwin:"firefox",win32:"C:\\Program Files\\Mozilla Firefox\\firefox.exe",linux:"firefox"},{wsl:"/mnt/c/Program Files/Mozilla Firefox/firefox.exe"}));Xc(ed,"edge",()=>ER({darwin:"microsoft edge",win32:"msedge",linux:["microsoft-edge","microsoft-edge-dev"]},{wsl:"/mnt/c/Program Files (x86)/Microsoft/Edge/Application/msedge.exe"}));Xc(ed,"browser",()=>"browser");Xc(ed,"browserPrivate",()=>"browserPrivate");UNe=LNe});var ZX=Ce(Rl());var JU=Ce(Rl()),jU=Ce(aF());var ef=Ce(require("fs/promises")),ao=Ce(require("path")),UU=Ce(require("os")),u5=Ce(LU());var Tp=Ce(Rl());var Sge={"\x1B[0m":"Reset","\x1B[31m":"Red","\x1B[32m":"Green","\x1B[33m":"Yellow","\x1B[34m":"Blue","\x1B[35m":"Magenta","\x1B[36m":"Cyan","\x1B[37m":"White"};function c5(t,e){return t.split(` -`).map(r=>`${e}${r}\x1B[0m`).join(` -`)}var d5=t=>Tp.info(t),BA=t=>d5(c5(t,"\x1B[34m")),bge=t=>Tp.warning(t),Y2=t=>bge(c5(t,"\x1B[33m")),vge=t=>Tp.error(t),rs=t=>vge(c5(t,"\x1B[31m"));function FU(t,e){switch(t){case"off":return"";case"ansii":return e;case"debug":return`<${Sge[e].toUpperCase()}>`}return e}var H2=class{constructor(e){this.colorMode=e;this.colorStack=[];this.buffer=""}append(e,r){return r&&this.pushColor(r),this.buffer+=e,r&&this.popColor(),this}appendLine(e=""){return this.append(e+` -`)}withColorScope(e,r){this.pushColor(e),r(),this.popColor()}pushColor(e){this.colorStack.push(e),this.buffer+=FU(this.colorMode,e)}popColor(){this.colorStack.pop();let e=this.colorStack[this.colorStack.length-1]??"\x1B[0m";this.buffer+=FU(this.colorMode,e)}build(){return this.buffer}};async function qU(t){let e=await ef.mkdtemp(ao.join(UU.tmpdir(),"bicep-"));return await u5.Bicep.install(e,t)}async function Rge(t,e,r){let n=await qU(r),i=await GU(n,s=>s.compileParams({path:t,parameterOverrides:e??{}}));if(YU(i.diagnostics),!i.success)throw`Failed to compile Bicep parameters file: ${t}`;return{parameters:i.parameters,template:i.template,templateSpecId:i.templateSpecId}}async function Nge(t,e){let r=await qU(e),n=await GU(r,i=>i.compile({path:t}));if(YU(n.diagnostics),!n.success)throw`Failed to compile Bicep file: ${t}`;return{template:n.contents}}async function Tge(t){let{parametersFile:e,parameters:r}=t,n=e?JSON.parse(await ef.readFile(e,"utf8")):{parameters:{}};for(let[i,s]of Object.entries(r??{}))n.parameters[i]={value:s};return JSON.stringify(n)}async function VU(t){let{parametersFile:e,templateFile:r}=t;if(e&&ao.extname(e).toLowerCase()===".bicepparam")return p5(await Rge(e,t.parameters,t.bicepVersion));if(e&&ao.extname(e).toLowerCase()!==".json")throw new Error(`Unsupported parameters file type: ${e}`);let n=await Tge(t);if(r&&ao.extname(r).toLowerCase()===".bicep"){let{template:s}=await Nge(r,t.bicepVersion);return p5({template:s,parameters:n})}if(r&&ao.extname(r).toLowerCase()!==".json")throw new Error(`Unsupported template file type: ${r}`);if(!r)throw new Error("Template file is required");let i=await ef.readFile(r,"utf8");return p5({template:i,parameters:n})}function p5(t){let{parameters:e,template:r,templateSpecId:n}=t,i=e?JSON.parse(e):void 0,s=r?JSON.parse(r):void 0;return{parametersContents:i,templateContents:s,templateSpecId:n}}async function GU(t,e){let r=await u5.Bicep.initialize(t);try{let n=await r.version();return BA(`Installed Bicep version ${n} to ${t}`),await e(r)}finally{r.dispose()}}function HU(t){return ao.resolve(t)}function YU(t){for(let e of t){let r=`${e.source}(${e.range.start.line+1},${e.range.start.char+1}) : ${e.level} ${e.code}: ${e.message}`;e.level==="Error"&&rs(r),e.level==="Warning"&&Y2(r),e.level==="Info"&&BA(r)}}function oo(t){return J2(t,void 0,!0)}function Ds(t){return J2(t,void 0,!1)}function QA(t,e){return J2(t,e,!0)}function tf(t,e){return J2(t,e,!1)}function m5(t){let e=Ds(t);if(e)return HU(e)}function h5(t){let e=Ds(t);if(!e)return!1;if(e.toLowerCase()==="true")return!0;if(e.toLowerCase()==="false")return!1;throw new Error(`Action input '${t}' must be a boolean value`)}function rf(t){let e=Ds(t);return e?Pge(e):void 0}function zU(t,e){let r=rf(t);if(!r)return;let n=e;for(let i of r)if(n.indexOf(i)===-1)throw new Error(`Action input '${t}' must be one of the following values: '${e.join("', '")}'`);return r}function f5(t){let e=Ds(t);if(!e)return;let r=Dge(e)??kge(e);if(typeof r!="object")throw new Error(`Action input '${t}' must be a valid JSON or YAML object`);return r}function WU(t){let e=f5(t);if(e)return Object.keys(e).forEach(r=>{if(typeof e[r]!="string")throw new Error(`Action input '${t}' must be a valid JSON or YAML object containing only string values`)}),e}function J2(t,e,r=!0){let n=JU.getInput(t)?.trim();if(!n){if(r)throw new Error(`Action input '${t}' is required but not provided`);return}if(e&&!e.includes(n))throw new Error(`Action input '${t}' must be one of the following values: '${e.join("', '")}'`);return n}function Dge(t){try{return JSON.parse(t)}catch{return}}function kge(t){try{return jU.parse(t)}catch{return}}function Pge(t){return t.split(",").map(e=>e.trim()).filter(e=>e.length>0)}function $U(){let t=QA("type",["deployment","deploymentStack"]),e=Ds("name"),r=Ds("location"),n=m5("template-file"),i=m5("parameters-file"),s=f5("parameters"),a=Ds("bicep-version"),o=Ds("description"),A=WU("tags"),l=rf("masked-outputs"),c=tf("environment",["azureCloud","azureChinaCloud","azureGermanCloud","azureUSGovernment"])??"azureCloud";switch(t){case"deployment":return{type:t,name:e,location:r,templateFile:n,parametersFile:i,parameters:s,bicepVersion:a,tags:A,maskedOutputs:l,environment:c,operation:QA("operation",["create","validate","whatIf"]),scope:_ge(),whatIf:{excludeChangeTypes:zU("what-if-exclude-change-types",["create","delete","modify","deploy","noChange","ignore","unsupported"])},validationLevel:tf("validation-level",["provider","template","providerNoRbac"])};case"deploymentStack":return{type:t,name:e,location:r,templateFile:n,parametersFile:i,parameters:s,bicepVersion:a,description:o,tags:A,maskedOutputs:l,environment:c,operation:QA("operation",["create","validate","delete"]),scope:Mge(),actionOnUnManage:{resources:QA("action-on-unmanage-resources",["delete","detach"]),resourceGroups:tf("action-on-unmanage-resourcegroups",["delete","detach"]),managementGroups:tf("action-on-unmanage-managementgroups",["delete","detach"])},bypassStackOutOfSyncError:h5("bypass-stack-out-of-sync-error"),denySettings:{mode:QA("deny-settings-mode",["denyDelete","denyWriteAndDelete","none"]),excludedActions:rf("deny-settings-excluded-actions"),excludedPrincipals:rf("deny-settings-excluded-principals"),applyToChildScopes:h5("deny-settings-apply-to-child-scopes")}}}}function _ge(){let t=QA("scope",["tenant","managementGroup","subscription","resourceGroup"]),e=Ds("tenant-id");switch(t){case"tenant":return{type:t,tenantId:e};case"managementGroup":{let r=oo("management-group-id");return{type:t,tenantId:e,managementGroup:r}}case"subscription":{let r=oo("subscription-id");return{type:t,tenantId:e,subscriptionId:r}}case"resourceGroup":{let r=oo("subscription-id"),n=oo("resource-group-name");return{type:t,tenantId:e,subscriptionId:r,resourceGroup:n}}}}function Mge(){let t=QA("scope",["managementGroup","subscription","resourceGroup"]),e=Ds("tenant-id");switch(t){case"managementGroup":{let r=oo("management-group-id");return{type:t,tenantId:e,managementGroup:r}}case"subscription":{let r=oo("subscription-id");return{type:t,tenantId:e,subscriptionId:r}}case"resourceGroup":{let r=oo("subscription-id"),n=oo("resource-group-name");return{type:t,tenantId:e,subscriptionId:r,resourceGroup:n}}}}var Ma=Ce(Rl());var KU=new Set(["Deserialize","Serialize","Retry","Sign"]),g5=class t{constructor(e){var r;this._policies=[],this._policies=(r=e?.slice(0))!==null&&r!==void 0?r:[],this._orderedPolicies=void 0}addPolicy(e,r={}){if(r.phase&&r.afterPhase)throw new Error("Policies inside a phase cannot specify afterPhase.");if(r.phase&&!KU.has(r.phase))throw new Error(`Invalid phase name: ${r.phase}`);if(r.afterPhase&&!KU.has(r.afterPhase))throw new Error(`Invalid afterPhase name: ${r.afterPhase}`);this._policies.push({policy:e,options:r}),this._orderedPolicies=void 0}removePolicy(e){let r=[];return this._policies=this._policies.filter(n=>e.name&&n.policy.name===e.name||e.phase&&n.options.phase===e.phase?(r.push(n.policy),!1):!0),this._orderedPolicies=void 0,r}sendRequest(e,r){return this.getOrderedPolicies().reduceRight((s,a)=>o=>a.sendRequest(o,s),s=>e.sendRequest(s))(r)}getOrderedPolicies(){return this._orderedPolicies||(this._orderedPolicies=this.orderPolicies()),this._orderedPolicies}clone(){return new t(this._policies)}static create(){return new t}orderPolicies(){let e=[],r=new Map;function n(m){return{name:m,policies:new Set,hasRun:!1,hasAfterPolicies:!1}}let i=n("Serialize"),s=n("None"),a=n("Deserialize"),o=n("Retry"),A=n("Sign"),l=[i,s,a,o,A];function c(m){return m==="Retry"?o:m==="Serialize"?i:m==="Deserialize"?a:m==="Sign"?A:s}for(let m of this._policies){let h=m.policy,f=m.options,E=h.name;if(r.has(E))throw new Error("Duplicate policy names not allowed in pipeline");let y={policy:h,dependsOn:new Set,dependants:new Set};f.afterPhase&&(y.afterPhase=c(f.afterPhase),y.afterPhase.hasAfterPolicies=!0),r.set(E,y),c(f.phase).policies.add(y)}for(let m of this._policies){let{policy:h,options:f}=m,E=h.name,y=r.get(E);if(!y)throw new Error(`Missing node for policy ${E}`);if(f.afterPolicies)for(let B of f.afterPolicies){let Q=r.get(B);Q&&(y.dependsOn.add(Q),Q.dependants.add(y))}if(f.beforePolicies)for(let B of f.beforePolicies){let Q=r.get(B);Q&&(Q.dependsOn.add(y),y.dependants.add(Q))}}function d(m){m.hasRun=!0;for(let h of m.policies)if(!(h.afterPhase&&(!h.afterPhase.hasRun||h.afterPhase.policies.size))&&h.dependsOn.size===0){e.push(h.policy);for(let f of h.dependants)f.dependsOn.delete(h);r.delete(h.policy.name),m.policies.delete(h)}}function p(){for(let m of l){if(d(m),m.policies.size>0&&m!==s){s.hasRun||d(s);return}m.hasAfterPolicies&&d(s)}}let u=0;for(;r.size>0;){u++;let m=e.length;if(p(),e.length<=m&&u>1)throw new Error("Cannot satisfy policy dependencies due to requirements cycle.")}return e}};function j2(){return g5.create()}var XU=require("node:os"),ZU=Ce(require("node:util"),1),eq=Ce(require("node:process"),1);function tq(t,...e){eq.stderr.write(`${ZU.default.format(t,...e)}${XU.EOL}`)}var rq=typeof process<"u"&&process.env&&process.env.DEBUG||void 0,nq,E5=[],y5=[],z2=[];rq&&C5(rq);var iq=Object.assign(t=>sq(t),{enable:C5,enabled:I5,disable:Oge,log:tq});function C5(t){nq=t,E5=[],y5=[];let e=/\*/g,r=t.split(",").map(n=>n.trim().replace(e,".*?"));for(let n of r)n.startsWith("-")?y5.push(new RegExp(`^${n.substr(1)}$`)):E5.push(new RegExp(`^${n}$`));for(let n of z2)n.enabled=I5(n.namespace)}function I5(t){if(t.endsWith("*"))return!0;for(let e of y5)if(e.test(t))return!1;for(let e of E5)if(e.test(t))return!0;return!1}function Oge(){let t=nq||"";return C5(""),t}function sq(t){let e=Object.assign(r,{enabled:I5(t),destroy:xge,log:iq.log,namespace:t,extend:Lge});function r(...n){e.enabled&&(n.length>0&&(n[0]=`${t} ${n[0]}`),e.log(...n))}return z2.push(e),e}function xge(){let t=z2.indexOf(this);return t>=0?(z2.splice(t,1),!0):!1}function Lge(t){let e=sq(`${this.namespace}:${t}`);return e.log=this.log,e}var Dp=iq;var oq=new Set,W2=typeof process<"u"&&process.env&&process.env.AZURE_LOG_LEVEL||void 0,K2,B5=Dp("azure");B5.log=(...t)=>{Dp.log(...t)};var Q5=["verbose","info","warning","error"];W2&&(cq(W2)?Fge(W2):console.error(`AZURE_LOG_LEVEL set to unknown log level '${W2}'; logging is not enabled. Acceptable values: ${Q5.join(", ")}.`));function Fge(t){if(t&&!cq(t))throw new Error(`Unknown log level '${t}'. Acceptable values: ${Q5.join(",")}`);K2=t;let e=[];for(let r of oq)lq(r)&&e.push(r.namespace);Dp.enable(e.join(","))}function w5(){return K2}var aq={verbose:400,info:300,warning:200,error:100};function Aa(t){let e=B5.extend(t);return Aq(B5,e),{error:$2(e,"error"),warning:$2(e,"warning"),info:$2(e,"info"),verbose:$2(e,"verbose")}}function Aq(t,e){e.log=(...r)=>{t.log(...r)}}function $2(t,e){let r=Object.assign(t.extend(e),{level:e});if(Aq(t,r),lq(r)){let n=Dp.disable();Dp.enable(n+","+r.namespace)}return oq.add(r),r}function lq(t){return!!(K2&&aq[t.level]<=aq[K2])}function cq(t){return Q5.includes(t)}var Dr=Aa("core-rest-pipeline");var nf=class extends Error{constructor(e){super(e),this.name="AbortError"}};function S5(t,e){let{cleanupBeforeAbort:r,abortSignal:n,abortErrorMsg:i}=e??{};return new Promise((s,a)=>{function o(){a(new nf(i??"The operation was aborted."))}function A(){n?.removeEventListener("abort",l)}function l(){r?.(),A(),o()}if(n?.aborted)return o();try{t(c=>{A(),s(c)},c=>{A(),a(c)})}catch(c){a(c)}n?.addEventListener("abort",l)})}function b5(t,e){return t=Math.ceil(t),e=Math.floor(e),Math.floor(Math.random()*(e-t+1))+t}var Uge="The delay was aborted.";function v5(t,e){let r,{abortSignal:n,abortErrorMsg:i}=e??{};return S5(s=>{r=setTimeout(s,t)},{cleanupBeforeAbort:()=>clearTimeout(r),abortSignal:n,abortErrorMsg:i??Uge})}function X2(t,e){let r=e.retryDelayInMs*Math.pow(2,t),n=Math.min(e.maxRetryDelayInMs,r);return{retryAfterInMs:n/2+b5(0,n/2)}}function sf(t){return typeof t=="object"&&t!==null&&!Array.isArray(t)&&!(t instanceof RegExp)&&!(t instanceof Date)}function ql(t){if(sf(t)){let e=typeof t.name=="string",r=typeof t.message=="string";return e&&r}return!1}function kp(t){if(ql(t))return t.message;{let e;try{typeof t=="object"&&t?e=JSON.stringify(t):e=String(t)}catch{e="[unable to stringify input]"}return`Unknown error ${e}`}}var dq=require("crypto"),R5,qge=typeof((R5=globalThis?.crypto)===null||R5===void 0?void 0:R5.randomUUID)=="function"?globalThis.crypto.randomUUID.bind(globalThis.crypto):dq.randomUUID;function Pp(){return qge()}var N5,T5,D5,k5,Vge=typeof window<"u"&&typeof window.document<"u",Gge=typeof self=="object"&&typeof self?.importScripts=="function"&&(((N5=self.constructor)===null||N5===void 0?void 0:N5.name)==="DedicatedWorkerGlobalScope"||((T5=self.constructor)===null||T5===void 0?void 0:T5.name)==="ServiceWorkerGlobalScope"||((D5=self.constructor)===null||D5===void 0?void 0:D5.name)==="SharedWorkerGlobalScope"),Hge=typeof Deno<"u"&&typeof Deno.version<"u"&&typeof Deno.version.deno<"u",Yge=typeof Bun<"u"&&typeof Bun.version<"u",la=typeof globalThis.process<"u"&&!!globalThis.process.version&&!!(!((k5=globalThis.process.versions)===null||k5===void 0)&&k5.node),af=la;var Jge=typeof navigator<"u"&&navigator?.product==="ReactNative";function ca(t,e){return Buffer.from(t,e)}var P5="REDACTED",jge=["x-ms-client-request-id","x-ms-return-client-request-id","x-ms-useragent","x-ms-correlation-request-id","x-ms-request-id","client-request-id","ms-cv","return-client-request-id","traceparent","Access-Control-Allow-Credentials","Access-Control-Allow-Headers","Access-Control-Allow-Methods","Access-Control-Allow-Origin","Access-Control-Expose-Headers","Access-Control-Max-Age","Access-Control-Request-Headers","Access-Control-Request-Method","Origin","Accept","Accept-Encoding","Cache-Control","Connection","Content-Length","Content-Type","Date","ETag","Expires","If-Match","If-Modified-Since","If-None-Match","If-Unmodified-Since","Last-Modified","Pragma","Request-Id","Retry-After","Server","Transfer-Encoding","User-Agent","WWW-Authenticate"],zge=["api-version"],wA=class{constructor({additionalAllowedHeaderNames:e=[],additionalAllowedQueryParameters:r=[]}={}){e=jge.concat(e),r=zge.concat(r),this.allowedHeaderNames=new Set(e.map(n=>n.toLowerCase())),this.allowedQueryParameters=new Set(r.map(n=>n.toLowerCase()))}sanitize(e){let r=new Set;return JSON.stringify(e,(n,i)=>{if(i instanceof Error)return Object.assign(Object.assign({},i),{name:i.name,message:i.message});if(n==="headers")return this.sanitizeHeaders(i);if(n==="url")return this.sanitizeUrl(i);if(n==="query")return this.sanitizeQuery(i);if(n==="body")return;if(n==="response")return;if(n==="operationSpec")return;if(Array.isArray(i)||sf(i)){if(r.has(i))return"[Circular]";r.add(i)}return i},2)}sanitizeUrl(e){if(typeof e!="string"||e===null||e==="")return e;let r=new URL(e);if(!r.search)return e;for(let[n]of r.searchParams)this.allowedQueryParameters.has(n.toLowerCase())||r.searchParams.set(n,P5);return r.toString()}sanitizeHeaders(e){let r={};for(let n of Object.keys(e))this.allowedHeaderNames.has(n.toLowerCase())?r[n]=e[n]:r[n]=P5;return r}sanitizeQuery(e){if(typeof e!="object"||e===null)return e;let r={};for(let n of Object.keys(e))this.allowedQueryParameters.has(n.toLowerCase())?r[n]=e[n]:r[n]=P5;return r}};var pq="logPolicy";function _5(t={}){var e;let r=(e=t.logger)!==null&&e!==void 0?e:Dr.info,n=new wA({additionalAllowedHeaderNames:t.additionalAllowedHeaderNames,additionalAllowedQueryParameters:t.additionalAllowedQueryParameters});return{name:pq,async sendRequest(i,s){if(!r.enabled)return s(i);r(`Request: ${n.sanitize(i)}`);let a=await s(i);return r(`Response status code: ${a.status}`),r(`Headers: ${n.sanitize(a.headers)}`),a}}}var mq="redirectPolicy",uq=["GET","HEAD"];function M5(t={}){let{maxRetries:e=20}=t;return{name:mq,async sendRequest(r,n){let i=await n(r);return hq(n,i,e)}}}async function hq(t,e,r,n=0){let{request:i,status:s,headers:a}=e,o=a.get("location");if(o&&(s===300||s===301&&uq.includes(i.method)||s===302&&uq.includes(i.method)||s===303&&i.method==="POST"||s===307)&&ntypeof r=="function"?r():r).map(jq);return oy.Readable.from(function(){return ue(this,arguments,function*(){var r,n,i,s;for(let l of e)try{for(var a=!0,o=(n=void 0,he(l)),A;A=yield N(o.next()),r=A.done,!r;a=!0)s=A.value,a=!1,yield yield N(s)}catch(c){n={error:c}}finally{try{!a&&!r&&(i=o.return)&&(yield N(i.call(o)))}finally{if(n)throw n.error}}})}())}}function r0e(){return`----AzSDKFormBoundary${Pp()}`}function n0e(t){let e="";for(let[r,n]of t)e+=`${r}: ${n}\r -`;return e}function i0e(t){return t instanceof Uint8Array?t.byteLength:ay(t)?t.size===-1?void 0:t.size:void 0}function s0e(t){let e=0;for(let r of t){let n=i0e(r);if(n===void 0)return;e+=n}return e}async function a0e(t,e,r){let n=[ca(`--${r}`,"utf-8"),...e.flatMap(s=>[ca(`\r -`,"utf-8"),ca(n0e(s.headers),"utf-8"),ca(`\r -`,"utf-8"),s.body,ca(`\r ---${r}`,"utf-8")]),ca(`--\r -\r -`,"utf-8")],i=s0e(n);i&&t.headers.set("Content-Length",i),t.body=await zq(n)}var Ay="multipartPolicy",o0e=70,A0e=new Set("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789'()+,-./:=?");function l0e(t){if(t.length>o0e)throw new Error(`Multipart boundary "${t}" exceeds maximum length of 70 characters`);if(Array.from(t).some(e=>!A0e.has(e)))throw new Error(`Multipart boundary "${t}" contains invalid characters`)}function U5(){return{name:Ay,async sendRequest(t,e){var r;if(!t.multipartBody)return e(t);if(t.body)throw new Error("multipartBody and regular body cannot be set at the same time");let n=t.multipartBody.boundary,i=(r=t.headers.get("Content-Type"))!==null&&r!==void 0?r:"multipart/mixed",s=i.match(/^(multipart\/[^ ;]+)(?:; *boundary=(.+))?$/);if(!s)throw new Error(`Got multipart request body, but content-type header was not multipart: ${i}`);let[,a,o]=s;if(o&&n&&o!==n)throw new Error(`Multipart boundary was specified as ${o} in the header, but got ${n} in the request body`);return n??(n=o),n?l0e(n):n=r0e(),t.headers.set("Content-Type",`${a}; boundary=${n}`),await a0e(t,t.multipartBody.parts,n),t.multipartBody=void 0,e(t)}}}var Wq="decompressResponsePolicy";function q5(){return{name:Wq,async sendRequest(t,e){return t.method!=="HEAD"&&t.headers.set("Accept-Encoding","gzip,deflate"),e(t)}}}var da=class extends Error{constructor(e){super(e),this.name="AbortError"}};var c0e="The operation was aborted.";function ly(t,e,r){return new Promise((n,i)=>{let s,a,o=()=>i(new da(r?.abortErrorMsg?r?.abortErrorMsg:c0e)),A=()=>{r?.abortSignal&&a&&r.abortSignal.removeEventListener("abort",a)};if(a=()=>(s&&clearTimeout(s),A(),o()),r?.abortSignal&&r.abortSignal.aborted)return o();s=setTimeout(()=>{A(),n(e)},t),r?.abortSignal&&r.abortSignal.addEventListener("abort",a)})}function $q(t,e){let r=t.headers.get(e);if(!r)return;let n=Number(r);if(!Number.isNaN(n))return n}var V5="Retry-After",d0e=["retry-after-ms","x-ms-retry-after-ms",V5];function Kq(t){if(t&&[429,503].includes(t.status))try{for(let i of d0e){let s=$q(t,i);if(s===0||s)return s*(i===V5?1e3:1)}let e=t.headers.get(V5);if(!e)return;let n=Date.parse(e)-Date.now();return Number.isFinite(n)?Math.max(0,n):void 0}catch{return}}function Xq(t){return Number.isFinite(Kq(t))}function G5(){return{name:"throttlingRetryStrategy",retry({response:t}){let e=Kq(t);return Number.isFinite(e)?{retryAfterInMs:e}:{skipStrategy:!0}}}}var p0e=1e3,u0e=1e3*64;function cy(t={}){var e,r;let n=(e=t.retryDelayInMs)!==null&&e!==void 0?e:p0e,i=(r=t.maxRetryDelayInMs)!==null&&r!==void 0?r:u0e;return{name:"exponentialRetryStrategy",retry({retryCount:s,response:a,responseError:o}){let A=h0e(o),l=A&&t.ignoreSystemErrors,c=m0e(a),d=c&&t.ignoreHttpStatusCodes;return a&&(Xq(a)||!c)||d||l?{skipStrategy:!0}:o&&!A&&!c?{errorToThrow:o}:X2(s,{retryDelayInMs:n,maxRetryDelayInMs:i})}}}function m0e(t){return!!(t&&t.status!==void 0&&(t.status>=500||t.status===408)&&t.status!==501&&t.status!==505)}function h0e(t){return t?t.code==="ETIMEDOUT"||t.code==="ESOCKETTIMEDOUT"||t.code==="ECONNREFUSED"||t.code==="ECONNRESET"||t.code==="ENOENT"||t.code==="ENOTFOUND":!1}var Zq=Aa("core-rest-pipeline retryPolicy"),f0e="retryPolicy";function Gl(t,e={maxRetries:3}){let r=e.logger||Zq;return{name:f0e,async sendRequest(n,i){var s,a;let o,A,l=-1;e:for(;;){l+=1,o=void 0,A=void 0;try{r.info(`Retry ${l}: Attempting to send request`,n.requestId),o=await i(n),r.info(`Retry ${l}: Received a response from request`,n.requestId)}catch(c){if(r.error(`Retry ${l}: Received an error from request`,n.requestId),A=c,!c||A.name!=="RestError")throw c;o=A.response}if(!((s=n.abortSignal)===null||s===void 0)&&s.aborted)throw r.error(`Retry ${l}: Request aborted.`),new da;if(l>=((a=e.maxRetries)!==null&&a!==void 0?a:3)){if(r.info(`Retry ${l}: Maximum retries reached. Returning the last received response, or throwing the last received error.`),A)throw A;if(o)return o;throw new Error("Maximum retries reached with no response or error to throw")}r.info(`Retry ${l}: Processing ${t.length} retry strategies.`);t:for(let c of t){let d=c.logger||Zq;d.info(`Retry ${l}: Processing retry strategy ${c.name}.`);let p=c.retry({retryCount:l,response:o,responseError:A});if(p.skipStrategy){d.info(`Retry ${l}: Skipped.`);continue t}let{errorToThrow:u,retryAfterInMs:m,redirectTo:h}=p;if(u)throw d.error(`Retry ${l}: Retry strategy ${c.name} throws error:`,u),u;if(m||m===0){d.info(`Retry ${l}: Retry strategy ${c.name} retries after ${m}`),await ly(m,void 0,{abortSignal:n.abortSignal});continue e}if(h){d.info(`Retry ${l}: Retry strategy ${c.name} redirects to ${h}`),n.url=h;continue e}}if(A)throw r.info("None of the retry strategies could work with the received error. Throwing it."),A;if(o)return r.info("None of the retry strategies could work with the received response. Returning it."),o}}}}var g0e="defaultRetryPolicy";function H5(t={}){var e;return{name:g0e,sendRequest:Gl([G5(),cy(t)],{maxRetries:(e=t.maxRetries)!==null&&e!==void 0?e:3}).sendRequest}}function dy(t){return t.toLowerCase()}function*E0e(t){for(let e of t.values())yield[e.name,e.value]}var Y5=class{constructor(e){if(this._headersMap=new Map,e)for(let r of Object.keys(e))this.set(r,e[r])}set(e,r){this._headersMap.set(dy(e),{name:e,value:String(r).trim()})}get(e){var r;return(r=this._headersMap.get(dy(e)))===null||r===void 0?void 0:r.value}has(e){return this._headersMap.has(dy(e))}delete(e){this._headersMap.delete(dy(e))}toJSON(e={}){let r={};if(e.preserveCase)for(let n of this._headersMap.values())r[n.name]=n.value;else for(let[n,i]of this._headersMap)r[n]=i.value;return r}toString(){return JSON.stringify(this.toJSON({preserveCase:!0}))}[Symbol.iterator](){return E0e(this._headersMap)}};function Xn(t){return new Y5(t)}var eV="formDataPolicy";function y0e(t){var e;let r={};for(let[n,i]of t.entries())(e=r[n])!==null&&e!==void 0||(r[n]=[]),r[n].push(i);return r}function J5(){return{name:eV,async sendRequest(t,e){if(la&&typeof FormData<"u"&&t.body instanceof FormData&&(t.formData=y0e(t.body),t.body=void 0),t.formData){let r=t.headers.get("Content-Type");r&&r.indexOf("application/x-www-form-urlencoded")!==-1?t.body=C0e(t.formData):await I0e(t.formData,t),t.formData=void 0}return e(t)}}}function C0e(t){let e=new URLSearchParams;for(let[r,n]of Object.entries(t))if(Array.isArray(n))for(let i of n)e.append(r,i.toString());else e.append(r,n.toString());return e.toString()}async function I0e(t,e){let r=e.headers.get("Content-Type");if(r&&!r.startsWith("multipart/form-data"))return;e.headers.set("Content-Type",r??"multipart/form-data");let n=[];for(let[i,s]of Object.entries(t))for(let a of Array.isArray(s)?s:[s])if(typeof a=="string")n.push({headers:Xn({"Content-Disposition":`form-data; name="${i}"`}),body:ca(a,"utf-8")});else{if(a==null||typeof a!="object")throw new Error(`Unexpected value for key ${i}: ${a}. Value should be serialized to string first.`);{let o=a.name||"blob",A=Xn();A.set("Content-Disposition",`form-data; name="${i}"; filename="${o}"`),A.set("Content-Type",a.type||"application/octet-stream"),n.push({headers:A,body:a})}}e.multipartBody={parts:n}}var vV=Ce(tw(),1),RV=Ce(rw(),1);var CEe="HTTPS_PROXY",IEe="HTTP_PROXY",BEe="ALL_PROXY",QEe="NO_PROXY",NV="proxyPolicy",wV=[],TV=!1,wEe=new Map;function Cy(t){if(process.env[t])return process.env[t];if(process.env[t.toLowerCase()])return process.env[t.toLowerCase()]}function SEe(){if(!process)return;let t=Cy(CEe),e=Cy(BEe),r=Cy(IEe);return t||e||r}function bEe(t,e,r){if(e.length===0)return!1;let n=new URL(t).hostname;if(r?.has(n))return r.get(n);let i=!1;for(let s of e)s[0]==="."?(n.endsWith(s)||n.length===s.length-1&&n===s.slice(1))&&(i=!0):n===s&&(i=!0);return r?.set(n,i),i}function vEe(){let t=Cy(QEe);return TV=!0,t?t.split(",").map(e=>e.trim()).filter(e=>e.length):[]}function REe(){let t=SEe();return t?new URL(t):void 0}function SV(t){let e;try{e=new URL(t.host)}catch{throw new Error(`Expecting a valid host string in proxy settings, but found "${t.host}".`)}return e.port=String(t.port),t.username&&(e.username=t.username),t.password&&(e.password=t.password),e}function bV(t,e,r){if(t.agent)return;let i=new URL(t.url).protocol!=="https:";t.tlsSettings&&Dr.warning("TLS settings are not supported in combination with custom Proxy, certificates provided to the client will be ignored.");let s=t.headers.toJSON();i?(e.httpProxyAgent||(e.httpProxyAgent=new RV.HttpProxyAgent(r,{headers:s})),t.agent=e.httpProxyAgent):(e.httpsProxyAgent||(e.httpsProxyAgent=new vV.HttpsProxyAgent(r,{headers:s})),t.agent=e.httpsProxyAgent)}function nw(t,e){TV||wV.push(...vEe());let r=t?SV(t):REe(),n={};return{name:NV,async sendRequest(i,s){var a;return!i.proxySettings&&r&&!bEe(i.url,(a=e?.customNoProxyList)!==null&&a!==void 0?a:wV,e?.customNoProxyList?void 0:wEe)?bV(i,n,r):i.proxySettings&&bV(i,n,SV(i.proxySettings)),s(i)}}}var DV="setClientRequestIdPolicy";function iw(t="x-ms-client-request-id"){return{name:DV,async sendRequest(e,r){return e.headers.has(t)||e.headers.set(t,e.requestId),r(e)}}}var kV="agentPolicy";function sw(t){return{name:kV,sendRequest:async(e,r)=>(e.agent||(e.agent=t),r(e))}}var PV="tlsPolicy";function aw(t){return{name:PV,sendRequest:async(e,r)=>(e.tlsSettings||(e.tlsSettings=t),r(e))}}var Up={span:Symbol.for("@azure/core-tracing span"),namespace:Symbol.for("@azure/core-tracing namespace")};function _V(t={}){let e=new ow(t.parentContext);return t.span&&(e=e.setValue(Up.span,t.span)),t.namespace&&(e=e.setValue(Up.namespace,t.namespace)),e}var ow=class t{constructor(e){this._contextMap=e instanceof t?new Map(e._contextMap):new Map}setValue(e,r){let n=new t(this);return n._contextMap.set(e,r),n}getValue(e){return this._contextMap.get(e)}deleteValue(e){let r=new t(this);return r._contextMap.delete(e),r}};var MV=Ce(Aw(),1),By=MV.state;function NEe(){return{end:()=>{},isRecording:()=>!1,recordException:()=>{},setAttribute:()=>{},setStatus:()=>{}}}function TEe(){return{createRequestHeaders:()=>({}),parseTraceparentHeader:()=>{},startSpan:(t,e)=>({span:NEe(),tracingContext:_V({parentContext:e.tracingContext})}),withContext(t,e,...r){return e(...r)}}}function Af(){return By.instrumenterImplementation||(By.instrumenterImplementation=TEe()),By.instrumenterImplementation}function lf(t){let{namespace:e,packageName:r,packageVersion:n}=t;function i(l,c,d){var p;let u=Af().startSpan(l,Object.assign(Object.assign({},d),{packageName:r,packageVersion:n,tracingContext:(p=c?.tracingOptions)===null||p===void 0?void 0:p.tracingContext})),m=u.tracingContext,h=u.span;m.getValue(Up.namespace)||(m=m.setValue(Up.namespace,e)),h.setAttribute("az.namespace",m.getValue(Up.namespace));let f=Object.assign({},c,{tracingOptions:Object.assign(Object.assign({},c?.tracingOptions),{tracingContext:m})});return{span:h,updatedOptions:f}}async function s(l,c,d,p){let{span:u,updatedOptions:m}=i(l,c,p);try{let h=await a(m.tracingOptions.tracingContext,()=>Promise.resolve(d(m,u)));return u.setStatus({status:"success"}),h}catch(h){throw u.setStatus({status:"error",error:h}),h}finally{u.end()}}function a(l,c,...d){return Af().withContext(l,c,...d)}function o(l){return Af().parseTraceparentHeader(l)}function A(l){return Af().createRequestHeaders(l)}return{startSpan:i,withSpan:s,withContext:a,parseTraceparentHeader:o,createRequestHeaders:A}}var OV=require("node:util"),xV=OV.inspect.custom;var DEe=new wA,hr=class t extends Error{constructor(e,r={}){super(e),this.name="RestError",this.code=r.code,this.statusCode=r.statusCode,Object.defineProperty(this,"request",{value:r.request,enumerable:!1}),Object.defineProperty(this,"response",{value:r.response,enumerable:!1}),Object.setPrototypeOf(this,t.prototype)}[xV](){return`RestError: ${this.message} - ${DEe.sanitize(Object.assign(Object.assign({},this),{request:this.request,response:this.response}))}`}};hr.REQUEST_SEND_ERROR="REQUEST_SEND_ERROR";hr.PARSE_ERROR="PARSE_ERROR";function cf(t){return t instanceof hr?!0:ql(t)&&t.name==="RestError"}var LV="tracingPolicy";function lw(t={}){let e=ty(t.userAgentPrefix),r=new wA({additionalAllowedQueryParameters:t.additionalAllowedQueryParameters}),n=kEe();return{name:LV,async sendRequest(i,s){var a;if(!n)return s(i);let o=await e,A={"http.url":r.sanitizeUrl(i.url),"http.method":i.method,"http.user_agent":o,requestId:i.requestId};o&&(A["http.user_agent"]=o);let{span:l,tracingContext:c}=(a=PEe(n,i,A))!==null&&a!==void 0?a:{};if(!l||!c)return s(i);try{let d=await n.withContext(c,s,i);return MEe(l,d),d}catch(d){throw _Ee(l,d),d}}}}function kEe(){try{return lf({namespace:"",packageName:"@azure/core-rest-pipeline",packageVersion:ey})}catch(t){Dr.warning(`Error when creating the TracingClient: ${kp(t)}`);return}}function PEe(t,e,r){try{let{span:n,updatedOptions:i}=t.startSpan(`HTTP ${e.method}`,{tracingOptions:e.tracingOptions},{spanKind:"client",spanAttributes:r});if(!n.isRecording()){n.end();return}let s=t.createRequestHeaders(i.tracingOptions.tracingContext);for(let[a,o]of Object.entries(s))e.headers.set(a,o);return{span:n,tracingContext:i.tracingOptions.tracingContext}}catch(n){Dr.warning(`Skipping creating a tracing span due to an error: ${kp(n)}`);return}}function _Ee(t,e){try{t.setStatus({status:"error",error:ql(e)?e:void 0}),cf(e)&&e.statusCode&&t.setAttribute("http.status_code",e.statusCode),t.end()}catch(r){Dr.warning(`Skipping tracing span processing due to an error: ${kp(r)}`)}}function MEe(t,e){try{t.setAttribute("http.status_code",e.status);let r=e.headers.get("x-ms-request-id");r&&t.setAttribute("serviceRequestId",r),e.status>=400&&t.setStatus({status:"error"}),t.end()}catch(r){Dr.warning(`Skipping tracing span processing due to an error: ${kp(r)}`)}}function cw(t){var e;let r=j2();return la&&(t.agent&&r.addPolicy(sw(t.agent)),t.tlsOptions&&r.addPolicy(aw(t.tlsOptions)),r.addPolicy(nw(t.proxyOptions)),r.addPolicy(q5())),r.addPolicy(J5(),{beforePolicies:[Ay]}),r.addPolicy(O5(t.userAgentOptions)),r.addPolicy(iw((e=t.telemetryOptions)===null||e===void 0?void 0:e.clientRequestIdHeaderName)),r.addPolicy(U5(),{afterPhase:"Deserialize"}),r.addPolicy(H5(t.retryOptions),{phase:"Retry"}),r.addPolicy(lw(Object.assign(Object.assign({},t.userAgentOptions),t.loggingOptions)),{afterPhase:"Retry"}),la&&r.addPolicy(M5(t.redirectOptions),{afterPhase:"Retry"}),r.addPolicy(_5(t.loggingOptions),{afterPhase:"Sign"}),r}var qp=Ce(require("node:http"),1),Vp=Ce(require("node:https"),1),wy=Ce(require("node:zlib"),1),UV=require("node:stream");var OEe={};function df(t){return t&&typeof t.pipe=="function"}function FV(t){return t.readable===!1?Promise.resolve():new Promise(e=>{let r=()=>{e(),t.removeListener("close",r),t.removeListener("end",r),t.removeListener("error",r)};t.on("close",r),t.on("end",r),t.on("error",r)})}function qV(t){return t&&typeof t.byteLength=="number"}var Qy=class extends UV.Transform{_transform(e,r,n){this.push(e),this.loadedBytes+=e.length;try{this.progressCallback({loadedBytes:this.loadedBytes}),n()}catch(i){n(i)}}constructor(e){super(),this.loadedBytes=0,this.progressCallback=e}},dw=class{constructor(){this.cachedHttpsAgents=new WeakMap}async sendRequest(e){var r,n,i;let s=new AbortController,a;if(e.abortSignal){if(e.abortSignal.aborted)throw new da("The operation was aborted.");a=d=>{d.type==="abort"&&s.abort()},e.abortSignal.addEventListener("abort",a)}e.timeout>0&&setTimeout(()=>{s.abort()},e.timeout);let o=e.headers.get("Accept-Encoding"),A=o?.includes("gzip")||o?.includes("deflate"),l=typeof e.body=="function"?e.body():e.body;if(l&&!e.headers.has("Content-Length")){let d=UEe(l);d!==null&&e.headers.set("Content-Length",d)}let c;try{if(l&&e.onUploadProgress){let f=e.onUploadProgress,E=new Qy(f);E.on("error",y=>{Dr.error("Error in upload progress",y)}),df(l)?l.pipe(E):E.end(l),l=E}let d=await this.makeRequest(e,s,l),p=xEe(d),m={status:(r=d.statusCode)!==null&&r!==void 0?r:0,headers:p,request:e};if(e.method==="HEAD")return d.resume(),m;c=A?LEe(d,p):d;let h=e.onDownloadProgress;if(h){let f=new Qy(h);f.on("error",E=>{Dr.error("Error in download progress",E)}),c.pipe(f),c=f}return!((n=e.streamResponseStatusCodes)===null||n===void 0)&&n.has(Number.POSITIVE_INFINITY)||!((i=e.streamResponseStatusCodes)===null||i===void 0)&&i.has(m.status)?m.readableStreamBody=c:m.bodyAsText=await FEe(c),m}finally{if(e.abortSignal&&a){let d=Promise.resolve();df(l)&&(d=FV(l));let p=Promise.resolve();df(c)&&(p=FV(c)),Promise.all([d,p]).then(()=>{var u;a&&((u=e.abortSignal)===null||u===void 0||u.removeEventListener("abort",a))}).catch(u=>{Dr.warning("Error when cleaning up abortListener on httpRequest",u)})}}}makeRequest(e,r,n){var i;let s=new URL(e.url),a=s.protocol!=="https:";if(a&&!e.allowInsecureConnection)throw new Error(`Cannot connect to ${e.url} while allowInsecureConnection is false.`);let A={agent:(i=e.agent)!==null&&i!==void 0?i:this.getOrCreateAgent(e,a),hostname:s.hostname,path:`${s.pathname}${s.search}`,port:s.port,method:e.method,headers:e.headers.toJSON({preserveCase:!0})};return new Promise((l,c)=>{let d=a?qp.request(A,l):Vp.request(A,l);d.once("error",p=>{var u;c(new hr(p.message,{code:(u=p.code)!==null&&u!==void 0?u:hr.REQUEST_SEND_ERROR,request:e}))}),r.signal.addEventListener("abort",()=>{let p=new da("The operation was aborted.");d.destroy(p),c(p)}),n&&df(n)?n.pipe(d):n?typeof n=="string"||Buffer.isBuffer(n)?d.end(n):qV(n)?d.end(ArrayBuffer.isView(n)?Buffer.from(n.buffer):Buffer.from(n)):(Dr.error("Unrecognized body type",n),c(new hr("Unrecognized body type"))):d.end()})}getOrCreateAgent(e,r){var n;let i=e.disableKeepAlive;if(r)return i?qp.globalAgent:(this.cachedHttpAgent||(this.cachedHttpAgent=new qp.Agent({keepAlive:!0})),this.cachedHttpAgent);{if(i&&!e.tlsSettings)return Vp.globalAgent;let s=(n=e.tlsSettings)!==null&&n!==void 0?n:OEe,a=this.cachedHttpsAgents.get(s);return a&&a.options.keepAlive===!i||(Dr.info("No cached TLS Agent exist, creating a new Agent"),a=new Vp.Agent(Object.assign({keepAlive:!i},s)),this.cachedHttpsAgents.set(s,a)),a}}};function xEe(t){let e=Xn();for(let r of Object.keys(t.headers)){let n=t.headers[r];Array.isArray(n)?n.length>0&&e.set(r,n[0]):n&&e.set(r,n)}return e}function LEe(t,e){let r=e.get("Content-Encoding");if(r==="gzip"){let n=wy.createGunzip();return t.pipe(n),n}else if(r==="deflate"){let n=wy.createInflate();return t.pipe(n),n}return t}function FEe(t){return new Promise((e,r)=>{let n=[];t.on("data",i=>{Buffer.isBuffer(i)?n.push(i):n.push(Buffer.from(i))}),t.on("end",()=>{e(Buffer.concat(n).toString("utf8"))}),t.on("error",i=>{i&&i?.name==="AbortError"?r(i):r(new hr(`Error reading response as text: ${i.message}`,{code:hr.PARSE_ERROR}))})})}function UEe(t){return t?Buffer.isBuffer(t)?t.length:df(t)?null:qV(t)?t.byteLength:typeof t=="string"?Buffer.from(t).length:null:0}function VV(){return new dw}function pw(){return VV()}var uw=class{constructor(e){var r,n,i,s,a,o,A;this.url=e.url,this.body=e.body,this.headers=(r=e.headers)!==null&&r!==void 0?r:Xn(),this.method=(n=e.method)!==null&&n!==void 0?n:"GET",this.timeout=(i=e.timeout)!==null&&i!==void 0?i:0,this.multipartBody=e.multipartBody,this.formData=e.formData,this.disableKeepAlive=(s=e.disableKeepAlive)!==null&&s!==void 0?s:!1,this.proxySettings=e.proxySettings,this.streamResponseStatusCodes=e.streamResponseStatusCodes,this.withCredentials=(a=e.withCredentials)!==null&&a!==void 0?a:!1,this.abortSignal=e.abortSignal,this.tracingOptions=e.tracingOptions,this.onUploadProgress=e.onUploadProgress,this.onDownloadProgress=e.onDownloadProgress,this.requestId=e.requestId||Pp(),this.allowInsecureConnection=(o=e.allowInsecureConnection)!==null&&o!==void 0?o:!1,this.enableBrowserStreams=(A=e.enableBrowserStreams)!==null&&A!==void 0?A:!1,this.agent=e.agent,this.tlsSettings=e.tlsSettings}};function ua(t){return new uw(t)}var qEe={forcedRefreshWindowInMs:1e3,retryIntervalInMs:3e3,refreshWindowInMs:1e3*60*2};async function VEe(t,e,r){async function n(){if(Date.now()t.getToken(A,l),s.retryIntervalInMs,(c=n?.expiresOnTimestamp)!==null&&c!==void 0?c:Date.now()).then(p=>(r=null,n=p,i=l.tenantId,n)).catch(p=>{throw r=null,n=null,i=void 0,p})),r}return async(A,l)=>{let c=!!l.claims,d=i!==l.tenantId;return c&&(n=null),d||c||a.mustRefresh?o(A,l):(a.shouldRefresh&&o(A,l),n)}}var pf="bearerTokenAuthenticationPolicy";async function Sy(t,e){try{return[await e(t),void 0]}catch(r){if(cf(r)&&r.response)return[r.response,r];throw r}}async function GEe(t){let{scopes:e,getAccessToken:r,request:n}=t,i={abortSignal:n.abortSignal,tracingOptions:n.tracingOptions,enableCae:!0},s=await r(e,i);s&&t.request.headers.set("Authorization",`Bearer ${s.token}`)}function GV(t){return t.status===401&&t.headers.has("WWW-Authenticate")}async function HV(t,e){var r;let{scopes:n}=t,i=await t.getAccessToken(n,{enableCae:!0,claims:e});return i?(t.request.headers.set("Authorization",`${(r=i.tokenType)!==null&&r!==void 0?r:"Bearer"} ${i.token}`),!0):!1}function Gp(t){var e,r,n;let{credential:i,scopes:s,challengeCallbacks:a}=t,o=t.logger||Dr,A={authorizeRequest:(r=(e=a?.authorizeRequest)===null||e===void 0?void 0:e.bind(a))!==null&&r!==void 0?r:GEe,authorizeRequestOnChallenge:(n=a?.authorizeRequestOnChallenge)===null||n===void 0?void 0:n.bind(a)},l=i?mw(i):()=>Promise.resolve(null);return{name:pf,async sendRequest(c,d){if(!c.url.toLowerCase().startsWith("https://"))throw new Error("Bearer token authentication is not permitted for non-TLS protected (non-https) URLs.");await A.authorizeRequest({scopes:Array.isArray(s)?s:[s],request:c,getAccessToken:l,logger:o});let p,u,m;if([p,u]=await Sy(c,d),GV(p)){let h=YV(p.headers.get("WWW-Authenticate"));if(h){let f;try{f=atob(h)}catch{return o.warning(`The WWW-Authenticate header contains "claims" that cannot be parsed. Unable to perform the Continuous Access Evaluation authentication flow. Unparsable claims: ${h}`),p}m=await HV({scopes:Array.isArray(s)?s:[s],response:p,request:c,getAccessToken:l,logger:o},f),m&&([p,u]=await Sy(c,d))}else if(A.authorizeRequestOnChallenge&&(m=await A.authorizeRequestOnChallenge({scopes:Array.isArray(s)?s:[s],request:c,response:p,getAccessToken:l,logger:o}),m&&([p,u]=await Sy(c,d)),GV(p)&&(h=YV(p.headers.get("WWW-Authenticate")),h))){let f;try{f=atob(h)}catch{return o.warning(`The WWW-Authenticate header contains "claims" that cannot be parsed. Unable to perform the Continuous Access Evaluation authentication flow. Unparsable claims: ${h}`),p}m=await HV({scopes:Array.isArray(s)?s:[s],response:p,request:c,getAccessToken:l,logger:o},f),m&&([p,u]=await Sy(c,d))}}if(u)throw u;return p}}}function HEe(t){let e=/(\w+)\s+((?:\w+=(?:"[^"]*"|[^,]*),?\s*)+)/g,r=/(\w+)="([^"]*)"/g,n=[],i;for(;(i=e.exec(t))!==null;){let s=i[1],a=i[2],o={},A;for(;(A=r.exec(a))!==null;)o[A[1]]=A[2];n.push({scheme:s,params:o})}return n}function YV(t){var e;return t?(e=HEe(t).find(n=>n.scheme==="Bearer"&&n.params.claims&&n.params.error==="insufficient_claims"))===null||e===void 0?void 0:e.params.claims:void 0}var JV=new WeakMap;function Se(t,e){var r;if(typeof t!="object"||t===null||!e)return;let n=(r=JV.get(t))!==null&&r!==void 0?r:{};n.continuationToken=e,JV.set(t,n)}var jV;(function(t){t.NotSpecified="NotSpecified",t.Outer="Outer",t.Inner="Inner"})(jV||(jV={}));var zV;(function(t){t.Template="Template",t.Provider="Provider",t.ProviderNoRbac="ProviderNoRbac"})(zV||(zV={}));var WV;(function(t){t.NotSpecified="NotSpecified",t.Accepted="Accepted",t.Running="Running",t.Ready="Ready",t.Creating="Creating",t.Created="Created",t.Deleting="Deleting",t.Deleted="Deleted",t.Canceled="Canceled",t.Failed="Failed",t.Succeeded="Succeeded",t.Updating="Updating"})(WV||(WV={}));var $V;(function(t){t.NotSpecified="NotSpecified",t.Any="Any",t.String="String",t.Object="Object",t.Array="Array",t.Integer="Integer",t.Number="Number",t.Boolean="Boolean"})($V||($V={}));var KV;(function(t){t.None="None",t.Modifiable="Modifiable"})(KV||(KV={}));var XV;(function(t){t.NotSpecified="NotSpecified",t.Required="Required",t.NotRequired="NotRequired",t.Consented="Consented"})(XV||(XV={}));var ZV;(function(t){t.Warning="Warning",t.Info="Info",t.Error="Error"})(ZV||(ZV={}));var eG;(function(t){t.EdgeZone="EdgeZone"})(eG||(eG={}));var tG;(function(t){t.Json="Json",t.Bicep="Bicep"})(tG||(tG={}));var rG;(function(t){t.Replace="Replace",t.Merge="Merge",t.Delete="Delete"})(rG||(rG={}));function hw(t){return(t instanceof Buffer?t:Buffer.from(t.buffer)).toString("base64")}function fw(t){return Buffer.from(t,"base64")}function nG(t){return Buffer.from(t,"base64").toString()}function jEe(t,e){return e!=="Composite"&&e!=="Dictionary"&&(typeof t=="string"||typeof t=="number"||typeof t=="boolean"||e?.match(/^(Date|DateTime|DateTimeRfc1123|UnixTime|ByteArray|Base64Url)$/i)!==null||t===void 0||t===null)}var zEe=/^(-|\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/;function iG(t){return zEe.test(t)}var WEe=/^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/i;function sG(t){return WEe.test(t)}function $Ee(t){let e=Object.assign(Object.assign({},t.headers),t.body);return t.hasNullableType&&Object.getOwnPropertyNames(e).length===0?t.shouldWrapBody?{body:null}:null:t.shouldWrapBody?Object.assign(Object.assign({},t.headers),{body:t.body}):e}function gw(t,e){var r,n;let i=t.parsedHeaders;if(t.request.method==="HEAD")return Object.assign(Object.assign({},i),{body:t.parsedBody});let s=e&&e.bodyMapper,a=!!s?.nullable,o=s?.type.name;if(o==="Stream")return Object.assign(Object.assign({},i),{blobBody:t.blobBody,readableStreamBody:t.readableStreamBody});let A=o==="Composite"&&s.type.modelProperties||{},l=Object.keys(A).some(c=>A[c].serializedName==="");if(o==="Sequence"||l){let c=(r=t.parsedBody)!==null&&r!==void 0?r:[];for(let d of Object.keys(A))A[d].serializedName&&(c[d]=(n=t.parsedBody)===null||n===void 0?void 0:n[d]);if(i)for(let d of Object.keys(i))c[d]=i[d];return a&&!t.parsedBody&&!i&&Object.getOwnPropertyNames(A).length===0?null:c}return $Ee({body:t.parsedBody,headers:i,hasNullableType:a,shouldWrapBody:jEe(t.parsedBody,o)})}var Ew=class{constructor(e={},r=!1){this.modelMappers=e,this.isXML=r}validateConstraints(e,r,n){let i=(s,a)=>{throw new Error(`"${n}" with value "${r}" should satisfy the constraint "${s}": ${a}.`)};if(e.constraints&&r!==void 0&&r!==null){let{ExclusiveMaximum:s,ExclusiveMinimum:a,InclusiveMaximum:o,InclusiveMinimum:A,MaxItems:l,MaxLength:c,MinItems:d,MinLength:p,MultipleOf:u,Pattern:m,UniqueItems:h}=e.constraints;if(s!==void 0&&r>=s&&i("ExclusiveMaximum",s),a!==void 0&&r<=a&&i("ExclusiveMinimum",a),o!==void 0&&r>o&&i("InclusiveMaximum",o),A!==void 0&&rl&&i("MaxItems",l),c!==void 0&&r.length>c&&i("MaxLength",c),d!==void 0&&r.lengthy.indexOf(f)!==E)&&i("UniqueItems",h)}}serialize(e,r,n,i={xml:{}}){var s,a,o;let A={xml:{rootName:(s=i.xml.rootName)!==null&&s!==void 0?s:"",includeRoot:(a=i.xml.includeRoot)!==null&&a!==void 0?a:!1,xmlCharKey:(o=i.xml.xmlCharKey)!==null&&o!==void 0?o:"_"}},l={},c=e.type.name;n||(n=e.serializedName),c.match(/^Sequence$/i)!==null&&(l=[]),e.isConstant&&(r=e.defaultValue);let{required:d,nullable:p}=e;if(d&&p&&r===void 0)throw new Error(`${n} cannot be undefined.`);if(d&&!p&&r==null)throw new Error(`${n} cannot be null or undefined.`);if(!d&&p===!1&&r===null)throw new Error(`${n} cannot be null.`);return r==null||c.match(/^any$/i)!==null?l=r:c.match(/^(Number|String|Boolean|Object|Stream|Uuid)$/i)!==null?l=r2e(c,n,r):c.match(/^Enum$/i)!==null?l=n2e(n,e.type.allowedValues,r):c.match(/^(Date|DateTime|TimeSpan|DateTimeRfc1123|UnixTime)$/i)!==null?l=a2e(c,r,n):c.match(/^ByteArray$/i)!==null?l=i2e(n,r):c.match(/^Base64Url$/i)!==null?l=s2e(n,r):c.match(/^Sequence$/i)!==null?l=o2e(this,e,r,n,!!this.isXML,A):c.match(/^Dictionary$/i)!==null?l=A2e(this,e,r,n,!!this.isXML,A):c.match(/^Composite$/i)!==null&&(l=c2e(this,e,r,n,!!this.isXML,A)),l}deserialize(e,r,n,i={xml:{}}){var s,a,o,A;let l={xml:{rootName:(s=i.xml.rootName)!==null&&s!==void 0?s:"",includeRoot:(a=i.xml.includeRoot)!==null&&a!==void 0?a:!1,xmlCharKey:(o=i.xml.xmlCharKey)!==null&&o!==void 0?o:"_"},ignoreUnknownProperties:(A=i.ignoreUnknownProperties)!==null&&A!==void 0?A:!1};if(r==null)return this.isXML&&e.type.name==="Sequence"&&!e.xmlIsWrapped&&(r=[]),e.defaultValue!==void 0&&(r=e.defaultValue),r;let c,d=e.type.name;if(n||(n=e.serializedName),d.match(/^Composite$/i)!==null)c=p2e(this,e,r,n,l);else{if(this.isXML){let p=l.xml.xmlCharKey;r["$"]!==void 0&&r[p]!==void 0&&(r=r[p])}d.match(/^Number$/i)!==null?(c=parseFloat(r),isNaN(c)&&(c=r)):d.match(/^Boolean$/i)!==null?r==="true"?c=!0:r==="false"?c=!1:c=r:d.match(/^(String|Enum|Object|Stream|Uuid|TimeSpan|any)$/i)!==null?c=r:d.match(/^(Date|DateTime|DateTimeRfc1123)$/i)!==null?c=new Date(r):d.match(/^UnixTime$/i)!==null?c=t2e(r):d.match(/^ByteArray$/i)!==null?c=fw(r):d.match(/^Base64Url$/i)!==null?c=ZEe(r):d.match(/^Sequence$/i)!==null?c=m2e(this,e,r,n,l):d.match(/^Dictionary$/i)!==null&&(c=u2e(this,e,r,n,l))}return e.isConstant&&(c=e.defaultValue),c}};function zr(t={},e=!1){return new Ew(t,e)}function KEe(t,e){let r=t.length;for(;r-1>=0&&t[r-1]===e;)--r;return t.substr(0,r)}function XEe(t){if(!t)return;if(!(t instanceof Uint8Array))throw new Error("Please provide an input of type Uint8Array for converting to Base64Url.");let e=hw(t);return KEe(e,"=").replace(/\+/g,"-").replace(/\//g,"_")}function ZEe(t){if(t){if(t&&typeof t.valueOf()!="string")throw new Error("Please provide an input of type string for converting to Uint8Array");return t=t.replace(/-/g,"+").replace(/_/g,"/"),fw(t)}}function yw(t){let e=[],r="";if(t){let n=t.split(".");for(let i of n)i.charAt(i.length-1)==="\\"?r+=i.substr(0,i.length-1)+".":(r+=i,e.push(r),r="")}return e}function e2e(t){if(t)return typeof t.valueOf()=="string"&&(t=new Date(t)),Math.floor(t.getTime()/1e3)}function t2e(t){if(t)return new Date(t*1e3)}function r2e(t,e,r){if(r!=null){if(t.match(/^Number$/i)!==null){if(typeof r!="number")throw new Error(`${e} with value ${r} must be of type number.`)}else if(t.match(/^String$/i)!==null){if(typeof r.valueOf()!="string")throw new Error(`${e} with value "${r}" must be of type string.`)}else if(t.match(/^Uuid$/i)!==null){if(!(typeof r.valueOf()=="string"&&sG(r)))throw new Error(`${e} with value "${r}" must be of type string and a valid uuid.`)}else if(t.match(/^Boolean$/i)!==null){if(typeof r!="boolean")throw new Error(`${e} with value ${r} must be of type boolean.`)}else if(t.match(/^Stream$/i)!==null){let n=typeof r;if(n!=="string"&&typeof r.pipe!="function"&&typeof r.tee!="function"&&!(r instanceof ArrayBuffer)&&!ArrayBuffer.isView(r)&&!((typeof Blob=="function"||typeof Blob=="object")&&r instanceof Blob)&&n!=="function")throw new Error(`${e} must be a string, Blob, ArrayBuffer, ArrayBufferView, ReadableStream, or () => ReadableStream.`)}}return r}function n2e(t,e,r){if(!e)throw new Error(`Please provide a set of allowedValues to validate ${t} as an Enum Type.`);if(!e.some(i=>typeof i.valueOf()=="string"?i.toLowerCase()===r.toLowerCase():i===r))throw new Error(`${r} is not a valid value for ${t}. The valid values are: ${JSON.stringify(e)}.`);return r}function i2e(t,e){if(e!=null){if(!(e instanceof Uint8Array))throw new Error(`${t} must be of type Uint8Array.`);e=hw(e)}return e}function s2e(t,e){if(e!=null){if(!(e instanceof Uint8Array))throw new Error(`${t} must be of type Uint8Array.`);e=XEe(e)}return e}function a2e(t,e,r){if(e!=null){if(t.match(/^Date$/i)!==null){if(!(e instanceof Date||typeof e.valueOf()=="string"&&!isNaN(Date.parse(e))))throw new Error(`${r} must be an instanceof Date or a string in ISO8601 format.`);e=e instanceof Date?e.toISOString().substring(0,10):new Date(e).toISOString().substring(0,10)}else if(t.match(/^DateTime$/i)!==null){if(!(e instanceof Date||typeof e.valueOf()=="string"&&!isNaN(Date.parse(e))))throw new Error(`${r} must be an instanceof Date or a string in ISO8601 format.`);e=e instanceof Date?e.toISOString():new Date(e).toISOString()}else if(t.match(/^DateTimeRfc1123$/i)!==null){if(!(e instanceof Date||typeof e.valueOf()=="string"&&!isNaN(Date.parse(e))))throw new Error(`${r} must be an instanceof Date or a string in RFC-1123 format.`);e=e instanceof Date?e.toUTCString():new Date(e).toUTCString()}else if(t.match(/^UnixTime$/i)!==null){if(!(e instanceof Date||typeof e.valueOf()=="string"&&!isNaN(Date.parse(e))))throw new Error(`${r} must be an instanceof Date or a string in RFC-1123/ISO8601 format for it to be serialized in UnixTime/Epoch format.`);e=e2e(e)}else if(t.match(/^TimeSpan$/i)!==null&&!iG(e))throw new Error(`${r} must be a string in ISO 8601 format. Instead was "${e}".`)}return e}function o2e(t,e,r,n,i,s){var a;if(!Array.isArray(r))throw new Error(`${n} must be of type Array.`);let o=e.type.element;if(!o||typeof o!="object")throw new Error(`element" metadata for an Array must be defined in the mapper and it must of type "object" in ${n}.`);o.type.name==="Composite"&&o.type.className&&(o=(a=t.modelMappers[o.type.className])!==null&&a!==void 0?a:o);let A=[];for(let l=0;lp!==c)&&(a[c]=t.serialize(A,r[c],n+'["'+c+'"]',s))}return a}return r}function lG(t,e,r,n){if(!r||!t.xmlNamespace)return e;let s={[t.xmlNamespacePrefix?`xmlns:${t.xmlNamespacePrefix}`:"xmlns"]:t.xmlNamespace};if(["Composite"].includes(t.type.name)){if(e["$"])return e;{let o=Object.assign({},e);return o["$"]=s,o}}let a={};return a[n.xml.xmlCharKey]=e,a["$"]=s,a}function d2e(t,e){return["$",e.xml.xmlCharKey].includes(t)}function p2e(t,e,r,n,i){var s,a;let o=(s=i.xml.xmlCharKey)!==null&&s!==void 0?s:"_";by(t,e)&&(e=cG(t,e,r,"serializedName"));let A=AG(t,e,n),l={},c=[];for(let p of Object.keys(A)){let u=A[p],m=yw(A[p].serializedName);c.push(m[0]);let{serializedName:h,xmlName:f,xmlElementName:E}=u,y=n;h!==""&&h!==void 0&&(y=n+"."+h);let B=u.headerCollectionPrefix;if(B){let Q={};for(let C of Object.keys(r))C.startsWith(B)&&(Q[C.substring(B.length)]=t.deserialize(u.type.value,r[C],y,i)),c.push(C);l[p]=Q}else if(t.isXML)if(u.xmlIsAttribute&&r["$"])l[p]=t.deserialize(u,r["$"][f],y,i);else if(u.xmlIsMsText)r[o]!==void 0?l[p]=r[o]:typeof r=="string"&&(l[p]=r);else{let Q=E||f||h;if(u.xmlIsWrapped){let C=r[f],w=(a=C?.[E])!==null&&a!==void 0?a:[];l[p]=t.deserialize(u,w,y,i),c.push(f)}else{let C=r[Q];l[p]=t.deserialize(u,C,y,i),c.push(Q)}}else{let Q,C=r,w=0;for(let q of m){if(!C)break;w++,C=C[q]}C===null&&w{for(let m in A)if(yw(A[m].serializedName)[0]===u)return!1;return!0};for(let u in r)p(u)&&(l[u]=t.deserialize(d,r[u],n+'["'+u+'"]',i))}else if(r&&!i.ignoreUnknownProperties)for(let p of Object.keys(r))l[p]===void 0&&!c.includes(p)&&!d2e(p,i)&&(l[p]=r[p]);return l}function u2e(t,e,r,n,i){let s=e.type.value;if(!s||typeof s!="object")throw new Error(`"value" metadata for a Dictionary must be defined in the mapper and it must of type "object" in ${n}`);if(r){let a={};for(let o of Object.keys(r))a[o]=t.deserialize(s,r[o],n,i);return a}return r}function m2e(t,e,r,n,i){var s;let a=e.type.element;if(!a||typeof a!="object")throw new Error(`element" metadata for an Array must be defined in the mapper and it must of type "object" in ${n}`);if(r){Array.isArray(r)||(r=[r]),a.type.name==="Composite"&&a.type.className&&(a=(s=t.modelMappers[a.type.className])!==null&&s!==void 0?s:a);let o=[];for(let A=0;A0)if(i.isConstant)s=i.defaultValue;else{let a=pG(t,n);!a.propertyFound&&r&&(a=pG(r,n));let o=!1;a.propertyFound||(o=i.required||n[0]==="options"&&n.length===2),s=o?i.defaultValue:a.propertyValue}}else{i.required&&(s={});for(let a in n){let o=i.type.modelProperties[a],A=n[a],l=vA(t,{parameterPath:A,mapper:o},r);l!==void 0&&(s||(s={}),s[a]=l)}}return s}function pG(t,e){let r={propertyFound:!1},n=0;for(;n=200&&r.status<300);A.headersMapper&&(s.parsedHeaders=o.serializer.deserialize(A.headersMapper,s.headers.toJSON(),"operationRes.parsedHeaders",{xml:{},ignoreUnknownProperties:!0}))}return s}function B2e(t){let e=Object.keys(t.responses);return e.length===0||e.length===1&&e[0]==="default"}function Q2e(t,e,r,n){var i;let s=200<=t.status&&t.status<300;if(B2e(e)?s:!!r)if(r){if(!r.isError)return{error:null,shouldReturnResponse:!1}}else return{error:null,shouldReturnResponse:!1};let o=r??e.responses.default,A=!((i=t.request.streamResponseStatusCodes)===null||i===void 0)&&i.has(t.status)?`Unexpected status code: ${t.status}`:t.bodyAsText,l=new hr(A,{statusCode:t.status,request:t.request,response:t});if(!o)throw l;let c=o.bodyMapper,d=o.headersMapper;try{if(t.parsedBody){let p=t.parsedBody,u;if(c){let h=p;if(e.isXML&&c.type.name===ma.Sequence){h=[];let f=c.xmlElementName;typeof p=="object"&&f&&(h=p[f])}u=e.serializer.deserialize(c,h,"error.response.parsedBody",n)}let m=p.error||u||p;l.code=m.code,m.message&&(l.message=m.message),c&&(l.response.parsedBody=u)}t.headers&&d&&(l.response.parsedHeaders=e.serializer.deserialize(d,t.headers.toJSON(),"operationRes.parsedHeaders"))}catch(p){l.message=`Error "${p.message}" occurred in deserializing the responseBody - "${t.bodyAsText}" for the default response.`}return{error:l,shouldReturnResponse:!1}}async function w2e(t,e,r,n,i){var s;if(!(!((s=r.request.streamResponseStatusCodes)===null||s===void 0)&&s.has(r.status))&&r.bodyAsText){let a=r.bodyAsText,o=r.headers.get("Content-Type")||"",A=o?o.split(";").map(l=>l.toLowerCase()):[];try{if(A.length===0||A.some(l=>t.indexOf(l)!==-1))return r.parsedBody=JSON.parse(a),r;if(A.some(l=>e.indexOf(l)!==-1)){if(!i)throw new Error("Parsing XML not supported.");let l=await i(a,n.xml);return r.parsedBody=l,r}}catch(l){let c=`Error "${l}" occurred while parsing the response body - ${r.bodyAsText}.`,d=l.code||hr.PARSE_ERROR;throw new hr(c,{code:d,statusCode:r.status,request:r.request,response:r})}}return r}function hG(t){let e=new Set;for(let r in t.responses){let n=t.responses[r];n.bodyMapper&&n.bodyMapper.type.name===ma.Stream&&e.add(Number(r))}return e}function ha(t){let{parameterPath:e,mapper:r}=t,n;return typeof e=="string"?n=e:Array.isArray(e)?n=e.join("."):n=r.serializedName,n}var fG="serializationPolicy";function Qw(t={}){let e=t.stringifyXML;return{name:fG,async sendRequest(r,n){let i=lo(r),s=i?.operationSpec,a=i?.operationArguments;return s&&a&&(S2e(r,a,s),b2e(r,a,s,e)),n(r)}}}function S2e(t,e,r){var n,i;if(r.headerParameters)for(let a of r.headerParameters){let o=vA(e,a);if(o!=null||a.mapper.required){o=r.serializer.serialize(a.mapper,o,ha(a));let A=a.mapper.headerCollectionPrefix;if(A)for(let l of Object.keys(o))t.headers.set(A+l,o[l]);else t.headers.set(a.mapper.serializedName||ha(a),o)}}let s=(i=(n=e.options)===null||n===void 0?void 0:n.requestOptions)===null||i===void 0?void 0:i.customHeaders;if(s)for(let a of Object.keys(s))t.headers.set(a,s[a])}function b2e(t,e,r,n=function(){throw new Error("XML serialization unsupported!")}){var i,s,a,o,A;let l=(i=e.options)===null||i===void 0?void 0:i.serializerOptions,c={xml:{rootName:(s=l?.xml.rootName)!==null&&s!==void 0?s:"",includeRoot:(a=l?.xml.includeRoot)!==null&&a!==void 0?a:!1,xmlCharKey:(o=l?.xml.xmlCharKey)!==null&&o!==void 0?o:"_"}},d=c.xml.xmlCharKey;if(r.requestBody&&r.requestBody.mapper){t.body=vA(e,r.requestBody);let p=r.requestBody.mapper,{required:u,serializedName:m,xmlName:h,xmlElementName:f,xmlNamespace:E,xmlNamespacePrefix:y,nullable:B}=p,Q=p.type.name;try{if(t.body!==void 0&&t.body!==null||B&&t.body===null||u){let C=ha(r.requestBody);t.body=r.serializer.serialize(p,t.body,C,c);let w=Q===ma.Stream;if(r.isXML){let b=y?`xmlns:${y}`:"xmlns",v=v2e(E,b,Q,t.body,c);Q===ma.Sequence?t.body=n(R2e(v,f||h||m,b,E),{rootName:h||m,xmlCharKey:d}):w||(t.body=n(v,{rootName:h||m,xmlCharKey:d}))}else{if(Q===ma.String&&(!((A=r.contentType)===null||A===void 0)&&A.match("text/plain")||r.mediaType==="text"))return;w||(t.body=JSON.stringify(t.body))}}}catch(C){throw new Error(`Error "${C.message}" occurred in serializing the payload - ${JSON.stringify(m,void 0," ")}.`)}}else if(r.formDataParameters&&r.formDataParameters.length>0){t.formData={};for(let p of r.formDataParameters){let u=vA(e,p);if(u!=null){let m=p.mapper.serializedName||ha(p);t.formData[m]=r.serializer.serialize(p.mapper,u,ha(p),c)}}}}function v2e(t,e,r,n,i){if(t&&!["Composite","Sequence","Dictionary"].includes(r)){let s={};return s[i.xml.xmlCharKey]=n,s["$"]={[e]:t},s}return n}function R2e(t,e,r,n){if(Array.isArray(t)||(t=[t]),!r||!n)return{[e]:t};let i={[e]:t};return i["$"]={[r]:n},i}function ww(t={}){let e=cw(t??{});return t.credentialOptions&&e.addPolicy(Gp({credential:t.credentialOptions.credential,scopes:t.credentialOptions.credentialScopes})),e.addPolicy(Qw(t.serializationOptions),{phase:"Serialize"}),e.addPolicy(Bw(t.deserializationOptions),{phase:"Deserialize"}),e}var Sw;function gG(){return Sw||(Sw=pw()),Sw}var N2e={CSV:",",SSV:" ",Multi:"Multi",TSV:" ",Pipes:"|"};function yG(t,e,r,n){let i=T2e(e,r,n),s=!1,a=EG(t,i);if(e.path){let l=EG(e.path,i);e.path==="/{nextLink}"&&l.startsWith("/")&&(l=l.substring(1)),D2e(l)?(a=l,s=!0):a=k2e(a,l)}let{queryParams:o,sequenceParams:A}=P2e(e,r,n);return a=M2e(a,o,A,s),a}function EG(t,e){let r=t;for(let[n,i]of e)r=r.split(n).join(i);return r}function T2e(t,e,r){var n;let i=new Map;if(!((n=t.urlParameters)===null||n===void 0)&&n.length)for(let s of t.urlParameters){let a=vA(e,s,r),o=ha(s);a=t.serializer.serialize(s.mapper,a,o),s.skipEncoding||(a=encodeURIComponent(a)),i.set(`{${s.mapper.serializedName||o}}`,a)}return i}function D2e(t){return t.includes("://")}function k2e(t,e){if(!e)return t;let r=new URL(t),n=r.pathname;n.endsWith("/")||(n=`${n}/`),e.startsWith("/")&&(e=e.substring(1));let i=e.indexOf("?");if(i!==-1){let s=e.substring(0,i),a=e.substring(i+1);n=n+s,a&&(r.search=r.search?`${r.search}&${a}`:a)}else n=n+e;return r.pathname=n,r.toString()}function P2e(t,e,r){var n;let i=new Map,s=new Set;if(!((n=t.queryParameters)===null||n===void 0)&&n.length)for(let a of t.queryParameters){a.mapper.type.name==="Sequence"&&a.mapper.serializedName&&s.add(a.mapper.serializedName);let o=vA(e,a,r);if(o!=null||a.mapper.required){o=t.serializer.serialize(a.mapper,o,ha(a));let A=a.collectionFormat?N2e[a.collectionFormat]:"";if(Array.isArray(o)&&(o=o.map(l=>l??"")),a.collectionFormat==="Multi"&&o.length===0)continue;Array.isArray(o)&&(a.collectionFormat==="SSV"||a.collectionFormat==="TSV")&&(o=o.join(A)),a.skipEncoding||(Array.isArray(o)?o=o.map(l=>encodeURIComponent(l)):o=encodeURIComponent(o)),Array.isArray(o)&&(a.collectionFormat==="CSV"||a.collectionFormat==="Pipes")&&(o=o.join(A)),i.set(a.mapper.serializedName||ha(a),o)}}return{queryParams:i,sequenceParams:s}}function _2e(t){let e=new Map;if(!t||t[0]!=="?")return e;t=t.slice(1);let r=t.split("&");for(let n of r){let[i,s]=n.split("=",2),a=e.get(i);a?Array.isArray(a)?a.push(s):e.set(i,[a,s]):e.set(i,s)}return e}function M2e(t,e,r,n=!1){if(e.size===0)return t;let i=new URL(t),s=_2e(i.search);for(let[o,A]of e){let l=s.get(o);if(Array.isArray(l))if(Array.isArray(A)){l.push(...A);let c=new Set(l);s.set(o,Array.from(c))}else l.push(A);else l?(Array.isArray(A)?A.unshift(l):r.has(o)&&s.set(o,[l,A]),n||s.set(o,A)):s.set(o,A)}let a=[];for(let[o,A]of s)if(typeof A=="string")a.push(`${o}=${A}`);else if(Array.isArray(A))for(let l of A)a.push(`${o}=${l}`);else a.push(`${o}=${A}`);return i.search=a.length?`?${a.join("&")}`:"",i.toString()}var Ry=Aa("core-client");var Yl=class{constructor(e={}){var r,n;if(this._requestContentType=e.requestContentType,this._endpoint=(r=e.endpoint)!==null&&r!==void 0?r:e.baseUri,e.baseUri&&Ry.warning("The baseUri option for SDK Clients has been deprecated, please use endpoint instead."),this._allowInsecureConnection=e.allowInsecureConnection,this._httpClient=e.httpClient||gG(),this.pipeline=e.pipeline||O2e(e),!((n=e.additionalPolicies)===null||n===void 0)&&n.length)for(let{policy:i,position:s}of e.additionalPolicies){let a=s==="perRetry"?"Sign":void 0;this.pipeline.addPolicy(i,{afterPhase:a})}}async sendRequest(e){return this.pipeline.sendRequest(this._httpClient,e)}async sendOperationRequest(e,r){let n=r.baseUrl||this._endpoint;if(!n)throw new Error("If operationSpec.baseUrl is not specified, then the ServiceClient must have a endpoint string property that contains the base URL to use.");let i=yG(n,r,e,this),s=ua({url:i});s.method=r.httpMethod;let a=lo(s);a.operationSpec=r,a.operationArguments=e;let o=r.contentType||this._requestContentType;o&&r.requestBody&&s.headers.set("Content-Type",o);let A=e.options;if(A){let l=A.requestOptions;l&&(l.timeout&&(s.timeout=l.timeout),l.onUploadProgress&&(s.onUploadProgress=l.onUploadProgress),l.onDownloadProgress&&(s.onDownloadProgress=l.onDownloadProgress),l.shouldDeserialize!==void 0&&(a.shouldDeserialize=l.shouldDeserialize),l.allowInsecureConnection&&(s.allowInsecureConnection=!0)),A.abortSignal&&(s.abortSignal=A.abortSignal),A.tracingOptions&&(s.tracingOptions=A.tracingOptions)}this._allowInsecureConnection&&(s.allowInsecureConnection=!0),s.streamResponseStatusCodes===void 0&&(s.streamResponseStatusCodes=hG(r));try{let l=await this.sendRequest(s),c=gw(l,r.responses[l.status]);return A?.onResponse&&A.onResponse(l,c),c}catch(l){if(typeof l=="object"&&l?.response){let c=l.response,d=gw(c,r.responses[l.statusCode]||r.responses.default);l.details=d,A?.onResponse&&A.onResponse(c,d,l)}throw l}}};function O2e(t){let e=x2e(t),r=t.credential&&e?{credentialScopes:e,credential:t.credential}:void 0;return ww(Object.assign(Object.assign({},t),{credentialOptions:r}))}function x2e(t){if(t.credentialScopes)return t.credentialScopes;if(t.endpoint)return`${t.endpoint}/.default`;if(t.baseUri)return`${t.baseUri}/.default`;if(t.credential&&!t.credentialScopes)throw new Error("When using credentials, the ServiceClientOptions must contain either a endpoint or a credentialScopes. Unable to create a bearerTokenAuthenticationPolicy")}function L2e(t){return`, ${t.trim()}`.split(", Bearer ").filter(r=>r).map(r=>`${r.trim()}, `.split('", ').filter(s=>s).map(s=>(([a,o])=>({[a]:o}))(s.trim().split('="'))).reduce((s,a)=>Object.assign(Object.assign({},s),a),{}))}async function bw(t){let{scopes:e,response:r}=t,n=t.logger||Ry,i=r.headers.get("WWW-Authenticate");if(!i)return n.info("The WWW-Authenticate header was missing. Failed to perform the Continuous Access Evaluation authentication flow."),!1;let a=(L2e(i)||[]).find(A=>A.claims);if(!a)return n.info('The WWW-Authenticate header was missing the necessary "claims" to perform the Continuous Access Evaluation authentication flow.'),!1;let o=await t.getAccessToken(a.scope?[a.scope]:e,{claims:nG(a.claims)});return o?(t.request.headers.set("Authorization",`Bearer ${o.token}`),!0):!1}kr();var Wr={};Ur(Wr,{Alias:()=>eye,AliasPath:()=>tye,AliasPathMetadata:()=>nye,AliasPattern:()=>rye,ApiProfile:()=>sye,BasicDependency:()=>oye,CloudError:()=>P,DebugSetting:()=>z2e,Dependency:()=>aye,Deployment:()=>vw,DeploymentDiagnosticsDefinition:()=>cye,DeploymentExportResult:()=>Jl,DeploymentExtended:()=>ct,DeploymentExtendedFilter:()=>Tye,DeploymentListResult:()=>as,DeploymentOperation:()=>jl,DeploymentOperationProperties:()=>Sye,DeploymentOperationsListResult:()=>os,DeploymentParameter:()=>H2e,DeploymentProperties:()=>CG,DeploymentPropertiesExtended:()=>K2e,DeploymentValidateResult:()=>Wt,DeploymentWhatIf:()=>Tw,DeploymentWhatIfProperties:()=>Mye,DeploymentWhatIfSettings:()=>dye,DeploymentsWhatIfAtManagementGroupScopeHeaders:()=>Lye,DeploymentsWhatIfAtSubscriptionScopeHeaders:()=>Fye,DeploymentsWhatIfAtTenantScopeHeaders:()=>xye,DeploymentsWhatIfHeaders:()=>Uye,ErrorAdditionalInfo:()=>V2e,ErrorResponse:()=>q2e,ExportTemplateRequest:()=>Mw,ExpressionEvaluationOptions:()=>$2e,ExtendedLocation:()=>Bye,GenericResource:()=>Lt,GenericResourceExpanded:()=>Oye,GenericResourceFilter:()=>Dye,HttpMessage:()=>Rye,Identity:()=>Cye,IdentityUserAssignedIdentitiesValue:()=>Iye,KeyVaultParameterReference:()=>Y2e,KeyVaultReference:()=>J2e,OnErrorDeployment:()=>W2e,OnErrorDeploymentExtended:()=>Aye,Operation:()=>F2e,OperationDisplay:()=>U2e,OperationListResult:()=>Ny,ParametersLink:()=>j2e,Permission:()=>fye,Plan:()=>Eye,Provider:()=>Hp,ProviderConsentDefinition:()=>gye,ProviderExtendedLocation:()=>Z2e,ProviderListResult:()=>Yp,ProviderPermission:()=>mye,ProviderPermissionListResult:()=>Dw,ProviderRegistrationRequest:()=>kw,ProviderResourceType:()=>X2e,ProviderResourceTypeListResult:()=>Pw,Resource:()=>IG,ResourceGroup:()=>RA,ResourceGroupExportResult:()=>jp,ResourceGroupFilter:()=>kye,ResourceGroupListResult:()=>Ty,ResourceGroupPatchable:()=>_w,ResourceGroupProperties:()=>Qye,ResourceGroupsDeleteHeaders:()=>qye,ResourceListResult:()=>Jp,ResourceProviderOperationDisplayProperties:()=>Pye,ResourceReference:()=>lye,ResourcesMoveInfo:()=>Ow,RoleDefinition:()=>hye,ScopedDeployment:()=>Rw,ScopedDeploymentWhatIf:()=>Nw,Sku:()=>yye,StatusMessage:()=>bye,SubResource:()=>_ye,TagCount:()=>wye,TagDetails:()=>ky,TagValue:()=>Dy,Tags:()=>Nye,TagsCreateOrUpdateAtScopeHeaders:()=>Vye,TagsDeleteAtScopeHeaders:()=>Hye,TagsListResult:()=>Py,TagsPatchResource:()=>Lw,TagsResource:()=>bi,TagsUpdateAtScopeHeaders:()=>Gye,TargetResource:()=>vye,TemplateHashResult:()=>xw,TemplateLink:()=>G2e,WhatIfChange:()=>pye,WhatIfOperationResult:()=>Mr,WhatIfPropertyChange:()=>uye,ZoneMapping:()=>iye});var Ny={type:{name:"Composite",className:"OperationListResult",modelProperties:{value:{serializedName:"value",type:{name:"Sequence",element:{type:{name:"Composite",className:"Operation"}}}},nextLink:{serializedName:"nextLink",type:{name:"String"}}}}},F2e={type:{name:"Composite",className:"Operation",modelProperties:{name:{serializedName:"name",type:{name:"String"}},display:{serializedName:"display",type:{name:"Composite",className:"OperationDisplay"}}}}},U2e={type:{name:"Composite",className:"OperationDisplay",modelProperties:{provider:{serializedName:"provider",type:{name:"String"}},resource:{serializedName:"resource",type:{name:"String"}},operation:{serializedName:"operation",type:{name:"String"}},description:{serializedName:"description",type:{name:"String"}}}}},P={type:{name:"Composite",className:"CloudError",modelProperties:{error:{serializedName:"error",type:{name:"Composite",className:"ErrorResponse"}}}}},q2e={type:{name:"Composite",className:"ErrorResponse",modelProperties:{code:{serializedName:"code",readOnly:!0,type:{name:"String"}},message:{serializedName:"message",readOnly:!0,type:{name:"String"}},target:{serializedName:"target",readOnly:!0,type:{name:"String"}},details:{serializedName:"details",readOnly:!0,type:{name:"Sequence",element:{type:{name:"Composite",className:"ErrorResponse"}}}},additionalInfo:{serializedName:"additionalInfo",readOnly:!0,type:{name:"Sequence",element:{type:{name:"Composite",className:"ErrorAdditionalInfo"}}}}}}},V2e={type:{name:"Composite",className:"ErrorAdditionalInfo",modelProperties:{type:{serializedName:"type",readOnly:!0,type:{name:"String"}},info:{serializedName:"info",readOnly:!0,type:{name:"Dictionary",value:{type:{name:"any"}}}}}}},vw={type:{name:"Composite",className:"Deployment",modelProperties:{location:{serializedName:"location",type:{name:"String"}},properties:{serializedName:"properties",type:{name:"Composite",className:"DeploymentProperties"}},tags:{serializedName:"tags",type:{name:"Dictionary",value:{type:{name:"String"}}}}}}},CG={type:{name:"Composite",className:"DeploymentProperties",modelProperties:{template:{serializedName:"template",type:{name:"Dictionary",value:{type:{name:"any"}}}},templateLink:{serializedName:"templateLink",type:{name:"Composite",className:"TemplateLink"}},parameters:{serializedName:"parameters",type:{name:"Dictionary",value:{type:{name:"Composite",className:"DeploymentParameter"}}}},parametersLink:{serializedName:"parametersLink",type:{name:"Composite",className:"ParametersLink"}},mode:{serializedName:"mode",required:!0,type:{name:"Enum",allowedValues:["Incremental","Complete"]}},debugSetting:{serializedName:"debugSetting",type:{name:"Composite",className:"DebugSetting"}},onErrorDeployment:{serializedName:"onErrorDeployment",type:{name:"Composite",className:"OnErrorDeployment"}},expressionEvaluationOptions:{serializedName:"expressionEvaluationOptions",type:{name:"Composite",className:"ExpressionEvaluationOptions"}},validationLevel:{serializedName:"validationLevel",type:{name:"String"}}}}},G2e={type:{name:"Composite",className:"TemplateLink",modelProperties:{uri:{serializedName:"uri",type:{name:"String"}},id:{serializedName:"id",type:{name:"String"}},relativePath:{serializedName:"relativePath",type:{name:"String"}},contentVersion:{serializedName:"contentVersion",type:{name:"String"}},queryString:{serializedName:"queryString",type:{name:"String"}}}}},H2e={type:{name:"Composite",className:"DeploymentParameter",modelProperties:{value:{serializedName:"value",type:{name:"any"}},reference:{serializedName:"reference",type:{name:"Composite",className:"KeyVaultParameterReference"}}}}},Y2e={type:{name:"Composite",className:"KeyVaultParameterReference",modelProperties:{keyVault:{serializedName:"keyVault",type:{name:"Composite",className:"KeyVaultReference"}},secretName:{serializedName:"secretName",required:!0,type:{name:"String"}},secretVersion:{serializedName:"secretVersion",type:{name:"String"}}}}},J2e={type:{name:"Composite",className:"KeyVaultReference",modelProperties:{id:{serializedName:"id",required:!0,type:{name:"String"}}}}},j2e={type:{name:"Composite",className:"ParametersLink",modelProperties:{uri:{serializedName:"uri",required:!0,type:{name:"String"}},contentVersion:{serializedName:"contentVersion",type:{name:"String"}}}}},z2e={type:{name:"Composite",className:"DebugSetting",modelProperties:{detailLevel:{serializedName:"detailLevel",type:{name:"String"}}}}},W2e={type:{name:"Composite",className:"OnErrorDeployment",modelProperties:{type:{serializedName:"type",type:{name:"Enum",allowedValues:["LastSuccessful","SpecificDeployment"]}},deploymentName:{serializedName:"deploymentName",type:{name:"String"}}}}},$2e={type:{name:"Composite",className:"ExpressionEvaluationOptions",modelProperties:{scope:{serializedName:"scope",type:{name:"String"}}}}},ct={type:{name:"Composite",className:"DeploymentExtended",modelProperties:{id:{serializedName:"id",readOnly:!0,type:{name:"String"}},name:{serializedName:"name",readOnly:!0,type:{name:"String"}},type:{serializedName:"type",readOnly:!0,type:{name:"String"}},location:{serializedName:"location",type:{name:"String"}},properties:{serializedName:"properties",type:{name:"Composite",className:"DeploymentPropertiesExtended"}},tags:{serializedName:"tags",type:{name:"Dictionary",value:{type:{name:"String"}}}}}}},K2e={type:{name:"Composite",className:"DeploymentPropertiesExtended",modelProperties:{provisioningState:{serializedName:"provisioningState",readOnly:!0,type:{name:"String"}},correlationId:{serializedName:"correlationId",readOnly:!0,type:{name:"String"}},timestamp:{serializedName:"timestamp",readOnly:!0,type:{name:"DateTime"}},duration:{serializedName:"duration",readOnly:!0,type:{name:"String"}},outputs:{serializedName:"outputs",readOnly:!0,type:{name:"Dictionary",value:{type:{name:"any"}}}},providers:{serializedName:"providers",readOnly:!0,type:{name:"Sequence",element:{type:{name:"Composite",className:"Provider"}}}},dependencies:{serializedName:"dependencies",readOnly:!0,type:{name:"Sequence",element:{type:{name:"Composite",className:"Dependency"}}}},templateLink:{serializedName:"templateLink",type:{name:"Composite",className:"TemplateLink"}},parameters:{serializedName:"parameters",readOnly:!0,type:{name:"Dictionary",value:{type:{name:"any"}}}},parametersLink:{serializedName:"parametersLink",type:{name:"Composite",className:"ParametersLink"}},mode:{serializedName:"mode",readOnly:!0,type:{name:"Enum",allowedValues:["Incremental","Complete"]}},debugSetting:{serializedName:"debugSetting",type:{name:"Composite",className:"DebugSetting"}},onErrorDeployment:{serializedName:"onErrorDeployment",type:{name:"Composite",className:"OnErrorDeploymentExtended"}},templateHash:{serializedName:"templateHash",readOnly:!0,type:{name:"String"}},outputResources:{serializedName:"outputResources",readOnly:!0,type:{name:"Sequence",element:{type:{name:"Composite",className:"ResourceReference"}}}},validatedResources:{serializedName:"validatedResources",readOnly:!0,type:{name:"Sequence",element:{type:{name:"Composite",className:"ResourceReference"}}}},error:{serializedName:"error",type:{name:"Composite",className:"ErrorResponse"}},diagnostics:{serializedName:"diagnostics",readOnly:!0,type:{name:"Sequence",element:{type:{name:"Composite",className:"DeploymentDiagnosticsDefinition"}}}},validationLevel:{serializedName:"validationLevel",type:{name:"String"}}}}},Hp={type:{name:"Composite",className:"Provider",modelProperties:{id:{serializedName:"id",readOnly:!0,type:{name:"String"}},namespace:{serializedName:"namespace",type:{name:"String"}},registrationState:{serializedName:"registrationState",readOnly:!0,type:{name:"String"}},registrationPolicy:{serializedName:"registrationPolicy",readOnly:!0,type:{name:"String"}},resourceTypes:{serializedName:"resourceTypes",readOnly:!0,type:{name:"Sequence",element:{type:{name:"Composite",className:"ProviderResourceType"}}}},providerAuthorizationConsentState:{serializedName:"providerAuthorizationConsentState",type:{name:"String"}}}}},X2e={type:{name:"Composite",className:"ProviderResourceType",modelProperties:{resourceType:{serializedName:"resourceType",type:{name:"String"}},locations:{serializedName:"locations",type:{name:"Sequence",element:{type:{name:"String"}}}},locationMappings:{serializedName:"locationMappings",type:{name:"Sequence",element:{type:{name:"Composite",className:"ProviderExtendedLocation"}}}},aliases:{serializedName:"aliases",type:{name:"Sequence",element:{type:{name:"Composite",className:"Alias"}}}},apiVersions:{serializedName:"apiVersions",type:{name:"Sequence",element:{type:{name:"String"}}}},defaultApiVersion:{serializedName:"defaultApiVersion",readOnly:!0,type:{name:"String"}},zoneMappings:{serializedName:"zoneMappings",type:{name:"Sequence",element:{type:{name:"Composite",className:"ZoneMapping"}}}},apiProfiles:{serializedName:"apiProfiles",readOnly:!0,type:{name:"Sequence",element:{type:{name:"Composite",className:"ApiProfile"}}}},capabilities:{serializedName:"capabilities",type:{name:"String"}},properties:{serializedName:"properties",type:{name:"Dictionary",value:{type:{name:"String"}}}}}}},Z2e={type:{name:"Composite",className:"ProviderExtendedLocation",modelProperties:{location:{serializedName:"location",type:{name:"String"}},type:{serializedName:"type",type:{name:"String"}},extendedLocations:{serializedName:"extendedLocations",type:{name:"Sequence",element:{type:{name:"String"}}}}}}},eye={type:{name:"Composite",className:"Alias",modelProperties:{name:{serializedName:"name",type:{name:"String"}},paths:{serializedName:"paths",type:{name:"Sequence",element:{type:{name:"Composite",className:"AliasPath"}}}},type:{serializedName:"type",type:{name:"Enum",allowedValues:["NotSpecified","PlainText","Mask"]}},defaultPath:{serializedName:"defaultPath",type:{name:"String"}},defaultPattern:{serializedName:"defaultPattern",type:{name:"Composite",className:"AliasPattern"}},defaultMetadata:{serializedName:"defaultMetadata",type:{name:"Composite",className:"AliasPathMetadata"}}}}},tye={type:{name:"Composite",className:"AliasPath",modelProperties:{path:{serializedName:"path",type:{name:"String"}},apiVersions:{serializedName:"apiVersions",type:{name:"Sequence",element:{type:{name:"String"}}}},pattern:{serializedName:"pattern",type:{name:"Composite",className:"AliasPattern"}},metadata:{serializedName:"metadata",type:{name:"Composite",className:"AliasPathMetadata"}}}}},rye={type:{name:"Composite",className:"AliasPattern",modelProperties:{phrase:{serializedName:"phrase",type:{name:"String"}},variable:{serializedName:"variable",type:{name:"String"}},type:{serializedName:"type",type:{name:"Enum",allowedValues:["NotSpecified","Extract"]}}}}},nye={type:{name:"Composite",className:"AliasPathMetadata",modelProperties:{type:{serializedName:"type",readOnly:!0,type:{name:"String"}},attributes:{serializedName:"attributes",readOnly:!0,type:{name:"String"}}}}},iye={type:{name:"Composite",className:"ZoneMapping",modelProperties:{location:{serializedName:"location",type:{name:"String"}},zones:{serializedName:"zones",type:{name:"Sequence",element:{type:{name:"String"}}}}}}},sye={type:{name:"Composite",className:"ApiProfile",modelProperties:{profileVersion:{serializedName:"profileVersion",readOnly:!0,type:{name:"String"}},apiVersion:{serializedName:"apiVersion",readOnly:!0,type:{name:"String"}}}}},aye={type:{name:"Composite",className:"Dependency",modelProperties:{dependsOn:{serializedName:"dependsOn",type:{name:"Sequence",element:{type:{name:"Composite",className:"BasicDependency"}}}},id:{serializedName:"id",type:{name:"String"}},resourceType:{serializedName:"resourceType",type:{name:"String"}},resourceName:{serializedName:"resourceName",type:{name:"String"}}}}},oye={type:{name:"Composite",className:"BasicDependency",modelProperties:{id:{serializedName:"id",type:{name:"String"}},resourceType:{serializedName:"resourceType",type:{name:"String"}},resourceName:{serializedName:"resourceName",type:{name:"String"}}}}},Aye={type:{name:"Composite",className:"OnErrorDeploymentExtended",modelProperties:{provisioningState:{serializedName:"provisioningState",readOnly:!0,type:{name:"String"}},type:{serializedName:"type",type:{name:"Enum",allowedValues:["LastSuccessful","SpecificDeployment"]}},deploymentName:{serializedName:"deploymentName",type:{name:"String"}}}}},lye={type:{name:"Composite",className:"ResourceReference",modelProperties:{id:{serializedName:"id",readOnly:!0,type:{name:"String"}}}}},cye={type:{name:"Composite",className:"DeploymentDiagnosticsDefinition",modelProperties:{level:{serializedName:"level",required:!0,readOnly:!0,type:{name:"String"}},code:{serializedName:"code",required:!0,readOnly:!0,type:{name:"String"}},message:{serializedName:"message",required:!0,readOnly:!0,type:{name:"String"}},target:{serializedName:"target",readOnly:!0,type:{name:"String"}},additionalInfo:{serializedName:"additionalInfo",readOnly:!0,type:{name:"Sequence",element:{type:{name:"Composite",className:"ErrorAdditionalInfo"}}}}}}},Wt={type:{name:"Composite",className:"DeploymentValidateResult",modelProperties:{error:{serializedName:"error",type:{name:"Composite",className:"ErrorResponse"}},id:{serializedName:"id",readOnly:!0,type:{name:"String"}},name:{serializedName:"name",readOnly:!0,type:{name:"String"}},type:{serializedName:"type",readOnly:!0,type:{name:"String"}},properties:{serializedName:"properties",type:{name:"Composite",className:"DeploymentPropertiesExtended"}}}}},Jl={type:{name:"Composite",className:"DeploymentExportResult",modelProperties:{template:{serializedName:"template",type:{name:"Dictionary",value:{type:{name:"any"}}}}}}},as={type:{name:"Composite",className:"DeploymentListResult",modelProperties:{value:{serializedName:"value",type:{name:"Sequence",element:{type:{name:"Composite",className:"DeploymentExtended"}}}},nextLink:{serializedName:"nextLink",readOnly:!0,type:{name:"String"}}}}},Rw={type:{name:"Composite",className:"ScopedDeployment",modelProperties:{location:{serializedName:"location",required:!0,type:{name:"String"}},properties:{serializedName:"properties",type:{name:"Composite",className:"DeploymentProperties"}},tags:{serializedName:"tags",type:{name:"Dictionary",value:{type:{name:"String"}}}}}}},Nw={type:{name:"Composite",className:"ScopedDeploymentWhatIf",modelProperties:{location:{serializedName:"location",required:!0,type:{name:"String"}},properties:{serializedName:"properties",type:{name:"Composite",className:"DeploymentWhatIfProperties"}}}}},dye={type:{name:"Composite",className:"DeploymentWhatIfSettings",modelProperties:{resultFormat:{serializedName:"resultFormat",type:{name:"Enum",allowedValues:["ResourceIdOnly","FullResourcePayloads"]}}}}},Mr={type:{name:"Composite",className:"WhatIfOperationResult",modelProperties:{status:{serializedName:"status",type:{name:"String"}},error:{serializedName:"error",type:{name:"Composite",className:"ErrorResponse"}},changes:{serializedName:"properties.changes",type:{name:"Sequence",element:{type:{name:"Composite",className:"WhatIfChange"}}}},potentialChanges:{serializedName:"properties.potentialChanges",type:{name:"Sequence",element:{type:{name:"Composite",className:"WhatIfChange"}}}},diagnostics:{serializedName:"properties.diagnostics",readOnly:!0,type:{name:"Sequence",element:{type:{name:"Composite",className:"DeploymentDiagnosticsDefinition"}}}}}}},pye={type:{name:"Composite",className:"WhatIfChange",modelProperties:{resourceId:{serializedName:"resourceId",type:{name:"String"}},deploymentId:{serializedName:"deploymentId",type:{name:"String"}},symbolicName:{serializedName:"symbolicName",type:{name:"String"}},identifiers:{serializedName:"identifiers",type:{name:"Dictionary",value:{type:{name:"any"}}}},changeType:{serializedName:"changeType",required:!0,type:{name:"Enum",allowedValues:["Create","Delete","Ignore","Deploy","NoChange","Modify","Unsupported"]}},unsupportedReason:{serializedName:"unsupportedReason",type:{name:"String"}},before:{serializedName:"before",type:{name:"Dictionary",value:{type:{name:"any"}}}},after:{serializedName:"after",type:{name:"Dictionary",value:{type:{name:"any"}}}},delta:{serializedName:"delta",type:{name:"Sequence",element:{type:{name:"Composite",className:"WhatIfPropertyChange"}}}}}}},uye={type:{name:"Composite",className:"WhatIfPropertyChange",modelProperties:{path:{serializedName:"path",required:!0,type:{name:"String"}},propertyChangeType:{serializedName:"propertyChangeType",required:!0,type:{name:"Enum",allowedValues:["Create","Delete","Modify","Array","NoEffect"]}},before:{serializedName:"before",type:{name:"Dictionary",value:{type:{name:"any"}}}},after:{serializedName:"after",type:{name:"Dictionary",value:{type:{name:"any"}}}},children:{serializedName:"children",type:{name:"Sequence",element:{type:{name:"Composite",className:"WhatIfPropertyChange"}}}}}}},Tw={type:{name:"Composite",className:"DeploymentWhatIf",modelProperties:{location:{serializedName:"location",type:{name:"String"}},properties:{serializedName:"properties",type:{name:"Composite",className:"DeploymentWhatIfProperties"}}}}},Dw={type:{name:"Composite",className:"ProviderPermissionListResult",modelProperties:{value:{serializedName:"value",type:{name:"Sequence",element:{type:{name:"Composite",className:"ProviderPermission"}}}},nextLink:{serializedName:"nextLink",readOnly:!0,type:{name:"String"}}}}},mye={type:{name:"Composite",className:"ProviderPermission",modelProperties:{applicationId:{serializedName:"applicationId",type:{name:"String"}},roleDefinition:{serializedName:"roleDefinition",type:{name:"Composite",className:"RoleDefinition"}},managedByRoleDefinition:{serializedName:"managedByRoleDefinition",type:{name:"Composite",className:"RoleDefinition"}},providerAuthorizationConsentState:{serializedName:"providerAuthorizationConsentState",type:{name:"String"}}}}},hye={type:{name:"Composite",className:"RoleDefinition",modelProperties:{id:{serializedName:"id",type:{name:"String"}},name:{serializedName:"name",type:{name:"String"}},isServiceRole:{serializedName:"isServiceRole",type:{name:"Boolean"}},permissions:{serializedName:"permissions",type:{name:"Sequence",element:{type:{name:"Composite",className:"Permission"}}}},scopes:{serializedName:"scopes",type:{name:"Sequence",element:{type:{name:"String"}}}}}}},fye={type:{name:"Composite",className:"Permission",modelProperties:{actions:{serializedName:"actions",type:{name:"Sequence",element:{type:{name:"String"}}}},notActions:{serializedName:"notActions",type:{name:"Sequence",element:{type:{name:"String"}}}},dataActions:{serializedName:"dataActions",type:{name:"Sequence",element:{type:{name:"String"}}}},notDataActions:{serializedName:"notDataActions",type:{name:"Sequence",element:{type:{name:"String"}}}}}}},kw={type:{name:"Composite",className:"ProviderRegistrationRequest",modelProperties:{thirdPartyProviderConsent:{serializedName:"thirdPartyProviderConsent",type:{name:"Composite",className:"ProviderConsentDefinition"}}}}},gye={type:{name:"Composite",className:"ProviderConsentDefinition",modelProperties:{consentToAuthorization:{serializedName:"consentToAuthorization",type:{name:"Boolean"}}}}},Yp={type:{name:"Composite",className:"ProviderListResult",modelProperties:{value:{serializedName:"value",type:{name:"Sequence",element:{type:{name:"Composite",className:"Provider"}}}},nextLink:{serializedName:"nextLink",readOnly:!0,type:{name:"String"}}}}},Pw={type:{name:"Composite",className:"ProviderResourceTypeListResult",modelProperties:{value:{serializedName:"value",type:{name:"Sequence",element:{type:{name:"Composite",className:"ProviderResourceType"}}}},nextLink:{serializedName:"nextLink",readOnly:!0,type:{name:"String"}}}}},Jp={type:{name:"Composite",className:"ResourceListResult",modelProperties:{value:{serializedName:"value",type:{name:"Sequence",element:{type:{name:"Composite",className:"GenericResourceExpanded"}}}},nextLink:{serializedName:"nextLink",readOnly:!0,type:{name:"String"}}}}},Eye={type:{name:"Composite",className:"Plan",modelProperties:{name:{serializedName:"name",type:{name:"String"}},publisher:{serializedName:"publisher",type:{name:"String"}},product:{serializedName:"product",type:{name:"String"}},promotionCode:{serializedName:"promotionCode",type:{name:"String"}},version:{serializedName:"version",type:{name:"String"}}}}},yye={type:{name:"Composite",className:"Sku",modelProperties:{name:{serializedName:"name",type:{name:"String"}},tier:{serializedName:"tier",type:{name:"String"}},size:{serializedName:"size",type:{name:"String"}},family:{serializedName:"family",type:{name:"String"}},model:{serializedName:"model",type:{name:"String"}},capacity:{serializedName:"capacity",type:{name:"Number"}}}}},Cye={type:{name:"Composite",className:"Identity",modelProperties:{principalId:{serializedName:"principalId",readOnly:!0,type:{name:"String"}},tenantId:{serializedName:"tenantId",readOnly:!0,type:{name:"String"}},type:{serializedName:"type",type:{name:"Enum",allowedValues:["SystemAssigned","UserAssigned","SystemAssigned, UserAssigned","None"]}},userAssignedIdentities:{serializedName:"userAssignedIdentities",type:{name:"Dictionary",value:{type:{name:"Composite",className:"IdentityUserAssignedIdentitiesValue"}}}}}}},Iye={type:{name:"Composite",className:"IdentityUserAssignedIdentitiesValue",modelProperties:{principalId:{serializedName:"principalId",readOnly:!0,type:{name:"String"}},clientId:{serializedName:"clientId",readOnly:!0,type:{name:"String"}}}}},IG={type:{name:"Composite",className:"Resource",modelProperties:{id:{serializedName:"id",readOnly:!0,type:{name:"String"}},name:{serializedName:"name",readOnly:!0,type:{name:"String"}},type:{serializedName:"type",readOnly:!0,type:{name:"String"}},location:{serializedName:"location",type:{name:"String"}},extendedLocation:{serializedName:"extendedLocation",type:{name:"Composite",className:"ExtendedLocation"}},tags:{serializedName:"tags",type:{name:"Dictionary",value:{type:{name:"String"}}}}}}},Bye={type:{name:"Composite",className:"ExtendedLocation",modelProperties:{type:{serializedName:"type",type:{name:"String"}},name:{serializedName:"name",type:{name:"String"}}}}},RA={type:{name:"Composite",className:"ResourceGroup",modelProperties:{id:{serializedName:"id",readOnly:!0,type:{name:"String"}},name:{serializedName:"name",readOnly:!0,type:{name:"String"}},type:{serializedName:"type",readOnly:!0,type:{name:"String"}},properties:{serializedName:"properties",type:{name:"Composite",className:"ResourceGroupProperties"}},location:{serializedName:"location",required:!0,type:{name:"String"}},managedBy:{serializedName:"managedBy",type:{name:"String"}},tags:{serializedName:"tags",type:{name:"Dictionary",value:{type:{name:"String"}}}}}}},Qye={type:{name:"Composite",className:"ResourceGroupProperties",modelProperties:{provisioningState:{serializedName:"provisioningState",readOnly:!0,type:{name:"String"}}}}},_w={type:{name:"Composite",className:"ResourceGroupPatchable",modelProperties:{name:{serializedName:"name",type:{name:"String"}},properties:{serializedName:"properties",type:{name:"Composite",className:"ResourceGroupProperties"}},managedBy:{serializedName:"managedBy",type:{name:"String"}},tags:{serializedName:"tags",type:{name:"Dictionary",value:{type:{name:"String"}}}}}}},Mw={type:{name:"Composite",className:"ExportTemplateRequest",modelProperties:{resources:{serializedName:"resources",type:{name:"Sequence",element:{type:{name:"String"}}}},options:{serializedName:"options",type:{name:"String"}},outputFormat:{serializedName:"outputFormat",type:{name:"String"}}}}},jp={type:{name:"Composite",className:"ResourceGroupExportResult",modelProperties:{template:{serializedName:"template",type:{name:"Dictionary",value:{type:{name:"any"}}}},output:{serializedName:"output",type:{name:"String"}},error:{serializedName:"error",type:{name:"Composite",className:"ErrorResponse"}}}}},Ty={type:{name:"Composite",className:"ResourceGroupListResult",modelProperties:{value:{serializedName:"value",type:{name:"Sequence",element:{type:{name:"Composite",className:"ResourceGroup"}}}},nextLink:{serializedName:"nextLink",readOnly:!0,type:{name:"String"}}}}},Ow={type:{name:"Composite",className:"ResourcesMoveInfo",modelProperties:{resources:{serializedName:"resources",type:{name:"Sequence",element:{type:{name:"String"}}}},targetResourceGroup:{serializedName:"targetResourceGroup",type:{name:"String"}}}}},Dy={type:{name:"Composite",className:"TagValue",modelProperties:{id:{serializedName:"id",readOnly:!0,type:{name:"String"}},tagValue:{serializedName:"tagValue",type:{name:"String"}},count:{serializedName:"count",type:{name:"Composite",className:"TagCount"}}}}},wye={type:{name:"Composite",className:"TagCount",modelProperties:{type:{serializedName:"type",type:{name:"String"}},value:{serializedName:"value",type:{name:"Number"}}}}},ky={type:{name:"Composite",className:"TagDetails",modelProperties:{id:{serializedName:"id",readOnly:!0,type:{name:"String"}},tagName:{serializedName:"tagName",type:{name:"String"}},count:{serializedName:"count",type:{name:"Composite",className:"TagCount"}},values:{serializedName:"values",type:{name:"Sequence",element:{type:{name:"Composite",className:"TagValue"}}}}}}},Py={type:{name:"Composite",className:"TagsListResult",modelProperties:{value:{serializedName:"value",type:{name:"Sequence",element:{type:{name:"Composite",className:"TagDetails"}}}},nextLink:{serializedName:"nextLink",readOnly:!0,type:{name:"String"}}}}},jl={type:{name:"Composite",className:"DeploymentOperation",modelProperties:{id:{serializedName:"id",readOnly:!0,type:{name:"String"}},operationId:{serializedName:"operationId",readOnly:!0,type:{name:"String"}},properties:{serializedName:"properties",type:{name:"Composite",className:"DeploymentOperationProperties"}}}}},Sye={type:{name:"Composite",className:"DeploymentOperationProperties",modelProperties:{provisioningOperation:{serializedName:"provisioningOperation",readOnly:!0,type:{name:"Enum",allowedValues:["NotSpecified","Create","Delete","Waiting","AzureAsyncOperationWaiting","ResourceCacheWaiting","Action","Read","EvaluateDeploymentOutput","DeploymentCleanup"]}},provisioningState:{serializedName:"provisioningState",readOnly:!0,type:{name:"String"}},timestamp:{serializedName:"timestamp",readOnly:!0,type:{name:"DateTime"}},duration:{serializedName:"duration",readOnly:!0,type:{name:"String"}},serviceRequestId:{serializedName:"serviceRequestId",readOnly:!0,type:{name:"String"}},statusCode:{serializedName:"statusCode",readOnly:!0,type:{name:"String"}},statusMessage:{serializedName:"statusMessage",type:{name:"Composite",className:"StatusMessage"}},targetResource:{serializedName:"targetResource",type:{name:"Composite",className:"TargetResource"}},request:{serializedName:"request",type:{name:"Composite",className:"HttpMessage"}},response:{serializedName:"response",type:{name:"Composite",className:"HttpMessage"}}}}},bye={type:{name:"Composite",className:"StatusMessage",modelProperties:{status:{serializedName:"status",type:{name:"String"}},error:{serializedName:"error",type:{name:"Composite",className:"ErrorResponse"}}}}},vye={type:{name:"Composite",className:"TargetResource",modelProperties:{id:{serializedName:"id",type:{name:"String"}},resourceName:{serializedName:"resourceName",type:{name:"String"}},resourceType:{serializedName:"resourceType",type:{name:"String"}}}}},Rye={type:{name:"Composite",className:"HttpMessage",modelProperties:{content:{serializedName:"content",type:{name:"Dictionary",value:{type:{name:"any"}}}}}}},os={type:{name:"Composite",className:"DeploymentOperationsListResult",modelProperties:{value:{serializedName:"value",type:{name:"Sequence",element:{type:{name:"Composite",className:"DeploymentOperation"}}}},nextLink:{serializedName:"nextLink",readOnly:!0,type:{name:"String"}}}}},xw={type:{name:"Composite",className:"TemplateHashResult",modelProperties:{minifiedTemplate:{serializedName:"minifiedTemplate",type:{name:"String"}},templateHash:{serializedName:"templateHash",type:{name:"String"}}}}},bi={type:{name:"Composite",className:"TagsResource",modelProperties:{id:{serializedName:"id",readOnly:!0,type:{name:"String"}},name:{serializedName:"name",readOnly:!0,type:{name:"String"}},type:{serializedName:"type",readOnly:!0,type:{name:"String"}},properties:{serializedName:"properties",type:{name:"Composite",className:"Tags"}}}}},Nye={type:{name:"Composite",className:"Tags",modelProperties:{tags:{serializedName:"tags",type:{name:"Dictionary",value:{type:{name:"String"}}}}}}},Lw={type:{name:"Composite",className:"TagsPatchResource",modelProperties:{operation:{serializedName:"operation",type:{name:"String"}},properties:{serializedName:"properties",type:{name:"Composite",className:"Tags"}}}}},Tye={type:{name:"Composite",className:"DeploymentExtendedFilter",modelProperties:{provisioningState:{serializedName:"provisioningState",type:{name:"String"}}}}},Dye={type:{name:"Composite",className:"GenericResourceFilter",modelProperties:{resourceType:{serializedName:"resourceType",type:{name:"String"}},tagname:{serializedName:"tagname",type:{name:"String"}},tagvalue:{serializedName:"tagvalue",type:{name:"String"}}}}},kye={type:{name:"Composite",className:"ResourceGroupFilter",modelProperties:{tagName:{serializedName:"tagName",type:{name:"String"}},tagValue:{serializedName:"tagValue",type:{name:"String"}}}}},Pye={type:{name:"Composite",className:"ResourceProviderOperationDisplayProperties",modelProperties:{publisher:{serializedName:"publisher",type:{name:"String"}},provider:{serializedName:"provider",type:{name:"String"}},resource:{serializedName:"resource",type:{name:"String"}},operation:{serializedName:"operation",type:{name:"String"}},description:{serializedName:"description",type:{name:"String"}}}}},_ye={type:{name:"Composite",className:"SubResource",modelProperties:{id:{serializedName:"id",type:{name:"String"}}}}},Mye={type:{name:"Composite",className:"DeploymentWhatIfProperties",modelProperties:Object.assign(Object.assign({},CG.type.modelProperties),{whatIfSettings:{serializedName:"whatIfSettings",type:{name:"Composite",className:"DeploymentWhatIfSettings"}}})}},Lt={type:{name:"Composite",className:"GenericResource",modelProperties:Object.assign(Object.assign({},IG.type.modelProperties),{plan:{serializedName:"plan",type:{name:"Composite",className:"Plan"}},properties:{serializedName:"properties",type:{name:"Dictionary",value:{type:{name:"any"}}}},kind:{constraints:{Pattern:new RegExp("^[-\\w\\._,\\(\\)]+$")},serializedName:"kind",type:{name:"String"}},managedBy:{serializedName:"managedBy",type:{name:"String"}},sku:{serializedName:"sku",type:{name:"Composite",className:"Sku"}},identity:{serializedName:"identity",type:{name:"Composite",className:"Identity"}}})}},Oye={type:{name:"Composite",className:"GenericResourceExpanded",modelProperties:Object.assign(Object.assign({},Lt.type.modelProperties),{createdTime:{serializedName:"createdTime",readOnly:!0,type:{name:"DateTime"}},changedTime:{serializedName:"changedTime",readOnly:!0,type:{name:"DateTime"}},provisioningState:{serializedName:"provisioningState",readOnly:!0,type:{name:"String"}}})}},xye={type:{name:"Composite",className:"DeploymentsWhatIfAtTenantScopeHeaders",modelProperties:{location:{serializedName:"location",type:{name:"String"}},retryAfter:{serializedName:"retry-after",type:{name:"String"}}}}},Lye={type:{name:"Composite",className:"DeploymentsWhatIfAtManagementGroupScopeHeaders",modelProperties:{location:{serializedName:"location",type:{name:"String"}},retryAfter:{serializedName:"retry-after",type:{name:"String"}}}}},Fye={type:{name:"Composite",className:"DeploymentsWhatIfAtSubscriptionScopeHeaders",modelProperties:{location:{serializedName:"location",type:{name:"String"}},retryAfter:{serializedName:"retry-after",type:{name:"String"}}}}},Uye={type:{name:"Composite",className:"DeploymentsWhatIfHeaders",modelProperties:{location:{serializedName:"location",type:{name:"String"}},retryAfter:{serializedName:"retry-after",type:{name:"String"}}}}},qye={type:{name:"Composite",className:"ResourceGroupsDeleteHeaders",modelProperties:{location:{serializedName:"location",type:{name:"String"}}}}},Vye={type:{name:"Composite",className:"TagsCreateOrUpdateAtScopeHeaders",modelProperties:{location:{serializedName:"location",type:{name:"String"}}}}},Gye={type:{name:"Composite",className:"TagsUpdateAtScopeHeaders",modelProperties:{location:{serializedName:"location",type:{name:"String"}}}}},Hye={type:{name:"Composite",className:"TagsDeleteAtScopeHeaders",modelProperties:{location:{serializedName:"location",type:{name:"String"}}}}};var _={parameterPath:"accept",mapper:{defaultValue:"application/json",isConstant:!0,serializedName:"Accept",type:{name:"String"}}},M={parameterPath:"$host",mapper:{serializedName:"$host",required:!0,type:{name:"String"}},skipEncoding:!0},U={parameterPath:"apiVersion",mapper:{defaultValue:"2024-11-01",isConstant:!0,serializedName:"api-version",type:{name:"String"}}},Dt={parameterPath:"nextLink",mapper:{serializedName:"nextLink",required:!0,type:{name:"String"}},skipEncoding:!0},wr={parameterPath:"scope",mapper:{serializedName:"scope",required:!0,type:{name:"String"}},skipEncoding:!0},re={parameterPath:"deploymentName",mapper:{constraints:{Pattern:new RegExp("^[-\\w\\._\\(\\)]+$"),MaxLength:64,MinLength:1},serializedName:"deploymentName",required:!0,type:{name:"String"}}},Ye={parameterPath:["options","contentType"],mapper:{defaultValue:"application/json",isConstant:!0,serializedName:"Content-Type",type:{name:"String"}}},zl={parameterPath:"parameters",mapper:vw},ks={parameterPath:["options","filter"],mapper:{serializedName:"$filter",type:{name:"String"}}},$r={parameterPath:["options","top"],mapper:{serializedName:"$top",type:{name:"Number"}}},uf={parameterPath:"parameters",mapper:Rw},Fw={parameterPath:"parameters",mapper:Nw},Kr={parameterPath:"groupId",mapper:{constraints:{MaxLength:90,MinLength:1},serializedName:"groupId",required:!0,type:{name:"String"}}},X={parameterPath:"subscriptionId",mapper:{serializedName:"subscriptionId",required:!0,type:{name:"String"}}},Uw={parameterPath:"parameters",mapper:Tw},rt={parameterPath:"resourceGroupName",mapper:{constraints:{Pattern:new RegExp("^[-\\w\\._\\(\\)]+$"),MaxLength:90,MinLength:1},serializedName:"resourceGroupName",required:!0,type:{name:"String"}}},BG={parameterPath:"template",mapper:{serializedName:"template",required:!0,type:{name:"Dictionary",value:{type:{name:"any"}}}}},Sn={parameterPath:"resourceProviderNamespace",mapper:{serializedName:"resourceProviderNamespace",required:!0,type:{name:"String"}}},QG={parameterPath:["options","properties"],mapper:kw},fa={parameterPath:["options","expand"],mapper:{serializedName:"$expand",type:{name:"String"}}},qw={parameterPath:"parameters",mapper:Ow},Vw={parameterPath:"sourceResourceGroupName",mapper:{constraints:{Pattern:new RegExp("^[-\\w\\._\\(\\)]+$"),MaxLength:90,MinLength:1},serializedName:"sourceResourceGroupName",required:!0,type:{name:"String"}}},zp={parameterPath:"parentResourcePath",mapper:{serializedName:"parentResourcePath",required:!0,type:{name:"String"}},skipEncoding:!0},Wp={parameterPath:"resourceType",mapper:{serializedName:"resourceType",required:!0,type:{name:"String"}},skipEncoding:!0},$p={parameterPath:"resourceName",mapper:{serializedName:"resourceName",required:!0,type:{name:"String"}}},Ps={parameterPath:"apiVersion",mapper:{serializedName:"api-version",required:!0,type:{name:"String"}}},mf={parameterPath:"parameters",mapper:Lt},Kp={parameterPath:"resourceId",mapper:{serializedName:"resourceId",required:!0,type:{name:"String"}},skipEncoding:!0},wG={parameterPath:"parameters",mapper:RA},SG={parameterPath:["options","forceDeletionTypes"],mapper:{serializedName:"forceDeletionTypes",type:{name:"String"}}},bG={parameterPath:"parameters",mapper:_w},vG={parameterPath:"parameters",mapper:Mw},RG={parameterPath:"resourceGroupName",mapper:{constraints:{MaxLength:90,MinLength:1},serializedName:"resourceGroupName",required:!0,type:{name:"String"}}},hf={parameterPath:"tagName",mapper:{serializedName:"tagName",required:!0,type:{name:"String"}}},Gw={parameterPath:"tagValue",mapper:{serializedName:"tagValue",required:!0,type:{name:"String"}}},NG={parameterPath:"parameters",mapper:bi},TG={parameterPath:"parameters",mapper:Lw},Xp={parameterPath:"operationId",mapper:{serializedName:"operationId",required:!0,type:{name:"String"}}};var _y=class{constructor(e){this.client=e}list(e){let r=this.listPagingAll(e);return{next(){return r.next()},[Symbol.asyncIterator](){return this},byPage:n=>{if(n?.maxPageSize)throw new Error("maxPageSize is not supported by this operation.");return this.listPagingPage(e,n)}}}listPagingPage(e,r){return ue(this,arguments,function*(){let i,s=r?.continuationToken;if(!s){i=yield N(this._list(e));let a=i.value||[];s=i.nextLink,Se(a,s),yield yield N(a)}for(;s;){i=yield N(this._listNext(s,e)),s=i.nextLink;let a=i.value||[];Se(a,s),yield yield N(a)}})}listPagingAll(e){return ue(this,arguments,function*(){var n,i,s,a;try{for(var o=!0,A=he(this.listPagingPage(e)),l;l=yield N(A.next()),n=l.done,!n;o=!0)a=l.value,o=!1,yield N(yield*ft(he(a)))}catch(c){i={error:c}}finally{try{!o&&!n&&(s=A.return)&&(yield N(s.call(A)))}finally{if(i)throw i.error}}})}_list(e){return this.client.sendOperationRequest({options:e},Yye)}_listNext(e,r){return this.client.sendOperationRequest({nextLink:e,options:r},Jye)}},DG=zr(Wr,!1),Yye={path:"/providers/Microsoft.Resources/operations",httpMethod:"GET",responses:{200:{bodyMapper:Ny},default:{bodyMapper:P}},queryParameters:[U],urlParameters:[M],headerParameters:[_],serializer:DG},Jye={path:"{nextLink}",httpMethod:"GET",responses:{200:{bodyMapper:Ny},default:{bodyMapper:P}},urlParameters:[M,Dt],headerParameters:[_],serializer:DG};kr();var po=Aa("core-lro");var Hw=["succeeded","canceled","failed"];function Yw(t){try{return JSON.parse(t).state}catch{throw new Error(`Unable to deserialize input state: ${t}`)}}function kG(t){let{state:e,stateProxy:r,isOperationError:n}=t;return i=>{throw n(i)&&(r.setError(e,i),r.setFailed(e)),i}}function jye(t,e){let r=t;return r.slice(-1)!=="."&&(r=r+"."),r+" "+e}function zye(t){let e=t.message,r=t.code,n=t;for(;n.innererror;)n=n.innererror,r=n.code,e=jye(e,n.message);return{code:r,message:e}}function PG(t){let{state:e,stateProxy:r,status:n,isDone:i,processResult:s,getError:a,response:o,setErrorAsResult:A}=t;switch(n){case"succeeded":{r.setSucceeded(e);break}case"failed":{let l=a?.(o),c="";if(l){let{code:p,message:u}=zye(l);c=`. ${p}. ${u}`}let d=`The long-running operation has failed${c}`;r.setError(e,new Error(d)),r.setFailed(e),po.warning(d);break}case"canceled":{r.setCanceled(e);break}}(i?.(o,e)||i===void 0&&["succeeded","canceled"].concat(A?[]:["failed"]).includes(n))&&r.setResult(e,Wye({response:o,state:e,processResult:s}))}function Wye(t){let{processResult:e,response:r,state:n}=t;return e?e(r,n):r}async function Jw(t){let{init:e,stateProxy:r,processResult:n,getOperationStatus:i,withOperationLocation:s,setErrorAsResult:a}=t,{operationLocation:o,resourceLocation:A,metadata:l,response:c}=await e();o&&s?.(o,!1);let d={metadata:l,operationLocation:o,resourceLocation:A};po.verbose("LRO: Operation description:",d);let p=r.initState(d),u=i({response:c,state:p,operationLocation:o});return PG({state:p,status:u,stateProxy:r,response:c,setErrorAsResult:a,processResult:n}),p}async function $ye(t){let{poll:e,state:r,stateProxy:n,operationLocation:i,getOperationStatus:s,getResourceLocation:a,isOperationError:o,options:A}=t,l=await e(i,A).catch(kG({state:r,stateProxy:n,isOperationError:o})),c=s(l,r);if(po.verbose(`LRO: Status: - Polling from: ${r.config.operationLocation} - Operation status: ${c} - Polling status: ${Hw.includes(c)?"Stopped":"Running"}`),c==="succeeded"){let d=a(l,r);if(d!==void 0)return{response:await e(d).catch(kG({state:r,stateProxy:n,isOperationError:o})),status:c}}return{response:l,status:c}}async function jw(t){let{poll:e,state:r,stateProxy:n,options:i,getOperationStatus:s,getResourceLocation:a,getOperationLocation:o,isOperationError:A,withOperationLocation:l,getPollingInterval:c,processResult:d,getError:p,updateState:u,setDelay:m,isDone:h,setErrorAsResult:f}=t,{operationLocation:E}=r.config;if(E!==void 0){let{response:y,status:B}=await $ye({poll:e,getOperationStatus:s,state:r,stateProxy:n,operationLocation:E,getResourceLocation:a,isOperationError:A,options:i});if(PG({status:B,response:y,state:r,stateProxy:n,isDone:h,processResult:d,getError:p,setErrorAsResult:f}),!Hw.includes(B)){let Q=c?.(y);Q&&m(Q);let C=o?.(y,r);if(C!==void 0){let w=E!==C;r.config.operationLocation=C,l?.(C,w)}else l?.(E,!1)}u?.(r,y)}}function _G(t){let{azureAsyncOperation:e,operationLocation:r}=t;return r??e}function MG(t){return t.headers.location}function OG(t){return t.headers["operation-location"]}function xG(t){return t.headers["azure-asyncoperation"]}function Kye(t){var e;let{location:r,requestMethod:n,requestPath:i,resourceLocationConfig:s}=t;switch(n){case"PUT":return i;case"DELETE":return;case"PATCH":return(e=a())!==null&&e!==void 0?e:i;default:return a()}function a(){switch(s){case"azure-async-operation":return;case"original-uri":return i;case"location":default:return r}}}function LG(t){let{rawResponse:e,requestMethod:r,requestPath:n,resourceLocationConfig:i}=t,s=OG(e),a=xG(e),o=_G({operationLocation:s,azureAsyncOperation:a}),A=MG(e),l=r?.toLocaleUpperCase();return o!==void 0?{mode:"OperationLocation",operationLocation:o,resourceLocation:Kye({requestMethod:l,location:A,requestPath:n,resourceLocationConfig:i})}:A!==void 0?{mode:"ResourceLocation",operationLocation:A}:l==="PUT"&&n?{mode:"Body",operationLocation:n}:void 0}function FG(t){let{status:e,statusCode:r}=t;if(typeof e!="string"&&e!==void 0)throw new Error(`Polling was unsuccessful. Expected status to have a string value or no value but it has instead: ${e}. This doesn't necessarily indicate the operation has failed. Check your Azure subscription or resource status for more information.`);switch(e?.toLocaleLowerCase()){case void 0:return zw(r);case"succeeded":return"succeeded";case"failed":return"failed";case"running":case"accepted":case"started":case"canceling":case"cancelling":return"running";case"canceled":case"cancelled":return"canceled";default:return po.verbose(`LRO: unrecognized operation status: ${e}`),e}}function Xye(t){var e;let{status:r}=(e=t.body)!==null&&e!==void 0?e:{};return FG({status:r,statusCode:t.statusCode})}function Zye(t){var e,r;let{properties:n,provisioningState:i}=(e=t.body)!==null&&e!==void 0?e:{},s=(r=n?.provisioningState)!==null&&r!==void 0?r:i;return FG({status:s,statusCode:t.statusCode})}function zw(t){return t===202?"running":t<300?"succeeded":"failed"}function UG({rawResponse:t}){let e=t.headers["retry-after"];if(e!==void 0){let r=parseInt(e);return isNaN(r)?eCe(new Date(e)):r*1e3}}function qG(t){let e=HG(t,"error");if(!e){po.warning("The long-running operation failed but there is no error property in the response's body");return}if(!e.code||!e.message){po.warning("The long-running operation failed but the error property in the response's body doesn't contain code or message");return}return e}function eCe(t){let e=Math.floor(new Date().getTime()),r=t.getTime();if(e({initState:t=>({status:"running",config:t}),setCanceled:t=>t.status="canceled",setError:(t,e)=>t.error=e,setResult:(t,e)=>t.result=e,setRunning:t=>t.status="running",setSucceeded:t=>t.status="succeeded",setFailed:t=>t.status="failed",getError:t=>t.error,getResult:t=>t.result,isCanceled:t=>t.status==="canceled",isFailed:t=>t.status==="failed",isRunning:t=>t.status==="running",isSucceeded:t=>t.status==="succeeded"});function zG(t){let{getOperationLocation:e,getStatusFromInitialResponse:r,getStatusFromPollResponse:n,isOperationError:i,getResourceLocation:s,getPollingInterval:a,getError:o,resolveOnUnsuccessful:A}=t;return async({init:l,poll:c},d)=>{let{processResult:p,updateState:u,withOperationLocation:m,intervalInMs:h=2e3,restoreFrom:f}=d||{},E=tCe(),y=m?(()=>{let V=!1;return(O,ye)=>{ye?m(O):V||m(O),V=!0}})():void 0,B=f?Yw(f):await Jw({init:l,stateProxy:E,processResult:p,getOperationStatus:r,withOperationLocation:y,setErrorAsResult:!A}),Q,C=new AbortController,w=new Map,b=async()=>w.forEach(V=>V(B)),v="Operation was canceled",q=h,L={getOperationState:()=>B,getResult:()=>B.result,isDone:()=>["succeeded","failed","canceled"].includes(B.status),isStopped:()=>Q===void 0,stopPolling:()=>{C.abort()},toString:()=>JSON.stringify({state:B}),onProgress:V=>{let O=Symbol();return w.set(O,V),()=>w.delete(O)},pollUntilDone:V=>Q??(Q=(async()=>{let{abortSignal:O}=V||{};function ye(){C.abort()}let Ze=C.signal;O?.aborted?C.abort():Ze.aborted||O?.addEventListener("abort",ye,{once:!0});try{if(!L.isDone())for(await L.poll({abortSignal:Ze});!L.isDone();)await v5(q,{abortSignal:Ze}),await L.poll({abortSignal:Ze})}finally{O?.removeEventListener("abort",ye)}if(A)return L.getResult();switch(B.status){case"succeeded":return L.getResult();case"canceled":throw new Error(v);case"failed":throw B.error;case"notStarted":case"running":throw new Error("Polling completed without succeeding or failing")}})().finally(()=>{Q=void 0})),async poll(V){if(A){if(L.isDone())return}else switch(B.status){case"succeeded":return;case"canceled":throw new Error(v);case"failed":throw B.error}if(await jw({poll:c,state:B,stateProxy:E,getOperationLocation:e,isOperationError:i,withOperationLocation:y,getPollingInterval:a,getOperationStatus:n,getResourceLocation:s,processResult:p,getError:o,updateState:u,options:V,setDelay:O=>{q=O},setErrorAsResult:!A}),await b(),!A)switch(B.status){case"canceled":throw new Error(v);case"failed":throw B.error}}};return L}}async function De(t,e){let{resourceLocationConfig:r,intervalInMs:n,processResult:i,restoreFrom:s,updateState:a,withOperationLocation:o,resolveOnUnsuccessful:A=!1}=e||{};return zG({getStatusFromInitialResponse:VG,getStatusFromPollResponse:Ww,isOperationError:JG,getOperationLocation:GG,getResourceLocation:YG,getPollingInterval:UG,getError:qG,resolveOnUnsuccessful:A})({init:async()=>{let l=await t.sendInitialRequest(),c=LG({rawResponse:l.rawResponse,requestPath:t.requestPath,requestMethod:t.requestMethod,resourceLocationConfig:r});return Object.assign({response:l,operationLocation:c?.operationLocation,resourceLocation:c?.resourceLocation},c?.mode?{metadata:{mode:c.mode}}:{})},poll:t.sendPollRequest},{intervalInMs:n,withOperationLocation:o,restoreFrom:s,updateState:a,processResult:i?({flatResponse:l},c)=>i(l,c):({flatResponse:l})=>l})}kr();function _e(t){let{args:e,spec:r,sendOperationFn:n}=t;return{requestMethod:r.httpMethod,requestPath:r.path,sendInitialRequest:()=>n(e,r),sendPollRequest:(i,s)=>{let{requestBody:a}=r,o=iy(r,["requestBody"]);return n(e,Object.assign(Object.assign({},o),{httpMethod:"GET",path:i,abortSignal:s?.abortSignal}))}}}var My=class{constructor(e){this.client=e}listAtScope(e,r){let n=this.listAtScopePagingAll(e,r);return{next(){return n.next()},[Symbol.asyncIterator](){return this},byPage:i=>{if(i?.maxPageSize)throw new Error("maxPageSize is not supported by this operation.");return this.listAtScopePagingPage(e,r,i)}}}listAtScopePagingPage(e,r,n){return ue(this,arguments,function*(){let s,a=n?.continuationToken;if(!a){s=yield N(this._listAtScope(e,r));let o=s.value||[];a=s.nextLink,Se(o,a),yield yield N(o)}for(;a;){s=yield N(this._listAtScopeNext(e,a,r)),a=s.nextLink;let o=s.value||[];Se(o,a),yield yield N(o)}})}listAtScopePagingAll(e,r){return ue(this,arguments,function*(){var i,s,a,o;try{for(var A=!0,l=he(this.listAtScopePagingPage(e,r)),c;c=yield N(l.next()),i=c.done,!i;A=!0)o=c.value,A=!1,yield N(yield*ft(he(o)))}catch(d){s={error:d}}finally{try{!A&&!i&&(a=l.return)&&(yield N(a.call(l)))}finally{if(s)throw s.error}}})}listAtTenantScope(e){let r=this.listAtTenantScopePagingAll(e);return{next(){return r.next()},[Symbol.asyncIterator](){return this},byPage:n=>{if(n?.maxPageSize)throw new Error("maxPageSize is not supported by this operation.");return this.listAtTenantScopePagingPage(e,n)}}}listAtTenantScopePagingPage(e,r){return ue(this,arguments,function*(){let i,s=r?.continuationToken;if(!s){i=yield N(this._listAtTenantScope(e));let a=i.value||[];s=i.nextLink,Se(a,s),yield yield N(a)}for(;s;){i=yield N(this._listAtTenantScopeNext(s,e)),s=i.nextLink;let a=i.value||[];Se(a,s),yield yield N(a)}})}listAtTenantScopePagingAll(e){return ue(this,arguments,function*(){var n,i,s,a;try{for(var o=!0,A=he(this.listAtTenantScopePagingPage(e)),l;l=yield N(A.next()),n=l.done,!n;o=!0)a=l.value,o=!1,yield N(yield*ft(he(a)))}catch(c){i={error:c}}finally{try{!o&&!n&&(s=A.return)&&(yield N(s.call(A)))}finally{if(i)throw i.error}}})}listAtManagementGroupScope(e,r){let n=this.listAtManagementGroupScopePagingAll(e,r);return{next(){return n.next()},[Symbol.asyncIterator](){return this},byPage:i=>{if(i?.maxPageSize)throw new Error("maxPageSize is not supported by this operation.");return this.listAtManagementGroupScopePagingPage(e,r,i)}}}listAtManagementGroupScopePagingPage(e,r,n){return ue(this,arguments,function*(){let s,a=n?.continuationToken;if(!a){s=yield N(this._listAtManagementGroupScope(e,r));let o=s.value||[];a=s.nextLink,Se(o,a),yield yield N(o)}for(;a;){s=yield N(this._listAtManagementGroupScopeNext(e,a,r)),a=s.nextLink;let o=s.value||[];Se(o,a),yield yield N(o)}})}listAtManagementGroupScopePagingAll(e,r){return ue(this,arguments,function*(){var i,s,a,o;try{for(var A=!0,l=he(this.listAtManagementGroupScopePagingPage(e,r)),c;c=yield N(l.next()),i=c.done,!i;A=!0)o=c.value,A=!1,yield N(yield*ft(he(o)))}catch(d){s={error:d}}finally{try{!A&&!i&&(a=l.return)&&(yield N(a.call(l)))}finally{if(s)throw s.error}}})}listAtSubscriptionScope(e){let r=this.listAtSubscriptionScopePagingAll(e);return{next(){return r.next()},[Symbol.asyncIterator](){return this},byPage:n=>{if(n?.maxPageSize)throw new Error("maxPageSize is not supported by this operation.");return this.listAtSubscriptionScopePagingPage(e,n)}}}listAtSubscriptionScopePagingPage(e,r){return ue(this,arguments,function*(){let i,s=r?.continuationToken;if(!s){i=yield N(this._listAtSubscriptionScope(e));let a=i.value||[];s=i.nextLink,Se(a,s),yield yield N(a)}for(;s;){i=yield N(this._listAtSubscriptionScopeNext(s,e)),s=i.nextLink;let a=i.value||[];Se(a,s),yield yield N(a)}})}listAtSubscriptionScopePagingAll(e){return ue(this,arguments,function*(){var n,i,s,a;try{for(var o=!0,A=he(this.listAtSubscriptionScopePagingPage(e)),l;l=yield N(A.next()),n=l.done,!n;o=!0)a=l.value,o=!1,yield N(yield*ft(he(a)))}catch(c){i={error:c}}finally{try{!o&&!n&&(s=A.return)&&(yield N(s.call(A)))}finally{if(i)throw i.error}}})}listByResourceGroup(e,r){let n=this.listByResourceGroupPagingAll(e,r);return{next(){return n.next()},[Symbol.asyncIterator](){return this},byPage:i=>{if(i?.maxPageSize)throw new Error("maxPageSize is not supported by this operation.");return this.listByResourceGroupPagingPage(e,r,i)}}}listByResourceGroupPagingPage(e,r,n){return ue(this,arguments,function*(){let s,a=n?.continuationToken;if(!a){s=yield N(this._listByResourceGroup(e,r));let o=s.value||[];a=s.nextLink,Se(o,a),yield yield N(o)}for(;a;){s=yield N(this._listByResourceGroupNext(e,a,r)),a=s.nextLink;let o=s.value||[];Se(o,a),yield yield N(o)}})}listByResourceGroupPagingAll(e,r){return ue(this,arguments,function*(){var i,s,a,o;try{for(var A=!0,l=he(this.listByResourceGroupPagingPage(e,r)),c;c=yield N(l.next()),i=c.done,!i;A=!0)o=c.value,A=!1,yield N(yield*ft(he(o)))}catch(d){s={error:d}}finally{try{!A&&!i&&(a=l.return)&&(yield N(a.call(l)))}finally{if(s)throw s.error}}})}async beginDeleteAtScope(e,r,n){let i=async(A,l)=>this.client.sendOperationRequest(A,l),a=_e({sendOperationFn:async(A,l)=>{var c;let d,p=(c=A.options)===null||c===void 0?void 0:c.onResponse,u=(f,E)=>{d=f,p?.(f,E)},m=Object.assign(Object.assign({},A),{options:Object.assign(Object.assign({},A.options),{onResponse:u})});return{flatResponse:await i(m,l),rawResponse:{statusCode:d.status,body:d.parsedBody,headers:d.headers.toJSON()}}},args:{scope:e,deploymentName:r,options:n},spec:rCe}),o=await De(a,{restoreFrom:n?.resumeFrom,intervalInMs:n?.updateIntervalInMs});return await o.poll(),o}async beginDeleteAtScopeAndWait(e,r,n){return(await this.beginDeleteAtScope(e,r,n)).pollUntilDone()}checkExistenceAtScope(e,r,n){return this.client.sendOperationRequest({scope:e,deploymentName:r,options:n},nCe)}async beginCreateOrUpdateAtScope(e,r,n,i){let s=async(l,c)=>this.client.sendOperationRequest(l,c),o=_e({sendOperationFn:async(l,c)=>{var d;let p,u=(d=l.options)===null||d===void 0?void 0:d.onResponse,m=(E,y)=>{p=E,u?.(E,y)},h=Object.assign(Object.assign({},l),{options:Object.assign(Object.assign({},l.options),{onResponse:m})});return{flatResponse:await s(h,c),rawResponse:{statusCode:p.status,body:p.parsedBody,headers:p.headers.toJSON()}}},args:{scope:e,deploymentName:r,parameters:n,options:i},spec:iCe}),A=await De(o,{restoreFrom:i?.resumeFrom,intervalInMs:i?.updateIntervalInMs});return await A.poll(),A}async beginCreateOrUpdateAtScopeAndWait(e,r,n,i){return(await this.beginCreateOrUpdateAtScope(e,r,n,i)).pollUntilDone()}getAtScope(e,r,n){return this.client.sendOperationRequest({scope:e,deploymentName:r,options:n},sCe)}cancelAtScope(e,r,n){return this.client.sendOperationRequest({scope:e,deploymentName:r,options:n},aCe)}async beginValidateAtScope(e,r,n,i){let s=async(l,c)=>this.client.sendOperationRequest(l,c),o=_e({sendOperationFn:async(l,c)=>{var d;let p,u=(d=l.options)===null||d===void 0?void 0:d.onResponse,m=(E,y)=>{p=E,u?.(E,y)},h=Object.assign(Object.assign({},l),{options:Object.assign(Object.assign({},l.options),{onResponse:m})});return{flatResponse:await s(h,c),rawResponse:{statusCode:p.status,body:p.parsedBody,headers:p.headers.toJSON()}}},args:{scope:e,deploymentName:r,parameters:n,options:i},spec:oCe}),A=await De(o,{restoreFrom:i?.resumeFrom,intervalInMs:i?.updateIntervalInMs});return await A.poll(),A}async beginValidateAtScopeAndWait(e,r,n,i){return(await this.beginValidateAtScope(e,r,n,i)).pollUntilDone()}exportTemplateAtScope(e,r,n){return this.client.sendOperationRequest({scope:e,deploymentName:r,options:n},ACe)}_listAtScope(e,r){return this.client.sendOperationRequest({scope:e,options:r},lCe)}async beginDeleteAtTenantScope(e,r){let n=async(o,A)=>this.client.sendOperationRequest(o,A),s=_e({sendOperationFn:async(o,A)=>{var l;let c,d=(l=o.options)===null||l===void 0?void 0:l.onResponse,p=(h,f)=>{c=h,d?.(h,f)},u=Object.assign(Object.assign({},o),{options:Object.assign(Object.assign({},o.options),{onResponse:p})});return{flatResponse:await n(u,A),rawResponse:{statusCode:c.status,body:c.parsedBody,headers:c.headers.toJSON()}}},args:{deploymentName:e,options:r},spec:cCe}),a=await De(s,{restoreFrom:r?.resumeFrom,intervalInMs:r?.updateIntervalInMs});return await a.poll(),a}async beginDeleteAtTenantScopeAndWait(e,r){return(await this.beginDeleteAtTenantScope(e,r)).pollUntilDone()}checkExistenceAtTenantScope(e,r){return this.client.sendOperationRequest({deploymentName:e,options:r},dCe)}async beginCreateOrUpdateAtTenantScope(e,r,n){let i=async(A,l)=>this.client.sendOperationRequest(A,l),a=_e({sendOperationFn:async(A,l)=>{var c;let d,p=(c=A.options)===null||c===void 0?void 0:c.onResponse,u=(f,E)=>{d=f,p?.(f,E)},m=Object.assign(Object.assign({},A),{options:Object.assign(Object.assign({},A.options),{onResponse:u})});return{flatResponse:await i(m,l),rawResponse:{statusCode:d.status,body:d.parsedBody,headers:d.headers.toJSON()}}},args:{deploymentName:e,parameters:r,options:n},spec:pCe}),o=await De(a,{restoreFrom:n?.resumeFrom,intervalInMs:n?.updateIntervalInMs});return await o.poll(),o}async beginCreateOrUpdateAtTenantScopeAndWait(e,r,n){return(await this.beginCreateOrUpdateAtTenantScope(e,r,n)).pollUntilDone()}getAtTenantScope(e,r){return this.client.sendOperationRequest({deploymentName:e,options:r},uCe)}cancelAtTenantScope(e,r){return this.client.sendOperationRequest({deploymentName:e,options:r},mCe)}async beginValidateAtTenantScope(e,r,n){let i=async(A,l)=>this.client.sendOperationRequest(A,l),a=_e({sendOperationFn:async(A,l)=>{var c;let d,p=(c=A.options)===null||c===void 0?void 0:c.onResponse,u=(f,E)=>{d=f,p?.(f,E)},m=Object.assign(Object.assign({},A),{options:Object.assign(Object.assign({},A.options),{onResponse:u})});return{flatResponse:await i(m,l),rawResponse:{statusCode:d.status,body:d.parsedBody,headers:d.headers.toJSON()}}},args:{deploymentName:e,parameters:r,options:n},spec:hCe}),o=await De(a,{restoreFrom:n?.resumeFrom,intervalInMs:n?.updateIntervalInMs});return await o.poll(),o}async beginValidateAtTenantScopeAndWait(e,r,n){return(await this.beginValidateAtTenantScope(e,r,n)).pollUntilDone()}async beginWhatIfAtTenantScope(e,r,n){let i=async(A,l)=>this.client.sendOperationRequest(A,l),a=_e({sendOperationFn:async(A,l)=>{var c;let d,p=(c=A.options)===null||c===void 0?void 0:c.onResponse,u=(f,E)=>{d=f,p?.(f,E)},m=Object.assign(Object.assign({},A),{options:Object.assign(Object.assign({},A.options),{onResponse:u})});return{flatResponse:await i(m,l),rawResponse:{statusCode:d.status,body:d.parsedBody,headers:d.headers.toJSON()}}},args:{deploymentName:e,parameters:r,options:n},spec:fCe}),o=await De(a,{restoreFrom:n?.resumeFrom,intervalInMs:n?.updateIntervalInMs,resourceLocationConfig:"location"});return await o.poll(),o}async beginWhatIfAtTenantScopeAndWait(e,r,n){return(await this.beginWhatIfAtTenantScope(e,r,n)).pollUntilDone()}exportTemplateAtTenantScope(e,r){return this.client.sendOperationRequest({deploymentName:e,options:r},gCe)}_listAtTenantScope(e){return this.client.sendOperationRequest({options:e},ECe)}async beginDeleteAtManagementGroupScope(e,r,n){let i=async(A,l)=>this.client.sendOperationRequest(A,l),a=_e({sendOperationFn:async(A,l)=>{var c;let d,p=(c=A.options)===null||c===void 0?void 0:c.onResponse,u=(f,E)=>{d=f,p?.(f,E)},m=Object.assign(Object.assign({},A),{options:Object.assign(Object.assign({},A.options),{onResponse:u})});return{flatResponse:await i(m,l),rawResponse:{statusCode:d.status,body:d.parsedBody,headers:d.headers.toJSON()}}},args:{groupId:e,deploymentName:r,options:n},spec:yCe}),o=await De(a,{restoreFrom:n?.resumeFrom,intervalInMs:n?.updateIntervalInMs});return await o.poll(),o}async beginDeleteAtManagementGroupScopeAndWait(e,r,n){return(await this.beginDeleteAtManagementGroupScope(e,r,n)).pollUntilDone()}checkExistenceAtManagementGroupScope(e,r,n){return this.client.sendOperationRequest({groupId:e,deploymentName:r,options:n},CCe)}async beginCreateOrUpdateAtManagementGroupScope(e,r,n,i){let s=async(l,c)=>this.client.sendOperationRequest(l,c),o=_e({sendOperationFn:async(l,c)=>{var d;let p,u=(d=l.options)===null||d===void 0?void 0:d.onResponse,m=(E,y)=>{p=E,u?.(E,y)},h=Object.assign(Object.assign({},l),{options:Object.assign(Object.assign({},l.options),{onResponse:m})});return{flatResponse:await s(h,c),rawResponse:{statusCode:p.status,body:p.parsedBody,headers:p.headers.toJSON()}}},args:{groupId:e,deploymentName:r,parameters:n,options:i},spec:ICe}),A=await De(o,{restoreFrom:i?.resumeFrom,intervalInMs:i?.updateIntervalInMs});return await A.poll(),A}async beginCreateOrUpdateAtManagementGroupScopeAndWait(e,r,n,i){return(await this.beginCreateOrUpdateAtManagementGroupScope(e,r,n,i)).pollUntilDone()}getAtManagementGroupScope(e,r,n){return this.client.sendOperationRequest({groupId:e,deploymentName:r,options:n},BCe)}cancelAtManagementGroupScope(e,r,n){return this.client.sendOperationRequest({groupId:e,deploymentName:r,options:n},QCe)}async beginValidateAtManagementGroupScope(e,r,n,i){let s=async(l,c)=>this.client.sendOperationRequest(l,c),o=_e({sendOperationFn:async(l,c)=>{var d;let p,u=(d=l.options)===null||d===void 0?void 0:d.onResponse,m=(E,y)=>{p=E,u?.(E,y)},h=Object.assign(Object.assign({},l),{options:Object.assign(Object.assign({},l.options),{onResponse:m})});return{flatResponse:await s(h,c),rawResponse:{statusCode:p.status,body:p.parsedBody,headers:p.headers.toJSON()}}},args:{groupId:e,deploymentName:r,parameters:n,options:i},spec:wCe}),A=await De(o,{restoreFrom:i?.resumeFrom,intervalInMs:i?.updateIntervalInMs});return await A.poll(),A}async beginValidateAtManagementGroupScopeAndWait(e,r,n,i){return(await this.beginValidateAtManagementGroupScope(e,r,n,i)).pollUntilDone()}async beginWhatIfAtManagementGroupScope(e,r,n,i){let s=async(l,c)=>this.client.sendOperationRequest(l,c),o=_e({sendOperationFn:async(l,c)=>{var d;let p,u=(d=l.options)===null||d===void 0?void 0:d.onResponse,m=(E,y)=>{p=E,u?.(E,y)},h=Object.assign(Object.assign({},l),{options:Object.assign(Object.assign({},l.options),{onResponse:m})});return{flatResponse:await s(h,c),rawResponse:{statusCode:p.status,body:p.parsedBody,headers:p.headers.toJSON()}}},args:{groupId:e,deploymentName:r,parameters:n,options:i},spec:SCe}),A=await De(o,{restoreFrom:i?.resumeFrom,intervalInMs:i?.updateIntervalInMs,resourceLocationConfig:"location"});return await A.poll(),A}async beginWhatIfAtManagementGroupScopeAndWait(e,r,n,i){return(await this.beginWhatIfAtManagementGroupScope(e,r,n,i)).pollUntilDone()}exportTemplateAtManagementGroupScope(e,r,n){return this.client.sendOperationRequest({groupId:e,deploymentName:r,options:n},bCe)}_listAtManagementGroupScope(e,r){return this.client.sendOperationRequest({groupId:e,options:r},vCe)}async beginDeleteAtSubscriptionScope(e,r){let n=async(o,A)=>this.client.sendOperationRequest(o,A),s=_e({sendOperationFn:async(o,A)=>{var l;let c,d=(l=o.options)===null||l===void 0?void 0:l.onResponse,p=(h,f)=>{c=h,d?.(h,f)},u=Object.assign(Object.assign({},o),{options:Object.assign(Object.assign({},o.options),{onResponse:p})});return{flatResponse:await n(u,A),rawResponse:{statusCode:c.status,body:c.parsedBody,headers:c.headers.toJSON()}}},args:{deploymentName:e,options:r},spec:RCe}),a=await De(s,{restoreFrom:r?.resumeFrom,intervalInMs:r?.updateIntervalInMs});return await a.poll(),a}async beginDeleteAtSubscriptionScopeAndWait(e,r){return(await this.beginDeleteAtSubscriptionScope(e,r)).pollUntilDone()}checkExistenceAtSubscriptionScope(e,r){return this.client.sendOperationRequest({deploymentName:e,options:r},NCe)}async beginCreateOrUpdateAtSubscriptionScope(e,r,n){let i=async(A,l)=>this.client.sendOperationRequest(A,l),a=_e({sendOperationFn:async(A,l)=>{var c;let d,p=(c=A.options)===null||c===void 0?void 0:c.onResponse,u=(f,E)=>{d=f,p?.(f,E)},m=Object.assign(Object.assign({},A),{options:Object.assign(Object.assign({},A.options),{onResponse:u})});return{flatResponse:await i(m,l),rawResponse:{statusCode:d.status,body:d.parsedBody,headers:d.headers.toJSON()}}},args:{deploymentName:e,parameters:r,options:n},spec:TCe}),o=await De(a,{restoreFrom:n?.resumeFrom,intervalInMs:n?.updateIntervalInMs});return await o.poll(),o}async beginCreateOrUpdateAtSubscriptionScopeAndWait(e,r,n){return(await this.beginCreateOrUpdateAtSubscriptionScope(e,r,n)).pollUntilDone()}getAtSubscriptionScope(e,r){return this.client.sendOperationRequest({deploymentName:e,options:r},DCe)}cancelAtSubscriptionScope(e,r){return this.client.sendOperationRequest({deploymentName:e,options:r},kCe)}async beginValidateAtSubscriptionScope(e,r,n){let i=async(A,l)=>this.client.sendOperationRequest(A,l),a=_e({sendOperationFn:async(A,l)=>{var c;let d,p=(c=A.options)===null||c===void 0?void 0:c.onResponse,u=(f,E)=>{d=f,p?.(f,E)},m=Object.assign(Object.assign({},A),{options:Object.assign(Object.assign({},A.options),{onResponse:u})});return{flatResponse:await i(m,l),rawResponse:{statusCode:d.status,body:d.parsedBody,headers:d.headers.toJSON()}}},args:{deploymentName:e,parameters:r,options:n},spec:PCe}),o=await De(a,{restoreFrom:n?.resumeFrom,intervalInMs:n?.updateIntervalInMs});return await o.poll(),o}async beginValidateAtSubscriptionScopeAndWait(e,r,n){return(await this.beginValidateAtSubscriptionScope(e,r,n)).pollUntilDone()}async beginWhatIfAtSubscriptionScope(e,r,n){let i=async(A,l)=>this.client.sendOperationRequest(A,l),a=_e({sendOperationFn:async(A,l)=>{var c;let d,p=(c=A.options)===null||c===void 0?void 0:c.onResponse,u=(f,E)=>{d=f,p?.(f,E)},m=Object.assign(Object.assign({},A),{options:Object.assign(Object.assign({},A.options),{onResponse:u})});return{flatResponse:await i(m,l),rawResponse:{statusCode:d.status,body:d.parsedBody,headers:d.headers.toJSON()}}},args:{deploymentName:e,parameters:r,options:n},spec:_Ce}),o=await De(a,{restoreFrom:n?.resumeFrom,intervalInMs:n?.updateIntervalInMs,resourceLocationConfig:"location"});return await o.poll(),o}async beginWhatIfAtSubscriptionScopeAndWait(e,r,n){return(await this.beginWhatIfAtSubscriptionScope(e,r,n)).pollUntilDone()}exportTemplateAtSubscriptionScope(e,r){return this.client.sendOperationRequest({deploymentName:e,options:r},MCe)}_listAtSubscriptionScope(e){return this.client.sendOperationRequest({options:e},OCe)}async beginDelete(e,r,n){let i=async(A,l)=>this.client.sendOperationRequest(A,l),a=_e({sendOperationFn:async(A,l)=>{var c;let d,p=(c=A.options)===null||c===void 0?void 0:c.onResponse,u=(f,E)=>{d=f,p?.(f,E)},m=Object.assign(Object.assign({},A),{options:Object.assign(Object.assign({},A.options),{onResponse:u})});return{flatResponse:await i(m,l),rawResponse:{statusCode:d.status,body:d.parsedBody,headers:d.headers.toJSON()}}},args:{resourceGroupName:e,deploymentName:r,options:n},spec:xCe}),o=await De(a,{restoreFrom:n?.resumeFrom,intervalInMs:n?.updateIntervalInMs});return await o.poll(),o}async beginDeleteAndWait(e,r,n){return(await this.beginDelete(e,r,n)).pollUntilDone()}checkExistence(e,r,n){return this.client.sendOperationRequest({resourceGroupName:e,deploymentName:r,options:n},LCe)}async beginCreateOrUpdate(e,r,n,i){let s=async(l,c)=>this.client.sendOperationRequest(l,c),o=_e({sendOperationFn:async(l,c)=>{var d;let p,u=(d=l.options)===null||d===void 0?void 0:d.onResponse,m=(E,y)=>{p=E,u?.(E,y)},h=Object.assign(Object.assign({},l),{options:Object.assign(Object.assign({},l.options),{onResponse:m})});return{flatResponse:await s(h,c),rawResponse:{statusCode:p.status,body:p.parsedBody,headers:p.headers.toJSON()}}},args:{resourceGroupName:e,deploymentName:r,parameters:n,options:i},spec:FCe}),A=await De(o,{restoreFrom:i?.resumeFrom,intervalInMs:i?.updateIntervalInMs});return await A.poll(),A}async beginCreateOrUpdateAndWait(e,r,n,i){return(await this.beginCreateOrUpdate(e,r,n,i)).pollUntilDone()}get(e,r,n){return this.client.sendOperationRequest({resourceGroupName:e,deploymentName:r,options:n},UCe)}cancel(e,r,n){return this.client.sendOperationRequest({resourceGroupName:e,deploymentName:r,options:n},qCe)}async beginValidate(e,r,n,i){let s=async(l,c)=>this.client.sendOperationRequest(l,c),o=_e({sendOperationFn:async(l,c)=>{var d;let p,u=(d=l.options)===null||d===void 0?void 0:d.onResponse,m=(E,y)=>{p=E,u?.(E,y)},h=Object.assign(Object.assign({},l),{options:Object.assign(Object.assign({},l.options),{onResponse:m})});return{flatResponse:await s(h,c),rawResponse:{statusCode:p.status,body:p.parsedBody,headers:p.headers.toJSON()}}},args:{resourceGroupName:e,deploymentName:r,parameters:n,options:i},spec:VCe}),A=await De(o,{restoreFrom:i?.resumeFrom,intervalInMs:i?.updateIntervalInMs});return await A.poll(),A}async beginValidateAndWait(e,r,n,i){return(await this.beginValidate(e,r,n,i)).pollUntilDone()}async beginWhatIf(e,r,n,i){let s=async(l,c)=>this.client.sendOperationRequest(l,c),o=_e({sendOperationFn:async(l,c)=>{var d;let p,u=(d=l.options)===null||d===void 0?void 0:d.onResponse,m=(E,y)=>{p=E,u?.(E,y)},h=Object.assign(Object.assign({},l),{options:Object.assign(Object.assign({},l.options),{onResponse:m})});return{flatResponse:await s(h,c),rawResponse:{statusCode:p.status,body:p.parsedBody,headers:p.headers.toJSON()}}},args:{resourceGroupName:e,deploymentName:r,parameters:n,options:i},spec:GCe}),A=await De(o,{restoreFrom:i?.resumeFrom,intervalInMs:i?.updateIntervalInMs,resourceLocationConfig:"location"});return await A.poll(),A}async beginWhatIfAndWait(e,r,n,i){return(await this.beginWhatIf(e,r,n,i)).pollUntilDone()}exportTemplate(e,r,n){return this.client.sendOperationRequest({resourceGroupName:e,deploymentName:r,options:n},HCe)}_listByResourceGroup(e,r){return this.client.sendOperationRequest({resourceGroupName:e,options:r},YCe)}calculateTemplateHash(e,r){return this.client.sendOperationRequest({template:e,options:r},JCe)}_listAtScopeNext(e,r,n){return this.client.sendOperationRequest({scope:e,nextLink:r,options:n},jCe)}_listAtTenantScopeNext(e,r){return this.client.sendOperationRequest({nextLink:e,options:r},zCe)}_listAtManagementGroupScopeNext(e,r,n){return this.client.sendOperationRequest({groupId:e,nextLink:r,options:n},WCe)}_listAtSubscriptionScopeNext(e,r){return this.client.sendOperationRequest({nextLink:e,options:r},$Ce)}_listByResourceGroupNext(e,r,n){return this.client.sendOperationRequest({resourceGroupName:e,nextLink:r,options:n},KCe)}},oe=zr(Wr,!1),rCe={path:"/{scope}/providers/Microsoft.Resources/deployments/{deploymentName}",httpMethod:"DELETE",responses:{200:{},201:{},202:{},204:{},default:{bodyMapper:P}},queryParameters:[U],urlParameters:[M,wr,re],headerParameters:[_],serializer:oe},nCe={path:"/{scope}/providers/Microsoft.Resources/deployments/{deploymentName}",httpMethod:"HEAD",responses:{204:{},404:{},default:{bodyMapper:P}},queryParameters:[U],urlParameters:[M,wr,re],headerParameters:[_],serializer:oe},iCe={path:"/{scope}/providers/Microsoft.Resources/deployments/{deploymentName}",httpMethod:"PUT",responses:{200:{bodyMapper:ct},201:{bodyMapper:ct},202:{bodyMapper:ct},204:{bodyMapper:ct},default:{bodyMapper:P}},requestBody:zl,queryParameters:[U],urlParameters:[M,wr,re],headerParameters:[_,Ye],mediaType:"json",serializer:oe},sCe={path:"/{scope}/providers/Microsoft.Resources/deployments/{deploymentName}",httpMethod:"GET",responses:{200:{bodyMapper:ct},default:{bodyMapper:P}},queryParameters:[U],urlParameters:[M,wr,re],headerParameters:[_],serializer:oe},aCe={path:"/{scope}/providers/Microsoft.Resources/deployments/{deploymentName}/cancel",httpMethod:"POST",responses:{204:{},default:{bodyMapper:P}},queryParameters:[U],urlParameters:[M,wr,re],headerParameters:[_],serializer:oe},oCe={path:"/{scope}/providers/Microsoft.Resources/deployments/{deploymentName}/validate",httpMethod:"POST",responses:{200:{bodyMapper:Wt},201:{bodyMapper:Wt},202:{bodyMapper:Wt},204:{bodyMapper:Wt},default:{bodyMapper:P}},requestBody:zl,queryParameters:[U],urlParameters:[M,wr,re],headerParameters:[_,Ye],mediaType:"json",serializer:oe},ACe={path:"/{scope}/providers/Microsoft.Resources/deployments/{deploymentName}/exportTemplate",httpMethod:"POST",responses:{200:{bodyMapper:Jl},default:{bodyMapper:P}},queryParameters:[U],urlParameters:[M,wr,re],headerParameters:[_],serializer:oe},lCe={path:"/{scope}/providers/Microsoft.Resources/deployments/",httpMethod:"GET",responses:{200:{bodyMapper:as},default:{bodyMapper:P}},queryParameters:[U,ks,$r],urlParameters:[M,wr],headerParameters:[_],serializer:oe},cCe={path:"/providers/Microsoft.Resources/deployments/{deploymentName}",httpMethod:"DELETE",responses:{200:{},201:{},202:{},204:{},default:{bodyMapper:P}},queryParameters:[U],urlParameters:[M,re],headerParameters:[_],serializer:oe},dCe={path:"/providers/Microsoft.Resources/deployments/{deploymentName}",httpMethod:"HEAD",responses:{204:{},404:{},default:{bodyMapper:P}},queryParameters:[U],urlParameters:[M,re],headerParameters:[_],serializer:oe},pCe={path:"/providers/Microsoft.Resources/deployments/{deploymentName}",httpMethod:"PUT",responses:{200:{bodyMapper:ct},201:{bodyMapper:ct},202:{bodyMapper:ct},204:{bodyMapper:ct},default:{bodyMapper:P}},requestBody:uf,queryParameters:[U],urlParameters:[M,re],headerParameters:[_,Ye],mediaType:"json",serializer:oe},uCe={path:"/providers/Microsoft.Resources/deployments/{deploymentName}",httpMethod:"GET",responses:{200:{bodyMapper:ct},default:{bodyMapper:P}},queryParameters:[U],urlParameters:[M,re],headerParameters:[_],serializer:oe},mCe={path:"/providers/Microsoft.Resources/deployments/{deploymentName}/cancel",httpMethod:"POST",responses:{204:{},default:{bodyMapper:P}},queryParameters:[U],urlParameters:[M,re],headerParameters:[_],serializer:oe},hCe={path:"/providers/Microsoft.Resources/deployments/{deploymentName}/validate",httpMethod:"POST",responses:{200:{bodyMapper:Wt},201:{bodyMapper:Wt},202:{bodyMapper:Wt},204:{bodyMapper:Wt},default:{bodyMapper:P}},requestBody:uf,queryParameters:[U],urlParameters:[M,re],headerParameters:[_,Ye],mediaType:"json",serializer:oe},fCe={path:"/providers/Microsoft.Resources/deployments/{deploymentName}/whatIf",httpMethod:"POST",responses:{200:{bodyMapper:Mr},201:{bodyMapper:Mr},202:{bodyMapper:Mr},204:{bodyMapper:Mr},default:{bodyMapper:P}},requestBody:Fw,queryParameters:[U],urlParameters:[M,re],headerParameters:[_,Ye],mediaType:"json",serializer:oe},gCe={path:"/providers/Microsoft.Resources/deployments/{deploymentName}/exportTemplate",httpMethod:"POST",responses:{200:{bodyMapper:Jl},default:{bodyMapper:P}},queryParameters:[U],urlParameters:[M,re],headerParameters:[_],serializer:oe},ECe={path:"/providers/Microsoft.Resources/deployments/",httpMethod:"GET",responses:{200:{bodyMapper:as},default:{bodyMapper:P}},queryParameters:[U,ks,$r],urlParameters:[M],headerParameters:[_],serializer:oe},yCe={path:"/providers/Microsoft.Management/managementGroups/{groupId}/providers/Microsoft.Resources/deployments/{deploymentName}",httpMethod:"DELETE",responses:{200:{},201:{},202:{},204:{},default:{bodyMapper:P}},queryParameters:[U],urlParameters:[M,re,Kr],headerParameters:[_],serializer:oe},CCe={path:"/providers/Microsoft.Management/managementGroups/{groupId}/providers/Microsoft.Resources/deployments/{deploymentName}",httpMethod:"HEAD",responses:{204:{},404:{},default:{bodyMapper:P}},queryParameters:[U],urlParameters:[M,re,Kr],headerParameters:[_],serializer:oe},ICe={path:"/providers/Microsoft.Management/managementGroups/{groupId}/providers/Microsoft.Resources/deployments/{deploymentName}",httpMethod:"PUT",responses:{200:{bodyMapper:ct},201:{bodyMapper:ct},202:{bodyMapper:ct},204:{bodyMapper:ct},default:{bodyMapper:P}},requestBody:uf,queryParameters:[U],urlParameters:[M,re,Kr],headerParameters:[_,Ye],mediaType:"json",serializer:oe},BCe={path:"/providers/Microsoft.Management/managementGroups/{groupId}/providers/Microsoft.Resources/deployments/{deploymentName}",httpMethod:"GET",responses:{200:{bodyMapper:ct},default:{bodyMapper:P}},queryParameters:[U],urlParameters:[M,re,Kr],headerParameters:[_],serializer:oe},QCe={path:"/providers/Microsoft.Management/managementGroups/{groupId}/providers/Microsoft.Resources/deployments/{deploymentName}/cancel",httpMethod:"POST",responses:{204:{},default:{bodyMapper:P}},queryParameters:[U],urlParameters:[M,re,Kr],headerParameters:[_],serializer:oe},wCe={path:"/providers/Microsoft.Management/managementGroups/{groupId}/providers/Microsoft.Resources/deployments/{deploymentName}/validate",httpMethod:"POST",responses:{200:{bodyMapper:Wt},201:{bodyMapper:Wt},202:{bodyMapper:Wt},204:{bodyMapper:Wt},default:{bodyMapper:P}},requestBody:uf,queryParameters:[U],urlParameters:[M,re,Kr],headerParameters:[_,Ye],mediaType:"json",serializer:oe},SCe={path:"/providers/Microsoft.Management/managementGroups/{groupId}/providers/Microsoft.Resources/deployments/{deploymentName}/whatIf",httpMethod:"POST",responses:{200:{bodyMapper:Mr},201:{bodyMapper:Mr},202:{bodyMapper:Mr},204:{bodyMapper:Mr},default:{bodyMapper:P}},requestBody:Fw,queryParameters:[U],urlParameters:[M,re,Kr],headerParameters:[_,Ye],mediaType:"json",serializer:oe},bCe={path:"/providers/Microsoft.Management/managementGroups/{groupId}/providers/Microsoft.Resources/deployments/{deploymentName}/exportTemplate",httpMethod:"POST",responses:{200:{bodyMapper:Jl},default:{bodyMapper:P}},queryParameters:[U],urlParameters:[M,re,Kr],headerParameters:[_],serializer:oe},vCe={path:"/providers/Microsoft.Management/managementGroups/{groupId}/providers/Microsoft.Resources/deployments/",httpMethod:"GET",responses:{200:{bodyMapper:as},default:{bodyMapper:P}},queryParameters:[U,ks,$r],urlParameters:[M,Kr],headerParameters:[_],serializer:oe},RCe={path:"/subscriptions/{subscriptionId}/providers/Microsoft.Resources/deployments/{deploymentName}",httpMethod:"DELETE",responses:{200:{},201:{},202:{},204:{},default:{bodyMapper:P}},queryParameters:[U],urlParameters:[M,re,X],headerParameters:[_],serializer:oe},NCe={path:"/subscriptions/{subscriptionId}/providers/Microsoft.Resources/deployments/{deploymentName}",httpMethod:"HEAD",responses:{204:{},404:{},default:{bodyMapper:P}},queryParameters:[U],urlParameters:[M,re,X],headerParameters:[_],serializer:oe},TCe={path:"/subscriptions/{subscriptionId}/providers/Microsoft.Resources/deployments/{deploymentName}",httpMethod:"PUT",responses:{200:{bodyMapper:ct},201:{bodyMapper:ct},202:{bodyMapper:ct},204:{bodyMapper:ct},default:{bodyMapper:P}},requestBody:zl,queryParameters:[U],urlParameters:[M,re,X],headerParameters:[_,Ye],mediaType:"json",serializer:oe},DCe={path:"/subscriptions/{subscriptionId}/providers/Microsoft.Resources/deployments/{deploymentName}",httpMethod:"GET",responses:{200:{bodyMapper:ct},default:{bodyMapper:P}},queryParameters:[U],urlParameters:[M,re,X],headerParameters:[_],serializer:oe},kCe={path:"/subscriptions/{subscriptionId}/providers/Microsoft.Resources/deployments/{deploymentName}/cancel",httpMethod:"POST",responses:{204:{},default:{bodyMapper:P}},queryParameters:[U],urlParameters:[M,re,X],headerParameters:[_],serializer:oe},PCe={path:"/subscriptions/{subscriptionId}/providers/Microsoft.Resources/deployments/{deploymentName}/validate",httpMethod:"POST",responses:{200:{bodyMapper:Wt},201:{bodyMapper:Wt},202:{bodyMapper:Wt},204:{bodyMapper:Wt},default:{bodyMapper:P}},requestBody:zl,queryParameters:[U],urlParameters:[M,re,X],headerParameters:[_,Ye],mediaType:"json",serializer:oe},_Ce={path:"/subscriptions/{subscriptionId}/providers/Microsoft.Resources/deployments/{deploymentName}/whatIf",httpMethod:"POST",responses:{200:{bodyMapper:Mr},201:{bodyMapper:Mr},202:{bodyMapper:Mr},204:{bodyMapper:Mr},default:{bodyMapper:P}},requestBody:Uw,queryParameters:[U],urlParameters:[M,re,X],headerParameters:[_,Ye],mediaType:"json",serializer:oe},MCe={path:"/subscriptions/{subscriptionId}/providers/Microsoft.Resources/deployments/{deploymentName}/exportTemplate",httpMethod:"POST",responses:{200:{bodyMapper:Jl},default:{bodyMapper:P}},queryParameters:[U],urlParameters:[M,re,X],headerParameters:[_],serializer:oe},OCe={path:"/subscriptions/{subscriptionId}/providers/Microsoft.Resources/deployments/",httpMethod:"GET",responses:{200:{bodyMapper:as},default:{bodyMapper:P}},queryParameters:[U,ks,$r],urlParameters:[M,X],headerParameters:[_],serializer:oe},xCe={path:"/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.Resources/deployments/{deploymentName}",httpMethod:"DELETE",responses:{200:{},201:{},202:{},204:{},default:{bodyMapper:P}},queryParameters:[U],urlParameters:[M,re,X,rt],headerParameters:[_],serializer:oe},LCe={path:"/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.Resources/deployments/{deploymentName}",httpMethod:"HEAD",responses:{204:{},404:{},default:{bodyMapper:P}},queryParameters:[U],urlParameters:[M,re,X,rt],headerParameters:[_],serializer:oe},FCe={path:"/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.Resources/deployments/{deploymentName}",httpMethod:"PUT",responses:{200:{bodyMapper:ct},201:{bodyMapper:ct},202:{bodyMapper:ct},204:{bodyMapper:ct},default:{bodyMapper:P}},requestBody:zl,queryParameters:[U],urlParameters:[M,re,X,rt],headerParameters:[_,Ye],mediaType:"json",serializer:oe},UCe={path:"/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.Resources/deployments/{deploymentName}",httpMethod:"GET",responses:{200:{bodyMapper:ct},default:{bodyMapper:P}},queryParameters:[U],urlParameters:[M,re,X,rt],headerParameters:[_],serializer:oe},qCe={path:"/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.Resources/deployments/{deploymentName}/cancel",httpMethod:"POST",responses:{204:{},default:{bodyMapper:P}},queryParameters:[U],urlParameters:[M,re,X,rt],headerParameters:[_],serializer:oe},VCe={path:"/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.Resources/deployments/{deploymentName}/validate",httpMethod:"POST",responses:{200:{bodyMapper:Wt},201:{bodyMapper:Wt},202:{bodyMapper:Wt},204:{bodyMapper:Wt},default:{bodyMapper:P}},requestBody:zl,queryParameters:[U],urlParameters:[M,re,X,rt],headerParameters:[_,Ye],mediaType:"json",serializer:oe},GCe={path:"/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.Resources/deployments/{deploymentName}/whatIf",httpMethod:"POST",responses:{200:{bodyMapper:Mr},201:{bodyMapper:Mr},202:{bodyMapper:Mr},204:{bodyMapper:Mr},default:{bodyMapper:P}},requestBody:Uw,queryParameters:[U],urlParameters:[M,re,X,rt],headerParameters:[_,Ye],mediaType:"json",serializer:oe},HCe={path:"/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.Resources/deployments/{deploymentName}/exportTemplate",httpMethod:"POST",responses:{200:{bodyMapper:Jl},default:{bodyMapper:P}},queryParameters:[U],urlParameters:[M,re,X,rt],headerParameters:[_],serializer:oe},YCe={path:"/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.Resources/deployments/",httpMethod:"GET",responses:{200:{bodyMapper:as},default:{bodyMapper:P}},queryParameters:[U,ks,$r],urlParameters:[M,X,rt],headerParameters:[_],serializer:oe},JCe={path:"/providers/Microsoft.Resources/calculateTemplateHash",httpMethod:"POST",responses:{200:{bodyMapper:xw},default:{bodyMapper:P}},requestBody:BG,queryParameters:[U],urlParameters:[M],headerParameters:[_,Ye],mediaType:"json",serializer:oe},jCe={path:"{nextLink}",httpMethod:"GET",responses:{200:{bodyMapper:as},default:{bodyMapper:P}},urlParameters:[M,Dt,wr],headerParameters:[_],serializer:oe},zCe={path:"{nextLink}",httpMethod:"GET",responses:{200:{bodyMapper:as},default:{bodyMapper:P}},urlParameters:[M,Dt],headerParameters:[_],serializer:oe},WCe={path:"{nextLink}",httpMethod:"GET",responses:{200:{bodyMapper:as},default:{bodyMapper:P}},urlParameters:[M,Dt,Kr],headerParameters:[_],serializer:oe},$Ce={path:"{nextLink}",httpMethod:"GET",responses:{200:{bodyMapper:as},default:{bodyMapper:P}},urlParameters:[M,Dt,X],headerParameters:[_],serializer:oe},KCe={path:"{nextLink}",httpMethod:"GET",responses:{200:{bodyMapper:as},default:{bodyMapper:P}},urlParameters:[M,Dt,X,rt],headerParameters:[_],serializer:oe};kr();var Oy=class{constructor(e){this.client=e}list(e){let r=this.listPagingAll(e);return{next(){return r.next()},[Symbol.asyncIterator](){return this},byPage:n=>{if(n?.maxPageSize)throw new Error("maxPageSize is not supported by this operation.");return this.listPagingPage(e,n)}}}listPagingPage(e,r){return ue(this,arguments,function*(){let i,s=r?.continuationToken;if(!s){i=yield N(this._list(e));let a=i.value||[];s=i.nextLink,Se(a,s),yield yield N(a)}for(;s;){i=yield N(this._listNext(s,e)),s=i.nextLink;let a=i.value||[];Se(a,s),yield yield N(a)}})}listPagingAll(e){return ue(this,arguments,function*(){var n,i,s,a;try{for(var o=!0,A=he(this.listPagingPage(e)),l;l=yield N(A.next()),n=l.done,!n;o=!0)a=l.value,o=!1,yield N(yield*ft(he(a)))}catch(c){i={error:c}}finally{try{!o&&!n&&(s=A.return)&&(yield N(s.call(A)))}finally{if(i)throw i.error}}})}listAtTenantScope(e){let r=this.listAtTenantScopePagingAll(e);return{next(){return r.next()},[Symbol.asyncIterator](){return this},byPage:n=>{if(n?.maxPageSize)throw new Error("maxPageSize is not supported by this operation.");return this.listAtTenantScopePagingPage(e,n)}}}listAtTenantScopePagingPage(e,r){return ue(this,arguments,function*(){let i,s=r?.continuationToken;if(!s){i=yield N(this._listAtTenantScope(e));let a=i.value||[];s=i.nextLink,Se(a,s),yield yield N(a)}for(;s;){i=yield N(this._listAtTenantScopeNext(s,e)),s=i.nextLink;let a=i.value||[];Se(a,s),yield yield N(a)}})}listAtTenantScopePagingAll(e){return ue(this,arguments,function*(){var n,i,s,a;try{for(var o=!0,A=he(this.listAtTenantScopePagingPage(e)),l;l=yield N(A.next()),n=l.done,!n;o=!0)a=l.value,o=!1,yield N(yield*ft(he(a)))}catch(c){i={error:c}}finally{try{!o&&!n&&(s=A.return)&&(yield N(s.call(A)))}finally{if(i)throw i.error}}})}unregister(e,r){return this.client.sendOperationRequest({resourceProviderNamespace:e,options:r},XCe)}registerAtManagementGroupScope(e,r,n){return this.client.sendOperationRequest({resourceProviderNamespace:e,groupId:r,options:n},ZCe)}providerPermissions(e,r){return this.client.sendOperationRequest({resourceProviderNamespace:e,options:r},eIe)}register(e,r){return this.client.sendOperationRequest({resourceProviderNamespace:e,options:r},tIe)}_list(e){return this.client.sendOperationRequest({options:e},rIe)}_listAtTenantScope(e){return this.client.sendOperationRequest({options:e},nIe)}get(e,r){return this.client.sendOperationRequest({resourceProviderNamespace:e,options:r},iIe)}getAtTenantScope(e,r){return this.client.sendOperationRequest({resourceProviderNamespace:e,options:r},sIe)}_listNext(e,r){return this.client.sendOperationRequest({nextLink:e,options:r},aIe)}_listAtTenantScopeNext(e,r){return this.client.sendOperationRequest({nextLink:e,options:r},oIe)}},ga=zr(Wr,!1),XCe={path:"/subscriptions/{subscriptionId}/providers/{resourceProviderNamespace}/unregister",httpMethod:"POST",responses:{200:{bodyMapper:Hp},default:{bodyMapper:P}},queryParameters:[U],urlParameters:[M,X,Sn],headerParameters:[_],serializer:ga},ZCe={path:"/providers/Microsoft.Management/managementGroups/{groupId}/providers/{resourceProviderNamespace}/register",httpMethod:"POST",responses:{200:{},default:{bodyMapper:P}},queryParameters:[U],urlParameters:[M,Kr,Sn],headerParameters:[_],serializer:ga},eIe={path:"/subscriptions/{subscriptionId}/providers/{resourceProviderNamespace}/providerPermissions",httpMethod:"GET",responses:{200:{bodyMapper:Dw},default:{bodyMapper:P}},queryParameters:[U],urlParameters:[M,X,Sn],headerParameters:[_],serializer:ga},tIe={path:"/subscriptions/{subscriptionId}/providers/{resourceProviderNamespace}/register",httpMethod:"POST",responses:{200:{bodyMapper:Hp},default:{bodyMapper:P}},requestBody:QG,queryParameters:[U],urlParameters:[M,X,Sn],headerParameters:[_,Ye],mediaType:"json",serializer:ga},rIe={path:"/subscriptions/{subscriptionId}/providers",httpMethod:"GET",responses:{200:{bodyMapper:Yp},default:{bodyMapper:P}},queryParameters:[U,fa],urlParameters:[M,X],headerParameters:[_],serializer:ga},nIe={path:"/providers",httpMethod:"GET",responses:{200:{bodyMapper:Yp},default:{bodyMapper:P}},queryParameters:[U,fa],urlParameters:[M],headerParameters:[_],serializer:ga},iIe={path:"/subscriptions/{subscriptionId}/providers/{resourceProviderNamespace}",httpMethod:"GET",responses:{200:{bodyMapper:Hp},default:{bodyMapper:P}},queryParameters:[U,fa],urlParameters:[M,X,Sn],headerParameters:[_],serializer:ga},sIe={path:"/providers/{resourceProviderNamespace}",httpMethod:"GET",responses:{200:{bodyMapper:Hp},default:{bodyMapper:P}},queryParameters:[U,fa],urlParameters:[M,Sn],headerParameters:[_],serializer:ga},aIe={path:"{nextLink}",httpMethod:"GET",responses:{200:{bodyMapper:Yp},default:{bodyMapper:P}},urlParameters:[M,Dt,X],headerParameters:[_],serializer:ga},oIe={path:"{nextLink}",httpMethod:"GET",responses:{200:{bodyMapper:Yp},default:{bodyMapper:P}},urlParameters:[M,Dt],headerParameters:[_],serializer:ga};var xy=class{constructor(e){this.client=e}list(e,r){return this.client.sendOperationRequest({resourceProviderNamespace:e,options:r},lIe)}},AIe=zr(Wr,!1),lIe={path:"/subscriptions/{subscriptionId}/providers/{resourceProviderNamespace}/resourceTypes",httpMethod:"GET",responses:{200:{bodyMapper:Pw},default:{bodyMapper:P}},queryParameters:[U,fa],urlParameters:[M,X,Sn],headerParameters:[_],serializer:AIe};kr();var Ly=class{constructor(e){this.client=e}listByResourceGroup(e,r){let n=this.listByResourceGroupPagingAll(e,r);return{next(){return n.next()},[Symbol.asyncIterator](){return this},byPage:i=>{if(i?.maxPageSize)throw new Error("maxPageSize is not supported by this operation.");return this.listByResourceGroupPagingPage(e,r,i)}}}listByResourceGroupPagingPage(e,r,n){return ue(this,arguments,function*(){let s,a=n?.continuationToken;if(!a){s=yield N(this._listByResourceGroup(e,r));let o=s.value||[];a=s.nextLink,Se(o,a),yield yield N(o)}for(;a;){s=yield N(this._listByResourceGroupNext(e,a,r)),a=s.nextLink;let o=s.value||[];Se(o,a),yield yield N(o)}})}listByResourceGroupPagingAll(e,r){return ue(this,arguments,function*(){var i,s,a,o;try{for(var A=!0,l=he(this.listByResourceGroupPagingPage(e,r)),c;c=yield N(l.next()),i=c.done,!i;A=!0)o=c.value,A=!1,yield N(yield*ft(he(o)))}catch(d){s={error:d}}finally{try{!A&&!i&&(a=l.return)&&(yield N(a.call(l)))}finally{if(s)throw s.error}}})}list(e){let r=this.listPagingAll(e);return{next(){return r.next()},[Symbol.asyncIterator](){return this},byPage:n=>{if(n?.maxPageSize)throw new Error("maxPageSize is not supported by this operation.");return this.listPagingPage(e,n)}}}listPagingPage(e,r){return ue(this,arguments,function*(){let i,s=r?.continuationToken;if(!s){i=yield N(this._list(e));let a=i.value||[];s=i.nextLink,Se(a,s),yield yield N(a)}for(;s;){i=yield N(this._listNext(s,e)),s=i.nextLink;let a=i.value||[];Se(a,s),yield yield N(a)}})}listPagingAll(e){return ue(this,arguments,function*(){var n,i,s,a;try{for(var o=!0,A=he(this.listPagingPage(e)),l;l=yield N(A.next()),n=l.done,!n;o=!0)a=l.value,o=!1,yield N(yield*ft(he(a)))}catch(c){i={error:c}}finally{try{!o&&!n&&(s=A.return)&&(yield N(s.call(A)))}finally{if(i)throw i.error}}})}_listByResourceGroup(e,r){return this.client.sendOperationRequest({resourceGroupName:e,options:r},cIe)}async beginMoveResources(e,r,n){let i=async(A,l)=>this.client.sendOperationRequest(A,l),a=_e({sendOperationFn:async(A,l)=>{var c;let d,p=(c=A.options)===null||c===void 0?void 0:c.onResponse,u=(f,E)=>{d=f,p?.(f,E)},m=Object.assign(Object.assign({},A),{options:Object.assign(Object.assign({},A.options),{onResponse:u})});return{flatResponse:await i(m,l),rawResponse:{statusCode:d.status,body:d.parsedBody,headers:d.headers.toJSON()}}},args:{sourceResourceGroupName:e,parameters:r,options:n},spec:dIe}),o=await De(a,{restoreFrom:n?.resumeFrom,intervalInMs:n?.updateIntervalInMs});return await o.poll(),o}async beginMoveResourcesAndWait(e,r,n){return(await this.beginMoveResources(e,r,n)).pollUntilDone()}async beginValidateMoveResources(e,r,n){let i=async(A,l)=>this.client.sendOperationRequest(A,l),a=_e({sendOperationFn:async(A,l)=>{var c;let d,p=(c=A.options)===null||c===void 0?void 0:c.onResponse,u=(f,E)=>{d=f,p?.(f,E)},m=Object.assign(Object.assign({},A),{options:Object.assign(Object.assign({},A.options),{onResponse:u})});return{flatResponse:await i(m,l),rawResponse:{statusCode:d.status,body:d.parsedBody,headers:d.headers.toJSON()}}},args:{sourceResourceGroupName:e,parameters:r,options:n},spec:pIe}),o=await De(a,{restoreFrom:n?.resumeFrom,intervalInMs:n?.updateIntervalInMs});return await o.poll(),o}async beginValidateMoveResourcesAndWait(e,r,n){return(await this.beginValidateMoveResources(e,r,n)).pollUntilDone()}_list(e){return this.client.sendOperationRequest({options:e},uIe)}checkExistence(e,r,n,i,s,a,o){return this.client.sendOperationRequest({resourceGroupName:e,resourceProviderNamespace:r,parentResourcePath:n,resourceType:i,resourceName:s,apiVersion:a,options:o},mIe)}async beginDelete(e,r,n,i,s,a,o){let A=async(p,u)=>this.client.sendOperationRequest(p,u),c=_e({sendOperationFn:async(p,u)=>{var m;let h,f=(m=p.options)===null||m===void 0?void 0:m.onResponse,E=(Q,C)=>{h=Q,f?.(Q,C)},y=Object.assign(Object.assign({},p),{options:Object.assign(Object.assign({},p.options),{onResponse:E})});return{flatResponse:await A(y,u),rawResponse:{statusCode:h.status,body:h.parsedBody,headers:h.headers.toJSON()}}},args:{resourceGroupName:e,resourceProviderNamespace:r,parentResourcePath:n,resourceType:i,resourceName:s,apiVersion:a,options:o},spec:hIe}),d=await De(c,{restoreFrom:o?.resumeFrom,intervalInMs:o?.updateIntervalInMs});return await d.poll(),d}async beginDeleteAndWait(e,r,n,i,s,a,o){return(await this.beginDelete(e,r,n,i,s,a,o)).pollUntilDone()}async beginCreateOrUpdate(e,r,n,i,s,a,o,A){let l=async(u,m)=>this.client.sendOperationRequest(u,m),d=_e({sendOperationFn:async(u,m)=>{var h;let f,E=(h=u.options)===null||h===void 0?void 0:h.onResponse,y=(C,w)=>{f=C,E?.(C,w)},B=Object.assign(Object.assign({},u),{options:Object.assign(Object.assign({},u.options),{onResponse:y})});return{flatResponse:await l(B,m),rawResponse:{statusCode:f.status,body:f.parsedBody,headers:f.headers.toJSON()}}},args:{resourceGroupName:e,resourceProviderNamespace:r,parentResourcePath:n,resourceType:i,resourceName:s,apiVersion:a,parameters:o,options:A},spec:fIe}),p=await De(d,{restoreFrom:A?.resumeFrom,intervalInMs:A?.updateIntervalInMs});return await p.poll(),p}async beginCreateOrUpdateAndWait(e,r,n,i,s,a,o,A){return(await this.beginCreateOrUpdate(e,r,n,i,s,a,o,A)).pollUntilDone()}async beginUpdate(e,r,n,i,s,a,o,A){let l=async(u,m)=>this.client.sendOperationRequest(u,m),d=_e({sendOperationFn:async(u,m)=>{var h;let f,E=(h=u.options)===null||h===void 0?void 0:h.onResponse,y=(C,w)=>{f=C,E?.(C,w)},B=Object.assign(Object.assign({},u),{options:Object.assign(Object.assign({},u.options),{onResponse:y})});return{flatResponse:await l(B,m),rawResponse:{statusCode:f.status,body:f.parsedBody,headers:f.headers.toJSON()}}},args:{resourceGroupName:e,resourceProviderNamespace:r,parentResourcePath:n,resourceType:i,resourceName:s,apiVersion:a,parameters:o,options:A},spec:gIe}),p=await De(d,{restoreFrom:A?.resumeFrom,intervalInMs:A?.updateIntervalInMs});return await p.poll(),p}async beginUpdateAndWait(e,r,n,i,s,a,o,A){return(await this.beginUpdate(e,r,n,i,s,a,o,A)).pollUntilDone()}get(e,r,n,i,s,a,o){return this.client.sendOperationRequest({resourceGroupName:e,resourceProviderNamespace:r,parentResourcePath:n,resourceType:i,resourceName:s,apiVersion:a,options:o},EIe)}checkExistenceById(e,r,n){return this.client.sendOperationRequest({resourceId:e,apiVersion:r,options:n},yIe)}async beginDeleteById(e,r,n){let i=async(A,l)=>this.client.sendOperationRequest(A,l),a=_e({sendOperationFn:async(A,l)=>{var c;let d,p=(c=A.options)===null||c===void 0?void 0:c.onResponse,u=(f,E)=>{d=f,p?.(f,E)},m=Object.assign(Object.assign({},A),{options:Object.assign(Object.assign({},A.options),{onResponse:u})});return{flatResponse:await i(m,l),rawResponse:{statusCode:d.status,body:d.parsedBody,headers:d.headers.toJSON()}}},args:{resourceId:e,apiVersion:r,options:n},spec:CIe}),o=await De(a,{restoreFrom:n?.resumeFrom,intervalInMs:n?.updateIntervalInMs});return await o.poll(),o}async beginDeleteByIdAndWait(e,r,n){return(await this.beginDeleteById(e,r,n)).pollUntilDone()}async beginCreateOrUpdateById(e,r,n,i){let s=async(l,c)=>this.client.sendOperationRequest(l,c),o=_e({sendOperationFn:async(l,c)=>{var d;let p,u=(d=l.options)===null||d===void 0?void 0:d.onResponse,m=(E,y)=>{p=E,u?.(E,y)},h=Object.assign(Object.assign({},l),{options:Object.assign(Object.assign({},l.options),{onResponse:m})});return{flatResponse:await s(h,c),rawResponse:{statusCode:p.status,body:p.parsedBody,headers:p.headers.toJSON()}}},args:{resourceId:e,apiVersion:r,parameters:n,options:i},spec:IIe}),A=await De(o,{restoreFrom:i?.resumeFrom,intervalInMs:i?.updateIntervalInMs});return await A.poll(),A}async beginCreateOrUpdateByIdAndWait(e,r,n,i){return(await this.beginCreateOrUpdateById(e,r,n,i)).pollUntilDone()}async beginUpdateById(e,r,n,i){let s=async(l,c)=>this.client.sendOperationRequest(l,c),o=_e({sendOperationFn:async(l,c)=>{var d;let p,u=(d=l.options)===null||d===void 0?void 0:d.onResponse,m=(E,y)=>{p=E,u?.(E,y)},h=Object.assign(Object.assign({},l),{options:Object.assign(Object.assign({},l.options),{onResponse:m})});return{flatResponse:await s(h,c),rawResponse:{statusCode:p.status,body:p.parsedBody,headers:p.headers.toJSON()}}},args:{resourceId:e,apiVersion:r,parameters:n,options:i},spec:BIe}),A=await De(o,{restoreFrom:i?.resumeFrom,intervalInMs:i?.updateIntervalInMs});return await A.poll(),A}async beginUpdateByIdAndWait(e,r,n,i){return(await this.beginUpdateById(e,r,n,i)).pollUntilDone()}getById(e,r,n){return this.client.sendOperationRequest({resourceId:e,apiVersion:r,options:n},QIe)}_listByResourceGroupNext(e,r,n){return this.client.sendOperationRequest({resourceGroupName:e,nextLink:r,options:n},wIe)}_listNext(e,r){return this.client.sendOperationRequest({nextLink:e,options:r},SIe)}},un=zr(Wr,!1),cIe={path:"/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/resources",httpMethod:"GET",responses:{200:{bodyMapper:Jp},default:{bodyMapper:P}},queryParameters:[U,ks,$r,fa],urlParameters:[M,X,rt],headerParameters:[_],serializer:un},dIe={path:"/subscriptions/{subscriptionId}/resourceGroups/{sourceResourceGroupName}/moveResources",httpMethod:"POST",responses:{200:{},201:{},202:{},204:{},default:{bodyMapper:P}},requestBody:qw,queryParameters:[U],urlParameters:[M,X,Vw],headerParameters:[_,Ye],mediaType:"json",serializer:un},pIe={path:"/subscriptions/{subscriptionId}/resourceGroups/{sourceResourceGroupName}/validateMoveResources",httpMethod:"POST",responses:{200:{},201:{},202:{},204:{},default:{bodyMapper:P}},requestBody:qw,queryParameters:[U],urlParameters:[M,X,Vw],headerParameters:[_,Ye],mediaType:"json",serializer:un},uIe={path:"/subscriptions/{subscriptionId}/resources",httpMethod:"GET",responses:{200:{bodyMapper:Jp},default:{bodyMapper:P}},queryParameters:[U,ks,$r,fa],urlParameters:[M,X],headerParameters:[_],serializer:un},mIe={path:"/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{parentResourcePath}/{resourceType}/{resourceName}",httpMethod:"HEAD",responses:{204:{},404:{},default:{bodyMapper:P}},queryParameters:[Ps],urlParameters:[M,X,rt,Sn,zp,Wp,$p],headerParameters:[_],serializer:un},hIe={path:"/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{parentResourcePath}/{resourceType}/{resourceName}",httpMethod:"DELETE",responses:{200:{},201:{},202:{},204:{},default:{bodyMapper:P}},queryParameters:[Ps],urlParameters:[M,X,rt,Sn,zp,Wp,$p],headerParameters:[_],serializer:un},fIe={path:"/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{parentResourcePath}/{resourceType}/{resourceName}",httpMethod:"PUT",responses:{200:{bodyMapper:Lt},201:{bodyMapper:Lt},202:{bodyMapper:Lt},204:{bodyMapper:Lt},default:{bodyMapper:P}},requestBody:mf,queryParameters:[Ps],urlParameters:[M,X,rt,Sn,zp,Wp,$p],headerParameters:[_,Ye],mediaType:"json",serializer:un},gIe={path:"/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{parentResourcePath}/{resourceType}/{resourceName}",httpMethod:"PATCH",responses:{200:{bodyMapper:Lt},201:{bodyMapper:Lt},202:{bodyMapper:Lt},204:{bodyMapper:Lt},default:{bodyMapper:P}},requestBody:mf,queryParameters:[Ps],urlParameters:[M,X,rt,Sn,zp,Wp,$p],headerParameters:[_,Ye],mediaType:"json",serializer:un},EIe={path:"/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{parentResourcePath}/{resourceType}/{resourceName}",httpMethod:"GET",responses:{200:{bodyMapper:Lt},default:{bodyMapper:P}},queryParameters:[Ps],urlParameters:[M,X,rt,Sn,zp,Wp,$p],headerParameters:[_],serializer:un},yIe={path:"/{resourceId}",httpMethod:"HEAD",responses:{204:{},404:{},default:{bodyMapper:P}},queryParameters:[Ps],urlParameters:[M,Kp],headerParameters:[_],serializer:un},CIe={path:"/{resourceId}",httpMethod:"DELETE",responses:{200:{},201:{},202:{},204:{},default:{bodyMapper:P}},queryParameters:[Ps],urlParameters:[M,Kp],headerParameters:[_],serializer:un},IIe={path:"/{resourceId}",httpMethod:"PUT",responses:{200:{bodyMapper:Lt},201:{bodyMapper:Lt},202:{bodyMapper:Lt},204:{bodyMapper:Lt},default:{bodyMapper:P}},requestBody:mf,queryParameters:[Ps],urlParameters:[M,Kp],headerParameters:[_,Ye],mediaType:"json",serializer:un},BIe={path:"/{resourceId}",httpMethod:"PATCH",responses:{200:{bodyMapper:Lt},201:{bodyMapper:Lt},202:{bodyMapper:Lt},204:{bodyMapper:Lt},default:{bodyMapper:P}},requestBody:mf,queryParameters:[Ps],urlParameters:[M,Kp],headerParameters:[_,Ye],mediaType:"json",serializer:un},QIe={path:"/{resourceId}",httpMethod:"GET",responses:{200:{bodyMapper:Lt},default:{bodyMapper:P}},queryParameters:[Ps],urlParameters:[M,Kp],headerParameters:[_],serializer:un},wIe={path:"{nextLink}",httpMethod:"GET",responses:{200:{bodyMapper:Jp},default:{bodyMapper:P}},urlParameters:[M,Dt,X,rt],headerParameters:[_],serializer:un},SIe={path:"{nextLink}",httpMethod:"GET",responses:{200:{bodyMapper:Jp},default:{bodyMapper:P}},urlParameters:[M,Dt,X],headerParameters:[_],serializer:un};kr();var Fy=class{constructor(e){this.client=e}list(e){let r=this.listPagingAll(e);return{next(){return r.next()},[Symbol.asyncIterator](){return this},byPage:n=>{if(n?.maxPageSize)throw new Error("maxPageSize is not supported by this operation.");return this.listPagingPage(e,n)}}}listPagingPage(e,r){return ue(this,arguments,function*(){let i,s=r?.continuationToken;if(!s){i=yield N(this._list(e));let a=i.value||[];s=i.nextLink,Se(a,s),yield yield N(a)}for(;s;){i=yield N(this._listNext(s,e)),s=i.nextLink;let a=i.value||[];Se(a,s),yield yield N(a)}})}listPagingAll(e){return ue(this,arguments,function*(){var n,i,s,a;try{for(var o=!0,A=he(this.listPagingPage(e)),l;l=yield N(A.next()),n=l.done,!n;o=!0)a=l.value,o=!1,yield N(yield*ft(he(a)))}catch(c){i={error:c}}finally{try{!o&&!n&&(s=A.return)&&(yield N(s.call(A)))}finally{if(i)throw i.error}}})}checkExistence(e,r){return this.client.sendOperationRequest({resourceGroupName:e,options:r},bIe)}createOrUpdate(e,r,n){return this.client.sendOperationRequest({resourceGroupName:e,parameters:r,options:n},vIe)}async beginDelete(e,r){let n=async(o,A)=>this.client.sendOperationRequest(o,A),s=_e({sendOperationFn:async(o,A)=>{var l;let c,d=(l=o.options)===null||l===void 0?void 0:l.onResponse,p=(h,f)=>{c=h,d?.(h,f)},u=Object.assign(Object.assign({},o),{options:Object.assign(Object.assign({},o.options),{onResponse:p})});return{flatResponse:await n(u,A),rawResponse:{statusCode:c.status,body:c.parsedBody,headers:c.headers.toJSON()}}},args:{resourceGroupName:e,options:r},spec:RIe}),a=await De(s,{restoreFrom:r?.resumeFrom,intervalInMs:r?.updateIntervalInMs});return await a.poll(),a}async beginDeleteAndWait(e,r){return(await this.beginDelete(e,r)).pollUntilDone()}get(e,r){return this.client.sendOperationRequest({resourceGroupName:e,options:r},NIe)}update(e,r,n){return this.client.sendOperationRequest({resourceGroupName:e,parameters:r,options:n},TIe)}async beginExportTemplate(e,r,n){let i=async(A,l)=>this.client.sendOperationRequest(A,l),a=_e({sendOperationFn:async(A,l)=>{var c;let d,p=(c=A.options)===null||c===void 0?void 0:c.onResponse,u=(f,E)=>{d=f,p?.(f,E)},m=Object.assign(Object.assign({},A),{options:Object.assign(Object.assign({},A.options),{onResponse:u})});return{flatResponse:await i(m,l),rawResponse:{statusCode:d.status,body:d.parsedBody,headers:d.headers.toJSON()}}},args:{resourceGroupName:e,parameters:r,options:n},spec:DIe}),o=await De(a,{restoreFrom:n?.resumeFrom,intervalInMs:n?.updateIntervalInMs,resourceLocationConfig:"location"});return await o.poll(),o}async beginExportTemplateAndWait(e,r,n){return(await this.beginExportTemplate(e,r,n)).pollUntilDone()}_list(e){return this.client.sendOperationRequest({options:e},kIe)}_listNext(e,r){return this.client.sendOperationRequest({nextLink:e,options:r},PIe)}},TA=zr(Wr,!1),bIe={path:"/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}",httpMethod:"HEAD",responses:{204:{},404:{},default:{bodyMapper:P}},queryParameters:[U],urlParameters:[M,X,rt],headerParameters:[_],serializer:TA},vIe={path:"/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}",httpMethod:"PUT",responses:{200:{bodyMapper:RA},201:{bodyMapper:RA},default:{bodyMapper:P}},requestBody:wG,queryParameters:[U],urlParameters:[M,X,rt],headerParameters:[_,Ye],mediaType:"json",serializer:TA},RIe={path:"/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}",httpMethod:"DELETE",responses:{200:{},201:{},202:{},204:{},default:{bodyMapper:P}},queryParameters:[U,SG],urlParameters:[M,X,rt],headerParameters:[_],serializer:TA},NIe={path:"/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}",httpMethod:"GET",responses:{200:{bodyMapper:RA},default:{bodyMapper:P}},queryParameters:[U],urlParameters:[M,X,rt],headerParameters:[_],serializer:TA},TIe={path:"/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}",httpMethod:"PATCH",responses:{200:{bodyMapper:RA},default:{bodyMapper:P}},requestBody:bG,queryParameters:[U],urlParameters:[M,X,rt],headerParameters:[_,Ye],mediaType:"json",serializer:TA},DIe={path:"/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/exportTemplate",httpMethod:"POST",responses:{200:{bodyMapper:jp},201:{bodyMapper:jp},202:{bodyMapper:jp},204:{bodyMapper:jp},default:{bodyMapper:P}},requestBody:vG,queryParameters:[U],urlParameters:[M,X,RG],headerParameters:[_,Ye],mediaType:"json",serializer:TA},kIe={path:"/subscriptions/{subscriptionId}/resourcegroups",httpMethod:"GET",responses:{200:{bodyMapper:Ty},default:{bodyMapper:P}},queryParameters:[U,ks,$r],urlParameters:[M,X],headerParameters:[_],serializer:TA},PIe={path:"{nextLink}",httpMethod:"GET",responses:{200:{bodyMapper:Ty},default:{bodyMapper:P}},urlParameters:[M,Dt,X],headerParameters:[_],serializer:TA};kr();var Uy=class{constructor(e){this.client=e}list(e){let r=this.listPagingAll(e);return{next(){return r.next()},[Symbol.asyncIterator](){return this},byPage:n=>{if(n?.maxPageSize)throw new Error("maxPageSize is not supported by this operation.");return this.listPagingPage(e,n)}}}listPagingPage(e,r){return ue(this,arguments,function*(){let i,s=r?.continuationToken;if(!s){i=yield N(this._list(e));let a=i.value||[];s=i.nextLink,Se(a,s),yield yield N(a)}for(;s;){i=yield N(this._listNext(s,e)),s=i.nextLink;let a=i.value||[];Se(a,s),yield yield N(a)}})}listPagingAll(e){return ue(this,arguments,function*(){var n,i,s,a;try{for(var o=!0,A=he(this.listPagingPage(e)),l;l=yield N(A.next()),n=l.done,!n;o=!0)a=l.value,o=!1,yield N(yield*ft(he(a)))}catch(c){i={error:c}}finally{try{!o&&!n&&(s=A.return)&&(yield N(s.call(A)))}finally{if(i)throw i.error}}})}deleteValue(e,r,n){return this.client.sendOperationRequest({tagName:e,tagValue:r,options:n},_Ie)}createOrUpdateValue(e,r,n){return this.client.sendOperationRequest({tagName:e,tagValue:r,options:n},MIe)}createOrUpdate(e,r){return this.client.sendOperationRequest({tagName:e,options:r},OIe)}delete(e,r){return this.client.sendOperationRequest({tagName:e,options:r},xIe)}_list(e){return this.client.sendOperationRequest({options:e},LIe)}async beginCreateOrUpdateAtScope(e,r,n){let i=async(A,l)=>this.client.sendOperationRequest(A,l),a=_e({sendOperationFn:async(A,l)=>{var c;let d,p=(c=A.options)===null||c===void 0?void 0:c.onResponse,u=(f,E)=>{d=f,p?.(f,E)},m=Object.assign(Object.assign({},A),{options:Object.assign(Object.assign({},A.options),{onResponse:u})});return{flatResponse:await i(m,l),rawResponse:{statusCode:d.status,body:d.parsedBody,headers:d.headers.toJSON()}}},args:{scope:e,parameters:r,options:n},spec:FIe}),o=await De(a,{restoreFrom:n?.resumeFrom,intervalInMs:n?.updateIntervalInMs});return await o.poll(),o}async beginCreateOrUpdateAtScopeAndWait(e,r,n){return(await this.beginCreateOrUpdateAtScope(e,r,n)).pollUntilDone()}async beginUpdateAtScope(e,r,n){let i=async(A,l)=>this.client.sendOperationRequest(A,l),a=_e({sendOperationFn:async(A,l)=>{var c;let d,p=(c=A.options)===null||c===void 0?void 0:c.onResponse,u=(f,E)=>{d=f,p?.(f,E)},m=Object.assign(Object.assign({},A),{options:Object.assign(Object.assign({},A.options),{onResponse:u})});return{flatResponse:await i(m,l),rawResponse:{statusCode:d.status,body:d.parsedBody,headers:d.headers.toJSON()}}},args:{scope:e,parameters:r,options:n},spec:UIe}),o=await De(a,{restoreFrom:n?.resumeFrom,intervalInMs:n?.updateIntervalInMs});return await o.poll(),o}async beginUpdateAtScopeAndWait(e,r,n){return(await this.beginUpdateAtScope(e,r,n)).pollUntilDone()}getAtScope(e,r){return this.client.sendOperationRequest({scope:e,options:r},qIe)}async beginDeleteAtScope(e,r){let n=async(o,A)=>this.client.sendOperationRequest(o,A),s=_e({sendOperationFn:async(o,A)=>{var l;let c,d=(l=o.options)===null||l===void 0?void 0:l.onResponse,p=(h,f)=>{c=h,d?.(h,f)},u=Object.assign(Object.assign({},o),{options:Object.assign(Object.assign({},o.options),{onResponse:p})});return{flatResponse:await n(u,A),rawResponse:{statusCode:c.status,body:c.parsedBody,headers:c.headers.toJSON()}}},args:{scope:e,options:r},spec:VIe}),a=await De(s,{restoreFrom:r?.resumeFrom,intervalInMs:r?.updateIntervalInMs});return await a.poll(),a}async beginDeleteAtScopeAndWait(e,r){return(await this.beginDeleteAtScope(e,r)).pollUntilDone()}_listNext(e,r){return this.client.sendOperationRequest({nextLink:e,options:r},GIe)}},Ea=zr(Wr,!1),_Ie={path:"/subscriptions/{subscriptionId}/tagNames/{tagName}/tagValues/{tagValue}",httpMethod:"DELETE",responses:{200:{},204:{},default:{bodyMapper:P}},queryParameters:[U],urlParameters:[M,X,hf,Gw],headerParameters:[_],serializer:Ea},MIe={path:"/subscriptions/{subscriptionId}/tagNames/{tagName}/tagValues/{tagValue}",httpMethod:"PUT",responses:{200:{bodyMapper:Dy},201:{bodyMapper:Dy},default:{bodyMapper:P}},queryParameters:[U],urlParameters:[M,X,hf,Gw],headerParameters:[_],serializer:Ea},OIe={path:"/subscriptions/{subscriptionId}/tagNames/{tagName}",httpMethod:"PUT",responses:{200:{bodyMapper:ky},201:{bodyMapper:ky},default:{bodyMapper:P}},queryParameters:[U],urlParameters:[M,X,hf],headerParameters:[_],serializer:Ea},xIe={path:"/subscriptions/{subscriptionId}/tagNames/{tagName}",httpMethod:"DELETE",responses:{200:{},204:{},default:{bodyMapper:P}},queryParameters:[U],urlParameters:[M,X,hf],headerParameters:[_],serializer:Ea},LIe={path:"/subscriptions/{subscriptionId}/tagNames",httpMethod:"GET",responses:{200:{bodyMapper:Py},default:{bodyMapper:P}},queryParameters:[U],urlParameters:[M,X],headerParameters:[_],serializer:Ea},FIe={path:"/{scope}/providers/Microsoft.Resources/tags/default",httpMethod:"PUT",responses:{200:{bodyMapper:bi},201:{bodyMapper:bi},202:{bodyMapper:bi},204:{bodyMapper:bi},default:{bodyMapper:P}},requestBody:NG,queryParameters:[U],urlParameters:[M,wr],headerParameters:[_,Ye],mediaType:"json",serializer:Ea},UIe={path:"/{scope}/providers/Microsoft.Resources/tags/default",httpMethod:"PATCH",responses:{200:{bodyMapper:bi},201:{bodyMapper:bi},202:{bodyMapper:bi},204:{bodyMapper:bi},default:{bodyMapper:P}},requestBody:TG,queryParameters:[U],urlParameters:[M,wr],headerParameters:[_,Ye],mediaType:"json",serializer:Ea},qIe={path:"/{scope}/providers/Microsoft.Resources/tags/default",httpMethod:"GET",responses:{200:{bodyMapper:bi},default:{bodyMapper:P}},queryParameters:[U],urlParameters:[M,wr],headerParameters:[_],serializer:Ea},VIe={path:"/{scope}/providers/Microsoft.Resources/tags/default",httpMethod:"DELETE",responses:{200:{},201:{},202:{},204:{},default:{bodyMapper:P}},queryParameters:[U],urlParameters:[M,wr],headerParameters:[_],serializer:Ea},GIe={path:"{nextLink}",httpMethod:"GET",responses:{200:{bodyMapper:Py},default:{bodyMapper:P}},urlParameters:[M,Dt,X],headerParameters:[_],serializer:Ea};kr();var qy=class{constructor(e){this.client=e}listAtScope(e,r,n){let i=this.listAtScopePagingAll(e,r,n);return{next(){return i.next()},[Symbol.asyncIterator](){return this},byPage:s=>{if(s?.maxPageSize)throw new Error("maxPageSize is not supported by this operation.");return this.listAtScopePagingPage(e,r,n,s)}}}listAtScopePagingPage(e,r,n,i){return ue(this,arguments,function*(){let a,o=i?.continuationToken;if(!o){a=yield N(this._listAtScope(e,r,n));let A=a.value||[];o=a.nextLink,Se(A,o),yield yield N(A)}for(;o;){a=yield N(this._listAtScopeNext(e,r,o,n)),o=a.nextLink;let A=a.value||[];Se(A,o),yield yield N(A)}})}listAtScopePagingAll(e,r,n){return ue(this,arguments,function*(){var s,a,o,A;try{for(var l=!0,c=he(this.listAtScopePagingPage(e,r,n)),d;d=yield N(c.next()),s=d.done,!s;l=!0)A=d.value,l=!1,yield N(yield*ft(he(A)))}catch(p){a={error:p}}finally{try{!l&&!s&&(o=c.return)&&(yield N(o.call(c)))}finally{if(a)throw a.error}}})}listAtTenantScope(e,r){let n=this.listAtTenantScopePagingAll(e,r);return{next(){return n.next()},[Symbol.asyncIterator](){return this},byPage:i=>{if(i?.maxPageSize)throw new Error("maxPageSize is not supported by this operation.");return this.listAtTenantScopePagingPage(e,r,i)}}}listAtTenantScopePagingPage(e,r,n){return ue(this,arguments,function*(){let s,a=n?.continuationToken;if(!a){s=yield N(this._listAtTenantScope(e,r));let o=s.value||[];a=s.nextLink,Se(o,a),yield yield N(o)}for(;a;){s=yield N(this._listAtTenantScopeNext(e,a,r)),a=s.nextLink;let o=s.value||[];Se(o,a),yield yield N(o)}})}listAtTenantScopePagingAll(e,r){return ue(this,arguments,function*(){var i,s,a,o;try{for(var A=!0,l=he(this.listAtTenantScopePagingPage(e,r)),c;c=yield N(l.next()),i=c.done,!i;A=!0)o=c.value,A=!1,yield N(yield*ft(he(o)))}catch(d){s={error:d}}finally{try{!A&&!i&&(a=l.return)&&(yield N(a.call(l)))}finally{if(s)throw s.error}}})}listAtManagementGroupScope(e,r,n){let i=this.listAtManagementGroupScopePagingAll(e,r,n);return{next(){return i.next()},[Symbol.asyncIterator](){return this},byPage:s=>{if(s?.maxPageSize)throw new Error("maxPageSize is not supported by this operation.");return this.listAtManagementGroupScopePagingPage(e,r,n,s)}}}listAtManagementGroupScopePagingPage(e,r,n,i){return ue(this,arguments,function*(){let a,o=i?.continuationToken;if(!o){a=yield N(this._listAtManagementGroupScope(e,r,n));let A=a.value||[];o=a.nextLink,Se(A,o),yield yield N(A)}for(;o;){a=yield N(this._listAtManagementGroupScopeNext(e,r,o,n)),o=a.nextLink;let A=a.value||[];Se(A,o),yield yield N(A)}})}listAtManagementGroupScopePagingAll(e,r,n){return ue(this,arguments,function*(){var s,a,o,A;try{for(var l=!0,c=he(this.listAtManagementGroupScopePagingPage(e,r,n)),d;d=yield N(c.next()),s=d.done,!s;l=!0)A=d.value,l=!1,yield N(yield*ft(he(A)))}catch(p){a={error:p}}finally{try{!l&&!s&&(o=c.return)&&(yield N(o.call(c)))}finally{if(a)throw a.error}}})}listAtSubscriptionScope(e,r){let n=this.listAtSubscriptionScopePagingAll(e,r);return{next(){return n.next()},[Symbol.asyncIterator](){return this},byPage:i=>{if(i?.maxPageSize)throw new Error("maxPageSize is not supported by this operation.");return this.listAtSubscriptionScopePagingPage(e,r,i)}}}listAtSubscriptionScopePagingPage(e,r,n){return ue(this,arguments,function*(){let s,a=n?.continuationToken;if(!a){s=yield N(this._listAtSubscriptionScope(e,r));let o=s.value||[];a=s.nextLink,Se(o,a),yield yield N(o)}for(;a;){s=yield N(this._listAtSubscriptionScopeNext(e,a,r)),a=s.nextLink;let o=s.value||[];Se(o,a),yield yield N(o)}})}listAtSubscriptionScopePagingAll(e,r){return ue(this,arguments,function*(){var i,s,a,o;try{for(var A=!0,l=he(this.listAtSubscriptionScopePagingPage(e,r)),c;c=yield N(l.next()),i=c.done,!i;A=!0)o=c.value,A=!1,yield N(yield*ft(he(o)))}catch(d){s={error:d}}finally{try{!A&&!i&&(a=l.return)&&(yield N(a.call(l)))}finally{if(s)throw s.error}}})}list(e,r,n){let i=this.listPagingAll(e,r,n);return{next(){return i.next()},[Symbol.asyncIterator](){return this},byPage:s=>{if(s?.maxPageSize)throw new Error("maxPageSize is not supported by this operation.");return this.listPagingPage(e,r,n,s)}}}listPagingPage(e,r,n,i){return ue(this,arguments,function*(){let a,o=i?.continuationToken;if(!o){a=yield N(this._list(e,r,n));let A=a.value||[];o=a.nextLink,Se(A,o),yield yield N(A)}for(;o;){a=yield N(this._listNext(e,r,o,n)),o=a.nextLink;let A=a.value||[];Se(A,o),yield yield N(A)}})}listPagingAll(e,r,n){return ue(this,arguments,function*(){var s,a,o,A;try{for(var l=!0,c=he(this.listPagingPage(e,r,n)),d;d=yield N(c.next()),s=d.done,!s;l=!0)A=d.value,l=!1,yield N(yield*ft(he(A)))}catch(p){a={error:p}}finally{try{!l&&!s&&(o=c.return)&&(yield N(o.call(c)))}finally{if(a)throw a.error}}})}getAtScope(e,r,n,i){return this.client.sendOperationRequest({scope:e,deploymentName:r,operationId:n,options:i},HIe)}_listAtScope(e,r,n){return this.client.sendOperationRequest({scope:e,deploymentName:r,options:n},YIe)}getAtTenantScope(e,r,n){return this.client.sendOperationRequest({deploymentName:e,operationId:r,options:n},JIe)}_listAtTenantScope(e,r){return this.client.sendOperationRequest({deploymentName:e,options:r},jIe)}getAtManagementGroupScope(e,r,n,i){return this.client.sendOperationRequest({groupId:e,deploymentName:r,operationId:n,options:i},zIe)}_listAtManagementGroupScope(e,r,n){return this.client.sendOperationRequest({groupId:e,deploymentName:r,options:n},WIe)}getAtSubscriptionScope(e,r,n){return this.client.sendOperationRequest({deploymentName:e,operationId:r,options:n},$Ie)}_listAtSubscriptionScope(e,r){return this.client.sendOperationRequest({deploymentName:e,options:r},KIe)}get(e,r,n,i){return this.client.sendOperationRequest({resourceGroupName:e,deploymentName:r,operationId:n,options:i},XIe)}_list(e,r,n){return this.client.sendOperationRequest({resourceGroupName:e,deploymentName:r,options:n},ZIe)}_listAtScopeNext(e,r,n,i){return this.client.sendOperationRequest({scope:e,deploymentName:r,nextLink:n,options:i},e4e)}_listAtTenantScopeNext(e,r,n){return this.client.sendOperationRequest({deploymentName:e,nextLink:r,options:n},t4e)}_listAtManagementGroupScopeNext(e,r,n,i){return this.client.sendOperationRequest({groupId:e,deploymentName:r,nextLink:n,options:i},r4e)}_listAtSubscriptionScopeNext(e,r,n){return this.client.sendOperationRequest({deploymentName:e,nextLink:r,options:n},n4e)}_listNext(e,r,n,i){return this.client.sendOperationRequest({resourceGroupName:e,deploymentName:r,nextLink:n,options:i},i4e)}},bn=zr(Wr,!1),HIe={path:"/{scope}/providers/Microsoft.Resources/deployments/{deploymentName}/operations/{operationId}",httpMethod:"GET",responses:{200:{bodyMapper:jl},default:{bodyMapper:P}},queryParameters:[U],urlParameters:[M,wr,re,Xp],headerParameters:[_],serializer:bn},YIe={path:"/{scope}/providers/Microsoft.Resources/deployments/{deploymentName}/operations",httpMethod:"GET",responses:{200:{bodyMapper:os},default:{bodyMapper:P}},queryParameters:[U,$r],urlParameters:[M,wr,re],headerParameters:[_],serializer:bn},JIe={path:"/providers/Microsoft.Resources/deployments/{deploymentName}/operations/{operationId}",httpMethod:"GET",responses:{200:{bodyMapper:jl},default:{bodyMapper:P}},queryParameters:[U],urlParameters:[M,re,Xp],headerParameters:[_],serializer:bn},jIe={path:"/providers/Microsoft.Resources/deployments/{deploymentName}/operations",httpMethod:"GET",responses:{200:{bodyMapper:os},default:{bodyMapper:P}},queryParameters:[U,$r],urlParameters:[M,re],headerParameters:[_],serializer:bn},zIe={path:"/providers/Microsoft.Management/managementGroups/{groupId}/providers/Microsoft.Resources/deployments/{deploymentName}/operations/{operationId}",httpMethod:"GET",responses:{200:{bodyMapper:jl},default:{bodyMapper:P}},queryParameters:[U],urlParameters:[M,re,Kr,Xp],headerParameters:[_],serializer:bn},WIe={path:"/providers/Microsoft.Management/managementGroups/{groupId}/providers/Microsoft.Resources/deployments/{deploymentName}/operations",httpMethod:"GET",responses:{200:{bodyMapper:os},default:{bodyMapper:P}},queryParameters:[U,$r],urlParameters:[M,re,Kr],headerParameters:[_],serializer:bn},$Ie={path:"/subscriptions/{subscriptionId}/providers/Microsoft.Resources/deployments/{deploymentName}/operations/{operationId}",httpMethod:"GET",responses:{200:{bodyMapper:jl},default:{bodyMapper:P}},queryParameters:[U],urlParameters:[M,re,X,Xp],headerParameters:[_],serializer:bn},KIe={path:"/subscriptions/{subscriptionId}/providers/Microsoft.Resources/deployments/{deploymentName}/operations",httpMethod:"GET",responses:{200:{bodyMapper:os},default:{bodyMapper:P}},queryParameters:[U,$r],urlParameters:[M,re,X],headerParameters:[_],serializer:bn},XIe={path:"/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/deployments/{deploymentName}/operations/{operationId}",httpMethod:"GET",responses:{200:{bodyMapper:jl},default:{bodyMapper:P}},queryParameters:[U],urlParameters:[M,re,X,rt,Xp],headerParameters:[_],serializer:bn},ZIe={path:"/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/deployments/{deploymentName}/operations",httpMethod:"GET",responses:{200:{bodyMapper:os},default:{bodyMapper:P}},queryParameters:[U,$r],urlParameters:[M,re,X,rt],headerParameters:[_],serializer:bn},e4e={path:"{nextLink}",httpMethod:"GET",responses:{200:{bodyMapper:os},default:{bodyMapper:P}},urlParameters:[M,Dt,wr,re],headerParameters:[_],serializer:bn},t4e={path:"{nextLink}",httpMethod:"GET",responses:{200:{bodyMapper:os},default:{bodyMapper:P}},urlParameters:[M,Dt,re],headerParameters:[_],serializer:bn},r4e={path:"{nextLink}",httpMethod:"GET",responses:{200:{bodyMapper:os},default:{bodyMapper:P}},urlParameters:[M,Dt,re,Kr],headerParameters:[_],serializer:bn},n4e={path:"{nextLink}",httpMethod:"GET",responses:{200:{bodyMapper:os},default:{bodyMapper:P}},urlParameters:[M,Dt,re,X],headerParameters:[_],serializer:bn},i4e={path:"{nextLink}",httpMethod:"GET",responses:{200:{bodyMapper:os},default:{bodyMapper:P}},urlParameters:[M,Dt,re,X,rt],headerParameters:[_],serializer:bn};var ff=class extends Yl{constructor(e,r,n){var i,s,a;if(e===void 0)throw new Error("'credentials' cannot be null");let o;typeof r=="string"?o=r:typeof r=="object"&&(n=r),n||(n={});let A={requestContentType:"application/json; charset=utf-8",credential:e},l="azsdk-js-arm-resources/6.0.0",c=n.userAgentOptions&&n.userAgentOptions.userAgentPrefix?`${n.userAgentOptions.userAgentPrefix} ${l}`:`${l}`,d=Object.assign(Object.assign(Object.assign({},A),n),{userAgentOptions:{userAgentPrefix:c},endpoint:(s=(i=n.endpoint)!==null&&i!==void 0?i:n.baseUri)!==null&&s!==void 0?s:"https://management.azure.com"});super(d);let p=!1;n?.pipeline&&n.pipeline.getOrderedPolicies().length>0&&(p=n.pipeline.getOrderedPolicies().some(m=>m.name===pf)),(!n||!n.pipeline||n.pipeline.getOrderedPolicies().length==0||!p)&&(this.pipeline.removePolicy({name:pf}),this.pipeline.addPolicy(Gp({credential:e,scopes:(a=d.credentialScopes)!==null&&a!==void 0?a:`${d.endpoint}/.default`,challengeCallbacks:{authorizeRequestOnChallenge:bw}}))),this.subscriptionId=o,this.$host=n.$host||"https://management.azure.com",this.apiVersion=n.apiVersion||"2024-11-01",this.operations=new _y(this),this.deployments=new My(this),this.providers=new Oy(this),this.providerResourceTypes=new xy(this),this.resources=new Ly(this),this.resourceGroups=new Fy(this),this.tagsOperations=new Uy(this),this.deploymentOperations=new qy(this),this.addCustomApiVersionPolicy(n.apiVersion)}addCustomApiVersionPolicy(e){if(!e)return;let r={name:"CustomApiVersionPolicy",async sendRequest(n,i){let s=n.url.split("?");if(s.length>1){let a=s[1].split("&").map(o=>o.indexOf("api-version")>-1?"api-version="+e:o);n.url=s[0]+"?"+a.join("&")}return i(n)}};this.pipeline.addPolicy(r)}};var TX=Ce(zJ());var JC="4.10.2",_f="04b07795-8ddb-461a-bbee-02f9e1bf7b46",WJ="common",fo;(function(t){t.AzureChina="https://login.chinacloudapi.cn",t.AzureGermany="https://login.microsoftonline.de",t.AzureGovernment="https://login.microsoftonline.us",t.AzurePublicCloud="https://login.microsoftonline.com"})(fo||(fo={}));var Mf=fo.AzurePublicCloud,$J="login.microsoftonline.com",KJ=["*"],XJ="cae",ZJ="nocae",ej="msal.cache";var Gb;var tj;function V8e(t){var e,r,n,i,s,a,o;let A={cache:{},broker:{isEnabled:(r=(e=t.brokerOptions)===null||e===void 0?void 0:e.enabled)!==null&&r!==void 0?r:!1,enableMsaPassthrough:(i=(n=t.brokerOptions)===null||n===void 0?void 0:n.legacyEnableMsaPassthrough)!==null&&i!==void 0?i:!1,parentWindowHandle:(s=t.brokerOptions)===null||s===void 0?void 0:s.parentWindowHandle}};if(!((a=t.tokenCachePersistenceOptions)===null||a===void 0)&&a.enabled){if(Gb===void 0)throw new Error(["Persistent token caching was requested, but no persistence provider was configured.","You must install the identity-cache-persistence plugin package (`npm install --save @azure/identity-cache-persistence`)","and enable it by importing `useIdentityPlugin` from `@azure/identity` and calling","`useIdentityPlugin(cachePersistencePlugin)` before using `tokenCachePersistenceOptions`."].join(" "));let l=t.tokenCachePersistenceOptions.name||ej;A.cache.cachePlugin=Gb(Object.assign({name:`${l}.${ZJ}`},t.tokenCachePersistenceOptions)),A.cache.cachePluginCae=Gb(Object.assign({name:`${l}.${XJ}`},t.tokenCachePersistenceOptions))}if(!((o=t.brokerOptions)===null||o===void 0)&&o.enabled){if(tj===void 0)throw new Error(["Broker for WAM was requested to be enabled, but no native broker was configured.","You must install the identity-broker plugin package (`npm install --save @azure/identity-broker`)","and enable it by importing `useIdentityPlugin` from `@azure/identity` and calling","`useIdentityPlugin(createNativeBrokerPlugin())` before using `enableBroker`."].join(" "));A.broker.nativeBrokerPlugin=tj.broker}return A}var rj={generatePluginConfiguration:V8e};var Ri=Aa("identity");function Hb(t){return t.reduce((e,r)=>(process.env[r]?e.assigned.push(r):e.missing.push(r),e),{missing:[],assigned:[]})}function Zr(t){return`SUCCESS. Scopes: ${Array.isArray(t)?t.join(", "):t}.`}function st(t,e){let r="ERROR.";return t?.length&&(r+=` Scopes: ${Array.isArray(t)?t.join(", "):t}.`),`${r} Error message: ${typeof e=="string"?e:e.message}.`}function nj(t,e,r=Ri){let n=e?`${e.fullTitle} ${t}`:t;function i(A){r.info(`${n} =>`,A)}function s(A){r.warning(`${n} =>`,A)}function a(A){r.verbose(`${n} =>`,A)}function o(A){r.error(`${n} =>`,A)}return{title:t,fullTitle:n,info:i,warning:s,verbose:a,error:o}}function Ie(t,e=Ri){let r=nj(t,void 0,e);return Object.assign(Object.assign({},r),{parent:e,getToken:nj("=> getToken()",r,e)})}function G8e(t){return t&&typeof t.error=="string"&&typeof t.error_description=="string"}var sj="CredentialUnavailableError",ke=class extends Error{constructor(e,r){super(e,r),this.name=sj}},jC="AuthenticationError",OA=class extends Error{constructor(e,r,n){let i={error:"unknown",errorDescription:"An unknown error occurred and no additional details are available."};if(G8e(r))i=ij(r);else if(typeof r=="string")try{let s=JSON.parse(r);i=ij(s)}catch{e===400?i={error:"invalid_request",errorDescription:`The service indicated that the request was invalid. - -${r}`}:i={error:"unknown_error",errorDescription:`An unknown error has occurred. Response body: - -${r}`}}else i={error:"unknown_error",errorDescription:"An unknown error occurred and no additional details are available."};super(`${i.error} Status code: ${e} -More details: -${i.errorDescription},`,n),this.statusCode=e,this.errorResponse=i,this.name=jC}},aj="AggregateAuthenticationError",Of=class extends Error{constructor(e,r){let n=e.join(` -`);super(`${r} -${n}`),this.errors=e,this.name=aj}};function ij(t){return{error:t.error,errorDescription:t.error_description,correlationId:t.correlation_id,errorCodes:t.error_codes,timestamp:t.timestamp,traceId:t.trace_id}}var wa=class extends Error{constructor(e){super(e.message,e.cause?{cause:e.cause}:void 0),this.scopes=e.scopes,this.getTokenOptions=e.getTokenOptions,this.name="AuthenticationRequiredError"}};function H8e(t){return`The current credential is not configured to acquire tokens for tenant ${t}. To enable acquiring tokens for this tenant add it to the AdditionallyAllowedTenants on the credential options, or add "*" to AdditionallyAllowedTenants to allow acquiring tokens for any tenant.`}function Lr(t,e,r=[],n){var i;let s;if(process.env.AZURE_IDENTITY_DISABLE_MULTITENANTAUTH||t==="adfs"?s=t:s=(i=e?.tenantId)!==null&&i!==void 0?i:t,t&&s!==t&&!r.includes("*")&&!r.some(a=>a.localeCompare(s)===0)){let a=H8e(s);throw n?.info(a),new ke(a)}return s}function ri(t,e){if(!e.match(/^[0-9a-zA-Z-.]+$/)){let r=new Error("Invalid tenant id provided. You can locate your tenant id by following the instructions listed here: https://learn.microsoft.com/partner-center/find-ids-and-domain-names.");throw t.info(st("",r)),r}}function zC(t,e,r){return e?(ri(t,e),e):(r||(r=_f),r!==_f?"common":"organizations")}function en(t){return!t||t.length===0?[]:t.includes("*")?KJ:t}function oj(t){return t==="adfs"?"oauth2/token":"oauth2/v2.0/token"}var kt=lf({namespace:"Microsoft.AAD",packageName:"@azure/identity",packageVersion:JC});function Aj(t){if(typeof t.expires_on=="number")return t.expires_on*1e3;if(typeof t.expires_on=="string"){let e=+t.expires_on;if(!isNaN(e))return e*1e3;let r=Date.parse(t.expires_on);if(!isNaN(r))return r}if(typeof t.expires_in=="number")return Date.now()+t.expires_in*1e3;throw new Error(`Failed to parse token expiration from body. expires_in="${t.expires_in}", expires_on="${t.expires_on}"`)}function lj(t){if(t.refresh_on){if(typeof t.refresh_on=="number")return t.refresh_on*1e3;if(typeof t.refresh_on=="string"){let e=+t.refresh_on;if(!isNaN(e))return e*1e3;let r=Date.parse(t.refresh_on);if(!isNaN(r))return r}throw new Error(`Failed to parse refresh_on from body. refresh_on="${t.refresh_on}"`)}else return}var xf="noCorrelationId";function Y8e(t){let e=t?.authorityHost;return af&&(e=e??process.env.AZURE_AUTHORITY_HOST),e??Mf}var ic=class extends Yl{constructor(e){var r,n;let i=`azsdk-js-identity/${JC}`,s=!((r=e?.userAgentOptions)===null||r===void 0)&&r.userAgentPrefix?`${e.userAgentOptions.userAgentPrefix} ${i}`:`${i}`,a=Y8e(e);if(!a.startsWith("https:"))throw new Error("The authorityHost address must use the 'https' protocol.");super(Object.assign(Object.assign({requestContentType:"application/json; charset=utf-8",retryOptions:{maxRetries:3}},e),{userAgentOptions:{userAgentPrefix:s},baseUri:a})),this.allowInsecureConnection=!1,this.authorityHost=a,this.abortControllers=new Map,this.allowLoggingAccountIdentifiers=(n=e?.loggingOptions)===null||n===void 0?void 0:n.allowLoggingAccountIdentifiers,this.tokenCredentialOptions=Object.assign({},e),e?.allowInsecureConnection&&(this.allowInsecureConnection=e.allowInsecureConnection)}async sendTokenRequest(e){Ri.info(`IdentityClient: sending token request to [${e.url}]`);let r=await this.sendRequest(e);if(r.bodyAsText&&(r.status===200||r.status===201)){let n=JSON.parse(r.bodyAsText);if(!n.access_token)return null;this.logIdentifiers(r);let i={accessToken:{token:n.access_token,expiresOnTimestamp:Aj(n),refreshAfterTimestamp:lj(n),tokenType:"Bearer"},refreshToken:n.refresh_token};return Ri.info(`IdentityClient: [${e.url}] token acquired, expires on ${i.accessToken.expiresOnTimestamp}`),i}else{let n=new OA(r.status,r.bodyAsText);throw Ri.warning(`IdentityClient: authentication error. HTTP status: ${r.status}, ${n.errorResponse.errorDescription}`),n}}async refreshAccessToken(e,r,n,i,s,a={}){if(i===void 0)return null;Ri.info(`IdentityClient: refreshing access token with client ID: ${r}, scopes: ${n} started`);let o={grant_type:"refresh_token",client_id:r,refresh_token:i,scope:n};s!==void 0&&(o.client_secret=s);let A=new URLSearchParams(o);return kt.withSpan("IdentityClient.refreshAccessToken",a,async l=>{try{let c=oj(e),d=ua({url:`${this.authorityHost}/${e}/${c}`,method:"POST",body:A.toString(),abortSignal:a.abortSignal,headers:Xn({Accept:"application/json","Content-Type":"application/x-www-form-urlencoded"}),tracingOptions:l.tracingOptions}),p=await this.sendTokenRequest(d);return Ri.info(`IdentityClient: refreshed token for client ID: ${r}`),p}catch(c){if(c.name===jC&&c.errorResponse.error==="interaction_required")return Ri.info(`IdentityClient: interaction required for client ID: ${r}`),null;throw Ri.warning(`IdentityClient: failed refreshing token for client ID: ${r}: ${c}`),c}})}generateAbortSignal(e){let r=new AbortController,n=this.abortControllers.get(e)||[];n.push(r),this.abortControllers.set(e,n);let i=r.signal.onabort;return r.signal.onabort=(...s)=>{this.abortControllers.set(e,void 0),i&&i.apply(r.signal,s)},r.signal}abortRequests(e){let r=e||xf,n=[...this.abortControllers.get(r)||[],...this.abortControllers.get(xf)||[]];if(n.length){for(let i of n)i.abort();this.abortControllers.set(r,void 0)}}getCorrelationId(e){var r;let n=(r=e?.body)===null||r===void 0?void 0:r.split("&").map(i=>i.split("=")).find(([i])=>i==="client-request-id");return n&&n.length&&n[1]||xf}async sendGetRequestAsync(e,r){let n=ua({url:e,method:"GET",body:r?.body,allowInsecureConnection:this.allowInsecureConnection,headers:Xn(r?.headers),abortSignal:this.generateAbortSignal(xf)}),i=await this.sendRequest(n);return this.logIdentifiers(i),{body:i.bodyAsText?JSON.parse(i.bodyAsText):void 0,headers:i.headers.toJSON(),status:i.status}}async sendPostRequestAsync(e,r){let n=ua({url:e,method:"POST",body:r?.body,headers:Xn(r?.headers),allowInsecureConnection:this.allowInsecureConnection,abortSignal:this.generateAbortSignal(this.getCorrelationId(r))}),i=await this.sendRequest(n);return this.logIdentifiers(i),{body:i.bodyAsText?JSON.parse(i.bodyAsText):void 0,headers:i.headers.toJSON(),status:i.status}}getTokenCredentialOptions(){return this.tokenCredentialOptions}logIdentifiers(e){if(!this.allowLoggingAccountIdentifiers||!e.bodyAsText)return;let r="No User Principal Name available";try{let i=(e.parsedBody||JSON.parse(e.bodyAsText)).access_token;if(!i)return;let s=i.split(".")[1],{appid:a,upn:o,tid:A,oid:l}=JSON.parse(Buffer.from(s,"base64").toString("utf8"));Ri.info(`[Authenticated account] Client ID: ${a}. Tenant ID: ${A}. User Principal Name: ${o||r}. Object ID (user): ${l}`)}catch(n){Ri.warning("allowLoggingAccountIdentifiers was set, but we couldn't log the account information. Error:",n.message)}}};var gHe=Ie("VisualStudioCodeCredential");var EHe={AzureCloud:fo.AzurePublicCloud,AzureChina:fo.AzureChina,AzureGermanCloud:fo.AzureGermany,AzureUSGovernment:fo.AzureGovernment};var _i={};Ur(_i,{AuthError:()=>ge,AuthErrorCodes:()=>Pu,AuthErrorMessage:()=>Jb,AzureCloudInstance:()=>Bo,ClientApplication:()=>tl,ClientAssertion:()=>ko,ClientAuthError:()=>GA,ClientAuthErrorCodes:()=>at,ClientAuthErrorMessage:()=>zb,ClientConfigurationError:()=>Fu,ClientConfigurationErrorCodes:()=>Lu,ClientConfigurationErrorMessage:()=>Zb,ClientCredentialClient:()=>rl,ConfidentialClientApplication:()=>im,CryptoProvider:()=>ka,DeviceCodeClient:()=>tm,DistributedCachePlugin:()=>I4,InteractionRequiredAuthError:()=>Di,InteractionRequiredAuthErrorCodes:()=>gI,InteractionRequiredAuthErrorMessage:()=>s7,LogLevel:()=>Ft,Logger:()=>Ni,ManagedIdentityApplication:()=>ig,ManagedIdentitySourceNames:()=>pe,OnBehalfOfClient:()=>nm,PromptValue:()=>Os,ProtocolMode:()=>mn,PublicClientApplication:()=>rm,ResponseMode:()=>Sa,ServerError:()=>Dn,TokenCache:()=>ju,TokenCacheContext:()=>ki,UsernamePasswordClient:()=>em,internals:()=>a7,version:()=>Us});var a7={};Ur(a7,{Deserializer:()=>No,Serializer:()=>xA});var xA=class{static serializeJSONBlob(e){return JSON.stringify(e)}static serializeAccounts(e){let r={};return Object.keys(e).map(function(n){let i=e[n];r[n]={home_account_id:i.homeAccountId,environment:i.environment,realm:i.realm,local_account_id:i.localAccountId,username:i.username,authority_type:i.authorityType,name:i.name,client_info:i.clientInfo,last_modification_time:i.lastModificationTime,last_modification_app:i.lastModificationApp,tenantProfiles:i.tenantProfiles?.map(s=>JSON.stringify(s))}}),r}static serializeIdTokens(e){let r={};return Object.keys(e).map(function(n){let i=e[n];r[n]={home_account_id:i.homeAccountId,environment:i.environment,credential_type:i.credentialType,client_id:i.clientId,secret:i.secret,realm:i.realm}}),r}static serializeAccessTokens(e){let r={};return Object.keys(e).map(function(n){let i=e[n];r[n]={home_account_id:i.homeAccountId,environment:i.environment,credential_type:i.credentialType,client_id:i.clientId,secret:i.secret,realm:i.realm,target:i.target,cached_at:i.cachedAt,expires_on:i.expiresOn,extended_expires_on:i.extendedExpiresOn,refresh_on:i.refreshOn,key_id:i.keyId,token_type:i.tokenType,requestedClaims:i.requestedClaims,requestedClaimsHash:i.requestedClaimsHash,userAssertionHash:i.userAssertionHash}}),r}static serializeRefreshTokens(e){let r={};return Object.keys(e).map(function(n){let i=e[n];r[n]={home_account_id:i.homeAccountId,environment:i.environment,credential_type:i.credentialType,client_id:i.clientId,secret:i.secret,family_id:i.familyId,target:i.target,realm:i.realm}}),r}static serializeAppMetadata(e){let r={};return Object.keys(e).map(function(n){let i=e[n];r[n]={client_id:i.clientId,environment:i.environment,family_id:i.familyId}}),r}static serializeAllCache(e){return{Account:this.serializeAccounts(e.accounts),IdToken:this.serializeIdTokens(e.idTokens),AccessToken:this.serializeAccessTokens(e.accessTokens),RefreshToken:this.serializeRefreshTokens(e.refreshTokens),AppMetadata:this.serializeAppMetadata(e.appMetadata)}}};var R={LIBRARY_NAME:"MSAL.JS",SKU:"msal.js.common",CACHE_PREFIX:"msal",DEFAULT_AUTHORITY:"https://login.microsoftonline.com/common/",DEFAULT_AUTHORITY_HOST:"login.microsoftonline.com",DEFAULT_COMMON_TENANT:"common",ADFS:"adfs",DSTS:"dstsv2",AAD_INSTANCE_DISCOVERY_ENDPT:"https://login.microsoftonline.com/common/discovery/instance?api-version=1.1&authorization_endpoint=",CIAM_AUTH_URL:".ciamlogin.com",AAD_TENANT_DOMAIN_SUFFIX:".onmicrosoft.com",RESOURCE_DELIM:"|",NO_ACCOUNT:"NO_ACCOUNT",CLAIMS:"claims",CONSUMER_UTID:"9188040d-6c67-4c5b-b112-36a304b66dad",OPENID_SCOPE:"openid",PROFILE_SCOPE:"profile",OFFLINE_ACCESS_SCOPE:"offline_access",EMAIL_SCOPE:"email",CODE_GRANT_TYPE:"authorization_code",RT_GRANT_TYPE:"refresh_token",S256_CODE_CHALLENGE_METHOD:"S256",URL_FORM_CONTENT_TYPE:"application/x-www-form-urlencoded;charset=utf-8",AUTHORIZATION_PENDING:"authorization_pending",NOT_DEFINED:"not_defined",EMPTY_STRING:"",NOT_APPLICABLE:"N/A",NOT_AVAILABLE:"Not Available",FORWARD_SLASH:"/",IMDS_ENDPOINT:"http://169.254.169.254/metadata/instance/compute/location",IMDS_VERSION:"2020-06-01",IMDS_TIMEOUT:2e3,AZURE_REGION_AUTO_DISCOVER_FLAG:"TryAutoDetect",REGIONAL_AUTH_PUBLIC_CLOUD_SUFFIX:"login.microsoft.com",KNOWN_PUBLIC_CLOUDS:["login.microsoftonline.com","login.windows.net","login.microsoft.com","sts.windows.net"],SHR_NONCE_VALIDITY:240,INVALID_INSTANCE:"invalid_instance"},fe={SUCCESS:200,SUCCESS_RANGE_START:200,SUCCESS_RANGE_END:299,REDIRECT:302,CLIENT_ERROR:400,CLIENT_ERROR_RANGE_START:400,BAD_REQUEST:400,UNAUTHORIZED:401,NOT_FOUND:404,REQUEST_TIMEOUT:408,GONE:410,TOO_MANY_REQUESTS:429,CLIENT_ERROR_RANGE_END:499,SERVER_ERROR:500,SERVER_ERROR_RANGE_START:500,SERVICE_UNAVAILABLE:503,GATEWAY_TIMEOUT:504,SERVER_ERROR_RANGE_END:599,MULTI_SIDED_ERROR:600},ni=[R.OPENID_SCOPE,R.PROFILE_SCOPE,R.OFFLINE_ACCESS_SCOPE],Yb=[...ni,R.EMAIL_SCOPE],Et={CONTENT_TYPE:"Content-Type",CONTENT_LENGTH:"Content-Length",RETRY_AFTER:"Retry-After",CCS_HEADER:"X-AnchorMailbox",WWWAuthenticate:"WWW-Authenticate",AuthenticationInfo:"Authentication-Info",X_MS_REQUEST_ID:"x-ms-request-id",X_MS_HTTP_VERSION:"x-ms-httpver"};var ii={COMMON:"common",ORGANIZATIONS:"organizations",CONSUMERS:"consumers"},sc={ACCESS_TOKEN:"access_token",XMS_CC:"xms_cc"},Os={LOGIN:"login",SELECT_ACCOUNT:"select_account",CONSENT:"consent",NONE:"none",CREATE:"create",NO_SESSION:"no_session"},ac={PLAIN:"plain",S256:"S256"},Tu={CODE:"code",IDTOKEN_TOKEN:"id_token token",IDTOKEN_TOKEN_REFRESHTOKEN:"id_token token refresh_token"};var Sa={QUERY:"query",FRAGMENT:"fragment",FORM_POST:"form_post"},si={IMPLICIT_GRANT:"implicit",AUTHORIZATION_CODE_GRANT:"authorization_code",CLIENT_CREDENTIALS_GRANT:"client_credentials",RESOURCE_OWNER_PASSWORD_GRANT:"password",REFRESH_TOKEN_GRANT:"refresh_token",DEVICE_CODE_GRANT:"device_code",JWT_BEARER:"urn:ietf:params:oauth:grant-type:jwt-bearer"},oc={MSSTS_ACCOUNT_TYPE:"MSSTS",ADFS_ACCOUNT_TYPE:"ADFS",MSAV1_ACCOUNT_TYPE:"MSA",GENERIC_ACCOUNT_TYPE:"Generic"},Xt={CACHE_KEY_SEPARATOR:"-",CLIENT_INFO_SEPARATOR:"."},Ve={ID_TOKEN:"IdToken",ACCESS_TOKEN:"AccessToken",ACCESS_TOKEN_WITH_AUTH_SCHEME:"AccessToken_With_AuthScheme",REFRESH_TOKEN:"RefreshToken"};var Lf="appmetadata",cj="client_info",go="1",Du={CACHE_KEY:"authority-metadata",REFRESH_TIME_SECONDS:3600*24},Rn={CONFIG:"config",CACHE:"cache",NETWORK:"network",HARDCODED_VALUES:"hardcoded_values"},Sr={SCHEMA_VERSION:5,MAX_LAST_HEADER_BYTES:330,MAX_CACHED_ERRORS:50,CACHE_KEY:"server-telemetry",CATEGORY_SEPARATOR:"|",VALUE_SEPARATOR:",",OVERFLOW_TRUE:"1",OVERFLOW_FALSE:"0",UNKNOWN_ERROR:"unknown_error"},Me={BEARER:"Bearer",POP:"pop",SSH:"ssh-cert"},ba={DEFAULT_THROTTLE_TIME_SECONDS:60,DEFAULT_MAX_THROTTLE_TIME_SECONDS:3600,THROTTLING_PREFIX:"throttling",X_MS_LIB_CAPABILITY_VALUE:"retry-after, h429"},Ff={INVALID_GRANT_ERROR:"invalid_grant",CLIENT_MISMATCH_ERROR:"client_mismatch"},Uf={username:"username",password:"password"},Ac={FAILED_AUTO_DETECTION:"1",INTERNAL_CACHE:"2",ENVIRONMENT_VARIABLE:"3",IMDS:"4"},WC={CONFIGURED_NO_AUTO_DETECTION:"2",AUTO_DETECTION_REQUESTED_SUCCESSFUL:"4",AUTO_DETECTION_REQUESTED_FAILED:"5"},dt={NOT_APPLICABLE:"0",FORCE_REFRESH_OR_CLAIMS:"1",NO_CACHED_ACCESS_TOKEN:"2",CACHED_ACCESS_TOKEN_EXPIRED:"3",PROACTIVELY_REFRESHED:"4"};var ku=300,tn={BASE64:"base64",HEX:"hex",UTF8:"utf-8"};var Pu={};Ur(Pu,{postRequestFailed:()=>Vf,unexpectedError:()=>qf});var qf="unexpected_error",Vf="post_request_failed";var $C={[qf]:"Unexpected error in authentication.",[Vf]:"Post request failed from the network, could be a 4xx/5xx or a network unavailability. Please check the exact error code for details."},Jb={unexpectedError:{code:qf,desc:$C[qf]},postRequestFailed:{code:Vf,desc:$C[Vf]}},ge=class t extends Error{constructor(e,r,n){let i=r?`${e}: ${r}`:e;super(i),Object.setPrototypeOf(this,t.prototype),this.errorCode=e||R.EMPTY_STRING,this.errorMessage=r||R.EMPTY_STRING,this.subError=n||R.EMPTY_STRING,this.name="AuthError"}setCorrelationId(e){this.correlationId=e}};function jb(t,e){return new ge(t,e?`${$C[t]} ${e}`:$C[t])}var at={};Ur(at,{authTimeNotFound:()=>Eo,authorizationCodeMissingFromServerResponse:()=>Qc,bindingKeyNotRemoved:()=>Zf,cannotAppendScopeSet:()=>Cc,cannotRemoveEmptyScope:()=>yc,clientInfoDecodingError:()=>LA,clientInfoEmptyError:()=>lc,deviceCodeExpired:()=>Jf,deviceCodePollingCancelled:()=>Yf,deviceCodeUnknownError:()=>jf,emptyInputScopeSet:()=>qA,endSessionEndpointNotSupported:()=>wc,endpointResolutionError:()=>Nn,hashNotDeserialized:()=>uc,invalidAssertion:()=>$f,invalidCacheEnvironment:()=>Co,invalidCacheRecord:()=>Ic,invalidClientCredential:()=>Kf,invalidState:()=>xs,keyIdMissing:()=>Sc,maxAgeTranspired:()=>fc,methodNotImplemented:()=>Re,missingTenantIdError:()=>r1,multipleMatchingAccounts:()=>Hf,multipleMatchingAppMetadata:()=>gc,multipleMatchingTokens:()=>Gf,nestedAppAuthBridgeDisabled:()=>n1,networkError:()=>dc,noAccountFound:()=>zf,noAccountInSilentRequest:()=>yo,noCryptoObject:()=>VA,noNetworkConnectivity:()=>e1,nonceMismatch:()=>hc,nullOrEmptyToken:()=>cc,openIdConfigError:()=>pc,requestCannotBeMade:()=>Ec,stateMismatch:()=>mc,stateNotFound:()=>UA,tokenClaimsCnfRequiredForSignedJwt:()=>Bc,tokenParsingError:()=>FA,tokenRefreshRequired:()=>Io,unexpectedCredentialType:()=>Wf,userCanceled:()=>t1,userTimeoutReached:()=>Xf});var LA="client_info_decoding_error",lc="client_info_empty_error",FA="token_parsing_error",cc="null_or_empty_token",Nn="endpoints_resolution_error",dc="network_error",pc="openid_config_error",uc="hash_not_deserialized",xs="invalid_state",mc="state_mismatch",UA="state_not_found",hc="nonce_mismatch",Eo="auth_time_not_found",fc="max_age_transpired",Gf="multiple_matching_tokens",Hf="multiple_matching_accounts",gc="multiple_matching_appMetadata",Ec="request_cannot_be_made",yc="cannot_remove_empty_scope",Cc="cannot_append_scopeset",qA="empty_input_scopeset",Yf="device_code_polling_cancelled",Jf="device_code_expired",jf="device_code_unknown_error",yo="no_account_in_silent_request",Ic="invalid_cache_record",Co="invalid_cache_environment",zf="no_account_found",VA="no_crypto_object",Wf="unexpected_credential_type",$f="invalid_assertion",Kf="invalid_client_credential",Io="token_refresh_required",Xf="user_timeout_reached",Bc="token_claims_cnf_required_for_signedjwt",Qc="authorization_code_missing_from_server_response",Zf="binding_key_not_removed",wc="end_session_endpoint_not_supported",Sc="key_id_missing",e1="no_network_connectivity",t1="user_canceled",r1="missing_tenant_id_error",Re="method_not_implemented",n1="nested_app_auth_bridge_disabled";var Ee={[LA]:"The client info could not be parsed/decoded correctly",[lc]:"The client info was empty",[FA]:"Token cannot be parsed",[cc]:"The token is null or empty",[Nn]:"Endpoints cannot be resolved",[dc]:"Network request failed",[pc]:"Could not retrieve endpoints. Check your authority and verify the .well-known/openid-configuration endpoint returns the required endpoints.",[uc]:"The hash parameters could not be deserialized",[xs]:"State was not the expected format",[mc]:"State mismatch error",[UA]:"State not found",[hc]:"Nonce mismatch error",[Eo]:"Max Age was requested and the ID token is missing the auth_time variable. auth_time is an optional claim and is not enabled by default - it must be enabled. See https://aka.ms/msaljs/optional-claims for more information.",[fc]:"Max Age is set to 0, or too much time has elapsed since the last end-user authentication.",[Gf]:"The cache contains multiple tokens satisfying the requirements. Call AcquireToken again providing more requirements such as authority or account.",[Hf]:"The cache contains multiple accounts satisfying the given parameters. Please pass more info to obtain the correct account",[gc]:"The cache contains multiple appMetadata satisfying the given parameters. Please pass more info to obtain the correct appMetadata",[Ec]:"Token request cannot be made without authorization code or refresh token.",[yc]:"Cannot remove null or empty scope from ScopeSet",[Cc]:"Cannot append ScopeSet",[qA]:"Empty input ScopeSet cannot be processed",[Yf]:"Caller has cancelled token endpoint polling during device code flow by setting DeviceCodeRequest.cancel = true.",[Jf]:"Device code is expired.",[jf]:"Device code stopped polling for unknown reasons.",[yo]:"Please pass an account object, silent flow is not supported without account information",[Ic]:"Cache record object was null or undefined.",[Co]:"Invalid environment when attempting to create cache entry",[zf]:"No account found in cache for given key.",[VA]:"No crypto object detected.",[Wf]:"Unexpected credential type.",[$f]:"Client assertion must meet requirements described in https://tools.ietf.org/html/rfc7515",[Kf]:"Client credential (secret, certificate, or assertion) must not be empty when creating a confidential client. An application should at most have one credential",[Io]:"Cannot return token from cache because it must be refreshed. This may be due to one of the following reasons: forceRefresh parameter is set to true, claims have been requested, there is no cached access token or it is expired.",[Xf]:"User defined timeout for device code polling reached",[Bc]:"Cannot generate a POP jwt if the token_claims are not populated",[Qc]:"Server response does not contain an authorization code to proceed",[Zf]:"Could not remove the credential's binding key from storage.",[wc]:"The provided authority does not support logout",[Sc]:"A keyId value is missing from the requested bound token's cache record and is required to match the token to it's stored binding key.",[e1]:"No network connectivity. Check your internet connection.",[t1]:"User cancelled the flow.",[r1]:"A tenant id - not common, organizations, or consumers - must be specified when using the client_credentials flow.",[Re]:"This method has not been implemented",[n1]:"The nested app auth bridge is disabled"},zb={clientInfoDecodingError:{code:LA,desc:Ee[LA]},clientInfoEmptyError:{code:lc,desc:Ee[lc]},tokenParsingError:{code:FA,desc:Ee[FA]},nullOrEmptyToken:{code:cc,desc:Ee[cc]},endpointResolutionError:{code:Nn,desc:Ee[Nn]},networkError:{code:dc,desc:Ee[dc]},unableToGetOpenidConfigError:{code:pc,desc:Ee[pc]},hashNotDeserialized:{code:uc,desc:Ee[uc]},invalidStateError:{code:xs,desc:Ee[xs]},stateMismatchError:{code:mc,desc:Ee[mc]},stateNotFoundError:{code:UA,desc:Ee[UA]},nonceMismatchError:{code:hc,desc:Ee[hc]},authTimeNotFoundError:{code:Eo,desc:Ee[Eo]},maxAgeTranspired:{code:fc,desc:Ee[fc]},multipleMatchingTokens:{code:Gf,desc:Ee[Gf]},multipleMatchingAccounts:{code:Hf,desc:Ee[Hf]},multipleMatchingAppMetadata:{code:gc,desc:Ee[gc]},tokenRequestCannotBeMade:{code:Ec,desc:Ee[Ec]},removeEmptyScopeError:{code:yc,desc:Ee[yc]},appendScopeSetError:{code:Cc,desc:Ee[Cc]},emptyInputScopeSetError:{code:qA,desc:Ee[qA]},DeviceCodePollingCancelled:{code:Yf,desc:Ee[Yf]},DeviceCodeExpired:{code:Jf,desc:Ee[Jf]},DeviceCodeUnknownError:{code:jf,desc:Ee[jf]},NoAccountInSilentRequest:{code:yo,desc:Ee[yo]},invalidCacheRecord:{code:Ic,desc:Ee[Ic]},invalidCacheEnvironment:{code:Co,desc:Ee[Co]},noAccountFound:{code:zf,desc:Ee[zf]},noCryptoObj:{code:VA,desc:Ee[VA]},unexpectedCredentialType:{code:Wf,desc:Ee[Wf]},invalidAssertion:{code:$f,desc:Ee[$f]},invalidClientCredential:{code:Kf,desc:Ee[Kf]},tokenRefreshRequired:{code:Io,desc:Ee[Io]},userTimeoutReached:{code:Xf,desc:Ee[Xf]},tokenClaimsRequired:{code:Bc,desc:Ee[Bc]},noAuthorizationCodeFromServer:{code:Qc,desc:Ee[Qc]},bindingKeyNotRemovedError:{code:Zf,desc:Ee[Zf]},logoutNotSupported:{code:wc,desc:Ee[wc]},keyIdMissing:{code:Sc,desc:Ee[Sc]},noNetworkConnectivity:{code:e1,desc:Ee[e1]},userCanceledError:{code:t1,desc:Ee[t1]},missingTenantIdError:{code:r1,desc:Ee[r1]},nestedAppAuthBridgeDisabled:{code:n1,desc:Ee[n1]}},GA=class t extends ge{constructor(e,r){super(e,r?`${Ee[e]}: ${r}`:Ee[e]),this.name="ClientAuthError",Object.setPrototypeOf(this,t.prototype)}};function D(t,e){return new GA(t,e)}var _u={createNewGuid:()=>{throw D(Re)},base64Decode:()=>{throw D(Re)},base64Encode:()=>{throw D(Re)},base64UrlEncode:()=>{throw D(Re)},encodeKid:()=>{throw D(Re)},async getPublicKeyThumbprint(){throw D(Re)},async removeTokenBindingKey(){throw D(Re)},async clearKeystore(){throw D(Re)},async signJwt(){throw D(Re)},async hashString(){throw D(Re)}};var Ft;(function(t){t[t.Error=0]="Error",t[t.Warning=1]="Warning",t[t.Info=2]="Info",t[t.Verbose=3]="Verbose",t[t.Trace=4]="Trace"})(Ft||(Ft={}));var Ni=class t{constructor(e,r,n){this.level=Ft.Info;let i=()=>{},s=e||t.createDefaultLoggerOptions();this.localCallback=s.loggerCallback||i,this.piiLoggingEnabled=s.piiLoggingEnabled||!1,this.level=typeof s.logLevel=="number"?s.logLevel:Ft.Info,this.correlationId=s.correlationId||R.EMPTY_STRING,this.packageName=r||R.EMPTY_STRING,this.packageVersion=n||R.EMPTY_STRING}static createDefaultLoggerOptions(){return{loggerCallback:()=>{},piiLoggingEnabled:!1,logLevel:Ft.Info}}clone(e,r,n){return new t({loggerCallback:this.localCallback,piiLoggingEnabled:this.piiLoggingEnabled,logLevel:this.level,correlationId:n||this.correlationId},e,r)}logMessage(e,r){if(r.logLevel>this.level||!this.piiLoggingEnabled&&r.containsPii)return;let s=`${`[${new Date().toUTCString()}] : [${r.correlationId||this.correlationId||""}]`} : ${this.packageName}@${this.packageVersion} : ${Ft[r.logLevel]} - ${e}`;this.executeCallback(r.logLevel,s,r.containsPii||!1)}executeCallback(e,r,n){this.localCallback&&this.localCallback(e,r,n)}error(e,r){this.logMessage(e,{logLevel:Ft.Error,containsPii:!1,correlationId:r||R.EMPTY_STRING})}errorPii(e,r){this.logMessage(e,{logLevel:Ft.Error,containsPii:!0,correlationId:r||R.EMPTY_STRING})}warning(e,r){this.logMessage(e,{logLevel:Ft.Warning,containsPii:!1,correlationId:r||R.EMPTY_STRING})}warningPii(e,r){this.logMessage(e,{logLevel:Ft.Warning,containsPii:!0,correlationId:r||R.EMPTY_STRING})}info(e,r){this.logMessage(e,{logLevel:Ft.Info,containsPii:!1,correlationId:r||R.EMPTY_STRING})}infoPii(e,r){this.logMessage(e,{logLevel:Ft.Info,containsPii:!0,correlationId:r||R.EMPTY_STRING})}verbose(e,r){this.logMessage(e,{logLevel:Ft.Verbose,containsPii:!1,correlationId:r||R.EMPTY_STRING})}verbosePii(e,r){this.logMessage(e,{logLevel:Ft.Verbose,containsPii:!0,correlationId:r||R.EMPTY_STRING})}trace(e,r){this.logMessage(e,{logLevel:Ft.Trace,containsPii:!1,correlationId:r||R.EMPTY_STRING})}tracePii(e,r){this.logMessage(e,{logLevel:Ft.Trace,containsPii:!0,correlationId:r||R.EMPTY_STRING})}isPiiLoggingEnabled(){return this.piiLoggingEnabled||!1}};var KC="@azure/msal-common",Mu="15.8.0";var Bo={None:"none",AzurePublic:"https://login.microsoftonline.com",AzurePpe:"https://login.windows-ppe.net",AzureChina:"https://login.chinacloudapi.cn",AzureGermany:"https://login.microsoftonline.de",AzureUsGovernment:"https://login.microsoftonline.us"};var br={};Ur(br,{createAccessTokenEntity:()=>Kb,createIdTokenEntity:()=>$b,createRefreshTokenEntity:()=>Xb,generateAppMetadataKey:()=>i5e,generateAuthorityMetadataExpiresAt:()=>eI,generateCredentialKey:()=>a1,isAccessTokenEntity:()=>z8e,isAppMetadataEntity:()=>s5e,isAuthorityMetadataEntity:()=>a5e,isAuthorityMetadataExpired:()=>tI,isCredentialEntity:()=>ZC,isIdTokenEntity:()=>W8e,isRefreshTokenEntity:()=>$8e,isServerTelemetryEntity:()=>r5e,isThrottlingEntity:()=>n5e,updateAuthorityEndpointMetadata:()=>xu,updateCloudDiscoveryMetadata:()=>o1});var XC={};Ur(XC,{checkMaxAge:()=>i1,extractTokenClaims:()=>Qo,getJWSPayload:()=>dj});function Qo(t,e){let r=dj(t);try{let n=e(r);return JSON.parse(n)}catch{throw D(FA)}}function dj(t){if(!t)throw D(cc);let r=/^([^\.\s]*)\.([^\.\s]+)\.([^\.\s]*)$/.exec(t);if(!r||r.length<4)throw D(FA);return r[2]}function i1(t,e){if(e===0||Date.now()-3e5>t+e)throw D(fc)}var vt={};Ur(vt,{delay:()=>j8e,isTokenExpired:()=>Ou,nowSeconds:()=>Ti,toDateFromSeconds:()=>s1,toSecondsFromDate:()=>J8e,wasClockTurnedBack:()=>Wb});function Ti(){return Math.round(new Date().getTime()/1e3)}function J8e(t){return t.getTime()/1e3}function s1(t){return t?new Date(Number(t)*1e3):new Date}function Ou(t,e){let r=Number(t)||0;return Ti()+e>r}function Wb(t){return Number(t)>Ti()}function j8e(t,e){return new Promise(r=>setTimeout(()=>r(e),t))}function a1(t){return[K8e(t),X8e(t),Z8e(t),e5e(t),t5e(t)].join(Xt.CACHE_KEY_SEPARATOR).toLowerCase()}function $b(t,e,r,n,i){return{credentialType:Ve.ID_TOKEN,homeAccountId:t,environment:e,clientId:n,secret:r,realm:i}}function Kb(t,e,r,n,i,s,a,o,A,l,c,d,p,u,m){let h={homeAccountId:t,credentialType:Ve.ACCESS_TOKEN,secret:r,cachedAt:Ti().toString(),expiresOn:a.toString(),extendedExpiresOn:o.toString(),environment:e,clientId:n,realm:i,target:s,tokenType:c||Me.BEARER};if(d&&(h.userAssertionHash=d),l&&(h.refreshOn=l.toString()),u&&(h.requestedClaims=u,h.requestedClaimsHash=m),h.tokenType?.toLowerCase()!==Me.BEARER.toLowerCase())switch(h.credentialType=Ve.ACCESS_TOKEN_WITH_AUTH_SCHEME,h.tokenType){case Me.POP:let f=Qo(r,A);if(!f?.cnf?.kid)throw D(Bc);h.keyId=f.cnf.kid;break;case Me.SSH:h.keyId=p}return h}function Xb(t,e,r,n,i,s,a){let o={credentialType:Ve.REFRESH_TOKEN,homeAccountId:t,environment:e,clientId:n,secret:r};return s&&(o.userAssertionHash=s),i&&(o.familyId=i),a&&(o.expiresOn=a.toString()),o}function ZC(t){return t.hasOwnProperty("homeAccountId")&&t.hasOwnProperty("environment")&&t.hasOwnProperty("credentialType")&&t.hasOwnProperty("clientId")&&t.hasOwnProperty("secret")}function z8e(t){return t?ZC(t)&&t.hasOwnProperty("realm")&&t.hasOwnProperty("target")&&(t.credentialType===Ve.ACCESS_TOKEN||t.credentialType===Ve.ACCESS_TOKEN_WITH_AUTH_SCHEME):!1}function W8e(t){return t?ZC(t)&&t.hasOwnProperty("realm")&&t.credentialType===Ve.ID_TOKEN:!1}function $8e(t){return t?ZC(t)&&t.credentialType===Ve.REFRESH_TOKEN:!1}function K8e(t){return[t.homeAccountId,t.environment].join(Xt.CACHE_KEY_SEPARATOR).toLowerCase()}function X8e(t){let e=t.credentialType===Ve.REFRESH_TOKEN&&t.familyId||t.clientId;return[t.credentialType,e,t.realm||""].join(Xt.CACHE_KEY_SEPARATOR).toLowerCase()}function Z8e(t){return(t.target||"").toLowerCase()}function e5e(t){return(t.requestedClaimsHash||"").toLowerCase()}function t5e(t){return t.tokenType&&t.tokenType.toLowerCase()!==Me.BEARER.toLowerCase()?t.tokenType.toLowerCase():""}function r5e(t,e){let r=t.indexOf(Sr.CACHE_KEY)===0,n=!0;return e&&(n=e.hasOwnProperty("failedRequests")&&e.hasOwnProperty("errors")&&e.hasOwnProperty("cacheHits")),r&&n}function n5e(t,e){let r=!1;t&&(r=t.indexOf(ba.THROTTLING_PREFIX)===0);let n=!0;return e&&(n=e.hasOwnProperty("throttleTime")),r&&n}function i5e({environment:t,clientId:e}){return[Lf,t,e].join(Xt.CACHE_KEY_SEPARATOR).toLowerCase()}function s5e(t,e){return e?t.indexOf(Lf)===0&&e.hasOwnProperty("clientId")&&e.hasOwnProperty("environment"):!1}function a5e(t,e){return e?t.indexOf(Du.CACHE_KEY)===0&&e.hasOwnProperty("aliases")&&e.hasOwnProperty("preferred_cache")&&e.hasOwnProperty("preferred_network")&&e.hasOwnProperty("canonical_authority")&&e.hasOwnProperty("authorization_endpoint")&&e.hasOwnProperty("token_endpoint")&&e.hasOwnProperty("issuer")&&e.hasOwnProperty("aliasesFromNetwork")&&e.hasOwnProperty("endpointsFromNetwork")&&e.hasOwnProperty("expiresAt")&&e.hasOwnProperty("jwks_uri"):!1}function eI(){return Ti()+Du.REFRESH_TIME_SECONDS}function xu(t,e,r){t.authorization_endpoint=e.authorization_endpoint,t.token_endpoint=e.token_endpoint,t.end_session_endpoint=e.end_session_endpoint,t.issuer=e.issuer,t.endpointsFromNetwork=r,t.jwks_uri=e.jwks_uri}function o1(t,e,r){t.aliases=e.aliases,t.preferred_cache=e.preferred_cache,t.preferred_network=e.preferred_network,t.aliasesFromNetwork=r}function tI(t){return t.expiresAt<=Ti()}var Lu={};Ur(Lu,{authorityMismatch:()=>m1,authorityUriInsecure:()=>vc,cannotAllowPlatformBroker:()=>u1,cannotSetOIDCOptions:()=>p1,claimsRequestParsingError:()=>A1,emptyInputScopesError:()=>Nc,invalidAuthenticationHeader:()=>d1,invalidAuthorityMetadata:()=>_c,invalidClaims:()=>Ra,invalidCloudDiscoveryMetadata:()=>HA,invalidCodeChallengeMethod:()=>Pc,invalidPromptValue:()=>Tc,logoutRequestEmpty:()=>kc,missingNonceAuthenticationHeader:()=>c1,missingSshJwk:()=>So,missingSshKid:()=>l1,pkceParamsMissing:()=>wo,redirectUriEmpty:()=>bc,tokenRequestEmpty:()=>Dc,untrustedAuthority:()=>Mc,urlEmptyError:()=>Rc,urlParseError:()=>va});var bc="redirect_uri_empty",A1="claims_request_parsing_error",vc="authority_uri_insecure",va="url_parse_error",Rc="empty_url_error",Nc="empty_input_scopes_error",Tc="invalid_prompt_value",Ra="invalid_claims",Dc="token_request_empty",kc="logout_request_empty",Pc="invalid_code_challenge_method",wo="pkce_params_missing",HA="invalid_cloud_discovery_metadata",_c="invalid_authority_metadata",Mc="untrusted_authority",So="missing_ssh_jwk",l1="missing_ssh_kid",c1="missing_nonce_authentication_header",d1="invalid_authentication_header",p1="cannot_set_OIDCOptions",u1="cannot_allow_platform_broker",m1="authority_mismatch";var Ut={[bc]:"A redirect URI is required for all calls, and none has been set.",[A1]:"Could not parse the given claims request object.",[vc]:"Authority URIs must use https. Please see here for valid authority configuration options: https://docs.microsoft.com/en-us/azure/active-directory/develop/msal-js-initializing-client-applications#configuration-options",[va]:"URL could not be parsed into appropriate segments.",[Rc]:"URL was empty or null.",[Nc]:"Scopes cannot be passed as null, undefined or empty array because they are required to obtain an access token.",[Tc]:"Please see here for valid configuration options: https://azuread.github.io/microsoft-authentication-library-for-js/ref/modules/_azure_msal_common.html#commonauthorizationurlrequest",[Ra]:"Given claims parameter must be a stringified JSON object.",[Dc]:"Token request was empty and not found in cache.",[kc]:"The logout request was null or undefined.",[Pc]:'code_challenge_method passed is invalid. Valid values are "plain" and "S256".',[wo]:"Both params: code_challenge and code_challenge_method are to be passed if to be sent in the request",[HA]:"Invalid cloudDiscoveryMetadata provided. Must be a stringified JSON object containing tenant_discovery_endpoint and metadata fields",[_c]:"Invalid authorityMetadata provided. Must by a stringified JSON object containing authorization_endpoint, token_endpoint, issuer fields.",[Mc]:"The provided authority is not a trusted authority. Please include this authority in the knownAuthorities config parameter.",[So]:"Missing sshJwk in SSH certificate request. A stringified JSON Web Key is required when using the SSH authentication scheme.",[l1]:"Missing sshKid in SSH certificate request. A string that uniquely identifies the public SSH key is required when using the SSH authentication scheme.",[c1]:"Unable to find an authentication header containing server nonce. Either the Authentication-Info or WWW-Authenticate headers must be present in order to obtain a server nonce.",[d1]:"Invalid authentication header provided",[p1]:"Cannot set OIDCOptions parameter. Please change the protocol mode to OIDC or use a non-Microsoft authority.",[u1]:"Cannot set allowPlatformBroker parameter to true when not in AAD protocol mode.",[m1]:"Authority mismatch error. Authority provided in login request or PublicClientApplication config does not match the environment of the provided account. Please use a matching account or make an interactive request to login to this authority."},Zb={redirectUriNotSet:{code:bc,desc:Ut[bc]},claimsRequestParsingError:{code:A1,desc:Ut[A1]},authorityUriInsecure:{code:vc,desc:Ut[vc]},urlParseError:{code:va,desc:Ut[va]},urlEmptyError:{code:Rc,desc:Ut[Rc]},emptyScopesError:{code:Nc,desc:Ut[Nc]},invalidPrompt:{code:Tc,desc:Ut[Tc]},invalidClaimsRequest:{code:Ra,desc:Ut[Ra]},tokenRequestEmptyError:{code:Dc,desc:Ut[Dc]},logoutRequestEmptyError:{code:kc,desc:Ut[kc]},invalidCodeChallengeMethod:{code:Pc,desc:Ut[Pc]},invalidCodeChallengeParams:{code:wo,desc:Ut[wo]},invalidCloudDiscoveryMetadata:{code:HA,desc:Ut[HA]},invalidAuthorityMetadata:{code:_c,desc:Ut[_c]},untrustedAuthority:{code:Mc,desc:Ut[Mc]},missingSshJwk:{code:So,desc:Ut[So]},missingSshKid:{code:l1,desc:Ut[l1]},missingNonceAuthenticationHeader:{code:c1,desc:Ut[c1]},invalidAuthenticationHeader:{code:d1,desc:Ut[d1]},cannotSetOIDCOptions:{code:p1,desc:Ut[p1]},cannotAllowPlatformBroker:{code:u1,desc:Ut[u1]},authorityMismatch:{code:m1,desc:Ut[m1]}},Fu=class t extends ge{constructor(e){super(e,Ut[e]),this.name="ClientConfigurationError",Object.setPrototypeOf(this,t.prototype)}};function He(t){return new Fu(t)}var Pt=class{static isEmptyObj(e){if(e)try{let r=JSON.parse(e);return Object.keys(r).length===0}catch{}return!0}static startsWith(e,r){return e.indexOf(r)===0}static endsWith(e,r){return e.length>=r.length&&e.lastIndexOf(r)===e.length-r.length}static queryStringToObject(e){let r={},n=e.split("&"),i=s=>decodeURIComponent(s.replace(/\+/g," "));return n.forEach(s=>{if(s.trim()){let[a,o]=s.split(/=(.+)/g,2);a&&o&&(r[i(a)]=i(o))}}),r}static trimArrayEntries(e){return e.map(r=>r.trim())}static removeEmptyStringsFromArray(e){return e.filter(r=>!!r)}static jsonParseHelper(e){try{return JSON.parse(e)}catch{return null}}static matchPattern(e,r){return new RegExp(e.replace(/\\/g,"\\\\").replace(/\*/g,"[^ ]*").replace(/\?/g,"\\?")).test(r)}};var fr=class t{constructor(e){let r=e?Pt.trimArrayEntries([...e]):[],n=r?Pt.removeEmptyStringsFromArray(r):[];if(!n||!n.length)throw He(Nc);this.scopes=new Set,n.forEach(i=>this.scopes.add(i))}static fromString(e){let n=(e||R.EMPTY_STRING).split(" ");return new t(n)}static createSearchScopes(e){let r=new t(e);return r.containsOnlyOIDCScopes()?r.removeScope(R.OFFLINE_ACCESS_SCOPE):r.removeOIDCScopes(),r}containsScope(e){let r=this.printScopesLowerCase().split(" "),n=new t(r);return e?n.scopes.has(e.toLowerCase()):!1}containsScopeSet(e){return!e||e.scopes.size<=0?!1:this.scopes.size>=e.scopes.size&&e.asArray().every(r=>this.containsScope(r))}containsOnlyOIDCScopes(){let e=0;return Yb.forEach(r=>{this.containsScope(r)&&(e+=1)}),this.scopes.size===e}appendScope(e){e&&this.scopes.add(e.trim())}appendScopes(e){try{e.forEach(r=>this.appendScope(r))}catch{throw D(Cc)}}removeScope(e){if(!e)throw D(yc);this.scopes.delete(e.trim())}removeOIDCScopes(){Yb.forEach(e=>{this.scopes.delete(e)})}unionScopeSets(e){if(!e)throw D(qA);let r=new Set;return e.scopes.forEach(n=>r.add(n.toLowerCase())),this.scopes.forEach(n=>r.add(n.toLowerCase())),r}intersectingScopeSets(e){if(!e)throw D(qA);e.containsOnlyOIDCScopes()||e.removeOIDCScopes();let r=this.unionScopeSets(e),n=e.getScopeCount(),i=this.getScopeCount();return r.sizee.push(r)),e}printScopes(){return this.scopes?this.asArray().join(" "):R.EMPTY_STRING}printScopesLowerCase(){return this.printScopes().toLowerCase()}};function Uu(t,e){if(!t)throw D(lc);try{let r=e(t);return JSON.parse(r)}catch{throw D(LA)}}function Na(t){if(!t)throw D(LA);let e=t.split(Xt.CLIENT_INFO_SEPARATOR,2);return{uid:e[0],utid:e.length<2?R.EMPTY_STRING:e[1]}}function pj(t,e){return!!t&&!!e&&t===e.split(".")[1]}function h1(t,e,r,n){if(n){let{oid:i,sub:s,tid:a,name:o,tfp:A,acr:l}=n,c=a||A||l||"";return{tenantId:c,localAccountId:i||s||"",name:o,isHomeTenant:pj(c,t)}}else return{tenantId:r,localAccountId:e,isHomeTenant:pj(r,t)}}function rI(t,e,r,n){let i=t;if(e){let{isHomeTenant:s,...a}=e;i={...t,...a}}if(r){let{isHomeTenant:s,...a}=h1(t.homeAccountId,t.localAccountId,t.tenantId,r);return i={...i,...a,idTokenClaims:r,idToken:n},i}return i}var ls={Default:0,Adfs:1,Dsts:2,Ciam:3};function nI(t){return t&&(t.tid||t.tfp||t.acr)||null}var mn={AAD:"AAD",OIDC:"OIDC",EAR:"EAR"};var rn=class t{generateAccountId(){return[this.homeAccountId,this.environment].join(Xt.CACHE_KEY_SEPARATOR).toLowerCase()}generateAccountKey(){return t.generateAccountCacheKey({homeAccountId:this.homeAccountId,environment:this.environment,tenantId:this.realm,username:this.username,localAccountId:this.localAccountId})}getAccountInfo(){return{homeAccountId:this.homeAccountId,environment:this.environment,tenantId:this.realm,username:this.username,localAccountId:this.localAccountId,name:this.name,nativeAccountId:this.nativeAccountId,authorityType:this.authorityType,tenantProfiles:new Map((this.tenantProfiles||[]).map(e=>[e.tenantId,e]))}}isSingleTenant(){return!this.tenantProfiles}static generateAccountCacheKey(e){let r=e.homeAccountId.split(".")[1];return[e.homeAccountId,e.environment||"",r||e.tenantId||""].join(Xt.CACHE_KEY_SEPARATOR).toLowerCase()}static createAccount(e,r,n){let i=new t;r.authorityType===ls.Adfs?i.authorityType=oc.ADFS_ACCOUNT_TYPE:r.protocolMode===mn.OIDC?i.authorityType=oc.GENERIC_ACCOUNT_TYPE:i.authorityType=oc.MSSTS_ACCOUNT_TYPE;let s;e.clientInfo&&n&&(s=Uu(e.clientInfo,n)),i.clientInfo=e.clientInfo,i.homeAccountId=e.homeAccountId,i.nativeAccountId=e.nativeAccountId;let a=e.environment||r&&r.getPreferredCache();if(!a)throw D(Co);i.environment=a,i.realm=s?.utid||nI(e.idTokenClaims)||"",i.localAccountId=s?.uid||e.idTokenClaims?.oid||e.idTokenClaims?.sub||"";let o=e.idTokenClaims?.preferred_username||e.idTokenClaims?.upn,A=e.idTokenClaims?.emails?e.idTokenClaims.emails[0]:null;if(i.username=o||A||"",i.name=e.idTokenClaims?.name||"",i.cloudGraphHostName=e.cloudGraphHostName,i.msGraphHost=e.msGraphHost,e.tenantProfiles)i.tenantProfiles=e.tenantProfiles;else{let l=h1(e.homeAccountId,i.localAccountId,i.realm,e.idTokenClaims);i.tenantProfiles=[l]}return i}static createFromAccountInfo(e,r,n){let i=new t;return i.authorityType=e.authorityType||oc.GENERIC_ACCOUNT_TYPE,i.homeAccountId=e.homeAccountId,i.localAccountId=e.localAccountId,i.nativeAccountId=e.nativeAccountId,i.realm=e.tenantId,i.environment=e.environment,i.username=e.username,i.name=e.name,i.cloudGraphHostName=r,i.msGraphHost=n,i.tenantProfiles=Array.from(e.tenantProfiles?.values()||[]),i}static generateHomeAccountId(e,r,n,i,s){if(!(r===ls.Adfs||r===ls.Dsts)){if(e)try{let a=Uu(e,i.base64Decode);if(a.uid&&a.utid)return`${a.uid}.${a.utid}`}catch{}n.warning("No client info in response")}return s?.sub||""}static isAccountEntity(e){return e?e.hasOwnProperty("homeAccountId")&&e.hasOwnProperty("environment")&&e.hasOwnProperty("realm")&&e.hasOwnProperty("localAccountId")&&e.hasOwnProperty("username")&&e.hasOwnProperty("authorityType"):!1}static accountInfoIsEqual(e,r,n){if(!e||!r)return!1;let i=!0;if(n){let s=e.idTokenClaims||{},a=r.idTokenClaims||{};i=s.iat===a.iat&&s.nonce===a.nonce}return e.homeAccountId===r.homeAccountId&&e.localAccountId===r.localAccountId&&e.username===r.username&&e.tenantId===r.tenantId&&e.environment===r.environment&&e.nativeAccountId===r.nativeAccountId&&i}};var nn={};Ur(nn,{getDeserializedResponse:()=>ev,mapToQueryString:()=>Ta,stripLeadingHashOrQuery:()=>uj});function uj(t){return t.startsWith("#/")?t.substring(2):t.startsWith("#")||t.startsWith("?")?t.substring(1):t}function ev(t){if(!t||t.indexOf("=")<0)return null;try{let e=uj(t),r=Object.fromEntries(new URLSearchParams(e));if(r.code||r.ear_jwe||r.error||r.error_description||r.state)return r}catch{throw D(uc)}return null}function Ta(t,e=!0,r){let n=new Array;return t.forEach((i,s)=>{!e&&r&&s in r?n.push(`${s}=${i}`):n.push(`${s}=${encodeURIComponent(i)}`)}),n.join("&")}var Ne=class t{get urlString(){return this._urlString}constructor(e){if(this._urlString=e,!this._urlString)throw He(Rc);e.includes("#")||(this._urlString=t.canonicalizeUri(e))}static canonicalizeUri(e){if(e){let r=e.toLowerCase();return Pt.endsWith(r,"?")?r=r.slice(0,-1):Pt.endsWith(r,"?/")&&(r=r.slice(0,-2)),Pt.endsWith(r,"/")||(r+="/"),r}return e}validateAsUri(){let e;try{e=this.getUrlComponents()}catch{throw He(va)}if(!e.HostNameAndPort||!e.PathSegments)throw He(va);if(!e.Protocol||e.Protocol.toLowerCase()!=="https:")throw He(vc)}static appendQueryString(e,r){return r?e.indexOf("?")<0?`${e}?${r}`:`${e}&${r}`:e}static removeHashFromUrl(e){return t.canonicalizeUri(e.split("#")[0])}replaceTenantPath(e){let r=this.getUrlComponents(),n=r.PathSegments;return e&&n.length!==0&&(n[0]===ii.COMMON||n[0]===ii.ORGANIZATIONS)&&(n[0]=e),t.constructAuthorityUriFromObject(r)}getUrlComponents(){let e=RegExp("^(([^:/?#]+):)?(//([^/?#]*))?([^?#]*)(\\?([^#]*))?(#(.*))?"),r=this.urlString.match(e);if(!r)throw He(va);let n={Protocol:r[1],HostNameAndPort:r[4],AbsolutePath:r[5],QueryString:r[7]},i=n.AbsolutePath.split("/");return i=i.filter(s=>s&&s.length>0),n.PathSegments=i,n.QueryString&&n.QueryString.endsWith("/")&&(n.QueryString=n.QueryString.substring(0,n.QueryString.length-1)),n}static getDomainFromUrl(e){let r=RegExp("^([^:/?#]+://)?([^/?#]*)"),n=e.match(r);if(!n)throw He(va);return n[2]}static getAbsoluteUrl(e,r){if(e[0]===R.FORWARD_SLASH){let i=new t(r).getUrlComponents();return i.Protocol+"//"+i.HostNameAndPort+e}return e}static constructAuthorityUriFromObject(e){return new t(e.Protocol+"//"+e.HostNameAndPort+"/"+e.PathSegments.join("/"))}static hashContainsKnownProperties(e){return!!ev(e)}};var hj={endpointMetadata:{"login.microsoftonline.com":{token_endpoint:"https://login.microsoftonline.com/{tenantid}/oauth2/v2.0/token",jwks_uri:"https://login.microsoftonline.com/{tenantid}/discovery/v2.0/keys",issuer:"https://login.microsoftonline.com/{tenantid}/v2.0",authorization_endpoint:"https://login.microsoftonline.com/{tenantid}/oauth2/v2.0/authorize",end_session_endpoint:"https://login.microsoftonline.com/{tenantid}/oauth2/v2.0/logout"},"login.chinacloudapi.cn":{token_endpoint:"https://login.chinacloudapi.cn/{tenantid}/oauth2/v2.0/token",jwks_uri:"https://login.chinacloudapi.cn/{tenantid}/discovery/v2.0/keys",issuer:"https://login.partner.microsoftonline.cn/{tenantid}/v2.0",authorization_endpoint:"https://login.chinacloudapi.cn/{tenantid}/oauth2/v2.0/authorize",end_session_endpoint:"https://login.chinacloudapi.cn/{tenantid}/oauth2/v2.0/logout"},"login.microsoftonline.us":{token_endpoint:"https://login.microsoftonline.us/{tenantid}/oauth2/v2.0/token",jwks_uri:"https://login.microsoftonline.us/{tenantid}/discovery/v2.0/keys",issuer:"https://login.microsoftonline.us/{tenantid}/v2.0",authorization_endpoint:"https://login.microsoftonline.us/{tenantid}/oauth2/v2.0/authorize",end_session_endpoint:"https://login.microsoftonline.us/{tenantid}/oauth2/v2.0/logout"}},instanceDiscoveryMetadata:{metadata:[{preferred_network:"login.microsoftonline.com",preferred_cache:"login.windows.net",aliases:["login.microsoftonline.com","login.windows.net","login.microsoft.com","sts.windows.net"]},{preferred_network:"login.partner.microsoftonline.cn",preferred_cache:"login.partner.microsoftonline.cn",aliases:["login.partner.microsoftonline.cn","login.chinacloudapi.cn"]},{preferred_network:"login.microsoftonline.de",preferred_cache:"login.microsoftonline.de",aliases:["login.microsoftonline.de"]},{preferred_network:"login.microsoftonline.us",preferred_cache:"login.microsoftonline.us",aliases:["login.microsoftonline.us","login.usgovcloudapi.net"]},{preferred_network:"login-us.microsoftonline.com",preferred_cache:"login-us.microsoftonline.com",aliases:["login-us.microsoftonline.com"]}]}},tv=hj.endpointMetadata,rv=hj.instanceDiscoveryMetadata,nv=new Set;rv.metadata.forEach(t=>{t.aliases.forEach(e=>{nv.add(e)})});function fj(t,e){let r,n=t.canonicalAuthority;if(n){let i=new Ne(n).getUrlComponents().HostNameAndPort;r=mj(i,t.cloudDiscoveryMetadata?.metadata,Rn.CONFIG,e)||mj(i,rv.metadata,Rn.HARDCODED_VALUES,e)||t.knownAuthorities}return r||[]}function mj(t,e,r,n){if(n?.trace(`getAliasesFromMetadata called with source: ${r}`),t&&e){let i=f1(e,t);if(i)return n?.trace(`getAliasesFromMetadata: found cloud discovery metadata in ${r}, returning aliases`),i.aliases;n?.trace(`getAliasesFromMetadata: did not find cloud discovery metadata in ${r}`)}return null}function gj(t){return f1(rv.metadata,t)}function f1(t,e){for(let r=0;r1?n.sort(s=>s.idTokenClaims?-1:1)[0]:n.length===1?n[0]:null}getBaseAccountInfo(e,r){let n=this.getAccountsFilteredBy(e,r);return n.length>0?n[0].getAccountInfo():null}buildTenantProfiles(e,r,n){return e.flatMap(i=>this.getTenantProfilesFromAccountEntity(i,r,n?.tenantId,n))}getTenantedAccountInfoByFilter(e,r,n,i,s){let a=null,o;if(s&&!this.tenantProfileMatchesFilter(n,s))return null;let A=this.getIdToken(e,i,r,n.tenantId);return A&&(o=Qo(A.secret,this.cryptoImpl.base64Decode),!this.idTokenClaimsMatchTenantProfileFilter(o,s))?null:(a=rI(e,n,o,A?.secret),a)}getTenantProfilesFromAccountEntity(e,r,n,i){let s=e.getAccountInfo(),a=s.tenantProfiles||new Map,o=this.getTokenKeys();if(n){let l=a.get(n);if(l)a=new Map([[n,l]]);else return[]}let A=[];return a.forEach(l=>{let c=this.getTenantedAccountInfoByFilter(s,o,l,r,i);c&&A.push(c)}),A}tenantProfileMatchesFilter(e,r){return!(r.localAccountId&&!this.matchLocalAccountIdFromTenantProfile(e,r.localAccountId)||r.name&&e.name!==r.name||r.isHomeTenant!==void 0&&e.isHomeTenant!==r.isHomeTenant)}idTokenClaimsMatchTenantProfileFilter(e,r){return!(r&&(r.localAccountId&&!this.matchLocalAccountIdFromTokenClaims(e,r.localAccountId)||r.loginHint&&!this.matchLoginHintFromTokenClaims(e,r.loginHint)||r.username&&!this.matchUsername(e.preferred_username,r.username)||r.name&&!this.matchName(e,r.name)||r.sid&&!this.matchSid(e,r.sid)))}async saveCacheRecord(e,r,n){if(!e)throw D(Ic);try{e.account&&await this.setAccount(e.account,r),e.idToken&&n?.idToken!==!1&&await this.setIdTokenCredential(e.idToken,r),e.accessToken&&n?.accessToken!==!1&&await this.saveAccessToken(e.accessToken,r),e.refreshToken&&n?.refreshToken!==!1&&await this.setRefreshTokenCredential(e.refreshToken,r),e.appMetadata&&this.setAppMetadata(e.appMetadata,r)}catch(i){throw this.commonLogger?.error("CacheManager.saveCacheRecord: failed"),i instanceof ge?i:Ej(i)}}async saveAccessToken(e,r){let n={clientId:e.clientId,credentialType:e.credentialType,environment:e.environment,homeAccountId:e.homeAccountId,realm:e.realm,tokenType:e.tokenType,requestedClaimsHash:e.requestedClaimsHash},i=this.getTokenKeys(),s=fr.fromString(e.target);i.accessToken.forEach(a=>{if(!this.accessTokenKeyMatchesFilter(a,n,!1))return;let o=this.getAccessTokenCredential(a,r);o&&this.credentialMatchesFilter(o,n)&&fr.fromString(o.target).intersectingScopeSets(s)&&this.removeAccessToken(a,r)}),await this.setAccessTokenCredential(e,r)}getAccountsFilteredBy(e,r){let n=this.getAccountKeys(),i=[];return n.forEach(s=>{if(!this.isAccountKey(s,e.homeAccountId))return;let a=this.getAccount(s,r);if(!a||e.homeAccountId&&!this.matchHomeAccountId(a,e.homeAccountId)||e.username&&!this.matchUsername(a.username,e.username)||e.environment&&!this.matchEnvironment(a,e.environment)||e.realm&&!this.matchRealm(a,e.realm)||e.nativeAccountId&&!this.matchNativeAccountId(a,e.nativeAccountId)||e.authorityType&&!this.matchAuthorityType(a,e.authorityType))return;let o={localAccountId:e?.localAccountId,name:e?.name},A=a.tenantProfiles?.filter(l=>this.tenantProfileMatchesFilter(l,o));A&&A.length===0||i.push(a)}),i}isAccountKey(e,r,n){return!(e.split(Xt.CACHE_KEY_SEPARATOR).length<3||r&&!e.toLowerCase().includes(r.toLowerCase())||n&&!e.toLowerCase().includes(n.toLowerCase()))}isCredentialKey(e){if(e.split(Xt.CACHE_KEY_SEPARATOR).length<6)return!1;let r=e.toLowerCase();if(r.indexOf(Ve.ID_TOKEN.toLowerCase())===-1&&r.indexOf(Ve.ACCESS_TOKEN.toLowerCase())===-1&&r.indexOf(Ve.ACCESS_TOKEN_WITH_AUTH_SCHEME.toLowerCase())===-1&&r.indexOf(Ve.REFRESH_TOKEN.toLowerCase())===-1)return!1;if(r.indexOf(Ve.REFRESH_TOKEN.toLowerCase())>-1){let n=`${Ve.REFRESH_TOKEN}${Xt.CACHE_KEY_SEPARATOR}${this.clientId}${Xt.CACHE_KEY_SEPARATOR}`,i=`${Ve.REFRESH_TOKEN}${Xt.CACHE_KEY_SEPARATOR}${go}${Xt.CACHE_KEY_SEPARATOR}`;if(r.indexOf(n.toLowerCase())===-1&&r.indexOf(i.toLowerCase())===-1)return!1}else if(r.indexOf(this.clientId.toLowerCase())===-1)return!1;return!0}credentialMatchesFilter(e,r){return!(r.clientId&&!this.matchClientId(e,r.clientId)||r.userAssertionHash&&!this.matchUserAssertionHash(e,r.userAssertionHash)||typeof r.homeAccountId=="string"&&!this.matchHomeAccountId(e,r.homeAccountId)||r.environment&&!this.matchEnvironment(e,r.environment)||r.realm&&!this.matchRealm(e,r.realm)||r.credentialType&&!this.matchCredentialType(e,r.credentialType)||r.familyId&&!this.matchFamilyId(e,r.familyId)||r.target&&!this.matchTarget(e,r.target)||(r.requestedClaimsHash||e.requestedClaimsHash)&&e.requestedClaimsHash!==r.requestedClaimsHash||e.credentialType===Ve.ACCESS_TOKEN_WITH_AUTH_SCHEME&&(r.tokenType&&!this.matchTokenType(e,r.tokenType)||r.tokenType===Me.SSH&&r.keyId&&!this.matchKeyId(e,r.keyId)))}getAppMetadataFilteredBy(e){let r=this.getKeys(),n={};return r.forEach(i=>{if(!this.isAppMetadata(i))return;let s=this.getAppMetadata(i);s&&(e.environment&&!this.matchEnvironment(s,e.environment)||e.clientId&&!this.matchClientId(s,e.clientId)||(n[i]=s))}),n}getAuthorityMetadataByAlias(e){let r=this.getAuthorityMetadataKeys(),n=null;return r.forEach(i=>{if(!this.isAuthorityMetadata(i)||i.indexOf(this.clientId)===-1)return;let s=this.getAuthorityMetadata(i);s&&s.aliases.indexOf(e)!==-1&&(n=s)}),n}removeAllAccounts(e){this.getAccountKeys().forEach(n=>{this.removeAccount(n,e)})}removeAccount(e,r){let n=this.getAccount(e,r);n&&(this.removeAccountContext(n,r),this.removeItem(e,r))}removeAccountContext(e,r){let n=this.getTokenKeys(),i=e.generateAccountId();n.idToken.forEach(s=>{s.indexOf(i)===0&&this.removeIdToken(s,r)}),n.accessToken.forEach(s=>{s.indexOf(i)===0&&this.removeAccessToken(s,r)}),n.refreshToken.forEach(s=>{s.indexOf(i)===0&&this.removeRefreshToken(s,r)})}removeAccessToken(e,r){let n=this.getAccessTokenCredential(e,r);if(this.removeItem(e,r),this.performanceClient.incrementFields({accessTokensRemoved:1},r),!n||n.credentialType.toLowerCase()!==Ve.ACCESS_TOKEN_WITH_AUTH_SCHEME.toLowerCase()||n.tokenType!==Me.POP)return;let i=n.keyId;i&&this.cryptoImpl.removeTokenBindingKey(i).catch(()=>{this.commonLogger.error(`Failed to remove token binding key ${i}`,r),this.performanceClient?.incrementFields({removeTokenBindingKeyFailure:1},r)})}removeAppMetadata(e){return this.getKeys().forEach(n=>{this.isAppMetadata(n)&&this.removeItem(n,e)}),!0}readAccountFromCache(e,r){let n=rn.generateAccountCacheKey(e);return this.getAccount(n,r)}getIdToken(e,r,n,i,s){this.commonLogger.trace("CacheManager - getIdToken called");let a={homeAccountId:e.homeAccountId,environment:e.environment,credentialType:Ve.ID_TOKEN,clientId:this.clientId,realm:i},o=this.getIdTokensByFilter(a,r,n),A=o.size;if(A<1)return this.commonLogger.info("CacheManager:getIdToken - No token found"),null;if(A>1){let l=o;if(!i){let c=new Map;o.forEach((p,u)=>{p.realm===e.tenantId&&c.set(u,p)});let d=c.size;if(d<1)return this.commonLogger.info("CacheManager:getIdToken - Multiple ID tokens found for account but none match account entity tenant id, returning first result"),o.values().next().value;if(d===1)return this.commonLogger.info("CacheManager:getIdToken - Multiple ID tokens found for account, defaulting to home tenant profile"),c.values().next().value;l=c}return this.commonLogger.info("CacheManager:getIdToken - Multiple matching ID tokens found, clearing them"),l.forEach((c,d)=>{this.removeIdToken(d,r)}),s&&r&&s.addFields({multiMatchedID:o.size},r),null}return this.commonLogger.info("CacheManager:getIdToken - Returning ID token"),o.values().next().value}getIdTokensByFilter(e,r,n){let i=n&&n.idToken||this.getTokenKeys().idToken,s=new Map;return i.forEach(a=>{if(!this.idTokenKeyMatchesFilter(a,{clientId:this.clientId,...e}))return;let o=this.getIdTokenCredential(a,r);o&&this.credentialMatchesFilter(o,e)&&s.set(a,o)}),s}idTokenKeyMatchesFilter(e,r){let n=e.toLowerCase();return!(r.clientId&&n.indexOf(r.clientId.toLowerCase())===-1||r.homeAccountId&&n.indexOf(r.homeAccountId.toLowerCase())===-1)}removeIdToken(e,r){this.removeItem(e,r)}removeRefreshToken(e,r){this.removeItem(e,r)}getAccessToken(e,r,n,i){let s=r.correlationId;this.commonLogger.trace("CacheManager - getAccessToken called",s);let a=fr.createSearchScopes(r.scopes),o=r.authenticationScheme||Me.BEARER,A=o&&o.toLowerCase()!==Me.BEARER.toLowerCase()?Ve.ACCESS_TOKEN_WITH_AUTH_SCHEME:Ve.ACCESS_TOKEN,l={homeAccountId:e.homeAccountId,environment:e.environment,credentialType:A,clientId:this.clientId,realm:i||e.tenantId,target:a,tokenType:o,keyId:r.sshKid,requestedClaimsHash:r.requestedClaimsHash},c=n&&n.accessToken||this.getTokenKeys().accessToken,d=[];c.forEach(u=>{if(this.accessTokenKeyMatchesFilter(u,l,!0)){let m=this.getAccessTokenCredential(u,s);m&&this.credentialMatchesFilter(m,l)&&d.push(m)}});let p=d.length;return p<1?(this.commonLogger.info("CacheManager:getAccessToken - No token found",s),null):p>1?(this.commonLogger.info("CacheManager:getAccessToken - Multiple access tokens found, clearing them",s),d.forEach(u=>{this.removeAccessToken(a1(u),s)}),this.performanceClient.addFields({multiMatchedAT:d.length},s),null):(this.commonLogger.info("CacheManager:getAccessToken - Returning access token",s),d[0])}accessTokenKeyMatchesFilter(e,r,n){let i=e.toLowerCase();if(r.clientId&&i.indexOf(r.clientId.toLowerCase())===-1||r.homeAccountId&&i.indexOf(r.homeAccountId.toLowerCase())===-1||r.realm&&i.indexOf(r.realm.toLowerCase())===-1||r.requestedClaimsHash&&i.indexOf(r.requestedClaimsHash.toLowerCase())===-1)return!1;if(r.target){let s=r.target.asArray();for(let a=0;a{if(!this.accessTokenKeyMatchesFilter(s,e,!0))return;let a=this.getAccessTokenCredential(s,r);a&&this.credentialMatchesFilter(a,e)&&i.push(a)}),i}getRefreshToken(e,r,n,i,s){this.commonLogger.trace("CacheManager - getRefreshToken called");let a=r?go:void 0,o={homeAccountId:e.homeAccountId,environment:e.environment,credentialType:Ve.REFRESH_TOKEN,clientId:this.clientId,familyId:a},A=i&&i.refreshToken||this.getTokenKeys().refreshToken,l=[];A.forEach(d=>{if(this.refreshTokenKeyMatchesFilter(d,o)){let p=this.getRefreshTokenCredential(d,n);p&&this.credentialMatchesFilter(p,o)&&l.push(p)}});let c=l.length;return c<1?(this.commonLogger.info("CacheManager:getRefreshToken - No refresh token found."),null):(c>1&&s&&n&&s.addFields({multiMatchedRT:c},n),this.commonLogger.info("CacheManager:getRefreshToken - returning refresh token"),l[0])}refreshTokenKeyMatchesFilter(e,r){let n=e.toLowerCase();return!(r.familyId&&n.indexOf(r.familyId.toLowerCase())===-1||!r.familyId&&r.clientId&&n.indexOf(r.clientId.toLowerCase())===-1||r.homeAccountId&&n.indexOf(r.homeAccountId.toLowerCase())===-1)}readAppMetadataFromCache(e){let r={environment:e,clientId:this.clientId},n=this.getAppMetadataFilteredBy(r),i=Object.keys(n).map(a=>n[a]),s=i.length;if(s<1)return null;if(s>1)throw D(gc);return i[0]}isAppMetadataFOCI(e){let r=this.readAppMetadataFromCache(e);return!!(r&&r.familyId===go)}matchHomeAccountId(e,r){return typeof e.homeAccountId=="string"&&r===e.homeAccountId}matchLocalAccountIdFromTokenClaims(e,r){let n=e.oid||e.sub;return r===n}matchLocalAccountIdFromTenantProfile(e,r){return e.localAccountId===r}matchName(e,r){return r.toLowerCase()===e.name?.toLowerCase()}matchUsername(e,r){return!!(e&&typeof e=="string"&&r?.toLowerCase()===e.toLowerCase())}matchUserAssertionHash(e,r){return!!(e.userAssertionHash&&r===e.userAssertionHash)}matchEnvironment(e,r){if(this.staticAuthorityOptions){let i=fj(this.staticAuthorityOptions,this.commonLogger);if(i.includes(r)&&i.includes(e.environment))return!0}let n=this.getAuthorityMetadataByAlias(r);return!!(n&&n.aliases.indexOf(e.environment)>-1)}matchCredentialType(e,r){return e.credentialType&&r.toLowerCase()===e.credentialType.toLowerCase()}matchClientId(e,r){return!!(e.clientId&&r===e.clientId)}matchFamilyId(e,r){return!!(e.familyId&&r===e.familyId)}matchRealm(e,r){return e.realm?.toLowerCase()===r.toLowerCase()}matchNativeAccountId(e,r){return!!(e.nativeAccountId&&r===e.nativeAccountId)}matchLoginHintFromTokenClaims(e,r){return e.login_hint===r||e.preferred_username===r||e.upn===r}matchSid(e,r){return e.sid===r}matchAuthorityType(e,r){return!!(e.authorityType&&r.toLowerCase()===e.authorityType.toLowerCase())}matchTarget(e,r){return e.credentialType!==Ve.ACCESS_TOKEN&&e.credentialType!==Ve.ACCESS_TOKEN_WITH_AUTH_SCHEME||!e.target?!1:fr.fromString(e.target).containsScopeSet(r)}matchTokenType(e,r){return!!(e.tokenType&&e.tokenType===r)}matchKeyId(e,r){return!!(e.keyId&&e.keyId===r)}isAppMetadata(e){return e.indexOf(Lf)!==-1}isAuthorityMetadata(e){return e.indexOf(Du.CACHE_KEY)!==-1}generateAuthorityMetadataCacheKey(e){return`${Du.CACHE_KEY}-${this.clientId}-${e}`}static toObject(e,r){for(let n in r)e[n]=r[n];return e}},E1=class extends YA{async setAccount(){throw D(Re)}getAccount(){throw D(Re)}async setIdTokenCredential(){throw D(Re)}getIdTokenCredential(){throw D(Re)}async setAccessTokenCredential(){throw D(Re)}getAccessTokenCredential(){throw D(Re)}async setRefreshTokenCredential(){throw D(Re)}getRefreshTokenCredential(){throw D(Re)}setAppMetadata(){throw D(Re)}getAppMetadata(){throw D(Re)}setServerTelemetry(){throw D(Re)}getServerTelemetry(){throw D(Re)}setAuthorityMetadata(){throw D(Re)}getAuthorityMetadata(){throw D(Re)}getAuthorityMetadataKeys(){throw D(Re)}setThrottlingCache(){throw D(Re)}getThrottlingCache(){throw D(Re)}removeItem(){throw D(Re)}getKeys(){throw D(Re)}getAccountKeys(){throw D(Re)}getTokenKeys(){throw D(Re)}};var S={AcquireTokenByCode:"acquireTokenByCode",AcquireTokenByRefreshToken:"acquireTokenByRefreshToken",AcquireTokenSilent:"acquireTokenSilent",AcquireTokenSilentAsync:"acquireTokenSilentAsync",AcquireTokenPopup:"acquireTokenPopup",AcquireTokenPreRedirect:"acquireTokenPreRedirect",AcquireTokenRedirect:"acquireTokenRedirect",CryptoOptsGetPublicKeyThumbprint:"cryptoOptsGetPublicKeyThumbprint",CryptoOptsSignJwt:"cryptoOptsSignJwt",SilentCacheClientAcquireToken:"silentCacheClientAcquireToken",SilentIframeClientAcquireToken:"silentIframeClientAcquireToken",AwaitConcurrentIframe:"awaitConcurrentIframe",SilentRefreshClientAcquireToken:"silentRefreshClientAcquireToken",SsoSilent:"ssoSilent",StandardInteractionClientGetDiscoveredAuthority:"standardInteractionClientGetDiscoveredAuthority",FetchAccountIdWithNativeBroker:"fetchAccountIdWithNativeBroker",NativeInteractionClientAcquireToken:"nativeInteractionClientAcquireToken",BaseClientCreateTokenRequestHeaders:"baseClientCreateTokenRequestHeaders",NetworkClientSendPostRequestAsync:"networkClientSendPostRequestAsync",RefreshTokenClientExecutePostToTokenEndpoint:"refreshTokenClientExecutePostToTokenEndpoint",AuthorizationCodeClientExecutePostToTokenEndpoint:"authorizationCodeClientExecutePostToTokenEndpoint",BrokerHandhshake:"brokerHandshake",AcquireTokenByRefreshTokenInBroker:"acquireTokenByRefreshTokenInBroker",AcquireTokenByBroker:"acquireTokenByBroker",RefreshTokenClientExecuteTokenRequest:"refreshTokenClientExecuteTokenRequest",RefreshTokenClientAcquireToken:"refreshTokenClientAcquireToken",RefreshTokenClientAcquireTokenWithCachedRefreshToken:"refreshTokenClientAcquireTokenWithCachedRefreshToken",RefreshTokenClientAcquireTokenByRefreshToken:"refreshTokenClientAcquireTokenByRefreshToken",RefreshTokenClientCreateTokenRequestBody:"refreshTokenClientCreateTokenRequestBody",AcquireTokenFromCache:"acquireTokenFromCache",SilentFlowClientAcquireCachedToken:"silentFlowClientAcquireCachedToken",SilentFlowClientGenerateResultFromCacheRecord:"silentFlowClientGenerateResultFromCacheRecord",AcquireTokenBySilentIframe:"acquireTokenBySilentIframe",InitializeBaseRequest:"initializeBaseRequest",InitializeSilentRequest:"initializeSilentRequest",InitializeClientApplication:"initializeClientApplication",InitializeCache:"initializeCache",SilentIframeClientTokenHelper:"silentIframeClientTokenHelper",SilentHandlerInitiateAuthRequest:"silentHandlerInitiateAuthRequest",SilentHandlerMonitorIframeForHash:"silentHandlerMonitorIframeForHash",SilentHandlerLoadFrame:"silentHandlerLoadFrame",SilentHandlerLoadFrameSync:"silentHandlerLoadFrameSync",StandardInteractionClientCreateAuthCodeClient:"standardInteractionClientCreateAuthCodeClient",StandardInteractionClientGetClientConfiguration:"standardInteractionClientGetClientConfiguration",StandardInteractionClientInitializeAuthorizationRequest:"standardInteractionClientInitializeAuthorizationRequest",GetAuthCodeUrl:"getAuthCodeUrl",GetStandardParams:"getStandardParams",HandleCodeResponseFromServer:"handleCodeResponseFromServer",HandleCodeResponse:"handleCodeResponse",HandleResponseEar:"handleResponseEar",HandleResponsePlatformBroker:"handleResponsePlatformBroker",HandleResponseCode:"handleResponseCode",UpdateTokenEndpointAuthority:"updateTokenEndpointAuthority",AuthClientAcquireToken:"authClientAcquireToken",AuthClientExecuteTokenRequest:"authClientExecuteTokenRequest",AuthClientCreateTokenRequestBody:"authClientCreateTokenRequestBody",PopTokenGenerateCnf:"popTokenGenerateCnf",PopTokenGenerateKid:"popTokenGenerateKid",HandleServerTokenResponse:"handleServerTokenResponse",DeserializeResponse:"deserializeResponse",AuthorityFactoryCreateDiscoveredInstance:"authorityFactoryCreateDiscoveredInstance",AuthorityResolveEndpointsAsync:"authorityResolveEndpointsAsync",AuthorityResolveEndpointsFromLocalSources:"authorityResolveEndpointsFromLocalSources",AuthorityGetCloudDiscoveryMetadataFromNetwork:"authorityGetCloudDiscoveryMetadataFromNetwork",AuthorityUpdateCloudDiscoveryMetadata:"authorityUpdateCloudDiscoveryMetadata",AuthorityGetEndpointMetadataFromNetwork:"authorityGetEndpointMetadataFromNetwork",AuthorityUpdateEndpointMetadata:"authorityUpdateEndpointMetadata",AuthorityUpdateMetadataWithRegionalInformation:"authorityUpdateMetadataWithRegionalInformation",RegionDiscoveryDetectRegion:"regionDiscoveryDetectRegion",RegionDiscoveryGetRegionFromIMDS:"regionDiscoveryGetRegionFromIMDS",RegionDiscoveryGetCurrentVersion:"regionDiscoveryGetCurrentVersion",AcquireTokenByCodeAsync:"acquireTokenByCodeAsync",GetEndpointMetadataFromNetwork:"getEndpointMetadataFromNetwork",GetCloudDiscoveryMetadataFromNetworkMeasurement:"getCloudDiscoveryMetadataFromNetworkMeasurement",HandleRedirectPromiseMeasurement:"handleRedirectPromise",HandleNativeRedirectPromiseMeasurement:"handleNativeRedirectPromise",UpdateCloudDiscoveryMetadataMeasurement:"updateCloudDiscoveryMetadataMeasurement",UsernamePasswordClientAcquireToken:"usernamePasswordClientAcquireToken",NativeMessageHandlerHandshake:"nativeMessageHandlerHandshake",NativeGenerateAuthResult:"nativeGenerateAuthResult",RemoveHiddenIframe:"removeHiddenIframe",ClearTokensAndKeysWithClaims:"clearTokensAndKeysWithClaims",CacheManagerGetRefreshToken:"cacheManagerGetRefreshToken",ImportExistingCache:"importExistingCache",SetUserData:"setUserData",LocalStorageUpdated:"localStorageUpdated",GeneratePkceCodes:"generatePkceCodes",GenerateCodeVerifier:"generateCodeVerifier",GenerateCodeChallengeFromVerifier:"generateCodeChallengeFromVerifier",Sha256Digest:"sha256Digest",GetRandomValues:"getRandomValues",GenerateHKDF:"generateHKDF",GenerateBaseKey:"generateBaseKey",Base64Decode:"base64Decode",UrlEncodeArr:"urlEncodeArr",Encrypt:"encrypt",Decrypt:"decrypt",GenerateEarKey:"generateEarKey",DecryptEarResponse:"decryptEarResponse"},$Ye=new Map([[S.AcquireTokenByCode,"ATByCode"],[S.AcquireTokenByRefreshToken,"ATByRT"],[S.AcquireTokenSilent,"ATS"],[S.AcquireTokenSilentAsync,"ATSAsync"],[S.AcquireTokenPopup,"ATPopup"],[S.AcquireTokenRedirect,"ATRedirect"],[S.CryptoOptsGetPublicKeyThumbprint,"CryptoGetPKThumb"],[S.CryptoOptsSignJwt,"CryptoSignJwt"],[S.SilentCacheClientAcquireToken,"SltCacheClientAT"],[S.SilentIframeClientAcquireToken,"SltIframeClientAT"],[S.SilentRefreshClientAcquireToken,"SltRClientAT"],[S.SsoSilent,"SsoSlt"],[S.StandardInteractionClientGetDiscoveredAuthority,"StdIntClientGetDiscAuth"],[S.FetchAccountIdWithNativeBroker,"FetchAccIdWithNtvBroker"],[S.NativeInteractionClientAcquireToken,"NtvIntClientAT"],[S.BaseClientCreateTokenRequestHeaders,"BaseClientCreateTReqHead"],[S.NetworkClientSendPostRequestAsync,"NetClientSendPost"],[S.RefreshTokenClientExecutePostToTokenEndpoint,"RTClientExecPost"],[S.AuthorizationCodeClientExecutePostToTokenEndpoint,"AuthCodeClientExecPost"],[S.BrokerHandhshake,"BrokerHandshake"],[S.AcquireTokenByRefreshTokenInBroker,"ATByRTInBroker"],[S.AcquireTokenByBroker,"ATByBroker"],[S.RefreshTokenClientExecuteTokenRequest,"RTClientExecTReq"],[S.RefreshTokenClientAcquireToken,"RTClientAT"],[S.RefreshTokenClientAcquireTokenWithCachedRefreshToken,"RTClientATWithCachedRT"],[S.RefreshTokenClientAcquireTokenByRefreshToken,"RTClientATByRT"],[S.RefreshTokenClientCreateTokenRequestBody,"RTClientCreateTReqBody"],[S.AcquireTokenFromCache,"ATFromCache"],[S.SilentFlowClientAcquireCachedToken,"SltFlowClientATCached"],[S.SilentFlowClientGenerateResultFromCacheRecord,"SltFlowClientGenResFromCache"],[S.AcquireTokenBySilentIframe,"ATBySltIframe"],[S.InitializeBaseRequest,"InitBaseReq"],[S.InitializeSilentRequest,"InitSltReq"],[S.InitializeClientApplication,"InitClientApplication"],[S.InitializeCache,"InitCache"],[S.ImportExistingCache,"importCache"],[S.SetUserData,"setUserData"],[S.LocalStorageUpdated,"localStorageUpdated"],[S.SilentIframeClientTokenHelper,"SIClientTHelper"],[S.SilentHandlerInitiateAuthRequest,"SHandlerInitAuthReq"],[S.SilentHandlerMonitorIframeForHash,"SltHandlerMonitorIframeForHash"],[S.SilentHandlerLoadFrame,"SHandlerLoadFrame"],[S.SilentHandlerLoadFrameSync,"SHandlerLoadFrameSync"],[S.StandardInteractionClientCreateAuthCodeClient,"StdIntClientCreateAuthCodeClient"],[S.StandardInteractionClientGetClientConfiguration,"StdIntClientGetClientConf"],[S.StandardInteractionClientInitializeAuthorizationRequest,"StdIntClientInitAuthReq"],[S.GetAuthCodeUrl,"GetAuthCodeUrl"],[S.HandleCodeResponseFromServer,"HandleCodeResFromServer"],[S.HandleCodeResponse,"HandleCodeResp"],[S.HandleResponseEar,"HandleRespEar"],[S.HandleResponseCode,"HandleRespCode"],[S.HandleResponsePlatformBroker,"HandleRespPlatBroker"],[S.UpdateTokenEndpointAuthority,"UpdTEndpointAuth"],[S.AuthClientAcquireToken,"AuthClientAT"],[S.AuthClientExecuteTokenRequest,"AuthClientExecTReq"],[S.AuthClientCreateTokenRequestBody,"AuthClientCreateTReqBody"],[S.PopTokenGenerateCnf,"PopTGenCnf"],[S.PopTokenGenerateKid,"PopTGenKid"],[S.HandleServerTokenResponse,"HandleServerTRes"],[S.DeserializeResponse,"DeserializeRes"],[S.AuthorityFactoryCreateDiscoveredInstance,"AuthFactCreateDiscInst"],[S.AuthorityResolveEndpointsAsync,"AuthResolveEndpointsAsync"],[S.AuthorityResolveEndpointsFromLocalSources,"AuthResolveEndpointsFromLocal"],[S.AuthorityGetCloudDiscoveryMetadataFromNetwork,"AuthGetCDMetaFromNet"],[S.AuthorityUpdateCloudDiscoveryMetadata,"AuthUpdCDMeta"],[S.AuthorityGetEndpointMetadataFromNetwork,"AuthUpdCDMetaFromNet"],[S.AuthorityUpdateEndpointMetadata,"AuthUpdEndpointMeta"],[S.AuthorityUpdateMetadataWithRegionalInformation,"AuthUpdMetaWithRegInfo"],[S.RegionDiscoveryDetectRegion,"RegDiscDetectReg"],[S.RegionDiscoveryGetRegionFromIMDS,"RegDiscGetRegFromIMDS"],[S.RegionDiscoveryGetCurrentVersion,"RegDiscGetCurrentVer"],[S.AcquireTokenByCodeAsync,"ATByCodeAsync"],[S.GetEndpointMetadataFromNetwork,"GetEndpointMetaFromNet"],[S.GetCloudDiscoveryMetadataFromNetworkMeasurement,"GetCDMetaFromNet"],[S.HandleRedirectPromiseMeasurement,"HandleRedirectPromise"],[S.HandleNativeRedirectPromiseMeasurement,"HandleNtvRedirectPromise"],[S.UpdateCloudDiscoveryMetadataMeasurement,"UpdateCDMeta"],[S.UsernamePasswordClientAcquireToken,"UserPassClientAT"],[S.NativeMessageHandlerHandshake,"NtvMsgHandlerHandshake"],[S.NativeGenerateAuthResult,"NtvGenAuthRes"],[S.RemoveHiddenIframe,"RemoveHiddenIframe"],[S.ClearTokensAndKeysWithClaims,"ClearTAndKeysWithClaims"],[S.CacheManagerGetRefreshToken,"CacheManagerGetRT"],[S.GeneratePkceCodes,"GenPkceCodes"],[S.GenerateCodeVerifier,"GenCodeVerifier"],[S.GenerateCodeChallengeFromVerifier,"GenCodeChallengeFromVerifier"],[S.Sha256Digest,"Sha256Digest"],[S.GetRandomValues,"GetRandomValues"],[S.GenerateHKDF,"genHKDF"],[S.GenerateBaseKey,"genBaseKey"],[S.Base64Decode,"b64Decode"],[S.UrlEncodeArr,"urlEncArr"],[S.Encrypt,"encrypt"],[S.Decrypt,"decrypt"],[S.GenerateEarKey,"genEarKey"],[S.DecryptEarResponse,"decryptEarResp"]]),yj={NotStarted:0,InProgress:1,Completed:2};var sI=class{startMeasurement(){}endMeasurement(){}flushMeasurement(){return null}},Oc=class{generateId(){return"callback-id"}startMeasurement(e,r){return{end:()=>null,discard:()=>{},add:()=>{},increment:()=>{},event:{eventId:this.generateId(),status:yj.InProgress,authority:"",libraryName:"",libraryVersion:"",clientId:"",name:e,startTimeMs:Date.now(),correlationId:r||""},measurement:new sI}}startPerformanceMeasurement(){return new sI}calculateQueuedTime(){return 0}addQueueMeasurement(){}setPreQueueTime(){}endMeasurement(){return null}discardMeasurements(){}removePerformanceCallback(){return!0}addPerformanceCallback(){return""}emitEvents(){}addFields(){}incrementFields(){}cacheEventByCorrelationId(){}};var o5e={tokenRenewalOffsetSeconds:ku,preventCorsPreflight:!1},A5e={loggerCallback:()=>{},piiLoggingEnabled:!1,logLevel:Ft.Info,correlationId:R.EMPTY_STRING},l5e={claimsBasedCachingEnabled:!1},c5e={async sendGetRequestAsync(){throw D(Re)},async sendPostRequestAsync(){throw D(Re)}},d5e={sku:R.SKU,version:Mu,cpu:R.EMPTY_STRING,os:R.EMPTY_STRING},p5e={clientSecret:R.EMPTY_STRING,clientAssertion:void 0},u5e={azureCloudInstance:Bo.None,tenant:`${R.DEFAULT_COMMON_TENANT}`},m5e={application:{appName:"",appVersion:""}};function Cj({authOptions:t,systemOptions:e,loggerOptions:r,cacheOptions:n,storageInterface:i,networkInterface:s,cryptoInterface:a,clientCredentials:o,libraryInfo:A,telemetry:l,serverTelemetryManager:c,persistencePlugin:d,serializableCache:p}){let u={...A5e,...r};return{authOptions:h5e(t),systemOptions:{...o5e,...e},loggerOptions:u,cacheOptions:{...l5e,...n},storageInterface:i||new E1(t.clientId,_u,new Ni(u),new Oc),networkInterface:s||c5e,cryptoInterface:a||_u,clientCredentials:o||p5e,libraryInfo:{...d5e,...A},telemetry:{...m5e,...l},serverTelemetryManager:c||null,persistencePlugin:d||null,serializableCache:p||null}}function h5e(t){return{clientCapabilities:[],azureCloudOptions:u5e,skipAuthorityMetadataCache:!1,instanceAware:!1,encodeExtraQueryParams:!1,...t}}function aI(t){return t.authOptions.authority.options.protocolMode===mn.OIDC}var Tn={HOME_ACCOUNT_ID:"home_account_id",UPN:"UPN"};var J={};Ur(J,{addApplicationTelemetry:()=>I1,addAuthorizationCode:()=>$v,addBrokerParameters:()=>Ro,addCcsOid:()=>bo,addCcsUpn:()=>JA,addClaims:()=>Vc,addClientAssertion:()=>w1,addClientAssertionType:()=>S1,addClientCapabilitiesToClaims:()=>Ij,addClientId:()=>Uc,addClientInfo:()=>Hc,addClientSecret:()=>Q1,addCodeChallengeParams:()=>T5e,addCodeVerifier:()=>Xv,addCorrelationId:()=>Gc,addDeviceCode:()=>D5e,addDomainHint:()=>jv,addEARParameters:()=>O5e,addExtraQueryParameters:()=>vo,addGrantType:()=>b1,addIdTokenHint:()=>Jv,addInstanceAware:()=>v1,addLibraryInfo:()=>C1,addLoginHint:()=>Vu,addLogoutHint:()=>Zv,addNativeBroker:()=>N5e,addNonce:()=>Wv,addOboAssertion:()=>k5e,addPassword:()=>M5e,addPopToken:()=>R1,addPostLogoutRedirectUri:()=>Yv,addPrompt:()=>zv,addRedirectUri:()=>qc,addRefreshToken:()=>Kv,addRequestTokenUse:()=>P5e,addResponseMode:()=>Hv,addResponseType:()=>R5e,addScopes:()=>Fc,addServerTelemetry:()=>T1,addSid:()=>pI,addSshJwk:()=>N1,addState:()=>B1,addThrottling:()=>D1,addUsername:()=>_5e,instrumentBrokerParams:()=>Lc});var xc={};Ur(xc,{ACCESS_TOKEN:()=>E5e,BROKER_CLIENT_ID:()=>y1,BROKER_REDIRECT_URI:()=>dI,CCS_HEADER:()=>b5e,CLAIMS:()=>lv,CLIENT_ASSERTION:()=>Pv,CLIENT_ASSERTION_TYPE:()=>_v,CLIENT_ID:()=>Da,CLIENT_INFO:()=>Q5e,CLIENT_REQUEST_ID:()=>yv,CLIENT_SECRET:()=>kv,CODE:()=>hv,CODE_CHALLENGE:()=>fv,CODE_CHALLENGE_METHOD:()=>gv,CODE_VERIFIER:()=>Ev,DEVICE_CODE:()=>Dv,DOMAIN_HINT:()=>qv,EAR_JWE_CRYPTO:()=>Gv,EAR_JWK:()=>Vv,ERROR:()=>f5e,ERROR_DESCRIPTION:()=>g5e,EXPIRES_IN:()=>C5e,FOCI:()=>S5e,GRANT_TYPE:()=>Av,ID_TOKEN:()=>y5e,ID_TOKEN_HINT:()=>Tv,INSTANCE_AWARE:()=>qu,LOGIN_HINT:()=>Uv,LOGOUT_HINT:()=>Lv,NATIVE_BROKER:()=>xv,NONCE:()=>uv,OBO_ASSERTION:()=>Mv,ON_BEHALF_OF:()=>w5e,POST_LOGOUT_URI:()=>Nv,PROMPT:()=>mv,REDIRECT_URI:()=>oI,REFRESH_TOKEN:()=>dv,REFRESH_TOKEN_EXPIRES_IN:()=>I5e,REQUESTED_TOKEN_USE:()=>Ov,REQ_CNF:()=>lI,RESPONSE_MODE:()=>ov,RESPONSE_TYPE:()=>av,RETURN_SPA_CODE:()=>cI,SCOPE:()=>cv,SESSION_STATE:()=>B5e,SID:()=>Fv,STATE:()=>pv,TOKEN_TYPE:()=>AI,X_APP_NAME:()=>vv,X_APP_VER:()=>Rv,X_CLIENT_CPU:()=>Qv,X_CLIENT_CURR_TELEM:()=>wv,X_CLIENT_EXTRA_SKU:()=>v5e,X_CLIENT_LAST_TELEM:()=>Sv,X_CLIENT_OS:()=>Bv,X_CLIENT_SKU:()=>Cv,X_CLIENT_VER:()=>Iv,X_MS_LIB_CAPABILITY:()=>bv});var Da="client_id",oI="redirect_uri",av="response_type",ov="response_mode",Av="grant_type",lv="claims",cv="scope",f5e="error",g5e="error_description",E5e="access_token",y5e="id_token",dv="refresh_token",C5e="expires_in",I5e="refresh_token_expires_in",pv="state",uv="nonce",mv="prompt",B5e="session_state",Q5e="client_info",hv="code",fv="code_challenge",gv="code_challenge_method",Ev="code_verifier",yv="client-request-id",Cv="x-client-SKU",Iv="x-client-VER",Bv="x-client-OS",Qv="x-client-CPU",wv="x-client-current-telemetry",Sv="x-client-last-telemetry",bv="x-ms-lib-capability",vv="x-app-name",Rv="x-app-ver",Nv="post_logout_redirect_uri",Tv="id_token_hint",Dv="device_code",kv="client_secret",Pv="client_assertion",_v="client_assertion_type",AI="token_type",lI="req_cnf",Mv="assertion",Ov="requested_token_use",w5e="on_behalf_of",S5e="foci",b5e="X-AnchorMailbox",cI="return_spa_code",xv="nativebroker",Lv="logout_hint",Fv="sid",Uv="login_hint",qv="domain_hint",v5e="x-client-xtra-sku",y1="brk_client_id",dI="brk_redirect_uri",qu="instance_aware",Vv="ear_jwk",Gv="ear_jwe_crypto";function Lc(t,e,r){if(!e)return;let n=t.get(Da);n&&t.has(y1)&&r?.addFields({embeddedClientId:n,embeddedRedirectUri:t.get(oI)},e)}function R5e(t,e){t.set(av,e)}function Hv(t,e){t.set(ov,e||Sa.QUERY)}function N5e(t){t.set(xv,"1")}function Fc(t,e,r=!0,n=ni){r&&!n.includes("openid")&&!e.includes("openid")&&n.push("openid");let i=r?[...e||[],...n]:e||[],s=new fr(i);t.set(cv,s.printScopes())}function Uc(t,e){t.set(Da,e)}function qc(t,e){t.set(oI,e)}function Yv(t,e){t.set(Nv,e)}function Jv(t,e){t.set(Tv,e)}function jv(t,e){t.set(qv,e)}function Vu(t,e){t.set(Uv,e)}function JA(t,e){t.set(Et.CCS_HEADER,`UPN:${e}`)}function bo(t,e){t.set(Et.CCS_HEADER,`Oid:${e.uid}@${e.utid}`)}function pI(t,e){t.set("sid",e)}function Vc(t,e,r){let n=Ij(e,r);try{JSON.parse(n)}catch{throw He(Ra)}t.set(lv,n)}function Gc(t,e){t.set(yv,e)}function C1(t,e){t.set(Cv,e.sku),t.set(Iv,e.version),e.os&&t.set(Bv,e.os),e.cpu&&t.set(Qv,e.cpu)}function I1(t,e){e?.appName&&t.set(vv,e.appName),e?.appVersion&&t.set(Rv,e.appVersion)}function zv(t,e){t.set(mv,e)}function B1(t,e){e&&t.set(pv,e)}function Wv(t,e){t.set(uv,e)}function T5e(t,e,r){if(e&&r)t.set(fv,e),t.set(gv,r);else throw He(wo)}function $v(t,e){t.set(hv,e)}function D5e(t,e){t.set(Dv,e)}function Kv(t,e){t.set(dv,e)}function Xv(t,e){t.set(Ev,e)}function Q1(t,e){t.set(kv,e)}function w1(t,e){e&&t.set(Pv,e)}function S1(t,e){e&&t.set(_v,e)}function k5e(t,e){t.set(Mv,e)}function P5e(t,e){t.set(Ov,e)}function b1(t,e){t.set(Av,e)}function Hc(t){t.set(cj,"1")}function v1(t){t.has(qu)||t.set(qu,"true")}function vo(t,e){Object.entries(e).forEach(([r,n])=>{!t.has(r)&&n&&t.set(r,n)})}function Ij(t,e){let r;if(!t)r={};else try{r=JSON.parse(t)}catch{throw He(Ra)}return e&&e.length>0&&(r.hasOwnProperty(sc.ACCESS_TOKEN)||(r[sc.ACCESS_TOKEN]={}),r[sc.ACCESS_TOKEN][sc.XMS_CC]={values:e}),JSON.stringify(r)}function _5e(t,e){t.set(Uf.username,e)}function M5e(t,e){t.set(Uf.password,e)}function R1(t,e){e&&(t.set(AI,Me.POP),t.set(lI,e))}function N1(t,e){e&&(t.set(AI,Me.SSH),t.set(lI,e))}function T1(t,e){t.set(wv,e.generateCurrentRequestHeaderValue()),t.set(Sv,e.generateLastRequestHeaderValue())}function D1(t){t.set(bv,ba.X_MS_LIB_CAPABILITY_VALUE)}function Zv(t,e){t.set(Lv,e)}function Ro(t,e,r){t.has(y1)||t.set(y1,e),t.has(dI)||t.set(dI,r)}function O5e(t,e){t.set(Vv,encodeURIComponent(e)),t.set(Gv,"eyJhbGciOiJkaXIiLCJlbmMiOiJBMjU2R0NNIn0")}var mI={};Ur(mI,{createDiscoveredInstance:()=>t7});function Bj(t){return t.hasOwnProperty("authorization_endpoint")&&t.hasOwnProperty("token_endpoint")&&t.hasOwnProperty("issuer")&&t.hasOwnProperty("jwks_uri")}function Qj(t){return t.hasOwnProperty("tenant_discovery_endpoint")&&t.hasOwnProperty("metadata")}function wj(t){return t.hasOwnProperty("error")&&t.hasOwnProperty("error_description")}var Sj=(t,e,r,n,i)=>(...s)=>{r.trace(`Executing function ${e}`);let a=n?.startMeasurement(e,i);if(i){let o=e+"CallCount";n?.incrementFields({[o]:1},i)}try{let o=t(...s);return a?.end({success:!0}),r.trace(`Returning result from ${e}`),o}catch(o){r.trace(`Error occurred in ${e}`);try{r.trace(JSON.stringify(o))}catch{r.trace("Unable to print error message.")}throw a?.end({success:!1},o),o}},Oe=(t,e,r,n,i)=>(...s)=>{r.trace(`Executing function ${e}`);let a=n?.startMeasurement(e,i);if(i){let o=e+"CallCount";n?.incrementFields({[o]:1},i)}return n?.setPreQueueTime(e,i),t(...s).then(o=>(r.trace(`Returning result from ${e}`),a?.end({success:!0}),o)).catch(o=>{r.trace(`Error occurred in ${e}`);try{r.trace(JSON.stringify(o))}catch{r.trace("Unable to print error message.")}throw a?.end({success:!1},o),o})};var k1=class t{constructor(e,r,n,i){this.networkInterface=e,this.logger=r,this.performanceClient=n,this.correlationId=i}async detectRegion(e,r){this.performanceClient?.addQueueMeasurement(S.RegionDiscoveryDetectRegion,this.correlationId);let n=e;if(n)r.region_source=Ac.ENVIRONMENT_VARIABLE;else{let i=t.IMDS_OPTIONS;try{let s=await Oe(this.getRegionFromIMDS.bind(this),S.RegionDiscoveryGetRegionFromIMDS,this.logger,this.performanceClient,this.correlationId)(R.IMDS_VERSION,i);if(s.status===fe.SUCCESS&&(n=s.body,r.region_source=Ac.IMDS),s.status===fe.BAD_REQUEST){let a=await Oe(this.getCurrentVersion.bind(this),S.RegionDiscoveryGetCurrentVersion,this.logger,this.performanceClient,this.correlationId)(i);if(!a)return r.region_source=Ac.FAILED_AUTO_DETECTION,null;let o=await Oe(this.getRegionFromIMDS.bind(this),S.RegionDiscoveryGetRegionFromIMDS,this.logger,this.performanceClient,this.correlationId)(a,i);o.status===fe.SUCCESS&&(n=o.body,r.region_source=Ac.IMDS)}}catch{return r.region_source=Ac.FAILED_AUTO_DETECTION,null}}return n||(r.region_source=Ac.FAILED_AUTO_DETECTION),n||null}async getRegionFromIMDS(e,r){return this.performanceClient?.addQueueMeasurement(S.RegionDiscoveryGetRegionFromIMDS,this.correlationId),this.networkInterface.sendGetRequestAsync(`${R.IMDS_ENDPOINT}?api-version=${e}&format=text`,r,R.IMDS_TIMEOUT)}async getCurrentVersion(e){this.performanceClient?.addQueueMeasurement(S.RegionDiscoveryGetCurrentVersion,this.correlationId);try{let r=await this.networkInterface.sendGetRequestAsync(`${R.IMDS_ENDPOINT}?format=json`,e);return r.status===fe.BAD_REQUEST&&r.body&&r.body["newest-versions"]&&r.body["newest-versions"].length>0?r.body["newest-versions"][0]:null}catch{return null}}};k1.IMDS_OPTIONS={headers:{Metadata:"true"}};var Ls=class t{constructor(e,r,n,i,s,a,o,A){this.canonicalAuthority=e,this._canonicalAuthority.validateAsUri(),this.networkInterface=r,this.cacheManager=n,this.authorityOptions=i,this.regionDiscoveryMetadata={region_used:void 0,region_source:void 0,region_outcome:void 0},this.logger=s,this.performanceClient=o,this.correlationId=a,this.managedIdentity=A||!1,this.regionDiscovery=new k1(r,this.logger,this.performanceClient,this.correlationId)}getAuthorityType(e){if(e.HostNameAndPort.endsWith(R.CIAM_AUTH_URL))return ls.Ciam;let r=e.PathSegments;if(r.length)switch(r[0].toLowerCase()){case R.ADFS:return ls.Adfs;case R.DSTS:return ls.Dsts}return ls.Default}get authorityType(){return this.getAuthorityType(this.canonicalAuthorityUrlComponents)}get protocolMode(){return this.authorityOptions.protocolMode}get options(){return this.authorityOptions}get canonicalAuthority(){return this._canonicalAuthority.urlString}set canonicalAuthority(e){this._canonicalAuthority=new Ne(e),this._canonicalAuthority.validateAsUri(),this._canonicalAuthorityUrlComponents=null}get canonicalAuthorityUrlComponents(){return this._canonicalAuthorityUrlComponents||(this._canonicalAuthorityUrlComponents=this._canonicalAuthority.getUrlComponents()),this._canonicalAuthorityUrlComponents}get hostnameAndPort(){return this.canonicalAuthorityUrlComponents.HostNameAndPort.toLowerCase()}get tenant(){return this.canonicalAuthorityUrlComponents.PathSegments[0]}get authorizationEndpoint(){if(this.discoveryComplete())return this.replacePath(this.metadata.authorization_endpoint);throw D(Nn)}get tokenEndpoint(){if(this.discoveryComplete())return this.replacePath(this.metadata.token_endpoint);throw D(Nn)}get deviceCodeEndpoint(){if(this.discoveryComplete())return this.replacePath(this.metadata.token_endpoint.replace("/token","/devicecode"));throw D(Nn)}get endSessionEndpoint(){if(this.discoveryComplete()){if(!this.metadata.end_session_endpoint)throw D(wc);return this.replacePath(this.metadata.end_session_endpoint)}else throw D(Nn)}get selfSignedJwtAudience(){if(this.discoveryComplete())return this.replacePath(this.metadata.issuer);throw D(Nn)}get jwksUri(){if(this.discoveryComplete())return this.replacePath(this.metadata.jwks_uri);throw D(Nn)}canReplaceTenant(e){return e.PathSegments.length===1&&!t.reservedTenantDomains.has(e.PathSegments[0])&&this.getAuthorityType(e)===ls.Default&&this.protocolMode!==mn.OIDC}replaceTenant(e){return e.replace(/{tenant}|{tenantid}/g,this.tenant)}replacePath(e){let r=e,i=new Ne(this.metadata.canonical_authority).getUrlComponents(),s=i.PathSegments;return this.canonicalAuthorityUrlComponents.PathSegments.forEach((o,A)=>{let l=s[A];if(A===0&&this.canReplaceTenant(i)){let c=new Ne(this.metadata.authorization_endpoint).getUrlComponents().PathSegments[0];l!==c&&(this.logger.verbose(`Replacing tenant domain name ${l} with id ${c}`),l=c)}o!==l&&(r=r.replace(`/${l}/`,`/${o}/`))}),this.replaceTenant(r)}get defaultOpenIdConfigurationEndpoint(){let e=this.hostnameAndPort;return this.canonicalAuthority.endsWith("v2.0/")||this.authorityType===ls.Adfs||this.protocolMode===mn.OIDC&&!this.isAliasOfKnownMicrosoftAuthority(e)?`${this.canonicalAuthority}.well-known/openid-configuration`:`${this.canonicalAuthority}v2.0/.well-known/openid-configuration`}discoveryComplete(){return!!this.metadata}async resolveEndpointsAsync(){this.performanceClient?.addQueueMeasurement(S.AuthorityResolveEndpointsAsync,this.correlationId);let e=this.getCurrentMetadataEntity(),r=await Oe(this.updateCloudDiscoveryMetadata.bind(this),S.AuthorityUpdateCloudDiscoveryMetadata,this.logger,this.performanceClient,this.correlationId)(e);this.canonicalAuthority=this.canonicalAuthority.replace(this.hostnameAndPort,e.preferred_network);let n=await Oe(this.updateEndpointMetadata.bind(this),S.AuthorityUpdateEndpointMetadata,this.logger,this.performanceClient,this.correlationId)(e);this.updateCachedMetadata(e,r,{source:n}),this.performanceClient?.addFields({cloudDiscoverySource:r,authorityEndpointSource:n},this.correlationId)}getCurrentMetadataEntity(){let e=this.cacheManager.getAuthorityMetadataByAlias(this.hostnameAndPort);return e||(e={aliases:[],preferred_cache:this.hostnameAndPort,preferred_network:this.hostnameAndPort,canonical_authority:this.canonicalAuthority,authorization_endpoint:"",token_endpoint:"",end_session_endpoint:"",issuer:"",aliasesFromNetwork:!1,endpointsFromNetwork:!1,expiresAt:eI(),jwks_uri:""}),e}updateCachedMetadata(e,r,n){r!==Rn.CACHE&&n?.source!==Rn.CACHE&&(e.expiresAt=eI(),e.canonical_authority=this.canonicalAuthority);let i=this.cacheManager.generateAuthorityMetadataCacheKey(e.preferred_cache);this.cacheManager.setAuthorityMetadata(i,e),this.metadata=e}async updateEndpointMetadata(e){this.performanceClient?.addQueueMeasurement(S.AuthorityUpdateEndpointMetadata,this.correlationId);let r=this.updateEndpointMetadataFromLocalSources(e);if(r){if(r.source===Rn.HARDCODED_VALUES&&this.authorityOptions.azureRegionConfiguration?.azureRegion&&r.metadata){let i=await Oe(this.updateMetadataWithRegionalInformation.bind(this),S.AuthorityUpdateMetadataWithRegionalInformation,this.logger,this.performanceClient,this.correlationId)(r.metadata);xu(e,i,!1),e.canonical_authority=this.canonicalAuthority}return r.source}let n=await Oe(this.getEndpointMetadataFromNetwork.bind(this),S.AuthorityGetEndpointMetadataFromNetwork,this.logger,this.performanceClient,this.correlationId)();if(n)return this.authorityOptions.azureRegionConfiguration?.azureRegion&&(n=await Oe(this.updateMetadataWithRegionalInformation.bind(this),S.AuthorityUpdateMetadataWithRegionalInformation,this.logger,this.performanceClient,this.correlationId)(n)),xu(e,n,!0),Rn.NETWORK;throw D(pc,this.defaultOpenIdConfigurationEndpoint)}updateEndpointMetadataFromLocalSources(e){this.logger.verbose("Attempting to get endpoint metadata from authority configuration");let r=this.getEndpointMetadataFromConfig();if(r)return this.logger.verbose("Found endpoint metadata in authority configuration"),xu(e,r,!1),{source:Rn.CONFIG};if(this.logger.verbose("Did not find endpoint metadata in the config... Attempting to get endpoint metadata from the hardcoded values."),this.authorityOptions.skipAuthorityMetadataCache)this.logger.verbose("Skipping hardcoded metadata cache since skipAuthorityMetadataCache is set to true. Attempting to get endpoint metadata from the network metadata cache.");else{let i=this.getEndpointMetadataFromHardcodedValues();if(i)return xu(e,i,!1),{source:Rn.HARDCODED_VALUES,metadata:i};this.logger.verbose("Did not find endpoint metadata in hardcoded values... Attempting to get endpoint metadata from the network metadata cache.")}let n=tI(e);return this.isAuthoritySameType(e)&&e.endpointsFromNetwork&&!n?(this.logger.verbose("Found endpoint metadata in the cache."),{source:Rn.CACHE}):(n&&this.logger.verbose("The metadata entity is expired."),null)}isAuthoritySameType(e){return new Ne(e.canonical_authority).getUrlComponents().PathSegments.length===this.canonicalAuthorityUrlComponents.PathSegments.length}getEndpointMetadataFromConfig(){if(this.authorityOptions.authorityMetadata)try{return JSON.parse(this.authorityOptions.authorityMetadata)}catch{throw He(_c)}return null}async getEndpointMetadataFromNetwork(){this.performanceClient?.addQueueMeasurement(S.AuthorityGetEndpointMetadataFromNetwork,this.correlationId);let e={},r=this.defaultOpenIdConfigurationEndpoint;this.logger.verbose(`Authority.getEndpointMetadataFromNetwork: attempting to retrieve OAuth endpoints from ${r}`);try{let n=await this.networkInterface.sendGetRequestAsync(r,e);return Bj(n.body)?n.body:(this.logger.verbose("Authority.getEndpointMetadataFromNetwork: could not parse response as OpenID configuration"),null)}catch(n){return this.logger.verbose(`Authority.getEndpointMetadataFromNetwork: ${n}`),null}}getEndpointMetadataFromHardcodedValues(){return this.hostnameAndPort in tv?tv[this.hostnameAndPort]:null}async updateMetadataWithRegionalInformation(e){this.performanceClient?.addQueueMeasurement(S.AuthorityUpdateMetadataWithRegionalInformation,this.correlationId);let r=this.authorityOptions.azureRegionConfiguration?.azureRegion;if(r){if(r!==R.AZURE_REGION_AUTO_DISCOVER_FLAG)return this.regionDiscoveryMetadata.region_outcome=WC.CONFIGURED_NO_AUTO_DETECTION,this.regionDiscoveryMetadata.region_used=r,t.replaceWithRegionalInformation(e,r);let n=await Oe(this.regionDiscovery.detectRegion.bind(this.regionDiscovery),S.RegionDiscoveryDetectRegion,this.logger,this.performanceClient,this.correlationId)(this.authorityOptions.azureRegionConfiguration?.environmentRegion,this.regionDiscoveryMetadata);if(n)return this.regionDiscoveryMetadata.region_outcome=WC.AUTO_DETECTION_REQUESTED_SUCCESSFUL,this.regionDiscoveryMetadata.region_used=n,t.replaceWithRegionalInformation(e,n);this.regionDiscoveryMetadata.region_outcome=WC.AUTO_DETECTION_REQUESTED_FAILED}return e}async updateCloudDiscoveryMetadata(e){this.performanceClient?.addQueueMeasurement(S.AuthorityUpdateCloudDiscoveryMetadata,this.correlationId);let r=this.updateCloudDiscoveryMetadataFromLocalSources(e);if(r)return r;let n=await Oe(this.getCloudDiscoveryMetadataFromNetwork.bind(this),S.AuthorityGetCloudDiscoveryMetadataFromNetwork,this.logger,this.performanceClient,this.correlationId)();if(n)return o1(e,n,!0),Rn.NETWORK;throw He(Mc)}updateCloudDiscoveryMetadataFromLocalSources(e){this.logger.verbose("Attempting to get cloud discovery metadata from authority configuration"),this.logger.verbosePii(`Known Authorities: ${this.authorityOptions.knownAuthorities||R.NOT_APPLICABLE}`),this.logger.verbosePii(`Authority Metadata: ${this.authorityOptions.authorityMetadata||R.NOT_APPLICABLE}`),this.logger.verbosePii(`Canonical Authority: ${e.canonical_authority||R.NOT_APPLICABLE}`);let r=this.getCloudDiscoveryMetadataFromConfig();if(r)return this.logger.verbose("Found cloud discovery metadata in authority configuration"),o1(e,r,!1),Rn.CONFIG;if(this.logger.verbose("Did not find cloud discovery metadata in the config... Attempting to get cloud discovery metadata from the hardcoded values."),this.options.skipAuthorityMetadataCache)this.logger.verbose("Skipping hardcoded cloud discovery metadata cache since skipAuthorityMetadataCache is set to true. Attempting to get cloud discovery metadata from the network metadata cache.");else{let i=gj(this.hostnameAndPort);if(i)return this.logger.verbose("Found cloud discovery metadata from hardcoded values."),o1(e,i,!1),Rn.HARDCODED_VALUES;this.logger.verbose("Did not find cloud discovery metadata in hardcoded values... Attempting to get cloud discovery metadata from the network metadata cache.")}let n=tI(e);return this.isAuthoritySameType(e)&&e.aliasesFromNetwork&&!n?(this.logger.verbose("Found cloud discovery metadata in the cache."),Rn.CACHE):(n&&this.logger.verbose("The metadata entity is expired."),null)}getCloudDiscoveryMetadataFromConfig(){if(this.authorityType===ls.Ciam)return this.logger.verbose("CIAM authorities do not support cloud discovery metadata, generate the aliases from authority host."),t.createCloudDiscoveryMetadataFromHost(this.hostnameAndPort);if(this.authorityOptions.cloudDiscoveryMetadata){this.logger.verbose("The cloud discovery metadata has been provided as a network response, in the config.");try{this.logger.verbose("Attempting to parse the cloud discovery metadata.");let e=JSON.parse(this.authorityOptions.cloudDiscoveryMetadata),r=f1(e.metadata,this.hostnameAndPort);if(this.logger.verbose("Parsed the cloud discovery metadata."),r)return this.logger.verbose("There is returnable metadata attached to the parsed cloud discovery metadata."),r;this.logger.verbose("There is no metadata attached to the parsed cloud discovery metadata.")}catch{throw this.logger.verbose("Unable to parse the cloud discovery metadata. Throwing Invalid Cloud Discovery Metadata Error."),He(HA)}}return this.isInKnownAuthorities()?(this.logger.verbose("The host is included in knownAuthorities. Creating new cloud discovery metadata from the host."),t.createCloudDiscoveryMetadataFromHost(this.hostnameAndPort)):null}async getCloudDiscoveryMetadataFromNetwork(){this.performanceClient?.addQueueMeasurement(S.AuthorityGetCloudDiscoveryMetadataFromNetwork,this.correlationId);let e=`${R.AAD_INSTANCE_DISCOVERY_ENDPT}${this.canonicalAuthority}oauth2/v2.0/authorize`,r={},n=null;try{let i=await this.networkInterface.sendGetRequestAsync(e,r),s,a;if(Qj(i.body))s=i.body,a=s.metadata,this.logger.verbosePii(`tenant_discovery_endpoint is: ${s.tenant_discovery_endpoint}`);else if(wj(i.body)){if(this.logger.warning(`A CloudInstanceDiscoveryErrorResponse was returned. The cloud instance discovery network request's status code is: ${i.status}`),s=i.body,s.error===R.INVALID_INSTANCE)return this.logger.error("The CloudInstanceDiscoveryErrorResponse error is invalid_instance."),null;this.logger.warning(`The CloudInstanceDiscoveryErrorResponse error is ${s.error}`),this.logger.warning(`The CloudInstanceDiscoveryErrorResponse error description is ${s.error_description}`),this.logger.warning("Setting the value of the CloudInstanceDiscoveryMetadata (returned from the network) to []"),a=[]}else return this.logger.error("AAD did not return a CloudInstanceDiscoveryResponse or CloudInstanceDiscoveryErrorResponse"),null;this.logger.verbose("Attempting to find a match between the developer's authority and the CloudInstanceDiscoveryMetadata returned from the network request."),n=f1(a,this.hostnameAndPort)}catch(i){if(i instanceof ge)this.logger.error(`There was a network error while attempting to get the cloud discovery instance metadata. -Error: ${i.errorCode} -Error Description: ${i.errorMessage}`);else{let s=i;this.logger.error(`A non-MSALJS error was thrown while attempting to get the cloud instance discovery metadata. -Error: ${s.name} -Error Description: ${s.message}`)}return null}return n||(this.logger.warning("The developer's authority was not found within the CloudInstanceDiscoveryMetadata returned from the network request."),this.logger.verbose("Creating custom Authority for custom domain scenario."),n=t.createCloudDiscoveryMetadataFromHost(this.hostnameAndPort)),n}isInKnownAuthorities(){return this.authorityOptions.knownAuthorities.filter(r=>r&&Ne.getDomainFromUrl(r).toLowerCase()===this.hostnameAndPort).length>0}static generateAuthority(e,r){let n;if(r&&r.azureCloudInstance!==Bo.None){let i=r.tenant?r.tenant:R.DEFAULT_COMMON_TENANT;n=`${r.azureCloudInstance}/${i}/`}return n||e}static createCloudDiscoveryMetadataFromHost(e){return{preferred_network:e,preferred_cache:e,aliases:[e]}}getPreferredCache(){if(this.managedIdentity)return R.DEFAULT_AUTHORITY_HOST;if(this.discoveryComplete())return this.metadata.preferred_cache;throw D(Nn)}isAlias(e){return this.metadata.aliases.indexOf(e)>-1}isAliasOfKnownMicrosoftAuthority(e){return nv.has(e)}static isPublicCloudAuthority(e){return R.KNOWN_PUBLIC_CLOUDS.indexOf(e)>=0}static buildRegionalAuthorityString(e,r,n){let i=new Ne(e);i.validateAsUri();let s=i.getUrlComponents(),a=`${r}.${s.HostNameAndPort}`;this.isPublicCloudAuthority(s.HostNameAndPort)&&(a=`${r}.${R.REGIONAL_AUTH_PUBLIC_CLOUD_SUFFIX}`);let o=Ne.constructAuthorityUriFromObject({...i.getUrlComponents(),HostNameAndPort:a}).urlString;return n?`${o}?${n}`:o}static replaceWithRegionalInformation(e,r){let n={...e};return n.authorization_endpoint=t.buildRegionalAuthorityString(n.authorization_endpoint,r),n.token_endpoint=t.buildRegionalAuthorityString(n.token_endpoint,r),n.end_session_endpoint&&(n.end_session_endpoint=t.buildRegionalAuthorityString(n.end_session_endpoint,r)),n}static transformCIAMAuthority(e){let r=e,i=new Ne(e).getUrlComponents();if(i.PathSegments.length===0&&i.HostNameAndPort.endsWith(R.CIAM_AUTH_URL)){let s=i.HostNameAndPort.split(".")[0];r=`${r}${s}${R.AAD_TENANT_DOMAIN_SUFFIX}`}return r}};Ls.reservedTenantDomains=new Set(["{tenant}","{tenantid}",ii.COMMON,ii.CONSUMERS,ii.ORGANIZATIONS]);function bj(t){let n=new Ne(t).getUrlComponents().PathSegments.slice(-1)[0]?.toLowerCase();switch(n){case ii.COMMON:case ii.ORGANIZATIONS:case ii.CONSUMERS:return;default:return n}}function uI(t){return t.endsWith(R.FORWARD_SLASH)?t:`${t}${R.FORWARD_SLASH}`}function e7(t){let e=t.cloudDiscoveryMetadata,r;if(e)try{r=JSON.parse(e)}catch{throw He(HA)}return{canonicalAuthority:t.authority?uI(t.authority):void 0,knownAuthorities:t.knownAuthorities,cloudDiscoveryMetadata:r}}async function t7(t,e,r,n,i,s,a){a?.addQueueMeasurement(S.AuthorityFactoryCreateDiscoveredInstance,s);let o=Ls.transformCIAMAuthority(uI(t)),A=new Ls(o,e,r,n,i,s,a);try{return await Oe(A.resolveEndpointsAsync.bind(A),S.AuthorityResolveEndpointsAsync,i,a,s)(),A}catch{throw D(Nn)}}var Dn=class t extends ge{constructor(e,r,n,i,s){super(e,r,n),this.name="ServerError",this.errorNo=i,this.status=s,Object.setPrototypeOf(this,t.prototype)}};function Gu(t,e,r){return{clientId:t,authority:e.authority,scopes:e.scopes,homeAccountIdentifier:r,claims:e.claims,authenticationScheme:e.authenticationScheme,resourceRequestMethod:e.resourceRequestMethod,resourceRequestUri:e.resourceRequestUri,shrClaims:e.shrClaims,sshKid:e.sshKid,embeddedClientId:e.embeddedClientId||e.tokenBodyParameters?.clientId}}var P1=class t{static generateThrottlingStorageKey(e){return`${ba.THROTTLING_PREFIX}.${JSON.stringify(e)}`}static preProcess(e,r,n){let i=t.generateThrottlingStorageKey(r),s=e.getThrottlingCache(i);if(s){if(s.throttleTime=500&&e.status<600}static checkResponseForRetryAfter(e){return e.headers?e.headers.hasOwnProperty(Et.RETRY_AFTER)&&(e.status<200||e.status>=300):!1}static calculateThrottleTime(e){let r=e<=0?0:e,n=Date.now()/1e3;return Math.floor(Math.min(n+(r||ba.DEFAULT_THROTTLE_TIME_SECONDS),n+ba.DEFAULT_MAX_THROTTLE_TIME_SECONDS)*1e3)}static removeThrottle(e,r,n,i){let s=Gu(r,n,i),a=this.generateThrottlingStorageKey(s);e.removeItem(a,n.correlationId)}};var hI=class t extends ge{constructor(e,r,n){super(e.errorCode,e.errorMessage,e.subError),Object.setPrototypeOf(this,t.prototype),this.name="NetworkError",this.error=e,this.httpStatus=r,this.responseHeaders=n}};var sn=class{constructor(e,r){this.config=Cj(e),this.logger=new Ni(this.config.loggerOptions,KC,Mu),this.cryptoUtils=this.config.cryptoInterface,this.cacheManager=this.config.storageInterface,this.networkClient=this.config.networkInterface,this.serverTelemetryManager=this.config.serverTelemetryManager,this.authority=this.config.authOptions.authority,this.performanceClient=r}createTokenRequestHeaders(e){let r={};if(r[Et.CONTENT_TYPE]=R.URL_FORM_CONTENT_TYPE,!this.config.systemOptions.preventCorsPreflight&&e)switch(e.type){case Tn.HOME_ACCOUNT_ID:try{let n=Na(e.credential);r[Et.CCS_HEADER]=`Oid:${n.uid}@${n.utid}`}catch(n){this.logger.verbose("Could not parse home account ID for CCS Header: "+n)}break;case Tn.UPN:r[Et.CCS_HEADER]=`UPN: ${e.credential}`;break}return r}async executePostToTokenEndpoint(e,r,n,i,s,a){a&&this.performanceClient?.addQueueMeasurement(a,s);let o=await this.sendPostRequest(i,e,{body:r,headers:n},s);return this.config.serverTelemetryManager&&o.status<500&&o.status!==429&&this.config.serverTelemetryManager.clearTelemetryCache(),o}async sendPostRequest(e,r,n,i){P1.preProcess(this.cacheManager,e,i);let s;try{s=await Oe(this.networkClient.sendPostRequestAsync.bind(this.networkClient),S.NetworkClientSendPostRequestAsync,this.logger,this.performanceClient,i)(r,n);let a=s.headers||{};this.performanceClient?.addFields({refreshTokenSize:s.body.refresh_token?.length||0,httpVerToken:a[Et.X_MS_HTTP_VERSION]||"",requestId:a[Et.X_MS_REQUEST_ID]||""},i)}catch(a){if(a instanceof hI){let o=a.responseHeaders;throw o&&this.performanceClient?.addFields({httpVerToken:o[Et.X_MS_HTTP_VERSION]||"",requestId:o[Et.X_MS_REQUEST_ID]||"",contentTypeHeader:o[Et.CONTENT_TYPE]||void 0,contentLengthHeader:o[Et.CONTENT_LENGTH]||void 0,httpStatus:a.httpStatus},i),a.error}throw a instanceof ge?a:D(dc)}return P1.postProcess(this.cacheManager,e,s,i),s}async updateAuthority(e,r){this.performanceClient?.addQueueMeasurement(S.UpdateTokenEndpointAuthority,r);let n=`https://${e}/${this.authority.tenant}/`,i=await t7(n,this.networkClient,this.cacheManager,this.authority.options,this.logger,r,this.performanceClient);this.authority=i}createTokenQueryParameters(e){let r=new Map;return e.embeddedClientId&&Ro(r,this.config.authOptions.clientId,this.config.authOptions.redirectUri),e.tokenQueryParameters&&vo(r,e.tokenQueryParameters),Gc(r,e.correlationId),Lc(r,e.correlationId,this.performanceClient),Ta(r)}};var gI={};Ur(gI,{badToken:()=>zA,consentRequired:()=>n7,interactionRequired:()=>r7,loginRequired:()=>i7,nativeAccountUnavailable:()=>_1,noTokensFound:()=>jA,refreshTokenExpired:()=>M1,uxNotAllowed:()=>fI});var jA="no_tokens_found",_1="native_account_unavailable",M1="refresh_token_expired",fI="ux_not_allowed",r7="interaction_required",n7="consent_required",i7="login_required",zA="bad_token";var vj=[r7,n7,i7,zA,fI],x5e=["message_only","additional_action","basic_action","user_password_expired","consent_required","bad_token"],EI={[jA]:"No refresh token found in the cache. Please sign-in.",[_1]:"The requested account is not available in the native broker. It may have been deleted or logged out. Please sign-in again using an interactive API.",[M1]:"Refresh token has expired.",[zA]:"Identity provider returned bad_token due to an expired or invalid refresh token. Please invoke an interactive API to resolve.",[fI]:"`canShowUI` flag in Edge was set to false. User interaction required on web page. Please invoke an interactive API to resolve."},s7={noTokensFoundError:{code:jA,desc:EI[jA]},native_account_unavailable:{code:_1,desc:EI[_1]},bad_token:{code:zA,desc:EI[zA]}},Di=class t extends ge{constructor(e,r,n,i,s,a,o,A){super(e,r,n),Object.setPrototypeOf(this,t.prototype),this.timestamp=i||R.EMPTY_STRING,this.traceId=s||R.EMPTY_STRING,this.correlationId=a||R.EMPTY_STRING,this.claims=o||R.EMPTY_STRING,this.name="InteractionRequiredAuthError",this.errorNo=A}};function yI(t,e,r){let n=!!t&&vj.indexOf(t)>-1,i=!!r&&x5e.indexOf(r)>-1,s=!!e&&vj.some(a=>e.indexOf(a)>-1);return n||s||i}function CI(t){return new Di(t,EI[t])}var II=class t{static setRequestState(e,r,n){let i=t.generateLibraryState(e,n);return r?`${i}${R.RESOURCE_DELIM}${r}`:i}static generateLibraryState(e,r){if(!e)throw D(VA);let n={id:e.createNewGuid()};r&&(n.meta=r);let i=JSON.stringify(n);return e.base64Encode(i)}static parseRequestState(e,r){if(!e)throw D(VA);if(!r)throw D(xs);try{let n=r.split(R.RESOURCE_DELIM),i=n[0],s=n.length>1?n.slice(1).join(R.RESOURCE_DELIM):R.EMPTY_STRING,a=e.base64Decode(i),o=JSON.parse(a);return{userRequestState:s||R.EMPTY_STRING,libraryState:o}}catch{throw D(xs)}}};var L5e={SW:"sw"},WA=class{constructor(e,r){this.cryptoUtils=e,this.performanceClient=r}async generateCnf(e,r){this.performanceClient?.addQueueMeasurement(S.PopTokenGenerateCnf,e.correlationId);let n=await Oe(this.generateKid.bind(this),S.PopTokenGenerateCnf,r,this.performanceClient,e.correlationId)(e),i=this.cryptoUtils.base64UrlEncode(JSON.stringify(n));return{kid:n.kid,reqCnfString:i}}async generateKid(e){return this.performanceClient?.addQueueMeasurement(S.PopTokenGenerateKid,e.correlationId),{kid:await this.cryptoUtils.getPublicKeyThumbprint(e),xms_ksl:L5e.SW}}async signPopToken(e,r,n){return this.signPayload(e,r,n)}async signPayload(e,r,n,i){let{resourceRequestMethod:s,resourceRequestUri:a,shrClaims:o,shrNonce:A,shrOptions:l}=n,d=(a?new Ne(a):void 0)?.getUrlComponents();return this.cryptoUtils.signJwt({at:e,ts:Ti(),m:s?.toUpperCase(),u:d?.HostNameAndPort,nonce:A||this.cryptoUtils.createNewGuid(),p:d?.AbsolutePath,q:d?.QueryString?[[],d.QueryString]:void 0,client_claims:o||void 0,...i},r,l,n.correlationId)}};var ki=class{constructor(e,r){this.cache=e,this.hasChanged=r}get cacheHasChanged(){return this.hasChanged}get tokenCache(){return this.cache}};var Ar=class t{constructor(e,r,n,i,s,a,o){this.clientId=e,this.cacheStorage=r,this.cryptoObj=n,this.logger=i,this.serializableCache=s,this.persistencePlugin=a,this.performanceClient=o}validateTokenResponse(e,r){if(e.error||e.error_description||e.suberror){let n=`Error(s): ${e.error_codes||R.NOT_AVAILABLE} - Timestamp: ${e.timestamp||R.NOT_AVAILABLE} - Description: ${e.error_description||R.NOT_AVAILABLE} - Correlation ID: ${e.correlation_id||R.NOT_AVAILABLE} - Trace ID: ${e.trace_id||R.NOT_AVAILABLE}`,i=e.error_codes?.length?e.error_codes[0]:void 0,s=new Dn(e.error,n,e.suberror,i,e.status);if(r&&e.status&&e.status>=fe.SERVER_ERROR_RANGE_START&&e.status<=fe.SERVER_ERROR_RANGE_END){this.logger.warning(`executeTokenRequest:validateTokenResponse - AAD is currently unavailable and the access token is unable to be refreshed. -${s}`);return}else if(r&&e.status&&e.status>=fe.CLIENT_ERROR_RANGE_START&&e.status<=fe.CLIENT_ERROR_RANGE_END){this.logger.warning(`executeTokenRequest:validateTokenResponse - AAD is currently available but is unable to refresh the access token. -${s}`);return}throw yI(e.error,e.error_description,e.suberror)?new Di(e.error,e.error_description,e.suberror,e.timestamp||R.EMPTY_STRING,e.trace_id||R.EMPTY_STRING,e.correlation_id||R.EMPTY_STRING,e.claims||R.EMPTY_STRING,i):s}}async handleServerTokenResponse(e,r,n,i,s,a,o,A,l){this.performanceClient?.addQueueMeasurement(S.HandleServerTokenResponse,e.correlation_id);let c;if(e.id_token){if(c=Qo(e.id_token||R.EMPTY_STRING,this.cryptoObj.base64Decode),s&&s.nonce&&c.nonce!==s.nonce)throw D(hc);if(i.maxAge||i.maxAge===0){let m=c.auth_time;if(!m)throw D(Eo);i1(m,i.maxAge)}}this.homeAccountIdentifier=rn.generateHomeAccountId(e.client_info||R.EMPTY_STRING,r.authorityType,this.logger,this.cryptoObj,c);let d;s&&s.state&&(d=II.parseRequestState(this.cryptoObj,s.state)),e.key_id=e.key_id||i.sshKid||void 0;let p=this.generateCacheRecord(e,r,n,i,c,a,s),u;try{if(this.persistencePlugin&&this.serializableCache&&(this.logger.verbose("Persistence enabled, calling beforeCacheAccess"),u=new ki(this.serializableCache,!0),await this.persistencePlugin.beforeCacheAccess(u)),o&&!A&&p.account){let m=p.account.generateAccountKey();if(!this.cacheStorage.getAccount(m,i.correlationId))return this.logger.warning("Account used to refresh tokens not in persistence, refreshed tokens will not be stored in the cache"),await t.generateAuthenticationResult(this.cryptoObj,r,p,!1,i,c,d,void 0,l)}await this.cacheStorage.saveCacheRecord(p,i.correlationId,i.storeInCache)}finally{this.persistencePlugin&&this.serializableCache&&u&&(this.logger.verbose("Persistence enabled, calling afterCacheAccess"),await this.persistencePlugin.afterCacheAccess(u))}return t.generateAuthenticationResult(this.cryptoObj,r,p,!1,i,c,d,e,l)}generateCacheRecord(e,r,n,i,s,a,o){let A=r.getPreferredCache();if(!A)throw D(Co);let l=nI(s),c,d;e.id_token&&s&&(c=$b(this.homeAccountIdentifier,A,e.id_token,this.clientId,l||""),d=Rj(this.cacheStorage,r,this.homeAccountIdentifier,this.cryptoObj.base64Decode,i.correlationId,s,e.client_info,A,l,o,void 0,this.logger));let p=null;if(e.access_token){let h=e.scope?fr.fromString(e.scope):new fr(i.scopes||[]),f=(typeof e.expires_in=="string"?parseInt(e.expires_in,10):e.expires_in)||0,E=(typeof e.ext_expires_in=="string"?parseInt(e.ext_expires_in,10):e.ext_expires_in)||0,y=(typeof e.refresh_in=="string"?parseInt(e.refresh_in,10):e.refresh_in)||void 0,B=n+f,Q=B+E,C=y&&y>0?n+y:void 0;p=Kb(this.homeAccountIdentifier,A,e.access_token,this.clientId,l||r.tenant||"",h.printScopes(),B,Q,this.cryptoObj.base64Decode,C,e.token_type,a,e.key_id,i.claims,i.requestedClaimsHash)}let u=null;if(e.refresh_token){let h;if(e.refresh_token_expires_in){let f=typeof e.refresh_token_expires_in=="string"?parseInt(e.refresh_token_expires_in,10):e.refresh_token_expires_in;h=n+f}u=Xb(this.homeAccountIdentifier,A,e.refresh_token,this.clientId,e.foci,a,h)}let m=null;return e.foci&&(m={clientId:this.clientId,environment:A,familyId:e.foci}),{account:d,idToken:c,accessToken:p,refreshToken:u,appMetadata:m}}static async generateAuthenticationResult(e,r,n,i,s,a,o,A,l){let c=R.EMPTY_STRING,d=[],p=null,u,m,h=R.EMPTY_STRING;if(n.accessToken){if(n.accessToken.tokenType===Me.POP&&!s.popKid){let B=new WA(e),{secret:Q,keyId:C}=n.accessToken;if(!C)throw D(Sc);c=await B.signPopToken(Q,C,s)}else c=n.accessToken.secret;d=fr.fromString(n.accessToken.target).asArray(),p=s1(n.accessToken.expiresOn),u=s1(n.accessToken.extendedExpiresOn),n.accessToken.refreshOn&&(m=s1(n.accessToken.refreshOn))}n.appMetadata&&(h=n.appMetadata.familyId===go?go:"");let f=a?.oid||a?.sub||"",E=a?.tid||"";A?.spa_accountid&&n.account&&(n.account.nativeAccountId=A?.spa_accountid);let y=n.account?rI(n.account.getAccountInfo(),void 0,a,n.idToken?.secret):null;return{authority:r.canonicalAuthority,uniqueId:f,tenantId:E,scopes:d,account:y,idToken:n?.idToken?.secret||"",idTokenClaims:a||{},accessToken:c,fromCache:i,expiresOn:p,extExpiresOn:u,refreshOn:m,correlationId:s.correlationId,requestId:l||R.EMPTY_STRING,familyId:h,tokenType:n.accessToken?.tokenType||R.EMPTY_STRING,state:o?o.userRequestState:R.EMPTY_STRING,cloudGraphHostName:n.account?.cloudGraphHostName||R.EMPTY_STRING,msGraphHost:n.account?.msGraphHost||R.EMPTY_STRING,code:A?.spa_code,fromNativeBroker:!1}}};function Rj(t,e,r,n,i,s,a,o,A,l,c,d){d?.verbose("setCachedAccount called");let u=t.getAccountKeys().find(y=>y.startsWith(r)),m=null;u&&(m=t.getAccount(u,i));let h=m||rn.createAccount({homeAccountId:r,idTokenClaims:s,clientInfo:a,environment:o,cloudGraphHostName:l?.cloud_graph_host_name,msGraphHost:l?.msgraph_host,nativeAccountId:c},e,n),f=h.tenantProfiles||[],E=A||h.realm;if(E&&!f.find(y=>y.tenantId===E)){let y=h1(r,h.localAccountId,E,s);f.push(y)}return h.tenantProfiles=f,h}var BI=class{static validateRedirectUri(e){if(!e)throw He(bc)}static validatePrompt(e){let r=[];for(let n in Os)r.push(Os[n]);if(r.indexOf(e)<0)throw He(Tc)}static validateClaims(e){try{JSON.parse(e)}catch{throw He(Ra)}}static validateCodeChallengeParams(e,r){if(!e||!r)throw He(wo);this.validateCodeChallengeMethod(r)}static validateCodeChallengeMethod(e){if([ac.PLAIN,ac.S256].indexOf(e)<0)throw He(Pc)}};async function kn(t,e,r){return typeof t=="string"?t:t({clientId:e,tokenEndpoint:r})}var O1=class extends sn{constructor(e,r){super(e,r),this.includeRedirectUri=!0,this.oidcDefaultScopes=this.config.authOptions.authority.options.OIDCOptions?.defaultScopes}async acquireToken(e,r){if(this.performanceClient?.addQueueMeasurement(S.AuthClientAcquireToken,e.correlationId),!e.code)throw D(Ec);let n=Ti(),i=await Oe(this.executeTokenRequest.bind(this),S.AuthClientExecuteTokenRequest,this.logger,this.performanceClient,e.correlationId)(this.authority,e),s=i.headers?.[Et.X_MS_REQUEST_ID],a=new Ar(this.config.authOptions.clientId,this.cacheManager,this.cryptoUtils,this.logger,this.config.serializableCache,this.config.persistencePlugin,this.performanceClient);return a.validateTokenResponse(i.body),Oe(a.handleServerTokenResponse.bind(a),S.HandleServerTokenResponse,this.logger,this.performanceClient,e.correlationId)(i.body,this.authority,n,e,r,void 0,void 0,void 0,s)}getLogoutUri(e){if(!e)throw He(kc);let r=this.createLogoutUrlQueryString(e);return Ne.appendQueryString(this.authority.endSessionEndpoint,r)}async executeTokenRequest(e,r){this.performanceClient?.addQueueMeasurement(S.AuthClientExecuteTokenRequest,r.correlationId);let n=this.createTokenQueryParameters(r),i=Ne.appendQueryString(e.tokenEndpoint,n),s=await Oe(this.createTokenRequestBody.bind(this),S.AuthClientCreateTokenRequestBody,this.logger,this.performanceClient,r.correlationId)(r),a;if(r.clientInfo)try{let l=Uu(r.clientInfo,this.cryptoUtils.base64Decode);a={credential:`${l.uid}${Xt.CLIENT_INFO_SEPARATOR}${l.utid}`,type:Tn.HOME_ACCOUNT_ID}}catch(l){this.logger.verbose("Could not parse client info for CCS Header: "+l)}let o=this.createTokenRequestHeaders(a||r.ccsCredential),A=Gu(this.config.authOptions.clientId,r);return Oe(this.executePostToTokenEndpoint.bind(this),S.AuthorizationCodeClientExecutePostToTokenEndpoint,this.logger,this.performanceClient,r.correlationId)(i,s,o,A,r.correlationId,S.AuthorizationCodeClientExecutePostToTokenEndpoint)}async createTokenRequestBody(e){this.performanceClient?.addQueueMeasurement(S.AuthClientCreateTokenRequestBody,e.correlationId);let r=new Map;if(Uc(r,e.embeddedClientId||e.tokenBodyParameters?.[Da]||this.config.authOptions.clientId),this.includeRedirectUri?qc(r,e.redirectUri):BI.validateRedirectUri(e.redirectUri),Fc(r,e.scopes,!0,this.oidcDefaultScopes),$v(r,e.code),C1(r,this.config.libraryInfo),I1(r,this.config.telemetry.application),D1(r),this.serverTelemetryManager&&!aI(this.config)&&T1(r,this.serverTelemetryManager),e.codeVerifier&&Xv(r,e.codeVerifier),this.config.clientCredentials.clientSecret&&Q1(r,this.config.clientCredentials.clientSecret),this.config.clientCredentials.clientAssertion){let i=this.config.clientCredentials.clientAssertion;w1(r,await kn(i.assertion,this.config.authOptions.clientId,e.resourceRequestUri)),S1(r,i.assertionType)}if(b1(r,si.AUTHORIZATION_CODE_GRANT),Hc(r),e.authenticationScheme===Me.POP){let i=new WA(this.cryptoUtils,this.performanceClient),s;e.popKid?s=this.cryptoUtils.encodeKid(e.popKid):s=(await Oe(i.generateCnf.bind(i),S.PopTokenGenerateCnf,this.logger,this.performanceClient,e.correlationId)(e,this.logger)).reqCnfString,R1(r,s)}else if(e.authenticationScheme===Me.SSH)if(e.sshJwk)N1(r,e.sshJwk);else throw He(So);(!Pt.isEmptyObj(e.claims)||this.config.authOptions.clientCapabilities&&this.config.authOptions.clientCapabilities.length>0)&&Vc(r,e.claims,this.config.authOptions.clientCapabilities);let n;if(e.clientInfo)try{let i=Uu(e.clientInfo,this.cryptoUtils.base64Decode);n={credential:`${i.uid}${Xt.CLIENT_INFO_SEPARATOR}${i.utid}`,type:Tn.HOME_ACCOUNT_ID}}catch(i){this.logger.verbose("Could not parse client info for CCS Header: "+i)}else n=e.ccsCredential;if(this.config.systemOptions.preventCorsPreflight&&n)switch(n.type){case Tn.HOME_ACCOUNT_ID:try{let i=Na(n.credential);bo(r,i)}catch(i){this.logger.verbose("Could not parse home account ID for CCS Header: "+i)}break;case Tn.UPN:JA(r,n.credential);break}return e.embeddedClientId&&Ro(r,this.config.authOptions.clientId,this.config.authOptions.redirectUri),e.tokenBodyParameters&&vo(r,e.tokenBodyParameters),e.enableSpaAuthorizationCode&&(!e.tokenBodyParameters||!e.tokenBodyParameters[cI])&&vo(r,{[cI]:"1"}),Lc(r,e.correlationId,this.performanceClient),Ta(r)}createLogoutUrlQueryString(e){let r=new Map;return e.postLogoutRedirectUri&&Yv(r,e.postLogoutRedirectUri),e.correlationId&&Gc(r,e.correlationId),e.idTokenHint&&Jv(r,e.idTokenHint),e.state&&B1(r,e.state),e.logoutHint&&Zv(r,e.logoutHint),e.extraQueryParameters&&vo(r,e.extraQueryParameters),this.config.authOptions.instanceAware&&v1(r),Ta(r,this.config.authOptions.encodeExtraQueryParams,e.extraQueryParameters)}};var F5e=300,Yc=class extends sn{constructor(e,r){super(e,r)}async acquireToken(e){this.performanceClient?.addQueueMeasurement(S.RefreshTokenClientAcquireToken,e.correlationId);let r=Ti(),n=await Oe(this.executeTokenRequest.bind(this),S.RefreshTokenClientExecuteTokenRequest,this.logger,this.performanceClient,e.correlationId)(e,this.authority),i=n.headers?.[Et.X_MS_REQUEST_ID],s=new Ar(this.config.authOptions.clientId,this.cacheManager,this.cryptoUtils,this.logger,this.config.serializableCache,this.config.persistencePlugin);return s.validateTokenResponse(n.body),Oe(s.handleServerTokenResponse.bind(s),S.HandleServerTokenResponse,this.logger,this.performanceClient,e.correlationId)(n.body,this.authority,r,e,void 0,void 0,!0,e.forceCache,i)}async acquireTokenByRefreshToken(e){if(!e)throw He(Dc);if(this.performanceClient?.addQueueMeasurement(S.RefreshTokenClientAcquireTokenByRefreshToken,e.correlationId),!e.account)throw D(yo);if(this.cacheManager.isAppMetadataFOCI(e.account.environment))try{return await Oe(this.acquireTokenWithCachedRefreshToken.bind(this),S.RefreshTokenClientAcquireTokenWithCachedRefreshToken,this.logger,this.performanceClient,e.correlationId)(e,!0)}catch(n){let i=n instanceof Di&&n.errorCode===jA,s=n instanceof Dn&&n.errorCode===Ff.INVALID_GRANT_ERROR&&n.subError===Ff.CLIENT_MISMATCH_ERROR;if(i||s)return Oe(this.acquireTokenWithCachedRefreshToken.bind(this),S.RefreshTokenClientAcquireTokenWithCachedRefreshToken,this.logger,this.performanceClient,e.correlationId)(e,!1);throw n}return Oe(this.acquireTokenWithCachedRefreshToken.bind(this),S.RefreshTokenClientAcquireTokenWithCachedRefreshToken,this.logger,this.performanceClient,e.correlationId)(e,!1)}async acquireTokenWithCachedRefreshToken(e,r){this.performanceClient?.addQueueMeasurement(S.RefreshTokenClientAcquireTokenWithCachedRefreshToken,e.correlationId);let n=Sj(this.cacheManager.getRefreshToken.bind(this.cacheManager),S.CacheManagerGetRefreshToken,this.logger,this.performanceClient,e.correlationId)(e.account,r,e.correlationId,void 0,this.performanceClient);if(!n)throw CI(jA);if(n.expiresOn&&Ou(n.expiresOn,e.refreshTokenExpirationOffsetSeconds||F5e))throw this.performanceClient?.addFields({rtExpiresOnMs:Number(n.expiresOn)},e.correlationId),CI(M1);let i={...e,refreshToken:n.secret,authenticationScheme:e.authenticationScheme||Me.BEARER,ccsCredential:{credential:e.account.homeAccountId,type:Tn.HOME_ACCOUNT_ID}};try{return await Oe(this.acquireToken.bind(this),S.RefreshTokenClientAcquireToken,this.logger,this.performanceClient,e.correlationId)(i)}catch(s){if(s instanceof Di&&(this.performanceClient?.addFields({rtExpiresOnMs:Number(n.expiresOn)},e.correlationId),s.subError===zA)){this.logger.verbose("acquireTokenWithRefreshToken: bad refresh token, removing from cache");let a=a1(n);this.cacheManager.removeRefreshToken(a,e.correlationId)}throw s}}async executeTokenRequest(e,r){this.performanceClient?.addQueueMeasurement(S.RefreshTokenClientExecuteTokenRequest,e.correlationId);let n=this.createTokenQueryParameters(e),i=Ne.appendQueryString(r.tokenEndpoint,n),s=await Oe(this.createTokenRequestBody.bind(this),S.RefreshTokenClientCreateTokenRequestBody,this.logger,this.performanceClient,e.correlationId)(e),a=this.createTokenRequestHeaders(e.ccsCredential),o=Gu(this.config.authOptions.clientId,e);return Oe(this.executePostToTokenEndpoint.bind(this),S.RefreshTokenClientExecutePostToTokenEndpoint,this.logger,this.performanceClient,e.correlationId)(i,s,a,o,e.correlationId,S.RefreshTokenClientExecutePostToTokenEndpoint)}async createTokenRequestBody(e){this.performanceClient?.addQueueMeasurement(S.RefreshTokenClientCreateTokenRequestBody,e.correlationId);let r=new Map;if(Uc(r,e.embeddedClientId||e.tokenBodyParameters?.[Da]||this.config.authOptions.clientId),e.redirectUri&&qc(r,e.redirectUri),Fc(r,e.scopes,!0,this.config.authOptions.authority.options.OIDCOptions?.defaultScopes),b1(r,si.REFRESH_TOKEN_GRANT),Hc(r),C1(r,this.config.libraryInfo),I1(r,this.config.telemetry.application),D1(r),this.serverTelemetryManager&&!aI(this.config)&&T1(r,this.serverTelemetryManager),Kv(r,e.refreshToken),this.config.clientCredentials.clientSecret&&Q1(r,this.config.clientCredentials.clientSecret),this.config.clientCredentials.clientAssertion){let n=this.config.clientCredentials.clientAssertion;w1(r,await kn(n.assertion,this.config.authOptions.clientId,e.resourceRequestUri)),S1(r,n.assertionType)}if(e.authenticationScheme===Me.POP){let n=new WA(this.cryptoUtils,this.performanceClient),i;e.popKid?i=this.cryptoUtils.encodeKid(e.popKid):i=(await Oe(n.generateCnf.bind(n),S.PopTokenGenerateCnf,this.logger,this.performanceClient,e.correlationId)(e,this.logger)).reqCnfString,R1(r,i)}else if(e.authenticationScheme===Me.SSH)if(e.sshJwk)N1(r,e.sshJwk);else throw He(So);if((!Pt.isEmptyObj(e.claims)||this.config.authOptions.clientCapabilities&&this.config.authOptions.clientCapabilities.length>0)&&Vc(r,e.claims,this.config.authOptions.clientCapabilities),this.config.systemOptions.preventCorsPreflight&&e.ccsCredential)switch(e.ccsCredential.type){case Tn.HOME_ACCOUNT_ID:try{let n=Na(e.ccsCredential.credential);bo(r,n)}catch(n){this.logger.verbose("Could not parse home account ID for CCS Header: "+n)}break;case Tn.UPN:JA(r,e.ccsCredential.credential);break}return e.embeddedClientId&&Ro(r,this.config.authOptions.clientId,this.config.authOptions.redirectUri),e.tokenBodyParameters&&vo(r,e.tokenBodyParameters),Lc(r,e.correlationId,this.performanceClient),Ta(r)}};var x1=class extends sn{constructor(e,r){super(e,r)}async acquireCachedToken(e){this.performanceClient?.addQueueMeasurement(S.SilentFlowClientAcquireCachedToken,e.correlationId);let r=dt.NOT_APPLICABLE;if(e.forceRefresh||!this.config.cacheOptions.claimsBasedCachingEnabled&&!Pt.isEmptyObj(e.claims))throw this.setCacheOutcome(dt.FORCE_REFRESH_OR_CLAIMS,e.correlationId),D(Io);if(!e.account)throw D(yo);let n=e.account.tenantId||bj(e.authority),i=this.cacheManager.getTokenKeys(),s=this.cacheManager.getAccessToken(e.account,e,i,n);if(s){if(Wb(s.cachedAt)||Ou(s.expiresOn,this.config.systemOptions.tokenRenewalOffsetSeconds))throw this.setCacheOutcome(dt.CACHED_ACCESS_TOKEN_EXPIRED,e.correlationId),D(Io);s.refreshOn&&Ou(s.refreshOn,0)&&(r=dt.PROACTIVELY_REFRESHED)}else throw this.setCacheOutcome(dt.NO_CACHED_ACCESS_TOKEN,e.correlationId),D(Io);let a=e.authority||this.authority.getPreferredCache(),o={account:this.cacheManager.readAccountFromCache(e.account,e.correlationId),accessToken:s,idToken:this.cacheManager.getIdToken(e.account,e.correlationId,i,n,this.performanceClient),refreshToken:null,appMetadata:this.cacheManager.readAppMetadataFromCache(a)};return this.setCacheOutcome(r,e.correlationId),this.config.serverTelemetryManager&&this.config.serverTelemetryManager.incrementCacheHits(),[await Oe(this.generateResultFromCacheRecord.bind(this),S.SilentFlowClientGenerateResultFromCacheRecord,this.logger,this.performanceClient,e.correlationId)(o,e),r]}setCacheOutcome(e,r){this.serverTelemetryManager?.setCacheOutcome(e),this.performanceClient?.addFields({cacheOutcome:e},r),e!==dt.NOT_APPLICABLE&&this.logger.info(`Token refresh is required due to cache outcome: ${e}`)}async generateResultFromCacheRecord(e,r){this.performanceClient?.addQueueMeasurement(S.SilentFlowClientGenerateResultFromCacheRecord,r.correlationId);let n;if(e.idToken&&(n=Qo(e.idToken.secret,this.config.cryptoInterface.base64Decode)),r.maxAge||r.maxAge===0){let i=n?.auth_time;if(!i)throw D(Eo);i1(i,r.maxAge)}return Ar.generateAuthenticationResult(this.cryptoUtils,this.authority,e,!0,r,n)}};var L1={};Ur(L1,{getAuthorizationCodePayload:()=>V5e,getAuthorizeUrl:()=>q5e,getStandardAuthorizeRequestParameters:()=>U5e,validateAuthorizationResponse:()=>Nj});function U5e(t,e,r,n){let i=e.correlationId,s=new Map;Uc(s,e.embeddedClientId||e.extraQueryParameters?.[Da]||t.clientId);let a=[...e.scopes||[],...e.extraScopesToConsent||[]];if(Fc(s,a,!0,t.authority.options.OIDCOptions?.defaultScopes),qc(s,e.redirectUri),Gc(s,i),Hv(s,e.responseMode),Hc(s),e.prompt&&(zv(s,e.prompt),n?.addFields({prompt:e.prompt},i)),e.domainHint&&(jv(s,e.domainHint),n?.addFields({domainHintFromRequest:!0},i)),e.prompt!==Os.SELECT_ACCOUNT)if(e.sid&&e.prompt===Os.NONE)r.verbose("createAuthCodeUrlQueryString: Prompt is none, adding sid from request"),pI(s,e.sid),n?.addFields({sidFromRequest:!0},i);else if(e.account){let o=H5e(e.account),A=Y5e(e.account);if(A&&e.domainHint&&(r.warning('AuthorizationCodeClient.createAuthCodeUrlQueryString: "domainHint" param is set, skipping opaque "login_hint" claim. Please consider not passing domainHint'),A=null),A){r.verbose("createAuthCodeUrlQueryString: login_hint claim present on account"),Vu(s,A),n?.addFields({loginHintFromClaim:!0},i);try{let l=Na(e.account.homeAccountId);bo(s,l)}catch{r.verbose("createAuthCodeUrlQueryString: Could not parse home account ID for CCS Header")}}else if(o&&e.prompt===Os.NONE){r.verbose("createAuthCodeUrlQueryString: Prompt is none, adding sid from account"),pI(s,o),n?.addFields({sidFromClaim:!0},i);try{let l=Na(e.account.homeAccountId);bo(s,l)}catch{r.verbose("createAuthCodeUrlQueryString: Could not parse home account ID for CCS Header")}}else if(e.loginHint)r.verbose("createAuthCodeUrlQueryString: Adding login_hint from request"),Vu(s,e.loginHint),JA(s,e.loginHint),n?.addFields({loginHintFromRequest:!0},i);else if(e.account.username){r.verbose("createAuthCodeUrlQueryString: Adding login_hint from account"),Vu(s,e.account.username),n?.addFields({loginHintFromUpn:!0},i);try{let l=Na(e.account.homeAccountId);bo(s,l)}catch{r.verbose("createAuthCodeUrlQueryString: Could not parse home account ID for CCS Header")}}}else e.loginHint&&(r.verbose("createAuthCodeUrlQueryString: No account, adding login_hint from request"),Vu(s,e.loginHint),JA(s,e.loginHint),n?.addFields({loginHintFromRequest:!0},i));else r.verbose("createAuthCodeUrlQueryString: Prompt is select_account, ignoring account hints");return e.nonce&&Wv(s,e.nonce),e.state&&B1(s,e.state),(e.claims||t.clientCapabilities&&t.clientCapabilities.length>0)&&Vc(s,e.claims,t.clientCapabilities),e.embeddedClientId&&Ro(s,t.clientId,t.redirectUri),t.instanceAware&&(!e.extraQueryParameters||!Object.keys(e.extraQueryParameters).includes(qu))&&v1(s),s}function q5e(t,e,r,n){let i=Ta(e,r,n);return Ne.appendQueryString(t.authorizationEndpoint,i)}function V5e(t,e){if(Nj(t,e),!t.code)throw D(Qc);return t}function Nj(t,e){if(!t.state||!e)throw t.state?D(UA,"Cached State"):D(UA,"Server State");let r,n;try{r=decodeURIComponent(t.state)}catch{throw D(xs,t.state)}try{n=decodeURIComponent(e)}catch{throw D(xs,t.state)}if(r!==n)throw D(mc);if(t.error||t.error_description||t.suberror){let i=G5e(t);throw yI(t.error,t.error_description,t.suberror)?new Di(t.error||"",t.error_description,t.suberror,t.timestamp||"",t.trace_id||"",t.correlation_id||"",t.claims||"",i):new Dn(t.error||"",t.error_description,t.suberror,i)}}function G5e(t){let e="code=",r=t.error_uri?.lastIndexOf(e);return r&&r>=0?t.error_uri?.substring(r+e.length):void 0}function H5e(t){return t.idTokenClaims?.sid||null}function Y5e(t){return t.idTokenClaims?.login_hint||null}var Tj=",",Dj="|";function J5e(t){let{skus:e,libraryName:r,libraryVersion:n,extensionName:i,extensionVersion:s}=t,a=new Map([[0,[r,n]],[2,[i,s]]]),o=[];if(e?.length){if(o=e.split(Tj),o.length<4)return e}else o=Array.from({length:4},()=>Dj);return a.forEach((A,l)=>{A.length===2&&A[0]?.length&&A[1]?.length&&j5e({skuArr:o,index:l,skuName:A[0],skuVersion:A[1]})}),o.join(Tj)}function j5e(t){let{skuArr:e,index:r,skuName:n,skuVersion:i}=t;r>=e.length||(e[r]=[n,i].join(Dj))}var Jc=class t{constructor(e,r){this.cacheOutcome=dt.NOT_APPLICABLE,this.cacheManager=r,this.apiId=e.apiId,this.correlationId=e.correlationId,this.wrapperSKU=e.wrapperSKU||R.EMPTY_STRING,this.wrapperVer=e.wrapperVer||R.EMPTY_STRING,this.telemetryCacheKey=Sr.CACHE_KEY+Xt.CACHE_KEY_SEPARATOR+e.clientId}generateCurrentRequestHeaderValue(){let e=`${this.apiId}${Sr.VALUE_SEPARATOR}${this.cacheOutcome}`,r=[this.wrapperSKU,this.wrapperVer],n=this.getNativeBrokerErrorCode();n?.length&&r.push(`broker_error=${n}`);let i=r.join(Sr.VALUE_SEPARATOR),s=this.getRegionDiscoveryFields(),a=[e,s].join(Sr.VALUE_SEPARATOR);return[Sr.SCHEMA_VERSION,a,i].join(Sr.CATEGORY_SEPARATOR)}generateLastRequestHeaderValue(){let e=this.getLastRequests(),r=t.maxErrorsToSend(e),n=e.failedRequests.slice(0,2*r).join(Sr.VALUE_SEPARATOR),i=e.errors.slice(0,r).join(Sr.VALUE_SEPARATOR),s=e.errors.length,a=r=Sr.MAX_CACHED_ERRORS&&(r.failedRequests.shift(),r.failedRequests.shift(),r.errors.shift()),r.failedRequests.push(this.apiId,this.correlationId),e instanceof Error&&e&&e.toString()?e instanceof ge?e.subError?r.errors.push(e.subError):e.errorCode?r.errors.push(e.errorCode):r.errors.push(e.toString()):r.errors.push(e.toString()):r.errors.push(Sr.UNKNOWN_ERROR),this.cacheManager.setServerTelemetry(this.telemetryCacheKey,r,this.correlationId)}incrementCacheHits(){let e=this.getLastRequests();return e.cacheHits+=1,this.cacheManager.setServerTelemetry(this.telemetryCacheKey,e,this.correlationId),e.cacheHits}getLastRequests(){let e={failedRequests:[],errors:[],cacheHits:0};return this.cacheManager.getServerTelemetry(this.telemetryCacheKey)||e}clearTelemetryCache(){let e=this.getLastRequests(),r=t.maxErrorsToSend(e),n=e.errors.length;if(r===n)this.cacheManager.removeItem(this.telemetryCacheKey,this.correlationId);else{let i={failedRequests:e.failedRequests.slice(r*2),errors:e.errors.slice(r),cacheHits:0};this.cacheManager.setServerTelemetry(this.telemetryCacheKey,i,this.correlationId)}}static maxErrorsToSend(e){let r,n=0,i=0,s=e.errors.length;for(r=0;rJSON.parse(o))},a=new rn;YA.toObject(a,s),r[n]=a}),r}static deserializeIdTokens(e){let r={};return e&&Object.keys(e).map(function(n){let i=e[n],s={homeAccountId:i.home_account_id,environment:i.environment,credentialType:i.credential_type,clientId:i.client_id,secret:i.secret,realm:i.realm};r[n]=s}),r}static deserializeAccessTokens(e){let r={};return e&&Object.keys(e).map(function(n){let i=e[n],s={homeAccountId:i.home_account_id,environment:i.environment,credentialType:i.credential_type,clientId:i.client_id,secret:i.secret,realm:i.realm,target:i.target,cachedAt:i.cached_at,expiresOn:i.expires_on,extendedExpiresOn:i.extended_expires_on,refreshOn:i.refresh_on,keyId:i.key_id,tokenType:i.token_type,requestedClaims:i.requestedClaims,requestedClaimsHash:i.requestedClaimsHash,userAssertionHash:i.userAssertionHash};r[n]=s}),r}static deserializeRefreshTokens(e){let r={};return e&&Object.keys(e).map(function(n){let i=e[n],s={homeAccountId:i.home_account_id,environment:i.environment,credentialType:i.credential_type,clientId:i.client_id,secret:i.secret,familyId:i.family_id,target:i.target,realm:i.realm};r[n]=s}),r}static deserializeAppMetadata(e){let r={};return e&&Object.keys(e).map(function(n){let i=e[n];r[n]={clientId:i.client_id,environment:i.environment,familyId:i.family_id}}),r}static deserializeAllCache(e){return{accounts:e.Account?this.deserializeAccounts(e.Account):{},idTokens:e.IdToken?this.deserializeIdTokens(e.IdToken):{},accessTokens:e.AccessToken?this.deserializeAccessTokens(e.AccessToken):{},refreshTokens:e.RefreshToken?this.deserializeRefreshTokens(e.RefreshToken):{},appMetadata:e.AppMetadata?this.deserializeAppMetadata(e.AppMetadata):{}}}};var kj="system_assigned_managed_identity",Z5e="managed_identity",o7=`https://login.microsoftonline.com/${Z5e}/`,ai={AUTHORIZATION_HEADER_NAME:"Authorization",METADATA_HEADER_NAME:"Metadata",APP_SERVICE_SECRET_HEADER_NAME:"X-IDENTITY-HEADER",ML_AND_SF_SECRET_HEADER_NAME:"secret"},gr={API_VERSION:"api-version",RESOURCE:"resource",SHA256_TOKEN_TO_REFRESH:"token_sha256_to_refresh",XMS_CC:"xms_cc"},ce={AZURE_POD_IDENTITY_AUTHORITY_HOST:"AZURE_POD_IDENTITY_AUTHORITY_HOST",DEFAULT_IDENTITY_CLIENT_ID:"DEFAULT_IDENTITY_CLIENT_ID",IDENTITY_ENDPOINT:"IDENTITY_ENDPOINT",IDENTITY_HEADER:"IDENTITY_HEADER",IDENTITY_SERVER_THUMBPRINT:"IDENTITY_SERVER_THUMBPRINT",IMDS_ENDPOINT:"IMDS_ENDPOINT",MSI_ENDPOINT:"MSI_ENDPOINT",MSI_SECRET:"MSI_SECRET"},pe={APP_SERVICE:"AppService",AZURE_ARC:"AzureArc",CLOUD_SHELL:"CloudShell",DEFAULT_TO_IMDS:"DefaultToImds",IMDS:"Imds",MACHINE_LEARNING:"MachineLearning",SERVICE_FABRIC:"ServiceFabric"},qt={SYSTEM_ASSIGNED:"system-assigned",USER_ASSIGNED_CLIENT_ID:"user-assigned-client-id",USER_ASSIGNED_RESOURCE_ID:"user-assigned-resource-id",USER_ASSIGNED_OBJECT_ID:"user-assigned-object-id"},Rt={GET:"get",POST:"post"},QI={SUCCESS_RANGE_START:fe.SUCCESS_RANGE_START,SUCCESS_RANGE_END:fe.SUCCESS_RANGE_END,SERVER_ERROR:fe.SERVER_ERROR},Pj="REGION_NAME",_j="MSAL_FORCE_REGION",Mj=32,Oj={SHA256:"sha256"},wI={CV_CHARSET:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-._~"},vr={MSAL_SKU:"msal.js.node",JWT_BEARER_ASSERTION_TYPE:"urn:ietf:params:oauth:client-assertion-type:jwt-bearer",AUTHORIZATION_PENDING:"authorization_pending",HTTP_PROTOCOL:"http://",LOCALHOST:"localhost"},To={acquireTokenSilent:62,acquireTokenByUsernamePassword:371,acquireTokenByDeviceCode:671,acquireTokenByClientCredential:771,acquireTokenByCode:871,acquireTokenByRefreshToken:872},cs={RSA_256:"RS256",PSS_256:"PS256",X5T_256:"x5t#S256",X5T:"x5t",X5C:"x5c",AUDIENCE:"aud",EXPIRATION_TIME:"exp",ISSUER:"iss",SUBJECT:"sub",NOT_BEFORE:"nbf",JWT_ID:"jti"},SI={INTERVAL_MS:100,TIMEOUT_MS:5e3},xj=4096;var Hu=class{static getNetworkResponse(e,r,n){return{headers:e,body:r,status:n}}static urlToHttpOptions(e){let r={protocol:e.protocol,hostname:e.hostname&&e.hostname.startsWith("[")?e.hostname.slice(1,-1):e.hostname,hash:e.hash,search:e.search,pathname:e.pathname,path:`${e.pathname||""}${e.search||""}`,href:e.href};return e.port!==""&&(r.port=Number(e.port)),(e.username||e.password)&&(r.auth=`${decodeURIComponent(e.username)}:${decodeURIComponent(e.password)}`),r}};var bI=Ce(require("http"),1),A7=Ce(require("https"),1);var Yu=class{constructor(e,r){this.proxyUrl=e||"",this.customAgentOptions=r||{}}async sendGetRequestAsync(e,r,n){return this.proxyUrl?Lj(e,this.proxyUrl,Rt.GET,r,this.customAgentOptions,n):Fj(e,Rt.GET,r,this.customAgentOptions,n)}async sendPostRequestAsync(e,r){return this.proxyUrl?Lj(e,this.proxyUrl,Rt.POST,r,this.customAgentOptions):Fj(e,Rt.POST,r,this.customAgentOptions)}},Lj=(t,e,r,n,i,s)=>{let a=new URL(t),o=new URL(e),A=n?.headers||{},l={host:o.hostname,port:o.port,method:"CONNECT",path:a.hostname,headers:A};i&&Object.keys(i).length&&(l.agent=new bI.default.Agent(i));let c="";if(r===Rt.POST){let p=n?.body||"";c=`Content-Type: application/x-www-form-urlencoded\r -Content-Length: ${p.length}\r -\r -${p}`}else s&&(l.timeout=s);let d=`${r.toUpperCase()} ${a.href} HTTP/1.1\r -Host: ${a.host}\r -Connection: close\r -`+c+`\r -`;return new Promise((p,u)=>{let m=bI.default.request(l);s&&m.on("timeout",()=>{m.destroy(),u(new Error("Request time out"))}),m.end(),m.on("connect",(h,f)=>{let E=h?.statusCode||QI.SERVER_ERROR;(EQI.SUCCESS_RANGE_END)&&(m.destroy(),f.destroy(),u(new Error(`Error connecting to proxy. Http status code: ${h.statusCode}. Http status message: ${h?.statusMessage||"Unknown"}`))),f.write(d);let y=[];f.on("data",B=>{y.push(B)}),f.on("end",()=>{let Q=Buffer.concat([...y]).toString().split(`\r -`),C=parseInt(Q[0].split(" ")[1]),w=Q[0].split(" ").slice(2).join(" "),b=Q[Q.length-1],v=Q.slice(1,Q.length-2),q=new Map;v.forEach(ye=>{let Ze=ye.split(new RegExp(/:\s(.*)/s)),Oi=Ze[0],Er=Ze[1];try{let hs=JSON.parse(Er);hs&&typeof hs=="object"&&(Er=hs)}catch{}q.set(Oi,Er)});let V=Object.fromEntries(q),O=Hu.getNetworkResponse(V,Uj(C,w,V,b),C);(Cfe.SUCCESS_RANGE_END)&&O.body.error!==vr.AUTHORIZATION_PENDING&&m.destroy(),p(O)}),f.on("error",B=>{m.destroy(),f.destroy(),u(new Error(B.toString()))})}),m.on("error",h=>{m.destroy(),u(new Error(h.toString()))})})},Fj=(t,e,r,n,i)=>{let s=e===Rt.POST,a=r?.body||"",o=new URL(t),A=r?.headers||{},l={method:e,headers:A,...Hu.urlToHttpOptions(o)};return n&&Object.keys(n).length&&(l.agent=new A7.default.Agent(n)),s?l.headers={...l.headers,"Content-Length":a.length}:i&&(l.timeout=i),new Promise((c,d)=>{let p;l.protocol==="http:"?p=bI.default.request(l):p=A7.default.request(l),s&&p.write(a),i&&p.on("timeout",()=>{p.destroy(),d(new Error("Request time out"))}),p.end(),p.on("response",u=>{let m=u.headers,h=u.statusCode,f=u.statusMessage,E=[];u.on("data",y=>{E.push(y)}),u.on("end",()=>{let y=Buffer.concat([...E]).toString(),B=m,Q=Hu.getNetworkResponse(B,Uj(h,f,B,y),h);(hfe.SUCCESS_RANGE_END)&&Q.body.error!==vr.AUTHORIZATION_PENDING&&p.destroy(),c(Q)})}),p.on("error",u=>{p.destroy(),d(new Error(u.toString()))})})},Uj=(t,e,r,n)=>{let i;try{i=JSON.parse(n)}catch{let a,o;t>=fe.CLIENT_ERROR_RANGE_START&&t<=fe.CLIENT_ERROR_RANGE_END?(a="client_error",o="A client"):t>=fe.SERVER_ERROR_RANGE_START&&t<=fe.SERVER_ERROR_RANGE_END?(a="server_error",o="A server"):(a="unknown_error",o="An unknown"),i={error:a,error_description:`${o} error occured. -Http status code: ${t} -Http status message: ${e||"Unknown"} -Headers: ${JSON.stringify(r)}`}}return i};var vI="invalid_file_extension",RI="invalid_file_path",$A="invalid_managed_identity_id_type",NI="invalid_secret",qj="missing_client_id",Vj="network_unavailable",TI="platform_not_supported",DI="unable_to_create_azure_arc",kI="unable_to_create_cloud_shell",PI="unable_to_create_source",F1="unable_to_read_secret_file",Gj="user_assigned_not_available_at_runtime",_I="www_authenticate_header_missing",MI="www_authenticate_header_unsupported_format",jc={[ce.AZURE_POD_IDENTITY_AUTHORITY_HOST]:"azure_pod_identity_authority_host_url_malformed",[ce.IDENTITY_ENDPOINT]:"identity_endpoint_url_malformed",[ce.IMDS_ENDPOINT]:"imds_endpoint_url_malformed",[ce.MSI_ENDPOINT]:"msi_endpoint_url_malformed"};var ewe={[vI]:"The file path in the WWW-Authenticate header does not contain a .key file.",[RI]:"The file path in the WWW-Authenticate header is not in a valid Windows or Linux Format.",[$A]:"More than one ManagedIdentityIdType was provided.",[NI]:"The secret in the file on the file path in the WWW-Authenticate header is greater than 4096 bytes.",[TI]:"The platform is not supported by Azure Arc. Azure Arc only supports Windows and Linux.",[qj]:"A ManagedIdentityId id was not provided.",[jc.AZURE_POD_IDENTITY_AUTHORITY_HOST]:`The Managed Identity's '${ce.AZURE_POD_IDENTITY_AUTHORITY_HOST}' environment variable is malformed.`,[jc.IDENTITY_ENDPOINT]:`The Managed Identity's '${ce.IDENTITY_ENDPOINT}' environment variable is malformed.`,[jc.IMDS_ENDPOINT]:`The Managed Identity's '${ce.IMDS_ENDPOINT}' environment variable is malformed.`,[jc.MSI_ENDPOINT]:`The Managed Identity's '${ce.MSI_ENDPOINT}' environment variable is malformed.`,[Vj]:"Authentication unavailable. The request to the managed identity endpoint timed out.",[DI]:"Azure Arc Managed Identities can only be system assigned.",[kI]:"Cloud Shell Managed Identities can only be system assigned.",[PI]:"Unable to create a Managed Identity source based on environment variables.",[F1]:"Unable to read the secret file.",[Gj]:"Service Fabric user assigned managed identity ClientId or ResourceId is not configurable at runtime.",[_I]:"A 401 response was received form the Azure Arc Managed Identity, but the www-authenticate header is missing.",[MI]:"A 401 response was received form the Azure Arc Managed Identity, but the www-authenticate header is in an unsupported format."},l7=class t extends ge{constructor(e){super(e,ewe[e]),this.name="ManagedIdentityError",Object.setPrototypeOf(this,t.prototype)}};function lr(t){return new l7(t)}var OI=class{get id(){return this._id}set id(e){this._id=e}get idType(){return this._idType}set idType(e){this._idType=e}constructor(e){let r=e?.userAssignedClientId,n=e?.userAssignedResourceId,i=e?.userAssignedObjectId;if(r){if(n||i)throw lr($A);this.id=r,this.idType=qt.USER_ASSIGNED_CLIENT_ID}else if(n){if(r||i)throw lr($A);this.id=n,this.idType=qt.USER_ASSIGNED_RESOURCE_ID}else if(i){if(r||n)throw lr($A);this.id=i,this.idType=qt.USER_ASSIGNED_OBJECT_ID}else this.id=kj,this.idType=qt.SYSTEM_ASSIGNED}};var Fr={invalidLoopbackAddressType:{code:"invalid_loopback_server_address_type",desc:"Loopback server address is not type string. This is unexpected."},unableToLoadRedirectUri:{code:"unable_to_load_redirectUrl",desc:"Loopback server callback was invoked without a url. This is unexpected."},noAuthCodeInResponse:{code:"no_auth_code_in_response",desc:"No auth code found in the server response. Please check your network trace to determine what happened."},noLoopbackServerExists:{code:"no_loopback_server_exists",desc:"No loopback server exists yet."},loopbackServerAlreadyExists:{code:"loopback_server_already_exists",desc:"Loopback server already exists. Cannot create another."},loopbackServerTimeout:{code:"loopback_server_timeout",desc:"Timed out waiting for auth code listener to be registered."},stateNotFoundError:{code:"state_not_found",desc:"State not found. Please verify that the request originated from msal."},thumbprintMissing:{code:"thumbprint_missing_from_client_certificate",desc:"Client certificate does not contain a SHA-1 or SHA-256 thumbprint."}},oi=class t extends ge{constructor(e,r){super(e,r),this.name="NodeAuthError"}static createInvalidLoopbackAddressTypeError(){return new t(Fr.invalidLoopbackAddressType.code,`${Fr.invalidLoopbackAddressType.desc}`)}static createUnableToLoadRedirectUrlError(){return new t(Fr.unableToLoadRedirectUri.code,`${Fr.unableToLoadRedirectUri.desc}`)}static createNoAuthCodeInResponseError(){return new t(Fr.noAuthCodeInResponse.code,`${Fr.noAuthCodeInResponse.desc}`)}static createNoLoopbackServerExistsError(){return new t(Fr.noLoopbackServerExists.code,`${Fr.noLoopbackServerExists.desc}`)}static createLoopbackServerAlreadyExistsError(){return new t(Fr.loopbackServerAlreadyExists.code,`${Fr.loopbackServerAlreadyExists.desc}`)}static createLoopbackServerTimeoutError(){return new t(Fr.loopbackServerTimeout.code,`${Fr.loopbackServerTimeout.desc}`)}static createStateNotFoundError(){return new t(Fr.stateNotFoundError.code,Fr.stateNotFoundError.desc)}static createThumbprintMissingError(){return new t(Fr.thumbprintMissing.code,Fr.thumbprintMissing.desc)}};var twe={clientId:R.EMPTY_STRING,authority:R.DEFAULT_AUTHORITY,clientSecret:R.EMPTY_STRING,clientAssertion:R.EMPTY_STRING,clientCertificate:{thumbprint:R.EMPTY_STRING,thumbprintSha256:R.EMPTY_STRING,privateKey:R.EMPTY_STRING,x5c:R.EMPTY_STRING},knownAuthorities:[],cloudDiscoveryMetadata:R.EMPTY_STRING,authorityMetadata:R.EMPTY_STRING,clientCapabilities:[],protocolMode:mn.AAD,azureCloudOptions:{azureCloudInstance:Bo.None,tenant:R.EMPTY_STRING},skipAuthorityMetadataCache:!1,encodeExtraQueryParams:!1},rwe={claimsBasedCachingEnabled:!1},c7={loggerCallback:()=>{},piiLoggingEnabled:!1,logLevel:Ft.Info},nwe={loggerOptions:c7,networkClient:new Yu,proxyUrl:R.EMPTY_STRING,customAgentOptions:{},disableInternalRetries:!1},iwe={application:{appName:R.EMPTY_STRING,appVersion:R.EMPTY_STRING}};function Hj({auth:t,broker:e,cache:r,system:n,telemetry:i}){let s={...nwe,networkClient:new Yu(n?.proxyUrl,n?.customAgentOptions),loggerOptions:n?.loggerOptions||c7,disableInternalRetries:n?.disableInternalRetries||!1};if(t.clientCertificate&&!t.clientCertificate.thumbprint&&!t.clientCertificate.thumbprintSha256)throw oi.createStateNotFoundError();return{auth:{...twe,...t},broker:{...e},cache:{...rwe,...r},system:{...s,...n},telemetry:{...iwe,...i}}}function Yj({clientCapabilities:t,managedIdentityIdParams:e,system:r}){let n=new OI(e),i=r?.loggerOptions||c7,s;return r?.networkClient?s=r.networkClient:s=new Yu(r?.proxyUrl,r?.customAgentOptions),{clientCapabilities:t||[],managedIdentityId:n,system:{loggerOptions:i,networkClient:s},disableInternalRetries:r?.disableInternalRetries||!1}}var Jj=Ce(require("crypto")),LI=new Uint8Array(256),xI=LI.length;function d7(){return xI>LI.length-16&&(Jj.default.randomFillSync(LI),xI=0),LI.slice(xI,xI+=16)}var jj=/^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i;function swe(t){return typeof t=="string"&&jj.test(t)}var zj=swe;var an=[];for(let t=0;t<256;++t)an.push((t+256).toString(16).substr(1));function awe(t,e=0){let r=(an[t[e+0]]+an[t[e+1]]+an[t[e+2]]+an[t[e+3]]+"-"+an[t[e+4]]+an[t[e+5]]+"-"+an[t[e+6]]+an[t[e+7]]+"-"+an[t[e+8]]+an[t[e+9]]+"-"+an[t[e+10]]+an[t[e+11]]+an[t[e+12]]+an[t[e+13]]+an[t[e+14]]+an[t[e+15]]).toLowerCase();if(!zj(r))throw TypeError("Stringified UUID is invalid");return r}var Wj=awe;function owe(t,e,r){t=t||{};let n=t.random||(t.rng||d7)();if(n[6]=n[6]&15|64,n[8]=n[8]&63|128,e){r=r||0;for(let i=0;i<16;++i)e[r+i]=n[i];return e}return Wj(n)}var p7=owe;var Ju=class{generateGuid(){return p7()}isGuid(e){return/^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i.test(e)}};var Pi=class t{static base64Encode(e,r){return Buffer.from(e,r).toString(tn.BASE64)}static base64EncodeUrl(e,r){return t.base64Encode(e,r).replace(/=/g,R.EMPTY_STRING).replace(/\+/g,"-").replace(/\//g,"_")}static base64Decode(e){return Buffer.from(e,tn.BASE64).toString("utf8")}static base64DecodeUrl(e){let r=e.replace(/-/g,"+").replace(/_/g,"/");for(;r.length%4;)r+="=";return t.base64Decode(r)}};var $j=Ce(require("crypto"),1);var KA=class{sha256(e){return $j.default.createHash(Oj.SHA256).update(e).digest()}};var Kj=Ce(require("crypto"),1);var FI=class{constructor(){this.hashUtils=new KA}async generatePkceCodes(){let e=this.generateCodeVerifier(),r=this.generateCodeChallengeFromVerifier(e);return{verifier:e,challenge:r}}generateCodeVerifier(){let e=[],r=256-256%wI.CV_CHARSET.length;for(;e.length<=Mj;){let i=Kj.default.randomBytes(1)[0];if(i>=r)continue;let s=i%wI.CV_CHARSET.length;e.push(wI.CV_CHARSET[s])}let n=e.join(R.EMPTY_STRING);return Pi.base64EncodeUrl(n)}generateCodeChallengeFromVerifier(e){return Pi.base64EncodeUrl(this.hashUtils.sha256(e).toString(tn.BASE64),tn.BASE64)}};var ka=class{constructor(){this.pkceGenerator=new FI,this.guidGenerator=new Ju,this.hashUtils=new KA}base64UrlEncode(){throw new Error("Method not implemented.")}encodeKid(){throw new Error("Method not implemented.")}createNewGuid(){return this.guidGenerator.generateGuid()}base64Encode(e){return Pi.base64Encode(e)}base64Decode(e){return Pi.base64Decode(e)}generatePkceCodes(){return this.pkceGenerator.generatePkceCodes()}getPublicKeyThumbprint(){throw new Error("Method not implemented.")}removeTokenBindingKey(){throw new Error("Method not implemented.")}clearKeystore(){throw new Error("Method not implemented.")}signJwt(){throw new Error("Method not implemented.")}async hashString(e){return Pi.base64EncodeUrl(this.hashUtils.sha256(e).toString(tn.BASE64),tn.BASE64)}};var XA=class extends YA{constructor(e,r,n,i){super(r,n,e,new Oc,i),this.cache={},this.changeEmitters=[],this.logger=e}registerChangeEmitter(e){this.changeEmitters.push(e)}emitChange(){this.changeEmitters.forEach(e=>e.call(null))}cacheToInMemoryCache(e){let r={accounts:{},idTokens:{},accessTokens:{},refreshTokens:{},appMetadata:{}};for(let n in e){let i=e[n];if(typeof i=="object")if(i instanceof rn)r.accounts[n]=i;else if(br.isIdTokenEntity(i))r.idTokens[n]=i;else if(br.isAccessTokenEntity(i))r.accessTokens[n]=i;else if(br.isRefreshTokenEntity(i))r.refreshTokens[n]=i;else if(br.isAppMetadataEntity(n,i))r.appMetadata[n]=i;else continue}return r}inMemoryCacheToCache(e){let r=this.getCache();return r={...r,...e.accounts,...e.idTokens,...e.accessTokens,...e.refreshTokens,...e.appMetadata},r}getInMemoryCache(){return this.logger.trace("Getting in-memory cache"),this.cacheToInMemoryCache(this.getCache())}setInMemoryCache(e){this.logger.trace("Setting in-memory cache");let r=this.inMemoryCacheToCache(e);this.setCache(r),this.emitChange()}getCache(){return this.logger.trace("Getting cache key-value store"),this.cache}setCache(e){this.logger.trace("Setting cache key value store"),this.cache=e,this.emitChange()}getItem(e){return this.logger.tracePii(`Item key: ${e}`),this.getCache()[e]}setItem(e,r){this.logger.tracePii(`Item key: ${e}`);let n=this.getCache();n[e]=r,this.setCache(n)}getAccountKeys(){let e=this.getInMemoryCache();return Object.keys(e.accounts)}getTokenKeys(){let e=this.getInMemoryCache();return{idToken:Object.keys(e.idTokens),accessToken:Object.keys(e.accessTokens),refreshToken:Object.keys(e.refreshTokens)}}getAccount(e){return this.getItem(e)?Object.assign(new rn,this.getItem(e)):null}async setAccount(e){let r=e.generateAccountKey();this.setItem(r,e)}getIdTokenCredential(e){let r=this.getItem(e);return br.isIdTokenEntity(r)?r:null}async setIdTokenCredential(e){let r=br.generateCredentialKey(e);this.setItem(r,e)}getAccessTokenCredential(e){let r=this.getItem(e);return br.isAccessTokenEntity(r)?r:null}async setAccessTokenCredential(e){let r=br.generateCredentialKey(e);this.setItem(r,e)}getRefreshTokenCredential(e){let r=this.getItem(e);return br.isRefreshTokenEntity(r)?r:null}async setRefreshTokenCredential(e){let r=br.generateCredentialKey(e);this.setItem(r,e)}getAppMetadata(e){let r=this.getItem(e);return br.isAppMetadataEntity(e,r)?r:null}setAppMetadata(e){let r=br.generateAppMetadataKey(e);this.setItem(r,e)}getServerTelemetry(e){let r=this.getItem(e);return r&&br.isServerTelemetryEntity(e,r)?r:null}setServerTelemetry(e,r){this.setItem(e,r)}getAuthorityMetadata(e){let r=this.getItem(e);return r&&br.isAuthorityMetadataEntity(e,r)?r:null}getAuthorityMetadataKeys(){return this.getKeys().filter(e=>this.isAuthorityMetadata(e))}setAuthorityMetadata(e,r){this.setItem(e,r)}getThrottlingCache(e){let r=this.getItem(e);return r&&br.isThrottlingEntity(e,r)?r:null}setThrottlingCache(e,r){this.setItem(e,r)}removeItem(e){this.logger.tracePii(`Item key: ${e}`);let r=!1,n=this.getCache();return n[e]&&(delete n[e],r=!0),r&&(this.setCache(n),this.emitChange()),r}removeOutdatedAccount(e){this.removeItem(e)}containsKey(e){return this.getKeys().includes(e)}getKeys(){this.logger.trace("Retrieving all cache keys");let e=this.getCache();return[...Object.keys(e)]}clear(){this.logger.trace("Clearing cache entries created by MSAL"),this.getKeys().forEach(r=>{this.removeItem(r)}),this.emitChange()}static generateInMemoryCache(e){return No.deserializeAllCache(No.deserializeJSONBlob(e))}static generateJsonCache(e){return xA.serializeAllCache(e)}updateCredentialCacheKey(e,r){let n=br.generateCredentialKey(r);if(e!==n){let i=this.getItem(e);if(i)return this.removeItem(e),this.setItem(n,i),this.logger.verbose(`Updated an outdated ${r.credentialType} cache key`),n;this.logger.error(`Attempted to update an outdated ${r.credentialType} cache key but no item matching the outdated key was found in storage`)}return e}};var U1={Account:{},IdToken:{},AccessToken:{},RefreshToken:{},AppMetadata:{}},ju=class{constructor(e,r,n){this.cacheHasChanged=!1,this.storage=e,this.storage.registerChangeEmitter(this.handleChangeEvent.bind(this)),n&&(this.persistence=n),this.logger=r}hasChanged(){return this.cacheHasChanged}serialize(){this.logger.trace("Serializing in-memory cache");let e=xA.serializeAllCache(this.storage.getInMemoryCache());return this.cacheSnapshot?(this.logger.trace("Reading cache snapshot from disk"),e=this.mergeState(JSON.parse(this.cacheSnapshot),e)):this.logger.trace("No cache snapshot to merge"),this.cacheHasChanged=!1,JSON.stringify(e)}deserialize(e){if(this.logger.trace("Deserializing JSON to in-memory cache"),this.cacheSnapshot=e,this.cacheSnapshot){this.logger.trace("Reading cache snapshot from disk");let r=No.deserializeAllCache(this.overlayDefaults(JSON.parse(this.cacheSnapshot)));this.storage.setInMemoryCache(r)}else this.logger.trace("No cache snapshot to deserialize")}getKVStore(){return this.storage.getCache()}getCacheSnapshot(){let e=XA.generateInMemoryCache(this.cacheSnapshot);return this.storage.inMemoryCacheToCache(e)}async getAllAccounts(e=new ka().createNewGuid()){this.logger.trace("getAllAccounts called");let r;try{return this.persistence&&(r=new ki(this,!1),await this.persistence.beforeCacheAccess(r)),this.storage.getAllAccounts({},e)}finally{this.persistence&&r&&await this.persistence.afterCacheAccess(r)}}async getAccountByHomeId(e){let r=await this.getAllAccounts();return e&&r&&r.length&&r.filter(n=>n.homeAccountId===e)[0]||null}async getAccountByLocalId(e){let r=await this.getAllAccounts();return e&&r&&r.length&&r.filter(n=>n.localAccountId===e)[0]||null}async removeAccount(e,r){this.logger.trace("removeAccount called");let n;try{this.persistence&&(n=new ki(this,!0),await this.persistence.beforeCacheAccess(n)),this.storage.removeAccount(rn.generateAccountCacheKey(e),r||new Ju().generateGuid())}finally{this.persistence&&n&&await this.persistence.afterCacheAccess(n)}}async overwriteCache(){if(!this.persistence){this.logger.info("No persistence layer specified, cache cannot be overwritten");return}this.logger.info("Overwriting in-memory cache with persistent cache"),this.storage.clear();let e=new ki(this,!1);await this.persistence.beforeCacheAccess(e);let r=this.getCacheSnapshot();this.storage.setCache(r),await this.persistence.afterCacheAccess(e)}handleChangeEvent(){this.cacheHasChanged=!0}mergeState(e,r){this.logger.trace("Merging in-memory cache with cache snapshot");let n=this.mergeRemovals(e,r);return this.mergeUpdates(n,r)}mergeUpdates(e,r){return Object.keys(r).forEach(n=>{let i=r[n];if(!e.hasOwnProperty(n))i!==null&&(e[n]=i);else{let s=i!==null,a=typeof i=="object",o=!Array.isArray(i),A=typeof e[n]<"u"&&e[n]!==null;s&&a&&o&&A?this.mergeUpdates(e[n],i):e[n]=i}}),e}mergeRemovals(e,r){this.logger.trace("Remove updated entries in cache");let n=e.Account?this.mergeRemovalsDict(e.Account,r.Account):e.Account,i=e.AccessToken?this.mergeRemovalsDict(e.AccessToken,r.AccessToken):e.AccessToken,s=e.RefreshToken?this.mergeRemovalsDict(e.RefreshToken,r.RefreshToken):e.RefreshToken,a=e.IdToken?this.mergeRemovalsDict(e.IdToken,r.IdToken):e.IdToken,o=e.AppMetadata?this.mergeRemovalsDict(e.AppMetadata,r.AppMetadata):e.AppMetadata;return{...e,Account:n,AccessToken:i,RefreshToken:s,IdToken:a,AppMetadata:o}}mergeRemovalsDict(e,r){let n={...e};return Object.keys(e).forEach(i=>{(!r||!r.hasOwnProperty(i))&&delete n[i]}),n}overlayDefaults(e){return this.logger.trace("Overlaying input cache with the default cache"),{Account:{...U1.Account,...e.Account},IdToken:{...U1.IdToken,...e.IdToken},AccessToken:{...U1.AccessToken,...e.AccessToken},RefreshToken:{...U1.RefreshToken,...e.RefreshToken},AppMetadata:{...U1.AppMetadata,...e.AppMetadata}}}};var RK=Ce(vK(),1);var ko=class t{static fromAssertion(e){let r=new t;return r.jwt=e,r}static fromCertificate(e,r,n){let i=new t;return i.privateKey=r,i.thumbprint=e,i.useSha256=!1,n&&(i.publicCertificate=this.parseCertificate(n)),i}static fromCertificateWithSha256Thumbprint(e,r,n){let i=new t;return i.privateKey=r,i.thumbprint=e,i.useSha256=!0,n&&(i.publicCertificate=this.parseCertificate(n)),i}getJwt(e,r,n){if(this.privateKey&&this.thumbprint)return this.jwt&&!this.isExpired()&&r===this.issuer&&n===this.jwtAudience?this.jwt:this.createJwt(e,r,n);if(this.jwt)return this.jwt;throw D(at.invalidAssertion)}createJwt(e,r,n){this.issuer=r,this.jwtAudience=n;let i=vt.nowSeconds();this.expirationTime=i+600;let a={alg:this.useSha256?cs.PSS_256:cs.RSA_256},o=this.useSha256?cs.X5T_256:cs.X5T;Object.assign(a,{[o]:Pi.base64EncodeUrl(this.thumbprint,tn.HEX)}),this.publicCertificate&&Object.assign(a,{[cs.X5C]:this.publicCertificate});let A={[cs.AUDIENCE]:this.jwtAudience,[cs.EXPIRATION_TIME]:this.expirationTime,[cs.ISSUER]:this.issuer,[cs.SUBJECT]:this.issuer,[cs.NOT_BEFORE]:i,[cs.JWT_ID]:e.createNewGuid()};return this.jwt=RK.default.sign(A,this.privateKey,{header:a}),this.jwt}isExpired(){return this.expirationTime0)&&J.addClaims(r,e.claims,this.config.authOptions.clientCapabilities),this.config.systemOptions.preventCorsPreflight&&e.username&&J.addCcsUpn(r,e.username),nn.mapToQueryString(r)}};function NK(t,e,r,n){let i=L1.getStandardAuthorizeRequestParameters({...t.auth,authority:e,redirectUri:r.redirectUri||""},r,n);return J.addLibraryInfo(i,{sku:vr.MSAL_SKU,version:Us,cpu:process.arch||"",os:process.platform||""}),t.auth.protocolMode!==mn.OIDC&&J.addApplicationTelemetry(i,t.telemetry.application),J.addResponseType(i,Tu.CODE),r.codeChallenge&&r.codeChallengeMethod&&J.addCodeChallengeParams(i,r.codeChallenge,r.codeChallengeMethod),J.addExtraQueryParameters(i,r.extraQueryParameters||{}),L1.getAuthorizeUrl(e,i,t.auth.encodeExtraQueryParams,r.extraQueryParameters)}var tl=class{constructor(e){this.config=Hj(e),this.cryptoProvider=new ka,this.logger=new Ni(this.config.system.loggerOptions,u4,Us),this.storage=new XA(this.logger,this.config.auth.clientId,this.cryptoProvider,e7(this.config.auth)),this.tokenCache=new ju(this.storage,this.logger,this.config.cache.cachePlugin)}async getAuthCodeUrl(e){this.logger.info("getAuthCodeUrl called",e.correlationId);let r={...e,...await this.initializeBaseRequest(e),responseMode:e.responseMode||Sa.QUERY,authenticationScheme:Me.BEARER,state:e.state||"",nonce:e.nonce||""},n=await this.createAuthority(r.authority,r.correlationId,void 0,e.azureCloudOptions);return NK(this.config,n,r,this.logger)}async acquireTokenByCode(e,r){this.logger.info("acquireTokenByCode called"),e.state&&r&&(this.logger.info("acquireTokenByCode - validating state"),this.validateState(e.state,r.state||""),r={...r,state:""});let n={...e,...await this.initializeBaseRequest(e),authenticationScheme:Me.BEARER},i=this.initializeServerTelemetryManager(To.acquireTokenByCode,n.correlationId);try{let s=await this.createAuthority(n.authority,n.correlationId,void 0,e.azureCloudOptions),a=await this.buildOauthClientConfiguration(s,n.correlationId,n.redirectUri,i),o=new O1(a);return this.logger.verbose("Auth code client created",n.correlationId),await o.acquireToken(n,r)}catch(s){throw s instanceof ge&&s.setCorrelationId(n.correlationId),i.cacheFailedRequest(s),s}}async acquireTokenByRefreshToken(e){this.logger.info("acquireTokenByRefreshToken called",e.correlationId);let r={...e,...await this.initializeBaseRequest(e),authenticationScheme:Me.BEARER},n=this.initializeServerTelemetryManager(To.acquireTokenByRefreshToken,r.correlationId);try{let i=await this.createAuthority(r.authority,r.correlationId,void 0,e.azureCloudOptions),s=await this.buildOauthClientConfiguration(i,r.correlationId,r.redirectUri||"",n),a=new Yc(s);return this.logger.verbose("Refresh token client created",r.correlationId),await a.acquireToken(r)}catch(i){throw i instanceof ge&&i.setCorrelationId(r.correlationId),n.cacheFailedRequest(i),i}}async acquireTokenSilent(e){let r={...e,...await this.initializeBaseRequest(e),forceRefresh:e.forceRefresh||!1},n=this.initializeServerTelemetryManager(To.acquireTokenSilent,r.correlationId,r.forceRefresh);try{let i=await this.createAuthority(r.authority,r.correlationId,void 0,e.azureCloudOptions),s=await this.buildOauthClientConfiguration(i,r.correlationId,r.redirectUri||"",n),a=new x1(s);this.logger.verbose("Silent flow client created",r.correlationId);try{return await this.tokenCache.overwriteCache(),await this.acquireCachedTokenSilent(r,a,s)}catch(o){if(o instanceof GA&&o.errorCode===at.tokenRefreshRequired)return new Yc(s).acquireTokenByRefreshToken(r);throw o}}catch(i){throw i instanceof ge&&i.setCorrelationId(r.correlationId),n.cacheFailedRequest(i),i}}async acquireCachedTokenSilent(e,r,n){let[i,s]=await r.acquireCachedToken({...e,scopes:e.scopes?.length?e.scopes:[...ni]});if(s===dt.PROACTIVELY_REFRESHED){this.logger.info("ClientApplication:acquireCachedTokenSilent - Cached access token's refreshOn property has been exceeded'. It's not expired, but must be refreshed.");let a=new Yc(n);try{await a.acquireTokenByRefreshToken(e)}catch{}}return i}async acquireTokenByUsernamePassword(e){this.logger.info("acquireTokenByUsernamePassword called",e.correlationId);let r={...e,...await this.initializeBaseRequest(e)},n=this.initializeServerTelemetryManager(To.acquireTokenByUsernamePassword,r.correlationId);try{let i=await this.createAuthority(r.authority,r.correlationId,void 0,e.azureCloudOptions),s=await this.buildOauthClientConfiguration(i,r.correlationId,"",n),a=new em(s);return this.logger.verbose("Username password client created",r.correlationId),await a.acquireToken(r)}catch(i){throw i instanceof ge&&i.setCorrelationId(r.correlationId),n.cacheFailedRequest(i),i}}getTokenCache(){return this.logger.info("getTokenCache called"),this.tokenCache}validateState(e,r){if(!e)throw oi.createStateNotFoundError();if(e!==r)throw D(at.stateMismatch)}getLogger(){return this.logger}setLogger(e){this.logger=e}async buildOauthClientConfiguration(e,r,n,i){return this.logger.verbose("buildOauthClientConfiguration called",r),this.logger.info(`Building oauth client configuration with the following authority: ${e.tokenEndpoint}.`,r),i?.updateRegionDiscoveryMetadata(e.regionDiscoveryMetadata),{authOptions:{clientId:this.config.auth.clientId,authority:e,clientCapabilities:this.config.auth.clientCapabilities,redirectUri:n},loggerOptions:{logLevel:this.config.system.loggerOptions.logLevel,loggerCallback:this.config.system.loggerOptions.loggerCallback,piiLoggingEnabled:this.config.system.loggerOptions.piiLoggingEnabled,correlationId:r},cacheOptions:{claimsBasedCachingEnabled:this.config.cache.claimsBasedCachingEnabled},cryptoInterface:this.cryptoProvider,networkInterface:this.config.system.networkClient,storageInterface:this.storage,serverTelemetryManager:i,clientCredentials:{clientSecret:this.clientSecret,clientAssertion:await this.getClientAssertion(e)},libraryInfo:{sku:vr.MSAL_SKU,version:Us,cpu:process.arch||R.EMPTY_STRING,os:process.platform||R.EMPTY_STRING},telemetry:this.config.telemetry,persistencePlugin:this.config.cache.cachePlugin,serializableCache:this.tokenCache}}async getClientAssertion(e){return this.developerProvidedClientAssertion&&(this.clientAssertion=ko.fromAssertion(await kn(this.developerProvidedClientAssertion,this.config.auth.clientId,e.tokenEndpoint))),this.clientAssertion&&{assertion:this.clientAssertion.getJwt(this.cryptoProvider,this.config.auth.clientId,e.tokenEndpoint),assertionType:vr.JWT_BEARER_ASSERTION_TYPE}}async initializeBaseRequest(e){return this.logger.verbose("initializeRequestScopes called",e.correlationId),e.authenticationScheme&&e.authenticationScheme===Me.POP&&this.logger.verbose("Authentication Scheme 'pop' is not supported yet, setting Authentication Scheme to 'Bearer' for request",e.correlationId),e.authenticationScheme=Me.BEARER,this.config.cache.claimsBasedCachingEnabled&&e.claims&&!Pt.isEmptyObj(e.claims)&&(e.requestedClaimsHash=await this.cryptoProvider.hashString(e.claims)),{...e,scopes:[...e&&e.scopes||[],...ni],correlationId:e&&e.correlationId||this.cryptoProvider.createNewGuid(),authority:e.authority||this.config.auth.authority}}initializeServerTelemetryManager(e,r,n){let i={clientId:this.config.auth.clientId,correlationId:r,apiId:e,forceRefresh:n||!1};return new Jc(i,this.storage)}async createAuthority(e,r,n,i){this.logger.verbose("createAuthority called",r);let s=Ls.generateAuthority(e,i||this.config.auth.azureCloudOptions),a={protocolMode:this.config.auth.protocolMode,knownAuthorities:this.config.auth.knownAuthorities,cloudDiscoveryMetadata:this.config.auth.cloudDiscoveryMetadata,authorityMetadata:this.config.auth.authorityMetadata,azureRegionConfiguration:n,skipAuthorityMetadataCache:this.config.auth.skipAuthorityMetadataCache};return mI.createDiscoveredInstance(s,this.config.system.networkClient,this.storage,a,this.logger,r)}clearCache(){this.storage.clear()}};var TK=Ce(require("http"),1);var m4=class{async listenForAuthCode(e,r){if(this.server)throw oi.createLoopbackServerAlreadyExistsError();return new Promise((n,i)=>{this.server=TK.default.createServer((s,a)=>{let o=s.url;if(o){if(o===R.FORWARD_SLASH){a.end(e||"Auth code was successfully acquired. You can close this window now.");return}}else{a.end(r||"Error occurred loading redirectUrl"),i(oi.createUnableToLoadRedirectUrlError());return}let A=this.getRedirectUri(),l=new URL(o,A),c=nn.getDeserializedResponse(l.search)||{};c.code&&(a.writeHead(fe.REDIRECT,{location:A}),a.end()),c.error&&a.end(r||`Error occurred: ${c.error}`),n(c)}),this.server.listen(0,"127.0.0.1")})}getRedirectUri(){if(!this.server||!this.server.listening)throw oi.createNoLoopbackServerExistsError();let e=this.server.address();if(!e||typeof e=="string"||!e.port)throw this.closeServer(),oi.createInvalidLoopbackAddressTypeError();let r=e&&e.port;return`${vr.HTTP_PROTOCOL}${vr.LOCALHOST}:${r}`}closeServer(){this.server&&(this.server.close(),typeof this.server.closeAllConnections=="function"&&this.server.closeAllConnections(),this.server.unref(),this.server=void 0)}};var tm=class extends sn{constructor(e){super(e)}async acquireToken(e){let r=await this.getDeviceCode(e);e.deviceCodeCallback(r);let n=vt.nowSeconds(),i=await this.acquireTokenWithDeviceCode(e,r),s=new Ar(this.config.authOptions.clientId,this.cacheManager,this.cryptoUtils,this.logger,this.config.serializableCache,this.config.persistencePlugin);return s.validateTokenResponse(i),s.handleServerTokenResponse(i,this.authority,n,e)}async getDeviceCode(e){let r=this.createExtraQueryParameters(e),n=Ne.appendQueryString(this.authority.deviceCodeEndpoint,r),i=this.createQueryString(e),s=this.createTokenRequestHeaders(),a={clientId:this.config.authOptions.clientId,authority:e.authority,scopes:e.scopes,claims:e.claims,authenticationScheme:e.authenticationScheme,resourceRequestMethod:e.resourceRequestMethod,resourceRequestUri:e.resourceRequestUri,shrClaims:e.shrClaims,sshKid:e.sshKid};return this.executePostRequestToDeviceCodeEndpoint(n,i,s,a,e.correlationId)}createExtraQueryParameters(e){let r=new Map;return e.extraQueryParameters&&J.addExtraQueryParameters(r,e.extraQueryParameters),nn.mapToQueryString(r)}async executePostRequestToDeviceCodeEndpoint(e,r,n,i,s){let{body:{user_code:a,device_code:o,verification_uri:A,expires_in:l,interval:c,message:d}}=await this.sendPostRequest(i,e,{body:r,headers:n},s);return{userCode:a,deviceCode:o,verificationUri:A,expiresIn:l,interval:c,message:d}}createQueryString(e){let r=new Map;return J.addScopes(r,e.scopes),J.addClientId(r,this.config.authOptions.clientId),e.extraQueryParameters&&J.addExtraQueryParameters(r,e.extraQueryParameters),(e.claims||this.config.authOptions.clientCapabilities&&this.config.authOptions.clientCapabilities.length>0)&&J.addClaims(r,e.claims,this.config.authOptions.clientCapabilities),nn.mapToQueryString(r)}continuePolling(e,r,n){if(n)throw this.logger.error("Token request cancelled by setting DeviceCodeRequest.cancel = true"),D(at.deviceCodePollingCancelled);if(r&&rr)throw this.logger.error(`User defined timeout for device code polling reached. The timeout was set for ${r}`),D(at.userTimeoutReached);if(vt.nowSeconds()>e)throw r&&this.logger.verbose(`User specified timeout ignored as the device code has expired before the timeout elapsed. The user specified timeout was set for ${r}`),this.logger.error(`Device code expired. Expiration time of device code was ${e}`),D(at.deviceCodeExpired);return!0}async acquireTokenWithDeviceCode(e,r){let n=this.createTokenQueryParameters(e),i=Ne.appendQueryString(this.authority.tokenEndpoint,n),s=this.createTokenRequestBody(e,r),a=this.createTokenRequestHeaders(),o=e.timeout?vt.nowSeconds()+e.timeout:void 0,A=vt.nowSeconds()+r.expiresIn,l=r.interval*1e3;for(;this.continuePolling(A,o,e.cancel);){let c={clientId:this.config.authOptions.clientId,authority:e.authority,scopes:e.scopes,claims:e.claims,authenticationScheme:e.authenticationScheme,resourceRequestMethod:e.resourceRequestMethod,resourceRequestUri:e.resourceRequestUri,shrClaims:e.shrClaims,sshKid:e.sshKid},d=await this.executePostToTokenEndpoint(i,s,a,c,e.correlationId);if(d.body&&d.body.error)if(d.body.error===R.AUTHORIZATION_PENDING)this.logger.info("Authorization pending. Continue polling."),await vt.delay(l);else throw this.logger.info("Unexpected error in polling from the server"),jb(Pu.postRequestFailed,d.body.error);else return this.logger.verbose("Authorization completed successfully. Polling stopped."),d.body}throw this.logger.error("Polling stopped for unknown reasons."),D(at.deviceCodeUnknownError)}createTokenRequestBody(e,r){let n=new Map;J.addScopes(n,e.scopes),J.addClientId(n,this.config.authOptions.clientId),J.addGrantType(n,si.DEVICE_CODE_GRANT),J.addDeviceCode(n,r.deviceCode);let i=e.correlationId||this.config.cryptoInterface.createNewGuid();return J.addCorrelationId(n,i),J.addClientInfo(n),J.addLibraryInfo(n,this.config.libraryInfo),J.addApplicationTelemetry(n,this.config.telemetry.application),J.addThrottling(n),this.serverTelemetryManager&&J.addServerTelemetry(n,this.serverTelemetryManager),(!Pt.isEmptyObj(e.claims)||this.config.authOptions.clientCapabilities&&this.config.authOptions.clientCapabilities.length>0)&&J.addClaims(n,e.claims,this.config.authOptions.clientCapabilities),nn.mapToQueryString(n)}};var rm=class extends tl{constructor(e){super(e),this.config.broker.nativeBrokerPlugin&&(this.config.broker.nativeBrokerPlugin.isBrokerAvailable?(this.nativeBrokerPlugin=this.config.broker.nativeBrokerPlugin,this.nativeBrokerPlugin.setLogger(this.config.system.loggerOptions)):this.logger.warning("NativeBroker implementation was provided but the broker is unavailable.")),this.skus=Jc.makeExtraSkuString({libraryName:vr.MSAL_SKU,libraryVersion:Us})}async acquireTokenByDeviceCode(e){this.logger.info("acquireTokenByDeviceCode called",e.correlationId);let r=Object.assign(e,await this.initializeBaseRequest(e)),n=this.initializeServerTelemetryManager(To.acquireTokenByDeviceCode,r.correlationId);try{let i=await this.createAuthority(r.authority,r.correlationId,void 0,e.azureCloudOptions),s=await this.buildOauthClientConfiguration(i,r.correlationId,"",n),a=new tm(s);return this.logger.verbose("Device code client created",r.correlationId),await a.acquireToken(r)}catch(i){throw i instanceof ge&&i.setCorrelationId(r.correlationId),n.cacheFailedRequest(i),i}}async acquireTokenInteractive(e){let r=e.correlationId||this.cryptoProvider.createNewGuid();this.logger.trace("acquireTokenInteractive called",r);let{openBrowser:n,successTemplate:i,errorTemplate:s,windowHandle:a,loopbackClient:o,...A}=e;if(this.nativeBrokerPlugin){let m={...A,clientId:this.config.auth.clientId,scopes:e.scopes||ni,redirectUri:`${vr.HTTP_PROTOCOL}${vr.LOCALHOST}`,authority:e.authority||this.config.auth.authority,correlationId:r,extraParameters:{...A.extraQueryParameters,...A.tokenQueryParameters,[xc.X_CLIENT_EXTRA_SKU]:this.skus},accountId:A.account?.nativeAccountId};return this.nativeBrokerPlugin.acquireTokenInteractive(m,a)}let{verifier:l,challenge:c}=await this.cryptoProvider.generatePkceCodes(),d=o||new m4,p={},u=null;try{let m=d.listenForAuthCode(i,s).then(Q=>{p=Q}).catch(Q=>{u=Q}),h=await this.waitForRedirectUri(d),f={...A,correlationId:r,scopes:e.scopes||ni,redirectUri:h,responseMode:Sa.QUERY,codeChallenge:c,codeChallengeMethod:ac.S256},E=await this.getAuthCodeUrl(f);if(await n(E),await m,u)throw u;if(p.error)throw new Dn(p.error,p.error_description,p.suberror);if(!p.code)throw oi.createNoAuthCodeInResponseError();let y=p.client_info,B={code:p.code,codeVerifier:l,clientInfo:y||R.EMPTY_STRING,...f};return await this.acquireTokenByCode(B)}finally{d.closeServer()}}async acquireTokenSilent(e){let r=e.correlationId||this.cryptoProvider.createNewGuid();if(this.logger.trace("acquireTokenSilent called",r),this.nativeBrokerPlugin){let n={...e,clientId:this.config.auth.clientId,scopes:e.scopes||ni,redirectUri:`${vr.HTTP_PROTOCOL}${vr.LOCALHOST}`,authority:e.authority||this.config.auth.authority,correlationId:r,extraParameters:{...e.tokenQueryParameters,[xc.X_CLIENT_EXTRA_SKU]:this.skus},accountId:e.account.nativeAccountId,forceRefresh:e.forceRefresh||!1};return this.nativeBrokerPlugin.acquireTokenSilent(n)}return super.acquireTokenSilent(e)}async signOut(e){if(this.nativeBrokerPlugin&&e.account.nativeAccountId){let r={clientId:this.config.auth.clientId,accountId:e.account.nativeAccountId,correlationId:e.correlationId||this.cryptoProvider.createNewGuid()};await this.nativeBrokerPlugin.signOut(r)}await this.getTokenCache().removeAccount(e.account,e.correlationId)}async getAllAccounts(){if(this.nativeBrokerPlugin){let e=this.cryptoProvider.createNewGuid();return this.nativeBrokerPlugin.getAllAccounts(this.config.auth.clientId,e)}return this.getTokenCache().getAllAccounts()}async waitForRedirectUri(e){return new Promise((r,n)=>{let i=0,s=setInterval(()=>{if(SI.TIMEOUT_MS/SI.INTERVAL_MS1)throw D(at.multipleMatchingTokens);return o[0]}async executeTokenRequest(e,r,n){let i,s;if(this.appTokenProvider){this.logger.info("Using appTokenProvider extensibility.");let A={correlationId:e.correlationId,tenantId:this.config.authOptions.authority.tenant,scopes:e.scopes,claims:e.claims};s=vt.nowSeconds();let l=await this.appTokenProvider(A);i={access_token:l.accessToken,expires_in:l.expiresInSeconds,refresh_in:l.refreshInSeconds,token_type:Me.BEARER}}else{let A=this.createTokenQueryParameters(e),l=Ne.appendQueryString(r.tokenEndpoint,A),c=await this.createTokenRequestBody(e),d=this.createTokenRequestHeaders(),p={clientId:this.config.authOptions.clientId,authority:e.authority,scopes:e.scopes,claims:e.claims,authenticationScheme:e.authenticationScheme,resourceRequestMethod:e.resourceRequestMethod,resourceRequestUri:e.resourceRequestUri,shrClaims:e.shrClaims,sshKid:e.sshKid};this.logger.info("Sending token request to endpoint: "+r.tokenEndpoint),s=vt.nowSeconds();let u=await this.executePostToTokenEndpoint(l,c,d,p,e.correlationId);i=u.body,i.status=u.status}let a=new Ar(this.config.authOptions.clientId,this.cacheManager,this.cryptoUtils,this.logger,this.config.serializableCache,this.config.persistencePlugin);return a.validateTokenResponse(i,n),await a.handleServerTokenResponse(i,this.authority,s,e)}async createTokenRequestBody(e){let r=new Map;J.addClientId(r,this.config.authOptions.clientId),J.addScopes(r,e.scopes,!1),J.addGrantType(r,si.CLIENT_CREDENTIALS_GRANT),J.addLibraryInfo(r,this.config.libraryInfo),J.addApplicationTelemetry(r,this.config.telemetry.application),J.addThrottling(r),this.serverTelemetryManager&&J.addServerTelemetry(r,this.serverTelemetryManager);let n=e.correlationId||this.config.cryptoInterface.createNewGuid();J.addCorrelationId(r,n),this.config.clientCredentials.clientSecret&&J.addClientSecret(r,this.config.clientCredentials.clientSecret);let i=e.clientAssertion||this.config.clientCredentials.clientAssertion;return i&&(J.addClientAssertion(r,await kn(i.assertion,this.config.authOptions.clientId,e.resourceRequestUri)),J.addClientAssertionType(r,i.assertionType)),(!Pt.isEmptyObj(e.claims)||this.config.authOptions.clientCapabilities&&this.config.authOptions.clientCapabilities.length>0)&&J.addClaims(r,e.claims,this.config.authOptions.clientCapabilities),nn.mapToQueryString(r)}};var nm=class extends sn{constructor(e){super(e)}async acquireToken(e){if(this.scopeSet=new fr(e.scopes||[]),this.userAssertionHash=await this.cryptoUtils.hashString(e.oboAssertion),e.skipCache||e.claims)return this.executeTokenRequest(e,this.authority,this.userAssertionHash);try{return await this.getCachedAuthenticationResult(e)}catch{return await this.executeTokenRequest(e,this.authority,this.userAssertionHash)}}async getCachedAuthenticationResult(e){let r=this.readAccessTokenFromCacheForOBO(this.config.authOptions.clientId,e);if(r){if(vt.isTokenExpired(r.expiresOn,this.config.systemOptions.tokenRenewalOffsetSeconds))throw this.serverTelemetryManager?.setCacheOutcome(dt.CACHED_ACCESS_TOKEN_EXPIRED),this.logger.info(`OnbehalfofFlow:getCachedAuthenticationResult - Cached access token is expired or will expire within ${this.config.systemOptions.tokenRenewalOffsetSeconds} seconds.`),D(at.tokenRefreshRequired)}else throw this.serverTelemetryManager?.setCacheOutcome(dt.NO_CACHED_ACCESS_TOKEN),this.logger.info("SilentFlowClient:acquireCachedToken - No access token found in cache for the given properties."),D(at.tokenRefreshRequired);let n=this.readIdTokenFromCacheForOBO(r.homeAccountId,e.correlationId),i,s=null;if(n){i=XC.extractTokenClaims(n.secret,Pi.base64Decode);let a=i.oid||i.sub,o={homeAccountId:n.homeAccountId,environment:n.environment,tenantId:n.realm,username:R.EMPTY_STRING,localAccountId:a||R.EMPTY_STRING};s=this.cacheManager.readAccountFromCache(o,e.correlationId)}return this.config.serverTelemetryManager&&this.config.serverTelemetryManager.incrementCacheHits(),Ar.generateAuthenticationResult(this.cryptoUtils,this.authority,{account:s,accessToken:r,idToken:n,refreshToken:null,appMetadata:null},!0,e,i)}readIdTokenFromCacheForOBO(e,r){let n={homeAccountId:e,environment:this.authority.canonicalAuthorityUrlComponents.HostNameAndPort,credentialType:Ve.ID_TOKEN,clientId:this.config.authOptions.clientId,realm:this.authority.tenant},i=this.cacheManager.getIdTokensByFilter(n,r);return Object.values(i).length<1?null:Object.values(i)[0]}readAccessTokenFromCacheForOBO(e,r){let n=r.authenticationScheme||Me.BEARER,s={credentialType:n&&n.toLowerCase()!==Me.BEARER.toLowerCase()?Ve.ACCESS_TOKEN_WITH_AUTH_SCHEME:Ve.ACCESS_TOKEN,clientId:e,target:fr.createSearchScopes(this.scopeSet.asArray()),tokenType:n,keyId:r.sshKid,requestedClaimsHash:r.requestedClaimsHash,userAssertionHash:this.userAssertionHash},a=this.cacheManager.getAccessTokensByFilter(s,r.correlationId),o=a.length;if(o<1)return null;if(o>1)throw D(at.multipleMatchingTokens);return a[0]}async executeTokenRequest(e,r,n){let i=this.createTokenQueryParameters(e),s=Ne.appendQueryString(r.tokenEndpoint,i),a=await this.createTokenRequestBody(e),o=this.createTokenRequestHeaders(),A={clientId:this.config.authOptions.clientId,authority:e.authority,scopes:e.scopes,claims:e.claims,authenticationScheme:e.authenticationScheme,resourceRequestMethod:e.resourceRequestMethod,resourceRequestUri:e.resourceRequestUri,shrClaims:e.shrClaims,sshKid:e.sshKid},l=vt.nowSeconds(),c=await this.executePostToTokenEndpoint(s,a,o,A,e.correlationId),d=new Ar(this.config.authOptions.clientId,this.cacheManager,this.cryptoUtils,this.logger,this.config.serializableCache,this.config.persistencePlugin);return d.validateTokenResponse(c.body),await d.handleServerTokenResponse(c.body,this.authority,l,e,void 0,n)}async createTokenRequestBody(e){let r=new Map;J.addClientId(r,this.config.authOptions.clientId),J.addScopes(r,e.scopes),J.addGrantType(r,si.JWT_BEARER),J.addClientInfo(r),J.addLibraryInfo(r,this.config.libraryInfo),J.addApplicationTelemetry(r,this.config.telemetry.application),J.addThrottling(r),this.serverTelemetryManager&&J.addServerTelemetry(r,this.serverTelemetryManager);let n=e.correlationId||this.config.cryptoInterface.createNewGuid();J.addCorrelationId(r,n),J.addRequestTokenUse(r,xc.ON_BEHALF_OF),J.addOboAssertion(r,e.oboAssertion),this.config.clientCredentials.clientSecret&&J.addClientSecret(r,this.config.clientCredentials.clientSecret);let i=this.config.clientCredentials.clientAssertion;return i&&(J.addClientAssertion(r,await kn(i.assertion,this.config.authOptions.clientId,e.resourceRequestUri)),J.addClientAssertionType(r,i.assertionType)),(e.claims||this.config.authOptions.clientCapabilities&&this.config.authOptions.clientCapabilities.length>0)&&J.addClaims(r,e.claims,this.config.authOptions.clientCapabilities),nn.mapToQueryString(r)}};var im=class extends tl{constructor(e){super(e);let r=!!this.config.auth.clientSecret,n=!!this.config.auth.clientAssertion,i=(!!this.config.auth.clientCertificate?.thumbprint||!!this.config.auth.clientCertificate?.thumbprintSha256)&&!!this.config.auth.clientCertificate?.privateKey;if(!this.appTokenProvider){if(r&&n||n&&i||r&&i)throw D(at.invalidClientCredential);if(this.config.auth.clientSecret){this.clientSecret=this.config.auth.clientSecret;return}if(this.config.auth.clientAssertion){this.developerProvidedClientAssertion=this.config.auth.clientAssertion;return}if(i)this.clientAssertion=this.config.auth.clientCertificate.thumbprintSha256?ko.fromCertificateWithSha256Thumbprint(this.config.auth.clientCertificate.thumbprintSha256,this.config.auth.clientCertificate.privateKey,this.config.auth.clientCertificate.x5c):ko.fromCertificate(this.config.auth.clientCertificate.thumbprint,this.config.auth.clientCertificate.privateKey,this.config.auth.clientCertificate.x5c);else throw D(at.invalidClientCredential);this.appTokenProvider=void 0}}SetAppTokenProvider(e){this.appTokenProvider=e}async acquireTokenByClientCredential(e){this.logger.info("acquireTokenByClientCredential called",e.correlationId);let r;e.clientAssertion&&(r={assertion:await kn(e.clientAssertion,this.config.auth.clientId),assertionType:vr.JWT_BEARER_ASSERTION_TYPE});let n=await this.initializeBaseRequest(e),i={...n,scopes:n.scopes.filter(p=>!ni.includes(p))},s={...e,...i,clientAssertion:r},o=new Ne(s.authority).getUrlComponents().PathSegments[0];if(Object.values(ii).includes(o))throw D(at.missingTenantIdError);let A=process.env[_j],l;s.azureRegion!=="DisableMsalForceRegion"&&(!s.azureRegion&&A?l=A:l=s.azureRegion);let c={azureRegion:l,environmentRegion:process.env[Pj]},d=this.initializeServerTelemetryManager(To.acquireTokenByClientCredential,s.correlationId,s.skipCache);try{let p=await this.createAuthority(s.authority,s.correlationId,c,e.azureCloudOptions),u=await this.buildOauthClientConfiguration(p,s.correlationId,"",d),m=new rl(u,this.appTokenProvider);return this.logger.verbose("Client credential client created",s.correlationId),await m.acquireToken(s)}catch(p){throw p instanceof ge&&p.setCorrelationId(s.correlationId),d.cacheFailedRequest(p),p}}async acquireTokenOnBehalfOf(e){this.logger.info("acquireTokenOnBehalfOf called",e.correlationId);let r={...e,...await this.initializeBaseRequest(e)};try{let n=await this.createAuthority(r.authority,r.correlationId,void 0,e.azureCloudOptions),i=await this.buildOauthClientConfiguration(n,r.correlationId,"",void 0),s=new nm(i);return this.logger.verbose("On behalf of client created",r.correlationId),await s.acquireToken(r)}catch(n){throw n instanceof ge&&n.setCorrelationId(r.correlationId),n}}};function DK(t){if(typeof t!="string")return!1;let e=new Date(t);return!isNaN(e.getTime())&&e.toISOString()===t}var h4=class{constructor(e,r,n){this.httpClientNoRetries=e,this.retryPolicy=r,this.logger=n}async sendNetworkRequestAsyncHelper(e,r,n){return e===Rt.GET?this.httpClientNoRetries.sendGetRequestAsync(r,n):this.httpClientNoRetries.sendPostRequestAsync(r,n)}async sendNetworkRequestAsync(e,r,n){let i=await this.sendNetworkRequestAsyncHelper(e,r,n);"isNewRequest"in this.retryPolicy&&(this.retryPolicy.isNewRequest=!0);let s=0;for(;await this.retryPolicy.pauseForRetry(i.status,s,this.logger,i.headers[Et.RETRY_AFTER]);)i=await this.sendNetworkRequestAsyncHelper(e,r,n),s++;return i}async sendGetRequestAsync(e,r){return this.sendNetworkRequestAsync(Rt.GET,e,r)}async sendPostRequestAsync(e,r){return this.sendNetworkRequestAsync(Rt.POST,e,r)}};var $c={MANAGED_IDENTITY_CLIENT_ID_2017:"clientid",MANAGED_IDENTITY_CLIENT_ID:"client_id",MANAGED_IDENTITY_OBJECT_ID:"object_id",MANAGED_IDENTITY_RESOURCE_ID_IMDS:"msi_res_id",MANAGED_IDENTITY_RESOURCE_ID_NON_IMDS:"mi_res_id"},Mn=class{constructor(e,r,n,i,s){this.logger=e,this.nodeStorage=r,this.networkClient=n,this.cryptoProvider=i,this.disableInternalRetries=s}async getServerTokenResponseAsync(e,r,n,i){return this.getServerTokenResponse(e)}getServerTokenResponse(e){let r,n;return e.body.expires_on&&(DK(e.body.expires_on)&&(e.body.expires_on=new Date(e.body.expires_on).getTime()/1e3),n=e.body.expires_on-vt.nowSeconds(),n>2*3600&&(r=n/2)),{status:e.status,access_token:e.body.access_token,expires_in:n,scope:e.body.resource,token_type:e.body.token_type,refresh_in:r,correlation_id:e.body.correlation_id||e.body.correlationId,error:typeof e.body.error=="string"?e.body.error:e.body.error?.code,error_description:e.body.message||(typeof e.body.error=="string"?e.body.error_description:e.body.error?.message),error_codes:e.body.error_codes,timestamp:e.body.timestamp,trace_id:e.body.trace_id}}async acquireTokenWithManagedIdentity(e,r,n,i){let s=this.createRequest(e.resource,r);if(e.revokedTokenSha256Hash&&(this.logger.info(`[Managed Identity] The following claims are present in the request: ${e.claims}`),s.queryParameters[gr.SHA256_TOKEN_TO_REFRESH]=e.revokedTokenSha256Hash),e.clientCapabilities?.length){let u=e.clientCapabilities.toString();this.logger.info(`[Managed Identity] The following client capabilities are present in the request: ${u}`),s.queryParameters[gr.XMS_CC]=u}let a=s.headers;a[Et.CONTENT_TYPE]=R.URL_FORM_CONTENT_TYPE;let o={headers:a};Object.keys(s.bodyParameters).length&&(o.body=s.computeParametersBodyString());let A=this.disableInternalRetries?this.networkClient:new h4(this.networkClient,s.retryPolicy,this.logger),l=vt.nowSeconds(),c;try{s.httpMethod===Rt.POST?c=await A.sendPostRequestAsync(s.computeUri(),o):c=await A.sendGetRequestAsync(s.computeUri(),o)}catch(u){throw u instanceof ge?u:D(at.networkError)}let d=new Ar(r.id,this.nodeStorage,this.cryptoProvider,this.logger,null,null),p=await this.getServerTokenResponseAsync(c,A,s,o);return d.validateTokenResponse(p,i),d.handleServerTokenResponse(p,n,l,e)}getManagedIdentityUserAssignedIdQueryParameterKey(e,r,n){switch(e){case qt.USER_ASSIGNED_CLIENT_ID:return this.logger.info(`[Managed Identity] [API version ${n?"2017+":"2019+"}] Adding user assigned client id to the request.`),n?$c.MANAGED_IDENTITY_CLIENT_ID_2017:$c.MANAGED_IDENTITY_CLIENT_ID;case qt.USER_ASSIGNED_RESOURCE_ID:return this.logger.info("[Managed Identity] Adding user assigned resource id to the request."),r?$c.MANAGED_IDENTITY_RESOURCE_ID_IMDS:$c.MANAGED_IDENTITY_RESOURCE_ID_NON_IMDS;case qt.USER_ASSIGNED_OBJECT_ID:return this.logger.info("[Managed Identity] Adding user assigned object id to the request."),$c.MANAGED_IDENTITY_OBJECT_ID;default:throw lr($A)}}};Mn.getValidatedEnvVariableUrlString=(t,e,r,n)=>{try{return new Ne(e).urlString}catch{throw n.info(`[Managed Identity] ${r} managed identity is unavailable because the '${t}' environment variable is malformed.`),lr(jc[t])}};var f4=class{calculateDelay(e,r){if(!e)return r;let n=Math.round(parseFloat(e)*1e3);return isNaN(n)&&(n=new Date(e).valueOf()-new Date().valueOf()),Math.max(r,n)}};var aNe=3,oNe=1e3,ANe=[fe.NOT_FOUND,fe.REQUEST_TIMEOUT,fe.TOO_MANY_REQUESTS,fe.SERVER_ERROR,fe.SERVICE_UNAVAILABLE,fe.GATEWAY_TIMEOUT],g4=class t{constructor(){this.linearRetryStrategy=new f4}static get DEFAULT_MANAGED_IDENTITY_RETRY_DELAY_MS(){return oNe}async pauseForRetry(e,r,n,i){if(ANe.includes(e)&&rsetTimeout(a,s)),!0}return!1}};var li=class{constructor(e,r,n){this.httpMethod=e,this._baseEndpoint=r,this.headers={},this.bodyParameters={},this.queryParameters={},this.retryPolicy=n||new g4}computeUri(){let e=new Map;this.queryParameters&&J.addExtraQueryParameters(e,this.queryParameters);let r=nn.mapToQueryString(e);return Ne.appendQueryString(this._baseEndpoint,r)}computeParametersBodyString(){let e=new Map;return this.bodyParameters&&J.addExtraQueryParameters(e,this.bodyParameters),nn.mapToQueryString(e)}};var lNe="2019-08-01",X1=class t extends Mn{constructor(e,r,n,i,s,a,o){super(e,r,n,i,s),this.identityEndpoint=a,this.identityHeader=o}static getEnvironmentVariables(){let e=process.env[ce.IDENTITY_ENDPOINT],r=process.env[ce.IDENTITY_HEADER];return[e,r]}static tryCreate(e,r,n,i,s){let[a,o]=t.getEnvironmentVariables();if(!a||!o)return e.info(`[Managed Identity] ${pe.APP_SERVICE} managed identity is unavailable because one or both of the '${ce.IDENTITY_HEADER}' and '${ce.IDENTITY_ENDPOINT}' environment variables are not defined.`),null;let A=t.getValidatedEnvVariableUrlString(ce.IDENTITY_ENDPOINT,a,pe.APP_SERVICE,e);return e.info(`[Managed Identity] Environment variables validation passed for ${pe.APP_SERVICE} managed identity. Endpoint URI: ${A}. Creating ${pe.APP_SERVICE} managed identity.`),new t(e,r,n,i,s,a,o)}createRequest(e,r){let n=new li(Rt.GET,this.identityEndpoint);return n.headers[ai.APP_SERVICE_SECRET_HEADER_NAME]=this.identityHeader,n.queryParameters[gr.API_VERSION]=lNe,n.queryParameters[gr.RESOURCE]=e,r.idType!==qt.SYSTEM_ASSIGNED&&(n.queryParameters[this.getManagedIdentityUserAssignedIdQueryParameterKey(r.idType)]=r.id),n}};var Po=require("fs"),MK=Ce(require("path"),1);var cNe="2019-11-01",kK="http://127.0.0.1:40342/metadata/identity/oauth2/token",PK="N/A: himds executable exists",_K={win32:`${process.env.ProgramData}\\AzureConnectedMachineAgent\\Tokens\\`,linux:"/var/opt/azcmagent/tokens/"},dNe={win32:`${process.env.ProgramFiles}\\AzureConnectedMachineAgent\\himds.exe`,linux:"/opt/azcmagent/bin/himds"},Z1=class t extends Mn{constructor(e,r,n,i,s,a){super(e,r,n,i,s),this.identityEndpoint=a}static getEnvironmentVariables(){let e=process.env[ce.IDENTITY_ENDPOINT],r=process.env[ce.IMDS_ENDPOINT];if(!e||!r){let n=dNe[process.platform];try{(0,Po.accessSync)(n,Po.constants.F_OK|Po.constants.R_OK),e=kK,r=PK}catch{}}return[e,r]}static tryCreate(e,r,n,i,s,a){let[o,A]=t.getEnvironmentVariables();if(!o||!A)return e.info(`[Managed Identity] ${pe.AZURE_ARC} managed identity is unavailable through environment variables because one or both of '${ce.IDENTITY_ENDPOINT}' and '${ce.IMDS_ENDPOINT}' are not defined. ${pe.AZURE_ARC} managed identity is also unavailable through file detection.`),null;if(A===PK)e.info(`[Managed Identity] ${pe.AZURE_ARC} managed identity is available through file detection. Defaulting to known ${pe.AZURE_ARC} endpoint: ${kK}. Creating ${pe.AZURE_ARC} managed identity.`);else{let l=t.getValidatedEnvVariableUrlString(ce.IDENTITY_ENDPOINT,o,pe.AZURE_ARC,e);l.endsWith("/")&&l.slice(0,-1),t.getValidatedEnvVariableUrlString(ce.IMDS_ENDPOINT,A,pe.AZURE_ARC,e),e.info(`[Managed Identity] Environment variables validation passed for ${pe.AZURE_ARC} managed identity. Endpoint URI: ${l}. Creating ${pe.AZURE_ARC} managed identity.`)}if(a.idType!==qt.SYSTEM_ASSIGNED)throw lr(DI);return new t(e,r,n,i,s,o)}createRequest(e){let r=new li(Rt.GET,this.identityEndpoint.replace("localhost","127.0.0.1"));return r.headers[ai.METADATA_HEADER_NAME]="true",r.queryParameters[gr.API_VERSION]=cNe,r.queryParameters[gr.RESOURCE]=e,r}async getServerTokenResponseAsync(e,r,n,i){let s;if(e.status===fe.UNAUTHORIZED){let a=e.headers["www-authenticate"];if(!a)throw lr(_I);if(!a.includes("Basic realm="))throw lr(MI);let o=a.split("Basic realm=")[1];if(!_K.hasOwnProperty(process.platform))throw lr(TI);let A=_K[process.platform],l=MK.default.basename(o);if(!l.endsWith(".key"))throw lr(vI);if(A+l!==o)throw lr(RI);let c;try{c=await(0,Po.statSync)(o).size}catch{throw lr(F1)}if(c>xj)throw lr(NI);let d;try{d=(0,Po.readFileSync)(o,tn.UTF8)}catch{throw lr(F1)}let p=`Basic ${d}`;this.logger.info("[Managed Identity] Adding authorization header to the request."),n.headers[ai.AUTHORIZATION_HEADER_NAME]=p;try{s=await r.sendGetRequestAsync(n.computeUri(),i)}catch(u){throw u instanceof ge?u:D(at.networkError)}}return this.getServerTokenResponse(s||e)}};var eg=class t extends Mn{constructor(e,r,n,i,s,a){super(e,r,n,i,s),this.msiEndpoint=a}static getEnvironmentVariables(){return[process.env[ce.MSI_ENDPOINT]]}static tryCreate(e,r,n,i,s,a){let[o]=t.getEnvironmentVariables();if(!o)return e.info(`[Managed Identity] ${pe.CLOUD_SHELL} managed identity is unavailable because the '${ce.MSI_ENDPOINT} environment variable is not defined.`),null;let A=t.getValidatedEnvVariableUrlString(ce.MSI_ENDPOINT,o,pe.CLOUD_SHELL,e);if(e.info(`[Managed Identity] Environment variable validation passed for ${pe.CLOUD_SHELL} managed identity. Endpoint URI: ${A}. Creating ${pe.CLOUD_SHELL} managed identity.`),a.idType!==qt.SYSTEM_ASSIGNED)throw lr(kI);return new t(e,r,n,i,s,o)}createRequest(e){let r=new li(Rt.POST,this.msiEndpoint);return r.headers[ai.METADATA_HEADER_NAME]="true",r.bodyParameters[gr.RESOURCE]=e,r}};var E4=class{constructor(e,r,n){this.minExponentialBackoff=e,this.maxExponentialBackoff=r,this.exponentialDeltaBackoff=n}calculateDelay(e){return e===0?this.minExponentialBackoff:Math.min(Math.pow(2,e-1)*this.exponentialDeltaBackoff,this.maxExponentialBackoff)}};var pNe=[fe.NOT_FOUND,fe.REQUEST_TIMEOUT,fe.GONE,fe.TOO_MANY_REQUESTS],uNe=3,mNe=7,hNe=1e3,fNe=4e3,gNe=2e3,ENe=10*1e3,y4=class t{constructor(){this.exponentialRetryStrategy=new E4(t.MIN_EXPONENTIAL_BACKOFF_MS,t.MAX_EXPONENTIAL_BACKOFF_MS,t.EXPONENTIAL_DELTA_BACKOFF_MS)}static get MIN_EXPONENTIAL_BACKOFF_MS(){return hNe}static get MAX_EXPONENTIAL_BACKOFF_MS(){return fNe}static get EXPONENTIAL_DELTA_BACKOFF_MS(){return gNe}static get HTTP_STATUS_GONE_RETRY_AFTER_MS(){return ENe}set isNewRequest(e){this._isNewRequest=e}async pauseForRetry(e,r,n){if(this._isNewRequest&&(this._isNewRequest=!1,this.maxRetries=e===fe.GONE?mNe:uNe),(pNe.includes(e)||e>=fe.SERVER_ERROR_RANGE_START&&e<=fe.SERVER_ERROR_RANGE_END&&rsetTimeout(s,i)),!0}return!1}};var OK="/metadata/identity/oauth2/token",yNe=`http://169.254.169.254${OK}`,CNe="2018-02-01",C4=class t extends Mn{constructor(e,r,n,i,s,a){super(e,r,n,i,s),this.identityEndpoint=a}static tryCreate(e,r,n,i,s){let a;return process.env[ce.AZURE_POD_IDENTITY_AUTHORITY_HOST]?(e.info(`[Managed Identity] Environment variable ${ce.AZURE_POD_IDENTITY_AUTHORITY_HOST} for ${pe.IMDS} returned endpoint: ${process.env[ce.AZURE_POD_IDENTITY_AUTHORITY_HOST]}`),a=t.getValidatedEnvVariableUrlString(ce.AZURE_POD_IDENTITY_AUTHORITY_HOST,`${process.env[ce.AZURE_POD_IDENTITY_AUTHORITY_HOST]}${OK}`,pe.IMDS,e)):(e.info(`[Managed Identity] Unable to find ${ce.AZURE_POD_IDENTITY_AUTHORITY_HOST} environment variable for ${pe.IMDS}, using the default endpoint.`),a=yNe),new t(e,r,n,i,s,a)}createRequest(e,r){let n=new li(Rt.GET,this.identityEndpoint);return n.headers[ai.METADATA_HEADER_NAME]="true",n.queryParameters[gr.API_VERSION]=CNe,n.queryParameters[gr.RESOURCE]=e,r.idType!==qt.SYSTEM_ASSIGNED&&(n.queryParameters[this.getManagedIdentityUserAssignedIdQueryParameterKey(r.idType,!0)]=r.id),n.retryPolicy=new y4,n}};var INe="2019-07-01-preview",tg=class t extends Mn{constructor(e,r,n,i,s,a,o){super(e,r,n,i,s),this.identityEndpoint=a,this.identityHeader=o}static getEnvironmentVariables(){let e=process.env[ce.IDENTITY_ENDPOINT],r=process.env[ce.IDENTITY_HEADER],n=process.env[ce.IDENTITY_SERVER_THUMBPRINT];return[e,r,n]}static tryCreate(e,r,n,i,s,a){let[o,A,l]=t.getEnvironmentVariables();if(!o||!A||!l)return e.info(`[Managed Identity] ${pe.SERVICE_FABRIC} managed identity is unavailable because one or all of the '${ce.IDENTITY_HEADER}', '${ce.IDENTITY_ENDPOINT}' or '${ce.IDENTITY_SERVER_THUMBPRINT}' environment variables are not defined.`),null;let c=t.getValidatedEnvVariableUrlString(ce.IDENTITY_ENDPOINT,o,pe.SERVICE_FABRIC,e);return e.info(`[Managed Identity] Environment variables validation passed for ${pe.SERVICE_FABRIC} managed identity. Endpoint URI: ${c}. Creating ${pe.SERVICE_FABRIC} managed identity.`),a.idType!==qt.SYSTEM_ASSIGNED&&e.warning(`[Managed Identity] ${pe.SERVICE_FABRIC} user assigned managed identity is configured in the cluster, not during runtime. See also: https://learn.microsoft.com/en-us/azure/service-fabric/configure-existing-cluster-enable-managed-identity-token-service.`),new t(e,r,n,i,s,o,A)}createRequest(e,r){let n=new li(Rt.GET,this.identityEndpoint);return n.headers[ai.ML_AND_SF_SECRET_HEADER_NAME]=this.identityHeader,n.queryParameters[gr.API_VERSION]=INe,n.queryParameters[gr.RESOURCE]=e,r.idType!==qt.SYSTEM_ASSIGNED&&(n.queryParameters[this.getManagedIdentityUserAssignedIdQueryParameterKey(r.idType)]=r.id),n}};var BNe="2017-09-01",QNe=`Only client id is supported for user-assigned managed identity in ${pe.MACHINE_LEARNING}.`,rg=class t extends Mn{constructor(e,r,n,i,s,a,o){super(e,r,n,i,s),this.msiEndpoint=a,this.secret=o}static getEnvironmentVariables(){let e=process.env[ce.MSI_ENDPOINT],r=process.env[ce.MSI_SECRET];return[e,r]}static tryCreate(e,r,n,i,s){let[a,o]=t.getEnvironmentVariables();if(!a||!o)return e.info(`[Managed Identity] ${pe.MACHINE_LEARNING} managed identity is unavailable because one or both of the '${ce.MSI_ENDPOINT}' and '${ce.MSI_SECRET}' environment variables are not defined.`),null;let A=t.getValidatedEnvVariableUrlString(ce.MSI_ENDPOINT,a,pe.MACHINE_LEARNING,e);return e.info(`[Managed Identity] Environment variables validation passed for ${pe.MACHINE_LEARNING} managed identity. Endpoint URI: ${A}. Creating ${pe.MACHINE_LEARNING} managed identity.`),new t(e,r,n,i,s,a,o)}createRequest(e,r){let n=new li(Rt.GET,this.msiEndpoint);if(n.headers[ai.METADATA_HEADER_NAME]="true",n.headers[ai.ML_AND_SF_SECRET_HEADER_NAME]=this.secret,n.queryParameters[gr.API_VERSION]=BNe,n.queryParameters[gr.RESOURCE]=e,r.idType===qt.SYSTEM_ASSIGNED)n.queryParameters[$c.MANAGED_IDENTITY_CLIENT_ID_2017]=process.env[ce.DEFAULT_IDENTITY_CLIENT_ID];else if(r.idType===qt.USER_ASSIGNED_CLIENT_ID)n.queryParameters[this.getManagedIdentityUserAssignedIdQueryParameterKey(r.idType,!1,!0)]=r.id;else throw new Error(QNe);return n}};var ng=class t{constructor(e,r,n,i,s){this.logger=e,this.nodeStorage=r,this.networkClient=n,this.cryptoProvider=i,this.disableInternalRetries=s}async sendManagedIdentityTokenRequest(e,r,n,i){return t.identitySource||(t.identitySource=this.selectManagedIdentitySource(this.logger,this.nodeStorage,this.networkClient,this.cryptoProvider,this.disableInternalRetries,r)),t.identitySource.acquireTokenWithManagedIdentity(e,r,n,i)}allEnvironmentVariablesAreDefined(e){return Object.values(e).every(r=>r!==void 0)}getManagedIdentitySource(){return t.sourceName=this.allEnvironmentVariablesAreDefined(tg.getEnvironmentVariables())?pe.SERVICE_FABRIC:this.allEnvironmentVariablesAreDefined(X1.getEnvironmentVariables())?pe.APP_SERVICE:this.allEnvironmentVariablesAreDefined(rg.getEnvironmentVariables())?pe.MACHINE_LEARNING:this.allEnvironmentVariablesAreDefined(eg.getEnvironmentVariables())?pe.CLOUD_SHELL:this.allEnvironmentVariablesAreDefined(Z1.getEnvironmentVariables())?pe.AZURE_ARC:pe.DEFAULT_TO_IMDS,t.sourceName}selectManagedIdentitySource(e,r,n,i,s,a){let o=tg.tryCreate(e,r,n,i,s,a)||X1.tryCreate(e,r,n,i,s)||rg.tryCreate(e,r,n,i,s)||eg.tryCreate(e,r,n,i,s,a)||Z1.tryCreate(e,r,n,i,s,a)||C4.tryCreate(e,r,n,i,s);if(!o)throw lr(PI);return o}};var wNe=[pe.SERVICE_FABRIC],ig=class t{constructor(e){this.config=Yj(e||{}),this.logger=new Ni(this.config.system.loggerOptions,u4,Us);let r={canonicalAuthority:R.DEFAULT_AUTHORITY};t.nodeStorage||(t.nodeStorage=new XA(this.logger,this.config.managedIdentityId.id,_u,r)),this.networkClient=this.config.system.networkClient,this.cryptoProvider=new ka;let n={protocolMode:mn.AAD,knownAuthorities:[o7],cloudDiscoveryMetadata:"",authorityMetadata:""};this.fakeAuthority=new Ls(o7,this.networkClient,t.nodeStorage,n,this.logger,this.cryptoProvider.createNewGuid(),void 0,!0),this.fakeClientCredentialClient=new rl({authOptions:{clientId:this.config.managedIdentityId.id,authority:this.fakeAuthority}}),this.managedIdentityClient=new ng(this.logger,t.nodeStorage,this.networkClient,this.cryptoProvider,this.config.disableInternalRetries),this.hashUtils=new KA}async acquireToken(e){if(!e.resource)throw He(Lu.urlEmptyError);let r={forceRefresh:e.forceRefresh,resource:e.resource.replace("/.default",""),scopes:[e.resource.replace("/.default","")],authority:this.fakeAuthority.canonicalAuthority,correlationId:this.cryptoProvider.createNewGuid(),claims:e.claims,clientCapabilities:this.config.clientCapabilities};if(r.forceRefresh)return this.acquireTokenFromManagedIdentity(r,this.config.managedIdentityId,this.fakeAuthority);let[n,i]=await this.fakeClientCredentialClient.getCachedAuthenticationResult(r,this.config,this.cryptoProvider,this.fakeAuthority,t.nodeStorage);if(r.claims){let s=this.managedIdentityClient.getManagedIdentitySource();if(n&&wNe.includes(s)){let a=this.hashUtils.sha256(n.accessToken).toString(tn.HEX);r.revokedTokenSha256Hash=a}return this.acquireTokenFromManagedIdentity(r,this.config.managedIdentityId,this.fakeAuthority)}return n?(i===dt.PROACTIVELY_REFRESHED&&(this.logger.info("ClientCredentialClient:getCachedAuthenticationResult - Cached access token's refreshOn property has been exceeded'. It's not expired, but must be refreshed."),await this.acquireTokenFromManagedIdentity(r,this.config.managedIdentityId,this.fakeAuthority,!0)),n):this.acquireTokenFromManagedIdentity(r,this.config.managedIdentityId,this.fakeAuthority)}async acquireTokenFromManagedIdentity(e,r,n,i){return this.managedIdentityClient.sendManagedIdentityTokenRequest(e,r,n,i)}getManagedIdentitySource(){return ng.sourceName||this.managedIdentityClient.getManagedIdentitySource()}};var I4=class{constructor(e,r){this.client=e,this.partitionManager=r}async beforeCacheAccess(e){let r=await this.partitionManager.getKey(),n=await this.client.get(r);e.tokenCache.deserialize(n)}async afterCacheAccess(e){if(e.cacheHasChanged){let r=e.tokenCache.getKVStore(),n=Object.values(r).filter(s=>rn.isAccountEntity(s)),i;if(n.length>0){let s=n[0];i=await this.partitionManager.extractKey(s)}else i=await this.partitionManager.getKey();await this.client.set(i,e.tokenCache.serialize())}}};var sg=class extends Error{constructor(e){super(e),this.name="AbortError"}};var ag=Ie("IdentityUtils"),SNe="1.0";function sm(t,e,r){let n=i=>(ag.getToken.info(i),new wa({scopes:Array.isArray(t)?t:[t],getTokenOptions:r,message:i}));if(!e)throw n("No response");if(!e.expiresOn)throw n('Response had no "expiresOn" property.');if(!e.accessToken)throw n('Response had no "accessToken" property.')}function eR(t){let e=t?.authorityHost;return!e&&la&&(e=process.env.AZURE_AUTHORITY_HOST),e??Mf}function tR(t,e){return e||(e=Mf),new RegExp(`${t}/?$`).test(e)?e:e.endsWith("/")?e+t:`${e}/${t}`}function xK(t,e,r){return t==="adfs"&&e||r?[e]:[]}var rR=(t,e=af?"Node":"Browser")=>(r,n,i)=>{if(!i)switch(r){case _i.LogLevel.Error:t.info(`MSAL ${e} V2 error: ${n}`);return;case _i.LogLevel.Info:t.info(`MSAL ${e} V2 info message: ${n}`);return;case _i.LogLevel.Verbose:t.info(`MSAL ${e} V2 verbose message: ${n}`);return;case _i.LogLevel.Warning:t.info(`MSAL ${e} V2 warning: ${n}`);return}};function nR(t){switch(t){case"error":return _i.LogLevel.Error;case"info":return _i.LogLevel.Info;case"verbose":return _i.LogLevel.Verbose;case"warning":return _i.LogLevel.Warning;default:return _i.LogLevel.Info}}function Kc(t,e,r){if(e.name==="AuthError"||e.name==="ClientAuthError"||e.name==="BrowserAuthError"){let n=e;switch(n.errorCode){case"endpoints_resolution_error":return ag.info(st(t,e.message)),new ke(e.message);case"device_code_polling_cancelled":return new sg("The authentication has been aborted by the caller.");case"consent_required":case"interaction_required":case"login_required":ag.info(st(t,`Authentication returned errorCode ${n.errorCode}`));break;default:ag.info(st(t,`Failed to acquire token: ${e.message}`));break}}return e.name==="ClientConfigurationError"||e.name==="BrowserConfigurationAuthError"||e.name==="AbortError"||e.name==="AuthenticationError"?e:e.name==="NativeAuthError"?(ag.info(st(t,`Error from the native broker: ${e.message} with status code: ${e.statusCode}`)),e):new wa({scopes:t,getTokenOptions:r,message:e.message})}function LK(t){return{localAccountId:t.homeAccountId,environment:t.authority,username:t.username,homeAccountId:t.homeAccountId,tenantId:t.tenantId}}function FK(t,e){var r;return{authority:(r=e.environment)!==null&&r!==void 0?r:$J,homeAccountId:e.homeAccountId,tenantId:e.tenantId||WJ,username:e.username,clientId:t,version:SNe}}var Itt=1e3*64;var vNe="ManagedIdentityCredential - IMDS",Rtt=Ie(vNe);var iR;(function(t){t.AutoDiscoverRegion="AutoDiscoverRegion",t.USWest="westus",t.USWest2="westus2",t.USCentral="centralus",t.USEast="eastus",t.USEast2="eastus2",t.USNorthCentral="northcentralus",t.USSouthCentral="southcentralus",t.USWestCentral="westcentralus",t.CanadaCentral="canadacentral",t.CanadaEast="canadaeast",t.BrazilSouth="brazilsouth",t.EuropeNorth="northeurope",t.EuropeWest="westeurope",t.UKSouth="uksouth",t.UKWest="ukwest",t.FranceCentral="francecentral",t.FranceSouth="francesouth",t.SwitzerlandNorth="switzerlandnorth",t.SwitzerlandWest="switzerlandwest",t.GermanyNorth="germanynorth",t.GermanyWestCentral="germanywestcentral",t.NorwayWest="norwaywest",t.NorwayEast="norwayeast",t.AsiaEast="eastasia",t.AsiaSouthEast="southeastasia",t.JapanEast="japaneast",t.JapanWest="japanwest",t.AustraliaEast="australiaeast",t.AustraliaSouthEast="australiasoutheast",t.AustraliaCentral="australiacentral",t.AustraliaCentral2="australiacentral2",t.IndiaCentral="centralindia",t.IndiaSouth="southindia",t.IndiaWest="westindia",t.KoreaSouth="koreasouth",t.KoreaCentral="koreacentral",t.UAECentral="uaecentral",t.UAENorth="uaenorth",t.SouthAfricaNorth="southafricanorth",t.SouthAfricaWest="southafricawest",t.ChinaNorth="chinanorth",t.ChinaEast="chinaeast",t.ChinaNorth2="chinanorth2",t.ChinaEast2="chinaeast2",t.GermanyCentral="germanycentral",t.GermanyNorthEast="germanynortheast",t.GovernmentUSVirginia="usgovvirginia",t.GovernmentUSIowa="usgoviowa",t.GovernmentUSArizona="usgovarizona",t.GovernmentUSTexas="usgovtexas",t.GovernmentUSDodEast="usdodeast",t.GovernmentUSDodCentral="usdodcentral"})(iR||(iR={}));function B4(t){var e,r;let n=t;return n===void 0&&((r=(e=globalThis.process)===null||e===void 0?void 0:e.env)===null||r===void 0?void 0:r.AZURE_REGIONAL_AUTHORITY_NAME)!==void 0&&(n=process.env.AZURE_REGIONAL_AUTHORITY_NAME),n===iR.AutoDiscoverRegion?"AUTO_DISCOVER":n}var ci=Ie("MsalClient");function VNe(t,e,r={}){var n,i,s;let a=zC((n=r.logger)!==null&&n!==void 0?n:ci,e,t),o=tR(a,eR(r)),A=new ic(Object.assign(Object.assign({},r.tokenCredentialOptions),{authorityHost:o,loggingOptions:r.loggingOptions}));return{auth:{clientId:t,authority:o,knownAuthorities:xK(a,o,r.disableInstanceDiscovery)},system:{networkClient:A,loggerOptions:{loggerCallback:rR((i=r.logger)!==null&&i!==void 0?i:ci),logLevel:nR(w5()),piiLoggingEnabled:(s=r.loggingOptions)===null||s===void 0?void 0:s.enableUnsafeSupportLogging}}}}function qs(t,e,r={}){var n;let i={msalConfig:VNe(t,e,r),cachedAccount:r.authenticationRecord?LK(r.authenticationRecord):null,pluginConfiguration:rj.generatePluginConfiguration(r),logger:(n=r.logger)!==null&&n!==void 0?n:ci},s=new Map;async function a(C={}){let w=C.enableCae?"CAE":"default",b=s.get(w);if(b)return i.logger.getToken.info("Existing PublicClientApplication found in cache, returning it."),b;i.logger.getToken.info(`Creating new PublicClientApplication with CAE ${C.enableCae?"enabled":"disabled"}.`);let v=C.enableCae?i.pluginConfiguration.cache.cachePluginCae:i.pluginConfiguration.cache.cachePlugin;return i.msalConfig.auth.clientCapabilities=C.enableCae?["cp1"]:void 0,b=new rm(Object.assign(Object.assign({},i.msalConfig),{broker:{nativeBrokerPlugin:i.pluginConfiguration.broker.nativeBrokerPlugin},cache:{cachePlugin:await v}})),s.set(w,b),b}let o=new Map;async function A(C={}){let w=C.enableCae?"CAE":"default",b=o.get(w);if(b)return i.logger.getToken.info("Existing ConfidentialClientApplication found in cache, returning it."),b;i.logger.getToken.info(`Creating new ConfidentialClientApplication with CAE ${C.enableCae?"enabled":"disabled"}.`);let v=C.enableCae?i.pluginConfiguration.cache.cachePluginCae:i.pluginConfiguration.cache.cachePlugin;return i.msalConfig.auth.clientCapabilities=C.enableCae?["cp1"]:void 0,b=new im(Object.assign(Object.assign({},i.msalConfig),{broker:{nativeBrokerPlugin:i.pluginConfiguration.broker.nativeBrokerPlugin},cache:{cachePlugin:await v}})),o.set(w,b),b}async function l(C,w,b={}){if(i.cachedAccount===null)throw i.logger.getToken.info("No cached account found in local state."),new wa({scopes:w});b.claims&&(i.cachedClaims=b.claims);let v={account:i.cachedAccount,scopes:w,claims:i.cachedClaims};i.pluginConfiguration.broker.isEnabled&&(v.tokenQueryParameters||(v.tokenQueryParameters={}),i.pluginConfiguration.broker.enableMsaPassthrough&&(v.tokenQueryParameters.msal_request_type="consumer_passthrough")),b.proofOfPossessionOptions&&(v.shrNonce=b.proofOfPossessionOptions.nonce,v.authenticationScheme="pop",v.resourceRequestMethod=b.proofOfPossessionOptions.resourceRequestMethod,v.resourceRequestUri=b.proofOfPossessionOptions.resourceRequestUrl),i.logger.getToken.info("Attempting to acquire token silently");try{return await C.acquireTokenSilent(v)}catch(q){throw Kc(w,q,b)}}function c(C){return C?.tenantId?tR(C.tenantId,eR(r)):i.msalConfig.auth.authority}async function d(C,w,b,v){var q,L;let V=null;try{V=await l(C,w,b)}catch(O){if(O.name!=="AuthenticationRequiredError")throw O;if(b.disableAutomaticAuthentication)throw new wa({scopes:w,getTokenOptions:b,message:"Automatic authentication has been disabled. You may call the authentication() method."})}if(V===null)try{V=await v()}catch(O){throw Kc(w,O,b)}return sm(w,V,b),i.cachedAccount=(q=V?.account)!==null&&q!==void 0?q:null,i.logger.getToken.info(Zr(w)),{token:V.accessToken,expiresOnTimestamp:V.expiresOn.getTime(),refreshAfterTimestamp:(L=V.refreshOn)===null||L===void 0?void 0:L.getTime(),tokenType:V.tokenType}}async function p(C,w,b={}){var v;i.logger.getToken.info("Attempting to acquire token using client secret"),i.msalConfig.auth.clientSecret=w;let q=await A(b);try{let L=await q.acquireTokenByClientCredential({scopes:C,authority:c(b),azureRegion:B4(),claims:b?.claims});return sm(C,L,b),i.logger.getToken.info(Zr(C)),{token:L.accessToken,expiresOnTimestamp:L.expiresOn.getTime(),refreshAfterTimestamp:(v=L.refreshOn)===null||v===void 0?void 0:v.getTime(),tokenType:L.tokenType}}catch(L){throw Kc(C,L,b)}}async function u(C,w,b={}){var v;i.logger.getToken.info("Attempting to acquire token using client assertion"),i.msalConfig.auth.clientAssertion=w;let q=await A(b);try{let L=await q.acquireTokenByClientCredential({scopes:C,authority:c(b),azureRegion:B4(),claims:b?.claims,clientAssertion:w});return sm(C,L,b),i.logger.getToken.info(Zr(C)),{token:L.accessToken,expiresOnTimestamp:L.expiresOn.getTime(),refreshAfterTimestamp:(v=L.refreshOn)===null||v===void 0?void 0:v.getTime(),tokenType:L.tokenType}}catch(L){throw Kc(C,L,b)}}async function m(C,w,b={}){var v;i.logger.getToken.info("Attempting to acquire token using client certificate"),i.msalConfig.auth.clientCertificate=w;let q=await A(b);try{let L=await q.acquireTokenByClientCredential({scopes:C,authority:c(b),azureRegion:B4(),claims:b?.claims});return sm(C,L,b),i.logger.getToken.info(Zr(C)),{token:L.accessToken,expiresOnTimestamp:L.expiresOn.getTime(),refreshAfterTimestamp:(v=L.refreshOn)===null||v===void 0?void 0:v.getTime(),tokenType:L.tokenType}}catch(L){throw Kc(C,L,b)}}async function h(C,w,b={}){i.logger.getToken.info("Attempting to acquire token using device code");let v=await a(b);return d(v,C,b,()=>{var q,L;let V={scopes:C,cancel:(L=(q=b?.abortSignal)===null||q===void 0?void 0:q.aborted)!==null&&L!==void 0?L:!1,deviceCodeCallback:w,authority:c(b),claims:b?.claims},O=v.acquireTokenByDeviceCode(V);return b.abortSignal&&b.abortSignal.addEventListener("abort",()=>{V.cancel=!0}),O})}async function f(C,w,b,v={}){i.logger.getToken.info("Attempting to acquire token using username and password");let q=await a(v);return d(q,C,v,()=>{let L={scopes:C,username:w,password:b,authority:c(v),claims:v?.claims};return q.acquireTokenByUsernamePassword(L)})}function E(){if(i.cachedAccount)return FK(t,i.cachedAccount)}async function y(C,w,b,v,q={}){i.logger.getToken.info("Attempting to acquire token using authorization code");let L;return v?(i.msalConfig.auth.clientSecret=v,L=await A(q)):L=await a(q),d(L,C,q,()=>L.acquireTokenByCode({scopes:C,redirectUri:w,code:b,authority:c(q),claims:q?.claims}))}async function B(C,w,b,v={}){var q;ci.getToken.info("Attempting to acquire token on behalf of another user"),typeof b=="string"?(ci.getToken.info("Using client secret for on behalf of flow"),i.msalConfig.auth.clientSecret=b):typeof b=="function"?(ci.getToken.info("Using client assertion callback for on behalf of flow"),i.msalConfig.auth.clientAssertion=b):(ci.getToken.info("Using client certificate for on behalf of flow"),i.msalConfig.auth.clientCertificate=b);let L=await A(v);try{let V=await L.acquireTokenOnBehalfOf({scopes:C,authority:c(v),claims:v.claims,oboAssertion:w});return sm(C,V,v),ci.getToken.info(Zr(C)),{token:V.accessToken,expiresOnTimestamp:V.expiresOn.getTime(),refreshAfterTimestamp:(q=V.refreshOn)===null||q===void 0?void 0:q.getTime(),tokenType:V.tokenType}}catch(V){throw Kc(C,V,v)}}async function Q(C,w={}){ci.getToken.info("Attempting to acquire token interactively");let b=await a(w);async function v(L){var V;ci.verbose("Authentication will resume through the broker");let O=q();i.pluginConfiguration.broker.parentWindowHandle?O.windowHandle=Buffer.from(i.pluginConfiguration.broker.parentWindowHandle):ci.warning("Parent window handle is not specified for the broker. This may cause unexpected behavior. Please provide the parentWindowHandle."),i.pluginConfiguration.broker.enableMsaPassthrough&&(((V=O.tokenQueryParameters)!==null&&V!==void 0?V:O.tokenQueryParameters={}).msal_request_type="consumer_passthrough"),L?(O.prompt="none",ci.verbose("Attempting broker authentication using the default broker account")):ci.verbose("Attempting broker authentication without the default broker account"),w.proofOfPossessionOptions&&(O.shrNonce=w.proofOfPossessionOptions.nonce,O.authenticationScheme="pop",O.resourceRequestMethod=w.proofOfPossessionOptions.resourceRequestMethod,O.resourceRequestUri=w.proofOfPossessionOptions.resourceRequestUrl);try{return await b.acquireTokenInteractive(O)}catch(ye){if(ci.verbose(`Failed to authenticate through the broker: ${ye.message}`),L)return v(!1);throw ye}}function q(){var L,V;return{openBrowser:async O=>{await(await Promise.resolve().then(()=>(fX(),hX))).default(O,{wait:!0,newInstance:!0})},scopes:C,authority:c(w),claims:w?.claims,loginHint:w?.loginHint,errorTemplate:(L=w?.browserCustomizationOptions)===null||L===void 0?void 0:L.errorMessage,successTemplate:(V=w?.browserCustomizationOptions)===null||V===void 0?void 0:V.successMessage,prompt:w?.loginHint?"login":"select_account"}}return d(b,C,w,async()=>{var L;let V=q();return i.pluginConfiguration.broker.isEnabled?v((L=i.pluginConfiguration.broker.useDefaultBrokerAccount)!==null&&L!==void 0?L:!1):(w.proofOfPossessionOptions&&(V.shrNonce=w.proofOfPossessionOptions.nonce,V.authenticationScheme="pop",V.resourceRequestMethod=w.proofOfPossessionOptions.resourceRequestMethod,V.resourceRequestUri=w.proofOfPossessionOptions.resourceRequestUrl),b.acquireTokenInteractive(V))})}return{getActiveAccount:E,getTokenByClientSecret:p,getTokenByClientAssertion:u,getTokenByClientCertificate:m,getTokenByDeviceCode:h,getTokenByUsernamePassword:f,getTokenByAuthorizationCode:y,getTokenOnBehalfOf:B,getTokenByInteractiveRequest:Q}}var crt=Ie("ClientAssertionCredential");var GNe="WorkloadIdentityCredential";var frt=Ie(GNe);var HNe="ManagedIdentityCredential - Token Exchange",Crt=Ie(HNe);var xrt=Ie("ManagedIdentityCredential");function nl(t){return Array.isArray(t)?t:[t]}function cg(t,e){if(!t.match(/^[0-9a-zA-Z-_.:/]+$/)){let r=new Error("Invalid scope was specified by the user or calling client");throw e.getToken.info(st(t,r)),r}}function S4(t){return t.replace(/\/.default$/,"")}var yX=Ce(require("child_process"),1);function yR(t,e){if(!e.match(/^[0-9a-zA-Z-._ ]+$/)){let r=new Error(`Subscription '${e}' contains invalid characters. If this is the name of a subscription, use its ID instead. You can locate your subscription by following the instructions listed here: https://learn.microsoft.com/azure/azure-portal/get-subscription-tenant-id`);throw t.info(st("",r)),r}}var ms=Ie("AzureCliCredential"),CX={getSafeWorkingDir(){if(process.platform==="win32"){let t=process.env.SystemRoot||process.env.SYSTEMROOT;return t||(ms.getToken.warning("The SystemRoot environment variable is not set. This may cause issues when using the Azure CLI credential."),t="C:\\Windows"),t}else return"/bin"},async getAzureCliAccessToken(t,e,r,n){let i=[],s=[];return e&&(i=["--tenant",e]),r&&(s=["--subscription",`"${r}"`]),new Promise((a,o)=>{try{yX.default.execFile("az",["account","get-access-token","--output","json","--resource",t,...i,...s],{cwd:CX.getSafeWorkingDir(),shell:!0,timeout:n},(A,l,c)=>{a({stdout:l,stderr:c,error:A})})}catch(A){o(A)}})}},Am=class{constructor(e){e?.tenantId&&(ri(ms,e?.tenantId),this.tenantId=e?.tenantId),e?.subscription&&(yR(ms,e?.subscription),this.subscription=e?.subscription),this.additionallyAllowedTenantIds=en(e?.additionallyAllowedTenants),this.timeout=e?.processTimeoutInMs}async getToken(e,r={}){let n=Lr(this.tenantId,r,this.additionallyAllowedTenantIds);n&&ri(ms,n),this.subscription&&yR(ms,this.subscription);let i=typeof e=="string"?e:e[0];return ms.getToken.info(`Using the scope ${i}`),kt.withSpan(`${this.constructor.name}.getToken`,r,async()=>{var s,a,o,A;try{cg(i,ms);let l=S4(i),c=await CX.getAzureCliAccessToken(l,n,this.subscription,this.timeout),d=(s=c.stderr)===null||s===void 0?void 0:s.match("(.*)az login --scope(.*)"),p=((a=c.stderr)===null||a===void 0?void 0:a.match("(.*)az login(.*)"))&&!d;if(((o=c.stderr)===null||o===void 0?void 0:o.match("az:(.*)not found"))||((A=c.stderr)===null||A===void 0?void 0:A.startsWith("'az' is not recognized"))){let m=new ke("Azure CLI could not be found. Please visit https://aka.ms/azure-cli for installation instructions and then, once installed, authenticate to your Azure account using 'az login'.");throw ms.getToken.info(st(e,m)),m}if(p){let m=new ke("Please run 'az login' from a command prompt to authenticate before using this credential.");throw ms.getToken.info(st(e,m)),m}try{let m=c.stdout,h=this.parseRawResponse(m);return ms.getToken.info(Zr(e)),h}catch(m){throw c.stderr?new ke(c.stderr):m}}catch(l){let c=l.name==="CredentialUnavailableError"?l:new ke(l.message||"Unknown error while trying to retrieve the access token");throw ms.getToken.info(st(e,c)),c}})}parseRawResponse(e){let r=JSON.parse(e),n=r.accessToken,i=Number.parseInt(r.expires_on,10)*1e3;if(!isNaN(i))return ms.getToken.info("expires_on is available and is valid, using it"),{token:n,expiresOnTimestamp:i,tokenType:"Bearer"};if(i=new Date(r.expiresOn).getTime(),isNaN(i))throw new ke(`Unexpected response from Azure CLI when getting token. Expected "expiresOn" to be a RFC3339 date string. Got: "${r.expiresOn}"`);return{token:n,expiresOnTimestamp:i,tokenType:"Bearer"}}};var tnt=Ie("AzureDeveloperCliCredential");var IX=Ce(require("child_process"),1),BX={execFile(t,e,r){return new Promise((n,i)=>{IX.execFile(t,e,r,(s,a,o)=>{Buffer.isBuffer(a)&&(a=a.toString("utf8")),Buffer.isBuffer(o)&&(o=o.toString("utf8")),o||s?i(o?new Error(o):s):n(a)})})}};var _o=Ie("AzurePowerShellCredential"),wX=process.platform==="win32";function SX(t){return wX?`${t}.exe`:t}async function QX(t,e){let r=[];for(let n of t){let[i,...s]=n,a=await BX.execFile(i,s,{encoding:"utf8",timeout:e});r.push(a)}return r}var bX={login:"Run Connect-AzAccount to login",installed:"The specified module 'Az.Accounts' with version '2.2.0' was not loaded because no valid module file was found in any module directory"},CR={login:"Please run 'Connect-AzAccount' from PowerShell to authenticate before using this credential.",installed:`The 'Az.Account' module >= 2.2.0 is not installed. Install the Azure Az PowerShell module with: "Install-Module -Name Az -Scope CurrentUser -Repository PSGallery -Force".`,troubleshoot:"To troubleshoot, visit https://aka.ms/azsdk/js/identity/powershellcredential/troubleshoot."},YNe=t=>t.message.match(`(.*)${bX.login}(.*)`),JNe=t=>t.message.match(bX.installed),IR=[SX("pwsh")];wX&&IR.push(SX("powershell"));var lm=class{constructor(e){e?.tenantId&&(ri(_o,e?.tenantId),this.tenantId=e?.tenantId),this.additionallyAllowedTenantIds=en(e?.additionallyAllowedTenants),this.timeout=e?.processTimeoutInMs}async getAzurePowerShellAccessToken(e,r,n){for(let i of[...IR]){try{await QX([[i,"/?"]],n)}catch{IR.shift();continue}let a=(await QX([[i,"-NoProfile","-NonInteractive","-Command",` - $tenantId = "${r??""}" - $m = Import-Module Az.Accounts -MinimumVersion 2.2.0 -PassThru - $useSecureString = $m.Version -ge [version]'2.17.0' -and $m.Version -lt [version]'5.0.0' - - $params = @{ - ResourceUrl = "${e}" - } - - if ($tenantId.Length -gt 0) { - $params["TenantId"] = $tenantId - } - - if ($useSecureString) { - $params["AsSecureString"] = $true - } - - $token = Get-AzAccessToken @params - - $result = New-Object -TypeName PSObject - $result | Add-Member -MemberType NoteProperty -Name ExpiresOn -Value $token.ExpiresOn - - if ($token.Token -is [System.Security.SecureString]) { - if ($PSVersionTable.PSVersion.Major -lt 7) { - $ssPtr = [System.Runtime.InteropServices.Marshal]::SecureStringToBSTR($token.Token) - try { - $result | Add-Member -MemberType NoteProperty -Name Token -Value ([System.Runtime.InteropServices.Marshal]::PtrToStringBSTR($ssPtr)) - } - finally { - [System.Runtime.InteropServices.Marshal]::ZeroFreeBSTR($ssPtr) - } - } - else { - $result | Add-Member -MemberType NoteProperty -Name Token -Value ($token.Token | ConvertFrom-SecureString -AsPlainText) - } - } - else { - $result | Add-Member -MemberType NoteProperty -Name Token -Value $token.Token - } - - Write-Output (ConvertTo-Json $result) - `]]))[0];return jNe(a)}throw new Error("Unable to execute PowerShell. Ensure that it is installed in your system")}async getToken(e,r={}){return kt.withSpan(`${this.constructor.name}.getToken`,r,async()=>{let n=Lr(this.tenantId,r,this.additionallyAllowedTenantIds),i=typeof e=="string"?e:e[0];n&&ri(_o,n);try{cg(i,_o),_o.getToken.info(`Using the scope ${i}`);let s=S4(i),a=await this.getAzurePowerShellAccessToken(s,n,this.timeout);return _o.getToken.info(Zr(e)),{token:a.Token,expiresOnTimestamp:new Date(a.ExpiresOn).getTime(),tokenType:"Bearer"}}catch(s){if(JNe(s)){let o=new ke(CR.installed);throw _o.getToken.info(st(i,o)),o}else if(YNe(s)){let o=new ke(CR.login);throw _o.getToken.info(st(i,o)),o}let a=new ke(`${s}. ${CR.troubleshoot}`);throw _o.getToken.info(st(i,a)),a}})}};async function jNe(t){let e=/{[^{}]*}/g,r=t.match(e),n=t;if(r)try{for(let i of r)try{let s=JSON.parse(i);if(s?.Token)return n=n.replace(i,""),n&&_o.getToken.warning(n),s}catch{continue}}catch{throw new Error(`Unable to parse the output of PowerShell. Received output: ${t}`)}throw new Error(`No access token found in the output. Received output: ${t}`)}var BR=Ie("ChainedTokenCredential"),cm=class{constructor(...e){this._sources=[],this._sources=e}async getToken(e,r={}){let{token:n}=await this.getTokenInternal(e,r);return n}async getTokenInternal(e,r={}){let n=null,i,s=[];return kt.withSpan("ChainedTokenCredential.getToken",r,async a=>{for(let o=0;o0){let o=new Of(s,"ChainedTokenCredential authentication failed.");throw BR.getToken.info(st(e,o)),o}if(BR.getToken.info(`Result for ${i.constructor.name}: ${Zr(e)}`),n===null)throw new ke("Failed to retrieve a valid token");return{token:n,successfulCredential:i}})}};var pg=require("node:crypto");var RX=require("node:fs/promises");var dg="ClientCertificateCredential",vX=Ie(dg),ug=class{constructor(e,r,n,i={}){if(!e||!r)throw new Error(`${dg}: tenantId and clientId are required parameters.`);this.tenantId=e,this.additionallyAllowedTenantIds=en(i?.additionallyAllowedTenants),this.sendCertificateChain=i.sendCertificateChain,this.certificateConfiguration=Object.assign({},typeof n=="string"?{certificatePath:n}:n);let s=this.certificateConfiguration.certificate,a=this.certificateConfiguration.certificatePath;if(!this.certificateConfiguration||!(s||a))throw new Error(`${dg}: Provide either a PEM certificate in string form, or the path to that certificate in the filesystem. To troubleshoot, visit https://aka.ms/azsdk/js/identity/serviceprincipalauthentication/troubleshoot.`);if(s&&a)throw new Error(`${dg}: To avoid unexpected behaviors, providing both the contents of a PEM certificate and the path to a PEM certificate is forbidden. To troubleshoot, visit https://aka.ms/azsdk/js/identity/serviceprincipalauthentication/troubleshoot.`);this.msalClient=qs(r,e,Object.assign(Object.assign({},i),{logger:vX,tokenCredentialOptions:i}))}async getToken(e,r={}){return kt.withSpan(`${dg}.getToken`,r,async n=>{n.tenantId=Lr(this.tenantId,n,this.additionallyAllowedTenantIds,vX);let i=Array.isArray(e)?e:[e],s=await this.buildClientCertificate();return this.msalClient.getTokenByClientCertificate(i,s,n)})}async buildClientCertificate(){var e;let r=await zNe(this.certificateConfiguration,(e=this.sendCertificateChain)!==null&&e!==void 0?e:!1),n;return this.certificateConfiguration.certificatePassword!==void 0?n=(0,pg.createPrivateKey)({key:r.certificateContents,passphrase:this.certificateConfiguration.certificatePassword,format:"pem"}).export({format:"pem",type:"pkcs8"}).toString():n=r.certificateContents,{thumbprint:r.thumbprint,thumbprintSha256:r.thumbprintSha256,privateKey:n,x5c:r.x5c}}};async function zNe(t,e){let r=t.certificate,n=t.certificatePath,i=r||await(0,RX.readFile)(n,"utf8"),s=e?i:void 0,a=/(-+BEGIN CERTIFICATE-+)(\n\r?|\r\n?)([A-Za-z0-9+/\n\r]+=*)(\n\r?|\r\n?)(-+END CERTIFICATE-+)/g,o=[],A;do A=a.exec(i),A&&o.push(A[3]);while(A);if(o.length===0)throw new Error("The file at the specified path does not contain a PEM-encoded certificate.");let l=(0,pg.createHash)("sha1").update(Buffer.from(o[0],"base64")).digest("hex").toUpperCase(),c=(0,pg.createHash)("sha256").update(Buffer.from(o[0],"base64")).digest("hex").toUpperCase();return{certificateContents:i,thumbprintSha256:c,thumbprint:l,x5c:s}}var NX=Ie("ClientSecretCredential"),mg=class{constructor(e,r,n,i={}){if(!e)throw new ke("ClientSecretCredential: tenantId is a required parameter. To troubleshoot, visit https://aka.ms/azsdk/js/identity/serviceprincipalauthentication/troubleshoot.");if(!r)throw new ke("ClientSecretCredential: clientId is a required parameter. To troubleshoot, visit https://aka.ms/azsdk/js/identity/serviceprincipalauthentication/troubleshoot.");if(!n)throw new ke("ClientSecretCredential: clientSecret is a required parameter. To troubleshoot, visit https://aka.ms/azsdk/js/identity/serviceprincipalauthentication/troubleshoot.");this.clientSecret=n,this.tenantId=e,this.additionallyAllowedTenantIds=en(i?.additionallyAllowedTenants),this.msalClient=qs(r,e,Object.assign(Object.assign({},i),{logger:NX,tokenCredentialOptions:i}))}async getToken(e,r={}){return kt.withSpan(`${this.constructor.name}.getToken`,r,async n=>{n.tenantId=Lr(this.tenantId,n,this.additionallyAllowedTenantIds,NX);let i=nl(e);return this.msalClient.getTokenByClientSecret(i,this.clientSecret,n)})}};var WNe=Ie("UsernamePasswordCredential"),hg=class{constructor(e,r,n,i,s={}){if(!e)throw new ke("UsernamePasswordCredential: tenantId is a required parameter. To troubleshoot, visit https://aka.ms/azsdk/js/identity/usernamepasswordcredential/troubleshoot.");if(!r)throw new ke("UsernamePasswordCredential: clientId is a required parameter. To troubleshoot, visit https://aka.ms/azsdk/js/identity/usernamepasswordcredential/troubleshoot.");if(!n)throw new ke("UsernamePasswordCredential: username is a required parameter. To troubleshoot, visit https://aka.ms/azsdk/js/identity/usernamepasswordcredential/troubleshoot.");if(!i)throw new ke("UsernamePasswordCredential: password is a required parameter. To troubleshoot, visit https://aka.ms/azsdk/js/identity/usernamepasswordcredential/troubleshoot.");this.tenantId=e,this.additionallyAllowedTenantIds=en(s?.additionallyAllowedTenants),this.username=n,this.password=i,this.msalClient=qs(r,this.tenantId,Object.assign(Object.assign({},s),{tokenCredentialOptions:s??{}}))}async getToken(e,r={}){return kt.withSpan(`${this.constructor.name}.getToken`,r,async n=>{n.tenantId=Lr(this.tenantId,n,this.additionallyAllowedTenantIds,WNe);let i=nl(e);return this.msalClient.getTokenByUsernamePassword(i,this.username,this.password,n)})}};var $Ne=["AZURE_TENANT_ID","AZURE_CLIENT_ID","AZURE_CLIENT_SECRET","AZURE_CLIENT_CERTIFICATE_PATH","AZURE_CLIENT_CERTIFICATE_PASSWORD","AZURE_USERNAME","AZURE_PASSWORD","AZURE_ADDITIONALLY_ALLOWED_TENANTS","AZURE_CLIENT_SEND_CERTIFICATE_CHAIN"];function KNe(){var t;return((t=process.env.AZURE_ADDITIONALLY_ALLOWED_TENANTS)!==null&&t!==void 0?t:"").split(";")}var b4="EnvironmentCredential",Mo=Ie(b4);function XNe(){var t;let e=((t=process.env.AZURE_CLIENT_SEND_CERTIFICATE_CHAIN)!==null&&t!==void 0?t:"").toLowerCase(),r=e==="true"||e==="1";return Mo.verbose(`AZURE_CLIENT_SEND_CERTIFICATE_CHAIN: ${process.env.AZURE_CLIENT_SEND_CERTIFICATE_CHAIN}; sendCertificateChain: ${r}`),r}var dm=class{constructor(e){this._credential=void 0;let r=Hb($Ne).assigned.join(", ");Mo.info(`Found the following environment variables: ${r}`);let n=process.env.AZURE_TENANT_ID,i=process.env.AZURE_CLIENT_ID,s=process.env.AZURE_CLIENT_SECRET,a=KNe(),o=XNe(),A=Object.assign(Object.assign({},e),{additionallyAllowedTenantIds:a,sendCertificateChain:o});if(n&&ri(Mo,n),n&&i&&s){Mo.info(`Invoking ClientSecretCredential with tenant ID: ${n}, clientId: ${i} and clientSecret: [REDACTED]`),this._credential=new mg(n,i,s,A);return}let l=process.env.AZURE_CLIENT_CERTIFICATE_PATH,c=process.env.AZURE_CLIENT_CERTIFICATE_PASSWORD;if(n&&i&&l){Mo.info(`Invoking ClientCertificateCredential with tenant ID: ${n}, clientId: ${i} and certificatePath: ${l}`),this._credential=new ug(n,i,{certificatePath:l,certificatePassword:c},A);return}let d=process.env.AZURE_USERNAME,p=process.env.AZURE_PASSWORD;n&&i&&d&&p&&(Mo.info(`Invoking UsernamePasswordCredential with tenant ID: ${n}, clientId: ${i} and username: ${d}`),Mo.warning("Environment is configured to use username and password authentication. This authentication method is deprecated, as it doesn't support multifactor authentication (MFA). Use a more secure credential. For more details, see https://aka.ms/azsdk/identity/mfa."),this._credential=new hg(n,i,d,p,A))}async getToken(e,r={}){return kt.withSpan(`${b4}.getToken`,r,async n=>{if(this._credential)try{let i=await this._credential.getToken(e,n);return Mo.getToken.info(Zr(e)),i}catch(i){let s=new OA(400,{error:`${b4} authentication failed. To troubleshoot, visit https://aka.ms/azsdk/js/identity/environmentcredential/troubleshoot.`,error_description:i.message.toString().split("More details:").join("")});throw Mo.getToken.info(st(e,s)),s}throw new ke(`${b4} is unavailable. No underlying credential could be used. To troubleshoot, visit https://aka.ms/azsdk/js/identity/environmentcredential/troubleshoot.`)})}};var $nt=Ie("DefaultAzureCredential");var iit=Ie("InteractiveBrowserCredential");var pit=Ie("DeviceCodeCredential");var tTe="AzurePipelinesCredential",Cit=Ie(tTe);var Rit=Ie("AuthorizationCodeCredential");var rTe="OnBehalfOfCredential",Oit=Ie(rTe);var _a=Ce(Rl()),DX="gh-azure-bicep-deploy",kX="00000000-0000-0000-0000-000000000000",PX={azureCloud:"https://management.azure.com",azureChinaCloud:"https://management.chinacloudapi.cn",azureGermanCloud:"https://management.microsoftazure.de",azureUSGovernment:"https://management.usgovcloudapi.net"};function _X(t,e,r){return new ff(xX(r),e??kX,{userAgentOptions:{userAgentPrefix:DX},additionalPolicies:[OX],apiVersion:"2024-03-01",endpoint:PX[t.environment]})}function MX(t,e,r){return new TX.DeploymentStacksClient(xX(r),e??kX,{userAgentOptions:{userAgentPrefix:DX},additionalPolicies:[OX],endpoint:PX[t.environment]})}var OX={position:"perCall",policy:{name:"debugLoggingPolicy",async sendRequest(t,e){if((0,_a.isDebug)()&&((0,_a.debug)(`Request: ${t.method} ${t.url}`),t.body)){let n=JSON.parse(t.body.toString());(0,_a.debug)(`Body: ${JSON.stringify(n,null,2)}`)}let r=await e(t);if((0,_a.isDebug)()){if((0,_a.debug)(`Response: ${r.status}`),r.bodyAsText){let s=JSON.parse(r.bodyAsText);(0,_a.debug)(`Body: ${JSON.stringify(s,null,2)}`)}let n=r.headers.get("x-ms-correlation-request-id");(0,_a.debug)(`CorrelationId: ${n}`);let i=r.headers.get("x-ms-request-id");(0,_a.debug)(`ActivityId: ${i}`)}return r}}};function xX(t){return new cm(new dm,new Am({tenantId:t}),new lm({tenantId:t}))}var FX={Create:"\x1B[32m",Delete:"\x1B[31m",Modify:"\x1B[35m",Deploy:"\x1B[34m",NoChange:"\x1B[0m",Ignore:"\x1B[37m",Unsupported:"\x1B[37m"},R4={Create:"\x1B[32m",Delete:"\x1B[31m",Modify:"\x1B[35m",Array:"\x1B[35m",NoEffect:"\x1B[37m"},UX={Create:"+",Delete:"-",Modify:"~",Deploy:"!",NoChange:"=",Ignore:"*",Unsupported:"x"},iTe={Create:"+",Delete:"-",Modify:"~",Array:"~",NoEffect:"x"},pm={Delete:0,Create:1,Deploy:2,Modify:3,NoChange:4,Unsupported:5,Ignore:6},LX={Delete:0,Create:1,Modify:2,Array:2,NoEffect:3},sTe={Array:"Modify",Create:"Create",Delete:"Delete",Modify:"Modify",NoEffect:"NoChange"};function qX(t,e){let r=new H2(e);return aTe(r),oTe(r,t.changes??[]),cTe(r,t.changes??[]),ATe(r,t.changes??[]),r.build()}function aTe(t){t.appendLine(`Note: The result may contain false positive predictions (noise). -You can help us improve the accuracy of the result by opening an issue here: https://aka.ms/WhatIfIssues`),t.appendLine()}function oTe(t,e){if(!e.length)return;let r=new Set;function n(s){if(s.length)for(let a of s){let o=a.propertyChangeType;r.add(sTe[o]),n(a.children??[])}}for(let s of e)r.add(s.changeType),n(s.delta??[]);let i=Array.from(r).sort((s,a)=>pm[s]-pm[a]);t.append("Resource and property changes are indicated with "),t.appendLine(i.length===1?"this symbol:":"these symbols:");for(let s of i){let a=UX[s],o=FX[s];um(t),t.append(a,o).append(" "),t.appendLine(s.charAt(0).toUpperCase()+s.slice(1))}}function ATe(t,e){if(t.appendLine().append("Resource changes: "),!e.length){t.append("no change.");return}let r=e.sort((a,o)=>pm[a.changeType]-pm[o.changeType]),n=RR(r,a=>a.changeType),s=gg(n).map(([a,o])=>({key:a,count:o.length})).filter(a=>a.count>0).map(a=>lTe(a.key,a.count));t.append(s.join(", ")).append(".")}function lTe(t,e){switch(t){case"Create":return`${e} to create`;case"Delete":return`${e} to delete`;case"Deploy":return`${e} to deploy`;case"Modify":return`${e} to modify`;case"Ignore":return`${e} to ignore`;case"NoChange":return`${e} no change`;case"Unsupported":return`${e} unsupported`;default:throw new Error(`Invalid ChangeType: ${t}`)}}function cTe(t,e){if(!e.length)return;let r=new Set(e.map(v4)).size,n=RR(e.sort((i,s)=>v4(i).localeCompare(v4(s))),v4);t.appendLine(),t.appendLine(`The deployment will update the following ${r===1?"scope:":"scopes:"}`);for(let[,i]of gg(n)){let s=HX(i[0]);dTe(t,s,i)}}function dTe(t,e,r){t.appendLine().appendLine(`Scope: ${e}`);let n=r.sort((s,a)=>pm[s.changeType]-pm[a.changeType]),i=RR(n,s=>s.changeType);for(let[s,a]of gg(i))t.withColorScope(FX[s],()=>{for(let o of a){let A=o===n[n.length-1];pTe(t,o,A)}})}function pTe(t,e,r){let n=e.changeType,i=QTe(e),s=BTe(e);if(t.appendLine(),uTe(t,n,i,s),n==="Create"&&e.after)td(t,e.after,void 0,void 0,2);else if(n==="Delete"&&e.before)td(t,e.before,void 0,void 0,2);else if(e.delta){let a=e.delta;t.withColorScope("\x1B[0m",()=>{t.appendLine(),wR(t,vR(a))})}else r&&t.appendLine()}function uTe(t,e,r,n){SR(t,r,0,1,i=>mTe(i,e),i=>hTe(i,n))}function mTe(t,e){let r=UX[e];t.append(r).append(" ")}function hTe(t,e){e&&t.withColorScope("\x1B[0m",()=>{t.append(" "),t.append("["),t.append(e),t.append("]")})}function wR(t,e,r=2){let n=wTe(e);for(let i of e)fTe(t,i,n,r),t.appendLine()}function fTe(t,e,r,n){let i=e.propertyChangeType,s=e.before,a=e.after,o=e.children||[];switch(i){case"Create":fg(t,e,e.after,r,n),VX(t,a,n+1);break;case"Delete":fg(t,e,e.before,r,n),GX(t,s,n+1);break;case"Modify":fg(t,e,e.before,r,n),CTe(t,s,a,o,n+1);break;case"Array":fg(t,e,e.children,r,n),ITe(t,e,o,n+1);break;case"NoEffect":fg(t,e,e.after,r,n),ETe(t,a,n+1);break;default:throw new Error(`Unknown property change type: ${i}.`)}}function fg(t,e,r,n,i){if(!e.path)return;let s=e.path,a=e.propertyChangeType,o=n-s.length+1;bR(r)?o=1:(rd(r)||a==="Modify"&&e.children)&&(o=0),SR(t,s,o,i,A=>gTe(A,a),JX)}function gTe(t,e){let r=iTe[e],n=R4[e];t.append(r,n).append(" ")}function ETe(t,e,r){t.withColorScope(R4.NoEffect,()=>{td(t,e,void 0,void 0,r)})}function VX(t,e,r){t.withColorScope(R4.Create,()=>{td(t,e,void 0,void 0,r)})}function GX(t,e,r){t.withColorScope(R4.Delete,()=>{td(t,e,void 0,void 0,r)})}function yTe(t){if(t===null||typeof t!="object"||Object.keys(t).length===0)return t;let e="",r=t,n=Object.keys(r);for(let i=0;i0?(t.appendLine().appendLine(),wR(t,vR(n),i)):(GX(t,e,i),rd(e)?(t.appendLine(),um(t,i)):t.append(" "),t.append("=>"),rd(r)||t.append(" "),VX(t,r,i),!mm(e)&&mm(r)&&t.appendLine())}function ITe(t,e,r,n){if(e.path||(n-=1,um(t,n)),!r||r.length===0){t.appendLine("[]");return}t.append("[").appendLine(),wR(t,vR(r),n),um(t,n),t.append("]")}function BTe(t){if(t.before)return t.before.apiVersion;if(t.after)return t.after.apiVersion}function HX(t){if(!t.resourceId)throw new Error("Extensible resource what-if is not currently supported by this Action. Please raise an issue: https://github.com/Azure/bicep-deploy/issues.");let[e]=zX(t.resourceId);return e}function v4(t){return HX(t).toUpperCase()}function QTe(t){if(!t.resourceId)throw new Error("Extensible resource what-if is not currently supported by this Action. Please raise an issue: https://github.com/Azure/bicep-deploy/issues.");let[,e]=zX(t.resourceId);return e}function wTe(t){if(!t||t.length===0)return 0;let r=t.filter(STe).map(n=>n.path.length);return Math.max(...r,0)}function STe(t){let e=t.propertyChangeType;return e==="Create"?mm(t.after):e==="Delete"||e==="Modify"?mm(t.before):!t.children}function td(t,e,r="",n=0,i=0){if(e=yTe(e),mm(e)){let s=n-r.length+1;QR(t,r,s>0?s:0,i),bTe(t,e)}else if(bR(e))QR(t,r,1,i),vTe(t,e,i);else if(rd(e))YX(t,e,r,n,i);else throw new Error(`Invalid JSON value: ${e}`)}function bTe(t,e){e===null?t.append("null"):typeof e=="boolean"?t.append(String(e).toLowerCase()):typeof e=="string"?t.append('"').append(e).append('"'):Array.isArray(e)&&e.length===0?t.append("[]"):typeof e=="object"?t.append("{}"):t.append(String(e))}function vTe(t,e,r){t.append("[","\x1B[0m").appendLine();let n=RTe(e);e.forEach((i,s)=>{let a=String(s);rd(i)?(QR(t,a,0,r+1),YX(t,i,void 0,void 0,r+1)):td(t,i,a,n,r+1),t.appendLine()}),um(t,r),t.append("]","\x1B[0m")}function YX(t,e,r="",n=0,i=0){let s=!r;r||(t.appendLine().appendLine(),n=jX(e),i+=1);for(let[a,o]of gg(e)){let A=s?a:`${r}.${a}`;td(t,o,A,n,i),rd(o)||t.appendLine()}}function QR(t,e,r,n){SR(t,e,r,n,void 0,JX)}function SR(t,e,r,n,i,s){e&&(um(t,n),i&&i(t),t.append(e),s&&s(t),t.append(" ".repeat(r)))}function JX(t){t.append(":","\x1B[0m")}function um(t,e=1){t.append(" ".repeat(2*e))}function RTe(t){let e=0;return t.forEach((r,n)=>{mm(r)&&(e=n)}),String(e).length}function jX(t){let e=0;for(let[r,n]of gg(t)){if(bR(n))continue;let i=rd(n)?r.length+1+jX(n):r.length;e=Math.max(e,i)}return e}function mm(t){return t==null||typeof t=="boolean"||typeof t=="number"||typeof t=="string"||Array.isArray(t)&&t.length===0||typeof t=="object"&&t&&Object.keys(t).length===0}function bR(t){return Array.isArray(t)&&t.length>0}function rd(t){return typeof t=="object"&&t!==null&&Object.keys(t).length>0}function vR(t){return t.slice().sort((e,r)=>LX[e.propertyChangeType]-LX[r.propertyChangeType]||e.path.localeCompare(r.path))}function RR(t,e){return t.reduce((r,n)=>{let i=e(n);return(r[i]=r[i]||[]).push(n),r},{})}function gg(t){return Object.entries(t)}function zX(t){let e="/providers/",r=t.lastIndexOf(e);if(r===-1){let n=[...t.matchAll(/^(\/subscriptions\/[^/]+)\/(resourceGroups\/[^/]+)$/gi)];return n[0]?[n[0][1],n[0][2]]:["/",t.substring(1)]}return[t.substring(0,r),t.substring(r+e.length)]}var hm="azure-bicep-deploy",T4=class{constructor(e,r){this.details=e,this.response=r}};function nd(){return{onResponse:(t,e)=>{if(e&&e.error&&e.error.code&&e.error.message)throw new T4(e,t)}}}function NR(t,e){let{tenantId:r}=e,n="subscriptionId"in e?e.subscriptionId:void 0;return _X(t,n,r)}function TR(t,e){let{tenantId:r}=e,n="subscriptionId"in e?e.subscriptionId:void 0;return MX(t,n,r)}async function KX(t,e){try{switch(OTe(t,e),t.type){case"deployment":{switch(t.operation){case"create":{await N4(async()=>{let r=await NTe(t,e);WX(t,r?.properties?.outputs)},r=>{rs(JSON.stringify(r,null,2)),(0,Ma.setFailed)("Create failed")});break}case"validate":{await N4(async()=>{let r=await TTe(t,e);$X(r?.properties?.diagnostics??[])},r=>{rs(JSON.stringify(r,null,2)),(0,Ma.setFailed)("Validation failed")});break}case"whatIf":{let r=await DTe(t,e),n=qX(r,"ansii");d5(n),$X(r.diagnostics??[]);break}}break}case"deploymentStack":{switch(t.operation){case"create":{await N4(async()=>{let r=await kTe(t,e);WX(t,r?.properties?.outputs)},r=>{rs(JSON.stringify(r,null,2)),(0,Ma.setFailed)("Create failed")});break}case"validate":{await N4(()=>PTe(t,e),r=>{rs(JSON.stringify(r,null,2)),(0,Ma.setFailed)("Validation failed")});break}case"delete":{await _Te(t);break}}break}}}catch(r){if(r instanceof hr&&r.response?.bodyAsText){let n=r.response.headers.get("x-ms-correlation-request-id");rs(`Request failed. CorrelationId: ${n}`);let i=JSON.parse(r.response.bodyAsText);rs(JSON.stringify(i,null,2))}throw(0,Ma.setFailed)("Operation failed"),r}}function WX(t,e){if(e)for(let r of Object.keys(e)){let n=e[r];(0,Ma.setOutput)(r,n.value),t.maskedOutputs&&t.maskedOutputs.some(i=>i.toLowerCase()===r.toLowerCase())&&(0,Ma.setSecret)(n.value)}}async function NTe(t,e){let r=t.name??hm,n=t.scope,i=NR(t,n),s=DR(t,e);switch(n.type){case"resourceGroup":return await i.deployments.beginCreateOrUpdateAndWait(n.resourceGroup,r,s,nd());case"subscription":return await i.deployments.beginCreateOrUpdateAtSubscriptionScopeAndWait(r,{...s,location:Mi(t)},nd());case"managementGroup":return await i.deployments.beginCreateOrUpdateAtManagementGroupScopeAndWait(n.managementGroup,r,{...s,location:Mi(t)},nd());case"tenant":return await i.deployments.beginCreateOrUpdateAtTenantScopeAndWait(r,{...s,location:Mi(t)},nd())}}async function TTe(t,e){let r=t.name??hm,n=t.scope,i=NR(t,n),s=DR(t,e);switch(n.type){case"resourceGroup":return await i.deployments.beginValidateAndWait(n.resourceGroup,r,s);case"subscription":return await i.deployments.beginValidateAtSubscriptionScopeAndWait(r,{...s,location:Mi(t)});case"managementGroup":return await i.deployments.beginValidateAtManagementGroupScopeAndWait(n.managementGroup,r,{...s,location:Mi(t)});case"tenant":await i.deployments.beginValidateAtTenantScopeAndWait(r,{...s,location:Mi(t)})}}async function DTe(t,e){let r=t.name??hm,n=t.scope,i=NR(t,n),s=DR(t,e);switch(n.type){case"resourceGroup":return await i.deployments.beginWhatIfAndWait(n.resourceGroup,r,s);case"subscription":return await i.deployments.beginWhatIfAtSubscriptionScopeAndWait(r,{...s,location:Mi(t)});case"managementGroup":return await i.deployments.beginWhatIfAtManagementGroupScopeAndWait(n.managementGroup,r,{...s,location:Mi(t)});case"tenant":return await i.deployments.beginWhatIfAtTenantScopeAndWait(r,{...s,location:Mi(t)})}}function DR(t,e){let{templateContents:r,templateSpecId:n,parametersContents:i}=e;return{location:t.location,properties:{mode:"Incremental",template:r,templateLink:n?{id:n}:void 0,parameters:i.parameters,expressionEvaluationOptions:{scope:"inner"},validationLevel:t.validationLevel},tags:t.tags}}async function kTe(t,e){let r=t.name??hm,n=t.scope,i=TR(t,n),s=XX(t,e);switch(n.type){case"resourceGroup":return await i.deploymentStacks.beginCreateOrUpdateAtResourceGroupAndWait(n.resourceGroup,r,s,nd());case"subscription":return await i.deploymentStacks.beginCreateOrUpdateAtSubscriptionAndWait(r,{...s,location:Mi(t)},nd());case"managementGroup":return await i.deploymentStacks.beginCreateOrUpdateAtManagementGroupAndWait(n.managementGroup,r,{...s,location:Mi(t)},nd())}}async function PTe(t,e){let r=t.name??hm,n=t.scope,i=TR(t,n),s=XX(t,e);switch(n.type){case"resourceGroup":return await i.deploymentStacks.beginValidateStackAtResourceGroupAndWait(n.resourceGroup,r,s);case"subscription":return await i.deploymentStacks.beginValidateStackAtSubscriptionAndWait(r,{...s,location:Mi(t)});case"managementGroup":return await i.deploymentStacks.beginValidateStackAtManagementGroupAndWait(n.managementGroup,r,{...s,location:Mi(t)})}}async function _Te(t){let e=t.name??hm,r=t.scope,n=TR(t,r),i=MTe(t);switch(r.type){case"resourceGroup":return await n.deploymentStacks.beginDeleteAtResourceGroupAndWait(r.resourceGroup,e,i);case"subscription":return await n.deploymentStacks.beginDeleteAtSubscriptionAndWait(e,i);case"managementGroup":return await n.deploymentStacks.beginDeleteAtManagementGroupAndWait(r.managementGroup,e,i)}}function XX(t,e){let{templateContents:r,templateSpecId:n,parametersContents:i}=e;return{properties:{template:r,templateLink:n?{id:n}:void 0,parameters:i.parameters,description:t.description,actionOnUnmanage:t.actionOnUnManage,denySettings:t.denySettings,bypassStackOutOfSyncError:t.bypassStackOutOfSyncError},tags:t.tags}}function MTe(t){return{unmanageActionResources:t.actionOnUnManage.resources,unmanageActionResourceGroups:t.actionOnUnManage.resourceGroups,unmanageActionManagementGroups:t.actionOnUnManage.managementGroups,bypassStackOutOfSyncError:t.bypassStackOutOfSyncError}}function Mi(t){if(!t.location)throw new Error("Location is required");return t.location}async function N4(t,e){try{return await t()}catch(r){if(r instanceof hr){let n=r.response?.headers.get("x-ms-correlation-request-id");rs(`Request failed. CorrelationId: ${n}`);let{error:i}=r.details;if(i){e(i);return}}if(r instanceof T4){let n=r.response?.headers.get("x-ms-correlation-request-id");rs(`Request failed. CorrelationId: ${n}`);let{error:i}=r.details;if(i){e(i);return}}throw r}}function OTe(t,e){let r=xTe(e);if(r&&r!==t.scope.type)throw new Error(`The target scope ${r} does not match the deployment scope ${t.scope.type}.`)}function xTe(t){let e=t.templateContents??{},r=e.metadata?._generator?.name,n=e.$schema;if(!r)return;let i=/https:\/\/schema\.management\.azure\.com\/schemas\/[0-9a-zA-Z-]+\/([a-zA-Z]+)Template\.json#?/.exec(n);switch(i?i[1].toLowerCase():null){case"tenantdeployment":return"tenant";case"managementgroupdeployment":return"managementGroup";case"subscriptiondeployment":return"subscription";case"deployment":return"resourceGroup";default:throw new Error("Failed to determine deployment scope from Bicep file.")}}function $X(t){if(t.length!==0){BA("Diagnostics returned by the API");for(let e of t){let r=`[${e.level}] ${e.code}: ${e.message}`;switch(e.level.toLowerCase()){case"error":rs(r);break;case"warning":Y2(r);break;default:BA(r);break}}}}async function eZ(){try{let t=$U();BA(`Action config: ${JSON.stringify(t,null,2)}`);let e=await VU(t);await KX(t,e)}catch(t){let e=t instanceof Error?t.message:`${t}`;ZX.setFailed(e)}}eZ(); -/*! Bundled license information: - -undici/lib/fetch/body.js: - (*! formdata-polyfill. MIT License. Jimmy Wärting *) - -undici/lib/websocket/frame.js: - (*! ws. MIT License. Einar Otto Stangvik *) - -safe-buffer/index.js: - (*! safe-buffer. MIT License. Feross Aboukhadijeh *) - -@azure/msal-node/dist/cache/serializer/Serializer.mjs: -@azure/msal-node/dist/cache/serializer/Deserializer.mjs: -@azure/msal-node/dist/internals.mjs: -@azure/msal-node/dist/utils/Constants.mjs: -@azure/msal-node/dist/utils/NetworkUtils.mjs: -@azure/msal-node/dist/network/HttpClient.mjs: -@azure/msal-node/dist/error/ManagedIdentityErrorCodes.mjs: -@azure/msal-node/dist/error/ManagedIdentityError.mjs: -@azure/msal-node/dist/config/ManagedIdentityId.mjs: -@azure/msal-node/dist/error/NodeAuthError.mjs: -@azure/msal-node/dist/config/Configuration.mjs: -@azure/msal-node/dist/crypto/GuidGenerator.mjs: -@azure/msal-node/dist/utils/EncodingUtils.mjs: -@azure/msal-node/dist/crypto/HashUtils.mjs: -@azure/msal-node/dist/crypto/PkceGenerator.mjs: -@azure/msal-node/dist/crypto/CryptoProvider.mjs: -@azure/msal-node/dist/cache/NodeStorage.mjs: -@azure/msal-node/dist/cache/TokenCache.mjs: -@azure/msal-node/dist/client/ClientAssertion.mjs: -@azure/msal-node/dist/packageMetadata.mjs: -@azure/msal-node/dist/client/UsernamePasswordClient.mjs: -@azure/msal-node/dist/protocol/Authorize.mjs: -@azure/msal-node/dist/client/ClientApplication.mjs: -@azure/msal-node/dist/network/LoopbackClient.mjs: -@azure/msal-node/dist/client/DeviceCodeClient.mjs: -@azure/msal-node/dist/client/PublicClientApplication.mjs: -@azure/msal-node/dist/client/ClientCredentialClient.mjs: -@azure/msal-node/dist/client/OnBehalfOfClient.mjs: -@azure/msal-node/dist/client/ConfidentialClientApplication.mjs: -@azure/msal-node/dist/utils/TimeUtils.mjs: -@azure/msal-node/dist/network/HttpClientWithRetries.mjs: -@azure/msal-node/dist/client/ManagedIdentitySources/BaseManagedIdentitySource.mjs: -@azure/msal-node/dist/retry/LinearRetryStrategy.mjs: -@azure/msal-node/dist/retry/DefaultManagedIdentityRetryPolicy.mjs: -@azure/msal-node/dist/config/ManagedIdentityRequestParameters.mjs: -@azure/msal-node/dist/client/ManagedIdentitySources/AppService.mjs: -@azure/msal-node/dist/client/ManagedIdentitySources/AzureArc.mjs: -@azure/msal-node/dist/client/ManagedIdentitySources/CloudShell.mjs: -@azure/msal-node/dist/retry/ExponentialRetryStrategy.mjs: -@azure/msal-node/dist/retry/ImdsRetryPolicy.mjs: -@azure/msal-node/dist/client/ManagedIdentitySources/Imds.mjs: -@azure/msal-node/dist/client/ManagedIdentitySources/ServiceFabric.mjs: -@azure/msal-node/dist/client/ManagedIdentitySources/MachineLearning.mjs: -@azure/msal-node/dist/client/ManagedIdentityClient.mjs: -@azure/msal-node/dist/client/ManagedIdentityApplication.mjs: -@azure/msal-node/dist/cache/distributed/DistributedCachePlugin.mjs: -@azure/msal-node/dist/index.mjs: - (*! @azure/msal-node v3.6.2 2025-07-01 *) - -@azure/msal-common/dist/utils/Constants.mjs: -@azure/msal-common/dist/error/AuthErrorCodes.mjs: -@azure/msal-common/dist/error/AuthError.mjs: -@azure/msal-common/dist/error/ClientAuthErrorCodes.mjs: -@azure/msal-common/dist/error/ClientAuthError.mjs: -@azure/msal-common/dist/crypto/ICrypto.mjs: -@azure/msal-common/dist/logger/Logger.mjs: -@azure/msal-common/dist/packageMetadata.mjs: -@azure/msal-common/dist/authority/AuthorityOptions.mjs: -@azure/msal-common/dist/account/AuthToken.mjs: -@azure/msal-common/dist/utils/TimeUtils.mjs: -@azure/msal-common/dist/cache/utils/CacheHelpers.mjs: -@azure/msal-common/dist/error/ClientConfigurationErrorCodes.mjs: -@azure/msal-common/dist/error/ClientConfigurationError.mjs: -@azure/msal-common/dist/utils/StringUtils.mjs: -@azure/msal-common/dist/request/ScopeSet.mjs: -@azure/msal-common/dist/account/ClientInfo.mjs: -@azure/msal-common/dist/account/AccountInfo.mjs: -@azure/msal-common/dist/authority/AuthorityType.mjs: -@azure/msal-common/dist/account/TokenClaims.mjs: -@azure/msal-common/dist/authority/ProtocolMode.mjs: -@azure/msal-common/dist/cache/entities/AccountEntity.mjs: -@azure/msal-common/dist/utils/UrlUtils.mjs: -@azure/msal-common/dist/url/UrlString.mjs: -@azure/msal-common/dist/authority/AuthorityMetadata.mjs: -@azure/msal-common/dist/error/CacheErrorCodes.mjs: -@azure/msal-common/dist/error/CacheError.mjs: -@azure/msal-common/dist/cache/CacheManager.mjs: -@azure/msal-common/dist/telemetry/performance/PerformanceEvent.mjs: -@azure/msal-common/dist/telemetry/performance/StubPerformanceClient.mjs: -@azure/msal-common/dist/config/ClientConfiguration.mjs: -@azure/msal-common/dist/account/CcsCredential.mjs: -@azure/msal-common/dist/constants/AADServerParamKeys.mjs: -@azure/msal-common/dist/request/RequestParameterBuilder.mjs: -@azure/msal-common/dist/authority/OpenIdConfigResponse.mjs: -@azure/msal-common/dist/authority/CloudInstanceDiscoveryResponse.mjs: -@azure/msal-common/dist/authority/CloudInstanceDiscoveryErrorResponse.mjs: -@azure/msal-common/dist/utils/FunctionWrappers.mjs: -@azure/msal-common/dist/authority/RegionDiscovery.mjs: -@azure/msal-common/dist/authority/Authority.mjs: -@azure/msal-common/dist/authority/AuthorityFactory.mjs: -@azure/msal-common/dist/error/ServerError.mjs: -@azure/msal-common/dist/network/RequestThumbprint.mjs: -@azure/msal-common/dist/network/ThrottlingUtils.mjs: -@azure/msal-common/dist/error/NetworkError.mjs: -@azure/msal-common/dist/client/BaseClient.mjs: -@azure/msal-common/dist/error/InteractionRequiredAuthErrorCodes.mjs: -@azure/msal-common/dist/error/InteractionRequiredAuthError.mjs: -@azure/msal-common/dist/utils/ProtocolUtils.mjs: -@azure/msal-common/dist/crypto/PopTokenGenerator.mjs: -@azure/msal-common/dist/cache/persistence/TokenCacheContext.mjs: -@azure/msal-common/dist/response/ResponseHandler.mjs: -@azure/msal-common/dist/request/RequestValidator.mjs: -@azure/msal-common/dist/utils/ClientAssertionUtils.mjs: -@azure/msal-common/dist/client/AuthorizationCodeClient.mjs: -@azure/msal-common/dist/client/RefreshTokenClient.mjs: -@azure/msal-common/dist/client/SilentFlowClient.mjs: -@azure/msal-common/dist/protocol/Authorize.mjs: -@azure/msal-common/dist/telemetry/server/ServerTelemetryManager.mjs: -@azure/msal-common/dist/index-node.mjs: -@azure/msal-common/dist/index.mjs: - (*! @azure/msal-common v15.8.0 2025-07-01 *) -*/ -//# sourceMappingURL=index.js.map diff --git a/dist/index.js.map b/dist/index.js.map deleted file mode 100644 index 2f35182..0000000 --- a/dist/index.js.map +++ /dev/null @@ -1,7 +0,0 @@ -{ - "version": 3, - "sources": ["../node_modules/@actions/core/src/utils.ts", "../node_modules/@actions/core/src/command.ts", "../node_modules/@actions/core/src/file-command.ts", "../node_modules/@actions/http-client/src/proxy.ts", "../node_modules/tunnel/lib/tunnel.js", "../node_modules/tunnel/index.js", "../node_modules/undici/lib/core/symbols.js", "../node_modules/undici/lib/core/errors.js", "../node_modules/undici/lib/core/constants.js", "../node_modules/undici/lib/core/util.js", "../node_modules/undici/lib/timers.js", "../node_modules/@fastify/busboy/deps/streamsearch/sbmh.js", "../node_modules/@fastify/busboy/deps/dicer/lib/PartStream.js", "../node_modules/@fastify/busboy/lib/utils/getLimit.js", "../node_modules/@fastify/busboy/deps/dicer/lib/HeaderParser.js", "../node_modules/@fastify/busboy/deps/dicer/lib/Dicer.js", "../node_modules/@fastify/busboy/lib/utils/decodeText.js", "../node_modules/@fastify/busboy/lib/utils/parseParams.js", "../node_modules/@fastify/busboy/lib/utils/basename.js", "../node_modules/@fastify/busboy/lib/types/multipart.js", "../node_modules/@fastify/busboy/lib/utils/Decoder.js", "../node_modules/@fastify/busboy/lib/types/urlencoded.js", "../node_modules/@fastify/busboy/lib/main.js", "../node_modules/undici/lib/fetch/constants.js", "../node_modules/undici/lib/fetch/global.js", "../node_modules/undici/lib/fetch/util.js", "../node_modules/undici/lib/fetch/symbols.js", "../node_modules/undici/lib/fetch/webidl.js", "../node_modules/undici/lib/fetch/dataURL.js", "../node_modules/undici/lib/fetch/file.js", "../node_modules/undici/lib/fetch/formdata.js", "../node_modules/undici/lib/fetch/body.js", "../node_modules/undici/lib/core/request.js", "../node_modules/undici/lib/dispatcher.js", "../node_modules/undici/lib/dispatcher-base.js", "../node_modules/undici/lib/core/connect.js", "../node_modules/undici/src/llhttp/utils.ts", "../node_modules/undici/src/llhttp/constants.ts", "../node_modules/undici/lib/handler/RedirectHandler.js", "../node_modules/undici/lib/interceptor/redirectInterceptor.js", "../node_modules/undici/lib/llhttp/llhttp-wasm.js", "../node_modules/undici/lib/llhttp/llhttp_simd-wasm.js", "../node_modules/undici/lib/client.js", "../node_modules/undici/lib/node/fixed-queue.js", "../node_modules/undici/lib/pool-stats.js", "../node_modules/undici/lib/pool-base.js", "../node_modules/undici/lib/pool.js", "../node_modules/undici/lib/balanced-pool.js", "../node_modules/undici/lib/compat/dispatcher-weakref.js", "../node_modules/undici/lib/agent.js", "../node_modules/undici/lib/api/readable.js", "../node_modules/undici/lib/api/util.js", "../node_modules/undici/lib/api/abort-signal.js", "../node_modules/undici/lib/api/api-request.js", "../node_modules/undici/lib/api/api-stream.js", "../node_modules/undici/lib/api/api-pipeline.js", "../node_modules/undici/lib/api/api-upgrade.js", "../node_modules/undici/lib/api/api-connect.js", "../node_modules/undici/lib/api/index.js", "../node_modules/undici/lib/mock/mock-errors.js", "../node_modules/undici/lib/mock/mock-symbols.js", "../node_modules/undici/lib/mock/mock-utils.js", "../node_modules/undici/lib/mock/mock-interceptor.js", "../node_modules/undici/lib/mock/mock-client.js", "../node_modules/undici/lib/mock/mock-pool.js", "../node_modules/undici/lib/mock/pluralizer.js", "../node_modules/undici/lib/mock/pending-interceptors-formatter.js", "../node_modules/undici/lib/mock/mock-agent.js", "../node_modules/undici/lib/proxy-agent.js", "../node_modules/undici/lib/handler/RetryHandler.js", "../node_modules/undici/lib/global.js", "../node_modules/undici/lib/handler/DecoratorHandler.js", "../node_modules/undici/lib/fetch/headers.js", "../node_modules/undici/lib/fetch/response.js", "../node_modules/undici/lib/fetch/request.js", "../node_modules/undici/lib/fetch/index.js", "../node_modules/undici/lib/fileapi/symbols.js", "../node_modules/undici/lib/fileapi/progressevent.js", "../node_modules/undici/lib/fileapi/encoding.js", "../node_modules/undici/lib/fileapi/util.js", "../node_modules/undici/lib/fileapi/filereader.js", "../node_modules/undici/lib/cache/symbols.js", "../node_modules/undici/lib/cache/util.js", "../node_modules/undici/lib/cache/cache.js", "../node_modules/undici/lib/cache/cachestorage.js", "../node_modules/undici/lib/cookies/constants.js", "../node_modules/undici/lib/cookies/util.js", "../node_modules/undici/lib/cookies/parse.js", "../node_modules/undici/lib/cookies/index.js", "../node_modules/undici/lib/websocket/constants.js", "../node_modules/undici/lib/websocket/symbols.js", "../node_modules/undici/lib/websocket/events.js", "../node_modules/undici/lib/websocket/util.js", "../node_modules/undici/lib/websocket/connection.js", "../node_modules/undici/lib/websocket/frame.js", "../node_modules/undici/lib/websocket/receiver.js", "../node_modules/undici/lib/websocket/websocket.js", "../node_modules/undici/index.js", "../node_modules/@actions/http-client/src/index.ts", "../node_modules/@actions/http-client/src/auth.ts", "../node_modules/@actions/core/src/oidc-utils.ts", "../node_modules/@actions/core/src/summary.ts", "../node_modules/@actions/core/src/path-utils.ts", "../node_modules/@actions/io/src/io-util.ts", "../node_modules/@actions/io/src/io.ts", "../node_modules/@actions/exec/src/toolrunner.ts", "../node_modules/@actions/exec/src/exec.ts", "../node_modules/@actions/core/src/platform.ts", "../node_modules/@actions/core/src/core.ts", "../node_modules/yaml/dist/nodes/identity.js", "../node_modules/yaml/dist/visit.js", "../node_modules/yaml/dist/doc/directives.js", "../node_modules/yaml/dist/doc/anchors.js", "../node_modules/yaml/dist/doc/applyReviver.js", "../node_modules/yaml/dist/nodes/toJS.js", "../node_modules/yaml/dist/nodes/Node.js", "../node_modules/yaml/dist/nodes/Alias.js", "../node_modules/yaml/dist/nodes/Scalar.js", "../node_modules/yaml/dist/doc/createNode.js", "../node_modules/yaml/dist/nodes/Collection.js", "../node_modules/yaml/dist/stringify/stringifyComment.js", "../node_modules/yaml/dist/stringify/foldFlowLines.js", "../node_modules/yaml/dist/stringify/stringifyString.js", "../node_modules/yaml/dist/stringify/stringify.js", "../node_modules/yaml/dist/stringify/stringifyPair.js", "../node_modules/yaml/dist/log.js", "../node_modules/yaml/dist/schema/yaml-1.1/merge.js", "../node_modules/yaml/dist/nodes/addPairToJSMap.js", "../node_modules/yaml/dist/nodes/Pair.js", "../node_modules/yaml/dist/stringify/stringifyCollection.js", "../node_modules/yaml/dist/nodes/YAMLMap.js", "../node_modules/yaml/dist/schema/common/map.js", "../node_modules/yaml/dist/nodes/YAMLSeq.js", "../node_modules/yaml/dist/schema/common/seq.js", "../node_modules/yaml/dist/schema/common/string.js", "../node_modules/yaml/dist/schema/common/null.js", "../node_modules/yaml/dist/schema/core/bool.js", "../node_modules/yaml/dist/stringify/stringifyNumber.js", "../node_modules/yaml/dist/schema/core/float.js", "../node_modules/yaml/dist/schema/core/int.js", "../node_modules/yaml/dist/schema/core/schema.js", "../node_modules/yaml/dist/schema/json/schema.js", "../node_modules/yaml/dist/schema/yaml-1.1/binary.js", "../node_modules/yaml/dist/schema/yaml-1.1/pairs.js", "../node_modules/yaml/dist/schema/yaml-1.1/omap.js", "../node_modules/yaml/dist/schema/yaml-1.1/bool.js", "../node_modules/yaml/dist/schema/yaml-1.1/float.js", "../node_modules/yaml/dist/schema/yaml-1.1/int.js", "../node_modules/yaml/dist/schema/yaml-1.1/set.js", "../node_modules/yaml/dist/schema/yaml-1.1/timestamp.js", "../node_modules/yaml/dist/schema/yaml-1.1/schema.js", "../node_modules/yaml/dist/schema/tags.js", "../node_modules/yaml/dist/schema/Schema.js", "../node_modules/yaml/dist/stringify/stringifyDocument.js", "../node_modules/yaml/dist/doc/Document.js", "../node_modules/yaml/dist/errors.js", "../node_modules/yaml/dist/compose/resolve-props.js", "../node_modules/yaml/dist/compose/util-contains-newline.js", "../node_modules/yaml/dist/compose/util-flow-indent-check.js", "../node_modules/yaml/dist/compose/util-map-includes.js", "../node_modules/yaml/dist/compose/resolve-block-map.js", "../node_modules/yaml/dist/compose/resolve-block-seq.js", "../node_modules/yaml/dist/compose/resolve-end.js", "../node_modules/yaml/dist/compose/resolve-flow-collection.js", "../node_modules/yaml/dist/compose/compose-collection.js", "../node_modules/yaml/dist/compose/resolve-block-scalar.js", "../node_modules/yaml/dist/compose/resolve-flow-scalar.js", "../node_modules/yaml/dist/compose/compose-scalar.js", "../node_modules/yaml/dist/compose/util-empty-scalar-position.js", "../node_modules/yaml/dist/compose/compose-node.js", "../node_modules/yaml/dist/compose/compose-doc.js", "../node_modules/yaml/dist/compose/composer.js", "../node_modules/yaml/dist/parse/cst-scalar.js", "../node_modules/yaml/dist/parse/cst-stringify.js", "../node_modules/yaml/dist/parse/cst-visit.js", "../node_modules/yaml/dist/parse/cst.js", "../node_modules/yaml/dist/parse/lexer.js", "../node_modules/yaml/dist/parse/line-counter.js", "../node_modules/yaml/dist/parse/parser.js", "../node_modules/yaml/dist/public-api.js", "../node_modules/yaml/dist/index.js", "../node_modules/webidl-conversions/lib/index.js", "../node_modules/whatwg-url/lib/utils.js", "../node_modules/tr46/lib/mappingTable.json", "../node_modules/tr46/index.js", "../node_modules/whatwg-url/lib/url-state-machine.js", "../node_modules/whatwg-url/lib/URL-impl.js", "../node_modules/whatwg-url/lib/URL.js", "../node_modules/whatwg-url/lib/public-api.js", "../node_modules/node-fetch/lib/index.js", "../node_modules/bicep-node/src/utils/install.ts", "../node_modules/vscode-jsonrpc/lib/common/is.js", "../node_modules/vscode-jsonrpc/lib/common/messages.js", "../node_modules/vscode-jsonrpc/lib/common/linkedMap.js", "../node_modules/vscode-jsonrpc/lib/common/disposable.js", "../node_modules/vscode-jsonrpc/lib/common/ral.js", "../node_modules/vscode-jsonrpc/lib/common/events.js", "../node_modules/vscode-jsonrpc/lib/common/cancellation.js", "../node_modules/vscode-jsonrpc/lib/common/sharedArrayCancellation.js", "../node_modules/vscode-jsonrpc/lib/common/semaphore.js", "../node_modules/vscode-jsonrpc/lib/common/messageReader.js", "../node_modules/vscode-jsonrpc/lib/common/messageWriter.js", "../node_modules/vscode-jsonrpc/lib/common/messageBuffer.js", "../node_modules/vscode-jsonrpc/lib/common/connection.js", "../node_modules/vscode-jsonrpc/lib/common/api.js", "../node_modules/vscode-jsonrpc/lib/node/ril.js", "../node_modules/vscode-jsonrpc/lib/node/main.js", "../node_modules/vscode-jsonrpc/node.js", "../node_modules/bicep-node/src/utils/jsonrpc.ts", "../node_modules/bicep-node/src/utils/bicep.ts", "../node_modules/bicep-node/dist/utils/types.js", "../node_modules/bicep-node/src/index.ts", "../node_modules/tslib/tslib.es6.mjs", "../node_modules/ms/index.js", "../node_modules/debug/src/common.js", "../node_modules/debug/src/browser.js", "../node_modules/has-flag/index.js", "../node_modules/supports-color/index.js", "../node_modules/debug/src/node.js", "../node_modules/debug/src/index.js", "../node_modules/agent-base/src/helpers.ts", "../node_modules/agent-base/src/index.ts", "../node_modules/https-proxy-agent/src/parse-proxy-response.ts", "../node_modules/https-proxy-agent/src/index.ts", "../node_modules/http-proxy-agent/src/index.ts", "../node_modules/@azure/core-tracing/src/state-cjs.cts", "../node_modules/@azure/core-client/src/state-cjs.cts", "../node_modules/@azure/core-client/src/base64.ts", "../node_modules/@azure/core-client/src/interfaces.ts", "../node_modules/@azure/core-client/src/utils.ts", "../node_modules/@azure/core-client/src/serializer.ts", "../node_modules/@azure/core-rest-pipeline/src/pipeline.ts", "../node_modules/@azure/logger/src/log.ts", "../node_modules/@azure/logger/src/debug.ts", "../node_modules/@azure/logger/src/index.ts", "../node_modules/@azure/core-rest-pipeline/src/log.ts", "../node_modules/@azure/core-util/node_modules/@azure/abort-controller/src/AbortError.ts", "../node_modules/@azure/core-util/node_modules/@azure/abort-controller/src/index.ts", "../node_modules/@azure/core-util/src/createAbortablePromise.ts", "../node_modules/@azure/core-util/src/random.ts", "../node_modules/@azure/core-util/src/delay.ts", "../node_modules/@azure/core-util/src/aborterUtils.ts", "../node_modules/@azure/core-util/src/object.ts", "../node_modules/@azure/core-util/src/error.ts", "../node_modules/@azure/core-util/src/sha256.ts", "../node_modules/@azure/core-util/src/typeGuards.ts", "../node_modules/@azure/core-util/src/uuidUtils.ts", "../node_modules/@azure/core-util/src/checkEnvironment.ts", "../node_modules/@azure/core-util/src/bytesEncoding.ts", "../node_modules/@azure/core-util/src/index.ts", "../node_modules/@azure/core-rest-pipeline/src/util/sanitizer.ts", "../node_modules/@azure/core-rest-pipeline/src/policies/logPolicy.ts", "../node_modules/@azure/core-rest-pipeline/src/policies/redirectPolicy.ts", "../node_modules/@azure/core-rest-pipeline/src/util/userAgentPlatform.ts", "../node_modules/@azure/core-rest-pipeline/src/constants.ts", "../node_modules/@azure/core-rest-pipeline/src/util/userAgent.ts", "../node_modules/@azure/core-rest-pipeline/src/policies/userAgentPolicy.ts", "../node_modules/@azure/core-rest-pipeline/src/util/typeGuards.ts", "../node_modules/@azure/core-rest-pipeline/src/util/file.ts", "../node_modules/@azure/core-rest-pipeline/src/util/concat.ts", "../node_modules/@azure/core-rest-pipeline/src/policies/multipartPolicy.ts", "../node_modules/@azure/core-rest-pipeline/src/policies/decompressResponsePolicy.ts", "../node_modules/@azure/core-rest-pipeline/node_modules/@azure/abort-controller/src/AbortError.ts", "../node_modules/@azure/core-rest-pipeline/node_modules/@azure/abort-controller/src/index.ts", "../node_modules/@azure/core-rest-pipeline/src/util/helpers.ts", "../node_modules/@azure/core-rest-pipeline/src/retryStrategies/throttlingRetryStrategy.ts", "../node_modules/@azure/core-rest-pipeline/src/retryStrategies/exponentialRetryStrategy.ts", "../node_modules/@azure/core-rest-pipeline/src/policies/retryPolicy.ts", "../node_modules/@azure/core-rest-pipeline/src/policies/defaultRetryPolicy.ts", "../node_modules/@azure/core-rest-pipeline/src/httpHeaders.ts", "../node_modules/@azure/core-rest-pipeline/src/policies/formDataPolicy.ts", "../node_modules/@azure/core-rest-pipeline/src/policies/proxyPolicy.ts", "../node_modules/@azure/core-rest-pipeline/src/policies/setClientRequestIdPolicy.ts", "../node_modules/@azure/core-rest-pipeline/src/policies/agentPolicy.ts", "../node_modules/@azure/core-rest-pipeline/src/policies/tlsPolicy.ts", "../node_modules/@azure/core-tracing/src/tracingContext.ts", "../node_modules/@azure/core-tracing/src/instrumenter.ts", "../node_modules/@azure/core-tracing/src/tracingClient.ts", "../node_modules/@azure/core-tracing/src/index.ts", "../node_modules/@azure/core-rest-pipeline/src/util/inspect.ts", "../node_modules/@azure/core-rest-pipeline/src/restError.ts", "../node_modules/@azure/core-rest-pipeline/src/policies/tracingPolicy.ts", "../node_modules/@azure/core-rest-pipeline/src/createPipelineFromOptions.ts", "../node_modules/@azure/core-rest-pipeline/src/nodeHttpClient.ts", "../node_modules/@azure/core-rest-pipeline/src/defaultHttpClient.ts", "../node_modules/@azure/core-rest-pipeline/src/pipelineRequest.ts", "../node_modules/@azure/core-rest-pipeline/src/policies/exponentialRetryPolicy.ts", "../node_modules/@azure/core-rest-pipeline/src/policies/systemErrorRetryPolicy.ts", "../node_modules/@azure/core-rest-pipeline/src/policies/throttlingRetryPolicy.ts", "../node_modules/@azure/core-rest-pipeline/src/util/tokenCycler.ts", "../node_modules/@azure/core-rest-pipeline/src/policies/bearerTokenAuthenticationPolicy.ts", "../node_modules/@azure/core-rest-pipeline/src/policies/ndJsonPolicy.ts", "../node_modules/@azure/core-rest-pipeline/src/policies/auxiliaryAuthenticationHeaderPolicy.ts", "../node_modules/@azure/core-rest-pipeline/src/index.ts", "../node_modules/@azure/core-client/src/operationHelpers.ts", "../node_modules/@azure/core-client/src/deserializationPolicy.ts", "../node_modules/@azure/core-client/src/interfaceHelpers.ts", "../node_modules/@azure/core-client/src/serializationPolicy.ts", "../node_modules/@azure/core-client/src/pipeline.ts", "../node_modules/@azure/core-client/src/httpClientCache.ts", "../node_modules/@azure/core-client/src/urlHelpers.ts", "../node_modules/@azure/core-client/src/log.ts", "../node_modules/@azure/core-client/src/serviceClient.ts", "../node_modules/@azure/core-client/src/authorizeRequestOnClaimChallenge.ts", "../node_modules/@azure/core-client/src/authorizeRequestOnTenantChallenge.ts", "../node_modules/@azure/core-client/src/index.ts", "../node_modules/@azure/core-lro/src/logger.ts", "../node_modules/@azure/core-lro/src/poller/constants.ts", "../node_modules/@azure/core-lro/src/poller/operation.ts", "../node_modules/@azure/core-lro/src/http/operation.ts", "../node_modules/@azure/core-lro/src/poller/poller.ts", "../node_modules/@azure/core-lro/src/http/poller.ts", "../node_modules/@azure/core-lro/src/legacy/lroEngine/operation.ts", "../node_modules/@azure/core-lro/src/legacy/poller.ts", "../node_modules/@azure/core-lro/src/legacy/lroEngine/lroEngine.ts", "../node_modules/@azure/core-lro/src/legacy/lroEngine/index.ts", "../node_modules/@azure/core-lro/src/index.ts", "../node_modules/@azure/arm-resourcesdeploymentstacks/src/pagingHelper.ts", "../node_modules/@azure/arm-resourcesdeploymentstacks/src/models/index.ts", "../node_modules/@azure/arm-resourcesdeploymentstacks/src/models/mappers.ts", "../node_modules/@azure/arm-resourcesdeploymentstacks/src/models/parameters.ts", "../node_modules/@azure/arm-resourcesdeploymentstacks/src/lroImpl.ts", "../node_modules/@azure/arm-resourcesdeploymentstacks/src/operations/deploymentStacks.ts", "../node_modules/@azure/arm-resourcesdeploymentstacks/src/deploymentStacksClient.ts", "../node_modules/safe-buffer/index.js", "../node_modules/jws/lib/data-stream.js", "../node_modules/ecdsa-sig-formatter/src/param-bytes-for-alg.js", "../node_modules/ecdsa-sig-formatter/src/ecdsa-sig-formatter.js", "../node_modules/buffer-equal-constant-time/index.js", "../node_modules/jwa/index.js", "../node_modules/jws/lib/tostring.js", "../node_modules/jws/lib/sign-stream.js", "../node_modules/jws/lib/verify-stream.js", "../node_modules/jws/index.js", "../node_modules/jsonwebtoken/decode.js", "../node_modules/jsonwebtoken/lib/JsonWebTokenError.js", "../node_modules/jsonwebtoken/lib/NotBeforeError.js", "../node_modules/jsonwebtoken/lib/TokenExpiredError.js", "../node_modules/jsonwebtoken/lib/timespan.js", "../node_modules/semver/internal/constants.js", "../node_modules/semver/internal/debug.js", "../node_modules/semver/internal/re.js", "../node_modules/semver/internal/parse-options.js", "../node_modules/semver/internal/identifiers.js", "../node_modules/semver/classes/semver.js", "../node_modules/semver/functions/parse.js", "../node_modules/semver/functions/valid.js", "../node_modules/semver/functions/clean.js", "../node_modules/semver/functions/inc.js", "../node_modules/semver/functions/diff.js", "../node_modules/semver/functions/major.js", "../node_modules/semver/functions/minor.js", "../node_modules/semver/functions/patch.js", "../node_modules/semver/functions/prerelease.js", "../node_modules/semver/functions/compare.js", "../node_modules/semver/functions/rcompare.js", "../node_modules/semver/functions/compare-loose.js", "../node_modules/semver/functions/compare-build.js", "../node_modules/semver/functions/sort.js", "../node_modules/semver/functions/rsort.js", "../node_modules/semver/functions/gt.js", "../node_modules/semver/functions/lt.js", "../node_modules/semver/functions/eq.js", "../node_modules/semver/functions/neq.js", "../node_modules/semver/functions/gte.js", "../node_modules/semver/functions/lte.js", "../node_modules/semver/functions/cmp.js", "../node_modules/semver/functions/coerce.js", "../node_modules/semver/internal/lrucache.js", "../node_modules/semver/classes/range.js", "../node_modules/semver/classes/comparator.js", "../node_modules/semver/functions/satisfies.js", "../node_modules/semver/ranges/to-comparators.js", "../node_modules/semver/ranges/max-satisfying.js", "../node_modules/semver/ranges/min-satisfying.js", "../node_modules/semver/ranges/min-version.js", "../node_modules/semver/ranges/valid.js", "../node_modules/semver/ranges/outside.js", "../node_modules/semver/ranges/gtr.js", "../node_modules/semver/ranges/ltr.js", "../node_modules/semver/ranges/intersects.js", "../node_modules/semver/ranges/simplify.js", "../node_modules/semver/ranges/subset.js", "../node_modules/semver/index.js", "../node_modules/jsonwebtoken/lib/asymmetricKeyDetailsSupported.js", "../node_modules/jsonwebtoken/lib/rsaPssKeyDetailsSupported.js", "../node_modules/jsonwebtoken/lib/validateAsymmetricKey.js", "../node_modules/jsonwebtoken/lib/psSupported.js", "../node_modules/jsonwebtoken/verify.js", "../node_modules/lodash.includes/index.js", "../node_modules/lodash.isboolean/index.js", "../node_modules/lodash.isinteger/index.js", "../node_modules/lodash.isnumber/index.js", "../node_modules/lodash.isplainobject/index.js", "../node_modules/lodash.isstring/index.js", "../node_modules/lodash.once/index.js", "../node_modules/jsonwebtoken/sign.js", "../node_modules/jsonwebtoken/index.js", "../node_modules/is-docker/index.js", "../node_modules/is-inside-container/index.js", "../node_modules/is-wsl/index.js", "../node_modules/define-lazy-prop/index.js", "../node_modules/default-browser-id/index.js", "../node_modules/run-applescript/index.js", "../node_modules/bundle-name/index.js", "../node_modules/default-browser/windows.js", "../node_modules/default-browser/index.js", "../node_modules/open/index.js", "../src/main.ts", "../src/helpers/input.ts", "../src/helpers/file.ts", "../src/helpers/logging.ts", "../src/config.ts", "../src/handler.ts", "../node_modules/@azure/core-rest-pipeline/src/pipeline.ts", "../node_modules/@azure/logger/src/log.ts", "../node_modules/@azure/logger/src/debug.ts", "../node_modules/@azure/logger/src/index.ts", "../node_modules/@azure/core-rest-pipeline/src/log.ts", "../node_modules/@azure/core-util/node_modules/@azure/abort-controller/src/AbortError.ts", "../node_modules/@azure/core-util/src/createAbortablePromise.ts", "../node_modules/@azure/core-util/src/random.ts", "../node_modules/@azure/core-util/src/delay.ts", "../node_modules/@azure/core-util/src/object.ts", "../node_modules/@azure/core-util/src/error.ts", "../node_modules/@azure/core-util/src/uuidUtils.ts", "../node_modules/@azure/core-util/src/checkEnvironment.ts", "../node_modules/@azure/core-util/src/bytesEncoding.ts", "../node_modules/@azure/core-rest-pipeline/src/util/sanitizer.ts", "../node_modules/@azure/core-rest-pipeline/src/policies/logPolicy.ts", "../node_modules/@azure/core-rest-pipeline/src/policies/redirectPolicy.ts", "../node_modules/@azure/core-rest-pipeline/src/util/userAgentPlatform.ts", "../node_modules/@azure/core-rest-pipeline/src/constants.ts", "../node_modules/@azure/core-rest-pipeline/src/util/userAgent.ts", "../node_modules/@azure/core-rest-pipeline/src/policies/userAgentPolicy.ts", "../node_modules/@azure/core-rest-pipeline/src/util/concat.ts", "../node_modules/@azure/core-rest-pipeline/src/util/typeGuards.ts", "../node_modules/@azure/core-rest-pipeline/src/util/file.ts", "../node_modules/@azure/core-rest-pipeline/src/policies/multipartPolicy.ts", "../node_modules/@azure/core-rest-pipeline/src/policies/decompressResponsePolicy.ts", "../node_modules/@azure/core-rest-pipeline/node_modules/@azure/abort-controller/src/AbortError.ts", "../node_modules/@azure/core-rest-pipeline/src/util/helpers.ts", "../node_modules/@azure/core-rest-pipeline/src/retryStrategies/throttlingRetryStrategy.ts", "../node_modules/@azure/core-rest-pipeline/src/retryStrategies/exponentialRetryStrategy.ts", "../node_modules/@azure/core-rest-pipeline/src/policies/retryPolicy.ts", "../node_modules/@azure/core-rest-pipeline/src/policies/defaultRetryPolicy.ts", "../node_modules/@azure/core-rest-pipeline/src/httpHeaders.ts", "../node_modules/@azure/core-rest-pipeline/src/policies/formDataPolicy.ts", "../node_modules/@azure/core-rest-pipeline/src/policies/proxyPolicy.ts", "../node_modules/@azure/core-rest-pipeline/src/policies/setClientRequestIdPolicy.ts", "../node_modules/@azure/core-rest-pipeline/src/policies/agentPolicy.ts", "../node_modules/@azure/core-rest-pipeline/src/policies/tlsPolicy.ts", "../node_modules/@azure/core-tracing/src/tracingContext.ts", "../node_modules/@azure/core-tracing/src/state.ts", "../node_modules/@azure/core-tracing/src/instrumenter.ts", "../node_modules/@azure/core-tracing/src/tracingClient.ts", "../node_modules/@azure/core-rest-pipeline/src/util/inspect.ts", "../node_modules/@azure/core-rest-pipeline/src/restError.ts", "../node_modules/@azure/core-rest-pipeline/src/policies/tracingPolicy.ts", "../node_modules/@azure/core-rest-pipeline/src/createPipelineFromOptions.ts", "../node_modules/@azure/core-rest-pipeline/src/nodeHttpClient.ts", "../node_modules/@azure/core-rest-pipeline/src/defaultHttpClient.ts", "../node_modules/@azure/core-rest-pipeline/src/pipelineRequest.ts", "../node_modules/@azure/core-rest-pipeline/src/util/tokenCycler.ts", "../node_modules/@azure/core-rest-pipeline/src/policies/bearerTokenAuthenticationPolicy.ts", "../node_modules/@azure/arm-resources/src/pagingHelper.ts", "../node_modules/@azure/arm-resources/src/models/index.ts", "../node_modules/@azure/core-client/src/base64.ts", "../node_modules/@azure/core-client/src/utils.ts", "../node_modules/@azure/core-client/src/serializer.ts", "../node_modules/@azure/core-client/src/state.ts", "../node_modules/@azure/core-client/src/operationHelpers.ts", "../node_modules/@azure/core-client/src/deserializationPolicy.ts", "../node_modules/@azure/core-client/src/interfaceHelpers.ts", "../node_modules/@azure/core-client/src/serializationPolicy.ts", "../node_modules/@azure/core-client/src/pipeline.ts", "../node_modules/@azure/core-client/src/httpClientCache.ts", "../node_modules/@azure/core-client/src/urlHelpers.ts", "../node_modules/@azure/core-client/src/log.ts", "../node_modules/@azure/core-client/src/serviceClient.ts", "../node_modules/@azure/core-client/src/authorizeRequestOnClaimChallenge.ts", "../node_modules/@azure/arm-resources/src/models/mappers.ts", "../node_modules/@azure/arm-resources/src/models/parameters.ts", "../node_modules/@azure/arm-resources/src/operations/operations.ts", "../node_modules/@azure/core-lro/src/logger.ts", "../node_modules/@azure/core-lro/src/poller/constants.ts", "../node_modules/@azure/core-lro/src/poller/operation.ts", "../node_modules/@azure/core-lro/src/http/operation.ts", "../node_modules/@azure/core-lro/src/poller/poller.ts", "../node_modules/@azure/core-lro/src/http/poller.ts", "../node_modules/@azure/arm-resources/src/lroImpl.ts", "../node_modules/@azure/arm-resources/src/operations/deployments.ts", "../node_modules/@azure/arm-resources/src/operations/providers.ts", "../node_modules/@azure/arm-resources/src/operations/providerResourceTypes.ts", "../node_modules/@azure/arm-resources/src/operations/resources.ts", "../node_modules/@azure/arm-resources/src/operations/resourceGroups.ts", "../node_modules/@azure/arm-resources/src/operations/tagsOperations.ts", "../node_modules/@azure/arm-resources/src/operations/deploymentOperations.ts", "../node_modules/@azure/arm-resources/src/resourceManagementClient.ts", "../src/helpers/azure.ts", "../node_modules/@azure/identity/src/constants.ts", "../node_modules/@azure/identity/src/msal/nodeFlows/msalPlugins.ts", "../node_modules/@azure/identity/src/util/logging.ts", "../node_modules/@azure/identity/src/errors.ts", "../node_modules/@azure/identity/src/util/processMultiTenantRequest.ts", "../node_modules/@azure/identity/src/util/tenantIdUtils.ts", "../node_modules/@azure/identity/src/util/identityTokenEndpoint.ts", "../node_modules/@azure/identity/src/util/tracing.ts", "../node_modules/@azure/identity/src/credentials/managedIdentityCredential/utils.ts", "../node_modules/@azure/identity/src/client/identityClient.ts", "../node_modules/@azure/identity/src/credentials/visualStudioCodeCredential.ts", "../node_modules/@azure/msal-node/dist/index.mjs", "../node_modules/@azure/msal-node/src/cache/serializer/Serializer.ts", "../node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/utils/Constants.ts", "../node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/error/AuthErrorCodes.ts", "../node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/error/AuthError.ts", "../node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/error/ClientAuthErrorCodes.ts", "../node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/error/ClientAuthError.ts", "../node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/crypto/ICrypto.ts", "../node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/logger/Logger.ts", "../node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/packageMetadata.ts", "../node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/authority/AuthorityOptions.ts", "../node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/account/AuthToken.ts", "../node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/utils/TimeUtils.ts", "../node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/cache/utils/CacheHelpers.ts", "../node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/error/ClientConfigurationErrorCodes.ts", "../node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/error/ClientConfigurationError.ts", "../node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/utils/StringUtils.ts", "../node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/request/ScopeSet.ts", "../node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/account/ClientInfo.ts", "../node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/account/AccountInfo.ts", "../node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/authority/AuthorityType.ts", "../node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/account/TokenClaims.ts", "../node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/authority/ProtocolMode.ts", "../node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/cache/entities/AccountEntity.ts", "../node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/utils/UrlUtils.ts", "../node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/url/UrlString.ts", "../node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/authority/AuthorityMetadata.ts", "../node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/error/CacheErrorCodes.ts", "../node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/error/CacheError.ts", "../node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/cache/CacheManager.ts", "../node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/telemetry/performance/PerformanceEvent.ts", "../node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/telemetry/performance/StubPerformanceClient.ts", "../node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/config/ClientConfiguration.ts", "../node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/account/CcsCredential.ts", "../node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/constants/AADServerParamKeys.ts", "../node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/request/RequestParameterBuilder.ts", "../node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/authority/OpenIdConfigResponse.ts", "../node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/authority/CloudInstanceDiscoveryResponse.ts", "../node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/authority/CloudInstanceDiscoveryErrorResponse.ts", "../node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/utils/FunctionWrappers.ts", "../node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/authority/RegionDiscovery.ts", "../node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/authority/Authority.ts", "../node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/authority/AuthorityFactory.ts", "../node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/error/ServerError.ts", "../node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/network/RequestThumbprint.ts", "../node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/network/ThrottlingUtils.ts", "../node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/error/NetworkError.ts", "../node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/client/BaseClient.ts", "../node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/error/InteractionRequiredAuthErrorCodes.ts", "../node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/error/InteractionRequiredAuthError.ts", "../node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/utils/ProtocolUtils.ts", "../node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/crypto/PopTokenGenerator.ts", "../node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/cache/persistence/TokenCacheContext.ts", "../node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/response/ResponseHandler.ts", "../node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/request/RequestValidator.ts", "../node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/utils/ClientAssertionUtils.ts", "../node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/client/AuthorizationCodeClient.ts", "../node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/client/RefreshTokenClient.ts", "../node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/client/SilentFlowClient.ts", "../node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/protocol/Authorize.ts", "../node_modules/@azure/msal-node/node_modules/@azure/msal-common/src/telemetry/server/ServerTelemetryManager.ts", "../node_modules/@azure/msal-node/src/cache/serializer/Deserializer.ts", "../node_modules/@azure/msal-node/src/utils/Constants.ts", "../node_modules/@azure/msal-node/src/utils/NetworkUtils.ts", "../node_modules/@azure/msal-node/src/network/HttpClient.ts", "../node_modules/@azure/msal-node/src/error/ManagedIdentityErrorCodes.ts", "../node_modules/@azure/msal-node/src/error/ManagedIdentityError.ts", "../node_modules/@azure/msal-node/src/config/ManagedIdentityId.ts", "../node_modules/@azure/msal-node/src/error/NodeAuthError.ts", "../node_modules/@azure/msal-node/src/config/Configuration.ts", "../node_modules/uuid/dist/esm-node/rng.js", "../node_modules/uuid/dist/esm-node/regex.js", "../node_modules/uuid/dist/esm-node/validate.js", "../node_modules/uuid/dist/esm-node/stringify.js", "../node_modules/uuid/dist/esm-node/v4.js", "../node_modules/@azure/msal-node/src/crypto/GuidGenerator.ts", "../node_modules/@azure/msal-node/src/utils/EncodingUtils.ts", "../node_modules/@azure/msal-node/src/crypto/HashUtils.ts", "../node_modules/@azure/msal-node/src/crypto/PkceGenerator.ts", "../node_modules/@azure/msal-node/src/crypto/CryptoProvider.ts", "../node_modules/@azure/msal-node/src/cache/NodeStorage.ts", "../node_modules/@azure/msal-node/src/cache/TokenCache.ts", "../node_modules/@azure/msal-node/src/client/ClientAssertion.ts", "../node_modules/@azure/msal-node/src/packageMetadata.ts", "../node_modules/@azure/msal-node/src/client/UsernamePasswordClient.ts", "../node_modules/@azure/msal-node/src/protocol/Authorize.ts", "../node_modules/@azure/msal-node/src/client/ClientApplication.ts", "../node_modules/@azure/msal-node/src/network/LoopbackClient.ts", "../node_modules/@azure/msal-node/src/client/DeviceCodeClient.ts", "../node_modules/@azure/msal-node/src/client/PublicClientApplication.ts", "../node_modules/@azure/msal-node/src/client/ClientCredentialClient.ts", "../node_modules/@azure/msal-node/src/client/OnBehalfOfClient.ts", "../node_modules/@azure/msal-node/src/client/ConfidentialClientApplication.ts", "../node_modules/@azure/msal-node/src/utils/TimeUtils.ts", "../node_modules/@azure/msal-node/src/network/HttpClientWithRetries.ts", "../node_modules/@azure/msal-node/src/client/ManagedIdentitySources/BaseManagedIdentitySource.ts", "../node_modules/@azure/msal-node/src/retry/LinearRetryStrategy.ts", "../node_modules/@azure/msal-node/src/retry/DefaultManagedIdentityRetryPolicy.ts", "../node_modules/@azure/msal-node/src/config/ManagedIdentityRequestParameters.ts", "../node_modules/@azure/msal-node/src/client/ManagedIdentitySources/AppService.ts", "../node_modules/@azure/msal-node/src/client/ManagedIdentitySources/AzureArc.ts", "../node_modules/@azure/msal-node/src/client/ManagedIdentitySources/CloudShell.ts", "../node_modules/@azure/msal-node/src/retry/ExponentialRetryStrategy.ts", "../node_modules/@azure/msal-node/src/retry/ImdsRetryPolicy.ts", "../node_modules/@azure/msal-node/src/client/ManagedIdentitySources/Imds.ts", "../node_modules/@azure/msal-node/src/client/ManagedIdentitySources/ServiceFabric.ts", "../node_modules/@azure/msal-node/src/client/ManagedIdentitySources/MachineLearning.ts", "../node_modules/@azure/msal-node/src/client/ManagedIdentityClient.ts", "../node_modules/@azure/msal-node/src/client/ManagedIdentityApplication.ts", "../node_modules/@azure/msal-node/src/cache/distributed/DistributedCachePlugin.ts", "../node_modules/@azure/identity/node_modules/@azure/abort-controller/src/AbortError.ts", "../node_modules/@azure/identity/src/msal/utils.ts", "../node_modules/@azure/identity/src/credentials/managedIdentityCredential/imdsRetryPolicy.ts", "../node_modules/@azure/identity/src/credentials/managedIdentityCredential/imdsMsi.ts", "../node_modules/@azure/identity/src/regionalAuthority.ts", "../node_modules/@azure/identity/src/msal/nodeFlows/msalClient.ts", "../node_modules/@azure/identity/src/credentials/clientAssertionCredential.ts", "../node_modules/@azure/identity/src/credentials/workloadIdentityCredential.ts", "../node_modules/@azure/identity/src/credentials/managedIdentityCredential/tokenExchangeMsi.ts", "../node_modules/@azure/identity/src/credentials/managedIdentityCredential/index.ts", "../node_modules/@azure/identity/src/util/scopeUtils.ts", "../node_modules/@azure/identity/src/credentials/azureCliCredential.ts", "../node_modules/@azure/identity/src/util/subscriptionUtils.ts", "../node_modules/@azure/identity/src/credentials/azureDeveloperCliCredential.ts", "../node_modules/@azure/identity/src/util/processUtils.ts", "../node_modules/@azure/identity/src/credentials/azurePowerShellCredential.ts", "../node_modules/@azure/identity/src/credentials/chainedTokenCredential.ts", "../node_modules/@azure/identity/src/credentials/clientCertificateCredential.ts", "../node_modules/@azure/identity/src/credentials/clientSecretCredential.ts", "../node_modules/@azure/identity/src/credentials/usernamePasswordCredential.ts", "../node_modules/@azure/identity/src/credentials/environmentCredential.ts", "../node_modules/@azure/identity/src/credentials/defaultAzureCredential.ts", "../node_modules/@azure/identity/src/credentials/interactiveBrowserCredential.ts", "../node_modules/@azure/identity/src/credentials/deviceCodeCredential.ts", "../node_modules/@azure/identity/src/credentials/azurePipelinesCredential.ts", "../node_modules/@azure/identity/src/credentials/authorizationCodeCredential.ts", "../node_modules/@azure/identity/src/credentials/onBehalfOfCredential.ts", "../src/helpers/whatif.ts", "../src/index.ts"], - "sourcesContent": [null, null, null, null, "'use strict';\n\nvar net = require('net');\nvar tls = require('tls');\nvar http = require('http');\nvar https = require('https');\nvar events = require('events');\nvar assert = require('assert');\nvar util = require('util');\n\n\nexports.httpOverHttp = httpOverHttp;\nexports.httpsOverHttp = httpsOverHttp;\nexports.httpOverHttps = httpOverHttps;\nexports.httpsOverHttps = httpsOverHttps;\n\n\nfunction httpOverHttp(options) {\n var agent = new TunnelingAgent(options);\n agent.request = http.request;\n return agent;\n}\n\nfunction httpsOverHttp(options) {\n var agent = new TunnelingAgent(options);\n agent.request = http.request;\n agent.createSocket = createSecureSocket;\n agent.defaultPort = 443;\n return agent;\n}\n\nfunction httpOverHttps(options) {\n var agent = new TunnelingAgent(options);\n agent.request = https.request;\n return agent;\n}\n\nfunction httpsOverHttps(options) {\n var agent = new TunnelingAgent(options);\n agent.request = https.request;\n agent.createSocket = createSecureSocket;\n agent.defaultPort = 443;\n return agent;\n}\n\n\nfunction TunnelingAgent(options) {\n var self = this;\n self.options = options || {};\n self.proxyOptions = self.options.proxy || {};\n self.maxSockets = self.options.maxSockets || http.Agent.defaultMaxSockets;\n self.requests = [];\n self.sockets = [];\n\n self.on('free', function onFree(socket, host, port, localAddress) {\n var options = toOptions(host, port, localAddress);\n for (var i = 0, len = self.requests.length; i < len; ++i) {\n var pending = self.requests[i];\n if (pending.host === options.host && pending.port === options.port) {\n // Detect the request to connect same origin server,\n // reuse the connection.\n self.requests.splice(i, 1);\n pending.request.onSocket(socket);\n return;\n }\n }\n socket.destroy();\n self.removeSocket(socket);\n });\n}\nutil.inherits(TunnelingAgent, events.EventEmitter);\n\nTunnelingAgent.prototype.addRequest = function addRequest(req, host, port, localAddress) {\n var self = this;\n var options = mergeOptions({request: req}, self.options, toOptions(host, port, localAddress));\n\n if (self.sockets.length >= this.maxSockets) {\n // We are over limit so we'll add it to the queue.\n self.requests.push(options);\n return;\n }\n\n // If we are under maxSockets create a new one.\n self.createSocket(options, function(socket) {\n socket.on('free', onFree);\n socket.on('close', onCloseOrRemove);\n socket.on('agentRemove', onCloseOrRemove);\n req.onSocket(socket);\n\n function onFree() {\n self.emit('free', socket, options);\n }\n\n function onCloseOrRemove(err) {\n self.removeSocket(socket);\n socket.removeListener('free', onFree);\n socket.removeListener('close', onCloseOrRemove);\n socket.removeListener('agentRemove', onCloseOrRemove);\n }\n });\n};\n\nTunnelingAgent.prototype.createSocket = function createSocket(options, cb) {\n var self = this;\n var placeholder = {};\n self.sockets.push(placeholder);\n\n var connectOptions = mergeOptions({}, self.proxyOptions, {\n method: 'CONNECT',\n path: options.host + ':' + options.port,\n agent: false,\n headers: {\n host: options.host + ':' + options.port\n }\n });\n if (options.localAddress) {\n connectOptions.localAddress = options.localAddress;\n }\n if (connectOptions.proxyAuth) {\n connectOptions.headers = connectOptions.headers || {};\n connectOptions.headers['Proxy-Authorization'] = 'Basic ' +\n new Buffer(connectOptions.proxyAuth).toString('base64');\n }\n\n debug('making CONNECT request');\n var connectReq = self.request(connectOptions);\n connectReq.useChunkedEncodingByDefault = false; // for v0.6\n connectReq.once('response', onResponse); // for v0.6\n connectReq.once('upgrade', onUpgrade); // for v0.6\n connectReq.once('connect', onConnect); // for v0.7 or later\n connectReq.once('error', onError);\n connectReq.end();\n\n function onResponse(res) {\n // Very hacky. This is necessary to avoid http-parser leaks.\n res.upgrade = true;\n }\n\n function onUpgrade(res, socket, head) {\n // Hacky.\n process.nextTick(function() {\n onConnect(res, socket, head);\n });\n }\n\n function onConnect(res, socket, head) {\n connectReq.removeAllListeners();\n socket.removeAllListeners();\n\n if (res.statusCode !== 200) {\n debug('tunneling socket could not be established, statusCode=%d',\n res.statusCode);\n socket.destroy();\n var error = new Error('tunneling socket could not be established, ' +\n 'statusCode=' + res.statusCode);\n error.code = 'ECONNRESET';\n options.request.emit('error', error);\n self.removeSocket(placeholder);\n return;\n }\n if (head.length > 0) {\n debug('got illegal response body from proxy');\n socket.destroy();\n var error = new Error('got illegal response body from proxy');\n error.code = 'ECONNRESET';\n options.request.emit('error', error);\n self.removeSocket(placeholder);\n return;\n }\n debug('tunneling connection has established');\n self.sockets[self.sockets.indexOf(placeholder)] = socket;\n return cb(socket);\n }\n\n function onError(cause) {\n connectReq.removeAllListeners();\n\n debug('tunneling socket could not be established, cause=%s\\n',\n cause.message, cause.stack);\n var error = new Error('tunneling socket could not be established, ' +\n 'cause=' + cause.message);\n error.code = 'ECONNRESET';\n options.request.emit('error', error);\n self.removeSocket(placeholder);\n }\n};\n\nTunnelingAgent.prototype.removeSocket = function removeSocket(socket) {\n var pos = this.sockets.indexOf(socket)\n if (pos === -1) {\n return;\n }\n this.sockets.splice(pos, 1);\n\n var pending = this.requests.shift();\n if (pending) {\n // If we have pending requests and a socket gets closed a new one\n // needs to be created to take over in the pool for the one that closed.\n this.createSocket(pending, function(socket) {\n pending.request.onSocket(socket);\n });\n }\n};\n\nfunction createSecureSocket(options, cb) {\n var self = this;\n TunnelingAgent.prototype.createSocket.call(self, options, function(socket) {\n var hostHeader = options.request.getHeader('host');\n var tlsOptions = mergeOptions({}, self.options, {\n socket: socket,\n servername: hostHeader ? hostHeader.replace(/:.*$/, '') : options.host\n });\n\n // 0 is dummy port for v0.6\n var secureSocket = tls.connect(0, tlsOptions);\n self.sockets[self.sockets.indexOf(socket)] = secureSocket;\n cb(secureSocket);\n });\n}\n\n\nfunction toOptions(host, port, localAddress) {\n if (typeof host === 'string') { // since v0.10\n return {\n host: host,\n port: port,\n localAddress: localAddress\n };\n }\n return host; // for v0.11 or later\n}\n\nfunction mergeOptions(target) {\n for (var i = 1, len = arguments.length; i < len; ++i) {\n var overrides = arguments[i];\n if (typeof overrides === 'object') {\n var keys = Object.keys(overrides);\n for (var j = 0, keyLen = keys.length; j < keyLen; ++j) {\n var k = keys[j];\n if (overrides[k] !== undefined) {\n target[k] = overrides[k];\n }\n }\n }\n }\n return target;\n}\n\n\nvar debug;\nif (process.env.NODE_DEBUG && /\\btunnel\\b/.test(process.env.NODE_DEBUG)) {\n debug = function() {\n var args = Array.prototype.slice.call(arguments);\n if (typeof args[0] === 'string') {\n args[0] = 'TUNNEL: ' + args[0];\n } else {\n args.unshift('TUNNEL:');\n }\n console.error.apply(console, args);\n }\n} else {\n debug = function() {};\n}\nexports.debug = debug; // for test\n", "module.exports = require('./lib/tunnel');\n", "module.exports = {\n kClose: Symbol('close'),\n kDestroy: Symbol('destroy'),\n kDispatch: Symbol('dispatch'),\n kUrl: Symbol('url'),\n kWriting: Symbol('writing'),\n kResuming: Symbol('resuming'),\n kQueue: Symbol('queue'),\n kConnect: Symbol('connect'),\n kConnecting: Symbol('connecting'),\n kHeadersList: Symbol('headers list'),\n kKeepAliveDefaultTimeout: Symbol('default keep alive timeout'),\n kKeepAliveMaxTimeout: Symbol('max keep alive timeout'),\n kKeepAliveTimeoutThreshold: Symbol('keep alive timeout threshold'),\n kKeepAliveTimeoutValue: Symbol('keep alive timeout'),\n kKeepAlive: Symbol('keep alive'),\n kHeadersTimeout: Symbol('headers timeout'),\n kBodyTimeout: Symbol('body timeout'),\n kServerName: Symbol('server name'),\n kLocalAddress: Symbol('local address'),\n kHost: Symbol('host'),\n kNoRef: Symbol('no ref'),\n kBodyUsed: Symbol('used'),\n kRunning: Symbol('running'),\n kBlocking: Symbol('blocking'),\n kPending: Symbol('pending'),\n kSize: Symbol('size'),\n kBusy: Symbol('busy'),\n kQueued: Symbol('queued'),\n kFree: Symbol('free'),\n kConnected: Symbol('connected'),\n kClosed: Symbol('closed'),\n kNeedDrain: Symbol('need drain'),\n kReset: Symbol('reset'),\n kDestroyed: Symbol.for('nodejs.stream.destroyed'),\n kMaxHeadersSize: Symbol('max headers size'),\n kRunningIdx: Symbol('running index'),\n kPendingIdx: Symbol('pending index'),\n kError: Symbol('error'),\n kClients: Symbol('clients'),\n kClient: Symbol('client'),\n kParser: Symbol('parser'),\n kOnDestroyed: Symbol('destroy callbacks'),\n kPipelining: Symbol('pipelining'),\n kSocket: Symbol('socket'),\n kHostHeader: Symbol('host header'),\n kConnector: Symbol('connector'),\n kStrictContentLength: Symbol('strict content length'),\n kMaxRedirections: Symbol('maxRedirections'),\n kMaxRequests: Symbol('maxRequestsPerClient'),\n kProxy: Symbol('proxy agent options'),\n kCounter: Symbol('socket request counter'),\n kInterceptors: Symbol('dispatch interceptors'),\n kMaxResponseSize: Symbol('max response size'),\n kHTTP2Session: Symbol('http2Session'),\n kHTTP2SessionState: Symbol('http2Session state'),\n kHTTP2BuildRequest: Symbol('http2 build request'),\n kHTTP1BuildRequest: Symbol('http1 build request'),\n kHTTP2CopyHeaders: Symbol('http2 copy headers'),\n kHTTPConnVersion: Symbol('http connection version'),\n kRetryHandlerDefaultRetry: Symbol('retry agent default retry'),\n kConstruct: Symbol('constructable')\n}\n", "'use strict'\n\nclass UndiciError extends Error {\n constructor (message) {\n super(message)\n this.name = 'UndiciError'\n this.code = 'UND_ERR'\n }\n}\n\nclass ConnectTimeoutError extends UndiciError {\n constructor (message) {\n super(message)\n Error.captureStackTrace(this, ConnectTimeoutError)\n this.name = 'ConnectTimeoutError'\n this.message = message || 'Connect Timeout Error'\n this.code = 'UND_ERR_CONNECT_TIMEOUT'\n }\n}\n\nclass HeadersTimeoutError extends UndiciError {\n constructor (message) {\n super(message)\n Error.captureStackTrace(this, HeadersTimeoutError)\n this.name = 'HeadersTimeoutError'\n this.message = message || 'Headers Timeout Error'\n this.code = 'UND_ERR_HEADERS_TIMEOUT'\n }\n}\n\nclass HeadersOverflowError extends UndiciError {\n constructor (message) {\n super(message)\n Error.captureStackTrace(this, HeadersOverflowError)\n this.name = 'HeadersOverflowError'\n this.message = message || 'Headers Overflow Error'\n this.code = 'UND_ERR_HEADERS_OVERFLOW'\n }\n}\n\nclass BodyTimeoutError extends UndiciError {\n constructor (message) {\n super(message)\n Error.captureStackTrace(this, BodyTimeoutError)\n this.name = 'BodyTimeoutError'\n this.message = message || 'Body Timeout Error'\n this.code = 'UND_ERR_BODY_TIMEOUT'\n }\n}\n\nclass ResponseStatusCodeError extends UndiciError {\n constructor (message, statusCode, headers, body) {\n super(message)\n Error.captureStackTrace(this, ResponseStatusCodeError)\n this.name = 'ResponseStatusCodeError'\n this.message = message || 'Response Status Code Error'\n this.code = 'UND_ERR_RESPONSE_STATUS_CODE'\n this.body = body\n this.status = statusCode\n this.statusCode = statusCode\n this.headers = headers\n }\n}\n\nclass InvalidArgumentError extends UndiciError {\n constructor (message) {\n super(message)\n Error.captureStackTrace(this, InvalidArgumentError)\n this.name = 'InvalidArgumentError'\n this.message = message || 'Invalid Argument Error'\n this.code = 'UND_ERR_INVALID_ARG'\n }\n}\n\nclass InvalidReturnValueError extends UndiciError {\n constructor (message) {\n super(message)\n Error.captureStackTrace(this, InvalidReturnValueError)\n this.name = 'InvalidReturnValueError'\n this.message = message || 'Invalid Return Value Error'\n this.code = 'UND_ERR_INVALID_RETURN_VALUE'\n }\n}\n\nclass RequestAbortedError extends UndiciError {\n constructor (message) {\n super(message)\n Error.captureStackTrace(this, RequestAbortedError)\n this.name = 'AbortError'\n this.message = message || 'Request aborted'\n this.code = 'UND_ERR_ABORTED'\n }\n}\n\nclass InformationalError extends UndiciError {\n constructor (message) {\n super(message)\n Error.captureStackTrace(this, InformationalError)\n this.name = 'InformationalError'\n this.message = message || 'Request information'\n this.code = 'UND_ERR_INFO'\n }\n}\n\nclass RequestContentLengthMismatchError extends UndiciError {\n constructor (message) {\n super(message)\n Error.captureStackTrace(this, RequestContentLengthMismatchError)\n this.name = 'RequestContentLengthMismatchError'\n this.message = message || 'Request body length does not match content-length header'\n this.code = 'UND_ERR_REQ_CONTENT_LENGTH_MISMATCH'\n }\n}\n\nclass ResponseContentLengthMismatchError extends UndiciError {\n constructor (message) {\n super(message)\n Error.captureStackTrace(this, ResponseContentLengthMismatchError)\n this.name = 'ResponseContentLengthMismatchError'\n this.message = message || 'Response body length does not match content-length header'\n this.code = 'UND_ERR_RES_CONTENT_LENGTH_MISMATCH'\n }\n}\n\nclass ClientDestroyedError extends UndiciError {\n constructor (message) {\n super(message)\n Error.captureStackTrace(this, ClientDestroyedError)\n this.name = 'ClientDestroyedError'\n this.message = message || 'The client is destroyed'\n this.code = 'UND_ERR_DESTROYED'\n }\n}\n\nclass ClientClosedError extends UndiciError {\n constructor (message) {\n super(message)\n Error.captureStackTrace(this, ClientClosedError)\n this.name = 'ClientClosedError'\n this.message = message || 'The client is closed'\n this.code = 'UND_ERR_CLOSED'\n }\n}\n\nclass SocketError extends UndiciError {\n constructor (message, socket) {\n super(message)\n Error.captureStackTrace(this, SocketError)\n this.name = 'SocketError'\n this.message = message || 'Socket error'\n this.code = 'UND_ERR_SOCKET'\n this.socket = socket\n }\n}\n\nclass NotSupportedError extends UndiciError {\n constructor (message) {\n super(message)\n Error.captureStackTrace(this, NotSupportedError)\n this.name = 'NotSupportedError'\n this.message = message || 'Not supported error'\n this.code = 'UND_ERR_NOT_SUPPORTED'\n }\n}\n\nclass BalancedPoolMissingUpstreamError extends UndiciError {\n constructor (message) {\n super(message)\n Error.captureStackTrace(this, NotSupportedError)\n this.name = 'MissingUpstreamError'\n this.message = message || 'No upstream has been added to the BalancedPool'\n this.code = 'UND_ERR_BPL_MISSING_UPSTREAM'\n }\n}\n\nclass HTTPParserError extends Error {\n constructor (message, code, data) {\n super(message)\n Error.captureStackTrace(this, HTTPParserError)\n this.name = 'HTTPParserError'\n this.code = code ? `HPE_${code}` : undefined\n this.data = data ? data.toString() : undefined\n }\n}\n\nclass ResponseExceededMaxSizeError extends UndiciError {\n constructor (message) {\n super(message)\n Error.captureStackTrace(this, ResponseExceededMaxSizeError)\n this.name = 'ResponseExceededMaxSizeError'\n this.message = message || 'Response content exceeded max size'\n this.code = 'UND_ERR_RES_EXCEEDED_MAX_SIZE'\n }\n}\n\nclass RequestRetryError extends UndiciError {\n constructor (message, code, { headers, data }) {\n super(message)\n Error.captureStackTrace(this, RequestRetryError)\n this.name = 'RequestRetryError'\n this.message = message || 'Request retry error'\n this.code = 'UND_ERR_REQ_RETRY'\n this.statusCode = code\n this.data = data\n this.headers = headers\n }\n}\n\nmodule.exports = {\n HTTPParserError,\n UndiciError,\n HeadersTimeoutError,\n HeadersOverflowError,\n BodyTimeoutError,\n RequestContentLengthMismatchError,\n ConnectTimeoutError,\n ResponseStatusCodeError,\n InvalidArgumentError,\n InvalidReturnValueError,\n RequestAbortedError,\n ClientDestroyedError,\n ClientClosedError,\n InformationalError,\n SocketError,\n NotSupportedError,\n ResponseContentLengthMismatchError,\n BalancedPoolMissingUpstreamError,\n ResponseExceededMaxSizeError,\n RequestRetryError\n}\n", "'use strict'\n\n/** @type {Record} */\nconst headerNameLowerCasedRecord = {}\n\n// https://developer.mozilla.org/docs/Web/HTTP/Headers\nconst wellknownHeaderNames = [\n 'Accept',\n 'Accept-Encoding',\n 'Accept-Language',\n 'Accept-Ranges',\n 'Access-Control-Allow-Credentials',\n 'Access-Control-Allow-Headers',\n 'Access-Control-Allow-Methods',\n 'Access-Control-Allow-Origin',\n 'Access-Control-Expose-Headers',\n 'Access-Control-Max-Age',\n 'Access-Control-Request-Headers',\n 'Access-Control-Request-Method',\n 'Age',\n 'Allow',\n 'Alt-Svc',\n 'Alt-Used',\n 'Authorization',\n 'Cache-Control',\n 'Clear-Site-Data',\n 'Connection',\n 'Content-Disposition',\n 'Content-Encoding',\n 'Content-Language',\n 'Content-Length',\n 'Content-Location',\n 'Content-Range',\n 'Content-Security-Policy',\n 'Content-Security-Policy-Report-Only',\n 'Content-Type',\n 'Cookie',\n 'Cross-Origin-Embedder-Policy',\n 'Cross-Origin-Opener-Policy',\n 'Cross-Origin-Resource-Policy',\n 'Date',\n 'Device-Memory',\n 'Downlink',\n 'ECT',\n 'ETag',\n 'Expect',\n 'Expect-CT',\n 'Expires',\n 'Forwarded',\n 'From',\n 'Host',\n 'If-Match',\n 'If-Modified-Since',\n 'If-None-Match',\n 'If-Range',\n 'If-Unmodified-Since',\n 'Keep-Alive',\n 'Last-Modified',\n 'Link',\n 'Location',\n 'Max-Forwards',\n 'Origin',\n 'Permissions-Policy',\n 'Pragma',\n 'Proxy-Authenticate',\n 'Proxy-Authorization',\n 'RTT',\n 'Range',\n 'Referer',\n 'Referrer-Policy',\n 'Refresh',\n 'Retry-After',\n 'Sec-WebSocket-Accept',\n 'Sec-WebSocket-Extensions',\n 'Sec-WebSocket-Key',\n 'Sec-WebSocket-Protocol',\n 'Sec-WebSocket-Version',\n 'Server',\n 'Server-Timing',\n 'Service-Worker-Allowed',\n 'Service-Worker-Navigation-Preload',\n 'Set-Cookie',\n 'SourceMap',\n 'Strict-Transport-Security',\n 'Supports-Loading-Mode',\n 'TE',\n 'Timing-Allow-Origin',\n 'Trailer',\n 'Transfer-Encoding',\n 'Upgrade',\n 'Upgrade-Insecure-Requests',\n 'User-Agent',\n 'Vary',\n 'Via',\n 'WWW-Authenticate',\n 'X-Content-Type-Options',\n 'X-DNS-Prefetch-Control',\n 'X-Frame-Options',\n 'X-Permitted-Cross-Domain-Policies',\n 'X-Powered-By',\n 'X-Requested-With',\n 'X-XSS-Protection'\n]\n\nfor (let i = 0; i < wellknownHeaderNames.length; ++i) {\n const key = wellknownHeaderNames[i]\n const lowerCasedKey = key.toLowerCase()\n headerNameLowerCasedRecord[key] = headerNameLowerCasedRecord[lowerCasedKey] =\n lowerCasedKey\n}\n\n// Note: object prototypes should not be able to be referenced. e.g. `Object#hasOwnProperty`.\nObject.setPrototypeOf(headerNameLowerCasedRecord, null)\n\nmodule.exports = {\n wellknownHeaderNames,\n headerNameLowerCasedRecord\n}\n", "'use strict'\n\nconst assert = require('assert')\nconst { kDestroyed, kBodyUsed } = require('./symbols')\nconst { IncomingMessage } = require('http')\nconst stream = require('stream')\nconst net = require('net')\nconst { InvalidArgumentError } = require('./errors')\nconst { Blob } = require('buffer')\nconst nodeUtil = require('util')\nconst { stringify } = require('querystring')\nconst { headerNameLowerCasedRecord } = require('./constants')\n\nconst [nodeMajor, nodeMinor] = process.versions.node.split('.').map(v => Number(v))\n\nfunction nop () {}\n\nfunction isStream (obj) {\n return obj && typeof obj === 'object' && typeof obj.pipe === 'function' && typeof obj.on === 'function'\n}\n\n// based on https://github.com/node-fetch/fetch-blob/blob/8ab587d34080de94140b54f07168451e7d0b655e/index.js#L229-L241 (MIT License)\nfunction isBlobLike (object) {\n return (Blob && object instanceof Blob) || (\n object &&\n typeof object === 'object' &&\n (typeof object.stream === 'function' ||\n typeof object.arrayBuffer === 'function') &&\n /^(Blob|File)$/.test(object[Symbol.toStringTag])\n )\n}\n\nfunction buildURL (url, queryParams) {\n if (url.includes('?') || url.includes('#')) {\n throw new Error('Query params cannot be passed when url already contains \"?\" or \"#\".')\n }\n\n const stringified = stringify(queryParams)\n\n if (stringified) {\n url += '?' + stringified\n }\n\n return url\n}\n\nfunction parseURL (url) {\n if (typeof url === 'string') {\n url = new URL(url)\n\n if (!/^https?:/.test(url.origin || url.protocol)) {\n throw new InvalidArgumentError('Invalid URL protocol: the URL must start with `http:` or `https:`.')\n }\n\n return url\n }\n\n if (!url || typeof url !== 'object') {\n throw new InvalidArgumentError('Invalid URL: The URL argument must be a non-null object.')\n }\n\n if (!/^https?:/.test(url.origin || url.protocol)) {\n throw new InvalidArgumentError('Invalid URL protocol: the URL must start with `http:` or `https:`.')\n }\n\n if (!(url instanceof URL)) {\n if (url.port != null && url.port !== '' && !Number.isFinite(parseInt(url.port))) {\n throw new InvalidArgumentError('Invalid URL: port must be a valid integer or a string representation of an integer.')\n }\n\n if (url.path != null && typeof url.path !== 'string') {\n throw new InvalidArgumentError('Invalid URL path: the path must be a string or null/undefined.')\n }\n\n if (url.pathname != null && typeof url.pathname !== 'string') {\n throw new InvalidArgumentError('Invalid URL pathname: the pathname must be a string or null/undefined.')\n }\n\n if (url.hostname != null && typeof url.hostname !== 'string') {\n throw new InvalidArgumentError('Invalid URL hostname: the hostname must be a string or null/undefined.')\n }\n\n if (url.origin != null && typeof url.origin !== 'string') {\n throw new InvalidArgumentError('Invalid URL origin: the origin must be a string or null/undefined.')\n }\n\n const port = url.port != null\n ? url.port\n : (url.protocol === 'https:' ? 443 : 80)\n let origin = url.origin != null\n ? url.origin\n : `${url.protocol}//${url.hostname}:${port}`\n let path = url.path != null\n ? url.path\n : `${url.pathname || ''}${url.search || ''}`\n\n if (origin.endsWith('/')) {\n origin = origin.substring(0, origin.length - 1)\n }\n\n if (path && !path.startsWith('/')) {\n path = `/${path}`\n }\n // new URL(path, origin) is unsafe when `path` contains an absolute URL\n // From https://developer.mozilla.org/en-US/docs/Web/API/URL/URL:\n // If first parameter is a relative URL, second param is required, and will be used as the base URL.\n // If first parameter is an absolute URL, a given second param will be ignored.\n url = new URL(origin + path)\n }\n\n return url\n}\n\nfunction parseOrigin (url) {\n url = parseURL(url)\n\n if (url.pathname !== '/' || url.search || url.hash) {\n throw new InvalidArgumentError('invalid url')\n }\n\n return url\n}\n\nfunction getHostname (host) {\n if (host[0] === '[') {\n const idx = host.indexOf(']')\n\n assert(idx !== -1)\n return host.substring(1, idx)\n }\n\n const idx = host.indexOf(':')\n if (idx === -1) return host\n\n return host.substring(0, idx)\n}\n\n// IP addresses are not valid server names per RFC6066\n// > Currently, the only server names supported are DNS hostnames\nfunction getServerName (host) {\n if (!host) {\n return null\n }\n\n assert.strictEqual(typeof host, 'string')\n\n const servername = getHostname(host)\n if (net.isIP(servername)) {\n return ''\n }\n\n return servername\n}\n\nfunction deepClone (obj) {\n return JSON.parse(JSON.stringify(obj))\n}\n\nfunction isAsyncIterable (obj) {\n return !!(obj != null && typeof obj[Symbol.asyncIterator] === 'function')\n}\n\nfunction isIterable (obj) {\n return !!(obj != null && (typeof obj[Symbol.iterator] === 'function' || typeof obj[Symbol.asyncIterator] === 'function'))\n}\n\nfunction bodyLength (body) {\n if (body == null) {\n return 0\n } else if (isStream(body)) {\n const state = body._readableState\n return state && state.objectMode === false && state.ended === true && Number.isFinite(state.length)\n ? state.length\n : null\n } else if (isBlobLike(body)) {\n return body.size != null ? body.size : null\n } else if (isBuffer(body)) {\n return body.byteLength\n }\n\n return null\n}\n\nfunction isDestroyed (stream) {\n return !stream || !!(stream.destroyed || stream[kDestroyed])\n}\n\nfunction isReadableAborted (stream) {\n const state = stream && stream._readableState\n return isDestroyed(stream) && state && !state.endEmitted\n}\n\nfunction destroy (stream, err) {\n if (stream == null || !isStream(stream) || isDestroyed(stream)) {\n return\n }\n\n if (typeof stream.destroy === 'function') {\n if (Object.getPrototypeOf(stream).constructor === IncomingMessage) {\n // See: https://github.com/nodejs/node/pull/38505/files\n stream.socket = null\n }\n\n stream.destroy(err)\n } else if (err) {\n process.nextTick((stream, err) => {\n stream.emit('error', err)\n }, stream, err)\n }\n\n if (stream.destroyed !== true) {\n stream[kDestroyed] = true\n }\n}\n\nconst KEEPALIVE_TIMEOUT_EXPR = /timeout=(\\d+)/\nfunction parseKeepAliveTimeout (val) {\n const m = val.toString().match(KEEPALIVE_TIMEOUT_EXPR)\n return m ? parseInt(m[1], 10) * 1000 : null\n}\n\n/**\n * Retrieves a header name and returns its lowercase value.\n * @param {string | Buffer} value Header name\n * @returns {string}\n */\nfunction headerNameToString (value) {\n return headerNameLowerCasedRecord[value] || value.toLowerCase()\n}\n\nfunction parseHeaders (headers, obj = {}) {\n // For H2 support\n if (!Array.isArray(headers)) return headers\n\n for (let i = 0; i < headers.length; i += 2) {\n const key = headers[i].toString().toLowerCase()\n let val = obj[key]\n\n if (!val) {\n if (Array.isArray(headers[i + 1])) {\n obj[key] = headers[i + 1].map(x => x.toString('utf8'))\n } else {\n obj[key] = headers[i + 1].toString('utf8')\n }\n } else {\n if (!Array.isArray(val)) {\n val = [val]\n obj[key] = val\n }\n val.push(headers[i + 1].toString('utf8'))\n }\n }\n\n // See https://github.com/nodejs/node/pull/46528\n if ('content-length' in obj && 'content-disposition' in obj) {\n obj['content-disposition'] = Buffer.from(obj['content-disposition']).toString('latin1')\n }\n\n return obj\n}\n\nfunction parseRawHeaders (headers) {\n const ret = []\n let hasContentLength = false\n let contentDispositionIdx = -1\n\n for (let n = 0; n < headers.length; n += 2) {\n const key = headers[n + 0].toString()\n const val = headers[n + 1].toString('utf8')\n\n if (key.length === 14 && (key === 'content-length' || key.toLowerCase() === 'content-length')) {\n ret.push(key, val)\n hasContentLength = true\n } else if (key.length === 19 && (key === 'content-disposition' || key.toLowerCase() === 'content-disposition')) {\n contentDispositionIdx = ret.push(key, val) - 1\n } else {\n ret.push(key, val)\n }\n }\n\n // See https://github.com/nodejs/node/pull/46528\n if (hasContentLength && contentDispositionIdx !== -1) {\n ret[contentDispositionIdx] = Buffer.from(ret[contentDispositionIdx]).toString('latin1')\n }\n\n return ret\n}\n\nfunction isBuffer (buffer) {\n // See, https://github.com/mcollina/undici/pull/319\n return buffer instanceof Uint8Array || Buffer.isBuffer(buffer)\n}\n\nfunction validateHandler (handler, method, upgrade) {\n if (!handler || typeof handler !== 'object') {\n throw new InvalidArgumentError('handler must be an object')\n }\n\n if (typeof handler.onConnect !== 'function') {\n throw new InvalidArgumentError('invalid onConnect method')\n }\n\n if (typeof handler.onError !== 'function') {\n throw new InvalidArgumentError('invalid onError method')\n }\n\n if (typeof handler.onBodySent !== 'function' && handler.onBodySent !== undefined) {\n throw new InvalidArgumentError('invalid onBodySent method')\n }\n\n if (upgrade || method === 'CONNECT') {\n if (typeof handler.onUpgrade !== 'function') {\n throw new InvalidArgumentError('invalid onUpgrade method')\n }\n } else {\n if (typeof handler.onHeaders !== 'function') {\n throw new InvalidArgumentError('invalid onHeaders method')\n }\n\n if (typeof handler.onData !== 'function') {\n throw new InvalidArgumentError('invalid onData method')\n }\n\n if (typeof handler.onComplete !== 'function') {\n throw new InvalidArgumentError('invalid onComplete method')\n }\n }\n}\n\n// A body is disturbed if it has been read from and it cannot\n// be re-used without losing state or data.\nfunction isDisturbed (body) {\n return !!(body && (\n stream.isDisturbed\n ? stream.isDisturbed(body) || body[kBodyUsed] // TODO (fix): Why is body[kBodyUsed] needed?\n : body[kBodyUsed] ||\n body.readableDidRead ||\n (body._readableState && body._readableState.dataEmitted) ||\n isReadableAborted(body)\n ))\n}\n\nfunction isErrored (body) {\n return !!(body && (\n stream.isErrored\n ? stream.isErrored(body)\n : /state: 'errored'/.test(nodeUtil.inspect(body)\n )))\n}\n\nfunction isReadable (body) {\n return !!(body && (\n stream.isReadable\n ? stream.isReadable(body)\n : /state: 'readable'/.test(nodeUtil.inspect(body)\n )))\n}\n\nfunction getSocketInfo (socket) {\n return {\n localAddress: socket.localAddress,\n localPort: socket.localPort,\n remoteAddress: socket.remoteAddress,\n remotePort: socket.remotePort,\n remoteFamily: socket.remoteFamily,\n timeout: socket.timeout,\n bytesWritten: socket.bytesWritten,\n bytesRead: socket.bytesRead\n }\n}\n\nasync function * convertIterableToBuffer (iterable) {\n for await (const chunk of iterable) {\n yield Buffer.isBuffer(chunk) ? chunk : Buffer.from(chunk)\n }\n}\n\nlet ReadableStream\nfunction ReadableStreamFrom (iterable) {\n if (!ReadableStream) {\n ReadableStream = require('stream/web').ReadableStream\n }\n\n if (ReadableStream.from) {\n return ReadableStream.from(convertIterableToBuffer(iterable))\n }\n\n let iterator\n return new ReadableStream(\n {\n async start () {\n iterator = iterable[Symbol.asyncIterator]()\n },\n async pull (controller) {\n const { done, value } = await iterator.next()\n if (done) {\n queueMicrotask(() => {\n controller.close()\n })\n } else {\n const buf = Buffer.isBuffer(value) ? value : Buffer.from(value)\n controller.enqueue(new Uint8Array(buf))\n }\n return controller.desiredSize > 0\n },\n async cancel (reason) {\n await iterator.return()\n }\n },\n 0\n )\n}\n\n// The chunk should be a FormData instance and contains\n// all the required methods.\nfunction isFormDataLike (object) {\n return (\n object &&\n typeof object === 'object' &&\n typeof object.append === 'function' &&\n typeof object.delete === 'function' &&\n typeof object.get === 'function' &&\n typeof object.getAll === 'function' &&\n typeof object.has === 'function' &&\n typeof object.set === 'function' &&\n object[Symbol.toStringTag] === 'FormData'\n )\n}\n\nfunction throwIfAborted (signal) {\n if (!signal) { return }\n if (typeof signal.throwIfAborted === 'function') {\n signal.throwIfAborted()\n } else {\n if (signal.aborted) {\n // DOMException not available < v17.0.0\n const err = new Error('The operation was aborted')\n err.name = 'AbortError'\n throw err\n }\n }\n}\n\nfunction addAbortListener (signal, listener) {\n if ('addEventListener' in signal) {\n signal.addEventListener('abort', listener, { once: true })\n return () => signal.removeEventListener('abort', listener)\n }\n signal.addListener('abort', listener)\n return () => signal.removeListener('abort', listener)\n}\n\nconst hasToWellFormed = !!String.prototype.toWellFormed\n\n/**\n * @param {string} val\n */\nfunction toUSVString (val) {\n if (hasToWellFormed) {\n return `${val}`.toWellFormed()\n } else if (nodeUtil.toUSVString) {\n return nodeUtil.toUSVString(val)\n }\n\n return `${val}`\n}\n\n// Parsed accordingly to RFC 9110\n// https://www.rfc-editor.org/rfc/rfc9110#field.content-range\nfunction parseRangeHeader (range) {\n if (range == null || range === '') return { start: 0, end: null, size: null }\n\n const m = range ? range.match(/^bytes (\\d+)-(\\d+)\\/(\\d+)?$/) : null\n return m\n ? {\n start: parseInt(m[1]),\n end: m[2] ? parseInt(m[2]) : null,\n size: m[3] ? parseInt(m[3]) : null\n }\n : null\n}\n\nconst kEnumerableProperty = Object.create(null)\nkEnumerableProperty.enumerable = true\n\nmodule.exports = {\n kEnumerableProperty,\n nop,\n isDisturbed,\n isErrored,\n isReadable,\n toUSVString,\n isReadableAborted,\n isBlobLike,\n parseOrigin,\n parseURL,\n getServerName,\n isStream,\n isIterable,\n isAsyncIterable,\n isDestroyed,\n headerNameToString,\n parseRawHeaders,\n parseHeaders,\n parseKeepAliveTimeout,\n destroy,\n bodyLength,\n deepClone,\n ReadableStreamFrom,\n isBuffer,\n validateHandler,\n getSocketInfo,\n isFormDataLike,\n buildURL,\n throwIfAborted,\n addAbortListener,\n parseRangeHeader,\n nodeMajor,\n nodeMinor,\n nodeHasAutoSelectFamily: nodeMajor > 18 || (nodeMajor === 18 && nodeMinor >= 13),\n safeHTTPMethods: ['GET', 'HEAD', 'OPTIONS', 'TRACE']\n}\n", "'use strict'\n\nlet fastNow = Date.now()\nlet fastNowTimeout\n\nconst fastTimers = []\n\nfunction onTimeout () {\n fastNow = Date.now()\n\n let len = fastTimers.length\n let idx = 0\n while (idx < len) {\n const timer = fastTimers[idx]\n\n if (timer.state === 0) {\n timer.state = fastNow + timer.delay\n } else if (timer.state > 0 && fastNow >= timer.state) {\n timer.state = -1\n timer.callback(timer.opaque)\n }\n\n if (timer.state === -1) {\n timer.state = -2\n if (idx !== len - 1) {\n fastTimers[idx] = fastTimers.pop()\n } else {\n fastTimers.pop()\n }\n len -= 1\n } else {\n idx += 1\n }\n }\n\n if (fastTimers.length > 0) {\n refreshTimeout()\n }\n}\n\nfunction refreshTimeout () {\n if (fastNowTimeout && fastNowTimeout.refresh) {\n fastNowTimeout.refresh()\n } else {\n clearTimeout(fastNowTimeout)\n fastNowTimeout = setTimeout(onTimeout, 1e3)\n if (fastNowTimeout.unref) {\n fastNowTimeout.unref()\n }\n }\n}\n\nclass Timeout {\n constructor (callback, delay, opaque) {\n this.callback = callback\n this.delay = delay\n this.opaque = opaque\n\n // -2 not in timer list\n // -1 in timer list but inactive\n // 0 in timer list waiting for time\n // > 0 in timer list waiting for time to expire\n this.state = -2\n\n this.refresh()\n }\n\n refresh () {\n if (this.state === -2) {\n fastTimers.push(this)\n if (!fastNowTimeout || fastTimers.length === 1) {\n refreshTimeout()\n }\n }\n\n this.state = 0\n }\n\n clear () {\n this.state = -1\n }\n}\n\nmodule.exports = {\n setTimeout (callback, delay, opaque) {\n return delay < 1e3\n ? setTimeout(callback, delay, opaque)\n : new Timeout(callback, delay, opaque)\n },\n clearTimeout (timeout) {\n if (timeout instanceof Timeout) {\n timeout.clear()\n } else {\n clearTimeout(timeout)\n }\n }\n}\n", "'use strict'\n\n/**\n * Copyright Brian White. All rights reserved.\n *\n * @see https://github.com/mscdex/streamsearch\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n *\n * Based heavily on the Streaming Boyer-Moore-Horspool C++ implementation\n * by Hongli Lai at: https://github.com/FooBarWidget/boyer-moore-horspool\n */\nconst EventEmitter = require('node:events').EventEmitter\nconst inherits = require('node:util').inherits\n\nfunction SBMH (needle) {\n if (typeof needle === 'string') {\n needle = Buffer.from(needle)\n }\n\n if (!Buffer.isBuffer(needle)) {\n throw new TypeError('The needle has to be a String or a Buffer.')\n }\n\n const needleLength = needle.length\n\n if (needleLength === 0) {\n throw new Error('The needle cannot be an empty String/Buffer.')\n }\n\n if (needleLength > 256) {\n throw new Error('The needle cannot have a length bigger than 256.')\n }\n\n this.maxMatches = Infinity\n this.matches = 0\n\n this._occ = new Array(256)\n .fill(needleLength) // Initialize occurrence table.\n this._lookbehind_size = 0\n this._needle = needle\n this._bufpos = 0\n\n this._lookbehind = Buffer.alloc(needleLength)\n\n // Populate occurrence table with analysis of the needle,\n // ignoring last letter.\n for (var i = 0; i < needleLength - 1; ++i) { // eslint-disable-line no-var\n this._occ[needle[i]] = needleLength - 1 - i\n }\n}\ninherits(SBMH, EventEmitter)\n\nSBMH.prototype.reset = function () {\n this._lookbehind_size = 0\n this.matches = 0\n this._bufpos = 0\n}\n\nSBMH.prototype.push = function (chunk, pos) {\n if (!Buffer.isBuffer(chunk)) {\n chunk = Buffer.from(chunk, 'binary')\n }\n const chlen = chunk.length\n this._bufpos = pos || 0\n let r\n while (r !== chlen && this.matches < this.maxMatches) { r = this._sbmh_feed(chunk) }\n return r\n}\n\nSBMH.prototype._sbmh_feed = function (data) {\n const len = data.length\n const needle = this._needle\n const needleLength = needle.length\n const lastNeedleChar = needle[needleLength - 1]\n\n // Positive: points to a position in `data`\n // pos == 3 points to data[3]\n // Negative: points to a position in the lookbehind buffer\n // pos == -2 points to lookbehind[lookbehind_size - 2]\n let pos = -this._lookbehind_size\n let ch\n\n if (pos < 0) {\n // Lookbehind buffer is not empty. Perform Boyer-Moore-Horspool\n // search with character lookup code that considers both the\n // lookbehind buffer and the current round's haystack data.\n //\n // Loop until\n // there is a match.\n // or until\n // we've moved past the position that requires the\n // lookbehind buffer. In this case we switch to the\n // optimized loop.\n // or until\n // the character to look at lies outside the haystack.\n while (pos < 0 && pos <= len - needleLength) {\n ch = this._sbmh_lookup_char(data, pos + needleLength - 1)\n\n if (\n ch === lastNeedleChar &&\n this._sbmh_memcmp(data, pos, needleLength - 1)\n ) {\n this._lookbehind_size = 0\n ++this.matches\n this.emit('info', true)\n\n return (this._bufpos = pos + needleLength)\n }\n pos += this._occ[ch]\n }\n\n // No match.\n\n if (pos < 0) {\n // There's too few data for Boyer-Moore-Horspool to run,\n // so let's use a different algorithm to skip as much as\n // we can.\n // Forward pos until\n // the trailing part of lookbehind + data\n // looks like the beginning of the needle\n // or until\n // pos == 0\n while (pos < 0 && !this._sbmh_memcmp(data, pos, len - pos)) { ++pos }\n }\n\n if (pos >= 0) {\n // Discard lookbehind buffer.\n this.emit('info', false, this._lookbehind, 0, this._lookbehind_size)\n this._lookbehind_size = 0\n } else {\n // Cut off part of the lookbehind buffer that has\n // been processed and append the entire haystack\n // into it.\n const bytesToCutOff = this._lookbehind_size + pos\n if (bytesToCutOff > 0) {\n // The cut off data is guaranteed not to contain the needle.\n this.emit('info', false, this._lookbehind, 0, bytesToCutOff)\n }\n\n this._lookbehind.copy(this._lookbehind, 0, bytesToCutOff,\n this._lookbehind_size - bytesToCutOff)\n this._lookbehind_size -= bytesToCutOff\n\n data.copy(this._lookbehind, this._lookbehind_size)\n this._lookbehind_size += len\n\n this._bufpos = len\n return len\n }\n }\n\n pos += (pos >= 0) * this._bufpos\n\n // Lookbehind buffer is now empty. We only need to check if the\n // needle is in the haystack.\n if (data.indexOf(needle, pos) !== -1) {\n pos = data.indexOf(needle, pos)\n ++this.matches\n if (pos > 0) { this.emit('info', true, data, this._bufpos, pos) } else { this.emit('info', true) }\n\n return (this._bufpos = pos + needleLength)\n } else {\n pos = len - needleLength\n }\n\n // There was no match. If there's trailing haystack data that we cannot\n // match yet using the Boyer-Moore-Horspool algorithm (because the trailing\n // data is less than the needle size) then match using a modified\n // algorithm that starts matching from the beginning instead of the end.\n // Whatever trailing data is left after running this algorithm is added to\n // the lookbehind buffer.\n while (\n pos < len &&\n (\n data[pos] !== needle[0] ||\n (\n (Buffer.compare(\n data.subarray(pos, pos + len - pos),\n needle.subarray(0, len - pos)\n ) !== 0)\n )\n )\n ) {\n ++pos\n }\n if (pos < len) {\n data.copy(this._lookbehind, 0, pos, pos + (len - pos))\n this._lookbehind_size = len - pos\n }\n\n // Everything until pos is guaranteed not to contain needle data.\n if (pos > 0) { this.emit('info', false, data, this._bufpos, pos < len ? pos : len) }\n\n this._bufpos = len\n return len\n}\n\nSBMH.prototype._sbmh_lookup_char = function (data, pos) {\n return (pos < 0)\n ? this._lookbehind[this._lookbehind_size + pos]\n : data[pos]\n}\n\nSBMH.prototype._sbmh_memcmp = function (data, pos, len) {\n for (var i = 0; i < len; ++i) { // eslint-disable-line no-var\n if (this._sbmh_lookup_char(data, pos + i) !== this._needle[i]) { return false }\n }\n return true\n}\n\nmodule.exports = SBMH\n", "'use strict'\n\nconst inherits = require('node:util').inherits\nconst ReadableStream = require('node:stream').Readable\n\nfunction PartStream (opts) {\n ReadableStream.call(this, opts)\n}\ninherits(PartStream, ReadableStream)\n\nPartStream.prototype._read = function (n) {}\n\nmodule.exports = PartStream\n", "'use strict'\n\nmodule.exports = function getLimit (limits, name, defaultLimit) {\n if (\n !limits ||\n limits[name] === undefined ||\n limits[name] === null\n ) { return defaultLimit }\n\n if (\n typeof limits[name] !== 'number' ||\n isNaN(limits[name])\n ) { throw new TypeError('Limit ' + name + ' is not a valid number') }\n\n return limits[name]\n}\n", "'use strict'\n\nconst EventEmitter = require('node:events').EventEmitter\nconst inherits = require('node:util').inherits\nconst getLimit = require('../../../lib/utils/getLimit')\n\nconst StreamSearch = require('../../streamsearch/sbmh')\n\nconst B_DCRLF = Buffer.from('\\r\\n\\r\\n')\nconst RE_CRLF = /\\r\\n/g\nconst RE_HDR = /^([^:]+):[ \\t]?([\\x00-\\xFF]+)?$/ // eslint-disable-line no-control-regex\n\nfunction HeaderParser (cfg) {\n EventEmitter.call(this)\n\n cfg = cfg || {}\n const self = this\n this.nread = 0\n this.maxed = false\n this.npairs = 0\n this.maxHeaderPairs = getLimit(cfg, 'maxHeaderPairs', 2000)\n this.maxHeaderSize = getLimit(cfg, 'maxHeaderSize', 80 * 1024)\n this.buffer = ''\n this.header = {}\n this.finished = false\n this.ss = new StreamSearch(B_DCRLF)\n this.ss.on('info', function (isMatch, data, start, end) {\n if (data && !self.maxed) {\n if (self.nread + end - start >= self.maxHeaderSize) {\n end = self.maxHeaderSize - self.nread + start\n self.nread = self.maxHeaderSize\n self.maxed = true\n } else { self.nread += (end - start) }\n\n self.buffer += data.toString('binary', start, end)\n }\n if (isMatch) { self._finish() }\n })\n}\ninherits(HeaderParser, EventEmitter)\n\nHeaderParser.prototype.push = function (data) {\n const r = this.ss.push(data)\n if (this.finished) { return r }\n}\n\nHeaderParser.prototype.reset = function () {\n this.finished = false\n this.buffer = ''\n this.header = {}\n this.ss.reset()\n}\n\nHeaderParser.prototype._finish = function () {\n if (this.buffer) { this._parseHeader() }\n this.ss.matches = this.ss.maxMatches\n const header = this.header\n this.header = {}\n this.buffer = ''\n this.finished = true\n this.nread = this.npairs = 0\n this.maxed = false\n this.emit('header', header)\n}\n\nHeaderParser.prototype._parseHeader = function () {\n if (this.npairs === this.maxHeaderPairs) { return }\n\n const lines = this.buffer.split(RE_CRLF)\n const len = lines.length\n let m, h\n\n for (var i = 0; i < len; ++i) { // eslint-disable-line no-var\n if (lines[i].length === 0) { continue }\n if (lines[i][0] === '\\t' || lines[i][0] === ' ') {\n // folded header content\n // RFC2822 says to just remove the CRLF and not the whitespace following\n // it, so we follow the RFC and include the leading whitespace ...\n if (h) {\n this.header[h][this.header[h].length - 1] += lines[i]\n continue\n }\n }\n\n const posColon = lines[i].indexOf(':')\n if (\n posColon === -1 ||\n posColon === 0\n ) {\n return\n }\n m = RE_HDR.exec(lines[i])\n h = m[1].toLowerCase()\n this.header[h] = this.header[h] || []\n this.header[h].push((m[2] || ''))\n if (++this.npairs === this.maxHeaderPairs) { break }\n }\n}\n\nmodule.exports = HeaderParser\n", "'use strict'\n\nconst WritableStream = require('node:stream').Writable\nconst inherits = require('node:util').inherits\n\nconst StreamSearch = require('../../streamsearch/sbmh')\n\nconst PartStream = require('./PartStream')\nconst HeaderParser = require('./HeaderParser')\n\nconst DASH = 45\nconst B_ONEDASH = Buffer.from('-')\nconst B_CRLF = Buffer.from('\\r\\n')\nconst EMPTY_FN = function () {}\n\nfunction Dicer (cfg) {\n if (!(this instanceof Dicer)) { return new Dicer(cfg) }\n WritableStream.call(this, cfg)\n\n if (!cfg || (!cfg.headerFirst && typeof cfg.boundary !== 'string')) { throw new TypeError('Boundary required') }\n\n if (typeof cfg.boundary === 'string') { this.setBoundary(cfg.boundary) } else { this._bparser = undefined }\n\n this._headerFirst = cfg.headerFirst\n\n this._dashes = 0\n this._parts = 0\n this._finished = false\n this._realFinish = false\n this._isPreamble = true\n this._justMatched = false\n this._firstWrite = true\n this._inHeader = true\n this._part = undefined\n this._cb = undefined\n this._ignoreData = false\n this._partOpts = { highWaterMark: cfg.partHwm }\n this._pause = false\n\n const self = this\n this._hparser = new HeaderParser(cfg)\n this._hparser.on('header', function (header) {\n self._inHeader = false\n self._part.emit('header', header)\n })\n}\ninherits(Dicer, WritableStream)\n\nDicer.prototype.emit = function (ev) {\n if (ev === 'finish' && !this._realFinish) {\n if (!this._finished) {\n const self = this\n process.nextTick(function () {\n self.emit('error', new Error('Unexpected end of multipart data'))\n if (self._part && !self._ignoreData) {\n const type = (self._isPreamble ? 'Preamble' : 'Part')\n self._part.emit('error', new Error(type + ' terminated early due to unexpected end of multipart data'))\n self._part.push(null)\n process.nextTick(function () {\n self._realFinish = true\n self.emit('finish')\n self._realFinish = false\n })\n return\n }\n self._realFinish = true\n self.emit('finish')\n self._realFinish = false\n })\n }\n } else { WritableStream.prototype.emit.apply(this, arguments) }\n}\n\nDicer.prototype._write = function (data, encoding, cb) {\n // ignore unexpected data (e.g. extra trailer data after finished)\n if (!this._hparser && !this._bparser) { return cb() }\n\n if (this._headerFirst && this._isPreamble) {\n if (!this._part) {\n this._part = new PartStream(this._partOpts)\n if (this.listenerCount('preamble') !== 0) { this.emit('preamble', this._part) } else { this._ignore() }\n }\n const r = this._hparser.push(data)\n if (!this._inHeader && r !== undefined && r < data.length) { data = data.slice(r) } else { return cb() }\n }\n\n // allows for \"easier\" testing\n if (this._firstWrite) {\n this._bparser.push(B_CRLF)\n this._firstWrite = false\n }\n\n this._bparser.push(data)\n\n if (this._pause) { this._cb = cb } else { cb() }\n}\n\nDicer.prototype.reset = function () {\n this._part = undefined\n this._bparser = undefined\n this._hparser = undefined\n}\n\nDicer.prototype.setBoundary = function (boundary) {\n const self = this\n this._bparser = new StreamSearch('\\r\\n--' + boundary)\n this._bparser.on('info', function (isMatch, data, start, end) {\n self._oninfo(isMatch, data, start, end)\n })\n}\n\nDicer.prototype._ignore = function () {\n if (this._part && !this._ignoreData) {\n this._ignoreData = true\n this._part.on('error', EMPTY_FN)\n // we must perform some kind of read on the stream even though we are\n // ignoring the data, otherwise node's Readable stream will not emit 'end'\n // after pushing null to the stream\n this._part.resume()\n }\n}\n\nDicer.prototype._oninfo = function (isMatch, data, start, end) {\n let buf; const self = this; let i = 0; let r; let shouldWriteMore = true\n\n if (!this._part && this._justMatched && data) {\n while (this._dashes < 2 && (start + i) < end) {\n if (data[start + i] === DASH) {\n ++i\n ++this._dashes\n } else {\n if (this._dashes) { buf = B_ONEDASH }\n this._dashes = 0\n break\n }\n }\n if (this._dashes === 2) {\n if ((start + i) < end && this.listenerCount('trailer') !== 0) { this.emit('trailer', data.slice(start + i, end)) }\n this.reset()\n this._finished = true\n // no more parts will be added\n if (self._parts === 0) {\n self._realFinish = true\n self.emit('finish')\n self._realFinish = false\n }\n }\n if (this._dashes) { return }\n }\n if (this._justMatched) { this._justMatched = false }\n if (!this._part) {\n this._part = new PartStream(this._partOpts)\n this._part._read = function (n) {\n self._unpause()\n }\n if (this._isPreamble && this.listenerCount('preamble') !== 0) {\n this.emit('preamble', this._part)\n } else if (this._isPreamble !== true && this.listenerCount('part') !== 0) {\n this.emit('part', this._part)\n } else {\n this._ignore()\n }\n if (!this._isPreamble) { this._inHeader = true }\n }\n if (data && start < end && !this._ignoreData) {\n if (this._isPreamble || !this._inHeader) {\n if (buf) { shouldWriteMore = this._part.push(buf) }\n shouldWriteMore = this._part.push(data.slice(start, end))\n if (!shouldWriteMore) { this._pause = true }\n } else if (!this._isPreamble && this._inHeader) {\n if (buf) { this._hparser.push(buf) }\n r = this._hparser.push(data.slice(start, end))\n if (!this._inHeader && r !== undefined && r < end) { this._oninfo(false, data, start + r, end) }\n }\n }\n if (isMatch) {\n this._hparser.reset()\n if (this._isPreamble) { this._isPreamble = false } else {\n if (start !== end) {\n ++this._parts\n this._part.on('end', function () {\n if (--self._parts === 0) {\n if (self._finished) {\n self._realFinish = true\n self.emit('finish')\n self._realFinish = false\n } else {\n self._unpause()\n }\n }\n })\n }\n }\n this._part.push(null)\n this._part = undefined\n this._ignoreData = false\n this._justMatched = true\n this._dashes = 0\n }\n}\n\nDicer.prototype._unpause = function () {\n if (!this._pause) { return }\n\n this._pause = false\n if (this._cb) {\n const cb = this._cb\n this._cb = undefined\n cb()\n }\n}\n\nmodule.exports = Dicer\n", "'use strict'\n\n// Node has always utf-8\nconst utf8Decoder = new TextDecoder('utf-8')\nconst textDecoders = new Map([\n ['utf-8', utf8Decoder],\n ['utf8', utf8Decoder]\n])\n\nfunction getDecoder (charset) {\n let lc\n while (true) {\n switch (charset) {\n case 'utf-8':\n case 'utf8':\n return decoders.utf8\n case 'latin1':\n case 'ascii': // TODO: Make these a separate, strict decoder?\n case 'us-ascii':\n case 'iso-8859-1':\n case 'iso8859-1':\n case 'iso88591':\n case 'iso_8859-1':\n case 'windows-1252':\n case 'iso_8859-1:1987':\n case 'cp1252':\n case 'x-cp1252':\n return decoders.latin1\n case 'utf16le':\n case 'utf-16le':\n case 'ucs2':\n case 'ucs-2':\n return decoders.utf16le\n case 'base64':\n return decoders.base64\n default:\n if (lc === undefined) {\n lc = true\n charset = charset.toLowerCase()\n continue\n }\n return decoders.other.bind(charset)\n }\n }\n}\n\nconst decoders = {\n utf8: (data, sourceEncoding) => {\n if (data.length === 0) {\n return ''\n }\n if (typeof data === 'string') {\n data = Buffer.from(data, sourceEncoding)\n }\n return data.utf8Slice(0, data.length)\n },\n\n latin1: (data, sourceEncoding) => {\n if (data.length === 0) {\n return ''\n }\n if (typeof data === 'string') {\n return data\n }\n return data.latin1Slice(0, data.length)\n },\n\n utf16le: (data, sourceEncoding) => {\n if (data.length === 0) {\n return ''\n }\n if (typeof data === 'string') {\n data = Buffer.from(data, sourceEncoding)\n }\n return data.ucs2Slice(0, data.length)\n },\n\n base64: (data, sourceEncoding) => {\n if (data.length === 0) {\n return ''\n }\n if (typeof data === 'string') {\n data = Buffer.from(data, sourceEncoding)\n }\n return data.base64Slice(0, data.length)\n },\n\n other: (data, sourceEncoding) => {\n if (data.length === 0) {\n return ''\n }\n if (typeof data === 'string') {\n data = Buffer.from(data, sourceEncoding)\n }\n\n if (textDecoders.has(this.toString())) {\n try {\n return textDecoders.get(this).decode(data)\n } catch {}\n }\n return typeof data === 'string'\n ? data\n : data.toString()\n }\n}\n\nfunction decodeText (text, sourceEncoding, destEncoding) {\n if (text) {\n return getDecoder(destEncoding)(text, sourceEncoding)\n }\n return text\n}\n\nmodule.exports = decodeText\n", "/* eslint-disable object-property-newline */\n'use strict'\n\nconst decodeText = require('./decodeText')\n\nconst RE_ENCODED = /%[a-fA-F0-9][a-fA-F0-9]/g\n\nconst EncodedLookup = {\n '%00': '\\x00', '%01': '\\x01', '%02': '\\x02', '%03': '\\x03', '%04': '\\x04',\n '%05': '\\x05', '%06': '\\x06', '%07': '\\x07', '%08': '\\x08', '%09': '\\x09',\n '%0a': '\\x0a', '%0A': '\\x0a', '%0b': '\\x0b', '%0B': '\\x0b', '%0c': '\\x0c',\n '%0C': '\\x0c', '%0d': '\\x0d', '%0D': '\\x0d', '%0e': '\\x0e', '%0E': '\\x0e',\n '%0f': '\\x0f', '%0F': '\\x0f', '%10': '\\x10', '%11': '\\x11', '%12': '\\x12',\n '%13': '\\x13', '%14': '\\x14', '%15': '\\x15', '%16': '\\x16', '%17': '\\x17',\n '%18': '\\x18', '%19': '\\x19', '%1a': '\\x1a', '%1A': '\\x1a', '%1b': '\\x1b',\n '%1B': '\\x1b', '%1c': '\\x1c', '%1C': '\\x1c', '%1d': '\\x1d', '%1D': '\\x1d',\n '%1e': '\\x1e', '%1E': '\\x1e', '%1f': '\\x1f', '%1F': '\\x1f', '%20': '\\x20',\n '%21': '\\x21', '%22': '\\x22', '%23': '\\x23', '%24': '\\x24', '%25': '\\x25',\n '%26': '\\x26', '%27': '\\x27', '%28': '\\x28', '%29': '\\x29', '%2a': '\\x2a',\n '%2A': '\\x2a', '%2b': '\\x2b', '%2B': '\\x2b', '%2c': '\\x2c', '%2C': '\\x2c',\n '%2d': '\\x2d', '%2D': '\\x2d', '%2e': '\\x2e', '%2E': '\\x2e', '%2f': '\\x2f',\n '%2F': '\\x2f', '%30': '\\x30', '%31': '\\x31', '%32': '\\x32', '%33': '\\x33',\n '%34': '\\x34', '%35': '\\x35', '%36': '\\x36', '%37': '\\x37', '%38': '\\x38',\n '%39': '\\x39', '%3a': '\\x3a', '%3A': '\\x3a', '%3b': '\\x3b', '%3B': '\\x3b',\n '%3c': '\\x3c', '%3C': '\\x3c', '%3d': '\\x3d', '%3D': '\\x3d', '%3e': '\\x3e',\n '%3E': '\\x3e', '%3f': '\\x3f', '%3F': '\\x3f', '%40': '\\x40', '%41': '\\x41',\n '%42': '\\x42', '%43': '\\x43', '%44': '\\x44', '%45': '\\x45', '%46': '\\x46',\n '%47': '\\x47', '%48': '\\x48', '%49': '\\x49', '%4a': '\\x4a', '%4A': '\\x4a',\n '%4b': '\\x4b', '%4B': '\\x4b', '%4c': '\\x4c', '%4C': '\\x4c', '%4d': '\\x4d',\n '%4D': '\\x4d', '%4e': '\\x4e', '%4E': '\\x4e', '%4f': '\\x4f', '%4F': '\\x4f',\n '%50': '\\x50', '%51': '\\x51', '%52': '\\x52', '%53': '\\x53', '%54': '\\x54',\n '%55': '\\x55', '%56': '\\x56', '%57': '\\x57', '%58': '\\x58', '%59': '\\x59',\n '%5a': '\\x5a', '%5A': '\\x5a', '%5b': '\\x5b', '%5B': '\\x5b', '%5c': '\\x5c',\n '%5C': '\\x5c', '%5d': '\\x5d', '%5D': '\\x5d', '%5e': '\\x5e', '%5E': '\\x5e',\n '%5f': '\\x5f', '%5F': '\\x5f', '%60': '\\x60', '%61': '\\x61', '%62': '\\x62',\n '%63': '\\x63', '%64': '\\x64', '%65': '\\x65', '%66': '\\x66', '%67': '\\x67',\n '%68': '\\x68', '%69': '\\x69', '%6a': '\\x6a', '%6A': '\\x6a', '%6b': '\\x6b',\n '%6B': '\\x6b', '%6c': '\\x6c', '%6C': '\\x6c', '%6d': '\\x6d', '%6D': '\\x6d',\n '%6e': '\\x6e', '%6E': '\\x6e', '%6f': '\\x6f', '%6F': '\\x6f', '%70': '\\x70',\n '%71': '\\x71', '%72': '\\x72', '%73': '\\x73', '%74': '\\x74', '%75': '\\x75',\n '%76': '\\x76', '%77': '\\x77', '%78': '\\x78', '%79': '\\x79', '%7a': '\\x7a',\n '%7A': '\\x7a', '%7b': '\\x7b', '%7B': '\\x7b', '%7c': '\\x7c', '%7C': '\\x7c',\n '%7d': '\\x7d', '%7D': '\\x7d', '%7e': '\\x7e', '%7E': '\\x7e', '%7f': '\\x7f',\n '%7F': '\\x7f', '%80': '\\x80', '%81': '\\x81', '%82': '\\x82', '%83': '\\x83',\n '%84': '\\x84', '%85': '\\x85', '%86': '\\x86', '%87': '\\x87', '%88': '\\x88',\n '%89': '\\x89', '%8a': '\\x8a', '%8A': '\\x8a', '%8b': '\\x8b', '%8B': '\\x8b',\n '%8c': '\\x8c', '%8C': '\\x8c', '%8d': '\\x8d', '%8D': '\\x8d', '%8e': '\\x8e',\n '%8E': '\\x8e', '%8f': '\\x8f', '%8F': '\\x8f', '%90': '\\x90', '%91': '\\x91',\n '%92': '\\x92', '%93': '\\x93', '%94': '\\x94', '%95': '\\x95', '%96': '\\x96',\n '%97': '\\x97', '%98': '\\x98', '%99': '\\x99', '%9a': '\\x9a', '%9A': '\\x9a',\n '%9b': '\\x9b', '%9B': '\\x9b', '%9c': '\\x9c', '%9C': '\\x9c', '%9d': '\\x9d',\n '%9D': '\\x9d', '%9e': '\\x9e', '%9E': '\\x9e', '%9f': '\\x9f', '%9F': '\\x9f',\n '%a0': '\\xa0', '%A0': '\\xa0', '%a1': '\\xa1', '%A1': '\\xa1', '%a2': '\\xa2',\n '%A2': '\\xa2', '%a3': '\\xa3', '%A3': '\\xa3', '%a4': '\\xa4', '%A4': '\\xa4',\n '%a5': '\\xa5', '%A5': '\\xa5', '%a6': '\\xa6', '%A6': '\\xa6', '%a7': '\\xa7',\n '%A7': '\\xa7', '%a8': '\\xa8', '%A8': '\\xa8', '%a9': '\\xa9', '%A9': '\\xa9',\n '%aa': '\\xaa', '%Aa': '\\xaa', '%aA': '\\xaa', '%AA': '\\xaa', '%ab': '\\xab',\n '%Ab': '\\xab', '%aB': '\\xab', '%AB': '\\xab', '%ac': '\\xac', '%Ac': '\\xac',\n '%aC': '\\xac', '%AC': '\\xac', '%ad': '\\xad', '%Ad': '\\xad', '%aD': '\\xad',\n '%AD': '\\xad', '%ae': '\\xae', '%Ae': '\\xae', '%aE': '\\xae', '%AE': '\\xae',\n '%af': '\\xaf', '%Af': '\\xaf', '%aF': '\\xaf', '%AF': '\\xaf', '%b0': '\\xb0',\n '%B0': '\\xb0', '%b1': '\\xb1', '%B1': '\\xb1', '%b2': '\\xb2', '%B2': '\\xb2',\n '%b3': '\\xb3', '%B3': '\\xb3', '%b4': '\\xb4', '%B4': '\\xb4', '%b5': '\\xb5',\n '%B5': '\\xb5', '%b6': '\\xb6', '%B6': '\\xb6', '%b7': '\\xb7', '%B7': '\\xb7',\n '%b8': '\\xb8', '%B8': '\\xb8', '%b9': '\\xb9', '%B9': '\\xb9', '%ba': '\\xba',\n '%Ba': '\\xba', '%bA': '\\xba', '%BA': '\\xba', '%bb': '\\xbb', '%Bb': '\\xbb',\n '%bB': '\\xbb', '%BB': '\\xbb', '%bc': '\\xbc', '%Bc': '\\xbc', '%bC': '\\xbc',\n '%BC': '\\xbc', '%bd': '\\xbd', '%Bd': '\\xbd', '%bD': '\\xbd', '%BD': '\\xbd',\n '%be': '\\xbe', '%Be': '\\xbe', '%bE': '\\xbe', '%BE': '\\xbe', '%bf': '\\xbf',\n '%Bf': '\\xbf', '%bF': '\\xbf', '%BF': '\\xbf', '%c0': '\\xc0', '%C0': '\\xc0',\n '%c1': '\\xc1', '%C1': '\\xc1', '%c2': '\\xc2', '%C2': '\\xc2', '%c3': '\\xc3',\n '%C3': '\\xc3', '%c4': '\\xc4', '%C4': '\\xc4', '%c5': '\\xc5', '%C5': '\\xc5',\n '%c6': '\\xc6', '%C6': '\\xc6', '%c7': '\\xc7', '%C7': '\\xc7', '%c8': '\\xc8',\n '%C8': '\\xc8', '%c9': '\\xc9', '%C9': '\\xc9', '%ca': '\\xca', '%Ca': '\\xca',\n '%cA': '\\xca', '%CA': '\\xca', '%cb': '\\xcb', '%Cb': '\\xcb', '%cB': '\\xcb',\n '%CB': '\\xcb', '%cc': '\\xcc', '%Cc': '\\xcc', '%cC': '\\xcc', '%CC': '\\xcc',\n '%cd': '\\xcd', '%Cd': '\\xcd', '%cD': '\\xcd', '%CD': '\\xcd', '%ce': '\\xce',\n '%Ce': '\\xce', '%cE': '\\xce', '%CE': '\\xce', '%cf': '\\xcf', '%Cf': '\\xcf',\n '%cF': '\\xcf', '%CF': '\\xcf', '%d0': '\\xd0', '%D0': '\\xd0', '%d1': '\\xd1',\n '%D1': '\\xd1', '%d2': '\\xd2', '%D2': '\\xd2', '%d3': '\\xd3', '%D3': '\\xd3',\n '%d4': '\\xd4', '%D4': '\\xd4', '%d5': '\\xd5', '%D5': '\\xd5', '%d6': '\\xd6',\n '%D6': '\\xd6', '%d7': '\\xd7', '%D7': '\\xd7', '%d8': '\\xd8', '%D8': '\\xd8',\n '%d9': '\\xd9', '%D9': '\\xd9', '%da': '\\xda', '%Da': '\\xda', '%dA': '\\xda',\n '%DA': '\\xda', '%db': '\\xdb', '%Db': '\\xdb', '%dB': '\\xdb', '%DB': '\\xdb',\n '%dc': '\\xdc', '%Dc': '\\xdc', '%dC': '\\xdc', '%DC': '\\xdc', '%dd': '\\xdd',\n '%Dd': '\\xdd', '%dD': '\\xdd', '%DD': '\\xdd', '%de': '\\xde', '%De': '\\xde',\n '%dE': '\\xde', '%DE': '\\xde', '%df': '\\xdf', '%Df': '\\xdf', '%dF': '\\xdf',\n '%DF': '\\xdf', '%e0': '\\xe0', '%E0': '\\xe0', '%e1': '\\xe1', '%E1': '\\xe1',\n '%e2': '\\xe2', '%E2': '\\xe2', '%e3': '\\xe3', '%E3': '\\xe3', '%e4': '\\xe4',\n '%E4': '\\xe4', '%e5': '\\xe5', '%E5': '\\xe5', '%e6': '\\xe6', '%E6': '\\xe6',\n '%e7': '\\xe7', '%E7': '\\xe7', '%e8': '\\xe8', '%E8': '\\xe8', '%e9': '\\xe9',\n '%E9': '\\xe9', '%ea': '\\xea', '%Ea': '\\xea', '%eA': '\\xea', '%EA': '\\xea',\n '%eb': '\\xeb', '%Eb': '\\xeb', '%eB': '\\xeb', '%EB': '\\xeb', '%ec': '\\xec',\n '%Ec': '\\xec', '%eC': '\\xec', '%EC': '\\xec', '%ed': '\\xed', '%Ed': '\\xed',\n '%eD': '\\xed', '%ED': '\\xed', '%ee': '\\xee', '%Ee': '\\xee', '%eE': '\\xee',\n '%EE': '\\xee', '%ef': '\\xef', '%Ef': '\\xef', '%eF': '\\xef', '%EF': '\\xef',\n '%f0': '\\xf0', '%F0': '\\xf0', '%f1': '\\xf1', '%F1': '\\xf1', '%f2': '\\xf2',\n '%F2': '\\xf2', '%f3': '\\xf3', '%F3': '\\xf3', '%f4': '\\xf4', '%F4': '\\xf4',\n '%f5': '\\xf5', '%F5': '\\xf5', '%f6': '\\xf6', '%F6': '\\xf6', '%f7': '\\xf7',\n '%F7': '\\xf7', '%f8': '\\xf8', '%F8': '\\xf8', '%f9': '\\xf9', '%F9': '\\xf9',\n '%fa': '\\xfa', '%Fa': '\\xfa', '%fA': '\\xfa', '%FA': '\\xfa', '%fb': '\\xfb',\n '%Fb': '\\xfb', '%fB': '\\xfb', '%FB': '\\xfb', '%fc': '\\xfc', '%Fc': '\\xfc',\n '%fC': '\\xfc', '%FC': '\\xfc', '%fd': '\\xfd', '%Fd': '\\xfd', '%fD': '\\xfd',\n '%FD': '\\xfd', '%fe': '\\xfe', '%Fe': '\\xfe', '%fE': '\\xfe', '%FE': '\\xfe',\n '%ff': '\\xff', '%Ff': '\\xff', '%fF': '\\xff', '%FF': '\\xff'\n}\n\nfunction encodedReplacer (match) {\n return EncodedLookup[match]\n}\n\nconst STATE_KEY = 0\nconst STATE_VALUE = 1\nconst STATE_CHARSET = 2\nconst STATE_LANG = 3\n\nfunction parseParams (str) {\n const res = []\n let state = STATE_KEY\n let charset = ''\n let inquote = false\n let escaping = false\n let p = 0\n let tmp = ''\n const len = str.length\n\n for (var i = 0; i < len; ++i) { // eslint-disable-line no-var\n const char = str[i]\n if (char === '\\\\' && inquote) {\n if (escaping) { escaping = false } else {\n escaping = true\n continue\n }\n } else if (char === '\"') {\n if (!escaping) {\n if (inquote) {\n inquote = false\n state = STATE_KEY\n } else { inquote = true }\n continue\n } else { escaping = false }\n } else {\n if (escaping && inquote) { tmp += '\\\\' }\n escaping = false\n if ((state === STATE_CHARSET || state === STATE_LANG) && char === \"'\") {\n if (state === STATE_CHARSET) {\n state = STATE_LANG\n charset = tmp.substring(1)\n } else { state = STATE_VALUE }\n tmp = ''\n continue\n } else if (state === STATE_KEY &&\n (char === '*' || char === '=') &&\n res.length) {\n state = char === '*'\n ? STATE_CHARSET\n : STATE_VALUE\n res[p] = [tmp, undefined]\n tmp = ''\n continue\n } else if (!inquote && char === ';') {\n state = STATE_KEY\n if (charset) {\n if (tmp.length) {\n tmp = decodeText(tmp.replace(RE_ENCODED, encodedReplacer),\n 'binary',\n charset)\n }\n charset = ''\n } else if (tmp.length) {\n tmp = decodeText(tmp, 'binary', 'utf8')\n }\n if (res[p] === undefined) { res[p] = tmp } else { res[p][1] = tmp }\n tmp = ''\n ++p\n continue\n } else if (!inquote && (char === ' ' || char === '\\t')) { continue }\n }\n tmp += char\n }\n if (charset && tmp.length) {\n tmp = decodeText(tmp.replace(RE_ENCODED, encodedReplacer),\n 'binary',\n charset)\n } else if (tmp) {\n tmp = decodeText(tmp, 'binary', 'utf8')\n }\n\n if (res[p] === undefined) {\n if (tmp) { res[p] = tmp }\n } else { res[p][1] = tmp }\n\n return res\n}\n\nmodule.exports = parseParams\n", "'use strict'\n\nmodule.exports = function basename (path) {\n if (typeof path !== 'string') { return '' }\n for (var i = path.length - 1; i >= 0; --i) { // eslint-disable-line no-var\n switch (path.charCodeAt(i)) {\n case 0x2F: // '/'\n case 0x5C: // '\\'\n path = path.slice(i + 1)\n return (path === '..' || path === '.' ? '' : path)\n }\n }\n return (path === '..' || path === '.' ? '' : path)\n}\n", "'use strict'\n\n// TODO:\n// * support 1 nested multipart level\n// (see second multipart example here:\n// http://www.w3.org/TR/html401/interact/forms.html#didx-multipartform-data)\n// * support limits.fieldNameSize\n// -- this will require modifications to utils.parseParams\n\nconst { Readable } = require('node:stream')\nconst { inherits } = require('node:util')\n\nconst Dicer = require('../../deps/dicer/lib/Dicer')\n\nconst parseParams = require('../utils/parseParams')\nconst decodeText = require('../utils/decodeText')\nconst basename = require('../utils/basename')\nconst getLimit = require('../utils/getLimit')\n\nconst RE_BOUNDARY = /^boundary$/i\nconst RE_FIELD = /^form-data$/i\nconst RE_CHARSET = /^charset$/i\nconst RE_FILENAME = /^filename$/i\nconst RE_NAME = /^name$/i\n\nMultipart.detect = /^multipart\\/form-data/i\nfunction Multipart (boy, cfg) {\n let i\n let len\n const self = this\n let boundary\n const limits = cfg.limits\n const isPartAFile = cfg.isPartAFile || ((fieldName, contentType, fileName) => (contentType === 'application/octet-stream' || fileName !== undefined))\n const parsedConType = cfg.parsedConType || []\n const defCharset = cfg.defCharset || 'utf8'\n const preservePath = cfg.preservePath\n const fileOpts = { highWaterMark: cfg.fileHwm }\n\n for (i = 0, len = parsedConType.length; i < len; ++i) {\n if (Array.isArray(parsedConType[i]) &&\n RE_BOUNDARY.test(parsedConType[i][0])) {\n boundary = parsedConType[i][1]\n break\n }\n }\n\n function checkFinished () {\n if (nends === 0 && finished && !boy._done) {\n finished = false\n self.end()\n }\n }\n\n if (typeof boundary !== 'string') { throw new Error('Multipart: Boundary not found') }\n\n const fieldSizeLimit = getLimit(limits, 'fieldSize', 1 * 1024 * 1024)\n const fileSizeLimit = getLimit(limits, 'fileSize', Infinity)\n const filesLimit = getLimit(limits, 'files', Infinity)\n const fieldsLimit = getLimit(limits, 'fields', Infinity)\n const partsLimit = getLimit(limits, 'parts', Infinity)\n const headerPairsLimit = getLimit(limits, 'headerPairs', 2000)\n const headerSizeLimit = getLimit(limits, 'headerSize', 80 * 1024)\n\n let nfiles = 0\n let nfields = 0\n let nends = 0\n let curFile\n let curField\n let finished = false\n\n this._needDrain = false\n this._pause = false\n this._cb = undefined\n this._nparts = 0\n this._boy = boy\n\n const parserCfg = {\n boundary,\n maxHeaderPairs: headerPairsLimit,\n maxHeaderSize: headerSizeLimit,\n partHwm: fileOpts.highWaterMark,\n highWaterMark: cfg.highWaterMark\n }\n\n this.parser = new Dicer(parserCfg)\n this.parser.on('drain', function () {\n self._needDrain = false\n if (self._cb && !self._pause) {\n const cb = self._cb\n self._cb = undefined\n cb()\n }\n }).on('part', function onPart (part) {\n if (++self._nparts > partsLimit) {\n self.parser.removeListener('part', onPart)\n self.parser.on('part', skipPart)\n boy.hitPartsLimit = true\n boy.emit('partsLimit')\n return skipPart(part)\n }\n\n // hack because streams2 _always_ doesn't emit 'end' until nextTick, so let\n // us emit 'end' early since we know the part has ended if we are already\n // seeing the next part\n if (curField) {\n const field = curField\n field.emit('end')\n field.removeAllListeners('end')\n }\n\n part.on('header', function (header) {\n let contype\n let fieldname\n let parsed\n let charset\n let encoding\n let filename\n let nsize = 0\n\n if (header['content-type']) {\n parsed = parseParams(header['content-type'][0])\n if (parsed[0]) {\n contype = parsed[0].toLowerCase()\n for (i = 0, len = parsed.length; i < len; ++i) {\n if (RE_CHARSET.test(parsed[i][0])) {\n charset = parsed[i][1].toLowerCase()\n break\n }\n }\n }\n }\n\n if (contype === undefined) { contype = 'text/plain' }\n if (charset === undefined) { charset = defCharset }\n\n if (header['content-disposition']) {\n parsed = parseParams(header['content-disposition'][0])\n if (!RE_FIELD.test(parsed[0])) { return skipPart(part) }\n for (i = 0, len = parsed.length; i < len; ++i) {\n if (RE_NAME.test(parsed[i][0])) {\n fieldname = parsed[i][1]\n } else if (RE_FILENAME.test(parsed[i][0])) {\n filename = parsed[i][1]\n if (!preservePath) { filename = basename(filename) }\n }\n }\n } else { return skipPart(part) }\n\n if (header['content-transfer-encoding']) { encoding = header['content-transfer-encoding'][0].toLowerCase() } else { encoding = '7bit' }\n\n let onData,\n onEnd\n\n if (isPartAFile(fieldname, contype, filename)) {\n // file/binary field\n if (nfiles === filesLimit) {\n if (!boy.hitFilesLimit) {\n boy.hitFilesLimit = true\n boy.emit('filesLimit')\n }\n return skipPart(part)\n }\n\n ++nfiles\n\n if (boy.listenerCount('file') === 0) {\n self.parser._ignore()\n return\n }\n\n ++nends\n const file = new FileStream(fileOpts)\n curFile = file\n file.on('end', function () {\n --nends\n self._pause = false\n checkFinished()\n if (self._cb && !self._needDrain) {\n const cb = self._cb\n self._cb = undefined\n cb()\n }\n })\n file._read = function (n) {\n if (!self._pause) { return }\n self._pause = false\n if (self._cb && !self._needDrain) {\n const cb = self._cb\n self._cb = undefined\n cb()\n }\n }\n boy.emit('file', fieldname, file, filename, encoding, contype)\n\n onData = function (data) {\n if ((nsize += data.length) > fileSizeLimit) {\n const extralen = fileSizeLimit - nsize + data.length\n if (extralen > 0) { file.push(data.slice(0, extralen)) }\n file.truncated = true\n file.bytesRead = fileSizeLimit\n part.removeAllListeners('data')\n file.emit('limit')\n return\n } else if (!file.push(data)) { self._pause = true }\n\n file.bytesRead = nsize\n }\n\n onEnd = function () {\n curFile = undefined\n file.push(null)\n }\n } else {\n // non-file field\n if (nfields === fieldsLimit) {\n if (!boy.hitFieldsLimit) {\n boy.hitFieldsLimit = true\n boy.emit('fieldsLimit')\n }\n return skipPart(part)\n }\n\n ++nfields\n ++nends\n let buffer = ''\n let truncated = false\n curField = part\n\n onData = function (data) {\n if ((nsize += data.length) > fieldSizeLimit) {\n const extralen = (fieldSizeLimit - (nsize - data.length))\n buffer += data.toString('binary', 0, extralen)\n truncated = true\n part.removeAllListeners('data')\n } else { buffer += data.toString('binary') }\n }\n\n onEnd = function () {\n curField = undefined\n if (buffer.length) { buffer = decodeText(buffer, 'binary', charset) }\n boy.emit('field', fieldname, buffer, false, truncated, encoding, contype)\n --nends\n checkFinished()\n }\n }\n\n /* As of node@2efe4ab761666 (v0.10.29+/v0.11.14+), busboy had become\n broken. Streams2/streams3 is a huge black box of confusion, but\n somehow overriding the sync state seems to fix things again (and still\n seems to work for previous node versions).\n */\n part._readableState.sync = false\n\n part.on('data', onData)\n part.on('end', onEnd)\n }).on('error', function (err) {\n if (curFile) { curFile.emit('error', err) }\n })\n }).on('error', function (err) {\n boy.emit('error', err)\n }).on('finish', function () {\n finished = true\n checkFinished()\n })\n}\n\nMultipart.prototype.write = function (chunk, cb) {\n const r = this.parser.write(chunk)\n if (r && !this._pause) {\n cb()\n } else {\n this._needDrain = !r\n this._cb = cb\n }\n}\n\nMultipart.prototype.end = function () {\n const self = this\n\n if (self.parser.writable) {\n self.parser.end()\n } else if (!self._boy._done) {\n process.nextTick(function () {\n self._boy._done = true\n self._boy.emit('finish')\n })\n }\n}\n\nfunction skipPart (part) {\n part.resume()\n}\n\nfunction FileStream (opts) {\n Readable.call(this, opts)\n\n this.bytesRead = 0\n\n this.truncated = false\n}\n\ninherits(FileStream, Readable)\n\nFileStream.prototype._read = function (n) {}\n\nmodule.exports = Multipart\n", "'use strict'\n\nconst RE_PLUS = /\\+/g\n\nconst HEX = [\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0,\n 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0\n]\n\nfunction Decoder () {\n this.buffer = undefined\n}\nDecoder.prototype.write = function (str) {\n // Replace '+' with ' ' before decoding\n str = str.replace(RE_PLUS, ' ')\n let res = ''\n let i = 0; let p = 0; const len = str.length\n for (; i < len; ++i) {\n if (this.buffer !== undefined) {\n if (!HEX[str.charCodeAt(i)]) {\n res += '%' + this.buffer\n this.buffer = undefined\n --i // retry character\n } else {\n this.buffer += str[i]\n ++p\n if (this.buffer.length === 2) {\n res += String.fromCharCode(parseInt(this.buffer, 16))\n this.buffer = undefined\n }\n }\n } else if (str[i] === '%') {\n if (i > p) {\n res += str.substring(p, i)\n p = i\n }\n this.buffer = ''\n ++p\n }\n }\n if (p < len && this.buffer === undefined) { res += str.substring(p) }\n return res\n}\nDecoder.prototype.reset = function () {\n this.buffer = undefined\n}\n\nmodule.exports = Decoder\n", "'use strict'\n\nconst Decoder = require('../utils/Decoder')\nconst decodeText = require('../utils/decodeText')\nconst getLimit = require('../utils/getLimit')\n\nconst RE_CHARSET = /^charset$/i\n\nUrlEncoded.detect = /^application\\/x-www-form-urlencoded/i\nfunction UrlEncoded (boy, cfg) {\n const limits = cfg.limits\n const parsedConType = cfg.parsedConType\n this.boy = boy\n\n this.fieldSizeLimit = getLimit(limits, 'fieldSize', 1 * 1024 * 1024)\n this.fieldNameSizeLimit = getLimit(limits, 'fieldNameSize', 100)\n this.fieldsLimit = getLimit(limits, 'fields', Infinity)\n\n let charset\n for (var i = 0, len = parsedConType.length; i < len; ++i) { // eslint-disable-line no-var\n if (Array.isArray(parsedConType[i]) &&\n RE_CHARSET.test(parsedConType[i][0])) {\n charset = parsedConType[i][1].toLowerCase()\n break\n }\n }\n\n if (charset === undefined) { charset = cfg.defCharset || 'utf8' }\n\n this.decoder = new Decoder()\n this.charset = charset\n this._fields = 0\n this._state = 'key'\n this._checkingBytes = true\n this._bytesKey = 0\n this._bytesVal = 0\n this._key = ''\n this._val = ''\n this._keyTrunc = false\n this._valTrunc = false\n this._hitLimit = false\n}\n\nUrlEncoded.prototype.write = function (data, cb) {\n if (this._fields === this.fieldsLimit) {\n if (!this.boy.hitFieldsLimit) {\n this.boy.hitFieldsLimit = true\n this.boy.emit('fieldsLimit')\n }\n return cb()\n }\n\n let idxeq; let idxamp; let i; let p = 0; const len = data.length\n\n while (p < len) {\n if (this._state === 'key') {\n idxeq = idxamp = undefined\n for (i = p; i < len; ++i) {\n if (!this._checkingBytes) { ++p }\n if (data[i] === 0x3D/* = */) {\n idxeq = i\n break\n } else if (data[i] === 0x26/* & */) {\n idxamp = i\n break\n }\n if (this._checkingBytes && this._bytesKey === this.fieldNameSizeLimit) {\n this._hitLimit = true\n break\n } else if (this._checkingBytes) { ++this._bytesKey }\n }\n\n if (idxeq !== undefined) {\n // key with assignment\n if (idxeq > p) { this._key += this.decoder.write(data.toString('binary', p, idxeq)) }\n this._state = 'val'\n\n this._hitLimit = false\n this._checkingBytes = true\n this._val = ''\n this._bytesVal = 0\n this._valTrunc = false\n this.decoder.reset()\n\n p = idxeq + 1\n } else if (idxamp !== undefined) {\n // key with no assignment\n ++this._fields\n let key; const keyTrunc = this._keyTrunc\n if (idxamp > p) { key = (this._key += this.decoder.write(data.toString('binary', p, idxamp))) } else { key = this._key }\n\n this._hitLimit = false\n this._checkingBytes = true\n this._key = ''\n this._bytesKey = 0\n this._keyTrunc = false\n this.decoder.reset()\n\n if (key.length) {\n this.boy.emit('field', decodeText(key, 'binary', this.charset),\n '',\n keyTrunc,\n false)\n }\n\n p = idxamp + 1\n if (this._fields === this.fieldsLimit) { return cb() }\n } else if (this._hitLimit) {\n // we may not have hit the actual limit if there are encoded bytes...\n if (i > p) { this._key += this.decoder.write(data.toString('binary', p, i)) }\n p = i\n if ((this._bytesKey = this._key.length) === this.fieldNameSizeLimit) {\n // yep, we actually did hit the limit\n this._checkingBytes = false\n this._keyTrunc = true\n }\n } else {\n if (p < len) { this._key += this.decoder.write(data.toString('binary', p)) }\n p = len\n }\n } else {\n idxamp = undefined\n for (i = p; i < len; ++i) {\n if (!this._checkingBytes) { ++p }\n if (data[i] === 0x26/* & */) {\n idxamp = i\n break\n }\n if (this._checkingBytes && this._bytesVal === this.fieldSizeLimit) {\n this._hitLimit = true\n break\n } else if (this._checkingBytes) { ++this._bytesVal }\n }\n\n if (idxamp !== undefined) {\n ++this._fields\n if (idxamp > p) { this._val += this.decoder.write(data.toString('binary', p, idxamp)) }\n this.boy.emit('field', decodeText(this._key, 'binary', this.charset),\n decodeText(this._val, 'binary', this.charset),\n this._keyTrunc,\n this._valTrunc)\n this._state = 'key'\n\n this._hitLimit = false\n this._checkingBytes = true\n this._key = ''\n this._bytesKey = 0\n this._keyTrunc = false\n this.decoder.reset()\n\n p = idxamp + 1\n if (this._fields === this.fieldsLimit) { return cb() }\n } else if (this._hitLimit) {\n // we may not have hit the actual limit if there are encoded bytes...\n if (i > p) { this._val += this.decoder.write(data.toString('binary', p, i)) }\n p = i\n if ((this._val === '' && this.fieldSizeLimit === 0) ||\n (this._bytesVal = this._val.length) === this.fieldSizeLimit) {\n // yep, we actually did hit the limit\n this._checkingBytes = false\n this._valTrunc = true\n }\n } else {\n if (p < len) { this._val += this.decoder.write(data.toString('binary', p)) }\n p = len\n }\n }\n }\n cb()\n}\n\nUrlEncoded.prototype.end = function () {\n if (this.boy._done) { return }\n\n if (this._state === 'key' && this._key.length > 0) {\n this.boy.emit('field', decodeText(this._key, 'binary', this.charset),\n '',\n this._keyTrunc,\n false)\n } else if (this._state === 'val') {\n this.boy.emit('field', decodeText(this._key, 'binary', this.charset),\n decodeText(this._val, 'binary', this.charset),\n this._keyTrunc,\n this._valTrunc)\n }\n this.boy._done = true\n this.boy.emit('finish')\n}\n\nmodule.exports = UrlEncoded\n", "'use strict'\n\nconst WritableStream = require('node:stream').Writable\nconst { inherits } = require('node:util')\nconst Dicer = require('../deps/dicer/lib/Dicer')\n\nconst MultipartParser = require('./types/multipart')\nconst UrlencodedParser = require('./types/urlencoded')\nconst parseParams = require('./utils/parseParams')\n\nfunction Busboy (opts) {\n if (!(this instanceof Busboy)) { return new Busboy(opts) }\n\n if (typeof opts !== 'object') {\n throw new TypeError('Busboy expected an options-Object.')\n }\n if (typeof opts.headers !== 'object') {\n throw new TypeError('Busboy expected an options-Object with headers-attribute.')\n }\n if (typeof opts.headers['content-type'] !== 'string') {\n throw new TypeError('Missing Content-Type-header.')\n }\n\n const {\n headers,\n ...streamOptions\n } = opts\n\n this.opts = {\n autoDestroy: false,\n ...streamOptions\n }\n WritableStream.call(this, this.opts)\n\n this._done = false\n this._parser = this.getParserByHeaders(headers)\n this._finished = false\n}\ninherits(Busboy, WritableStream)\n\nBusboy.prototype.emit = function (ev) {\n if (ev === 'finish') {\n if (!this._done) {\n this._parser?.end()\n return\n } else if (this._finished) {\n return\n }\n this._finished = true\n }\n WritableStream.prototype.emit.apply(this, arguments)\n}\n\nBusboy.prototype.getParserByHeaders = function (headers) {\n const parsed = parseParams(headers['content-type'])\n\n const cfg = {\n defCharset: this.opts.defCharset,\n fileHwm: this.opts.fileHwm,\n headers,\n highWaterMark: this.opts.highWaterMark,\n isPartAFile: this.opts.isPartAFile,\n limits: this.opts.limits,\n parsedConType: parsed,\n preservePath: this.opts.preservePath\n }\n\n if (MultipartParser.detect.test(parsed[0])) {\n return new MultipartParser(this, cfg)\n }\n if (UrlencodedParser.detect.test(parsed[0])) {\n return new UrlencodedParser(this, cfg)\n }\n throw new Error('Unsupported Content-Type.')\n}\n\nBusboy.prototype._write = function (chunk, encoding, cb) {\n this._parser.write(chunk, cb)\n}\n\nmodule.exports = Busboy\nmodule.exports.default = Busboy\nmodule.exports.Busboy = Busboy\n\nmodule.exports.Dicer = Dicer\n", "'use strict'\n\nconst { MessageChannel, receiveMessageOnPort } = require('worker_threads')\n\nconst corsSafeListedMethods = ['GET', 'HEAD', 'POST']\nconst corsSafeListedMethodsSet = new Set(corsSafeListedMethods)\n\nconst nullBodyStatus = [101, 204, 205, 304]\n\nconst redirectStatus = [301, 302, 303, 307, 308]\nconst redirectStatusSet = new Set(redirectStatus)\n\n// https://fetch.spec.whatwg.org/#block-bad-port\nconst badPorts = [\n '1', '7', '9', '11', '13', '15', '17', '19', '20', '21', '22', '23', '25', '37', '42', '43', '53', '69', '77', '79',\n '87', '95', '101', '102', '103', '104', '109', '110', '111', '113', '115', '117', '119', '123', '135', '137',\n '139', '143', '161', '179', '389', '427', '465', '512', '513', '514', '515', '526', '530', '531', '532',\n '540', '548', '554', '556', '563', '587', '601', '636', '989', '990', '993', '995', '1719', '1720', '1723',\n '2049', '3659', '4045', '5060', '5061', '6000', '6566', '6665', '6666', '6667', '6668', '6669', '6697',\n '10080'\n]\n\nconst badPortsSet = new Set(badPorts)\n\n// https://w3c.github.io/webappsec-referrer-policy/#referrer-policies\nconst referrerPolicy = [\n '',\n 'no-referrer',\n 'no-referrer-when-downgrade',\n 'same-origin',\n 'origin',\n 'strict-origin',\n 'origin-when-cross-origin',\n 'strict-origin-when-cross-origin',\n 'unsafe-url'\n]\nconst referrerPolicySet = new Set(referrerPolicy)\n\nconst requestRedirect = ['follow', 'manual', 'error']\n\nconst safeMethods = ['GET', 'HEAD', 'OPTIONS', 'TRACE']\nconst safeMethodsSet = new Set(safeMethods)\n\nconst requestMode = ['navigate', 'same-origin', 'no-cors', 'cors']\n\nconst requestCredentials = ['omit', 'same-origin', 'include']\n\nconst requestCache = [\n 'default',\n 'no-store',\n 'reload',\n 'no-cache',\n 'force-cache',\n 'only-if-cached'\n]\n\n// https://fetch.spec.whatwg.org/#request-body-header-name\nconst requestBodyHeader = [\n 'content-encoding',\n 'content-language',\n 'content-location',\n 'content-type',\n // See https://github.com/nodejs/undici/issues/2021\n // 'Content-Length' is a forbidden header name, which is typically\n // removed in the Headers implementation. However, undici doesn't\n // filter out headers, so we add it here.\n 'content-length'\n]\n\n// https://fetch.spec.whatwg.org/#enumdef-requestduplex\nconst requestDuplex = [\n 'half'\n]\n\n// http://fetch.spec.whatwg.org/#forbidden-method\nconst forbiddenMethods = ['CONNECT', 'TRACE', 'TRACK']\nconst forbiddenMethodsSet = new Set(forbiddenMethods)\n\nconst subresource = [\n 'audio',\n 'audioworklet',\n 'font',\n 'image',\n 'manifest',\n 'paintworklet',\n 'script',\n 'style',\n 'track',\n 'video',\n 'xslt',\n ''\n]\nconst subresourceSet = new Set(subresource)\n\n/** @type {globalThis['DOMException']} */\nconst DOMException = globalThis.DOMException ?? (() => {\n // DOMException was only made a global in Node v17.0.0,\n // but fetch supports >= v16.8.\n try {\n atob('~')\n } catch (err) {\n return Object.getPrototypeOf(err).constructor\n }\n})()\n\nlet channel\n\n/** @type {globalThis['structuredClone']} */\nconst structuredClone =\n globalThis.structuredClone ??\n // https://github.com/nodejs/node/blob/b27ae24dcc4251bad726d9d84baf678d1f707fed/lib/internal/structured_clone.js\n // structuredClone was added in v17.0.0, but fetch supports v16.8\n function structuredClone (value, options = undefined) {\n if (arguments.length === 0) {\n throw new TypeError('missing argument')\n }\n\n if (!channel) {\n channel = new MessageChannel()\n }\n channel.port1.unref()\n channel.port2.unref()\n channel.port1.postMessage(value, options?.transfer)\n return receiveMessageOnPort(channel.port2).message\n }\n\nmodule.exports = {\n DOMException,\n structuredClone,\n subresource,\n forbiddenMethods,\n requestBodyHeader,\n referrerPolicy,\n requestRedirect,\n requestMode,\n requestCredentials,\n requestCache,\n redirectStatus,\n corsSafeListedMethods,\n nullBodyStatus,\n safeMethods,\n badPorts,\n requestDuplex,\n subresourceSet,\n badPortsSet,\n redirectStatusSet,\n corsSafeListedMethodsSet,\n safeMethodsSet,\n forbiddenMethodsSet,\n referrerPolicySet\n}\n", "'use strict'\n\n// In case of breaking changes, increase the version\n// number to avoid conflicts.\nconst globalOrigin = Symbol.for('undici.globalOrigin.1')\n\nfunction getGlobalOrigin () {\n return globalThis[globalOrigin]\n}\n\nfunction setGlobalOrigin (newOrigin) {\n if (newOrigin === undefined) {\n Object.defineProperty(globalThis, globalOrigin, {\n value: undefined,\n writable: true,\n enumerable: false,\n configurable: false\n })\n\n return\n }\n\n const parsedURL = new URL(newOrigin)\n\n if (parsedURL.protocol !== 'http:' && parsedURL.protocol !== 'https:') {\n throw new TypeError(`Only http & https urls are allowed, received ${parsedURL.protocol}`)\n }\n\n Object.defineProperty(globalThis, globalOrigin, {\n value: parsedURL,\n writable: true,\n enumerable: false,\n configurable: false\n })\n}\n\nmodule.exports = {\n getGlobalOrigin,\n setGlobalOrigin\n}\n", "'use strict'\n\nconst { redirectStatusSet, referrerPolicySet: referrerPolicyTokens, badPortsSet } = require('./constants')\nconst { getGlobalOrigin } = require('./global')\nconst { performance } = require('perf_hooks')\nconst { isBlobLike, toUSVString, ReadableStreamFrom } = require('../core/util')\nconst assert = require('assert')\nconst { isUint8Array } = require('util/types')\n\nlet supportedHashes = []\n\n// https://nodejs.org/api/crypto.html#determining-if-crypto-support-is-unavailable\n/** @type {import('crypto')|undefined} */\nlet crypto\n\ntry {\n crypto = require('crypto')\n const possibleRelevantHashes = ['sha256', 'sha384', 'sha512']\n supportedHashes = crypto.getHashes().filter((hash) => possibleRelevantHashes.includes(hash))\n/* c8 ignore next 3 */\n} catch {\n}\n\nfunction responseURL (response) {\n // https://fetch.spec.whatwg.org/#responses\n // A response has an associated URL. It is a pointer to the last URL\n // in response\u2019s URL list and null if response\u2019s URL list is empty.\n const urlList = response.urlList\n const length = urlList.length\n return length === 0 ? null : urlList[length - 1].toString()\n}\n\n// https://fetch.spec.whatwg.org/#concept-response-location-url\nfunction responseLocationURL (response, requestFragment) {\n // 1. If response\u2019s status is not a redirect status, then return null.\n if (!redirectStatusSet.has(response.status)) {\n return null\n }\n\n // 2. Let location be the result of extracting header list values given\n // `Location` and response\u2019s header list.\n let location = response.headersList.get('location')\n\n // 3. If location is a header value, then set location to the result of\n // parsing location with response\u2019s URL.\n if (location !== null && isValidHeaderValue(location)) {\n location = new URL(location, responseURL(response))\n }\n\n // 4. If location is a URL whose fragment is null, then set location\u2019s\n // fragment to requestFragment.\n if (location && !location.hash) {\n location.hash = requestFragment\n }\n\n // 5. Return location.\n return location\n}\n\n/** @returns {URL} */\nfunction requestCurrentURL (request) {\n return request.urlList[request.urlList.length - 1]\n}\n\nfunction requestBadPort (request) {\n // 1. Let url be request\u2019s current URL.\n const url = requestCurrentURL(request)\n\n // 2. If url\u2019s scheme is an HTTP(S) scheme and url\u2019s port is a bad port,\n // then return blocked.\n if (urlIsHttpHttpsScheme(url) && badPortsSet.has(url.port)) {\n return 'blocked'\n }\n\n // 3. Return allowed.\n return 'allowed'\n}\n\nfunction isErrorLike (object) {\n return object instanceof Error || (\n object?.constructor?.name === 'Error' ||\n object?.constructor?.name === 'DOMException'\n )\n}\n\n// Check whether |statusText| is a ByteString and\n// matches the Reason-Phrase token production.\n// RFC 2616: https://tools.ietf.org/html/rfc2616\n// RFC 7230: https://tools.ietf.org/html/rfc7230\n// \"reason-phrase = *( HTAB / SP / VCHAR / obs-text )\"\n// https://github.com/chromium/chromium/blob/94.0.4604.1/third_party/blink/renderer/core/fetch/response.cc#L116\nfunction isValidReasonPhrase (statusText) {\n for (let i = 0; i < statusText.length; ++i) {\n const c = statusText.charCodeAt(i)\n if (\n !(\n (\n c === 0x09 || // HTAB\n (c >= 0x20 && c <= 0x7e) || // SP / VCHAR\n (c >= 0x80 && c <= 0xff)\n ) // obs-text\n )\n ) {\n return false\n }\n }\n return true\n}\n\n/**\n * @see https://tools.ietf.org/html/rfc7230#section-3.2.6\n * @param {number} c\n */\nfunction isTokenCharCode (c) {\n switch (c) {\n case 0x22:\n case 0x28:\n case 0x29:\n case 0x2c:\n case 0x2f:\n case 0x3a:\n case 0x3b:\n case 0x3c:\n case 0x3d:\n case 0x3e:\n case 0x3f:\n case 0x40:\n case 0x5b:\n case 0x5c:\n case 0x5d:\n case 0x7b:\n case 0x7d:\n // DQUOTE and \"(),/:;<=>?@[\\]{}\"\n return false\n default:\n // VCHAR %x21-7E\n return c >= 0x21 && c <= 0x7e\n }\n}\n\n/**\n * @param {string} characters\n */\nfunction isValidHTTPToken (characters) {\n if (characters.length === 0) {\n return false\n }\n for (let i = 0; i < characters.length; ++i) {\n if (!isTokenCharCode(characters.charCodeAt(i))) {\n return false\n }\n }\n return true\n}\n\n/**\n * @see https://fetch.spec.whatwg.org/#header-name\n * @param {string} potentialValue\n */\nfunction isValidHeaderName (potentialValue) {\n return isValidHTTPToken(potentialValue)\n}\n\n/**\n * @see https://fetch.spec.whatwg.org/#header-value\n * @param {string} potentialValue\n */\nfunction isValidHeaderValue (potentialValue) {\n // - Has no leading or trailing HTTP tab or space bytes.\n // - Contains no 0x00 (NUL) or HTTP newline bytes.\n if (\n potentialValue.startsWith('\\t') ||\n potentialValue.startsWith(' ') ||\n potentialValue.endsWith('\\t') ||\n potentialValue.endsWith(' ')\n ) {\n return false\n }\n\n if (\n potentialValue.includes('\\0') ||\n potentialValue.includes('\\r') ||\n potentialValue.includes('\\n')\n ) {\n return false\n }\n\n return true\n}\n\n// https://w3c.github.io/webappsec-referrer-policy/#set-requests-referrer-policy-on-redirect\nfunction setRequestReferrerPolicyOnRedirect (request, actualResponse) {\n // Given a request request and a response actualResponse, this algorithm\n // updates request\u2019s referrer policy according to the Referrer-Policy\n // header (if any) in actualResponse.\n\n // 1. Let policy be the result of executing \u00A7 8.1 Parse a referrer policy\n // from a Referrer-Policy header on actualResponse.\n\n // 8.1 Parse a referrer policy from a Referrer-Policy header\n // 1. Let policy-tokens be the result of extracting header list values given `Referrer-Policy` and response\u2019s header list.\n const { headersList } = actualResponse\n // 2. Let policy be the empty string.\n // 3. For each token in policy-tokens, if token is a referrer policy and token is not the empty string, then set policy to token.\n // 4. Return policy.\n const policyHeader = (headersList.get('referrer-policy') ?? '').split(',')\n\n // Note: As the referrer-policy can contain multiple policies\n // separated by comma, we need to loop through all of them\n // and pick the first valid one.\n // Ref: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Referrer-Policy#specify_a_fallback_policy\n let policy = ''\n if (policyHeader.length > 0) {\n // The right-most policy takes precedence.\n // The left-most policy is the fallback.\n for (let i = policyHeader.length; i !== 0; i--) {\n const token = policyHeader[i - 1].trim()\n if (referrerPolicyTokens.has(token)) {\n policy = token\n break\n }\n }\n }\n\n // 2. If policy is not the empty string, then set request\u2019s referrer policy to policy.\n if (policy !== '') {\n request.referrerPolicy = policy\n }\n}\n\n// https://fetch.spec.whatwg.org/#cross-origin-resource-policy-check\nfunction crossOriginResourcePolicyCheck () {\n // TODO\n return 'allowed'\n}\n\n// https://fetch.spec.whatwg.org/#concept-cors-check\nfunction corsCheck () {\n // TODO\n return 'success'\n}\n\n// https://fetch.spec.whatwg.org/#concept-tao-check\nfunction TAOCheck () {\n // TODO\n return 'success'\n}\n\nfunction appendFetchMetadata (httpRequest) {\n // https://w3c.github.io/webappsec-fetch-metadata/#sec-fetch-dest-header\n // TODO\n\n // https://w3c.github.io/webappsec-fetch-metadata/#sec-fetch-mode-header\n\n // 1. Assert: r\u2019s url is a potentially trustworthy URL.\n // TODO\n\n // 2. Let header be a Structured Header whose value is a token.\n let header = null\n\n // 3. Set header\u2019s value to r\u2019s mode.\n header = httpRequest.mode\n\n // 4. Set a structured field value `Sec-Fetch-Mode`/header in r\u2019s header list.\n httpRequest.headersList.set('sec-fetch-mode', header)\n\n // https://w3c.github.io/webappsec-fetch-metadata/#sec-fetch-site-header\n // TODO\n\n // https://w3c.github.io/webappsec-fetch-metadata/#sec-fetch-user-header\n // TODO\n}\n\n// https://fetch.spec.whatwg.org/#append-a-request-origin-header\nfunction appendRequestOriginHeader (request) {\n // 1. Let serializedOrigin be the result of byte-serializing a request origin with request.\n let serializedOrigin = request.origin\n\n // 2. If request\u2019s response tainting is \"cors\" or request\u2019s mode is \"websocket\", then append (`Origin`, serializedOrigin) to request\u2019s header list.\n if (request.responseTainting === 'cors' || request.mode === 'websocket') {\n if (serializedOrigin) {\n request.headersList.append('origin', serializedOrigin)\n }\n\n // 3. Otherwise, if request\u2019s method is neither `GET` nor `HEAD`, then:\n } else if (request.method !== 'GET' && request.method !== 'HEAD') {\n // 1. Switch on request\u2019s referrer policy:\n switch (request.referrerPolicy) {\n case 'no-referrer':\n // Set serializedOrigin to `null`.\n serializedOrigin = null\n break\n case 'no-referrer-when-downgrade':\n case 'strict-origin':\n case 'strict-origin-when-cross-origin':\n // If request\u2019s origin is a tuple origin, its scheme is \"https\", and request\u2019s current URL\u2019s scheme is not \"https\", then set serializedOrigin to `null`.\n if (request.origin && urlHasHttpsScheme(request.origin) && !urlHasHttpsScheme(requestCurrentURL(request))) {\n serializedOrigin = null\n }\n break\n case 'same-origin':\n // If request\u2019s origin is not same origin with request\u2019s current URL\u2019s origin, then set serializedOrigin to `null`.\n if (!sameOrigin(request, requestCurrentURL(request))) {\n serializedOrigin = null\n }\n break\n default:\n // Do nothing.\n }\n\n if (serializedOrigin) {\n // 2. Append (`Origin`, serializedOrigin) to request\u2019s header list.\n request.headersList.append('origin', serializedOrigin)\n }\n }\n}\n\nfunction coarsenedSharedCurrentTime (crossOriginIsolatedCapability) {\n // TODO\n return performance.now()\n}\n\n// https://fetch.spec.whatwg.org/#create-an-opaque-timing-info\nfunction createOpaqueTimingInfo (timingInfo) {\n return {\n startTime: timingInfo.startTime ?? 0,\n redirectStartTime: 0,\n redirectEndTime: 0,\n postRedirectStartTime: timingInfo.startTime ?? 0,\n finalServiceWorkerStartTime: 0,\n finalNetworkResponseStartTime: 0,\n finalNetworkRequestStartTime: 0,\n endTime: 0,\n encodedBodySize: 0,\n decodedBodySize: 0,\n finalConnectionTimingInfo: null\n }\n}\n\n// https://html.spec.whatwg.org/multipage/origin.html#policy-container\nfunction makePolicyContainer () {\n // Note: the fetch spec doesn't make use of embedder policy or CSP list\n return {\n referrerPolicy: 'strict-origin-when-cross-origin'\n }\n}\n\n// https://html.spec.whatwg.org/multipage/origin.html#clone-a-policy-container\nfunction clonePolicyContainer (policyContainer) {\n return {\n referrerPolicy: policyContainer.referrerPolicy\n }\n}\n\n// https://w3c.github.io/webappsec-referrer-policy/#determine-requests-referrer\nfunction determineRequestsReferrer (request) {\n // 1. Let policy be request's referrer policy.\n const policy = request.referrerPolicy\n\n // Note: policy cannot (shouldn't) be null or an empty string.\n assert(policy)\n\n // 2. Let environment be request\u2019s client.\n\n let referrerSource = null\n\n // 3. Switch on request\u2019s referrer:\n if (request.referrer === 'client') {\n // Note: node isn't a browser and doesn't implement document/iframes,\n // so we bypass this step and replace it with our own.\n\n const globalOrigin = getGlobalOrigin()\n\n if (!globalOrigin || globalOrigin.origin === 'null') {\n return 'no-referrer'\n }\n\n // note: we need to clone it as it's mutated\n referrerSource = new URL(globalOrigin)\n } else if (request.referrer instanceof URL) {\n // Let referrerSource be request\u2019s referrer.\n referrerSource = request.referrer\n }\n\n // 4. Let request\u2019s referrerURL be the result of stripping referrerSource for\n // use as a referrer.\n let referrerURL = stripURLForReferrer(referrerSource)\n\n // 5. Let referrerOrigin be the result of stripping referrerSource for use as\n // a referrer, with the origin-only flag set to true.\n const referrerOrigin = stripURLForReferrer(referrerSource, true)\n\n // 6. If the result of serializing referrerURL is a string whose length is\n // greater than 4096, set referrerURL to referrerOrigin.\n if (referrerURL.toString().length > 4096) {\n referrerURL = referrerOrigin\n }\n\n const areSameOrigin = sameOrigin(request, referrerURL)\n const isNonPotentiallyTrustWorthy = isURLPotentiallyTrustworthy(referrerURL) &&\n !isURLPotentiallyTrustworthy(request.url)\n\n // 8. Execute the switch statements corresponding to the value of policy:\n switch (policy) {\n case 'origin': return referrerOrigin != null ? referrerOrigin : stripURLForReferrer(referrerSource, true)\n case 'unsafe-url': return referrerURL\n case 'same-origin':\n return areSameOrigin ? referrerOrigin : 'no-referrer'\n case 'origin-when-cross-origin':\n return areSameOrigin ? referrerURL : referrerOrigin\n case 'strict-origin-when-cross-origin': {\n const currentURL = requestCurrentURL(request)\n\n // 1. If the origin of referrerURL and the origin of request\u2019s current\n // URL are the same, then return referrerURL.\n if (sameOrigin(referrerURL, currentURL)) {\n return referrerURL\n }\n\n // 2. If referrerURL is a potentially trustworthy URL and request\u2019s\n // current URL is not a potentially trustworthy URL, then return no\n // referrer.\n if (isURLPotentiallyTrustworthy(referrerURL) && !isURLPotentiallyTrustworthy(currentURL)) {\n return 'no-referrer'\n }\n\n // 3. Return referrerOrigin.\n return referrerOrigin\n }\n case 'strict-origin': // eslint-disable-line\n /**\n * 1. If referrerURL is a potentially trustworthy URL and\n * request\u2019s current URL is not a potentially trustworthy URL,\n * then return no referrer.\n * 2. Return referrerOrigin\n */\n case 'no-referrer-when-downgrade': // eslint-disable-line\n /**\n * 1. If referrerURL is a potentially trustworthy URL and\n * request\u2019s current URL is not a potentially trustworthy URL,\n * then return no referrer.\n * 2. Return referrerOrigin\n */\n\n default: // eslint-disable-line\n return isNonPotentiallyTrustWorthy ? 'no-referrer' : referrerOrigin\n }\n}\n\n/**\n * @see https://w3c.github.io/webappsec-referrer-policy/#strip-url\n * @param {URL} url\n * @param {boolean|undefined} originOnly\n */\nfunction stripURLForReferrer (url, originOnly) {\n // 1. Assert: url is a URL.\n assert(url instanceof URL)\n\n // 2. If url\u2019s scheme is a local scheme, then return no referrer.\n if (url.protocol === 'file:' || url.protocol === 'about:' || url.protocol === 'blank:') {\n return 'no-referrer'\n }\n\n // 3. Set url\u2019s username to the empty string.\n url.username = ''\n\n // 4. Set url\u2019s password to the empty string.\n url.password = ''\n\n // 5. Set url\u2019s fragment to null.\n url.hash = ''\n\n // 6. If the origin-only flag is true, then:\n if (originOnly) {\n // 1. Set url\u2019s path to \u00AB the empty string \u00BB.\n url.pathname = ''\n\n // 2. Set url\u2019s query to null.\n url.search = ''\n }\n\n // 7. Return url.\n return url\n}\n\nfunction isURLPotentiallyTrustworthy (url) {\n if (!(url instanceof URL)) {\n return false\n }\n\n // If child of about, return true\n if (url.href === 'about:blank' || url.href === 'about:srcdoc') {\n return true\n }\n\n // If scheme is data, return true\n if (url.protocol === 'data:') return true\n\n // If file, return true\n if (url.protocol === 'file:') return true\n\n return isOriginPotentiallyTrustworthy(url.origin)\n\n function isOriginPotentiallyTrustworthy (origin) {\n // If origin is explicitly null, return false\n if (origin == null || origin === 'null') return false\n\n const originAsURL = new URL(origin)\n\n // If secure, return true\n if (originAsURL.protocol === 'https:' || originAsURL.protocol === 'wss:') {\n return true\n }\n\n // If localhost or variants, return true\n if (/^127(?:\\.[0-9]+){0,2}\\.[0-9]+$|^\\[(?:0*:)*?:?0*1\\]$/.test(originAsURL.hostname) ||\n (originAsURL.hostname === 'localhost' || originAsURL.hostname.includes('localhost.')) ||\n (originAsURL.hostname.endsWith('.localhost'))) {\n return true\n }\n\n // If any other, return false\n return false\n }\n}\n\n/**\n * @see https://w3c.github.io/webappsec-subresource-integrity/#does-response-match-metadatalist\n * @param {Uint8Array} bytes\n * @param {string} metadataList\n */\nfunction bytesMatch (bytes, metadataList) {\n // If node is not built with OpenSSL support, we cannot check\n // a request's integrity, so allow it by default (the spec will\n // allow requests if an invalid hash is given, as precedence).\n /* istanbul ignore if: only if node is built with --without-ssl */\n if (crypto === undefined) {\n return true\n }\n\n // 1. Let parsedMetadata be the result of parsing metadataList.\n const parsedMetadata = parseMetadata(metadataList)\n\n // 2. If parsedMetadata is no metadata, return true.\n if (parsedMetadata === 'no metadata') {\n return true\n }\n\n // 3. If response is not eligible for integrity validation, return false.\n // TODO\n\n // 4. If parsedMetadata is the empty set, return true.\n if (parsedMetadata.length === 0) {\n return true\n }\n\n // 5. Let metadata be the result of getting the strongest\n // metadata from parsedMetadata.\n const strongest = getStrongestMetadata(parsedMetadata)\n const metadata = filterMetadataListByAlgorithm(parsedMetadata, strongest)\n\n // 6. For each item in metadata:\n for (const item of metadata) {\n // 1. Let algorithm be the alg component of item.\n const algorithm = item.algo\n\n // 2. Let expectedValue be the val component of item.\n const expectedValue = item.hash\n\n // See https://github.com/web-platform-tests/wpt/commit/e4c5cc7a5e48093220528dfdd1c4012dc3837a0e\n // \"be liberal with padding\". This is annoying, and it's not even in the spec.\n\n // 3. Let actualValue be the result of applying algorithm to bytes.\n let actualValue = crypto.createHash(algorithm).update(bytes).digest('base64')\n\n if (actualValue[actualValue.length - 1] === '=') {\n if (actualValue[actualValue.length - 2] === '=') {\n actualValue = actualValue.slice(0, -2)\n } else {\n actualValue = actualValue.slice(0, -1)\n }\n }\n\n // 4. If actualValue is a case-sensitive match for expectedValue,\n // return true.\n if (compareBase64Mixed(actualValue, expectedValue)) {\n return true\n }\n }\n\n // 7. Return false.\n return false\n}\n\n// https://w3c.github.io/webappsec-subresource-integrity/#grammardef-hash-with-options\n// https://www.w3.org/TR/CSP2/#source-list-syntax\n// https://www.rfc-editor.org/rfc/rfc5234#appendix-B.1\nconst parseHashWithOptions = /(?sha256|sha384|sha512)-((?[A-Za-z0-9+/]+|[A-Za-z0-9_-]+)={0,2}(?:\\s|$)( +[!-~]*)?)?/i\n\n/**\n * @see https://w3c.github.io/webappsec-subresource-integrity/#parse-metadata\n * @param {string} metadata\n */\nfunction parseMetadata (metadata) {\n // 1. Let result be the empty set.\n /** @type {{ algo: string, hash: string }[]} */\n const result = []\n\n // 2. Let empty be equal to true.\n let empty = true\n\n // 3. For each token returned by splitting metadata on spaces:\n for (const token of metadata.split(' ')) {\n // 1. Set empty to false.\n empty = false\n\n // 2. Parse token as a hash-with-options.\n const parsedToken = parseHashWithOptions.exec(token)\n\n // 3. If token does not parse, continue to the next token.\n if (\n parsedToken === null ||\n parsedToken.groups === undefined ||\n parsedToken.groups.algo === undefined\n ) {\n // Note: Chromium blocks the request at this point, but Firefox\n // gives a warning that an invalid integrity was given. The\n // correct behavior is to ignore these, and subsequently not\n // check the integrity of the resource.\n continue\n }\n\n // 4. Let algorithm be the hash-algo component of token.\n const algorithm = parsedToken.groups.algo.toLowerCase()\n\n // 5. If algorithm is a hash function recognized by the user\n // agent, add the parsed token to result.\n if (supportedHashes.includes(algorithm)) {\n result.push(parsedToken.groups)\n }\n }\n\n // 4. Return no metadata if empty is true, otherwise return result.\n if (empty === true) {\n return 'no metadata'\n }\n\n return result\n}\n\n/**\n * @param {{ algo: 'sha256' | 'sha384' | 'sha512' }[]} metadataList\n */\nfunction getStrongestMetadata (metadataList) {\n // Let algorithm be the algo component of the first item in metadataList.\n // Can be sha256\n let algorithm = metadataList[0].algo\n // If the algorithm is sha512, then it is the strongest\n // and we can return immediately\n if (algorithm[3] === '5') {\n return algorithm\n }\n\n for (let i = 1; i < metadataList.length; ++i) {\n const metadata = metadataList[i]\n // If the algorithm is sha512, then it is the strongest\n // and we can break the loop immediately\n if (metadata.algo[3] === '5') {\n algorithm = 'sha512'\n break\n // If the algorithm is sha384, then a potential sha256 or sha384 is ignored\n } else if (algorithm[3] === '3') {\n continue\n // algorithm is sha256, check if algorithm is sha384 and if so, set it as\n // the strongest\n } else if (metadata.algo[3] === '3') {\n algorithm = 'sha384'\n }\n }\n return algorithm\n}\n\nfunction filterMetadataListByAlgorithm (metadataList, algorithm) {\n if (metadataList.length === 1) {\n return metadataList\n }\n\n let pos = 0\n for (let i = 0; i < metadataList.length; ++i) {\n if (metadataList[i].algo === algorithm) {\n metadataList[pos++] = metadataList[i]\n }\n }\n\n metadataList.length = pos\n\n return metadataList\n}\n\n/**\n * Compares two base64 strings, allowing for base64url\n * in the second string.\n *\n* @param {string} actualValue always base64\n * @param {string} expectedValue base64 or base64url\n * @returns {boolean}\n */\nfunction compareBase64Mixed (actualValue, expectedValue) {\n if (actualValue.length !== expectedValue.length) {\n return false\n }\n for (let i = 0; i < actualValue.length; ++i) {\n if (actualValue[i] !== expectedValue[i]) {\n if (\n (actualValue[i] === '+' && expectedValue[i] === '-') ||\n (actualValue[i] === '/' && expectedValue[i] === '_')\n ) {\n continue\n }\n return false\n }\n }\n\n return true\n}\n\n// https://w3c.github.io/webappsec-upgrade-insecure-requests/#upgrade-request\nfunction tryUpgradeRequestToAPotentiallyTrustworthyURL (request) {\n // TODO\n}\n\n/**\n * @link {https://html.spec.whatwg.org/multipage/origin.html#same-origin}\n * @param {URL} A\n * @param {URL} B\n */\nfunction sameOrigin (A, B) {\n // 1. If A and B are the same opaque origin, then return true.\n if (A.origin === B.origin && A.origin === 'null') {\n return true\n }\n\n // 2. If A and B are both tuple origins and their schemes,\n // hosts, and port are identical, then return true.\n if (A.protocol === B.protocol && A.hostname === B.hostname && A.port === B.port) {\n return true\n }\n\n // 3. Return false.\n return false\n}\n\nfunction createDeferredPromise () {\n let res\n let rej\n const promise = new Promise((resolve, reject) => {\n res = resolve\n rej = reject\n })\n\n return { promise, resolve: res, reject: rej }\n}\n\nfunction isAborted (fetchParams) {\n return fetchParams.controller.state === 'aborted'\n}\n\nfunction isCancelled (fetchParams) {\n return fetchParams.controller.state === 'aborted' ||\n fetchParams.controller.state === 'terminated'\n}\n\nconst normalizeMethodRecord = {\n delete: 'DELETE',\n DELETE: 'DELETE',\n get: 'GET',\n GET: 'GET',\n head: 'HEAD',\n HEAD: 'HEAD',\n options: 'OPTIONS',\n OPTIONS: 'OPTIONS',\n post: 'POST',\n POST: 'POST',\n put: 'PUT',\n PUT: 'PUT'\n}\n\n// Note: object prototypes should not be able to be referenced. e.g. `Object#hasOwnProperty`.\nObject.setPrototypeOf(normalizeMethodRecord, null)\n\n/**\n * @see https://fetch.spec.whatwg.org/#concept-method-normalize\n * @param {string} method\n */\nfunction normalizeMethod (method) {\n return normalizeMethodRecord[method.toLowerCase()] ?? method\n}\n\n// https://infra.spec.whatwg.org/#serialize-a-javascript-value-to-a-json-string\nfunction serializeJavascriptValueToJSONString (value) {\n // 1. Let result be ? Call(%JSON.stringify%, undefined, \u00AB value \u00BB).\n const result = JSON.stringify(value)\n\n // 2. If result is undefined, then throw a TypeError.\n if (result === undefined) {\n throw new TypeError('Value is not JSON serializable')\n }\n\n // 3. Assert: result is a string.\n assert(typeof result === 'string')\n\n // 4. Return result.\n return result\n}\n\n// https://tc39.es/ecma262/#sec-%25iteratorprototype%25-object\nconst esIteratorPrototype = Object.getPrototypeOf(Object.getPrototypeOf([][Symbol.iterator]()))\n\n/**\n * @see https://webidl.spec.whatwg.org/#dfn-iterator-prototype-object\n * @param {() => unknown[]} iterator\n * @param {string} name name of the instance\n * @param {'key'|'value'|'key+value'} kind\n */\nfunction makeIterator (iterator, name, kind) {\n const object = {\n index: 0,\n kind,\n target: iterator\n }\n\n const i = {\n next () {\n // 1. Let interface be the interface for which the iterator prototype object exists.\n\n // 2. Let thisValue be the this value.\n\n // 3. Let object be ? ToObject(thisValue).\n\n // 4. If object is a platform object, then perform a security\n // check, passing:\n\n // 5. If object is not a default iterator object for interface,\n // then throw a TypeError.\n if (Object.getPrototypeOf(this) !== i) {\n throw new TypeError(\n `'next' called on an object that does not implement interface ${name} Iterator.`\n )\n }\n\n // 6. Let index be object\u2019s index.\n // 7. Let kind be object\u2019s kind.\n // 8. Let values be object\u2019s target's value pairs to iterate over.\n const { index, kind, target } = object\n const values = target()\n\n // 9. Let len be the length of values.\n const len = values.length\n\n // 10. If index is greater than or equal to len, then return\n // CreateIterResultObject(undefined, true).\n if (index >= len) {\n return { value: undefined, done: true }\n }\n\n // 11. Let pair be the entry in values at index index.\n const pair = values[index]\n\n // 12. Set object\u2019s index to index + 1.\n object.index = index + 1\n\n // 13. Return the iterator result for pair and kind.\n return iteratorResult(pair, kind)\n },\n // The class string of an iterator prototype object for a given interface is the\n // result of concatenating the identifier of the interface and the string \" Iterator\".\n [Symbol.toStringTag]: `${name} Iterator`\n }\n\n // The [[Prototype]] internal slot of an iterator prototype object must be %IteratorPrototype%.\n Object.setPrototypeOf(i, esIteratorPrototype)\n // esIteratorPrototype needs to be the prototype of i\n // which is the prototype of an empty object. Yes, it's confusing.\n return Object.setPrototypeOf({}, i)\n}\n\n// https://webidl.spec.whatwg.org/#iterator-result\nfunction iteratorResult (pair, kind) {\n let result\n\n // 1. Let result be a value determined by the value of kind:\n switch (kind) {\n case 'key': {\n // 1. Let idlKey be pair\u2019s key.\n // 2. Let key be the result of converting idlKey to an\n // ECMAScript value.\n // 3. result is key.\n result = pair[0]\n break\n }\n case 'value': {\n // 1. Let idlValue be pair\u2019s value.\n // 2. Let value be the result of converting idlValue to\n // an ECMAScript value.\n // 3. result is value.\n result = pair[1]\n break\n }\n case 'key+value': {\n // 1. Let idlKey be pair\u2019s key.\n // 2. Let idlValue be pair\u2019s value.\n // 3. Let key be the result of converting idlKey to an\n // ECMAScript value.\n // 4. Let value be the result of converting idlValue to\n // an ECMAScript value.\n // 5. Let array be ! ArrayCreate(2).\n // 6. Call ! CreateDataProperty(array, \"0\", key).\n // 7. Call ! CreateDataProperty(array, \"1\", value).\n // 8. result is array.\n result = pair\n break\n }\n }\n\n // 2. Return CreateIterResultObject(result, false).\n return { value: result, done: false }\n}\n\n/**\n * @see https://fetch.spec.whatwg.org/#body-fully-read\n */\nasync function fullyReadBody (body, processBody, processBodyError) {\n // 1. If taskDestination is null, then set taskDestination to\n // the result of starting a new parallel queue.\n\n // 2. Let successSteps given a byte sequence bytes be to queue a\n // fetch task to run processBody given bytes, with taskDestination.\n const successSteps = processBody\n\n // 3. Let errorSteps be to queue a fetch task to run processBodyError,\n // with taskDestination.\n const errorSteps = processBodyError\n\n // 4. Let reader be the result of getting a reader for body\u2019s stream.\n // If that threw an exception, then run errorSteps with that\n // exception and return.\n let reader\n\n try {\n reader = body.stream.getReader()\n } catch (e) {\n errorSteps(e)\n return\n }\n\n // 5. Read all bytes from reader, given successSteps and errorSteps.\n try {\n const result = await readAllBytes(reader)\n successSteps(result)\n } catch (e) {\n errorSteps(e)\n }\n}\n\n/** @type {ReadableStream} */\nlet ReadableStream = globalThis.ReadableStream\n\nfunction isReadableStreamLike (stream) {\n if (!ReadableStream) {\n ReadableStream = require('stream/web').ReadableStream\n }\n\n return stream instanceof ReadableStream || (\n stream[Symbol.toStringTag] === 'ReadableStream' &&\n typeof stream.tee === 'function'\n )\n}\n\nconst MAXIMUM_ARGUMENT_LENGTH = 65535\n\n/**\n * @see https://infra.spec.whatwg.org/#isomorphic-decode\n * @param {number[]|Uint8Array} input\n */\nfunction isomorphicDecode (input) {\n // 1. To isomorphic decode a byte sequence input, return a string whose code point\n // length is equal to input\u2019s length and whose code points have the same values\n // as the values of input\u2019s bytes, in the same order.\n\n if (input.length < MAXIMUM_ARGUMENT_LENGTH) {\n return String.fromCharCode(...input)\n }\n\n return input.reduce((previous, current) => previous + String.fromCharCode(current), '')\n}\n\n/**\n * @param {ReadableStreamController} controller\n */\nfunction readableStreamClose (controller) {\n try {\n controller.close()\n } catch (err) {\n // TODO: add comment explaining why this error occurs.\n if (!err.message.includes('Controller is already closed')) {\n throw err\n }\n }\n}\n\n/**\n * @see https://infra.spec.whatwg.org/#isomorphic-encode\n * @param {string} input\n */\nfunction isomorphicEncode (input) {\n // 1. Assert: input contains no code points greater than U+00FF.\n for (let i = 0; i < input.length; i++) {\n assert(input.charCodeAt(i) <= 0xFF)\n }\n\n // 2. Return a byte sequence whose length is equal to input\u2019s code\n // point length and whose bytes have the same values as the\n // values of input\u2019s code points, in the same order\n return input\n}\n\n/**\n * @see https://streams.spec.whatwg.org/#readablestreamdefaultreader-read-all-bytes\n * @see https://streams.spec.whatwg.org/#read-loop\n * @param {ReadableStreamDefaultReader} reader\n */\nasync function readAllBytes (reader) {\n const bytes = []\n let byteLength = 0\n\n while (true) {\n const { done, value: chunk } = await reader.read()\n\n if (done) {\n // 1. Call successSteps with bytes.\n return Buffer.concat(bytes, byteLength)\n }\n\n // 1. If chunk is not a Uint8Array object, call failureSteps\n // with a TypeError and abort these steps.\n if (!isUint8Array(chunk)) {\n throw new TypeError('Received non-Uint8Array chunk')\n }\n\n // 2. Append the bytes represented by chunk to bytes.\n bytes.push(chunk)\n byteLength += chunk.length\n\n // 3. Read-loop given reader, bytes, successSteps, and failureSteps.\n }\n}\n\n/**\n * @see https://fetch.spec.whatwg.org/#is-local\n * @param {URL} url\n */\nfunction urlIsLocal (url) {\n assert('protocol' in url) // ensure it's a url object\n\n const protocol = url.protocol\n\n return protocol === 'about:' || protocol === 'blob:' || protocol === 'data:'\n}\n\n/**\n * @param {string|URL} url\n */\nfunction urlHasHttpsScheme (url) {\n if (typeof url === 'string') {\n return url.startsWith('https:')\n }\n\n return url.protocol === 'https:'\n}\n\n/**\n * @see https://fetch.spec.whatwg.org/#http-scheme\n * @param {URL} url\n */\nfunction urlIsHttpHttpsScheme (url) {\n assert('protocol' in url) // ensure it's a url object\n\n const protocol = url.protocol\n\n return protocol === 'http:' || protocol === 'https:'\n}\n\n/**\n * Fetch supports node >= 16.8.0, but Object.hasOwn was added in v16.9.0.\n */\nconst hasOwn = Object.hasOwn || ((dict, key) => Object.prototype.hasOwnProperty.call(dict, key))\n\nmodule.exports = {\n isAborted,\n isCancelled,\n createDeferredPromise,\n ReadableStreamFrom,\n toUSVString,\n tryUpgradeRequestToAPotentiallyTrustworthyURL,\n coarsenedSharedCurrentTime,\n determineRequestsReferrer,\n makePolicyContainer,\n clonePolicyContainer,\n appendFetchMetadata,\n appendRequestOriginHeader,\n TAOCheck,\n corsCheck,\n crossOriginResourcePolicyCheck,\n createOpaqueTimingInfo,\n setRequestReferrerPolicyOnRedirect,\n isValidHTTPToken,\n requestBadPort,\n requestCurrentURL,\n responseURL,\n responseLocationURL,\n isBlobLike,\n isURLPotentiallyTrustworthy,\n isValidReasonPhrase,\n sameOrigin,\n normalizeMethod,\n serializeJavascriptValueToJSONString,\n makeIterator,\n isValidHeaderName,\n isValidHeaderValue,\n hasOwn,\n isErrorLike,\n fullyReadBody,\n bytesMatch,\n isReadableStreamLike,\n readableStreamClose,\n isomorphicEncode,\n isomorphicDecode,\n urlIsLocal,\n urlHasHttpsScheme,\n urlIsHttpHttpsScheme,\n readAllBytes,\n normalizeMethodRecord,\n parseMetadata\n}\n", "'use strict'\n\nmodule.exports = {\n kUrl: Symbol('url'),\n kHeaders: Symbol('headers'),\n kSignal: Symbol('signal'),\n kState: Symbol('state'),\n kGuard: Symbol('guard'),\n kRealm: Symbol('realm')\n}\n", "'use strict'\n\nconst { types } = require('util')\nconst { hasOwn, toUSVString } = require('./util')\n\n/** @type {import('../../types/webidl').Webidl} */\nconst webidl = {}\nwebidl.converters = {}\nwebidl.util = {}\nwebidl.errors = {}\n\nwebidl.errors.exception = function (message) {\n return new TypeError(`${message.header}: ${message.message}`)\n}\n\nwebidl.errors.conversionFailed = function (context) {\n const plural = context.types.length === 1 ? '' : ' one of'\n const message =\n `${context.argument} could not be converted to` +\n `${plural}: ${context.types.join(', ')}.`\n\n return webidl.errors.exception({\n header: context.prefix,\n message\n })\n}\n\nwebidl.errors.invalidArgument = function (context) {\n return webidl.errors.exception({\n header: context.prefix,\n message: `\"${context.value}\" is an invalid ${context.type}.`\n })\n}\n\n// https://webidl.spec.whatwg.org/#implements\nwebidl.brandCheck = function (V, I, opts = undefined) {\n if (opts?.strict !== false && !(V instanceof I)) {\n throw new TypeError('Illegal invocation')\n } else {\n return V?.[Symbol.toStringTag] === I.prototype[Symbol.toStringTag]\n }\n}\n\nwebidl.argumentLengthCheck = function ({ length }, min, ctx) {\n if (length < min) {\n throw webidl.errors.exception({\n message: `${min} argument${min !== 1 ? 's' : ''} required, ` +\n `but${length ? ' only' : ''} ${length} found.`,\n ...ctx\n })\n }\n}\n\nwebidl.illegalConstructor = function () {\n throw webidl.errors.exception({\n header: 'TypeError',\n message: 'Illegal constructor'\n })\n}\n\n// https://tc39.es/ecma262/#sec-ecmascript-data-types-and-values\nwebidl.util.Type = function (V) {\n switch (typeof V) {\n case 'undefined': return 'Undefined'\n case 'boolean': return 'Boolean'\n case 'string': return 'String'\n case 'symbol': return 'Symbol'\n case 'number': return 'Number'\n case 'bigint': return 'BigInt'\n case 'function':\n case 'object': {\n if (V === null) {\n return 'Null'\n }\n\n return 'Object'\n }\n }\n}\n\n// https://webidl.spec.whatwg.org/#abstract-opdef-converttoint\nwebidl.util.ConvertToInt = function (V, bitLength, signedness, opts = {}) {\n let upperBound\n let lowerBound\n\n // 1. If bitLength is 64, then:\n if (bitLength === 64) {\n // 1. Let upperBound be 2^53 \u2212 1.\n upperBound = Math.pow(2, 53) - 1\n\n // 2. If signedness is \"unsigned\", then let lowerBound be 0.\n if (signedness === 'unsigned') {\n lowerBound = 0\n } else {\n // 3. Otherwise let lowerBound be \u22122^53 + 1.\n lowerBound = Math.pow(-2, 53) + 1\n }\n } else if (signedness === 'unsigned') {\n // 2. Otherwise, if signedness is \"unsigned\", then:\n\n // 1. Let lowerBound be 0.\n lowerBound = 0\n\n // 2. Let upperBound be 2^bitLength \u2212 1.\n upperBound = Math.pow(2, bitLength) - 1\n } else {\n // 3. Otherwise:\n\n // 1. Let lowerBound be -2^bitLength \u2212 1.\n lowerBound = Math.pow(-2, bitLength) - 1\n\n // 2. Let upperBound be 2^bitLength \u2212 1 \u2212 1.\n upperBound = Math.pow(2, bitLength - 1) - 1\n }\n\n // 4. Let x be ? ToNumber(V).\n let x = Number(V)\n\n // 5. If x is \u22120, then set x to +0.\n if (x === 0) {\n x = 0\n }\n\n // 6. If the conversion is to an IDL type associated\n // with the [EnforceRange] extended attribute, then:\n if (opts.enforceRange === true) {\n // 1. If x is NaN, +\u221E, or \u2212\u221E, then throw a TypeError.\n if (\n Number.isNaN(x) ||\n x === Number.POSITIVE_INFINITY ||\n x === Number.NEGATIVE_INFINITY\n ) {\n throw webidl.errors.exception({\n header: 'Integer conversion',\n message: `Could not convert ${V} to an integer.`\n })\n }\n\n // 2. Set x to IntegerPart(x).\n x = webidl.util.IntegerPart(x)\n\n // 3. If x < lowerBound or x > upperBound, then\n // throw a TypeError.\n if (x < lowerBound || x > upperBound) {\n throw webidl.errors.exception({\n header: 'Integer conversion',\n message: `Value must be between ${lowerBound}-${upperBound}, got ${x}.`\n })\n }\n\n // 4. Return x.\n return x\n }\n\n // 7. If x is not NaN and the conversion is to an IDL\n // type associated with the [Clamp] extended\n // attribute, then:\n if (!Number.isNaN(x) && opts.clamp === true) {\n // 1. Set x to min(max(x, lowerBound), upperBound).\n x = Math.min(Math.max(x, lowerBound), upperBound)\n\n // 2. Round x to the nearest integer, choosing the\n // even integer if it lies halfway between two,\n // and choosing +0 rather than \u22120.\n if (Math.floor(x) % 2 === 0) {\n x = Math.floor(x)\n } else {\n x = Math.ceil(x)\n }\n\n // 3. Return x.\n return x\n }\n\n // 8. If x is NaN, +0, +\u221E, or \u2212\u221E, then return +0.\n if (\n Number.isNaN(x) ||\n (x === 0 && Object.is(0, x)) ||\n x === Number.POSITIVE_INFINITY ||\n x === Number.NEGATIVE_INFINITY\n ) {\n return 0\n }\n\n // 9. Set x to IntegerPart(x).\n x = webidl.util.IntegerPart(x)\n\n // 10. Set x to x modulo 2^bitLength.\n x = x % Math.pow(2, bitLength)\n\n // 11. If signedness is \"signed\" and x \u2265 2^bitLength \u2212 1,\n // then return x \u2212 2^bitLength.\n if (signedness === 'signed' && x >= Math.pow(2, bitLength) - 1) {\n return x - Math.pow(2, bitLength)\n }\n\n // 12. Otherwise, return x.\n return x\n}\n\n// https://webidl.spec.whatwg.org/#abstract-opdef-integerpart\nwebidl.util.IntegerPart = function (n) {\n // 1. Let r be floor(abs(n)).\n const r = Math.floor(Math.abs(n))\n\n // 2. If n < 0, then return -1 \u00D7 r.\n if (n < 0) {\n return -1 * r\n }\n\n // 3. Otherwise, return r.\n return r\n}\n\n// https://webidl.spec.whatwg.org/#es-sequence\nwebidl.sequenceConverter = function (converter) {\n return (V) => {\n // 1. If Type(V) is not Object, throw a TypeError.\n if (webidl.util.Type(V) !== 'Object') {\n throw webidl.errors.exception({\n header: 'Sequence',\n message: `Value of type ${webidl.util.Type(V)} is not an Object.`\n })\n }\n\n // 2. Let method be ? GetMethod(V, @@iterator).\n /** @type {Generator} */\n const method = V?.[Symbol.iterator]?.()\n const seq = []\n\n // 3. If method is undefined, throw a TypeError.\n if (\n method === undefined ||\n typeof method.next !== 'function'\n ) {\n throw webidl.errors.exception({\n header: 'Sequence',\n message: 'Object is not an iterator.'\n })\n }\n\n // https://webidl.spec.whatwg.org/#create-sequence-from-iterable\n while (true) {\n const { done, value } = method.next()\n\n if (done) {\n break\n }\n\n seq.push(converter(value))\n }\n\n return seq\n }\n}\n\n// https://webidl.spec.whatwg.org/#es-to-record\nwebidl.recordConverter = function (keyConverter, valueConverter) {\n return (O) => {\n // 1. If Type(O) is not Object, throw a TypeError.\n if (webidl.util.Type(O) !== 'Object') {\n throw webidl.errors.exception({\n header: 'Record',\n message: `Value of type ${webidl.util.Type(O)} is not an Object.`\n })\n }\n\n // 2. Let result be a new empty instance of record.\n const result = {}\n\n if (!types.isProxy(O)) {\n // Object.keys only returns enumerable properties\n const keys = Object.keys(O)\n\n for (const key of keys) {\n // 1. Let typedKey be key converted to an IDL value of type K.\n const typedKey = keyConverter(key)\n\n // 2. Let value be ? Get(O, key).\n // 3. Let typedValue be value converted to an IDL value of type V.\n const typedValue = valueConverter(O[key])\n\n // 4. Set result[typedKey] to typedValue.\n result[typedKey] = typedValue\n }\n\n // 5. Return result.\n return result\n }\n\n // 3. Let keys be ? O.[[OwnPropertyKeys]]().\n const keys = Reflect.ownKeys(O)\n\n // 4. For each key of keys.\n for (const key of keys) {\n // 1. Let desc be ? O.[[GetOwnProperty]](key).\n const desc = Reflect.getOwnPropertyDescriptor(O, key)\n\n // 2. If desc is not undefined and desc.[[Enumerable]] is true:\n if (desc?.enumerable) {\n // 1. Let typedKey be key converted to an IDL value of type K.\n const typedKey = keyConverter(key)\n\n // 2. Let value be ? Get(O, key).\n // 3. Let typedValue be value converted to an IDL value of type V.\n const typedValue = valueConverter(O[key])\n\n // 4. Set result[typedKey] to typedValue.\n result[typedKey] = typedValue\n }\n }\n\n // 5. Return result.\n return result\n }\n}\n\nwebidl.interfaceConverter = function (i) {\n return (V, opts = {}) => {\n if (opts.strict !== false && !(V instanceof i)) {\n throw webidl.errors.exception({\n header: i.name,\n message: `Expected ${V} to be an instance of ${i.name}.`\n })\n }\n\n return V\n }\n}\n\nwebidl.dictionaryConverter = function (converters) {\n return (dictionary) => {\n const type = webidl.util.Type(dictionary)\n const dict = {}\n\n if (type === 'Null' || type === 'Undefined') {\n return dict\n } else if (type !== 'Object') {\n throw webidl.errors.exception({\n header: 'Dictionary',\n message: `Expected ${dictionary} to be one of: Null, Undefined, Object.`\n })\n }\n\n for (const options of converters) {\n const { key, defaultValue, required, converter } = options\n\n if (required === true) {\n if (!hasOwn(dictionary, key)) {\n throw webidl.errors.exception({\n header: 'Dictionary',\n message: `Missing required key \"${key}\".`\n })\n }\n }\n\n let value = dictionary[key]\n const hasDefault = hasOwn(options, 'defaultValue')\n\n // Only use defaultValue if value is undefined and\n // a defaultValue options was provided.\n if (hasDefault && value !== null) {\n value = value ?? defaultValue\n }\n\n // A key can be optional and have no default value.\n // When this happens, do not perform a conversion,\n // and do not assign the key a value.\n if (required || hasDefault || value !== undefined) {\n value = converter(value)\n\n if (\n options.allowedValues &&\n !options.allowedValues.includes(value)\n ) {\n throw webidl.errors.exception({\n header: 'Dictionary',\n message: `${value} is not an accepted type. Expected one of ${options.allowedValues.join(', ')}.`\n })\n }\n\n dict[key] = value\n }\n }\n\n return dict\n }\n}\n\nwebidl.nullableConverter = function (converter) {\n return (V) => {\n if (V === null) {\n return V\n }\n\n return converter(V)\n }\n}\n\n// https://webidl.spec.whatwg.org/#es-DOMString\nwebidl.converters.DOMString = function (V, opts = {}) {\n // 1. If V is null and the conversion is to an IDL type\n // associated with the [LegacyNullToEmptyString]\n // extended attribute, then return the DOMString value\n // that represents the empty string.\n if (V === null && opts.legacyNullToEmptyString) {\n return ''\n }\n\n // 2. Let x be ? ToString(V).\n if (typeof V === 'symbol') {\n throw new TypeError('Could not convert argument of type symbol to string.')\n }\n\n // 3. Return the IDL DOMString value that represents the\n // same sequence of code units as the one the\n // ECMAScript String value x represents.\n return String(V)\n}\n\n// https://webidl.spec.whatwg.org/#es-ByteString\nwebidl.converters.ByteString = function (V) {\n // 1. Let x be ? ToString(V).\n // Note: DOMString converter perform ? ToString(V)\n const x = webidl.converters.DOMString(V)\n\n // 2. If the value of any element of x is greater than\n // 255, then throw a TypeError.\n for (let index = 0; index < x.length; index++) {\n if (x.charCodeAt(index) > 255) {\n throw new TypeError(\n 'Cannot convert argument to a ByteString because the character at ' +\n `index ${index} has a value of ${x.charCodeAt(index)} which is greater than 255.`\n )\n }\n }\n\n // 3. Return an IDL ByteString value whose length is the\n // length of x, and where the value of each element is\n // the value of the corresponding element of x.\n return x\n}\n\n// https://webidl.spec.whatwg.org/#es-USVString\nwebidl.converters.USVString = toUSVString\n\n// https://webidl.spec.whatwg.org/#es-boolean\nwebidl.converters.boolean = function (V) {\n // 1. Let x be the result of computing ToBoolean(V).\n const x = Boolean(V)\n\n // 2. Return the IDL boolean value that is the one that represents\n // the same truth value as the ECMAScript Boolean value x.\n return x\n}\n\n// https://webidl.spec.whatwg.org/#es-any\nwebidl.converters.any = function (V) {\n return V\n}\n\n// https://webidl.spec.whatwg.org/#es-long-long\nwebidl.converters['long long'] = function (V) {\n // 1. Let x be ? ConvertToInt(V, 64, \"signed\").\n const x = webidl.util.ConvertToInt(V, 64, 'signed')\n\n // 2. Return the IDL long long value that represents\n // the same numeric value as x.\n return x\n}\n\n// https://webidl.spec.whatwg.org/#es-unsigned-long-long\nwebidl.converters['unsigned long long'] = function (V) {\n // 1. Let x be ? ConvertToInt(V, 64, \"unsigned\").\n const x = webidl.util.ConvertToInt(V, 64, 'unsigned')\n\n // 2. Return the IDL unsigned long long value that\n // represents the same numeric value as x.\n return x\n}\n\n// https://webidl.spec.whatwg.org/#es-unsigned-long\nwebidl.converters['unsigned long'] = function (V) {\n // 1. Let x be ? ConvertToInt(V, 32, \"unsigned\").\n const x = webidl.util.ConvertToInt(V, 32, 'unsigned')\n\n // 2. Return the IDL unsigned long value that\n // represents the same numeric value as x.\n return x\n}\n\n// https://webidl.spec.whatwg.org/#es-unsigned-short\nwebidl.converters['unsigned short'] = function (V, opts) {\n // 1. Let x be ? ConvertToInt(V, 16, \"unsigned\").\n const x = webidl.util.ConvertToInt(V, 16, 'unsigned', opts)\n\n // 2. Return the IDL unsigned short value that represents\n // the same numeric value as x.\n return x\n}\n\n// https://webidl.spec.whatwg.org/#idl-ArrayBuffer\nwebidl.converters.ArrayBuffer = function (V, opts = {}) {\n // 1. If Type(V) is not Object, or V does not have an\n // [[ArrayBufferData]] internal slot, then throw a\n // TypeError.\n // see: https://tc39.es/ecma262/#sec-properties-of-the-arraybuffer-instances\n // see: https://tc39.es/ecma262/#sec-properties-of-the-sharedarraybuffer-instances\n if (\n webidl.util.Type(V) !== 'Object' ||\n !types.isAnyArrayBuffer(V)\n ) {\n throw webidl.errors.conversionFailed({\n prefix: `${V}`,\n argument: `${V}`,\n types: ['ArrayBuffer']\n })\n }\n\n // 2. If the conversion is not to an IDL type associated\n // with the [AllowShared] extended attribute, and\n // IsSharedArrayBuffer(V) is true, then throw a\n // TypeError.\n if (opts.allowShared === false && types.isSharedArrayBuffer(V)) {\n throw webidl.errors.exception({\n header: 'ArrayBuffer',\n message: 'SharedArrayBuffer is not allowed.'\n })\n }\n\n // 3. If the conversion is not to an IDL type associated\n // with the [AllowResizable] extended attribute, and\n // IsResizableArrayBuffer(V) is true, then throw a\n // TypeError.\n // Note: resizable ArrayBuffers are currently a proposal.\n\n // 4. Return the IDL ArrayBuffer value that is a\n // reference to the same object as V.\n return V\n}\n\nwebidl.converters.TypedArray = function (V, T, opts = {}) {\n // 1. Let T be the IDL type V is being converted to.\n\n // 2. If Type(V) is not Object, or V does not have a\n // [[TypedArrayName]] internal slot with a value\n // equal to T\u2019s name, then throw a TypeError.\n if (\n webidl.util.Type(V) !== 'Object' ||\n !types.isTypedArray(V) ||\n V.constructor.name !== T.name\n ) {\n throw webidl.errors.conversionFailed({\n prefix: `${T.name}`,\n argument: `${V}`,\n types: [T.name]\n })\n }\n\n // 3. If the conversion is not to an IDL type associated\n // with the [AllowShared] extended attribute, and\n // IsSharedArrayBuffer(V.[[ViewedArrayBuffer]]) is\n // true, then throw a TypeError.\n if (opts.allowShared === false && types.isSharedArrayBuffer(V.buffer)) {\n throw webidl.errors.exception({\n header: 'ArrayBuffer',\n message: 'SharedArrayBuffer is not allowed.'\n })\n }\n\n // 4. If the conversion is not to an IDL type associated\n // with the [AllowResizable] extended attribute, and\n // IsResizableArrayBuffer(V.[[ViewedArrayBuffer]]) is\n // true, then throw a TypeError.\n // Note: resizable array buffers are currently a proposal\n\n // 5. Return the IDL value of type T that is a reference\n // to the same object as V.\n return V\n}\n\nwebidl.converters.DataView = function (V, opts = {}) {\n // 1. If Type(V) is not Object, or V does not have a\n // [[DataView]] internal slot, then throw a TypeError.\n if (webidl.util.Type(V) !== 'Object' || !types.isDataView(V)) {\n throw webidl.errors.exception({\n header: 'DataView',\n message: 'Object is not a DataView.'\n })\n }\n\n // 2. If the conversion is not to an IDL type associated\n // with the [AllowShared] extended attribute, and\n // IsSharedArrayBuffer(V.[[ViewedArrayBuffer]]) is true,\n // then throw a TypeError.\n if (opts.allowShared === false && types.isSharedArrayBuffer(V.buffer)) {\n throw webidl.errors.exception({\n header: 'ArrayBuffer',\n message: 'SharedArrayBuffer is not allowed.'\n })\n }\n\n // 3. If the conversion is not to an IDL type associated\n // with the [AllowResizable] extended attribute, and\n // IsResizableArrayBuffer(V.[[ViewedArrayBuffer]]) is\n // true, then throw a TypeError.\n // Note: resizable ArrayBuffers are currently a proposal\n\n // 4. Return the IDL DataView value that is a reference\n // to the same object as V.\n return V\n}\n\n// https://webidl.spec.whatwg.org/#BufferSource\nwebidl.converters.BufferSource = function (V, opts = {}) {\n if (types.isAnyArrayBuffer(V)) {\n return webidl.converters.ArrayBuffer(V, opts)\n }\n\n if (types.isTypedArray(V)) {\n return webidl.converters.TypedArray(V, V.constructor)\n }\n\n if (types.isDataView(V)) {\n return webidl.converters.DataView(V, opts)\n }\n\n throw new TypeError(`Could not convert ${V} to a BufferSource.`)\n}\n\nwebidl.converters['sequence'] = webidl.sequenceConverter(\n webidl.converters.ByteString\n)\n\nwebidl.converters['sequence>'] = webidl.sequenceConverter(\n webidl.converters['sequence']\n)\n\nwebidl.converters['record'] = webidl.recordConverter(\n webidl.converters.ByteString,\n webidl.converters.ByteString\n)\n\nmodule.exports = {\n webidl\n}\n", "const assert = require('assert')\nconst { atob } = require('buffer')\nconst { isomorphicDecode } = require('./util')\n\nconst encoder = new TextEncoder()\n\n/**\n * @see https://mimesniff.spec.whatwg.org/#http-token-code-point\n */\nconst HTTP_TOKEN_CODEPOINTS = /^[!#$%&'*+-.^_|~A-Za-z0-9]+$/\nconst HTTP_WHITESPACE_REGEX = /(\\u000A|\\u000D|\\u0009|\\u0020)/ // eslint-disable-line\n/**\n * @see https://mimesniff.spec.whatwg.org/#http-quoted-string-token-code-point\n */\nconst HTTP_QUOTED_STRING_TOKENS = /[\\u0009|\\u0020-\\u007E|\\u0080-\\u00FF]/ // eslint-disable-line\n\n// https://fetch.spec.whatwg.org/#data-url-processor\n/** @param {URL} dataURL */\nfunction dataURLProcessor (dataURL) {\n // 1. Assert: dataURL\u2019s scheme is \"data\".\n assert(dataURL.protocol === 'data:')\n\n // 2. Let input be the result of running the URL\n // serializer on dataURL with exclude fragment\n // set to true.\n let input = URLSerializer(dataURL, true)\n\n // 3. Remove the leading \"data:\" string from input.\n input = input.slice(5)\n\n // 4. Let position point at the start of input.\n const position = { position: 0 }\n\n // 5. Let mimeType be the result of collecting a\n // sequence of code points that are not equal\n // to U+002C (,), given position.\n let mimeType = collectASequenceOfCodePointsFast(\n ',',\n input,\n position\n )\n\n // 6. Strip leading and trailing ASCII whitespace\n // from mimeType.\n // Undici implementation note: we need to store the\n // length because if the mimetype has spaces removed,\n // the wrong amount will be sliced from the input in\n // step #9\n const mimeTypeLength = mimeType.length\n mimeType = removeASCIIWhitespace(mimeType, true, true)\n\n // 7. If position is past the end of input, then\n // return failure\n if (position.position >= input.length) {\n return 'failure'\n }\n\n // 8. Advance position by 1.\n position.position++\n\n // 9. Let encodedBody be the remainder of input.\n const encodedBody = input.slice(mimeTypeLength + 1)\n\n // 10. Let body be the percent-decoding of encodedBody.\n let body = stringPercentDecode(encodedBody)\n\n // 11. If mimeType ends with U+003B (;), followed by\n // zero or more U+0020 SPACE, followed by an ASCII\n // case-insensitive match for \"base64\", then:\n if (/;(\\u0020){0,}base64$/i.test(mimeType)) {\n // 1. Let stringBody be the isomorphic decode of body.\n const stringBody = isomorphicDecode(body)\n\n // 2. Set body to the forgiving-base64 decode of\n // stringBody.\n body = forgivingBase64(stringBody)\n\n // 3. If body is failure, then return failure.\n if (body === 'failure') {\n return 'failure'\n }\n\n // 4. Remove the last 6 code points from mimeType.\n mimeType = mimeType.slice(0, -6)\n\n // 5. Remove trailing U+0020 SPACE code points from mimeType,\n // if any.\n mimeType = mimeType.replace(/(\\u0020)+$/, '')\n\n // 6. Remove the last U+003B (;) code point from mimeType.\n mimeType = mimeType.slice(0, -1)\n }\n\n // 12. If mimeType starts with U+003B (;), then prepend\n // \"text/plain\" to mimeType.\n if (mimeType.startsWith(';')) {\n mimeType = 'text/plain' + mimeType\n }\n\n // 13. Let mimeTypeRecord be the result of parsing\n // mimeType.\n let mimeTypeRecord = parseMIMEType(mimeType)\n\n // 14. If mimeTypeRecord is failure, then set\n // mimeTypeRecord to text/plain;charset=US-ASCII.\n if (mimeTypeRecord === 'failure') {\n mimeTypeRecord = parseMIMEType('text/plain;charset=US-ASCII')\n }\n\n // 15. Return a new data: URL struct whose MIME\n // type is mimeTypeRecord and body is body.\n // https://fetch.spec.whatwg.org/#data-url-struct\n return { mimeType: mimeTypeRecord, body }\n}\n\n// https://url.spec.whatwg.org/#concept-url-serializer\n/**\n * @param {URL} url\n * @param {boolean} excludeFragment\n */\nfunction URLSerializer (url, excludeFragment = false) {\n if (!excludeFragment) {\n return url.href\n }\n\n const href = url.href\n const hashLength = url.hash.length\n\n return hashLength === 0 ? href : href.substring(0, href.length - hashLength)\n}\n\n// https://infra.spec.whatwg.org/#collect-a-sequence-of-code-points\n/**\n * @param {(char: string) => boolean} condition\n * @param {string} input\n * @param {{ position: number }} position\n */\nfunction collectASequenceOfCodePoints (condition, input, position) {\n // 1. Let result be the empty string.\n let result = ''\n\n // 2. While position doesn\u2019t point past the end of input and the\n // code point at position within input meets the condition condition:\n while (position.position < input.length && condition(input[position.position])) {\n // 1. Append that code point to the end of result.\n result += input[position.position]\n\n // 2. Advance position by 1.\n position.position++\n }\n\n // 3. Return result.\n return result\n}\n\n/**\n * A faster collectASequenceOfCodePoints that only works when comparing a single character.\n * @param {string} char\n * @param {string} input\n * @param {{ position: number }} position\n */\nfunction collectASequenceOfCodePointsFast (char, input, position) {\n const idx = input.indexOf(char, position.position)\n const start = position.position\n\n if (idx === -1) {\n position.position = input.length\n return input.slice(start)\n }\n\n position.position = idx\n return input.slice(start, position.position)\n}\n\n// https://url.spec.whatwg.org/#string-percent-decode\n/** @param {string} input */\nfunction stringPercentDecode (input) {\n // 1. Let bytes be the UTF-8 encoding of input.\n const bytes = encoder.encode(input)\n\n // 2. Return the percent-decoding of bytes.\n return percentDecode(bytes)\n}\n\n// https://url.spec.whatwg.org/#percent-decode\n/** @param {Uint8Array} input */\nfunction percentDecode (input) {\n // 1. Let output be an empty byte sequence.\n /** @type {number[]} */\n const output = []\n\n // 2. For each byte byte in input:\n for (let i = 0; i < input.length; i++) {\n const byte = input[i]\n\n // 1. If byte is not 0x25 (%), then append byte to output.\n if (byte !== 0x25) {\n output.push(byte)\n\n // 2. Otherwise, if byte is 0x25 (%) and the next two bytes\n // after byte in input are not in the ranges\n // 0x30 (0) to 0x39 (9), 0x41 (A) to 0x46 (F),\n // and 0x61 (a) to 0x66 (f), all inclusive, append byte\n // to output.\n } else if (\n byte === 0x25 &&\n !/^[0-9A-Fa-f]{2}$/i.test(String.fromCharCode(input[i + 1], input[i + 2]))\n ) {\n output.push(0x25)\n\n // 3. Otherwise:\n } else {\n // 1. Let bytePoint be the two bytes after byte in input,\n // decoded, and then interpreted as hexadecimal number.\n const nextTwoBytes = String.fromCharCode(input[i + 1], input[i + 2])\n const bytePoint = Number.parseInt(nextTwoBytes, 16)\n\n // 2. Append a byte whose value is bytePoint to output.\n output.push(bytePoint)\n\n // 3. Skip the next two bytes in input.\n i += 2\n }\n }\n\n // 3. Return output.\n return Uint8Array.from(output)\n}\n\n// https://mimesniff.spec.whatwg.org/#parse-a-mime-type\n/** @param {string} input */\nfunction parseMIMEType (input) {\n // 1. Remove any leading and trailing HTTP whitespace\n // from input.\n input = removeHTTPWhitespace(input, true, true)\n\n // 2. Let position be a position variable for input,\n // initially pointing at the start of input.\n const position = { position: 0 }\n\n // 3. Let type be the result of collecting a sequence\n // of code points that are not U+002F (/) from\n // input, given position.\n const type = collectASequenceOfCodePointsFast(\n '/',\n input,\n position\n )\n\n // 4. If type is the empty string or does not solely\n // contain HTTP token code points, then return failure.\n // https://mimesniff.spec.whatwg.org/#http-token-code-point\n if (type.length === 0 || !HTTP_TOKEN_CODEPOINTS.test(type)) {\n return 'failure'\n }\n\n // 5. If position is past the end of input, then return\n // failure\n if (position.position > input.length) {\n return 'failure'\n }\n\n // 6. Advance position by 1. (This skips past U+002F (/).)\n position.position++\n\n // 7. Let subtype be the result of collecting a sequence of\n // code points that are not U+003B (;) from input, given\n // position.\n let subtype = collectASequenceOfCodePointsFast(\n ';',\n input,\n position\n )\n\n // 8. Remove any trailing HTTP whitespace from subtype.\n subtype = removeHTTPWhitespace(subtype, false, true)\n\n // 9. If subtype is the empty string or does not solely\n // contain HTTP token code points, then return failure.\n if (subtype.length === 0 || !HTTP_TOKEN_CODEPOINTS.test(subtype)) {\n return 'failure'\n }\n\n const typeLowercase = type.toLowerCase()\n const subtypeLowercase = subtype.toLowerCase()\n\n // 10. Let mimeType be a new MIME type record whose type\n // is type, in ASCII lowercase, and subtype is subtype,\n // in ASCII lowercase.\n // https://mimesniff.spec.whatwg.org/#mime-type\n const mimeType = {\n type: typeLowercase,\n subtype: subtypeLowercase,\n /** @type {Map} */\n parameters: new Map(),\n // https://mimesniff.spec.whatwg.org/#mime-type-essence\n essence: `${typeLowercase}/${subtypeLowercase}`\n }\n\n // 11. While position is not past the end of input:\n while (position.position < input.length) {\n // 1. Advance position by 1. (This skips past U+003B (;).)\n position.position++\n\n // 2. Collect a sequence of code points that are HTTP\n // whitespace from input given position.\n collectASequenceOfCodePoints(\n // https://fetch.spec.whatwg.org/#http-whitespace\n char => HTTP_WHITESPACE_REGEX.test(char),\n input,\n position\n )\n\n // 3. Let parameterName be the result of collecting a\n // sequence of code points that are not U+003B (;)\n // or U+003D (=) from input, given position.\n let parameterName = collectASequenceOfCodePoints(\n (char) => char !== ';' && char !== '=',\n input,\n position\n )\n\n // 4. Set parameterName to parameterName, in ASCII\n // lowercase.\n parameterName = parameterName.toLowerCase()\n\n // 5. If position is not past the end of input, then:\n if (position.position < input.length) {\n // 1. If the code point at position within input is\n // U+003B (;), then continue.\n if (input[position.position] === ';') {\n continue\n }\n\n // 2. Advance position by 1. (This skips past U+003D (=).)\n position.position++\n }\n\n // 6. If position is past the end of input, then break.\n if (position.position > input.length) {\n break\n }\n\n // 7. Let parameterValue be null.\n let parameterValue = null\n\n // 8. If the code point at position within input is\n // U+0022 (\"), then:\n if (input[position.position] === '\"') {\n // 1. Set parameterValue to the result of collecting\n // an HTTP quoted string from input, given position\n // and the extract-value flag.\n parameterValue = collectAnHTTPQuotedString(input, position, true)\n\n // 2. Collect a sequence of code points that are not\n // U+003B (;) from input, given position.\n collectASequenceOfCodePointsFast(\n ';',\n input,\n position\n )\n\n // 9. Otherwise:\n } else {\n // 1. Set parameterValue to the result of collecting\n // a sequence of code points that are not U+003B (;)\n // from input, given position.\n parameterValue = collectASequenceOfCodePointsFast(\n ';',\n input,\n position\n )\n\n // 2. Remove any trailing HTTP whitespace from parameterValue.\n parameterValue = removeHTTPWhitespace(parameterValue, false, true)\n\n // 3. If parameterValue is the empty string, then continue.\n if (parameterValue.length === 0) {\n continue\n }\n }\n\n // 10. If all of the following are true\n // - parameterName is not the empty string\n // - parameterName solely contains HTTP token code points\n // - parameterValue solely contains HTTP quoted-string token code points\n // - mimeType\u2019s parameters[parameterName] does not exist\n // then set mimeType\u2019s parameters[parameterName] to parameterValue.\n if (\n parameterName.length !== 0 &&\n HTTP_TOKEN_CODEPOINTS.test(parameterName) &&\n (parameterValue.length === 0 || HTTP_QUOTED_STRING_TOKENS.test(parameterValue)) &&\n !mimeType.parameters.has(parameterName)\n ) {\n mimeType.parameters.set(parameterName, parameterValue)\n }\n }\n\n // 12. Return mimeType.\n return mimeType\n}\n\n// https://infra.spec.whatwg.org/#forgiving-base64-decode\n/** @param {string} data */\nfunction forgivingBase64 (data) {\n // 1. Remove all ASCII whitespace from data.\n data = data.replace(/[\\u0009\\u000A\\u000C\\u000D\\u0020]/g, '') // eslint-disable-line\n\n // 2. If data\u2019s code point length divides by 4 leaving\n // no remainder, then:\n if (data.length % 4 === 0) {\n // 1. If data ends with one or two U+003D (=) code points,\n // then remove them from data.\n data = data.replace(/=?=$/, '')\n }\n\n // 3. If data\u2019s code point length divides by 4 leaving\n // a remainder of 1, then return failure.\n if (data.length % 4 === 1) {\n return 'failure'\n }\n\n // 4. If data contains a code point that is not one of\n // U+002B (+)\n // U+002F (/)\n // ASCII alphanumeric\n // then return failure.\n if (/[^+/0-9A-Za-z]/.test(data)) {\n return 'failure'\n }\n\n const binary = atob(data)\n const bytes = new Uint8Array(binary.length)\n\n for (let byte = 0; byte < binary.length; byte++) {\n bytes[byte] = binary.charCodeAt(byte)\n }\n\n return bytes\n}\n\n// https://fetch.spec.whatwg.org/#collect-an-http-quoted-string\n// tests: https://fetch.spec.whatwg.org/#example-http-quoted-string\n/**\n * @param {string} input\n * @param {{ position: number }} position\n * @param {boolean?} extractValue\n */\nfunction collectAnHTTPQuotedString (input, position, extractValue) {\n // 1. Let positionStart be position.\n const positionStart = position.position\n\n // 2. Let value be the empty string.\n let value = ''\n\n // 3. Assert: the code point at position within input\n // is U+0022 (\").\n assert(input[position.position] === '\"')\n\n // 4. Advance position by 1.\n position.position++\n\n // 5. While true:\n while (true) {\n // 1. Append the result of collecting a sequence of code points\n // that are not U+0022 (\") or U+005C (\\) from input, given\n // position, to value.\n value += collectASequenceOfCodePoints(\n (char) => char !== '\"' && char !== '\\\\',\n input,\n position\n )\n\n // 2. If position is past the end of input, then break.\n if (position.position >= input.length) {\n break\n }\n\n // 3. Let quoteOrBackslash be the code point at position within\n // input.\n const quoteOrBackslash = input[position.position]\n\n // 4. Advance position by 1.\n position.position++\n\n // 5. If quoteOrBackslash is U+005C (\\), then:\n if (quoteOrBackslash === '\\\\') {\n // 1. If position is past the end of input, then append\n // U+005C (\\) to value and break.\n if (position.position >= input.length) {\n value += '\\\\'\n break\n }\n\n // 2. Append the code point at position within input to value.\n value += input[position.position]\n\n // 3. Advance position by 1.\n position.position++\n\n // 6. Otherwise:\n } else {\n // 1. Assert: quoteOrBackslash is U+0022 (\").\n assert(quoteOrBackslash === '\"')\n\n // 2. Break.\n break\n }\n }\n\n // 6. If the extract-value flag is set, then return value.\n if (extractValue) {\n return value\n }\n\n // 7. Return the code points from positionStart to position,\n // inclusive, within input.\n return input.slice(positionStart, position.position)\n}\n\n/**\n * @see https://mimesniff.spec.whatwg.org/#serialize-a-mime-type\n */\nfunction serializeAMimeType (mimeType) {\n assert(mimeType !== 'failure')\n const { parameters, essence } = mimeType\n\n // 1. Let serialization be the concatenation of mimeType\u2019s\n // type, U+002F (/), and mimeType\u2019s subtype.\n let serialization = essence\n\n // 2. For each name \u2192 value of mimeType\u2019s parameters:\n for (let [name, value] of parameters.entries()) {\n // 1. Append U+003B (;) to serialization.\n serialization += ';'\n\n // 2. Append name to serialization.\n serialization += name\n\n // 3. Append U+003D (=) to serialization.\n serialization += '='\n\n // 4. If value does not solely contain HTTP token code\n // points or value is the empty string, then:\n if (!HTTP_TOKEN_CODEPOINTS.test(value)) {\n // 1. Precede each occurence of U+0022 (\") or\n // U+005C (\\) in value with U+005C (\\).\n value = value.replace(/(\\\\|\")/g, '\\\\$1')\n\n // 2. Prepend U+0022 (\") to value.\n value = '\"' + value\n\n // 3. Append U+0022 (\") to value.\n value += '\"'\n }\n\n // 5. Append value to serialization.\n serialization += value\n }\n\n // 3. Return serialization.\n return serialization\n}\n\n/**\n * @see https://fetch.spec.whatwg.org/#http-whitespace\n * @param {string} char\n */\nfunction isHTTPWhiteSpace (char) {\n return char === '\\r' || char === '\\n' || char === '\\t' || char === ' '\n}\n\n/**\n * @see https://fetch.spec.whatwg.org/#http-whitespace\n * @param {string} str\n */\nfunction removeHTTPWhitespace (str, leading = true, trailing = true) {\n let lead = 0\n let trail = str.length - 1\n\n if (leading) {\n for (; lead < str.length && isHTTPWhiteSpace(str[lead]); lead++);\n }\n\n if (trailing) {\n for (; trail > 0 && isHTTPWhiteSpace(str[trail]); trail--);\n }\n\n return str.slice(lead, trail + 1)\n}\n\n/**\n * @see https://infra.spec.whatwg.org/#ascii-whitespace\n * @param {string} char\n */\nfunction isASCIIWhitespace (char) {\n return char === '\\r' || char === '\\n' || char === '\\t' || char === '\\f' || char === ' '\n}\n\n/**\n * @see https://infra.spec.whatwg.org/#strip-leading-and-trailing-ascii-whitespace\n */\nfunction removeASCIIWhitespace (str, leading = true, trailing = true) {\n let lead = 0\n let trail = str.length - 1\n\n if (leading) {\n for (; lead < str.length && isASCIIWhitespace(str[lead]); lead++);\n }\n\n if (trailing) {\n for (; trail > 0 && isASCIIWhitespace(str[trail]); trail--);\n }\n\n return str.slice(lead, trail + 1)\n}\n\nmodule.exports = {\n dataURLProcessor,\n URLSerializer,\n collectASequenceOfCodePoints,\n collectASequenceOfCodePointsFast,\n stringPercentDecode,\n parseMIMEType,\n collectAnHTTPQuotedString,\n serializeAMimeType\n}\n", "'use strict'\n\nconst { Blob, File: NativeFile } = require('buffer')\nconst { types } = require('util')\nconst { kState } = require('./symbols')\nconst { isBlobLike } = require('./util')\nconst { webidl } = require('./webidl')\nconst { parseMIMEType, serializeAMimeType } = require('./dataURL')\nconst { kEnumerableProperty } = require('../core/util')\nconst encoder = new TextEncoder()\n\nclass File extends Blob {\n constructor (fileBits, fileName, options = {}) {\n // The File constructor is invoked with two or three parameters, depending\n // on whether the optional dictionary parameter is used. When the File()\n // constructor is invoked, user agents must run the following steps:\n webidl.argumentLengthCheck(arguments, 2, { header: 'File constructor' })\n\n fileBits = webidl.converters['sequence'](fileBits)\n fileName = webidl.converters.USVString(fileName)\n options = webidl.converters.FilePropertyBag(options)\n\n // 1. Let bytes be the result of processing blob parts given fileBits and\n // options.\n // Note: Blob handles this for us\n\n // 2. Let n be the fileName argument to the constructor.\n const n = fileName\n\n // 3. Process FilePropertyBag dictionary argument by running the following\n // substeps:\n\n // 1. If the type member is provided and is not the empty string, let t\n // be set to the type dictionary member. If t contains any characters\n // outside the range U+0020 to U+007E, then set t to the empty string\n // and return from these substeps.\n // 2. Convert every character in t to ASCII lowercase.\n let t = options.type\n let d\n\n // eslint-disable-next-line no-labels\n substep: {\n if (t) {\n t = parseMIMEType(t)\n\n if (t === 'failure') {\n t = ''\n // eslint-disable-next-line no-labels\n break substep\n }\n\n t = serializeAMimeType(t).toLowerCase()\n }\n\n // 3. If the lastModified member is provided, let d be set to the\n // lastModified dictionary member. If it is not provided, set d to the\n // current date and time represented as the number of milliseconds since\n // the Unix Epoch (which is the equivalent of Date.now() [ECMA-262]).\n d = options.lastModified\n }\n\n // 4. Return a new File object F such that:\n // F refers to the bytes byte sequence.\n // F.size is set to the number of total bytes in bytes.\n // F.name is set to n.\n // F.type is set to t.\n // F.lastModified is set to d.\n\n super(processBlobParts(fileBits, options), { type: t })\n this[kState] = {\n name: n,\n lastModified: d,\n type: t\n }\n }\n\n get name () {\n webidl.brandCheck(this, File)\n\n return this[kState].name\n }\n\n get lastModified () {\n webidl.brandCheck(this, File)\n\n return this[kState].lastModified\n }\n\n get type () {\n webidl.brandCheck(this, File)\n\n return this[kState].type\n }\n}\n\nclass FileLike {\n constructor (blobLike, fileName, options = {}) {\n // TODO: argument idl type check\n\n // The File constructor is invoked with two or three parameters, depending\n // on whether the optional dictionary parameter is used. When the File()\n // constructor is invoked, user agents must run the following steps:\n\n // 1. Let bytes be the result of processing blob parts given fileBits and\n // options.\n\n // 2. Let n be the fileName argument to the constructor.\n const n = fileName\n\n // 3. Process FilePropertyBag dictionary argument by running the following\n // substeps:\n\n // 1. If the type member is provided and is not the empty string, let t\n // be set to the type dictionary member. If t contains any characters\n // outside the range U+0020 to U+007E, then set t to the empty string\n // and return from these substeps.\n // TODO\n const t = options.type\n\n // 2. Convert every character in t to ASCII lowercase.\n // TODO\n\n // 3. If the lastModified member is provided, let d be set to the\n // lastModified dictionary member. If it is not provided, set d to the\n // current date and time represented as the number of milliseconds since\n // the Unix Epoch (which is the equivalent of Date.now() [ECMA-262]).\n const d = options.lastModified ?? Date.now()\n\n // 4. Return a new File object F such that:\n // F refers to the bytes byte sequence.\n // F.size is set to the number of total bytes in bytes.\n // F.name is set to n.\n // F.type is set to t.\n // F.lastModified is set to d.\n\n this[kState] = {\n blobLike,\n name: n,\n type: t,\n lastModified: d\n }\n }\n\n stream (...args) {\n webidl.brandCheck(this, FileLike)\n\n return this[kState].blobLike.stream(...args)\n }\n\n arrayBuffer (...args) {\n webidl.brandCheck(this, FileLike)\n\n return this[kState].blobLike.arrayBuffer(...args)\n }\n\n slice (...args) {\n webidl.brandCheck(this, FileLike)\n\n return this[kState].blobLike.slice(...args)\n }\n\n text (...args) {\n webidl.brandCheck(this, FileLike)\n\n return this[kState].blobLike.text(...args)\n }\n\n get size () {\n webidl.brandCheck(this, FileLike)\n\n return this[kState].blobLike.size\n }\n\n get type () {\n webidl.brandCheck(this, FileLike)\n\n return this[kState].blobLike.type\n }\n\n get name () {\n webidl.brandCheck(this, FileLike)\n\n return this[kState].name\n }\n\n get lastModified () {\n webidl.brandCheck(this, FileLike)\n\n return this[kState].lastModified\n }\n\n get [Symbol.toStringTag] () {\n return 'File'\n }\n}\n\nObject.defineProperties(File.prototype, {\n [Symbol.toStringTag]: {\n value: 'File',\n configurable: true\n },\n name: kEnumerableProperty,\n lastModified: kEnumerableProperty\n})\n\nwebidl.converters.Blob = webidl.interfaceConverter(Blob)\n\nwebidl.converters.BlobPart = function (V, opts) {\n if (webidl.util.Type(V) === 'Object') {\n if (isBlobLike(V)) {\n return webidl.converters.Blob(V, { strict: false })\n }\n\n if (\n ArrayBuffer.isView(V) ||\n types.isAnyArrayBuffer(V)\n ) {\n return webidl.converters.BufferSource(V, opts)\n }\n }\n\n return webidl.converters.USVString(V, opts)\n}\n\nwebidl.converters['sequence'] = webidl.sequenceConverter(\n webidl.converters.BlobPart\n)\n\n// https://www.w3.org/TR/FileAPI/#dfn-FilePropertyBag\nwebidl.converters.FilePropertyBag = webidl.dictionaryConverter([\n {\n key: 'lastModified',\n converter: webidl.converters['long long'],\n get defaultValue () {\n return Date.now()\n }\n },\n {\n key: 'type',\n converter: webidl.converters.DOMString,\n defaultValue: ''\n },\n {\n key: 'endings',\n converter: (value) => {\n value = webidl.converters.DOMString(value)\n value = value.toLowerCase()\n\n if (value !== 'native') {\n value = 'transparent'\n }\n\n return value\n },\n defaultValue: 'transparent'\n }\n])\n\n/**\n * @see https://www.w3.org/TR/FileAPI/#process-blob-parts\n * @param {(NodeJS.TypedArray|Blob|string)[]} parts\n * @param {{ type: string, endings: string }} options\n */\nfunction processBlobParts (parts, options) {\n // 1. Let bytes be an empty sequence of bytes.\n /** @type {NodeJS.TypedArray[]} */\n const bytes = []\n\n // 2. For each element in parts:\n for (const element of parts) {\n // 1. If element is a USVString, run the following substeps:\n if (typeof element === 'string') {\n // 1. Let s be element.\n let s = element\n\n // 2. If the endings member of options is \"native\", set s\n // to the result of converting line endings to native\n // of element.\n if (options.endings === 'native') {\n s = convertLineEndingsNative(s)\n }\n\n // 3. Append the result of UTF-8 encoding s to bytes.\n bytes.push(encoder.encode(s))\n } else if (\n types.isAnyArrayBuffer(element) ||\n types.isTypedArray(element)\n ) {\n // 2. If element is a BufferSource, get a copy of the\n // bytes held by the buffer source, and append those\n // bytes to bytes.\n if (!element.buffer) { // ArrayBuffer\n bytes.push(new Uint8Array(element))\n } else {\n bytes.push(\n new Uint8Array(element.buffer, element.byteOffset, element.byteLength)\n )\n }\n } else if (isBlobLike(element)) {\n // 3. If element is a Blob, append the bytes it represents\n // to bytes.\n bytes.push(element)\n }\n }\n\n // 3. Return bytes.\n return bytes\n}\n\n/**\n * @see https://www.w3.org/TR/FileAPI/#convert-line-endings-to-native\n * @param {string} s\n */\nfunction convertLineEndingsNative (s) {\n // 1. Let native line ending be be the code point U+000A LF.\n let nativeLineEnding = '\\n'\n\n // 2. If the underlying platform\u2019s conventions are to\n // represent newlines as a carriage return and line feed\n // sequence, set native line ending to the code point\n // U+000D CR followed by the code point U+000A LF.\n if (process.platform === 'win32') {\n nativeLineEnding = '\\r\\n'\n }\n\n return s.replace(/\\r?\\n/g, nativeLineEnding)\n}\n\n// If this function is moved to ./util.js, some tools (such as\n// rollup) will warn about circular dependencies. See:\n// https://github.com/nodejs/undici/issues/1629\nfunction isFileLike (object) {\n return (\n (NativeFile && object instanceof NativeFile) ||\n object instanceof File || (\n object &&\n (typeof object.stream === 'function' ||\n typeof object.arrayBuffer === 'function') &&\n object[Symbol.toStringTag] === 'File'\n )\n )\n}\n\nmodule.exports = { File, FileLike, isFileLike }\n", "'use strict'\n\nconst { isBlobLike, toUSVString, makeIterator } = require('./util')\nconst { kState } = require('./symbols')\nconst { File: UndiciFile, FileLike, isFileLike } = require('./file')\nconst { webidl } = require('./webidl')\nconst { Blob, File: NativeFile } = require('buffer')\n\n/** @type {globalThis['File']} */\nconst File = NativeFile ?? UndiciFile\n\n// https://xhr.spec.whatwg.org/#formdata\nclass FormData {\n constructor (form) {\n if (form !== undefined) {\n throw webidl.errors.conversionFailed({\n prefix: 'FormData constructor',\n argument: 'Argument 1',\n types: ['undefined']\n })\n }\n\n this[kState] = []\n }\n\n append (name, value, filename = undefined) {\n webidl.brandCheck(this, FormData)\n\n webidl.argumentLengthCheck(arguments, 2, { header: 'FormData.append' })\n\n if (arguments.length === 3 && !isBlobLike(value)) {\n throw new TypeError(\n \"Failed to execute 'append' on 'FormData': parameter 2 is not of type 'Blob'\"\n )\n }\n\n // 1. Let value be value if given; otherwise blobValue.\n\n name = webidl.converters.USVString(name)\n value = isBlobLike(value)\n ? webidl.converters.Blob(value, { strict: false })\n : webidl.converters.USVString(value)\n filename = arguments.length === 3\n ? webidl.converters.USVString(filename)\n : undefined\n\n // 2. Let entry be the result of creating an entry with\n // name, value, and filename if given.\n const entry = makeEntry(name, value, filename)\n\n // 3. Append entry to this\u2019s entry list.\n this[kState].push(entry)\n }\n\n delete (name) {\n webidl.brandCheck(this, FormData)\n\n webidl.argumentLengthCheck(arguments, 1, { header: 'FormData.delete' })\n\n name = webidl.converters.USVString(name)\n\n // The delete(name) method steps are to remove all entries whose name\n // is name from this\u2019s entry list.\n this[kState] = this[kState].filter(entry => entry.name !== name)\n }\n\n get (name) {\n webidl.brandCheck(this, FormData)\n\n webidl.argumentLengthCheck(arguments, 1, { header: 'FormData.get' })\n\n name = webidl.converters.USVString(name)\n\n // 1. If there is no entry whose name is name in this\u2019s entry list,\n // then return null.\n const idx = this[kState].findIndex((entry) => entry.name === name)\n if (idx === -1) {\n return null\n }\n\n // 2. Return the value of the first entry whose name is name from\n // this\u2019s entry list.\n return this[kState][idx].value\n }\n\n getAll (name) {\n webidl.brandCheck(this, FormData)\n\n webidl.argumentLengthCheck(arguments, 1, { header: 'FormData.getAll' })\n\n name = webidl.converters.USVString(name)\n\n // 1. If there is no entry whose name is name in this\u2019s entry list,\n // then return the empty list.\n // 2. Return the values of all entries whose name is name, in order,\n // from this\u2019s entry list.\n return this[kState]\n .filter((entry) => entry.name === name)\n .map((entry) => entry.value)\n }\n\n has (name) {\n webidl.brandCheck(this, FormData)\n\n webidl.argumentLengthCheck(arguments, 1, { header: 'FormData.has' })\n\n name = webidl.converters.USVString(name)\n\n // The has(name) method steps are to return true if there is an entry\n // whose name is name in this\u2019s entry list; otherwise false.\n return this[kState].findIndex((entry) => entry.name === name) !== -1\n }\n\n set (name, value, filename = undefined) {\n webidl.brandCheck(this, FormData)\n\n webidl.argumentLengthCheck(arguments, 2, { header: 'FormData.set' })\n\n if (arguments.length === 3 && !isBlobLike(value)) {\n throw new TypeError(\n \"Failed to execute 'set' on 'FormData': parameter 2 is not of type 'Blob'\"\n )\n }\n\n // The set(name, value) and set(name, blobValue, filename) method steps\n // are:\n\n // 1. Let value be value if given; otherwise blobValue.\n\n name = webidl.converters.USVString(name)\n value = isBlobLike(value)\n ? webidl.converters.Blob(value, { strict: false })\n : webidl.converters.USVString(value)\n filename = arguments.length === 3\n ? toUSVString(filename)\n : undefined\n\n // 2. Let entry be the result of creating an entry with name, value, and\n // filename if given.\n const entry = makeEntry(name, value, filename)\n\n // 3. If there are entries in this\u2019s entry list whose name is name, then\n // replace the first such entry with entry and remove the others.\n const idx = this[kState].findIndex((entry) => entry.name === name)\n if (idx !== -1) {\n this[kState] = [\n ...this[kState].slice(0, idx),\n entry,\n ...this[kState].slice(idx + 1).filter((entry) => entry.name !== name)\n ]\n } else {\n // 4. Otherwise, append entry to this\u2019s entry list.\n this[kState].push(entry)\n }\n }\n\n entries () {\n webidl.brandCheck(this, FormData)\n\n return makeIterator(\n () => this[kState].map(pair => [pair.name, pair.value]),\n 'FormData',\n 'key+value'\n )\n }\n\n keys () {\n webidl.brandCheck(this, FormData)\n\n return makeIterator(\n () => this[kState].map(pair => [pair.name, pair.value]),\n 'FormData',\n 'key'\n )\n }\n\n values () {\n webidl.brandCheck(this, FormData)\n\n return makeIterator(\n () => this[kState].map(pair => [pair.name, pair.value]),\n 'FormData',\n 'value'\n )\n }\n\n /**\n * @param {(value: string, key: string, self: FormData) => void} callbackFn\n * @param {unknown} thisArg\n */\n forEach (callbackFn, thisArg = globalThis) {\n webidl.brandCheck(this, FormData)\n\n webidl.argumentLengthCheck(arguments, 1, { header: 'FormData.forEach' })\n\n if (typeof callbackFn !== 'function') {\n throw new TypeError(\n \"Failed to execute 'forEach' on 'FormData': parameter 1 is not of type 'Function'.\"\n )\n }\n\n for (const [key, value] of this) {\n callbackFn.apply(thisArg, [value, key, this])\n }\n }\n}\n\nFormData.prototype[Symbol.iterator] = FormData.prototype.entries\n\nObject.defineProperties(FormData.prototype, {\n [Symbol.toStringTag]: {\n value: 'FormData',\n configurable: true\n }\n})\n\n/**\n * @see https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#create-an-entry\n * @param {string} name\n * @param {string|Blob} value\n * @param {?string} filename\n * @returns\n */\nfunction makeEntry (name, value, filename) {\n // 1. Set name to the result of converting name into a scalar value string.\n // \"To convert a string into a scalar value string, replace any surrogates\n // with U+FFFD.\"\n // see: https://nodejs.org/dist/latest-v18.x/docs/api/buffer.html#buftostringencoding-start-end\n name = Buffer.from(name).toString('utf8')\n\n // 2. If value is a string, then set value to the result of converting\n // value into a scalar value string.\n if (typeof value === 'string') {\n value = Buffer.from(value).toString('utf8')\n } else {\n // 3. Otherwise:\n\n // 1. If value is not a File object, then set value to a new File object,\n // representing the same bytes, whose name attribute value is \"blob\"\n if (!isFileLike(value)) {\n value = value instanceof Blob\n ? new File([value], 'blob', { type: value.type })\n : new FileLike(value, 'blob', { type: value.type })\n }\n\n // 2. If filename is given, then set value to a new File object,\n // representing the same bytes, whose name attribute is filename.\n if (filename !== undefined) {\n /** @type {FilePropertyBag} */\n const options = {\n type: value.type,\n lastModified: value.lastModified\n }\n\n value = (NativeFile && value instanceof NativeFile) || value instanceof UndiciFile\n ? new File([value], filename, options)\n : new FileLike(value, filename, options)\n }\n }\n\n // 4. Return an entry whose name is name and whose value is value.\n return { name, value }\n}\n\nmodule.exports = { FormData }\n", "'use strict'\n\nconst Busboy = require('@fastify/busboy')\nconst util = require('../core/util')\nconst {\n ReadableStreamFrom,\n isBlobLike,\n isReadableStreamLike,\n readableStreamClose,\n createDeferredPromise,\n fullyReadBody\n} = require('./util')\nconst { FormData } = require('./formdata')\nconst { kState } = require('./symbols')\nconst { webidl } = require('./webidl')\nconst { DOMException, structuredClone } = require('./constants')\nconst { Blob, File: NativeFile } = require('buffer')\nconst { kBodyUsed } = require('../core/symbols')\nconst assert = require('assert')\nconst { isErrored } = require('../core/util')\nconst { isUint8Array, isArrayBuffer } = require('util/types')\nconst { File: UndiciFile } = require('./file')\nconst { parseMIMEType, serializeAMimeType } = require('./dataURL')\n\nlet random\ntry {\n const crypto = require('node:crypto')\n random = (max) => crypto.randomInt(0, max)\n} catch {\n random = (max) => Math.floor(Math.random(max))\n}\n\nlet ReadableStream = globalThis.ReadableStream\n\n/** @type {globalThis['File']} */\nconst File = NativeFile ?? UndiciFile\nconst textEncoder = new TextEncoder()\nconst textDecoder = new TextDecoder()\n\n// https://fetch.spec.whatwg.org/#concept-bodyinit-extract\nfunction extractBody (object, keepalive = false) {\n if (!ReadableStream) {\n ReadableStream = require('stream/web').ReadableStream\n }\n\n // 1. Let stream be null.\n let stream = null\n\n // 2. If object is a ReadableStream object, then set stream to object.\n if (object instanceof ReadableStream) {\n stream = object\n } else if (isBlobLike(object)) {\n // 3. Otherwise, if object is a Blob object, set stream to the\n // result of running object\u2019s get stream.\n stream = object.stream()\n } else {\n // 4. Otherwise, set stream to a new ReadableStream object, and set\n // up stream.\n stream = new ReadableStream({\n async pull (controller) {\n controller.enqueue(\n typeof source === 'string' ? textEncoder.encode(source) : source\n )\n queueMicrotask(() => readableStreamClose(controller))\n },\n start () {},\n type: undefined\n })\n }\n\n // 5. Assert: stream is a ReadableStream object.\n assert(isReadableStreamLike(stream))\n\n // 6. Let action be null.\n let action = null\n\n // 7. Let source be null.\n let source = null\n\n // 8. Let length be null.\n let length = null\n\n // 9. Let type be null.\n let type = null\n\n // 10. Switch on object:\n if (typeof object === 'string') {\n // Set source to the UTF-8 encoding of object.\n // Note: setting source to a Uint8Array here breaks some mocking assumptions.\n source = object\n\n // Set type to `text/plain;charset=UTF-8`.\n type = 'text/plain;charset=UTF-8'\n } else if (object instanceof URLSearchParams) {\n // URLSearchParams\n\n // spec says to run application/x-www-form-urlencoded on body.list\n // this is implemented in Node.js as apart of an URLSearchParams instance toString method\n // See: https://github.com/nodejs/node/blob/e46c680bf2b211bbd52cf959ca17ee98c7f657f5/lib/internal/url.js#L490\n // and https://github.com/nodejs/node/blob/e46c680bf2b211bbd52cf959ca17ee98c7f657f5/lib/internal/url.js#L1100\n\n // Set source to the result of running the application/x-www-form-urlencoded serializer with object\u2019s list.\n source = object.toString()\n\n // Set type to `application/x-www-form-urlencoded;charset=UTF-8`.\n type = 'application/x-www-form-urlencoded;charset=UTF-8'\n } else if (isArrayBuffer(object)) {\n // BufferSource/ArrayBuffer\n\n // Set source to a copy of the bytes held by object.\n source = new Uint8Array(object.slice())\n } else if (ArrayBuffer.isView(object)) {\n // BufferSource/ArrayBufferView\n\n // Set source to a copy of the bytes held by object.\n source = new Uint8Array(object.buffer.slice(object.byteOffset, object.byteOffset + object.byteLength))\n } else if (util.isFormDataLike(object)) {\n const boundary = `----formdata-undici-0${`${random(1e11)}`.padStart(11, '0')}`\n const prefix = `--${boundary}\\r\\nContent-Disposition: form-data`\n\n /*! formdata-polyfill. MIT License. Jimmy W\u00E4rting */\n const escape = (str) =>\n str.replace(/\\n/g, '%0A').replace(/\\r/g, '%0D').replace(/\"/g, '%22')\n const normalizeLinefeeds = (value) => value.replace(/\\r?\\n|\\r/g, '\\r\\n')\n\n // Set action to this step: run the multipart/form-data\n // encoding algorithm, with object\u2019s entry list and UTF-8.\n // - This ensures that the body is immutable and can't be changed afterwords\n // - That the content-length is calculated in advance.\n // - And that all parts are pre-encoded and ready to be sent.\n\n const blobParts = []\n const rn = new Uint8Array([13, 10]) // '\\r\\n'\n length = 0\n let hasUnknownSizeValue = false\n\n for (const [name, value] of object) {\n if (typeof value === 'string') {\n const chunk = textEncoder.encode(prefix +\n `; name=\"${escape(normalizeLinefeeds(name))}\"` +\n `\\r\\n\\r\\n${normalizeLinefeeds(value)}\\r\\n`)\n blobParts.push(chunk)\n length += chunk.byteLength\n } else {\n const chunk = textEncoder.encode(`${prefix}; name=\"${escape(normalizeLinefeeds(name))}\"` +\n (value.name ? `; filename=\"${escape(value.name)}\"` : '') + '\\r\\n' +\n `Content-Type: ${\n value.type || 'application/octet-stream'\n }\\r\\n\\r\\n`)\n blobParts.push(chunk, value, rn)\n if (typeof value.size === 'number') {\n length += chunk.byteLength + value.size + rn.byteLength\n } else {\n hasUnknownSizeValue = true\n }\n }\n }\n\n const chunk = textEncoder.encode(`--${boundary}--`)\n blobParts.push(chunk)\n length += chunk.byteLength\n if (hasUnknownSizeValue) {\n length = null\n }\n\n // Set source to object.\n source = object\n\n action = async function * () {\n for (const part of blobParts) {\n if (part.stream) {\n yield * part.stream()\n } else {\n yield part\n }\n }\n }\n\n // Set type to `multipart/form-data; boundary=`,\n // followed by the multipart/form-data boundary string generated\n // by the multipart/form-data encoding algorithm.\n type = 'multipart/form-data; boundary=' + boundary\n } else if (isBlobLike(object)) {\n // Blob\n\n // Set source to object.\n source = object\n\n // Set length to object\u2019s size.\n length = object.size\n\n // If object\u2019s type attribute is not the empty byte sequence, set\n // type to its value.\n if (object.type) {\n type = object.type\n }\n } else if (typeof object[Symbol.asyncIterator] === 'function') {\n // If keepalive is true, then throw a TypeError.\n if (keepalive) {\n throw new TypeError('keepalive')\n }\n\n // If object is disturbed or locked, then throw a TypeError.\n if (util.isDisturbed(object) || object.locked) {\n throw new TypeError(\n 'Response body object should not be disturbed or locked'\n )\n }\n\n stream =\n object instanceof ReadableStream ? object : ReadableStreamFrom(object)\n }\n\n // 11. If source is a byte sequence, then set action to a\n // step that returns source and length to source\u2019s length.\n if (typeof source === 'string' || util.isBuffer(source)) {\n length = Buffer.byteLength(source)\n }\n\n // 12. If action is non-null, then run these steps in in parallel:\n if (action != null) {\n // Run action.\n let iterator\n stream = new ReadableStream({\n async start () {\n iterator = action(object)[Symbol.asyncIterator]()\n },\n async pull (controller) {\n const { value, done } = await iterator.next()\n if (done) {\n // When running action is done, close stream.\n queueMicrotask(() => {\n controller.close()\n })\n } else {\n // Whenever one or more bytes are available and stream is not errored,\n // enqueue a Uint8Array wrapping an ArrayBuffer containing the available\n // bytes into stream.\n if (!isErrored(stream)) {\n controller.enqueue(new Uint8Array(value))\n }\n }\n return controller.desiredSize > 0\n },\n async cancel (reason) {\n await iterator.return()\n },\n type: undefined\n })\n }\n\n // 13. Let body be a body whose stream is stream, source is source,\n // and length is length.\n const body = { stream, source, length }\n\n // 14. Return (body, type).\n return [body, type]\n}\n\n// https://fetch.spec.whatwg.org/#bodyinit-safely-extract\nfunction safelyExtractBody (object, keepalive = false) {\n if (!ReadableStream) {\n // istanbul ignore next\n ReadableStream = require('stream/web').ReadableStream\n }\n\n // To safely extract a body and a `Content-Type` value from\n // a byte sequence or BodyInit object object, run these steps:\n\n // 1. If object is a ReadableStream object, then:\n if (object instanceof ReadableStream) {\n // Assert: object is neither disturbed nor locked.\n // istanbul ignore next\n assert(!util.isDisturbed(object), 'The body has already been consumed.')\n // istanbul ignore next\n assert(!object.locked, 'The stream is locked.')\n }\n\n // 2. Return the results of extracting object.\n return extractBody(object, keepalive)\n}\n\nfunction cloneBody (body) {\n // To clone a body body, run these steps:\n\n // https://fetch.spec.whatwg.org/#concept-body-clone\n\n // 1. Let \u00AB out1, out2 \u00BB be the result of teeing body\u2019s stream.\n const [out1, out2] = body.stream.tee()\n const out2Clone = structuredClone(out2, { transfer: [out2] })\n // This, for whatever reasons, unrefs out2Clone which allows\n // the process to exit by itself.\n const [, finalClone] = out2Clone.tee()\n\n // 2. Set body\u2019s stream to out1.\n body.stream = out1\n\n // 3. Return a body whose stream is out2 and other members are copied from body.\n return {\n stream: finalClone,\n length: body.length,\n source: body.source\n }\n}\n\nasync function * consumeBody (body) {\n if (body) {\n if (isUint8Array(body)) {\n yield body\n } else {\n const stream = body.stream\n\n if (util.isDisturbed(stream)) {\n throw new TypeError('The body has already been consumed.')\n }\n\n if (stream.locked) {\n throw new TypeError('The stream is locked.')\n }\n\n // Compat.\n stream[kBodyUsed] = true\n\n yield * stream\n }\n }\n}\n\nfunction throwIfAborted (state) {\n if (state.aborted) {\n throw new DOMException('The operation was aborted.', 'AbortError')\n }\n}\n\nfunction bodyMixinMethods (instance) {\n const methods = {\n blob () {\n // The blob() method steps are to return the result of\n // running consume body with this and the following step\n // given a byte sequence bytes: return a Blob whose\n // contents are bytes and whose type attribute is this\u2019s\n // MIME type.\n return specConsumeBody(this, (bytes) => {\n let mimeType = bodyMimeType(this)\n\n if (mimeType === 'failure') {\n mimeType = ''\n } else if (mimeType) {\n mimeType = serializeAMimeType(mimeType)\n }\n\n // Return a Blob whose contents are bytes and type attribute\n // is mimeType.\n return new Blob([bytes], { type: mimeType })\n }, instance)\n },\n\n arrayBuffer () {\n // The arrayBuffer() method steps are to return the result\n // of running consume body with this and the following step\n // given a byte sequence bytes: return a new ArrayBuffer\n // whose contents are bytes.\n return specConsumeBody(this, (bytes) => {\n return new Uint8Array(bytes).buffer\n }, instance)\n },\n\n text () {\n // The text() method steps are to return the result of running\n // consume body with this and UTF-8 decode.\n return specConsumeBody(this, utf8DecodeBytes, instance)\n },\n\n json () {\n // The json() method steps are to return the result of running\n // consume body with this and parse JSON from bytes.\n return specConsumeBody(this, parseJSONFromBytes, instance)\n },\n\n async formData () {\n webidl.brandCheck(this, instance)\n\n throwIfAborted(this[kState])\n\n const contentType = this.headers.get('Content-Type')\n\n // If mimeType\u2019s essence is \"multipart/form-data\", then:\n if (/multipart\\/form-data/.test(contentType)) {\n const headers = {}\n for (const [key, value] of this.headers) headers[key.toLowerCase()] = value\n\n const responseFormData = new FormData()\n\n let busboy\n\n try {\n busboy = new Busboy({\n headers,\n preservePath: true\n })\n } catch (err) {\n throw new DOMException(`${err}`, 'AbortError')\n }\n\n busboy.on('field', (name, value) => {\n responseFormData.append(name, value)\n })\n busboy.on('file', (name, value, filename, encoding, mimeType) => {\n const chunks = []\n\n if (encoding === 'base64' || encoding.toLowerCase() === 'base64') {\n let base64chunk = ''\n\n value.on('data', (chunk) => {\n base64chunk += chunk.toString().replace(/[\\r\\n]/gm, '')\n\n const end = base64chunk.length - base64chunk.length % 4\n chunks.push(Buffer.from(base64chunk.slice(0, end), 'base64'))\n\n base64chunk = base64chunk.slice(end)\n })\n value.on('end', () => {\n chunks.push(Buffer.from(base64chunk, 'base64'))\n responseFormData.append(name, new File(chunks, filename, { type: mimeType }))\n })\n } else {\n value.on('data', (chunk) => {\n chunks.push(chunk)\n })\n value.on('end', () => {\n responseFormData.append(name, new File(chunks, filename, { type: mimeType }))\n })\n }\n })\n\n const busboyResolve = new Promise((resolve, reject) => {\n busboy.on('finish', resolve)\n busboy.on('error', (err) => reject(new TypeError(err)))\n })\n\n if (this.body !== null) for await (const chunk of consumeBody(this[kState].body)) busboy.write(chunk)\n busboy.end()\n await busboyResolve\n\n return responseFormData\n } else if (/application\\/x-www-form-urlencoded/.test(contentType)) {\n // Otherwise, if mimeType\u2019s essence is \"application/x-www-form-urlencoded\", then:\n\n // 1. Let entries be the result of parsing bytes.\n let entries\n try {\n let text = ''\n // application/x-www-form-urlencoded parser will keep the BOM.\n // https://url.spec.whatwg.org/#concept-urlencoded-parser\n // Note that streaming decoder is stateful and cannot be reused\n const streamingDecoder = new TextDecoder('utf-8', { ignoreBOM: true })\n\n for await (const chunk of consumeBody(this[kState].body)) {\n if (!isUint8Array(chunk)) {\n throw new TypeError('Expected Uint8Array chunk')\n }\n text += streamingDecoder.decode(chunk, { stream: true })\n }\n text += streamingDecoder.decode()\n entries = new URLSearchParams(text)\n } catch (err) {\n // istanbul ignore next: Unclear when new URLSearchParams can fail on a string.\n // 2. If entries is failure, then throw a TypeError.\n throw Object.assign(new TypeError(), { cause: err })\n }\n\n // 3. Return a new FormData object whose entries are entries.\n const formData = new FormData()\n for (const [name, value] of entries) {\n formData.append(name, value)\n }\n return formData\n } else {\n // Wait a tick before checking if the request has been aborted.\n // Otherwise, a TypeError can be thrown when an AbortError should.\n await Promise.resolve()\n\n throwIfAborted(this[kState])\n\n // Otherwise, throw a TypeError.\n throw webidl.errors.exception({\n header: `${instance.name}.formData`,\n message: 'Could not parse content as FormData.'\n })\n }\n }\n }\n\n return methods\n}\n\nfunction mixinBody (prototype) {\n Object.assign(prototype.prototype, bodyMixinMethods(prototype))\n}\n\n/**\n * @see https://fetch.spec.whatwg.org/#concept-body-consume-body\n * @param {Response|Request} object\n * @param {(value: unknown) => unknown} convertBytesToJSValue\n * @param {Response|Request} instance\n */\nasync function specConsumeBody (object, convertBytesToJSValue, instance) {\n webidl.brandCheck(object, instance)\n\n throwIfAborted(object[kState])\n\n // 1. If object is unusable, then return a promise rejected\n // with a TypeError.\n if (bodyUnusable(object[kState].body)) {\n throw new TypeError('Body is unusable')\n }\n\n // 2. Let promise be a new promise.\n const promise = createDeferredPromise()\n\n // 3. Let errorSteps given error be to reject promise with error.\n const errorSteps = (error) => promise.reject(error)\n\n // 4. Let successSteps given a byte sequence data be to resolve\n // promise with the result of running convertBytesToJSValue\n // with data. If that threw an exception, then run errorSteps\n // with that exception.\n const successSteps = (data) => {\n try {\n promise.resolve(convertBytesToJSValue(data))\n } catch (e) {\n errorSteps(e)\n }\n }\n\n // 5. If object\u2019s body is null, then run successSteps with an\n // empty byte sequence.\n if (object[kState].body == null) {\n successSteps(new Uint8Array())\n return promise.promise\n }\n\n // 6. Otherwise, fully read object\u2019s body given successSteps,\n // errorSteps, and object\u2019s relevant global object.\n await fullyReadBody(object[kState].body, successSteps, errorSteps)\n\n // 7. Return promise.\n return promise.promise\n}\n\n// https://fetch.spec.whatwg.org/#body-unusable\nfunction bodyUnusable (body) {\n // An object including the Body interface mixin is\n // said to be unusable if its body is non-null and\n // its body\u2019s stream is disturbed or locked.\n return body != null && (body.stream.locked || util.isDisturbed(body.stream))\n}\n\n/**\n * @see https://encoding.spec.whatwg.org/#utf-8-decode\n * @param {Buffer} buffer\n */\nfunction utf8DecodeBytes (buffer) {\n if (buffer.length === 0) {\n return ''\n }\n\n // 1. Let buffer be the result of peeking three bytes from\n // ioQueue, converted to a byte sequence.\n\n // 2. If buffer is 0xEF 0xBB 0xBF, then read three\n // bytes from ioQueue. (Do nothing with those bytes.)\n if (buffer[0] === 0xEF && buffer[1] === 0xBB && buffer[2] === 0xBF) {\n buffer = buffer.subarray(3)\n }\n\n // 3. Process a queue with an instance of UTF-8\u2019s\n // decoder, ioQueue, output, and \"replacement\".\n const output = textDecoder.decode(buffer)\n\n // 4. Return output.\n return output\n}\n\n/**\n * @see https://infra.spec.whatwg.org/#parse-json-bytes-to-a-javascript-value\n * @param {Uint8Array} bytes\n */\nfunction parseJSONFromBytes (bytes) {\n return JSON.parse(utf8DecodeBytes(bytes))\n}\n\n/**\n * @see https://fetch.spec.whatwg.org/#concept-body-mime-type\n * @param {import('./response').Response|import('./request').Request} object\n */\nfunction bodyMimeType (object) {\n const { headersList } = object[kState]\n const contentType = headersList.get('content-type')\n\n if (contentType === null) {\n return 'failure'\n }\n\n return parseMIMEType(contentType)\n}\n\nmodule.exports = {\n extractBody,\n safelyExtractBody,\n cloneBody,\n mixinBody\n}\n", "'use strict'\n\nconst {\n InvalidArgumentError,\n NotSupportedError\n} = require('./errors')\nconst assert = require('assert')\nconst { kHTTP2BuildRequest, kHTTP2CopyHeaders, kHTTP1BuildRequest } = require('./symbols')\nconst util = require('./util')\n\n// tokenRegExp and headerCharRegex have been lifted from\n// https://github.com/nodejs/node/blob/main/lib/_http_common.js\n\n/**\n * Verifies that the given val is a valid HTTP token\n * per the rules defined in RFC 7230\n * See https://tools.ietf.org/html/rfc7230#section-3.2.6\n */\nconst tokenRegExp = /^[\\^_`a-zA-Z\\-0-9!#$%&'*+.|~]+$/\n\n/**\n * Matches if val contains an invalid field-vchar\n * field-value = *( field-content / obs-fold )\n * field-content = field-vchar [ 1*( SP / HTAB ) field-vchar ]\n * field-vchar = VCHAR / obs-text\n */\nconst headerCharRegex = /[^\\t\\x20-\\x7e\\x80-\\xff]/\n\n// Verifies that a given path is valid does not contain control chars \\x00 to \\x20\nconst invalidPathRegex = /[^\\u0021-\\u00ff]/\n\nconst kHandler = Symbol('handler')\n\nconst channels = {}\n\nlet extractBody\n\ntry {\n const diagnosticsChannel = require('diagnostics_channel')\n channels.create = diagnosticsChannel.channel('undici:request:create')\n channels.bodySent = diagnosticsChannel.channel('undici:request:bodySent')\n channels.headers = diagnosticsChannel.channel('undici:request:headers')\n channels.trailers = diagnosticsChannel.channel('undici:request:trailers')\n channels.error = diagnosticsChannel.channel('undici:request:error')\n} catch {\n channels.create = { hasSubscribers: false }\n channels.bodySent = { hasSubscribers: false }\n channels.headers = { hasSubscribers: false }\n channels.trailers = { hasSubscribers: false }\n channels.error = { hasSubscribers: false }\n}\n\nclass Request {\n constructor (origin, {\n path,\n method,\n body,\n headers,\n query,\n idempotent,\n blocking,\n upgrade,\n headersTimeout,\n bodyTimeout,\n reset,\n throwOnError,\n expectContinue\n }, handler) {\n if (typeof path !== 'string') {\n throw new InvalidArgumentError('path must be a string')\n } else if (\n path[0] !== '/' &&\n !(path.startsWith('http://') || path.startsWith('https://')) &&\n method !== 'CONNECT'\n ) {\n throw new InvalidArgumentError('path must be an absolute URL or start with a slash')\n } else if (invalidPathRegex.exec(path) !== null) {\n throw new InvalidArgumentError('invalid request path')\n }\n\n if (typeof method !== 'string') {\n throw new InvalidArgumentError('method must be a string')\n } else if (tokenRegExp.exec(method) === null) {\n throw new InvalidArgumentError('invalid request method')\n }\n\n if (upgrade && typeof upgrade !== 'string') {\n throw new InvalidArgumentError('upgrade must be a string')\n }\n\n if (headersTimeout != null && (!Number.isFinite(headersTimeout) || headersTimeout < 0)) {\n throw new InvalidArgumentError('invalid headersTimeout')\n }\n\n if (bodyTimeout != null && (!Number.isFinite(bodyTimeout) || bodyTimeout < 0)) {\n throw new InvalidArgumentError('invalid bodyTimeout')\n }\n\n if (reset != null && typeof reset !== 'boolean') {\n throw new InvalidArgumentError('invalid reset')\n }\n\n if (expectContinue != null && typeof expectContinue !== 'boolean') {\n throw new InvalidArgumentError('invalid expectContinue')\n }\n\n this.headersTimeout = headersTimeout\n\n this.bodyTimeout = bodyTimeout\n\n this.throwOnError = throwOnError === true\n\n this.method = method\n\n this.abort = null\n\n if (body == null) {\n this.body = null\n } else if (util.isStream(body)) {\n this.body = body\n\n const rState = this.body._readableState\n if (!rState || !rState.autoDestroy) {\n this.endHandler = function autoDestroy () {\n util.destroy(this)\n }\n this.body.on('end', this.endHandler)\n }\n\n this.errorHandler = err => {\n if (this.abort) {\n this.abort(err)\n } else {\n this.error = err\n }\n }\n this.body.on('error', this.errorHandler)\n } else if (util.isBuffer(body)) {\n this.body = body.byteLength ? body : null\n } else if (ArrayBuffer.isView(body)) {\n this.body = body.buffer.byteLength ? Buffer.from(body.buffer, body.byteOffset, body.byteLength) : null\n } else if (body instanceof ArrayBuffer) {\n this.body = body.byteLength ? Buffer.from(body) : null\n } else if (typeof body === 'string') {\n this.body = body.length ? Buffer.from(body) : null\n } else if (util.isFormDataLike(body) || util.isIterable(body) || util.isBlobLike(body)) {\n this.body = body\n } else {\n throw new InvalidArgumentError('body must be a string, a Buffer, a Readable stream, an iterable, or an async iterable')\n }\n\n this.completed = false\n\n this.aborted = false\n\n this.upgrade = upgrade || null\n\n this.path = query ? util.buildURL(path, query) : path\n\n this.origin = origin\n\n this.idempotent = idempotent == null\n ? method === 'HEAD' || method === 'GET'\n : idempotent\n\n this.blocking = blocking == null ? false : blocking\n\n this.reset = reset == null ? null : reset\n\n this.host = null\n\n this.contentLength = null\n\n this.contentType = null\n\n this.headers = ''\n\n // Only for H2\n this.expectContinue = expectContinue != null ? expectContinue : false\n\n if (Array.isArray(headers)) {\n if (headers.length % 2 !== 0) {\n throw new InvalidArgumentError('headers array must be even')\n }\n for (let i = 0; i < headers.length; i += 2) {\n processHeader(this, headers[i], headers[i + 1])\n }\n } else if (headers && typeof headers === 'object') {\n const keys = Object.keys(headers)\n for (let i = 0; i < keys.length; i++) {\n const key = keys[i]\n processHeader(this, key, headers[key])\n }\n } else if (headers != null) {\n throw new InvalidArgumentError('headers must be an object or an array')\n }\n\n if (util.isFormDataLike(this.body)) {\n if (util.nodeMajor < 16 || (util.nodeMajor === 16 && util.nodeMinor < 8)) {\n throw new InvalidArgumentError('Form-Data bodies are only supported in node v16.8 and newer.')\n }\n\n if (!extractBody) {\n extractBody = require('../fetch/body.js').extractBody\n }\n\n const [bodyStream, contentType] = extractBody(body)\n if (this.contentType == null) {\n this.contentType = contentType\n this.headers += `content-type: ${contentType}\\r\\n`\n }\n this.body = bodyStream.stream\n this.contentLength = bodyStream.length\n } else if (util.isBlobLike(body) && this.contentType == null && body.type) {\n this.contentType = body.type\n this.headers += `content-type: ${body.type}\\r\\n`\n }\n\n util.validateHandler(handler, method, upgrade)\n\n this.servername = util.getServerName(this.host)\n\n this[kHandler] = handler\n\n if (channels.create.hasSubscribers) {\n channels.create.publish({ request: this })\n }\n }\n\n onBodySent (chunk) {\n if (this[kHandler].onBodySent) {\n try {\n return this[kHandler].onBodySent(chunk)\n } catch (err) {\n this.abort(err)\n }\n }\n }\n\n onRequestSent () {\n if (channels.bodySent.hasSubscribers) {\n channels.bodySent.publish({ request: this })\n }\n\n if (this[kHandler].onRequestSent) {\n try {\n return this[kHandler].onRequestSent()\n } catch (err) {\n this.abort(err)\n }\n }\n }\n\n onConnect (abort) {\n assert(!this.aborted)\n assert(!this.completed)\n\n if (this.error) {\n abort(this.error)\n } else {\n this.abort = abort\n return this[kHandler].onConnect(abort)\n }\n }\n\n onHeaders (statusCode, headers, resume, statusText) {\n assert(!this.aborted)\n assert(!this.completed)\n\n if (channels.headers.hasSubscribers) {\n channels.headers.publish({ request: this, response: { statusCode, headers, statusText } })\n }\n\n try {\n return this[kHandler].onHeaders(statusCode, headers, resume, statusText)\n } catch (err) {\n this.abort(err)\n }\n }\n\n onData (chunk) {\n assert(!this.aborted)\n assert(!this.completed)\n\n try {\n return this[kHandler].onData(chunk)\n } catch (err) {\n this.abort(err)\n return false\n }\n }\n\n onUpgrade (statusCode, headers, socket) {\n assert(!this.aborted)\n assert(!this.completed)\n\n return this[kHandler].onUpgrade(statusCode, headers, socket)\n }\n\n onComplete (trailers) {\n this.onFinally()\n\n assert(!this.aborted)\n\n this.completed = true\n if (channels.trailers.hasSubscribers) {\n channels.trailers.publish({ request: this, trailers })\n }\n\n try {\n return this[kHandler].onComplete(trailers)\n } catch (err) {\n // TODO (fix): This might be a bad idea?\n this.onError(err)\n }\n }\n\n onError (error) {\n this.onFinally()\n\n if (channels.error.hasSubscribers) {\n channels.error.publish({ request: this, error })\n }\n\n if (this.aborted) {\n return\n }\n this.aborted = true\n\n return this[kHandler].onError(error)\n }\n\n onFinally () {\n if (this.errorHandler) {\n this.body.off('error', this.errorHandler)\n this.errorHandler = null\n }\n\n if (this.endHandler) {\n this.body.off('end', this.endHandler)\n this.endHandler = null\n }\n }\n\n // TODO: adjust to support H2\n addHeader (key, value) {\n processHeader(this, key, value)\n return this\n }\n\n static [kHTTP1BuildRequest] (origin, opts, handler) {\n // TODO: Migrate header parsing here, to make Requests\n // HTTP agnostic\n return new Request(origin, opts, handler)\n }\n\n static [kHTTP2BuildRequest] (origin, opts, handler) {\n const headers = opts.headers\n opts = { ...opts, headers: null }\n\n const request = new Request(origin, opts, handler)\n\n request.headers = {}\n\n if (Array.isArray(headers)) {\n if (headers.length % 2 !== 0) {\n throw new InvalidArgumentError('headers array must be even')\n }\n for (let i = 0; i < headers.length; i += 2) {\n processHeader(request, headers[i], headers[i + 1], true)\n }\n } else if (headers && typeof headers === 'object') {\n const keys = Object.keys(headers)\n for (let i = 0; i < keys.length; i++) {\n const key = keys[i]\n processHeader(request, key, headers[key], true)\n }\n } else if (headers != null) {\n throw new InvalidArgumentError('headers must be an object or an array')\n }\n\n return request\n }\n\n static [kHTTP2CopyHeaders] (raw) {\n const rawHeaders = raw.split('\\r\\n')\n const headers = {}\n\n for (const header of rawHeaders) {\n const [key, value] = header.split(': ')\n\n if (value == null || value.length === 0) continue\n\n if (headers[key]) headers[key] += `,${value}`\n else headers[key] = value\n }\n\n return headers\n }\n}\n\nfunction processHeaderValue (key, val, skipAppend) {\n if (val && typeof val === 'object') {\n throw new InvalidArgumentError(`invalid ${key} header`)\n }\n\n val = val != null ? `${val}` : ''\n\n if (headerCharRegex.exec(val) !== null) {\n throw new InvalidArgumentError(`invalid ${key} header`)\n }\n\n return skipAppend ? val : `${key}: ${val}\\r\\n`\n}\n\nfunction processHeader (request, key, val, skipAppend = false) {\n if (val && (typeof val === 'object' && !Array.isArray(val))) {\n throw new InvalidArgumentError(`invalid ${key} header`)\n } else if (val === undefined) {\n return\n }\n\n if (\n request.host === null &&\n key.length === 4 &&\n key.toLowerCase() === 'host'\n ) {\n if (headerCharRegex.exec(val) !== null) {\n throw new InvalidArgumentError(`invalid ${key} header`)\n }\n // Consumed by Client\n request.host = val\n } else if (\n request.contentLength === null &&\n key.length === 14 &&\n key.toLowerCase() === 'content-length'\n ) {\n request.contentLength = parseInt(val, 10)\n if (!Number.isFinite(request.contentLength)) {\n throw new InvalidArgumentError('invalid content-length header')\n }\n } else if (\n request.contentType === null &&\n key.length === 12 &&\n key.toLowerCase() === 'content-type'\n ) {\n request.contentType = val\n if (skipAppend) request.headers[key] = processHeaderValue(key, val, skipAppend)\n else request.headers += processHeaderValue(key, val)\n } else if (\n key.length === 17 &&\n key.toLowerCase() === 'transfer-encoding'\n ) {\n throw new InvalidArgumentError('invalid transfer-encoding header')\n } else if (\n key.length === 10 &&\n key.toLowerCase() === 'connection'\n ) {\n const value = typeof val === 'string' ? val.toLowerCase() : null\n if (value !== 'close' && value !== 'keep-alive') {\n throw new InvalidArgumentError('invalid connection header')\n } else if (value === 'close') {\n request.reset = true\n }\n } else if (\n key.length === 10 &&\n key.toLowerCase() === 'keep-alive'\n ) {\n throw new InvalidArgumentError('invalid keep-alive header')\n } else if (\n key.length === 7 &&\n key.toLowerCase() === 'upgrade'\n ) {\n throw new InvalidArgumentError('invalid upgrade header')\n } else if (\n key.length === 6 &&\n key.toLowerCase() === 'expect'\n ) {\n throw new NotSupportedError('expect header not supported')\n } else if (tokenRegExp.exec(key) === null) {\n throw new InvalidArgumentError('invalid header key')\n } else {\n if (Array.isArray(val)) {\n for (let i = 0; i < val.length; i++) {\n if (skipAppend) {\n if (request.headers[key]) request.headers[key] += `,${processHeaderValue(key, val[i], skipAppend)}`\n else request.headers[key] = processHeaderValue(key, val[i], skipAppend)\n } else {\n request.headers += processHeaderValue(key, val[i])\n }\n }\n } else {\n if (skipAppend) request.headers[key] = processHeaderValue(key, val, skipAppend)\n else request.headers += processHeaderValue(key, val)\n }\n }\n}\n\nmodule.exports = Request\n", "'use strict'\n\nconst EventEmitter = require('events')\n\nclass Dispatcher extends EventEmitter {\n dispatch () {\n throw new Error('not implemented')\n }\n\n close () {\n throw new Error('not implemented')\n }\n\n destroy () {\n throw new Error('not implemented')\n }\n}\n\nmodule.exports = Dispatcher\n", "'use strict'\n\nconst Dispatcher = require('./dispatcher')\nconst {\n ClientDestroyedError,\n ClientClosedError,\n InvalidArgumentError\n} = require('./core/errors')\nconst { kDestroy, kClose, kDispatch, kInterceptors } = require('./core/symbols')\n\nconst kDestroyed = Symbol('destroyed')\nconst kClosed = Symbol('closed')\nconst kOnDestroyed = Symbol('onDestroyed')\nconst kOnClosed = Symbol('onClosed')\nconst kInterceptedDispatch = Symbol('Intercepted Dispatch')\n\nclass DispatcherBase extends Dispatcher {\n constructor () {\n super()\n\n this[kDestroyed] = false\n this[kOnDestroyed] = null\n this[kClosed] = false\n this[kOnClosed] = []\n }\n\n get destroyed () {\n return this[kDestroyed]\n }\n\n get closed () {\n return this[kClosed]\n }\n\n get interceptors () {\n return this[kInterceptors]\n }\n\n set interceptors (newInterceptors) {\n if (newInterceptors) {\n for (let i = newInterceptors.length - 1; i >= 0; i--) {\n const interceptor = this[kInterceptors][i]\n if (typeof interceptor !== 'function') {\n throw new InvalidArgumentError('interceptor must be an function')\n }\n }\n }\n\n this[kInterceptors] = newInterceptors\n }\n\n close (callback) {\n if (callback === undefined) {\n return new Promise((resolve, reject) => {\n this.close((err, data) => {\n return err ? reject(err) : resolve(data)\n })\n })\n }\n\n if (typeof callback !== 'function') {\n throw new InvalidArgumentError('invalid callback')\n }\n\n if (this[kDestroyed]) {\n queueMicrotask(() => callback(new ClientDestroyedError(), null))\n return\n }\n\n if (this[kClosed]) {\n if (this[kOnClosed]) {\n this[kOnClosed].push(callback)\n } else {\n queueMicrotask(() => callback(null, null))\n }\n return\n }\n\n this[kClosed] = true\n this[kOnClosed].push(callback)\n\n const onClosed = () => {\n const callbacks = this[kOnClosed]\n this[kOnClosed] = null\n for (let i = 0; i < callbacks.length; i++) {\n callbacks[i](null, null)\n }\n }\n\n // Should not error.\n this[kClose]()\n .then(() => this.destroy())\n .then(() => {\n queueMicrotask(onClosed)\n })\n }\n\n destroy (err, callback) {\n if (typeof err === 'function') {\n callback = err\n err = null\n }\n\n if (callback === undefined) {\n return new Promise((resolve, reject) => {\n this.destroy(err, (err, data) => {\n return err ? /* istanbul ignore next: should never error */ reject(err) : resolve(data)\n })\n })\n }\n\n if (typeof callback !== 'function') {\n throw new InvalidArgumentError('invalid callback')\n }\n\n if (this[kDestroyed]) {\n if (this[kOnDestroyed]) {\n this[kOnDestroyed].push(callback)\n } else {\n queueMicrotask(() => callback(null, null))\n }\n return\n }\n\n if (!err) {\n err = new ClientDestroyedError()\n }\n\n this[kDestroyed] = true\n this[kOnDestroyed] = this[kOnDestroyed] || []\n this[kOnDestroyed].push(callback)\n\n const onDestroyed = () => {\n const callbacks = this[kOnDestroyed]\n this[kOnDestroyed] = null\n for (let i = 0; i < callbacks.length; i++) {\n callbacks[i](null, null)\n }\n }\n\n // Should not error.\n this[kDestroy](err).then(() => {\n queueMicrotask(onDestroyed)\n })\n }\n\n [kInterceptedDispatch] (opts, handler) {\n if (!this[kInterceptors] || this[kInterceptors].length === 0) {\n this[kInterceptedDispatch] = this[kDispatch]\n return this[kDispatch](opts, handler)\n }\n\n let dispatch = this[kDispatch].bind(this)\n for (let i = this[kInterceptors].length - 1; i >= 0; i--) {\n dispatch = this[kInterceptors][i](dispatch)\n }\n this[kInterceptedDispatch] = dispatch\n return dispatch(opts, handler)\n }\n\n dispatch (opts, handler) {\n if (!handler || typeof handler !== 'object') {\n throw new InvalidArgumentError('handler must be an object')\n }\n\n try {\n if (!opts || typeof opts !== 'object') {\n throw new InvalidArgumentError('opts must be an object.')\n }\n\n if (this[kDestroyed] || this[kOnDestroyed]) {\n throw new ClientDestroyedError()\n }\n\n if (this[kClosed]) {\n throw new ClientClosedError()\n }\n\n return this[kInterceptedDispatch](opts, handler)\n } catch (err) {\n if (typeof handler.onError !== 'function') {\n throw new InvalidArgumentError('invalid onError method')\n }\n\n handler.onError(err)\n\n return false\n }\n }\n}\n\nmodule.exports = DispatcherBase\n", "'use strict'\n\nconst net = require('net')\nconst assert = require('assert')\nconst util = require('./util')\nconst { InvalidArgumentError, ConnectTimeoutError } = require('./errors')\n\nlet tls // include tls conditionally since it is not always available\n\n// TODO: session re-use does not wait for the first\n// connection to resolve the session and might therefore\n// resolve the same servername multiple times even when\n// re-use is enabled.\n\nlet SessionCache\n// FIXME: remove workaround when the Node bug is fixed\n// https://github.com/nodejs/node/issues/49344#issuecomment-1741776308\nif (global.FinalizationRegistry && !process.env.NODE_V8_COVERAGE) {\n SessionCache = class WeakSessionCache {\n constructor (maxCachedSessions) {\n this._maxCachedSessions = maxCachedSessions\n this._sessionCache = new Map()\n this._sessionRegistry = new global.FinalizationRegistry((key) => {\n if (this._sessionCache.size < this._maxCachedSessions) {\n return\n }\n\n const ref = this._sessionCache.get(key)\n if (ref !== undefined && ref.deref() === undefined) {\n this._sessionCache.delete(key)\n }\n })\n }\n\n get (sessionKey) {\n const ref = this._sessionCache.get(sessionKey)\n return ref ? ref.deref() : null\n }\n\n set (sessionKey, session) {\n if (this._maxCachedSessions === 0) {\n return\n }\n\n this._sessionCache.set(sessionKey, new WeakRef(session))\n this._sessionRegistry.register(session, sessionKey)\n }\n }\n} else {\n SessionCache = class SimpleSessionCache {\n constructor (maxCachedSessions) {\n this._maxCachedSessions = maxCachedSessions\n this._sessionCache = new Map()\n }\n\n get (sessionKey) {\n return this._sessionCache.get(sessionKey)\n }\n\n set (sessionKey, session) {\n if (this._maxCachedSessions === 0) {\n return\n }\n\n if (this._sessionCache.size >= this._maxCachedSessions) {\n // remove the oldest session\n const { value: oldestKey } = this._sessionCache.keys().next()\n this._sessionCache.delete(oldestKey)\n }\n\n this._sessionCache.set(sessionKey, session)\n }\n }\n}\n\nfunction buildConnector ({ allowH2, maxCachedSessions, socketPath, timeout, ...opts }) {\n if (maxCachedSessions != null && (!Number.isInteger(maxCachedSessions) || maxCachedSessions < 0)) {\n throw new InvalidArgumentError('maxCachedSessions must be a positive integer or zero')\n }\n\n const options = { path: socketPath, ...opts }\n const sessionCache = new SessionCache(maxCachedSessions == null ? 100 : maxCachedSessions)\n timeout = timeout == null ? 10e3 : timeout\n allowH2 = allowH2 != null ? allowH2 : false\n return function connect ({ hostname, host, protocol, port, servername, localAddress, httpSocket }, callback) {\n let socket\n if (protocol === 'https:') {\n if (!tls) {\n tls = require('tls')\n }\n servername = servername || options.servername || util.getServerName(host) || null\n\n const sessionKey = servername || hostname\n const session = sessionCache.get(sessionKey) || null\n\n assert(sessionKey)\n\n socket = tls.connect({\n highWaterMark: 16384, // TLS in node can't have bigger HWM anyway...\n ...options,\n servername,\n session,\n localAddress,\n // TODO(HTTP/2): Add support for h2c\n ALPNProtocols: allowH2 ? ['http/1.1', 'h2'] : ['http/1.1'],\n socket: httpSocket, // upgrade socket connection\n port: port || 443,\n host: hostname\n })\n\n socket\n .on('session', function (session) {\n // TODO (fix): Can a session become invalid once established? Don't think so?\n sessionCache.set(sessionKey, session)\n })\n } else {\n assert(!httpSocket, 'httpSocket can only be sent on TLS update')\n socket = net.connect({\n highWaterMark: 64 * 1024, // Same as nodejs fs streams.\n ...options,\n localAddress,\n port: port || 80,\n host: hostname\n })\n }\n\n // Set TCP keep alive options on the socket here instead of in connect() for the case of assigning the socket\n if (options.keepAlive == null || options.keepAlive) {\n const keepAliveInitialDelay = options.keepAliveInitialDelay === undefined ? 60e3 : options.keepAliveInitialDelay\n socket.setKeepAlive(true, keepAliveInitialDelay)\n }\n\n const cancelTimeout = setupTimeout(() => onConnectTimeout(socket), timeout)\n\n socket\n .setNoDelay(true)\n .once(protocol === 'https:' ? 'secureConnect' : 'connect', function () {\n cancelTimeout()\n\n if (callback) {\n const cb = callback\n callback = null\n cb(null, this)\n }\n })\n .on('error', function (err) {\n cancelTimeout()\n\n if (callback) {\n const cb = callback\n callback = null\n cb(err)\n }\n })\n\n return socket\n }\n}\n\nfunction setupTimeout (onConnectTimeout, timeout) {\n if (!timeout) {\n return () => {}\n }\n\n let s1 = null\n let s2 = null\n const timeoutId = setTimeout(() => {\n // setImmediate is added to make sure that we priotorise socket error events over timeouts\n s1 = setImmediate(() => {\n if (process.platform === 'win32') {\n // Windows needs an extra setImmediate probably due to implementation differences in the socket logic\n s2 = setImmediate(() => onConnectTimeout())\n } else {\n onConnectTimeout()\n }\n })\n }, timeout)\n return () => {\n clearTimeout(timeoutId)\n clearImmediate(s1)\n clearImmediate(s2)\n }\n}\n\nfunction onConnectTimeout (socket) {\n util.destroy(socket, new ConnectTimeoutError())\n}\n\nmodule.exports = buildConnector\n", null, null, "'use strict'\n\nconst util = require('../core/util')\nconst { kBodyUsed } = require('../core/symbols')\nconst assert = require('assert')\nconst { InvalidArgumentError } = require('../core/errors')\nconst EE = require('events')\n\nconst redirectableStatusCodes = [300, 301, 302, 303, 307, 308]\n\nconst kBody = Symbol('body')\n\nclass BodyAsyncIterable {\n constructor (body) {\n this[kBody] = body\n this[kBodyUsed] = false\n }\n\n async * [Symbol.asyncIterator] () {\n assert(!this[kBodyUsed], 'disturbed')\n this[kBodyUsed] = true\n yield * this[kBody]\n }\n}\n\nclass RedirectHandler {\n constructor (dispatch, maxRedirections, opts, handler) {\n if (maxRedirections != null && (!Number.isInteger(maxRedirections) || maxRedirections < 0)) {\n throw new InvalidArgumentError('maxRedirections must be a positive number')\n }\n\n util.validateHandler(handler, opts.method, opts.upgrade)\n\n this.dispatch = dispatch\n this.location = null\n this.abort = null\n this.opts = { ...opts, maxRedirections: 0 } // opts must be a copy\n this.maxRedirections = maxRedirections\n this.handler = handler\n this.history = []\n\n if (util.isStream(this.opts.body)) {\n // TODO (fix): Provide some way for the user to cache the file to e.g. /tmp\n // so that it can be dispatched again?\n // TODO (fix): Do we need 100-expect support to provide a way to do this properly?\n if (util.bodyLength(this.opts.body) === 0) {\n this.opts.body\n .on('data', function () {\n assert(false)\n })\n }\n\n if (typeof this.opts.body.readableDidRead !== 'boolean') {\n this.opts.body[kBodyUsed] = false\n EE.prototype.on.call(this.opts.body, 'data', function () {\n this[kBodyUsed] = true\n })\n }\n } else if (this.opts.body && typeof this.opts.body.pipeTo === 'function') {\n // TODO (fix): We can't access ReadableStream internal state\n // to determine whether or not it has been disturbed. This is just\n // a workaround.\n this.opts.body = new BodyAsyncIterable(this.opts.body)\n } else if (\n this.opts.body &&\n typeof this.opts.body !== 'string' &&\n !ArrayBuffer.isView(this.opts.body) &&\n util.isIterable(this.opts.body)\n ) {\n // TODO: Should we allow re-using iterable if !this.opts.idempotent\n // or through some other flag?\n this.opts.body = new BodyAsyncIterable(this.opts.body)\n }\n }\n\n onConnect (abort) {\n this.abort = abort\n this.handler.onConnect(abort, { history: this.history })\n }\n\n onUpgrade (statusCode, headers, socket) {\n this.handler.onUpgrade(statusCode, headers, socket)\n }\n\n onError (error) {\n this.handler.onError(error)\n }\n\n onHeaders (statusCode, headers, resume, statusText) {\n this.location = this.history.length >= this.maxRedirections || util.isDisturbed(this.opts.body)\n ? null\n : parseLocation(statusCode, headers)\n\n if (this.opts.origin) {\n this.history.push(new URL(this.opts.path, this.opts.origin))\n }\n\n if (!this.location) {\n return this.handler.onHeaders(statusCode, headers, resume, statusText)\n }\n\n const { origin, pathname, search } = util.parseURL(new URL(this.location, this.opts.origin && new URL(this.opts.path, this.opts.origin)))\n const path = search ? `${pathname}${search}` : pathname\n\n // Remove headers referring to the original URL.\n // By default it is Host only, unless it's a 303 (see below), which removes also all Content-* headers.\n // https://tools.ietf.org/html/rfc7231#section-6.4\n this.opts.headers = cleanRequestHeaders(this.opts.headers, statusCode === 303, this.opts.origin !== origin)\n this.opts.path = path\n this.opts.origin = origin\n this.opts.maxRedirections = 0\n this.opts.query = null\n\n // https://tools.ietf.org/html/rfc7231#section-6.4.4\n // In case of HTTP 303, always replace method to be either HEAD or GET\n if (statusCode === 303 && this.opts.method !== 'HEAD') {\n this.opts.method = 'GET'\n this.opts.body = null\n }\n }\n\n onData (chunk) {\n if (this.location) {\n /*\n https://tools.ietf.org/html/rfc7231#section-6.4\n\n TLDR: undici always ignores 3xx response bodies.\n\n Redirection is used to serve the requested resource from another URL, so it is assumes that\n no body is generated (and thus can be ignored). Even though generating a body is not prohibited.\n\n For status 301, 302, 303, 307 and 308 (the latter from RFC 7238), the specs mention that the body usually\n (which means it's optional and not mandated) contain just an hyperlink to the value of\n the Location response header, so the body can be ignored safely.\n\n For status 300, which is \"Multiple Choices\", the spec mentions both generating a Location\n response header AND a response body with the other possible location to follow.\n Since the spec explicitily chooses not to specify a format for such body and leave it to\n servers and browsers implementors, we ignore the body as there is no specified way to eventually parse it.\n */\n } else {\n return this.handler.onData(chunk)\n }\n }\n\n onComplete (trailers) {\n if (this.location) {\n /*\n https://tools.ietf.org/html/rfc7231#section-6.4\n\n TLDR: undici always ignores 3xx response trailers as they are not expected in case of redirections\n and neither are useful if present.\n\n See comment on onData method above for more detailed informations.\n */\n\n this.location = null\n this.abort = null\n\n this.dispatch(this.opts, this)\n } else {\n this.handler.onComplete(trailers)\n }\n }\n\n onBodySent (chunk) {\n if (this.handler.onBodySent) {\n this.handler.onBodySent(chunk)\n }\n }\n}\n\nfunction parseLocation (statusCode, headers) {\n if (redirectableStatusCodes.indexOf(statusCode) === -1) {\n return null\n }\n\n for (let i = 0; i < headers.length; i += 2) {\n if (headers[i].toString().toLowerCase() === 'location') {\n return headers[i + 1]\n }\n }\n}\n\n// https://tools.ietf.org/html/rfc7231#section-6.4.4\nfunction shouldRemoveHeader (header, removeContent, unknownOrigin) {\n if (header.length === 4) {\n return util.headerNameToString(header) === 'host'\n }\n if (removeContent && util.headerNameToString(header).startsWith('content-')) {\n return true\n }\n if (unknownOrigin && (header.length === 13 || header.length === 6 || header.length === 19)) {\n const name = util.headerNameToString(header)\n return name === 'authorization' || name === 'cookie' || name === 'proxy-authorization'\n }\n return false\n}\n\n// https://tools.ietf.org/html/rfc7231#section-6.4\nfunction cleanRequestHeaders (headers, removeContent, unknownOrigin) {\n const ret = []\n if (Array.isArray(headers)) {\n for (let i = 0; i < headers.length; i += 2) {\n if (!shouldRemoveHeader(headers[i], removeContent, unknownOrigin)) {\n ret.push(headers[i], headers[i + 1])\n }\n }\n } else if (headers && typeof headers === 'object') {\n for (const key of Object.keys(headers)) {\n if (!shouldRemoveHeader(key, removeContent, unknownOrigin)) {\n ret.push(key, headers[key])\n }\n }\n } else {\n assert(headers == null, 'headers must be an object or an array')\n }\n return ret\n}\n\nmodule.exports = RedirectHandler\n", "'use strict'\n\nconst RedirectHandler = require('../handler/RedirectHandler')\n\nfunction createRedirectInterceptor ({ maxRedirections: defaultMaxRedirections }) {\n return (dispatch) => {\n return function Intercept (opts, handler) {\n const { maxRedirections = defaultMaxRedirections } = opts\n\n if (!maxRedirections) {\n return dispatch(opts, handler)\n }\n\n const redirectHandler = new RedirectHandler(dispatch, maxRedirections, opts, handler)\n opts = { ...opts, maxRedirections: 0 } // Stop sub dispatcher from also redirecting.\n return dispatch(opts, redirectHandler)\n }\n }\n}\n\nmodule.exports = createRedirectInterceptor\n", "module.exports = 'AGFzbQEAAAABMAhgAX8Bf2ADf39/AX9gBH9/f38Bf2AAAGADf39/AGABfwBgAn9/AGAGf39/f39/AALLAQgDZW52GHdhc21fb25faGVhZGVyc19jb21wbGV0ZQACA2VudhV3YXNtX29uX21lc3NhZ2VfYmVnaW4AAANlbnYLd2FzbV9vbl91cmwAAQNlbnYOd2FzbV9vbl9zdGF0dXMAAQNlbnYUd2FzbV9vbl9oZWFkZXJfZmllbGQAAQNlbnYUd2FzbV9vbl9oZWFkZXJfdmFsdWUAAQNlbnYMd2FzbV9vbl9ib2R5AAEDZW52GHdhc21fb25fbWVzc2FnZV9jb21wbGV0ZQAAA0ZFAwMEAAAFAAAAAAAABQEFAAUFBQAABgAAAAAGBgYGAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAAABAQcAAAUFAwABBAUBcAESEgUDAQACBggBfwFBgNQECwfRBSIGbWVtb3J5AgALX2luaXRpYWxpemUACRlfX2luZGlyZWN0X2Z1bmN0aW9uX3RhYmxlAQALbGxodHRwX2luaXQAChhsbGh0dHBfc2hvdWxkX2tlZXBfYWxpdmUAQQxsbGh0dHBfYWxsb2MADAZtYWxsb2MARgtsbGh0dHBfZnJlZQANBGZyZWUASA9sbGh0dHBfZ2V0X3R5cGUADhVsbGh0dHBfZ2V0X2h0dHBfbWFqb3IADxVsbGh0dHBfZ2V0X2h0dHBfbWlub3IAEBFsbGh0dHBfZ2V0X21ldGhvZAARFmxsaHR0cF9nZXRfc3RhdHVzX2NvZGUAEhJsbGh0dHBfZ2V0X3VwZ3JhZGUAEwxsbGh0dHBfcmVzZXQAFA5sbGh0dHBfZXhlY3V0ZQAVFGxsaHR0cF9zZXR0aW5nc19pbml0ABYNbGxodHRwX2ZpbmlzaAAXDGxsaHR0cF9wYXVzZQAYDWxsaHR0cF9yZXN1bWUAGRtsbGh0dHBfcmVzdW1lX2FmdGVyX3VwZ3JhZGUAGhBsbGh0dHBfZ2V0X2Vycm5vABsXbGxodHRwX2dldF9lcnJvcl9yZWFzb24AHBdsbGh0dHBfc2V0X2Vycm9yX3JlYXNvbgAdFGxsaHR0cF9nZXRfZXJyb3JfcG9zAB4RbGxodHRwX2Vycm5vX25hbWUAHxJsbGh0dHBfbWV0aG9kX25hbWUAIBJs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ADcDACAAQShqQgA3AwAgAEEgakIANwMAIABBEGpCADcDACAAQQhqQgA3AwAgAEHdATYCHEEAC3sBAX8CQCAAKAIMIgMNAAJAIAAoAgRFDQAgACABNgIECwJAIAAgASACEMSAgIAAIgMNACAAKAIMDwsgACADNgIcQQAhAyAAKAIEIgFFDQAgACABIAIgACgCCBGBgICAAAAiAUUNACAAIAI2AhQgACABNgIMIAEhAwsgAwvk8wEDDn8DfgR/I4CAgIAAQRBrIgMkgICAgAAgASEEIAEhBSABIQYgASEHIAEhCCABIQkgASEKIAEhCyABIQwgASENIAEhDiABIQ8CQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgACgCHCIQQX9qDt0B2gEB2QECAwQFBgcICQoLDA0O2AEPENcBERLWARMUFRYXGBkaG+AB3wEcHR7VAR8gISIjJCXUASYnKCkqKyzTAdIBLS7RAdABLzAxMjM0NTY3ODk6Ozw9Pj9AQUJDREVG2wFHSElKzwHOAUvNAUzMAU1OT1BRUlNUVVZXWFlaW1xdXl9gYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXp7fH1+f4ABgQGCAYMBhAGFAYYBhwGIAYkB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QAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAC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FCAAIBA2AgxBACEQDLIBCyAAKAIEIRAgAEEANgIEAkAgACAQIAEQp4CAgAAiEA0AIAEhAQxNCyAAQdMANgIcIAAgATYCFCAAIBA2AgxBACEQDLEBCyAAKAIEIRAgAEEANgIEAkAgACAQIAEQp4CAgAAiEA0AIAEhAQxRCyAAQeUANgIcIAAgATYCFCAAIBA2AgxBACEQDLABCyAAQQA2AhwgACABNgIUIABBxoqAgAA2AhAgAEEHNgIMQQAhEAyvAQsgACgCBCEQIABBADYCBAJAIAAgECABEKeAgIAAIhANACABIQEMSQsgAEHSADYCHCAAIAE2AhQgACAQNgIMQQAhEAyuAQsgACgCBCEQIABBADYCBAJAIAAgECABEKeAgIAAIhANACABIQEMSQsgAEHTADYCHCAAIAE2AhQgACAQNgIMQQAhEAytAQsgACgCBCEQIABBADYCBAJAIAAgECABEKeAgIAAIhANACABIQEMTQsgAEHlADYCHCAAIAE2AhQgACAQNgIMQQAhEAysAQsgAEEANgIcIAAgATYCFCAAQdyIgIAANgIQIABBBzYCDEEAIRAMqwELIBBBP0cNASABQQFqIQELQQUhEAyQAQtBACEQIABBADYCHCAAIAE2AhQgAEH9koCAADYCECAAQQc2AgwMqAELIAAoAgQhECAAQQA2AgQCQCAAIBAgARCngICAACIQDQAgASEBDEILIABB0gA2AhwgACABNgIUIAAgEDYCDEEAIRAMpwELIAAoAgQhECAAQQA2AgQCQCAAIBAgARCngICAACIQDQAgASEBDEILIABB0wA2AhwgACABNgIUIAAgEDYCDEEAIRAMpgELIAAoAgQhECAAQQA2AgQCQCAAIBAgARCngICAACIQDQAgASEBDEYLIABB5QA2AhwgACABNgIUIAAgEDYCDEEAIRAMpQELIAAoAgQhASAAQQA2AgQCQCAAIAEgFBCngICAACIBDQAgFCEBDD8LIABB0gA2AhwgACAUNgIUIAAgATYCDEEAIRAMpAELIAAoAgQhASAAQQA2AgQCQCAAIAEgFBCngICAACIBDQAgFCEBDD8LIABB0wA2AhwgACAUNgIUIAAgATYCDEEAIRAMowELIAAoAgQhASAAQQA2AgQCQCAAIAEgFBCngICAACIBDQAgFCEBDEMLIABB5QA2AhwgACAU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YWdlX2JlZ2luYCBjYWxsYmFjayBlcnJvcgBgb25fY2h1bmtfZXh0ZW5zaW9uX3ZhbHVlYCBjYWxsYmFjayBlcnJvcgBgb25fc3RhdHVzX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fdmVyc2lvbl9jb21wbGV0ZWAgY2FsbGJhY2sgZXJyb3IAYG9uX3VybF9jb21wbGV0ZWAgY2FsbGJhY2sgZXJyb3IAYG9uX2NodW5rX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25faGVhZGVyX3ZhbHVlX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fbWVzc2FnZV9jb21wbGV0ZWAgY2FsbGJhY2sgZXJyb3IAYG9uX21ldGhvZF9jb21wbGV0ZWAgY2FsbGJhY2sgZXJyb3IAYG9uX2hlYWRlcl9maWVsZF9jb21wbGV0ZWAgY2FsbGJhY2sgZXJyb3IAYG9uX2NodW5rX2V4dGVuc2lvbl9uYW1lYCBjYWxsYmFjayBlcnJvcgBVbmV4cGVjdGVkIGNoYXIgaW4gdXJsIHNlcnZlcgBJbnZhbGlkIGhlYWRlciB2YWx1ZSBjaGFyAEludmFsaWQgaGVhZGVyIGZpZWxkIGNoYXIAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl92ZXJzaW9uAEludmFsaWQgbWlub3IgdmVyc2lvbgBJbnZhbGlkIG1ham9yIHZlcnNpb24ARXhwZWN0ZWQgc3BhY2UgYWZ0ZXIgdmVyc2lvbgBFeHBlY3RlZCBDUkxGIGFmdGVyIHZlcnNpb24ASW52YWxpZCBIVFRQIHZlcnNpb24ASW52YWxpZCBoZWFkZXIgdG9rZW4AU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl91cmwASW52YWxpZCBjaGFyYWN0ZXJzIGluIHVybABVbmV4cGVjdGVkIHN0YXJ0IGNoYXIgaW4gdXJsAERvdWJsZSBAIGluIHVybABFbXB0eSBDb250ZW50LUxlbmd0aABJbnZhbGlkIGNoYXJhY3RlciBpbiBDb250ZW50LUxlbmd0aABEdXBsaWNhdGUgQ29udGVudC1MZW5ndGgASW52YWxpZCBjaGFyIGluIHVybCBwYXRoAENvbnRlbnQtTGVuZ3RoIGNhbid0IGJlIHByZXNlbnQgd2l0aCBUcmFuc2Zlci1FbmNvZGluZwBJbnZhbGlkIGNoYXJhY3RlciBpbiBjaHVuayBzaXplAFNwYW4gY2FsbGJhY2sgZXJyb3IgaW4gb25faGVhZGVyX3ZhbHVlAFNwYW4gY2FsbGJhY2sgZXJyb3IgaW4gb25fY2h1bmtfZXh0ZW5zaW9uX3ZhbHVlAEludmFsaWQgY2hhcmFjdGVyIGluIGNodW5rIGV4dGVuc2lvbnMgdmFsdWUATWlzc2luZyBleHBlY3RlZCBMRiBhZnRlciBoZWFkZXIgdmFsdWUASW52YWxpZCBgVHJhbnNmZXItRW5jb2RpbmdgIGhlYWRlciB2YWx1ZQBJbnZhbGlkIGNoYXJhY3RlciBpbiBjaHVuayBleHRlbnNpb25zIHF1b3RlIHZhbHVlAEludmFsaWQgY2hhcmFjdGVyIGluIGNodW5rIGV4dGVuc2lvbnMgcXVvdGVkIHZhbHVlAFBhdXNlZCBieSBvbl9oZWFkZXJzX2NvbXBsZXRlAEludmFsaWQgRU9GIHN0YXRlAG9uX3Jlc2V0IHBhdXNlAG9uX2NodW5rX2hlYWRlciBwYXVzZQBvbl9tZXNzYWdlX2JlZ2luIHBhdXNlAG9uX2NodW5rX2V4dGVuc2lvbl92YWx1ZSBwYXVzZQBvbl9zdGF0dXNfY29tcGxldGUgcGF1c2UAb25fdmVyc2lvbl9jb21wbGV0ZSBwYXVzZQBvbl91cmxfY29tcGxldGUgcGF1c2UAb25fY2h1bmtfY29tcGxldGUgcGF1c2UAb25faGVhZGVyX3ZhbHVlX2NvbXBsZXRlIHBhdXNlAG9uX21lc3NhZ2VfY29tcGxldGUgcGF1c2UAb25fbWV0aG9kX2NvbXBsZXRlIHBhdXNlAG9uX2hlYWRlcl9maWVsZF9jb21wbGV0ZSBwYXVzZQBvbl9jaHVua19leHRlbnNpb25fbmFtZSBwYXVzZQBVbmV4cGVjdGVkIHNwYWNlIGFmdGVyIHN0YXJ0IGxpbmUAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9jaHVua19leHRlbnNpb25fbmFtZQBJbnZhbGlkIGNoYXJhY3RlciBpbiBjaHVuayBleHRlbnNpb25zIG5hbWUAUGF1c2Ugb24gQ09OTkVDVC9VcGdyYWRlAFBhdXNlIG9uIFBSSS9VcGdyYWRlAEV4cGVjdGVkIEhUVFAvMiBDb25uZWN0aW9uIFByZWZhY2UAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9tZXRob2QARXhwZWN0ZWQgc3BhY2UgYWZ0ZXIgbWV0aG9kAFNwYW4gY2FsbGJhY2sgZXJyb3IgaW4gb25faGVhZGVyX2ZpZWxkAFBhdXNlZABJbnZhbGlkIHdvcmQgZW5jb3VudGVyZWQASW52YWxpZCBtZXRob2QgZW5jb3VudGVyZWQAVW5leHBlY3RlZCBjaGFyIGluIHVybCBzY2hlbWEAUmVxdWVzdCBoYXMgaW52YWxpZCBgVHJhbnNmZXItRW5jb2RpbmdgAFNXSVRDSF9QUk9YWQBVU0VfUFJPWFkATUtBQ1RJVklUWQBVTlBST0NFU1NBQkxFX0VOVElUWQBDT1BZAE1PVkVEX1BFUk1BTkVOVExZAFRPT19FQVJMWQBOT1RJRlkARkFJTEVEX0RFUEVOREVOQ1kAQkFEX0dBVEVXQVkAUExBWQBQVVQAQ0hFQ0tPVVQAR0FURVdBWV9USU1FT1VUAFJFUVVFU1RfVElNRU9VVABORVRXT1JLX0NPTk5FQ1RfVElNRU9VVABDT05ORUNUSU9OX1RJTUVPVVQATE9HSU5fVElNRU9VVABORVRXT1JLX1JFQURfVElNRU9VVABQT1NUAE1JU0RJUkVDVEVEX1JFUVVFU1QAQ0xJRU5UX0NMT1NFRF9SRVFVRVNUAENMSUVOVF9DTE9TRURfTE9BRF9CQUxBTkNFRF9SRVFVRVNUAEJBRF9SRVFVRVNUAEhUVFBfUkVRVUVTVF9TRU5UX1RPX0hUVFBTX1BPUlQAUkVQT1JUAElNX0FfVEVBUE9UAFJFU0VUX0NPTlRFTlQATk9fQ09OVEVOVABQQVJUSUFMX0NPTlRFTlQASFBFX0lOVkFMSURfQ09OU1RBTlQASFBFX0NCX1JFU0VUAEdFVABIUEVfU1RSSUNUAENPTkZMSUNUAFRFTVBPUkFSWV9SRURJUkVDVABQRVJNQU5FTlRfUkVESVJFQ1QAQ09OTkVDVABNVUxUSV9TVEFUVVMASFBFX0lOVkFMSURfU1RBVFVTAFRPT19NQU5ZX1JFUVVFU1RTAEVBUkxZX0hJTlRTAFVOQVZBSUxBQkxFX0ZPUl9MRUdBTF9SRUFTT05TAE9QVElPTlMAU1dJVENISU5HX1BST1RPQ09MUwBWQVJJQU5UX0FMU09fTkVHT1RJQVRFUwBNVUxUSVBMRV9DSE9JQ0VTAElOVEVSTkFMX1NFUlZFUl9FUlJPUgBXRUJfU0VSVkVSX1VOS05PV05fRVJST1IAUkFJTEdVTl9FUlJPUgBJREVOVElUWV9QUk9WSURFUl9BVVRIRU5USUNBVElPTl9FUlJPUgBTU0xfQ0VSVElGSUNBVEVfRVJST1IASU5WQUxJRF9YX0ZPUldBUkRFRF9GT1IAU0VUX1BBUkFNRVRFUgBHRVRfUEFSQU1FVEVSAEhQRV9VU0VSAFNFRV9PVEhFUgBIUEVfQ0JfQ0hVTktfSEVBREVSAE1LQ0FMRU5EQVIAU0VUVVAAV0VCX1NFUlZFUl9JU19ET1dOAFRFQVJET1dOAEhQRV9DTE9TRURfQ09OTkVDVElPTgBIRVVSSVNUSUNfRVhQSVJBVElPTgBESVNDT05ORUNURURfT1BFUkFUSU9OAE5PTl9BVVRIT1JJVEFUSVZFX0lORk9STUFUSU9OAEhQRV9JTlZBTElEX1ZFUlNJT04ASFBFX0NCX01FU1NBR0VfQkVHSU4AU0lURV9JU19GUk9aRU4ASFBFX0lOVkFMSURfSEVBREVSX1RPS0VOAElOVkFMSURfVE9LRU4ARk9SQklEREVOAEVOSEFOQ0VfWU9VUl9DQUxNAEhQRV9JTlZBTElEX1VSTABCTE9DS0VEX0JZX1BBUkVOVEFMX0NPTlRST0wATUtDT0wAQUNMAEhQRV9JTlRFUk5BTABSRVFVRVNUX0hFQURFUl9GSUVMRFNfVE9PX0xBUkdFX1VOT0ZGSUNJQUwASFBFX09LAFVOTElOSwBVTkxPQ0sAUFJJAFJFVFJZX1dJVEgASFBFX0lOVkFMSURfQ09OVEVOVF9MRU5HVEgASFBFX1VORVhQRUNURURfQ09OVEVOVF9MRU5HVEgARkxVU0gAUFJPUFBBVENIAE0tU0VBUkNIAFVSSV9UT09fTE9ORwBQUk9DRVNTSU5HAE1JU0NFTExBTkVPVVNfUEVSU0lTVEVOVF9XQVJOSU5HAE1JU0NFTExBTkVPVVNfV0FSTklORwBIUEVfSU5WQUxJRF9UUkFOU0ZFUl9FTkNPRElORwBFeHBlY3RlZCBDUkxGAEhQRV9JTlZBTElEX0NIVU5LX1NJWkUATU9WRQBDT05USU5VRQBIUEVfQ0JfU1RBVFVTX0NPTVBMRVRFAEhQRV9DQl9IRUFERVJTX0NPTVBMRVRFAEhQRV9DQl9WRVJTSU9OX0NPTVBMRVRFAEhQRV9DQl9VUkxfQ09NUExFVEUASFBFX0NCX0NIVU5LX0NPTVBMRVRFAEhQRV9DQl9IRUFERVJfVkFMVUVfQ09NUExFVEUASFBFX0NCX0NIVU5LX0VYVEVOU0lPTl9WQUxVRV9DT01QTEVURQBIUEVfQ0JfQ0hVTktfRVhURU5TSU9OX05BTUVfQ09NUExFVEUASFBFX0NCX01FU1NBR0VfQ09NUExFVEUASFBFX0NCX01FVEhPRF9DT01QTEVURQBIUEVfQ0JfSEVBREVSX0ZJRUxEX0NPTVBMRVRFAERFTEVURQBIUEVfSU5WQUxJRF9FT0ZfU1RBVEUASU5WQUxJRF9TU0xfQ0VSVElGSUNBVEUAUEFVU0UATk9fUkVTUE9OU0UAVU5TVVBQT1JURURfTUVESUFfVFlQRQBHT05FAE5PVF9BQ0NFUFRBQkxFAFNFUlZJQ0VfVU5BVkFJTEFCTEUAUkFOR0VfTk9UX1NBVElTRklBQkxFAE9SSUdJTl9JU19VTlJFQUNIQUJMRQBSRVNQT05TRV9JU19TVEFMRQBQVVJHRQBNRVJHRQBSRVFVRVNUX0hFQURFUl9GSUVMRFNfVE9PX0xBUkdFAFJFUVVFU1RfSEVBREVSX1RPT19MQVJHRQBQQVlMT0FEX1RPT19MQVJHRQBJTlNVRkZJQ0lFTlRfU1RPUkFHRQBIUEVfUEFVU0VEX1VQR1JBREUASFBFX1BBVVNFRF9IMl9VUEdSQURFAFNPVVJDRQBBTk5PVU5DRQBUUkFDRQBIUEVfVU5FWFBFQ1RFRF9TUEFDRQBERVNDUklCRQBVTlNVQlNDUklCRQBSRUNPUkQASFBFX0lOVkFMSURfTUVUSE9EAE5PVF9GT1VORABQUk9QRklORABVTkJJTkQAUkVCSU5EAFVOQVVUSE9SSVpFRABNRVRIT0RfTk9UX0FMTE9XRUQASFRUUF9WRVJTSU9OX05PVF9TVVBQT1JURUQAQUxSRUFEWV9SRVBPUlRFRABBQ0NFUFRFRABOT1RfSU1QTEVNRU5URUQATE9PUF9ERVRFQ1RFRABIUEVfQ1JfRVhQRUNURUQASFBFX0xGX0VYUEVDVEVEAENSRUFURUQASU1fVVNFRABIUEVfUEFVU0VEAFRJTUVPVVRfT0NDVVJFRABQQVlNRU5UX1JFUVVJUkVEAFBSRUNPTkRJVElPTl9SRVFVSVJFRABQUk9YWV9BVVRIRU5USUNBVElPTl9SRVFVSVJFRABORVRXT1JLX0FVVEhFTlRJQ0FUSU9OX1JFUVVJUkVEAExFTkdUSF9SRVFVSVJFRABTU0xfQ0VSVElGSUNBVEVfUkVRVUlSRUQAVVBHUkFERV9SRVFVSVJFRABQQUdFX0VYUElSRUQAUFJFQ09ORElUSU9OX0ZBSUxFRABFWFBFQ1RBVElPTl9GQUlMRUQAUkVWQUxJREFUSU9OX0ZBSUxFRABTU0xfSEFORFNIQUtFX0ZBSUxFRABMT0NLRUQAVFJBTlNGT1JNQVRJT05fQVBQTElFRABOT1RfTU9ESUZJRUQATk9UX0VYVEVOREVEAEJBTkRXSURUSF9MSU1JVF9FWENFRURFRABTSVRFX0lTX09WRVJMT0FERUQASEVBRABFeHBlY3RlZCBIVFRQLwAAXhMAACYTAAAwEAAA8BcAAJ0TAAAVEgAAORcAAPASAAAKEAAAdRIAAK0SAACCEwAATxQAAH8QAACgFQAAIxQAAIkSAACLFAAATRUAANQRAADPFAAAEBgAAMkWAADcFgAAwREAAOAXAAC7FAAAdBQAAHwVAADlFAAACBcAAB8QAABlFQAAoxQAACgVAAACFQAAmRUAACwQAACLGQAATw8AANQOAABqEAAAzhAAAAIXAACJDgAAbhMAABwTAABmFAAAVhcAAMETAADNEwAAbBMAAGgXAABmFwAAXxcAACITAADODwAAaQ4AANgOAABjFgAAyxMAAKoOAAAoFwAAJhcAAMUTAABdFgAA6BEAAGcTAABlEwAA8hYAAHMTAAAdFwAA+RYAAPMRAADPDgAAzhUAAAwSAACzEQAApREAAGEQAAAyFwAAuxMAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQIBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAIDAgICAgIAAAICAAICAAICAgICAgICAgIABAAAAAAAAgICAgICAgICAgICAgICAgICAgICAgICAgIAAAACAgICAgICAgICAgICAgICAgICAgICAgICAgICAgACAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAACAAICAgICAAACAgACAgACAgICAgICAgICAAMABAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAAgACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbG9zZWVlcC1hbGl2ZQAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQIBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBY2h1bmtlZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEAAQEBAQEAAAEBAAEBAAEBAQEBAQEBAQEAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABlY3Rpb25lbnQtbGVuZ3Rob25yb3h5LWNvbm5lY3Rpb24AAAAAAAAAAAAAAAAAAAByYW5zZmVyLWVuY29kaW5ncGdyYWRlDQoNCg0KU00NCg0KVFRQL0NFL1RTUC8AAAAAAAAAAAAAAAABAgABAwAAAAAAAAAAAAAAAAAAAAAAAAQBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAQIAAQMAAAAAAAAAAAAAAAAAAAAAAAAEAQEFAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAEAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAQAAAgAAAAAAAAAAAAAAAAAAAAAAAAMEAAAEBAQEBAQEBAQEBAUEBAQEBAQEBAQEBAQABAAGBwQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEAAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAEAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAADAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwAAAAAAAAMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAABAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAIAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAAAAAAAADAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABOT1VOQ0VFQ0tPVVRORUNURVRFQ1JJQkVMVVNIRVRFQURTRUFSQ0hSR0VDVElWSVRZTEVOREFSVkVPVElGWVBUSU9OU0NIU0VBWVNUQVRDSEdFT1JESVJFQ1RPUlRSQ0hQQVJBTUVURVJVUkNFQlNDUklCRUFSRE9XTkFDRUlORE5LQ0tVQlNDUklCRUhUVFAvQURUUC8='\n", "module.exports = 'AGFzbQEAAAABMAhgAX8Bf2ADf39/AX9gBH9/f38Bf2AAAGADf39/AGABfwBgAn9/AGAGf39/f39/AALLAQgDZW52GHdhc21fb25faGVhZGVyc19jb21wbGV0ZQACA2VudhV3YXNtX29uX21lc3NhZ2VfYmVnaW4AAANlbnYLd2FzbV9vbl91cmwAAQNlbnYOd2FzbV9vbl9zdGF0dXMAAQNlbnYUd2FzbV9vbl9oZWFkZXJfZmllbGQAAQNlbnYUd2FzbV9vbl9oZWFkZXJfdmFsdWUAAQNlbnYMd2FzbV9vbl9ib2R5AAEDZW52GHdhc21fb25fbWVzc2FnZV9jb21wbGV0ZQAAA0ZFAwMEAAAFAAAAAAAABQEFAAUFBQAABgAAAAAGBgYGAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAAABAQcAAAUFAwABBAUBcAESEgUDAQACBggBfwFBgNQECwfRBSIGbWVtb3J5AgALX2luaXRpYWxpemUACRlfX2luZGlyZWN0X2Z1bmN0aW9uX3RhYmxlAQALbGxodHRwX2luaXQAChhsbGh0dHBfc2hvdWxkX2tlZXBfYWxpdmUAQQxsbGh0dHBfYWxsb2MADAZtYWxsb2MARgtsbGh0dHBfZnJlZQANBGZyZWUASA9sbGh0dHBfZ2V0X3R5cGUADhVsbGh0dHBfZ2V0X2h0dHBfbWFqb3IADxVsbGh0dHBfZ2V0X2h0dHBfbWlub3IAEBFsbGh0dHBfZ2V0X21ldGhvZAARFmxsaHR0cF9nZXRfc3RhdHVzX2NvZGUAEhJsbGh0dHBfZ2V0X3VwZ3JhZGUAEwxsbGh0dHBfcmVzZXQAFA5sbGh0dHBfZXhlY3V0ZQAVFGxsaHR0cF9zZXR0aW5nc19pbml0ABYNbGxodHRwX2ZpbmlzaAAXDGxsaHR0cF9wYXVzZQAYDWxsaHR0cF9yZXN1bWUAGRtsbGh0dHBfcmVzdW1lX2FmdGVyX3VwZ3JhZGUAGhBsbGh0dHBfZ2V0X2Vycm5vABsXbGxodHRwX2dldF9lcnJvcl9yZWFzb24AHBdsbGh0dHBfc2V0X2Vycm9yX3JlYXNvbgAdFGxsaHR0cF9nZXRfZXJyb3JfcG9zAB4RbGxodHRwX2Vycm5vX25hbWUAHxJsbGh0dHBfbWV0aG9kX25hbWUAIBJs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IAH9CwMAIABBMGogAf0LAwAgAEEgaiAB/QsDACAAQd0BNgIcQQALewEBfwJAIAAoAgwiAw0AAkAgACgCBEUNACAAIAE2AgQLAkAgACABIAIQxICAgAAiAw0AIAAoAgwPCyAAIAM2AhxBACEDIAAoAgQiAUUNACAAIAEgAiAAKAIIEYGAgIAAACIBRQ0AIAAgAjYCFCAAIAE2AgwgASEDCyADC+TzAQMOfwN+BH8jgICAgABBEGsiAySAgICAACABIQQgASEFIAEhBiABIQcgASEIIAEhCSABIQogASELIAEhDCABIQ0gASEOIAEhDwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCAAKAIcIhBBf2oO3QHaAQHZAQIDBAUGBwgJCgsMDQ7YAQ8Q1wEREtYBExQVFhcYGRob4AHfARwdHtUBHyAhIiMkJdQBJicoKSorLNMB0gEtLtEB0AEvMDEyMzQ1Njc4OTo7PD0+P0BBQkNERUbbAUdISUrPAc4BS80BTMwBTU5PUFFSU1RVVldYWVpbXF1eX2BhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ent8fX5/gAGBAYIBgwGEAYUBhgGHAYgBiQGKAYsBjAGNAY4BjwGQAZEB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QAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIBAOxwEAAQID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YWNrIGVycm9yAGBvbl9jaHVua19leHRlbnNpb25fdmFsdWVgIGNhbGxiYWNrIGVycm9yAGBvbl9zdGF0dXNfY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl92ZXJzaW9uX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fdXJsX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fY2h1bmtfY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl9oZWFkZXJfdmFsdWVfY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl9tZXNzYWdlX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fbWV0aG9kX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25faGVhZGVyX2ZpZWxkX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fY2h1bmtfZXh0ZW5zaW9uX25hbWVgIGNhbGxiYWNrIGVycm9yAFVuZXhwZWN0ZWQgY2hhciBpbiB1cmwgc2VydmVyAEludmFsaWQgaGVhZGVyIHZhbHVlIGNoYXIASW52YWxpZCBoZWFkZXIgZmllbGQgY2hhcgBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX3ZlcnNpb24ASW52YWxpZCBtaW5vciB2ZXJzaW9uAEludmFsaWQgbWFqb3IgdmVyc2lvbgBFeHBlY3RlZCBzcGFjZSBhZnRlciB2ZXJzaW9uAEV4cGVjdGVkIENSTEYgYWZ0ZXIgdmVyc2lvbgBJbnZhbGlkIEhUVFAgdmVyc2lvbgBJbnZhbGlkIGhlYWRlciB0b2tlbgBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX3VybABJbnZhbGlkIGNoYXJhY3RlcnMgaW4gdXJsAFVuZXhwZWN0ZWQgc3RhcnQgY2hhciBpbiB1cmwARG91YmxlIEAgaW4gdXJsAEVtcHR5IENvbnRlbnQtTGVuZ3RoAEludmFsaWQgY2hhcmFjdGVyIGluIENvbnRlbnQtTGVuZ3RoAER1cGxpY2F0ZSBDb250ZW50LUxlbmd0aABJbnZhbGlkIGNoYXIgaW4gdXJsIHBhdGgAQ29udGVudC1MZW5ndGggY2FuJ3QgYmUgcHJlc2VudCB3aXRoIFRyYW5zZmVyLUVuY29kaW5nAEludmFsaWQgY2hhcmFjdGVyIGluIGNodW5rIHNpemUAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9oZWFkZXJfdmFsdWUAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9jaHVua19leHRlbnNpb25fdmFsdWUASW52YWxpZCBjaGFyYWN0ZXIgaW4gY2h1bmsgZXh0ZW5zaW9ucyB2YWx1ZQBNaXNzaW5nIGV4cGVjdGVkIExGIGFmdGVyIGhlYWRlciB2YWx1ZQBJbnZhbGlkIGBUcmFuc2Zlci1FbmNvZGluZ2AgaGVhZGVyIHZhbHVlAEludmFsaWQgY2hhcmFjdGVyIGluIGNodW5rIGV4dGVuc2lvbnMgcXVvdGUgdmFsdWUASW52YWxpZCBjaGFyYWN0ZXIgaW4gY2h1bmsgZXh0ZW5zaW9ucyBxdW90ZWQgdmFsdWUAUGF1c2VkIGJ5IG9uX2hlYWRlcnNfY29tcGxldGUASW52YWxpZCBFT0Ygc3RhdGUAb25fcmVzZXQgcGF1c2UAb25fY2h1bmtfaGVhZGVyIHBhdXNlAG9uX21lc3NhZ2VfYmVnaW4gcGF1c2UAb25fY2h1bmtfZXh0ZW5zaW9uX3ZhbHVlIHBhdXNlAG9uX3N0YXR1c19jb21wbGV0ZSBwYXVzZQBvbl92ZXJzaW9uX2NvbXBsZXRlIHBhdXNlAG9uX3VybF9jb21wbGV0ZSBwYXVzZQBvbl9jaHVua19jb21wbGV0ZSBwYXVzZQBvbl9oZWFkZXJfdmFsdWVfY29tcGxldGUgcGF1c2UAb25fbWVzc2FnZV9jb21wbGV0ZSBwYXVzZQBvbl9tZXRob2RfY29tcGxldGUgcGF1c2UAb25faGVhZGVyX2ZpZWxkX2NvbXBsZXRlIHBhdXNlAG9uX2NodW5rX2V4dGVuc2lvbl9uYW1lIHBhdXNlAFVuZXhwZWN0ZWQgc3BhY2UgYWZ0ZXIgc3RhcnQgbGluZQBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX2NodW5rX2V4dGVuc2lvbl9uYW1lAEludmFsaWQgY2hhcmFjdGVyIGluIGNodW5rIGV4dGVuc2lvbnMgbmFtZQBQYXVzZSBvbiBDT05ORUNUL1VwZ3JhZGUAUGF1c2Ugb24gUFJJL1VwZ3JhZGUARXhwZWN0ZWQgSFRUUC8yIENvbm5lY3Rpb24gUHJlZmFjZQBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX21ldGhvZABFeHBlY3RlZCBzcGFjZSBhZnRlciBtZXRob2QAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9oZWFkZXJfZmllbGQAUGF1c2VkAEludmFsaWQgd29yZCBlbmNvdW50ZXJlZABJbnZhbGlkIG1ldGhvZCBlbmNvdW50ZXJlZABVbmV4cGVjdGVkIGNoYXIgaW4gdXJsIHNjaGVtYQBSZXF1ZXN0IGhhcyBpbnZhbGlkIGBUcmFuc2Zlci1FbmNvZGluZ2AAU1dJVENIX1BST1hZAFVTRV9QUk9YWQBNS0FDVElWSVRZAFVOUFJPQ0VTU0FCTEVfRU5USVRZAENPUFkATU9WRURfUEVSTUFORU5UTFkAVE9PX0VBUkxZAE5PVElGWQBGQUlMRURfREVQRU5ERU5DWQBCQURfR0FURVdBWQBQTEFZAFBVVABDSEVDS09VVABHQVRFV0FZX1RJTUVPVVQAUkVRVUVTVF9USU1FT1VUAE5FVFdPUktfQ09OTkVDVF9USU1FT1VUAENPTk5FQ1RJT05fVElNRU9VVABMT0dJTl9USU1FT1VUAE5FVFdPUktfUkVBRF9USU1FT1VUAFBPU1QATUlTRElSRUNURURfUkVRVUVTVABDTElFTlRfQ0xPU0VEX1JFUVVFU1QAQ0xJRU5UX0NMT1NFRF9MT0FEX0JBTEFOQ0VEX1JFUVVFU1QAQkFEX1JFUVVFU1QASFRUUF9SRVFVRVNUX1NFTlRfVE9fSFRUUFNfUE9SVABSRVBPUlQASU1fQV9URUFQT1QAUkVTRVRfQ09OVEVOVABOT19DT05URU5UAFBBUlRJQUxfQ09OVEVOVABIUEVfSU5WQUxJRF9DT05TVEFOVABIUEVfQ0JfUkVTRVQAR0VUAEhQRV9TVFJJQ1QAQ09ORkxJQ1QAVEVNUE9SQVJZX1JFRElSRUNUAFBFUk1BTkVOVF9SRURJUkVDVABDT05ORUNUAE1VTFRJX1NUQVRVUwBIUEVfSU5WQUxJRF9TVEFUVVMAVE9PX01BTllfUkVRVUVTVFMARUFSTFlfSElOVFMAVU5BVkFJTEFCTEVfRk9SX0xFR0FMX1JFQVNPTlMAT1BUSU9OUwBTV0lUQ0hJTkdfUFJPVE9DT0xTAFZBUklBTlRfQUxTT19ORUdPVElBVEVTAE1VTFRJUExFX0NIT0lDRVMASU5URVJOQUxfU0VSVkVSX0VSUk9SAFdFQl9TRVJWRVJfVU5LTk9XTl9FUlJPUgBSQUlMR1VOX0VSUk9SAElERU5USVRZX1BST1ZJREVSX0FVVEhFTlRJQ0FUSU9OX0VSUk9SAFNTTF9DRVJUSUZJQ0FURV9FUlJPUgBJTlZBTElEX1hfRk9SV0FSREVEX0ZPUgBTRVRfUEFSQU1FVEVSAEdFVF9QQVJBTUVURVIASFBFX1VTRVIAU0VFX09USEVSAEhQRV9DQl9DSFVOS19IRUFERVIATUtDQUxFTkRBUgBTRVRVUABXRUJfU0VSVkVSX0lTX0RPV04AVEVBUkRPV04ASFBFX0NMT1NFRF9DT05ORUNUSU9OAEhFVVJJU1RJQ19FWFBJUkFUSU9OAERJU0NPTk5FQ1RFRF9PUEVSQVRJT04ATk9OX0FVVEhPUklUQVRJVkVfSU5GT1JNQVRJT04ASFBFX0lOVkFMSURfVkVSU0lPTgBIUEVfQ0JfTUVTU0FHRV9CRUdJTgBTSVRFX0lTX0ZST1pFTgBIUEVfSU5WQUxJRF9IRUFERVJfVE9LRU4ASU5WQUxJRF9UT0tFTgBGT1JCSURERU4ARU5IQU5DRV9ZT1VSX0NBTE0ASFBFX0lOVkFMSURfVVJMAEJMT0NLRURfQllfUEFSRU5UQUxfQ09OVFJPTABNS0NPTABBQ0wASFBFX0lOVEVSTkFMAFJFUVVFU1RfSEVBREVSX0ZJRUxEU19UT09fTEFSR0VfVU5PRkZJQ0lBTABIUEVfT0sAVU5MSU5LAFVOTE9DSwBQUkkAUkVUUllfV0lUSABIUEVfSU5WQUxJRF9DT05URU5UX0xFTkdUSABIUEVfVU5FWFBFQ1RFRF9DT05URU5UX0xFTkdUSABGTFVTSABQUk9QUEFUQ0gATS1TRUFSQ0gAVVJJX1RPT19MT05HAFBST0NFU1NJTkcATUlTQ0VMTEFORU9VU19QRVJTSVNURU5UX1dBUk5JTkcATUlTQ0VMTEFORU9VU19XQVJOSU5HAEhQRV9JTlZBTElEX1RSQU5TRkVSX0VOQ09ESU5HAEV4cGVjdGVkIENSTEYASFBFX0lOVkFMSURfQ0hVTktfU0laRQBNT1ZFAENPTlRJTlVFAEhQRV9DQl9TVEFUVVNfQ09NUExFVEUASFBFX0NCX0hFQURFUlNfQ09NUExFVEUASFBFX0NCX1ZFUlNJT05fQ09NUExFVEUASFBFX0NCX1VSTF9DT01QTEVURQBIUEVfQ0JfQ0hVTktfQ09NUExFVEUASFBFX0NCX0hFQURFUl9WQUxVRV9DT01QTEVURQBIUEVfQ0JfQ0hVTktfRVhURU5TSU9OX1ZBTFVFX0NPTVBMRVRFAEhQRV9DQl9DSFVOS19FWFRFTlNJT05fTkFNRV9DT01QTEVURQBIUEVfQ0JfTUVTU0FHRV9DT01QTEVURQBIUEVfQ0JfTUVUSE9EX0NPTVBMRVRFAEhQRV9DQl9IRUFERVJfRklFTERfQ09NUExFVEUAREVMRVRFAEhQRV9JTlZBTElEX0VPRl9TVEFURQBJTlZBTElEX1NTTF9DRVJUSUZJQ0FURQBQQVVTRQBOT19SRVNQT05TRQBVTlNVUFBPUlRFRF9NRURJQV9UWVBFAEdPTkUATk9UX0FDQ0VQVEFCTEUAU0VSVklDRV9VTkFWQUlMQUJMRQBSQU5HRV9OT1RfU0FUSVNGSUFCTEUAT1JJR0lOX0lTX1VOUkVBQ0hBQkxFAFJFU1BPTlNFX0lTX1NUQUxFAFBVUkdFAE1FUkdFAFJFUVVFU1RfSEVBREVSX0ZJRUxEU19UT09fTEFSR0UAUkVRVUVTVF9IRUFERVJfVE9PX0xBUkdFAFBBWUxPQURfVE9PX0xBUkdFAElOU1VGRklDSUVOVF9TVE9SQUdFAEhQRV9QQVVTRURfVVBHUkFERQBIUEVfUEFVU0VEX0gyX1VQR1JBREUAU09VUkNFAEFOTk9VTkNFAFRSQUNFAEhQRV9VTkVYUEVDVEVEX1NQQUNFAERFU0NSSUJFAFVOU1VCU0NSSUJFAFJFQ09SRABIUEVfSU5WQUxJRF9NRVRIT0QATk9UX0ZPVU5EAFBST1BGSU5EAFVOQklORABSRUJJTkQAVU5BVVRIT1JJWkVEAE1FVEhPRF9OT1RfQUxMT1dFRABIVFRQX1ZFUlNJT05fTk9UX1NVUFBPUlRFRABBTFJFQURZX1JFUE9SVEVEAEFDQ0VQVEVEAE5PVF9JTVBMRU1FTlRFRABMT09QX0RFVEVDVEVEAEhQRV9DUl9FWFBFQ1RFRABIUEVfTEZfRVhQRUNURUQAQ1JFQVRFRABJTV9VU0VEAEhQRV9QQVVTRUQAVElNRU9VVF9PQ0NVUkVEAFBBWU1FTlRfUkVRVUlSRUQAUFJFQ09ORElUSU9OX1JFUVVJUkVEAFBST1hZX0FVVEhFTlRJQ0FUSU9OX1JFUVVJUkVEAE5FVFdPUktfQVVUSEVOVElDQVRJT05fUkVRVUlSRUQATEVOR1RIX1JFUVVJUkVEAFNTTF9DRVJUSUZJQ0FURV9SRVFVSVJFRABVUEdSQURFX1JFUVVJUkVEAFBBR0VfRVhQSVJFRABQUkVDT05ESVRJT05fRkFJTEVEAEVYUEVDVEFUSU9OX0ZBSUxFRABSRVZBTElEQVRJT05fRkFJTEVEAFNTTF9IQU5EU0hBS0VfRkFJTEVEAExPQ0tFRABUUkFOU0ZPUk1BVElPTl9BUFBMSUVEAE5PVF9NT0RJRklFRABOT1RfRVhURU5ERUQAQkFORFdJRFRIX0xJTUlUX0VYQ0VFREVEAFNJVEVfSVNfT1ZFUkxPQURFRABIRUFEAEV4cGVjdGVkIEhUVFAvAABeEwAAJhMAADAQAADwFwAAnRMAABUSAAA5FwAA8BIAAAoQAAB1EgAArRIAAIITAABPFAAAfxAAAKAVAAAjFAAAiRIAAIsUAABNFQAA1BEAAM8UAAAQGAAAyRYAANwWAADBEQAA4BcAALsUAAB0FAAAfBUAAOUUAAAIFwAAHxAAAGUVAACjFAAAKBUAAAIVAACZFQAALBAAAIsZAABPDwAA1A4AAGoQAADOEAAAAhcAAIkOAABuEwAAHBMAAGYUAABWFwAAwRMAAM0TAABsEwAAaBcAAGYXAABfFwAAIhMAAM4PAABpDgAA2A4AAGMWAADLEwAAqg4AACgXAAAmFwAAxRMAAF0WAADoEQAAZxMAAGUTAADyFgAAcxMAAB0XAAD5FgAA8xEAAM8OAADOFQAADBIAALMRAAClEQAAYRAAADIXAAC7EwAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAgMCAgICAgAAAgIAAgIAAgICAgICAgICAgAEAAAAAAACAgICAgICAgICAgICAgICAgICAgICAgICAgAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAIAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAIAAgICAgIAAAICAAICAAICAgICAgICAgIAAwAEAAAAAgICAgICAgICAgICAgICAgICAgICAgICAgIAAAACAgICAgICAgICAgICAgICAgICAgICAgICAgICAgACAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABsb3NlZWVwLWFsaXZlAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQFjaHVua2VkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQABAQEBAQAAAQEAAQEAAQEBAQEBAQEBAQAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGVjdGlvbmVudC1sZW5ndGhvbnJveHktY29ubmVjdGlvbgAAAAAAAAAAAAAAAAAAAHJhbnNmZXItZW5jb2RpbmdwZ3JhZGUNCg0KDQpTTQ0KDQpUVFAvQ0UvVFNQLwAAAAAAAAAAAAAAAAECAAEDAAAAAAAAAAAAAAAAAAAAAAAABAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAABAgABAwAAAAAAAAAAAAAAAAAAAAAAAAQBAQUBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAQAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAABAAACAAAAAAAAAAAAAAAAAAAAAAAAAwQAAAQEBAQEBAQEBAQEBQQEBAQEBAQEBAQEBAAEAAYHBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQABAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAQAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAAAAAAAAAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAEAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAgAAAAACAAAAAAAAAAAAAAAAAAAAAAADAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwAAAAAAAAMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAE5PVU5DRUVDS09VVE5FQ1RFVEVDUklCRUxVU0hFVEVBRFNFQVJDSFJHRUNUSVZJVFlMRU5EQVJWRU9USUZZUFRJT05TQ0hTRUFZU1RBVENIR0VPUkRJUkVDVE9SVFJDSFBBUkFNRVRFUlVSQ0VCU0NSSUJFQVJET1dOQUNFSU5ETktDS1VCU0NSSUJFSFRUUC9BRFRQLw=='\n", "// @ts-check\n\n'use strict'\n\n/* global WebAssembly */\n\nconst assert = require('assert')\nconst net = require('net')\nconst http = require('http')\nconst { pipeline } = require('stream')\nconst util = require('./core/util')\nconst timers = require('./timers')\nconst Request = require('./core/request')\nconst DispatcherBase = require('./dispatcher-base')\nconst {\n RequestContentLengthMismatchError,\n ResponseContentLengthMismatchError,\n InvalidArgumentError,\n RequestAbortedError,\n HeadersTimeoutError,\n HeadersOverflowError,\n SocketError,\n InformationalError,\n BodyTimeoutError,\n HTTPParserError,\n ResponseExceededMaxSizeError,\n ClientDestroyedError\n} = require('./core/errors')\nconst buildConnector = require('./core/connect')\nconst {\n kUrl,\n kReset,\n kServerName,\n kClient,\n kBusy,\n kParser,\n kConnect,\n kBlocking,\n kResuming,\n kRunning,\n kPending,\n kSize,\n kWriting,\n kQueue,\n kConnected,\n kConnecting,\n kNeedDrain,\n kNoRef,\n kKeepAliveDefaultTimeout,\n kHostHeader,\n kPendingIdx,\n kRunningIdx,\n kError,\n kPipelining,\n kSocket,\n kKeepAliveTimeoutValue,\n kMaxHeadersSize,\n kKeepAliveMaxTimeout,\n kKeepAliveTimeoutThreshold,\n kHeadersTimeout,\n kBodyTimeout,\n kStrictContentLength,\n kConnector,\n kMaxRedirections,\n kMaxRequests,\n kCounter,\n kClose,\n kDestroy,\n kDispatch,\n kInterceptors,\n kLocalAddress,\n kMaxResponseSize,\n kHTTPConnVersion,\n // HTTP2\n kHost,\n kHTTP2Session,\n kHTTP2SessionState,\n kHTTP2BuildRequest,\n kHTTP2CopyHeaders,\n kHTTP1BuildRequest\n} = require('./core/symbols')\n\n/** @type {import('http2')} */\nlet http2\ntry {\n http2 = require('http2')\n} catch {\n // @ts-ignore\n http2 = { constants: {} }\n}\n\nconst {\n constants: {\n HTTP2_HEADER_AUTHORITY,\n HTTP2_HEADER_METHOD,\n HTTP2_HEADER_PATH,\n HTTP2_HEADER_SCHEME,\n HTTP2_HEADER_CONTENT_LENGTH,\n HTTP2_HEADER_EXPECT,\n HTTP2_HEADER_STATUS\n }\n} = http2\n\n// Experimental\nlet h2ExperimentalWarned = false\n\nconst FastBuffer = Buffer[Symbol.species]\n\nconst kClosedResolve = Symbol('kClosedResolve')\n\nconst channels = {}\n\ntry {\n const diagnosticsChannel = require('diagnostics_channel')\n channels.sendHeaders = diagnosticsChannel.channel('undici:client:sendHeaders')\n channels.beforeConnect = diagnosticsChannel.channel('undici:client:beforeConnect')\n channels.connectError = diagnosticsChannel.channel('undici:client:connectError')\n channels.connected = diagnosticsChannel.channel('undici:client:connected')\n} catch {\n channels.sendHeaders = { hasSubscribers: false }\n channels.beforeConnect = { hasSubscribers: false }\n channels.connectError = { hasSubscribers: false }\n channels.connected = { hasSubscribers: false }\n}\n\n/**\n * @type {import('../types/client').default}\n */\nclass Client extends DispatcherBase {\n /**\n *\n * @param {string|URL} url\n * @param {import('../types/client').Client.Options} options\n */\n constructor (url, {\n interceptors,\n maxHeaderSize,\n headersTimeout,\n socketTimeout,\n requestTimeout,\n connectTimeout,\n bodyTimeout,\n idleTimeout,\n keepAlive,\n keepAliveTimeout,\n maxKeepAliveTimeout,\n keepAliveMaxTimeout,\n keepAliveTimeoutThreshold,\n socketPath,\n pipelining,\n tls,\n strictContentLength,\n maxCachedSessions,\n maxRedirections,\n connect,\n maxRequestsPerClient,\n localAddress,\n maxResponseSize,\n autoSelectFamily,\n autoSelectFamilyAttemptTimeout,\n // h2\n allowH2,\n maxConcurrentStreams\n } = {}) {\n super()\n\n if (keepAlive !== undefined) {\n throw new InvalidArgumentError('unsupported keepAlive, use pipelining=0 instead')\n }\n\n if (socketTimeout !== undefined) {\n throw new InvalidArgumentError('unsupported socketTimeout, use headersTimeout & bodyTimeout instead')\n }\n\n if (requestTimeout !== undefined) {\n throw new InvalidArgumentError('unsupported requestTimeout, use headersTimeout & bodyTimeout instead')\n }\n\n if (idleTimeout !== undefined) {\n throw new InvalidArgumentError('unsupported idleTimeout, use keepAliveTimeout instead')\n }\n\n if (maxKeepAliveTimeout !== undefined) {\n throw new InvalidArgumentError('unsupported maxKeepAliveTimeout, use keepAliveMaxTimeout instead')\n }\n\n if (maxHeaderSize != null && !Number.isFinite(maxHeaderSize)) {\n throw new InvalidArgumentError('invalid maxHeaderSize')\n }\n\n if (socketPath != null && typeof socketPath !== 'string') {\n throw new InvalidArgumentError('invalid socketPath')\n }\n\n if (connectTimeout != null && (!Number.isFinite(connectTimeout) || connectTimeout < 0)) {\n throw new InvalidArgumentError('invalid connectTimeout')\n }\n\n if (keepAliveTimeout != null && (!Number.isFinite(keepAliveTimeout) || keepAliveTimeout <= 0)) {\n throw new InvalidArgumentError('invalid keepAliveTimeout')\n }\n\n if (keepAliveMaxTimeout != null && (!Number.isFinite(keepAliveMaxTimeout) || keepAliveMaxTimeout <= 0)) {\n throw new InvalidArgumentError('invalid keepAliveMaxTimeout')\n }\n\n if (keepAliveTimeoutThreshold != null && !Number.isFinite(keepAliveTimeoutThreshold)) {\n throw new InvalidArgumentError('invalid keepAliveTimeoutThreshold')\n }\n\n if (headersTimeout != null && (!Number.isInteger(headersTimeout) || headersTimeout < 0)) {\n throw new InvalidArgumentError('headersTimeout must be a positive integer or zero')\n }\n\n if (bodyTimeout != null && (!Number.isInteger(bodyTimeout) || bodyTimeout < 0)) {\n throw new InvalidArgumentError('bodyTimeout must be a positive integer or zero')\n }\n\n if (connect != null && typeof connect !== 'function' && typeof connect !== 'object') {\n throw new InvalidArgumentError('connect must be a function or an object')\n }\n\n if (maxRedirections != null && (!Number.isInteger(maxRedirections) || maxRedirections < 0)) {\n throw new InvalidArgumentError('maxRedirections must be a positive number')\n }\n\n if (maxRequestsPerClient != null && (!Number.isInteger(maxRequestsPerClient) || maxRequestsPerClient < 0)) {\n throw new InvalidArgumentError('maxRequestsPerClient must be a positive number')\n }\n\n if (localAddress != null && (typeof localAddress !== 'string' || net.isIP(localAddress) === 0)) {\n throw new InvalidArgumentError('localAddress must be valid string IP address')\n }\n\n if (maxResponseSize != null && (!Number.isInteger(maxResponseSize) || maxResponseSize < -1)) {\n throw new InvalidArgumentError('maxResponseSize must be a positive number')\n }\n\n if (\n autoSelectFamilyAttemptTimeout != null &&\n (!Number.isInteger(autoSelectFamilyAttemptTimeout) || autoSelectFamilyAttemptTimeout < -1)\n ) {\n throw new InvalidArgumentError('autoSelectFamilyAttemptTimeout must be a positive number')\n }\n\n // h2\n if (allowH2 != null && typeof allowH2 !== 'boolean') {\n throw new InvalidArgumentError('allowH2 must be a valid boolean value')\n }\n\n if (maxConcurrentStreams != null && (typeof maxConcurrentStreams !== 'number' || maxConcurrentStreams < 1)) {\n throw new InvalidArgumentError('maxConcurrentStreams must be a possitive integer, greater than 0')\n }\n\n if (typeof connect !== 'function') {\n connect = buildConnector({\n ...tls,\n maxCachedSessions,\n allowH2,\n socketPath,\n timeout: connectTimeout,\n ...(util.nodeHasAutoSelectFamily && autoSelectFamily ? { autoSelectFamily, autoSelectFamilyAttemptTimeout } : undefined),\n ...connect\n })\n }\n\n this[kInterceptors] = interceptors && interceptors.Client && Array.isArray(interceptors.Client)\n ? interceptors.Client\n : [createRedirectInterceptor({ maxRedirections })]\n this[kUrl] = util.parseOrigin(url)\n this[kConnector] = connect\n this[kSocket] = null\n this[kPipelining] = pipelining != null ? pipelining : 1\n this[kMaxHeadersSize] = maxHeaderSize || http.maxHeaderSize\n this[kKeepAliveDefaultTimeout] = keepAliveTimeout == null ? 4e3 : keepAliveTimeout\n this[kKeepAliveMaxTimeout] = keepAliveMaxTimeout == null ? 600e3 : keepAliveMaxTimeout\n this[kKeepAliveTimeoutThreshold] = keepAliveTimeoutThreshold == null ? 1e3 : keepAliveTimeoutThreshold\n this[kKeepAliveTimeoutValue] = this[kKeepAliveDefaultTimeout]\n this[kServerName] = null\n this[kLocalAddress] = localAddress != null ? localAddress : null\n this[kResuming] = 0 // 0, idle, 1, scheduled, 2 resuming\n this[kNeedDrain] = 0 // 0, idle, 1, scheduled, 2 resuming\n this[kHostHeader] = `host: ${this[kUrl].hostname}${this[kUrl].port ? `:${this[kUrl].port}` : ''}\\r\\n`\n this[kBodyTimeout] = bodyTimeout != null ? bodyTimeout : 300e3\n this[kHeadersTimeout] = headersTimeout != null ? headersTimeout : 300e3\n this[kStrictContentLength] = strictContentLength == null ? true : strictContentLength\n this[kMaxRedirections] = maxRedirections\n this[kMaxRequests] = maxRequestsPerClient\n this[kClosedResolve] = null\n this[kMaxResponseSize] = maxResponseSize > -1 ? maxResponseSize : -1\n this[kHTTPConnVersion] = 'h1'\n\n // HTTP/2\n this[kHTTP2Session] = null\n this[kHTTP2SessionState] = !allowH2\n ? null\n : {\n // streams: null, // Fixed queue of streams - For future support of `push`\n openStreams: 0, // Keep track of them to decide wether or not unref the session\n maxConcurrentStreams: maxConcurrentStreams != null ? maxConcurrentStreams : 100 // Max peerConcurrentStreams for a Node h2 server\n }\n this[kHost] = `${this[kUrl].hostname}${this[kUrl].port ? `:${this[kUrl].port}` : ''}`\n\n // kQueue is built up of 3 sections separated by\n // the kRunningIdx and kPendingIdx indices.\n // | complete | running | pending |\n // ^ kRunningIdx ^ kPendingIdx ^ kQueue.length\n // kRunningIdx points to the first running element.\n // kPendingIdx points to the first pending element.\n // This implements a fast queue with an amortized\n // time of O(1).\n\n this[kQueue] = []\n this[kRunningIdx] = 0\n this[kPendingIdx] = 0\n }\n\n get pipelining () {\n return this[kPipelining]\n }\n\n set pipelining (value) {\n this[kPipelining] = value\n resume(this, true)\n }\n\n get [kPending] () {\n return this[kQueue].length - this[kPendingIdx]\n }\n\n get [kRunning] () {\n return this[kPendingIdx] - this[kRunningIdx]\n }\n\n get [kSize] () {\n return this[kQueue].length - this[kRunningIdx]\n }\n\n get [kConnected] () {\n return !!this[kSocket] && !this[kConnecting] && !this[kSocket].destroyed\n }\n\n get [kBusy] () {\n const socket = this[kSocket]\n return (\n (socket && (socket[kReset] || socket[kWriting] || socket[kBlocking])) ||\n (this[kSize] >= (this[kPipelining] || 1)) ||\n this[kPending] > 0\n )\n }\n\n /* istanbul ignore: only used for test */\n [kConnect] (cb) {\n connect(this)\n this.once('connect', cb)\n }\n\n [kDispatch] (opts, handler) {\n const origin = opts.origin || this[kUrl].origin\n\n const request = this[kHTTPConnVersion] === 'h2'\n ? Request[kHTTP2BuildRequest](origin, opts, handler)\n : Request[kHTTP1BuildRequest](origin, opts, handler)\n\n this[kQueue].push(request)\n if (this[kResuming]) {\n // Do nothing.\n } else if (util.bodyLength(request.body) == null && util.isIterable(request.body)) {\n // Wait a tick in case stream/iterator is ended in the same tick.\n this[kResuming] = 1\n process.nextTick(resume, this)\n } else {\n resume(this, true)\n }\n\n if (this[kResuming] && this[kNeedDrain] !== 2 && this[kBusy]) {\n this[kNeedDrain] = 2\n }\n\n return this[kNeedDrain] < 2\n }\n\n async [kClose] () {\n // TODO: for H2 we need to gracefully flush the remaining enqueued\n // request and close each stream.\n return new Promise((resolve) => {\n if (!this[kSize]) {\n resolve(null)\n } else {\n this[kClosedResolve] = resolve\n }\n })\n }\n\n async [kDestroy] (err) {\n return new Promise((resolve) => {\n const requests = this[kQueue].splice(this[kPendingIdx])\n for (let i = 0; i < requests.length; i++) {\n const request = requests[i]\n errorRequest(this, request, err)\n }\n\n const callback = () => {\n if (this[kClosedResolve]) {\n // TODO (fix): Should we error here with ClientDestroyedError?\n this[kClosedResolve]()\n this[kClosedResolve] = null\n }\n resolve()\n }\n\n if (this[kHTTP2Session] != null) {\n util.destroy(this[kHTTP2Session], err)\n this[kHTTP2Session] = null\n this[kHTTP2SessionState] = null\n }\n\n if (!this[kSocket]) {\n queueMicrotask(callback)\n } else {\n util.destroy(this[kSocket].on('close', callback), err)\n }\n\n resume(this)\n })\n }\n}\n\nfunction onHttp2SessionError (err) {\n assert(err.code !== 'ERR_TLS_CERT_ALTNAME_INVALID')\n\n this[kSocket][kError] = err\n\n onError(this[kClient], err)\n}\n\nfunction onHttp2FrameError (type, code, id) {\n const err = new InformationalError(`HTTP/2: \"frameError\" received - type ${type}, code ${code}`)\n\n if (id === 0) {\n this[kSocket][kError] = err\n onError(this[kClient], err)\n }\n}\n\nfunction onHttp2SessionEnd () {\n util.destroy(this, new SocketError('other side closed'))\n util.destroy(this[kSocket], new SocketError('other side closed'))\n}\n\nfunction onHTTP2GoAway (code) {\n const client = this[kClient]\n const err = new InformationalError(`HTTP/2: \"GOAWAY\" frame received with code ${code}`)\n client[kSocket] = null\n client[kHTTP2Session] = null\n\n if (client.destroyed) {\n assert(this[kPending] === 0)\n\n // Fail entire queue.\n const requests = client[kQueue].splice(client[kRunningIdx])\n for (let i = 0; i < requests.length; i++) {\n const request = requests[i]\n errorRequest(this, request, err)\n }\n } else if (client[kRunning] > 0) {\n // Fail head of pipeline.\n const request = client[kQueue][client[kRunningIdx]]\n client[kQueue][client[kRunningIdx]++] = null\n\n errorRequest(client, request, err)\n }\n\n client[kPendingIdx] = client[kRunningIdx]\n\n assert(client[kRunning] === 0)\n\n client.emit('disconnect',\n client[kUrl],\n [client],\n err\n )\n\n resume(client)\n}\n\nconst constants = require('./llhttp/constants')\nconst createRedirectInterceptor = require('./interceptor/redirectInterceptor')\nconst EMPTY_BUF = Buffer.alloc(0)\n\nasync function lazyllhttp () {\n const llhttpWasmData = process.env.JEST_WORKER_ID ? require('./llhttp/llhttp-wasm.js') : undefined\n\n let mod\n try {\n mod = await WebAssembly.compile(Buffer.from(require('./llhttp/llhttp_simd-wasm.js'), 'base64'))\n } catch (e) {\n /* istanbul ignore next */\n\n // We could check if the error was caused by the simd option not\n // being enabled, but the occurring of this other error\n // * https://github.com/emscripten-core/emscripten/issues/11495\n // got me to remove that check to avoid breaking Node 12.\n mod = await WebAssembly.compile(Buffer.from(llhttpWasmData || require('./llhttp/llhttp-wasm.js'), 'base64'))\n }\n\n return await WebAssembly.instantiate(mod, {\n env: {\n /* eslint-disable camelcase */\n\n wasm_on_url: (p, at, len) => {\n /* istanbul ignore next */\n return 0\n },\n wasm_on_status: (p, at, len) => {\n assert.strictEqual(currentParser.ptr, p)\n const start = at - currentBufferPtr + currentBufferRef.byteOffset\n return currentParser.onStatus(new FastBuffer(currentBufferRef.buffer, start, len)) || 0\n },\n wasm_on_message_begin: (p) => {\n assert.strictEqual(currentParser.ptr, p)\n return currentParser.onMessageBegin() || 0\n },\n wasm_on_header_field: (p, at, len) => {\n assert.strictEqual(currentParser.ptr, p)\n const start = at - currentBufferPtr + currentBufferRef.byteOffset\n return currentParser.onHeaderField(new FastBuffer(currentBufferRef.buffer, start, len)) || 0\n },\n wasm_on_header_value: (p, at, len) => {\n assert.strictEqual(currentParser.ptr, p)\n const start = at - currentBufferPtr + currentBufferRef.byteOffset\n return currentParser.onHeaderValue(new FastBuffer(currentBufferRef.buffer, start, len)) || 0\n },\n wasm_on_headers_complete: (p, statusCode, upgrade, shouldKeepAlive) => {\n assert.strictEqual(currentParser.ptr, p)\n return currentParser.onHeadersComplete(statusCode, Boolean(upgrade), Boolean(shouldKeepAlive)) || 0\n },\n wasm_on_body: (p, at, len) => {\n assert.strictEqual(currentParser.ptr, p)\n const start = at - currentBufferPtr + currentBufferRef.byteOffset\n return currentParser.onBody(new FastBuffer(currentBufferRef.buffer, start, len)) || 0\n },\n wasm_on_message_complete: (p) => {\n assert.strictEqual(currentParser.ptr, p)\n return currentParser.onMessageComplete() || 0\n }\n\n /* eslint-enable camelcase */\n }\n })\n}\n\nlet llhttpInstance = null\nlet llhttpPromise = lazyllhttp()\nllhttpPromise.catch()\n\nlet currentParser = null\nlet currentBufferRef = null\nlet currentBufferSize = 0\nlet currentBufferPtr = null\n\nconst TIMEOUT_HEADERS = 1\nconst TIMEOUT_BODY = 2\nconst TIMEOUT_IDLE = 3\n\nclass Parser {\n constructor (client, socket, { exports }) {\n assert(Number.isFinite(client[kMaxHeadersSize]) && client[kMaxHeadersSize] > 0)\n\n this.llhttp = exports\n this.ptr = this.llhttp.llhttp_alloc(constants.TYPE.RESPONSE)\n this.client = client\n this.socket = socket\n this.timeout = null\n this.timeoutValue = null\n this.timeoutType = null\n this.statusCode = null\n this.statusText = ''\n this.upgrade = false\n this.headers = []\n this.headersSize = 0\n this.headersMaxSize = client[kMaxHeadersSize]\n this.shouldKeepAlive = false\n this.paused = false\n this.resume = this.resume.bind(this)\n\n this.bytesRead = 0\n\n this.keepAlive = ''\n this.contentLength = ''\n this.connection = ''\n this.maxResponseSize = client[kMaxResponseSize]\n }\n\n setTimeout (value, type) {\n this.timeoutType = type\n if (value !== this.timeoutValue) {\n timers.clearTimeout(this.timeout)\n if (value) {\n this.timeout = timers.setTimeout(onParserTimeout, value, this)\n // istanbul ignore else: only for jest\n if (this.timeout.unref) {\n this.timeout.unref()\n }\n } else {\n this.timeout = null\n }\n this.timeoutValue = value\n } else if (this.timeout) {\n // istanbul ignore else: only for jest\n if (this.timeout.refresh) {\n this.timeout.refresh()\n }\n }\n }\n\n resume () {\n if (this.socket.destroyed || !this.paused) {\n return\n }\n\n assert(this.ptr != null)\n assert(currentParser == null)\n\n this.llhttp.llhttp_resume(this.ptr)\n\n assert(this.timeoutType === TIMEOUT_BODY)\n if (this.timeout) {\n // istanbul ignore else: only for jest\n if (this.timeout.refresh) {\n this.timeout.refresh()\n }\n }\n\n this.paused = false\n this.execute(this.socket.read() || EMPTY_BUF) // Flush parser.\n this.readMore()\n }\n\n readMore () {\n while (!this.paused && this.ptr) {\n const chunk = this.socket.read()\n if (chunk === null) {\n break\n }\n this.execute(chunk)\n }\n }\n\n execute (data) {\n assert(this.ptr != null)\n assert(currentParser == null)\n assert(!this.paused)\n\n const { socket, llhttp } = this\n\n if (data.length > currentBufferSize) {\n if (currentBufferPtr) {\n llhttp.free(currentBufferPtr)\n }\n currentBufferSize = Math.ceil(data.length / 4096) * 4096\n currentBufferPtr = llhttp.malloc(currentBufferSize)\n }\n\n new Uint8Array(llhttp.memory.buffer, currentBufferPtr, currentBufferSize).set(data)\n\n // Call `execute` on the wasm parser.\n // We pass the `llhttp_parser` pointer address, the pointer address of buffer view data,\n // and finally the length of bytes to parse.\n // The return value is an error code or `constants.ERROR.OK`.\n try {\n let ret\n\n try {\n currentBufferRef = data\n currentParser = this\n ret = llhttp.llhttp_execute(this.ptr, currentBufferPtr, data.length)\n /* eslint-disable-next-line no-useless-catch */\n } catch (err) {\n /* istanbul ignore next: difficult to make a test case for */\n throw err\n } finally {\n currentParser = null\n currentBufferRef = null\n }\n\n const offset = llhttp.llhttp_get_error_pos(this.ptr) - currentBufferPtr\n\n if (ret === constants.ERROR.PAUSED_UPGRADE) {\n this.onUpgrade(data.slice(offset))\n } else if (ret === constants.ERROR.PAUSED) {\n this.paused = true\n socket.unshift(data.slice(offset))\n } else if (ret !== constants.ERROR.OK) {\n const ptr = llhttp.llhttp_get_error_reason(this.ptr)\n let message = ''\n /* istanbul ignore else: difficult to make a test case for */\n if (ptr) {\n const len = new Uint8Array(llhttp.memory.buffer, ptr).indexOf(0)\n message =\n 'Response does not match the HTTP/1.1 protocol (' +\n Buffer.from(llhttp.memory.buffer, ptr, len).toString() +\n ')'\n }\n throw new HTTPParserError(message, constants.ERROR[ret], data.slice(offset))\n }\n } catch (err) {\n util.destroy(socket, err)\n }\n }\n\n destroy () {\n assert(this.ptr != null)\n assert(currentParser == null)\n\n this.llhttp.llhttp_free(this.ptr)\n this.ptr = null\n\n timers.clearTimeout(this.timeout)\n this.timeout = null\n this.timeoutValue = null\n this.timeoutType = null\n\n this.paused = false\n }\n\n onStatus (buf) {\n this.statusText = buf.toString()\n }\n\n onMessageBegin () {\n const { socket, client } = this\n\n /* istanbul ignore next: difficult to make a test case for */\n if (socket.destroyed) {\n return -1\n }\n\n const request = client[kQueue][client[kRunningIdx]]\n if (!request) {\n return -1\n }\n }\n\n onHeaderField (buf) {\n const len = this.headers.length\n\n if ((len & 1) === 0) {\n this.headers.push(buf)\n } else {\n this.headers[len - 1] = Buffer.concat([this.headers[len - 1], buf])\n }\n\n this.trackHeader(buf.length)\n }\n\n onHeaderValue (buf) {\n let len = this.headers.length\n\n if ((len & 1) === 1) {\n this.headers.push(buf)\n len += 1\n } else {\n this.headers[len - 1] = Buffer.concat([this.headers[len - 1], buf])\n }\n\n const key = this.headers[len - 2]\n if (key.length === 10 && key.toString().toLowerCase() === 'keep-alive') {\n this.keepAlive += buf.toString()\n } else if (key.length === 10 && key.toString().toLowerCase() === 'connection') {\n this.connection += buf.toString()\n } else if (key.length === 14 && key.toString().toLowerCase() === 'content-length') {\n this.contentLength += buf.toString()\n }\n\n this.trackHeader(buf.length)\n }\n\n trackHeader (len) {\n this.headersSize += len\n if (this.headersSize >= this.headersMaxSize) {\n util.destroy(this.socket, new HeadersOverflowError())\n }\n }\n\n onUpgrade (head) {\n const { upgrade, client, socket, headers, statusCode } = this\n\n assert(upgrade)\n\n const request = client[kQueue][client[kRunningIdx]]\n assert(request)\n\n assert(!socket.destroyed)\n assert(socket === client[kSocket])\n assert(!this.paused)\n assert(request.upgrade || request.method === 'CONNECT')\n\n this.statusCode = null\n this.statusText = ''\n this.shouldKeepAlive = null\n\n assert(this.headers.length % 2 === 0)\n this.headers = []\n this.headersSize = 0\n\n socket.unshift(head)\n\n socket[kParser].destroy()\n socket[kParser] = null\n\n socket[kClient] = null\n socket[kError] = null\n socket\n .removeListener('error', onSocketError)\n .removeListener('readable', onSocketReadable)\n .removeListener('end', onSocketEnd)\n .removeListener('close', onSocketClose)\n\n client[kSocket] = null\n client[kQueue][client[kRunningIdx]++] = null\n client.emit('disconnect', client[kUrl], [client], new InformationalError('upgrade'))\n\n try {\n request.onUpgrade(statusCode, headers, socket)\n } catch (err) {\n util.destroy(socket, err)\n }\n\n resume(client)\n }\n\n onHeadersComplete (statusCode, upgrade, shouldKeepAlive) {\n const { client, socket, headers, statusText } = this\n\n /* istanbul ignore next: difficult to make a test case for */\n if (socket.destroyed) {\n return -1\n }\n\n const request = client[kQueue][client[kRunningIdx]]\n\n /* istanbul ignore next: difficult to make a test case for */\n if (!request) {\n return -1\n }\n\n assert(!this.upgrade)\n assert(this.statusCode < 200)\n\n if (statusCode === 100) {\n util.destroy(socket, new SocketError('bad response', util.getSocketInfo(socket)))\n return -1\n }\n\n /* this can only happen if server is misbehaving */\n if (upgrade && !request.upgrade) {\n util.destroy(socket, new SocketError('bad upgrade', util.getSocketInfo(socket)))\n return -1\n }\n\n assert.strictEqual(this.timeoutType, TIMEOUT_HEADERS)\n\n this.statusCode = statusCode\n this.shouldKeepAlive = (\n shouldKeepAlive ||\n // Override llhttp value which does not allow keepAlive for HEAD.\n (request.method === 'HEAD' && !socket[kReset] && this.connection.toLowerCase() === 'keep-alive')\n )\n\n if (this.statusCode >= 200) {\n const bodyTimeout = request.bodyTimeout != null\n ? request.bodyTimeout\n : client[kBodyTimeout]\n this.setTimeout(bodyTimeout, TIMEOUT_BODY)\n } else if (this.timeout) {\n // istanbul ignore else: only for jest\n if (this.timeout.refresh) {\n this.timeout.refresh()\n }\n }\n\n if (request.method === 'CONNECT') {\n assert(client[kRunning] === 1)\n this.upgrade = true\n return 2\n }\n\n if (upgrade) {\n assert(client[kRunning] === 1)\n this.upgrade = true\n return 2\n }\n\n assert(this.headers.length % 2 === 0)\n this.headers = []\n this.headersSize = 0\n\n if (this.shouldKeepAlive && client[kPipelining]) {\n const keepAliveTimeout = this.keepAlive ? util.parseKeepAliveTimeout(this.keepAlive) : null\n\n if (keepAliveTimeout != null) {\n const timeout = Math.min(\n keepAliveTimeout - client[kKeepAliveTimeoutThreshold],\n client[kKeepAliveMaxTimeout]\n )\n if (timeout <= 0) {\n socket[kReset] = true\n } else {\n client[kKeepAliveTimeoutValue] = timeout\n }\n } else {\n client[kKeepAliveTimeoutValue] = client[kKeepAliveDefaultTimeout]\n }\n } else {\n // Stop more requests from being dispatched.\n socket[kReset] = true\n }\n\n const pause = request.onHeaders(statusCode, headers, this.resume, statusText) === false\n\n if (request.aborted) {\n return -1\n }\n\n if (request.method === 'HEAD') {\n return 1\n }\n\n if (statusCode < 200) {\n return 1\n }\n\n if (socket[kBlocking]) {\n socket[kBlocking] = false\n resume(client)\n }\n\n return pause ? constants.ERROR.PAUSED : 0\n }\n\n onBody (buf) {\n const { client, socket, statusCode, maxResponseSize } = this\n\n if (socket.destroyed) {\n return -1\n }\n\n const request = client[kQueue][client[kRunningIdx]]\n assert(request)\n\n assert.strictEqual(this.timeoutType, TIMEOUT_BODY)\n if (this.timeout) {\n // istanbul ignore else: only for jest\n if (this.timeout.refresh) {\n this.timeout.refresh()\n }\n }\n\n assert(statusCode >= 200)\n\n if (maxResponseSize > -1 && this.bytesRead + buf.length > maxResponseSize) {\n util.destroy(socket, new ResponseExceededMaxSizeError())\n return -1\n }\n\n this.bytesRead += buf.length\n\n if (request.onData(buf) === false) {\n return constants.ERROR.PAUSED\n }\n }\n\n onMessageComplete () {\n const { client, socket, statusCode, upgrade, headers, contentLength, bytesRead, shouldKeepAlive } = this\n\n if (socket.destroyed && (!statusCode || shouldKeepAlive)) {\n return -1\n }\n\n if (upgrade) {\n return\n }\n\n const request = client[kQueue][client[kRunningIdx]]\n assert(request)\n\n assert(statusCode >= 100)\n\n this.statusCode = null\n this.statusText = ''\n this.bytesRead = 0\n this.contentLength = ''\n this.keepAlive = ''\n this.connection = ''\n\n assert(this.headers.length % 2 === 0)\n this.headers = []\n this.headersSize = 0\n\n if (statusCode < 200) {\n return\n }\n\n /* istanbul ignore next: should be handled by llhttp? */\n if (request.method !== 'HEAD' && contentLength && bytesRead !== parseInt(contentLength, 10)) {\n util.destroy(socket, new ResponseContentLengthMismatchError())\n return -1\n }\n\n request.onComplete(headers)\n\n client[kQueue][client[kRunningIdx]++] = null\n\n if (socket[kWriting]) {\n assert.strictEqual(client[kRunning], 0)\n // Response completed before request.\n util.destroy(socket, new InformationalError('reset'))\n return constants.ERROR.PAUSED\n } else if (!shouldKeepAlive) {\n util.destroy(socket, new InformationalError('reset'))\n return constants.ERROR.PAUSED\n } else if (socket[kReset] && client[kRunning] === 0) {\n // Destroy socket once all requests have completed.\n // The request at the tail of the pipeline is the one\n // that requested reset and no further requests should\n // have been queued since then.\n util.destroy(socket, new InformationalError('reset'))\n return constants.ERROR.PAUSED\n } else if (client[kPipelining] === 1) {\n // We must wait a full event loop cycle to reuse this socket to make sure\n // that non-spec compliant servers are not closing the connection even if they\n // said they won't.\n setImmediate(resume, client)\n } else {\n resume(client)\n }\n }\n}\n\nfunction onParserTimeout (parser) {\n const { socket, timeoutType, client } = parser\n\n /* istanbul ignore else */\n if (timeoutType === TIMEOUT_HEADERS) {\n if (!socket[kWriting] || socket.writableNeedDrain || client[kRunning] > 1) {\n assert(!parser.paused, 'cannot be paused while waiting for headers')\n util.destroy(socket, new HeadersTimeoutError())\n }\n } else if (timeoutType === TIMEOUT_BODY) {\n if (!parser.paused) {\n util.destroy(socket, new BodyTimeoutError())\n }\n } else if (timeoutType === TIMEOUT_IDLE) {\n assert(client[kRunning] === 0 && client[kKeepAliveTimeoutValue])\n util.destroy(socket, new InformationalError('socket idle timeout'))\n }\n}\n\nfunction onSocketReadable () {\n const { [kParser]: parser } = this\n if (parser) {\n parser.readMore()\n }\n}\n\nfunction onSocketError (err) {\n const { [kClient]: client, [kParser]: parser } = this\n\n assert(err.code !== 'ERR_TLS_CERT_ALTNAME_INVALID')\n\n if (client[kHTTPConnVersion] !== 'h2') {\n // On Mac OS, we get an ECONNRESET even if there is a full body to be forwarded\n // to the user.\n if (err.code === 'ECONNRESET' && parser.statusCode && !parser.shouldKeepAlive) {\n // We treat all incoming data so for as a valid response.\n parser.onMessageComplete()\n return\n }\n }\n\n this[kError] = err\n\n onError(this[kClient], err)\n}\n\nfunction onError (client, err) {\n if (\n client[kRunning] === 0 &&\n err.code !== 'UND_ERR_INFO' &&\n err.code !== 'UND_ERR_SOCKET'\n ) {\n // Error is not caused by running request and not a recoverable\n // socket error.\n\n assert(client[kPendingIdx] === client[kRunningIdx])\n\n const requests = client[kQueue].splice(client[kRunningIdx])\n for (let i = 0; i < requests.length; i++) {\n const request = requests[i]\n errorRequest(client, request, err)\n }\n assert(client[kSize] === 0)\n }\n}\n\nfunction onSocketEnd () {\n const { [kParser]: parser, [kClient]: client } = this\n\n if (client[kHTTPConnVersion] !== 'h2') {\n if (parser.statusCode && !parser.shouldKeepAlive) {\n // We treat all incoming data so far as a valid response.\n parser.onMessageComplete()\n return\n }\n }\n\n util.destroy(this, new SocketError('other side closed', util.getSocketInfo(this)))\n}\n\nfunction onSocketClose () {\n const { [kClient]: client, [kParser]: parser } = this\n\n if (client[kHTTPConnVersion] === 'h1' && parser) {\n if (!this[kError] && parser.statusCode && !parser.shouldKeepAlive) {\n // We treat all incoming data so far as a valid response.\n parser.onMessageComplete()\n }\n\n this[kParser].destroy()\n this[kParser] = null\n }\n\n const err = this[kError] || new SocketError('closed', util.getSocketInfo(this))\n\n client[kSocket] = null\n\n if (client.destroyed) {\n assert(client[kPending] === 0)\n\n // Fail entire queue.\n const requests = client[kQueue].splice(client[kRunningIdx])\n for (let i = 0; i < requests.length; i++) {\n const request = requests[i]\n errorRequest(client, request, err)\n }\n } else if (client[kRunning] > 0 && err.code !== 'UND_ERR_INFO') {\n // Fail head of pipeline.\n const request = client[kQueue][client[kRunningIdx]]\n client[kQueue][client[kRunningIdx]++] = null\n\n errorRequest(client, request, err)\n }\n\n client[kPendingIdx] = client[kRunningIdx]\n\n assert(client[kRunning] === 0)\n\n client.emit('disconnect', client[kUrl], [client], err)\n\n resume(client)\n}\n\nasync function connect (client) {\n assert(!client[kConnecting])\n assert(!client[kSocket])\n\n let { host, hostname, protocol, port } = client[kUrl]\n\n // Resolve ipv6\n if (hostname[0] === '[') {\n const idx = hostname.indexOf(']')\n\n assert(idx !== -1)\n const ip = hostname.substring(1, idx)\n\n assert(net.isIP(ip))\n hostname = ip\n }\n\n client[kConnecting] = true\n\n if (channels.beforeConnect.hasSubscribers) {\n channels.beforeConnect.publish({\n connectParams: {\n host,\n hostname,\n protocol,\n port,\n servername: client[kServerName],\n localAddress: client[kLocalAddress]\n },\n connector: client[kConnector]\n })\n }\n\n try {\n const socket = await new Promise((resolve, reject) => {\n client[kConnector]({\n host,\n hostname,\n protocol,\n port,\n servername: client[kServerName],\n localAddress: client[kLocalAddress]\n }, (err, socket) => {\n if (err) {\n reject(err)\n } else {\n resolve(socket)\n }\n })\n })\n\n if (client.destroyed) {\n util.destroy(socket.on('error', () => {}), new ClientDestroyedError())\n return\n }\n\n client[kConnecting] = false\n\n assert(socket)\n\n const isH2 = socket.alpnProtocol === 'h2'\n if (isH2) {\n if (!h2ExperimentalWarned) {\n h2ExperimentalWarned = true\n process.emitWarning('H2 support is experimental, expect them to change at any time.', {\n code: 'UNDICI-H2'\n })\n }\n\n const session = http2.connect(client[kUrl], {\n createConnection: () => socket,\n peerMaxConcurrentStreams: client[kHTTP2SessionState].maxConcurrentStreams\n })\n\n client[kHTTPConnVersion] = 'h2'\n session[kClient] = client\n session[kSocket] = socket\n session.on('error', onHttp2SessionError)\n session.on('frameError', onHttp2FrameError)\n session.on('end', onHttp2SessionEnd)\n session.on('goaway', onHTTP2GoAway)\n session.on('close', onSocketClose)\n session.unref()\n\n client[kHTTP2Session] = session\n socket[kHTTP2Session] = session\n } else {\n if (!llhttpInstance) {\n llhttpInstance = await llhttpPromise\n llhttpPromise = null\n }\n\n socket[kNoRef] = false\n socket[kWriting] = false\n socket[kReset] = false\n socket[kBlocking] = false\n socket[kParser] = new Parser(client, socket, llhttpInstance)\n }\n\n socket[kCounter] = 0\n socket[kMaxRequests] = client[kMaxRequests]\n socket[kClient] = client\n socket[kError] = null\n\n socket\n .on('error', onSocketError)\n .on('readable', onSocketReadable)\n .on('end', onSocketEnd)\n .on('close', onSocketClose)\n\n client[kSocket] = socket\n\n if (channels.connected.hasSubscribers) {\n channels.connected.publish({\n connectParams: {\n host,\n hostname,\n protocol,\n port,\n servername: client[kServerName],\n localAddress: client[kLocalAddress]\n },\n connector: client[kConnector],\n socket\n })\n }\n client.emit('connect', client[kUrl], [client])\n } catch (err) {\n if (client.destroyed) {\n return\n }\n\n client[kConnecting] = false\n\n if (channels.connectError.hasSubscribers) {\n channels.connectError.publish({\n connectParams: {\n host,\n hostname,\n protocol,\n port,\n servername: client[kServerName],\n localAddress: client[kLocalAddress]\n },\n connector: client[kConnector],\n error: err\n })\n }\n\n if (err.code === 'ERR_TLS_CERT_ALTNAME_INVALID') {\n assert(client[kRunning] === 0)\n while (client[kPending] > 0 && client[kQueue][client[kPendingIdx]].servername === client[kServerName]) {\n const request = client[kQueue][client[kPendingIdx]++]\n errorRequest(client, request, err)\n }\n } else {\n onError(client, err)\n }\n\n client.emit('connectionError', client[kUrl], [client], err)\n }\n\n resume(client)\n}\n\nfunction emitDrain (client) {\n client[kNeedDrain] = 0\n client.emit('drain', client[kUrl], [client])\n}\n\nfunction resume (client, sync) {\n if (client[kResuming] === 2) {\n return\n }\n\n client[kResuming] = 2\n\n _resume(client, sync)\n client[kResuming] = 0\n\n if (client[kRunningIdx] > 256) {\n client[kQueue].splice(0, client[kRunningIdx])\n client[kPendingIdx] -= client[kRunningIdx]\n client[kRunningIdx] = 0\n }\n}\n\nfunction _resume (client, sync) {\n while (true) {\n if (client.destroyed) {\n assert(client[kPending] === 0)\n return\n }\n\n if (client[kClosedResolve] && !client[kSize]) {\n client[kClosedResolve]()\n client[kClosedResolve] = null\n return\n }\n\n const socket = client[kSocket]\n\n if (socket && !socket.destroyed && socket.alpnProtocol !== 'h2') {\n if (client[kSize] === 0) {\n if (!socket[kNoRef] && socket.unref) {\n socket.unref()\n socket[kNoRef] = true\n }\n } else if (socket[kNoRef] && socket.ref) {\n socket.ref()\n socket[kNoRef] = false\n }\n\n if (client[kSize] === 0) {\n if (socket[kParser].timeoutType !== TIMEOUT_IDLE) {\n socket[kParser].setTimeout(client[kKeepAliveTimeoutValue], TIMEOUT_IDLE)\n }\n } else if (client[kRunning] > 0 && socket[kParser].statusCode < 200) {\n if (socket[kParser].timeoutType !== TIMEOUT_HEADERS) {\n const request = client[kQueue][client[kRunningIdx]]\n const headersTimeout = request.headersTimeout != null\n ? request.headersTimeout\n : client[kHeadersTimeout]\n socket[kParser].setTimeout(headersTimeout, TIMEOUT_HEADERS)\n }\n }\n }\n\n if (client[kBusy]) {\n client[kNeedDrain] = 2\n } else if (client[kNeedDrain] === 2) {\n if (sync) {\n client[kNeedDrain] = 1\n process.nextTick(emitDrain, client)\n } else {\n emitDrain(client)\n }\n continue\n }\n\n if (client[kPending] === 0) {\n return\n }\n\n if (client[kRunning] >= (client[kPipelining] || 1)) {\n return\n }\n\n const request = client[kQueue][client[kPendingIdx]]\n\n if (client[kUrl].protocol === 'https:' && client[kServerName] !== request.servername) {\n if (client[kRunning] > 0) {\n return\n }\n\n client[kServerName] = request.servername\n\n if (socket && socket.servername !== request.servername) {\n util.destroy(socket, new InformationalError('servername changed'))\n return\n }\n }\n\n if (client[kConnecting]) {\n return\n }\n\n if (!socket && !client[kHTTP2Session]) {\n connect(client)\n return\n }\n\n if (socket.destroyed || socket[kWriting] || socket[kReset] || socket[kBlocking]) {\n return\n }\n\n if (client[kRunning] > 0 && !request.idempotent) {\n // Non-idempotent request cannot be retried.\n // Ensure that no other requests are inflight and\n // could cause failure.\n return\n }\n\n if (client[kRunning] > 0 && (request.upgrade || request.method === 'CONNECT')) {\n // Don't dispatch an upgrade until all preceding requests have completed.\n // A misbehaving server might upgrade the connection before all pipelined\n // request has completed.\n return\n }\n\n if (client[kRunning] > 0 && util.bodyLength(request.body) !== 0 &&\n (util.isStream(request.body) || util.isAsyncIterable(request.body))) {\n // Request with stream or iterator body can error while other requests\n // are inflight and indirectly error those as well.\n // Ensure this doesn't happen by waiting for inflight\n // to complete before dispatching.\n\n // Request with stream or iterator body cannot be retried.\n // Ensure that no other requests are inflight and\n // could cause failure.\n return\n }\n\n if (!request.aborted && write(client, request)) {\n client[kPendingIdx]++\n } else {\n client[kQueue].splice(client[kPendingIdx], 1)\n }\n }\n}\n\n// https://www.rfc-editor.org/rfc/rfc7230#section-3.3.2\nfunction shouldSendContentLength (method) {\n return method !== 'GET' && method !== 'HEAD' && method !== 'OPTIONS' && method !== 'TRACE' && method !== 'CONNECT'\n}\n\nfunction write (client, request) {\n if (client[kHTTPConnVersion] === 'h2') {\n writeH2(client, client[kHTTP2Session], request)\n return\n }\n\n const { body, method, path, host, upgrade, headers, blocking, reset } = request\n\n // https://tools.ietf.org/html/rfc7231#section-4.3.1\n // https://tools.ietf.org/html/rfc7231#section-4.3.2\n // https://tools.ietf.org/html/rfc7231#section-4.3.5\n\n // Sending a payload body on a request that does not\n // expect it can cause undefined behavior on some\n // servers and corrupt connection state. Do not\n // re-use the connection for further requests.\n\n const expectsPayload = (\n method === 'PUT' ||\n method === 'POST' ||\n method === 'PATCH'\n )\n\n if (body && typeof body.read === 'function') {\n // Try to read EOF in order to get length.\n body.read(0)\n }\n\n const bodyLength = util.bodyLength(body)\n\n let contentLength = bodyLength\n\n if (contentLength === null) {\n contentLength = request.contentLength\n }\n\n if (contentLength === 0 && !expectsPayload) {\n // https://tools.ietf.org/html/rfc7230#section-3.3.2\n // A user agent SHOULD NOT send a Content-Length header field when\n // the request message does not contain a payload body and the method\n // semantics do not anticipate such a body.\n\n contentLength = null\n }\n\n // https://github.com/nodejs/undici/issues/2046\n // A user agent may send a Content-Length header with 0 value, this should be allowed.\n if (shouldSendContentLength(method) && contentLength > 0 && request.contentLength !== null && request.contentLength !== contentLength) {\n if (client[kStrictContentLength]) {\n errorRequest(client, request, new RequestContentLengthMismatchError())\n return false\n }\n\n process.emitWarning(new RequestContentLengthMismatchError())\n }\n\n const socket = client[kSocket]\n\n try {\n request.onConnect((err) => {\n if (request.aborted || request.completed) {\n return\n }\n\n errorRequest(client, request, err || new RequestAbortedError())\n\n util.destroy(socket, new InformationalError('aborted'))\n })\n } catch (err) {\n errorRequest(client, request, err)\n }\n\n if (request.aborted) {\n return false\n }\n\n if (method === 'HEAD') {\n // https://github.com/mcollina/undici/issues/258\n // Close after a HEAD request to interop with misbehaving servers\n // that may send a body in the response.\n\n socket[kReset] = true\n }\n\n if (upgrade || method === 'CONNECT') {\n // On CONNECT or upgrade, block pipeline from dispatching further\n // requests on this connection.\n\n socket[kReset] = true\n }\n\n if (reset != null) {\n socket[kReset] = reset\n }\n\n if (client[kMaxRequests] && socket[kCounter]++ >= client[kMaxRequests]) {\n socket[kReset] = true\n }\n\n if (blocking) {\n socket[kBlocking] = true\n }\n\n let header = `${method} ${path} HTTP/1.1\\r\\n`\n\n if (typeof host === 'string') {\n header += `host: ${host}\\r\\n`\n } else {\n header += client[kHostHeader]\n }\n\n if (upgrade) {\n header += `connection: upgrade\\r\\nupgrade: ${upgrade}\\r\\n`\n } else if (client[kPipelining] && !socket[kReset]) {\n header += 'connection: keep-alive\\r\\n'\n } else {\n header += 'connection: close\\r\\n'\n }\n\n if (headers) {\n header += headers\n }\n\n if (channels.sendHeaders.hasSubscribers) {\n channels.sendHeaders.publish({ request, headers: header, socket })\n }\n\n /* istanbul ignore else: assertion */\n if (!body || bodyLength === 0) {\n if (contentLength === 0) {\n socket.write(`${header}content-length: 0\\r\\n\\r\\n`, 'latin1')\n } else {\n assert(contentLength === null, 'no body must not have content length')\n socket.write(`${header}\\r\\n`, 'latin1')\n }\n request.onRequestSent()\n } else if (util.isBuffer(body)) {\n assert(contentLength === body.byteLength, 'buffer body must have content length')\n\n socket.cork()\n socket.write(`${header}content-length: ${contentLength}\\r\\n\\r\\n`, 'latin1')\n socket.write(body)\n socket.uncork()\n request.onBodySent(body)\n request.onRequestSent()\n if (!expectsPayload) {\n socket[kReset] = true\n }\n } else if (util.isBlobLike(body)) {\n if (typeof body.stream === 'function') {\n writeIterable({ body: body.stream(), client, request, socket, contentLength, header, expectsPayload })\n } else {\n writeBlob({ body, client, request, socket, contentLength, header, expectsPayload })\n }\n } else if (util.isStream(body)) {\n writeStream({ body, client, request, socket, contentLength, header, expectsPayload })\n } else if (util.isIterable(body)) {\n writeIterable({ body, client, request, socket, contentLength, header, expectsPayload })\n } else {\n assert(false)\n }\n\n return true\n}\n\nfunction writeH2 (client, session, request) {\n const { body, method, path, host, upgrade, expectContinue, signal, headers: reqHeaders } = request\n\n let headers\n if (typeof reqHeaders === 'string') headers = Request[kHTTP2CopyHeaders](reqHeaders.trim())\n else headers = reqHeaders\n\n if (upgrade) {\n errorRequest(client, request, new Error('Upgrade not supported for H2'))\n return false\n }\n\n try {\n // TODO(HTTP/2): Should we call onConnect immediately or on stream ready event?\n request.onConnect((err) => {\n if (request.aborted || request.completed) {\n return\n }\n\n errorRequest(client, request, err || new RequestAbortedError())\n })\n } catch (err) {\n errorRequest(client, request, err)\n }\n\n if (request.aborted) {\n return false\n }\n\n /** @type {import('node:http2').ClientHttp2Stream} */\n let stream\n const h2State = client[kHTTP2SessionState]\n\n headers[HTTP2_HEADER_AUTHORITY] = host || client[kHost]\n headers[HTTP2_HEADER_METHOD] = method\n\n if (method === 'CONNECT') {\n session.ref()\n // we are already connected, streams are pending, first request\n // will create a new stream. We trigger a request to create the stream and wait until\n // `ready` event is triggered\n // We disabled endStream to allow the user to write to the stream\n stream = session.request(headers, { endStream: false, signal })\n\n if (stream.id && !stream.pending) {\n request.onUpgrade(null, null, stream)\n ++h2State.openStreams\n } else {\n stream.once('ready', () => {\n request.onUpgrade(null, null, stream)\n ++h2State.openStreams\n })\n }\n\n stream.once('close', () => {\n h2State.openStreams -= 1\n // TODO(HTTP/2): unref only if current streams count is 0\n if (h2State.openStreams === 0) session.unref()\n })\n\n return true\n }\n\n // https://tools.ietf.org/html/rfc7540#section-8.3\n // :path and :scheme headers must be omited when sending CONNECT\n\n headers[HTTP2_HEADER_PATH] = path\n headers[HTTP2_HEADER_SCHEME] = 'https'\n\n // https://tools.ietf.org/html/rfc7231#section-4.3.1\n // https://tools.ietf.org/html/rfc7231#section-4.3.2\n // https://tools.ietf.org/html/rfc7231#section-4.3.5\n\n // Sending a payload body on a request that does not\n // expect it can cause undefined behavior on some\n // servers and corrupt connection state. Do not\n // re-use the connection for further requests.\n\n const expectsPayload = (\n method === 'PUT' ||\n method === 'POST' ||\n method === 'PATCH'\n )\n\n if (body && typeof body.read === 'function') {\n // Try to read EOF in order to get length.\n body.read(0)\n }\n\n let contentLength = util.bodyLength(body)\n\n if (contentLength == null) {\n contentLength = request.contentLength\n }\n\n if (contentLength === 0 || !expectsPayload) {\n // https://tools.ietf.org/html/rfc7230#section-3.3.2\n // A user agent SHOULD NOT send a Content-Length header field when\n // the request message does not contain a payload body and the method\n // semantics do not anticipate such a body.\n\n contentLength = null\n }\n\n // https://github.com/nodejs/undici/issues/2046\n // A user agent may send a Content-Length header with 0 value, this should be allowed.\n if (shouldSendContentLength(method) && contentLength > 0 && request.contentLength != null && request.contentLength !== contentLength) {\n if (client[kStrictContentLength]) {\n errorRequest(client, request, new RequestContentLengthMismatchError())\n return false\n }\n\n process.emitWarning(new RequestContentLengthMismatchError())\n }\n\n if (contentLength != null) {\n assert(body, 'no body must not have content length')\n headers[HTTP2_HEADER_CONTENT_LENGTH] = `${contentLength}`\n }\n\n session.ref()\n\n const shouldEndStream = method === 'GET' || method === 'HEAD'\n if (expectContinue) {\n headers[HTTP2_HEADER_EXPECT] = '100-continue'\n stream = session.request(headers, { endStream: shouldEndStream, signal })\n\n stream.once('continue', writeBodyH2)\n } else {\n stream = session.request(headers, {\n endStream: shouldEndStream,\n signal\n })\n writeBodyH2()\n }\n\n // Increment counter as we have new several streams open\n ++h2State.openStreams\n\n stream.once('response', headers => {\n const { [HTTP2_HEADER_STATUS]: statusCode, ...realHeaders } = headers\n\n if (request.onHeaders(Number(statusCode), realHeaders, stream.resume.bind(stream), '') === false) {\n stream.pause()\n }\n })\n\n stream.once('end', () => {\n request.onComplete([])\n })\n\n stream.on('data', (chunk) => {\n if (request.onData(chunk) === false) {\n stream.pause()\n }\n })\n\n stream.once('close', () => {\n h2State.openStreams -= 1\n // TODO(HTTP/2): unref only if current streams count is 0\n if (h2State.openStreams === 0) {\n session.unref()\n }\n })\n\n stream.once('error', function (err) {\n if (client[kHTTP2Session] && !client[kHTTP2Session].destroyed && !this.closed && !this.destroyed) {\n h2State.streams -= 1\n util.destroy(stream, err)\n }\n })\n\n stream.once('frameError', (type, code) => {\n const err = new InformationalError(`HTTP/2: \"frameError\" received - type ${type}, code ${code}`)\n errorRequest(client, request, err)\n\n if (client[kHTTP2Session] && !client[kHTTP2Session].destroyed && !this.closed && !this.destroyed) {\n h2State.streams -= 1\n util.destroy(stream, err)\n }\n })\n\n // stream.on('aborted', () => {\n // // TODO(HTTP/2): Support aborted\n // })\n\n // stream.on('timeout', () => {\n // // TODO(HTTP/2): Support timeout\n // })\n\n // stream.on('push', headers => {\n // // TODO(HTTP/2): Suppor push\n // })\n\n // stream.on('trailers', headers => {\n // // TODO(HTTP/2): Support trailers\n // })\n\n return true\n\n function writeBodyH2 () {\n /* istanbul ignore else: assertion */\n if (!body) {\n request.onRequestSent()\n } else if (util.isBuffer(body)) {\n assert(contentLength === body.byteLength, 'buffer body must have content length')\n stream.cork()\n stream.write(body)\n stream.uncork()\n stream.end()\n request.onBodySent(body)\n request.onRequestSent()\n } else if (util.isBlobLike(body)) {\n if (typeof body.stream === 'function') {\n writeIterable({\n client,\n request,\n contentLength,\n h2stream: stream,\n expectsPayload,\n body: body.stream(),\n socket: client[kSocket],\n header: ''\n })\n } else {\n writeBlob({\n body,\n client,\n request,\n contentLength,\n expectsPayload,\n h2stream: stream,\n header: '',\n socket: client[kSocket]\n })\n }\n } else if (util.isStream(body)) {\n writeStream({\n body,\n client,\n request,\n contentLength,\n expectsPayload,\n socket: client[kSocket],\n h2stream: stream,\n header: ''\n })\n } else if (util.isIterable(body)) {\n writeIterable({\n body,\n client,\n request,\n contentLength,\n expectsPayload,\n header: '',\n h2stream: stream,\n socket: client[kSocket]\n })\n } else {\n assert(false)\n }\n }\n}\n\nfunction writeStream ({ h2stream, body, client, request, socket, contentLength, header, expectsPayload }) {\n assert(contentLength !== 0 || client[kRunning] === 0, 'stream body cannot be pipelined')\n\n if (client[kHTTPConnVersion] === 'h2') {\n // For HTTP/2, is enough to pipe the stream\n const pipe = pipeline(\n body,\n h2stream,\n (err) => {\n if (err) {\n util.destroy(body, err)\n util.destroy(h2stream, err)\n } else {\n request.onRequestSent()\n }\n }\n )\n\n pipe.on('data', onPipeData)\n pipe.once('end', () => {\n pipe.removeListener('data', onPipeData)\n util.destroy(pipe)\n })\n\n function onPipeData (chunk) {\n request.onBodySent(chunk)\n }\n\n return\n }\n\n let finished = false\n\n const writer = new AsyncWriter({ socket, request, contentLength, client, expectsPayload, header })\n\n const onData = function (chunk) {\n if (finished) {\n return\n }\n\n try {\n if (!writer.write(chunk) && this.pause) {\n this.pause()\n }\n } catch (err) {\n util.destroy(this, err)\n }\n }\n const onDrain = function () {\n if (finished) {\n return\n }\n\n if (body.resume) {\n body.resume()\n }\n }\n const onAbort = function () {\n if (finished) {\n return\n }\n const err = new RequestAbortedError()\n queueMicrotask(() => onFinished(err))\n }\n const onFinished = function (err) {\n if (finished) {\n return\n }\n\n finished = true\n\n assert(socket.destroyed || (socket[kWriting] && client[kRunning] <= 1))\n\n socket\n .off('drain', onDrain)\n .off('error', onFinished)\n\n body\n .removeListener('data', onData)\n .removeListener('end', onFinished)\n .removeListener('error', onFinished)\n .removeListener('close', onAbort)\n\n if (!err) {\n try {\n writer.end()\n } catch (er) {\n err = er\n }\n }\n\n writer.destroy(err)\n\n if (err && (err.code !== 'UND_ERR_INFO' || err.message !== 'reset')) {\n util.destroy(body, err)\n } else {\n util.destroy(body)\n }\n }\n\n body\n .on('data', onData)\n .on('end', onFinished)\n .on('error', onFinished)\n .on('close', onAbort)\n\n if (body.resume) {\n body.resume()\n }\n\n socket\n .on('drain', onDrain)\n .on('error', onFinished)\n}\n\nasync function writeBlob ({ h2stream, body, client, request, socket, contentLength, header, expectsPayload }) {\n assert(contentLength === body.size, 'blob body must have content length')\n\n const isH2 = client[kHTTPConnVersion] === 'h2'\n try {\n if (contentLength != null && contentLength !== body.size) {\n throw new RequestContentLengthMismatchError()\n }\n\n const buffer = Buffer.from(await body.arrayBuffer())\n\n if (isH2) {\n h2stream.cork()\n h2stream.write(buffer)\n h2stream.uncork()\n } else {\n socket.cork()\n socket.write(`${header}content-length: ${contentLength}\\r\\n\\r\\n`, 'latin1')\n socket.write(buffer)\n socket.uncork()\n }\n\n request.onBodySent(buffer)\n request.onRequestSent()\n\n if (!expectsPayload) {\n socket[kReset] = true\n }\n\n resume(client)\n } catch (err) {\n util.destroy(isH2 ? h2stream : socket, err)\n }\n}\n\nasync function writeIterable ({ h2stream, body, client, request, socket, contentLength, header, expectsPayload }) {\n assert(contentLength !== 0 || client[kRunning] === 0, 'iterator body cannot be pipelined')\n\n let callback = null\n function onDrain () {\n if (callback) {\n const cb = callback\n callback = null\n cb()\n }\n }\n\n const waitForDrain = () => new Promise((resolve, reject) => {\n assert(callback === null)\n\n if (socket[kError]) {\n reject(socket[kError])\n } else {\n callback = resolve\n }\n })\n\n if (client[kHTTPConnVersion] === 'h2') {\n h2stream\n .on('close', onDrain)\n .on('drain', onDrain)\n\n try {\n // It's up to the user to somehow abort the async iterable.\n for await (const chunk of body) {\n if (socket[kError]) {\n throw socket[kError]\n }\n\n const res = h2stream.write(chunk)\n request.onBodySent(chunk)\n if (!res) {\n await waitForDrain()\n }\n }\n } catch (err) {\n h2stream.destroy(err)\n } finally {\n request.onRequestSent()\n h2stream.end()\n h2stream\n .off('close', onDrain)\n .off('drain', onDrain)\n }\n\n return\n }\n\n socket\n .on('close', onDrain)\n .on('drain', onDrain)\n\n const writer = new AsyncWriter({ socket, request, contentLength, client, expectsPayload, header })\n try {\n // It's up to the user to somehow abort the async iterable.\n for await (const chunk of body) {\n if (socket[kError]) {\n throw socket[kError]\n }\n\n if (!writer.write(chunk)) {\n await waitForDrain()\n }\n }\n\n writer.end()\n } catch (err) {\n writer.destroy(err)\n } finally {\n socket\n .off('close', onDrain)\n .off('drain', onDrain)\n }\n}\n\nclass AsyncWriter {\n constructor ({ socket, request, contentLength, client, expectsPayload, header }) {\n this.socket = socket\n this.request = request\n this.contentLength = contentLength\n this.client = client\n this.bytesWritten = 0\n this.expectsPayload = expectsPayload\n this.header = header\n\n socket[kWriting] = true\n }\n\n write (chunk) {\n const { socket, request, contentLength, client, bytesWritten, expectsPayload, header } = this\n\n if (socket[kError]) {\n throw socket[kError]\n }\n\n if (socket.destroyed) {\n return false\n }\n\n const len = Buffer.byteLength(chunk)\n if (!len) {\n return true\n }\n\n // We should defer writing chunks.\n if (contentLength !== null && bytesWritten + len > contentLength) {\n if (client[kStrictContentLength]) {\n throw new RequestContentLengthMismatchError()\n }\n\n process.emitWarning(new RequestContentLengthMismatchError())\n }\n\n socket.cork()\n\n if (bytesWritten === 0) {\n if (!expectsPayload) {\n socket[kReset] = true\n }\n\n if (contentLength === null) {\n socket.write(`${header}transfer-encoding: chunked\\r\\n`, 'latin1')\n } else {\n socket.write(`${header}content-length: ${contentLength}\\r\\n\\r\\n`, 'latin1')\n }\n }\n\n if (contentLength === null) {\n socket.write(`\\r\\n${len.toString(16)}\\r\\n`, 'latin1')\n }\n\n this.bytesWritten += len\n\n const ret = socket.write(chunk)\n\n socket.uncork()\n\n request.onBodySent(chunk)\n\n if (!ret) {\n if (socket[kParser].timeout && socket[kParser].timeoutType === TIMEOUT_HEADERS) {\n // istanbul ignore else: only for jest\n if (socket[kParser].timeout.refresh) {\n socket[kParser].timeout.refresh()\n }\n }\n }\n\n return ret\n }\n\n end () {\n const { socket, contentLength, client, bytesWritten, expectsPayload, header, request } = this\n request.onRequestSent()\n\n socket[kWriting] = false\n\n if (socket[kError]) {\n throw socket[kError]\n }\n\n if (socket.destroyed) {\n return\n }\n\n if (bytesWritten === 0) {\n if (expectsPayload) {\n // https://tools.ietf.org/html/rfc7230#section-3.3.2\n // A user agent SHOULD send a Content-Length in a request message when\n // no Transfer-Encoding is sent and the request method defines a meaning\n // for an enclosed payload body.\n\n socket.write(`${header}content-length: 0\\r\\n\\r\\n`, 'latin1')\n } else {\n socket.write(`${header}\\r\\n`, 'latin1')\n }\n } else if (contentLength === null) {\n socket.write('\\r\\n0\\r\\n\\r\\n', 'latin1')\n }\n\n if (contentLength !== null && bytesWritten !== contentLength) {\n if (client[kStrictContentLength]) {\n throw new RequestContentLengthMismatchError()\n } else {\n process.emitWarning(new RequestContentLengthMismatchError())\n }\n }\n\n if (socket[kParser].timeout && socket[kParser].timeoutType === TIMEOUT_HEADERS) {\n // istanbul ignore else: only for jest\n if (socket[kParser].timeout.refresh) {\n socket[kParser].timeout.refresh()\n }\n }\n\n resume(client)\n }\n\n destroy (err) {\n const { socket, client } = this\n\n socket[kWriting] = false\n\n if (err) {\n assert(client[kRunning] <= 1, 'pipeline should only contain this request')\n util.destroy(socket, err)\n }\n }\n}\n\nfunction errorRequest (client, request, err) {\n try {\n request.onError(err)\n assert(request.aborted)\n } catch (err) {\n client.emit('error', err)\n }\n}\n\nmodule.exports = Client\n", "/* eslint-disable */\n\n'use strict'\n\n// Extracted from node/lib/internal/fixed_queue.js\n\n// Currently optimal queue size, tested on V8 6.0 - 6.6. Must be power of two.\nconst kSize = 2048;\nconst kMask = kSize - 1;\n\n// The FixedQueue is implemented as a singly-linked list of fixed-size\n// circular buffers. It looks something like this:\n//\n// head tail\n// | |\n// v v\n// +-----------+ <-----\\ +-----------+ <------\\ +-----------+\n// | [null] | \\----- | next | \\------- | next |\n// +-----------+ +-----------+ +-----------+\n// | item | <-- bottom | item | <-- bottom | [empty] |\n// | item | | item | | [empty] |\n// | item | | item | | [empty] |\n// | item | | item | | [empty] |\n// | item | | item | bottom --> | item |\n// | item | | item | | item |\n// | ... | | ... | | ... |\n// | item | | item | | item |\n// | item | | item | | item |\n// | [empty] | <-- top | item | | item |\n// | [empty] | | item | | item |\n// | [empty] | | [empty] | <-- top top --> | [empty] |\n// +-----------+ +-----------+ +-----------+\n//\n// Or, if there is only one circular buffer, it looks something\n// like either of these:\n//\n// head tail head tail\n// | | | |\n// v v v v\n// +-----------+ +-----------+\n// | [null] | | [null] |\n// +-----------+ +-----------+\n// | [empty] | | item |\n// | [empty] | | item |\n// | item | <-- bottom top --> | [empty] |\n// | item | | [empty] |\n// | [empty] | <-- top bottom --> | item |\n// | [empty] | | item |\n// +-----------+ +-----------+\n//\n// Adding a value means moving `top` forward by one, removing means\n// moving `bottom` forward by one. After reaching the end, the queue\n// wraps around.\n//\n// When `top === bottom` the current queue is empty and when\n// `top + 1 === bottom` it's full. This wastes a single space of storage\n// but allows much quicker checks.\n\nclass FixedCircularBuffer {\n constructor() {\n this.bottom = 0;\n this.top = 0;\n this.list = new Array(kSize);\n this.next = null;\n }\n\n isEmpty() {\n return this.top === this.bottom;\n }\n\n isFull() {\n return ((this.top + 1) & kMask) === this.bottom;\n }\n\n push(data) {\n this.list[this.top] = data;\n this.top = (this.top + 1) & kMask;\n }\n\n shift() {\n const nextItem = this.list[this.bottom];\n if (nextItem === undefined)\n return null;\n this.list[this.bottom] = undefined;\n this.bottom = (this.bottom + 1) & kMask;\n return nextItem;\n }\n}\n\nmodule.exports = class FixedQueue {\n constructor() {\n this.head = this.tail = new FixedCircularBuffer();\n }\n\n isEmpty() {\n return this.head.isEmpty();\n }\n\n push(data) {\n if (this.head.isFull()) {\n // Head is full: Creates a new queue, sets the old queue's `.next` to it,\n // and sets it as the new main queue.\n this.head = this.head.next = new FixedCircularBuffer();\n }\n this.head.push(data);\n }\n\n shift() {\n const tail = this.tail;\n const next = tail.shift();\n if (tail.isEmpty() && tail.next !== null) {\n // If there is another queue, it forms the new tail.\n this.tail = tail.next;\n }\n return next;\n }\n};\n", "const { kFree, kConnected, kPending, kQueued, kRunning, kSize } = require('./core/symbols')\nconst kPool = Symbol('pool')\n\nclass PoolStats {\n constructor (pool) {\n this[kPool] = pool\n }\n\n get connected () {\n return this[kPool][kConnected]\n }\n\n get free () {\n return this[kPool][kFree]\n }\n\n get pending () {\n return this[kPool][kPending]\n }\n\n get queued () {\n return this[kPool][kQueued]\n }\n\n get running () {\n return this[kPool][kRunning]\n }\n\n get size () {\n return this[kPool][kSize]\n }\n}\n\nmodule.exports = PoolStats\n", "'use strict'\n\nconst DispatcherBase = require('./dispatcher-base')\nconst FixedQueue = require('./node/fixed-queue')\nconst { kConnected, kSize, kRunning, kPending, kQueued, kBusy, kFree, kUrl, kClose, kDestroy, kDispatch } = require('./core/symbols')\nconst PoolStats = require('./pool-stats')\n\nconst kClients = Symbol('clients')\nconst kNeedDrain = Symbol('needDrain')\nconst kQueue = Symbol('queue')\nconst kClosedResolve = Symbol('closed resolve')\nconst kOnDrain = Symbol('onDrain')\nconst kOnConnect = Symbol('onConnect')\nconst kOnDisconnect = Symbol('onDisconnect')\nconst kOnConnectionError = Symbol('onConnectionError')\nconst kGetDispatcher = Symbol('get dispatcher')\nconst kAddClient = Symbol('add client')\nconst kRemoveClient = Symbol('remove client')\nconst kStats = Symbol('stats')\n\nclass PoolBase extends DispatcherBase {\n constructor () {\n super()\n\n this[kQueue] = new FixedQueue()\n this[kClients] = []\n this[kQueued] = 0\n\n const pool = this\n\n this[kOnDrain] = function onDrain (origin, targets) {\n const queue = pool[kQueue]\n\n let needDrain = false\n\n while (!needDrain) {\n const item = queue.shift()\n if (!item) {\n break\n }\n pool[kQueued]--\n needDrain = !this.dispatch(item.opts, item.handler)\n }\n\n this[kNeedDrain] = needDrain\n\n if (!this[kNeedDrain] && pool[kNeedDrain]) {\n pool[kNeedDrain] = false\n pool.emit('drain', origin, [pool, ...targets])\n }\n\n if (pool[kClosedResolve] && queue.isEmpty()) {\n Promise\n .all(pool[kClients].map(c => c.close()))\n .then(pool[kClosedResolve])\n }\n }\n\n this[kOnConnect] = (origin, targets) => {\n pool.emit('connect', origin, [pool, ...targets])\n }\n\n this[kOnDisconnect] = (origin, targets, err) => {\n pool.emit('disconnect', origin, [pool, ...targets], err)\n }\n\n this[kOnConnectionError] = (origin, targets, err) => {\n pool.emit('connectionError', origin, [pool, ...targets], err)\n }\n\n this[kStats] = new PoolStats(this)\n }\n\n get [kBusy] () {\n return this[kNeedDrain]\n }\n\n get [kConnected] () {\n return this[kClients].filter(client => client[kConnected]).length\n }\n\n get [kFree] () {\n return this[kClients].filter(client => client[kConnected] && !client[kNeedDrain]).length\n }\n\n get [kPending] () {\n let ret = this[kQueued]\n for (const { [kPending]: pending } of this[kClients]) {\n ret += pending\n }\n return ret\n }\n\n get [kRunning] () {\n let ret = 0\n for (const { [kRunning]: running } of this[kClients]) {\n ret += running\n }\n return ret\n }\n\n get [kSize] () {\n let ret = this[kQueued]\n for (const { [kSize]: size } of this[kClients]) {\n ret += size\n }\n return ret\n }\n\n get stats () {\n return this[kStats]\n }\n\n async [kClose] () {\n if (this[kQueue].isEmpty()) {\n return Promise.all(this[kClients].map(c => c.close()))\n } else {\n return new Promise((resolve) => {\n this[kClosedResolve] = resolve\n })\n }\n }\n\n async [kDestroy] (err) {\n while (true) {\n const item = this[kQueue].shift()\n if (!item) {\n break\n }\n item.handler.onError(err)\n }\n\n return Promise.all(this[kClients].map(c => c.destroy(err)))\n }\n\n [kDispatch] (opts, handler) {\n const dispatcher = this[kGetDispatcher]()\n\n if (!dispatcher) {\n this[kNeedDrain] = true\n this[kQueue].push({ opts, handler })\n this[kQueued]++\n } else if (!dispatcher.dispatch(opts, handler)) {\n dispatcher[kNeedDrain] = true\n this[kNeedDrain] = !this[kGetDispatcher]()\n }\n\n return !this[kNeedDrain]\n }\n\n [kAddClient] (client) {\n client\n .on('drain', this[kOnDrain])\n .on('connect', this[kOnConnect])\n .on('disconnect', this[kOnDisconnect])\n .on('connectionError', this[kOnConnectionError])\n\n this[kClients].push(client)\n\n if (this[kNeedDrain]) {\n process.nextTick(() => {\n if (this[kNeedDrain]) {\n this[kOnDrain](client[kUrl], [this, client])\n }\n })\n }\n\n return this\n }\n\n [kRemoveClient] (client) {\n client.close(() => {\n const idx = this[kClients].indexOf(client)\n if (idx !== -1) {\n this[kClients].splice(idx, 1)\n }\n })\n\n this[kNeedDrain] = this[kClients].some(dispatcher => (\n !dispatcher[kNeedDrain] &&\n dispatcher.closed !== true &&\n dispatcher.destroyed !== true\n ))\n }\n}\n\nmodule.exports = {\n PoolBase,\n kClients,\n kNeedDrain,\n kAddClient,\n kRemoveClient,\n kGetDispatcher\n}\n", "'use strict'\n\nconst {\n PoolBase,\n kClients,\n kNeedDrain,\n kAddClient,\n kGetDispatcher\n} = require('./pool-base')\nconst Client = require('./client')\nconst {\n InvalidArgumentError\n} = require('./core/errors')\nconst util = require('./core/util')\nconst { kUrl, kInterceptors } = require('./core/symbols')\nconst buildConnector = require('./core/connect')\n\nconst kOptions = Symbol('options')\nconst kConnections = Symbol('connections')\nconst kFactory = Symbol('factory')\n\nfunction defaultFactory (origin, opts) {\n return new Client(origin, opts)\n}\n\nclass Pool extends PoolBase {\n constructor (origin, {\n connections,\n factory = defaultFactory,\n connect,\n connectTimeout,\n tls,\n maxCachedSessions,\n socketPath,\n autoSelectFamily,\n autoSelectFamilyAttemptTimeout,\n allowH2,\n ...options\n } = {}) {\n super()\n\n if (connections != null && (!Number.isFinite(connections) || connections < 0)) {\n throw new InvalidArgumentError('invalid connections')\n }\n\n if (typeof factory !== 'function') {\n throw new InvalidArgumentError('factory must be a function.')\n }\n\n if (connect != null && typeof connect !== 'function' && typeof connect !== 'object') {\n throw new InvalidArgumentError('connect must be a function or an object')\n }\n\n if (typeof connect !== 'function') {\n connect = buildConnector({\n ...tls,\n maxCachedSessions,\n allowH2,\n socketPath,\n timeout: connectTimeout,\n ...(util.nodeHasAutoSelectFamily && autoSelectFamily ? { autoSelectFamily, autoSelectFamilyAttemptTimeout } : undefined),\n ...connect\n })\n }\n\n this[kInterceptors] = options.interceptors && options.interceptors.Pool && Array.isArray(options.interceptors.Pool)\n ? options.interceptors.Pool\n : []\n this[kConnections] = connections || null\n this[kUrl] = util.parseOrigin(origin)\n this[kOptions] = { ...util.deepClone(options), connect, allowH2 }\n this[kOptions].interceptors = options.interceptors\n ? { ...options.interceptors }\n : undefined\n this[kFactory] = factory\n }\n\n [kGetDispatcher] () {\n let dispatcher = this[kClients].find(dispatcher => !dispatcher[kNeedDrain])\n\n if (dispatcher) {\n return dispatcher\n }\n\n if (!this[kConnections] || this[kClients].length < this[kConnections]) {\n dispatcher = this[kFactory](this[kUrl], this[kOptions])\n this[kAddClient](dispatcher)\n }\n\n return dispatcher\n }\n}\n\nmodule.exports = Pool\n", "'use strict'\n\nconst {\n BalancedPoolMissingUpstreamError,\n InvalidArgumentError\n} = require('./core/errors')\nconst {\n PoolBase,\n kClients,\n kNeedDrain,\n kAddClient,\n kRemoveClient,\n kGetDispatcher\n} = require('./pool-base')\nconst Pool = require('./pool')\nconst { kUrl, kInterceptors } = require('./core/symbols')\nconst { parseOrigin } = require('./core/util')\nconst kFactory = Symbol('factory')\n\nconst kOptions = Symbol('options')\nconst kGreatestCommonDivisor = Symbol('kGreatestCommonDivisor')\nconst kCurrentWeight = Symbol('kCurrentWeight')\nconst kIndex = Symbol('kIndex')\nconst kWeight = Symbol('kWeight')\nconst kMaxWeightPerServer = Symbol('kMaxWeightPerServer')\nconst kErrorPenalty = Symbol('kErrorPenalty')\n\nfunction getGreatestCommonDivisor (a, b) {\n if (b === 0) return a\n return getGreatestCommonDivisor(b, a % b)\n}\n\nfunction defaultFactory (origin, opts) {\n return new Pool(origin, opts)\n}\n\nclass BalancedPool extends PoolBase {\n constructor (upstreams = [], { factory = defaultFactory, ...opts } = {}) {\n super()\n\n this[kOptions] = opts\n this[kIndex] = -1\n this[kCurrentWeight] = 0\n\n this[kMaxWeightPerServer] = this[kOptions].maxWeightPerServer || 100\n this[kErrorPenalty] = this[kOptions].errorPenalty || 15\n\n if (!Array.isArray(upstreams)) {\n upstreams = [upstreams]\n }\n\n if (typeof factory !== 'function') {\n throw new InvalidArgumentError('factory must be a function.')\n }\n\n this[kInterceptors] = opts.interceptors && opts.interceptors.BalancedPool && Array.isArray(opts.interceptors.BalancedPool)\n ? opts.interceptors.BalancedPool\n : []\n this[kFactory] = factory\n\n for (const upstream of upstreams) {\n this.addUpstream(upstream)\n }\n this._updateBalancedPoolStats()\n }\n\n addUpstream (upstream) {\n const upstreamOrigin = parseOrigin(upstream).origin\n\n if (this[kClients].find((pool) => (\n pool[kUrl].origin === upstreamOrigin &&\n pool.closed !== true &&\n pool.destroyed !== true\n ))) {\n return this\n }\n const pool = this[kFactory](upstreamOrigin, Object.assign({}, this[kOptions]))\n\n this[kAddClient](pool)\n pool.on('connect', () => {\n pool[kWeight] = Math.min(this[kMaxWeightPerServer], pool[kWeight] + this[kErrorPenalty])\n })\n\n pool.on('connectionError', () => {\n pool[kWeight] = Math.max(1, pool[kWeight] - this[kErrorPenalty])\n this._updateBalancedPoolStats()\n })\n\n pool.on('disconnect', (...args) => {\n const err = args[2]\n if (err && err.code === 'UND_ERR_SOCKET') {\n // decrease the weight of the pool.\n pool[kWeight] = Math.max(1, pool[kWeight] - this[kErrorPenalty])\n this._updateBalancedPoolStats()\n }\n })\n\n for (const client of this[kClients]) {\n client[kWeight] = this[kMaxWeightPerServer]\n }\n\n this._updateBalancedPoolStats()\n\n return this\n }\n\n _updateBalancedPoolStats () {\n this[kGreatestCommonDivisor] = this[kClients].map(p => p[kWeight]).reduce(getGreatestCommonDivisor, 0)\n }\n\n removeUpstream (upstream) {\n const upstreamOrigin = parseOrigin(upstream).origin\n\n const pool = this[kClients].find((pool) => (\n pool[kUrl].origin === upstreamOrigin &&\n pool.closed !== true &&\n pool.destroyed !== true\n ))\n\n if (pool) {\n this[kRemoveClient](pool)\n }\n\n return this\n }\n\n get upstreams () {\n return this[kClients]\n .filter(dispatcher => dispatcher.closed !== true && dispatcher.destroyed !== true)\n .map((p) => p[kUrl].origin)\n }\n\n [kGetDispatcher] () {\n // We validate that pools is greater than 0,\n // otherwise we would have to wait until an upstream\n // is added, which might never happen.\n if (this[kClients].length === 0) {\n throw new BalancedPoolMissingUpstreamError()\n }\n\n const dispatcher = this[kClients].find(dispatcher => (\n !dispatcher[kNeedDrain] &&\n dispatcher.closed !== true &&\n dispatcher.destroyed !== true\n ))\n\n if (!dispatcher) {\n return\n }\n\n const allClientsBusy = this[kClients].map(pool => pool[kNeedDrain]).reduce((a, b) => a && b, true)\n\n if (allClientsBusy) {\n return\n }\n\n let counter = 0\n\n let maxWeightIndex = this[kClients].findIndex(pool => !pool[kNeedDrain])\n\n while (counter++ < this[kClients].length) {\n this[kIndex] = (this[kIndex] + 1) % this[kClients].length\n const pool = this[kClients][this[kIndex]]\n\n // find pool index with the largest weight\n if (pool[kWeight] > this[kClients][maxWeightIndex][kWeight] && !pool[kNeedDrain]) {\n maxWeightIndex = this[kIndex]\n }\n\n // decrease the current weight every `this[kClients].length`.\n if (this[kIndex] === 0) {\n // Set the current weight to the next lower weight.\n this[kCurrentWeight] = this[kCurrentWeight] - this[kGreatestCommonDivisor]\n\n if (this[kCurrentWeight] <= 0) {\n this[kCurrentWeight] = this[kMaxWeightPerServer]\n }\n }\n if (pool[kWeight] >= this[kCurrentWeight] && (!pool[kNeedDrain])) {\n return pool\n }\n }\n\n this[kCurrentWeight] = this[kClients][maxWeightIndex][kWeight]\n this[kIndex] = maxWeightIndex\n return this[kClients][maxWeightIndex]\n }\n}\n\nmodule.exports = BalancedPool\n", "'use strict'\n\n/* istanbul ignore file: only for Node 12 */\n\nconst { kConnected, kSize } = require('../core/symbols')\n\nclass CompatWeakRef {\n constructor (value) {\n this.value = value\n }\n\n deref () {\n return this.value[kConnected] === 0 && this.value[kSize] === 0\n ? undefined\n : this.value\n }\n}\n\nclass CompatFinalizer {\n constructor (finalizer) {\n this.finalizer = finalizer\n }\n\n register (dispatcher, key) {\n if (dispatcher.on) {\n dispatcher.on('disconnect', () => {\n if (dispatcher[kConnected] === 0 && dispatcher[kSize] === 0) {\n this.finalizer(key)\n }\n })\n }\n }\n}\n\nmodule.exports = function () {\n // FIXME: remove workaround when the Node bug is fixed\n // https://github.com/nodejs/node/issues/49344#issuecomment-1741776308\n if (process.env.NODE_V8_COVERAGE) {\n return {\n WeakRef: CompatWeakRef,\n FinalizationRegistry: CompatFinalizer\n }\n }\n return {\n WeakRef: global.WeakRef || CompatWeakRef,\n FinalizationRegistry: global.FinalizationRegistry || CompatFinalizer\n }\n}\n", "'use strict'\n\nconst { InvalidArgumentError } = require('./core/errors')\nconst { kClients, kRunning, kClose, kDestroy, kDispatch, kInterceptors } = require('./core/symbols')\nconst DispatcherBase = require('./dispatcher-base')\nconst Pool = require('./pool')\nconst Client = require('./client')\nconst util = require('./core/util')\nconst createRedirectInterceptor = require('./interceptor/redirectInterceptor')\nconst { WeakRef, FinalizationRegistry } = require('./compat/dispatcher-weakref')()\n\nconst kOnConnect = Symbol('onConnect')\nconst kOnDisconnect = Symbol('onDisconnect')\nconst kOnConnectionError = Symbol('onConnectionError')\nconst kMaxRedirections = Symbol('maxRedirections')\nconst kOnDrain = Symbol('onDrain')\nconst kFactory = Symbol('factory')\nconst kFinalizer = Symbol('finalizer')\nconst kOptions = Symbol('options')\n\nfunction defaultFactory (origin, opts) {\n return opts && opts.connections === 1\n ? new Client(origin, opts)\n : new Pool(origin, opts)\n}\n\nclass Agent extends DispatcherBase {\n constructor ({ factory = defaultFactory, maxRedirections = 0, connect, ...options } = {}) {\n super()\n\n if (typeof factory !== 'function') {\n throw new InvalidArgumentError('factory must be a function.')\n }\n\n if (connect != null && typeof connect !== 'function' && typeof connect !== 'object') {\n throw new InvalidArgumentError('connect must be a function or an object')\n }\n\n if (!Number.isInteger(maxRedirections) || maxRedirections < 0) {\n throw new InvalidArgumentError('maxRedirections must be a positive number')\n }\n\n if (connect && typeof connect !== 'function') {\n connect = { ...connect }\n }\n\n this[kInterceptors] = options.interceptors && options.interceptors.Agent && Array.isArray(options.interceptors.Agent)\n ? options.interceptors.Agent\n : [createRedirectInterceptor({ maxRedirections })]\n\n this[kOptions] = { ...util.deepClone(options), connect }\n this[kOptions].interceptors = options.interceptors\n ? { ...options.interceptors }\n : undefined\n this[kMaxRedirections] = maxRedirections\n this[kFactory] = factory\n this[kClients] = new Map()\n this[kFinalizer] = new FinalizationRegistry(/* istanbul ignore next: gc is undeterministic */ key => {\n const ref = this[kClients].get(key)\n if (ref !== undefined && ref.deref() === undefined) {\n this[kClients].delete(key)\n }\n })\n\n const agent = this\n\n this[kOnDrain] = (origin, targets) => {\n agent.emit('drain', origin, [agent, ...targets])\n }\n\n this[kOnConnect] = (origin, targets) => {\n agent.emit('connect', origin, [agent, ...targets])\n }\n\n this[kOnDisconnect] = (origin, targets, err) => {\n agent.emit('disconnect', origin, [agent, ...targets], err)\n }\n\n this[kOnConnectionError] = (origin, targets, err) => {\n agent.emit('connectionError', origin, [agent, ...targets], err)\n }\n }\n\n get [kRunning] () {\n let ret = 0\n for (const ref of this[kClients].values()) {\n const client = ref.deref()\n /* istanbul ignore next: gc is undeterministic */\n if (client) {\n ret += client[kRunning]\n }\n }\n return ret\n }\n\n [kDispatch] (opts, handler) {\n let key\n if (opts.origin && (typeof opts.origin === 'string' || opts.origin instanceof URL)) {\n key = String(opts.origin)\n } else {\n throw new InvalidArgumentError('opts.origin must be a non-empty string or URL.')\n }\n\n const ref = this[kClients].get(key)\n\n let dispatcher = ref ? ref.deref() : null\n if (!dispatcher) {\n dispatcher = this[kFactory](opts.origin, this[kOptions])\n .on('drain', this[kOnDrain])\n .on('connect', this[kOnConnect])\n .on('disconnect', this[kOnDisconnect])\n .on('connectionError', this[kOnConnectionError])\n\n this[kClients].set(key, new WeakRef(dispatcher))\n this[kFinalizer].register(dispatcher, key)\n }\n\n return dispatcher.dispatch(opts, handler)\n }\n\n async [kClose] () {\n const closePromises = []\n for (const ref of this[kClients].values()) {\n const client = ref.deref()\n /* istanbul ignore else: gc is undeterministic */\n if (client) {\n closePromises.push(client.close())\n }\n }\n\n await Promise.all(closePromises)\n }\n\n async [kDestroy] (err) {\n const destroyPromises = []\n for (const ref of this[kClients].values()) {\n const client = ref.deref()\n /* istanbul ignore else: gc is undeterministic */\n if (client) {\n destroyPromises.push(client.destroy(err))\n }\n }\n\n await Promise.all(destroyPromises)\n }\n}\n\nmodule.exports = Agent\n", "// Ported from https://github.com/nodejs/undici/pull/907\n\n'use strict'\n\nconst assert = require('assert')\nconst { Readable } = require('stream')\nconst { RequestAbortedError, NotSupportedError, InvalidArgumentError } = require('../core/errors')\nconst util = require('../core/util')\nconst { ReadableStreamFrom, toUSVString } = require('../core/util')\n\nlet Blob\n\nconst kConsume = Symbol('kConsume')\nconst kReading = Symbol('kReading')\nconst kBody = Symbol('kBody')\nconst kAbort = Symbol('abort')\nconst kContentType = Symbol('kContentType')\n\nconst noop = () => {}\n\nmodule.exports = class BodyReadable extends Readable {\n constructor ({\n resume,\n abort,\n contentType = '',\n highWaterMark = 64 * 1024 // Same as nodejs fs streams.\n }) {\n super({\n autoDestroy: true,\n read: resume,\n highWaterMark\n })\n\n this._readableState.dataEmitted = false\n\n this[kAbort] = abort\n this[kConsume] = null\n this[kBody] = null\n this[kContentType] = contentType\n\n // Is stream being consumed through Readable API?\n // This is an optimization so that we avoid checking\n // for 'data' and 'readable' listeners in the hot path\n // inside push().\n this[kReading] = false\n }\n\n destroy (err) {\n if (this.destroyed) {\n // Node < 16\n return this\n }\n\n if (!err && !this._readableState.endEmitted) {\n err = new RequestAbortedError()\n }\n\n if (err) {\n this[kAbort]()\n }\n\n return super.destroy(err)\n }\n\n emit (ev, ...args) {\n if (ev === 'data') {\n // Node < 16.7\n this._readableState.dataEmitted = true\n } else if (ev === 'error') {\n // Node < 16\n this._readableState.errorEmitted = true\n }\n return super.emit(ev, ...args)\n }\n\n on (ev, ...args) {\n if (ev === 'data' || ev === 'readable') {\n this[kReading] = true\n }\n return super.on(ev, ...args)\n }\n\n addListener (ev, ...args) {\n return this.on(ev, ...args)\n }\n\n off (ev, ...args) {\n const ret = super.off(ev, ...args)\n if (ev === 'data' || ev === 'readable') {\n this[kReading] = (\n this.listenerCount('data') > 0 ||\n this.listenerCount('readable') > 0\n )\n }\n return ret\n }\n\n removeListener (ev, ...args) {\n return this.off(ev, ...args)\n }\n\n push (chunk) {\n if (this[kConsume] && chunk !== null && this.readableLength === 0) {\n consumePush(this[kConsume], chunk)\n return this[kReading] ? super.push(chunk) : true\n }\n return super.push(chunk)\n }\n\n // https://fetch.spec.whatwg.org/#dom-body-text\n async text () {\n return consume(this, 'text')\n }\n\n // https://fetch.spec.whatwg.org/#dom-body-json\n async json () {\n return consume(this, 'json')\n }\n\n // https://fetch.spec.whatwg.org/#dom-body-blob\n async blob () {\n return consume(this, 'blob')\n }\n\n // https://fetch.spec.whatwg.org/#dom-body-arraybuffer\n async arrayBuffer () {\n return consume(this, 'arrayBuffer')\n }\n\n // https://fetch.spec.whatwg.org/#dom-body-formdata\n async formData () {\n // TODO: Implement.\n throw new NotSupportedError()\n }\n\n // https://fetch.spec.whatwg.org/#dom-body-bodyused\n get bodyUsed () {\n return util.isDisturbed(this)\n }\n\n // https://fetch.spec.whatwg.org/#dom-body-body\n get body () {\n if (!this[kBody]) {\n this[kBody] = ReadableStreamFrom(this)\n if (this[kConsume]) {\n // TODO: Is this the best way to force a lock?\n this[kBody].getReader() // Ensure stream is locked.\n assert(this[kBody].locked)\n }\n }\n return this[kBody]\n }\n\n dump (opts) {\n let limit = opts && Number.isFinite(opts.limit) ? opts.limit : 262144\n const signal = opts && opts.signal\n\n if (signal) {\n try {\n if (typeof signal !== 'object' || !('aborted' in signal)) {\n throw new InvalidArgumentError('signal must be an AbortSignal')\n }\n util.throwIfAborted(signal)\n } catch (err) {\n return Promise.reject(err)\n }\n }\n\n if (this.closed) {\n return Promise.resolve(null)\n }\n\n return new Promise((resolve, reject) => {\n const signalListenerCleanup = signal\n ? util.addAbortListener(signal, () => {\n this.destroy()\n })\n : noop\n\n this\n .on('close', function () {\n signalListenerCleanup()\n if (signal && signal.aborted) {\n reject(signal.reason || Object.assign(new Error('The operation was aborted'), { name: 'AbortError' }))\n } else {\n resolve(null)\n }\n })\n .on('error', noop)\n .on('data', function (chunk) {\n limit -= chunk.length\n if (limit <= 0) {\n this.destroy()\n }\n })\n .resume()\n })\n }\n}\n\n// https://streams.spec.whatwg.org/#readablestream-locked\nfunction isLocked (self) {\n // Consume is an implicit lock.\n return (self[kBody] && self[kBody].locked === true) || self[kConsume]\n}\n\n// https://fetch.spec.whatwg.org/#body-unusable\nfunction isUnusable (self) {\n return util.isDisturbed(self) || isLocked(self)\n}\n\nasync function consume (stream, type) {\n if (isUnusable(stream)) {\n throw new TypeError('unusable')\n }\n\n assert(!stream[kConsume])\n\n return new Promise((resolve, reject) => {\n stream[kConsume] = {\n type,\n stream,\n resolve,\n reject,\n length: 0,\n body: []\n }\n\n stream\n .on('error', function (err) {\n consumeFinish(this[kConsume], err)\n })\n .on('close', function () {\n if (this[kConsume].body !== null) {\n consumeFinish(this[kConsume], new RequestAbortedError())\n }\n })\n\n process.nextTick(consumeStart, stream[kConsume])\n })\n}\n\nfunction consumeStart (consume) {\n if (consume.body === null) {\n return\n }\n\n const { _readableState: state } = consume.stream\n\n for (const chunk of state.buffer) {\n consumePush(consume, chunk)\n }\n\n if (state.endEmitted) {\n consumeEnd(this[kConsume])\n } else {\n consume.stream.on('end', function () {\n consumeEnd(this[kConsume])\n })\n }\n\n consume.stream.resume()\n\n while (consume.stream.read() != null) {\n // Loop\n }\n}\n\nfunction consumeEnd (consume) {\n const { type, body, resolve, stream, length } = consume\n\n try {\n if (type === 'text') {\n resolve(toUSVString(Buffer.concat(body)))\n } else if (type === 'json') {\n resolve(JSON.parse(Buffer.concat(body)))\n } else if (type === 'arrayBuffer') {\n const dst = new Uint8Array(length)\n\n let pos = 0\n for (const buf of body) {\n dst.set(buf, pos)\n pos += buf.byteLength\n }\n\n resolve(dst.buffer)\n } else if (type === 'blob') {\n if (!Blob) {\n Blob = require('buffer').Blob\n }\n resolve(new Blob(body, { type: stream[kContentType] }))\n }\n\n consumeFinish(consume)\n } catch (err) {\n stream.destroy(err)\n }\n}\n\nfunction consumePush (consume, chunk) {\n consume.length += chunk.length\n consume.body.push(chunk)\n}\n\nfunction consumeFinish (consume, err) {\n if (consume.body === null) {\n return\n }\n\n if (err) {\n consume.reject(err)\n } else {\n consume.resolve()\n }\n\n consume.type = null\n consume.stream = null\n consume.resolve = null\n consume.reject = null\n consume.length = 0\n consume.body = null\n}\n", "const assert = require('assert')\nconst {\n ResponseStatusCodeError\n} = require('../core/errors')\nconst { toUSVString } = require('../core/util')\n\nasync function getResolveErrorBodyCallback ({ callback, body, contentType, statusCode, statusMessage, headers }) {\n assert(body)\n\n let chunks = []\n let limit = 0\n\n for await (const chunk of body) {\n chunks.push(chunk)\n limit += chunk.length\n if (limit > 128 * 1024) {\n chunks = null\n break\n }\n }\n\n if (statusCode === 204 || !contentType || !chunks) {\n process.nextTick(callback, new ResponseStatusCodeError(`Response status code ${statusCode}${statusMessage ? `: ${statusMessage}` : ''}`, statusCode, headers))\n return\n }\n\n try {\n if (contentType.startsWith('application/json')) {\n const payload = JSON.parse(toUSVString(Buffer.concat(chunks)))\n process.nextTick(callback, new ResponseStatusCodeError(`Response status code ${statusCode}${statusMessage ? `: ${statusMessage}` : ''}`, statusCode, headers, payload))\n return\n }\n\n if (contentType.startsWith('text/')) {\n const payload = toUSVString(Buffer.concat(chunks))\n process.nextTick(callback, new ResponseStatusCodeError(`Response status code ${statusCode}${statusMessage ? `: ${statusMessage}` : ''}`, statusCode, headers, payload))\n return\n }\n } catch (err) {\n // Process in a fallback if error\n }\n\n process.nextTick(callback, new ResponseStatusCodeError(`Response status code ${statusCode}${statusMessage ? `: ${statusMessage}` : ''}`, statusCode, headers))\n}\n\nmodule.exports = { getResolveErrorBodyCallback }\n", "const { addAbortListener } = require('../core/util')\nconst { RequestAbortedError } = require('../core/errors')\n\nconst kListener = Symbol('kListener')\nconst kSignal = Symbol('kSignal')\n\nfunction abort (self) {\n if (self.abort) {\n self.abort()\n } else {\n self.onError(new RequestAbortedError())\n }\n}\n\nfunction addSignal (self, signal) {\n self[kSignal] = null\n self[kListener] = null\n\n if (!signal) {\n return\n }\n\n if (signal.aborted) {\n abort(self)\n return\n }\n\n self[kSignal] = signal\n self[kListener] = () => {\n abort(self)\n }\n\n addAbortListener(self[kSignal], self[kListener])\n}\n\nfunction removeSignal (self) {\n if (!self[kSignal]) {\n return\n }\n\n if ('removeEventListener' in self[kSignal]) {\n self[kSignal].removeEventListener('abort', self[kListener])\n } else {\n self[kSignal].removeListener('abort', self[kListener])\n }\n\n self[kSignal] = null\n self[kListener] = null\n}\n\nmodule.exports = {\n addSignal,\n removeSignal\n}\n", "'use strict'\n\nconst Readable = require('./readable')\nconst {\n InvalidArgumentError,\n RequestAbortedError\n} = require('../core/errors')\nconst util = require('../core/util')\nconst { getResolveErrorBodyCallback } = require('./util')\nconst { AsyncResource } = require('async_hooks')\nconst { addSignal, removeSignal } = require('./abort-signal')\n\nclass RequestHandler extends AsyncResource {\n constructor (opts, callback) {\n if (!opts || typeof opts !== 'object') {\n throw new InvalidArgumentError('invalid opts')\n }\n\n const { signal, method, opaque, body, onInfo, responseHeaders, throwOnError, highWaterMark } = opts\n\n try {\n if (typeof callback !== 'function') {\n throw new InvalidArgumentError('invalid callback')\n }\n\n if (highWaterMark && (typeof highWaterMark !== 'number' || highWaterMark < 0)) {\n throw new InvalidArgumentError('invalid highWaterMark')\n }\n\n if (signal && typeof signal.on !== 'function' && typeof signal.addEventListener !== 'function') {\n throw new InvalidArgumentError('signal must be an EventEmitter or EventTarget')\n }\n\n if (method === 'CONNECT') {\n throw new InvalidArgumentError('invalid method')\n }\n\n if (onInfo && typeof onInfo !== 'function') {\n throw new InvalidArgumentError('invalid onInfo callback')\n }\n\n super('UNDICI_REQUEST')\n } catch (err) {\n if (util.isStream(body)) {\n util.destroy(body.on('error', util.nop), err)\n }\n throw err\n }\n\n this.responseHeaders = responseHeaders || null\n this.opaque = opaque || null\n this.callback = callback\n this.res = null\n this.abort = null\n this.body = body\n this.trailers = {}\n this.context = null\n this.onInfo = onInfo || null\n this.throwOnError = throwOnError\n this.highWaterMark = highWaterMark\n\n if (util.isStream(body)) {\n body.on('error', (err) => {\n this.onError(err)\n })\n }\n\n addSignal(this, signal)\n }\n\n onConnect (abort, context) {\n if (!this.callback) {\n throw new RequestAbortedError()\n }\n\n this.abort = abort\n this.context = context\n }\n\n onHeaders (statusCode, rawHeaders, resume, statusMessage) {\n const { callback, opaque, abort, context, responseHeaders, highWaterMark } = this\n\n const headers = responseHeaders === 'raw' ? util.parseRawHeaders(rawHeaders) : util.parseHeaders(rawHeaders)\n\n if (statusCode < 200) {\n if (this.onInfo) {\n this.onInfo({ statusCode, headers })\n }\n return\n }\n\n const parsedHeaders = responseHeaders === 'raw' ? util.parseHeaders(rawHeaders) : headers\n const contentType = parsedHeaders['content-type']\n const body = new Readable({ resume, abort, contentType, highWaterMark })\n\n this.callback = null\n this.res = body\n if (callback !== null) {\n if (this.throwOnError && statusCode >= 400) {\n this.runInAsyncScope(getResolveErrorBodyCallback, null,\n { callback, body, contentType, statusCode, statusMessage, headers }\n )\n } else {\n this.runInAsyncScope(callback, null, null, {\n statusCode,\n headers,\n trailers: this.trailers,\n opaque,\n body,\n context\n })\n }\n }\n }\n\n onData (chunk) {\n const { res } = this\n return res.push(chunk)\n }\n\n onComplete (trailers) {\n const { res } = this\n\n removeSignal(this)\n\n util.parseHeaders(trailers, this.trailers)\n\n res.push(null)\n }\n\n onError (err) {\n const { res, callback, body, opaque } = this\n\n removeSignal(this)\n\n if (callback) {\n // TODO: Does this need queueMicrotask?\n this.callback = null\n queueMicrotask(() => {\n this.runInAsyncScope(callback, null, err, { opaque })\n })\n }\n\n if (res) {\n this.res = null\n // Ensure all queued handlers are invoked before destroying res.\n queueMicrotask(() => {\n util.destroy(res, err)\n })\n }\n\n if (body) {\n this.body = null\n util.destroy(body, err)\n }\n }\n}\n\nfunction request (opts, callback) {\n if (callback === undefined) {\n return new Promise((resolve, reject) => {\n request.call(this, opts, (err, data) => {\n return err ? reject(err) : resolve(data)\n })\n })\n }\n\n try {\n this.dispatch(opts, new RequestHandler(opts, callback))\n } catch (err) {\n if (typeof callback !== 'function') {\n throw err\n }\n const opaque = opts && opts.opaque\n queueMicrotask(() => callback(err, { opaque }))\n }\n}\n\nmodule.exports = request\nmodule.exports.RequestHandler = RequestHandler\n", "'use strict'\n\nconst { finished, PassThrough } = require('stream')\nconst {\n InvalidArgumentError,\n InvalidReturnValueError,\n RequestAbortedError\n} = require('../core/errors')\nconst util = require('../core/util')\nconst { getResolveErrorBodyCallback } = require('./util')\nconst { AsyncResource } = require('async_hooks')\nconst { addSignal, removeSignal } = require('./abort-signal')\n\nclass StreamHandler extends AsyncResource {\n constructor (opts, factory, callback) {\n if (!opts || typeof opts !== 'object') {\n throw new InvalidArgumentError('invalid opts')\n }\n\n const { signal, method, opaque, body, onInfo, responseHeaders, throwOnError } = opts\n\n try {\n if (typeof callback !== 'function') {\n throw new InvalidArgumentError('invalid callback')\n }\n\n if (typeof factory !== 'function') {\n throw new InvalidArgumentError('invalid factory')\n }\n\n if (signal && typeof signal.on !== 'function' && typeof signal.addEventListener !== 'function') {\n throw new InvalidArgumentError('signal must be an EventEmitter or EventTarget')\n }\n\n if (method === 'CONNECT') {\n throw new InvalidArgumentError('invalid method')\n }\n\n if (onInfo && typeof onInfo !== 'function') {\n throw new InvalidArgumentError('invalid onInfo callback')\n }\n\n super('UNDICI_STREAM')\n } catch (err) {\n if (util.isStream(body)) {\n util.destroy(body.on('error', util.nop), err)\n }\n throw err\n }\n\n this.responseHeaders = responseHeaders || null\n this.opaque = opaque || null\n this.factory = factory\n this.callback = callback\n this.res = null\n this.abort = null\n this.context = null\n this.trailers = null\n this.body = body\n this.onInfo = onInfo || null\n this.throwOnError = throwOnError || false\n\n if (util.isStream(body)) {\n body.on('error', (err) => {\n this.onError(err)\n })\n }\n\n addSignal(this, signal)\n }\n\n onConnect (abort, context) {\n if (!this.callback) {\n throw new RequestAbortedError()\n }\n\n this.abort = abort\n this.context = context\n }\n\n onHeaders (statusCode, rawHeaders, resume, statusMessage) {\n const { factory, opaque, context, callback, responseHeaders } = this\n\n const headers = responseHeaders === 'raw' ? util.parseRawHeaders(rawHeaders) : util.parseHeaders(rawHeaders)\n\n if (statusCode < 200) {\n if (this.onInfo) {\n this.onInfo({ statusCode, headers })\n }\n return\n }\n\n this.factory = null\n\n let res\n\n if (this.throwOnError && statusCode >= 400) {\n const parsedHeaders = responseHeaders === 'raw' ? util.parseHeaders(rawHeaders) : headers\n const contentType = parsedHeaders['content-type']\n res = new PassThrough()\n\n this.callback = null\n this.runInAsyncScope(getResolveErrorBodyCallback, null,\n { callback, body: res, contentType, statusCode, statusMessage, headers }\n )\n } else {\n if (factory === null) {\n return\n }\n\n res = this.runInAsyncScope(factory, null, {\n statusCode,\n headers,\n opaque,\n context\n })\n\n if (\n !res ||\n typeof res.write !== 'function' ||\n typeof res.end !== 'function' ||\n typeof res.on !== 'function'\n ) {\n throw new InvalidReturnValueError('expected Writable')\n }\n\n // TODO: Avoid finished. It registers an unnecessary amount of listeners.\n finished(res, { readable: false }, (err) => {\n const { callback, res, opaque, trailers, abort } = this\n\n this.res = null\n if (err || !res.readable) {\n util.destroy(res, err)\n }\n\n this.callback = null\n this.runInAsyncScope(callback, null, err || null, { opaque, trailers })\n\n if (err) {\n abort()\n }\n })\n }\n\n res.on('drain', resume)\n\n this.res = res\n\n const needDrain = res.writableNeedDrain !== undefined\n ? res.writableNeedDrain\n : res._writableState && res._writableState.needDrain\n\n return needDrain !== true\n }\n\n onData (chunk) {\n const { res } = this\n\n return res ? res.write(chunk) : true\n }\n\n onComplete (trailers) {\n const { res } = this\n\n removeSignal(this)\n\n if (!res) {\n return\n }\n\n this.trailers = util.parseHeaders(trailers)\n\n res.end()\n }\n\n onError (err) {\n const { res, callback, opaque, body } = this\n\n removeSignal(this)\n\n this.factory = null\n\n if (res) {\n this.res = null\n util.destroy(res, err)\n } else if (callback) {\n this.callback = null\n queueMicrotask(() => {\n this.runInAsyncScope(callback, null, err, { opaque })\n })\n }\n\n if (body) {\n this.body = null\n util.destroy(body, err)\n }\n }\n}\n\nfunction stream (opts, factory, callback) {\n if (callback === undefined) {\n return new Promise((resolve, reject) => {\n stream.call(this, opts, factory, (err, data) => {\n return err ? reject(err) : resolve(data)\n })\n })\n }\n\n try {\n this.dispatch(opts, new StreamHandler(opts, factory, callback))\n } catch (err) {\n if (typeof callback !== 'function') {\n throw err\n }\n const opaque = opts && opts.opaque\n queueMicrotask(() => callback(err, { opaque }))\n }\n}\n\nmodule.exports = stream\n", "'use strict'\n\nconst {\n Readable,\n Duplex,\n PassThrough\n} = require('stream')\nconst {\n InvalidArgumentError,\n InvalidReturnValueError,\n RequestAbortedError\n} = require('../core/errors')\nconst util = require('../core/util')\nconst { AsyncResource } = require('async_hooks')\nconst { addSignal, removeSignal } = require('./abort-signal')\nconst assert = require('assert')\n\nconst kResume = Symbol('resume')\n\nclass PipelineRequest extends Readable {\n constructor () {\n super({ autoDestroy: true })\n\n this[kResume] = null\n }\n\n _read () {\n const { [kResume]: resume } = this\n\n if (resume) {\n this[kResume] = null\n resume()\n }\n }\n\n _destroy (err, callback) {\n this._read()\n\n callback(err)\n }\n}\n\nclass PipelineResponse extends Readable {\n constructor (resume) {\n super({ autoDestroy: true })\n this[kResume] = resume\n }\n\n _read () {\n this[kResume]()\n }\n\n _destroy (err, callback) {\n if (!err && !this._readableState.endEmitted) {\n err = new RequestAbortedError()\n }\n\n callback(err)\n }\n}\n\nclass PipelineHandler extends AsyncResource {\n constructor (opts, handler) {\n if (!opts || typeof opts !== 'object') {\n throw new InvalidArgumentError('invalid opts')\n }\n\n if (typeof handler !== 'function') {\n throw new InvalidArgumentError('invalid handler')\n }\n\n const { signal, method, opaque, onInfo, responseHeaders } = opts\n\n if (signal && typeof signal.on !== 'function' && typeof signal.addEventListener !== 'function') {\n throw new InvalidArgumentError('signal must be an EventEmitter or EventTarget')\n }\n\n if (method === 'CONNECT') {\n throw new InvalidArgumentError('invalid method')\n }\n\n if (onInfo && typeof onInfo !== 'function') {\n throw new InvalidArgumentError('invalid onInfo callback')\n }\n\n super('UNDICI_PIPELINE')\n\n this.opaque = opaque || null\n this.responseHeaders = responseHeaders || null\n this.handler = handler\n this.abort = null\n this.context = null\n this.onInfo = onInfo || null\n\n this.req = new PipelineRequest().on('error', util.nop)\n\n this.ret = new Duplex({\n readableObjectMode: opts.objectMode,\n autoDestroy: true,\n read: () => {\n const { body } = this\n\n if (body && body.resume) {\n body.resume()\n }\n },\n write: (chunk, encoding, callback) => {\n const { req } = this\n\n if (req.push(chunk, encoding) || req._readableState.destroyed) {\n callback()\n } else {\n req[kResume] = callback\n }\n },\n destroy: (err, callback) => {\n const { body, req, res, ret, abort } = this\n\n if (!err && !ret._readableState.endEmitted) {\n err = new RequestAbortedError()\n }\n\n if (abort && err) {\n abort()\n }\n\n util.destroy(body, err)\n util.destroy(req, err)\n util.destroy(res, err)\n\n removeSignal(this)\n\n callback(err)\n }\n }).on('prefinish', () => {\n const { req } = this\n\n // Node < 15 does not call _final in same tick.\n req.push(null)\n })\n\n this.res = null\n\n addSignal(this, signal)\n }\n\n onConnect (abort, context) {\n const { ret, res } = this\n\n assert(!res, 'pipeline cannot be retried')\n\n if (ret.destroyed) {\n throw new RequestAbortedError()\n }\n\n this.abort = abort\n this.context = context\n }\n\n onHeaders (statusCode, rawHeaders, resume) {\n const { opaque, handler, context } = this\n\n if (statusCode < 200) {\n if (this.onInfo) {\n const headers = this.responseHeaders === 'raw' ? util.parseRawHeaders(rawHeaders) : util.parseHeaders(rawHeaders)\n this.onInfo({ statusCode, headers })\n }\n return\n }\n\n this.res = new PipelineResponse(resume)\n\n let body\n try {\n this.handler = null\n const headers = this.responseHeaders === 'raw' ? util.parseRawHeaders(rawHeaders) : util.parseHeaders(rawHeaders)\n body = this.runInAsyncScope(handler, null, {\n statusCode,\n headers,\n opaque,\n body: this.res,\n context\n })\n } catch (err) {\n this.res.on('error', util.nop)\n throw err\n }\n\n if (!body || typeof body.on !== 'function') {\n throw new InvalidReturnValueError('expected Readable')\n }\n\n body\n .on('data', (chunk) => {\n const { ret, body } = this\n\n if (!ret.push(chunk) && body.pause) {\n body.pause()\n }\n })\n .on('error', (err) => {\n const { ret } = this\n\n util.destroy(ret, err)\n })\n .on('end', () => {\n const { ret } = this\n\n ret.push(null)\n })\n .on('close', () => {\n const { ret } = this\n\n if (!ret._readableState.ended) {\n util.destroy(ret, new RequestAbortedError())\n }\n })\n\n this.body = body\n }\n\n onData (chunk) {\n const { res } = this\n return res.push(chunk)\n }\n\n onComplete (trailers) {\n const { res } = this\n res.push(null)\n }\n\n onError (err) {\n const { ret } = this\n this.handler = null\n util.destroy(ret, err)\n }\n}\n\nfunction pipeline (opts, handler) {\n try {\n const pipelineHandler = new PipelineHandler(opts, handler)\n this.dispatch({ ...opts, body: pipelineHandler.req }, pipelineHandler)\n return pipelineHandler.ret\n } catch (err) {\n return new PassThrough().destroy(err)\n }\n}\n\nmodule.exports = pipeline\n", "'use strict'\n\nconst { InvalidArgumentError, RequestAbortedError, SocketError } = require('../core/errors')\nconst { AsyncResource } = require('async_hooks')\nconst util = require('../core/util')\nconst { addSignal, removeSignal } = require('./abort-signal')\nconst assert = require('assert')\n\nclass UpgradeHandler extends AsyncResource {\n constructor (opts, callback) {\n if (!opts || typeof opts !== 'object') {\n throw new InvalidArgumentError('invalid opts')\n }\n\n if (typeof callback !== 'function') {\n throw new InvalidArgumentError('invalid callback')\n }\n\n const { signal, opaque, responseHeaders } = opts\n\n if (signal && typeof signal.on !== 'function' && typeof signal.addEventListener !== 'function') {\n throw new InvalidArgumentError('signal must be an EventEmitter or EventTarget')\n }\n\n super('UNDICI_UPGRADE')\n\n this.responseHeaders = responseHeaders || null\n this.opaque = opaque || null\n this.callback = callback\n this.abort = null\n this.context = null\n\n addSignal(this, signal)\n }\n\n onConnect (abort, context) {\n if (!this.callback) {\n throw new RequestAbortedError()\n }\n\n this.abort = abort\n this.context = null\n }\n\n onHeaders () {\n throw new SocketError('bad upgrade', null)\n }\n\n onUpgrade (statusCode, rawHeaders, socket) {\n const { callback, opaque, context } = this\n\n assert.strictEqual(statusCode, 101)\n\n removeSignal(this)\n\n this.callback = null\n const headers = this.responseHeaders === 'raw' ? util.parseRawHeaders(rawHeaders) : util.parseHeaders(rawHeaders)\n this.runInAsyncScope(callback, null, null, {\n headers,\n socket,\n opaque,\n context\n })\n }\n\n onError (err) {\n const { callback, opaque } = this\n\n removeSignal(this)\n\n if (callback) {\n this.callback = null\n queueMicrotask(() => {\n this.runInAsyncScope(callback, null, err, { opaque })\n })\n }\n }\n}\n\nfunction upgrade (opts, callback) {\n if (callback === undefined) {\n return new Promise((resolve, reject) => {\n upgrade.call(this, opts, (err, data) => {\n return err ? reject(err) : resolve(data)\n })\n })\n }\n\n try {\n const upgradeHandler = new UpgradeHandler(opts, callback)\n this.dispatch({\n ...opts,\n method: opts.method || 'GET',\n upgrade: opts.protocol || 'Websocket'\n }, upgradeHandler)\n } catch (err) {\n if (typeof callback !== 'function') {\n throw err\n }\n const opaque = opts && opts.opaque\n queueMicrotask(() => callback(err, { opaque }))\n }\n}\n\nmodule.exports = upgrade\n", "'use strict'\n\nconst { AsyncResource } = require('async_hooks')\nconst { InvalidArgumentError, RequestAbortedError, SocketError } = require('../core/errors')\nconst util = require('../core/util')\nconst { addSignal, removeSignal } = require('./abort-signal')\n\nclass ConnectHandler extends AsyncResource {\n constructor (opts, callback) {\n if (!opts || typeof opts !== 'object') {\n throw new InvalidArgumentError('invalid opts')\n }\n\n if (typeof callback !== 'function') {\n throw new InvalidArgumentError('invalid callback')\n }\n\n const { signal, opaque, responseHeaders } = opts\n\n if (signal && typeof signal.on !== 'function' && typeof signal.addEventListener !== 'function') {\n throw new InvalidArgumentError('signal must be an EventEmitter or EventTarget')\n }\n\n super('UNDICI_CONNECT')\n\n this.opaque = opaque || null\n this.responseHeaders = responseHeaders || null\n this.callback = callback\n this.abort = null\n\n addSignal(this, signal)\n }\n\n onConnect (abort, context) {\n if (!this.callback) {\n throw new RequestAbortedError()\n }\n\n this.abort = abort\n this.context = context\n }\n\n onHeaders () {\n throw new SocketError('bad connect', null)\n }\n\n onUpgrade (statusCode, rawHeaders, socket) {\n const { callback, opaque, context } = this\n\n removeSignal(this)\n\n this.callback = null\n\n let headers = rawHeaders\n // Indicates is an HTTP2Session\n if (headers != null) {\n headers = this.responseHeaders === 'raw' ? util.parseRawHeaders(rawHeaders) : util.parseHeaders(rawHeaders)\n }\n\n this.runInAsyncScope(callback, null, null, {\n statusCode,\n headers,\n socket,\n opaque,\n context\n })\n }\n\n onError (err) {\n const { callback, opaque } = this\n\n removeSignal(this)\n\n if (callback) {\n this.callback = null\n queueMicrotask(() => {\n this.runInAsyncScope(callback, null, err, { opaque })\n })\n }\n }\n}\n\nfunction connect (opts, callback) {\n if (callback === undefined) {\n return new Promise((resolve, reject) => {\n connect.call(this, opts, (err, data) => {\n return err ? reject(err) : resolve(data)\n })\n })\n }\n\n try {\n const connectHandler = new ConnectHandler(opts, callback)\n this.dispatch({ ...opts, method: 'CONNECT' }, connectHandler)\n } catch (err) {\n if (typeof callback !== 'function') {\n throw err\n }\n const opaque = opts && opts.opaque\n queueMicrotask(() => callback(err, { opaque }))\n }\n}\n\nmodule.exports = connect\n", "'use strict'\n\nmodule.exports.request = require('./api-request')\nmodule.exports.stream = require('./api-stream')\nmodule.exports.pipeline = require('./api-pipeline')\nmodule.exports.upgrade = require('./api-upgrade')\nmodule.exports.connect = require('./api-connect')\n", "'use strict'\n\nconst { UndiciError } = require('../core/errors')\n\nclass MockNotMatchedError extends UndiciError {\n constructor (message) {\n super(message)\n Error.captureStackTrace(this, MockNotMatchedError)\n this.name = 'MockNotMatchedError'\n this.message = message || 'The request does not match any registered mock dispatches'\n this.code = 'UND_MOCK_ERR_MOCK_NOT_MATCHED'\n }\n}\n\nmodule.exports = {\n MockNotMatchedError\n}\n", "'use strict'\n\nmodule.exports = {\n kAgent: Symbol('agent'),\n kOptions: Symbol('options'),\n kFactory: Symbol('factory'),\n kDispatches: Symbol('dispatches'),\n kDispatchKey: Symbol('dispatch key'),\n kDefaultHeaders: Symbol('default headers'),\n kDefaultTrailers: Symbol('default trailers'),\n kContentLength: Symbol('content length'),\n kMockAgent: Symbol('mock agent'),\n kMockAgentSet: Symbol('mock agent set'),\n kMockAgentGet: Symbol('mock agent get'),\n kMockDispatch: Symbol('mock dispatch'),\n kClose: Symbol('close'),\n kOriginalClose: Symbol('original agent close'),\n kOrigin: Symbol('origin'),\n kIsMockActive: Symbol('is mock active'),\n kNetConnect: Symbol('net connect'),\n kGetNetConnect: Symbol('get net connect'),\n kConnected: Symbol('connected')\n}\n", "'use strict'\n\nconst { MockNotMatchedError } = require('./mock-errors')\nconst {\n kDispatches,\n kMockAgent,\n kOriginalDispatch,\n kOrigin,\n kGetNetConnect\n} = require('./mock-symbols')\nconst { buildURL, nop } = require('../core/util')\nconst { STATUS_CODES } = require('http')\nconst {\n types: {\n isPromise\n }\n} = require('util')\n\nfunction matchValue (match, value) {\n if (typeof match === 'string') {\n return match === value\n }\n if (match instanceof RegExp) {\n return match.test(value)\n }\n if (typeof match === 'function') {\n return match(value) === true\n }\n return false\n}\n\nfunction lowerCaseEntries (headers) {\n return Object.fromEntries(\n Object.entries(headers).map(([headerName, headerValue]) => {\n return [headerName.toLocaleLowerCase(), headerValue]\n })\n )\n}\n\n/**\n * @param {import('../../index').Headers|string[]|Record} headers\n * @param {string} key\n */\nfunction getHeaderByName (headers, key) {\n if (Array.isArray(headers)) {\n for (let i = 0; i < headers.length; i += 2) {\n if (headers[i].toLocaleLowerCase() === key.toLocaleLowerCase()) {\n return headers[i + 1]\n }\n }\n\n return undefined\n } else if (typeof headers.get === 'function') {\n return headers.get(key)\n } else {\n return lowerCaseEntries(headers)[key.toLocaleLowerCase()]\n }\n}\n\n/** @param {string[]} headers */\nfunction buildHeadersFromArray (headers) { // fetch HeadersList\n const clone = headers.slice()\n const entries = []\n for (let index = 0; index < clone.length; index += 2) {\n entries.push([clone[index], clone[index + 1]])\n }\n return Object.fromEntries(entries)\n}\n\nfunction matchHeaders (mockDispatch, headers) {\n if (typeof mockDispatch.headers === 'function') {\n if (Array.isArray(headers)) { // fetch HeadersList\n headers = buildHeadersFromArray(headers)\n }\n return mockDispatch.headers(headers ? lowerCaseEntries(headers) : {})\n }\n if (typeof mockDispatch.headers === 'undefined') {\n return true\n }\n if (typeof headers !== 'object' || typeof mockDispatch.headers !== 'object') {\n return false\n }\n\n for (const [matchHeaderName, matchHeaderValue] of Object.entries(mockDispatch.headers)) {\n const headerValue = getHeaderByName(headers, matchHeaderName)\n\n if (!matchValue(matchHeaderValue, headerValue)) {\n return false\n }\n }\n return true\n}\n\nfunction safeUrl (path) {\n if (typeof path !== 'string') {\n return path\n }\n\n const pathSegments = path.split('?')\n\n if (pathSegments.length !== 2) {\n return path\n }\n\n const qp = new URLSearchParams(pathSegments.pop())\n qp.sort()\n return [...pathSegments, qp.toString()].join('?')\n}\n\nfunction matchKey (mockDispatch, { path, method, body, headers }) {\n const pathMatch = matchValue(mockDispatch.path, path)\n const methodMatch = matchValue(mockDispatch.method, method)\n const bodyMatch = typeof mockDispatch.body !== 'undefined' ? matchValue(mockDispatch.body, body) : true\n const headersMatch = matchHeaders(mockDispatch, headers)\n return pathMatch && methodMatch && bodyMatch && headersMatch\n}\n\nfunction getResponseData (data) {\n if (Buffer.isBuffer(data)) {\n return data\n } else if (typeof data === 'object') {\n return JSON.stringify(data)\n } else {\n return data.toString()\n }\n}\n\nfunction getMockDispatch (mockDispatches, key) {\n const basePath = key.query ? buildURL(key.path, key.query) : key.path\n const resolvedPath = typeof basePath === 'string' ? safeUrl(basePath) : basePath\n\n // Match path\n let matchedMockDispatches = mockDispatches.filter(({ consumed }) => !consumed).filter(({ path }) => matchValue(safeUrl(path), resolvedPath))\n if (matchedMockDispatches.length === 0) {\n throw new MockNotMatchedError(`Mock dispatch not matched for path '${resolvedPath}'`)\n }\n\n // Match method\n matchedMockDispatches = matchedMockDispatches.filter(({ method }) => matchValue(method, key.method))\n if (matchedMockDispatches.length === 0) {\n throw new MockNotMatchedError(`Mock dispatch not matched for method '${key.method}'`)\n }\n\n // Match body\n matchedMockDispatches = matchedMockDispatches.filter(({ body }) => typeof body !== 'undefined' ? matchValue(body, key.body) : true)\n if (matchedMockDispatches.length === 0) {\n throw new MockNotMatchedError(`Mock dispatch not matched for body '${key.body}'`)\n }\n\n // Match headers\n matchedMockDispatches = matchedMockDispatches.filter((mockDispatch) => matchHeaders(mockDispatch, key.headers))\n if (matchedMockDispatches.length === 0) {\n throw new MockNotMatchedError(`Mock dispatch not matched for headers '${typeof key.headers === 'object' ? JSON.stringify(key.headers) : key.headers}'`)\n }\n\n return matchedMockDispatches[0]\n}\n\nfunction addMockDispatch (mockDispatches, key, data) {\n const baseData = { timesInvoked: 0, times: 1, persist: false, consumed: false }\n const replyData = typeof data === 'function' ? { callback: data } : { ...data }\n const newMockDispatch = { ...baseData, ...key, pending: true, data: { error: null, ...replyData } }\n mockDispatches.push(newMockDispatch)\n return newMockDispatch\n}\n\nfunction deleteMockDispatch (mockDispatches, key) {\n const index = mockDispatches.findIndex(dispatch => {\n if (!dispatch.consumed) {\n return false\n }\n return matchKey(dispatch, key)\n })\n if (index !== -1) {\n mockDispatches.splice(index, 1)\n }\n}\n\nfunction buildKey (opts) {\n const { path, method, body, headers, query } = opts\n return {\n path,\n method,\n body,\n headers,\n query\n }\n}\n\nfunction generateKeyValues (data) {\n return Object.entries(data).reduce((keyValuePairs, [key, value]) => [\n ...keyValuePairs,\n Buffer.from(`${key}`),\n Array.isArray(value) ? value.map(x => Buffer.from(`${x}`)) : Buffer.from(`${value}`)\n ], [])\n}\n\n/**\n * @see https://developer.mozilla.org/en-US/docs/Web/HTTP/Status\n * @param {number} statusCode\n */\nfunction getStatusText (statusCode) {\n return STATUS_CODES[statusCode] || 'unknown'\n}\n\nasync function getResponse (body) {\n const buffers = []\n for await (const data of body) {\n buffers.push(data)\n }\n return Buffer.concat(buffers).toString('utf8')\n}\n\n/**\n * Mock dispatch function used to simulate undici dispatches\n */\nfunction mockDispatch (opts, handler) {\n // Get mock dispatch from built key\n const key = buildKey(opts)\n const mockDispatch = getMockDispatch(this[kDispatches], key)\n\n mockDispatch.timesInvoked++\n\n // Here's where we resolve a callback if a callback is present for the dispatch data.\n if (mockDispatch.data.callback) {\n mockDispatch.data = { ...mockDispatch.data, ...mockDispatch.data.callback(opts) }\n }\n\n // Parse mockDispatch data\n const { data: { statusCode, data, headers, trailers, error }, delay, persist } = mockDispatch\n const { timesInvoked, times } = mockDispatch\n\n // If it's used up and not persistent, mark as consumed\n mockDispatch.consumed = !persist && timesInvoked >= times\n mockDispatch.pending = timesInvoked < times\n\n // If specified, trigger dispatch error\n if (error !== null) {\n deleteMockDispatch(this[kDispatches], key)\n handler.onError(error)\n return true\n }\n\n // Handle the request with a delay if necessary\n if (typeof delay === 'number' && delay > 0) {\n setTimeout(() => {\n handleReply(this[kDispatches])\n }, delay)\n } else {\n handleReply(this[kDispatches])\n }\n\n function handleReply (mockDispatches, _data = data) {\n // fetch's HeadersList is a 1D string array\n const optsHeaders = Array.isArray(opts.headers)\n ? buildHeadersFromArray(opts.headers)\n : opts.headers\n const body = typeof _data === 'function'\n ? _data({ ...opts, headers: optsHeaders })\n : _data\n\n // util.types.isPromise is likely needed for jest.\n if (isPromise(body)) {\n // If handleReply is asynchronous, throwing an error\n // in the callback will reject the promise, rather than\n // synchronously throw the error, which breaks some tests.\n // Rather, we wait for the callback to resolve if it is a\n // promise, and then re-run handleReply with the new body.\n body.then((newData) => handleReply(mockDispatches, newData))\n return\n }\n\n const responseData = getResponseData(body)\n const responseHeaders = generateKeyValues(headers)\n const responseTrailers = generateKeyValues(trailers)\n\n handler.abort = nop\n handler.onHeaders(statusCode, responseHeaders, resume, getStatusText(statusCode))\n handler.onData(Buffer.from(responseData))\n handler.onComplete(responseTrailers)\n deleteMockDispatch(mockDispatches, key)\n }\n\n function resume () {}\n\n return true\n}\n\nfunction buildMockDispatch () {\n const agent = this[kMockAgent]\n const origin = this[kOrigin]\n const originalDispatch = this[kOriginalDispatch]\n\n return function dispatch (opts, handler) {\n if (agent.isMockActive) {\n try {\n mockDispatch.call(this, opts, handler)\n } catch (error) {\n if (error instanceof MockNotMatchedError) {\n const netConnect = agent[kGetNetConnect]()\n if (netConnect === false) {\n throw new MockNotMatchedError(`${error.message}: subsequent request to origin ${origin} was not allowed (net.connect disabled)`)\n }\n if (checkNetConnect(netConnect, origin)) {\n originalDispatch.call(this, opts, handler)\n } else {\n throw new MockNotMatchedError(`${error.message}: subsequent request to origin ${origin} was not allowed (net.connect is not enabled for this origin)`)\n }\n } else {\n throw error\n }\n }\n } else {\n originalDispatch.call(this, opts, handler)\n }\n }\n}\n\nfunction checkNetConnect (netConnect, origin) {\n const url = new URL(origin)\n if (netConnect === true) {\n return true\n } else if (Array.isArray(netConnect) && netConnect.some((matcher) => matchValue(matcher, url.host))) {\n return true\n }\n return false\n}\n\nfunction buildMockOptions (opts) {\n if (opts) {\n const { agent, ...mockOptions } = opts\n return mockOptions\n }\n}\n\nmodule.exports = {\n getResponseData,\n getMockDispatch,\n addMockDispatch,\n deleteMockDispatch,\n buildKey,\n generateKeyValues,\n matchValue,\n getResponse,\n getStatusText,\n mockDispatch,\n buildMockDispatch,\n checkNetConnect,\n buildMockOptions,\n getHeaderByName\n}\n", "'use strict'\n\nconst { getResponseData, buildKey, addMockDispatch } = require('./mock-utils')\nconst {\n kDispatches,\n kDispatchKey,\n kDefaultHeaders,\n kDefaultTrailers,\n kContentLength,\n kMockDispatch\n} = require('./mock-symbols')\nconst { InvalidArgumentError } = require('../core/errors')\nconst { buildURL } = require('../core/util')\n\n/**\n * Defines the scope API for an interceptor reply\n */\nclass MockScope {\n constructor (mockDispatch) {\n this[kMockDispatch] = mockDispatch\n }\n\n /**\n * Delay a reply by a set amount in ms.\n */\n delay (waitInMs) {\n if (typeof waitInMs !== 'number' || !Number.isInteger(waitInMs) || waitInMs <= 0) {\n throw new InvalidArgumentError('waitInMs must be a valid integer > 0')\n }\n\n this[kMockDispatch].delay = waitInMs\n return this\n }\n\n /**\n * For a defined reply, never mark as consumed.\n */\n persist () {\n this[kMockDispatch].persist = true\n return this\n }\n\n /**\n * Allow one to define a reply for a set amount of matching requests.\n */\n times (repeatTimes) {\n if (typeof repeatTimes !== 'number' || !Number.isInteger(repeatTimes) || repeatTimes <= 0) {\n throw new InvalidArgumentError('repeatTimes must be a valid integer > 0')\n }\n\n this[kMockDispatch].times = repeatTimes\n return this\n }\n}\n\n/**\n * Defines an interceptor for a Mock\n */\nclass MockInterceptor {\n constructor (opts, mockDispatches) {\n if (typeof opts !== 'object') {\n throw new InvalidArgumentError('opts must be an object')\n }\n if (typeof opts.path === 'undefined') {\n throw new InvalidArgumentError('opts.path must be defined')\n }\n if (typeof opts.method === 'undefined') {\n opts.method = 'GET'\n }\n // See https://github.com/nodejs/undici/issues/1245\n // As per RFC 3986, clients are not supposed to send URI\n // fragments to servers when they retrieve a document,\n if (typeof opts.path === 'string') {\n if (opts.query) {\n opts.path = buildURL(opts.path, opts.query)\n } else {\n // Matches https://github.com/nodejs/undici/blob/main/lib/fetch/index.js#L1811\n const parsedURL = new URL(opts.path, 'data://')\n opts.path = parsedURL.pathname + parsedURL.search\n }\n }\n if (typeof opts.method === 'string') {\n opts.method = opts.method.toUpperCase()\n }\n\n this[kDispatchKey] = buildKey(opts)\n this[kDispatches] = mockDispatches\n this[kDefaultHeaders] = {}\n this[kDefaultTrailers] = {}\n this[kContentLength] = false\n }\n\n createMockScopeDispatchData (statusCode, data, responseOptions = {}) {\n const responseData = getResponseData(data)\n const contentLength = this[kContentLength] ? { 'content-length': responseData.length } : {}\n const headers = { ...this[kDefaultHeaders], ...contentLength, ...responseOptions.headers }\n const trailers = { ...this[kDefaultTrailers], ...responseOptions.trailers }\n\n return { statusCode, data, headers, trailers }\n }\n\n validateReplyParameters (statusCode, data, responseOptions) {\n if (typeof statusCode === 'undefined') {\n throw new InvalidArgumentError('statusCode must be defined')\n }\n if (typeof data === 'undefined') {\n throw new InvalidArgumentError('data must be defined')\n }\n if (typeof responseOptions !== 'object') {\n throw new InvalidArgumentError('responseOptions must be an object')\n }\n }\n\n /**\n * Mock an undici request with a defined reply.\n */\n reply (replyData) {\n // Values of reply aren't available right now as they\n // can only be available when the reply callback is invoked.\n if (typeof replyData === 'function') {\n // We'll first wrap the provided callback in another function,\n // this function will properly resolve the data from the callback\n // when invoked.\n const wrappedDefaultsCallback = (opts) => {\n // Our reply options callback contains the parameter for statusCode, data and options.\n const resolvedData = replyData(opts)\n\n // Check if it is in the right format\n if (typeof resolvedData !== 'object') {\n throw new InvalidArgumentError('reply options callback must return an object')\n }\n\n const { statusCode, data = '', responseOptions = {} } = resolvedData\n this.validateReplyParameters(statusCode, data, responseOptions)\n // Since the values can be obtained immediately we return them\n // from this higher order function that will be resolved later.\n return {\n ...this.createMockScopeDispatchData(statusCode, data, responseOptions)\n }\n }\n\n // Add usual dispatch data, but this time set the data parameter to function that will eventually provide data.\n const newMockDispatch = addMockDispatch(this[kDispatches], this[kDispatchKey], wrappedDefaultsCallback)\n return new MockScope(newMockDispatch)\n }\n\n // We can have either one or three parameters, if we get here,\n // we should have 1-3 parameters. So we spread the arguments of\n // this function to obtain the parameters, since replyData will always\n // just be the statusCode.\n const [statusCode, data = '', responseOptions = {}] = [...arguments]\n this.validateReplyParameters(statusCode, data, responseOptions)\n\n // Send in-already provided data like usual\n const dispatchData = this.createMockScopeDispatchData(statusCode, data, responseOptions)\n const newMockDispatch = addMockDispatch(this[kDispatches], this[kDispatchKey], dispatchData)\n return new MockScope(newMockDispatch)\n }\n\n /**\n * Mock an undici request with a defined error.\n */\n replyWithError (error) {\n if (typeof error === 'undefined') {\n throw new InvalidArgumentError('error must be defined')\n }\n\n const newMockDispatch = addMockDispatch(this[kDispatches], this[kDispatchKey], { error })\n return new MockScope(newMockDispatch)\n }\n\n /**\n * Set default reply headers on the interceptor for subsequent replies\n */\n defaultReplyHeaders (headers) {\n if (typeof headers === 'undefined') {\n throw new InvalidArgumentError('headers must be defined')\n }\n\n this[kDefaultHeaders] = headers\n return this\n }\n\n /**\n * Set default reply trailers on the interceptor for subsequent replies\n */\n defaultReplyTrailers (trailers) {\n if (typeof trailers === 'undefined') {\n throw new InvalidArgumentError('trailers must be defined')\n }\n\n this[kDefaultTrailers] = trailers\n return this\n }\n\n /**\n * Set reply content length header for replies on the interceptor\n */\n replyContentLength () {\n this[kContentLength] = true\n return this\n }\n}\n\nmodule.exports.MockInterceptor = MockInterceptor\nmodule.exports.MockScope = MockScope\n", "'use strict'\n\nconst { promisify } = require('util')\nconst Client = require('../client')\nconst { buildMockDispatch } = require('./mock-utils')\nconst {\n kDispatches,\n kMockAgent,\n kClose,\n kOriginalClose,\n kOrigin,\n kOriginalDispatch,\n kConnected\n} = require('./mock-symbols')\nconst { MockInterceptor } = require('./mock-interceptor')\nconst Symbols = require('../core/symbols')\nconst { InvalidArgumentError } = require('../core/errors')\n\n/**\n * MockClient provides an API that extends the Client to influence the mockDispatches.\n */\nclass MockClient extends Client {\n constructor (origin, opts) {\n super(origin, opts)\n\n if (!opts || !opts.agent || typeof opts.agent.dispatch !== 'function') {\n throw new InvalidArgumentError('Argument opts.agent must implement Agent')\n }\n\n this[kMockAgent] = opts.agent\n this[kOrigin] = origin\n this[kDispatches] = []\n this[kConnected] = 1\n this[kOriginalDispatch] = this.dispatch\n this[kOriginalClose] = this.close.bind(this)\n\n this.dispatch = buildMockDispatch.call(this)\n this.close = this[kClose]\n }\n\n get [Symbols.kConnected] () {\n return this[kConnected]\n }\n\n /**\n * Sets up the base interceptor for mocking replies from undici.\n */\n intercept (opts) {\n return new MockInterceptor(opts, this[kDispatches])\n }\n\n async [kClose] () {\n await promisify(this[kOriginalClose])()\n this[kConnected] = 0\n this[kMockAgent][Symbols.kClients].delete(this[kOrigin])\n }\n}\n\nmodule.exports = MockClient\n", "'use strict'\n\nconst { promisify } = require('util')\nconst Pool = require('../pool')\nconst { buildMockDispatch } = require('./mock-utils')\nconst {\n kDispatches,\n kMockAgent,\n kClose,\n kOriginalClose,\n kOrigin,\n kOriginalDispatch,\n kConnected\n} = require('./mock-symbols')\nconst { MockInterceptor } = require('./mock-interceptor')\nconst Symbols = require('../core/symbols')\nconst { InvalidArgumentError } = require('../core/errors')\n\n/**\n * MockPool provides an API that extends the Pool to influence the mockDispatches.\n */\nclass MockPool extends Pool {\n constructor (origin, opts) {\n super(origin, opts)\n\n if (!opts || !opts.agent || typeof opts.agent.dispatch !== 'function') {\n throw new InvalidArgumentError('Argument opts.agent must implement Agent')\n }\n\n this[kMockAgent] = opts.agent\n this[kOrigin] = origin\n this[kDispatches] = []\n this[kConnected] = 1\n this[kOriginalDispatch] = this.dispatch\n this[kOriginalClose] = this.close.bind(this)\n\n this.dispatch = buildMockDispatch.call(this)\n this.close = this[kClose]\n }\n\n get [Symbols.kConnected] () {\n return this[kConnected]\n }\n\n /**\n * Sets up the base interceptor for mocking replies from undici.\n */\n intercept (opts) {\n return new MockInterceptor(opts, this[kDispatches])\n }\n\n async [kClose] () {\n await promisify(this[kOriginalClose])()\n this[kConnected] = 0\n this[kMockAgent][Symbols.kClients].delete(this[kOrigin])\n }\n}\n\nmodule.exports = MockPool\n", "'use strict'\n\nconst singulars = {\n pronoun: 'it',\n is: 'is',\n was: 'was',\n this: 'this'\n}\n\nconst plurals = {\n pronoun: 'they',\n is: 'are',\n was: 'were',\n this: 'these'\n}\n\nmodule.exports = class Pluralizer {\n constructor (singular, plural) {\n this.singular = singular\n this.plural = plural\n }\n\n pluralize (count) {\n const one = count === 1\n const keys = one ? singulars : plurals\n const noun = one ? this.singular : this.plural\n return { ...keys, count, noun }\n }\n}\n", "'use strict'\n\nconst { Transform } = require('stream')\nconst { Console } = require('console')\n\n/**\n * Gets the output of `console.table(\u2026)` as a string.\n */\nmodule.exports = class PendingInterceptorsFormatter {\n constructor ({ disableColors } = {}) {\n this.transform = new Transform({\n transform (chunk, _enc, cb) {\n cb(null, chunk)\n }\n })\n\n this.logger = new Console({\n stdout: this.transform,\n inspectOptions: {\n colors: !disableColors && !process.env.CI\n }\n })\n }\n\n format (pendingInterceptors) {\n const withPrettyHeaders = pendingInterceptors.map(\n ({ method, path, data: { statusCode }, persist, times, timesInvoked, origin }) => ({\n Method: method,\n Origin: origin,\n Path: path,\n 'Status code': statusCode,\n Persistent: persist ? '\u2705' : '\u274C',\n Invocations: timesInvoked,\n Remaining: persist ? Infinity : times - timesInvoked\n }))\n\n this.logger.table(withPrettyHeaders)\n return this.transform.read().toString()\n }\n}\n", "'use strict'\n\nconst { kClients } = require('../core/symbols')\nconst Agent = require('../agent')\nconst {\n kAgent,\n kMockAgentSet,\n kMockAgentGet,\n kDispatches,\n kIsMockActive,\n kNetConnect,\n kGetNetConnect,\n kOptions,\n kFactory\n} = require('./mock-symbols')\nconst MockClient = require('./mock-client')\nconst MockPool = require('./mock-pool')\nconst { matchValue, buildMockOptions } = require('./mock-utils')\nconst { InvalidArgumentError, UndiciError } = require('../core/errors')\nconst Dispatcher = require('../dispatcher')\nconst Pluralizer = require('./pluralizer')\nconst PendingInterceptorsFormatter = require('./pending-interceptors-formatter')\n\nclass FakeWeakRef {\n constructor (value) {\n this.value = value\n }\n\n deref () {\n return this.value\n }\n}\n\nclass MockAgent extends Dispatcher {\n constructor (opts) {\n super(opts)\n\n this[kNetConnect] = true\n this[kIsMockActive] = true\n\n // Instantiate Agent and encapsulate\n if ((opts && opts.agent && typeof opts.agent.dispatch !== 'function')) {\n throw new InvalidArgumentError('Argument opts.agent must implement Agent')\n }\n const agent = opts && opts.agent ? opts.agent : new Agent(opts)\n this[kAgent] = agent\n\n this[kClients] = agent[kClients]\n this[kOptions] = buildMockOptions(opts)\n }\n\n get (origin) {\n let dispatcher = this[kMockAgentGet](origin)\n\n if (!dispatcher) {\n dispatcher = this[kFactory](origin)\n this[kMockAgentSet](origin, dispatcher)\n }\n return dispatcher\n }\n\n dispatch (opts, handler) {\n // Call MockAgent.get to perform additional setup before dispatching as normal\n this.get(opts.origin)\n return this[kAgent].dispatch(opts, handler)\n }\n\n async close () {\n await this[kAgent].close()\n this[kClients].clear()\n }\n\n deactivate () {\n this[kIsMockActive] = false\n }\n\n activate () {\n this[kIsMockActive] = true\n }\n\n enableNetConnect (matcher) {\n if (typeof matcher === 'string' || typeof matcher === 'function' || matcher instanceof RegExp) {\n if (Array.isArray(this[kNetConnect])) {\n this[kNetConnect].push(matcher)\n } else {\n this[kNetConnect] = [matcher]\n }\n } else if (typeof matcher === 'undefined') {\n this[kNetConnect] = true\n } else {\n throw new InvalidArgumentError('Unsupported matcher. Must be one of String|Function|RegExp.')\n }\n }\n\n disableNetConnect () {\n this[kNetConnect] = false\n }\n\n // This is required to bypass issues caused by using global symbols - see:\n // https://github.com/nodejs/undici/issues/1447\n get isMockActive () {\n return this[kIsMockActive]\n }\n\n [kMockAgentSet] (origin, dispatcher) {\n this[kClients].set(origin, new FakeWeakRef(dispatcher))\n }\n\n [kFactory] (origin) {\n const mockOptions = Object.assign({ agent: this }, this[kOptions])\n return this[kOptions] && this[kOptions].connections === 1\n ? new MockClient(origin, mockOptions)\n : new MockPool(origin, mockOptions)\n }\n\n [kMockAgentGet] (origin) {\n // First check if we can immediately find it\n const ref = this[kClients].get(origin)\n if (ref) {\n return ref.deref()\n }\n\n // If the origin is not a string create a dummy parent pool and return to user\n if (typeof origin !== 'string') {\n const dispatcher = this[kFactory]('http://localhost:9999')\n this[kMockAgentSet](origin, dispatcher)\n return dispatcher\n }\n\n // If we match, create a pool and assign the same dispatches\n for (const [keyMatcher, nonExplicitRef] of Array.from(this[kClients])) {\n const nonExplicitDispatcher = nonExplicitRef.deref()\n if (nonExplicitDispatcher && typeof keyMatcher !== 'string' && matchValue(keyMatcher, origin)) {\n const dispatcher = this[kFactory](origin)\n this[kMockAgentSet](origin, dispatcher)\n dispatcher[kDispatches] = nonExplicitDispatcher[kDispatches]\n return dispatcher\n }\n }\n }\n\n [kGetNetConnect] () {\n return this[kNetConnect]\n }\n\n pendingInterceptors () {\n const mockAgentClients = this[kClients]\n\n return Array.from(mockAgentClients.entries())\n .flatMap(([origin, scope]) => scope.deref()[kDispatches].map(dispatch => ({ ...dispatch, origin })))\n .filter(({ pending }) => pending)\n }\n\n assertNoPendingInterceptors ({ pendingInterceptorsFormatter = new PendingInterceptorsFormatter() } = {}) {\n const pending = this.pendingInterceptors()\n\n if (pending.length === 0) {\n return\n }\n\n const pluralizer = new Pluralizer('interceptor', 'interceptors').pluralize(pending.length)\n\n throw new UndiciError(`\n${pluralizer.count} ${pluralizer.noun} ${pluralizer.is} pending:\n\n${pendingInterceptorsFormatter.format(pending)}\n`.trim())\n }\n}\n\nmodule.exports = MockAgent\n", "'use strict'\n\nconst { kProxy, kClose, kDestroy, kInterceptors } = require('./core/symbols')\nconst { URL } = require('url')\nconst Agent = require('./agent')\nconst Pool = require('./pool')\nconst DispatcherBase = require('./dispatcher-base')\nconst { InvalidArgumentError, RequestAbortedError } = require('./core/errors')\nconst buildConnector = require('./core/connect')\n\nconst kAgent = Symbol('proxy agent')\nconst kClient = Symbol('proxy client')\nconst kProxyHeaders = Symbol('proxy headers')\nconst kRequestTls = Symbol('request tls settings')\nconst kProxyTls = Symbol('proxy tls settings')\nconst kConnectEndpoint = Symbol('connect endpoint function')\n\nfunction defaultProtocolPort (protocol) {\n return protocol === 'https:' ? 443 : 80\n}\n\nfunction buildProxyOptions (opts) {\n if (typeof opts === 'string') {\n opts = { uri: opts }\n }\n\n if (!opts || !opts.uri) {\n throw new InvalidArgumentError('Proxy opts.uri is mandatory')\n }\n\n return {\n uri: opts.uri,\n protocol: opts.protocol || 'https'\n }\n}\n\nfunction defaultFactory (origin, opts) {\n return new Pool(origin, opts)\n}\n\nclass ProxyAgent extends DispatcherBase {\n constructor (opts) {\n super(opts)\n this[kProxy] = buildProxyOptions(opts)\n this[kAgent] = new Agent(opts)\n this[kInterceptors] = opts.interceptors && opts.interceptors.ProxyAgent && Array.isArray(opts.interceptors.ProxyAgent)\n ? opts.interceptors.ProxyAgent\n : []\n\n if (typeof opts === 'string') {\n opts = { uri: opts }\n }\n\n if (!opts || !opts.uri) {\n throw new InvalidArgumentError('Proxy opts.uri is mandatory')\n }\n\n const { clientFactory = defaultFactory } = opts\n\n if (typeof clientFactory !== 'function') {\n throw new InvalidArgumentError('Proxy opts.clientFactory must be a function.')\n }\n\n this[kRequestTls] = opts.requestTls\n this[kProxyTls] = opts.proxyTls\n this[kProxyHeaders] = opts.headers || {}\n\n const resolvedUrl = new URL(opts.uri)\n const { origin, port, host, username, password } = resolvedUrl\n\n if (opts.auth && opts.token) {\n throw new InvalidArgumentError('opts.auth cannot be used in combination with opts.token')\n } else if (opts.auth) {\n /* @deprecated in favour of opts.token */\n this[kProxyHeaders]['proxy-authorization'] = `Basic ${opts.auth}`\n } else if (opts.token) {\n this[kProxyHeaders]['proxy-authorization'] = opts.token\n } else if (username && password) {\n this[kProxyHeaders]['proxy-authorization'] = `Basic ${Buffer.from(`${decodeURIComponent(username)}:${decodeURIComponent(password)}`).toString('base64')}`\n }\n\n const connect = buildConnector({ ...opts.proxyTls })\n this[kConnectEndpoint] = buildConnector({ ...opts.requestTls })\n this[kClient] = clientFactory(resolvedUrl, { connect })\n this[kAgent] = new Agent({\n ...opts,\n connect: async (opts, callback) => {\n let requestedHost = opts.host\n if (!opts.port) {\n requestedHost += `:${defaultProtocolPort(opts.protocol)}`\n }\n try {\n const { socket, statusCode } = await this[kClient].connect({\n origin,\n port,\n path: requestedHost,\n signal: opts.signal,\n headers: {\n ...this[kProxyHeaders],\n host\n }\n })\n if (statusCode !== 200) {\n socket.on('error', () => {}).destroy()\n callback(new RequestAbortedError(`Proxy response (${statusCode}) !== 200 when HTTP Tunneling`))\n }\n if (opts.protocol !== 'https:') {\n callback(null, socket)\n return\n }\n let servername\n if (this[kRequestTls]) {\n servername = this[kRequestTls].servername\n } else {\n servername = opts.servername\n }\n this[kConnectEndpoint]({ ...opts, servername, httpSocket: socket }, callback)\n } catch (err) {\n callback(err)\n }\n }\n })\n }\n\n dispatch (opts, handler) {\n const { host } = new URL(opts.origin)\n const headers = buildHeaders(opts.headers)\n throwIfProxyAuthIsSent(headers)\n return this[kAgent].dispatch(\n {\n ...opts,\n headers: {\n ...headers,\n host\n }\n },\n handler\n )\n }\n\n async [kClose] () {\n await this[kAgent].close()\n await this[kClient].close()\n }\n\n async [kDestroy] () {\n await this[kAgent].destroy()\n await this[kClient].destroy()\n }\n}\n\n/**\n * @param {string[] | Record} headers\n * @returns {Record}\n */\nfunction buildHeaders (headers) {\n // When using undici.fetch, the headers list is stored\n // as an array.\n if (Array.isArray(headers)) {\n /** @type {Record} */\n const headersPair = {}\n\n for (let i = 0; i < headers.length; i += 2) {\n headersPair[headers[i]] = headers[i + 1]\n }\n\n return headersPair\n }\n\n return headers\n}\n\n/**\n * @param {Record} headers\n *\n * Previous versions of ProxyAgent suggests the Proxy-Authorization in request headers\n * Nevertheless, it was changed and to avoid a security vulnerability by end users\n * this check was created.\n * It should be removed in the next major version for performance reasons\n */\nfunction throwIfProxyAuthIsSent (headers) {\n const existProxyAuth = headers && Object.keys(headers)\n .find((key) => key.toLowerCase() === 'proxy-authorization')\n if (existProxyAuth) {\n throw new InvalidArgumentError('Proxy-Authorization should be sent in ProxyAgent constructor')\n }\n}\n\nmodule.exports = ProxyAgent\n", "const assert = require('assert')\n\nconst { kRetryHandlerDefaultRetry } = require('../core/symbols')\nconst { RequestRetryError } = require('../core/errors')\nconst { isDisturbed, parseHeaders, parseRangeHeader } = require('../core/util')\n\nfunction calculateRetryAfterHeader (retryAfter) {\n const current = Date.now()\n const diff = new Date(retryAfter).getTime() - current\n\n return diff\n}\n\nclass RetryHandler {\n constructor (opts, handlers) {\n const { retryOptions, ...dispatchOpts } = opts\n const {\n // Retry scoped\n retry: retryFn,\n maxRetries,\n maxTimeout,\n minTimeout,\n timeoutFactor,\n // Response scoped\n methods,\n errorCodes,\n retryAfter,\n statusCodes\n } = retryOptions ?? {}\n\n this.dispatch = handlers.dispatch\n this.handler = handlers.handler\n this.opts = dispatchOpts\n this.abort = null\n this.aborted = false\n this.retryOpts = {\n retry: retryFn ?? RetryHandler[kRetryHandlerDefaultRetry],\n retryAfter: retryAfter ?? true,\n maxTimeout: maxTimeout ?? 30 * 1000, // 30s,\n timeout: minTimeout ?? 500, // .5s\n timeoutFactor: timeoutFactor ?? 2,\n maxRetries: maxRetries ?? 5,\n // What errors we should retry\n methods: methods ?? ['GET', 'HEAD', 'OPTIONS', 'PUT', 'DELETE', 'TRACE'],\n // Indicates which errors to retry\n statusCodes: statusCodes ?? [500, 502, 503, 504, 429],\n // List of errors to retry\n errorCodes: errorCodes ?? [\n 'ECONNRESET',\n 'ECONNREFUSED',\n 'ENOTFOUND',\n 'ENETDOWN',\n 'ENETUNREACH',\n 'EHOSTDOWN',\n 'EHOSTUNREACH',\n 'EPIPE'\n ]\n }\n\n this.retryCount = 0\n this.start = 0\n this.end = null\n this.etag = null\n this.resume = null\n\n // Handle possible onConnect duplication\n this.handler.onConnect(reason => {\n this.aborted = true\n if (this.abort) {\n this.abort(reason)\n } else {\n this.reason = reason\n }\n })\n }\n\n onRequestSent () {\n if (this.handler.onRequestSent) {\n this.handler.onRequestSent()\n }\n }\n\n onUpgrade (statusCode, headers, socket) {\n if (this.handler.onUpgrade) {\n this.handler.onUpgrade(statusCode, headers, socket)\n }\n }\n\n onConnect (abort) {\n if (this.aborted) {\n abort(this.reason)\n } else {\n this.abort = abort\n }\n }\n\n onBodySent (chunk) {\n if (this.handler.onBodySent) return this.handler.onBodySent(chunk)\n }\n\n static [kRetryHandlerDefaultRetry] (err, { state, opts }, cb) {\n const { statusCode, code, headers } = err\n const { method, retryOptions } = opts\n const {\n maxRetries,\n timeout,\n maxTimeout,\n timeoutFactor,\n statusCodes,\n errorCodes,\n methods\n } = retryOptions\n let { counter, currentTimeout } = state\n\n currentTimeout =\n currentTimeout != null && currentTimeout > 0 ? currentTimeout : timeout\n\n // Any code that is not a Undici's originated and allowed to retry\n if (\n code &&\n code !== 'UND_ERR_REQ_RETRY' &&\n code !== 'UND_ERR_SOCKET' &&\n !errorCodes.includes(code)\n ) {\n cb(err)\n return\n }\n\n // If a set of method are provided and the current method is not in the list\n if (Array.isArray(methods) && !methods.includes(method)) {\n cb(err)\n return\n }\n\n // If a set of status code are provided and the current status code is not in the list\n if (\n statusCode != null &&\n Array.isArray(statusCodes) &&\n !statusCodes.includes(statusCode)\n ) {\n cb(err)\n return\n }\n\n // If we reached the max number of retries\n if (counter > maxRetries) {\n cb(err)\n return\n }\n\n let retryAfterHeader = headers != null && headers['retry-after']\n if (retryAfterHeader) {\n retryAfterHeader = Number(retryAfterHeader)\n retryAfterHeader = isNaN(retryAfterHeader)\n ? calculateRetryAfterHeader(retryAfterHeader)\n : retryAfterHeader * 1e3 // Retry-After is in seconds\n }\n\n const retryTimeout =\n retryAfterHeader > 0\n ? Math.min(retryAfterHeader, maxTimeout)\n : Math.min(currentTimeout * timeoutFactor ** counter, maxTimeout)\n\n state.currentTimeout = retryTimeout\n\n setTimeout(() => cb(null), retryTimeout)\n }\n\n onHeaders (statusCode, rawHeaders, resume, statusMessage) {\n const headers = parseHeaders(rawHeaders)\n\n this.retryCount += 1\n\n if (statusCode >= 300) {\n this.abort(\n new RequestRetryError('Request failed', statusCode, {\n headers,\n count: this.retryCount\n })\n )\n return false\n }\n\n // Checkpoint for resume from where we left it\n if (this.resume != null) {\n this.resume = null\n\n if (statusCode !== 206) {\n return true\n }\n\n const contentRange = parseRangeHeader(headers['content-range'])\n // If no content range\n if (!contentRange) {\n this.abort(\n new RequestRetryError('Content-Range mismatch', statusCode, {\n headers,\n count: this.retryCount\n })\n )\n return false\n }\n\n // Let's start with a weak etag check\n if (this.etag != null && this.etag !== headers.etag) {\n this.abort(\n new RequestRetryError('ETag mismatch', statusCode, {\n headers,\n count: this.retryCount\n })\n )\n return false\n }\n\n const { start, size, end = size } = contentRange\n\n assert(this.start === start, 'content-range mismatch')\n assert(this.end == null || this.end === end, 'content-range mismatch')\n\n this.resume = resume\n return true\n }\n\n if (this.end == null) {\n if (statusCode === 206) {\n // First time we receive 206\n const range = parseRangeHeader(headers['content-range'])\n\n if (range == null) {\n return this.handler.onHeaders(\n statusCode,\n rawHeaders,\n resume,\n statusMessage\n )\n }\n\n const { start, size, end = size } = range\n\n assert(\n start != null && Number.isFinite(start) && this.start !== start,\n 'content-range mismatch'\n )\n assert(Number.isFinite(start))\n assert(\n end != null && Number.isFinite(end) && this.end !== end,\n 'invalid content-length'\n )\n\n this.start = start\n this.end = end\n }\n\n // We make our best to checkpoint the body for further range headers\n if (this.end == null) {\n const contentLength = headers['content-length']\n this.end = contentLength != null ? Number(contentLength) : null\n }\n\n assert(Number.isFinite(this.start))\n assert(\n this.end == null || Number.isFinite(this.end),\n 'invalid content-length'\n )\n\n this.resume = resume\n this.etag = headers.etag != null ? headers.etag : null\n\n return this.handler.onHeaders(\n statusCode,\n rawHeaders,\n resume,\n statusMessage\n )\n }\n\n const err = new RequestRetryError('Request failed', statusCode, {\n headers,\n count: this.retryCount\n })\n\n this.abort(err)\n\n return false\n }\n\n onData (chunk) {\n this.start += chunk.length\n\n return this.handler.onData(chunk)\n }\n\n onComplete (rawTrailers) {\n this.retryCount = 0\n return this.handler.onComplete(rawTrailers)\n }\n\n onError (err) {\n if (this.aborted || isDisturbed(this.opts.body)) {\n return this.handler.onError(err)\n }\n\n this.retryOpts.retry(\n err,\n {\n state: { counter: this.retryCount++, currentTimeout: this.retryAfter },\n opts: { retryOptions: this.retryOpts, ...this.opts }\n },\n onRetry.bind(this)\n )\n\n function onRetry (err) {\n if (err != null || this.aborted || isDisturbed(this.opts.body)) {\n return this.handler.onError(err)\n }\n\n if (this.start !== 0) {\n this.opts = {\n ...this.opts,\n headers: {\n ...this.opts.headers,\n range: `bytes=${this.start}-${this.end ?? ''}`\n }\n }\n }\n\n try {\n this.dispatch(this.opts, this)\n } catch (err) {\n this.handler.onError(err)\n }\n }\n }\n}\n\nmodule.exports = RetryHandler\n", "'use strict'\n\n// We include a version number for the Dispatcher API. In case of breaking changes,\n// this version number must be increased to avoid conflicts.\nconst globalDispatcher = Symbol.for('undici.globalDispatcher.1')\nconst { InvalidArgumentError } = require('./core/errors')\nconst Agent = require('./agent')\n\nif (getGlobalDispatcher() === undefined) {\n setGlobalDispatcher(new Agent())\n}\n\nfunction setGlobalDispatcher (agent) {\n if (!agent || typeof agent.dispatch !== 'function') {\n throw new InvalidArgumentError('Argument agent must implement Agent')\n }\n Object.defineProperty(globalThis, globalDispatcher, {\n value: agent,\n writable: true,\n enumerable: false,\n configurable: false\n })\n}\n\nfunction getGlobalDispatcher () {\n return globalThis[globalDispatcher]\n}\n\nmodule.exports = {\n setGlobalDispatcher,\n getGlobalDispatcher\n}\n", "'use strict'\n\nmodule.exports = class DecoratorHandler {\n constructor (handler) {\n this.handler = handler\n }\n\n onConnect (...args) {\n return this.handler.onConnect(...args)\n }\n\n onError (...args) {\n return this.handler.onError(...args)\n }\n\n onUpgrade (...args) {\n return this.handler.onUpgrade(...args)\n }\n\n onHeaders (...args) {\n return this.handler.onHeaders(...args)\n }\n\n onData (...args) {\n return this.handler.onData(...args)\n }\n\n onComplete (...args) {\n return this.handler.onComplete(...args)\n }\n\n onBodySent (...args) {\n return this.handler.onBodySent(...args)\n }\n}\n", "// https://github.com/Ethan-Arrowood/undici-fetch\n\n'use strict'\n\nconst { kHeadersList, kConstruct } = require('../core/symbols')\nconst { kGuard } = require('./symbols')\nconst { kEnumerableProperty } = require('../core/util')\nconst {\n makeIterator,\n isValidHeaderName,\n isValidHeaderValue\n} = require('./util')\nconst { webidl } = require('./webidl')\nconst assert = require('assert')\n\nconst kHeadersMap = Symbol('headers map')\nconst kHeadersSortedMap = Symbol('headers map sorted')\n\n/**\n * @param {number} code\n */\nfunction isHTTPWhiteSpaceCharCode (code) {\n return code === 0x00a || code === 0x00d || code === 0x009 || code === 0x020\n}\n\n/**\n * @see https://fetch.spec.whatwg.org/#concept-header-value-normalize\n * @param {string} potentialValue\n */\nfunction headerValueNormalize (potentialValue) {\n // To normalize a byte sequence potentialValue, remove\n // any leading and trailing HTTP whitespace bytes from\n // potentialValue.\n let i = 0; let j = potentialValue.length\n\n while (j > i && isHTTPWhiteSpaceCharCode(potentialValue.charCodeAt(j - 1))) --j\n while (j > i && isHTTPWhiteSpaceCharCode(potentialValue.charCodeAt(i))) ++i\n\n return i === 0 && j === potentialValue.length ? potentialValue : potentialValue.substring(i, j)\n}\n\nfunction fill (headers, object) {\n // To fill a Headers object headers with a given object object, run these steps:\n\n // 1. If object is a sequence, then for each header in object:\n // Note: webidl conversion to array has already been done.\n if (Array.isArray(object)) {\n for (let i = 0; i < object.length; ++i) {\n const header = object[i]\n // 1. If header does not contain exactly two items, then throw a TypeError.\n if (header.length !== 2) {\n throw webidl.errors.exception({\n header: 'Headers constructor',\n message: `expected name/value pair to be length 2, found ${header.length}.`\n })\n }\n\n // 2. Append (header\u2019s first item, header\u2019s second item) to headers.\n appendHeader(headers, header[0], header[1])\n }\n } else if (typeof object === 'object' && object !== null) {\n // Note: null should throw\n\n // 2. Otherwise, object is a record, then for each key \u2192 value in object,\n // append (key, value) to headers\n const keys = Object.keys(object)\n for (let i = 0; i < keys.length; ++i) {\n appendHeader(headers, keys[i], object[keys[i]])\n }\n } else {\n throw webidl.errors.conversionFailed({\n prefix: 'Headers constructor',\n argument: 'Argument 1',\n types: ['sequence>', 'record']\n })\n }\n}\n\n/**\n * @see https://fetch.spec.whatwg.org/#concept-headers-append\n */\nfunction appendHeader (headers, name, value) {\n // 1. Normalize value.\n value = headerValueNormalize(value)\n\n // 2. If name is not a header name or value is not a\n // header value, then throw a TypeError.\n if (!isValidHeaderName(name)) {\n throw webidl.errors.invalidArgument({\n prefix: 'Headers.append',\n value: name,\n type: 'header name'\n })\n } else if (!isValidHeaderValue(value)) {\n throw webidl.errors.invalidArgument({\n prefix: 'Headers.append',\n value,\n type: 'header value'\n })\n }\n\n // 3. If headers\u2019s guard is \"immutable\", then throw a TypeError.\n // 4. Otherwise, if headers\u2019s guard is \"request\" and name is a\n // forbidden header name, return.\n // Note: undici does not implement forbidden header names\n if (headers[kGuard] === 'immutable') {\n throw new TypeError('immutable')\n } else if (headers[kGuard] === 'request-no-cors') {\n // 5. Otherwise, if headers\u2019s guard is \"request-no-cors\":\n // TODO\n }\n\n // 6. Otherwise, if headers\u2019s guard is \"response\" and name is a\n // forbidden response-header name, return.\n\n // 7. Append (name, value) to headers\u2019s header list.\n return headers[kHeadersList].append(name, value)\n\n // 8. If headers\u2019s guard is \"request-no-cors\", then remove\n // privileged no-CORS request headers from headers\n}\n\nclass HeadersList {\n /** @type {[string, string][]|null} */\n cookies = null\n\n constructor (init) {\n if (init instanceof HeadersList) {\n this[kHeadersMap] = new Map(init[kHeadersMap])\n this[kHeadersSortedMap] = init[kHeadersSortedMap]\n this.cookies = init.cookies === null ? null : [...init.cookies]\n } else {\n this[kHeadersMap] = new Map(init)\n this[kHeadersSortedMap] = null\n }\n }\n\n // https://fetch.spec.whatwg.org/#header-list-contains\n contains (name) {\n // A header list list contains a header name name if list\n // contains a header whose name is a byte-case-insensitive\n // match for name.\n name = name.toLowerCase()\n\n return this[kHeadersMap].has(name)\n }\n\n clear () {\n this[kHeadersMap].clear()\n this[kHeadersSortedMap] = null\n this.cookies = null\n }\n\n // https://fetch.spec.whatwg.org/#concept-header-list-append\n append (name, value) {\n this[kHeadersSortedMap] = null\n\n // 1. If list contains name, then set name to the first such\n // header\u2019s name.\n const lowercaseName = name.toLowerCase()\n const exists = this[kHeadersMap].get(lowercaseName)\n\n // 2. Append (name, value) to list.\n if (exists) {\n const delimiter = lowercaseName === 'cookie' ? '; ' : ', '\n this[kHeadersMap].set(lowercaseName, {\n name: exists.name,\n value: `${exists.value}${delimiter}${value}`\n })\n } else {\n this[kHeadersMap].set(lowercaseName, { name, value })\n }\n\n if (lowercaseName === 'set-cookie') {\n this.cookies ??= []\n this.cookies.push(value)\n }\n }\n\n // https://fetch.spec.whatwg.org/#concept-header-list-set\n set (name, value) {\n this[kHeadersSortedMap] = null\n const lowercaseName = name.toLowerCase()\n\n if (lowercaseName === 'set-cookie') {\n this.cookies = [value]\n }\n\n // 1. If list contains name, then set the value of\n // the first such header to value and remove the\n // others.\n // 2. Otherwise, append header (name, value) to list.\n this[kHeadersMap].set(lowercaseName, { name, value })\n }\n\n // https://fetch.spec.whatwg.org/#concept-header-list-delete\n delete (name) {\n this[kHeadersSortedMap] = null\n\n name = name.toLowerCase()\n\n if (name === 'set-cookie') {\n this.cookies = null\n }\n\n this[kHeadersMap].delete(name)\n }\n\n // https://fetch.spec.whatwg.org/#concept-header-list-get\n get (name) {\n const value = this[kHeadersMap].get(name.toLowerCase())\n\n // 1. If list does not contain name, then return null.\n // 2. Return the values of all headers in list whose name\n // is a byte-case-insensitive match for name,\n // separated from each other by 0x2C 0x20, in order.\n return value === undefined ? null : value.value\n }\n\n * [Symbol.iterator] () {\n // use the lowercased name\n for (const [name, { value }] of this[kHeadersMap]) {\n yield [name, value]\n }\n }\n\n get entries () {\n const headers = {}\n\n if (this[kHeadersMap].size) {\n for (const { name, value } of this[kHeadersMap].values()) {\n headers[name] = value\n }\n }\n\n return headers\n }\n}\n\n// https://fetch.spec.whatwg.org/#headers-class\nclass Headers {\n constructor (init = undefined) {\n if (init === kConstruct) {\n return\n }\n this[kHeadersList] = new HeadersList()\n\n // The new Headers(init) constructor steps are:\n\n // 1. Set this\u2019s guard to \"none\".\n this[kGuard] = 'none'\n\n // 2. If init is given, then fill this with init.\n if (init !== undefined) {\n init = webidl.converters.HeadersInit(init)\n fill(this, init)\n }\n }\n\n // https://fetch.spec.whatwg.org/#dom-headers-append\n append (name, value) {\n webidl.brandCheck(this, Headers)\n\n webidl.argumentLengthCheck(arguments, 2, { header: 'Headers.append' })\n\n name = webidl.converters.ByteString(name)\n value = webidl.converters.ByteString(value)\n\n return appendHeader(this, name, value)\n }\n\n // https://fetch.spec.whatwg.org/#dom-headers-delete\n delete (name) {\n webidl.brandCheck(this, Headers)\n\n webidl.argumentLengthCheck(arguments, 1, { header: 'Headers.delete' })\n\n name = webidl.converters.ByteString(name)\n\n // 1. If name is not a header name, then throw a TypeError.\n if (!isValidHeaderName(name)) {\n throw webidl.errors.invalidArgument({\n prefix: 'Headers.delete',\n value: name,\n type: 'header name'\n })\n }\n\n // 2. If this\u2019s guard is \"immutable\", then throw a TypeError.\n // 3. Otherwise, if this\u2019s guard is \"request\" and name is a\n // forbidden header name, return.\n // 4. Otherwise, if this\u2019s guard is \"request-no-cors\", name\n // is not a no-CORS-safelisted request-header name, and\n // name is not a privileged no-CORS request-header name,\n // return.\n // 5. Otherwise, if this\u2019s guard is \"response\" and name is\n // a forbidden response-header name, return.\n // Note: undici does not implement forbidden header names\n if (this[kGuard] === 'immutable') {\n throw new TypeError('immutable')\n } else if (this[kGuard] === 'request-no-cors') {\n // TODO\n }\n\n // 6. If this\u2019s header list does not contain name, then\n // return.\n if (!this[kHeadersList].contains(name)) {\n return\n }\n\n // 7. Delete name from this\u2019s header list.\n // 8. If this\u2019s guard is \"request-no-cors\", then remove\n // privileged no-CORS request headers from this.\n this[kHeadersList].delete(name)\n }\n\n // https://fetch.spec.whatwg.org/#dom-headers-get\n get (name) {\n webidl.brandCheck(this, Headers)\n\n webidl.argumentLengthCheck(arguments, 1, { header: 'Headers.get' })\n\n name = webidl.converters.ByteString(name)\n\n // 1. If name is not a header name, then throw a TypeError.\n if (!isValidHeaderName(name)) {\n throw webidl.errors.invalidArgument({\n prefix: 'Headers.get',\n value: name,\n type: 'header name'\n })\n }\n\n // 2. Return the result of getting name from this\u2019s header\n // list.\n return this[kHeadersList].get(name)\n }\n\n // https://fetch.spec.whatwg.org/#dom-headers-has\n has (name) {\n webidl.brandCheck(this, Headers)\n\n webidl.argumentLengthCheck(arguments, 1, { header: 'Headers.has' })\n\n name = webidl.converters.ByteString(name)\n\n // 1. If name is not a header name, then throw a TypeError.\n if (!isValidHeaderName(name)) {\n throw webidl.errors.invalidArgument({\n prefix: 'Headers.has',\n value: name,\n type: 'header name'\n })\n }\n\n // 2. Return true if this\u2019s header list contains name;\n // otherwise false.\n return this[kHeadersList].contains(name)\n }\n\n // https://fetch.spec.whatwg.org/#dom-headers-set\n set (name, value) {\n webidl.brandCheck(this, Headers)\n\n webidl.argumentLengthCheck(arguments, 2, { header: 'Headers.set' })\n\n name = webidl.converters.ByteString(name)\n value = webidl.converters.ByteString(value)\n\n // 1. Normalize value.\n value = headerValueNormalize(value)\n\n // 2. If name is not a header name or value is not a\n // header value, then throw a TypeError.\n if (!isValidHeaderName(name)) {\n throw webidl.errors.invalidArgument({\n prefix: 'Headers.set',\n value: name,\n type: 'header name'\n })\n } else if (!isValidHeaderValue(value)) {\n throw webidl.errors.invalidArgument({\n prefix: 'Headers.set',\n value,\n type: 'header value'\n })\n }\n\n // 3. If this\u2019s guard is \"immutable\", then throw a TypeError.\n // 4. Otherwise, if this\u2019s guard is \"request\" and name is a\n // forbidden header name, return.\n // 5. Otherwise, if this\u2019s guard is \"request-no-cors\" and\n // name/value is not a no-CORS-safelisted request-header,\n // return.\n // 6. Otherwise, if this\u2019s guard is \"response\" and name is a\n // forbidden response-header name, return.\n // Note: undici does not implement forbidden header names\n if (this[kGuard] === 'immutable') {\n throw new TypeError('immutable')\n } else if (this[kGuard] === 'request-no-cors') {\n // TODO\n }\n\n // 7. Set (name, value) in this\u2019s header list.\n // 8. If this\u2019s guard is \"request-no-cors\", then remove\n // privileged no-CORS request headers from this\n this[kHeadersList].set(name, value)\n }\n\n // https://fetch.spec.whatwg.org/#dom-headers-getsetcookie\n getSetCookie () {\n webidl.brandCheck(this, Headers)\n\n // 1. If this\u2019s header list does not contain `Set-Cookie`, then return \u00AB \u00BB.\n // 2. Return the values of all headers in this\u2019s header list whose name is\n // a byte-case-insensitive match for `Set-Cookie`, in order.\n\n const list = this[kHeadersList].cookies\n\n if (list) {\n return [...list]\n }\n\n return []\n }\n\n // https://fetch.spec.whatwg.org/#concept-header-list-sort-and-combine\n get [kHeadersSortedMap] () {\n if (this[kHeadersList][kHeadersSortedMap]) {\n return this[kHeadersList][kHeadersSortedMap]\n }\n\n // 1. Let headers be an empty list of headers with the key being the name\n // and value the value.\n const headers = []\n\n // 2. Let names be the result of convert header names to a sorted-lowercase\n // set with all the names of the headers in list.\n const names = [...this[kHeadersList]].sort((a, b) => a[0] < b[0] ? -1 : 1)\n const cookies = this[kHeadersList].cookies\n\n // 3. For each name of names:\n for (let i = 0; i < names.length; ++i) {\n const [name, value] = names[i]\n // 1. If name is `set-cookie`, then:\n if (name === 'set-cookie') {\n // 1. Let values be a list of all values of headers in list whose name\n // is a byte-case-insensitive match for name, in order.\n\n // 2. For each value of values:\n // 1. Append (name, value) to headers.\n for (let j = 0; j < cookies.length; ++j) {\n headers.push([name, cookies[j]])\n }\n } else {\n // 2. Otherwise:\n\n // 1. Let value be the result of getting name from list.\n\n // 2. Assert: value is non-null.\n assert(value !== null)\n\n // 3. Append (name, value) to headers.\n headers.push([name, value])\n }\n }\n\n this[kHeadersList][kHeadersSortedMap] = headers\n\n // 4. Return headers.\n return headers\n }\n\n keys () {\n webidl.brandCheck(this, Headers)\n\n if (this[kGuard] === 'immutable') {\n const value = this[kHeadersSortedMap]\n return makeIterator(() => value, 'Headers',\n 'key')\n }\n\n return makeIterator(\n () => [...this[kHeadersSortedMap].values()],\n 'Headers',\n 'key'\n )\n }\n\n values () {\n webidl.brandCheck(this, Headers)\n\n if (this[kGuard] === 'immutable') {\n const value = this[kHeadersSortedMap]\n return makeIterator(() => value, 'Headers',\n 'value')\n }\n\n return makeIterator(\n () => [...this[kHeadersSortedMap].values()],\n 'Headers',\n 'value'\n )\n }\n\n entries () {\n webidl.brandCheck(this, Headers)\n\n if (this[kGuard] === 'immutable') {\n const value = this[kHeadersSortedMap]\n return makeIterator(() => value, 'Headers',\n 'key+value')\n }\n\n return makeIterator(\n () => [...this[kHeadersSortedMap].values()],\n 'Headers',\n 'key+value'\n )\n }\n\n /**\n * @param {(value: string, key: string, self: Headers) => void} callbackFn\n * @param {unknown} thisArg\n */\n forEach (callbackFn, thisArg = globalThis) {\n webidl.brandCheck(this, Headers)\n\n webidl.argumentLengthCheck(arguments, 1, { header: 'Headers.forEach' })\n\n if (typeof callbackFn !== 'function') {\n throw new TypeError(\n \"Failed to execute 'forEach' on 'Headers': parameter 1 is not of type 'Function'.\"\n )\n }\n\n for (const [key, value] of this) {\n callbackFn.apply(thisArg, [value, key, this])\n }\n }\n\n [Symbol.for('nodejs.util.inspect.custom')] () {\n webidl.brandCheck(this, Headers)\n\n return this[kHeadersList]\n }\n}\n\nHeaders.prototype[Symbol.iterator] = Headers.prototype.entries\n\nObject.defineProperties(Headers.prototype, {\n append: kEnumerableProperty,\n delete: kEnumerableProperty,\n get: kEnumerableProperty,\n has: kEnumerableProperty,\n set: kEnumerableProperty,\n getSetCookie: kEnumerableProperty,\n keys: kEnumerableProperty,\n values: kEnumerableProperty,\n entries: kEnumerableProperty,\n forEach: kEnumerableProperty,\n [Symbol.iterator]: { enumerable: false },\n [Symbol.toStringTag]: {\n value: 'Headers',\n configurable: true\n }\n})\n\nwebidl.converters.HeadersInit = function (V) {\n if (webidl.util.Type(V) === 'Object') {\n if (V[Symbol.iterator]) {\n return webidl.converters['sequence>'](V)\n }\n\n return webidl.converters['record'](V)\n }\n\n throw webidl.errors.conversionFailed({\n prefix: 'Headers constructor',\n argument: 'Argument 1',\n types: ['sequence>', 'record']\n })\n}\n\nmodule.exports = {\n fill,\n Headers,\n HeadersList\n}\n", "'use strict'\n\nconst { Headers, HeadersList, fill } = require('./headers')\nconst { extractBody, cloneBody, mixinBody } = require('./body')\nconst util = require('../core/util')\nconst { kEnumerableProperty } = util\nconst {\n isValidReasonPhrase,\n isCancelled,\n isAborted,\n isBlobLike,\n serializeJavascriptValueToJSONString,\n isErrorLike,\n isomorphicEncode\n} = require('./util')\nconst {\n redirectStatusSet,\n nullBodyStatus,\n DOMException\n} = require('./constants')\nconst { kState, kHeaders, kGuard, kRealm } = require('./symbols')\nconst { webidl } = require('./webidl')\nconst { FormData } = require('./formdata')\nconst { getGlobalOrigin } = require('./global')\nconst { URLSerializer } = require('./dataURL')\nconst { kHeadersList, kConstruct } = require('../core/symbols')\nconst assert = require('assert')\nconst { types } = require('util')\n\nconst ReadableStream = globalThis.ReadableStream || require('stream/web').ReadableStream\nconst textEncoder = new TextEncoder('utf-8')\n\n// https://fetch.spec.whatwg.org/#response-class\nclass Response {\n // Creates network error Response.\n static error () {\n // TODO\n const relevantRealm = { settingsObject: {} }\n\n // The static error() method steps are to return the result of creating a\n // Response object, given a new network error, \"immutable\", and this\u2019s\n // relevant Realm.\n const responseObject = new Response()\n responseObject[kState] = makeNetworkError()\n responseObject[kRealm] = relevantRealm\n responseObject[kHeaders][kHeadersList] = responseObject[kState].headersList\n responseObject[kHeaders][kGuard] = 'immutable'\n responseObject[kHeaders][kRealm] = relevantRealm\n return responseObject\n }\n\n // https://fetch.spec.whatwg.org/#dom-response-json\n static json (data, init = {}) {\n webidl.argumentLengthCheck(arguments, 1, { header: 'Response.json' })\n\n if (init !== null) {\n init = webidl.converters.ResponseInit(init)\n }\n\n // 1. Let bytes the result of running serialize a JavaScript value to JSON bytes on data.\n const bytes = textEncoder.encode(\n serializeJavascriptValueToJSONString(data)\n )\n\n // 2. Let body be the result of extracting bytes.\n const body = extractBody(bytes)\n\n // 3. Let responseObject be the result of creating a Response object, given a new response,\n // \"response\", and this\u2019s relevant Realm.\n const relevantRealm = { settingsObject: {} }\n const responseObject = new Response()\n responseObject[kRealm] = relevantRealm\n responseObject[kHeaders][kGuard] = 'response'\n responseObject[kHeaders][kRealm] = relevantRealm\n\n // 4. Perform initialize a response given responseObject, init, and (body, \"application/json\").\n initializeResponse(responseObject, init, { body: body[0], type: 'application/json' })\n\n // 5. Return responseObject.\n return responseObject\n }\n\n // Creates a redirect Response that redirects to url with status status.\n static redirect (url, status = 302) {\n const relevantRealm = { settingsObject: {} }\n\n webidl.argumentLengthCheck(arguments, 1, { header: 'Response.redirect' })\n\n url = webidl.converters.USVString(url)\n status = webidl.converters['unsigned short'](status)\n\n // 1. Let parsedURL be the result of parsing url with current settings\n // object\u2019s API base URL.\n // 2. If parsedURL is failure, then throw a TypeError.\n // TODO: base-URL?\n let parsedURL\n try {\n parsedURL = new URL(url, getGlobalOrigin())\n } catch (err) {\n throw Object.assign(new TypeError('Failed to parse URL from ' + url), {\n cause: err\n })\n }\n\n // 3. If status is not a redirect status, then throw a RangeError.\n if (!redirectStatusSet.has(status)) {\n throw new RangeError('Invalid status code ' + status)\n }\n\n // 4. Let responseObject be the result of creating a Response object,\n // given a new response, \"immutable\", and this\u2019s relevant Realm.\n const responseObject = new Response()\n responseObject[kRealm] = relevantRealm\n responseObject[kHeaders][kGuard] = 'immutable'\n responseObject[kHeaders][kRealm] = relevantRealm\n\n // 5. Set responseObject\u2019s response\u2019s status to status.\n responseObject[kState].status = status\n\n // 6. Let value be parsedURL, serialized and isomorphic encoded.\n const value = isomorphicEncode(URLSerializer(parsedURL))\n\n // 7. Append `Location`/value to responseObject\u2019s response\u2019s header list.\n responseObject[kState].headersList.append('location', value)\n\n // 8. Return responseObject.\n return responseObject\n }\n\n // https://fetch.spec.whatwg.org/#dom-response\n constructor (body = null, init = {}) {\n if (body !== null) {\n body = webidl.converters.BodyInit(body)\n }\n\n init = webidl.converters.ResponseInit(init)\n\n // TODO\n this[kRealm] = { settingsObject: {} }\n\n // 1. Set this\u2019s response to a new response.\n this[kState] = makeResponse({})\n\n // 2. Set this\u2019s headers to a new Headers object with this\u2019s relevant\n // Realm, whose header list is this\u2019s response\u2019s header list and guard\n // is \"response\".\n this[kHeaders] = new Headers(kConstruct)\n this[kHeaders][kGuard] = 'response'\n this[kHeaders][kHeadersList] = this[kState].headersList\n this[kHeaders][kRealm] = this[kRealm]\n\n // 3. Let bodyWithType be null.\n let bodyWithType = null\n\n // 4. If body is non-null, then set bodyWithType to the result of extracting body.\n if (body != null) {\n const [extractedBody, type] = extractBody(body)\n bodyWithType = { body: extractedBody, type }\n }\n\n // 5. Perform initialize a response given this, init, and bodyWithType.\n initializeResponse(this, init, bodyWithType)\n }\n\n // Returns response\u2019s type, e.g., \"cors\".\n get type () {\n webidl.brandCheck(this, Response)\n\n // The type getter steps are to return this\u2019s response\u2019s type.\n return this[kState].type\n }\n\n // Returns response\u2019s URL, if it has one; otherwise the empty string.\n get url () {\n webidl.brandCheck(this, Response)\n\n const urlList = this[kState].urlList\n\n // The url getter steps are to return the empty string if this\u2019s\n // response\u2019s URL is null; otherwise this\u2019s response\u2019s URL,\n // serialized with exclude fragment set to true.\n const url = urlList[urlList.length - 1] ?? null\n\n if (url === null) {\n return ''\n }\n\n return URLSerializer(url, true)\n }\n\n // Returns whether response was obtained through a redirect.\n get redirected () {\n webidl.brandCheck(this, Response)\n\n // The redirected getter steps are to return true if this\u2019s response\u2019s URL\n // list has more than one item; otherwise false.\n return this[kState].urlList.length > 1\n }\n\n // Returns response\u2019s status.\n get status () {\n webidl.brandCheck(this, Response)\n\n // The status getter steps are to return this\u2019s response\u2019s status.\n return this[kState].status\n }\n\n // Returns whether response\u2019s status is an ok status.\n get ok () {\n webidl.brandCheck(this, Response)\n\n // The ok getter steps are to return true if this\u2019s response\u2019s status is an\n // ok status; otherwise false.\n return this[kState].status >= 200 && this[kState].status <= 299\n }\n\n // Returns response\u2019s status message.\n get statusText () {\n webidl.brandCheck(this, Response)\n\n // The statusText getter steps are to return this\u2019s response\u2019s status\n // message.\n return this[kState].statusText\n }\n\n // Returns response\u2019s headers as Headers.\n get headers () {\n webidl.brandCheck(this, Response)\n\n // The headers getter steps are to return this\u2019s headers.\n return this[kHeaders]\n }\n\n get body () {\n webidl.brandCheck(this, Response)\n\n return this[kState].body ? this[kState].body.stream : null\n }\n\n get bodyUsed () {\n webidl.brandCheck(this, Response)\n\n return !!this[kState].body && util.isDisturbed(this[kState].body.stream)\n }\n\n // Returns a clone of response.\n clone () {\n webidl.brandCheck(this, Response)\n\n // 1. If this is unusable, then throw a TypeError.\n if (this.bodyUsed || (this.body && this.body.locked)) {\n throw webidl.errors.exception({\n header: 'Response.clone',\n message: 'Body has already been consumed.'\n })\n }\n\n // 2. Let clonedResponse be the result of cloning this\u2019s response.\n const clonedResponse = cloneResponse(this[kState])\n\n // 3. Return the result of creating a Response object, given\n // clonedResponse, this\u2019s headers\u2019s guard, and this\u2019s relevant Realm.\n const clonedResponseObject = new Response()\n clonedResponseObject[kState] = clonedResponse\n clonedResponseObject[kRealm] = this[kRealm]\n clonedResponseObject[kHeaders][kHeadersList] = clonedResponse.headersList\n clonedResponseObject[kHeaders][kGuard] = this[kHeaders][kGuard]\n clonedResponseObject[kHeaders][kRealm] = this[kHeaders][kRealm]\n\n return clonedResponseObject\n }\n}\n\nmixinBody(Response)\n\nObject.defineProperties(Response.prototype, {\n type: kEnumerableProperty,\n url: kEnumerableProperty,\n status: kEnumerableProperty,\n ok: kEnumerableProperty,\n redirected: kEnumerableProperty,\n statusText: kEnumerableProperty,\n headers: kEnumerableProperty,\n clone: kEnumerableProperty,\n body: kEnumerableProperty,\n bodyUsed: kEnumerableProperty,\n [Symbol.toStringTag]: {\n value: 'Response',\n configurable: true\n }\n})\n\nObject.defineProperties(Response, {\n json: kEnumerableProperty,\n redirect: kEnumerableProperty,\n error: kEnumerableProperty\n})\n\n// https://fetch.spec.whatwg.org/#concept-response-clone\nfunction cloneResponse (response) {\n // To clone a response response, run these steps:\n\n // 1. If response is a filtered response, then return a new identical\n // filtered response whose internal response is a clone of response\u2019s\n // internal response.\n if (response.internalResponse) {\n return filterResponse(\n cloneResponse(response.internalResponse),\n response.type\n )\n }\n\n // 2. Let newResponse be a copy of response, except for its body.\n const newResponse = makeResponse({ ...response, body: null })\n\n // 3. If response\u2019s body is non-null, then set newResponse\u2019s body to the\n // result of cloning response\u2019s body.\n if (response.body != null) {\n newResponse.body = cloneBody(response.body)\n }\n\n // 4. Return newResponse.\n return newResponse\n}\n\nfunction makeResponse (init) {\n return {\n aborted: false,\n rangeRequested: false,\n timingAllowPassed: false,\n requestIncludesCredentials: false,\n type: 'default',\n status: 200,\n timingInfo: null,\n cacheState: '',\n statusText: '',\n ...init,\n headersList: init.headersList\n ? new HeadersList(init.headersList)\n : new HeadersList(),\n urlList: init.urlList ? [...init.urlList] : []\n }\n}\n\nfunction makeNetworkError (reason) {\n const isError = isErrorLike(reason)\n return makeResponse({\n type: 'error',\n status: 0,\n error: isError\n ? reason\n : new Error(reason ? String(reason) : reason),\n aborted: reason && reason.name === 'AbortError'\n })\n}\n\nfunction makeFilteredResponse (response, state) {\n state = {\n internalResponse: response,\n ...state\n }\n\n return new Proxy(response, {\n get (target, p) {\n return p in state ? state[p] : target[p]\n },\n set (target, p, value) {\n assert(!(p in state))\n target[p] = value\n return true\n }\n })\n}\n\n// https://fetch.spec.whatwg.org/#concept-filtered-response\nfunction filterResponse (response, type) {\n // Set response to the following filtered response with response as its\n // internal response, depending on request\u2019s response tainting:\n if (type === 'basic') {\n // A basic filtered response is a filtered response whose type is \"basic\"\n // and header list excludes any headers in internal response\u2019s header list\n // whose name is a forbidden response-header name.\n\n // Note: undici does not implement forbidden response-header names\n return makeFilteredResponse(response, {\n type: 'basic',\n headersList: response.headersList\n })\n } else if (type === 'cors') {\n // A CORS filtered response is a filtered response whose type is \"cors\"\n // and header list excludes any headers in internal response\u2019s header\n // list whose name is not a CORS-safelisted response-header name, given\n // internal response\u2019s CORS-exposed header-name list.\n\n // Note: undici does not implement CORS-safelisted response-header names\n return makeFilteredResponse(response, {\n type: 'cors',\n headersList: response.headersList\n })\n } else if (type === 'opaque') {\n // An opaque filtered response is a filtered response whose type is\n // \"opaque\", URL list is the empty list, status is 0, status message\n // is the empty byte sequence, header list is empty, and body is null.\n\n return makeFilteredResponse(response, {\n type: 'opaque',\n urlList: Object.freeze([]),\n status: 0,\n statusText: '',\n body: null\n })\n } else if (type === 'opaqueredirect') {\n // An opaque-redirect filtered response is a filtered response whose type\n // is \"opaqueredirect\", status is 0, status message is the empty byte\n // sequence, header list is empty, and body is null.\n\n return makeFilteredResponse(response, {\n type: 'opaqueredirect',\n status: 0,\n statusText: '',\n headersList: [],\n body: null\n })\n } else {\n assert(false)\n }\n}\n\n// https://fetch.spec.whatwg.org/#appropriate-network-error\nfunction makeAppropriateNetworkError (fetchParams, err = null) {\n // 1. Assert: fetchParams is canceled.\n assert(isCancelled(fetchParams))\n\n // 2. Return an aborted network error if fetchParams is aborted;\n // otherwise return a network error.\n return isAborted(fetchParams)\n ? makeNetworkError(Object.assign(new DOMException('The operation was aborted.', 'AbortError'), { cause: err }))\n : makeNetworkError(Object.assign(new DOMException('Request was cancelled.'), { cause: err }))\n}\n\n// https://whatpr.org/fetch/1392.html#initialize-a-response\nfunction initializeResponse (response, init, body) {\n // 1. If init[\"status\"] is not in the range 200 to 599, inclusive, then\n // throw a RangeError.\n if (init.status !== null && (init.status < 200 || init.status > 599)) {\n throw new RangeError('init[\"status\"] must be in the range of 200 to 599, inclusive.')\n }\n\n // 2. If init[\"statusText\"] does not match the reason-phrase token production,\n // then throw a TypeError.\n if ('statusText' in init && init.statusText != null) {\n // See, https://datatracker.ietf.org/doc/html/rfc7230#section-3.1.2:\n // reason-phrase = *( HTAB / SP / VCHAR / obs-text )\n if (!isValidReasonPhrase(String(init.statusText))) {\n throw new TypeError('Invalid statusText')\n }\n }\n\n // 3. Set response\u2019s response\u2019s status to init[\"status\"].\n if ('status' in init && init.status != null) {\n response[kState].status = init.status\n }\n\n // 4. Set response\u2019s response\u2019s status message to init[\"statusText\"].\n if ('statusText' in init && init.statusText != null) {\n response[kState].statusText = init.statusText\n }\n\n // 5. If init[\"headers\"] exists, then fill response\u2019s headers with init[\"headers\"].\n if ('headers' in init && init.headers != null) {\n fill(response[kHeaders], init.headers)\n }\n\n // 6. If body was given, then:\n if (body) {\n // 1. If response's status is a null body status, then throw a TypeError.\n if (nullBodyStatus.includes(response.status)) {\n throw webidl.errors.exception({\n header: 'Response constructor',\n message: 'Invalid response status code ' + response.status\n })\n }\n\n // 2. Set response's body to body's body.\n response[kState].body = body.body\n\n // 3. If body's type is non-null and response's header list does not contain\n // `Content-Type`, then append (`Content-Type`, body's type) to response's header list.\n if (body.type != null && !response[kState].headersList.contains('Content-Type')) {\n response[kState].headersList.append('content-type', body.type)\n }\n }\n}\n\nwebidl.converters.ReadableStream = webidl.interfaceConverter(\n ReadableStream\n)\n\nwebidl.converters.FormData = webidl.interfaceConverter(\n FormData\n)\n\nwebidl.converters.URLSearchParams = webidl.interfaceConverter(\n URLSearchParams\n)\n\n// https://fetch.spec.whatwg.org/#typedefdef-xmlhttprequestbodyinit\nwebidl.converters.XMLHttpRequestBodyInit = function (V) {\n if (typeof V === 'string') {\n return webidl.converters.USVString(V)\n }\n\n if (isBlobLike(V)) {\n return webidl.converters.Blob(V, { strict: false })\n }\n\n if (types.isArrayBuffer(V) || types.isTypedArray(V) || types.isDataView(V)) {\n return webidl.converters.BufferSource(V)\n }\n\n if (util.isFormDataLike(V)) {\n return webidl.converters.FormData(V, { strict: false })\n }\n\n if (V instanceof URLSearchParams) {\n return webidl.converters.URLSearchParams(V)\n }\n\n return webidl.converters.DOMString(V)\n}\n\n// https://fetch.spec.whatwg.org/#bodyinit\nwebidl.converters.BodyInit = function (V) {\n if (V instanceof ReadableStream) {\n return webidl.converters.ReadableStream(V)\n }\n\n // Note: the spec doesn't include async iterables,\n // this is an undici extension.\n if (V?.[Symbol.asyncIterator]) {\n return V\n }\n\n return webidl.converters.XMLHttpRequestBodyInit(V)\n}\n\nwebidl.converters.ResponseInit = webidl.dictionaryConverter([\n {\n key: 'status',\n converter: webidl.converters['unsigned short'],\n defaultValue: 200\n },\n {\n key: 'statusText',\n converter: webidl.converters.ByteString,\n defaultValue: ''\n },\n {\n key: 'headers',\n converter: webidl.converters.HeadersInit\n }\n])\n\nmodule.exports = {\n makeNetworkError,\n makeResponse,\n makeAppropriateNetworkError,\n filterResponse,\n Response,\n cloneResponse\n}\n", "/* globals AbortController */\n\n'use strict'\n\nconst { extractBody, mixinBody, cloneBody } = require('./body')\nconst { Headers, fill: fillHeaders, HeadersList } = require('./headers')\nconst { FinalizationRegistry } = require('../compat/dispatcher-weakref')()\nconst util = require('../core/util')\nconst {\n isValidHTTPToken,\n sameOrigin,\n normalizeMethod,\n makePolicyContainer,\n normalizeMethodRecord\n} = require('./util')\nconst {\n forbiddenMethodsSet,\n corsSafeListedMethodsSet,\n referrerPolicy,\n requestRedirect,\n requestMode,\n requestCredentials,\n requestCache,\n requestDuplex\n} = require('./constants')\nconst { kEnumerableProperty } = util\nconst { kHeaders, kSignal, kState, kGuard, kRealm } = require('./symbols')\nconst { webidl } = require('./webidl')\nconst { getGlobalOrigin } = require('./global')\nconst { URLSerializer } = require('./dataURL')\nconst { kHeadersList, kConstruct } = require('../core/symbols')\nconst assert = require('assert')\nconst { getMaxListeners, setMaxListeners, getEventListeners, defaultMaxListeners } = require('events')\n\nlet TransformStream = globalThis.TransformStream\n\nconst kAbortController = Symbol('abortController')\n\nconst requestFinalizer = new FinalizationRegistry(({ signal, abort }) => {\n signal.removeEventListener('abort', abort)\n})\n\n// https://fetch.spec.whatwg.org/#request-class\nclass Request {\n // https://fetch.spec.whatwg.org/#dom-request\n constructor (input, init = {}) {\n if (input === kConstruct) {\n return\n }\n\n webidl.argumentLengthCheck(arguments, 1, { header: 'Request constructor' })\n\n input = webidl.converters.RequestInfo(input)\n init = webidl.converters.RequestInit(init)\n\n // https://html.spec.whatwg.org/multipage/webappapis.html#environment-settings-object\n this[kRealm] = {\n settingsObject: {\n baseUrl: getGlobalOrigin(),\n get origin () {\n return this.baseUrl?.origin\n },\n policyContainer: makePolicyContainer()\n }\n }\n\n // 1. Let request be null.\n let request = null\n\n // 2. Let fallbackMode be null.\n let fallbackMode = null\n\n // 3. Let baseURL be this\u2019s relevant settings object\u2019s API base URL.\n const baseUrl = this[kRealm].settingsObject.baseUrl\n\n // 4. Let signal be null.\n let signal = null\n\n // 5. If input is a string, then:\n if (typeof input === 'string') {\n // 1. Let parsedURL be the result of parsing input with baseURL.\n // 2. If parsedURL is failure, then throw a TypeError.\n let parsedURL\n try {\n parsedURL = new URL(input, baseUrl)\n } catch (err) {\n throw new TypeError('Failed to parse URL from ' + input, { cause: err })\n }\n\n // 3. If parsedURL includes credentials, then throw a TypeError.\n if (parsedURL.username || parsedURL.password) {\n throw new TypeError(\n 'Request cannot be constructed from a URL that includes credentials: ' +\n input\n )\n }\n\n // 4. Set request to a new request whose URL is parsedURL.\n request = makeRequest({ urlList: [parsedURL] })\n\n // 5. Set fallbackMode to \"cors\".\n fallbackMode = 'cors'\n } else {\n // 6. Otherwise:\n\n // 7. Assert: input is a Request object.\n assert(input instanceof Request)\n\n // 8. Set request to input\u2019s request.\n request = input[kState]\n\n // 9. Set signal to input\u2019s signal.\n signal = input[kSignal]\n }\n\n // 7. Let origin be this\u2019s relevant settings object\u2019s origin.\n const origin = this[kRealm].settingsObject.origin\n\n // 8. Let window be \"client\".\n let window = 'client'\n\n // 9. If request\u2019s window is an environment settings object and its origin\n // is same origin with origin, then set window to request\u2019s window.\n if (\n request.window?.constructor?.name === 'EnvironmentSettingsObject' &&\n sameOrigin(request.window, origin)\n ) {\n window = request.window\n }\n\n // 10. If init[\"window\"] exists and is non-null, then throw a TypeError.\n if (init.window != null) {\n throw new TypeError(`'window' option '${window}' must be null`)\n }\n\n // 11. If init[\"window\"] exists, then set window to \"no-window\".\n if ('window' in init) {\n window = 'no-window'\n }\n\n // 12. Set request to a new request with the following properties:\n request = makeRequest({\n // URL request\u2019s URL.\n // undici implementation note: this is set as the first item in request's urlList in makeRequest\n // method request\u2019s method.\n method: request.method,\n // header list A copy of request\u2019s header list.\n // undici implementation note: headersList is cloned in makeRequest\n headersList: request.headersList,\n // unsafe-request flag Set.\n unsafeRequest: request.unsafeRequest,\n // client This\u2019s relevant settings object.\n client: this[kRealm].settingsObject,\n // window window.\n window,\n // priority request\u2019s priority.\n priority: request.priority,\n // origin request\u2019s origin. The propagation of the origin is only significant for navigation requests\n // being handled by a service worker. In this scenario a request can have an origin that is different\n // from the current client.\n origin: request.origin,\n // referrer request\u2019s referrer.\n referrer: request.referrer,\n // referrer policy request\u2019s referrer policy.\n referrerPolicy: request.referrerPolicy,\n // mode request\u2019s mode.\n mode: request.mode,\n // credentials mode request\u2019s credentials mode.\n credentials: request.credentials,\n // cache mode request\u2019s cache mode.\n cache: request.cache,\n // redirect mode request\u2019s redirect mode.\n redirect: request.redirect,\n // integrity metadata request\u2019s integrity metadata.\n integrity: request.integrity,\n // keepalive request\u2019s keepalive.\n keepalive: request.keepalive,\n // reload-navigation flag request\u2019s reload-navigation flag.\n reloadNavigation: request.reloadNavigation,\n // history-navigation flag request\u2019s history-navigation flag.\n historyNavigation: request.historyNavigation,\n // URL list A clone of request\u2019s URL list.\n urlList: [...request.urlList]\n })\n\n const initHasKey = Object.keys(init).length !== 0\n\n // 13. If init is not empty, then:\n if (initHasKey) {\n // 1. If request\u2019s mode is \"navigate\", then set it to \"same-origin\".\n if (request.mode === 'navigate') {\n request.mode = 'same-origin'\n }\n\n // 2. Unset request\u2019s reload-navigation flag.\n request.reloadNavigation = false\n\n // 3. Unset request\u2019s history-navigation flag.\n request.historyNavigation = false\n\n // 4. Set request\u2019s origin to \"client\".\n request.origin = 'client'\n\n // 5. Set request\u2019s referrer to \"client\"\n request.referrer = 'client'\n\n // 6. Set request\u2019s referrer policy to the empty string.\n request.referrerPolicy = ''\n\n // 7. Set request\u2019s URL to request\u2019s current URL.\n request.url = request.urlList[request.urlList.length - 1]\n\n // 8. Set request\u2019s URL list to \u00AB request\u2019s URL \u00BB.\n request.urlList = [request.url]\n }\n\n // 14. If init[\"referrer\"] exists, then:\n if (init.referrer !== undefined) {\n // 1. Let referrer be init[\"referrer\"].\n const referrer = init.referrer\n\n // 2. If referrer is the empty string, then set request\u2019s referrer to \"no-referrer\".\n if (referrer === '') {\n request.referrer = 'no-referrer'\n } else {\n // 1. Let parsedReferrer be the result of parsing referrer with\n // baseURL.\n // 2. If parsedReferrer is failure, then throw a TypeError.\n let parsedReferrer\n try {\n parsedReferrer = new URL(referrer, baseUrl)\n } catch (err) {\n throw new TypeError(`Referrer \"${referrer}\" is not a valid URL.`, { cause: err })\n }\n\n // 3. If one of the following is true\n // - parsedReferrer\u2019s scheme is \"about\" and path is the string \"client\"\n // - parsedReferrer\u2019s origin is not same origin with origin\n // then set request\u2019s referrer to \"client\".\n if (\n (parsedReferrer.protocol === 'about:' && parsedReferrer.hostname === 'client') ||\n (origin && !sameOrigin(parsedReferrer, this[kRealm].settingsObject.baseUrl))\n ) {\n request.referrer = 'client'\n } else {\n // 4. Otherwise, set request\u2019s referrer to parsedReferrer.\n request.referrer = parsedReferrer\n }\n }\n }\n\n // 15. If init[\"referrerPolicy\"] exists, then set request\u2019s referrer policy\n // to it.\n if (init.referrerPolicy !== undefined) {\n request.referrerPolicy = init.referrerPolicy\n }\n\n // 16. Let mode be init[\"mode\"] if it exists, and fallbackMode otherwise.\n let mode\n if (init.mode !== undefined) {\n mode = init.mode\n } else {\n mode = fallbackMode\n }\n\n // 17. If mode is \"navigate\", then throw a TypeError.\n if (mode === 'navigate') {\n throw webidl.errors.exception({\n header: 'Request constructor',\n message: 'invalid request mode navigate.'\n })\n }\n\n // 18. If mode is non-null, set request\u2019s mode to mode.\n if (mode != null) {\n request.mode = mode\n }\n\n // 19. If init[\"credentials\"] exists, then set request\u2019s credentials mode\n // to it.\n if (init.credentials !== undefined) {\n request.credentials = init.credentials\n }\n\n // 18. If init[\"cache\"] exists, then set request\u2019s cache mode to it.\n if (init.cache !== undefined) {\n request.cache = init.cache\n }\n\n // 21. If request\u2019s cache mode is \"only-if-cached\" and request\u2019s mode is\n // not \"same-origin\", then throw a TypeError.\n if (request.cache === 'only-if-cached' && request.mode !== 'same-origin') {\n throw new TypeError(\n \"'only-if-cached' can be set only with 'same-origin' mode\"\n )\n }\n\n // 22. If init[\"redirect\"] exists, then set request\u2019s redirect mode to it.\n if (init.redirect !== undefined) {\n request.redirect = init.redirect\n }\n\n // 23. If init[\"integrity\"] exists, then set request\u2019s integrity metadata to it.\n if (init.integrity != null) {\n request.integrity = String(init.integrity)\n }\n\n // 24. If init[\"keepalive\"] exists, then set request\u2019s keepalive to it.\n if (init.keepalive !== undefined) {\n request.keepalive = Boolean(init.keepalive)\n }\n\n // 25. If init[\"method\"] exists, then:\n if (init.method !== undefined) {\n // 1. Let method be init[\"method\"].\n let method = init.method\n\n // 2. If method is not a method or method is a forbidden method, then\n // throw a TypeError.\n if (!isValidHTTPToken(method)) {\n throw new TypeError(`'${method}' is not a valid HTTP method.`)\n }\n\n if (forbiddenMethodsSet.has(method.toUpperCase())) {\n throw new TypeError(`'${method}' HTTP method is unsupported.`)\n }\n\n // 3. Normalize method.\n method = normalizeMethodRecord[method] ?? normalizeMethod(method)\n\n // 4. Set request\u2019s method to method.\n request.method = method\n }\n\n // 26. If init[\"signal\"] exists, then set signal to it.\n if (init.signal !== undefined) {\n signal = init.signal\n }\n\n // 27. Set this\u2019s request to request.\n this[kState] = request\n\n // 28. Set this\u2019s signal to a new AbortSignal object with this\u2019s relevant\n // Realm.\n // TODO: could this be simplified with AbortSignal.any\n // (https://dom.spec.whatwg.org/#dom-abortsignal-any)\n const ac = new AbortController()\n this[kSignal] = ac.signal\n this[kSignal][kRealm] = this[kRealm]\n\n // 29. If signal is not null, then make this\u2019s signal follow signal.\n if (signal != null) {\n if (\n !signal ||\n typeof signal.aborted !== 'boolean' ||\n typeof signal.addEventListener !== 'function'\n ) {\n throw new TypeError(\n \"Failed to construct 'Request': member signal is not of type AbortSignal.\"\n )\n }\n\n if (signal.aborted) {\n ac.abort(signal.reason)\n } else {\n // Keep a strong ref to ac while request object\n // is alive. This is needed to prevent AbortController\n // from being prematurely garbage collected.\n // See, https://github.com/nodejs/undici/issues/1926.\n this[kAbortController] = ac\n\n const acRef = new WeakRef(ac)\n const abort = function () {\n const ac = acRef.deref()\n if (ac !== undefined) {\n ac.abort(this.reason)\n }\n }\n\n // Third-party AbortControllers may not work with these.\n // See, https://github.com/nodejs/undici/pull/1910#issuecomment-1464495619.\n try {\n // If the max amount of listeners is equal to the default, increase it\n // This is only available in node >= v19.9.0\n if (typeof getMaxListeners === 'function' && getMaxListeners(signal) === defaultMaxListeners) {\n setMaxListeners(100, signal)\n } else if (getEventListeners(signal, 'abort').length >= defaultMaxListeners) {\n setMaxListeners(100, signal)\n }\n } catch {}\n\n util.addAbortListener(signal, abort)\n requestFinalizer.register(ac, { signal, abort })\n }\n }\n\n // 30. Set this\u2019s headers to a new Headers object with this\u2019s relevant\n // Realm, whose header list is request\u2019s header list and guard is\n // \"request\".\n this[kHeaders] = new Headers(kConstruct)\n this[kHeaders][kHeadersList] = request.headersList\n this[kHeaders][kGuard] = 'request'\n this[kHeaders][kRealm] = this[kRealm]\n\n // 31. If this\u2019s request\u2019s mode is \"no-cors\", then:\n if (mode === 'no-cors') {\n // 1. If this\u2019s request\u2019s method is not a CORS-safelisted method,\n // then throw a TypeError.\n if (!corsSafeListedMethodsSet.has(request.method)) {\n throw new TypeError(\n `'${request.method} is unsupported in no-cors mode.`\n )\n }\n\n // 2. Set this\u2019s headers\u2019s guard to \"request-no-cors\".\n this[kHeaders][kGuard] = 'request-no-cors'\n }\n\n // 32. If init is not empty, then:\n if (initHasKey) {\n /** @type {HeadersList} */\n const headersList = this[kHeaders][kHeadersList]\n // 1. Let headers be a copy of this\u2019s headers and its associated header\n // list.\n // 2. If init[\"headers\"] exists, then set headers to init[\"headers\"].\n const headers = init.headers !== undefined ? init.headers : new HeadersList(headersList)\n\n // 3. Empty this\u2019s headers\u2019s header list.\n headersList.clear()\n\n // 4. If headers is a Headers object, then for each header in its header\n // list, append header\u2019s name/header\u2019s value to this\u2019s headers.\n if (headers instanceof HeadersList) {\n for (const [key, val] of headers) {\n headersList.append(key, val)\n }\n // Note: Copy the `set-cookie` meta-data.\n headersList.cookies = headers.cookies\n } else {\n // 5. Otherwise, fill this\u2019s headers with headers.\n fillHeaders(this[kHeaders], headers)\n }\n }\n\n // 33. Let inputBody be input\u2019s request\u2019s body if input is a Request\n // object; otherwise null.\n const inputBody = input instanceof Request ? input[kState].body : null\n\n // 34. If either init[\"body\"] exists and is non-null or inputBody is\n // non-null, and request\u2019s method is `GET` or `HEAD`, then throw a\n // TypeError.\n if (\n (init.body != null || inputBody != null) &&\n (request.method === 'GET' || request.method === 'HEAD')\n ) {\n throw new TypeError('Request with GET/HEAD method cannot have body.')\n }\n\n // 35. Let initBody be null.\n let initBody = null\n\n // 36. If init[\"body\"] exists and is non-null, then:\n if (init.body != null) {\n // 1. Let Content-Type be null.\n // 2. Set initBody and Content-Type to the result of extracting\n // init[\"body\"], with keepalive set to request\u2019s keepalive.\n const [extractedBody, contentType] = extractBody(\n init.body,\n request.keepalive\n )\n initBody = extractedBody\n\n // 3, If Content-Type is non-null and this\u2019s headers\u2019s header list does\n // not contain `Content-Type`, then append `Content-Type`/Content-Type to\n // this\u2019s headers.\n if (contentType && !this[kHeaders][kHeadersList].contains('content-type')) {\n this[kHeaders].append('content-type', contentType)\n }\n }\n\n // 37. Let inputOrInitBody be initBody if it is non-null; otherwise\n // inputBody.\n const inputOrInitBody = initBody ?? inputBody\n\n // 38. If inputOrInitBody is non-null and inputOrInitBody\u2019s source is\n // null, then:\n if (inputOrInitBody != null && inputOrInitBody.source == null) {\n // 1. If initBody is non-null and init[\"duplex\"] does not exist,\n // then throw a TypeError.\n if (initBody != null && init.duplex == null) {\n throw new TypeError('RequestInit: duplex option is required when sending a body.')\n }\n\n // 2. If this\u2019s request\u2019s mode is neither \"same-origin\" nor \"cors\",\n // then throw a TypeError.\n if (request.mode !== 'same-origin' && request.mode !== 'cors') {\n throw new TypeError(\n 'If request is made from ReadableStream, mode should be \"same-origin\" or \"cors\"'\n )\n }\n\n // 3. Set this\u2019s request\u2019s use-CORS-preflight flag.\n request.useCORSPreflightFlag = true\n }\n\n // 39. Let finalBody be inputOrInitBody.\n let finalBody = inputOrInitBody\n\n // 40. If initBody is null and inputBody is non-null, then:\n if (initBody == null && inputBody != null) {\n // 1. If input is unusable, then throw a TypeError.\n if (util.isDisturbed(inputBody.stream) || inputBody.stream.locked) {\n throw new TypeError(\n 'Cannot construct a Request with a Request object that has already been used.'\n )\n }\n\n // 2. Set finalBody to the result of creating a proxy for inputBody.\n if (!TransformStream) {\n TransformStream = require('stream/web').TransformStream\n }\n\n // https://streams.spec.whatwg.org/#readablestream-create-a-proxy\n const identityTransform = new TransformStream()\n inputBody.stream.pipeThrough(identityTransform)\n finalBody = {\n source: inputBody.source,\n length: inputBody.length,\n stream: identityTransform.readable\n }\n }\n\n // 41. Set this\u2019s request\u2019s body to finalBody.\n this[kState].body = finalBody\n }\n\n // Returns request\u2019s HTTP method, which is \"GET\" by default.\n get method () {\n webidl.brandCheck(this, Request)\n\n // The method getter steps are to return this\u2019s request\u2019s method.\n return this[kState].method\n }\n\n // Returns the URL of request as a string.\n get url () {\n webidl.brandCheck(this, Request)\n\n // The url getter steps are to return this\u2019s request\u2019s URL, serialized.\n return URLSerializer(this[kState].url)\n }\n\n // Returns a Headers object consisting of the headers associated with request.\n // Note that headers added in the network layer by the user agent will not\n // be accounted for in this object, e.g., the \"Host\" header.\n get headers () {\n webidl.brandCheck(this, Request)\n\n // The headers getter steps are to return this\u2019s headers.\n return this[kHeaders]\n }\n\n // Returns the kind of resource requested by request, e.g., \"document\"\n // or \"script\".\n get destination () {\n webidl.brandCheck(this, Request)\n\n // The destination getter are to return this\u2019s request\u2019s destination.\n return this[kState].destination\n }\n\n // Returns the referrer of request. Its value can be a same-origin URL if\n // explicitly set in init, the empty string to indicate no referrer, and\n // \"about:client\" when defaulting to the global\u2019s default. This is used\n // during fetching to determine the value of the `Referer` header of the\n // request being made.\n get referrer () {\n webidl.brandCheck(this, Request)\n\n // 1. If this\u2019s request\u2019s referrer is \"no-referrer\", then return the\n // empty string.\n if (this[kState].referrer === 'no-referrer') {\n return ''\n }\n\n // 2. If this\u2019s request\u2019s referrer is \"client\", then return\n // \"about:client\".\n if (this[kState].referrer === 'client') {\n return 'about:client'\n }\n\n // Return this\u2019s request\u2019s referrer, serialized.\n return this[kState].referrer.toString()\n }\n\n // Returns the referrer policy associated with request.\n // This is used during fetching to compute the value of the request\u2019s\n // referrer.\n get referrerPolicy () {\n webidl.brandCheck(this, Request)\n\n // The referrerPolicy getter steps are to return this\u2019s request\u2019s referrer policy.\n return this[kState].referrerPolicy\n }\n\n // Returns the mode associated with request, which is a string indicating\n // whether the request will use CORS, or will be restricted to same-origin\n // URLs.\n get mode () {\n webidl.brandCheck(this, Request)\n\n // The mode getter steps are to return this\u2019s request\u2019s mode.\n return this[kState].mode\n }\n\n // Returns the credentials mode associated with request,\n // which is a string indicating whether credentials will be sent with the\n // request always, never, or only when sent to a same-origin URL.\n get credentials () {\n // The credentials getter steps are to return this\u2019s request\u2019s credentials mode.\n return this[kState].credentials\n }\n\n // Returns the cache mode associated with request,\n // which is a string indicating how the request will\n // interact with the browser\u2019s cache when fetching.\n get cache () {\n webidl.brandCheck(this, Request)\n\n // The cache getter steps are to return this\u2019s request\u2019s cache mode.\n return this[kState].cache\n }\n\n // Returns the redirect mode associated with request,\n // which is a string indicating how redirects for the\n // request will be handled during fetching. A request\n // will follow redirects by default.\n get redirect () {\n webidl.brandCheck(this, Request)\n\n // The redirect getter steps are to return this\u2019s request\u2019s redirect mode.\n return this[kState].redirect\n }\n\n // Returns request\u2019s subresource integrity metadata, which is a\n // cryptographic hash of the resource being fetched. Its value\n // consists of multiple hashes separated by whitespace. [SRI]\n get integrity () {\n webidl.brandCheck(this, Request)\n\n // The integrity getter steps are to return this\u2019s request\u2019s integrity\n // metadata.\n return this[kState].integrity\n }\n\n // Returns a boolean indicating whether or not request can outlive the\n // global in which it was created.\n get keepalive () {\n webidl.brandCheck(this, Request)\n\n // The keepalive getter steps are to return this\u2019s request\u2019s keepalive.\n return this[kState].keepalive\n }\n\n // Returns a boolean indicating whether or not request is for a reload\n // navigation.\n get isReloadNavigation () {\n webidl.brandCheck(this, Request)\n\n // The isReloadNavigation getter steps are to return true if this\u2019s\n // request\u2019s reload-navigation flag is set; otherwise false.\n return this[kState].reloadNavigation\n }\n\n // Returns a boolean indicating whether or not request is for a history\n // navigation (a.k.a. back-foward navigation).\n get isHistoryNavigation () {\n webidl.brandCheck(this, Request)\n\n // The isHistoryNavigation getter steps are to return true if this\u2019s request\u2019s\n // history-navigation flag is set; otherwise false.\n return this[kState].historyNavigation\n }\n\n // Returns the signal associated with request, which is an AbortSignal\n // object indicating whether or not request has been aborted, and its\n // abort event handler.\n get signal () {\n webidl.brandCheck(this, Request)\n\n // The signal getter steps are to return this\u2019s signal.\n return this[kSignal]\n }\n\n get body () {\n webidl.brandCheck(this, Request)\n\n return this[kState].body ? this[kState].body.stream : null\n }\n\n get bodyUsed () {\n webidl.brandCheck(this, Request)\n\n return !!this[kState].body && util.isDisturbed(this[kState].body.stream)\n }\n\n get duplex () {\n webidl.brandCheck(this, Request)\n\n return 'half'\n }\n\n // Returns a clone of request.\n clone () {\n webidl.brandCheck(this, Request)\n\n // 1. If this is unusable, then throw a TypeError.\n if (this.bodyUsed || this.body?.locked) {\n throw new TypeError('unusable')\n }\n\n // 2. Let clonedRequest be the result of cloning this\u2019s request.\n const clonedRequest = cloneRequest(this[kState])\n\n // 3. Let clonedRequestObject be the result of creating a Request object,\n // given clonedRequest, this\u2019s headers\u2019s guard, and this\u2019s relevant Realm.\n const clonedRequestObject = new Request(kConstruct)\n clonedRequestObject[kState] = clonedRequest\n clonedRequestObject[kRealm] = this[kRealm]\n clonedRequestObject[kHeaders] = new Headers(kConstruct)\n clonedRequestObject[kHeaders][kHeadersList] = clonedRequest.headersList\n clonedRequestObject[kHeaders][kGuard] = this[kHeaders][kGuard]\n clonedRequestObject[kHeaders][kRealm] = this[kHeaders][kRealm]\n\n // 4. Make clonedRequestObject\u2019s signal follow this\u2019s signal.\n const ac = new AbortController()\n if (this.signal.aborted) {\n ac.abort(this.signal.reason)\n } else {\n util.addAbortListener(\n this.signal,\n () => {\n ac.abort(this.signal.reason)\n }\n )\n }\n clonedRequestObject[kSignal] = ac.signal\n\n // 4. Return clonedRequestObject.\n return clonedRequestObject\n }\n}\n\nmixinBody(Request)\n\nfunction makeRequest (init) {\n // https://fetch.spec.whatwg.org/#requests\n const request = {\n method: 'GET',\n localURLsOnly: false,\n unsafeRequest: false,\n body: null,\n client: null,\n reservedClient: null,\n replacesClientId: '',\n window: 'client',\n keepalive: false,\n serviceWorkers: 'all',\n initiator: '',\n destination: '',\n priority: null,\n origin: 'client',\n policyContainer: 'client',\n referrer: 'client',\n referrerPolicy: '',\n mode: 'no-cors',\n useCORSPreflightFlag: false,\n credentials: 'same-origin',\n useCredentials: false,\n cache: 'default',\n redirect: 'follow',\n integrity: '',\n cryptoGraphicsNonceMetadata: '',\n parserMetadata: '',\n reloadNavigation: false,\n historyNavigation: false,\n userActivation: false,\n taintedOrigin: false,\n redirectCount: 0,\n responseTainting: 'basic',\n preventNoCacheCacheControlHeaderModification: false,\n done: false,\n timingAllowFailed: false,\n ...init,\n headersList: init.headersList\n ? new HeadersList(init.headersList)\n : new HeadersList()\n }\n request.url = request.urlList[0]\n return request\n}\n\n// https://fetch.spec.whatwg.org/#concept-request-clone\nfunction cloneRequest (request) {\n // To clone a request request, run these steps:\n\n // 1. Let newRequest be a copy of request, except for its body.\n const newRequest = makeRequest({ ...request, body: null })\n\n // 2. If request\u2019s body is non-null, set newRequest\u2019s body to the\n // result of cloning request\u2019s body.\n if (request.body != null) {\n newRequest.body = cloneBody(request.body)\n }\n\n // 3. Return newRequest.\n return newRequest\n}\n\nObject.defineProperties(Request.prototype, {\n method: kEnumerableProperty,\n url: kEnumerableProperty,\n headers: kEnumerableProperty,\n redirect: kEnumerableProperty,\n clone: kEnumerableProperty,\n signal: kEnumerableProperty,\n duplex: kEnumerableProperty,\n destination: kEnumerableProperty,\n body: kEnumerableProperty,\n bodyUsed: kEnumerableProperty,\n isHistoryNavigation: kEnumerableProperty,\n isReloadNavigation: kEnumerableProperty,\n keepalive: kEnumerableProperty,\n integrity: kEnumerableProperty,\n cache: kEnumerableProperty,\n credentials: kEnumerableProperty,\n attribute: kEnumerableProperty,\n referrerPolicy: kEnumerableProperty,\n referrer: kEnumerableProperty,\n mode: kEnumerableProperty,\n [Symbol.toStringTag]: {\n value: 'Request',\n configurable: true\n }\n})\n\nwebidl.converters.Request = webidl.interfaceConverter(\n Request\n)\n\n// https://fetch.spec.whatwg.org/#requestinfo\nwebidl.converters.RequestInfo = function (V) {\n if (typeof V === 'string') {\n return webidl.converters.USVString(V)\n }\n\n if (V instanceof Request) {\n return webidl.converters.Request(V)\n }\n\n return webidl.converters.USVString(V)\n}\n\nwebidl.converters.AbortSignal = webidl.interfaceConverter(\n AbortSignal\n)\n\n// https://fetch.spec.whatwg.org/#requestinit\nwebidl.converters.RequestInit = webidl.dictionaryConverter([\n {\n key: 'method',\n converter: webidl.converters.ByteString\n },\n {\n key: 'headers',\n converter: webidl.converters.HeadersInit\n },\n {\n key: 'body',\n converter: webidl.nullableConverter(\n webidl.converters.BodyInit\n )\n },\n {\n key: 'referrer',\n converter: webidl.converters.USVString\n },\n {\n key: 'referrerPolicy',\n converter: webidl.converters.DOMString,\n // https://w3c.github.io/webappsec-referrer-policy/#referrer-policy\n allowedValues: referrerPolicy\n },\n {\n key: 'mode',\n converter: webidl.converters.DOMString,\n // https://fetch.spec.whatwg.org/#concept-request-mode\n allowedValues: requestMode\n },\n {\n key: 'credentials',\n converter: webidl.converters.DOMString,\n // https://fetch.spec.whatwg.org/#requestcredentials\n allowedValues: requestCredentials\n },\n {\n key: 'cache',\n converter: webidl.converters.DOMString,\n // https://fetch.spec.whatwg.org/#requestcache\n allowedValues: requestCache\n },\n {\n key: 'redirect',\n converter: webidl.converters.DOMString,\n // https://fetch.spec.whatwg.org/#requestredirect\n allowedValues: requestRedirect\n },\n {\n key: 'integrity',\n converter: webidl.converters.DOMString\n },\n {\n key: 'keepalive',\n converter: webidl.converters.boolean\n },\n {\n key: 'signal',\n converter: webidl.nullableConverter(\n (signal) => webidl.converters.AbortSignal(\n signal,\n { strict: false }\n )\n )\n },\n {\n key: 'window',\n converter: webidl.converters.any\n },\n {\n key: 'duplex',\n converter: webidl.converters.DOMString,\n allowedValues: requestDuplex\n }\n])\n\nmodule.exports = { Request, makeRequest }\n", "// https://github.com/Ethan-Arrowood/undici-fetch\n\n'use strict'\n\nconst {\n Response,\n makeNetworkError,\n makeAppropriateNetworkError,\n filterResponse,\n makeResponse\n} = require('./response')\nconst { Headers } = require('./headers')\nconst { Request, makeRequest } = require('./request')\nconst zlib = require('zlib')\nconst {\n bytesMatch,\n makePolicyContainer,\n clonePolicyContainer,\n requestBadPort,\n TAOCheck,\n appendRequestOriginHeader,\n responseLocationURL,\n requestCurrentURL,\n setRequestReferrerPolicyOnRedirect,\n tryUpgradeRequestToAPotentiallyTrustworthyURL,\n createOpaqueTimingInfo,\n appendFetchMetadata,\n corsCheck,\n crossOriginResourcePolicyCheck,\n determineRequestsReferrer,\n coarsenedSharedCurrentTime,\n createDeferredPromise,\n isBlobLike,\n sameOrigin,\n isCancelled,\n isAborted,\n isErrorLike,\n fullyReadBody,\n readableStreamClose,\n isomorphicEncode,\n urlIsLocal,\n urlIsHttpHttpsScheme,\n urlHasHttpsScheme\n} = require('./util')\nconst { kState, kHeaders, kGuard, kRealm } = require('./symbols')\nconst assert = require('assert')\nconst { safelyExtractBody } = require('./body')\nconst {\n redirectStatusSet,\n nullBodyStatus,\n safeMethodsSet,\n requestBodyHeader,\n subresourceSet,\n DOMException\n} = require('./constants')\nconst { kHeadersList } = require('../core/symbols')\nconst EE = require('events')\nconst { Readable, pipeline } = require('stream')\nconst { addAbortListener, isErrored, isReadable, nodeMajor, nodeMinor } = require('../core/util')\nconst { dataURLProcessor, serializeAMimeType } = require('./dataURL')\nconst { TransformStream } = require('stream/web')\nconst { getGlobalDispatcher } = require('../global')\nconst { webidl } = require('./webidl')\nconst { STATUS_CODES } = require('http')\nconst GET_OR_HEAD = ['GET', 'HEAD']\n\n/** @type {import('buffer').resolveObjectURL} */\nlet resolveObjectURL\nlet ReadableStream = globalThis.ReadableStream\n\nclass Fetch extends EE {\n constructor (dispatcher) {\n super()\n\n this.dispatcher = dispatcher\n this.connection = null\n this.dump = false\n this.state = 'ongoing'\n // 2 terminated listeners get added per request,\n // but only 1 gets removed. If there are 20 redirects,\n // 21 listeners will be added.\n // See https://github.com/nodejs/undici/issues/1711\n // TODO (fix): Find and fix root cause for leaked listener.\n this.setMaxListeners(21)\n }\n\n terminate (reason) {\n if (this.state !== 'ongoing') {\n return\n }\n\n this.state = 'terminated'\n this.connection?.destroy(reason)\n this.emit('terminated', reason)\n }\n\n // https://fetch.spec.whatwg.org/#fetch-controller-abort\n abort (error) {\n if (this.state !== 'ongoing') {\n return\n }\n\n // 1. Set controller\u2019s state to \"aborted\".\n this.state = 'aborted'\n\n // 2. Let fallbackError be an \"AbortError\" DOMException.\n // 3. Set error to fallbackError if it is not given.\n if (!error) {\n error = new DOMException('The operation was aborted.', 'AbortError')\n }\n\n // 4. Let serializedError be StructuredSerialize(error).\n // If that threw an exception, catch it, and let\n // serializedError be StructuredSerialize(fallbackError).\n\n // 5. Set controller\u2019s serialized abort reason to serializedError.\n this.serializedAbortReason = error\n\n this.connection?.destroy(error)\n this.emit('terminated', error)\n }\n}\n\n// https://fetch.spec.whatwg.org/#fetch-method\nfunction fetch (input, init = {}) {\n webidl.argumentLengthCheck(arguments, 1, { header: 'globalThis.fetch' })\n\n // 1. Let p be a new promise.\n const p = createDeferredPromise()\n\n // 2. Let requestObject be the result of invoking the initial value of\n // Request as constructor with input and init as arguments. If this throws\n // an exception, reject p with it and return p.\n let requestObject\n\n try {\n requestObject = new Request(input, init)\n } catch (e) {\n p.reject(e)\n return p.promise\n }\n\n // 3. Let request be requestObject\u2019s request.\n const request = requestObject[kState]\n\n // 4. If requestObject\u2019s signal\u2019s aborted flag is set, then:\n if (requestObject.signal.aborted) {\n // 1. Abort the fetch() call with p, request, null, and\n // requestObject\u2019s signal\u2019s abort reason.\n abortFetch(p, request, null, requestObject.signal.reason)\n\n // 2. Return p.\n return p.promise\n }\n\n // 5. Let globalObject be request\u2019s client\u2019s global object.\n const globalObject = request.client.globalObject\n\n // 6. If globalObject is a ServiceWorkerGlobalScope object, then set\n // request\u2019s service-workers mode to \"none\".\n if (globalObject?.constructor?.name === 'ServiceWorkerGlobalScope') {\n request.serviceWorkers = 'none'\n }\n\n // 7. Let responseObject be null.\n let responseObject = null\n\n // 8. Let relevantRealm be this\u2019s relevant Realm.\n const relevantRealm = null\n\n // 9. Let locallyAborted be false.\n let locallyAborted = false\n\n // 10. Let controller be null.\n let controller = null\n\n // 11. Add the following abort steps to requestObject\u2019s signal:\n addAbortListener(\n requestObject.signal,\n () => {\n // 1. Set locallyAborted to true.\n locallyAborted = true\n\n // 2. Assert: controller is non-null.\n assert(controller != null)\n\n // 3. Abort controller with requestObject\u2019s signal\u2019s abort reason.\n controller.abort(requestObject.signal.reason)\n\n // 4. Abort the fetch() call with p, request, responseObject,\n // and requestObject\u2019s signal\u2019s abort reason.\n abortFetch(p, request, responseObject, requestObject.signal.reason)\n }\n )\n\n // 12. Let handleFetchDone given response response be to finalize and\n // report timing with response, globalObject, and \"fetch\".\n const handleFetchDone = (response) =>\n finalizeAndReportTiming(response, 'fetch')\n\n // 13. Set controller to the result of calling fetch given request,\n // with processResponseEndOfBody set to handleFetchDone, and processResponse\n // given response being these substeps:\n\n const processResponse = (response) => {\n // 1. If locallyAborted is true, terminate these substeps.\n if (locallyAborted) {\n return Promise.resolve()\n }\n\n // 2. If response\u2019s aborted flag is set, then:\n if (response.aborted) {\n // 1. Let deserializedError be the result of deserialize a serialized\n // abort reason given controller\u2019s serialized abort reason and\n // relevantRealm.\n\n // 2. Abort the fetch() call with p, request, responseObject, and\n // deserializedError.\n\n abortFetch(p, request, responseObject, controller.serializedAbortReason)\n return Promise.resolve()\n }\n\n // 3. If response is a network error, then reject p with a TypeError\n // and terminate these substeps.\n if (response.type === 'error') {\n p.reject(\n Object.assign(new TypeError('fetch failed'), { cause: response.error })\n )\n return Promise.resolve()\n }\n\n // 4. Set responseObject to the result of creating a Response object,\n // given response, \"immutable\", and relevantRealm.\n responseObject = new Response()\n responseObject[kState] = response\n responseObject[kRealm] = relevantRealm\n responseObject[kHeaders][kHeadersList] = response.headersList\n responseObject[kHeaders][kGuard] = 'immutable'\n responseObject[kHeaders][kRealm] = relevantRealm\n\n // 5. Resolve p with responseObject.\n p.resolve(responseObject)\n }\n\n controller = fetching({\n request,\n processResponseEndOfBody: handleFetchDone,\n processResponse,\n dispatcher: init.dispatcher ?? getGlobalDispatcher() // undici\n })\n\n // 14. Return p.\n return p.promise\n}\n\n// https://fetch.spec.whatwg.org/#finalize-and-report-timing\nfunction finalizeAndReportTiming (response, initiatorType = 'other') {\n // 1. If response is an aborted network error, then return.\n if (response.type === 'error' && response.aborted) {\n return\n }\n\n // 2. If response\u2019s URL list is null or empty, then return.\n if (!response.urlList?.length) {\n return\n }\n\n // 3. Let originalURL be response\u2019s URL list[0].\n const originalURL = response.urlList[0]\n\n // 4. Let timingInfo be response\u2019s timing info.\n let timingInfo = response.timingInfo\n\n // 5. Let cacheState be response\u2019s cache state.\n let cacheState = response.cacheState\n\n // 6. If originalURL\u2019s scheme is not an HTTP(S) scheme, then return.\n if (!urlIsHttpHttpsScheme(originalURL)) {\n return\n }\n\n // 7. If timingInfo is null, then return.\n if (timingInfo === null) {\n return\n }\n\n // 8. If response\u2019s timing allow passed flag is not set, then:\n if (!response.timingAllowPassed) {\n // 1. Set timingInfo to a the result of creating an opaque timing info for timingInfo.\n timingInfo = createOpaqueTimingInfo({\n startTime: timingInfo.startTime\n })\n\n // 2. Set cacheState to the empty string.\n cacheState = ''\n }\n\n // 9. Set timingInfo\u2019s end time to the coarsened shared current time\n // given global\u2019s relevant settings object\u2019s cross-origin isolated\n // capability.\n // TODO: given global\u2019s relevant settings object\u2019s cross-origin isolated\n // capability?\n timingInfo.endTime = coarsenedSharedCurrentTime()\n\n // 10. Set response\u2019s timing info to timingInfo.\n response.timingInfo = timingInfo\n\n // 11. Mark resource timing for timingInfo, originalURL, initiatorType,\n // global, and cacheState.\n markResourceTiming(\n timingInfo,\n originalURL,\n initiatorType,\n globalThis,\n cacheState\n )\n}\n\n// https://w3c.github.io/resource-timing/#dfn-mark-resource-timing\nfunction markResourceTiming (timingInfo, originalURL, initiatorType, globalThis, cacheState) {\n if (nodeMajor > 18 || (nodeMajor === 18 && nodeMinor >= 2)) {\n performance.markResourceTiming(timingInfo, originalURL.href, initiatorType, globalThis, cacheState)\n }\n}\n\n// https://fetch.spec.whatwg.org/#abort-fetch\nfunction abortFetch (p, request, responseObject, error) {\n // Note: AbortSignal.reason was added in node v17.2.0\n // which would give us an undefined error to reject with.\n // Remove this once node v16 is no longer supported.\n if (!error) {\n error = new DOMException('The operation was aborted.', 'AbortError')\n }\n\n // 1. Reject promise with error.\n p.reject(error)\n\n // 2. If request\u2019s body is not null and is readable, then cancel request\u2019s\n // body with error.\n if (request.body != null && isReadable(request.body?.stream)) {\n request.body.stream.cancel(error).catch((err) => {\n if (err.code === 'ERR_INVALID_STATE') {\n // Node bug?\n return\n }\n throw err\n })\n }\n\n // 3. If responseObject is null, then return.\n if (responseObject == null) {\n return\n }\n\n // 4. Let response be responseObject\u2019s response.\n const response = responseObject[kState]\n\n // 5. If response\u2019s body is not null and is readable, then error response\u2019s\n // body with error.\n if (response.body != null && isReadable(response.body?.stream)) {\n response.body.stream.cancel(error).catch((err) => {\n if (err.code === 'ERR_INVALID_STATE') {\n // Node bug?\n return\n }\n throw err\n })\n }\n}\n\n// https://fetch.spec.whatwg.org/#fetching\nfunction fetching ({\n request,\n processRequestBodyChunkLength,\n processRequestEndOfBody,\n processResponse,\n processResponseEndOfBody,\n processResponseConsumeBody,\n useParallelQueue = false,\n dispatcher // undici\n}) {\n // 1. Let taskDestination be null.\n let taskDestination = null\n\n // 2. Let crossOriginIsolatedCapability be false.\n let crossOriginIsolatedCapability = false\n\n // 3. If request\u2019s client is non-null, then:\n if (request.client != null) {\n // 1. Set taskDestination to request\u2019s client\u2019s global object.\n taskDestination = request.client.globalObject\n\n // 2. Set crossOriginIsolatedCapability to request\u2019s client\u2019s cross-origin\n // isolated capability.\n crossOriginIsolatedCapability =\n request.client.crossOriginIsolatedCapability\n }\n\n // 4. If useParallelQueue is true, then set taskDestination to the result of\n // starting a new parallel queue.\n // TODO\n\n // 5. Let timingInfo be a new fetch timing info whose start time and\n // post-redirect start time are the coarsened shared current time given\n // crossOriginIsolatedCapability.\n const currenTime = coarsenedSharedCurrentTime(crossOriginIsolatedCapability)\n const timingInfo = createOpaqueTimingInfo({\n startTime: currenTime\n })\n\n // 6. Let fetchParams be a new fetch params whose\n // request is request,\n // timing info is timingInfo,\n // process request body chunk length is processRequestBodyChunkLength,\n // process request end-of-body is processRequestEndOfBody,\n // process response is processResponse,\n // process response consume body is processResponseConsumeBody,\n // process response end-of-body is processResponseEndOfBody,\n // task destination is taskDestination,\n // and cross-origin isolated capability is crossOriginIsolatedCapability.\n const fetchParams = {\n controller: new Fetch(dispatcher),\n request,\n timingInfo,\n processRequestBodyChunkLength,\n processRequestEndOfBody,\n processResponse,\n processResponseConsumeBody,\n processResponseEndOfBody,\n taskDestination,\n crossOriginIsolatedCapability\n }\n\n // 7. If request\u2019s body is a byte sequence, then set request\u2019s body to\n // request\u2019s body as a body.\n // NOTE: Since fetching is only called from fetch, body should already be\n // extracted.\n assert(!request.body || request.body.stream)\n\n // 8. If request\u2019s window is \"client\", then set request\u2019s window to request\u2019s\n // client, if request\u2019s client\u2019s global object is a Window object; otherwise\n // \"no-window\".\n if (request.window === 'client') {\n // TODO: What if request.client is null?\n request.window =\n request.client?.globalObject?.constructor?.name === 'Window'\n ? request.client\n : 'no-window'\n }\n\n // 9. If request\u2019s origin is \"client\", then set request\u2019s origin to request\u2019s\n // client\u2019s origin.\n if (request.origin === 'client') {\n // TODO: What if request.client is null?\n request.origin = request.client?.origin\n }\n\n // 10. If all of the following conditions are true:\n // TODO\n\n // 11. If request\u2019s policy container is \"client\", then:\n if (request.policyContainer === 'client') {\n // 1. If request\u2019s client is non-null, then set request\u2019s policy\n // container to a clone of request\u2019s client\u2019s policy container. [HTML]\n if (request.client != null) {\n request.policyContainer = clonePolicyContainer(\n request.client.policyContainer\n )\n } else {\n // 2. Otherwise, set request\u2019s policy container to a new policy\n // container.\n request.policyContainer = makePolicyContainer()\n }\n }\n\n // 12. If request\u2019s header list does not contain `Accept`, then:\n if (!request.headersList.contains('accept')) {\n // 1. Let value be `*/*`.\n const value = '*/*'\n\n // 2. A user agent should set value to the first matching statement, if\n // any, switching on request\u2019s destination:\n // \"document\"\n // \"frame\"\n // \"iframe\"\n // `text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8`\n // \"image\"\n // `image/png,image/svg+xml,image/*;q=0.8,*/*;q=0.5`\n // \"style\"\n // `text/css,*/*;q=0.1`\n // TODO\n\n // 3. Append `Accept`/value to request\u2019s header list.\n request.headersList.append('accept', value)\n }\n\n // 13. If request\u2019s header list does not contain `Accept-Language`, then\n // user agents should append `Accept-Language`/an appropriate value to\n // request\u2019s header list.\n if (!request.headersList.contains('accept-language')) {\n request.headersList.append('accept-language', '*')\n }\n\n // 14. If request\u2019s priority is null, then use request\u2019s initiator and\n // destination appropriately in setting request\u2019s priority to a\n // user-agent-defined object.\n if (request.priority === null) {\n // TODO\n }\n\n // 15. If request is a subresource request, then:\n if (subresourceSet.has(request.destination)) {\n // TODO\n }\n\n // 16. Run main fetch given fetchParams.\n mainFetch(fetchParams)\n .catch(err => {\n fetchParams.controller.terminate(err)\n })\n\n // 17. Return fetchParam's controller\n return fetchParams.controller\n}\n\n// https://fetch.spec.whatwg.org/#concept-main-fetch\nasync function mainFetch (fetchParams, recursive = false) {\n // 1. Let request be fetchParams\u2019s request.\n const request = fetchParams.request\n\n // 2. Let response be null.\n let response = null\n\n // 3. If request\u2019s local-URLs-only flag is set and request\u2019s current URL is\n // not local, then set response to a network error.\n if (request.localURLsOnly && !urlIsLocal(requestCurrentURL(request))) {\n response = makeNetworkError('local URLs only')\n }\n\n // 4. Run report Content Security Policy violations for request.\n // TODO\n\n // 5. Upgrade request to a potentially trustworthy URL, if appropriate.\n tryUpgradeRequestToAPotentiallyTrustworthyURL(request)\n\n // 6. If should request be blocked due to a bad port, should fetching request\n // be blocked as mixed content, or should request be blocked by Content\n // Security Policy returns blocked, then set response to a network error.\n if (requestBadPort(request) === 'blocked') {\n response = makeNetworkError('bad port')\n }\n // TODO: should fetching request be blocked as mixed content?\n // TODO: should request be blocked by Content Security Policy?\n\n // 7. If request\u2019s referrer policy is the empty string, then set request\u2019s\n // referrer policy to request\u2019s policy container\u2019s referrer policy.\n if (request.referrerPolicy === '') {\n request.referrerPolicy = request.policyContainer.referrerPolicy\n }\n\n // 8. If request\u2019s referrer is not \"no-referrer\", then set request\u2019s\n // referrer to the result of invoking determine request\u2019s referrer.\n if (request.referrer !== 'no-referrer') {\n request.referrer = determineRequestsReferrer(request)\n }\n\n // 9. Set request\u2019s current URL\u2019s scheme to \"https\" if all of the following\n // conditions are true:\n // - request\u2019s current URL\u2019s scheme is \"http\"\n // - request\u2019s current URL\u2019s host is a domain\n // - Matching request\u2019s current URL\u2019s host per Known HSTS Host Domain Name\n // Matching results in either a superdomain match with an asserted\n // includeSubDomains directive or a congruent match (with or without an\n // asserted includeSubDomains directive). [HSTS]\n // TODO\n\n // 10. If recursive is false, then run the remaining steps in parallel.\n // TODO\n\n // 11. If response is null, then set response to the result of running\n // the steps corresponding to the first matching statement:\n if (response === null) {\n response = await (async () => {\n const currentURL = requestCurrentURL(request)\n\n if (\n // - request\u2019s current URL\u2019s origin is same origin with request\u2019s origin,\n // and request\u2019s response tainting is \"basic\"\n (sameOrigin(currentURL, request.url) && request.responseTainting === 'basic') ||\n // request\u2019s current URL\u2019s scheme is \"data\"\n (currentURL.protocol === 'data:') ||\n // - request\u2019s mode is \"navigate\" or \"websocket\"\n (request.mode === 'navigate' || request.mode === 'websocket')\n ) {\n // 1. Set request\u2019s response tainting to \"basic\".\n request.responseTainting = 'basic'\n\n // 2. Return the result of running scheme fetch given fetchParams.\n return await schemeFetch(fetchParams)\n }\n\n // request\u2019s mode is \"same-origin\"\n if (request.mode === 'same-origin') {\n // 1. Return a network error.\n return makeNetworkError('request mode cannot be \"same-origin\"')\n }\n\n // request\u2019s mode is \"no-cors\"\n if (request.mode === 'no-cors') {\n // 1. If request\u2019s redirect mode is not \"follow\", then return a network\n // error.\n if (request.redirect !== 'follow') {\n return makeNetworkError(\n 'redirect mode cannot be \"follow\" for \"no-cors\" request'\n )\n }\n\n // 2. Set request\u2019s response tainting to \"opaque\".\n request.responseTainting = 'opaque'\n\n // 3. Return the result of running scheme fetch given fetchParams.\n return await schemeFetch(fetchParams)\n }\n\n // request\u2019s current URL\u2019s scheme is not an HTTP(S) scheme\n if (!urlIsHttpHttpsScheme(requestCurrentURL(request))) {\n // Return a network error.\n return makeNetworkError('URL scheme must be a HTTP(S) scheme')\n }\n\n // - request\u2019s use-CORS-preflight flag is set\n // - request\u2019s unsafe-request flag is set and either request\u2019s method is\n // not a CORS-safelisted method or CORS-unsafe request-header names with\n // request\u2019s header list is not empty\n // 1. Set request\u2019s response tainting to \"cors\".\n // 2. Let corsWithPreflightResponse be the result of running HTTP fetch\n // given fetchParams and true.\n // 3. If corsWithPreflightResponse is a network error, then clear cache\n // entries using request.\n // 4. Return corsWithPreflightResponse.\n // TODO\n\n // Otherwise\n // 1. Set request\u2019s response tainting to \"cors\".\n request.responseTainting = 'cors'\n\n // 2. Return the result of running HTTP fetch given fetchParams.\n return await httpFetch(fetchParams)\n })()\n }\n\n // 12. If recursive is true, then return response.\n if (recursive) {\n return response\n }\n\n // 13. If response is not a network error and response is not a filtered\n // response, then:\n if (response.status !== 0 && !response.internalResponse) {\n // If request\u2019s response tainting is \"cors\", then:\n if (request.responseTainting === 'cors') {\n // 1. Let headerNames be the result of extracting header list values\n // given `Access-Control-Expose-Headers` and response\u2019s header list.\n // TODO\n // 2. If request\u2019s credentials mode is not \"include\" and headerNames\n // contains `*`, then set response\u2019s CORS-exposed header-name list to\n // all unique header names in response\u2019s header list.\n // TODO\n // 3. Otherwise, if headerNames is not null or failure, then set\n // response\u2019s CORS-exposed header-name list to headerNames.\n // TODO\n }\n\n // Set response to the following filtered response with response as its\n // internal response, depending on request\u2019s response tainting:\n if (request.responseTainting === 'basic') {\n response = filterResponse(response, 'basic')\n } else if (request.responseTainting === 'cors') {\n response = filterResponse(response, 'cors')\n } else if (request.responseTainting === 'opaque') {\n response = filterResponse(response, 'opaque')\n } else {\n assert(false)\n }\n }\n\n // 14. Let internalResponse be response, if response is a network error,\n // and response\u2019s internal response otherwise.\n let internalResponse =\n response.status === 0 ? response : response.internalResponse\n\n // 15. If internalResponse\u2019s URL list is empty, then set it to a clone of\n // request\u2019s URL list.\n if (internalResponse.urlList.length === 0) {\n internalResponse.urlList.push(...request.urlList)\n }\n\n // 16. If request\u2019s timing allow failed flag is unset, then set\n // internalResponse\u2019s timing allow passed flag.\n if (!request.timingAllowFailed) {\n response.timingAllowPassed = true\n }\n\n // 17. If response is not a network error and any of the following returns\n // blocked\n // - should internalResponse to request be blocked as mixed content\n // - should internalResponse to request be blocked by Content Security Policy\n // - should internalResponse to request be blocked due to its MIME type\n // - should internalResponse to request be blocked due to nosniff\n // TODO\n\n // 18. If response\u2019s type is \"opaque\", internalResponse\u2019s status is 206,\n // internalResponse\u2019s range-requested flag is set, and request\u2019s header\n // list does not contain `Range`, then set response and internalResponse\n // to a network error.\n if (\n response.type === 'opaque' &&\n internalResponse.status === 206 &&\n internalResponse.rangeRequested &&\n !request.headers.contains('range')\n ) {\n response = internalResponse = makeNetworkError()\n }\n\n // 19. If response is not a network error and either request\u2019s method is\n // `HEAD` or `CONNECT`, or internalResponse\u2019s status is a null body status,\n // set internalResponse\u2019s body to null and disregard any enqueuing toward\n // it (if any).\n if (\n response.status !== 0 &&\n (request.method === 'HEAD' ||\n request.method === 'CONNECT' ||\n nullBodyStatus.includes(internalResponse.status))\n ) {\n internalResponse.body = null\n fetchParams.controller.dump = true\n }\n\n // 20. If request\u2019s integrity metadata is not the empty string, then:\n if (request.integrity) {\n // 1. Let processBodyError be this step: run fetch finale given fetchParams\n // and a network error.\n const processBodyError = (reason) =>\n fetchFinale(fetchParams, makeNetworkError(reason))\n\n // 2. If request\u2019s response tainting is \"opaque\", or response\u2019s body is null,\n // then run processBodyError and abort these steps.\n if (request.responseTainting === 'opaque' || response.body == null) {\n processBodyError(response.error)\n return\n }\n\n // 3. Let processBody given bytes be these steps:\n const processBody = (bytes) => {\n // 1. If bytes do not match request\u2019s integrity metadata,\n // then run processBodyError and abort these steps. [SRI]\n if (!bytesMatch(bytes, request.integrity)) {\n processBodyError('integrity mismatch')\n return\n }\n\n // 2. Set response\u2019s body to bytes as a body.\n response.body = safelyExtractBody(bytes)[0]\n\n // 3. Run fetch finale given fetchParams and response.\n fetchFinale(fetchParams, response)\n }\n\n // 4. Fully read response\u2019s body given processBody and processBodyError.\n await fullyReadBody(response.body, processBody, processBodyError)\n } else {\n // 21. Otherwise, run fetch finale given fetchParams and response.\n fetchFinale(fetchParams, response)\n }\n}\n\n// https://fetch.spec.whatwg.org/#concept-scheme-fetch\n// given a fetch params fetchParams\nfunction schemeFetch (fetchParams) {\n // Note: since the connection is destroyed on redirect, which sets fetchParams to a\n // cancelled state, we do not want this condition to trigger *unless* there have been\n // no redirects. See https://github.com/nodejs/undici/issues/1776\n // 1. If fetchParams is canceled, then return the appropriate network error for fetchParams.\n if (isCancelled(fetchParams) && fetchParams.request.redirectCount === 0) {\n return Promise.resolve(makeAppropriateNetworkError(fetchParams))\n }\n\n // 2. Let request be fetchParams\u2019s request.\n const { request } = fetchParams\n\n const { protocol: scheme } = requestCurrentURL(request)\n\n // 3. Switch on request\u2019s current URL\u2019s scheme and run the associated steps:\n switch (scheme) {\n case 'about:': {\n // If request\u2019s current URL\u2019s path is the string \"blank\", then return a new response\n // whose status message is `OK`, header list is \u00AB (`Content-Type`, `text/html;charset=utf-8`) \u00BB,\n // and body is the empty byte sequence as a body.\n\n // Otherwise, return a network error.\n return Promise.resolve(makeNetworkError('about scheme is not supported'))\n }\n case 'blob:': {\n if (!resolveObjectURL) {\n resolveObjectURL = require('buffer').resolveObjectURL\n }\n\n // 1. Let blobURLEntry be request\u2019s current URL\u2019s blob URL entry.\n const blobURLEntry = requestCurrentURL(request)\n\n // https://github.com/web-platform-tests/wpt/blob/7b0ebaccc62b566a1965396e5be7bb2bc06f841f/FileAPI/url/resources/fetch-tests.js#L52-L56\n // Buffer.resolveObjectURL does not ignore URL queries.\n if (blobURLEntry.search.length !== 0) {\n return Promise.resolve(makeNetworkError('NetworkError when attempting to fetch resource.'))\n }\n\n const blobURLEntryObject = resolveObjectURL(blobURLEntry.toString())\n\n // 2. If request\u2019s method is not `GET`, blobURLEntry is null, or blobURLEntry\u2019s\n // object is not a Blob object, then return a network error.\n if (request.method !== 'GET' || !isBlobLike(blobURLEntryObject)) {\n return Promise.resolve(makeNetworkError('invalid method'))\n }\n\n // 3. Let bodyWithType be the result of safely extracting blobURLEntry\u2019s object.\n const bodyWithType = safelyExtractBody(blobURLEntryObject)\n\n // 4. Let body be bodyWithType\u2019s body.\n const body = bodyWithType[0]\n\n // 5. Let length be body\u2019s length, serialized and isomorphic encoded.\n const length = isomorphicEncode(`${body.length}`)\n\n // 6. Let type be bodyWithType\u2019s type if it is non-null; otherwise the empty byte sequence.\n const type = bodyWithType[1] ?? ''\n\n // 7. Return a new response whose status message is `OK`, header list is\n // \u00AB (`Content-Length`, length), (`Content-Type`, type) \u00BB, and body is body.\n const response = makeResponse({\n statusText: 'OK',\n headersList: [\n ['content-length', { name: 'Content-Length', value: length }],\n ['content-type', { name: 'Content-Type', value: type }]\n ]\n })\n\n response.body = body\n\n return Promise.resolve(response)\n }\n case 'data:': {\n // 1. Let dataURLStruct be the result of running the\n // data: URL processor on request\u2019s current URL.\n const currentURL = requestCurrentURL(request)\n const dataURLStruct = dataURLProcessor(currentURL)\n\n // 2. If dataURLStruct is failure, then return a\n // network error.\n if (dataURLStruct === 'failure') {\n return Promise.resolve(makeNetworkError('failed to fetch the data URL'))\n }\n\n // 3. Let mimeType be dataURLStruct\u2019s MIME type, serialized.\n const mimeType = serializeAMimeType(dataURLStruct.mimeType)\n\n // 4. Return a response whose status message is `OK`,\n // header list is \u00AB (`Content-Type`, mimeType) \u00BB,\n // and body is dataURLStruct\u2019s body as a body.\n return Promise.resolve(makeResponse({\n statusText: 'OK',\n headersList: [\n ['content-type', { name: 'Content-Type', value: mimeType }]\n ],\n body: safelyExtractBody(dataURLStruct.body)[0]\n }))\n }\n case 'file:': {\n // For now, unfortunate as it is, file URLs are left as an exercise for the reader.\n // When in doubt, return a network error.\n return Promise.resolve(makeNetworkError('not implemented... yet...'))\n }\n case 'http:':\n case 'https:': {\n // Return the result of running HTTP fetch given fetchParams.\n\n return httpFetch(fetchParams)\n .catch((err) => makeNetworkError(err))\n }\n default: {\n return Promise.resolve(makeNetworkError('unknown scheme'))\n }\n }\n}\n\n// https://fetch.spec.whatwg.org/#finalize-response\nfunction finalizeResponse (fetchParams, response) {\n // 1. Set fetchParams\u2019s request\u2019s done flag.\n fetchParams.request.done = true\n\n // 2, If fetchParams\u2019s process response done is not null, then queue a fetch\n // task to run fetchParams\u2019s process response done given response, with\n // fetchParams\u2019s task destination.\n if (fetchParams.processResponseDone != null) {\n queueMicrotask(() => fetchParams.processResponseDone(response))\n }\n}\n\n// https://fetch.spec.whatwg.org/#fetch-finale\nfunction fetchFinale (fetchParams, response) {\n // 1. If response is a network error, then:\n if (response.type === 'error') {\n // 1. Set response\u2019s URL list to \u00AB fetchParams\u2019s request\u2019s URL list[0] \u00BB.\n response.urlList = [fetchParams.request.urlList[0]]\n\n // 2. Set response\u2019s timing info to the result of creating an opaque timing\n // info for fetchParams\u2019s timing info.\n response.timingInfo = createOpaqueTimingInfo({\n startTime: fetchParams.timingInfo.startTime\n })\n }\n\n // 2. Let processResponseEndOfBody be the following steps:\n const processResponseEndOfBody = () => {\n // 1. Set fetchParams\u2019s request\u2019s done flag.\n fetchParams.request.done = true\n\n // If fetchParams\u2019s process response end-of-body is not null,\n // then queue a fetch task to run fetchParams\u2019s process response\n // end-of-body given response with fetchParams\u2019s task destination.\n if (fetchParams.processResponseEndOfBody != null) {\n queueMicrotask(() => fetchParams.processResponseEndOfBody(response))\n }\n }\n\n // 3. If fetchParams\u2019s process response is non-null, then queue a fetch task\n // to run fetchParams\u2019s process response given response, with fetchParams\u2019s\n // task destination.\n if (fetchParams.processResponse != null) {\n queueMicrotask(() => fetchParams.processResponse(response))\n }\n\n // 4. If response\u2019s body is null, then run processResponseEndOfBody.\n if (response.body == null) {\n processResponseEndOfBody()\n } else {\n // 5. Otherwise:\n\n // 1. Let transformStream be a new a TransformStream.\n\n // 2. Let identityTransformAlgorithm be an algorithm which, given chunk,\n // enqueues chunk in transformStream.\n const identityTransformAlgorithm = (chunk, controller) => {\n controller.enqueue(chunk)\n }\n\n // 3. Set up transformStream with transformAlgorithm set to identityTransformAlgorithm\n // and flushAlgorithm set to processResponseEndOfBody.\n const transformStream = new TransformStream({\n start () {},\n transform: identityTransformAlgorithm,\n flush: processResponseEndOfBody\n }, {\n size () {\n return 1\n }\n }, {\n size () {\n return 1\n }\n })\n\n // 4. Set response\u2019s body to the result of piping response\u2019s body through transformStream.\n response.body = { stream: response.body.stream.pipeThrough(transformStream) }\n }\n\n // 6. If fetchParams\u2019s process response consume body is non-null, then:\n if (fetchParams.processResponseConsumeBody != null) {\n // 1. Let processBody given nullOrBytes be this step: run fetchParams\u2019s\n // process response consume body given response and nullOrBytes.\n const processBody = (nullOrBytes) => fetchParams.processResponseConsumeBody(response, nullOrBytes)\n\n // 2. Let processBodyError be this step: run fetchParams\u2019s process\n // response consume body given response and failure.\n const processBodyError = (failure) => fetchParams.processResponseConsumeBody(response, failure)\n\n // 3. If response\u2019s body is null, then queue a fetch task to run processBody\n // given null, with fetchParams\u2019s task destination.\n if (response.body == null) {\n queueMicrotask(() => processBody(null))\n } else {\n // 4. Otherwise, fully read response\u2019s body given processBody, processBodyError,\n // and fetchParams\u2019s task destination.\n return fullyReadBody(response.body, processBody, processBodyError)\n }\n return Promise.resolve()\n }\n}\n\n// https://fetch.spec.whatwg.org/#http-fetch\nasync function httpFetch (fetchParams) {\n // 1. Let request be fetchParams\u2019s request.\n const request = fetchParams.request\n\n // 2. Let response be null.\n let response = null\n\n // 3. Let actualResponse be null.\n let actualResponse = null\n\n // 4. Let timingInfo be fetchParams\u2019s timing info.\n const timingInfo = fetchParams.timingInfo\n\n // 5. If request\u2019s service-workers mode is \"all\", then:\n if (request.serviceWorkers === 'all') {\n // TODO\n }\n\n // 6. If response is null, then:\n if (response === null) {\n // 1. If makeCORSPreflight is true and one of these conditions is true:\n // TODO\n\n // 2. If request\u2019s redirect mode is \"follow\", then set request\u2019s\n // service-workers mode to \"none\".\n if (request.redirect === 'follow') {\n request.serviceWorkers = 'none'\n }\n\n // 3. Set response and actualResponse to the result of running\n // HTTP-network-or-cache fetch given fetchParams.\n actualResponse = response = await httpNetworkOrCacheFetch(fetchParams)\n\n // 4. If request\u2019s response tainting is \"cors\" and a CORS check\n // for request and response returns failure, then return a network error.\n if (\n request.responseTainting === 'cors' &&\n corsCheck(request, response) === 'failure'\n ) {\n return makeNetworkError('cors failure')\n }\n\n // 5. If the TAO check for request and response returns failure, then set\n // request\u2019s timing allow failed flag.\n if (TAOCheck(request, response) === 'failure') {\n request.timingAllowFailed = true\n }\n }\n\n // 7. If either request\u2019s response tainting or response\u2019s type\n // is \"opaque\", and the cross-origin resource policy check with\n // request\u2019s origin, request\u2019s client, request\u2019s destination,\n // and actualResponse returns blocked, then return a network error.\n if (\n (request.responseTainting === 'opaque' || response.type === 'opaque') &&\n crossOriginResourcePolicyCheck(\n request.origin,\n request.client,\n request.destination,\n actualResponse\n ) === 'blocked'\n ) {\n return makeNetworkError('blocked')\n }\n\n // 8. If actualResponse\u2019s status is a redirect status, then:\n if (redirectStatusSet.has(actualResponse.status)) {\n // 1. If actualResponse\u2019s status is not 303, request\u2019s body is not null,\n // and the connection uses HTTP/2, then user agents may, and are even\n // encouraged to, transmit an RST_STREAM frame.\n // See, https://github.com/whatwg/fetch/issues/1288\n if (request.redirect !== 'manual') {\n fetchParams.controller.connection.destroy()\n }\n\n // 2. Switch on request\u2019s redirect mode:\n if (request.redirect === 'error') {\n // Set response to a network error.\n response = makeNetworkError('unexpected redirect')\n } else if (request.redirect === 'manual') {\n // Set response to an opaque-redirect filtered response whose internal\n // response is actualResponse.\n // NOTE(spec): On the web this would return an `opaqueredirect` response,\n // but that doesn't make sense server side.\n // See https://github.com/nodejs/undici/issues/1193.\n response = actualResponse\n } else if (request.redirect === 'follow') {\n // Set response to the result of running HTTP-redirect fetch given\n // fetchParams and response.\n response = await httpRedirectFetch(fetchParams, response)\n } else {\n assert(false)\n }\n }\n\n // 9. Set response\u2019s timing info to timingInfo.\n response.timingInfo = timingInfo\n\n // 10. Return response.\n return response\n}\n\n// https://fetch.spec.whatwg.org/#http-redirect-fetch\nfunction httpRedirectFetch (fetchParams, response) {\n // 1. Let request be fetchParams\u2019s request.\n const request = fetchParams.request\n\n // 2. Let actualResponse be response, if response is not a filtered response,\n // and response\u2019s internal response otherwise.\n const actualResponse = response.internalResponse\n ? response.internalResponse\n : response\n\n // 3. Let locationURL be actualResponse\u2019s location URL given request\u2019s current\n // URL\u2019s fragment.\n let locationURL\n\n try {\n locationURL = responseLocationURL(\n actualResponse,\n requestCurrentURL(request).hash\n )\n\n // 4. If locationURL is null, then return response.\n if (locationURL == null) {\n return response\n }\n } catch (err) {\n // 5. If locationURL is failure, then return a network error.\n return Promise.resolve(makeNetworkError(err))\n }\n\n // 6. If locationURL\u2019s scheme is not an HTTP(S) scheme, then return a network\n // error.\n if (!urlIsHttpHttpsScheme(locationURL)) {\n return Promise.resolve(makeNetworkError('URL scheme must be a HTTP(S) scheme'))\n }\n\n // 7. If request\u2019s redirect count is 20, then return a network error.\n if (request.redirectCount === 20) {\n return Promise.resolve(makeNetworkError('redirect count exceeded'))\n }\n\n // 8. Increase request\u2019s redirect count by 1.\n request.redirectCount += 1\n\n // 9. If request\u2019s mode is \"cors\", locationURL includes credentials, and\n // request\u2019s origin is not same origin with locationURL\u2019s origin, then return\n // a network error.\n if (\n request.mode === 'cors' &&\n (locationURL.username || locationURL.password) &&\n !sameOrigin(request, locationURL)\n ) {\n return Promise.resolve(makeNetworkError('cross origin not allowed for request mode \"cors\"'))\n }\n\n // 10. If request\u2019s response tainting is \"cors\" and locationURL includes\n // credentials, then return a network error.\n if (\n request.responseTainting === 'cors' &&\n (locationURL.username || locationURL.password)\n ) {\n return Promise.resolve(makeNetworkError(\n 'URL cannot contain credentials for request mode \"cors\"'\n ))\n }\n\n // 11. If actualResponse\u2019s status is not 303, request\u2019s body is non-null,\n // and request\u2019s body\u2019s source is null, then return a network error.\n if (\n actualResponse.status !== 303 &&\n request.body != null &&\n request.body.source == null\n ) {\n return Promise.resolve(makeNetworkError())\n }\n\n // 12. If one of the following is true\n // - actualResponse\u2019s status is 301 or 302 and request\u2019s method is `POST`\n // - actualResponse\u2019s status is 303 and request\u2019s method is not `GET` or `HEAD`\n if (\n ([301, 302].includes(actualResponse.status) && request.method === 'POST') ||\n (actualResponse.status === 303 &&\n !GET_OR_HEAD.includes(request.method))\n ) {\n // then:\n // 1. Set request\u2019s method to `GET` and request\u2019s body to null.\n request.method = 'GET'\n request.body = null\n\n // 2. For each headerName of request-body-header name, delete headerName from\n // request\u2019s header list.\n for (const headerName of requestBodyHeader) {\n request.headersList.delete(headerName)\n }\n }\n\n // 13. If request\u2019s current URL\u2019s origin is not same origin with locationURL\u2019s\n // origin, then for each headerName of CORS non-wildcard request-header name,\n // delete headerName from request\u2019s header list.\n if (!sameOrigin(requestCurrentURL(request), locationURL)) {\n // https://fetch.spec.whatwg.org/#cors-non-wildcard-request-header-name\n request.headersList.delete('authorization')\n\n // https://fetch.spec.whatwg.org/#authentication-entries\n request.headersList.delete('proxy-authorization', true)\n\n // \"Cookie\" and \"Host\" are forbidden request-headers, which undici doesn't implement.\n request.headersList.delete('cookie')\n request.headersList.delete('host')\n }\n\n // 14. If request\u2019s body is non-null, then set request\u2019s body to the first return\n // value of safely extracting request\u2019s body\u2019s source.\n if (request.body != null) {\n assert(request.body.source != null)\n request.body = safelyExtractBody(request.body.source)[0]\n }\n\n // 15. Let timingInfo be fetchParams\u2019s timing info.\n const timingInfo = fetchParams.timingInfo\n\n // 16. Set timingInfo\u2019s redirect end time and post-redirect start time to the\n // coarsened shared current time given fetchParams\u2019s cross-origin isolated\n // capability.\n timingInfo.redirectEndTime = timingInfo.postRedirectStartTime =\n coarsenedSharedCurrentTime(fetchParams.crossOriginIsolatedCapability)\n\n // 17. If timingInfo\u2019s redirect start time is 0, then set timingInfo\u2019s\n // redirect start time to timingInfo\u2019s start time.\n if (timingInfo.redirectStartTime === 0) {\n timingInfo.redirectStartTime = timingInfo.startTime\n }\n\n // 18. Append locationURL to request\u2019s URL list.\n request.urlList.push(locationURL)\n\n // 19. Invoke set request\u2019s referrer policy on redirect on request and\n // actualResponse.\n setRequestReferrerPolicyOnRedirect(request, actualResponse)\n\n // 20. Return the result of running main fetch given fetchParams and true.\n return mainFetch(fetchParams, true)\n}\n\n// https://fetch.spec.whatwg.org/#http-network-or-cache-fetch\nasync function httpNetworkOrCacheFetch (\n fetchParams,\n isAuthenticationFetch = false,\n isNewConnectionFetch = false\n) {\n // 1. Let request be fetchParams\u2019s request.\n const request = fetchParams.request\n\n // 2. Let httpFetchParams be null.\n let httpFetchParams = null\n\n // 3. Let httpRequest be null.\n let httpRequest = null\n\n // 4. Let response be null.\n let response = null\n\n // 5. Let storedResponse be null.\n // TODO: cache\n\n // 6. Let httpCache be null.\n const httpCache = null\n\n // 7. Let the revalidatingFlag be unset.\n const revalidatingFlag = false\n\n // 8. Run these steps, but abort when the ongoing fetch is terminated:\n\n // 1. If request\u2019s window is \"no-window\" and request\u2019s redirect mode is\n // \"error\", then set httpFetchParams to fetchParams and httpRequest to\n // request.\n if (request.window === 'no-window' && request.redirect === 'error') {\n httpFetchParams = fetchParams\n httpRequest = request\n } else {\n // Otherwise:\n\n // 1. Set httpRequest to a clone of request.\n httpRequest = makeRequest(request)\n\n // 2. Set httpFetchParams to a copy of fetchParams.\n httpFetchParams = { ...fetchParams }\n\n // 3. Set httpFetchParams\u2019s request to httpRequest.\n httpFetchParams.request = httpRequest\n }\n\n // 3. Let includeCredentials be true if one of\n const includeCredentials =\n request.credentials === 'include' ||\n (request.credentials === 'same-origin' &&\n request.responseTainting === 'basic')\n\n // 4. Let contentLength be httpRequest\u2019s body\u2019s length, if httpRequest\u2019s\n // body is non-null; otherwise null.\n const contentLength = httpRequest.body ? httpRequest.body.length : null\n\n // 5. Let contentLengthHeaderValue be null.\n let contentLengthHeaderValue = null\n\n // 6. If httpRequest\u2019s body is null and httpRequest\u2019s method is `POST` or\n // `PUT`, then set contentLengthHeaderValue to `0`.\n if (\n httpRequest.body == null &&\n ['POST', 'PUT'].includes(httpRequest.method)\n ) {\n contentLengthHeaderValue = '0'\n }\n\n // 7. If contentLength is non-null, then set contentLengthHeaderValue to\n // contentLength, serialized and isomorphic encoded.\n if (contentLength != null) {\n contentLengthHeaderValue = isomorphicEncode(`${contentLength}`)\n }\n\n // 8. If contentLengthHeaderValue is non-null, then append\n // `Content-Length`/contentLengthHeaderValue to httpRequest\u2019s header\n // list.\n if (contentLengthHeaderValue != null) {\n httpRequest.headersList.append('content-length', contentLengthHeaderValue)\n }\n\n // 9. If contentLengthHeaderValue is non-null, then append (`Content-Length`,\n // contentLengthHeaderValue) to httpRequest\u2019s header list.\n\n // 10. If contentLength is non-null and httpRequest\u2019s keepalive is true,\n // then:\n if (contentLength != null && httpRequest.keepalive) {\n // NOTE: keepalive is a noop outside of browser context.\n }\n\n // 11. If httpRequest\u2019s referrer is a URL, then append\n // `Referer`/httpRequest\u2019s referrer, serialized and isomorphic encoded,\n // to httpRequest\u2019s header list.\n if (httpRequest.referrer instanceof URL) {\n httpRequest.headersList.append('referer', isomorphicEncode(httpRequest.referrer.href))\n }\n\n // 12. Append a request `Origin` header for httpRequest.\n appendRequestOriginHeader(httpRequest)\n\n // 13. Append the Fetch metadata headers for httpRequest. [FETCH-METADATA]\n appendFetchMetadata(httpRequest)\n\n // 14. If httpRequest\u2019s header list does not contain `User-Agent`, then\n // user agents should append `User-Agent`/default `User-Agent` value to\n // httpRequest\u2019s header list.\n if (!httpRequest.headersList.contains('user-agent')) {\n httpRequest.headersList.append('user-agent', typeof esbuildDetection === 'undefined' ? 'undici' : 'node')\n }\n\n // 15. If httpRequest\u2019s cache mode is \"default\" and httpRequest\u2019s header\n // list contains `If-Modified-Since`, `If-None-Match`,\n // `If-Unmodified-Since`, `If-Match`, or `If-Range`, then set\n // httpRequest\u2019s cache mode to \"no-store\".\n if (\n httpRequest.cache === 'default' &&\n (httpRequest.headersList.contains('if-modified-since') ||\n httpRequest.headersList.contains('if-none-match') ||\n httpRequest.headersList.contains('if-unmodified-since') ||\n httpRequest.headersList.contains('if-match') ||\n httpRequest.headersList.contains('if-range'))\n ) {\n httpRequest.cache = 'no-store'\n }\n\n // 16. If httpRequest\u2019s cache mode is \"no-cache\", httpRequest\u2019s prevent\n // no-cache cache-control header modification flag is unset, and\n // httpRequest\u2019s header list does not contain `Cache-Control`, then append\n // `Cache-Control`/`max-age=0` to httpRequest\u2019s header list.\n if (\n httpRequest.cache === 'no-cache' &&\n !httpRequest.preventNoCacheCacheControlHeaderModification &&\n !httpRequest.headersList.contains('cache-control')\n ) {\n httpRequest.headersList.append('cache-control', 'max-age=0')\n }\n\n // 17. If httpRequest\u2019s cache mode is \"no-store\" or \"reload\", then:\n if (httpRequest.cache === 'no-store' || httpRequest.cache === 'reload') {\n // 1. If httpRequest\u2019s header list does not contain `Pragma`, then append\n // `Pragma`/`no-cache` to httpRequest\u2019s header list.\n if (!httpRequest.headersList.contains('pragma')) {\n httpRequest.headersList.append('pragma', 'no-cache')\n }\n\n // 2. If httpRequest\u2019s header list does not contain `Cache-Control`,\n // then append `Cache-Control`/`no-cache` to httpRequest\u2019s header list.\n if (!httpRequest.headersList.contains('cache-control')) {\n httpRequest.headersList.append('cache-control', 'no-cache')\n }\n }\n\n // 18. If httpRequest\u2019s header list contains `Range`, then append\n // `Accept-Encoding`/`identity` to httpRequest\u2019s header list.\n if (httpRequest.headersList.contains('range')) {\n httpRequest.headersList.append('accept-encoding', 'identity')\n }\n\n // 19. Modify httpRequest\u2019s header list per HTTP. Do not append a given\n // header if httpRequest\u2019s header list contains that header\u2019s name.\n // TODO: https://github.com/whatwg/fetch/issues/1285#issuecomment-896560129\n if (!httpRequest.headersList.contains('accept-encoding')) {\n if (urlHasHttpsScheme(requestCurrentURL(httpRequest))) {\n httpRequest.headersList.append('accept-encoding', 'br, gzip, deflate')\n } else {\n httpRequest.headersList.append('accept-encoding', 'gzip, deflate')\n }\n }\n\n httpRequest.headersList.delete('host')\n\n // 20. If includeCredentials is true, then:\n if (includeCredentials) {\n // 1. If the user agent is not configured to block cookies for httpRequest\n // (see section 7 of [COOKIES]), then:\n // TODO: credentials\n // 2. If httpRequest\u2019s header list does not contain `Authorization`, then:\n // TODO: credentials\n }\n\n // 21. If there\u2019s a proxy-authentication entry, use it as appropriate.\n // TODO: proxy-authentication\n\n // 22. Set httpCache to the result of determining the HTTP cache\n // partition, given httpRequest.\n // TODO: cache\n\n // 23. If httpCache is null, then set httpRequest\u2019s cache mode to\n // \"no-store\".\n if (httpCache == null) {\n httpRequest.cache = 'no-store'\n }\n\n // 24. If httpRequest\u2019s cache mode is neither \"no-store\" nor \"reload\",\n // then:\n if (httpRequest.mode !== 'no-store' && httpRequest.mode !== 'reload') {\n // TODO: cache\n }\n\n // 9. If aborted, then return the appropriate network error for fetchParams.\n // TODO\n\n // 10. If response is null, then:\n if (response == null) {\n // 1. If httpRequest\u2019s cache mode is \"only-if-cached\", then return a\n // network error.\n if (httpRequest.mode === 'only-if-cached') {\n return makeNetworkError('only if cached')\n }\n\n // 2. Let forwardResponse be the result of running HTTP-network fetch\n // given httpFetchParams, includeCredentials, and isNewConnectionFetch.\n const forwardResponse = await httpNetworkFetch(\n httpFetchParams,\n includeCredentials,\n isNewConnectionFetch\n )\n\n // 3. If httpRequest\u2019s method is unsafe and forwardResponse\u2019s status is\n // in the range 200 to 399, inclusive, invalidate appropriate stored\n // responses in httpCache, as per the \"Invalidation\" chapter of HTTP\n // Caching, and set storedResponse to null. [HTTP-CACHING]\n if (\n !safeMethodsSet.has(httpRequest.method) &&\n forwardResponse.status >= 200 &&\n forwardResponse.status <= 399\n ) {\n // TODO: cache\n }\n\n // 4. If the revalidatingFlag is set and forwardResponse\u2019s status is 304,\n // then:\n if (revalidatingFlag && forwardResponse.status === 304) {\n // TODO: cache\n }\n\n // 5. If response is null, then:\n if (response == null) {\n // 1. Set response to forwardResponse.\n response = forwardResponse\n\n // 2. Store httpRequest and forwardResponse in httpCache, as per the\n // \"Storing Responses in Caches\" chapter of HTTP Caching. [HTTP-CACHING]\n // TODO: cache\n }\n }\n\n // 11. Set response\u2019s URL list to a clone of httpRequest\u2019s URL list.\n response.urlList = [...httpRequest.urlList]\n\n // 12. If httpRequest\u2019s header list contains `Range`, then set response\u2019s\n // range-requested flag.\n if (httpRequest.headersList.contains('range')) {\n response.rangeRequested = true\n }\n\n // 13. Set response\u2019s request-includes-credentials to includeCredentials.\n response.requestIncludesCredentials = includeCredentials\n\n // 14. If response\u2019s status is 401, httpRequest\u2019s response tainting is not\n // \"cors\", includeCredentials is true, and request\u2019s window is an environment\n // settings object, then:\n // TODO\n\n // 15. If response\u2019s status is 407, then:\n if (response.status === 407) {\n // 1. If request\u2019s window is \"no-window\", then return a network error.\n if (request.window === 'no-window') {\n return makeNetworkError()\n }\n\n // 2. ???\n\n // 3. If fetchParams is canceled, then return the appropriate network error for fetchParams.\n if (isCancelled(fetchParams)) {\n return makeAppropriateNetworkError(fetchParams)\n }\n\n // 4. Prompt the end user as appropriate in request\u2019s window and store\n // the result as a proxy-authentication entry. [HTTP-AUTH]\n // TODO: Invoke some kind of callback?\n\n // 5. Set response to the result of running HTTP-network-or-cache fetch given\n // fetchParams.\n // TODO\n return makeNetworkError('proxy authentication required')\n }\n\n // 16. If all of the following are true\n if (\n // response\u2019s status is 421\n response.status === 421 &&\n // isNewConnectionFetch is false\n !isNewConnectionFetch &&\n // request\u2019s body is null, or request\u2019s body is non-null and request\u2019s body\u2019s source is non-null\n (request.body == null || request.body.source != null)\n ) {\n // then:\n\n // 1. If fetchParams is canceled, then return the appropriate network error for fetchParams.\n if (isCancelled(fetchParams)) {\n return makeAppropriateNetworkError(fetchParams)\n }\n\n // 2. Set response to the result of running HTTP-network-or-cache\n // fetch given fetchParams, isAuthenticationFetch, and true.\n\n // TODO (spec): The spec doesn't specify this but we need to cancel\n // the active response before we can start a new one.\n // https://github.com/whatwg/fetch/issues/1293\n fetchParams.controller.connection.destroy()\n\n response = await httpNetworkOrCacheFetch(\n fetchParams,\n isAuthenticationFetch,\n true\n )\n }\n\n // 17. If isAuthenticationFetch is true, then create an authentication entry\n if (isAuthenticationFetch) {\n // TODO\n }\n\n // 18. Return response.\n return response\n}\n\n// https://fetch.spec.whatwg.org/#http-network-fetch\nasync function httpNetworkFetch (\n fetchParams,\n includeCredentials = false,\n forceNewConnection = false\n) {\n assert(!fetchParams.controller.connection || fetchParams.controller.connection.destroyed)\n\n fetchParams.controller.connection = {\n abort: null,\n destroyed: false,\n destroy (err) {\n if (!this.destroyed) {\n this.destroyed = true\n this.abort?.(err ?? new DOMException('The operation was aborted.', 'AbortError'))\n }\n }\n }\n\n // 1. Let request be fetchParams\u2019s request.\n const request = fetchParams.request\n\n // 2. Let response be null.\n let response = null\n\n // 3. Let timingInfo be fetchParams\u2019s timing info.\n const timingInfo = fetchParams.timingInfo\n\n // 4. Let httpCache be the result of determining the HTTP cache partition,\n // given request.\n // TODO: cache\n const httpCache = null\n\n // 5. If httpCache is null, then set request\u2019s cache mode to \"no-store\".\n if (httpCache == null) {\n request.cache = 'no-store'\n }\n\n // 6. Let networkPartitionKey be the result of determining the network\n // partition key given request.\n // TODO\n\n // 7. Let newConnection be \"yes\" if forceNewConnection is true; otherwise\n // \"no\".\n const newConnection = forceNewConnection ? 'yes' : 'no' // eslint-disable-line no-unused-vars\n\n // 8. Switch on request\u2019s mode:\n if (request.mode === 'websocket') {\n // Let connection be the result of obtaining a WebSocket connection,\n // given request\u2019s current URL.\n // TODO\n } else {\n // Let connection be the result of obtaining a connection, given\n // networkPartitionKey, request\u2019s current URL\u2019s origin,\n // includeCredentials, and forceNewConnection.\n // TODO\n }\n\n // 9. Run these steps, but abort when the ongoing fetch is terminated:\n\n // 1. If connection is failure, then return a network error.\n\n // 2. Set timingInfo\u2019s final connection timing info to the result of\n // calling clamp and coarsen connection timing info with connection\u2019s\n // timing info, timingInfo\u2019s post-redirect start time, and fetchParams\u2019s\n // cross-origin isolated capability.\n\n // 3. If connection is not an HTTP/2 connection, request\u2019s body is non-null,\n // and request\u2019s body\u2019s source is null, then append (`Transfer-Encoding`,\n // `chunked`) to request\u2019s header list.\n\n // 4. Set timingInfo\u2019s final network-request start time to the coarsened\n // shared current time given fetchParams\u2019s cross-origin isolated\n // capability.\n\n // 5. Set response to the result of making an HTTP request over connection\n // using request with the following caveats:\n\n // - Follow the relevant requirements from HTTP. [HTTP] [HTTP-SEMANTICS]\n // [HTTP-COND] [HTTP-CACHING] [HTTP-AUTH]\n\n // - If request\u2019s body is non-null, and request\u2019s body\u2019s source is null,\n // then the user agent may have a buffer of up to 64 kibibytes and store\n // a part of request\u2019s body in that buffer. If the user agent reads from\n // request\u2019s body beyond that buffer\u2019s size and the user agent needs to\n // resend request, then instead return a network error.\n\n // - Set timingInfo\u2019s final network-response start time to the coarsened\n // shared current time given fetchParams\u2019s cross-origin isolated capability,\n // immediately after the user agent\u2019s HTTP parser receives the first byte\n // of the response (e.g., frame header bytes for HTTP/2 or response status\n // line for HTTP/1.x).\n\n // - Wait until all the headers are transmitted.\n\n // - Any responses whose status is in the range 100 to 199, inclusive,\n // and is not 101, are to be ignored, except for the purposes of setting\n // timingInfo\u2019s final network-response start time above.\n\n // - If request\u2019s header list contains `Transfer-Encoding`/`chunked` and\n // response is transferred via HTTP/1.0 or older, then return a network\n // error.\n\n // - If the HTTP request results in a TLS client certificate dialog, then:\n\n // 1. If request\u2019s window is an environment settings object, make the\n // dialog available in request\u2019s window.\n\n // 2. Otherwise, return a network error.\n\n // To transmit request\u2019s body body, run these steps:\n let requestBody = null\n // 1. If body is null and fetchParams\u2019s process request end-of-body is\n // non-null, then queue a fetch task given fetchParams\u2019s process request\n // end-of-body and fetchParams\u2019s task destination.\n if (request.body == null && fetchParams.processRequestEndOfBody) {\n queueMicrotask(() => fetchParams.processRequestEndOfBody())\n } else if (request.body != null) {\n // 2. Otherwise, if body is non-null:\n\n // 1. Let processBodyChunk given bytes be these steps:\n const processBodyChunk = async function * (bytes) {\n // 1. If the ongoing fetch is terminated, then abort these steps.\n if (isCancelled(fetchParams)) {\n return\n }\n\n // 2. Run this step in parallel: transmit bytes.\n yield bytes\n\n // 3. If fetchParams\u2019s process request body is non-null, then run\n // fetchParams\u2019s process request body given bytes\u2019s length.\n fetchParams.processRequestBodyChunkLength?.(bytes.byteLength)\n }\n\n // 2. Let processEndOfBody be these steps:\n const processEndOfBody = () => {\n // 1. If fetchParams is canceled, then abort these steps.\n if (isCancelled(fetchParams)) {\n return\n }\n\n // 2. If fetchParams\u2019s process request end-of-body is non-null,\n // then run fetchParams\u2019s process request end-of-body.\n if (fetchParams.processRequestEndOfBody) {\n fetchParams.processRequestEndOfBody()\n }\n }\n\n // 3. Let processBodyError given e be these steps:\n const processBodyError = (e) => {\n // 1. If fetchParams is canceled, then abort these steps.\n if (isCancelled(fetchParams)) {\n return\n }\n\n // 2. If e is an \"AbortError\" DOMException, then abort fetchParams\u2019s controller.\n if (e.name === 'AbortError') {\n fetchParams.controller.abort()\n } else {\n fetchParams.controller.terminate(e)\n }\n }\n\n // 4. Incrementally read request\u2019s body given processBodyChunk, processEndOfBody,\n // processBodyError, and fetchParams\u2019s task destination.\n requestBody = (async function * () {\n try {\n for await (const bytes of request.body.stream) {\n yield * processBodyChunk(bytes)\n }\n processEndOfBody()\n } catch (err) {\n processBodyError(err)\n }\n })()\n }\n\n try {\n // socket is only provided for websockets\n const { body, status, statusText, headersList, socket } = await dispatch({ body: requestBody })\n\n if (socket) {\n response = makeResponse({ status, statusText, headersList, socket })\n } else {\n const iterator = body[Symbol.asyncIterator]()\n fetchParams.controller.next = () => iterator.next()\n\n response = makeResponse({ status, statusText, headersList })\n }\n } catch (err) {\n // 10. If aborted, then:\n if (err.name === 'AbortError') {\n // 1. If connection uses HTTP/2, then transmit an RST_STREAM frame.\n fetchParams.controller.connection.destroy()\n\n // 2. Return the appropriate network error for fetchParams.\n return makeAppropriateNetworkError(fetchParams, err)\n }\n\n return makeNetworkError(err)\n }\n\n // 11. Let pullAlgorithm be an action that resumes the ongoing fetch\n // if it is suspended.\n const pullAlgorithm = () => {\n fetchParams.controller.resume()\n }\n\n // 12. Let cancelAlgorithm be an algorithm that aborts fetchParams\u2019s\n // controller with reason, given reason.\n const cancelAlgorithm = (reason) => {\n fetchParams.controller.abort(reason)\n }\n\n // 13. Let highWaterMark be a non-negative, non-NaN number, chosen by\n // the user agent.\n // TODO\n\n // 14. Let sizeAlgorithm be an algorithm that accepts a chunk object\n // and returns a non-negative, non-NaN, non-infinite number, chosen by the user agent.\n // TODO\n\n // 15. Let stream be a new ReadableStream.\n // 16. Set up stream with pullAlgorithm set to pullAlgorithm,\n // cancelAlgorithm set to cancelAlgorithm, highWaterMark set to\n // highWaterMark, and sizeAlgorithm set to sizeAlgorithm.\n if (!ReadableStream) {\n ReadableStream = require('stream/web').ReadableStream\n }\n\n const stream = new ReadableStream(\n {\n async start (controller) {\n fetchParams.controller.controller = controller\n },\n async pull (controller) {\n await pullAlgorithm(controller)\n },\n async cancel (reason) {\n await cancelAlgorithm(reason)\n }\n },\n {\n highWaterMark: 0,\n size () {\n return 1\n }\n }\n )\n\n // 17. Run these steps, but abort when the ongoing fetch is terminated:\n\n // 1. Set response\u2019s body to a new body whose stream is stream.\n response.body = { stream }\n\n // 2. If response is not a network error and request\u2019s cache mode is\n // not \"no-store\", then update response in httpCache for request.\n // TODO\n\n // 3. If includeCredentials is true and the user agent is not configured\n // to block cookies for request (see section 7 of [COOKIES]), then run the\n // \"set-cookie-string\" parsing algorithm (see section 5.2 of [COOKIES]) on\n // the value of each header whose name is a byte-case-insensitive match for\n // `Set-Cookie` in response\u2019s header list, if any, and request\u2019s current URL.\n // TODO\n\n // 18. If aborted, then:\n // TODO\n\n // 19. Run these steps in parallel:\n\n // 1. Run these steps, but abort when fetchParams is canceled:\n fetchParams.controller.on('terminated', onAborted)\n fetchParams.controller.resume = async () => {\n // 1. While true\n while (true) {\n // 1-3. See onData...\n\n // 4. Set bytes to the result of handling content codings given\n // codings and bytes.\n let bytes\n let isFailure\n try {\n const { done, value } = await fetchParams.controller.next()\n\n if (isAborted(fetchParams)) {\n break\n }\n\n bytes = done ? undefined : value\n } catch (err) {\n if (fetchParams.controller.ended && !timingInfo.encodedBodySize) {\n // zlib doesn't like empty streams.\n bytes = undefined\n } else {\n bytes = err\n\n // err may be propagated from the result of calling readablestream.cancel,\n // which might not be an error. https://github.com/nodejs/undici/issues/2009\n isFailure = true\n }\n }\n\n if (bytes === undefined) {\n // 2. Otherwise, if the bytes transmission for response\u2019s message\n // body is done normally and stream is readable, then close\n // stream, finalize response for fetchParams and response, and\n // abort these in-parallel steps.\n readableStreamClose(fetchParams.controller.controller)\n\n finalizeResponse(fetchParams, response)\n\n return\n }\n\n // 5. Increase timingInfo\u2019s decoded body size by bytes\u2019s length.\n timingInfo.decodedBodySize += bytes?.byteLength ?? 0\n\n // 6. If bytes is failure, then terminate fetchParams\u2019s controller.\n if (isFailure) {\n fetchParams.controller.terminate(bytes)\n return\n }\n\n // 7. Enqueue a Uint8Array wrapping an ArrayBuffer containing bytes\n // into stream.\n fetchParams.controller.controller.enqueue(new Uint8Array(bytes))\n\n // 8. If stream is errored, then terminate the ongoing fetch.\n if (isErrored(stream)) {\n fetchParams.controller.terminate()\n return\n }\n\n // 9. If stream doesn\u2019t need more data ask the user agent to suspend\n // the ongoing fetch.\n if (!fetchParams.controller.controller.desiredSize) {\n return\n }\n }\n }\n\n // 2. If aborted, then:\n function onAborted (reason) {\n // 2. If fetchParams is aborted, then:\n if (isAborted(fetchParams)) {\n // 1. Set response\u2019s aborted flag.\n response.aborted = true\n\n // 2. If stream is readable, then error stream with the result of\n // deserialize a serialized abort reason given fetchParams\u2019s\n // controller\u2019s serialized abort reason and an\n // implementation-defined realm.\n if (isReadable(stream)) {\n fetchParams.controller.controller.error(\n fetchParams.controller.serializedAbortReason\n )\n }\n } else {\n // 3. Otherwise, if stream is readable, error stream with a TypeError.\n if (isReadable(stream)) {\n fetchParams.controller.controller.error(new TypeError('terminated', {\n cause: isErrorLike(reason) ? reason : undefined\n }))\n }\n }\n\n // 4. If connection uses HTTP/2, then transmit an RST_STREAM frame.\n // 5. Otherwise, the user agent should close connection unless it would be bad for performance to do so.\n fetchParams.controller.connection.destroy()\n }\n\n // 20. Return response.\n return response\n\n async function dispatch ({ body }) {\n const url = requestCurrentURL(request)\n /** @type {import('../..').Agent} */\n const agent = fetchParams.controller.dispatcher\n\n return new Promise((resolve, reject) => agent.dispatch(\n {\n path: url.pathname + url.search,\n origin: url.origin,\n method: request.method,\n body: fetchParams.controller.dispatcher.isMockActive ? request.body && (request.body.source || request.body.stream) : body,\n headers: request.headersList.entries,\n maxRedirections: 0,\n upgrade: request.mode === 'websocket' ? 'websocket' : undefined\n },\n {\n body: null,\n abort: null,\n\n onConnect (abort) {\n // TODO (fix): Do we need connection here?\n const { connection } = fetchParams.controller\n\n if (connection.destroyed) {\n abort(new DOMException('The operation was aborted.', 'AbortError'))\n } else {\n fetchParams.controller.on('terminated', abort)\n this.abort = connection.abort = abort\n }\n },\n\n onHeaders (status, headersList, resume, statusText) {\n if (status < 200) {\n return\n }\n\n let codings = []\n let location = ''\n\n const headers = new Headers()\n\n // For H2, the headers are a plain JS object\n // We distinguish between them and iterate accordingly\n if (Array.isArray(headersList)) {\n for (let n = 0; n < headersList.length; n += 2) {\n const key = headersList[n + 0].toString('latin1')\n const val = headersList[n + 1].toString('latin1')\n if (key.toLowerCase() === 'content-encoding') {\n // https://www.rfc-editor.org/rfc/rfc7231#section-3.1.2.1\n // \"All content-coding values are case-insensitive...\"\n codings = val.toLowerCase().split(',').map((x) => x.trim())\n } else if (key.toLowerCase() === 'location') {\n location = val\n }\n\n headers[kHeadersList].append(key, val)\n }\n } else {\n const keys = Object.keys(headersList)\n for (const key of keys) {\n const val = headersList[key]\n if (key.toLowerCase() === 'content-encoding') {\n // https://www.rfc-editor.org/rfc/rfc7231#section-3.1.2.1\n // \"All content-coding values are case-insensitive...\"\n codings = val.toLowerCase().split(',').map((x) => x.trim()).reverse()\n } else if (key.toLowerCase() === 'location') {\n location = val\n }\n\n headers[kHeadersList].append(key, val)\n }\n }\n\n this.body = new Readable({ read: resume })\n\n const decoders = []\n\n const willFollow = request.redirect === 'follow' &&\n location &&\n redirectStatusSet.has(status)\n\n // https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Encoding\n if (request.method !== 'HEAD' && request.method !== 'CONNECT' && !nullBodyStatus.includes(status) && !willFollow) {\n for (const coding of codings) {\n // https://www.rfc-editor.org/rfc/rfc9112.html#section-7.2\n if (coding === 'x-gzip' || coding === 'gzip') {\n decoders.push(zlib.createGunzip({\n // Be less strict when decoding compressed responses, since sometimes\n // servers send slightly invalid responses that are still accepted\n // by common browsers.\n // Always using Z_SYNC_FLUSH is what cURL does.\n flush: zlib.constants.Z_SYNC_FLUSH,\n finishFlush: zlib.constants.Z_SYNC_FLUSH\n }))\n } else if (coding === 'deflate') {\n decoders.push(zlib.createInflate())\n } else if (coding === 'br') {\n decoders.push(zlib.createBrotliDecompress())\n } else {\n decoders.length = 0\n break\n }\n }\n }\n\n resolve({\n status,\n statusText,\n headersList: headers[kHeadersList],\n body: decoders.length\n ? pipeline(this.body, ...decoders, () => { })\n : this.body.on('error', () => {})\n })\n\n return true\n },\n\n onData (chunk) {\n if (fetchParams.controller.dump) {\n return\n }\n\n // 1. If one or more bytes have been transmitted from response\u2019s\n // message body, then:\n\n // 1. Let bytes be the transmitted bytes.\n const bytes = chunk\n\n // 2. Let codings be the result of extracting header list values\n // given `Content-Encoding` and response\u2019s header list.\n // See pullAlgorithm.\n\n // 3. Increase timingInfo\u2019s encoded body size by bytes\u2019s length.\n timingInfo.encodedBodySize += bytes.byteLength\n\n // 4. See pullAlgorithm...\n\n return this.body.push(bytes)\n },\n\n onComplete () {\n if (this.abort) {\n fetchParams.controller.off('terminated', this.abort)\n }\n\n fetchParams.controller.ended = true\n\n this.body.push(null)\n },\n\n onError (error) {\n if (this.abort) {\n fetchParams.controller.off('terminated', this.abort)\n }\n\n this.body?.destroy(error)\n\n fetchParams.controller.terminate(error)\n\n reject(error)\n },\n\n onUpgrade (status, headersList, socket) {\n if (status !== 101) {\n return\n }\n\n const headers = new Headers()\n\n for (let n = 0; n < headersList.length; n += 2) {\n const key = headersList[n + 0].toString('latin1')\n const val = headersList[n + 1].toString('latin1')\n\n headers[kHeadersList].append(key, val)\n }\n\n resolve({\n status,\n statusText: STATUS_CODES[status],\n headersList: headers[kHeadersList],\n socket\n })\n\n return true\n }\n }\n ))\n }\n}\n\nmodule.exports = {\n fetch,\n Fetch,\n fetching,\n finalizeAndReportTiming\n}\n", "'use strict'\n\nmodule.exports = {\n kState: Symbol('FileReader state'),\n kResult: Symbol('FileReader result'),\n kError: Symbol('FileReader error'),\n kLastProgressEventFired: Symbol('FileReader last progress event fired timestamp'),\n kEvents: Symbol('FileReader events'),\n kAborted: Symbol('FileReader aborted')\n}\n", "'use strict'\n\nconst { webidl } = require('../fetch/webidl')\n\nconst kState = Symbol('ProgressEvent state')\n\n/**\n * @see https://xhr.spec.whatwg.org/#progressevent\n */\nclass ProgressEvent extends Event {\n constructor (type, eventInitDict = {}) {\n type = webidl.converters.DOMString(type)\n eventInitDict = webidl.converters.ProgressEventInit(eventInitDict ?? {})\n\n super(type, eventInitDict)\n\n this[kState] = {\n lengthComputable: eventInitDict.lengthComputable,\n loaded: eventInitDict.loaded,\n total: eventInitDict.total\n }\n }\n\n get lengthComputable () {\n webidl.brandCheck(this, ProgressEvent)\n\n return this[kState].lengthComputable\n }\n\n get loaded () {\n webidl.brandCheck(this, ProgressEvent)\n\n return this[kState].loaded\n }\n\n get total () {\n webidl.brandCheck(this, ProgressEvent)\n\n return this[kState].total\n }\n}\n\nwebidl.converters.ProgressEventInit = webidl.dictionaryConverter([\n {\n key: 'lengthComputable',\n converter: webidl.converters.boolean,\n defaultValue: false\n },\n {\n key: 'loaded',\n converter: webidl.converters['unsigned long long'],\n defaultValue: 0\n },\n {\n key: 'total',\n converter: webidl.converters['unsigned long long'],\n defaultValue: 0\n },\n {\n key: 'bubbles',\n converter: webidl.converters.boolean,\n defaultValue: false\n },\n {\n key: 'cancelable',\n converter: webidl.converters.boolean,\n defaultValue: false\n },\n {\n key: 'composed',\n converter: webidl.converters.boolean,\n defaultValue: false\n }\n])\n\nmodule.exports = {\n ProgressEvent\n}\n", "'use strict'\n\n/**\n * @see https://encoding.spec.whatwg.org/#concept-encoding-get\n * @param {string|undefined} label\n */\nfunction getEncoding (label) {\n if (!label) {\n return 'failure'\n }\n\n // 1. Remove any leading and trailing ASCII whitespace from label.\n // 2. If label is an ASCII case-insensitive match for any of the\n // labels listed in the table below, then return the\n // corresponding encoding; otherwise return failure.\n switch (label.trim().toLowerCase()) {\n case 'unicode-1-1-utf-8':\n case 'unicode11utf8':\n case 'unicode20utf8':\n case 'utf-8':\n case 'utf8':\n case 'x-unicode20utf8':\n return 'UTF-8'\n case '866':\n case 'cp866':\n case 'csibm866':\n case 'ibm866':\n return 'IBM866'\n case 'csisolatin2':\n case 'iso-8859-2':\n case 'iso-ir-101':\n case 'iso8859-2':\n case 'iso88592':\n case 'iso_8859-2':\n case 'iso_8859-2:1987':\n case 'l2':\n case 'latin2':\n return 'ISO-8859-2'\n case 'csisolatin3':\n case 'iso-8859-3':\n case 'iso-ir-109':\n case 'iso8859-3':\n case 'iso88593':\n case 'iso_8859-3':\n case 'iso_8859-3:1988':\n case 'l3':\n case 'latin3':\n return 'ISO-8859-3'\n case 'csisolatin4':\n case 'iso-8859-4':\n case 'iso-ir-110':\n case 'iso8859-4':\n case 'iso88594':\n case 'iso_8859-4':\n case 'iso_8859-4:1988':\n case 'l4':\n case 'latin4':\n return 'ISO-8859-4'\n case 'csisolatincyrillic':\n case 'cyrillic':\n case 'iso-8859-5':\n case 'iso-ir-144':\n case 'iso8859-5':\n case 'iso88595':\n case 'iso_8859-5':\n case 'iso_8859-5:1988':\n return 'ISO-8859-5'\n case 'arabic':\n case 'asmo-708':\n case 'csiso88596e':\n case 'csiso88596i':\n case 'csisolatinarabic':\n case 'ecma-114':\n case 'iso-8859-6':\n case 'iso-8859-6-e':\n case 'iso-8859-6-i':\n case 'iso-ir-127':\n case 'iso8859-6':\n case 'iso88596':\n case 'iso_8859-6':\n case 'iso_8859-6:1987':\n return 'ISO-8859-6'\n case 'csisolatingreek':\n case 'ecma-118':\n case 'elot_928':\n case 'greek':\n case 'greek8':\n case 'iso-8859-7':\n case 'iso-ir-126':\n case 'iso8859-7':\n case 'iso88597':\n case 'iso_8859-7':\n case 'iso_8859-7:1987':\n case 'sun_eu_greek':\n return 'ISO-8859-7'\n case 'csiso88598e':\n case 'csisolatinhebrew':\n case 'hebrew':\n case 'iso-8859-8':\n case 'iso-8859-8-e':\n case 'iso-ir-138':\n case 'iso8859-8':\n case 'iso88598':\n case 'iso_8859-8':\n case 'iso_8859-8:1988':\n case 'visual':\n return 'ISO-8859-8'\n case 'csiso88598i':\n case 'iso-8859-8-i':\n case 'logical':\n return 'ISO-8859-8-I'\n case 'csisolatin6':\n case 'iso-8859-10':\n case 'iso-ir-157':\n case 'iso8859-10':\n case 'iso885910':\n case 'l6':\n case 'latin6':\n return 'ISO-8859-10'\n case 'iso-8859-13':\n case 'iso8859-13':\n case 'iso885913':\n return 'ISO-8859-13'\n case 'iso-8859-14':\n case 'iso8859-14':\n case 'iso885914':\n return 'ISO-8859-14'\n case 'csisolatin9':\n case 'iso-8859-15':\n case 'iso8859-15':\n case 'iso885915':\n case 'iso_8859-15':\n case 'l9':\n return 'ISO-8859-15'\n case 'iso-8859-16':\n return 'ISO-8859-16'\n case 'cskoi8r':\n case 'koi':\n case 'koi8':\n case 'koi8-r':\n case 'koi8_r':\n return 'KOI8-R'\n case 'koi8-ru':\n case 'koi8-u':\n return 'KOI8-U'\n case 'csmacintosh':\n case 'mac':\n case 'macintosh':\n case 'x-mac-roman':\n return 'macintosh'\n case 'iso-8859-11':\n case 'iso8859-11':\n case 'iso885911':\n case 'tis-620':\n case 'windows-874':\n return 'windows-874'\n case 'cp1250':\n case 'windows-1250':\n case 'x-cp1250':\n return 'windows-1250'\n case 'cp1251':\n case 'windows-1251':\n case 'x-cp1251':\n return 'windows-1251'\n case 'ansi_x3.4-1968':\n case 'ascii':\n case 'cp1252':\n case 'cp819':\n case 'csisolatin1':\n case 'ibm819':\n case 'iso-8859-1':\n case 'iso-ir-100':\n case 'iso8859-1':\n case 'iso88591':\n case 'iso_8859-1':\n case 'iso_8859-1:1987':\n case 'l1':\n case 'latin1':\n case 'us-ascii':\n case 'windows-1252':\n case 'x-cp1252':\n return 'windows-1252'\n case 'cp1253':\n case 'windows-1253':\n case 'x-cp1253':\n return 'windows-1253'\n case 'cp1254':\n case 'csisolatin5':\n case 'iso-8859-9':\n case 'iso-ir-148':\n case 'iso8859-9':\n case 'iso88599':\n case 'iso_8859-9':\n case 'iso_8859-9:1989':\n case 'l5':\n case 'latin5':\n case 'windows-1254':\n case 'x-cp1254':\n return 'windows-1254'\n case 'cp1255':\n case 'windows-1255':\n case 'x-cp1255':\n return 'windows-1255'\n case 'cp1256':\n case 'windows-1256':\n case 'x-cp1256':\n return 'windows-1256'\n case 'cp1257':\n case 'windows-1257':\n case 'x-cp1257':\n return 'windows-1257'\n case 'cp1258':\n case 'windows-1258':\n case 'x-cp1258':\n return 'windows-1258'\n case 'x-mac-cyrillic':\n case 'x-mac-ukrainian':\n return 'x-mac-cyrillic'\n case 'chinese':\n case 'csgb2312':\n case 'csiso58gb231280':\n case 'gb2312':\n case 'gb_2312':\n case 'gb_2312-80':\n case 'gbk':\n case 'iso-ir-58':\n case 'x-gbk':\n return 'GBK'\n case 'gb18030':\n return 'gb18030'\n case 'big5':\n case 'big5-hkscs':\n case 'cn-big5':\n case 'csbig5':\n case 'x-x-big5':\n return 'Big5'\n case 'cseucpkdfmtjapanese':\n case 'euc-jp':\n case 'x-euc-jp':\n return 'EUC-JP'\n case 'csiso2022jp':\n case 'iso-2022-jp':\n return 'ISO-2022-JP'\n case 'csshiftjis':\n case 'ms932':\n case 'ms_kanji':\n case 'shift-jis':\n case 'shift_jis':\n case 'sjis':\n case 'windows-31j':\n case 'x-sjis':\n return 'Shift_JIS'\n case 'cseuckr':\n case 'csksc56011987':\n case 'euc-kr':\n case 'iso-ir-149':\n case 'korean':\n case 'ks_c_5601-1987':\n case 'ks_c_5601-1989':\n case 'ksc5601':\n case 'ksc_5601':\n case 'windows-949':\n return 'EUC-KR'\n case 'csiso2022kr':\n case 'hz-gb-2312':\n case 'iso-2022-cn':\n case 'iso-2022-cn-ext':\n case 'iso-2022-kr':\n case 'replacement':\n return 'replacement'\n case 'unicodefffe':\n case 'utf-16be':\n return 'UTF-16BE'\n case 'csunicode':\n case 'iso-10646-ucs-2':\n case 'ucs-2':\n case 'unicode':\n case 'unicodefeff':\n case 'utf-16':\n case 'utf-16le':\n return 'UTF-16LE'\n case 'x-user-defined':\n return 'x-user-defined'\n default: return 'failure'\n }\n}\n\nmodule.exports = {\n getEncoding\n}\n", "'use strict'\n\nconst {\n kState,\n kError,\n kResult,\n kAborted,\n kLastProgressEventFired\n} = require('./symbols')\nconst { ProgressEvent } = require('./progressevent')\nconst { getEncoding } = require('./encoding')\nconst { DOMException } = require('../fetch/constants')\nconst { serializeAMimeType, parseMIMEType } = require('../fetch/dataURL')\nconst { types } = require('util')\nconst { StringDecoder } = require('string_decoder')\nconst { btoa } = require('buffer')\n\n/** @type {PropertyDescriptor} */\nconst staticPropertyDescriptors = {\n enumerable: true,\n writable: false,\n configurable: false\n}\n\n/**\n * @see https://w3c.github.io/FileAPI/#readOperation\n * @param {import('./filereader').FileReader} fr\n * @param {import('buffer').Blob} blob\n * @param {string} type\n * @param {string?} encodingName\n */\nfunction readOperation (fr, blob, type, encodingName) {\n // 1. If fr\u2019s state is \"loading\", throw an InvalidStateError\n // DOMException.\n if (fr[kState] === 'loading') {\n throw new DOMException('Invalid state', 'InvalidStateError')\n }\n\n // 2. Set fr\u2019s state to \"loading\".\n fr[kState] = 'loading'\n\n // 3. Set fr\u2019s result to null.\n fr[kResult] = null\n\n // 4. Set fr\u2019s error to null.\n fr[kError] = null\n\n // 5. Let stream be the result of calling get stream on blob.\n /** @type {import('stream/web').ReadableStream} */\n const stream = blob.stream()\n\n // 6. Let reader be the result of getting a reader from stream.\n const reader = stream.getReader()\n\n // 7. Let bytes be an empty byte sequence.\n /** @type {Uint8Array[]} */\n const bytes = []\n\n // 8. Let chunkPromise be the result of reading a chunk from\n // stream with reader.\n let chunkPromise = reader.read()\n\n // 9. Let isFirstChunk be true.\n let isFirstChunk = true\n\n // 10. In parallel, while true:\n // Note: \"In parallel\" just means non-blocking\n // Note 2: readOperation itself cannot be async as double\n // reading the body would then reject the promise, instead\n // of throwing an error.\n ;(async () => {\n while (!fr[kAborted]) {\n // 1. Wait for chunkPromise to be fulfilled or rejected.\n try {\n const { done, value } = await chunkPromise\n\n // 2. If chunkPromise is fulfilled, and isFirstChunk is\n // true, queue a task to fire a progress event called\n // loadstart at fr.\n if (isFirstChunk && !fr[kAborted]) {\n queueMicrotask(() => {\n fireAProgressEvent('loadstart', fr)\n })\n }\n\n // 3. Set isFirstChunk to false.\n isFirstChunk = false\n\n // 4. If chunkPromise is fulfilled with an object whose\n // done property is false and whose value property is\n // a Uint8Array object, run these steps:\n if (!done && types.isUint8Array(value)) {\n // 1. Let bs be the byte sequence represented by the\n // Uint8Array object.\n\n // 2. Append bs to bytes.\n bytes.push(value)\n\n // 3. If roughly 50ms have passed since these steps\n // were last invoked, queue a task to fire a\n // progress event called progress at fr.\n if (\n (\n fr[kLastProgressEventFired] === undefined ||\n Date.now() - fr[kLastProgressEventFired] >= 50\n ) &&\n !fr[kAborted]\n ) {\n fr[kLastProgressEventFired] = Date.now()\n queueMicrotask(() => {\n fireAProgressEvent('progress', fr)\n })\n }\n\n // 4. Set chunkPromise to the result of reading a\n // chunk from stream with reader.\n chunkPromise = reader.read()\n } else if (done) {\n // 5. Otherwise, if chunkPromise is fulfilled with an\n // object whose done property is true, queue a task\n // to run the following steps and abort this algorithm:\n queueMicrotask(() => {\n // 1. Set fr\u2019s state to \"done\".\n fr[kState] = 'done'\n\n // 2. Let result be the result of package data given\n // bytes, type, blob\u2019s type, and encodingName.\n try {\n const result = packageData(bytes, type, blob.type, encodingName)\n\n // 4. Else:\n\n if (fr[kAborted]) {\n return\n }\n\n // 1. Set fr\u2019s result to result.\n fr[kResult] = result\n\n // 2. Fire a progress event called load at the fr.\n fireAProgressEvent('load', fr)\n } catch (error) {\n // 3. If package data threw an exception error:\n\n // 1. Set fr\u2019s error to error.\n fr[kError] = error\n\n // 2. Fire a progress event called error at fr.\n fireAProgressEvent('error', fr)\n }\n\n // 5. If fr\u2019s state is not \"loading\", fire a progress\n // event called loadend at the fr.\n if (fr[kState] !== 'loading') {\n fireAProgressEvent('loadend', fr)\n }\n })\n\n break\n }\n } catch (error) {\n if (fr[kAborted]) {\n return\n }\n\n // 6. Otherwise, if chunkPromise is rejected with an\n // error error, queue a task to run the following\n // steps and abort this algorithm:\n queueMicrotask(() => {\n // 1. Set fr\u2019s state to \"done\".\n fr[kState] = 'done'\n\n // 2. Set fr\u2019s error to error.\n fr[kError] = error\n\n // 3. Fire a progress event called error at fr.\n fireAProgressEvent('error', fr)\n\n // 4. If fr\u2019s state is not \"loading\", fire a progress\n // event called loadend at fr.\n if (fr[kState] !== 'loading') {\n fireAProgressEvent('loadend', fr)\n }\n })\n\n break\n }\n }\n })()\n}\n\n/**\n * @see https://w3c.github.io/FileAPI/#fire-a-progress-event\n * @see https://dom.spec.whatwg.org/#concept-event-fire\n * @param {string} e The name of the event\n * @param {import('./filereader').FileReader} reader\n */\nfunction fireAProgressEvent (e, reader) {\n // The progress event e does not bubble. e.bubbles must be false\n // The progress event e is NOT cancelable. e.cancelable must be false\n const event = new ProgressEvent(e, {\n bubbles: false,\n cancelable: false\n })\n\n reader.dispatchEvent(event)\n}\n\n/**\n * @see https://w3c.github.io/FileAPI/#blob-package-data\n * @param {Uint8Array[]} bytes\n * @param {string} type\n * @param {string?} mimeType\n * @param {string?} encodingName\n */\nfunction packageData (bytes, type, mimeType, encodingName) {\n // 1. A Blob has an associated package data algorithm, given\n // bytes, a type, a optional mimeType, and a optional\n // encodingName, which switches on type and runs the\n // associated steps:\n\n switch (type) {\n case 'DataURL': {\n // 1. Return bytes as a DataURL [RFC2397] subject to\n // the considerations below:\n // * Use mimeType as part of the Data URL if it is\n // available in keeping with the Data URL\n // specification [RFC2397].\n // * If mimeType is not available return a Data URL\n // without a media-type. [RFC2397].\n\n // https://datatracker.ietf.org/doc/html/rfc2397#section-3\n // dataurl := \"data:\" [ mediatype ] [ \";base64\" ] \",\" data\n // mediatype := [ type \"/\" subtype ] *( \";\" parameter )\n // data := *urlchar\n // parameter := attribute \"=\" value\n let dataURL = 'data:'\n\n const parsed = parseMIMEType(mimeType || 'application/octet-stream')\n\n if (parsed !== 'failure') {\n dataURL += serializeAMimeType(parsed)\n }\n\n dataURL += ';base64,'\n\n const decoder = new StringDecoder('latin1')\n\n for (const chunk of bytes) {\n dataURL += btoa(decoder.write(chunk))\n }\n\n dataURL += btoa(decoder.end())\n\n return dataURL\n }\n case 'Text': {\n // 1. Let encoding be failure\n let encoding = 'failure'\n\n // 2. If the encodingName is present, set encoding to the\n // result of getting an encoding from encodingName.\n if (encodingName) {\n encoding = getEncoding(encodingName)\n }\n\n // 3. If encoding is failure, and mimeType is present:\n if (encoding === 'failure' && mimeType) {\n // 1. Let type be the result of parse a MIME type\n // given mimeType.\n const type = parseMIMEType(mimeType)\n\n // 2. If type is not failure, set encoding to the result\n // of getting an encoding from type\u2019s parameters[\"charset\"].\n if (type !== 'failure') {\n encoding = getEncoding(type.parameters.get('charset'))\n }\n }\n\n // 4. If encoding is failure, then set encoding to UTF-8.\n if (encoding === 'failure') {\n encoding = 'UTF-8'\n }\n\n // 5. Decode bytes using fallback encoding encoding, and\n // return the result.\n return decode(bytes, encoding)\n }\n case 'ArrayBuffer': {\n // Return a new ArrayBuffer whose contents are bytes.\n const sequence = combineByteSequences(bytes)\n\n return sequence.buffer\n }\n case 'BinaryString': {\n // Return bytes as a binary string, in which every byte\n // is represented by a code unit of equal value [0..255].\n let binaryString = ''\n\n const decoder = new StringDecoder('latin1')\n\n for (const chunk of bytes) {\n binaryString += decoder.write(chunk)\n }\n\n binaryString += decoder.end()\n\n return binaryString\n }\n }\n}\n\n/**\n * @see https://encoding.spec.whatwg.org/#decode\n * @param {Uint8Array[]} ioQueue\n * @param {string} encoding\n */\nfunction decode (ioQueue, encoding) {\n const bytes = combineByteSequences(ioQueue)\n\n // 1. Let BOMEncoding be the result of BOM sniffing ioQueue.\n const BOMEncoding = BOMSniffing(bytes)\n\n let slice = 0\n\n // 2. If BOMEncoding is non-null:\n if (BOMEncoding !== null) {\n // 1. Set encoding to BOMEncoding.\n encoding = BOMEncoding\n\n // 2. Read three bytes from ioQueue, if BOMEncoding is\n // UTF-8; otherwise read two bytes.\n // (Do nothing with those bytes.)\n slice = BOMEncoding === 'UTF-8' ? 3 : 2\n }\n\n // 3. Process a queue with an instance of encoding\u2019s\n // decoder, ioQueue, output, and \"replacement\".\n\n // 4. Return output.\n\n const sliced = bytes.slice(slice)\n return new TextDecoder(encoding).decode(sliced)\n}\n\n/**\n * @see https://encoding.spec.whatwg.org/#bom-sniff\n * @param {Uint8Array} ioQueue\n */\nfunction BOMSniffing (ioQueue) {\n // 1. Let BOM be the result of peeking 3 bytes from ioQueue,\n // converted to a byte sequence.\n const [a, b, c] = ioQueue\n\n // 2. For each of the rows in the table below, starting with\n // the first one and going down, if BOM starts with the\n // bytes given in the first column, then return the\n // encoding given in the cell in the second column of that\n // row. Otherwise, return null.\n if (a === 0xEF && b === 0xBB && c === 0xBF) {\n return 'UTF-8'\n } else if (a === 0xFE && b === 0xFF) {\n return 'UTF-16BE'\n } else if (a === 0xFF && b === 0xFE) {\n return 'UTF-16LE'\n }\n\n return null\n}\n\n/**\n * @param {Uint8Array[]} sequences\n */\nfunction combineByteSequences (sequences) {\n const size = sequences.reduce((a, b) => {\n return a + b.byteLength\n }, 0)\n\n let offset = 0\n\n return sequences.reduce((a, b) => {\n a.set(b, offset)\n offset += b.byteLength\n return a\n }, new Uint8Array(size))\n}\n\nmodule.exports = {\n staticPropertyDescriptors,\n readOperation,\n fireAProgressEvent\n}\n", "'use strict'\n\nconst {\n staticPropertyDescriptors,\n readOperation,\n fireAProgressEvent\n} = require('./util')\nconst {\n kState,\n kError,\n kResult,\n kEvents,\n kAborted\n} = require('./symbols')\nconst { webidl } = require('../fetch/webidl')\nconst { kEnumerableProperty } = require('../core/util')\n\nclass FileReader extends EventTarget {\n constructor () {\n super()\n\n this[kState] = 'empty'\n this[kResult] = null\n this[kError] = null\n this[kEvents] = {\n loadend: null,\n error: null,\n abort: null,\n load: null,\n progress: null,\n loadstart: null\n }\n }\n\n /**\n * @see https://w3c.github.io/FileAPI/#dfn-readAsArrayBuffer\n * @param {import('buffer').Blob} blob\n */\n readAsArrayBuffer (blob) {\n webidl.brandCheck(this, FileReader)\n\n webidl.argumentLengthCheck(arguments, 1, { header: 'FileReader.readAsArrayBuffer' })\n\n blob = webidl.converters.Blob(blob, { strict: false })\n\n // The readAsArrayBuffer(blob) method, when invoked,\n // must initiate a read operation for blob with ArrayBuffer.\n readOperation(this, blob, 'ArrayBuffer')\n }\n\n /**\n * @see https://w3c.github.io/FileAPI/#readAsBinaryString\n * @param {import('buffer').Blob} blob\n */\n readAsBinaryString (blob) {\n webidl.brandCheck(this, FileReader)\n\n webidl.argumentLengthCheck(arguments, 1, { header: 'FileReader.readAsBinaryString' })\n\n blob = webidl.converters.Blob(blob, { strict: false })\n\n // The readAsBinaryString(blob) method, when invoked,\n // must initiate a read operation for blob with BinaryString.\n readOperation(this, blob, 'BinaryString')\n }\n\n /**\n * @see https://w3c.github.io/FileAPI/#readAsDataText\n * @param {import('buffer').Blob} blob\n * @param {string?} encoding\n */\n readAsText (blob, encoding = undefined) {\n webidl.brandCheck(this, FileReader)\n\n webidl.argumentLengthCheck(arguments, 1, { header: 'FileReader.readAsText' })\n\n blob = webidl.converters.Blob(blob, { strict: false })\n\n if (encoding !== undefined) {\n encoding = webidl.converters.DOMString(encoding)\n }\n\n // The readAsText(blob, encoding) method, when invoked,\n // must initiate a read operation for blob with Text and encoding.\n readOperation(this, blob, 'Text', encoding)\n }\n\n /**\n * @see https://w3c.github.io/FileAPI/#dfn-readAsDataURL\n * @param {import('buffer').Blob} blob\n */\n readAsDataURL (blob) {\n webidl.brandCheck(this, FileReader)\n\n webidl.argumentLengthCheck(arguments, 1, { header: 'FileReader.readAsDataURL' })\n\n blob = webidl.converters.Blob(blob, { strict: false })\n\n // The readAsDataURL(blob) method, when invoked, must\n // initiate a read operation for blob with DataURL.\n readOperation(this, blob, 'DataURL')\n }\n\n /**\n * @see https://w3c.github.io/FileAPI/#dfn-abort\n */\n abort () {\n // 1. If this's state is \"empty\" or if this's state is\n // \"done\" set this's result to null and terminate\n // this algorithm.\n if (this[kState] === 'empty' || this[kState] === 'done') {\n this[kResult] = null\n return\n }\n\n // 2. If this's state is \"loading\" set this's state to\n // \"done\" and set this's result to null.\n if (this[kState] === 'loading') {\n this[kState] = 'done'\n this[kResult] = null\n }\n\n // 3. If there are any tasks from this on the file reading\n // task source in an affiliated task queue, then remove\n // those tasks from that task queue.\n this[kAborted] = true\n\n // 4. Terminate the algorithm for the read method being processed.\n // TODO\n\n // 5. Fire a progress event called abort at this.\n fireAProgressEvent('abort', this)\n\n // 6. If this's state is not \"loading\", fire a progress\n // event called loadend at this.\n if (this[kState] !== 'loading') {\n fireAProgressEvent('loadend', this)\n }\n }\n\n /**\n * @see https://w3c.github.io/FileAPI/#dom-filereader-readystate\n */\n get readyState () {\n webidl.brandCheck(this, FileReader)\n\n switch (this[kState]) {\n case 'empty': return this.EMPTY\n case 'loading': return this.LOADING\n case 'done': return this.DONE\n }\n }\n\n /**\n * @see https://w3c.github.io/FileAPI/#dom-filereader-result\n */\n get result () {\n webidl.brandCheck(this, FileReader)\n\n // The result attribute\u2019s getter, when invoked, must return\n // this's result.\n return this[kResult]\n }\n\n /**\n * @see https://w3c.github.io/FileAPI/#dom-filereader-error\n */\n get error () {\n webidl.brandCheck(this, FileReader)\n\n // The error attribute\u2019s getter, when invoked, must return\n // this's error.\n return this[kError]\n }\n\n get onloadend () {\n webidl.brandCheck(this, FileReader)\n\n return this[kEvents].loadend\n }\n\n set onloadend (fn) {\n webidl.brandCheck(this, FileReader)\n\n if (this[kEvents].loadend) {\n this.removeEventListener('loadend', this[kEvents].loadend)\n }\n\n if (typeof fn === 'function') {\n this[kEvents].loadend = fn\n this.addEventListener('loadend', fn)\n } else {\n this[kEvents].loadend = null\n }\n }\n\n get onerror () {\n webidl.brandCheck(this, FileReader)\n\n return this[kEvents].error\n }\n\n set onerror (fn) {\n webidl.brandCheck(this, FileReader)\n\n if (this[kEvents].error) {\n this.removeEventListener('error', this[kEvents].error)\n }\n\n if (typeof fn === 'function') {\n this[kEvents].error = fn\n this.addEventListener('error', fn)\n } else {\n this[kEvents].error = null\n }\n }\n\n get onloadstart () {\n webidl.brandCheck(this, FileReader)\n\n return this[kEvents].loadstart\n }\n\n set onloadstart (fn) {\n webidl.brandCheck(this, FileReader)\n\n if (this[kEvents].loadstart) {\n this.removeEventListener('loadstart', this[kEvents].loadstart)\n }\n\n if (typeof fn === 'function') {\n this[kEvents].loadstart = fn\n this.addEventListener('loadstart', fn)\n } else {\n this[kEvents].loadstart = null\n }\n }\n\n get onprogress () {\n webidl.brandCheck(this, FileReader)\n\n return this[kEvents].progress\n }\n\n set onprogress (fn) {\n webidl.brandCheck(this, FileReader)\n\n if (this[kEvents].progress) {\n this.removeEventListener('progress', this[kEvents].progress)\n }\n\n if (typeof fn === 'function') {\n this[kEvents].progress = fn\n this.addEventListener('progress', fn)\n } else {\n this[kEvents].progress = null\n }\n }\n\n get onload () {\n webidl.brandCheck(this, FileReader)\n\n return this[kEvents].load\n }\n\n set onload (fn) {\n webidl.brandCheck(this, FileReader)\n\n if (this[kEvents].load) {\n this.removeEventListener('load', this[kEvents].load)\n }\n\n if (typeof fn === 'function') {\n this[kEvents].load = fn\n this.addEventListener('load', fn)\n } else {\n this[kEvents].load = null\n }\n }\n\n get onabort () {\n webidl.brandCheck(this, FileReader)\n\n return this[kEvents].abort\n }\n\n set onabort (fn) {\n webidl.brandCheck(this, FileReader)\n\n if (this[kEvents].abort) {\n this.removeEventListener('abort', this[kEvents].abort)\n }\n\n if (typeof fn === 'function') {\n this[kEvents].abort = fn\n this.addEventListener('abort', fn)\n } else {\n this[kEvents].abort = null\n }\n }\n}\n\n// https://w3c.github.io/FileAPI/#dom-filereader-empty\nFileReader.EMPTY = FileReader.prototype.EMPTY = 0\n// https://w3c.github.io/FileAPI/#dom-filereader-loading\nFileReader.LOADING = FileReader.prototype.LOADING = 1\n// https://w3c.github.io/FileAPI/#dom-filereader-done\nFileReader.DONE = FileReader.prototype.DONE = 2\n\nObject.defineProperties(FileReader.prototype, {\n EMPTY: staticPropertyDescriptors,\n LOADING: staticPropertyDescriptors,\n DONE: staticPropertyDescriptors,\n readAsArrayBuffer: kEnumerableProperty,\n readAsBinaryString: kEnumerableProperty,\n readAsText: kEnumerableProperty,\n readAsDataURL: kEnumerableProperty,\n abort: kEnumerableProperty,\n readyState: kEnumerableProperty,\n result: kEnumerableProperty,\n error: kEnumerableProperty,\n onloadstart: kEnumerableProperty,\n onprogress: kEnumerableProperty,\n onload: kEnumerableProperty,\n onabort: kEnumerableProperty,\n onerror: kEnumerableProperty,\n onloadend: kEnumerableProperty,\n [Symbol.toStringTag]: {\n value: 'FileReader',\n writable: false,\n enumerable: false,\n configurable: true\n }\n})\n\nObject.defineProperties(FileReader, {\n EMPTY: staticPropertyDescriptors,\n LOADING: staticPropertyDescriptors,\n DONE: staticPropertyDescriptors\n})\n\nmodule.exports = {\n FileReader\n}\n", "'use strict'\n\nmodule.exports = {\n kConstruct: require('../core/symbols').kConstruct\n}\n", "'use strict'\n\nconst assert = require('assert')\nconst { URLSerializer } = require('../fetch/dataURL')\nconst { isValidHeaderName } = require('../fetch/util')\n\n/**\n * @see https://url.spec.whatwg.org/#concept-url-equals\n * @param {URL} A\n * @param {URL} B\n * @param {boolean | undefined} excludeFragment\n * @returns {boolean}\n */\nfunction urlEquals (A, B, excludeFragment = false) {\n const serializedA = URLSerializer(A, excludeFragment)\n\n const serializedB = URLSerializer(B, excludeFragment)\n\n return serializedA === serializedB\n}\n\n/**\n * @see https://github.com/chromium/chromium/blob/694d20d134cb553d8d89e5500b9148012b1ba299/content/browser/cache_storage/cache_storage_cache.cc#L260-L262\n * @param {string} header\n */\nfunction fieldValues (header) {\n assert(header !== null)\n\n const values = []\n\n for (let value of header.split(',')) {\n value = value.trim()\n\n if (!value.length) {\n continue\n } else if (!isValidHeaderName(value)) {\n continue\n }\n\n values.push(value)\n }\n\n return values\n}\n\nmodule.exports = {\n urlEquals,\n fieldValues\n}\n", "'use strict'\n\nconst { kConstruct } = require('./symbols')\nconst { urlEquals, fieldValues: getFieldValues } = require('./util')\nconst { kEnumerableProperty, isDisturbed } = require('../core/util')\nconst { kHeadersList } = require('../core/symbols')\nconst { webidl } = require('../fetch/webidl')\nconst { Response, cloneResponse } = require('../fetch/response')\nconst { Request } = require('../fetch/request')\nconst { kState, kHeaders, kGuard, kRealm } = require('../fetch/symbols')\nconst { fetching } = require('../fetch/index')\nconst { urlIsHttpHttpsScheme, createDeferredPromise, readAllBytes } = require('../fetch/util')\nconst assert = require('assert')\nconst { getGlobalDispatcher } = require('../global')\n\n/**\n * @see https://w3c.github.io/ServiceWorker/#dfn-cache-batch-operation\n * @typedef {Object} CacheBatchOperation\n * @property {'delete' | 'put'} type\n * @property {any} request\n * @property {any} response\n * @property {import('../../types/cache').CacheQueryOptions} options\n */\n\n/**\n * @see https://w3c.github.io/ServiceWorker/#dfn-request-response-list\n * @typedef {[any, any][]} requestResponseList\n */\n\nclass Cache {\n /**\n * @see https://w3c.github.io/ServiceWorker/#dfn-relevant-request-response-list\n * @type {requestResponseList}\n */\n #relevantRequestResponseList\n\n constructor () {\n if (arguments[0] !== kConstruct) {\n webidl.illegalConstructor()\n }\n\n this.#relevantRequestResponseList = arguments[1]\n }\n\n async match (request, options = {}) {\n webidl.brandCheck(this, Cache)\n webidl.argumentLengthCheck(arguments, 1, { header: 'Cache.match' })\n\n request = webidl.converters.RequestInfo(request)\n options = webidl.converters.CacheQueryOptions(options)\n\n const p = await this.matchAll(request, options)\n\n if (p.length === 0) {\n return\n }\n\n return p[0]\n }\n\n async matchAll (request = undefined, options = {}) {\n webidl.brandCheck(this, Cache)\n\n if (request !== undefined) request = webidl.converters.RequestInfo(request)\n options = webidl.converters.CacheQueryOptions(options)\n\n // 1.\n let r = null\n\n // 2.\n if (request !== undefined) {\n if (request instanceof Request) {\n // 2.1.1\n r = request[kState]\n\n // 2.1.2\n if (r.method !== 'GET' && !options.ignoreMethod) {\n return []\n }\n } else if (typeof request === 'string') {\n // 2.2.1\n r = new Request(request)[kState]\n }\n }\n\n // 5.\n // 5.1\n const responses = []\n\n // 5.2\n if (request === undefined) {\n // 5.2.1\n for (const requestResponse of this.#relevantRequestResponseList) {\n responses.push(requestResponse[1])\n }\n } else { // 5.3\n // 5.3.1\n const requestResponses = this.#queryCache(r, options)\n\n // 5.3.2\n for (const requestResponse of requestResponses) {\n responses.push(requestResponse[1])\n }\n }\n\n // 5.4\n // We don't implement CORs so we don't need to loop over the responses, yay!\n\n // 5.5.1\n const responseList = []\n\n // 5.5.2\n for (const response of responses) {\n // 5.5.2.1\n const responseObject = new Response(response.body?.source ?? null)\n const body = responseObject[kState].body\n responseObject[kState] = response\n responseObject[kState].body = body\n responseObject[kHeaders][kHeadersList] = response.headersList\n responseObject[kHeaders][kGuard] = 'immutable'\n\n responseList.push(responseObject)\n }\n\n // 6.\n return Object.freeze(responseList)\n }\n\n async add (request) {\n webidl.brandCheck(this, Cache)\n webidl.argumentLengthCheck(arguments, 1, { header: 'Cache.add' })\n\n request = webidl.converters.RequestInfo(request)\n\n // 1.\n const requests = [request]\n\n // 2.\n const responseArrayPromise = this.addAll(requests)\n\n // 3.\n return await responseArrayPromise\n }\n\n async addAll (requests) {\n webidl.brandCheck(this, Cache)\n webidl.argumentLengthCheck(arguments, 1, { header: 'Cache.addAll' })\n\n requests = webidl.converters['sequence'](requests)\n\n // 1.\n const responsePromises = []\n\n // 2.\n const requestList = []\n\n // 3.\n for (const request of requests) {\n if (typeof request === 'string') {\n continue\n }\n\n // 3.1\n const r = request[kState]\n\n // 3.2\n if (!urlIsHttpHttpsScheme(r.url) || r.method !== 'GET') {\n throw webidl.errors.exception({\n header: 'Cache.addAll',\n message: 'Expected http/s scheme when method is not GET.'\n })\n }\n }\n\n // 4.\n /** @type {ReturnType[]} */\n const fetchControllers = []\n\n // 5.\n for (const request of requests) {\n // 5.1\n const r = new Request(request)[kState]\n\n // 5.2\n if (!urlIsHttpHttpsScheme(r.url)) {\n throw webidl.errors.exception({\n header: 'Cache.addAll',\n message: 'Expected http/s scheme.'\n })\n }\n\n // 5.4\n r.initiator = 'fetch'\n r.destination = 'subresource'\n\n // 5.5\n requestList.push(r)\n\n // 5.6\n const responsePromise = createDeferredPromise()\n\n // 5.7\n fetchControllers.push(fetching({\n request: r,\n dispatcher: getGlobalDispatcher(),\n processResponse (response) {\n // 1.\n if (response.type === 'error' || response.status === 206 || response.status < 200 || response.status > 299) {\n responsePromise.reject(webidl.errors.exception({\n header: 'Cache.addAll',\n message: 'Received an invalid status code or the request failed.'\n }))\n } else if (response.headersList.contains('vary')) { // 2.\n // 2.1\n const fieldValues = getFieldValues(response.headersList.get('vary'))\n\n // 2.2\n for (const fieldValue of fieldValues) {\n // 2.2.1\n if (fieldValue === '*') {\n responsePromise.reject(webidl.errors.exception({\n header: 'Cache.addAll',\n message: 'invalid vary field value'\n }))\n\n for (const controller of fetchControllers) {\n controller.abort()\n }\n\n return\n }\n }\n }\n },\n processResponseEndOfBody (response) {\n // 1.\n if (response.aborted) {\n responsePromise.reject(new DOMException('aborted', 'AbortError'))\n return\n }\n\n // 2.\n responsePromise.resolve(response)\n }\n }))\n\n // 5.8\n responsePromises.push(responsePromise.promise)\n }\n\n // 6.\n const p = Promise.all(responsePromises)\n\n // 7.\n const responses = await p\n\n // 7.1\n const operations = []\n\n // 7.2\n let index = 0\n\n // 7.3\n for (const response of responses) {\n // 7.3.1\n /** @type {CacheBatchOperation} */\n const operation = {\n type: 'put', // 7.3.2\n request: requestList[index], // 7.3.3\n response // 7.3.4\n }\n\n operations.push(operation) // 7.3.5\n\n index++ // 7.3.6\n }\n\n // 7.5\n const cacheJobPromise = createDeferredPromise()\n\n // 7.6.1\n let errorData = null\n\n // 7.6.2\n try {\n this.#batchCacheOperations(operations)\n } catch (e) {\n errorData = e\n }\n\n // 7.6.3\n queueMicrotask(() => {\n // 7.6.3.1\n if (errorData === null) {\n cacheJobPromise.resolve(undefined)\n } else {\n // 7.6.3.2\n cacheJobPromise.reject(errorData)\n }\n })\n\n // 7.7\n return cacheJobPromise.promise\n }\n\n async put (request, response) {\n webidl.brandCheck(this, Cache)\n webidl.argumentLengthCheck(arguments, 2, { header: 'Cache.put' })\n\n request = webidl.converters.RequestInfo(request)\n response = webidl.converters.Response(response)\n\n // 1.\n let innerRequest = null\n\n // 2.\n if (request instanceof Request) {\n innerRequest = request[kState]\n } else { // 3.\n innerRequest = new Request(request)[kState]\n }\n\n // 4.\n if (!urlIsHttpHttpsScheme(innerRequest.url) || innerRequest.method !== 'GET') {\n throw webidl.errors.exception({\n header: 'Cache.put',\n message: 'Expected an http/s scheme when method is not GET'\n })\n }\n\n // 5.\n const innerResponse = response[kState]\n\n // 6.\n if (innerResponse.status === 206) {\n throw webidl.errors.exception({\n header: 'Cache.put',\n message: 'Got 206 status'\n })\n }\n\n // 7.\n if (innerResponse.headersList.contains('vary')) {\n // 7.1.\n const fieldValues = getFieldValues(innerResponse.headersList.get('vary'))\n\n // 7.2.\n for (const fieldValue of fieldValues) {\n // 7.2.1\n if (fieldValue === '*') {\n throw webidl.errors.exception({\n header: 'Cache.put',\n message: 'Got * vary field value'\n })\n }\n }\n }\n\n // 8.\n if (innerResponse.body && (isDisturbed(innerResponse.body.stream) || innerResponse.body.stream.locked)) {\n throw webidl.errors.exception({\n header: 'Cache.put',\n message: 'Response body is locked or disturbed'\n })\n }\n\n // 9.\n const clonedResponse = cloneResponse(innerResponse)\n\n // 10.\n const bodyReadPromise = createDeferredPromise()\n\n // 11.\n if (innerResponse.body != null) {\n // 11.1\n const stream = innerResponse.body.stream\n\n // 11.2\n const reader = stream.getReader()\n\n // 11.3\n readAllBytes(reader).then(bodyReadPromise.resolve, bodyReadPromise.reject)\n } else {\n bodyReadPromise.resolve(undefined)\n }\n\n // 12.\n /** @type {CacheBatchOperation[]} */\n const operations = []\n\n // 13.\n /** @type {CacheBatchOperation} */\n const operation = {\n type: 'put', // 14.\n request: innerRequest, // 15.\n response: clonedResponse // 16.\n }\n\n // 17.\n operations.push(operation)\n\n // 19.\n const bytes = await bodyReadPromise.promise\n\n if (clonedResponse.body != null) {\n clonedResponse.body.source = bytes\n }\n\n // 19.1\n const cacheJobPromise = createDeferredPromise()\n\n // 19.2.1\n let errorData = null\n\n // 19.2.2\n try {\n this.#batchCacheOperations(operations)\n } catch (e) {\n errorData = e\n }\n\n // 19.2.3\n queueMicrotask(() => {\n // 19.2.3.1\n if (errorData === null) {\n cacheJobPromise.resolve()\n } else { // 19.2.3.2\n cacheJobPromise.reject(errorData)\n }\n })\n\n return cacheJobPromise.promise\n }\n\n async delete (request, options = {}) {\n webidl.brandCheck(this, Cache)\n webidl.argumentLengthCheck(arguments, 1, { header: 'Cache.delete' })\n\n request = webidl.converters.RequestInfo(request)\n options = webidl.converters.CacheQueryOptions(options)\n\n /**\n * @type {Request}\n */\n let r = null\n\n if (request instanceof Request) {\n r = request[kState]\n\n if (r.method !== 'GET' && !options.ignoreMethod) {\n return false\n }\n } else {\n assert(typeof request === 'string')\n\n r = new Request(request)[kState]\n }\n\n /** @type {CacheBatchOperation[]} */\n const operations = []\n\n /** @type {CacheBatchOperation} */\n const operation = {\n type: 'delete',\n request: r,\n options\n }\n\n operations.push(operation)\n\n const cacheJobPromise = createDeferredPromise()\n\n let errorData = null\n let requestResponses\n\n try {\n requestResponses = this.#batchCacheOperations(operations)\n } catch (e) {\n errorData = e\n }\n\n queueMicrotask(() => {\n if (errorData === null) {\n cacheJobPromise.resolve(!!requestResponses?.length)\n } else {\n cacheJobPromise.reject(errorData)\n }\n })\n\n return cacheJobPromise.promise\n }\n\n /**\n * @see https://w3c.github.io/ServiceWorker/#dom-cache-keys\n * @param {any} request\n * @param {import('../../types/cache').CacheQueryOptions} options\n * @returns {readonly Request[]}\n */\n async keys (request = undefined, options = {}) {\n webidl.brandCheck(this, Cache)\n\n if (request !== undefined) request = webidl.converters.RequestInfo(request)\n options = webidl.converters.CacheQueryOptions(options)\n\n // 1.\n let r = null\n\n // 2.\n if (request !== undefined) {\n // 2.1\n if (request instanceof Request) {\n // 2.1.1\n r = request[kState]\n\n // 2.1.2\n if (r.method !== 'GET' && !options.ignoreMethod) {\n return []\n }\n } else if (typeof request === 'string') { // 2.2\n r = new Request(request)[kState]\n }\n }\n\n // 4.\n const promise = createDeferredPromise()\n\n // 5.\n // 5.1\n const requests = []\n\n // 5.2\n if (request === undefined) {\n // 5.2.1\n for (const requestResponse of this.#relevantRequestResponseList) {\n // 5.2.1.1\n requests.push(requestResponse[0])\n }\n } else { // 5.3\n // 5.3.1\n const requestResponses = this.#queryCache(r, options)\n\n // 5.3.2\n for (const requestResponse of requestResponses) {\n // 5.3.2.1\n requests.push(requestResponse[0])\n }\n }\n\n // 5.4\n queueMicrotask(() => {\n // 5.4.1\n const requestList = []\n\n // 5.4.2\n for (const request of requests) {\n const requestObject = new Request('https://a')\n requestObject[kState] = request\n requestObject[kHeaders][kHeadersList] = request.headersList\n requestObject[kHeaders][kGuard] = 'immutable'\n requestObject[kRealm] = request.client\n\n // 5.4.2.1\n requestList.push(requestObject)\n }\n\n // 5.4.3\n promise.resolve(Object.freeze(requestList))\n })\n\n return promise.promise\n }\n\n /**\n * @see https://w3c.github.io/ServiceWorker/#batch-cache-operations-algorithm\n * @param {CacheBatchOperation[]} operations\n * @returns {requestResponseList}\n */\n #batchCacheOperations (operations) {\n // 1.\n const cache = this.#relevantRequestResponseList\n\n // 2.\n const backupCache = [...cache]\n\n // 3.\n const addedItems = []\n\n // 4.1\n const resultList = []\n\n try {\n // 4.2\n for (const operation of operations) {\n // 4.2.1\n if (operation.type !== 'delete' && operation.type !== 'put') {\n throw webidl.errors.exception({\n header: 'Cache.#batchCacheOperations',\n message: 'operation type does not match \"delete\" or \"put\"'\n })\n }\n\n // 4.2.2\n if (operation.type === 'delete' && operation.response != null) {\n throw webidl.errors.exception({\n header: 'Cache.#batchCacheOperations',\n message: 'delete operation should not have an associated response'\n })\n }\n\n // 4.2.3\n if (this.#queryCache(operation.request, operation.options, addedItems).length) {\n throw new DOMException('???', 'InvalidStateError')\n }\n\n // 4.2.4\n let requestResponses\n\n // 4.2.5\n if (operation.type === 'delete') {\n // 4.2.5.1\n requestResponses = this.#queryCache(operation.request, operation.options)\n\n // TODO: the spec is wrong, this is needed to pass WPTs\n if (requestResponses.length === 0) {\n return []\n }\n\n // 4.2.5.2\n for (const requestResponse of requestResponses) {\n const idx = cache.indexOf(requestResponse)\n assert(idx !== -1)\n\n // 4.2.5.2.1\n cache.splice(idx, 1)\n }\n } else if (operation.type === 'put') { // 4.2.6\n // 4.2.6.1\n if (operation.response == null) {\n throw webidl.errors.exception({\n header: 'Cache.#batchCacheOperations',\n message: 'put operation should have an associated response'\n })\n }\n\n // 4.2.6.2\n const r = operation.request\n\n // 4.2.6.3\n if (!urlIsHttpHttpsScheme(r.url)) {\n throw webidl.errors.exception({\n header: 'Cache.#batchCacheOperations',\n message: 'expected http or https scheme'\n })\n }\n\n // 4.2.6.4\n if (r.method !== 'GET') {\n throw webidl.errors.exception({\n header: 'Cache.#batchCacheOperations',\n message: 'not get method'\n })\n }\n\n // 4.2.6.5\n if (operation.options != null) {\n throw webidl.errors.exception({\n header: 'Cache.#batchCacheOperations',\n message: 'options must not be defined'\n })\n }\n\n // 4.2.6.6\n requestResponses = this.#queryCache(operation.request)\n\n // 4.2.6.7\n for (const requestResponse of requestResponses) {\n const idx = cache.indexOf(requestResponse)\n assert(idx !== -1)\n\n // 4.2.6.7.1\n cache.splice(idx, 1)\n }\n\n // 4.2.6.8\n cache.push([operation.request, operation.response])\n\n // 4.2.6.10\n addedItems.push([operation.request, operation.response])\n }\n\n // 4.2.7\n resultList.push([operation.request, operation.response])\n }\n\n // 4.3\n return resultList\n } catch (e) { // 5.\n // 5.1\n this.#relevantRequestResponseList.length = 0\n\n // 5.2\n this.#relevantRequestResponseList = backupCache\n\n // 5.3\n throw e\n }\n }\n\n /**\n * @see https://w3c.github.io/ServiceWorker/#query-cache\n * @param {any} requestQuery\n * @param {import('../../types/cache').CacheQueryOptions} options\n * @param {requestResponseList} targetStorage\n * @returns {requestResponseList}\n */\n #queryCache (requestQuery, options, targetStorage) {\n /** @type {requestResponseList} */\n const resultList = []\n\n const storage = targetStorage ?? this.#relevantRequestResponseList\n\n for (const requestResponse of storage) {\n const [cachedRequest, cachedResponse] = requestResponse\n if (this.#requestMatchesCachedItem(requestQuery, cachedRequest, cachedResponse, options)) {\n resultList.push(requestResponse)\n }\n }\n\n return resultList\n }\n\n /**\n * @see https://w3c.github.io/ServiceWorker/#request-matches-cached-item-algorithm\n * @param {any} requestQuery\n * @param {any} request\n * @param {any | null} response\n * @param {import('../../types/cache').CacheQueryOptions | undefined} options\n * @returns {boolean}\n */\n #requestMatchesCachedItem (requestQuery, request, response = null, options) {\n // if (options?.ignoreMethod === false && request.method === 'GET') {\n // return false\n // }\n\n const queryURL = new URL(requestQuery.url)\n\n const cachedURL = new URL(request.url)\n\n if (options?.ignoreSearch) {\n cachedURL.search = ''\n\n queryURL.search = ''\n }\n\n if (!urlEquals(queryURL, cachedURL, true)) {\n return false\n }\n\n if (\n response == null ||\n options?.ignoreVary ||\n !response.headersList.contains('vary')\n ) {\n return true\n }\n\n const fieldValues = getFieldValues(response.headersList.get('vary'))\n\n for (const fieldValue of fieldValues) {\n if (fieldValue === '*') {\n return false\n }\n\n const requestValue = request.headersList.get(fieldValue)\n const queryValue = requestQuery.headersList.get(fieldValue)\n\n // If one has the header and the other doesn't, or one has\n // a different value than the other, return false\n if (requestValue !== queryValue) {\n return false\n }\n }\n\n return true\n }\n}\n\nObject.defineProperties(Cache.prototype, {\n [Symbol.toStringTag]: {\n value: 'Cache',\n configurable: true\n },\n match: kEnumerableProperty,\n matchAll: kEnumerableProperty,\n add: kEnumerableProperty,\n addAll: kEnumerableProperty,\n put: kEnumerableProperty,\n delete: kEnumerableProperty,\n keys: kEnumerableProperty\n})\n\nconst cacheQueryOptionConverters = [\n {\n key: 'ignoreSearch',\n converter: webidl.converters.boolean,\n defaultValue: false\n },\n {\n key: 'ignoreMethod',\n converter: webidl.converters.boolean,\n defaultValue: false\n },\n {\n key: 'ignoreVary',\n converter: webidl.converters.boolean,\n defaultValue: false\n }\n]\n\nwebidl.converters.CacheQueryOptions = webidl.dictionaryConverter(cacheQueryOptionConverters)\n\nwebidl.converters.MultiCacheQueryOptions = webidl.dictionaryConverter([\n ...cacheQueryOptionConverters,\n {\n key: 'cacheName',\n converter: webidl.converters.DOMString\n }\n])\n\nwebidl.converters.Response = webidl.interfaceConverter(Response)\n\nwebidl.converters['sequence'] = webidl.sequenceConverter(\n webidl.converters.RequestInfo\n)\n\nmodule.exports = {\n Cache\n}\n", "'use strict'\n\nconst { kConstruct } = require('./symbols')\nconst { Cache } = require('./cache')\nconst { webidl } = require('../fetch/webidl')\nconst { kEnumerableProperty } = require('../core/util')\n\nclass CacheStorage {\n /**\n * @see https://w3c.github.io/ServiceWorker/#dfn-relevant-name-to-cache-map\n * @type {Map}\n */\n async has (cacheName) {\n webidl.brandCheck(this, CacheStorage)\n webidl.argumentLengthCheck(arguments, 1, { header: 'CacheStorage.has' })\n\n cacheName = webidl.converters.DOMString(cacheName)\n\n // 2.1.1\n // 2.2\n return this.#caches.has(cacheName)\n }\n\n /**\n * @see https://w3c.github.io/ServiceWorker/#dom-cachestorage-open\n * @param {string} cacheName\n * @returns {Promise}\n */\n async open (cacheName) {\n webidl.brandCheck(this, CacheStorage)\n webidl.argumentLengthCheck(arguments, 1, { header: 'CacheStorage.open' })\n\n cacheName = webidl.converters.DOMString(cacheName)\n\n // 2.1\n if (this.#caches.has(cacheName)) {\n // await caches.open('v1') !== await caches.open('v1')\n\n // 2.1.1\n const cache = this.#caches.get(cacheName)\n\n // 2.1.1.1\n return new Cache(kConstruct, cache)\n }\n\n // 2.2\n const cache = []\n\n // 2.3\n this.#caches.set(cacheName, cache)\n\n // 2.4\n return new Cache(kConstruct, cache)\n }\n\n /**\n * @see https://w3c.github.io/ServiceWorker/#cache-storage-delete\n * @param {string} cacheName\n * @returns {Promise}\n */\n async delete (cacheName) {\n webidl.brandCheck(this, CacheStorage)\n webidl.argumentLengthCheck(arguments, 1, { header: 'CacheStorage.delete' })\n\n cacheName = webidl.converters.DOMString(cacheName)\n\n return this.#caches.delete(cacheName)\n }\n\n /**\n * @see https://w3c.github.io/ServiceWorker/#cache-storage-keys\n * @returns {string[]}\n */\n async keys () {\n webidl.brandCheck(this, CacheStorage)\n\n // 2.1\n const keys = this.#caches.keys()\n\n // 2.2\n return [...keys]\n }\n}\n\nObject.defineProperties(CacheStorage.prototype, {\n [Symbol.toStringTag]: {\n value: 'CacheStorage',\n configurable: true\n },\n match: kEnumerableProperty,\n has: kEnumerableProperty,\n open: kEnumerableProperty,\n delete: kEnumerableProperty,\n keys: kEnumerableProperty\n})\n\nmodule.exports = {\n CacheStorage\n}\n", "'use strict'\n\n// https://wicg.github.io/cookie-store/#cookie-maximum-attribute-value-size\nconst maxAttributeValueSize = 1024\n\n// https://wicg.github.io/cookie-store/#cookie-maximum-name-value-pair-size\nconst maxNameValuePairSize = 4096\n\nmodule.exports = {\n maxAttributeValueSize,\n maxNameValuePairSize\n}\n", "'use strict'\n\nconst assert = require('assert')\nconst { kHeadersList } = require('../core/symbols')\n\nfunction isCTLExcludingHtab (value) {\n if (value.length === 0) {\n return false\n }\n\n for (const char of value) {\n const code = char.charCodeAt(0)\n\n if (\n (code >= 0x00 || code <= 0x08) ||\n (code >= 0x0A || code <= 0x1F) ||\n code === 0x7F\n ) {\n return false\n }\n }\n}\n\n/**\n CHAR = \n token = 1*\n separators = \"(\" | \")\" | \"<\" | \">\" | \"@\"\n | \",\" | \";\" | \":\" | \"\\\" | <\">\n | \"/\" | \"[\" | \"]\" | \"?\" | \"=\"\n | \"{\" | \"}\" | SP | HT\n * @param {string} name\n */\nfunction validateCookieName (name) {\n for (const char of name) {\n const code = char.charCodeAt(0)\n\n if (\n (code <= 0x20 || code > 0x7F) ||\n char === '(' ||\n char === ')' ||\n char === '>' ||\n char === '<' ||\n char === '@' ||\n char === ',' ||\n char === ';' ||\n char === ':' ||\n char === '\\\\' ||\n char === '\"' ||\n char === '/' ||\n char === '[' ||\n char === ']' ||\n char === '?' ||\n char === '=' ||\n char === '{' ||\n char === '}'\n ) {\n throw new Error('Invalid cookie name')\n }\n }\n}\n\n/**\n cookie-value = *cookie-octet / ( DQUOTE *cookie-octet DQUOTE )\n cookie-octet = %x21 / %x23-2B / %x2D-3A / %x3C-5B / %x5D-7E\n ; US-ASCII characters excluding CTLs,\n ; whitespace DQUOTE, comma, semicolon,\n ; and backslash\n * @param {string} value\n */\nfunction validateCookieValue (value) {\n for (const char of value) {\n const code = char.charCodeAt(0)\n\n if (\n code < 0x21 || // exclude CTLs (0-31)\n code === 0x22 ||\n code === 0x2C ||\n code === 0x3B ||\n code === 0x5C ||\n code > 0x7E // non-ascii\n ) {\n throw new Error('Invalid header value')\n }\n }\n}\n\n/**\n * path-value = \n * @param {string} path\n */\nfunction validateCookiePath (path) {\n for (const char of path) {\n const code = char.charCodeAt(0)\n\n if (code < 0x21 || char === ';') {\n throw new Error('Invalid cookie path')\n }\n }\n}\n\n/**\n * I have no idea why these values aren't allowed to be honest,\n * but Deno tests these. - Khafra\n * @param {string} domain\n */\nfunction validateCookieDomain (domain) {\n if (\n domain.startsWith('-') ||\n domain.endsWith('.') ||\n domain.endsWith('-')\n ) {\n throw new Error('Invalid cookie domain')\n }\n}\n\n/**\n * @see https://www.rfc-editor.org/rfc/rfc7231#section-7.1.1.1\n * @param {number|Date} date\n IMF-fixdate = day-name \",\" SP date1 SP time-of-day SP GMT\n ; fixed length/zone/capitalization subset of the format\n ; see Section 3.3 of [RFC5322]\n\n day-name = %x4D.6F.6E ; \"Mon\", case-sensitive\n / %x54.75.65 ; \"Tue\", case-sensitive\n / %x57.65.64 ; \"Wed\", case-sensitive\n / %x54.68.75 ; \"Thu\", case-sensitive\n / %x46.72.69 ; \"Fri\", case-sensitive\n / %x53.61.74 ; \"Sat\", case-sensitive\n / %x53.75.6E ; \"Sun\", case-sensitive\n date1 = day SP month SP year\n ; e.g., 02 Jun 1982\n\n day = 2DIGIT\n month = %x4A.61.6E ; \"Jan\", case-sensitive\n / %x46.65.62 ; \"Feb\", case-sensitive\n / %x4D.61.72 ; \"Mar\", case-sensitive\n / %x41.70.72 ; \"Apr\", case-sensitive\n / %x4D.61.79 ; \"May\", case-sensitive\n / %x4A.75.6E ; \"Jun\", case-sensitive\n / %x4A.75.6C ; \"Jul\", case-sensitive\n / %x41.75.67 ; \"Aug\", case-sensitive\n / %x53.65.70 ; \"Sep\", case-sensitive\n / %x4F.63.74 ; \"Oct\", case-sensitive\n / %x4E.6F.76 ; \"Nov\", case-sensitive\n / %x44.65.63 ; \"Dec\", case-sensitive\n year = 4DIGIT\n\n GMT = %x47.4D.54 ; \"GMT\", case-sensitive\n\n time-of-day = hour \":\" minute \":\" second\n ; 00:00:00 - 23:59:60 (leap second)\n\n hour = 2DIGIT\n minute = 2DIGIT\n second = 2DIGIT\n */\nfunction toIMFDate (date) {\n if (typeof date === 'number') {\n date = new Date(date)\n }\n\n const days = [\n 'Sun', 'Mon', 'Tue', 'Wed',\n 'Thu', 'Fri', 'Sat'\n ]\n\n const months = [\n 'Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun',\n 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'\n ]\n\n const dayName = days[date.getUTCDay()]\n const day = date.getUTCDate().toString().padStart(2, '0')\n const month = months[date.getUTCMonth()]\n const year = date.getUTCFullYear()\n const hour = date.getUTCHours().toString().padStart(2, '0')\n const minute = date.getUTCMinutes().toString().padStart(2, '0')\n const second = date.getUTCSeconds().toString().padStart(2, '0')\n\n return `${dayName}, ${day} ${month} ${year} ${hour}:${minute}:${second} GMT`\n}\n\n/**\n max-age-av = \"Max-Age=\" non-zero-digit *DIGIT\n ; In practice, both expires-av and max-age-av\n ; are limited to dates representable by the\n ; user agent.\n * @param {number} maxAge\n */\nfunction validateCookieMaxAge (maxAge) {\n if (maxAge < 0) {\n throw new Error('Invalid cookie max-age')\n }\n}\n\n/**\n * @see https://www.rfc-editor.org/rfc/rfc6265#section-4.1.1\n * @param {import('./index').Cookie} cookie\n */\nfunction stringify (cookie) {\n if (cookie.name.length === 0) {\n return null\n }\n\n validateCookieName(cookie.name)\n validateCookieValue(cookie.value)\n\n const out = [`${cookie.name}=${cookie.value}`]\n\n // https://datatracker.ietf.org/doc/html/draft-ietf-httpbis-cookie-prefixes-00#section-3.1\n // https://datatracker.ietf.org/doc/html/draft-ietf-httpbis-cookie-prefixes-00#section-3.2\n if (cookie.name.startsWith('__Secure-')) {\n cookie.secure = true\n }\n\n if (cookie.name.startsWith('__Host-')) {\n cookie.secure = true\n cookie.domain = null\n cookie.path = '/'\n }\n\n if (cookie.secure) {\n out.push('Secure')\n }\n\n if (cookie.httpOnly) {\n out.push('HttpOnly')\n }\n\n if (typeof cookie.maxAge === 'number') {\n validateCookieMaxAge(cookie.maxAge)\n out.push(`Max-Age=${cookie.maxAge}`)\n }\n\n if (cookie.domain) {\n validateCookieDomain(cookie.domain)\n out.push(`Domain=${cookie.domain}`)\n }\n\n if (cookie.path) {\n validateCookiePath(cookie.path)\n out.push(`Path=${cookie.path}`)\n }\n\n if (cookie.expires && cookie.expires.toString() !== 'Invalid Date') {\n out.push(`Expires=${toIMFDate(cookie.expires)}`)\n }\n\n if (cookie.sameSite) {\n out.push(`SameSite=${cookie.sameSite}`)\n }\n\n for (const part of cookie.unparsed) {\n if (!part.includes('=')) {\n throw new Error('Invalid unparsed')\n }\n\n const [key, ...value] = part.split('=')\n\n out.push(`${key.trim()}=${value.join('=')}`)\n }\n\n return out.join('; ')\n}\n\nlet kHeadersListNode\n\nfunction getHeadersList (headers) {\n if (headers[kHeadersList]) {\n return headers[kHeadersList]\n }\n\n if (!kHeadersListNode) {\n kHeadersListNode = Object.getOwnPropertySymbols(headers).find(\n (symbol) => symbol.description === 'headers list'\n )\n\n assert(kHeadersListNode, 'Headers cannot be parsed')\n }\n\n const headersList = headers[kHeadersListNode]\n assert(headersList)\n\n return headersList\n}\n\nmodule.exports = {\n isCTLExcludingHtab,\n stringify,\n getHeadersList\n}\n", "'use strict'\n\nconst { maxNameValuePairSize, maxAttributeValueSize } = require('./constants')\nconst { isCTLExcludingHtab } = require('./util')\nconst { collectASequenceOfCodePointsFast } = require('../fetch/dataURL')\nconst assert = require('assert')\n\n/**\n * @description Parses the field-value attributes of a set-cookie header string.\n * @see https://datatracker.ietf.org/doc/html/draft-ietf-httpbis-rfc6265bis#section-5.4\n * @param {string} header\n * @returns if the header is invalid, null will be returned\n */\nfunction parseSetCookie (header) {\n // 1. If the set-cookie-string contains a %x00-08 / %x0A-1F / %x7F\n // character (CTL characters excluding HTAB): Abort these steps and\n // ignore the set-cookie-string entirely.\n if (isCTLExcludingHtab(header)) {\n return null\n }\n\n let nameValuePair = ''\n let unparsedAttributes = ''\n let name = ''\n let value = ''\n\n // 2. If the set-cookie-string contains a %x3B (\";\") character:\n if (header.includes(';')) {\n // 1. The name-value-pair string consists of the characters up to,\n // but not including, the first %x3B (\";\"), and the unparsed-\n // attributes consist of the remainder of the set-cookie-string\n // (including the %x3B (\";\") in question).\n const position = { position: 0 }\n\n nameValuePair = collectASequenceOfCodePointsFast(';', header, position)\n unparsedAttributes = header.slice(position.position)\n } else {\n // Otherwise:\n\n // 1. The name-value-pair string consists of all the characters\n // contained in the set-cookie-string, and the unparsed-\n // attributes is the empty string.\n nameValuePair = header\n }\n\n // 3. If the name-value-pair string lacks a %x3D (\"=\") character, then\n // the name string is empty, and the value string is the value of\n // name-value-pair.\n if (!nameValuePair.includes('=')) {\n value = nameValuePair\n } else {\n // Otherwise, the name string consists of the characters up to, but\n // not including, the first %x3D (\"=\") character, and the (possibly\n // empty) value string consists of the characters after the first\n // %x3D (\"=\") character.\n const position = { position: 0 }\n name = collectASequenceOfCodePointsFast(\n '=',\n nameValuePair,\n position\n )\n value = nameValuePair.slice(position.position + 1)\n }\n\n // 4. Remove any leading or trailing WSP characters from the name\n // string and the value string.\n name = name.trim()\n value = value.trim()\n\n // 5. If the sum of the lengths of the name string and the value string\n // is more than 4096 octets, abort these steps and ignore the set-\n // cookie-string entirely.\n if (name.length + value.length > maxNameValuePairSize) {\n return null\n }\n\n // 6. The cookie-name is the name string, and the cookie-value is the\n // value string.\n return {\n name, value, ...parseUnparsedAttributes(unparsedAttributes)\n }\n}\n\n/**\n * Parses the remaining attributes of a set-cookie header\n * @see https://datatracker.ietf.org/doc/html/draft-ietf-httpbis-rfc6265bis#section-5.4\n * @param {string} unparsedAttributes\n * @param {[Object.]={}} cookieAttributeList\n */\nfunction parseUnparsedAttributes (unparsedAttributes, cookieAttributeList = {}) {\n // 1. If the unparsed-attributes string is empty, skip the rest of\n // these steps.\n if (unparsedAttributes.length === 0) {\n return cookieAttributeList\n }\n\n // 2. Discard the first character of the unparsed-attributes (which\n // will be a %x3B (\";\") character).\n assert(unparsedAttributes[0] === ';')\n unparsedAttributes = unparsedAttributes.slice(1)\n\n let cookieAv = ''\n\n // 3. If the remaining unparsed-attributes contains a %x3B (\";\")\n // character:\n if (unparsedAttributes.includes(';')) {\n // 1. Consume the characters of the unparsed-attributes up to, but\n // not including, the first %x3B (\";\") character.\n cookieAv = collectASequenceOfCodePointsFast(\n ';',\n unparsedAttributes,\n { position: 0 }\n )\n unparsedAttributes = unparsedAttributes.slice(cookieAv.length)\n } else {\n // Otherwise:\n\n // 1. Consume the remainder of the unparsed-attributes.\n cookieAv = unparsedAttributes\n unparsedAttributes = ''\n }\n\n // Let the cookie-av string be the characters consumed in this step.\n\n let attributeName = ''\n let attributeValue = ''\n\n // 4. If the cookie-av string contains a %x3D (\"=\") character:\n if (cookieAv.includes('=')) {\n // 1. The (possibly empty) attribute-name string consists of the\n // characters up to, but not including, the first %x3D (\"=\")\n // character, and the (possibly empty) attribute-value string\n // consists of the characters after the first %x3D (\"=\")\n // character.\n const position = { position: 0 }\n\n attributeName = collectASequenceOfCodePointsFast(\n '=',\n cookieAv,\n position\n )\n attributeValue = cookieAv.slice(position.position + 1)\n } else {\n // Otherwise:\n\n // 1. The attribute-name string consists of the entire cookie-av\n // string, and the attribute-value string is empty.\n attributeName = cookieAv\n }\n\n // 5. Remove any leading or trailing WSP characters from the attribute-\n // name string and the attribute-value string.\n attributeName = attributeName.trim()\n attributeValue = attributeValue.trim()\n\n // 6. If the attribute-value is longer than 1024 octets, ignore the\n // cookie-av string and return to Step 1 of this algorithm.\n if (attributeValue.length > maxAttributeValueSize) {\n return parseUnparsedAttributes(unparsedAttributes, cookieAttributeList)\n }\n\n // 7. Process the attribute-name and attribute-value according to the\n // requirements in the following subsections. (Notice that\n // attributes with unrecognized attribute-names are ignored.)\n const attributeNameLowercase = attributeName.toLowerCase()\n\n // https://datatracker.ietf.org/doc/html/draft-ietf-httpbis-rfc6265bis#section-5.4.1\n // If the attribute-name case-insensitively matches the string\n // \"Expires\", the user agent MUST process the cookie-av as follows.\n if (attributeNameLowercase === 'expires') {\n // 1. Let the expiry-time be the result of parsing the attribute-value\n // as cookie-date (see Section 5.1.1).\n const expiryTime = new Date(attributeValue)\n\n // 2. If the attribute-value failed to parse as a cookie date, ignore\n // the cookie-av.\n\n cookieAttributeList.expires = expiryTime\n } else if (attributeNameLowercase === 'max-age') {\n // https://datatracker.ietf.org/doc/html/draft-ietf-httpbis-rfc6265bis#section-5.4.2\n // If the attribute-name case-insensitively matches the string \"Max-\n // Age\", the user agent MUST process the cookie-av as follows.\n\n // 1. If the first character of the attribute-value is not a DIGIT or a\n // \"-\" character, ignore the cookie-av.\n const charCode = attributeValue.charCodeAt(0)\n\n if ((charCode < 48 || charCode > 57) && attributeValue[0] !== '-') {\n return parseUnparsedAttributes(unparsedAttributes, cookieAttributeList)\n }\n\n // 2. If the remainder of attribute-value contains a non-DIGIT\n // character, ignore the cookie-av.\n if (!/^\\d+$/.test(attributeValue)) {\n return parseUnparsedAttributes(unparsedAttributes, cookieAttributeList)\n }\n\n // 3. Let delta-seconds be the attribute-value converted to an integer.\n const deltaSeconds = Number(attributeValue)\n\n // 4. Let cookie-age-limit be the maximum age of the cookie (which\n // SHOULD be 400 days or less, see Section 4.1.2.2).\n\n // 5. Set delta-seconds to the smaller of its present value and cookie-\n // age-limit.\n // deltaSeconds = Math.min(deltaSeconds * 1000, maxExpiresMs)\n\n // 6. If delta-seconds is less than or equal to zero (0), let expiry-\n // time be the earliest representable date and time. Otherwise, let\n // the expiry-time be the current date and time plus delta-seconds\n // seconds.\n // const expiryTime = deltaSeconds <= 0 ? Date.now() : Date.now() + deltaSeconds\n\n // 7. Append an attribute to the cookie-attribute-list with an\n // attribute-name of Max-Age and an attribute-value of expiry-time.\n cookieAttributeList.maxAge = deltaSeconds\n } else if (attributeNameLowercase === 'domain') {\n // https://datatracker.ietf.org/doc/html/draft-ietf-httpbis-rfc6265bis#section-5.4.3\n // If the attribute-name case-insensitively matches the string \"Domain\",\n // the user agent MUST process the cookie-av as follows.\n\n // 1. Let cookie-domain be the attribute-value.\n let cookieDomain = attributeValue\n\n // 2. If cookie-domain starts with %x2E (\".\"), let cookie-domain be\n // cookie-domain without its leading %x2E (\".\").\n if (cookieDomain[0] === '.') {\n cookieDomain = cookieDomain.slice(1)\n }\n\n // 3. Convert the cookie-domain to lower case.\n cookieDomain = cookieDomain.toLowerCase()\n\n // 4. Append an attribute to the cookie-attribute-list with an\n // attribute-name of Domain and an attribute-value of cookie-domain.\n cookieAttributeList.domain = cookieDomain\n } else if (attributeNameLowercase === 'path') {\n // https://datatracker.ietf.org/doc/html/draft-ietf-httpbis-rfc6265bis#section-5.4.4\n // If the attribute-name case-insensitively matches the string \"Path\",\n // the user agent MUST process the cookie-av as follows.\n\n // 1. If the attribute-value is empty or if the first character of the\n // attribute-value is not %x2F (\"/\"):\n let cookiePath = ''\n if (attributeValue.length === 0 || attributeValue[0] !== '/') {\n // 1. Let cookie-path be the default-path.\n cookiePath = '/'\n } else {\n // Otherwise:\n\n // 1. Let cookie-path be the attribute-value.\n cookiePath = attributeValue\n }\n\n // 2. Append an attribute to the cookie-attribute-list with an\n // attribute-name of Path and an attribute-value of cookie-path.\n cookieAttributeList.path = cookiePath\n } else if (attributeNameLowercase === 'secure') {\n // https://datatracker.ietf.org/doc/html/draft-ietf-httpbis-rfc6265bis#section-5.4.5\n // If the attribute-name case-insensitively matches the string \"Secure\",\n // the user agent MUST append an attribute to the cookie-attribute-list\n // with an attribute-name of Secure and an empty attribute-value.\n\n cookieAttributeList.secure = true\n } else if (attributeNameLowercase === 'httponly') {\n // https://datatracker.ietf.org/doc/html/draft-ietf-httpbis-rfc6265bis#section-5.4.6\n // If the attribute-name case-insensitively matches the string\n // \"HttpOnly\", the user agent MUST append an attribute to the cookie-\n // attribute-list with an attribute-name of HttpOnly and an empty\n // attribute-value.\n\n cookieAttributeList.httpOnly = true\n } else if (attributeNameLowercase === 'samesite') {\n // https://datatracker.ietf.org/doc/html/draft-ietf-httpbis-rfc6265bis#section-5.4.7\n // If the attribute-name case-insensitively matches the string\n // \"SameSite\", the user agent MUST process the cookie-av as follows:\n\n // 1. Let enforcement be \"Default\".\n let enforcement = 'Default'\n\n const attributeValueLowercase = attributeValue.toLowerCase()\n // 2. If cookie-av's attribute-value is a case-insensitive match for\n // \"None\", set enforcement to \"None\".\n if (attributeValueLowercase.includes('none')) {\n enforcement = 'None'\n }\n\n // 3. If cookie-av's attribute-value is a case-insensitive match for\n // \"Strict\", set enforcement to \"Strict\".\n if (attributeValueLowercase.includes('strict')) {\n enforcement = 'Strict'\n }\n\n // 4. If cookie-av's attribute-value is a case-insensitive match for\n // \"Lax\", set enforcement to \"Lax\".\n if (attributeValueLowercase.includes('lax')) {\n enforcement = 'Lax'\n }\n\n // 5. Append an attribute to the cookie-attribute-list with an\n // attribute-name of \"SameSite\" and an attribute-value of\n // enforcement.\n cookieAttributeList.sameSite = enforcement\n } else {\n cookieAttributeList.unparsed ??= []\n\n cookieAttributeList.unparsed.push(`${attributeName}=${attributeValue}`)\n }\n\n // 8. Return to Step 1 of this algorithm.\n return parseUnparsedAttributes(unparsedAttributes, cookieAttributeList)\n}\n\nmodule.exports = {\n parseSetCookie,\n parseUnparsedAttributes\n}\n", "'use strict'\n\nconst { parseSetCookie } = require('./parse')\nconst { stringify, getHeadersList } = require('./util')\nconst { webidl } = require('../fetch/webidl')\nconst { Headers } = require('../fetch/headers')\n\n/**\n * @typedef {Object} Cookie\n * @property {string} name\n * @property {string} value\n * @property {Date|number|undefined} expires\n * @property {number|undefined} maxAge\n * @property {string|undefined} domain\n * @property {string|undefined} path\n * @property {boolean|undefined} secure\n * @property {boolean|undefined} httpOnly\n * @property {'Strict'|'Lax'|'None'} sameSite\n * @property {string[]} unparsed\n */\n\n/**\n * @param {Headers} headers\n * @returns {Record}\n */\nfunction getCookies (headers) {\n webidl.argumentLengthCheck(arguments, 1, { header: 'getCookies' })\n\n webidl.brandCheck(headers, Headers, { strict: false })\n\n const cookie = headers.get('cookie')\n const out = {}\n\n if (!cookie) {\n return out\n }\n\n for (const piece of cookie.split(';')) {\n const [name, ...value] = piece.split('=')\n\n out[name.trim()] = value.join('=')\n }\n\n return out\n}\n\n/**\n * @param {Headers} headers\n * @param {string} name\n * @param {{ path?: string, domain?: string }|undefined} attributes\n * @returns {void}\n */\nfunction deleteCookie (headers, name, attributes) {\n webidl.argumentLengthCheck(arguments, 2, { header: 'deleteCookie' })\n\n webidl.brandCheck(headers, Headers, { strict: false })\n\n name = webidl.converters.DOMString(name)\n attributes = webidl.converters.DeleteCookieAttributes(attributes)\n\n // Matches behavior of\n // https://github.com/denoland/deno_std/blob/63827b16330b82489a04614027c33b7904e08be5/http/cookie.ts#L278\n setCookie(headers, {\n name,\n value: '',\n expires: new Date(0),\n ...attributes\n })\n}\n\n/**\n * @param {Headers} headers\n * @returns {Cookie[]}\n */\nfunction getSetCookies (headers) {\n webidl.argumentLengthCheck(arguments, 1, { header: 'getSetCookies' })\n\n webidl.brandCheck(headers, Headers, { strict: false })\n\n const cookies = getHeadersList(headers).cookies\n\n if (!cookies) {\n return []\n }\n\n // In older versions of undici, cookies is a list of name:value.\n return cookies.map((pair) => parseSetCookie(Array.isArray(pair) ? pair[1] : pair))\n}\n\n/**\n * @param {Headers} headers\n * @param {Cookie} cookie\n * @returns {void}\n */\nfunction setCookie (headers, cookie) {\n webidl.argumentLengthCheck(arguments, 2, { header: 'setCookie' })\n\n webidl.brandCheck(headers, Headers, { strict: false })\n\n cookie = webidl.converters.Cookie(cookie)\n\n const str = stringify(cookie)\n\n if (str) {\n headers.append('Set-Cookie', stringify(cookie))\n }\n}\n\nwebidl.converters.DeleteCookieAttributes = webidl.dictionaryConverter([\n {\n converter: webidl.nullableConverter(webidl.converters.DOMString),\n key: 'path',\n defaultValue: null\n },\n {\n converter: webidl.nullableConverter(webidl.converters.DOMString),\n key: 'domain',\n defaultValue: null\n }\n])\n\nwebidl.converters.Cookie = webidl.dictionaryConverter([\n {\n converter: webidl.converters.DOMString,\n key: 'name'\n },\n {\n converter: webidl.converters.DOMString,\n key: 'value'\n },\n {\n converter: webidl.nullableConverter((value) => {\n if (typeof value === 'number') {\n return webidl.converters['unsigned long long'](value)\n }\n\n return new Date(value)\n }),\n key: 'expires',\n defaultValue: null\n },\n {\n converter: webidl.nullableConverter(webidl.converters['long long']),\n key: 'maxAge',\n defaultValue: null\n },\n {\n converter: webidl.nullableConverter(webidl.converters.DOMString),\n key: 'domain',\n defaultValue: null\n },\n {\n converter: webidl.nullableConverter(webidl.converters.DOMString),\n key: 'path',\n defaultValue: null\n },\n {\n converter: webidl.nullableConverter(webidl.converters.boolean),\n key: 'secure',\n defaultValue: null\n },\n {\n converter: webidl.nullableConverter(webidl.converters.boolean),\n key: 'httpOnly',\n defaultValue: null\n },\n {\n converter: webidl.converters.USVString,\n key: 'sameSite',\n allowedValues: ['Strict', 'Lax', 'None']\n },\n {\n converter: webidl.sequenceConverter(webidl.converters.DOMString),\n key: 'unparsed',\n defaultValue: []\n }\n])\n\nmodule.exports = {\n getCookies,\n deleteCookie,\n getSetCookies,\n setCookie\n}\n", "'use strict'\n\n// This is a Globally Unique Identifier unique used\n// to validate that the endpoint accepts websocket\n// connections.\n// See https://www.rfc-editor.org/rfc/rfc6455.html#section-1.3\nconst uid = '258EAFA5-E914-47DA-95CA-C5AB0DC85B11'\n\n/** @type {PropertyDescriptor} */\nconst staticPropertyDescriptors = {\n enumerable: true,\n writable: false,\n configurable: false\n}\n\nconst states = {\n CONNECTING: 0,\n OPEN: 1,\n CLOSING: 2,\n CLOSED: 3\n}\n\nconst opcodes = {\n CONTINUATION: 0x0,\n TEXT: 0x1,\n BINARY: 0x2,\n CLOSE: 0x8,\n PING: 0x9,\n PONG: 0xA\n}\n\nconst maxUnsigned16Bit = 2 ** 16 - 1 // 65535\n\nconst parserStates = {\n INFO: 0,\n PAYLOADLENGTH_16: 2,\n PAYLOADLENGTH_64: 3,\n READ_DATA: 4\n}\n\nconst emptyBuffer = Buffer.allocUnsafe(0)\n\nmodule.exports = {\n uid,\n staticPropertyDescriptors,\n states,\n opcodes,\n maxUnsigned16Bit,\n parserStates,\n emptyBuffer\n}\n", "'use strict'\n\nmodule.exports = {\n kWebSocketURL: Symbol('url'),\n kReadyState: Symbol('ready state'),\n kController: Symbol('controller'),\n kResponse: Symbol('response'),\n kBinaryType: Symbol('binary type'),\n kSentClose: Symbol('sent close'),\n kReceivedClose: Symbol('received close'),\n kByteParser: Symbol('byte parser')\n}\n", "'use strict'\n\nconst { webidl } = require('../fetch/webidl')\nconst { kEnumerableProperty } = require('../core/util')\nconst { MessagePort } = require('worker_threads')\n\n/**\n * @see https://html.spec.whatwg.org/multipage/comms.html#messageevent\n */\nclass MessageEvent extends Event {\n #eventInit\n\n constructor (type, eventInitDict = {}) {\n webidl.argumentLengthCheck(arguments, 1, { header: 'MessageEvent constructor' })\n\n type = webidl.converters.DOMString(type)\n eventInitDict = webidl.converters.MessageEventInit(eventInitDict)\n\n super(type, eventInitDict)\n\n this.#eventInit = eventInitDict\n }\n\n get data () {\n webidl.brandCheck(this, MessageEvent)\n\n return this.#eventInit.data\n }\n\n get origin () {\n webidl.brandCheck(this, MessageEvent)\n\n return this.#eventInit.origin\n }\n\n get lastEventId () {\n webidl.brandCheck(this, MessageEvent)\n\n return this.#eventInit.lastEventId\n }\n\n get source () {\n webidl.brandCheck(this, MessageEvent)\n\n return this.#eventInit.source\n }\n\n get ports () {\n webidl.brandCheck(this, MessageEvent)\n\n if (!Object.isFrozen(this.#eventInit.ports)) {\n Object.freeze(this.#eventInit.ports)\n }\n\n return this.#eventInit.ports\n }\n\n initMessageEvent (\n type,\n bubbles = false,\n cancelable = false,\n data = null,\n origin = '',\n lastEventId = '',\n source = null,\n ports = []\n ) {\n webidl.brandCheck(this, MessageEvent)\n\n webidl.argumentLengthCheck(arguments, 1, { header: 'MessageEvent.initMessageEvent' })\n\n return new MessageEvent(type, {\n bubbles, cancelable, data, origin, lastEventId, source, ports\n })\n }\n}\n\n/**\n * @see https://websockets.spec.whatwg.org/#the-closeevent-interface\n */\nclass CloseEvent extends Event {\n #eventInit\n\n constructor (type, eventInitDict = {}) {\n webidl.argumentLengthCheck(arguments, 1, { header: 'CloseEvent constructor' })\n\n type = webidl.converters.DOMString(type)\n eventInitDict = webidl.converters.CloseEventInit(eventInitDict)\n\n super(type, eventInitDict)\n\n this.#eventInit = eventInitDict\n }\n\n get wasClean () {\n webidl.brandCheck(this, CloseEvent)\n\n return this.#eventInit.wasClean\n }\n\n get code () {\n webidl.brandCheck(this, CloseEvent)\n\n return this.#eventInit.code\n }\n\n get reason () {\n webidl.brandCheck(this, CloseEvent)\n\n return this.#eventInit.reason\n }\n}\n\n// https://html.spec.whatwg.org/multipage/webappapis.html#the-errorevent-interface\nclass ErrorEvent extends Event {\n #eventInit\n\n constructor (type, eventInitDict) {\n webidl.argumentLengthCheck(arguments, 1, { header: 'ErrorEvent constructor' })\n\n super(type, eventInitDict)\n\n type = webidl.converters.DOMString(type)\n eventInitDict = webidl.converters.ErrorEventInit(eventInitDict ?? {})\n\n this.#eventInit = eventInitDict\n }\n\n get message () {\n webidl.brandCheck(this, ErrorEvent)\n\n return this.#eventInit.message\n }\n\n get filename () {\n webidl.brandCheck(this, ErrorEvent)\n\n return this.#eventInit.filename\n }\n\n get lineno () {\n webidl.brandCheck(this, ErrorEvent)\n\n return this.#eventInit.lineno\n }\n\n get colno () {\n webidl.brandCheck(this, ErrorEvent)\n\n return this.#eventInit.colno\n }\n\n get error () {\n webidl.brandCheck(this, ErrorEvent)\n\n return this.#eventInit.error\n }\n}\n\nObject.defineProperties(MessageEvent.prototype, {\n [Symbol.toStringTag]: {\n value: 'MessageEvent',\n configurable: true\n },\n data: kEnumerableProperty,\n origin: kEnumerableProperty,\n lastEventId: kEnumerableProperty,\n source: kEnumerableProperty,\n ports: kEnumerableProperty,\n initMessageEvent: kEnumerableProperty\n})\n\nObject.defineProperties(CloseEvent.prototype, {\n [Symbol.toStringTag]: {\n value: 'CloseEvent',\n configurable: true\n },\n reason: kEnumerableProperty,\n code: kEnumerableProperty,\n wasClean: kEnumerableProperty\n})\n\nObject.defineProperties(ErrorEvent.prototype, {\n [Symbol.toStringTag]: {\n value: 'ErrorEvent',\n configurable: true\n },\n message: kEnumerableProperty,\n filename: kEnumerableProperty,\n lineno: kEnumerableProperty,\n colno: kEnumerableProperty,\n error: kEnumerableProperty\n})\n\nwebidl.converters.MessagePort = webidl.interfaceConverter(MessagePort)\n\nwebidl.converters['sequence'] = webidl.sequenceConverter(\n webidl.converters.MessagePort\n)\n\nconst eventInit = [\n {\n key: 'bubbles',\n converter: webidl.converters.boolean,\n defaultValue: false\n },\n {\n key: 'cancelable',\n converter: webidl.converters.boolean,\n defaultValue: false\n },\n {\n key: 'composed',\n converter: webidl.converters.boolean,\n defaultValue: false\n }\n]\n\nwebidl.converters.MessageEventInit = webidl.dictionaryConverter([\n ...eventInit,\n {\n key: 'data',\n converter: webidl.converters.any,\n defaultValue: null\n },\n {\n key: 'origin',\n converter: webidl.converters.USVString,\n defaultValue: ''\n },\n {\n key: 'lastEventId',\n converter: webidl.converters.DOMString,\n defaultValue: ''\n },\n {\n key: 'source',\n // Node doesn't implement WindowProxy or ServiceWorker, so the only\n // valid value for source is a MessagePort.\n converter: webidl.nullableConverter(webidl.converters.MessagePort),\n defaultValue: null\n },\n {\n key: 'ports',\n converter: webidl.converters['sequence'],\n get defaultValue () {\n return []\n }\n }\n])\n\nwebidl.converters.CloseEventInit = webidl.dictionaryConverter([\n ...eventInit,\n {\n key: 'wasClean',\n converter: webidl.converters.boolean,\n defaultValue: false\n },\n {\n key: 'code',\n converter: webidl.converters['unsigned short'],\n defaultValue: 0\n },\n {\n key: 'reason',\n converter: webidl.converters.USVString,\n defaultValue: ''\n }\n])\n\nwebidl.converters.ErrorEventInit = webidl.dictionaryConverter([\n ...eventInit,\n {\n key: 'message',\n converter: webidl.converters.DOMString,\n defaultValue: ''\n },\n {\n key: 'filename',\n converter: webidl.converters.USVString,\n defaultValue: ''\n },\n {\n key: 'lineno',\n converter: webidl.converters['unsigned long'],\n defaultValue: 0\n },\n {\n key: 'colno',\n converter: webidl.converters['unsigned long'],\n defaultValue: 0\n },\n {\n key: 'error',\n converter: webidl.converters.any\n }\n])\n\nmodule.exports = {\n MessageEvent,\n CloseEvent,\n ErrorEvent\n}\n", "'use strict'\n\nconst { kReadyState, kController, kResponse, kBinaryType, kWebSocketURL } = require('./symbols')\nconst { states, opcodes } = require('./constants')\nconst { MessageEvent, ErrorEvent } = require('./events')\n\n/* globals Blob */\n\n/**\n * @param {import('./websocket').WebSocket} ws\n */\nfunction isEstablished (ws) {\n // If the server's response is validated as provided for above, it is\n // said that _The WebSocket Connection is Established_ and that the\n // WebSocket Connection is in the OPEN state.\n return ws[kReadyState] === states.OPEN\n}\n\n/**\n * @param {import('./websocket').WebSocket} ws\n */\nfunction isClosing (ws) {\n // Upon either sending or receiving a Close control frame, it is said\n // that _The WebSocket Closing Handshake is Started_ and that the\n // WebSocket connection is in the CLOSING state.\n return ws[kReadyState] === states.CLOSING\n}\n\n/**\n * @param {import('./websocket').WebSocket} ws\n */\nfunction isClosed (ws) {\n return ws[kReadyState] === states.CLOSED\n}\n\n/**\n * @see https://dom.spec.whatwg.org/#concept-event-fire\n * @param {string} e\n * @param {EventTarget} target\n * @param {EventInit | undefined} eventInitDict\n */\nfunction fireEvent (e, target, eventConstructor = Event, eventInitDict) {\n // 1. If eventConstructor is not given, then let eventConstructor be Event.\n\n // 2. Let event be the result of creating an event given eventConstructor,\n // in the relevant realm of target.\n // 3. Initialize event\u2019s type attribute to e.\n const event = new eventConstructor(e, eventInitDict) // eslint-disable-line new-cap\n\n // 4. Initialize any other IDL attributes of event as described in the\n // invocation of this algorithm.\n\n // 5. Return the result of dispatching event at target, with legacy target\n // override flag set if set.\n target.dispatchEvent(event)\n}\n\n/**\n * @see https://websockets.spec.whatwg.org/#feedback-from-the-protocol\n * @param {import('./websocket').WebSocket} ws\n * @param {number} type Opcode\n * @param {Buffer} data application data\n */\nfunction websocketMessageReceived (ws, type, data) {\n // 1. If ready state is not OPEN (1), then return.\n if (ws[kReadyState] !== states.OPEN) {\n return\n }\n\n // 2. Let dataForEvent be determined by switching on type and binary type:\n let dataForEvent\n\n if (type === opcodes.TEXT) {\n // -> type indicates that the data is Text\n // a new DOMString containing data\n try {\n dataForEvent = new TextDecoder('utf-8', { fatal: true }).decode(data)\n } catch {\n failWebsocketConnection(ws, 'Received invalid UTF-8 in text frame.')\n return\n }\n } else if (type === opcodes.BINARY) {\n if (ws[kBinaryType] === 'blob') {\n // -> type indicates that the data is Binary and binary type is \"blob\"\n // a new Blob object, created in the relevant Realm of the WebSocket\n // object, that represents data as its raw data\n dataForEvent = new Blob([data])\n } else {\n // -> type indicates that the data is Binary and binary type is \"arraybuffer\"\n // a new ArrayBuffer object, created in the relevant Realm of the\n // WebSocket object, whose contents are data\n dataForEvent = new Uint8Array(data).buffer\n }\n }\n\n // 3. Fire an event named message at the WebSocket object, using MessageEvent,\n // with the origin attribute initialized to the serialization of the WebSocket\n // object\u2019s url's origin, and the data attribute initialized to dataForEvent.\n fireEvent('message', ws, MessageEvent, {\n origin: ws[kWebSocketURL].origin,\n data: dataForEvent\n })\n}\n\n/**\n * @see https://datatracker.ietf.org/doc/html/rfc6455\n * @see https://datatracker.ietf.org/doc/html/rfc2616\n * @see https://bugs.chromium.org/p/chromium/issues/detail?id=398407\n * @param {string} protocol\n */\nfunction isValidSubprotocol (protocol) {\n // If present, this value indicates one\n // or more comma-separated subprotocol the client wishes to speak,\n // ordered by preference. The elements that comprise this value\n // MUST be non-empty strings with characters in the range U+0021 to\n // U+007E not including separator characters as defined in\n // [RFC2616] and MUST all be unique strings.\n if (protocol.length === 0) {\n return false\n }\n\n for (const char of protocol) {\n const code = char.charCodeAt(0)\n\n if (\n code < 0x21 ||\n code > 0x7E ||\n char === '(' ||\n char === ')' ||\n char === '<' ||\n char === '>' ||\n char === '@' ||\n char === ',' ||\n char === ';' ||\n char === ':' ||\n char === '\\\\' ||\n char === '\"' ||\n char === '/' ||\n char === '[' ||\n char === ']' ||\n char === '?' ||\n char === '=' ||\n char === '{' ||\n char === '}' ||\n code === 32 || // SP\n code === 9 // HT\n ) {\n return false\n }\n }\n\n return true\n}\n\n/**\n * @see https://datatracker.ietf.org/doc/html/rfc6455#section-7-4\n * @param {number} code\n */\nfunction isValidStatusCode (code) {\n if (code >= 1000 && code < 1015) {\n return (\n code !== 1004 && // reserved\n code !== 1005 && // \"MUST NOT be set as a status code\"\n code !== 1006 // \"MUST NOT be set as a status code\"\n )\n }\n\n return code >= 3000 && code <= 4999\n}\n\n/**\n * @param {import('./websocket').WebSocket} ws\n * @param {string|undefined} reason\n */\nfunction failWebsocketConnection (ws, reason) {\n const { [kController]: controller, [kResponse]: response } = ws\n\n controller.abort()\n\n if (response?.socket && !response.socket.destroyed) {\n response.socket.destroy()\n }\n\n if (reason) {\n fireEvent('error', ws, ErrorEvent, {\n error: new Error(reason)\n })\n }\n}\n\nmodule.exports = {\n isEstablished,\n isClosing,\n isClosed,\n fireEvent,\n isValidSubprotocol,\n isValidStatusCode,\n failWebsocketConnection,\n websocketMessageReceived\n}\n", "'use strict'\n\nconst diagnosticsChannel = require('diagnostics_channel')\nconst { uid, states } = require('./constants')\nconst {\n kReadyState,\n kSentClose,\n kByteParser,\n kReceivedClose\n} = require('./symbols')\nconst { fireEvent, failWebsocketConnection } = require('./util')\nconst { CloseEvent } = require('./events')\nconst { makeRequest } = require('../fetch/request')\nconst { fetching } = require('../fetch/index')\nconst { Headers } = require('../fetch/headers')\nconst { getGlobalDispatcher } = require('../global')\nconst { kHeadersList } = require('../core/symbols')\n\nconst channels = {}\nchannels.open = diagnosticsChannel.channel('undici:websocket:open')\nchannels.close = diagnosticsChannel.channel('undici:websocket:close')\nchannels.socketError = diagnosticsChannel.channel('undici:websocket:socket_error')\n\n/** @type {import('crypto')} */\nlet crypto\ntry {\n crypto = require('crypto')\n} catch {\n\n}\n\n/**\n * @see https://websockets.spec.whatwg.org/#concept-websocket-establish\n * @param {URL} url\n * @param {string|string[]} protocols\n * @param {import('./websocket').WebSocket} ws\n * @param {(response: any) => void} onEstablish\n * @param {Partial} options\n */\nfunction establishWebSocketConnection (url, protocols, ws, onEstablish, options) {\n // 1. Let requestURL be a copy of url, with its scheme set to \"http\", if url\u2019s\n // scheme is \"ws\", and to \"https\" otherwise.\n const requestURL = url\n\n requestURL.protocol = url.protocol === 'ws:' ? 'http:' : 'https:'\n\n // 2. Let request be a new request, whose URL is requestURL, client is client,\n // service-workers mode is \"none\", referrer is \"no-referrer\", mode is\n // \"websocket\", credentials mode is \"include\", cache mode is \"no-store\" ,\n // and redirect mode is \"error\".\n const request = makeRequest({\n urlList: [requestURL],\n serviceWorkers: 'none',\n referrer: 'no-referrer',\n mode: 'websocket',\n credentials: 'include',\n cache: 'no-store',\n redirect: 'error'\n })\n\n // Note: undici extension, allow setting custom headers.\n if (options.headers) {\n const headersList = new Headers(options.headers)[kHeadersList]\n\n request.headersList = headersList\n }\n\n // 3. Append (`Upgrade`, `websocket`) to request\u2019s header list.\n // 4. Append (`Connection`, `Upgrade`) to request\u2019s header list.\n // Note: both of these are handled by undici currently.\n // https://github.com/nodejs/undici/blob/68c269c4144c446f3f1220951338daef4a6b5ec4/lib/client.js#L1397\n\n // 5. Let keyValue be a nonce consisting of a randomly selected\n // 16-byte value that has been forgiving-base64-encoded and\n // isomorphic encoded.\n const keyValue = crypto.randomBytes(16).toString('base64')\n\n // 6. Append (`Sec-WebSocket-Key`, keyValue) to request\u2019s\n // header list.\n request.headersList.append('sec-websocket-key', keyValue)\n\n // 7. Append (`Sec-WebSocket-Version`, `13`) to request\u2019s\n // header list.\n request.headersList.append('sec-websocket-version', '13')\n\n // 8. For each protocol in protocols, combine\n // (`Sec-WebSocket-Protocol`, protocol) in request\u2019s header\n // list.\n for (const protocol of protocols) {\n request.headersList.append('sec-websocket-protocol', protocol)\n }\n\n // 9. Let permessageDeflate be a user-agent defined\n // \"permessage-deflate\" extension header value.\n // https://github.com/mozilla/gecko-dev/blob/ce78234f5e653a5d3916813ff990f053510227bc/netwerk/protocol/websocket/WebSocketChannel.cpp#L2673\n // TODO: enable once permessage-deflate is supported\n const permessageDeflate = '' // 'permessage-deflate; 15'\n\n // 10. Append (`Sec-WebSocket-Extensions`, permessageDeflate) to\n // request\u2019s header list.\n // request.headersList.append('sec-websocket-extensions', permessageDeflate)\n\n // 11. Fetch request with useParallelQueue set to true, and\n // processResponse given response being these steps:\n const controller = fetching({\n request,\n useParallelQueue: true,\n dispatcher: options.dispatcher ?? getGlobalDispatcher(),\n processResponse (response) {\n // 1. If response is a network error or its status is not 101,\n // fail the WebSocket connection.\n if (response.type === 'error' || response.status !== 101) {\n failWebsocketConnection(ws, 'Received network error or non-101 status code.')\n return\n }\n\n // 2. If protocols is not the empty list and extracting header\n // list values given `Sec-WebSocket-Protocol` and response\u2019s\n // header list results in null, failure, or the empty byte\n // sequence, then fail the WebSocket connection.\n if (protocols.length !== 0 && !response.headersList.get('Sec-WebSocket-Protocol')) {\n failWebsocketConnection(ws, 'Server did not respond with sent protocols.')\n return\n }\n\n // 3. Follow the requirements stated step 2 to step 6, inclusive,\n // of the last set of steps in section 4.1 of The WebSocket\n // Protocol to validate response. This either results in fail\n // the WebSocket connection or the WebSocket connection is\n // established.\n\n // 2. If the response lacks an |Upgrade| header field or the |Upgrade|\n // header field contains a value that is not an ASCII case-\n // insensitive match for the value \"websocket\", the client MUST\n // _Fail the WebSocket Connection_.\n if (response.headersList.get('Upgrade')?.toLowerCase() !== 'websocket') {\n failWebsocketConnection(ws, 'Server did not set Upgrade header to \"websocket\".')\n return\n }\n\n // 3. If the response lacks a |Connection| header field or the\n // |Connection| header field doesn't contain a token that is an\n // ASCII case-insensitive match for the value \"Upgrade\", the client\n // MUST _Fail the WebSocket Connection_.\n if (response.headersList.get('Connection')?.toLowerCase() !== 'upgrade') {\n failWebsocketConnection(ws, 'Server did not set Connection header to \"upgrade\".')\n return\n }\n\n // 4. If the response lacks a |Sec-WebSocket-Accept| header field or\n // the |Sec-WebSocket-Accept| contains a value other than the\n // base64-encoded SHA-1 of the concatenation of the |Sec-WebSocket-\n // Key| (as a string, not base64-decoded) with the string \"258EAFA5-\n // E914-47DA-95CA-C5AB0DC85B11\" but ignoring any leading and\n // trailing whitespace, the client MUST _Fail the WebSocket\n // Connection_.\n const secWSAccept = response.headersList.get('Sec-WebSocket-Accept')\n const digest = crypto.createHash('sha1').update(keyValue + uid).digest('base64')\n if (secWSAccept !== digest) {\n failWebsocketConnection(ws, 'Incorrect hash received in Sec-WebSocket-Accept header.')\n return\n }\n\n // 5. If the response includes a |Sec-WebSocket-Extensions| header\n // field and this header field indicates the use of an extension\n // that was not present in the client's handshake (the server has\n // indicated an extension not requested by the client), the client\n // MUST _Fail the WebSocket Connection_. (The parsing of this\n // header field to determine which extensions are requested is\n // discussed in Section 9.1.)\n const secExtension = response.headersList.get('Sec-WebSocket-Extensions')\n\n if (secExtension !== null && secExtension !== permessageDeflate) {\n failWebsocketConnection(ws, 'Received different permessage-deflate than the one set.')\n return\n }\n\n // 6. If the response includes a |Sec-WebSocket-Protocol| header field\n // and this header field indicates the use of a subprotocol that was\n // not present in the client's handshake (the server has indicated a\n // subprotocol not requested by the client), the client MUST _Fail\n // the WebSocket Connection_.\n const secProtocol = response.headersList.get('Sec-WebSocket-Protocol')\n\n if (secProtocol !== null && secProtocol !== request.headersList.get('Sec-WebSocket-Protocol')) {\n failWebsocketConnection(ws, 'Protocol was not set in the opening handshake.')\n return\n }\n\n response.socket.on('data', onSocketData)\n response.socket.on('close', onSocketClose)\n response.socket.on('error', onSocketError)\n\n if (channels.open.hasSubscribers) {\n channels.open.publish({\n address: response.socket.address(),\n protocol: secProtocol,\n extensions: secExtension\n })\n }\n\n onEstablish(response)\n }\n })\n\n return controller\n}\n\n/**\n * @param {Buffer} chunk\n */\nfunction onSocketData (chunk) {\n if (!this.ws[kByteParser].write(chunk)) {\n this.pause()\n }\n}\n\n/**\n * @see https://websockets.spec.whatwg.org/#feedback-from-the-protocol\n * @see https://datatracker.ietf.org/doc/html/rfc6455#section-7.1.4\n */\nfunction onSocketClose () {\n const { ws } = this\n\n // If the TCP connection was closed after the\n // WebSocket closing handshake was completed, the WebSocket connection\n // is said to have been closed _cleanly_.\n const wasClean = ws[kSentClose] && ws[kReceivedClose]\n\n let code = 1005\n let reason = ''\n\n const result = ws[kByteParser].closingInfo\n\n if (result) {\n code = result.code ?? 1005\n reason = result.reason\n } else if (!ws[kSentClose]) {\n // If _The WebSocket\n // Connection is Closed_ and no Close control frame was received by the\n // endpoint (such as could occur if the underlying transport connection\n // is lost), _The WebSocket Connection Close Code_ is considered to be\n // 1006.\n code = 1006\n }\n\n // 1. Change the ready state to CLOSED (3).\n ws[kReadyState] = states.CLOSED\n\n // 2. If the user agent was required to fail the WebSocket\n // connection, or if the WebSocket connection was closed\n // after being flagged as full, fire an event named error\n // at the WebSocket object.\n // TODO\n\n // 3. Fire an event named close at the WebSocket object,\n // using CloseEvent, with the wasClean attribute\n // initialized to true if the connection closed cleanly\n // and false otherwise, the code attribute initialized to\n // the WebSocket connection close code, and the reason\n // attribute initialized to the result of applying UTF-8\n // decode without BOM to the WebSocket connection close\n // reason.\n fireEvent('close', ws, CloseEvent, {\n wasClean, code, reason\n })\n\n if (channels.close.hasSubscribers) {\n channels.close.publish({\n websocket: ws,\n code,\n reason\n })\n }\n}\n\nfunction onSocketError (error) {\n const { ws } = this\n\n ws[kReadyState] = states.CLOSING\n\n if (channels.socketError.hasSubscribers) {\n channels.socketError.publish(error)\n }\n\n this.destroy()\n}\n\nmodule.exports = {\n establishWebSocketConnection\n}\n", "'use strict'\n\nconst { maxUnsigned16Bit } = require('./constants')\n\n/** @type {import('crypto')} */\nlet crypto\ntry {\n crypto = require('crypto')\n} catch {\n\n}\n\nclass WebsocketFrameSend {\n /**\n * @param {Buffer|undefined} data\n */\n constructor (data) {\n this.frameData = data\n this.maskKey = crypto.randomBytes(4)\n }\n\n createFrame (opcode) {\n const bodyLength = this.frameData?.byteLength ?? 0\n\n /** @type {number} */\n let payloadLength = bodyLength // 0-125\n let offset = 6\n\n if (bodyLength > maxUnsigned16Bit) {\n offset += 8 // payload length is next 8 bytes\n payloadLength = 127\n } else if (bodyLength > 125) {\n offset += 2 // payload length is next 2 bytes\n payloadLength = 126\n }\n\n const buffer = Buffer.allocUnsafe(bodyLength + offset)\n\n // Clear first 2 bytes, everything else is overwritten\n buffer[0] = buffer[1] = 0\n buffer[0] |= 0x80 // FIN\n buffer[0] = (buffer[0] & 0xF0) + opcode // opcode\n\n /*! ws. MIT License. Einar Otto Stangvik */\n buffer[offset - 4] = this.maskKey[0]\n buffer[offset - 3] = this.maskKey[1]\n buffer[offset - 2] = this.maskKey[2]\n buffer[offset - 1] = this.maskKey[3]\n\n buffer[1] = payloadLength\n\n if (payloadLength === 126) {\n buffer.writeUInt16BE(bodyLength, 2)\n } else if (payloadLength === 127) {\n // Clear extended payload length\n buffer[2] = buffer[3] = 0\n buffer.writeUIntBE(bodyLength, 4, 6)\n }\n\n buffer[1] |= 0x80 // MASK\n\n // mask body\n for (let i = 0; i < bodyLength; i++) {\n buffer[offset + i] = this.frameData[i] ^ this.maskKey[i % 4]\n }\n\n return buffer\n }\n}\n\nmodule.exports = {\n WebsocketFrameSend\n}\n", "'use strict'\n\nconst { Writable } = require('stream')\nconst diagnosticsChannel = require('diagnostics_channel')\nconst { parserStates, opcodes, states, emptyBuffer } = require('./constants')\nconst { kReadyState, kSentClose, kResponse, kReceivedClose } = require('./symbols')\nconst { isValidStatusCode, failWebsocketConnection, websocketMessageReceived } = require('./util')\nconst { WebsocketFrameSend } = require('./frame')\n\n// This code was influenced by ws released under the MIT license.\n// Copyright (c) 2011 Einar Otto Stangvik \n// Copyright (c) 2013 Arnout Kazemier and contributors\n// Copyright (c) 2016 Luigi Pinca and contributors\n\nconst channels = {}\nchannels.ping = diagnosticsChannel.channel('undici:websocket:ping')\nchannels.pong = diagnosticsChannel.channel('undici:websocket:pong')\n\nclass ByteParser extends Writable {\n #buffers = []\n #byteOffset = 0\n\n #state = parserStates.INFO\n\n #info = {}\n #fragments = []\n\n constructor (ws) {\n super()\n\n this.ws = ws\n }\n\n /**\n * @param {Buffer} chunk\n * @param {() => void} callback\n */\n _write (chunk, _, callback) {\n this.#buffers.push(chunk)\n this.#byteOffset += chunk.length\n\n this.run(callback)\n }\n\n /**\n * Runs whenever a new chunk is received.\n * Callback is called whenever there are no more chunks buffering,\n * or not enough bytes are buffered to parse.\n */\n run (callback) {\n while (true) {\n if (this.#state === parserStates.INFO) {\n // If there aren't enough bytes to parse the payload length, etc.\n if (this.#byteOffset < 2) {\n return callback()\n }\n\n const buffer = this.consume(2)\n\n this.#info.fin = (buffer[0] & 0x80) !== 0\n this.#info.opcode = buffer[0] & 0x0F\n\n // If we receive a fragmented message, we use the type of the first\n // frame to parse the full message as binary/text, when it's terminated\n this.#info.originalOpcode ??= this.#info.opcode\n\n this.#info.fragmented = !this.#info.fin && this.#info.opcode !== opcodes.CONTINUATION\n\n if (this.#info.fragmented && this.#info.opcode !== opcodes.BINARY && this.#info.opcode !== opcodes.TEXT) {\n // Only text and binary frames can be fragmented\n failWebsocketConnection(this.ws, 'Invalid frame type was fragmented.')\n return\n }\n\n const payloadLength = buffer[1] & 0x7F\n\n if (payloadLength <= 125) {\n this.#info.payloadLength = payloadLength\n this.#state = parserStates.READ_DATA\n } else if (payloadLength === 126) {\n this.#state = parserStates.PAYLOADLENGTH_16\n } else if (payloadLength === 127) {\n this.#state = parserStates.PAYLOADLENGTH_64\n }\n\n if (this.#info.fragmented && payloadLength > 125) {\n // A fragmented frame can't be fragmented itself\n failWebsocketConnection(this.ws, 'Fragmented frame exceeded 125 bytes.')\n return\n } else if (\n (this.#info.opcode === opcodes.PING ||\n this.#info.opcode === opcodes.PONG ||\n this.#info.opcode === opcodes.CLOSE) &&\n payloadLength > 125\n ) {\n // Control frames can have a payload length of 125 bytes MAX\n failWebsocketConnection(this.ws, 'Payload length for control frame exceeded 125 bytes.')\n return\n } else if (this.#info.opcode === opcodes.CLOSE) {\n if (payloadLength === 1) {\n failWebsocketConnection(this.ws, 'Received close frame with a 1-byte body.')\n return\n }\n\n const body = this.consume(payloadLength)\n\n this.#info.closeInfo = this.parseCloseBody(false, body)\n\n if (!this.ws[kSentClose]) {\n // If an endpoint receives a Close frame and did not previously send a\n // Close frame, the endpoint MUST send a Close frame in response. (When\n // sending a Close frame in response, the endpoint typically echos the\n // status code it received.)\n const body = Buffer.allocUnsafe(2)\n body.writeUInt16BE(this.#info.closeInfo.code, 0)\n const closeFrame = new WebsocketFrameSend(body)\n\n this.ws[kResponse].socket.write(\n closeFrame.createFrame(opcodes.CLOSE),\n (err) => {\n if (!err) {\n this.ws[kSentClose] = true\n }\n }\n )\n }\n\n // Upon either sending or receiving a Close control frame, it is said\n // that _The WebSocket Closing Handshake is Started_ and that the\n // WebSocket connection is in the CLOSING state.\n this.ws[kReadyState] = states.CLOSING\n this.ws[kReceivedClose] = true\n\n this.end()\n\n return\n } else if (this.#info.opcode === opcodes.PING) {\n // Upon receipt of a Ping frame, an endpoint MUST send a Pong frame in\n // response, unless it already received a Close frame.\n // A Pong frame sent in response to a Ping frame must have identical\n // \"Application data\"\n\n const body = this.consume(payloadLength)\n\n if (!this.ws[kReceivedClose]) {\n const frame = new WebsocketFrameSend(body)\n\n this.ws[kResponse].socket.write(frame.createFrame(opcodes.PONG))\n\n if (channels.ping.hasSubscribers) {\n channels.ping.publish({\n payload: body\n })\n }\n }\n\n this.#state = parserStates.INFO\n\n if (this.#byteOffset > 0) {\n continue\n } else {\n callback()\n return\n }\n } else if (this.#info.opcode === opcodes.PONG) {\n // A Pong frame MAY be sent unsolicited. This serves as a\n // unidirectional heartbeat. A response to an unsolicited Pong frame is\n // not expected.\n\n const body = this.consume(payloadLength)\n\n if (channels.pong.hasSubscribers) {\n channels.pong.publish({\n payload: body\n })\n }\n\n if (this.#byteOffset > 0) {\n continue\n } else {\n callback()\n return\n }\n }\n } else if (this.#state === parserStates.PAYLOADLENGTH_16) {\n if (this.#byteOffset < 2) {\n return callback()\n }\n\n const buffer = this.consume(2)\n\n this.#info.payloadLength = buffer.readUInt16BE(0)\n this.#state = parserStates.READ_DATA\n } else if (this.#state === parserStates.PAYLOADLENGTH_64) {\n if (this.#byteOffset < 8) {\n return callback()\n }\n\n const buffer = this.consume(8)\n const upper = buffer.readUInt32BE(0)\n\n // 2^31 is the maxinimum bytes an arraybuffer can contain\n // on 32-bit systems. Although, on 64-bit systems, this is\n // 2^53-1 bytes.\n // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Errors/Invalid_array_length\n // https://source.chromium.org/chromium/chromium/src/+/main:v8/src/common/globals.h;drc=1946212ac0100668f14eb9e2843bdd846e510a1e;bpv=1;bpt=1;l=1275\n // https://source.chromium.org/chromium/chromium/src/+/main:v8/src/objects/js-array-buffer.h;l=34;drc=1946212ac0100668f14eb9e2843bdd846e510a1e\n if (upper > 2 ** 31 - 1) {\n failWebsocketConnection(this.ws, 'Received payload length > 2^31 bytes.')\n return\n }\n\n const lower = buffer.readUInt32BE(4)\n\n this.#info.payloadLength = (upper << 8) + lower\n this.#state = parserStates.READ_DATA\n } else if (this.#state === parserStates.READ_DATA) {\n if (this.#byteOffset < this.#info.payloadLength) {\n // If there is still more data in this chunk that needs to be read\n return callback()\n } else if (this.#byteOffset >= this.#info.payloadLength) {\n // If the server sent multiple frames in a single chunk\n\n const body = this.consume(this.#info.payloadLength)\n\n this.#fragments.push(body)\n\n // If the frame is unfragmented, or a fragmented frame was terminated,\n // a message was received\n if (!this.#info.fragmented || (this.#info.fin && this.#info.opcode === opcodes.CONTINUATION)) {\n const fullMessage = Buffer.concat(this.#fragments)\n\n websocketMessageReceived(this.ws, this.#info.originalOpcode, fullMessage)\n\n this.#info = {}\n this.#fragments.length = 0\n }\n\n this.#state = parserStates.INFO\n }\n }\n\n if (this.#byteOffset > 0) {\n continue\n } else {\n callback()\n break\n }\n }\n }\n\n /**\n * Take n bytes from the buffered Buffers\n * @param {number} n\n * @returns {Buffer|null}\n */\n consume (n) {\n if (n > this.#byteOffset) {\n return null\n } else if (n === 0) {\n return emptyBuffer\n }\n\n if (this.#buffers[0].length === n) {\n this.#byteOffset -= this.#buffers[0].length\n return this.#buffers.shift()\n }\n\n const buffer = Buffer.allocUnsafe(n)\n let offset = 0\n\n while (offset !== n) {\n const next = this.#buffers[0]\n const { length } = next\n\n if (length + offset === n) {\n buffer.set(this.#buffers.shift(), offset)\n break\n } else if (length + offset > n) {\n buffer.set(next.subarray(0, n - offset), offset)\n this.#buffers[0] = next.subarray(n - offset)\n break\n } else {\n buffer.set(this.#buffers.shift(), offset)\n offset += next.length\n }\n }\n\n this.#byteOffset -= n\n\n return buffer\n }\n\n parseCloseBody (onlyCode, data) {\n // https://datatracker.ietf.org/doc/html/rfc6455#section-7.1.5\n /** @type {number|undefined} */\n let code\n\n if (data.length >= 2) {\n // _The WebSocket Connection Close Code_ is\n // defined as the status code (Section 7.4) contained in the first Close\n // control frame received by the application\n code = data.readUInt16BE(0)\n }\n\n if (onlyCode) {\n if (!isValidStatusCode(code)) {\n return null\n }\n\n return { code }\n }\n\n // https://datatracker.ietf.org/doc/html/rfc6455#section-7.1.6\n /** @type {Buffer} */\n let reason = data.subarray(2)\n\n // Remove BOM\n if (reason[0] === 0xEF && reason[1] === 0xBB && reason[2] === 0xBF) {\n reason = reason.subarray(3)\n }\n\n if (code !== undefined && !isValidStatusCode(code)) {\n return null\n }\n\n try {\n // TODO: optimize this\n reason = new TextDecoder('utf-8', { fatal: true }).decode(reason)\n } catch {\n return null\n }\n\n return { code, reason }\n }\n\n get closingInfo () {\n return this.#info.closeInfo\n }\n}\n\nmodule.exports = {\n ByteParser\n}\n", "'use strict'\n\nconst { webidl } = require('../fetch/webidl')\nconst { DOMException } = require('../fetch/constants')\nconst { URLSerializer } = require('../fetch/dataURL')\nconst { getGlobalOrigin } = require('../fetch/global')\nconst { staticPropertyDescriptors, states, opcodes, emptyBuffer } = require('./constants')\nconst {\n kWebSocketURL,\n kReadyState,\n kController,\n kBinaryType,\n kResponse,\n kSentClose,\n kByteParser\n} = require('./symbols')\nconst { isEstablished, isClosing, isValidSubprotocol, failWebsocketConnection, fireEvent } = require('./util')\nconst { establishWebSocketConnection } = require('./connection')\nconst { WebsocketFrameSend } = require('./frame')\nconst { ByteParser } = require('./receiver')\nconst { kEnumerableProperty, isBlobLike } = require('../core/util')\nconst { getGlobalDispatcher } = require('../global')\nconst { types } = require('util')\n\nlet experimentalWarned = false\n\n// https://websockets.spec.whatwg.org/#interface-definition\nclass WebSocket extends EventTarget {\n #events = {\n open: null,\n error: null,\n close: null,\n message: null\n }\n\n #bufferedAmount = 0\n #protocol = ''\n #extensions = ''\n\n /**\n * @param {string} url\n * @param {string|string[]} protocols\n */\n constructor (url, protocols = []) {\n super()\n\n webidl.argumentLengthCheck(arguments, 1, { header: 'WebSocket constructor' })\n\n if (!experimentalWarned) {\n experimentalWarned = true\n process.emitWarning('WebSockets are experimental, expect them to change at any time.', {\n code: 'UNDICI-WS'\n })\n }\n\n const options = webidl.converters['DOMString or sequence or WebSocketInit'](protocols)\n\n url = webidl.converters.USVString(url)\n protocols = options.protocols\n\n // 1. Let baseURL be this's relevant settings object's API base URL.\n const baseURL = getGlobalOrigin()\n\n // 1. Let urlRecord be the result of applying the URL parser to url with baseURL.\n let urlRecord\n\n try {\n urlRecord = new URL(url, baseURL)\n } catch (e) {\n // 3. If urlRecord is failure, then throw a \"SyntaxError\" DOMException.\n throw new DOMException(e, 'SyntaxError')\n }\n\n // 4. If urlRecord\u2019s scheme is \"http\", then set urlRecord\u2019s scheme to \"ws\".\n if (urlRecord.protocol === 'http:') {\n urlRecord.protocol = 'ws:'\n } else if (urlRecord.protocol === 'https:') {\n // 5. Otherwise, if urlRecord\u2019s scheme is \"https\", set urlRecord\u2019s scheme to \"wss\".\n urlRecord.protocol = 'wss:'\n }\n\n // 6. If urlRecord\u2019s scheme is not \"ws\" or \"wss\", then throw a \"SyntaxError\" DOMException.\n if (urlRecord.protocol !== 'ws:' && urlRecord.protocol !== 'wss:') {\n throw new DOMException(\n `Expected a ws: or wss: protocol, got ${urlRecord.protocol}`,\n 'SyntaxError'\n )\n }\n\n // 7. If urlRecord\u2019s fragment is non-null, then throw a \"SyntaxError\"\n // DOMException.\n if (urlRecord.hash || urlRecord.href.endsWith('#')) {\n throw new DOMException('Got fragment', 'SyntaxError')\n }\n\n // 8. If protocols is a string, set protocols to a sequence consisting\n // of just that string.\n if (typeof protocols === 'string') {\n protocols = [protocols]\n }\n\n // 9. If any of the values in protocols occur more than once or otherwise\n // fail to match the requirements for elements that comprise the value\n // of `Sec-WebSocket-Protocol` fields as defined by The WebSocket\n // protocol, then throw a \"SyntaxError\" DOMException.\n if (protocols.length !== new Set(protocols.map(p => p.toLowerCase())).size) {\n throw new DOMException('Invalid Sec-WebSocket-Protocol value', 'SyntaxError')\n }\n\n if (protocols.length > 0 && !protocols.every(p => isValidSubprotocol(p))) {\n throw new DOMException('Invalid Sec-WebSocket-Protocol value', 'SyntaxError')\n }\n\n // 10. Set this's url to urlRecord.\n this[kWebSocketURL] = new URL(urlRecord.href)\n\n // 11. Let client be this's relevant settings object.\n\n // 12. Run this step in parallel:\n\n // 1. Establish a WebSocket connection given urlRecord, protocols,\n // and client.\n this[kController] = establishWebSocketConnection(\n urlRecord,\n protocols,\n this,\n (response) => this.#onConnectionEstablished(response),\n options\n )\n\n // Each WebSocket object has an associated ready state, which is a\n // number representing the state of the connection. Initially it must\n // be CONNECTING (0).\n this[kReadyState] = WebSocket.CONNECTING\n\n // The extensions attribute must initially return the empty string.\n\n // The protocol attribute must initially return the empty string.\n\n // Each WebSocket object has an associated binary type, which is a\n // BinaryType. Initially it must be \"blob\".\n this[kBinaryType] = 'blob'\n }\n\n /**\n * @see https://websockets.spec.whatwg.org/#dom-websocket-close\n * @param {number|undefined} code\n * @param {string|undefined} reason\n */\n close (code = undefined, reason = undefined) {\n webidl.brandCheck(this, WebSocket)\n\n if (code !== undefined) {\n code = webidl.converters['unsigned short'](code, { clamp: true })\n }\n\n if (reason !== undefined) {\n reason = webidl.converters.USVString(reason)\n }\n\n // 1. If code is present, but is neither an integer equal to 1000 nor an\n // integer in the range 3000 to 4999, inclusive, throw an\n // \"InvalidAccessError\" DOMException.\n if (code !== undefined) {\n if (code !== 1000 && (code < 3000 || code > 4999)) {\n throw new DOMException('invalid code', 'InvalidAccessError')\n }\n }\n\n let reasonByteLength = 0\n\n // 2. If reason is present, then run these substeps:\n if (reason !== undefined) {\n // 1. Let reasonBytes be the result of encoding reason.\n // 2. If reasonBytes is longer than 123 bytes, then throw a\n // \"SyntaxError\" DOMException.\n reasonByteLength = Buffer.byteLength(reason)\n\n if (reasonByteLength > 123) {\n throw new DOMException(\n `Reason must be less than 123 bytes; received ${reasonByteLength}`,\n 'SyntaxError'\n )\n }\n }\n\n // 3. Run the first matching steps from the following list:\n if (this[kReadyState] === WebSocket.CLOSING || this[kReadyState] === WebSocket.CLOSED) {\n // If this's ready state is CLOSING (2) or CLOSED (3)\n // Do nothing.\n } else if (!isEstablished(this)) {\n // If the WebSocket connection is not yet established\n // Fail the WebSocket connection and set this's ready state\n // to CLOSING (2).\n failWebsocketConnection(this, 'Connection was closed before it was established.')\n this[kReadyState] = WebSocket.CLOSING\n } else if (!isClosing(this)) {\n // If the WebSocket closing handshake has not yet been started\n // Start the WebSocket closing handshake and set this's ready\n // state to CLOSING (2).\n // - If neither code nor reason is present, the WebSocket Close\n // message must not have a body.\n // - If code is present, then the status code to use in the\n // WebSocket Close message must be the integer given by code.\n // - If reason is also present, then reasonBytes must be\n // provided in the Close message after the status code.\n\n const frame = new WebsocketFrameSend()\n\n // If neither code nor reason is present, the WebSocket Close\n // message must not have a body.\n\n // If code is present, then the status code to use in the\n // WebSocket Close message must be the integer given by code.\n if (code !== undefined && reason === undefined) {\n frame.frameData = Buffer.allocUnsafe(2)\n frame.frameData.writeUInt16BE(code, 0)\n } else if (code !== undefined && reason !== undefined) {\n // If reason is also present, then reasonBytes must be\n // provided in the Close message after the status code.\n frame.frameData = Buffer.allocUnsafe(2 + reasonByteLength)\n frame.frameData.writeUInt16BE(code, 0)\n // the body MAY contain UTF-8-encoded data with value /reason/\n frame.frameData.write(reason, 2, 'utf-8')\n } else {\n frame.frameData = emptyBuffer\n }\n\n /** @type {import('stream').Duplex} */\n const socket = this[kResponse].socket\n\n socket.write(frame.createFrame(opcodes.CLOSE), (err) => {\n if (!err) {\n this[kSentClose] = true\n }\n })\n\n // Upon either sending or receiving a Close control frame, it is said\n // that _The WebSocket Closing Handshake is Started_ and that the\n // WebSocket connection is in the CLOSING state.\n this[kReadyState] = states.CLOSING\n } else {\n // Otherwise\n // Set this's ready state to CLOSING (2).\n this[kReadyState] = WebSocket.CLOSING\n }\n }\n\n /**\n * @see https://websockets.spec.whatwg.org/#dom-websocket-send\n * @param {NodeJS.TypedArray|ArrayBuffer|Blob|string} data\n */\n send (data) {\n webidl.brandCheck(this, WebSocket)\n\n webidl.argumentLengthCheck(arguments, 1, { header: 'WebSocket.send' })\n\n data = webidl.converters.WebSocketSendData(data)\n\n // 1. If this's ready state is CONNECTING, then throw an\n // \"InvalidStateError\" DOMException.\n if (this[kReadyState] === WebSocket.CONNECTING) {\n throw new DOMException('Sent before connected.', 'InvalidStateError')\n }\n\n // 2. Run the appropriate set of steps from the following list:\n // https://datatracker.ietf.org/doc/html/rfc6455#section-6.1\n // https://datatracker.ietf.org/doc/html/rfc6455#section-5.2\n\n if (!isEstablished(this) || isClosing(this)) {\n return\n }\n\n /** @type {import('stream').Duplex} */\n const socket = this[kResponse].socket\n\n // If data is a string\n if (typeof data === 'string') {\n // If the WebSocket connection is established and the WebSocket\n // closing handshake has not yet started, then the user agent\n // must send a WebSocket Message comprised of the data argument\n // using a text frame opcode; if the data cannot be sent, e.g.\n // because it would need to be buffered but the buffer is full,\n // the user agent must flag the WebSocket as full and then close\n // the WebSocket connection. Any invocation of this method with a\n // string argument that does not throw an exception must increase\n // the bufferedAmount attribute by the number of bytes needed to\n // express the argument as UTF-8.\n\n const value = Buffer.from(data)\n const frame = new WebsocketFrameSend(value)\n const buffer = frame.createFrame(opcodes.TEXT)\n\n this.#bufferedAmount += value.byteLength\n socket.write(buffer, () => {\n this.#bufferedAmount -= value.byteLength\n })\n } else if (types.isArrayBuffer(data)) {\n // If the WebSocket connection is established, and the WebSocket\n // closing handshake has not yet started, then the user agent must\n // send a WebSocket Message comprised of data using a binary frame\n // opcode; if the data cannot be sent, e.g. because it would need\n // to be buffered but the buffer is full, the user agent must flag\n // the WebSocket as full and then close the WebSocket connection.\n // The data to be sent is the data stored in the buffer described\n // by the ArrayBuffer object. Any invocation of this method with an\n // ArrayBuffer argument that does not throw an exception must\n // increase the bufferedAmount attribute by the length of the\n // ArrayBuffer in bytes.\n\n const value = Buffer.from(data)\n const frame = new WebsocketFrameSend(value)\n const buffer = frame.createFrame(opcodes.BINARY)\n\n this.#bufferedAmount += value.byteLength\n socket.write(buffer, () => {\n this.#bufferedAmount -= value.byteLength\n })\n } else if (ArrayBuffer.isView(data)) {\n // If the WebSocket connection is established, and the WebSocket\n // closing handshake has not yet started, then the user agent must\n // send a WebSocket Message comprised of data using a binary frame\n // opcode; if the data cannot be sent, e.g. because it would need to\n // be buffered but the buffer is full, the user agent must flag the\n // WebSocket as full and then close the WebSocket connection. The\n // data to be sent is the data stored in the section of the buffer\n // described by the ArrayBuffer object that data references. Any\n // invocation of this method with this kind of argument that does\n // not throw an exception must increase the bufferedAmount attribute\n // by the length of data\u2019s buffer in bytes.\n\n const ab = Buffer.from(data, data.byteOffset, data.byteLength)\n\n const frame = new WebsocketFrameSend(ab)\n const buffer = frame.createFrame(opcodes.BINARY)\n\n this.#bufferedAmount += ab.byteLength\n socket.write(buffer, () => {\n this.#bufferedAmount -= ab.byteLength\n })\n } else if (isBlobLike(data)) {\n // If the WebSocket connection is established, and the WebSocket\n // closing handshake has not yet started, then the user agent must\n // send a WebSocket Message comprised of data using a binary frame\n // opcode; if the data cannot be sent, e.g. because it would need to\n // be buffered but the buffer is full, the user agent must flag the\n // WebSocket as full and then close the WebSocket connection. The data\n // to be sent is the raw data represented by the Blob object. Any\n // invocation of this method with a Blob argument that does not throw\n // an exception must increase the bufferedAmount attribute by the size\n // of the Blob object\u2019s raw data, in bytes.\n\n const frame = new WebsocketFrameSend()\n\n data.arrayBuffer().then((ab) => {\n const value = Buffer.from(ab)\n frame.frameData = value\n const buffer = frame.createFrame(opcodes.BINARY)\n\n this.#bufferedAmount += value.byteLength\n socket.write(buffer, () => {\n this.#bufferedAmount -= value.byteLength\n })\n })\n }\n }\n\n get readyState () {\n webidl.brandCheck(this, WebSocket)\n\n // The readyState getter steps are to return this's ready state.\n return this[kReadyState]\n }\n\n get bufferedAmount () {\n webidl.brandCheck(this, WebSocket)\n\n return this.#bufferedAmount\n }\n\n get url () {\n webidl.brandCheck(this, WebSocket)\n\n // The url getter steps are to return this's url, serialized.\n return URLSerializer(this[kWebSocketURL])\n }\n\n get extensions () {\n webidl.brandCheck(this, WebSocket)\n\n return this.#extensions\n }\n\n get protocol () {\n webidl.brandCheck(this, WebSocket)\n\n return this.#protocol\n }\n\n get onopen () {\n webidl.brandCheck(this, WebSocket)\n\n return this.#events.open\n }\n\n set onopen (fn) {\n webidl.brandCheck(this, WebSocket)\n\n if (this.#events.open) {\n this.removeEventListener('open', this.#events.open)\n }\n\n if (typeof fn === 'function') {\n this.#events.open = fn\n this.addEventListener('open', fn)\n } else {\n this.#events.open = null\n }\n }\n\n get onerror () {\n webidl.brandCheck(this, WebSocket)\n\n return this.#events.error\n }\n\n set onerror (fn) {\n webidl.brandCheck(this, WebSocket)\n\n if (this.#events.error) {\n this.removeEventListener('error', this.#events.error)\n }\n\n if (typeof fn === 'function') {\n this.#events.error = fn\n this.addEventListener('error', fn)\n } else {\n this.#events.error = null\n }\n }\n\n get onclose () {\n webidl.brandCheck(this, WebSocket)\n\n return this.#events.close\n }\n\n set onclose (fn) {\n webidl.brandCheck(this, WebSocket)\n\n if (this.#events.close) {\n this.removeEventListener('close', this.#events.close)\n }\n\n if (typeof fn === 'function') {\n this.#events.close = fn\n this.addEventListener('close', fn)\n } else {\n this.#events.close = null\n }\n }\n\n get onmessage () {\n webidl.brandCheck(this, WebSocket)\n\n return this.#events.message\n }\n\n set onmessage (fn) {\n webidl.brandCheck(this, WebSocket)\n\n if (this.#events.message) {\n this.removeEventListener('message', this.#events.message)\n }\n\n if (typeof fn === 'function') {\n this.#events.message = fn\n this.addEventListener('message', fn)\n } else {\n this.#events.message = null\n }\n }\n\n get binaryType () {\n webidl.brandCheck(this, WebSocket)\n\n return this[kBinaryType]\n }\n\n set binaryType (type) {\n webidl.brandCheck(this, WebSocket)\n\n if (type !== 'blob' && type !== 'arraybuffer') {\n this[kBinaryType] = 'blob'\n } else {\n this[kBinaryType] = type\n }\n }\n\n /**\n * @see https://websockets.spec.whatwg.org/#feedback-from-the-protocol\n */\n #onConnectionEstablished (response) {\n // processResponse is called when the \"response\u2019s header list has been received and initialized.\"\n // once this happens, the connection is open\n this[kResponse] = response\n\n const parser = new ByteParser(this)\n parser.on('drain', function onParserDrain () {\n this.ws[kResponse].socket.resume()\n })\n\n response.socket.ws = this\n this[kByteParser] = parser\n\n // 1. Change the ready state to OPEN (1).\n this[kReadyState] = states.OPEN\n\n // 2. Change the extensions attribute\u2019s value to the extensions in use, if\n // it is not the null value.\n // https://datatracker.ietf.org/doc/html/rfc6455#section-9.1\n const extensions = response.headersList.get('sec-websocket-extensions')\n\n if (extensions !== null) {\n this.#extensions = extensions\n }\n\n // 3. Change the protocol attribute\u2019s value to the subprotocol in use, if\n // it is not the null value.\n // https://datatracker.ietf.org/doc/html/rfc6455#section-1.9\n const protocol = response.headersList.get('sec-websocket-protocol')\n\n if (protocol !== null) {\n this.#protocol = protocol\n }\n\n // 4. Fire an event named open at the WebSocket object.\n fireEvent('open', this)\n }\n}\n\n// https://websockets.spec.whatwg.org/#dom-websocket-connecting\nWebSocket.CONNECTING = WebSocket.prototype.CONNECTING = states.CONNECTING\n// https://websockets.spec.whatwg.org/#dom-websocket-open\nWebSocket.OPEN = WebSocket.prototype.OPEN = states.OPEN\n// https://websockets.spec.whatwg.org/#dom-websocket-closing\nWebSocket.CLOSING = WebSocket.prototype.CLOSING = states.CLOSING\n// https://websockets.spec.whatwg.org/#dom-websocket-closed\nWebSocket.CLOSED = WebSocket.prototype.CLOSED = states.CLOSED\n\nObject.defineProperties(WebSocket.prototype, {\n CONNECTING: staticPropertyDescriptors,\n OPEN: staticPropertyDescriptors,\n CLOSING: staticPropertyDescriptors,\n CLOSED: staticPropertyDescriptors,\n url: kEnumerableProperty,\n readyState: kEnumerableProperty,\n bufferedAmount: kEnumerableProperty,\n onopen: kEnumerableProperty,\n onerror: kEnumerableProperty,\n onclose: kEnumerableProperty,\n close: kEnumerableProperty,\n onmessage: kEnumerableProperty,\n binaryType: kEnumerableProperty,\n send: kEnumerableProperty,\n extensions: kEnumerableProperty,\n protocol: kEnumerableProperty,\n [Symbol.toStringTag]: {\n value: 'WebSocket',\n writable: false,\n enumerable: false,\n configurable: true\n }\n})\n\nObject.defineProperties(WebSocket, {\n CONNECTING: staticPropertyDescriptors,\n OPEN: staticPropertyDescriptors,\n CLOSING: staticPropertyDescriptors,\n CLOSED: staticPropertyDescriptors\n})\n\nwebidl.converters['sequence'] = webidl.sequenceConverter(\n webidl.converters.DOMString\n)\n\nwebidl.converters['DOMString or sequence'] = function (V) {\n if (webidl.util.Type(V) === 'Object' && Symbol.iterator in V) {\n return webidl.converters['sequence'](V)\n }\n\n return webidl.converters.DOMString(V)\n}\n\n// This implements the propsal made in https://github.com/whatwg/websockets/issues/42\nwebidl.converters.WebSocketInit = webidl.dictionaryConverter([\n {\n key: 'protocols',\n converter: webidl.converters['DOMString or sequence'],\n get defaultValue () {\n return []\n }\n },\n {\n key: 'dispatcher',\n converter: (V) => V,\n get defaultValue () {\n return getGlobalDispatcher()\n }\n },\n {\n key: 'headers',\n converter: webidl.nullableConverter(webidl.converters.HeadersInit)\n }\n])\n\nwebidl.converters['DOMString or sequence or WebSocketInit'] = function (V) {\n if (webidl.util.Type(V) === 'Object' && !(Symbol.iterator in V)) {\n return webidl.converters.WebSocketInit(V)\n }\n\n return { protocols: webidl.converters['DOMString or sequence'](V) }\n}\n\nwebidl.converters.WebSocketSendData = function (V) {\n if (webidl.util.Type(V) === 'Object') {\n if (isBlobLike(V)) {\n return webidl.converters.Blob(V, { strict: false })\n }\n\n if (ArrayBuffer.isView(V) || types.isAnyArrayBuffer(V)) {\n return webidl.converters.BufferSource(V)\n }\n }\n\n return webidl.converters.USVString(V)\n}\n\nmodule.exports = {\n WebSocket\n}\n", "'use strict'\n\nconst Client = require('./lib/client')\nconst Dispatcher = require('./lib/dispatcher')\nconst errors = require('./lib/core/errors')\nconst Pool = require('./lib/pool')\nconst BalancedPool = require('./lib/balanced-pool')\nconst Agent = require('./lib/agent')\nconst util = require('./lib/core/util')\nconst { InvalidArgumentError } = errors\nconst api = require('./lib/api')\nconst buildConnector = require('./lib/core/connect')\nconst MockClient = require('./lib/mock/mock-client')\nconst MockAgent = require('./lib/mock/mock-agent')\nconst MockPool = require('./lib/mock/mock-pool')\nconst mockErrors = require('./lib/mock/mock-errors')\nconst ProxyAgent = require('./lib/proxy-agent')\nconst RetryHandler = require('./lib/handler/RetryHandler')\nconst { getGlobalDispatcher, setGlobalDispatcher } = require('./lib/global')\nconst DecoratorHandler = require('./lib/handler/DecoratorHandler')\nconst RedirectHandler = require('./lib/handler/RedirectHandler')\nconst createRedirectInterceptor = require('./lib/interceptor/redirectInterceptor')\n\nlet hasCrypto\ntry {\n require('crypto')\n hasCrypto = true\n} catch {\n hasCrypto = false\n}\n\nObject.assign(Dispatcher.prototype, api)\n\nmodule.exports.Dispatcher = Dispatcher\nmodule.exports.Client = Client\nmodule.exports.Pool = Pool\nmodule.exports.BalancedPool = BalancedPool\nmodule.exports.Agent = Agent\nmodule.exports.ProxyAgent = ProxyAgent\nmodule.exports.RetryHandler = RetryHandler\n\nmodule.exports.DecoratorHandler = DecoratorHandler\nmodule.exports.RedirectHandler = RedirectHandler\nmodule.exports.createRedirectInterceptor = createRedirectInterceptor\n\nmodule.exports.buildConnector = buildConnector\nmodule.exports.errors = errors\n\nfunction makeDispatcher (fn) {\n return (url, opts, handler) => {\n if (typeof opts === 'function') {\n handler = opts\n opts = null\n }\n\n if (!url || (typeof url !== 'string' && typeof url !== 'object' && !(url instanceof URL))) {\n throw new InvalidArgumentError('invalid url')\n }\n\n if (opts != null && typeof opts !== 'object') {\n throw new InvalidArgumentError('invalid opts')\n }\n\n if (opts && opts.path != null) {\n if (typeof opts.path !== 'string') {\n throw new InvalidArgumentError('invalid opts.path')\n }\n\n let path = opts.path\n if (!opts.path.startsWith('/')) {\n path = `/${path}`\n }\n\n url = new URL(util.parseOrigin(url).origin + path)\n } else {\n if (!opts) {\n opts = typeof url === 'object' ? url : {}\n }\n\n url = util.parseURL(url)\n }\n\n const { agent, dispatcher = getGlobalDispatcher() } = opts\n\n if (agent) {\n throw new InvalidArgumentError('unsupported opts.agent. Did you mean opts.client?')\n }\n\n return fn.call(dispatcher, {\n ...opts,\n origin: url.origin,\n path: url.search ? `${url.pathname}${url.search}` : url.pathname,\n method: opts.method || (opts.body ? 'PUT' : 'GET')\n }, handler)\n }\n}\n\nmodule.exports.setGlobalDispatcher = setGlobalDispatcher\nmodule.exports.getGlobalDispatcher = getGlobalDispatcher\n\nif (util.nodeMajor > 16 || (util.nodeMajor === 16 && util.nodeMinor >= 8)) {\n let fetchImpl = null\n module.exports.fetch = async function fetch (resource) {\n if (!fetchImpl) {\n fetchImpl = require('./lib/fetch').fetch\n }\n\n try {\n return await fetchImpl(...arguments)\n } catch (err) {\n if (typeof err === 'object') {\n Error.captureStackTrace(err, this)\n }\n\n throw err\n }\n }\n module.exports.Headers = require('./lib/fetch/headers').Headers\n module.exports.Response = require('./lib/fetch/response').Response\n module.exports.Request = require('./lib/fetch/request').Request\n module.exports.FormData = require('./lib/fetch/formdata').FormData\n module.exports.File = require('./lib/fetch/file').File\n module.exports.FileReader = require('./lib/fileapi/filereader').FileReader\n\n const { setGlobalOrigin, getGlobalOrigin } = require('./lib/fetch/global')\n\n module.exports.setGlobalOrigin = setGlobalOrigin\n module.exports.getGlobalOrigin = getGlobalOrigin\n\n const { CacheStorage } = require('./lib/cache/cachestorage')\n const { kConstruct } = require('./lib/cache/symbols')\n\n // Cache & CacheStorage are tightly coupled with fetch. Even if it may run\n // in an older version of Node, it doesn't have any use without fetch.\n module.exports.caches = new CacheStorage(kConstruct)\n}\n\nif (util.nodeMajor >= 16) {\n const { deleteCookie, getCookies, getSetCookies, setCookie } = require('./lib/cookies')\n\n module.exports.deleteCookie = deleteCookie\n module.exports.getCookies = getCookies\n module.exports.getSetCookies = getSetCookies\n module.exports.setCookie = setCookie\n\n const { parseMIMEType, serializeAMimeType } = require('./lib/fetch/dataURL')\n\n module.exports.parseMIMEType = parseMIMEType\n module.exports.serializeAMimeType = serializeAMimeType\n}\n\nif (util.nodeMajor >= 18 && hasCrypto) {\n const { WebSocket } = require('./lib/websocket/websocket')\n\n module.exports.WebSocket = WebSocket\n}\n\nmodule.exports.request = makeDispatcher(api.request)\nmodule.exports.stream = makeDispatcher(api.stream)\nmodule.exports.pipeline = makeDispatcher(api.pipeline)\nmodule.exports.connect = makeDispatcher(api.connect)\nmodule.exports.upgrade = makeDispatcher(api.upgrade)\n\nmodule.exports.MockClient = MockClient\nmodule.exports.MockPool = MockPool\nmodule.exports.MockAgent = MockAgent\nmodule.exports.mockErrors = mockErrors\n", null, null, null, null, null, null, null, null, null, null, null, "'use strict';\n\nconst ALIAS = Symbol.for('yaml.alias');\nconst DOC = Symbol.for('yaml.document');\nconst MAP = Symbol.for('yaml.map');\nconst PAIR = Symbol.for('yaml.pair');\nconst SCALAR = Symbol.for('yaml.scalar');\nconst SEQ = Symbol.for('yaml.seq');\nconst NODE_TYPE = Symbol.for('yaml.node.type');\nconst isAlias = (node) => !!node && typeof node === 'object' && node[NODE_TYPE] === ALIAS;\nconst isDocument = (node) => !!node && typeof node === 'object' && node[NODE_TYPE] === DOC;\nconst isMap = (node) => !!node && typeof node === 'object' && node[NODE_TYPE] === MAP;\nconst isPair = (node) => !!node && typeof node === 'object' && node[NODE_TYPE] === PAIR;\nconst isScalar = (node) => !!node && typeof node === 'object' && node[NODE_TYPE] === SCALAR;\nconst isSeq = (node) => !!node && typeof node === 'object' && node[NODE_TYPE] === SEQ;\nfunction isCollection(node) {\n if (node && typeof node === 'object')\n switch (node[NODE_TYPE]) {\n case MAP:\n case SEQ:\n return true;\n }\n return false;\n}\nfunction isNode(node) {\n if (node && typeof node === 'object')\n switch (node[NODE_TYPE]) {\n case ALIAS:\n case MAP:\n case SCALAR:\n case SEQ:\n return true;\n }\n return false;\n}\nconst hasAnchor = (node) => (isScalar(node) || isCollection(node)) && !!node.anchor;\n\nexports.ALIAS = ALIAS;\nexports.DOC = DOC;\nexports.MAP = MAP;\nexports.NODE_TYPE = NODE_TYPE;\nexports.PAIR = PAIR;\nexports.SCALAR = SCALAR;\nexports.SEQ = SEQ;\nexports.hasAnchor = hasAnchor;\nexports.isAlias = isAlias;\nexports.isCollection = isCollection;\nexports.isDocument = isDocument;\nexports.isMap = isMap;\nexports.isNode = isNode;\nexports.isPair = isPair;\nexports.isScalar = isScalar;\nexports.isSeq = isSeq;\n", "'use strict';\n\nvar identity = require('./nodes/identity.js');\n\nconst BREAK = Symbol('break visit');\nconst SKIP = Symbol('skip children');\nconst REMOVE = Symbol('remove node');\n/**\n * Apply a visitor to an AST node or document.\n *\n * Walks through the tree (depth-first) starting from `node`, calling a\n * `visitor` function with three arguments:\n * - `key`: For sequence values and map `Pair`, the node's index in the\n * collection. Within a `Pair`, `'key'` or `'value'`, correspondingly.\n * `null` for the root node.\n * - `node`: The current node.\n * - `path`: The ancestry of the current node.\n *\n * The return value of the visitor may be used to control the traversal:\n * - `undefined` (default): Do nothing and continue\n * - `visit.SKIP`: Do not visit the children of this node, continue with next\n * sibling\n * - `visit.BREAK`: Terminate traversal completely\n * - `visit.REMOVE`: Remove the current node, then continue with the next one\n * - `Node`: Replace the current node, then continue by visiting it\n * - `number`: While iterating the items of a sequence or map, set the index\n * of the next step. This is useful especially if the index of the current\n * node has changed.\n *\n * If `visitor` is a single function, it will be called with all values\n * encountered in the tree, including e.g. `null` values. Alternatively,\n * separate visitor functions may be defined for each `Map`, `Pair`, `Seq`,\n * `Alias` and `Scalar` node. To define the same visitor function for more than\n * one node type, use the `Collection` (map and seq), `Value` (map, seq & scalar)\n * and `Node` (alias, map, seq & scalar) targets. Of all these, only the most\n * specific defined one will be used for each node.\n */\nfunction visit(node, visitor) {\n const visitor_ = initVisitor(visitor);\n if (identity.isDocument(node)) {\n const cd = visit_(null, node.contents, visitor_, Object.freeze([node]));\n if (cd === REMOVE)\n node.contents = null;\n }\n else\n visit_(null, node, visitor_, Object.freeze([]));\n}\n// Without the `as symbol` casts, TS declares these in the `visit`\n// namespace using `var`, but then complains about that because\n// `unique symbol` must be `const`.\n/** Terminate visit traversal completely */\nvisit.BREAK = BREAK;\n/** Do not visit the children of the current node */\nvisit.SKIP = SKIP;\n/** Remove the current node */\nvisit.REMOVE = REMOVE;\nfunction visit_(key, node, visitor, path) {\n const ctrl = callVisitor(key, node, visitor, path);\n if (identity.isNode(ctrl) || identity.isPair(ctrl)) {\n replaceNode(key, path, ctrl);\n return visit_(key, ctrl, visitor, path);\n }\n if (typeof ctrl !== 'symbol') {\n if (identity.isCollection(node)) {\n path = Object.freeze(path.concat(node));\n for (let i = 0; i < node.items.length; ++i) {\n const ci = visit_(i, node.items[i], visitor, path);\n if (typeof ci === 'number')\n i = ci - 1;\n else if (ci === BREAK)\n return BREAK;\n else if (ci === REMOVE) {\n node.items.splice(i, 1);\n i -= 1;\n }\n }\n }\n else if (identity.isPair(node)) {\n path = Object.freeze(path.concat(node));\n const ck = visit_('key', node.key, visitor, path);\n if (ck === BREAK)\n return BREAK;\n else if (ck === REMOVE)\n node.key = null;\n const cv = visit_('value', node.value, visitor, path);\n if (cv === BREAK)\n return BREAK;\n else if (cv === REMOVE)\n node.value = null;\n }\n }\n return ctrl;\n}\n/**\n * Apply an async visitor to an AST node or document.\n *\n * Walks through the tree (depth-first) starting from `node`, calling a\n * `visitor` function with three arguments:\n * - `key`: For sequence values and map `Pair`, the node's index in the\n * collection. Within a `Pair`, `'key'` or `'value'`, correspondingly.\n * `null` for the root node.\n * - `node`: The current node.\n * - `path`: The ancestry of the current node.\n *\n * The return value of the visitor may be used to control the traversal:\n * - `Promise`: Must resolve to one of the following values\n * - `undefined` (default): Do nothing and continue\n * - `visit.SKIP`: Do not visit the children of this node, continue with next\n * sibling\n * - `visit.BREAK`: Terminate traversal completely\n * - `visit.REMOVE`: Remove the current node, then continue with the next one\n * - `Node`: Replace the current node, then continue by visiting it\n * - `number`: While iterating the items of a sequence or map, set the index\n * of the next step. This is useful especially if the index of the current\n * node has changed.\n *\n * If `visitor` is a single function, it will be called with all values\n * encountered in the tree, including e.g. `null` values. Alternatively,\n * separate visitor functions may be defined for each `Map`, `Pair`, `Seq`,\n * `Alias` and `Scalar` node. To define the same visitor function for more than\n * one node type, use the `Collection` (map and seq), `Value` (map, seq & scalar)\n * and `Node` (alias, map, seq & scalar) targets. Of all these, only the most\n * specific defined one will be used for each node.\n */\nasync function visitAsync(node, visitor) {\n const visitor_ = initVisitor(visitor);\n if (identity.isDocument(node)) {\n const cd = await visitAsync_(null, node.contents, visitor_, Object.freeze([node]));\n if (cd === REMOVE)\n node.contents = null;\n }\n else\n await visitAsync_(null, node, visitor_, Object.freeze([]));\n}\n// Without the `as symbol` casts, TS declares these in the `visit`\n// namespace using `var`, but then complains about that because\n// `unique symbol` must be `const`.\n/** Terminate visit traversal completely */\nvisitAsync.BREAK = BREAK;\n/** Do not visit the children of the current node */\nvisitAsync.SKIP = SKIP;\n/** Remove the current node */\nvisitAsync.REMOVE = REMOVE;\nasync function visitAsync_(key, node, visitor, path) {\n const ctrl = await callVisitor(key, node, visitor, path);\n if (identity.isNode(ctrl) || identity.isPair(ctrl)) {\n replaceNode(key, path, ctrl);\n return visitAsync_(key, ctrl, visitor, path);\n }\n if (typeof ctrl !== 'symbol') {\n if (identity.isCollection(node)) {\n path = Object.freeze(path.concat(node));\n for (let i = 0; i < node.items.length; ++i) {\n const ci = await visitAsync_(i, node.items[i], visitor, path);\n if (typeof ci === 'number')\n i = ci - 1;\n else if (ci === BREAK)\n return BREAK;\n else if (ci === REMOVE) {\n node.items.splice(i, 1);\n i -= 1;\n }\n }\n }\n else if (identity.isPair(node)) {\n path = Object.freeze(path.concat(node));\n const ck = await visitAsync_('key', node.key, visitor, path);\n if (ck === BREAK)\n return BREAK;\n else if (ck === REMOVE)\n node.key = null;\n const cv = await visitAsync_('value', node.value, visitor, path);\n if (cv === BREAK)\n return BREAK;\n else if (cv === REMOVE)\n node.value = null;\n }\n }\n return ctrl;\n}\nfunction initVisitor(visitor) {\n if (typeof visitor === 'object' &&\n (visitor.Collection || visitor.Node || visitor.Value)) {\n return Object.assign({\n Alias: visitor.Node,\n Map: visitor.Node,\n Scalar: visitor.Node,\n Seq: visitor.Node\n }, visitor.Value && {\n Map: visitor.Value,\n Scalar: visitor.Value,\n Seq: visitor.Value\n }, visitor.Collection && {\n Map: visitor.Collection,\n Seq: visitor.Collection\n }, visitor);\n }\n return visitor;\n}\nfunction callVisitor(key, node, visitor, path) {\n if (typeof visitor === 'function')\n return visitor(key, node, path);\n if (identity.isMap(node))\n return visitor.Map?.(key, node, path);\n if (identity.isSeq(node))\n return visitor.Seq?.(key, node, path);\n if (identity.isPair(node))\n return visitor.Pair?.(key, node, path);\n if (identity.isScalar(node))\n return visitor.Scalar?.(key, node, path);\n if (identity.isAlias(node))\n return visitor.Alias?.(key, node, path);\n return undefined;\n}\nfunction replaceNode(key, path, node) {\n const parent = path[path.length - 1];\n if (identity.isCollection(parent)) {\n parent.items[key] = node;\n }\n else if (identity.isPair(parent)) {\n if (key === 'key')\n parent.key = node;\n else\n parent.value = node;\n }\n else if (identity.isDocument(parent)) {\n parent.contents = node;\n }\n else {\n const pt = identity.isAlias(parent) ? 'alias' : 'scalar';\n throw new Error(`Cannot replace node with ${pt} parent`);\n }\n}\n\nexports.visit = visit;\nexports.visitAsync = visitAsync;\n", "'use strict';\n\nvar identity = require('../nodes/identity.js');\nvar visit = require('../visit.js');\n\nconst escapeChars = {\n '!': '%21',\n ',': '%2C',\n '[': '%5B',\n ']': '%5D',\n '{': '%7B',\n '}': '%7D'\n};\nconst escapeTagName = (tn) => tn.replace(/[!,[\\]{}]/g, ch => escapeChars[ch]);\nclass Directives {\n constructor(yaml, tags) {\n /**\n * The directives-end/doc-start marker `---`. If `null`, a marker may still be\n * included in the document's stringified representation.\n */\n this.docStart = null;\n /** The doc-end marker `...`. */\n this.docEnd = false;\n this.yaml = Object.assign({}, Directives.defaultYaml, yaml);\n this.tags = Object.assign({}, Directives.defaultTags, tags);\n }\n clone() {\n const copy = new Directives(this.yaml, this.tags);\n copy.docStart = this.docStart;\n return copy;\n }\n /**\n * During parsing, get a Directives instance for the current document and\n * update the stream state according to the current version's spec.\n */\n atDocument() {\n const res = new Directives(this.yaml, this.tags);\n switch (this.yaml.version) {\n case '1.1':\n this.atNextDocument = true;\n break;\n case '1.2':\n this.atNextDocument = false;\n this.yaml = {\n explicit: Directives.defaultYaml.explicit,\n version: '1.2'\n };\n this.tags = Object.assign({}, Directives.defaultTags);\n break;\n }\n return res;\n }\n /**\n * @param onError - May be called even if the action was successful\n * @returns `true` on success\n */\n add(line, onError) {\n if (this.atNextDocument) {\n this.yaml = { explicit: Directives.defaultYaml.explicit, version: '1.1' };\n this.tags = Object.assign({}, Directives.defaultTags);\n this.atNextDocument = false;\n }\n const parts = line.trim().split(/[ \\t]+/);\n const name = parts.shift();\n switch (name) {\n case '%TAG': {\n if (parts.length !== 2) {\n onError(0, '%TAG directive should contain exactly two parts');\n if (parts.length < 2)\n return false;\n }\n const [handle, prefix] = parts;\n this.tags[handle] = prefix;\n return true;\n }\n case '%YAML': {\n this.yaml.explicit = true;\n if (parts.length !== 1) {\n onError(0, '%YAML directive should contain exactly one part');\n return false;\n }\n const [version] = parts;\n if (version === '1.1' || version === '1.2') {\n this.yaml.version = version;\n return true;\n }\n else {\n const isValid = /^\\d+\\.\\d+$/.test(version);\n onError(6, `Unsupported YAML version ${version}`, isValid);\n return false;\n }\n }\n default:\n onError(0, `Unknown directive ${name}`, true);\n return false;\n }\n }\n /**\n * Resolves a tag, matching handles to those defined in %TAG directives.\n *\n * @returns Resolved tag, which may also be the non-specific tag `'!'` or a\n * `'!local'` tag, or `null` if unresolvable.\n */\n tagName(source, onError) {\n if (source === '!')\n return '!'; // non-specific tag\n if (source[0] !== '!') {\n onError(`Not a valid tag: ${source}`);\n return null;\n }\n if (source[1] === '<') {\n const verbatim = source.slice(2, -1);\n if (verbatim === '!' || verbatim === '!!') {\n onError(`Verbatim tags aren't resolved, so ${source} is invalid.`);\n return null;\n }\n if (source[source.length - 1] !== '>')\n onError('Verbatim tags must end with a >');\n return verbatim;\n }\n const [, handle, suffix] = source.match(/^(.*!)([^!]*)$/s);\n if (!suffix)\n onError(`The ${source} tag has no suffix`);\n const prefix = this.tags[handle];\n if (prefix) {\n try {\n return prefix + decodeURIComponent(suffix);\n }\n catch (error) {\n onError(String(error));\n return null;\n }\n }\n if (handle === '!')\n return source; // local tag\n onError(`Could not resolve tag: ${source}`);\n return null;\n }\n /**\n * Given a fully resolved tag, returns its printable string form,\n * taking into account current tag prefixes and defaults.\n */\n tagString(tag) {\n for (const [handle, prefix] of Object.entries(this.tags)) {\n if (tag.startsWith(prefix))\n return handle + escapeTagName(tag.substring(prefix.length));\n }\n return tag[0] === '!' ? tag : `!<${tag}>`;\n }\n toString(doc) {\n const lines = this.yaml.explicit\n ? [`%YAML ${this.yaml.version || '1.2'}`]\n : [];\n const tagEntries = Object.entries(this.tags);\n let tagNames;\n if (doc && tagEntries.length > 0 && identity.isNode(doc.contents)) {\n const tags = {};\n visit.visit(doc.contents, (_key, node) => {\n if (identity.isNode(node) && node.tag)\n tags[node.tag] = true;\n });\n tagNames = Object.keys(tags);\n }\n else\n tagNames = [];\n for (const [handle, prefix] of tagEntries) {\n if (handle === '!!' && prefix === 'tag:yaml.org,2002:')\n continue;\n if (!doc || tagNames.some(tn => tn.startsWith(prefix)))\n lines.push(`%TAG ${handle} ${prefix}`);\n }\n return lines.join('\\n');\n }\n}\nDirectives.defaultYaml = { explicit: false, version: '1.2' };\nDirectives.defaultTags = { '!!': 'tag:yaml.org,2002:' };\n\nexports.Directives = Directives;\n", "'use strict';\n\nvar identity = require('../nodes/identity.js');\nvar visit = require('../visit.js');\n\n/**\n * Verify that the input string is a valid anchor.\n *\n * Will throw on errors.\n */\nfunction anchorIsValid(anchor) {\n if (/[\\x00-\\x19\\s,[\\]{}]/.test(anchor)) {\n const sa = JSON.stringify(anchor);\n const msg = `Anchor must not contain whitespace or control characters: ${sa}`;\n throw new Error(msg);\n }\n return true;\n}\nfunction anchorNames(root) {\n const anchors = new Set();\n visit.visit(root, {\n Value(_key, node) {\n if (node.anchor)\n anchors.add(node.anchor);\n }\n });\n return anchors;\n}\n/** Find a new anchor name with the given `prefix` and a one-indexed suffix. */\nfunction findNewAnchor(prefix, exclude) {\n for (let i = 1; true; ++i) {\n const name = `${prefix}${i}`;\n if (!exclude.has(name))\n return name;\n }\n}\nfunction createNodeAnchors(doc, prefix) {\n const aliasObjects = [];\n const sourceObjects = new Map();\n let prevAnchors = null;\n return {\n onAnchor: (source) => {\n aliasObjects.push(source);\n if (!prevAnchors)\n prevAnchors = anchorNames(doc);\n const anchor = findNewAnchor(prefix, prevAnchors);\n prevAnchors.add(anchor);\n return anchor;\n },\n /**\n * With circular references, the source node is only resolved after all\n * of its child nodes are. This is why anchors are set only after all of\n * the nodes have been created.\n */\n setAnchors: () => {\n for (const source of aliasObjects) {\n const ref = sourceObjects.get(source);\n if (typeof ref === 'object' &&\n ref.anchor &&\n (identity.isScalar(ref.node) || identity.isCollection(ref.node))) {\n ref.node.anchor = ref.anchor;\n }\n else {\n const error = new Error('Failed to resolve repeated object (this should not happen)');\n error.source = source;\n throw error;\n }\n }\n },\n sourceObjects\n };\n}\n\nexports.anchorIsValid = anchorIsValid;\nexports.anchorNames = anchorNames;\nexports.createNodeAnchors = createNodeAnchors;\nexports.findNewAnchor = findNewAnchor;\n", "'use strict';\n\n/**\n * Applies the JSON.parse reviver algorithm as defined in the ECMA-262 spec,\n * in section 24.5.1.1 \"Runtime Semantics: InternalizeJSONProperty\" of the\n * 2021 edition: https://tc39.es/ecma262/#sec-json.parse\n *\n * Includes extensions for handling Map and Set objects.\n */\nfunction applyReviver(reviver, obj, key, val) {\n if (val && typeof val === 'object') {\n if (Array.isArray(val)) {\n for (let i = 0, len = val.length; i < len; ++i) {\n const v0 = val[i];\n const v1 = applyReviver(reviver, val, String(i), v0);\n // eslint-disable-next-line @typescript-eslint/no-array-delete\n if (v1 === undefined)\n delete val[i];\n else if (v1 !== v0)\n val[i] = v1;\n }\n }\n else if (val instanceof Map) {\n for (const k of Array.from(val.keys())) {\n const v0 = val.get(k);\n const v1 = applyReviver(reviver, val, k, v0);\n if (v1 === undefined)\n val.delete(k);\n else if (v1 !== v0)\n val.set(k, v1);\n }\n }\n else if (val instanceof Set) {\n for (const v0 of Array.from(val)) {\n const v1 = applyReviver(reviver, val, v0, v0);\n if (v1 === undefined)\n val.delete(v0);\n else if (v1 !== v0) {\n val.delete(v0);\n val.add(v1);\n }\n }\n }\n else {\n for (const [k, v0] of Object.entries(val)) {\n const v1 = applyReviver(reviver, val, k, v0);\n if (v1 === undefined)\n delete val[k];\n else if (v1 !== v0)\n val[k] = v1;\n }\n }\n }\n return reviver.call(obj, key, val);\n}\n\nexports.applyReviver = applyReviver;\n", "'use strict';\n\nvar identity = require('./identity.js');\n\n/**\n * Recursively convert any node or its contents to native JavaScript\n *\n * @param value - The input value\n * @param arg - If `value` defines a `toJSON()` method, use this\n * as its first argument\n * @param ctx - Conversion context, originally set in Document#toJS(). If\n * `{ keep: true }` is not set, output should be suitable for JSON\n * stringification.\n */\nfunction toJS(value, arg, ctx) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n if (Array.isArray(value))\n return value.map((v, i) => toJS(v, String(i), ctx));\n if (value && typeof value.toJSON === 'function') {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-call\n if (!ctx || !identity.hasAnchor(value))\n return value.toJSON(arg, ctx);\n const data = { aliasCount: 0, count: 1, res: undefined };\n ctx.anchors.set(value, data);\n ctx.onCreate = res => {\n data.res = res;\n delete ctx.onCreate;\n };\n const res = value.toJSON(arg, ctx);\n if (ctx.onCreate)\n ctx.onCreate(res);\n return res;\n }\n if (typeof value === 'bigint' && !ctx?.keep)\n return Number(value);\n return value;\n}\n\nexports.toJS = toJS;\n", "'use strict';\n\nvar applyReviver = require('../doc/applyReviver.js');\nvar identity = require('./identity.js');\nvar toJS = require('./toJS.js');\n\nclass NodeBase {\n constructor(type) {\n Object.defineProperty(this, identity.NODE_TYPE, { value: type });\n }\n /** Create a copy of this node. */\n clone() {\n const copy = Object.create(Object.getPrototypeOf(this), Object.getOwnPropertyDescriptors(this));\n if (this.range)\n copy.range = this.range.slice();\n return copy;\n }\n /** A plain JavaScript representation of this node. */\n toJS(doc, { mapAsMap, maxAliasCount, onAnchor, reviver } = {}) {\n if (!identity.isDocument(doc))\n throw new TypeError('A document argument is required');\n const ctx = {\n anchors: new Map(),\n doc,\n keep: true,\n mapAsMap: mapAsMap === true,\n mapKeyWarned: false,\n maxAliasCount: typeof maxAliasCount === 'number' ? maxAliasCount : 100\n };\n const res = toJS.toJS(this, '', ctx);\n if (typeof onAnchor === 'function')\n for (const { count, res } of ctx.anchors.values())\n onAnchor(res, count);\n return typeof reviver === 'function'\n ? applyReviver.applyReviver(reviver, { '': res }, '', res)\n : res;\n }\n}\n\nexports.NodeBase = NodeBase;\n", "'use strict';\n\nvar anchors = require('../doc/anchors.js');\nvar visit = require('../visit.js');\nvar identity = require('./identity.js');\nvar Node = require('./Node.js');\nvar toJS = require('./toJS.js');\n\nclass Alias extends Node.NodeBase {\n constructor(source) {\n super(identity.ALIAS);\n this.source = source;\n Object.defineProperty(this, 'tag', {\n set() {\n throw new Error('Alias nodes cannot have tags');\n }\n });\n }\n /**\n * Resolve the value of this alias within `doc`, finding the last\n * instance of the `source` anchor before this node.\n */\n resolve(doc) {\n let found = undefined;\n visit.visit(doc, {\n Node: (_key, node) => {\n if (node === this)\n return visit.visit.BREAK;\n if (node.anchor === this.source)\n found = node;\n }\n });\n return found;\n }\n toJSON(_arg, ctx) {\n if (!ctx)\n return { source: this.source };\n const { anchors, doc, maxAliasCount } = ctx;\n const source = this.resolve(doc);\n if (!source) {\n const msg = `Unresolved alias (the anchor must be set before the alias): ${this.source}`;\n throw new ReferenceError(msg);\n }\n let data = anchors.get(source);\n if (!data) {\n // Resolve anchors for Node.prototype.toJS()\n toJS.toJS(source, null, ctx);\n data = anchors.get(source);\n }\n /* istanbul ignore if */\n if (!data || data.res === undefined) {\n const msg = 'This should not happen: Alias anchor was not resolved?';\n throw new ReferenceError(msg);\n }\n if (maxAliasCount >= 0) {\n data.count += 1;\n if (data.aliasCount === 0)\n data.aliasCount = getAliasCount(doc, source, anchors);\n if (data.count * data.aliasCount > maxAliasCount) {\n const msg = 'Excessive alias count indicates a resource exhaustion attack';\n throw new ReferenceError(msg);\n }\n }\n return data.res;\n }\n toString(ctx, _onComment, _onChompKeep) {\n const src = `*${this.source}`;\n if (ctx) {\n anchors.anchorIsValid(this.source);\n if (ctx.options.verifyAliasOrder && !ctx.anchors.has(this.source)) {\n const msg = `Unresolved alias (the anchor must be set before the alias): ${this.source}`;\n throw new Error(msg);\n }\n if (ctx.implicitKey)\n return `${src} `;\n }\n return src;\n }\n}\nfunction getAliasCount(doc, node, anchors) {\n if (identity.isAlias(node)) {\n const source = node.resolve(doc);\n const anchor = anchors && source && anchors.get(source);\n return anchor ? anchor.count * anchor.aliasCount : 0;\n }\n else if (identity.isCollection(node)) {\n let count = 0;\n for (const item of node.items) {\n const c = getAliasCount(doc, item, anchors);\n if (c > count)\n count = c;\n }\n return count;\n }\n else if (identity.isPair(node)) {\n const kc = getAliasCount(doc, node.key, anchors);\n const vc = getAliasCount(doc, node.value, anchors);\n return Math.max(kc, vc);\n }\n return 1;\n}\n\nexports.Alias = Alias;\n", "'use strict';\n\nvar identity = require('./identity.js');\nvar Node = require('./Node.js');\nvar toJS = require('./toJS.js');\n\nconst isScalarValue = (value) => !value || (typeof value !== 'function' && typeof value !== 'object');\nclass Scalar extends Node.NodeBase {\n constructor(value) {\n super(identity.SCALAR);\n this.value = value;\n }\n toJSON(arg, ctx) {\n return ctx?.keep ? this.value : toJS.toJS(this.value, arg, ctx);\n }\n toString() {\n return String(this.value);\n }\n}\nScalar.BLOCK_FOLDED = 'BLOCK_FOLDED';\nScalar.BLOCK_LITERAL = 'BLOCK_LITERAL';\nScalar.PLAIN = 'PLAIN';\nScalar.QUOTE_DOUBLE = 'QUOTE_DOUBLE';\nScalar.QUOTE_SINGLE = 'QUOTE_SINGLE';\n\nexports.Scalar = Scalar;\nexports.isScalarValue = isScalarValue;\n", "'use strict';\n\nvar Alias = require('../nodes/Alias.js');\nvar identity = require('../nodes/identity.js');\nvar Scalar = require('../nodes/Scalar.js');\n\nconst defaultTagPrefix = 'tag:yaml.org,2002:';\nfunction findTagObject(value, tagName, tags) {\n if (tagName) {\n const match = tags.filter(t => t.tag === tagName);\n const tagObj = match.find(t => !t.format) ?? match[0];\n if (!tagObj)\n throw new Error(`Tag ${tagName} not found`);\n return tagObj;\n }\n return tags.find(t => t.identify?.(value) && !t.format);\n}\nfunction createNode(value, tagName, ctx) {\n if (identity.isDocument(value))\n value = value.contents;\n if (identity.isNode(value))\n return value;\n if (identity.isPair(value)) {\n const map = ctx.schema[identity.MAP].createNode?.(ctx.schema, null, ctx);\n map.items.push(value);\n return map;\n }\n if (value instanceof String ||\n value instanceof Number ||\n value instanceof Boolean ||\n (typeof BigInt !== 'undefined' && value instanceof BigInt) // not supported everywhere\n ) {\n // https://tc39.es/ecma262/#sec-serializejsonproperty\n value = value.valueOf();\n }\n const { aliasDuplicateObjects, onAnchor, onTagObj, schema, sourceObjects } = ctx;\n // Detect duplicate references to the same object & use Alias nodes for all\n // after first. The `ref` wrapper allows for circular references to resolve.\n let ref = undefined;\n if (aliasDuplicateObjects && value && typeof value === 'object') {\n ref = sourceObjects.get(value);\n if (ref) {\n if (!ref.anchor)\n ref.anchor = onAnchor(value);\n return new Alias.Alias(ref.anchor);\n }\n else {\n ref = { anchor: null, node: null };\n sourceObjects.set(value, ref);\n }\n }\n if (tagName?.startsWith('!!'))\n tagName = defaultTagPrefix + tagName.slice(2);\n let tagObj = findTagObject(value, tagName, schema.tags);\n if (!tagObj) {\n if (value && typeof value.toJSON === 'function') {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-call\n value = value.toJSON();\n }\n if (!value || typeof value !== 'object') {\n const node = new Scalar.Scalar(value);\n if (ref)\n ref.node = node;\n return node;\n }\n tagObj =\n value instanceof Map\n ? schema[identity.MAP]\n : Symbol.iterator in Object(value)\n ? schema[identity.SEQ]\n : schema[identity.MAP];\n }\n if (onTagObj) {\n onTagObj(tagObj);\n delete ctx.onTagObj;\n }\n const node = tagObj?.createNode\n ? tagObj.createNode(ctx.schema, value, ctx)\n : typeof tagObj?.nodeClass?.from === 'function'\n ? tagObj.nodeClass.from(ctx.schema, value, ctx)\n : new Scalar.Scalar(value);\n if (tagName)\n node.tag = tagName;\n else if (!tagObj.default)\n node.tag = tagObj.tag;\n if (ref)\n ref.node = node;\n return node;\n}\n\nexports.createNode = createNode;\n", "'use strict';\n\nvar createNode = require('../doc/createNode.js');\nvar identity = require('./identity.js');\nvar Node = require('./Node.js');\n\nfunction collectionFromPath(schema, path, value) {\n let v = value;\n for (let i = path.length - 1; i >= 0; --i) {\n const k = path[i];\n if (typeof k === 'number' && Number.isInteger(k) && k >= 0) {\n const a = [];\n a[k] = v;\n v = a;\n }\n else {\n v = new Map([[k, v]]);\n }\n }\n return createNode.createNode(v, undefined, {\n aliasDuplicateObjects: false,\n keepUndefined: false,\n onAnchor: () => {\n throw new Error('This should not happen, please report a bug.');\n },\n schema,\n sourceObjects: new Map()\n });\n}\n// Type guard is intentionally a little wrong so as to be more useful,\n// as it does not cover untypable empty non-string iterables (e.g. []).\nconst isEmptyPath = (path) => path == null ||\n (typeof path === 'object' && !!path[Symbol.iterator]().next().done);\nclass Collection extends Node.NodeBase {\n constructor(type, schema) {\n super(type);\n Object.defineProperty(this, 'schema', {\n value: schema,\n configurable: true,\n enumerable: false,\n writable: true\n });\n }\n /**\n * Create a copy of this collection.\n *\n * @param schema - If defined, overwrites the original's schema\n */\n clone(schema) {\n const copy = Object.create(Object.getPrototypeOf(this), Object.getOwnPropertyDescriptors(this));\n if (schema)\n copy.schema = schema;\n copy.items = copy.items.map(it => identity.isNode(it) || identity.isPair(it) ? it.clone(schema) : it);\n if (this.range)\n copy.range = this.range.slice();\n return copy;\n }\n /**\n * Adds a value to the collection. For `!!map` and `!!omap` the value must\n * be a Pair instance or a `{ key, value }` object, which may not have a key\n * that already exists in the map.\n */\n addIn(path, value) {\n if (isEmptyPath(path))\n this.add(value);\n else {\n const [key, ...rest] = path;\n const node = this.get(key, true);\n if (identity.isCollection(node))\n node.addIn(rest, value);\n else if (node === undefined && this.schema)\n this.set(key, collectionFromPath(this.schema, rest, value));\n else\n throw new Error(`Expected YAML collection at ${key}. Remaining path: ${rest}`);\n }\n }\n /**\n * Removes a value from the collection.\n * @returns `true` if the item was found and removed.\n */\n deleteIn(path) {\n const [key, ...rest] = path;\n if (rest.length === 0)\n return this.delete(key);\n const node = this.get(key, true);\n if (identity.isCollection(node))\n return node.deleteIn(rest);\n else\n throw new Error(`Expected YAML collection at ${key}. Remaining path: ${rest}`);\n }\n /**\n * Returns item at `key`, or `undefined` if not found. By default unwraps\n * scalar values from their surrounding node; to disable set `keepScalar` to\n * `true` (collections are always returned intact).\n */\n getIn(path, keepScalar) {\n const [key, ...rest] = path;\n const node = this.get(key, true);\n if (rest.length === 0)\n return !keepScalar && identity.isScalar(node) ? node.value : node;\n else\n return identity.isCollection(node) ? node.getIn(rest, keepScalar) : undefined;\n }\n hasAllNullValues(allowScalar) {\n return this.items.every(node => {\n if (!identity.isPair(node))\n return false;\n const n = node.value;\n return (n == null ||\n (allowScalar &&\n identity.isScalar(n) &&\n n.value == null &&\n !n.commentBefore &&\n !n.comment &&\n !n.tag));\n });\n }\n /**\n * Checks if the collection includes a value with the key `key`.\n */\n hasIn(path) {\n const [key, ...rest] = path;\n if (rest.length === 0)\n return this.has(key);\n const node = this.get(key, true);\n return identity.isCollection(node) ? node.hasIn(rest) : false;\n }\n /**\n * Sets a value in this collection. For `!!set`, `value` needs to be a\n * boolean to add/remove the item from the set.\n */\n setIn(path, value) {\n const [key, ...rest] = path;\n if (rest.length === 0) {\n this.set(key, value);\n }\n else {\n const node = this.get(key, true);\n if (identity.isCollection(node))\n node.setIn(rest, value);\n else if (node === undefined && this.schema)\n this.set(key, collectionFromPath(this.schema, rest, value));\n else\n throw new Error(`Expected YAML collection at ${key}. Remaining path: ${rest}`);\n }\n }\n}\n\nexports.Collection = Collection;\nexports.collectionFromPath = collectionFromPath;\nexports.isEmptyPath = isEmptyPath;\n", "'use strict';\n\n/**\n * Stringifies a comment.\n *\n * Empty comment lines are left empty,\n * lines consisting of a single space are replaced by `#`,\n * and all other lines are prefixed with a `#`.\n */\nconst stringifyComment = (str) => str.replace(/^(?!$)(?: $)?/gm, '#');\nfunction indentComment(comment, indent) {\n if (/^\\n+$/.test(comment))\n return comment.substring(1);\n return indent ? comment.replace(/^(?! *$)/gm, indent) : comment;\n}\nconst lineComment = (str, indent, comment) => str.endsWith('\\n')\n ? indentComment(comment, indent)\n : comment.includes('\\n')\n ? '\\n' + indentComment(comment, indent)\n : (str.endsWith(' ') ? '' : ' ') + comment;\n\nexports.indentComment = indentComment;\nexports.lineComment = lineComment;\nexports.stringifyComment = stringifyComment;\n", "'use strict';\n\nconst FOLD_FLOW = 'flow';\nconst FOLD_BLOCK = 'block';\nconst FOLD_QUOTED = 'quoted';\n/**\n * Tries to keep input at up to `lineWidth` characters, splitting only on spaces\n * not followed by newlines or spaces unless `mode` is `'quoted'`. Lines are\n * terminated with `\\n` and started with `indent`.\n */\nfunction foldFlowLines(text, indent, mode = 'flow', { indentAtStart, lineWidth = 80, minContentWidth = 20, onFold, onOverflow } = {}) {\n if (!lineWidth || lineWidth < 0)\n return text;\n if (lineWidth < minContentWidth)\n minContentWidth = 0;\n const endStep = Math.max(1 + minContentWidth, 1 + lineWidth - indent.length);\n if (text.length <= endStep)\n return text;\n const folds = [];\n const escapedFolds = {};\n let end = lineWidth - indent.length;\n if (typeof indentAtStart === 'number') {\n if (indentAtStart > lineWidth - Math.max(2, minContentWidth))\n folds.push(0);\n else\n end = lineWidth - indentAtStart;\n }\n let split = undefined;\n let prev = undefined;\n let overflow = false;\n let i = -1;\n let escStart = -1;\n let escEnd = -1;\n if (mode === FOLD_BLOCK) {\n i = consumeMoreIndentedLines(text, i, indent.length);\n if (i !== -1)\n end = i + endStep;\n }\n for (let ch; (ch = text[(i += 1)]);) {\n if (mode === FOLD_QUOTED && ch === '\\\\') {\n escStart = i;\n switch (text[i + 1]) {\n case 'x':\n i += 3;\n break;\n case 'u':\n i += 5;\n break;\n case 'U':\n i += 9;\n break;\n default:\n i += 1;\n }\n escEnd = i;\n }\n if (ch === '\\n') {\n if (mode === FOLD_BLOCK)\n i = consumeMoreIndentedLines(text, i, indent.length);\n end = i + indent.length + endStep;\n split = undefined;\n }\n else {\n if (ch === ' ' &&\n prev &&\n prev !== ' ' &&\n prev !== '\\n' &&\n prev !== '\\t') {\n // space surrounded by non-space can be replaced with newline + indent\n const next = text[i + 1];\n if (next && next !== ' ' && next !== '\\n' && next !== '\\t')\n split = i;\n }\n if (i >= end) {\n if (split) {\n folds.push(split);\n end = split + endStep;\n split = undefined;\n }\n else if (mode === FOLD_QUOTED) {\n // white-space collected at end may stretch past lineWidth\n while (prev === ' ' || prev === '\\t') {\n prev = ch;\n ch = text[(i += 1)];\n overflow = true;\n }\n // Account for newline escape, but don't break preceding escape\n const j = i > escEnd + 1 ? i - 2 : escStart - 1;\n // Bail out if lineWidth & minContentWidth are shorter than an escape string\n if (escapedFolds[j])\n return text;\n folds.push(j);\n escapedFolds[j] = true;\n end = j + endStep;\n split = undefined;\n }\n else {\n overflow = true;\n }\n }\n }\n prev = ch;\n }\n if (overflow && onOverflow)\n onOverflow();\n if (folds.length === 0)\n return text;\n if (onFold)\n onFold();\n let res = text.slice(0, folds[0]);\n for (let i = 0; i < folds.length; ++i) {\n const fold = folds[i];\n const end = folds[i + 1] || text.length;\n if (fold === 0)\n res = `\\n${indent}${text.slice(0, end)}`;\n else {\n if (mode === FOLD_QUOTED && escapedFolds[fold])\n res += `${text[fold]}\\\\`;\n res += `\\n${indent}${text.slice(fold + 1, end)}`;\n }\n }\n return res;\n}\n/**\n * Presumes `i + 1` is at the start of a line\n * @returns index of last newline in more-indented block\n */\nfunction consumeMoreIndentedLines(text, i, indent) {\n let end = i;\n let start = i + 1;\n let ch = text[start];\n while (ch === ' ' || ch === '\\t') {\n if (i < start + indent) {\n ch = text[++i];\n }\n else {\n do {\n ch = text[++i];\n } while (ch && ch !== '\\n');\n end = i;\n start = i + 1;\n ch = text[start];\n }\n }\n return end;\n}\n\nexports.FOLD_BLOCK = FOLD_BLOCK;\nexports.FOLD_FLOW = FOLD_FLOW;\nexports.FOLD_QUOTED = FOLD_QUOTED;\nexports.foldFlowLines = foldFlowLines;\n", "'use strict';\n\nvar Scalar = require('../nodes/Scalar.js');\nvar foldFlowLines = require('./foldFlowLines.js');\n\nconst getFoldOptions = (ctx, isBlock) => ({\n indentAtStart: isBlock ? ctx.indent.length : ctx.indentAtStart,\n lineWidth: ctx.options.lineWidth,\n minContentWidth: ctx.options.minContentWidth\n});\n// Also checks for lines starting with %, as parsing the output as YAML 1.1 will\n// presume that's starting a new document.\nconst containsDocumentMarker = (str) => /^(%|---|\\.\\.\\.)/m.test(str);\nfunction lineLengthOverLimit(str, lineWidth, indentLength) {\n if (!lineWidth || lineWidth < 0)\n return false;\n const limit = lineWidth - indentLength;\n const strLen = str.length;\n if (strLen <= limit)\n return false;\n for (let i = 0, start = 0; i < strLen; ++i) {\n if (str[i] === '\\n') {\n if (i - start > limit)\n return true;\n start = i + 1;\n if (strLen - start <= limit)\n return false;\n }\n }\n return true;\n}\nfunction doubleQuotedString(value, ctx) {\n const json = JSON.stringify(value);\n if (ctx.options.doubleQuotedAsJSON)\n return json;\n const { implicitKey } = ctx;\n const minMultiLineLength = ctx.options.doubleQuotedMinMultiLineLength;\n const indent = ctx.indent || (containsDocumentMarker(value) ? ' ' : '');\n let str = '';\n let start = 0;\n for (let i = 0, ch = json[i]; ch; ch = json[++i]) {\n if (ch === ' ' && json[i + 1] === '\\\\' && json[i + 2] === 'n') {\n // space before newline needs to be escaped to not be folded\n str += json.slice(start, i) + '\\\\ ';\n i += 1;\n start = i;\n ch = '\\\\';\n }\n if (ch === '\\\\')\n switch (json[i + 1]) {\n case 'u':\n {\n str += json.slice(start, i);\n const code = json.substr(i + 2, 4);\n switch (code) {\n case '0000':\n str += '\\\\0';\n break;\n case '0007':\n str += '\\\\a';\n break;\n case '000b':\n str += '\\\\v';\n break;\n case '001b':\n str += '\\\\e';\n break;\n case '0085':\n str += '\\\\N';\n break;\n case '00a0':\n str += '\\\\_';\n break;\n case '2028':\n str += '\\\\L';\n break;\n case '2029':\n str += '\\\\P';\n break;\n default:\n if (code.substr(0, 2) === '00')\n str += '\\\\x' + code.substr(2);\n else\n str += json.substr(i, 6);\n }\n i += 5;\n start = i + 1;\n }\n break;\n case 'n':\n if (implicitKey ||\n json[i + 2] === '\"' ||\n json.length < minMultiLineLength) {\n i += 1;\n }\n else {\n // folding will eat first newline\n str += json.slice(start, i) + '\\n\\n';\n while (json[i + 2] === '\\\\' &&\n json[i + 3] === 'n' &&\n json[i + 4] !== '\"') {\n str += '\\n';\n i += 2;\n }\n str += indent;\n // space after newline needs to be escaped to not be folded\n if (json[i + 2] === ' ')\n str += '\\\\';\n i += 1;\n start = i + 1;\n }\n break;\n default:\n i += 1;\n }\n }\n str = start ? str + json.slice(start) : json;\n return implicitKey\n ? str\n : foldFlowLines.foldFlowLines(str, indent, foldFlowLines.FOLD_QUOTED, getFoldOptions(ctx, false));\n}\nfunction singleQuotedString(value, ctx) {\n if (ctx.options.singleQuote === false ||\n (ctx.implicitKey && value.includes('\\n')) ||\n /[ \\t]\\n|\\n[ \\t]/.test(value) // single quoted string can't have leading or trailing whitespace around newline\n )\n return doubleQuotedString(value, ctx);\n const indent = ctx.indent || (containsDocumentMarker(value) ? ' ' : '');\n const res = \"'\" + value.replace(/'/g, \"''\").replace(/\\n+/g, `$&\\n${indent}`) + \"'\";\n return ctx.implicitKey\n ? res\n : foldFlowLines.foldFlowLines(res, indent, foldFlowLines.FOLD_FLOW, getFoldOptions(ctx, false));\n}\nfunction quotedString(value, ctx) {\n const { singleQuote } = ctx.options;\n let qs;\n if (singleQuote === false)\n qs = doubleQuotedString;\n else {\n const hasDouble = value.includes('\"');\n const hasSingle = value.includes(\"'\");\n if (hasDouble && !hasSingle)\n qs = singleQuotedString;\n else if (hasSingle && !hasDouble)\n qs = doubleQuotedString;\n else\n qs = singleQuote ? singleQuotedString : doubleQuotedString;\n }\n return qs(value, ctx);\n}\n// The negative lookbehind avoids a polynomial search,\n// but isn't supported yet on Safari: https://caniuse.com/js-regexp-lookbehind\nlet blockEndNewlines;\ntry {\n blockEndNewlines = new RegExp('(^|(?\\n';\n // determine chomping from whitespace at value end\n let chomp;\n let endStart;\n for (endStart = value.length; endStart > 0; --endStart) {\n const ch = value[endStart - 1];\n if (ch !== '\\n' && ch !== '\\t' && ch !== ' ')\n break;\n }\n let end = value.substring(endStart);\n const endNlPos = end.indexOf('\\n');\n if (endNlPos === -1) {\n chomp = '-'; // strip\n }\n else if (value === end || endNlPos !== end.length - 1) {\n chomp = '+'; // keep\n if (onChompKeep)\n onChompKeep();\n }\n else {\n chomp = ''; // clip\n }\n if (end) {\n value = value.slice(0, -end.length);\n if (end[end.length - 1] === '\\n')\n end = end.slice(0, -1);\n end = end.replace(blockEndNewlines, `$&${indent}`);\n }\n // determine indent indicator from whitespace at value start\n let startWithSpace = false;\n let startEnd;\n let startNlPos = -1;\n for (startEnd = 0; startEnd < value.length; ++startEnd) {\n const ch = value[startEnd];\n if (ch === ' ')\n startWithSpace = true;\n else if (ch === '\\n')\n startNlPos = startEnd;\n else\n break;\n }\n let start = value.substring(0, startNlPos < startEnd ? startNlPos + 1 : startEnd);\n if (start) {\n value = value.substring(start.length);\n start = start.replace(/\\n+/g, `$&${indent}`);\n }\n const indentSize = indent ? '2' : '1'; // root is at -1\n // Leading | or > is added later\n let header = (startWithSpace ? indentSize : '') + chomp;\n if (comment) {\n header += ' ' + commentString(comment.replace(/ ?[\\r\\n]+/g, ' '));\n if (onComment)\n onComment();\n }\n if (!literal) {\n const foldedValue = value\n .replace(/\\n+/g, '\\n$&')\n .replace(/(?:^|\\n)([\\t ].*)(?:([\\n\\t ]*)\\n(?![\\n\\t ]))?/g, '$1$2') // more-indented lines aren't folded\n // ^ more-ind. ^ empty ^ capture next empty lines only at end of indent\n .replace(/\\n+/g, `$&${indent}`);\n let literalFallback = false;\n const foldOptions = getFoldOptions(ctx, true);\n if (blockQuote !== 'folded' && type !== Scalar.Scalar.BLOCK_FOLDED) {\n foldOptions.onOverflow = () => {\n literalFallback = true;\n };\n }\n const body = foldFlowLines.foldFlowLines(`${start}${foldedValue}${end}`, indent, foldFlowLines.FOLD_BLOCK, foldOptions);\n if (!literalFallback)\n return `>${header}\\n${indent}${body}`;\n }\n value = value.replace(/\\n+/g, `$&${indent}`);\n return `|${header}\\n${indent}${start}${value}${end}`;\n}\nfunction plainString(item, ctx, onComment, onChompKeep) {\n const { type, value } = item;\n const { actualString, implicitKey, indent, indentStep, inFlow } = ctx;\n if ((implicitKey && value.includes('\\n')) ||\n (inFlow && /[[\\]{},]/.test(value))) {\n return quotedString(value, ctx);\n }\n if (!value ||\n /^[\\n\\t ,[\\]{}#&*!|>'\"%@`]|^[?-]$|^[?-][ \\t]|[\\n:][ \\t]|[ \\t]\\n|[\\n\\t ]#|[\\n\\t :]$/.test(value)) {\n // not allowed:\n // - empty string, '-' or '?'\n // - start with an indicator character (except [?:-]) or /[?-] /\n // - '\\n ', ': ' or ' \\n' anywhere\n // - '#' not preceded by a non-space char\n // - end with ' ' or ':'\n return implicitKey || inFlow || !value.includes('\\n')\n ? quotedString(value, ctx)\n : blockString(item, ctx, onComment, onChompKeep);\n }\n if (!implicitKey &&\n !inFlow &&\n type !== Scalar.Scalar.PLAIN &&\n value.includes('\\n')) {\n // Where allowed & type not set explicitly, prefer block style for multiline strings\n return blockString(item, ctx, onComment, onChompKeep);\n }\n if (containsDocumentMarker(value)) {\n if (indent === '') {\n ctx.forceBlockIndent = true;\n return blockString(item, ctx, onComment, onChompKeep);\n }\n else if (implicitKey && indent === indentStep) {\n return quotedString(value, ctx);\n }\n }\n const str = value.replace(/\\n+/g, `$&\\n${indent}`);\n // Verify that output will be parsed as a string, as e.g. plain numbers and\n // booleans get parsed with those types in v1.2 (e.g. '42', 'true' & '0.9e-3'),\n // and others in v1.1.\n if (actualString) {\n const test = (tag) => tag.default && tag.tag !== 'tag:yaml.org,2002:str' && tag.test?.test(str);\n const { compat, tags } = ctx.doc.schema;\n if (tags.some(test) || compat?.some(test))\n return quotedString(value, ctx);\n }\n return implicitKey\n ? str\n : foldFlowLines.foldFlowLines(str, indent, foldFlowLines.FOLD_FLOW, getFoldOptions(ctx, false));\n}\nfunction stringifyString(item, ctx, onComment, onChompKeep) {\n const { implicitKey, inFlow } = ctx;\n const ss = typeof item.value === 'string'\n ? item\n : Object.assign({}, item, { value: String(item.value) });\n let { type } = item;\n if (type !== Scalar.Scalar.QUOTE_DOUBLE) {\n // force double quotes on control characters & unpaired surrogates\n if (/[\\x00-\\x08\\x0b-\\x1f\\x7f-\\x9f\\u{D800}-\\u{DFFF}]/u.test(ss.value))\n type = Scalar.Scalar.QUOTE_DOUBLE;\n }\n const _stringify = (_type) => {\n switch (_type) {\n case Scalar.Scalar.BLOCK_FOLDED:\n case Scalar.Scalar.BLOCK_LITERAL:\n return implicitKey || inFlow\n ? quotedString(ss.value, ctx) // blocks are not valid inside flow containers\n : blockString(ss, ctx, onComment, onChompKeep);\n case Scalar.Scalar.QUOTE_DOUBLE:\n return doubleQuotedString(ss.value, ctx);\n case Scalar.Scalar.QUOTE_SINGLE:\n return singleQuotedString(ss.value, ctx);\n case Scalar.Scalar.PLAIN:\n return plainString(ss, ctx, onComment, onChompKeep);\n default:\n return null;\n }\n };\n let res = _stringify(type);\n if (res === null) {\n const { defaultKeyType, defaultStringType } = ctx.options;\n const t = (implicitKey && defaultKeyType) || defaultStringType;\n res = _stringify(t);\n if (res === null)\n throw new Error(`Unsupported default string type ${t}`);\n }\n return res;\n}\n\nexports.stringifyString = stringifyString;\n", "'use strict';\n\nvar anchors = require('../doc/anchors.js');\nvar identity = require('../nodes/identity.js');\nvar stringifyComment = require('./stringifyComment.js');\nvar stringifyString = require('./stringifyString.js');\n\nfunction createStringifyContext(doc, options) {\n const opt = Object.assign({\n blockQuote: true,\n commentString: stringifyComment.stringifyComment,\n defaultKeyType: null,\n defaultStringType: 'PLAIN',\n directives: null,\n doubleQuotedAsJSON: false,\n doubleQuotedMinMultiLineLength: 40,\n falseStr: 'false',\n flowCollectionPadding: true,\n indentSeq: true,\n lineWidth: 80,\n minContentWidth: 20,\n nullStr: 'null',\n simpleKeys: false,\n singleQuote: null,\n trueStr: 'true',\n verifyAliasOrder: true\n }, doc.schema.toStringOptions, options);\n let inFlow;\n switch (opt.collectionStyle) {\n case 'block':\n inFlow = false;\n break;\n case 'flow':\n inFlow = true;\n break;\n default:\n inFlow = null;\n }\n return {\n anchors: new Set(),\n doc,\n flowCollectionPadding: opt.flowCollectionPadding ? ' ' : '',\n indent: '',\n indentStep: typeof opt.indent === 'number' ? ' '.repeat(opt.indent) : ' ',\n inFlow,\n options: opt\n };\n}\nfunction getTagObject(tags, item) {\n if (item.tag) {\n const match = tags.filter(t => t.tag === item.tag);\n if (match.length > 0)\n return match.find(t => t.format === item.format) ?? match[0];\n }\n let tagObj = undefined;\n let obj;\n if (identity.isScalar(item)) {\n obj = item.value;\n let match = tags.filter(t => t.identify?.(obj));\n if (match.length > 1) {\n const testMatch = match.filter(t => t.test);\n if (testMatch.length > 0)\n match = testMatch;\n }\n tagObj =\n match.find(t => t.format === item.format) ?? match.find(t => !t.format);\n }\n else {\n obj = item;\n tagObj = tags.find(t => t.nodeClass && obj instanceof t.nodeClass);\n }\n if (!tagObj) {\n const name = obj?.constructor?.name ?? typeof obj;\n throw new Error(`Tag not resolved for ${name} value`);\n }\n return tagObj;\n}\n// needs to be called before value stringifier to allow for circular anchor refs\nfunction stringifyProps(node, tagObj, { anchors: anchors$1, doc }) {\n if (!doc.directives)\n return '';\n const props = [];\n const anchor = (identity.isScalar(node) || identity.isCollection(node)) && node.anchor;\n if (anchor && anchors.anchorIsValid(anchor)) {\n anchors$1.add(anchor);\n props.push(`&${anchor}`);\n }\n const tag = node.tag ? node.tag : tagObj.default ? null : tagObj.tag;\n if (tag)\n props.push(doc.directives.tagString(tag));\n return props.join(' ');\n}\nfunction stringify(item, ctx, onComment, onChompKeep) {\n if (identity.isPair(item))\n return item.toString(ctx, onComment, onChompKeep);\n if (identity.isAlias(item)) {\n if (ctx.doc.directives)\n return item.toString(ctx);\n if (ctx.resolvedAliases?.has(item)) {\n throw new TypeError(`Cannot stringify circular structure without alias nodes`);\n }\n else {\n if (ctx.resolvedAliases)\n ctx.resolvedAliases.add(item);\n else\n ctx.resolvedAliases = new Set([item]);\n item = item.resolve(ctx.doc);\n }\n }\n let tagObj = undefined;\n const node = identity.isNode(item)\n ? item\n : ctx.doc.createNode(item, { onTagObj: o => (tagObj = o) });\n if (!tagObj)\n tagObj = getTagObject(ctx.doc.schema.tags, node);\n const props = stringifyProps(node, tagObj, ctx);\n if (props.length > 0)\n ctx.indentAtStart = (ctx.indentAtStart ?? 0) + props.length + 1;\n const str = typeof tagObj.stringify === 'function'\n ? tagObj.stringify(node, ctx, onComment, onChompKeep)\n : identity.isScalar(node)\n ? stringifyString.stringifyString(node, ctx, onComment, onChompKeep)\n : node.toString(ctx, onComment, onChompKeep);\n if (!props)\n return str;\n return identity.isScalar(node) || str[0] === '{' || str[0] === '['\n ? `${props} ${str}`\n : `${props}\\n${ctx.indent}${str}`;\n}\n\nexports.createStringifyContext = createStringifyContext;\nexports.stringify = stringify;\n", "'use strict';\n\nvar identity = require('../nodes/identity.js');\nvar Scalar = require('../nodes/Scalar.js');\nvar stringify = require('./stringify.js');\nvar stringifyComment = require('./stringifyComment.js');\n\nfunction stringifyPair({ key, value }, ctx, onComment, onChompKeep) {\n const { allNullValues, doc, indent, indentStep, options: { commentString, indentSeq, simpleKeys } } = ctx;\n let keyComment = (identity.isNode(key) && key.comment) || null;\n if (simpleKeys) {\n if (keyComment) {\n throw new Error('With simple keys, key nodes cannot have comments');\n }\n if (identity.isCollection(key) || (!identity.isNode(key) && typeof key === 'object')) {\n const msg = 'With simple keys, collection cannot be used as a key value';\n throw new Error(msg);\n }\n }\n let explicitKey = !simpleKeys &&\n (!key ||\n (keyComment && value == null && !ctx.inFlow) ||\n identity.isCollection(key) ||\n (identity.isScalar(key)\n ? key.type === Scalar.Scalar.BLOCK_FOLDED || key.type === Scalar.Scalar.BLOCK_LITERAL\n : typeof key === 'object'));\n ctx = Object.assign({}, ctx, {\n allNullValues: false,\n implicitKey: !explicitKey && (simpleKeys || !allNullValues),\n indent: indent + indentStep\n });\n let keyCommentDone = false;\n let chompKeep = false;\n let str = stringify.stringify(key, ctx, () => (keyCommentDone = true), () => (chompKeep = true));\n if (!explicitKey && !ctx.inFlow && str.length > 1024) {\n if (simpleKeys)\n throw new Error('With simple keys, single line scalar must not span more than 1024 characters');\n explicitKey = true;\n }\n if (ctx.inFlow) {\n if (allNullValues || value == null) {\n if (keyCommentDone && onComment)\n onComment();\n return str === '' ? '?' : explicitKey ? `? ${str}` : str;\n }\n }\n else if ((allNullValues && !simpleKeys) || (value == null && explicitKey)) {\n str = `? ${str}`;\n if (keyComment && !keyCommentDone) {\n str += stringifyComment.lineComment(str, ctx.indent, commentString(keyComment));\n }\n else if (chompKeep && onChompKeep)\n onChompKeep();\n return str;\n }\n if (keyCommentDone)\n keyComment = null;\n if (explicitKey) {\n if (keyComment)\n str += stringifyComment.lineComment(str, ctx.indent, commentString(keyComment));\n str = `? ${str}\\n${indent}:`;\n }\n else {\n str = `${str}:`;\n if (keyComment)\n str += stringifyComment.lineComment(str, ctx.indent, commentString(keyComment));\n }\n let vsb, vcb, valueComment;\n if (identity.isNode(value)) {\n vsb = !!value.spaceBefore;\n vcb = value.commentBefore;\n valueComment = value.comment;\n }\n else {\n vsb = false;\n vcb = null;\n valueComment = null;\n if (value && typeof value === 'object')\n value = doc.createNode(value);\n }\n ctx.implicitKey = false;\n if (!explicitKey && !keyComment && identity.isScalar(value))\n ctx.indentAtStart = str.length + 1;\n chompKeep = false;\n if (!indentSeq &&\n indentStep.length >= 2 &&\n !ctx.inFlow &&\n !explicitKey &&\n identity.isSeq(value) &&\n !value.flow &&\n !value.tag &&\n !value.anchor) {\n // If indentSeq === false, consider '- ' as part of indentation where possible\n ctx.indent = ctx.indent.substring(2);\n }\n let valueCommentDone = false;\n const valueStr = stringify.stringify(value, ctx, () => (valueCommentDone = true), () => (chompKeep = true));\n let ws = ' ';\n if (keyComment || vsb || vcb) {\n ws = vsb ? '\\n' : '';\n if (vcb) {\n const cs = commentString(vcb);\n ws += `\\n${stringifyComment.indentComment(cs, ctx.indent)}`;\n }\n if (valueStr === '' && !ctx.inFlow) {\n if (ws === '\\n')\n ws = '\\n\\n';\n }\n else {\n ws += `\\n${ctx.indent}`;\n }\n }\n else if (!explicitKey && identity.isCollection(value)) {\n const vs0 = valueStr[0];\n const nl0 = valueStr.indexOf('\\n');\n const hasNewline = nl0 !== -1;\n const flow = ctx.inFlow ?? value.flow ?? value.items.length === 0;\n if (hasNewline || !flow) {\n let hasPropsLine = false;\n if (hasNewline && (vs0 === '&' || vs0 === '!')) {\n let sp0 = valueStr.indexOf(' ');\n if (vs0 === '&' &&\n sp0 !== -1 &&\n sp0 < nl0 &&\n valueStr[sp0 + 1] === '!') {\n sp0 = valueStr.indexOf(' ', sp0 + 1);\n }\n if (sp0 === -1 || nl0 < sp0)\n hasPropsLine = true;\n }\n if (!hasPropsLine)\n ws = `\\n${ctx.indent}`;\n }\n }\n else if (valueStr === '' || valueStr[0] === '\\n') {\n ws = '';\n }\n str += ws + valueStr;\n if (ctx.inFlow) {\n if (valueCommentDone && onComment)\n onComment();\n }\n else if (valueComment && !valueCommentDone) {\n str += stringifyComment.lineComment(str, ctx.indent, commentString(valueComment));\n }\n else if (chompKeep && onChompKeep) {\n onChompKeep();\n }\n return str;\n}\n\nexports.stringifyPair = stringifyPair;\n", "'use strict';\n\nvar node_process = require('node:process');\n\nfunction debug(logLevel, ...messages) {\n if (logLevel === 'debug')\n console.log(...messages);\n}\nfunction warn(logLevel, warning) {\n if (logLevel === 'debug' || logLevel === 'warn') {\n if (typeof node_process.emitWarning === 'function')\n node_process.emitWarning(warning);\n else\n console.warn(warning);\n }\n}\n\nexports.debug = debug;\nexports.warn = warn;\n", "'use strict';\n\nvar identity = require('../../nodes/identity.js');\nvar Scalar = require('../../nodes/Scalar.js');\n\n// If the value associated with a merge key is a single mapping node, each of\n// its key/value pairs is inserted into the current mapping, unless the key\n// already exists in it. If the value associated with the merge key is a\n// sequence, then this sequence is expected to contain mapping nodes and each\n// of these nodes is merged in turn according to its order in the sequence.\n// Keys in mapping nodes earlier in the sequence override keys specified in\n// later mapping nodes. -- http://yaml.org/type/merge.html\nconst MERGE_KEY = '<<';\nconst merge = {\n identify: value => value === MERGE_KEY ||\n (typeof value === 'symbol' && value.description === MERGE_KEY),\n default: 'key',\n tag: 'tag:yaml.org,2002:merge',\n test: /^<<$/,\n resolve: () => Object.assign(new Scalar.Scalar(Symbol(MERGE_KEY)), {\n addToJSMap: addMergeToJSMap\n }),\n stringify: () => MERGE_KEY\n};\nconst isMergeKey = (ctx, key) => (merge.identify(key) ||\n (identity.isScalar(key) &&\n (!key.type || key.type === Scalar.Scalar.PLAIN) &&\n merge.identify(key.value))) &&\n ctx?.doc.schema.tags.some(tag => tag.tag === merge.tag && tag.default);\nfunction addMergeToJSMap(ctx, map, value) {\n value = ctx && identity.isAlias(value) ? value.resolve(ctx.doc) : value;\n if (identity.isSeq(value))\n for (const it of value.items)\n mergeValue(ctx, map, it);\n else if (Array.isArray(value))\n for (const it of value)\n mergeValue(ctx, map, it);\n else\n mergeValue(ctx, map, value);\n}\nfunction mergeValue(ctx, map, value) {\n const source = ctx && identity.isAlias(value) ? value.resolve(ctx.doc) : value;\n if (!identity.isMap(source))\n throw new Error('Merge sources must be maps or map aliases');\n const srcMap = source.toJSON(null, ctx, Map);\n for (const [key, value] of srcMap) {\n if (map instanceof Map) {\n if (!map.has(key))\n map.set(key, value);\n }\n else if (map instanceof Set) {\n map.add(key);\n }\n else if (!Object.prototype.hasOwnProperty.call(map, key)) {\n Object.defineProperty(map, key, {\n value,\n writable: true,\n enumerable: true,\n configurable: true\n });\n }\n }\n return map;\n}\n\nexports.addMergeToJSMap = addMergeToJSMap;\nexports.isMergeKey = isMergeKey;\nexports.merge = merge;\n", "'use strict';\n\nvar log = require('../log.js');\nvar merge = require('../schema/yaml-1.1/merge.js');\nvar stringify = require('../stringify/stringify.js');\nvar identity = require('./identity.js');\nvar toJS = require('./toJS.js');\n\nfunction addPairToJSMap(ctx, map, { key, value }) {\n if (identity.isNode(key) && key.addToJSMap)\n key.addToJSMap(ctx, map, value);\n // TODO: Should drop this special case for bare << handling\n else if (merge.isMergeKey(ctx, key))\n merge.addMergeToJSMap(ctx, map, value);\n else {\n const jsKey = toJS.toJS(key, '', ctx);\n if (map instanceof Map) {\n map.set(jsKey, toJS.toJS(value, jsKey, ctx));\n }\n else if (map instanceof Set) {\n map.add(jsKey);\n }\n else {\n const stringKey = stringifyKey(key, jsKey, ctx);\n const jsValue = toJS.toJS(value, stringKey, ctx);\n if (stringKey in map)\n Object.defineProperty(map, stringKey, {\n value: jsValue,\n writable: true,\n enumerable: true,\n configurable: true\n });\n else\n map[stringKey] = jsValue;\n }\n }\n return map;\n}\nfunction stringifyKey(key, jsKey, ctx) {\n if (jsKey === null)\n return '';\n if (typeof jsKey !== 'object')\n return String(jsKey);\n if (identity.isNode(key) && ctx?.doc) {\n const strCtx = stringify.createStringifyContext(ctx.doc, {});\n strCtx.anchors = new Set();\n for (const node of ctx.anchors.keys())\n strCtx.anchors.add(node.anchor);\n strCtx.inFlow = true;\n strCtx.inStringifyKey = true;\n const strKey = key.toString(strCtx);\n if (!ctx.mapKeyWarned) {\n let jsonStr = JSON.stringify(strKey);\n if (jsonStr.length > 40)\n jsonStr = jsonStr.substring(0, 36) + '...\"';\n log.warn(ctx.doc.options.logLevel, `Keys with collection values will be stringified due to JS Object restrictions: ${jsonStr}. Set mapAsMap: true to use object keys.`);\n ctx.mapKeyWarned = true;\n }\n return strKey;\n }\n return JSON.stringify(jsKey);\n}\n\nexports.addPairToJSMap = addPairToJSMap;\n", "'use strict';\n\nvar createNode = require('../doc/createNode.js');\nvar stringifyPair = require('../stringify/stringifyPair.js');\nvar addPairToJSMap = require('./addPairToJSMap.js');\nvar identity = require('./identity.js');\n\nfunction createPair(key, value, ctx) {\n const k = createNode.createNode(key, undefined, ctx);\n const v = createNode.createNode(value, undefined, ctx);\n return new Pair(k, v);\n}\nclass Pair {\n constructor(key, value = null) {\n Object.defineProperty(this, identity.NODE_TYPE, { value: identity.PAIR });\n this.key = key;\n this.value = value;\n }\n clone(schema) {\n let { key, value } = this;\n if (identity.isNode(key))\n key = key.clone(schema);\n if (identity.isNode(value))\n value = value.clone(schema);\n return new Pair(key, value);\n }\n toJSON(_, ctx) {\n const pair = ctx?.mapAsMap ? new Map() : {};\n return addPairToJSMap.addPairToJSMap(ctx, pair, this);\n }\n toString(ctx, onComment, onChompKeep) {\n return ctx?.doc\n ? stringifyPair.stringifyPair(this, ctx, onComment, onChompKeep)\n : JSON.stringify(this);\n }\n}\n\nexports.Pair = Pair;\nexports.createPair = createPair;\n", "'use strict';\n\nvar identity = require('../nodes/identity.js');\nvar stringify = require('./stringify.js');\nvar stringifyComment = require('./stringifyComment.js');\n\nfunction stringifyCollection(collection, ctx, options) {\n const flow = ctx.inFlow ?? collection.flow;\n const stringify = flow ? stringifyFlowCollection : stringifyBlockCollection;\n return stringify(collection, ctx, options);\n}\nfunction stringifyBlockCollection({ comment, items }, ctx, { blockItemPrefix, flowChars, itemIndent, onChompKeep, onComment }) {\n const { indent, options: { commentString } } = ctx;\n const itemCtx = Object.assign({}, ctx, { indent: itemIndent, type: null });\n let chompKeep = false; // flag for the preceding node's status\n const lines = [];\n for (let i = 0; i < items.length; ++i) {\n const item = items[i];\n let comment = null;\n if (identity.isNode(item)) {\n if (!chompKeep && item.spaceBefore)\n lines.push('');\n addCommentBefore(ctx, lines, item.commentBefore, chompKeep);\n if (item.comment)\n comment = item.comment;\n }\n else if (identity.isPair(item)) {\n const ik = identity.isNode(item.key) ? item.key : null;\n if (ik) {\n if (!chompKeep && ik.spaceBefore)\n lines.push('');\n addCommentBefore(ctx, lines, ik.commentBefore, chompKeep);\n }\n }\n chompKeep = false;\n let str = stringify.stringify(item, itemCtx, () => (comment = null), () => (chompKeep = true));\n if (comment)\n str += stringifyComment.lineComment(str, itemIndent, commentString(comment));\n if (chompKeep && comment)\n chompKeep = false;\n lines.push(blockItemPrefix + str);\n }\n let str;\n if (lines.length === 0) {\n str = flowChars.start + flowChars.end;\n }\n else {\n str = lines[0];\n for (let i = 1; i < lines.length; ++i) {\n const line = lines[i];\n str += line ? `\\n${indent}${line}` : '\\n';\n }\n }\n if (comment) {\n str += '\\n' + stringifyComment.indentComment(commentString(comment), indent);\n if (onComment)\n onComment();\n }\n else if (chompKeep && onChompKeep)\n onChompKeep();\n return str;\n}\nfunction stringifyFlowCollection({ items }, ctx, { flowChars, itemIndent }) {\n const { indent, indentStep, flowCollectionPadding: fcPadding, options: { commentString } } = ctx;\n itemIndent += indentStep;\n const itemCtx = Object.assign({}, ctx, {\n indent: itemIndent,\n inFlow: true,\n type: null\n });\n let reqNewline = false;\n let linesAtValue = 0;\n const lines = [];\n for (let i = 0; i < items.length; ++i) {\n const item = items[i];\n let comment = null;\n if (identity.isNode(item)) {\n if (item.spaceBefore)\n lines.push('');\n addCommentBefore(ctx, lines, item.commentBefore, false);\n if (item.comment)\n comment = item.comment;\n }\n else if (identity.isPair(item)) {\n const ik = identity.isNode(item.key) ? item.key : null;\n if (ik) {\n if (ik.spaceBefore)\n lines.push('');\n addCommentBefore(ctx, lines, ik.commentBefore, false);\n if (ik.comment)\n reqNewline = true;\n }\n const iv = identity.isNode(item.value) ? item.value : null;\n if (iv) {\n if (iv.comment)\n comment = iv.comment;\n if (iv.commentBefore)\n reqNewline = true;\n }\n else if (item.value == null && ik?.comment) {\n comment = ik.comment;\n }\n }\n if (comment)\n reqNewline = true;\n let str = stringify.stringify(item, itemCtx, () => (comment = null));\n if (i < items.length - 1)\n str += ',';\n if (comment)\n str += stringifyComment.lineComment(str, itemIndent, commentString(comment));\n if (!reqNewline && (lines.length > linesAtValue || str.includes('\\n')))\n reqNewline = true;\n lines.push(str);\n linesAtValue = lines.length;\n }\n const { start, end } = flowChars;\n if (lines.length === 0) {\n return start + end;\n }\n else {\n if (!reqNewline) {\n const len = lines.reduce((sum, line) => sum + line.length + 2, 2);\n reqNewline = ctx.options.lineWidth > 0 && len > ctx.options.lineWidth;\n }\n if (reqNewline) {\n let str = start;\n for (const line of lines)\n str += line ? `\\n${indentStep}${indent}${line}` : '\\n';\n return `${str}\\n${indent}${end}`;\n }\n else {\n return `${start}${fcPadding}${lines.join(' ')}${fcPadding}${end}`;\n }\n }\n}\nfunction addCommentBefore({ indent, options: { commentString } }, lines, comment, chompKeep) {\n if (comment && chompKeep)\n comment = comment.replace(/^\\n+/, '');\n if (comment) {\n const ic = stringifyComment.indentComment(commentString(comment), indent);\n lines.push(ic.trimStart()); // Avoid double indent on first line\n }\n}\n\nexports.stringifyCollection = stringifyCollection;\n", "'use strict';\n\nvar stringifyCollection = require('../stringify/stringifyCollection.js');\nvar addPairToJSMap = require('./addPairToJSMap.js');\nvar Collection = require('./Collection.js');\nvar identity = require('./identity.js');\nvar Pair = require('./Pair.js');\nvar Scalar = require('./Scalar.js');\n\nfunction findPair(items, key) {\n const k = identity.isScalar(key) ? key.value : key;\n for (const it of items) {\n if (identity.isPair(it)) {\n if (it.key === key || it.key === k)\n return it;\n if (identity.isScalar(it.key) && it.key.value === k)\n return it;\n }\n }\n return undefined;\n}\nclass YAMLMap extends Collection.Collection {\n static get tagName() {\n return 'tag:yaml.org,2002:map';\n }\n constructor(schema) {\n super(identity.MAP, schema);\n this.items = [];\n }\n /**\n * A generic collection parsing method that can be extended\n * to other node classes that inherit from YAMLMap\n */\n static from(schema, obj, ctx) {\n const { keepUndefined, replacer } = ctx;\n const map = new this(schema);\n const add = (key, value) => {\n if (typeof replacer === 'function')\n value = replacer.call(obj, key, value);\n else if (Array.isArray(replacer) && !replacer.includes(key))\n return;\n if (value !== undefined || keepUndefined)\n map.items.push(Pair.createPair(key, value, ctx));\n };\n if (obj instanceof Map) {\n for (const [key, value] of obj)\n add(key, value);\n }\n else if (obj && typeof obj === 'object') {\n for (const key of Object.keys(obj))\n add(key, obj[key]);\n }\n if (typeof schema.sortMapEntries === 'function') {\n map.items.sort(schema.sortMapEntries);\n }\n return map;\n }\n /**\n * Adds a value to the collection.\n *\n * @param overwrite - If not set `true`, using a key that is already in the\n * collection will throw. Otherwise, overwrites the previous value.\n */\n add(pair, overwrite) {\n let _pair;\n if (identity.isPair(pair))\n _pair = pair;\n else if (!pair || typeof pair !== 'object' || !('key' in pair)) {\n // In TypeScript, this never happens.\n _pair = new Pair.Pair(pair, pair?.value);\n }\n else\n _pair = new Pair.Pair(pair.key, pair.value);\n const prev = findPair(this.items, _pair.key);\n const sortEntries = this.schema?.sortMapEntries;\n if (prev) {\n if (!overwrite)\n throw new Error(`Key ${_pair.key} already set`);\n // For scalars, keep the old node & its comments and anchors\n if (identity.isScalar(prev.value) && Scalar.isScalarValue(_pair.value))\n prev.value.value = _pair.value;\n else\n prev.value = _pair.value;\n }\n else if (sortEntries) {\n const i = this.items.findIndex(item => sortEntries(_pair, item) < 0);\n if (i === -1)\n this.items.push(_pair);\n else\n this.items.splice(i, 0, _pair);\n }\n else {\n this.items.push(_pair);\n }\n }\n delete(key) {\n const it = findPair(this.items, key);\n if (!it)\n return false;\n const del = this.items.splice(this.items.indexOf(it), 1);\n return del.length > 0;\n }\n get(key, keepScalar) {\n const it = findPair(this.items, key);\n const node = it?.value;\n return (!keepScalar && identity.isScalar(node) ? node.value : node) ?? undefined;\n }\n has(key) {\n return !!findPair(this.items, key);\n }\n set(key, value) {\n this.add(new Pair.Pair(key, value), true);\n }\n /**\n * @param ctx - Conversion context, originally set in Document#toJS()\n * @param {Class} Type - If set, forces the returned collection type\n * @returns Instance of Type, Map, or Object\n */\n toJSON(_, ctx, Type) {\n const map = Type ? new Type() : ctx?.mapAsMap ? new Map() : {};\n if (ctx?.onCreate)\n ctx.onCreate(map);\n for (const item of this.items)\n addPairToJSMap.addPairToJSMap(ctx, map, item);\n return map;\n }\n toString(ctx, onComment, onChompKeep) {\n if (!ctx)\n return JSON.stringify(this);\n for (const item of this.items) {\n if (!identity.isPair(item))\n throw new Error(`Map items must all be pairs; found ${JSON.stringify(item)} instead`);\n }\n if (!ctx.allNullValues && this.hasAllNullValues(false))\n ctx = Object.assign({}, ctx, { allNullValues: true });\n return stringifyCollection.stringifyCollection(this, ctx, {\n blockItemPrefix: '',\n flowChars: { start: '{', end: '}' },\n itemIndent: ctx.indent || '',\n onChompKeep,\n onComment\n });\n }\n}\n\nexports.YAMLMap = YAMLMap;\nexports.findPair = findPair;\n", "'use strict';\n\nvar identity = require('../../nodes/identity.js');\nvar YAMLMap = require('../../nodes/YAMLMap.js');\n\nconst map = {\n collection: 'map',\n default: true,\n nodeClass: YAMLMap.YAMLMap,\n tag: 'tag:yaml.org,2002:map',\n resolve(map, onError) {\n if (!identity.isMap(map))\n onError('Expected a mapping for this tag');\n return map;\n },\n createNode: (schema, obj, ctx) => YAMLMap.YAMLMap.from(schema, obj, ctx)\n};\n\nexports.map = map;\n", "'use strict';\n\nvar createNode = require('../doc/createNode.js');\nvar stringifyCollection = require('../stringify/stringifyCollection.js');\nvar Collection = require('./Collection.js');\nvar identity = require('./identity.js');\nvar Scalar = require('./Scalar.js');\nvar toJS = require('./toJS.js');\n\nclass YAMLSeq extends Collection.Collection {\n static get tagName() {\n return 'tag:yaml.org,2002:seq';\n }\n constructor(schema) {\n super(identity.SEQ, schema);\n this.items = [];\n }\n add(value) {\n this.items.push(value);\n }\n /**\n * Removes a value from the collection.\n *\n * `key` must contain a representation of an integer for this to succeed.\n * It may be wrapped in a `Scalar`.\n *\n * @returns `true` if the item was found and removed.\n */\n delete(key) {\n const idx = asItemIndex(key);\n if (typeof idx !== 'number')\n return false;\n const del = this.items.splice(idx, 1);\n return del.length > 0;\n }\n get(key, keepScalar) {\n const idx = asItemIndex(key);\n if (typeof idx !== 'number')\n return undefined;\n const it = this.items[idx];\n return !keepScalar && identity.isScalar(it) ? it.value : it;\n }\n /**\n * Checks if the collection includes a value with the key `key`.\n *\n * `key` must contain a representation of an integer for this to succeed.\n * It may be wrapped in a `Scalar`.\n */\n has(key) {\n const idx = asItemIndex(key);\n return typeof idx === 'number' && idx < this.items.length;\n }\n /**\n * Sets a value in this collection. For `!!set`, `value` needs to be a\n * boolean to add/remove the item from the set.\n *\n * If `key` does not contain a representation of an integer, this will throw.\n * It may be wrapped in a `Scalar`.\n */\n set(key, value) {\n const idx = asItemIndex(key);\n if (typeof idx !== 'number')\n throw new Error(`Expected a valid index, not ${key}.`);\n const prev = this.items[idx];\n if (identity.isScalar(prev) && Scalar.isScalarValue(value))\n prev.value = value;\n else\n this.items[idx] = value;\n }\n toJSON(_, ctx) {\n const seq = [];\n if (ctx?.onCreate)\n ctx.onCreate(seq);\n let i = 0;\n for (const item of this.items)\n seq.push(toJS.toJS(item, String(i++), ctx));\n return seq;\n }\n toString(ctx, onComment, onChompKeep) {\n if (!ctx)\n return JSON.stringify(this);\n return stringifyCollection.stringifyCollection(this, ctx, {\n blockItemPrefix: '- ',\n flowChars: { start: '[', end: ']' },\n itemIndent: (ctx.indent || '') + ' ',\n onChompKeep,\n onComment\n });\n }\n static from(schema, obj, ctx) {\n const { replacer } = ctx;\n const seq = new this(schema);\n if (obj && Symbol.iterator in Object(obj)) {\n let i = 0;\n for (let it of obj) {\n if (typeof replacer === 'function') {\n const key = obj instanceof Set ? it : String(i++);\n it = replacer.call(obj, key, it);\n }\n seq.items.push(createNode.createNode(it, undefined, ctx));\n }\n }\n return seq;\n }\n}\nfunction asItemIndex(key) {\n let idx = identity.isScalar(key) ? key.value : key;\n if (idx && typeof idx === 'string')\n idx = Number(idx);\n return typeof idx === 'number' && Number.isInteger(idx) && idx >= 0\n ? idx\n : null;\n}\n\nexports.YAMLSeq = YAMLSeq;\n", "'use strict';\n\nvar identity = require('../../nodes/identity.js');\nvar YAMLSeq = require('../../nodes/YAMLSeq.js');\n\nconst seq = {\n collection: 'seq',\n default: true,\n nodeClass: YAMLSeq.YAMLSeq,\n tag: 'tag:yaml.org,2002:seq',\n resolve(seq, onError) {\n if (!identity.isSeq(seq))\n onError('Expected a sequence for this tag');\n return seq;\n },\n createNode: (schema, obj, ctx) => YAMLSeq.YAMLSeq.from(schema, obj, ctx)\n};\n\nexports.seq = seq;\n", "'use strict';\n\nvar stringifyString = require('../../stringify/stringifyString.js');\n\nconst string = {\n identify: value => typeof value === 'string',\n default: true,\n tag: 'tag:yaml.org,2002:str',\n resolve: str => str,\n stringify(item, ctx, onComment, onChompKeep) {\n ctx = Object.assign({ actualString: true }, ctx);\n return stringifyString.stringifyString(item, ctx, onComment, onChompKeep);\n }\n};\n\nexports.string = string;\n", "'use strict';\n\nvar Scalar = require('../../nodes/Scalar.js');\n\nconst nullTag = {\n identify: value => value == null,\n createNode: () => new Scalar.Scalar(null),\n default: true,\n tag: 'tag:yaml.org,2002:null',\n test: /^(?:~|[Nn]ull|NULL)?$/,\n resolve: () => new Scalar.Scalar(null),\n stringify: ({ source }, ctx) => typeof source === 'string' && nullTag.test.test(source)\n ? source\n : ctx.options.nullStr\n};\n\nexports.nullTag = nullTag;\n", "'use strict';\n\nvar Scalar = require('../../nodes/Scalar.js');\n\nconst boolTag = {\n identify: value => typeof value === 'boolean',\n default: true,\n tag: 'tag:yaml.org,2002:bool',\n test: /^(?:[Tt]rue|TRUE|[Ff]alse|FALSE)$/,\n resolve: str => new Scalar.Scalar(str[0] === 't' || str[0] === 'T'),\n stringify({ source, value }, ctx) {\n if (source && boolTag.test.test(source)) {\n const sv = source[0] === 't' || source[0] === 'T';\n if (value === sv)\n return source;\n }\n return value ? ctx.options.trueStr : ctx.options.falseStr;\n }\n};\n\nexports.boolTag = boolTag;\n", "'use strict';\n\nfunction stringifyNumber({ format, minFractionDigits, tag, value }) {\n if (typeof value === 'bigint')\n return String(value);\n const num = typeof value === 'number' ? value : Number(value);\n if (!isFinite(num))\n return isNaN(num) ? '.nan' : num < 0 ? '-.inf' : '.inf';\n let n = JSON.stringify(value);\n if (!format &&\n minFractionDigits &&\n (!tag || tag === 'tag:yaml.org,2002:float') &&\n /^\\d/.test(n)) {\n let i = n.indexOf('.');\n if (i < 0) {\n i = n.length;\n n += '.';\n }\n let d = minFractionDigits - (n.length - i - 1);\n while (d-- > 0)\n n += '0';\n }\n return n;\n}\n\nexports.stringifyNumber = stringifyNumber;\n", "'use strict';\n\nvar Scalar = require('../../nodes/Scalar.js');\nvar stringifyNumber = require('../../stringify/stringifyNumber.js');\n\nconst floatNaN = {\n identify: value => typeof value === 'number',\n default: true,\n tag: 'tag:yaml.org,2002:float',\n test: /^(?:[-+]?\\.(?:inf|Inf|INF)|\\.nan|\\.NaN|\\.NAN)$/,\n resolve: str => str.slice(-3).toLowerCase() === 'nan'\n ? NaN\n : str[0] === '-'\n ? Number.NEGATIVE_INFINITY\n : Number.POSITIVE_INFINITY,\n stringify: stringifyNumber.stringifyNumber\n};\nconst floatExp = {\n identify: value => typeof value === 'number',\n default: true,\n tag: 'tag:yaml.org,2002:float',\n format: 'EXP',\n test: /^[-+]?(?:\\.[0-9]+|[0-9]+(?:\\.[0-9]*)?)[eE][-+]?[0-9]+$/,\n resolve: str => parseFloat(str),\n stringify(node) {\n const num = Number(node.value);\n return isFinite(num) ? num.toExponential() : stringifyNumber.stringifyNumber(node);\n }\n};\nconst float = {\n identify: value => typeof value === 'number',\n default: true,\n tag: 'tag:yaml.org,2002:float',\n test: /^[-+]?(?:\\.[0-9]+|[0-9]+\\.[0-9]*)$/,\n resolve(str) {\n const node = new Scalar.Scalar(parseFloat(str));\n const dot = str.indexOf('.');\n if (dot !== -1 && str[str.length - 1] === '0')\n node.minFractionDigits = str.length - dot - 1;\n return node;\n },\n stringify: stringifyNumber.stringifyNumber\n};\n\nexports.float = float;\nexports.floatExp = floatExp;\nexports.floatNaN = floatNaN;\n", "'use strict';\n\nvar stringifyNumber = require('../../stringify/stringifyNumber.js');\n\nconst intIdentify = (value) => typeof value === 'bigint' || Number.isInteger(value);\nconst intResolve = (str, offset, radix, { intAsBigInt }) => (intAsBigInt ? BigInt(str) : parseInt(str.substring(offset), radix));\nfunction intStringify(node, radix, prefix) {\n const { value } = node;\n if (intIdentify(value) && value >= 0)\n return prefix + value.toString(radix);\n return stringifyNumber.stringifyNumber(node);\n}\nconst intOct = {\n identify: value => intIdentify(value) && value >= 0,\n default: true,\n tag: 'tag:yaml.org,2002:int',\n format: 'OCT',\n test: /^0o[0-7]+$/,\n resolve: (str, _onError, opt) => intResolve(str, 2, 8, opt),\n stringify: node => intStringify(node, 8, '0o')\n};\nconst int = {\n identify: intIdentify,\n default: true,\n tag: 'tag:yaml.org,2002:int',\n test: /^[-+]?[0-9]+$/,\n resolve: (str, _onError, opt) => intResolve(str, 0, 10, opt),\n stringify: stringifyNumber.stringifyNumber\n};\nconst intHex = {\n identify: value => intIdentify(value) && value >= 0,\n default: true,\n tag: 'tag:yaml.org,2002:int',\n format: 'HEX',\n test: /^0x[0-9a-fA-F]+$/,\n resolve: (str, _onError, opt) => intResolve(str, 2, 16, opt),\n stringify: node => intStringify(node, 16, '0x')\n};\n\nexports.int = int;\nexports.intHex = intHex;\nexports.intOct = intOct;\n", "'use strict';\n\nvar map = require('../common/map.js');\nvar _null = require('../common/null.js');\nvar seq = require('../common/seq.js');\nvar string = require('../common/string.js');\nvar bool = require('./bool.js');\nvar float = require('./float.js');\nvar int = require('./int.js');\n\nconst schema = [\n map.map,\n seq.seq,\n string.string,\n _null.nullTag,\n bool.boolTag,\n int.intOct,\n int.int,\n int.intHex,\n float.floatNaN,\n float.floatExp,\n float.float\n];\n\nexports.schema = schema;\n", "'use strict';\n\nvar Scalar = require('../../nodes/Scalar.js');\nvar map = require('../common/map.js');\nvar seq = require('../common/seq.js');\n\nfunction intIdentify(value) {\n return typeof value === 'bigint' || Number.isInteger(value);\n}\nconst stringifyJSON = ({ value }) => JSON.stringify(value);\nconst jsonScalars = [\n {\n identify: value => typeof value === 'string',\n default: true,\n tag: 'tag:yaml.org,2002:str',\n resolve: str => str,\n stringify: stringifyJSON\n },\n {\n identify: value => value == null,\n createNode: () => new Scalar.Scalar(null),\n default: true,\n tag: 'tag:yaml.org,2002:null',\n test: /^null$/,\n resolve: () => null,\n stringify: stringifyJSON\n },\n {\n identify: value => typeof value === 'boolean',\n default: true,\n tag: 'tag:yaml.org,2002:bool',\n test: /^true$|^false$/,\n resolve: str => str === 'true',\n stringify: stringifyJSON\n },\n {\n identify: intIdentify,\n default: true,\n tag: 'tag:yaml.org,2002:int',\n test: /^-?(?:0|[1-9][0-9]*)$/,\n resolve: (str, _onError, { intAsBigInt }) => intAsBigInt ? BigInt(str) : parseInt(str, 10),\n stringify: ({ value }) => intIdentify(value) ? value.toString() : JSON.stringify(value)\n },\n {\n identify: value => typeof value === 'number',\n default: true,\n tag: 'tag:yaml.org,2002:float',\n test: /^-?(?:0|[1-9][0-9]*)(?:\\.[0-9]*)?(?:[eE][-+]?[0-9]+)?$/,\n resolve: str => parseFloat(str),\n stringify: stringifyJSON\n }\n];\nconst jsonError = {\n default: true,\n tag: '',\n test: /^/,\n resolve(str, onError) {\n onError(`Unresolved plain scalar ${JSON.stringify(str)}`);\n return str;\n }\n};\nconst schema = [map.map, seq.seq].concat(jsonScalars, jsonError);\n\nexports.schema = schema;\n", "'use strict';\n\nvar node_buffer = require('node:buffer');\nvar Scalar = require('../../nodes/Scalar.js');\nvar stringifyString = require('../../stringify/stringifyString.js');\n\nconst binary = {\n identify: value => value instanceof Uint8Array, // Buffer inherits from Uint8Array\n default: false,\n tag: 'tag:yaml.org,2002:binary',\n /**\n * Returns a Buffer in node and an Uint8Array in browsers\n *\n * To use the resulting buffer as an image, you'll want to do something like:\n *\n * const blob = new Blob([buffer], { type: 'image/jpeg' })\n * document.querySelector('#photo').src = URL.createObjectURL(blob)\n */\n resolve(src, onError) {\n if (typeof node_buffer.Buffer === 'function') {\n return node_buffer.Buffer.from(src, 'base64');\n }\n else if (typeof atob === 'function') {\n // On IE 11, atob() can't handle newlines\n const str = atob(src.replace(/[\\n\\r]/g, ''));\n const buffer = new Uint8Array(str.length);\n for (let i = 0; i < str.length; ++i)\n buffer[i] = str.charCodeAt(i);\n return buffer;\n }\n else {\n onError('This environment does not support reading binary tags; either Buffer or atob is required');\n return src;\n }\n },\n stringify({ comment, type, value }, ctx, onComment, onChompKeep) {\n if (!value)\n return '';\n const buf = value; // checked earlier by binary.identify()\n let str;\n if (typeof node_buffer.Buffer === 'function') {\n str =\n buf instanceof node_buffer.Buffer\n ? buf.toString('base64')\n : node_buffer.Buffer.from(buf.buffer).toString('base64');\n }\n else if (typeof btoa === 'function') {\n let s = '';\n for (let i = 0; i < buf.length; ++i)\n s += String.fromCharCode(buf[i]);\n str = btoa(s);\n }\n else {\n throw new Error('This environment does not support writing binary tags; either Buffer or btoa is required');\n }\n if (!type)\n type = Scalar.Scalar.BLOCK_LITERAL;\n if (type !== Scalar.Scalar.QUOTE_DOUBLE) {\n const lineWidth = Math.max(ctx.options.lineWidth - ctx.indent.length, ctx.options.minContentWidth);\n const n = Math.ceil(str.length / lineWidth);\n const lines = new Array(n);\n for (let i = 0, o = 0; i < n; ++i, o += lineWidth) {\n lines[i] = str.substr(o, lineWidth);\n }\n str = lines.join(type === Scalar.Scalar.BLOCK_LITERAL ? '\\n' : ' ');\n }\n return stringifyString.stringifyString({ comment, type, value: str }, ctx, onComment, onChompKeep);\n }\n};\n\nexports.binary = binary;\n", "'use strict';\n\nvar identity = require('../../nodes/identity.js');\nvar Pair = require('../../nodes/Pair.js');\nvar Scalar = require('../../nodes/Scalar.js');\nvar YAMLSeq = require('../../nodes/YAMLSeq.js');\n\nfunction resolvePairs(seq, onError) {\n if (identity.isSeq(seq)) {\n for (let i = 0; i < seq.items.length; ++i) {\n let item = seq.items[i];\n if (identity.isPair(item))\n continue;\n else if (identity.isMap(item)) {\n if (item.items.length > 1)\n onError('Each pair must have its own sequence indicator');\n const pair = item.items[0] || new Pair.Pair(new Scalar.Scalar(null));\n if (item.commentBefore)\n pair.key.commentBefore = pair.key.commentBefore\n ? `${item.commentBefore}\\n${pair.key.commentBefore}`\n : item.commentBefore;\n if (item.comment) {\n const cn = pair.value ?? pair.key;\n cn.comment = cn.comment\n ? `${item.comment}\\n${cn.comment}`\n : item.comment;\n }\n item = pair;\n }\n seq.items[i] = identity.isPair(item) ? item : new Pair.Pair(item);\n }\n }\n else\n onError('Expected a sequence for this tag');\n return seq;\n}\nfunction createPairs(schema, iterable, ctx) {\n const { replacer } = ctx;\n const pairs = new YAMLSeq.YAMLSeq(schema);\n pairs.tag = 'tag:yaml.org,2002:pairs';\n let i = 0;\n if (iterable && Symbol.iterator in Object(iterable))\n for (let it of iterable) {\n if (typeof replacer === 'function')\n it = replacer.call(iterable, String(i++), it);\n let key, value;\n if (Array.isArray(it)) {\n if (it.length === 2) {\n key = it[0];\n value = it[1];\n }\n else\n throw new TypeError(`Expected [key, value] tuple: ${it}`);\n }\n else if (it && it instanceof Object) {\n const keys = Object.keys(it);\n if (keys.length === 1) {\n key = keys[0];\n value = it[key];\n }\n else {\n throw new TypeError(`Expected tuple with one key, not ${keys.length} keys`);\n }\n }\n else {\n key = it;\n }\n pairs.items.push(Pair.createPair(key, value, ctx));\n }\n return pairs;\n}\nconst pairs = {\n collection: 'seq',\n default: false,\n tag: 'tag:yaml.org,2002:pairs',\n resolve: resolvePairs,\n createNode: createPairs\n};\n\nexports.createPairs = createPairs;\nexports.pairs = pairs;\nexports.resolvePairs = resolvePairs;\n", "'use strict';\n\nvar identity = require('../../nodes/identity.js');\nvar toJS = require('../../nodes/toJS.js');\nvar YAMLMap = require('../../nodes/YAMLMap.js');\nvar YAMLSeq = require('../../nodes/YAMLSeq.js');\nvar pairs = require('./pairs.js');\n\nclass YAMLOMap extends YAMLSeq.YAMLSeq {\n constructor() {\n super();\n this.add = YAMLMap.YAMLMap.prototype.add.bind(this);\n this.delete = YAMLMap.YAMLMap.prototype.delete.bind(this);\n this.get = YAMLMap.YAMLMap.prototype.get.bind(this);\n this.has = YAMLMap.YAMLMap.prototype.has.bind(this);\n this.set = YAMLMap.YAMLMap.prototype.set.bind(this);\n this.tag = YAMLOMap.tag;\n }\n /**\n * If `ctx` is given, the return type is actually `Map`,\n * but TypeScript won't allow widening the signature of a child method.\n */\n toJSON(_, ctx) {\n if (!ctx)\n return super.toJSON(_);\n const map = new Map();\n if (ctx?.onCreate)\n ctx.onCreate(map);\n for (const pair of this.items) {\n let key, value;\n if (identity.isPair(pair)) {\n key = toJS.toJS(pair.key, '', ctx);\n value = toJS.toJS(pair.value, key, ctx);\n }\n else {\n key = toJS.toJS(pair, '', ctx);\n }\n if (map.has(key))\n throw new Error('Ordered maps must not include duplicate keys');\n map.set(key, value);\n }\n return map;\n }\n static from(schema, iterable, ctx) {\n const pairs$1 = pairs.createPairs(schema, iterable, ctx);\n const omap = new this();\n omap.items = pairs$1.items;\n return omap;\n }\n}\nYAMLOMap.tag = 'tag:yaml.org,2002:omap';\nconst omap = {\n collection: 'seq',\n identify: value => value instanceof Map,\n nodeClass: YAMLOMap,\n default: false,\n tag: 'tag:yaml.org,2002:omap',\n resolve(seq, onError) {\n const pairs$1 = pairs.resolvePairs(seq, onError);\n const seenKeys = [];\n for (const { key } of pairs$1.items) {\n if (identity.isScalar(key)) {\n if (seenKeys.includes(key.value)) {\n onError(`Ordered maps must not include duplicate keys: ${key.value}`);\n }\n else {\n seenKeys.push(key.value);\n }\n }\n }\n return Object.assign(new YAMLOMap(), pairs$1);\n },\n createNode: (schema, iterable, ctx) => YAMLOMap.from(schema, iterable, ctx)\n};\n\nexports.YAMLOMap = YAMLOMap;\nexports.omap = omap;\n", "'use strict';\n\nvar Scalar = require('../../nodes/Scalar.js');\n\nfunction boolStringify({ value, source }, ctx) {\n const boolObj = value ? trueTag : falseTag;\n if (source && boolObj.test.test(source))\n return source;\n return value ? ctx.options.trueStr : ctx.options.falseStr;\n}\nconst trueTag = {\n identify: value => value === true,\n default: true,\n tag: 'tag:yaml.org,2002:bool',\n test: /^(?:Y|y|[Yy]es|YES|[Tt]rue|TRUE|[Oo]n|ON)$/,\n resolve: () => new Scalar.Scalar(true),\n stringify: boolStringify\n};\nconst falseTag = {\n identify: value => value === false,\n default: true,\n tag: 'tag:yaml.org,2002:bool',\n test: /^(?:N|n|[Nn]o|NO|[Ff]alse|FALSE|[Oo]ff|OFF)$/,\n resolve: () => new Scalar.Scalar(false),\n stringify: boolStringify\n};\n\nexports.falseTag = falseTag;\nexports.trueTag = trueTag;\n", "'use strict';\n\nvar Scalar = require('../../nodes/Scalar.js');\nvar stringifyNumber = require('../../stringify/stringifyNumber.js');\n\nconst floatNaN = {\n identify: value => typeof value === 'number',\n default: true,\n tag: 'tag:yaml.org,2002:float',\n test: /^(?:[-+]?\\.(?:inf|Inf|INF)|\\.nan|\\.NaN|\\.NAN)$/,\n resolve: (str) => str.slice(-3).toLowerCase() === 'nan'\n ? NaN\n : str[0] === '-'\n ? Number.NEGATIVE_INFINITY\n : Number.POSITIVE_INFINITY,\n stringify: stringifyNumber.stringifyNumber\n};\nconst floatExp = {\n identify: value => typeof value === 'number',\n default: true,\n tag: 'tag:yaml.org,2002:float',\n format: 'EXP',\n test: /^[-+]?(?:[0-9][0-9_]*)?(?:\\.[0-9_]*)?[eE][-+]?[0-9]+$/,\n resolve: (str) => parseFloat(str.replace(/_/g, '')),\n stringify(node) {\n const num = Number(node.value);\n return isFinite(num) ? num.toExponential() : stringifyNumber.stringifyNumber(node);\n }\n};\nconst float = {\n identify: value => typeof value === 'number',\n default: true,\n tag: 'tag:yaml.org,2002:float',\n test: /^[-+]?(?:[0-9][0-9_]*)?\\.[0-9_]*$/,\n resolve(str) {\n const node = new Scalar.Scalar(parseFloat(str.replace(/_/g, '')));\n const dot = str.indexOf('.');\n if (dot !== -1) {\n const f = str.substring(dot + 1).replace(/_/g, '');\n if (f[f.length - 1] === '0')\n node.minFractionDigits = f.length;\n }\n return node;\n },\n stringify: stringifyNumber.stringifyNumber\n};\n\nexports.float = float;\nexports.floatExp = floatExp;\nexports.floatNaN = floatNaN;\n", "'use strict';\n\nvar stringifyNumber = require('../../stringify/stringifyNumber.js');\n\nconst intIdentify = (value) => typeof value === 'bigint' || Number.isInteger(value);\nfunction intResolve(str, offset, radix, { intAsBigInt }) {\n const sign = str[0];\n if (sign === '-' || sign === '+')\n offset += 1;\n str = str.substring(offset).replace(/_/g, '');\n if (intAsBigInt) {\n switch (radix) {\n case 2:\n str = `0b${str}`;\n break;\n case 8:\n str = `0o${str}`;\n break;\n case 16:\n str = `0x${str}`;\n break;\n }\n const n = BigInt(str);\n return sign === '-' ? BigInt(-1) * n : n;\n }\n const n = parseInt(str, radix);\n return sign === '-' ? -1 * n : n;\n}\nfunction intStringify(node, radix, prefix) {\n const { value } = node;\n if (intIdentify(value)) {\n const str = value.toString(radix);\n return value < 0 ? '-' + prefix + str.substr(1) : prefix + str;\n }\n return stringifyNumber.stringifyNumber(node);\n}\nconst intBin = {\n identify: intIdentify,\n default: true,\n tag: 'tag:yaml.org,2002:int',\n format: 'BIN',\n test: /^[-+]?0b[0-1_]+$/,\n resolve: (str, _onError, opt) => intResolve(str, 2, 2, opt),\n stringify: node => intStringify(node, 2, '0b')\n};\nconst intOct = {\n identify: intIdentify,\n default: true,\n tag: 'tag:yaml.org,2002:int',\n format: 'OCT',\n test: /^[-+]?0[0-7_]+$/,\n resolve: (str, _onError, opt) => intResolve(str, 1, 8, opt),\n stringify: node => intStringify(node, 8, '0')\n};\nconst int = {\n identify: intIdentify,\n default: true,\n tag: 'tag:yaml.org,2002:int',\n test: /^[-+]?[0-9][0-9_]*$/,\n resolve: (str, _onError, opt) => intResolve(str, 0, 10, opt),\n stringify: stringifyNumber.stringifyNumber\n};\nconst intHex = {\n identify: intIdentify,\n default: true,\n tag: 'tag:yaml.org,2002:int',\n format: 'HEX',\n test: /^[-+]?0x[0-9a-fA-F_]+$/,\n resolve: (str, _onError, opt) => intResolve(str, 2, 16, opt),\n stringify: node => intStringify(node, 16, '0x')\n};\n\nexports.int = int;\nexports.intBin = intBin;\nexports.intHex = intHex;\nexports.intOct = intOct;\n", "'use strict';\n\nvar identity = require('../../nodes/identity.js');\nvar Pair = require('../../nodes/Pair.js');\nvar YAMLMap = require('../../nodes/YAMLMap.js');\n\nclass YAMLSet extends YAMLMap.YAMLMap {\n constructor(schema) {\n super(schema);\n this.tag = YAMLSet.tag;\n }\n add(key) {\n let pair;\n if (identity.isPair(key))\n pair = key;\n else if (key &&\n typeof key === 'object' &&\n 'key' in key &&\n 'value' in key &&\n key.value === null)\n pair = new Pair.Pair(key.key, null);\n else\n pair = new Pair.Pair(key, null);\n const prev = YAMLMap.findPair(this.items, pair.key);\n if (!prev)\n this.items.push(pair);\n }\n /**\n * If `keepPair` is `true`, returns the Pair matching `key`.\n * Otherwise, returns the value of that Pair's key.\n */\n get(key, keepPair) {\n const pair = YAMLMap.findPair(this.items, key);\n return !keepPair && identity.isPair(pair)\n ? identity.isScalar(pair.key)\n ? pair.key.value\n : pair.key\n : pair;\n }\n set(key, value) {\n if (typeof value !== 'boolean')\n throw new Error(`Expected boolean value for set(key, value) in a YAML set, not ${typeof value}`);\n const prev = YAMLMap.findPair(this.items, key);\n if (prev && !value) {\n this.items.splice(this.items.indexOf(prev), 1);\n }\n else if (!prev && value) {\n this.items.push(new Pair.Pair(key));\n }\n }\n toJSON(_, ctx) {\n return super.toJSON(_, ctx, Set);\n }\n toString(ctx, onComment, onChompKeep) {\n if (!ctx)\n return JSON.stringify(this);\n if (this.hasAllNullValues(true))\n return super.toString(Object.assign({}, ctx, { allNullValues: true }), onComment, onChompKeep);\n else\n throw new Error('Set items must all have null values');\n }\n static from(schema, iterable, ctx) {\n const { replacer } = ctx;\n const set = new this(schema);\n if (iterable && Symbol.iterator in Object(iterable))\n for (let value of iterable) {\n if (typeof replacer === 'function')\n value = replacer.call(iterable, value, value);\n set.items.push(Pair.createPair(value, null, ctx));\n }\n return set;\n }\n}\nYAMLSet.tag = 'tag:yaml.org,2002:set';\nconst set = {\n collection: 'map',\n identify: value => value instanceof Set,\n nodeClass: YAMLSet,\n default: false,\n tag: 'tag:yaml.org,2002:set',\n createNode: (schema, iterable, ctx) => YAMLSet.from(schema, iterable, ctx),\n resolve(map, onError) {\n if (identity.isMap(map)) {\n if (map.hasAllNullValues(true))\n return Object.assign(new YAMLSet(), map);\n else\n onError('Set items must all have null values');\n }\n else\n onError('Expected a mapping for this tag');\n return map;\n }\n};\n\nexports.YAMLSet = YAMLSet;\nexports.set = set;\n", "'use strict';\n\nvar stringifyNumber = require('../../stringify/stringifyNumber.js');\n\n/** Internal types handle bigint as number, because TS can't figure it out. */\nfunction parseSexagesimal(str, asBigInt) {\n const sign = str[0];\n const parts = sign === '-' || sign === '+' ? str.substring(1) : str;\n const num = (n) => asBigInt ? BigInt(n) : Number(n);\n const res = parts\n .replace(/_/g, '')\n .split(':')\n .reduce((res, p) => res * num(60) + num(p), num(0));\n return (sign === '-' ? num(-1) * res : res);\n}\n/**\n * hhhh:mm:ss.sss\n *\n * Internal types handle bigint as number, because TS can't figure it out.\n */\nfunction stringifySexagesimal(node) {\n let { value } = node;\n let num = (n) => n;\n if (typeof value === 'bigint')\n num = n => BigInt(n);\n else if (isNaN(value) || !isFinite(value))\n return stringifyNumber.stringifyNumber(node);\n let sign = '';\n if (value < 0) {\n sign = '-';\n value *= num(-1);\n }\n const _60 = num(60);\n const parts = [value % _60]; // seconds, including ms\n if (value < 60) {\n parts.unshift(0); // at least one : is required\n }\n else {\n value = (value - parts[0]) / _60;\n parts.unshift(value % _60); // minutes\n if (value >= 60) {\n value = (value - parts[0]) / _60;\n parts.unshift(value); // hours\n }\n }\n return (sign +\n parts\n .map(n => String(n).padStart(2, '0'))\n .join(':')\n .replace(/000000\\d*$/, '') // % 60 may introduce error\n );\n}\nconst intTime = {\n identify: value => typeof value === 'bigint' || Number.isInteger(value),\n default: true,\n tag: 'tag:yaml.org,2002:int',\n format: 'TIME',\n test: /^[-+]?[0-9][0-9_]*(?::[0-5]?[0-9])+$/,\n resolve: (str, _onError, { intAsBigInt }) => parseSexagesimal(str, intAsBigInt),\n stringify: stringifySexagesimal\n};\nconst floatTime = {\n identify: value => typeof value === 'number',\n default: true,\n tag: 'tag:yaml.org,2002:float',\n format: 'TIME',\n test: /^[-+]?[0-9][0-9_]*(?::[0-5]?[0-9])+\\.[0-9_]*$/,\n resolve: str => parseSexagesimal(str, false),\n stringify: stringifySexagesimal\n};\nconst timestamp = {\n identify: value => value instanceof Date,\n default: true,\n tag: 'tag:yaml.org,2002:timestamp',\n // If the time zone is omitted, the timestamp is assumed to be specified in UTC. The time part\n // may be omitted altogether, resulting in a date format. In such a case, the time part is\n // assumed to be 00:00:00Z (start of day, UTC).\n test: RegExp('^([0-9]{4})-([0-9]{1,2})-([0-9]{1,2})' + // YYYY-Mm-Dd\n '(?:' + // time is optional\n '(?:t|T|[ \\\\t]+)' + // t | T | whitespace\n '([0-9]{1,2}):([0-9]{1,2}):([0-9]{1,2}(\\\\.[0-9]+)?)' + // Hh:Mm:Ss(.ss)?\n '(?:[ \\\\t]*(Z|[-+][012]?[0-9](?::[0-9]{2})?))?' + // Z | +5 | -03:30\n ')?$'),\n resolve(str) {\n const match = str.match(timestamp.test);\n if (!match)\n throw new Error('!!timestamp expects a date, starting with yyyy-mm-dd');\n const [, year, month, day, hour, minute, second] = match.map(Number);\n const millisec = match[7] ? Number((match[7] + '00').substr(1, 3)) : 0;\n let date = Date.UTC(year, month - 1, day, hour || 0, minute || 0, second || 0, millisec);\n const tz = match[8];\n if (tz && tz !== 'Z') {\n let d = parseSexagesimal(tz, false);\n if (Math.abs(d) < 30)\n d *= 60;\n date -= 60000 * d;\n }\n return new Date(date);\n },\n stringify: ({ value }) => value?.toISOString().replace(/(T00:00:00)?\\.000Z$/, '') ?? ''\n};\n\nexports.floatTime = floatTime;\nexports.intTime = intTime;\nexports.timestamp = timestamp;\n", "'use strict';\n\nvar map = require('../common/map.js');\nvar _null = require('../common/null.js');\nvar seq = require('../common/seq.js');\nvar string = require('../common/string.js');\nvar binary = require('./binary.js');\nvar bool = require('./bool.js');\nvar float = require('./float.js');\nvar int = require('./int.js');\nvar merge = require('./merge.js');\nvar omap = require('./omap.js');\nvar pairs = require('./pairs.js');\nvar set = require('./set.js');\nvar timestamp = require('./timestamp.js');\n\nconst schema = [\n map.map,\n seq.seq,\n string.string,\n _null.nullTag,\n bool.trueTag,\n bool.falseTag,\n int.intBin,\n int.intOct,\n int.int,\n int.intHex,\n float.floatNaN,\n float.floatExp,\n float.float,\n binary.binary,\n merge.merge,\n omap.omap,\n pairs.pairs,\n set.set,\n timestamp.intTime,\n timestamp.floatTime,\n timestamp.timestamp\n];\n\nexports.schema = schema;\n", "'use strict';\n\nvar map = require('./common/map.js');\nvar _null = require('./common/null.js');\nvar seq = require('./common/seq.js');\nvar string = require('./common/string.js');\nvar bool = require('./core/bool.js');\nvar float = require('./core/float.js');\nvar int = require('./core/int.js');\nvar schema = require('./core/schema.js');\nvar schema$1 = require('./json/schema.js');\nvar binary = require('./yaml-1.1/binary.js');\nvar merge = require('./yaml-1.1/merge.js');\nvar omap = require('./yaml-1.1/omap.js');\nvar pairs = require('./yaml-1.1/pairs.js');\nvar schema$2 = require('./yaml-1.1/schema.js');\nvar set = require('./yaml-1.1/set.js');\nvar timestamp = require('./yaml-1.1/timestamp.js');\n\nconst schemas = new Map([\n ['core', schema.schema],\n ['failsafe', [map.map, seq.seq, string.string]],\n ['json', schema$1.schema],\n ['yaml11', schema$2.schema],\n ['yaml-1.1', schema$2.schema]\n]);\nconst tagsByName = {\n binary: binary.binary,\n bool: bool.boolTag,\n float: float.float,\n floatExp: float.floatExp,\n floatNaN: float.floatNaN,\n floatTime: timestamp.floatTime,\n int: int.int,\n intHex: int.intHex,\n intOct: int.intOct,\n intTime: timestamp.intTime,\n map: map.map,\n merge: merge.merge,\n null: _null.nullTag,\n omap: omap.omap,\n pairs: pairs.pairs,\n seq: seq.seq,\n set: set.set,\n timestamp: timestamp.timestamp\n};\nconst coreKnownTags = {\n 'tag:yaml.org,2002:binary': binary.binary,\n 'tag:yaml.org,2002:merge': merge.merge,\n 'tag:yaml.org,2002:omap': omap.omap,\n 'tag:yaml.org,2002:pairs': pairs.pairs,\n 'tag:yaml.org,2002:set': set.set,\n 'tag:yaml.org,2002:timestamp': timestamp.timestamp\n};\nfunction getTags(customTags, schemaName, addMergeTag) {\n const schemaTags = schemas.get(schemaName);\n if (schemaTags && !customTags) {\n return addMergeTag && !schemaTags.includes(merge.merge)\n ? schemaTags.concat(merge.merge)\n : schemaTags.slice();\n }\n let tags = schemaTags;\n if (!tags) {\n if (Array.isArray(customTags))\n tags = [];\n else {\n const keys = Array.from(schemas.keys())\n .filter(key => key !== 'yaml11')\n .map(key => JSON.stringify(key))\n .join(', ');\n throw new Error(`Unknown schema \"${schemaName}\"; use one of ${keys} or define customTags array`);\n }\n }\n if (Array.isArray(customTags)) {\n for (const tag of customTags)\n tags = tags.concat(tag);\n }\n else if (typeof customTags === 'function') {\n tags = customTags(tags.slice());\n }\n if (addMergeTag)\n tags = tags.concat(merge.merge);\n return tags.reduce((tags, tag) => {\n const tagObj = typeof tag === 'string' ? tagsByName[tag] : tag;\n if (!tagObj) {\n const tagName = JSON.stringify(tag);\n const keys = Object.keys(tagsByName)\n .map(key => JSON.stringify(key))\n .join(', ');\n throw new Error(`Unknown custom tag ${tagName}; use one of ${keys}`);\n }\n if (!tags.includes(tagObj))\n tags.push(tagObj);\n return tags;\n }, []);\n}\n\nexports.coreKnownTags = coreKnownTags;\nexports.getTags = getTags;\n", "'use strict';\n\nvar identity = require('../nodes/identity.js');\nvar map = require('./common/map.js');\nvar seq = require('./common/seq.js');\nvar string = require('./common/string.js');\nvar tags = require('./tags.js');\n\nconst sortMapEntriesByKey = (a, b) => a.key < b.key ? -1 : a.key > b.key ? 1 : 0;\nclass Schema {\n constructor({ compat, customTags, merge, resolveKnownTags, schema, sortMapEntries, toStringDefaults }) {\n this.compat = Array.isArray(compat)\n ? tags.getTags(compat, 'compat')\n : compat\n ? tags.getTags(null, compat)\n : null;\n this.name = (typeof schema === 'string' && schema) || 'core';\n this.knownTags = resolveKnownTags ? tags.coreKnownTags : {};\n this.tags = tags.getTags(customTags, this.name, merge);\n this.toStringOptions = toStringDefaults ?? null;\n Object.defineProperty(this, identity.MAP, { value: map.map });\n Object.defineProperty(this, identity.SCALAR, { value: string.string });\n Object.defineProperty(this, identity.SEQ, { value: seq.seq });\n // Used by createMap()\n this.sortMapEntries =\n typeof sortMapEntries === 'function'\n ? sortMapEntries\n : sortMapEntries === true\n ? sortMapEntriesByKey\n : null;\n }\n clone() {\n const copy = Object.create(Schema.prototype, Object.getOwnPropertyDescriptors(this));\n copy.tags = this.tags.slice();\n return copy;\n }\n}\n\nexports.Schema = Schema;\n", "'use strict';\n\nvar identity = require('../nodes/identity.js');\nvar stringify = require('./stringify.js');\nvar stringifyComment = require('./stringifyComment.js');\n\nfunction stringifyDocument(doc, options) {\n const lines = [];\n let hasDirectives = options.directives === true;\n if (options.directives !== false && doc.directives) {\n const dir = doc.directives.toString(doc);\n if (dir) {\n lines.push(dir);\n hasDirectives = true;\n }\n else if (doc.directives.docStart)\n hasDirectives = true;\n }\n if (hasDirectives)\n lines.push('---');\n const ctx = stringify.createStringifyContext(doc, options);\n const { commentString } = ctx.options;\n if (doc.commentBefore) {\n if (lines.length !== 1)\n lines.unshift('');\n const cs = commentString(doc.commentBefore);\n lines.unshift(stringifyComment.indentComment(cs, ''));\n }\n let chompKeep = false;\n let contentComment = null;\n if (doc.contents) {\n if (identity.isNode(doc.contents)) {\n if (doc.contents.spaceBefore && hasDirectives)\n lines.push('');\n if (doc.contents.commentBefore) {\n const cs = commentString(doc.contents.commentBefore);\n lines.push(stringifyComment.indentComment(cs, ''));\n }\n // top-level block scalars need to be indented if followed by a comment\n ctx.forceBlockIndent = !!doc.comment;\n contentComment = doc.contents.comment;\n }\n const onChompKeep = contentComment ? undefined : () => (chompKeep = true);\n let body = stringify.stringify(doc.contents, ctx, () => (contentComment = null), onChompKeep);\n if (contentComment)\n body += stringifyComment.lineComment(body, '', commentString(contentComment));\n if ((body[0] === '|' || body[0] === '>') &&\n lines[lines.length - 1] === '---') {\n // Top-level block scalars with a preceding doc marker ought to use the\n // same line for their header.\n lines[lines.length - 1] = `--- ${body}`;\n }\n else\n lines.push(body);\n }\n else {\n lines.push(stringify.stringify(doc.contents, ctx));\n }\n if (doc.directives?.docEnd) {\n if (doc.comment) {\n const cs = commentString(doc.comment);\n if (cs.includes('\\n')) {\n lines.push('...');\n lines.push(stringifyComment.indentComment(cs, ''));\n }\n else {\n lines.push(`... ${cs}`);\n }\n }\n else {\n lines.push('...');\n }\n }\n else {\n let dc = doc.comment;\n if (dc && chompKeep)\n dc = dc.replace(/^\\n+/, '');\n if (dc) {\n if ((!chompKeep || contentComment) && lines[lines.length - 1] !== '')\n lines.push('');\n lines.push(stringifyComment.indentComment(commentString(dc), ''));\n }\n }\n return lines.join('\\n') + '\\n';\n}\n\nexports.stringifyDocument = stringifyDocument;\n", "'use strict';\n\nvar Alias = require('../nodes/Alias.js');\nvar Collection = require('../nodes/Collection.js');\nvar identity = require('../nodes/identity.js');\nvar Pair = require('../nodes/Pair.js');\nvar toJS = require('../nodes/toJS.js');\nvar Schema = require('../schema/Schema.js');\nvar stringifyDocument = require('../stringify/stringifyDocument.js');\nvar anchors = require('./anchors.js');\nvar applyReviver = require('./applyReviver.js');\nvar createNode = require('./createNode.js');\nvar directives = require('./directives.js');\n\nclass Document {\n constructor(value, replacer, options) {\n /** A comment before this Document */\n this.commentBefore = null;\n /** A comment immediately after this Document */\n this.comment = null;\n /** Errors encountered during parsing. */\n this.errors = [];\n /** Warnings encountered during parsing. */\n this.warnings = [];\n Object.defineProperty(this, identity.NODE_TYPE, { value: identity.DOC });\n let _replacer = null;\n if (typeof replacer === 'function' || Array.isArray(replacer)) {\n _replacer = replacer;\n }\n else if (options === undefined && replacer) {\n options = replacer;\n replacer = undefined;\n }\n const opt = Object.assign({\n intAsBigInt: false,\n keepSourceTokens: false,\n logLevel: 'warn',\n prettyErrors: true,\n strict: true,\n stringKeys: false,\n uniqueKeys: true,\n version: '1.2'\n }, options);\n this.options = opt;\n let { version } = opt;\n if (options?._directives) {\n this.directives = options._directives.atDocument();\n if (this.directives.yaml.explicit)\n version = this.directives.yaml.version;\n }\n else\n this.directives = new directives.Directives({ version });\n this.setSchema(version, options);\n // @ts-expect-error We can't really know that this matches Contents.\n this.contents =\n value === undefined ? null : this.createNode(value, _replacer, options);\n }\n /**\n * Create a deep copy of this Document and its contents.\n *\n * Custom Node values that inherit from `Object` still refer to their original instances.\n */\n clone() {\n const copy = Object.create(Document.prototype, {\n [identity.NODE_TYPE]: { value: identity.DOC }\n });\n copy.commentBefore = this.commentBefore;\n copy.comment = this.comment;\n copy.errors = this.errors.slice();\n copy.warnings = this.warnings.slice();\n copy.options = Object.assign({}, this.options);\n if (this.directives)\n copy.directives = this.directives.clone();\n copy.schema = this.schema.clone();\n // @ts-expect-error We can't really know that this matches Contents.\n copy.contents = identity.isNode(this.contents)\n ? this.contents.clone(copy.schema)\n : this.contents;\n if (this.range)\n copy.range = this.range.slice();\n return copy;\n }\n /** Adds a value to the document. */\n add(value) {\n if (assertCollection(this.contents))\n this.contents.add(value);\n }\n /** Adds a value to the document. */\n addIn(path, value) {\n if (assertCollection(this.contents))\n this.contents.addIn(path, value);\n }\n /**\n * Create a new `Alias` node, ensuring that the target `node` has the required anchor.\n *\n * If `node` already has an anchor, `name` is ignored.\n * Otherwise, the `node.anchor` value will be set to `name`,\n * or if an anchor with that name is already present in the document,\n * `name` will be used as a prefix for a new unique anchor.\n * If `name` is undefined, the generated anchor will use 'a' as a prefix.\n */\n createAlias(node, name) {\n if (!node.anchor) {\n const prev = anchors.anchorNames(this);\n node.anchor =\n // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing\n !name || prev.has(name) ? anchors.findNewAnchor(name || 'a', prev) : name;\n }\n return new Alias.Alias(node.anchor);\n }\n createNode(value, replacer, options) {\n let _replacer = undefined;\n if (typeof replacer === 'function') {\n value = replacer.call({ '': value }, '', value);\n _replacer = replacer;\n }\n else if (Array.isArray(replacer)) {\n const keyToStr = (v) => typeof v === 'number' || v instanceof String || v instanceof Number;\n const asStr = replacer.filter(keyToStr).map(String);\n if (asStr.length > 0)\n replacer = replacer.concat(asStr);\n _replacer = replacer;\n }\n else if (options === undefined && replacer) {\n options = replacer;\n replacer = undefined;\n }\n const { aliasDuplicateObjects, anchorPrefix, flow, keepUndefined, onTagObj, tag } = options ?? {};\n const { onAnchor, setAnchors, sourceObjects } = anchors.createNodeAnchors(this, \n // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing\n anchorPrefix || 'a');\n const ctx = {\n aliasDuplicateObjects: aliasDuplicateObjects ?? true,\n keepUndefined: keepUndefined ?? false,\n onAnchor,\n onTagObj,\n replacer: _replacer,\n schema: this.schema,\n sourceObjects\n };\n const node = createNode.createNode(value, tag, ctx);\n if (flow && identity.isCollection(node))\n node.flow = true;\n setAnchors();\n return node;\n }\n /**\n * Convert a key and a value into a `Pair` using the current schema,\n * recursively wrapping all values as `Scalar` or `Collection` nodes.\n */\n createPair(key, value, options = {}) {\n const k = this.createNode(key, null, options);\n const v = this.createNode(value, null, options);\n return new Pair.Pair(k, v);\n }\n /**\n * Removes a value from the document.\n * @returns `true` if the item was found and removed.\n */\n delete(key) {\n return assertCollection(this.contents) ? this.contents.delete(key) : false;\n }\n /**\n * Removes a value from the document.\n * @returns `true` if the item was found and removed.\n */\n deleteIn(path) {\n if (Collection.isEmptyPath(path)) {\n if (this.contents == null)\n return false;\n // @ts-expect-error Presumed impossible if Strict extends false\n this.contents = null;\n return true;\n }\n return assertCollection(this.contents)\n ? this.contents.deleteIn(path)\n : false;\n }\n /**\n * Returns item at `key`, or `undefined` if not found. By default unwraps\n * scalar values from their surrounding node; to disable set `keepScalar` to\n * `true` (collections are always returned intact).\n */\n get(key, keepScalar) {\n return identity.isCollection(this.contents)\n ? this.contents.get(key, keepScalar)\n : undefined;\n }\n /**\n * Returns item at `path`, or `undefined` if not found. By default unwraps\n * scalar values from their surrounding node; to disable set `keepScalar` to\n * `true` (collections are always returned intact).\n */\n getIn(path, keepScalar) {\n if (Collection.isEmptyPath(path))\n return !keepScalar && identity.isScalar(this.contents)\n ? this.contents.value\n : this.contents;\n return identity.isCollection(this.contents)\n ? this.contents.getIn(path, keepScalar)\n : undefined;\n }\n /**\n * Checks if the document includes a value with the key `key`.\n */\n has(key) {\n return identity.isCollection(this.contents) ? this.contents.has(key) : false;\n }\n /**\n * Checks if the document includes a value at `path`.\n */\n hasIn(path) {\n if (Collection.isEmptyPath(path))\n return this.contents !== undefined;\n return identity.isCollection(this.contents) ? this.contents.hasIn(path) : false;\n }\n /**\n * Sets a value in this document. For `!!set`, `value` needs to be a\n * boolean to add/remove the item from the set.\n */\n set(key, value) {\n if (this.contents == null) {\n // @ts-expect-error We can't really know that this matches Contents.\n this.contents = Collection.collectionFromPath(this.schema, [key], value);\n }\n else if (assertCollection(this.contents)) {\n this.contents.set(key, value);\n }\n }\n /**\n * Sets a value in this document. For `!!set`, `value` needs to be a\n * boolean to add/remove the item from the set.\n */\n setIn(path, value) {\n if (Collection.isEmptyPath(path)) {\n // @ts-expect-error We can't really know that this matches Contents.\n this.contents = value;\n }\n else if (this.contents == null) {\n // @ts-expect-error We can't really know that this matches Contents.\n this.contents = Collection.collectionFromPath(this.schema, Array.from(path), value);\n }\n else if (assertCollection(this.contents)) {\n this.contents.setIn(path, value);\n }\n }\n /**\n * Change the YAML version and schema used by the document.\n * A `null` version disables support for directives, explicit tags, anchors, and aliases.\n * It also requires the `schema` option to be given as a `Schema` instance value.\n *\n * Overrides all previously set schema options.\n */\n setSchema(version, options = {}) {\n if (typeof version === 'number')\n version = String(version);\n let opt;\n switch (version) {\n case '1.1':\n if (this.directives)\n this.directives.yaml.version = '1.1';\n else\n this.directives = new directives.Directives({ version: '1.1' });\n opt = { resolveKnownTags: false, schema: 'yaml-1.1' };\n break;\n case '1.2':\n case 'next':\n if (this.directives)\n this.directives.yaml.version = version;\n else\n this.directives = new directives.Directives({ version });\n opt = { resolveKnownTags: true, schema: 'core' };\n break;\n case null:\n if (this.directives)\n delete this.directives;\n opt = null;\n break;\n default: {\n const sv = JSON.stringify(version);\n throw new Error(`Expected '1.1', '1.2' or null as first argument, but found: ${sv}`);\n }\n }\n // Not using `instanceof Schema` to allow for duck typing\n if (options.schema instanceof Object)\n this.schema = options.schema;\n else if (opt)\n this.schema = new Schema.Schema(Object.assign(opt, options));\n else\n throw new Error(`With a null YAML version, the { schema: Schema } option is required`);\n }\n // json & jsonArg are only used from toJSON()\n toJS({ json, jsonArg, mapAsMap, maxAliasCount, onAnchor, reviver } = {}) {\n const ctx = {\n anchors: new Map(),\n doc: this,\n keep: !json,\n mapAsMap: mapAsMap === true,\n mapKeyWarned: false,\n maxAliasCount: typeof maxAliasCount === 'number' ? maxAliasCount : 100\n };\n const res = toJS.toJS(this.contents, jsonArg ?? '', ctx);\n if (typeof onAnchor === 'function')\n for (const { count, res } of ctx.anchors.values())\n onAnchor(res, count);\n return typeof reviver === 'function'\n ? applyReviver.applyReviver(reviver, { '': res }, '', res)\n : res;\n }\n /**\n * A JSON representation of the document `contents`.\n *\n * @param jsonArg Used by `JSON.stringify` to indicate the array index or\n * property name.\n */\n toJSON(jsonArg, onAnchor) {\n return this.toJS({ json: true, jsonArg, mapAsMap: false, onAnchor });\n }\n /** A YAML representation of the document. */\n toString(options = {}) {\n if (this.errors.length > 0)\n throw new Error('Document with errors cannot be stringified');\n if ('indent' in options &&\n (!Number.isInteger(options.indent) || Number(options.indent) <= 0)) {\n const s = JSON.stringify(options.indent);\n throw new Error(`\"indent\" option must be a positive integer, not ${s}`);\n }\n return stringifyDocument.stringifyDocument(this, options);\n }\n}\nfunction assertCollection(contents) {\n if (identity.isCollection(contents))\n return true;\n throw new Error('Expected a YAML collection as document contents');\n}\n\nexports.Document = Document;\n", "'use strict';\n\nclass YAMLError extends Error {\n constructor(name, pos, code, message) {\n super();\n this.name = name;\n this.code = code;\n this.message = message;\n this.pos = pos;\n }\n}\nclass YAMLParseError extends YAMLError {\n constructor(pos, code, message) {\n super('YAMLParseError', pos, code, message);\n }\n}\nclass YAMLWarning extends YAMLError {\n constructor(pos, code, message) {\n super('YAMLWarning', pos, code, message);\n }\n}\nconst prettifyError = (src, lc) => (error) => {\n if (error.pos[0] === -1)\n return;\n error.linePos = error.pos.map(pos => lc.linePos(pos));\n const { line, col } = error.linePos[0];\n error.message += ` at line ${line}, column ${col}`;\n let ci = col - 1;\n let lineStr = src\n .substring(lc.lineStarts[line - 1], lc.lineStarts[line])\n .replace(/[\\n\\r]+$/, '');\n // Trim to max 80 chars, keeping col position near the middle\n if (ci >= 60 && lineStr.length > 80) {\n const trimStart = Math.min(ci - 39, lineStr.length - 79);\n lineStr = '\u2026' + lineStr.substring(trimStart);\n ci -= trimStart - 1;\n }\n if (lineStr.length > 80)\n lineStr = lineStr.substring(0, 79) + '\u2026';\n // Include previous line in context if pointing at line start\n if (line > 1 && /^ *$/.test(lineStr.substring(0, ci))) {\n // Regexp won't match if start is trimmed\n let prev = src.substring(lc.lineStarts[line - 2], lc.lineStarts[line - 1]);\n if (prev.length > 80)\n prev = prev.substring(0, 79) + '\u2026\\n';\n lineStr = prev + lineStr;\n }\n if (/[^ ]/.test(lineStr)) {\n let count = 1;\n const end = error.linePos[1];\n if (end && end.line === line && end.col > col) {\n count = Math.max(1, Math.min(end.col - col, 80 - ci));\n }\n const pointer = ' '.repeat(ci) + '^'.repeat(count);\n error.message += `:\\n\\n${lineStr}\\n${pointer}\\n`;\n }\n};\n\nexports.YAMLError = YAMLError;\nexports.YAMLParseError = YAMLParseError;\nexports.YAMLWarning = YAMLWarning;\nexports.prettifyError = prettifyError;\n", "'use strict';\n\nfunction resolveProps(tokens, { flow, indicator, next, offset, onError, parentIndent, startOnNewline }) {\n let spaceBefore = false;\n let atNewline = startOnNewline;\n let hasSpace = startOnNewline;\n let comment = '';\n let commentSep = '';\n let hasNewline = false;\n let reqSpace = false;\n let tab = null;\n let anchor = null;\n let tag = null;\n let newlineAfterProp = null;\n let comma = null;\n let found = null;\n let start = null;\n for (const token of tokens) {\n if (reqSpace) {\n if (token.type !== 'space' &&\n token.type !== 'newline' &&\n token.type !== 'comma')\n onError(token.offset, 'MISSING_CHAR', 'Tags and anchors must be separated from the next token by white space');\n reqSpace = false;\n }\n if (tab) {\n if (atNewline && token.type !== 'comment' && token.type !== 'newline') {\n onError(tab, 'TAB_AS_INDENT', 'Tabs are not allowed as indentation');\n }\n tab = null;\n }\n switch (token.type) {\n case 'space':\n // At the doc level, tabs at line start may be parsed\n // as leading white space rather than indentation.\n // In a flow collection, only the parser handles indent.\n if (!flow &&\n (indicator !== 'doc-start' || next?.type !== 'flow-collection') &&\n token.source.includes('\\t')) {\n tab = token;\n }\n hasSpace = true;\n break;\n case 'comment': {\n if (!hasSpace)\n onError(token, 'MISSING_CHAR', 'Comments must be separated from other tokens by white space characters');\n const cb = token.source.substring(1) || ' ';\n if (!comment)\n comment = cb;\n else\n comment += commentSep + cb;\n commentSep = '';\n atNewline = false;\n break;\n }\n case 'newline':\n if (atNewline) {\n if (comment)\n comment += token.source;\n else if (!found || indicator !== 'seq-item-ind')\n spaceBefore = true;\n }\n else\n commentSep += token.source;\n atNewline = true;\n hasNewline = true;\n if (anchor || tag)\n newlineAfterProp = token;\n hasSpace = true;\n break;\n case 'anchor':\n if (anchor)\n onError(token, 'MULTIPLE_ANCHORS', 'A node can have at most one anchor');\n if (token.source.endsWith(':'))\n onError(token.offset + token.source.length - 1, 'BAD_ALIAS', 'Anchor ending in : is ambiguous', true);\n anchor = token;\n if (start === null)\n start = token.offset;\n atNewline = false;\n hasSpace = false;\n reqSpace = true;\n break;\n case 'tag': {\n if (tag)\n onError(token, 'MULTIPLE_TAGS', 'A node can have at most one tag');\n tag = token;\n if (start === null)\n start = token.offset;\n atNewline = false;\n hasSpace = false;\n reqSpace = true;\n break;\n }\n case indicator:\n // Could here handle preceding comments differently\n if (anchor || tag)\n onError(token, 'BAD_PROP_ORDER', `Anchors and tags must be after the ${token.source} indicator`);\n if (found)\n onError(token, 'UNEXPECTED_TOKEN', `Unexpected ${token.source} in ${flow ?? 'collection'}`);\n found = token;\n atNewline =\n indicator === 'seq-item-ind' || indicator === 'explicit-key-ind';\n hasSpace = false;\n break;\n case 'comma':\n if (flow) {\n if (comma)\n onError(token, 'UNEXPECTED_TOKEN', `Unexpected , in ${flow}`);\n comma = token;\n atNewline = false;\n hasSpace = false;\n break;\n }\n // else fallthrough\n default:\n onError(token, 'UNEXPECTED_TOKEN', `Unexpected ${token.type} token`);\n atNewline = false;\n hasSpace = false;\n }\n }\n const last = tokens[tokens.length - 1];\n const end = last ? last.offset + last.source.length : offset;\n if (reqSpace &&\n next &&\n next.type !== 'space' &&\n next.type !== 'newline' &&\n next.type !== 'comma' &&\n (next.type !== 'scalar' || next.source !== '')) {\n onError(next.offset, 'MISSING_CHAR', 'Tags and anchors must be separated from the next token by white space');\n }\n if (tab &&\n ((atNewline && tab.indent <= parentIndent) ||\n next?.type === 'block-map' ||\n next?.type === 'block-seq'))\n onError(tab, 'TAB_AS_INDENT', 'Tabs are not allowed as indentation');\n return {\n comma,\n found,\n spaceBefore,\n comment,\n hasNewline,\n anchor,\n tag,\n newlineAfterProp,\n end,\n start: start ?? end\n };\n}\n\nexports.resolveProps = resolveProps;\n", "'use strict';\n\nfunction containsNewline(key) {\n if (!key)\n return null;\n switch (key.type) {\n case 'alias':\n case 'scalar':\n case 'double-quoted-scalar':\n case 'single-quoted-scalar':\n if (key.source.includes('\\n'))\n return true;\n if (key.end)\n for (const st of key.end)\n if (st.type === 'newline')\n return true;\n return false;\n case 'flow-collection':\n for (const it of key.items) {\n for (const st of it.start)\n if (st.type === 'newline')\n return true;\n if (it.sep)\n for (const st of it.sep)\n if (st.type === 'newline')\n return true;\n if (containsNewline(it.key) || containsNewline(it.value))\n return true;\n }\n return false;\n default:\n return true;\n }\n}\n\nexports.containsNewline = containsNewline;\n", "'use strict';\n\nvar utilContainsNewline = require('./util-contains-newline.js');\n\nfunction flowIndentCheck(indent, fc, onError) {\n if (fc?.type === 'flow-collection') {\n const end = fc.end[0];\n if (end.indent === indent &&\n (end.source === ']' || end.source === '}') &&\n utilContainsNewline.containsNewline(fc)) {\n const msg = 'Flow end indicator should be more indented than parent';\n onError(end, 'BAD_INDENT', msg, true);\n }\n }\n}\n\nexports.flowIndentCheck = flowIndentCheck;\n", "'use strict';\n\nvar identity = require('../nodes/identity.js');\n\nfunction mapIncludes(ctx, items, search) {\n const { uniqueKeys } = ctx.options;\n if (uniqueKeys === false)\n return false;\n const isEqual = typeof uniqueKeys === 'function'\n ? uniqueKeys\n : (a, b) => a === b || (identity.isScalar(a) && identity.isScalar(b) && a.value === b.value);\n return items.some(pair => isEqual(pair.key, search));\n}\n\nexports.mapIncludes = mapIncludes;\n", "'use strict';\n\nvar Pair = require('../nodes/Pair.js');\nvar YAMLMap = require('../nodes/YAMLMap.js');\nvar resolveProps = require('./resolve-props.js');\nvar utilContainsNewline = require('./util-contains-newline.js');\nvar utilFlowIndentCheck = require('./util-flow-indent-check.js');\nvar utilMapIncludes = require('./util-map-includes.js');\n\nconst startColMsg = 'All mapping items must start at the same column';\nfunction resolveBlockMap({ composeNode, composeEmptyNode }, ctx, bm, onError, tag) {\n const NodeClass = tag?.nodeClass ?? YAMLMap.YAMLMap;\n const map = new NodeClass(ctx.schema);\n if (ctx.atRoot)\n ctx.atRoot = false;\n let offset = bm.offset;\n let commentEnd = null;\n for (const collItem of bm.items) {\n const { start, key, sep, value } = collItem;\n // key properties\n const keyProps = resolveProps.resolveProps(start, {\n indicator: 'explicit-key-ind',\n next: key ?? sep?.[0],\n offset,\n onError,\n parentIndent: bm.indent,\n startOnNewline: true\n });\n const implicitKey = !keyProps.found;\n if (implicitKey) {\n if (key) {\n if (key.type === 'block-seq')\n onError(offset, 'BLOCK_AS_IMPLICIT_KEY', 'A block sequence may not be used as an implicit map key');\n else if ('indent' in key && key.indent !== bm.indent)\n onError(offset, 'BAD_INDENT', startColMsg);\n }\n if (!keyProps.anchor && !keyProps.tag && !sep) {\n commentEnd = keyProps.end;\n if (keyProps.comment) {\n if (map.comment)\n map.comment += '\\n' + keyProps.comment;\n else\n map.comment = keyProps.comment;\n }\n continue;\n }\n if (keyProps.newlineAfterProp || utilContainsNewline.containsNewline(key)) {\n onError(key ?? start[start.length - 1], 'MULTILINE_IMPLICIT_KEY', 'Implicit keys need to be on a single line');\n }\n }\n else if (keyProps.found?.indent !== bm.indent) {\n onError(offset, 'BAD_INDENT', startColMsg);\n }\n // key value\n ctx.atKey = true;\n const keyStart = keyProps.end;\n const keyNode = key\n ? composeNode(ctx, key, keyProps, onError)\n : composeEmptyNode(ctx, keyStart, start, null, keyProps, onError);\n if (ctx.schema.compat)\n utilFlowIndentCheck.flowIndentCheck(bm.indent, key, onError);\n ctx.atKey = false;\n if (utilMapIncludes.mapIncludes(ctx, map.items, keyNode))\n onError(keyStart, 'DUPLICATE_KEY', 'Map keys must be unique');\n // value properties\n const valueProps = resolveProps.resolveProps(sep ?? [], {\n indicator: 'map-value-ind',\n next: value,\n offset: keyNode.range[2],\n onError,\n parentIndent: bm.indent,\n startOnNewline: !key || key.type === 'block-scalar'\n });\n offset = valueProps.end;\n if (valueProps.found) {\n if (implicitKey) {\n if (value?.type === 'block-map' && !valueProps.hasNewline)\n onError(offset, 'BLOCK_AS_IMPLICIT_KEY', 'Nested mappings are not allowed in compact mappings');\n if (ctx.options.strict &&\n keyProps.start < valueProps.found.offset - 1024)\n onError(keyNode.range, 'KEY_OVER_1024_CHARS', 'The : indicator must be at most 1024 chars after the start of an implicit block mapping key');\n }\n // value value\n const valueNode = value\n ? composeNode(ctx, value, valueProps, onError)\n : composeEmptyNode(ctx, offset, sep, null, valueProps, onError);\n if (ctx.schema.compat)\n utilFlowIndentCheck.flowIndentCheck(bm.indent, value, onError);\n offset = valueNode.range[2];\n const pair = new Pair.Pair(keyNode, valueNode);\n if (ctx.options.keepSourceTokens)\n pair.srcToken = collItem;\n map.items.push(pair);\n }\n else {\n // key with no value\n if (implicitKey)\n onError(keyNode.range, 'MISSING_CHAR', 'Implicit map keys need to be followed by map values');\n if (valueProps.comment) {\n if (keyNode.comment)\n keyNode.comment += '\\n' + valueProps.comment;\n else\n keyNode.comment = valueProps.comment;\n }\n const pair = new Pair.Pair(keyNode);\n if (ctx.options.keepSourceTokens)\n pair.srcToken = collItem;\n map.items.push(pair);\n }\n }\n if (commentEnd && commentEnd < offset)\n onError(commentEnd, 'IMPOSSIBLE', 'Map comment with trailing content');\n map.range = [bm.offset, offset, commentEnd ?? offset];\n return map;\n}\n\nexports.resolveBlockMap = resolveBlockMap;\n", "'use strict';\n\nvar YAMLSeq = require('../nodes/YAMLSeq.js');\nvar resolveProps = require('./resolve-props.js');\nvar utilFlowIndentCheck = require('./util-flow-indent-check.js');\n\nfunction resolveBlockSeq({ composeNode, composeEmptyNode }, ctx, bs, onError, tag) {\n const NodeClass = tag?.nodeClass ?? YAMLSeq.YAMLSeq;\n const seq = new NodeClass(ctx.schema);\n if (ctx.atRoot)\n ctx.atRoot = false;\n if (ctx.atKey)\n ctx.atKey = false;\n let offset = bs.offset;\n let commentEnd = null;\n for (const { start, value } of bs.items) {\n const props = resolveProps.resolveProps(start, {\n indicator: 'seq-item-ind',\n next: value,\n offset,\n onError,\n parentIndent: bs.indent,\n startOnNewline: true\n });\n if (!props.found) {\n if (props.anchor || props.tag || value) {\n if (value && value.type === 'block-seq')\n onError(props.end, 'BAD_INDENT', 'All sequence items must start at the same column');\n else\n onError(offset, 'MISSING_CHAR', 'Sequence item without - indicator');\n }\n else {\n commentEnd = props.end;\n if (props.comment)\n seq.comment = props.comment;\n continue;\n }\n }\n const node = value\n ? composeNode(ctx, value, props, onError)\n : composeEmptyNode(ctx, props.end, start, null, props, onError);\n if (ctx.schema.compat)\n utilFlowIndentCheck.flowIndentCheck(bs.indent, value, onError);\n offset = node.range[2];\n seq.items.push(node);\n }\n seq.range = [bs.offset, offset, commentEnd ?? offset];\n return seq;\n}\n\nexports.resolveBlockSeq = resolveBlockSeq;\n", "'use strict';\n\nfunction resolveEnd(end, offset, reqSpace, onError) {\n let comment = '';\n if (end) {\n let hasSpace = false;\n let sep = '';\n for (const token of end) {\n const { source, type } = token;\n switch (type) {\n case 'space':\n hasSpace = true;\n break;\n case 'comment': {\n if (reqSpace && !hasSpace)\n onError(token, 'MISSING_CHAR', 'Comments must be separated from other tokens by white space characters');\n const cb = source.substring(1) || ' ';\n if (!comment)\n comment = cb;\n else\n comment += sep + cb;\n sep = '';\n break;\n }\n case 'newline':\n if (comment)\n sep += source;\n hasSpace = true;\n break;\n default:\n onError(token, 'UNEXPECTED_TOKEN', `Unexpected ${type} at node end`);\n }\n offset += source.length;\n }\n }\n return { comment, offset };\n}\n\nexports.resolveEnd = resolveEnd;\n", "'use strict';\n\nvar identity = require('../nodes/identity.js');\nvar Pair = require('../nodes/Pair.js');\nvar YAMLMap = require('../nodes/YAMLMap.js');\nvar YAMLSeq = require('../nodes/YAMLSeq.js');\nvar resolveEnd = require('./resolve-end.js');\nvar resolveProps = require('./resolve-props.js');\nvar utilContainsNewline = require('./util-contains-newline.js');\nvar utilMapIncludes = require('./util-map-includes.js');\n\nconst blockMsg = 'Block collections are not allowed within flow collections';\nconst isBlock = (token) => token && (token.type === 'block-map' || token.type === 'block-seq');\nfunction resolveFlowCollection({ composeNode, composeEmptyNode }, ctx, fc, onError, tag) {\n const isMap = fc.start.source === '{';\n const fcName = isMap ? 'flow map' : 'flow sequence';\n const NodeClass = (tag?.nodeClass ?? (isMap ? YAMLMap.YAMLMap : YAMLSeq.YAMLSeq));\n const coll = new NodeClass(ctx.schema);\n coll.flow = true;\n const atRoot = ctx.atRoot;\n if (atRoot)\n ctx.atRoot = false;\n if (ctx.atKey)\n ctx.atKey = false;\n let offset = fc.offset + fc.start.source.length;\n for (let i = 0; i < fc.items.length; ++i) {\n const collItem = fc.items[i];\n const { start, key, sep, value } = collItem;\n const props = resolveProps.resolveProps(start, {\n flow: fcName,\n indicator: 'explicit-key-ind',\n next: key ?? sep?.[0],\n offset,\n onError,\n parentIndent: fc.indent,\n startOnNewline: false\n });\n if (!props.found) {\n if (!props.anchor && !props.tag && !sep && !value) {\n if (i === 0 && props.comma)\n onError(props.comma, 'UNEXPECTED_TOKEN', `Unexpected , in ${fcName}`);\n else if (i < fc.items.length - 1)\n onError(props.start, 'UNEXPECTED_TOKEN', `Unexpected empty item in ${fcName}`);\n if (props.comment) {\n if (coll.comment)\n coll.comment += '\\n' + props.comment;\n else\n coll.comment = props.comment;\n }\n offset = props.end;\n continue;\n }\n if (!isMap && ctx.options.strict && utilContainsNewline.containsNewline(key))\n onError(key, // checked by containsNewline()\n 'MULTILINE_IMPLICIT_KEY', 'Implicit keys of flow sequence pairs need to be on a single line');\n }\n if (i === 0) {\n if (props.comma)\n onError(props.comma, 'UNEXPECTED_TOKEN', `Unexpected , in ${fcName}`);\n }\n else {\n if (!props.comma)\n onError(props.start, 'MISSING_CHAR', `Missing , between ${fcName} items`);\n if (props.comment) {\n let prevItemComment = '';\n loop: for (const st of start) {\n switch (st.type) {\n case 'comma':\n case 'space':\n break;\n case 'comment':\n prevItemComment = st.source.substring(1);\n break loop;\n default:\n break loop;\n }\n }\n if (prevItemComment) {\n let prev = coll.items[coll.items.length - 1];\n if (identity.isPair(prev))\n prev = prev.value ?? prev.key;\n if (prev.comment)\n prev.comment += '\\n' + prevItemComment;\n else\n prev.comment = prevItemComment;\n props.comment = props.comment.substring(prevItemComment.length + 1);\n }\n }\n }\n if (!isMap && !sep && !props.found) {\n // item is a value in a seq\n // \u2192 key & sep are empty, start does not include ? or :\n const valueNode = value\n ? composeNode(ctx, value, props, onError)\n : composeEmptyNode(ctx, props.end, sep, null, props, onError);\n coll.items.push(valueNode);\n offset = valueNode.range[2];\n if (isBlock(value))\n onError(valueNode.range, 'BLOCK_IN_FLOW', blockMsg);\n }\n else {\n // item is a key+value pair\n // key value\n ctx.atKey = true;\n const keyStart = props.end;\n const keyNode = key\n ? composeNode(ctx, key, props, onError)\n : composeEmptyNode(ctx, keyStart, start, null, props, onError);\n if (isBlock(key))\n onError(keyNode.range, 'BLOCK_IN_FLOW', blockMsg);\n ctx.atKey = false;\n // value properties\n const valueProps = resolveProps.resolveProps(sep ?? [], {\n flow: fcName,\n indicator: 'map-value-ind',\n next: value,\n offset: keyNode.range[2],\n onError,\n parentIndent: fc.indent,\n startOnNewline: false\n });\n if (valueProps.found) {\n if (!isMap && !props.found && ctx.options.strict) {\n if (sep)\n for (const st of sep) {\n if (st === valueProps.found)\n break;\n if (st.type === 'newline') {\n onError(st, 'MULTILINE_IMPLICIT_KEY', 'Implicit keys of flow sequence pairs need to be on a single line');\n break;\n }\n }\n if (props.start < valueProps.found.offset - 1024)\n onError(valueProps.found, 'KEY_OVER_1024_CHARS', 'The : indicator must be at most 1024 chars after the start of an implicit flow sequence key');\n }\n }\n else if (value) {\n if ('source' in value && value.source && value.source[0] === ':')\n onError(value, 'MISSING_CHAR', `Missing space after : in ${fcName}`);\n else\n onError(valueProps.start, 'MISSING_CHAR', `Missing , or : between ${fcName} items`);\n }\n // value value\n const valueNode = value\n ? composeNode(ctx, value, valueProps, onError)\n : valueProps.found\n ? composeEmptyNode(ctx, valueProps.end, sep, null, valueProps, onError)\n : null;\n if (valueNode) {\n if (isBlock(value))\n onError(valueNode.range, 'BLOCK_IN_FLOW', blockMsg);\n }\n else if (valueProps.comment) {\n if (keyNode.comment)\n keyNode.comment += '\\n' + valueProps.comment;\n else\n keyNode.comment = valueProps.comment;\n }\n const pair = new Pair.Pair(keyNode, valueNode);\n if (ctx.options.keepSourceTokens)\n pair.srcToken = collItem;\n if (isMap) {\n const map = coll;\n if (utilMapIncludes.mapIncludes(ctx, map.items, keyNode))\n onError(keyStart, 'DUPLICATE_KEY', 'Map keys must be unique');\n map.items.push(pair);\n }\n else {\n const map = new YAMLMap.YAMLMap(ctx.schema);\n map.flow = true;\n map.items.push(pair);\n const endRange = (valueNode ?? keyNode).range;\n map.range = [keyNode.range[0], endRange[1], endRange[2]];\n coll.items.push(map);\n }\n offset = valueNode ? valueNode.range[2] : valueProps.end;\n }\n }\n const expectedEnd = isMap ? '}' : ']';\n const [ce, ...ee] = fc.end;\n let cePos = offset;\n if (ce && ce.source === expectedEnd)\n cePos = ce.offset + ce.source.length;\n else {\n const name = fcName[0].toUpperCase() + fcName.substring(1);\n const msg = atRoot\n ? `${name} must end with a ${expectedEnd}`\n : `${name} in block collection must be sufficiently indented and end with a ${expectedEnd}`;\n onError(offset, atRoot ? 'MISSING_CHAR' : 'BAD_INDENT', msg);\n if (ce && ce.source.length !== 1)\n ee.unshift(ce);\n }\n if (ee.length > 0) {\n const end = resolveEnd.resolveEnd(ee, cePos, ctx.options.strict, onError);\n if (end.comment) {\n if (coll.comment)\n coll.comment += '\\n' + end.comment;\n else\n coll.comment = end.comment;\n }\n coll.range = [fc.offset, cePos, end.offset];\n }\n else {\n coll.range = [fc.offset, cePos, cePos];\n }\n return coll;\n}\n\nexports.resolveFlowCollection = resolveFlowCollection;\n", "'use strict';\n\nvar identity = require('../nodes/identity.js');\nvar Scalar = require('../nodes/Scalar.js');\nvar YAMLMap = require('../nodes/YAMLMap.js');\nvar YAMLSeq = require('../nodes/YAMLSeq.js');\nvar resolveBlockMap = require('./resolve-block-map.js');\nvar resolveBlockSeq = require('./resolve-block-seq.js');\nvar resolveFlowCollection = require('./resolve-flow-collection.js');\n\nfunction resolveCollection(CN, ctx, token, onError, tagName, tag) {\n const coll = token.type === 'block-map'\n ? resolveBlockMap.resolveBlockMap(CN, ctx, token, onError, tag)\n : token.type === 'block-seq'\n ? resolveBlockSeq.resolveBlockSeq(CN, ctx, token, onError, tag)\n : resolveFlowCollection.resolveFlowCollection(CN, ctx, token, onError, tag);\n const Coll = coll.constructor;\n // If we got a tagName matching the class, or the tag name is '!',\n // then use the tagName from the node class used to create it.\n if (tagName === '!' || tagName === Coll.tagName) {\n coll.tag = Coll.tagName;\n return coll;\n }\n if (tagName)\n coll.tag = tagName;\n return coll;\n}\nfunction composeCollection(CN, ctx, token, props, onError) {\n const tagToken = props.tag;\n const tagName = !tagToken\n ? null\n : ctx.directives.tagName(tagToken.source, msg => onError(tagToken, 'TAG_RESOLVE_FAILED', msg));\n if (token.type === 'block-seq') {\n const { anchor, newlineAfterProp: nl } = props;\n const lastProp = anchor && tagToken\n ? anchor.offset > tagToken.offset\n ? anchor\n : tagToken\n : (anchor ?? tagToken);\n if (lastProp && (!nl || nl.offset < lastProp.offset)) {\n const message = 'Missing newline after block sequence props';\n onError(lastProp, 'MISSING_CHAR', message);\n }\n }\n const expType = token.type === 'block-map'\n ? 'map'\n : token.type === 'block-seq'\n ? 'seq'\n : token.start.source === '{'\n ? 'map'\n : 'seq';\n // shortcut: check if it's a generic YAMLMap or YAMLSeq\n // before jumping into the custom tag logic.\n if (!tagToken ||\n !tagName ||\n tagName === '!' ||\n (tagName === YAMLMap.YAMLMap.tagName && expType === 'map') ||\n (tagName === YAMLSeq.YAMLSeq.tagName && expType === 'seq')) {\n return resolveCollection(CN, ctx, token, onError, tagName);\n }\n let tag = ctx.schema.tags.find(t => t.tag === tagName && t.collection === expType);\n if (!tag) {\n const kt = ctx.schema.knownTags[tagName];\n if (kt && kt.collection === expType) {\n ctx.schema.tags.push(Object.assign({}, kt, { default: false }));\n tag = kt;\n }\n else {\n if (kt) {\n onError(tagToken, 'BAD_COLLECTION_TYPE', `${kt.tag} used for ${expType} collection, but expects ${kt.collection ?? 'scalar'}`, true);\n }\n else {\n onError(tagToken, 'TAG_RESOLVE_FAILED', `Unresolved tag: ${tagName}`, true);\n }\n return resolveCollection(CN, ctx, token, onError, tagName);\n }\n }\n const coll = resolveCollection(CN, ctx, token, onError, tagName, tag);\n const res = tag.resolve?.(coll, msg => onError(tagToken, 'TAG_RESOLVE_FAILED', msg), ctx.options) ?? coll;\n const node = identity.isNode(res)\n ? res\n : new Scalar.Scalar(res);\n node.range = coll.range;\n node.tag = tagName;\n if (tag?.format)\n node.format = tag.format;\n return node;\n}\n\nexports.composeCollection = composeCollection;\n", "'use strict';\n\nvar Scalar = require('../nodes/Scalar.js');\n\nfunction resolveBlockScalar(ctx, scalar, onError) {\n const start = scalar.offset;\n const header = parseBlockScalarHeader(scalar, ctx.options.strict, onError);\n if (!header)\n return { value: '', type: null, comment: '', range: [start, start, start] };\n const type = header.mode === '>' ? Scalar.Scalar.BLOCK_FOLDED : Scalar.Scalar.BLOCK_LITERAL;\n const lines = scalar.source ? splitLines(scalar.source) : [];\n // determine the end of content & start of chomping\n let chompStart = lines.length;\n for (let i = lines.length - 1; i >= 0; --i) {\n const content = lines[i][1];\n if (content === '' || content === '\\r')\n chompStart = i;\n else\n break;\n }\n // shortcut for empty contents\n if (chompStart === 0) {\n const value = header.chomp === '+' && lines.length > 0\n ? '\\n'.repeat(Math.max(1, lines.length - 1))\n : '';\n let end = start + header.length;\n if (scalar.source)\n end += scalar.source.length;\n return { value, type, comment: header.comment, range: [start, end, end] };\n }\n // find the indentation level to trim from start\n let trimIndent = scalar.indent + header.indent;\n let offset = scalar.offset + header.length;\n let contentStart = 0;\n for (let i = 0; i < chompStart; ++i) {\n const [indent, content] = lines[i];\n if (content === '' || content === '\\r') {\n if (header.indent === 0 && indent.length > trimIndent)\n trimIndent = indent.length;\n }\n else {\n if (indent.length < trimIndent) {\n const message = 'Block scalars with more-indented leading empty lines must use an explicit indentation indicator';\n onError(offset + indent.length, 'MISSING_CHAR', message);\n }\n if (header.indent === 0)\n trimIndent = indent.length;\n contentStart = i;\n if (trimIndent === 0 && !ctx.atRoot) {\n const message = 'Block scalar values in collections must be indented';\n onError(offset, 'BAD_INDENT', message);\n }\n break;\n }\n offset += indent.length + content.length + 1;\n }\n // include trailing more-indented empty lines in content\n for (let i = lines.length - 1; i >= chompStart; --i) {\n if (lines[i][0].length > trimIndent)\n chompStart = i + 1;\n }\n let value = '';\n let sep = '';\n let prevMoreIndented = false;\n // leading whitespace is kept intact\n for (let i = 0; i < contentStart; ++i)\n value += lines[i][0].slice(trimIndent) + '\\n';\n for (let i = contentStart; i < chompStart; ++i) {\n let [indent, content] = lines[i];\n offset += indent.length + content.length + 1;\n const crlf = content[content.length - 1] === '\\r';\n if (crlf)\n content = content.slice(0, -1);\n /* istanbul ignore if already caught in lexer */\n if (content && indent.length < trimIndent) {\n const src = header.indent\n ? 'explicit indentation indicator'\n : 'first line';\n const message = `Block scalar lines must not be less indented than their ${src}`;\n onError(offset - content.length - (crlf ? 2 : 1), 'BAD_INDENT', message);\n indent = '';\n }\n if (type === Scalar.Scalar.BLOCK_LITERAL) {\n value += sep + indent.slice(trimIndent) + content;\n sep = '\\n';\n }\n else if (indent.length > trimIndent || content[0] === '\\t') {\n // more-indented content within a folded block\n if (sep === ' ')\n sep = '\\n';\n else if (!prevMoreIndented && sep === '\\n')\n sep = '\\n\\n';\n value += sep + indent.slice(trimIndent) + content;\n sep = '\\n';\n prevMoreIndented = true;\n }\n else if (content === '') {\n // empty line\n if (sep === '\\n')\n value += '\\n';\n else\n sep = '\\n';\n }\n else {\n value += sep + content;\n sep = ' ';\n prevMoreIndented = false;\n }\n }\n switch (header.chomp) {\n case '-':\n break;\n case '+':\n for (let i = chompStart; i < lines.length; ++i)\n value += '\\n' + lines[i][0].slice(trimIndent);\n if (value[value.length - 1] !== '\\n')\n value += '\\n';\n break;\n default:\n value += '\\n';\n }\n const end = start + header.length + scalar.source.length;\n return { value, type, comment: header.comment, range: [start, end, end] };\n}\nfunction parseBlockScalarHeader({ offset, props }, strict, onError) {\n /* istanbul ignore if should not happen */\n if (props[0].type !== 'block-scalar-header') {\n onError(props[0], 'IMPOSSIBLE', 'Block scalar header not found');\n return null;\n }\n const { source } = props[0];\n const mode = source[0];\n let indent = 0;\n let chomp = '';\n let error = -1;\n for (let i = 1; i < source.length; ++i) {\n const ch = source[i];\n if (!chomp && (ch === '-' || ch === '+'))\n chomp = ch;\n else {\n const n = Number(ch);\n if (!indent && n)\n indent = n;\n else if (error === -1)\n error = offset + i;\n }\n }\n if (error !== -1)\n onError(error, 'UNEXPECTED_TOKEN', `Block scalar header includes extra characters: ${source}`);\n let hasSpace = false;\n let comment = '';\n let length = source.length;\n for (let i = 1; i < props.length; ++i) {\n const token = props[i];\n switch (token.type) {\n case 'space':\n hasSpace = true;\n // fallthrough\n case 'newline':\n length += token.source.length;\n break;\n case 'comment':\n if (strict && !hasSpace) {\n const message = 'Comments must be separated from other tokens by white space characters';\n onError(token, 'MISSING_CHAR', message);\n }\n length += token.source.length;\n comment = token.source.substring(1);\n break;\n case 'error':\n onError(token, 'UNEXPECTED_TOKEN', token.message);\n length += token.source.length;\n break;\n /* istanbul ignore next should not happen */\n default: {\n const message = `Unexpected token in block scalar header: ${token.type}`;\n onError(token, 'UNEXPECTED_TOKEN', message);\n const ts = token.source;\n if (ts && typeof ts === 'string')\n length += ts.length;\n }\n }\n }\n return { mode, indent, chomp, comment, length };\n}\n/** @returns Array of lines split up as `[indent, content]` */\nfunction splitLines(source) {\n const split = source.split(/\\n( *)/);\n const first = split[0];\n const m = first.match(/^( *)/);\n const line0 = m?.[1]\n ? [m[1], first.slice(m[1].length)]\n : ['', first];\n const lines = [line0];\n for (let i = 1; i < split.length; i += 2)\n lines.push([split[i], split[i + 1]]);\n return lines;\n}\n\nexports.resolveBlockScalar = resolveBlockScalar;\n", "'use strict';\n\nvar Scalar = require('../nodes/Scalar.js');\nvar resolveEnd = require('./resolve-end.js');\n\nfunction resolveFlowScalar(scalar, strict, onError) {\n const { offset, type, source, end } = scalar;\n let _type;\n let value;\n const _onError = (rel, code, msg) => onError(offset + rel, code, msg);\n switch (type) {\n case 'scalar':\n _type = Scalar.Scalar.PLAIN;\n value = plainValue(source, _onError);\n break;\n case 'single-quoted-scalar':\n _type = Scalar.Scalar.QUOTE_SINGLE;\n value = singleQuotedValue(source, _onError);\n break;\n case 'double-quoted-scalar':\n _type = Scalar.Scalar.QUOTE_DOUBLE;\n value = doubleQuotedValue(source, _onError);\n break;\n /* istanbul ignore next should not happen */\n default:\n onError(scalar, 'UNEXPECTED_TOKEN', `Expected a flow scalar value, but found: ${type}`);\n return {\n value: '',\n type: null,\n comment: '',\n range: [offset, offset + source.length, offset + source.length]\n };\n }\n const valueEnd = offset + source.length;\n const re = resolveEnd.resolveEnd(end, valueEnd, strict, onError);\n return {\n value,\n type: _type,\n comment: re.comment,\n range: [offset, valueEnd, re.offset]\n };\n}\nfunction plainValue(source, onError) {\n let badChar = '';\n switch (source[0]) {\n /* istanbul ignore next should not happen */\n case '\\t':\n badChar = 'a tab character';\n break;\n case ',':\n badChar = 'flow indicator character ,';\n break;\n case '%':\n badChar = 'directive indicator character %';\n break;\n case '|':\n case '>': {\n badChar = `block scalar indicator ${source[0]}`;\n break;\n }\n case '@':\n case '`': {\n badChar = `reserved character ${source[0]}`;\n break;\n }\n }\n if (badChar)\n onError(0, 'BAD_SCALAR_START', `Plain value cannot start with ${badChar}`);\n return foldLines(source);\n}\nfunction singleQuotedValue(source, onError) {\n if (source[source.length - 1] !== \"'\" || source.length === 1)\n onError(source.length, 'MISSING_CHAR', \"Missing closing 'quote\");\n return foldLines(source.slice(1, -1)).replace(/''/g, \"'\");\n}\nfunction foldLines(source) {\n /**\n * The negative lookbehind here and in the `re` RegExp is to\n * prevent causing a polynomial search time in certain cases.\n *\n * The try-catch is for Safari, which doesn't support this yet:\n * https://caniuse.com/js-regexp-lookbehind\n */\n let first, line;\n try {\n first = new RegExp('(.*?)(? wsStart ? source.slice(wsStart, i + 1) : ch;\n }\n else {\n res += ch;\n }\n }\n if (source[source.length - 1] !== '\"' || source.length === 1)\n onError(source.length, 'MISSING_CHAR', 'Missing closing \"quote');\n return res;\n}\n/**\n * Fold a single newline into a space, multiple newlines to N - 1 newlines.\n * Presumes `source[offset] === '\\n'`\n */\nfunction foldNewline(source, offset) {\n let fold = '';\n let ch = source[offset + 1];\n while (ch === ' ' || ch === '\\t' || ch === '\\n' || ch === '\\r') {\n if (ch === '\\r' && source[offset + 2] !== '\\n')\n break;\n if (ch === '\\n')\n fold += '\\n';\n offset += 1;\n ch = source[offset + 1];\n }\n if (!fold)\n fold = ' ';\n return { fold, offset };\n}\nconst escapeCodes = {\n '0': '\\0', // null character\n a: '\\x07', // bell character\n b: '\\b', // backspace\n e: '\\x1b', // escape character\n f: '\\f', // form feed\n n: '\\n', // line feed\n r: '\\r', // carriage return\n t: '\\t', // horizontal tab\n v: '\\v', // vertical tab\n N: '\\u0085', // Unicode next line\n _: '\\u00a0', // Unicode non-breaking space\n L: '\\u2028', // Unicode line separator\n P: '\\u2029', // Unicode paragraph separator\n ' ': ' ',\n '\"': '\"',\n '/': '/',\n '\\\\': '\\\\',\n '\\t': '\\t'\n};\nfunction parseCharCode(source, offset, length, onError) {\n const cc = source.substr(offset, length);\n const ok = cc.length === length && /^[0-9a-fA-F]+$/.test(cc);\n const code = ok ? parseInt(cc, 16) : NaN;\n if (isNaN(code)) {\n const raw = source.substr(offset - 2, length + 2);\n onError(offset - 2, 'BAD_DQ_ESCAPE', `Invalid escape sequence ${raw}`);\n return raw;\n }\n return String.fromCodePoint(code);\n}\n\nexports.resolveFlowScalar = resolveFlowScalar;\n", "'use strict';\n\nvar identity = require('../nodes/identity.js');\nvar Scalar = require('../nodes/Scalar.js');\nvar resolveBlockScalar = require('./resolve-block-scalar.js');\nvar resolveFlowScalar = require('./resolve-flow-scalar.js');\n\nfunction composeScalar(ctx, token, tagToken, onError) {\n const { value, type, comment, range } = token.type === 'block-scalar'\n ? resolveBlockScalar.resolveBlockScalar(ctx, token, onError)\n : resolveFlowScalar.resolveFlowScalar(token, ctx.options.strict, onError);\n const tagName = tagToken\n ? ctx.directives.tagName(tagToken.source, msg => onError(tagToken, 'TAG_RESOLVE_FAILED', msg))\n : null;\n let tag;\n if (ctx.options.stringKeys && ctx.atKey) {\n tag = ctx.schema[identity.SCALAR];\n }\n else if (tagName)\n tag = findScalarTagByName(ctx.schema, value, tagName, tagToken, onError);\n else if (token.type === 'scalar')\n tag = findScalarTagByTest(ctx, value, token, onError);\n else\n tag = ctx.schema[identity.SCALAR];\n let scalar;\n try {\n const res = tag.resolve(value, msg => onError(tagToken ?? token, 'TAG_RESOLVE_FAILED', msg), ctx.options);\n scalar = identity.isScalar(res) ? res : new Scalar.Scalar(res);\n }\n catch (error) {\n const msg = error instanceof Error ? error.message : String(error);\n onError(tagToken ?? token, 'TAG_RESOLVE_FAILED', msg);\n scalar = new Scalar.Scalar(value);\n }\n scalar.range = range;\n scalar.source = value;\n if (type)\n scalar.type = type;\n if (tagName)\n scalar.tag = tagName;\n if (tag.format)\n scalar.format = tag.format;\n if (comment)\n scalar.comment = comment;\n return scalar;\n}\nfunction findScalarTagByName(schema, value, tagName, tagToken, onError) {\n if (tagName === '!')\n return schema[identity.SCALAR]; // non-specific tag\n const matchWithTest = [];\n for (const tag of schema.tags) {\n if (!tag.collection && tag.tag === tagName) {\n if (tag.default && tag.test)\n matchWithTest.push(tag);\n else\n return tag;\n }\n }\n for (const tag of matchWithTest)\n if (tag.test?.test(value))\n return tag;\n const kt = schema.knownTags[tagName];\n if (kt && !kt.collection) {\n // Ensure that the known tag is available for stringifying,\n // but does not get used by default.\n schema.tags.push(Object.assign({}, kt, { default: false, test: undefined }));\n return kt;\n }\n onError(tagToken, 'TAG_RESOLVE_FAILED', `Unresolved tag: ${tagName}`, tagName !== 'tag:yaml.org,2002:str');\n return schema[identity.SCALAR];\n}\nfunction findScalarTagByTest({ atKey, directives, schema }, value, token, onError) {\n const tag = schema.tags.find(tag => (tag.default === true || (atKey && tag.default === 'key')) &&\n tag.test?.test(value)) || schema[identity.SCALAR];\n if (schema.compat) {\n const compat = schema.compat.find(tag => tag.default && tag.test?.test(value)) ??\n schema[identity.SCALAR];\n if (tag.tag !== compat.tag) {\n const ts = directives.tagString(tag.tag);\n const cs = directives.tagString(compat.tag);\n const msg = `Value may be parsed as either ${ts} or ${cs}`;\n onError(token, 'TAG_RESOLVE_FAILED', msg, true);\n }\n }\n return tag;\n}\n\nexports.composeScalar = composeScalar;\n", "'use strict';\n\nfunction emptyScalarPosition(offset, before, pos) {\n if (before) {\n if (pos === null)\n pos = before.length;\n for (let i = pos - 1; i >= 0; --i) {\n let st = before[i];\n switch (st.type) {\n case 'space':\n case 'comment':\n case 'newline':\n offset -= st.source.length;\n continue;\n }\n // Technically, an empty scalar is immediately after the last non-empty\n // node, but it's more useful to place it after any whitespace.\n st = before[++i];\n while (st?.type === 'space') {\n offset += st.source.length;\n st = before[++i];\n }\n break;\n }\n }\n return offset;\n}\n\nexports.emptyScalarPosition = emptyScalarPosition;\n", "'use strict';\n\nvar Alias = require('../nodes/Alias.js');\nvar identity = require('../nodes/identity.js');\nvar composeCollection = require('./compose-collection.js');\nvar composeScalar = require('./compose-scalar.js');\nvar resolveEnd = require('./resolve-end.js');\nvar utilEmptyScalarPosition = require('./util-empty-scalar-position.js');\n\nconst CN = { composeNode, composeEmptyNode };\nfunction composeNode(ctx, token, props, onError) {\n const atKey = ctx.atKey;\n const { spaceBefore, comment, anchor, tag } = props;\n let node;\n let isSrcToken = true;\n switch (token.type) {\n case 'alias':\n node = composeAlias(ctx, token, onError);\n if (anchor || tag)\n onError(token, 'ALIAS_PROPS', 'An alias node must not specify any properties');\n break;\n case 'scalar':\n case 'single-quoted-scalar':\n case 'double-quoted-scalar':\n case 'block-scalar':\n node = composeScalar.composeScalar(ctx, token, tag, onError);\n if (anchor)\n node.anchor = anchor.source.substring(1);\n break;\n case 'block-map':\n case 'block-seq':\n case 'flow-collection':\n node = composeCollection.composeCollection(CN, ctx, token, props, onError);\n if (anchor)\n node.anchor = anchor.source.substring(1);\n break;\n default: {\n const message = token.type === 'error'\n ? token.message\n : `Unsupported token (type: ${token.type})`;\n onError(token, 'UNEXPECTED_TOKEN', message);\n node = composeEmptyNode(ctx, token.offset, undefined, null, props, onError);\n isSrcToken = false;\n }\n }\n if (anchor && node.anchor === '')\n onError(anchor, 'BAD_ALIAS', 'Anchor cannot be an empty string');\n if (atKey &&\n ctx.options.stringKeys &&\n (!identity.isScalar(node) ||\n typeof node.value !== 'string' ||\n (node.tag && node.tag !== 'tag:yaml.org,2002:str'))) {\n const msg = 'With stringKeys, all keys must be strings';\n onError(tag ?? token, 'NON_STRING_KEY', msg);\n }\n if (spaceBefore)\n node.spaceBefore = true;\n if (comment) {\n if (token.type === 'scalar' && token.source === '')\n node.comment = comment;\n else\n node.commentBefore = comment;\n }\n // @ts-expect-error Type checking misses meaning of isSrcToken\n if (ctx.options.keepSourceTokens && isSrcToken)\n node.srcToken = token;\n return node;\n}\nfunction composeEmptyNode(ctx, offset, before, pos, { spaceBefore, comment, anchor, tag, end }, onError) {\n const token = {\n type: 'scalar',\n offset: utilEmptyScalarPosition.emptyScalarPosition(offset, before, pos),\n indent: -1,\n source: ''\n };\n const node = composeScalar.composeScalar(ctx, token, tag, onError);\n if (anchor) {\n node.anchor = anchor.source.substring(1);\n if (node.anchor === '')\n onError(anchor, 'BAD_ALIAS', 'Anchor cannot be an empty string');\n }\n if (spaceBefore)\n node.spaceBefore = true;\n if (comment) {\n node.comment = comment;\n node.range[2] = end;\n }\n return node;\n}\nfunction composeAlias({ options }, { offset, source, end }, onError) {\n const alias = new Alias.Alias(source.substring(1));\n if (alias.source === '')\n onError(offset, 'BAD_ALIAS', 'Alias cannot be an empty string');\n if (alias.source.endsWith(':'))\n onError(offset + source.length - 1, 'BAD_ALIAS', 'Alias ending in : is ambiguous', true);\n const valueEnd = offset + source.length;\n const re = resolveEnd.resolveEnd(end, valueEnd, options.strict, onError);\n alias.range = [offset, valueEnd, re.offset];\n if (re.comment)\n alias.comment = re.comment;\n return alias;\n}\n\nexports.composeEmptyNode = composeEmptyNode;\nexports.composeNode = composeNode;\n", "'use strict';\n\nvar Document = require('../doc/Document.js');\nvar composeNode = require('./compose-node.js');\nvar resolveEnd = require('./resolve-end.js');\nvar resolveProps = require('./resolve-props.js');\n\nfunction composeDoc(options, directives, { offset, start, value, end }, onError) {\n const opts = Object.assign({ _directives: directives }, options);\n const doc = new Document.Document(undefined, opts);\n const ctx = {\n atKey: false,\n atRoot: true,\n directives: doc.directives,\n options: doc.options,\n schema: doc.schema\n };\n const props = resolveProps.resolveProps(start, {\n indicator: 'doc-start',\n next: value ?? end?.[0],\n offset,\n onError,\n parentIndent: 0,\n startOnNewline: true\n });\n if (props.found) {\n doc.directives.docStart = true;\n if (value &&\n (value.type === 'block-map' || value.type === 'block-seq') &&\n !props.hasNewline)\n onError(props.end, 'MISSING_CHAR', 'Block collection cannot start on same line with directives-end marker');\n }\n // @ts-expect-error If Contents is set, let's trust the user\n doc.contents = value\n ? composeNode.composeNode(ctx, value, props, onError)\n : composeNode.composeEmptyNode(ctx, props.end, start, null, props, onError);\n const contentEnd = doc.contents.range[2];\n const re = resolveEnd.resolveEnd(end, contentEnd, false, onError);\n if (re.comment)\n doc.comment = re.comment;\n doc.range = [offset, contentEnd, re.offset];\n return doc;\n}\n\nexports.composeDoc = composeDoc;\n", "'use strict';\n\nvar node_process = require('node:process');\nvar directives = require('../doc/directives.js');\nvar Document = require('../doc/Document.js');\nvar errors = require('../errors.js');\nvar identity = require('../nodes/identity.js');\nvar composeDoc = require('./compose-doc.js');\nvar resolveEnd = require('./resolve-end.js');\n\nfunction getErrorPos(src) {\n if (typeof src === 'number')\n return [src, src + 1];\n if (Array.isArray(src))\n return src.length === 2 ? src : [src[0], src[1]];\n const { offset, source } = src;\n return [offset, offset + (typeof source === 'string' ? source.length : 1)];\n}\nfunction parsePrelude(prelude) {\n let comment = '';\n let atComment = false;\n let afterEmptyLine = false;\n for (let i = 0; i < prelude.length; ++i) {\n const source = prelude[i];\n switch (source[0]) {\n case '#':\n comment +=\n (comment === '' ? '' : afterEmptyLine ? '\\n\\n' : '\\n') +\n (source.substring(1) || ' ');\n atComment = true;\n afterEmptyLine = false;\n break;\n case '%':\n if (prelude[i + 1]?.[0] !== '#')\n i += 1;\n atComment = false;\n break;\n default:\n // This may be wrong after doc-end, but in that case it doesn't matter\n if (!atComment)\n afterEmptyLine = true;\n atComment = false;\n }\n }\n return { comment, afterEmptyLine };\n}\n/**\n * Compose a stream of CST nodes into a stream of YAML Documents.\n *\n * ```ts\n * import { Composer, Parser } from 'yaml'\n *\n * const src: string = ...\n * const tokens = new Parser().parse(src)\n * const docs = new Composer().compose(tokens)\n * ```\n */\nclass Composer {\n constructor(options = {}) {\n this.doc = null;\n this.atDirectives = false;\n this.prelude = [];\n this.errors = [];\n this.warnings = [];\n this.onError = (source, code, message, warning) => {\n const pos = getErrorPos(source);\n if (warning)\n this.warnings.push(new errors.YAMLWarning(pos, code, message));\n else\n this.errors.push(new errors.YAMLParseError(pos, code, message));\n };\n // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing\n this.directives = new directives.Directives({ version: options.version || '1.2' });\n this.options = options;\n }\n decorate(doc, afterDoc) {\n const { comment, afterEmptyLine } = parsePrelude(this.prelude);\n //console.log({ dc: doc.comment, prelude, comment })\n if (comment) {\n const dc = doc.contents;\n if (afterDoc) {\n doc.comment = doc.comment ? `${doc.comment}\\n${comment}` : comment;\n }\n else if (afterEmptyLine || doc.directives.docStart || !dc) {\n doc.commentBefore = comment;\n }\n else if (identity.isCollection(dc) && !dc.flow && dc.items.length > 0) {\n let it = dc.items[0];\n if (identity.isPair(it))\n it = it.key;\n const cb = it.commentBefore;\n it.commentBefore = cb ? `${comment}\\n${cb}` : comment;\n }\n else {\n const cb = dc.commentBefore;\n dc.commentBefore = cb ? `${comment}\\n${cb}` : comment;\n }\n }\n if (afterDoc) {\n Array.prototype.push.apply(doc.errors, this.errors);\n Array.prototype.push.apply(doc.warnings, this.warnings);\n }\n else {\n doc.errors = this.errors;\n doc.warnings = this.warnings;\n }\n this.prelude = [];\n this.errors = [];\n this.warnings = [];\n }\n /**\n * Current stream status information.\n *\n * Mostly useful at the end of input for an empty stream.\n */\n streamInfo() {\n return {\n comment: parsePrelude(this.prelude).comment,\n directives: this.directives,\n errors: this.errors,\n warnings: this.warnings\n };\n }\n /**\n * Compose tokens into documents.\n *\n * @param forceDoc - If the stream contains no document, still emit a final document including any comments and directives that would be applied to a subsequent document.\n * @param endOffset - Should be set if `forceDoc` is also set, to set the document range end and to indicate errors correctly.\n */\n *compose(tokens, forceDoc = false, endOffset = -1) {\n for (const token of tokens)\n yield* this.next(token);\n yield* this.end(forceDoc, endOffset);\n }\n /** Advance the composer by one CST token. */\n *next(token) {\n if (node_process.env.LOG_STREAM)\n console.dir(token, { depth: null });\n switch (token.type) {\n case 'directive':\n this.directives.add(token.source, (offset, message, warning) => {\n const pos = getErrorPos(token);\n pos[0] += offset;\n this.onError(pos, 'BAD_DIRECTIVE', message, warning);\n });\n this.prelude.push(token.source);\n this.atDirectives = true;\n break;\n case 'document': {\n const doc = composeDoc.composeDoc(this.options, this.directives, token, this.onError);\n if (this.atDirectives && !doc.directives.docStart)\n this.onError(token, 'MISSING_CHAR', 'Missing directives-end/doc-start indicator line');\n this.decorate(doc, false);\n if (this.doc)\n yield this.doc;\n this.doc = doc;\n this.atDirectives = false;\n break;\n }\n case 'byte-order-mark':\n case 'space':\n break;\n case 'comment':\n case 'newline':\n this.prelude.push(token.source);\n break;\n case 'error': {\n const msg = token.source\n ? `${token.message}: ${JSON.stringify(token.source)}`\n : token.message;\n const error = new errors.YAMLParseError(getErrorPos(token), 'UNEXPECTED_TOKEN', msg);\n if (this.atDirectives || !this.doc)\n this.errors.push(error);\n else\n this.doc.errors.push(error);\n break;\n }\n case 'doc-end': {\n if (!this.doc) {\n const msg = 'Unexpected doc-end without preceding document';\n this.errors.push(new errors.YAMLParseError(getErrorPos(token), 'UNEXPECTED_TOKEN', msg));\n break;\n }\n this.doc.directives.docEnd = true;\n const end = resolveEnd.resolveEnd(token.end, token.offset + token.source.length, this.doc.options.strict, this.onError);\n this.decorate(this.doc, true);\n if (end.comment) {\n const dc = this.doc.comment;\n this.doc.comment = dc ? `${dc}\\n${end.comment}` : end.comment;\n }\n this.doc.range[2] = end.offset;\n break;\n }\n default:\n this.errors.push(new errors.YAMLParseError(getErrorPos(token), 'UNEXPECTED_TOKEN', `Unsupported token ${token.type}`));\n }\n }\n /**\n * Call at end of input to yield any remaining document.\n *\n * @param forceDoc - If the stream contains no document, still emit a final document including any comments and directives that would be applied to a subsequent document.\n * @param endOffset - Should be set if `forceDoc` is also set, to set the document range end and to indicate errors correctly.\n */\n *end(forceDoc = false, endOffset = -1) {\n if (this.doc) {\n this.decorate(this.doc, true);\n yield this.doc;\n this.doc = null;\n }\n else if (forceDoc) {\n const opts = Object.assign({ _directives: this.directives }, this.options);\n const doc = new Document.Document(undefined, opts);\n if (this.atDirectives)\n this.onError(endOffset, 'MISSING_CHAR', 'Missing directives-end indicator line');\n doc.range = [0, endOffset, endOffset];\n this.decorate(doc, false);\n yield doc;\n }\n }\n}\n\nexports.Composer = Composer;\n", "'use strict';\n\nvar resolveBlockScalar = require('../compose/resolve-block-scalar.js');\nvar resolveFlowScalar = require('../compose/resolve-flow-scalar.js');\nvar errors = require('../errors.js');\nvar stringifyString = require('../stringify/stringifyString.js');\n\nfunction resolveAsScalar(token, strict = true, onError) {\n if (token) {\n const _onError = (pos, code, message) => {\n const offset = typeof pos === 'number' ? pos : Array.isArray(pos) ? pos[0] : pos.offset;\n if (onError)\n onError(offset, code, message);\n else\n throw new errors.YAMLParseError([offset, offset + 1], code, message);\n };\n switch (token.type) {\n case 'scalar':\n case 'single-quoted-scalar':\n case 'double-quoted-scalar':\n return resolveFlowScalar.resolveFlowScalar(token, strict, _onError);\n case 'block-scalar':\n return resolveBlockScalar.resolveBlockScalar({ options: { strict } }, token, _onError);\n }\n }\n return null;\n}\n/**\n * Create a new scalar token with `value`\n *\n * Values that represent an actual string but may be parsed as a different type should use a `type` other than `'PLAIN'`,\n * as this function does not support any schema operations and won't check for such conflicts.\n *\n * @param value The string representation of the value, which will have its content properly indented.\n * @param context.end Comments and whitespace after the end of the value, or after the block scalar header. If undefined, a newline will be added.\n * @param context.implicitKey Being within an implicit key may affect the resolved type of the token's value.\n * @param context.indent The indent level of the token.\n * @param context.inFlow Is this scalar within a flow collection? This may affect the resolved type of the token's value.\n * @param context.offset The offset position of the token.\n * @param context.type The preferred type of the scalar token. If undefined, the previous type of the `token` will be used, defaulting to `'PLAIN'`.\n */\nfunction createScalarToken(value, context) {\n const { implicitKey = false, indent, inFlow = false, offset = -1, type = 'PLAIN' } = context;\n const source = stringifyString.stringifyString({ type, value }, {\n implicitKey,\n indent: indent > 0 ? ' '.repeat(indent) : '',\n inFlow,\n options: { blockQuote: true, lineWidth: -1 }\n });\n const end = context.end ?? [\n { type: 'newline', offset: -1, indent, source: '\\n' }\n ];\n switch (source[0]) {\n case '|':\n case '>': {\n const he = source.indexOf('\\n');\n const head = source.substring(0, he);\n const body = source.substring(he + 1) + '\\n';\n const props = [\n { type: 'block-scalar-header', offset, indent, source: head }\n ];\n if (!addEndtoBlockProps(props, end))\n props.push({ type: 'newline', offset: -1, indent, source: '\\n' });\n return { type: 'block-scalar', offset, indent, props, source: body };\n }\n case '\"':\n return { type: 'double-quoted-scalar', offset, indent, source, end };\n case \"'\":\n return { type: 'single-quoted-scalar', offset, indent, source, end };\n default:\n return { type: 'scalar', offset, indent, source, end };\n }\n}\n/**\n * Set the value of `token` to the given string `value`, overwriting any previous contents and type that it may have.\n *\n * Best efforts are made to retain any comments previously associated with the `token`,\n * though all contents within a collection's `items` will be overwritten.\n *\n * Values that represent an actual string but may be parsed as a different type should use a `type` other than `'PLAIN'`,\n * as this function does not support any schema operations and won't check for such conflicts.\n *\n * @param token Any token. If it does not include an `indent` value, the value will be stringified as if it were an implicit key.\n * @param value The string representation of the value, which will have its content properly indented.\n * @param context.afterKey In most cases, values after a key should have an additional level of indentation.\n * @param context.implicitKey Being within an implicit key may affect the resolved type of the token's value.\n * @param context.inFlow Being within a flow collection may affect the resolved type of the token's value.\n * @param context.type The preferred type of the scalar token. If undefined, the previous type of the `token` will be used, defaulting to `'PLAIN'`.\n */\nfunction setScalarValue(token, value, context = {}) {\n let { afterKey = false, implicitKey = false, inFlow = false, type } = context;\n let indent = 'indent' in token ? token.indent : null;\n if (afterKey && typeof indent === 'number')\n indent += 2;\n if (!type)\n switch (token.type) {\n case 'single-quoted-scalar':\n type = 'QUOTE_SINGLE';\n break;\n case 'double-quoted-scalar':\n type = 'QUOTE_DOUBLE';\n break;\n case 'block-scalar': {\n const header = token.props[0];\n if (header.type !== 'block-scalar-header')\n throw new Error('Invalid block scalar header');\n type = header.source[0] === '>' ? 'BLOCK_FOLDED' : 'BLOCK_LITERAL';\n break;\n }\n default:\n type = 'PLAIN';\n }\n const source = stringifyString.stringifyString({ type, value }, {\n implicitKey: implicitKey || indent === null,\n indent: indent !== null && indent > 0 ? ' '.repeat(indent) : '',\n inFlow,\n options: { blockQuote: true, lineWidth: -1 }\n });\n switch (source[0]) {\n case '|':\n case '>':\n setBlockScalarValue(token, source);\n break;\n case '\"':\n setFlowScalarValue(token, source, 'double-quoted-scalar');\n break;\n case \"'\":\n setFlowScalarValue(token, source, 'single-quoted-scalar');\n break;\n default:\n setFlowScalarValue(token, source, 'scalar');\n }\n}\nfunction setBlockScalarValue(token, source) {\n const he = source.indexOf('\\n');\n const head = source.substring(0, he);\n const body = source.substring(he + 1) + '\\n';\n if (token.type === 'block-scalar') {\n const header = token.props[0];\n if (header.type !== 'block-scalar-header')\n throw new Error('Invalid block scalar header');\n header.source = head;\n token.source = body;\n }\n else {\n const { offset } = token;\n const indent = 'indent' in token ? token.indent : -1;\n const props = [\n { type: 'block-scalar-header', offset, indent, source: head }\n ];\n if (!addEndtoBlockProps(props, 'end' in token ? token.end : undefined))\n props.push({ type: 'newline', offset: -1, indent, source: '\\n' });\n for (const key of Object.keys(token))\n if (key !== 'type' && key !== 'offset')\n delete token[key];\n Object.assign(token, { type: 'block-scalar', indent, props, source: body });\n }\n}\n/** @returns `true` if last token is a newline */\nfunction addEndtoBlockProps(props, end) {\n if (end)\n for (const st of end)\n switch (st.type) {\n case 'space':\n case 'comment':\n props.push(st);\n break;\n case 'newline':\n props.push(st);\n return true;\n }\n return false;\n}\nfunction setFlowScalarValue(token, source, type) {\n switch (token.type) {\n case 'scalar':\n case 'double-quoted-scalar':\n case 'single-quoted-scalar':\n token.type = type;\n token.source = source;\n break;\n case 'block-scalar': {\n const end = token.props.slice(1);\n let oa = source.length;\n if (token.props[0].type === 'block-scalar-header')\n oa -= token.props[0].source.length;\n for (const tok of end)\n tok.offset += oa;\n delete token.props;\n Object.assign(token, { type, source, end });\n break;\n }\n case 'block-map':\n case 'block-seq': {\n const offset = token.offset + source.length;\n const nl = { type: 'newline', offset, indent: token.indent, source: '\\n' };\n delete token.items;\n Object.assign(token, { type, source, end: [nl] });\n break;\n }\n default: {\n const indent = 'indent' in token ? token.indent : -1;\n const end = 'end' in token && Array.isArray(token.end)\n ? token.end.filter(st => st.type === 'space' ||\n st.type === 'comment' ||\n st.type === 'newline')\n : [];\n for (const key of Object.keys(token))\n if (key !== 'type' && key !== 'offset')\n delete token[key];\n Object.assign(token, { type, indent, source, end });\n }\n }\n}\n\nexports.createScalarToken = createScalarToken;\nexports.resolveAsScalar = resolveAsScalar;\nexports.setScalarValue = setScalarValue;\n", "'use strict';\n\n/**\n * Stringify a CST document, token, or collection item\n *\n * Fair warning: This applies no validation whatsoever, and\n * simply concatenates the sources in their logical order.\n */\nconst stringify = (cst) => 'type' in cst ? stringifyToken(cst) : stringifyItem(cst);\nfunction stringifyToken(token) {\n switch (token.type) {\n case 'block-scalar': {\n let res = '';\n for (const tok of token.props)\n res += stringifyToken(tok);\n return res + token.source;\n }\n case 'block-map':\n case 'block-seq': {\n let res = '';\n for (const item of token.items)\n res += stringifyItem(item);\n return res;\n }\n case 'flow-collection': {\n let res = token.start.source;\n for (const item of token.items)\n res += stringifyItem(item);\n for (const st of token.end)\n res += st.source;\n return res;\n }\n case 'document': {\n let res = stringifyItem(token);\n if (token.end)\n for (const st of token.end)\n res += st.source;\n return res;\n }\n default: {\n let res = token.source;\n if ('end' in token && token.end)\n for (const st of token.end)\n res += st.source;\n return res;\n }\n }\n}\nfunction stringifyItem({ start, key, sep, value }) {\n let res = '';\n for (const st of start)\n res += st.source;\n if (key)\n res += stringifyToken(key);\n if (sep)\n for (const st of sep)\n res += st.source;\n if (value)\n res += stringifyToken(value);\n return res;\n}\n\nexports.stringify = stringify;\n", "'use strict';\n\nconst BREAK = Symbol('break visit');\nconst SKIP = Symbol('skip children');\nconst REMOVE = Symbol('remove item');\n/**\n * Apply a visitor to a CST document or item.\n *\n * Walks through the tree (depth-first) starting from the root, calling a\n * `visitor` function with two arguments when entering each item:\n * - `item`: The current item, which included the following members:\n * - `start: SourceToken[]` \u2013 Source tokens before the key or value,\n * possibly including its anchor or tag.\n * - `key?: Token | null` \u2013 Set for pair values. May then be `null`, if\n * the key before the `:` separator is empty.\n * - `sep?: SourceToken[]` \u2013 Source tokens between the key and the value,\n * which should include the `:` map value indicator if `value` is set.\n * - `value?: Token` \u2013 The value of a sequence item, or of a map pair.\n * - `path`: The steps from the root to the current node, as an array of\n * `['key' | 'value', number]` tuples.\n *\n * The return value of the visitor may be used to control the traversal:\n * - `undefined` (default): Do nothing and continue\n * - `visit.SKIP`: Do not visit the children of this token, continue with\n * next sibling\n * - `visit.BREAK`: Terminate traversal completely\n * - `visit.REMOVE`: Remove the current item, then continue with the next one\n * - `number`: Set the index of the next step. This is useful especially if\n * the index of the current token has changed.\n * - `function`: Define the next visitor for this item. After the original\n * visitor is called on item entry, next visitors are called after handling\n * a non-empty `key` and when exiting the item.\n */\nfunction visit(cst, visitor) {\n if ('type' in cst && cst.type === 'document')\n cst = { start: cst.start, value: cst.value };\n _visit(Object.freeze([]), cst, visitor);\n}\n// Without the `as symbol` casts, TS declares these in the `visit`\n// namespace using `var`, but then complains about that because\n// `unique symbol` must be `const`.\n/** Terminate visit traversal completely */\nvisit.BREAK = BREAK;\n/** Do not visit the children of the current item */\nvisit.SKIP = SKIP;\n/** Remove the current item */\nvisit.REMOVE = REMOVE;\n/** Find the item at `path` from `cst` as the root */\nvisit.itemAtPath = (cst, path) => {\n let item = cst;\n for (const [field, index] of path) {\n const tok = item?.[field];\n if (tok && 'items' in tok) {\n item = tok.items[index];\n }\n else\n return undefined;\n }\n return item;\n};\n/**\n * Get the immediate parent collection of the item at `path` from `cst` as the root.\n *\n * Throws an error if the collection is not found, which should never happen if the item itself exists.\n */\nvisit.parentCollection = (cst, path) => {\n const parent = visit.itemAtPath(cst, path.slice(0, -1));\n const field = path[path.length - 1][0];\n const coll = parent?.[field];\n if (coll && 'items' in coll)\n return coll;\n throw new Error('Parent collection not found');\n};\nfunction _visit(path, item, visitor) {\n let ctrl = visitor(item, path);\n if (typeof ctrl === 'symbol')\n return ctrl;\n for (const field of ['key', 'value']) {\n const token = item[field];\n if (token && 'items' in token) {\n for (let i = 0; i < token.items.length; ++i) {\n const ci = _visit(Object.freeze(path.concat([[field, i]])), token.items[i], visitor);\n if (typeof ci === 'number')\n i = ci - 1;\n else if (ci === BREAK)\n return BREAK;\n else if (ci === REMOVE) {\n token.items.splice(i, 1);\n i -= 1;\n }\n }\n if (typeof ctrl === 'function' && field === 'key')\n ctrl = ctrl(item, path);\n }\n }\n return typeof ctrl === 'function' ? ctrl(item, path) : ctrl;\n}\n\nexports.visit = visit;\n", "'use strict';\n\nvar cstScalar = require('./cst-scalar.js');\nvar cstStringify = require('./cst-stringify.js');\nvar cstVisit = require('./cst-visit.js');\n\n/** The byte order mark */\nconst BOM = '\\u{FEFF}';\n/** Start of doc-mode */\nconst DOCUMENT = '\\x02'; // C0: Start of Text\n/** Unexpected end of flow-mode */\nconst FLOW_END = '\\x18'; // C0: Cancel\n/** Next token is a scalar value */\nconst SCALAR = '\\x1f'; // C0: Unit Separator\n/** @returns `true` if `token` is a flow or block collection */\nconst isCollection = (token) => !!token && 'items' in token;\n/** @returns `true` if `token` is a flow or block scalar; not an alias */\nconst isScalar = (token) => !!token &&\n (token.type === 'scalar' ||\n token.type === 'single-quoted-scalar' ||\n token.type === 'double-quoted-scalar' ||\n token.type === 'block-scalar');\n/* istanbul ignore next */\n/** Get a printable representation of a lexer token */\nfunction prettyToken(token) {\n switch (token) {\n case BOM:\n return '';\n case DOCUMENT:\n return '';\n case FLOW_END:\n return '';\n case SCALAR:\n return '';\n default:\n return JSON.stringify(token);\n }\n}\n/** Identify the type of a lexer token. May return `null` for unknown tokens. */\nfunction tokenType(source) {\n switch (source) {\n case BOM:\n return 'byte-order-mark';\n case DOCUMENT:\n return 'doc-mode';\n case FLOW_END:\n return 'flow-error-end';\n case SCALAR:\n return 'scalar';\n case '---':\n return 'doc-start';\n case '...':\n return 'doc-end';\n case '':\n case '\\n':\n case '\\r\\n':\n return 'newline';\n case '-':\n return 'seq-item-ind';\n case '?':\n return 'explicit-key-ind';\n case ':':\n return 'map-value-ind';\n case '{':\n return 'flow-map-start';\n case '}':\n return 'flow-map-end';\n case '[':\n return 'flow-seq-start';\n case ']':\n return 'flow-seq-end';\n case ',':\n return 'comma';\n }\n switch (source[0]) {\n case ' ':\n case '\\t':\n return 'space';\n case '#':\n return 'comment';\n case '%':\n return 'directive-line';\n case '*':\n return 'alias';\n case '&':\n return 'anchor';\n case '!':\n return 'tag';\n case \"'\":\n return 'single-quoted-scalar';\n case '\"':\n return 'double-quoted-scalar';\n case '|':\n case '>':\n return 'block-scalar-header';\n }\n return null;\n}\n\nexports.createScalarToken = cstScalar.createScalarToken;\nexports.resolveAsScalar = cstScalar.resolveAsScalar;\nexports.setScalarValue = cstScalar.setScalarValue;\nexports.stringify = cstStringify.stringify;\nexports.visit = cstVisit.visit;\nexports.BOM = BOM;\nexports.DOCUMENT = DOCUMENT;\nexports.FLOW_END = FLOW_END;\nexports.SCALAR = SCALAR;\nexports.isCollection = isCollection;\nexports.isScalar = isScalar;\nexports.prettyToken = prettyToken;\nexports.tokenType = tokenType;\n", "'use strict';\n\nvar cst = require('./cst.js');\n\n/*\nSTART -> stream\n\nstream\n directive -> line-end -> stream\n indent + line-end -> stream\n [else] -> line-start\n\nline-end\n comment -> line-end\n newline -> .\n input-end -> END\n\nline-start\n doc-start -> doc\n doc-end -> stream\n [else] -> indent -> block-start\n\nblock-start\n seq-item-start -> block-start\n explicit-key-start -> block-start\n map-value-start -> block-start\n [else] -> doc\n\ndoc\n line-end -> line-start\n spaces -> doc\n anchor -> doc\n tag -> doc\n flow-start -> flow -> doc\n flow-end -> error -> doc\n seq-item-start -> error -> doc\n explicit-key-start -> error -> doc\n map-value-start -> doc\n alias -> doc\n quote-start -> quoted-scalar -> doc\n block-scalar-header -> line-end -> block-scalar(min) -> line-start\n [else] -> plain-scalar(false, min) -> doc\n\nflow\n line-end -> flow\n spaces -> flow\n anchor -> flow\n tag -> flow\n flow-start -> flow -> flow\n flow-end -> .\n seq-item-start -> error -> flow\n explicit-key-start -> flow\n map-value-start -> flow\n alias -> flow\n quote-start -> quoted-scalar -> flow\n comma -> flow\n [else] -> plain-scalar(true, 0) -> flow\n\nquoted-scalar\n quote-end -> .\n [else] -> quoted-scalar\n\nblock-scalar(min)\n newline + peek(indent < min) -> .\n [else] -> block-scalar(min)\n\nplain-scalar(is-flow, min)\n scalar-end(is-flow) -> .\n peek(newline + (indent < min)) -> .\n [else] -> plain-scalar(min)\n*/\nfunction isEmpty(ch) {\n switch (ch) {\n case undefined:\n case ' ':\n case '\\n':\n case '\\r':\n case '\\t':\n return true;\n default:\n return false;\n }\n}\nconst hexDigits = new Set('0123456789ABCDEFabcdef');\nconst tagChars = new Set(\"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-#;/?:@&=+$_.!~*'()\");\nconst flowIndicatorChars = new Set(',[]{}');\nconst invalidAnchorChars = new Set(' ,[]{}\\n\\r\\t');\nconst isNotAnchorChar = (ch) => !ch || invalidAnchorChars.has(ch);\n/**\n * Splits an input string into lexical tokens, i.e. smaller strings that are\n * easily identifiable by `tokens.tokenType()`.\n *\n * Lexing starts always in a \"stream\" context. Incomplete input may be buffered\n * until a complete token can be emitted.\n *\n * In addition to slices of the original input, the following control characters\n * may also be emitted:\n *\n * - `\\x02` (Start of Text): A document starts with the next token\n * - `\\x18` (Cancel): Unexpected end of flow-mode (indicates an error)\n * - `\\x1f` (Unit Separator): Next token is a scalar value\n * - `\\u{FEFF}` (Byte order mark): Emitted separately outside documents\n */\nclass Lexer {\n constructor() {\n /**\n * Flag indicating whether the end of the current buffer marks the end of\n * all input\n */\n this.atEnd = false;\n /**\n * Explicit indent set in block scalar header, as an offset from the current\n * minimum indent, so e.g. set to 1 from a header `|2+`. Set to -1 if not\n * explicitly set.\n */\n this.blockScalarIndent = -1;\n /**\n * Block scalars that include a + (keep) chomping indicator in their header\n * include trailing empty lines, which are otherwise excluded from the\n * scalar's contents.\n */\n this.blockScalarKeep = false;\n /** Current input */\n this.buffer = '';\n /**\n * Flag noting whether the map value indicator : can immediately follow this\n * node within a flow context.\n */\n this.flowKey = false;\n /** Count of surrounding flow collection levels. */\n this.flowLevel = 0;\n /**\n * Minimum level of indentation required for next lines to be parsed as a\n * part of the current scalar value.\n */\n this.indentNext = 0;\n /** Indentation level of the current line. */\n this.indentValue = 0;\n /** Position of the next \\n character. */\n this.lineEndPos = null;\n /** Stores the state of the lexer if reaching the end of incpomplete input */\n this.next = null;\n /** A pointer to `buffer`; the current position of the lexer. */\n this.pos = 0;\n }\n /**\n * Generate YAML tokens from the `source` string. If `incomplete`,\n * a part of the last line may be left as a buffer for the next call.\n *\n * @returns A generator of lexical tokens\n */\n *lex(source, incomplete = false) {\n if (source) {\n if (typeof source !== 'string')\n throw TypeError('source is not a string');\n this.buffer = this.buffer ? this.buffer + source : source;\n this.lineEndPos = null;\n }\n this.atEnd = !incomplete;\n let next = this.next ?? 'stream';\n while (next && (incomplete || this.hasChars(1)))\n next = yield* this.parseNext(next);\n }\n atLineEnd() {\n let i = this.pos;\n let ch = this.buffer[i];\n while (ch === ' ' || ch === '\\t')\n ch = this.buffer[++i];\n if (!ch || ch === '#' || ch === '\\n')\n return true;\n if (ch === '\\r')\n return this.buffer[i + 1] === '\\n';\n return false;\n }\n charAt(n) {\n return this.buffer[this.pos + n];\n }\n continueScalar(offset) {\n let ch = this.buffer[offset];\n if (this.indentNext > 0) {\n let indent = 0;\n while (ch === ' ')\n ch = this.buffer[++indent + offset];\n if (ch === '\\r') {\n const next = this.buffer[indent + offset + 1];\n if (next === '\\n' || (!next && !this.atEnd))\n return offset + indent + 1;\n }\n return ch === '\\n' || indent >= this.indentNext || (!ch && !this.atEnd)\n ? offset + indent\n : -1;\n }\n if (ch === '-' || ch === '.') {\n const dt = this.buffer.substr(offset, 3);\n if ((dt === '---' || dt === '...') && isEmpty(this.buffer[offset + 3]))\n return -1;\n }\n return offset;\n }\n getLine() {\n let end = this.lineEndPos;\n if (typeof end !== 'number' || (end !== -1 && end < this.pos)) {\n end = this.buffer.indexOf('\\n', this.pos);\n this.lineEndPos = end;\n }\n if (end === -1)\n return this.atEnd ? this.buffer.substring(this.pos) : null;\n if (this.buffer[end - 1] === '\\r')\n end -= 1;\n return this.buffer.substring(this.pos, end);\n }\n hasChars(n) {\n return this.pos + n <= this.buffer.length;\n }\n setNext(state) {\n this.buffer = this.buffer.substring(this.pos);\n this.pos = 0;\n this.lineEndPos = null;\n this.next = state;\n return null;\n }\n peek(n) {\n return this.buffer.substr(this.pos, n);\n }\n *parseNext(next) {\n switch (next) {\n case 'stream':\n return yield* this.parseStream();\n case 'line-start':\n return yield* this.parseLineStart();\n case 'block-start':\n return yield* this.parseBlockStart();\n case 'doc':\n return yield* this.parseDocument();\n case 'flow':\n return yield* this.parseFlowCollection();\n case 'quoted-scalar':\n return yield* this.parseQuotedScalar();\n case 'block-scalar':\n return yield* this.parseBlockScalar();\n case 'plain-scalar':\n return yield* this.parsePlainScalar();\n }\n }\n *parseStream() {\n let line = this.getLine();\n if (line === null)\n return this.setNext('stream');\n if (line[0] === cst.BOM) {\n yield* this.pushCount(1);\n line = line.substring(1);\n }\n if (line[0] === '%') {\n let dirEnd = line.length;\n let cs = line.indexOf('#');\n while (cs !== -1) {\n const ch = line[cs - 1];\n if (ch === ' ' || ch === '\\t') {\n dirEnd = cs - 1;\n break;\n }\n else {\n cs = line.indexOf('#', cs + 1);\n }\n }\n while (true) {\n const ch = line[dirEnd - 1];\n if (ch === ' ' || ch === '\\t')\n dirEnd -= 1;\n else\n break;\n }\n const n = (yield* this.pushCount(dirEnd)) + (yield* this.pushSpaces(true));\n yield* this.pushCount(line.length - n); // possible comment\n this.pushNewline();\n return 'stream';\n }\n if (this.atLineEnd()) {\n const sp = yield* this.pushSpaces(true);\n yield* this.pushCount(line.length - sp);\n yield* this.pushNewline();\n return 'stream';\n }\n yield cst.DOCUMENT;\n return yield* this.parseLineStart();\n }\n *parseLineStart() {\n const ch = this.charAt(0);\n if (!ch && !this.atEnd)\n return this.setNext('line-start');\n if (ch === '-' || ch === '.') {\n if (!this.atEnd && !this.hasChars(4))\n return this.setNext('line-start');\n const s = this.peek(3);\n if ((s === '---' || s === '...') && isEmpty(this.charAt(3))) {\n yield* this.pushCount(3);\n this.indentValue = 0;\n this.indentNext = 0;\n return s === '---' ? 'doc' : 'stream';\n }\n }\n this.indentValue = yield* this.pushSpaces(false);\n if (this.indentNext > this.indentValue && !isEmpty(this.charAt(1)))\n this.indentNext = this.indentValue;\n return yield* this.parseBlockStart();\n }\n *parseBlockStart() {\n const [ch0, ch1] = this.peek(2);\n if (!ch1 && !this.atEnd)\n return this.setNext('block-start');\n if ((ch0 === '-' || ch0 === '?' || ch0 === ':') && isEmpty(ch1)) {\n const n = (yield* this.pushCount(1)) + (yield* this.pushSpaces(true));\n this.indentNext = this.indentValue + 1;\n this.indentValue += n;\n return yield* this.parseBlockStart();\n }\n return 'doc';\n }\n *parseDocument() {\n yield* this.pushSpaces(true);\n const line = this.getLine();\n if (line === null)\n return this.setNext('doc');\n let n = yield* this.pushIndicators();\n switch (line[n]) {\n case '#':\n yield* this.pushCount(line.length - n);\n // fallthrough\n case undefined:\n yield* this.pushNewline();\n return yield* this.parseLineStart();\n case '{':\n case '[':\n yield* this.pushCount(1);\n this.flowKey = false;\n this.flowLevel = 1;\n return 'flow';\n case '}':\n case ']':\n // this is an error\n yield* this.pushCount(1);\n return 'doc';\n case '*':\n yield* this.pushUntil(isNotAnchorChar);\n return 'doc';\n case '\"':\n case \"'\":\n return yield* this.parseQuotedScalar();\n case '|':\n case '>':\n n += yield* this.parseBlockScalarHeader();\n n += yield* this.pushSpaces(true);\n yield* this.pushCount(line.length - n);\n yield* this.pushNewline();\n return yield* this.parseBlockScalar();\n default:\n return yield* this.parsePlainScalar();\n }\n }\n *parseFlowCollection() {\n let nl, sp;\n let indent = -1;\n do {\n nl = yield* this.pushNewline();\n if (nl > 0) {\n sp = yield* this.pushSpaces(false);\n this.indentValue = indent = sp;\n }\n else {\n sp = 0;\n }\n sp += yield* this.pushSpaces(true);\n } while (nl + sp > 0);\n const line = this.getLine();\n if (line === null)\n return this.setNext('flow');\n if ((indent !== -1 && indent < this.indentNext && line[0] !== '#') ||\n (indent === 0 &&\n (line.startsWith('---') || line.startsWith('...')) &&\n isEmpty(line[3]))) {\n // Allowing for the terminal ] or } at the same (rather than greater)\n // indent level as the initial [ or { is technically invalid, but\n // failing here would be surprising to users.\n const atFlowEndMarker = indent === this.indentNext - 1 &&\n this.flowLevel === 1 &&\n (line[0] === ']' || line[0] === '}');\n if (!atFlowEndMarker) {\n // this is an error\n this.flowLevel = 0;\n yield cst.FLOW_END;\n return yield* this.parseLineStart();\n }\n }\n let n = 0;\n while (line[n] === ',') {\n n += yield* this.pushCount(1);\n n += yield* this.pushSpaces(true);\n this.flowKey = false;\n }\n n += yield* this.pushIndicators();\n switch (line[n]) {\n case undefined:\n return 'flow';\n case '#':\n yield* this.pushCount(line.length - n);\n return 'flow';\n case '{':\n case '[':\n yield* this.pushCount(1);\n this.flowKey = false;\n this.flowLevel += 1;\n return 'flow';\n case '}':\n case ']':\n yield* this.pushCount(1);\n this.flowKey = true;\n this.flowLevel -= 1;\n return this.flowLevel ? 'flow' : 'doc';\n case '*':\n yield* this.pushUntil(isNotAnchorChar);\n return 'flow';\n case '\"':\n case \"'\":\n this.flowKey = true;\n return yield* this.parseQuotedScalar();\n case ':': {\n const next = this.charAt(1);\n if (this.flowKey || isEmpty(next) || next === ',') {\n this.flowKey = false;\n yield* this.pushCount(1);\n yield* this.pushSpaces(true);\n return 'flow';\n }\n }\n // fallthrough\n default:\n this.flowKey = false;\n return yield* this.parsePlainScalar();\n }\n }\n *parseQuotedScalar() {\n const quote = this.charAt(0);\n let end = this.buffer.indexOf(quote, this.pos + 1);\n if (quote === \"'\") {\n while (end !== -1 && this.buffer[end + 1] === \"'\")\n end = this.buffer.indexOf(\"'\", end + 2);\n }\n else {\n // double-quote\n while (end !== -1) {\n let n = 0;\n while (this.buffer[end - 1 - n] === '\\\\')\n n += 1;\n if (n % 2 === 0)\n break;\n end = this.buffer.indexOf('\"', end + 1);\n }\n }\n // Only looking for newlines within the quotes\n const qb = this.buffer.substring(0, end);\n let nl = qb.indexOf('\\n', this.pos);\n if (nl !== -1) {\n while (nl !== -1) {\n const cs = this.continueScalar(nl + 1);\n if (cs === -1)\n break;\n nl = qb.indexOf('\\n', cs);\n }\n if (nl !== -1) {\n // this is an error caused by an unexpected unindent\n end = nl - (qb[nl - 1] === '\\r' ? 2 : 1);\n }\n }\n if (end === -1) {\n if (!this.atEnd)\n return this.setNext('quoted-scalar');\n end = this.buffer.length;\n }\n yield* this.pushToIndex(end + 1, false);\n return this.flowLevel ? 'flow' : 'doc';\n }\n *parseBlockScalarHeader() {\n this.blockScalarIndent = -1;\n this.blockScalarKeep = false;\n let i = this.pos;\n while (true) {\n const ch = this.buffer[++i];\n if (ch === '+')\n this.blockScalarKeep = true;\n else if (ch > '0' && ch <= '9')\n this.blockScalarIndent = Number(ch) - 1;\n else if (ch !== '-')\n break;\n }\n return yield* this.pushUntil(ch => isEmpty(ch) || ch === '#');\n }\n *parseBlockScalar() {\n let nl = this.pos - 1; // may be -1 if this.pos === 0\n let indent = 0;\n let ch;\n loop: for (let i = this.pos; (ch = this.buffer[i]); ++i) {\n switch (ch) {\n case ' ':\n indent += 1;\n break;\n case '\\n':\n nl = i;\n indent = 0;\n break;\n case '\\r': {\n const next = this.buffer[i + 1];\n if (!next && !this.atEnd)\n return this.setNext('block-scalar');\n if (next === '\\n')\n break;\n } // fallthrough\n default:\n break loop;\n }\n }\n if (!ch && !this.atEnd)\n return this.setNext('block-scalar');\n if (indent >= this.indentNext) {\n if (this.blockScalarIndent === -1)\n this.indentNext = indent;\n else {\n this.indentNext =\n this.blockScalarIndent + (this.indentNext === 0 ? 1 : this.indentNext);\n }\n do {\n const cs = this.continueScalar(nl + 1);\n if (cs === -1)\n break;\n nl = this.buffer.indexOf('\\n', cs);\n } while (nl !== -1);\n if (nl === -1) {\n if (!this.atEnd)\n return this.setNext('block-scalar');\n nl = this.buffer.length;\n }\n }\n // Trailing insufficiently indented tabs are invalid.\n // To catch that during parsing, we include them in the block scalar value.\n let i = nl + 1;\n ch = this.buffer[i];\n while (ch === ' ')\n ch = this.buffer[++i];\n if (ch === '\\t') {\n while (ch === '\\t' || ch === ' ' || ch === '\\r' || ch === '\\n')\n ch = this.buffer[++i];\n nl = i - 1;\n }\n else if (!this.blockScalarKeep) {\n do {\n let i = nl - 1;\n let ch = this.buffer[i];\n if (ch === '\\r')\n ch = this.buffer[--i];\n const lastChar = i; // Drop the line if last char not more indented\n while (ch === ' ')\n ch = this.buffer[--i];\n if (ch === '\\n' && i >= this.pos && i + 1 + indent > lastChar)\n nl = i;\n else\n break;\n } while (true);\n }\n yield cst.SCALAR;\n yield* this.pushToIndex(nl + 1, true);\n return yield* this.parseLineStart();\n }\n *parsePlainScalar() {\n const inFlow = this.flowLevel > 0;\n let end = this.pos - 1;\n let i = this.pos - 1;\n let ch;\n while ((ch = this.buffer[++i])) {\n if (ch === ':') {\n const next = this.buffer[i + 1];\n if (isEmpty(next) || (inFlow && flowIndicatorChars.has(next)))\n break;\n end = i;\n }\n else if (isEmpty(ch)) {\n let next = this.buffer[i + 1];\n if (ch === '\\r') {\n if (next === '\\n') {\n i += 1;\n ch = '\\n';\n next = this.buffer[i + 1];\n }\n else\n end = i;\n }\n if (next === '#' || (inFlow && flowIndicatorChars.has(next)))\n break;\n if (ch === '\\n') {\n const cs = this.continueScalar(i + 1);\n if (cs === -1)\n break;\n i = Math.max(i, cs - 2); // to advance, but still account for ' #'\n }\n }\n else {\n if (inFlow && flowIndicatorChars.has(ch))\n break;\n end = i;\n }\n }\n if (!ch && !this.atEnd)\n return this.setNext('plain-scalar');\n yield cst.SCALAR;\n yield* this.pushToIndex(end + 1, true);\n return inFlow ? 'flow' : 'doc';\n }\n *pushCount(n) {\n if (n > 0) {\n yield this.buffer.substr(this.pos, n);\n this.pos += n;\n return n;\n }\n return 0;\n }\n *pushToIndex(i, allowEmpty) {\n const s = this.buffer.slice(this.pos, i);\n if (s) {\n yield s;\n this.pos += s.length;\n return s.length;\n }\n else if (allowEmpty)\n yield '';\n return 0;\n }\n *pushIndicators() {\n switch (this.charAt(0)) {\n case '!':\n return ((yield* this.pushTag()) +\n (yield* this.pushSpaces(true)) +\n (yield* this.pushIndicators()));\n case '&':\n return ((yield* this.pushUntil(isNotAnchorChar)) +\n (yield* this.pushSpaces(true)) +\n (yield* this.pushIndicators()));\n case '-': // this is an error\n case '?': // this is an error outside flow collections\n case ':': {\n const inFlow = this.flowLevel > 0;\n const ch1 = this.charAt(1);\n if (isEmpty(ch1) || (inFlow && flowIndicatorChars.has(ch1))) {\n if (!inFlow)\n this.indentNext = this.indentValue + 1;\n else if (this.flowKey)\n this.flowKey = false;\n return ((yield* this.pushCount(1)) +\n (yield* this.pushSpaces(true)) +\n (yield* this.pushIndicators()));\n }\n }\n }\n return 0;\n }\n *pushTag() {\n if (this.charAt(1) === '<') {\n let i = this.pos + 2;\n let ch = this.buffer[i];\n while (!isEmpty(ch) && ch !== '>')\n ch = this.buffer[++i];\n return yield* this.pushToIndex(ch === '>' ? i + 1 : i, false);\n }\n else {\n let i = this.pos + 1;\n let ch = this.buffer[i];\n while (ch) {\n if (tagChars.has(ch))\n ch = this.buffer[++i];\n else if (ch === '%' &&\n hexDigits.has(this.buffer[i + 1]) &&\n hexDigits.has(this.buffer[i + 2])) {\n ch = this.buffer[(i += 3)];\n }\n else\n break;\n }\n return yield* this.pushToIndex(i, false);\n }\n }\n *pushNewline() {\n const ch = this.buffer[this.pos];\n if (ch === '\\n')\n return yield* this.pushCount(1);\n else if (ch === '\\r' && this.charAt(1) === '\\n')\n return yield* this.pushCount(2);\n else\n return 0;\n }\n *pushSpaces(allowTabs) {\n let i = this.pos - 1;\n let ch;\n do {\n ch = this.buffer[++i];\n } while (ch === ' ' || (allowTabs && ch === '\\t'));\n const n = i - this.pos;\n if (n > 0) {\n yield this.buffer.substr(this.pos, n);\n this.pos = i;\n }\n return n;\n }\n *pushUntil(test) {\n let i = this.pos;\n let ch = this.buffer[i];\n while (!test(ch))\n ch = this.buffer[++i];\n return yield* this.pushToIndex(i, false);\n }\n}\n\nexports.Lexer = Lexer;\n", "'use strict';\n\n/**\n * Tracks newlines during parsing in order to provide an efficient API for\n * determining the one-indexed `{ line, col }` position for any offset\n * within the input.\n */\nclass LineCounter {\n constructor() {\n this.lineStarts = [];\n /**\n * Should be called in ascending order. Otherwise, call\n * `lineCounter.lineStarts.sort()` before calling `linePos()`.\n */\n this.addNewLine = (offset) => this.lineStarts.push(offset);\n /**\n * Performs a binary search and returns the 1-indexed { line, col }\n * position of `offset`. If `line === 0`, `addNewLine` has never been\n * called or `offset` is before the first known newline.\n */\n this.linePos = (offset) => {\n let low = 0;\n let high = this.lineStarts.length;\n while (low < high) {\n const mid = (low + high) >> 1; // Math.floor((low + high) / 2)\n if (this.lineStarts[mid] < offset)\n low = mid + 1;\n else\n high = mid;\n }\n if (this.lineStarts[low] === offset)\n return { line: low + 1, col: 1 };\n if (low === 0)\n return { line: 0, col: offset };\n const start = this.lineStarts[low - 1];\n return { line: low, col: offset - start + 1 };\n };\n }\n}\n\nexports.LineCounter = LineCounter;\n", "'use strict';\n\nvar node_process = require('node:process');\nvar cst = require('./cst.js');\nvar lexer = require('./lexer.js');\n\nfunction includesToken(list, type) {\n for (let i = 0; i < list.length; ++i)\n if (list[i].type === type)\n return true;\n return false;\n}\nfunction findNonEmptyIndex(list) {\n for (let i = 0; i < list.length; ++i) {\n switch (list[i].type) {\n case 'space':\n case 'comment':\n case 'newline':\n break;\n default:\n return i;\n }\n }\n return -1;\n}\nfunction isFlowToken(token) {\n switch (token?.type) {\n case 'alias':\n case 'scalar':\n case 'single-quoted-scalar':\n case 'double-quoted-scalar':\n case 'flow-collection':\n return true;\n default:\n return false;\n }\n}\nfunction getPrevProps(parent) {\n switch (parent.type) {\n case 'document':\n return parent.start;\n case 'block-map': {\n const it = parent.items[parent.items.length - 1];\n return it.sep ?? it.start;\n }\n case 'block-seq':\n return parent.items[parent.items.length - 1].start;\n /* istanbul ignore next should not happen */\n default:\n return [];\n }\n}\n/** Note: May modify input array */\nfunction getFirstKeyStartProps(prev) {\n if (prev.length === 0)\n return [];\n let i = prev.length;\n loop: while (--i >= 0) {\n switch (prev[i].type) {\n case 'doc-start':\n case 'explicit-key-ind':\n case 'map-value-ind':\n case 'seq-item-ind':\n case 'newline':\n break loop;\n }\n }\n while (prev[++i]?.type === 'space') {\n /* loop */\n }\n return prev.splice(i, prev.length);\n}\nfunction fixFlowSeqItems(fc) {\n if (fc.start.type === 'flow-seq-start') {\n for (const it of fc.items) {\n if (it.sep &&\n !it.value &&\n !includesToken(it.start, 'explicit-key-ind') &&\n !includesToken(it.sep, 'map-value-ind')) {\n if (it.key)\n it.value = it.key;\n delete it.key;\n if (isFlowToken(it.value)) {\n if (it.value.end)\n Array.prototype.push.apply(it.value.end, it.sep);\n else\n it.value.end = it.sep;\n }\n else\n Array.prototype.push.apply(it.start, it.sep);\n delete it.sep;\n }\n }\n }\n}\n/**\n * A YAML concrete syntax tree (CST) parser\n *\n * ```ts\n * const src: string = ...\n * for (const token of new Parser().parse(src)) {\n * // token: Token\n * }\n * ```\n *\n * To use the parser with a user-provided lexer:\n *\n * ```ts\n * function* parse(source: string, lexer: Lexer) {\n * const parser = new Parser()\n * for (const lexeme of lexer.lex(source))\n * yield* parser.next(lexeme)\n * yield* parser.end()\n * }\n *\n * const src: string = ...\n * const lexer = new Lexer()\n * for (const token of parse(src, lexer)) {\n * // token: Token\n * }\n * ```\n */\nclass Parser {\n /**\n * @param onNewLine - If defined, called separately with the start position of\n * each new line (in `parse()`, including the start of input).\n */\n constructor(onNewLine) {\n /** If true, space and sequence indicators count as indentation */\n this.atNewLine = true;\n /** If true, next token is a scalar value */\n this.atScalar = false;\n /** Current indentation level */\n this.indent = 0;\n /** Current offset since the start of parsing */\n this.offset = 0;\n /** On the same line with a block map key */\n this.onKeyLine = false;\n /** Top indicates the node that's currently being built */\n this.stack = [];\n /** The source of the current token, set in parse() */\n this.source = '';\n /** The type of the current token, set in parse() */\n this.type = '';\n // Must be defined after `next()`\n this.lexer = new lexer.Lexer();\n this.onNewLine = onNewLine;\n }\n /**\n * Parse `source` as a YAML stream.\n * If `incomplete`, a part of the last line may be left as a buffer for the next call.\n *\n * Errors are not thrown, but yielded as `{ type: 'error', message }` tokens.\n *\n * @returns A generator of tokens representing each directive, document, and other structure.\n */\n *parse(source, incomplete = false) {\n if (this.onNewLine && this.offset === 0)\n this.onNewLine(0);\n for (const lexeme of this.lexer.lex(source, incomplete))\n yield* this.next(lexeme);\n if (!incomplete)\n yield* this.end();\n }\n /**\n * Advance the parser by the `source` of one lexical token.\n */\n *next(source) {\n this.source = source;\n if (node_process.env.LOG_TOKENS)\n console.log('|', cst.prettyToken(source));\n if (this.atScalar) {\n this.atScalar = false;\n yield* this.step();\n this.offset += source.length;\n return;\n }\n const type = cst.tokenType(source);\n if (!type) {\n const message = `Not a YAML token: ${source}`;\n yield* this.pop({ type: 'error', offset: this.offset, message, source });\n this.offset += source.length;\n }\n else if (type === 'scalar') {\n this.atNewLine = false;\n this.atScalar = true;\n this.type = 'scalar';\n }\n else {\n this.type = type;\n yield* this.step();\n switch (type) {\n case 'newline':\n this.atNewLine = true;\n this.indent = 0;\n if (this.onNewLine)\n this.onNewLine(this.offset + source.length);\n break;\n case 'space':\n if (this.atNewLine && source[0] === ' ')\n this.indent += source.length;\n break;\n case 'explicit-key-ind':\n case 'map-value-ind':\n case 'seq-item-ind':\n if (this.atNewLine)\n this.indent += source.length;\n break;\n case 'doc-mode':\n case 'flow-error-end':\n return;\n default:\n this.atNewLine = false;\n }\n this.offset += source.length;\n }\n }\n /** Call at end of input to push out any remaining constructions */\n *end() {\n while (this.stack.length > 0)\n yield* this.pop();\n }\n get sourceToken() {\n const st = {\n type: this.type,\n offset: this.offset,\n indent: this.indent,\n source: this.source\n };\n return st;\n }\n *step() {\n const top = this.peek(1);\n if (this.type === 'doc-end' && (!top || top.type !== 'doc-end')) {\n while (this.stack.length > 0)\n yield* this.pop();\n this.stack.push({\n type: 'doc-end',\n offset: this.offset,\n source: this.source\n });\n return;\n }\n if (!top)\n return yield* this.stream();\n switch (top.type) {\n case 'document':\n return yield* this.document(top);\n case 'alias':\n case 'scalar':\n case 'single-quoted-scalar':\n case 'double-quoted-scalar':\n return yield* this.scalar(top);\n case 'block-scalar':\n return yield* this.blockScalar(top);\n case 'block-map':\n return yield* this.blockMap(top);\n case 'block-seq':\n return yield* this.blockSequence(top);\n case 'flow-collection':\n return yield* this.flowCollection(top);\n case 'doc-end':\n return yield* this.documentEnd(top);\n }\n /* istanbul ignore next should not happen */\n yield* this.pop();\n }\n peek(n) {\n return this.stack[this.stack.length - n];\n }\n *pop(error) {\n const token = error ?? this.stack.pop();\n /* istanbul ignore if should not happen */\n if (!token) {\n const message = 'Tried to pop an empty stack';\n yield { type: 'error', offset: this.offset, source: '', message };\n }\n else if (this.stack.length === 0) {\n yield token;\n }\n else {\n const top = this.peek(1);\n if (token.type === 'block-scalar') {\n // Block scalars use their parent rather than header indent\n token.indent = 'indent' in top ? top.indent : 0;\n }\n else if (token.type === 'flow-collection' && top.type === 'document') {\n // Ignore all indent for top-level flow collections\n token.indent = 0;\n }\n if (token.type === 'flow-collection')\n fixFlowSeqItems(token);\n switch (top.type) {\n case 'document':\n top.value = token;\n break;\n case 'block-scalar':\n top.props.push(token); // error\n break;\n case 'block-map': {\n const it = top.items[top.items.length - 1];\n if (it.value) {\n top.items.push({ start: [], key: token, sep: [] });\n this.onKeyLine = true;\n return;\n }\n else if (it.sep) {\n it.value = token;\n }\n else {\n Object.assign(it, { key: token, sep: [] });\n this.onKeyLine = !it.explicitKey;\n return;\n }\n break;\n }\n case 'block-seq': {\n const it = top.items[top.items.length - 1];\n if (it.value)\n top.items.push({ start: [], value: token });\n else\n it.value = token;\n break;\n }\n case 'flow-collection': {\n const it = top.items[top.items.length - 1];\n if (!it || it.value)\n top.items.push({ start: [], key: token, sep: [] });\n else if (it.sep)\n it.value = token;\n else\n Object.assign(it, { key: token, sep: [] });\n return;\n }\n /* istanbul ignore next should not happen */\n default:\n yield* this.pop();\n yield* this.pop(token);\n }\n if ((top.type === 'document' ||\n top.type === 'block-map' ||\n top.type === 'block-seq') &&\n (token.type === 'block-map' || token.type === 'block-seq')) {\n const last = token.items[token.items.length - 1];\n if (last &&\n !last.sep &&\n !last.value &&\n last.start.length > 0 &&\n findNonEmptyIndex(last.start) === -1 &&\n (token.indent === 0 ||\n last.start.every(st => st.type !== 'comment' || st.indent < token.indent))) {\n if (top.type === 'document')\n top.end = last.start;\n else\n top.items.push({ start: last.start });\n token.items.splice(-1, 1);\n }\n }\n }\n }\n *stream() {\n switch (this.type) {\n case 'directive-line':\n yield { type: 'directive', offset: this.offset, source: this.source };\n return;\n case 'byte-order-mark':\n case 'space':\n case 'comment':\n case 'newline':\n yield this.sourceToken;\n return;\n case 'doc-mode':\n case 'doc-start': {\n const doc = {\n type: 'document',\n offset: this.offset,\n start: []\n };\n if (this.type === 'doc-start')\n doc.start.push(this.sourceToken);\n this.stack.push(doc);\n return;\n }\n }\n yield {\n type: 'error',\n offset: this.offset,\n message: `Unexpected ${this.type} token in YAML stream`,\n source: this.source\n };\n }\n *document(doc) {\n if (doc.value)\n return yield* this.lineEnd(doc);\n switch (this.type) {\n case 'doc-start': {\n if (findNonEmptyIndex(doc.start) !== -1) {\n yield* this.pop();\n yield* this.step();\n }\n else\n doc.start.push(this.sourceToken);\n return;\n }\n case 'anchor':\n case 'tag':\n case 'space':\n case 'comment':\n case 'newline':\n doc.start.push(this.sourceToken);\n return;\n }\n const bv = this.startBlockValue(doc);\n if (bv)\n this.stack.push(bv);\n else {\n yield {\n type: 'error',\n offset: this.offset,\n message: `Unexpected ${this.type} token in YAML document`,\n source: this.source\n };\n }\n }\n *scalar(scalar) {\n if (this.type === 'map-value-ind') {\n const prev = getPrevProps(this.peek(2));\n const start = getFirstKeyStartProps(prev);\n let sep;\n if (scalar.end) {\n sep = scalar.end;\n sep.push(this.sourceToken);\n delete scalar.end;\n }\n else\n sep = [this.sourceToken];\n const map = {\n type: 'block-map',\n offset: scalar.offset,\n indent: scalar.indent,\n items: [{ start, key: scalar, sep }]\n };\n this.onKeyLine = true;\n this.stack[this.stack.length - 1] = map;\n }\n else\n yield* this.lineEnd(scalar);\n }\n *blockScalar(scalar) {\n switch (this.type) {\n case 'space':\n case 'comment':\n case 'newline':\n scalar.props.push(this.sourceToken);\n return;\n case 'scalar':\n scalar.source = this.source;\n // block-scalar source includes trailing newline\n this.atNewLine = true;\n this.indent = 0;\n if (this.onNewLine) {\n let nl = this.source.indexOf('\\n') + 1;\n while (nl !== 0) {\n this.onNewLine(this.offset + nl);\n nl = this.source.indexOf('\\n', nl) + 1;\n }\n }\n yield* this.pop();\n break;\n /* istanbul ignore next should not happen */\n default:\n yield* this.pop();\n yield* this.step();\n }\n }\n *blockMap(map) {\n const it = map.items[map.items.length - 1];\n // it.sep is true-ish if pair already has key or : separator\n switch (this.type) {\n case 'newline':\n this.onKeyLine = false;\n if (it.value) {\n const end = 'end' in it.value ? it.value.end : undefined;\n const last = Array.isArray(end) ? end[end.length - 1] : undefined;\n if (last?.type === 'comment')\n end?.push(this.sourceToken);\n else\n map.items.push({ start: [this.sourceToken] });\n }\n else if (it.sep) {\n it.sep.push(this.sourceToken);\n }\n else {\n it.start.push(this.sourceToken);\n }\n return;\n case 'space':\n case 'comment':\n if (it.value) {\n map.items.push({ start: [this.sourceToken] });\n }\n else if (it.sep) {\n it.sep.push(this.sourceToken);\n }\n else {\n if (this.atIndentedComment(it.start, map.indent)) {\n const prev = map.items[map.items.length - 2];\n const end = prev?.value?.end;\n if (Array.isArray(end)) {\n Array.prototype.push.apply(end, it.start);\n end.push(this.sourceToken);\n map.items.pop();\n return;\n }\n }\n it.start.push(this.sourceToken);\n }\n return;\n }\n if (this.indent >= map.indent) {\n const atMapIndent = !this.onKeyLine && this.indent === map.indent;\n const atNextItem = atMapIndent &&\n (it.sep || it.explicitKey) &&\n this.type !== 'seq-item-ind';\n // For empty nodes, assign newline-separated not indented empty tokens to following node\n let start = [];\n if (atNextItem && it.sep && !it.value) {\n const nl = [];\n for (let i = 0; i < it.sep.length; ++i) {\n const st = it.sep[i];\n switch (st.type) {\n case 'newline':\n nl.push(i);\n break;\n case 'space':\n break;\n case 'comment':\n if (st.indent > map.indent)\n nl.length = 0;\n break;\n default:\n nl.length = 0;\n }\n }\n if (nl.length >= 2)\n start = it.sep.splice(nl[1]);\n }\n switch (this.type) {\n case 'anchor':\n case 'tag':\n if (atNextItem || it.value) {\n start.push(this.sourceToken);\n map.items.push({ start });\n this.onKeyLine = true;\n }\n else if (it.sep) {\n it.sep.push(this.sourceToken);\n }\n else {\n it.start.push(this.sourceToken);\n }\n return;\n case 'explicit-key-ind':\n if (!it.sep && !it.explicitKey) {\n it.start.push(this.sourceToken);\n it.explicitKey = true;\n }\n else if (atNextItem || it.value) {\n start.push(this.sourceToken);\n map.items.push({ start, explicitKey: true });\n }\n else {\n this.stack.push({\n type: 'block-map',\n offset: this.offset,\n indent: this.indent,\n items: [{ start: [this.sourceToken], explicitKey: true }]\n });\n }\n this.onKeyLine = true;\n return;\n case 'map-value-ind':\n if (it.explicitKey) {\n if (!it.sep) {\n if (includesToken(it.start, 'newline')) {\n Object.assign(it, { key: null, sep: [this.sourceToken] });\n }\n else {\n const start = getFirstKeyStartProps(it.start);\n this.stack.push({\n type: 'block-map',\n offset: this.offset,\n indent: this.indent,\n items: [{ start, key: null, sep: [this.sourceToken] }]\n });\n }\n }\n else if (it.value) {\n map.items.push({ start: [], key: null, sep: [this.sourceToken] });\n }\n else if (includesToken(it.sep, 'map-value-ind')) {\n this.stack.push({\n type: 'block-map',\n offset: this.offset,\n indent: this.indent,\n items: [{ start, key: null, sep: [this.sourceToken] }]\n });\n }\n else if (isFlowToken(it.key) &&\n !includesToken(it.sep, 'newline')) {\n const start = getFirstKeyStartProps(it.start);\n const key = it.key;\n const sep = it.sep;\n sep.push(this.sourceToken);\n // @ts-expect-error type guard is wrong here\n delete it.key;\n // @ts-expect-error type guard is wrong here\n delete it.sep;\n this.stack.push({\n type: 'block-map',\n offset: this.offset,\n indent: this.indent,\n items: [{ start, key, sep }]\n });\n }\n else if (start.length > 0) {\n // Not actually at next item\n it.sep = it.sep.concat(start, this.sourceToken);\n }\n else {\n it.sep.push(this.sourceToken);\n }\n }\n else {\n if (!it.sep) {\n Object.assign(it, { key: null, sep: [this.sourceToken] });\n }\n else if (it.value || atNextItem) {\n map.items.push({ start, key: null, sep: [this.sourceToken] });\n }\n else if (includesToken(it.sep, 'map-value-ind')) {\n this.stack.push({\n type: 'block-map',\n offset: this.offset,\n indent: this.indent,\n items: [{ start: [], key: null, sep: [this.sourceToken] }]\n });\n }\n else {\n it.sep.push(this.sourceToken);\n }\n }\n this.onKeyLine = true;\n return;\n case 'alias':\n case 'scalar':\n case 'single-quoted-scalar':\n case 'double-quoted-scalar': {\n const fs = this.flowScalar(this.type);\n if (atNextItem || it.value) {\n map.items.push({ start, key: fs, sep: [] });\n this.onKeyLine = true;\n }\n else if (it.sep) {\n this.stack.push(fs);\n }\n else {\n Object.assign(it, { key: fs, sep: [] });\n this.onKeyLine = true;\n }\n return;\n }\n default: {\n const bv = this.startBlockValue(map);\n if (bv) {\n if (bv.type === 'block-seq') {\n if (!it.explicitKey &&\n it.sep &&\n !includesToken(it.sep, 'newline')) {\n yield* this.pop({\n type: 'error',\n offset: this.offset,\n message: 'Unexpected block-seq-ind on same line with key',\n source: this.source\n });\n return;\n }\n }\n else if (atMapIndent) {\n map.items.push({ start });\n }\n this.stack.push(bv);\n return;\n }\n }\n }\n }\n yield* this.pop();\n yield* this.step();\n }\n *blockSequence(seq) {\n const it = seq.items[seq.items.length - 1];\n switch (this.type) {\n case 'newline':\n if (it.value) {\n const end = 'end' in it.value ? it.value.end : undefined;\n const last = Array.isArray(end) ? end[end.length - 1] : undefined;\n if (last?.type === 'comment')\n end?.push(this.sourceToken);\n else\n seq.items.push({ start: [this.sourceToken] });\n }\n else\n it.start.push(this.sourceToken);\n return;\n case 'space':\n case 'comment':\n if (it.value)\n seq.items.push({ start: [this.sourceToken] });\n else {\n if (this.atIndentedComment(it.start, seq.indent)) {\n const prev = seq.items[seq.items.length - 2];\n const end = prev?.value?.end;\n if (Array.isArray(end)) {\n Array.prototype.push.apply(end, it.start);\n end.push(this.sourceToken);\n seq.items.pop();\n return;\n }\n }\n it.start.push(this.sourceToken);\n }\n return;\n case 'anchor':\n case 'tag':\n if (it.value || this.indent <= seq.indent)\n break;\n it.start.push(this.sourceToken);\n return;\n case 'seq-item-ind':\n if (this.indent !== seq.indent)\n break;\n if (it.value || includesToken(it.start, 'seq-item-ind'))\n seq.items.push({ start: [this.sourceToken] });\n else\n it.start.push(this.sourceToken);\n return;\n }\n if (this.indent > seq.indent) {\n const bv = this.startBlockValue(seq);\n if (bv) {\n this.stack.push(bv);\n return;\n }\n }\n yield* this.pop();\n yield* this.step();\n }\n *flowCollection(fc) {\n const it = fc.items[fc.items.length - 1];\n if (this.type === 'flow-error-end') {\n let top;\n do {\n yield* this.pop();\n top = this.peek(1);\n } while (top && top.type === 'flow-collection');\n }\n else if (fc.end.length === 0) {\n switch (this.type) {\n case 'comma':\n case 'explicit-key-ind':\n if (!it || it.sep)\n fc.items.push({ start: [this.sourceToken] });\n else\n it.start.push(this.sourceToken);\n return;\n case 'map-value-ind':\n if (!it || it.value)\n fc.items.push({ start: [], key: null, sep: [this.sourceToken] });\n else if (it.sep)\n it.sep.push(this.sourceToken);\n else\n Object.assign(it, { key: null, sep: [this.sourceToken] });\n return;\n case 'space':\n case 'comment':\n case 'newline':\n case 'anchor':\n case 'tag':\n if (!it || it.value)\n fc.items.push({ start: [this.sourceToken] });\n else if (it.sep)\n it.sep.push(this.sourceToken);\n else\n it.start.push(this.sourceToken);\n return;\n case 'alias':\n case 'scalar':\n case 'single-quoted-scalar':\n case 'double-quoted-scalar': {\n const fs = this.flowScalar(this.type);\n if (!it || it.value)\n fc.items.push({ start: [], key: fs, sep: [] });\n else if (it.sep)\n this.stack.push(fs);\n else\n Object.assign(it, { key: fs, sep: [] });\n return;\n }\n case 'flow-map-end':\n case 'flow-seq-end':\n fc.end.push(this.sourceToken);\n return;\n }\n const bv = this.startBlockValue(fc);\n /* istanbul ignore else should not happen */\n if (bv)\n this.stack.push(bv);\n else {\n yield* this.pop();\n yield* this.step();\n }\n }\n else {\n const parent = this.peek(2);\n if (parent.type === 'block-map' &&\n ((this.type === 'map-value-ind' && parent.indent === fc.indent) ||\n (this.type === 'newline' &&\n !parent.items[parent.items.length - 1].sep))) {\n yield* this.pop();\n yield* this.step();\n }\n else if (this.type === 'map-value-ind' &&\n parent.type !== 'flow-collection') {\n const prev = getPrevProps(parent);\n const start = getFirstKeyStartProps(prev);\n fixFlowSeqItems(fc);\n const sep = fc.end.splice(1, fc.end.length);\n sep.push(this.sourceToken);\n const map = {\n type: 'block-map',\n offset: fc.offset,\n indent: fc.indent,\n items: [{ start, key: fc, sep }]\n };\n this.onKeyLine = true;\n this.stack[this.stack.length - 1] = map;\n }\n else {\n yield* this.lineEnd(fc);\n }\n }\n }\n flowScalar(type) {\n if (this.onNewLine) {\n let nl = this.source.indexOf('\\n') + 1;\n while (nl !== 0) {\n this.onNewLine(this.offset + nl);\n nl = this.source.indexOf('\\n', nl) + 1;\n }\n }\n return {\n type,\n offset: this.offset,\n indent: this.indent,\n source: this.source\n };\n }\n startBlockValue(parent) {\n switch (this.type) {\n case 'alias':\n case 'scalar':\n case 'single-quoted-scalar':\n case 'double-quoted-scalar':\n return this.flowScalar(this.type);\n case 'block-scalar-header':\n return {\n type: 'block-scalar',\n offset: this.offset,\n indent: this.indent,\n props: [this.sourceToken],\n source: ''\n };\n case 'flow-map-start':\n case 'flow-seq-start':\n return {\n type: 'flow-collection',\n offset: this.offset,\n indent: this.indent,\n start: this.sourceToken,\n items: [],\n end: []\n };\n case 'seq-item-ind':\n return {\n type: 'block-seq',\n offset: this.offset,\n indent: this.indent,\n items: [{ start: [this.sourceToken] }]\n };\n case 'explicit-key-ind': {\n this.onKeyLine = true;\n const prev = getPrevProps(parent);\n const start = getFirstKeyStartProps(prev);\n start.push(this.sourceToken);\n return {\n type: 'block-map',\n offset: this.offset,\n indent: this.indent,\n items: [{ start, explicitKey: true }]\n };\n }\n case 'map-value-ind': {\n this.onKeyLine = true;\n const prev = getPrevProps(parent);\n const start = getFirstKeyStartProps(prev);\n return {\n type: 'block-map',\n offset: this.offset,\n indent: this.indent,\n items: [{ start, key: null, sep: [this.sourceToken] }]\n };\n }\n }\n return null;\n }\n atIndentedComment(start, indent) {\n if (this.type !== 'comment')\n return false;\n if (this.indent <= indent)\n return false;\n return start.every(st => st.type === 'newline' || st.type === 'space');\n }\n *documentEnd(docEnd) {\n if (this.type !== 'doc-mode') {\n if (docEnd.end)\n docEnd.end.push(this.sourceToken);\n else\n docEnd.end = [this.sourceToken];\n if (this.type === 'newline')\n yield* this.pop();\n }\n }\n *lineEnd(token) {\n switch (this.type) {\n case 'comma':\n case 'doc-start':\n case 'doc-end':\n case 'flow-seq-end':\n case 'flow-map-end':\n case 'map-value-ind':\n yield* this.pop();\n yield* this.step();\n break;\n case 'newline':\n this.onKeyLine = false;\n // fallthrough\n case 'space':\n case 'comment':\n default:\n // all other values are errors\n if (token.end)\n token.end.push(this.sourceToken);\n else\n token.end = [this.sourceToken];\n if (this.type === 'newline')\n yield* this.pop();\n }\n }\n}\n\nexports.Parser = Parser;\n", "'use strict';\n\nvar composer = require('./compose/composer.js');\nvar Document = require('./doc/Document.js');\nvar errors = require('./errors.js');\nvar log = require('./log.js');\nvar identity = require('./nodes/identity.js');\nvar lineCounter = require('./parse/line-counter.js');\nvar parser = require('./parse/parser.js');\n\nfunction parseOptions(options) {\n const prettyErrors = options.prettyErrors !== false;\n const lineCounter$1 = options.lineCounter || (prettyErrors && new lineCounter.LineCounter()) || null;\n return { lineCounter: lineCounter$1, prettyErrors };\n}\n/**\n * Parse the input as a stream of YAML documents.\n *\n * Documents should be separated from each other by `...` or `---` marker lines.\n *\n * @returns If an empty `docs` array is returned, it will be of type\n * EmptyStream and contain additional stream information. In\n * TypeScript, you should use `'empty' in docs` as a type guard for it.\n */\nfunction parseAllDocuments(source, options = {}) {\n const { lineCounter, prettyErrors } = parseOptions(options);\n const parser$1 = new parser.Parser(lineCounter?.addNewLine);\n const composer$1 = new composer.Composer(options);\n const docs = Array.from(composer$1.compose(parser$1.parse(source)));\n if (prettyErrors && lineCounter)\n for (const doc of docs) {\n doc.errors.forEach(errors.prettifyError(source, lineCounter));\n doc.warnings.forEach(errors.prettifyError(source, lineCounter));\n }\n if (docs.length > 0)\n return docs;\n return Object.assign([], { empty: true }, composer$1.streamInfo());\n}\n/** Parse an input string into a single YAML.Document */\nfunction parseDocument(source, options = {}) {\n const { lineCounter, prettyErrors } = parseOptions(options);\n const parser$1 = new parser.Parser(lineCounter?.addNewLine);\n const composer$1 = new composer.Composer(options);\n // `doc` is always set by compose.end(true) at the very latest\n let doc = null;\n for (const _doc of composer$1.compose(parser$1.parse(source), true, source.length)) {\n if (!doc)\n doc = _doc;\n else if (doc.options.logLevel !== 'silent') {\n doc.errors.push(new errors.YAMLParseError(_doc.range.slice(0, 2), 'MULTIPLE_DOCS', 'Source contains multiple documents; please use YAML.parseAllDocuments()'));\n break;\n }\n }\n if (prettyErrors && lineCounter) {\n doc.errors.forEach(errors.prettifyError(source, lineCounter));\n doc.warnings.forEach(errors.prettifyError(source, lineCounter));\n }\n return doc;\n}\nfunction parse(src, reviver, options) {\n let _reviver = undefined;\n if (typeof reviver === 'function') {\n _reviver = reviver;\n }\n else if (options === undefined && reviver && typeof reviver === 'object') {\n options = reviver;\n }\n const doc = parseDocument(src, options);\n if (!doc)\n return null;\n doc.warnings.forEach(warning => log.warn(doc.options.logLevel, warning));\n if (doc.errors.length > 0) {\n if (doc.options.logLevel !== 'silent')\n throw doc.errors[0];\n else\n doc.errors = [];\n }\n return doc.toJS(Object.assign({ reviver: _reviver }, options));\n}\nfunction stringify(value, replacer, options) {\n let _replacer = null;\n if (typeof replacer === 'function' || Array.isArray(replacer)) {\n _replacer = replacer;\n }\n else if (options === undefined && replacer) {\n options = replacer;\n }\n if (typeof options === 'string')\n options = options.length;\n if (typeof options === 'number') {\n const indent = Math.round(options);\n options = indent < 1 ? undefined : indent > 8 ? { indent: 8 } : { indent };\n }\n if (value === undefined) {\n const { keepUndefined } = options ?? replacer ?? {};\n if (!keepUndefined)\n return undefined;\n }\n if (identity.isDocument(value) && !_replacer)\n return value.toString(options);\n return new Document.Document(value, _replacer, options).toString(options);\n}\n\nexports.parse = parse;\nexports.parseAllDocuments = parseAllDocuments;\nexports.parseDocument = parseDocument;\nexports.stringify = stringify;\n", "'use strict';\n\nvar composer = require('./compose/composer.js');\nvar Document = require('./doc/Document.js');\nvar Schema = require('./schema/Schema.js');\nvar errors = require('./errors.js');\nvar Alias = require('./nodes/Alias.js');\nvar identity = require('./nodes/identity.js');\nvar Pair = require('./nodes/Pair.js');\nvar Scalar = require('./nodes/Scalar.js');\nvar YAMLMap = require('./nodes/YAMLMap.js');\nvar YAMLSeq = require('./nodes/YAMLSeq.js');\nvar cst = require('./parse/cst.js');\nvar lexer = require('./parse/lexer.js');\nvar lineCounter = require('./parse/line-counter.js');\nvar parser = require('./parse/parser.js');\nvar publicApi = require('./public-api.js');\nvar visit = require('./visit.js');\n\n\n\nexports.Composer = composer.Composer;\nexports.Document = Document.Document;\nexports.Schema = Schema.Schema;\nexports.YAMLError = errors.YAMLError;\nexports.YAMLParseError = errors.YAMLParseError;\nexports.YAMLWarning = errors.YAMLWarning;\nexports.Alias = Alias.Alias;\nexports.isAlias = identity.isAlias;\nexports.isCollection = identity.isCollection;\nexports.isDocument = identity.isDocument;\nexports.isMap = identity.isMap;\nexports.isNode = identity.isNode;\nexports.isPair = identity.isPair;\nexports.isScalar = identity.isScalar;\nexports.isSeq = identity.isSeq;\nexports.Pair = Pair.Pair;\nexports.Scalar = Scalar.Scalar;\nexports.YAMLMap = YAMLMap.YAMLMap;\nexports.YAMLSeq = YAMLSeq.YAMLSeq;\nexports.CST = cst;\nexports.Lexer = lexer.Lexer;\nexports.LineCounter = lineCounter.LineCounter;\nexports.Parser = parser.Parser;\nexports.parse = publicApi.parse;\nexports.parseAllDocuments = publicApi.parseAllDocuments;\nexports.parseDocument = publicApi.parseDocument;\nexports.stringify = publicApi.stringify;\nexports.visit = visit.visit;\nexports.visitAsync = visit.visitAsync;\n", "\"use strict\";\n\nvar conversions = {};\nmodule.exports = conversions;\n\nfunction sign(x) {\n return x < 0 ? -1 : 1;\n}\n\nfunction evenRound(x) {\n // Round x to the nearest integer, choosing the even integer if it lies halfway between two.\n if ((x % 1) === 0.5 && (x & 1) === 0) { // [even number].5; round down (i.e. floor)\n return Math.floor(x);\n } else {\n return Math.round(x);\n }\n}\n\nfunction createNumberConversion(bitLength, typeOpts) {\n if (!typeOpts.unsigned) {\n --bitLength;\n }\n const lowerBound = typeOpts.unsigned ? 0 : -Math.pow(2, bitLength);\n const upperBound = Math.pow(2, bitLength) - 1;\n\n const moduloVal = typeOpts.moduloBitLength ? Math.pow(2, typeOpts.moduloBitLength) : Math.pow(2, bitLength);\n const moduloBound = typeOpts.moduloBitLength ? Math.pow(2, typeOpts.moduloBitLength - 1) : Math.pow(2, bitLength - 1);\n\n return function(V, opts) {\n if (!opts) opts = {};\n\n let x = +V;\n\n if (opts.enforceRange) {\n if (!Number.isFinite(x)) {\n throw new TypeError(\"Argument is not a finite number\");\n }\n\n x = sign(x) * Math.floor(Math.abs(x));\n if (x < lowerBound || x > upperBound) {\n throw new TypeError(\"Argument is not in byte range\");\n }\n\n return x;\n }\n\n if (!isNaN(x) && opts.clamp) {\n x = evenRound(x);\n\n if (x < lowerBound) x = lowerBound;\n if (x > upperBound) x = upperBound;\n return x;\n }\n\n if (!Number.isFinite(x) || x === 0) {\n return 0;\n }\n\n x = sign(x) * Math.floor(Math.abs(x));\n x = x % moduloVal;\n\n if (!typeOpts.unsigned && x >= moduloBound) {\n return x - moduloVal;\n } else if (typeOpts.unsigned) {\n if (x < 0) {\n x += moduloVal;\n } else if (x === -0) { // don't return negative zero\n return 0;\n }\n }\n\n return x;\n }\n}\n\nconversions[\"void\"] = function () {\n return undefined;\n};\n\nconversions[\"boolean\"] = function (val) {\n return !!val;\n};\n\nconversions[\"byte\"] = createNumberConversion(8, { unsigned: false });\nconversions[\"octet\"] = createNumberConversion(8, { unsigned: true });\n\nconversions[\"short\"] = createNumberConversion(16, { unsigned: false });\nconversions[\"unsigned short\"] = createNumberConversion(16, { unsigned: true });\n\nconversions[\"long\"] = createNumberConversion(32, { unsigned: false });\nconversions[\"unsigned long\"] = createNumberConversion(32, { unsigned: true });\n\nconversions[\"long long\"] = createNumberConversion(32, { unsigned: false, moduloBitLength: 64 });\nconversions[\"unsigned long long\"] = createNumberConversion(32, { unsigned: true, moduloBitLength: 64 });\n\nconversions[\"double\"] = function (V) {\n const x = +V;\n\n if (!Number.isFinite(x)) {\n throw new TypeError(\"Argument is not a finite floating-point value\");\n }\n\n return x;\n};\n\nconversions[\"unrestricted double\"] = function (V) {\n const x = +V;\n\n if (isNaN(x)) {\n throw new TypeError(\"Argument is NaN\");\n }\n\n return x;\n};\n\n// not quite valid, but good enough for JS\nconversions[\"float\"] = conversions[\"double\"];\nconversions[\"unrestricted float\"] = conversions[\"unrestricted double\"];\n\nconversions[\"DOMString\"] = function (V, opts) {\n if (!opts) opts = {};\n\n if (opts.treatNullAsEmptyString && V === null) {\n return \"\";\n }\n\n return String(V);\n};\n\nconversions[\"ByteString\"] = function (V, opts) {\n const x = String(V);\n let c = undefined;\n for (let i = 0; (c = x.codePointAt(i)) !== undefined; ++i) {\n if (c > 255) {\n throw new TypeError(\"Argument is not a valid bytestring\");\n }\n }\n\n return x;\n};\n\nconversions[\"USVString\"] = function (V) {\n const S = String(V);\n const n = S.length;\n const U = [];\n for (let i = 0; i < n; ++i) {\n const c = S.charCodeAt(i);\n if (c < 0xD800 || c > 0xDFFF) {\n U.push(String.fromCodePoint(c));\n } else if (0xDC00 <= c && c <= 0xDFFF) {\n U.push(String.fromCodePoint(0xFFFD));\n } else {\n if (i === n - 1) {\n U.push(String.fromCodePoint(0xFFFD));\n } else {\n const d = S.charCodeAt(i + 1);\n if (0xDC00 <= d && d <= 0xDFFF) {\n const a = c & 0x3FF;\n const b = d & 0x3FF;\n U.push(String.fromCodePoint((2 << 15) + (2 << 9) * a + b));\n ++i;\n } else {\n U.push(String.fromCodePoint(0xFFFD));\n }\n }\n }\n }\n\n return U.join('');\n};\n\nconversions[\"Date\"] = function (V, opts) {\n if (!(V instanceof Date)) {\n throw new TypeError(\"Argument is not a Date object\");\n }\n if (isNaN(V)) {\n return undefined;\n }\n\n return V;\n};\n\nconversions[\"RegExp\"] = function (V, opts) {\n if (!(V instanceof RegExp)) {\n V = new RegExp(V);\n }\n\n return V;\n};\n", "\"use strict\";\n\nmodule.exports.mixin = function mixin(target, source) {\n const keys = Object.getOwnPropertyNames(source);\n for (let i = 0; i < keys.length; ++i) {\n Object.defineProperty(target, keys[i], Object.getOwnPropertyDescriptor(source, keys[i]));\n }\n};\n\nmodule.exports.wrapperSymbol = Symbol(\"wrapper\");\nmodule.exports.implSymbol = Symbol(\"impl\");\n\nmodule.exports.wrapperForImpl = function (impl) {\n return impl[module.exports.wrapperSymbol];\n};\n\nmodule.exports.implForWrapper = function (wrapper) {\n return wrapper[module.exports.implSymbol];\n};\n\n", "[[[0,44],\"disallowed_STD3_valid\"],[[45,46],\"valid\"],[[47,47],\"disallowed_STD3_valid\"],[[48,57],\"valid\"],[[58,64],\"disallowed_STD3_valid\"],[[65,65],\"mapped\",[97]],[[66,66],\"mapped\",[98]],[[67,67],\"mapped\",[99]],[[68,68],\"mapped\",[100]],[[69,69],\"mapped\",[101]],[[70,70],\"mapped\",[102]],[[71,71],\"mapped\",[103]],[[72,72],\"mapped\",[104]],[[73,73],\"mapped\",[105]],[[74,74],\"mapped\",[106]],[[75,75],\"mapped\",[107]],[[76,76],\"mapped\",[108]],[[77,77],\"mapped\",[109]],[[78,78],\"mapped\",[110]],[[79,79],\"mapped\",[111]],[[80,80],\"mapped\",[112]],[[81,81],\"mapped\",[113]],[[82,82],\"mapped\",[114]],[[83,83],\"mapped\",[115]],[[84,84],\"mapped\",[116]],[[85,85],\"mapped\",[117]],[[86,86],\"mapped\",[118]],[[87,87],\"mapped\",[119]],[[88,88],\"mapped\",[120]],[[89,89],\"mapped\",[121]],[[90,90],\"mapped\",[122]],[[91,96],\"disallowed_STD3_valid\"],[[97,122],\"valid\"],[[123,127],\"disallowed_STD3_valid\"],[[128,159],\"disallowed\"],[[160,160],\"disallowed_STD3_mapped\",[32]],[[161,167],\"valid\",[],\"NV8\"],[[168,168],\"disallowed_STD3_mapped\",[32,776]],[[169,169],\"valid\",[],\"NV8\"],[[170,170],\"mapped\",[97]],[[171,172],\"valid\",[],\"NV8\"],[[173,173],\"ignored\"],[[174,174],\"valid\",[],\"NV8\"],[[175,175],\"disallowed_STD3_mapped\",[32,772]],[[176,177],\"valid\",[],\"NV8\"],[[178,178],\"mapped\",[50]],[[179,179],\"mapped\",[51]],[[180,180],\"disallowed_STD3_mapped\",[32,769]],[[181,181],\"mapped\",[956]],[[182,182],\"valid\",[],\"NV8\"],[[183,183],\"valid\"],[[184,184],\"disallowed_STD3_mapped\",[32,807]],[[185,185],\"mapped\",[49]],[[186,186],\"mapped\",[111]],[[187,187],\"valid\",[],\"NV8\"],[[188,188],\"mapped\",[49,8260,52]],[[189,189],\"mapped\",[49,8260,50]],[[190,190],\"mapped\",[51,8260,52]],[[191,191],\"valid\",[],\"NV8\"],[[192,192],\"mapped\",[224]],[[193,193],\"mapped\",[225]],[[194,194],\"mapped\",[226]],[[195,195],\"mapped\",[227]],[[196,196],\"mapped\",[228]],[[197,197],\"mapped\",[229]],[[198,198],\"mapped\",[230]],[[199,199],\"mapped\",[231]],[[200,200],\"mapped\",[232]],[[201,201],\"mapped\",[233]],[[202,202],\"mapped\",[234]],[[203,203],\"mapped\",[235]],[[204,204],\"mapped\",[236]],[[205,205],\"mapped\",[237]],[[206,206],\"mapped\",[238]],[[207,207],\"mapped\",[239]],[[208,208],\"mapped\",[240]],[[209,209],\"mapped\",[241]],[[210,210],\"mapped\",[242]],[[211,211],\"mapped\",[243]],[[212,212],\"mapped\",[244]],[[213,213],\"mapped\",[245]],[[214,214],\"mapped\",[246]],[[215,215],\"valid\",[],\"NV8\"],[[216,216],\"mapped\",[248]],[[217,217],\"mapped\",[249]],[[218,218],\"mapped\",[250]],[[219,219],\"mapped\",[251]],[[220,220],\"mapped\",[252]],[[221,221],\"mapped\",[253]],[[222,222],\"mapped\",[254]],[[223,223],\"deviation\",[115,115]],[[224,246],\"valid\"],[[247,247],\"valid\",[],\"NV8\"],[[248,255],\"valid\"],[[256,256],\"mapped\",[257]],[[257,257],\"valid\"],[[258,258],\"mapped\",[259]],[[259,259],\"valid\"],[[260,260],\"mapped\",[261]],[[261,261],\"valid\"],[[262,262],\"mapped\",[263]],[[263,263],\"valid\"],[[264,264],\"mapped\",[265]],[[265,265],\"valid\"],[[266,266],\"mapped\",[267]],[[267,267],\"valid\"],[[268,268],\"mapped\",[269]],[[269,269],\"valid\"],[[270,270],\"mapped\",[271]],[[271,271],\"valid\"],[[272,272],\"mapped\",[273]],[[273,273],\"valid\"],[[274,274],\"mapped\",[275]],[[275,275],\"valid\"],[[276,276],\"mapped\",[277]],[[277,277],\"valid\"],[[278,278],\"mapped\",[279]],[[279,279],\"valid\"],[[280,280],\"mapped\",[281]],[[281,281],\"valid\"],[[282,282],\"mapped\",[283]],[[283,283],\"valid\"],[[284,284],\"mapped\",[285]],[[285,285],\"valid\"],[[286,286],\"mapped\",[287]],[[287,287],\"valid\"],[[288,288],\"mapped\",[289]],[[289,289],\"valid\"],[[290,290],\"mapped\",[291]],[[291,291],\"valid\"],[[292,292],\"mapped\",[293]],[[293,293],\"valid\"],[[294,294],\"mapped\",[295]],[[295,295],\"valid\"],[[296,296],\"mapped\",[297]],[[297,297],\"valid\"],[[298,298],\"mapped\",[299]],[[299,299],\"valid\"],[[300,300],\"mapped\",[301]],[[301,301],\"valid\"],[[302,302],\"mapped\",[303]],[[303,303],\"valid\"],[[304,304],\"mapped\",[105,775]],[[305,305],\"valid\"],[[306,307],\"mapped\",[105,106]],[[308,308],\"mapped\",[309]],[[309,309],\"valid\"],[[310,310],\"mapped\",[311]],[[311,312],\"valid\"],[[313,313],\"mapped\",[314]],[[314,314],\"valid\"],[[315,315],\"mapped\",[316]],[[316,316],\"valid\"],[[317,317],\"mapped\",[318]],[[318,318],\"valid\"],[[319,320],\"mapped\",[108,183]],[[321,321],\"mapped\",[322]],[[322,322],\"valid\"],[[323,323],\"mapped\",[324]],[[324,324],\"valid\"],[[325,325],\"mapped\",[326]],[[326,326],\"valid\"],[[327,327],\"mapped\",[328]],[[328,328],\"valid\"],[[329,329],\"mapped\",[700,110]],[[330,330],\"mapped\",[331]],[[331,331],\"valid\"],[[332,332],\"mapped\",[333]],[[333,333],\"valid\"],[[334,334],\"mapped\",[335]],[[335,335],\"valid\"],[[336,336],\"mapped\",[337]],[[337,337],\"valid\"],[[338,338],\"mapped\",[339]],[[339,339],\"valid\"],[[340,340],\"mapped\",[341]],[[341,341],\"valid\"],[[342,342],\"mapped\",[343]],[[343,343],\"valid\"],[[344,344],\"mapped\",[345]],[[345,345],\"valid\"],[[346,346],\"mapped\",[347]],[[347,347],\"valid\"],[[348,348],\"mapped\",[349]],[[349,349],\"valid\"],[[350,350],\"mapped\",[351]],[[351,351],\"valid\"],[[352,352],\"mapped\",[353]],[[353,353],\"valid\"],[[354,354],\"mapped\",[355]],[[355,355],\"valid\"],[[356,356],\"mapped\",[357]],[[357,357],\"valid\"],[[358,358],\"mapped\",[359]],[[359,359],\"valid\"],[[360,360],\"mapped\",[361]],[[361,361],\"valid\"],[[362,362],\"mapped\",[363]],[[363,363],\"valid\"],[[364,364],\"mapped\",[365]],[[365,365],\"valid\"],[[366,366],\"mapped\",[367]],[[367,367],\"valid\"],[[368,368],\"mapped\",[369]],[[369,369],\"valid\"],[[370,370],\"mapped\",[371]],[[371,371],\"valid\"],[[372,372],\"mapped\",[373]],[[373,373],\"valid\"],[[374,374],\"mapped\",[375]],[[375,375],\"valid\"],[[376,376],\"mapped\",[255]],[[377,377],\"mapped\",[378]],[[378,378],\"valid\"],[[379,379],\"mapped\",[380]],[[380,380],\"valid\"],[[381,381],\"mapped\",[382]],[[382,382],\"valid\"],[[383,383],\"mapped\",[115]],[[384,384],\"valid\"],[[385,385],\"mapped\",[595]],[[386,386],\"mapped\",[387]],[[387,387],\"valid\"],[[388,388],\"mapped\",[389]],[[389,389],\"valid\"],[[390,390],\"mapped\",[596]],[[391,391],\"mapped\",[392]],[[392,392],\"valid\"],[[393,393],\"mapped\",[598]],[[394,394],\"mapped\",[599]],[[395,395],\"mapped\",[396]],[[396,397],\"valid\"],[[398,398],\"mapped\",[477]],[[399,399],\"mapped\",[601]],[[400,400],\"mapped\",[603]],[[401,401],\"mapped\",[402]],[[402,402],\"valid\"],[[403,403],\"mapped\",[608]],[[404,404],\"mapped\",[611]],[[405,405],\"valid\"],[[406,406],\"mapped\",[617]],[[407,407],\"mapped\",[616]],[[408,408],\"mapped\",[409]],[[409,411],\"valid\"],[[412,412],\"mapped\",[623]],[[413,413],\"mapped\",[626]],[[414,414],\"valid\"],[[415,415],\"mapped\",[629]],[[416,416],\"mapped\",[417]],[[417,417],\"valid\"],[[418,418],\"mapped\",[419]],[[419,419],\"valid\"],[[420,420],\"mapped\",[421]],[[421,421],\"valid\"],[[422,422],\"mapped\",[640]],[[423,423],\"mapped\",[424]],[[424,424],\"valid\"],[[425,425],\"mapped\",[643]],[[426,427],\"valid\"],[[428,428],\"mapped\",[429]],[[429,429],\"valid\"],[[430,430],\"mapped\",[648]],[[431,431],\"mapped\",[432]],[[432,432],\"valid\"],[[433,433],\"mapped\",[650]],[[434,434],\"mapped\",[651]],[[435,435],\"mapped\",[436]],[[436,436],\"valid\"],[[437,437],\"mapped\",[438]],[[438,438],\"valid\"],[[439,439],\"mapped\",[658]],[[440,440],\"mapped\",[441]],[[441,443],\"valid\"],[[444,444],\"mapped\",[445]],[[445,451],\"valid\"],[[452,454],\"mapped\",[100,382]],[[455,457],\"mapped\",[108,106]],[[458,460],\"mapped\",[110,106]],[[461,461],\"mapped\",[462]],[[462,462],\"valid\"],[[463,463],\"mapped\",[464]],[[464,464],\"valid\"],[[465,465],\"mapped\",[466]],[[466,466],\"valid\"],[[467,467],\"mapped\",[468]],[[468,468],\"valid\"],[[469,469],\"mapped\",[470]],[[470,470],\"valid\"],[[471,471],\"mapped\",[472]],[[472,472],\"valid\"],[[473,473],\"mapped\",[474]],[[474,474],\"valid\"],[[475,475],\"mapped\",[476]],[[476,477],\"valid\"],[[478,478],\"mapped\",[479]],[[479,479],\"valid\"],[[480,480],\"mapped\",[481]],[[481,481],\"valid\"],[[482,482],\"mapped\",[483]],[[483,483],\"valid\"],[[484,484],\"mapped\",[485]],[[485,485],\"valid\"],[[486,486],\"mapped\",[487]],[[487,487],\"valid\"],[[488,488],\"mapped\",[489]],[[489,489],\"valid\"],[[490,490],\"mapped\",[491]],[[491,491],\"valid\"],[[492,492],\"mapped\",[493]],[[493,493],\"valid\"],[[494,494],\"mapped\",[495]],[[495,496],\"valid\"],[[497,499],\"mapped\",[100,122]],[[500,500],\"mapped\",[501]],[[501,501],\"valid\"],[[502,502],\"mapped\",[405]],[[503,503],\"mapped\",[447]],[[504,504],\"mapped\",[505]],[[505,505],\"valid\"],[[506,506],\"mapped\",[507]],[[507,507],\"valid\"],[[508,508],\"mapped\",[509]],[[509,509],\"valid\"],[[510,510],\"mapped\",[511]],[[511,511],\"valid\"],[[512,512],\"mapped\",[513]],[[513,513],\"valid\"],[[514,514],\"mapped\",[515]],[[515,515],\"valid\"],[[516,516],\"mapped\",[517]],[[517,517],\"valid\"],[[518,518],\"mapped\",[519]],[[519,519],\"valid\"],[[520,520],\"mapped\",[521]],[[521,521],\"valid\"],[[522,522],\"mapped\",[523]],[[523,523],\"valid\"],[[524,524],\"mapped\",[525]],[[525,525],\"valid\"],[[526,526],\"mapped\",[527]],[[527,527],\"valid\"],[[528,528],\"mapped\",[529]],[[529,529],\"valid\"],[[530,530],\"mapped\",[531]],[[531,531],\"valid\"],[[532,532],\"mapped\",[533]],[[533,533],\"valid\"],[[534,534],\"mapped\",[535]],[[535,535],\"valid\"],[[536,536],\"mapped\",[537]],[[537,537],\"valid\"],[[538,538],\"mapped\",[539]],[[539,539],\"valid\"],[[540,540],\"mapped\",[541]],[[541,541],\"valid\"],[[542,542],\"mapped\",[543]],[[543,543],\"valid\"],[[544,544],\"mapped\",[414]],[[545,545],\"valid\"],[[546,546],\"mapped\",[547]],[[547,547],\"valid\"],[[548,548],\"mapped\",[549]],[[549,549],\"valid\"],[[550,550],\"mapped\",[551]],[[551,551],\"valid\"],[[552,552],\"mapped\",[553]],[[553,553],\"valid\"],[[554,554],\"mapped\",[555]],[[555,555],\"valid\"],[[556,556],\"mapped\",[557]],[[557,557],\"valid\"],[[558,558],\"mapped\",[559]],[[559,559],\"valid\"],[[560,560],\"mapped\",[561]],[[561,561],\"valid\"],[[562,562],\"mapped\",[563]],[[563,563],\"valid\"],[[564,566],\"valid\"],[[567,569],\"valid\"],[[570,570],\"mapped\",[11365]],[[571,571],\"mapped\",[572]],[[572,572],\"valid\"],[[573,573],\"mapped\",[410]],[[574,574],\"mapped\",[11366]],[[575,576],\"valid\"],[[577,577],\"mapped\",[578]],[[578,578],\"valid\"],[[579,579],\"mapped\",[384]],[[580,580],\"mapped\",[649]],[[581,581],\"mapped\",[652]],[[582,582],\"mapped\",[583]],[[583,583],\"valid\"],[[584,584],\"mapped\",[585]],[[585,585],\"valid\"],[[586,586],\"mapped\",[587]],[[587,587],\"valid\"],[[588,588],\"mapped\",[589]],[[589,589],\"valid\"],[[590,590],\"mapped\",[591]],[[591,591],\"valid\"],[[592,680],\"valid\"],[[681,685],\"valid\"],[[686,687],\"valid\"],[[688,688],\"mapped\",[104]],[[689,689],\"mapped\",[614]],[[690,690],\"mapped\",[106]],[[691,691],\"mapped\",[114]],[[692,692],\"mapped\",[633]],[[693,693],\"mapped\",[635]],[[694,694],\"mapped\",[641]],[[695,695],\"mapped\",[119]],[[696,696],\"mapped\",[121]],[[697,705],\"valid\"],[[706,709],\"valid\",[],\"NV8\"],[[710,721],\"valid\"],[[722,727],\"valid\",[],\"NV8\"],[[728,728],\"disallowed_STD3_mapped\",[32,774]],[[729,729],\"disallowed_STD3_mapped\",[32,775]],[[730,730],\"disallowed_STD3_mapped\",[32,778]],[[731,731],\"disallowed_STD3_mapped\",[32,808]],[[732,732],\"disallowed_STD3_mapped\",[32,771]],[[733,733],\"disallowed_STD3_mapped\",[32,779]],[[734,734],\"valid\",[],\"NV8\"],[[735,735],\"valid\",[],\"NV8\"],[[736,736],\"mapped\",[611]],[[737,737],\"mapped\",[108]],[[738,738],\"mapped\",[115]],[[739,739],\"mapped\",[120]],[[740,740],\"mapped\",[661]],[[741,745],\"valid\",[],\"NV8\"],[[746,747],\"valid\",[],\"NV8\"],[[748,748],\"valid\"],[[749,749],\"valid\",[],\"NV8\"],[[750,750],\"valid\"],[[751,767],\"valid\",[],\"NV8\"],[[768,831],\"valid\"],[[832,832],\"mapped\",[768]],[[833,833],\"mapped\",[769]],[[834,834],\"valid\"],[[835,835],\"mapped\",[787]],[[836,836],\"mapped\",[776,769]],[[837,837],\"mapped\",[953]],[[838,846],\"valid\"],[[847,847],\"ignored\"],[[848,855],\"valid\"],[[856,860],\"valid\"],[[861,863],\"valid\"],[[864,865],\"valid\"],[[866,866],\"valid\"],[[867,879],\"valid\"],[[880,880],\"mapped\",[881]],[[881,881],\"valid\"],[[882,882],\"mapped\",[883]],[[883,883],\"valid\"],[[884,884],\"mapped\",[697]],[[885,885],\"valid\"],[[886,886],\"mapped\",[887]],[[887,887],\"valid\"],[[888,889],\"disallowed\"],[[890,890],\"disallowed_STD3_mapped\",[32,953]],[[891,893],\"valid\"],[[894,894],\"disallowed_STD3_mapped\",[59]],[[895,895],\"mapped\",[1011]],[[896,899],\"disallowed\"],[[900,900],\"disallowed_STD3_mapped\",[32,769]],[[901,901],\"disallowed_STD3_mapped\",[32,776,769]],[[902,902],\"mapped\",[940]],[[903,903],\"mapped\",[183]],[[904,904],\"mapped\",[941]],[[905,905],\"mapped\",[942]],[[906,906],\"mapped\",[943]],[[907,907],\"disallowed\"],[[908,908],\"mapped\",[972]],[[909,909],\"disallowed\"],[[910,910],\"mapped\",[973]],[[911,911],\"mapped\",[974]],[[912,912],\"valid\"],[[913,913],\"mapped\",[945]],[[914,914],\"mapped\",[946]],[[915,915],\"mapped\",[947]],[[916,916],\"mapped\",[948]],[[917,917],\"mapped\",[949]],[[918,918],\"mapped\",[950]],[[919,919],\"mapped\",[951]],[[920,920],\"mapped\",[952]],[[921,921],\"mapped\",[953]],[[922,922],\"mapped\",[954]],[[923,923],\"mapped\",[955]],[[924,924],\"mapped\",[956]],[[925,925],\"mapped\",[957]],[[926,926],\"mapped\",[958]],[[927,927],\"mapped\",[959]],[[928,928],\"mapped\",[960]],[[929,929],\"mapped\",[961]],[[930,930],\"disallowed\"],[[931,931],\"mapped\",[963]],[[932,932],\"mapped\",[964]],[[933,933],\"mapped\",[965]],[[934,934],\"mapped\",[966]],[[935,935],\"mapped\",[967]],[[936,936],\"mapped\",[968]],[[937,937],\"mapped\",[969]],[[938,938],\"mapped\",[970]],[[939,939],\"mapped\",[971]],[[940,961],\"valid\"],[[962,962],\"deviation\",[963]],[[963,974],\"valid\"],[[975,975],\"mapped\",[983]],[[976,976],\"mapped\",[946]],[[977,977],\"mapped\",[952]],[[978,978],\"mapped\",[965]],[[979,979],\"mapped\",[973]],[[980,980],\"mapped\",[971]],[[981,981],\"mapped\",[966]],[[982,982],\"mapped\",[960]],[[983,983],\"valid\"],[[984,984],\"mapped\",[985]],[[985,985],\"valid\"],[[986,986],\"mapped\",[987]],[[987,987],\"valid\"],[[988,988],\"mapped\",[989]],[[989,989],\"valid\"],[[990,990],\"mapped\",[991]],[[991,991],\"valid\"],[[992,992],\"mapped\",[993]],[[993,993],\"valid\"],[[994,994],\"mapped\",[995]],[[995,995],\"valid\"],[[996,996],\"mapped\",[997]],[[997,997],\"valid\"],[[998,998],\"mapped\",[999]],[[999,999],\"valid\"],[[1000,1000],\"mapped\",[1001]],[[1001,1001],\"valid\"],[[1002,1002],\"mapped\",[1003]],[[1003,1003],\"valid\"],[[1004,1004],\"mapped\",[1005]],[[1005,1005],\"valid\"],[[1006,1006],\"mapped\",[1007]],[[1007,1007],\"valid\"],[[1008,1008],\"mapped\",[954]],[[1009,1009],\"mapped\",[961]],[[1010,1010],\"mapped\",[963]],[[1011,1011],\"valid\"],[[1012,1012],\"mapped\",[952]],[[1013,1013],\"mapped\",[949]],[[1014,1014],\"valid\",[],\"NV8\"],[[1015,1015],\"mapped\",[1016]],[[1016,1016],\"valid\"],[[1017,1017],\"mapped\",[963]],[[1018,1018],\"mapped\",[1019]],[[1019,1019],\"valid\"],[[1020,1020],\"valid\"],[[1021,1021],\"mapped\",[891]],[[1022,1022],\"mapped\",[892]],[[1023,1023],\"mapped\",[893]],[[1024,1024],\"mapped\",[1104]],[[1025,1025],\"mapped\",[1105]],[[1026,1026],\"mapped\",[1106]],[[1027,1027],\"mapped\",[1107]],[[1028,1028],\"mapped\",[1108]],[[1029,1029],\"mapped\",[1109]],[[1030,1030],\"mapped\",[1110]],[[1031,1031],\"mapped\",[1111]],[[1032,1032],\"mapped\",[1112]],[[1033,1033],\"mapped\",[1113]],[[1034,1034],\"mapped\",[1114]],[[1035,1035],\"mapped\",[1115]],[[1036,1036],\"mapped\",[1116]],[[1037,1037],\"mapped\",[1117]],[[1038,1038],\"mapped\",[1118]],[[1039,1039],\"mapped\",[1119]],[[1040,1040],\"mapped\",[1072]],[[1041,1041],\"mapped\",[1073]],[[1042,1042],\"mapped\",[1074]],[[1043,1043],\"mapped\",[1075]],[[1044,1044],\"mapped\",[1076]],[[1045,1045],\"mapped\",[1077]],[[1046,1046],\"mapped\",[1078]],[[1047,1047],\"mapped\",[1079]],[[1048,1048],\"mapped\",[1080]],[[1049,1049],\"mapped\",[1081]],[[1050,1050],\"mapped\",[1082]],[[1051,1051],\"mapped\",[1083]],[[1052,1052],\"mapped\",[1084]],[[1053,1053],\"mapped\",[1085]],[[1054,1054],\"mapped\",[1086]],[[1055,1055],\"mapped\",[1087]],[[1056,1056],\"mapped\",[1088]],[[1057,1057],\"mapped\",[1089]],[[1058,1058],\"mapped\",[1090]],[[1059,1059],\"mapped\",[1091]],[[1060,1060],\"mapped\",[1092]],[[1061,1061],\"mapped\",[1093]],[[1062,1062],\"mapped\",[1094]],[[1063,1063],\"mapped\",[1095]],[[1064,1064],\"mapped\",[1096]],[[1065,1065],\"mapped\",[1097]],[[1066,1066],\"mapped\",[1098]],[[1067,1067],\"mapped\",[1099]],[[1068,1068],\"mapped\",[1100]],[[1069,1069],\"mapped\",[1101]],[[1070,1070],\"mapped\",[1102]],[[1071,1071],\"mapped\",[1103]],[[1072,1103],\"valid\"],[[1104,1104],\"valid\"],[[1105,1116],\"valid\"],[[1117,1117],\"valid\"],[[1118,1119],\"valid\"],[[1120,1120],\"mapped\",[1121]],[[1121,1121],\"valid\"],[[1122,1122],\"mapped\",[1123]],[[1123,1123],\"valid\"],[[1124,1124],\"mapped\",[1125]],[[1125,1125],\"valid\"],[[1126,1126],\"mapped\",[1127]],[[1127,1127],\"valid\"],[[1128,1128],\"mapped\",[1129]],[[1129,1129],\"valid\"],[[1130,1130],\"mapped\",[1131]],[[1131,1131],\"valid\"],[[1132,1132],\"mapped\",[1133]],[[1133,1133],\"valid\"],[[1134,1134],\"mapped\",[1135]],[[1135,1135],\"valid\"],[[1136,1136],\"mapped\",[1137]],[[1137,1137],\"valid\"],[[1138,1138],\"mapped\",[1139]],[[1139,1139],\"valid\"],[[1140,1140],\"mapped\",[1141]],[[1141,1141],\"valid\"],[[1142,1142],\"mapped\",[1143]],[[1143,1143],\"valid\"],[[1144,1144],\"mapped\",[1145]],[[1145,1145],\"valid\"],[[1146,1146],\"mapped\",[1147]],[[1147,1147],\"valid\"],[[1148,1148],\"mapped\",[1149]],[[1149,1149],\"valid\"],[[1150,1150],\"mapped\",[1151]],[[1151,1151],\"valid\"],[[1152,1152],\"mapped\",[1153]],[[1153,1153],\"valid\"],[[1154,1154],\"valid\",[],\"NV8\"],[[1155,1158],\"valid\"],[[1159,1159],\"valid\"],[[1160,1161],\"valid\",[],\"NV8\"],[[1162,1162],\"mapped\",[1163]],[[1163,1163],\"valid\"],[[1164,1164],\"mapped\",[1165]],[[1165,1165],\"valid\"],[[1166,1166],\"mapped\",[1167]],[[1167,1167],\"valid\"],[[1168,1168],\"mapped\",[1169]],[[1169,1169],\"valid\"],[[1170,1170],\"mapped\",[1171]],[[1171,1171],\"valid\"],[[1172,1172],\"mapped\",[1173]],[[1173,1173],\"valid\"],[[1174,1174],\"mapped\",[1175]],[[1175,1175],\"valid\"],[[1176,1176],\"mapped\",[1177]],[[1177,1177],\"valid\"],[[1178,1178],\"mapped\",[1179]],[[1179,1179],\"valid\"],[[1180,1180],\"mapped\",[1181]],[[1181,1181],\"valid\"],[[1182,1182],\"mapped\",[1183]],[[1183,1183],\"valid\"],[[1184,1184],\"mapped\",[1185]],[[1185,1185],\"valid\"],[[1186,1186],\"mapped\",[1187]],[[1187,1187],\"valid\"],[[1188,1188],\"mapped\",[1189]],[[1189,1189],\"valid\"],[[1190,1190],\"mapped\",[1191]],[[1191,1191],\"valid\"],[[1192,1192],\"mapped\",[1193]],[[1193,1193],\"valid\"],[[1194,1194],\"mapped\",[1195]],[[1195,1195],\"valid\"],[[1196,1196],\"mapped\",[1197]],[[1197,1197],\"valid\"],[[1198,1198],\"mapped\",[1199]],[[1199,1199],\"valid\"],[[1200,1200],\"mapped\",[1201]],[[1201,1201],\"valid\"],[[1202,1202],\"mapped\",[1203]],[[1203,1203],\"valid\"],[[1204,1204],\"mapped\",[1205]],[[1205,1205],\"valid\"],[[1206,1206],\"mapped\",[1207]],[[1207,1207],\"valid\"],[[1208,1208],\"mapped\",[1209]],[[1209,1209],\"valid\"],[[1210,1210],\"mapped\",[1211]],[[1211,1211],\"valid\"],[[1212,1212],\"mapped\",[1213]],[[1213,1213],\"valid\"],[[1214,1214],\"mapped\",[1215]],[[1215,1215],\"valid\"],[[1216,1216],\"disallowed\"],[[1217,1217],\"mapped\",[1218]],[[1218,1218],\"valid\"],[[1219,1219],\"mapped\",[1220]],[[1220,1220],\"valid\"],[[1221,1221],\"mapped\",[1222]],[[1222,1222],\"valid\"],[[1223,1223],\"mapped\",[1224]],[[1224,1224],\"valid\"],[[1225,1225],\"mapped\",[1226]],[[1226,1226],\"valid\"],[[1227,1227],\"mapped\",[1228]],[[1228,1228],\"valid\"],[[1229,1229],\"mapped\",[1230]],[[1230,1230],\"valid\"],[[1231,1231],\"valid\"],[[1232,1232],\"mapped\",[1233]],[[1233,1233],\"valid\"],[[1234,1234],\"mapped\",[1235]],[[1235,1235],\"valid\"],[[1236,1236],\"mapped\",[1237]],[[1237,1237],\"valid\"],[[1238,1238],\"mapped\",[1239]],[[1239,1239],\"valid\"],[[1240,1240],\"mapped\",[1241]],[[1241,1241],\"valid\"],[[1242,1242],\"mapped\",[1243]],[[1243,1243],\"valid\"],[[1244,1244],\"mapped\",[1245]],[[1245,1245],\"valid\"],[[1246,1246],\"mapped\",[1247]],[[1247,1247],\"valid\"],[[1248,1248],\"mapped\",[1249]],[[1249,1249],\"valid\"],[[1250,1250],\"mapped\",[1251]],[[1251,1251],\"valid\"],[[1252,1252],\"mapped\",[1253]],[[1253,1253],\"valid\"],[[1254,1254],\"mapped\",[1255]],[[1255,1255],\"valid\"],[[1256,1256],\"mapped\",[1257]],[[1257,1257],\"valid\"],[[1258,1258],\"mapped\",[1259]],[[1259,1259],\"valid\"],[[1260,1260],\"mapped\",[1261]],[[1261,1261],\"valid\"],[[1262,1262],\"mapped\",[1263]],[[1263,1263],\"valid\"],[[1264,1264],\"mapped\",[1265]],[[1265,1265],\"valid\"],[[1266,1266],\"mapped\",[1267]],[[1267,1267],\"valid\"],[[1268,1268],\"mapped\",[1269]],[[1269,1269],\"valid\"],[[1270,1270],\"mapped\",[1271]],[[1271,1271],\"valid\"],[[1272,1272],\"mapped\",[1273]],[[1273,1273],\"valid\"],[[1274,1274],\"mapped\",[1275]],[[1275,1275],\"valid\"],[[1276,1276],\"mapped\",[1277]],[[1277,1277],\"valid\"],[[1278,1278],\"mapped\",[1279]],[[1279,1279],\"valid\"],[[1280,1280],\"mapped\",[1281]],[[1281,1281],\"valid\"],[[1282,1282],\"mapped\",[1283]],[[1283,1283],\"valid\"],[[1284,1284],\"mapped\",[1285]],[[1285,1285],\"valid\"],[[1286,1286],\"mapped\",[1287]],[[1287,1287],\"valid\"],[[1288,1288],\"mapped\",[1289]],[[1289,1289],\"valid\"],[[1290,1290],\"mapped\",[1291]],[[1291,1291],\"valid\"],[[1292,1292],\"mapped\",[1293]],[[1293,1293],\"valid\"],[[1294,1294],\"mapped\",[1295]],[[1295,1295],\"valid\"],[[1296,1296],\"mapped\",[1297]],[[1297,1297],\"valid\"],[[1298,1298],\"mapped\",[1299]],[[1299,1299],\"valid\"],[[1300,1300],\"mapped\",[1301]],[[1301,1301],\"valid\"],[[1302,1302],\"mapped\",[1303]],[[1303,1303],\"valid\"],[[1304,1304],\"mapped\",[1305]],[[1305,1305],\"valid\"],[[1306,1306],\"mapped\",[1307]],[[1307,1307],\"valid\"],[[1308,1308],\"mapped\",[1309]],[[1309,1309],\"valid\"],[[1310,1310],\"mapped\",[1311]],[[1311,1311],\"valid\"],[[1312,1312],\"mapped\",[1313]],[[1313,1313],\"valid\"],[[1314,1314],\"mapped\",[1315]],[[1315,1315],\"valid\"],[[1316,1316],\"mapped\",[1317]],[[1317,1317],\"valid\"],[[1318,1318],\"mapped\",[1319]],[[1319,1319],\"valid\"],[[1320,1320],\"mapped\",[1321]],[[1321,1321],\"valid\"],[[1322,1322],\"mapped\",[1323]],[[1323,1323],\"valid\"],[[1324,1324],\"mapped\",[1325]],[[1325,1325],\"valid\"],[[1326,1326],\"mapped\",[1327]],[[1327,1327],\"valid\"],[[1328,1328],\"disallowed\"],[[1329,1329],\"mapped\",[1377]],[[1330,1330],\"mapped\",[1378]],[[1331,1331],\"mapped\",[1379]],[[1332,1332],\"mapped\",[1380]],[[1333,1333],\"mapped\",[1381]],[[1334,1334],\"mapped\",[1382]],[[1335,1335],\"mapped\",[1383]],[[1336,1336],\"mapped\",[1384]],[[1337,1337],\"mapped\",[1385]],[[1338,1338],\"mapped\",[1386]],[[1339,1339],\"mapped\",[1387]],[[1340,1340],\"mapped\",[1388]],[[1341,1341],\"mapped\",[1389]],[[1342,1342],\"mapped\",[1390]],[[1343,1343],\"mapped\",[1391]],[[1344,1344],\"mapped\",[1392]],[[1345,1345],\"mapped\",[1393]],[[1346,1346],\"mapped\",[1394]],[[1347,1347],\"mapped\",[1395]],[[1348,1348],\"mapped\",[1396]],[[1349,1349],\"mapped\",[1397]],[[1350,1350],\"mapped\",[1398]],[[1351,1351],\"mapped\",[1399]],[[1352,1352],\"mapped\",[1400]],[[1353,1353],\"mapped\",[1401]],[[1354,1354],\"mapped\",[1402]],[[1355,1355],\"mapped\",[1403]],[[1356,1356],\"mapped\",[1404]],[[1357,1357],\"mapped\",[1405]],[[1358,1358],\"mapped\",[1406]],[[1359,1359],\"mapped\",[1407]],[[1360,1360],\"mapped\",[1408]],[[1361,1361],\"mapped\",[1409]],[[1362,1362],\"mapped\",[1410]],[[1363,1363],\"mapped\",[1411]],[[1364,1364],\"mapped\",[1412]],[[1365,1365],\"mapped\",[1413]],[[1366,1366],\"mapped\",[1414]],[[1367,1368],\"disallowed\"],[[1369,1369],\"valid\"],[[1370,1375],\"valid\",[],\"NV8\"],[[1376,1376],\"disallowed\"],[[1377,1414],\"valid\"],[[1415,1415],\"mapped\",[1381,1410]],[[1416,1416],\"disallowed\"],[[1417,1417],\"valid\",[],\"NV8\"],[[1418,1418],\"valid\",[],\"NV8\"],[[1419,1420],\"disallowed\"],[[1421,1422],\"valid\",[],\"NV8\"],[[1423,1423],\"valid\",[],\"NV8\"],[[1424,1424],\"disallowed\"],[[1425,1441],\"valid\"],[[1442,1442],\"valid\"],[[1443,1455],\"valid\"],[[1456,1465],\"valid\"],[[1466,1466],\"valid\"],[[1467,1469],\"valid\"],[[1470,1470],\"valid\",[],\"NV8\"],[[1471,1471],\"valid\"],[[1472,1472],\"valid\",[],\"NV8\"],[[1473,1474],\"valid\"],[[1475,1475],\"valid\",[],\"NV8\"],[[1476,1476],\"valid\"],[[1477,1477],\"valid\"],[[1478,1478],\"valid\",[],\"NV8\"],[[1479,1479],\"valid\"],[[1480,1487],\"disallowed\"],[[1488,1514],\"valid\"],[[1515,1519],\"disallowed\"],[[1520,1524],\"valid\"],[[1525,1535],\"disallowed\"],[[1536,1539],\"disallowed\"],[[1540,1540],\"disallowed\"],[[1541,1541],\"disallowed\"],[[1542,1546],\"valid\",[],\"NV8\"],[[1547,1547],\"valid\",[],\"NV8\"],[[1548,1548],\"valid\",[],\"NV8\"],[[1549,1551],\"valid\",[],\"NV8\"],[[1552,1557],\"valid\"],[[1558,1562],\"valid\"],[[1563,1563],\"valid\",[],\"NV8\"],[[1564,1564],\"disallowed\"],[[1565,1565],\"disallowed\"],[[1566,1566],\"valid\",[],\"NV8\"],[[1567,1567],\"valid\",[],\"NV8\"],[[1568,1568],\"valid\"],[[1569,1594],\"valid\"],[[1595,1599],\"valid\"],[[1600,1600],\"valid\",[],\"NV8\"],[[1601,1618],\"valid\"],[[1619,1621],\"valid\"],[[1622,1624],\"valid\"],[[1625,1630],\"valid\"],[[1631,1631],\"valid\"],[[1632,1641],\"valid\"],[[1642,1645],\"valid\",[],\"NV8\"],[[1646,1647],\"valid\"],[[1648,1652],\"valid\"],[[1653,1653],\"mapped\",[1575,1652]],[[1654,1654],\"mapped\",[1608,1652]],[[1655,1655],\"mapped\",[1735,1652]],[[1656,1656],\"mapped\",[1610,1652]],[[1657,1719],\"valid\"],[[1720,1721],\"valid\"],[[1722,1726],\"valid\"],[[1727,1727],\"valid\"],[[1728,1742],\"valid\"],[[1743,1743],\"valid\"],[[1744,1747],\"valid\"],[[1748,1748],\"valid\",[],\"NV8\"],[[1749,1756],\"valid\"],[[1757,1757],\"disallowed\"],[[1758,1758],\"valid\",[],\"NV8\"],[[1759,1768],\"valid\"],[[1769,1769],\"valid\",[],\"NV8\"],[[1770,1773],\"valid\"],[[1774,1775],\"valid\"],[[1776,1785],\"valid\"],[[1786,1790],\"valid\"],[[1791,1791],\"valid\"],[[1792,1805],\"valid\",[],\"NV8\"],[[1806,1806],\"disallowed\"],[[1807,1807],\"disallowed\"],[[1808,1836],\"valid\"],[[1837,1839],\"valid\"],[[1840,1866],\"valid\"],[[1867,1868],\"disallowed\"],[[1869,1871],\"valid\"],[[1872,1901],\"valid\"],[[1902,1919],\"valid\"],[[1920,1968],\"valid\"],[[1969,1969],\"valid\"],[[1970,1983],\"disallowed\"],[[1984,2037],\"valid\"],[[2038,2042],\"valid\",[],\"NV8\"],[[2043,2047],\"disallowed\"],[[2048,2093],\"valid\"],[[2094,2095],\"disallowed\"],[[2096,2110],\"valid\",[],\"NV8\"],[[2111,2111],\"disallowed\"],[[2112,2139],\"valid\"],[[2140,2141],\"disallowed\"],[[2142,2142],\"valid\",[],\"NV8\"],[[2143,2207],\"disallowed\"],[[2208,2208],\"valid\"],[[2209,2209],\"valid\"],[[2210,2220],\"valid\"],[[2221,2226],\"valid\"],[[2227,2228],\"valid\"],[[2229,2274],\"disallowed\"],[[2275,2275],\"valid\"],[[2276,2302],\"valid\"],[[2303,2303],\"valid\"],[[2304,2304],\"valid\"],[[2305,2307],\"valid\"],[[2308,2308],\"valid\"],[[2309,2361],\"valid\"],[[2362,2363],\"valid\"],[[2364,2381],\"valid\"],[[2382,2382],\"valid\"],[[2383,2383],\"valid\"],[[2384,2388],\"valid\"],[[2389,2389],\"valid\"],[[2390,2391],\"valid\"],[[2392,2392],\"mapped\",[2325,2364]],[[2393,2393],\"mapped\",[2326,2364]],[[2394,2394],\"mapped\",[2327,2364]],[[2395,2395],\"mapped\",[2332,2364]],[[2396,2396],\"mapped\",[2337,2364]],[[2397,2397],\"mapped\",[2338,2364]],[[2398,2398],\"mapped\",[2347,2364]],[[2399,2399],\"mapped\",[2351,2364]],[[2400,2403],\"valid\"],[[2404,2405],\"valid\",[],\"NV8\"],[[2406,2415],\"valid\"],[[2416,2416],\"valid\",[],\"NV8\"],[[2417,2418],\"valid\"],[[2419,2423],\"valid\"],[[2424,2424],\"valid\"],[[2425,2426],\"valid\"],[[2427,2428],\"valid\"],[[2429,2429],\"valid\"],[[2430,2431],\"valid\"],[[2432,2432],\"valid\"],[[2433,2435],\"valid\"],[[2436,2436],\"disallowed\"],[[2437,2444],\"valid\"],[[2445,2446],\"disallowed\"],[[2447,2448],\"valid\"],[[2449,2450],\"disallowed\"],[[2451,2472],\"valid\"],[[2473,2473],\"disallowed\"],[[2474,2480],\"valid\"],[[2481,2481],\"disallowed\"],[[2482,2482],\"valid\"],[[2483,2485],\"disallowed\"],[[2486,2489],\"valid\"],[[2490,2491],\"disallowed\"],[[2492,2492],\"valid\"],[[2493,2493],\"valid\"],[[2494,2500],\"valid\"],[[2501,2502],\"disallowed\"],[[2503,2504],\"valid\"],[[2505,2506],\"disallowed\"],[[2507,2509],\"valid\"],[[2510,2510],\"valid\"],[[2511,2518],\"disallowed\"],[[2519,2519],\"valid\"],[[2520,2523],\"disallowed\"],[[2524,2524],\"mapped\",[2465,2492]],[[2525,2525],\"mapped\",[2466,2492]],[[2526,2526],\"disallowed\"],[[2527,2527],\"mapped\",[2479,2492]],[[2528,2531],\"valid\"],[[2532,2533],\"disallowed\"],[[2534,2545],\"valid\"],[[2546,2554],\"valid\",[],\"NV8\"],[[2555,2555],\"valid\",[],\"NV8\"],[[2556,2560],\"disallowed\"],[[2561,2561],\"valid\"],[[2562,2562],\"valid\"],[[2563,2563],\"valid\"],[[2564,2564],\"disallowed\"],[[2565,2570],\"valid\"],[[2571,2574],\"disallowed\"],[[2575,2576],\"valid\"],[[2577,2578],\"disallowed\"],[[2579,2600],\"valid\"],[[2601,2601],\"disallowed\"],[[2602,2608],\"valid\"],[[2609,2609],\"disallowed\"],[[2610,2610],\"valid\"],[[2611,2611],\"mapped\",[2610,2620]],[[2612,2612],\"disallowed\"],[[2613,2613],\"valid\"],[[2614,2614],\"mapped\",[2616,2620]],[[2615,2615],\"disallowed\"],[[2616,2617],\"valid\"],[[2618,2619],\"disallowed\"],[[2620,2620],\"valid\"],[[2621,2621],\"disallowed\"],[[2622,2626],\"valid\"],[[2627,2630],\"disallowed\"],[[2631,2632],\"valid\"],[[2633,2634],\"disallowed\"],[[2635,2637],\"valid\"],[[2638,2640],\"disallowed\"],[[2641,2641],\"valid\"],[[2642,2648],\"disallowed\"],[[2649,2649],\"mapped\",[2582,2620]],[[2650,2650],\"mapped\",[2583,2620]],[[2651,2651],\"mapped\",[2588,2620]],[[2652,2652],\"valid\"],[[2653,2653],\"disallowed\"],[[2654,2654],\"mapped\",[2603,2620]],[[2655,2661],\"disallowed\"],[[2662,2676],\"valid\"],[[2677,2677],\"valid\"],[[2678,2688],\"disallowed\"],[[2689,2691],\"valid\"],[[2692,2692],\"disallowed\"],[[2693,2699],\"valid\"],[[2700,2700],\"valid\"],[[2701,2701],\"valid\"],[[2702,2702],\"disallowed\"],[[2703,2705],\"valid\"],[[2706,2706],\"disallowed\"],[[2707,2728],\"valid\"],[[2729,2729],\"disallowed\"],[[2730,2736],\"valid\"],[[2737,2737],\"disallowed\"],[[2738,2739],\"valid\"],[[2740,2740],\"disallowed\"],[[2741,2745],\"valid\"],[[2746,2747],\"disallowed\"],[[2748,2757],\"valid\"],[[2758,2758],\"disallowed\"],[[2759,2761],\"valid\"],[[2762,2762],\"disallowed\"],[[2763,2765],\"valid\"],[[2766,2767],\"disallowed\"],[[2768,2768],\"valid\"],[[2769,2783],\"disallowed\"],[[2784,2784],\"valid\"],[[2785,2787],\"valid\"],[[2788,2789],\"disallowed\"],[[2790,2799],\"valid\"],[[2800,2800],\"valid\",[],\"NV8\"],[[2801,2801],\"valid\",[],\"NV8\"],[[2802,2808],\"disallowed\"],[[2809,2809],\"valid\"],[[2810,2816],\"disallowed\"],[[2817,2819],\"valid\"],[[2820,2820],\"disallowed\"],[[2821,2828],\"valid\"],[[2829,2830],\"disallowed\"],[[2831,2832],\"valid\"],[[2833,2834],\"disallowed\"],[[2835,2856],\"valid\"],[[2857,2857],\"disallowed\"],[[2858,2864],\"valid\"],[[2865,2865],\"disallowed\"],[[2866,2867],\"valid\"],[[2868,2868],\"disallowed\"],[[2869,2869],\"valid\"],[[2870,2873],\"valid\"],[[2874,2875],\"disallowed\"],[[2876,2883],\"valid\"],[[2884,2884],\"valid\"],[[2885,2886],\"disallowed\"],[[2887,2888],\"valid\"],[[2889,2890],\"disallowed\"],[[2891,2893],\"valid\"],[[2894,2901],\"disallowed\"],[[2902,2903],\"valid\"],[[2904,2907],\"disallowed\"],[[2908,2908],\"mapped\",[2849,2876]],[[2909,2909],\"mapped\",[2850,2876]],[[2910,2910],\"disallowed\"],[[2911,2913],\"valid\"],[[2914,2915],\"valid\"],[[2916,2917],\"disallowed\"],[[2918,2927],\"valid\"],[[2928,2928],\"valid\",[],\"NV8\"],[[2929,2929],\"valid\"],[[2930,2935],\"valid\",[],\"NV8\"],[[2936,2945],\"disallowed\"],[[2946,2947],\"valid\"],[[2948,2948],\"disallowed\"],[[2949,2954],\"valid\"],[[2955,2957],\"disallowed\"],[[2958,2960],\"valid\"],[[2961,2961],\"disallowed\"],[[2962,2965],\"valid\"],[[2966,2968],\"disallowed\"],[[2969,2970],\"valid\"],[[2971,2971],\"disallowed\"],[[2972,2972],\"valid\"],[[2973,2973],\"disallowed\"],[[2974,2975],\"valid\"],[[2976,2978],\"disallowed\"],[[2979,2980],\"valid\"],[[2981,2983],\"disallowed\"],[[2984,2986],\"valid\"],[[2987,2989],\"disallowed\"],[[2990,2997],\"valid\"],[[2998,2998],\"valid\"],[[2999,3001],\"valid\"],[[3002,3005],\"disallowed\"],[[3006,3010],\"valid\"],[[3011,3013],\"disallowed\"],[[3014,3016],\"valid\"],[[3017,3017],\"disallowed\"],[[3018,3021],\"valid\"],[[3022,3023],\"disallowed\"],[[3024,3024],\"valid\"],[[3025,3030],\"disallowed\"],[[3031,3031],\"valid\"],[[3032,3045],\"disallowed\"],[[3046,3046],\"valid\"],[[3047,3055],\"valid\"],[[3056,3058],\"valid\",[],\"NV8\"],[[3059,3066],\"valid\",[],\"NV8\"],[[3067,3071],\"disallowed\"],[[3072,3072],\"valid\"],[[3073,3075],\"valid\"],[[3076,3076],\"disallowed\"],[[3077,3084],\"valid\"],[[3085,3085],\"disallowed\"],[[3086,3088],\"valid\"],[[3089,3089],\"disallowed\"],[[3090,3112],\"valid\"],[[3113,3113],\"disallowed\"],[[3114,3123],\"valid\"],[[3124,3124],\"valid\"],[[3125,3129],\"valid\"],[[3130,3132],\"disallowed\"],[[3133,3133],\"valid\"],[[3134,3140],\"valid\"],[[3141,3141],\"disallowed\"],[[3142,3144],\"valid\"],[[3145,3145],\"disallowed\"],[[3146,3149],\"valid\"],[[3150,3156],\"disallowed\"],[[3157,3158],\"valid\"],[[3159,3159],\"disallowed\"],[[3160,3161],\"valid\"],[[3162,3162],\"valid\"],[[3163,3167],\"disallowed\"],[[3168,3169],\"valid\"],[[3170,3171],\"valid\"],[[3172,3173],\"disallowed\"],[[3174,3183],\"valid\"],[[3184,3191],\"disallowed\"],[[3192,3199],\"valid\",[],\"NV8\"],[[3200,3200],\"disallowed\"],[[3201,3201],\"valid\"],[[3202,3203],\"valid\"],[[3204,3204],\"disallowed\"],[[3205,3212],\"valid\"],[[3213,3213],\"disallowed\"],[[3214,3216],\"valid\"],[[3217,3217],\"disallowed\"],[[3218,3240],\"valid\"],[[3241,3241],\"disallowed\"],[[3242,3251],\"valid\"],[[3252,3252],\"disallowed\"],[[3253,3257],\"valid\"],[[3258,3259],\"disallowed\"],[[3260,3261],\"valid\"],[[3262,3268],\"valid\"],[[3269,3269],\"disallowed\"],[[3270,3272],\"valid\"],[[3273,3273],\"disallowed\"],[[3274,3277],\"valid\"],[[3278,3284],\"disallowed\"],[[3285,3286],\"valid\"],[[3287,3293],\"disallowed\"],[[3294,3294],\"valid\"],[[3295,3295],\"disallowed\"],[[3296,3297],\"valid\"],[[3298,3299],\"valid\"],[[3300,3301],\"disallowed\"],[[3302,3311],\"valid\"],[[3312,3312],\"disallowed\"],[[3313,3314],\"valid\"],[[3315,3328],\"disallowed\"],[[3329,3329],\"valid\"],[[3330,3331],\"valid\"],[[3332,3332],\"disallowed\"],[[3333,3340],\"valid\"],[[3341,3341],\"disallowed\"],[[3342,3344],\"valid\"],[[3345,3345],\"disallowed\"],[[3346,3368],\"valid\"],[[3369,3369],\"valid\"],[[3370,3385],\"valid\"],[[3386,3386],\"valid\"],[[3387,3388],\"disallowed\"],[[3389,3389],\"valid\"],[[3390,3395],\"valid\"],[[3396,3396],\"valid\"],[[3397,3397],\"disallowed\"],[[3398,3400],\"valid\"],[[3401,3401],\"disallowed\"],[[3402,3405],\"valid\"],[[3406,3406],\"valid\"],[[3407,3414],\"disallowed\"],[[3415,3415],\"valid\"],[[3416,3422],\"disallowed\"],[[3423,3423],\"valid\"],[[3424,3425],\"valid\"],[[3426,3427],\"valid\"],[[3428,3429],\"disallowed\"],[[3430,3439],\"valid\"],[[3440,3445],\"valid\",[],\"NV8\"],[[3446,3448],\"disallowed\"],[[3449,3449],\"valid\",[],\"NV8\"],[[3450,3455],\"valid\"],[[3456,3457],\"disallowed\"],[[3458,3459],\"valid\"],[[3460,3460],\"disallowed\"],[[3461,3478],\"valid\"],[[3479,3481],\"disallowed\"],[[3482,3505],\"valid\"],[[3506,3506],\"disallowed\"],[[3507,3515],\"valid\"],[[3516,3516],\"disallowed\"],[[3517,3517],\"valid\"],[[3518,3519],\"disallowed\"],[[3520,3526],\"valid\"],[[3527,3529],\"disallowed\"],[[3530,3530],\"valid\"],[[3531,3534],\"disallowed\"],[[3535,3540],\"valid\"],[[3541,3541],\"disallowed\"],[[3542,3542],\"valid\"],[[3543,3543],\"disallowed\"],[[3544,3551],\"valid\"],[[3552,3557],\"disallowed\"],[[3558,3567],\"valid\"],[[3568,3569],\"disallowed\"],[[3570,3571],\"valid\"],[[3572,3572],\"valid\",[],\"NV8\"],[[3573,3584],\"disallowed\"],[[3585,3634],\"valid\"],[[3635,3635],\"mapped\",[3661,3634]],[[3636,3642],\"valid\"],[[3643,3646],\"disallowed\"],[[3647,3647],\"valid\",[],\"NV8\"],[[3648,3662],\"valid\"],[[3663,3663],\"valid\",[],\"NV8\"],[[3664,3673],\"valid\"],[[3674,3675],\"valid\",[],\"NV8\"],[[3676,3712],\"disallowed\"],[[3713,3714],\"valid\"],[[3715,3715],\"disallowed\"],[[3716,3716],\"valid\"],[[3717,3718],\"disallowed\"],[[3719,3720],\"valid\"],[[3721,3721],\"disallowed\"],[[3722,3722],\"valid\"],[[3723,3724],\"disallowed\"],[[3725,3725],\"valid\"],[[3726,3731],\"disallowed\"],[[3732,3735],\"valid\"],[[3736,3736],\"disallowed\"],[[3737,3743],\"valid\"],[[3744,3744],\"disallowed\"],[[3745,3747],\"valid\"],[[3748,3748],\"disallowed\"],[[3749,3749],\"valid\"],[[3750,3750],\"disallowed\"],[[3751,3751],\"valid\"],[[3752,3753],\"disallowed\"],[[3754,3755],\"valid\"],[[3756,3756],\"disallowed\"],[[3757,3762],\"valid\"],[[3763,3763],\"mapped\",[3789,3762]],[[3764,3769],\"valid\"],[[3770,3770],\"disallowed\"],[[3771,3773],\"valid\"],[[3774,3775],\"disallowed\"],[[3776,3780],\"valid\"],[[3781,3781],\"disallowed\"],[[3782,3782],\"valid\"],[[3783,3783],\"disallowed\"],[[3784,3789],\"valid\"],[[3790,3791],\"disallowed\"],[[3792,3801],\"valid\"],[[3802,3803],\"disallowed\"],[[3804,3804],\"mapped\",[3755,3737]],[[3805,3805],\"mapped\",[3755,3745]],[[3806,3807],\"valid\"],[[3808,3839],\"disallowed\"],[[3840,3840],\"valid\"],[[3841,3850],\"valid\",[],\"NV8\"],[[3851,3851],\"valid\"],[[3852,3852],\"mapped\",[3851]],[[3853,3863],\"valid\",[],\"NV8\"],[[3864,3865],\"valid\"],[[3866,3871],\"valid\",[],\"NV8\"],[[3872,3881],\"valid\"],[[3882,3892],\"valid\",[],\"NV8\"],[[3893,3893],\"valid\"],[[3894,3894],\"valid\",[],\"NV8\"],[[3895,3895],\"valid\"],[[3896,3896],\"valid\",[],\"NV8\"],[[3897,3897],\"valid\"],[[3898,3901],\"valid\",[],\"NV8\"],[[3902,3906],\"valid\"],[[3907,3907],\"mapped\",[3906,4023]],[[3908,3911],\"valid\"],[[3912,3912],\"disallowed\"],[[3913,3916],\"valid\"],[[3917,3917],\"mapped\",[3916,4023]],[[3918,3921],\"valid\"],[[3922,3922],\"mapped\",[3921,4023]],[[3923,3926],\"valid\"],[[3927,3927],\"mapped\",[3926,4023]],[[3928,3931],\"valid\"],[[3932,3932],\"mapped\",[3931,4023]],[[3933,3944],\"valid\"],[[3945,3945],\"mapped\",[3904,4021]],[[3946,3946],\"valid\"],[[3947,3948],\"valid\"],[[3949,3952],\"disallowed\"],[[3953,3954],\"valid\"],[[3955,3955],\"mapped\",[3953,3954]],[[3956,3956],\"valid\"],[[3957,3957],\"mapped\",[3953,3956]],[[3958,3958],\"mapped\",[4018,3968]],[[3959,3959],\"mapped\",[4018,3953,3968]],[[3960,3960],\"mapped\",[4019,3968]],[[3961,3961],\"mapped\",[4019,3953,3968]],[[3962,3968],\"valid\"],[[3969,3969],\"mapped\",[3953,3968]],[[3970,3972],\"valid\"],[[3973,3973],\"valid\",[],\"NV8\"],[[3974,3979],\"valid\"],[[3980,3983],\"valid\"],[[3984,3986],\"valid\"],[[3987,3987],\"mapped\",[3986,4023]],[[3988,3989],\"valid\"],[[3990,3990],\"valid\"],[[3991,3991],\"valid\"],[[3992,3992],\"disallowed\"],[[3993,3996],\"valid\"],[[3997,3997],\"mapped\",[3996,4023]],[[3998,4001],\"valid\"],[[4002,4002],\"mapped\",[4001,4023]],[[4003,4006],\"valid\"],[[4007,4007],\"mapped\",[4006,4023]],[[4008,4011],\"valid\"],[[4012,4012],\"mapped\",[4011,4023]],[[4013,4013],\"valid\"],[[4014,4016],\"valid\"],[[4017,4023],\"valid\"],[[4024,4024],\"valid\"],[[4025,4025],\"mapped\",[3984,4021]],[[4026,4028],\"valid\"],[[4029,4029],\"disallowed\"],[[4030,4037],\"valid\",[],\"NV8\"],[[4038,4038],\"valid\"],[[4039,4044],\"valid\",[],\"NV8\"],[[4045,4045],\"disallowed\"],[[4046,4046],\"valid\",[],\"NV8\"],[[4047,4047],\"valid\",[],\"NV8\"],[[4048,4049],\"valid\",[],\"NV8\"],[[4050,4052],\"valid\",[],\"NV8\"],[[4053,4056],\"valid\",[],\"NV8\"],[[4057,4058],\"valid\",[],\"NV8\"],[[4059,4095],\"disallowed\"],[[4096,4129],\"valid\"],[[4130,4130],\"valid\"],[[4131,4135],\"valid\"],[[4136,4136],\"valid\"],[[4137,4138],\"valid\"],[[4139,4139],\"valid\"],[[4140,4146],\"valid\"],[[4147,4149],\"valid\"],[[4150,4153],\"valid\"],[[4154,4159],\"valid\"],[[4160,4169],\"valid\"],[[4170,4175],\"valid\",[],\"NV8\"],[[4176,4185],\"valid\"],[[4186,4249],\"valid\"],[[4250,4253],\"valid\"],[[4254,4255],\"valid\",[],\"NV8\"],[[4256,4293],\"disallowed\"],[[4294,4294],\"disallowed\"],[[4295,4295],\"mapped\",[11559]],[[4296,4300],\"disallowed\"],[[4301,4301],\"mapped\",[11565]],[[4302,4303],\"disallowed\"],[[4304,4342],\"valid\"],[[4343,4344],\"valid\"],[[4345,4346],\"valid\"],[[4347,4347],\"valid\",[],\"NV8\"],[[4348,4348],\"mapped\",[4316]],[[4349,4351],\"valid\"],[[4352,4441],\"valid\",[],\"NV8\"],[[4442,4446],\"valid\",[],\"NV8\"],[[4447,4448],\"disallowed\"],[[4449,4514],\"valid\",[],\"NV8\"],[[4515,4519],\"valid\",[],\"NV8\"],[[4520,4601],\"valid\",[],\"NV8\"],[[4602,4607],\"valid\",[],\"NV8\"],[[4608,4614],\"valid\"],[[4615,4615],\"valid\"],[[4616,4678],\"valid\"],[[4679,4679],\"valid\"],[[4680,4680],\"valid\"],[[4681,4681],\"disallowed\"],[[4682,4685],\"valid\"],[[4686,4687],\"disallowed\"],[[4688,4694],\"valid\"],[[4695,4695],\"disallowed\"],[[4696,4696],\"valid\"],[[4697,4697],\"disallowed\"],[[4698,4701],\"valid\"],[[4702,4703],\"disallowed\"],[[4704,4742],\"valid\"],[[4743,4743],\"valid\"],[[4744,4744],\"valid\"],[[4745,4745],\"disallowed\"],[[4746,4749],\"valid\"],[[4750,4751],\"disallowed\"],[[4752,4782],\"valid\"],[[4783,4783],\"valid\"],[[4784,4784],\"valid\"],[[4785,4785],\"disallowed\"],[[4786,4789],\"valid\"],[[4790,4791],\"disallowed\"],[[4792,4798],\"valid\"],[[4799,4799],\"disallowed\"],[[4800,4800],\"valid\"],[[4801,4801],\"disallowed\"],[[4802,4805],\"valid\"],[[4806,4807],\"disallowed\"],[[4808,4814],\"valid\"],[[4815,4815],\"valid\"],[[4816,4822],\"valid\"],[[4823,4823],\"disallowed\"],[[4824,4846],\"valid\"],[[4847,4847],\"valid\"],[[4848,4878],\"valid\"],[[4879,4879],\"valid\"],[[4880,4880],\"valid\"],[[4881,4881],\"disallowed\"],[[4882,4885],\"valid\"],[[4886,4887],\"disallowed\"],[[4888,4894],\"valid\"],[[4895,4895],\"valid\"],[[4896,4934],\"valid\"],[[4935,4935],\"valid\"],[[4936,4954],\"valid\"],[[4955,4956],\"disallowed\"],[[4957,4958],\"valid\"],[[4959,4959],\"valid\"],[[4960,4960],\"valid\",[],\"NV8\"],[[4961,4988],\"valid\",[],\"NV8\"],[[4989,4991],\"disallowed\"],[[4992,5007],\"valid\"],[[5008,5017],\"valid\",[],\"NV8\"],[[5018,5023],\"disallowed\"],[[5024,5108],\"valid\"],[[5109,5109],\"valid\"],[[5110,5111],\"disallowed\"],[[5112,5112],\"mapped\",[5104]],[[5113,5113],\"mapped\",[5105]],[[5114,5114],\"mapped\",[5106]],[[5115,5115],\"mapped\",[5107]],[[5116,5116],\"mapped\",[5108]],[[5117,5117],\"mapped\",[5109]],[[5118,5119],\"disallowed\"],[[5120,5120],\"valid\",[],\"NV8\"],[[5121,5740],\"valid\"],[[5741,5742],\"valid\",[],\"NV8\"],[[5743,5750],\"valid\"],[[5751,5759],\"valid\"],[[5760,5760],\"disallowed\"],[[5761,5786],\"valid\"],[[5787,5788],\"valid\",[],\"NV8\"],[[5789,5791],\"disallowed\"],[[5792,5866],\"valid\"],[[5867,5872],\"valid\",[],\"NV8\"],[[5873,5880],\"valid\"],[[5881,5887],\"disallowed\"],[[5888,5900],\"valid\"],[[5901,5901],\"disallowed\"],[[5902,5908],\"valid\"],[[5909,5919],\"disallowed\"],[[5920,5940],\"valid\"],[[5941,5942],\"valid\",[],\"NV8\"],[[5943,5951],\"disallowed\"],[[5952,5971],\"valid\"],[[5972,5983],\"disallowed\"],[[5984,5996],\"valid\"],[[5997,5997],\"disallowed\"],[[5998,6000],\"valid\"],[[6001,6001],\"disallowed\"],[[6002,6003],\"valid\"],[[6004,6015],\"disallowed\"],[[6016,6067],\"valid\"],[[6068,6069],\"disallowed\"],[[6070,6099],\"valid\"],[[6100,6102],\"valid\",[],\"NV8\"],[[6103,6103],\"valid\"],[[6104,6107],\"valid\",[],\"NV8\"],[[6108,6108],\"valid\"],[[6109,6109],\"valid\"],[[6110,6111],\"disallowed\"],[[6112,6121],\"valid\"],[[6122,6127],\"disallowed\"],[[6128,6137],\"valid\",[],\"NV8\"],[[6138,6143],\"disallowed\"],[[6144,6149],\"valid\",[],\"NV8\"],[[6150,6150],\"disallowed\"],[[6151,6154],\"valid\",[],\"NV8\"],[[6155,6157],\"ignored\"],[[6158,6158],\"disallowed\"],[[6159,6159],\"disallowed\"],[[6160,6169],\"valid\"],[[6170,6175],\"disallowed\"],[[6176,6263],\"valid\"],[[6264,6271],\"disallowed\"],[[6272,6313],\"valid\"],[[6314,6314],\"valid\"],[[6315,6319],\"disallowed\"],[[6320,6389],\"valid\"],[[6390,6399],\"disallowed\"],[[6400,6428],\"valid\"],[[6429,6430],\"valid\"],[[6431,6431],\"disallowed\"],[[6432,6443],\"valid\"],[[6444,6447],\"disallowed\"],[[6448,6459],\"valid\"],[[6460,6463],\"disallowed\"],[[6464,6464],\"valid\",[],\"NV8\"],[[6465,6467],\"disallowed\"],[[6468,6469],\"valid\",[],\"NV8\"],[[6470,6509],\"valid\"],[[6510,6511],\"disallowed\"],[[6512,6516],\"valid\"],[[6517,6527],\"disallowed\"],[[6528,6569],\"valid\"],[[6570,6571],\"valid\"],[[6572,6575],\"disallowed\"],[[6576,6601],\"valid\"],[[6602,6607],\"disallowed\"],[[6608,6617],\"valid\"],[[6618,6618],\"valid\",[],\"XV8\"],[[6619,6621],\"disallowed\"],[[6622,6623],\"valid\",[],\"NV8\"],[[6624,6655],\"valid\",[],\"NV8\"],[[6656,6683],\"valid\"],[[6684,6685],\"disallowed\"],[[6686,6687],\"valid\",[],\"NV8\"],[[6688,6750],\"valid\"],[[6751,6751],\"disallowed\"],[[6752,6780],\"valid\"],[[6781,6782],\"disallowed\"],[[6783,6793],\"valid\"],[[6794,6799],\"disallowed\"],[[6800,6809],\"valid\"],[[6810,6815],\"disallowed\"],[[6816,6822],\"valid\",[],\"NV8\"],[[6823,6823],\"valid\"],[[6824,6829],\"valid\",[],\"NV8\"],[[6830,6831],\"disallowed\"],[[6832,6845],\"valid\"],[[6846,6846],\"valid\",[],\"NV8\"],[[6847,6911],\"disallowed\"],[[6912,6987],\"valid\"],[[6988,6991],\"disallowed\"],[[6992,7001],\"valid\"],[[7002,7018],\"valid\",[],\"NV8\"],[[7019,7027],\"valid\"],[[7028,7036],\"valid\",[],\"NV8\"],[[7037,7039],\"disallowed\"],[[7040,7082],\"valid\"],[[7083,7085],\"valid\"],[[7086,7097],\"valid\"],[[7098,7103],\"valid\"],[[7104,7155],\"valid\"],[[7156,7163],\"disallowed\"],[[7164,7167],\"valid\",[],\"NV8\"],[[7168,7223],\"valid\"],[[7224,7226],\"disallowed\"],[[7227,7231],\"valid\",[],\"NV8\"],[[7232,7241],\"valid\"],[[7242,7244],\"disallowed\"],[[7245,7293],\"valid\"],[[7294,7295],\"valid\",[],\"NV8\"],[[7296,7359],\"disallowed\"],[[7360,7367],\"valid\",[],\"NV8\"],[[7368,7375],\"disallowed\"],[[7376,7378],\"valid\"],[[7379,7379],\"valid\",[],\"NV8\"],[[7380,7410],\"valid\"],[[7411,7414],\"valid\"],[[7415,7415],\"disallowed\"],[[7416,7417],\"valid\"],[[7418,7423],\"disallowed\"],[[7424,7467],\"valid\"],[[7468,7468],\"mapped\",[97]],[[7469,7469],\"mapped\",[230]],[[7470,7470],\"mapped\",[98]],[[7471,7471],\"valid\"],[[7472,7472],\"mapped\",[100]],[[7473,7473],\"mapped\",[101]],[[7474,7474],\"mapped\",[477]],[[7475,7475],\"mapped\",[103]],[[7476,7476],\"mapped\",[104]],[[7477,7477],\"mapped\",[105]],[[7478,7478],\"mapped\",[106]],[[7479,7479],\"mapped\",[107]],[[7480,7480],\"mapped\",[108]],[[7481,7481],\"mapped\",[109]],[[7482,7482],\"mapped\",[110]],[[7483,7483],\"valid\"],[[7484,7484],\"mapped\",[111]],[[7485,7485],\"mapped\",[547]],[[7486,7486],\"mapped\",[112]],[[7487,7487],\"mapped\",[114]],[[7488,7488],\"mapped\",[116]],[[7489,7489],\"mapped\",[117]],[[7490,7490],\"mapped\",[119]],[[7491,7491],\"mapped\",[97]],[[7492,7492],\"mapped\",[592]],[[7493,7493],\"mapped\",[593]],[[7494,7494],\"mapped\",[7426]],[[7495,7495],\"mapped\",[98]],[[7496,7496],\"mapped\",[100]],[[7497,7497],\"mapped\",[101]],[[7498,7498],\"mapped\",[601]],[[7499,7499],\"mapped\",[603]],[[7500,7500],\"mapped\",[604]],[[7501,7501],\"mapped\",[103]],[[7502,7502],\"valid\"],[[7503,7503],\"mapped\",[107]],[[7504,7504],\"mapped\",[109]],[[7505,7505],\"mapped\",[331]],[[7506,7506],\"mapped\",[111]],[[7507,7507],\"mapped\",[596]],[[7508,7508],\"mapped\",[7446]],[[7509,7509],\"mapped\",[7447]],[[7510,7510],\"mapped\",[112]],[[7511,7511],\"mapped\",[116]],[[7512,7512],\"mapped\",[117]],[[7513,7513],\"mapped\",[7453]],[[7514,7514],\"mapped\",[623]],[[7515,7515],\"mapped\",[118]],[[7516,7516],\"mapped\",[7461]],[[7517,7517],\"mapped\",[946]],[[7518,7518],\"mapped\",[947]],[[7519,7519],\"mapped\",[948]],[[7520,7520],\"mapped\",[966]],[[7521,7521],\"mapped\",[967]],[[7522,7522],\"mapped\",[105]],[[7523,7523],\"mapped\",[114]],[[7524,7524],\"mapped\",[117]],[[7525,7525],\"mapped\",[118]],[[7526,7526],\"mapped\",[946]],[[7527,7527],\"mapped\",[947]],[[7528,7528],\"mapped\",[961]],[[7529,7529],\"mapped\",[966]],[[7530,7530],\"mapped\",[967]],[[7531,7531],\"valid\"],[[7532,7543],\"valid\"],[[7544,7544],\"mapped\",[1085]],[[7545,7578],\"valid\"],[[7579,7579],\"mapped\",[594]],[[7580,7580],\"mapped\",[99]],[[7581,7581],\"mapped\",[597]],[[7582,7582],\"mapped\",[240]],[[7583,7583],\"mapped\",[604]],[[7584,7584],\"mapped\",[102]],[[7585,7585],\"mapped\",[607]],[[7586,7586],\"mapped\",[609]],[[7587,7587],\"mapped\",[613]],[[7588,7588],\"mapped\",[616]],[[7589,7589],\"mapped\",[617]],[[7590,7590],\"mapped\",[618]],[[7591,7591],\"mapped\",[7547]],[[7592,7592],\"mapped\",[669]],[[7593,7593],\"mapped\",[621]],[[7594,7594],\"mapped\",[7557]],[[7595,7595],\"mapped\",[671]],[[7596,7596],\"mapped\",[625]],[[7597,7597],\"mapped\",[624]],[[7598,7598],\"mapped\",[626]],[[7599,7599],\"mapped\",[627]],[[7600,7600],\"mapped\",[628]],[[7601,7601],\"mapped\",[629]],[[7602,7602],\"mapped\",[632]],[[7603,7603],\"mapped\",[642]],[[7604,7604],\"mapped\",[643]],[[7605,7605],\"mapped\",[427]],[[7606,7606],\"mapped\",[649]],[[7607,7607],\"mapped\",[650]],[[7608,7608],\"mapped\",[7452]],[[7609,7609],\"mapped\",[651]],[[7610,7610],\"mapped\",[652]],[[7611,7611],\"mapped\",[122]],[[7612,7612],\"mapped\",[656]],[[7613,7613],\"mapped\",[657]],[[7614,7614],\"mapped\",[658]],[[7615,7615],\"mapped\",[952]],[[7616,7619],\"valid\"],[[7620,7626],\"valid\"],[[7627,7654],\"valid\"],[[7655,7669],\"valid\"],[[7670,7675],\"disallowed\"],[[7676,7676],\"valid\"],[[7677,7677],\"valid\"],[[7678,7679],\"valid\"],[[7680,7680],\"mapped\",[7681]],[[7681,7681],\"valid\"],[[7682,7682],\"mapped\",[7683]],[[7683,7683],\"valid\"],[[7684,7684],\"mapped\",[7685]],[[7685,7685],\"valid\"],[[7686,7686],\"mapped\",[7687]],[[7687,7687],\"valid\"],[[7688,7688],\"mapped\",[7689]],[[7689,7689],\"valid\"],[[7690,7690],\"mapped\",[7691]],[[7691,7691],\"valid\"],[[7692,7692],\"mapped\",[7693]],[[7693,7693],\"valid\"],[[7694,7694],\"mapped\",[7695]],[[7695,7695],\"valid\"],[[7696,7696],\"mapped\",[7697]],[[7697,7697],\"valid\"],[[7698,7698],\"mapped\",[7699]],[[7699,7699],\"valid\"],[[7700,7700],\"mapped\",[7701]],[[7701,7701],\"valid\"],[[7702,7702],\"mapped\",[7703]],[[7703,7703],\"valid\"],[[7704,7704],\"mapped\",[7705]],[[7705,7705],\"valid\"],[[7706,7706],\"mapped\",[7707]],[[7707,7707],\"valid\"],[[7708,7708],\"mapped\",[7709]],[[7709,7709],\"valid\"],[[7710,7710],\"mapped\",[7711]],[[7711,7711],\"valid\"],[[7712,7712],\"mapped\",[7713]],[[7713,7713],\"valid\"],[[7714,7714],\"mapped\",[7715]],[[7715,7715],\"valid\"],[[7716,7716],\"mapped\",[7717]],[[7717,7717],\"valid\"],[[7718,7718],\"mapped\",[7719]],[[7719,7719],\"valid\"],[[7720,7720],\"mapped\",[7721]],[[7721,7721],\"valid\"],[[7722,7722],\"mapped\",[7723]],[[7723,7723],\"valid\"],[[7724,7724],\"mapped\",[7725]],[[7725,7725],\"valid\"],[[7726,7726],\"mapped\",[7727]],[[7727,7727],\"valid\"],[[7728,7728],\"mapped\",[7729]],[[7729,7729],\"valid\"],[[7730,7730],\"mapped\",[7731]],[[7731,7731],\"valid\"],[[7732,7732],\"mapped\",[7733]],[[7733,7733],\"valid\"],[[7734,7734],\"mapped\",[7735]],[[7735,7735],\"valid\"],[[7736,7736],\"mapped\",[7737]],[[7737,7737],\"valid\"],[[7738,7738],\"mapped\",[7739]],[[7739,7739],\"valid\"],[[7740,7740],\"mapped\",[7741]],[[7741,7741],\"valid\"],[[7742,7742],\"mapped\",[7743]],[[7743,7743],\"valid\"],[[7744,7744],\"mapped\",[7745]],[[7745,7745],\"valid\"],[[7746,7746],\"mapped\",[7747]],[[7747,7747],\"valid\"],[[7748,7748],\"mapped\",[7749]],[[7749,7749],\"valid\"],[[7750,7750],\"mapped\",[7751]],[[7751,7751],\"valid\"],[[7752,7752],\"mapped\",[7753]],[[7753,7753],\"valid\"],[[7754,7754],\"mapped\",[7755]],[[7755,7755],\"valid\"],[[7756,7756],\"mapped\",[7757]],[[7757,7757],\"valid\"],[[7758,7758],\"mapped\",[7759]],[[7759,7759],\"valid\"],[[7760,7760],\"mapped\",[7761]],[[7761,7761],\"valid\"],[[7762,7762],\"mapped\",[7763]],[[7763,7763],\"valid\"],[[7764,7764],\"mapped\",[7765]],[[7765,7765],\"valid\"],[[7766,7766],\"mapped\",[7767]],[[7767,7767],\"valid\"],[[7768,7768],\"mapped\",[7769]],[[7769,7769],\"valid\"],[[7770,7770],\"mapped\",[7771]],[[7771,7771],\"valid\"],[[7772,7772],\"mapped\",[7773]],[[7773,7773],\"valid\"],[[7774,7774],\"mapped\",[7775]],[[7775,7775],\"valid\"],[[7776,7776],\"mapped\",[7777]],[[7777,7777],\"valid\"],[[7778,7778],\"mapped\",[7779]],[[7779,7779],\"valid\"],[[7780,7780],\"mapped\",[7781]],[[7781,7781],\"valid\"],[[7782,7782],\"mapped\",[7783]],[[7783,7783],\"valid\"],[[7784,7784],\"mapped\",[7785]],[[7785,7785],\"valid\"],[[7786,7786],\"mapped\",[7787]],[[7787,7787],\"valid\"],[[7788,7788],\"mapped\",[7789]],[[7789,7789],\"valid\"],[[7790,7790],\"mapped\",[7791]],[[7791,7791],\"valid\"],[[7792,7792],\"mapped\",[7793]],[[7793,7793],\"valid\"],[[7794,7794],\"mapped\",[7795]],[[7795,7795],\"valid\"],[[7796,7796],\"mapped\",[7797]],[[7797,7797],\"valid\"],[[7798,7798],\"mapped\",[7799]],[[7799,7799],\"valid\"],[[7800,7800],\"mapped\",[7801]],[[7801,7801],\"valid\"],[[7802,7802],\"mapped\",[7803]],[[7803,7803],\"valid\"],[[7804,7804],\"mapped\",[7805]],[[7805,7805],\"valid\"],[[7806,7806],\"mapped\",[7807]],[[7807,7807],\"valid\"],[[7808,7808],\"mapped\",[7809]],[[7809,7809],\"valid\"],[[7810,7810],\"mapped\",[7811]],[[7811,7811],\"valid\"],[[7812,7812],\"mapped\",[7813]],[[7813,7813],\"valid\"],[[7814,7814],\"mapped\",[7815]],[[7815,7815],\"valid\"],[[7816,7816],\"mapped\",[7817]],[[7817,7817],\"valid\"],[[7818,7818],\"mapped\",[7819]],[[7819,7819],\"valid\"],[[7820,7820],\"mapped\",[7821]],[[7821,7821],\"valid\"],[[7822,7822],\"mapped\",[7823]],[[7823,7823],\"valid\"],[[7824,7824],\"mapped\",[7825]],[[7825,7825],\"valid\"],[[7826,7826],\"mapped\",[7827]],[[7827,7827],\"valid\"],[[7828,7828],\"mapped\",[7829]],[[7829,7833],\"valid\"],[[7834,7834],\"mapped\",[97,702]],[[7835,7835],\"mapped\",[7777]],[[7836,7837],\"valid\"],[[7838,7838],\"mapped\",[115,115]],[[7839,7839],\"valid\"],[[7840,7840],\"mapped\",[7841]],[[7841,7841],\"valid\"],[[7842,7842],\"mapped\",[7843]],[[7843,7843],\"valid\"],[[7844,7844],\"mapped\",[7845]],[[7845,7845],\"valid\"],[[7846,7846],\"mapped\",[7847]],[[7847,7847],\"valid\"],[[7848,7848],\"mapped\",[7849]],[[7849,7849],\"valid\"],[[7850,7850],\"mapped\",[7851]],[[7851,7851],\"valid\"],[[7852,7852],\"mapped\",[7853]],[[7853,7853],\"valid\"],[[7854,7854],\"mapped\",[7855]],[[7855,7855],\"valid\"],[[7856,7856],\"mapped\",[7857]],[[7857,7857],\"valid\"],[[7858,7858],\"mapped\",[7859]],[[7859,7859],\"valid\"],[[7860,7860],\"mapped\",[7861]],[[7861,7861],\"valid\"],[[7862,7862],\"mapped\",[7863]],[[7863,7863],\"valid\"],[[7864,7864],\"mapped\",[7865]],[[7865,7865],\"valid\"],[[7866,7866],\"mapped\",[7867]],[[7867,7867],\"valid\"],[[7868,7868],\"mapped\",[7869]],[[7869,7869],\"valid\"],[[7870,7870],\"mapped\",[7871]],[[7871,7871],\"valid\"],[[7872,7872],\"mapped\",[7873]],[[7873,7873],\"valid\"],[[7874,7874],\"mapped\",[7875]],[[7875,7875],\"valid\"],[[7876,7876],\"mapped\",[7877]],[[7877,7877],\"valid\"],[[7878,7878],\"mapped\",[7879]],[[7879,7879],\"valid\"],[[7880,7880],\"mapped\",[7881]],[[7881,7881],\"valid\"],[[7882,7882],\"mapped\",[7883]],[[7883,7883],\"valid\"],[[7884,7884],\"mapped\",[7885]],[[7885,7885],\"valid\"],[[7886,7886],\"mapped\",[7887]],[[7887,7887],\"valid\"],[[7888,7888],\"mapped\",[7889]],[[7889,7889],\"valid\"],[[7890,7890],\"mapped\",[7891]],[[7891,7891],\"valid\"],[[7892,7892],\"mapped\",[7893]],[[7893,7893],\"valid\"],[[7894,7894],\"mapped\",[7895]],[[7895,7895],\"valid\"],[[7896,7896],\"mapped\",[7897]],[[7897,7897],\"valid\"],[[7898,7898],\"mapped\",[7899]],[[7899,7899],\"valid\"],[[7900,7900],\"mapped\",[7901]],[[7901,7901],\"valid\"],[[7902,7902],\"mapped\",[7903]],[[7903,7903],\"valid\"],[[7904,7904],\"mapped\",[7905]],[[7905,7905],\"valid\"],[[7906,7906],\"mapped\",[7907]],[[7907,7907],\"valid\"],[[7908,7908],\"mapped\",[7909]],[[7909,7909],\"valid\"],[[7910,7910],\"mapped\",[7911]],[[7911,7911],\"valid\"],[[7912,7912],\"mapped\",[7913]],[[7913,7913],\"valid\"],[[7914,7914],\"mapped\",[7915]],[[7915,7915],\"valid\"],[[7916,7916],\"mapped\",[7917]],[[7917,7917],\"valid\"],[[7918,7918],\"mapped\",[7919]],[[7919,7919],\"valid\"],[[7920,7920],\"mapped\",[7921]],[[7921,7921],\"valid\"],[[7922,7922],\"mapped\",[7923]],[[7923,7923],\"valid\"],[[7924,7924],\"mapped\",[7925]],[[7925,7925],\"valid\"],[[7926,7926],\"mapped\",[7927]],[[7927,7927],\"valid\"],[[7928,7928],\"mapped\",[7929]],[[7929,7929],\"valid\"],[[7930,7930],\"mapped\",[7931]],[[7931,7931],\"valid\"],[[7932,7932],\"mapped\",[7933]],[[7933,7933],\"valid\"],[[7934,7934],\"mapped\",[7935]],[[7935,7935],\"valid\"],[[7936,7943],\"valid\"],[[7944,7944],\"mapped\",[7936]],[[7945,7945],\"mapped\",[7937]],[[7946,7946],\"mapped\",[7938]],[[7947,7947],\"mapped\",[7939]],[[7948,7948],\"mapped\",[7940]],[[7949,7949],\"mapped\",[7941]],[[7950,7950],\"mapped\",[7942]],[[7951,7951],\"mapped\",[7943]],[[7952,7957],\"valid\"],[[7958,7959],\"disallowed\"],[[7960,7960],\"mapped\",[7952]],[[7961,7961],\"mapped\",[7953]],[[7962,7962],\"mapped\",[7954]],[[7963,7963],\"mapped\",[7955]],[[7964,7964],\"mapped\",[7956]],[[7965,7965],\"mapped\",[7957]],[[7966,7967],\"disallowed\"],[[7968,7975],\"valid\"],[[7976,7976],\"mapped\",[7968]],[[7977,7977],\"mapped\",[7969]],[[7978,7978],\"mapped\",[7970]],[[7979,7979],\"mapped\",[7971]],[[7980,7980],\"mapped\",[7972]],[[7981,7981],\"mapped\",[7973]],[[7982,7982],\"mapped\",[7974]],[[7983,7983],\"mapped\",[7975]],[[7984,7991],\"valid\"],[[7992,7992],\"mapped\",[7984]],[[7993,7993],\"mapped\",[7985]],[[7994,7994],\"mapped\",[7986]],[[7995,7995],\"mapped\",[7987]],[[7996,7996],\"mapped\",[7988]],[[7997,7997],\"mapped\",[7989]],[[7998,7998],\"mapped\",[7990]],[[7999,7999],\"mapped\",[7991]],[[8000,8005],\"valid\"],[[8006,8007],\"disallowed\"],[[8008,8008],\"mapped\",[8000]],[[8009,8009],\"mapped\",[8001]],[[8010,8010],\"mapped\",[8002]],[[8011,8011],\"mapped\",[8003]],[[8012,8012],\"mapped\",[8004]],[[8013,8013],\"mapped\",[8005]],[[8014,8015],\"disallowed\"],[[8016,8023],\"valid\"],[[8024,8024],\"disallowed\"],[[8025,8025],\"mapped\",[8017]],[[8026,8026],\"disallowed\"],[[8027,8027],\"mapped\",[8019]],[[8028,8028],\"disallowed\"],[[8029,8029],\"mapped\",[8021]],[[8030,8030],\"disallowed\"],[[8031,8031],\"mapped\",[8023]],[[8032,8039],\"valid\"],[[8040,8040],\"mapped\",[8032]],[[8041,8041],\"mapped\",[8033]],[[8042,8042],\"mapped\",[8034]],[[8043,8043],\"mapped\",[8035]],[[8044,8044],\"mapped\",[8036]],[[8045,8045],\"mapped\",[8037]],[[8046,8046],\"mapped\",[8038]],[[8047,8047],\"mapped\",[8039]],[[8048,8048],\"valid\"],[[8049,8049],\"mapped\",[940]],[[8050,8050],\"valid\"],[[8051,8051],\"mapped\",[941]],[[8052,8052],\"valid\"],[[8053,8053],\"mapped\",[942]],[[8054,8054],\"valid\"],[[8055,8055],\"mapped\",[943]],[[8056,8056],\"valid\"],[[8057,8057],\"mapped\",[972]],[[8058,8058],\"valid\"],[[8059,8059],\"mapped\",[973]],[[8060,8060],\"valid\"],[[8061,8061],\"mapped\",[974]],[[8062,8063],\"disallowed\"],[[8064,8064],\"mapped\",[7936,953]],[[8065,8065],\"mapped\",[7937,953]],[[8066,8066],\"mapped\",[7938,953]],[[8067,8067],\"mapped\",[7939,953]],[[8068,8068],\"mapped\",[7940,953]],[[8069,8069],\"mapped\",[7941,953]],[[8070,8070],\"mapped\",[7942,953]],[[8071,8071],\"mapped\",[7943,953]],[[8072,8072],\"mapped\",[7936,953]],[[8073,8073],\"mapped\",[7937,953]],[[8074,8074],\"mapped\",[7938,953]],[[8075,8075],\"mapped\",[7939,953]],[[8076,8076],\"mapped\",[7940,953]],[[8077,8077],\"mapped\",[7941,953]],[[8078,8078],\"mapped\",[7942,953]],[[8079,8079],\"mapped\",[7943,953]],[[8080,8080],\"mapped\",[7968,953]],[[8081,8081],\"mapped\",[7969,953]],[[8082,8082],\"mapped\",[7970,953]],[[8083,8083],\"mapped\",[7971,953]],[[8084,8084],\"mapped\",[7972,953]],[[8085,8085],\"mapped\",[7973,953]],[[8086,8086],\"mapped\",[7974,953]],[[8087,8087],\"mapped\",[7975,953]],[[8088,8088],\"mapped\",[7968,953]],[[8089,8089],\"mapped\",[7969,953]],[[8090,8090],\"mapped\",[7970,953]],[[8091,8091],\"mapped\",[7971,953]],[[8092,8092],\"mapped\",[7972,953]],[[8093,8093],\"mapped\",[7973,953]],[[8094,8094],\"mapped\",[7974,953]],[[8095,8095],\"mapped\",[7975,953]],[[8096,8096],\"mapped\",[8032,953]],[[8097,8097],\"mapped\",[8033,953]],[[8098,8098],\"mapped\",[8034,953]],[[8099,8099],\"mapped\",[8035,953]],[[8100,8100],\"mapped\",[8036,953]],[[8101,8101],\"mapped\",[8037,953]],[[8102,8102],\"mapped\",[8038,953]],[[8103,8103],\"mapped\",[8039,953]],[[8104,8104],\"mapped\",[8032,953]],[[8105,8105],\"mapped\",[8033,953]],[[8106,8106],\"mapped\",[8034,953]],[[8107,8107],\"mapped\",[8035,953]],[[8108,8108],\"mapped\",[8036,953]],[[8109,8109],\"mapped\",[8037,953]],[[8110,8110],\"mapped\",[8038,953]],[[8111,8111],\"mapped\",[8039,953]],[[8112,8113],\"valid\"],[[8114,8114],\"mapped\",[8048,953]],[[8115,8115],\"mapped\",[945,953]],[[8116,8116],\"mapped\",[940,953]],[[8117,8117],\"disallowed\"],[[8118,8118],\"valid\"],[[8119,8119],\"mapped\",[8118,953]],[[8120,8120],\"mapped\",[8112]],[[8121,8121],\"mapped\",[8113]],[[8122,8122],\"mapped\",[8048]],[[8123,8123],\"mapped\",[940]],[[8124,8124],\"mapped\",[945,953]],[[8125,8125],\"disallowed_STD3_mapped\",[32,787]],[[8126,8126],\"mapped\",[953]],[[8127,8127],\"disallowed_STD3_mapped\",[32,787]],[[8128,8128],\"disallowed_STD3_mapped\",[32,834]],[[8129,8129],\"disallowed_STD3_mapped\",[32,776,834]],[[8130,8130],\"mapped\",[8052,953]],[[8131,8131],\"mapped\",[951,953]],[[8132,8132],\"mapped\",[942,953]],[[8133,8133],\"disallowed\"],[[8134,8134],\"valid\"],[[8135,8135],\"mapped\",[8134,953]],[[8136,8136],\"mapped\",[8050]],[[8137,8137],\"mapped\",[941]],[[8138,8138],\"mapped\",[8052]],[[8139,8139],\"mapped\",[942]],[[8140,8140],\"mapped\",[951,953]],[[8141,8141],\"disallowed_STD3_mapped\",[32,787,768]],[[8142,8142],\"disallowed_STD3_mapped\",[32,787,769]],[[8143,8143],\"disallowed_STD3_mapped\",[32,787,834]],[[8144,8146],\"valid\"],[[8147,8147],\"mapped\",[912]],[[8148,8149],\"disallowed\"],[[8150,8151],\"valid\"],[[8152,8152],\"mapped\",[8144]],[[8153,8153],\"mapped\",[8145]],[[8154,8154],\"mapped\",[8054]],[[8155,8155],\"mapped\",[943]],[[8156,8156],\"disallowed\"],[[8157,8157],\"disallowed_STD3_mapped\",[32,788,768]],[[8158,8158],\"disallowed_STD3_mapped\",[32,788,769]],[[8159,8159],\"disallowed_STD3_mapped\",[32,788,834]],[[8160,8162],\"valid\"],[[8163,8163],\"mapped\",[944]],[[8164,8167],\"valid\"],[[8168,8168],\"mapped\",[8160]],[[8169,8169],\"mapped\",[8161]],[[8170,8170],\"mapped\",[8058]],[[8171,8171],\"mapped\",[973]],[[8172,8172],\"mapped\",[8165]],[[8173,8173],\"disallowed_STD3_mapped\",[32,776,768]],[[8174,8174],\"disallowed_STD3_mapped\",[32,776,769]],[[8175,8175],\"disallowed_STD3_mapped\",[96]],[[8176,8177],\"disallowed\"],[[8178,8178],\"mapped\",[8060,953]],[[8179,8179],\"mapped\",[969,953]],[[8180,8180],\"mapped\",[974,953]],[[8181,8181],\"disallowed\"],[[8182,8182],\"valid\"],[[8183,8183],\"mapped\",[8182,953]],[[8184,8184],\"mapped\",[8056]],[[8185,8185],\"mapped\",[972]],[[8186,8186],\"mapped\",[8060]],[[8187,8187],\"mapped\",[974]],[[8188,8188],\"mapped\",[969,953]],[[8189,8189],\"disallowed_STD3_mapped\",[32,769]],[[8190,8190],\"disallowed_STD3_mapped\",[32,788]],[[8191,8191],\"disallowed\"],[[8192,8202],\"disallowed_STD3_mapped\",[32]],[[8203,8203],\"ignored\"],[[8204,8205],\"deviation\",[]],[[8206,8207],\"disallowed\"],[[8208,8208],\"valid\",[],\"NV8\"],[[8209,8209],\"mapped\",[8208]],[[8210,8214],\"valid\",[],\"NV8\"],[[8215,8215],\"disallowed_STD3_mapped\",[32,819]],[[8216,8227],\"valid\",[],\"NV8\"],[[8228,8230],\"disallowed\"],[[8231,8231],\"valid\",[],\"NV8\"],[[8232,8238],\"disallowed\"],[[8239,8239],\"disallowed_STD3_mapped\",[32]],[[8240,8242],\"valid\",[],\"NV8\"],[[8243,8243],\"mapped\",[8242,8242]],[[8244,8244],\"mapped\",[8242,8242,8242]],[[8245,8245],\"valid\",[],\"NV8\"],[[8246,8246],\"mapped\",[8245,8245]],[[8247,8247],\"mapped\",[8245,8245,8245]],[[8248,8251],\"valid\",[],\"NV8\"],[[8252,8252],\"disallowed_STD3_mapped\",[33,33]],[[8253,8253],\"valid\",[],\"NV8\"],[[8254,8254],\"disallowed_STD3_mapped\",[32,773]],[[8255,8262],\"valid\",[],\"NV8\"],[[8263,8263],\"disallowed_STD3_mapped\",[63,63]],[[8264,8264],\"disallowed_STD3_mapped\",[63,33]],[[8265,8265],\"disallowed_STD3_mapped\",[33,63]],[[8266,8269],\"valid\",[],\"NV8\"],[[8270,8274],\"valid\",[],\"NV8\"],[[8275,8276],\"valid\",[],\"NV8\"],[[8277,8278],\"valid\",[],\"NV8\"],[[8279,8279],\"mapped\",[8242,8242,8242,8242]],[[8280,8286],\"valid\",[],\"NV8\"],[[8287,8287],\"disallowed_STD3_mapped\",[32]],[[8288,8288],\"ignored\"],[[8289,8291],\"disallowed\"],[[8292,8292],\"ignored\"],[[8293,8293],\"disallowed\"],[[8294,8297],\"disallowed\"],[[8298,8303],\"disallowed\"],[[8304,8304],\"mapped\",[48]],[[8305,8305],\"mapped\",[105]],[[8306,8307],\"disallowed\"],[[8308,8308],\"mapped\",[52]],[[8309,8309],\"mapped\",[53]],[[8310,8310],\"mapped\",[54]],[[8311,8311],\"mapped\",[55]],[[8312,8312],\"mapped\",[56]],[[8313,8313],\"mapped\",[57]],[[8314,8314],\"disallowed_STD3_mapped\",[43]],[[8315,8315],\"mapped\",[8722]],[[8316,8316],\"disallowed_STD3_mapped\",[61]],[[8317,8317],\"disallowed_STD3_mapped\",[40]],[[8318,8318],\"disallowed_STD3_mapped\",[41]],[[8319,8319],\"mapped\",[110]],[[8320,8320],\"mapped\",[48]],[[8321,8321],\"mapped\",[49]],[[8322,8322],\"mapped\",[50]],[[8323,8323],\"mapped\",[51]],[[8324,8324],\"mapped\",[52]],[[8325,8325],\"mapped\",[53]],[[8326,8326],\"mapped\",[54]],[[8327,8327],\"mapped\",[55]],[[8328,8328],\"mapped\",[56]],[[8329,8329],\"mapped\",[57]],[[8330,8330],\"disallowed_STD3_mapped\",[43]],[[8331,8331],\"mapped\",[8722]],[[8332,8332],\"disallowed_STD3_mapped\",[61]],[[8333,8333],\"disallowed_STD3_mapped\",[40]],[[8334,8334],\"disallowed_STD3_mapped\",[41]],[[8335,8335],\"disallowed\"],[[8336,8336],\"mapped\",[97]],[[8337,8337],\"mapped\",[101]],[[8338,8338],\"mapped\",[111]],[[8339,8339],\"mapped\",[120]],[[8340,8340],\"mapped\",[601]],[[8341,8341],\"mapped\",[104]],[[8342,8342],\"mapped\",[107]],[[8343,8343],\"mapped\",[108]],[[8344,8344],\"mapped\",[109]],[[8345,8345],\"mapped\",[110]],[[8346,8346],\"mapped\",[112]],[[8347,8347],\"mapped\",[115]],[[8348,8348],\"mapped\",[116]],[[8349,8351],\"disallowed\"],[[8352,8359],\"valid\",[],\"NV8\"],[[8360,8360],\"mapped\",[114,115]],[[8361,8362],\"valid\",[],\"NV8\"],[[8363,8363],\"valid\",[],\"NV8\"],[[8364,8364],\"valid\",[],\"NV8\"],[[8365,8367],\"valid\",[],\"NV8\"],[[8368,8369],\"valid\",[],\"NV8\"],[[8370,8373],\"valid\",[],\"NV8\"],[[8374,8376],\"valid\",[],\"NV8\"],[[8377,8377],\"valid\",[],\"NV8\"],[[8378,8378],\"valid\",[],\"NV8\"],[[8379,8381],\"valid\",[],\"NV8\"],[[8382,8382],\"valid\",[],\"NV8\"],[[8383,8399],\"disallowed\"],[[8400,8417],\"valid\",[],\"NV8\"],[[8418,8419],\"valid\",[],\"NV8\"],[[8420,8426],\"valid\",[],\"NV8\"],[[8427,8427],\"valid\",[],\"NV8\"],[[8428,8431],\"valid\",[],\"NV8\"],[[8432,8432],\"valid\",[],\"NV8\"],[[8433,8447],\"disallowed\"],[[8448,8448],\"disallowed_STD3_mapped\",[97,47,99]],[[8449,8449],\"disallowed_STD3_mapped\",[97,47,115]],[[8450,8450],\"mapped\",[99]],[[8451,8451],\"mapped\",[176,99]],[[8452,8452],\"valid\",[],\"NV8\"],[[8453,8453],\"disallowed_STD3_mapped\",[99,47,111]],[[8454,8454],\"disallowed_STD3_mapped\",[99,47,117]],[[8455,8455],\"mapped\",[603]],[[8456,8456],\"valid\",[],\"NV8\"],[[8457,8457],\"mapped\",[176,102]],[[8458,8458],\"mapped\",[103]],[[8459,8462],\"mapped\",[104]],[[8463,8463],\"mapped\",[295]],[[8464,8465],\"mapped\",[105]],[[8466,8467],\"mapped\",[108]],[[8468,8468],\"valid\",[],\"NV8\"],[[8469,8469],\"mapped\",[110]],[[8470,8470],\"mapped\",[110,111]],[[8471,8472],\"valid\",[],\"NV8\"],[[8473,8473],\"mapped\",[112]],[[8474,8474],\"mapped\",[113]],[[8475,8477],\"mapped\",[114]],[[8478,8479],\"valid\",[],\"NV8\"],[[8480,8480],\"mapped\",[115,109]],[[8481,8481],\"mapped\",[116,101,108]],[[8482,8482],\"mapped\",[116,109]],[[8483,8483],\"valid\",[],\"NV8\"],[[8484,8484],\"mapped\",[122]],[[8485,8485],\"valid\",[],\"NV8\"],[[8486,8486],\"mapped\",[969]],[[8487,8487],\"valid\",[],\"NV8\"],[[8488,8488],\"mapped\",[122]],[[8489,8489],\"valid\",[],\"NV8\"],[[8490,8490],\"mapped\",[107]],[[8491,8491],\"mapped\",[229]],[[8492,8492],\"mapped\",[98]],[[8493,8493],\"mapped\",[99]],[[8494,8494],\"valid\",[],\"NV8\"],[[8495,8496],\"mapped\",[101]],[[8497,8497],\"mapped\",[102]],[[8498,8498],\"disallowed\"],[[8499,8499],\"mapped\",[109]],[[8500,8500],\"mapped\",[111]],[[8501,8501],\"mapped\",[1488]],[[8502,8502],\"mapped\",[1489]],[[8503,8503],\"mapped\",[1490]],[[8504,8504],\"mapped\",[1491]],[[8505,8505],\"mapped\",[105]],[[8506,8506],\"valid\",[],\"NV8\"],[[8507,8507],\"mapped\",[102,97,120]],[[8508,8508],\"mapped\",[960]],[[8509,8510],\"mapped\",[947]],[[8511,8511],\"mapped\",[960]],[[8512,8512],\"mapped\",[8721]],[[8513,8516],\"valid\",[],\"NV8\"],[[8517,8518],\"mapped\",[100]],[[8519,8519],\"mapped\",[101]],[[8520,8520],\"mapped\",[105]],[[8521,8521],\"mapped\",[106]],[[8522,8523],\"valid\",[],\"NV8\"],[[8524,8524],\"valid\",[],\"NV8\"],[[8525,8525],\"valid\",[],\"NV8\"],[[8526,8526],\"valid\"],[[8527,8527],\"valid\",[],\"NV8\"],[[8528,8528],\"mapped\",[49,8260,55]],[[8529,8529],\"mapped\",[49,8260,57]],[[8530,8530],\"mapped\",[49,8260,49,48]],[[8531,8531],\"mapped\",[49,8260,51]],[[8532,8532],\"mapped\",[50,8260,51]],[[8533,8533],\"mapped\",[49,8260,53]],[[8534,8534],\"mapped\",[50,8260,53]],[[8535,8535],\"mapped\",[51,8260,53]],[[8536,8536],\"mapped\",[52,8260,53]],[[8537,8537],\"mapped\",[49,8260,54]],[[8538,8538],\"mapped\",[53,8260,54]],[[8539,8539],\"mapped\",[49,8260,56]],[[8540,8540],\"mapped\",[51,8260,56]],[[8541,8541],\"mapped\",[53,8260,56]],[[8542,8542],\"mapped\",[55,8260,56]],[[8543,8543],\"mapped\",[49,8260]],[[8544,8544],\"mapped\",[105]],[[8545,8545],\"mapped\",[105,105]],[[8546,8546],\"mapped\",[105,105,105]],[[8547,8547],\"mapped\",[105,118]],[[8548,8548],\"mapped\",[118]],[[8549,8549],\"mapped\",[118,105]],[[8550,8550],\"mapped\",[118,105,105]],[[8551,8551],\"mapped\",[118,105,105,105]],[[8552,8552],\"mapped\",[105,120]],[[8553,8553],\"mapped\",[120]],[[8554,8554],\"mapped\",[120,105]],[[8555,8555],\"mapped\",[120,105,105]],[[8556,8556],\"mapped\",[108]],[[8557,8557],\"mapped\",[99]],[[8558,8558],\"mapped\",[100]],[[8559,8559],\"mapped\",[109]],[[8560,8560],\"mapped\",[105]],[[8561,8561],\"mapped\",[105,105]],[[8562,8562],\"mapped\",[105,105,105]],[[8563,8563],\"mapped\",[105,118]],[[8564,8564],\"mapped\",[118]],[[8565,8565],\"mapped\",[118,105]],[[8566,8566],\"mapped\",[118,105,105]],[[8567,8567],\"mapped\",[118,105,105,105]],[[8568,8568],\"mapped\",[105,120]],[[8569,8569],\"mapped\",[120]],[[8570,8570],\"mapped\",[120,105]],[[8571,8571],\"mapped\",[120,105,105]],[[8572,8572],\"mapped\",[108]],[[8573,8573],\"mapped\",[99]],[[8574,8574],\"mapped\",[100]],[[8575,8575],\"mapped\",[109]],[[8576,8578],\"valid\",[],\"NV8\"],[[8579,8579],\"disallowed\"],[[8580,8580],\"valid\"],[[8581,8584],\"valid\",[],\"NV8\"],[[8585,8585],\"mapped\",[48,8260,51]],[[8586,8587],\"valid\",[],\"NV8\"],[[8588,8591],\"disallowed\"],[[8592,8682],\"valid\",[],\"NV8\"],[[8683,8691],\"valid\",[],\"NV8\"],[[8692,8703],\"valid\",[],\"NV8\"],[[8704,8747],\"valid\",[],\"NV8\"],[[8748,8748],\"mapped\",[8747,8747]],[[8749,8749],\"mapped\",[8747,8747,8747]],[[8750,8750],\"valid\",[],\"NV8\"],[[8751,8751],\"mapped\",[8750,8750]],[[8752,8752],\"mapped\",[8750,8750,8750]],[[8753,8799],\"valid\",[],\"NV8\"],[[8800,8800],\"disallowed_STD3_valid\"],[[8801,8813],\"valid\",[],\"NV8\"],[[8814,8815],\"disallowed_STD3_valid\"],[[8816,8945],\"valid\",[],\"NV8\"],[[8946,8959],\"valid\",[],\"NV8\"],[[8960,8960],\"valid\",[],\"NV8\"],[[8961,8961],\"valid\",[],\"NV8\"],[[8962,9000],\"valid\",[],\"NV8\"],[[9001,9001],\"mapped\",[12296]],[[9002,9002],\"mapped\",[12297]],[[9003,9082],\"valid\",[],\"NV8\"],[[9083,9083],\"valid\",[],\"NV8\"],[[9084,9084],\"valid\",[],\"NV8\"],[[9085,9114],\"valid\",[],\"NV8\"],[[9115,9166],\"valid\",[],\"NV8\"],[[9167,9168],\"valid\",[],\"NV8\"],[[9169,9179],\"valid\",[],\"NV8\"],[[9180,9191],\"valid\",[],\"NV8\"],[[9192,9192],\"valid\",[],\"NV8\"],[[9193,9203],\"valid\",[],\"NV8\"],[[9204,9210],\"valid\",[],\"NV8\"],[[9211,9215],\"disallowed\"],[[9216,9252],\"valid\",[],\"NV8\"],[[9253,9254],\"valid\",[],\"NV8\"],[[9255,9279],\"disallowed\"],[[9280,9290],\"valid\",[],\"NV8\"],[[9291,9311],\"disallowed\"],[[9312,9312],\"mapped\",[49]],[[9313,9313],\"mapped\",[50]],[[9314,9314],\"mapped\",[51]],[[9315,9315],\"mapped\",[52]],[[9316,9316],\"mapped\",[53]],[[9317,9317],\"mapped\",[54]],[[9318,9318],\"mapped\",[55]],[[9319,9319],\"mapped\",[56]],[[9320,9320],\"mapped\",[57]],[[9321,9321],\"mapped\",[49,48]],[[9322,9322],\"mapped\",[49,49]],[[9323,9323],\"mapped\",[49,50]],[[9324,9324],\"mapped\",[49,51]],[[9325,9325],\"mapped\",[49,52]],[[9326,9326],\"mapped\",[49,53]],[[9327,9327],\"mapped\",[49,54]],[[9328,9328],\"mapped\",[49,55]],[[9329,9329],\"mapped\",[49,56]],[[9330,9330],\"mapped\",[49,57]],[[9331,9331],\"mapped\",[50,48]],[[9332,9332],\"disallowed_STD3_mapped\",[40,49,41]],[[9333,9333],\"disallowed_STD3_mapped\",[40,50,41]],[[9334,9334],\"disallowed_STD3_mapped\",[40,51,41]],[[9335,9335],\"disallowed_STD3_mapped\",[40,52,41]],[[9336,9336],\"disallowed_STD3_mapped\",[40,53,41]],[[9337,9337],\"disallowed_STD3_mapped\",[40,54,41]],[[9338,9338],\"disallowed_STD3_mapped\",[40,55,41]],[[9339,9339],\"disallowed_STD3_mapped\",[40,56,41]],[[9340,9340],\"disallowed_STD3_mapped\",[40,57,41]],[[9341,9341],\"disallowed_STD3_mapped\",[40,49,48,41]],[[9342,9342],\"disallowed_STD3_mapped\",[40,49,49,41]],[[9343,9343],\"disallowed_STD3_mapped\",[40,49,50,41]],[[9344,9344],\"disallowed_STD3_mapped\",[40,49,51,41]],[[9345,9345],\"disallowed_STD3_mapped\",[40,49,52,41]],[[9346,9346],\"disallowed_STD3_mapped\",[40,49,53,41]],[[9347,9347],\"disallowed_STD3_mapped\",[40,49,54,41]],[[9348,9348],\"disallowed_STD3_mapped\",[40,49,55,41]],[[9349,9349],\"disallowed_STD3_mapped\",[40,49,56,41]],[[9350,9350],\"disallowed_STD3_mapped\",[40,49,57,41]],[[9351,9351],\"disallowed_STD3_mapped\",[40,50,48,41]],[[9352,9371],\"disallowed\"],[[9372,9372],\"disallowed_STD3_mapped\",[40,97,41]],[[9373,9373],\"disallowed_STD3_mapped\",[40,98,41]],[[9374,9374],\"disallowed_STD3_mapped\",[40,99,41]],[[9375,9375],\"disallowed_STD3_mapped\",[40,100,41]],[[9376,9376],\"disallowed_STD3_mapped\",[40,101,41]],[[9377,9377],\"disallowed_STD3_mapped\",[40,102,41]],[[9378,9378],\"disallowed_STD3_mapped\",[40,103,41]],[[9379,9379],\"disallowed_STD3_mapped\",[40,104,41]],[[9380,9380],\"disallowed_STD3_mapped\",[40,105,41]],[[9381,9381],\"disallowed_STD3_mapped\",[40,106,41]],[[9382,9382],\"disallowed_STD3_mapped\",[40,107,41]],[[9383,9383],\"disallowed_STD3_mapped\",[40,108,41]],[[9384,9384],\"disallowed_STD3_mapped\",[40,109,41]],[[9385,9385],\"disallowed_STD3_mapped\",[40,110,41]],[[9386,9386],\"disallowed_STD3_mapped\",[40,111,41]],[[9387,9387],\"disallowed_STD3_mapped\",[40,112,41]],[[9388,9388],\"disallowed_STD3_mapped\",[40,113,41]],[[9389,9389],\"disallowed_STD3_mapped\",[40,114,41]],[[9390,9390],\"disallowed_STD3_mapped\",[40,115,41]],[[9391,9391],\"disallowed_STD3_mapped\",[40,116,41]],[[9392,9392],\"disallowed_STD3_mapped\",[40,117,41]],[[9393,9393],\"disallowed_STD3_mapped\",[40,118,41]],[[9394,9394],\"disallowed_STD3_mapped\",[40,119,41]],[[9395,9395],\"disallowed_STD3_mapped\",[40,120,41]],[[9396,9396],\"disallowed_STD3_mapped\",[40,121,41]],[[9397,9397],\"disallowed_STD3_mapped\",[40,122,41]],[[9398,9398],\"mapped\",[97]],[[9399,9399],\"mapped\",[98]],[[9400,9400],\"mapped\",[99]],[[9401,9401],\"mapped\",[100]],[[9402,9402],\"mapped\",[101]],[[9403,9403],\"mapped\",[102]],[[9404,9404],\"mapped\",[103]],[[9405,9405],\"mapped\",[104]],[[9406,9406],\"mapped\",[105]],[[9407,9407],\"mapped\",[106]],[[9408,9408],\"mapped\",[107]],[[9409,9409],\"mapped\",[108]],[[9410,9410],\"mapped\",[109]],[[9411,9411],\"mapped\",[110]],[[9412,9412],\"mapped\",[111]],[[9413,9413],\"mapped\",[112]],[[9414,9414],\"mapped\",[113]],[[9415,9415],\"mapped\",[114]],[[9416,9416],\"mapped\",[115]],[[9417,9417],\"mapped\",[116]],[[9418,9418],\"mapped\",[117]],[[9419,9419],\"mapped\",[118]],[[9420,9420],\"mapped\",[119]],[[9421,9421],\"mapped\",[120]],[[9422,9422],\"mapped\",[121]],[[9423,9423],\"mapped\",[122]],[[9424,9424],\"mapped\",[97]],[[9425,9425],\"mapped\",[98]],[[9426,9426],\"mapped\",[99]],[[9427,9427],\"mapped\",[100]],[[9428,9428],\"mapped\",[101]],[[9429,9429],\"mapped\",[102]],[[9430,9430],\"mapped\",[103]],[[9431,9431],\"mapped\",[104]],[[9432,9432],\"mapped\",[105]],[[9433,9433],\"mapped\",[106]],[[9434,9434],\"mapped\",[107]],[[9435,9435],\"mapped\",[108]],[[9436,9436],\"mapped\",[109]],[[9437,9437],\"mapped\",[110]],[[9438,9438],\"mapped\",[111]],[[9439,9439],\"mapped\",[112]],[[9440,9440],\"mapped\",[113]],[[9441,9441],\"mapped\",[114]],[[9442,9442],\"mapped\",[115]],[[9443,9443],\"mapped\",[116]],[[9444,9444],\"mapped\",[117]],[[9445,9445],\"mapped\",[118]],[[9446,9446],\"mapped\",[119]],[[9447,9447],\"mapped\",[120]],[[9448,9448],\"mapped\",[121]],[[9449,9449],\"mapped\",[122]],[[9450,9450],\"mapped\",[48]],[[9451,9470],\"valid\",[],\"NV8\"],[[9471,9471],\"valid\",[],\"NV8\"],[[9472,9621],\"valid\",[],\"NV8\"],[[9622,9631],\"valid\",[],\"NV8\"],[[9632,9711],\"valid\",[],\"NV8\"],[[9712,9719],\"valid\",[],\"NV8\"],[[9720,9727],\"valid\",[],\"NV8\"],[[9728,9747],\"valid\",[],\"NV8\"],[[9748,9749],\"valid\",[],\"NV8\"],[[9750,9751],\"valid\",[],\"NV8\"],[[9752,9752],\"valid\",[],\"NV8\"],[[9753,9753],\"valid\",[],\"NV8\"],[[9754,9839],\"valid\",[],\"NV8\"],[[9840,9841],\"valid\",[],\"NV8\"],[[9842,9853],\"valid\",[],\"NV8\"],[[9854,9855],\"valid\",[],\"NV8\"],[[9856,9865],\"valid\",[],\"NV8\"],[[9866,9873],\"valid\",[],\"NV8\"],[[9874,9884],\"valid\",[],\"NV8\"],[[9885,9885],\"valid\",[],\"NV8\"],[[9886,9887],\"valid\",[],\"NV8\"],[[9888,9889],\"valid\",[],\"NV8\"],[[9890,9905],\"valid\",[],\"NV8\"],[[9906,9906],\"valid\",[],\"NV8\"],[[9907,9916],\"valid\",[],\"NV8\"],[[9917,9919],\"valid\",[],\"NV8\"],[[9920,9923],\"valid\",[],\"NV8\"],[[9924,9933],\"valid\",[],\"NV8\"],[[9934,9934],\"valid\",[],\"NV8\"],[[9935,9953],\"valid\",[],\"NV8\"],[[9954,9954],\"valid\",[],\"NV8\"],[[9955,9955],\"valid\",[],\"NV8\"],[[9956,9959],\"valid\",[],\"NV8\"],[[9960,9983],\"valid\",[],\"NV8\"],[[9984,9984],\"valid\",[],\"NV8\"],[[9985,9988],\"valid\",[],\"NV8\"],[[9989,9989],\"valid\",[],\"NV8\"],[[9990,9993],\"valid\",[],\"NV8\"],[[9994,9995],\"valid\",[],\"NV8\"],[[9996,10023],\"valid\",[],\"NV8\"],[[10024,10024],\"valid\",[],\"NV8\"],[[10025,10059],\"valid\",[],\"NV8\"],[[10060,10060],\"valid\",[],\"NV8\"],[[10061,10061],\"valid\",[],\"NV8\"],[[10062,10062],\"valid\",[],\"NV8\"],[[10063,10066],\"valid\",[],\"NV8\"],[[10067,10069],\"valid\",[],\"NV8\"],[[10070,10070],\"valid\",[],\"NV8\"],[[10071,10071],\"valid\",[],\"NV8\"],[[10072,10078],\"valid\",[],\"NV8\"],[[10079,10080],\"valid\",[],\"NV8\"],[[10081,10087],\"valid\",[],\"NV8\"],[[10088,10101],\"valid\",[],\"NV8\"],[[10102,10132],\"valid\",[],\"NV8\"],[[10133,10135],\"valid\",[],\"NV8\"],[[10136,10159],\"valid\",[],\"NV8\"],[[10160,10160],\"valid\",[],\"NV8\"],[[10161,10174],\"valid\",[],\"NV8\"],[[10175,10175],\"valid\",[],\"NV8\"],[[10176,10182],\"valid\",[],\"NV8\"],[[10183,10186],\"valid\",[],\"NV8\"],[[10187,10187],\"valid\",[],\"NV8\"],[[10188,10188],\"valid\",[],\"NV8\"],[[10189,10189],\"valid\",[],\"NV8\"],[[10190,10191],\"valid\",[],\"NV8\"],[[10192,10219],\"valid\",[],\"NV8\"],[[10220,10223],\"valid\",[],\"NV8\"],[[10224,10239],\"valid\",[],\"NV8\"],[[10240,10495],\"valid\",[],\"NV8\"],[[10496,10763],\"valid\",[],\"NV8\"],[[10764,10764],\"mapped\",[8747,8747,8747,8747]],[[10765,10867],\"valid\",[],\"NV8\"],[[10868,10868],\"disallowed_STD3_mapped\",[58,58,61]],[[10869,10869],\"disallowed_STD3_mapped\",[61,61]],[[10870,10870],\"disallowed_STD3_mapped\",[61,61,61]],[[10871,10971],\"valid\",[],\"NV8\"],[[10972,10972],\"mapped\",[10973,824]],[[10973,11007],\"valid\",[],\"NV8\"],[[11008,11021],\"valid\",[],\"NV8\"],[[11022,11027],\"valid\",[],\"NV8\"],[[11028,11034],\"valid\",[],\"NV8\"],[[11035,11039],\"valid\",[],\"NV8\"],[[11040,11043],\"valid\",[],\"NV8\"],[[11044,11084],\"valid\",[],\"NV8\"],[[11085,11087],\"valid\",[],\"NV8\"],[[11088,11092],\"valid\",[],\"NV8\"],[[11093,11097],\"valid\",[],\"NV8\"],[[11098,11123],\"valid\",[],\"NV8\"],[[11124,11125],\"disallowed\"],[[11126,11157],\"valid\",[],\"NV8\"],[[11158,11159],\"disallowed\"],[[11160,11193],\"valid\",[],\"NV8\"],[[11194,11196],\"disallowed\"],[[11197,11208],\"valid\",[],\"NV8\"],[[11209,11209],\"disallowed\"],[[11210,11217],\"valid\",[],\"NV8\"],[[11218,11243],\"disallowed\"],[[11244,11247],\"valid\",[],\"NV8\"],[[11248,11263],\"disallowed\"],[[11264,11264],\"mapped\",[11312]],[[11265,11265],\"mapped\",[11313]],[[11266,11266],\"mapped\",[11314]],[[11267,11267],\"mapped\",[11315]],[[11268,11268],\"mapped\",[11316]],[[11269,11269],\"mapped\",[11317]],[[11270,11270],\"mapped\",[11318]],[[11271,11271],\"mapped\",[11319]],[[11272,11272],\"mapped\",[11320]],[[11273,11273],\"mapped\",[11321]],[[11274,11274],\"mapped\",[11322]],[[11275,11275],\"mapped\",[11323]],[[11276,11276],\"mapped\",[11324]],[[11277,11277],\"mapped\",[11325]],[[11278,11278],\"mapped\",[11326]],[[11279,11279],\"mapped\",[11327]],[[11280,11280],\"mapped\",[11328]],[[11281,11281],\"mapped\",[11329]],[[11282,11282],\"mapped\",[11330]],[[11283,11283],\"mapped\",[11331]],[[11284,11284],\"mapped\",[11332]],[[11285,11285],\"mapped\",[11333]],[[11286,11286],\"mapped\",[11334]],[[11287,11287],\"mapped\",[11335]],[[11288,11288],\"mapped\",[11336]],[[11289,11289],\"mapped\",[11337]],[[11290,11290],\"mapped\",[11338]],[[11291,11291],\"mapped\",[11339]],[[11292,11292],\"mapped\",[11340]],[[11293,11293],\"mapped\",[11341]],[[11294,11294],\"mapped\",[11342]],[[11295,11295],\"mapped\",[11343]],[[11296,11296],\"mapped\",[11344]],[[11297,11297],\"mapped\",[11345]],[[11298,11298],\"mapped\",[11346]],[[11299,11299],\"mapped\",[11347]],[[11300,11300],\"mapped\",[11348]],[[11301,11301],\"mapped\",[11349]],[[11302,11302],\"mapped\",[11350]],[[11303,11303],\"mapped\",[11351]],[[11304,11304],\"mapped\",[11352]],[[11305,11305],\"mapped\",[11353]],[[11306,11306],\"mapped\",[11354]],[[11307,11307],\"mapped\",[11355]],[[11308,11308],\"mapped\",[11356]],[[11309,11309],\"mapped\",[11357]],[[11310,11310],\"mapped\",[11358]],[[11311,11311],\"disallowed\"],[[11312,11358],\"valid\"],[[11359,11359],\"disallowed\"],[[11360,11360],\"mapped\",[11361]],[[11361,11361],\"valid\"],[[11362,11362],\"mapped\",[619]],[[11363,11363],\"mapped\",[7549]],[[11364,11364],\"mapped\",[637]],[[11365,11366],\"valid\"],[[11367,11367],\"mapped\",[11368]],[[11368,11368],\"valid\"],[[11369,11369],\"mapped\",[11370]],[[11370,11370],\"valid\"],[[11371,11371],\"mapped\",[11372]],[[11372,11372],\"valid\"],[[11373,11373],\"mapped\",[593]],[[11374,11374],\"mapped\",[625]],[[11375,11375],\"mapped\",[592]],[[11376,11376],\"mapped\",[594]],[[11377,11377],\"valid\"],[[11378,11378],\"mapped\",[11379]],[[11379,11379],\"valid\"],[[11380,11380],\"valid\"],[[11381,11381],\"mapped\",[11382]],[[11382,11383],\"valid\"],[[11384,11387],\"valid\"],[[11388,11388],\"mapped\",[106]],[[11389,11389],\"mapped\",[118]],[[11390,11390],\"mapped\",[575]],[[11391,11391],\"mapped\",[576]],[[11392,11392],\"mapped\",[11393]],[[11393,11393],\"valid\"],[[11394,11394],\"mapped\",[11395]],[[11395,11395],\"valid\"],[[11396,11396],\"mapped\",[11397]],[[11397,11397],\"valid\"],[[11398,11398],\"mapped\",[11399]],[[11399,11399],\"valid\"],[[11400,11400],\"mapped\",[11401]],[[11401,11401],\"valid\"],[[11402,11402],\"mapped\",[11403]],[[11403,11403],\"valid\"],[[11404,11404],\"mapped\",[11405]],[[11405,11405],\"valid\"],[[11406,11406],\"mapped\",[11407]],[[11407,11407],\"valid\"],[[11408,11408],\"mapped\",[11409]],[[11409,11409],\"valid\"],[[11410,11410],\"mapped\",[11411]],[[11411,11411],\"valid\"],[[11412,11412],\"mapped\",[11413]],[[11413,11413],\"valid\"],[[11414,11414],\"mapped\",[11415]],[[11415,11415],\"valid\"],[[11416,11416],\"mapped\",[11417]],[[11417,11417],\"valid\"],[[11418,11418],\"mapped\",[11419]],[[11419,11419],\"valid\"],[[11420,11420],\"mapped\",[11421]],[[11421,11421],\"valid\"],[[11422,11422],\"mapped\",[11423]],[[11423,11423],\"valid\"],[[11424,11424],\"mapped\",[11425]],[[11425,11425],\"valid\"],[[11426,11426],\"mapped\",[11427]],[[11427,11427],\"valid\"],[[11428,11428],\"mapped\",[11429]],[[11429,11429],\"valid\"],[[11430,11430],\"mapped\",[11431]],[[11431,11431],\"valid\"],[[11432,11432],\"mapped\",[11433]],[[11433,11433],\"valid\"],[[11434,11434],\"mapped\",[11435]],[[11435,11435],\"valid\"],[[11436,11436],\"mapped\",[11437]],[[11437,11437],\"valid\"],[[11438,11438],\"mapped\",[11439]],[[11439,11439],\"valid\"],[[11440,11440],\"mapped\",[11441]],[[11441,11441],\"valid\"],[[11442,11442],\"mapped\",[11443]],[[11443,11443],\"valid\"],[[11444,11444],\"mapped\",[11445]],[[11445,11445],\"valid\"],[[11446,11446],\"mapped\",[11447]],[[11447,11447],\"valid\"],[[11448,11448],\"mapped\",[11449]],[[11449,11449],\"valid\"],[[11450,11450],\"mapped\",[11451]],[[11451,11451],\"valid\"],[[11452,11452],\"mapped\",[11453]],[[11453,11453],\"valid\"],[[11454,11454],\"mapped\",[11455]],[[11455,11455],\"valid\"],[[11456,11456],\"mapped\",[11457]],[[11457,11457],\"valid\"],[[11458,11458],\"mapped\",[11459]],[[11459,11459],\"valid\"],[[11460,11460],\"mapped\",[11461]],[[11461,11461],\"valid\"],[[11462,11462],\"mapped\",[11463]],[[11463,11463],\"valid\"],[[11464,11464],\"mapped\",[11465]],[[11465,11465],\"valid\"],[[11466,11466],\"mapped\",[11467]],[[11467,11467],\"valid\"],[[11468,11468],\"mapped\",[11469]],[[11469,11469],\"valid\"],[[11470,11470],\"mapped\",[11471]],[[11471,11471],\"valid\"],[[11472,11472],\"mapped\",[11473]],[[11473,11473],\"valid\"],[[11474,11474],\"mapped\",[11475]],[[11475,11475],\"valid\"],[[11476,11476],\"mapped\",[11477]],[[11477,11477],\"valid\"],[[11478,11478],\"mapped\",[11479]],[[11479,11479],\"valid\"],[[11480,11480],\"mapped\",[11481]],[[11481,11481],\"valid\"],[[11482,11482],\"mapped\",[11483]],[[11483,11483],\"valid\"],[[11484,11484],\"mapped\",[11485]],[[11485,11485],\"valid\"],[[11486,11486],\"mapped\",[11487]],[[11487,11487],\"valid\"],[[11488,11488],\"mapped\",[11489]],[[11489,11489],\"valid\"],[[11490,11490],\"mapped\",[11491]],[[11491,11492],\"valid\"],[[11493,11498],\"valid\",[],\"NV8\"],[[11499,11499],\"mapped\",[11500]],[[11500,11500],\"valid\"],[[11501,11501],\"mapped\",[11502]],[[11502,11505],\"valid\"],[[11506,11506],\"mapped\",[11507]],[[11507,11507],\"valid\"],[[11508,11512],\"disallowed\"],[[11513,11519],\"valid\",[],\"NV8\"],[[11520,11557],\"valid\"],[[11558,11558],\"disallowed\"],[[11559,11559],\"valid\"],[[11560,11564],\"disallowed\"],[[11565,11565],\"valid\"],[[11566,11567],\"disallowed\"],[[11568,11621],\"valid\"],[[11622,11623],\"valid\"],[[11624,11630],\"disallowed\"],[[11631,11631],\"mapped\",[11617]],[[11632,11632],\"valid\",[],\"NV8\"],[[11633,11646],\"disallowed\"],[[11647,11647],\"valid\"],[[11648,11670],\"valid\"],[[11671,11679],\"disallowed\"],[[11680,11686],\"valid\"],[[11687,11687],\"disallowed\"],[[11688,11694],\"valid\"],[[11695,11695],\"disallowed\"],[[11696,11702],\"valid\"],[[11703,11703],\"disallowed\"],[[11704,11710],\"valid\"],[[11711,11711],\"disallowed\"],[[11712,11718],\"valid\"],[[11719,11719],\"disallowed\"],[[11720,11726],\"valid\"],[[11727,11727],\"disallowed\"],[[11728,11734],\"valid\"],[[11735,11735],\"disallowed\"],[[11736,11742],\"valid\"],[[11743,11743],\"disallowed\"],[[11744,11775],\"valid\"],[[11776,11799],\"valid\",[],\"NV8\"],[[11800,11803],\"valid\",[],\"NV8\"],[[11804,11805],\"valid\",[],\"NV8\"],[[11806,11822],\"valid\",[],\"NV8\"],[[11823,11823],\"valid\"],[[11824,11824],\"valid\",[],\"NV8\"],[[11825,11825],\"valid\",[],\"NV8\"],[[11826,11835],\"valid\",[],\"NV8\"],[[11836,11842],\"valid\",[],\"NV8\"],[[11843,11903],\"disallowed\"],[[11904,11929],\"valid\",[],\"NV8\"],[[11930,11930],\"disallowed\"],[[11931,11934],\"valid\",[],\"NV8\"],[[11935,11935],\"mapped\",[27597]],[[11936,12018],\"valid\",[],\"NV8\"],[[12019,12019],\"mapped\",[40863]],[[12020,12031],\"disallowed\"],[[12032,12032],\"mapped\",[19968]],[[12033,12033],\"mapped\",[20008]],[[12034,12034],\"mapped\",[20022]],[[12035,12035],\"mapped\",[20031]],[[12036,12036],\"mapped\",[20057]],[[12037,12037],\"mapped\",[20101]],[[12038,12038],\"mapped\",[20108]],[[12039,12039],\"mapped\",[20128]],[[12040,12040],\"mapped\",[20154]],[[12041,12041],\"mapped\",[20799]],[[12042,12042],\"mapped\",[20837]],[[12043,12043],\"mapped\",[20843]],[[12044,12044],\"mapped\",[20866]],[[12045,12045],\"mapped\",[20886]],[[12046,12046],\"mapped\",[20907]],[[12047,12047],\"mapped\",[20960]],[[12048,12048],\"mapped\",[20981]],[[12049,12049],\"mapped\",[20992]],[[12050,12050],\"mapped\",[21147]],[[12051,12051],\"mapped\",[21241]],[[12052,12052],\"mapped\",[21269]],[[12053,12053],\"mapped\",[21274]],[[12054,12054],\"mapped\",[21304]],[[12055,12055],\"mapped\",[21313]],[[12056,12056],\"mapped\",[21340]],[[12057,12057],\"mapped\",[21353]],[[12058,12058],\"mapped\",[21378]],[[12059,12059],\"mapped\",[21430]],[[12060,12060],\"mapped\",[21448]],[[12061,12061],\"mapped\",[21475]],[[12062,12062],\"mapped\",[22231]],[[12063,12063],\"mapped\",[22303]],[[12064,12064],\"mapped\",[22763]],[[12065,12065],\"mapped\",[22786]],[[12066,12066],\"mapped\",[22794]],[[12067,12067],\"mapped\",[22805]],[[12068,12068],\"mapped\",[22823]],[[12069,12069],\"mapped\",[22899]],[[12070,12070],\"mapped\",[23376]],[[12071,12071],\"mapped\",[23424]],[[12072,12072],\"mapped\",[23544]],[[12073,12073],\"mapped\",[23567]],[[12074,12074],\"mapped\",[23586]],[[12075,12075],\"mapped\",[23608]],[[12076,12076],\"mapped\",[23662]],[[12077,12077],\"mapped\",[23665]],[[12078,12078],\"mapped\",[24027]],[[12079,12079],\"mapped\",[24037]],[[12080,12080],\"mapped\",[24049]],[[12081,12081],\"mapped\",[24062]],[[12082,12082],\"mapped\",[24178]],[[12083,12083],\"mapped\",[24186]],[[12084,12084],\"mapped\",[24191]],[[12085,12085],\"mapped\",[24308]],[[12086,12086],\"mapped\",[24318]],[[12087,12087],\"mapped\",[24331]],[[12088,12088],\"mapped\",[24339]],[[12089,12089],\"mapped\",[24400]],[[12090,12090],\"mapped\",[24417]],[[12091,12091],\"mapped\",[24435]],[[12092,12092],\"mapped\",[24515]],[[12093,12093],\"mapped\",[25096]],[[12094,12094],\"mapped\",[25142]],[[12095,12095],\"mapped\",[25163]],[[12096,12096],\"mapped\",[25903]],[[12097,12097],\"mapped\",[25908]],[[12098,12098],\"mapped\",[25991]],[[12099,12099],\"mapped\",[26007]],[[12100,12100],\"mapped\",[26020]],[[12101,12101],\"mapped\",[26041]],[[12102,12102],\"mapped\",[26080]],[[12103,12103],\"mapped\",[26085]],[[12104,12104],\"mapped\",[26352]],[[12105,12105],\"mapped\",[26376]],[[12106,12106],\"mapped\",[26408]],[[12107,12107],\"mapped\",[27424]],[[12108,12108],\"mapped\",[27490]],[[12109,12109],\"mapped\",[27513]],[[12110,12110],\"mapped\",[27571]],[[12111,12111],\"mapped\",[27595]],[[12112,12112],\"mapped\",[27604]],[[12113,12113],\"mapped\",[27611]],[[12114,12114],\"mapped\",[27663]],[[12115,12115],\"mapped\",[27668]],[[12116,12116],\"mapped\",[27700]],[[12117,12117],\"mapped\",[28779]],[[12118,12118],\"mapped\",[29226]],[[12119,12119],\"mapped\",[29238]],[[12120,12120],\"mapped\",[29243]],[[12121,12121],\"mapped\",[29247]],[[12122,12122],\"mapped\",[29255]],[[12123,12123],\"mapped\",[29273]],[[12124,12124],\"mapped\",[29275]],[[12125,12125],\"mapped\",[29356]],[[12126,12126],\"mapped\",[29572]],[[12127,12127],\"mapped\",[29577]],[[12128,12128],\"mapped\",[29916]],[[12129,12129],\"mapped\",[29926]],[[12130,12130],\"mapped\",[29976]],[[12131,12131],\"mapped\",[29983]],[[12132,12132],\"mapped\",[29992]],[[12133,12133],\"mapped\",[30000]],[[12134,12134],\"mapped\",[30091]],[[12135,12135],\"mapped\",[30098]],[[12136,12136],\"mapped\",[30326]],[[12137,12137],\"mapped\",[30333]],[[12138,12138],\"mapped\",[30382]],[[12139,12139],\"mapped\",[30399]],[[12140,12140],\"mapped\",[30446]],[[12141,12141],\"mapped\",[30683]],[[12142,12142],\"mapped\",[30690]],[[12143,12143],\"mapped\",[30707]],[[12144,12144],\"mapped\",[31034]],[[12145,12145],\"mapped\",[31160]],[[12146,12146],\"mapped\",[31166]],[[12147,12147],\"mapped\",[31348]],[[12148,12148],\"mapped\",[31435]],[[12149,12149],\"mapped\",[31481]],[[12150,12150],\"mapped\",[31859]],[[12151,12151],\"mapped\",[31992]],[[12152,12152],\"mapped\",[32566]],[[12153,12153],\"mapped\",[32593]],[[12154,12154],\"mapped\",[32650]],[[12155,12155],\"mapped\",[32701]],[[12156,12156],\"mapped\",[32769]],[[12157,12157],\"mapped\",[32780]],[[12158,12158],\"mapped\",[32786]],[[12159,12159],\"mapped\",[32819]],[[12160,12160],\"mapped\",[32895]],[[12161,12161],\"mapped\",[32905]],[[12162,12162],\"mapped\",[33251]],[[12163,12163],\"mapped\",[33258]],[[12164,12164],\"mapped\",[33267]],[[12165,12165],\"mapped\",[33276]],[[12166,12166],\"mapped\",[33292]],[[12167,12167],\"mapped\",[33307]],[[12168,12168],\"mapped\",[33311]],[[12169,12169],\"mapped\",[33390]],[[12170,12170],\"mapped\",[33394]],[[12171,12171],\"mapped\",[33400]],[[12172,12172],\"mapped\",[34381]],[[12173,12173],\"mapped\",[34411]],[[12174,12174],\"mapped\",[34880]],[[12175,12175],\"mapped\",[34892]],[[12176,12176],\"mapped\",[34915]],[[12177,12177],\"mapped\",[35198]],[[12178,12178],\"mapped\",[35211]],[[12179,12179],\"mapped\",[35282]],[[12180,12180],\"mapped\",[35328]],[[12181,12181],\"mapped\",[35895]],[[12182,12182],\"mapped\",[35910]],[[12183,12183],\"mapped\",[35925]],[[12184,12184],\"mapped\",[35960]],[[12185,12185],\"mapped\",[35997]],[[12186,12186],\"mapped\",[36196]],[[12187,12187],\"mapped\",[36208]],[[12188,12188],\"mapped\",[36275]],[[12189,12189],\"mapped\",[36523]],[[12190,12190],\"mapped\",[36554]],[[12191,12191],\"mapped\",[36763]],[[12192,12192],\"mapped\",[36784]],[[12193,12193],\"mapped\",[36789]],[[12194,12194],\"mapped\",[37009]],[[12195,12195],\"mapped\",[37193]],[[12196,12196],\"mapped\",[37318]],[[12197,12197],\"mapped\",[37324]],[[12198,12198],\"mapped\",[37329]],[[12199,12199],\"mapped\",[38263]],[[12200,12200],\"mapped\",[38272]],[[12201,12201],\"mapped\",[38428]],[[12202,12202],\"mapped\",[38582]],[[12203,12203],\"mapped\",[38585]],[[12204,12204],\"mapped\",[38632]],[[12205,12205],\"mapped\",[38737]],[[12206,12206],\"mapped\",[38750]],[[12207,12207],\"mapped\",[38754]],[[12208,12208],\"mapped\",[38761]],[[12209,12209],\"mapped\",[38859]],[[12210,12210],\"mapped\",[38893]],[[12211,12211],\"mapped\",[38899]],[[12212,12212],\"mapped\",[38913]],[[12213,12213],\"mapped\",[39080]],[[12214,12214],\"mapped\",[39131]],[[12215,12215],\"mapped\",[39135]],[[12216,12216],\"mapped\",[39318]],[[12217,12217],\"mapped\",[39321]],[[12218,12218],\"mapped\",[39340]],[[12219,12219],\"mapped\",[39592]],[[12220,12220],\"mapped\",[39640]],[[12221,12221],\"mapped\",[39647]],[[12222,12222],\"mapped\",[39717]],[[12223,12223],\"mapped\",[39727]],[[12224,12224],\"mapped\",[39730]],[[12225,12225],\"mapped\",[39740]],[[12226,12226],\"mapped\",[39770]],[[12227,12227],\"mapped\",[40165]],[[12228,12228],\"mapped\",[40565]],[[12229,12229],\"mapped\",[40575]],[[12230,12230],\"mapped\",[40613]],[[12231,12231],\"mapped\",[40635]],[[12232,12232],\"mapped\",[40643]],[[12233,12233],\"mapped\",[40653]],[[12234,12234],\"mapped\",[40657]],[[12235,12235],\"mapped\",[40697]],[[12236,12236],\"mapped\",[40701]],[[12237,12237],\"mapped\",[40718]],[[12238,12238],\"mapped\",[40723]],[[12239,12239],\"mapped\",[40736]],[[12240,12240],\"mapped\",[40763]],[[12241,12241],\"mapped\",[40778]],[[12242,12242],\"mapped\",[40786]],[[12243,12243],\"mapped\",[40845]],[[12244,12244],\"mapped\",[40860]],[[12245,12245],\"mapped\",[40864]],[[12246,12271],\"disallowed\"],[[12272,12283],\"disallowed\"],[[12284,12287],\"disallowed\"],[[12288,12288],\"disallowed_STD3_mapped\",[32]],[[12289,12289],\"valid\",[],\"NV8\"],[[12290,12290],\"mapped\",[46]],[[12291,12292],\"valid\",[],\"NV8\"],[[12293,12295],\"valid\"],[[12296,12329],\"valid\",[],\"NV8\"],[[12330,12333],\"valid\"],[[12334,12341],\"valid\",[],\"NV8\"],[[12342,12342],\"mapped\",[12306]],[[12343,12343],\"valid\",[],\"NV8\"],[[12344,12344],\"mapped\",[21313]],[[12345,12345],\"mapped\",[21316]],[[12346,12346],\"mapped\",[21317]],[[12347,12347],\"valid\",[],\"NV8\"],[[12348,12348],\"valid\"],[[12349,12349],\"valid\",[],\"NV8\"],[[12350,12350],\"valid\",[],\"NV8\"],[[12351,12351],\"valid\",[],\"NV8\"],[[12352,12352],\"disallowed\"],[[12353,12436],\"valid\"],[[12437,12438],\"valid\"],[[12439,12440],\"disallowed\"],[[12441,12442],\"valid\"],[[12443,12443],\"disallowed_STD3_mapped\",[32,12441]],[[12444,12444],\"disallowed_STD3_mapped\",[32,12442]],[[12445,12446],\"valid\"],[[12447,12447],\"mapped\",[12424,12426]],[[12448,12448],\"valid\",[],\"NV8\"],[[12449,12542],\"valid\"],[[12543,12543],\"mapped\",[12467,12488]],[[12544,12548],\"disallowed\"],[[12549,12588],\"valid\"],[[12589,12589],\"valid\"],[[12590,12592],\"disallowed\"],[[12593,12593],\"mapped\",[4352]],[[12594,12594],\"mapped\",[4353]],[[12595,12595],\"mapped\",[4522]],[[12596,12596],\"mapped\",[4354]],[[12597,12597],\"mapped\",[4524]],[[12598,12598],\"mapped\",[4525]],[[12599,12599],\"mapped\",[4355]],[[12600,12600],\"mapped\",[4356]],[[12601,12601],\"mapped\",[4357]],[[12602,12602],\"mapped\",[4528]],[[12603,12603],\"mapped\",[4529]],[[12604,12604],\"mapped\",[4530]],[[12605,12605],\"mapped\",[4531]],[[12606,12606],\"mapped\",[4532]],[[12607,12607],\"mapped\",[4533]],[[12608,12608],\"mapped\",[4378]],[[12609,12609],\"mapped\",[4358]],[[12610,12610],\"mapped\",[4359]],[[12611,12611],\"mapped\",[4360]],[[12612,12612],\"mapped\",[4385]],[[12613,12613],\"mapped\",[4361]],[[12614,12614],\"mapped\",[4362]],[[12615,12615],\"mapped\",[4363]],[[12616,12616],\"mapped\",[4364]],[[12617,12617],\"mapped\",[4365]],[[12618,12618],\"mapped\",[4366]],[[12619,12619],\"mapped\",[4367]],[[12620,12620],\"mapped\",[4368]],[[12621,12621],\"mapped\",[4369]],[[12622,12622],\"mapped\",[4370]],[[12623,12623],\"mapped\",[4449]],[[12624,12624],\"mapped\",[4450]],[[12625,12625],\"mapped\",[4451]],[[12626,12626],\"mapped\",[4452]],[[12627,12627],\"mapped\",[4453]],[[12628,12628],\"mapped\",[4454]],[[12629,12629],\"mapped\",[4455]],[[12630,12630],\"mapped\",[4456]],[[12631,12631],\"mapped\",[4457]],[[12632,12632],\"mapped\",[4458]],[[12633,12633],\"mapped\",[4459]],[[12634,12634],\"mapped\",[4460]],[[12635,12635],\"mapped\",[4461]],[[12636,12636],\"mapped\",[4462]],[[12637,12637],\"mapped\",[4463]],[[12638,12638],\"mapped\",[4464]],[[12639,12639],\"mapped\",[4465]],[[12640,12640],\"mapped\",[4466]],[[12641,12641],\"mapped\",[4467]],[[12642,12642],\"mapped\",[4468]],[[12643,12643],\"mapped\",[4469]],[[12644,12644],\"disallowed\"],[[12645,12645],\"mapped\",[4372]],[[12646,12646],\"mapped\",[4373]],[[12647,12647],\"mapped\",[4551]],[[12648,12648],\"mapped\",[4552]],[[12649,12649],\"mapped\",[4556]],[[12650,12650],\"mapped\",[4558]],[[12651,12651],\"mapped\",[4563]],[[12652,12652],\"mapped\",[4567]],[[12653,12653],\"mapped\",[4569]],[[12654,12654],\"mapped\",[4380]],[[12655,12655],\"mapped\",[4573]],[[12656,12656],\"mapped\",[4575]],[[12657,12657],\"mapped\",[4381]],[[12658,12658],\"mapped\",[4382]],[[12659,12659],\"mapped\",[4384]],[[12660,12660],\"mapped\",[4386]],[[12661,12661],\"mapped\",[4387]],[[12662,12662],\"mapped\",[4391]],[[12663,12663],\"mapped\",[4393]],[[12664,12664],\"mapped\",[4395]],[[12665,12665],\"mapped\",[4396]],[[12666,12666],\"mapped\",[4397]],[[12667,12667],\"mapped\",[4398]],[[12668,12668],\"mapped\",[4399]],[[12669,12669],\"mapped\",[4402]],[[12670,12670],\"mapped\",[4406]],[[12671,12671],\"mapped\",[4416]],[[12672,12672],\"mapped\",[4423]],[[12673,12673],\"mapped\",[4428]],[[12674,12674],\"mapped\",[4593]],[[12675,12675],\"mapped\",[4594]],[[12676,12676],\"mapped\",[4439]],[[12677,12677],\"mapped\",[4440]],[[12678,12678],\"mapped\",[4441]],[[12679,12679],\"mapped\",[4484]],[[12680,12680],\"mapped\",[4485]],[[12681,12681],\"mapped\",[4488]],[[12682,12682],\"mapped\",[4497]],[[12683,12683],\"mapped\",[4498]],[[12684,12684],\"mapped\",[4500]],[[12685,12685],\"mapped\",[4510]],[[12686,12686],\"mapped\",[4513]],[[12687,12687],\"disallowed\"],[[12688,12689],\"valid\",[],\"NV8\"],[[12690,12690],\"mapped\",[19968]],[[12691,12691],\"mapped\",[20108]],[[12692,12692],\"mapped\",[19977]],[[12693,12693],\"mapped\",[22235]],[[12694,12694],\"mapped\",[19978]],[[12695,12695],\"mapped\",[20013]],[[12696,12696],\"mapped\",[19979]],[[12697,12697],\"mapped\",[30002]],[[12698,12698],\"mapped\",[20057]],[[12699,12699],\"mapped\",[19993]],[[12700,12700],\"mapped\",[19969]],[[12701,12701],\"mapped\",[22825]],[[12702,12702],\"mapped\",[22320]],[[12703,12703],\"mapped\",[20154]],[[12704,12727],\"valid\"],[[12728,12730],\"valid\"],[[12731,12735],\"disallowed\"],[[12736,12751],\"valid\",[],\"NV8\"],[[12752,12771],\"valid\",[],\"NV8\"],[[12772,12783],\"disallowed\"],[[12784,12799],\"valid\"],[[12800,12800],\"disallowed_STD3_mapped\",[40,4352,41]],[[12801,12801],\"disallowed_STD3_mapped\",[40,4354,41]],[[12802,12802],\"disallowed_STD3_mapped\",[40,4355,41]],[[12803,12803],\"disallowed_STD3_mapped\",[40,4357,41]],[[12804,12804],\"disallowed_STD3_mapped\",[40,4358,41]],[[12805,12805],\"disallowed_STD3_mapped\",[40,4359,41]],[[12806,12806],\"disallowed_STD3_mapped\",[40,4361,41]],[[12807,12807],\"disallowed_STD3_mapped\",[40,4363,41]],[[12808,12808],\"disallowed_STD3_mapped\",[40,4364,41]],[[12809,12809],\"disallowed_STD3_mapped\",[40,4366,41]],[[12810,12810],\"disallowed_STD3_mapped\",[40,4367,41]],[[12811,12811],\"disallowed_STD3_mapped\",[40,4368,41]],[[12812,12812],\"disallowed_STD3_mapped\",[40,4369,41]],[[12813,12813],\"disallowed_STD3_mapped\",[40,4370,41]],[[12814,12814],\"disallowed_STD3_mapped\",[40,44032,41]],[[12815,12815],\"disallowed_STD3_mapped\",[40,45208,41]],[[12816,12816],\"disallowed_STD3_mapped\",[40,45796,41]],[[12817,12817],\"disallowed_STD3_mapped\",[40,46972,41]],[[12818,12818],\"disallowed_STD3_mapped\",[40,47560,41]],[[12819,12819],\"disallowed_STD3_mapped\",[40,48148,41]],[[12820,12820],\"disallowed_STD3_mapped\",[40,49324,41]],[[12821,12821],\"disallowed_STD3_mapped\",[40,50500,41]],[[12822,12822],\"disallowed_STD3_mapped\",[40,51088,41]],[[12823,12823],\"disallowed_STD3_mapped\",[40,52264,41]],[[12824,12824],\"disallowed_STD3_mapped\",[40,52852,41]],[[12825,12825],\"disallowed_STD3_mapped\",[40,53440,41]],[[12826,12826],\"disallowed_STD3_mapped\",[40,54028,41]],[[12827,12827],\"disallowed_STD3_mapped\",[40,54616,41]],[[12828,12828],\"disallowed_STD3_mapped\",[40,51452,41]],[[12829,12829],\"disallowed_STD3_mapped\",[40,50724,51204,41]],[[12830,12830],\"disallowed_STD3_mapped\",[40,50724,54980,41]],[[12831,12831],\"disallowed\"],[[12832,12832],\"disallowed_STD3_mapped\",[40,19968,41]],[[12833,12833],\"disallowed_STD3_mapped\",[40,20108,41]],[[12834,12834],\"disallowed_STD3_mapped\",[40,19977,41]],[[12835,12835],\"disallowed_STD3_mapped\",[40,22235,41]],[[12836,12836],\"disallowed_STD3_mapped\",[40,20116,41]],[[12837,12837],\"disallowed_STD3_mapped\",[40,20845,41]],[[12838,12838],\"disallowed_STD3_mapped\",[40,19971,41]],[[12839,12839],\"disallowed_STD3_mapped\",[40,20843,41]],[[12840,12840],\"disallowed_STD3_mapped\",[40,20061,41]],[[12841,12841],\"disallowed_STD3_mapped\",[40,21313,41]],[[12842,12842],\"disallowed_STD3_mapped\",[40,26376,41]],[[12843,12843],\"disallowed_STD3_mapped\",[40,28779,41]],[[12844,12844],\"disallowed_STD3_mapped\",[40,27700,41]],[[12845,12845],\"disallowed_STD3_mapped\",[40,26408,41]],[[12846,12846],\"disallowed_STD3_mapped\",[40,37329,41]],[[12847,12847],\"disallowed_STD3_mapped\",[40,22303,41]],[[12848,12848],\"disallowed_STD3_mapped\",[40,26085,41]],[[12849,12849],\"disallowed_STD3_mapped\",[40,26666,41]],[[12850,12850],\"disallowed_STD3_mapped\",[40,26377,41]],[[12851,12851],\"disallowed_STD3_mapped\",[40,31038,41]],[[12852,12852],\"disallowed_STD3_mapped\",[40,21517,41]],[[12853,12853],\"disallowed_STD3_mapped\",[40,29305,41]],[[12854,12854],\"disallowed_STD3_mapped\",[40,36001,41]],[[12855,12855],\"disallowed_STD3_mapped\",[40,31069,41]],[[12856,12856],\"disallowed_STD3_mapped\",[40,21172,41]],[[12857,12857],\"disallowed_STD3_mapped\",[40,20195,41]],[[12858,12858],\"disallowed_STD3_mapped\",[40,21628,41]],[[12859,12859],\"disallowed_STD3_mapped\",[40,23398,41]],[[12860,12860],\"disallowed_STD3_mapped\",[40,30435,41]],[[12861,12861],\"disallowed_STD3_mapped\",[40,20225,41]],[[12862,12862],\"disallowed_STD3_mapped\",[40,36039,41]],[[12863,12863],\"disallowed_STD3_mapped\",[40,21332,41]],[[12864,12864],\"disallowed_STD3_mapped\",[40,31085,41]],[[12865,12865],\"disallowed_STD3_mapped\",[40,20241,41]],[[12866,12866],\"disallowed_STD3_mapped\",[40,33258,41]],[[12867,12867],\"disallowed_STD3_mapped\",[40,33267,41]],[[12868,12868],\"mapped\",[21839]],[[12869,12869],\"mapped\",[24188]],[[12870,12870],\"mapped\",[25991]],[[12871,12871],\"mapped\",[31631]],[[12872,12879],\"valid\",[],\"NV8\"],[[12880,12880],\"mapped\",[112,116,101]],[[12881,12881],\"mapped\",[50,49]],[[12882,12882],\"mapped\",[50,50]],[[12883,12883],\"mapped\",[50,51]],[[12884,12884],\"mapped\",[50,52]],[[12885,12885],\"mapped\",[50,53]],[[12886,12886],\"mapped\",[50,54]],[[12887,12887],\"mapped\",[50,55]],[[12888,12888],\"mapped\",[50,56]],[[12889,12889],\"mapped\",[50,57]],[[12890,12890],\"mapped\",[51,48]],[[12891,12891],\"mapped\",[51,49]],[[12892,12892],\"mapped\",[51,50]],[[12893,12893],\"mapped\",[51,51]],[[12894,12894],\"mapped\",[51,52]],[[12895,12895],\"mapped\",[51,53]],[[12896,12896],\"mapped\",[4352]],[[12897,12897],\"mapped\",[4354]],[[12898,12898],\"mapped\",[4355]],[[12899,12899],\"mapped\",[4357]],[[12900,12900],\"mapped\",[4358]],[[12901,12901],\"mapped\",[4359]],[[12902,12902],\"mapped\",[4361]],[[12903,12903],\"mapped\",[4363]],[[12904,12904],\"mapped\",[4364]],[[12905,12905],\"mapped\",[4366]],[[12906,12906],\"mapped\",[4367]],[[12907,12907],\"mapped\",[4368]],[[12908,12908],\"mapped\",[4369]],[[12909,12909],\"mapped\",[4370]],[[12910,12910],\"mapped\",[44032]],[[12911,12911],\"mapped\",[45208]],[[12912,12912],\"mapped\",[45796]],[[12913,12913],\"mapped\",[46972]],[[12914,12914],\"mapped\",[47560]],[[12915,12915],\"mapped\",[48148]],[[12916,12916],\"mapped\",[49324]],[[12917,12917],\"mapped\",[50500]],[[12918,12918],\"mapped\",[51088]],[[12919,12919],\"mapped\",[52264]],[[12920,12920],\"mapped\",[52852]],[[12921,12921],\"mapped\",[53440]],[[12922,12922],\"mapped\",[54028]],[[12923,12923],\"mapped\",[54616]],[[12924,12924],\"mapped\",[52280,44256]],[[12925,12925],\"mapped\",[51452,51032]],[[12926,12926],\"mapped\",[50864]],[[12927,12927],\"valid\",[],\"NV8\"],[[12928,12928],\"mapped\",[19968]],[[12929,12929],\"mapped\",[20108]],[[12930,12930],\"mapped\",[19977]],[[12931,12931],\"mapped\",[22235]],[[12932,12932],\"mapped\",[20116]],[[12933,12933],\"mapped\",[20845]],[[12934,12934],\"mapped\",[19971]],[[12935,12935],\"mapped\",[20843]],[[12936,12936],\"mapped\",[20061]],[[12937,12937],\"mapped\",[21313]],[[12938,12938],\"mapped\",[26376]],[[12939,12939],\"mapped\",[28779]],[[12940,12940],\"mapped\",[27700]],[[12941,12941],\"mapped\",[26408]],[[12942,12942],\"mapped\",[37329]],[[12943,12943],\"mapped\",[22303]],[[12944,12944],\"mapped\",[26085]],[[12945,12945],\"mapped\",[26666]],[[12946,12946],\"mapped\",[26377]],[[12947,12947],\"mapped\",[31038]],[[12948,12948],\"mapped\",[21517]],[[12949,12949],\"mapped\",[29305]],[[12950,12950],\"mapped\",[36001]],[[12951,12951],\"mapped\",[31069]],[[12952,12952],\"mapped\",[21172]],[[12953,12953],\"mapped\",[31192]],[[12954,12954],\"mapped\",[30007]],[[12955,12955],\"mapped\",[22899]],[[12956,12956],\"mapped\",[36969]],[[12957,12957],\"mapped\",[20778]],[[12958,12958],\"mapped\",[21360]],[[12959,12959],\"mapped\",[27880]],[[12960,12960],\"mapped\",[38917]],[[12961,12961],\"mapped\",[20241]],[[12962,12962],\"mapped\",[20889]],[[12963,12963],\"mapped\",[27491]],[[12964,12964],\"mapped\",[19978]],[[12965,12965],\"mapped\",[20013]],[[12966,12966],\"mapped\",[19979]],[[12967,12967],\"mapped\",[24038]],[[12968,12968],\"mapped\",[21491]],[[12969,12969],\"mapped\",[21307]],[[12970,12970],\"mapped\",[23447]],[[12971,12971],\"mapped\",[23398]],[[12972,12972],\"mapped\",[30435]],[[12973,12973],\"mapped\",[20225]],[[12974,12974],\"mapped\",[36039]],[[12975,12975],\"mapped\",[21332]],[[12976,12976],\"mapped\",[22812]],[[12977,12977],\"mapped\",[51,54]],[[12978,12978],\"mapped\",[51,55]],[[12979,12979],\"mapped\",[51,56]],[[12980,12980],\"mapped\",[51,57]],[[12981,12981],\"mapped\",[52,48]],[[12982,12982],\"mapped\",[52,49]],[[12983,12983],\"mapped\",[52,50]],[[12984,12984],\"mapped\",[52,51]],[[12985,12985],\"mapped\",[52,52]],[[12986,12986],\"mapped\",[52,53]],[[12987,12987],\"mapped\",[52,54]],[[12988,12988],\"mapped\",[52,55]],[[12989,12989],\"mapped\",[52,56]],[[12990,12990],\"mapped\",[52,57]],[[12991,12991],\"mapped\",[53,48]],[[12992,12992],\"mapped\",[49,26376]],[[12993,12993],\"mapped\",[50,26376]],[[12994,12994],\"mapped\",[51,26376]],[[12995,12995],\"mapped\",[52,26376]],[[12996,12996],\"mapped\",[53,26376]],[[12997,12997],\"mapped\",[54,26376]],[[12998,12998],\"mapped\",[55,26376]],[[12999,12999],\"mapped\",[56,26376]],[[13000,13000],\"mapped\",[57,26376]],[[13001,13001],\"mapped\",[49,48,26376]],[[13002,13002],\"mapped\",[49,49,26376]],[[13003,13003],\"mapped\",[49,50,26376]],[[13004,13004],\"mapped\",[104,103]],[[13005,13005],\"mapped\",[101,114,103]],[[13006,13006],\"mapped\",[101,118]],[[13007,13007],\"mapped\",[108,116,100]],[[13008,13008],\"mapped\",[12450]],[[13009,13009],\"mapped\",[12452]],[[13010,13010],\"mapped\",[12454]],[[13011,13011],\"mapped\",[12456]],[[13012,13012],\"mapped\",[12458]],[[13013,13013],\"mapped\",[12459]],[[13014,13014],\"mapped\",[12461]],[[13015,13015],\"mapped\",[12463]],[[13016,13016],\"mapped\",[12465]],[[13017,13017],\"mapped\",[12467]],[[13018,13018],\"mapped\",[12469]],[[13019,13019],\"mapped\",[12471]],[[13020,13020],\"mapped\",[12473]],[[13021,13021],\"mapped\",[12475]],[[13022,13022],\"mapped\",[12477]],[[13023,13023],\"mapped\",[12479]],[[13024,13024],\"mapped\",[12481]],[[13025,13025],\"mapped\",[12484]],[[13026,13026],\"mapped\",[12486]],[[13027,13027],\"mapped\",[12488]],[[13028,13028],\"mapped\",[12490]],[[13029,13029],\"mapped\",[12491]],[[13030,13030],\"mapped\",[12492]],[[13031,13031],\"mapped\",[12493]],[[13032,13032],\"mapped\",[12494]],[[13033,13033],\"mapped\",[12495]],[[13034,13034],\"mapped\",[12498]],[[13035,13035],\"mapped\",[12501]],[[13036,13036],\"mapped\",[12504]],[[13037,13037],\"mapped\",[12507]],[[13038,13038],\"mapped\",[12510]],[[13039,13039],\"mapped\",[12511]],[[13040,13040],\"mapped\",[12512]],[[13041,13041],\"mapped\",[12513]],[[13042,13042],\"mapped\",[12514]],[[13043,13043],\"mapped\",[12516]],[[13044,13044],\"mapped\",[12518]],[[13045,13045],\"mapped\",[12520]],[[13046,13046],\"mapped\",[12521]],[[13047,13047],\"mapped\",[12522]],[[13048,13048],\"mapped\",[12523]],[[13049,13049],\"mapped\",[12524]],[[13050,13050],\"mapped\",[12525]],[[13051,13051],\"mapped\",[12527]],[[13052,13052],\"mapped\",[12528]],[[13053,13053],\"mapped\",[12529]],[[13054,13054],\"mapped\",[12530]],[[13055,13055],\"disallowed\"],[[13056,13056],\"mapped\",[12450,12497,12540,12488]],[[13057,13057],\"mapped\",[12450,12523,12501,12449]],[[13058,13058],\"mapped\",[12450,12531,12506,12450]],[[13059,13059],\"mapped\",[12450,12540,12523]],[[13060,13060],\"mapped\",[12452,12491,12531,12464]],[[13061,13061],\"mapped\",[12452,12531,12481]],[[13062,13062],\"mapped\",[12454,12457,12531]],[[13063,13063],\"mapped\",[12456,12473,12463,12540,12489]],[[13064,13064],\"mapped\",[12456,12540,12459,12540]],[[13065,13065],\"mapped\",[12458,12531,12473]],[[13066,13066],\"mapped\",[12458,12540,12512]],[[13067,13067],\"mapped\",[12459,12452,12522]],[[13068,13068],\"mapped\",[12459,12521,12483,12488]],[[13069,13069],\"mapped\",[12459,12525,12522,12540]],[[13070,13070],\"mapped\",[12460,12525,12531]],[[13071,13071],\"mapped\",[12460,12531,12510]],[[13072,13072],\"mapped\",[12462,12460]],[[13073,13073],\"mapped\",[12462,12491,12540]],[[13074,13074],\"mapped\",[12461,12517,12522,12540]],[[13075,13075],\"mapped\",[12462,12523,12480,12540]],[[13076,13076],\"mapped\",[12461,12525]],[[13077,13077],\"mapped\",[12461,12525,12464,12521,12512]],[[13078,13078],\"mapped\",[12461,12525,12513,12540,12488,12523]],[[13079,13079],\"mapped\",[12461,12525,12527,12483,12488]],[[13080,13080],\"mapped\",[12464,12521,12512]],[[13081,13081],\"mapped\",[12464,12521,12512,12488,12531]],[[13082,13082],\"mapped\",[12463,12523,12476,12452,12525]],[[13083,13083],\"mapped\",[12463,12525,12540,12493]],[[13084,13084],\"mapped\",[12465,12540,12473]],[[13085,13085],\"mapped\",[12467,12523,12490]],[[13086,13086],\"mapped\",[12467,12540,12509]],[[13087,13087],\"mapped\",[12469,12452,12463,12523]],[[13088,13088],\"mapped\",[12469,12531,12481,12540,12512]],[[13089,13089],\"mapped\",[12471,12522,12531,12464]],[[13090,13090],\"mapped\",[12475,12531,12481]],[[13091,13091],\"mapped\",[12475,12531,12488]],[[13092,13092],\"mapped\",[12480,12540,12473]],[[13093,13093],\"mapped\",[12487,12471]],[[13094,13094],\"mapped\",[12489,12523]],[[13095,13095],\"mapped\",[12488,12531]],[[13096,13096],\"mapped\",[12490,12494]],[[13097,13097],\"mapped\",[12494,12483,12488]],[[13098,13098],\"mapped\",[12495,12452,12484]],[[13099,13099],\"mapped\",[12497,12540,12475,12531,12488]],[[13100,13100],\"mapped\",[12497,12540,12484]],[[13101,13101],\"mapped\",[12496,12540,12524,12523]],[[13102,13102],\"mapped\",[12500,12450,12473,12488,12523]],[[13103,13103],\"mapped\",[12500,12463,12523]],[[13104,13104],\"mapped\",[12500,12467]],[[13105,13105],\"mapped\",[12499,12523]],[[13106,13106],\"mapped\",[12501,12449,12521,12483,12489]],[[13107,13107],\"mapped\",[12501,12451,12540,12488]],[[13108,13108],\"mapped\",[12502,12483,12471,12455,12523]],[[13109,13109],\"mapped\",[12501,12521,12531]],[[13110,13110],\"mapped\",[12504,12463,12479,12540,12523]],[[13111,13111],\"mapped\",[12506,12477]],[[13112,13112],\"mapped\",[12506,12491,12498]],[[13113,13113],\"mapped\",[12504,12523,12484]],[[13114,13114],\"mapped\",[12506,12531,12473]],[[13115,13115],\"mapped\",[12506,12540,12472]],[[13116,13116],\"mapped\",[12505,12540,12479]],[[13117,13117],\"mapped\",[12509,12452,12531,12488]],[[13118,13118],\"mapped\",[12508,12523,12488]],[[13119,13119],\"mapped\",[12507,12531]],[[13120,13120],\"mapped\",[12509,12531,12489]],[[13121,13121],\"mapped\",[12507,12540,12523]],[[13122,13122],\"mapped\",[12507,12540,12531]],[[13123,13123],\"mapped\",[12510,12452,12463,12525]],[[13124,13124],\"mapped\",[12510,12452,12523]],[[13125,13125],\"mapped\",[12510,12483,12495]],[[13126,13126],\"mapped\",[12510,12523,12463]],[[13127,13127],\"mapped\",[12510,12531,12471,12519,12531]],[[13128,13128],\"mapped\",[12511,12463,12525,12531]],[[13129,13129],\"mapped\",[12511,12522]],[[13130,13130],\"mapped\",[12511,12522,12496,12540,12523]],[[13131,13131],\"mapped\",[12513,12460]],[[13132,13132],\"mapped\",[12513,12460,12488,12531]],[[13133,13133],\"mapped\",[12513,12540,12488,12523]],[[13134,13134],\"mapped\",[12516,12540,12489]],[[13135,13135],\"mapped\",[12516,12540,12523]],[[13136,13136],\"mapped\",[12518,12450,12531]],[[13137,13137],\"mapped\",[12522,12483,12488,12523]],[[13138,13138],\"mapped\",[12522,12521]],[[13139,13139],\"mapped\",[12523,12500,12540]],[[13140,13140],\"mapped\",[12523,12540,12502,12523]],[[13141,13141],\"mapped\",[12524,12512]],[[13142,13142],\"mapped\",[12524,12531,12488,12466,12531]],[[13143,13143],\"mapped\",[12527,12483,12488]],[[13144,13144],\"mapped\",[48,28857]],[[13145,13145],\"mapped\",[49,28857]],[[13146,13146],\"mapped\",[50,28857]],[[13147,13147],\"mapped\",[51,28857]],[[13148,13148],\"mapped\",[52,28857]],[[13149,13149],\"mapped\",[53,28857]],[[13150,13150],\"mapped\",[54,28857]],[[13151,13151],\"mapped\",[55,28857]],[[13152,13152],\"mapped\",[56,28857]],[[13153,13153],\"mapped\",[57,28857]],[[13154,13154],\"mapped\",[49,48,28857]],[[13155,13155],\"mapped\",[49,49,28857]],[[13156,13156],\"mapped\",[49,50,28857]],[[13157,13157],\"mapped\",[49,51,28857]],[[13158,13158],\"mapped\",[49,52,28857]],[[13159,13159],\"mapped\",[49,53,28857]],[[13160,13160],\"mapped\",[49,54,28857]],[[13161,13161],\"mapped\",[49,55,28857]],[[13162,13162],\"mapped\",[49,56,28857]],[[13163,13163],\"mapped\",[49,57,28857]],[[13164,13164],\"mapped\",[50,48,28857]],[[13165,13165],\"mapped\",[50,49,28857]],[[13166,13166],\"mapped\",[50,50,28857]],[[13167,13167],\"mapped\",[50,51,28857]],[[13168,13168],\"mapped\",[50,52,28857]],[[13169,13169],\"mapped\",[104,112,97]],[[13170,13170],\"mapped\",[100,97]],[[13171,13171],\"mapped\",[97,117]],[[13172,13172],\"mapped\",[98,97,114]],[[13173,13173],\"mapped\",[111,118]],[[13174,13174],\"mapped\",[112,99]],[[13175,13175],\"mapped\",[100,109]],[[13176,13176],\"mapped\",[100,109,50]],[[13177,13177],\"mapped\",[100,109,51]],[[13178,13178],\"mapped\",[105,117]],[[13179,13179],\"mapped\",[24179,25104]],[[13180,13180],\"mapped\",[26157,21644]],[[13181,13181],\"mapped\",[22823,27491]],[[13182,13182],\"mapped\",[26126,27835]],[[13183,13183],\"mapped\",[26666,24335,20250,31038]],[[13184,13184],\"mapped\",[112,97]],[[13185,13185],\"mapped\",[110,97]],[[13186,13186],\"mapped\",[956,97]],[[13187,13187],\"mapped\",[109,97]],[[13188,13188],\"mapped\",[107,97]],[[13189,13189],\"mapped\",[107,98]],[[13190,13190],\"mapped\",[109,98]],[[13191,13191],\"mapped\",[103,98]],[[13192,13192],\"mapped\",[99,97,108]],[[13193,13193],\"mapped\",[107,99,97,108]],[[13194,13194],\"mapped\",[112,102]],[[13195,13195],\"mapped\",[110,102]],[[13196,13196],\"mapped\",[956,102]],[[13197,13197],\"mapped\",[956,103]],[[13198,13198],\"mapped\",[109,103]],[[13199,13199],\"mapped\",[107,103]],[[13200,13200],\"mapped\",[104,122]],[[13201,13201],\"mapped\",[107,104,122]],[[13202,13202],\"mapped\",[109,104,122]],[[13203,13203],\"mapped\",[103,104,122]],[[13204,13204],\"mapped\",[116,104,122]],[[13205,13205],\"mapped\",[956,108]],[[13206,13206],\"mapped\",[109,108]],[[13207,13207],\"mapped\",[100,108]],[[13208,13208],\"mapped\",[107,108]],[[13209,13209],\"mapped\",[102,109]],[[13210,13210],\"mapped\",[110,109]],[[13211,13211],\"mapped\",[956,109]],[[13212,13212],\"mapped\",[109,109]],[[13213,13213],\"mapped\",[99,109]],[[13214,13214],\"mapped\",[107,109]],[[13215,13215],\"mapped\",[109,109,50]],[[13216,13216],\"mapped\",[99,109,50]],[[13217,13217],\"mapped\",[109,50]],[[13218,13218],\"mapped\",[107,109,50]],[[13219,13219],\"mapped\",[109,109,51]],[[13220,13220],\"mapped\",[99,109,51]],[[13221,13221],\"mapped\",[109,51]],[[13222,13222],\"mapped\",[107,109,51]],[[13223,13223],\"mapped\",[109,8725,115]],[[13224,13224],\"mapped\",[109,8725,115,50]],[[13225,13225],\"mapped\",[112,97]],[[13226,13226],\"mapped\",[107,112,97]],[[13227,13227],\"mapped\",[109,112,97]],[[13228,13228],\"mapped\",[103,112,97]],[[13229,13229],\"mapped\",[114,97,100]],[[13230,13230],\"mapped\",[114,97,100,8725,115]],[[13231,13231],\"mapped\",[114,97,100,8725,115,50]],[[13232,13232],\"mapped\",[112,115]],[[13233,13233],\"mapped\",[110,115]],[[13234,13234],\"mapped\",[956,115]],[[13235,13235],\"mapped\",[109,115]],[[13236,13236],\"mapped\",[112,118]],[[13237,13237],\"mapped\",[110,118]],[[13238,13238],\"mapped\",[956,118]],[[13239,13239],\"mapped\",[109,118]],[[13240,13240],\"mapped\",[107,118]],[[13241,13241],\"mapped\",[109,118]],[[13242,13242],\"mapped\",[112,119]],[[13243,13243],\"mapped\",[110,119]],[[13244,13244],\"mapped\",[956,119]],[[13245,13245],\"mapped\",[109,119]],[[13246,13246],\"mapped\",[107,119]],[[13247,13247],\"mapped\",[109,119]],[[13248,13248],\"mapped\",[107,969]],[[13249,13249],\"mapped\",[109,969]],[[13250,13250],\"disallowed\"],[[13251,13251],\"mapped\",[98,113]],[[13252,13252],\"mapped\",[99,99]],[[13253,13253],\"mapped\",[99,100]],[[13254,13254],\"mapped\",[99,8725,107,103]],[[13255,13255],\"disallowed\"],[[13256,13256],\"mapped\",[100,98]],[[13257,13257],\"mapped\",[103,121]],[[13258,13258],\"mapped\",[104,97]],[[13259,13259],\"mapped\",[104,112]],[[13260,13260],\"mapped\",[105,110]],[[13261,13261],\"mapped\",[107,107]],[[13262,13262],\"mapped\",[107,109]],[[13263,13263],\"mapped\",[107,116]],[[13264,13264],\"mapped\",[108,109]],[[13265,13265],\"mapped\",[108,110]],[[13266,13266],\"mapped\",[108,111,103]],[[13267,13267],\"mapped\",[108,120]],[[13268,13268],\"mapped\",[109,98]],[[13269,13269],\"mapped\",[109,105,108]],[[13270,13270],\"mapped\",[109,111,108]],[[13271,13271],\"mapped\",[112,104]],[[13272,13272],\"disallowed\"],[[13273,13273],\"mapped\",[112,112,109]],[[13274,13274],\"mapped\",[112,114]],[[13275,13275],\"mapped\",[115,114]],[[13276,13276],\"mapped\",[115,118]],[[13277,13277],\"mapped\",[119,98]],[[13278,13278],\"mapped\",[118,8725,109]],[[13279,13279],\"mapped\",[97,8725,109]],[[13280,13280],\"mapped\",[49,26085]],[[13281,13281],\"mapped\",[50,26085]],[[13282,13282],\"mapped\",[51,26085]],[[13283,13283],\"mapped\",[52,26085]],[[13284,13284],\"mapped\",[53,26085]],[[13285,13285],\"mapped\",[54,26085]],[[13286,13286],\"mapped\",[55,26085]],[[13287,13287],\"mapped\",[56,26085]],[[13288,13288],\"mapped\",[57,26085]],[[13289,13289],\"mapped\",[49,48,26085]],[[13290,13290],\"mapped\",[49,49,26085]],[[13291,13291],\"mapped\",[49,50,26085]],[[13292,13292],\"mapped\",[49,51,26085]],[[13293,13293],\"mapped\",[49,52,26085]],[[13294,13294],\"mapped\",[49,53,26085]],[[13295,13295],\"mapped\",[49,54,26085]],[[13296,13296],\"mapped\",[49,55,26085]],[[13297,13297],\"mapped\",[49,56,26085]],[[13298,13298],\"mapped\",[49,57,26085]],[[13299,13299],\"mapped\",[50,48,26085]],[[13300,13300],\"mapped\",[50,49,26085]],[[13301,13301],\"mapped\",[50,50,26085]],[[13302,13302],\"mapped\",[50,51,26085]],[[13303,13303],\"mapped\",[50,52,26085]],[[13304,13304],\"mapped\",[50,53,26085]],[[13305,13305],\"mapped\",[50,54,26085]],[[13306,13306],\"mapped\",[50,55,26085]],[[13307,13307],\"mapped\",[50,56,26085]],[[13308,13308],\"mapped\",[50,57,26085]],[[13309,13309],\"mapped\",[51,48,26085]],[[13310,13310],\"mapped\",[51,49,26085]],[[13311,13311],\"mapped\",[103,97,108]],[[13312,19893],\"valid\"],[[19894,19903],\"disallowed\"],[[19904,19967],\"valid\",[],\"NV8\"],[[19968,40869],\"valid\"],[[40870,40891],\"valid\"],[[40892,40899],\"valid\"],[[40900,40907],\"valid\"],[[40908,40908],\"valid\"],[[40909,40917],\"valid\"],[[40918,40959],\"disallowed\"],[[40960,42124],\"valid\"],[[42125,42127],\"disallowed\"],[[42128,42145],\"valid\",[],\"NV8\"],[[42146,42147],\"valid\",[],\"NV8\"],[[42148,42163],\"valid\",[],\"NV8\"],[[42164,42164],\"valid\",[],\"NV8\"],[[42165,42176],\"valid\",[],\"NV8\"],[[42177,42177],\"valid\",[],\"NV8\"],[[42178,42180],\"valid\",[],\"NV8\"],[[42181,42181],\"valid\",[],\"NV8\"],[[42182,42182],\"valid\",[],\"NV8\"],[[42183,42191],\"disallowed\"],[[42192,42237],\"valid\"],[[42238,42239],\"valid\",[],\"NV8\"],[[42240,42508],\"valid\"],[[42509,42511],\"valid\",[],\"NV8\"],[[42512,42539],\"valid\"],[[42540,42559],\"disallowed\"],[[42560,42560],\"mapped\",[42561]],[[42561,42561],\"valid\"],[[42562,42562],\"mapped\",[42563]],[[42563,42563],\"valid\"],[[42564,42564],\"mapped\",[42565]],[[42565,42565],\"valid\"],[[42566,42566],\"mapped\",[42567]],[[42567,42567],\"valid\"],[[42568,42568],\"mapped\",[42569]],[[42569,42569],\"valid\"],[[42570,42570],\"mapped\",[42571]],[[42571,42571],\"valid\"],[[42572,42572],\"mapped\",[42573]],[[42573,42573],\"valid\"],[[42574,42574],\"mapped\",[42575]],[[42575,42575],\"valid\"],[[42576,42576],\"mapped\",[42577]],[[42577,42577],\"valid\"],[[42578,42578],\"mapped\",[42579]],[[42579,42579],\"valid\"],[[42580,42580],\"mapped\",[42581]],[[42581,42581],\"valid\"],[[42582,42582],\"mapped\",[42583]],[[42583,42583],\"valid\"],[[42584,42584],\"mapped\",[42585]],[[42585,42585],\"valid\"],[[42586,42586],\"mapped\",[42587]],[[42587,42587],\"valid\"],[[42588,42588],\"mapped\",[42589]],[[42589,42589],\"valid\"],[[42590,42590],\"mapped\",[42591]],[[42591,42591],\"valid\"],[[42592,42592],\"mapped\",[42593]],[[42593,42593],\"valid\"],[[42594,42594],\"mapped\",[42595]],[[42595,42595],\"valid\"],[[42596,42596],\"mapped\",[42597]],[[42597,42597],\"valid\"],[[42598,42598],\"mapped\",[42599]],[[42599,42599],\"valid\"],[[42600,42600],\"mapped\",[42601]],[[42601,42601],\"valid\"],[[42602,42602],\"mapped\",[42603]],[[42603,42603],\"valid\"],[[42604,42604],\"mapped\",[42605]],[[42605,42607],\"valid\"],[[42608,42611],\"valid\",[],\"NV8\"],[[42612,42619],\"valid\"],[[42620,42621],\"valid\"],[[42622,42622],\"valid\",[],\"NV8\"],[[42623,42623],\"valid\"],[[42624,42624],\"mapped\",[42625]],[[42625,42625],\"valid\"],[[42626,42626],\"mapped\",[42627]],[[42627,42627],\"valid\"],[[42628,42628],\"mapped\",[42629]],[[42629,42629],\"valid\"],[[42630,42630],\"mapped\",[42631]],[[42631,42631],\"valid\"],[[42632,42632],\"mapped\",[42633]],[[42633,42633],\"valid\"],[[42634,42634],\"mapped\",[42635]],[[42635,42635],\"valid\"],[[42636,42636],\"mapped\",[42637]],[[42637,42637],\"valid\"],[[42638,42638],\"mapped\",[42639]],[[42639,42639],\"valid\"],[[42640,42640],\"mapped\",[42641]],[[42641,42641],\"valid\"],[[42642,42642],\"mapped\",[42643]],[[42643,42643],\"valid\"],[[42644,42644],\"mapped\",[42645]],[[42645,42645],\"valid\"],[[42646,42646],\"mapped\",[42647]],[[42647,42647],\"valid\"],[[42648,42648],\"mapped\",[42649]],[[42649,42649],\"valid\"],[[42650,42650],\"mapped\",[42651]],[[42651,42651],\"valid\"],[[42652,42652],\"mapped\",[1098]],[[42653,42653],\"mapped\",[1100]],[[42654,42654],\"valid\"],[[42655,42655],\"valid\"],[[42656,42725],\"valid\"],[[42726,42735],\"valid\",[],\"NV8\"],[[42736,42737],\"valid\"],[[42738,42743],\"valid\",[],\"NV8\"],[[42744,42751],\"disallowed\"],[[42752,42774],\"valid\",[],\"NV8\"],[[42775,42778],\"valid\"],[[42779,42783],\"valid\"],[[42784,42785],\"valid\",[],\"NV8\"],[[42786,42786],\"mapped\",[42787]],[[42787,42787],\"valid\"],[[42788,42788],\"mapped\",[42789]],[[42789,42789],\"valid\"],[[42790,42790],\"mapped\",[42791]],[[42791,42791],\"valid\"],[[42792,42792],\"mapped\",[42793]],[[42793,42793],\"valid\"],[[42794,42794],\"mapped\",[42795]],[[42795,42795],\"valid\"],[[42796,42796],\"mapped\",[42797]],[[42797,42797],\"valid\"],[[42798,42798],\"mapped\",[42799]],[[42799,42801],\"valid\"],[[42802,42802],\"mapped\",[42803]],[[42803,42803],\"valid\"],[[42804,42804],\"mapped\",[42805]],[[42805,42805],\"valid\"],[[42806,42806],\"mapped\",[42807]],[[42807,42807],\"valid\"],[[42808,42808],\"mapped\",[42809]],[[42809,42809],\"valid\"],[[42810,42810],\"mapped\",[42811]],[[42811,42811],\"valid\"],[[42812,42812],\"mapped\",[42813]],[[42813,42813],\"valid\"],[[42814,42814],\"mapped\",[42815]],[[42815,42815],\"valid\"],[[42816,42816],\"mapped\",[42817]],[[42817,42817],\"valid\"],[[42818,42818],\"mapped\",[42819]],[[42819,42819],\"valid\"],[[42820,42820],\"mapped\",[42821]],[[42821,42821],\"valid\"],[[42822,42822],\"mapped\",[42823]],[[42823,42823],\"valid\"],[[42824,42824],\"mapped\",[42825]],[[42825,42825],\"valid\"],[[42826,42826],\"mapped\",[42827]],[[42827,42827],\"valid\"],[[42828,42828],\"mapped\",[42829]],[[42829,42829],\"valid\"],[[42830,42830],\"mapped\",[42831]],[[42831,42831],\"valid\"],[[42832,42832],\"mapped\",[42833]],[[42833,42833],\"valid\"],[[42834,42834],\"mapped\",[42835]],[[42835,42835],\"valid\"],[[42836,42836],\"mapped\",[42837]],[[42837,42837],\"valid\"],[[42838,42838],\"mapped\",[42839]],[[42839,42839],\"valid\"],[[42840,42840],\"mapped\",[42841]],[[42841,42841],\"valid\"],[[42842,42842],\"mapped\",[42843]],[[42843,42843],\"valid\"],[[42844,42844],\"mapped\",[42845]],[[42845,42845],\"valid\"],[[42846,42846],\"mapped\",[42847]],[[42847,42847],\"valid\"],[[42848,42848],\"mapped\",[42849]],[[42849,42849],\"valid\"],[[42850,42850],\"mapped\",[42851]],[[42851,42851],\"valid\"],[[42852,42852],\"mapped\",[42853]],[[42853,42853],\"valid\"],[[42854,42854],\"mapped\",[42855]],[[42855,42855],\"valid\"],[[42856,42856],\"mapped\",[42857]],[[42857,42857],\"valid\"],[[42858,42858],\"mapped\",[42859]],[[42859,42859],\"valid\"],[[42860,42860],\"mapped\",[42861]],[[42861,42861],\"valid\"],[[42862,42862],\"mapped\",[42863]],[[42863,42863],\"valid\"],[[42864,42864],\"mapped\",[42863]],[[42865,42872],\"valid\"],[[42873,42873],\"mapped\",[42874]],[[42874,42874],\"valid\"],[[42875,42875],\"mapped\",[42876]],[[42876,42876],\"valid\"],[[42877,42877],\"mapped\",[7545]],[[42878,42878],\"mapped\",[42879]],[[42879,42879],\"valid\"],[[42880,42880],\"mapped\",[42881]],[[42881,42881],\"valid\"],[[42882,42882],\"mapped\",[42883]],[[42883,42883],\"valid\"],[[42884,42884],\"mapped\",[42885]],[[42885,42885],\"valid\"],[[42886,42886],\"mapped\",[42887]],[[42887,42888],\"valid\"],[[42889,42890],\"valid\",[],\"NV8\"],[[42891,42891],\"mapped\",[42892]],[[42892,42892],\"valid\"],[[42893,42893],\"mapped\",[613]],[[42894,42894],\"valid\"],[[42895,42895],\"valid\"],[[42896,42896],\"mapped\",[42897]],[[42897,42897],\"valid\"],[[42898,42898],\"mapped\",[42899]],[[42899,42899],\"valid\"],[[42900,42901],\"valid\"],[[42902,42902],\"mapped\",[42903]],[[42903,42903],\"valid\"],[[42904,42904],\"mapped\",[42905]],[[42905,42905],\"valid\"],[[42906,42906],\"mapped\",[42907]],[[42907,42907],\"valid\"],[[42908,42908],\"mapped\",[42909]],[[42909,42909],\"valid\"],[[42910,42910],\"mapped\",[42911]],[[42911,42911],\"valid\"],[[42912,42912],\"mapped\",[42913]],[[42913,42913],\"valid\"],[[42914,42914],\"mapped\",[42915]],[[42915,42915],\"valid\"],[[42916,42916],\"mapped\",[42917]],[[42917,42917],\"valid\"],[[42918,42918],\"mapped\",[42919]],[[42919,42919],\"valid\"],[[42920,42920],\"mapped\",[42921]],[[42921,42921],\"valid\"],[[42922,42922],\"mapped\",[614]],[[42923,42923],\"mapped\",[604]],[[42924,42924],\"mapped\",[609]],[[42925,42925],\"mapped\",[620]],[[42926,42927],\"disallowed\"],[[42928,42928],\"mapped\",[670]],[[42929,42929],\"mapped\",[647]],[[42930,42930],\"mapped\",[669]],[[42931,42931],\"mapped\",[43859]],[[42932,42932],\"mapped\",[42933]],[[42933,42933],\"valid\"],[[42934,42934],\"mapped\",[42935]],[[42935,42935],\"valid\"],[[42936,42998],\"disallowed\"],[[42999,42999],\"valid\"],[[43000,43000],\"mapped\",[295]],[[43001,43001],\"mapped\",[339]],[[43002,43002],\"valid\"],[[43003,43007],\"valid\"],[[43008,43047],\"valid\"],[[43048,43051],\"valid\",[],\"NV8\"],[[43052,43055],\"disallowed\"],[[43056,43065],\"valid\",[],\"NV8\"],[[43066,43071],\"disallowed\"],[[43072,43123],\"valid\"],[[43124,43127],\"valid\",[],\"NV8\"],[[43128,43135],\"disallowed\"],[[43136,43204],\"valid\"],[[43205,43213],\"disallowed\"],[[43214,43215],\"valid\",[],\"NV8\"],[[43216,43225],\"valid\"],[[43226,43231],\"disallowed\"],[[43232,43255],\"valid\"],[[43256,43258],\"valid\",[],\"NV8\"],[[43259,43259],\"valid\"],[[43260,43260],\"valid\",[],\"NV8\"],[[43261,43261],\"valid\"],[[43262,43263],\"disallowed\"],[[43264,43309],\"valid\"],[[43310,43311],\"valid\",[],\"NV8\"],[[43312,43347],\"valid\"],[[43348,43358],\"disallowed\"],[[43359,43359],\"valid\",[],\"NV8\"],[[43360,43388],\"valid\",[],\"NV8\"],[[43389,43391],\"disallowed\"],[[43392,43456],\"valid\"],[[43457,43469],\"valid\",[],\"NV8\"],[[43470,43470],\"disallowed\"],[[43471,43481],\"valid\"],[[43482,43485],\"disallowed\"],[[43486,43487],\"valid\",[],\"NV8\"],[[43488,43518],\"valid\"],[[43519,43519],\"disallowed\"],[[43520,43574],\"valid\"],[[43575,43583],\"disallowed\"],[[43584,43597],\"valid\"],[[43598,43599],\"disallowed\"],[[43600,43609],\"valid\"],[[43610,43611],\"disallowed\"],[[43612,43615],\"valid\",[],\"NV8\"],[[43616,43638],\"valid\"],[[43639,43641],\"valid\",[],\"NV8\"],[[43642,43643],\"valid\"],[[43644,43647],\"valid\"],[[43648,43714],\"valid\"],[[43715,43738],\"disallowed\"],[[43739,43741],\"valid\"],[[43742,43743],\"valid\",[],\"NV8\"],[[43744,43759],\"valid\"],[[43760,43761],\"valid\",[],\"NV8\"],[[43762,43766],\"valid\"],[[43767,43776],\"disallowed\"],[[43777,43782],\"valid\"],[[43783,43784],\"disallowed\"],[[43785,43790],\"valid\"],[[43791,43792],\"disallowed\"],[[43793,43798],\"valid\"],[[43799,43807],\"disallowed\"],[[43808,43814],\"valid\"],[[43815,43815],\"disallowed\"],[[43816,43822],\"valid\"],[[43823,43823],\"disallowed\"],[[43824,43866],\"valid\"],[[43867,43867],\"valid\",[],\"NV8\"],[[43868,43868],\"mapped\",[42791]],[[43869,43869],\"mapped\",[43831]],[[43870,43870],\"mapped\",[619]],[[43871,43871],\"mapped\",[43858]],[[43872,43875],\"valid\"],[[43876,43877],\"valid\"],[[43878,43887],\"disallowed\"],[[43888,43888],\"mapped\",[5024]],[[43889,43889],\"mapped\",[5025]],[[43890,43890],\"mapped\",[5026]],[[43891,43891],\"mapped\",[5027]],[[43892,43892],\"mapped\",[5028]],[[43893,43893],\"mapped\",[5029]],[[43894,43894],\"mapped\",[5030]],[[43895,43895],\"mapped\",[5031]],[[43896,43896],\"mapped\",[5032]],[[43897,43897],\"mapped\",[5033]],[[43898,43898],\"mapped\",[5034]],[[43899,43899],\"mapped\",[5035]],[[43900,43900],\"mapped\",[5036]],[[43901,43901],\"mapped\",[5037]],[[43902,43902],\"mapped\",[5038]],[[43903,43903],\"mapped\",[5039]],[[43904,43904],\"mapped\",[5040]],[[43905,43905],\"mapped\",[5041]],[[43906,43906],\"mapped\",[5042]],[[43907,43907],\"mapped\",[5043]],[[43908,43908],\"mapped\",[5044]],[[43909,43909],\"mapped\",[5045]],[[43910,43910],\"mapped\",[5046]],[[43911,43911],\"mapped\",[5047]],[[43912,43912],\"mapped\",[5048]],[[43913,43913],\"mapped\",[5049]],[[43914,43914],\"mapped\",[5050]],[[43915,43915],\"mapped\",[5051]],[[43916,43916],\"mapped\",[5052]],[[43917,43917],\"mapped\",[5053]],[[43918,43918],\"mapped\",[5054]],[[43919,43919],\"mapped\",[5055]],[[43920,43920],\"mapped\",[5056]],[[43921,43921],\"mapped\",[5057]],[[43922,43922],\"mapped\",[5058]],[[43923,43923],\"mapped\",[5059]],[[43924,43924],\"mapped\",[5060]],[[43925,43925],\"mapped\",[5061]],[[43926,43926],\"mapped\",[5062]],[[43927,43927],\"mapped\",[5063]],[[43928,43928],\"mapped\",[5064]],[[43929,43929],\"mapped\",[5065]],[[43930,43930],\"mapped\",[5066]],[[43931,43931],\"mapped\",[5067]],[[43932,43932],\"mapped\",[5068]],[[43933,43933],\"mapped\",[5069]],[[43934,43934],\"mapped\",[5070]],[[43935,43935],\"mapped\",[5071]],[[43936,43936],\"mapped\",[5072]],[[43937,43937],\"mapped\",[5073]],[[43938,43938],\"mapped\",[5074]],[[43939,43939],\"mapped\",[5075]],[[43940,43940],\"mapped\",[5076]],[[43941,43941],\"mapped\",[5077]],[[43942,43942],\"mapped\",[5078]],[[43943,43943],\"mapped\",[5079]],[[43944,43944],\"mapped\",[5080]],[[43945,43945],\"mapped\",[5081]],[[43946,43946],\"mapped\",[5082]],[[43947,43947],\"mapped\",[5083]],[[43948,43948],\"mapped\",[5084]],[[43949,43949],\"mapped\",[5085]],[[43950,43950],\"mapped\",[5086]],[[43951,43951],\"mapped\",[5087]],[[43952,43952],\"mapped\",[5088]],[[43953,43953],\"mapped\",[5089]],[[43954,43954],\"mapped\",[5090]],[[43955,43955],\"mapped\",[5091]],[[43956,43956],\"mapped\",[5092]],[[43957,43957],\"mapped\",[5093]],[[43958,43958],\"mapped\",[5094]],[[43959,43959],\"mapped\",[5095]],[[43960,43960],\"mapped\",[5096]],[[43961,43961],\"mapped\",[5097]],[[43962,43962],\"mapped\",[5098]],[[43963,43963],\"mapped\",[5099]],[[43964,43964],\"mapped\",[5100]],[[43965,43965],\"mapped\",[5101]],[[43966,43966],\"mapped\",[5102]],[[43967,43967],\"mapped\",[5103]],[[43968,44010],\"valid\"],[[44011,44011],\"valid\",[],\"NV8\"],[[44012,44013],\"valid\"],[[44014,44015],\"disallowed\"],[[44016,44025],\"valid\"],[[44026,44031],\"disallowed\"],[[44032,55203],\"valid\"],[[55204,55215],\"disallowed\"],[[55216,55238],\"valid\",[],\"NV8\"],[[55239,55242],\"disallowed\"],[[55243,55291],\"valid\",[],\"NV8\"],[[55292,55295],\"disallowed\"],[[55296,57343],\"disallowed\"],[[57344,63743],\"disallowed\"],[[63744,63744],\"mapped\",[35912]],[[63745,63745],\"mapped\",[26356]],[[63746,63746],\"mapped\",[36554]],[[63747,63747],\"mapped\",[36040]],[[63748,63748],\"mapped\",[28369]],[[63749,63749],\"mapped\",[20018]],[[63750,63750],\"mapped\",[21477]],[[63751,63752],\"mapped\",[40860]],[[63753,63753],\"mapped\",[22865]],[[63754,63754],\"mapped\",[37329]],[[63755,63755],\"mapped\",[21895]],[[63756,63756],\"mapped\",[22856]],[[63757,63757],\"mapped\",[25078]],[[63758,63758],\"mapped\",[30313]],[[63759,63759],\"mapped\",[32645]],[[63760,63760],\"mapped\",[34367]],[[63761,63761],\"mapped\",[34746]],[[63762,63762],\"mapped\",[35064]],[[63763,63763],\"mapped\",[37007]],[[63764,63764],\"mapped\",[27138]],[[63765,63765],\"mapped\",[27931]],[[63766,63766],\"mapped\",[28889]],[[63767,63767],\"mapped\",[29662]],[[63768,63768],\"mapped\",[33853]],[[63769,63769],\"mapped\",[37226]],[[63770,63770],\"mapped\",[39409]],[[63771,63771],\"mapped\",[20098]],[[63772,63772],\"mapped\",[21365]],[[63773,63773],\"mapped\",[27396]],[[63774,63774],\"mapped\",[29211]],[[63775,63775],\"mapped\",[34349]],[[63776,63776],\"mapped\",[40478]],[[63777,63777],\"mapped\",[23888]],[[63778,63778],\"mapped\",[28651]],[[63779,63779],\"mapped\",[34253]],[[63780,63780],\"mapped\",[35172]],[[63781,63781],\"mapped\",[25289]],[[63782,63782],\"mapped\",[33240]],[[63783,63783],\"mapped\",[34847]],[[63784,63784],\"mapped\",[24266]],[[63785,63785],\"mapped\",[26391]],[[63786,63786],\"mapped\",[28010]],[[63787,63787],\"mapped\",[29436]],[[63788,63788],\"mapped\",[37070]],[[63789,63789],\"mapped\",[20358]],[[63790,63790],\"mapped\",[20919]],[[63791,63791],\"mapped\",[21214]],[[63792,63792],\"mapped\",[25796]],[[63793,63793],\"mapped\",[27347]],[[63794,63794],\"mapped\",[29200]],[[63795,63795],\"mapped\",[30439]],[[63796,63796],\"mapped\",[32769]],[[63797,63797],\"mapped\",[34310]],[[63798,63798],\"mapped\",[34396]],[[63799,63799],\"mapped\",[36335]],[[63800,63800],\"mapped\",[38706]],[[63801,63801],\"mapped\",[39791]],[[63802,63802],\"mapped\",[40442]],[[63803,63803],\"mapped\",[30860]],[[63804,63804],\"mapped\",[31103]],[[63805,63805],\"mapped\",[32160]],[[63806,63806],\"mapped\",[33737]],[[63807,63807],\"mapped\",[37636]],[[63808,63808],\"mapped\",[40575]],[[63809,63809],\"mapped\",[35542]],[[63810,63810],\"mapped\",[22751]],[[63811,63811],\"mapped\",[24324]],[[63812,63812],\"mapped\",[31840]],[[63813,63813],\"mapped\",[32894]],[[63814,63814],\"mapped\",[29282]],[[63815,63815],\"mapped\",[30922]],[[63816,63816],\"mapped\",[36034]],[[63817,63817],\"mapped\",[38647]],[[63818,63818],\"mapped\",[22744]],[[63819,63819],\"mapped\",[23650]],[[63820,63820],\"mapped\",[27155]],[[63821,63821],\"mapped\",[28122]],[[63822,63822],\"mapped\",[28431]],[[63823,63823],\"mapped\",[32047]],[[63824,63824],\"mapped\",[32311]],[[63825,63825],\"mapped\",[38475]],[[63826,63826],\"mapped\",[21202]],[[63827,63827],\"mapped\",[32907]],[[63828,63828],\"mapped\",[20956]],[[63829,63829],\"mapped\",[20940]],[[63830,63830],\"mapped\",[31260]],[[63831,63831],\"mapped\",[32190]],[[63832,63832],\"mapped\",[33777]],[[63833,63833],\"mapped\",[38517]],[[63834,63834],\"mapped\",[35712]],[[63835,63835],\"mapped\",[25295]],[[63836,63836],\"mapped\",[27138]],[[63837,63837],\"mapped\",[35582]],[[63838,63838],\"mapped\",[20025]],[[63839,63839],\"mapped\",[23527]],[[63840,63840],\"mapped\",[24594]],[[63841,63841],\"mapped\",[29575]],[[63842,63842],\"mapped\",[30064]],[[63843,63843],\"mapped\",[21271]],[[63844,63844],\"mapped\",[30971]],[[63845,63845],\"mapped\",[20415]],[[63846,63846],\"mapped\",[24489]],[[63847,63847],\"mapped\",[19981]],[[63848,63848],\"mapped\",[27852]],[[63849,63849],\"mapped\",[25976]],[[63850,63850],\"mapped\",[32034]],[[63851,63851],\"mapped\",[21443]],[[63852,63852],\"mapped\",[22622]],[[63853,63853],\"mapped\",[30465]],[[63854,63854],\"mapped\",[33865]],[[63855,63855],\"mapped\",[35498]],[[63856,63856],\"mapped\",[27578]],[[63857,63857],\"mapped\",[36784]],[[63858,63858],\"mapped\",[27784]],[[63859,63859],\"mapped\",[25342]],[[63860,63860],\"mapped\",[33509]],[[63861,63861],\"mapped\",[25504]],[[63862,63862],\"mapped\",[30053]],[[63863,63863],\"mapped\",[20142]],[[63864,63864],\"mapped\",[20841]],[[63865,63865],\"mapped\",[20937]],[[63866,63866],\"mapped\",[26753]],[[63867,63867],\"mapped\",[31975]],[[63868,63868],\"mapped\",[33391]],[[63869,63869],\"mapped\",[35538]],[[63870,63870],\"mapped\",[37327]],[[63871,63871],\"mapped\",[21237]],[[63872,63872],\"mapped\",[21570]],[[63873,63873],\"mapped\",[22899]],[[63874,63874],\"mapped\",[24300]],[[63875,63875],\"mapped\",[26053]],[[63876,63876],\"mapped\",[28670]],[[63877,63877],\"mapped\",[31018]],[[63878,63878],\"mapped\",[38317]],[[63879,63879],\"mapped\",[39530]],[[63880,63880],\"mapped\",[40599]],[[63881,63881],\"mapped\",[40654]],[[63882,63882],\"mapped\",[21147]],[[63883,63883],\"mapped\",[26310]],[[63884,63884],\"mapped\",[27511]],[[63885,63885],\"mapped\",[36706]],[[63886,63886],\"mapped\",[24180]],[[63887,63887],\"mapped\",[24976]],[[63888,63888],\"mapped\",[25088]],[[63889,63889],\"mapped\",[25754]],[[63890,63890],\"mapped\",[28451]],[[63891,63891],\"mapped\",[29001]],[[63892,63892],\"mapped\",[29833]],[[63893,63893],\"mapped\",[31178]],[[63894,63894],\"mapped\",[32244]],[[63895,63895],\"mapped\",[32879]],[[63896,63896],\"mapped\",[36646]],[[63897,63897],\"mapped\",[34030]],[[63898,63898],\"mapped\",[36899]],[[63899,63899],\"mapped\",[37706]],[[63900,63900],\"mapped\",[21015]],[[63901,63901],\"mapped\",[21155]],[[63902,63902],\"mapped\",[21693]],[[63903,63903],\"mapped\",[28872]],[[63904,63904],\"mapped\",[35010]],[[63905,63905],\"mapped\",[35498]],[[63906,63906],\"mapped\",[24265]],[[63907,63907],\"mapped\",[24565]],[[63908,63908],\"mapped\",[25467]],[[63909,63909],\"mapped\",[27566]],[[63910,63910],\"mapped\",[31806]],[[63911,63911],\"mapped\",[29557]],[[63912,63912],\"mapped\",[20196]],[[63913,63913],\"mapped\",[22265]],[[63914,63914],\"mapped\",[23527]],[[63915,63915],\"mapped\",[23994]],[[63916,63916],\"mapped\",[24604]],[[63917,63917],\"mapped\",[29618]],[[63918,63918],\"mapped\",[29801]],[[63919,63919],\"mapped\",[32666]],[[63920,63920],\"mapped\",[32838]],[[63921,63921],\"mapped\",[37428]],[[63922,63922],\"mapped\",[38646]],[[63923,63923],\"mapped\",[38728]],[[63924,63924],\"mapped\",[38936]],[[63925,63925],\"mapped\",[20363]],[[63926,63926],\"mapped\",[31150]],[[63927,63927],\"mapped\",[37300]],[[63928,63928],\"mapped\",[38584]],[[63929,63929],\"mapped\",[24801]],[[63930,63930],\"mapped\",[20102]],[[63931,63931],\"mapped\",[20698]],[[63932,63932],\"mapped\",[23534]],[[63933,63933],\"mapped\",[23615]],[[63934,63934],\"mapped\",[26009]],[[63935,63935],\"mapped\",[27138]],[[63936,63936],\"mapped\",[29134]],[[63937,63937],\"mapped\",[30274]],[[63938,63938],\"mapped\",[34044]],[[63939,63939],\"mapped\",[36988]],[[63940,63940],\"mapped\",[40845]],[[63941,63941],\"mapped\",[26248]],[[63942,63942],\"mapped\",[38446]],[[63943,63943],\"mapped\",[21129]],[[63944,63944],\"mapped\",[26491]],[[63945,63945],\"mapped\",[26611]],[[63946,63946],\"mapped\",[27969]],[[63947,63947],\"mapped\",[28316]],[[63948,63948],\"mapped\",[29705]],[[63949,63949],\"mapped\",[30041]],[[63950,63950],\"mapped\",[30827]],[[63951,63951],\"mapped\",[32016]],[[63952,63952],\"mapped\",[39006]],[[63953,63953],\"mapped\",[20845]],[[63954,63954],\"mapped\",[25134]],[[63955,63955],\"mapped\",[38520]],[[63956,63956],\"mapped\",[20523]],[[63957,63957],\"mapped\",[23833]],[[63958,63958],\"mapped\",[28138]],[[63959,63959],\"mapped\",[36650]],[[63960,63960],\"mapped\",[24459]],[[63961,63961],\"mapped\",[24900]],[[63962,63962],\"mapped\",[26647]],[[63963,63963],\"mapped\",[29575]],[[63964,63964],\"mapped\",[38534]],[[63965,63965],\"mapped\",[21033]],[[63966,63966],\"mapped\",[21519]],[[63967,63967],\"mapped\",[23653]],[[63968,63968],\"mapped\",[26131]],[[63969,63969],\"mapped\",[26446]],[[63970,63970],\"mapped\",[26792]],[[63971,63971],\"mapped\",[27877]],[[63972,63972],\"mapped\",[29702]],[[63973,63973],\"mapped\",[30178]],[[63974,63974],\"mapped\",[32633]],[[63975,63975],\"mapped\",[35023]],[[63976,63976],\"mapped\",[35041]],[[63977,63977],\"mapped\",[37324]],[[63978,63978],\"mapped\",[38626]],[[63979,63979],\"mapped\",[21311]],[[63980,63980],\"mapped\",[28346]],[[63981,63981],\"mapped\",[21533]],[[63982,63982],\"mapped\",[29136]],[[63983,63983],\"mapped\",[29848]],[[63984,63984],\"mapped\",[34298]],[[63985,63985],\"mapped\",[38563]],[[63986,63986],\"mapped\",[40023]],[[63987,63987],\"mapped\",[40607]],[[63988,63988],\"mapped\",[26519]],[[63989,63989],\"mapped\",[28107]],[[63990,63990],\"mapped\",[33256]],[[63991,63991],\"mapped\",[31435]],[[63992,63992],\"mapped\",[31520]],[[63993,63993],\"mapped\",[31890]],[[63994,63994],\"mapped\",[29376]],[[63995,63995],\"mapped\",[28825]],[[63996,63996],\"mapped\",[35672]],[[63997,63997],\"mapped\",[20160]],[[63998,63998],\"mapped\",[33590]],[[63999,63999],\"mapped\",[21050]],[[64000,64000],\"mapped\",[20999]],[[64001,64001],\"mapped\",[24230]],[[64002,64002],\"mapped\",[25299]],[[64003,64003],\"mapped\",[31958]],[[64004,64004],\"mapped\",[23429]],[[64005,64005],\"mapped\",[27934]],[[64006,64006],\"mapped\",[26292]],[[64007,64007],\"mapped\",[36667]],[[64008,64008],\"mapped\",[34892]],[[64009,64009],\"mapped\",[38477]],[[64010,64010],\"mapped\",[35211]],[[64011,64011],\"mapped\",[24275]],[[64012,64012],\"mapped\",[20800]],[[64013,64013],\"mapped\",[21952]],[[64014,64015],\"valid\"],[[64016,64016],\"mapped\",[22618]],[[64017,64017],\"valid\"],[[64018,64018],\"mapped\",[26228]],[[64019,64020],\"valid\"],[[64021,64021],\"mapped\",[20958]],[[64022,64022],\"mapped\",[29482]],[[64023,64023],\"mapped\",[30410]],[[64024,64024],\"mapped\",[31036]],[[64025,64025],\"mapped\",[31070]],[[64026,64026],\"mapped\",[31077]],[[64027,64027],\"mapped\",[31119]],[[64028,64028],\"mapped\",[38742]],[[64029,64029],\"mapped\",[31934]],[[64030,64030],\"mapped\",[32701]],[[64031,64031],\"valid\"],[[64032,64032],\"mapped\",[34322]],[[64033,64033],\"valid\"],[[64034,64034],\"mapped\",[35576]],[[64035,64036],\"valid\"],[[64037,64037],\"mapped\",[36920]],[[64038,64038],\"mapped\",[37117]],[[64039,64041],\"valid\"],[[64042,64042],\"mapped\",[39151]],[[64043,64043],\"mapped\",[39164]],[[64044,64044],\"mapped\",[39208]],[[64045,64045],\"mapped\",[40372]],[[64046,64046],\"mapped\",[37086]],[[64047,64047],\"mapped\",[38583]],[[64048,64048],\"mapped\",[20398]],[[64049,64049],\"mapped\",[20711]],[[64050,64050],\"mapped\",[20813]],[[64051,64051],\"mapped\",[21193]],[[64052,64052],\"mapped\",[21220]],[[64053,64053],\"mapped\",[21329]],[[64054,64054],\"mapped\",[21917]],[[64055,64055],\"mapped\",[22022]],[[64056,64056],\"mapped\",[22120]],[[64057,64057],\"mapped\",[22592]],[[64058,64058],\"mapped\",[22696]],[[64059,64059],\"mapped\",[23652]],[[64060,64060],\"mapped\",[23662]],[[64061,64061],\"mapped\",[24724]],[[64062,64062],\"mapped\",[24936]],[[64063,64063],\"mapped\",[24974]],[[64064,64064],\"mapped\",[25074]],[[64065,64065],\"mapped\",[25935]],[[64066,64066],\"mapped\",[26082]],[[64067,64067],\"mapped\",[26257]],[[64068,64068],\"mapped\",[26757]],[[64069,64069],\"mapped\",[28023]],[[64070,64070],\"mapped\",[28186]],[[64071,64071],\"mapped\",[28450]],[[64072,64072],\"mapped\",[29038]],[[64073,64073],\"mapped\",[29227]],[[64074,64074],\"mapped\",[29730]],[[64075,64075],\"mapped\",[30865]],[[64076,64076],\"mapped\",[31038]],[[64077,64077],\"mapped\",[31049]],[[64078,64078],\"mapped\",[31048]],[[64079,64079],\"mapped\",[31056]],[[64080,64080],\"mapped\",[31062]],[[64081,64081],\"mapped\",[31069]],[[64082,64082],\"mapped\",[31117]],[[64083,64083],\"mapped\",[31118]],[[64084,64084],\"mapped\",[31296]],[[64085,64085],\"mapped\",[31361]],[[64086,64086],\"mapped\",[31680]],[[64087,64087],\"mapped\",[32244]],[[64088,64088],\"mapped\",[32265]],[[64089,64089],\"mapped\",[32321]],[[64090,64090],\"mapped\",[32626]],[[64091,64091],\"mapped\",[32773]],[[64092,64092],\"mapped\",[33261]],[[64093,64094],\"mapped\",[33401]],[[64095,64095],\"mapped\",[33879]],[[64096,64096],\"mapped\",[35088]],[[64097,64097],\"mapped\",[35222]],[[64098,64098],\"mapped\",[35585]],[[64099,64099],\"mapped\",[35641]],[[64100,64100],\"mapped\",[36051]],[[64101,64101],\"mapped\",[36104]],[[64102,64102],\"mapped\",[36790]],[[64103,64103],\"mapped\",[36920]],[[64104,64104],\"mapped\",[38627]],[[64105,64105],\"mapped\",[38911]],[[64106,64106],\"mapped\",[38971]],[[64107,64107],\"mapped\",[24693]],[[64108,64108],\"mapped\",[148206]],[[64109,64109],\"mapped\",[33304]],[[64110,64111],\"disallowed\"],[[64112,64112],\"mapped\",[20006]],[[64113,64113],\"mapped\",[20917]],[[64114,64114],\"mapped\",[20840]],[[64115,64115],\"mapped\",[20352]],[[64116,64116],\"mapped\",[20805]],[[64117,64117],\"mapped\",[20864]],[[64118,64118],\"mapped\",[21191]],[[64119,64119],\"mapped\",[21242]],[[64120,64120],\"mapped\",[21917]],[[64121,64121],\"mapped\",[21845]],[[64122,64122],\"mapped\",[21913]],[[64123,64123],\"mapped\",[21986]],[[64124,64124],\"mapped\",[22618]],[[64125,64125],\"mapped\",[22707]],[[64126,64126],\"mapped\",[22852]],[[64127,64127],\"mapped\",[22868]],[[64128,64128],\"mapped\",[23138]],[[64129,64129],\"mapped\",[23336]],[[64130,64130],\"mapped\",[24274]],[[64131,64131],\"mapped\",[24281]],[[64132,64132],\"mapped\",[24425]],[[64133,64133],\"mapped\",[24493]],[[64134,64134],\"mapped\",[24792]],[[64135,64135],\"mapped\",[24910]],[[64136,64136],\"mapped\",[24840]],[[64137,64137],\"mapped\",[24974]],[[64138,64138],\"mapped\",[24928]],[[64139,64139],\"mapped\",[25074]],[[64140,64140],\"mapped\",[25140]],[[64141,64141],\"mapped\",[25540]],[[64142,64142],\"mapped\",[25628]],[[64143,64143],\"mapped\",[25682]],[[64144,64144],\"mapped\",[25942]],[[64145,64145],\"mapped\",[26228]],[[64146,64146],\"mapped\",[26391]],[[64147,64147],\"mapped\",[26395]],[[64148,64148],\"mapped\",[26454]],[[64149,64149],\"mapped\",[27513]],[[64150,64150],\"mapped\",[27578]],[[64151,64151],\"mapped\",[27969]],[[64152,64152],\"mapped\",[28379]],[[64153,64153],\"mapped\",[28363]],[[64154,64154],\"mapped\",[28450]],[[64155,64155],\"mapped\",[28702]],[[64156,64156],\"mapped\",[29038]],[[64157,64157],\"mapped\",[30631]],[[64158,64158],\"mapped\",[29237]],[[64159,64159],\"mapped\",[29359]],[[64160,64160],\"mapped\",[29482]],[[64161,64161],\"mapped\",[29809]],[[64162,64162],\"mapped\",[29958]],[[64163,64163],\"mapped\",[30011]],[[64164,64164],\"mapped\",[30237]],[[64165,64165],\"mapped\",[30239]],[[64166,64166],\"mapped\",[30410]],[[64167,64167],\"mapped\",[30427]],[[64168,64168],\"mapped\",[30452]],[[64169,64169],\"mapped\",[30538]],[[64170,64170],\"mapped\",[30528]],[[64171,64171],\"mapped\",[30924]],[[64172,64172],\"mapped\",[31409]],[[64173,64173],\"mapped\",[31680]],[[64174,64174],\"mapped\",[31867]],[[64175,64175],\"mapped\",[32091]],[[64176,64176],\"mapped\",[32244]],[[64177,64177],\"mapped\",[32574]],[[64178,64178],\"mapped\",[32773]],[[64179,64179],\"mapped\",[33618]],[[64180,64180],\"mapped\",[33775]],[[64181,64181],\"mapped\",[34681]],[[64182,64182],\"mapped\",[35137]],[[64183,64183],\"mapped\",[35206]],[[64184,64184],\"mapped\",[35222]],[[64185,64185],\"mapped\",[35519]],[[64186,64186],\"mapped\",[35576]],[[64187,64187],\"mapped\",[35531]],[[64188,64188],\"mapped\",[35585]],[[64189,64189],\"mapped\",[35582]],[[64190,64190],\"mapped\",[35565]],[[64191,64191],\"mapped\",[35641]],[[64192,64192],\"mapped\",[35722]],[[64193,64193],\"mapped\",[36104]],[[64194,64194],\"mapped\",[36664]],[[64195,64195],\"mapped\",[36978]],[[64196,64196],\"mapped\",[37273]],[[64197,64197],\"mapped\",[37494]],[[64198,64198],\"mapped\",[38524]],[[64199,64199],\"mapped\",[38627]],[[64200,64200],\"mapped\",[38742]],[[64201,64201],\"mapped\",[38875]],[[64202,64202],\"mapped\",[38911]],[[64203,64203],\"mapped\",[38923]],[[64204,64204],\"mapped\",[38971]],[[64205,64205],\"mapped\",[39698]],[[64206,64206],\"mapped\",[40860]],[[64207,64207],\"mapped\",[141386]],[[64208,64208],\"mapped\",[141380]],[[64209,64209],\"mapped\",[144341]],[[64210,64210],\"mapped\",[15261]],[[64211,64211],\"mapped\",[16408]],[[64212,64212],\"mapped\",[16441]],[[64213,64213],\"mapped\",[152137]],[[64214,64214],\"mapped\",[154832]],[[64215,64215],\"mapped\",[163539]],[[64216,64216],\"mapped\",[40771]],[[64217,64217],\"mapped\",[40846]],[[64218,64255],\"disallowed\"],[[64256,64256],\"mapped\",[102,102]],[[64257,64257],\"mapped\",[102,105]],[[64258,64258],\"mapped\",[102,108]],[[64259,64259],\"mapped\",[102,102,105]],[[64260,64260],\"mapped\",[102,102,108]],[[64261,64262],\"mapped\",[115,116]],[[64263,64274],\"disallowed\"],[[64275,64275],\"mapped\",[1396,1398]],[[64276,64276],\"mapped\",[1396,1381]],[[64277,64277],\"mapped\",[1396,1387]],[[64278,64278],\"mapped\",[1406,1398]],[[64279,64279],\"mapped\",[1396,1389]],[[64280,64284],\"disallowed\"],[[64285,64285],\"mapped\",[1497,1460]],[[64286,64286],\"valid\"],[[64287,64287],\"mapped\",[1522,1463]],[[64288,64288],\"mapped\",[1506]],[[64289,64289],\"mapped\",[1488]],[[64290,64290],\"mapped\",[1491]],[[64291,64291],\"mapped\",[1492]],[[64292,64292],\"mapped\",[1499]],[[64293,64293],\"mapped\",[1500]],[[64294,64294],\"mapped\",[1501]],[[64295,64295],\"mapped\",[1512]],[[64296,64296],\"mapped\",[1514]],[[64297,64297],\"disallowed_STD3_mapped\",[43]],[[64298,64298],\"mapped\",[1513,1473]],[[64299,64299],\"mapped\",[1513,1474]],[[64300,64300],\"mapped\",[1513,1468,1473]],[[64301,64301],\"mapped\",[1513,1468,1474]],[[64302,64302],\"mapped\",[1488,1463]],[[64303,64303],\"mapped\",[1488,1464]],[[64304,64304],\"mapped\",[1488,1468]],[[64305,64305],\"mapped\",[1489,1468]],[[64306,64306],\"mapped\",[1490,1468]],[[64307,64307],\"mapped\",[1491,1468]],[[64308,64308],\"mapped\",[1492,1468]],[[64309,64309],\"mapped\",[1493,1468]],[[64310,64310],\"mapped\",[1494,1468]],[[64311,64311],\"disallowed\"],[[64312,64312],\"mapped\",[1496,1468]],[[64313,64313],\"mapped\",[1497,1468]],[[64314,64314],\"mapped\",[1498,1468]],[[64315,64315],\"mapped\",[1499,1468]],[[64316,64316],\"mapped\",[1500,1468]],[[64317,64317],\"disallowed\"],[[64318,64318],\"mapped\",[1502,1468]],[[64319,64319],\"disallowed\"],[[64320,64320],\"mapped\",[1504,1468]],[[64321,64321],\"mapped\",[1505,1468]],[[64322,64322],\"disallowed\"],[[64323,64323],\"mapped\",[1507,1468]],[[64324,64324],\"mapped\",[1508,1468]],[[64325,64325],\"disallowed\"],[[64326,64326],\"mapped\",[1510,1468]],[[64327,64327],\"mapped\",[1511,1468]],[[64328,64328],\"mapped\",[1512,1468]],[[64329,64329],\"mapped\",[1513,1468]],[[64330,64330],\"mapped\",[1514,1468]],[[64331,64331],\"mapped\",[1493,1465]],[[64332,64332],\"mapped\",[1489,1471]],[[64333,64333],\"mapped\",[1499,1471]],[[64334,64334],\"mapped\",[1508,1471]],[[64335,64335],\"mapped\",[1488,1500]],[[64336,64337],\"mapped\",[1649]],[[64338,64341],\"mapped\",[1659]],[[64342,64345],\"mapped\",[1662]],[[64346,64349],\"mapped\",[1664]],[[64350,64353],\"mapped\",[1658]],[[64354,64357],\"mapped\",[1663]],[[64358,64361],\"mapped\",[1657]],[[64362,64365],\"mapped\",[1700]],[[64366,64369],\"mapped\",[1702]],[[64370,64373],\"mapped\",[1668]],[[64374,64377],\"mapped\",[1667]],[[64378,64381],\"mapped\",[1670]],[[64382,64385],\"mapped\",[1671]],[[64386,64387],\"mapped\",[1677]],[[64388,64389],\"mapped\",[1676]],[[64390,64391],\"mapped\",[1678]],[[64392,64393],\"mapped\",[1672]],[[64394,64395],\"mapped\",[1688]],[[64396,64397],\"mapped\",[1681]],[[64398,64401],\"mapped\",[1705]],[[64402,64405],\"mapped\",[1711]],[[64406,64409],\"mapped\",[1715]],[[64410,64413],\"mapped\",[1713]],[[64414,64415],\"mapped\",[1722]],[[64416,64419],\"mapped\",[1723]],[[64420,64421],\"mapped\",[1728]],[[64422,64425],\"mapped\",[1729]],[[64426,64429],\"mapped\",[1726]],[[64430,64431],\"mapped\",[1746]],[[64432,64433],\"mapped\",[1747]],[[64434,64449],\"valid\",[],\"NV8\"],[[64450,64466],\"disallowed\"],[[64467,64470],\"mapped\",[1709]],[[64471,64472],\"mapped\",[1735]],[[64473,64474],\"mapped\",[1734]],[[64475,64476],\"mapped\",[1736]],[[64477,64477],\"mapped\",[1735,1652]],[[64478,64479],\"mapped\",[1739]],[[64480,64481],\"mapped\",[1733]],[[64482,64483],\"mapped\",[1737]],[[64484,64487],\"mapped\",[1744]],[[64488,64489],\"mapped\",[1609]],[[64490,64491],\"mapped\",[1574,1575]],[[64492,64493],\"mapped\",[1574,1749]],[[64494,64495],\"mapped\",[1574,1608]],[[64496,64497],\"mapped\",[1574,1735]],[[64498,64499],\"mapped\",[1574,1734]],[[64500,64501],\"mapped\",[1574,1736]],[[64502,64504],\"mapped\",[1574,1744]],[[64505,64507],\"mapped\",[1574,1609]],[[64508,64511],\"mapped\",[1740]],[[64512,64512],\"mapped\",[1574,1580]],[[64513,64513],\"mapped\",[1574,1581]],[[64514,64514],\"mapped\",[1574,1605]],[[64515,64515],\"mapped\",[1574,1609]],[[64516,64516],\"mapped\",[1574,1610]],[[64517,64517],\"mapped\",[1576,1580]],[[64518,64518],\"mapped\",[1576,1581]],[[64519,64519],\"mapped\",[1576,1582]],[[64520,64520],\"mapped\",[1576,1605]],[[64521,64521],\"mapped\",[1576,1609]],[[64522,64522],\"mapped\",[1576,1610]],[[64523,64523],\"mapped\",[1578,1580]],[[64524,64524],\"mapped\",[1578,1581]],[[64525,64525],\"mapped\",[1578,1582]],[[64526,64526],\"mapped\",[1578,1605]],[[64527,64527],\"mapped\",[1578,1609]],[[64528,64528],\"mapped\",[1578,1610]],[[64529,64529],\"mapped\",[1579,1580]],[[64530,64530],\"mapped\",[1579,1605]],[[64531,64531],\"mapped\",[1579,1609]],[[64532,64532],\"mapped\",[1579,1610]],[[64533,64533],\"mapped\",[1580,1581]],[[64534,64534],\"mapped\",[1580,1605]],[[64535,64535],\"mapped\",[1581,1580]],[[64536,64536],\"mapped\",[1581,1605]],[[64537,64537],\"mapped\",[1582,1580]],[[64538,64538],\"mapped\",[1582,1581]],[[64539,64539],\"mapped\",[1582,1605]],[[64540,64540],\"mapped\",[1587,1580]],[[64541,64541],\"mapped\",[1587,1581]],[[64542,64542],\"mapped\",[1587,1582]],[[64543,64543],\"mapped\",[1587,1605]],[[64544,64544],\"mapped\",[1589,1581]],[[64545,64545],\"mapped\",[1589,1605]],[[64546,64546],\"mapped\",[1590,1580]],[[64547,64547],\"mapped\",[1590,1581]],[[64548,64548],\"mapped\",[1590,1582]],[[64549,64549],\"mapped\",[1590,1605]],[[64550,64550],\"mapped\",[1591,1581]],[[64551,64551],\"mapped\",[1591,1605]],[[64552,64552],\"mapped\",[1592,1605]],[[64553,64553],\"mapped\",[1593,1580]],[[64554,64554],\"mapped\",[1593,1605]],[[64555,64555],\"mapped\",[1594,1580]],[[64556,64556],\"mapped\",[1594,1605]],[[64557,64557],\"mapped\",[1601,1580]],[[64558,64558],\"mapped\",[1601,1581]],[[64559,64559],\"mapped\",[1601,1582]],[[64560,64560],\"mapped\",[1601,1605]],[[64561,64561],\"mapped\",[1601,1609]],[[64562,64562],\"mapped\",[1601,1610]],[[64563,64563],\"mapped\",[1602,1581]],[[64564,64564],\"mapped\",[1602,1605]],[[64565,64565],\"mapped\",[1602,1609]],[[64566,64566],\"mapped\",[1602,1610]],[[64567,64567],\"mapped\",[1603,1575]],[[64568,64568],\"mapped\",[1603,1580]],[[64569,64569],\"mapped\",[1603,1581]],[[64570,64570],\"mapped\",[1603,1582]],[[64571,64571],\"mapped\",[1603,1604]],[[64572,64572],\"mapped\",[1603,1605]],[[64573,64573],\"mapped\",[1603,1609]],[[64574,64574],\"mapped\",[1603,1610]],[[64575,64575],\"mapped\",[1604,1580]],[[64576,64576],\"mapped\",[1604,1581]],[[64577,64577],\"mapped\",[1604,1582]],[[64578,64578],\"mapped\",[1604,1605]],[[64579,64579],\"mapped\",[1604,1609]],[[64580,64580],\"mapped\",[1604,1610]],[[64581,64581],\"mapped\",[1605,1580]],[[64582,64582],\"mapped\",[1605,1581]],[[64583,64583],\"mapped\",[1605,1582]],[[64584,64584],\"mapped\",[1605,1605]],[[64585,64585],\"mapped\",[1605,1609]],[[64586,64586],\"mapped\",[1605,1610]],[[64587,64587],\"mapped\",[1606,1580]],[[64588,64588],\"mapped\",[1606,1581]],[[64589,64589],\"mapped\",[1606,1582]],[[64590,64590],\"mapped\",[1606,1605]],[[64591,64591],\"mapped\",[1606,1609]],[[64592,64592],\"mapped\",[1606,1610]],[[64593,64593],\"mapped\",[1607,1580]],[[64594,64594],\"mapped\",[1607,1605]],[[64595,64595],\"mapped\",[1607,1609]],[[64596,64596],\"mapped\",[1607,1610]],[[64597,64597],\"mapped\",[1610,1580]],[[64598,64598],\"mapped\",[1610,1581]],[[64599,64599],\"mapped\",[1610,1582]],[[64600,64600],\"mapped\",[1610,1605]],[[64601,64601],\"mapped\",[1610,1609]],[[64602,64602],\"mapped\",[1610,1610]],[[64603,64603],\"mapped\",[1584,1648]],[[64604,64604],\"mapped\",[1585,1648]],[[64605,64605],\"mapped\",[1609,1648]],[[64606,64606],\"disallowed_STD3_mapped\",[32,1612,1617]],[[64607,64607],\"disallowed_STD3_mapped\",[32,1613,1617]],[[64608,64608],\"disallowed_STD3_mapped\",[32,1614,1617]],[[64609,64609],\"disallowed_STD3_mapped\",[32,1615,1617]],[[64610,64610],\"disallowed_STD3_mapped\",[32,1616,1617]],[[64611,64611],\"disallowed_STD3_mapped\",[32,1617,1648]],[[64612,64612],\"mapped\",[1574,1585]],[[64613,64613],\"mapped\",[1574,1586]],[[64614,64614],\"mapped\",[1574,1605]],[[64615,64615],\"mapped\",[1574,1606]],[[64616,64616],\"mapped\",[1574,1609]],[[64617,64617],\"mapped\",[1574,1610]],[[64618,64618],\"mapped\",[1576,1585]],[[64619,64619],\"mapped\",[1576,1586]],[[64620,64620],\"mapped\",[1576,1605]],[[64621,64621],\"mapped\",[1576,1606]],[[64622,64622],\"mapped\",[1576,1609]],[[64623,64623],\"mapped\",[1576,1610]],[[64624,64624],\"mapped\",[1578,1585]],[[64625,64625],\"mapped\",[1578,1586]],[[64626,64626],\"mapped\",[1578,1605]],[[64627,64627],\"mapped\",[1578,1606]],[[64628,64628],\"mapped\",[1578,1609]],[[64629,64629],\"mapped\",[1578,1610]],[[64630,64630],\"mapped\",[1579,1585]],[[64631,64631],\"mapped\",[1579,1586]],[[64632,64632],\"mapped\",[1579,1605]],[[64633,64633],\"mapped\",[1579,1606]],[[64634,64634],\"mapped\",[1579,1609]],[[64635,64635],\"mapped\",[1579,1610]],[[64636,64636],\"mapped\",[1601,1609]],[[64637,64637],\"mapped\",[1601,1610]],[[64638,64638],\"mapped\",[1602,1609]],[[64639,64639],\"mapped\",[1602,1610]],[[64640,64640],\"mapped\",[1603,1575]],[[64641,64641],\"mapped\",[1603,1604]],[[64642,64642],\"mapped\",[1603,1605]],[[64643,64643],\"mapped\",[1603,1609]],[[64644,64644],\"mapped\",[1603,1610]],[[64645,64645],\"mapped\",[1604,1605]],[[64646,64646],\"mapped\",[1604,1609]],[[64647,64647],\"mapped\",[1604,1610]],[[64648,64648],\"mapped\",[1605,1575]],[[64649,64649],\"mapped\",[1605,1605]],[[64650,64650],\"mapped\",[1606,1585]],[[64651,64651],\"mapped\",[1606,1586]],[[64652,64652],\"mapped\",[1606,1605]],[[64653,64653],\"mapped\",[1606,1606]],[[64654,64654],\"mapped\",[1606,1609]],[[64655,64655],\"mapped\",[1606,1610]],[[64656,64656],\"mapped\",[1609,1648]],[[64657,64657],\"mapped\",[1610,1585]],[[64658,64658],\"mapped\",[1610,1586]],[[64659,64659],\"mapped\",[1610,1605]],[[64660,64660],\"mapped\",[1610,1606]],[[64661,64661],\"mapped\",[1610,1609]],[[64662,64662],\"mapped\",[1610,1610]],[[64663,64663],\"mapped\",[1574,1580]],[[64664,64664],\"mapped\",[1574,1581]],[[64665,64665],\"mapped\",[1574,1582]],[[64666,64666],\"mapped\",[1574,1605]],[[64667,64667],\"mapped\",[1574,1607]],[[64668,64668],\"mapped\",[1576,1580]],[[64669,64669],\"mapped\",[1576,1581]],[[64670,64670],\"mapped\",[1576,1582]],[[64671,64671],\"mapped\",[1576,1605]],[[64672,64672],\"mapped\",[1576,1607]],[[64673,64673],\"mapped\",[1578,1580]],[[64674,64674],\"mapped\",[1578,1581]],[[64675,64675],\"mapped\",[1578,1582]],[[64676,64676],\"mapped\",[1578,1605]],[[64677,64677],\"mapped\",[1578,1607]],[[64678,64678],\"mapped\",[1579,1605]],[[64679,64679],\"mapped\",[1580,1581]],[[64680,64680],\"mapped\",[1580,1605]],[[64681,64681],\"mapped\",[1581,1580]],[[64682,64682],\"mapped\",[1581,1605]],[[64683,64683],\"mapped\",[1582,1580]],[[64684,64684],\"mapped\",[1582,1605]],[[64685,64685],\"mapped\",[1587,1580]],[[64686,64686],\"mapped\",[1587,1581]],[[64687,64687],\"mapped\",[1587,1582]],[[64688,64688],\"mapped\",[1587,1605]],[[64689,64689],\"mapped\",[1589,1581]],[[64690,64690],\"mapped\",[1589,1582]],[[64691,64691],\"mapped\",[1589,1605]],[[64692,64692],\"mapped\",[1590,1580]],[[64693,64693],\"mapped\",[1590,1581]],[[64694,64694],\"mapped\",[1590,1582]],[[64695,64695],\"mapped\",[1590,1605]],[[64696,64696],\"mapped\",[1591,1581]],[[64697,64697],\"mapped\",[1592,1605]],[[64698,64698],\"mapped\",[1593,1580]],[[64699,64699],\"mapped\",[1593,1605]],[[64700,64700],\"mapped\",[1594,1580]],[[64701,64701],\"mapped\",[1594,1605]],[[64702,64702],\"mapped\",[1601,1580]],[[64703,64703],\"mapped\",[1601,1581]],[[64704,64704],\"mapped\",[1601,1582]],[[64705,64705],\"mapped\",[1601,1605]],[[64706,64706],\"mapped\",[1602,1581]],[[64707,64707],\"mapped\",[1602,1605]],[[64708,64708],\"mapped\",[1603,1580]],[[64709,64709],\"mapped\",[1603,1581]],[[64710,64710],\"mapped\",[1603,1582]],[[64711,64711],\"mapped\",[1603,1604]],[[64712,64712],\"mapped\",[1603,1605]],[[64713,64713],\"mapped\",[1604,1580]],[[64714,64714],\"mapped\",[1604,1581]],[[64715,64715],\"mapped\",[1604,1582]],[[64716,64716],\"mapped\",[1604,1605]],[[64717,64717],\"mapped\",[1604,1607]],[[64718,64718],\"mapped\",[1605,1580]],[[64719,64719],\"mapped\",[1605,1581]],[[64720,64720],\"mapped\",[1605,1582]],[[64721,64721],\"mapped\",[1605,1605]],[[64722,64722],\"mapped\",[1606,1580]],[[64723,64723],\"mapped\",[1606,1581]],[[64724,64724],\"mapped\",[1606,1582]],[[64725,64725],\"mapped\",[1606,1605]],[[64726,64726],\"mapped\",[1606,1607]],[[64727,64727],\"mapped\",[1607,1580]],[[64728,64728],\"mapped\",[1607,1605]],[[64729,64729],\"mapped\",[1607,1648]],[[64730,64730],\"mapped\",[1610,1580]],[[64731,64731],\"mapped\",[1610,1581]],[[64732,64732],\"mapped\",[1610,1582]],[[64733,64733],\"mapped\",[1610,1605]],[[64734,64734],\"mapped\",[1610,1607]],[[64735,64735],\"mapped\",[1574,1605]],[[64736,64736],\"mapped\",[1574,1607]],[[64737,64737],\"mapped\",[1576,1605]],[[64738,64738],\"mapped\",[1576,1607]],[[64739,64739],\"mapped\",[1578,1605]],[[64740,64740],\"mapped\",[1578,1607]],[[64741,64741],\"mapped\",[1579,1605]],[[64742,64742],\"mapped\",[1579,1607]],[[64743,64743],\"mapped\",[1587,1605]],[[64744,64744],\"mapped\",[1587,1607]],[[64745,64745],\"mapped\",[1588,1605]],[[64746,64746],\"mapped\",[1588,1607]],[[64747,64747],\"mapped\",[1603,1604]],[[64748,64748],\"mapped\",[1603,1605]],[[64749,64749],\"mapped\",[1604,1605]],[[64750,64750],\"mapped\",[1606,1605]],[[64751,64751],\"mapped\",[1606,1607]],[[64752,64752],\"mapped\",[1610,1605]],[[64753,64753],\"mapped\",[1610,1607]],[[64754,64754],\"mapped\",[1600,1614,1617]],[[64755,64755],\"mapped\",[1600,1615,1617]],[[64756,64756],\"mapped\",[1600,1616,1617]],[[64757,64757],\"mapped\",[1591,1609]],[[64758,64758],\"mapped\",[1591,1610]],[[64759,64759],\"mapped\",[1593,1609]],[[64760,64760],\"mapped\",[1593,1610]],[[64761,64761],\"mapped\",[1594,1609]],[[64762,64762],\"mapped\",[1594,1610]],[[64763,64763],\"mapped\",[1587,1609]],[[64764,64764],\"mapped\",[1587,1610]],[[64765,64765],\"mapped\",[1588,1609]],[[64766,64766],\"mapped\",[1588,1610]],[[64767,64767],\"mapped\",[1581,1609]],[[64768,64768],\"mapped\",[1581,1610]],[[64769,64769],\"mapped\",[1580,1609]],[[64770,64770],\"mapped\",[1580,1610]],[[64771,64771],\"mapped\",[1582,1609]],[[64772,64772],\"mapped\",[1582,1610]],[[64773,64773],\"mapped\",[1589,1609]],[[64774,64774],\"mapped\",[1589,1610]],[[64775,64775],\"mapped\",[1590,1609]],[[64776,64776],\"mapped\",[1590,1610]],[[64777,64777],\"mapped\",[1588,1580]],[[64778,64778],\"mapped\",[1588,1581]],[[64779,64779],\"mapped\",[1588,1582]],[[64780,64780],\"mapped\",[1588,1605]],[[64781,64781],\"mapped\",[1588,1585]],[[64782,64782],\"mapped\",[1587,1585]],[[64783,64783],\"mapped\",[1589,1585]],[[64784,64784],\"mapped\",[1590,1585]],[[64785,64785],\"mapped\",[1591,1609]],[[64786,64786],\"mapped\",[1591,1610]],[[64787,64787],\"mapped\",[1593,1609]],[[64788,64788],\"mapped\",[1593,1610]],[[64789,64789],\"mapped\",[1594,1609]],[[64790,64790],\"mapped\",[1594,1610]],[[64791,64791],\"mapped\",[1587,1609]],[[64792,64792],\"mapped\",[1587,1610]],[[64793,64793],\"mapped\",[1588,1609]],[[64794,64794],\"mapped\",[1588,1610]],[[64795,64795],\"mapped\",[1581,1609]],[[64796,64796],\"mapped\",[1581,1610]],[[64797,64797],\"mapped\",[1580,1609]],[[64798,64798],\"mapped\",[1580,1610]],[[64799,64799],\"mapped\",[1582,1609]],[[64800,64800],\"mapped\",[1582,1610]],[[64801,64801],\"mapped\",[1589,1609]],[[64802,64802],\"mapped\",[1589,1610]],[[64803,64803],\"mapped\",[1590,1609]],[[64804,64804],\"mapped\",[1590,1610]],[[64805,64805],\"mapped\",[1588,1580]],[[64806,64806],\"mapped\",[1588,1581]],[[64807,64807],\"mapped\",[1588,1582]],[[64808,64808],\"mapped\",[1588,1605]],[[64809,64809],\"mapped\",[1588,1585]],[[64810,64810],\"mapped\",[1587,1585]],[[64811,64811],\"mapped\",[1589,1585]],[[64812,64812],\"mapped\",[1590,1585]],[[64813,64813],\"mapped\",[1588,1580]],[[64814,64814],\"mapped\",[1588,1581]],[[64815,64815],\"mapped\",[1588,1582]],[[64816,64816],\"mapped\",[1588,1605]],[[64817,64817],\"mapped\",[1587,1607]],[[64818,64818],\"mapped\",[1588,1607]],[[64819,64819],\"mapped\",[1591,1605]],[[64820,64820],\"mapped\",[1587,1580]],[[64821,64821],\"mapped\",[1587,1581]],[[64822,64822],\"mapped\",[1587,1582]],[[64823,64823],\"mapped\",[1588,1580]],[[64824,64824],\"mapped\",[1588,1581]],[[64825,64825],\"mapped\",[1588,1582]],[[64826,64826],\"mapped\",[1591,1605]],[[64827,64827],\"mapped\",[1592,1605]],[[64828,64829],\"mapped\",[1575,1611]],[[64830,64831],\"valid\",[],\"NV8\"],[[64832,64847],\"disallowed\"],[[64848,64848],\"mapped\",[1578,1580,1605]],[[64849,64850],\"mapped\",[1578,1581,1580]],[[64851,64851],\"mapped\",[1578,1581,1605]],[[64852,64852],\"mapped\",[1578,1582,1605]],[[64853,64853],\"mapped\",[1578,1605,1580]],[[64854,64854],\"mapped\",[1578,1605,1581]],[[64855,64855],\"mapped\",[1578,1605,1582]],[[64856,64857],\"mapped\",[1580,1605,1581]],[[64858,64858],\"mapped\",[1581,1605,1610]],[[64859,64859],\"mapped\",[1581,1605,1609]],[[64860,64860],\"mapped\",[1587,1581,1580]],[[64861,64861],\"mapped\",[1587,1580,1581]],[[64862,64862],\"mapped\",[1587,1580,1609]],[[64863,64864],\"mapped\",[1587,1605,1581]],[[64865,64865],\"mapped\",[1587,1605,1580]],[[64866,64867],\"mapped\",[1587,1605,1605]],[[64868,64869],\"mapped\",[1589,1581,1581]],[[64870,64870],\"mapped\",[1589,1605,1605]],[[64871,64872],\"mapped\",[1588,1581,1605]],[[64873,64873],\"mapped\",[1588,1580,1610]],[[64874,64875],\"mapped\",[1588,1605,1582]],[[64876,64877],\"mapped\",[1588,1605,1605]],[[64878,64878],\"mapped\",[1590,1581,1609]],[[64879,64880],\"mapped\",[1590,1582,1605]],[[64881,64882],\"mapped\",[1591,1605,1581]],[[64883,64883],\"mapped\",[1591,1605,1605]],[[64884,64884],\"mapped\",[1591,1605,1610]],[[64885,64885],\"mapped\",[1593,1580,1605]],[[64886,64887],\"mapped\",[1593,1605,1605]],[[64888,64888],\"mapped\",[1593,1605,1609]],[[64889,64889],\"mapped\",[1594,1605,1605]],[[64890,64890],\"mapped\",[1594,1605,1610]],[[64891,64891],\"mapped\",[1594,1605,1609]],[[64892,64893],\"mapped\",[1601,1582,1605]],[[64894,64894],\"mapped\",[1602,1605,1581]],[[64895,64895],\"mapped\",[1602,1605,1605]],[[64896,64896],\"mapped\",[1604,1581,1605]],[[64897,64897],\"mapped\",[1604,1581,1610]],[[64898,64898],\"mapped\",[1604,1581,1609]],[[64899,64900],\"mapped\",[1604,1580,1580]],[[64901,64902],\"mapped\",[1604,1582,1605]],[[64903,64904],\"mapped\",[1604,1605,1581]],[[64905,64905],\"mapped\",[1605,1581,1580]],[[64906,64906],\"mapped\",[1605,1581,1605]],[[64907,64907],\"mapped\",[1605,1581,1610]],[[64908,64908],\"mapped\",[1605,1580,1581]],[[64909,64909],\"mapped\",[1605,1580,1605]],[[64910,64910],\"mapped\",[1605,1582,1580]],[[64911,64911],\"mapped\",[1605,1582,1605]],[[64912,64913],\"disallowed\"],[[64914,64914],\"mapped\",[1605,1580,1582]],[[64915,64915],\"mapped\",[1607,1605,1580]],[[64916,64916],\"mapped\",[1607,1605,1605]],[[64917,64917],\"mapped\",[1606,1581,1605]],[[64918,64918],\"mapped\",[1606,1581,1609]],[[64919,64920],\"mapped\",[1606,1580,1605]],[[64921,64921],\"mapped\",[1606,1580,1609]],[[64922,64922],\"mapped\",[1606,1605,1610]],[[64923,64923],\"mapped\",[1606,1605,1609]],[[64924,64925],\"mapped\",[1610,1605,1605]],[[64926,64926],\"mapped\",[1576,1582,1610]],[[64927,64927],\"mapped\",[1578,1580,1610]],[[64928,64928],\"mapped\",[1578,1580,1609]],[[64929,64929],\"mapped\",[1578,1582,1610]],[[64930,64930],\"mapped\",[1578,1582,1609]],[[64931,64931],\"mapped\",[1578,1605,1610]],[[64932,64932],\"mapped\",[1578,1605,1609]],[[64933,64933],\"mapped\",[1580,1605,1610]],[[64934,64934],\"mapped\",[1580,1581,1609]],[[64935,64935],\"mapped\",[1580,1605,1609]],[[64936,64936],\"mapped\",[1587,1582,1609]],[[64937,64937],\"mapped\",[1589,1581,1610]],[[64938,64938],\"mapped\",[1588,1581,1610]],[[64939,64939],\"mapped\",[1590,1581,1610]],[[64940,64940],\"mapped\",[1604,1580,1610]],[[64941,64941],\"mapped\",[1604,1605,1610]],[[64942,64942],\"mapped\",[1610,1581,1610]],[[64943,64943],\"mapped\",[1610,1580,1610]],[[64944,64944],\"mapped\",[1610,1605,1610]],[[64945,64945],\"mapped\",[1605,1605,1610]],[[64946,64946],\"mapped\",[1602,1605,1610]],[[64947,64947],\"mapped\",[1606,1581,1610]],[[64948,64948],\"mapped\",[1602,1605,1581]],[[64949,64949],\"mapped\",[1604,1581,1605]],[[64950,64950],\"mapped\",[1593,1605,1610]],[[64951,64951],\"mapped\",[1603,1605,1610]],[[64952,64952],\"mapped\",[1606,1580,1581]],[[64953,64953],\"mapped\",[1605,1582,1610]],[[64954,64954],\"mapped\",[1604,1580,1605]],[[64955,64955],\"mapped\",[1603,1605,1605]],[[64956,64956],\"mapped\",[1604,1580,1605]],[[64957,64957],\"mapped\",[1606,1580,1581]],[[64958,64958],\"mapped\",[1580,1581,1610]],[[64959,64959],\"mapped\",[1581,1580,1610]],[[64960,64960],\"mapped\",[1605,1580,1610]],[[64961,64961],\"mapped\",[1601,1605,1610]],[[64962,64962],\"mapped\",[1576,1581,1610]],[[64963,64963],\"mapped\",[1603,1605,1605]],[[64964,64964],\"mapped\",[1593,1580,1605]],[[64965,64965],\"mapped\",[1589,1605,1605]],[[64966,64966],\"mapped\",[1587,1582,1610]],[[64967,64967],\"mapped\",[1606,1580,1610]],[[64968,64975],\"disallowed\"],[[64976,65007],\"disallowed\"],[[65008,65008],\"mapped\",[1589,1604,1746]],[[65009,65009],\"mapped\",[1602,1604,1746]],[[65010,65010],\"mapped\",[1575,1604,1604,1607]],[[65011,65011],\"mapped\",[1575,1603,1576,1585]],[[65012,65012],\"mapped\",[1605,1581,1605,1583]],[[65013,65013],\"mapped\",[1589,1604,1593,1605]],[[65014,65014],\"mapped\",[1585,1587,1608,1604]],[[65015,65015],\"mapped\",[1593,1604,1610,1607]],[[65016,65016],\"mapped\",[1608,1587,1604,1605]],[[65017,65017],\"mapped\",[1589,1604,1609]],[[65018,65018],\"disallowed_STD3_mapped\",[1589,1604,1609,32,1575,1604,1604,1607,32,1593,1604,1610,1607,32,1608,1587,1604,1605]],[[65019,65019],\"disallowed_STD3_mapped\",[1580,1604,32,1580,1604,1575,1604,1607]],[[65020,65020],\"mapped\",[1585,1740,1575,1604]],[[65021,65021],\"valid\",[],\"NV8\"],[[65022,65023],\"disallowed\"],[[65024,65039],\"ignored\"],[[65040,65040],\"disallowed_STD3_mapped\",[44]],[[65041,65041],\"mapped\",[12289]],[[65042,65042],\"disallowed\"],[[65043,65043],\"disallowed_STD3_mapped\",[58]],[[65044,65044],\"disallowed_STD3_mapped\",[59]],[[65045,65045],\"disallowed_STD3_mapped\",[33]],[[65046,65046],\"disallowed_STD3_mapped\",[63]],[[65047,65047],\"mapped\",[12310]],[[65048,65048],\"mapped\",[12311]],[[65049,65049],\"disallowed\"],[[65050,65055],\"disallowed\"],[[65056,65059],\"valid\"],[[65060,65062],\"valid\"],[[65063,65069],\"valid\"],[[65070,65071],\"valid\"],[[65072,65072],\"disallowed\"],[[65073,65073],\"mapped\",[8212]],[[65074,65074],\"mapped\",[8211]],[[65075,65076],\"disallowed_STD3_mapped\",[95]],[[65077,65077],\"disallowed_STD3_mapped\",[40]],[[65078,65078],\"disallowed_STD3_mapped\",[41]],[[65079,65079],\"disallowed_STD3_mapped\",[123]],[[65080,65080],\"disallowed_STD3_mapped\",[125]],[[65081,65081],\"mapped\",[12308]],[[65082,65082],\"mapped\",[12309]],[[65083,65083],\"mapped\",[12304]],[[65084,65084],\"mapped\",[12305]],[[65085,65085],\"mapped\",[12298]],[[65086,65086],\"mapped\",[12299]],[[65087,65087],\"mapped\",[12296]],[[65088,65088],\"mapped\",[12297]],[[65089,65089],\"mapped\",[12300]],[[65090,65090],\"mapped\",[12301]],[[65091,65091],\"mapped\",[12302]],[[65092,65092],\"mapped\",[12303]],[[65093,65094],\"valid\",[],\"NV8\"],[[65095,65095],\"disallowed_STD3_mapped\",[91]],[[65096,65096],\"disallowed_STD3_mapped\",[93]],[[65097,65100],\"disallowed_STD3_mapped\",[32,773]],[[65101,65103],\"disallowed_STD3_mapped\",[95]],[[65104,65104],\"disallowed_STD3_mapped\",[44]],[[65105,65105],\"mapped\",[12289]],[[65106,65106],\"disallowed\"],[[65107,65107],\"disallowed\"],[[65108,65108],\"disallowed_STD3_mapped\",[59]],[[65109,65109],\"disallowed_STD3_mapped\",[58]],[[65110,65110],\"disallowed_STD3_mapped\",[63]],[[65111,65111],\"disallowed_STD3_mapped\",[33]],[[65112,65112],\"mapped\",[8212]],[[65113,65113],\"disallowed_STD3_mapped\",[40]],[[65114,65114],\"disallowed_STD3_mapped\",[41]],[[65115,65115],\"disallowed_STD3_mapped\",[123]],[[65116,65116],\"disallowed_STD3_mapped\",[125]],[[65117,65117],\"mapped\",[12308]],[[65118,65118],\"mapped\",[12309]],[[65119,65119],\"disallowed_STD3_mapped\",[35]],[[65120,65120],\"disallowed_STD3_mapped\",[38]],[[65121,65121],\"disallowed_STD3_mapped\",[42]],[[65122,65122],\"disallowed_STD3_mapped\",[43]],[[65123,65123],\"mapped\",[45]],[[65124,65124],\"disallowed_STD3_mapped\",[60]],[[65125,65125],\"disallowed_STD3_mapped\",[62]],[[65126,65126],\"disallowed_STD3_mapped\",[61]],[[65127,65127],\"disallowed\"],[[65128,65128],\"disallowed_STD3_mapped\",[92]],[[65129,65129],\"disallowed_STD3_mapped\",[36]],[[65130,65130],\"disallowed_STD3_mapped\",[37]],[[65131,65131],\"disallowed_STD3_mapped\",[64]],[[65132,65135],\"disallowed\"],[[65136,65136],\"disallowed_STD3_mapped\",[32,1611]],[[65137,65137],\"mapped\",[1600,1611]],[[65138,65138],\"disallowed_STD3_mapped\",[32,1612]],[[65139,65139],\"valid\"],[[65140,65140],\"disallowed_STD3_mapped\",[32,1613]],[[65141,65141],\"disallowed\"],[[65142,65142],\"disallowed_STD3_mapped\",[32,1614]],[[65143,65143],\"mapped\",[1600,1614]],[[65144,65144],\"disallowed_STD3_mapped\",[32,1615]],[[65145,65145],\"mapped\",[1600,1615]],[[65146,65146],\"disallowed_STD3_mapped\",[32,1616]],[[65147,65147],\"mapped\",[1600,1616]],[[65148,65148],\"disallowed_STD3_mapped\",[32,1617]],[[65149,65149],\"mapped\",[1600,1617]],[[65150,65150],\"disallowed_STD3_mapped\",[32,1618]],[[65151,65151],\"mapped\",[1600,1618]],[[65152,65152],\"mapped\",[1569]],[[65153,65154],\"mapped\",[1570]],[[65155,65156],\"mapped\",[1571]],[[65157,65158],\"mapped\",[1572]],[[65159,65160],\"mapped\",[1573]],[[65161,65164],\"mapped\",[1574]],[[65165,65166],\"mapped\",[1575]],[[65167,65170],\"mapped\",[1576]],[[65171,65172],\"mapped\",[1577]],[[65173,65176],\"mapped\",[1578]],[[65177,65180],\"mapped\",[1579]],[[65181,65184],\"mapped\",[1580]],[[65185,65188],\"mapped\",[1581]],[[65189,65192],\"mapped\",[1582]],[[65193,65194],\"mapped\",[1583]],[[65195,65196],\"mapped\",[1584]],[[65197,65198],\"mapped\",[1585]],[[65199,65200],\"mapped\",[1586]],[[65201,65204],\"mapped\",[1587]],[[65205,65208],\"mapped\",[1588]],[[65209,65212],\"mapped\",[1589]],[[65213,65216],\"mapped\",[1590]],[[65217,65220],\"mapped\",[1591]],[[65221,65224],\"mapped\",[1592]],[[65225,65228],\"mapped\",[1593]],[[65229,65232],\"mapped\",[1594]],[[65233,65236],\"mapped\",[1601]],[[65237,65240],\"mapped\",[1602]],[[65241,65244],\"mapped\",[1603]],[[65245,65248],\"mapped\",[1604]],[[65249,65252],\"mapped\",[1605]],[[65253,65256],\"mapped\",[1606]],[[65257,65260],\"mapped\",[1607]],[[65261,65262],\"mapped\",[1608]],[[65263,65264],\"mapped\",[1609]],[[65265,65268],\"mapped\",[1610]],[[65269,65270],\"mapped\",[1604,1570]],[[65271,65272],\"mapped\",[1604,1571]],[[65273,65274],\"mapped\",[1604,1573]],[[65275,65276],\"mapped\",[1604,1575]],[[65277,65278],\"disallowed\"],[[65279,65279],\"ignored\"],[[65280,65280],\"disallowed\"],[[65281,65281],\"disallowed_STD3_mapped\",[33]],[[65282,65282],\"disallowed_STD3_mapped\",[34]],[[65283,65283],\"disallowed_STD3_mapped\",[35]],[[65284,65284],\"disallowed_STD3_mapped\",[36]],[[65285,65285],\"disallowed_STD3_mapped\",[37]],[[65286,65286],\"disallowed_STD3_mapped\",[38]],[[65287,65287],\"disallowed_STD3_mapped\",[39]],[[65288,65288],\"disallowed_STD3_mapped\",[40]],[[65289,65289],\"disallowed_STD3_mapped\",[41]],[[65290,65290],\"disallowed_STD3_mapped\",[42]],[[65291,65291],\"disallowed_STD3_mapped\",[43]],[[65292,65292],\"disallowed_STD3_mapped\",[44]],[[65293,65293],\"mapped\",[45]],[[65294,65294],\"mapped\",[46]],[[65295,65295],\"disallowed_STD3_mapped\",[47]],[[65296,65296],\"mapped\",[48]],[[65297,65297],\"mapped\",[49]],[[65298,65298],\"mapped\",[50]],[[65299,65299],\"mapped\",[51]],[[65300,65300],\"mapped\",[52]],[[65301,65301],\"mapped\",[53]],[[65302,65302],\"mapped\",[54]],[[65303,65303],\"mapped\",[55]],[[65304,65304],\"mapped\",[56]],[[65305,65305],\"mapped\",[57]],[[65306,65306],\"disallowed_STD3_mapped\",[58]],[[65307,65307],\"disallowed_STD3_mapped\",[59]],[[65308,65308],\"disallowed_STD3_mapped\",[60]],[[65309,65309],\"disallowed_STD3_mapped\",[61]],[[65310,65310],\"disallowed_STD3_mapped\",[62]],[[65311,65311],\"disallowed_STD3_mapped\",[63]],[[65312,65312],\"disallowed_STD3_mapped\",[64]],[[65313,65313],\"mapped\",[97]],[[65314,65314],\"mapped\",[98]],[[65315,65315],\"mapped\",[99]],[[65316,65316],\"mapped\",[100]],[[65317,65317],\"mapped\",[101]],[[65318,65318],\"mapped\",[102]],[[65319,65319],\"mapped\",[103]],[[65320,65320],\"mapped\",[104]],[[65321,65321],\"mapped\",[105]],[[65322,65322],\"mapped\",[106]],[[65323,65323],\"mapped\",[107]],[[65324,65324],\"mapped\",[108]],[[65325,65325],\"mapped\",[109]],[[65326,65326],\"mapped\",[110]],[[65327,65327],\"mapped\",[111]],[[65328,65328],\"mapped\",[112]],[[65329,65329],\"mapped\",[113]],[[65330,65330],\"mapped\",[114]],[[65331,65331],\"mapped\",[115]],[[65332,65332],\"mapped\",[116]],[[65333,65333],\"mapped\",[117]],[[65334,65334],\"mapped\",[118]],[[65335,65335],\"mapped\",[119]],[[65336,65336],\"mapped\",[120]],[[65337,65337],\"mapped\",[121]],[[65338,65338],\"mapped\",[122]],[[65339,65339],\"disallowed_STD3_mapped\",[91]],[[65340,65340],\"disallowed_STD3_mapped\",[92]],[[65341,65341],\"disallowed_STD3_mapped\",[93]],[[65342,65342],\"disallowed_STD3_mapped\",[94]],[[65343,65343],\"disallowed_STD3_mapped\",[95]],[[65344,65344],\"disallowed_STD3_mapped\",[96]],[[65345,65345],\"mapped\",[97]],[[65346,65346],\"mapped\",[98]],[[65347,65347],\"mapped\",[99]],[[65348,65348],\"mapped\",[100]],[[65349,65349],\"mapped\",[101]],[[65350,65350],\"mapped\",[102]],[[65351,65351],\"mapped\",[103]],[[65352,65352],\"mapped\",[104]],[[65353,65353],\"mapped\",[105]],[[65354,65354],\"mapped\",[106]],[[65355,65355],\"mapped\",[107]],[[65356,65356],\"mapped\",[108]],[[65357,65357],\"mapped\",[109]],[[65358,65358],\"mapped\",[110]],[[65359,65359],\"mapped\",[111]],[[65360,65360],\"mapped\",[112]],[[65361,65361],\"mapped\",[113]],[[65362,65362],\"mapped\",[114]],[[65363,65363],\"mapped\",[115]],[[65364,65364],\"mapped\",[116]],[[65365,65365],\"mapped\",[117]],[[65366,65366],\"mapped\",[118]],[[65367,65367],\"mapped\",[119]],[[65368,65368],\"mapped\",[120]],[[65369,65369],\"mapped\",[121]],[[65370,65370],\"mapped\",[122]],[[65371,65371],\"disallowed_STD3_mapped\",[123]],[[65372,65372],\"disallowed_STD3_mapped\",[124]],[[65373,65373],\"disallowed_STD3_mapped\",[125]],[[65374,65374],\"disallowed_STD3_mapped\",[126]],[[65375,65375],\"mapped\",[10629]],[[65376,65376],\"mapped\",[10630]],[[65377,65377],\"mapped\",[46]],[[65378,65378],\"mapped\",[12300]],[[65379,65379],\"mapped\",[12301]],[[65380,65380],\"mapped\",[12289]],[[65381,65381],\"mapped\",[12539]],[[65382,65382],\"mapped\",[12530]],[[65383,65383],\"mapped\",[12449]],[[65384,65384],\"mapped\",[12451]],[[65385,65385],\"mapped\",[12453]],[[65386,65386],\"mapped\",[12455]],[[65387,65387],\"mapped\",[12457]],[[65388,65388],\"mapped\",[12515]],[[65389,65389],\"mapped\",[12517]],[[65390,65390],\"mapped\",[12519]],[[65391,65391],\"mapped\",[12483]],[[65392,65392],\"mapped\",[12540]],[[65393,65393],\"mapped\",[12450]],[[65394,65394],\"mapped\",[12452]],[[65395,65395],\"mapped\",[12454]],[[65396,65396],\"mapped\",[12456]],[[65397,65397],\"mapped\",[12458]],[[65398,65398],\"mapped\",[12459]],[[65399,65399],\"mapped\",[12461]],[[65400,65400],\"mapped\",[12463]],[[65401,65401],\"mapped\",[12465]],[[65402,65402],\"mapped\",[12467]],[[65403,65403],\"mapped\",[12469]],[[65404,65404],\"mapped\",[12471]],[[65405,65405],\"mapped\",[12473]],[[65406,65406],\"mapped\",[12475]],[[65407,65407],\"mapped\",[12477]],[[65408,65408],\"mapped\",[12479]],[[65409,65409],\"mapped\",[12481]],[[65410,65410],\"mapped\",[12484]],[[65411,65411],\"mapped\",[12486]],[[65412,65412],\"mapped\",[12488]],[[65413,65413],\"mapped\",[12490]],[[65414,65414],\"mapped\",[12491]],[[65415,65415],\"mapped\",[12492]],[[65416,65416],\"mapped\",[12493]],[[65417,65417],\"mapped\",[12494]],[[65418,65418],\"mapped\",[12495]],[[65419,65419],\"mapped\",[12498]],[[65420,65420],\"mapped\",[12501]],[[65421,65421],\"mapped\",[12504]],[[65422,65422],\"mapped\",[12507]],[[65423,65423],\"mapped\",[12510]],[[65424,65424],\"mapped\",[12511]],[[65425,65425],\"mapped\",[12512]],[[65426,65426],\"mapped\",[12513]],[[65427,65427],\"mapped\",[12514]],[[65428,65428],\"mapped\",[12516]],[[65429,65429],\"mapped\",[12518]],[[65430,65430],\"mapped\",[12520]],[[65431,65431],\"mapped\",[12521]],[[65432,65432],\"mapped\",[12522]],[[65433,65433],\"mapped\",[12523]],[[65434,65434],\"mapped\",[12524]],[[65435,65435],\"mapped\",[12525]],[[65436,65436],\"mapped\",[12527]],[[65437,65437],\"mapped\",[12531]],[[65438,65438],\"mapped\",[12441]],[[65439,65439],\"mapped\",[12442]],[[65440,65440],\"disallowed\"],[[65441,65441],\"mapped\",[4352]],[[65442,65442],\"mapped\",[4353]],[[65443,65443],\"mapped\",[4522]],[[65444,65444],\"mapped\",[4354]],[[65445,65445],\"mapped\",[4524]],[[65446,65446],\"mapped\",[4525]],[[65447,65447],\"mapped\",[4355]],[[65448,65448],\"mapped\",[4356]],[[65449,65449],\"mapped\",[4357]],[[65450,65450],\"mapped\",[4528]],[[65451,65451],\"mapped\",[4529]],[[65452,65452],\"mapped\",[4530]],[[65453,65453],\"mapped\",[4531]],[[65454,65454],\"mapped\",[4532]],[[65455,65455],\"mapped\",[4533]],[[65456,65456],\"mapped\",[4378]],[[65457,65457],\"mapped\",[4358]],[[65458,65458],\"mapped\",[4359]],[[65459,65459],\"mapped\",[4360]],[[65460,65460],\"mapped\",[4385]],[[65461,65461],\"mapped\",[4361]],[[65462,65462],\"mapped\",[4362]],[[65463,65463],\"mapped\",[4363]],[[65464,65464],\"mapped\",[4364]],[[65465,65465],\"mapped\",[4365]],[[65466,65466],\"mapped\",[4366]],[[65467,65467],\"mapped\",[4367]],[[65468,65468],\"mapped\",[4368]],[[65469,65469],\"mapped\",[4369]],[[65470,65470],\"mapped\",[4370]],[[65471,65473],\"disallowed\"],[[65474,65474],\"mapped\",[4449]],[[65475,65475],\"mapped\",[4450]],[[65476,65476],\"mapped\",[4451]],[[65477,65477],\"mapped\",[4452]],[[65478,65478],\"mapped\",[4453]],[[65479,65479],\"mapped\",[4454]],[[65480,65481],\"disallowed\"],[[65482,65482],\"mapped\",[4455]],[[65483,65483],\"mapped\",[4456]],[[65484,65484],\"mapped\",[4457]],[[65485,65485],\"mapped\",[4458]],[[65486,65486],\"mapped\",[4459]],[[65487,65487],\"mapped\",[4460]],[[65488,65489],\"disallowed\"],[[65490,65490],\"mapped\",[4461]],[[65491,65491],\"mapped\",[4462]],[[65492,65492],\"mapped\",[4463]],[[65493,65493],\"mapped\",[4464]],[[65494,65494],\"mapped\",[4465]],[[65495,65495],\"mapped\",[4466]],[[65496,65497],\"disallowed\"],[[65498,65498],\"mapped\",[4467]],[[65499,65499],\"mapped\",[4468]],[[65500,65500],\"mapped\",[4469]],[[65501,65503],\"disallowed\"],[[65504,65504],\"mapped\",[162]],[[65505,65505],\"mapped\",[163]],[[65506,65506],\"mapped\",[172]],[[65507,65507],\"disallowed_STD3_mapped\",[32,772]],[[65508,65508],\"mapped\",[166]],[[65509,65509],\"mapped\",[165]],[[65510,65510],\"mapped\",[8361]],[[65511,65511],\"disallowed\"],[[65512,65512],\"mapped\",[9474]],[[65513,65513],\"mapped\",[8592]],[[65514,65514],\"mapped\",[8593]],[[65515,65515],\"mapped\",[8594]],[[65516,65516],\"mapped\",[8595]],[[65517,65517],\"mapped\",[9632]],[[65518,65518],\"mapped\",[9675]],[[65519,65528],\"disallowed\"],[[65529,65531],\"disallowed\"],[[65532,65532],\"disallowed\"],[[65533,65533],\"disallowed\"],[[65534,65535],\"disallowed\"],[[65536,65547],\"valid\"],[[65548,65548],\"disallowed\"],[[65549,65574],\"valid\"],[[65575,65575],\"disallowed\"],[[65576,65594],\"valid\"],[[65595,65595],\"disallowed\"],[[65596,65597],\"valid\"],[[65598,65598],\"disallowed\"],[[65599,65613],\"valid\"],[[65614,65615],\"disallowed\"],[[65616,65629],\"valid\"],[[65630,65663],\"disallowed\"],[[65664,65786],\"valid\"],[[65787,65791],\"disallowed\"],[[65792,65794],\"valid\",[],\"NV8\"],[[65795,65798],\"disallowed\"],[[65799,65843],\"valid\",[],\"NV8\"],[[65844,65846],\"disallowed\"],[[65847,65855],\"valid\",[],\"NV8\"],[[65856,65930],\"valid\",[],\"NV8\"],[[65931,65932],\"valid\",[],\"NV8\"],[[65933,65935],\"disallowed\"],[[65936,65947],\"valid\",[],\"NV8\"],[[65948,65951],\"disallowed\"],[[65952,65952],\"valid\",[],\"NV8\"],[[65953,65999],\"disallowed\"],[[66000,66044],\"valid\",[],\"NV8\"],[[66045,66045],\"valid\"],[[66046,66175],\"disallowed\"],[[66176,66204],\"valid\"],[[66205,66207],\"disallowed\"],[[66208,66256],\"valid\"],[[66257,66271],\"disallowed\"],[[66272,66272],\"valid\"],[[66273,66299],\"valid\",[],\"NV8\"],[[66300,66303],\"disallowed\"],[[66304,66334],\"valid\"],[[66335,66335],\"valid\"],[[66336,66339],\"valid\",[],\"NV8\"],[[66340,66351],\"disallowed\"],[[66352,66368],\"valid\"],[[66369,66369],\"valid\",[],\"NV8\"],[[66370,66377],\"valid\"],[[66378,66378],\"valid\",[],\"NV8\"],[[66379,66383],\"disallowed\"],[[66384,66426],\"valid\"],[[66427,66431],\"disallowed\"],[[66432,66461],\"valid\"],[[66462,66462],\"disallowed\"],[[66463,66463],\"valid\",[],\"NV8\"],[[66464,66499],\"valid\"],[[66500,66503],\"disallowed\"],[[66504,66511],\"valid\"],[[66512,66517],\"valid\",[],\"NV8\"],[[66518,66559],\"disallowed\"],[[66560,66560],\"mapped\",[66600]],[[66561,66561],\"mapped\",[66601]],[[66562,66562],\"mapped\",[66602]],[[66563,66563],\"mapped\",[66603]],[[66564,66564],\"mapped\",[66604]],[[66565,66565],\"mapped\",[66605]],[[66566,66566],\"mapped\",[66606]],[[66567,66567],\"mapped\",[66607]],[[66568,66568],\"mapped\",[66608]],[[66569,66569],\"mapped\",[66609]],[[66570,66570],\"mapped\",[66610]],[[66571,66571],\"mapped\",[66611]],[[66572,66572],\"mapped\",[66612]],[[66573,66573],\"mapped\",[66613]],[[66574,66574],\"mapped\",[66614]],[[66575,66575],\"mapped\",[66615]],[[66576,66576],\"mapped\",[66616]],[[66577,66577],\"mapped\",[66617]],[[66578,66578],\"mapped\",[66618]],[[66579,66579],\"mapped\",[66619]],[[66580,66580],\"mapped\",[66620]],[[66581,66581],\"mapped\",[66621]],[[66582,66582],\"mapped\",[66622]],[[66583,66583],\"mapped\",[66623]],[[66584,66584],\"mapped\",[66624]],[[66585,66585],\"mapped\",[66625]],[[66586,66586],\"mapped\",[66626]],[[66587,66587],\"mapped\",[66627]],[[66588,66588],\"mapped\",[66628]],[[66589,66589],\"mapped\",[66629]],[[66590,66590],\"mapped\",[66630]],[[66591,66591],\"mapped\",[66631]],[[66592,66592],\"mapped\",[66632]],[[66593,66593],\"mapped\",[66633]],[[66594,66594],\"mapped\",[66634]],[[66595,66595],\"mapped\",[66635]],[[66596,66596],\"mapped\",[66636]],[[66597,66597],\"mapped\",[66637]],[[66598,66598],\"mapped\",[66638]],[[66599,66599],\"mapped\",[66639]],[[66600,66637],\"valid\"],[[66638,66717],\"valid\"],[[66718,66719],\"disallowed\"],[[66720,66729],\"valid\"],[[66730,66815],\"disallowed\"],[[66816,66855],\"valid\"],[[66856,66863],\"disallowed\"],[[66864,66915],\"valid\"],[[66916,66926],\"disallowed\"],[[66927,66927],\"valid\",[],\"NV8\"],[[66928,67071],\"disallowed\"],[[67072,67382],\"valid\"],[[67383,67391],\"disallowed\"],[[67392,67413],\"valid\"],[[67414,67423],\"disallowed\"],[[67424,67431],\"valid\"],[[67432,67583],\"disallowed\"],[[67584,67589],\"valid\"],[[67590,67591],\"disallowed\"],[[67592,67592],\"valid\"],[[67593,67593],\"disallowed\"],[[67594,67637],\"valid\"],[[67638,67638],\"disallowed\"],[[67639,67640],\"valid\"],[[67641,67643],\"disallowed\"],[[67644,67644],\"valid\"],[[67645,67646],\"disallowed\"],[[67647,67647],\"valid\"],[[67648,67669],\"valid\"],[[67670,67670],\"disallowed\"],[[67671,67679],\"valid\",[],\"NV8\"],[[67680,67702],\"valid\"],[[67703,67711],\"valid\",[],\"NV8\"],[[67712,67742],\"valid\"],[[67743,67750],\"disallowed\"],[[67751,67759],\"valid\",[],\"NV8\"],[[67760,67807],\"disallowed\"],[[67808,67826],\"valid\"],[[67827,67827],\"disallowed\"],[[67828,67829],\"valid\"],[[67830,67834],\"disallowed\"],[[67835,67839],\"valid\",[],\"NV8\"],[[67840,67861],\"valid\"],[[67862,67865],\"valid\",[],\"NV8\"],[[67866,67867],\"valid\",[],\"NV8\"],[[67868,67870],\"disallowed\"],[[67871,67871],\"valid\",[],\"NV8\"],[[67872,67897],\"valid\"],[[67898,67902],\"disallowed\"],[[67903,67903],\"valid\",[],\"NV8\"],[[67904,67967],\"disallowed\"],[[67968,68023],\"valid\"],[[68024,68027],\"disallowed\"],[[68028,68029],\"valid\",[],\"NV8\"],[[68030,68031],\"valid\"],[[68032,68047],\"valid\",[],\"NV8\"],[[68048,68049],\"disallowed\"],[[68050,68095],\"valid\",[],\"NV8\"],[[68096,68099],\"valid\"],[[68100,68100],\"disallowed\"],[[68101,68102],\"valid\"],[[68103,68107],\"disallowed\"],[[68108,68115],\"valid\"],[[68116,68116],\"disallowed\"],[[68117,68119],\"valid\"],[[68120,68120],\"disallowed\"],[[68121,68147],\"valid\"],[[68148,68151],\"disallowed\"],[[68152,68154],\"valid\"],[[68155,68158],\"disallowed\"],[[68159,68159],\"valid\"],[[68160,68167],\"valid\",[],\"NV8\"],[[68168,68175],\"disallowed\"],[[68176,68184],\"valid\",[],\"NV8\"],[[68185,68191],\"disallowed\"],[[68192,68220],\"valid\"],[[68221,68223],\"valid\",[],\"NV8\"],[[68224,68252],\"valid\"],[[68253,68255],\"valid\",[],\"NV8\"],[[68256,68287],\"disallowed\"],[[68288,68295],\"valid\"],[[68296,68296],\"valid\",[],\"NV8\"],[[68297,68326],\"valid\"],[[68327,68330],\"disallowed\"],[[68331,68342],\"valid\",[],\"NV8\"],[[68343,68351],\"disallowed\"],[[68352,68405],\"valid\"],[[68406,68408],\"disallowed\"],[[68409,68415],\"valid\",[],\"NV8\"],[[68416,68437],\"valid\"],[[68438,68439],\"disallowed\"],[[68440,68447],\"valid\",[],\"NV8\"],[[68448,68466],\"valid\"],[[68467,68471],\"disallowed\"],[[68472,68479],\"valid\",[],\"NV8\"],[[68480,68497],\"valid\"],[[68498,68504],\"disallowed\"],[[68505,68508],\"valid\",[],\"NV8\"],[[68509,68520],\"disallowed\"],[[68521,68527],\"valid\",[],\"NV8\"],[[68528,68607],\"disallowed\"],[[68608,68680],\"valid\"],[[68681,68735],\"disallowed\"],[[68736,68736],\"mapped\",[68800]],[[68737,68737],\"mapped\",[68801]],[[68738,68738],\"mapped\",[68802]],[[68739,68739],\"mapped\",[68803]],[[68740,68740],\"mapped\",[68804]],[[68741,68741],\"mapped\",[68805]],[[68742,68742],\"mapped\",[68806]],[[68743,68743],\"mapped\",[68807]],[[68744,68744],\"mapped\",[68808]],[[68745,68745],\"mapped\",[68809]],[[68746,68746],\"mapped\",[68810]],[[68747,68747],\"mapped\",[68811]],[[68748,68748],\"mapped\",[68812]],[[68749,68749],\"mapped\",[68813]],[[68750,68750],\"mapped\",[68814]],[[68751,68751],\"mapped\",[68815]],[[68752,68752],\"mapped\",[68816]],[[68753,68753],\"mapped\",[68817]],[[68754,68754],\"mapped\",[68818]],[[68755,68755],\"mapped\",[68819]],[[68756,68756],\"mapped\",[68820]],[[68757,68757],\"mapped\",[68821]],[[68758,68758],\"mapped\",[68822]],[[68759,68759],\"mapped\",[68823]],[[68760,68760],\"mapped\",[68824]],[[68761,68761],\"mapped\",[68825]],[[68762,68762],\"mapped\",[68826]],[[68763,68763],\"mapped\",[68827]],[[68764,68764],\"mapped\",[68828]],[[68765,68765],\"mapped\",[68829]],[[68766,68766],\"mapped\",[68830]],[[68767,68767],\"mapped\",[68831]],[[68768,68768],\"mapped\",[68832]],[[68769,68769],\"mapped\",[68833]],[[68770,68770],\"mapped\",[68834]],[[68771,68771],\"mapped\",[68835]],[[68772,68772],\"mapped\",[68836]],[[68773,68773],\"mapped\",[68837]],[[68774,68774],\"mapped\",[68838]],[[68775,68775],\"mapped\",[68839]],[[68776,68776],\"mapped\",[68840]],[[68777,68777],\"mapped\",[68841]],[[68778,68778],\"mapped\",[68842]],[[68779,68779],\"mapped\",[68843]],[[68780,68780],\"mapped\",[68844]],[[68781,68781],\"mapped\",[68845]],[[68782,68782],\"mapped\",[68846]],[[68783,68783],\"mapped\",[68847]],[[68784,68784],\"mapped\",[68848]],[[68785,68785],\"mapped\",[68849]],[[68786,68786],\"mapped\",[68850]],[[68787,68799],\"disallowed\"],[[68800,68850],\"valid\"],[[68851,68857],\"disallowed\"],[[68858,68863],\"valid\",[],\"NV8\"],[[68864,69215],\"disallowed\"],[[69216,69246],\"valid\",[],\"NV8\"],[[69247,69631],\"disallowed\"],[[69632,69702],\"valid\"],[[69703,69709],\"valid\",[],\"NV8\"],[[69710,69713],\"disallowed\"],[[69714,69733],\"valid\",[],\"NV8\"],[[69734,69743],\"valid\"],[[69744,69758],\"disallowed\"],[[69759,69759],\"valid\"],[[69760,69818],\"valid\"],[[69819,69820],\"valid\",[],\"NV8\"],[[69821,69821],\"disallowed\"],[[69822,69825],\"valid\",[],\"NV8\"],[[69826,69839],\"disallowed\"],[[69840,69864],\"valid\"],[[69865,69871],\"disallowed\"],[[69872,69881],\"valid\"],[[69882,69887],\"disallowed\"],[[69888,69940],\"valid\"],[[69941,69941],\"disallowed\"],[[69942,69951],\"valid\"],[[69952,69955],\"valid\",[],\"NV8\"],[[69956,69967],\"disallowed\"],[[69968,70003],\"valid\"],[[70004,70005],\"valid\",[],\"NV8\"],[[70006,70006],\"valid\"],[[70007,70015],\"disallowed\"],[[70016,70084],\"valid\"],[[70085,70088],\"valid\",[],\"NV8\"],[[70089,70089],\"valid\",[],\"NV8\"],[[70090,70092],\"valid\"],[[70093,70093],\"valid\",[],\"NV8\"],[[70094,70095],\"disallowed\"],[[70096,70105],\"valid\"],[[70106,70106],\"valid\"],[[70107,70107],\"valid\",[],\"NV8\"],[[70108,70108],\"valid\"],[[70109,70111],\"valid\",[],\"NV8\"],[[70112,70112],\"disallowed\"],[[70113,70132],\"valid\",[],\"NV8\"],[[70133,70143],\"disallowed\"],[[70144,70161],\"valid\"],[[70162,70162],\"disallowed\"],[[70163,70199],\"valid\"],[[70200,70205],\"valid\",[],\"NV8\"],[[70206,70271],\"disallowed\"],[[70272,70278],\"valid\"],[[70279,70279],\"disallowed\"],[[70280,70280],\"valid\"],[[70281,70281],\"disallowed\"],[[70282,70285],\"valid\"],[[70286,70286],\"disallowed\"],[[70287,70301],\"valid\"],[[70302,70302],\"disallowed\"],[[70303,70312],\"valid\"],[[70313,70313],\"valid\",[],\"NV8\"],[[70314,70319],\"disallowed\"],[[70320,70378],\"valid\"],[[70379,70383],\"disallowed\"],[[70384,70393],\"valid\"],[[70394,70399],\"disallowed\"],[[70400,70400],\"valid\"],[[70401,70403],\"valid\"],[[70404,70404],\"disallowed\"],[[70405,70412],\"valid\"],[[70413,70414],\"disallowed\"],[[70415,70416],\"valid\"],[[70417,70418],\"disallowed\"],[[70419,70440],\"valid\"],[[70441,70441],\"disallowed\"],[[70442,70448],\"valid\"],[[70449,70449],\"disallowed\"],[[70450,70451],\"valid\"],[[70452,70452],\"disallowed\"],[[70453,70457],\"valid\"],[[70458,70459],\"disallowed\"],[[70460,70468],\"valid\"],[[70469,70470],\"disallowed\"],[[70471,70472],\"valid\"],[[70473,70474],\"disallowed\"],[[70475,70477],\"valid\"],[[70478,70479],\"disallowed\"],[[70480,70480],\"valid\"],[[70481,70486],\"disallowed\"],[[70487,70487],\"valid\"],[[70488,70492],\"disallowed\"],[[70493,70499],\"valid\"],[[70500,70501],\"disallowed\"],[[70502,70508],\"valid\"],[[70509,70511],\"disallowed\"],[[70512,70516],\"valid\"],[[70517,70783],\"disallowed\"],[[70784,70853],\"valid\"],[[70854,70854],\"valid\",[],\"NV8\"],[[70855,70855],\"valid\"],[[70856,70863],\"disallowed\"],[[70864,70873],\"valid\"],[[70874,71039],\"disallowed\"],[[71040,71093],\"valid\"],[[71094,71095],\"disallowed\"],[[71096,71104],\"valid\"],[[71105,71113],\"valid\",[],\"NV8\"],[[71114,71127],\"valid\",[],\"NV8\"],[[71128,71133],\"valid\"],[[71134,71167],\"disallowed\"],[[71168,71232],\"valid\"],[[71233,71235],\"valid\",[],\"NV8\"],[[71236,71236],\"valid\"],[[71237,71247],\"disallowed\"],[[71248,71257],\"valid\"],[[71258,71295],\"disallowed\"],[[71296,71351],\"valid\"],[[71352,71359],\"disallowed\"],[[71360,71369],\"valid\"],[[71370,71423],\"disallowed\"],[[71424,71449],\"valid\"],[[71450,71452],\"disallowed\"],[[71453,71467],\"valid\"],[[71468,71471],\"disallowed\"],[[71472,71481],\"valid\"],[[71482,71487],\"valid\",[],\"NV8\"],[[71488,71839],\"disallowed\"],[[71840,71840],\"mapped\",[71872]],[[71841,71841],\"mapped\",[71873]],[[71842,71842],\"mapped\",[71874]],[[71843,71843],\"mapped\",[71875]],[[71844,71844],\"mapped\",[71876]],[[71845,71845],\"mapped\",[71877]],[[71846,71846],\"mapped\",[71878]],[[71847,71847],\"mapped\",[71879]],[[71848,71848],\"mapped\",[71880]],[[71849,71849],\"mapped\",[71881]],[[71850,71850],\"mapped\",[71882]],[[71851,71851],\"mapped\",[71883]],[[71852,71852],\"mapped\",[71884]],[[71853,71853],\"mapped\",[71885]],[[71854,71854],\"mapped\",[71886]],[[71855,71855],\"mapped\",[71887]],[[71856,71856],\"mapped\",[71888]],[[71857,71857],\"mapped\",[71889]],[[71858,71858],\"mapped\",[71890]],[[71859,71859],\"mapped\",[71891]],[[71860,71860],\"mapped\",[71892]],[[71861,71861],\"mapped\",[71893]],[[71862,71862],\"mapped\",[71894]],[[71863,71863],\"mapped\",[71895]],[[71864,71864],\"mapped\",[71896]],[[71865,71865],\"mapped\",[71897]],[[71866,71866],\"mapped\",[71898]],[[71867,71867],\"mapped\",[71899]],[[71868,71868],\"mapped\",[71900]],[[71869,71869],\"mapped\",[71901]],[[71870,71870],\"mapped\",[71902]],[[71871,71871],\"mapped\",[71903]],[[71872,71913],\"valid\"],[[71914,71922],\"valid\",[],\"NV8\"],[[71923,71934],\"disallowed\"],[[71935,71935],\"valid\"],[[71936,72383],\"disallowed\"],[[72384,72440],\"valid\"],[[72441,73727],\"disallowed\"],[[73728,74606],\"valid\"],[[74607,74648],\"valid\"],[[74649,74649],\"valid\"],[[74650,74751],\"disallowed\"],[[74752,74850],\"valid\",[],\"NV8\"],[[74851,74862],\"valid\",[],\"NV8\"],[[74863,74863],\"disallowed\"],[[74864,74867],\"valid\",[],\"NV8\"],[[74868,74868],\"valid\",[],\"NV8\"],[[74869,74879],\"disallowed\"],[[74880,75075],\"valid\"],[[75076,77823],\"disallowed\"],[[77824,78894],\"valid\"],[[78895,82943],\"disallowed\"],[[82944,83526],\"valid\"],[[83527,92159],\"disallowed\"],[[92160,92728],\"valid\"],[[92729,92735],\"disallowed\"],[[92736,92766],\"valid\"],[[92767,92767],\"disallowed\"],[[92768,92777],\"valid\"],[[92778,92781],\"disallowed\"],[[92782,92783],\"valid\",[],\"NV8\"],[[92784,92879],\"disallowed\"],[[92880,92909],\"valid\"],[[92910,92911],\"disallowed\"],[[92912,92916],\"valid\"],[[92917,92917],\"valid\",[],\"NV8\"],[[92918,92927],\"disallowed\"],[[92928,92982],\"valid\"],[[92983,92991],\"valid\",[],\"NV8\"],[[92992,92995],\"valid\"],[[92996,92997],\"valid\",[],\"NV8\"],[[92998,93007],\"disallowed\"],[[93008,93017],\"valid\"],[[93018,93018],\"disallowed\"],[[93019,93025],\"valid\",[],\"NV8\"],[[93026,93026],\"disallowed\"],[[93027,93047],\"valid\"],[[93048,93052],\"disallowed\"],[[93053,93071],\"valid\"],[[93072,93951],\"disallowed\"],[[93952,94020],\"valid\"],[[94021,94031],\"disallowed\"],[[94032,94078],\"valid\"],[[94079,94094],\"disallowed\"],[[94095,94111],\"valid\"],[[94112,110591],\"disallowed\"],[[110592,110593],\"valid\"],[[110594,113663],\"disallowed\"],[[113664,113770],\"valid\"],[[113771,113775],\"disallowed\"],[[113776,113788],\"valid\"],[[113789,113791],\"disallowed\"],[[113792,113800],\"valid\"],[[113801,113807],\"disallowed\"],[[113808,113817],\"valid\"],[[113818,113819],\"disallowed\"],[[113820,113820],\"valid\",[],\"NV8\"],[[113821,113822],\"valid\"],[[113823,113823],\"valid\",[],\"NV8\"],[[113824,113827],\"ignored\"],[[113828,118783],\"disallowed\"],[[118784,119029],\"valid\",[],\"NV8\"],[[119030,119039],\"disallowed\"],[[119040,119078],\"valid\",[],\"NV8\"],[[119079,119080],\"disallowed\"],[[119081,119081],\"valid\",[],\"NV8\"],[[119082,119133],\"valid\",[],\"NV8\"],[[119134,119134],\"mapped\",[119127,119141]],[[119135,119135],\"mapped\",[119128,119141]],[[119136,119136],\"mapped\",[119128,119141,119150]],[[119137,119137],\"mapped\",[119128,119141,119151]],[[119138,119138],\"mapped\",[119128,119141,119152]],[[119139,119139],\"mapped\",[119128,119141,119153]],[[119140,119140],\"mapped\",[119128,119141,119154]],[[119141,119154],\"valid\",[],\"NV8\"],[[119155,119162],\"disallowed\"],[[119163,119226],\"valid\",[],\"NV8\"],[[119227,119227],\"mapped\",[119225,119141]],[[119228,119228],\"mapped\",[119226,119141]],[[119229,119229],\"mapped\",[119225,119141,119150]],[[119230,119230],\"mapped\",[119226,119141,119150]],[[119231,119231],\"mapped\",[119225,119141,119151]],[[119232,119232],\"mapped\",[119226,119141,119151]],[[119233,119261],\"valid\",[],\"NV8\"],[[119262,119272],\"valid\",[],\"NV8\"],[[119273,119295],\"disallowed\"],[[119296,119365],\"valid\",[],\"NV8\"],[[119366,119551],\"disallowed\"],[[119552,119638],\"valid\",[],\"NV8\"],[[119639,119647],\"disallowed\"],[[119648,119665],\"valid\",[],\"NV8\"],[[119666,119807],\"disallowed\"],[[119808,119808],\"mapped\",[97]],[[119809,119809],\"mapped\",[98]],[[119810,119810],\"mapped\",[99]],[[119811,119811],\"mapped\",[100]],[[119812,119812],\"mapped\",[101]],[[119813,119813],\"mapped\",[102]],[[119814,119814],\"mapped\",[103]],[[119815,119815],\"mapped\",[104]],[[119816,119816],\"mapped\",[105]],[[119817,119817],\"mapped\",[106]],[[119818,119818],\"mapped\",[107]],[[119819,119819],\"mapped\",[108]],[[119820,119820],\"mapped\",[109]],[[119821,119821],\"mapped\",[110]],[[119822,119822],\"mapped\",[111]],[[119823,119823],\"mapped\",[112]],[[119824,119824],\"mapped\",[113]],[[119825,119825],\"mapped\",[114]],[[119826,119826],\"mapped\",[115]],[[119827,119827],\"mapped\",[116]],[[119828,119828],\"mapped\",[117]],[[119829,119829],\"mapped\",[118]],[[119830,119830],\"mapped\",[119]],[[119831,119831],\"mapped\",[120]],[[119832,119832],\"mapped\",[121]],[[119833,119833],\"mapped\",[122]],[[119834,119834],\"mapped\",[97]],[[119835,119835],\"mapped\",[98]],[[119836,119836],\"mapped\",[99]],[[119837,119837],\"mapped\",[100]],[[119838,119838],\"mapped\",[101]],[[119839,119839],\"mapped\",[102]],[[119840,119840],\"mapped\",[103]],[[119841,119841],\"mapped\",[104]],[[119842,119842],\"mapped\",[105]],[[119843,119843],\"mapped\",[106]],[[119844,119844],\"mapped\",[107]],[[119845,119845],\"mapped\",[108]],[[119846,119846],\"mapped\",[109]],[[119847,119847],\"mapped\",[110]],[[119848,119848],\"mapped\",[111]],[[119849,119849],\"mapped\",[112]],[[119850,119850],\"mapped\",[113]],[[119851,119851],\"mapped\",[114]],[[119852,119852],\"mapped\",[115]],[[119853,119853],\"mapped\",[116]],[[119854,119854],\"mapped\",[117]],[[119855,119855],\"mapped\",[118]],[[119856,119856],\"mapped\",[119]],[[119857,119857],\"mapped\",[120]],[[119858,119858],\"mapped\",[121]],[[119859,119859],\"mapped\",[122]],[[119860,119860],\"mapped\",[97]],[[119861,119861],\"mapped\",[98]],[[119862,119862],\"mapped\",[99]],[[119863,119863],\"mapped\",[100]],[[119864,119864],\"mapped\",[101]],[[119865,119865],\"mapped\",[102]],[[119866,119866],\"mapped\",[103]],[[119867,119867],\"mapped\",[104]],[[119868,119868],\"mapped\",[105]],[[119869,119869],\"mapped\",[106]],[[119870,119870],\"mapped\",[107]],[[119871,119871],\"mapped\",[108]],[[119872,119872],\"mapped\",[109]],[[119873,119873],\"mapped\",[110]],[[119874,119874],\"mapped\",[111]],[[119875,119875],\"mapped\",[112]],[[119876,119876],\"mapped\",[113]],[[119877,119877],\"mapped\",[114]],[[119878,119878],\"mapped\",[115]],[[119879,119879],\"mapped\",[116]],[[119880,119880],\"mapped\",[117]],[[119881,119881],\"mapped\",[118]],[[119882,119882],\"mapped\",[119]],[[119883,119883],\"mapped\",[120]],[[119884,119884],\"mapped\",[121]],[[119885,119885],\"mapped\",[122]],[[119886,119886],\"mapped\",[97]],[[119887,119887],\"mapped\",[98]],[[119888,119888],\"mapped\",[99]],[[119889,119889],\"mapped\",[100]],[[119890,119890],\"mapped\",[101]],[[119891,119891],\"mapped\",[102]],[[119892,119892],\"mapped\",[103]],[[119893,119893],\"disallowed\"],[[119894,119894],\"mapped\",[105]],[[119895,119895],\"mapped\",[106]],[[119896,119896],\"mapped\",[107]],[[119897,119897],\"mapped\",[108]],[[119898,119898],\"mapped\",[109]],[[119899,119899],\"mapped\",[110]],[[119900,119900],\"mapped\",[111]],[[119901,119901],\"mapped\",[112]],[[119902,119902],\"mapped\",[113]],[[119903,119903],\"mapped\",[114]],[[119904,119904],\"mapped\",[115]],[[119905,119905],\"mapped\",[116]],[[119906,119906],\"mapped\",[117]],[[119907,119907],\"mapped\",[118]],[[119908,119908],\"mapped\",[119]],[[119909,119909],\"mapped\",[120]],[[119910,119910],\"mapped\",[121]],[[119911,119911],\"mapped\",[122]],[[119912,119912],\"mapped\",[97]],[[119913,119913],\"mapped\",[98]],[[119914,119914],\"mapped\",[99]],[[119915,119915],\"mapped\",[100]],[[119916,119916],\"mapped\",[101]],[[119917,119917],\"mapped\",[102]],[[119918,119918],\"mapped\",[103]],[[119919,119919],\"mapped\",[104]],[[119920,119920],\"mapped\",[105]],[[119921,119921],\"mapped\",[106]],[[119922,119922],\"mapped\",[107]],[[119923,119923],\"mapped\",[108]],[[119924,119924],\"mapped\",[109]],[[119925,119925],\"mapped\",[110]],[[119926,119926],\"mapped\",[111]],[[119927,119927],\"mapped\",[112]],[[119928,119928],\"mapped\",[113]],[[119929,119929],\"mapped\",[114]],[[119930,119930],\"mapped\",[115]],[[119931,119931],\"mapped\",[116]],[[119932,119932],\"mapped\",[117]],[[119933,119933],\"mapped\",[118]],[[119934,119934],\"mapped\",[119]],[[119935,119935],\"mapped\",[120]],[[119936,119936],\"mapped\",[121]],[[119937,119937],\"mapped\",[122]],[[119938,119938],\"mapped\",[97]],[[119939,119939],\"mapped\",[98]],[[119940,119940],\"mapped\",[99]],[[119941,119941],\"mapped\",[100]],[[119942,119942],\"mapped\",[101]],[[119943,119943],\"mapped\",[102]],[[119944,119944],\"mapped\",[103]],[[119945,119945],\"mapped\",[104]],[[119946,119946],\"mapped\",[105]],[[119947,119947],\"mapped\",[106]],[[119948,119948],\"mapped\",[107]],[[119949,119949],\"mapped\",[108]],[[119950,119950],\"mapped\",[109]],[[119951,119951],\"mapped\",[110]],[[119952,119952],\"mapped\",[111]],[[119953,119953],\"mapped\",[112]],[[119954,119954],\"mapped\",[113]],[[119955,119955],\"mapped\",[114]],[[119956,119956],\"mapped\",[115]],[[119957,119957],\"mapped\",[116]],[[119958,119958],\"mapped\",[117]],[[119959,119959],\"mapped\",[118]],[[119960,119960],\"mapped\",[119]],[[119961,119961],\"mapped\",[120]],[[119962,119962],\"mapped\",[121]],[[119963,119963],\"mapped\",[122]],[[119964,119964],\"mapped\",[97]],[[119965,119965],\"disallowed\"],[[119966,119966],\"mapped\",[99]],[[119967,119967],\"mapped\",[100]],[[119968,119969],\"disallowed\"],[[119970,119970],\"mapped\",[103]],[[119971,119972],\"disallowed\"],[[119973,119973],\"mapped\",[106]],[[119974,119974],\"mapped\",[107]],[[119975,119976],\"disallowed\"],[[119977,119977],\"mapped\",[110]],[[119978,119978],\"mapped\",[111]],[[119979,119979],\"mapped\",[112]],[[119980,119980],\"mapped\",[113]],[[119981,119981],\"disallowed\"],[[119982,119982],\"mapped\",[115]],[[119983,119983],\"mapped\",[116]],[[119984,119984],\"mapped\",[117]],[[119985,119985],\"mapped\",[118]],[[119986,119986],\"mapped\",[119]],[[119987,119987],\"mapped\",[120]],[[119988,119988],\"mapped\",[121]],[[119989,119989],\"mapped\",[122]],[[119990,119990],\"mapped\",[97]],[[119991,119991],\"mapped\",[98]],[[119992,119992],\"mapped\",[99]],[[119993,119993],\"mapped\",[100]],[[119994,119994],\"disallowed\"],[[119995,119995],\"mapped\",[102]],[[119996,119996],\"disallowed\"],[[119997,119997],\"mapped\",[104]],[[119998,119998],\"mapped\",[105]],[[119999,119999],\"mapped\",[106]],[[120000,120000],\"mapped\",[107]],[[120001,120001],\"mapped\",[108]],[[120002,120002],\"mapped\",[109]],[[120003,120003],\"mapped\",[110]],[[120004,120004],\"disallowed\"],[[120005,120005],\"mapped\",[112]],[[120006,120006],\"mapped\",[113]],[[120007,120007],\"mapped\",[114]],[[120008,120008],\"mapped\",[115]],[[120009,120009],\"mapped\",[116]],[[120010,120010],\"mapped\",[117]],[[120011,120011],\"mapped\",[118]],[[120012,120012],\"mapped\",[119]],[[120013,120013],\"mapped\",[120]],[[120014,120014],\"mapped\",[121]],[[120015,120015],\"mapped\",[122]],[[120016,120016],\"mapped\",[97]],[[120017,120017],\"mapped\",[98]],[[120018,120018],\"mapped\",[99]],[[120019,120019],\"mapped\",[100]],[[120020,120020],\"mapped\",[101]],[[120021,120021],\"mapped\",[102]],[[120022,120022],\"mapped\",[103]],[[120023,120023],\"mapped\",[104]],[[120024,120024],\"mapped\",[105]],[[120025,120025],\"mapped\",[106]],[[120026,120026],\"mapped\",[107]],[[120027,120027],\"mapped\",[108]],[[120028,120028],\"mapped\",[109]],[[120029,120029],\"mapped\",[110]],[[120030,120030],\"mapped\",[111]],[[120031,120031],\"mapped\",[112]],[[120032,120032],\"mapped\",[113]],[[120033,120033],\"mapped\",[114]],[[120034,120034],\"mapped\",[115]],[[120035,120035],\"mapped\",[116]],[[120036,120036],\"mapped\",[117]],[[120037,120037],\"mapped\",[118]],[[120038,120038],\"mapped\",[119]],[[120039,120039],\"mapped\",[120]],[[120040,120040],\"mapped\",[121]],[[120041,120041],\"mapped\",[122]],[[120042,120042],\"mapped\",[97]],[[120043,120043],\"mapped\",[98]],[[120044,120044],\"mapped\",[99]],[[120045,120045],\"mapped\",[100]],[[120046,120046],\"mapped\",[101]],[[120047,120047],\"mapped\",[102]],[[120048,120048],\"mapped\",[103]],[[120049,120049],\"mapped\",[104]],[[120050,120050],\"mapped\",[105]],[[120051,120051],\"mapped\",[106]],[[120052,120052],\"mapped\",[107]],[[120053,120053],\"mapped\",[108]],[[120054,120054],\"mapped\",[109]],[[120055,120055],\"mapped\",[110]],[[120056,120056],\"mapped\",[111]],[[120057,120057],\"mapped\",[112]],[[120058,120058],\"mapped\",[113]],[[120059,120059],\"mapped\",[114]],[[120060,120060],\"mapped\",[115]],[[120061,120061],\"mapped\",[116]],[[120062,120062],\"mapped\",[117]],[[120063,120063],\"mapped\",[118]],[[120064,120064],\"mapped\",[119]],[[120065,120065],\"mapped\",[120]],[[120066,120066],\"mapped\",[121]],[[120067,120067],\"mapped\",[122]],[[120068,120068],\"mapped\",[97]],[[120069,120069],\"mapped\",[98]],[[120070,120070],\"disallowed\"],[[120071,120071],\"mapped\",[100]],[[120072,120072],\"mapped\",[101]],[[120073,120073],\"mapped\",[102]],[[120074,120074],\"mapped\",[103]],[[120075,120076],\"disallowed\"],[[120077,120077],\"mapped\",[106]],[[120078,120078],\"mapped\",[107]],[[120079,120079],\"mapped\",[108]],[[120080,120080],\"mapped\",[109]],[[120081,120081],\"mapped\",[110]],[[120082,120082],\"mapped\",[111]],[[120083,120083],\"mapped\",[112]],[[120084,120084],\"mapped\",[113]],[[120085,120085],\"disallowed\"],[[120086,120086],\"mapped\",[115]],[[120087,120087],\"mapped\",[116]],[[120088,120088],\"mapped\",[117]],[[120089,120089],\"mapped\",[118]],[[120090,120090],\"mapped\",[119]],[[120091,120091],\"mapped\",[120]],[[120092,120092],\"mapped\",[121]],[[120093,120093],\"disallowed\"],[[120094,120094],\"mapped\",[97]],[[120095,120095],\"mapped\",[98]],[[120096,120096],\"mapped\",[99]],[[120097,120097],\"mapped\",[100]],[[120098,120098],\"mapped\",[101]],[[120099,120099],\"mapped\",[102]],[[120100,120100],\"mapped\",[103]],[[120101,120101],\"mapped\",[104]],[[120102,120102],\"mapped\",[105]],[[120103,120103],\"mapped\",[106]],[[120104,120104],\"mapped\",[107]],[[120105,120105],\"mapped\",[108]],[[120106,120106],\"mapped\",[109]],[[120107,120107],\"mapped\",[110]],[[120108,120108],\"mapped\",[111]],[[120109,120109],\"mapped\",[112]],[[120110,120110],\"mapped\",[113]],[[120111,120111],\"mapped\",[114]],[[120112,120112],\"mapped\",[115]],[[120113,120113],\"mapped\",[116]],[[120114,120114],\"mapped\",[117]],[[120115,120115],\"mapped\",[118]],[[120116,120116],\"mapped\",[119]],[[120117,120117],\"mapped\",[120]],[[120118,120118],\"mapped\",[121]],[[120119,120119],\"mapped\",[122]],[[120120,120120],\"mapped\",[97]],[[120121,120121],\"mapped\",[98]],[[120122,120122],\"disallowed\"],[[120123,120123],\"mapped\",[100]],[[120124,120124],\"mapped\",[101]],[[120125,120125],\"mapped\",[102]],[[120126,120126],\"mapped\",[103]],[[120127,120127],\"disallowed\"],[[120128,120128],\"mapped\",[105]],[[120129,120129],\"mapped\",[106]],[[120130,120130],\"mapped\",[107]],[[120131,120131],\"mapped\",[108]],[[120132,120132],\"mapped\",[109]],[[120133,120133],\"disallowed\"],[[120134,120134],\"mapped\",[111]],[[120135,120137],\"disallowed\"],[[120138,120138],\"mapped\",[115]],[[120139,120139],\"mapped\",[116]],[[120140,120140],\"mapped\",[117]],[[120141,120141],\"mapped\",[118]],[[120142,120142],\"mapped\",[119]],[[120143,120143],\"mapped\",[120]],[[120144,120144],\"mapped\",[121]],[[120145,120145],\"disallowed\"],[[120146,120146],\"mapped\",[97]],[[120147,120147],\"mapped\",[98]],[[120148,120148],\"mapped\",[99]],[[120149,120149],\"mapped\",[100]],[[120150,120150],\"mapped\",[101]],[[120151,120151],\"mapped\",[102]],[[120152,120152],\"mapped\",[103]],[[120153,120153],\"mapped\",[104]],[[120154,120154],\"mapped\",[105]],[[120155,120155],\"mapped\",[106]],[[120156,120156],\"mapped\",[107]],[[120157,120157],\"mapped\",[108]],[[120158,120158],\"mapped\",[109]],[[120159,120159],\"mapped\",[110]],[[120160,120160],\"mapped\",[111]],[[120161,120161],\"mapped\",[112]],[[120162,120162],\"mapped\",[113]],[[120163,120163],\"mapped\",[114]],[[120164,120164],\"mapped\",[115]],[[120165,120165],\"mapped\",[116]],[[120166,120166],\"mapped\",[117]],[[120167,120167],\"mapped\",[118]],[[120168,120168],\"mapped\",[119]],[[120169,120169],\"mapped\",[120]],[[120170,120170],\"mapped\",[121]],[[120171,120171],\"mapped\",[122]],[[120172,120172],\"mapped\",[97]],[[120173,120173],\"mapped\",[98]],[[120174,120174],\"mapped\",[99]],[[120175,120175],\"mapped\",[100]],[[120176,120176],\"mapped\",[101]],[[120177,120177],\"mapped\",[102]],[[120178,120178],\"mapped\",[103]],[[120179,120179],\"mapped\",[104]],[[120180,120180],\"mapped\",[105]],[[120181,120181],\"mapped\",[106]],[[120182,120182],\"mapped\",[107]],[[120183,120183],\"mapped\",[108]],[[120184,120184],\"mapped\",[109]],[[120185,120185],\"mapped\",[110]],[[120186,120186],\"mapped\",[111]],[[120187,120187],\"mapped\",[112]],[[120188,120188],\"mapped\",[113]],[[120189,120189],\"mapped\",[114]],[[120190,120190],\"mapped\",[115]],[[120191,120191],\"mapped\",[116]],[[120192,120192],\"mapped\",[117]],[[120193,120193],\"mapped\",[118]],[[120194,120194],\"mapped\",[119]],[[120195,120195],\"mapped\",[120]],[[120196,120196],\"mapped\",[121]],[[120197,120197],\"mapped\",[122]],[[120198,120198],\"mapped\",[97]],[[120199,120199],\"mapped\",[98]],[[120200,120200],\"mapped\",[99]],[[120201,120201],\"mapped\",[100]],[[120202,120202],\"mapped\",[101]],[[120203,120203],\"mapped\",[102]],[[120204,120204],\"mapped\",[103]],[[120205,120205],\"mapped\",[104]],[[120206,120206],\"mapped\",[105]],[[120207,120207],\"mapped\",[106]],[[120208,120208],\"mapped\",[107]],[[120209,120209],\"mapped\",[108]],[[120210,120210],\"mapped\",[109]],[[120211,120211],\"mapped\",[110]],[[120212,120212],\"mapped\",[111]],[[120213,120213],\"mapped\",[112]],[[120214,120214],\"mapped\",[113]],[[120215,120215],\"mapped\",[114]],[[120216,120216],\"mapped\",[115]],[[120217,120217],\"mapped\",[116]],[[120218,120218],\"mapped\",[117]],[[120219,120219],\"mapped\",[118]],[[120220,120220],\"mapped\",[119]],[[120221,120221],\"mapped\",[120]],[[120222,120222],\"mapped\",[121]],[[120223,120223],\"mapped\",[122]],[[120224,120224],\"mapped\",[97]],[[120225,120225],\"mapped\",[98]],[[120226,120226],\"mapped\",[99]],[[120227,120227],\"mapped\",[100]],[[120228,120228],\"mapped\",[101]],[[120229,120229],\"mapped\",[102]],[[120230,120230],\"mapped\",[103]],[[120231,120231],\"mapped\",[104]],[[120232,120232],\"mapped\",[105]],[[120233,120233],\"mapped\",[106]],[[120234,120234],\"mapped\",[107]],[[120235,120235],\"mapped\",[108]],[[120236,120236],\"mapped\",[109]],[[120237,120237],\"mapped\",[110]],[[120238,120238],\"mapped\",[111]],[[120239,120239],\"mapped\",[112]],[[120240,120240],\"mapped\",[113]],[[120241,120241],\"mapped\",[114]],[[120242,120242],\"mapped\",[115]],[[120243,120243],\"mapped\",[116]],[[120244,120244],\"mapped\",[117]],[[120245,120245],\"mapped\",[118]],[[120246,120246],\"mapped\",[119]],[[120247,120247],\"mapped\",[120]],[[120248,120248],\"mapped\",[121]],[[120249,120249],\"mapped\",[122]],[[120250,120250],\"mapped\",[97]],[[120251,120251],\"mapped\",[98]],[[120252,120252],\"mapped\",[99]],[[120253,120253],\"mapped\",[100]],[[120254,120254],\"mapped\",[101]],[[120255,120255],\"mapped\",[102]],[[120256,120256],\"mapped\",[103]],[[120257,120257],\"mapped\",[104]],[[120258,120258],\"mapped\",[105]],[[120259,120259],\"mapped\",[106]],[[120260,120260],\"mapped\",[107]],[[120261,120261],\"mapped\",[108]],[[120262,120262],\"mapped\",[109]],[[120263,120263],\"mapped\",[110]],[[120264,120264],\"mapped\",[111]],[[120265,120265],\"mapped\",[112]],[[120266,120266],\"mapped\",[113]],[[120267,120267],\"mapped\",[114]],[[120268,120268],\"mapped\",[115]],[[120269,120269],\"mapped\",[116]],[[120270,120270],\"mapped\",[117]],[[120271,120271],\"mapped\",[118]],[[120272,120272],\"mapped\",[119]],[[120273,120273],\"mapped\",[120]],[[120274,120274],\"mapped\",[121]],[[120275,120275],\"mapped\",[122]],[[120276,120276],\"mapped\",[97]],[[120277,120277],\"mapped\",[98]],[[120278,120278],\"mapped\",[99]],[[120279,120279],\"mapped\",[100]],[[120280,120280],\"mapped\",[101]],[[120281,120281],\"mapped\",[102]],[[120282,120282],\"mapped\",[103]],[[120283,120283],\"mapped\",[104]],[[120284,120284],\"mapped\",[105]],[[120285,120285],\"mapped\",[106]],[[120286,120286],\"mapped\",[107]],[[120287,120287],\"mapped\",[108]],[[120288,120288],\"mapped\",[109]],[[120289,120289],\"mapped\",[110]],[[120290,120290],\"mapped\",[111]],[[120291,120291],\"mapped\",[112]],[[120292,120292],\"mapped\",[113]],[[120293,120293],\"mapped\",[114]],[[120294,120294],\"mapped\",[115]],[[120295,120295],\"mapped\",[116]],[[120296,120296],\"mapped\",[117]],[[120297,120297],\"mapped\",[118]],[[120298,120298],\"mapped\",[119]],[[120299,120299],\"mapped\",[120]],[[120300,120300],\"mapped\",[121]],[[120301,120301],\"mapped\",[122]],[[120302,120302],\"mapped\",[97]],[[120303,120303],\"mapped\",[98]],[[120304,120304],\"mapped\",[99]],[[120305,120305],\"mapped\",[100]],[[120306,120306],\"mapped\",[101]],[[120307,120307],\"mapped\",[102]],[[120308,120308],\"mapped\",[103]],[[120309,120309],\"mapped\",[104]],[[120310,120310],\"mapped\",[105]],[[120311,120311],\"mapped\",[106]],[[120312,120312],\"mapped\",[107]],[[120313,120313],\"mapped\",[108]],[[120314,120314],\"mapped\",[109]],[[120315,120315],\"mapped\",[110]],[[120316,120316],\"mapped\",[111]],[[120317,120317],\"mapped\",[112]],[[120318,120318],\"mapped\",[113]],[[120319,120319],\"mapped\",[114]],[[120320,120320],\"mapped\",[115]],[[120321,120321],\"mapped\",[116]],[[120322,120322],\"mapped\",[117]],[[120323,120323],\"mapped\",[118]],[[120324,120324],\"mapped\",[119]],[[120325,120325],\"mapped\",[120]],[[120326,120326],\"mapped\",[121]],[[120327,120327],\"mapped\",[122]],[[120328,120328],\"mapped\",[97]],[[120329,120329],\"mapped\",[98]],[[120330,120330],\"mapped\",[99]],[[120331,120331],\"mapped\",[100]],[[120332,120332],\"mapped\",[101]],[[120333,120333],\"mapped\",[102]],[[120334,120334],\"mapped\",[103]],[[120335,120335],\"mapped\",[104]],[[120336,120336],\"mapped\",[105]],[[120337,120337],\"mapped\",[106]],[[120338,120338],\"mapped\",[107]],[[120339,120339],\"mapped\",[108]],[[120340,120340],\"mapped\",[109]],[[120341,120341],\"mapped\",[110]],[[120342,120342],\"mapped\",[111]],[[120343,120343],\"mapped\",[112]],[[120344,120344],\"mapped\",[113]],[[120345,120345],\"mapped\",[114]],[[120346,120346],\"mapped\",[115]],[[120347,120347],\"mapped\",[116]],[[120348,120348],\"mapped\",[117]],[[120349,120349],\"mapped\",[118]],[[120350,120350],\"mapped\",[119]],[[120351,120351],\"mapped\",[120]],[[120352,120352],\"mapped\",[121]],[[120353,120353],\"mapped\",[122]],[[120354,120354],\"mapped\",[97]],[[120355,120355],\"mapped\",[98]],[[120356,120356],\"mapped\",[99]],[[120357,120357],\"mapped\",[100]],[[120358,120358],\"mapped\",[101]],[[120359,120359],\"mapped\",[102]],[[120360,120360],\"mapped\",[103]],[[120361,120361],\"mapped\",[104]],[[120362,120362],\"mapped\",[105]],[[120363,120363],\"mapped\",[106]],[[120364,120364],\"mapped\",[107]],[[120365,120365],\"mapped\",[108]],[[120366,120366],\"mapped\",[109]],[[120367,120367],\"mapped\",[110]],[[120368,120368],\"mapped\",[111]],[[120369,120369],\"mapped\",[112]],[[120370,120370],\"mapped\",[113]],[[120371,120371],\"mapped\",[114]],[[120372,120372],\"mapped\",[115]],[[120373,120373],\"mapped\",[116]],[[120374,120374],\"mapped\",[117]],[[120375,120375],\"mapped\",[118]],[[120376,120376],\"mapped\",[119]],[[120377,120377],\"mapped\",[120]],[[120378,120378],\"mapped\",[121]],[[120379,120379],\"mapped\",[122]],[[120380,120380],\"mapped\",[97]],[[120381,120381],\"mapped\",[98]],[[120382,120382],\"mapped\",[99]],[[120383,120383],\"mapped\",[100]],[[120384,120384],\"mapped\",[101]],[[120385,120385],\"mapped\",[102]],[[120386,120386],\"mapped\",[103]],[[120387,120387],\"mapped\",[104]],[[120388,120388],\"mapped\",[105]],[[120389,120389],\"mapped\",[106]],[[120390,120390],\"mapped\",[107]],[[120391,120391],\"mapped\",[108]],[[120392,120392],\"mapped\",[109]],[[120393,120393],\"mapped\",[110]],[[120394,120394],\"mapped\",[111]],[[120395,120395],\"mapped\",[112]],[[120396,120396],\"mapped\",[113]],[[120397,120397],\"mapped\",[114]],[[120398,120398],\"mapped\",[115]],[[120399,120399],\"mapped\",[116]],[[120400,120400],\"mapped\",[117]],[[120401,120401],\"mapped\",[118]],[[120402,120402],\"mapped\",[119]],[[120403,120403],\"mapped\",[120]],[[120404,120404],\"mapped\",[121]],[[120405,120405],\"mapped\",[122]],[[120406,120406],\"mapped\",[97]],[[120407,120407],\"mapped\",[98]],[[120408,120408],\"mapped\",[99]],[[120409,120409],\"mapped\",[100]],[[120410,120410],\"mapped\",[101]],[[120411,120411],\"mapped\",[102]],[[120412,120412],\"mapped\",[103]],[[120413,120413],\"mapped\",[104]],[[120414,120414],\"mapped\",[105]],[[120415,120415],\"mapped\",[106]],[[120416,120416],\"mapped\",[107]],[[120417,120417],\"mapped\",[108]],[[120418,120418],\"mapped\",[109]],[[120419,120419],\"mapped\",[110]],[[120420,120420],\"mapped\",[111]],[[120421,120421],\"mapped\",[112]],[[120422,120422],\"mapped\",[113]],[[120423,120423],\"mapped\",[114]],[[120424,120424],\"mapped\",[115]],[[120425,120425],\"mapped\",[116]],[[120426,120426],\"mapped\",[117]],[[120427,120427],\"mapped\",[118]],[[120428,120428],\"mapped\",[119]],[[120429,120429],\"mapped\",[120]],[[120430,120430],\"mapped\",[121]],[[120431,120431],\"mapped\",[122]],[[120432,120432],\"mapped\",[97]],[[120433,120433],\"mapped\",[98]],[[120434,120434],\"mapped\",[99]],[[120435,120435],\"mapped\",[100]],[[120436,120436],\"mapped\",[101]],[[120437,120437],\"mapped\",[102]],[[120438,120438],\"mapped\",[103]],[[120439,120439],\"mapped\",[104]],[[120440,120440],\"mapped\",[105]],[[120441,120441],\"mapped\",[106]],[[120442,120442],\"mapped\",[107]],[[120443,120443],\"mapped\",[108]],[[120444,120444],\"mapped\",[109]],[[120445,120445],\"mapped\",[110]],[[120446,120446],\"mapped\",[111]],[[120447,120447],\"mapped\",[112]],[[120448,120448],\"mapped\",[113]],[[120449,120449],\"mapped\",[114]],[[120450,120450],\"mapped\",[115]],[[120451,120451],\"mapped\",[116]],[[120452,120452],\"mapped\",[117]],[[120453,120453],\"mapped\",[118]],[[120454,120454],\"mapped\",[119]],[[120455,120455],\"mapped\",[120]],[[120456,120456],\"mapped\",[121]],[[120457,120457],\"mapped\",[122]],[[120458,120458],\"mapped\",[97]],[[120459,120459],\"mapped\",[98]],[[120460,120460],\"mapped\",[99]],[[120461,120461],\"mapped\",[100]],[[120462,120462],\"mapped\",[101]],[[120463,120463],\"mapped\",[102]],[[120464,120464],\"mapped\",[103]],[[120465,120465],\"mapped\",[104]],[[120466,120466],\"mapped\",[105]],[[120467,120467],\"mapped\",[106]],[[120468,120468],\"mapped\",[107]],[[120469,120469],\"mapped\",[108]],[[120470,120470],\"mapped\",[109]],[[120471,120471],\"mapped\",[110]],[[120472,120472],\"mapped\",[111]],[[120473,120473],\"mapped\",[112]],[[120474,120474],\"mapped\",[113]],[[120475,120475],\"mapped\",[114]],[[120476,120476],\"mapped\",[115]],[[120477,120477],\"mapped\",[116]],[[120478,120478],\"mapped\",[117]],[[120479,120479],\"mapped\",[118]],[[120480,120480],\"mapped\",[119]],[[120481,120481],\"mapped\",[120]],[[120482,120482],\"mapped\",[121]],[[120483,120483],\"mapped\",[122]],[[120484,120484],\"mapped\",[305]],[[120485,120485],\"mapped\",[567]],[[120486,120487],\"disallowed\"],[[120488,120488],\"mapped\",[945]],[[120489,120489],\"mapped\",[946]],[[120490,120490],\"mapped\",[947]],[[120491,120491],\"mapped\",[948]],[[120492,120492],\"mapped\",[949]],[[120493,120493],\"mapped\",[950]],[[120494,120494],\"mapped\",[951]],[[120495,120495],\"mapped\",[952]],[[120496,120496],\"mapped\",[953]],[[120497,120497],\"mapped\",[954]],[[120498,120498],\"mapped\",[955]],[[120499,120499],\"mapped\",[956]],[[120500,120500],\"mapped\",[957]],[[120501,120501],\"mapped\",[958]],[[120502,120502],\"mapped\",[959]],[[120503,120503],\"mapped\",[960]],[[120504,120504],\"mapped\",[961]],[[120505,120505],\"mapped\",[952]],[[120506,120506],\"mapped\",[963]],[[120507,120507],\"mapped\",[964]],[[120508,120508],\"mapped\",[965]],[[120509,120509],\"mapped\",[966]],[[120510,120510],\"mapped\",[967]],[[120511,120511],\"mapped\",[968]],[[120512,120512],\"mapped\",[969]],[[120513,120513],\"mapped\",[8711]],[[120514,120514],\"mapped\",[945]],[[120515,120515],\"mapped\",[946]],[[120516,120516],\"mapped\",[947]],[[120517,120517],\"mapped\",[948]],[[120518,120518],\"mapped\",[949]],[[120519,120519],\"mapped\",[950]],[[120520,120520],\"mapped\",[951]],[[120521,120521],\"mapped\",[952]],[[120522,120522],\"mapped\",[953]],[[120523,120523],\"mapped\",[954]],[[120524,120524],\"mapped\",[955]],[[120525,120525],\"mapped\",[956]],[[120526,120526],\"mapped\",[957]],[[120527,120527],\"mapped\",[958]],[[120528,120528],\"mapped\",[959]],[[120529,120529],\"mapped\",[960]],[[120530,120530],\"mapped\",[961]],[[120531,120532],\"mapped\",[963]],[[120533,120533],\"mapped\",[964]],[[120534,120534],\"mapped\",[965]],[[120535,120535],\"mapped\",[966]],[[120536,120536],\"mapped\",[967]],[[120537,120537],\"mapped\",[968]],[[120538,120538],\"mapped\",[969]],[[120539,120539],\"mapped\",[8706]],[[120540,120540],\"mapped\",[949]],[[120541,120541],\"mapped\",[952]],[[120542,120542],\"mapped\",[954]],[[120543,120543],\"mapped\",[966]],[[120544,120544],\"mapped\",[961]],[[120545,120545],\"mapped\",[960]],[[120546,120546],\"mapped\",[945]],[[120547,120547],\"mapped\",[946]],[[120548,120548],\"mapped\",[947]],[[120549,120549],\"mapped\",[948]],[[120550,120550],\"mapped\",[949]],[[120551,120551],\"mapped\",[950]],[[120552,120552],\"mapped\",[951]],[[120553,120553],\"mapped\",[952]],[[120554,120554],\"mapped\",[953]],[[120555,120555],\"mapped\",[954]],[[120556,120556],\"mapped\",[955]],[[120557,120557],\"mapped\",[956]],[[120558,120558],\"mapped\",[957]],[[120559,120559],\"mapped\",[958]],[[120560,120560],\"mapped\",[959]],[[120561,120561],\"mapped\",[960]],[[120562,120562],\"mapped\",[961]],[[120563,120563],\"mapped\",[952]],[[120564,120564],\"mapped\",[963]],[[120565,120565],\"mapped\",[964]],[[120566,120566],\"mapped\",[965]],[[120567,120567],\"mapped\",[966]],[[120568,120568],\"mapped\",[967]],[[120569,120569],\"mapped\",[968]],[[120570,120570],\"mapped\",[969]],[[120571,120571],\"mapped\",[8711]],[[120572,120572],\"mapped\",[945]],[[120573,120573],\"mapped\",[946]],[[120574,120574],\"mapped\",[947]],[[120575,120575],\"mapped\",[948]],[[120576,120576],\"mapped\",[949]],[[120577,120577],\"mapped\",[950]],[[120578,120578],\"mapped\",[951]],[[120579,120579],\"mapped\",[952]],[[120580,120580],\"mapped\",[953]],[[120581,120581],\"mapped\",[954]],[[120582,120582],\"mapped\",[955]],[[120583,120583],\"mapped\",[956]],[[120584,120584],\"mapped\",[957]],[[120585,120585],\"mapped\",[958]],[[120586,120586],\"mapped\",[959]],[[120587,120587],\"mapped\",[960]],[[120588,120588],\"mapped\",[961]],[[120589,120590],\"mapped\",[963]],[[120591,120591],\"mapped\",[964]],[[120592,120592],\"mapped\",[965]],[[120593,120593],\"mapped\",[966]],[[120594,120594],\"mapped\",[967]],[[120595,120595],\"mapped\",[968]],[[120596,120596],\"mapped\",[969]],[[120597,120597],\"mapped\",[8706]],[[120598,120598],\"mapped\",[949]],[[120599,120599],\"mapped\",[952]],[[120600,120600],\"mapped\",[954]],[[120601,120601],\"mapped\",[966]],[[120602,120602],\"mapped\",[961]],[[120603,120603],\"mapped\",[960]],[[120604,120604],\"mapped\",[945]],[[120605,120605],\"mapped\",[946]],[[120606,120606],\"mapped\",[947]],[[120607,120607],\"mapped\",[948]],[[120608,120608],\"mapped\",[949]],[[120609,120609],\"mapped\",[950]],[[120610,120610],\"mapped\",[951]],[[120611,120611],\"mapped\",[952]],[[120612,120612],\"mapped\",[953]],[[120613,120613],\"mapped\",[954]],[[120614,120614],\"mapped\",[955]],[[120615,120615],\"mapped\",[956]],[[120616,120616],\"mapped\",[957]],[[120617,120617],\"mapped\",[958]],[[120618,120618],\"mapped\",[959]],[[120619,120619],\"mapped\",[960]],[[120620,120620],\"mapped\",[961]],[[120621,120621],\"mapped\",[952]],[[120622,120622],\"mapped\",[963]],[[120623,120623],\"mapped\",[964]],[[120624,120624],\"mapped\",[965]],[[120625,120625],\"mapped\",[966]],[[120626,120626],\"mapped\",[967]],[[120627,120627],\"mapped\",[968]],[[120628,120628],\"mapped\",[969]],[[120629,120629],\"mapped\",[8711]],[[120630,120630],\"mapped\",[945]],[[120631,120631],\"mapped\",[946]],[[120632,120632],\"mapped\",[947]],[[120633,120633],\"mapped\",[948]],[[120634,120634],\"mapped\",[949]],[[120635,120635],\"mapped\",[950]],[[120636,120636],\"mapped\",[951]],[[120637,120637],\"mapped\",[952]],[[120638,120638],\"mapped\",[953]],[[120639,120639],\"mapped\",[954]],[[120640,120640],\"mapped\",[955]],[[120641,120641],\"mapped\",[956]],[[120642,120642],\"mapped\",[957]],[[120643,120643],\"mapped\",[958]],[[120644,120644],\"mapped\",[959]],[[120645,120645],\"mapped\",[960]],[[120646,120646],\"mapped\",[961]],[[120647,120648],\"mapped\",[963]],[[120649,120649],\"mapped\",[964]],[[120650,120650],\"mapped\",[965]],[[120651,120651],\"mapped\",[966]],[[120652,120652],\"mapped\",[967]],[[120653,120653],\"mapped\",[968]],[[120654,120654],\"mapped\",[969]],[[120655,120655],\"mapped\",[8706]],[[120656,120656],\"mapped\",[949]],[[120657,120657],\"mapped\",[952]],[[120658,120658],\"mapped\",[954]],[[120659,120659],\"mapped\",[966]],[[120660,120660],\"mapped\",[961]],[[120661,120661],\"mapped\",[960]],[[120662,120662],\"mapped\",[945]],[[120663,120663],\"mapped\",[946]],[[120664,120664],\"mapped\",[947]],[[120665,120665],\"mapped\",[948]],[[120666,120666],\"mapped\",[949]],[[120667,120667],\"mapped\",[950]],[[120668,120668],\"mapped\",[951]],[[120669,120669],\"mapped\",[952]],[[120670,120670],\"mapped\",[953]],[[120671,120671],\"mapped\",[954]],[[120672,120672],\"mapped\",[955]],[[120673,120673],\"mapped\",[956]],[[120674,120674],\"mapped\",[957]],[[120675,120675],\"mapped\",[958]],[[120676,120676],\"mapped\",[959]],[[120677,120677],\"mapped\",[960]],[[120678,120678],\"mapped\",[961]],[[120679,120679],\"mapped\",[952]],[[120680,120680],\"mapped\",[963]],[[120681,120681],\"mapped\",[964]],[[120682,120682],\"mapped\",[965]],[[120683,120683],\"mapped\",[966]],[[120684,120684],\"mapped\",[967]],[[120685,120685],\"mapped\",[968]],[[120686,120686],\"mapped\",[969]],[[120687,120687],\"mapped\",[8711]],[[120688,120688],\"mapped\",[945]],[[120689,120689],\"mapped\",[946]],[[120690,120690],\"mapped\",[947]],[[120691,120691],\"mapped\",[948]],[[120692,120692],\"mapped\",[949]],[[120693,120693],\"mapped\",[950]],[[120694,120694],\"mapped\",[951]],[[120695,120695],\"mapped\",[952]],[[120696,120696],\"mapped\",[953]],[[120697,120697],\"mapped\",[954]],[[120698,120698],\"mapped\",[955]],[[120699,120699],\"mapped\",[956]],[[120700,120700],\"mapped\",[957]],[[120701,120701],\"mapped\",[958]],[[120702,120702],\"mapped\",[959]],[[120703,120703],\"mapped\",[960]],[[120704,120704],\"mapped\",[961]],[[120705,120706],\"mapped\",[963]],[[120707,120707],\"mapped\",[964]],[[120708,120708],\"mapped\",[965]],[[120709,120709],\"mapped\",[966]],[[120710,120710],\"mapped\",[967]],[[120711,120711],\"mapped\",[968]],[[120712,120712],\"mapped\",[969]],[[120713,120713],\"mapped\",[8706]],[[120714,120714],\"mapped\",[949]],[[120715,120715],\"mapped\",[952]],[[120716,120716],\"mapped\",[954]],[[120717,120717],\"mapped\",[966]],[[120718,120718],\"mapped\",[961]],[[120719,120719],\"mapped\",[960]],[[120720,120720],\"mapped\",[945]],[[120721,120721],\"mapped\",[946]],[[120722,120722],\"mapped\",[947]],[[120723,120723],\"mapped\",[948]],[[120724,120724],\"mapped\",[949]],[[120725,120725],\"mapped\",[950]],[[120726,120726],\"mapped\",[951]],[[120727,120727],\"mapped\",[952]],[[120728,120728],\"mapped\",[953]],[[120729,120729],\"mapped\",[954]],[[120730,120730],\"mapped\",[955]],[[120731,120731],\"mapped\",[956]],[[120732,120732],\"mapped\",[957]],[[120733,120733],\"mapped\",[958]],[[120734,120734],\"mapped\",[959]],[[120735,120735],\"mapped\",[960]],[[120736,120736],\"mapped\",[961]],[[120737,120737],\"mapped\",[952]],[[120738,120738],\"mapped\",[963]],[[120739,120739],\"mapped\",[964]],[[120740,120740],\"mapped\",[965]],[[120741,120741],\"mapped\",[966]],[[120742,120742],\"mapped\",[967]],[[120743,120743],\"mapped\",[968]],[[120744,120744],\"mapped\",[969]],[[120745,120745],\"mapped\",[8711]],[[120746,120746],\"mapped\",[945]],[[120747,120747],\"mapped\",[946]],[[120748,120748],\"mapped\",[947]],[[120749,120749],\"mapped\",[948]],[[120750,120750],\"mapped\",[949]],[[120751,120751],\"mapped\",[950]],[[120752,120752],\"mapped\",[951]],[[120753,120753],\"mapped\",[952]],[[120754,120754],\"mapped\",[953]],[[120755,120755],\"mapped\",[954]],[[120756,120756],\"mapped\",[955]],[[120757,120757],\"mapped\",[956]],[[120758,120758],\"mapped\",[957]],[[120759,120759],\"mapped\",[958]],[[120760,120760],\"mapped\",[959]],[[120761,120761],\"mapped\",[960]],[[120762,120762],\"mapped\",[961]],[[120763,120764],\"mapped\",[963]],[[120765,120765],\"mapped\",[964]],[[120766,120766],\"mapped\",[965]],[[120767,120767],\"mapped\",[966]],[[120768,120768],\"mapped\",[967]],[[120769,120769],\"mapped\",[968]],[[120770,120770],\"mapped\",[969]],[[120771,120771],\"mapped\",[8706]],[[120772,120772],\"mapped\",[949]],[[120773,120773],\"mapped\",[952]],[[120774,120774],\"mapped\",[954]],[[120775,120775],\"mapped\",[966]],[[120776,120776],\"mapped\",[961]],[[120777,120777],\"mapped\",[960]],[[120778,120779],\"mapped\",[989]],[[120780,120781],\"disallowed\"],[[120782,120782],\"mapped\",[48]],[[120783,120783],\"mapped\",[49]],[[120784,120784],\"mapped\",[50]],[[120785,120785],\"mapped\",[51]],[[120786,120786],\"mapped\",[52]],[[120787,120787],\"mapped\",[53]],[[120788,120788],\"mapped\",[54]],[[120789,120789],\"mapped\",[55]],[[120790,120790],\"mapped\",[56]],[[120791,120791],\"mapped\",[57]],[[120792,120792],\"mapped\",[48]],[[120793,120793],\"mapped\",[49]],[[120794,120794],\"mapped\",[50]],[[120795,120795],\"mapped\",[51]],[[120796,120796],\"mapped\",[52]],[[120797,120797],\"mapped\",[53]],[[120798,120798],\"mapped\",[54]],[[120799,120799],\"mapped\",[55]],[[120800,120800],\"mapped\",[56]],[[120801,120801],\"mapped\",[57]],[[120802,120802],\"mapped\",[48]],[[120803,120803],\"mapped\",[49]],[[120804,120804],\"mapped\",[50]],[[120805,120805],\"mapped\",[51]],[[120806,120806],\"mapped\",[52]],[[120807,120807],\"mapped\",[53]],[[120808,120808],\"mapped\",[54]],[[120809,120809],\"mapped\",[55]],[[120810,120810],\"mapped\",[56]],[[120811,120811],\"mapped\",[57]],[[120812,120812],\"mapped\",[48]],[[120813,120813],\"mapped\",[49]],[[120814,120814],\"mapped\",[50]],[[120815,120815],\"mapped\",[51]],[[120816,120816],\"mapped\",[52]],[[120817,120817],\"mapped\",[53]],[[120818,120818],\"mapped\",[54]],[[120819,120819],\"mapped\",[55]],[[120820,120820],\"mapped\",[56]],[[120821,120821],\"mapped\",[57]],[[120822,120822],\"mapped\",[48]],[[120823,120823],\"mapped\",[49]],[[120824,120824],\"mapped\",[50]],[[120825,120825],\"mapped\",[51]],[[120826,120826],\"mapped\",[52]],[[120827,120827],\"mapped\",[53]],[[120828,120828],\"mapped\",[54]],[[120829,120829],\"mapped\",[55]],[[120830,120830],\"mapped\",[56]],[[120831,120831],\"mapped\",[57]],[[120832,121343],\"valid\",[],\"NV8\"],[[121344,121398],\"valid\"],[[121399,121402],\"valid\",[],\"NV8\"],[[121403,121452],\"valid\"],[[121453,121460],\"valid\",[],\"NV8\"],[[121461,121461],\"valid\"],[[121462,121475],\"valid\",[],\"NV8\"],[[121476,121476],\"valid\"],[[121477,121483],\"valid\",[],\"NV8\"],[[121484,121498],\"disallowed\"],[[121499,121503],\"valid\"],[[121504,121504],\"disallowed\"],[[121505,121519],\"valid\"],[[121520,124927],\"disallowed\"],[[124928,125124],\"valid\"],[[125125,125126],\"disallowed\"],[[125127,125135],\"valid\",[],\"NV8\"],[[125136,125142],\"valid\"],[[125143,126463],\"disallowed\"],[[126464,126464],\"mapped\",[1575]],[[126465,126465],\"mapped\",[1576]],[[126466,126466],\"mapped\",[1580]],[[126467,126467],\"mapped\",[1583]],[[126468,126468],\"disallowed\"],[[126469,126469],\"mapped\",[1608]],[[126470,126470],\"mapped\",[1586]],[[126471,126471],\"mapped\",[1581]],[[126472,126472],\"mapped\",[1591]],[[126473,126473],\"mapped\",[1610]],[[126474,126474],\"mapped\",[1603]],[[126475,126475],\"mapped\",[1604]],[[126476,126476],\"mapped\",[1605]],[[126477,126477],\"mapped\",[1606]],[[126478,126478],\"mapped\",[1587]],[[126479,126479],\"mapped\",[1593]],[[126480,126480],\"mapped\",[1601]],[[126481,126481],\"mapped\",[1589]],[[126482,126482],\"mapped\",[1602]],[[126483,126483],\"mapped\",[1585]],[[126484,126484],\"mapped\",[1588]],[[126485,126485],\"mapped\",[1578]],[[126486,126486],\"mapped\",[1579]],[[126487,126487],\"mapped\",[1582]],[[126488,126488],\"mapped\",[1584]],[[126489,126489],\"mapped\",[1590]],[[126490,126490],\"mapped\",[1592]],[[126491,126491],\"mapped\",[1594]],[[126492,126492],\"mapped\",[1646]],[[126493,126493],\"mapped\",[1722]],[[126494,126494],\"mapped\",[1697]],[[126495,126495],\"mapped\",[1647]],[[126496,126496],\"disallowed\"],[[126497,126497],\"mapped\",[1576]],[[126498,126498],\"mapped\",[1580]],[[126499,126499],\"disallowed\"],[[126500,126500],\"mapped\",[1607]],[[126501,126502],\"disallowed\"],[[126503,126503],\"mapped\",[1581]],[[126504,126504],\"disallowed\"],[[126505,126505],\"mapped\",[1610]],[[126506,126506],\"mapped\",[1603]],[[126507,126507],\"mapped\",[1604]],[[126508,126508],\"mapped\",[1605]],[[126509,126509],\"mapped\",[1606]],[[126510,126510],\"mapped\",[1587]],[[126511,126511],\"mapped\",[1593]],[[126512,126512],\"mapped\",[1601]],[[126513,126513],\"mapped\",[1589]],[[126514,126514],\"mapped\",[1602]],[[126515,126515],\"disallowed\"],[[126516,126516],\"mapped\",[1588]],[[126517,126517],\"mapped\",[1578]],[[126518,126518],\"mapped\",[1579]],[[126519,126519],\"mapped\",[1582]],[[126520,126520],\"disallowed\"],[[126521,126521],\"mapped\",[1590]],[[126522,126522],\"disallowed\"],[[126523,126523],\"mapped\",[1594]],[[126524,126529],\"disallowed\"],[[126530,126530],\"mapped\",[1580]],[[126531,126534],\"disallowed\"],[[126535,126535],\"mapped\",[1581]],[[126536,126536],\"disallowed\"],[[126537,126537],\"mapped\",[1610]],[[126538,126538],\"disallowed\"],[[126539,126539],\"mapped\",[1604]],[[126540,126540],\"disallowed\"],[[126541,126541],\"mapped\",[1606]],[[126542,126542],\"mapped\",[1587]],[[126543,126543],\"mapped\",[1593]],[[126544,126544],\"disallowed\"],[[126545,126545],\"mapped\",[1589]],[[126546,126546],\"mapped\",[1602]],[[126547,126547],\"disallowed\"],[[126548,126548],\"mapped\",[1588]],[[126549,126550],\"disallowed\"],[[126551,126551],\"mapped\",[1582]],[[126552,126552],\"disallowed\"],[[126553,126553],\"mapped\",[1590]],[[126554,126554],\"disallowed\"],[[126555,126555],\"mapped\",[1594]],[[126556,126556],\"disallowed\"],[[126557,126557],\"mapped\",[1722]],[[126558,126558],\"disallowed\"],[[126559,126559],\"mapped\",[1647]],[[126560,126560],\"disallowed\"],[[126561,126561],\"mapped\",[1576]],[[126562,126562],\"mapped\",[1580]],[[126563,126563],\"disallowed\"],[[126564,126564],\"mapped\",[1607]],[[126565,126566],\"disallowed\"],[[126567,126567],\"mapped\",[1581]],[[126568,126568],\"mapped\",[1591]],[[126569,126569],\"mapped\",[1610]],[[126570,126570],\"mapped\",[1603]],[[126571,126571],\"disallowed\"],[[126572,126572],\"mapped\",[1605]],[[126573,126573],\"mapped\",[1606]],[[126574,126574],\"mapped\",[1587]],[[126575,126575],\"mapped\",[1593]],[[126576,126576],\"mapped\",[1601]],[[126577,126577],\"mapped\",[1589]],[[126578,126578],\"mapped\",[1602]],[[126579,126579],\"disallowed\"],[[126580,126580],\"mapped\",[1588]],[[126581,126581],\"mapped\",[1578]],[[126582,126582],\"mapped\",[1579]],[[126583,126583],\"mapped\",[1582]],[[126584,126584],\"disallowed\"],[[126585,126585],\"mapped\",[1590]],[[126586,126586],\"mapped\",[1592]],[[126587,126587],\"mapped\",[1594]],[[126588,126588],\"mapped\",[1646]],[[126589,126589],\"disallowed\"],[[126590,126590],\"mapped\",[1697]],[[126591,126591],\"disallowed\"],[[126592,126592],\"mapped\",[1575]],[[126593,126593],\"mapped\",[1576]],[[126594,126594],\"mapped\",[1580]],[[126595,126595],\"mapped\",[1583]],[[126596,126596],\"mapped\",[1607]],[[126597,126597],\"mapped\",[1608]],[[126598,126598],\"mapped\",[1586]],[[126599,126599],\"mapped\",[1581]],[[126600,126600],\"mapped\",[1591]],[[126601,126601],\"mapped\",[1610]],[[126602,126602],\"disallowed\"],[[126603,126603],\"mapped\",[1604]],[[126604,126604],\"mapped\",[1605]],[[126605,126605],\"mapped\",[1606]],[[126606,126606],\"mapped\",[1587]],[[126607,126607],\"mapped\",[1593]],[[126608,126608],\"mapped\",[1601]],[[126609,126609],\"mapped\",[1589]],[[126610,126610],\"mapped\",[1602]],[[126611,126611],\"mapped\",[1585]],[[126612,126612],\"mapped\",[1588]],[[126613,126613],\"mapped\",[1578]],[[126614,126614],\"mapped\",[1579]],[[126615,126615],\"mapped\",[1582]],[[126616,126616],\"mapped\",[1584]],[[126617,126617],\"mapped\",[1590]],[[126618,126618],\"mapped\",[1592]],[[126619,126619],\"mapped\",[1594]],[[126620,126624],\"disallowed\"],[[126625,126625],\"mapped\",[1576]],[[126626,126626],\"mapped\",[1580]],[[126627,126627],\"mapped\",[1583]],[[126628,126628],\"disallowed\"],[[126629,126629],\"mapped\",[1608]],[[126630,126630],\"mapped\",[1586]],[[126631,126631],\"mapped\",[1581]],[[126632,126632],\"mapped\",[1591]],[[126633,126633],\"mapped\",[1610]],[[126634,126634],\"disallowed\"],[[126635,126635],\"mapped\",[1604]],[[126636,126636],\"mapped\",[1605]],[[126637,126637],\"mapped\",[1606]],[[126638,126638],\"mapped\",[1587]],[[126639,126639],\"mapped\",[1593]],[[126640,126640],\"mapped\",[1601]],[[126641,126641],\"mapped\",[1589]],[[126642,126642],\"mapped\",[1602]],[[126643,126643],\"mapped\",[1585]],[[126644,126644],\"mapped\",[1588]],[[126645,126645],\"mapped\",[1578]],[[126646,126646],\"mapped\",[1579]],[[126647,126647],\"mapped\",[1582]],[[126648,126648],\"mapped\",[1584]],[[126649,126649],\"mapped\",[1590]],[[126650,126650],\"mapped\",[1592]],[[126651,126651],\"mapped\",[1594]],[[126652,126703],\"disallowed\"],[[126704,126705],\"valid\",[],\"NV8\"],[[126706,126975],\"disallowed\"],[[126976,127019],\"valid\",[],\"NV8\"],[[127020,127023],\"disallowed\"],[[127024,127123],\"valid\",[],\"NV8\"],[[127124,127135],\"disallowed\"],[[127136,127150],\"valid\",[],\"NV8\"],[[127151,127152],\"disallowed\"],[[127153,127166],\"valid\",[],\"NV8\"],[[127167,127167],\"valid\",[],\"NV8\"],[[127168,127168],\"disallowed\"],[[127169,127183],\"valid\",[],\"NV8\"],[[127184,127184],\"disallowed\"],[[127185,127199],\"valid\",[],\"NV8\"],[[127200,127221],\"valid\",[],\"NV8\"],[[127222,127231],\"disallowed\"],[[127232,127232],\"disallowed\"],[[127233,127233],\"disallowed_STD3_mapped\",[48,44]],[[127234,127234],\"disallowed_STD3_mapped\",[49,44]],[[127235,127235],\"disallowed_STD3_mapped\",[50,44]],[[127236,127236],\"disallowed_STD3_mapped\",[51,44]],[[127237,127237],\"disallowed_STD3_mapped\",[52,44]],[[127238,127238],\"disallowed_STD3_mapped\",[53,44]],[[127239,127239],\"disallowed_STD3_mapped\",[54,44]],[[127240,127240],\"disallowed_STD3_mapped\",[55,44]],[[127241,127241],\"disallowed_STD3_mapped\",[56,44]],[[127242,127242],\"disallowed_STD3_mapped\",[57,44]],[[127243,127244],\"valid\",[],\"NV8\"],[[127245,127247],\"disallowed\"],[[127248,127248],\"disallowed_STD3_mapped\",[40,97,41]],[[127249,127249],\"disallowed_STD3_mapped\",[40,98,41]],[[127250,127250],\"disallowed_STD3_mapped\",[40,99,41]],[[127251,127251],\"disallowed_STD3_mapped\",[40,100,41]],[[127252,127252],\"disallowed_STD3_mapped\",[40,101,41]],[[127253,127253],\"disallowed_STD3_mapped\",[40,102,41]],[[127254,127254],\"disallowed_STD3_mapped\",[40,103,41]],[[127255,127255],\"disallowed_STD3_mapped\",[40,104,41]],[[127256,127256],\"disallowed_STD3_mapped\",[40,105,41]],[[127257,127257],\"disallowed_STD3_mapped\",[40,106,41]],[[127258,127258],\"disallowed_STD3_mapped\",[40,107,41]],[[127259,127259],\"disallowed_STD3_mapped\",[40,108,41]],[[127260,127260],\"disallowed_STD3_mapped\",[40,109,41]],[[127261,127261],\"disallowed_STD3_mapped\",[40,110,41]],[[127262,127262],\"disallowed_STD3_mapped\",[40,111,41]],[[127263,127263],\"disallowed_STD3_mapped\",[40,112,41]],[[127264,127264],\"disallowed_STD3_mapped\",[40,113,41]],[[127265,127265],\"disallowed_STD3_mapped\",[40,114,41]],[[127266,127266],\"disallowed_STD3_mapped\",[40,115,41]],[[127267,127267],\"disallowed_STD3_mapped\",[40,116,41]],[[127268,127268],\"disallowed_STD3_mapped\",[40,117,41]],[[127269,127269],\"disallowed_STD3_mapped\",[40,118,41]],[[127270,127270],\"disallowed_STD3_mapped\",[40,119,41]],[[127271,127271],\"disallowed_STD3_mapped\",[40,120,41]],[[127272,127272],\"disallowed_STD3_mapped\",[40,121,41]],[[127273,127273],\"disallowed_STD3_mapped\",[40,122,41]],[[127274,127274],\"mapped\",[12308,115,12309]],[[127275,127275],\"mapped\",[99]],[[127276,127276],\"mapped\",[114]],[[127277,127277],\"mapped\",[99,100]],[[127278,127278],\"mapped\",[119,122]],[[127279,127279],\"disallowed\"],[[127280,127280],\"mapped\",[97]],[[127281,127281],\"mapped\",[98]],[[127282,127282],\"mapped\",[99]],[[127283,127283],\"mapped\",[100]],[[127284,127284],\"mapped\",[101]],[[127285,127285],\"mapped\",[102]],[[127286,127286],\"mapped\",[103]],[[127287,127287],\"mapped\",[104]],[[127288,127288],\"mapped\",[105]],[[127289,127289],\"mapped\",[106]],[[127290,127290],\"mapped\",[107]],[[127291,127291],\"mapped\",[108]],[[127292,127292],\"mapped\",[109]],[[127293,127293],\"mapped\",[110]],[[127294,127294],\"mapped\",[111]],[[127295,127295],\"mapped\",[112]],[[127296,127296],\"mapped\",[113]],[[127297,127297],\"mapped\",[114]],[[127298,127298],\"mapped\",[115]],[[127299,127299],\"mapped\",[116]],[[127300,127300],\"mapped\",[117]],[[127301,127301],\"mapped\",[118]],[[127302,127302],\"mapped\",[119]],[[127303,127303],\"mapped\",[120]],[[127304,127304],\"mapped\",[121]],[[127305,127305],\"mapped\",[122]],[[127306,127306],\"mapped\",[104,118]],[[127307,127307],\"mapped\",[109,118]],[[127308,127308],\"mapped\",[115,100]],[[127309,127309],\"mapped\",[115,115]],[[127310,127310],\"mapped\",[112,112,118]],[[127311,127311],\"mapped\",[119,99]],[[127312,127318],\"valid\",[],\"NV8\"],[[127319,127319],\"valid\",[],\"NV8\"],[[127320,127326],\"valid\",[],\"NV8\"],[[127327,127327],\"valid\",[],\"NV8\"],[[127328,127337],\"valid\",[],\"NV8\"],[[127338,127338],\"mapped\",[109,99]],[[127339,127339],\"mapped\",[109,100]],[[127340,127343],\"disallowed\"],[[127344,127352],\"valid\",[],\"NV8\"],[[127353,127353],\"valid\",[],\"NV8\"],[[127354,127354],\"valid\",[],\"NV8\"],[[127355,127356],\"valid\",[],\"NV8\"],[[127357,127358],\"valid\",[],\"NV8\"],[[127359,127359],\"valid\",[],\"NV8\"],[[127360,127369],\"valid\",[],\"NV8\"],[[127370,127373],\"valid\",[],\"NV8\"],[[127374,127375],\"valid\",[],\"NV8\"],[[127376,127376],\"mapped\",[100,106]],[[127377,127386],\"valid\",[],\"NV8\"],[[127387,127461],\"disallowed\"],[[127462,127487],\"valid\",[],\"NV8\"],[[127488,127488],\"mapped\",[12411,12363]],[[127489,127489],\"mapped\",[12467,12467]],[[127490,127490],\"mapped\",[12469]],[[127491,127503],\"disallowed\"],[[127504,127504],\"mapped\",[25163]],[[127505,127505],\"mapped\",[23383]],[[127506,127506],\"mapped\",[21452]],[[127507,127507],\"mapped\",[12487]],[[127508,127508],\"mapped\",[20108]],[[127509,127509],\"mapped\",[22810]],[[127510,127510],\"mapped\",[35299]],[[127511,127511],\"mapped\",[22825]],[[127512,127512],\"mapped\",[20132]],[[127513,127513],\"mapped\",[26144]],[[127514,127514],\"mapped\",[28961]],[[127515,127515],\"mapped\",[26009]],[[127516,127516],\"mapped\",[21069]],[[127517,127517],\"mapped\",[24460]],[[127518,127518],\"mapped\",[20877]],[[127519,127519],\"mapped\",[26032]],[[127520,127520],\"mapped\",[21021]],[[127521,127521],\"mapped\",[32066]],[[127522,127522],\"mapped\",[29983]],[[127523,127523],\"mapped\",[36009]],[[127524,127524],\"mapped\",[22768]],[[127525,127525],\"mapped\",[21561]],[[127526,127526],\"mapped\",[28436]],[[127527,127527],\"mapped\",[25237]],[[127528,127528],\"mapped\",[25429]],[[127529,127529],\"mapped\",[19968]],[[127530,127530],\"mapped\",[19977]],[[127531,127531],\"mapped\",[36938]],[[127532,127532],\"mapped\",[24038]],[[127533,127533],\"mapped\",[20013]],[[127534,127534],\"mapped\",[21491]],[[127535,127535],\"mapped\",[25351]],[[127536,127536],\"mapped\",[36208]],[[127537,127537],\"mapped\",[25171]],[[127538,127538],\"mapped\",[31105]],[[127539,127539],\"mapped\",[31354]],[[127540,127540],\"mapped\",[21512]],[[127541,127541],\"mapped\",[28288]],[[127542,127542],\"mapped\",[26377]],[[127543,127543],\"mapped\",[26376]],[[127544,127544],\"mapped\",[30003]],[[127545,127545],\"mapped\",[21106]],[[127546,127546],\"mapped\",[21942]],[[127547,127551],\"disallowed\"],[[127552,127552],\"mapped\",[12308,26412,12309]],[[127553,127553],\"mapped\",[12308,19977,12309]],[[127554,127554],\"mapped\",[12308,20108,12309]],[[127555,127555],\"mapped\",[12308,23433,12309]],[[127556,127556],\"mapped\",[12308,28857,12309]],[[127557,127557],\"mapped\",[12308,25171,12309]],[[127558,127558],\"mapped\",[12308,30423,12309]],[[127559,127559],\"mapped\",[12308,21213,12309]],[[127560,127560],\"mapped\",[12308,25943,12309]],[[127561,127567],\"disallowed\"],[[127568,127568],\"mapped\",[24471]],[[127569,127569],\"mapped\",[21487]],[[127570,127743],\"disallowed\"],[[127744,127776],\"valid\",[],\"NV8\"],[[127777,127788],\"valid\",[],\"NV8\"],[[127789,127791],\"valid\",[],\"NV8\"],[[127792,127797],\"valid\",[],\"NV8\"],[[127798,127798],\"valid\",[],\"NV8\"],[[127799,127868],\"valid\",[],\"NV8\"],[[127869,127869],\"valid\",[],\"NV8\"],[[127870,127871],\"valid\",[],\"NV8\"],[[127872,127891],\"valid\",[],\"NV8\"],[[127892,127903],\"valid\",[],\"NV8\"],[[127904,127940],\"valid\",[],\"NV8\"],[[127941,127941],\"valid\",[],\"NV8\"],[[127942,127946],\"valid\",[],\"NV8\"],[[127947,127950],\"valid\",[],\"NV8\"],[[127951,127955],\"valid\",[],\"NV8\"],[[127956,127967],\"valid\",[],\"NV8\"],[[127968,127984],\"valid\",[],\"NV8\"],[[127985,127991],\"valid\",[],\"NV8\"],[[127992,127999],\"valid\",[],\"NV8\"],[[128000,128062],\"valid\",[],\"NV8\"],[[128063,128063],\"valid\",[],\"NV8\"],[[128064,128064],\"valid\",[],\"NV8\"],[[128065,128065],\"valid\",[],\"NV8\"],[[128066,128247],\"valid\",[],\"NV8\"],[[128248,128248],\"valid\",[],\"NV8\"],[[128249,128252],\"valid\",[],\"NV8\"],[[128253,128254],\"valid\",[],\"NV8\"],[[128255,128255],\"valid\",[],\"NV8\"],[[128256,128317],\"valid\",[],\"NV8\"],[[128318,128319],\"valid\",[],\"NV8\"],[[128320,128323],\"valid\",[],\"NV8\"],[[128324,128330],\"valid\",[],\"NV8\"],[[128331,128335],\"valid\",[],\"NV8\"],[[128336,128359],\"valid\",[],\"NV8\"],[[128360,128377],\"valid\",[],\"NV8\"],[[128378,128378],\"disallowed\"],[[128379,128419],\"valid\",[],\"NV8\"],[[128420,128420],\"disallowed\"],[[128421,128506],\"valid\",[],\"NV8\"],[[128507,128511],\"valid\",[],\"NV8\"],[[128512,128512],\"valid\",[],\"NV8\"],[[128513,128528],\"valid\",[],\"NV8\"],[[128529,128529],\"valid\",[],\"NV8\"],[[128530,128532],\"valid\",[],\"NV8\"],[[128533,128533],\"valid\",[],\"NV8\"],[[128534,128534],\"valid\",[],\"NV8\"],[[128535,128535],\"valid\",[],\"NV8\"],[[128536,128536],\"valid\",[],\"NV8\"],[[128537,128537],\"valid\",[],\"NV8\"],[[128538,128538],\"valid\",[],\"NV8\"],[[128539,128539],\"valid\",[],\"NV8\"],[[128540,128542],\"valid\",[],\"NV8\"],[[128543,128543],\"valid\",[],\"NV8\"],[[128544,128549],\"valid\",[],\"NV8\"],[[128550,128551],\"valid\",[],\"NV8\"],[[128552,128555],\"valid\",[],\"NV8\"],[[128556,128556],\"valid\",[],\"NV8\"],[[128557,128557],\"valid\",[],\"NV8\"],[[128558,128559],\"valid\",[],\"NV8\"],[[128560,128563],\"valid\",[],\"NV8\"],[[128564,128564],\"valid\",[],\"NV8\"],[[128565,128576],\"valid\",[],\"NV8\"],[[128577,128578],\"valid\",[],\"NV8\"],[[128579,128580],\"valid\",[],\"NV8\"],[[128581,128591],\"valid\",[],\"NV8\"],[[128592,128639],\"valid\",[],\"NV8\"],[[128640,128709],\"valid\",[],\"NV8\"],[[128710,128719],\"valid\",[],\"NV8\"],[[128720,128720],\"valid\",[],\"NV8\"],[[128721,128735],\"disallowed\"],[[128736,128748],\"valid\",[],\"NV8\"],[[128749,128751],\"disallowed\"],[[128752,128755],\"valid\",[],\"NV8\"],[[128756,128767],\"disallowed\"],[[128768,128883],\"valid\",[],\"NV8\"],[[128884,128895],\"disallowed\"],[[128896,128980],\"valid\",[],\"NV8\"],[[128981,129023],\"disallowed\"],[[129024,129035],\"valid\",[],\"NV8\"],[[129036,129039],\"disallowed\"],[[129040,129095],\"valid\",[],\"NV8\"],[[129096,129103],\"disallowed\"],[[129104,129113],\"valid\",[],\"NV8\"],[[129114,129119],\"disallowed\"],[[129120,129159],\"valid\",[],\"NV8\"],[[129160,129167],\"disallowed\"],[[129168,129197],\"valid\",[],\"NV8\"],[[129198,129295],\"disallowed\"],[[129296,129304],\"valid\",[],\"NV8\"],[[129305,129407],\"disallowed\"],[[129408,129412],\"valid\",[],\"NV8\"],[[129413,129471],\"disallowed\"],[[129472,129472],\"valid\",[],\"NV8\"],[[129473,131069],\"disallowed\"],[[131070,131071],\"disallowed\"],[[131072,173782],\"valid\"],[[173783,173823],\"disallowed\"],[[173824,177972],\"valid\"],[[177973,177983],\"disallowed\"],[[177984,178205],\"valid\"],[[178206,178207],\"disallowed\"],[[178208,183969],\"valid\"],[[183970,194559],\"disallowed\"],[[194560,194560],\"mapped\",[20029]],[[194561,194561],\"mapped\",[20024]],[[194562,194562],\"mapped\",[20033]],[[194563,194563],\"mapped\",[131362]],[[194564,194564],\"mapped\",[20320]],[[194565,194565],\"mapped\",[20398]],[[194566,194566],\"mapped\",[20411]],[[194567,194567],\"mapped\",[20482]],[[194568,194568],\"mapped\",[20602]],[[194569,194569],\"mapped\",[20633]],[[194570,194570],\"mapped\",[20711]],[[194571,194571],\"mapped\",[20687]],[[194572,194572],\"mapped\",[13470]],[[194573,194573],\"mapped\",[132666]],[[194574,194574],\"mapped\",[20813]],[[194575,194575],\"mapped\",[20820]],[[194576,194576],\"mapped\",[20836]],[[194577,194577],\"mapped\",[20855]],[[194578,194578],\"mapped\",[132380]],[[194579,194579],\"mapped\",[13497]],[[194580,194580],\"mapped\",[20839]],[[194581,194581],\"mapped\",[20877]],[[194582,194582],\"mapped\",[132427]],[[194583,194583],\"mapped\",[20887]],[[194584,194584],\"mapped\",[20900]],[[194585,194585],\"mapped\",[20172]],[[194586,194586],\"mapped\",[20908]],[[194587,194587],\"mapped\",[20917]],[[194588,194588],\"mapped\",[168415]],[[194589,194589],\"mapped\",[20981]],[[194590,194590],\"mapped\",[20995]],[[194591,194591],\"mapped\",[13535]],[[194592,194592],\"mapped\",[21051]],[[194593,194593],\"mapped\",[21062]],[[194594,194594],\"mapped\",[21106]],[[194595,194595],\"mapped\",[21111]],[[194596,194596],\"mapped\",[13589]],[[194597,194597],\"mapped\",[21191]],[[194598,194598],\"mapped\",[21193]],[[194599,194599],\"mapped\",[21220]],[[194600,194600],\"mapped\",[21242]],[[194601,194601],\"mapped\",[21253]],[[194602,194602],\"mapped\",[21254]],[[194603,194603],\"mapped\",[21271]],[[194604,194604],\"mapped\",[21321]],[[194605,194605],\"mapped\",[21329]],[[194606,194606],\"mapped\",[21338]],[[194607,194607],\"mapped\",[21363]],[[194608,194608],\"mapped\",[21373]],[[194609,194611],\"mapped\",[21375]],[[194612,194612],\"mapped\",[133676]],[[194613,194613],\"mapped\",[28784]],[[194614,194614],\"mapped\",[21450]],[[194615,194615],\"mapped\",[21471]],[[194616,194616],\"mapped\",[133987]],[[194617,194617],\"mapped\",[21483]],[[194618,194618],\"mapped\",[21489]],[[194619,194619],\"mapped\",[21510]],[[194620,194620],\"mapped\",[21662]],[[194621,194621],\"mapped\",[21560]],[[194622,194622],\"mapped\",[21576]],[[194623,194623],\"mapped\",[21608]],[[194624,194624],\"mapped\",[21666]],[[194625,194625],\"mapped\",[21750]],[[194626,194626],\"mapped\",[21776]],[[194627,194627],\"mapped\",[21843]],[[194628,194628],\"mapped\",[21859]],[[194629,194630],\"mapped\",[21892]],[[194631,194631],\"mapped\",[21913]],[[194632,194632],\"mapped\",[21931]],[[194633,194633],\"mapped\",[21939]],[[194634,194634],\"mapped\",[21954]],[[194635,194635],\"mapped\",[22294]],[[194636,194636],\"mapped\",[22022]],[[194637,194637],\"mapped\",[22295]],[[194638,194638],\"mapped\",[22097]],[[194639,194639],\"mapped\",[22132]],[[194640,194640],\"mapped\",[20999]],[[194641,194641],\"mapped\",[22766]],[[194642,194642],\"mapped\",[22478]],[[194643,194643],\"mapped\",[22516]],[[194644,194644],\"mapped\",[22541]],[[194645,194645],\"mapped\",[22411]],[[194646,194646],\"mapped\",[22578]],[[194647,194647],\"mapped\",[22577]],[[194648,194648],\"mapped\",[22700]],[[194649,194649],\"mapped\",[136420]],[[194650,194650],\"mapped\",[22770]],[[194651,194651],\"mapped\",[22775]],[[194652,194652],\"mapped\",[22790]],[[194653,194653],\"mapped\",[22810]],[[194654,194654],\"mapped\",[22818]],[[194655,194655],\"mapped\",[22882]],[[194656,194656],\"mapped\",[136872]],[[194657,194657],\"mapped\",[136938]],[[194658,194658],\"mapped\",[23020]],[[194659,194659],\"mapped\",[23067]],[[194660,194660],\"mapped\",[23079]],[[194661,194661],\"mapped\",[23000]],[[194662,194662],\"mapped\",[23142]],[[194663,194663],\"mapped\",[14062]],[[194664,194664],\"disallowed\"],[[194665,194665],\"mapped\",[23304]],[[194666,194667],\"mapped\",[23358]],[[194668,194668],\"mapped\",[137672]],[[194669,194669],\"mapped\",[23491]],[[194670,194670],\"mapped\",[23512]],[[194671,194671],\"mapped\",[23527]],[[194672,194672],\"mapped\",[23539]],[[194673,194673],\"mapped\",[138008]],[[194674,194674],\"mapped\",[23551]],[[194675,194675],\"mapped\",[23558]],[[194676,194676],\"disallowed\"],[[194677,194677],\"mapped\",[23586]],[[194678,194678],\"mapped\",[14209]],[[194679,194679],\"mapped\",[23648]],[[194680,194680],\"mapped\",[23662]],[[194681,194681],\"mapped\",[23744]],[[194682,194682],\"mapped\",[23693]],[[194683,194683],\"mapped\",[138724]],[[194684,194684],\"mapped\",[23875]],[[194685,194685],\"mapped\",[138726]],[[194686,194686],\"mapped\",[23918]],[[194687,194687],\"mapped\",[23915]],[[194688,194688],\"mapped\",[23932]],[[194689,194689],\"mapped\",[24033]],[[194690,194690],\"mapped\",[24034]],[[194691,194691],\"mapped\",[14383]],[[194692,194692],\"mapped\",[24061]],[[194693,194693],\"mapped\",[24104]],[[194694,194694],\"mapped\",[24125]],[[194695,194695],\"mapped\",[24169]],[[194696,194696],\"mapped\",[14434]],[[194697,194697],\"mapped\",[139651]],[[194698,194698],\"mapped\",[14460]],[[194699,194699],\"mapped\",[24240]],[[194700,194700],\"mapped\",[24243]],[[194701,194701],\"mapped\",[24246]],[[194702,194702],\"mapped\",[24266]],[[194703,194703],\"mapped\",[172946]],[[194704,194704],\"mapped\",[24318]],[[194705,194706],\"mapped\",[140081]],[[194707,194707],\"mapped\",[33281]],[[194708,194709],\"mapped\",[24354]],[[194710,194710],\"mapped\",[14535]],[[194711,194711],\"mapped\",[144056]],[[194712,194712],\"mapped\",[156122]],[[194713,194713],\"mapped\",[24418]],[[194714,194714],\"mapped\",[24427]],[[194715,194715],\"mapped\",[14563]],[[194716,194716],\"mapped\",[24474]],[[194717,194717],\"mapped\",[24525]],[[194718,194718],\"mapped\",[24535]],[[194719,194719],\"mapped\",[24569]],[[194720,194720],\"mapped\",[24705]],[[194721,194721],\"mapped\",[14650]],[[194722,194722],\"mapped\",[14620]],[[194723,194723],\"mapped\",[24724]],[[194724,194724],\"mapped\",[141012]],[[194725,194725],\"mapped\",[24775]],[[194726,194726],\"mapped\",[24904]],[[194727,194727],\"mapped\",[24908]],[[194728,194728],\"mapped\",[24910]],[[194729,194729],\"mapped\",[24908]],[[194730,194730],\"mapped\",[24954]],[[194731,194731],\"mapped\",[24974]],[[194732,194732],\"mapped\",[25010]],[[194733,194733],\"mapped\",[24996]],[[194734,194734],\"mapped\",[25007]],[[194735,194735],\"mapped\",[25054]],[[194736,194736],\"mapped\",[25074]],[[194737,194737],\"mapped\",[25078]],[[194738,194738],\"mapped\",[25104]],[[194739,194739],\"mapped\",[25115]],[[194740,194740],\"mapped\",[25181]],[[194741,194741],\"mapped\",[25265]],[[194742,194742],\"mapped\",[25300]],[[194743,194743],\"mapped\",[25424]],[[194744,194744],\"mapped\",[142092]],[[194745,194745],\"mapped\",[25405]],[[194746,194746],\"mapped\",[25340]],[[194747,194747],\"mapped\",[25448]],[[194748,194748],\"mapped\",[25475]],[[194749,194749],\"mapped\",[25572]],[[194750,194750],\"mapped\",[142321]],[[194751,194751],\"mapped\",[25634]],[[194752,194752],\"mapped\",[25541]],[[194753,194753],\"mapped\",[25513]],[[194754,194754],\"mapped\",[14894]],[[194755,194755],\"mapped\",[25705]],[[194756,194756],\"mapped\",[25726]],[[194757,194757],\"mapped\",[25757]],[[194758,194758],\"mapped\",[25719]],[[194759,194759],\"mapped\",[14956]],[[194760,194760],\"mapped\",[25935]],[[194761,194761],\"mapped\",[25964]],[[194762,194762],\"mapped\",[143370]],[[194763,194763],\"mapped\",[26083]],[[194764,194764],\"mapped\",[26360]],[[194765,194765],\"mapped\",[26185]],[[194766,194766],\"mapped\",[15129]],[[194767,194767],\"mapped\",[26257]],[[194768,194768],\"mapped\",[15112]],[[194769,194769],\"mapped\",[15076]],[[194770,194770],\"mapped\",[20882]],[[194771,194771],\"mapped\",[20885]],[[194772,194772],\"mapped\",[26368]],[[194773,194773],\"mapped\",[26268]],[[194774,194774],\"mapped\",[32941]],[[194775,194775],\"mapped\",[17369]],[[194776,194776],\"mapped\",[26391]],[[194777,194777],\"mapped\",[26395]],[[194778,194778],\"mapped\",[26401]],[[194779,194779],\"mapped\",[26462]],[[194780,194780],\"mapped\",[26451]],[[194781,194781],\"mapped\",[144323]],[[194782,194782],\"mapped\",[15177]],[[194783,194783],\"mapped\",[26618]],[[194784,194784],\"mapped\",[26501]],[[194785,194785],\"mapped\",[26706]],[[194786,194786],\"mapped\",[26757]],[[194787,194787],\"mapped\",[144493]],[[194788,194788],\"mapped\",[26766]],[[194789,194789],\"mapped\",[26655]],[[194790,194790],\"mapped\",[26900]],[[194791,194791],\"mapped\",[15261]],[[194792,194792],\"mapped\",[26946]],[[194793,194793],\"mapped\",[27043]],[[194794,194794],\"mapped\",[27114]],[[194795,194795],\"mapped\",[27304]],[[194796,194796],\"mapped\",[145059]],[[194797,194797],\"mapped\",[27355]],[[194798,194798],\"mapped\",[15384]],[[194799,194799],\"mapped\",[27425]],[[194800,194800],\"mapped\",[145575]],[[194801,194801],\"mapped\",[27476]],[[194802,194802],\"mapped\",[15438]],[[194803,194803],\"mapped\",[27506]],[[194804,194804],\"mapped\",[27551]],[[194805,194805],\"mapped\",[27578]],[[194806,194806],\"mapped\",[27579]],[[194807,194807],\"mapped\",[146061]],[[194808,194808],\"mapped\",[138507]],[[194809,194809],\"mapped\",[146170]],[[194810,194810],\"mapped\",[27726]],[[194811,194811],\"mapped\",[146620]],[[194812,194812],\"mapped\",[27839]],[[194813,194813],\"mapped\",[27853]],[[194814,194814],\"mapped\",[27751]],[[194815,194815],\"mapped\",[27926]],[[194816,194816],\"mapped\",[27966]],[[194817,194817],\"mapped\",[28023]],[[194818,194818],\"mapped\",[27969]],[[194819,194819],\"mapped\",[28009]],[[194820,194820],\"mapped\",[28024]],[[194821,194821],\"mapped\",[28037]],[[194822,194822],\"mapped\",[146718]],[[194823,194823],\"mapped\",[27956]],[[194824,194824],\"mapped\",[28207]],[[194825,194825],\"mapped\",[28270]],[[194826,194826],\"mapped\",[15667]],[[194827,194827],\"mapped\",[28363]],[[194828,194828],\"mapped\",[28359]],[[194829,194829],\"mapped\",[147153]],[[194830,194830],\"mapped\",[28153]],[[194831,194831],\"mapped\",[28526]],[[194832,194832],\"mapped\",[147294]],[[194833,194833],\"mapped\",[147342]],[[194834,194834],\"mapped\",[28614]],[[194835,194835],\"mapped\",[28729]],[[194836,194836],\"mapped\",[28702]],[[194837,194837],\"mapped\",[28699]],[[194838,194838],\"mapped\",[15766]],[[194839,194839],\"mapped\",[28746]],[[194840,194840],\"mapped\",[28797]],[[194841,194841],\"mapped\",[28791]],[[194842,194842],\"mapped\",[28845]],[[194843,194843],\"mapped\",[132389]],[[194844,194844],\"mapped\",[28997]],[[194845,194845],\"mapped\",[148067]],[[194846,194846],\"mapped\",[29084]],[[194847,194847],\"disallowed\"],[[194848,194848],\"mapped\",[29224]],[[194849,194849],\"mapped\",[29237]],[[194850,194850],\"mapped\",[29264]],[[194851,194851],\"mapped\",[149000]],[[194852,194852],\"mapped\",[29312]],[[194853,194853],\"mapped\",[29333]],[[194854,194854],\"mapped\",[149301]],[[194855,194855],\"mapped\",[149524]],[[194856,194856],\"mapped\",[29562]],[[194857,194857],\"mapped\",[29579]],[[194858,194858],\"mapped\",[16044]],[[194859,194859],\"mapped\",[29605]],[[194860,194861],\"mapped\",[16056]],[[194862,194862],\"mapped\",[29767]],[[194863,194863],\"mapped\",[29788]],[[194864,194864],\"mapped\",[29809]],[[194865,194865],\"mapped\",[29829]],[[194866,194866],\"mapped\",[29898]],[[194867,194867],\"mapped\",[16155]],[[194868,194868],\"mapped\",[29988]],[[194869,194869],\"mapped\",[150582]],[[194870,194870],\"mapped\",[30014]],[[194871,194871],\"mapped\",[150674]],[[194872,194872],\"mapped\",[30064]],[[194873,194873],\"mapped\",[139679]],[[194874,194874],\"mapped\",[30224]],[[194875,194875],\"mapped\",[151457]],[[194876,194876],\"mapped\",[151480]],[[194877,194877],\"mapped\",[151620]],[[194878,194878],\"mapped\",[16380]],[[194879,194879],\"mapped\",[16392]],[[194880,194880],\"mapped\",[30452]],[[194881,194881],\"mapped\",[151795]],[[194882,194882],\"mapped\",[151794]],[[194883,194883],\"mapped\",[151833]],[[194884,194884],\"mapped\",[151859]],[[194885,194885],\"mapped\",[30494]],[[194886,194887],\"mapped\",[30495]],[[194888,194888],\"mapped\",[30538]],[[194889,194889],\"mapped\",[16441]],[[194890,194890],\"mapped\",[30603]],[[194891,194891],\"mapped\",[16454]],[[194892,194892],\"mapped\",[16534]],[[194893,194893],\"mapped\",[152605]],[[194894,194894],\"mapped\",[30798]],[[194895,194895],\"mapped\",[30860]],[[194896,194896],\"mapped\",[30924]],[[194897,194897],\"mapped\",[16611]],[[194898,194898],\"mapped\",[153126]],[[194899,194899],\"mapped\",[31062]],[[194900,194900],\"mapped\",[153242]],[[194901,194901],\"mapped\",[153285]],[[194902,194902],\"mapped\",[31119]],[[194903,194903],\"mapped\",[31211]],[[194904,194904],\"mapped\",[16687]],[[194905,194905],\"mapped\",[31296]],[[194906,194906],\"mapped\",[31306]],[[194907,194907],\"mapped\",[31311]],[[194908,194908],\"mapped\",[153980]],[[194909,194910],\"mapped\",[154279]],[[194911,194911],\"disallowed\"],[[194912,194912],\"mapped\",[16898]],[[194913,194913],\"mapped\",[154539]],[[194914,194914],\"mapped\",[31686]],[[194915,194915],\"mapped\",[31689]],[[194916,194916],\"mapped\",[16935]],[[194917,194917],\"mapped\",[154752]],[[194918,194918],\"mapped\",[31954]],[[194919,194919],\"mapped\",[17056]],[[194920,194920],\"mapped\",[31976]],[[194921,194921],\"mapped\",[31971]],[[194922,194922],\"mapped\",[32000]],[[194923,194923],\"mapped\",[155526]],[[194924,194924],\"mapped\",[32099]],[[194925,194925],\"mapped\",[17153]],[[194926,194926],\"mapped\",[32199]],[[194927,194927],\"mapped\",[32258]],[[194928,194928],\"mapped\",[32325]],[[194929,194929],\"mapped\",[17204]],[[194930,194930],\"mapped\",[156200]],[[194931,194931],\"mapped\",[156231]],[[194932,194932],\"mapped\",[17241]],[[194933,194933],\"mapped\",[156377]],[[194934,194934],\"mapped\",[32634]],[[194935,194935],\"mapped\",[156478]],[[194936,194936],\"mapped\",[32661]],[[194937,194937],\"mapped\",[32762]],[[194938,194938],\"mapped\",[32773]],[[194939,194939],\"mapped\",[156890]],[[194940,194940],\"mapped\",[156963]],[[194941,194941],\"mapped\",[32864]],[[194942,194942],\"mapped\",[157096]],[[194943,194943],\"mapped\",[32880]],[[194944,194944],\"mapped\",[144223]],[[194945,194945],\"mapped\",[17365]],[[194946,194946],\"mapped\",[32946]],[[194947,194947],\"mapped\",[33027]],[[194948,194948],\"mapped\",[17419]],[[194949,194949],\"mapped\",[33086]],[[194950,194950],\"mapped\",[23221]],[[194951,194951],\"mapped\",[157607]],[[194952,194952],\"mapped\",[157621]],[[194953,194953],\"mapped\",[144275]],[[194954,194954],\"mapped\",[144284]],[[194955,194955],\"mapped\",[33281]],[[194956,194956],\"mapped\",[33284]],[[194957,194957],\"mapped\",[36766]],[[194958,194958],\"mapped\",[17515]],[[194959,194959],\"mapped\",[33425]],[[194960,194960],\"mapped\",[33419]],[[194961,194961],\"mapped\",[33437]],[[194962,194962],\"mapped\",[21171]],[[194963,194963],\"mapped\",[33457]],[[194964,194964],\"mapped\",[33459]],[[194965,194965],\"mapped\",[33469]],[[194966,194966],\"mapped\",[33510]],[[194967,194967],\"mapped\",[158524]],[[194968,194968],\"mapped\",[33509]],[[194969,194969],\"mapped\",[33565]],[[194970,194970],\"mapped\",[33635]],[[194971,194971],\"mapped\",[33709]],[[194972,194972],\"mapped\",[33571]],[[194973,194973],\"mapped\",[33725]],[[194974,194974],\"mapped\",[33767]],[[194975,194975],\"mapped\",[33879]],[[194976,194976],\"mapped\",[33619]],[[194977,194977],\"mapped\",[33738]],[[194978,194978],\"mapped\",[33740]],[[194979,194979],\"mapped\",[33756]],[[194980,194980],\"mapped\",[158774]],[[194981,194981],\"mapped\",[159083]],[[194982,194982],\"mapped\",[158933]],[[194983,194983],\"mapped\",[17707]],[[194984,194984],\"mapped\",[34033]],[[194985,194985],\"mapped\",[34035]],[[194986,194986],\"mapped\",[34070]],[[194987,194987],\"mapped\",[160714]],[[194988,194988],\"mapped\",[34148]],[[194989,194989],\"mapped\",[159532]],[[194990,194990],\"mapped\",[17757]],[[194991,194991],\"mapped\",[17761]],[[194992,194992],\"mapped\",[159665]],[[194993,194993],\"mapped\",[159954]],[[194994,194994],\"mapped\",[17771]],[[194995,194995],\"mapped\",[34384]],[[194996,194996],\"mapped\",[34396]],[[194997,194997],\"mapped\",[34407]],[[194998,194998],\"mapped\",[34409]],[[194999,194999],\"mapped\",[34473]],[[195000,195000],\"mapped\",[34440]],[[195001,195001],\"mapped\",[34574]],[[195002,195002],\"mapped\",[34530]],[[195003,195003],\"mapped\",[34681]],[[195004,195004],\"mapped\",[34600]],[[195005,195005],\"mapped\",[34667]],[[195006,195006],\"mapped\",[34694]],[[195007,195007],\"disallowed\"],[[195008,195008],\"mapped\",[34785]],[[195009,195009],\"mapped\",[34817]],[[195010,195010],\"mapped\",[17913]],[[195011,195011],\"mapped\",[34912]],[[195012,195012],\"mapped\",[34915]],[[195013,195013],\"mapped\",[161383]],[[195014,195014],\"mapped\",[35031]],[[195015,195015],\"mapped\",[35038]],[[195016,195016],\"mapped\",[17973]],[[195017,195017],\"mapped\",[35066]],[[195018,195018],\"mapped\",[13499]],[[195019,195019],\"mapped\",[161966]],[[195020,195020],\"mapped\",[162150]],[[195021,195021],\"mapped\",[18110]],[[195022,195022],\"mapped\",[18119]],[[195023,195023],\"mapped\",[35488]],[[195024,195024],\"mapped\",[35565]],[[195025,195025],\"mapped\",[35722]],[[195026,195026],\"mapped\",[35925]],[[195027,195027],\"mapped\",[162984]],[[195028,195028],\"mapped\",[36011]],[[195029,195029],\"mapped\",[36033]],[[195030,195030],\"mapped\",[36123]],[[195031,195031],\"mapped\",[36215]],[[195032,195032],\"mapped\",[163631]],[[195033,195033],\"mapped\",[133124]],[[195034,195034],\"mapped\",[36299]],[[195035,195035],\"mapped\",[36284]],[[195036,195036],\"mapped\",[36336]],[[195037,195037],\"mapped\",[133342]],[[195038,195038],\"mapped\",[36564]],[[195039,195039],\"mapped\",[36664]],[[195040,195040],\"mapped\",[165330]],[[195041,195041],\"mapped\",[165357]],[[195042,195042],\"mapped\",[37012]],[[195043,195043],\"mapped\",[37105]],[[195044,195044],\"mapped\",[37137]],[[195045,195045],\"mapped\",[165678]],[[195046,195046],\"mapped\",[37147]],[[195047,195047],\"mapped\",[37432]],[[195048,195048],\"mapped\",[37591]],[[195049,195049],\"mapped\",[37592]],[[195050,195050],\"mapped\",[37500]],[[195051,195051],\"mapped\",[37881]],[[195052,195052],\"mapped\",[37909]],[[195053,195053],\"mapped\",[166906]],[[195054,195054],\"mapped\",[38283]],[[195055,195055],\"mapped\",[18837]],[[195056,195056],\"mapped\",[38327]],[[195057,195057],\"mapped\",[167287]],[[195058,195058],\"mapped\",[18918]],[[195059,195059],\"mapped\",[38595]],[[195060,195060],\"mapped\",[23986]],[[195061,195061],\"mapped\",[38691]],[[195062,195062],\"mapped\",[168261]],[[195063,195063],\"mapped\",[168474]],[[195064,195064],\"mapped\",[19054]],[[195065,195065],\"mapped\",[19062]],[[195066,195066],\"mapped\",[38880]],[[195067,195067],\"mapped\",[168970]],[[195068,195068],\"mapped\",[19122]],[[195069,195069],\"mapped\",[169110]],[[195070,195071],\"mapped\",[38923]],[[195072,195072],\"mapped\",[38953]],[[195073,195073],\"mapped\",[169398]],[[195074,195074],\"mapped\",[39138]],[[195075,195075],\"mapped\",[19251]],[[195076,195076],\"mapped\",[39209]],[[195077,195077],\"mapped\",[39335]],[[195078,195078],\"mapped\",[39362]],[[195079,195079],\"mapped\",[39422]],[[195080,195080],\"mapped\",[19406]],[[195081,195081],\"mapped\",[170800]],[[195082,195082],\"mapped\",[39698]],[[195083,195083],\"mapped\",[40000]],[[195084,195084],\"mapped\",[40189]],[[195085,195085],\"mapped\",[19662]],[[195086,195086],\"mapped\",[19693]],[[195087,195087],\"mapped\",[40295]],[[195088,195088],\"mapped\",[172238]],[[195089,195089],\"mapped\",[19704]],[[195090,195090],\"mapped\",[172293]],[[195091,195091],\"mapped\",[172558]],[[195092,195092],\"mapped\",[172689]],[[195093,195093],\"mapped\",[40635]],[[195094,195094],\"mapped\",[19798]],[[195095,195095],\"mapped\",[40697]],[[195096,195096],\"mapped\",[40702]],[[195097,195097],\"mapped\",[40709]],[[195098,195098],\"mapped\",[40719]],[[195099,195099],\"mapped\",[40726]],[[195100,195100],\"mapped\",[40763]],[[195101,195101],\"mapped\",[173568]],[[195102,196605],\"disallowed\"],[[196606,196607],\"disallowed\"],[[196608,262141],\"disallowed\"],[[262142,262143],\"disallowed\"],[[262144,327677],\"disallowed\"],[[327678,327679],\"disallowed\"],[[327680,393213],\"disallowed\"],[[393214,393215],\"disallowed\"],[[393216,458749],\"disallowed\"],[[458750,458751],\"disallowed\"],[[458752,524285],\"disallowed\"],[[524286,524287],\"disallowed\"],[[524288,589821],\"disallowed\"],[[589822,589823],\"disallowed\"],[[589824,655357],\"disallowed\"],[[655358,655359],\"disallowed\"],[[655360,720893],\"disallowed\"],[[720894,720895],\"disallowed\"],[[720896,786429],\"disallowed\"],[[786430,786431],\"disallowed\"],[[786432,851965],\"disallowed\"],[[851966,851967],\"disallowed\"],[[851968,917501],\"disallowed\"],[[917502,917503],\"disallowed\"],[[917504,917504],\"disallowed\"],[[917505,917505],\"disallowed\"],[[917506,917535],\"disallowed\"],[[917536,917631],\"disallowed\"],[[917632,917759],\"disallowed\"],[[917760,917999],\"ignored\"],[[918000,983037],\"disallowed\"],[[983038,983039],\"disallowed\"],[[983040,1048573],\"disallowed\"],[[1048574,1048575],\"disallowed\"],[[1048576,1114109],\"disallowed\"],[[1114110,1114111],\"disallowed\"]]", "\"use strict\";\n\nvar punycode = require(\"punycode\");\nvar mappingTable = require(\"./lib/mappingTable.json\");\n\nvar PROCESSING_OPTIONS = {\n TRANSITIONAL: 0,\n NONTRANSITIONAL: 1\n};\n\nfunction normalize(str) { // fix bug in v8\n return str.split('\\u0000').map(function (s) { return s.normalize('NFC'); }).join('\\u0000');\n}\n\nfunction findStatus(val) {\n var start = 0;\n var end = mappingTable.length - 1;\n\n while (start <= end) {\n var mid = Math.floor((start + end) / 2);\n\n var target = mappingTable[mid];\n if (target[0][0] <= val && target[0][1] >= val) {\n return target;\n } else if (target[0][0] > val) {\n end = mid - 1;\n } else {\n start = mid + 1;\n }\n }\n\n return null;\n}\n\nvar regexAstralSymbols = /[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]/g;\n\nfunction countSymbols(string) {\n return string\n // replace every surrogate pair with a BMP symbol\n .replace(regexAstralSymbols, '_')\n // then get the length\n .length;\n}\n\nfunction mapChars(domain_name, useSTD3, processing_option) {\n var hasError = false;\n var processed = \"\";\n\n var len = countSymbols(domain_name);\n for (var i = 0; i < len; ++i) {\n var codePoint = domain_name.codePointAt(i);\n var status = findStatus(codePoint);\n\n switch (status[1]) {\n case \"disallowed\":\n hasError = true;\n processed += String.fromCodePoint(codePoint);\n break;\n case \"ignored\":\n break;\n case \"mapped\":\n processed += String.fromCodePoint.apply(String, status[2]);\n break;\n case \"deviation\":\n if (processing_option === PROCESSING_OPTIONS.TRANSITIONAL) {\n processed += String.fromCodePoint.apply(String, status[2]);\n } else {\n processed += String.fromCodePoint(codePoint);\n }\n break;\n case \"valid\":\n processed += String.fromCodePoint(codePoint);\n break;\n case \"disallowed_STD3_mapped\":\n if (useSTD3) {\n hasError = true;\n processed += String.fromCodePoint(codePoint);\n } else {\n processed += String.fromCodePoint.apply(String, status[2]);\n }\n break;\n case \"disallowed_STD3_valid\":\n if (useSTD3) {\n hasError = true;\n }\n\n processed += String.fromCodePoint(codePoint);\n break;\n }\n }\n\n return {\n string: processed,\n error: hasError\n };\n}\n\nvar combiningMarksRegex = /[\\u0300-\\u036F\\u0483-\\u0489\\u0591-\\u05BD\\u05BF\\u05C1\\u05C2\\u05C4\\u05C5\\u05C7\\u0610-\\u061A\\u064B-\\u065F\\u0670\\u06D6-\\u06DC\\u06DF-\\u06E4\\u06E7\\u06E8\\u06EA-\\u06ED\\u0711\\u0730-\\u074A\\u07A6-\\u07B0\\u07EB-\\u07F3\\u0816-\\u0819\\u081B-\\u0823\\u0825-\\u0827\\u0829-\\u082D\\u0859-\\u085B\\u08E4-\\u0903\\u093A-\\u093C\\u093E-\\u094F\\u0951-\\u0957\\u0962\\u0963\\u0981-\\u0983\\u09BC\\u09BE-\\u09C4\\u09C7\\u09C8\\u09CB-\\u09CD\\u09D7\\u09E2\\u09E3\\u0A01-\\u0A03\\u0A3C\\u0A3E-\\u0A42\\u0A47\\u0A48\\u0A4B-\\u0A4D\\u0A51\\u0A70\\u0A71\\u0A75\\u0A81-\\u0A83\\u0ABC\\u0ABE-\\u0AC5\\u0AC7-\\u0AC9\\u0ACB-\\u0ACD\\u0AE2\\u0AE3\\u0B01-\\u0B03\\u0B3C\\u0B3E-\\u0B44\\u0B47\\u0B48\\u0B4B-\\u0B4D\\u0B56\\u0B57\\u0B62\\u0B63\\u0B82\\u0BBE-\\u0BC2\\u0BC6-\\u0BC8\\u0BCA-\\u0BCD\\u0BD7\\u0C00-\\u0C03\\u0C3E-\\u0C44\\u0C46-\\u0C48\\u0C4A-\\u0C4D\\u0C55\\u0C56\\u0C62\\u0C63\\u0C81-\\u0C83\\u0CBC\\u0CBE-\\u0CC4\\u0CC6-\\u0CC8\\u0CCA-\\u0CCD\\u0CD5\\u0CD6\\u0CE2\\u0CE3\\u0D01-\\u0D03\\u0D3E-\\u0D44\\u0D46-\\u0D48\\u0D4A-\\u0D4D\\u0D57\\u0D62\\u0D63\\u0D82\\u0D83\\u0DCA\\u0DCF-\\u0DD4\\u0DD6\\u0DD8-\\u0DDF\\u0DF2\\u0DF3\\u0E31\\u0E34-\\u0E3A\\u0E47-\\u0E4E\\u0EB1\\u0EB4-\\u0EB9\\u0EBB\\u0EBC\\u0EC8-\\u0ECD\\u0F18\\u0F19\\u0F35\\u0F37\\u0F39\\u0F3E\\u0F3F\\u0F71-\\u0F84\\u0F86\\u0F87\\u0F8D-\\u0F97\\u0F99-\\u0FBC\\u0FC6\\u102B-\\u103E\\u1056-\\u1059\\u105E-\\u1060\\u1062-\\u1064\\u1067-\\u106D\\u1071-\\u1074\\u1082-\\u108D\\u108F\\u109A-\\u109D\\u135D-\\u135F\\u1712-\\u1714\\u1732-\\u1734\\u1752\\u1753\\u1772\\u1773\\u17B4-\\u17D3\\u17DD\\u180B-\\u180D\\u18A9\\u1920-\\u192B\\u1930-\\u193B\\u19B0-\\u19C0\\u19C8\\u19C9\\u1A17-\\u1A1B\\u1A55-\\u1A5E\\u1A60-\\u1A7C\\u1A7F\\u1AB0-\\u1ABE\\u1B00-\\u1B04\\u1B34-\\u1B44\\u1B6B-\\u1B73\\u1B80-\\u1B82\\u1BA1-\\u1BAD\\u1BE6-\\u1BF3\\u1C24-\\u1C37\\u1CD0-\\u1CD2\\u1CD4-\\u1CE8\\u1CED\\u1CF2-\\u1CF4\\u1CF8\\u1CF9\\u1DC0-\\u1DF5\\u1DFC-\\u1DFF\\u20D0-\\u20F0\\u2CEF-\\u2CF1\\u2D7F\\u2DE0-\\u2DFF\\u302A-\\u302F\\u3099\\u309A\\uA66F-\\uA672\\uA674-\\uA67D\\uA69F\\uA6F0\\uA6F1\\uA802\\uA806\\uA80B\\uA823-\\uA827\\uA880\\uA881\\uA8B4-\\uA8C4\\uA8E0-\\uA8F1\\uA926-\\uA92D\\uA947-\\uA953\\uA980-\\uA983\\uA9B3-\\uA9C0\\uA9E5\\uAA29-\\uAA36\\uAA43\\uAA4C\\uAA4D\\uAA7B-\\uAA7D\\uAAB0\\uAAB2-\\uAAB4\\uAAB7\\uAAB8\\uAABE\\uAABF\\uAAC1\\uAAEB-\\uAAEF\\uAAF5\\uAAF6\\uABE3-\\uABEA\\uABEC\\uABED\\uFB1E\\uFE00-\\uFE0F\\uFE20-\\uFE2D]|\\uD800[\\uDDFD\\uDEE0\\uDF76-\\uDF7A]|\\uD802[\\uDE01-\\uDE03\\uDE05\\uDE06\\uDE0C-\\uDE0F\\uDE38-\\uDE3A\\uDE3F\\uDEE5\\uDEE6]|\\uD804[\\uDC00-\\uDC02\\uDC38-\\uDC46\\uDC7F-\\uDC82\\uDCB0-\\uDCBA\\uDD00-\\uDD02\\uDD27-\\uDD34\\uDD73\\uDD80-\\uDD82\\uDDB3-\\uDDC0\\uDE2C-\\uDE37\\uDEDF-\\uDEEA\\uDF01-\\uDF03\\uDF3C\\uDF3E-\\uDF44\\uDF47\\uDF48\\uDF4B-\\uDF4D\\uDF57\\uDF62\\uDF63\\uDF66-\\uDF6C\\uDF70-\\uDF74]|\\uD805[\\uDCB0-\\uDCC3\\uDDAF-\\uDDB5\\uDDB8-\\uDDC0\\uDE30-\\uDE40\\uDEAB-\\uDEB7]|\\uD81A[\\uDEF0-\\uDEF4\\uDF30-\\uDF36]|\\uD81B[\\uDF51-\\uDF7E\\uDF8F-\\uDF92]|\\uD82F[\\uDC9D\\uDC9E]|\\uD834[\\uDD65-\\uDD69\\uDD6D-\\uDD72\\uDD7B-\\uDD82\\uDD85-\\uDD8B\\uDDAA-\\uDDAD\\uDE42-\\uDE44]|\\uD83A[\\uDCD0-\\uDCD6]|\\uDB40[\\uDD00-\\uDDEF]/;\n\nfunction validateLabel(label, processing_option) {\n if (label.substr(0, 4) === \"xn--\") {\n label = punycode.toUnicode(label);\n processing_option = PROCESSING_OPTIONS.NONTRANSITIONAL;\n }\n\n var error = false;\n\n if (normalize(label) !== label ||\n (label[3] === \"-\" && label[4] === \"-\") ||\n label[0] === \"-\" || label[label.length - 1] === \"-\" ||\n label.indexOf(\".\") !== -1 ||\n label.search(combiningMarksRegex) === 0) {\n error = true;\n }\n\n var len = countSymbols(label);\n for (var i = 0; i < len; ++i) {\n var status = findStatus(label.codePointAt(i));\n if ((processing === PROCESSING_OPTIONS.TRANSITIONAL && status[1] !== \"valid\") ||\n (processing === PROCESSING_OPTIONS.NONTRANSITIONAL &&\n status[1] !== \"valid\" && status[1] !== \"deviation\")) {\n error = true;\n break;\n }\n }\n\n return {\n label: label,\n error: error\n };\n}\n\nfunction processing(domain_name, useSTD3, processing_option) {\n var result = mapChars(domain_name, useSTD3, processing_option);\n result.string = normalize(result.string);\n\n var labels = result.string.split(\".\");\n for (var i = 0; i < labels.length; ++i) {\n try {\n var validation = validateLabel(labels[i]);\n labels[i] = validation.label;\n result.error = result.error || validation.error;\n } catch(e) {\n result.error = true;\n }\n }\n\n return {\n string: labels.join(\".\"),\n error: result.error\n };\n}\n\nmodule.exports.toASCII = function(domain_name, useSTD3, processing_option, verifyDnsLength) {\n var result = processing(domain_name, useSTD3, processing_option);\n var labels = result.string.split(\".\");\n labels = labels.map(function(l) {\n try {\n return punycode.toASCII(l);\n } catch(e) {\n result.error = true;\n return l;\n }\n });\n\n if (verifyDnsLength) {\n var total = labels.slice(0, labels.length - 1).join(\".\").length;\n if (total.length > 253 || total.length === 0) {\n result.error = true;\n }\n\n for (var i=0; i < labels.length; ++i) {\n if (labels.length > 63 || labels.length === 0) {\n result.error = true;\n break;\n }\n }\n }\n\n if (result.error) return null;\n return labels.join(\".\");\n};\n\nmodule.exports.toUnicode = function(domain_name, useSTD3) {\n var result = processing(domain_name, useSTD3, PROCESSING_OPTIONS.NONTRANSITIONAL);\n\n return {\n domain: result.string,\n error: result.error\n };\n};\n\nmodule.exports.PROCESSING_OPTIONS = PROCESSING_OPTIONS;\n", "\"use strict\";\r\nconst punycode = require(\"punycode\");\r\nconst tr46 = require(\"tr46\");\r\n\r\nconst specialSchemes = {\r\n ftp: 21,\r\n file: null,\r\n gopher: 70,\r\n http: 80,\r\n https: 443,\r\n ws: 80,\r\n wss: 443\r\n};\r\n\r\nconst failure = Symbol(\"failure\");\r\n\r\nfunction countSymbols(str) {\r\n return punycode.ucs2.decode(str).length;\r\n}\r\n\r\nfunction at(input, idx) {\r\n const c = input[idx];\r\n return isNaN(c) ? undefined : String.fromCodePoint(c);\r\n}\r\n\r\nfunction isASCIIDigit(c) {\r\n return c >= 0x30 && c <= 0x39;\r\n}\r\n\r\nfunction isASCIIAlpha(c) {\r\n return (c >= 0x41 && c <= 0x5A) || (c >= 0x61 && c <= 0x7A);\r\n}\r\n\r\nfunction isASCIIAlphanumeric(c) {\r\n return isASCIIAlpha(c) || isASCIIDigit(c);\r\n}\r\n\r\nfunction isASCIIHex(c) {\r\n return isASCIIDigit(c) || (c >= 0x41 && c <= 0x46) || (c >= 0x61 && c <= 0x66);\r\n}\r\n\r\nfunction isSingleDot(buffer) {\r\n return buffer === \".\" || buffer.toLowerCase() === \"%2e\";\r\n}\r\n\r\nfunction isDoubleDot(buffer) {\r\n buffer = buffer.toLowerCase();\r\n return buffer === \"..\" || buffer === \"%2e.\" || buffer === \".%2e\" || buffer === \"%2e%2e\";\r\n}\r\n\r\nfunction isWindowsDriveLetterCodePoints(cp1, cp2) {\r\n return isASCIIAlpha(cp1) && (cp2 === 58 || cp2 === 124);\r\n}\r\n\r\nfunction isWindowsDriveLetterString(string) {\r\n return string.length === 2 && isASCIIAlpha(string.codePointAt(0)) && (string[1] === \":\" || string[1] === \"|\");\r\n}\r\n\r\nfunction isNormalizedWindowsDriveLetterString(string) {\r\n return string.length === 2 && isASCIIAlpha(string.codePointAt(0)) && string[1] === \":\";\r\n}\r\n\r\nfunction containsForbiddenHostCodePoint(string) {\r\n return string.search(/\\u0000|\\u0009|\\u000A|\\u000D|\\u0020|#|%|\\/|:|\\?|@|\\[|\\\\|\\]/) !== -1;\r\n}\r\n\r\nfunction containsForbiddenHostCodePointExcludingPercent(string) {\r\n return string.search(/\\u0000|\\u0009|\\u000A|\\u000D|\\u0020|#|\\/|:|\\?|@|\\[|\\\\|\\]/) !== -1;\r\n}\r\n\r\nfunction isSpecialScheme(scheme) {\r\n return specialSchemes[scheme] !== undefined;\r\n}\r\n\r\nfunction isSpecial(url) {\r\n return isSpecialScheme(url.scheme);\r\n}\r\n\r\nfunction defaultPort(scheme) {\r\n return specialSchemes[scheme];\r\n}\r\n\r\nfunction percentEncode(c) {\r\n let hex = c.toString(16).toUpperCase();\r\n if (hex.length === 1) {\r\n hex = \"0\" + hex;\r\n }\r\n\r\n return \"%\" + hex;\r\n}\r\n\r\nfunction utf8PercentEncode(c) {\r\n const buf = new Buffer(c);\r\n\r\n let str = \"\";\r\n\r\n for (let i = 0; i < buf.length; ++i) {\r\n str += percentEncode(buf[i]);\r\n }\r\n\r\n return str;\r\n}\r\n\r\nfunction utf8PercentDecode(str) {\r\n const input = new Buffer(str);\r\n const output = [];\r\n for (let i = 0; i < input.length; ++i) {\r\n if (input[i] !== 37) {\r\n output.push(input[i]);\r\n } else if (input[i] === 37 && isASCIIHex(input[i + 1]) && isASCIIHex(input[i + 2])) {\r\n output.push(parseInt(input.slice(i + 1, i + 3).toString(), 16));\r\n i += 2;\r\n } else {\r\n output.push(input[i]);\r\n }\r\n }\r\n return new Buffer(output).toString();\r\n}\r\n\r\nfunction isC0ControlPercentEncode(c) {\r\n return c <= 0x1F || c > 0x7E;\r\n}\r\n\r\nconst extraPathPercentEncodeSet = new Set([32, 34, 35, 60, 62, 63, 96, 123, 125]);\r\nfunction isPathPercentEncode(c) {\r\n return isC0ControlPercentEncode(c) || extraPathPercentEncodeSet.has(c);\r\n}\r\n\r\nconst extraUserinfoPercentEncodeSet =\r\n new Set([47, 58, 59, 61, 64, 91, 92, 93, 94, 124]);\r\nfunction isUserinfoPercentEncode(c) {\r\n return isPathPercentEncode(c) || extraUserinfoPercentEncodeSet.has(c);\r\n}\r\n\r\nfunction percentEncodeChar(c, encodeSetPredicate) {\r\n const cStr = String.fromCodePoint(c);\r\n\r\n if (encodeSetPredicate(c)) {\r\n return utf8PercentEncode(cStr);\r\n }\r\n\r\n return cStr;\r\n}\r\n\r\nfunction parseIPv4Number(input) {\r\n let R = 10;\r\n\r\n if (input.length >= 2 && input.charAt(0) === \"0\" && input.charAt(1).toLowerCase() === \"x\") {\r\n input = input.substring(2);\r\n R = 16;\r\n } else if (input.length >= 2 && input.charAt(0) === \"0\") {\r\n input = input.substring(1);\r\n R = 8;\r\n }\r\n\r\n if (input === \"\") {\r\n return 0;\r\n }\r\n\r\n const regex = R === 10 ? /[^0-9]/ : (R === 16 ? /[^0-9A-Fa-f]/ : /[^0-7]/);\r\n if (regex.test(input)) {\r\n return failure;\r\n }\r\n\r\n return parseInt(input, R);\r\n}\r\n\r\nfunction parseIPv4(input) {\r\n const parts = input.split(\".\");\r\n if (parts[parts.length - 1] === \"\") {\r\n if (parts.length > 1) {\r\n parts.pop();\r\n }\r\n }\r\n\r\n if (parts.length > 4) {\r\n return input;\r\n }\r\n\r\n const numbers = [];\r\n for (const part of parts) {\r\n if (part === \"\") {\r\n return input;\r\n }\r\n const n = parseIPv4Number(part);\r\n if (n === failure) {\r\n return input;\r\n }\r\n\r\n numbers.push(n);\r\n }\r\n\r\n for (let i = 0; i < numbers.length - 1; ++i) {\r\n if (numbers[i] > 255) {\r\n return failure;\r\n }\r\n }\r\n if (numbers[numbers.length - 1] >= Math.pow(256, 5 - numbers.length)) {\r\n return failure;\r\n }\r\n\r\n let ipv4 = numbers.pop();\r\n let counter = 0;\r\n\r\n for (const n of numbers) {\r\n ipv4 += n * Math.pow(256, 3 - counter);\r\n ++counter;\r\n }\r\n\r\n return ipv4;\r\n}\r\n\r\nfunction serializeIPv4(address) {\r\n let output = \"\";\r\n let n = address;\r\n\r\n for (let i = 1; i <= 4; ++i) {\r\n output = String(n % 256) + output;\r\n if (i !== 4) {\r\n output = \".\" + output;\r\n }\r\n n = Math.floor(n / 256);\r\n }\r\n\r\n return output;\r\n}\r\n\r\nfunction parseIPv6(input) {\r\n const address = [0, 0, 0, 0, 0, 0, 0, 0];\r\n let pieceIndex = 0;\r\n let compress = null;\r\n let pointer = 0;\r\n\r\n input = punycode.ucs2.decode(input);\r\n\r\n if (input[pointer] === 58) {\r\n if (input[pointer + 1] !== 58) {\r\n return failure;\r\n }\r\n\r\n pointer += 2;\r\n ++pieceIndex;\r\n compress = pieceIndex;\r\n }\r\n\r\n while (pointer < input.length) {\r\n if (pieceIndex === 8) {\r\n return failure;\r\n }\r\n\r\n if (input[pointer] === 58) {\r\n if (compress !== null) {\r\n return failure;\r\n }\r\n ++pointer;\r\n ++pieceIndex;\r\n compress = pieceIndex;\r\n continue;\r\n }\r\n\r\n let value = 0;\r\n let length = 0;\r\n\r\n while (length < 4 && isASCIIHex(input[pointer])) {\r\n value = value * 0x10 + parseInt(at(input, pointer), 16);\r\n ++pointer;\r\n ++length;\r\n }\r\n\r\n if (input[pointer] === 46) {\r\n if (length === 0) {\r\n return failure;\r\n }\r\n\r\n pointer -= length;\r\n\r\n if (pieceIndex > 6) {\r\n return failure;\r\n }\r\n\r\n let numbersSeen = 0;\r\n\r\n while (input[pointer] !== undefined) {\r\n let ipv4Piece = null;\r\n\r\n if (numbersSeen > 0) {\r\n if (input[pointer] === 46 && numbersSeen < 4) {\r\n ++pointer;\r\n } else {\r\n return failure;\r\n }\r\n }\r\n\r\n if (!isASCIIDigit(input[pointer])) {\r\n return failure;\r\n }\r\n\r\n while (isASCIIDigit(input[pointer])) {\r\n const number = parseInt(at(input, pointer));\r\n if (ipv4Piece === null) {\r\n ipv4Piece = number;\r\n } else if (ipv4Piece === 0) {\r\n return failure;\r\n } else {\r\n ipv4Piece = ipv4Piece * 10 + number;\r\n }\r\n if (ipv4Piece > 255) {\r\n return failure;\r\n }\r\n ++pointer;\r\n }\r\n\r\n address[pieceIndex] = address[pieceIndex] * 0x100 + ipv4Piece;\r\n\r\n ++numbersSeen;\r\n\r\n if (numbersSeen === 2 || numbersSeen === 4) {\r\n ++pieceIndex;\r\n }\r\n }\r\n\r\n if (numbersSeen !== 4) {\r\n return failure;\r\n }\r\n\r\n break;\r\n } else if (input[pointer] === 58) {\r\n ++pointer;\r\n if (input[pointer] === undefined) {\r\n return failure;\r\n }\r\n } else if (input[pointer] !== undefined) {\r\n return failure;\r\n }\r\n\r\n address[pieceIndex] = value;\r\n ++pieceIndex;\r\n }\r\n\r\n if (compress !== null) {\r\n let swaps = pieceIndex - compress;\r\n pieceIndex = 7;\r\n while (pieceIndex !== 0 && swaps > 0) {\r\n const temp = address[compress + swaps - 1];\r\n address[compress + swaps - 1] = address[pieceIndex];\r\n address[pieceIndex] = temp;\r\n --pieceIndex;\r\n --swaps;\r\n }\r\n } else if (compress === null && pieceIndex !== 8) {\r\n return failure;\r\n }\r\n\r\n return address;\r\n}\r\n\r\nfunction serializeIPv6(address) {\r\n let output = \"\";\r\n const seqResult = findLongestZeroSequence(address);\r\n const compress = seqResult.idx;\r\n let ignore0 = false;\r\n\r\n for (let pieceIndex = 0; pieceIndex <= 7; ++pieceIndex) {\r\n if (ignore0 && address[pieceIndex] === 0) {\r\n continue;\r\n } else if (ignore0) {\r\n ignore0 = false;\r\n }\r\n\r\n if (compress === pieceIndex) {\r\n const separator = pieceIndex === 0 ? \"::\" : \":\";\r\n output += separator;\r\n ignore0 = true;\r\n continue;\r\n }\r\n\r\n output += address[pieceIndex].toString(16);\r\n\r\n if (pieceIndex !== 7) {\r\n output += \":\";\r\n }\r\n }\r\n\r\n return output;\r\n}\r\n\r\nfunction parseHost(input, isSpecialArg) {\r\n if (input[0] === \"[\") {\r\n if (input[input.length - 1] !== \"]\") {\r\n return failure;\r\n }\r\n\r\n return parseIPv6(input.substring(1, input.length - 1));\r\n }\r\n\r\n if (!isSpecialArg) {\r\n return parseOpaqueHost(input);\r\n }\r\n\r\n const domain = utf8PercentDecode(input);\r\n const asciiDomain = tr46.toASCII(domain, false, tr46.PROCESSING_OPTIONS.NONTRANSITIONAL, false);\r\n if (asciiDomain === null) {\r\n return failure;\r\n }\r\n\r\n if (containsForbiddenHostCodePoint(asciiDomain)) {\r\n return failure;\r\n }\r\n\r\n const ipv4Host = parseIPv4(asciiDomain);\r\n if (typeof ipv4Host === \"number\" || ipv4Host === failure) {\r\n return ipv4Host;\r\n }\r\n\r\n return asciiDomain;\r\n}\r\n\r\nfunction parseOpaqueHost(input) {\r\n if (containsForbiddenHostCodePointExcludingPercent(input)) {\r\n return failure;\r\n }\r\n\r\n let output = \"\";\r\n const decoded = punycode.ucs2.decode(input);\r\n for (let i = 0; i < decoded.length; ++i) {\r\n output += percentEncodeChar(decoded[i], isC0ControlPercentEncode);\r\n }\r\n return output;\r\n}\r\n\r\nfunction findLongestZeroSequence(arr) {\r\n let maxIdx = null;\r\n let maxLen = 1; // only find elements > 1\r\n let currStart = null;\r\n let currLen = 0;\r\n\r\n for (let i = 0; i < arr.length; ++i) {\r\n if (arr[i] !== 0) {\r\n if (currLen > maxLen) {\r\n maxIdx = currStart;\r\n maxLen = currLen;\r\n }\r\n\r\n currStart = null;\r\n currLen = 0;\r\n } else {\r\n if (currStart === null) {\r\n currStart = i;\r\n }\r\n ++currLen;\r\n }\r\n }\r\n\r\n // if trailing zeros\r\n if (currLen > maxLen) {\r\n maxIdx = currStart;\r\n maxLen = currLen;\r\n }\r\n\r\n return {\r\n idx: maxIdx,\r\n len: maxLen\r\n };\r\n}\r\n\r\nfunction serializeHost(host) {\r\n if (typeof host === \"number\") {\r\n return serializeIPv4(host);\r\n }\r\n\r\n // IPv6 serializer\r\n if (host instanceof Array) {\r\n return \"[\" + serializeIPv6(host) + \"]\";\r\n }\r\n\r\n return host;\r\n}\r\n\r\nfunction trimControlChars(url) {\r\n return url.replace(/^[\\u0000-\\u001F\\u0020]+|[\\u0000-\\u001F\\u0020]+$/g, \"\");\r\n}\r\n\r\nfunction trimTabAndNewline(url) {\r\n return url.replace(/\\u0009|\\u000A|\\u000D/g, \"\");\r\n}\r\n\r\nfunction shortenPath(url) {\r\n const path = url.path;\r\n if (path.length === 0) {\r\n return;\r\n }\r\n if (url.scheme === \"file\" && path.length === 1 && isNormalizedWindowsDriveLetter(path[0])) {\r\n return;\r\n }\r\n\r\n path.pop();\r\n}\r\n\r\nfunction includesCredentials(url) {\r\n return url.username !== \"\" || url.password !== \"\";\r\n}\r\n\r\nfunction cannotHaveAUsernamePasswordPort(url) {\r\n return url.host === null || url.host === \"\" || url.cannotBeABaseURL || url.scheme === \"file\";\r\n}\r\n\r\nfunction isNormalizedWindowsDriveLetter(string) {\r\n return /^[A-Za-z]:$/.test(string);\r\n}\r\n\r\nfunction URLStateMachine(input, base, encodingOverride, url, stateOverride) {\r\n this.pointer = 0;\r\n this.input = input;\r\n this.base = base || null;\r\n this.encodingOverride = encodingOverride || \"utf-8\";\r\n this.stateOverride = stateOverride;\r\n this.url = url;\r\n this.failure = false;\r\n this.parseError = false;\r\n\r\n if (!this.url) {\r\n this.url = {\r\n scheme: \"\",\r\n username: \"\",\r\n password: \"\",\r\n host: null,\r\n port: null,\r\n path: [],\r\n query: null,\r\n fragment: null,\r\n\r\n cannotBeABaseURL: false\r\n };\r\n\r\n const res = trimControlChars(this.input);\r\n if (res !== this.input) {\r\n this.parseError = true;\r\n }\r\n this.input = res;\r\n }\r\n\r\n const res = trimTabAndNewline(this.input);\r\n if (res !== this.input) {\r\n this.parseError = true;\r\n }\r\n this.input = res;\r\n\r\n this.state = stateOverride || \"scheme start\";\r\n\r\n this.buffer = \"\";\r\n this.atFlag = false;\r\n this.arrFlag = false;\r\n this.passwordTokenSeenFlag = false;\r\n\r\n this.input = punycode.ucs2.decode(this.input);\r\n\r\n for (; this.pointer <= this.input.length; ++this.pointer) {\r\n const c = this.input[this.pointer];\r\n const cStr = isNaN(c) ? undefined : String.fromCodePoint(c);\r\n\r\n // exec state machine\r\n const ret = this[\"parse \" + this.state](c, cStr);\r\n if (!ret) {\r\n break; // terminate algorithm\r\n } else if (ret === failure) {\r\n this.failure = true;\r\n break;\r\n }\r\n }\r\n}\r\n\r\nURLStateMachine.prototype[\"parse scheme start\"] = function parseSchemeStart(c, cStr) {\r\n if (isASCIIAlpha(c)) {\r\n this.buffer += cStr.toLowerCase();\r\n this.state = \"scheme\";\r\n } else if (!this.stateOverride) {\r\n this.state = \"no scheme\";\r\n --this.pointer;\r\n } else {\r\n this.parseError = true;\r\n return failure;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse scheme\"] = function parseScheme(c, cStr) {\r\n if (isASCIIAlphanumeric(c) || c === 43 || c === 45 || c === 46) {\r\n this.buffer += cStr.toLowerCase();\r\n } else if (c === 58) {\r\n if (this.stateOverride) {\r\n if (isSpecial(this.url) && !isSpecialScheme(this.buffer)) {\r\n return false;\r\n }\r\n\r\n if (!isSpecial(this.url) && isSpecialScheme(this.buffer)) {\r\n return false;\r\n }\r\n\r\n if ((includesCredentials(this.url) || this.url.port !== null) && this.buffer === \"file\") {\r\n return false;\r\n }\r\n\r\n if (this.url.scheme === \"file\" && (this.url.host === \"\" || this.url.host === null)) {\r\n return false;\r\n }\r\n }\r\n this.url.scheme = this.buffer;\r\n this.buffer = \"\";\r\n if (this.stateOverride) {\r\n return false;\r\n }\r\n if (this.url.scheme === \"file\") {\r\n if (this.input[this.pointer + 1] !== 47 || this.input[this.pointer + 2] !== 47) {\r\n this.parseError = true;\r\n }\r\n this.state = \"file\";\r\n } else if (isSpecial(this.url) && this.base !== null && this.base.scheme === this.url.scheme) {\r\n this.state = \"special relative or authority\";\r\n } else if (isSpecial(this.url)) {\r\n this.state = \"special authority slashes\";\r\n } else if (this.input[this.pointer + 1] === 47) {\r\n this.state = \"path or authority\";\r\n ++this.pointer;\r\n } else {\r\n this.url.cannotBeABaseURL = true;\r\n this.url.path.push(\"\");\r\n this.state = \"cannot-be-a-base-URL path\";\r\n }\r\n } else if (!this.stateOverride) {\r\n this.buffer = \"\";\r\n this.state = \"no scheme\";\r\n this.pointer = -1;\r\n } else {\r\n this.parseError = true;\r\n return failure;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse no scheme\"] = function parseNoScheme(c) {\r\n if (this.base === null || (this.base.cannotBeABaseURL && c !== 35)) {\r\n return failure;\r\n } else if (this.base.cannotBeABaseURL && c === 35) {\r\n this.url.scheme = this.base.scheme;\r\n this.url.path = this.base.path.slice();\r\n this.url.query = this.base.query;\r\n this.url.fragment = \"\";\r\n this.url.cannotBeABaseURL = true;\r\n this.state = \"fragment\";\r\n } else if (this.base.scheme === \"file\") {\r\n this.state = \"file\";\r\n --this.pointer;\r\n } else {\r\n this.state = \"relative\";\r\n --this.pointer;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse special relative or authority\"] = function parseSpecialRelativeOrAuthority(c) {\r\n if (c === 47 && this.input[this.pointer + 1] === 47) {\r\n this.state = \"special authority ignore slashes\";\r\n ++this.pointer;\r\n } else {\r\n this.parseError = true;\r\n this.state = \"relative\";\r\n --this.pointer;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse path or authority\"] = function parsePathOrAuthority(c) {\r\n if (c === 47) {\r\n this.state = \"authority\";\r\n } else {\r\n this.state = \"path\";\r\n --this.pointer;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse relative\"] = function parseRelative(c) {\r\n this.url.scheme = this.base.scheme;\r\n if (isNaN(c)) {\r\n this.url.username = this.base.username;\r\n this.url.password = this.base.password;\r\n this.url.host = this.base.host;\r\n this.url.port = this.base.port;\r\n this.url.path = this.base.path.slice();\r\n this.url.query = this.base.query;\r\n } else if (c === 47) {\r\n this.state = \"relative slash\";\r\n } else if (c === 63) {\r\n this.url.username = this.base.username;\r\n this.url.password = this.base.password;\r\n this.url.host = this.base.host;\r\n this.url.port = this.base.port;\r\n this.url.path = this.base.path.slice();\r\n this.url.query = \"\";\r\n this.state = \"query\";\r\n } else if (c === 35) {\r\n this.url.username = this.base.username;\r\n this.url.password = this.base.password;\r\n this.url.host = this.base.host;\r\n this.url.port = this.base.port;\r\n this.url.path = this.base.path.slice();\r\n this.url.query = this.base.query;\r\n this.url.fragment = \"\";\r\n this.state = \"fragment\";\r\n } else if (isSpecial(this.url) && c === 92) {\r\n this.parseError = true;\r\n this.state = \"relative slash\";\r\n } else {\r\n this.url.username = this.base.username;\r\n this.url.password = this.base.password;\r\n this.url.host = this.base.host;\r\n this.url.port = this.base.port;\r\n this.url.path = this.base.path.slice(0, this.base.path.length - 1);\r\n\r\n this.state = \"path\";\r\n --this.pointer;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse relative slash\"] = function parseRelativeSlash(c) {\r\n if (isSpecial(this.url) && (c === 47 || c === 92)) {\r\n if (c === 92) {\r\n this.parseError = true;\r\n }\r\n this.state = \"special authority ignore slashes\";\r\n } else if (c === 47) {\r\n this.state = \"authority\";\r\n } else {\r\n this.url.username = this.base.username;\r\n this.url.password = this.base.password;\r\n this.url.host = this.base.host;\r\n this.url.port = this.base.port;\r\n this.state = \"path\";\r\n --this.pointer;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse special authority slashes\"] = function parseSpecialAuthoritySlashes(c) {\r\n if (c === 47 && this.input[this.pointer + 1] === 47) {\r\n this.state = \"special authority ignore slashes\";\r\n ++this.pointer;\r\n } else {\r\n this.parseError = true;\r\n this.state = \"special authority ignore slashes\";\r\n --this.pointer;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse special authority ignore slashes\"] = function parseSpecialAuthorityIgnoreSlashes(c) {\r\n if (c !== 47 && c !== 92) {\r\n this.state = \"authority\";\r\n --this.pointer;\r\n } else {\r\n this.parseError = true;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse authority\"] = function parseAuthority(c, cStr) {\r\n if (c === 64) {\r\n this.parseError = true;\r\n if (this.atFlag) {\r\n this.buffer = \"%40\" + this.buffer;\r\n }\r\n this.atFlag = true;\r\n\r\n // careful, this is based on buffer and has its own pointer (this.pointer != pointer) and inner chars\r\n const len = countSymbols(this.buffer);\r\n for (let pointer = 0; pointer < len; ++pointer) {\r\n const codePoint = this.buffer.codePointAt(pointer);\r\n\r\n if (codePoint === 58 && !this.passwordTokenSeenFlag) {\r\n this.passwordTokenSeenFlag = true;\r\n continue;\r\n }\r\n const encodedCodePoints = percentEncodeChar(codePoint, isUserinfoPercentEncode);\r\n if (this.passwordTokenSeenFlag) {\r\n this.url.password += encodedCodePoints;\r\n } else {\r\n this.url.username += encodedCodePoints;\r\n }\r\n }\r\n this.buffer = \"\";\r\n } else if (isNaN(c) || c === 47 || c === 63 || c === 35 ||\r\n (isSpecial(this.url) && c === 92)) {\r\n if (this.atFlag && this.buffer === \"\") {\r\n this.parseError = true;\r\n return failure;\r\n }\r\n this.pointer -= countSymbols(this.buffer) + 1;\r\n this.buffer = \"\";\r\n this.state = \"host\";\r\n } else {\r\n this.buffer += cStr;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse hostname\"] =\r\nURLStateMachine.prototype[\"parse host\"] = function parseHostName(c, cStr) {\r\n if (this.stateOverride && this.url.scheme === \"file\") {\r\n --this.pointer;\r\n this.state = \"file host\";\r\n } else if (c === 58 && !this.arrFlag) {\r\n if (this.buffer === \"\") {\r\n this.parseError = true;\r\n return failure;\r\n }\r\n\r\n const host = parseHost(this.buffer, isSpecial(this.url));\r\n if (host === failure) {\r\n return failure;\r\n }\r\n\r\n this.url.host = host;\r\n this.buffer = \"\";\r\n this.state = \"port\";\r\n if (this.stateOverride === \"hostname\") {\r\n return false;\r\n }\r\n } else if (isNaN(c) || c === 47 || c === 63 || c === 35 ||\r\n (isSpecial(this.url) && c === 92)) {\r\n --this.pointer;\r\n if (isSpecial(this.url) && this.buffer === \"\") {\r\n this.parseError = true;\r\n return failure;\r\n } else if (this.stateOverride && this.buffer === \"\" &&\r\n (includesCredentials(this.url) || this.url.port !== null)) {\r\n this.parseError = true;\r\n return false;\r\n }\r\n\r\n const host = parseHost(this.buffer, isSpecial(this.url));\r\n if (host === failure) {\r\n return failure;\r\n }\r\n\r\n this.url.host = host;\r\n this.buffer = \"\";\r\n this.state = \"path start\";\r\n if (this.stateOverride) {\r\n return false;\r\n }\r\n } else {\r\n if (c === 91) {\r\n this.arrFlag = true;\r\n } else if (c === 93) {\r\n this.arrFlag = false;\r\n }\r\n this.buffer += cStr;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse port\"] = function parsePort(c, cStr) {\r\n if (isASCIIDigit(c)) {\r\n this.buffer += cStr;\r\n } else if (isNaN(c) || c === 47 || c === 63 || c === 35 ||\r\n (isSpecial(this.url) && c === 92) ||\r\n this.stateOverride) {\r\n if (this.buffer !== \"\") {\r\n const port = parseInt(this.buffer);\r\n if (port > Math.pow(2, 16) - 1) {\r\n this.parseError = true;\r\n return failure;\r\n }\r\n this.url.port = port === defaultPort(this.url.scheme) ? null : port;\r\n this.buffer = \"\";\r\n }\r\n if (this.stateOverride) {\r\n return false;\r\n }\r\n this.state = \"path start\";\r\n --this.pointer;\r\n } else {\r\n this.parseError = true;\r\n return failure;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nconst fileOtherwiseCodePoints = new Set([47, 92, 63, 35]);\r\n\r\nURLStateMachine.prototype[\"parse file\"] = function parseFile(c) {\r\n this.url.scheme = \"file\";\r\n\r\n if (c === 47 || c === 92) {\r\n if (c === 92) {\r\n this.parseError = true;\r\n }\r\n this.state = \"file slash\";\r\n } else if (this.base !== null && this.base.scheme === \"file\") {\r\n if (isNaN(c)) {\r\n this.url.host = this.base.host;\r\n this.url.path = this.base.path.slice();\r\n this.url.query = this.base.query;\r\n } else if (c === 63) {\r\n this.url.host = this.base.host;\r\n this.url.path = this.base.path.slice();\r\n this.url.query = \"\";\r\n this.state = \"query\";\r\n } else if (c === 35) {\r\n this.url.host = this.base.host;\r\n this.url.path = this.base.path.slice();\r\n this.url.query = this.base.query;\r\n this.url.fragment = \"\";\r\n this.state = \"fragment\";\r\n } else {\r\n if (this.input.length - this.pointer - 1 === 0 || // remaining consists of 0 code points\r\n !isWindowsDriveLetterCodePoints(c, this.input[this.pointer + 1]) ||\r\n (this.input.length - this.pointer - 1 >= 2 && // remaining has at least 2 code points\r\n !fileOtherwiseCodePoints.has(this.input[this.pointer + 2]))) {\r\n this.url.host = this.base.host;\r\n this.url.path = this.base.path.slice();\r\n shortenPath(this.url);\r\n } else {\r\n this.parseError = true;\r\n }\r\n\r\n this.state = \"path\";\r\n --this.pointer;\r\n }\r\n } else {\r\n this.state = \"path\";\r\n --this.pointer;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse file slash\"] = function parseFileSlash(c) {\r\n if (c === 47 || c === 92) {\r\n if (c === 92) {\r\n this.parseError = true;\r\n }\r\n this.state = \"file host\";\r\n } else {\r\n if (this.base !== null && this.base.scheme === \"file\") {\r\n if (isNormalizedWindowsDriveLetterString(this.base.path[0])) {\r\n this.url.path.push(this.base.path[0]);\r\n } else {\r\n this.url.host = this.base.host;\r\n }\r\n }\r\n this.state = \"path\";\r\n --this.pointer;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse file host\"] = function parseFileHost(c, cStr) {\r\n if (isNaN(c) || c === 47 || c === 92 || c === 63 || c === 35) {\r\n --this.pointer;\r\n if (!this.stateOverride && isWindowsDriveLetterString(this.buffer)) {\r\n this.parseError = true;\r\n this.state = \"path\";\r\n } else if (this.buffer === \"\") {\r\n this.url.host = \"\";\r\n if (this.stateOverride) {\r\n return false;\r\n }\r\n this.state = \"path start\";\r\n } else {\r\n let host = parseHost(this.buffer, isSpecial(this.url));\r\n if (host === failure) {\r\n return failure;\r\n }\r\n if (host === \"localhost\") {\r\n host = \"\";\r\n }\r\n this.url.host = host;\r\n\r\n if (this.stateOverride) {\r\n return false;\r\n }\r\n\r\n this.buffer = \"\";\r\n this.state = \"path start\";\r\n }\r\n } else {\r\n this.buffer += cStr;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse path start\"] = function parsePathStart(c) {\r\n if (isSpecial(this.url)) {\r\n if (c === 92) {\r\n this.parseError = true;\r\n }\r\n this.state = \"path\";\r\n\r\n if (c !== 47 && c !== 92) {\r\n --this.pointer;\r\n }\r\n } else if (!this.stateOverride && c === 63) {\r\n this.url.query = \"\";\r\n this.state = \"query\";\r\n } else if (!this.stateOverride && c === 35) {\r\n this.url.fragment = \"\";\r\n this.state = \"fragment\";\r\n } else if (c !== undefined) {\r\n this.state = \"path\";\r\n if (c !== 47) {\r\n --this.pointer;\r\n }\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse path\"] = function parsePath(c) {\r\n if (isNaN(c) || c === 47 || (isSpecial(this.url) && c === 92) ||\r\n (!this.stateOverride && (c === 63 || c === 35))) {\r\n if (isSpecial(this.url) && c === 92) {\r\n this.parseError = true;\r\n }\r\n\r\n if (isDoubleDot(this.buffer)) {\r\n shortenPath(this.url);\r\n if (c !== 47 && !(isSpecial(this.url) && c === 92)) {\r\n this.url.path.push(\"\");\r\n }\r\n } else if (isSingleDot(this.buffer) && c !== 47 &&\r\n !(isSpecial(this.url) && c === 92)) {\r\n this.url.path.push(\"\");\r\n } else if (!isSingleDot(this.buffer)) {\r\n if (this.url.scheme === \"file\" && this.url.path.length === 0 && isWindowsDriveLetterString(this.buffer)) {\r\n if (this.url.host !== \"\" && this.url.host !== null) {\r\n this.parseError = true;\r\n this.url.host = \"\";\r\n }\r\n this.buffer = this.buffer[0] + \":\";\r\n }\r\n this.url.path.push(this.buffer);\r\n }\r\n this.buffer = \"\";\r\n if (this.url.scheme === \"file\" && (c === undefined || c === 63 || c === 35)) {\r\n while (this.url.path.length > 1 && this.url.path[0] === \"\") {\r\n this.parseError = true;\r\n this.url.path.shift();\r\n }\r\n }\r\n if (c === 63) {\r\n this.url.query = \"\";\r\n this.state = \"query\";\r\n }\r\n if (c === 35) {\r\n this.url.fragment = \"\";\r\n this.state = \"fragment\";\r\n }\r\n } else {\r\n // TODO: If c is not a URL code point and not \"%\", parse error.\r\n\r\n if (c === 37 &&\r\n (!isASCIIHex(this.input[this.pointer + 1]) ||\r\n !isASCIIHex(this.input[this.pointer + 2]))) {\r\n this.parseError = true;\r\n }\r\n\r\n this.buffer += percentEncodeChar(c, isPathPercentEncode);\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse cannot-be-a-base-URL path\"] = function parseCannotBeABaseURLPath(c) {\r\n if (c === 63) {\r\n this.url.query = \"\";\r\n this.state = \"query\";\r\n } else if (c === 35) {\r\n this.url.fragment = \"\";\r\n this.state = \"fragment\";\r\n } else {\r\n // TODO: Add: not a URL code point\r\n if (!isNaN(c) && c !== 37) {\r\n this.parseError = true;\r\n }\r\n\r\n if (c === 37 &&\r\n (!isASCIIHex(this.input[this.pointer + 1]) ||\r\n !isASCIIHex(this.input[this.pointer + 2]))) {\r\n this.parseError = true;\r\n }\r\n\r\n if (!isNaN(c)) {\r\n this.url.path[0] = this.url.path[0] + percentEncodeChar(c, isC0ControlPercentEncode);\r\n }\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse query\"] = function parseQuery(c, cStr) {\r\n if (isNaN(c) || (!this.stateOverride && c === 35)) {\r\n if (!isSpecial(this.url) || this.url.scheme === \"ws\" || this.url.scheme === \"wss\") {\r\n this.encodingOverride = \"utf-8\";\r\n }\r\n\r\n const buffer = new Buffer(this.buffer); // TODO: Use encoding override instead\r\n for (let i = 0; i < buffer.length; ++i) {\r\n if (buffer[i] < 0x21 || buffer[i] > 0x7E || buffer[i] === 0x22 || buffer[i] === 0x23 ||\r\n buffer[i] === 0x3C || buffer[i] === 0x3E) {\r\n this.url.query += percentEncode(buffer[i]);\r\n } else {\r\n this.url.query += String.fromCodePoint(buffer[i]);\r\n }\r\n }\r\n\r\n this.buffer = \"\";\r\n if (c === 35) {\r\n this.url.fragment = \"\";\r\n this.state = \"fragment\";\r\n }\r\n } else {\r\n // TODO: If c is not a URL code point and not \"%\", parse error.\r\n if (c === 37 &&\r\n (!isASCIIHex(this.input[this.pointer + 1]) ||\r\n !isASCIIHex(this.input[this.pointer + 2]))) {\r\n this.parseError = true;\r\n }\r\n\r\n this.buffer += cStr;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse fragment\"] = function parseFragment(c) {\r\n if (isNaN(c)) { // do nothing\r\n } else if (c === 0x0) {\r\n this.parseError = true;\r\n } else {\r\n // TODO: If c is not a URL code point and not \"%\", parse error.\r\n if (c === 37 &&\r\n (!isASCIIHex(this.input[this.pointer + 1]) ||\r\n !isASCIIHex(this.input[this.pointer + 2]))) {\r\n this.parseError = true;\r\n }\r\n\r\n this.url.fragment += percentEncodeChar(c, isC0ControlPercentEncode);\r\n }\r\n\r\n return true;\r\n};\r\n\r\nfunction serializeURL(url, excludeFragment) {\r\n let output = url.scheme + \":\";\r\n if (url.host !== null) {\r\n output += \"//\";\r\n\r\n if (url.username !== \"\" || url.password !== \"\") {\r\n output += url.username;\r\n if (url.password !== \"\") {\r\n output += \":\" + url.password;\r\n }\r\n output += \"@\";\r\n }\r\n\r\n output += serializeHost(url.host);\r\n\r\n if (url.port !== null) {\r\n output += \":\" + url.port;\r\n }\r\n } else if (url.host === null && url.scheme === \"file\") {\r\n output += \"//\";\r\n }\r\n\r\n if (url.cannotBeABaseURL) {\r\n output += url.path[0];\r\n } else {\r\n for (const string of url.path) {\r\n output += \"/\" + string;\r\n }\r\n }\r\n\r\n if (url.query !== null) {\r\n output += \"?\" + url.query;\r\n }\r\n\r\n if (!excludeFragment && url.fragment !== null) {\r\n output += \"#\" + url.fragment;\r\n }\r\n\r\n return output;\r\n}\r\n\r\nfunction serializeOrigin(tuple) {\r\n let result = tuple.scheme + \"://\";\r\n result += serializeHost(tuple.host);\r\n\r\n if (tuple.port !== null) {\r\n result += \":\" + tuple.port;\r\n }\r\n\r\n return result;\r\n}\r\n\r\nmodule.exports.serializeURL = serializeURL;\r\n\r\nmodule.exports.serializeURLOrigin = function (url) {\r\n // https://url.spec.whatwg.org/#concept-url-origin\r\n switch (url.scheme) {\r\n case \"blob\":\r\n try {\r\n return module.exports.serializeURLOrigin(module.exports.parseURL(url.path[0]));\r\n } catch (e) {\r\n // serializing an opaque origin returns \"null\"\r\n return \"null\";\r\n }\r\n case \"ftp\":\r\n case \"gopher\":\r\n case \"http\":\r\n case \"https\":\r\n case \"ws\":\r\n case \"wss\":\r\n return serializeOrigin({\r\n scheme: url.scheme,\r\n host: url.host,\r\n port: url.port\r\n });\r\n case \"file\":\r\n // spec says \"exercise to the reader\", chrome says \"file://\"\r\n return \"file://\";\r\n default:\r\n // serializing an opaque origin returns \"null\"\r\n return \"null\";\r\n }\r\n};\r\n\r\nmodule.exports.basicURLParse = function (input, options) {\r\n if (options === undefined) {\r\n options = {};\r\n }\r\n\r\n const usm = new URLStateMachine(input, options.baseURL, options.encodingOverride, options.url, options.stateOverride);\r\n if (usm.failure) {\r\n return \"failure\";\r\n }\r\n\r\n return usm.url;\r\n};\r\n\r\nmodule.exports.setTheUsername = function (url, username) {\r\n url.username = \"\";\r\n const decoded = punycode.ucs2.decode(username);\r\n for (let i = 0; i < decoded.length; ++i) {\r\n url.username += percentEncodeChar(decoded[i], isUserinfoPercentEncode);\r\n }\r\n};\r\n\r\nmodule.exports.setThePassword = function (url, password) {\r\n url.password = \"\";\r\n const decoded = punycode.ucs2.decode(password);\r\n for (let i = 0; i < decoded.length; ++i) {\r\n url.password += percentEncodeChar(decoded[i], isUserinfoPercentEncode);\r\n }\r\n};\r\n\r\nmodule.exports.serializeHost = serializeHost;\r\n\r\nmodule.exports.cannotHaveAUsernamePasswordPort = cannotHaveAUsernamePasswordPort;\r\n\r\nmodule.exports.serializeInteger = function (integer) {\r\n return String(integer);\r\n};\r\n\r\nmodule.exports.parseURL = function (input, options) {\r\n if (options === undefined) {\r\n options = {};\r\n }\r\n\r\n // We don't handle blobs, so this just delegates:\r\n return module.exports.basicURLParse(input, { baseURL: options.baseURL, encodingOverride: options.encodingOverride });\r\n};\r\n", "\"use strict\";\nconst usm = require(\"./url-state-machine\");\n\nexports.implementation = class URLImpl {\n constructor(constructorArgs) {\n const url = constructorArgs[0];\n const base = constructorArgs[1];\n\n let parsedBase = null;\n if (base !== undefined) {\n parsedBase = usm.basicURLParse(base);\n if (parsedBase === \"failure\") {\n throw new TypeError(\"Invalid base URL\");\n }\n }\n\n const parsedURL = usm.basicURLParse(url, { baseURL: parsedBase });\n if (parsedURL === \"failure\") {\n throw new TypeError(\"Invalid URL\");\n }\n\n this._url = parsedURL;\n\n // TODO: query stuff\n }\n\n get href() {\n return usm.serializeURL(this._url);\n }\n\n set href(v) {\n const parsedURL = usm.basicURLParse(v);\n if (parsedURL === \"failure\") {\n throw new TypeError(\"Invalid URL\");\n }\n\n this._url = parsedURL;\n }\n\n get origin() {\n return usm.serializeURLOrigin(this._url);\n }\n\n get protocol() {\n return this._url.scheme + \":\";\n }\n\n set protocol(v) {\n usm.basicURLParse(v + \":\", { url: this._url, stateOverride: \"scheme start\" });\n }\n\n get username() {\n return this._url.username;\n }\n\n set username(v) {\n if (usm.cannotHaveAUsernamePasswordPort(this._url)) {\n return;\n }\n\n usm.setTheUsername(this._url, v);\n }\n\n get password() {\n return this._url.password;\n }\n\n set password(v) {\n if (usm.cannotHaveAUsernamePasswordPort(this._url)) {\n return;\n }\n\n usm.setThePassword(this._url, v);\n }\n\n get host() {\n const url = this._url;\n\n if (url.host === null) {\n return \"\";\n }\n\n if (url.port === null) {\n return usm.serializeHost(url.host);\n }\n\n return usm.serializeHost(url.host) + \":\" + usm.serializeInteger(url.port);\n }\n\n set host(v) {\n if (this._url.cannotBeABaseURL) {\n return;\n }\n\n usm.basicURLParse(v, { url: this._url, stateOverride: \"host\" });\n }\n\n get hostname() {\n if (this._url.host === null) {\n return \"\";\n }\n\n return usm.serializeHost(this._url.host);\n }\n\n set hostname(v) {\n if (this._url.cannotBeABaseURL) {\n return;\n }\n\n usm.basicURLParse(v, { url: this._url, stateOverride: \"hostname\" });\n }\n\n get port() {\n if (this._url.port === null) {\n return \"\";\n }\n\n return usm.serializeInteger(this._url.port);\n }\n\n set port(v) {\n if (usm.cannotHaveAUsernamePasswordPort(this._url)) {\n return;\n }\n\n if (v === \"\") {\n this._url.port = null;\n } else {\n usm.basicURLParse(v, { url: this._url, stateOverride: \"port\" });\n }\n }\n\n get pathname() {\n if (this._url.cannotBeABaseURL) {\n return this._url.path[0];\n }\n\n if (this._url.path.length === 0) {\n return \"\";\n }\n\n return \"/\" + this._url.path.join(\"/\");\n }\n\n set pathname(v) {\n if (this._url.cannotBeABaseURL) {\n return;\n }\n\n this._url.path = [];\n usm.basicURLParse(v, { url: this._url, stateOverride: \"path start\" });\n }\n\n get search() {\n if (this._url.query === null || this._url.query === \"\") {\n return \"\";\n }\n\n return \"?\" + this._url.query;\n }\n\n set search(v) {\n // TODO: query stuff\n\n const url = this._url;\n\n if (v === \"\") {\n url.query = null;\n return;\n }\n\n const input = v[0] === \"?\" ? v.substring(1) : v;\n url.query = \"\";\n usm.basicURLParse(input, { url, stateOverride: \"query\" });\n }\n\n get hash() {\n if (this._url.fragment === null || this._url.fragment === \"\") {\n return \"\";\n }\n\n return \"#\" + this._url.fragment;\n }\n\n set hash(v) {\n if (v === \"\") {\n this._url.fragment = null;\n return;\n }\n\n const input = v[0] === \"#\" ? v.substring(1) : v;\n this._url.fragment = \"\";\n usm.basicURLParse(input, { url: this._url, stateOverride: \"fragment\" });\n }\n\n toJSON() {\n return this.href;\n }\n};\n", "\"use strict\";\n\nconst conversions = require(\"webidl-conversions\");\nconst utils = require(\"./utils.js\");\nconst Impl = require(\".//URL-impl.js\");\n\nconst impl = utils.implSymbol;\n\nfunction URL(url) {\n if (!this || this[impl] || !(this instanceof URL)) {\n throw new TypeError(\"Failed to construct 'URL': Please use the 'new' operator, this DOM object constructor cannot be called as a function.\");\n }\n if (arguments.length < 1) {\n throw new TypeError(\"Failed to construct 'URL': 1 argument required, but only \" + arguments.length + \" present.\");\n }\n const args = [];\n for (let i = 0; i < arguments.length && i < 2; ++i) {\n args[i] = arguments[i];\n }\n args[0] = conversions[\"USVString\"](args[0]);\n if (args[1] !== undefined) {\n args[1] = conversions[\"USVString\"](args[1]);\n }\n\n module.exports.setup(this, args);\n}\n\nURL.prototype.toJSON = function toJSON() {\n if (!this || !module.exports.is(this)) {\n throw new TypeError(\"Illegal invocation\");\n }\n const args = [];\n for (let i = 0; i < arguments.length && i < 0; ++i) {\n args[i] = arguments[i];\n }\n return this[impl].toJSON.apply(this[impl], args);\n};\nObject.defineProperty(URL.prototype, \"href\", {\n get() {\n return this[impl].href;\n },\n set(V) {\n V = conversions[\"USVString\"](V);\n this[impl].href = V;\n },\n enumerable: true,\n configurable: true\n});\n\nURL.prototype.toString = function () {\n if (!this || !module.exports.is(this)) {\n throw new TypeError(\"Illegal invocation\");\n }\n return this.href;\n};\n\nObject.defineProperty(URL.prototype, \"origin\", {\n get() {\n return this[impl].origin;\n },\n enumerable: true,\n configurable: true\n});\n\nObject.defineProperty(URL.prototype, \"protocol\", {\n get() {\n return this[impl].protocol;\n },\n set(V) {\n V = conversions[\"USVString\"](V);\n this[impl].protocol = V;\n },\n enumerable: true,\n configurable: true\n});\n\nObject.defineProperty(URL.prototype, \"username\", {\n get() {\n return this[impl].username;\n },\n set(V) {\n V = conversions[\"USVString\"](V);\n this[impl].username = V;\n },\n enumerable: true,\n configurable: true\n});\n\nObject.defineProperty(URL.prototype, \"password\", {\n get() {\n return this[impl].password;\n },\n set(V) {\n V = conversions[\"USVString\"](V);\n this[impl].password = V;\n },\n enumerable: true,\n configurable: true\n});\n\nObject.defineProperty(URL.prototype, \"host\", {\n get() {\n return this[impl].host;\n },\n set(V) {\n V = conversions[\"USVString\"](V);\n this[impl].host = V;\n },\n enumerable: true,\n configurable: true\n});\n\nObject.defineProperty(URL.prototype, \"hostname\", {\n get() {\n return this[impl].hostname;\n },\n set(V) {\n V = conversions[\"USVString\"](V);\n this[impl].hostname = V;\n },\n enumerable: true,\n configurable: true\n});\n\nObject.defineProperty(URL.prototype, \"port\", {\n get() {\n return this[impl].port;\n },\n set(V) {\n V = conversions[\"USVString\"](V);\n this[impl].port = V;\n },\n enumerable: true,\n configurable: true\n});\n\nObject.defineProperty(URL.prototype, \"pathname\", {\n get() {\n return this[impl].pathname;\n },\n set(V) {\n V = conversions[\"USVString\"](V);\n this[impl].pathname = V;\n },\n enumerable: true,\n configurable: true\n});\n\nObject.defineProperty(URL.prototype, \"search\", {\n get() {\n return this[impl].search;\n },\n set(V) {\n V = conversions[\"USVString\"](V);\n this[impl].search = V;\n },\n enumerable: true,\n configurable: true\n});\n\nObject.defineProperty(URL.prototype, \"hash\", {\n get() {\n return this[impl].hash;\n },\n set(V) {\n V = conversions[\"USVString\"](V);\n this[impl].hash = V;\n },\n enumerable: true,\n configurable: true\n});\n\n\nmodule.exports = {\n is(obj) {\n return !!obj && obj[impl] instanceof Impl.implementation;\n },\n create(constructorArgs, privateData) {\n let obj = Object.create(URL.prototype);\n this.setup(obj, constructorArgs, privateData);\n return obj;\n },\n setup(obj, constructorArgs, privateData) {\n if (!privateData) privateData = {};\n privateData.wrapper = obj;\n\n obj[impl] = new Impl.implementation(constructorArgs, privateData);\n obj[impl][utils.wrapperSymbol] = obj;\n },\n interface: URL,\n expose: {\n Window: { URL: URL },\n Worker: { URL: URL }\n }\n};\n\n", "\"use strict\";\n\nexports.URL = require(\"./URL\").interface;\nexports.serializeURL = require(\"./url-state-machine\").serializeURL;\nexports.serializeURLOrigin = require(\"./url-state-machine\").serializeURLOrigin;\nexports.basicURLParse = require(\"./url-state-machine\").basicURLParse;\nexports.setTheUsername = require(\"./url-state-machine\").setTheUsername;\nexports.setThePassword = require(\"./url-state-machine\").setThePassword;\nexports.serializeHost = require(\"./url-state-machine\").serializeHost;\nexports.serializeInteger = require(\"./url-state-machine\").serializeInteger;\nexports.parseURL = require(\"./url-state-machine\").parseURL;\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\nfunction _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; }\n\nvar Stream = _interopDefault(require('stream'));\nvar http = _interopDefault(require('http'));\nvar Url = _interopDefault(require('url'));\nvar whatwgUrl = _interopDefault(require('whatwg-url'));\nvar https = _interopDefault(require('https'));\nvar zlib = _interopDefault(require('zlib'));\n\n// Based on https://github.com/tmpvar/jsdom/blob/aa85b2abf07766ff7bf5c1f6daafb3726f2f2db5/lib/jsdom/living/blob.js\n\n// fix for \"Readable\" isn't a named export issue\nconst Readable = Stream.Readable;\n\nconst BUFFER = Symbol('buffer');\nconst TYPE = Symbol('type');\n\nclass Blob {\n\tconstructor() {\n\t\tthis[TYPE] = '';\n\n\t\tconst blobParts = arguments[0];\n\t\tconst options = arguments[1];\n\n\t\tconst buffers = [];\n\t\tlet size = 0;\n\n\t\tif (blobParts) {\n\t\t\tconst a = blobParts;\n\t\t\tconst length = Number(a.length);\n\t\t\tfor (let i = 0; i < length; i++) {\n\t\t\t\tconst element = a[i];\n\t\t\t\tlet buffer;\n\t\t\t\tif (element instanceof Buffer) {\n\t\t\t\t\tbuffer = element;\n\t\t\t\t} else if (ArrayBuffer.isView(element)) {\n\t\t\t\t\tbuffer = Buffer.from(element.buffer, element.byteOffset, element.byteLength);\n\t\t\t\t} else if (element instanceof ArrayBuffer) {\n\t\t\t\t\tbuffer = Buffer.from(element);\n\t\t\t\t} else if (element instanceof Blob) {\n\t\t\t\t\tbuffer = element[BUFFER];\n\t\t\t\t} else {\n\t\t\t\t\tbuffer = Buffer.from(typeof element === 'string' ? element : String(element));\n\t\t\t\t}\n\t\t\t\tsize += buffer.length;\n\t\t\t\tbuffers.push(buffer);\n\t\t\t}\n\t\t}\n\n\t\tthis[BUFFER] = Buffer.concat(buffers);\n\n\t\tlet type = options && options.type !== undefined && String(options.type).toLowerCase();\n\t\tif (type && !/[^\\u0020-\\u007E]/.test(type)) {\n\t\t\tthis[TYPE] = type;\n\t\t}\n\t}\n\tget size() {\n\t\treturn this[BUFFER].length;\n\t}\n\tget type() {\n\t\treturn this[TYPE];\n\t}\n\ttext() {\n\t\treturn Promise.resolve(this[BUFFER].toString());\n\t}\n\tarrayBuffer() {\n\t\tconst buf = this[BUFFER];\n\t\tconst ab = buf.buffer.slice(buf.byteOffset, buf.byteOffset + buf.byteLength);\n\t\treturn Promise.resolve(ab);\n\t}\n\tstream() {\n\t\tconst readable = new Readable();\n\t\treadable._read = function () {};\n\t\treadable.push(this[BUFFER]);\n\t\treadable.push(null);\n\t\treturn readable;\n\t}\n\ttoString() {\n\t\treturn '[object Blob]';\n\t}\n\tslice() {\n\t\tconst size = this.size;\n\n\t\tconst start = arguments[0];\n\t\tconst end = arguments[1];\n\t\tlet relativeStart, relativeEnd;\n\t\tif (start === undefined) {\n\t\t\trelativeStart = 0;\n\t\t} else if (start < 0) {\n\t\t\trelativeStart = Math.max(size + start, 0);\n\t\t} else {\n\t\t\trelativeStart = Math.min(start, size);\n\t\t}\n\t\tif (end === undefined) {\n\t\t\trelativeEnd = size;\n\t\t} else if (end < 0) {\n\t\t\trelativeEnd = Math.max(size + end, 0);\n\t\t} else {\n\t\t\trelativeEnd = Math.min(end, size);\n\t\t}\n\t\tconst span = Math.max(relativeEnd - relativeStart, 0);\n\n\t\tconst buffer = this[BUFFER];\n\t\tconst slicedBuffer = buffer.slice(relativeStart, relativeStart + span);\n\t\tconst blob = new Blob([], { type: arguments[2] });\n\t\tblob[BUFFER] = slicedBuffer;\n\t\treturn blob;\n\t}\n}\n\nObject.defineProperties(Blob.prototype, {\n\tsize: { enumerable: true },\n\ttype: { enumerable: true },\n\tslice: { enumerable: true }\n});\n\nObject.defineProperty(Blob.prototype, Symbol.toStringTag, {\n\tvalue: 'Blob',\n\twritable: false,\n\tenumerable: false,\n\tconfigurable: true\n});\n\n/**\n * fetch-error.js\n *\n * FetchError interface for operational errors\n */\n\n/**\n * Create FetchError instance\n *\n * @param String message Error message for human\n * @param String type Error type for machine\n * @param String systemError For Node.js system error\n * @return FetchError\n */\nfunction FetchError(message, type, systemError) {\n Error.call(this, message);\n\n this.message = message;\n this.type = type;\n\n // when err.type is `system`, err.code contains system error code\n if (systemError) {\n this.code = this.errno = systemError.code;\n }\n\n // hide custom error implementation details from end-users\n Error.captureStackTrace(this, this.constructor);\n}\n\nFetchError.prototype = Object.create(Error.prototype);\nFetchError.prototype.constructor = FetchError;\nFetchError.prototype.name = 'FetchError';\n\nlet convert;\ntry {\n\tconvert = require('encoding').convert;\n} catch (e) {}\n\nconst INTERNALS = Symbol('Body internals');\n\n// fix an issue where \"PassThrough\" isn't a named export for node <10\nconst PassThrough = Stream.PassThrough;\n\n/**\n * Body mixin\n *\n * Ref: https://fetch.spec.whatwg.org/#body\n *\n * @param Stream body Readable stream\n * @param Object opts Response options\n * @return Void\n */\nfunction Body(body) {\n\tvar _this = this;\n\n\tvar _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},\n\t _ref$size = _ref.size;\n\n\tlet size = _ref$size === undefined ? 0 : _ref$size;\n\tvar _ref$timeout = _ref.timeout;\n\tlet timeout = _ref$timeout === undefined ? 0 : _ref$timeout;\n\n\tif (body == null) {\n\t\t// body is undefined or null\n\t\tbody = null;\n\t} else if (isURLSearchParams(body)) {\n\t\t// body is a URLSearchParams\n\t\tbody = Buffer.from(body.toString());\n\t} else if (isBlob(body)) ; else if (Buffer.isBuffer(body)) ; else if (Object.prototype.toString.call(body) === '[object ArrayBuffer]') {\n\t\t// body is ArrayBuffer\n\t\tbody = Buffer.from(body);\n\t} else if (ArrayBuffer.isView(body)) {\n\t\t// body is ArrayBufferView\n\t\tbody = Buffer.from(body.buffer, body.byteOffset, body.byteLength);\n\t} else if (body instanceof Stream) ; else {\n\t\t// none of the above\n\t\t// coerce to string then buffer\n\t\tbody = Buffer.from(String(body));\n\t}\n\tthis[INTERNALS] = {\n\t\tbody,\n\t\tdisturbed: false,\n\t\terror: null\n\t};\n\tthis.size = size;\n\tthis.timeout = timeout;\n\n\tif (body instanceof Stream) {\n\t\tbody.on('error', function (err) {\n\t\t\tconst error = err.name === 'AbortError' ? err : new FetchError(`Invalid response body while trying to fetch ${_this.url}: ${err.message}`, 'system', err);\n\t\t\t_this[INTERNALS].error = error;\n\t\t});\n\t}\n}\n\nBody.prototype = {\n\tget body() {\n\t\treturn this[INTERNALS].body;\n\t},\n\n\tget bodyUsed() {\n\t\treturn this[INTERNALS].disturbed;\n\t},\n\n\t/**\n * Decode response as ArrayBuffer\n *\n * @return Promise\n */\n\tarrayBuffer() {\n\t\treturn consumeBody.call(this).then(function (buf) {\n\t\t\treturn buf.buffer.slice(buf.byteOffset, buf.byteOffset + buf.byteLength);\n\t\t});\n\t},\n\n\t/**\n * Return raw response as Blob\n *\n * @return Promise\n */\n\tblob() {\n\t\tlet ct = this.headers && this.headers.get('content-type') || '';\n\t\treturn consumeBody.call(this).then(function (buf) {\n\t\t\treturn Object.assign(\n\t\t\t// Prevent copying\n\t\t\tnew Blob([], {\n\t\t\t\ttype: ct.toLowerCase()\n\t\t\t}), {\n\t\t\t\t[BUFFER]: buf\n\t\t\t});\n\t\t});\n\t},\n\n\t/**\n * Decode response as json\n *\n * @return Promise\n */\n\tjson() {\n\t\tvar _this2 = this;\n\n\t\treturn consumeBody.call(this).then(function (buffer) {\n\t\t\ttry {\n\t\t\t\treturn JSON.parse(buffer.toString());\n\t\t\t} catch (err) {\n\t\t\t\treturn Body.Promise.reject(new FetchError(`invalid json response body at ${_this2.url} reason: ${err.message}`, 'invalid-json'));\n\t\t\t}\n\t\t});\n\t},\n\n\t/**\n * Decode response as text\n *\n * @return Promise\n */\n\ttext() {\n\t\treturn consumeBody.call(this).then(function (buffer) {\n\t\t\treturn buffer.toString();\n\t\t});\n\t},\n\n\t/**\n * Decode response as buffer (non-spec api)\n *\n * @return Promise\n */\n\tbuffer() {\n\t\treturn consumeBody.call(this);\n\t},\n\n\t/**\n * Decode response as text, while automatically detecting the encoding and\n * trying to decode to UTF-8 (non-spec api)\n *\n * @return Promise\n */\n\ttextConverted() {\n\t\tvar _this3 = this;\n\n\t\treturn consumeBody.call(this).then(function (buffer) {\n\t\t\treturn convertBody(buffer, _this3.headers);\n\t\t});\n\t}\n};\n\n// In browsers, all properties are enumerable.\nObject.defineProperties(Body.prototype, {\n\tbody: { enumerable: true },\n\tbodyUsed: { enumerable: true },\n\tarrayBuffer: { enumerable: true },\n\tblob: { enumerable: true },\n\tjson: { enumerable: true },\n\ttext: { enumerable: true }\n});\n\nBody.mixIn = function (proto) {\n\tfor (const name of Object.getOwnPropertyNames(Body.prototype)) {\n\t\t// istanbul ignore else: future proof\n\t\tif (!(name in proto)) {\n\t\t\tconst desc = Object.getOwnPropertyDescriptor(Body.prototype, name);\n\t\t\tObject.defineProperty(proto, name, desc);\n\t\t}\n\t}\n};\n\n/**\n * Consume and convert an entire Body to a Buffer.\n *\n * Ref: https://fetch.spec.whatwg.org/#concept-body-consume-body\n *\n * @return Promise\n */\nfunction consumeBody() {\n\tvar _this4 = this;\n\n\tif (this[INTERNALS].disturbed) {\n\t\treturn Body.Promise.reject(new TypeError(`body used already for: ${this.url}`));\n\t}\n\n\tthis[INTERNALS].disturbed = true;\n\n\tif (this[INTERNALS].error) {\n\t\treturn Body.Promise.reject(this[INTERNALS].error);\n\t}\n\n\tlet body = this.body;\n\n\t// body is null\n\tif (body === null) {\n\t\treturn Body.Promise.resolve(Buffer.alloc(0));\n\t}\n\n\t// body is blob\n\tif (isBlob(body)) {\n\t\tbody = body.stream();\n\t}\n\n\t// body is buffer\n\tif (Buffer.isBuffer(body)) {\n\t\treturn Body.Promise.resolve(body);\n\t}\n\n\t// istanbul ignore if: should never happen\n\tif (!(body instanceof Stream)) {\n\t\treturn Body.Promise.resolve(Buffer.alloc(0));\n\t}\n\n\t// body is stream\n\t// get ready to actually consume the body\n\tlet accum = [];\n\tlet accumBytes = 0;\n\tlet abort = false;\n\n\treturn new Body.Promise(function (resolve, reject) {\n\t\tlet resTimeout;\n\n\t\t// allow timeout on slow response body\n\t\tif (_this4.timeout) {\n\t\t\tresTimeout = setTimeout(function () {\n\t\t\t\tabort = true;\n\t\t\t\treject(new FetchError(`Response timeout while trying to fetch ${_this4.url} (over ${_this4.timeout}ms)`, 'body-timeout'));\n\t\t\t}, _this4.timeout);\n\t\t}\n\n\t\t// handle stream errors\n\t\tbody.on('error', function (err) {\n\t\t\tif (err.name === 'AbortError') {\n\t\t\t\t// if the request was aborted, reject with this Error\n\t\t\t\tabort = true;\n\t\t\t\treject(err);\n\t\t\t} else {\n\t\t\t\t// other errors, such as incorrect content-encoding\n\t\t\t\treject(new FetchError(`Invalid response body while trying to fetch ${_this4.url}: ${err.message}`, 'system', err));\n\t\t\t}\n\t\t});\n\n\t\tbody.on('data', function (chunk) {\n\t\t\tif (abort || chunk === null) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (_this4.size && accumBytes + chunk.length > _this4.size) {\n\t\t\t\tabort = true;\n\t\t\t\treject(new FetchError(`content size at ${_this4.url} over limit: ${_this4.size}`, 'max-size'));\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\taccumBytes += chunk.length;\n\t\t\taccum.push(chunk);\n\t\t});\n\n\t\tbody.on('end', function () {\n\t\t\tif (abort) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tclearTimeout(resTimeout);\n\n\t\t\ttry {\n\t\t\t\tresolve(Buffer.concat(accum, accumBytes));\n\t\t\t} catch (err) {\n\t\t\t\t// handle streams that have accumulated too much data (issue #414)\n\t\t\t\treject(new FetchError(`Could not create Buffer from response body for ${_this4.url}: ${err.message}`, 'system', err));\n\t\t\t}\n\t\t});\n\t});\n}\n\n/**\n * Detect buffer encoding and convert to target encoding\n * ref: http://www.w3.org/TR/2011/WD-html5-20110113/parsing.html#determining-the-character-encoding\n *\n * @param Buffer buffer Incoming buffer\n * @param String encoding Target encoding\n * @return String\n */\nfunction convertBody(buffer, headers) {\n\tif (typeof convert !== 'function') {\n\t\tthrow new Error('The package `encoding` must be installed to use the textConverted() function');\n\t}\n\n\tconst ct = headers.get('content-type');\n\tlet charset = 'utf-8';\n\tlet res, str;\n\n\t// header\n\tif (ct) {\n\t\tres = /charset=([^;]*)/i.exec(ct);\n\t}\n\n\t// no charset in content type, peek at response body for at most 1024 bytes\n\tstr = buffer.slice(0, 1024).toString();\n\n\t// html5\n\tif (!res && str) {\n\t\tres = / 0 && arguments[0] !== undefined ? arguments[0] : undefined;\n\n\t\tthis[MAP] = Object.create(null);\n\n\t\tif (init instanceof Headers) {\n\t\t\tconst rawHeaders = init.raw();\n\t\t\tconst headerNames = Object.keys(rawHeaders);\n\n\t\t\tfor (const headerName of headerNames) {\n\t\t\t\tfor (const value of rawHeaders[headerName]) {\n\t\t\t\t\tthis.append(headerName, value);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn;\n\t\t}\n\n\t\t// We don't worry about converting prop to ByteString here as append()\n\t\t// will handle it.\n\t\tif (init == null) ; else if (typeof init === 'object') {\n\t\t\tconst method = init[Symbol.iterator];\n\t\t\tif (method != null) {\n\t\t\t\tif (typeof method !== 'function') {\n\t\t\t\t\tthrow new TypeError('Header pairs must be iterable');\n\t\t\t\t}\n\n\t\t\t\t// sequence>\n\t\t\t\t// Note: per spec we have to first exhaust the lists then process them\n\t\t\t\tconst pairs = [];\n\t\t\t\tfor (const pair of init) {\n\t\t\t\t\tif (typeof pair !== 'object' || typeof pair[Symbol.iterator] !== 'function') {\n\t\t\t\t\t\tthrow new TypeError('Each header pair must be iterable');\n\t\t\t\t\t}\n\t\t\t\t\tpairs.push(Array.from(pair));\n\t\t\t\t}\n\n\t\t\t\tfor (const pair of pairs) {\n\t\t\t\t\tif (pair.length !== 2) {\n\t\t\t\t\t\tthrow new TypeError('Each header pair must be a name/value tuple');\n\t\t\t\t\t}\n\t\t\t\t\tthis.append(pair[0], pair[1]);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// record\n\t\t\t\tfor (const key of Object.keys(init)) {\n\t\t\t\t\tconst value = init[key];\n\t\t\t\t\tthis.append(key, value);\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tthrow new TypeError('Provided initializer must be an object');\n\t\t}\n\t}\n\n\t/**\n * Return combined header value given name\n *\n * @param String name Header name\n * @return Mixed\n */\n\tget(name) {\n\t\tname = `${name}`;\n\t\tvalidateName(name);\n\t\tconst key = find(this[MAP], name);\n\t\tif (key === undefined) {\n\t\t\treturn null;\n\t\t}\n\n\t\treturn this[MAP][key].join(', ');\n\t}\n\n\t/**\n * Iterate over all headers\n *\n * @param Function callback Executed for each item with parameters (value, name, thisArg)\n * @param Boolean thisArg `this` context for callback function\n * @return Void\n */\n\tforEach(callback) {\n\t\tlet thisArg = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : undefined;\n\n\t\tlet pairs = getHeaders(this);\n\t\tlet i = 0;\n\t\twhile (i < pairs.length) {\n\t\t\tvar _pairs$i = pairs[i];\n\t\t\tconst name = _pairs$i[0],\n\t\t\t value = _pairs$i[1];\n\n\t\t\tcallback.call(thisArg, value, name, this);\n\t\t\tpairs = getHeaders(this);\n\t\t\ti++;\n\t\t}\n\t}\n\n\t/**\n * Overwrite header values given name\n *\n * @param String name Header name\n * @param String value Header value\n * @return Void\n */\n\tset(name, value) {\n\t\tname = `${name}`;\n\t\tvalue = `${value}`;\n\t\tvalidateName(name);\n\t\tvalidateValue(value);\n\t\tconst key = find(this[MAP], name);\n\t\tthis[MAP][key !== undefined ? key : name] = [value];\n\t}\n\n\t/**\n * Append a value onto existing header\n *\n * @param String name Header name\n * @param String value Header value\n * @return Void\n */\n\tappend(name, value) {\n\t\tname = `${name}`;\n\t\tvalue = `${value}`;\n\t\tvalidateName(name);\n\t\tvalidateValue(value);\n\t\tconst key = find(this[MAP], name);\n\t\tif (key !== undefined) {\n\t\t\tthis[MAP][key].push(value);\n\t\t} else {\n\t\t\tthis[MAP][name] = [value];\n\t\t}\n\t}\n\n\t/**\n * Check for header name existence\n *\n * @param String name Header name\n * @return Boolean\n */\n\thas(name) {\n\t\tname = `${name}`;\n\t\tvalidateName(name);\n\t\treturn find(this[MAP], name) !== undefined;\n\t}\n\n\t/**\n * Delete all header values given name\n *\n * @param String name Header name\n * @return Void\n */\n\tdelete(name) {\n\t\tname = `${name}`;\n\t\tvalidateName(name);\n\t\tconst key = find(this[MAP], name);\n\t\tif (key !== undefined) {\n\t\t\tdelete this[MAP][key];\n\t\t}\n\t}\n\n\t/**\n * Return raw headers (non-spec api)\n *\n * @return Object\n */\n\traw() {\n\t\treturn this[MAP];\n\t}\n\n\t/**\n * Get an iterator on keys.\n *\n * @return Iterator\n */\n\tkeys() {\n\t\treturn createHeadersIterator(this, 'key');\n\t}\n\n\t/**\n * Get an iterator on values.\n *\n * @return Iterator\n */\n\tvalues() {\n\t\treturn createHeadersIterator(this, 'value');\n\t}\n\n\t/**\n * Get an iterator on entries.\n *\n * This is the default iterator of the Headers object.\n *\n * @return Iterator\n */\n\t[Symbol.iterator]() {\n\t\treturn createHeadersIterator(this, 'key+value');\n\t}\n}\nHeaders.prototype.entries = Headers.prototype[Symbol.iterator];\n\nObject.defineProperty(Headers.prototype, Symbol.toStringTag, {\n\tvalue: 'Headers',\n\twritable: false,\n\tenumerable: false,\n\tconfigurable: true\n});\n\nObject.defineProperties(Headers.prototype, {\n\tget: { enumerable: true },\n\tforEach: { enumerable: true },\n\tset: { enumerable: true },\n\tappend: { enumerable: true },\n\thas: { enumerable: true },\n\tdelete: { enumerable: true },\n\tkeys: { enumerable: true },\n\tvalues: { enumerable: true },\n\tentries: { enumerable: true }\n});\n\nfunction getHeaders(headers) {\n\tlet kind = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'key+value';\n\n\tconst keys = Object.keys(headers[MAP]).sort();\n\treturn keys.map(kind === 'key' ? function (k) {\n\t\treturn k.toLowerCase();\n\t} : kind === 'value' ? function (k) {\n\t\treturn headers[MAP][k].join(', ');\n\t} : function (k) {\n\t\treturn [k.toLowerCase(), headers[MAP][k].join(', ')];\n\t});\n}\n\nconst INTERNAL = Symbol('internal');\n\nfunction createHeadersIterator(target, kind) {\n\tconst iterator = Object.create(HeadersIteratorPrototype);\n\titerator[INTERNAL] = {\n\t\ttarget,\n\t\tkind,\n\t\tindex: 0\n\t};\n\treturn iterator;\n}\n\nconst HeadersIteratorPrototype = Object.setPrototypeOf({\n\tnext() {\n\t\t// istanbul ignore if\n\t\tif (!this || Object.getPrototypeOf(this) !== HeadersIteratorPrototype) {\n\t\t\tthrow new TypeError('Value of `this` is not a HeadersIterator');\n\t\t}\n\n\t\tvar _INTERNAL = this[INTERNAL];\n\t\tconst target = _INTERNAL.target,\n\t\t kind = _INTERNAL.kind,\n\t\t index = _INTERNAL.index;\n\n\t\tconst values = getHeaders(target, kind);\n\t\tconst len = values.length;\n\t\tif (index >= len) {\n\t\t\treturn {\n\t\t\t\tvalue: undefined,\n\t\t\t\tdone: true\n\t\t\t};\n\t\t}\n\n\t\tthis[INTERNAL].index = index + 1;\n\n\t\treturn {\n\t\t\tvalue: values[index],\n\t\t\tdone: false\n\t\t};\n\t}\n}, Object.getPrototypeOf(Object.getPrototypeOf([][Symbol.iterator]())));\n\nObject.defineProperty(HeadersIteratorPrototype, Symbol.toStringTag, {\n\tvalue: 'HeadersIterator',\n\twritable: false,\n\tenumerable: false,\n\tconfigurable: true\n});\n\n/**\n * Export the Headers object in a form that Node.js can consume.\n *\n * @param Headers headers\n * @return Object\n */\nfunction exportNodeCompatibleHeaders(headers) {\n\tconst obj = Object.assign({ __proto__: null }, headers[MAP]);\n\n\t// http.request() only supports string as Host header. This hack makes\n\t// specifying custom Host header possible.\n\tconst hostHeaderKey = find(headers[MAP], 'Host');\n\tif (hostHeaderKey !== undefined) {\n\t\tobj[hostHeaderKey] = obj[hostHeaderKey][0];\n\t}\n\n\treturn obj;\n}\n\n/**\n * Create a Headers object from an object of headers, ignoring those that do\n * not conform to HTTP grammar productions.\n *\n * @param Object obj Object of headers\n * @return Headers\n */\nfunction createHeadersLenient(obj) {\n\tconst headers = new Headers();\n\tfor (const name of Object.keys(obj)) {\n\t\tif (invalidTokenRegex.test(name)) {\n\t\t\tcontinue;\n\t\t}\n\t\tif (Array.isArray(obj[name])) {\n\t\t\tfor (const val of obj[name]) {\n\t\t\t\tif (invalidHeaderCharRegex.test(val)) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tif (headers[MAP][name] === undefined) {\n\t\t\t\t\theaders[MAP][name] = [val];\n\t\t\t\t} else {\n\t\t\t\t\theaders[MAP][name].push(val);\n\t\t\t\t}\n\t\t\t}\n\t\t} else if (!invalidHeaderCharRegex.test(obj[name])) {\n\t\t\theaders[MAP][name] = [obj[name]];\n\t\t}\n\t}\n\treturn headers;\n}\n\nconst INTERNALS$1 = Symbol('Response internals');\n\n// fix an issue where \"STATUS_CODES\" aren't a named export for node <10\nconst STATUS_CODES = http.STATUS_CODES;\n\n/**\n * Response class\n *\n * @param Stream body Readable stream\n * @param Object opts Response options\n * @return Void\n */\nclass Response {\n\tconstructor() {\n\t\tlet body = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;\n\t\tlet opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n\t\tBody.call(this, body, opts);\n\n\t\tconst status = opts.status || 200;\n\t\tconst headers = new Headers(opts.headers);\n\n\t\tif (body != null && !headers.has('Content-Type')) {\n\t\t\tconst contentType = extractContentType(body);\n\t\t\tif (contentType) {\n\t\t\t\theaders.append('Content-Type', contentType);\n\t\t\t}\n\t\t}\n\n\t\tthis[INTERNALS$1] = {\n\t\t\turl: opts.url,\n\t\t\tstatus,\n\t\t\tstatusText: opts.statusText || STATUS_CODES[status],\n\t\t\theaders,\n\t\t\tcounter: opts.counter\n\t\t};\n\t}\n\n\tget url() {\n\t\treturn this[INTERNALS$1].url || '';\n\t}\n\n\tget status() {\n\t\treturn this[INTERNALS$1].status;\n\t}\n\n\t/**\n * Convenience property representing if the request ended normally\n */\n\tget ok() {\n\t\treturn this[INTERNALS$1].status >= 200 && this[INTERNALS$1].status < 300;\n\t}\n\n\tget redirected() {\n\t\treturn this[INTERNALS$1].counter > 0;\n\t}\n\n\tget statusText() {\n\t\treturn this[INTERNALS$1].statusText;\n\t}\n\n\tget headers() {\n\t\treturn this[INTERNALS$1].headers;\n\t}\n\n\t/**\n * Clone this response\n *\n * @return Response\n */\n\tclone() {\n\t\treturn new Response(clone(this), {\n\t\t\turl: this.url,\n\t\t\tstatus: this.status,\n\t\t\tstatusText: this.statusText,\n\t\t\theaders: this.headers,\n\t\t\tok: this.ok,\n\t\t\tredirected: this.redirected\n\t\t});\n\t}\n}\n\nBody.mixIn(Response.prototype);\n\nObject.defineProperties(Response.prototype, {\n\turl: { enumerable: true },\n\tstatus: { enumerable: true },\n\tok: { enumerable: true },\n\tredirected: { enumerable: true },\n\tstatusText: { enumerable: true },\n\theaders: { enumerable: true },\n\tclone: { enumerable: true }\n});\n\nObject.defineProperty(Response.prototype, Symbol.toStringTag, {\n\tvalue: 'Response',\n\twritable: false,\n\tenumerable: false,\n\tconfigurable: true\n});\n\nconst INTERNALS$2 = Symbol('Request internals');\nconst URL = Url.URL || whatwgUrl.URL;\n\n// fix an issue where \"format\", \"parse\" aren't a named export for node <10\nconst parse_url = Url.parse;\nconst format_url = Url.format;\n\n/**\n * Wrapper around `new URL` to handle arbitrary URLs\n *\n * @param {string} urlStr\n * @return {void}\n */\nfunction parseURL(urlStr) {\n\t/*\n \tCheck whether the URL is absolute or not\n \t\tScheme: https://tools.ietf.org/html/rfc3986#section-3.1\n \tAbsolute URL: https://tools.ietf.org/html/rfc3986#section-4.3\n */\n\tif (/^[a-zA-Z][a-zA-Z\\d+\\-.]*:/.exec(urlStr)) {\n\t\turlStr = new URL(urlStr).toString();\n\t}\n\n\t// Fallback to old implementation for arbitrary URLs\n\treturn parse_url(urlStr);\n}\n\nconst streamDestructionSupported = 'destroy' in Stream.Readable.prototype;\n\n/**\n * Check if a value is an instance of Request.\n *\n * @param Mixed input\n * @return Boolean\n */\nfunction isRequest(input) {\n\treturn typeof input === 'object' && typeof input[INTERNALS$2] === 'object';\n}\n\nfunction isAbortSignal(signal) {\n\tconst proto = signal && typeof signal === 'object' && Object.getPrototypeOf(signal);\n\treturn !!(proto && proto.constructor.name === 'AbortSignal');\n}\n\n/**\n * Request class\n *\n * @param Mixed input Url or Request instance\n * @param Object init Custom options\n * @return Void\n */\nclass Request {\n\tconstructor(input) {\n\t\tlet init = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n\t\tlet parsedURL;\n\n\t\t// normalize input\n\t\tif (!isRequest(input)) {\n\t\t\tif (input && input.href) {\n\t\t\t\t// in order to support Node.js' Url objects; though WHATWG's URL objects\n\t\t\t\t// will fall into this branch also (since their `toString()` will return\n\t\t\t\t// `href` property anyway)\n\t\t\t\tparsedURL = parseURL(input.href);\n\t\t\t} else {\n\t\t\t\t// coerce input to a string before attempting to parse\n\t\t\t\tparsedURL = parseURL(`${input}`);\n\t\t\t}\n\t\t\tinput = {};\n\t\t} else {\n\t\t\tparsedURL = parseURL(input.url);\n\t\t}\n\n\t\tlet method = init.method || input.method || 'GET';\n\t\tmethod = method.toUpperCase();\n\n\t\tif ((init.body != null || isRequest(input) && input.body !== null) && (method === 'GET' || method === 'HEAD')) {\n\t\t\tthrow new TypeError('Request with GET/HEAD method cannot have body');\n\t\t}\n\n\t\tlet inputBody = init.body != null ? init.body : isRequest(input) && input.body !== null ? clone(input) : null;\n\n\t\tBody.call(this, inputBody, {\n\t\t\ttimeout: init.timeout || input.timeout || 0,\n\t\t\tsize: init.size || input.size || 0\n\t\t});\n\n\t\tconst headers = new Headers(init.headers || input.headers || {});\n\n\t\tif (inputBody != null && !headers.has('Content-Type')) {\n\t\t\tconst contentType = extractContentType(inputBody);\n\t\t\tif (contentType) {\n\t\t\t\theaders.append('Content-Type', contentType);\n\t\t\t}\n\t\t}\n\n\t\tlet signal = isRequest(input) ? input.signal : null;\n\t\tif ('signal' in init) signal = init.signal;\n\n\t\tif (signal != null && !isAbortSignal(signal)) {\n\t\t\tthrow new TypeError('Expected signal to be an instanceof AbortSignal');\n\t\t}\n\n\t\tthis[INTERNALS$2] = {\n\t\t\tmethod,\n\t\t\tredirect: init.redirect || input.redirect || 'follow',\n\t\t\theaders,\n\t\t\tparsedURL,\n\t\t\tsignal\n\t\t};\n\n\t\t// node-fetch-only options\n\t\tthis.follow = init.follow !== undefined ? init.follow : input.follow !== undefined ? input.follow : 20;\n\t\tthis.compress = init.compress !== undefined ? init.compress : input.compress !== undefined ? input.compress : true;\n\t\tthis.counter = init.counter || input.counter || 0;\n\t\tthis.agent = init.agent || input.agent;\n\t}\n\n\tget method() {\n\t\treturn this[INTERNALS$2].method;\n\t}\n\n\tget url() {\n\t\treturn format_url(this[INTERNALS$2].parsedURL);\n\t}\n\n\tget headers() {\n\t\treturn this[INTERNALS$2].headers;\n\t}\n\n\tget redirect() {\n\t\treturn this[INTERNALS$2].redirect;\n\t}\n\n\tget signal() {\n\t\treturn this[INTERNALS$2].signal;\n\t}\n\n\t/**\n * Clone this request\n *\n * @return Request\n */\n\tclone() {\n\t\treturn new Request(this);\n\t}\n}\n\nBody.mixIn(Request.prototype);\n\nObject.defineProperty(Request.prototype, Symbol.toStringTag, {\n\tvalue: 'Request',\n\twritable: false,\n\tenumerable: false,\n\tconfigurable: true\n});\n\nObject.defineProperties(Request.prototype, {\n\tmethod: { enumerable: true },\n\turl: { enumerable: true },\n\theaders: { enumerable: true },\n\tredirect: { enumerable: true },\n\tclone: { enumerable: true },\n\tsignal: { enumerable: true }\n});\n\n/**\n * Convert a Request to Node.js http request options.\n *\n * @param Request A Request instance\n * @return Object The options object to be passed to http.request\n */\nfunction getNodeRequestOptions(request) {\n\tconst parsedURL = request[INTERNALS$2].parsedURL;\n\tconst headers = new Headers(request[INTERNALS$2].headers);\n\n\t// fetch step 1.3\n\tif (!headers.has('Accept')) {\n\t\theaders.set('Accept', '*/*');\n\t}\n\n\t// Basic fetch\n\tif (!parsedURL.protocol || !parsedURL.hostname) {\n\t\tthrow new TypeError('Only absolute URLs are supported');\n\t}\n\n\tif (!/^https?:$/.test(parsedURL.protocol)) {\n\t\tthrow new TypeError('Only HTTP(S) protocols are supported');\n\t}\n\n\tif (request.signal && request.body instanceof Stream.Readable && !streamDestructionSupported) {\n\t\tthrow new Error('Cancellation of streamed requests with AbortSignal is not supported in node < 8');\n\t}\n\n\t// HTTP-network-or-cache fetch steps 2.4-2.7\n\tlet contentLengthValue = null;\n\tif (request.body == null && /^(POST|PUT)$/i.test(request.method)) {\n\t\tcontentLengthValue = '0';\n\t}\n\tif (request.body != null) {\n\t\tconst totalBytes = getTotalBytes(request);\n\t\tif (typeof totalBytes === 'number') {\n\t\t\tcontentLengthValue = String(totalBytes);\n\t\t}\n\t}\n\tif (contentLengthValue) {\n\t\theaders.set('Content-Length', contentLengthValue);\n\t}\n\n\t// HTTP-network-or-cache fetch step 2.11\n\tif (!headers.has('User-Agent')) {\n\t\theaders.set('User-Agent', 'node-fetch/1.0 (+https://github.com/bitinn/node-fetch)');\n\t}\n\n\t// HTTP-network-or-cache fetch step 2.15\n\tif (request.compress && !headers.has('Accept-Encoding')) {\n\t\theaders.set('Accept-Encoding', 'gzip,deflate');\n\t}\n\n\tlet agent = request.agent;\n\tif (typeof agent === 'function') {\n\t\tagent = agent(parsedURL);\n\t}\n\n\t// HTTP-network fetch step 4.2\n\t// chunked encoding is handled by Node.js\n\n\treturn Object.assign({}, parsedURL, {\n\t\tmethod: request.method,\n\t\theaders: exportNodeCompatibleHeaders(headers),\n\t\tagent\n\t});\n}\n\n/**\n * abort-error.js\n *\n * AbortError interface for cancelled requests\n */\n\n/**\n * Create AbortError instance\n *\n * @param String message Error message for human\n * @return AbortError\n */\nfunction AbortError(message) {\n Error.call(this, message);\n\n this.type = 'aborted';\n this.message = message;\n\n // hide custom error implementation details from end-users\n Error.captureStackTrace(this, this.constructor);\n}\n\nAbortError.prototype = Object.create(Error.prototype);\nAbortError.prototype.constructor = AbortError;\nAbortError.prototype.name = 'AbortError';\n\nconst URL$1 = Url.URL || whatwgUrl.URL;\n\n// fix an issue where \"PassThrough\", \"resolve\" aren't a named export for node <10\nconst PassThrough$1 = Stream.PassThrough;\n\nconst isDomainOrSubdomain = function isDomainOrSubdomain(destination, original) {\n\tconst orig = new URL$1(original).hostname;\n\tconst dest = new URL$1(destination).hostname;\n\n\treturn orig === dest || orig[orig.length - dest.length - 1] === '.' && orig.endsWith(dest);\n};\n\n/**\n * isSameProtocol reports whether the two provided URLs use the same protocol.\n *\n * Both domains must already be in canonical form.\n * @param {string|URL} original\n * @param {string|URL} destination\n */\nconst isSameProtocol = function isSameProtocol(destination, original) {\n\tconst orig = new URL$1(original).protocol;\n\tconst dest = new URL$1(destination).protocol;\n\n\treturn orig === dest;\n};\n\n/**\n * Fetch function\n *\n * @param Mixed url Absolute url or Request instance\n * @param Object opts Fetch options\n * @return Promise\n */\nfunction fetch(url, opts) {\n\n\t// allow custom promise\n\tif (!fetch.Promise) {\n\t\tthrow new Error('native promise missing, set fetch.Promise to your favorite alternative');\n\t}\n\n\tBody.Promise = fetch.Promise;\n\n\t// wrap http.request into fetch\n\treturn new fetch.Promise(function (resolve, reject) {\n\t\t// build request object\n\t\tconst request = new Request(url, opts);\n\t\tconst options = getNodeRequestOptions(request);\n\n\t\tconst send = (options.protocol === 'https:' ? https : http).request;\n\t\tconst signal = request.signal;\n\n\t\tlet response = null;\n\n\t\tconst abort = function abort() {\n\t\t\tlet error = new AbortError('The user aborted a request.');\n\t\t\treject(error);\n\t\t\tif (request.body && request.body instanceof Stream.Readable) {\n\t\t\t\tdestroyStream(request.body, error);\n\t\t\t}\n\t\t\tif (!response || !response.body) return;\n\t\t\tresponse.body.emit('error', error);\n\t\t};\n\n\t\tif (signal && signal.aborted) {\n\t\t\tabort();\n\t\t\treturn;\n\t\t}\n\n\t\tconst abortAndFinalize = function abortAndFinalize() {\n\t\t\tabort();\n\t\t\tfinalize();\n\t\t};\n\n\t\t// send request\n\t\tconst req = send(options);\n\t\tlet reqTimeout;\n\n\t\tif (signal) {\n\t\t\tsignal.addEventListener('abort', abortAndFinalize);\n\t\t}\n\n\t\tfunction finalize() {\n\t\t\treq.abort();\n\t\t\tif (signal) signal.removeEventListener('abort', abortAndFinalize);\n\t\t\tclearTimeout(reqTimeout);\n\t\t}\n\n\t\tif (request.timeout) {\n\t\t\treq.once('socket', function (socket) {\n\t\t\t\treqTimeout = setTimeout(function () {\n\t\t\t\t\treject(new FetchError(`network timeout at: ${request.url}`, 'request-timeout'));\n\t\t\t\t\tfinalize();\n\t\t\t\t}, request.timeout);\n\t\t\t});\n\t\t}\n\n\t\treq.on('error', function (err) {\n\t\t\treject(new FetchError(`request to ${request.url} failed, reason: ${err.message}`, 'system', err));\n\n\t\t\tif (response && response.body) {\n\t\t\t\tdestroyStream(response.body, err);\n\t\t\t}\n\n\t\t\tfinalize();\n\t\t});\n\n\t\tfixResponseChunkedTransferBadEnding(req, function (err) {\n\t\t\tif (signal && signal.aborted) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (response && response.body) {\n\t\t\t\tdestroyStream(response.body, err);\n\t\t\t}\n\t\t});\n\n\t\t/* c8 ignore next 18 */\n\t\tif (parseInt(process.version.substring(1)) < 14) {\n\t\t\t// Before Node.js 14, pipeline() does not fully support async iterators and does not always\n\t\t\t// properly handle when the socket close/end events are out of order.\n\t\t\treq.on('socket', function (s) {\n\t\t\t\ts.addListener('close', function (hadError) {\n\t\t\t\t\t// if a data listener is still present we didn't end cleanly\n\t\t\t\t\tconst hasDataListener = s.listenerCount('data') > 0;\n\n\t\t\t\t\t// if end happened before close but the socket didn't emit an error, do it now\n\t\t\t\t\tif (response && hasDataListener && !hadError && !(signal && signal.aborted)) {\n\t\t\t\t\t\tconst err = new Error('Premature close');\n\t\t\t\t\t\terr.code = 'ERR_STREAM_PREMATURE_CLOSE';\n\t\t\t\t\t\tresponse.body.emit('error', err);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t});\n\t\t}\n\n\t\treq.on('response', function (res) {\n\t\t\tclearTimeout(reqTimeout);\n\n\t\t\tconst headers = createHeadersLenient(res.headers);\n\n\t\t\t// HTTP fetch step 5\n\t\t\tif (fetch.isRedirect(res.statusCode)) {\n\t\t\t\t// HTTP fetch step 5.2\n\t\t\t\tconst location = headers.get('Location');\n\n\t\t\t\t// HTTP fetch step 5.3\n\t\t\t\tlet locationURL = null;\n\t\t\t\ttry {\n\t\t\t\t\tlocationURL = location === null ? null : new URL$1(location, request.url).toString();\n\t\t\t\t} catch (err) {\n\t\t\t\t\t// error here can only be invalid URL in Location: header\n\t\t\t\t\t// do not throw when options.redirect == manual\n\t\t\t\t\t// let the user extract the errorneous redirect URL\n\t\t\t\t\tif (request.redirect !== 'manual') {\n\t\t\t\t\t\treject(new FetchError(`uri requested responds with an invalid redirect URL: ${location}`, 'invalid-redirect'));\n\t\t\t\t\t\tfinalize();\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// HTTP fetch step 5.5\n\t\t\t\tswitch (request.redirect) {\n\t\t\t\t\tcase 'error':\n\t\t\t\t\t\treject(new FetchError(`uri requested responds with a redirect, redirect mode is set to error: ${request.url}`, 'no-redirect'));\n\t\t\t\t\t\tfinalize();\n\t\t\t\t\t\treturn;\n\t\t\t\t\tcase 'manual':\n\t\t\t\t\t\t// node-fetch-specific step: make manual redirect a bit easier to use by setting the Location header value to the resolved URL.\n\t\t\t\t\t\tif (locationURL !== null) {\n\t\t\t\t\t\t\t// handle corrupted header\n\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\theaders.set('Location', locationURL);\n\t\t\t\t\t\t\t} catch (err) {\n\t\t\t\t\t\t\t\t// istanbul ignore next: nodejs server prevent invalid response headers, we can't test this through normal request\n\t\t\t\t\t\t\t\treject(err);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'follow':\n\t\t\t\t\t\t// HTTP-redirect fetch step 2\n\t\t\t\t\t\tif (locationURL === null) {\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// HTTP-redirect fetch step 5\n\t\t\t\t\t\tif (request.counter >= request.follow) {\n\t\t\t\t\t\t\treject(new FetchError(`maximum redirect reached at: ${request.url}`, 'max-redirect'));\n\t\t\t\t\t\t\tfinalize();\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// HTTP-redirect fetch step 6 (counter increment)\n\t\t\t\t\t\t// Create a new Request object.\n\t\t\t\t\t\tconst requestOpts = {\n\t\t\t\t\t\t\theaders: new Headers(request.headers),\n\t\t\t\t\t\t\tfollow: request.follow,\n\t\t\t\t\t\t\tcounter: request.counter + 1,\n\t\t\t\t\t\t\tagent: request.agent,\n\t\t\t\t\t\t\tcompress: request.compress,\n\t\t\t\t\t\t\tmethod: request.method,\n\t\t\t\t\t\t\tbody: request.body,\n\t\t\t\t\t\t\tsignal: request.signal,\n\t\t\t\t\t\t\ttimeout: request.timeout,\n\t\t\t\t\t\t\tsize: request.size\n\t\t\t\t\t\t};\n\n\t\t\t\t\t\tif (!isDomainOrSubdomain(request.url, locationURL) || !isSameProtocol(request.url, locationURL)) {\n\t\t\t\t\t\t\tfor (const name of ['authorization', 'www-authenticate', 'cookie', 'cookie2']) {\n\t\t\t\t\t\t\t\trequestOpts.headers.delete(name);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// HTTP-redirect fetch step 9\n\t\t\t\t\t\tif (res.statusCode !== 303 && request.body && getTotalBytes(request) === null) {\n\t\t\t\t\t\t\treject(new FetchError('Cannot follow redirect with body being a readable stream', 'unsupported-redirect'));\n\t\t\t\t\t\t\tfinalize();\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// HTTP-redirect fetch step 11\n\t\t\t\t\t\tif (res.statusCode === 303 || (res.statusCode === 301 || res.statusCode === 302) && request.method === 'POST') {\n\t\t\t\t\t\t\trequestOpts.method = 'GET';\n\t\t\t\t\t\t\trequestOpts.body = undefined;\n\t\t\t\t\t\t\trequestOpts.headers.delete('content-length');\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// HTTP-redirect fetch step 15\n\t\t\t\t\t\tresolve(fetch(new Request(locationURL, requestOpts)));\n\t\t\t\t\t\tfinalize();\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// prepare response\n\t\t\tres.once('end', function () {\n\t\t\t\tif (signal) signal.removeEventListener('abort', abortAndFinalize);\n\t\t\t});\n\t\t\tlet body = res.pipe(new PassThrough$1());\n\n\t\t\tconst response_options = {\n\t\t\t\turl: request.url,\n\t\t\t\tstatus: res.statusCode,\n\t\t\t\tstatusText: res.statusMessage,\n\t\t\t\theaders: headers,\n\t\t\t\tsize: request.size,\n\t\t\t\ttimeout: request.timeout,\n\t\t\t\tcounter: request.counter\n\t\t\t};\n\n\t\t\t// HTTP-network fetch step 12.1.1.3\n\t\t\tconst codings = headers.get('Content-Encoding');\n\n\t\t\t// HTTP-network fetch step 12.1.1.4: handle content codings\n\n\t\t\t// in following scenarios we ignore compression support\n\t\t\t// 1. compression support is disabled\n\t\t\t// 2. HEAD request\n\t\t\t// 3. no Content-Encoding header\n\t\t\t// 4. no content response (204)\n\t\t\t// 5. content not modified response (304)\n\t\t\tif (!request.compress || request.method === 'HEAD' || codings === null || res.statusCode === 204 || res.statusCode === 304) {\n\t\t\t\tresponse = new Response(body, response_options);\n\t\t\t\tresolve(response);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// For Node v6+\n\t\t\t// Be less strict when decoding compressed responses, since sometimes\n\t\t\t// servers send slightly invalid responses that are still accepted\n\t\t\t// by common browsers.\n\t\t\t// Always using Z_SYNC_FLUSH is what cURL does.\n\t\t\tconst zlibOptions = {\n\t\t\t\tflush: zlib.Z_SYNC_FLUSH,\n\t\t\t\tfinishFlush: zlib.Z_SYNC_FLUSH\n\t\t\t};\n\n\t\t\t// for gzip\n\t\t\tif (codings == 'gzip' || codings == 'x-gzip') {\n\t\t\t\tbody = body.pipe(zlib.createGunzip(zlibOptions));\n\t\t\t\tresponse = new Response(body, response_options);\n\t\t\t\tresolve(response);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// for deflate\n\t\t\tif (codings == 'deflate' || codings == 'x-deflate') {\n\t\t\t\t// handle the infamous raw deflate response from old servers\n\t\t\t\t// a hack for old IIS and Apache servers\n\t\t\t\tconst raw = res.pipe(new PassThrough$1());\n\t\t\t\traw.once('data', function (chunk) {\n\t\t\t\t\t// see http://stackoverflow.com/questions/37519828\n\t\t\t\t\tif ((chunk[0] & 0x0F) === 0x08) {\n\t\t\t\t\t\tbody = body.pipe(zlib.createInflate());\n\t\t\t\t\t} else {\n\t\t\t\t\t\tbody = body.pipe(zlib.createInflateRaw());\n\t\t\t\t\t}\n\t\t\t\t\tresponse = new Response(body, response_options);\n\t\t\t\t\tresolve(response);\n\t\t\t\t});\n\t\t\t\traw.on('end', function () {\n\t\t\t\t\t// some old IIS servers return zero-length OK deflate responses, so 'data' is never emitted.\n\t\t\t\t\tif (!response) {\n\t\t\t\t\t\tresponse = new Response(body, response_options);\n\t\t\t\t\t\tresolve(response);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// for br\n\t\t\tif (codings == 'br' && typeof zlib.createBrotliDecompress === 'function') {\n\t\t\t\tbody = body.pipe(zlib.createBrotliDecompress());\n\t\t\t\tresponse = new Response(body, response_options);\n\t\t\t\tresolve(response);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// otherwise, use response as-is\n\t\t\tresponse = new Response(body, response_options);\n\t\t\tresolve(response);\n\t\t});\n\n\t\twriteToStream(req, request);\n\t});\n}\nfunction fixResponseChunkedTransferBadEnding(request, errorCallback) {\n\tlet socket;\n\n\trequest.on('socket', function (s) {\n\t\tsocket = s;\n\t});\n\n\trequest.on('response', function (response) {\n\t\tconst headers = response.headers;\n\n\t\tif (headers['transfer-encoding'] === 'chunked' && !headers['content-length']) {\n\t\t\tresponse.once('close', function (hadError) {\n\t\t\t\t// tests for socket presence, as in some situations the\n\t\t\t\t// the 'socket' event is not triggered for the request\n\t\t\t\t// (happens in deno), avoids `TypeError`\n\t\t\t\t// if a data listener is still present we didn't end cleanly\n\t\t\t\tconst hasDataListener = socket && socket.listenerCount('data') > 0;\n\n\t\t\t\tif (hasDataListener && !hadError) {\n\t\t\t\t\tconst err = new Error('Premature close');\n\t\t\t\t\terr.code = 'ERR_STREAM_PREMATURE_CLOSE';\n\t\t\t\t\terrorCallback(err);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t});\n}\n\nfunction destroyStream(stream, err) {\n\tif (stream.destroy) {\n\t\tstream.destroy(err);\n\t} else {\n\t\t// node < 8\n\t\tstream.emit('error', err);\n\t\tstream.end();\n\t}\n}\n\n/**\n * Redirect code matching\n *\n * @param Number code Status code\n * @return Boolean\n */\nfetch.isRedirect = function (code) {\n\treturn code === 301 || code === 302 || code === 303 || code === 307 || code === 308;\n};\n\n// expose Promise\nfetch.Promise = global.Promise;\n\nmodule.exports = exports = fetch;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.default = exports;\nexports.Headers = Headers;\nexports.Request = Request;\nexports.Response = Response;\nexports.FetchError = FetchError;\nexports.AbortError = AbortError;\n", null, "\"use strict\";\n/* --------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n * ------------------------------------------------------------------------------------------ */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.stringArray = exports.array = exports.func = exports.error = exports.number = exports.string = exports.boolean = void 0;\nfunction boolean(value) {\n return value === true || value === false;\n}\nexports.boolean = boolean;\nfunction string(value) {\n return typeof value === 'string' || value instanceof String;\n}\nexports.string = string;\nfunction number(value) {\n return typeof value === 'number' || value instanceof Number;\n}\nexports.number = number;\nfunction error(value) {\n return value instanceof Error;\n}\nexports.error = error;\nfunction func(value) {\n return typeof value === 'function';\n}\nexports.func = func;\nfunction array(value) {\n return Array.isArray(value);\n}\nexports.array = array;\nfunction stringArray(value) {\n return array(value) && value.every(elem => string(elem));\n}\nexports.stringArray = stringArray;\n", "\"use strict\";\n/* --------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n * ------------------------------------------------------------------------------------------ */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Message = exports.NotificationType9 = exports.NotificationType8 = exports.NotificationType7 = exports.NotificationType6 = exports.NotificationType5 = exports.NotificationType4 = exports.NotificationType3 = exports.NotificationType2 = exports.NotificationType1 = exports.NotificationType0 = exports.NotificationType = exports.RequestType9 = exports.RequestType8 = exports.RequestType7 = exports.RequestType6 = exports.RequestType5 = exports.RequestType4 = exports.RequestType3 = exports.RequestType2 = exports.RequestType1 = exports.RequestType = exports.RequestType0 = exports.AbstractMessageSignature = exports.ParameterStructures = exports.ResponseError = exports.ErrorCodes = void 0;\nconst is = require(\"./is\");\n/**\n * Predefined error codes.\n */\nvar ErrorCodes;\n(function (ErrorCodes) {\n // Defined by JSON RPC\n ErrorCodes.ParseError = -32700;\n ErrorCodes.InvalidRequest = -32600;\n ErrorCodes.MethodNotFound = -32601;\n ErrorCodes.InvalidParams = -32602;\n ErrorCodes.InternalError = -32603;\n /**\n * This is the start range of JSON RPC reserved error codes.\n * It doesn't denote a real error code. No application error codes should\n * be defined between the start and end range. For backwards\n * compatibility the `ServerNotInitialized` and the `UnknownErrorCode`\n * are left in the range.\n *\n * @since 3.16.0\n */\n ErrorCodes.jsonrpcReservedErrorRangeStart = -32099;\n /** @deprecated use jsonrpcReservedErrorRangeStart */\n ErrorCodes.serverErrorStart = -32099;\n /**\n * An error occurred when write a message to the transport layer.\n */\n ErrorCodes.MessageWriteError = -32099;\n /**\n * An error occurred when reading a message from the transport layer.\n */\n ErrorCodes.MessageReadError = -32098;\n /**\n * The connection got disposed or lost and all pending responses got\n * rejected.\n */\n ErrorCodes.PendingResponseRejected = -32097;\n /**\n * The connection is inactive and a use of it failed.\n */\n ErrorCodes.ConnectionInactive = -32096;\n /**\n * Error code indicating that a server received a notification or\n * request before the server has received the `initialize` request.\n */\n ErrorCodes.ServerNotInitialized = -32002;\n ErrorCodes.UnknownErrorCode = -32001;\n /**\n * This is the end range of JSON RPC reserved error codes.\n * It doesn't denote a real error code.\n *\n * @since 3.16.0\n */\n ErrorCodes.jsonrpcReservedErrorRangeEnd = -32000;\n /** @deprecated use jsonrpcReservedErrorRangeEnd */\n ErrorCodes.serverErrorEnd = -32000;\n})(ErrorCodes || (exports.ErrorCodes = ErrorCodes = {}));\n/**\n * An error object return in a response in case a request\n * has failed.\n */\nclass ResponseError extends Error {\n constructor(code, message, data) {\n super(message);\n this.code = is.number(code) ? code : ErrorCodes.UnknownErrorCode;\n this.data = data;\n Object.setPrototypeOf(this, ResponseError.prototype);\n }\n toJson() {\n const result = {\n code: this.code,\n message: this.message\n };\n if (this.data !== undefined) {\n result.data = this.data;\n }\n return result;\n }\n}\nexports.ResponseError = ResponseError;\nclass ParameterStructures {\n constructor(kind) {\n this.kind = kind;\n }\n static is(value) {\n return value === ParameterStructures.auto || value === ParameterStructures.byName || value === ParameterStructures.byPosition;\n }\n toString() {\n return this.kind;\n }\n}\nexports.ParameterStructures = ParameterStructures;\n/**\n * The parameter structure is automatically inferred on the number of parameters\n * and the parameter type in case of a single param.\n */\nParameterStructures.auto = new ParameterStructures('auto');\n/**\n * Forces `byPosition` parameter structure. This is useful if you have a single\n * parameter which has a literal type.\n */\nParameterStructures.byPosition = new ParameterStructures('byPosition');\n/**\n * Forces `byName` parameter structure. This is only useful when having a single\n * parameter. The library will report errors if used with a different number of\n * parameters.\n */\nParameterStructures.byName = new ParameterStructures('byName');\n/**\n * An abstract implementation of a MessageType.\n */\nclass AbstractMessageSignature {\n constructor(method, numberOfParams) {\n this.method = method;\n this.numberOfParams = numberOfParams;\n }\n get parameterStructures() {\n return ParameterStructures.auto;\n }\n}\nexports.AbstractMessageSignature = AbstractMessageSignature;\n/**\n * Classes to type request response pairs\n */\nclass RequestType0 extends AbstractMessageSignature {\n constructor(method) {\n super(method, 0);\n }\n}\nexports.RequestType0 = RequestType0;\nclass RequestType extends AbstractMessageSignature {\n constructor(method, _parameterStructures = ParameterStructures.auto) {\n super(method, 1);\n this._parameterStructures = _parameterStructures;\n }\n get parameterStructures() {\n return this._parameterStructures;\n }\n}\nexports.RequestType = RequestType;\nclass RequestType1 extends AbstractMessageSignature {\n constructor(method, _parameterStructures = ParameterStructures.auto) {\n super(method, 1);\n this._parameterStructures = _parameterStructures;\n }\n get parameterStructures() {\n return this._parameterStructures;\n }\n}\nexports.RequestType1 = RequestType1;\nclass RequestType2 extends AbstractMessageSignature {\n constructor(method) {\n super(method, 2);\n }\n}\nexports.RequestType2 = RequestType2;\nclass RequestType3 extends AbstractMessageSignature {\n constructor(method) {\n super(method, 3);\n }\n}\nexports.RequestType3 = RequestType3;\nclass RequestType4 extends AbstractMessageSignature {\n constructor(method) {\n super(method, 4);\n }\n}\nexports.RequestType4 = RequestType4;\nclass RequestType5 extends AbstractMessageSignature {\n constructor(method) {\n super(method, 5);\n }\n}\nexports.RequestType5 = RequestType5;\nclass RequestType6 extends AbstractMessageSignature {\n constructor(method) {\n super(method, 6);\n }\n}\nexports.RequestType6 = RequestType6;\nclass RequestType7 extends AbstractMessageSignature {\n constructor(method) {\n super(method, 7);\n }\n}\nexports.RequestType7 = RequestType7;\nclass RequestType8 extends AbstractMessageSignature {\n constructor(method) {\n super(method, 8);\n }\n}\nexports.RequestType8 = RequestType8;\nclass RequestType9 extends AbstractMessageSignature {\n constructor(method) {\n super(method, 9);\n }\n}\nexports.RequestType9 = RequestType9;\nclass NotificationType extends AbstractMessageSignature {\n constructor(method, _parameterStructures = ParameterStructures.auto) {\n super(method, 1);\n this._parameterStructures = _parameterStructures;\n }\n get parameterStructures() {\n return this._parameterStructures;\n }\n}\nexports.NotificationType = NotificationType;\nclass NotificationType0 extends AbstractMessageSignature {\n constructor(method) {\n super(method, 0);\n }\n}\nexports.NotificationType0 = NotificationType0;\nclass NotificationType1 extends AbstractMessageSignature {\n constructor(method, _parameterStructures = ParameterStructures.auto) {\n super(method, 1);\n this._parameterStructures = _parameterStructures;\n }\n get parameterStructures() {\n return this._parameterStructures;\n }\n}\nexports.NotificationType1 = NotificationType1;\nclass NotificationType2 extends AbstractMessageSignature {\n constructor(method) {\n super(method, 2);\n }\n}\nexports.NotificationType2 = NotificationType2;\nclass NotificationType3 extends AbstractMessageSignature {\n constructor(method) {\n super(method, 3);\n }\n}\nexports.NotificationType3 = NotificationType3;\nclass NotificationType4 extends AbstractMessageSignature {\n constructor(method) {\n super(method, 4);\n }\n}\nexports.NotificationType4 = NotificationType4;\nclass NotificationType5 extends AbstractMessageSignature {\n constructor(method) {\n super(method, 5);\n }\n}\nexports.NotificationType5 = NotificationType5;\nclass NotificationType6 extends AbstractMessageSignature {\n constructor(method) {\n super(method, 6);\n }\n}\nexports.NotificationType6 = NotificationType6;\nclass NotificationType7 extends AbstractMessageSignature {\n constructor(method) {\n super(method, 7);\n }\n}\nexports.NotificationType7 = NotificationType7;\nclass NotificationType8 extends AbstractMessageSignature {\n constructor(method) {\n super(method, 8);\n }\n}\nexports.NotificationType8 = NotificationType8;\nclass NotificationType9 extends AbstractMessageSignature {\n constructor(method) {\n super(method, 9);\n }\n}\nexports.NotificationType9 = NotificationType9;\nvar Message;\n(function (Message) {\n /**\n * Tests if the given message is a request message\n */\n function isRequest(message) {\n const candidate = message;\n return candidate && is.string(candidate.method) && (is.string(candidate.id) || is.number(candidate.id));\n }\n Message.isRequest = isRequest;\n /**\n * Tests if the given message is a notification message\n */\n function isNotification(message) {\n const candidate = message;\n return candidate && is.string(candidate.method) && message.id === void 0;\n }\n Message.isNotification = isNotification;\n /**\n * Tests if the given message is a response message\n */\n function isResponse(message) {\n const candidate = message;\n return candidate && (candidate.result !== void 0 || !!candidate.error) && (is.string(candidate.id) || is.number(candidate.id) || candidate.id === null);\n }\n Message.isResponse = isResponse;\n})(Message || (exports.Message = Message = {}));\n", "\"use strict\";\n/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nvar _a;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.LRUCache = exports.LinkedMap = exports.Touch = void 0;\nvar Touch;\n(function (Touch) {\n Touch.None = 0;\n Touch.First = 1;\n Touch.AsOld = Touch.First;\n Touch.Last = 2;\n Touch.AsNew = Touch.Last;\n})(Touch || (exports.Touch = Touch = {}));\nclass LinkedMap {\n constructor() {\n this[_a] = 'LinkedMap';\n this._map = new Map();\n this._head = undefined;\n this._tail = undefined;\n this._size = 0;\n this._state = 0;\n }\n clear() {\n this._map.clear();\n this._head = undefined;\n this._tail = undefined;\n this._size = 0;\n this._state++;\n }\n isEmpty() {\n return !this._head && !this._tail;\n }\n get size() {\n return this._size;\n }\n get first() {\n return this._head?.value;\n }\n get last() {\n return this._tail?.value;\n }\n has(key) {\n return this._map.has(key);\n }\n get(key, touch = Touch.None) {\n const item = this._map.get(key);\n if (!item) {\n return undefined;\n }\n if (touch !== Touch.None) {\n this.touch(item, touch);\n }\n return item.value;\n }\n set(key, value, touch = Touch.None) {\n let item = this._map.get(key);\n if (item) {\n item.value = value;\n if (touch !== Touch.None) {\n this.touch(item, touch);\n }\n }\n else {\n item = { key, value, next: undefined, previous: undefined };\n switch (touch) {\n case Touch.None:\n this.addItemLast(item);\n break;\n case Touch.First:\n this.addItemFirst(item);\n break;\n case Touch.Last:\n this.addItemLast(item);\n break;\n default:\n this.addItemLast(item);\n break;\n }\n this._map.set(key, item);\n this._size++;\n }\n return this;\n }\n delete(key) {\n return !!this.remove(key);\n }\n remove(key) {\n const item = this._map.get(key);\n if (!item) {\n return undefined;\n }\n this._map.delete(key);\n this.removeItem(item);\n this._size--;\n return item.value;\n }\n shift() {\n if (!this._head && !this._tail) {\n return undefined;\n }\n if (!this._head || !this._tail) {\n throw new Error('Invalid list');\n }\n const item = this._head;\n this._map.delete(item.key);\n this.removeItem(item);\n this._size--;\n return item.value;\n }\n forEach(callbackfn, thisArg) {\n const state = this._state;\n let current = this._head;\n while (current) {\n if (thisArg) {\n callbackfn.bind(thisArg)(current.value, current.key, this);\n }\n else {\n callbackfn(current.value, current.key, this);\n }\n if (this._state !== state) {\n throw new Error(`LinkedMap got modified during iteration.`);\n }\n current = current.next;\n }\n }\n keys() {\n const state = this._state;\n let current = this._head;\n const iterator = {\n [Symbol.iterator]: () => {\n return iterator;\n },\n next: () => {\n if (this._state !== state) {\n throw new Error(`LinkedMap got modified during iteration.`);\n }\n if (current) {\n const result = { value: current.key, done: false };\n current = current.next;\n return result;\n }\n else {\n return { value: undefined, done: true };\n }\n }\n };\n return iterator;\n }\n values() {\n const state = this._state;\n let current = this._head;\n const iterator = {\n [Symbol.iterator]: () => {\n return iterator;\n },\n next: () => {\n if (this._state !== state) {\n throw new Error(`LinkedMap got modified during iteration.`);\n }\n if (current) {\n const result = { value: current.value, done: false };\n current = current.next;\n return result;\n }\n else {\n return { value: undefined, done: true };\n }\n }\n };\n return iterator;\n }\n entries() {\n const state = this._state;\n let current = this._head;\n const iterator = {\n [Symbol.iterator]: () => {\n return iterator;\n },\n next: () => {\n if (this._state !== state) {\n throw new Error(`LinkedMap got modified during iteration.`);\n }\n if (current) {\n const result = { value: [current.key, current.value], done: false };\n current = current.next;\n return result;\n }\n else {\n return { value: undefined, done: true };\n }\n }\n };\n return iterator;\n }\n [(_a = Symbol.toStringTag, Symbol.iterator)]() {\n return this.entries();\n }\n trimOld(newSize) {\n if (newSize >= this.size) {\n return;\n }\n if (newSize === 0) {\n this.clear();\n return;\n }\n let current = this._head;\n let currentSize = this.size;\n while (current && currentSize > newSize) {\n this._map.delete(current.key);\n current = current.next;\n currentSize--;\n }\n this._head = current;\n this._size = currentSize;\n if (current) {\n current.previous = undefined;\n }\n this._state++;\n }\n addItemFirst(item) {\n // First time Insert\n if (!this._head && !this._tail) {\n this._tail = item;\n }\n else if (!this._head) {\n throw new Error('Invalid list');\n }\n else {\n item.next = this._head;\n this._head.previous = item;\n }\n this._head = item;\n this._state++;\n }\n addItemLast(item) {\n // First time Insert\n if (!this._head && !this._tail) {\n this._head = item;\n }\n else if (!this._tail) {\n throw new Error('Invalid list');\n }\n else {\n item.previous = this._tail;\n this._tail.next = item;\n }\n this._tail = item;\n this._state++;\n }\n removeItem(item) {\n if (item === this._head && item === this._tail) {\n this._head = undefined;\n this._tail = undefined;\n }\n else if (item === this._head) {\n // This can only happened if size === 1 which is handle\n // by the case above.\n if (!item.next) {\n throw new Error('Invalid list');\n }\n item.next.previous = undefined;\n this._head = item.next;\n }\n else if (item === this._tail) {\n // This can only happened if size === 1 which is handle\n // by the case above.\n if (!item.previous) {\n throw new Error('Invalid list');\n }\n item.previous.next = undefined;\n this._tail = item.previous;\n }\n else {\n const next = item.next;\n const previous = item.previous;\n if (!next || !previous) {\n throw new Error('Invalid list');\n }\n next.previous = previous;\n previous.next = next;\n }\n item.next = undefined;\n item.previous = undefined;\n this._state++;\n }\n touch(item, touch) {\n if (!this._head || !this._tail) {\n throw new Error('Invalid list');\n }\n if ((touch !== Touch.First && touch !== Touch.Last)) {\n return;\n }\n if (touch === Touch.First) {\n if (item === this._head) {\n return;\n }\n const next = item.next;\n const previous = item.previous;\n // Unlink the item\n if (item === this._tail) {\n // previous must be defined since item was not head but is tail\n // So there are more than on item in the map\n previous.next = undefined;\n this._tail = previous;\n }\n else {\n // Both next and previous are not undefined since item was neither head nor tail.\n next.previous = previous;\n previous.next = next;\n }\n // Insert the node at head\n item.previous = undefined;\n item.next = this._head;\n this._head.previous = item;\n this._head = item;\n this._state++;\n }\n else if (touch === Touch.Last) {\n if (item === this._tail) {\n return;\n }\n const next = item.next;\n const previous = item.previous;\n // Unlink the item.\n if (item === this._head) {\n // next must be defined since item was not tail but is head\n // So there are more than on item in the map\n next.previous = undefined;\n this._head = next;\n }\n else {\n // Both next and previous are not undefined since item was neither head nor tail.\n next.previous = previous;\n previous.next = next;\n }\n item.next = undefined;\n item.previous = this._tail;\n this._tail.next = item;\n this._tail = item;\n this._state++;\n }\n }\n toJSON() {\n const data = [];\n this.forEach((value, key) => {\n data.push([key, value]);\n });\n return data;\n }\n fromJSON(data) {\n this.clear();\n for (const [key, value] of data) {\n this.set(key, value);\n }\n }\n}\nexports.LinkedMap = LinkedMap;\nclass LRUCache extends LinkedMap {\n constructor(limit, ratio = 1) {\n super();\n this._limit = limit;\n this._ratio = Math.min(Math.max(0, ratio), 1);\n }\n get limit() {\n return this._limit;\n }\n set limit(limit) {\n this._limit = limit;\n this.checkTrim();\n }\n get ratio() {\n return this._ratio;\n }\n set ratio(ratio) {\n this._ratio = Math.min(Math.max(0, ratio), 1);\n this.checkTrim();\n }\n get(key, touch = Touch.AsNew) {\n return super.get(key, touch);\n }\n peek(key) {\n return super.get(key, Touch.None);\n }\n set(key, value) {\n super.set(key, value, Touch.Last);\n this.checkTrim();\n return this;\n }\n checkTrim() {\n if (this.size > this._limit) {\n this.trimOld(Math.round(this._limit * this._ratio));\n }\n }\n}\nexports.LRUCache = LRUCache;\n", "\"use strict\";\n/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Disposable = void 0;\nvar Disposable;\n(function (Disposable) {\n function create(func) {\n return {\n dispose: func\n };\n }\n Disposable.create = create;\n})(Disposable || (exports.Disposable = Disposable = {}));\n", "\"use strict\";\n/* --------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n * ------------------------------------------------------------------------------------------ */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nlet _ral;\nfunction RAL() {\n if (_ral === undefined) {\n throw new Error(`No runtime abstraction layer installed`);\n }\n return _ral;\n}\n(function (RAL) {\n function install(ral) {\n if (ral === undefined) {\n throw new Error(`No runtime abstraction layer provided`);\n }\n _ral = ral;\n }\n RAL.install = install;\n})(RAL || (RAL = {}));\nexports.default = RAL;\n", "\"use strict\";\n/* --------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n * ------------------------------------------------------------------------------------------ */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Emitter = exports.Event = void 0;\nconst ral_1 = require(\"./ral\");\nvar Event;\n(function (Event) {\n const _disposable = { dispose() { } };\n Event.None = function () { return _disposable; };\n})(Event || (exports.Event = Event = {}));\nclass CallbackList {\n add(callback, context = null, bucket) {\n if (!this._callbacks) {\n this._callbacks = [];\n this._contexts = [];\n }\n this._callbacks.push(callback);\n this._contexts.push(context);\n if (Array.isArray(bucket)) {\n bucket.push({ dispose: () => this.remove(callback, context) });\n }\n }\n remove(callback, context = null) {\n if (!this._callbacks) {\n return;\n }\n let foundCallbackWithDifferentContext = false;\n for (let i = 0, len = this._callbacks.length; i < len; i++) {\n if (this._callbacks[i] === callback) {\n if (this._contexts[i] === context) {\n // callback & context match => remove it\n this._callbacks.splice(i, 1);\n this._contexts.splice(i, 1);\n return;\n }\n else {\n foundCallbackWithDifferentContext = true;\n }\n }\n }\n if (foundCallbackWithDifferentContext) {\n throw new Error('When adding a listener with a context, you should remove it with the same context');\n }\n }\n invoke(...args) {\n if (!this._callbacks) {\n return [];\n }\n const ret = [], callbacks = this._callbacks.slice(0), contexts = this._contexts.slice(0);\n for (let i = 0, len = callbacks.length; i < len; i++) {\n try {\n ret.push(callbacks[i].apply(contexts[i], args));\n }\n catch (e) {\n // eslint-disable-next-line no-console\n (0, ral_1.default)().console.error(e);\n }\n }\n return ret;\n }\n isEmpty() {\n return !this._callbacks || this._callbacks.length === 0;\n }\n dispose() {\n this._callbacks = undefined;\n this._contexts = undefined;\n }\n}\nclass Emitter {\n constructor(_options) {\n this._options = _options;\n }\n /**\n * For the public to allow to subscribe\n * to events from this Emitter\n */\n get event() {\n if (!this._event) {\n this._event = (listener, thisArgs, disposables) => {\n if (!this._callbacks) {\n this._callbacks = new CallbackList();\n }\n if (this._options && this._options.onFirstListenerAdd && this._callbacks.isEmpty()) {\n this._options.onFirstListenerAdd(this);\n }\n this._callbacks.add(listener, thisArgs);\n const result = {\n dispose: () => {\n if (!this._callbacks) {\n // disposable is disposed after emitter is disposed.\n return;\n }\n this._callbacks.remove(listener, thisArgs);\n result.dispose = Emitter._noop;\n if (this._options && this._options.onLastListenerRemove && this._callbacks.isEmpty()) {\n this._options.onLastListenerRemove(this);\n }\n }\n };\n if (Array.isArray(disposables)) {\n disposables.push(result);\n }\n return result;\n };\n }\n return this._event;\n }\n /**\n * To be kept private to fire an event to\n * subscribers\n */\n fire(event) {\n if (this._callbacks) {\n this._callbacks.invoke.call(this._callbacks, event);\n }\n }\n dispose() {\n if (this._callbacks) {\n this._callbacks.dispose();\n this._callbacks = undefined;\n }\n }\n}\nexports.Emitter = Emitter;\nEmitter._noop = function () { };\n", "\"use strict\";\n/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.CancellationTokenSource = exports.CancellationToken = void 0;\nconst ral_1 = require(\"./ral\");\nconst Is = require(\"./is\");\nconst events_1 = require(\"./events\");\nvar CancellationToken;\n(function (CancellationToken) {\n CancellationToken.None = Object.freeze({\n isCancellationRequested: false,\n onCancellationRequested: events_1.Event.None\n });\n CancellationToken.Cancelled = Object.freeze({\n isCancellationRequested: true,\n onCancellationRequested: events_1.Event.None\n });\n function is(value) {\n const candidate = value;\n return candidate && (candidate === CancellationToken.None\n || candidate === CancellationToken.Cancelled\n || (Is.boolean(candidate.isCancellationRequested) && !!candidate.onCancellationRequested));\n }\n CancellationToken.is = is;\n})(CancellationToken || (exports.CancellationToken = CancellationToken = {}));\nconst shortcutEvent = Object.freeze(function (callback, context) {\n const handle = (0, ral_1.default)().timer.setTimeout(callback.bind(context), 0);\n return { dispose() { handle.dispose(); } };\n});\nclass MutableToken {\n constructor() {\n this._isCancelled = false;\n }\n cancel() {\n if (!this._isCancelled) {\n this._isCancelled = true;\n if (this._emitter) {\n this._emitter.fire(undefined);\n this.dispose();\n }\n }\n }\n get isCancellationRequested() {\n return this._isCancelled;\n }\n get onCancellationRequested() {\n if (this._isCancelled) {\n return shortcutEvent;\n }\n if (!this._emitter) {\n this._emitter = new events_1.Emitter();\n }\n return this._emitter.event;\n }\n dispose() {\n if (this._emitter) {\n this._emitter.dispose();\n this._emitter = undefined;\n }\n }\n}\nclass CancellationTokenSource {\n get token() {\n if (!this._token) {\n // be lazy and create the token only when\n // actually needed\n this._token = new MutableToken();\n }\n return this._token;\n }\n cancel() {\n if (!this._token) {\n // save an object by returning the default\n // cancelled token when cancellation happens\n // before someone asks for the token\n this._token = CancellationToken.Cancelled;\n }\n else {\n this._token.cancel();\n }\n }\n dispose() {\n if (!this._token) {\n // ensure to initialize with an empty token if we had none\n this._token = CancellationToken.None;\n }\n else if (this._token instanceof MutableToken) {\n // actually dispose\n this._token.dispose();\n }\n }\n}\nexports.CancellationTokenSource = CancellationTokenSource;\n", "\"use strict\";\n/* --------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n * ------------------------------------------------------------------------------------------ */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.SharedArrayReceiverStrategy = exports.SharedArraySenderStrategy = void 0;\nconst cancellation_1 = require(\"./cancellation\");\nvar CancellationState;\n(function (CancellationState) {\n CancellationState.Continue = 0;\n CancellationState.Cancelled = 1;\n})(CancellationState || (CancellationState = {}));\nclass SharedArraySenderStrategy {\n constructor() {\n this.buffers = new Map();\n }\n enableCancellation(request) {\n if (request.id === null) {\n return;\n }\n const buffer = new SharedArrayBuffer(4);\n const data = new Int32Array(buffer, 0, 1);\n data[0] = CancellationState.Continue;\n this.buffers.set(request.id, buffer);\n request.$cancellationData = buffer;\n }\n async sendCancellation(_conn, id) {\n const buffer = this.buffers.get(id);\n if (buffer === undefined) {\n return;\n }\n const data = new Int32Array(buffer, 0, 1);\n Atomics.store(data, 0, CancellationState.Cancelled);\n }\n cleanup(id) {\n this.buffers.delete(id);\n }\n dispose() {\n this.buffers.clear();\n }\n}\nexports.SharedArraySenderStrategy = SharedArraySenderStrategy;\nclass SharedArrayBufferCancellationToken {\n constructor(buffer) {\n this.data = new Int32Array(buffer, 0, 1);\n }\n get isCancellationRequested() {\n return Atomics.load(this.data, 0) === CancellationState.Cancelled;\n }\n get onCancellationRequested() {\n throw new Error(`Cancellation over SharedArrayBuffer doesn't support cancellation events`);\n }\n}\nclass SharedArrayBufferCancellationTokenSource {\n constructor(buffer) {\n this.token = new SharedArrayBufferCancellationToken(buffer);\n }\n cancel() {\n }\n dispose() {\n }\n}\nclass SharedArrayReceiverStrategy {\n constructor() {\n this.kind = 'request';\n }\n createCancellationTokenSource(request) {\n const buffer = request.$cancellationData;\n if (buffer === undefined) {\n return new cancellation_1.CancellationTokenSource();\n }\n return new SharedArrayBufferCancellationTokenSource(buffer);\n }\n}\nexports.SharedArrayReceiverStrategy = SharedArrayReceiverStrategy;\n", "\"use strict\";\n/* --------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n * ------------------------------------------------------------------------------------------ */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Semaphore = void 0;\nconst ral_1 = require(\"./ral\");\nclass Semaphore {\n constructor(capacity = 1) {\n if (capacity <= 0) {\n throw new Error('Capacity must be greater than 0');\n }\n this._capacity = capacity;\n this._active = 0;\n this._waiting = [];\n }\n lock(thunk) {\n return new Promise((resolve, reject) => {\n this._waiting.push({ thunk, resolve, reject });\n this.runNext();\n });\n }\n get active() {\n return this._active;\n }\n runNext() {\n if (this._waiting.length === 0 || this._active === this._capacity) {\n return;\n }\n (0, ral_1.default)().timer.setImmediate(() => this.doRunNext());\n }\n doRunNext() {\n if (this._waiting.length === 0 || this._active === this._capacity) {\n return;\n }\n const next = this._waiting.shift();\n this._active++;\n if (this._active > this._capacity) {\n throw new Error(`To many thunks active`);\n }\n try {\n const result = next.thunk();\n if (result instanceof Promise) {\n result.then((value) => {\n this._active--;\n next.resolve(value);\n this.runNext();\n }, (err) => {\n this._active--;\n next.reject(err);\n this.runNext();\n });\n }\n else {\n this._active--;\n next.resolve(result);\n this.runNext();\n }\n }\n catch (err) {\n this._active--;\n next.reject(err);\n this.runNext();\n }\n }\n}\nexports.Semaphore = Semaphore;\n", "\"use strict\";\n/* --------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n * ------------------------------------------------------------------------------------------ */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ReadableStreamMessageReader = exports.AbstractMessageReader = exports.MessageReader = void 0;\nconst ral_1 = require(\"./ral\");\nconst Is = require(\"./is\");\nconst events_1 = require(\"./events\");\nconst semaphore_1 = require(\"./semaphore\");\nvar MessageReader;\n(function (MessageReader) {\n function is(value) {\n let candidate = value;\n return candidate && Is.func(candidate.listen) && Is.func(candidate.dispose) &&\n Is.func(candidate.onError) && Is.func(candidate.onClose) && Is.func(candidate.onPartialMessage);\n }\n MessageReader.is = is;\n})(MessageReader || (exports.MessageReader = MessageReader = {}));\nclass AbstractMessageReader {\n constructor() {\n this.errorEmitter = new events_1.Emitter();\n this.closeEmitter = new events_1.Emitter();\n this.partialMessageEmitter = new events_1.Emitter();\n }\n dispose() {\n this.errorEmitter.dispose();\n this.closeEmitter.dispose();\n }\n get onError() {\n return this.errorEmitter.event;\n }\n fireError(error) {\n this.errorEmitter.fire(this.asError(error));\n }\n get onClose() {\n return this.closeEmitter.event;\n }\n fireClose() {\n this.closeEmitter.fire(undefined);\n }\n get onPartialMessage() {\n return this.partialMessageEmitter.event;\n }\n firePartialMessage(info) {\n this.partialMessageEmitter.fire(info);\n }\n asError(error) {\n if (error instanceof Error) {\n return error;\n }\n else {\n return new Error(`Reader received error. Reason: ${Is.string(error.message) ? error.message : 'unknown'}`);\n }\n }\n}\nexports.AbstractMessageReader = AbstractMessageReader;\nvar ResolvedMessageReaderOptions;\n(function (ResolvedMessageReaderOptions) {\n function fromOptions(options) {\n let charset;\n let result;\n let contentDecoder;\n const contentDecoders = new Map();\n let contentTypeDecoder;\n const contentTypeDecoders = new Map();\n if (options === undefined || typeof options === 'string') {\n charset = options ?? 'utf-8';\n }\n else {\n charset = options.charset ?? 'utf-8';\n if (options.contentDecoder !== undefined) {\n contentDecoder = options.contentDecoder;\n contentDecoders.set(contentDecoder.name, contentDecoder);\n }\n if (options.contentDecoders !== undefined) {\n for (const decoder of options.contentDecoders) {\n contentDecoders.set(decoder.name, decoder);\n }\n }\n if (options.contentTypeDecoder !== undefined) {\n contentTypeDecoder = options.contentTypeDecoder;\n contentTypeDecoders.set(contentTypeDecoder.name, contentTypeDecoder);\n }\n if (options.contentTypeDecoders !== undefined) {\n for (const decoder of options.contentTypeDecoders) {\n contentTypeDecoders.set(decoder.name, decoder);\n }\n }\n }\n if (contentTypeDecoder === undefined) {\n contentTypeDecoder = (0, ral_1.default)().applicationJson.decoder;\n contentTypeDecoders.set(contentTypeDecoder.name, contentTypeDecoder);\n }\n return { charset, contentDecoder, contentDecoders, contentTypeDecoder, contentTypeDecoders };\n }\n ResolvedMessageReaderOptions.fromOptions = fromOptions;\n})(ResolvedMessageReaderOptions || (ResolvedMessageReaderOptions = {}));\nclass ReadableStreamMessageReader extends AbstractMessageReader {\n constructor(readable, options) {\n super();\n this.readable = readable;\n this.options = ResolvedMessageReaderOptions.fromOptions(options);\n this.buffer = (0, ral_1.default)().messageBuffer.create(this.options.charset);\n this._partialMessageTimeout = 10000;\n this.nextMessageLength = -1;\n this.messageToken = 0;\n this.readSemaphore = new semaphore_1.Semaphore(1);\n }\n set partialMessageTimeout(timeout) {\n this._partialMessageTimeout = timeout;\n }\n get partialMessageTimeout() {\n return this._partialMessageTimeout;\n }\n listen(callback) {\n this.nextMessageLength = -1;\n this.messageToken = 0;\n this.partialMessageTimer = undefined;\n this.callback = callback;\n const result = this.readable.onData((data) => {\n this.onData(data);\n });\n this.readable.onError((error) => this.fireError(error));\n this.readable.onClose(() => this.fireClose());\n return result;\n }\n onData(data) {\n try {\n this.buffer.append(data);\n while (true) {\n if (this.nextMessageLength === -1) {\n const headers = this.buffer.tryReadHeaders(true);\n if (!headers) {\n return;\n }\n const contentLength = headers.get('content-length');\n if (!contentLength) {\n this.fireError(new Error(`Header must provide a Content-Length property.\\n${JSON.stringify(Object.fromEntries(headers))}`));\n return;\n }\n const length = parseInt(contentLength);\n if (isNaN(length)) {\n this.fireError(new Error(`Content-Length value must be a number. Got ${contentLength}`));\n return;\n }\n this.nextMessageLength = length;\n }\n const body = this.buffer.tryReadBody(this.nextMessageLength);\n if (body === undefined) {\n /** We haven't received the full message yet. */\n this.setPartialMessageTimer();\n return;\n }\n this.clearPartialMessageTimer();\n this.nextMessageLength = -1;\n // Make sure that we convert one received message after the\n // other. Otherwise it could happen that a decoding of a second\n // smaller message finished before the decoding of a first larger\n // message and then we would deliver the second message first.\n this.readSemaphore.lock(async () => {\n const bytes = this.options.contentDecoder !== undefined\n ? await this.options.contentDecoder.decode(body)\n : body;\n const message = await this.options.contentTypeDecoder.decode(bytes, this.options);\n this.callback(message);\n }).catch((error) => {\n this.fireError(error);\n });\n }\n }\n catch (error) {\n this.fireError(error);\n }\n }\n clearPartialMessageTimer() {\n if (this.partialMessageTimer) {\n this.partialMessageTimer.dispose();\n this.partialMessageTimer = undefined;\n }\n }\n setPartialMessageTimer() {\n this.clearPartialMessageTimer();\n if (this._partialMessageTimeout <= 0) {\n return;\n }\n this.partialMessageTimer = (0, ral_1.default)().timer.setTimeout((token, timeout) => {\n this.partialMessageTimer = undefined;\n if (token === this.messageToken) {\n this.firePartialMessage({ messageToken: token, waitingTime: timeout });\n this.setPartialMessageTimer();\n }\n }, this._partialMessageTimeout, this.messageToken, this._partialMessageTimeout);\n }\n}\nexports.ReadableStreamMessageReader = ReadableStreamMessageReader;\n", "\"use strict\";\n/* --------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n * ------------------------------------------------------------------------------------------ */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.WriteableStreamMessageWriter = exports.AbstractMessageWriter = exports.MessageWriter = void 0;\nconst ral_1 = require(\"./ral\");\nconst Is = require(\"./is\");\nconst semaphore_1 = require(\"./semaphore\");\nconst events_1 = require(\"./events\");\nconst ContentLength = 'Content-Length: ';\nconst CRLF = '\\r\\n';\nvar MessageWriter;\n(function (MessageWriter) {\n function is(value) {\n let candidate = value;\n return candidate && Is.func(candidate.dispose) && Is.func(candidate.onClose) &&\n Is.func(candidate.onError) && Is.func(candidate.write);\n }\n MessageWriter.is = is;\n})(MessageWriter || (exports.MessageWriter = MessageWriter = {}));\nclass AbstractMessageWriter {\n constructor() {\n this.errorEmitter = new events_1.Emitter();\n this.closeEmitter = new events_1.Emitter();\n }\n dispose() {\n this.errorEmitter.dispose();\n this.closeEmitter.dispose();\n }\n get onError() {\n return this.errorEmitter.event;\n }\n fireError(error, message, count) {\n this.errorEmitter.fire([this.asError(error), message, count]);\n }\n get onClose() {\n return this.closeEmitter.event;\n }\n fireClose() {\n this.closeEmitter.fire(undefined);\n }\n asError(error) {\n if (error instanceof Error) {\n return error;\n }\n else {\n return new Error(`Writer received error. Reason: ${Is.string(error.message) ? error.message : 'unknown'}`);\n }\n }\n}\nexports.AbstractMessageWriter = AbstractMessageWriter;\nvar ResolvedMessageWriterOptions;\n(function (ResolvedMessageWriterOptions) {\n function fromOptions(options) {\n if (options === undefined || typeof options === 'string') {\n return { charset: options ?? 'utf-8', contentTypeEncoder: (0, ral_1.default)().applicationJson.encoder };\n }\n else {\n return { charset: options.charset ?? 'utf-8', contentEncoder: options.contentEncoder, contentTypeEncoder: options.contentTypeEncoder ?? (0, ral_1.default)().applicationJson.encoder };\n }\n }\n ResolvedMessageWriterOptions.fromOptions = fromOptions;\n})(ResolvedMessageWriterOptions || (ResolvedMessageWriterOptions = {}));\nclass WriteableStreamMessageWriter extends AbstractMessageWriter {\n constructor(writable, options) {\n super();\n this.writable = writable;\n this.options = ResolvedMessageWriterOptions.fromOptions(options);\n this.errorCount = 0;\n this.writeSemaphore = new semaphore_1.Semaphore(1);\n this.writable.onError((error) => this.fireError(error));\n this.writable.onClose(() => this.fireClose());\n }\n async write(msg) {\n return this.writeSemaphore.lock(async () => {\n const payload = this.options.contentTypeEncoder.encode(msg, this.options).then((buffer) => {\n if (this.options.contentEncoder !== undefined) {\n return this.options.contentEncoder.encode(buffer);\n }\n else {\n return buffer;\n }\n });\n return payload.then((buffer) => {\n const headers = [];\n headers.push(ContentLength, buffer.byteLength.toString(), CRLF);\n headers.push(CRLF);\n return this.doWrite(msg, headers, buffer);\n }, (error) => {\n this.fireError(error);\n throw error;\n });\n });\n }\n async doWrite(msg, headers, data) {\n try {\n await this.writable.write(headers.join(''), 'ascii');\n return this.writable.write(data);\n }\n catch (error) {\n this.handleError(error, msg);\n return Promise.reject(error);\n }\n }\n handleError(error, msg) {\n this.errorCount++;\n this.fireError(error, msg, this.errorCount);\n }\n end() {\n this.writable.end();\n }\n}\nexports.WriteableStreamMessageWriter = WriteableStreamMessageWriter;\n", "\"use strict\";\n/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.AbstractMessageBuffer = void 0;\nconst CR = 13;\nconst LF = 10;\nconst CRLF = '\\r\\n';\nclass AbstractMessageBuffer {\n constructor(encoding = 'utf-8') {\n this._encoding = encoding;\n this._chunks = [];\n this._totalLength = 0;\n }\n get encoding() {\n return this._encoding;\n }\n append(chunk) {\n const toAppend = typeof chunk === 'string' ? this.fromString(chunk, this._encoding) : chunk;\n this._chunks.push(toAppend);\n this._totalLength += toAppend.byteLength;\n }\n tryReadHeaders(lowerCaseKeys = false) {\n if (this._chunks.length === 0) {\n return undefined;\n }\n let state = 0;\n let chunkIndex = 0;\n let offset = 0;\n let chunkBytesRead = 0;\n row: while (chunkIndex < this._chunks.length) {\n const chunk = this._chunks[chunkIndex];\n offset = 0;\n column: while (offset < chunk.length) {\n const value = chunk[offset];\n switch (value) {\n case CR:\n switch (state) {\n case 0:\n state = 1;\n break;\n case 2:\n state = 3;\n break;\n default:\n state = 0;\n }\n break;\n case LF:\n switch (state) {\n case 1:\n state = 2;\n break;\n case 3:\n state = 4;\n offset++;\n break row;\n default:\n state = 0;\n }\n break;\n default:\n state = 0;\n }\n offset++;\n }\n chunkBytesRead += chunk.byteLength;\n chunkIndex++;\n }\n if (state !== 4) {\n return undefined;\n }\n // The buffer contains the two CRLF at the end. So we will\n // have two empty lines after the split at the end as well.\n const buffer = this._read(chunkBytesRead + offset);\n const result = new Map();\n const headers = this.toString(buffer, 'ascii').split(CRLF);\n if (headers.length < 2) {\n return result;\n }\n for (let i = 0; i < headers.length - 2; i++) {\n const header = headers[i];\n const index = header.indexOf(':');\n if (index === -1) {\n throw new Error(`Message header must separate key and value using ':'\\n${header}`);\n }\n const key = header.substr(0, index);\n const value = header.substr(index + 1).trim();\n result.set(lowerCaseKeys ? key.toLowerCase() : key, value);\n }\n return result;\n }\n tryReadBody(length) {\n if (this._totalLength < length) {\n return undefined;\n }\n return this._read(length);\n }\n get numberOfBytes() {\n return this._totalLength;\n }\n _read(byteCount) {\n if (byteCount === 0) {\n return this.emptyBuffer();\n }\n if (byteCount > this._totalLength) {\n throw new Error(`Cannot read so many bytes!`);\n }\n if (this._chunks[0].byteLength === byteCount) {\n // super fast path, precisely first chunk must be returned\n const chunk = this._chunks[0];\n this._chunks.shift();\n this._totalLength -= byteCount;\n return this.asNative(chunk);\n }\n if (this._chunks[0].byteLength > byteCount) {\n // fast path, the reading is entirely within the first chunk\n const chunk = this._chunks[0];\n const result = this.asNative(chunk, byteCount);\n this._chunks[0] = chunk.slice(byteCount);\n this._totalLength -= byteCount;\n return result;\n }\n const result = this.allocNative(byteCount);\n let resultOffset = 0;\n let chunkIndex = 0;\n while (byteCount > 0) {\n const chunk = this._chunks[chunkIndex];\n if (chunk.byteLength > byteCount) {\n // this chunk will survive\n const chunkPart = chunk.slice(0, byteCount);\n result.set(chunkPart, resultOffset);\n resultOffset += byteCount;\n this._chunks[chunkIndex] = chunk.slice(byteCount);\n this._totalLength -= byteCount;\n byteCount -= byteCount;\n }\n else {\n // this chunk will be entirely read\n result.set(chunk, resultOffset);\n resultOffset += chunk.byteLength;\n this._chunks.shift();\n this._totalLength -= chunk.byteLength;\n byteCount -= chunk.byteLength;\n }\n }\n return result;\n }\n}\nexports.AbstractMessageBuffer = AbstractMessageBuffer;\n", "\"use strict\";\n/* --------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n * ------------------------------------------------------------------------------------------ */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.createMessageConnection = exports.ConnectionOptions = exports.MessageStrategy = exports.CancellationStrategy = exports.CancellationSenderStrategy = exports.CancellationReceiverStrategy = exports.RequestCancellationReceiverStrategy = exports.IdCancellationReceiverStrategy = exports.ConnectionStrategy = exports.ConnectionError = exports.ConnectionErrors = exports.LogTraceNotification = exports.SetTraceNotification = exports.TraceFormat = exports.TraceValues = exports.Trace = exports.NullLogger = exports.ProgressType = exports.ProgressToken = void 0;\nconst ral_1 = require(\"./ral\");\nconst Is = require(\"./is\");\nconst messages_1 = require(\"./messages\");\nconst linkedMap_1 = require(\"./linkedMap\");\nconst events_1 = require(\"./events\");\nconst cancellation_1 = require(\"./cancellation\");\nvar CancelNotification;\n(function (CancelNotification) {\n CancelNotification.type = new messages_1.NotificationType('$/cancelRequest');\n})(CancelNotification || (CancelNotification = {}));\nvar ProgressToken;\n(function (ProgressToken) {\n function is(value) {\n return typeof value === 'string' || typeof value === 'number';\n }\n ProgressToken.is = is;\n})(ProgressToken || (exports.ProgressToken = ProgressToken = {}));\nvar ProgressNotification;\n(function (ProgressNotification) {\n ProgressNotification.type = new messages_1.NotificationType('$/progress');\n})(ProgressNotification || (ProgressNotification = {}));\nclass ProgressType {\n constructor() {\n }\n}\nexports.ProgressType = ProgressType;\nvar StarRequestHandler;\n(function (StarRequestHandler) {\n function is(value) {\n return Is.func(value);\n }\n StarRequestHandler.is = is;\n})(StarRequestHandler || (StarRequestHandler = {}));\nexports.NullLogger = Object.freeze({\n error: () => { },\n warn: () => { },\n info: () => { },\n log: () => { }\n});\nvar Trace;\n(function (Trace) {\n Trace[Trace[\"Off\"] = 0] = \"Off\";\n Trace[Trace[\"Messages\"] = 1] = \"Messages\";\n Trace[Trace[\"Compact\"] = 2] = \"Compact\";\n Trace[Trace[\"Verbose\"] = 3] = \"Verbose\";\n})(Trace || (exports.Trace = Trace = {}));\nvar TraceValues;\n(function (TraceValues) {\n /**\n * Turn tracing off.\n */\n TraceValues.Off = 'off';\n /**\n * Trace messages only.\n */\n TraceValues.Messages = 'messages';\n /**\n * Compact message tracing.\n */\n TraceValues.Compact = 'compact';\n /**\n * Verbose message tracing.\n */\n TraceValues.Verbose = 'verbose';\n})(TraceValues || (exports.TraceValues = TraceValues = {}));\n(function (Trace) {\n function fromString(value) {\n if (!Is.string(value)) {\n return Trace.Off;\n }\n value = value.toLowerCase();\n switch (value) {\n case 'off':\n return Trace.Off;\n case 'messages':\n return Trace.Messages;\n case 'compact':\n return Trace.Compact;\n case 'verbose':\n return Trace.Verbose;\n default:\n return Trace.Off;\n }\n }\n Trace.fromString = fromString;\n function toString(value) {\n switch (value) {\n case Trace.Off:\n return 'off';\n case Trace.Messages:\n return 'messages';\n case Trace.Compact:\n return 'compact';\n case Trace.Verbose:\n return 'verbose';\n default:\n return 'off';\n }\n }\n Trace.toString = toString;\n})(Trace || (exports.Trace = Trace = {}));\nvar TraceFormat;\n(function (TraceFormat) {\n TraceFormat[\"Text\"] = \"text\";\n TraceFormat[\"JSON\"] = \"json\";\n})(TraceFormat || (exports.TraceFormat = TraceFormat = {}));\n(function (TraceFormat) {\n function fromString(value) {\n if (!Is.string(value)) {\n return TraceFormat.Text;\n }\n value = value.toLowerCase();\n if (value === 'json') {\n return TraceFormat.JSON;\n }\n else {\n return TraceFormat.Text;\n }\n }\n TraceFormat.fromString = fromString;\n})(TraceFormat || (exports.TraceFormat = TraceFormat = {}));\nvar SetTraceNotification;\n(function (SetTraceNotification) {\n SetTraceNotification.type = new messages_1.NotificationType('$/setTrace');\n})(SetTraceNotification || (exports.SetTraceNotification = SetTraceNotification = {}));\nvar LogTraceNotification;\n(function (LogTraceNotification) {\n LogTraceNotification.type = new messages_1.NotificationType('$/logTrace');\n})(LogTraceNotification || (exports.LogTraceNotification = LogTraceNotification = {}));\nvar ConnectionErrors;\n(function (ConnectionErrors) {\n /**\n * The connection is closed.\n */\n ConnectionErrors[ConnectionErrors[\"Closed\"] = 1] = \"Closed\";\n /**\n * The connection got disposed.\n */\n ConnectionErrors[ConnectionErrors[\"Disposed\"] = 2] = \"Disposed\";\n /**\n * The connection is already in listening mode.\n */\n ConnectionErrors[ConnectionErrors[\"AlreadyListening\"] = 3] = \"AlreadyListening\";\n})(ConnectionErrors || (exports.ConnectionErrors = ConnectionErrors = {}));\nclass ConnectionError extends Error {\n constructor(code, message) {\n super(message);\n this.code = code;\n Object.setPrototypeOf(this, ConnectionError.prototype);\n }\n}\nexports.ConnectionError = ConnectionError;\nvar ConnectionStrategy;\n(function (ConnectionStrategy) {\n function is(value) {\n const candidate = value;\n return candidate && Is.func(candidate.cancelUndispatched);\n }\n ConnectionStrategy.is = is;\n})(ConnectionStrategy || (exports.ConnectionStrategy = ConnectionStrategy = {}));\nvar IdCancellationReceiverStrategy;\n(function (IdCancellationReceiverStrategy) {\n function is(value) {\n const candidate = value;\n return candidate && (candidate.kind === undefined || candidate.kind === 'id') && Is.func(candidate.createCancellationTokenSource) && (candidate.dispose === undefined || Is.func(candidate.dispose));\n }\n IdCancellationReceiverStrategy.is = is;\n})(IdCancellationReceiverStrategy || (exports.IdCancellationReceiverStrategy = IdCancellationReceiverStrategy = {}));\nvar RequestCancellationReceiverStrategy;\n(function (RequestCancellationReceiverStrategy) {\n function is(value) {\n const candidate = value;\n return candidate && candidate.kind === 'request' && Is.func(candidate.createCancellationTokenSource) && (candidate.dispose === undefined || Is.func(candidate.dispose));\n }\n RequestCancellationReceiverStrategy.is = is;\n})(RequestCancellationReceiverStrategy || (exports.RequestCancellationReceiverStrategy = RequestCancellationReceiverStrategy = {}));\nvar CancellationReceiverStrategy;\n(function (CancellationReceiverStrategy) {\n CancellationReceiverStrategy.Message = Object.freeze({\n createCancellationTokenSource(_) {\n return new cancellation_1.CancellationTokenSource();\n }\n });\n function is(value) {\n return IdCancellationReceiverStrategy.is(value) || RequestCancellationReceiverStrategy.is(value);\n }\n CancellationReceiverStrategy.is = is;\n})(CancellationReceiverStrategy || (exports.CancellationReceiverStrategy = CancellationReceiverStrategy = {}));\nvar CancellationSenderStrategy;\n(function (CancellationSenderStrategy) {\n CancellationSenderStrategy.Message = Object.freeze({\n sendCancellation(conn, id) {\n return conn.sendNotification(CancelNotification.type, { id });\n },\n cleanup(_) { }\n });\n function is(value) {\n const candidate = value;\n return candidate && Is.func(candidate.sendCancellation) && Is.func(candidate.cleanup);\n }\n CancellationSenderStrategy.is = is;\n})(CancellationSenderStrategy || (exports.CancellationSenderStrategy = CancellationSenderStrategy = {}));\nvar CancellationStrategy;\n(function (CancellationStrategy) {\n CancellationStrategy.Message = Object.freeze({\n receiver: CancellationReceiverStrategy.Message,\n sender: CancellationSenderStrategy.Message\n });\n function is(value) {\n const candidate = value;\n return candidate && CancellationReceiverStrategy.is(candidate.receiver) && CancellationSenderStrategy.is(candidate.sender);\n }\n CancellationStrategy.is = is;\n})(CancellationStrategy || (exports.CancellationStrategy = CancellationStrategy = {}));\nvar MessageStrategy;\n(function (MessageStrategy) {\n function is(value) {\n const candidate = value;\n return candidate && Is.func(candidate.handleMessage);\n }\n MessageStrategy.is = is;\n})(MessageStrategy || (exports.MessageStrategy = MessageStrategy = {}));\nvar ConnectionOptions;\n(function (ConnectionOptions) {\n function is(value) {\n const candidate = value;\n return candidate && (CancellationStrategy.is(candidate.cancellationStrategy) || ConnectionStrategy.is(candidate.connectionStrategy) || MessageStrategy.is(candidate.messageStrategy));\n }\n ConnectionOptions.is = is;\n})(ConnectionOptions || (exports.ConnectionOptions = ConnectionOptions = {}));\nvar ConnectionState;\n(function (ConnectionState) {\n ConnectionState[ConnectionState[\"New\"] = 1] = \"New\";\n ConnectionState[ConnectionState[\"Listening\"] = 2] = \"Listening\";\n ConnectionState[ConnectionState[\"Closed\"] = 3] = \"Closed\";\n ConnectionState[ConnectionState[\"Disposed\"] = 4] = \"Disposed\";\n})(ConnectionState || (ConnectionState = {}));\nfunction createMessageConnection(messageReader, messageWriter, _logger, options) {\n const logger = _logger !== undefined ? _logger : exports.NullLogger;\n let sequenceNumber = 0;\n let notificationSequenceNumber = 0;\n let unknownResponseSequenceNumber = 0;\n const version = '2.0';\n let starRequestHandler = undefined;\n const requestHandlers = new Map();\n let starNotificationHandler = undefined;\n const notificationHandlers = new Map();\n const progressHandlers = new Map();\n let timer;\n let messageQueue = new linkedMap_1.LinkedMap();\n let responsePromises = new Map();\n let knownCanceledRequests = new Set();\n let requestTokens = new Map();\n let trace = Trace.Off;\n let traceFormat = TraceFormat.Text;\n let tracer;\n let state = ConnectionState.New;\n const errorEmitter = new events_1.Emitter();\n const closeEmitter = new events_1.Emitter();\n const unhandledNotificationEmitter = new events_1.Emitter();\n const unhandledProgressEmitter = new events_1.Emitter();\n const disposeEmitter = new events_1.Emitter();\n const cancellationStrategy = (options && options.cancellationStrategy) ? options.cancellationStrategy : CancellationStrategy.Message;\n function createRequestQueueKey(id) {\n if (id === null) {\n throw new Error(`Can't send requests with id null since the response can't be correlated.`);\n }\n return 'req-' + id.toString();\n }\n function createResponseQueueKey(id) {\n if (id === null) {\n return 'res-unknown-' + (++unknownResponseSequenceNumber).toString();\n }\n else {\n return 'res-' + id.toString();\n }\n }\n function createNotificationQueueKey() {\n return 'not-' + (++notificationSequenceNumber).toString();\n }\n function addMessageToQueue(queue, message) {\n if (messages_1.Message.isRequest(message)) {\n queue.set(createRequestQueueKey(message.id), message);\n }\n else if (messages_1.Message.isResponse(message)) {\n queue.set(createResponseQueueKey(message.id), message);\n }\n else {\n queue.set(createNotificationQueueKey(), message);\n }\n }\n function cancelUndispatched(_message) {\n return undefined;\n }\n function isListening() {\n return state === ConnectionState.Listening;\n }\n function isClosed() {\n return state === ConnectionState.Closed;\n }\n function isDisposed() {\n return state === ConnectionState.Disposed;\n }\n function closeHandler() {\n if (state === ConnectionState.New || state === ConnectionState.Listening) {\n state = ConnectionState.Closed;\n closeEmitter.fire(undefined);\n }\n // If the connection is disposed don't sent close events.\n }\n function readErrorHandler(error) {\n errorEmitter.fire([error, undefined, undefined]);\n }\n function writeErrorHandler(data) {\n errorEmitter.fire(data);\n }\n messageReader.onClose(closeHandler);\n messageReader.onError(readErrorHandler);\n messageWriter.onClose(closeHandler);\n messageWriter.onError(writeErrorHandler);\n function triggerMessageQueue() {\n if (timer || messageQueue.size === 0) {\n return;\n }\n timer = (0, ral_1.default)().timer.setImmediate(() => {\n timer = undefined;\n processMessageQueue();\n });\n }\n function handleMessage(message) {\n if (messages_1.Message.isRequest(message)) {\n handleRequest(message);\n }\n else if (messages_1.Message.isNotification(message)) {\n handleNotification(message);\n }\n else if (messages_1.Message.isResponse(message)) {\n handleResponse(message);\n }\n else {\n handleInvalidMessage(message);\n }\n }\n function processMessageQueue() {\n if (messageQueue.size === 0) {\n return;\n }\n const message = messageQueue.shift();\n try {\n const messageStrategy = options?.messageStrategy;\n if (MessageStrategy.is(messageStrategy)) {\n messageStrategy.handleMessage(message, handleMessage);\n }\n else {\n handleMessage(message);\n }\n }\n finally {\n triggerMessageQueue();\n }\n }\n const callback = (message) => {\n try {\n // We have received a cancellation message. Check if the message is still in the queue\n // and cancel it if allowed to do so.\n if (messages_1.Message.isNotification(message) && message.method === CancelNotification.type.method) {\n const cancelId = message.params.id;\n const key = createRequestQueueKey(cancelId);\n const toCancel = messageQueue.get(key);\n if (messages_1.Message.isRequest(toCancel)) {\n const strategy = options?.connectionStrategy;\n const response = (strategy && strategy.cancelUndispatched) ? strategy.cancelUndispatched(toCancel, cancelUndispatched) : cancelUndispatched(toCancel);\n if (response && (response.error !== undefined || response.result !== undefined)) {\n messageQueue.delete(key);\n requestTokens.delete(cancelId);\n response.id = toCancel.id;\n traceSendingResponse(response, message.method, Date.now());\n messageWriter.write(response).catch(() => logger.error(`Sending response for canceled message failed.`));\n return;\n }\n }\n const cancellationToken = requestTokens.get(cancelId);\n // The request is already running. Cancel the token\n if (cancellationToken !== undefined) {\n cancellationToken.cancel();\n traceReceivedNotification(message);\n return;\n }\n else {\n // Remember the cancel but still queue the message to\n // clean up state in process message.\n knownCanceledRequests.add(cancelId);\n }\n }\n addMessageToQueue(messageQueue, message);\n }\n finally {\n triggerMessageQueue();\n }\n };\n function handleRequest(requestMessage) {\n if (isDisposed()) {\n // we return here silently since we fired an event when the\n // connection got disposed.\n return;\n }\n function reply(resultOrError, method, startTime) {\n const message = {\n jsonrpc: version,\n id: requestMessage.id\n };\n if (resultOrError instanceof messages_1.ResponseError) {\n message.error = resultOrError.toJson();\n }\n else {\n message.result = resultOrError === undefined ? null : resultOrError;\n }\n traceSendingResponse(message, method, startTime);\n messageWriter.write(message).catch(() => logger.error(`Sending response failed.`));\n }\n function replyError(error, method, startTime) {\n const message = {\n jsonrpc: version,\n id: requestMessage.id,\n error: error.toJson()\n };\n traceSendingResponse(message, method, startTime);\n messageWriter.write(message).catch(() => logger.error(`Sending response failed.`));\n }\n function replySuccess(result, method, startTime) {\n // The JSON RPC defines that a response must either have a result or an error\n // So we can't treat undefined as a valid response result.\n if (result === undefined) {\n result = null;\n }\n const message = {\n jsonrpc: version,\n id: requestMessage.id,\n result: result\n };\n traceSendingResponse(message, method, startTime);\n messageWriter.write(message).catch(() => logger.error(`Sending response failed.`));\n }\n traceReceivedRequest(requestMessage);\n const element = requestHandlers.get(requestMessage.method);\n let type;\n let requestHandler;\n if (element) {\n type = element.type;\n requestHandler = element.handler;\n }\n const startTime = Date.now();\n if (requestHandler || starRequestHandler) {\n const tokenKey = requestMessage.id ?? String(Date.now()); //\n const cancellationSource = IdCancellationReceiverStrategy.is(cancellationStrategy.receiver)\n ? cancellationStrategy.receiver.createCancellationTokenSource(tokenKey)\n : cancellationStrategy.receiver.createCancellationTokenSource(requestMessage);\n if (requestMessage.id !== null && knownCanceledRequests.has(requestMessage.id)) {\n cancellationSource.cancel();\n }\n if (requestMessage.id !== null) {\n requestTokens.set(tokenKey, cancellationSource);\n }\n try {\n let handlerResult;\n if (requestHandler) {\n if (requestMessage.params === undefined) {\n if (type !== undefined && type.numberOfParams !== 0) {\n replyError(new messages_1.ResponseError(messages_1.ErrorCodes.InvalidParams, `Request ${requestMessage.method} defines ${type.numberOfParams} params but received none.`), requestMessage.method, startTime);\n return;\n }\n handlerResult = requestHandler(cancellationSource.token);\n }\n else if (Array.isArray(requestMessage.params)) {\n if (type !== undefined && type.parameterStructures === messages_1.ParameterStructures.byName) {\n replyError(new messages_1.ResponseError(messages_1.ErrorCodes.InvalidParams, `Request ${requestMessage.method} defines parameters by name but received parameters by position`), requestMessage.method, startTime);\n return;\n }\n handlerResult = requestHandler(...requestMessage.params, cancellationSource.token);\n }\n else {\n if (type !== undefined && type.parameterStructures === messages_1.ParameterStructures.byPosition) {\n replyError(new messages_1.ResponseError(messages_1.ErrorCodes.InvalidParams, `Request ${requestMessage.method} defines parameters by position but received parameters by name`), requestMessage.method, startTime);\n return;\n }\n handlerResult = requestHandler(requestMessage.params, cancellationSource.token);\n }\n }\n else if (starRequestHandler) {\n handlerResult = starRequestHandler(requestMessage.method, requestMessage.params, cancellationSource.token);\n }\n const promise = handlerResult;\n if (!handlerResult) {\n requestTokens.delete(tokenKey);\n replySuccess(handlerResult, requestMessage.method, startTime);\n }\n else if (promise.then) {\n promise.then((resultOrError) => {\n requestTokens.delete(tokenKey);\n reply(resultOrError, requestMessage.method, startTime);\n }, error => {\n requestTokens.delete(tokenKey);\n if (error instanceof messages_1.ResponseError) {\n replyError(error, requestMessage.method, startTime);\n }\n else if (error && Is.string(error.message)) {\n replyError(new messages_1.ResponseError(messages_1.ErrorCodes.InternalError, `Request ${requestMessage.method} failed with message: ${error.message}`), requestMessage.method, startTime);\n }\n else {\n replyError(new messages_1.ResponseError(messages_1.ErrorCodes.InternalError, `Request ${requestMessage.method} failed unexpectedly without providing any details.`), requestMessage.method, startTime);\n }\n });\n }\n else {\n requestTokens.delete(tokenKey);\n reply(handlerResult, requestMessage.method, startTime);\n }\n }\n catch (error) {\n requestTokens.delete(tokenKey);\n if (error instanceof messages_1.ResponseError) {\n reply(error, requestMessage.method, startTime);\n }\n else if (error && Is.string(error.message)) {\n replyError(new messages_1.ResponseError(messages_1.ErrorCodes.InternalError, `Request ${requestMessage.method} failed with message: ${error.message}`), requestMessage.method, startTime);\n }\n else {\n replyError(new messages_1.ResponseError(messages_1.ErrorCodes.InternalError, `Request ${requestMessage.method} failed unexpectedly without providing any details.`), requestMessage.method, startTime);\n }\n }\n }\n else {\n replyError(new messages_1.ResponseError(messages_1.ErrorCodes.MethodNotFound, `Unhandled method ${requestMessage.method}`), requestMessage.method, startTime);\n }\n }\n function handleResponse(responseMessage) {\n if (isDisposed()) {\n // See handle request.\n return;\n }\n if (responseMessage.id === null) {\n if (responseMessage.error) {\n logger.error(`Received response message without id: Error is: \\n${JSON.stringify(responseMessage.error, undefined, 4)}`);\n }\n else {\n logger.error(`Received response message without id. No further error information provided.`);\n }\n }\n else {\n const key = responseMessage.id;\n const responsePromise = responsePromises.get(key);\n traceReceivedResponse(responseMessage, responsePromise);\n if (responsePromise !== undefined) {\n responsePromises.delete(key);\n try {\n if (responseMessage.error) {\n const error = responseMessage.error;\n responsePromise.reject(new messages_1.ResponseError(error.code, error.message, error.data));\n }\n else if (responseMessage.result !== undefined) {\n responsePromise.resolve(responseMessage.result);\n }\n else {\n throw new Error('Should never happen.');\n }\n }\n catch (error) {\n if (error.message) {\n logger.error(`Response handler '${responsePromise.method}' failed with message: ${error.message}`);\n }\n else {\n logger.error(`Response handler '${responsePromise.method}' failed unexpectedly.`);\n }\n }\n }\n }\n }\n function handleNotification(message) {\n if (isDisposed()) {\n // See handle request.\n return;\n }\n let type = undefined;\n let notificationHandler;\n if (message.method === CancelNotification.type.method) {\n const cancelId = message.params.id;\n knownCanceledRequests.delete(cancelId);\n traceReceivedNotification(message);\n return;\n }\n else {\n const element = notificationHandlers.get(message.method);\n if (element) {\n notificationHandler = element.handler;\n type = element.type;\n }\n }\n if (notificationHandler || starNotificationHandler) {\n try {\n traceReceivedNotification(message);\n if (notificationHandler) {\n if (message.params === undefined) {\n if (type !== undefined) {\n if (type.numberOfParams !== 0 && type.parameterStructures !== messages_1.ParameterStructures.byName) {\n logger.error(`Notification ${message.method} defines ${type.numberOfParams} params but received none.`);\n }\n }\n notificationHandler();\n }\n else if (Array.isArray(message.params)) {\n // There are JSON-RPC libraries that send progress message as positional params although\n // specified as named. So convert them if this is the case.\n const params = message.params;\n if (message.method === ProgressNotification.type.method && params.length === 2 && ProgressToken.is(params[0])) {\n notificationHandler({ token: params[0], value: params[1] });\n }\n else {\n if (type !== undefined) {\n if (type.parameterStructures === messages_1.ParameterStructures.byName) {\n logger.error(`Notification ${message.method} defines parameters by name but received parameters by position`);\n }\n if (type.numberOfParams !== message.params.length) {\n logger.error(`Notification ${message.method} defines ${type.numberOfParams} params but received ${params.length} arguments`);\n }\n }\n notificationHandler(...params);\n }\n }\n else {\n if (type !== undefined && type.parameterStructures === messages_1.ParameterStructures.byPosition) {\n logger.error(`Notification ${message.method} defines parameters by position but received parameters by name`);\n }\n notificationHandler(message.params);\n }\n }\n else if (starNotificationHandler) {\n starNotificationHandler(message.method, message.params);\n }\n }\n catch (error) {\n if (error.message) {\n logger.error(`Notification handler '${message.method}' failed with message: ${error.message}`);\n }\n else {\n logger.error(`Notification handler '${message.method}' failed unexpectedly.`);\n }\n }\n }\n else {\n unhandledNotificationEmitter.fire(message);\n }\n }\n function handleInvalidMessage(message) {\n if (!message) {\n logger.error('Received empty message.');\n return;\n }\n logger.error(`Received message which is neither a response nor a notification message:\\n${JSON.stringify(message, null, 4)}`);\n // Test whether we find an id to reject the promise\n const responseMessage = message;\n if (Is.string(responseMessage.id) || Is.number(responseMessage.id)) {\n const key = responseMessage.id;\n const responseHandler = responsePromises.get(key);\n if (responseHandler) {\n responseHandler.reject(new Error('The received response has neither a result nor an error property.'));\n }\n }\n }\n function stringifyTrace(params) {\n if (params === undefined || params === null) {\n return undefined;\n }\n switch (trace) {\n case Trace.Verbose:\n return JSON.stringify(params, null, 4);\n case Trace.Compact:\n return JSON.stringify(params);\n default:\n return undefined;\n }\n }\n function traceSendingRequest(message) {\n if (trace === Trace.Off || !tracer) {\n return;\n }\n if (traceFormat === TraceFormat.Text) {\n let data = undefined;\n if ((trace === Trace.Verbose || trace === Trace.Compact) && message.params) {\n data = `Params: ${stringifyTrace(message.params)}\\n\\n`;\n }\n tracer.log(`Sending request '${message.method} - (${message.id})'.`, data);\n }\n else {\n logLSPMessage('send-request', message);\n }\n }\n function traceSendingNotification(message) {\n if (trace === Trace.Off || !tracer) {\n return;\n }\n if (traceFormat === TraceFormat.Text) {\n let data = undefined;\n if (trace === Trace.Verbose || trace === Trace.Compact) {\n if (message.params) {\n data = `Params: ${stringifyTrace(message.params)}\\n\\n`;\n }\n else {\n data = 'No parameters provided.\\n\\n';\n }\n }\n tracer.log(`Sending notification '${message.method}'.`, data);\n }\n else {\n logLSPMessage('send-notification', message);\n }\n }\n function traceSendingResponse(message, method, startTime) {\n if (trace === Trace.Off || !tracer) {\n return;\n }\n if (traceFormat === TraceFormat.Text) {\n let data = undefined;\n if (trace === Trace.Verbose || trace === Trace.Compact) {\n if (message.error && message.error.data) {\n data = `Error data: ${stringifyTrace(message.error.data)}\\n\\n`;\n }\n else {\n if (message.result) {\n data = `Result: ${stringifyTrace(message.result)}\\n\\n`;\n }\n else if (message.error === undefined) {\n data = 'No result returned.\\n\\n';\n }\n }\n }\n tracer.log(`Sending response '${method} - (${message.id})'. Processing request took ${Date.now() - startTime}ms`, data);\n }\n else {\n logLSPMessage('send-response', message);\n }\n }\n function traceReceivedRequest(message) {\n if (trace === Trace.Off || !tracer) {\n return;\n }\n if (traceFormat === TraceFormat.Text) {\n let data = undefined;\n if ((trace === Trace.Verbose || trace === Trace.Compact) && message.params) {\n data = `Params: ${stringifyTrace(message.params)}\\n\\n`;\n }\n tracer.log(`Received request '${message.method} - (${message.id})'.`, data);\n }\n else {\n logLSPMessage('receive-request', message);\n }\n }\n function traceReceivedNotification(message) {\n if (trace === Trace.Off || !tracer || message.method === LogTraceNotification.type.method) {\n return;\n }\n if (traceFormat === TraceFormat.Text) {\n let data = undefined;\n if (trace === Trace.Verbose || trace === Trace.Compact) {\n if (message.params) {\n data = `Params: ${stringifyTrace(message.params)}\\n\\n`;\n }\n else {\n data = 'No parameters provided.\\n\\n';\n }\n }\n tracer.log(`Received notification '${message.method}'.`, data);\n }\n else {\n logLSPMessage('receive-notification', message);\n }\n }\n function traceReceivedResponse(message, responsePromise) {\n if (trace === Trace.Off || !tracer) {\n return;\n }\n if (traceFormat === TraceFormat.Text) {\n let data = undefined;\n if (trace === Trace.Verbose || trace === Trace.Compact) {\n if (message.error && message.error.data) {\n data = `Error data: ${stringifyTrace(message.error.data)}\\n\\n`;\n }\n else {\n if (message.result) {\n data = `Result: ${stringifyTrace(message.result)}\\n\\n`;\n }\n else if (message.error === undefined) {\n data = 'No result returned.\\n\\n';\n }\n }\n }\n if (responsePromise) {\n const error = message.error ? ` Request failed: ${message.error.message} (${message.error.code}).` : '';\n tracer.log(`Received response '${responsePromise.method} - (${message.id})' in ${Date.now() - responsePromise.timerStart}ms.${error}`, data);\n }\n else {\n tracer.log(`Received response ${message.id} without active response promise.`, data);\n }\n }\n else {\n logLSPMessage('receive-response', message);\n }\n }\n function logLSPMessage(type, message) {\n if (!tracer || trace === Trace.Off) {\n return;\n }\n const lspMessage = {\n isLSPMessage: true,\n type,\n message,\n timestamp: Date.now()\n };\n tracer.log(lspMessage);\n }\n function throwIfClosedOrDisposed() {\n if (isClosed()) {\n throw new ConnectionError(ConnectionErrors.Closed, 'Connection is closed.');\n }\n if (isDisposed()) {\n throw new ConnectionError(ConnectionErrors.Disposed, 'Connection is disposed.');\n }\n }\n function throwIfListening() {\n if (isListening()) {\n throw new ConnectionError(ConnectionErrors.AlreadyListening, 'Connection is already listening');\n }\n }\n function throwIfNotListening() {\n if (!isListening()) {\n throw new Error('Call listen() first.');\n }\n }\n function undefinedToNull(param) {\n if (param === undefined) {\n return null;\n }\n else {\n return param;\n }\n }\n function nullToUndefined(param) {\n if (param === null) {\n return undefined;\n }\n else {\n return param;\n }\n }\n function isNamedParam(param) {\n return param !== undefined && param !== null && !Array.isArray(param) && typeof param === 'object';\n }\n function computeSingleParam(parameterStructures, param) {\n switch (parameterStructures) {\n case messages_1.ParameterStructures.auto:\n if (isNamedParam(param)) {\n return nullToUndefined(param);\n }\n else {\n return [undefinedToNull(param)];\n }\n case messages_1.ParameterStructures.byName:\n if (!isNamedParam(param)) {\n throw new Error(`Received parameters by name but param is not an object literal.`);\n }\n return nullToUndefined(param);\n case messages_1.ParameterStructures.byPosition:\n return [undefinedToNull(param)];\n default:\n throw new Error(`Unknown parameter structure ${parameterStructures.toString()}`);\n }\n }\n function computeMessageParams(type, params) {\n let result;\n const numberOfParams = type.numberOfParams;\n switch (numberOfParams) {\n case 0:\n result = undefined;\n break;\n case 1:\n result = computeSingleParam(type.parameterStructures, params[0]);\n break;\n default:\n result = [];\n for (let i = 0; i < params.length && i < numberOfParams; i++) {\n result.push(undefinedToNull(params[i]));\n }\n if (params.length < numberOfParams) {\n for (let i = params.length; i < numberOfParams; i++) {\n result.push(null);\n }\n }\n break;\n }\n return result;\n }\n const connection = {\n sendNotification: (type, ...args) => {\n throwIfClosedOrDisposed();\n let method;\n let messageParams;\n if (Is.string(type)) {\n method = type;\n const first = args[0];\n let paramStart = 0;\n let parameterStructures = messages_1.ParameterStructures.auto;\n if (messages_1.ParameterStructures.is(first)) {\n paramStart = 1;\n parameterStructures = first;\n }\n let paramEnd = args.length;\n const numberOfParams = paramEnd - paramStart;\n switch (numberOfParams) {\n case 0:\n messageParams = undefined;\n break;\n case 1:\n messageParams = computeSingleParam(parameterStructures, args[paramStart]);\n break;\n default:\n if (parameterStructures === messages_1.ParameterStructures.byName) {\n throw new Error(`Received ${numberOfParams} parameters for 'by Name' notification parameter structure.`);\n }\n messageParams = args.slice(paramStart, paramEnd).map(value => undefinedToNull(value));\n break;\n }\n }\n else {\n const params = args;\n method = type.method;\n messageParams = computeMessageParams(type, params);\n }\n const notificationMessage = {\n jsonrpc: version,\n method: method,\n params: messageParams\n };\n traceSendingNotification(notificationMessage);\n return messageWriter.write(notificationMessage).catch((error) => {\n logger.error(`Sending notification failed.`);\n throw error;\n });\n },\n onNotification: (type, handler) => {\n throwIfClosedOrDisposed();\n let method;\n if (Is.func(type)) {\n starNotificationHandler = type;\n }\n else if (handler) {\n if (Is.string(type)) {\n method = type;\n notificationHandlers.set(type, { type: undefined, handler });\n }\n else {\n method = type.method;\n notificationHandlers.set(type.method, { type, handler });\n }\n }\n return {\n dispose: () => {\n if (method !== undefined) {\n notificationHandlers.delete(method);\n }\n else {\n starNotificationHandler = undefined;\n }\n }\n };\n },\n onProgress: (_type, token, handler) => {\n if (progressHandlers.has(token)) {\n throw new Error(`Progress handler for token ${token} already registered`);\n }\n progressHandlers.set(token, handler);\n return {\n dispose: () => {\n progressHandlers.delete(token);\n }\n };\n },\n sendProgress: (_type, token, value) => {\n // This should not await but simple return to ensure that we don't have another\n // async scheduling. Otherwise one send could overtake another send.\n return connection.sendNotification(ProgressNotification.type, { token, value });\n },\n onUnhandledProgress: unhandledProgressEmitter.event,\n sendRequest: (type, ...args) => {\n throwIfClosedOrDisposed();\n throwIfNotListening();\n let method;\n let messageParams;\n let token = undefined;\n if (Is.string(type)) {\n method = type;\n const first = args[0];\n const last = args[args.length - 1];\n let paramStart = 0;\n let parameterStructures = messages_1.ParameterStructures.auto;\n if (messages_1.ParameterStructures.is(first)) {\n paramStart = 1;\n parameterStructures = first;\n }\n let paramEnd = args.length;\n if (cancellation_1.CancellationToken.is(last)) {\n paramEnd = paramEnd - 1;\n token = last;\n }\n const numberOfParams = paramEnd - paramStart;\n switch (numberOfParams) {\n case 0:\n messageParams = undefined;\n break;\n case 1:\n messageParams = computeSingleParam(parameterStructures, args[paramStart]);\n break;\n default:\n if (parameterStructures === messages_1.ParameterStructures.byName) {\n throw new Error(`Received ${numberOfParams} parameters for 'by Name' request parameter structure.`);\n }\n messageParams = args.slice(paramStart, paramEnd).map(value => undefinedToNull(value));\n break;\n }\n }\n else {\n const params = args;\n method = type.method;\n messageParams = computeMessageParams(type, params);\n const numberOfParams = type.numberOfParams;\n token = cancellation_1.CancellationToken.is(params[numberOfParams]) ? params[numberOfParams] : undefined;\n }\n const id = sequenceNumber++;\n let disposable;\n if (token) {\n disposable = token.onCancellationRequested(() => {\n const p = cancellationStrategy.sender.sendCancellation(connection, id);\n if (p === undefined) {\n logger.log(`Received no promise from cancellation strategy when cancelling id ${id}`);\n return Promise.resolve();\n }\n else {\n return p.catch(() => {\n logger.log(`Sending cancellation messages for id ${id} failed`);\n });\n }\n });\n }\n const requestMessage = {\n jsonrpc: version,\n id: id,\n method: method,\n params: messageParams\n };\n traceSendingRequest(requestMessage);\n if (typeof cancellationStrategy.sender.enableCancellation === 'function') {\n cancellationStrategy.sender.enableCancellation(requestMessage);\n }\n return new Promise(async (resolve, reject) => {\n const resolveWithCleanup = (r) => {\n resolve(r);\n cancellationStrategy.sender.cleanup(id);\n disposable?.dispose();\n };\n const rejectWithCleanup = (r) => {\n reject(r);\n cancellationStrategy.sender.cleanup(id);\n disposable?.dispose();\n };\n const responsePromise = { method: method, timerStart: Date.now(), resolve: resolveWithCleanup, reject: rejectWithCleanup };\n try {\n responsePromises.set(id, responsePromise);\n await messageWriter.write(requestMessage);\n }\n catch (error) {\n // Writing the message failed. So we need to delete it from the response promises and\n // reject it.\n responsePromises.delete(id);\n responsePromise.reject(new messages_1.ResponseError(messages_1.ErrorCodes.MessageWriteError, error.message ? error.message : 'Unknown reason'));\n logger.error(`Sending request failed.`);\n throw error;\n }\n });\n },\n onRequest: (type, handler) => {\n throwIfClosedOrDisposed();\n let method = null;\n if (StarRequestHandler.is(type)) {\n method = undefined;\n starRequestHandler = type;\n }\n else if (Is.string(type)) {\n method = null;\n if (handler !== undefined) {\n method = type;\n requestHandlers.set(type, { handler: handler, type: undefined });\n }\n }\n else {\n if (handler !== undefined) {\n method = type.method;\n requestHandlers.set(type.method, { type, handler });\n }\n }\n return {\n dispose: () => {\n if (method === null) {\n return;\n }\n if (method !== undefined) {\n requestHandlers.delete(method);\n }\n else {\n starRequestHandler = undefined;\n }\n }\n };\n },\n hasPendingResponse: () => {\n return responsePromises.size > 0;\n },\n trace: async (_value, _tracer, sendNotificationOrTraceOptions) => {\n let _sendNotification = false;\n let _traceFormat = TraceFormat.Text;\n if (sendNotificationOrTraceOptions !== undefined) {\n if (Is.boolean(sendNotificationOrTraceOptions)) {\n _sendNotification = sendNotificationOrTraceOptions;\n }\n else {\n _sendNotification = sendNotificationOrTraceOptions.sendNotification || false;\n _traceFormat = sendNotificationOrTraceOptions.traceFormat || TraceFormat.Text;\n }\n }\n trace = _value;\n traceFormat = _traceFormat;\n if (trace === Trace.Off) {\n tracer = undefined;\n }\n else {\n tracer = _tracer;\n }\n if (_sendNotification && !isClosed() && !isDisposed()) {\n await connection.sendNotification(SetTraceNotification.type, { value: Trace.toString(_value) });\n }\n },\n onError: errorEmitter.event,\n onClose: closeEmitter.event,\n onUnhandledNotification: unhandledNotificationEmitter.event,\n onDispose: disposeEmitter.event,\n end: () => {\n messageWriter.end();\n },\n dispose: () => {\n if (isDisposed()) {\n return;\n }\n state = ConnectionState.Disposed;\n disposeEmitter.fire(undefined);\n const error = new messages_1.ResponseError(messages_1.ErrorCodes.PendingResponseRejected, 'Pending response rejected since connection got disposed');\n for (const promise of responsePromises.values()) {\n promise.reject(error);\n }\n responsePromises = new Map();\n requestTokens = new Map();\n knownCanceledRequests = new Set();\n messageQueue = new linkedMap_1.LinkedMap();\n // Test for backwards compatibility\n if (Is.func(messageWriter.dispose)) {\n messageWriter.dispose();\n }\n if (Is.func(messageReader.dispose)) {\n messageReader.dispose();\n }\n },\n listen: () => {\n throwIfClosedOrDisposed();\n throwIfListening();\n state = ConnectionState.Listening;\n messageReader.listen(callback);\n },\n inspect: () => {\n // eslint-disable-next-line no-console\n (0, ral_1.default)().console.log('inspect');\n }\n };\n connection.onNotification(LogTraceNotification.type, (params) => {\n if (trace === Trace.Off || !tracer) {\n return;\n }\n const verbose = trace === Trace.Verbose || trace === Trace.Compact;\n tracer.log(params.message, verbose ? params.verbose : undefined);\n });\n connection.onNotification(ProgressNotification.type, (params) => {\n const handler = progressHandlers.get(params.token);\n if (handler) {\n handler(params.value);\n }\n else {\n unhandledProgressEmitter.fire(params);\n }\n });\n return connection;\n}\nexports.createMessageConnection = createMessageConnection;\n", "\"use strict\";\n/* --------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n * ------------------------------------------------------------------------------------------ */\n/// \nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ProgressType = exports.ProgressToken = exports.createMessageConnection = exports.NullLogger = exports.ConnectionOptions = exports.ConnectionStrategy = exports.AbstractMessageBuffer = exports.WriteableStreamMessageWriter = exports.AbstractMessageWriter = exports.MessageWriter = exports.ReadableStreamMessageReader = exports.AbstractMessageReader = exports.MessageReader = exports.SharedArrayReceiverStrategy = exports.SharedArraySenderStrategy = exports.CancellationToken = exports.CancellationTokenSource = exports.Emitter = exports.Event = exports.Disposable = exports.LRUCache = exports.Touch = exports.LinkedMap = exports.ParameterStructures = exports.NotificationType9 = exports.NotificationType8 = exports.NotificationType7 = exports.NotificationType6 = exports.NotificationType5 = exports.NotificationType4 = exports.NotificationType3 = exports.NotificationType2 = exports.NotificationType1 = exports.NotificationType0 = exports.NotificationType = exports.ErrorCodes = exports.ResponseError = exports.RequestType9 = exports.RequestType8 = exports.RequestType7 = exports.RequestType6 = exports.RequestType5 = exports.RequestType4 = exports.RequestType3 = exports.RequestType2 = exports.RequestType1 = exports.RequestType0 = exports.RequestType = exports.Message = exports.RAL = void 0;\nexports.MessageStrategy = exports.CancellationStrategy = exports.CancellationSenderStrategy = exports.CancellationReceiverStrategy = exports.ConnectionError = exports.ConnectionErrors = exports.LogTraceNotification = exports.SetTraceNotification = exports.TraceFormat = exports.TraceValues = exports.Trace = void 0;\nconst messages_1 = require(\"./messages\");\nObject.defineProperty(exports, \"Message\", { enumerable: true, get: function () { return messages_1.Message; } });\nObject.defineProperty(exports, \"RequestType\", { enumerable: true, get: function () { return messages_1.RequestType; } });\nObject.defineProperty(exports, \"RequestType0\", { enumerable: true, get: function () { return messages_1.RequestType0; } });\nObject.defineProperty(exports, \"RequestType1\", { enumerable: true, get: function () { return messages_1.RequestType1; } });\nObject.defineProperty(exports, \"RequestType2\", { enumerable: true, get: function () { return messages_1.RequestType2; } });\nObject.defineProperty(exports, \"RequestType3\", { enumerable: true, get: function () { return messages_1.RequestType3; } });\nObject.defineProperty(exports, \"RequestType4\", { enumerable: true, get: function () { return messages_1.RequestType4; } });\nObject.defineProperty(exports, \"RequestType5\", { enumerable: true, get: function () { return messages_1.RequestType5; } });\nObject.defineProperty(exports, \"RequestType6\", { enumerable: true, get: function () { return messages_1.RequestType6; } });\nObject.defineProperty(exports, \"RequestType7\", { enumerable: true, get: function () { return messages_1.RequestType7; } });\nObject.defineProperty(exports, \"RequestType8\", { enumerable: true, get: function () { return messages_1.RequestType8; } });\nObject.defineProperty(exports, \"RequestType9\", { enumerable: true, get: function () { return messages_1.RequestType9; } });\nObject.defineProperty(exports, \"ResponseError\", { enumerable: true, get: function () { return messages_1.ResponseError; } });\nObject.defineProperty(exports, \"ErrorCodes\", { enumerable: true, get: function () { return messages_1.ErrorCodes; } });\nObject.defineProperty(exports, \"NotificationType\", { enumerable: true, get: function () { return messages_1.NotificationType; } });\nObject.defineProperty(exports, \"NotificationType0\", { enumerable: true, get: function () { return messages_1.NotificationType0; } });\nObject.defineProperty(exports, \"NotificationType1\", { enumerable: true, get: function () { return messages_1.NotificationType1; } });\nObject.defineProperty(exports, \"NotificationType2\", { enumerable: true, get: function () { return messages_1.NotificationType2; } });\nObject.defineProperty(exports, \"NotificationType3\", { enumerable: true, get: function () { return messages_1.NotificationType3; } });\nObject.defineProperty(exports, \"NotificationType4\", { enumerable: true, get: function () { return messages_1.NotificationType4; } });\nObject.defineProperty(exports, \"NotificationType5\", { enumerable: true, get: function () { return messages_1.NotificationType5; } });\nObject.defineProperty(exports, \"NotificationType6\", { enumerable: true, get: function () { return messages_1.NotificationType6; } });\nObject.defineProperty(exports, \"NotificationType7\", { enumerable: true, get: function () { return messages_1.NotificationType7; } });\nObject.defineProperty(exports, \"NotificationType8\", { enumerable: true, get: function () { return messages_1.NotificationType8; } });\nObject.defineProperty(exports, \"NotificationType9\", { enumerable: true, get: function () { return messages_1.NotificationType9; } });\nObject.defineProperty(exports, \"ParameterStructures\", { enumerable: true, get: function () { return messages_1.ParameterStructures; } });\nconst linkedMap_1 = require(\"./linkedMap\");\nObject.defineProperty(exports, \"LinkedMap\", { enumerable: true, get: function () { return linkedMap_1.LinkedMap; } });\nObject.defineProperty(exports, \"LRUCache\", { enumerable: true, get: function () { return linkedMap_1.LRUCache; } });\nObject.defineProperty(exports, \"Touch\", { enumerable: true, get: function () { return linkedMap_1.Touch; } });\nconst disposable_1 = require(\"./disposable\");\nObject.defineProperty(exports, \"Disposable\", { enumerable: true, get: function () { return disposable_1.Disposable; } });\nconst events_1 = require(\"./events\");\nObject.defineProperty(exports, \"Event\", { enumerable: true, get: function () { return events_1.Event; } });\nObject.defineProperty(exports, \"Emitter\", { enumerable: true, get: function () { return events_1.Emitter; } });\nconst cancellation_1 = require(\"./cancellation\");\nObject.defineProperty(exports, \"CancellationTokenSource\", { enumerable: true, get: function () { return cancellation_1.CancellationTokenSource; } });\nObject.defineProperty(exports, \"CancellationToken\", { enumerable: true, get: function () { return cancellation_1.CancellationToken; } });\nconst sharedArrayCancellation_1 = require(\"./sharedArrayCancellation\");\nObject.defineProperty(exports, \"SharedArraySenderStrategy\", { enumerable: true, get: function () { return sharedArrayCancellation_1.SharedArraySenderStrategy; } });\nObject.defineProperty(exports, \"SharedArrayReceiverStrategy\", { enumerable: true, get: function () { return sharedArrayCancellation_1.SharedArrayReceiverStrategy; } });\nconst messageReader_1 = require(\"./messageReader\");\nObject.defineProperty(exports, \"MessageReader\", { enumerable: true, get: function () { return messageReader_1.MessageReader; } });\nObject.defineProperty(exports, \"AbstractMessageReader\", { enumerable: true, get: function () { return messageReader_1.AbstractMessageReader; } });\nObject.defineProperty(exports, \"ReadableStreamMessageReader\", { enumerable: true, get: function () { return messageReader_1.ReadableStreamMessageReader; } });\nconst messageWriter_1 = require(\"./messageWriter\");\nObject.defineProperty(exports, \"MessageWriter\", { enumerable: true, get: function () { return messageWriter_1.MessageWriter; } });\nObject.defineProperty(exports, \"AbstractMessageWriter\", { enumerable: true, get: function () { return messageWriter_1.AbstractMessageWriter; } });\nObject.defineProperty(exports, \"WriteableStreamMessageWriter\", { enumerable: true, get: function () { return messageWriter_1.WriteableStreamMessageWriter; } });\nconst messageBuffer_1 = require(\"./messageBuffer\");\nObject.defineProperty(exports, \"AbstractMessageBuffer\", { enumerable: true, get: function () { return messageBuffer_1.AbstractMessageBuffer; } });\nconst connection_1 = require(\"./connection\");\nObject.defineProperty(exports, \"ConnectionStrategy\", { enumerable: true, get: function () { return connection_1.ConnectionStrategy; } });\nObject.defineProperty(exports, \"ConnectionOptions\", { enumerable: true, get: function () { return connection_1.ConnectionOptions; } });\nObject.defineProperty(exports, \"NullLogger\", { enumerable: true, get: function () { return connection_1.NullLogger; } });\nObject.defineProperty(exports, \"createMessageConnection\", { enumerable: true, get: function () { return connection_1.createMessageConnection; } });\nObject.defineProperty(exports, \"ProgressToken\", { enumerable: true, get: function () { return connection_1.ProgressToken; } });\nObject.defineProperty(exports, \"ProgressType\", { enumerable: true, get: function () { return connection_1.ProgressType; } });\nObject.defineProperty(exports, \"Trace\", { enumerable: true, get: function () { return connection_1.Trace; } });\nObject.defineProperty(exports, \"TraceValues\", { enumerable: true, get: function () { return connection_1.TraceValues; } });\nObject.defineProperty(exports, \"TraceFormat\", { enumerable: true, get: function () { return connection_1.TraceFormat; } });\nObject.defineProperty(exports, \"SetTraceNotification\", { enumerable: true, get: function () { return connection_1.SetTraceNotification; } });\nObject.defineProperty(exports, \"LogTraceNotification\", { enumerable: true, get: function () { return connection_1.LogTraceNotification; } });\nObject.defineProperty(exports, \"ConnectionErrors\", { enumerable: true, get: function () { return connection_1.ConnectionErrors; } });\nObject.defineProperty(exports, \"ConnectionError\", { enumerable: true, get: function () { return connection_1.ConnectionError; } });\nObject.defineProperty(exports, \"CancellationReceiverStrategy\", { enumerable: true, get: function () { return connection_1.CancellationReceiverStrategy; } });\nObject.defineProperty(exports, \"CancellationSenderStrategy\", { enumerable: true, get: function () { return connection_1.CancellationSenderStrategy; } });\nObject.defineProperty(exports, \"CancellationStrategy\", { enumerable: true, get: function () { return connection_1.CancellationStrategy; } });\nObject.defineProperty(exports, \"MessageStrategy\", { enumerable: true, get: function () { return connection_1.MessageStrategy; } });\nconst ral_1 = require(\"./ral\");\nexports.RAL = ral_1.default;\n", "\"use strict\";\n/* --------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n * ------------------------------------------------------------------------------------------ */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst util_1 = require(\"util\");\nconst api_1 = require(\"../common/api\");\nclass MessageBuffer extends api_1.AbstractMessageBuffer {\n constructor(encoding = 'utf-8') {\n super(encoding);\n }\n emptyBuffer() {\n return MessageBuffer.emptyBuffer;\n }\n fromString(value, encoding) {\n return Buffer.from(value, encoding);\n }\n toString(value, encoding) {\n if (value instanceof Buffer) {\n return value.toString(encoding);\n }\n else {\n return new util_1.TextDecoder(encoding).decode(value);\n }\n }\n asNative(buffer, length) {\n if (length === undefined) {\n return buffer instanceof Buffer ? buffer : Buffer.from(buffer);\n }\n else {\n return buffer instanceof Buffer ? buffer.slice(0, length) : Buffer.from(buffer, 0, length);\n }\n }\n allocNative(length) {\n return Buffer.allocUnsafe(length);\n }\n}\nMessageBuffer.emptyBuffer = Buffer.allocUnsafe(0);\nclass ReadableStreamWrapper {\n constructor(stream) {\n this.stream = stream;\n }\n onClose(listener) {\n this.stream.on('close', listener);\n return api_1.Disposable.create(() => this.stream.off('close', listener));\n }\n onError(listener) {\n this.stream.on('error', listener);\n return api_1.Disposable.create(() => this.stream.off('error', listener));\n }\n onEnd(listener) {\n this.stream.on('end', listener);\n return api_1.Disposable.create(() => this.stream.off('end', listener));\n }\n onData(listener) {\n this.stream.on('data', listener);\n return api_1.Disposable.create(() => this.stream.off('data', listener));\n }\n}\nclass WritableStreamWrapper {\n constructor(stream) {\n this.stream = stream;\n }\n onClose(listener) {\n this.stream.on('close', listener);\n return api_1.Disposable.create(() => this.stream.off('close', listener));\n }\n onError(listener) {\n this.stream.on('error', listener);\n return api_1.Disposable.create(() => this.stream.off('error', listener));\n }\n onEnd(listener) {\n this.stream.on('end', listener);\n return api_1.Disposable.create(() => this.stream.off('end', listener));\n }\n write(data, encoding) {\n return new Promise((resolve, reject) => {\n const callback = (error) => {\n if (error === undefined || error === null) {\n resolve();\n }\n else {\n reject(error);\n }\n };\n if (typeof data === 'string') {\n this.stream.write(data, encoding, callback);\n }\n else {\n this.stream.write(data, callback);\n }\n });\n }\n end() {\n this.stream.end();\n }\n}\nconst _ril = Object.freeze({\n messageBuffer: Object.freeze({\n create: (encoding) => new MessageBuffer(encoding)\n }),\n applicationJson: Object.freeze({\n encoder: Object.freeze({\n name: 'application/json',\n encode: (msg, options) => {\n try {\n return Promise.resolve(Buffer.from(JSON.stringify(msg, undefined, 0), options.charset));\n }\n catch (err) {\n return Promise.reject(err);\n }\n }\n }),\n decoder: Object.freeze({\n name: 'application/json',\n decode: (buffer, options) => {\n try {\n if (buffer instanceof Buffer) {\n return Promise.resolve(JSON.parse(buffer.toString(options.charset)));\n }\n else {\n return Promise.resolve(JSON.parse(new util_1.TextDecoder(options.charset).decode(buffer)));\n }\n }\n catch (err) {\n return Promise.reject(err);\n }\n }\n })\n }),\n stream: Object.freeze({\n asReadableStream: (stream) => new ReadableStreamWrapper(stream),\n asWritableStream: (stream) => new WritableStreamWrapper(stream)\n }),\n console: console,\n timer: Object.freeze({\n setTimeout(callback, ms, ...args) {\n const handle = setTimeout(callback, ms, ...args);\n return { dispose: () => clearTimeout(handle) };\n },\n setImmediate(callback, ...args) {\n const handle = setImmediate(callback, ...args);\n return { dispose: () => clearImmediate(handle) };\n },\n setInterval(callback, ms, ...args) {\n const handle = setInterval(callback, ms, ...args);\n return { dispose: () => clearInterval(handle) };\n }\n })\n});\nfunction RIL() {\n return _ril;\n}\n(function (RIL) {\n function install() {\n api_1.RAL.install(_ril);\n }\n RIL.install = install;\n})(RIL || (RIL = {}));\nexports.default = RIL;\n", "\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.createMessageConnection = exports.createServerSocketTransport = exports.createClientSocketTransport = exports.createServerPipeTransport = exports.createClientPipeTransport = exports.generateRandomPipeName = exports.StreamMessageWriter = exports.StreamMessageReader = exports.SocketMessageWriter = exports.SocketMessageReader = exports.PortMessageWriter = exports.PortMessageReader = exports.IPCMessageWriter = exports.IPCMessageReader = void 0;\n/* --------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n * ----------------------------------------------------------------------------------------- */\nconst ril_1 = require(\"./ril\");\n// Install the node runtime abstract.\nril_1.default.install();\nconst path = require(\"path\");\nconst os = require(\"os\");\nconst crypto_1 = require(\"crypto\");\nconst net_1 = require(\"net\");\nconst api_1 = require(\"../common/api\");\n__exportStar(require(\"../common/api\"), exports);\nclass IPCMessageReader extends api_1.AbstractMessageReader {\n constructor(process) {\n super();\n this.process = process;\n let eventEmitter = this.process;\n eventEmitter.on('error', (error) => this.fireError(error));\n eventEmitter.on('close', () => this.fireClose());\n }\n listen(callback) {\n this.process.on('message', callback);\n return api_1.Disposable.create(() => this.process.off('message', callback));\n }\n}\nexports.IPCMessageReader = IPCMessageReader;\nclass IPCMessageWriter extends api_1.AbstractMessageWriter {\n constructor(process) {\n super();\n this.process = process;\n this.errorCount = 0;\n const eventEmitter = this.process;\n eventEmitter.on('error', (error) => this.fireError(error));\n eventEmitter.on('close', () => this.fireClose);\n }\n write(msg) {\n try {\n if (typeof this.process.send === 'function') {\n this.process.send(msg, undefined, undefined, (error) => {\n if (error) {\n this.errorCount++;\n this.handleError(error, msg);\n }\n else {\n this.errorCount = 0;\n }\n });\n }\n return Promise.resolve();\n }\n catch (error) {\n this.handleError(error, msg);\n return Promise.reject(error);\n }\n }\n handleError(error, msg) {\n this.errorCount++;\n this.fireError(error, msg, this.errorCount);\n }\n end() {\n }\n}\nexports.IPCMessageWriter = IPCMessageWriter;\nclass PortMessageReader extends api_1.AbstractMessageReader {\n constructor(port) {\n super();\n this.onData = new api_1.Emitter;\n port.on('close', () => this.fireClose);\n port.on('error', (error) => this.fireError(error));\n port.on('message', (message) => {\n this.onData.fire(message);\n });\n }\n listen(callback) {\n return this.onData.event(callback);\n }\n}\nexports.PortMessageReader = PortMessageReader;\nclass PortMessageWriter extends api_1.AbstractMessageWriter {\n constructor(port) {\n super();\n this.port = port;\n this.errorCount = 0;\n port.on('close', () => this.fireClose());\n port.on('error', (error) => this.fireError(error));\n }\n write(msg) {\n try {\n this.port.postMessage(msg);\n return Promise.resolve();\n }\n catch (error) {\n this.handleError(error, msg);\n return Promise.reject(error);\n }\n }\n handleError(error, msg) {\n this.errorCount++;\n this.fireError(error, msg, this.errorCount);\n }\n end() {\n }\n}\nexports.PortMessageWriter = PortMessageWriter;\nclass SocketMessageReader extends api_1.ReadableStreamMessageReader {\n constructor(socket, encoding = 'utf-8') {\n super((0, ril_1.default)().stream.asReadableStream(socket), encoding);\n }\n}\nexports.SocketMessageReader = SocketMessageReader;\nclass SocketMessageWriter extends api_1.WriteableStreamMessageWriter {\n constructor(socket, options) {\n super((0, ril_1.default)().stream.asWritableStream(socket), options);\n this.socket = socket;\n }\n dispose() {\n super.dispose();\n this.socket.destroy();\n }\n}\nexports.SocketMessageWriter = SocketMessageWriter;\nclass StreamMessageReader extends api_1.ReadableStreamMessageReader {\n constructor(readable, encoding) {\n super((0, ril_1.default)().stream.asReadableStream(readable), encoding);\n }\n}\nexports.StreamMessageReader = StreamMessageReader;\nclass StreamMessageWriter extends api_1.WriteableStreamMessageWriter {\n constructor(writable, options) {\n super((0, ril_1.default)().stream.asWritableStream(writable), options);\n }\n}\nexports.StreamMessageWriter = StreamMessageWriter;\nconst XDG_RUNTIME_DIR = process.env['XDG_RUNTIME_DIR'];\nconst safeIpcPathLengths = new Map([\n ['linux', 107],\n ['darwin', 103]\n]);\nfunction generateRandomPipeName() {\n const randomSuffix = (0, crypto_1.randomBytes)(21).toString('hex');\n if (process.platform === 'win32') {\n return `\\\\\\\\.\\\\pipe\\\\vscode-jsonrpc-${randomSuffix}-sock`;\n }\n let result;\n if (XDG_RUNTIME_DIR) {\n result = path.join(XDG_RUNTIME_DIR, `vscode-ipc-${randomSuffix}.sock`);\n }\n else {\n result = path.join(os.tmpdir(), `vscode-${randomSuffix}.sock`);\n }\n const limit = safeIpcPathLengths.get(process.platform);\n if (limit !== undefined && result.length > limit) {\n (0, ril_1.default)().console.warn(`WARNING: IPC handle \"${result}\" is longer than ${limit} characters.`);\n }\n return result;\n}\nexports.generateRandomPipeName = generateRandomPipeName;\nfunction createClientPipeTransport(pipeName, encoding = 'utf-8') {\n let connectResolve;\n const connected = new Promise((resolve, _reject) => {\n connectResolve = resolve;\n });\n return new Promise((resolve, reject) => {\n let server = (0, net_1.createServer)((socket) => {\n server.close();\n connectResolve([\n new SocketMessageReader(socket, encoding),\n new SocketMessageWriter(socket, encoding)\n ]);\n });\n server.on('error', reject);\n server.listen(pipeName, () => {\n server.removeListener('error', reject);\n resolve({\n onConnected: () => { return connected; }\n });\n });\n });\n}\nexports.createClientPipeTransport = createClientPipeTransport;\nfunction createServerPipeTransport(pipeName, encoding = 'utf-8') {\n const socket = (0, net_1.createConnection)(pipeName);\n return [\n new SocketMessageReader(socket, encoding),\n new SocketMessageWriter(socket, encoding)\n ];\n}\nexports.createServerPipeTransport = createServerPipeTransport;\nfunction createClientSocketTransport(port, encoding = 'utf-8') {\n let connectResolve;\n const connected = new Promise((resolve, _reject) => {\n connectResolve = resolve;\n });\n return new Promise((resolve, reject) => {\n const server = (0, net_1.createServer)((socket) => {\n server.close();\n connectResolve([\n new SocketMessageReader(socket, encoding),\n new SocketMessageWriter(socket, encoding)\n ]);\n });\n server.on('error', reject);\n server.listen(port, '127.0.0.1', () => {\n server.removeListener('error', reject);\n resolve({\n onConnected: () => { return connected; }\n });\n });\n });\n}\nexports.createClientSocketTransport = createClientSocketTransport;\nfunction createServerSocketTransport(port, encoding = 'utf-8') {\n const socket = (0, net_1.createConnection)(port, '127.0.0.1');\n return [\n new SocketMessageReader(socket, encoding),\n new SocketMessageWriter(socket, encoding)\n ];\n}\nexports.createServerSocketTransport = createServerSocketTransport;\nfunction isReadableStream(value) {\n const candidate = value;\n return candidate.read !== undefined && candidate.addListener !== undefined;\n}\nfunction isWritableStream(value) {\n const candidate = value;\n return candidate.write !== undefined && candidate.addListener !== undefined;\n}\nfunction createMessageConnection(input, output, logger, options) {\n if (!logger) {\n logger = api_1.NullLogger;\n }\n const reader = isReadableStream(input) ? new StreamMessageReader(input) : input;\n const writer = isWritableStream(output) ? new StreamMessageWriter(output) : output;\n if (api_1.ConnectionStrategy.is(options)) {\n options = { connectionStrategy: options };\n }\n return (0, api_1.createMessageConnection)(reader, writer, logger, options);\n}\nexports.createMessageConnection = createMessageConnection;\n", "/* --------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n * ----------------------------------------------------------------------------------------- */\n'use strict';\n\nmodule.exports = require('./lib/node/main');", null, null, "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n//# sourceMappingURL=types.js.map", null, "/******************************************************************************\nCopyright (c) Microsoft Corporation.\n\nPermission to use, copy, modify, and/or distribute this software for any\npurpose with or without fee is hereby granted.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\nPERFORMANCE OF THIS SOFTWARE.\n***************************************************************************** */\n/* global Reflect, Promise, SuppressedError, Symbol, Iterator */\n\nvar extendStatics = function(d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n};\n\nexport function __extends(d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n}\n\nexport var __assign = function() {\n __assign = Object.assign || function __assign(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n }\n return __assign.apply(this, arguments);\n}\n\nexport function __rest(s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n}\n\nexport function __decorate(decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n}\n\nexport function __param(paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n}\n\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\n var _, done = false;\n for (var i = decorators.length - 1; i >= 0; i--) {\n var context = {};\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\n if (kind === \"accessor\") {\n if (result === void 0) continue;\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\n if (_ = accept(result.get)) descriptor.get = _;\n if (_ = accept(result.set)) descriptor.set = _;\n if (_ = accept(result.init)) initializers.unshift(_);\n }\n else if (_ = accept(result)) {\n if (kind === \"field\") initializers.unshift(_);\n else descriptor[key] = _;\n }\n }\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\n done = true;\n};\n\nexport function __runInitializers(thisArg, initializers, value) {\n var useValue = arguments.length > 2;\n for (var i = 0; i < initializers.length; i++) {\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\n }\n return useValue ? value : void 0;\n};\n\nexport function __propKey(x) {\n return typeof x === \"symbol\" ? x : \"\".concat(x);\n};\n\nexport function __setFunctionName(f, name, prefix) {\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\n};\n\nexport function __metadata(metadataKey, metadataValue) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\n}\n\nexport function __awaiter(thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n}\n\nexport function __generator(thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === \"function\" ? Iterator : Object).prototype);\n return g.next = verb(0), g[\"throw\"] = verb(1), g[\"return\"] = verb(2), typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n}\n\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n});\n\nexport function __exportStar(m, o) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\n}\n\nexport function __values(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n}\n\nexport function __read(o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n}\n\n/** @deprecated */\nexport function __spread() {\n for (var ar = [], i = 0; i < arguments.length; i++)\n ar = ar.concat(__read(arguments[i]));\n return ar;\n}\n\n/** @deprecated */\nexport function __spreadArrays() {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n r[k] = a[j];\n return r;\n}\n\nexport function __spreadArray(to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n}\n\nexport function __await(v) {\n return this instanceof __await ? (this.v = v, this) : new __await(v);\n}\n\nexport function __asyncGenerator(thisArg, _arguments, generator) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\n return i = Object.create((typeof AsyncIterator === \"function\" ? AsyncIterator : Object).prototype), verb(\"next\"), verb(\"throw\"), verb(\"return\", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i;\n function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; }\n function verb(n, f) { if (g[n]) { i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } }\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\n function fulfill(value) { resume(\"next\", value); }\n function reject(value) { resume(\"throw\", value); }\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\n}\n\nexport function __asyncDelegator(o) {\n var i, p;\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\n}\n\nexport function __asyncValues(o) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var m = o[Symbol.asyncIterator], i;\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\n}\n\nexport function __makeTemplateObject(cooked, raw) {\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\n return cooked;\n};\n\nvar __setModuleDefault = Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n};\n\nvar ownKeys = function(o) {\n ownKeys = Object.getOwnPropertyNames || function (o) {\n var ar = [];\n for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;\n return ar;\n };\n return ownKeys(o);\n};\n\nexport function __importStar(mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== \"default\") __createBinding(result, mod, k[i]);\n __setModuleDefault(result, mod);\n return result;\n}\n\nexport function __importDefault(mod) {\n return (mod && mod.__esModule) ? mod : { default: mod };\n}\n\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n}\n\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n}\n\nexport function __classPrivateFieldIn(state, receiver) {\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\n}\n\nexport function __addDisposableResource(env, value, async) {\n if (value !== null && value !== void 0) {\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\n var dispose, inner;\n if (async) {\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\n dispose = value[Symbol.asyncDispose];\n }\n if (dispose === void 0) {\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\n dispose = value[Symbol.dispose];\n if (async) inner = dispose;\n }\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\n if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };\n env.stack.push({ value: value, dispose: dispose, async: async });\n }\n else if (async) {\n env.stack.push({ async: true });\n }\n return value;\n}\n\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\n var e = new Error(message);\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\n};\n\nexport function __disposeResources(env) {\n function fail(e) {\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\n env.hasError = true;\n }\n var r, s = 0;\n function next() {\n while (r = env.stack.pop()) {\n try {\n if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next);\n if (r.dispose) {\n var result = r.dispose.call(r.value);\n if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\n }\n else s |= 1;\n }\n catch (e) {\n fail(e);\n }\n }\n if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve();\n if (env.hasError) throw env.error;\n }\n return next();\n}\n\nexport function __rewriteRelativeImportExtension(path, preserveJsx) {\n if (typeof path === \"string\" && /^\\.\\.?\\//.test(path)) {\n return path.replace(/\\.(tsx)$|((?:\\.d)?)((?:\\.[^./]+?)?)\\.([cm]?)ts$/i, function (m, tsx, d, ext, cm) {\n return tsx ? preserveJsx ? \".jsx\" : \".js\" : d && (!ext || !cm) ? m : (d + ext + \".\" + cm.toLowerCase() + \"js\");\n });\n }\n return path;\n}\n\nexport default {\n __extends,\n __assign,\n __rest,\n __decorate,\n __param,\n __esDecorate,\n __runInitializers,\n __propKey,\n __setFunctionName,\n __metadata,\n __awaiter,\n __generator,\n __createBinding,\n __exportStar,\n __values,\n __read,\n __spread,\n __spreadArrays,\n __spreadArray,\n __await,\n __asyncGenerator,\n __asyncDelegator,\n __asyncValues,\n __makeTemplateObject,\n __importStar,\n __importDefault,\n __classPrivateFieldGet,\n __classPrivateFieldSet,\n __classPrivateFieldIn,\n __addDisposableResource,\n __disposeResources,\n __rewriteRelativeImportExtension,\n};\n", "/**\n * Helpers.\n */\n\nvar s = 1000;\nvar m = s * 60;\nvar h = m * 60;\nvar d = h * 24;\nvar w = d * 7;\nvar y = d * 365.25;\n\n/**\n * Parse or format the given `val`.\n *\n * Options:\n *\n * - `long` verbose formatting [false]\n *\n * @param {String|Number} val\n * @param {Object} [options]\n * @throws {Error} throw an error if val is not a non-empty string or a number\n * @return {String|Number}\n * @api public\n */\n\nmodule.exports = function (val, options) {\n options = options || {};\n var type = typeof val;\n if (type === 'string' && val.length > 0) {\n return parse(val);\n } else if (type === 'number' && isFinite(val)) {\n return options.long ? fmtLong(val) : fmtShort(val);\n }\n throw new Error(\n 'val is not a non-empty string or a valid number. val=' +\n JSON.stringify(val)\n );\n};\n\n/**\n * Parse the given `str` and return milliseconds.\n *\n * @param {String} str\n * @return {Number}\n * @api private\n */\n\nfunction parse(str) {\n str = String(str);\n if (str.length > 100) {\n return;\n }\n var match = /^(-?(?:\\d+)?\\.?\\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(\n str\n );\n if (!match) {\n return;\n }\n var n = parseFloat(match[1]);\n var type = (match[2] || 'ms').toLowerCase();\n switch (type) {\n case 'years':\n case 'year':\n case 'yrs':\n case 'yr':\n case 'y':\n return n * y;\n case 'weeks':\n case 'week':\n case 'w':\n return n * w;\n case 'days':\n case 'day':\n case 'd':\n return n * d;\n case 'hours':\n case 'hour':\n case 'hrs':\n case 'hr':\n case 'h':\n return n * h;\n case 'minutes':\n case 'minute':\n case 'mins':\n case 'min':\n case 'm':\n return n * m;\n case 'seconds':\n case 'second':\n case 'secs':\n case 'sec':\n case 's':\n return n * s;\n case 'milliseconds':\n case 'millisecond':\n case 'msecs':\n case 'msec':\n case 'ms':\n return n;\n default:\n return undefined;\n }\n}\n\n/**\n * Short format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction fmtShort(ms) {\n var msAbs = Math.abs(ms);\n if (msAbs >= d) {\n return Math.round(ms / d) + 'd';\n }\n if (msAbs >= h) {\n return Math.round(ms / h) + 'h';\n }\n if (msAbs >= m) {\n return Math.round(ms / m) + 'm';\n }\n if (msAbs >= s) {\n return Math.round(ms / s) + 's';\n }\n return ms + 'ms';\n}\n\n/**\n * Long format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction fmtLong(ms) {\n var msAbs = Math.abs(ms);\n if (msAbs >= d) {\n return plural(ms, msAbs, d, 'day');\n }\n if (msAbs >= h) {\n return plural(ms, msAbs, h, 'hour');\n }\n if (msAbs >= m) {\n return plural(ms, msAbs, m, 'minute');\n }\n if (msAbs >= s) {\n return plural(ms, msAbs, s, 'second');\n }\n return ms + ' ms';\n}\n\n/**\n * Pluralization helper.\n */\n\nfunction plural(ms, msAbs, n, name) {\n var isPlural = msAbs >= n * 1.5;\n return Math.round(ms / n) + ' ' + name + (isPlural ? 's' : '');\n}\n", "\n/**\n * This is the common logic for both the Node.js and web browser\n * implementations of `debug()`.\n */\n\nfunction setup(env) {\n\tcreateDebug.debug = createDebug;\n\tcreateDebug.default = createDebug;\n\tcreateDebug.coerce = coerce;\n\tcreateDebug.disable = disable;\n\tcreateDebug.enable = enable;\n\tcreateDebug.enabled = enabled;\n\tcreateDebug.humanize = require('ms');\n\tcreateDebug.destroy = destroy;\n\n\tObject.keys(env).forEach(key => {\n\t\tcreateDebug[key] = env[key];\n\t});\n\n\t/**\n\t* The currently active debug mode names, and names to skip.\n\t*/\n\n\tcreateDebug.names = [];\n\tcreateDebug.skips = [];\n\n\t/**\n\t* Map of special \"%n\" handling functions, for the debug \"format\" argument.\n\t*\n\t* Valid key names are a single, lower or upper-case letter, i.e. \"n\" and \"N\".\n\t*/\n\tcreateDebug.formatters = {};\n\n\t/**\n\t* Selects a color for a debug namespace\n\t* @param {String} namespace The namespace string for the debug instance to be colored\n\t* @return {Number|String} An ANSI color code for the given namespace\n\t* @api private\n\t*/\n\tfunction selectColor(namespace) {\n\t\tlet hash = 0;\n\n\t\tfor (let i = 0; i < namespace.length; i++) {\n\t\t\thash = ((hash << 5) - hash) + namespace.charCodeAt(i);\n\t\t\thash |= 0; // Convert to 32bit integer\n\t\t}\n\n\t\treturn createDebug.colors[Math.abs(hash) % createDebug.colors.length];\n\t}\n\tcreateDebug.selectColor = selectColor;\n\n\t/**\n\t* Create a debugger with the given `namespace`.\n\t*\n\t* @param {String} namespace\n\t* @return {Function}\n\t* @api public\n\t*/\n\tfunction createDebug(namespace) {\n\t\tlet prevTime;\n\t\tlet enableOverride = null;\n\t\tlet namespacesCache;\n\t\tlet enabledCache;\n\n\t\tfunction debug(...args) {\n\t\t\t// Disabled?\n\t\t\tif (!debug.enabled) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst self = debug;\n\n\t\t\t// Set `diff` timestamp\n\t\t\tconst curr = Number(new Date());\n\t\t\tconst ms = curr - (prevTime || curr);\n\t\t\tself.diff = ms;\n\t\t\tself.prev = prevTime;\n\t\t\tself.curr = curr;\n\t\t\tprevTime = curr;\n\n\t\t\targs[0] = createDebug.coerce(args[0]);\n\n\t\t\tif (typeof args[0] !== 'string') {\n\t\t\t\t// Anything else let's inspect with %O\n\t\t\t\targs.unshift('%O');\n\t\t\t}\n\n\t\t\t// Apply any `formatters` transformations\n\t\t\tlet index = 0;\n\t\t\targs[0] = args[0].replace(/%([a-zA-Z%])/g, (match, format) => {\n\t\t\t\t// If we encounter an escaped % then don't increase the array index\n\t\t\t\tif (match === '%%') {\n\t\t\t\t\treturn '%';\n\t\t\t\t}\n\t\t\t\tindex++;\n\t\t\t\tconst formatter = createDebug.formatters[format];\n\t\t\t\tif (typeof formatter === 'function') {\n\t\t\t\t\tconst val = args[index];\n\t\t\t\t\tmatch = formatter.call(self, val);\n\n\t\t\t\t\t// Now we need to remove `args[index]` since it's inlined in the `format`\n\t\t\t\t\targs.splice(index, 1);\n\t\t\t\t\tindex--;\n\t\t\t\t}\n\t\t\t\treturn match;\n\t\t\t});\n\n\t\t\t// Apply env-specific formatting (colors, etc.)\n\t\t\tcreateDebug.formatArgs.call(self, args);\n\n\t\t\tconst logFn = self.log || createDebug.log;\n\t\t\tlogFn.apply(self, args);\n\t\t}\n\n\t\tdebug.namespace = namespace;\n\t\tdebug.useColors = createDebug.useColors();\n\t\tdebug.color = createDebug.selectColor(namespace);\n\t\tdebug.extend = extend;\n\t\tdebug.destroy = createDebug.destroy; // XXX Temporary. Will be removed in the next major release.\n\n\t\tObject.defineProperty(debug, 'enabled', {\n\t\t\tenumerable: true,\n\t\t\tconfigurable: false,\n\t\t\tget: () => {\n\t\t\t\tif (enableOverride !== null) {\n\t\t\t\t\treturn enableOverride;\n\t\t\t\t}\n\t\t\t\tif (namespacesCache !== createDebug.namespaces) {\n\t\t\t\t\tnamespacesCache = createDebug.namespaces;\n\t\t\t\t\tenabledCache = createDebug.enabled(namespace);\n\t\t\t\t}\n\n\t\t\t\treturn enabledCache;\n\t\t\t},\n\t\t\tset: v => {\n\t\t\t\tenableOverride = v;\n\t\t\t}\n\t\t});\n\n\t\t// Env-specific initialization logic for debug instances\n\t\tif (typeof createDebug.init === 'function') {\n\t\t\tcreateDebug.init(debug);\n\t\t}\n\n\t\treturn debug;\n\t}\n\n\tfunction extend(namespace, delimiter) {\n\t\tconst newDebug = createDebug(this.namespace + (typeof delimiter === 'undefined' ? ':' : delimiter) + namespace);\n\t\tnewDebug.log = this.log;\n\t\treturn newDebug;\n\t}\n\n\t/**\n\t* Enables a debug mode by namespaces. This can include modes\n\t* separated by a colon and wildcards.\n\t*\n\t* @param {String} namespaces\n\t* @api public\n\t*/\n\tfunction enable(namespaces) {\n\t\tcreateDebug.save(namespaces);\n\t\tcreateDebug.namespaces = namespaces;\n\n\t\tcreateDebug.names = [];\n\t\tcreateDebug.skips = [];\n\n\t\tconst split = (typeof namespaces === 'string' ? namespaces : '')\n\t\t\t.trim()\n\t\t\t.replace(/\\s+/g, ',')\n\t\t\t.split(',')\n\t\t\t.filter(Boolean);\n\n\t\tfor (const ns of split) {\n\t\t\tif (ns[0] === '-') {\n\t\t\t\tcreateDebug.skips.push(ns.slice(1));\n\t\t\t} else {\n\t\t\t\tcreateDebug.names.push(ns);\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Checks if the given string matches a namespace template, honoring\n\t * asterisks as wildcards.\n\t *\n\t * @param {String} search\n\t * @param {String} template\n\t * @return {Boolean}\n\t */\n\tfunction matchesTemplate(search, template) {\n\t\tlet searchIndex = 0;\n\t\tlet templateIndex = 0;\n\t\tlet starIndex = -1;\n\t\tlet matchIndex = 0;\n\n\t\twhile (searchIndex < search.length) {\n\t\t\tif (templateIndex < template.length && (template[templateIndex] === search[searchIndex] || template[templateIndex] === '*')) {\n\t\t\t\t// Match character or proceed with wildcard\n\t\t\t\tif (template[templateIndex] === '*') {\n\t\t\t\t\tstarIndex = templateIndex;\n\t\t\t\t\tmatchIndex = searchIndex;\n\t\t\t\t\ttemplateIndex++; // Skip the '*'\n\t\t\t\t} else {\n\t\t\t\t\tsearchIndex++;\n\t\t\t\t\ttemplateIndex++;\n\t\t\t\t}\n\t\t\t} else if (starIndex !== -1) { // eslint-disable-line no-negated-condition\n\t\t\t\t// Backtrack to the last '*' and try to match more characters\n\t\t\t\ttemplateIndex = starIndex + 1;\n\t\t\t\tmatchIndex++;\n\t\t\t\tsearchIndex = matchIndex;\n\t\t\t} else {\n\t\t\t\treturn false; // No match\n\t\t\t}\n\t\t}\n\n\t\t// Handle trailing '*' in template\n\t\twhile (templateIndex < template.length && template[templateIndex] === '*') {\n\t\t\ttemplateIndex++;\n\t\t}\n\n\t\treturn templateIndex === template.length;\n\t}\n\n\t/**\n\t* Disable debug output.\n\t*\n\t* @return {String} namespaces\n\t* @api public\n\t*/\n\tfunction disable() {\n\t\tconst namespaces = [\n\t\t\t...createDebug.names,\n\t\t\t...createDebug.skips.map(namespace => '-' + namespace)\n\t\t].join(',');\n\t\tcreateDebug.enable('');\n\t\treturn namespaces;\n\t}\n\n\t/**\n\t* Returns true if the given mode name is enabled, false otherwise.\n\t*\n\t* @param {String} name\n\t* @return {Boolean}\n\t* @api public\n\t*/\n\tfunction enabled(name) {\n\t\tfor (const skip of createDebug.skips) {\n\t\t\tif (matchesTemplate(name, skip)) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\n\t\tfor (const ns of createDebug.names) {\n\t\t\tif (matchesTemplate(name, ns)) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t}\n\n\t/**\n\t* Coerce `val`.\n\t*\n\t* @param {Mixed} val\n\t* @return {Mixed}\n\t* @api private\n\t*/\n\tfunction coerce(val) {\n\t\tif (val instanceof Error) {\n\t\t\treturn val.stack || val.message;\n\t\t}\n\t\treturn val;\n\t}\n\n\t/**\n\t* XXX DO NOT USE. This is a temporary stub function.\n\t* XXX It WILL be removed in the next major release.\n\t*/\n\tfunction destroy() {\n\t\tconsole.warn('Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.');\n\t}\n\n\tcreateDebug.enable(createDebug.load());\n\n\treturn createDebug;\n}\n\nmodule.exports = setup;\n", "/* eslint-env browser */\n\n/**\n * This is the web browser implementation of `debug()`.\n */\n\nexports.formatArgs = formatArgs;\nexports.save = save;\nexports.load = load;\nexports.useColors = useColors;\nexports.storage = localstorage();\nexports.destroy = (() => {\n\tlet warned = false;\n\n\treturn () => {\n\t\tif (!warned) {\n\t\t\twarned = true;\n\t\t\tconsole.warn('Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.');\n\t\t}\n\t};\n})();\n\n/**\n * Colors.\n */\n\nexports.colors = [\n\t'#0000CC',\n\t'#0000FF',\n\t'#0033CC',\n\t'#0033FF',\n\t'#0066CC',\n\t'#0066FF',\n\t'#0099CC',\n\t'#0099FF',\n\t'#00CC00',\n\t'#00CC33',\n\t'#00CC66',\n\t'#00CC99',\n\t'#00CCCC',\n\t'#00CCFF',\n\t'#3300CC',\n\t'#3300FF',\n\t'#3333CC',\n\t'#3333FF',\n\t'#3366CC',\n\t'#3366FF',\n\t'#3399CC',\n\t'#3399FF',\n\t'#33CC00',\n\t'#33CC33',\n\t'#33CC66',\n\t'#33CC99',\n\t'#33CCCC',\n\t'#33CCFF',\n\t'#6600CC',\n\t'#6600FF',\n\t'#6633CC',\n\t'#6633FF',\n\t'#66CC00',\n\t'#66CC33',\n\t'#9900CC',\n\t'#9900FF',\n\t'#9933CC',\n\t'#9933FF',\n\t'#99CC00',\n\t'#99CC33',\n\t'#CC0000',\n\t'#CC0033',\n\t'#CC0066',\n\t'#CC0099',\n\t'#CC00CC',\n\t'#CC00FF',\n\t'#CC3300',\n\t'#CC3333',\n\t'#CC3366',\n\t'#CC3399',\n\t'#CC33CC',\n\t'#CC33FF',\n\t'#CC6600',\n\t'#CC6633',\n\t'#CC9900',\n\t'#CC9933',\n\t'#CCCC00',\n\t'#CCCC33',\n\t'#FF0000',\n\t'#FF0033',\n\t'#FF0066',\n\t'#FF0099',\n\t'#FF00CC',\n\t'#FF00FF',\n\t'#FF3300',\n\t'#FF3333',\n\t'#FF3366',\n\t'#FF3399',\n\t'#FF33CC',\n\t'#FF33FF',\n\t'#FF6600',\n\t'#FF6633',\n\t'#FF9900',\n\t'#FF9933',\n\t'#FFCC00',\n\t'#FFCC33'\n];\n\n/**\n * Currently only WebKit-based Web Inspectors, Firefox >= v31,\n * and the Firebug extension (any Firefox version) are known\n * to support \"%c\" CSS customizations.\n *\n * TODO: add a `localStorage` variable to explicitly enable/disable colors\n */\n\n// eslint-disable-next-line complexity\nfunction useColors() {\n\t// NB: In an Electron preload script, document will be defined but not fully\n\t// initialized. Since we know we're in Chrome, we'll just detect this case\n\t// explicitly\n\tif (typeof window !== 'undefined' && window.process && (window.process.type === 'renderer' || window.process.__nwjs)) {\n\t\treturn true;\n\t}\n\n\t// Internet Explorer and Edge do not support colors.\n\tif (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/(edge|trident)\\/(\\d+)/)) {\n\t\treturn false;\n\t}\n\n\tlet m;\n\n\t// Is webkit? http://stackoverflow.com/a/16459606/376773\n\t// document is undefined in react-native: https://github.com/facebook/react-native/pull/1632\n\t// eslint-disable-next-line no-return-assign\n\treturn (typeof document !== 'undefined' && document.documentElement && document.documentElement.style && document.documentElement.style.WebkitAppearance) ||\n\t\t// Is firebug? http://stackoverflow.com/a/398120/376773\n\t\t(typeof window !== 'undefined' && window.console && (window.console.firebug || (window.console.exception && window.console.table))) ||\n\t\t// Is firefox >= v31?\n\t\t// https://developer.mozilla.org/en-US/docs/Tools/Web_Console#Styling_messages\n\t\t(typeof navigator !== 'undefined' && navigator.userAgent && (m = navigator.userAgent.toLowerCase().match(/firefox\\/(\\d+)/)) && parseInt(m[1], 10) >= 31) ||\n\t\t// Double check webkit in userAgent just in case we are in a worker\n\t\t(typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/applewebkit\\/(\\d+)/));\n}\n\n/**\n * Colorize log arguments if enabled.\n *\n * @api public\n */\n\nfunction formatArgs(args) {\n\targs[0] = (this.useColors ? '%c' : '') +\n\t\tthis.namespace +\n\t\t(this.useColors ? ' %c' : ' ') +\n\t\targs[0] +\n\t\t(this.useColors ? '%c ' : ' ') +\n\t\t'+' + module.exports.humanize(this.diff);\n\n\tif (!this.useColors) {\n\t\treturn;\n\t}\n\n\tconst c = 'color: ' + this.color;\n\targs.splice(1, 0, c, 'color: inherit');\n\n\t// The final \"%c\" is somewhat tricky, because there could be other\n\t// arguments passed either before or after the %c, so we need to\n\t// figure out the correct index to insert the CSS into\n\tlet index = 0;\n\tlet lastC = 0;\n\targs[0].replace(/%[a-zA-Z%]/g, match => {\n\t\tif (match === '%%') {\n\t\t\treturn;\n\t\t}\n\t\tindex++;\n\t\tif (match === '%c') {\n\t\t\t// We only are interested in the *last* %c\n\t\t\t// (the user may have provided their own)\n\t\t\tlastC = index;\n\t\t}\n\t});\n\n\targs.splice(lastC, 0, c);\n}\n\n/**\n * Invokes `console.debug()` when available.\n * No-op when `console.debug` is not a \"function\".\n * If `console.debug` is not available, falls back\n * to `console.log`.\n *\n * @api public\n */\nexports.log = console.debug || console.log || (() => {});\n\n/**\n * Save `namespaces`.\n *\n * @param {String} namespaces\n * @api private\n */\nfunction save(namespaces) {\n\ttry {\n\t\tif (namespaces) {\n\t\t\texports.storage.setItem('debug', namespaces);\n\t\t} else {\n\t\t\texports.storage.removeItem('debug');\n\t\t}\n\t} catch (error) {\n\t\t// Swallow\n\t\t// XXX (@Qix-) should we be logging these?\n\t}\n}\n\n/**\n * Load `namespaces`.\n *\n * @return {String} returns the previously persisted debug modes\n * @api private\n */\nfunction load() {\n\tlet r;\n\ttry {\n\t\tr = exports.storage.getItem('debug') || exports.storage.getItem('DEBUG') ;\n\t} catch (error) {\n\t\t// Swallow\n\t\t// XXX (@Qix-) should we be logging these?\n\t}\n\n\t// If debug isn't set in LS, and we're in Electron, try to load $DEBUG\n\tif (!r && typeof process !== 'undefined' && 'env' in process) {\n\t\tr = process.env.DEBUG;\n\t}\n\n\treturn r;\n}\n\n/**\n * Localstorage attempts to return the localstorage.\n *\n * This is necessary because safari throws\n * when a user disables cookies/localstorage\n * and you attempt to access it.\n *\n * @return {LocalStorage}\n * @api private\n */\n\nfunction localstorage() {\n\ttry {\n\t\t// TVMLKit (Apple TV JS Runtime) does not have a window object, just localStorage in the global context\n\t\t// The Browser also has localStorage in the global context.\n\t\treturn localStorage;\n\t} catch (error) {\n\t\t// Swallow\n\t\t// XXX (@Qix-) should we be logging these?\n\t}\n}\n\nmodule.exports = require('./common')(exports);\n\nconst {formatters} = module.exports;\n\n/**\n * Map %j to `JSON.stringify()`, since no Web Inspectors do that by default.\n */\n\nformatters.j = function (v) {\n\ttry {\n\t\treturn JSON.stringify(v);\n\t} catch (error) {\n\t\treturn '[UnexpectedJSONParseError]: ' + error.message;\n\t}\n};\n", "'use strict';\n\nmodule.exports = (flag, argv = process.argv) => {\n\tconst prefix = flag.startsWith('-') ? '' : (flag.length === 1 ? '-' : '--');\n\tconst position = argv.indexOf(prefix + flag);\n\tconst terminatorPosition = argv.indexOf('--');\n\treturn position !== -1 && (terminatorPosition === -1 || position < terminatorPosition);\n};\n", "'use strict';\nconst os = require('os');\nconst tty = require('tty');\nconst hasFlag = require('has-flag');\n\nconst {env} = process;\n\nlet forceColor;\nif (hasFlag('no-color') ||\n\thasFlag('no-colors') ||\n\thasFlag('color=false') ||\n\thasFlag('color=never')) {\n\tforceColor = 0;\n} else if (hasFlag('color') ||\n\thasFlag('colors') ||\n\thasFlag('color=true') ||\n\thasFlag('color=always')) {\n\tforceColor = 1;\n}\n\nif ('FORCE_COLOR' in env) {\n\tif (env.FORCE_COLOR === 'true') {\n\t\tforceColor = 1;\n\t} else if (env.FORCE_COLOR === 'false') {\n\t\tforceColor = 0;\n\t} else {\n\t\tforceColor = env.FORCE_COLOR.length === 0 ? 1 : Math.min(parseInt(env.FORCE_COLOR, 10), 3);\n\t}\n}\n\nfunction translateLevel(level) {\n\tif (level === 0) {\n\t\treturn false;\n\t}\n\n\treturn {\n\t\tlevel,\n\t\thasBasic: true,\n\t\thas256: level >= 2,\n\t\thas16m: level >= 3\n\t};\n}\n\nfunction supportsColor(haveStream, streamIsTTY) {\n\tif (forceColor === 0) {\n\t\treturn 0;\n\t}\n\n\tif (hasFlag('color=16m') ||\n\t\thasFlag('color=full') ||\n\t\thasFlag('color=truecolor')) {\n\t\treturn 3;\n\t}\n\n\tif (hasFlag('color=256')) {\n\t\treturn 2;\n\t}\n\n\tif (haveStream && !streamIsTTY && forceColor === undefined) {\n\t\treturn 0;\n\t}\n\n\tconst min = forceColor || 0;\n\n\tif (env.TERM === 'dumb') {\n\t\treturn min;\n\t}\n\n\tif (process.platform === 'win32') {\n\t\t// Windows 10 build 10586 is the first Windows release that supports 256 colors.\n\t\t// Windows 10 build 14931 is the first release that supports 16m/TrueColor.\n\t\tconst osRelease = os.release().split('.');\n\t\tif (\n\t\t\tNumber(osRelease[0]) >= 10 &&\n\t\t\tNumber(osRelease[2]) >= 10586\n\t\t) {\n\t\t\treturn Number(osRelease[2]) >= 14931 ? 3 : 2;\n\t\t}\n\n\t\treturn 1;\n\t}\n\n\tif ('CI' in env) {\n\t\tif (['TRAVIS', 'CIRCLECI', 'APPVEYOR', 'GITLAB_CI', 'GITHUB_ACTIONS', 'BUILDKITE'].some(sign => sign in env) || env.CI_NAME === 'codeship') {\n\t\t\treturn 1;\n\t\t}\n\n\t\treturn min;\n\t}\n\n\tif ('TEAMCITY_VERSION' in env) {\n\t\treturn /^(9\\.(0*[1-9]\\d*)\\.|\\d{2,}\\.)/.test(env.TEAMCITY_VERSION) ? 1 : 0;\n\t}\n\n\tif (env.COLORTERM === 'truecolor') {\n\t\treturn 3;\n\t}\n\n\tif ('TERM_PROGRAM' in env) {\n\t\tconst version = parseInt((env.TERM_PROGRAM_VERSION || '').split('.')[0], 10);\n\n\t\tswitch (env.TERM_PROGRAM) {\n\t\t\tcase 'iTerm.app':\n\t\t\t\treturn version >= 3 ? 3 : 2;\n\t\t\tcase 'Apple_Terminal':\n\t\t\t\treturn 2;\n\t\t\t// No default\n\t\t}\n\t}\n\n\tif (/-256(color)?$/i.test(env.TERM)) {\n\t\treturn 2;\n\t}\n\n\tif (/^screen|^xterm|^vt100|^vt220|^rxvt|color|ansi|cygwin|linux/i.test(env.TERM)) {\n\t\treturn 1;\n\t}\n\n\tif ('COLORTERM' in env) {\n\t\treturn 1;\n\t}\n\n\treturn min;\n}\n\nfunction getSupportLevel(stream) {\n\tconst level = supportsColor(stream, stream && stream.isTTY);\n\treturn translateLevel(level);\n}\n\nmodule.exports = {\n\tsupportsColor: getSupportLevel,\n\tstdout: translateLevel(supportsColor(true, tty.isatty(1))),\n\tstderr: translateLevel(supportsColor(true, tty.isatty(2)))\n};\n", "/**\n * Module dependencies.\n */\n\nconst tty = require('tty');\nconst util = require('util');\n\n/**\n * This is the Node.js implementation of `debug()`.\n */\n\nexports.init = init;\nexports.log = log;\nexports.formatArgs = formatArgs;\nexports.save = save;\nexports.load = load;\nexports.useColors = useColors;\nexports.destroy = util.deprecate(\n\t() => {},\n\t'Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.'\n);\n\n/**\n * Colors.\n */\n\nexports.colors = [6, 2, 3, 4, 5, 1];\n\ntry {\n\t// Optional dependency (as in, doesn't need to be installed, NOT like optionalDependencies in package.json)\n\t// eslint-disable-next-line import/no-extraneous-dependencies\n\tconst supportsColor = require('supports-color');\n\n\tif (supportsColor && (supportsColor.stderr || supportsColor).level >= 2) {\n\t\texports.colors = [\n\t\t\t20,\n\t\t\t21,\n\t\t\t26,\n\t\t\t27,\n\t\t\t32,\n\t\t\t33,\n\t\t\t38,\n\t\t\t39,\n\t\t\t40,\n\t\t\t41,\n\t\t\t42,\n\t\t\t43,\n\t\t\t44,\n\t\t\t45,\n\t\t\t56,\n\t\t\t57,\n\t\t\t62,\n\t\t\t63,\n\t\t\t68,\n\t\t\t69,\n\t\t\t74,\n\t\t\t75,\n\t\t\t76,\n\t\t\t77,\n\t\t\t78,\n\t\t\t79,\n\t\t\t80,\n\t\t\t81,\n\t\t\t92,\n\t\t\t93,\n\t\t\t98,\n\t\t\t99,\n\t\t\t112,\n\t\t\t113,\n\t\t\t128,\n\t\t\t129,\n\t\t\t134,\n\t\t\t135,\n\t\t\t148,\n\t\t\t149,\n\t\t\t160,\n\t\t\t161,\n\t\t\t162,\n\t\t\t163,\n\t\t\t164,\n\t\t\t165,\n\t\t\t166,\n\t\t\t167,\n\t\t\t168,\n\t\t\t169,\n\t\t\t170,\n\t\t\t171,\n\t\t\t172,\n\t\t\t173,\n\t\t\t178,\n\t\t\t179,\n\t\t\t184,\n\t\t\t185,\n\t\t\t196,\n\t\t\t197,\n\t\t\t198,\n\t\t\t199,\n\t\t\t200,\n\t\t\t201,\n\t\t\t202,\n\t\t\t203,\n\t\t\t204,\n\t\t\t205,\n\t\t\t206,\n\t\t\t207,\n\t\t\t208,\n\t\t\t209,\n\t\t\t214,\n\t\t\t215,\n\t\t\t220,\n\t\t\t221\n\t\t];\n\t}\n} catch (error) {\n\t// Swallow - we only care if `supports-color` is available; it doesn't have to be.\n}\n\n/**\n * Build up the default `inspectOpts` object from the environment variables.\n *\n * $ DEBUG_COLORS=no DEBUG_DEPTH=10 DEBUG_SHOW_HIDDEN=enabled node script.js\n */\n\nexports.inspectOpts = Object.keys(process.env).filter(key => {\n\treturn /^debug_/i.test(key);\n}).reduce((obj, key) => {\n\t// Camel-case\n\tconst prop = key\n\t\t.substring(6)\n\t\t.toLowerCase()\n\t\t.replace(/_([a-z])/g, (_, k) => {\n\t\t\treturn k.toUpperCase();\n\t\t});\n\n\t// Coerce string value into JS value\n\tlet val = process.env[key];\n\tif (/^(yes|on|true|enabled)$/i.test(val)) {\n\t\tval = true;\n\t} else if (/^(no|off|false|disabled)$/i.test(val)) {\n\t\tval = false;\n\t} else if (val === 'null') {\n\t\tval = null;\n\t} else {\n\t\tval = Number(val);\n\t}\n\n\tobj[prop] = val;\n\treturn obj;\n}, {});\n\n/**\n * Is stdout a TTY? Colored output is enabled when `true`.\n */\n\nfunction useColors() {\n\treturn 'colors' in exports.inspectOpts ?\n\t\tBoolean(exports.inspectOpts.colors) :\n\t\ttty.isatty(process.stderr.fd);\n}\n\n/**\n * Adds ANSI color escape codes if enabled.\n *\n * @api public\n */\n\nfunction formatArgs(args) {\n\tconst {namespace: name, useColors} = this;\n\n\tif (useColors) {\n\t\tconst c = this.color;\n\t\tconst colorCode = '\\u001B[3' + (c < 8 ? c : '8;5;' + c);\n\t\tconst prefix = ` ${colorCode};1m${name} \\u001B[0m`;\n\n\t\targs[0] = prefix + args[0].split('\\n').join('\\n' + prefix);\n\t\targs.push(colorCode + 'm+' + module.exports.humanize(this.diff) + '\\u001B[0m');\n\t} else {\n\t\targs[0] = getDate() + name + ' ' + args[0];\n\t}\n}\n\nfunction getDate() {\n\tif (exports.inspectOpts.hideDate) {\n\t\treturn '';\n\t}\n\treturn new Date().toISOString() + ' ';\n}\n\n/**\n * Invokes `util.formatWithOptions()` with the specified arguments and writes to stderr.\n */\n\nfunction log(...args) {\n\treturn process.stderr.write(util.formatWithOptions(exports.inspectOpts, ...args) + '\\n');\n}\n\n/**\n * Save `namespaces`.\n *\n * @param {String} namespaces\n * @api private\n */\nfunction save(namespaces) {\n\tif (namespaces) {\n\t\tprocess.env.DEBUG = namespaces;\n\t} else {\n\t\t// If you set a process.env field to null or undefined, it gets cast to the\n\t\t// string 'null' or 'undefined'. Just delete instead.\n\t\tdelete process.env.DEBUG;\n\t}\n}\n\n/**\n * Load `namespaces`.\n *\n * @return {String} returns the previously persisted debug modes\n * @api private\n */\n\nfunction load() {\n\treturn process.env.DEBUG;\n}\n\n/**\n * Init logic for `debug` instances.\n *\n * Create a new `inspectOpts` object in case `useColors` is set\n * differently for a particular `debug` instance.\n */\n\nfunction init(debug) {\n\tdebug.inspectOpts = {};\n\n\tconst keys = Object.keys(exports.inspectOpts);\n\tfor (let i = 0; i < keys.length; i++) {\n\t\tdebug.inspectOpts[keys[i]] = exports.inspectOpts[keys[i]];\n\t}\n}\n\nmodule.exports = require('./common')(exports);\n\nconst {formatters} = module.exports;\n\n/**\n * Map %o to `util.inspect()`, all on a single line.\n */\n\nformatters.o = function (v) {\n\tthis.inspectOpts.colors = this.useColors;\n\treturn util.inspect(v, this.inspectOpts)\n\t\t.split('\\n')\n\t\t.map(str => str.trim())\n\t\t.join(' ');\n};\n\n/**\n * Map %O to `util.inspect()`, allowing multiple lines if needed.\n */\n\nformatters.O = function (v) {\n\tthis.inspectOpts.colors = this.useColors;\n\treturn util.inspect(v, this.inspectOpts);\n};\n", "/**\n * Detect Electron renderer / nwjs process, which is node, but we should\n * treat as a browser.\n */\n\nif (typeof process === 'undefined' || process.type === 'renderer' || process.browser === true || process.__nwjs) {\n\tmodule.exports = require('./browser.js');\n} else {\n\tmodule.exports = require('./node.js');\n}\n", null, null, null, null, null, "// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\n/**\n * @internal\n *\n * Holds the singleton instrumenter, to be shared across CJS and ESM imports.\n */\nexport const state = {\n instrumenterImplementation: undefined,\n};\n", "// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\n/**\n * Holds the singleton operationRequestMap, to be shared across CJS and ESM imports.\n */\nexport const state = {\n operationRequestMap: new WeakMap(),\n};\n", "// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\n/**\n * Encodes a string in base64 format.\n * @param value - the string to encode\n * @internal\n */\nexport function encodeString(value: string): string {\n return Buffer.from(value).toString(\"base64\");\n}\n\n/**\n * Encodes a byte array in base64 format.\n * @param value - the Uint8Aray to encode\n * @internal\n */\nexport function encodeByteArray(value: Uint8Array): string {\n const bufferValue = value instanceof Buffer ? value : Buffer.from(value.buffer as ArrayBuffer);\n return bufferValue.toString(\"base64\");\n}\n\n/**\n * Decodes a base64 string into a byte array.\n * @param value - the base64 string to decode\n * @internal\n */\nexport function decodeString(value: string): Uint8Array {\n return Buffer.from(value, \"base64\");\n}\n\n/**\n * Decodes a base64 string into a string.\n * @param value - the base64 string to decode\n * @internal\n */\nexport function decodeStringToString(value: string): string {\n return Buffer.from(value, \"base64\").toString();\n}\n", "// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport {\n HttpClient,\n HttpMethods,\n PipelineOptions,\n PipelinePolicy,\n PipelineRequest,\n PipelineResponse,\n TransferProgressEvent,\n} from \"@azure/core-rest-pipeline\";\nimport { AbortSignalLike } from \"@azure/abort-controller\";\nimport { OperationTracingOptions } from \"@azure/core-tracing\";\n\n/**\n * Default key used to access the XML attributes.\n */\nexport const XML_ATTRKEY = \"$\";\n/**\n * Default key used to access the XML value content.\n */\nexport const XML_CHARKEY = \"_\";\n/**\n * Options to govern behavior of xml parser and builder.\n */\nexport interface XmlOptions {\n /**\n * indicates the name of the root element in the resulting XML when building XML.\n */\n rootName?: string;\n /**\n * indicates whether the root element is to be included or not in the output when parsing XML.\n */\n includeRoot?: boolean;\n /**\n * key used to access the XML value content when parsing XML.\n */\n xmlCharKey?: string;\n}\n/**\n * Options to configure serialization/de-serialization behavior.\n */\nexport interface SerializerOptions {\n /**\n * Options to configure xml parser/builder behavior.\n */\n xml: XmlOptions;\n /**\n * Normally additional properties are included in the result object, even if there is no mapper for them.\n * This flag disables this behavior when true. It is used when parsing headers to avoid polluting the result object.\n */\n ignoreUnknownProperties?: boolean;\n}\n\nexport type RequiredSerializerOptions = {\n [K in keyof SerializerOptions]: Required;\n};\n\n/**\n * A type alias for future proofing.\n */\nexport type OperationRequest = PipelineRequest;\n\n/**\n * Metadata that is used to properly parse a response.\n */\nexport interface OperationRequestInfo {\n /**\n * Used to parse the response.\n */\n operationSpec?: OperationSpec;\n\n /**\n * Used to encode the request.\n */\n operationArguments?: OperationArguments;\n\n /**\n * A function that returns the proper OperationResponseMap for the given OperationSpec and\n * PipelineResponse combination. If this is undefined, then a simple status code lookup will\n * be used.\n */\n operationResponseGetter?: (\n operationSpec: OperationSpec,\n response: PipelineResponse,\n ) => undefined | OperationResponseMap;\n\n /**\n * Whether or not the PipelineResponse should be deserialized. Defaults to true.\n */\n shouldDeserialize?: boolean | ((response: PipelineResponse) => boolean);\n}\n\n/**\n * The base options type for all operations.\n */\nexport interface OperationOptions {\n /**\n * The signal which can be used to abort requests.\n */\n abortSignal?: AbortSignalLike;\n /**\n * Options used when creating and sending HTTP requests for this operation.\n */\n requestOptions?: OperationRequestOptions;\n /**\n * Options used when tracing is enabled.\n */\n tracingOptions?: OperationTracingOptions;\n /**\n * Options to override serialization/de-serialization behavior.\n */\n serializerOptions?: SerializerOptions;\n\n /**\n * A function to be called each time a response is received from the server\n * while performing the requested operation.\n * May be called multiple times.\n */\n onResponse?: RawResponseCallback;\n}\n\n/**\n * Options used when creating and sending HTTP requests for this operation.\n */\nexport interface OperationRequestOptions {\n /**\n * User defined custom request headers that\n * will be applied before the request is sent.\n */\n customHeaders?: { [key: string]: string };\n\n /**\n * The number of milliseconds a request can take before automatically being terminated.\n */\n timeout?: number;\n\n /**\n * Callback which fires upon upload progress.\n */\n onUploadProgress?: (progress: TransferProgressEvent) => void;\n\n /**\n * Callback which fires upon download progress.\n */\n onDownloadProgress?: (progress: TransferProgressEvent) => void;\n\n /**\n * Whether or not the HttpOperationResponse should be deserialized. If this is undefined, then the\n * HttpOperationResponse should be deserialized.\n */\n shouldDeserialize?: boolean | ((response: PipelineResponse) => boolean);\n\n /**\n * Set to true if the request is sent over HTTP instead of HTTPS\n */\n allowInsecureConnection?: boolean;\n}\n\n/**\n * A collection of properties that apply to a single invocation of an operation.\n */\nexport interface OperationArguments {\n /**\n * The parameters that were passed to the operation method.\n */\n [parameterName: string]: unknown;\n\n /**\n * The optional arguments that are provided to an operation.\n */\n options?: OperationOptions;\n}\n\n/**\n * The format that will be used to join an array of values together for a query parameter value.\n */\nexport type QueryCollectionFormat = \"CSV\" | \"SSV\" | \"TSV\" | \"Pipes\" | \"Multi\";\n\n/**\n * Encodes how to reach a particular property on an object.\n */\nexport type ParameterPath = string | string[] | { [propertyName: string]: ParameterPath };\n\n/**\n * A common interface that all Operation parameter's extend.\n */\nexport interface OperationParameter {\n /**\n * The path to this parameter's value in OperationArguments or the object that contains paths for\n * each property's value in OperationArguments.\n */\n parameterPath: ParameterPath;\n\n /**\n * The mapper that defines how to validate and serialize this parameter's value.\n */\n mapper: Mapper;\n}\n\n/**\n * A parameter for an operation that will be substituted into the operation's request URL.\n */\nexport interface OperationURLParameter extends OperationParameter {\n /**\n * Whether or not to skip encoding the URL parameter's value before adding it to the URL.\n */\n skipEncoding?: boolean;\n}\n\n/**\n * A parameter for an operation that will be added as a query parameter to the operation's HTTP\n * request.\n */\nexport interface OperationQueryParameter extends OperationParameter {\n /**\n * Whether or not to skip encoding the query parameter's value before adding it to the URL.\n */\n skipEncoding?: boolean;\n\n /**\n * If this query parameter's value is a collection, what type of format should the value be\n * converted to.\n */\n collectionFormat?: QueryCollectionFormat;\n}\n\n/**\n * An OperationResponse that can be returned from an operation request for a single status code.\n */\nexport interface OperationResponseMap {\n /**\n * The mapper that will be used to deserialize the response headers.\n */\n headersMapper?: Mapper;\n\n /**\n * The mapper that will be used to deserialize the response body.\n */\n bodyMapper?: Mapper;\n\n /**\n * Indicates if this is an error response\n */\n isError?: boolean;\n}\n\n/**\n * A specification that defines an operation.\n */\nexport interface OperationSpec {\n /**\n * The serializer to use in this operation.\n */\n readonly serializer: Serializer;\n\n /**\n * The HTTP method that should be used by requests for this operation.\n */\n readonly httpMethod: HttpMethods;\n\n /**\n * The URL that was provided in the service's specification. This will still have all of the URL\n * template variables in it. If this is not provided when the OperationSpec is created, then it\n * will be populated by a \"baseUri\" property on the ServiceClient.\n */\n readonly baseUrl?: string;\n\n /**\n * The fixed path for this operation's URL. This will still have all of the URL template variables\n * in it.\n */\n readonly path?: string;\n\n /**\n * The content type of the request body. This value will be used as the \"Content-Type\" header if\n * it is provided.\n */\n readonly contentType?: string;\n\n /**\n * The media type of the request body.\n * This value can be used to aide in serialization if it is provided.\n */\n readonly mediaType?:\n | \"json\"\n | \"xml\"\n | \"form\"\n | \"binary\"\n | \"multipart\"\n | \"text\"\n | \"unknown\"\n | string;\n /**\n * The parameter that will be used to construct the HTTP request's body.\n */\n readonly requestBody?: OperationParameter;\n\n /**\n * Whether or not this operation uses XML request and response bodies.\n */\n readonly isXML?: boolean;\n\n /**\n * The parameters to the operation method that will be substituted into the constructed URL.\n */\n readonly urlParameters?: ReadonlyArray;\n\n /**\n * The parameters to the operation method that will be added to the constructed URL's query.\n */\n readonly queryParameters?: ReadonlyArray;\n\n /**\n * The parameters to the operation method that will be converted to headers on the operation's\n * HTTP request.\n */\n readonly headerParameters?: ReadonlyArray;\n\n /**\n * The parameters to the operation method that will be used to create a formdata body for the\n * operation's HTTP request.\n */\n readonly formDataParameters?: ReadonlyArray;\n\n /**\n * The different types of responses that this operation can return based on what status code is\n * returned.\n */\n readonly responses: { [responseCode: string]: OperationResponseMap };\n}\n\n/**\n * Wrapper object for http request and response. Deserialized object is stored in\n * the `parsedBody` property when the response body is received in JSON or XML.\n */\nexport interface FullOperationResponse extends PipelineResponse {\n /**\n * The parsed HTTP response headers.\n */\n parsedHeaders?: { [key: string]: unknown };\n\n /**\n * The response body as parsed JSON or XML.\n */\n parsedBody?: any;\n\n /**\n * The request that generated the response.\n */\n request: OperationRequest;\n}\n\n/**\n * A function to be called each time a response is received from the server\n * while performing the requested operation.\n * May be called multiple times.\n */\nexport type RawResponseCallback = (\n rawResponse: FullOperationResponse,\n flatResponse: unknown,\n error?: unknown,\n) => void;\n\n/**\n * Used to map raw response objects to final shapes.\n * Helps packing and unpacking Dates and other encoded types that are not intrinsic to JSON.\n * Also allows pulling values from headers, as well as inserting default values and constants.\n */\nexport interface Serializer {\n /**\n * The provided model mapper.\n */\n readonly modelMappers: { [key: string]: any };\n /**\n * Whether the contents are XML or not.\n */\n readonly isXML: boolean;\n\n /**\n * Validates constraints, if any. This function will throw if the provided value does not respect those constraints.\n * @param mapper - The definition of data models.\n * @param value - The value.\n * @param objectName - Name of the object. Used in the error messages.\n * @deprecated Removing the constraints validation on client side.\n */\n validateConstraints(mapper: Mapper, value: any, objectName: string): void;\n\n /**\n * Serialize the given object based on its metadata defined in the mapper.\n *\n * @param mapper - The mapper which defines the metadata of the serializable object.\n * @param object - A valid Javascript object to be serialized.\n * @param objectName - Name of the serialized object.\n * @param options - additional options to deserialization.\n * @returns A valid serialized Javascript object.\n */\n serialize(mapper: Mapper, object: any, objectName?: string, options?: SerializerOptions): any;\n\n /**\n * Deserialize the given object based on its metadata defined in the mapper.\n *\n * @param mapper - The mapper which defines the metadata of the serializable object.\n * @param responseBody - A valid Javascript entity to be deserialized.\n * @param objectName - Name of the deserialized object.\n * @param options - Controls behavior of XML parser and builder.\n * @returns A valid deserialized Javascript object.\n */\n deserialize(\n mapper: Mapper,\n responseBody: any,\n objectName: string,\n options?: SerializerOptions,\n ): any;\n}\n\n/**\n * Description of various value constraints such as integer ranges and string regex.\n */\nexport interface MapperConstraints {\n /**\n * The value should be less than or equal to the `InclusiveMaximum` value.\n */\n InclusiveMaximum?: number;\n /**\n * The value should be less than the `ExclusiveMaximum` value.\n */\n ExclusiveMaximum?: number;\n /**\n * The value should be greater than or equal to the `InclusiveMinimum` value.\n */\n InclusiveMinimum?: number;\n /**\n * The value should be greater than the `InclusiveMinimum` value.\n */\n ExclusiveMinimum?: number;\n /**\n * The length should be smaller than the `MaxLength`.\n */\n MaxLength?: number;\n /**\n * The length should be bigger than the `MinLength`.\n */\n MinLength?: number;\n /**\n * The value must match the pattern.\n */\n Pattern?: RegExp;\n /**\n * The value must contain fewer items than the MaxItems value.\n */\n MaxItems?: number;\n /**\n * The value must contain more items than the `MinItems` value.\n */\n MinItems?: number;\n /**\n * The value must contain only unique items.\n */\n UniqueItems?: true;\n /**\n * The value should be exactly divisible by the `MultipleOf` value.\n */\n MultipleOf?: number;\n}\n\n/**\n * Type of the mapper. Includes known mappers.\n */\nexport type MapperType =\n | SimpleMapperType\n | CompositeMapperType\n | SequenceMapperType\n | DictionaryMapperType\n | EnumMapperType;\n\n/**\n * The type of a simple mapper.\n */\nexport interface SimpleMapperType {\n /**\n * Name of the type of the property.\n */\n name:\n | \"Base64Url\"\n | \"Boolean\"\n | \"ByteArray\"\n | \"Date\"\n | \"DateTime\"\n | \"DateTimeRfc1123\"\n | \"Object\"\n | \"Stream\"\n | \"String\"\n | \"TimeSpan\"\n | \"UnixTime\"\n | \"Uuid\"\n | \"Number\"\n | \"any\";\n}\n\n/**\n * Helps build a mapper that describes how to map a set of properties of an object based on other mappers.\n *\n * Only one of the following properties should be present: `className`, `modelProperties` and `additionalProperties`.\n */\nexport interface CompositeMapperType {\n /**\n * Name of the composite mapper type.\n */\n name: \"Composite\";\n\n /**\n * Use `className` to reference another type definition.\n */\n className?: string;\n\n /**\n * Use `modelProperties` when the reference to the other type has been resolved.\n */\n modelProperties?: { [propertyName: string]: Mapper };\n\n /**\n * Used when a model has `additionalProperties: true`. Allows the generic processing of unnamed model properties on the response object.\n */\n additionalProperties?: Mapper;\n\n /**\n * The name of the top-most parent scheme, the one that has no parents.\n */\n uberParent?: string;\n\n /**\n * A polymorphic discriminator.\n */\n polymorphicDiscriminator?: PolymorphicDiscriminator;\n}\n\n/**\n * Helps build a mapper that describes how to parse a sequence of mapped values.\n */\nexport interface SequenceMapperType {\n /**\n * Name of the sequence type mapper.\n */\n name: \"Sequence\";\n /**\n * The mapper to use to map each one of the properties of the sequence.\n */\n element: Mapper;\n}\n\n/**\n * Helps build a mapper that describes how to parse a dictionary of mapped values.\n */\nexport interface DictionaryMapperType {\n /**\n * Name of the sequence type mapper.\n */\n name: \"Dictionary\";\n /**\n * The mapper to use to map the value of each property in the dictionary.\n */\n value: Mapper;\n}\n\n/**\n * Helps build a mapper that describes how to parse an enum value.\n */\nexport interface EnumMapperType {\n /**\n * Name of the enum type mapper.\n */\n name: \"Enum\";\n /**\n * Values allowed by this mapper.\n */\n allowedValues: any[];\n}\n\n/**\n * The base definition of a mapper. Can be used for XML and plain JavaScript objects.\n */\nexport interface BaseMapper {\n /**\n * Name for the xml element\n */\n xmlName?: string;\n /**\n * Xml element namespace\n */\n xmlNamespace?: string;\n /**\n * Xml element namespace prefix\n */\n xmlNamespacePrefix?: string;\n /**\n * Determines if the current property should be serialized as an attribute of the parent xml element\n */\n xmlIsAttribute?: boolean;\n /**\n * Determines if the current property should be serialized as the inner content of the xml element\n */\n xmlIsMsText?: boolean;\n /**\n * Name for the xml elements when serializing an array\n */\n xmlElementName?: string;\n /**\n * Whether or not the current property should have a wrapping XML element\n */\n xmlIsWrapped?: boolean;\n /**\n * Whether or not the current property is readonly\n */\n readOnly?: boolean;\n /**\n * Whether or not the current property is a constant\n */\n isConstant?: boolean;\n /**\n * Whether or not the current property is required\n */\n required?: boolean;\n /**\n * Whether or not the current property allows mull as a value\n */\n nullable?: boolean;\n /**\n * The name to use when serializing\n */\n serializedName?: string;\n /**\n * Type of the mapper\n */\n type: MapperType;\n /**\n * Default value when one is not explicitly provided\n */\n defaultValue?: any;\n /**\n * Constraints to test the current value against\n */\n constraints?: MapperConstraints;\n}\n\n/**\n * Mappers are definitions of the data models used in the library.\n * These data models are part of the Operation or Client definitions in the responses or parameters.\n */\nexport type Mapper = BaseMapper | CompositeMapper | SequenceMapper | DictionaryMapper | EnumMapper;\n\n/**\n * Used to disambiguate discriminated type unions.\n * For example, if response can have many shapes but also includes a 'kind' field (or similar),\n * that field can be used to determine how to deserialize the response to the correct type.\n */\nexport interface PolymorphicDiscriminator {\n /**\n * Name of the discriminant property in the original JSON payload, e.g. `@odata.kind`.\n */\n serializedName: string;\n /**\n * Name to use on the resulting object instead of the original property name.\n * Useful since the JSON property could be difficult to work with.\n * For example: For a field received as `@odata.kind`, the final object could instead include a property simply named `kind`.\n */\n clientName: string;\n /**\n * It may contain any other property.\n */\n [key: string]: string;\n}\n\n/**\n * A mapper composed of other mappers.\n */\nexport interface CompositeMapper extends BaseMapper {\n /**\n * The type descriptor of the `CompositeMapper`.\n */\n type: CompositeMapperType;\n}\n\n/**\n * A mapper describing arrays.\n */\nexport interface SequenceMapper extends BaseMapper {\n /**\n * The type descriptor of the `SequenceMapper`.\n */\n type: SequenceMapperType;\n}\n\n/**\n * A mapper describing plain JavaScript objects used as key/value pairs.\n */\nexport interface DictionaryMapper extends BaseMapper {\n /**\n * The type descriptor of the `DictionaryMapper`.\n */\n type: DictionaryMapperType;\n /**\n * Optionally, a prefix to add to the header collection.\n */\n headerCollectionPrefix?: string;\n}\n\n/**\n * A mapper describing an enum value.\n */\nexport interface EnumMapper extends BaseMapper {\n /**\n * The type descriptor of the `EnumMapper`.\n */\n type: EnumMapperType;\n}\n\nexport interface UrlParameterValue {\n value: string;\n skipUrlEncoding: boolean;\n}\n\n/**\n * Configuration for creating a new Tracing Span\n */\nexport interface SpanConfig {\n /**\n * Package name prefix\n */\n packagePrefix: string;\n /**\n * Service namespace\n */\n namespace: string;\n}\n\n/**\n * Used to configure additional policies added to the pipeline at construction.\n */\nexport interface AdditionalPolicyConfig {\n /**\n * A policy to be added.\n */\n policy: PipelinePolicy;\n /**\n * Determines if this policy be applied before or after retry logic.\n * Only use `perRetry` if you need to modify the request again\n * each time the operation is retried due to retryable service\n * issues.\n */\n position: \"perCall\" | \"perRetry\";\n}\n\n/**\n * The common set of options that high level clients are expected to expose.\n */\nexport interface CommonClientOptions extends PipelineOptions {\n /**\n * The HttpClient that will be used to send HTTP requests.\n */\n httpClient?: HttpClient;\n /**\n * Set to true if the request is sent over HTTP instead of HTTPS\n */\n allowInsecureConnection?: boolean;\n /**\n * Additional policies to include in the HTTP pipeline.\n */\n additionalPolicies?: AdditionalPolicyConfig[];\n}\n", "// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport { CompositeMapper, FullOperationResponse, OperationResponseMap } from \"./interfaces.js\";\n\n/**\n * The union of all possible types for a primitive response body.\n * @internal\n */\nexport type BodyPrimitive = number | string | boolean | Date | Uint8Array | undefined | null;\n\n/**\n * A type guard for a primitive response body.\n * @param value - Value to test\n *\n * @internal\n */\nexport function isPrimitiveBody(value: unknown, mapperTypeName?: string): value is BodyPrimitive {\n return (\n mapperTypeName !== \"Composite\" &&\n mapperTypeName !== \"Dictionary\" &&\n (typeof value === \"string\" ||\n typeof value === \"number\" ||\n typeof value === \"boolean\" ||\n mapperTypeName?.match(/^(Date|DateTime|DateTimeRfc1123|UnixTime|ByteArray|Base64Url)$/i) !==\n null ||\n value === undefined ||\n value === null)\n );\n}\n\nconst validateISODuration =\n /^(-|\\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/;\n\n/**\n * Returns true if the given string is in ISO 8601 format.\n * @param value - The value to be validated for ISO 8601 duration format.\n * @internal\n */\nexport function isDuration(value: string): boolean {\n return validateISODuration.test(value);\n}\n\nconst validUuidRegex =\n /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/i;\n\n/**\n * Returns true if the provided uuid is valid.\n *\n * @param uuid - The uuid that needs to be validated.\n *\n * @internal\n */\nexport function isValidUuid(uuid: string): boolean {\n return validUuidRegex.test(uuid);\n}\n\n/**\n * Representation of parsed response headers and body coupled with information\n * about how to map them:\n * - whether the response body should be wrapped (typically if its type is primitive).\n * - whether the response is nullable so it can be null if the combination of\n * the headers and the body is empty.\n */\ninterface ResponseObjectWithMetadata {\n /** whether the mapper allows nullable body */\n hasNullableType: boolean;\n /** whether the response's body should be wrapped */\n shouldWrapBody: boolean;\n /** parsed headers of the response */\n headers:\n | {\n [key: string]: unknown;\n }\n | undefined;\n /** parsed body of the response */\n body: any;\n}\n\n/**\n * Maps the response as follows:\n * - wraps the response body if needed (typically if its type is primitive).\n * - returns null if the combination of the headers and the body is empty.\n * - otherwise, returns the combination of the headers and the body.\n *\n * @param responseObject - a representation of the parsed response\n * @returns the response that will be returned to the user which can be null and/or wrapped\n *\n * @internal\n */\nfunction handleNullableResponseAndWrappableBody(\n responseObject: ResponseObjectWithMetadata,\n): unknown | null {\n const combinedHeadersAndBody = {\n ...responseObject.headers,\n ...responseObject.body,\n };\n if (\n responseObject.hasNullableType &&\n Object.getOwnPropertyNames(combinedHeadersAndBody).length === 0\n ) {\n return responseObject.shouldWrapBody ? { body: null } : null;\n } else {\n return responseObject.shouldWrapBody\n ? {\n ...responseObject.headers,\n body: responseObject.body,\n }\n : combinedHeadersAndBody;\n }\n}\n\n/**\n * Take a `FullOperationResponse` and turn it into a flat\n * response object to hand back to the consumer.\n * @param fullResponse - The processed response from the operation request\n * @param responseSpec - The response map from the OperationSpec\n *\n * @internal\n */\nexport function flattenResponse(\n fullResponse: FullOperationResponse,\n responseSpec: OperationResponseMap | undefined,\n): unknown {\n const parsedHeaders = fullResponse.parsedHeaders;\n\n // head methods never have a body, but we return a boolean set to body property\n // to indicate presence/absence of the resource\n if (fullResponse.request.method === \"HEAD\") {\n return {\n ...parsedHeaders,\n body: fullResponse.parsedBody,\n };\n }\n const bodyMapper = responseSpec && responseSpec.bodyMapper;\n const isNullable = Boolean(bodyMapper?.nullable);\n const expectedBodyTypeName = bodyMapper?.type.name;\n\n /** If the body is asked for, we look at the expected body type to handle it */\n if (expectedBodyTypeName === \"Stream\") {\n return {\n ...parsedHeaders,\n blobBody: fullResponse.blobBody,\n readableStreamBody: fullResponse.readableStreamBody,\n };\n }\n\n const modelProperties =\n (expectedBodyTypeName === \"Composite\" &&\n (bodyMapper as CompositeMapper).type.modelProperties) ||\n {};\n const isPageableResponse = Object.keys(modelProperties).some(\n (k) => modelProperties[k].serializedName === \"\",\n );\n if (expectedBodyTypeName === \"Sequence\" || isPageableResponse) {\n const arrayResponse: { [key: string]: unknown } =\n fullResponse.parsedBody ?? ([] as unknown as { [key: string]: unknown });\n\n for (const key of Object.keys(modelProperties)) {\n if (modelProperties[key].serializedName) {\n arrayResponse[key] = fullResponse.parsedBody?.[key];\n }\n }\n\n if (parsedHeaders) {\n for (const key of Object.keys(parsedHeaders)) {\n arrayResponse[key] = parsedHeaders[key];\n }\n }\n return isNullable &&\n !fullResponse.parsedBody &&\n !parsedHeaders &&\n Object.getOwnPropertyNames(modelProperties).length === 0\n ? null\n : arrayResponse;\n }\n\n return handleNullableResponseAndWrappableBody({\n body: fullResponse.parsedBody,\n headers: parsedHeaders,\n hasNullableType: isNullable,\n shouldWrapBody: isPrimitiveBody(fullResponse.parsedBody, expectedBodyTypeName),\n });\n}\n", "// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport * as base64 from \"./base64.js\";\nimport {\n BaseMapper,\n CompositeMapper,\n DictionaryMapper,\n EnumMapper,\n Mapper,\n MapperConstraints,\n PolymorphicDiscriminator,\n RequiredSerializerOptions,\n SequenceMapper,\n Serializer,\n SerializerOptions,\n XML_ATTRKEY,\n XML_CHARKEY,\n} from \"./interfaces.js\";\nimport { isDuration, isValidUuid } from \"./utils.js\";\n\nclass SerializerImpl implements Serializer {\n constructor(\n public readonly modelMappers: { [key: string]: any } = {},\n public readonly isXML: boolean = false,\n ) {}\n\n /**\n * @deprecated Removing the constraints validation on client side.\n */\n validateConstraints(mapper: Mapper, value: any, objectName: string): void {\n const failValidation = (\n constraintName: keyof MapperConstraints,\n constraintValue: any,\n ): never => {\n throw new Error(\n `\"${objectName}\" with value \"${value}\" should satisfy the constraint \"${constraintName}\": ${constraintValue}.`,\n );\n };\n if (mapper.constraints && value !== undefined && value !== null) {\n const {\n ExclusiveMaximum,\n ExclusiveMinimum,\n InclusiveMaximum,\n InclusiveMinimum,\n MaxItems,\n MaxLength,\n MinItems,\n MinLength,\n MultipleOf,\n Pattern,\n UniqueItems,\n } = mapper.constraints;\n if (ExclusiveMaximum !== undefined && value >= ExclusiveMaximum) {\n failValidation(\"ExclusiveMaximum\", ExclusiveMaximum);\n }\n if (ExclusiveMinimum !== undefined && value <= ExclusiveMinimum) {\n failValidation(\"ExclusiveMinimum\", ExclusiveMinimum);\n }\n if (InclusiveMaximum !== undefined && value > InclusiveMaximum) {\n failValidation(\"InclusiveMaximum\", InclusiveMaximum);\n }\n if (InclusiveMinimum !== undefined && value < InclusiveMinimum) {\n failValidation(\"InclusiveMinimum\", InclusiveMinimum);\n }\n if (MaxItems !== undefined && value.length > MaxItems) {\n failValidation(\"MaxItems\", MaxItems);\n }\n if (MaxLength !== undefined && value.length > MaxLength) {\n failValidation(\"MaxLength\", MaxLength);\n }\n if (MinItems !== undefined && value.length < MinItems) {\n failValidation(\"MinItems\", MinItems);\n }\n if (MinLength !== undefined && value.length < MinLength) {\n failValidation(\"MinLength\", MinLength);\n }\n if (MultipleOf !== undefined && value % MultipleOf !== 0) {\n failValidation(\"MultipleOf\", MultipleOf);\n }\n if (Pattern) {\n const pattern: RegExp = typeof Pattern === \"string\" ? new RegExp(Pattern) : Pattern;\n if (typeof value !== \"string\" || value.match(pattern) === null) {\n failValidation(\"Pattern\", Pattern);\n }\n }\n if (\n UniqueItems &&\n value.some((item: any, i: number, ar: Array) => ar.indexOf(item) !== i)\n ) {\n failValidation(\"UniqueItems\", UniqueItems);\n }\n }\n }\n\n /**\n * Serialize the given object based on its metadata defined in the mapper\n *\n * @param mapper - The mapper which defines the metadata of the serializable object\n *\n * @param object - A valid Javascript object to be serialized\n *\n * @param objectName - Name of the serialized object\n *\n * @param options - additional options to serialization\n *\n * @returns A valid serialized Javascript object\n */\n serialize(\n mapper: Mapper,\n object: any,\n objectName?: string,\n options: SerializerOptions = { xml: {} },\n ): any {\n const updatedOptions: RequiredSerializerOptions = {\n xml: {\n rootName: options.xml.rootName ?? \"\",\n includeRoot: options.xml.includeRoot ?? false,\n xmlCharKey: options.xml.xmlCharKey ?? XML_CHARKEY,\n },\n };\n let payload: any = {};\n const mapperType = mapper.type.name as string;\n if (!objectName) {\n objectName = mapper.serializedName!;\n }\n if (mapperType.match(/^Sequence$/i) !== null) {\n payload = [];\n }\n\n if (mapper.isConstant) {\n object = mapper.defaultValue;\n }\n\n // This table of allowed values should help explain\n // the mapper.required and mapper.nullable properties.\n // X means \"neither undefined or null are allowed\".\n // || required\n // || true | false\n // nullable || ==========================\n // true || null | undefined/null\n // false || X | undefined\n // undefined || X | undefined/null\n\n const { required, nullable } = mapper;\n\n if (required && nullable && object === undefined) {\n throw new Error(`${objectName} cannot be undefined.`);\n }\n if (required && !nullable && (object === undefined || object === null)) {\n throw new Error(`${objectName} cannot be null or undefined.`);\n }\n if (!required && nullable === false && object === null) {\n throw new Error(`${objectName} cannot be null.`);\n }\n\n if (object === undefined || object === null) {\n payload = object;\n } else {\n if (mapperType.match(/^any$/i) !== null) {\n payload = object;\n } else if (mapperType.match(/^(Number|String|Boolean|Object|Stream|Uuid)$/i) !== null) {\n payload = serializeBasicTypes(mapperType, objectName, object);\n } else if (mapperType.match(/^Enum$/i) !== null) {\n const enumMapper = mapper as EnumMapper;\n payload = serializeEnumType(objectName, enumMapper.type.allowedValues, object);\n } else if (\n mapperType.match(/^(Date|DateTime|TimeSpan|DateTimeRfc1123|UnixTime)$/i) !== null\n ) {\n payload = serializeDateTypes(mapperType, object, objectName);\n } else if (mapperType.match(/^ByteArray$/i) !== null) {\n payload = serializeByteArrayType(objectName, object);\n } else if (mapperType.match(/^Base64Url$/i) !== null) {\n payload = serializeBase64UrlType(objectName, object);\n } else if (mapperType.match(/^Sequence$/i) !== null) {\n payload = serializeSequenceType(\n this,\n mapper as SequenceMapper,\n object,\n objectName,\n Boolean(this.isXML),\n updatedOptions,\n );\n } else if (mapperType.match(/^Dictionary$/i) !== null) {\n payload = serializeDictionaryType(\n this,\n mapper as DictionaryMapper,\n object,\n objectName,\n Boolean(this.isXML),\n updatedOptions,\n );\n } else if (mapperType.match(/^Composite$/i) !== null) {\n payload = serializeCompositeType(\n this,\n mapper as CompositeMapper,\n object,\n objectName,\n Boolean(this.isXML),\n updatedOptions,\n );\n }\n }\n return payload;\n }\n\n /**\n * Deserialize the given object based on its metadata defined in the mapper\n *\n * @param mapper - The mapper which defines the metadata of the serializable object\n *\n * @param responseBody - A valid Javascript entity to be deserialized\n *\n * @param objectName - Name of the deserialized object\n *\n * @param options - Controls behavior of XML parser and builder.\n *\n * @returns A valid deserialized Javascript object\n */\n deserialize(\n mapper: Mapper,\n responseBody: any,\n objectName: string,\n options: SerializerOptions = { xml: {} },\n ): any {\n const updatedOptions: RequiredSerializerOptions = {\n xml: {\n rootName: options.xml.rootName ?? \"\",\n includeRoot: options.xml.includeRoot ?? false,\n xmlCharKey: options.xml.xmlCharKey ?? XML_CHARKEY,\n },\n ignoreUnknownProperties: options.ignoreUnknownProperties ?? false,\n };\n if (responseBody === undefined || responseBody === null) {\n if (this.isXML && mapper.type.name === \"Sequence\" && !mapper.xmlIsWrapped) {\n // Edge case for empty XML non-wrapped lists. xml2js can't distinguish\n // between the list being empty versus being missing,\n // so let's do the more user-friendly thing and return an empty list.\n responseBody = [];\n }\n // specifically check for undefined as default value can be a falsey value `0, \"\", false, null`\n if (mapper.defaultValue !== undefined) {\n responseBody = mapper.defaultValue;\n }\n return responseBody;\n }\n\n let payload: any;\n const mapperType = mapper.type.name;\n if (!objectName) {\n objectName = mapper.serializedName!;\n }\n\n if (mapperType.match(/^Composite$/i) !== null) {\n payload = deserializeCompositeType(\n this,\n mapper as CompositeMapper,\n responseBody,\n objectName,\n updatedOptions,\n );\n } else {\n if (this.isXML) {\n const xmlCharKey = updatedOptions.xml.xmlCharKey;\n /**\n * If the mapper specifies this as a non-composite type value but the responseBody contains\n * both header (\"$\" i.e., XML_ATTRKEY) and body (\"#\" i.e., XML_CHARKEY) properties,\n * then just reduce the responseBody value to the body (\"#\" i.e., XML_CHARKEY) property.\n */\n if (responseBody[XML_ATTRKEY] !== undefined && responseBody[xmlCharKey] !== undefined) {\n responseBody = responseBody[xmlCharKey];\n }\n }\n\n if (mapperType.match(/^Number$/i) !== null) {\n payload = parseFloat(responseBody);\n if (isNaN(payload)) {\n payload = responseBody;\n }\n } else if (mapperType.match(/^Boolean$/i) !== null) {\n if (responseBody === \"true\") {\n payload = true;\n } else if (responseBody === \"false\") {\n payload = false;\n } else {\n payload = responseBody;\n }\n } else if (mapperType.match(/^(String|Enum|Object|Stream|Uuid|TimeSpan|any)$/i) !== null) {\n payload = responseBody;\n } else if (mapperType.match(/^(Date|DateTime|DateTimeRfc1123)$/i) !== null) {\n payload = new Date(responseBody);\n } else if (mapperType.match(/^UnixTime$/i) !== null) {\n payload = unixTimeToDate(responseBody);\n } else if (mapperType.match(/^ByteArray$/i) !== null) {\n payload = base64.decodeString(responseBody);\n } else if (mapperType.match(/^Base64Url$/i) !== null) {\n payload = base64UrlToByteArray(responseBody);\n } else if (mapperType.match(/^Sequence$/i) !== null) {\n payload = deserializeSequenceType(\n this,\n mapper as SequenceMapper,\n responseBody,\n objectName,\n updatedOptions,\n );\n } else if (mapperType.match(/^Dictionary$/i) !== null) {\n payload = deserializeDictionaryType(\n this,\n mapper as DictionaryMapper,\n responseBody,\n objectName,\n updatedOptions,\n );\n }\n }\n\n if (mapper.isConstant) {\n payload = mapper.defaultValue;\n }\n\n return payload;\n }\n}\n\n/**\n * Method that creates and returns a Serializer.\n * @param modelMappers - Known models to map\n * @param isXML - If XML should be supported\n */\nexport function createSerializer(\n modelMappers: { [key: string]: any } = {},\n isXML: boolean = false,\n): Serializer {\n return new SerializerImpl(modelMappers, isXML);\n}\n\nfunction trimEnd(str: string, ch: string): string {\n let len = str.length;\n while (len - 1 >= 0 && str[len - 1] === ch) {\n --len;\n }\n return str.substr(0, len);\n}\n\nfunction bufferToBase64Url(buffer: Uint8Array): string | undefined {\n if (!buffer) {\n return undefined;\n }\n if (!(buffer instanceof Uint8Array)) {\n throw new Error(`Please provide an input of type Uint8Array for converting to Base64Url.`);\n }\n // Uint8Array to Base64.\n const str = base64.encodeByteArray(buffer);\n // Base64 to Base64Url.\n return trimEnd(str, \"=\").replace(/\\+/g, \"-\").replace(/\\//g, \"_\");\n}\n\nfunction base64UrlToByteArray(str: string): Uint8Array | undefined {\n if (!str) {\n return undefined;\n }\n if (str && typeof str.valueOf() !== \"string\") {\n throw new Error(\"Please provide an input of type string for converting to Uint8Array\");\n }\n // Base64Url to Base64.\n str = str.replace(/-/g, \"+\").replace(/_/g, \"/\");\n // Base64 to Uint8Array.\n return base64.decodeString(str);\n}\n\nfunction splitSerializeName(prop: string | undefined): string[] {\n const classes: string[] = [];\n let partialclass = \"\";\n if (prop) {\n const subwords = prop.split(\".\");\n\n for (const item of subwords) {\n if (item.charAt(item.length - 1) === \"\\\\\") {\n partialclass += item.substr(0, item.length - 1) + \".\";\n } else {\n partialclass += item;\n classes.push(partialclass);\n partialclass = \"\";\n }\n }\n }\n\n return classes;\n}\n\nfunction dateToUnixTime(d: string | Date): number | undefined {\n if (!d) {\n return undefined;\n }\n\n if (typeof d.valueOf() === \"string\") {\n d = new Date(d as string);\n }\n return Math.floor((d as Date).getTime() / 1000);\n}\n\nfunction unixTimeToDate(n: number): Date | undefined {\n if (!n) {\n return undefined;\n }\n return new Date(n * 1000);\n}\n\nfunction serializeBasicTypes(typeName: string, objectName: string, value: any): any {\n if (value !== null && value !== undefined) {\n if (typeName.match(/^Number$/i) !== null) {\n if (typeof value !== \"number\") {\n throw new Error(`${objectName} with value ${value} must be of type number.`);\n }\n } else if (typeName.match(/^String$/i) !== null) {\n if (typeof value.valueOf() !== \"string\") {\n throw new Error(`${objectName} with value \"${value}\" must be of type string.`);\n }\n } else if (typeName.match(/^Uuid$/i) !== null) {\n if (!(typeof value.valueOf() === \"string\" && isValidUuid(value))) {\n throw new Error(\n `${objectName} with value \"${value}\" must be of type string and a valid uuid.`,\n );\n }\n } else if (typeName.match(/^Boolean$/i) !== null) {\n if (typeof value !== \"boolean\") {\n throw new Error(`${objectName} with value ${value} must be of type boolean.`);\n }\n } else if (typeName.match(/^Stream$/i) !== null) {\n const objectType = typeof value;\n if (\n objectType !== \"string\" &&\n typeof value.pipe !== \"function\" && // NodeJS.ReadableStream\n typeof value.tee !== \"function\" && // browser ReadableStream\n !(value instanceof ArrayBuffer) &&\n !ArrayBuffer.isView(value) &&\n // File objects count as a type of Blob, so we want to use instanceof explicitly\n !((typeof Blob === \"function\" || typeof Blob === \"object\") && value instanceof Blob) &&\n objectType !== \"function\"\n ) {\n throw new Error(\n `${objectName} must be a string, Blob, ArrayBuffer, ArrayBufferView, ReadableStream, or () => ReadableStream.`,\n );\n }\n }\n }\n return value;\n}\n\nfunction serializeEnumType(objectName: string, allowedValues: Array, value: any): any {\n if (!allowedValues) {\n throw new Error(\n `Please provide a set of allowedValues to validate ${objectName} as an Enum Type.`,\n );\n }\n const isPresent = allowedValues.some((item) => {\n if (typeof item.valueOf() === \"string\") {\n return item.toLowerCase() === value.toLowerCase();\n }\n return item === value;\n });\n if (!isPresent) {\n throw new Error(\n `${value} is not a valid value for ${objectName}. The valid values are: ${JSON.stringify(\n allowedValues,\n )}.`,\n );\n }\n return value;\n}\n\nfunction serializeByteArrayType(objectName: string, value: any): any {\n if (value !== undefined && value !== null) {\n if (!(value instanceof Uint8Array)) {\n throw new Error(`${objectName} must be of type Uint8Array.`);\n }\n value = base64.encodeByteArray(value);\n }\n return value;\n}\n\nfunction serializeBase64UrlType(objectName: string, value: any): any {\n if (value !== undefined && value !== null) {\n if (!(value instanceof Uint8Array)) {\n throw new Error(`${objectName} must be of type Uint8Array.`);\n }\n value = bufferToBase64Url(value);\n }\n return value;\n}\n\nfunction serializeDateTypes(typeName: string, value: any, objectName: string): any {\n if (value !== undefined && value !== null) {\n if (typeName.match(/^Date$/i) !== null) {\n if (\n !(\n value instanceof Date ||\n (typeof value.valueOf() === \"string\" && !isNaN(Date.parse(value)))\n )\n ) {\n throw new Error(`${objectName} must be an instanceof Date or a string in ISO8601 format.`);\n }\n value =\n value instanceof Date\n ? value.toISOString().substring(0, 10)\n : new Date(value).toISOString().substring(0, 10);\n } else if (typeName.match(/^DateTime$/i) !== null) {\n if (\n !(\n value instanceof Date ||\n (typeof value.valueOf() === \"string\" && !isNaN(Date.parse(value)))\n )\n ) {\n throw new Error(`${objectName} must be an instanceof Date or a string in ISO8601 format.`);\n }\n value = value instanceof Date ? value.toISOString() : new Date(value).toISOString();\n } else if (typeName.match(/^DateTimeRfc1123$/i) !== null) {\n if (\n !(\n value instanceof Date ||\n (typeof value.valueOf() === \"string\" && !isNaN(Date.parse(value)))\n )\n ) {\n throw new Error(`${objectName} must be an instanceof Date or a string in RFC-1123 format.`);\n }\n value = value instanceof Date ? value.toUTCString() : new Date(value).toUTCString();\n } else if (typeName.match(/^UnixTime$/i) !== null) {\n if (\n !(\n value instanceof Date ||\n (typeof value.valueOf() === \"string\" && !isNaN(Date.parse(value)))\n )\n ) {\n throw new Error(\n `${objectName} must be an instanceof Date or a string in RFC-1123/ISO8601 format ` +\n `for it to be serialized in UnixTime/Epoch format.`,\n );\n }\n value = dateToUnixTime(value);\n } else if (typeName.match(/^TimeSpan$/i) !== null) {\n if (!isDuration(value)) {\n throw new Error(\n `${objectName} must be a string in ISO 8601 format. Instead was \"${value}\".`,\n );\n }\n }\n }\n return value;\n}\n\nfunction serializeSequenceType(\n serializer: Serializer,\n mapper: SequenceMapper,\n object: any,\n objectName: string,\n isXml: boolean,\n options: RequiredSerializerOptions,\n): any {\n if (!Array.isArray(object)) {\n throw new Error(`${objectName} must be of type Array.`);\n }\n let elementType = mapper.type.element;\n if (!elementType || typeof elementType !== \"object\") {\n throw new Error(\n `element\" metadata for an Array must be defined in the ` +\n `mapper and it must of type \"object\" in ${objectName}.`,\n );\n }\n // Quirk: Composite mappers referenced by `element` might\n // not have *all* properties declared (like uberParent),\n // so let's try to look up the full definition by name.\n if (elementType.type.name === \"Composite\" && elementType.type.className) {\n elementType = serializer.modelMappers[elementType.type.className] ?? elementType;\n }\n const tempArray = [];\n for (let i = 0; i < object.length; i++) {\n const serializedValue = serializer.serialize(elementType, object[i], objectName, options);\n if (isXml && elementType.xmlNamespace) {\n const xmlnsKey = elementType.xmlNamespacePrefix\n ? `xmlns:${elementType.xmlNamespacePrefix}`\n : \"xmlns\";\n if (elementType.type.name === \"Composite\") {\n tempArray[i] = { ...serializedValue };\n tempArray[i][XML_ATTRKEY] = { [xmlnsKey]: elementType.xmlNamespace };\n } else {\n tempArray[i] = {};\n tempArray[i][options.xml.xmlCharKey] = serializedValue;\n tempArray[i][XML_ATTRKEY] = { [xmlnsKey]: elementType.xmlNamespace };\n }\n } else {\n tempArray[i] = serializedValue;\n }\n }\n return tempArray;\n}\n\nfunction serializeDictionaryType(\n serializer: Serializer,\n mapper: DictionaryMapper,\n object: any,\n objectName: string,\n isXml: boolean,\n options: RequiredSerializerOptions,\n): any {\n if (typeof object !== \"object\") {\n throw new Error(`${objectName} must be of type object.`);\n }\n const valueType = mapper.type.value;\n if (!valueType || typeof valueType !== \"object\") {\n throw new Error(\n `\"value\" metadata for a Dictionary must be defined in the ` +\n `mapper and it must of type \"object\" in ${objectName}.`,\n );\n }\n const tempDictionary: { [key: string]: any } = {};\n for (const key of Object.keys(object)) {\n const serializedValue = serializer.serialize(valueType, object[key], objectName, options);\n // If the element needs an XML namespace we need to add it within the $ property\n tempDictionary[key] = getXmlObjectValue(valueType, serializedValue, isXml, options);\n }\n\n // Add the namespace to the root element if needed\n if (isXml && mapper.xmlNamespace) {\n const xmlnsKey = mapper.xmlNamespacePrefix ? `xmlns:${mapper.xmlNamespacePrefix}` : \"xmlns\";\n const result = tempDictionary;\n result[XML_ATTRKEY] = { [xmlnsKey]: mapper.xmlNamespace };\n return result;\n }\n\n return tempDictionary;\n}\n\n/**\n * Resolves the additionalProperties property from a referenced mapper\n * @param serializer - the serializer containing the entire set of mappers\n * @param mapper - the composite mapper to resolve\n * @param objectName - name of the object being serialized\n */\nfunction resolveAdditionalProperties(\n serializer: Serializer,\n mapper: CompositeMapper,\n objectName: string,\n): SequenceMapper | BaseMapper | CompositeMapper | DictionaryMapper | EnumMapper | undefined {\n const additionalProperties = mapper.type.additionalProperties;\n\n if (!additionalProperties && mapper.type.className) {\n const modelMapper = resolveReferencedMapper(serializer, mapper, objectName);\n return modelMapper?.type.additionalProperties;\n }\n\n return additionalProperties;\n}\n\n/**\n * Finds the mapper referenced by className\n * @param serializer - the serializer containing the entire set of mappers\n * @param mapper - the composite mapper to resolve\n * @param objectName - name of the object being serialized\n */\nfunction resolveReferencedMapper(\n serializer: Serializer,\n mapper: CompositeMapper,\n objectName: string,\n): CompositeMapper | undefined {\n const className = mapper.type.className;\n if (!className) {\n throw new Error(\n `Class name for model \"${objectName}\" is not provided in the mapper \"${JSON.stringify(\n mapper,\n undefined,\n 2,\n )}\".`,\n );\n }\n\n return serializer.modelMappers[className];\n}\n\n/**\n * Resolves a composite mapper's modelProperties.\n * @param serializer - the serializer containing the entire set of mappers\n * @param mapper - the composite mapper to resolve\n */\nfunction resolveModelProperties(\n serializer: Serializer,\n mapper: CompositeMapper,\n objectName: string,\n): { [propertyName: string]: Mapper } {\n let modelProps = mapper.type.modelProperties;\n if (!modelProps) {\n const modelMapper = resolveReferencedMapper(serializer, mapper, objectName);\n if (!modelMapper) {\n throw new Error(`mapper() cannot be null or undefined for model \"${mapper.type.className}\".`);\n }\n modelProps = modelMapper?.type.modelProperties;\n if (!modelProps) {\n throw new Error(\n `modelProperties cannot be null or undefined in the ` +\n `mapper \"${JSON.stringify(modelMapper)}\" of type \"${\n mapper.type.className\n }\" for object \"${objectName}\".`,\n );\n }\n }\n\n return modelProps;\n}\n\nfunction serializeCompositeType(\n serializer: Serializer,\n mapper: CompositeMapper,\n object: any,\n objectName: string,\n isXml: boolean,\n options: RequiredSerializerOptions,\n): any {\n if (getPolymorphicDiscriminatorRecursively(serializer, mapper)) {\n mapper = getPolymorphicMapper(serializer, mapper, object, \"clientName\");\n }\n\n if (object !== undefined && object !== null) {\n const payload: any = {};\n const modelProps = resolveModelProperties(serializer, mapper, objectName);\n for (const key of Object.keys(modelProps)) {\n const propertyMapper = modelProps[key];\n if (propertyMapper.readOnly) {\n continue;\n }\n\n let propName: string | undefined;\n let parentObject: any = payload;\n if (serializer.isXML) {\n if (propertyMapper.xmlIsWrapped) {\n propName = propertyMapper.xmlName;\n } else {\n propName = propertyMapper.xmlElementName || propertyMapper.xmlName;\n }\n } else {\n const paths = splitSerializeName(propertyMapper.serializedName!);\n propName = paths.pop();\n\n for (const pathName of paths) {\n const childObject = parentObject[pathName];\n if (\n (childObject === undefined || childObject === null) &&\n ((object[key] !== undefined && object[key] !== null) ||\n propertyMapper.defaultValue !== undefined)\n ) {\n parentObject[pathName] = {};\n }\n parentObject = parentObject[pathName];\n }\n }\n\n if (parentObject !== undefined && parentObject !== null) {\n if (isXml && mapper.xmlNamespace) {\n const xmlnsKey = mapper.xmlNamespacePrefix\n ? `xmlns:${mapper.xmlNamespacePrefix}`\n : \"xmlns\";\n parentObject[XML_ATTRKEY] = {\n ...parentObject[XML_ATTRKEY],\n [xmlnsKey]: mapper.xmlNamespace,\n };\n }\n const propertyObjectName =\n propertyMapper.serializedName !== \"\"\n ? objectName + \".\" + propertyMapper.serializedName\n : objectName;\n\n let toSerialize = object[key];\n const polymorphicDiscriminator = getPolymorphicDiscriminatorRecursively(serializer, mapper);\n if (\n polymorphicDiscriminator &&\n polymorphicDiscriminator.clientName === key &&\n (toSerialize === undefined || toSerialize === null)\n ) {\n toSerialize = mapper.serializedName;\n }\n\n const serializedValue = serializer.serialize(\n propertyMapper,\n toSerialize,\n propertyObjectName,\n options,\n );\n if (serializedValue !== undefined && propName !== undefined && propName !== null) {\n const value = getXmlObjectValue(propertyMapper, serializedValue, isXml, options);\n if (isXml && propertyMapper.xmlIsAttribute) {\n // XML_ATTRKEY, i.e., $ is the key attributes are kept under in xml2js.\n // This keeps things simple while preventing name collision\n // with names in user documents.\n parentObject[XML_ATTRKEY] = parentObject[XML_ATTRKEY] || {};\n parentObject[XML_ATTRKEY][propName] = serializedValue;\n } else if (isXml && propertyMapper.xmlIsWrapped) {\n parentObject[propName] = { [propertyMapper.xmlElementName!]: value };\n } else {\n parentObject[propName] = value;\n }\n }\n }\n }\n\n const additionalPropertiesMapper = resolveAdditionalProperties(serializer, mapper, objectName);\n if (additionalPropertiesMapper) {\n const propNames = Object.keys(modelProps);\n for (const clientPropName in object) {\n const isAdditionalProperty = propNames.every((pn) => pn !== clientPropName);\n if (isAdditionalProperty) {\n payload[clientPropName] = serializer.serialize(\n additionalPropertiesMapper,\n object[clientPropName],\n objectName + '[\"' + clientPropName + '\"]',\n options,\n );\n }\n }\n }\n\n return payload;\n }\n return object;\n}\n\nfunction getXmlObjectValue(\n propertyMapper: Mapper,\n serializedValue: any,\n isXml: boolean,\n options: RequiredSerializerOptions,\n): any {\n if (!isXml || !propertyMapper.xmlNamespace) {\n return serializedValue;\n }\n\n const xmlnsKey = propertyMapper.xmlNamespacePrefix\n ? `xmlns:${propertyMapper.xmlNamespacePrefix}`\n : \"xmlns\";\n const xmlNamespace = { [xmlnsKey]: propertyMapper.xmlNamespace };\n\n if ([\"Composite\"].includes(propertyMapper.type.name)) {\n if (serializedValue[XML_ATTRKEY]) {\n return serializedValue;\n } else {\n const result: any = { ...serializedValue };\n result[XML_ATTRKEY] = xmlNamespace;\n return result;\n }\n }\n const result: any = {};\n result[options.xml.xmlCharKey] = serializedValue;\n result[XML_ATTRKEY] = xmlNamespace;\n return result;\n}\n\nfunction isSpecialXmlProperty(propertyName: string, options: RequiredSerializerOptions): boolean {\n return [XML_ATTRKEY, options.xml.xmlCharKey].includes(propertyName);\n}\n\nfunction deserializeCompositeType(\n serializer: Serializer,\n mapper: CompositeMapper,\n responseBody: any,\n objectName: string,\n options: RequiredSerializerOptions,\n): any {\n const xmlCharKey = options.xml.xmlCharKey ?? XML_CHARKEY;\n if (getPolymorphicDiscriminatorRecursively(serializer, mapper)) {\n mapper = getPolymorphicMapper(serializer, mapper, responseBody, \"serializedName\");\n }\n\n const modelProps = resolveModelProperties(serializer, mapper, objectName);\n let instance: { [key: string]: any } = {};\n const handledPropertyNames: string[] = [];\n\n for (const key of Object.keys(modelProps)) {\n const propertyMapper = modelProps[key];\n const paths = splitSerializeName(modelProps[key].serializedName!);\n handledPropertyNames.push(paths[0]);\n const { serializedName, xmlName, xmlElementName } = propertyMapper;\n let propertyObjectName = objectName;\n if (serializedName !== \"\" && serializedName !== undefined) {\n propertyObjectName = objectName + \".\" + serializedName;\n }\n\n const headerCollectionPrefix = (propertyMapper as DictionaryMapper).headerCollectionPrefix;\n if (headerCollectionPrefix) {\n const dictionary: any = {};\n for (const headerKey of Object.keys(responseBody)) {\n if (headerKey.startsWith(headerCollectionPrefix)) {\n dictionary[headerKey.substring(headerCollectionPrefix.length)] = serializer.deserialize(\n (propertyMapper as DictionaryMapper).type.value,\n responseBody[headerKey],\n propertyObjectName,\n options,\n );\n }\n\n handledPropertyNames.push(headerKey);\n }\n instance[key] = dictionary;\n } else if (serializer.isXML) {\n if (propertyMapper.xmlIsAttribute && responseBody[XML_ATTRKEY]) {\n instance[key] = serializer.deserialize(\n propertyMapper,\n responseBody[XML_ATTRKEY][xmlName!],\n propertyObjectName,\n options,\n );\n } else if (propertyMapper.xmlIsMsText) {\n if (responseBody[xmlCharKey] !== undefined) {\n instance[key] = responseBody[xmlCharKey];\n } else if (typeof responseBody === \"string\") {\n // The special case where xml parser parses \"content\" into JSON of\n // `{ name: \"content\"}` instead of `{ name: { \"_\": \"content\" }}`\n instance[key] = responseBody;\n }\n } else {\n const propertyName = xmlElementName || xmlName || serializedName;\n if (propertyMapper.xmlIsWrapped) {\n /* a list of wrapped by \n For the xml example below\n \n ...\n ...\n \n the responseBody has\n {\n Cors: {\n CorsRule: [{...}, {...}]\n }\n }\n xmlName is \"Cors\" and xmlElementName is\"CorsRule\".\n */\n const wrapped = responseBody[xmlName!];\n const elementList = wrapped?.[xmlElementName!] ?? [];\n instance[key] = serializer.deserialize(\n propertyMapper,\n elementList,\n propertyObjectName,\n options,\n );\n handledPropertyNames.push(xmlName!);\n } else {\n const property = responseBody[propertyName!];\n instance[key] = serializer.deserialize(\n propertyMapper,\n property,\n propertyObjectName,\n options,\n );\n handledPropertyNames.push(propertyName!);\n }\n }\n } else {\n // deserialize the property if it is present in the provided responseBody instance\n let propertyInstance;\n let res = responseBody;\n // traversing the object step by step.\n let steps = 0;\n for (const item of paths) {\n if (!res) break;\n steps++;\n res = res[item];\n }\n // only accept null when reaching the last position of object otherwise it would be undefined\n if (res === null && steps < paths.length) {\n res = undefined;\n }\n propertyInstance = res;\n const polymorphicDiscriminator = mapper.type.polymorphicDiscriminator;\n // checking that the model property name (key)(ex: \"fishtype\") and the\n // clientName of the polymorphicDiscriminator {metadata} (ex: \"fishtype\")\n // instead of the serializedName of the polymorphicDiscriminator (ex: \"fish.type\")\n // is a better approach. The generator is not consistent with escaping '\\.' in the\n // serializedName of the property (ex: \"fish\\.type\") that is marked as polymorphic discriminator\n // and the serializedName of the metadata polymorphicDiscriminator (ex: \"fish.type\"). However,\n // the clientName transformation of the polymorphicDiscriminator (ex: \"fishtype\") and\n // the transformation of model property name (ex: \"fishtype\") is done consistently.\n // Hence, it is a safer bet to rely on the clientName of the polymorphicDiscriminator.\n if (\n polymorphicDiscriminator &&\n key === polymorphicDiscriminator.clientName &&\n (propertyInstance === undefined || propertyInstance === null)\n ) {\n propertyInstance = mapper.serializedName;\n }\n\n let serializedValue;\n // paging\n if (Array.isArray(responseBody[key]) && modelProps[key].serializedName === \"\") {\n propertyInstance = responseBody[key];\n const arrayInstance = serializer.deserialize(\n propertyMapper,\n propertyInstance,\n propertyObjectName,\n options,\n );\n // Copy over any properties that have already been added into the instance, where they do\n // not exist on the newly de-serialized array\n for (const [k, v] of Object.entries(instance)) {\n if (!Object.prototype.hasOwnProperty.call(arrayInstance, k)) {\n arrayInstance[k] = v;\n }\n }\n instance = arrayInstance;\n } else if (propertyInstance !== undefined || propertyMapper.defaultValue !== undefined) {\n serializedValue = serializer.deserialize(\n propertyMapper,\n propertyInstance,\n propertyObjectName,\n options,\n );\n instance[key] = serializedValue;\n }\n }\n }\n\n const additionalPropertiesMapper = mapper.type.additionalProperties;\n if (additionalPropertiesMapper) {\n const isAdditionalProperty = (responsePropName: string): boolean => {\n for (const clientPropName in modelProps) {\n const paths = splitSerializeName(modelProps[clientPropName].serializedName);\n if (paths[0] === responsePropName) {\n return false;\n }\n }\n return true;\n };\n\n for (const responsePropName in responseBody) {\n if (isAdditionalProperty(responsePropName)) {\n instance[responsePropName] = serializer.deserialize(\n additionalPropertiesMapper,\n responseBody[responsePropName],\n objectName + '[\"' + responsePropName + '\"]',\n options,\n );\n }\n }\n } else if (responseBody && !options.ignoreUnknownProperties) {\n for (const key of Object.keys(responseBody)) {\n if (\n instance[key] === undefined &&\n !handledPropertyNames.includes(key) &&\n !isSpecialXmlProperty(key, options)\n ) {\n instance[key] = responseBody[key];\n }\n }\n }\n\n return instance;\n}\n\nfunction deserializeDictionaryType(\n serializer: Serializer,\n mapper: DictionaryMapper,\n responseBody: any,\n objectName: string,\n options: RequiredSerializerOptions,\n): any {\n /* jshint validthis: true */\n const value = mapper.type.value;\n if (!value || typeof value !== \"object\") {\n throw new Error(\n `\"value\" metadata for a Dictionary must be defined in the ` +\n `mapper and it must of type \"object\" in ${objectName}`,\n );\n }\n if (responseBody) {\n const tempDictionary: { [key: string]: any } = {};\n for (const key of Object.keys(responseBody)) {\n tempDictionary[key] = serializer.deserialize(value, responseBody[key], objectName, options);\n }\n return tempDictionary;\n }\n return responseBody;\n}\n\nfunction deserializeSequenceType(\n serializer: Serializer,\n mapper: SequenceMapper,\n responseBody: any,\n objectName: string,\n options: RequiredSerializerOptions,\n): any {\n let element = mapper.type.element;\n if (!element || typeof element !== \"object\") {\n throw new Error(\n `element\" metadata for an Array must be defined in the ` +\n `mapper and it must of type \"object\" in ${objectName}`,\n );\n }\n if (responseBody) {\n if (!Array.isArray(responseBody)) {\n // xml2js will interpret a single element array as just the element, so force it to be an array\n responseBody = [responseBody];\n }\n\n // Quirk: Composite mappers referenced by `element` might\n // not have *all* properties declared (like uberParent),\n // so let's try to look up the full definition by name.\n if (element.type.name === \"Composite\" && element.type.className) {\n element = serializer.modelMappers[element.type.className] ?? element;\n }\n\n const tempArray = [];\n for (let i = 0; i < responseBody.length; i++) {\n tempArray[i] = serializer.deserialize(\n element,\n responseBody[i],\n `${objectName}[${i}]`,\n options,\n );\n }\n return tempArray;\n }\n return responseBody;\n}\n\nfunction getIndexDiscriminator(\n discriminators: Record,\n discriminatorValue: string,\n typeName: string,\n): CompositeMapper | undefined {\n const typeNamesToCheck = [typeName];\n while (typeNamesToCheck.length) {\n const currentName = typeNamesToCheck.shift();\n const indexDiscriminator =\n discriminatorValue === currentName\n ? discriminatorValue\n : currentName + \".\" + discriminatorValue;\n if (Object.prototype.hasOwnProperty.call(discriminators, indexDiscriminator)) {\n return discriminators[indexDiscriminator];\n } else {\n for (const [name, mapper] of Object.entries(discriminators)) {\n if (\n name.startsWith(currentName + \".\") &&\n mapper.type.uberParent === currentName &&\n mapper.type.className\n ) {\n typeNamesToCheck.push(mapper.type.className);\n }\n }\n }\n }\n\n return undefined;\n}\n\nfunction getPolymorphicMapper(\n serializer: Serializer,\n mapper: CompositeMapper,\n object: any,\n polymorphicPropertyName: \"clientName\" | \"serializedName\",\n): CompositeMapper {\n const polymorphicDiscriminator = getPolymorphicDiscriminatorRecursively(serializer, mapper);\n\n if (polymorphicDiscriminator) {\n let discriminatorName = polymorphicDiscriminator[polymorphicPropertyName];\n if (discriminatorName) {\n // The serializedName might have \\\\, which we just want to ignore\n if (polymorphicPropertyName === \"serializedName\") {\n discriminatorName = discriminatorName.replace(/\\\\/gi, \"\");\n }\n const discriminatorValue = object[discriminatorName];\n const typeName = mapper.type.uberParent ?? mapper.type.className;\n\n if (typeof discriminatorValue === \"string\" && typeName) {\n const polymorphicMapper = getIndexDiscriminator(\n serializer.modelMappers.discriminators,\n discriminatorValue,\n typeName,\n );\n if (polymorphicMapper) {\n mapper = polymorphicMapper;\n }\n }\n }\n }\n return mapper;\n}\n\nfunction getPolymorphicDiscriminatorRecursively(\n serializer: Serializer,\n mapper: CompositeMapper,\n): PolymorphicDiscriminator | undefined {\n return (\n mapper.type.polymorphicDiscriminator ||\n getPolymorphicDiscriminatorSafely(serializer, mapper.type.uberParent) ||\n getPolymorphicDiscriminatorSafely(serializer, mapper.type.className)\n );\n}\n\nfunction getPolymorphicDiscriminatorSafely(\n serializer: Serializer,\n typeName?: string,\n): PolymorphicDiscriminator | undefined {\n return (\n typeName &&\n serializer.modelMappers[typeName] &&\n serializer.modelMappers[typeName].type.polymorphicDiscriminator\n );\n}\n\n/**\n * Known types of Mappers\n */\nexport const MapperTypeNames = {\n Base64Url: \"Base64Url\",\n Boolean: \"Boolean\",\n ByteArray: \"ByteArray\",\n Composite: \"Composite\",\n Date: \"Date\",\n DateTime: \"DateTime\",\n DateTimeRfc1123: \"DateTimeRfc1123\",\n Dictionary: \"Dictionary\",\n Enum: \"Enum\",\n Number: \"Number\",\n Object: \"Object\",\n Sequence: \"Sequence\",\n String: \"String\",\n Stream: \"Stream\",\n TimeSpan: \"TimeSpan\",\n UnixTime: \"UnixTime\",\n} as const;\n", "// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { HttpClient, PipelineRequest, PipelineResponse, SendRequest } from \"./interfaces.js\";\n\n/**\n * Policies are executed in phases.\n * The execution order is:\n * 1. Serialize Phase\n * 2. Policies not in a phase\n * 3. Deserialize Phase\n * 4. Retry Phase\n * 5. Sign Phase\n */\nexport type PipelinePhase = \"Deserialize\" | \"Serialize\" | \"Retry\" | \"Sign\";\n\nconst ValidPhaseNames = new Set([\"Deserialize\", \"Serialize\", \"Retry\", \"Sign\"]);\n\n/**\n * Options when adding a policy to the pipeline.\n * Used to express dependencies on other policies.\n */\nexport interface AddPolicyOptions {\n /**\n * Policies that this policy must come before.\n */\n beforePolicies?: string[];\n /**\n * Policies that this policy must come after.\n */\n afterPolicies?: string[];\n /**\n * The phase that this policy must come after.\n */\n afterPhase?: PipelinePhase;\n /**\n * The phase this policy belongs to.\n */\n phase?: PipelinePhase;\n}\n\n/**\n * A pipeline policy manipulates a request as it travels through the pipeline.\n * It is conceptually a middleware that is allowed to modify the request before\n * it is made as well as the response when it is received.\n */\nexport interface PipelinePolicy {\n /**\n * The policy name. Must be a unique string in the pipeline.\n */\n name: string;\n /**\n * The main method to implement that manipulates a request/response.\n * @param request - The request being performed.\n * @param next - The next policy in the pipeline. Must be called to continue the pipeline.\n */\n sendRequest(request: PipelineRequest, next: SendRequest): Promise;\n}\n\n/**\n * Represents a pipeline for making a HTTP request to a URL.\n * Pipelines can have multiple policies to manage manipulating each request\n * before and after it is made to the server.\n */\nexport interface Pipeline {\n /**\n * Add a new policy to the pipeline.\n * @param policy - A policy that manipulates a request.\n * @param options - A set of options for when the policy should run.\n */\n addPolicy(policy: PipelinePolicy, options?: AddPolicyOptions): void;\n /**\n * Remove a policy from the pipeline.\n * @param options - Options that let you specify which policies to remove.\n */\n removePolicy(options: { name?: string; phase?: PipelinePhase }): PipelinePolicy[];\n /**\n * Uses the pipeline to make a HTTP request.\n * @param httpClient - The HttpClient that actually performs the request.\n * @param request - The request to be made.\n */\n sendRequest(httpClient: HttpClient, request: PipelineRequest): Promise;\n /**\n * Returns the current set of policies in the pipeline in the order in which\n * they will be applied to the request. Later in the list is closer to when\n * the request is performed.\n */\n getOrderedPolicies(): PipelinePolicy[];\n /**\n * Duplicates this pipeline to allow for modifying an existing one without mutating it.\n */\n clone(): Pipeline;\n}\n\ninterface PipelineDescriptor {\n policy: PipelinePolicy;\n options: AddPolicyOptions;\n}\n\ninterface PolicyGraphNode {\n policy: PipelinePolicy;\n dependsOn: Set;\n dependants: Set;\n afterPhase?: Phase;\n}\n\ninterface Phase {\n name: PipelinePhase | \"None\";\n policies: Set;\n hasRun: boolean;\n hasAfterPolicies: boolean;\n}\n\n/**\n * A private implementation of Pipeline.\n * Do not export this class from the package.\n * @internal\n */\nclass HttpPipeline implements Pipeline {\n private _policies: PipelineDescriptor[] = [];\n private _orderedPolicies?: PipelinePolicy[];\n\n private constructor(policies?: PipelineDescriptor[]) {\n this._policies = policies?.slice(0) ?? [];\n this._orderedPolicies = undefined;\n }\n\n public addPolicy(policy: PipelinePolicy, options: AddPolicyOptions = {}): void {\n if (options.phase && options.afterPhase) {\n throw new Error(\"Policies inside a phase cannot specify afterPhase.\");\n }\n if (options.phase && !ValidPhaseNames.has(options.phase)) {\n throw new Error(`Invalid phase name: ${options.phase}`);\n }\n if (options.afterPhase && !ValidPhaseNames.has(options.afterPhase)) {\n throw new Error(`Invalid afterPhase name: ${options.afterPhase}`);\n }\n this._policies.push({\n policy,\n options,\n });\n this._orderedPolicies = undefined;\n }\n\n public removePolicy(options: { name?: string; phase?: string }): PipelinePolicy[] {\n const removedPolicies: PipelinePolicy[] = [];\n\n this._policies = this._policies.filter((policyDescriptor) => {\n if (\n (options.name && policyDescriptor.policy.name === options.name) ||\n (options.phase && policyDescriptor.options.phase === options.phase)\n ) {\n removedPolicies.push(policyDescriptor.policy);\n return false;\n } else {\n return true;\n }\n });\n this._orderedPolicies = undefined;\n\n return removedPolicies;\n }\n\n public sendRequest(httpClient: HttpClient, request: PipelineRequest): Promise {\n const policies = this.getOrderedPolicies();\n\n const pipeline = policies.reduceRight(\n (next, policy) => {\n return (req: PipelineRequest) => {\n return policy.sendRequest(req, next);\n };\n },\n (req: PipelineRequest) => httpClient.sendRequest(req),\n );\n\n return pipeline(request);\n }\n\n public getOrderedPolicies(): PipelinePolicy[] {\n if (!this._orderedPolicies) {\n this._orderedPolicies = this.orderPolicies();\n }\n return this._orderedPolicies;\n }\n\n public clone(): Pipeline {\n return new HttpPipeline(this._policies);\n }\n\n public static create(): Pipeline {\n return new HttpPipeline();\n }\n\n private orderPolicies(): PipelinePolicy[] {\n /**\n * The goal of this method is to reliably order pipeline policies\n * based on their declared requirements when they were added.\n *\n * Order is first determined by phase:\n *\n * 1. Serialize Phase\n * 2. Policies not in a phase\n * 3. Deserialize Phase\n * 4. Retry Phase\n * 5. Sign Phase\n *\n * Within each phase, policies are executed in the order\n * they were added unless they were specified to execute\n * before/after other policies or after a particular phase.\n *\n * To determine the final order, we will walk the policy list\n * in phase order multiple times until all dependencies are\n * satisfied.\n *\n * `afterPolicies` are the set of policies that must be\n * executed before a given policy. This requirement is\n * considered satisfied when each of the listed policies\n * have been scheduled.\n *\n * `beforePolicies` are the set of policies that must be\n * executed after a given policy. Since this dependency\n * can be expressed by converting it into a equivalent\n * `afterPolicies` declarations, they are normalized\n * into that form for simplicity.\n *\n * An `afterPhase` dependency is considered satisfied when all\n * policies in that phase have scheduled.\n *\n */\n const result: PipelinePolicy[] = [];\n\n // Track all policies we know about.\n const policyMap: Map = new Map();\n\n function createPhase(name: PipelinePhase | \"None\"): Phase {\n return {\n name,\n policies: new Set(),\n hasRun: false,\n hasAfterPolicies: false,\n };\n }\n\n // Track policies for each phase.\n const serializePhase = createPhase(\"Serialize\");\n const noPhase = createPhase(\"None\");\n const deserializePhase = createPhase(\"Deserialize\");\n const retryPhase = createPhase(\"Retry\");\n const signPhase = createPhase(\"Sign\");\n\n // a list of phases in order\n const orderedPhases = [serializePhase, noPhase, deserializePhase, retryPhase, signPhase];\n\n // Small helper function to map phase name to each Phase\n function getPhase(phase: PipelinePhase | undefined): Phase {\n if (phase === \"Retry\") {\n return retryPhase;\n } else if (phase === \"Serialize\") {\n return serializePhase;\n } else if (phase === \"Deserialize\") {\n return deserializePhase;\n } else if (phase === \"Sign\") {\n return signPhase;\n } else {\n return noPhase;\n }\n }\n\n // First walk each policy and create a node to track metadata.\n for (const descriptor of this._policies) {\n const policy = descriptor.policy;\n const options = descriptor.options;\n const policyName = policy.name;\n if (policyMap.has(policyName)) {\n throw new Error(\"Duplicate policy names not allowed in pipeline\");\n }\n const node: PolicyGraphNode = {\n policy,\n dependsOn: new Set(),\n dependants: new Set(),\n };\n if (options.afterPhase) {\n node.afterPhase = getPhase(options.afterPhase);\n node.afterPhase.hasAfterPolicies = true;\n }\n policyMap.set(policyName, node);\n const phase = getPhase(options.phase);\n phase.policies.add(node);\n }\n\n // Now that each policy has a node, connect dependency references.\n for (const descriptor of this._policies) {\n const { policy, options } = descriptor;\n const policyName = policy.name;\n const node = policyMap.get(policyName);\n if (!node) {\n throw new Error(`Missing node for policy ${policyName}`);\n }\n\n if (options.afterPolicies) {\n for (const afterPolicyName of options.afterPolicies) {\n const afterNode = policyMap.get(afterPolicyName);\n if (afterNode) {\n // Linking in both directions helps later\n // when we want to notify dependants.\n node.dependsOn.add(afterNode);\n afterNode.dependants.add(node);\n }\n }\n }\n if (options.beforePolicies) {\n for (const beforePolicyName of options.beforePolicies) {\n const beforeNode = policyMap.get(beforePolicyName);\n if (beforeNode) {\n // To execute before another node, make it\n // depend on the current node.\n beforeNode.dependsOn.add(node);\n node.dependants.add(beforeNode);\n }\n }\n }\n }\n\n function walkPhase(phase: Phase): void {\n phase.hasRun = true;\n // Sets iterate in insertion order\n for (const node of phase.policies) {\n if (node.afterPhase && (!node.afterPhase.hasRun || node.afterPhase.policies.size)) {\n // If this node is waiting on a phase to complete,\n // we need to skip it for now.\n // Even if the phase is empty, we should wait for it\n // to be walked to avoid re-ordering policies.\n continue;\n }\n if (node.dependsOn.size === 0) {\n // If there's nothing else we're waiting for, we can\n // add this policy to the result list.\n result.push(node.policy);\n // Notify anything that depends on this policy that\n // the policy has been scheduled.\n for (const dependant of node.dependants) {\n dependant.dependsOn.delete(node);\n }\n policyMap.delete(node.policy.name);\n phase.policies.delete(node);\n }\n }\n }\n\n function walkPhases(): void {\n for (const phase of orderedPhases) {\n walkPhase(phase);\n // if the phase isn't complete\n if (phase.policies.size > 0 && phase !== noPhase) {\n if (!noPhase.hasRun) {\n // Try running noPhase to see if that unblocks this phase next tick.\n // This can happen if a phase that happens before noPhase\n // is waiting on a noPhase policy to complete.\n walkPhase(noPhase);\n }\n // Don't proceed to the next phase until this phase finishes.\n return;\n }\n\n if (phase.hasAfterPolicies) {\n // Run any policies unblocked by this phase\n walkPhase(noPhase);\n }\n }\n }\n\n // Iterate until we've put every node in the result list.\n let iteration = 0;\n while (policyMap.size > 0) {\n iteration++;\n const initialResultLength = result.length;\n // Keep walking each phase in order until we can order every node.\n walkPhases();\n // The result list *should* get at least one larger each time\n // after the first full pass.\n // Otherwise, we're going to loop forever.\n if (result.length <= initialResultLength && iteration > 1) {\n throw new Error(\"Cannot satisfy policy dependencies due to requirements cycle.\");\n }\n }\n\n return result;\n }\n}\n\n/**\n * Creates a totally empty pipeline.\n * Useful for testing or creating a custom one.\n */\nexport function createEmptyPipeline(): Pipeline {\n return HttpPipeline.create();\n}\n", "// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport { EOL } from \"node:os\";\nimport util from \"node:util\";\nimport * as process from \"node:process\";\n\nexport function log(message: unknown, ...args: any[]): void {\n process.stderr.write(`${util.format(message, ...args)}${EOL}`);\n}\n", "// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport { log } from \"./log.js\";\n\n/**\n * A simple mechanism for enabling logging.\n * Intended to mimic the publicly available `debug` package.\n */\nexport interface Debug {\n /**\n * Creates a new logger with the given namespace.\n */\n (namespace: string): Debugger;\n /**\n * The default log method (defaults to console)\n */\n log: (...args: any[]) => void;\n /**\n * Enables a particular set of namespaces.\n * To enable multiple separate them with commas, e.g. \"info,debug\".\n * Supports wildcards, e.g. \"azure:*\"\n * Supports skip syntax, e.g. \"azure:*,-azure:storage:*\" will enable\n * everything under azure except for things under azure:storage.\n */\n enable: (namespaces: string) => void;\n /**\n * Checks if a particular namespace is enabled.\n */\n enabled: (namespace: string) => boolean;\n /**\n * Disables all logging, returns what was previously enabled.\n */\n disable: () => string;\n}\n\n/**\n * A log function that can be dynamically enabled and redirected.\n */\nexport interface Debugger {\n /**\n * Logs the given arguments to the `log` method.\n */\n (...args: any[]): void;\n /**\n * True if this logger is active and logging.\n */\n enabled: boolean;\n /**\n * Used to cleanup/remove this logger.\n */\n destroy: () => boolean;\n /**\n * The current log method. Can be overridden to redirect output.\n */\n log: (...args: any[]) => void;\n /**\n * The namespace of this logger.\n */\n namespace: string;\n /**\n * Extends this logger with a child namespace.\n * Namespaces are separated with a ':' character.\n */\n extend: (namespace: string) => Debugger;\n}\n\nconst debugEnvVariable =\n (typeof process !== \"undefined\" && process.env && process.env.DEBUG) || undefined;\n\nlet enabledString: string | undefined;\nlet enabledNamespaces: RegExp[] = [];\nlet skippedNamespaces: RegExp[] = [];\nconst debuggers: Debugger[] = [];\n\nif (debugEnvVariable) {\n enable(debugEnvVariable);\n}\n\nconst debugObj: Debug = Object.assign(\n (namespace: string): Debugger => {\n return createDebugger(namespace);\n },\n {\n enable,\n enabled,\n disable,\n log,\n },\n);\n\nfunction enable(namespaces: string): void {\n enabledString = namespaces;\n enabledNamespaces = [];\n skippedNamespaces = [];\n const wildcard = /\\*/g;\n const namespaceList = namespaces.split(\",\").map((ns) => ns.trim().replace(wildcard, \".*?\"));\n for (const ns of namespaceList) {\n if (ns.startsWith(\"-\")) {\n skippedNamespaces.push(new RegExp(`^${ns.substr(1)}$`));\n } else {\n enabledNamespaces.push(new RegExp(`^${ns}$`));\n }\n }\n for (const instance of debuggers) {\n instance.enabled = enabled(instance.namespace);\n }\n}\n\nfunction enabled(namespace: string): boolean {\n if (namespace.endsWith(\"*\")) {\n return true;\n }\n\n for (const skipped of skippedNamespaces) {\n if (skipped.test(namespace)) {\n return false;\n }\n }\n for (const enabledNamespace of enabledNamespaces) {\n if (enabledNamespace.test(namespace)) {\n return true;\n }\n }\n return false;\n}\n\nfunction disable(): string {\n const result = enabledString || \"\";\n enable(\"\");\n return result;\n}\n\nfunction createDebugger(namespace: string): Debugger {\n const newDebugger: Debugger = Object.assign(debug, {\n enabled: enabled(namespace),\n destroy,\n log: debugObj.log,\n namespace,\n extend,\n });\n\n function debug(...args: any[]): void {\n if (!newDebugger.enabled) {\n return;\n }\n if (args.length > 0) {\n args[0] = `${namespace} ${args[0]}`;\n }\n newDebugger.log(...args);\n }\n\n debuggers.push(newDebugger);\n\n return newDebugger;\n}\n\nfunction destroy(this: Debugger): boolean {\n const index = debuggers.indexOf(this);\n if (index >= 0) {\n debuggers.splice(index, 1);\n return true;\n }\n return false;\n}\n\nfunction extend(this: Debugger, namespace: string): Debugger {\n const newDebugger = createDebugger(`${this.namespace}:${namespace}`);\n newDebugger.log = this.log;\n return newDebugger;\n}\n\nexport default debugObj;\n", "// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport debug, { type Debugger } from \"./debug.js\";\nexport type { Debugger } from \"./debug.js\";\n\nconst registeredLoggers = new Set();\nconst logLevelFromEnv =\n (typeof process !== \"undefined\" && process.env && process.env.AZURE_LOG_LEVEL) || undefined;\n\nlet azureLogLevel: AzureLogLevel | undefined;\n\n/**\n * The AzureLogger provides a mechanism for overriding where logs are output to.\n * By default, logs are sent to stderr.\n * Override the `log` method to redirect logs to another location.\n */\nexport const AzureLogger: AzureClientLogger = debug(\"azure\");\nAzureLogger.log = (...args) => {\n debug.log(...args);\n};\n\n/**\n * The log levels supported by the logger.\n * The log levels in order of most verbose to least verbose are:\n * - verbose\n * - info\n * - warning\n * - error\n */\nexport type AzureLogLevel = \"verbose\" | \"info\" | \"warning\" | \"error\";\nconst AZURE_LOG_LEVELS = [\"verbose\", \"info\", \"warning\", \"error\"];\n\ntype AzureDebugger = Debugger & { level: AzureLogLevel };\n\n/**\n * An AzureClientLogger is a function that can log to an appropriate severity level.\n */\nexport type AzureClientLogger = Debugger;\n\nif (logLevelFromEnv) {\n // avoid calling setLogLevel because we don't want a mis-set environment variable to crash\n if (isAzureLogLevel(logLevelFromEnv)) {\n setLogLevel(logLevelFromEnv);\n } else {\n console.error(\n `AZURE_LOG_LEVEL set to unknown log level '${logLevelFromEnv}'; logging is not enabled. Acceptable values: ${AZURE_LOG_LEVELS.join(\n \", \",\n )}.`,\n );\n }\n}\n\n/**\n * Immediately enables logging at the specified log level. If no level is specified, logging is disabled.\n * @param level - The log level to enable for logging.\n * Options from most verbose to least verbose are:\n * - verbose\n * - info\n * - warning\n * - error\n */\nexport function setLogLevel(level?: AzureLogLevel): void {\n if (level && !isAzureLogLevel(level)) {\n throw new Error(\n `Unknown log level '${level}'. Acceptable values: ${AZURE_LOG_LEVELS.join(\",\")}`,\n );\n }\n azureLogLevel = level;\n\n const enabledNamespaces = [];\n for (const logger of registeredLoggers) {\n if (shouldEnable(logger)) {\n enabledNamespaces.push(logger.namespace);\n }\n }\n\n debug.enable(enabledNamespaces.join(\",\"));\n}\n\n/**\n * Retrieves the currently specified log level.\n */\nexport function getLogLevel(): AzureLogLevel | undefined {\n return azureLogLevel;\n}\n\nconst levelMap = {\n verbose: 400,\n info: 300,\n warning: 200,\n error: 100,\n};\n\n/**\n * Defines the methods available on the SDK-facing logger.\n */\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport interface AzureLogger {\n /**\n * Used for failures the program is unlikely to recover from,\n * such as Out of Memory.\n */\n error: Debugger;\n /**\n * Used when a function fails to perform its intended task.\n * Usually this means the function will throw an exception.\n * Not used for self-healing events (e.g. automatic retry)\n */\n warning: Debugger;\n /**\n * Used when a function operates normally.\n */\n info: Debugger;\n /**\n * Used for detailed troubleshooting scenarios. This is\n * intended for use by developers / system administrators\n * for diagnosing specific failures.\n */\n verbose: Debugger;\n}\n\n/**\n * Creates a logger for use by the Azure SDKs that inherits from `AzureLogger`.\n * @param namespace - The name of the SDK package.\n * @hidden\n */\nexport function createClientLogger(namespace: string): AzureLogger {\n const clientRootLogger: AzureClientLogger = AzureLogger.extend(namespace);\n patchLogMethod(AzureLogger, clientRootLogger);\n return {\n error: createLogger(clientRootLogger, \"error\"),\n warning: createLogger(clientRootLogger, \"warning\"),\n info: createLogger(clientRootLogger, \"info\"),\n verbose: createLogger(clientRootLogger, \"verbose\"),\n };\n}\n\nfunction patchLogMethod(parent: AzureClientLogger, child: AzureClientLogger | AzureDebugger): void {\n child.log = (...args) => {\n parent.log(...args);\n };\n}\n\nfunction createLogger(parent: AzureClientLogger, level: AzureLogLevel): AzureDebugger {\n const logger: AzureDebugger = Object.assign(parent.extend(level), {\n level,\n });\n\n patchLogMethod(parent, logger);\n\n if (shouldEnable(logger)) {\n const enabledNamespaces = debug.disable();\n debug.enable(enabledNamespaces + \",\" + logger.namespace);\n }\n\n registeredLoggers.add(logger);\n\n return logger;\n}\n\nfunction shouldEnable(logger: AzureDebugger): boolean {\n return Boolean(azureLogLevel && levelMap[logger.level] <= levelMap[azureLogLevel]);\n}\n\nfunction isAzureLogLevel(logLevel: string): logLevel is AzureLogLevel {\n return AZURE_LOG_LEVELS.includes(logLevel as any);\n}\n", "// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { createClientLogger } from \"@azure/logger\";\nexport const logger = createClientLogger(\"core-rest-pipeline\");\n", "// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\n/**\n * This error is thrown when an asynchronous operation has been aborted.\n * Check for this error by testing the `name` that the name property of the\n * error matches `\"AbortError\"`.\n *\n * @example\n * ```ts\n * const controller = new AbortController();\n * controller.abort();\n * try {\n * doAsyncWork(controller.signal)\n * } catch (e) {\n * if (e.name === 'AbortError') {\n * // handle abort error here.\n * }\n * }\n * ```\n */\nexport class AbortError extends Error {\n constructor(message?: string) {\n super(message);\n this.name = \"AbortError\";\n }\n}\n", "// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\ndeclare global {\n interface Event {}\n}\n\nexport { AbortError } from \"./AbortError.js\";\nexport { AbortSignalLike } from \"./AbortSignalLike.js\";\n", "// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { AbortError } from \"@azure/abort-controller\";\nimport type { AbortOptions } from \"./aborterUtils.js\";\n\n/**\n * Options for the createAbortablePromise function.\n */\nexport interface CreateAbortablePromiseOptions extends AbortOptions {\n /** A function to be called if the promise was aborted */\n cleanupBeforeAbort?: () => void;\n}\n\n/**\n * Creates an abortable promise.\n * @param buildPromise - A function that takes the resolve and reject functions as parameters.\n * @param options - The options for the abortable promise.\n * @returns A promise that can be aborted.\n */\nexport function createAbortablePromise(\n buildPromise: (\n resolve: (value: T | PromiseLike) => void,\n reject: (reason?: any) => void,\n ) => void,\n options?: CreateAbortablePromiseOptions,\n): Promise {\n const { cleanupBeforeAbort, abortSignal, abortErrorMsg } = options ?? {};\n return new Promise((resolve, reject) => {\n function rejectOnAbort(): void {\n reject(new AbortError(abortErrorMsg ?? \"The operation was aborted.\"));\n }\n function removeListeners(): void {\n abortSignal?.removeEventListener(\"abort\", onAbort);\n }\n function onAbort(): void {\n cleanupBeforeAbort?.();\n removeListeners();\n rejectOnAbort();\n }\n if (abortSignal?.aborted) {\n return rejectOnAbort();\n }\n try {\n buildPromise(\n (x) => {\n removeListeners();\n resolve(x);\n },\n (x) => {\n removeListeners();\n reject(x);\n },\n );\n } catch (err) {\n reject(err);\n }\n abortSignal?.addEventListener(\"abort\", onAbort);\n });\n}\n", "// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\n/**\n * Returns a random integer value between a lower and upper bound,\n * inclusive of both bounds.\n * Note that this uses Math.random and isn't secure. If you need to use\n * this for any kind of security purpose, find a better source of random.\n * @param min - The smallest integer value allowed.\n * @param max - The largest integer value allowed.\n */\nexport function getRandomIntegerInclusive(min: number, max: number): number {\n // Make sure inputs are integers.\n min = Math.ceil(min);\n max = Math.floor(max);\n // Pick a random offset from zero to the size of the range.\n // Since Math.random() can never return 1, we have to make the range one larger\n // in order to be inclusive of the maximum value after we take the floor.\n const offset = Math.floor(Math.random() * (max - min + 1));\n return offset + min;\n}\n", "// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { AbortOptions } from \"./aborterUtils.js\";\nimport { createAbortablePromise } from \"./createAbortablePromise.js\";\nimport { getRandomIntegerInclusive } from \"./random.js\";\n\nconst StandardAbortMessage = \"The delay was aborted.\";\n\n/**\n * Options for support abort functionality for the delay method\n */\nexport interface DelayOptions extends AbortOptions {}\n\n/**\n * A wrapper for setTimeout that resolves a promise after timeInMs milliseconds.\n * @param timeInMs - The number of milliseconds to be delayed.\n * @param options - The options for delay - currently abort options\n * @returns Promise that is resolved after timeInMs\n */\nexport function delay(timeInMs: number, options?: DelayOptions): Promise {\n let token: ReturnType;\n const { abortSignal, abortErrorMsg } = options ?? {};\n return createAbortablePromise(\n (resolve) => {\n token = setTimeout(resolve, timeInMs);\n },\n {\n cleanupBeforeAbort: () => clearTimeout(token),\n abortSignal,\n abortErrorMsg: abortErrorMsg ?? StandardAbortMessage,\n },\n );\n}\n\n/**\n * Calculates the delay interval for retry attempts using exponential delay with jitter.\n * @param retryAttempt - The current retry attempt number.\n * @param config - The exponential retry configuration.\n * @returns An object containing the calculated retry delay.\n */\nexport function calculateRetryDelay(\n retryAttempt: number,\n config: {\n retryDelayInMs: number;\n maxRetryDelayInMs: number;\n },\n): { retryAfterInMs: number } {\n // Exponentially increase the delay each time\n const exponentialDelay = config.retryDelayInMs * Math.pow(2, retryAttempt);\n\n // Don't let the delay exceed the maximum\n const clampedDelay = Math.min(config.maxRetryDelayInMs, exponentialDelay);\n\n // Allow the final value to have some \"jitter\" (within 50% of the delay size) so\n // that retries across multiple clients don't occur simultaneously.\n const retryAfterInMs = clampedDelay / 2 + getRandomIntegerInclusive(0, clampedDelay / 2);\n\n return { retryAfterInMs };\n}\n", "// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { AbortSignalLike } from \"@azure/abort-controller\";\n\n/**\n * Options related to abort controller.\n */\nexport interface AbortOptions {\n /**\n * The abortSignal associated with containing operation.\n */\n abortSignal?: AbortSignalLike;\n /**\n * The abort error message associated with containing operation.\n */\n abortErrorMsg?: string;\n}\n\n/**\n * Represents a function that returns a promise that can be aborted.\n */\nexport type AbortablePromiseBuilder = (abortOptions: {\n abortSignal?: AbortSignalLike;\n}) => Promise;\n\n/**\n * promise.race() wrapper that aborts rest of promises as soon as the first promise settles.\n */\nexport async function cancelablePromiseRace(\n abortablePromiseBuilders: AbortablePromiseBuilder[],\n options?: { abortSignal?: AbortSignalLike },\n): Promise {\n const aborter = new AbortController();\n function abortHandler(): void {\n aborter.abort();\n }\n options?.abortSignal?.addEventListener(\"abort\", abortHandler);\n try {\n return await Promise.race(\n abortablePromiseBuilders.map((p) => p({ abortSignal: aborter.signal })),\n );\n } finally {\n aborter.abort();\n options?.abortSignal?.removeEventListener(\"abort\", abortHandler);\n }\n}\n", "// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\n/**\n * A generic shape for a plain JS object.\n */\nexport type UnknownObject = { [s: string]: unknown };\n\n/**\n * Helper to determine when an input is a generic JS object.\n * @returns true when input is an object type that is not null, Array, RegExp, or Date.\n */\nexport function isObject(input: unknown): input is UnknownObject {\n return (\n typeof input === \"object\" &&\n input !== null &&\n !Array.isArray(input) &&\n !(input instanceof RegExp) &&\n !(input instanceof Date)\n );\n}\n", "// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { isObject } from \"./object.js\";\n\n/**\n * Typeguard for an error object shape (has name and message)\n * @param e - Something caught by a catch clause.\n */\nexport function isError(e: unknown): e is Error {\n if (isObject(e)) {\n const hasName = typeof e.name === \"string\";\n const hasMessage = typeof e.message === \"string\";\n return hasName && hasMessage;\n }\n return false;\n}\n\n/**\n * Given what is thought to be an error object, return the message if possible.\n * If the message is missing, returns a stringified version of the input.\n * @param e - Something thrown from a try block\n * @returns The error message or a string of the input\n */\nexport function getErrorMessage(e: unknown): string {\n if (isError(e)) {\n return e.message;\n } else {\n let stringified: string;\n try {\n if (typeof e === \"object\" && e) {\n stringified = JSON.stringify(e);\n } else {\n stringified = String(e);\n }\n } catch (err: any) {\n stringified = \"[unable to stringify input]\";\n }\n return `Unknown error ${stringified}`;\n }\n}\n", "// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { createHash, createHmac } from \"crypto\";\n\n/**\n * Generates a SHA-256 HMAC signature.\n * @param key - The HMAC key represented as a base64 string, used to generate the cryptographic HMAC hash.\n * @param stringToSign - The data to be signed.\n * @param encoding - The textual encoding to use for the returned HMAC digest.\n */\nexport async function computeSha256Hmac(\n key: string,\n stringToSign: string,\n encoding: \"base64\" | \"hex\",\n): Promise {\n const decodedKey = Buffer.from(key, \"base64\");\n\n return createHmac(\"sha256\", decodedKey).update(stringToSign).digest(encoding);\n}\n\n/**\n * Generates a SHA-256 hash.\n * @param content - The data to be included in the hash.\n * @param encoding - The textual encoding to use for the returned hash.\n */\nexport async function computeSha256Hash(\n content: string,\n encoding: \"base64\" | \"hex\",\n): Promise {\n return createHash(\"sha256\").update(content).digest(encoding);\n}\n", "// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\n/**\n * Helper TypeGuard that checks if something is defined or not.\n * @param thing - Anything\n */\nexport function isDefined(thing: T | undefined | null): thing is T {\n return typeof thing !== \"undefined\" && thing !== null;\n}\n\n/**\n * Helper TypeGuard that checks if the input is an object with the specified properties.\n * @param thing - Anything.\n * @param properties - The name of the properties that should appear in the object.\n */\nexport function isObjectWithProperties(\n thing: Thing,\n properties: PropertyName[],\n): thing is Thing & Record {\n if (!isDefined(thing) || typeof thing !== \"object\") {\n return false;\n }\n\n for (const property of properties) {\n if (!objectHasProperty(thing, property)) {\n return false;\n }\n }\n\n return true;\n}\n\n/**\n * Helper TypeGuard that checks if the input is an object with the specified property.\n * @param thing - Any object.\n * @param property - The name of the property that should appear in the object.\n */\nexport function objectHasProperty(\n thing: Thing,\n property: PropertyName,\n): thing is Thing & Record {\n return (\n isDefined(thing) && typeof thing === \"object\" && property in (thing as Record)\n );\n}\n", "// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { randomUUID as v4RandomUUID } from \"crypto\";\n\ninterface Crypto {\n randomUUID(): string;\n}\n\ndeclare const globalThis: {\n crypto: Crypto;\n};\n\n// NOTE: This is a workaround until we can use `globalThis.crypto.randomUUID` in Node.js 19+.\nconst uuidFunction =\n typeof globalThis?.crypto?.randomUUID === \"function\"\n ? globalThis.crypto.randomUUID.bind(globalThis.crypto)\n : v4RandomUUID;\n\n/**\n * Generated Universally Unique Identifier\n *\n * @returns RFC4122 v4 UUID.\n */\nexport function randomUUID(): string {\n return uuidFunction();\n}\n", "// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\ninterface Window {\n document: unknown;\n}\n\ninterface DedicatedWorkerGlobalScope {\n constructor: {\n name: string;\n };\n\n importScripts: (...paths: string[]) => void;\n}\n\ninterface Navigator {\n product: string;\n}\n\ninterface DenoGlobal {\n version: {\n deno: string;\n };\n}\n\ninterface BunGlobal {\n version: string;\n}\n\n// eslint-disable-next-line @azure/azure-sdk/ts-no-window\ndeclare const window: Window;\ndeclare const self: DedicatedWorkerGlobalScope;\ndeclare const Deno: DenoGlobal;\ndeclare const Bun: BunGlobal;\ndeclare const navigator: Navigator;\n\n/**\n * A constant that indicates whether the environment the code is running is a Web Browser.\n */\n// eslint-disable-next-line @azure/azure-sdk/ts-no-window\nexport const isBrowser = typeof window !== \"undefined\" && typeof window.document !== \"undefined\";\n\n/**\n * A constant that indicates whether the environment the code is running is a Web Worker.\n */\nexport const isWebWorker =\n typeof self === \"object\" &&\n typeof self?.importScripts === \"function\" &&\n (self.constructor?.name === \"DedicatedWorkerGlobalScope\" ||\n self.constructor?.name === \"ServiceWorkerGlobalScope\" ||\n self.constructor?.name === \"SharedWorkerGlobalScope\");\n\n/**\n * A constant that indicates whether the environment the code is running is Deno.\n */\nexport const isDeno =\n typeof Deno !== \"undefined\" &&\n typeof Deno.version !== \"undefined\" &&\n typeof Deno.version.deno !== \"undefined\";\n\n/**\n * A constant that indicates whether the environment the code is running is Bun.sh.\n */\nexport const isBun = typeof Bun !== \"undefined\" && typeof Bun.version !== \"undefined\";\n\n/**\n * A constant that indicates whether the environment the code is running is a Node.js compatible environment.\n */\nexport const isNodeLike =\n typeof globalThis.process !== \"undefined\" &&\n Boolean(globalThis.process.version) &&\n Boolean(globalThis.process.versions?.node);\n\n/**\n * A constant that indicates whether the environment the code is running is a Node.js compatible environment.\n * @deprecated Use `isNodeLike` instead.\n */\nexport const isNode = isNodeLike;\n\n/**\n * A constant that indicates whether the environment the code is running is Node.JS.\n */\nexport const isNodeRuntime = isNodeLike && !isBun && !isDeno;\n\n/**\n * A constant that indicates whether the environment the code is running is in React-Native.\n */\n// https://github.com/facebook/react-native/blob/main/packages/react-native/Libraries/Core/setUpNavigator.js\nexport const isReactNative =\n typeof navigator !== \"undefined\" && navigator?.product === \"ReactNative\";\n", "// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\n/** The supported character encoding type */\nexport type EncodingType = \"utf-8\" | \"base64\" | \"base64url\" | \"hex\";\n\n/**\n * The helper that transforms bytes with specific character encoding into string\n * @param bytes - the uint8array bytes\n * @param format - the format we use to encode the byte\n * @returns a string of the encoded string\n */\nexport function uint8ArrayToString(bytes: Uint8Array, format: EncodingType): string {\n return Buffer.from(bytes).toString(format);\n}\n\n/**\n * The helper that transforms string to specific character encoded bytes array.\n * @param value - the string to be converted\n * @param format - the format we use to decode the value\n * @returns a uint8array\n */\nexport function stringToUint8Array(value: string, format: EncodingType): Uint8Array {\n return Buffer.from(value, format);\n}\n", "// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nexport { delay, type DelayOptions, calculateRetryDelay } from \"./delay.js\";\nexport {\n type AbortOptions,\n cancelablePromiseRace,\n type AbortablePromiseBuilder,\n} from \"./aborterUtils.js\";\nexport {\n createAbortablePromise,\n type CreateAbortablePromiseOptions,\n} from \"./createAbortablePromise.js\";\nexport { getRandomIntegerInclusive } from \"./random.js\";\nexport { isObject, type UnknownObject } from \"./object.js\";\nexport { isError, getErrorMessage } from \"./error.js\";\nexport { computeSha256Hash, computeSha256Hmac } from \"./sha256.js\";\nexport { isDefined, isObjectWithProperties, objectHasProperty } from \"./typeGuards.js\";\nexport { randomUUID } from \"./uuidUtils.js\";\nexport { HttpMethods } from \"./httpMethods.js\";\nexport {\n isBrowser,\n isBun,\n isNode,\n isNodeLike,\n isNodeRuntime,\n isDeno,\n isReactNative,\n isWebWorker,\n} from \"./checkEnvironment.js\";\nexport { uint8ArrayToString, stringToUint8Array, type EncodingType } from \"./bytesEncoding.js\";\n", "// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { type UnknownObject, isObject } from \"@azure/core-util\";\n\n/**\n * @internal\n */\nexport interface SanitizerOptions {\n /**\n * Header names whose values will be logged when logging is enabled.\n * Defaults include a list of well-known safe headers. Any headers\n * specified in this field will be added to that list. Any other values will\n * be written to logs as \"REDACTED\".\n */\n additionalAllowedHeaderNames?: string[];\n\n /**\n * Query string names whose values will be logged when logging is enabled. By default no\n * query string values are logged.\n */\n additionalAllowedQueryParameters?: string[];\n}\n\nconst RedactedString = \"REDACTED\";\n\n// Make sure this list is up-to-date with the one under core/logger/Readme#Keyconcepts\nconst defaultAllowedHeaderNames = [\n \"x-ms-client-request-id\",\n \"x-ms-return-client-request-id\",\n \"x-ms-useragent\",\n \"x-ms-correlation-request-id\",\n \"x-ms-request-id\",\n \"client-request-id\",\n \"ms-cv\",\n \"return-client-request-id\",\n \"traceparent\",\n\n \"Access-Control-Allow-Credentials\",\n \"Access-Control-Allow-Headers\",\n \"Access-Control-Allow-Methods\",\n \"Access-Control-Allow-Origin\",\n \"Access-Control-Expose-Headers\",\n \"Access-Control-Max-Age\",\n \"Access-Control-Request-Headers\",\n \"Access-Control-Request-Method\",\n \"Origin\",\n\n \"Accept\",\n \"Accept-Encoding\",\n \"Cache-Control\",\n \"Connection\",\n \"Content-Length\",\n \"Content-Type\",\n \"Date\",\n \"ETag\",\n \"Expires\",\n \"If-Match\",\n \"If-Modified-Since\",\n \"If-None-Match\",\n \"If-Unmodified-Since\",\n \"Last-Modified\",\n \"Pragma\",\n \"Request-Id\",\n \"Retry-After\",\n \"Server\",\n \"Transfer-Encoding\",\n \"User-Agent\",\n \"WWW-Authenticate\",\n];\n\nconst defaultAllowedQueryParameters: string[] = [\"api-version\"];\n\n/**\n * @internal\n */\nexport class Sanitizer {\n private allowedHeaderNames: Set;\n private allowedQueryParameters: Set;\n\n constructor({\n additionalAllowedHeaderNames: allowedHeaderNames = [],\n additionalAllowedQueryParameters: allowedQueryParameters = [],\n }: SanitizerOptions = {}) {\n allowedHeaderNames = defaultAllowedHeaderNames.concat(allowedHeaderNames);\n allowedQueryParameters = defaultAllowedQueryParameters.concat(allowedQueryParameters);\n\n this.allowedHeaderNames = new Set(allowedHeaderNames.map((n) => n.toLowerCase()));\n this.allowedQueryParameters = new Set(allowedQueryParameters.map((p) => p.toLowerCase()));\n }\n\n public sanitize(obj: unknown): string {\n const seen = new Set();\n return JSON.stringify(\n obj,\n (key: string, value: unknown) => {\n // Ensure Errors include their interesting non-enumerable members\n if (value instanceof Error) {\n return {\n ...value,\n name: value.name,\n message: value.message,\n };\n }\n\n if (key === \"headers\") {\n return this.sanitizeHeaders(value as UnknownObject);\n } else if (key === \"url\") {\n return this.sanitizeUrl(value as string);\n } else if (key === \"query\") {\n return this.sanitizeQuery(value as UnknownObject);\n } else if (key === \"body\") {\n // Don't log the request body\n return undefined;\n } else if (key === \"response\") {\n // Don't log response again\n return undefined;\n } else if (key === \"operationSpec\") {\n // When using sendOperationRequest, the request carries a massive\n // field with the autorest spec. No need to log it.\n return undefined;\n } else if (Array.isArray(value) || isObject(value)) {\n if (seen.has(value)) {\n return \"[Circular]\";\n }\n seen.add(value);\n }\n\n return value;\n },\n 2,\n );\n }\n\n public sanitizeUrl(value: string): string {\n if (typeof value !== \"string\" || value === null || value === \"\") {\n return value;\n }\n\n const url = new URL(value);\n\n if (!url.search) {\n return value;\n }\n\n for (const [key] of url.searchParams) {\n if (!this.allowedQueryParameters.has(key.toLowerCase())) {\n url.searchParams.set(key, RedactedString);\n }\n }\n\n return url.toString();\n }\n\n private sanitizeHeaders(obj: UnknownObject): UnknownObject {\n const sanitized: UnknownObject = {};\n for (const key of Object.keys(obj)) {\n if (this.allowedHeaderNames.has(key.toLowerCase())) {\n sanitized[key] = obj[key];\n } else {\n sanitized[key] = RedactedString;\n }\n }\n return sanitized;\n }\n\n private sanitizeQuery(value: UnknownObject): UnknownObject {\n if (typeof value !== \"object\" || value === null) {\n return value;\n }\n\n const sanitized: UnknownObject = {};\n\n for (const k of Object.keys(value)) {\n if (this.allowedQueryParameters.has(k.toLowerCase())) {\n sanitized[k] = value[k];\n } else {\n sanitized[k] = RedactedString;\n }\n }\n\n return sanitized;\n }\n}\n", "// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { Debugger } from \"@azure/logger\";\nimport type { PipelineRequest, PipelineResponse, SendRequest } from \"../interfaces.js\";\nimport type { PipelinePolicy } from \"../pipeline.js\";\nimport { logger as coreLogger } from \"../log.js\";\nimport { Sanitizer } from \"../util/sanitizer.js\";\n\n/**\n * The programmatic identifier of the logPolicy.\n */\nexport const logPolicyName = \"logPolicy\";\n\n/**\n * Options to configure the logPolicy.\n */\nexport interface LogPolicyOptions {\n /**\n * Header names whose values will be logged when logging is enabled.\n * Defaults include a list of well-known safe headers. Any headers\n * specified in this field will be added to that list. Any other values will\n * be written to logs as \"REDACTED\".\n */\n additionalAllowedHeaderNames?: string[];\n\n /**\n * Query string names whose values will be logged when logging is enabled. By default no\n * query string values are logged.\n */\n additionalAllowedQueryParameters?: string[];\n\n /**\n * The log function to use for writing pipeline logs.\n * Defaults to core-http's built-in logger.\n * Compatible with the `debug` library.\n */\n logger?: Debugger;\n}\n\n/**\n * A policy that logs all requests and responses.\n * @param options - Options to configure logPolicy.\n */\nexport function logPolicy(options: LogPolicyOptions = {}): PipelinePolicy {\n const logger = options.logger ?? coreLogger.info;\n const sanitizer = new Sanitizer({\n additionalAllowedHeaderNames: options.additionalAllowedHeaderNames,\n additionalAllowedQueryParameters: options.additionalAllowedQueryParameters,\n });\n return {\n name: logPolicyName,\n async sendRequest(request: PipelineRequest, next: SendRequest): Promise {\n if (!logger.enabled) {\n return next(request);\n }\n\n logger(`Request: ${sanitizer.sanitize(request)}`);\n\n const response = await next(request);\n\n logger(`Response status code: ${response.status}`);\n logger(`Headers: ${sanitizer.sanitize(response.headers)}`);\n\n return response;\n },\n };\n}\n", "// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { PipelineRequest, PipelineResponse, SendRequest } from \"../interfaces.js\";\nimport type { PipelinePolicy } from \"../pipeline.js\";\n\n/**\n * The programmatic identifier of the redirectPolicy.\n */\nexport const redirectPolicyName = \"redirectPolicy\";\n\n/**\n * Methods that are allowed to follow redirects 301 and 302\n */\nconst allowedRedirect = [\"GET\", \"HEAD\"];\n\n/**\n * Options for how redirect responses are handled.\n */\nexport interface RedirectPolicyOptions {\n /**\n * The maximum number of times the redirect URL will be tried before\n * failing. Defaults to 20.\n */\n maxRetries?: number;\n}\n\n/**\n * A policy to follow Location headers from the server in order\n * to support server-side redirection.\n * In the browser, this policy is not used.\n * @param options - Options to control policy behavior.\n */\nexport function redirectPolicy(options: RedirectPolicyOptions = {}): PipelinePolicy {\n const { maxRetries = 20 } = options;\n return {\n name: redirectPolicyName,\n async sendRequest(request: PipelineRequest, next: SendRequest): Promise {\n const response = await next(request);\n return handleRedirect(next, response, maxRetries);\n },\n };\n}\n\nasync function handleRedirect(\n next: SendRequest,\n response: PipelineResponse,\n maxRetries: number,\n currentRetries: number = 0,\n): Promise {\n const { request, status, headers } = response;\n const locationHeader = headers.get(\"location\");\n if (\n locationHeader &&\n (status === 300 ||\n (status === 301 && allowedRedirect.includes(request.method)) ||\n (status === 302 && allowedRedirect.includes(request.method)) ||\n (status === 303 && request.method === \"POST\") ||\n status === 307) &&\n currentRetries < maxRetries\n ) {\n const url = new URL(locationHeader, request.url);\n request.url = url.toString();\n\n // POST request with Status code 303 should be converted into a\n // redirected GET request if the redirect url is present in the location header\n if (status === 303) {\n request.method = \"GET\";\n request.headers.delete(\"Content-Length\");\n delete request.body;\n }\n\n request.headers.delete(\"Authorization\");\n\n const res = await next(request);\n return handleRedirect(next, res, maxRetries, currentRetries + 1);\n }\n\n return response;\n}\n", "// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport * as os from \"node:os\";\nimport * as process from \"node:process\";\n\n/**\n * @internal\n */\ninterface ExtendedPlatformVersions extends NodeJS.ProcessVersions {\n bun?: string;\n deno?: string;\n}\n\n/**\n * @internal\n */\nexport function getHeaderName(): string {\n return \"User-Agent\";\n}\n\n/**\n * @internal\n */\nexport async function setPlatformSpecificData(map: Map): Promise {\n if (process && process.versions) {\n const versions = process.versions as ExtendedPlatformVersions;\n if (versions.bun) {\n map.set(\"Bun\", versions.bun);\n } else if (versions.deno) {\n map.set(\"Deno\", versions.deno);\n } else if (versions.node) {\n map.set(\"Node\", versions.node);\n }\n }\n\n map.set(\"OS\", `(${os.arch()}-${os.type()}-${os.release()})`);\n}\n", "// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nexport const SDK_VERSION: string = \"1.19.0\";\n\nexport const DEFAULT_RETRY_POLICY_COUNT = 3;\n", "// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { getHeaderName, setPlatformSpecificData } from \"./userAgentPlatform.js\";\nimport { SDK_VERSION } from \"../constants.js\";\n\nfunction getUserAgentString(telemetryInfo: Map): string {\n const parts: string[] = [];\n for (const [key, value] of telemetryInfo) {\n const token = value ? `${key}/${value}` : key;\n parts.push(token);\n }\n return parts.join(\" \");\n}\n\n/**\n * @internal\n */\nexport function getUserAgentHeaderName(): string {\n return getHeaderName();\n}\n\n/**\n * @internal\n */\nexport async function getUserAgentValue(prefix?: string): Promise {\n const runtimeInfo = new Map();\n runtimeInfo.set(\"core-rest-pipeline\", SDK_VERSION);\n await setPlatformSpecificData(runtimeInfo);\n const defaultAgent = getUserAgentString(runtimeInfo);\n const userAgentValue = prefix ? `${prefix} ${defaultAgent}` : defaultAgent;\n return userAgentValue;\n}\n", "// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { PipelineRequest, PipelineResponse, SendRequest } from \"../interfaces.js\";\nimport type { PipelinePolicy } from \"../pipeline.js\";\nimport { getUserAgentHeaderName, getUserAgentValue } from \"../util/userAgent.js\";\n\nconst UserAgentHeaderName = getUserAgentHeaderName();\n\n/**\n * The programmatic identifier of the userAgentPolicy.\n */\nexport const userAgentPolicyName = \"userAgentPolicy\";\n\n/**\n * Options for adding user agent details to outgoing requests.\n */\nexport interface UserAgentPolicyOptions {\n /**\n * String prefix to add to the user agent for outgoing requests.\n * Defaults to an empty string.\n */\n userAgentPrefix?: string;\n}\n\n/**\n * A policy that sets the User-Agent header (or equivalent) to reflect\n * the library version.\n * @param options - Options to customize the user agent value.\n */\nexport function userAgentPolicy(options: UserAgentPolicyOptions = {}): PipelinePolicy {\n const userAgentValue = getUserAgentValue(options.userAgentPrefix);\n return {\n name: userAgentPolicyName,\n async sendRequest(request: PipelineRequest, next: SendRequest): Promise {\n if (!request.headers.has(UserAgentHeaderName)) {\n request.headers.set(UserAgentHeaderName, await userAgentValue);\n }\n return next(request);\n },\n };\n}\n", "// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nexport function isNodeReadableStream(x: unknown): x is NodeJS.ReadableStream {\n return Boolean(x && typeof (x as NodeJS.ReadableStream)[\"pipe\"] === \"function\");\n}\n\nexport function isWebReadableStream(x: unknown): x is ReadableStream {\n return Boolean(\n x &&\n typeof (x as ReadableStream).getReader === \"function\" &&\n typeof (x as ReadableStream).tee === \"function\",\n );\n}\n\nexport function isReadableStream(x: unknown): x is ReadableStream | NodeJS.ReadableStream {\n return isNodeReadableStream(x) || isWebReadableStream(x);\n}\n\nexport function isBlob(x: unknown): x is Blob {\n return typeof (x as Blob).stream === \"function\";\n}\n", "// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { isNodeLike } from \"@azure/core-util\";\nimport { isNodeReadableStream } from \"./typeGuards.js\";\n\n/**\n * Options passed into createFile specifying metadata about the file.\n */\nexport interface CreateFileOptions {\n /**\n * The MIME type of the file.\n */\n type?: string;\n\n /**\n * Last modified time of the file as a UNIX timestamp.\n * This will default to the current date.\n */\n lastModified?: number;\n\n /**\n * relative path of this file when uploading a directory.\n */\n webkitRelativePath?: string;\n}\n\n/**\n * Extra options for createFile when a stream is being passed in.\n */\nexport interface CreateFileFromStreamOptions extends CreateFileOptions {\n /**\n * Size of the file represented by the stream in bytes.\n *\n * This will be used by the pipeline when calculating the Content-Length header\n * for the overall request.\n */\n size?: number;\n}\n\nconst unimplementedMethods = {\n arrayBuffer: () => {\n throw new Error(\"Not implemented\");\n },\n bytes: () => {\n throw new Error(\"Not implemented\");\n },\n slice: () => {\n throw new Error(\"Not implemented\");\n },\n text: () => {\n throw new Error(\"Not implemented\");\n },\n};\n\n/**\n * Private symbol used as key on objects created using createFile containing the\n * original source of the file object.\n *\n * This is used in Node to access the original Node stream without using Blob#stream, which\n * returns a web stream. This is done to avoid a couple of bugs to do with Blob#stream and\n * Readable#to/fromWeb in Node versions we support:\n * - https://github.com/nodejs/node/issues/42694 (fixed in Node 18.14)\n * - https://github.com/nodejs/node/issues/48916 (fixed in Node 20.6)\n *\n * Once these versions are no longer supported, we may be able to stop doing this.\n *\n * @internal\n */\nconst rawContent: unique symbol = Symbol(\"rawContent\");\n\n/**\n * Type signature of a blob-like object with a raw content property.\n */\ninterface RawContent {\n [rawContent](): Uint8Array | NodeJS.ReadableStream | ReadableStream;\n}\n\nfunction hasRawContent(x: unknown): x is RawContent {\n return typeof (x as RawContent)[rawContent] === \"function\";\n}\n\n/**\n * Extract the raw content from a given blob-like object. If the input was created using createFile\n * or createFileFromStream, the exact content passed into createFile/createFileFromStream will be used.\n * For true instances of Blob and File, returns the blob's content as a Web ReadableStream.\n *\n * @internal\n */\nexport function getRawContent(\n blob: Blob,\n): NodeJS.ReadableStream | ReadableStream | Uint8Array {\n if (hasRawContent(blob)) {\n return blob[rawContent]();\n } else {\n return blob.stream();\n }\n}\n\n/**\n * Create an object that implements the File interface. This object is intended to be\n * passed into RequestBodyType.formData, and is not guaranteed to work as expected in\n * other situations.\n *\n * Use this function to:\n * - Create a File object for use in RequestBodyType.formData in environments where the\n * global File object is unavailable.\n * - Create a File-like object from a readable stream without reading the stream into memory.\n *\n * @param stream - the content of the file as a callback returning a stream. When a File object made using createFile is\n * passed in a request's form data map, the stream will not be read into memory\n * and instead will be streamed when the request is made. In the event of a retry, the\n * stream needs to be read again, so this callback SHOULD return a fresh stream if possible.\n * @param name - the name of the file.\n * @param options - optional metadata about the file, e.g. file name, file size, MIME type.\n */\nexport function createFileFromStream(\n stream: () => ReadableStream | NodeJS.ReadableStream,\n name: string,\n options: CreateFileFromStreamOptions = {},\n): File {\n return {\n ...unimplementedMethods,\n type: options.type ?? \"\",\n lastModified: options.lastModified ?? new Date().getTime(),\n webkitRelativePath: options.webkitRelativePath ?? \"\",\n size: options.size ?? -1,\n name,\n stream: () => {\n const s = stream();\n if (isNodeReadableStream(s)) {\n throw new Error(\n \"Not supported: a Node stream was provided as input to createFileFromStream.\",\n );\n }\n\n return s;\n },\n [rawContent]: stream,\n } as File & RawContent;\n}\n\n/**\n * Create an object that implements the File interface. This object is intended to be\n * passed into RequestBodyType.formData, and is not guaranteed to work as expected in\n * other situations.\n *\n * Use this function create a File object for use in RequestBodyType.formData in environments where the global File object is unavailable.\n *\n * @param content - the content of the file as a Uint8Array in memory.\n * @param name - the name of the file.\n * @param options - optional metadata about the file, e.g. file name, file size, MIME type.\n */\nexport function createFile(\n content: Uint8Array,\n name: string,\n options: CreateFileOptions = {},\n): File {\n if (isNodeLike) {\n return {\n ...unimplementedMethods,\n type: options.type ?? \"\",\n lastModified: options.lastModified ?? new Date().getTime(),\n webkitRelativePath: options.webkitRelativePath ?? \"\",\n size: content.byteLength,\n name,\n arrayBuffer: async () => content.buffer,\n stream: () => new Blob([content]).stream(),\n [rawContent]: () => content,\n } as File & RawContent;\n } else {\n return new File([content], name, options);\n }\n}\n", "// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { Readable } from \"node:stream\";\nimport type { ReadableStream as AsyncIterableReadableStream } from \"node:stream/web\";\nimport { isBlob } from \"./typeGuards.js\";\nimport { getRawContent } from \"./file.js\";\n\nasync function* streamAsyncIterator(\n this: ReadableStream,\n): AsyncIterableIterator {\n const reader = this.getReader();\n try {\n while (true) {\n const { done, value } = await reader.read();\n if (done) {\n return;\n }\n\n yield value;\n }\n } finally {\n reader.releaseLock();\n }\n}\n\nfunction makeAsyncIterable(webStream: any): asserts webStream is AsyncIterableReadableStream {\n if (!webStream[Symbol.asyncIterator]) {\n webStream[Symbol.asyncIterator] = streamAsyncIterator.bind(webStream);\n }\n\n if (!webStream.values) {\n webStream.values = streamAsyncIterator.bind(webStream);\n }\n}\n\nfunction ensureNodeStream(\n stream: ReadableStream | NodeJS.ReadableStream,\n): NodeJS.ReadableStream {\n if (stream instanceof ReadableStream) {\n makeAsyncIterable(stream);\n return Readable.fromWeb(stream);\n } else {\n return stream;\n }\n}\n\nfunction toStream(\n source: ReadableStream | NodeJS.ReadableStream | Uint8Array | Blob,\n): NodeJS.ReadableStream {\n if (source instanceof Uint8Array) {\n return Readable.from(Buffer.from(source));\n } else if (isBlob(source)) {\n return toStream(getRawContent(source));\n } else {\n return ensureNodeStream(source);\n }\n}\n\n/**\n * Accepted binary data types for concat\n *\n * @internal\n */\nexport type ConcatSource = ReadableStream | NodeJS.ReadableStream | Uint8Array | Blob;\n\n/**\n * Utility function that concatenates a set of binary inputs into one combined output.\n *\n * @param sources - array of sources for the concatenation\n * @returns - in Node, a (() =\\> NodeJS.ReadableStream) which, when read, produces a concatenation of all the inputs.\n * In browser, returns a `Blob` representing all the concatenated inputs.\n *\n * @internal\n */\nexport async function concat(\n sources: (ConcatSource | (() => ConcatSource))[],\n): Promise<(() => NodeJS.ReadableStream) | Blob> {\n return function () {\n const streams = sources.map((x) => (typeof x === \"function\" ? x() : x)).map(toStream);\n\n return Readable.from(\n (async function* () {\n for (const stream of streams as NodeJS.ReadableStream[]) {\n for await (const chunk of stream) {\n yield chunk;\n }\n }\n })(),\n );\n };\n}\n", "// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { randomUUID, stringToUint8Array } from \"@azure/core-util\";\nimport type { BodyPart, HttpHeaders, PipelineRequest, PipelineResponse } from \"../interfaces.js\";\nimport type { PipelinePolicy } from \"../pipeline.js\";\nimport { concat } from \"../util/concat.js\";\nimport { isBlob } from \"../util/typeGuards.js\";\n\nfunction generateBoundary(): string {\n return `----AzSDKFormBoundary${randomUUID()}`;\n}\n\nfunction encodeHeaders(headers: HttpHeaders): string {\n let result = \"\";\n for (const [key, value] of headers) {\n result += `${key}: ${value}\\r\\n`;\n }\n return result;\n}\n\nfunction getLength(\n source:\n | (() => ReadableStream)\n | (() => NodeJS.ReadableStream)\n | Uint8Array\n | Blob\n | ReadableStream\n | NodeJS.ReadableStream,\n): number | undefined {\n if (source instanceof Uint8Array) {\n return source.byteLength;\n } else if (isBlob(source)) {\n // if was created using createFile then -1 means we have an unknown size\n return source.size === -1 ? undefined : source.size;\n } else {\n return undefined;\n }\n}\n\nfunction getTotalLength(\n sources: (\n | (() => ReadableStream)\n | (() => NodeJS.ReadableStream)\n | Uint8Array\n | Blob\n | ReadableStream\n | NodeJS.ReadableStream\n )[],\n): number | undefined {\n let total = 0;\n for (const source of sources) {\n const partLength = getLength(source);\n if (partLength === undefined) {\n return undefined;\n } else {\n total += partLength;\n }\n }\n return total;\n}\n\nasync function buildRequestBody(\n request: PipelineRequest,\n parts: BodyPart[],\n boundary: string,\n): Promise {\n const sources = [\n stringToUint8Array(`--${boundary}`, \"utf-8\"),\n ...parts.flatMap((part) => [\n stringToUint8Array(\"\\r\\n\", \"utf-8\"),\n stringToUint8Array(encodeHeaders(part.headers), \"utf-8\"),\n stringToUint8Array(\"\\r\\n\", \"utf-8\"),\n part.body,\n stringToUint8Array(`\\r\\n--${boundary}`, \"utf-8\"),\n ]),\n stringToUint8Array(\"--\\r\\n\\r\\n\", \"utf-8\"),\n ];\n\n const contentLength = getTotalLength(sources);\n if (contentLength) {\n request.headers.set(\"Content-Length\", contentLength);\n }\n\n request.body = await concat(sources);\n}\n\n/**\n * Name of multipart policy\n */\nexport const multipartPolicyName = \"multipartPolicy\";\n\nconst maxBoundaryLength = 70;\nconst validBoundaryCharacters = new Set(\n `abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789'()+,-./:=?`,\n);\n\nfunction assertValidBoundary(boundary: string): void {\n if (boundary.length > maxBoundaryLength) {\n throw new Error(`Multipart boundary \"${boundary}\" exceeds maximum length of 70 characters`);\n }\n\n if (Array.from(boundary).some((x) => !validBoundaryCharacters.has(x))) {\n throw new Error(`Multipart boundary \"${boundary}\" contains invalid characters`);\n }\n}\n\n/**\n * Pipeline policy for multipart requests\n */\nexport function multipartPolicy(): PipelinePolicy {\n return {\n name: multipartPolicyName,\n async sendRequest(request, next): Promise {\n if (!request.multipartBody) {\n return next(request);\n }\n\n if (request.body) {\n throw new Error(\"multipartBody and regular body cannot be set at the same time\");\n }\n\n let boundary = request.multipartBody.boundary;\n\n const contentTypeHeader = request.headers.get(\"Content-Type\") ?? \"multipart/mixed\";\n const parsedHeader = contentTypeHeader.match(/^(multipart\\/[^ ;]+)(?:; *boundary=(.+))?$/);\n if (!parsedHeader) {\n throw new Error(\n `Got multipart request body, but content-type header was not multipart: ${contentTypeHeader}`,\n );\n }\n\n const [, contentType, parsedBoundary] = parsedHeader;\n if (parsedBoundary && boundary && parsedBoundary !== boundary) {\n throw new Error(\n `Multipart boundary was specified as ${parsedBoundary} in the header, but got ${boundary} in the request body`,\n );\n }\n\n boundary ??= parsedBoundary;\n if (boundary) {\n assertValidBoundary(boundary);\n } else {\n boundary = generateBoundary();\n }\n request.headers.set(\"Content-Type\", `${contentType}; boundary=${boundary}`);\n await buildRequestBody(request, request.multipartBody.parts, boundary);\n\n request.multipartBody = undefined;\n\n return next(request);\n },\n };\n}\n", "// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { PipelineRequest, PipelineResponse, SendRequest } from \"../interfaces.js\";\nimport type { PipelinePolicy } from \"../pipeline.js\";\n\n/**\n * The programmatic identifier of the decompressResponsePolicy.\n */\nexport const decompressResponsePolicyName = \"decompressResponsePolicy\";\n\n/**\n * A policy to enable response decompression according to Accept-Encoding header\n * https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Accept-Encoding\n */\nexport function decompressResponsePolicy(): PipelinePolicy {\n return {\n name: decompressResponsePolicyName,\n async sendRequest(request: PipelineRequest, next: SendRequest): Promise {\n // HEAD requests have no body\n if (request.method !== \"HEAD\") {\n request.headers.set(\"Accept-Encoding\", \"gzip,deflate\");\n }\n return next(request);\n },\n };\n}\n", "// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\n/**\n * This error is thrown when an asynchronous operation has been aborted.\n * Check for this error by testing the `name` that the name property of the\n * error matches `\"AbortError\"`.\n *\n * @example\n * ```ts\n * const controller = new AbortController();\n * controller.abort();\n * try {\n * doAsyncWork(controller.signal)\n * } catch (e) {\n * if (e.name === 'AbortError') {\n * // handle abort error here.\n * }\n * }\n * ```\n */\nexport class AbortError extends Error {\n constructor(message?: string) {\n super(message);\n this.name = \"AbortError\";\n }\n}\n", "// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\ndeclare global {\n interface Event {}\n}\n\nexport { AbortError } from \"./AbortError.js\";\nexport { AbortSignalLike } from \"./AbortSignalLike.js\";\n", "// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { AbortError, type AbortSignalLike } from \"@azure/abort-controller\";\nimport type { PipelineResponse } from \"../interfaces.js\";\n\nconst StandardAbortMessage = \"The operation was aborted.\";\n\n/**\n * A wrapper for setTimeout that resolves a promise after delayInMs milliseconds.\n * @param delayInMs - The number of milliseconds to be delayed.\n * @param value - The value to be resolved with after a timeout of t milliseconds.\n * @param options - The options for delay - currently abort options\n * - abortSignal - The abortSignal associated with containing operation.\n * - abortErrorMsg - The abort error message associated with containing operation.\n * @returns Resolved promise\n */\nexport function delay(\n delayInMs: number,\n value?: T,\n options?: {\n abortSignal?: AbortSignalLike;\n abortErrorMsg?: string;\n },\n): Promise {\n return new Promise((resolve, reject) => {\n let timer: ReturnType | undefined = undefined;\n let onAborted: (() => void) | undefined = undefined;\n\n const rejectOnAbort = (): void => {\n return reject(\n new AbortError(options?.abortErrorMsg ? options?.abortErrorMsg : StandardAbortMessage),\n );\n };\n\n const removeListeners = (): void => {\n if (options?.abortSignal && onAborted) {\n options.abortSignal.removeEventListener(\"abort\", onAborted);\n }\n };\n\n onAborted = (): void => {\n if (timer) {\n clearTimeout(timer);\n }\n removeListeners();\n return rejectOnAbort();\n };\n\n if (options?.abortSignal && options.abortSignal.aborted) {\n return rejectOnAbort();\n }\n\n timer = setTimeout(() => {\n removeListeners();\n resolve(value);\n }, delayInMs);\n\n if (options?.abortSignal) {\n options.abortSignal.addEventListener(\"abort\", onAborted);\n }\n });\n}\n\n/**\n * @internal\n * @returns the parsed value or undefined if the parsed value is invalid.\n */\nexport function parseHeaderValueAsNumber(\n response: PipelineResponse,\n headerName: string,\n): number | undefined {\n const value = response.headers.get(headerName);\n if (!value) return;\n const valueAsNum = Number(value);\n if (Number.isNaN(valueAsNum)) return;\n return valueAsNum;\n}\n", "// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { PipelineResponse } from \"../index.js\";\nimport { parseHeaderValueAsNumber } from \"../util/helpers.js\";\nimport type { RetryStrategy } from \"./retryStrategy.js\";\n\n/**\n * The header that comes back from Azure services representing\n * the amount of time (minimum) to wait to retry (in seconds or timestamp after which we can retry).\n */\nconst RetryAfterHeader = \"Retry-After\";\n/**\n * The headers that come back from Azure services representing\n * the amount of time (minimum) to wait to retry.\n *\n * \"retry-after-ms\", \"x-ms-retry-after-ms\" : milliseconds\n * \"Retry-After\" : seconds or timestamp\n */\nconst AllRetryAfterHeaders: string[] = [\"retry-after-ms\", \"x-ms-retry-after-ms\", RetryAfterHeader];\n\n/**\n * A response is a throttling retry response if it has a throttling status code (429 or 503),\n * as long as one of the [ \"Retry-After\" or \"retry-after-ms\" or \"x-ms-retry-after-ms\" ] headers has a valid value.\n *\n * Returns the `retryAfterInMs` value if the response is a throttling retry response.\n * If not throttling retry response, returns `undefined`.\n *\n * @internal\n */\nfunction getRetryAfterInMs(response?: PipelineResponse): number | undefined {\n if (!(response && [429, 503].includes(response.status))) return undefined;\n try {\n // Headers: \"retry-after-ms\", \"x-ms-retry-after-ms\", \"Retry-After\"\n for (const header of AllRetryAfterHeaders) {\n const retryAfterValue = parseHeaderValueAsNumber(response, header);\n if (retryAfterValue === 0 || retryAfterValue) {\n // \"Retry-After\" header ==> seconds\n // \"retry-after-ms\", \"x-ms-retry-after-ms\" headers ==> milli-seconds\n const multiplyingFactor = header === RetryAfterHeader ? 1000 : 1;\n return retryAfterValue * multiplyingFactor; // in milli-seconds\n }\n }\n\n // RetryAfterHeader (\"Retry-After\") has a special case where it might be formatted as a date instead of a number of seconds\n const retryAfterHeader = response.headers.get(RetryAfterHeader);\n if (!retryAfterHeader) return;\n\n const date = Date.parse(retryAfterHeader);\n const diff = date - Date.now();\n // negative diff would mean a date in the past, so retry asap with 0 milliseconds\n return Number.isFinite(diff) ? Math.max(0, diff) : undefined;\n } catch {\n return undefined;\n }\n}\n\n/**\n * A response is a retry response if it has a throttling status code (429 or 503),\n * as long as one of the [ \"Retry-After\" or \"retry-after-ms\" or \"x-ms-retry-after-ms\" ] headers has a valid value.\n */\nexport function isThrottlingRetryResponse(response?: PipelineResponse): boolean {\n return Number.isFinite(getRetryAfterInMs(response));\n}\n\nexport function throttlingRetryStrategy(): RetryStrategy {\n return {\n name: \"throttlingRetryStrategy\",\n retry({ response }) {\n const retryAfterInMs = getRetryAfterInMs(response);\n if (!Number.isFinite(retryAfterInMs)) {\n return { skipStrategy: true };\n }\n return {\n retryAfterInMs,\n };\n },\n };\n}\n", "// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { PipelineResponse } from \"../interfaces.js\";\nimport type { RestError } from \"../restError.js\";\nimport { calculateRetryDelay } from \"@azure/core-util\";\nimport type { RetryStrategy } from \"./retryStrategy.js\";\nimport { isThrottlingRetryResponse } from \"./throttlingRetryStrategy.js\";\n\n// intervals are in milliseconds\nconst DEFAULT_CLIENT_RETRY_INTERVAL = 1000;\nconst DEFAULT_CLIENT_MAX_RETRY_INTERVAL = 1000 * 64;\n\n/**\n * A retry strategy that retries with an exponentially increasing delay in these two cases:\n * - When there are errors in the underlying transport layer (e.g. DNS lookup failures).\n * - Or otherwise if the outgoing request fails (408, greater or equal than 500, except for 501 and 505).\n */\nexport function exponentialRetryStrategy(\n options: {\n /**\n * The amount of delay in milliseconds between retry attempts. Defaults to 1000\n * (1 second.) The delay increases exponentially with each retry up to a maximum\n * specified by maxRetryDelayInMs.\n */\n retryDelayInMs?: number;\n\n /**\n * The maximum delay in milliseconds allowed before retrying an operation. Defaults\n * to 64000 (64 seconds).\n */\n maxRetryDelayInMs?: number;\n\n /**\n * If true it won't retry if it received a system error.\n */\n ignoreSystemErrors?: boolean;\n\n /**\n * If true it won't retry if it received a non-fatal HTTP status code.\n */\n ignoreHttpStatusCodes?: boolean;\n } = {},\n): RetryStrategy {\n const retryInterval = options.retryDelayInMs ?? DEFAULT_CLIENT_RETRY_INTERVAL;\n const maxRetryInterval = options.maxRetryDelayInMs ?? DEFAULT_CLIENT_MAX_RETRY_INTERVAL;\n\n return {\n name: \"exponentialRetryStrategy\",\n retry({ retryCount, response, responseError }) {\n const matchedSystemError = isSystemError(responseError);\n const ignoreSystemErrors = matchedSystemError && options.ignoreSystemErrors;\n\n const isExponential = isExponentialRetryResponse(response);\n const ignoreExponentialResponse = isExponential && options.ignoreHttpStatusCodes;\n const unknownResponse = response && (isThrottlingRetryResponse(response) || !isExponential);\n\n if (unknownResponse || ignoreExponentialResponse || ignoreSystemErrors) {\n return { skipStrategy: true };\n }\n\n if (responseError && !matchedSystemError && !isExponential) {\n return { errorToThrow: responseError };\n }\n\n return calculateRetryDelay(retryCount, {\n retryDelayInMs: retryInterval,\n maxRetryDelayInMs: maxRetryInterval,\n });\n },\n };\n}\n\n/**\n * A response is a retry response if it has status codes:\n * - 408, or\n * - Greater or equal than 500, except for 501 and 505.\n */\nexport function isExponentialRetryResponse(response?: PipelineResponse): boolean {\n return Boolean(\n response &&\n response.status !== undefined &&\n (response.status >= 500 || response.status === 408) &&\n response.status !== 501 &&\n response.status !== 505,\n );\n}\n\n/**\n * Determines whether an error from a pipeline response was triggered in the network layer.\n */\nexport function isSystemError(err?: RestError): boolean {\n if (!err) {\n return false;\n }\n return (\n err.code === \"ETIMEDOUT\" ||\n err.code === \"ESOCKETTIMEDOUT\" ||\n err.code === \"ECONNREFUSED\" ||\n err.code === \"ECONNRESET\" ||\n err.code === \"ENOENT\" ||\n err.code === \"ENOTFOUND\"\n );\n}\n", "// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { PipelineRequest, PipelineResponse, SendRequest } from \"../interfaces.js\";\nimport type { PipelinePolicy } from \"../pipeline.js\";\nimport { delay } from \"../util/helpers.js\";\nimport { type AzureLogger, createClientLogger } from \"@azure/logger\";\nimport type { RetryStrategy } from \"../retryStrategies/retryStrategy.js\";\nimport type { RestError } from \"../restError.js\";\nimport { AbortError } from \"@azure/abort-controller\";\nimport { DEFAULT_RETRY_POLICY_COUNT } from \"../constants.js\";\n\nconst retryPolicyLogger = createClientLogger(\"core-rest-pipeline retryPolicy\");\n\n/**\n * The programmatic identifier of the retryPolicy.\n */\nconst retryPolicyName = \"retryPolicy\";\n\n/**\n * Options to the {@link retryPolicy}\n */\nexport interface RetryPolicyOptions {\n /**\n * Maximum number of retries. If not specified, it will limit to 3 retries.\n */\n maxRetries?: number;\n /**\n * Logger. If it's not provided, a default logger is used.\n */\n logger?: AzureLogger;\n}\n\n/**\n * retryPolicy is a generic policy to enable retrying requests when certain conditions are met\n */\nexport function retryPolicy(\n strategies: RetryStrategy[],\n options: RetryPolicyOptions = { maxRetries: DEFAULT_RETRY_POLICY_COUNT },\n): PipelinePolicy {\n const logger = options.logger || retryPolicyLogger;\n return {\n name: retryPolicyName,\n async sendRequest(request: PipelineRequest, next: SendRequest): Promise {\n let response: PipelineResponse | undefined;\n let responseError: RestError | undefined;\n let retryCount = -1;\n\n retryRequest: while (true) {\n retryCount += 1;\n response = undefined;\n responseError = undefined;\n\n try {\n logger.info(`Retry ${retryCount}: Attempting to send request`, request.requestId);\n response = await next(request);\n logger.info(`Retry ${retryCount}: Received a response from request`, request.requestId);\n } catch (e: any) {\n logger.error(`Retry ${retryCount}: Received an error from request`, request.requestId);\n\n // RestErrors are valid targets for the retry strategies.\n // If none of the retry strategies can work with them, they will be thrown later in this policy.\n // If the received error is not a RestError, it is immediately thrown.\n responseError = e as RestError;\n if (!e || responseError.name !== \"RestError\") {\n throw e;\n }\n\n response = responseError.response;\n }\n\n if (request.abortSignal?.aborted) {\n logger.error(`Retry ${retryCount}: Request aborted.`);\n const abortError = new AbortError();\n throw abortError;\n }\n\n if (retryCount >= (options.maxRetries ?? DEFAULT_RETRY_POLICY_COUNT)) {\n logger.info(\n `Retry ${retryCount}: Maximum retries reached. Returning the last received response, or throwing the last received error.`,\n );\n if (responseError) {\n throw responseError;\n } else if (response) {\n return response;\n } else {\n throw new Error(\"Maximum retries reached with no response or error to throw\");\n }\n }\n\n logger.info(`Retry ${retryCount}: Processing ${strategies.length} retry strategies.`);\n\n strategiesLoop: for (const strategy of strategies) {\n const strategyLogger = strategy.logger || retryPolicyLogger;\n strategyLogger.info(`Retry ${retryCount}: Processing retry strategy ${strategy.name}.`);\n\n const modifiers = strategy.retry({\n retryCount,\n response,\n responseError,\n });\n\n if (modifiers.skipStrategy) {\n strategyLogger.info(`Retry ${retryCount}: Skipped.`);\n continue strategiesLoop;\n }\n\n const { errorToThrow, retryAfterInMs, redirectTo } = modifiers;\n\n if (errorToThrow) {\n strategyLogger.error(\n `Retry ${retryCount}: Retry strategy ${strategy.name} throws error:`,\n errorToThrow,\n );\n throw errorToThrow;\n }\n\n if (retryAfterInMs || retryAfterInMs === 0) {\n strategyLogger.info(\n `Retry ${retryCount}: Retry strategy ${strategy.name} retries after ${retryAfterInMs}`,\n );\n await delay(retryAfterInMs, undefined, { abortSignal: request.abortSignal });\n continue retryRequest;\n }\n\n if (redirectTo) {\n strategyLogger.info(\n `Retry ${retryCount}: Retry strategy ${strategy.name} redirects to ${redirectTo}`,\n );\n request.url = redirectTo;\n continue retryRequest;\n }\n }\n\n if (responseError) {\n logger.info(\n `None of the retry strategies could work with the received error. Throwing it.`,\n );\n throw responseError;\n }\n if (response) {\n logger.info(\n `None of the retry strategies could work with the received response. Returning it.`,\n );\n return response;\n }\n\n // If all the retries skip and there's no response,\n // we're still in the retry loop, so a new request will be sent\n // until `maxRetries` is reached.\n }\n },\n };\n}\n", "// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { PipelineRetryOptions } from \"../interfaces.js\";\nimport type { PipelinePolicy } from \"../pipeline.js\";\nimport { exponentialRetryStrategy } from \"../retryStrategies/exponentialRetryStrategy.js\";\nimport { throttlingRetryStrategy } from \"../retryStrategies/throttlingRetryStrategy.js\";\nimport { retryPolicy } from \"./retryPolicy.js\";\nimport { DEFAULT_RETRY_POLICY_COUNT } from \"../constants.js\";\n\n/**\n * Name of the {@link defaultRetryPolicy}\n */\nexport const defaultRetryPolicyName = \"defaultRetryPolicy\";\n\n/**\n * Options that control how to retry failed requests.\n */\nexport interface DefaultRetryPolicyOptions extends PipelineRetryOptions {}\n\n/**\n * A policy that retries according to three strategies:\n * - When the server sends a 429 response with a Retry-After header.\n * - When there are errors in the underlying transport layer (e.g. DNS lookup failures).\n * - Or otherwise if the outgoing request fails, it will retry with an exponentially increasing delay.\n */\nexport function defaultRetryPolicy(options: DefaultRetryPolicyOptions = {}): PipelinePolicy {\n return {\n name: defaultRetryPolicyName,\n sendRequest: retryPolicy([throttlingRetryStrategy(), exponentialRetryStrategy(options)], {\n maxRetries: options.maxRetries ?? DEFAULT_RETRY_POLICY_COUNT,\n }).sendRequest,\n };\n}\n", "// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { HttpHeaders, RawHttpHeaders, RawHttpHeadersInput } from \"./interfaces.js\";\n\ninterface HeaderEntry {\n name: string;\n value: string;\n}\n\nfunction normalizeName(name: string): string {\n return name.toLowerCase();\n}\n\nfunction* headerIterator(map: Map): IterableIterator<[string, string]> {\n for (const entry of map.values()) {\n yield [entry.name, entry.value];\n }\n}\n\nclass HttpHeadersImpl implements HttpHeaders {\n private readonly _headersMap: Map;\n\n constructor(rawHeaders?: RawHttpHeaders | RawHttpHeadersInput) {\n this._headersMap = new Map();\n if (rawHeaders) {\n for (const headerName of Object.keys(rawHeaders)) {\n this.set(headerName, rawHeaders[headerName]);\n }\n }\n }\n\n /**\n * Set a header in this collection with the provided name and value. The name is\n * case-insensitive.\n * @param name - The name of the header to set. This value is case-insensitive.\n * @param value - The value of the header to set.\n */\n public set(name: string, value: string | number | boolean): void {\n this._headersMap.set(normalizeName(name), { name, value: String(value).trim() });\n }\n\n /**\n * Get the header value for the provided header name, or undefined if no header exists in this\n * collection with the provided name.\n * @param name - The name of the header. This value is case-insensitive.\n */\n public get(name: string): string | undefined {\n return this._headersMap.get(normalizeName(name))?.value;\n }\n\n /**\n * Get whether or not this header collection contains a header entry for the provided header name.\n * @param name - The name of the header to set. This value is case-insensitive.\n */\n public has(name: string): boolean {\n return this._headersMap.has(normalizeName(name));\n }\n\n /**\n * Remove the header with the provided headerName.\n * @param name - The name of the header to remove.\n */\n public delete(name: string): void {\n this._headersMap.delete(normalizeName(name));\n }\n\n /**\n * Get the JSON object representation of this HTTP header collection.\n */\n public toJSON(options: { preserveCase?: boolean } = {}): RawHttpHeaders {\n const result: RawHttpHeaders = {};\n if (options.preserveCase) {\n for (const entry of this._headersMap.values()) {\n result[entry.name] = entry.value;\n }\n } else {\n for (const [normalizedName, entry] of this._headersMap) {\n result[normalizedName] = entry.value;\n }\n }\n\n return result;\n }\n\n /**\n * Get the string representation of this HTTP header collection.\n */\n public toString(): string {\n return JSON.stringify(this.toJSON({ preserveCase: true }));\n }\n\n /**\n * Iterate over tuples of header [name, value] pairs.\n */\n [Symbol.iterator](): Iterator<[string, string]> {\n return headerIterator(this._headersMap);\n }\n}\n\n/**\n * Creates an object that satisfies the `HttpHeaders` interface.\n * @param rawHeaders - A simple object representing initial headers\n */\nexport function createHttpHeaders(rawHeaders?: RawHttpHeadersInput): HttpHeaders {\n return new HttpHeadersImpl(rawHeaders);\n}\n", "// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { isNodeLike, stringToUint8Array } from \"@azure/core-util\";\nimport { createHttpHeaders } from \"../httpHeaders.js\";\nimport type {\n BodyPart,\n FormDataMap,\n FormDataValue,\n PipelineRequest,\n PipelineResponse,\n SendRequest,\n} from \"../interfaces.js\";\nimport type { PipelinePolicy } from \"../pipeline.js\";\n\n/**\n * The programmatic identifier of the formDataPolicy.\n */\nexport const formDataPolicyName = \"formDataPolicy\";\n\nfunction formDataToFormDataMap(formData: FormData): FormDataMap {\n const formDataMap: FormDataMap = {};\n for (const [key, value] of formData.entries()) {\n formDataMap[key] ??= [];\n (formDataMap[key] as FormDataValue[]).push(value);\n }\n return formDataMap;\n}\n\n/**\n * A policy that encodes FormData on the request into the body.\n */\nexport function formDataPolicy(): PipelinePolicy {\n return {\n name: formDataPolicyName,\n async sendRequest(request: PipelineRequest, next: SendRequest): Promise {\n if (isNodeLike && typeof FormData !== \"undefined\" && request.body instanceof FormData) {\n request.formData = formDataToFormDataMap(request.body);\n request.body = undefined;\n }\n\n if (request.formData) {\n const contentType = request.headers.get(\"Content-Type\");\n if (contentType && contentType.indexOf(\"application/x-www-form-urlencoded\") !== -1) {\n request.body = wwwFormUrlEncode(request.formData);\n } else {\n await prepareFormData(request.formData, request);\n }\n\n request.formData = undefined;\n }\n return next(request);\n },\n };\n}\n\nfunction wwwFormUrlEncode(formData: FormDataMap): string {\n const urlSearchParams = new URLSearchParams();\n for (const [key, value] of Object.entries(formData)) {\n if (Array.isArray(value)) {\n for (const subValue of value) {\n urlSearchParams.append(key, subValue.toString());\n }\n } else {\n urlSearchParams.append(key, value.toString());\n }\n }\n return urlSearchParams.toString();\n}\n\nasync function prepareFormData(formData: FormDataMap, request: PipelineRequest): Promise {\n // validate content type (multipart/form-data)\n const contentType = request.headers.get(\"Content-Type\");\n if (contentType && !contentType.startsWith(\"multipart/form-data\")) {\n // content type is specified and is not multipart/form-data. Exit.\n return;\n }\n\n request.headers.set(\"Content-Type\", contentType ?? \"multipart/form-data\");\n\n // set body to MultipartRequestBody using content from FormDataMap\n const parts: BodyPart[] = [];\n\n for (const [fieldName, values] of Object.entries(formData)) {\n for (const value of Array.isArray(values) ? values : [values]) {\n if (typeof value === \"string\") {\n parts.push({\n headers: createHttpHeaders({\n \"Content-Disposition\": `form-data; name=\"${fieldName}\"`,\n }),\n body: stringToUint8Array(value, \"utf-8\"),\n });\n } else if (value === undefined || value === null || typeof value !== \"object\") {\n throw new Error(\n `Unexpected value for key ${fieldName}: ${value}. Value should be serialized to string first.`,\n );\n } else {\n // using || instead of ?? here since if value.name is empty we should create a file name\n const fileName = (value as File).name || \"blob\";\n const headers = createHttpHeaders();\n headers.set(\n \"Content-Disposition\",\n `form-data; name=\"${fieldName}\"; filename=\"${fileName}\"`,\n );\n\n // again, || is used since an empty value.type means the content type is unset\n headers.set(\"Content-Type\", value.type || \"application/octet-stream\");\n\n parts.push({\n headers,\n body: value,\n });\n }\n }\n }\n request.multipartBody = { parts };\n}\n", "// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type * as http from \"http\";\nimport type * as https from \"https\";\nimport { HttpsProxyAgent } from \"https-proxy-agent\";\nimport { HttpProxyAgent } from \"http-proxy-agent\";\nimport type {\n PipelineRequest,\n PipelineResponse,\n ProxySettings,\n SendRequest,\n} from \"../interfaces.js\";\nimport type { PipelinePolicy } from \"../pipeline.js\";\nimport { logger } from \"../log.js\";\n\nconst HTTPS_PROXY = \"HTTPS_PROXY\";\nconst HTTP_PROXY = \"HTTP_PROXY\";\nconst ALL_PROXY = \"ALL_PROXY\";\nconst NO_PROXY = \"NO_PROXY\";\n\n/**\n * The programmatic identifier of the proxyPolicy.\n */\nexport const proxyPolicyName = \"proxyPolicy\";\n\n/**\n * Stores the patterns specified in NO_PROXY environment variable.\n * @internal\n */\nexport const globalNoProxyList: string[] = [];\nlet noProxyListLoaded: boolean = false;\n\n/** A cache of whether a host should bypass the proxy. */\nconst globalBypassedMap: Map = new Map();\n\nfunction getEnvironmentValue(name: string): string | undefined {\n if (process.env[name]) {\n return process.env[name];\n } else if (process.env[name.toLowerCase()]) {\n return process.env[name.toLowerCase()];\n }\n return undefined;\n}\n\nfunction loadEnvironmentProxyValue(): string | undefined {\n if (!process) {\n return undefined;\n }\n\n const httpsProxy = getEnvironmentValue(HTTPS_PROXY);\n const allProxy = getEnvironmentValue(ALL_PROXY);\n const httpProxy = getEnvironmentValue(HTTP_PROXY);\n\n return httpsProxy || allProxy || httpProxy;\n}\n\n/**\n * Check whether the host of a given `uri` matches any pattern in the no proxy list.\n * If there's a match, any request sent to the same host shouldn't have the proxy settings set.\n * This implementation is a port of https://github.com/Azure/azure-sdk-for-net/blob/8cca811371159e527159c7eb65602477898683e2/sdk/core/Azure.Core/src/Pipeline/Internal/HttpEnvironmentProxy.cs#L210\n */\nfunction isBypassed(\n uri: string,\n noProxyList: string[],\n bypassedMap?: Map,\n): boolean | undefined {\n if (noProxyList.length === 0) {\n return false;\n }\n const host = new URL(uri).hostname;\n if (bypassedMap?.has(host)) {\n return bypassedMap.get(host);\n }\n let isBypassedFlag = false;\n for (const pattern of noProxyList) {\n if (pattern[0] === \".\") {\n // This should match either domain it self or any subdomain or host\n // .foo.com will match foo.com it self or *.foo.com\n if (host.endsWith(pattern)) {\n isBypassedFlag = true;\n } else {\n if (host.length === pattern.length - 1 && host === pattern.slice(1)) {\n isBypassedFlag = true;\n }\n }\n } else {\n if (host === pattern) {\n isBypassedFlag = true;\n }\n }\n }\n bypassedMap?.set(host, isBypassedFlag);\n return isBypassedFlag;\n}\n\nexport function loadNoProxy(): string[] {\n const noProxy = getEnvironmentValue(NO_PROXY);\n noProxyListLoaded = true;\n if (noProxy) {\n return noProxy\n .split(\",\")\n .map((item) => item.trim())\n .filter((item) => item.length);\n }\n\n return [];\n}\n\n/**\n * This method converts a proxy url into `ProxySettings` for use with ProxyPolicy.\n * If no argument is given, it attempts to parse a proxy URL from the environment\n * variables `HTTPS_PROXY` or `HTTP_PROXY`.\n * @param proxyUrl - The url of the proxy to use. May contain authentication information.\n * @deprecated - Internally this method is no longer necessary when setting proxy information.\n */\nexport function getDefaultProxySettings(proxyUrl?: string): ProxySettings | undefined {\n if (!proxyUrl) {\n proxyUrl = loadEnvironmentProxyValue();\n if (!proxyUrl) {\n return undefined;\n }\n }\n\n const parsedUrl = new URL(proxyUrl);\n const schema = parsedUrl.protocol ? parsedUrl.protocol + \"//\" : \"\";\n return {\n host: schema + parsedUrl.hostname,\n port: Number.parseInt(parsedUrl.port || \"80\"),\n username: parsedUrl.username,\n password: parsedUrl.password,\n };\n}\n\n/**\n * This method attempts to parse a proxy URL from the environment\n * variables `HTTPS_PROXY` or `HTTP_PROXY`.\n */\nfunction getDefaultProxySettingsInternal(): URL | undefined {\n const envProxy = loadEnvironmentProxyValue();\n return envProxy ? new URL(envProxy) : undefined;\n}\n\nfunction getUrlFromProxySettings(settings: ProxySettings): URL {\n let parsedProxyUrl: URL;\n try {\n parsedProxyUrl = new URL(settings.host);\n } catch {\n throw new Error(\n `Expecting a valid host string in proxy settings, but found \"${settings.host}\".`,\n );\n }\n\n parsedProxyUrl.port = String(settings.port);\n if (settings.username) {\n parsedProxyUrl.username = settings.username;\n }\n if (settings.password) {\n parsedProxyUrl.password = settings.password;\n }\n\n return parsedProxyUrl;\n}\n\nfunction setProxyAgentOnRequest(\n request: PipelineRequest,\n cachedAgents: CachedAgents,\n proxyUrl: URL,\n): void {\n // Custom Agent should take precedence so if one is present\n // we should skip to avoid overwriting it.\n if (request.agent) {\n return;\n }\n\n const url = new URL(request.url);\n\n const isInsecure = url.protocol !== \"https:\";\n\n if (request.tlsSettings) {\n logger.warning(\n \"TLS settings are not supported in combination with custom Proxy, certificates provided to the client will be ignored.\",\n );\n }\n\n const headers = request.headers.toJSON();\n\n if (isInsecure) {\n if (!cachedAgents.httpProxyAgent) {\n cachedAgents.httpProxyAgent = new HttpProxyAgent(proxyUrl, { headers });\n }\n request.agent = cachedAgents.httpProxyAgent;\n } else {\n if (!cachedAgents.httpsProxyAgent) {\n cachedAgents.httpsProxyAgent = new HttpsProxyAgent(proxyUrl, { headers });\n }\n request.agent = cachedAgents.httpsProxyAgent;\n }\n}\n\ninterface CachedAgents {\n httpsProxyAgent?: https.Agent;\n httpProxyAgent?: http.Agent;\n}\n\n/**\n * A policy that allows one to apply proxy settings to all requests.\n * If not passed static settings, they will be retrieved from the HTTPS_PROXY\n * or HTTP_PROXY environment variables.\n * @param proxySettings - ProxySettings to use on each request.\n * @param options - additional settings, for example, custom NO_PROXY patterns\n */\nexport function proxyPolicy(\n proxySettings?: ProxySettings,\n options?: {\n /** a list of patterns to override those loaded from NO_PROXY environment variable. */\n customNoProxyList?: string[];\n },\n): PipelinePolicy {\n if (!noProxyListLoaded) {\n globalNoProxyList.push(...loadNoProxy());\n }\n\n const defaultProxy = proxySettings\n ? getUrlFromProxySettings(proxySettings)\n : getDefaultProxySettingsInternal();\n\n const cachedAgents: CachedAgents = {};\n\n return {\n name: proxyPolicyName,\n async sendRequest(request: PipelineRequest, next: SendRequest): Promise {\n if (\n !request.proxySettings &&\n defaultProxy &&\n !isBypassed(\n request.url,\n options?.customNoProxyList ?? globalNoProxyList,\n options?.customNoProxyList ? undefined : globalBypassedMap,\n )\n ) {\n setProxyAgentOnRequest(request, cachedAgents, defaultProxy);\n } else if (request.proxySettings) {\n setProxyAgentOnRequest(\n request,\n cachedAgents,\n getUrlFromProxySettings(request.proxySettings),\n );\n }\n return next(request);\n },\n };\n}\n", "// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { PipelineRequest, PipelineResponse, SendRequest } from \"../interfaces.js\";\nimport type { PipelinePolicy } from \"../pipeline.js\";\n\n/**\n * The programmatic identifier of the setClientRequestIdPolicy.\n */\nexport const setClientRequestIdPolicyName = \"setClientRequestIdPolicy\";\n\n/**\n * Each PipelineRequest gets a unique id upon creation.\n * This policy passes that unique id along via an HTTP header to enable better\n * telemetry and tracing.\n * @param requestIdHeaderName - The name of the header to pass the request ID to.\n */\nexport function setClientRequestIdPolicy(\n requestIdHeaderName = \"x-ms-client-request-id\",\n): PipelinePolicy {\n return {\n name: setClientRequestIdPolicyName,\n async sendRequest(request: PipelineRequest, next: SendRequest): Promise {\n if (!request.headers.has(requestIdHeaderName)) {\n request.headers.set(requestIdHeaderName, request.requestId);\n }\n return next(request);\n },\n };\n}\n", "// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { PipelinePolicy } from \"../pipeline.js\";\nimport type { Agent } from \"../interfaces.js\";\n\n/**\n * Name of the Agent Policy\n */\nexport const agentPolicyName = \"agentPolicy\";\n\n/**\n * Gets a pipeline policy that sets http.agent\n */\nexport function agentPolicy(agent?: Agent): PipelinePolicy {\n return {\n name: agentPolicyName,\n sendRequest: async (req, next) => {\n // Users may define an agent on the request, honor it over the client level one\n if (!req.agent) {\n req.agent = agent;\n }\n return next(req);\n },\n };\n}\n", "// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { PipelinePolicy } from \"../pipeline.js\";\nimport type { TlsSettings } from \"../interfaces.js\";\n\n/**\n * Name of the TLS Policy\n */\nexport const tlsPolicyName = \"tlsPolicy\";\n\n/**\n * Gets a pipeline policy that adds the client certificate to the HttpClient agent for authentication.\n */\nexport function tlsPolicy(tlsSettings?: TlsSettings): PipelinePolicy {\n return {\n name: tlsPolicyName,\n sendRequest: async (req, next) => {\n // Users may define a request tlsSettings, honor those over the client level one\n if (!req.tlsSettings) {\n req.tlsSettings = tlsSettings;\n }\n return next(req);\n },\n };\n}\n", "// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport { TracingContext, TracingSpan } from \"./interfaces.js\";\n\n/** @internal */\nexport const knownContextKeys = {\n span: Symbol.for(\"@azure/core-tracing span\"),\n namespace: Symbol.for(\"@azure/core-tracing namespace\"),\n};\n\n/**\n * Creates a new {@link TracingContext} with the given options.\n * @param options - A set of known keys that may be set on the context.\n * @returns A new {@link TracingContext} with the given options.\n *\n * @internal\n */\nexport function createTracingContext(options: CreateTracingContextOptions = {}): TracingContext {\n let context: TracingContext = new TracingContextImpl(options.parentContext);\n if (options.span) {\n context = context.setValue(knownContextKeys.span, options.span);\n }\n if (options.namespace) {\n context = context.setValue(knownContextKeys.namespace, options.namespace);\n }\n return context;\n}\n\n/** @internal */\nexport class TracingContextImpl implements TracingContext {\n private _contextMap: Map;\n constructor(initialContext?: TracingContext) {\n this._contextMap =\n initialContext instanceof TracingContextImpl\n ? new Map(initialContext._contextMap)\n : new Map();\n }\n\n setValue(key: symbol, value: unknown): TracingContext {\n const newContext = new TracingContextImpl(this);\n newContext._contextMap.set(key, value);\n return newContext;\n }\n\n getValue(key: symbol): unknown {\n return this._contextMap.get(key);\n }\n\n deleteValue(key: symbol): TracingContext {\n const newContext = new TracingContextImpl(this);\n newContext._contextMap.delete(key);\n return newContext;\n }\n}\n\n/**\n * Represents a set of items that can be set when creating a new {@link TracingContext}.\n */\nexport interface CreateTracingContextOptions {\n /** The {@link parentContext} - the newly created context will contain all the values of the parent context unless overridden. */\n parentContext?: TracingContext;\n /** An initial span to set on the context. */\n span?: TracingSpan;\n /** The namespace to set on any child spans. */\n namespace?: string;\n}\n", "// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport {\n Instrumenter,\n InstrumenterSpanOptions,\n TracingContext,\n TracingSpan,\n} from \"./interfaces.js\";\n\nimport { createTracingContext } from \"./tracingContext.js\";\nimport { state } from \"./state.js\";\n\nexport function createDefaultTracingSpan(): TracingSpan {\n return {\n end: () => {\n // noop\n },\n isRecording: () => false,\n recordException: () => {\n // noop\n },\n setAttribute: () => {\n // noop\n },\n setStatus: () => {\n // noop\n },\n };\n}\n\nexport function createDefaultInstrumenter(): Instrumenter {\n return {\n createRequestHeaders: (): Record => {\n return {};\n },\n parseTraceparentHeader: (): TracingContext | undefined => {\n return undefined;\n },\n startSpan: (\n _name: string,\n spanOptions: InstrumenterSpanOptions,\n ): { span: TracingSpan; tracingContext: TracingContext } => {\n return {\n span: createDefaultTracingSpan(),\n tracingContext: createTracingContext({ parentContext: spanOptions.tracingContext }),\n };\n },\n withContext<\n CallbackArgs extends unknown[],\n Callback extends (...args: CallbackArgs) => ReturnType,\n >(\n _context: TracingContext,\n callback: Callback,\n ...callbackArgs: CallbackArgs\n ): ReturnType {\n return callback(...callbackArgs);\n },\n };\n}\n\n/**\n * Extends the Azure SDK with support for a given instrumenter implementation.\n *\n * @param instrumenter - The instrumenter implementation to use.\n */\nexport function useInstrumenter(instrumenter: Instrumenter): void {\n state.instrumenterImplementation = instrumenter;\n}\n\n/**\n * Gets the currently set instrumenter, a No-Op instrumenter by default.\n *\n * @returns The currently set instrumenter\n */\nexport function getInstrumenter(): Instrumenter {\n if (!state.instrumenterImplementation) {\n state.instrumenterImplementation = createDefaultInstrumenter();\n }\n return state.instrumenterImplementation;\n}\n", "// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport {\n OperationTracingOptions,\n OptionsWithTracingContext,\n Resolved,\n TracingClient,\n TracingClientOptions,\n TracingContext,\n TracingSpan,\n TracingSpanOptions,\n} from \"./interfaces.js\";\nimport { getInstrumenter } from \"./instrumenter.js\";\nimport { knownContextKeys } from \"./tracingContext.js\";\n\n/**\n * Creates a new tracing client.\n *\n * @param options - Options used to configure the tracing client.\n * @returns - An instance of {@link TracingClient}.\n */\nexport function createTracingClient(options: TracingClientOptions): TracingClient {\n const { namespace, packageName, packageVersion } = options;\n\n function startSpan(\n name: string,\n operationOptions?: Options,\n spanOptions?: TracingSpanOptions,\n ): {\n span: TracingSpan;\n updatedOptions: OptionsWithTracingContext;\n } {\n const startSpanResult = getInstrumenter().startSpan(name, {\n ...spanOptions,\n packageName: packageName,\n packageVersion: packageVersion,\n tracingContext: operationOptions?.tracingOptions?.tracingContext,\n });\n let tracingContext = startSpanResult.tracingContext;\n const span = startSpanResult.span;\n if (!tracingContext.getValue(knownContextKeys.namespace)) {\n tracingContext = tracingContext.setValue(knownContextKeys.namespace, namespace);\n }\n span.setAttribute(\"az.namespace\", tracingContext.getValue(knownContextKeys.namespace));\n const updatedOptions: OptionsWithTracingContext = Object.assign({}, operationOptions, {\n tracingOptions: { ...operationOptions?.tracingOptions, tracingContext },\n });\n\n return {\n span,\n updatedOptions,\n };\n }\n\n async function withSpan<\n Options extends { tracingOptions?: OperationTracingOptions },\n Callback extends (\n updatedOptions: Options,\n span: Omit,\n ) => ReturnType,\n >(\n name: string,\n operationOptions: Options,\n callback: Callback,\n spanOptions?: TracingSpanOptions,\n ): Promise>> {\n const { span, updatedOptions } = startSpan(name, operationOptions, spanOptions);\n try {\n const result = await withContext(updatedOptions.tracingOptions.tracingContext, () =>\n Promise.resolve(callback(updatedOptions, span)),\n );\n span.setStatus({ status: \"success\" });\n return result as ReturnType;\n } catch (err: any) {\n span.setStatus({ status: \"error\", error: err });\n throw err;\n } finally {\n span.end();\n }\n }\n\n function withContext<\n CallbackArgs extends unknown[],\n Callback extends (...args: CallbackArgs) => ReturnType,\n >(\n context: TracingContext,\n callback: Callback,\n ...callbackArgs: CallbackArgs\n ): ReturnType {\n return getInstrumenter().withContext(context, callback, ...callbackArgs);\n }\n\n /**\n * Parses a traceparent header value into a span identifier.\n *\n * @param traceparentHeader - The traceparent header to parse.\n * @returns An implementation-specific identifier for the span.\n */\n function parseTraceparentHeader(traceparentHeader: string): TracingContext | undefined {\n return getInstrumenter().parseTraceparentHeader(traceparentHeader);\n }\n\n /**\n * Creates a set of request headers to propagate tracing information to a backend.\n *\n * @param tracingContext - The context containing the span to serialize.\n * @returns The set of headers to add to a request.\n */\n function createRequestHeaders(tracingContext?: TracingContext): Record {\n return getInstrumenter().createRequestHeaders(tracingContext);\n }\n\n return {\n startSpan,\n withSpan,\n withContext,\n parseTraceparentHeader,\n createRequestHeaders,\n };\n}\n", "// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nexport {\n Instrumenter,\n InstrumenterSpanOptions,\n OperationTracingOptions,\n OptionsWithTracingContext,\n Resolved,\n SpanStatus,\n SpanStatusError,\n SpanStatusSuccess,\n TracingClient,\n TracingClientOptions,\n TracingContext,\n TracingSpan,\n TracingSpanKind,\n TracingSpanLink,\n TracingSpanOptions,\n} from \"./interfaces.js\";\nexport { useInstrumenter } from \"./instrumenter.js\";\nexport { createTracingClient } from \"./tracingClient.js\";\n", "// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { inspect } from \"node:util\";\n\nexport const custom = inspect.custom;\n", "// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { isError } from \"@azure/core-util\";\nimport type { PipelineRequest, PipelineResponse } from \"./interfaces.js\";\nimport { custom } from \"./util/inspect.js\";\nimport { Sanitizer } from \"./util/sanitizer.js\";\n\nconst errorSanitizer = new Sanitizer();\n\n/**\n * The options supported by RestError.\n */\nexport interface RestErrorOptions {\n /**\n * The code of the error itself (use statics on RestError if possible.)\n */\n code?: string;\n /**\n * The HTTP status code of the request (if applicable.)\n */\n statusCode?: number;\n /**\n * The request that was made.\n */\n request?: PipelineRequest;\n /**\n * The response received (if any.)\n */\n response?: PipelineResponse;\n}\n\n/**\n * A custom error type for failed pipeline requests.\n */\nexport class RestError extends Error {\n /**\n * Something went wrong when making the request.\n * This means the actual request failed for some reason,\n * such as a DNS issue or the connection being lost.\n */\n static readonly REQUEST_SEND_ERROR: string = \"REQUEST_SEND_ERROR\";\n /**\n * This means that parsing the response from the server failed.\n * It may have been malformed.\n */\n static readonly PARSE_ERROR: string = \"PARSE_ERROR\";\n\n /**\n * The code of the error itself (use statics on RestError if possible.)\n */\n public code?: string;\n /**\n * The HTTP status code of the request (if applicable.)\n */\n public statusCode?: number;\n /**\n * The request that was made.\n * This property is non-enumerable.\n */\n public request?: PipelineRequest;\n /**\n * The response received (if any.)\n * This property is non-enumerable.\n */\n public response?: PipelineResponse;\n /**\n * Bonus property set by the throw site.\n */\n public details?: unknown;\n\n constructor(message: string, options: RestErrorOptions = {}) {\n super(message);\n this.name = \"RestError\";\n this.code = options.code;\n this.statusCode = options.statusCode;\n\n // The request and response may contain sensitive information in the headers or body.\n // To help prevent this sensitive information being accidentally logged, the request and response\n // properties are marked as non-enumerable here. This prevents them showing up in the output of\n // JSON.stringify and console.log.\n Object.defineProperty(this, \"request\", { value: options.request, enumerable: false });\n Object.defineProperty(this, \"response\", { value: options.response, enumerable: false });\n\n Object.setPrototypeOf(this, RestError.prototype);\n }\n\n /**\n * Logging method for util.inspect in Node\n */\n [custom](): string {\n // Extract non-enumerable properties and add them back. This is OK since in this output the request and\n // response get sanitized.\n return `RestError: ${this.message} \\n ${errorSanitizer.sanitize({\n ...this,\n request: this.request,\n response: this.response,\n })}`;\n }\n}\n\n/**\n * Typeguard for RestError\n * @param e - Something caught by a catch clause.\n */\nexport function isRestError(e: unknown): e is RestError {\n if (e instanceof RestError) {\n return true;\n }\n return isError(e) && e.name === \"RestError\";\n}\n", "// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport {\n type TracingClient,\n type TracingContext,\n type TracingSpan,\n createTracingClient,\n} from \"@azure/core-tracing\";\nimport { SDK_VERSION } from \"../constants.js\";\nimport type { PipelineRequest, PipelineResponse, SendRequest } from \"../interfaces.js\";\nimport type { PipelinePolicy } from \"../pipeline.js\";\nimport { getUserAgentValue } from \"../util/userAgent.js\";\nimport { logger } from \"../log.js\";\nimport { getErrorMessage, isError } from \"@azure/core-util\";\nimport { isRestError } from \"../restError.js\";\nimport { Sanitizer } from \"../util/sanitizer.js\";\n\n/**\n * The programmatic identifier of the tracingPolicy.\n */\nexport const tracingPolicyName = \"tracingPolicy\";\n\n/**\n * Options to configure the tracing policy.\n */\nexport interface TracingPolicyOptions {\n /**\n * String prefix to add to the user agent logged as metadata\n * on the generated Span.\n * Defaults to an empty string.\n */\n userAgentPrefix?: string;\n /**\n * Query string names whose values will be logged when logging is enabled. By default no\n * query string values are logged.\n */\n additionalAllowedQueryParameters?: string[];\n}\n\n/**\n * A simple policy to create OpenTelemetry Spans for each request made by the pipeline\n * that has SpanOptions with a parent.\n * Requests made without a parent Span will not be recorded.\n * @param options - Options to configure the telemetry logged by the tracing policy.\n */\nexport function tracingPolicy(options: TracingPolicyOptions = {}): PipelinePolicy {\n const userAgentPromise = getUserAgentValue(options.userAgentPrefix);\n const sanitizer = new Sanitizer({\n additionalAllowedQueryParameters: options.additionalAllowedQueryParameters,\n });\n const tracingClient = tryCreateTracingClient();\n\n return {\n name: tracingPolicyName,\n async sendRequest(request: PipelineRequest, next: SendRequest): Promise {\n if (!tracingClient) {\n return next(request);\n }\n\n const userAgent = await userAgentPromise;\n\n const spanAttributes = {\n \"http.url\": sanitizer.sanitizeUrl(request.url),\n \"http.method\": request.method,\n \"http.user_agent\": userAgent,\n requestId: request.requestId,\n };\n if (userAgent) {\n spanAttributes[\"http.user_agent\"] = userAgent;\n }\n\n const { span, tracingContext } = tryCreateSpan(tracingClient, request, spanAttributes) ?? {};\n\n if (!span || !tracingContext) {\n return next(request);\n }\n\n try {\n const response = await tracingClient.withContext(tracingContext, next, request);\n tryProcessResponse(span, response);\n return response;\n } catch (err: any) {\n tryProcessError(span, err);\n throw err;\n }\n },\n };\n}\n\nfunction tryCreateTracingClient(): TracingClient | undefined {\n try {\n return createTracingClient({\n namespace: \"\",\n packageName: \"@azure/core-rest-pipeline\",\n packageVersion: SDK_VERSION,\n });\n } catch (e: unknown) {\n logger.warning(`Error when creating the TracingClient: ${getErrorMessage(e)}`);\n return undefined;\n }\n}\n\nfunction tryCreateSpan(\n tracingClient: TracingClient,\n request: PipelineRequest,\n spanAttributes: Record,\n): { span: TracingSpan; tracingContext: TracingContext } | undefined {\n try {\n // As per spec, we do not need to differentiate between HTTP and HTTPS in span name.\n const { span, updatedOptions } = tracingClient.startSpan(\n `HTTP ${request.method}`,\n { tracingOptions: request.tracingOptions },\n {\n spanKind: \"client\",\n spanAttributes,\n },\n );\n\n // If the span is not recording, don't do any more work.\n if (!span.isRecording()) {\n span.end();\n return undefined;\n }\n\n // set headers\n const headers = tracingClient.createRequestHeaders(\n updatedOptions.tracingOptions.tracingContext,\n );\n for (const [key, value] of Object.entries(headers)) {\n request.headers.set(key, value);\n }\n return { span, tracingContext: updatedOptions.tracingOptions.tracingContext };\n } catch (e: any) {\n logger.warning(`Skipping creating a tracing span due to an error: ${getErrorMessage(e)}`);\n return undefined;\n }\n}\n\nfunction tryProcessError(span: TracingSpan, error: unknown): void {\n try {\n span.setStatus({\n status: \"error\",\n error: isError(error) ? error : undefined,\n });\n if (isRestError(error) && error.statusCode) {\n span.setAttribute(\"http.status_code\", error.statusCode);\n }\n span.end();\n } catch (e: any) {\n logger.warning(`Skipping tracing span processing due to an error: ${getErrorMessage(e)}`);\n }\n}\n\nfunction tryProcessResponse(span: TracingSpan, response: PipelineResponse): void {\n try {\n span.setAttribute(\"http.status_code\", response.status);\n const serviceRequestId = response.headers.get(\"x-ms-request-id\");\n if (serviceRequestId) {\n span.setAttribute(\"serviceRequestId\", serviceRequestId);\n }\n // Per semantic conventions, only set the status to error if the status code is 4xx or 5xx.\n // Otherwise, the status MUST remain unset.\n // https://opentelemetry.io/docs/specs/semconv/http/http-spans/#status\n if (response.status >= 400) {\n span.setStatus({\n status: \"error\",\n });\n }\n span.end();\n } catch (e: any) {\n logger.warning(`Skipping tracing span processing due to an error: ${getErrorMessage(e)}`);\n }\n}\n", "// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { type LogPolicyOptions, logPolicy } from \"./policies/logPolicy.js\";\nimport { type Pipeline, createEmptyPipeline } from \"./pipeline.js\";\nimport type { Agent, PipelineRetryOptions, ProxySettings, TlsSettings } from \"./interfaces.js\";\nimport { type RedirectPolicyOptions, redirectPolicy } from \"./policies/redirectPolicy.js\";\nimport { type UserAgentPolicyOptions, userAgentPolicy } from \"./policies/userAgentPolicy.js\";\nimport { multipartPolicy, multipartPolicyName } from \"./policies/multipartPolicy.js\";\nimport { decompressResponsePolicy } from \"./policies/decompressResponsePolicy.js\";\nimport { defaultRetryPolicy } from \"./policies/defaultRetryPolicy.js\";\nimport { formDataPolicy } from \"./policies/formDataPolicy.js\";\nimport { isNodeLike } from \"@azure/core-util\";\nimport { proxyPolicy } from \"./policies/proxyPolicy.js\";\nimport { setClientRequestIdPolicy } from \"./policies/setClientRequestIdPolicy.js\";\nimport { agentPolicy } from \"./policies/agentPolicy.js\";\nimport { tlsPolicy } from \"./policies/tlsPolicy.js\";\nimport { tracingPolicy } from \"./policies/tracingPolicy.js\";\n\n/**\n * Defines options that are used to configure the HTTP pipeline for\n * an SDK client.\n */\nexport interface PipelineOptions {\n /**\n * Options that control how to retry failed requests.\n */\n retryOptions?: PipelineRetryOptions;\n\n /**\n * Options to configure a proxy for outgoing requests.\n */\n proxyOptions?: ProxySettings;\n\n /** Options for configuring Agent instance for outgoing requests */\n agent?: Agent;\n\n /** Options for configuring TLS authentication */\n tlsOptions?: TlsSettings;\n\n /**\n * Options for how redirect responses are handled.\n */\n redirectOptions?: RedirectPolicyOptions;\n\n /**\n * Options for adding user agent details to outgoing requests.\n */\n userAgentOptions?: UserAgentPolicyOptions;\n\n /**\n * Options for setting common telemetry and tracing info to outgoing requests.\n */\n telemetryOptions?: TelemetryOptions;\n}\n\n/**\n * Defines options that are used to configure common telemetry and tracing info\n */\nexport interface TelemetryOptions {\n /**\n * The name of the header to pass the request ID to.\n */\n clientRequestIdHeaderName?: string;\n}\n\n/**\n * Defines options that are used to configure internal options of\n * the HTTP pipeline for an SDK client.\n */\nexport interface InternalPipelineOptions extends PipelineOptions {\n /**\n * Options to configure request/response logging.\n */\n loggingOptions?: LogPolicyOptions;\n}\n\n/**\n * Create a new pipeline with a default set of customizable policies.\n * @param options - Options to configure a custom pipeline.\n */\nexport function createPipelineFromOptions(options: InternalPipelineOptions): Pipeline {\n const pipeline = createEmptyPipeline();\n\n if (isNodeLike) {\n if (options.agent) {\n pipeline.addPolicy(agentPolicy(options.agent));\n }\n if (options.tlsOptions) {\n pipeline.addPolicy(tlsPolicy(options.tlsOptions));\n }\n pipeline.addPolicy(proxyPolicy(options.proxyOptions));\n pipeline.addPolicy(decompressResponsePolicy());\n }\n\n pipeline.addPolicy(formDataPolicy(), { beforePolicies: [multipartPolicyName] });\n pipeline.addPolicy(userAgentPolicy(options.userAgentOptions));\n pipeline.addPolicy(setClientRequestIdPolicy(options.telemetryOptions?.clientRequestIdHeaderName));\n // The multipart policy is added after policies with no phase, so that\n // policies can be added between it and formDataPolicy to modify\n // properties (e.g., making the boundary constant in recorded tests).\n pipeline.addPolicy(multipartPolicy(), { afterPhase: \"Deserialize\" });\n pipeline.addPolicy(defaultRetryPolicy(options.retryOptions), { phase: \"Retry\" });\n pipeline.addPolicy(tracingPolicy({ ...options.userAgentOptions, ...options.loggingOptions }), {\n afterPhase: \"Retry\",\n });\n if (isNodeLike) {\n // Both XHR and Fetch expect to handle redirects automatically,\n // so only include this policy when we're in Node.\n pipeline.addPolicy(redirectPolicy(options.redirectOptions), { afterPhase: \"Retry\" });\n }\n pipeline.addPolicy(logPolicy(options.loggingOptions), { afterPhase: \"Sign\" });\n\n return pipeline;\n}\n", "// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport * as http from \"node:http\";\nimport * as https from \"node:https\";\nimport * as zlib from \"node:zlib\";\nimport { Transform } from \"node:stream\";\nimport { AbortError } from \"@azure/abort-controller\";\nimport type {\n HttpClient,\n HttpHeaders,\n PipelineRequest,\n PipelineResponse,\n RequestBodyType,\n TlsSettings,\n TransferProgressEvent,\n} from \"./interfaces.js\";\nimport { createHttpHeaders } from \"./httpHeaders.js\";\nimport { RestError } from \"./restError.js\";\nimport type { IncomingMessage } from \"node:http\";\nimport { logger } from \"./log.js\";\n\nconst DEFAULT_TLS_SETTINGS = {};\n\nfunction isReadableStream(body: any): body is NodeJS.ReadableStream {\n return body && typeof body.pipe === \"function\";\n}\n\nfunction isStreamComplete(stream: NodeJS.ReadableStream): Promise {\n if (stream.readable === false) {\n return Promise.resolve();\n }\n\n return new Promise((resolve) => {\n const handler = (): void => {\n resolve();\n stream.removeListener(\"close\", handler);\n stream.removeListener(\"end\", handler);\n stream.removeListener(\"error\", handler);\n };\n\n stream.on(\"close\", handler);\n stream.on(\"end\", handler);\n stream.on(\"error\", handler);\n });\n}\n\nfunction isArrayBuffer(body: any): body is ArrayBuffer | ArrayBufferView {\n return body && typeof body.byteLength === \"number\";\n}\n\nclass ReportTransform extends Transform {\n private loadedBytes = 0;\n private progressCallback: (progress: TransferProgressEvent) => void;\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-function-type\n _transform(chunk: string | Buffer, _encoding: string, callback: Function): void {\n this.push(chunk);\n this.loadedBytes += chunk.length;\n try {\n this.progressCallback({ loadedBytes: this.loadedBytes });\n callback();\n } catch (e: any) {\n callback(e);\n }\n }\n\n constructor(progressCallback: (progress: TransferProgressEvent) => void) {\n super();\n this.progressCallback = progressCallback;\n }\n}\n\n/**\n * A HttpClient implementation that uses Node's \"https\" module to send HTTPS requests.\n * @internal\n */\nclass NodeHttpClient implements HttpClient {\n private cachedHttpAgent?: http.Agent;\n private cachedHttpsAgents: WeakMap = new WeakMap();\n\n /**\n * Makes a request over an underlying transport layer and returns the response.\n * @param request - The request to be made.\n */\n public async sendRequest(request: PipelineRequest): Promise {\n const abortController = new AbortController();\n let abortListener: ((event: any) => void) | undefined;\n if (request.abortSignal) {\n if (request.abortSignal.aborted) {\n throw new AbortError(\"The operation was aborted.\");\n }\n\n abortListener = (event: Event) => {\n if (event.type === \"abort\") {\n abortController.abort();\n }\n };\n request.abortSignal.addEventListener(\"abort\", abortListener);\n }\n\n if (request.timeout > 0) {\n setTimeout(() => {\n abortController.abort();\n }, request.timeout);\n }\n\n const acceptEncoding = request.headers.get(\"Accept-Encoding\");\n const shouldDecompress =\n acceptEncoding?.includes(\"gzip\") || acceptEncoding?.includes(\"deflate\");\n\n let body = typeof request.body === \"function\" ? request.body() : request.body;\n if (body && !request.headers.has(\"Content-Length\")) {\n const bodyLength = getBodyLength(body);\n if (bodyLength !== null) {\n request.headers.set(\"Content-Length\", bodyLength);\n }\n }\n\n let responseStream: NodeJS.ReadableStream | undefined;\n try {\n if (body && request.onUploadProgress) {\n const onUploadProgress = request.onUploadProgress;\n const uploadReportStream = new ReportTransform(onUploadProgress);\n uploadReportStream.on(\"error\", (e) => {\n logger.error(\"Error in upload progress\", e);\n });\n if (isReadableStream(body)) {\n body.pipe(uploadReportStream);\n } else {\n uploadReportStream.end(body);\n }\n\n body = uploadReportStream;\n }\n\n const res = await this.makeRequest(request, abortController, body);\n\n const headers = getResponseHeaders(res);\n\n const status = res.statusCode ?? 0;\n const response: PipelineResponse = {\n status,\n headers,\n request,\n };\n\n // Responses to HEAD must not have a body.\n // If they do return a body, that body must be ignored.\n if (request.method === \"HEAD\") {\n // call resume() and not destroy() to avoid closing the socket\n // and losing keep alive\n res.resume();\n return response;\n }\n\n responseStream = shouldDecompress ? getDecodedResponseStream(res, headers) : res;\n\n const onDownloadProgress = request.onDownloadProgress;\n if (onDownloadProgress) {\n const downloadReportStream = new ReportTransform(onDownloadProgress);\n downloadReportStream.on(\"error\", (e) => {\n logger.error(\"Error in download progress\", e);\n });\n responseStream.pipe(downloadReportStream);\n responseStream = downloadReportStream;\n }\n\n if (\n // Value of POSITIVE_INFINITY in streamResponseStatusCodes is considered as any status code\n request.streamResponseStatusCodes?.has(Number.POSITIVE_INFINITY) ||\n request.streamResponseStatusCodes?.has(response.status)\n ) {\n response.readableStreamBody = responseStream;\n } else {\n response.bodyAsText = await streamToText(responseStream);\n }\n\n return response;\n } finally {\n // clean up event listener\n if (request.abortSignal && abortListener) {\n let uploadStreamDone = Promise.resolve();\n if (isReadableStream(body)) {\n uploadStreamDone = isStreamComplete(body);\n }\n let downloadStreamDone = Promise.resolve();\n if (isReadableStream(responseStream)) {\n downloadStreamDone = isStreamComplete(responseStream);\n }\n Promise.all([uploadStreamDone, downloadStreamDone])\n .then(() => {\n // eslint-disable-next-line promise/always-return\n if (abortListener) {\n request.abortSignal?.removeEventListener(\"abort\", abortListener);\n }\n })\n .catch((e) => {\n logger.warning(\"Error when cleaning up abortListener on httpRequest\", e);\n });\n }\n }\n }\n\n private makeRequest(\n request: PipelineRequest,\n abortController: AbortController,\n body?: RequestBodyType,\n ): Promise {\n const url = new URL(request.url);\n\n const isInsecure = url.protocol !== \"https:\";\n\n if (isInsecure && !request.allowInsecureConnection) {\n throw new Error(`Cannot connect to ${request.url} while allowInsecureConnection is false.`);\n }\n\n const agent = (request.agent as http.Agent) ?? this.getOrCreateAgent(request, isInsecure);\n const options: http.RequestOptions = {\n agent,\n hostname: url.hostname,\n path: `${url.pathname}${url.search}`,\n port: url.port,\n method: request.method,\n headers: request.headers.toJSON({ preserveCase: true }),\n };\n\n return new Promise((resolve, reject) => {\n const req = isInsecure ? http.request(options, resolve) : https.request(options, resolve);\n\n req.once(\"error\", (err: Error & { code?: string }) => {\n reject(\n new RestError(err.message, { code: err.code ?? RestError.REQUEST_SEND_ERROR, request }),\n );\n });\n\n abortController.signal.addEventListener(\"abort\", () => {\n const abortError = new AbortError(\"The operation was aborted.\");\n req.destroy(abortError);\n reject(abortError);\n });\n if (body && isReadableStream(body)) {\n body.pipe(req);\n } else if (body) {\n if (typeof body === \"string\" || Buffer.isBuffer(body)) {\n req.end(body);\n } else if (isArrayBuffer(body)) {\n req.end(ArrayBuffer.isView(body) ? Buffer.from(body.buffer) : Buffer.from(body));\n } else {\n logger.error(\"Unrecognized body type\", body);\n reject(new RestError(\"Unrecognized body type\"));\n }\n } else {\n // streams don't like \"undefined\" being passed as data\n req.end();\n }\n });\n }\n\n private getOrCreateAgent(request: PipelineRequest, isInsecure: boolean): http.Agent {\n const disableKeepAlive = request.disableKeepAlive;\n\n // Handle Insecure requests first\n if (isInsecure) {\n if (disableKeepAlive) {\n // keepAlive:false is the default so we don't need a custom Agent\n return http.globalAgent;\n }\n\n if (!this.cachedHttpAgent) {\n // If there is no cached agent create a new one and cache it.\n this.cachedHttpAgent = new http.Agent({ keepAlive: true });\n }\n return this.cachedHttpAgent;\n } else {\n if (disableKeepAlive && !request.tlsSettings) {\n // When there are no tlsSettings and keepAlive is false\n // we don't need a custom agent\n return https.globalAgent;\n }\n\n // We use the tlsSettings to index cached clients\n const tlsSettings = request.tlsSettings ?? DEFAULT_TLS_SETTINGS;\n\n // Get the cached agent or create a new one with the\n // provided values for keepAlive and tlsSettings\n let agent = this.cachedHttpsAgents.get(tlsSettings);\n\n if (agent && agent.options.keepAlive === !disableKeepAlive) {\n return agent;\n }\n\n logger.info(\"No cached TLS Agent exist, creating a new Agent\");\n agent = new https.Agent({\n // keepAlive is true if disableKeepAlive is false.\n keepAlive: !disableKeepAlive,\n // Since we are spreading, if no tslSettings were provided, nothing is added to the agent options.\n ...tlsSettings,\n });\n\n this.cachedHttpsAgents.set(tlsSettings, agent);\n return agent;\n }\n }\n}\n\nfunction getResponseHeaders(res: IncomingMessage): HttpHeaders {\n const headers = createHttpHeaders();\n for (const header of Object.keys(res.headers)) {\n const value = res.headers[header];\n if (Array.isArray(value)) {\n if (value.length > 0) {\n headers.set(header, value[0]);\n }\n } else if (value) {\n headers.set(header, value);\n }\n }\n return headers;\n}\n\nfunction getDecodedResponseStream(\n stream: IncomingMessage,\n headers: HttpHeaders,\n): NodeJS.ReadableStream {\n const contentEncoding = headers.get(\"Content-Encoding\");\n if (contentEncoding === \"gzip\") {\n const unzip = zlib.createGunzip();\n stream.pipe(unzip);\n return unzip;\n } else if (contentEncoding === \"deflate\") {\n const inflate = zlib.createInflate();\n stream.pipe(inflate);\n return inflate;\n }\n\n return stream;\n}\n\nfunction streamToText(stream: NodeJS.ReadableStream): Promise {\n return new Promise((resolve, reject) => {\n const buffer: Buffer[] = [];\n\n stream.on(\"data\", (chunk) => {\n if (Buffer.isBuffer(chunk)) {\n buffer.push(chunk);\n } else {\n buffer.push(Buffer.from(chunk));\n }\n });\n stream.on(\"end\", () => {\n resolve(Buffer.concat(buffer).toString(\"utf8\"));\n });\n stream.on(\"error\", (e) => {\n if (e && e?.name === \"AbortError\") {\n reject(e);\n } else {\n reject(\n new RestError(`Error reading response as text: ${e.message}`, {\n code: RestError.PARSE_ERROR,\n }),\n );\n }\n });\n });\n}\n\n/** @internal */\nexport function getBodyLength(body: RequestBodyType): number | null {\n if (!body) {\n return 0;\n } else if (Buffer.isBuffer(body)) {\n return body.length;\n } else if (isReadableStream(body)) {\n return null;\n } else if (isArrayBuffer(body)) {\n return body.byteLength;\n } else if (typeof body === \"string\") {\n return Buffer.from(body).length;\n } else {\n return null;\n }\n}\n\n/**\n * Create a new HttpClient instance for the NodeJS environment.\n * @internal\n */\nexport function createNodeHttpClient(): HttpClient {\n return new NodeHttpClient();\n}\n", "// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { HttpClient } from \"./interfaces.js\";\nimport { createNodeHttpClient } from \"./nodeHttpClient.js\";\n\n/**\n * Create the correct HttpClient for the current environment.\n */\nexport function createDefaultHttpClient(): HttpClient {\n return createNodeHttpClient();\n}\n", "// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type {\n Agent,\n FormDataMap,\n HttpHeaders,\n MultipartRequestBody,\n PipelineRequest,\n ProxySettings,\n RequestBodyType,\n TlsSettings,\n TransferProgressEvent,\n} from \"./interfaces.js\";\nimport { createHttpHeaders } from \"./httpHeaders.js\";\nimport type { AbortSignalLike } from \"@azure/abort-controller\";\nimport { randomUUID } from \"@azure/core-util\";\nimport type { OperationTracingOptions } from \"@azure/core-tracing\";\nimport type { HttpMethods } from \"@azure/core-util\";\n\n/**\n * Settings to initialize a request.\n * Almost equivalent to Partial, but url is mandatory.\n */\nexport interface PipelineRequestOptions {\n /**\n * The URL to make the request to.\n */\n url: string;\n\n /**\n * The HTTP method to use when making the request.\n */\n method?: HttpMethods;\n\n /**\n * The HTTP headers to use when making the request.\n */\n headers?: HttpHeaders;\n\n /**\n * The number of milliseconds a request can take before automatically being terminated.\n * If the request is terminated, an `AbortError` is thrown.\n * Defaults to 0, which disables the timeout.\n */\n timeout?: number;\n\n /**\n * If credentials (cookies) should be sent along during an XHR.\n * Defaults to false.\n */\n withCredentials?: boolean;\n\n /**\n * A unique identifier for the request. Used for logging and tracing.\n */\n requestId?: string;\n\n /**\n * The HTTP body content (if any)\n */\n body?: RequestBodyType;\n\n /**\n * Body for a multipart request.\n */\n multipartBody?: MultipartRequestBody;\n\n /**\n * To simulate a browser form post\n */\n formData?: FormDataMap;\n\n /**\n * A list of response status codes whose corresponding PipelineResponse body should be treated as a stream.\n */\n streamResponseStatusCodes?: Set;\n\n /**\n * NODEJS ONLY\n *\n * A Node-only option to provide a custom `http.Agent`/`https.Agent`.\n * NOTE: usually this should be one instance shared by multiple requests so that the underlying\n * connection to the service can be reused.\n * Does nothing when running in the browser.\n */\n agent?: Agent;\n\n /**\n * BROWSER ONLY\n *\n * A browser only option to enable use of the Streams API. If this option is set and streaming is used\n * (see `streamResponseStatusCodes`), the response will have a property `browserStream` instead of\n * `blobBody` which will be undefined.\n *\n * Default value is false\n */\n enableBrowserStreams?: boolean;\n\n /** Settings for configuring TLS authentication */\n tlsSettings?: TlsSettings;\n\n /**\n * Proxy configuration.\n */\n proxySettings?: ProxySettings;\n\n /**\n * If the connection should not be reused.\n */\n disableKeepAlive?: boolean;\n\n /**\n * Used to abort the request later.\n */\n abortSignal?: AbortSignalLike;\n\n /**\n * Options used to create a span when tracing is enabled.\n */\n tracingOptions?: OperationTracingOptions;\n\n /**\n * Callback which fires upon upload progress.\n */\n onUploadProgress?: (progress: TransferProgressEvent) => void;\n\n /** Callback which fires upon download progress. */\n onDownloadProgress?: (progress: TransferProgressEvent) => void;\n\n /** Set to true if the request is sent over HTTP instead of HTTPS */\n allowInsecureConnection?: boolean;\n}\n\nclass PipelineRequestImpl implements PipelineRequest {\n public url: string;\n public method: HttpMethods;\n public headers: HttpHeaders;\n public timeout: number;\n public withCredentials: boolean;\n public body?: RequestBodyType;\n public multipartBody?: MultipartRequestBody;\n public formData?: FormDataMap;\n public streamResponseStatusCodes?: Set;\n public enableBrowserStreams: boolean;\n public proxySettings?: ProxySettings;\n public disableKeepAlive: boolean;\n public abortSignal?: AbortSignalLike;\n public requestId: string;\n public tracingOptions?: OperationTracingOptions;\n public allowInsecureConnection?: boolean;\n public onUploadProgress?: (progress: TransferProgressEvent) => void;\n public onDownloadProgress?: (progress: TransferProgressEvent) => void;\n public agent?: Agent;\n public tlsSettings?: TlsSettings;\n\n constructor(options: PipelineRequestOptions) {\n this.url = options.url;\n this.body = options.body;\n this.headers = options.headers ?? createHttpHeaders();\n this.method = options.method ?? \"GET\";\n this.timeout = options.timeout ?? 0;\n this.multipartBody = options.multipartBody;\n this.formData = options.formData;\n this.disableKeepAlive = options.disableKeepAlive ?? false;\n this.proxySettings = options.proxySettings;\n this.streamResponseStatusCodes = options.streamResponseStatusCodes;\n this.withCredentials = options.withCredentials ?? false;\n this.abortSignal = options.abortSignal;\n this.tracingOptions = options.tracingOptions;\n this.onUploadProgress = options.onUploadProgress;\n this.onDownloadProgress = options.onDownloadProgress;\n this.requestId = options.requestId || randomUUID();\n this.allowInsecureConnection = options.allowInsecureConnection ?? false;\n this.enableBrowserStreams = options.enableBrowserStreams ?? false;\n this.agent = options.agent;\n this.tlsSettings = options.tlsSettings;\n }\n}\n\n/**\n * Creates a new pipeline request with the given options.\n * This method is to allow for the easy setting of default values and not required.\n * @param options - The options to create the request with.\n */\nexport function createPipelineRequest(options: PipelineRequestOptions): PipelineRequest {\n return new PipelineRequestImpl(options);\n}\n", "// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { PipelinePolicy } from \"../pipeline.js\";\nimport { exponentialRetryStrategy } from \"../retryStrategies/exponentialRetryStrategy.js\";\nimport { retryPolicy } from \"./retryPolicy.js\";\nimport { DEFAULT_RETRY_POLICY_COUNT } from \"../constants.js\";\n\n/**\n * The programmatic identifier of the exponentialRetryPolicy.\n */\nexport const exponentialRetryPolicyName = \"exponentialRetryPolicy\";\n\n/**\n * Options that control how to retry failed requests.\n */\nexport interface ExponentialRetryPolicyOptions {\n /**\n * The maximum number of retry attempts. Defaults to 3.\n */\n maxRetries?: number;\n\n /**\n * The amount of delay in milliseconds between retry attempts. Defaults to 1000\n * (1 second.) The delay increases exponentially with each retry up to a maximum\n * specified by maxRetryDelayInMs.\n */\n retryDelayInMs?: number;\n\n /**\n * The maximum delay in milliseconds allowed before retrying an operation. Defaults\n * to 64000 (64 seconds).\n */\n maxRetryDelayInMs?: number;\n}\n\n/**\n * A policy that attempts to retry requests while introducing an exponentially increasing delay.\n * @param options - Options that configure retry logic.\n */\nexport function exponentialRetryPolicy(\n options: ExponentialRetryPolicyOptions = {},\n): PipelinePolicy {\n return retryPolicy(\n [\n exponentialRetryStrategy({\n ...options,\n ignoreSystemErrors: true,\n }),\n ],\n {\n maxRetries: options.maxRetries ?? DEFAULT_RETRY_POLICY_COUNT,\n },\n );\n}\n", "// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { PipelinePolicy } from \"../pipeline.js\";\nimport { exponentialRetryStrategy } from \"../retryStrategies/exponentialRetryStrategy.js\";\nimport { retryPolicy } from \"./retryPolicy.js\";\nimport { DEFAULT_RETRY_POLICY_COUNT } from \"../constants.js\";\n\n/**\n * Name of the {@link systemErrorRetryPolicy}\n */\nexport const systemErrorRetryPolicyName = \"systemErrorRetryPolicy\";\n\n/**\n * Options that control how to retry failed requests.\n */\nexport interface SystemErrorRetryPolicyOptions {\n /**\n * The maximum number of retry attempts. Defaults to 3.\n */\n maxRetries?: number;\n\n /**\n * The amount of delay in milliseconds between retry attempts. Defaults to 1000\n * (1 second.) The delay increases exponentially with each retry up to a maximum\n * specified by maxRetryDelayInMs.\n */\n retryDelayInMs?: number;\n\n /**\n * The maximum delay in milliseconds allowed before retrying an operation. Defaults\n * to 64000 (64 seconds).\n */\n maxRetryDelayInMs?: number;\n}\n\n/**\n * A retry policy that specifically seeks to handle errors in the\n * underlying transport layer (e.g. DNS lookup failures) rather than\n * retryable error codes from the server itself.\n * @param options - Options that customize the policy.\n */\nexport function systemErrorRetryPolicy(\n options: SystemErrorRetryPolicyOptions = {},\n): PipelinePolicy {\n return {\n name: systemErrorRetryPolicyName,\n sendRequest: retryPolicy(\n [\n exponentialRetryStrategy({\n ...options,\n ignoreHttpStatusCodes: true,\n }),\n ],\n {\n maxRetries: options.maxRetries ?? DEFAULT_RETRY_POLICY_COUNT,\n },\n ).sendRequest,\n };\n}\n", "// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { PipelinePolicy } from \"../pipeline.js\";\nimport { throttlingRetryStrategy } from \"../retryStrategies/throttlingRetryStrategy.js\";\nimport { retryPolicy } from \"./retryPolicy.js\";\nimport { DEFAULT_RETRY_POLICY_COUNT } from \"../constants.js\";\n\n/**\n * Name of the {@link throttlingRetryPolicy}\n */\nexport const throttlingRetryPolicyName = \"throttlingRetryPolicy\";\n\n/**\n * Options that control how to retry failed requests.\n */\nexport interface ThrottlingRetryPolicyOptions {\n /**\n * The maximum number of retry attempts. Defaults to 3.\n */\n maxRetries?: number;\n}\n\n/**\n * A policy that retries when the server sends a 429 response with a Retry-After header.\n *\n * To learn more, please refer to\n * https://learn.microsoft.com/en-us/azure/azure-resource-manager/resource-manager-request-limits,\n * https://learn.microsoft.com/en-us/azure/azure-subscription-service-limits and\n * https://learn.microsoft.com/en-us/azure/virtual-machines/troubleshooting/troubleshooting-throttling-errors\n *\n * @param options - Options that configure retry logic.\n */\nexport function throttlingRetryPolicy(options: ThrottlingRetryPolicyOptions = {}): PipelinePolicy {\n return {\n name: throttlingRetryPolicyName,\n sendRequest: retryPolicy([throttlingRetryStrategy()], {\n maxRetries: options.maxRetries ?? DEFAULT_RETRY_POLICY_COUNT,\n }).sendRequest,\n };\n}\n", "// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { AccessToken, GetTokenOptions, TokenCredential } from \"@azure/core-auth\";\nimport { delay } from \"./helpers.js\";\n\n/**\n * A function that gets a promise of an access token and allows providing\n * options.\n *\n * @param options - the options to pass to the underlying token provider\n */\nexport type AccessTokenGetter = (\n scopes: string | string[],\n options: GetTokenOptions,\n) => Promise;\n\nexport interface TokenCyclerOptions {\n /**\n * The window of time before token expiration during which the token will be\n * considered unusable due to risk of the token expiring before sending the\n * request.\n *\n * This will only become meaningful if the refresh fails for over\n * (refreshWindow - forcedRefreshWindow) milliseconds.\n */\n forcedRefreshWindowInMs: number;\n /**\n * Interval in milliseconds to retry failed token refreshes.\n */\n retryIntervalInMs: number;\n /**\n * The window of time before token expiration during which\n * we will attempt to refresh the token.\n */\n refreshWindowInMs: number;\n}\n\n// Default options for the cycler if none are provided\nexport const DEFAULT_CYCLER_OPTIONS: TokenCyclerOptions = {\n forcedRefreshWindowInMs: 1000, // Force waiting for a refresh 1s before the token expires\n retryIntervalInMs: 3000, // Allow refresh attempts every 3s\n refreshWindowInMs: 1000 * 60 * 2, // Start refreshing 2m before expiry\n};\n\n/**\n * Converts an an unreliable access token getter (which may resolve with null)\n * into an AccessTokenGetter by retrying the unreliable getter in a regular\n * interval.\n *\n * @param getAccessToken - A function that produces a promise of an access token that may fail by returning null.\n * @param retryIntervalInMs - The time (in milliseconds) to wait between retry attempts.\n * @param refreshTimeout - The timestamp after which the refresh attempt will fail, throwing an exception.\n * @returns - A promise that, if it resolves, will resolve with an access token.\n */\nasync function beginRefresh(\n getAccessToken: () => Promise,\n retryIntervalInMs: number,\n refreshTimeout: number,\n): Promise {\n // This wrapper handles exceptions gracefully as long as we haven't exceeded\n // the timeout.\n async function tryGetAccessToken(): Promise {\n if (Date.now() < refreshTimeout) {\n try {\n return await getAccessToken();\n } catch {\n return null;\n }\n } else {\n const finalToken = await getAccessToken();\n\n // Timeout is up, so throw if it's still null\n if (finalToken === null) {\n throw new Error(\"Failed to refresh access token.\");\n }\n\n return finalToken;\n }\n }\n\n let token: AccessToken | null = await tryGetAccessToken();\n\n while (token === null) {\n await delay(retryIntervalInMs);\n\n token = await tryGetAccessToken();\n }\n\n return token;\n}\n\n/**\n * Creates a token cycler from a credential, scopes, and optional settings.\n *\n * A token cycler represents a way to reliably retrieve a valid access token\n * from a TokenCredential. It will handle initializing the token, refreshing it\n * when it nears expiration, and synchronizes refresh attempts to avoid\n * concurrency hazards.\n *\n * @param credential - the underlying TokenCredential that provides the access\n * token\n * @param tokenCyclerOptions - optionally override default settings for the cycler\n *\n * @returns - a function that reliably produces a valid access token\n */\nexport function createTokenCycler(\n credential: TokenCredential,\n tokenCyclerOptions?: Partial,\n): AccessTokenGetter {\n let refreshWorker: Promise | null = null;\n let token: AccessToken | null = null;\n let tenantId: string | undefined;\n\n const options = {\n ...DEFAULT_CYCLER_OPTIONS,\n ...tokenCyclerOptions,\n };\n\n /**\n * This little holder defines several predicates that we use to construct\n * the rules of refreshing the token.\n */\n const cycler = {\n /**\n * Produces true if a refresh job is currently in progress.\n */\n get isRefreshing(): boolean {\n return refreshWorker !== null;\n },\n /**\n * Produces true if the cycler SHOULD refresh (we are within the refresh\n * window and not already refreshing)\n */\n get shouldRefresh(): boolean {\n if (cycler.isRefreshing) {\n return false;\n }\n if (token?.refreshAfterTimestamp && token.refreshAfterTimestamp < Date.now()) {\n return true;\n }\n\n return (token?.expiresOnTimestamp ?? 0) - options.refreshWindowInMs < Date.now();\n },\n /**\n * Produces true if the cycler MUST refresh (null or nearly-expired\n * token).\n */\n get mustRefresh(): boolean {\n return (\n token === null || token.expiresOnTimestamp - options.forcedRefreshWindowInMs < Date.now()\n );\n },\n };\n\n /**\n * Starts a refresh job or returns the existing job if one is already\n * running.\n */\n function refresh(\n scopes: string | string[],\n getTokenOptions: GetTokenOptions,\n ): Promise {\n if (!cycler.isRefreshing) {\n // We bind `scopes` here to avoid passing it around a lot\n const tryGetAccessToken = (): Promise =>\n credential.getToken(scopes, getTokenOptions);\n\n // Take advantage of promise chaining to insert an assignment to `token`\n // before the refresh can be considered done.\n refreshWorker = beginRefresh(\n tryGetAccessToken,\n options.retryIntervalInMs,\n // If we don't have a token, then we should timeout immediately\n token?.expiresOnTimestamp ?? Date.now(),\n )\n .then((_token) => {\n refreshWorker = null;\n token = _token;\n tenantId = getTokenOptions.tenantId;\n return token;\n })\n .catch((reason) => {\n // We also should reset the refresher if we enter a failed state. All\n // existing awaiters will throw, but subsequent requests will start a\n // new retry chain.\n refreshWorker = null;\n token = null;\n tenantId = undefined;\n throw reason;\n });\n }\n\n return refreshWorker as Promise;\n }\n\n return async (scopes: string | string[], tokenOptions: GetTokenOptions): Promise => {\n //\n // Simple rules:\n // - If we MUST refresh, then return the refresh task, blocking\n // the pipeline until a token is available.\n // - If we SHOULD refresh, then run refresh but don't return it\n // (we can still use the cached token).\n // - Return the token, since it's fine if we didn't return in\n // step 1.\n //\n\n const hasClaimChallenge = Boolean(tokenOptions.claims);\n const tenantIdChanged = tenantId !== tokenOptions.tenantId;\n\n if (hasClaimChallenge) {\n // If we've received a claim, we know the existing token isn't valid\n // We want to clear it so that that refresh worker won't use the old expiration time as a timeout\n token = null;\n }\n\n // If the tenantId passed in token options is different to the one we have\n // Or if we are in claim challenge and the token was rejected and a new access token need to be issued, we need to\n // refresh the token with the new tenantId or token.\n const mustRefresh = tenantIdChanged || hasClaimChallenge || cycler.mustRefresh;\n\n if (mustRefresh) {\n return refresh(scopes, tokenOptions);\n }\n\n if (cycler.shouldRefresh) {\n refresh(scopes, tokenOptions);\n }\n\n return token as AccessToken;\n };\n}\n", "// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { AccessToken, GetTokenOptions, TokenCredential } from \"@azure/core-auth\";\nimport type { AzureLogger } from \"@azure/logger\";\nimport type { PipelineRequest, PipelineResponse, SendRequest } from \"../interfaces.js\";\nimport type { PipelinePolicy } from \"../pipeline.js\";\nimport { createTokenCycler } from \"../util/tokenCycler.js\";\nimport { logger as coreLogger } from \"../log.js\";\nimport type { RestError } from \"../restError.js\";\nimport { isRestError } from \"../restError.js\";\n\n/**\n * The programmatic identifier of the bearerTokenAuthenticationPolicy.\n */\nexport const bearerTokenAuthenticationPolicyName = \"bearerTokenAuthenticationPolicy\";\n\n/**\n * Options sent to the authorizeRequest callback\n */\nexport interface AuthorizeRequestOptions {\n /**\n * The scopes for which the bearer token applies.\n */\n scopes: string[];\n /**\n * Function that retrieves either a cached access token or a new access token.\n */\n getAccessToken: (scopes: string[], options: GetTokenOptions) => Promise;\n /**\n * Request that the policy is trying to fulfill.\n */\n request: PipelineRequest;\n /**\n * A logger, if one was sent through the HTTP pipeline.\n */\n logger?: AzureLogger;\n}\n\n/**\n * Options sent to the authorizeRequestOnChallenge callback\n */\nexport interface AuthorizeRequestOnChallengeOptions {\n /**\n * The scopes for which the bearer token applies.\n */\n scopes: string[];\n /**\n * Function that retrieves either a cached access token or a new access token.\n */\n getAccessToken: (scopes: string[], options: GetTokenOptions) => Promise;\n /**\n * Request that the policy is trying to fulfill.\n */\n request: PipelineRequest;\n /**\n * Response containing the challenge.\n */\n response: PipelineResponse;\n /**\n * A logger, if one was sent through the HTTP pipeline.\n */\n logger?: AzureLogger;\n}\n\n/**\n * Options to override the processing of [Continuous Access Evaluation](https://learn.microsoft.com/azure/active-directory/conditional-access/concept-continuous-access-evaluation) challenges.\n */\nexport interface ChallengeCallbacks {\n /**\n * Allows for the authorization of the main request of this policy before it's sent.\n */\n authorizeRequest?(options: AuthorizeRequestOptions): Promise;\n /**\n * Allows to handle authentication challenges and to re-authorize the request.\n * The response containing the challenge is `options.response`.\n * If this method returns true, the underlying request will be sent once again.\n * The request may be modified before being sent.\n */\n authorizeRequestOnChallenge?(options: AuthorizeRequestOnChallengeOptions): Promise;\n}\n\n/**\n * Options to configure the bearerTokenAuthenticationPolicy\n */\nexport interface BearerTokenAuthenticationPolicyOptions {\n /**\n * The TokenCredential implementation that can supply the bearer token.\n */\n credential?: TokenCredential;\n /**\n * The scopes for which the bearer token applies.\n */\n scopes: string | string[];\n /**\n * Allows for the processing of [Continuous Access Evaluation](https://learn.microsoft.com/azure/active-directory/conditional-access/concept-continuous-access-evaluation) challenges.\n * If provided, it must contain at least the `authorizeRequestOnChallenge` method.\n * If provided, after a request is sent, if it has a challenge, it can be processed to re-send the original request with the relevant challenge information.\n */\n challengeCallbacks?: ChallengeCallbacks;\n /**\n * A logger can be sent for debugging purposes.\n */\n logger?: AzureLogger;\n}\n/**\n * Try to send the given request.\n *\n * When a response is received, returns a tuple of the response received and, if the response was received\n * inside a thrown RestError, the RestError that was thrown.\n *\n * Otherwise, if an error was thrown while sending the request that did not provide an underlying response, it\n * will be rethrown.\n */\nasync function trySendRequest(\n request: PipelineRequest,\n next: SendRequest,\n): Promise<[PipelineResponse, RestError | undefined]> {\n try {\n return [await next(request), undefined];\n } catch (e: any) {\n if (isRestError(e) && e.response) {\n return [e.response, e];\n } else {\n throw e;\n }\n }\n}\n/**\n * Default authorize request handler\n */\nasync function defaultAuthorizeRequest(options: AuthorizeRequestOptions): Promise {\n const { scopes, getAccessToken, request } = options;\n // Enable CAE true by default\n const getTokenOptions: GetTokenOptions = {\n abortSignal: request.abortSignal,\n tracingOptions: request.tracingOptions,\n enableCae: true,\n };\n\n const accessToken = await getAccessToken(scopes, getTokenOptions);\n\n if (accessToken) {\n options.request.headers.set(\"Authorization\", `Bearer ${accessToken.token}`);\n }\n}\n\n/**\n * We will retrieve the challenge only if the response status code was 401,\n * and if the response contained the header \"WWW-Authenticate\" with a non-empty value.\n */\nfunction isChallengeResponse(response: PipelineResponse): boolean {\n return response.status === 401 && response.headers.has(\"WWW-Authenticate\");\n}\n\n/**\n * Re-authorize the request for CAE challenge.\n * The response containing the challenge is `options.response`.\n * If this method returns true, the underlying request will be sent once again.\n */\nasync function authorizeRequestOnCaeChallenge(\n onChallengeOptions: AuthorizeRequestOnChallengeOptions,\n caeClaims: string,\n): Promise {\n const { scopes } = onChallengeOptions;\n\n const accessToken = await onChallengeOptions.getAccessToken(scopes, {\n enableCae: true,\n claims: caeClaims,\n });\n if (!accessToken) {\n return false;\n }\n\n onChallengeOptions.request.headers.set(\n \"Authorization\",\n `${accessToken.tokenType ?? \"Bearer\"} ${accessToken.token}`,\n );\n return true;\n}\n\n/**\n * A policy that can request a token from a TokenCredential implementation and\n * then apply it to the Authorization header of a request as a Bearer token.\n */\nexport function bearerTokenAuthenticationPolicy(\n options: BearerTokenAuthenticationPolicyOptions,\n): PipelinePolicy {\n const { credential, scopes, challengeCallbacks } = options;\n const logger = options.logger || coreLogger;\n const callbacks = {\n authorizeRequest:\n challengeCallbacks?.authorizeRequest?.bind(challengeCallbacks) ?? defaultAuthorizeRequest,\n authorizeRequestOnChallenge:\n challengeCallbacks?.authorizeRequestOnChallenge?.bind(challengeCallbacks),\n };\n\n // This function encapsulates the entire process of reliably retrieving the token\n // The options are left out of the public API until there's demand to configure this.\n // Remember to extend `BearerTokenAuthenticationPolicyOptions` with `TokenCyclerOptions`\n // in order to pass through the `options` object.\n const getAccessToken = credential\n ? createTokenCycler(credential /* , options */)\n : () => Promise.resolve(null);\n\n return {\n name: bearerTokenAuthenticationPolicyName,\n /**\n * If there's no challenge parameter:\n * - It will try to retrieve the token using the cache, or the credential's getToken.\n * - Then it will try the next policy with or without the retrieved token.\n *\n * It uses the challenge parameters to:\n * - Skip a first attempt to get the token from the credential if there's no cached token,\n * since it expects the token to be retrievable only after the challenge.\n * - Prepare the outgoing request if the `prepareRequest` method has been provided.\n * - Send an initial request to receive the challenge if it fails.\n * - Process a challenge if the response contains it.\n * - Retrieve a token with the challenge information, then re-send the request.\n */\n async sendRequest(request: PipelineRequest, next: SendRequest): Promise {\n if (!request.url.toLowerCase().startsWith(\"https://\")) {\n throw new Error(\n \"Bearer token authentication is not permitted for non-TLS protected (non-https) URLs.\",\n );\n }\n\n await callbacks.authorizeRequest({\n scopes: Array.isArray(scopes) ? scopes : [scopes],\n request,\n getAccessToken,\n logger,\n });\n\n let response: PipelineResponse;\n let error: Error | undefined;\n let shouldSendRequest: boolean;\n [response, error] = await trySendRequest(request, next);\n\n if (isChallengeResponse(response)) {\n let claims = getCaeChallengeClaims(response.headers.get(\"WWW-Authenticate\"));\n // Handle CAE by default when receive CAE claim\n if (claims) {\n let parsedClaim: string;\n // Return the response immediately if claims is not a valid base64 encoded string\n try {\n parsedClaim = atob(claims);\n } catch (e) {\n logger.warning(\n `The WWW-Authenticate header contains \"claims\" that cannot be parsed. Unable to perform the Continuous Access Evaluation authentication flow. Unparsable claims: ${claims}`,\n );\n return response;\n }\n shouldSendRequest = await authorizeRequestOnCaeChallenge(\n {\n scopes: Array.isArray(scopes) ? scopes : [scopes],\n response,\n request,\n getAccessToken,\n logger,\n },\n parsedClaim,\n );\n // Send updated request and handle response for RestError\n if (shouldSendRequest) {\n [response, error] = await trySendRequest(request, next);\n }\n } else if (callbacks.authorizeRequestOnChallenge) {\n // Handle custom challenges when client provides custom callback\n shouldSendRequest = await callbacks.authorizeRequestOnChallenge({\n scopes: Array.isArray(scopes) ? scopes : [scopes],\n request,\n response,\n getAccessToken,\n logger,\n });\n\n // Send updated request and handle response for RestError\n if (shouldSendRequest) {\n [response, error] = await trySendRequest(request, next);\n }\n\n // If we get another CAE Claim, we will handle it by default and return whatever value we receive for this\n if (isChallengeResponse(response)) {\n claims = getCaeChallengeClaims(response.headers.get(\"WWW-Authenticate\") as string);\n if (claims) {\n let parsedClaim: string;\n try {\n parsedClaim = atob(claims);\n } catch (e) {\n logger.warning(\n `The WWW-Authenticate header contains \"claims\" that cannot be parsed. Unable to perform the Continuous Access Evaluation authentication flow. Unparsable claims: ${claims}`,\n );\n return response;\n }\n\n shouldSendRequest = await authorizeRequestOnCaeChallenge(\n {\n scopes: Array.isArray(scopes) ? scopes : [scopes],\n response,\n request,\n getAccessToken,\n logger,\n },\n parsedClaim,\n );\n // Send updated request and handle response for RestError\n if (shouldSendRequest) {\n [response, error] = await trySendRequest(request, next);\n }\n }\n }\n }\n }\n\n if (error) {\n throw error;\n } else {\n return response;\n }\n },\n };\n}\n\n/**\n *\n * Interface to represent a parsed challenge.\n *\n * @internal\n */\ninterface AuthChallenge {\n scheme: string;\n params: Record;\n}\n\n/**\n * Converts: `Bearer a=\"b\", c=\"d\", Pop e=\"f\", g=\"h\"`.\n * Into: `[ { scheme: 'Bearer', params: { a: 'b', c: 'd' } }, { scheme: 'Pop', params: { e: 'f', g: 'h' } } ]`.\n *\n * @internal\n */\nexport function parseChallenges(challenges: string): AuthChallenge[] {\n // Challenge regex seperates the string to individual challenges with different schemes in the format `Scheme a=\"b\", c=d`\n // The challenge regex captures parameteres with either quotes values or unquoted values\n const challengeRegex = /(\\w+)\\s+((?:\\w+=(?:\"[^\"]*\"|[^,]*),?\\s*)+)/g;\n // Parameter regex captures the claims group removed from the scheme in the format `a=\"b\"` and `c=\"d\"`\n // CAE challenge always have quoted parameters. For more reference, https://learn.microsoft.com/entra/identity-platform/claims-challenge\n const paramRegex = /(\\w+)=\"([^\"]*)\"/g;\n\n const parsedChallenges: AuthChallenge[] = [];\n let match;\n\n // Iterate over each challenge match\n while ((match = challengeRegex.exec(challenges)) !== null) {\n const scheme = match[1];\n const paramsString = match[2];\n const params: Record = {};\n let paramMatch;\n\n // Iterate over each parameter match\n while ((paramMatch = paramRegex.exec(paramsString)) !== null) {\n params[paramMatch[1]] = paramMatch[2];\n }\n\n parsedChallenges.push({ scheme, params });\n }\n return parsedChallenges;\n}\n\n/**\n * Parse a pipeline response and look for a CAE challenge with \"Bearer\" scheme\n * Return the value in the header without parsing the challenge\n * @internal\n */\nfunction getCaeChallengeClaims(challenges: string | undefined): string | undefined {\n if (!challenges) {\n return;\n }\n // Find all challenges present in the header\n const parsedChallenges = parseChallenges(challenges);\n return parsedChallenges.find(\n (x) => x.scheme === \"Bearer\" && x.params.claims && x.params.error === \"insufficient_claims\",\n )?.params.claims;\n}\n", "// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { PipelineRequest, PipelineResponse, SendRequest } from \"../interfaces.js\";\nimport type { PipelinePolicy } from \"../pipeline.js\";\n\n/**\n * The programmatic identifier of the ndJsonPolicy.\n */\nexport const ndJsonPolicyName = \"ndJsonPolicy\";\n\n/**\n * ndJsonPolicy is a policy used to control keep alive settings for every request.\n */\nexport function ndJsonPolicy(): PipelinePolicy {\n return {\n name: ndJsonPolicyName,\n async sendRequest(request: PipelineRequest, next: SendRequest): Promise {\n // There currently isn't a good way to bypass the serializer\n if (typeof request.body === \"string\" && request.body.startsWith(\"[\")) {\n const body = JSON.parse(request.body);\n if (Array.isArray(body)) {\n request.body = body.map((item) => JSON.stringify(item) + \"\\n\").join(\"\");\n }\n }\n return next(request);\n },\n };\n}\n", "// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { GetTokenOptions, TokenCredential } from \"@azure/core-auth\";\nimport type { AzureLogger } from \"@azure/logger\";\nimport type { PipelineRequest, PipelineResponse, SendRequest } from \"../interfaces.js\";\nimport type { PipelinePolicy } from \"../pipeline.js\";\nimport { type AccessTokenGetter, createTokenCycler } from \"../util/tokenCycler.js\";\nimport { logger as coreLogger } from \"../log.js\";\nimport type { AuthorizeRequestOptions } from \"./bearerTokenAuthenticationPolicy.js\";\n\n/**\n * The programmatic identifier of the auxiliaryAuthenticationHeaderPolicy.\n */\nexport const auxiliaryAuthenticationHeaderPolicyName = \"auxiliaryAuthenticationHeaderPolicy\";\nconst AUTHORIZATION_AUXILIARY_HEADER = \"x-ms-authorization-auxiliary\";\n\n/**\n * Options to configure the auxiliaryAuthenticationHeaderPolicy\n */\nexport interface AuxiliaryAuthenticationHeaderPolicyOptions {\n /**\n * TokenCredential list used to get token from auxiliary tenants and\n * one credential for each tenant the client may need to access\n */\n credentials?: TokenCredential[];\n /**\n * Scopes depend on the cloud your application runs in\n */\n scopes: string | string[];\n /**\n * A logger can be sent for debugging purposes.\n */\n logger?: AzureLogger;\n}\n\nasync function sendAuthorizeRequest(options: AuthorizeRequestOptions): Promise {\n const { scopes, getAccessToken, request } = options;\n const getTokenOptions: GetTokenOptions = {\n abortSignal: request.abortSignal,\n tracingOptions: request.tracingOptions,\n };\n\n return (await getAccessToken(scopes, getTokenOptions))?.token ?? \"\";\n}\n\n/**\n * A policy for external tokens to `x-ms-authorization-auxiliary` header.\n * This header will be used when creating a cross-tenant application we may need to handle authentication requests\n * for resources that are in different tenants.\n * You could see [ARM docs](https://learn.microsoft.com/en-us/azure/azure-resource-manager/management/authenticate-multi-tenant) for a rundown of how this feature works\n */\nexport function auxiliaryAuthenticationHeaderPolicy(\n options: AuxiliaryAuthenticationHeaderPolicyOptions,\n): PipelinePolicy {\n const { credentials, scopes } = options;\n const logger = options.logger || coreLogger;\n const tokenCyclerMap = new WeakMap();\n\n return {\n name: auxiliaryAuthenticationHeaderPolicyName,\n async sendRequest(request: PipelineRequest, next: SendRequest): Promise {\n if (!request.url.toLowerCase().startsWith(\"https://\")) {\n throw new Error(\n \"Bearer token authentication for auxiliary header is not permitted for non-TLS protected (non-https) URLs.\",\n );\n }\n if (!credentials || credentials.length === 0) {\n logger.info(\n `${auxiliaryAuthenticationHeaderPolicyName} header will not be set due to empty credentials.`,\n );\n return next(request);\n }\n\n const tokenPromises: Promise[] = [];\n for (const credential of credentials) {\n let getAccessToken = tokenCyclerMap.get(credential);\n if (!getAccessToken) {\n getAccessToken = createTokenCycler(credential);\n tokenCyclerMap.set(credential, getAccessToken);\n }\n tokenPromises.push(\n sendAuthorizeRequest({\n scopes: Array.isArray(scopes) ? scopes : [scopes],\n request,\n getAccessToken,\n logger,\n }),\n );\n }\n const auxiliaryTokens = (await Promise.all(tokenPromises)).filter((token) => Boolean(token));\n if (auxiliaryTokens.length === 0) {\n logger.warning(\n `None of the auxiliary tokens are valid. ${AUTHORIZATION_AUXILIARY_HEADER} header will not be set.`,\n );\n return next(request);\n }\n request.headers.set(\n AUTHORIZATION_AUXILIARY_HEADER,\n auxiliaryTokens.map((token) => `Bearer ${token}`).join(\", \"),\n );\n\n return next(request);\n },\n };\n}\n", "// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\ndeclare global {\n interface FormData {}\n interface Blob {}\n interface File {}\n interface ReadableStream {}\n interface TransformStream {}\n}\n\nexport type { HttpMethods } from \"@azure/core-util\";\nexport type {\n Agent,\n BodyPart,\n FormDataMap,\n FormDataValue,\n HttpClient,\n HttpHeaders,\n KeyObject,\n MultipartRequestBody,\n PipelineRequest,\n PipelineResponse,\n PipelineRetryOptions,\n ProxySettings,\n PxfObject,\n RawHttpHeaders,\n RawHttpHeadersInput,\n RequestBodyType,\n SendRequest,\n TlsSettings,\n TransferProgressEvent,\n} from \"./interfaces.js\";\nexport {\n type AddPolicyOptions as AddPipelineOptions,\n type PipelinePhase,\n type PipelinePolicy,\n type Pipeline,\n createEmptyPipeline,\n} from \"./pipeline.js\";\nexport {\n createPipelineFromOptions,\n type TelemetryOptions,\n type InternalPipelineOptions,\n type PipelineOptions,\n} from \"./createPipelineFromOptions.js\";\nexport { createDefaultHttpClient } from \"./defaultHttpClient.js\";\nexport { createHttpHeaders } from \"./httpHeaders.js\";\nexport { createPipelineRequest, type PipelineRequestOptions } from \"./pipelineRequest.js\";\nexport { RestError, type RestErrorOptions, isRestError } from \"./restError.js\";\nexport {\n decompressResponsePolicy,\n decompressResponsePolicyName,\n} from \"./policies/decompressResponsePolicy.js\";\nexport {\n exponentialRetryPolicy,\n type ExponentialRetryPolicyOptions,\n exponentialRetryPolicyName,\n} from \"./policies/exponentialRetryPolicy.js\";\nexport {\n setClientRequestIdPolicy,\n setClientRequestIdPolicyName,\n} from \"./policies/setClientRequestIdPolicy.js\";\nexport { logPolicy, logPolicyName, type LogPolicyOptions } from \"./policies/logPolicy.js\";\nexport { multipartPolicy, multipartPolicyName } from \"./policies/multipartPolicy.js\";\nexport { proxyPolicy, proxyPolicyName, getDefaultProxySettings } from \"./policies/proxyPolicy.js\";\nexport {\n redirectPolicy,\n redirectPolicyName,\n type RedirectPolicyOptions,\n} from \"./policies/redirectPolicy.js\";\nexport {\n systemErrorRetryPolicy,\n type SystemErrorRetryPolicyOptions,\n systemErrorRetryPolicyName,\n} from \"./policies/systemErrorRetryPolicy.js\";\nexport {\n throttlingRetryPolicy,\n throttlingRetryPolicyName,\n type ThrottlingRetryPolicyOptions,\n} from \"./policies/throttlingRetryPolicy.js\";\nexport { retryPolicy, type RetryPolicyOptions } from \"./policies/retryPolicy.js\";\nexport type {\n RetryStrategy,\n RetryInformation,\n RetryModifiers,\n} from \"./retryStrategies/retryStrategy.js\";\nexport {\n tracingPolicy,\n tracingPolicyName,\n type TracingPolicyOptions,\n} from \"./policies/tracingPolicy.js\";\nexport {\n defaultRetryPolicy,\n type DefaultRetryPolicyOptions,\n} from \"./policies/defaultRetryPolicy.js\";\nexport {\n userAgentPolicy,\n userAgentPolicyName,\n type UserAgentPolicyOptions,\n} from \"./policies/userAgentPolicy.js\";\nexport { tlsPolicy, tlsPolicyName } from \"./policies/tlsPolicy.js\";\nexport { formDataPolicy, formDataPolicyName } from \"./policies/formDataPolicy.js\";\nexport {\n bearerTokenAuthenticationPolicy,\n type BearerTokenAuthenticationPolicyOptions,\n bearerTokenAuthenticationPolicyName,\n type ChallengeCallbacks,\n type AuthorizeRequestOptions,\n type AuthorizeRequestOnChallengeOptions,\n} from \"./policies/bearerTokenAuthenticationPolicy.js\";\nexport { ndJsonPolicy, ndJsonPolicyName } from \"./policies/ndJsonPolicy.js\";\nexport {\n auxiliaryAuthenticationHeaderPolicy,\n type AuxiliaryAuthenticationHeaderPolicyOptions,\n auxiliaryAuthenticationHeaderPolicyName,\n} from \"./policies/auxiliaryAuthenticationHeaderPolicy.js\";\nexport { agentPolicy, agentPolicyName } from \"./policies/agentPolicy.js\";\nexport {\n createFile,\n createFileFromStream,\n type CreateFileOptions,\n type CreateFileFromStreamOptions,\n} from \"./util/file.js\";\n", "// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport {\n CompositeMapper,\n Mapper,\n OperationArguments,\n OperationParameter,\n OperationRequest,\n OperationRequestInfo,\n ParameterPath,\n} from \"./interfaces.js\";\n\nimport { state } from \"./state.js\";\n\n/**\n * @internal\n * Retrieves the value to use for a given operation argument\n * @param operationArguments - The arguments passed from the generated client\n * @param parameter - The parameter description\n * @param fallbackObject - If something isn't found in the arguments bag, look here.\n * Generally used to look at the service client properties.\n */\nexport function getOperationArgumentValueFromParameter(\n operationArguments: OperationArguments,\n parameter: OperationParameter,\n fallbackObject?: { [parameterName: string]: any },\n): any {\n let parameterPath = parameter.parameterPath;\n const parameterMapper = parameter.mapper;\n let value: any;\n if (typeof parameterPath === \"string\") {\n parameterPath = [parameterPath];\n }\n if (Array.isArray(parameterPath)) {\n if (parameterPath.length > 0) {\n if (parameterMapper.isConstant) {\n value = parameterMapper.defaultValue;\n } else {\n let propertySearchResult = getPropertyFromParameterPath(operationArguments, parameterPath);\n\n if (!propertySearchResult.propertyFound && fallbackObject) {\n propertySearchResult = getPropertyFromParameterPath(fallbackObject, parameterPath);\n }\n\n let useDefaultValue = false;\n if (!propertySearchResult.propertyFound) {\n useDefaultValue =\n parameterMapper.required ||\n (parameterPath[0] === \"options\" && parameterPath.length === 2);\n }\n value = useDefaultValue ? parameterMapper.defaultValue : propertySearchResult.propertyValue;\n }\n }\n } else {\n if (parameterMapper.required) {\n value = {};\n }\n\n for (const propertyName in parameterPath) {\n const propertyMapper: Mapper = (parameterMapper as CompositeMapper).type.modelProperties![\n propertyName\n ];\n const propertyPath: ParameterPath = parameterPath[propertyName];\n const propertyValue: any = getOperationArgumentValueFromParameter(\n operationArguments,\n {\n parameterPath: propertyPath,\n mapper: propertyMapper,\n },\n fallbackObject,\n );\n if (propertyValue !== undefined) {\n if (!value) {\n value = {};\n }\n value[propertyName] = propertyValue;\n }\n }\n }\n return value;\n}\n\ninterface PropertySearchResult {\n propertyValue?: any;\n propertyFound: boolean;\n}\n\nfunction getPropertyFromParameterPath(\n parent: { [parameterName: string]: any },\n parameterPath: string[],\n): PropertySearchResult {\n const result: PropertySearchResult = { propertyFound: false };\n let i = 0;\n for (; i < parameterPath.length; ++i) {\n const parameterPathPart: string = parameterPath[i];\n // Make sure to check inherited properties too, so don't use hasOwnProperty().\n if (parent && parameterPathPart in parent) {\n parent = parent[parameterPathPart];\n } else {\n break;\n }\n }\n if (i === parameterPath.length) {\n result.propertyValue = parent;\n result.propertyFound = true;\n }\n return result;\n}\n\nconst originalRequestSymbol = Symbol.for(\"@azure/core-client original request\");\n\nfunction hasOriginalRequest(\n request: OperationRequest,\n): request is OperationRequest & { [originalRequestSymbol]: OperationRequest } {\n return originalRequestSymbol in request;\n}\n\nexport function getOperationRequestInfo(request: OperationRequest): OperationRequestInfo {\n if (hasOriginalRequest(request)) {\n return getOperationRequestInfo(request[originalRequestSymbol]);\n }\n let info = state.operationRequestMap.get(request);\n\n if (!info) {\n info = {};\n state.operationRequestMap.set(request, info);\n }\n return info;\n}\n", "// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport {\n FullOperationResponse,\n OperationRequest,\n OperationResponseMap,\n OperationSpec,\n RequiredSerializerOptions,\n SerializerOptions,\n XML_CHARKEY,\n XmlOptions,\n} from \"./interfaces.js\";\nimport {\n PipelinePolicy,\n PipelineRequest,\n PipelineResponse,\n RestError,\n SendRequest,\n} from \"@azure/core-rest-pipeline\";\nimport { MapperTypeNames } from \"./serializer.js\";\nimport { getOperationRequestInfo } from \"./operationHelpers.js\";\n\nconst defaultJsonContentTypes = [\"application/json\", \"text/json\"];\nconst defaultXmlContentTypes = [\"application/xml\", \"application/atom+xml\"];\n\n/**\n * The programmatic identifier of the deserializationPolicy.\n */\nexport const deserializationPolicyName = \"deserializationPolicy\";\n\n/**\n * Options to configure API response deserialization.\n */\nexport interface DeserializationPolicyOptions {\n /**\n * Configures the expected content types for the deserialization of\n * JSON and XML response bodies.\n */\n expectedContentTypes?: DeserializationContentTypes;\n\n /**\n * A function that is able to parse XML. Required for XML support.\n */\n parseXML?: (str: string, opts?: XmlOptions) => Promise;\n\n /**\n * Configures behavior of xml parser and builder.\n */\n serializerOptions?: SerializerOptions;\n}\n\n/**\n * The content-types that will indicate that an operation response should be deserialized in a\n * particular way.\n */\nexport interface DeserializationContentTypes {\n /**\n * The content-types that indicate that an operation response should be deserialized as JSON.\n * Defaults to [ \"application/json\", \"text/json\" ].\n */\n json?: string[];\n\n /**\n * The content-types that indicate that an operation response should be deserialized as XML.\n * Defaults to [ \"application/xml\", \"application/atom+xml\" ].\n */\n xml?: string[];\n}\n\n/**\n * This policy handles parsing out responses according to OperationSpecs on the request.\n */\nexport function deserializationPolicy(options: DeserializationPolicyOptions = {}): PipelinePolicy {\n const jsonContentTypes = options.expectedContentTypes?.json ?? defaultJsonContentTypes;\n const xmlContentTypes = options.expectedContentTypes?.xml ?? defaultXmlContentTypes;\n const parseXML = options.parseXML;\n const serializerOptions = options.serializerOptions;\n const updatedOptions: RequiredSerializerOptions = {\n xml: {\n rootName: serializerOptions?.xml.rootName ?? \"\",\n includeRoot: serializerOptions?.xml.includeRoot ?? false,\n xmlCharKey: serializerOptions?.xml.xmlCharKey ?? XML_CHARKEY,\n },\n };\n\n return {\n name: deserializationPolicyName,\n async sendRequest(request: PipelineRequest, next: SendRequest): Promise {\n const response = await next(request);\n return deserializeResponseBody(\n jsonContentTypes,\n xmlContentTypes,\n response,\n updatedOptions,\n parseXML,\n );\n },\n };\n}\n\nfunction getOperationResponseMap(\n parsedResponse: PipelineResponse,\n): undefined | OperationResponseMap {\n let result: OperationResponseMap | undefined;\n const request: OperationRequest = parsedResponse.request;\n const operationInfo = getOperationRequestInfo(request);\n const operationSpec = operationInfo?.operationSpec;\n if (operationSpec) {\n if (!operationInfo?.operationResponseGetter) {\n result = operationSpec.responses[parsedResponse.status];\n } else {\n result = operationInfo?.operationResponseGetter(operationSpec, parsedResponse);\n }\n }\n return result;\n}\n\nfunction shouldDeserializeResponse(parsedResponse: PipelineResponse): boolean {\n const request: OperationRequest = parsedResponse.request;\n const operationInfo = getOperationRequestInfo(request);\n const shouldDeserialize = operationInfo?.shouldDeserialize;\n let result: boolean;\n if (shouldDeserialize === undefined) {\n result = true;\n } else if (typeof shouldDeserialize === \"boolean\") {\n result = shouldDeserialize;\n } else {\n result = shouldDeserialize(parsedResponse);\n }\n return result;\n}\n\nasync function deserializeResponseBody(\n jsonContentTypes: string[],\n xmlContentTypes: string[],\n response: PipelineResponse,\n options: RequiredSerializerOptions,\n parseXML?: (str: string, opts?: XmlOptions) => Promise,\n): Promise {\n const parsedResponse = await parse(\n jsonContentTypes,\n xmlContentTypes,\n response,\n options,\n parseXML,\n );\n if (!shouldDeserializeResponse(parsedResponse)) {\n return parsedResponse;\n }\n\n const operationInfo = getOperationRequestInfo(parsedResponse.request);\n const operationSpec = operationInfo?.operationSpec;\n if (!operationSpec || !operationSpec.responses) {\n return parsedResponse;\n }\n\n const responseSpec = getOperationResponseMap(parsedResponse);\n const { error, shouldReturnResponse } = handleErrorResponse(\n parsedResponse,\n operationSpec,\n responseSpec,\n options,\n );\n if (error) {\n throw error;\n } else if (shouldReturnResponse) {\n return parsedResponse;\n }\n\n // An operation response spec does exist for current status code, so\n // use it to deserialize the response.\n if (responseSpec) {\n if (responseSpec.bodyMapper) {\n let valueToDeserialize: any = parsedResponse.parsedBody;\n if (operationSpec.isXML && responseSpec.bodyMapper.type.name === MapperTypeNames.Sequence) {\n valueToDeserialize =\n typeof valueToDeserialize === \"object\"\n ? valueToDeserialize[responseSpec.bodyMapper.xmlElementName!]\n : [];\n }\n try {\n parsedResponse.parsedBody = operationSpec.serializer.deserialize(\n responseSpec.bodyMapper,\n valueToDeserialize,\n \"operationRes.parsedBody\",\n options,\n );\n } catch (deserializeError: any) {\n const restError = new RestError(\n `Error ${deserializeError} occurred in deserializing the responseBody - ${parsedResponse.bodyAsText}`,\n {\n statusCode: parsedResponse.status,\n request: parsedResponse.request,\n response: parsedResponse,\n },\n );\n throw restError;\n }\n } else if (operationSpec.httpMethod === \"HEAD\") {\n // head methods never have a body, but we return a boolean to indicate presence/absence of the resource\n parsedResponse.parsedBody = response.status >= 200 && response.status < 300;\n }\n\n if (responseSpec.headersMapper) {\n parsedResponse.parsedHeaders = operationSpec.serializer.deserialize(\n responseSpec.headersMapper,\n parsedResponse.headers.toJSON(),\n \"operationRes.parsedHeaders\",\n { xml: {}, ignoreUnknownProperties: true },\n );\n }\n }\n\n return parsedResponse;\n}\n\nfunction isOperationSpecEmpty(operationSpec: OperationSpec): boolean {\n const expectedStatusCodes = Object.keys(operationSpec.responses);\n return (\n expectedStatusCodes.length === 0 ||\n (expectedStatusCodes.length === 1 && expectedStatusCodes[0] === \"default\")\n );\n}\n\nfunction handleErrorResponse(\n parsedResponse: FullOperationResponse,\n operationSpec: OperationSpec,\n responseSpec: OperationResponseMap | undefined,\n options: RequiredSerializerOptions,\n): { error: RestError | null; shouldReturnResponse: boolean } {\n const isSuccessByStatus = 200 <= parsedResponse.status && parsedResponse.status < 300;\n const isExpectedStatusCode: boolean = isOperationSpecEmpty(operationSpec)\n ? isSuccessByStatus\n : !!responseSpec;\n\n if (isExpectedStatusCode) {\n if (responseSpec) {\n if (!responseSpec.isError) {\n return { error: null, shouldReturnResponse: false };\n }\n } else {\n return { error: null, shouldReturnResponse: false };\n }\n }\n\n const errorResponseSpec = responseSpec ?? operationSpec.responses.default;\n\n const initialErrorMessage = parsedResponse.request.streamResponseStatusCodes?.has(\n parsedResponse.status,\n )\n ? `Unexpected status code: ${parsedResponse.status}`\n : (parsedResponse.bodyAsText as string);\n\n const error = new RestError(initialErrorMessage, {\n statusCode: parsedResponse.status,\n request: parsedResponse.request,\n response: parsedResponse,\n });\n\n // If the item failed but there's no error spec or default spec to deserialize the error,\n // we should fail so we just throw the parsed response\n if (!errorResponseSpec) {\n throw error;\n }\n\n const defaultBodyMapper = errorResponseSpec.bodyMapper;\n const defaultHeadersMapper = errorResponseSpec.headersMapper;\n\n try {\n // If error response has a body, try to deserialize it using default body mapper.\n // Then try to extract error code & message from it\n if (parsedResponse.parsedBody) {\n const parsedBody = parsedResponse.parsedBody;\n let deserializedError;\n\n if (defaultBodyMapper) {\n let valueToDeserialize: any = parsedBody;\n if (operationSpec.isXML && defaultBodyMapper.type.name === MapperTypeNames.Sequence) {\n valueToDeserialize = [];\n const elementName = defaultBodyMapper.xmlElementName;\n if (typeof parsedBody === \"object\" && elementName) {\n valueToDeserialize = parsedBody[elementName];\n }\n }\n deserializedError = operationSpec.serializer.deserialize(\n defaultBodyMapper,\n valueToDeserialize,\n \"error.response.parsedBody\",\n options,\n );\n }\n\n const internalError: any = parsedBody.error || deserializedError || parsedBody;\n error.code = internalError.code;\n if (internalError.message) {\n error.message = internalError.message;\n }\n\n if (defaultBodyMapper) {\n (error.response! as FullOperationResponse).parsedBody = deserializedError;\n }\n }\n\n // If error response has headers, try to deserialize it using default header mapper\n if (parsedResponse.headers && defaultHeadersMapper) {\n (error.response! as FullOperationResponse).parsedHeaders =\n operationSpec.serializer.deserialize(\n defaultHeadersMapper,\n parsedResponse.headers.toJSON(),\n \"operationRes.parsedHeaders\",\n );\n }\n } catch (defaultError: any) {\n error.message = `Error \"${defaultError.message}\" occurred in deserializing the responseBody - \"${parsedResponse.bodyAsText}\" for the default response.`;\n }\n\n return { error, shouldReturnResponse: false };\n}\n\nasync function parse(\n jsonContentTypes: string[],\n xmlContentTypes: string[],\n operationResponse: FullOperationResponse,\n opts: RequiredSerializerOptions,\n parseXML?: (str: string, opts?: XmlOptions) => Promise,\n): Promise {\n if (\n !operationResponse.request.streamResponseStatusCodes?.has(operationResponse.status) &&\n operationResponse.bodyAsText\n ) {\n const text = operationResponse.bodyAsText;\n const contentType: string = operationResponse.headers.get(\"Content-Type\") || \"\";\n const contentComponents: string[] = !contentType\n ? []\n : contentType.split(\";\").map((component) => component.toLowerCase());\n\n try {\n if (\n contentComponents.length === 0 ||\n contentComponents.some((component) => jsonContentTypes.indexOf(component) !== -1)\n ) {\n operationResponse.parsedBody = JSON.parse(text);\n return operationResponse;\n } else if (contentComponents.some((component) => xmlContentTypes.indexOf(component) !== -1)) {\n if (!parseXML) {\n throw new Error(\"Parsing XML not supported.\");\n }\n const body = await parseXML(text, opts.xml);\n operationResponse.parsedBody = body;\n return operationResponse;\n }\n } catch (err: any) {\n const msg = `Error \"${err}\" occurred while parsing the response body - ${operationResponse.bodyAsText}.`;\n const errCode = err.code || RestError.PARSE_ERROR;\n const e = new RestError(msg, {\n code: errCode,\n statusCode: operationResponse.status,\n request: operationResponse.request,\n response: operationResponse,\n });\n throw e;\n }\n }\n\n return operationResponse;\n}\n", "// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport { OperationParameter, OperationSpec } from \"./interfaces.js\";\nimport { MapperTypeNames } from \"./serializer.js\";\n\n/**\n * Gets the list of status codes for streaming responses.\n * @internal\n */\nexport function getStreamingResponseStatusCodes(operationSpec: OperationSpec): Set {\n const result = new Set();\n for (const statusCode in operationSpec.responses) {\n const operationResponse = operationSpec.responses[statusCode];\n if (\n operationResponse.bodyMapper &&\n operationResponse.bodyMapper.type.name === MapperTypeNames.Stream\n ) {\n result.add(Number(statusCode));\n }\n }\n return result;\n}\n\n/**\n * Get the path to this parameter's value as a dotted string (a.b.c).\n * @param parameter - The parameter to get the path string for.\n * @returns The path to this parameter's value as a dotted string.\n * @internal\n */\nexport function getPathStringFromParameter(parameter: OperationParameter): string {\n const { parameterPath, mapper } = parameter;\n let result: string;\n if (typeof parameterPath === \"string\") {\n result = parameterPath;\n } else if (Array.isArray(parameterPath)) {\n result = parameterPath.join(\".\");\n } else {\n result = mapper.serializedName!;\n }\n return result;\n}\n", "// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport {\n DictionaryMapper,\n OperationArguments,\n OperationRequest,\n OperationSpec,\n RequiredSerializerOptions,\n SerializerOptions,\n XML_ATTRKEY,\n XML_CHARKEY,\n XmlOptions,\n} from \"./interfaces.js\";\nimport { PipelinePolicy, PipelineResponse, SendRequest } from \"@azure/core-rest-pipeline\";\nimport {\n getOperationArgumentValueFromParameter,\n getOperationRequestInfo,\n} from \"./operationHelpers.js\";\nimport { MapperTypeNames } from \"./serializer.js\";\nimport { getPathStringFromParameter } from \"./interfaceHelpers.js\";\n\n/**\n * The programmatic identifier of the serializationPolicy.\n */\nexport const serializationPolicyName = \"serializationPolicy\";\n\n/**\n * Options to configure API request serialization.\n */\nexport interface SerializationPolicyOptions {\n /**\n * A function that is able to write XML. Required for XML support.\n */\n stringifyXML?: (obj: any, opts?: XmlOptions) => string;\n\n /**\n * Configures behavior of xml parser and builder.\n */\n serializerOptions?: SerializerOptions;\n}\n\n/**\n * This policy handles assembling the request body and headers using\n * an OperationSpec and OperationArguments on the request.\n */\nexport function serializationPolicy(options: SerializationPolicyOptions = {}): PipelinePolicy {\n const stringifyXML = options.stringifyXML;\n\n return {\n name: serializationPolicyName,\n async sendRequest(request: OperationRequest, next: SendRequest): Promise {\n const operationInfo = getOperationRequestInfo(request);\n const operationSpec = operationInfo?.operationSpec;\n const operationArguments = operationInfo?.operationArguments;\n if (operationSpec && operationArguments) {\n serializeHeaders(request, operationArguments, operationSpec);\n serializeRequestBody(request, operationArguments, operationSpec, stringifyXML);\n }\n return next(request);\n },\n };\n}\n\n/**\n * @internal\n */\nexport function serializeHeaders(\n request: OperationRequest,\n operationArguments: OperationArguments,\n operationSpec: OperationSpec,\n): void {\n if (operationSpec.headerParameters) {\n for (const headerParameter of operationSpec.headerParameters) {\n let headerValue = getOperationArgumentValueFromParameter(operationArguments, headerParameter);\n if ((headerValue !== null && headerValue !== undefined) || headerParameter.mapper.required) {\n headerValue = operationSpec.serializer.serialize(\n headerParameter.mapper,\n headerValue,\n getPathStringFromParameter(headerParameter),\n );\n const headerCollectionPrefix = (headerParameter.mapper as DictionaryMapper)\n .headerCollectionPrefix;\n if (headerCollectionPrefix) {\n for (const key of Object.keys(headerValue)) {\n request.headers.set(headerCollectionPrefix + key, headerValue[key]);\n }\n } else {\n request.headers.set(\n headerParameter.mapper.serializedName || getPathStringFromParameter(headerParameter),\n headerValue,\n );\n }\n }\n }\n }\n const customHeaders = operationArguments.options?.requestOptions?.customHeaders;\n if (customHeaders) {\n for (const customHeaderName of Object.keys(customHeaders)) {\n request.headers.set(customHeaderName, customHeaders[customHeaderName]);\n }\n }\n}\n\n/**\n * @internal\n */\nexport function serializeRequestBody(\n request: OperationRequest,\n operationArguments: OperationArguments,\n operationSpec: OperationSpec,\n stringifyXML: (obj: any, opts?: XmlOptions) => string = function () {\n throw new Error(\"XML serialization unsupported!\");\n },\n): void {\n const serializerOptions = operationArguments.options?.serializerOptions;\n const updatedOptions: RequiredSerializerOptions = {\n xml: {\n rootName: serializerOptions?.xml.rootName ?? \"\",\n includeRoot: serializerOptions?.xml.includeRoot ?? false,\n xmlCharKey: serializerOptions?.xml.xmlCharKey ?? XML_CHARKEY,\n },\n };\n\n const xmlCharKey = updatedOptions.xml.xmlCharKey;\n if (operationSpec.requestBody && operationSpec.requestBody.mapper) {\n request.body = getOperationArgumentValueFromParameter(\n operationArguments,\n operationSpec.requestBody,\n );\n\n const bodyMapper = operationSpec.requestBody.mapper;\n const {\n required,\n serializedName,\n xmlName,\n xmlElementName,\n xmlNamespace,\n xmlNamespacePrefix,\n nullable,\n } = bodyMapper;\n const typeName = bodyMapper.type.name;\n\n try {\n if (\n (request.body !== undefined && request.body !== null) ||\n (nullable && request.body === null) ||\n required\n ) {\n const requestBodyParameterPathString: string = getPathStringFromParameter(\n operationSpec.requestBody,\n );\n request.body = operationSpec.serializer.serialize(\n bodyMapper,\n request.body,\n requestBodyParameterPathString,\n updatedOptions,\n );\n\n const isStream = typeName === MapperTypeNames.Stream;\n\n if (operationSpec.isXML) {\n const xmlnsKey = xmlNamespacePrefix ? `xmlns:${xmlNamespacePrefix}` : \"xmlns\";\n const value = getXmlValueWithNamespace(\n xmlNamespace,\n xmlnsKey,\n typeName,\n request.body,\n updatedOptions,\n );\n\n if (typeName === MapperTypeNames.Sequence) {\n request.body = stringifyXML(\n prepareXMLRootList(\n value,\n xmlElementName || xmlName || serializedName!,\n xmlnsKey,\n xmlNamespace,\n ),\n { rootName: xmlName || serializedName, xmlCharKey },\n );\n } else if (!isStream) {\n request.body = stringifyXML(value, {\n rootName: xmlName || serializedName,\n xmlCharKey,\n });\n }\n } else if (\n typeName === MapperTypeNames.String &&\n (operationSpec.contentType?.match(\"text/plain\") || operationSpec.mediaType === \"text\")\n ) {\n // the String serializer has validated that request body is a string\n // so just send the string.\n return;\n } else if (!isStream) {\n request.body = JSON.stringify(request.body);\n }\n }\n } catch (error: any) {\n throw new Error(\n `Error \"${error.message}\" occurred in serializing the payload - ${JSON.stringify(\n serializedName,\n undefined,\n \" \",\n )}.`,\n );\n }\n } else if (operationSpec.formDataParameters && operationSpec.formDataParameters.length > 0) {\n request.formData = {};\n for (const formDataParameter of operationSpec.formDataParameters) {\n const formDataParameterValue = getOperationArgumentValueFromParameter(\n operationArguments,\n formDataParameter,\n );\n if (formDataParameterValue !== undefined && formDataParameterValue !== null) {\n const formDataParameterPropertyName: string =\n formDataParameter.mapper.serializedName || getPathStringFromParameter(formDataParameter);\n request.formData[formDataParameterPropertyName] = operationSpec.serializer.serialize(\n formDataParameter.mapper,\n formDataParameterValue,\n getPathStringFromParameter(formDataParameter),\n updatedOptions,\n );\n }\n }\n }\n}\n\n/**\n * Adds an xml namespace to the xml serialized object if needed, otherwise it just returns the value itself\n */\nfunction getXmlValueWithNamespace(\n xmlNamespace: string | undefined,\n xmlnsKey: string,\n typeName: string,\n serializedValue: any,\n options: RequiredSerializerOptions,\n): any {\n // Composite and Sequence schemas already got their root namespace set during serialization\n // We just need to add xmlns to the other schema types\n if (xmlNamespace && ![\"Composite\", \"Sequence\", \"Dictionary\"].includes(typeName)) {\n const result: any = {};\n result[options.xml.xmlCharKey] = serializedValue;\n result[XML_ATTRKEY] = { [xmlnsKey]: xmlNamespace };\n return result;\n }\n\n return serializedValue;\n}\n\nfunction prepareXMLRootList(\n obj: any,\n elementName: string,\n xmlNamespaceKey?: string,\n xmlNamespace?: string,\n): { [key: string]: any[] } {\n if (!Array.isArray(obj)) {\n obj = [obj];\n }\n if (!xmlNamespaceKey || !xmlNamespace) {\n return { [elementName]: obj };\n }\n\n const result = { [elementName]: obj };\n result[XML_ATTRKEY] = { [xmlNamespaceKey]: xmlNamespace };\n return result;\n}\n", "// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport { DeserializationPolicyOptions, deserializationPolicy } from \"./deserializationPolicy.js\";\nimport {\n InternalPipelineOptions,\n Pipeline,\n bearerTokenAuthenticationPolicy,\n createPipelineFromOptions,\n} from \"@azure/core-rest-pipeline\";\nimport { SerializationPolicyOptions, serializationPolicy } from \"./serializationPolicy.js\";\nimport { TokenCredential } from \"@azure/core-auth\";\n\n/**\n * Options for creating a Pipeline to use with ServiceClient.\n * Mostly for customizing the auth policy (if using token auth) or\n * the deserialization options when using XML.\n */\nexport interface InternalClientPipelineOptions extends InternalPipelineOptions {\n /**\n * Options to customize bearerTokenAuthenticationPolicy.\n */\n credentialOptions?: { credentialScopes: string | string[]; credential: TokenCredential };\n /**\n * Options to customize deserializationPolicy.\n */\n deserializationOptions?: DeserializationPolicyOptions;\n /**\n * Options to customize serializationPolicy.\n */\n serializationOptions?: SerializationPolicyOptions;\n}\n\n/**\n * Creates a new Pipeline for use with a Service Client.\n * Adds in deserializationPolicy by default.\n * Also adds in bearerTokenAuthenticationPolicy if passed a TokenCredential.\n * @param options - Options to customize the created pipeline.\n */\nexport function createClientPipeline(options: InternalClientPipelineOptions = {}): Pipeline {\n const pipeline = createPipelineFromOptions(options ?? {});\n if (options.credentialOptions) {\n pipeline.addPolicy(\n bearerTokenAuthenticationPolicy({\n credential: options.credentialOptions.credential,\n scopes: options.credentialOptions.credentialScopes,\n }),\n );\n }\n\n pipeline.addPolicy(serializationPolicy(options.serializationOptions), { phase: \"Serialize\" });\n pipeline.addPolicy(deserializationPolicy(options.deserializationOptions), {\n phase: \"Deserialize\",\n });\n\n return pipeline;\n}\n", "// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport { HttpClient, createDefaultHttpClient } from \"@azure/core-rest-pipeline\";\n\nlet cachedHttpClient: HttpClient | undefined;\n\nexport function getCachedDefaultHttpClient(): HttpClient {\n if (!cachedHttpClient) {\n cachedHttpClient = createDefaultHttpClient();\n }\n\n return cachedHttpClient;\n}\n", "// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport { OperationArguments, OperationSpec, QueryCollectionFormat } from \"./interfaces.js\";\nimport { getOperationArgumentValueFromParameter } from \"./operationHelpers.js\";\nimport { getPathStringFromParameter } from \"./interfaceHelpers.js\";\n\nconst CollectionFormatToDelimiterMap: { [key in QueryCollectionFormat]: string } = {\n CSV: \",\",\n SSV: \" \",\n Multi: \"Multi\",\n TSV: \"\\t\",\n Pipes: \"|\",\n};\n\nexport function getRequestUrl(\n baseUri: string,\n operationSpec: OperationSpec,\n operationArguments: OperationArguments,\n fallbackObject: { [parameterName: string]: any },\n): string {\n const urlReplacements = calculateUrlReplacements(\n operationSpec,\n operationArguments,\n fallbackObject,\n );\n\n let isAbsolutePath = false;\n\n let requestUrl = replaceAll(baseUri, urlReplacements);\n if (operationSpec.path) {\n let path = replaceAll(operationSpec.path, urlReplacements);\n // QUIRK: sometimes we get a path component like /{nextLink}\n // which may be a fully formed URL with a leading /. In that case, we should\n // remove the leading /\n if (operationSpec.path === \"/{nextLink}\" && path.startsWith(\"/\")) {\n path = path.substring(1);\n }\n // QUIRK: sometimes we get a path component like {nextLink}\n // which may be a fully formed URL. In that case, we should\n // ignore the baseUri.\n if (isAbsoluteUrl(path)) {\n requestUrl = path;\n isAbsolutePath = true;\n } else {\n requestUrl = appendPath(requestUrl, path);\n }\n }\n\n const { queryParams, sequenceParams } = calculateQueryParameters(\n operationSpec,\n operationArguments,\n fallbackObject,\n );\n /**\n * Notice that this call sets the `noOverwrite` parameter to true if the `requestUrl`\n * is an absolute path. This ensures that existing query parameter values in `requestUrl`\n * do not get overwritten. On the other hand when `requestUrl` is not absolute path, it\n * is still being built so there is nothing to overwrite.\n */\n requestUrl = appendQueryParams(requestUrl, queryParams, sequenceParams, isAbsolutePath);\n\n return requestUrl;\n}\n\nfunction replaceAll(input: string, replacements: Map): string {\n let result = input;\n for (const [searchValue, replaceValue] of replacements) {\n result = result.split(searchValue).join(replaceValue);\n }\n return result;\n}\n\nfunction calculateUrlReplacements(\n operationSpec: OperationSpec,\n operationArguments: OperationArguments,\n fallbackObject: { [parameterName: string]: any },\n): Map {\n const result = new Map();\n if (operationSpec.urlParameters?.length) {\n for (const urlParameter of operationSpec.urlParameters) {\n let urlParameterValue: string = getOperationArgumentValueFromParameter(\n operationArguments,\n urlParameter,\n fallbackObject,\n );\n const parameterPathString = getPathStringFromParameter(urlParameter);\n urlParameterValue = operationSpec.serializer.serialize(\n urlParameter.mapper,\n urlParameterValue,\n parameterPathString,\n );\n if (!urlParameter.skipEncoding) {\n urlParameterValue = encodeURIComponent(urlParameterValue);\n }\n result.set(\n `{${urlParameter.mapper.serializedName || parameterPathString}}`,\n urlParameterValue,\n );\n }\n }\n return result;\n}\n\nfunction isAbsoluteUrl(url: string): boolean {\n return url.includes(\"://\");\n}\n\nfunction appendPath(url: string, pathToAppend?: string): string {\n if (!pathToAppend) {\n return url;\n }\n\n const parsedUrl = new URL(url);\n let newPath = parsedUrl.pathname;\n\n if (!newPath.endsWith(\"/\")) {\n newPath = `${newPath}/`;\n }\n\n if (pathToAppend.startsWith(\"/\")) {\n pathToAppend = pathToAppend.substring(1);\n }\n\n const searchStart = pathToAppend.indexOf(\"?\");\n if (searchStart !== -1) {\n const path = pathToAppend.substring(0, searchStart);\n const search = pathToAppend.substring(searchStart + 1);\n newPath = newPath + path;\n if (search) {\n parsedUrl.search = parsedUrl.search ? `${parsedUrl.search}&${search}` : search;\n }\n } else {\n newPath = newPath + pathToAppend;\n }\n\n parsedUrl.pathname = newPath;\n\n return parsedUrl.toString();\n}\n\nfunction calculateQueryParameters(\n operationSpec: OperationSpec,\n operationArguments: OperationArguments,\n fallbackObject: { [parameterName: string]: any },\n): {\n queryParams: Map;\n sequenceParams: Set;\n} {\n const result = new Map();\n const sequenceParams: Set = new Set();\n\n if (operationSpec.queryParameters?.length) {\n for (const queryParameter of operationSpec.queryParameters) {\n if (queryParameter.mapper.type.name === \"Sequence\" && queryParameter.mapper.serializedName) {\n sequenceParams.add(queryParameter.mapper.serializedName);\n }\n let queryParameterValue: string | string[] = getOperationArgumentValueFromParameter(\n operationArguments,\n queryParameter,\n fallbackObject,\n );\n if (\n (queryParameterValue !== undefined && queryParameterValue !== null) ||\n queryParameter.mapper.required\n ) {\n queryParameterValue = operationSpec.serializer.serialize(\n queryParameter.mapper,\n queryParameterValue,\n getPathStringFromParameter(queryParameter),\n );\n\n const delimiter = queryParameter.collectionFormat\n ? CollectionFormatToDelimiterMap[queryParameter.collectionFormat]\n : \"\";\n if (Array.isArray(queryParameterValue)) {\n // replace null and undefined\n queryParameterValue = queryParameterValue.map((item) => {\n if (item === null || item === undefined) {\n return \"\";\n }\n\n return item;\n });\n }\n if (queryParameter.collectionFormat === \"Multi\" && queryParameterValue.length === 0) {\n continue;\n } else if (\n Array.isArray(queryParameterValue) &&\n (queryParameter.collectionFormat === \"SSV\" || queryParameter.collectionFormat === \"TSV\")\n ) {\n queryParameterValue = queryParameterValue.join(delimiter);\n }\n if (!queryParameter.skipEncoding) {\n if (Array.isArray(queryParameterValue)) {\n queryParameterValue = queryParameterValue.map((item: string) => {\n return encodeURIComponent(item);\n });\n } else {\n queryParameterValue = encodeURIComponent(queryParameterValue);\n }\n }\n\n // Join pipes and CSV *after* encoding, or the server will be upset.\n if (\n Array.isArray(queryParameterValue) &&\n (queryParameter.collectionFormat === \"CSV\" || queryParameter.collectionFormat === \"Pipes\")\n ) {\n queryParameterValue = queryParameterValue.join(delimiter);\n }\n\n result.set(\n queryParameter.mapper.serializedName || getPathStringFromParameter(queryParameter),\n queryParameterValue,\n );\n }\n }\n }\n return {\n queryParams: result,\n sequenceParams,\n };\n}\n\nfunction simpleParseQueryParams(queryString: string): Map {\n const result: Map = new Map<\n string,\n string | string[] | undefined\n >();\n if (!queryString || queryString[0] !== \"?\") {\n return result;\n }\n\n // remove the leading ?\n queryString = queryString.slice(1);\n const pairs = queryString.split(\"&\");\n\n for (const pair of pairs) {\n const [name, value] = pair.split(\"=\", 2);\n const existingValue = result.get(name);\n if (existingValue) {\n if (Array.isArray(existingValue)) {\n existingValue.push(value);\n } else {\n result.set(name, [existingValue, value]);\n }\n } else {\n result.set(name, value);\n }\n }\n\n return result;\n}\n\n/** @internal */\nexport function appendQueryParams(\n url: string,\n queryParams: Map,\n sequenceParams: Set,\n noOverwrite: boolean = false,\n): string {\n if (queryParams.size === 0) {\n return url;\n }\n\n const parsedUrl = new URL(url);\n\n // QUIRK: parsedUrl.searchParams will have their name/value pairs decoded, which\n // can change their meaning to the server, such as in the case of a SAS signature.\n // To avoid accidentally un-encoding a query param, we parse the key/values ourselves\n const combinedParams = simpleParseQueryParams(parsedUrl.search);\n\n for (const [name, value] of queryParams) {\n const existingValue = combinedParams.get(name);\n if (Array.isArray(existingValue)) {\n if (Array.isArray(value)) {\n existingValue.push(...value);\n const valueSet = new Set(existingValue);\n combinedParams.set(name, Array.from(valueSet));\n } else {\n existingValue.push(value);\n }\n } else if (existingValue) {\n if (Array.isArray(value)) {\n value.unshift(existingValue);\n } else if (sequenceParams.has(name)) {\n combinedParams.set(name, [existingValue, value]);\n }\n if (!noOverwrite) {\n combinedParams.set(name, value);\n }\n } else {\n combinedParams.set(name, value);\n }\n }\n\n const searchPieces: string[] = [];\n for (const [name, value] of combinedParams) {\n if (typeof value === \"string\") {\n searchPieces.push(`${name}=${value}`);\n } else if (Array.isArray(value)) {\n // QUIRK: If we get an array of values, include multiple key/value pairs\n for (const subValue of value) {\n searchPieces.push(`${name}=${subValue}`);\n }\n } else {\n searchPieces.push(`${name}=${value}`);\n }\n }\n\n // QUIRK: we have to set search manually as searchParams will encode comma when it shouldn't.\n parsedUrl.search = searchPieces.length ? `?${searchPieces.join(\"&\")}` : \"\";\n return parsedUrl.toString();\n}\n", "// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport { createClientLogger } from \"@azure/logger\";\nexport const logger = createClientLogger(\"core-client\");\n", "// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport {\n CommonClientOptions,\n OperationArguments,\n OperationRequest,\n OperationSpec,\n} from \"./interfaces.js\";\nimport {\n HttpClient,\n Pipeline,\n PipelineRequest,\n PipelineResponse,\n createPipelineRequest,\n} from \"@azure/core-rest-pipeline\";\nimport { TokenCredential } from \"@azure/core-auth\";\nimport { createClientPipeline } from \"./pipeline.js\";\nimport { flattenResponse } from \"./utils.js\";\nimport { getCachedDefaultHttpClient } from \"./httpClientCache.js\";\nimport { getOperationRequestInfo } from \"./operationHelpers.js\";\nimport { getRequestUrl } from \"./urlHelpers.js\";\nimport { getStreamingResponseStatusCodes } from \"./interfaceHelpers.js\";\nimport { logger } from \"./log.js\";\n\n/**\n * Options to be provided while creating the client.\n */\nexport interface ServiceClientOptions extends CommonClientOptions {\n /**\n * If specified, this is the base URI that requests will be made against for this ServiceClient.\n * If it is not specified, then all OperationSpecs must contain a baseUrl property.\n * @deprecated This property is deprecated and will be removed soon, please use endpoint instead\n */\n baseUri?: string;\n /**\n * If specified, this is the endpoint that requests will be made against for this ServiceClient.\n * If it is not specified, then all OperationSpecs must contain a baseUrl property.\n * to encourage customer to use endpoint, we mark the baseUri as deprecated.\n */\n endpoint?: string;\n /**\n * If specified, will be used to build the BearerTokenAuthenticationPolicy.\n */\n credentialScopes?: string | string[];\n /**\n * The default request content type for the service.\n * Used if no requestContentType is present on an OperationSpec.\n */\n requestContentType?: string;\n /**\n * Credential used to authenticate the request.\n */\n credential?: TokenCredential;\n /**\n * A customized pipeline to use, otherwise a default one will be created.\n */\n pipeline?: Pipeline;\n}\n\n/**\n * Initializes a new instance of the ServiceClient.\n */\nexport class ServiceClient {\n /**\n * If specified, this is the base URI that requests will be made against for this ServiceClient.\n * If it is not specified, then all OperationSpecs must contain a baseUrl property.\n */\n private readonly _endpoint?: string;\n\n /**\n * The default request content type for the service.\n * Used if no requestContentType is present on an OperationSpec.\n */\n private readonly _requestContentType?: string;\n\n /**\n * Set to true if the request is sent over HTTP instead of HTTPS\n */\n private readonly _allowInsecureConnection?: boolean;\n\n /**\n * The HTTP client that will be used to send requests.\n */\n private readonly _httpClient: HttpClient;\n\n /**\n * The pipeline used by this client to make requests\n */\n public readonly pipeline: Pipeline;\n\n /**\n * The ServiceClient constructor\n * @param credential - The credentials used for authentication with the service.\n * @param options - The service client options that govern the behavior of the client.\n */\n constructor(options: ServiceClientOptions = {}) {\n this._requestContentType = options.requestContentType;\n this._endpoint = options.endpoint ?? options.baseUri;\n if (options.baseUri) {\n logger.warning(\n \"The baseUri option for SDK Clients has been deprecated, please use endpoint instead.\",\n );\n }\n this._allowInsecureConnection = options.allowInsecureConnection;\n this._httpClient = options.httpClient || getCachedDefaultHttpClient();\n\n this.pipeline = options.pipeline || createDefaultPipeline(options);\n if (options.additionalPolicies?.length) {\n for (const { policy, position } of options.additionalPolicies) {\n // Sign happens after Retry and is commonly needed to occur\n // before policies that intercept post-retry.\n const afterPhase = position === \"perRetry\" ? \"Sign\" : undefined;\n this.pipeline.addPolicy(policy, {\n afterPhase,\n });\n }\n }\n }\n\n /**\n * Send the provided httpRequest.\n */\n async sendRequest(request: PipelineRequest): Promise {\n return this.pipeline.sendRequest(this._httpClient, request);\n }\n\n /**\n * Send an HTTP request that is populated using the provided OperationSpec.\n * @typeParam T - The typed result of the request, based on the OperationSpec.\n * @param operationArguments - The arguments that the HTTP request's templated values will be populated from.\n * @param operationSpec - The OperationSpec to use to populate the httpRequest.\n */\n async sendOperationRequest(\n operationArguments: OperationArguments,\n operationSpec: OperationSpec,\n ): Promise {\n const endpoint: string | undefined = operationSpec.baseUrl || this._endpoint;\n if (!endpoint) {\n throw new Error(\n \"If operationSpec.baseUrl is not specified, then the ServiceClient must have a endpoint string property that contains the base URL to use.\",\n );\n }\n\n // Templatized URLs sometimes reference properties on the ServiceClient child class,\n // so we have to pass `this` below in order to search these properties if they're\n // not part of OperationArguments\n const url = getRequestUrl(endpoint, operationSpec, operationArguments, this);\n\n const request: OperationRequest = createPipelineRequest({\n url,\n });\n request.method = operationSpec.httpMethod;\n const operationInfo = getOperationRequestInfo(request);\n operationInfo.operationSpec = operationSpec;\n operationInfo.operationArguments = operationArguments;\n\n const contentType = operationSpec.contentType || this._requestContentType;\n if (contentType && operationSpec.requestBody) {\n request.headers.set(\"Content-Type\", contentType);\n }\n\n const options = operationArguments.options;\n if (options) {\n const requestOptions = options.requestOptions;\n\n if (requestOptions) {\n if (requestOptions.timeout) {\n request.timeout = requestOptions.timeout;\n }\n\n if (requestOptions.onUploadProgress) {\n request.onUploadProgress = requestOptions.onUploadProgress;\n }\n\n if (requestOptions.onDownloadProgress) {\n request.onDownloadProgress = requestOptions.onDownloadProgress;\n }\n\n if (requestOptions.shouldDeserialize !== undefined) {\n operationInfo.shouldDeserialize = requestOptions.shouldDeserialize;\n }\n\n if (requestOptions.allowInsecureConnection) {\n request.allowInsecureConnection = true;\n }\n }\n\n if (options.abortSignal) {\n request.abortSignal = options.abortSignal;\n }\n\n if (options.tracingOptions) {\n request.tracingOptions = options.tracingOptions;\n }\n }\n\n if (this._allowInsecureConnection) {\n request.allowInsecureConnection = true;\n }\n\n if (request.streamResponseStatusCodes === undefined) {\n request.streamResponseStatusCodes = getStreamingResponseStatusCodes(operationSpec);\n }\n\n try {\n const rawResponse = await this.sendRequest(request);\n const flatResponse = flattenResponse(\n rawResponse,\n operationSpec.responses[rawResponse.status],\n ) as T;\n if (options?.onResponse) {\n options.onResponse(rawResponse, flatResponse);\n }\n return flatResponse;\n } catch (error: any) {\n if (typeof error === \"object\" && error?.response) {\n const rawResponse = error.response;\n const flatResponse = flattenResponse(\n rawResponse,\n operationSpec.responses[error.statusCode] || operationSpec.responses[\"default\"],\n );\n error.details = flatResponse;\n if (options?.onResponse) {\n options.onResponse(rawResponse, flatResponse, error);\n }\n }\n throw error;\n }\n }\n}\n\nfunction createDefaultPipeline(options: ServiceClientOptions): Pipeline {\n const credentialScopes = getCredentialScopes(options);\n const credentialOptions =\n options.credential && credentialScopes\n ? { credentialScopes, credential: options.credential }\n : undefined;\n\n return createClientPipeline({\n ...options,\n credentialOptions,\n });\n}\n\nfunction getCredentialScopes(options: ServiceClientOptions): string | string[] | undefined {\n if (options.credentialScopes) {\n return options.credentialScopes;\n }\n\n if (options.endpoint) {\n return `${options.endpoint}/.default`;\n }\n\n if (options.baseUri) {\n return `${options.baseUri}/.default`;\n }\n\n if (options.credential && !options.credentialScopes) {\n throw new Error(\n `When using credentials, the ServiceClientOptions must contain either a endpoint or a credentialScopes. Unable to create a bearerTokenAuthenticationPolicy`,\n );\n }\n\n return undefined;\n}\n", "// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport { AuthorizeRequestOnChallengeOptions } from \"@azure/core-rest-pipeline\";\nimport { logger as coreClientLogger } from \"./log.js\";\nimport { decodeStringToString } from \"./base64.js\";\n\n/**\n * Converts: `Bearer a=\"b\", c=\"d\", Bearer d=\"e\", f=\"g\"`.\n * Into: `[ { a: 'b', c: 'd' }, { d: 'e', f: 'g' } ]`.\n *\n * @internal\n */\nexport function parseCAEChallenge(challenges: string): any[] {\n const bearerChallenges = `, ${challenges.trim()}`.split(\", Bearer \").filter((x) => x);\n return bearerChallenges.map((challenge) => {\n const challengeParts = `${challenge.trim()}, `.split('\", ').filter((x) => x);\n const keyValuePairs = challengeParts.map((keyValue) =>\n (([key, value]) => ({ [key]: value }))(keyValue.trim().split('=\"')),\n );\n // Key-value pairs to plain object:\n return keyValuePairs.reduce((a, b) => ({ ...a, ...b }), {});\n });\n}\n\n/**\n * CAE Challenge structure\n */\nexport interface CAEChallenge {\n scope: string;\n claims: string;\n}\n\n/**\n * This function can be used as a callback for the `bearerTokenAuthenticationPolicy` of `@azure/core-rest-pipeline`, to support CAE challenges:\n * [Continuous Access Evaluation](https://docs.microsoft.com/azure/active-directory/conditional-access/concept-continuous-access-evaluation).\n *\n * Call the `bearerTokenAuthenticationPolicy` with the following options:\n *\n * ```ts\n * import { bearerTokenAuthenticationPolicy } from \"@azure/core-rest-pipeline\";\n * import { authorizeRequestOnClaimChallenge } from \"@azure/core-client\";\n *\n * const bearerTokenAuthenticationPolicy = bearerTokenAuthenticationPolicy({\n * authorizeRequestOnChallenge: authorizeRequestOnClaimChallenge\n * });\n * ```\n *\n * Once provided, the `bearerTokenAuthenticationPolicy` policy will internally handle Continuous Access Evaluation (CAE) challenges.\n * When it can't complete a challenge it will return the 401 (unauthorized) response from ARM.\n *\n * Example challenge with claims:\n *\n * ```\n * Bearer authorization_uri=\"https://login.windows-ppe.net/\", error=\"invalid_token\",\n * error_description=\"User session has been revoked\",\n * claims=\"eyJhY2Nlc3NfdG9rZW4iOnsibmJmIjp7ImVzc2VudGlhbCI6dHJ1ZSwgInZhbHVlIjoiMTYwMzc0MjgwMCJ9fX0=\"\n * ```\n */\nexport async function authorizeRequestOnClaimChallenge(\n onChallengeOptions: AuthorizeRequestOnChallengeOptions,\n): Promise {\n const { scopes, response } = onChallengeOptions;\n const logger = onChallengeOptions.logger || coreClientLogger;\n\n const challenge = response.headers.get(\"WWW-Authenticate\");\n if (!challenge) {\n logger.info(\n `The WWW-Authenticate header was missing. Failed to perform the Continuous Access Evaluation authentication flow.`,\n );\n return false;\n }\n const challenges: CAEChallenge[] = parseCAEChallenge(challenge) || [];\n\n const parsedChallenge = challenges.find((x) => x.claims);\n if (!parsedChallenge) {\n logger.info(\n `The WWW-Authenticate header was missing the necessary \"claims\" to perform the Continuous Access Evaluation authentication flow.`,\n );\n return false;\n }\n\n const accessToken = await onChallengeOptions.getAccessToken(\n parsedChallenge.scope ? [parsedChallenge.scope] : scopes,\n {\n claims: decodeStringToString(parsedChallenge.claims),\n },\n );\n\n if (!accessToken) {\n return false;\n }\n\n onChallengeOptions.request.headers.set(\"Authorization\", `Bearer ${accessToken.token}`);\n return true;\n}\n", "// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport {\n AuthorizeRequestOnChallengeOptions,\n PipelineRequest,\n PipelineResponse,\n} from \"@azure/core-rest-pipeline\";\n\nimport { GetTokenOptions } from \"@azure/core-auth\";\n\n/**\n * A set of constants used internally when processing requests.\n */\nconst Constants = {\n DefaultScope: \"/.default\",\n /**\n * Defines constants for use with HTTP headers.\n */\n HeaderConstants: {\n /**\n * The Authorization header.\n */\n AUTHORIZATION: \"authorization\",\n },\n};\n\nfunction isUuid(text: string): boolean {\n return /^[0-9a-fA-F]{8}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{12}$/.test(\n text,\n );\n}\n\n/**\n * Defines a callback to handle auth challenge for Storage APIs.\n * This implements the bearer challenge process described here: https://docs.microsoft.com/rest/api/storageservices/authorize-with-azure-active-directory#bearer-challenge\n * Handling has specific features for storage that departs to the general AAD challenge docs.\n **/\nexport const authorizeRequestOnTenantChallenge: (\n challengeOptions: AuthorizeRequestOnChallengeOptions,\n) => Promise = async (challengeOptions) => {\n const requestOptions = requestToOptions(challengeOptions.request);\n const challenge = getChallenge(challengeOptions.response);\n if (challenge) {\n const challengeInfo: Challenge = parseChallenge(challenge);\n const challengeScopes = buildScopes(challengeOptions, challengeInfo);\n const tenantId = extractTenantId(challengeInfo);\n if (!tenantId) {\n return false;\n }\n const accessToken = await challengeOptions.getAccessToken(challengeScopes, {\n ...requestOptions,\n tenantId,\n });\n\n if (!accessToken) {\n return false;\n }\n\n challengeOptions.request.headers.set(\n Constants.HeaderConstants.AUTHORIZATION,\n `Bearer ${accessToken.token}`,\n );\n return true;\n }\n return false;\n};\n\n/**\n * Extracts the tenant id from the challenge information\n * The tenant id is contained in the authorization_uri as the first\n * path part.\n */\nfunction extractTenantId(challengeInfo: Challenge): string | undefined {\n const parsedAuthUri = new URL(challengeInfo.authorization_uri);\n const pathSegments = parsedAuthUri.pathname.split(\"/\");\n const tenantId = pathSegments[1];\n if (tenantId && isUuid(tenantId)) {\n return tenantId;\n }\n return undefined;\n}\n\n/**\n * Builds the authentication scopes based on the information that comes in the\n * challenge information. Scopes url is present in the resource_id, if it is empty\n * we keep using the original scopes.\n */\nfunction buildScopes(\n challengeOptions: AuthorizeRequestOnChallengeOptions,\n challengeInfo: Challenge,\n): string[] {\n if (!challengeInfo.resource_id) {\n return challengeOptions.scopes;\n }\n\n const challengeScopes = new URL(challengeInfo.resource_id);\n challengeScopes.pathname = Constants.DefaultScope;\n let scope = challengeScopes.toString();\n if (scope === \"https://disk.azure.com/.default\") {\n // the extra slash is required by the service\n scope = \"https://disk.azure.com//.default\";\n }\n return [scope];\n}\n\n/**\n * We will retrieve the challenge only if the response status code was 401,\n * and if the response contained the header \"WWW-Authenticate\" with a non-empty value.\n */\nfunction getChallenge(response: PipelineResponse): string | undefined {\n const challenge = response.headers.get(\"WWW-Authenticate\");\n if (response.status === 401 && challenge) {\n return challenge;\n }\n return;\n}\n\n/**\n * Challenge structure\n */\ninterface Challenge {\n authorization_uri: string;\n resource_id?: string;\n}\n\n/**\n * Converts: `Bearer a=\"b\" c=\"d\"`.\n * Into: `[ { a: 'b', c: 'd' }]`.\n *\n * @internal\n */\nfunction parseChallenge(challenge: string): Challenge {\n const bearerChallenge = challenge.slice(\"Bearer \".length);\n const challengeParts = `${bearerChallenge.trim()} `.split(\" \").filter((x) => x);\n const keyValuePairs = challengeParts.map((keyValue) =>\n (([key, value]) => ({ [key]: value }))(keyValue.trim().split(\"=\")),\n );\n // Key-value pairs to plain object:\n return keyValuePairs.reduce((a, b) => ({ ...a, ...b }), {} as Challenge);\n}\n\n/**\n * Extracts the options form a Pipeline Request for later re-use\n */\nfunction requestToOptions(request: PipelineRequest): GetTokenOptions {\n return {\n abortSignal: request.abortSignal,\n requestOptions: {\n timeout: request.timeout,\n },\n tracingOptions: request.tracingOptions,\n };\n}\n", "// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nexport { createSerializer, MapperTypeNames } from \"./serializer.js\";\nexport { ServiceClient, ServiceClientOptions } from \"./serviceClient.js\";\nexport { createClientPipeline, InternalClientPipelineOptions } from \"./pipeline.js\";\nexport {\n OperationSpec,\n OperationArguments,\n OperationOptions,\n OperationResponseMap,\n OperationParameter,\n OperationQueryParameter,\n OperationURLParameter,\n Serializer,\n BaseMapper,\n Mapper,\n MapperType,\n SimpleMapperType,\n EnumMapper,\n EnumMapperType,\n SequenceMapper,\n SequenceMapperType,\n DictionaryMapper,\n DictionaryMapperType,\n CompositeMapper,\n CompositeMapperType,\n MapperConstraints,\n OperationRequest,\n OperationRequestOptions,\n OperationRequestInfo,\n QueryCollectionFormat,\n ParameterPath,\n FullOperationResponse,\n PolymorphicDiscriminator,\n SpanConfig,\n XML_ATTRKEY,\n XML_CHARKEY,\n XmlOptions,\n SerializerOptions,\n RawResponseCallback,\n CommonClientOptions,\n AdditionalPolicyConfig,\n} from \"./interfaces.js\";\nexport {\n deserializationPolicy,\n deserializationPolicyName,\n DeserializationPolicyOptions,\n DeserializationContentTypes,\n} from \"./deserializationPolicy.js\";\nexport {\n serializationPolicy,\n serializationPolicyName,\n SerializationPolicyOptions,\n} from \"./serializationPolicy.js\";\nexport { authorizeRequestOnClaimChallenge } from \"./authorizeRequestOnClaimChallenge.js\";\nexport { authorizeRequestOnTenantChallenge } from \"./authorizeRequestOnTenantChallenge.js\";\n", "// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport { createClientLogger } from \"@azure/logger\";\n\n/**\n * The `@azure/logger` configuration for this package.\n * @internal\n */\nexport const logger = createClientLogger(\"core-lro\");\n", "// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\n/**\n * The default time interval to wait before sending the next polling request.\n */\nexport const POLL_INTERVAL_IN_MS = 2000;\n/**\n * The closed set of terminal states.\n */\nexport const terminalStates = [\"succeeded\", \"canceled\", \"failed\"];\n", "// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport {\n LroError,\n InnerError,\n Operation,\n OperationStatus,\n RestorableOperationState,\n StateProxy,\n} from \"./models.js\";\nimport { logger } from \"../logger.js\";\nimport { terminalStates } from \"./constants.js\";\n\n/**\n * Deserializes the state\n */\nexport function deserializeState(\n serializedState: string,\n): RestorableOperationState {\n try {\n return JSON.parse(serializedState).state;\n } catch (e) {\n throw new Error(`Unable to deserialize input state: ${serializedState}`);\n }\n}\n\nfunction setStateError(inputs: {\n state: TState;\n stateProxy: StateProxy;\n isOperationError: (error: Error) => boolean;\n}): (error: Error) => never {\n const { state, stateProxy, isOperationError } = inputs;\n return (error: Error) => {\n if (isOperationError(error)) {\n stateProxy.setError(state, error);\n stateProxy.setFailed(state);\n }\n throw error;\n };\n}\n\nfunction appendReadableErrorMessage(currentMessage: string, innerMessage: string): string {\n let message = currentMessage;\n if (message.slice(-1) !== \".\") {\n message = message + \".\";\n }\n return message + \" \" + innerMessage;\n}\n\nfunction simplifyError(err: LroError): {\n code: string;\n message: string;\n} {\n let message = err.message;\n let code = err.code;\n let curErr = err as InnerError;\n while (curErr.innererror) {\n curErr = curErr.innererror;\n code = curErr.code;\n message = appendReadableErrorMessage(message, curErr.message);\n }\n return {\n code,\n message,\n };\n}\n\nfunction processOperationStatus(result: {\n status: OperationStatus;\n response: TResponse;\n state: RestorableOperationState;\n stateProxy: StateProxy;\n processResult?: (result: TResponse, state: TState) => TResult;\n getError?: (response: TResponse) => LroError | undefined;\n isDone?: (lastResponse: TResponse, state: TState) => boolean;\n setErrorAsResult: boolean;\n}): void {\n const { state, stateProxy, status, isDone, processResult, getError, response, setErrorAsResult } =\n result;\n switch (status) {\n case \"succeeded\": {\n stateProxy.setSucceeded(state);\n break;\n }\n case \"failed\": {\n const err = getError?.(response);\n let postfix = \"\";\n if (err) {\n const { code, message } = simplifyError(err);\n postfix = `. ${code}. ${message}`;\n }\n const errStr = `The long-running operation has failed${postfix}`;\n stateProxy.setError(state, new Error(errStr));\n stateProxy.setFailed(state);\n logger.warning(errStr);\n break;\n }\n case \"canceled\": {\n stateProxy.setCanceled(state);\n break;\n }\n }\n if (\n isDone?.(response, state) ||\n (isDone === undefined &&\n [\"succeeded\", \"canceled\"].concat(setErrorAsResult ? [] : [\"failed\"]).includes(status))\n ) {\n stateProxy.setResult(\n state,\n buildResult({\n response,\n state,\n processResult,\n }),\n );\n }\n}\n\nfunction buildResult(inputs: {\n response: TResponse;\n state: TState;\n processResult?: (result: TResponse, state: TState) => TResult;\n}): TResult {\n const { processResult, response, state } = inputs;\n return processResult ? processResult(response, state) : (response as unknown as TResult);\n}\n\n/**\n * Initiates the long-running operation.\n */\nexport async function initOperation(inputs: {\n init: Operation[\"init\"];\n stateProxy: StateProxy;\n getOperationStatus: (inputs: {\n response: TResponse;\n state: RestorableOperationState;\n operationLocation?: string;\n }) => OperationStatus;\n processResult?: (result: TResponse, state: TState) => TResult;\n withOperationLocation?: (operationLocation: string, isUpdated: boolean) => void;\n setErrorAsResult: boolean;\n}): Promise> {\n const {\n init,\n stateProxy,\n processResult,\n getOperationStatus,\n withOperationLocation,\n setErrorAsResult,\n } = inputs;\n const { operationLocation, resourceLocation, metadata, response } = await init();\n if (operationLocation) withOperationLocation?.(operationLocation, false);\n const config = {\n metadata,\n operationLocation,\n resourceLocation,\n };\n logger.verbose(`LRO: Operation description:`, config);\n const state = stateProxy.initState(config);\n const status = getOperationStatus({ response, state, operationLocation });\n processOperationStatus({ state, status, stateProxy, response, setErrorAsResult, processResult });\n return state;\n}\n\nasync function pollOperationHelper(inputs: {\n poll: Operation[\"poll\"];\n stateProxy: StateProxy;\n state: RestorableOperationState;\n operationLocation: string;\n getOperationStatus: (\n response: TResponse,\n state: RestorableOperationState,\n ) => OperationStatus;\n getResourceLocation: (\n response: TResponse,\n state: RestorableOperationState,\n ) => string | undefined;\n isOperationError: (error: Error) => boolean;\n options?: TOptions;\n}): Promise<{\n status: OperationStatus;\n response: TResponse;\n}> {\n const {\n poll,\n state,\n stateProxy,\n operationLocation,\n getOperationStatus,\n getResourceLocation,\n isOperationError,\n options,\n } = inputs;\n const response = await poll(operationLocation, options).catch(\n setStateError({\n state,\n stateProxy,\n isOperationError,\n }),\n );\n const status = getOperationStatus(response, state);\n logger.verbose(\n `LRO: Status:\\n\\tPolling from: ${\n state.config.operationLocation\n }\\n\\tOperation status: ${status}\\n\\tPolling status: ${\n terminalStates.includes(status) ? \"Stopped\" : \"Running\"\n }`,\n );\n if (status === \"succeeded\") {\n const resourceLocation = getResourceLocation(response, state);\n if (resourceLocation !== undefined) {\n return {\n response: await poll(resourceLocation).catch(\n setStateError({ state, stateProxy, isOperationError }),\n ),\n status,\n };\n }\n }\n return { response, status };\n}\n\n/** Polls the long-running operation. */\nexport async function pollOperation(inputs: {\n poll: Operation[\"poll\"];\n stateProxy: StateProxy;\n state: RestorableOperationState;\n getOperationStatus: (\n response: TResponse,\n state: RestorableOperationState,\n ) => OperationStatus;\n getResourceLocation: (\n response: TResponse,\n state: RestorableOperationState,\n ) => string | undefined;\n isOperationError: (error: Error) => boolean;\n getPollingInterval?: (response: TResponse) => number | undefined;\n setDelay: (intervalInMs: number) => void;\n getOperationLocation?: (\n response: TResponse,\n state: RestorableOperationState,\n ) => string | undefined;\n withOperationLocation?: (operationLocation: string, isUpdated: boolean) => void;\n processResult?: (result: TResponse, state: TState) => TResult;\n getError?: (response: TResponse) => LroError | undefined;\n updateState?: (state: TState, lastResponse: TResponse) => void;\n isDone?: (lastResponse: TResponse, state: TState) => boolean;\n setErrorAsResult: boolean;\n options?: TOptions;\n}): Promise {\n const {\n poll,\n state,\n stateProxy,\n options,\n getOperationStatus,\n getResourceLocation,\n getOperationLocation,\n isOperationError,\n withOperationLocation,\n getPollingInterval,\n processResult,\n getError,\n updateState,\n setDelay,\n isDone,\n setErrorAsResult,\n } = inputs;\n const { operationLocation } = state.config;\n if (operationLocation !== undefined) {\n const { response, status } = await pollOperationHelper({\n poll,\n getOperationStatus,\n state,\n stateProxy,\n operationLocation,\n getResourceLocation,\n isOperationError,\n options,\n });\n processOperationStatus({\n status,\n response,\n state,\n stateProxy,\n isDone,\n processResult,\n getError,\n setErrorAsResult,\n });\n\n if (!terminalStates.includes(status)) {\n const intervalInMs = getPollingInterval?.(response);\n if (intervalInMs) setDelay(intervalInMs);\n const location = getOperationLocation?.(response, state);\n if (location !== undefined) {\n const isUpdated = operationLocation !== location;\n state.config.operationLocation = location;\n withOperationLocation?.(location, isUpdated);\n } else withOperationLocation?.(operationLocation, false);\n }\n updateState?.(state, response);\n }\n}\n", "// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport {\n HttpOperationMode,\n LongRunningOperation,\n LroResourceLocationConfig,\n LroResponse,\n RawResponse,\n ResponseBody,\n} from \"./models.js\";\nimport {\n LroError,\n OperationConfig,\n OperationStatus,\n RestorableOperationState,\n StateProxy,\n} from \"../poller/models.js\";\nimport { initOperation, pollOperation } from \"../poller/operation.js\";\nimport { AbortSignalLike } from \"@azure/abort-controller\";\nimport { logger } from \"../logger.js\";\n\nfunction getOperationLocationPollingUrl(inputs: {\n operationLocation?: string;\n azureAsyncOperation?: string;\n}): string | undefined {\n const { azureAsyncOperation, operationLocation } = inputs;\n return operationLocation ?? azureAsyncOperation;\n}\n\nfunction getLocationHeader(rawResponse: RawResponse): string | undefined {\n return rawResponse.headers[\"location\"];\n}\n\nfunction getOperationLocationHeader(rawResponse: RawResponse): string | undefined {\n return rawResponse.headers[\"operation-location\"];\n}\n\nfunction getAzureAsyncOperationHeader(rawResponse: RawResponse): string | undefined {\n return rawResponse.headers[\"azure-asyncoperation\"];\n}\n\nfunction findResourceLocation(inputs: {\n requestMethod?: string;\n location?: string;\n requestPath?: string;\n resourceLocationConfig?: LroResourceLocationConfig;\n}): string | undefined {\n const { location, requestMethod, requestPath, resourceLocationConfig } = inputs;\n switch (requestMethod) {\n case \"PUT\": {\n return requestPath;\n }\n case \"DELETE\": {\n return undefined;\n }\n case \"PATCH\": {\n return getDefault() ?? requestPath;\n }\n default: {\n return getDefault();\n }\n }\n\n function getDefault() {\n switch (resourceLocationConfig) {\n case \"azure-async-operation\": {\n return undefined;\n }\n case \"original-uri\": {\n return requestPath;\n }\n case \"location\":\n default: {\n return location;\n }\n }\n }\n}\n\nexport function inferLroMode(inputs: {\n rawResponse: RawResponse;\n requestPath?: string;\n requestMethod?: string;\n resourceLocationConfig?: LroResourceLocationConfig;\n}): (OperationConfig & { mode: HttpOperationMode }) | undefined {\n const { rawResponse, requestMethod, requestPath, resourceLocationConfig } = inputs;\n const operationLocation = getOperationLocationHeader(rawResponse);\n const azureAsyncOperation = getAzureAsyncOperationHeader(rawResponse);\n const pollingUrl = getOperationLocationPollingUrl({ operationLocation, azureAsyncOperation });\n const location = getLocationHeader(rawResponse);\n const normalizedRequestMethod = requestMethod?.toLocaleUpperCase();\n if (pollingUrl !== undefined) {\n return {\n mode: \"OperationLocation\",\n operationLocation: pollingUrl,\n resourceLocation: findResourceLocation({\n requestMethod: normalizedRequestMethod,\n location,\n requestPath,\n resourceLocationConfig,\n }),\n };\n } else if (location !== undefined) {\n return {\n mode: \"ResourceLocation\",\n operationLocation: location,\n };\n } else if (normalizedRequestMethod === \"PUT\" && requestPath) {\n return {\n mode: \"Body\",\n operationLocation: requestPath,\n };\n } else {\n return undefined;\n }\n}\n\nfunction transformStatus(inputs: { status: unknown; statusCode: number }): OperationStatus {\n const { status, statusCode } = inputs;\n if (typeof status !== \"string\" && status !== undefined) {\n throw new Error(\n `Polling was unsuccessful. Expected status to have a string value or no value but it has instead: ${status}. This doesn't necessarily indicate the operation has failed. Check your Azure subscription or resource status for more information.`,\n );\n }\n switch (status?.toLocaleLowerCase()) {\n case undefined:\n return toOperationStatus(statusCode);\n case \"succeeded\":\n return \"succeeded\";\n case \"failed\":\n return \"failed\";\n case \"running\":\n case \"accepted\":\n case \"started\":\n case \"canceling\":\n case \"cancelling\":\n return \"running\";\n case \"canceled\":\n case \"cancelled\":\n return \"canceled\";\n default: {\n logger.verbose(`LRO: unrecognized operation status: ${status}`);\n return status as OperationStatus;\n }\n }\n}\n\nfunction getStatus(rawResponse: RawResponse): OperationStatus {\n const { status } = (rawResponse.body as ResponseBody) ?? {};\n return transformStatus({ status, statusCode: rawResponse.statusCode });\n}\n\nfunction getProvisioningState(rawResponse: RawResponse): OperationStatus {\n const { properties, provisioningState } = (rawResponse.body as ResponseBody) ?? {};\n const status = properties?.provisioningState ?? provisioningState;\n return transformStatus({ status, statusCode: rawResponse.statusCode });\n}\n\nfunction toOperationStatus(statusCode: number): OperationStatus {\n if (statusCode === 202) {\n return \"running\";\n } else if (statusCode < 300) {\n return \"succeeded\";\n } else {\n return \"failed\";\n }\n}\n\nexport function parseRetryAfter({ rawResponse }: LroResponse): number | undefined {\n const retryAfter: string | undefined = rawResponse.headers[\"retry-after\"];\n if (retryAfter !== undefined) {\n // Retry-After header value is either in HTTP date format, or in seconds\n const retryAfterInSeconds = parseInt(retryAfter);\n return isNaN(retryAfterInSeconds)\n ? calculatePollingIntervalFromDate(new Date(retryAfter))\n : retryAfterInSeconds * 1000;\n }\n return undefined;\n}\n\nexport function getErrorFromResponse(response: LroResponse): LroError | undefined {\n const error = accessBodyProperty(response, \"error\");\n if (!error) {\n logger.warning(\n `The long-running operation failed but there is no error property in the response's body`,\n );\n return;\n }\n if (!error.code || !error.message) {\n logger.warning(\n `The long-running operation failed but the error property in the response's body doesn't contain code or message`,\n );\n return;\n }\n return error as LroError;\n}\n\nfunction calculatePollingIntervalFromDate(retryAfterDate: Date): number | undefined {\n const timeNow = Math.floor(new Date().getTime());\n const retryAfterTime = retryAfterDate.getTime();\n if (timeNow < retryAfterTime) {\n return retryAfterTime - timeNow;\n }\n return undefined;\n}\n\nexport function getStatusFromInitialResponse(inputs: {\n response: LroResponse;\n state: RestorableOperationState;\n operationLocation?: string;\n}): OperationStatus {\n const { response, state, operationLocation } = inputs;\n function helper(): OperationStatus {\n const mode = state.config.metadata?.[\"mode\"];\n switch (mode) {\n case undefined:\n return toOperationStatus(response.rawResponse.statusCode);\n case \"Body\":\n return getOperationStatus(response, state);\n default:\n return \"running\";\n }\n }\n const status = helper();\n return status === \"running\" && operationLocation === undefined ? \"succeeded\" : status;\n}\n\n/**\n * Initiates the long-running operation.\n */\nexport async function initHttpOperation(inputs: {\n stateProxy: StateProxy;\n resourceLocationConfig?: LroResourceLocationConfig;\n processResult?: (result: unknown, state: TState) => TResult;\n setErrorAsResult: boolean;\n lro: LongRunningOperation;\n}): Promise> {\n const { stateProxy, resourceLocationConfig, processResult, lro, setErrorAsResult } = inputs;\n return initOperation({\n init: async () => {\n const response = await lro.sendInitialRequest();\n const config = inferLroMode({\n rawResponse: response.rawResponse,\n requestPath: lro.requestPath,\n requestMethod: lro.requestMethod,\n resourceLocationConfig,\n });\n return {\n response,\n operationLocation: config?.operationLocation,\n resourceLocation: config?.resourceLocation,\n ...(config?.mode ? { metadata: { mode: config.mode } } : {}),\n };\n },\n stateProxy,\n processResult: processResult\n ? ({ flatResponse }, state) => processResult(flatResponse, state)\n : ({ flatResponse }) => flatResponse as TResult,\n getOperationStatus: getStatusFromInitialResponse,\n setErrorAsResult,\n });\n}\n\nexport function getOperationLocation(\n { rawResponse }: LroResponse,\n state: RestorableOperationState,\n): string | undefined {\n const mode = state.config.metadata?.[\"mode\"];\n switch (mode) {\n case \"OperationLocation\": {\n return getOperationLocationPollingUrl({\n operationLocation: getOperationLocationHeader(rawResponse),\n azureAsyncOperation: getAzureAsyncOperationHeader(rawResponse),\n });\n }\n case \"ResourceLocation\": {\n return getLocationHeader(rawResponse);\n }\n case \"Body\":\n default: {\n return undefined;\n }\n }\n}\n\nexport function getOperationStatus(\n { rawResponse }: LroResponse,\n state: RestorableOperationState,\n): OperationStatus {\n const mode = state.config.metadata?.[\"mode\"];\n switch (mode) {\n case \"OperationLocation\": {\n return getStatus(rawResponse);\n }\n case \"ResourceLocation\": {\n return toOperationStatus(rawResponse.statusCode);\n }\n case \"Body\": {\n return getProvisioningState(rawResponse);\n }\n default:\n throw new Error(`Internal error: Unexpected operation mode: ${mode}`);\n }\n}\n\nfunction accessBodyProperty

(\n { flatResponse, rawResponse }: LroResponse,\n prop: P,\n): ResponseBody[P] {\n return (flatResponse as ResponseBody)?.[prop] ?? (rawResponse.body as ResponseBody)?.[prop];\n}\n\nexport function getResourceLocation(\n res: LroResponse,\n state: RestorableOperationState,\n): string | undefined {\n const loc = accessBodyProperty(res, \"resourceLocation\");\n if (loc && typeof loc === \"string\") {\n state.config.resourceLocation = loc;\n }\n return state.config.resourceLocation;\n}\n\nexport function isOperationError(e: Error): boolean {\n return e.name === \"RestError\";\n}\n\n/** Polls the long-running operation. */\nexport async function pollHttpOperation(inputs: {\n lro: LongRunningOperation;\n stateProxy: StateProxy;\n processResult?: (result: unknown, state: TState) => TResult;\n updateState?: (state: TState, lastResponse: LroResponse) => void;\n isDone?: (lastResponse: LroResponse, state: TState) => boolean;\n setDelay: (intervalInMs: number) => void;\n options?: { abortSignal?: AbortSignalLike };\n state: RestorableOperationState;\n setErrorAsResult: boolean;\n}): Promise {\n const {\n lro,\n stateProxy,\n options,\n processResult,\n updateState,\n setDelay,\n state,\n setErrorAsResult,\n } = inputs;\n return pollOperation({\n state,\n stateProxy,\n setDelay,\n processResult: processResult\n ? ({ flatResponse }, inputState) => processResult(flatResponse, inputState)\n : ({ flatResponse }) => flatResponse as TResult,\n getError: getErrorFromResponse,\n updateState,\n getPollingInterval: parseRetryAfter,\n getOperationLocation,\n getOperationStatus,\n isOperationError,\n getResourceLocation,\n options,\n /**\n * The expansion here is intentional because `lro` could be an object that\n * references an inner this, so we need to preserve a reference to it.\n */\n poll: async (location: string, inputOptions?: { abortSignal?: AbortSignalLike }) =>\n lro.sendPollRequest(location, inputOptions),\n setErrorAsResult,\n });\n}\n", "// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport { AbortSignalLike } from \"@azure/abort-controller\";\nimport {\n BuildCreatePollerOptions,\n CreatePollerOptions,\n Operation,\n OperationState,\n RestorableOperationState,\n SimplePollerLike,\n StateProxy,\n} from \"./models.js\";\nimport { deserializeState, initOperation, pollOperation } from \"./operation.js\";\nimport { POLL_INTERVAL_IN_MS } from \"./constants.js\";\nimport { delay } from \"@azure/core-util\";\n\nconst createStateProxy: >() => StateProxy<\n TState,\n TResult\n> = () => ({\n /**\n * The state at this point is created to be of type OperationState.\n * It will be updated later to be of type TState when the\n * customer-provided callback, `updateState`, is called during polling.\n */\n initState: (config) => ({ status: \"running\", config }) as any,\n setCanceled: (state) => (state.status = \"canceled\"),\n setError: (state, error) => (state.error = error),\n setResult: (state, result) => (state.result = result),\n setRunning: (state) => (state.status = \"running\"),\n setSucceeded: (state) => (state.status = \"succeeded\"),\n setFailed: (state) => (state.status = \"failed\"),\n\n getError: (state) => state.error,\n getResult: (state) => state.result,\n isCanceled: (state) => state.status === \"canceled\",\n isFailed: (state) => state.status === \"failed\",\n isRunning: (state) => state.status === \"running\",\n isSucceeded: (state) => state.status === \"succeeded\",\n});\n\n/**\n * Returns a poller factory.\n */\nexport function buildCreatePoller>(\n inputs: BuildCreatePollerOptions,\n): (\n lro: Operation,\n options?: CreatePollerOptions,\n) => Promise> {\n const {\n getOperationLocation,\n getStatusFromInitialResponse,\n getStatusFromPollResponse,\n isOperationError,\n getResourceLocation,\n getPollingInterval,\n getError,\n resolveOnUnsuccessful,\n } = inputs;\n return async (\n { init, poll }: Operation,\n options?: CreatePollerOptions,\n ) => {\n const {\n processResult,\n updateState,\n withOperationLocation: withOperationLocationCallback,\n intervalInMs = POLL_INTERVAL_IN_MS,\n restoreFrom,\n } = options || {};\n const stateProxy = createStateProxy();\n const withOperationLocation = withOperationLocationCallback\n ? (() => {\n let called = false;\n return (operationLocation: string, isUpdated: boolean) => {\n if (isUpdated) withOperationLocationCallback(operationLocation);\n else if (!called) withOperationLocationCallback(operationLocation);\n called = true;\n };\n })()\n : undefined;\n const state: RestorableOperationState = restoreFrom\n ? deserializeState(restoreFrom)\n : await initOperation({\n init,\n stateProxy,\n processResult,\n getOperationStatus: getStatusFromInitialResponse,\n withOperationLocation,\n setErrorAsResult: !resolveOnUnsuccessful,\n });\n let resultPromise: Promise | undefined;\n const abortController = new AbortController();\n // Progress handlers\n type Handler = (state: TState) => void;\n const handlers = new Map();\n const handleProgressEvents = async (): Promise => handlers.forEach((h) => h(state));\n const cancelErrMsg = \"Operation was canceled\";\n let currentPollIntervalInMs = intervalInMs;\n\n const poller: SimplePollerLike = {\n getOperationState: () => state,\n getResult: () => state.result,\n isDone: () => [\"succeeded\", \"failed\", \"canceled\"].includes(state.status),\n isStopped: () => resultPromise === undefined,\n stopPolling: () => {\n abortController.abort();\n },\n toString: () =>\n JSON.stringify({\n state,\n }),\n onProgress: (callback: (state: TState) => void) => {\n const s = Symbol();\n handlers.set(s, callback);\n return () => handlers.delete(s);\n },\n pollUntilDone: (pollOptions?: { abortSignal?: AbortSignalLike }) =>\n (resultPromise ??= (async () => {\n const { abortSignal: inputAbortSignal } = pollOptions || {};\n // In the future we can use AbortSignal.any() instead\n function abortListener(): void {\n abortController.abort();\n }\n const abortSignal = abortController.signal;\n if (inputAbortSignal?.aborted) {\n abortController.abort();\n } else if (!abortSignal.aborted) {\n inputAbortSignal?.addEventListener(\"abort\", abortListener, { once: true });\n }\n\n try {\n if (!poller.isDone()) {\n await poller.poll({ abortSignal });\n while (!poller.isDone()) {\n await delay(currentPollIntervalInMs, { abortSignal });\n await poller.poll({ abortSignal });\n }\n }\n } finally {\n inputAbortSignal?.removeEventListener(\"abort\", abortListener);\n }\n if (resolveOnUnsuccessful) {\n return poller.getResult() as TResult;\n } else {\n switch (state.status) {\n case \"succeeded\":\n return poller.getResult() as TResult;\n case \"canceled\":\n throw new Error(cancelErrMsg);\n case \"failed\":\n throw state.error;\n case \"notStarted\":\n case \"running\":\n throw new Error(`Polling completed without succeeding or failing`);\n }\n }\n })().finally(() => {\n resultPromise = undefined;\n })),\n async poll(pollOptions?: { abortSignal?: AbortSignalLike }): Promise {\n if (resolveOnUnsuccessful) {\n if (poller.isDone()) return;\n } else {\n switch (state.status) {\n case \"succeeded\":\n return;\n case \"canceled\":\n throw new Error(cancelErrMsg);\n case \"failed\":\n throw state.error;\n }\n }\n await pollOperation({\n poll,\n state,\n stateProxy,\n getOperationLocation,\n isOperationError,\n withOperationLocation,\n getPollingInterval,\n getOperationStatus: getStatusFromPollResponse,\n getResourceLocation,\n processResult,\n getError,\n updateState,\n options: pollOptions,\n setDelay: (pollIntervalInMs) => {\n currentPollIntervalInMs = pollIntervalInMs;\n },\n setErrorAsResult: !resolveOnUnsuccessful,\n });\n await handleProgressEvents();\n if (!resolveOnUnsuccessful) {\n switch (state.status) {\n case \"canceled\":\n throw new Error(cancelErrMsg);\n case \"failed\":\n throw state.error;\n }\n }\n },\n };\n return poller;\n };\n}\n", "// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport { LongRunningOperation, LroResponse } from \"./models.js\";\nimport { OperationState, SimplePollerLike } from \"../poller/models.js\";\nimport {\n getErrorFromResponse,\n getOperationLocation,\n getOperationStatus,\n getResourceLocation,\n getStatusFromInitialResponse,\n inferLroMode,\n isOperationError,\n parseRetryAfter,\n} from \"./operation.js\";\nimport { CreateHttpPollerOptions } from \"./models.js\";\nimport { buildCreatePoller } from \"../poller/poller.js\";\n\n/**\n * Creates a poller that can be used to poll a long-running operation.\n * @param lro - Description of the long-running operation\n * @param options - options to configure the poller\n * @returns an initialized poller\n */\nexport async function createHttpPoller>(\n lro: LongRunningOperation,\n options?: CreateHttpPollerOptions,\n): Promise> {\n const {\n resourceLocationConfig,\n intervalInMs,\n processResult,\n restoreFrom,\n updateState,\n withOperationLocation,\n resolveOnUnsuccessful = false,\n } = options || {};\n return buildCreatePoller({\n getStatusFromInitialResponse,\n getStatusFromPollResponse: getOperationStatus,\n isOperationError,\n getOperationLocation,\n getResourceLocation,\n getPollingInterval: parseRetryAfter,\n getError: getErrorFromResponse,\n resolveOnUnsuccessful,\n })(\n {\n init: async () => {\n const response = await lro.sendInitialRequest();\n const config = inferLroMode({\n rawResponse: response.rawResponse,\n requestPath: lro.requestPath,\n requestMethod: lro.requestMethod,\n resourceLocationConfig,\n });\n return {\n response,\n operationLocation: config?.operationLocation,\n resourceLocation: config?.resourceLocation,\n ...(config?.mode ? { metadata: { mode: config.mode } } : {}),\n };\n },\n poll: lro.sendPollRequest,\n },\n {\n intervalInMs,\n withOperationLocation,\n restoreFrom,\n updateState,\n processResult: processResult\n ? ({ flatResponse }, state) => processResult(flatResponse, state)\n : ({ flatResponse }) => flatResponse as TResult,\n },\n );\n}\n", "// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport { LongRunningOperation, LroResourceLocationConfig, RawResponse } from \"../../http/models.js\";\nimport { PollOperation, PollOperationState } from \"../pollOperation.js\";\nimport { RestorableOperationState, StateProxy } from \"../../poller/models.js\";\nimport { initHttpOperation, pollHttpOperation } from \"../../http/operation.js\";\nimport { AbortSignalLike } from \"@azure/abort-controller\";\nimport { PollerConfig } from \"./models.js\";\nimport { logger } from \"../../logger.js\";\n\nconst createStateProxy: >() => StateProxy<\n TState,\n TResult\n> = () => ({\n initState: (config) => ({ config, isStarted: true }) as any,\n setCanceled: (state) => (state.isCancelled = true),\n setError: (state, error) => (state.error = error),\n setResult: (state, result) => (state.result = result),\n setRunning: (state) => (state.isStarted = true),\n setSucceeded: (state) => (state.isCompleted = true),\n setFailed: () => {\n /** empty body */\n },\n\n getError: (state) => state.error,\n getResult: (state) => state.result,\n isCanceled: (state) => !!state.isCancelled,\n isFailed: (state) => !!state.error,\n isRunning: (state) => !!state.isStarted,\n isSucceeded: (state) => Boolean(state.isCompleted && !state.isCancelled && !state.error),\n});\n\nexport class GenericPollOperation>\n implements PollOperation\n{\n private pollerConfig?: PollerConfig;\n\n constructor(\n public state: RestorableOperationState,\n private lro: LongRunningOperation,\n private setErrorAsResult: boolean,\n private lroResourceLocationConfig?: LroResourceLocationConfig,\n private processResult?: (result: unknown, state: TState) => TResult,\n private updateState?: (state: TState, lastResponse: RawResponse) => void,\n private isDone?: (lastResponse: TResult, state: TState) => boolean,\n ) {}\n\n public setPollerConfig(pollerConfig: PollerConfig): void {\n this.pollerConfig = pollerConfig;\n }\n\n async update(options?: {\n abortSignal?: AbortSignalLike;\n fireProgress?: (state: TState) => void;\n }): Promise> {\n const stateProxy = createStateProxy();\n if (!this.state.isStarted) {\n this.state = {\n ...this.state,\n ...(await initHttpOperation({\n lro: this.lro,\n stateProxy,\n resourceLocationConfig: this.lroResourceLocationConfig,\n processResult: this.processResult,\n setErrorAsResult: this.setErrorAsResult,\n })),\n };\n }\n const updateState = this.updateState;\n const isDone = this.isDone;\n\n if (!this.state.isCompleted && this.state.error === undefined) {\n await pollHttpOperation({\n lro: this.lro,\n state: this.state,\n stateProxy,\n processResult: this.processResult,\n updateState: updateState\n ? (state, { rawResponse }) => updateState(state, rawResponse)\n : undefined,\n isDone: isDone\n ? ({ flatResponse }, state) => isDone(flatResponse as TResult, state)\n : undefined,\n options,\n setDelay: (intervalInMs) => {\n this.pollerConfig!.intervalInMs = intervalInMs;\n },\n setErrorAsResult: this.setErrorAsResult,\n });\n }\n options?.fireProgress?.(this.state);\n return this;\n }\n\n async cancel(): Promise> {\n logger.error(\"`cancelOperation` is deprecated because it wasn't implemented\");\n return this;\n }\n\n /**\n * Serializes the Poller operation.\n */\n public toString(): string {\n return JSON.stringify({\n state: this.state,\n });\n }\n}\n", "// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport { PollOperation, PollOperationState } from \"./pollOperation.js\";\nimport { AbortSignalLike } from \"@azure/abort-controller\";\nimport { CancelOnProgress } from \"../poller/models.js\";\nimport { PollerLike } from \"./models.js\";\n\n/**\n * PollProgressCallback is the type of the callback functions sent to onProgress.\n * These functions will receive a TState that is defined by your implementation of\n * the Poller class.\n */\nexport type PollProgressCallback = (state: TState) => void;\n\n/**\n * When a poller is manually stopped through the `stopPolling` method,\n * the poller will be rejected with an instance of the PollerStoppedError.\n */\nexport class PollerStoppedError extends Error {\n constructor(message: string) {\n super(message);\n this.name = \"PollerStoppedError\";\n Object.setPrototypeOf(this, PollerStoppedError.prototype);\n }\n}\n\n/**\n * When the operation is cancelled, the poller will be rejected with an instance\n * of the PollerCancelledError.\n */\nexport class PollerCancelledError extends Error {\n constructor(message: string) {\n super(message);\n this.name = \"PollerCancelledError\";\n Object.setPrototypeOf(this, PollerCancelledError.prototype);\n }\n}\n\n/**\n * A class that represents the definition of a program that polls through consecutive requests\n * until it reaches a state of completion.\n *\n * A poller can be executed manually, by polling request by request by calling to the `poll()` method repeatedly, until its operation is completed.\n * It also provides a way to wait until the operation completes, by calling `pollUntilDone()` and waiting until the operation finishes.\n * Pollers can also request the cancellation of the ongoing process to whom is providing the underlying long running operation.\n *\n * ```ts\n * const poller = new MyPoller();\n *\n * // Polling just once:\n * await poller.poll();\n *\n * // We can try to cancel the request here, by calling:\n * //\n * // await poller.cancelOperation();\n * //\n *\n * // Getting the final result:\n * const result = await poller.pollUntilDone();\n * ```\n *\n * The Poller is defined by two types, a type representing the state of the poller, which\n * must include a basic set of properties from `PollOperationState`,\n * and a return type defined by `TResult`, which can be anything.\n *\n * The Poller class implements the `PollerLike` interface, which allows poller implementations to avoid having\n * to export the Poller's class directly, and instead only export the already instantiated poller with the PollerLike type.\n *\n * ```ts\n * class Client {\n * public async makePoller: PollerLike {\n * const poller = new MyPoller({});\n * // It might be preferred to return the poller after the first request is made,\n * // so that some information can be obtained right away.\n * await poller.poll();\n * return poller;\n * }\n * }\n *\n * const poller: PollerLike = myClient.makePoller();\n * ```\n *\n * A poller can be created through its constructor, then it can be polled until it's completed.\n * At any point in time, the state of the poller can be obtained without delay through the getOperationState method.\n * At any point in time, the intermediate forms of the result type can be requested without delay.\n * Once the underlying operation is marked as completed, the poller will stop and the final value will be returned.\n *\n * ```ts\n * const poller = myClient.makePoller();\n * const state: MyOperationState = poller.getOperationState();\n *\n * // The intermediate result can be obtained at any time.\n * const result: MyResult | undefined = poller.getResult();\n *\n * // The final result can only be obtained after the poller finishes.\n * const result: MyResult = await poller.pollUntilDone();\n * ```\n *\n */\n// eslint-disable-next-line no-use-before-define\nexport abstract class Poller, TResult>\n implements PollerLike\n{\n /** controls whether to throw an error if the operation failed or was canceled. */\n protected resolveOnUnsuccessful: boolean = false;\n private stopped: boolean = true;\n private resolve?: (value: TResult) => void;\n private reject?: (error: PollerStoppedError | PollerCancelledError | Error) => void;\n private pollOncePromise?: Promise;\n private cancelPromise?: Promise;\n private promise: Promise;\n private pollProgressCallbacks: PollProgressCallback[] = [];\n\n /**\n * The poller's operation is available in full to any of the methods of the Poller class\n * and any class extending the Poller class.\n */\n protected operation: PollOperation;\n\n /**\n * A poller needs to be initialized by passing in at least the basic properties of the `PollOperation`.\n *\n * When writing an implementation of a Poller, this implementation needs to deal with the initialization\n * of any custom state beyond the basic definition of the poller. The basic poller assumes that the poller's\n * operation has already been defined, at least its basic properties. The code below shows how to approach\n * the definition of the constructor of a new custom poller.\n *\n * ```ts\n * export class MyPoller extends Poller {\n * constructor({\n * // Anything you might need outside of the basics\n * }) {\n * let state: MyOperationState = {\n * privateProperty: private,\n * publicProperty: public,\n * };\n *\n * const operation = {\n * state,\n * update,\n * cancel,\n * toString\n * }\n *\n * // Sending the operation to the parent's constructor.\n * super(operation);\n *\n * // You can assign more local properties here.\n * }\n * }\n * ```\n *\n * Inside of this constructor, a new promise is created. This will be used to\n * tell the user when the poller finishes (see `pollUntilDone()`). The promise's\n * resolve and reject methods are also used internally to control when to resolve\n * or reject anyone waiting for the poller to finish.\n *\n * The constructor of a custom implementation of a poller is where any serialized version of\n * a previous poller's operation should be deserialized into the operation sent to the\n * base constructor. For example:\n *\n * ```ts\n * export class MyPoller extends Poller {\n * constructor(\n * baseOperation: string | undefined\n * ) {\n * let state: MyOperationState = {};\n * if (baseOperation) {\n * state = {\n * ...JSON.parse(baseOperation).state,\n * ...state\n * };\n * }\n * const operation = {\n * state,\n * // ...\n * }\n * super(operation);\n * }\n * }\n * ```\n *\n * @param operation - Must contain the basic properties of `PollOperation`.\n */\n constructor(operation: PollOperation) {\n this.operation = operation;\n this.promise = new Promise(\n (\n resolve: (result: TResult) => void,\n reject: (error: PollerStoppedError | PollerCancelledError | Error) => void,\n ) => {\n this.resolve = resolve;\n this.reject = reject;\n },\n );\n // This prevents the UnhandledPromiseRejectionWarning in node.js from being thrown.\n // The above warning would get thrown if `poller.poll` is called, it returns an error,\n // and pullUntilDone did not have a .catch or await try/catch on it's return value.\n this.promise.catch(() => {\n /* intentionally blank */\n });\n }\n\n /**\n * Defines how much to wait between each poll request.\n * This has to be implemented by your custom poller.\n *\n * \\@azure/core-util has a simple implementation of a delay function that waits as many milliseconds as specified.\n * This can be used as follows:\n *\n * ```ts\n * import { delay } from \"@azure/core-util\";\n *\n * export class MyPoller extends Poller {\n * // The other necessary definitions.\n *\n * async delay(): Promise {\n * const milliseconds = 1000;\n * return delay(milliseconds);\n * }\n * }\n * ```\n *\n */\n protected abstract delay(): Promise;\n\n /**\n * Starts a loop that will break only if the poller is done\n * or if the poller is stopped.\n */\n private async startPolling(pollOptions: { abortSignal?: AbortSignalLike } = {}): Promise {\n if (this.stopped) {\n this.stopped = false;\n }\n while (!this.isStopped() && !this.isDone()) {\n await this.poll(pollOptions);\n await this.delay();\n }\n }\n\n /**\n * pollOnce does one polling, by calling to the update method of the underlying\n * poll operation to make any relevant change effective.\n *\n * It only optionally receives an object with an abortSignal property, from \\@azure/abort-controller's AbortSignalLike.\n *\n * @param options - Optional properties passed to the operation's update method.\n */\n private async pollOnce(options: { abortSignal?: AbortSignalLike } = {}): Promise {\n if (!this.isDone()) {\n this.operation = await this.operation.update({\n abortSignal: options.abortSignal,\n fireProgress: this.fireProgress.bind(this),\n });\n }\n this.processUpdatedState();\n }\n\n /**\n * fireProgress calls the functions passed in via onProgress the method of the poller.\n *\n * It loops over all of the callbacks received from onProgress, and executes them, sending them\n * the current operation state.\n *\n * @param state - The current operation state.\n */\n private fireProgress(state: TState): void {\n for (const callback of this.pollProgressCallbacks) {\n callback(state);\n }\n }\n\n /**\n * Invokes the underlying operation's cancel method.\n */\n private async cancelOnce(options: { abortSignal?: AbortSignalLike } = {}): Promise {\n this.operation = await this.operation.cancel(options);\n }\n\n /**\n * Returns a promise that will resolve once a single polling request finishes.\n * It does this by calling the update method of the Poller's operation.\n *\n * It only optionally receives an object with an abortSignal property, from \\@azure/abort-controller's AbortSignalLike.\n *\n * @param options - Optional properties passed to the operation's update method.\n */\n public poll(options: { abortSignal?: AbortSignalLike } = {}): Promise {\n if (!this.pollOncePromise) {\n this.pollOncePromise = this.pollOnce(options);\n const clearPollOncePromise = (): void => {\n this.pollOncePromise = undefined;\n };\n this.pollOncePromise.then(clearPollOncePromise, clearPollOncePromise).catch(this.reject);\n }\n return this.pollOncePromise;\n }\n\n private processUpdatedState(): void {\n if (this.operation.state.error) {\n this.stopped = true;\n if (!this.resolveOnUnsuccessful) {\n this.reject!(this.operation.state.error);\n throw this.operation.state.error;\n }\n }\n if (this.operation.state.isCancelled) {\n this.stopped = true;\n if (!this.resolveOnUnsuccessful) {\n const error = new PollerCancelledError(\"Operation was canceled\");\n this.reject!(error);\n throw error;\n }\n }\n if (this.isDone() && this.resolve) {\n // If the poller has finished polling, this means we now have a result.\n // However, it can be the case that TResult is instantiated to void, so\n // we are not expecting a result anyway. To assert that we might not\n // have a result eventually after finishing polling, we cast the result\n // to TResult.\n this.resolve(this.getResult() as TResult);\n }\n }\n\n /**\n * Returns a promise that will resolve once the underlying operation is completed.\n */\n public async pollUntilDone(\n pollOptions: { abortSignal?: AbortSignalLike } = {},\n ): Promise {\n if (this.stopped) {\n this.startPolling(pollOptions).catch(this.reject);\n }\n // This is needed because the state could have been updated by\n // `cancelOperation`, e.g. the operation is canceled or an error occurred.\n this.processUpdatedState();\n return this.promise;\n }\n\n /**\n * Invokes the provided callback after each polling is completed,\n * sending the current state of the poller's operation.\n *\n * It returns a method that can be used to stop receiving updates on the given callback function.\n */\n public onProgress(callback: (state: TState) => void): CancelOnProgress {\n this.pollProgressCallbacks.push(callback);\n return (): void => {\n this.pollProgressCallbacks = this.pollProgressCallbacks.filter((c) => c !== callback);\n };\n }\n\n /**\n * Returns true if the poller has finished polling.\n */\n public isDone(): boolean {\n const state: PollOperationState = this.operation.state;\n return Boolean(state.isCompleted || state.isCancelled || state.error);\n }\n\n /**\n * Stops the poller from continuing to poll.\n */\n public stopPolling(): void {\n if (!this.stopped) {\n this.stopped = true;\n if (this.reject) {\n this.reject(new PollerStoppedError(\"This poller is already stopped\"));\n }\n }\n }\n\n /**\n * Returns true if the poller is stopped.\n */\n public isStopped(): boolean {\n return this.stopped;\n }\n\n /**\n * Attempts to cancel the underlying operation.\n *\n * It only optionally receives an object with an abortSignal property, from \\@azure/abort-controller's AbortSignalLike.\n *\n * If it's called again before it finishes, it will throw an error.\n *\n * @param options - Optional properties passed to the operation's update method.\n */\n public cancelOperation(options: { abortSignal?: AbortSignalLike } = {}): Promise {\n if (!this.cancelPromise) {\n this.cancelPromise = this.cancelOnce(options);\n } else if (options.abortSignal) {\n throw new Error(\"A cancel request is currently pending\");\n }\n return this.cancelPromise;\n }\n\n /**\n * Returns the state of the operation.\n *\n * Even though TState will be the same type inside any of the methods of any extension of the Poller class,\n * implementations of the pollers can customize what's shared with the public by writing their own\n * version of the `getOperationState` method, and by defining two types, one representing the internal state of the poller\n * and a public type representing a safe to share subset of the properties of the internal state.\n * Their definition of getOperationState can then return their public type.\n *\n * Example:\n *\n * ```ts\n * // Let's say we have our poller's operation state defined as:\n * interface MyOperationState extends PollOperationState {\n * privateProperty?: string;\n * publicProperty?: string;\n * }\n *\n * // To allow us to have a true separation of public and private state, we have to define another interface:\n * interface PublicState extends PollOperationState {\n * publicProperty?: string;\n * }\n *\n * // Then, we define our Poller as follows:\n * export class MyPoller extends Poller {\n * // ... More content is needed here ...\n *\n * public getOperationState(): PublicState {\n * const state: PublicState = this.operation.state;\n * return {\n * // Properties from PollOperationState\n * isStarted: state.isStarted,\n * isCompleted: state.isCompleted,\n * isCancelled: state.isCancelled,\n * error: state.error,\n * result: state.result,\n *\n * // The only other property needed by PublicState.\n * publicProperty: state.publicProperty\n * }\n * }\n * }\n * ```\n *\n * You can see this in the tests of this repository, go to the file:\n * `../test/utils/testPoller.ts`\n * and look for the getOperationState implementation.\n */\n public getOperationState(): TState {\n return this.operation.state;\n }\n\n /**\n * Returns the result value of the operation,\n * regardless of the state of the poller.\n * It can return undefined or an incomplete form of the final TResult value\n * depending on the implementation.\n */\n public getResult(): TResult | undefined {\n const state: PollOperationState = this.operation.state;\n return state.result;\n }\n\n /**\n * Returns a serialized version of the poller's operation\n * by invoking the operation's toString method.\n */\n public toString(): string {\n return this.operation.toString();\n }\n}\n", "// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport { LroEngineOptions, PollerConfig } from \"./models.js\";\nimport { GenericPollOperation } from \"./operation.js\";\nimport { LongRunningOperation } from \"../../http/models.js\";\nimport { POLL_INTERVAL_IN_MS } from \"../../poller/constants.js\";\nimport { PollOperationState } from \"../pollOperation.js\";\nimport { Poller } from \"../poller.js\";\nimport { RestorableOperationState } from \"../../poller/models.js\";\nimport { deserializeState } from \"../../poller/operation.js\";\n\n/**\n * The LRO Engine, a class that performs polling.\n */\nexport class LroEngine> extends Poller<\n TState,\n TResult\n> {\n private config: PollerConfig;\n\n constructor(lro: LongRunningOperation, options?: LroEngineOptions) {\n const {\n intervalInMs = POLL_INTERVAL_IN_MS,\n resumeFrom,\n resolveOnUnsuccessful = false,\n isDone,\n lroResourceLocationConfig,\n processResult,\n updateState,\n } = options || {};\n const state: RestorableOperationState = resumeFrom\n ? deserializeState(resumeFrom)\n : ({} as RestorableOperationState);\n const operation = new GenericPollOperation(\n state,\n lro,\n !resolveOnUnsuccessful,\n lroResourceLocationConfig,\n processResult,\n updateState,\n isDone,\n );\n super(operation);\n this.resolveOnUnsuccessful = resolveOnUnsuccessful;\n\n this.config = { intervalInMs: intervalInMs };\n operation.setPollerConfig(this.config);\n }\n\n /**\n * The method used by the poller to wait before attempting to update its operation.\n */\n delay(): Promise {\n return new Promise((resolve) => setTimeout(() => resolve(), this.config.intervalInMs));\n }\n}\n", "// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nexport { LroEngine } from \"./lroEngine.js\";\nexport { LroEngineOptions } from \"./models.js\";\n", "// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nexport { createHttpPoller } from \"./http/poller.js\";\nexport {\n CancelOnProgress,\n OperationState,\n OperationStatus,\n SimplePollerLike,\n} from \"./poller/models.js\";\nexport { CreateHttpPollerOptions } from \"./http/models.js\";\nexport {\n LroResourceLocationConfig,\n LongRunningOperation,\n LroResponse,\n RawResponse,\n} from \"./http/models.js\";\n\n/**\n * This can be uncommented to expose the protocol-agnostic poller\n */\n// export {\n// BuildCreatePollerOptions,\n// Operation,\n// CreatePollerOptions,\n// OperationConfig,\n// RestorableOperationState,\n// } from \"./poller/models\";\n// export { buildCreatePoller } from \"./poller/poller\";\n\n/** legacy */\nexport * from \"./legacy/lroEngine/index.js\";\nexport * from \"./legacy/poller.js\";\nexport * from \"./legacy/pollOperation.js\";\nexport { PollerLike } from \"./legacy/models.js\";\n", "/*\n * Copyright (c) Microsoft Corporation.\n * Licensed under the MIT License.\n *\n * Code generated by Microsoft (R) AutoRest Code Generator.\n * Changes may cause incorrect behavior and will be lost if the code is regenerated.\n */\n\nexport interface PageInfo {\n continuationToken?: string;\n}\n\nconst pageMap = new WeakMap();\n\n/**\n * Given the last `.value` produced by the `byPage` iterator,\n * returns a continuation token that can be used to begin paging from\n * that point later.\n * @param page An object from accessing `value` on the IteratorResult from a `byPage` iterator.\n * @returns The continuation token that can be passed into byPage() during future calls.\n */\nexport function getContinuationToken(page: unknown): string | undefined {\n if (typeof page !== \"object\" || page === null) {\n return undefined;\n }\n return pageMap.get(page)?.continuationToken;\n}\n\nexport function setContinuationToken(\n page: unknown,\n continuationToken: string | undefined,\n): void {\n if (typeof page !== \"object\" || page === null || !continuationToken) {\n return;\n }\n const pageInfo = pageMap.get(page) ?? {};\n pageInfo.continuationToken = continuationToken;\n pageMap.set(page, pageInfo);\n}\n", "/*\n * Copyright (c) Microsoft Corporation.\n * Licensed under the MIT License.\n *\n * Code generated by Microsoft (R) AutoRest Code Generator.\n * Changes may cause incorrect behavior and will be lost if the code is regenerated.\n */\n\nimport * as coreClient from \"@azure/core-client\";\n\n/** List of Deployment stacks. */\nexport interface DeploymentStackListResult {\n /** An array of Deployment stacks. */\n value?: DeploymentStack[];\n /**\n * The URL to use for getting the next set of results.\n * NOTE: This property will not be serialized. It can only be populated by the server.\n */\n readonly nextLink?: string;\n}\n\n/** Entity representing the reference to the template. */\nexport interface DeploymentStacksTemplateLink {\n /** The URI of the template to deploy. Use either the uri or id property, but not both. */\n uri?: string;\n /** The resourceId of a Template Spec. Use either the id or uri property, but not both. */\n id?: string;\n /** The relativePath property can be used to deploy a linked template at a location relative to the parent. If the parent template was linked with a TemplateSpec, this will reference an artifact in the TemplateSpec. If the parent was linked with a URI, the child deployment will be a combination of the parent and relativePath URIs. */\n relativePath?: string;\n /** The query string (for example, a SAS token) to be used with the templateLink URI. */\n queryString?: string;\n /** If included, must match the ContentVersion in the template. */\n contentVersion?: string;\n}\n\n/** Deployment parameter for the template. */\nexport interface DeploymentParameter {\n /** Input value to the parameter. */\n value?: any;\n /** Type of the value. */\n type?: string;\n /** Azure Key Vault parameter reference. */\n reference?: KeyVaultParameterReference;\n}\n\n/** Azure Key Vault parameter reference. */\nexport interface KeyVaultParameterReference {\n /** Azure Key Vault reference. */\n keyVault: KeyVaultReference;\n /** Azure Key Vault secret name. */\n secretName: string;\n /** Azure Key Vault secret version. */\n secretVersion?: string;\n}\n\n/** Azure Key Vault reference. */\nexport interface KeyVaultReference {\n /** Azure Key Vault resourceId. */\n id: string;\n}\n\n/** Entity representing the reference to the deployment parameters. */\nexport interface DeploymentStacksParametersLink {\n /** The URI of the parameters file. */\n uri: string;\n /** If included, must match the ContentVersion in the template. */\n contentVersion?: string;\n}\n\n/** Defines the behavior of resources that are no longer managed after the stack is updated or deleted. */\nexport interface ActionOnUnmanage {\n /** Specifies an action for a newly unmanaged resource. Delete will attempt to delete the resource from Azure. Detach will leave the resource in it's current state. */\n resources: DeploymentStacksDeleteDetachEnum;\n /** Specifies an action for a newly unmanaged resource. Delete will attempt to delete the resource from Azure. Detach will leave the resource in it's current state. */\n resourceGroups?: DeploymentStacksDeleteDetachEnum;\n /** Specifies an action for a newly unmanaged resource. Delete will attempt to delete the resource from Azure. Detach will leave the resource in it's current state. */\n managementGroups?: DeploymentStacksDeleteDetachEnum;\n}\n\n/** The debug setting. */\nexport interface DeploymentStacksDebugSetting {\n /** Specifies the type of information to log for debugging. The permitted values are none, requestContent, responseContent, or both requestContent and responseContent separated by a comma. The default is none. When setting this value, carefully consider the type of information that is being passed in during deployment. By logging information about the request or response, sensitive data that is retrieved through the deployment operations could potentially be exposed. */\n detailLevel?: string;\n}\n\n/** Defines how resources deployed by the Deployment stack are locked. */\nexport interface DenySettings {\n /** denySettings Mode that defines denied actions. */\n mode: DenySettingsMode;\n /** List of AAD principal IDs excluded from the lock. Up to 5 principals are permitted. */\n excludedPrincipals?: string[];\n /** List of role-based management operations that are excluded from the denySettings. Up to 200 actions are permitted. If the denySetting mode is set to 'denyWriteAndDelete', then the following actions are automatically appended to 'excludedActions': '*\\/read' and 'Microsoft.Authorization/locks/delete'. If the denySetting mode is set to 'denyDelete', then the following actions are automatically appended to 'excludedActions': 'Microsoft.Authorization/locks/delete'. Duplicate actions will be removed. */\n excludedActions?: string[];\n /** DenySettings will be applied to child resource scopes of every managed resource with a deny assignment. */\n applyToChildScopes?: boolean;\n}\n\n/** The resourceId model. */\nexport interface ResourceReference {\n /**\n * The resourceId of a resource managed by the deployment stack.\n * NOTE: This property will not be serialized. It can only be populated by the server.\n */\n readonly id?: string;\n}\n\n/** Deployment Stacks error response. */\nexport interface DeploymentStacksError {\n /** The error detail. */\n error?: ErrorDetail;\n}\n\n/** The error detail. */\nexport interface ErrorDetail {\n /**\n * The error code.\n * NOTE: This property will not be serialized. It can only be populated by the server.\n */\n readonly code?: string;\n /**\n * The error message.\n * NOTE: This property will not be serialized. It can only be populated by the server.\n */\n readonly message?: string;\n /**\n * The error target.\n * NOTE: This property will not be serialized. It can only be populated by the server.\n */\n readonly target?: string;\n /**\n * The error details.\n * NOTE: This property will not be serialized. It can only be populated by the server.\n */\n readonly details?: ErrorDetail[];\n /**\n * The error additional info.\n * NOTE: This property will not be serialized. It can only be populated by the server.\n */\n readonly additionalInfo?: ErrorAdditionalInfo[];\n}\n\n/** The resource management error additional info. */\nexport interface ErrorAdditionalInfo {\n /**\n * The additional info type.\n * NOTE: This property will not be serialized. It can only be populated by the server.\n */\n readonly type?: string;\n /**\n * The additional info.\n * NOTE: This property will not be serialized. It can only be populated by the server.\n */\n readonly info?: Record;\n}\n\n/** Common properties for all Azure resources. */\nexport interface AzureResourceBase {\n /**\n * String Id used to locate any resource on Azure.\n * NOTE: This property will not be serialized. It can only be populated by the server.\n */\n readonly id?: string;\n /**\n * Name of this resource.\n * NOTE: This property will not be serialized. It can only be populated by the server.\n */\n readonly name?: string;\n /**\n * Type of this resource.\n * NOTE: This property will not be serialized. It can only be populated by the server.\n */\n readonly type?: string;\n /**\n * Azure Resource Manager metadata containing createdBy and modifiedBy information.\n * NOTE: This property will not be serialized. It can only be populated by the server.\n */\n readonly systemData?: SystemData;\n}\n\n/** Metadata pertaining to creation and last modification of the resource. */\nexport interface SystemData {\n /** The identity that created the resource. */\n createdBy?: string;\n /** The type of identity that created the resource. */\n createdByType?: CreatedByType;\n /** The timestamp of resource creation (UTC). */\n createdAt?: Date;\n /** The identity that last modified the resource. */\n lastModifiedBy?: string;\n /** The type of identity that last modified the resource. */\n lastModifiedByType?: CreatedByType;\n /** The timestamp of resource last modification (UTC) */\n lastModifiedAt?: Date;\n}\n\n/** Export Template specific properties of the Deployment stack. */\nexport interface DeploymentStackTemplateDefinition {\n /** The template content. Use this element to pass the template syntax directly in the request rather than link to an existing template. It can be a JObject or well-formed JSON string. Use either the templateLink property or the template property, but not both. */\n template?: Record;\n /** The URI of the template. Use either the templateLink property or the template property, but not both. */\n templateLink?: DeploymentStacksTemplateLink;\n}\n\n/** The Deployment stack validation result details. */\nexport interface DeploymentStackValidateProperties {\n /** Defines the behavior of resources that are no longer managed after the Deployment stack is updated or deleted. */\n actionOnUnmanage?: ActionOnUnmanage;\n /** The correlation id of the Deployment stack validate operation. It is in GUID format and is used for tracing. */\n correlationId?: string;\n /** The Deployment stack deny settings. */\n denySettings?: DenySettings;\n /** The Deployment stack deployment scope. */\n deploymentScope?: string;\n /** The Deployment stack validation description. */\n description?: string;\n /** Deployment parameters. */\n parameters?: { [propertyName: string]: DeploymentParameter };\n /** The URI of the template. */\n templateLink?: DeploymentStacksTemplateLink;\n /** The array of resources that were validated. */\n validatedResources?: ResourceReference[];\n}\n\n/** The resourceId extended model. This is used to document failed resources with a resourceId and a corresponding error. */\nexport interface ResourceReferenceExtended\n extends ResourceReference,\n DeploymentStacksError {}\n\n/** The managed resource model. */\nexport interface ManagedResourceReference extends ResourceReference {\n /** Current management state of the resource in the deployment stack. */\n status?: ResourceStatusMode;\n /** denyAssignment settings applied to the resource. */\n denyStatus?: DenyStatusMode;\n}\n\n/** Deployment stack properties. */\nexport interface DeploymentStackProperties extends DeploymentStacksError {\n /** The template content. You use this element when you want to pass the template syntax directly in the request rather than link to an existing template. It can be a JObject or well-formed JSON string. Use either the templateLink property or the template property, but not both. */\n template?: Record;\n /** The URI of the template. Use either the templateLink property or the template property, but not both. */\n templateLink?: DeploymentStacksTemplateLink;\n /** Name and value pairs that define the deployment parameters for the template. Use this element when providing the parameter values directly in the request, rather than linking to an existing parameter file. Use either the parametersLink property or the parameters property, but not both. */\n parameters?: { [propertyName: string]: DeploymentParameter };\n /** The URI of parameters file. Use this element to link to an existing parameters file. Use either the parametersLink property or the parameters property, but not both. */\n parametersLink?: DeploymentStacksParametersLink;\n /** Defines the behavior of resources that are no longer managed after the Deployment stack is updated or deleted. */\n actionOnUnmanage: ActionOnUnmanage;\n /** The debug setting of the deployment. */\n debugSetting?: DeploymentStacksDebugSetting;\n /** Flag to bypass service errors that indicate the stack resource list is not correctly synchronized. */\n bypassStackOutOfSyncError?: boolean;\n /** The scope at which the initial deployment should be created. If a scope is not specified, it will default to the scope of the deployment stack. Valid scopes are: management group (format: '/providers/Microsoft.Management/managementGroups/{managementGroupId}'), subscription (format: '/subscriptions/{subscriptionId}'), resource group (format: '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}'). */\n deploymentScope?: string;\n /** Deployment stack description. Max length of 4096 characters. */\n description?: string;\n /** Defines how resources deployed by the stack are locked. */\n denySettings: DenySettings;\n /**\n * State of the deployment stack.\n * NOTE: This property will not be serialized. It can only be populated by the server.\n */\n readonly provisioningState?: DeploymentStackProvisioningState;\n /**\n * The correlation id of the last Deployment stack upsert or delete operation. It is in GUID format and is used for tracing.\n * NOTE: This property will not be serialized. It can only be populated by the server.\n */\n readonly correlationId?: string;\n /**\n * An array of resources that were detached during the most recent Deployment stack update. Detached means that the resource was removed from the template, but no relevant deletion operations were specified. So, the resource still exists while no longer being associated with the stack.\n * NOTE: This property will not be serialized. It can only be populated by the server.\n */\n readonly detachedResources?: ResourceReference[];\n /**\n * An array of resources that were deleted during the most recent Deployment stack update. Deleted means that the resource was removed from the template and relevant deletion operations were specified.\n * NOTE: This property will not be serialized. It can only be populated by the server.\n */\n readonly deletedResources?: ResourceReference[];\n /**\n * An array of resources that failed to reach goal state during the most recent update. Each resourceId is accompanied by an error message.\n * NOTE: This property will not be serialized. It can only be populated by the server.\n */\n readonly failedResources?: ResourceReferenceExtended[];\n /**\n * An array of resources currently managed by the deployment stack.\n * NOTE: This property will not be serialized. It can only be populated by the server.\n */\n readonly resources?: ManagedResourceReference[];\n /**\n * The resourceId of the deployment resource created by the deployment stack.\n * NOTE: This property will not be serialized. It can only be populated by the server.\n */\n readonly deploymentId?: string;\n /**\n * The outputs of the deployment resource created by the deployment stack.\n * NOTE: This property will not be serialized. It can only be populated by the server.\n */\n readonly outputs?: Record;\n /**\n * The duration of the last successful Deployment stack update.\n * NOTE: This property will not be serialized. It can only be populated by the server.\n */\n readonly duration?: string;\n}\n\n/** The Deployment stack validation result. */\nexport interface DeploymentStackValidateResult\n extends AzureResourceBase,\n DeploymentStacksError {\n /** The validation result details. */\n properties?: DeploymentStackValidateProperties;\n}\n\n/** Deployment stack object. */\nexport interface DeploymentStack extends AzureResourceBase {\n /** The location of the Deployment stack. It cannot be changed after creation. It must be one of the supported Azure locations. */\n location?: string;\n /** Deployment stack resource tags. */\n tags?: { [propertyName: string]: string };\n /** Deployment stack properties. */\n properties?: DeploymentStackProperties;\n}\n\n/** Defines headers for DeploymentStacks_deleteAtResourceGroup operation. */\nexport interface DeploymentStacksDeleteAtResourceGroupHeaders {\n location?: string;\n}\n\n/** Defines headers for DeploymentStacks_deleteAtSubscription operation. */\nexport interface DeploymentStacksDeleteAtSubscriptionHeaders {\n location?: string;\n}\n\n/** Defines headers for DeploymentStacks_deleteAtManagementGroup operation. */\nexport interface DeploymentStacksDeleteAtManagementGroupHeaders {\n location?: string;\n}\n\n/** Defines headers for DeploymentStacks_validateStackAtResourceGroup operation. */\nexport interface DeploymentStacksValidateStackAtResourceGroupHeaders {\n location?: string;\n /** Number of seconds to wait before polling for status. */\n retryAfter?: string;\n}\n\n/** Defines headers for DeploymentStacks_validateStackAtSubscription operation. */\nexport interface DeploymentStacksValidateStackAtSubscriptionHeaders {\n location?: string;\n /** Number of seconds to wait before polling for status. */\n retryAfter?: string;\n}\n\n/** Defines headers for DeploymentStacks_validateStackAtManagementGroup operation. */\nexport interface DeploymentStacksValidateStackAtManagementGroupHeaders {\n location?: string;\n /** Number of seconds to wait before polling for status. */\n retryAfter?: string;\n}\n\n/** Known values of {@link DeploymentStacksDeleteDetachEnum} that the service accepts. */\nexport enum KnownDeploymentStacksDeleteDetachEnum {\n /** Delete */\n Delete = \"delete\",\n /** Detach */\n Detach = \"detach\",\n}\n\n/**\n * Defines values for DeploymentStacksDeleteDetachEnum. \\\n * {@link KnownDeploymentStacksDeleteDetachEnum} can be used interchangeably with DeploymentStacksDeleteDetachEnum,\n * this enum contains the known values that the service supports.\n * ### Known values supported by the service\n * **delete** \\\n * **detach**\n */\nexport type DeploymentStacksDeleteDetachEnum = string;\n\n/** Known values of {@link DenySettingsMode} that the service accepts. */\nexport enum KnownDenySettingsMode {\n /** Authorized users are able to read and modify the resources, but cannot delete. */\n DenyDelete = \"denyDelete\",\n /** Authorized users can read from a resource, but cannot modify or delete it. */\n DenyWriteAndDelete = \"denyWriteAndDelete\",\n /** No denyAssignments have been applied. */\n None = \"none\",\n}\n\n/**\n * Defines values for DenySettingsMode. \\\n * {@link KnownDenySettingsMode} can be used interchangeably with DenySettingsMode,\n * this enum contains the known values that the service supports.\n * ### Known values supported by the service\n * **denyDelete**: Authorized users are able to read and modify the resources, but cannot delete. \\\n * **denyWriteAndDelete**: Authorized users can read from a resource, but cannot modify or delete it. \\\n * **none**: No denyAssignments have been applied.\n */\nexport type DenySettingsMode = string;\n\n/** Known values of {@link DeploymentStackProvisioningState} that the service accepts. */\nexport enum KnownDeploymentStackProvisioningState {\n /** Creating */\n Creating = \"creating\",\n /** Validating */\n Validating = \"validating\",\n /** Waiting */\n Waiting = \"waiting\",\n /** Deploying */\n Deploying = \"deploying\",\n /** Canceling */\n Canceling = \"canceling\",\n /** UpdatingDenyAssignments */\n UpdatingDenyAssignments = \"updatingDenyAssignments\",\n /** DeletingResources */\n DeletingResources = \"deletingResources\",\n /** Succeeded */\n Succeeded = \"succeeded\",\n /** Failed */\n Failed = \"failed\",\n /** Canceled */\n Canceled = \"canceled\",\n /** Deleting */\n Deleting = \"deleting\",\n}\n\n/**\n * Defines values for DeploymentStackProvisioningState. \\\n * {@link KnownDeploymentStackProvisioningState} can be used interchangeably with DeploymentStackProvisioningState,\n * this enum contains the known values that the service supports.\n * ### Known values supported by the service\n * **creating** \\\n * **validating** \\\n * **waiting** \\\n * **deploying** \\\n * **canceling** \\\n * **updatingDenyAssignments** \\\n * **deletingResources** \\\n * **succeeded** \\\n * **failed** \\\n * **canceled** \\\n * **deleting**\n */\nexport type DeploymentStackProvisioningState = string;\n\n/** Known values of {@link ResourceStatusMode} that the service accepts. */\nexport enum KnownResourceStatusMode {\n /** This resource is managed by the deployment stack. */\n Managed = \"managed\",\n /** Unable to remove the deny assignment on resource. */\n RemoveDenyFailed = \"removeDenyFailed\",\n /** Unable to delete the resource from Azure. The delete will be retried on the next stack deployment, or can be deleted manually. */\n DeleteFailed = \"deleteFailed\",\n}\n\n/**\n * Defines values for ResourceStatusMode. \\\n * {@link KnownResourceStatusMode} can be used interchangeably with ResourceStatusMode,\n * this enum contains the known values that the service supports.\n * ### Known values supported by the service\n * **managed**: This resource is managed by the deployment stack. \\\n * **removeDenyFailed**: Unable to remove the deny assignment on resource. \\\n * **deleteFailed**: Unable to delete the resource from Azure. The delete will be retried on the next stack deployment, or can be deleted manually.\n */\nexport type ResourceStatusMode = string;\n\n/** Known values of {@link DenyStatusMode} that the service accepts. */\nexport enum KnownDenyStatusMode {\n /** Authorized users are able to read and modify the resources, but cannot delete. */\n DenyDelete = \"denyDelete\",\n /** Resource type does not support denyAssignments. */\n NotSupported = \"notSupported\",\n /** denyAssignments are not supported on resources outside the scope of the deployment stack. */\n Inapplicable = \"inapplicable\",\n /** Authorized users can only read from a resource, but cannot modify or delete it. */\n DenyWriteAndDelete = \"denyWriteAndDelete\",\n /** Deny assignment has been removed by Azure due to a resource management change (management group move, etc.) */\n RemovedBySystem = \"removedBySystem\",\n /** No denyAssignments have been applied. */\n None = \"none\",\n}\n\n/**\n * Defines values for DenyStatusMode. \\\n * {@link KnownDenyStatusMode} can be used interchangeably with DenyStatusMode,\n * this enum contains the known values that the service supports.\n * ### Known values supported by the service\n * **denyDelete**: Authorized users are able to read and modify the resources, but cannot delete. \\\n * **notSupported**: Resource type does not support denyAssignments. \\\n * **inapplicable**: denyAssignments are not supported on resources outside the scope of the deployment stack. \\\n * **denyWriteAndDelete**: Authorized users can only read from a resource, but cannot modify or delete it. \\\n * **removedBySystem**: Deny assignment has been removed by Azure due to a resource management change (management group move, etc.) \\\n * **none**: No denyAssignments have been applied.\n */\nexport type DenyStatusMode = string;\n\n/** Known values of {@link CreatedByType} that the service accepts. */\nexport enum KnownCreatedByType {\n /** User */\n User = \"User\",\n /** Application */\n Application = \"Application\",\n /** ManagedIdentity */\n ManagedIdentity = \"ManagedIdentity\",\n /** Key */\n Key = \"Key\",\n}\n\n/**\n * Defines values for CreatedByType. \\\n * {@link KnownCreatedByType} can be used interchangeably with CreatedByType,\n * this enum contains the known values that the service supports.\n * ### Known values supported by the service\n * **User** \\\n * **Application** \\\n * **ManagedIdentity** \\\n * **Key**\n */\nexport type CreatedByType = string;\n\n/** Known values of {@link UnmanageActionResourceMode} that the service accepts. */\nexport enum KnownUnmanageActionResourceMode {\n /** Delete */\n Delete = \"delete\",\n /** Detach */\n Detach = \"detach\",\n}\n\n/**\n * Defines values for UnmanageActionResourceMode. \\\n * {@link KnownUnmanageActionResourceMode} can be used interchangeably with UnmanageActionResourceMode,\n * this enum contains the known values that the service supports.\n * ### Known values supported by the service\n * **delete** \\\n * **detach**\n */\nexport type UnmanageActionResourceMode = string;\n\n/** Known values of {@link UnmanageActionResourceGroupMode} that the service accepts. */\nexport enum KnownUnmanageActionResourceGroupMode {\n /** Delete */\n Delete = \"delete\",\n /** Detach */\n Detach = \"detach\",\n}\n\n/**\n * Defines values for UnmanageActionResourceGroupMode. \\\n * {@link KnownUnmanageActionResourceGroupMode} can be used interchangeably with UnmanageActionResourceGroupMode,\n * this enum contains the known values that the service supports.\n * ### Known values supported by the service\n * **delete** \\\n * **detach**\n */\nexport type UnmanageActionResourceGroupMode = string;\n\n/** Known values of {@link UnmanageActionManagementGroupMode} that the service accepts. */\nexport enum KnownUnmanageActionManagementGroupMode {\n /** Delete */\n Delete = \"delete\",\n /** Detach */\n Detach = \"detach\",\n}\n\n/**\n * Defines values for UnmanageActionManagementGroupMode. \\\n * {@link KnownUnmanageActionManagementGroupMode} can be used interchangeably with UnmanageActionManagementGroupMode,\n * this enum contains the known values that the service supports.\n * ### Known values supported by the service\n * **delete** \\\n * **detach**\n */\nexport type UnmanageActionManagementGroupMode = string;\n\n/** Optional parameters. */\nexport interface DeploymentStacksListAtResourceGroupOptionalParams\n extends coreClient.OperationOptions {}\n\n/** Contains response data for the listAtResourceGroup operation. */\nexport type DeploymentStacksListAtResourceGroupResponse =\n DeploymentStackListResult;\n\n/** Optional parameters. */\nexport interface DeploymentStacksListAtSubscriptionOptionalParams\n extends coreClient.OperationOptions {}\n\n/** Contains response data for the listAtSubscription operation. */\nexport type DeploymentStacksListAtSubscriptionResponse =\n DeploymentStackListResult;\n\n/** Optional parameters. */\nexport interface DeploymentStacksListAtManagementGroupOptionalParams\n extends coreClient.OperationOptions {}\n\n/** Contains response data for the listAtManagementGroup operation. */\nexport type DeploymentStacksListAtManagementGroupResponse =\n DeploymentStackListResult;\n\n/** Optional parameters. */\nexport interface DeploymentStacksCreateOrUpdateAtResourceGroupOptionalParams\n extends coreClient.OperationOptions {\n /** Delay to wait until next poll, in milliseconds. */\n updateIntervalInMs?: number;\n /** A serialized poller which can be used to resume an existing paused Long-Running-Operation. */\n resumeFrom?: string;\n}\n\n/** Contains response data for the createOrUpdateAtResourceGroup operation. */\nexport type DeploymentStacksCreateOrUpdateAtResourceGroupResponse =\n DeploymentStack;\n\n/** Optional parameters. */\nexport interface DeploymentStacksGetAtResourceGroupOptionalParams\n extends coreClient.OperationOptions {}\n\n/** Contains response data for the getAtResourceGroup operation. */\nexport type DeploymentStacksGetAtResourceGroupResponse = DeploymentStack;\n\n/** Optional parameters. */\nexport interface DeploymentStacksDeleteAtResourceGroupOptionalParams\n extends coreClient.OperationOptions {\n /** Flag to indicate delete rather than detach for unmanaged resources. */\n unmanageActionResources?: UnmanageActionResourceMode;\n /** Flag to indicate delete rather than detach for unmanaged resource groups. */\n unmanageActionResourceGroups?: UnmanageActionResourceGroupMode;\n /** Flag to indicate delete rather than detach for unmanaged management groups. */\n unmanageActionManagementGroups?: UnmanageActionManagementGroupMode;\n /** Flag to bypass service errors that indicate the stack resource list is not correctly synchronized. */\n bypassStackOutOfSyncError?: boolean;\n /** Delay to wait until next poll, in milliseconds. */\n updateIntervalInMs?: number;\n /** A serialized poller which can be used to resume an existing paused Long-Running-Operation. */\n resumeFrom?: string;\n}\n\n/** Optional parameters. */\nexport interface DeploymentStacksCreateOrUpdateAtSubscriptionOptionalParams\n extends coreClient.OperationOptions {\n /** Delay to wait until next poll, in milliseconds. */\n updateIntervalInMs?: number;\n /** A serialized poller which can be used to resume an existing paused Long-Running-Operation. */\n resumeFrom?: string;\n}\n\n/** Contains response data for the createOrUpdateAtSubscription operation. */\nexport type DeploymentStacksCreateOrUpdateAtSubscriptionResponse =\n DeploymentStack;\n\n/** Optional parameters. */\nexport interface DeploymentStacksGetAtSubscriptionOptionalParams\n extends coreClient.OperationOptions {}\n\n/** Contains response data for the getAtSubscription operation. */\nexport type DeploymentStacksGetAtSubscriptionResponse = DeploymentStack;\n\n/** Optional parameters. */\nexport interface DeploymentStacksDeleteAtSubscriptionOptionalParams\n extends coreClient.OperationOptions {\n /** Flag to indicate delete rather than detach for unmanaged resources. */\n unmanageActionResources?: UnmanageActionResourceMode;\n /** Flag to indicate delete rather than detach for unmanaged resource groups. */\n unmanageActionResourceGroups?: UnmanageActionResourceGroupMode;\n /** Flag to indicate delete rather than detach for unmanaged management groups. */\n unmanageActionManagementGroups?: UnmanageActionManagementGroupMode;\n /** Flag to bypass service errors that indicate the stack resource list is not correctly synchronized. */\n bypassStackOutOfSyncError?: boolean;\n /** Delay to wait until next poll, in milliseconds. */\n updateIntervalInMs?: number;\n /** A serialized poller which can be used to resume an existing paused Long-Running-Operation. */\n resumeFrom?: string;\n}\n\n/** Optional parameters. */\nexport interface DeploymentStacksCreateOrUpdateAtManagementGroupOptionalParams\n extends coreClient.OperationOptions {\n /** Delay to wait until next poll, in milliseconds. */\n updateIntervalInMs?: number;\n /** A serialized poller which can be used to resume an existing paused Long-Running-Operation. */\n resumeFrom?: string;\n}\n\n/** Contains response data for the createOrUpdateAtManagementGroup operation. */\nexport type DeploymentStacksCreateOrUpdateAtManagementGroupResponse =\n DeploymentStack;\n\n/** Optional parameters. */\nexport interface DeploymentStacksGetAtManagementGroupOptionalParams\n extends coreClient.OperationOptions {}\n\n/** Contains response data for the getAtManagementGroup operation. */\nexport type DeploymentStacksGetAtManagementGroupResponse = DeploymentStack;\n\n/** Optional parameters. */\nexport interface DeploymentStacksDeleteAtManagementGroupOptionalParams\n extends coreClient.OperationOptions {\n /** Flag to indicate delete rather than detach for unmanaged resources. */\n unmanageActionResources?: UnmanageActionResourceMode;\n /** Flag to indicate delete rather than detach for unmanaged resource groups. */\n unmanageActionResourceGroups?: UnmanageActionResourceGroupMode;\n /** Flag to indicate delete rather than detach for unmanaged management groups. */\n unmanageActionManagementGroups?: UnmanageActionManagementGroupMode;\n /** Flag to bypass service errors that indicate the stack resource list is not correctly synchronized. */\n bypassStackOutOfSyncError?: boolean;\n /** Delay to wait until next poll, in milliseconds. */\n updateIntervalInMs?: number;\n /** A serialized poller which can be used to resume an existing paused Long-Running-Operation. */\n resumeFrom?: string;\n}\n\n/** Optional parameters. */\nexport interface DeploymentStacksExportTemplateAtResourceGroupOptionalParams\n extends coreClient.OperationOptions {}\n\n/** Contains response data for the exportTemplateAtResourceGroup operation. */\nexport type DeploymentStacksExportTemplateAtResourceGroupResponse =\n DeploymentStackTemplateDefinition;\n\n/** Optional parameters. */\nexport interface DeploymentStacksExportTemplateAtSubscriptionOptionalParams\n extends coreClient.OperationOptions {}\n\n/** Contains response data for the exportTemplateAtSubscription operation. */\nexport type DeploymentStacksExportTemplateAtSubscriptionResponse =\n DeploymentStackTemplateDefinition;\n\n/** Optional parameters. */\nexport interface DeploymentStacksExportTemplateAtManagementGroupOptionalParams\n extends coreClient.OperationOptions {}\n\n/** Contains response data for the exportTemplateAtManagementGroup operation. */\nexport type DeploymentStacksExportTemplateAtManagementGroupResponse =\n DeploymentStackTemplateDefinition;\n\n/** Optional parameters. */\nexport interface DeploymentStacksValidateStackAtResourceGroupOptionalParams\n extends coreClient.OperationOptions {\n /** Delay to wait until next poll, in milliseconds. */\n updateIntervalInMs?: number;\n /** A serialized poller which can be used to resume an existing paused Long-Running-Operation. */\n resumeFrom?: string;\n}\n\n/** Contains response data for the validateStackAtResourceGroup operation. */\nexport type DeploymentStacksValidateStackAtResourceGroupResponse =\n DeploymentStackValidateResult;\n\n/** Optional parameters. */\nexport interface DeploymentStacksValidateStackAtSubscriptionOptionalParams\n extends coreClient.OperationOptions {\n /** Delay to wait until next poll, in milliseconds. */\n updateIntervalInMs?: number;\n /** A serialized poller which can be used to resume an existing paused Long-Running-Operation. */\n resumeFrom?: string;\n}\n\n/** Contains response data for the validateStackAtSubscription operation. */\nexport type DeploymentStacksValidateStackAtSubscriptionResponse =\n DeploymentStackValidateResult;\n\n/** Optional parameters. */\nexport interface DeploymentStacksValidateStackAtManagementGroupOptionalParams\n extends coreClient.OperationOptions {\n /** Delay to wait until next poll, in milliseconds. */\n updateIntervalInMs?: number;\n /** A serialized poller which can be used to resume an existing paused Long-Running-Operation. */\n resumeFrom?: string;\n}\n\n/** Contains response data for the validateStackAtManagementGroup operation. */\nexport type DeploymentStacksValidateStackAtManagementGroupResponse =\n DeploymentStackValidateResult;\n\n/** Optional parameters. */\nexport interface DeploymentStacksListAtResourceGroupNextOptionalParams\n extends coreClient.OperationOptions {}\n\n/** Contains response data for the listAtResourceGroupNext operation. */\nexport type DeploymentStacksListAtResourceGroupNextResponse =\n DeploymentStackListResult;\n\n/** Optional parameters. */\nexport interface DeploymentStacksListAtSubscriptionNextOptionalParams\n extends coreClient.OperationOptions {}\n\n/** Contains response data for the listAtSubscriptionNext operation. */\nexport type DeploymentStacksListAtSubscriptionNextResponse =\n DeploymentStackListResult;\n\n/** Optional parameters. */\nexport interface DeploymentStacksListAtManagementGroupNextOptionalParams\n extends coreClient.OperationOptions {}\n\n/** Contains response data for the listAtManagementGroupNext operation. */\nexport type DeploymentStacksListAtManagementGroupNextResponse =\n DeploymentStackListResult;\n\n/** Optional parameters. */\nexport interface DeploymentStacksClientOptionalParams\n extends coreClient.ServiceClientOptions {\n /** server parameter */\n $host?: string;\n /** Api Version */\n apiVersion?: string;\n /** Overrides client endpoint. */\n endpoint?: string;\n}\n", "/*\n * Copyright (c) Microsoft Corporation.\n * Licensed under the MIT License.\n *\n * Code generated by Microsoft (R) AutoRest Code Generator.\n * Changes may cause incorrect behavior and will be lost if the code is regenerated.\n */\n\nimport * as coreClient from \"@azure/core-client\";\n\nexport const DeploymentStackListResult: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"DeploymentStackListResult\",\n modelProperties: {\n value: {\n serializedName: \"value\",\n type: {\n name: \"Sequence\",\n element: {\n type: {\n name: \"Composite\",\n className: \"DeploymentStack\",\n },\n },\n },\n },\n nextLink: {\n serializedName: \"nextLink\",\n readOnly: true,\n type: {\n name: \"String\",\n },\n },\n },\n },\n};\n\nexport const DeploymentStacksTemplateLink: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"DeploymentStacksTemplateLink\",\n modelProperties: {\n uri: {\n serializedName: \"uri\",\n type: {\n name: \"String\",\n },\n },\n id: {\n serializedName: \"id\",\n type: {\n name: \"String\",\n },\n },\n relativePath: {\n serializedName: \"relativePath\",\n type: {\n name: \"String\",\n },\n },\n queryString: {\n serializedName: \"queryString\",\n type: {\n name: \"String\",\n },\n },\n contentVersion: {\n serializedName: \"contentVersion\",\n type: {\n name: \"String\",\n },\n },\n },\n },\n};\n\nexport const DeploymentParameter: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"DeploymentParameter\",\n modelProperties: {\n value: {\n serializedName: \"value\",\n type: {\n name: \"any\",\n },\n },\n type: {\n serializedName: \"type\",\n type: {\n name: \"String\",\n },\n },\n reference: {\n serializedName: \"reference\",\n type: {\n name: \"Composite\",\n className: \"KeyVaultParameterReference\",\n },\n },\n },\n },\n};\n\nexport const KeyVaultParameterReference: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"KeyVaultParameterReference\",\n modelProperties: {\n keyVault: {\n serializedName: \"keyVault\",\n type: {\n name: \"Composite\",\n className: \"KeyVaultReference\",\n },\n },\n secretName: {\n serializedName: \"secretName\",\n required: true,\n type: {\n name: \"String\",\n },\n },\n secretVersion: {\n serializedName: \"secretVersion\",\n type: {\n name: \"String\",\n },\n },\n },\n },\n};\n\nexport const KeyVaultReference: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"KeyVaultReference\",\n modelProperties: {\n id: {\n serializedName: \"id\",\n required: true,\n type: {\n name: \"String\",\n },\n },\n },\n },\n};\n\nexport const DeploymentStacksParametersLink: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"DeploymentStacksParametersLink\",\n modelProperties: {\n uri: {\n serializedName: \"uri\",\n required: true,\n type: {\n name: \"String\",\n },\n },\n contentVersion: {\n serializedName: \"contentVersion\",\n type: {\n name: \"String\",\n },\n },\n },\n },\n};\n\nexport const ActionOnUnmanage: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"ActionOnUnmanage\",\n modelProperties: {\n resources: {\n serializedName: \"resources\",\n required: true,\n type: {\n name: \"String\",\n },\n },\n resourceGroups: {\n serializedName: \"resourceGroups\",\n type: {\n name: \"String\",\n },\n },\n managementGroups: {\n serializedName: \"managementGroups\",\n type: {\n name: \"String\",\n },\n },\n },\n },\n};\n\nexport const DeploymentStacksDebugSetting: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"DeploymentStacksDebugSetting\",\n modelProperties: {\n detailLevel: {\n serializedName: \"detailLevel\",\n type: {\n name: \"String\",\n },\n },\n },\n },\n};\n\nexport const DenySettings: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"DenySettings\",\n modelProperties: {\n mode: {\n serializedName: \"mode\",\n required: true,\n type: {\n name: \"String\",\n },\n },\n excludedPrincipals: {\n serializedName: \"excludedPrincipals\",\n type: {\n name: \"Sequence\",\n element: {\n type: {\n name: \"String\",\n },\n },\n },\n },\n excludedActions: {\n serializedName: \"excludedActions\",\n type: {\n name: \"Sequence\",\n element: {\n type: {\n name: \"String\",\n },\n },\n },\n },\n applyToChildScopes: {\n serializedName: \"applyToChildScopes\",\n type: {\n name: \"Boolean\",\n },\n },\n },\n },\n};\n\nexport const ResourceReference: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"ResourceReference\",\n modelProperties: {\n id: {\n serializedName: \"id\",\n readOnly: true,\n type: {\n name: \"String\",\n },\n },\n },\n },\n};\n\nexport const DeploymentStacksError: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"DeploymentStacksError\",\n modelProperties: {\n error: {\n serializedName: \"error\",\n type: {\n name: \"Composite\",\n className: \"ErrorDetail\",\n },\n },\n },\n },\n};\n\nexport const ErrorDetail: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"ErrorDetail\",\n modelProperties: {\n code: {\n serializedName: \"code\",\n readOnly: true,\n type: {\n name: \"String\",\n },\n },\n message: {\n serializedName: \"message\",\n readOnly: true,\n type: {\n name: \"String\",\n },\n },\n target: {\n serializedName: \"target\",\n readOnly: true,\n type: {\n name: \"String\",\n },\n },\n details: {\n serializedName: \"details\",\n readOnly: true,\n type: {\n name: \"Sequence\",\n element: {\n type: {\n name: \"Composite\",\n className: \"ErrorDetail\",\n },\n },\n },\n },\n additionalInfo: {\n serializedName: \"additionalInfo\",\n readOnly: true,\n type: {\n name: \"Sequence\",\n element: {\n type: {\n name: \"Composite\",\n className: \"ErrorAdditionalInfo\",\n },\n },\n },\n },\n },\n },\n};\n\nexport const ErrorAdditionalInfo: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"ErrorAdditionalInfo\",\n modelProperties: {\n type: {\n serializedName: \"type\",\n readOnly: true,\n type: {\n name: \"String\",\n },\n },\n info: {\n serializedName: \"info\",\n readOnly: true,\n type: {\n name: \"Dictionary\",\n value: { type: { name: \"any\" } },\n },\n },\n },\n },\n};\n\nexport const AzureResourceBase: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"AzureResourceBase\",\n modelProperties: {\n id: {\n serializedName: \"id\",\n readOnly: true,\n type: {\n name: \"String\",\n },\n },\n name: {\n serializedName: \"name\",\n readOnly: true,\n type: {\n name: \"String\",\n },\n },\n type: {\n serializedName: \"type\",\n readOnly: true,\n type: {\n name: \"String\",\n },\n },\n systemData: {\n serializedName: \"systemData\",\n type: {\n name: \"Composite\",\n className: \"SystemData\",\n },\n },\n },\n },\n};\n\nexport const SystemData: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"SystemData\",\n modelProperties: {\n createdBy: {\n serializedName: \"createdBy\",\n type: {\n name: \"String\",\n },\n },\n createdByType: {\n serializedName: \"createdByType\",\n type: {\n name: \"String\",\n },\n },\n createdAt: {\n serializedName: \"createdAt\",\n type: {\n name: \"DateTime\",\n },\n },\n lastModifiedBy: {\n serializedName: \"lastModifiedBy\",\n type: {\n name: \"String\",\n },\n },\n lastModifiedByType: {\n serializedName: \"lastModifiedByType\",\n type: {\n name: \"String\",\n },\n },\n lastModifiedAt: {\n serializedName: \"lastModifiedAt\",\n type: {\n name: \"DateTime\",\n },\n },\n },\n },\n};\n\nexport const DeploymentStackTemplateDefinition: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"DeploymentStackTemplateDefinition\",\n modelProperties: {\n template: {\n serializedName: \"template\",\n type: {\n name: \"Dictionary\",\n value: { type: { name: \"any\" } },\n },\n },\n templateLink: {\n serializedName: \"templateLink\",\n type: {\n name: \"Composite\",\n className: \"DeploymentStacksTemplateLink\",\n },\n },\n },\n },\n};\n\nexport const DeploymentStackValidateProperties: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"DeploymentStackValidateProperties\",\n modelProperties: {\n actionOnUnmanage: {\n serializedName: \"actionOnUnmanage\",\n type: {\n name: \"Composite\",\n className: \"ActionOnUnmanage\",\n },\n },\n correlationId: {\n serializedName: \"correlationId\",\n type: {\n name: \"String\",\n },\n },\n denySettings: {\n serializedName: \"denySettings\",\n type: {\n name: \"Composite\",\n className: \"DenySettings\",\n },\n },\n deploymentScope: {\n serializedName: \"deploymentScope\",\n type: {\n name: \"String\",\n },\n },\n description: {\n serializedName: \"description\",\n type: {\n name: \"String\",\n },\n },\n parameters: {\n serializedName: \"parameters\",\n type: {\n name: \"Dictionary\",\n value: {\n type: { name: \"Composite\", className: \"DeploymentParameter\" },\n },\n },\n },\n templateLink: {\n serializedName: \"templateLink\",\n type: {\n name: \"Composite\",\n className: \"DeploymentStacksTemplateLink\",\n },\n },\n validatedResources: {\n serializedName: \"validatedResources\",\n type: {\n name: \"Sequence\",\n element: {\n type: {\n name: \"Composite\",\n className: \"ResourceReference\",\n },\n },\n },\n },\n },\n },\n};\n\nexport const ResourceReferenceExtended: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"ResourceReferenceExtended\",\n modelProperties: {\n ...ResourceReference.type.modelProperties,\n ...DeploymentStacksError.type.modelProperties,\n },\n },\n};\n\nexport const ManagedResourceReference: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"ManagedResourceReference\",\n modelProperties: {\n ...ResourceReference.type.modelProperties,\n status: {\n serializedName: \"status\",\n type: {\n name: \"String\",\n },\n },\n denyStatus: {\n defaultValue: \"none\",\n serializedName: \"denyStatus\",\n type: {\n name: \"String\",\n },\n },\n },\n },\n};\n\nexport const DeploymentStackProperties: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"DeploymentStackProperties\",\n modelProperties: {\n ...DeploymentStacksError.type.modelProperties,\n template: {\n serializedName: \"template\",\n type: {\n name: \"Dictionary\",\n value: { type: { name: \"any\" } },\n },\n },\n templateLink: {\n serializedName: \"templateLink\",\n type: {\n name: \"Composite\",\n className: \"DeploymentStacksTemplateLink\",\n },\n },\n parameters: {\n serializedName: \"parameters\",\n type: {\n name: \"Dictionary\",\n value: {\n type: { name: \"Composite\", className: \"DeploymentParameter\" },\n },\n },\n },\n parametersLink: {\n serializedName: \"parametersLink\",\n type: {\n name: \"Composite\",\n className: \"DeploymentStacksParametersLink\",\n },\n },\n actionOnUnmanage: {\n serializedName: \"actionOnUnmanage\",\n type: {\n name: \"Composite\",\n className: \"ActionOnUnmanage\",\n },\n },\n debugSetting: {\n serializedName: \"debugSetting\",\n type: {\n name: \"Composite\",\n className: \"DeploymentStacksDebugSetting\",\n },\n },\n bypassStackOutOfSyncError: {\n serializedName: \"bypassStackOutOfSyncError\",\n type: {\n name: \"Boolean\",\n },\n },\n deploymentScope: {\n serializedName: \"deploymentScope\",\n type: {\n name: \"String\",\n },\n },\n description: {\n constraints: {\n MaxLength: 4096,\n },\n serializedName: \"description\",\n type: {\n name: \"String\",\n },\n },\n denySettings: {\n serializedName: \"denySettings\",\n type: {\n name: \"Composite\",\n className: \"DenySettings\",\n },\n },\n provisioningState: {\n serializedName: \"provisioningState\",\n readOnly: true,\n type: {\n name: \"String\",\n },\n },\n correlationId: {\n serializedName: \"correlationId\",\n readOnly: true,\n type: {\n name: \"String\",\n },\n },\n detachedResources: {\n serializedName: \"detachedResources\",\n readOnly: true,\n type: {\n name: \"Sequence\",\n element: {\n type: {\n name: \"Composite\",\n className: \"ResourceReference\",\n },\n },\n },\n },\n deletedResources: {\n serializedName: \"deletedResources\",\n readOnly: true,\n type: {\n name: \"Sequence\",\n element: {\n type: {\n name: \"Composite\",\n className: \"ResourceReference\",\n },\n },\n },\n },\n failedResources: {\n serializedName: \"failedResources\",\n readOnly: true,\n type: {\n name: \"Sequence\",\n element: {\n type: {\n name: \"Composite\",\n className: \"ResourceReferenceExtended\",\n },\n },\n },\n },\n resources: {\n serializedName: \"resources\",\n readOnly: true,\n type: {\n name: \"Sequence\",\n element: {\n type: {\n name: \"Composite\",\n className: \"ManagedResourceReference\",\n },\n },\n },\n },\n deploymentId: {\n serializedName: \"deploymentId\",\n readOnly: true,\n type: {\n name: \"String\",\n },\n },\n outputs: {\n serializedName: \"outputs\",\n readOnly: true,\n type: {\n name: \"Dictionary\",\n value: { type: { name: \"any\" } },\n },\n },\n duration: {\n serializedName: \"duration\",\n readOnly: true,\n type: {\n name: \"String\",\n },\n },\n },\n },\n};\n\nexport const DeploymentStackValidateResult: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"DeploymentStackValidateResult\",\n modelProperties: {\n ...AzureResourceBase.type.modelProperties,\n ...DeploymentStacksError.type.modelProperties,\n properties: {\n serializedName: \"properties\",\n type: {\n name: \"Composite\",\n className: \"DeploymentStackValidateProperties\",\n },\n },\n },\n },\n};\n\nexport const DeploymentStack: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"DeploymentStack\",\n modelProperties: {\n ...AzureResourceBase.type.modelProperties,\n location: {\n serializedName: \"location\",\n type: {\n name: \"String\",\n },\n },\n tags: {\n serializedName: \"tags\",\n type: {\n name: \"Dictionary\",\n value: { type: { name: \"String\" } },\n },\n },\n properties: {\n serializedName: \"properties\",\n type: {\n name: \"Composite\",\n className: \"DeploymentStackProperties\",\n },\n },\n },\n },\n};\n\nexport const DeploymentStacksDeleteAtResourceGroupHeaders: coreClient.CompositeMapper =\n {\n type: {\n name: \"Composite\",\n className: \"DeploymentStacksDeleteAtResourceGroupHeaders\",\n modelProperties: {\n location: {\n serializedName: \"location\",\n type: {\n name: \"String\",\n },\n },\n },\n },\n };\n\nexport const DeploymentStacksDeleteAtSubscriptionHeaders: coreClient.CompositeMapper =\n {\n type: {\n name: \"Composite\",\n className: \"DeploymentStacksDeleteAtSubscriptionHeaders\",\n modelProperties: {\n location: {\n serializedName: \"location\",\n type: {\n name: \"String\",\n },\n },\n },\n },\n };\n\nexport const DeploymentStacksDeleteAtManagementGroupHeaders: coreClient.CompositeMapper =\n {\n type: {\n name: \"Composite\",\n className: \"DeploymentStacksDeleteAtManagementGroupHeaders\",\n modelProperties: {\n location: {\n serializedName: \"location\",\n type: {\n name: \"String\",\n },\n },\n },\n },\n };\n\nexport const DeploymentStacksValidateStackAtResourceGroupHeaders: coreClient.CompositeMapper =\n {\n type: {\n name: \"Composite\",\n className: \"DeploymentStacksValidateStackAtResourceGroupHeaders\",\n modelProperties: {\n location: {\n serializedName: \"location\",\n type: {\n name: \"String\",\n },\n },\n retryAfter: {\n serializedName: \"retry-after\",\n type: {\n name: \"String\",\n },\n },\n },\n },\n };\n\nexport const DeploymentStacksValidateStackAtSubscriptionHeaders: coreClient.CompositeMapper =\n {\n type: {\n name: \"Composite\",\n className: \"DeploymentStacksValidateStackAtSubscriptionHeaders\",\n modelProperties: {\n location: {\n serializedName: \"location\",\n type: {\n name: \"String\",\n },\n },\n retryAfter: {\n serializedName: \"retry-after\",\n type: {\n name: \"String\",\n },\n },\n },\n },\n };\n\nexport const DeploymentStacksValidateStackAtManagementGroupHeaders: coreClient.CompositeMapper =\n {\n type: {\n name: \"Composite\",\n className: \"DeploymentStacksValidateStackAtManagementGroupHeaders\",\n modelProperties: {\n location: {\n serializedName: \"location\",\n type: {\n name: \"String\",\n },\n },\n retryAfter: {\n serializedName: \"retry-after\",\n type: {\n name: \"String\",\n },\n },\n },\n },\n };\n", "/*\n * Copyright (c) Microsoft Corporation.\n * Licensed under the MIT License.\n *\n * Code generated by Microsoft (R) AutoRest Code Generator.\n * Changes may cause incorrect behavior and will be lost if the code is regenerated.\n */\n\nimport {\n OperationParameter,\n OperationURLParameter,\n OperationQueryParameter,\n} from \"@azure/core-client\";\nimport { DeploymentStack as DeploymentStackMapper } from \"../models/mappers\";\n\nexport const accept: OperationParameter = {\n parameterPath: \"accept\",\n mapper: {\n defaultValue: \"application/json\",\n isConstant: true,\n serializedName: \"Accept\",\n type: {\n name: \"String\",\n },\n },\n};\n\nexport const $host: OperationURLParameter = {\n parameterPath: \"$host\",\n mapper: {\n serializedName: \"$host\",\n required: true,\n type: {\n name: \"String\",\n },\n },\n skipEncoding: true,\n};\n\nexport const subscriptionId: OperationURLParameter = {\n parameterPath: \"subscriptionId\",\n mapper: {\n serializedName: \"subscriptionId\",\n required: true,\n type: {\n name: \"Uuid\",\n },\n },\n};\n\nexport const resourceGroupName: OperationURLParameter = {\n parameterPath: \"resourceGroupName\",\n mapper: {\n constraints: {\n MaxLength: 90,\n MinLength: 1,\n },\n serializedName: \"resourceGroupName\",\n required: true,\n type: {\n name: \"String\",\n },\n },\n};\n\nexport const apiVersion: OperationQueryParameter = {\n parameterPath: \"apiVersion\",\n mapper: {\n defaultValue: \"2024-03-01\",\n isConstant: true,\n serializedName: \"api-version\",\n type: {\n name: \"String\",\n },\n },\n};\n\nexport const managementGroupId: OperationURLParameter = {\n parameterPath: \"managementGroupId\",\n mapper: {\n constraints: {\n Pattern: new RegExp(\"^[-\\\\w\\\\._\\\\(\\\\)]+$\"),\n MaxLength: 90,\n MinLength: 1,\n },\n serializedName: \"managementGroupId\",\n required: true,\n type: {\n name: \"String\",\n },\n },\n};\n\nexport const contentType: OperationParameter = {\n parameterPath: [\"options\", \"contentType\"],\n mapper: {\n defaultValue: \"application/json\",\n isConstant: true,\n serializedName: \"Content-Type\",\n type: {\n name: \"String\",\n },\n },\n};\n\nexport const deploymentStack: OperationParameter = {\n parameterPath: \"deploymentStack\",\n mapper: DeploymentStackMapper,\n};\n\nexport const deploymentStackName: OperationURLParameter = {\n parameterPath: \"deploymentStackName\",\n mapper: {\n constraints: {\n Pattern: new RegExp(\"^[-\\\\w\\\\._\\\\(\\\\)]+$\"),\n MaxLength: 90,\n MinLength: 1,\n },\n serializedName: \"deploymentStackName\",\n required: true,\n type: {\n name: \"String\",\n },\n },\n};\n\nexport const unmanageActionResources: OperationQueryParameter = {\n parameterPath: [\"options\", \"unmanageActionResources\"],\n mapper: {\n serializedName: \"unmanageAction.Resources\",\n type: {\n name: \"String\",\n },\n },\n};\n\nexport const unmanageActionResourceGroups: OperationQueryParameter = {\n parameterPath: [\"options\", \"unmanageActionResourceGroups\"],\n mapper: {\n serializedName: \"unmanageAction.ResourceGroups\",\n type: {\n name: \"String\",\n },\n },\n};\n\nexport const unmanageActionManagementGroups: OperationQueryParameter = {\n parameterPath: [\"options\", \"unmanageActionManagementGroups\"],\n mapper: {\n serializedName: \"unmanageAction.ManagementGroups\",\n type: {\n name: \"String\",\n },\n },\n};\n\nexport const bypassStackOutOfSyncError: OperationQueryParameter = {\n parameterPath: [\"options\", \"bypassStackOutOfSyncError\"],\n mapper: {\n serializedName: \"bypassStackOutOfSyncError\",\n type: {\n name: \"Boolean\",\n },\n },\n};\n\nexport const nextLink: OperationURLParameter = {\n parameterPath: \"nextLink\",\n mapper: {\n serializedName: \"nextLink\",\n required: true,\n type: {\n name: \"String\",\n },\n },\n skipEncoding: true,\n};\n", "/*\n * Copyright (c) Microsoft Corporation.\n * Licensed under the MIT License.\n *\n * Code generated by Microsoft (R) AutoRest Code Generator.\n * Changes may cause incorrect behavior and will be lost if the code is regenerated.\n */\n\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport { AbortSignalLike } from \"@azure/abort-controller\";\nimport { LongRunningOperation, LroResponse } from \"@azure/core-lro\";\n\nexport function createLroSpec(inputs: {\n sendOperationFn: (args: any, spec: any) => Promise>;\n args: Record;\n spec: {\n readonly requestBody?: unknown;\n readonly path?: string;\n readonly httpMethod: string;\n } & Record;\n}): LongRunningOperation {\n const { args, spec, sendOperationFn } = inputs;\n return {\n requestMethod: spec.httpMethod,\n requestPath: spec.path!,\n sendInitialRequest: () => sendOperationFn(args, spec),\n sendPollRequest: (\n path: string,\n options?: { abortSignal?: AbortSignalLike },\n ) => {\n const { requestBody, ...restSpec } = spec;\n return sendOperationFn(args, {\n ...restSpec,\n httpMethod: \"GET\",\n path,\n abortSignal: options?.abortSignal,\n });\n },\n };\n}\n", "/*\n * Copyright (c) Microsoft Corporation.\n * Licensed under the MIT License.\n *\n * Code generated by Microsoft (R) AutoRest Code Generator.\n * Changes may cause incorrect behavior and will be lost if the code is regenerated.\n */\n\nimport { PagedAsyncIterableIterator, PageSettings } from \"@azure/core-paging\";\nimport { setContinuationToken } from \"../pagingHelper\";\nimport { DeploymentStacks } from \"../operationsInterfaces\";\nimport * as coreClient from \"@azure/core-client\";\nimport * as Mappers from \"../models/mappers\";\nimport * as Parameters from \"../models/parameters\";\nimport { DeploymentStacksClient } from \"../deploymentStacksClient\";\nimport {\n SimplePollerLike,\n OperationState,\n createHttpPoller,\n} from \"@azure/core-lro\";\nimport { createLroSpec } from \"../lroImpl\";\nimport {\n DeploymentStack,\n DeploymentStacksListAtResourceGroupNextOptionalParams,\n DeploymentStacksListAtResourceGroupOptionalParams,\n DeploymentStacksListAtResourceGroupResponse,\n DeploymentStacksListAtSubscriptionNextOptionalParams,\n DeploymentStacksListAtSubscriptionOptionalParams,\n DeploymentStacksListAtSubscriptionResponse,\n DeploymentStacksListAtManagementGroupNextOptionalParams,\n DeploymentStacksListAtManagementGroupOptionalParams,\n DeploymentStacksListAtManagementGroupResponse,\n DeploymentStacksCreateOrUpdateAtResourceGroupOptionalParams,\n DeploymentStacksCreateOrUpdateAtResourceGroupResponse,\n DeploymentStacksGetAtResourceGroupOptionalParams,\n DeploymentStacksGetAtResourceGroupResponse,\n DeploymentStacksDeleteAtResourceGroupOptionalParams,\n DeploymentStacksCreateOrUpdateAtSubscriptionOptionalParams,\n DeploymentStacksCreateOrUpdateAtSubscriptionResponse,\n DeploymentStacksGetAtSubscriptionOptionalParams,\n DeploymentStacksGetAtSubscriptionResponse,\n DeploymentStacksDeleteAtSubscriptionOptionalParams,\n DeploymentStacksCreateOrUpdateAtManagementGroupOptionalParams,\n DeploymentStacksCreateOrUpdateAtManagementGroupResponse,\n DeploymentStacksGetAtManagementGroupOptionalParams,\n DeploymentStacksGetAtManagementGroupResponse,\n DeploymentStacksDeleteAtManagementGroupOptionalParams,\n DeploymentStacksExportTemplateAtResourceGroupOptionalParams,\n DeploymentStacksExportTemplateAtResourceGroupResponse,\n DeploymentStacksExportTemplateAtSubscriptionOptionalParams,\n DeploymentStacksExportTemplateAtSubscriptionResponse,\n DeploymentStacksExportTemplateAtManagementGroupOptionalParams,\n DeploymentStacksExportTemplateAtManagementGroupResponse,\n DeploymentStacksValidateStackAtResourceGroupOptionalParams,\n DeploymentStacksValidateStackAtResourceGroupResponse,\n DeploymentStacksValidateStackAtSubscriptionOptionalParams,\n DeploymentStacksValidateStackAtSubscriptionResponse,\n DeploymentStacksValidateStackAtManagementGroupOptionalParams,\n DeploymentStacksValidateStackAtManagementGroupResponse,\n DeploymentStacksListAtResourceGroupNextResponse,\n DeploymentStacksListAtSubscriptionNextResponse,\n DeploymentStacksListAtManagementGroupNextResponse,\n} from \"../models\";\n\n/// \n/** Class containing DeploymentStacks operations. */\nexport class DeploymentStacksImpl implements DeploymentStacks {\n private readonly client: DeploymentStacksClient;\n\n /**\n * Initialize a new instance of the class DeploymentStacks class.\n * @param client Reference to the service client\n */\n constructor(client: DeploymentStacksClient) {\n this.client = client;\n }\n\n /**\n * Lists all the Deployment stacks within the specified Resource Group.\n * @param resourceGroupName The name of the resource group. The name is case insensitive.\n * @param options The options parameters.\n */\n public listAtResourceGroup(\n resourceGroupName: string,\n options?: DeploymentStacksListAtResourceGroupOptionalParams,\n ): PagedAsyncIterableIterator {\n const iter = this.listAtResourceGroupPagingAll(resourceGroupName, options);\n return {\n next() {\n return iter.next();\n },\n [Symbol.asyncIterator]() {\n return this;\n },\n byPage: (settings?: PageSettings) => {\n if (settings?.maxPageSize) {\n throw new Error(\"maxPageSize is not supported by this operation.\");\n }\n return this.listAtResourceGroupPagingPage(\n resourceGroupName,\n options,\n settings,\n );\n },\n };\n }\n\n private async *listAtResourceGroupPagingPage(\n resourceGroupName: string,\n options?: DeploymentStacksListAtResourceGroupOptionalParams,\n settings?: PageSettings,\n ): AsyncIterableIterator {\n let result: DeploymentStacksListAtResourceGroupResponse;\n let continuationToken = settings?.continuationToken;\n if (!continuationToken) {\n result = await this._listAtResourceGroup(resourceGroupName, options);\n let page = result.value || [];\n continuationToken = result.nextLink;\n setContinuationToken(page, continuationToken);\n yield page;\n }\n while (continuationToken) {\n result = await this._listAtResourceGroupNext(\n resourceGroupName,\n continuationToken,\n options,\n );\n continuationToken = result.nextLink;\n let page = result.value || [];\n setContinuationToken(page, continuationToken);\n yield page;\n }\n }\n\n private async *listAtResourceGroupPagingAll(\n resourceGroupName: string,\n options?: DeploymentStacksListAtResourceGroupOptionalParams,\n ): AsyncIterableIterator {\n for await (const page of this.listAtResourceGroupPagingPage(\n resourceGroupName,\n options,\n )) {\n yield* page;\n }\n }\n\n /**\n * Lists all the Deployment stacks within the specified Subscription.\n * @param options The options parameters.\n */\n public listAtSubscription(\n options?: DeploymentStacksListAtSubscriptionOptionalParams,\n ): PagedAsyncIterableIterator {\n const iter = this.listAtSubscriptionPagingAll(options);\n return {\n next() {\n return iter.next();\n },\n [Symbol.asyncIterator]() {\n return this;\n },\n byPage: (settings?: PageSettings) => {\n if (settings?.maxPageSize) {\n throw new Error(\"maxPageSize is not supported by this operation.\");\n }\n return this.listAtSubscriptionPagingPage(options, settings);\n },\n };\n }\n\n private async *listAtSubscriptionPagingPage(\n options?: DeploymentStacksListAtSubscriptionOptionalParams,\n settings?: PageSettings,\n ): AsyncIterableIterator {\n let result: DeploymentStacksListAtSubscriptionResponse;\n let continuationToken = settings?.continuationToken;\n if (!continuationToken) {\n result = await this._listAtSubscription(options);\n let page = result.value || [];\n continuationToken = result.nextLink;\n setContinuationToken(page, continuationToken);\n yield page;\n }\n while (continuationToken) {\n result = await this._listAtSubscriptionNext(continuationToken, options);\n continuationToken = result.nextLink;\n let page = result.value || [];\n setContinuationToken(page, continuationToken);\n yield page;\n }\n }\n\n private async *listAtSubscriptionPagingAll(\n options?: DeploymentStacksListAtSubscriptionOptionalParams,\n ): AsyncIterableIterator {\n for await (const page of this.listAtSubscriptionPagingPage(options)) {\n yield* page;\n }\n }\n\n /**\n * Lists all the Deployment stacks within the specified Management Group.\n * @param managementGroupId Management Group id.\n * @param options The options parameters.\n */\n public listAtManagementGroup(\n managementGroupId: string,\n options?: DeploymentStacksListAtManagementGroupOptionalParams,\n ): PagedAsyncIterableIterator {\n const iter = this.listAtManagementGroupPagingAll(\n managementGroupId,\n options,\n );\n return {\n next() {\n return iter.next();\n },\n [Symbol.asyncIterator]() {\n return this;\n },\n byPage: (settings?: PageSettings) => {\n if (settings?.maxPageSize) {\n throw new Error(\"maxPageSize is not supported by this operation.\");\n }\n return this.listAtManagementGroupPagingPage(\n managementGroupId,\n options,\n settings,\n );\n },\n };\n }\n\n private async *listAtManagementGroupPagingPage(\n managementGroupId: string,\n options?: DeploymentStacksListAtManagementGroupOptionalParams,\n settings?: PageSettings,\n ): AsyncIterableIterator {\n let result: DeploymentStacksListAtManagementGroupResponse;\n let continuationToken = settings?.continuationToken;\n if (!continuationToken) {\n result = await this._listAtManagementGroup(managementGroupId, options);\n let page = result.value || [];\n continuationToken = result.nextLink;\n setContinuationToken(page, continuationToken);\n yield page;\n }\n while (continuationToken) {\n result = await this._listAtManagementGroupNext(\n managementGroupId,\n continuationToken,\n options,\n );\n continuationToken = result.nextLink;\n let page = result.value || [];\n setContinuationToken(page, continuationToken);\n yield page;\n }\n }\n\n private async *listAtManagementGroupPagingAll(\n managementGroupId: string,\n options?: DeploymentStacksListAtManagementGroupOptionalParams,\n ): AsyncIterableIterator {\n for await (const page of this.listAtManagementGroupPagingPage(\n managementGroupId,\n options,\n )) {\n yield* page;\n }\n }\n\n /**\n * Lists all the Deployment stacks within the specified Resource Group.\n * @param resourceGroupName The name of the resource group. The name is case insensitive.\n * @param options The options parameters.\n */\n private _listAtResourceGroup(\n resourceGroupName: string,\n options?: DeploymentStacksListAtResourceGroupOptionalParams,\n ): Promise {\n return this.client.sendOperationRequest(\n { resourceGroupName, options },\n listAtResourceGroupOperationSpec,\n );\n }\n\n /**\n * Lists all the Deployment stacks within the specified Subscription.\n * @param options The options parameters.\n */\n private _listAtSubscription(\n options?: DeploymentStacksListAtSubscriptionOptionalParams,\n ): Promise {\n return this.client.sendOperationRequest(\n { options },\n listAtSubscriptionOperationSpec,\n );\n }\n\n /**\n * Lists all the Deployment stacks within the specified Management Group.\n * @param managementGroupId Management Group id.\n * @param options The options parameters.\n */\n private _listAtManagementGroup(\n managementGroupId: string,\n options?: DeploymentStacksListAtManagementGroupOptionalParams,\n ): Promise {\n return this.client.sendOperationRequest(\n { managementGroupId, options },\n listAtManagementGroupOperationSpec,\n );\n }\n\n /**\n * Creates or updates a Deployment stack at Resource Group scope.\n * @param resourceGroupName The name of the resource group. The name is case insensitive.\n * @param deploymentStackName Name of the deployment stack.\n * @param deploymentStack Deployment stack supplied to the operation.\n * @param options The options parameters.\n */\n async beginCreateOrUpdateAtResourceGroup(\n resourceGroupName: string,\n deploymentStackName: string,\n deploymentStack: DeploymentStack,\n options?: DeploymentStacksCreateOrUpdateAtResourceGroupOptionalParams,\n ): Promise<\n SimplePollerLike<\n OperationState,\n DeploymentStacksCreateOrUpdateAtResourceGroupResponse\n >\n > {\n const directSendOperation = async (\n args: coreClient.OperationArguments,\n spec: coreClient.OperationSpec,\n ): Promise => {\n return this.client.sendOperationRequest(args, spec);\n };\n const sendOperationFn = async (\n args: coreClient.OperationArguments,\n spec: coreClient.OperationSpec,\n ) => {\n let currentRawResponse: coreClient.FullOperationResponse | undefined =\n undefined;\n const providedCallback = args.options?.onResponse;\n const callback: coreClient.RawResponseCallback = (\n rawResponse: coreClient.FullOperationResponse,\n flatResponse: unknown,\n ) => {\n currentRawResponse = rawResponse;\n providedCallback?.(rawResponse, flatResponse);\n };\n const updatedArgs = {\n ...args,\n options: {\n ...args.options,\n onResponse: callback,\n },\n };\n const flatResponse = await directSendOperation(updatedArgs, spec);\n return {\n flatResponse,\n rawResponse: {\n statusCode: currentRawResponse!.status,\n body: currentRawResponse!.parsedBody,\n headers: currentRawResponse!.headers.toJSON(),\n },\n };\n };\n\n const lro = createLroSpec({\n sendOperationFn,\n args: {\n resourceGroupName,\n deploymentStackName,\n deploymentStack,\n options,\n },\n spec: createOrUpdateAtResourceGroupOperationSpec,\n });\n const poller = await createHttpPoller<\n DeploymentStacksCreateOrUpdateAtResourceGroupResponse,\n OperationState\n >(lro, {\n restoreFrom: options?.resumeFrom,\n intervalInMs: options?.updateIntervalInMs,\n resourceLocationConfig: \"azure-async-operation\",\n });\n await poller.poll();\n return poller;\n }\n\n /**\n * Creates or updates a Deployment stack at Resource Group scope.\n * @param resourceGroupName The name of the resource group. The name is case insensitive.\n * @param deploymentStackName Name of the deployment stack.\n * @param deploymentStack Deployment stack supplied to the operation.\n * @param options The options parameters.\n */\n async beginCreateOrUpdateAtResourceGroupAndWait(\n resourceGroupName: string,\n deploymentStackName: string,\n deploymentStack: DeploymentStack,\n options?: DeploymentStacksCreateOrUpdateAtResourceGroupOptionalParams,\n ): Promise {\n const poller = await this.beginCreateOrUpdateAtResourceGroup(\n resourceGroupName,\n deploymentStackName,\n deploymentStack,\n options,\n );\n return poller.pollUntilDone();\n }\n\n /**\n * Gets a Deployment stack with a given name at Resource Group scope.\n * @param resourceGroupName The name of the resource group. The name is case insensitive.\n * @param deploymentStackName Name of the deployment stack.\n * @param options The options parameters.\n */\n getAtResourceGroup(\n resourceGroupName: string,\n deploymentStackName: string,\n options?: DeploymentStacksGetAtResourceGroupOptionalParams,\n ): Promise {\n return this.client.sendOperationRequest(\n { resourceGroupName, deploymentStackName, options },\n getAtResourceGroupOperationSpec,\n );\n }\n\n /**\n * Deletes a Deployment stack by name at Resource Group scope. When operation completes, status code\n * 200 returned without content.\n * @param resourceGroupName The name of the resource group. The name is case insensitive.\n * @param deploymentStackName Name of the deployment stack.\n * @param options The options parameters.\n */\n async beginDeleteAtResourceGroup(\n resourceGroupName: string,\n deploymentStackName: string,\n options?: DeploymentStacksDeleteAtResourceGroupOptionalParams,\n ): Promise, void>> {\n const directSendOperation = async (\n args: coreClient.OperationArguments,\n spec: coreClient.OperationSpec,\n ): Promise => {\n return this.client.sendOperationRequest(args, spec);\n };\n const sendOperationFn = async (\n args: coreClient.OperationArguments,\n spec: coreClient.OperationSpec,\n ) => {\n let currentRawResponse: coreClient.FullOperationResponse | undefined =\n undefined;\n const providedCallback = args.options?.onResponse;\n const callback: coreClient.RawResponseCallback = (\n rawResponse: coreClient.FullOperationResponse,\n flatResponse: unknown,\n ) => {\n currentRawResponse = rawResponse;\n providedCallback?.(rawResponse, flatResponse);\n };\n const updatedArgs = {\n ...args,\n options: {\n ...args.options,\n onResponse: callback,\n },\n };\n const flatResponse = await directSendOperation(updatedArgs, spec);\n return {\n flatResponse,\n rawResponse: {\n statusCode: currentRawResponse!.status,\n body: currentRawResponse!.parsedBody,\n headers: currentRawResponse!.headers.toJSON(),\n },\n };\n };\n\n const lro = createLroSpec({\n sendOperationFn,\n args: { resourceGroupName, deploymentStackName, options },\n spec: deleteAtResourceGroupOperationSpec,\n });\n const poller = await createHttpPoller>(lro, {\n restoreFrom: options?.resumeFrom,\n intervalInMs: options?.updateIntervalInMs,\n resourceLocationConfig: \"location\",\n });\n await poller.poll();\n return poller;\n }\n\n /**\n * Deletes a Deployment stack by name at Resource Group scope. When operation completes, status code\n * 200 returned without content.\n * @param resourceGroupName The name of the resource group. The name is case insensitive.\n * @param deploymentStackName Name of the deployment stack.\n * @param options The options parameters.\n */\n async beginDeleteAtResourceGroupAndWait(\n resourceGroupName: string,\n deploymentStackName: string,\n options?: DeploymentStacksDeleteAtResourceGroupOptionalParams,\n ): Promise {\n const poller = await this.beginDeleteAtResourceGroup(\n resourceGroupName,\n deploymentStackName,\n options,\n );\n return poller.pollUntilDone();\n }\n\n /**\n * Creates or updates a Deployment stack at Subscription scope.\n * @param deploymentStackName Name of the deployment stack.\n * @param deploymentStack Deployment stack supplied to the operation.\n * @param options The options parameters.\n */\n async beginCreateOrUpdateAtSubscription(\n deploymentStackName: string,\n deploymentStack: DeploymentStack,\n options?: DeploymentStacksCreateOrUpdateAtSubscriptionOptionalParams,\n ): Promise<\n SimplePollerLike<\n OperationState,\n DeploymentStacksCreateOrUpdateAtSubscriptionResponse\n >\n > {\n const directSendOperation = async (\n args: coreClient.OperationArguments,\n spec: coreClient.OperationSpec,\n ): Promise => {\n return this.client.sendOperationRequest(args, spec);\n };\n const sendOperationFn = async (\n args: coreClient.OperationArguments,\n spec: coreClient.OperationSpec,\n ) => {\n let currentRawResponse: coreClient.FullOperationResponse | undefined =\n undefined;\n const providedCallback = args.options?.onResponse;\n const callback: coreClient.RawResponseCallback = (\n rawResponse: coreClient.FullOperationResponse,\n flatResponse: unknown,\n ) => {\n currentRawResponse = rawResponse;\n providedCallback?.(rawResponse, flatResponse);\n };\n const updatedArgs = {\n ...args,\n options: {\n ...args.options,\n onResponse: callback,\n },\n };\n const flatResponse = await directSendOperation(updatedArgs, spec);\n return {\n flatResponse,\n rawResponse: {\n statusCode: currentRawResponse!.status,\n body: currentRawResponse!.parsedBody,\n headers: currentRawResponse!.headers.toJSON(),\n },\n };\n };\n\n const lro = createLroSpec({\n sendOperationFn,\n args: { deploymentStackName, deploymentStack, options },\n spec: createOrUpdateAtSubscriptionOperationSpec,\n });\n const poller = await createHttpPoller<\n DeploymentStacksCreateOrUpdateAtSubscriptionResponse,\n OperationState\n >(lro, {\n restoreFrom: options?.resumeFrom,\n intervalInMs: options?.updateIntervalInMs,\n resourceLocationConfig: \"azure-async-operation\",\n });\n await poller.poll();\n return poller;\n }\n\n /**\n * Creates or updates a Deployment stack at Subscription scope.\n * @param deploymentStackName Name of the deployment stack.\n * @param deploymentStack Deployment stack supplied to the operation.\n * @param options The options parameters.\n */\n async beginCreateOrUpdateAtSubscriptionAndWait(\n deploymentStackName: string,\n deploymentStack: DeploymentStack,\n options?: DeploymentStacksCreateOrUpdateAtSubscriptionOptionalParams,\n ): Promise {\n const poller = await this.beginCreateOrUpdateAtSubscription(\n deploymentStackName,\n deploymentStack,\n options,\n );\n return poller.pollUntilDone();\n }\n\n /**\n * Gets a Deployment stack with a given name at Subscription scope.\n * @param deploymentStackName Name of the deployment stack.\n * @param options The options parameters.\n */\n getAtSubscription(\n deploymentStackName: string,\n options?: DeploymentStacksGetAtSubscriptionOptionalParams,\n ): Promise {\n return this.client.sendOperationRequest(\n { deploymentStackName, options },\n getAtSubscriptionOperationSpec,\n );\n }\n\n /**\n * Deletes a Deployment stack by name at Subscription scope. When operation completes, status code 200\n * returned without content.\n * @param deploymentStackName Name of the deployment stack.\n * @param options The options parameters.\n */\n async beginDeleteAtSubscription(\n deploymentStackName: string,\n options?: DeploymentStacksDeleteAtSubscriptionOptionalParams,\n ): Promise, void>> {\n const directSendOperation = async (\n args: coreClient.OperationArguments,\n spec: coreClient.OperationSpec,\n ): Promise => {\n return this.client.sendOperationRequest(args, spec);\n };\n const sendOperationFn = async (\n args: coreClient.OperationArguments,\n spec: coreClient.OperationSpec,\n ) => {\n let currentRawResponse: coreClient.FullOperationResponse | undefined =\n undefined;\n const providedCallback = args.options?.onResponse;\n const callback: coreClient.RawResponseCallback = (\n rawResponse: coreClient.FullOperationResponse,\n flatResponse: unknown,\n ) => {\n currentRawResponse = rawResponse;\n providedCallback?.(rawResponse, flatResponse);\n };\n const updatedArgs = {\n ...args,\n options: {\n ...args.options,\n onResponse: callback,\n },\n };\n const flatResponse = await directSendOperation(updatedArgs, spec);\n return {\n flatResponse,\n rawResponse: {\n statusCode: currentRawResponse!.status,\n body: currentRawResponse!.parsedBody,\n headers: currentRawResponse!.headers.toJSON(),\n },\n };\n };\n\n const lro = createLroSpec({\n sendOperationFn,\n args: { deploymentStackName, options },\n spec: deleteAtSubscriptionOperationSpec,\n });\n const poller = await createHttpPoller>(lro, {\n restoreFrom: options?.resumeFrom,\n intervalInMs: options?.updateIntervalInMs,\n resourceLocationConfig: \"location\",\n });\n await poller.poll();\n return poller;\n }\n\n /**\n * Deletes a Deployment stack by name at Subscription scope. When operation completes, status code 200\n * returned without content.\n * @param deploymentStackName Name of the deployment stack.\n * @param options The options parameters.\n */\n async beginDeleteAtSubscriptionAndWait(\n deploymentStackName: string,\n options?: DeploymentStacksDeleteAtSubscriptionOptionalParams,\n ): Promise {\n const poller = await this.beginDeleteAtSubscription(\n deploymentStackName,\n options,\n );\n return poller.pollUntilDone();\n }\n\n /**\n * Creates or updates a Deployment stack at Management Group scope.\n * @param managementGroupId Management Group id.\n * @param deploymentStackName Name of the deployment stack.\n * @param deploymentStack Deployment stack supplied to the operation.\n * @param options The options parameters.\n */\n async beginCreateOrUpdateAtManagementGroup(\n managementGroupId: string,\n deploymentStackName: string,\n deploymentStack: DeploymentStack,\n options?: DeploymentStacksCreateOrUpdateAtManagementGroupOptionalParams,\n ): Promise<\n SimplePollerLike<\n OperationState,\n DeploymentStacksCreateOrUpdateAtManagementGroupResponse\n >\n > {\n const directSendOperation = async (\n args: coreClient.OperationArguments,\n spec: coreClient.OperationSpec,\n ): Promise => {\n return this.client.sendOperationRequest(args, spec);\n };\n const sendOperationFn = async (\n args: coreClient.OperationArguments,\n spec: coreClient.OperationSpec,\n ) => {\n let currentRawResponse: coreClient.FullOperationResponse | undefined =\n undefined;\n const providedCallback = args.options?.onResponse;\n const callback: coreClient.RawResponseCallback = (\n rawResponse: coreClient.FullOperationResponse,\n flatResponse: unknown,\n ) => {\n currentRawResponse = rawResponse;\n providedCallback?.(rawResponse, flatResponse);\n };\n const updatedArgs = {\n ...args,\n options: {\n ...args.options,\n onResponse: callback,\n },\n };\n const flatResponse = await directSendOperation(updatedArgs, spec);\n return {\n flatResponse,\n rawResponse: {\n statusCode: currentRawResponse!.status,\n body: currentRawResponse!.parsedBody,\n headers: currentRawResponse!.headers.toJSON(),\n },\n };\n };\n\n const lro = createLroSpec({\n sendOperationFn,\n args: {\n managementGroupId,\n deploymentStackName,\n deploymentStack,\n options,\n },\n spec: createOrUpdateAtManagementGroupOperationSpec,\n });\n const poller = await createHttpPoller<\n DeploymentStacksCreateOrUpdateAtManagementGroupResponse,\n OperationState\n >(lro, {\n restoreFrom: options?.resumeFrom,\n intervalInMs: options?.updateIntervalInMs,\n resourceLocationConfig: \"azure-async-operation\",\n });\n await poller.poll();\n return poller;\n }\n\n /**\n * Creates or updates a Deployment stack at Management Group scope.\n * @param managementGroupId Management Group id.\n * @param deploymentStackName Name of the deployment stack.\n * @param deploymentStack Deployment stack supplied to the operation.\n * @param options The options parameters.\n */\n async beginCreateOrUpdateAtManagementGroupAndWait(\n managementGroupId: string,\n deploymentStackName: string,\n deploymentStack: DeploymentStack,\n options?: DeploymentStacksCreateOrUpdateAtManagementGroupOptionalParams,\n ): Promise {\n const poller = await this.beginCreateOrUpdateAtManagementGroup(\n managementGroupId,\n deploymentStackName,\n deploymentStack,\n options,\n );\n return poller.pollUntilDone();\n }\n\n /**\n * Gets a Deployment stack with a given name at Management Group scope.\n * @param managementGroupId Management Group id.\n * @param deploymentStackName Name of the deployment stack.\n * @param options The options parameters.\n */\n getAtManagementGroup(\n managementGroupId: string,\n deploymentStackName: string,\n options?: DeploymentStacksGetAtManagementGroupOptionalParams,\n ): Promise {\n return this.client.sendOperationRequest(\n { managementGroupId, deploymentStackName, options },\n getAtManagementGroupOperationSpec,\n );\n }\n\n /**\n * Deletes a Deployment stack by name at Management Group scope. When operation completes, status code\n * 200 returned without content.\n * @param managementGroupId Management Group id.\n * @param deploymentStackName Name of the deployment stack.\n * @param options The options parameters.\n */\n async beginDeleteAtManagementGroup(\n managementGroupId: string,\n deploymentStackName: string,\n options?: DeploymentStacksDeleteAtManagementGroupOptionalParams,\n ): Promise, void>> {\n const directSendOperation = async (\n args: coreClient.OperationArguments,\n spec: coreClient.OperationSpec,\n ): Promise => {\n return this.client.sendOperationRequest(args, spec);\n };\n const sendOperationFn = async (\n args: coreClient.OperationArguments,\n spec: coreClient.OperationSpec,\n ) => {\n let currentRawResponse: coreClient.FullOperationResponse | undefined =\n undefined;\n const providedCallback = args.options?.onResponse;\n const callback: coreClient.RawResponseCallback = (\n rawResponse: coreClient.FullOperationResponse,\n flatResponse: unknown,\n ) => {\n currentRawResponse = rawResponse;\n providedCallback?.(rawResponse, flatResponse);\n };\n const updatedArgs = {\n ...args,\n options: {\n ...args.options,\n onResponse: callback,\n },\n };\n const flatResponse = await directSendOperation(updatedArgs, spec);\n return {\n flatResponse,\n rawResponse: {\n statusCode: currentRawResponse!.status,\n body: currentRawResponse!.parsedBody,\n headers: currentRawResponse!.headers.toJSON(),\n },\n };\n };\n\n const lro = createLroSpec({\n sendOperationFn,\n args: { managementGroupId, deploymentStackName, options },\n spec: deleteAtManagementGroupOperationSpec,\n });\n const poller = await createHttpPoller>(lro, {\n restoreFrom: options?.resumeFrom,\n intervalInMs: options?.updateIntervalInMs,\n resourceLocationConfig: \"location\",\n });\n await poller.poll();\n return poller;\n }\n\n /**\n * Deletes a Deployment stack by name at Management Group scope. When operation completes, status code\n * 200 returned without content.\n * @param managementGroupId Management Group id.\n * @param deploymentStackName Name of the deployment stack.\n * @param options The options parameters.\n */\n async beginDeleteAtManagementGroupAndWait(\n managementGroupId: string,\n deploymentStackName: string,\n options?: DeploymentStacksDeleteAtManagementGroupOptionalParams,\n ): Promise {\n const poller = await this.beginDeleteAtManagementGroup(\n managementGroupId,\n deploymentStackName,\n options,\n );\n return poller.pollUntilDone();\n }\n\n /**\n * Exports the template used to create the Deployment stack at Resource Group scope.\n * @param resourceGroupName The name of the resource group. The name is case insensitive.\n * @param deploymentStackName Name of the deployment stack.\n * @param options The options parameters.\n */\n exportTemplateAtResourceGroup(\n resourceGroupName: string,\n deploymentStackName: string,\n options?: DeploymentStacksExportTemplateAtResourceGroupOptionalParams,\n ): Promise {\n return this.client.sendOperationRequest(\n { resourceGroupName, deploymentStackName, options },\n exportTemplateAtResourceGroupOperationSpec,\n );\n }\n\n /**\n * Exports the template used to create the Deployment stack at Subscription scope.\n * @param deploymentStackName Name of the deployment stack.\n * @param options The options parameters.\n */\n exportTemplateAtSubscription(\n deploymentStackName: string,\n options?: DeploymentStacksExportTemplateAtSubscriptionOptionalParams,\n ): Promise {\n return this.client.sendOperationRequest(\n { deploymentStackName, options },\n exportTemplateAtSubscriptionOperationSpec,\n );\n }\n\n /**\n * Exports the template used to create the Deployment stack at Management Group scope.\n * @param managementGroupId Management Group id.\n * @param deploymentStackName Name of the deployment stack.\n * @param options The options parameters.\n */\n exportTemplateAtManagementGroup(\n managementGroupId: string,\n deploymentStackName: string,\n options?: DeploymentStacksExportTemplateAtManagementGroupOptionalParams,\n ): Promise {\n return this.client.sendOperationRequest(\n { managementGroupId, deploymentStackName, options },\n exportTemplateAtManagementGroupOperationSpec,\n );\n }\n\n /**\n * Runs preflight validation on the Resource Group scoped Deployment stack template to verify its\n * acceptance to Azure Resource Manager.\n * @param resourceGroupName The name of the resource group. The name is case insensitive.\n * @param deploymentStackName Name of the deployment stack.\n * @param deploymentStack Deployment stack to validate.\n * @param options The options parameters.\n */\n async beginValidateStackAtResourceGroup(\n resourceGroupName: string,\n deploymentStackName: string,\n deploymentStack: DeploymentStack,\n options?: DeploymentStacksValidateStackAtResourceGroupOptionalParams,\n ): Promise<\n SimplePollerLike<\n OperationState,\n DeploymentStacksValidateStackAtResourceGroupResponse\n >\n > {\n const directSendOperation = async (\n args: coreClient.OperationArguments,\n spec: coreClient.OperationSpec,\n ): Promise => {\n return this.client.sendOperationRequest(args, spec);\n };\n const sendOperationFn = async (\n args: coreClient.OperationArguments,\n spec: coreClient.OperationSpec,\n ) => {\n let currentRawResponse: coreClient.FullOperationResponse | undefined =\n undefined;\n const providedCallback = args.options?.onResponse;\n const callback: coreClient.RawResponseCallback = (\n rawResponse: coreClient.FullOperationResponse,\n flatResponse: unknown,\n ) => {\n currentRawResponse = rawResponse;\n providedCallback?.(rawResponse, flatResponse);\n };\n const updatedArgs = {\n ...args,\n options: {\n ...args.options,\n onResponse: callback,\n },\n };\n const flatResponse = await directSendOperation(updatedArgs, spec);\n return {\n flatResponse,\n rawResponse: {\n statusCode: currentRawResponse!.status,\n body: currentRawResponse!.parsedBody,\n headers: currentRawResponse!.headers.toJSON(),\n },\n };\n };\n\n const lro = createLroSpec({\n sendOperationFn,\n args: {\n resourceGroupName,\n deploymentStackName,\n deploymentStack,\n options,\n },\n spec: validateStackAtResourceGroupOperationSpec,\n });\n const poller = await createHttpPoller<\n DeploymentStacksValidateStackAtResourceGroupResponse,\n OperationState\n >(lro, {\n restoreFrom: options?.resumeFrom,\n intervalInMs: options?.updateIntervalInMs,\n resourceLocationConfig: \"location\",\n });\n await poller.poll();\n return poller;\n }\n\n /**\n * Runs preflight validation on the Resource Group scoped Deployment stack template to verify its\n * acceptance to Azure Resource Manager.\n * @param resourceGroupName The name of the resource group. The name is case insensitive.\n * @param deploymentStackName Name of the deployment stack.\n * @param deploymentStack Deployment stack to validate.\n * @param options The options parameters.\n */\n async beginValidateStackAtResourceGroupAndWait(\n resourceGroupName: string,\n deploymentStackName: string,\n deploymentStack: DeploymentStack,\n options?: DeploymentStacksValidateStackAtResourceGroupOptionalParams,\n ): Promise {\n const poller = await this.beginValidateStackAtResourceGroup(\n resourceGroupName,\n deploymentStackName,\n deploymentStack,\n options,\n );\n return poller.pollUntilDone();\n }\n\n /**\n * Runs preflight validation on the Subscription scoped Deployment stack template to verify its\n * acceptance to Azure Resource Manager.\n * @param deploymentStackName Name of the deployment stack.\n * @param deploymentStack Deployment stack to validate.\n * @param options The options parameters.\n */\n async beginValidateStackAtSubscription(\n deploymentStackName: string,\n deploymentStack: DeploymentStack,\n options?: DeploymentStacksValidateStackAtSubscriptionOptionalParams,\n ): Promise<\n SimplePollerLike<\n OperationState,\n DeploymentStacksValidateStackAtSubscriptionResponse\n >\n > {\n const directSendOperation = async (\n args: coreClient.OperationArguments,\n spec: coreClient.OperationSpec,\n ): Promise => {\n return this.client.sendOperationRequest(args, spec);\n };\n const sendOperationFn = async (\n args: coreClient.OperationArguments,\n spec: coreClient.OperationSpec,\n ) => {\n let currentRawResponse: coreClient.FullOperationResponse | undefined =\n undefined;\n const providedCallback = args.options?.onResponse;\n const callback: coreClient.RawResponseCallback = (\n rawResponse: coreClient.FullOperationResponse,\n flatResponse: unknown,\n ) => {\n currentRawResponse = rawResponse;\n providedCallback?.(rawResponse, flatResponse);\n };\n const updatedArgs = {\n ...args,\n options: {\n ...args.options,\n onResponse: callback,\n },\n };\n const flatResponse = await directSendOperation(updatedArgs, spec);\n return {\n flatResponse,\n rawResponse: {\n statusCode: currentRawResponse!.status,\n body: currentRawResponse!.parsedBody,\n headers: currentRawResponse!.headers.toJSON(),\n },\n };\n };\n\n const lro = createLroSpec({\n sendOperationFn,\n args: { deploymentStackName, deploymentStack, options },\n spec: validateStackAtSubscriptionOperationSpec,\n });\n const poller = await createHttpPoller<\n DeploymentStacksValidateStackAtSubscriptionResponse,\n OperationState\n >(lro, {\n restoreFrom: options?.resumeFrom,\n intervalInMs: options?.updateIntervalInMs,\n resourceLocationConfig: \"location\",\n });\n await poller.poll();\n return poller;\n }\n\n /**\n * Runs preflight validation on the Subscription scoped Deployment stack template to verify its\n * acceptance to Azure Resource Manager.\n * @param deploymentStackName Name of the deployment stack.\n * @param deploymentStack Deployment stack to validate.\n * @param options The options parameters.\n */\n async beginValidateStackAtSubscriptionAndWait(\n deploymentStackName: string,\n deploymentStack: DeploymentStack,\n options?: DeploymentStacksValidateStackAtSubscriptionOptionalParams,\n ): Promise {\n const poller = await this.beginValidateStackAtSubscription(\n deploymentStackName,\n deploymentStack,\n options,\n );\n return poller.pollUntilDone();\n }\n\n /**\n * Runs preflight validation on the Management Group scoped Deployment stack template to verify its\n * acceptance to Azure Resource Manager.\n * @param managementGroupId Management Group id.\n * @param deploymentStackName Name of the deployment stack.\n * @param deploymentStack Deployment stack to validate.\n * @param options The options parameters.\n */\n async beginValidateStackAtManagementGroup(\n managementGroupId: string,\n deploymentStackName: string,\n deploymentStack: DeploymentStack,\n options?: DeploymentStacksValidateStackAtManagementGroupOptionalParams,\n ): Promise<\n SimplePollerLike<\n OperationState,\n DeploymentStacksValidateStackAtManagementGroupResponse\n >\n > {\n const directSendOperation = async (\n args: coreClient.OperationArguments,\n spec: coreClient.OperationSpec,\n ): Promise => {\n return this.client.sendOperationRequest(args, spec);\n };\n const sendOperationFn = async (\n args: coreClient.OperationArguments,\n spec: coreClient.OperationSpec,\n ) => {\n let currentRawResponse: coreClient.FullOperationResponse | undefined =\n undefined;\n const providedCallback = args.options?.onResponse;\n const callback: coreClient.RawResponseCallback = (\n rawResponse: coreClient.FullOperationResponse,\n flatResponse: unknown,\n ) => {\n currentRawResponse = rawResponse;\n providedCallback?.(rawResponse, flatResponse);\n };\n const updatedArgs = {\n ...args,\n options: {\n ...args.options,\n onResponse: callback,\n },\n };\n const flatResponse = await directSendOperation(updatedArgs, spec);\n return {\n flatResponse,\n rawResponse: {\n statusCode: currentRawResponse!.status,\n body: currentRawResponse!.parsedBody,\n headers: currentRawResponse!.headers.toJSON(),\n },\n };\n };\n\n const lro = createLroSpec({\n sendOperationFn,\n args: {\n managementGroupId,\n deploymentStackName,\n deploymentStack,\n options,\n },\n spec: validateStackAtManagementGroupOperationSpec,\n });\n const poller = await createHttpPoller<\n DeploymentStacksValidateStackAtManagementGroupResponse,\n OperationState\n >(lro, {\n restoreFrom: options?.resumeFrom,\n intervalInMs: options?.updateIntervalInMs,\n resourceLocationConfig: \"location\",\n });\n await poller.poll();\n return poller;\n }\n\n /**\n * Runs preflight validation on the Management Group scoped Deployment stack template to verify its\n * acceptance to Azure Resource Manager.\n * @param managementGroupId Management Group id.\n * @param deploymentStackName Name of the deployment stack.\n * @param deploymentStack Deployment stack to validate.\n * @param options The options parameters.\n */\n async beginValidateStackAtManagementGroupAndWait(\n managementGroupId: string,\n deploymentStackName: string,\n deploymentStack: DeploymentStack,\n options?: DeploymentStacksValidateStackAtManagementGroupOptionalParams,\n ): Promise {\n const poller = await this.beginValidateStackAtManagementGroup(\n managementGroupId,\n deploymentStackName,\n deploymentStack,\n options,\n );\n return poller.pollUntilDone();\n }\n\n /**\n * ListAtResourceGroupNext\n * @param resourceGroupName The name of the resource group. The name is case insensitive.\n * @param nextLink The nextLink from the previous successful call to the ListAtResourceGroup method.\n * @param options The options parameters.\n */\n private _listAtResourceGroupNext(\n resourceGroupName: string,\n nextLink: string,\n options?: DeploymentStacksListAtResourceGroupNextOptionalParams,\n ): Promise {\n return this.client.sendOperationRequest(\n { resourceGroupName, nextLink, options },\n listAtResourceGroupNextOperationSpec,\n );\n }\n\n /**\n * ListAtSubscriptionNext\n * @param nextLink The nextLink from the previous successful call to the ListAtSubscription method.\n * @param options The options parameters.\n */\n private _listAtSubscriptionNext(\n nextLink: string,\n options?: DeploymentStacksListAtSubscriptionNextOptionalParams,\n ): Promise {\n return this.client.sendOperationRequest(\n { nextLink, options },\n listAtSubscriptionNextOperationSpec,\n );\n }\n\n /**\n * ListAtManagementGroupNext\n * @param managementGroupId Management Group id.\n * @param nextLink The nextLink from the previous successful call to the ListAtManagementGroup method.\n * @param options The options parameters.\n */\n private _listAtManagementGroupNext(\n managementGroupId: string,\n nextLink: string,\n options?: DeploymentStacksListAtManagementGroupNextOptionalParams,\n ): Promise {\n return this.client.sendOperationRequest(\n { managementGroupId, nextLink, options },\n listAtManagementGroupNextOperationSpec,\n );\n }\n}\n// Operation Specifications\nconst serializer = coreClient.createSerializer(Mappers, /* isXml */ false);\n\nconst listAtResourceGroupOperationSpec: coreClient.OperationSpec = {\n path: \"/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Resources/deploymentStacks\",\n httpMethod: \"GET\",\n responses: {\n 200: {\n bodyMapper: Mappers.DeploymentStackListResult,\n },\n default: {\n bodyMapper: Mappers.DeploymentStacksError,\n },\n },\n queryParameters: [Parameters.apiVersion],\n urlParameters: [\n Parameters.$host,\n Parameters.subscriptionId,\n Parameters.resourceGroupName,\n ],\n headerParameters: [Parameters.accept],\n serializer,\n};\nconst listAtSubscriptionOperationSpec: coreClient.OperationSpec = {\n path: \"/subscriptions/{subscriptionId}/providers/Microsoft.Resources/deploymentStacks\",\n httpMethod: \"GET\",\n responses: {\n 200: {\n bodyMapper: Mappers.DeploymentStackListResult,\n },\n default: {\n bodyMapper: Mappers.DeploymentStacksError,\n },\n },\n queryParameters: [Parameters.apiVersion],\n urlParameters: [Parameters.$host, Parameters.subscriptionId],\n headerParameters: [Parameters.accept],\n serializer,\n};\nconst listAtManagementGroupOperationSpec: coreClient.OperationSpec = {\n path: \"/providers/Microsoft.Management/managementGroups/{managementGroupId}/providers/Microsoft.Resources/deploymentStacks\",\n httpMethod: \"GET\",\n responses: {\n 200: {\n bodyMapper: Mappers.DeploymentStackListResult,\n },\n default: {\n bodyMapper: Mappers.DeploymentStacksError,\n },\n },\n queryParameters: [Parameters.apiVersion],\n urlParameters: [Parameters.$host, Parameters.managementGroupId],\n headerParameters: [Parameters.accept],\n serializer,\n};\nconst createOrUpdateAtResourceGroupOperationSpec: coreClient.OperationSpec = {\n path: \"/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Resources/deploymentStacks/{deploymentStackName}\",\n httpMethod: \"PUT\",\n responses: {\n 200: {\n bodyMapper: Mappers.DeploymentStack,\n },\n 201: {\n bodyMapper: Mappers.DeploymentStack,\n },\n 202: {\n bodyMapper: Mappers.DeploymentStack,\n },\n 204: {\n bodyMapper: Mappers.DeploymentStack,\n },\n default: {\n bodyMapper: Mappers.DeploymentStacksError,\n },\n },\n requestBody: Parameters.deploymentStack,\n queryParameters: [Parameters.apiVersion],\n urlParameters: [\n Parameters.$host,\n Parameters.subscriptionId,\n Parameters.resourceGroupName,\n Parameters.deploymentStackName,\n ],\n headerParameters: [Parameters.accept, Parameters.contentType],\n mediaType: \"json\",\n serializer,\n};\nconst getAtResourceGroupOperationSpec: coreClient.OperationSpec = {\n path: \"/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Resources/deploymentStacks/{deploymentStackName}\",\n httpMethod: \"GET\",\n responses: {\n 200: {\n bodyMapper: Mappers.DeploymentStack,\n },\n default: {\n bodyMapper: Mappers.DeploymentStacksError,\n },\n },\n queryParameters: [Parameters.apiVersion],\n urlParameters: [\n Parameters.$host,\n Parameters.subscriptionId,\n Parameters.resourceGroupName,\n Parameters.deploymentStackName,\n ],\n headerParameters: [Parameters.accept],\n serializer,\n};\nconst deleteAtResourceGroupOperationSpec: coreClient.OperationSpec = {\n path: \"/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Resources/deploymentStacks/{deploymentStackName}\",\n httpMethod: \"DELETE\",\n responses: {\n 200: {},\n 201: {},\n 202: {},\n 204: {},\n default: {\n bodyMapper: Mappers.DeploymentStacksError,\n },\n },\n queryParameters: [\n Parameters.apiVersion,\n Parameters.unmanageActionResources,\n Parameters.unmanageActionResourceGroups,\n Parameters.unmanageActionManagementGroups,\n Parameters.bypassStackOutOfSyncError,\n ],\n urlParameters: [\n Parameters.$host,\n Parameters.subscriptionId,\n Parameters.resourceGroupName,\n Parameters.deploymentStackName,\n ],\n headerParameters: [Parameters.accept],\n serializer,\n};\nconst createOrUpdateAtSubscriptionOperationSpec: coreClient.OperationSpec = {\n path: \"/subscriptions/{subscriptionId}/providers/Microsoft.Resources/deploymentStacks/{deploymentStackName}\",\n httpMethod: \"PUT\",\n responses: {\n 200: {\n bodyMapper: Mappers.DeploymentStack,\n },\n 201: {\n bodyMapper: Mappers.DeploymentStack,\n },\n 202: {\n bodyMapper: Mappers.DeploymentStack,\n },\n 204: {\n bodyMapper: Mappers.DeploymentStack,\n },\n default: {\n bodyMapper: Mappers.DeploymentStacksError,\n },\n },\n requestBody: Parameters.deploymentStack,\n queryParameters: [Parameters.apiVersion],\n urlParameters: [\n Parameters.$host,\n Parameters.subscriptionId,\n Parameters.deploymentStackName,\n ],\n headerParameters: [Parameters.accept, Parameters.contentType],\n mediaType: \"json\",\n serializer,\n};\nconst getAtSubscriptionOperationSpec: coreClient.OperationSpec = {\n path: \"/subscriptions/{subscriptionId}/providers/Microsoft.Resources/deploymentStacks/{deploymentStackName}\",\n httpMethod: \"GET\",\n responses: {\n 200: {\n bodyMapper: Mappers.DeploymentStack,\n },\n default: {\n bodyMapper: Mappers.DeploymentStacksError,\n },\n },\n queryParameters: [Parameters.apiVersion],\n urlParameters: [\n Parameters.$host,\n Parameters.subscriptionId,\n Parameters.deploymentStackName,\n ],\n headerParameters: [Parameters.accept],\n serializer,\n};\nconst deleteAtSubscriptionOperationSpec: coreClient.OperationSpec = {\n path: \"/subscriptions/{subscriptionId}/providers/Microsoft.Resources/deploymentStacks/{deploymentStackName}\",\n httpMethod: \"DELETE\",\n responses: {\n 200: {},\n 201: {},\n 202: {},\n 204: {},\n default: {\n bodyMapper: Mappers.DeploymentStacksError,\n },\n },\n queryParameters: [\n Parameters.apiVersion,\n Parameters.unmanageActionResources,\n Parameters.unmanageActionResourceGroups,\n Parameters.unmanageActionManagementGroups,\n Parameters.bypassStackOutOfSyncError,\n ],\n urlParameters: [\n Parameters.$host,\n Parameters.subscriptionId,\n Parameters.deploymentStackName,\n ],\n headerParameters: [Parameters.accept],\n serializer,\n};\nconst createOrUpdateAtManagementGroupOperationSpec: coreClient.OperationSpec = {\n path: \"/providers/Microsoft.Management/managementGroups/{managementGroupId}/providers/Microsoft.Resources/deploymentStacks/{deploymentStackName}\",\n httpMethod: \"PUT\",\n responses: {\n 200: {\n bodyMapper: Mappers.DeploymentStack,\n },\n 201: {\n bodyMapper: Mappers.DeploymentStack,\n },\n 202: {\n bodyMapper: Mappers.DeploymentStack,\n },\n 204: {\n bodyMapper: Mappers.DeploymentStack,\n },\n default: {\n bodyMapper: Mappers.DeploymentStacksError,\n },\n },\n requestBody: Parameters.deploymentStack,\n queryParameters: [Parameters.apiVersion],\n urlParameters: [\n Parameters.$host,\n Parameters.managementGroupId,\n Parameters.deploymentStackName,\n ],\n headerParameters: [Parameters.accept, Parameters.contentType],\n mediaType: \"json\",\n serializer,\n};\nconst getAtManagementGroupOperationSpec: coreClient.OperationSpec = {\n path: \"/providers/Microsoft.Management/managementGroups/{managementGroupId}/providers/Microsoft.Resources/deploymentStacks/{deploymentStackName}\",\n httpMethod: \"GET\",\n responses: {\n 200: {\n bodyMapper: Mappers.DeploymentStack,\n },\n default: {\n bodyMapper: Mappers.DeploymentStacksError,\n },\n },\n queryParameters: [Parameters.apiVersion],\n urlParameters: [\n Parameters.$host,\n Parameters.managementGroupId,\n Parameters.deploymentStackName,\n ],\n headerParameters: [Parameters.accept],\n serializer,\n};\nconst deleteAtManagementGroupOperationSpec: coreClient.OperationSpec = {\n path: \"/providers/Microsoft.Management/managementGroups/{managementGroupId}/providers/Microsoft.Resources/deploymentStacks/{deploymentStackName}\",\n httpMethod: \"DELETE\",\n responses: {\n 200: {},\n 201: {},\n 202: {},\n 204: {},\n default: {\n bodyMapper: Mappers.DeploymentStacksError,\n },\n },\n queryParameters: [\n Parameters.apiVersion,\n Parameters.unmanageActionResources,\n Parameters.unmanageActionResourceGroups,\n Parameters.unmanageActionManagementGroups,\n Parameters.bypassStackOutOfSyncError,\n ],\n urlParameters: [\n Parameters.$host,\n Parameters.managementGroupId,\n Parameters.deploymentStackName,\n ],\n headerParameters: [Parameters.accept],\n serializer,\n};\nconst exportTemplateAtResourceGroupOperationSpec: coreClient.OperationSpec = {\n path: \"/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Resources/deploymentStacks/{deploymentStackName}/exportTemplate\",\n httpMethod: \"POST\",\n responses: {\n 200: {\n bodyMapper: Mappers.DeploymentStackTemplateDefinition,\n },\n default: {\n bodyMapper: Mappers.DeploymentStacksError,\n },\n },\n queryParameters: [Parameters.apiVersion],\n urlParameters: [\n Parameters.$host,\n Parameters.subscriptionId,\n Parameters.resourceGroupName,\n Parameters.deploymentStackName,\n ],\n headerParameters: [Parameters.accept],\n serializer,\n};\nconst exportTemplateAtSubscriptionOperationSpec: coreClient.OperationSpec = {\n path: \"/subscriptions/{subscriptionId}/providers/Microsoft.Resources/deploymentStacks/{deploymentStackName}/exportTemplate\",\n httpMethod: \"POST\",\n responses: {\n 200: {\n bodyMapper: Mappers.DeploymentStackTemplateDefinition,\n },\n default: {\n bodyMapper: Mappers.DeploymentStacksError,\n },\n },\n queryParameters: [Parameters.apiVersion],\n urlParameters: [\n Parameters.$host,\n Parameters.subscriptionId,\n Parameters.deploymentStackName,\n ],\n headerParameters: [Parameters.accept],\n serializer,\n};\nconst exportTemplateAtManagementGroupOperationSpec: coreClient.OperationSpec = {\n path: \"/providers/Microsoft.Management/managementGroups/{managementGroupId}/providers/Microsoft.Resources/deploymentStacks/{deploymentStackName}/exportTemplate\",\n httpMethod: \"POST\",\n responses: {\n 200: {\n bodyMapper: Mappers.DeploymentStackTemplateDefinition,\n },\n default: {\n bodyMapper: Mappers.DeploymentStacksError,\n },\n },\n queryParameters: [Parameters.apiVersion],\n urlParameters: [\n Parameters.$host,\n Parameters.managementGroupId,\n Parameters.deploymentStackName,\n ],\n headerParameters: [Parameters.accept],\n serializer,\n};\nconst validateStackAtResourceGroupOperationSpec: coreClient.OperationSpec = {\n path: \"/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Resources/deploymentStacks/{deploymentStackName}/validate\",\n httpMethod: \"POST\",\n responses: {\n 200: {\n bodyMapper: Mappers.DeploymentStackValidateResult,\n },\n 201: {\n bodyMapper: Mappers.DeploymentStackValidateResult,\n },\n 202: {\n bodyMapper: Mappers.DeploymentStackValidateResult,\n },\n 204: {\n bodyMapper: Mappers.DeploymentStackValidateResult,\n },\n default: {\n bodyMapper: Mappers.DeploymentStacksError,\n },\n },\n requestBody: Parameters.deploymentStack,\n queryParameters: [Parameters.apiVersion],\n urlParameters: [\n Parameters.$host,\n Parameters.subscriptionId,\n Parameters.resourceGroupName,\n Parameters.deploymentStackName,\n ],\n headerParameters: [Parameters.accept, Parameters.contentType],\n mediaType: \"json\",\n serializer,\n};\nconst validateStackAtSubscriptionOperationSpec: coreClient.OperationSpec = {\n path: \"/subscriptions/{subscriptionId}/providers/Microsoft.Resources/deploymentStacks/{deploymentStackName}/validate\",\n httpMethod: \"POST\",\n responses: {\n 200: {\n bodyMapper: Mappers.DeploymentStackValidateResult,\n },\n 201: {\n bodyMapper: Mappers.DeploymentStackValidateResult,\n },\n 202: {\n bodyMapper: Mappers.DeploymentStackValidateResult,\n },\n 204: {\n bodyMapper: Mappers.DeploymentStackValidateResult,\n },\n default: {\n bodyMapper: Mappers.DeploymentStacksError,\n },\n },\n requestBody: Parameters.deploymentStack,\n queryParameters: [Parameters.apiVersion],\n urlParameters: [\n Parameters.$host,\n Parameters.subscriptionId,\n Parameters.deploymentStackName,\n ],\n headerParameters: [Parameters.accept, Parameters.contentType],\n mediaType: \"json\",\n serializer,\n};\nconst validateStackAtManagementGroupOperationSpec: coreClient.OperationSpec = {\n path: \"/providers/Microsoft.Management/managementGroups/{managementGroupId}/providers/Microsoft.Resources/deploymentStacks/{deploymentStackName}/validate\",\n httpMethod: \"POST\",\n responses: {\n 200: {\n bodyMapper: Mappers.DeploymentStackValidateResult,\n },\n 201: {\n bodyMapper: Mappers.DeploymentStackValidateResult,\n },\n 202: {\n bodyMapper: Mappers.DeploymentStackValidateResult,\n },\n 204: {\n bodyMapper: Mappers.DeploymentStackValidateResult,\n },\n default: {\n bodyMapper: Mappers.DeploymentStacksError,\n },\n },\n requestBody: Parameters.deploymentStack,\n queryParameters: [Parameters.apiVersion],\n urlParameters: [\n Parameters.$host,\n Parameters.managementGroupId,\n Parameters.deploymentStackName,\n ],\n headerParameters: [Parameters.accept, Parameters.contentType],\n mediaType: \"json\",\n serializer,\n};\nconst listAtResourceGroupNextOperationSpec: coreClient.OperationSpec = {\n path: \"{nextLink}\",\n httpMethod: \"GET\",\n responses: {\n 200: {\n bodyMapper: Mappers.DeploymentStackListResult,\n },\n default: {\n bodyMapper: Mappers.DeploymentStacksError,\n },\n },\n urlParameters: [\n Parameters.$host,\n Parameters.subscriptionId,\n Parameters.resourceGroupName,\n Parameters.nextLink,\n ],\n headerParameters: [Parameters.accept],\n serializer,\n};\nconst listAtSubscriptionNextOperationSpec: coreClient.OperationSpec = {\n path: \"{nextLink}\",\n httpMethod: \"GET\",\n responses: {\n 200: {\n bodyMapper: Mappers.DeploymentStackListResult,\n },\n default: {\n bodyMapper: Mappers.DeploymentStacksError,\n },\n },\n urlParameters: [\n Parameters.$host,\n Parameters.subscriptionId,\n Parameters.nextLink,\n ],\n headerParameters: [Parameters.accept],\n serializer,\n};\nconst listAtManagementGroupNextOperationSpec: coreClient.OperationSpec = {\n path: \"{nextLink}\",\n httpMethod: \"GET\",\n responses: {\n 200: {\n bodyMapper: Mappers.DeploymentStackListResult,\n },\n default: {\n bodyMapper: Mappers.DeploymentStacksError,\n },\n },\n urlParameters: [\n Parameters.$host,\n Parameters.managementGroupId,\n Parameters.nextLink,\n ],\n headerParameters: [Parameters.accept],\n serializer,\n};\n", "/*\n * Copyright (c) Microsoft Corporation.\n * Licensed under the MIT License.\n *\n * Code generated by Microsoft (R) AutoRest Code Generator.\n * Changes may cause incorrect behavior and will be lost if the code is regenerated.\n */\n\nimport * as coreClient from \"@azure/core-client\";\nimport * as coreRestPipeline from \"@azure/core-rest-pipeline\";\nimport {\n PipelineRequest,\n PipelineResponse,\n SendRequest,\n} from \"@azure/core-rest-pipeline\";\nimport * as coreAuth from \"@azure/core-auth\";\nimport { DeploymentStacksImpl } from \"./operations\";\nimport { DeploymentStacks } from \"./operationsInterfaces\";\nimport { DeploymentStacksClientOptionalParams } from \"./models\";\n\nexport class DeploymentStacksClient extends coreClient.ServiceClient {\n $host: string;\n subscriptionId?: string;\n apiVersion: string;\n\n /**\n * Initializes a new instance of the DeploymentStacksClient class.\n * @param credentials Subscription credentials which uniquely identify client subscription.\n * @param subscriptionId The ID of the target subscription. The value must be an UUID.\n * @param options The parameter options\n */\n constructor(\n credentials: coreAuth.TokenCredential,\n subscriptionId: string,\n options?: DeploymentStacksClientOptionalParams,\n );\n constructor(\n credentials: coreAuth.TokenCredential,\n options?: DeploymentStacksClientOptionalParams,\n );\n constructor(\n credentials: coreAuth.TokenCredential,\n subscriptionIdOrOptions?: DeploymentStacksClientOptionalParams | string,\n options?: DeploymentStacksClientOptionalParams,\n ) {\n if (credentials === undefined) {\n throw new Error(\"'credentials' cannot be null\");\n }\n\n let subscriptionId: string | undefined;\n\n if (typeof subscriptionIdOrOptions === \"string\") {\n subscriptionId = subscriptionIdOrOptions;\n } else if (typeof subscriptionIdOrOptions === \"object\") {\n options = subscriptionIdOrOptions;\n }\n\n // Initializing default values for options\n if (!options) {\n options = {};\n }\n const defaults: DeploymentStacksClientOptionalParams = {\n requestContentType: \"application/json; charset=utf-8\",\n credential: credentials,\n };\n\n const packageDetails = `azsdk-js-arm-resourcesdeploymentstacks/1.0.0`;\n const userAgentPrefix =\n options.userAgentOptions && options.userAgentOptions.userAgentPrefix\n ? `${options.userAgentOptions.userAgentPrefix} ${packageDetails}`\n : `${packageDetails}`;\n\n const optionsWithDefaults = {\n ...defaults,\n ...options,\n userAgentOptions: {\n userAgentPrefix,\n },\n endpoint:\n options.endpoint ?? options.baseUri ?? \"https://management.azure.com\",\n };\n super(optionsWithDefaults);\n\n let bearerTokenAuthenticationPolicyFound: boolean = false;\n if (options?.pipeline && options.pipeline.getOrderedPolicies().length > 0) {\n const pipelinePolicies: coreRestPipeline.PipelinePolicy[] =\n options.pipeline.getOrderedPolicies();\n bearerTokenAuthenticationPolicyFound = pipelinePolicies.some(\n (pipelinePolicy) =>\n pipelinePolicy.name ===\n coreRestPipeline.bearerTokenAuthenticationPolicyName,\n );\n }\n if (\n !options ||\n !options.pipeline ||\n options.pipeline.getOrderedPolicies().length == 0 ||\n !bearerTokenAuthenticationPolicyFound\n ) {\n this.pipeline.removePolicy({\n name: coreRestPipeline.bearerTokenAuthenticationPolicyName,\n });\n this.pipeline.addPolicy(\n coreRestPipeline.bearerTokenAuthenticationPolicy({\n credential: credentials,\n scopes:\n optionsWithDefaults.credentialScopes ??\n `${optionsWithDefaults.endpoint}/.default`,\n challengeCallbacks: {\n authorizeRequestOnChallenge:\n coreClient.authorizeRequestOnClaimChallenge,\n },\n }),\n );\n }\n // Parameter assignments\n this.subscriptionId = subscriptionId;\n\n // Assigning values to Constant parameters\n this.$host = options.$host || \"https://management.azure.com\";\n this.apiVersion = options.apiVersion || \"2024-03-01\";\n this.deploymentStacks = new DeploymentStacksImpl(this);\n this.addCustomApiVersionPolicy(options.apiVersion);\n }\n\n /** A function that adds a policy that sets the api-version (or equivalent) to reflect the library version. */\n private addCustomApiVersionPolicy(apiVersion?: string) {\n if (!apiVersion) {\n return;\n }\n const apiVersionPolicy = {\n name: \"CustomApiVersionPolicy\",\n async sendRequest(\n request: PipelineRequest,\n next: SendRequest,\n ): Promise {\n const param = request.url.split(\"?\");\n if (param.length > 1) {\n const newParams = param[1].split(\"&\").map((item) => {\n if (item.indexOf(\"api-version\") > -1) {\n return \"api-version=\" + apiVersion;\n } else {\n return item;\n }\n });\n request.url = param[0] + \"?\" + newParams.join(\"&\");\n }\n return next(request);\n },\n };\n this.pipeline.addPolicy(apiVersionPolicy);\n }\n\n deploymentStacks: DeploymentStacks;\n}\n", "/*! safe-buffer. MIT License. Feross Aboukhadijeh */\n/* eslint-disable node/no-deprecated-api */\nvar buffer = require('buffer')\nvar Buffer = buffer.Buffer\n\n// alternative to using Object.keys for old browsers\nfunction copyProps (src, dst) {\n for (var key in src) {\n dst[key] = src[key]\n }\n}\nif (Buffer.from && Buffer.alloc && Buffer.allocUnsafe && Buffer.allocUnsafeSlow) {\n module.exports = buffer\n} else {\n // Copy properties from require('buffer')\n copyProps(buffer, exports)\n exports.Buffer = SafeBuffer\n}\n\nfunction SafeBuffer (arg, encodingOrOffset, length) {\n return Buffer(arg, encodingOrOffset, length)\n}\n\nSafeBuffer.prototype = Object.create(Buffer.prototype)\n\n// Copy static methods from Buffer\ncopyProps(Buffer, SafeBuffer)\n\nSafeBuffer.from = function (arg, encodingOrOffset, length) {\n if (typeof arg === 'number') {\n throw new TypeError('Argument must not be a number')\n }\n return Buffer(arg, encodingOrOffset, length)\n}\n\nSafeBuffer.alloc = function (size, fill, encoding) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n var buf = Buffer(size)\n if (fill !== undefined) {\n if (typeof encoding === 'string') {\n buf.fill(fill, encoding)\n } else {\n buf.fill(fill)\n }\n } else {\n buf.fill(0)\n }\n return buf\n}\n\nSafeBuffer.allocUnsafe = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n return Buffer(size)\n}\n\nSafeBuffer.allocUnsafeSlow = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n return buffer.SlowBuffer(size)\n}\n", "/*global module, process*/\nvar Buffer = require('safe-buffer').Buffer;\nvar Stream = require('stream');\nvar util = require('util');\n\nfunction DataStream(data) {\n this.buffer = null;\n this.writable = true;\n this.readable = true;\n\n // No input\n if (!data) {\n this.buffer = Buffer.alloc(0);\n return this;\n }\n\n // Stream\n if (typeof data.pipe === 'function') {\n this.buffer = Buffer.alloc(0);\n data.pipe(this);\n return this;\n }\n\n // Buffer or String\n // or Object (assumedly a passworded key)\n if (data.length || typeof data === 'object') {\n this.buffer = data;\n this.writable = false;\n process.nextTick(function () {\n this.emit('end', data);\n this.readable = false;\n this.emit('close');\n }.bind(this));\n return this;\n }\n\n throw new TypeError('Unexpected data type ('+ typeof data + ')');\n}\nutil.inherits(DataStream, Stream);\n\nDataStream.prototype.write = function write(data) {\n this.buffer = Buffer.concat([this.buffer, Buffer.from(data)]);\n this.emit('data', data);\n};\n\nDataStream.prototype.end = function end(data) {\n if (data)\n this.write(data);\n this.emit('end', data);\n this.emit('close');\n this.writable = false;\n this.readable = false;\n};\n\nmodule.exports = DataStream;\n", "'use strict';\n\nfunction getParamSize(keySize) {\n\tvar result = ((keySize / 8) | 0) + (keySize % 8 === 0 ? 0 : 1);\n\treturn result;\n}\n\nvar paramBytesForAlg = {\n\tES256: getParamSize(256),\n\tES384: getParamSize(384),\n\tES512: getParamSize(521)\n};\n\nfunction getParamBytesForAlg(alg) {\n\tvar paramBytes = paramBytesForAlg[alg];\n\tif (paramBytes) {\n\t\treturn paramBytes;\n\t}\n\n\tthrow new Error('Unknown algorithm \"' + alg + '\"');\n}\n\nmodule.exports = getParamBytesForAlg;\n", "'use strict';\n\nvar Buffer = require('safe-buffer').Buffer;\n\nvar getParamBytesForAlg = require('./param-bytes-for-alg');\n\nvar MAX_OCTET = 0x80,\n\tCLASS_UNIVERSAL = 0,\n\tPRIMITIVE_BIT = 0x20,\n\tTAG_SEQ = 0x10,\n\tTAG_INT = 0x02,\n\tENCODED_TAG_SEQ = (TAG_SEQ | PRIMITIVE_BIT) | (CLASS_UNIVERSAL << 6),\n\tENCODED_TAG_INT = TAG_INT | (CLASS_UNIVERSAL << 6);\n\nfunction base64Url(base64) {\n\treturn base64\n\t\t.replace(/=/g, '')\n\t\t.replace(/\\+/g, '-')\n\t\t.replace(/\\//g, '_');\n}\n\nfunction signatureAsBuffer(signature) {\n\tif (Buffer.isBuffer(signature)) {\n\t\treturn signature;\n\t} else if ('string' === typeof signature) {\n\t\treturn Buffer.from(signature, 'base64');\n\t}\n\n\tthrow new TypeError('ECDSA signature must be a Base64 string or a Buffer');\n}\n\nfunction derToJose(signature, alg) {\n\tsignature = signatureAsBuffer(signature);\n\tvar paramBytes = getParamBytesForAlg(alg);\n\n\t// the DER encoded param should at most be the param size, plus a padding\n\t// zero, since due to being a signed integer\n\tvar maxEncodedParamLength = paramBytes + 1;\n\n\tvar inputLength = signature.length;\n\n\tvar offset = 0;\n\tif (signature[offset++] !== ENCODED_TAG_SEQ) {\n\t\tthrow new Error('Could not find expected \"seq\"');\n\t}\n\n\tvar seqLength = signature[offset++];\n\tif (seqLength === (MAX_OCTET | 1)) {\n\t\tseqLength = signature[offset++];\n\t}\n\n\tif (inputLength - offset < seqLength) {\n\t\tthrow new Error('\"seq\" specified length of \"' + seqLength + '\", only \"' + (inputLength - offset) + '\" remaining');\n\t}\n\n\tif (signature[offset++] !== ENCODED_TAG_INT) {\n\t\tthrow new Error('Could not find expected \"int\" for \"r\"');\n\t}\n\n\tvar rLength = signature[offset++];\n\n\tif (inputLength - offset - 2 < rLength) {\n\t\tthrow new Error('\"r\" specified length of \"' + rLength + '\", only \"' + (inputLength - offset - 2) + '\" available');\n\t}\n\n\tif (maxEncodedParamLength < rLength) {\n\t\tthrow new Error('\"r\" specified length of \"' + rLength + '\", max of \"' + maxEncodedParamLength + '\" is acceptable');\n\t}\n\n\tvar rOffset = offset;\n\toffset += rLength;\n\n\tif (signature[offset++] !== ENCODED_TAG_INT) {\n\t\tthrow new Error('Could not find expected \"int\" for \"s\"');\n\t}\n\n\tvar sLength = signature[offset++];\n\n\tif (inputLength - offset !== sLength) {\n\t\tthrow new Error('\"s\" specified length of \"' + sLength + '\", expected \"' + (inputLength - offset) + '\"');\n\t}\n\n\tif (maxEncodedParamLength < sLength) {\n\t\tthrow new Error('\"s\" specified length of \"' + sLength + '\", max of \"' + maxEncodedParamLength + '\" is acceptable');\n\t}\n\n\tvar sOffset = offset;\n\toffset += sLength;\n\n\tif (offset !== inputLength) {\n\t\tthrow new Error('Expected to consume entire buffer, but \"' + (inputLength - offset) + '\" bytes remain');\n\t}\n\n\tvar rPadding = paramBytes - rLength,\n\t\tsPadding = paramBytes - sLength;\n\n\tvar dst = Buffer.allocUnsafe(rPadding + rLength + sPadding + sLength);\n\n\tfor (offset = 0; offset < rPadding; ++offset) {\n\t\tdst[offset] = 0;\n\t}\n\tsignature.copy(dst, offset, rOffset + Math.max(-rPadding, 0), rOffset + rLength);\n\n\toffset = paramBytes;\n\n\tfor (var o = offset; offset < o + sPadding; ++offset) {\n\t\tdst[offset] = 0;\n\t}\n\tsignature.copy(dst, offset, sOffset + Math.max(-sPadding, 0), sOffset + sLength);\n\n\tdst = dst.toString('base64');\n\tdst = base64Url(dst);\n\n\treturn dst;\n}\n\nfunction countPadding(buf, start, stop) {\n\tvar padding = 0;\n\twhile (start + padding < stop && buf[start + padding] === 0) {\n\t\t++padding;\n\t}\n\n\tvar needsSign = buf[start + padding] >= MAX_OCTET;\n\tif (needsSign) {\n\t\t--padding;\n\t}\n\n\treturn padding;\n}\n\nfunction joseToDer(signature, alg) {\n\tsignature = signatureAsBuffer(signature);\n\tvar paramBytes = getParamBytesForAlg(alg);\n\n\tvar signatureBytes = signature.length;\n\tif (signatureBytes !== paramBytes * 2) {\n\t\tthrow new TypeError('\"' + alg + '\" signatures must be \"' + paramBytes * 2 + '\" bytes, saw \"' + signatureBytes + '\"');\n\t}\n\n\tvar rPadding = countPadding(signature, 0, paramBytes);\n\tvar sPadding = countPadding(signature, paramBytes, signature.length);\n\tvar rLength = paramBytes - rPadding;\n\tvar sLength = paramBytes - sPadding;\n\n\tvar rsBytes = 1 + 1 + rLength + 1 + 1 + sLength;\n\n\tvar shortLength = rsBytes < MAX_OCTET;\n\n\tvar dst = Buffer.allocUnsafe((shortLength ? 2 : 3) + rsBytes);\n\n\tvar offset = 0;\n\tdst[offset++] = ENCODED_TAG_SEQ;\n\tif (shortLength) {\n\t\t// Bit 8 has value \"0\"\n\t\t// bits 7-1 give the length.\n\t\tdst[offset++] = rsBytes;\n\t} else {\n\t\t// Bit 8 of first octet has value \"1\"\n\t\t// bits 7-1 give the number of additional length octets.\n\t\tdst[offset++] = MAX_OCTET\t| 1;\n\t\t// length, base 256\n\t\tdst[offset++] = rsBytes & 0xff;\n\t}\n\tdst[offset++] = ENCODED_TAG_INT;\n\tdst[offset++] = rLength;\n\tif (rPadding < 0) {\n\t\tdst[offset++] = 0;\n\t\toffset += signature.copy(dst, offset, 0, paramBytes);\n\t} else {\n\t\toffset += signature.copy(dst, offset, rPadding, paramBytes);\n\t}\n\tdst[offset++] = ENCODED_TAG_INT;\n\tdst[offset++] = sLength;\n\tif (sPadding < 0) {\n\t\tdst[offset++] = 0;\n\t\tsignature.copy(dst, offset, paramBytes);\n\t} else {\n\t\tsignature.copy(dst, offset, paramBytes + sPadding);\n\t}\n\n\treturn dst;\n}\n\nmodule.exports = {\n\tderToJose: derToJose,\n\tjoseToDer: joseToDer\n};\n", "/*jshint node:true */\n'use strict';\nvar Buffer = require('buffer').Buffer; // browserify\nvar SlowBuffer = require('buffer').SlowBuffer;\n\nmodule.exports = bufferEq;\n\nfunction bufferEq(a, b) {\n\n // shortcutting on type is necessary for correctness\n if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {\n return false;\n }\n\n // buffer sizes should be well-known information, so despite this\n // shortcutting, it doesn't leak any information about the *contents* of the\n // buffers.\n if (a.length !== b.length) {\n return false;\n }\n\n var c = 0;\n for (var i = 0; i < a.length; i++) {\n /*jshint bitwise:false */\n c |= a[i] ^ b[i]; // XOR\n }\n return c === 0;\n}\n\nbufferEq.install = function() {\n Buffer.prototype.equal = SlowBuffer.prototype.equal = function equal(that) {\n return bufferEq(this, that);\n };\n};\n\nvar origBufEqual = Buffer.prototype.equal;\nvar origSlowBufEqual = SlowBuffer.prototype.equal;\nbufferEq.restore = function() {\n Buffer.prototype.equal = origBufEqual;\n SlowBuffer.prototype.equal = origSlowBufEqual;\n};\n", "var Buffer = require('safe-buffer').Buffer;\nvar crypto = require('crypto');\nvar formatEcdsa = require('ecdsa-sig-formatter');\nvar util = require('util');\n\nvar MSG_INVALID_ALGORITHM = '\"%s\" is not a valid algorithm.\\n Supported algorithms are:\\n \"HS256\", \"HS384\", \"HS512\", \"RS256\", \"RS384\", \"RS512\", \"PS256\", \"PS384\", \"PS512\", \"ES256\", \"ES384\", \"ES512\" and \"none\".'\nvar MSG_INVALID_SECRET = 'secret must be a string or buffer';\nvar MSG_INVALID_VERIFIER_KEY = 'key must be a string or a buffer';\nvar MSG_INVALID_SIGNER_KEY = 'key must be a string, a buffer or an object';\n\nvar supportsKeyObjects = typeof crypto.createPublicKey === 'function';\nif (supportsKeyObjects) {\n MSG_INVALID_VERIFIER_KEY += ' or a KeyObject';\n MSG_INVALID_SECRET += 'or a KeyObject';\n}\n\nfunction checkIsPublicKey(key) {\n if (Buffer.isBuffer(key)) {\n return;\n }\n\n if (typeof key === 'string') {\n return;\n }\n\n if (!supportsKeyObjects) {\n throw typeError(MSG_INVALID_VERIFIER_KEY);\n }\n\n if (typeof key !== 'object') {\n throw typeError(MSG_INVALID_VERIFIER_KEY);\n }\n\n if (typeof key.type !== 'string') {\n throw typeError(MSG_INVALID_VERIFIER_KEY);\n }\n\n if (typeof key.asymmetricKeyType !== 'string') {\n throw typeError(MSG_INVALID_VERIFIER_KEY);\n }\n\n if (typeof key.export !== 'function') {\n throw typeError(MSG_INVALID_VERIFIER_KEY);\n }\n};\n\nfunction checkIsPrivateKey(key) {\n if (Buffer.isBuffer(key)) {\n return;\n }\n\n if (typeof key === 'string') {\n return;\n }\n\n if (typeof key === 'object') {\n return;\n }\n\n throw typeError(MSG_INVALID_SIGNER_KEY);\n};\n\nfunction checkIsSecretKey(key) {\n if (Buffer.isBuffer(key)) {\n return;\n }\n\n if (typeof key === 'string') {\n return key;\n }\n\n if (!supportsKeyObjects) {\n throw typeError(MSG_INVALID_SECRET);\n }\n\n if (typeof key !== 'object') {\n throw typeError(MSG_INVALID_SECRET);\n }\n\n if (key.type !== 'secret') {\n throw typeError(MSG_INVALID_SECRET);\n }\n\n if (typeof key.export !== 'function') {\n throw typeError(MSG_INVALID_SECRET);\n }\n}\n\nfunction fromBase64(base64) {\n return base64\n .replace(/=/g, '')\n .replace(/\\+/g, '-')\n .replace(/\\//g, '_');\n}\n\nfunction toBase64(base64url) {\n base64url = base64url.toString();\n\n var padding = 4 - base64url.length % 4;\n if (padding !== 4) {\n for (var i = 0; i < padding; ++i) {\n base64url += '=';\n }\n }\n\n return base64url\n .replace(/\\-/g, '+')\n .replace(/_/g, '/');\n}\n\nfunction typeError(template) {\n var args = [].slice.call(arguments, 1);\n var errMsg = util.format.bind(util, template).apply(null, args);\n return new TypeError(errMsg);\n}\n\nfunction bufferOrString(obj) {\n return Buffer.isBuffer(obj) || typeof obj === 'string';\n}\n\nfunction normalizeInput(thing) {\n if (!bufferOrString(thing))\n thing = JSON.stringify(thing);\n return thing;\n}\n\nfunction createHmacSigner(bits) {\n return function sign(thing, secret) {\n checkIsSecretKey(secret);\n thing = normalizeInput(thing);\n var hmac = crypto.createHmac('sha' + bits, secret);\n var sig = (hmac.update(thing), hmac.digest('base64'))\n return fromBase64(sig);\n }\n}\n\nvar bufferEqual;\nvar timingSafeEqual = 'timingSafeEqual' in crypto ? function timingSafeEqual(a, b) {\n if (a.byteLength !== b.byteLength) {\n return false;\n }\n\n return crypto.timingSafeEqual(a, b)\n} : function timingSafeEqual(a, b) {\n if (!bufferEqual) {\n bufferEqual = require('buffer-equal-constant-time');\n }\n\n return bufferEqual(a, b)\n}\n\nfunction createHmacVerifier(bits) {\n return function verify(thing, signature, secret) {\n var computedSig = createHmacSigner(bits)(thing, secret);\n return timingSafeEqual(Buffer.from(signature), Buffer.from(computedSig));\n }\n}\n\nfunction createKeySigner(bits) {\n return function sign(thing, privateKey) {\n checkIsPrivateKey(privateKey);\n thing = normalizeInput(thing);\n // Even though we are specifying \"RSA\" here, this works with ECDSA\n // keys as well.\n var signer = crypto.createSign('RSA-SHA' + bits);\n var sig = (signer.update(thing), signer.sign(privateKey, 'base64'));\n return fromBase64(sig);\n }\n}\n\nfunction createKeyVerifier(bits) {\n return function verify(thing, signature, publicKey) {\n checkIsPublicKey(publicKey);\n thing = normalizeInput(thing);\n signature = toBase64(signature);\n var verifier = crypto.createVerify('RSA-SHA' + bits);\n verifier.update(thing);\n return verifier.verify(publicKey, signature, 'base64');\n }\n}\n\nfunction createPSSKeySigner(bits) {\n return function sign(thing, privateKey) {\n checkIsPrivateKey(privateKey);\n thing = normalizeInput(thing);\n var signer = crypto.createSign('RSA-SHA' + bits);\n var sig = (signer.update(thing), signer.sign({\n key: privateKey,\n padding: crypto.constants.RSA_PKCS1_PSS_PADDING,\n saltLength: crypto.constants.RSA_PSS_SALTLEN_DIGEST\n }, 'base64'));\n return fromBase64(sig);\n }\n}\n\nfunction createPSSKeyVerifier(bits) {\n return function verify(thing, signature, publicKey) {\n checkIsPublicKey(publicKey);\n thing = normalizeInput(thing);\n signature = toBase64(signature);\n var verifier = crypto.createVerify('RSA-SHA' + bits);\n verifier.update(thing);\n return verifier.verify({\n key: publicKey,\n padding: crypto.constants.RSA_PKCS1_PSS_PADDING,\n saltLength: crypto.constants.RSA_PSS_SALTLEN_DIGEST\n }, signature, 'base64');\n }\n}\n\nfunction createECDSASigner(bits) {\n var inner = createKeySigner(bits);\n return function sign() {\n var signature = inner.apply(null, arguments);\n signature = formatEcdsa.derToJose(signature, 'ES' + bits);\n return signature;\n };\n}\n\nfunction createECDSAVerifer(bits) {\n var inner = createKeyVerifier(bits);\n return function verify(thing, signature, publicKey) {\n signature = formatEcdsa.joseToDer(signature, 'ES' + bits).toString('base64');\n var result = inner(thing, signature, publicKey);\n return result;\n };\n}\n\nfunction createNoneSigner() {\n return function sign() {\n return '';\n }\n}\n\nfunction createNoneVerifier() {\n return function verify(thing, signature) {\n return signature === '';\n }\n}\n\nmodule.exports = function jwa(algorithm) {\n var signerFactories = {\n hs: createHmacSigner,\n rs: createKeySigner,\n ps: createPSSKeySigner,\n es: createECDSASigner,\n none: createNoneSigner,\n }\n var verifierFactories = {\n hs: createHmacVerifier,\n rs: createKeyVerifier,\n ps: createPSSKeyVerifier,\n es: createECDSAVerifer,\n none: createNoneVerifier,\n }\n var match = algorithm.match(/^(RS|PS|ES|HS)(256|384|512)$|^(none)$/i);\n if (!match)\n throw typeError(MSG_INVALID_ALGORITHM, algorithm);\n var algo = (match[1] || match[3]).toLowerCase();\n var bits = match[2];\n\n return {\n sign: signerFactories[algo](bits),\n verify: verifierFactories[algo](bits),\n }\n};\n", "/*global module*/\nvar Buffer = require('buffer').Buffer;\n\nmodule.exports = function toString(obj) {\n if (typeof obj === 'string')\n return obj;\n if (typeof obj === 'number' || Buffer.isBuffer(obj))\n return obj.toString();\n return JSON.stringify(obj);\n};\n", "/*global module*/\nvar Buffer = require('safe-buffer').Buffer;\nvar DataStream = require('./data-stream');\nvar jwa = require('jwa');\nvar Stream = require('stream');\nvar toString = require('./tostring');\nvar util = require('util');\n\nfunction base64url(string, encoding) {\n return Buffer\n .from(string, encoding)\n .toString('base64')\n .replace(/=/g, '')\n .replace(/\\+/g, '-')\n .replace(/\\//g, '_');\n}\n\nfunction jwsSecuredInput(header, payload, encoding) {\n encoding = encoding || 'utf8';\n var encodedHeader = base64url(toString(header), 'binary');\n var encodedPayload = base64url(toString(payload), encoding);\n return util.format('%s.%s', encodedHeader, encodedPayload);\n}\n\nfunction jwsSign(opts) {\n var header = opts.header;\n var payload = opts.payload;\n var secretOrKey = opts.secret || opts.privateKey;\n var encoding = opts.encoding;\n var algo = jwa(header.alg);\n var securedInput = jwsSecuredInput(header, payload, encoding);\n var signature = algo.sign(securedInput, secretOrKey);\n return util.format('%s.%s', securedInput, signature);\n}\n\nfunction SignStream(opts) {\n var secret = opts.secret||opts.privateKey||opts.key;\n var secretStream = new DataStream(secret);\n this.readable = true;\n this.header = opts.header;\n this.encoding = opts.encoding;\n this.secret = this.privateKey = this.key = secretStream;\n this.payload = new DataStream(opts.payload);\n this.secret.once('close', function () {\n if (!this.payload.writable && this.readable)\n this.sign();\n }.bind(this));\n\n this.payload.once('close', function () {\n if (!this.secret.writable && this.readable)\n this.sign();\n }.bind(this));\n}\nutil.inherits(SignStream, Stream);\n\nSignStream.prototype.sign = function sign() {\n try {\n var signature = jwsSign({\n header: this.header,\n payload: this.payload.buffer,\n secret: this.secret.buffer,\n encoding: this.encoding\n });\n this.emit('done', signature);\n this.emit('data', signature);\n this.emit('end');\n this.readable = false;\n return signature;\n } catch (e) {\n this.readable = false;\n this.emit('error', e);\n this.emit('close');\n }\n};\n\nSignStream.sign = jwsSign;\n\nmodule.exports = SignStream;\n", "/*global module*/\nvar Buffer = require('safe-buffer').Buffer;\nvar DataStream = require('./data-stream');\nvar jwa = require('jwa');\nvar Stream = require('stream');\nvar toString = require('./tostring');\nvar util = require('util');\nvar JWS_REGEX = /^[a-zA-Z0-9\\-_]+?\\.[a-zA-Z0-9\\-_]+?\\.([a-zA-Z0-9\\-_]+)?$/;\n\nfunction isObject(thing) {\n return Object.prototype.toString.call(thing) === '[object Object]';\n}\n\nfunction safeJsonParse(thing) {\n if (isObject(thing))\n return thing;\n try { return JSON.parse(thing); }\n catch (e) { return undefined; }\n}\n\nfunction headerFromJWS(jwsSig) {\n var encodedHeader = jwsSig.split('.', 1)[0];\n return safeJsonParse(Buffer.from(encodedHeader, 'base64').toString('binary'));\n}\n\nfunction securedInputFromJWS(jwsSig) {\n return jwsSig.split('.', 2).join('.');\n}\n\nfunction signatureFromJWS(jwsSig) {\n return jwsSig.split('.')[2];\n}\n\nfunction payloadFromJWS(jwsSig, encoding) {\n encoding = encoding || 'utf8';\n var payload = jwsSig.split('.')[1];\n return Buffer.from(payload, 'base64').toString(encoding);\n}\n\nfunction isValidJws(string) {\n return JWS_REGEX.test(string) && !!headerFromJWS(string);\n}\n\nfunction jwsVerify(jwsSig, algorithm, secretOrKey) {\n if (!algorithm) {\n var err = new Error(\"Missing algorithm parameter for jws.verify\");\n err.code = \"MISSING_ALGORITHM\";\n throw err;\n }\n jwsSig = toString(jwsSig);\n var signature = signatureFromJWS(jwsSig);\n var securedInput = securedInputFromJWS(jwsSig);\n var algo = jwa(algorithm);\n return algo.verify(securedInput, signature, secretOrKey);\n}\n\nfunction jwsDecode(jwsSig, opts) {\n opts = opts || {};\n jwsSig = toString(jwsSig);\n\n if (!isValidJws(jwsSig))\n return null;\n\n var header = headerFromJWS(jwsSig);\n\n if (!header)\n return null;\n\n var payload = payloadFromJWS(jwsSig);\n if (header.typ === 'JWT' || opts.json)\n payload = JSON.parse(payload, opts.encoding);\n\n return {\n header: header,\n payload: payload,\n signature: signatureFromJWS(jwsSig)\n };\n}\n\nfunction VerifyStream(opts) {\n opts = opts || {};\n var secretOrKey = opts.secret||opts.publicKey||opts.key;\n var secretStream = new DataStream(secretOrKey);\n this.readable = true;\n this.algorithm = opts.algorithm;\n this.encoding = opts.encoding;\n this.secret = this.publicKey = this.key = secretStream;\n this.signature = new DataStream(opts.signature);\n this.secret.once('close', function () {\n if (!this.signature.writable && this.readable)\n this.verify();\n }.bind(this));\n\n this.signature.once('close', function () {\n if (!this.secret.writable && this.readable)\n this.verify();\n }.bind(this));\n}\nutil.inherits(VerifyStream, Stream);\nVerifyStream.prototype.verify = function verify() {\n try {\n var valid = jwsVerify(this.signature.buffer, this.algorithm, this.key.buffer);\n var obj = jwsDecode(this.signature.buffer, this.encoding);\n this.emit('done', valid, obj);\n this.emit('data', valid);\n this.emit('end');\n this.readable = false;\n return valid;\n } catch (e) {\n this.readable = false;\n this.emit('error', e);\n this.emit('close');\n }\n};\n\nVerifyStream.decode = jwsDecode;\nVerifyStream.isValid = isValidJws;\nVerifyStream.verify = jwsVerify;\n\nmodule.exports = VerifyStream;\n", "/*global exports*/\nvar SignStream = require('./lib/sign-stream');\nvar VerifyStream = require('./lib/verify-stream');\n\nvar ALGORITHMS = [\n 'HS256', 'HS384', 'HS512',\n 'RS256', 'RS384', 'RS512',\n 'PS256', 'PS384', 'PS512',\n 'ES256', 'ES384', 'ES512'\n];\n\nexports.ALGORITHMS = ALGORITHMS;\nexports.sign = SignStream.sign;\nexports.verify = VerifyStream.verify;\nexports.decode = VerifyStream.decode;\nexports.isValid = VerifyStream.isValid;\nexports.createSign = function createSign(opts) {\n return new SignStream(opts);\n};\nexports.createVerify = function createVerify(opts) {\n return new VerifyStream(opts);\n};\n", "var jws = require('jws');\n\nmodule.exports = function (jwt, options) {\n options = options || {};\n var decoded = jws.decode(jwt, options);\n if (!decoded) { return null; }\n var payload = decoded.payload;\n\n //try parse the payload\n if(typeof payload === 'string') {\n try {\n var obj = JSON.parse(payload);\n if(obj !== null && typeof obj === 'object') {\n payload = obj;\n }\n } catch (e) { }\n }\n\n //return header if `complete` option is enabled. header includes claims\n //such as `kid` and `alg` used to select the key within a JWKS needed to\n //verify the signature\n if (options.complete === true) {\n return {\n header: decoded.header,\n payload: payload,\n signature: decoded.signature\n };\n }\n return payload;\n};\n", "var JsonWebTokenError = function (message, error) {\n Error.call(this, message);\n if(Error.captureStackTrace) {\n Error.captureStackTrace(this, this.constructor);\n }\n this.name = 'JsonWebTokenError';\n this.message = message;\n if (error) this.inner = error;\n};\n\nJsonWebTokenError.prototype = Object.create(Error.prototype);\nJsonWebTokenError.prototype.constructor = JsonWebTokenError;\n\nmodule.exports = JsonWebTokenError;\n", "var JsonWebTokenError = require('./JsonWebTokenError');\n\nvar NotBeforeError = function (message, date) {\n JsonWebTokenError.call(this, message);\n this.name = 'NotBeforeError';\n this.date = date;\n};\n\nNotBeforeError.prototype = Object.create(JsonWebTokenError.prototype);\n\nNotBeforeError.prototype.constructor = NotBeforeError;\n\nmodule.exports = NotBeforeError;", "var JsonWebTokenError = require('./JsonWebTokenError');\n\nvar TokenExpiredError = function (message, expiredAt) {\n JsonWebTokenError.call(this, message);\n this.name = 'TokenExpiredError';\n this.expiredAt = expiredAt;\n};\n\nTokenExpiredError.prototype = Object.create(JsonWebTokenError.prototype);\n\nTokenExpiredError.prototype.constructor = TokenExpiredError;\n\nmodule.exports = TokenExpiredError;", "var ms = require('ms');\n\nmodule.exports = function (time, iat) {\n var timestamp = iat || Math.floor(Date.now() / 1000);\n\n if (typeof time === 'string') {\n var milliseconds = ms(time);\n if (typeof milliseconds === 'undefined') {\n return;\n }\n return Math.floor(timestamp + milliseconds / 1000);\n } else if (typeof time === 'number') {\n return timestamp + time;\n } else {\n return;\n }\n\n};", "// Note: this is the semver.org version of the spec that it implements\n// Not necessarily the package version of this code.\nconst SEMVER_SPEC_VERSION = '2.0.0'\n\nconst MAX_LENGTH = 256\nconst MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER ||\n/* istanbul ignore next */ 9007199254740991\n\n// Max safe segment length for coercion.\nconst MAX_SAFE_COMPONENT_LENGTH = 16\n\n// Max safe length for a build identifier. The max length minus 6 characters for\n// the shortest version with a build 0.0.0+BUILD.\nconst MAX_SAFE_BUILD_LENGTH = MAX_LENGTH - 6\n\nconst RELEASE_TYPES = [\n 'major',\n 'premajor',\n 'minor',\n 'preminor',\n 'patch',\n 'prepatch',\n 'prerelease',\n]\n\nmodule.exports = {\n MAX_LENGTH,\n MAX_SAFE_COMPONENT_LENGTH,\n MAX_SAFE_BUILD_LENGTH,\n MAX_SAFE_INTEGER,\n RELEASE_TYPES,\n SEMVER_SPEC_VERSION,\n FLAG_INCLUDE_PRERELEASE: 0b001,\n FLAG_LOOSE: 0b010,\n}\n", "const debug = (\n typeof process === 'object' &&\n process.env &&\n process.env.NODE_DEBUG &&\n /\\bsemver\\b/i.test(process.env.NODE_DEBUG)\n) ? (...args) => console.error('SEMVER', ...args)\n : () => {}\n\nmodule.exports = debug\n", "const {\n MAX_SAFE_COMPONENT_LENGTH,\n MAX_SAFE_BUILD_LENGTH,\n MAX_LENGTH,\n} = require('./constants')\nconst debug = require('./debug')\nexports = module.exports = {}\n\n// The actual regexps go on exports.re\nconst re = exports.re = []\nconst safeRe = exports.safeRe = []\nconst src = exports.src = []\nconst t = exports.t = {}\nlet R = 0\n\nconst LETTERDASHNUMBER = '[a-zA-Z0-9-]'\n\n// Replace some greedy regex tokens to prevent regex dos issues. These regex are\n// used internally via the safeRe object since all inputs in this library get\n// normalized first to trim and collapse all extra whitespace. The original\n// regexes are exported for userland consumption and lower level usage. A\n// future breaking change could export the safer regex only with a note that\n// all input should have extra whitespace removed.\nconst safeRegexReplacements = [\n ['\\\\s', 1],\n ['\\\\d', MAX_LENGTH],\n [LETTERDASHNUMBER, MAX_SAFE_BUILD_LENGTH],\n]\n\nconst makeSafeRegex = (value) => {\n for (const [token, max] of safeRegexReplacements) {\n value = value\n .split(`${token}*`).join(`${token}{0,${max}}`)\n .split(`${token}+`).join(`${token}{1,${max}}`)\n }\n return value\n}\n\nconst createToken = (name, value, isGlobal) => {\n const safe = makeSafeRegex(value)\n const index = R++\n debug(name, index, value)\n t[name] = index\n src[index] = value\n re[index] = new RegExp(value, isGlobal ? 'g' : undefined)\n safeRe[index] = new RegExp(safe, isGlobal ? 'g' : undefined)\n}\n\n// The following Regular Expressions can be used for tokenizing,\n// validating, and parsing SemVer version strings.\n\n// ## Numeric Identifier\n// A single `0`, or a non-zero digit followed by zero or more digits.\n\ncreateToken('NUMERICIDENTIFIER', '0|[1-9]\\\\d*')\ncreateToken('NUMERICIDENTIFIERLOOSE', '\\\\d+')\n\n// ## Non-numeric Identifier\n// Zero or more digits, followed by a letter or hyphen, and then zero or\n// more letters, digits, or hyphens.\n\ncreateToken('NONNUMERICIDENTIFIER', `\\\\d*[a-zA-Z-]${LETTERDASHNUMBER}*`)\n\n// ## Main Version\n// Three dot-separated numeric identifiers.\n\ncreateToken('MAINVERSION', `(${src[t.NUMERICIDENTIFIER]})\\\\.` +\n `(${src[t.NUMERICIDENTIFIER]})\\\\.` +\n `(${src[t.NUMERICIDENTIFIER]})`)\n\ncreateToken('MAINVERSIONLOOSE', `(${src[t.NUMERICIDENTIFIERLOOSE]})\\\\.` +\n `(${src[t.NUMERICIDENTIFIERLOOSE]})\\\\.` +\n `(${src[t.NUMERICIDENTIFIERLOOSE]})`)\n\n// ## Pre-release Version Identifier\n// A numeric identifier, or a non-numeric identifier.\n\ncreateToken('PRERELEASEIDENTIFIER', `(?:${src[t.NUMERICIDENTIFIER]\n}|${src[t.NONNUMERICIDENTIFIER]})`)\n\ncreateToken('PRERELEASEIDENTIFIERLOOSE', `(?:${src[t.NUMERICIDENTIFIERLOOSE]\n}|${src[t.NONNUMERICIDENTIFIER]})`)\n\n// ## Pre-release Version\n// Hyphen, followed by one or more dot-separated pre-release version\n// identifiers.\n\ncreateToken('PRERELEASE', `(?:-(${src[t.PRERELEASEIDENTIFIER]\n}(?:\\\\.${src[t.PRERELEASEIDENTIFIER]})*))`)\n\ncreateToken('PRERELEASELOOSE', `(?:-?(${src[t.PRERELEASEIDENTIFIERLOOSE]\n}(?:\\\\.${src[t.PRERELEASEIDENTIFIERLOOSE]})*))`)\n\n// ## Build Metadata Identifier\n// Any combination of digits, letters, or hyphens.\n\ncreateToken('BUILDIDENTIFIER', `${LETTERDASHNUMBER}+`)\n\n// ## Build Metadata\n// Plus sign, followed by one or more period-separated build metadata\n// identifiers.\n\ncreateToken('BUILD', `(?:\\\\+(${src[t.BUILDIDENTIFIER]\n}(?:\\\\.${src[t.BUILDIDENTIFIER]})*))`)\n\n// ## Full Version String\n// A main version, followed optionally by a pre-release version and\n// build metadata.\n\n// Note that the only major, minor, patch, and pre-release sections of\n// the version string are capturing groups. The build metadata is not a\n// capturing group, because it should not ever be used in version\n// comparison.\n\ncreateToken('FULLPLAIN', `v?${src[t.MAINVERSION]\n}${src[t.PRERELEASE]}?${\n src[t.BUILD]}?`)\n\ncreateToken('FULL', `^${src[t.FULLPLAIN]}$`)\n\n// like full, but allows v1.2.3 and =1.2.3, which people do sometimes.\n// also, 1.0.0alpha1 (prerelease without the hyphen) which is pretty\n// common in the npm registry.\ncreateToken('LOOSEPLAIN', `[v=\\\\s]*${src[t.MAINVERSIONLOOSE]\n}${src[t.PRERELEASELOOSE]}?${\n src[t.BUILD]}?`)\n\ncreateToken('LOOSE', `^${src[t.LOOSEPLAIN]}$`)\n\ncreateToken('GTLT', '((?:<|>)?=?)')\n\n// Something like \"2.*\" or \"1.2.x\".\n// Note that \"x.x\" is a valid xRange identifer, meaning \"any version\"\n// Only the first item is strictly required.\ncreateToken('XRANGEIDENTIFIERLOOSE', `${src[t.NUMERICIDENTIFIERLOOSE]}|x|X|\\\\*`)\ncreateToken('XRANGEIDENTIFIER', `${src[t.NUMERICIDENTIFIER]}|x|X|\\\\*`)\n\ncreateToken('XRANGEPLAIN', `[v=\\\\s]*(${src[t.XRANGEIDENTIFIER]})` +\n `(?:\\\\.(${src[t.XRANGEIDENTIFIER]})` +\n `(?:\\\\.(${src[t.XRANGEIDENTIFIER]})` +\n `(?:${src[t.PRERELEASE]})?${\n src[t.BUILD]}?` +\n `)?)?`)\n\ncreateToken('XRANGEPLAINLOOSE', `[v=\\\\s]*(${src[t.XRANGEIDENTIFIERLOOSE]})` +\n `(?:\\\\.(${src[t.XRANGEIDENTIFIERLOOSE]})` +\n `(?:\\\\.(${src[t.XRANGEIDENTIFIERLOOSE]})` +\n `(?:${src[t.PRERELEASELOOSE]})?${\n src[t.BUILD]}?` +\n `)?)?`)\n\ncreateToken('XRANGE', `^${src[t.GTLT]}\\\\s*${src[t.XRANGEPLAIN]}$`)\ncreateToken('XRANGELOOSE', `^${src[t.GTLT]}\\\\s*${src[t.XRANGEPLAINLOOSE]}$`)\n\n// Coercion.\n// Extract anything that could conceivably be a part of a valid semver\ncreateToken('COERCEPLAIN', `${'(^|[^\\\\d])' +\n '(\\\\d{1,'}${MAX_SAFE_COMPONENT_LENGTH}})` +\n `(?:\\\\.(\\\\d{1,${MAX_SAFE_COMPONENT_LENGTH}}))?` +\n `(?:\\\\.(\\\\d{1,${MAX_SAFE_COMPONENT_LENGTH}}))?`)\ncreateToken('COERCE', `${src[t.COERCEPLAIN]}(?:$|[^\\\\d])`)\ncreateToken('COERCEFULL', src[t.COERCEPLAIN] +\n `(?:${src[t.PRERELEASE]})?` +\n `(?:${src[t.BUILD]})?` +\n `(?:$|[^\\\\d])`)\ncreateToken('COERCERTL', src[t.COERCE], true)\ncreateToken('COERCERTLFULL', src[t.COERCEFULL], true)\n\n// Tilde ranges.\n// Meaning is \"reasonably at or greater than\"\ncreateToken('LONETILDE', '(?:~>?)')\n\ncreateToken('TILDETRIM', `(\\\\s*)${src[t.LONETILDE]}\\\\s+`, true)\nexports.tildeTrimReplace = '$1~'\n\ncreateToken('TILDE', `^${src[t.LONETILDE]}${src[t.XRANGEPLAIN]}$`)\ncreateToken('TILDELOOSE', `^${src[t.LONETILDE]}${src[t.XRANGEPLAINLOOSE]}$`)\n\n// Caret ranges.\n// Meaning is \"at least and backwards compatible with\"\ncreateToken('LONECARET', '(?:\\\\^)')\n\ncreateToken('CARETTRIM', `(\\\\s*)${src[t.LONECARET]}\\\\s+`, true)\nexports.caretTrimReplace = '$1^'\n\ncreateToken('CARET', `^${src[t.LONECARET]}${src[t.XRANGEPLAIN]}$`)\ncreateToken('CARETLOOSE', `^${src[t.LONECARET]}${src[t.XRANGEPLAINLOOSE]}$`)\n\n// A simple gt/lt/eq thing, or just \"\" to indicate \"any version\"\ncreateToken('COMPARATORLOOSE', `^${src[t.GTLT]}\\\\s*(${src[t.LOOSEPLAIN]})$|^$`)\ncreateToken('COMPARATOR', `^${src[t.GTLT]}\\\\s*(${src[t.FULLPLAIN]})$|^$`)\n\n// An expression to strip any whitespace between the gtlt and the thing\n// it modifies, so that `> 1.2.3` ==> `>1.2.3`\ncreateToken('COMPARATORTRIM', `(\\\\s*)${src[t.GTLT]\n}\\\\s*(${src[t.LOOSEPLAIN]}|${src[t.XRANGEPLAIN]})`, true)\nexports.comparatorTrimReplace = '$1$2$3'\n\n// Something like `1.2.3 - 1.2.4`\n// Note that these all use the loose form, because they'll be\n// checked against either the strict or loose comparator form\n// later.\ncreateToken('HYPHENRANGE', `^\\\\s*(${src[t.XRANGEPLAIN]})` +\n `\\\\s+-\\\\s+` +\n `(${src[t.XRANGEPLAIN]})` +\n `\\\\s*$`)\n\ncreateToken('HYPHENRANGELOOSE', `^\\\\s*(${src[t.XRANGEPLAINLOOSE]})` +\n `\\\\s+-\\\\s+` +\n `(${src[t.XRANGEPLAINLOOSE]})` +\n `\\\\s*$`)\n\n// Star ranges basically just allow anything at all.\ncreateToken('STAR', '(<|>)?=?\\\\s*\\\\*')\n// >=0.0.0 is like a star\ncreateToken('GTE0', '^\\\\s*>=\\\\s*0\\\\.0\\\\.0\\\\s*$')\ncreateToken('GTE0PRE', '^\\\\s*>=\\\\s*0\\\\.0\\\\.0-0\\\\s*$')\n", "// parse out just the options we care about\nconst looseOption = Object.freeze({ loose: true })\nconst emptyOpts = Object.freeze({ })\nconst parseOptions = options => {\n if (!options) {\n return emptyOpts\n }\n\n if (typeof options !== 'object') {\n return looseOption\n }\n\n return options\n}\nmodule.exports = parseOptions\n", "const numeric = /^[0-9]+$/\nconst compareIdentifiers = (a, b) => {\n const anum = numeric.test(a)\n const bnum = numeric.test(b)\n\n if (anum && bnum) {\n a = +a\n b = +b\n }\n\n return a === b ? 0\n : (anum && !bnum) ? -1\n : (bnum && !anum) ? 1\n : a < b ? -1\n : 1\n}\n\nconst rcompareIdentifiers = (a, b) => compareIdentifiers(b, a)\n\nmodule.exports = {\n compareIdentifiers,\n rcompareIdentifiers,\n}\n", "const debug = require('../internal/debug')\nconst { MAX_LENGTH, MAX_SAFE_INTEGER } = require('../internal/constants')\nconst { safeRe: re, t } = require('../internal/re')\n\nconst parseOptions = require('../internal/parse-options')\nconst { compareIdentifiers } = require('../internal/identifiers')\nclass SemVer {\n constructor (version, options) {\n options = parseOptions(options)\n\n if (version instanceof SemVer) {\n if (version.loose === !!options.loose &&\n version.includePrerelease === !!options.includePrerelease) {\n return version\n } else {\n version = version.version\n }\n } else if (typeof version !== 'string') {\n throw new TypeError(`Invalid version. Must be a string. Got type \"${typeof version}\".`)\n }\n\n if (version.length > MAX_LENGTH) {\n throw new TypeError(\n `version is longer than ${MAX_LENGTH} characters`\n )\n }\n\n debug('SemVer', version, options)\n this.options = options\n this.loose = !!options.loose\n // this isn't actually relevant for versions, but keep it so that we\n // don't run into trouble passing this.options around.\n this.includePrerelease = !!options.includePrerelease\n\n const m = version.trim().match(options.loose ? re[t.LOOSE] : re[t.FULL])\n\n if (!m) {\n throw new TypeError(`Invalid Version: ${version}`)\n }\n\n this.raw = version\n\n // these are actually numbers\n this.major = +m[1]\n this.minor = +m[2]\n this.patch = +m[3]\n\n if (this.major > MAX_SAFE_INTEGER || this.major < 0) {\n throw new TypeError('Invalid major version')\n }\n\n if (this.minor > MAX_SAFE_INTEGER || this.minor < 0) {\n throw new TypeError('Invalid minor version')\n }\n\n if (this.patch > MAX_SAFE_INTEGER || this.patch < 0) {\n throw new TypeError('Invalid patch version')\n }\n\n // numberify any prerelease numeric ids\n if (!m[4]) {\n this.prerelease = []\n } else {\n this.prerelease = m[4].split('.').map((id) => {\n if (/^[0-9]+$/.test(id)) {\n const num = +id\n if (num >= 0 && num < MAX_SAFE_INTEGER) {\n return num\n }\n }\n return id\n })\n }\n\n this.build = m[5] ? m[5].split('.') : []\n this.format()\n }\n\n format () {\n this.version = `${this.major}.${this.minor}.${this.patch}`\n if (this.prerelease.length) {\n this.version += `-${this.prerelease.join('.')}`\n }\n return this.version\n }\n\n toString () {\n return this.version\n }\n\n compare (other) {\n debug('SemVer.compare', this.version, this.options, other)\n if (!(other instanceof SemVer)) {\n if (typeof other === 'string' && other === this.version) {\n return 0\n }\n other = new SemVer(other, this.options)\n }\n\n if (other.version === this.version) {\n return 0\n }\n\n return this.compareMain(other) || this.comparePre(other)\n }\n\n compareMain (other) {\n if (!(other instanceof SemVer)) {\n other = new SemVer(other, this.options)\n }\n\n return (\n compareIdentifiers(this.major, other.major) ||\n compareIdentifiers(this.minor, other.minor) ||\n compareIdentifiers(this.patch, other.patch)\n )\n }\n\n comparePre (other) {\n if (!(other instanceof SemVer)) {\n other = new SemVer(other, this.options)\n }\n\n // NOT having a prerelease is > having one\n if (this.prerelease.length && !other.prerelease.length) {\n return -1\n } else if (!this.prerelease.length && other.prerelease.length) {\n return 1\n } else if (!this.prerelease.length && !other.prerelease.length) {\n return 0\n }\n\n let i = 0\n do {\n const a = this.prerelease[i]\n const b = other.prerelease[i]\n debug('prerelease compare', i, a, b)\n if (a === undefined && b === undefined) {\n return 0\n } else if (b === undefined) {\n return 1\n } else if (a === undefined) {\n return -1\n } else if (a === b) {\n continue\n } else {\n return compareIdentifiers(a, b)\n }\n } while (++i)\n }\n\n compareBuild (other) {\n if (!(other instanceof SemVer)) {\n other = new SemVer(other, this.options)\n }\n\n let i = 0\n do {\n const a = this.build[i]\n const b = other.build[i]\n debug('build compare', i, a, b)\n if (a === undefined && b === undefined) {\n return 0\n } else if (b === undefined) {\n return 1\n } else if (a === undefined) {\n return -1\n } else if (a === b) {\n continue\n } else {\n return compareIdentifiers(a, b)\n }\n } while (++i)\n }\n\n // preminor will bump the version up to the next minor release, and immediately\n // down to pre-release. premajor and prepatch work the same way.\n inc (release, identifier, identifierBase) {\n switch (release) {\n case 'premajor':\n this.prerelease.length = 0\n this.patch = 0\n this.minor = 0\n this.major++\n this.inc('pre', identifier, identifierBase)\n break\n case 'preminor':\n this.prerelease.length = 0\n this.patch = 0\n this.minor++\n this.inc('pre', identifier, identifierBase)\n break\n case 'prepatch':\n // If this is already a prerelease, it will bump to the next version\n // drop any prereleases that might already exist, since they are not\n // relevant at this point.\n this.prerelease.length = 0\n this.inc('patch', identifier, identifierBase)\n this.inc('pre', identifier, identifierBase)\n break\n // If the input is a non-prerelease version, this acts the same as\n // prepatch.\n case 'prerelease':\n if (this.prerelease.length === 0) {\n this.inc('patch', identifier, identifierBase)\n }\n this.inc('pre', identifier, identifierBase)\n break\n\n case 'major':\n // If this is a pre-major version, bump up to the same major version.\n // Otherwise increment major.\n // 1.0.0-5 bumps to 1.0.0\n // 1.1.0 bumps to 2.0.0\n if (\n this.minor !== 0 ||\n this.patch !== 0 ||\n this.prerelease.length === 0\n ) {\n this.major++\n }\n this.minor = 0\n this.patch = 0\n this.prerelease = []\n break\n case 'minor':\n // If this is a pre-minor version, bump up to the same minor version.\n // Otherwise increment minor.\n // 1.2.0-5 bumps to 1.2.0\n // 1.2.1 bumps to 1.3.0\n if (this.patch !== 0 || this.prerelease.length === 0) {\n this.minor++\n }\n this.patch = 0\n this.prerelease = []\n break\n case 'patch':\n // If this is not a pre-release version, it will increment the patch.\n // If it is a pre-release it will bump up to the same patch version.\n // 1.2.0-5 patches to 1.2.0\n // 1.2.0 patches to 1.2.1\n if (this.prerelease.length === 0) {\n this.patch++\n }\n this.prerelease = []\n break\n // This probably shouldn't be used publicly.\n // 1.0.0 'pre' would become 1.0.0-0 which is the wrong direction.\n case 'pre': {\n const base = Number(identifierBase) ? 1 : 0\n\n if (!identifier && identifierBase === false) {\n throw new Error('invalid increment argument: identifier is empty')\n }\n\n if (this.prerelease.length === 0) {\n this.prerelease = [base]\n } else {\n let i = this.prerelease.length\n while (--i >= 0) {\n if (typeof this.prerelease[i] === 'number') {\n this.prerelease[i]++\n i = -2\n }\n }\n if (i === -1) {\n // didn't increment anything\n if (identifier === this.prerelease.join('.') && identifierBase === false) {\n throw new Error('invalid increment argument: identifier already exists')\n }\n this.prerelease.push(base)\n }\n }\n if (identifier) {\n // 1.2.0-beta.1 bumps to 1.2.0-beta.2,\n // 1.2.0-beta.fooblz or 1.2.0-beta bumps to 1.2.0-beta.0\n let prerelease = [identifier, base]\n if (identifierBase === false) {\n prerelease = [identifier]\n }\n if (compareIdentifiers(this.prerelease[0], identifier) === 0) {\n if (isNaN(this.prerelease[1])) {\n this.prerelease = prerelease\n }\n } else {\n this.prerelease = prerelease\n }\n }\n break\n }\n default:\n throw new Error(`invalid increment argument: ${release}`)\n }\n this.raw = this.format()\n if (this.build.length) {\n this.raw += `+${this.build.join('.')}`\n }\n return this\n }\n}\n\nmodule.exports = SemVer\n", "const SemVer = require('../classes/semver')\nconst parse = (version, options, throwErrors = false) => {\n if (version instanceof SemVer) {\n return version\n }\n try {\n return new SemVer(version, options)\n } catch (er) {\n if (!throwErrors) {\n return null\n }\n throw er\n }\n}\n\nmodule.exports = parse\n", "const parse = require('./parse')\nconst valid = (version, options) => {\n const v = parse(version, options)\n return v ? v.version : null\n}\nmodule.exports = valid\n", "const parse = require('./parse')\nconst clean = (version, options) => {\n const s = parse(version.trim().replace(/^[=v]+/, ''), options)\n return s ? s.version : null\n}\nmodule.exports = clean\n", "const SemVer = require('../classes/semver')\n\nconst inc = (version, release, options, identifier, identifierBase) => {\n if (typeof (options) === 'string') {\n identifierBase = identifier\n identifier = options\n options = undefined\n }\n\n try {\n return new SemVer(\n version instanceof SemVer ? version.version : version,\n options\n ).inc(release, identifier, identifierBase).version\n } catch (er) {\n return null\n }\n}\nmodule.exports = inc\n", "const parse = require('./parse.js')\n\nconst diff = (version1, version2) => {\n const v1 = parse(version1, null, true)\n const v2 = parse(version2, null, true)\n const comparison = v1.compare(v2)\n\n if (comparison === 0) {\n return null\n }\n\n const v1Higher = comparison > 0\n const highVersion = v1Higher ? v1 : v2\n const lowVersion = v1Higher ? v2 : v1\n const highHasPre = !!highVersion.prerelease.length\n const lowHasPre = !!lowVersion.prerelease.length\n\n if (lowHasPre && !highHasPre) {\n // Going from prerelease -> no prerelease requires some special casing\n\n // If the low version has only a major, then it will always be a major\n // Some examples:\n // 1.0.0-1 -> 1.0.0\n // 1.0.0-1 -> 1.1.1\n // 1.0.0-1 -> 2.0.0\n if (!lowVersion.patch && !lowVersion.minor) {\n return 'major'\n }\n\n // Otherwise it can be determined by checking the high version\n\n if (highVersion.patch) {\n // anything higher than a patch bump would result in the wrong version\n return 'patch'\n }\n\n if (highVersion.minor) {\n // anything higher than a minor bump would result in the wrong version\n return 'minor'\n }\n\n // bumping major/minor/patch all have same result\n return 'major'\n }\n\n // add the `pre` prefix if we are going to a prerelease version\n const prefix = highHasPre ? 'pre' : ''\n\n if (v1.major !== v2.major) {\n return prefix + 'major'\n }\n\n if (v1.minor !== v2.minor) {\n return prefix + 'minor'\n }\n\n if (v1.patch !== v2.patch) {\n return prefix + 'patch'\n }\n\n // high and low are preleases\n return 'prerelease'\n}\n\nmodule.exports = diff\n", "const SemVer = require('../classes/semver')\nconst major = (a, loose) => new SemVer(a, loose).major\nmodule.exports = major\n", "const SemVer = require('../classes/semver')\nconst minor = (a, loose) => new SemVer(a, loose).minor\nmodule.exports = minor\n", "const SemVer = require('../classes/semver')\nconst patch = (a, loose) => new SemVer(a, loose).patch\nmodule.exports = patch\n", "const parse = require('./parse')\nconst prerelease = (version, options) => {\n const parsed = parse(version, options)\n return (parsed && parsed.prerelease.length) ? parsed.prerelease : null\n}\nmodule.exports = prerelease\n", "const SemVer = require('../classes/semver')\nconst compare = (a, b, loose) =>\n new SemVer(a, loose).compare(new SemVer(b, loose))\n\nmodule.exports = compare\n", "const compare = require('./compare')\nconst rcompare = (a, b, loose) => compare(b, a, loose)\nmodule.exports = rcompare\n", "const compare = require('./compare')\nconst compareLoose = (a, b) => compare(a, b, true)\nmodule.exports = compareLoose\n", "const SemVer = require('../classes/semver')\nconst compareBuild = (a, b, loose) => {\n const versionA = new SemVer(a, loose)\n const versionB = new SemVer(b, loose)\n return versionA.compare(versionB) || versionA.compareBuild(versionB)\n}\nmodule.exports = compareBuild\n", "const compareBuild = require('./compare-build')\nconst sort = (list, loose) => list.sort((a, b) => compareBuild(a, b, loose))\nmodule.exports = sort\n", "const compareBuild = require('./compare-build')\nconst rsort = (list, loose) => list.sort((a, b) => compareBuild(b, a, loose))\nmodule.exports = rsort\n", "const compare = require('./compare')\nconst gt = (a, b, loose) => compare(a, b, loose) > 0\nmodule.exports = gt\n", "const compare = require('./compare')\nconst lt = (a, b, loose) => compare(a, b, loose) < 0\nmodule.exports = lt\n", "const compare = require('./compare')\nconst eq = (a, b, loose) => compare(a, b, loose) === 0\nmodule.exports = eq\n", "const compare = require('./compare')\nconst neq = (a, b, loose) => compare(a, b, loose) !== 0\nmodule.exports = neq\n", "const compare = require('./compare')\nconst gte = (a, b, loose) => compare(a, b, loose) >= 0\nmodule.exports = gte\n", "const compare = require('./compare')\nconst lte = (a, b, loose) => compare(a, b, loose) <= 0\nmodule.exports = lte\n", "const eq = require('./eq')\nconst neq = require('./neq')\nconst gt = require('./gt')\nconst gte = require('./gte')\nconst lt = require('./lt')\nconst lte = require('./lte')\n\nconst cmp = (a, op, b, loose) => {\n switch (op) {\n case '===':\n if (typeof a === 'object') {\n a = a.version\n }\n if (typeof b === 'object') {\n b = b.version\n }\n return a === b\n\n case '!==':\n if (typeof a === 'object') {\n a = a.version\n }\n if (typeof b === 'object') {\n b = b.version\n }\n return a !== b\n\n case '':\n case '=':\n case '==':\n return eq(a, b, loose)\n\n case '!=':\n return neq(a, b, loose)\n\n case '>':\n return gt(a, b, loose)\n\n case '>=':\n return gte(a, b, loose)\n\n case '<':\n return lt(a, b, loose)\n\n case '<=':\n return lte(a, b, loose)\n\n default:\n throw new TypeError(`Invalid operator: ${op}`)\n }\n}\nmodule.exports = cmp\n", "const SemVer = require('../classes/semver')\nconst parse = require('./parse')\nconst { safeRe: re, t } = require('../internal/re')\n\nconst coerce = (version, options) => {\n if (version instanceof SemVer) {\n return version\n }\n\n if (typeof version === 'number') {\n version = String(version)\n }\n\n if (typeof version !== 'string') {\n return null\n }\n\n options = options || {}\n\n let match = null\n if (!options.rtl) {\n match = version.match(options.includePrerelease ? re[t.COERCEFULL] : re[t.COERCE])\n } else {\n // Find the right-most coercible string that does not share\n // a terminus with a more left-ward coercible string.\n // Eg, '1.2.3.4' wants to coerce '2.3.4', not '3.4' or '4'\n // With includePrerelease option set, '1.2.3.4-rc' wants to coerce '2.3.4-rc', not '2.3.4'\n //\n // Walk through the string checking with a /g regexp\n // Manually set the index so as to pick up overlapping matches.\n // Stop when we get a match that ends at the string end, since no\n // coercible string can be more right-ward without the same terminus.\n const coerceRtlRegex = options.includePrerelease ? re[t.COERCERTLFULL] : re[t.COERCERTL]\n let next\n while ((next = coerceRtlRegex.exec(version)) &&\n (!match || match.index + match[0].length !== version.length)\n ) {\n if (!match ||\n next.index + next[0].length !== match.index + match[0].length) {\n match = next\n }\n coerceRtlRegex.lastIndex = next.index + next[1].length + next[2].length\n }\n // leave it in a clean state\n coerceRtlRegex.lastIndex = -1\n }\n\n if (match === null) {\n return null\n }\n\n const major = match[2]\n const minor = match[3] || '0'\n const patch = match[4] || '0'\n const prerelease = options.includePrerelease && match[5] ? `-${match[5]}` : ''\n const build = options.includePrerelease && match[6] ? `+${match[6]}` : ''\n\n return parse(`${major}.${minor}.${patch}${prerelease}${build}`, options)\n}\nmodule.exports = coerce\n", "class LRUCache {\n constructor () {\n this.max = 1000\n this.map = new Map()\n }\n\n get (key) {\n const value = this.map.get(key)\n if (value === undefined) {\n return undefined\n } else {\n // Remove the key from the map and add it to the end\n this.map.delete(key)\n this.map.set(key, value)\n return value\n }\n }\n\n delete (key) {\n return this.map.delete(key)\n }\n\n set (key, value) {\n const deleted = this.delete(key)\n\n if (!deleted && value !== undefined) {\n // If cache is full, delete the least recently used item\n if (this.map.size >= this.max) {\n const firstKey = this.map.keys().next().value\n this.delete(firstKey)\n }\n\n this.map.set(key, value)\n }\n\n return this\n }\n}\n\nmodule.exports = LRUCache\n", "const SPACE_CHARACTERS = /\\s+/g\n\n// hoisted class for cyclic dependency\nclass Range {\n constructor (range, options) {\n options = parseOptions(options)\n\n if (range instanceof Range) {\n if (\n range.loose === !!options.loose &&\n range.includePrerelease === !!options.includePrerelease\n ) {\n return range\n } else {\n return new Range(range.raw, options)\n }\n }\n\n if (range instanceof Comparator) {\n // just put it in the set and return\n this.raw = range.value\n this.set = [[range]]\n this.formatted = undefined\n return this\n }\n\n this.options = options\n this.loose = !!options.loose\n this.includePrerelease = !!options.includePrerelease\n\n // First reduce all whitespace as much as possible so we do not have to rely\n // on potentially slow regexes like \\s*. This is then stored and used for\n // future error messages as well.\n this.raw = range.trim().replace(SPACE_CHARACTERS, ' ')\n\n // First, split on ||\n this.set = this.raw\n .split('||')\n // map the range to a 2d array of comparators\n .map(r => this.parseRange(r.trim()))\n // throw out any comparator lists that are empty\n // this generally means that it was not a valid range, which is allowed\n // in loose mode, but will still throw if the WHOLE range is invalid.\n .filter(c => c.length)\n\n if (!this.set.length) {\n throw new TypeError(`Invalid SemVer Range: ${this.raw}`)\n }\n\n // if we have any that are not the null set, throw out null sets.\n if (this.set.length > 1) {\n // keep the first one, in case they're all null sets\n const first = this.set[0]\n this.set = this.set.filter(c => !isNullSet(c[0]))\n if (this.set.length === 0) {\n this.set = [first]\n } else if (this.set.length > 1) {\n // if we have any that are *, then the range is just *\n for (const c of this.set) {\n if (c.length === 1 && isAny(c[0])) {\n this.set = [c]\n break\n }\n }\n }\n }\n\n this.formatted = undefined\n }\n\n get range () {\n if (this.formatted === undefined) {\n this.formatted = ''\n for (let i = 0; i < this.set.length; i++) {\n if (i > 0) {\n this.formatted += '||'\n }\n const comps = this.set[i]\n for (let k = 0; k < comps.length; k++) {\n if (k > 0) {\n this.formatted += ' '\n }\n this.formatted += comps[k].toString().trim()\n }\n }\n }\n return this.formatted\n }\n\n format () {\n return this.range\n }\n\n toString () {\n return this.range\n }\n\n parseRange (range) {\n // memoize range parsing for performance.\n // this is a very hot path, and fully deterministic.\n const memoOpts =\n (this.options.includePrerelease && FLAG_INCLUDE_PRERELEASE) |\n (this.options.loose && FLAG_LOOSE)\n const memoKey = memoOpts + ':' + range\n const cached = cache.get(memoKey)\n if (cached) {\n return cached\n }\n\n const loose = this.options.loose\n // `1.2.3 - 1.2.4` => `>=1.2.3 <=1.2.4`\n const hr = loose ? re[t.HYPHENRANGELOOSE] : re[t.HYPHENRANGE]\n range = range.replace(hr, hyphenReplace(this.options.includePrerelease))\n debug('hyphen replace', range)\n\n // `> 1.2.3 < 1.2.5` => `>1.2.3 <1.2.5`\n range = range.replace(re[t.COMPARATORTRIM], comparatorTrimReplace)\n debug('comparator trim', range)\n\n // `~ 1.2.3` => `~1.2.3`\n range = range.replace(re[t.TILDETRIM], tildeTrimReplace)\n debug('tilde trim', range)\n\n // `^ 1.2.3` => `^1.2.3`\n range = range.replace(re[t.CARETTRIM], caretTrimReplace)\n debug('caret trim', range)\n\n // At this point, the range is completely trimmed and\n // ready to be split into comparators.\n\n let rangeList = range\n .split(' ')\n .map(comp => parseComparator(comp, this.options))\n .join(' ')\n .split(/\\s+/)\n // >=0.0.0 is equivalent to *\n .map(comp => replaceGTE0(comp, this.options))\n\n if (loose) {\n // in loose mode, throw out any that are not valid comparators\n rangeList = rangeList.filter(comp => {\n debug('loose invalid filter', comp, this.options)\n return !!comp.match(re[t.COMPARATORLOOSE])\n })\n }\n debug('range list', rangeList)\n\n // if any comparators are the null set, then replace with JUST null set\n // if more than one comparator, remove any * comparators\n // also, don't include the same comparator more than once\n const rangeMap = new Map()\n const comparators = rangeList.map(comp => new Comparator(comp, this.options))\n for (const comp of comparators) {\n if (isNullSet(comp)) {\n return [comp]\n }\n rangeMap.set(comp.value, comp)\n }\n if (rangeMap.size > 1 && rangeMap.has('')) {\n rangeMap.delete('')\n }\n\n const result = [...rangeMap.values()]\n cache.set(memoKey, result)\n return result\n }\n\n intersects (range, options) {\n if (!(range instanceof Range)) {\n throw new TypeError('a Range is required')\n }\n\n return this.set.some((thisComparators) => {\n return (\n isSatisfiable(thisComparators, options) &&\n range.set.some((rangeComparators) => {\n return (\n isSatisfiable(rangeComparators, options) &&\n thisComparators.every((thisComparator) => {\n return rangeComparators.every((rangeComparator) => {\n return thisComparator.intersects(rangeComparator, options)\n })\n })\n )\n })\n )\n })\n }\n\n // if ANY of the sets match ALL of its comparators, then pass\n test (version) {\n if (!version) {\n return false\n }\n\n if (typeof version === 'string') {\n try {\n version = new SemVer(version, this.options)\n } catch (er) {\n return false\n }\n }\n\n for (let i = 0; i < this.set.length; i++) {\n if (testSet(this.set[i], version, this.options)) {\n return true\n }\n }\n return false\n }\n}\n\nmodule.exports = Range\n\nconst LRU = require('../internal/lrucache')\nconst cache = new LRU()\n\nconst parseOptions = require('../internal/parse-options')\nconst Comparator = require('./comparator')\nconst debug = require('../internal/debug')\nconst SemVer = require('./semver')\nconst {\n safeRe: re,\n t,\n comparatorTrimReplace,\n tildeTrimReplace,\n caretTrimReplace,\n} = require('../internal/re')\nconst { FLAG_INCLUDE_PRERELEASE, FLAG_LOOSE } = require('../internal/constants')\n\nconst isNullSet = c => c.value === '<0.0.0-0'\nconst isAny = c => c.value === ''\n\n// take a set of comparators and determine whether there\n// exists a version which can satisfy it\nconst isSatisfiable = (comparators, options) => {\n let result = true\n const remainingComparators = comparators.slice()\n let testComparator = remainingComparators.pop()\n\n while (result && remainingComparators.length) {\n result = remainingComparators.every((otherComparator) => {\n return testComparator.intersects(otherComparator, options)\n })\n\n testComparator = remainingComparators.pop()\n }\n\n return result\n}\n\n// comprised of xranges, tildes, stars, and gtlt's at this point.\n// already replaced the hyphen ranges\n// turn into a set of JUST comparators.\nconst parseComparator = (comp, options) => {\n debug('comp', comp, options)\n comp = replaceCarets(comp, options)\n debug('caret', comp)\n comp = replaceTildes(comp, options)\n debug('tildes', comp)\n comp = replaceXRanges(comp, options)\n debug('xrange', comp)\n comp = replaceStars(comp, options)\n debug('stars', comp)\n return comp\n}\n\nconst isX = id => !id || id.toLowerCase() === 'x' || id === '*'\n\n// ~, ~> --> * (any, kinda silly)\n// ~2, ~2.x, ~2.x.x, ~>2, ~>2.x ~>2.x.x --> >=2.0.0 <3.0.0-0\n// ~2.0, ~2.0.x, ~>2.0, ~>2.0.x --> >=2.0.0 <2.1.0-0\n// ~1.2, ~1.2.x, ~>1.2, ~>1.2.x --> >=1.2.0 <1.3.0-0\n// ~1.2.3, ~>1.2.3 --> >=1.2.3 <1.3.0-0\n// ~1.2.0, ~>1.2.0 --> >=1.2.0 <1.3.0-0\n// ~0.0.1 --> >=0.0.1 <0.1.0-0\nconst replaceTildes = (comp, options) => {\n return comp\n .trim()\n .split(/\\s+/)\n .map((c) => replaceTilde(c, options))\n .join(' ')\n}\n\nconst replaceTilde = (comp, options) => {\n const r = options.loose ? re[t.TILDELOOSE] : re[t.TILDE]\n return comp.replace(r, (_, M, m, p, pr) => {\n debug('tilde', comp, _, M, m, p, pr)\n let ret\n\n if (isX(M)) {\n ret = ''\n } else if (isX(m)) {\n ret = `>=${M}.0.0 <${+M + 1}.0.0-0`\n } else if (isX(p)) {\n // ~1.2 == >=1.2.0 <1.3.0-0\n ret = `>=${M}.${m}.0 <${M}.${+m + 1}.0-0`\n } else if (pr) {\n debug('replaceTilde pr', pr)\n ret = `>=${M}.${m}.${p}-${pr\n } <${M}.${+m + 1}.0-0`\n } else {\n // ~1.2.3 == >=1.2.3 <1.3.0-0\n ret = `>=${M}.${m}.${p\n } <${M}.${+m + 1}.0-0`\n }\n\n debug('tilde return', ret)\n return ret\n })\n}\n\n// ^ --> * (any, kinda silly)\n// ^2, ^2.x, ^2.x.x --> >=2.0.0 <3.0.0-0\n// ^2.0, ^2.0.x --> >=2.0.0 <3.0.0-0\n// ^1.2, ^1.2.x --> >=1.2.0 <2.0.0-0\n// ^1.2.3 --> >=1.2.3 <2.0.0-0\n// ^1.2.0 --> >=1.2.0 <2.0.0-0\n// ^0.0.1 --> >=0.0.1 <0.0.2-0\n// ^0.1.0 --> >=0.1.0 <0.2.0-0\nconst replaceCarets = (comp, options) => {\n return comp\n .trim()\n .split(/\\s+/)\n .map((c) => replaceCaret(c, options))\n .join(' ')\n}\n\nconst replaceCaret = (comp, options) => {\n debug('caret', comp, options)\n const r = options.loose ? re[t.CARETLOOSE] : re[t.CARET]\n const z = options.includePrerelease ? '-0' : ''\n return comp.replace(r, (_, M, m, p, pr) => {\n debug('caret', comp, _, M, m, p, pr)\n let ret\n\n if (isX(M)) {\n ret = ''\n } else if (isX(m)) {\n ret = `>=${M}.0.0${z} <${+M + 1}.0.0-0`\n } else if (isX(p)) {\n if (M === '0') {\n ret = `>=${M}.${m}.0${z} <${M}.${+m + 1}.0-0`\n } else {\n ret = `>=${M}.${m}.0${z} <${+M + 1}.0.0-0`\n }\n } else if (pr) {\n debug('replaceCaret pr', pr)\n if (M === '0') {\n if (m === '0') {\n ret = `>=${M}.${m}.${p}-${pr\n } <${M}.${m}.${+p + 1}-0`\n } else {\n ret = `>=${M}.${m}.${p}-${pr\n } <${M}.${+m + 1}.0-0`\n }\n } else {\n ret = `>=${M}.${m}.${p}-${pr\n } <${+M + 1}.0.0-0`\n }\n } else {\n debug('no pr')\n if (M === '0') {\n if (m === '0') {\n ret = `>=${M}.${m}.${p\n }${z} <${M}.${m}.${+p + 1}-0`\n } else {\n ret = `>=${M}.${m}.${p\n }${z} <${M}.${+m + 1}.0-0`\n }\n } else {\n ret = `>=${M}.${m}.${p\n } <${+M + 1}.0.0-0`\n }\n }\n\n debug('caret return', ret)\n return ret\n })\n}\n\nconst replaceXRanges = (comp, options) => {\n debug('replaceXRanges', comp, options)\n return comp\n .split(/\\s+/)\n .map((c) => replaceXRange(c, options))\n .join(' ')\n}\n\nconst replaceXRange = (comp, options) => {\n comp = comp.trim()\n const r = options.loose ? re[t.XRANGELOOSE] : re[t.XRANGE]\n return comp.replace(r, (ret, gtlt, M, m, p, pr) => {\n debug('xRange', comp, ret, gtlt, M, m, p, pr)\n const xM = isX(M)\n const xm = xM || isX(m)\n const xp = xm || isX(p)\n const anyX = xp\n\n if (gtlt === '=' && anyX) {\n gtlt = ''\n }\n\n // if we're including prereleases in the match, then we need\n // to fix this to -0, the lowest possible prerelease value\n pr = options.includePrerelease ? '-0' : ''\n\n if (xM) {\n if (gtlt === '>' || gtlt === '<') {\n // nothing is allowed\n ret = '<0.0.0-0'\n } else {\n // nothing is forbidden\n ret = '*'\n }\n } else if (gtlt && anyX) {\n // we know patch is an x, because we have any x at all.\n // replace X with 0\n if (xm) {\n m = 0\n }\n p = 0\n\n if (gtlt === '>') {\n // >1 => >=2.0.0\n // >1.2 => >=1.3.0\n gtlt = '>='\n if (xm) {\n M = +M + 1\n m = 0\n p = 0\n } else {\n m = +m + 1\n p = 0\n }\n } else if (gtlt === '<=') {\n // <=0.7.x is actually <0.8.0, since any 0.7.x should\n // pass. Similarly, <=7.x is actually <8.0.0, etc.\n gtlt = '<'\n if (xm) {\n M = +M + 1\n } else {\n m = +m + 1\n }\n }\n\n if (gtlt === '<') {\n pr = '-0'\n }\n\n ret = `${gtlt + M}.${m}.${p}${pr}`\n } else if (xm) {\n ret = `>=${M}.0.0${pr} <${+M + 1}.0.0-0`\n } else if (xp) {\n ret = `>=${M}.${m}.0${pr\n } <${M}.${+m + 1}.0-0`\n }\n\n debug('xRange return', ret)\n\n return ret\n })\n}\n\n// Because * is AND-ed with everything else in the comparator,\n// and '' means \"any version\", just remove the *s entirely.\nconst replaceStars = (comp, options) => {\n debug('replaceStars', comp, options)\n // Looseness is ignored here. star is always as loose as it gets!\n return comp\n .trim()\n .replace(re[t.STAR], '')\n}\n\nconst replaceGTE0 = (comp, options) => {\n debug('replaceGTE0', comp, options)\n return comp\n .trim()\n .replace(re[options.includePrerelease ? t.GTE0PRE : t.GTE0], '')\n}\n\n// This function is passed to string.replace(re[t.HYPHENRANGE])\n// M, m, patch, prerelease, build\n// 1.2 - 3.4.5 => >=1.2.0 <=3.4.5\n// 1.2.3 - 3.4 => >=1.2.0 <3.5.0-0 Any 3.4.x will do\n// 1.2 - 3.4 => >=1.2.0 <3.5.0-0\n// TODO build?\nconst hyphenReplace = incPr => ($0,\n from, fM, fm, fp, fpr, fb,\n to, tM, tm, tp, tpr) => {\n if (isX(fM)) {\n from = ''\n } else if (isX(fm)) {\n from = `>=${fM}.0.0${incPr ? '-0' : ''}`\n } else if (isX(fp)) {\n from = `>=${fM}.${fm}.0${incPr ? '-0' : ''}`\n } else if (fpr) {\n from = `>=${from}`\n } else {\n from = `>=${from}${incPr ? '-0' : ''}`\n }\n\n if (isX(tM)) {\n to = ''\n } else if (isX(tm)) {\n to = `<${+tM + 1}.0.0-0`\n } else if (isX(tp)) {\n to = `<${tM}.${+tm + 1}.0-0`\n } else if (tpr) {\n to = `<=${tM}.${tm}.${tp}-${tpr}`\n } else if (incPr) {\n to = `<${tM}.${tm}.${+tp + 1}-0`\n } else {\n to = `<=${to}`\n }\n\n return `${from} ${to}`.trim()\n}\n\nconst testSet = (set, version, options) => {\n for (let i = 0; i < set.length; i++) {\n if (!set[i].test(version)) {\n return false\n }\n }\n\n if (version.prerelease.length && !options.includePrerelease) {\n // Find the set of versions that are allowed to have prereleases\n // For example, ^1.2.3-pr.1 desugars to >=1.2.3-pr.1 <2.0.0\n // That should allow `1.2.3-pr.2` to pass.\n // However, `1.2.4-alpha.notready` should NOT be allowed,\n // even though it's within the range set by the comparators.\n for (let i = 0; i < set.length; i++) {\n debug(set[i].semver)\n if (set[i].semver === Comparator.ANY) {\n continue\n }\n\n if (set[i].semver.prerelease.length > 0) {\n const allowed = set[i].semver\n if (allowed.major === version.major &&\n allowed.minor === version.minor &&\n allowed.patch === version.patch) {\n return true\n }\n }\n }\n\n // Version has a -pre, but it's not one of the ones we like.\n return false\n }\n\n return true\n}\n", "const ANY = Symbol('SemVer ANY')\n// hoisted class for cyclic dependency\nclass Comparator {\n static get ANY () {\n return ANY\n }\n\n constructor (comp, options) {\n options = parseOptions(options)\n\n if (comp instanceof Comparator) {\n if (comp.loose === !!options.loose) {\n return comp\n } else {\n comp = comp.value\n }\n }\n\n comp = comp.trim().split(/\\s+/).join(' ')\n debug('comparator', comp, options)\n this.options = options\n this.loose = !!options.loose\n this.parse(comp)\n\n if (this.semver === ANY) {\n this.value = ''\n } else {\n this.value = this.operator + this.semver.version\n }\n\n debug('comp', this)\n }\n\n parse (comp) {\n const r = this.options.loose ? re[t.COMPARATORLOOSE] : re[t.COMPARATOR]\n const m = comp.match(r)\n\n if (!m) {\n throw new TypeError(`Invalid comparator: ${comp}`)\n }\n\n this.operator = m[1] !== undefined ? m[1] : ''\n if (this.operator === '=') {\n this.operator = ''\n }\n\n // if it literally is just '>' or '' then allow anything.\n if (!m[2]) {\n this.semver = ANY\n } else {\n this.semver = new SemVer(m[2], this.options.loose)\n }\n }\n\n toString () {\n return this.value\n }\n\n test (version) {\n debug('Comparator.test', version, this.options.loose)\n\n if (this.semver === ANY || version === ANY) {\n return true\n }\n\n if (typeof version === 'string') {\n try {\n version = new SemVer(version, this.options)\n } catch (er) {\n return false\n }\n }\n\n return cmp(version, this.operator, this.semver, this.options)\n }\n\n intersects (comp, options) {\n if (!(comp instanceof Comparator)) {\n throw new TypeError('a Comparator is required')\n }\n\n if (this.operator === '') {\n if (this.value === '') {\n return true\n }\n return new Range(comp.value, options).test(this.value)\n } else if (comp.operator === '') {\n if (comp.value === '') {\n return true\n }\n return new Range(this.value, options).test(comp.semver)\n }\n\n options = parseOptions(options)\n\n // Special cases where nothing can possibly be lower\n if (options.includePrerelease &&\n (this.value === '<0.0.0-0' || comp.value === '<0.0.0-0')) {\n return false\n }\n if (!options.includePrerelease &&\n (this.value.startsWith('<0.0.0') || comp.value.startsWith('<0.0.0'))) {\n return false\n }\n\n // Same direction increasing (> or >=)\n if (this.operator.startsWith('>') && comp.operator.startsWith('>')) {\n return true\n }\n // Same direction decreasing (< or <=)\n if (this.operator.startsWith('<') && comp.operator.startsWith('<')) {\n return true\n }\n // same SemVer and both sides are inclusive (<= or >=)\n if (\n (this.semver.version === comp.semver.version) &&\n this.operator.includes('=') && comp.operator.includes('=')) {\n return true\n }\n // opposite directions less than\n if (cmp(this.semver, '<', comp.semver, options) &&\n this.operator.startsWith('>') && comp.operator.startsWith('<')) {\n return true\n }\n // opposite directions greater than\n if (cmp(this.semver, '>', comp.semver, options) &&\n this.operator.startsWith('<') && comp.operator.startsWith('>')) {\n return true\n }\n return false\n }\n}\n\nmodule.exports = Comparator\n\nconst parseOptions = require('../internal/parse-options')\nconst { safeRe: re, t } = require('../internal/re')\nconst cmp = require('../functions/cmp')\nconst debug = require('../internal/debug')\nconst SemVer = require('./semver')\nconst Range = require('./range')\n", "const Range = require('../classes/range')\nconst satisfies = (version, range, options) => {\n try {\n range = new Range(range, options)\n } catch (er) {\n return false\n }\n return range.test(version)\n}\nmodule.exports = satisfies\n", "const Range = require('../classes/range')\n\n// Mostly just for testing and legacy API reasons\nconst toComparators = (range, options) =>\n new Range(range, options).set\n .map(comp => comp.map(c => c.value).join(' ').trim().split(' '))\n\nmodule.exports = toComparators\n", "const SemVer = require('../classes/semver')\nconst Range = require('../classes/range')\n\nconst maxSatisfying = (versions, range, options) => {\n let max = null\n let maxSV = null\n let rangeObj = null\n try {\n rangeObj = new Range(range, options)\n } catch (er) {\n return null\n }\n versions.forEach((v) => {\n if (rangeObj.test(v)) {\n // satisfies(v, range, options)\n if (!max || maxSV.compare(v) === -1) {\n // compare(max, v, true)\n max = v\n maxSV = new SemVer(max, options)\n }\n }\n })\n return max\n}\nmodule.exports = maxSatisfying\n", "const SemVer = require('../classes/semver')\nconst Range = require('../classes/range')\nconst minSatisfying = (versions, range, options) => {\n let min = null\n let minSV = null\n let rangeObj = null\n try {\n rangeObj = new Range(range, options)\n } catch (er) {\n return null\n }\n versions.forEach((v) => {\n if (rangeObj.test(v)) {\n // satisfies(v, range, options)\n if (!min || minSV.compare(v) === 1) {\n // compare(min, v, true)\n min = v\n minSV = new SemVer(min, options)\n }\n }\n })\n return min\n}\nmodule.exports = minSatisfying\n", "const SemVer = require('../classes/semver')\nconst Range = require('../classes/range')\nconst gt = require('../functions/gt')\n\nconst minVersion = (range, loose) => {\n range = new Range(range, loose)\n\n let minver = new SemVer('0.0.0')\n if (range.test(minver)) {\n return minver\n }\n\n minver = new SemVer('0.0.0-0')\n if (range.test(minver)) {\n return minver\n }\n\n minver = null\n for (let i = 0; i < range.set.length; ++i) {\n const comparators = range.set[i]\n\n let setMin = null\n comparators.forEach((comparator) => {\n // Clone to avoid manipulating the comparator's semver object.\n const compver = new SemVer(comparator.semver.version)\n switch (comparator.operator) {\n case '>':\n if (compver.prerelease.length === 0) {\n compver.patch++\n } else {\n compver.prerelease.push(0)\n }\n compver.raw = compver.format()\n /* fallthrough */\n case '':\n case '>=':\n if (!setMin || gt(compver, setMin)) {\n setMin = compver\n }\n break\n case '<':\n case '<=':\n /* Ignore maximum versions */\n break\n /* istanbul ignore next */\n default:\n throw new Error(`Unexpected operation: ${comparator.operator}`)\n }\n })\n if (setMin && (!minver || gt(minver, setMin))) {\n minver = setMin\n }\n }\n\n if (minver && range.test(minver)) {\n return minver\n }\n\n return null\n}\nmodule.exports = minVersion\n", "const Range = require('../classes/range')\nconst validRange = (range, options) => {\n try {\n // Return '*' instead of '' so that truthiness works.\n // This will throw if it's invalid anyway\n return new Range(range, options).range || '*'\n } catch (er) {\n return null\n }\n}\nmodule.exports = validRange\n", "const SemVer = require('../classes/semver')\nconst Comparator = require('../classes/comparator')\nconst { ANY } = Comparator\nconst Range = require('../classes/range')\nconst satisfies = require('../functions/satisfies')\nconst gt = require('../functions/gt')\nconst lt = require('../functions/lt')\nconst lte = require('../functions/lte')\nconst gte = require('../functions/gte')\n\nconst outside = (version, range, hilo, options) => {\n version = new SemVer(version, options)\n range = new Range(range, options)\n\n let gtfn, ltefn, ltfn, comp, ecomp\n switch (hilo) {\n case '>':\n gtfn = gt\n ltefn = lte\n ltfn = lt\n comp = '>'\n ecomp = '>='\n break\n case '<':\n gtfn = lt\n ltefn = gte\n ltfn = gt\n comp = '<'\n ecomp = '<='\n break\n default:\n throw new TypeError('Must provide a hilo val of \"<\" or \">\"')\n }\n\n // If it satisfies the range it is not outside\n if (satisfies(version, range, options)) {\n return false\n }\n\n // From now on, variable terms are as if we're in \"gtr\" mode.\n // but note that everything is flipped for the \"ltr\" function.\n\n for (let i = 0; i < range.set.length; ++i) {\n const comparators = range.set[i]\n\n let high = null\n let low = null\n\n comparators.forEach((comparator) => {\n if (comparator.semver === ANY) {\n comparator = new Comparator('>=0.0.0')\n }\n high = high || comparator\n low = low || comparator\n if (gtfn(comparator.semver, high.semver, options)) {\n high = comparator\n } else if (ltfn(comparator.semver, low.semver, options)) {\n low = comparator\n }\n })\n\n // If the edge version comparator has a operator then our version\n // isn't outside it\n if (high.operator === comp || high.operator === ecomp) {\n return false\n }\n\n // If the lowest version comparator has an operator and our version\n // is less than it then it isn't higher than the range\n if ((!low.operator || low.operator === comp) &&\n ltefn(version, low.semver)) {\n return false\n } else if (low.operator === ecomp && ltfn(version, low.semver)) {\n return false\n }\n }\n return true\n}\n\nmodule.exports = outside\n", "// Determine if version is greater than all the versions possible in the range.\nconst outside = require('./outside')\nconst gtr = (version, range, options) => outside(version, range, '>', options)\nmodule.exports = gtr\n", "const outside = require('./outside')\n// Determine if version is less than all the versions possible in the range\nconst ltr = (version, range, options) => outside(version, range, '<', options)\nmodule.exports = ltr\n", "const Range = require('../classes/range')\nconst intersects = (r1, r2, options) => {\n r1 = new Range(r1, options)\n r2 = new Range(r2, options)\n return r1.intersects(r2, options)\n}\nmodule.exports = intersects\n", "// given a set of versions and a range, create a \"simplified\" range\n// that includes the same versions that the original range does\n// If the original range is shorter than the simplified one, return that.\nconst satisfies = require('../functions/satisfies.js')\nconst compare = require('../functions/compare.js')\nmodule.exports = (versions, range, options) => {\n const set = []\n let first = null\n let prev = null\n const v = versions.sort((a, b) => compare(a, b, options))\n for (const version of v) {\n const included = satisfies(version, range, options)\n if (included) {\n prev = version\n if (!first) {\n first = version\n }\n } else {\n if (prev) {\n set.push([first, prev])\n }\n prev = null\n first = null\n }\n }\n if (first) {\n set.push([first, null])\n }\n\n const ranges = []\n for (const [min, max] of set) {\n if (min === max) {\n ranges.push(min)\n } else if (!max && min === v[0]) {\n ranges.push('*')\n } else if (!max) {\n ranges.push(`>=${min}`)\n } else if (min === v[0]) {\n ranges.push(`<=${max}`)\n } else {\n ranges.push(`${min} - ${max}`)\n }\n }\n const simplified = ranges.join(' || ')\n const original = typeof range.raw === 'string' ? range.raw : String(range)\n return simplified.length < original.length ? simplified : range\n}\n", "const Range = require('../classes/range.js')\nconst Comparator = require('../classes/comparator.js')\nconst { ANY } = Comparator\nconst satisfies = require('../functions/satisfies.js')\nconst compare = require('../functions/compare.js')\n\n// Complex range `r1 || r2 || ...` is a subset of `R1 || R2 || ...` iff:\n// - Every simple range `r1, r2, ...` is a null set, OR\n// - Every simple range `r1, r2, ...` which is not a null set is a subset of\n// some `R1, R2, ...`\n//\n// Simple range `c1 c2 ...` is a subset of simple range `C1 C2 ...` iff:\n// - If c is only the ANY comparator\n// - If C is only the ANY comparator, return true\n// - Else if in prerelease mode, return false\n// - else replace c with `[>=0.0.0]`\n// - If C is only the ANY comparator\n// - if in prerelease mode, return true\n// - else replace C with `[>=0.0.0]`\n// - Let EQ be the set of = comparators in c\n// - If EQ is more than one, return true (null set)\n// - Let GT be the highest > or >= comparator in c\n// - Let LT be the lowest < or <= comparator in c\n// - If GT and LT, and GT.semver > LT.semver, return true (null set)\n// - If any C is a = range, and GT or LT are set, return false\n// - If EQ\n// - If GT, and EQ does not satisfy GT, return true (null set)\n// - If LT, and EQ does not satisfy LT, return true (null set)\n// - If EQ satisfies every C, return true\n// - Else return false\n// - If GT\n// - If GT.semver is lower than any > or >= comp in C, return false\n// - If GT is >=, and GT.semver does not satisfy every C, return false\n// - If GT.semver has a prerelease, and not in prerelease mode\n// - If no C has a prerelease and the GT.semver tuple, return false\n// - If LT\n// - If LT.semver is greater than any < or <= comp in C, return false\n// - If LT is <=, and LT.semver does not satisfy every C, return false\n// - If GT.semver has a prerelease, and not in prerelease mode\n// - If no C has a prerelease and the LT.semver tuple, return false\n// - Else return true\n\nconst subset = (sub, dom, options = {}) => {\n if (sub === dom) {\n return true\n }\n\n sub = new Range(sub, options)\n dom = new Range(dom, options)\n let sawNonNull = false\n\n OUTER: for (const simpleSub of sub.set) {\n for (const simpleDom of dom.set) {\n const isSub = simpleSubset(simpleSub, simpleDom, options)\n sawNonNull = sawNonNull || isSub !== null\n if (isSub) {\n continue OUTER\n }\n }\n // the null set is a subset of everything, but null simple ranges in\n // a complex range should be ignored. so if we saw a non-null range,\n // then we know this isn't a subset, but if EVERY simple range was null,\n // then it is a subset.\n if (sawNonNull) {\n return false\n }\n }\n return true\n}\n\nconst minimumVersionWithPreRelease = [new Comparator('>=0.0.0-0')]\nconst minimumVersion = [new Comparator('>=0.0.0')]\n\nconst simpleSubset = (sub, dom, options) => {\n if (sub === dom) {\n return true\n }\n\n if (sub.length === 1 && sub[0].semver === ANY) {\n if (dom.length === 1 && dom[0].semver === ANY) {\n return true\n } else if (options.includePrerelease) {\n sub = minimumVersionWithPreRelease\n } else {\n sub = minimumVersion\n }\n }\n\n if (dom.length === 1 && dom[0].semver === ANY) {\n if (options.includePrerelease) {\n return true\n } else {\n dom = minimumVersion\n }\n }\n\n const eqSet = new Set()\n let gt, lt\n for (const c of sub) {\n if (c.operator === '>' || c.operator === '>=') {\n gt = higherGT(gt, c, options)\n } else if (c.operator === '<' || c.operator === '<=') {\n lt = lowerLT(lt, c, options)\n } else {\n eqSet.add(c.semver)\n }\n }\n\n if (eqSet.size > 1) {\n return null\n }\n\n let gtltComp\n if (gt && lt) {\n gtltComp = compare(gt.semver, lt.semver, options)\n if (gtltComp > 0) {\n return null\n } else if (gtltComp === 0 && (gt.operator !== '>=' || lt.operator !== '<=')) {\n return null\n }\n }\n\n // will iterate one or zero times\n for (const eq of eqSet) {\n if (gt && !satisfies(eq, String(gt), options)) {\n return null\n }\n\n if (lt && !satisfies(eq, String(lt), options)) {\n return null\n }\n\n for (const c of dom) {\n if (!satisfies(eq, String(c), options)) {\n return false\n }\n }\n\n return true\n }\n\n let higher, lower\n let hasDomLT, hasDomGT\n // if the subset has a prerelease, we need a comparator in the superset\n // with the same tuple and a prerelease, or it's not a subset\n let needDomLTPre = lt &&\n !options.includePrerelease &&\n lt.semver.prerelease.length ? lt.semver : false\n let needDomGTPre = gt &&\n !options.includePrerelease &&\n gt.semver.prerelease.length ? gt.semver : false\n // exception: <1.2.3-0 is the same as <1.2.3\n if (needDomLTPre && needDomLTPre.prerelease.length === 1 &&\n lt.operator === '<' && needDomLTPre.prerelease[0] === 0) {\n needDomLTPre = false\n }\n\n for (const c of dom) {\n hasDomGT = hasDomGT || c.operator === '>' || c.operator === '>='\n hasDomLT = hasDomLT || c.operator === '<' || c.operator === '<='\n if (gt) {\n if (needDomGTPre) {\n if (c.semver.prerelease && c.semver.prerelease.length &&\n c.semver.major === needDomGTPre.major &&\n c.semver.minor === needDomGTPre.minor &&\n c.semver.patch === needDomGTPre.patch) {\n needDomGTPre = false\n }\n }\n if (c.operator === '>' || c.operator === '>=') {\n higher = higherGT(gt, c, options)\n if (higher === c && higher !== gt) {\n return false\n }\n } else if (gt.operator === '>=' && !satisfies(gt.semver, String(c), options)) {\n return false\n }\n }\n if (lt) {\n if (needDomLTPre) {\n if (c.semver.prerelease && c.semver.prerelease.length &&\n c.semver.major === needDomLTPre.major &&\n c.semver.minor === needDomLTPre.minor &&\n c.semver.patch === needDomLTPre.patch) {\n needDomLTPre = false\n }\n }\n if (c.operator === '<' || c.operator === '<=') {\n lower = lowerLT(lt, c, options)\n if (lower === c && lower !== lt) {\n return false\n }\n } else if (lt.operator === '<=' && !satisfies(lt.semver, String(c), options)) {\n return false\n }\n }\n if (!c.operator && (lt || gt) && gtltComp !== 0) {\n return false\n }\n }\n\n // if there was a < or >, and nothing in the dom, then must be false\n // UNLESS it was limited by another range in the other direction.\n // Eg, >1.0.0 <1.0.1 is still a subset of <2.0.0\n if (gt && hasDomLT && !lt && gtltComp !== 0) {\n return false\n }\n\n if (lt && hasDomGT && !gt && gtltComp !== 0) {\n return false\n }\n\n // we needed a prerelease range in a specific tuple, but didn't get one\n // then this isn't a subset. eg >=1.2.3-pre is not a subset of >=1.0.0,\n // because it includes prereleases in the 1.2.3 tuple\n if (needDomGTPre || needDomLTPre) {\n return false\n }\n\n return true\n}\n\n// >=1.2.3 is lower than >1.2.3\nconst higherGT = (a, b, options) => {\n if (!a) {\n return b\n }\n const comp = compare(a.semver, b.semver, options)\n return comp > 0 ? a\n : comp < 0 ? b\n : b.operator === '>' && a.operator === '>=' ? b\n : a\n}\n\n// <=1.2.3 is higher than <1.2.3\nconst lowerLT = (a, b, options) => {\n if (!a) {\n return b\n }\n const comp = compare(a.semver, b.semver, options)\n return comp < 0 ? a\n : comp > 0 ? b\n : b.operator === '<' && a.operator === '<=' ? b\n : a\n}\n\nmodule.exports = subset\n", "// just pre-load all the stuff that index.js lazily exports\nconst internalRe = require('./internal/re')\nconst constants = require('./internal/constants')\nconst SemVer = require('./classes/semver')\nconst identifiers = require('./internal/identifiers')\nconst parse = require('./functions/parse')\nconst valid = require('./functions/valid')\nconst clean = require('./functions/clean')\nconst inc = require('./functions/inc')\nconst diff = require('./functions/diff')\nconst major = require('./functions/major')\nconst minor = require('./functions/minor')\nconst patch = require('./functions/patch')\nconst prerelease = require('./functions/prerelease')\nconst compare = require('./functions/compare')\nconst rcompare = require('./functions/rcompare')\nconst compareLoose = require('./functions/compare-loose')\nconst compareBuild = require('./functions/compare-build')\nconst sort = require('./functions/sort')\nconst rsort = require('./functions/rsort')\nconst gt = require('./functions/gt')\nconst lt = require('./functions/lt')\nconst eq = require('./functions/eq')\nconst neq = require('./functions/neq')\nconst gte = require('./functions/gte')\nconst lte = require('./functions/lte')\nconst cmp = require('./functions/cmp')\nconst coerce = require('./functions/coerce')\nconst Comparator = require('./classes/comparator')\nconst Range = require('./classes/range')\nconst satisfies = require('./functions/satisfies')\nconst toComparators = require('./ranges/to-comparators')\nconst maxSatisfying = require('./ranges/max-satisfying')\nconst minSatisfying = require('./ranges/min-satisfying')\nconst minVersion = require('./ranges/min-version')\nconst validRange = require('./ranges/valid')\nconst outside = require('./ranges/outside')\nconst gtr = require('./ranges/gtr')\nconst ltr = require('./ranges/ltr')\nconst intersects = require('./ranges/intersects')\nconst simplifyRange = require('./ranges/simplify')\nconst subset = require('./ranges/subset')\nmodule.exports = {\n parse,\n valid,\n clean,\n inc,\n diff,\n major,\n minor,\n patch,\n prerelease,\n compare,\n rcompare,\n compareLoose,\n compareBuild,\n sort,\n rsort,\n gt,\n lt,\n eq,\n neq,\n gte,\n lte,\n cmp,\n coerce,\n Comparator,\n Range,\n satisfies,\n toComparators,\n maxSatisfying,\n minSatisfying,\n minVersion,\n validRange,\n outside,\n gtr,\n ltr,\n intersects,\n simplifyRange,\n subset,\n SemVer,\n re: internalRe.re,\n src: internalRe.src,\n tokens: internalRe.t,\n SEMVER_SPEC_VERSION: constants.SEMVER_SPEC_VERSION,\n RELEASE_TYPES: constants.RELEASE_TYPES,\n compareIdentifiers: identifiers.compareIdentifiers,\n rcompareIdentifiers: identifiers.rcompareIdentifiers,\n}\n", "const semver = require('semver');\n\nmodule.exports = semver.satisfies(process.version, '>=15.7.0');\n", "const semver = require('semver');\n\nmodule.exports = semver.satisfies(process.version, '>=16.9.0');\n", "const ASYMMETRIC_KEY_DETAILS_SUPPORTED = require('./asymmetricKeyDetailsSupported');\nconst RSA_PSS_KEY_DETAILS_SUPPORTED = require('./rsaPssKeyDetailsSupported');\n\nconst allowedAlgorithmsForKeys = {\n 'ec': ['ES256', 'ES384', 'ES512'],\n 'rsa': ['RS256', 'PS256', 'RS384', 'PS384', 'RS512', 'PS512'],\n 'rsa-pss': ['PS256', 'PS384', 'PS512']\n};\n\nconst allowedCurves = {\n ES256: 'prime256v1',\n ES384: 'secp384r1',\n ES512: 'secp521r1',\n};\n\nmodule.exports = function(algorithm, key) {\n if (!algorithm || !key) return;\n\n const keyType = key.asymmetricKeyType;\n if (!keyType) return;\n\n const allowedAlgorithms = allowedAlgorithmsForKeys[keyType];\n\n if (!allowedAlgorithms) {\n throw new Error(`Unknown key type \"${keyType}\".`);\n }\n\n if (!allowedAlgorithms.includes(algorithm)) {\n throw new Error(`\"alg\" parameter for \"${keyType}\" key type must be one of: ${allowedAlgorithms.join(', ')}.`)\n }\n\n /*\n * Ignore the next block from test coverage because it gets executed\n * conditionally depending on the Node version. Not ignoring it would\n * prevent us from reaching the target % of coverage for versions of\n * Node under 15.7.0.\n */\n /* istanbul ignore next */\n if (ASYMMETRIC_KEY_DETAILS_SUPPORTED) {\n switch (keyType) {\n case 'ec':\n const keyCurve = key.asymmetricKeyDetails.namedCurve;\n const allowedCurve = allowedCurves[algorithm];\n\n if (keyCurve !== allowedCurve) {\n throw new Error(`\"alg\" parameter \"${algorithm}\" requires curve \"${allowedCurve}\".`);\n }\n break;\n\n case 'rsa-pss':\n if (RSA_PSS_KEY_DETAILS_SUPPORTED) {\n const length = parseInt(algorithm.slice(-3), 10);\n const { hashAlgorithm, mgf1HashAlgorithm, saltLength } = key.asymmetricKeyDetails;\n\n if (hashAlgorithm !== `sha${length}` || mgf1HashAlgorithm !== hashAlgorithm) {\n throw new Error(`Invalid key for this operation, its RSA-PSS parameters do not meet the requirements of \"alg\" ${algorithm}.`);\n }\n\n if (saltLength !== undefined && saltLength > length >> 3) {\n throw new Error(`Invalid key for this operation, its RSA-PSS parameter saltLength does not meet the requirements of \"alg\" ${algorithm}.`)\n }\n }\n break;\n }\n }\n}\n", "var semver = require('semver');\n\nmodule.exports = semver.satisfies(process.version, '^6.12.0 || >=8.0.0');\n", "const JsonWebTokenError = require('./lib/JsonWebTokenError');\nconst NotBeforeError = require('./lib/NotBeforeError');\nconst TokenExpiredError = require('./lib/TokenExpiredError');\nconst decode = require('./decode');\nconst timespan = require('./lib/timespan');\nconst validateAsymmetricKey = require('./lib/validateAsymmetricKey');\nconst PS_SUPPORTED = require('./lib/psSupported');\nconst jws = require('jws');\nconst {KeyObject, createSecretKey, createPublicKey} = require(\"crypto\");\n\nconst PUB_KEY_ALGS = ['RS256', 'RS384', 'RS512'];\nconst EC_KEY_ALGS = ['ES256', 'ES384', 'ES512'];\nconst RSA_KEY_ALGS = ['RS256', 'RS384', 'RS512'];\nconst HS_ALGS = ['HS256', 'HS384', 'HS512'];\n\nif (PS_SUPPORTED) {\n PUB_KEY_ALGS.splice(PUB_KEY_ALGS.length, 0, 'PS256', 'PS384', 'PS512');\n RSA_KEY_ALGS.splice(RSA_KEY_ALGS.length, 0, 'PS256', 'PS384', 'PS512');\n}\n\nmodule.exports = function (jwtString, secretOrPublicKey, options, callback) {\n if ((typeof options === 'function') && !callback) {\n callback = options;\n options = {};\n }\n\n if (!options) {\n options = {};\n }\n\n //clone this object since we are going to mutate it.\n options = Object.assign({}, options);\n\n let done;\n\n if (callback) {\n done = callback;\n } else {\n done = function(err, data) {\n if (err) throw err;\n return data;\n };\n }\n\n if (options.clockTimestamp && typeof options.clockTimestamp !== 'number') {\n return done(new JsonWebTokenError('clockTimestamp must be a number'));\n }\n\n if (options.nonce !== undefined && (typeof options.nonce !== 'string' || options.nonce.trim() === '')) {\n return done(new JsonWebTokenError('nonce must be a non-empty string'));\n }\n\n if (options.allowInvalidAsymmetricKeyTypes !== undefined && typeof options.allowInvalidAsymmetricKeyTypes !== 'boolean') {\n return done(new JsonWebTokenError('allowInvalidAsymmetricKeyTypes must be a boolean'));\n }\n\n const clockTimestamp = options.clockTimestamp || Math.floor(Date.now() / 1000);\n\n if (!jwtString){\n return done(new JsonWebTokenError('jwt must be provided'));\n }\n\n if (typeof jwtString !== 'string') {\n return done(new JsonWebTokenError('jwt must be a string'));\n }\n\n const parts = jwtString.split('.');\n\n if (parts.length !== 3){\n return done(new JsonWebTokenError('jwt malformed'));\n }\n\n let decodedToken;\n\n try {\n decodedToken = decode(jwtString, { complete: true });\n } catch(err) {\n return done(err);\n }\n\n if (!decodedToken) {\n return done(new JsonWebTokenError('invalid token'));\n }\n\n const header = decodedToken.header;\n let getSecret;\n\n if(typeof secretOrPublicKey === 'function') {\n if(!callback) {\n return done(new JsonWebTokenError('verify must be called asynchronous if secret or public key is provided as a callback'));\n }\n\n getSecret = secretOrPublicKey;\n }\n else {\n getSecret = function(header, secretCallback) {\n return secretCallback(null, secretOrPublicKey);\n };\n }\n\n return getSecret(header, function(err, secretOrPublicKey) {\n if(err) {\n return done(new JsonWebTokenError('error in secret or public key callback: ' + err.message));\n }\n\n const hasSignature = parts[2].trim() !== '';\n\n if (!hasSignature && secretOrPublicKey){\n return done(new JsonWebTokenError('jwt signature is required'));\n }\n\n if (hasSignature && !secretOrPublicKey) {\n return done(new JsonWebTokenError('secret or public key must be provided'));\n }\n\n if (!hasSignature && !options.algorithms) {\n return done(new JsonWebTokenError('please specify \"none\" in \"algorithms\" to verify unsigned tokens'));\n }\n\n if (secretOrPublicKey != null && !(secretOrPublicKey instanceof KeyObject)) {\n try {\n secretOrPublicKey = createPublicKey(secretOrPublicKey);\n } catch (_) {\n try {\n secretOrPublicKey = createSecretKey(typeof secretOrPublicKey === 'string' ? Buffer.from(secretOrPublicKey) : secretOrPublicKey);\n } catch (_) {\n return done(new JsonWebTokenError('secretOrPublicKey is not valid key material'))\n }\n }\n }\n\n if (!options.algorithms) {\n if (secretOrPublicKey.type === 'secret') {\n options.algorithms = HS_ALGS;\n } else if (['rsa', 'rsa-pss'].includes(secretOrPublicKey.asymmetricKeyType)) {\n options.algorithms = RSA_KEY_ALGS\n } else if (secretOrPublicKey.asymmetricKeyType === 'ec') {\n options.algorithms = EC_KEY_ALGS\n } else {\n options.algorithms = PUB_KEY_ALGS\n }\n }\n\n if (options.algorithms.indexOf(decodedToken.header.alg) === -1) {\n return done(new JsonWebTokenError('invalid algorithm'));\n }\n\n if (header.alg.startsWith('HS') && secretOrPublicKey.type !== 'secret') {\n return done(new JsonWebTokenError((`secretOrPublicKey must be a symmetric key when using ${header.alg}`)))\n } else if (/^(?:RS|PS|ES)/.test(header.alg) && secretOrPublicKey.type !== 'public') {\n return done(new JsonWebTokenError((`secretOrPublicKey must be an asymmetric key when using ${header.alg}`)))\n }\n\n if (!options.allowInvalidAsymmetricKeyTypes) {\n try {\n validateAsymmetricKey(header.alg, secretOrPublicKey);\n } catch (e) {\n return done(e);\n }\n }\n\n let valid;\n\n try {\n valid = jws.verify(jwtString, decodedToken.header.alg, secretOrPublicKey);\n } catch (e) {\n return done(e);\n }\n\n if (!valid) {\n return done(new JsonWebTokenError('invalid signature'));\n }\n\n const payload = decodedToken.payload;\n\n if (typeof payload.nbf !== 'undefined' && !options.ignoreNotBefore) {\n if (typeof payload.nbf !== 'number') {\n return done(new JsonWebTokenError('invalid nbf value'));\n }\n if (payload.nbf > clockTimestamp + (options.clockTolerance || 0)) {\n return done(new NotBeforeError('jwt not active', new Date(payload.nbf * 1000)));\n }\n }\n\n if (typeof payload.exp !== 'undefined' && !options.ignoreExpiration) {\n if (typeof payload.exp !== 'number') {\n return done(new JsonWebTokenError('invalid exp value'));\n }\n if (clockTimestamp >= payload.exp + (options.clockTolerance || 0)) {\n return done(new TokenExpiredError('jwt expired', new Date(payload.exp * 1000)));\n }\n }\n\n if (options.audience) {\n const audiences = Array.isArray(options.audience) ? options.audience : [options.audience];\n const target = Array.isArray(payload.aud) ? payload.aud : [payload.aud];\n\n const match = target.some(function (targetAudience) {\n return audiences.some(function (audience) {\n return audience instanceof RegExp ? audience.test(targetAudience) : audience === targetAudience;\n });\n });\n\n if (!match) {\n return done(new JsonWebTokenError('jwt audience invalid. expected: ' + audiences.join(' or ')));\n }\n }\n\n if (options.issuer) {\n const invalid_issuer =\n (typeof options.issuer === 'string' && payload.iss !== options.issuer) ||\n (Array.isArray(options.issuer) && options.issuer.indexOf(payload.iss) === -1);\n\n if (invalid_issuer) {\n return done(new JsonWebTokenError('jwt issuer invalid. expected: ' + options.issuer));\n }\n }\n\n if (options.subject) {\n if (payload.sub !== options.subject) {\n return done(new JsonWebTokenError('jwt subject invalid. expected: ' + options.subject));\n }\n }\n\n if (options.jwtid) {\n if (payload.jti !== options.jwtid) {\n return done(new JsonWebTokenError('jwt jwtid invalid. expected: ' + options.jwtid));\n }\n }\n\n if (options.nonce) {\n if (payload.nonce !== options.nonce) {\n return done(new JsonWebTokenError('jwt nonce invalid. expected: ' + options.nonce));\n }\n }\n\n if (options.maxAge) {\n if (typeof payload.iat !== 'number') {\n return done(new JsonWebTokenError('iat required when maxAge is specified'));\n }\n\n const maxAgeTimestamp = timespan(options.maxAge, payload.iat);\n if (typeof maxAgeTimestamp === 'undefined') {\n return done(new JsonWebTokenError('\"maxAge\" should be a number of seconds or string representing a timespan eg: \"1d\", \"20h\", 60'));\n }\n if (clockTimestamp >= maxAgeTimestamp + (options.clockTolerance || 0)) {\n return done(new TokenExpiredError('maxAge exceeded', new Date(maxAgeTimestamp * 1000)));\n }\n }\n\n if (options.complete === true) {\n const signature = decodedToken.signature;\n\n return done(null, {\n header: header,\n payload: payload,\n signature: signature\n });\n }\n\n return done(null, payload);\n });\n};\n", "/**\n * lodash (Custom Build) \n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors \n * Released under MIT license \n * Based on Underscore.js 1.8.3 \n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0,\n MAX_SAFE_INTEGER = 9007199254740991,\n MAX_INTEGER = 1.7976931348623157e+308,\n NAN = 0 / 0;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]';\n\n/** Used to match leading and trailing whitespace. */\nvar reTrim = /^\\s+|\\s+$/g;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\n/**\n * A specialized version of `_.map` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction arrayMap(array, iteratee) {\n var index = -1,\n length = array ? array.length : 0,\n result = Array(length);\n\n while (++index < length) {\n result[index] = iteratee(array[index], index, array);\n }\n return result;\n}\n\n/**\n * The base implementation of `_.findIndex` and `_.findLastIndex` without\n * support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} predicate The function invoked per iteration.\n * @param {number} fromIndex The index to search from.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction baseFindIndex(array, predicate, fromIndex, fromRight) {\n var length = array.length,\n index = fromIndex + (fromRight ? 1 : -1);\n\n while ((fromRight ? index-- : ++index < length)) {\n if (predicate(array[index], index, array)) {\n return index;\n }\n }\n return -1;\n}\n\n/**\n * The base implementation of `_.indexOf` without `fromIndex` bounds checks.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction baseIndexOf(array, value, fromIndex) {\n if (value !== value) {\n return baseFindIndex(array, baseIsNaN, fromIndex);\n }\n var index = fromIndex - 1,\n length = array.length;\n\n while (++index < length) {\n if (array[index] === value) {\n return index;\n }\n }\n return -1;\n}\n\n/**\n * The base implementation of `_.isNaN` without support for number objects.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.\n */\nfunction baseIsNaN(value) {\n return value !== value;\n}\n\n/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n}\n\n/**\n * The base implementation of `_.values` and `_.valuesIn` which creates an\n * array of `object` property values corresponding to the property names\n * of `props`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array} props The property names to get values for.\n * @returns {Object} Returns the array of property values.\n */\nfunction baseValues(object, props) {\n return arrayMap(props, function(key) {\n return object[key];\n });\n}\n\n/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n}\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeKeys = overArg(Object.keys, Object),\n nativeMax = Math.max;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n // Safari 8.1 makes `arguments.callee` enumerable in strict mode.\n // Safari 9 makes `arguments.length` enumerable in strict mode.\n var result = (isArray(value) || isArguments(value))\n ? baseTimes(value.length, String)\n : [];\n\n var length = result.length,\n skipIndexes = !!length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (key == 'length' || isIndex(key, length)))) {\n result.push(key);\n }\n }\n return result;\n}\n\n/**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeys(object) {\n if (!isPrototype(object)) {\n return nativeKeys(object);\n }\n var result = [];\n for (var key in Object(object)) {\n if (hasOwnProperty.call(object, key) && key != 'constructor') {\n result.push(key);\n }\n }\n return result;\n}\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n length = length == null ? MAX_SAFE_INTEGER : length;\n return !!length &&\n (typeof value == 'number' || reIsUint.test(value)) &&\n (value > -1 && value % 1 == 0 && value < length);\n}\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n}\n\n/**\n * Checks if `value` is in `collection`. If `collection` is a string, it's\n * checked for a substring of `value`, otherwise\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * is used for equality comparisons. If `fromIndex` is negative, it's used as\n * the offset from the end of `collection`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object|string} collection The collection to inspect.\n * @param {*} value The value to search for.\n * @param {number} [fromIndex=0] The index to search from.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.reduce`.\n * @returns {boolean} Returns `true` if `value` is found, else `false`.\n * @example\n *\n * _.includes([1, 2, 3], 1);\n * // => true\n *\n * _.includes([1, 2, 3], 1, 2);\n * // => false\n *\n * _.includes({ 'a': 1, 'b': 2 }, 1);\n * // => true\n *\n * _.includes('abcd', 'bc');\n * // => true\n */\nfunction includes(collection, value, fromIndex, guard) {\n collection = isArrayLike(collection) ? collection : values(collection);\n fromIndex = (fromIndex && !guard) ? toInteger(fromIndex) : 0;\n\n var length = collection.length;\n if (fromIndex < 0) {\n fromIndex = nativeMax(length + fromIndex, 0);\n }\n return isString(collection)\n ? (fromIndex <= length && collection.indexOf(value, fromIndex) > -1)\n : (!!length && baseIndexOf(collection, value, fromIndex) > -1);\n}\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nfunction isArguments(value) {\n // Safari 8.1 makes `arguments.callee` enumerable in strict mode.\n return isArrayLikeObject(value) && hasOwnProperty.call(value, 'callee') &&\n (!propertyIsEnumerable.call(value, 'callee') || objectToString.call(value) == argsTag);\n}\n\n/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n}\n\n/**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array-like object,\n * else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\nfunction isArrayLikeObject(value) {\n return isObjectLike(value) && isArrayLike(value);\n}\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 8-9 which returns 'object' for typed array and other constructors.\n var tag = isObject(value) ? objectToString.call(value) : '';\n return tag == funcTag || tag == genTag;\n}\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return !!value && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return !!value && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is classified as a `String` primitive or object.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a string, else `false`.\n * @example\n *\n * _.isString('abc');\n * // => true\n *\n * _.isString(1);\n * // => false\n */\nfunction isString(value) {\n return typeof value == 'string' ||\n (!isArray(value) && isObjectLike(value) && objectToString.call(value) == stringTag);\n}\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && objectToString.call(value) == symbolTag);\n}\n\n/**\n * Converts `value` to a finite number.\n *\n * @static\n * @memberOf _\n * @since 4.12.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted number.\n * @example\n *\n * _.toFinite(3.2);\n * // => 3.2\n *\n * _.toFinite(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toFinite(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toFinite('3.2');\n * // => 3.2\n */\nfunction toFinite(value) {\n if (!value) {\n return value === 0 ? value : 0;\n }\n value = toNumber(value);\n if (value === INFINITY || value === -INFINITY) {\n var sign = (value < 0 ? -1 : 1);\n return sign * MAX_INTEGER;\n }\n return value === value ? value : 0;\n}\n\n/**\n * Converts `value` to an integer.\n *\n * **Note:** This method is loosely based on\n * [`ToInteger`](http://www.ecma-international.org/ecma-262/7.0/#sec-tointeger).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.toInteger(3.2);\n * // => 3\n *\n * _.toInteger(Number.MIN_VALUE);\n * // => 0\n *\n * _.toInteger(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toInteger('3.2');\n * // => 3\n */\nfunction toInteger(value) {\n var result = toFinite(value),\n remainder = result % 1;\n\n return result === result ? (remainder ? result - remainder : result) : 0;\n}\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\nfunction toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? (other + '') : other;\n }\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n value = value.replace(reTrim, '');\n var isBinary = reIsBinary.test(value);\n return (isBinary || reIsOctal.test(value))\n ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n : (reIsBadHex.test(value) ? NAN : +value);\n}\n\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\nfunction keys(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n}\n\n/**\n * Creates an array of the own enumerable string keyed property values of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property values.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.values(new Foo);\n * // => [1, 2] (iteration order is not guaranteed)\n *\n * _.values('hi');\n * // => ['h', 'i']\n */\nfunction values(object) {\n return object ? baseValues(object, keys(object)) : [];\n}\n\nmodule.exports = includes;\n", "/**\n * lodash 3.0.3 (Custom Build) \n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright 2012-2016 The Dojo Foundation \n * Based on Underscore.js 1.8.3 \n * Copyright 2009-2016 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n * Available under MIT license \n */\n\n/** `Object#toString` result references. */\nvar boolTag = '[object Boolean]';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/**\n * Checks if `value` is classified as a boolean primitive or object.\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`.\n * @example\n *\n * _.isBoolean(false);\n * // => true\n *\n * _.isBoolean(null);\n * // => false\n */\nfunction isBoolean(value) {\n return value === true || value === false ||\n (isObjectLike(value) && objectToString.call(value) == boolTag);\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return !!value && typeof value == 'object';\n}\n\nmodule.exports = isBoolean;\n", "/**\n * lodash (Custom Build) \n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors \n * Released under MIT license \n * Based on Underscore.js 1.8.3 \n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0,\n MAX_INTEGER = 1.7976931348623157e+308,\n NAN = 0 / 0;\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/** Used to match leading and trailing whitespace. */\nvar reTrim = /^\\s+|\\s+$/g;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/**\n * Checks if `value` is an integer.\n *\n * **Note:** This method is based on\n * [`Number.isInteger`](https://mdn.io/Number/isInteger).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an integer, else `false`.\n * @example\n *\n * _.isInteger(3);\n * // => true\n *\n * _.isInteger(Number.MIN_VALUE);\n * // => false\n *\n * _.isInteger(Infinity);\n * // => false\n *\n * _.isInteger('3');\n * // => false\n */\nfunction isInteger(value) {\n return typeof value == 'number' && value == toInteger(value);\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return !!value && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return !!value && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && objectToString.call(value) == symbolTag);\n}\n\n/**\n * Converts `value` to a finite number.\n *\n * @static\n * @memberOf _\n * @since 4.12.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted number.\n * @example\n *\n * _.toFinite(3.2);\n * // => 3.2\n *\n * _.toFinite(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toFinite(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toFinite('3.2');\n * // => 3.2\n */\nfunction toFinite(value) {\n if (!value) {\n return value === 0 ? value : 0;\n }\n value = toNumber(value);\n if (value === INFINITY || value === -INFINITY) {\n var sign = (value < 0 ? -1 : 1);\n return sign * MAX_INTEGER;\n }\n return value === value ? value : 0;\n}\n\n/**\n * Converts `value` to an integer.\n *\n * **Note:** This method is loosely based on\n * [`ToInteger`](http://www.ecma-international.org/ecma-262/7.0/#sec-tointeger).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.toInteger(3.2);\n * // => 3\n *\n * _.toInteger(Number.MIN_VALUE);\n * // => 0\n *\n * _.toInteger(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toInteger('3.2');\n * // => 3\n */\nfunction toInteger(value) {\n var result = toFinite(value),\n remainder = result % 1;\n\n return result === result ? (remainder ? result - remainder : result) : 0;\n}\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\nfunction toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? (other + '') : other;\n }\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n value = value.replace(reTrim, '');\n var isBinary = reIsBinary.test(value);\n return (isBinary || reIsOctal.test(value))\n ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n : (reIsBadHex.test(value) ? NAN : +value);\n}\n\nmodule.exports = isInteger;\n", "/**\n * lodash 3.0.3 (Custom Build) \n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright 2012-2016 The Dojo Foundation \n * Based on Underscore.js 1.8.3 \n * Copyright 2009-2016 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n * Available under MIT license \n */\n\n/** `Object#toString` result references. */\nvar numberTag = '[object Number]';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return !!value && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is classified as a `Number` primitive or object.\n *\n * **Note:** To exclude `Infinity`, `-Infinity`, and `NaN`, which are classified\n * as numbers, use the `_.isFinite` method.\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`.\n * @example\n *\n * _.isNumber(3);\n * // => true\n *\n * _.isNumber(Number.MIN_VALUE);\n * // => true\n *\n * _.isNumber(Infinity);\n * // => true\n *\n * _.isNumber('3');\n * // => false\n */\nfunction isNumber(value) {\n return typeof value == 'number' ||\n (isObjectLike(value) && objectToString.call(value) == numberTag);\n}\n\nmodule.exports = isNumber;\n", "/**\n * lodash (Custom Build) \n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors \n * Released under MIT license \n * Based on Underscore.js 1.8.3 \n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** `Object#toString` result references. */\nvar objectTag = '[object Object]';\n\n/**\n * Checks if `value` is a host object in IE < 9.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a host object, else `false`.\n */\nfunction isHostObject(value) {\n // Many host objects are `Object` objects that can coerce to strings\n // despite having improperly defined `toString` methods.\n var result = false;\n if (value != null && typeof value.toString != 'function') {\n try {\n result = !!(value + '');\n } catch (e) {}\n }\n return result;\n}\n\n/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n}\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to infer the `Object` constructor. */\nvar objectCtorString = funcToString.call(Object);\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar getPrototype = overArg(Object.getPrototypeOf, Object);\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return !!value && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is a plain object, that is, an object created by the\n * `Object` constructor or one with a `[[Prototype]]` of `null`.\n *\n * @static\n * @memberOf _\n * @since 0.8.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * _.isPlainObject(new Foo);\n * // => false\n *\n * _.isPlainObject([1, 2, 3]);\n * // => false\n *\n * _.isPlainObject({ 'x': 0, 'y': 0 });\n * // => true\n *\n * _.isPlainObject(Object.create(null));\n * // => true\n */\nfunction isPlainObject(value) {\n if (!isObjectLike(value) ||\n objectToString.call(value) != objectTag || isHostObject(value)) {\n return false;\n }\n var proto = getPrototype(value);\n if (proto === null) {\n return true;\n }\n var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor;\n return (typeof Ctor == 'function' &&\n Ctor instanceof Ctor && funcToString.call(Ctor) == objectCtorString);\n}\n\nmodule.exports = isPlainObject;\n", "/**\n * lodash 4.0.1 (Custom Build) \n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright 2012-2016 The Dojo Foundation \n * Based on Underscore.js 1.8.3 \n * Copyright 2009-2016 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n * Available under MIT license \n */\n\n/** `Object#toString` result references. */\nvar stringTag = '[object String]';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @type Function\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return !!value && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is classified as a `String` primitive or object.\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`.\n * @example\n *\n * _.isString('abc');\n * // => true\n *\n * _.isString(1);\n * // => false\n */\nfunction isString(value) {\n return typeof value == 'string' ||\n (!isArray(value) && isObjectLike(value) && objectToString.call(value) == stringTag);\n}\n\nmodule.exports = isString;\n", "/**\n * lodash (Custom Build) \n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors \n * Released under MIT license \n * Based on Underscore.js 1.8.3 \n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as the `TypeError` message for \"Functions\" methods. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0,\n MAX_INTEGER = 1.7976931348623157e+308,\n NAN = 0 / 0;\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/** Used to match leading and trailing whitespace. */\nvar reTrim = /^\\s+|\\s+$/g;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/**\n * Creates a function that invokes `func`, with the `this` binding and arguments\n * of the created function, while it's called less than `n` times. Subsequent\n * calls to the created function return the result of the last `func` invocation.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {number} n The number of calls at which `func` is no longer invoked.\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new restricted function.\n * @example\n *\n * jQuery(element).on('click', _.before(5, addContactToList));\n * // => Allows adding up to 4 contacts to the list.\n */\nfunction before(n, func) {\n var result;\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n n = toInteger(n);\n return function() {\n if (--n > 0) {\n result = func.apply(this, arguments);\n }\n if (n <= 1) {\n func = undefined;\n }\n return result;\n };\n}\n\n/**\n * Creates a function that is restricted to invoking `func` once. Repeat calls\n * to the function return the value of the first invocation. The `func` is\n * invoked with the `this` binding and arguments of the created function.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new restricted function.\n * @example\n *\n * var initialize = _.once(createApplication);\n * initialize();\n * initialize();\n * // => `createApplication` is invoked once\n */\nfunction once(func) {\n return before(2, func);\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return !!value && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return !!value && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && objectToString.call(value) == symbolTag);\n}\n\n/**\n * Converts `value` to a finite number.\n *\n * @static\n * @memberOf _\n * @since 4.12.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted number.\n * @example\n *\n * _.toFinite(3.2);\n * // => 3.2\n *\n * _.toFinite(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toFinite(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toFinite('3.2');\n * // => 3.2\n */\nfunction toFinite(value) {\n if (!value) {\n return value === 0 ? value : 0;\n }\n value = toNumber(value);\n if (value === INFINITY || value === -INFINITY) {\n var sign = (value < 0 ? -1 : 1);\n return sign * MAX_INTEGER;\n }\n return value === value ? value : 0;\n}\n\n/**\n * Converts `value` to an integer.\n *\n * **Note:** This method is loosely based on\n * [`ToInteger`](http://www.ecma-international.org/ecma-262/7.0/#sec-tointeger).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.toInteger(3.2);\n * // => 3\n *\n * _.toInteger(Number.MIN_VALUE);\n * // => 0\n *\n * _.toInteger(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toInteger('3.2');\n * // => 3\n */\nfunction toInteger(value) {\n var result = toFinite(value),\n remainder = result % 1;\n\n return result === result ? (remainder ? result - remainder : result) : 0;\n}\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\nfunction toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? (other + '') : other;\n }\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n value = value.replace(reTrim, '');\n var isBinary = reIsBinary.test(value);\n return (isBinary || reIsOctal.test(value))\n ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n : (reIsBadHex.test(value) ? NAN : +value);\n}\n\nmodule.exports = once;\n", "const timespan = require('./lib/timespan');\nconst PS_SUPPORTED = require('./lib/psSupported');\nconst validateAsymmetricKey = require('./lib/validateAsymmetricKey');\nconst jws = require('jws');\nconst includes = require('lodash.includes');\nconst isBoolean = require('lodash.isboolean');\nconst isInteger = require('lodash.isinteger');\nconst isNumber = require('lodash.isnumber');\nconst isPlainObject = require('lodash.isplainobject');\nconst isString = require('lodash.isstring');\nconst once = require('lodash.once');\nconst { KeyObject, createSecretKey, createPrivateKey } = require('crypto')\n\nconst SUPPORTED_ALGS = ['RS256', 'RS384', 'RS512', 'ES256', 'ES384', 'ES512', 'HS256', 'HS384', 'HS512', 'none'];\nif (PS_SUPPORTED) {\n SUPPORTED_ALGS.splice(3, 0, 'PS256', 'PS384', 'PS512');\n}\n\nconst sign_options_schema = {\n expiresIn: { isValid: function(value) { return isInteger(value) || (isString(value) && value); }, message: '\"expiresIn\" should be a number of seconds or string representing a timespan' },\n notBefore: { isValid: function(value) { return isInteger(value) || (isString(value) && value); }, message: '\"notBefore\" should be a number of seconds or string representing a timespan' },\n audience: { isValid: function(value) { return isString(value) || Array.isArray(value); }, message: '\"audience\" must be a string or array' },\n algorithm: { isValid: includes.bind(null, SUPPORTED_ALGS), message: '\"algorithm\" must be a valid string enum value' },\n header: { isValid: isPlainObject, message: '\"header\" must be an object' },\n encoding: { isValid: isString, message: '\"encoding\" must be a string' },\n issuer: { isValid: isString, message: '\"issuer\" must be a string' },\n subject: { isValid: isString, message: '\"subject\" must be a string' },\n jwtid: { isValid: isString, message: '\"jwtid\" must be a string' },\n noTimestamp: { isValid: isBoolean, message: '\"noTimestamp\" must be a boolean' },\n keyid: { isValid: isString, message: '\"keyid\" must be a string' },\n mutatePayload: { isValid: isBoolean, message: '\"mutatePayload\" must be a boolean' },\n allowInsecureKeySizes: { isValid: isBoolean, message: '\"allowInsecureKeySizes\" must be a boolean'},\n allowInvalidAsymmetricKeyTypes: { isValid: isBoolean, message: '\"allowInvalidAsymmetricKeyTypes\" must be a boolean'}\n};\n\nconst registered_claims_schema = {\n iat: { isValid: isNumber, message: '\"iat\" should be a number of seconds' },\n exp: { isValid: isNumber, message: '\"exp\" should be a number of seconds' },\n nbf: { isValid: isNumber, message: '\"nbf\" should be a number of seconds' }\n};\n\nfunction validate(schema, allowUnknown, object, parameterName) {\n if (!isPlainObject(object)) {\n throw new Error('Expected \"' + parameterName + '\" to be a plain object.');\n }\n Object.keys(object)\n .forEach(function(key) {\n const validator = schema[key];\n if (!validator) {\n if (!allowUnknown) {\n throw new Error('\"' + key + '\" is not allowed in \"' + parameterName + '\"');\n }\n return;\n }\n if (!validator.isValid(object[key])) {\n throw new Error(validator.message);\n }\n });\n}\n\nfunction validateOptions(options) {\n return validate(sign_options_schema, false, options, 'options');\n}\n\nfunction validatePayload(payload) {\n return validate(registered_claims_schema, true, payload, 'payload');\n}\n\nconst options_to_payload = {\n 'audience': 'aud',\n 'issuer': 'iss',\n 'subject': 'sub',\n 'jwtid': 'jti'\n};\n\nconst options_for_objects = [\n 'expiresIn',\n 'notBefore',\n 'noTimestamp',\n 'audience',\n 'issuer',\n 'subject',\n 'jwtid',\n];\n\nmodule.exports = function (payload, secretOrPrivateKey, options, callback) {\n if (typeof options === 'function') {\n callback = options;\n options = {};\n } else {\n options = options || {};\n }\n\n const isObjectPayload = typeof payload === 'object' &&\n !Buffer.isBuffer(payload);\n\n const header = Object.assign({\n alg: options.algorithm || 'HS256',\n typ: isObjectPayload ? 'JWT' : undefined,\n kid: options.keyid\n }, options.header);\n\n function failure(err) {\n if (callback) {\n return callback(err);\n }\n throw err;\n }\n\n if (!secretOrPrivateKey && options.algorithm !== 'none') {\n return failure(new Error('secretOrPrivateKey must have a value'));\n }\n\n if (secretOrPrivateKey != null && !(secretOrPrivateKey instanceof KeyObject)) {\n try {\n secretOrPrivateKey = createPrivateKey(secretOrPrivateKey)\n } catch (_) {\n try {\n secretOrPrivateKey = createSecretKey(typeof secretOrPrivateKey === 'string' ? Buffer.from(secretOrPrivateKey) : secretOrPrivateKey)\n } catch (_) {\n return failure(new Error('secretOrPrivateKey is not valid key material'));\n }\n }\n }\n\n if (header.alg.startsWith('HS') && secretOrPrivateKey.type !== 'secret') {\n return failure(new Error((`secretOrPrivateKey must be a symmetric key when using ${header.alg}`)))\n } else if (/^(?:RS|PS|ES)/.test(header.alg)) {\n if (secretOrPrivateKey.type !== 'private') {\n return failure(new Error((`secretOrPrivateKey must be an asymmetric key when using ${header.alg}`)))\n }\n if (!options.allowInsecureKeySizes &&\n !header.alg.startsWith('ES') &&\n secretOrPrivateKey.asymmetricKeyDetails !== undefined && //KeyObject.asymmetricKeyDetails is supported in Node 15+\n secretOrPrivateKey.asymmetricKeyDetails.modulusLength < 2048) {\n return failure(new Error(`secretOrPrivateKey has a minimum key size of 2048 bits for ${header.alg}`));\n }\n }\n\n if (typeof payload === 'undefined') {\n return failure(new Error('payload is required'));\n } else if (isObjectPayload) {\n try {\n validatePayload(payload);\n }\n catch (error) {\n return failure(error);\n }\n if (!options.mutatePayload) {\n payload = Object.assign({},payload);\n }\n } else {\n const invalid_options = options_for_objects.filter(function (opt) {\n return typeof options[opt] !== 'undefined';\n });\n\n if (invalid_options.length > 0) {\n return failure(new Error('invalid ' + invalid_options.join(',') + ' option for ' + (typeof payload ) + ' payload'));\n }\n }\n\n if (typeof payload.exp !== 'undefined' && typeof options.expiresIn !== 'undefined') {\n return failure(new Error('Bad \"options.expiresIn\" option the payload already has an \"exp\" property.'));\n }\n\n if (typeof payload.nbf !== 'undefined' && typeof options.notBefore !== 'undefined') {\n return failure(new Error('Bad \"options.notBefore\" option the payload already has an \"nbf\" property.'));\n }\n\n try {\n validateOptions(options);\n }\n catch (error) {\n return failure(error);\n }\n\n if (!options.allowInvalidAsymmetricKeyTypes) {\n try {\n validateAsymmetricKey(header.alg, secretOrPrivateKey);\n } catch (error) {\n return failure(error);\n }\n }\n\n const timestamp = payload.iat || Math.floor(Date.now() / 1000);\n\n if (options.noTimestamp) {\n delete payload.iat;\n } else if (isObjectPayload) {\n payload.iat = timestamp;\n }\n\n if (typeof options.notBefore !== 'undefined') {\n try {\n payload.nbf = timespan(options.notBefore, timestamp);\n }\n catch (err) {\n return failure(err);\n }\n if (typeof payload.nbf === 'undefined') {\n return failure(new Error('\"notBefore\" should be a number of seconds or string representing a timespan eg: \"1d\", \"20h\", 60'));\n }\n }\n\n if (typeof options.expiresIn !== 'undefined' && typeof payload === 'object') {\n try {\n payload.exp = timespan(options.expiresIn, timestamp);\n }\n catch (err) {\n return failure(err);\n }\n if (typeof payload.exp === 'undefined') {\n return failure(new Error('\"expiresIn\" should be a number of seconds or string representing a timespan eg: \"1d\", \"20h\", 60'));\n }\n }\n\n Object.keys(options_to_payload).forEach(function (key) {\n const claim = options_to_payload[key];\n if (typeof options[key] !== 'undefined') {\n if (typeof payload[claim] !== 'undefined') {\n return failure(new Error('Bad \"options.' + key + '\" option. The payload already has an \"' + claim + '\" property.'));\n }\n payload[claim] = options[key];\n }\n });\n\n const encoding = options.encoding || 'utf8';\n\n if (typeof callback === 'function') {\n callback = callback && once(callback);\n\n jws.createSign({\n header: header,\n privateKey: secretOrPrivateKey,\n payload: payload,\n encoding: encoding\n }).once('error', callback)\n .once('done', function (signature) {\n // TODO: Remove in favor of the modulus length check before signing once node 15+ is the minimum supported version\n if(!options.allowInsecureKeySizes && /^(?:RS|PS)/.test(header.alg) && signature.length < 256) {\n return callback(new Error(`secretOrPrivateKey has a minimum key size of 2048 bits for ${header.alg}`))\n }\n callback(null, signature);\n });\n } else {\n let signature = jws.sign({header: header, payload: payload, secret: secretOrPrivateKey, encoding: encoding});\n // TODO: Remove in favor of the modulus length check before signing once node 15+ is the minimum supported version\n if(!options.allowInsecureKeySizes && /^(?:RS|PS)/.test(header.alg) && signature.length < 256) {\n throw new Error(`secretOrPrivateKey has a minimum key size of 2048 bits for ${header.alg}`)\n }\n return signature\n }\n};\n", "module.exports = {\n decode: require('./decode'),\n verify: require('./verify'),\n sign: require('./sign'),\n JsonWebTokenError: require('./lib/JsonWebTokenError'),\n NotBeforeError: require('./lib/NotBeforeError'),\n TokenExpiredError: require('./lib/TokenExpiredError'),\n};\n", "import fs from 'node:fs';\n\nlet isDockerCached;\n\nfunction hasDockerEnv() {\n\ttry {\n\t\tfs.statSync('/.dockerenv');\n\t\treturn true;\n\t} catch {\n\t\treturn false;\n\t}\n}\n\nfunction hasDockerCGroup() {\n\ttry {\n\t\treturn fs.readFileSync('/proc/self/cgroup', 'utf8').includes('docker');\n\t} catch {\n\t\treturn false;\n\t}\n}\n\nexport default function isDocker() {\n\t// TODO: Use `??=` when targeting Node.js 16.\n\tif (isDockerCached === undefined) {\n\t\tisDockerCached = hasDockerEnv() || hasDockerCGroup();\n\t}\n\n\treturn isDockerCached;\n}\n", "import fs from 'node:fs';\nimport isDocker from 'is-docker';\n\nlet cachedResult;\n\n// Podman detection\nconst hasContainerEnv = () => {\n\ttry {\n\t\tfs.statSync('/run/.containerenv');\n\t\treturn true;\n\t} catch {\n\t\treturn false;\n\t}\n};\n\nexport default function isInsideContainer() {\n\t// TODO: Use `??=` when targeting Node.js 16.\n\tif (cachedResult === undefined) {\n\t\tcachedResult = hasContainerEnv() || isDocker();\n\t}\n\n\treturn cachedResult;\n}\n", "import process from 'node:process';\nimport os from 'node:os';\nimport fs from 'node:fs';\nimport isInsideContainer from 'is-inside-container';\n\nconst isWsl = () => {\n\tif (process.platform !== 'linux') {\n\t\treturn false;\n\t}\n\n\tif (os.release().toLowerCase().includes('microsoft')) {\n\t\tif (isInsideContainer()) {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t}\n\n\ttry {\n\t\treturn fs.readFileSync('/proc/version', 'utf8').toLowerCase().includes('microsoft')\n\t\t\t? !isInsideContainer() : false;\n\t} catch {\n\t\treturn false;\n\t}\n};\n\nexport default process.env.__IS_WSL_TEST__ ? isWsl : isWsl();\n", "export default function defineLazyProperty(object, propertyName, valueGetter) {\n\tconst define = value => Object.defineProperty(object, propertyName, {value, enumerable: true, writable: true});\n\n\tObject.defineProperty(object, propertyName, {\n\t\tconfigurable: true,\n\t\tenumerable: true,\n\t\tget() {\n\t\t\tconst result = valueGetter();\n\t\t\tdefine(result);\n\t\t\treturn result;\n\t\t},\n\t\tset(value) {\n\t\t\tdefine(value);\n\t\t}\n\t});\n\n\treturn object;\n}\n", "import {promisify} from 'node:util';\nimport process from 'node:process';\nimport {execFile} from 'node:child_process';\n\nconst execFileAsync = promisify(execFile);\n\nexport default async function defaultBrowserId() {\n\tif (process.platform !== 'darwin') {\n\t\tthrow new Error('macOS only');\n\t}\n\n\tconst {stdout} = await execFileAsync('defaults', ['read', 'com.apple.LaunchServices/com.apple.launchservices.secure', 'LSHandlers']);\n\n\t// `(?!-)` is to prevent matching `LSHandlerRoleAll = \"-\";`.\n\tconst match = /LSHandlerRoleAll = \"(?!-)(?[^\"]+?)\";\\s+?LSHandlerURLScheme = (?:http|https);/.exec(stdout);\n\n\treturn match?.groups.id ?? 'com.apple.Safari';\n}\n", "import process from 'node:process';\nimport {promisify} from 'node:util';\nimport {execFile, execFileSync} from 'node:child_process';\n\nconst execFileAsync = promisify(execFile);\n\nexport async function runAppleScript(script, {humanReadableOutput = true} = {}) {\n\tif (process.platform !== 'darwin') {\n\t\tthrow new Error('macOS only');\n\t}\n\n\tconst outputArguments = humanReadableOutput ? [] : ['-ss'];\n\n\tconst {stdout} = await execFileAsync('osascript', ['-e', script, outputArguments]);\n\treturn stdout.trim();\n}\n\nexport function runAppleScriptSync(script, {humanReadableOutput = true} = {}) {\n\tif (process.platform !== 'darwin') {\n\t\tthrow new Error('macOS only');\n\t}\n\n\tconst outputArguments = humanReadableOutput ? [] : ['-ss'];\n\n\tconst stdout = execFileSync('osascript', ['-e', script, ...outputArguments], {\n\t\tencoding: 'utf8',\n\t\tstdio: ['ignore', 'pipe', 'ignore'],\n\t\ttimeout: 500,\n\t});\n\n\treturn stdout.trim();\n}\n", "import {runAppleScript} from 'run-applescript';\n\nexport default async function bundleName(bundleId) {\n\treturn runAppleScript(`tell application \"Finder\" to set app_path to application file id \"${bundleId}\" as string\\ntell application \"System Events\" to get value of property list item \"CFBundleName\" of property list file (app_path & \":Contents:Info.plist\")`);\n}\n", "import {promisify} from 'node:util';\nimport {execFile} from 'node:child_process';\n\nconst execFileAsync = promisify(execFile);\n\n// Windows doesn't have browser IDs in the same way macOS/Linux does so we give fake\n// ones that look real and match the macOS/Linux versions for cross-platform apps.\nconst windowsBrowserProgIds = {\n\tAppXq0fevzme2pys62n3e0fbqa7peapykr8v: {name: 'Edge', id: 'com.microsoft.edge.old'},\n\tMSEdgeDHTML: {name: 'Edge', id: 'com.microsoft.edge'}, // On macOS, it's \"com.microsoft.edgemac\"\n\tMSEdgeHTM: {name: 'Edge', id: 'com.microsoft.edge'}, // Newer Edge/Win10 releases\n\t'IE.HTTP': {name: 'Internet Explorer', id: 'com.microsoft.ie'},\n\tFirefoxURL: {name: 'Firefox', id: 'org.mozilla.firefox'},\n\tChromeHTML: {name: 'Chrome', id: 'com.google.chrome'},\n\tBraveHTML: {name: 'Brave', id: 'com.brave.Browser'},\n\tBraveBHTML: {name: 'Brave Beta', id: 'com.brave.Browser.beta'},\n\tBraveSSHTM: {name: 'Brave Nightly', id: 'com.brave.Browser.nightly'},\n};\n\nexport class UnknownBrowserError extends Error {}\n\nexport default async function defaultBrowser(_execFileAsync = execFileAsync) {\n\tconst {stdout} = await _execFileAsync('reg', [\n\t\t'QUERY',\n\t\t' HKEY_CURRENT_USER\\\\Software\\\\Microsoft\\\\Windows\\\\Shell\\\\Associations\\\\UrlAssociations\\\\http\\\\UserChoice',\n\t\t'/v',\n\t\t'ProgId',\n\t]);\n\n\tconst match = /ProgId\\s*REG_SZ\\s*(?\\S+)/.exec(stdout);\n\tif (!match) {\n\t\tthrow new UnknownBrowserError(`Cannot find Windows browser in stdout: ${JSON.stringify(stdout)}`);\n\t}\n\n\tconst {id} = match.groups;\n\n\tconst browser = windowsBrowserProgIds[id];\n\tif (!browser) {\n\t\tthrow new UnknownBrowserError(`Unknown browser ID: ${id}`);\n\t}\n\n\treturn browser;\n}\n", "import {promisify} from 'node:util';\nimport process from 'node:process';\nimport {execFile} from 'node:child_process';\nimport defaultBrowserId from 'default-browser-id';\nimport bundleName from 'bundle-name';\nimport windows from './windows.js';\n\nconst execFileAsync = promisify(execFile);\n\n// Inlined: https://github.com/sindresorhus/titleize/blob/main/index.js\nconst titleize = string => string.toLowerCase().replaceAll(/(?:^|\\s|-)\\S/g, x => x.toUpperCase());\n\nexport default async function defaultBrowser() {\n\tif (process.platform === 'darwin') {\n\t\tconst id = await defaultBrowserId();\n\t\tconst name = await bundleName(id);\n\t\treturn {name, id};\n\t}\n\n\tif (process.platform === 'linux') {\n\t\tconst {stdout} = await execFileAsync('xdg-mime', ['query', 'default', 'x-scheme-handler/http']);\n\t\tconst id = stdout.trim();\n\t\tconst name = titleize(id.replace(/.desktop$/, '').replace('-', ' '));\n\t\treturn {name, id};\n\t}\n\n\tif (process.platform === 'win32') {\n\t\treturn windows();\n\t}\n\n\tthrow new Error('Only macOS, Linux, and Windows are supported');\n}\n", "import process from 'node:process';\nimport {Buffer} from 'node:buffer';\nimport path from 'node:path';\nimport {fileURLToPath} from 'node:url';\nimport childProcess from 'node:child_process';\nimport fs, {constants as fsConstants} from 'node:fs/promises';\nimport isWsl from 'is-wsl';\nimport defineLazyProperty from 'define-lazy-prop';\nimport defaultBrowser from 'default-browser';\nimport isInsideContainer from 'is-inside-container';\n\n// Path to included `xdg-open`.\nconst __dirname = path.dirname(fileURLToPath(import.meta.url));\nconst localXdgOpenPath = path.join(__dirname, 'xdg-open');\n\nconst {platform, arch} = process;\n\n/**\nGet the mount point for fixed drives in WSL.\n\n@inner\n@returns {string} The mount point.\n*/\nconst getWslDrivesMountPoint = (() => {\n\t// Default value for \"root\" param\n\t// according to https://docs.microsoft.com/en-us/windows/wsl/wsl-config\n\tconst defaultMountPoint = '/mnt/';\n\n\tlet mountPoint;\n\n\treturn async function () {\n\t\tif (mountPoint) {\n\t\t\t// Return memoized mount point value\n\t\t\treturn mountPoint;\n\t\t}\n\n\t\tconst configFilePath = '/etc/wsl.conf';\n\n\t\tlet isConfigFileExists = false;\n\t\ttry {\n\t\t\tawait fs.access(configFilePath, fsConstants.F_OK);\n\t\t\tisConfigFileExists = true;\n\t\t} catch {}\n\n\t\tif (!isConfigFileExists) {\n\t\t\treturn defaultMountPoint;\n\t\t}\n\n\t\tconst configContent = await fs.readFile(configFilePath, {encoding: 'utf8'});\n\t\tconst configMountPoint = /(?.*)/g.exec(configContent);\n\n\t\tif (!configMountPoint) {\n\t\t\treturn defaultMountPoint;\n\t\t}\n\n\t\tmountPoint = configMountPoint.groups.mountPoint.trim();\n\t\tmountPoint = mountPoint.endsWith('/') ? mountPoint : `${mountPoint}/`;\n\n\t\treturn mountPoint;\n\t};\n})();\n\nconst pTryEach = async (array, mapper) => {\n\tlet latestError;\n\n\tfor (const item of array) {\n\t\ttry {\n\t\t\treturn await mapper(item); // eslint-disable-line no-await-in-loop\n\t\t} catch (error) {\n\t\t\tlatestError = error;\n\t\t}\n\t}\n\n\tthrow latestError;\n};\n\nconst baseOpen = async options => {\n\toptions = {\n\t\twait: false,\n\t\tbackground: false,\n\t\tnewInstance: false,\n\t\tallowNonzeroExitCode: false,\n\t\t...options,\n\t};\n\n\tif (Array.isArray(options.app)) {\n\t\treturn pTryEach(options.app, singleApp => baseOpen({\n\t\t\t...options,\n\t\t\tapp: singleApp,\n\t\t}));\n\t}\n\n\tlet {name: app, arguments: appArguments = []} = options.app ?? {};\n\tappArguments = [...appArguments];\n\n\tif (Array.isArray(app)) {\n\t\treturn pTryEach(app, appName => baseOpen({\n\t\t\t...options,\n\t\t\tapp: {\n\t\t\t\tname: appName,\n\t\t\t\targuments: appArguments,\n\t\t\t},\n\t\t}));\n\t}\n\n\tif (app === 'browser' || app === 'browserPrivate') {\n\t\t// IDs from default-browser for macOS and windows are the same\n\t\tconst ids = {\n\t\t\t'com.google.chrome': 'chrome',\n\t\t\t'google-chrome.desktop': 'chrome',\n\t\t\t'org.mozilla.firefox': 'firefox',\n\t\t\t'firefox.desktop': 'firefox',\n\t\t\t'com.microsoft.msedge': 'edge',\n\t\t\t'com.microsoft.edge': 'edge',\n\t\t\t'microsoft-edge.desktop': 'edge',\n\t\t};\n\n\t\t// Incognito flags for each browser in `apps`.\n\t\tconst flags = {\n\t\t\tchrome: '--incognito',\n\t\t\tfirefox: '--private-window',\n\t\t\tedge: '--inPrivate',\n\t\t};\n\n\t\tconst browser = await defaultBrowser();\n\t\tif (browser.id in ids) {\n\t\t\tconst browserName = ids[browser.id];\n\n\t\t\tif (app === 'browserPrivate') {\n\t\t\t\tappArguments.push(flags[browserName]);\n\t\t\t}\n\n\t\t\treturn baseOpen({\n\t\t\t\t...options,\n\t\t\t\tapp: {\n\t\t\t\t\tname: apps[browserName],\n\t\t\t\t\targuments: appArguments,\n\t\t\t\t},\n\t\t\t});\n\t\t}\n\n\t\tthrow new Error(`${browser.name} is not supported as a default browser`);\n\t}\n\n\tlet command;\n\tconst cliArguments = [];\n\tconst childProcessOptions = {};\n\n\tif (platform === 'darwin') {\n\t\tcommand = 'open';\n\n\t\tif (options.wait) {\n\t\t\tcliArguments.push('--wait-apps');\n\t\t}\n\n\t\tif (options.background) {\n\t\t\tcliArguments.push('--background');\n\t\t}\n\n\t\tif (options.newInstance) {\n\t\t\tcliArguments.push('--new');\n\t\t}\n\n\t\tif (app) {\n\t\t\tcliArguments.push('-a', app);\n\t\t}\n\t} else if (platform === 'win32' || (isWsl && !isInsideContainer() && !app)) {\n\t\tconst mountPoint = await getWslDrivesMountPoint();\n\n\t\tcommand = isWsl\n\t\t\t? `${mountPoint}c/Windows/System32/WindowsPowerShell/v1.0/powershell.exe`\n\t\t\t: `${process.env.SYSTEMROOT || process.env.windir || 'C:\\\\Windows'}\\\\System32\\\\WindowsPowerShell\\\\v1.0\\\\powershell`;\n\n\t\tcliArguments.push(\n\t\t\t'-NoProfile',\n\t\t\t'-NonInteractive',\n\t\t\t'-ExecutionPolicy',\n\t\t\t'Bypass',\n\t\t\t'-EncodedCommand',\n\t\t);\n\n\t\tif (!isWsl) {\n\t\t\tchildProcessOptions.windowsVerbatimArguments = true;\n\t\t}\n\n\t\tconst encodedArguments = ['Start'];\n\n\t\tif (options.wait) {\n\t\t\tencodedArguments.push('-Wait');\n\t\t}\n\n\t\tif (app) {\n\t\t\t// Double quote with double quotes to ensure the inner quotes are passed through.\n\t\t\t// Inner quotes are delimited for PowerShell interpretation with backticks.\n\t\t\tencodedArguments.push(`\"\\`\"${app}\\`\"\"`);\n\t\t\tif (options.target) {\n\t\t\t\tappArguments.push(options.target);\n\t\t\t}\n\t\t} else if (options.target) {\n\t\t\tencodedArguments.push(`\"${options.target}\"`);\n\t\t}\n\n\t\tif (appArguments.length > 0) {\n\t\t\tappArguments = appArguments.map(argument => `\"\\`\"${argument}\\`\"\"`);\n\t\t\tencodedArguments.push('-ArgumentList', appArguments.join(','));\n\t\t}\n\n\t\t// Using Base64-encoded command, accepted by PowerShell, to allow special characters.\n\t\toptions.target = Buffer.from(encodedArguments.join(' '), 'utf16le').toString('base64');\n\t} else {\n\t\tif (app) {\n\t\t\tcommand = app;\n\t\t} else {\n\t\t\t// When bundled by Webpack, there's no actual package file path and no local `xdg-open`.\n\t\t\tconst isBundled = !__dirname || __dirname === '/';\n\n\t\t\t// Check if local `xdg-open` exists and is executable.\n\t\t\tlet exeLocalXdgOpen = false;\n\t\t\ttry {\n\t\t\t\tawait fs.access(localXdgOpenPath, fsConstants.X_OK);\n\t\t\t\texeLocalXdgOpen = true;\n\t\t\t} catch {}\n\n\t\t\tconst useSystemXdgOpen = process.versions.electron\n\t\t\t\t?? (platform === 'android' || isBundled || !exeLocalXdgOpen);\n\t\t\tcommand = useSystemXdgOpen ? 'xdg-open' : localXdgOpenPath;\n\t\t}\n\n\t\tif (appArguments.length > 0) {\n\t\t\tcliArguments.push(...appArguments);\n\t\t}\n\n\t\tif (!options.wait) {\n\t\t\t// `xdg-open` will block the process unless stdio is ignored\n\t\t\t// and it's detached from the parent even if it's unref'd.\n\t\t\tchildProcessOptions.stdio = 'ignore';\n\t\t\tchildProcessOptions.detached = true;\n\t\t}\n\t}\n\n\tif (platform === 'darwin' && appArguments.length > 0) {\n\t\tcliArguments.push('--args', ...appArguments);\n\t}\n\n\t// This has to come after `--args`.\n\tif (options.target) {\n\t\tcliArguments.push(options.target);\n\t}\n\n\tconst subprocess = childProcess.spawn(command, cliArguments, childProcessOptions);\n\n\tif (options.wait) {\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tsubprocess.once('error', reject);\n\n\t\t\tsubprocess.once('close', exitCode => {\n\t\t\t\tif (!options.allowNonzeroExitCode && exitCode > 0) {\n\t\t\t\t\treject(new Error(`Exited with code ${exitCode}`));\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tresolve(subprocess);\n\t\t\t});\n\t\t});\n\t}\n\n\tsubprocess.unref();\n\n\treturn subprocess;\n};\n\nconst open = (target, options) => {\n\tif (typeof target !== 'string') {\n\t\tthrow new TypeError('Expected a `target`');\n\t}\n\n\treturn baseOpen({\n\t\t...options,\n\t\ttarget,\n\t});\n};\n\nexport const openApp = (name, options) => {\n\tif (typeof name !== 'string' && !Array.isArray(name)) {\n\t\tthrow new TypeError('Expected a valid `name`');\n\t}\n\n\tconst {arguments: appArguments = []} = options ?? {};\n\tif (appArguments !== undefined && appArguments !== null && !Array.isArray(appArguments)) {\n\t\tthrow new TypeError('Expected `appArguments` as Array type');\n\t}\n\n\treturn baseOpen({\n\t\t...options,\n\t\tapp: {\n\t\t\tname,\n\t\t\targuments: appArguments,\n\t\t},\n\t});\n};\n\nfunction detectArchBinary(binary) {\n\tif (typeof binary === 'string' || Array.isArray(binary)) {\n\t\treturn binary;\n\t}\n\n\tconst {[arch]: archBinary} = binary;\n\n\tif (!archBinary) {\n\t\tthrow new Error(`${arch} is not supported`);\n\t}\n\n\treturn archBinary;\n}\n\nfunction detectPlatformBinary({[platform]: platformBinary}, {wsl}) {\n\tif (wsl && isWsl) {\n\t\treturn detectArchBinary(wsl);\n\t}\n\n\tif (!platformBinary) {\n\t\tthrow new Error(`${platform} is not supported`);\n\t}\n\n\treturn detectArchBinary(platformBinary);\n}\n\nexport const apps = {};\n\ndefineLazyProperty(apps, 'chrome', () => detectPlatformBinary({\n\tdarwin: 'google chrome',\n\twin32: 'chrome',\n\tlinux: ['google-chrome', 'google-chrome-stable', 'chromium'],\n}, {\n\twsl: {\n\t\tia32: '/mnt/c/Program Files (x86)/Google/Chrome/Application/chrome.exe',\n\t\tx64: ['/mnt/c/Program Files/Google/Chrome/Application/chrome.exe', '/mnt/c/Program Files (x86)/Google/Chrome/Application/chrome.exe'],\n\t},\n}));\n\ndefineLazyProperty(apps, 'firefox', () => detectPlatformBinary({\n\tdarwin: 'firefox',\n\twin32: 'C:\\\\Program Files\\\\Mozilla Firefox\\\\firefox.exe',\n\tlinux: 'firefox',\n}, {\n\twsl: '/mnt/c/Program Files/Mozilla Firefox/firefox.exe',\n}));\n\ndefineLazyProperty(apps, 'edge', () => detectPlatformBinary({\n\tdarwin: 'microsoft edge',\n\twin32: 'msedge',\n\tlinux: ['microsoft-edge', 'microsoft-edge-dev'],\n}, {\n\twsl: '/mnt/c/Program Files (x86)/Microsoft/Edge/Application/msedge.exe',\n}));\n\ndefineLazyProperty(apps, 'browser', () => 'browser');\n\ndefineLazyProperty(apps, 'browserPrivate', () => 'browserPrivate');\n\nexport default open;\n", "// Copyright (c) Microsoft Corporation.\r\n// Licensed under the MIT License.\r\nimport * as core from \"@actions/core\";\r\n\r\nimport { parseConfig } from \"./config\";\r\nimport { execute } from \"./handler\";\r\nimport { getTemplateAndParameters } from \"./helpers/file\";\r\nimport { logInfo } from \"./helpers/logging\";\r\n\r\n/**\r\n * The main function for the action.\r\n * @returns {Promise} Resolves when the action is complete.\r\n */\r\nexport async function run(): Promise {\r\n try {\r\n const config = parseConfig();\r\n logInfo(`Action config: ${JSON.stringify(config, null, 2)}`);\r\n\r\n const files = await getTemplateAndParameters(config);\r\n\r\n await execute(config, files);\r\n } catch (error) {\r\n // Fail the workflow run if an error occurs\r\n const message = error instanceof Error ? error.message : `${error}`;\r\n core.setFailed(message);\r\n }\r\n}\r\n", "// Copyright (c) Microsoft Corporation.\r\n// Licensed under the MIT License.\r\nimport * as core from \"@actions/core\";\r\nimport * as yaml from \"yaml\";\r\n\r\nimport { resolvePath } from \"./file\";\r\n\r\nexport function getRequiredStringInput(inputName: string): string {\r\n return getInput(inputName, undefined, true) as string;\r\n}\r\n\r\nexport function getOptionalStringInput(inputName: string): string | undefined {\r\n return getInput(inputName, undefined, false);\r\n}\r\n\r\nexport function getRequiredEnumInput(\r\n inputName: string,\r\n allowedValues: TEnum[],\r\n): TEnum {\r\n return getInput(inputName, allowedValues, true) as TEnum;\r\n}\r\n\r\nexport function getOptionalEnumInput(\r\n inputName: string,\r\n allowedValues: TEnum[],\r\n): TEnum | undefined {\r\n return getInput(inputName, allowedValues, false) as TEnum | undefined;\r\n}\r\n\r\nexport function getOptionalFilePath(inputName: string): string | undefined {\r\n const input = getOptionalStringInput(inputName);\r\n if (!input) {\r\n return;\r\n }\r\n\r\n return resolvePath(input);\r\n}\r\n\r\nexport function getOptionalBooleanInput(inputName: string): boolean {\r\n const input = getOptionalStringInput(inputName);\r\n if (!input) {\r\n return false;\r\n }\r\n\r\n if (input.toLowerCase() === \"true\") {\r\n return true;\r\n } else if (input.toLowerCase() === \"false\") {\r\n return false;\r\n } else {\r\n throw new Error(`Action input '${inputName}' must be a boolean value`);\r\n }\r\n}\r\n\r\nexport function getOptionalStringArrayInput(\r\n inputName: string,\r\n): string[] | undefined {\r\n const inputString = getOptionalStringInput(inputName);\r\n\r\n return inputString ? parseCommaSeparated(inputString) : undefined;\r\n}\r\n\r\nexport function getOptionalEnumArrayInput(\r\n inputName: string,\r\n allowedValues: TEnum[],\r\n): TEnum[] | undefined {\r\n const values = getOptionalStringArrayInput(inputName);\r\n if (!values) {\r\n return undefined;\r\n }\r\n\r\n const allowedValuesString = allowedValues as string[];\r\n for (const value of values) {\r\n if (allowedValuesString.indexOf(value) === -1) {\r\n throw new Error(\r\n `Action input '${inputName}' must be one of the following values: '${allowedValues.join(`', '`)}'`,\r\n );\r\n }\r\n }\r\n\r\n return values as TEnum[];\r\n}\r\n\r\nexport function getOptionalDictionaryInput(\r\n inputName: string,\r\n): Record | undefined {\r\n const inputString = getOptionalStringInput(inputName);\r\n if (!inputString) {\r\n return undefined;\r\n }\r\n\r\n const input = tryParseJson(inputString) ?? tryParseYaml(inputString);\r\n if (typeof input !== \"object\") {\r\n throw new Error(\r\n `Action input '${inputName}' must be a valid JSON or YAML object`,\r\n );\r\n }\r\n\r\n return input;\r\n}\r\n\r\nexport function getOptionalStringDictionaryInput(\r\n inputName: string,\r\n): Record | undefined {\r\n const input = getOptionalDictionaryInput(inputName);\r\n if (!input) {\r\n return undefined;\r\n }\r\n\r\n Object.keys(input).forEach(key => {\r\n if (typeof input[key] !== \"string\") {\r\n throw new Error(\r\n `Action input '${inputName}' must be a valid JSON or YAML object containing only string values`,\r\n );\r\n }\r\n });\r\n\r\n return input as Record;\r\n}\r\n\r\nfunction getInput(\r\n inputName: string,\r\n allowedValues?: string[],\r\n throwOnMissing = true,\r\n): string | undefined {\r\n const inputValue = core.getInput(inputName)?.trim();\r\n if (!inputValue) {\r\n if (throwOnMissing) {\r\n throw new Error(\r\n `Action input '${inputName}' is required but not provided`,\r\n );\r\n } else {\r\n return;\r\n }\r\n }\r\n\r\n if (allowedValues && !allowedValues.includes(inputValue)) {\r\n throw new Error(\r\n `Action input '${inputName}' must be one of the following values: '${allowedValues.join(`', '`)}'`,\r\n );\r\n }\r\n\r\n return inputValue;\r\n}\r\n\r\nfunction tryParseJson(value: string) {\r\n try {\r\n return JSON.parse(value);\r\n } catch {\r\n return undefined;\r\n }\r\n}\r\n\r\nfunction tryParseYaml(value: string) {\r\n try {\r\n return yaml.parse(value);\r\n } catch {\r\n return undefined;\r\n }\r\n}\r\n\r\nfunction parseCommaSeparated(value: string) {\r\n return value\r\n .split(\",\")\r\n .map(val => val.trim())\r\n .filter(val => val.length > 0);\r\n}\r\n", "/* eslint-disable prettier/prettier */\r\n// Copyright (c) Microsoft Corporation.\r\n// Licensed under the MIT License.\r\nimport * as fs from \"fs/promises\";\r\nimport * as path from \"path\";\r\nimport * as os from \"os\";\r\nimport { Bicep, CompileResponseDiagnostic } from \"bicep-node\";\r\n\r\nimport { FileConfig } from \"../config\";\r\nimport { logError, logInfo, logWarning } from \"./logging\";\r\n\r\nexport type ParsedFiles = {\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n parametersContents?: any;\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n templateContents?: any;\r\n templateSpecId?: string;\r\n};\r\n\r\nasync function installBicep(bicepVersion?: string) {\r\n const bicepTmpDir = await fs.mkdtemp(path.join(os.tmpdir(), \"bicep-\"));\r\n return await Bicep.install(bicepTmpDir, bicepVersion);\r\n}\r\n\r\nasync function compileBicepParams(\r\n paramFilePath: string,\r\n parameters?: Record,\r\n bicepVersion?: string\r\n) {\r\n const bicepPath = await installBicep(bicepVersion);\r\n\r\n const result = await withBicep(bicepPath, bicep =>\r\n bicep.compileParams({\r\n path: paramFilePath,\r\n parameterOverrides: parameters ?? {},\r\n }),\r\n );\r\n\r\n logDiagnostics(result.diagnostics);\r\n\r\n if (!result.success) {\r\n throw `Failed to compile Bicep parameters file: ${paramFilePath}`;\r\n }\r\n\r\n return {\r\n parameters: result.parameters,\r\n template: result.template,\r\n templateSpecId: result.templateSpecId,\r\n };\r\n}\r\n\r\nasync function compileBicep(templateFilePath: string, bicepVersion?: string) {\r\n const bicepPath = await installBicep(bicepVersion);\r\n\r\n const result = await withBicep(bicepPath, bicep =>\r\n bicep.compile({\r\n path: templateFilePath,\r\n }),\r\n );\r\n\r\n logDiagnostics(result.diagnostics);\r\n\r\n if (!result.success) {\r\n throw `Failed to compile Bicep file: ${templateFilePath}`;\r\n }\r\n\r\n return { template: result.contents };\r\n}\r\n\r\nexport async function getJsonParameters(config: FileConfig) {\r\n const { parametersFile, parameters } = config;\r\n\r\n const contents = parametersFile\r\n ? JSON.parse(await fs.readFile(parametersFile, \"utf8\"))\r\n : { parameters: {} };\r\n\r\n for (const [key, value] of Object.entries(parameters ?? {})) {\r\n contents[\"parameters\"][key] = { value };\r\n }\r\n\r\n return JSON.stringify(contents);\r\n}\r\n\r\nexport async function getTemplateAndParameters(config: FileConfig) {\r\n const { parametersFile, templateFile } = config;\r\n\r\n if (\r\n parametersFile &&\r\n path.extname(parametersFile).toLowerCase() === \".bicepparam\"\r\n ) {\r\n return parse(await compileBicepParams(parametersFile, config.parameters, config.bicepVersion));\r\n }\r\n\r\n if (\r\n parametersFile &&\r\n path.extname(parametersFile).toLowerCase() !== \".json\"\r\n ) {\r\n throw new Error(`Unsupported parameters file type: ${parametersFile}`);\r\n }\r\n\r\n const parameters = await getJsonParameters(config);\r\n\r\n if (templateFile && path.extname(templateFile).toLowerCase() === \".bicep\") {\r\n const { template } = await compileBicep(templateFile, config.bicepVersion);\r\n\r\n return parse({ template, parameters });\r\n }\r\n\r\n if (templateFile && path.extname(templateFile).toLowerCase() !== \".json\") {\r\n throw new Error(`Unsupported template file type: ${templateFile}`);\r\n }\r\n\r\n if (!templateFile) {\r\n throw new Error(\"Template file is required\");\r\n }\r\n\r\n const template = await fs.readFile(templateFile, \"utf8\");\r\n\r\n return parse({ template, parameters });\r\n}\r\n\r\nexport function parse(input: {\r\n parameters?: string;\r\n template?: string;\r\n templateSpecId?: string;\r\n}): ParsedFiles {\r\n const { parameters, template, templateSpecId } = input;\r\n const parametersContents = parameters ? JSON.parse(parameters) : undefined;\r\n const templateContents = template ? JSON.parse(template) : undefined;\r\n\r\n return { parametersContents, templateContents, templateSpecId };\r\n}\r\n\r\nasync function withBicep(\r\n bicepPath: string,\r\n action: (bicep: Bicep) => Promise,\r\n) {\r\n const bicep = await Bicep.initialize(bicepPath);\r\n\r\n try {\r\n const version = await bicep.version();\r\n logInfo(`Installed Bicep version ${version} to ${bicepPath}`);\r\n\r\n return await action(bicep);\r\n } finally {\r\n bicep.dispose();\r\n }\r\n}\r\n\r\nexport function resolvePath(fileName: string) {\r\n return path.resolve(fileName);\r\n}\r\n\r\nfunction logDiagnostics(diagnostics: CompileResponseDiagnostic[]) {\r\n for (const diag of diagnostics) {\r\n const message = `${diag.source}(${diag.range.start.line + 1},${diag.range.start.char + 1}) : ${diag.level} ${diag.code}: ${diag.message}`;\r\n if (diag.level === \"Error\") logError(message);\r\n if (diag.level === \"Warning\") logWarning(message);\r\n if (diag.level === \"Info\") logInfo(message);\r\n }\r\n}\r\n", "// Copyright (c) Microsoft Corporation.\r\n// Licensed under the MIT License.\r\nimport * as core from \"@actions/core\";\r\n\r\nexport type ColorMode = \"off\" | \"ansii\" | \"debug\"; // debug is just used for unit testing\r\n\r\nexport enum Color {\r\n Reset = \"\\x1b[0m\",\r\n Red = \"\\x1b[31m\",\r\n Green = \"\\x1b[32m\",\r\n Yellow = \"\\x1b[33m\",\r\n Blue = \"\\x1b[34m\",\r\n Magenta = \"\\x1b[35m\",\r\n Cyan = \"\\x1b[36m\",\r\n White = \"\\x1b[37m\",\r\n}\r\n\r\nconst colorToName: Record = {\r\n \"\\u001b[0m\": \"Reset\",\r\n \"\\u001b[31m\": \"Red\",\r\n \"\\u001b[32m\": \"Green\",\r\n \"\\u001b[33m\": \"Yellow\",\r\n \"\\u001b[34m\": \"Blue\",\r\n \"\\u001b[35m\": \"Magenta\",\r\n \"\\u001b[36m\": \"Cyan\",\r\n \"\\u001b[37m\": \"White\",\r\n};\r\n\r\nexport function colorize(message: string, color: Color) {\r\n return message\r\n .split(\"\\n\")\r\n .map(line => `${color}${line}${Color.Reset}`)\r\n .join(\"\\n\");\r\n}\r\n\r\nexport function removeColors(message: string) {\r\n for (const color in colorToName) {\r\n message = message.replaceAll(color, \"\");\r\n }\r\n\r\n return message;\r\n}\r\n\r\nexport const logInfoRaw = (message: string) => core.info(message);\r\nexport const logInfo = (message: string) =>\r\n logInfoRaw(colorize(message, Color.Blue));\r\nexport const logWarningRaw = (message: string) => core.warning(message);\r\nexport const logWarning = (message: string) =>\r\n logWarningRaw(colorize(message, Color.Yellow));\r\nexport const logErrorRaw = (message: string) => core.error(message);\r\nexport const logError = (message: string) =>\r\n logErrorRaw(colorize(message, Color.Red));\r\n\r\nexport function getColorString(colorMode: ColorMode, color: Color): string {\r\n switch (colorMode) {\r\n case \"off\":\r\n return \"\";\r\n case \"ansii\":\r\n return color;\r\n case \"debug\":\r\n return `<${colorToName[color].toUpperCase()}>`;\r\n }\r\n\r\n return color;\r\n}\r\n\r\nexport class ColorStringBuilder {\r\n private colorStack: Color[] = [];\r\n private buffer: string = \"\";\r\n constructor(private colorMode: ColorMode) {}\r\n\r\n append(value: string, color?: Color): this {\r\n if (color) {\r\n this.pushColor(color);\r\n }\r\n\r\n this.buffer += value;\r\n\r\n if (color) {\r\n this.popColor();\r\n }\r\n\r\n return this;\r\n }\r\n\r\n appendLine(value: string = \"\"): this {\r\n return this.append(value + \"\\n\");\r\n }\r\n\r\n withColorScope(color: Color, action: () => void): void {\r\n this.pushColor(color);\r\n action();\r\n this.popColor();\r\n }\r\n\r\n private pushColor(color: Color) {\r\n this.colorStack.push(color);\r\n this.buffer += getColorString(this.colorMode, color);\r\n }\r\n\r\n private popColor() {\r\n this.colorStack.pop();\r\n const prevColor =\r\n this.colorStack[this.colorStack.length - 1] ?? Color.Reset;\r\n this.buffer += getColorString(this.colorMode, prevColor);\r\n }\r\n\r\n build(): string {\r\n return this.buffer;\r\n }\r\n}\r\n", "// Copyright (c) Microsoft Corporation.\r\n// Licensed under the MIT License.\r\nimport {\r\n getRequiredEnumInput,\r\n getOptionalStringInput,\r\n getOptionalStringDictionaryInput,\r\n getOptionalFilePath,\r\n getOptionalBooleanInput,\r\n getOptionalEnumInput,\r\n getOptionalStringArrayInput,\r\n getRequiredStringInput,\r\n getOptionalEnumArrayInput,\r\n getOptionalDictionaryInput,\r\n} from \"./helpers/input\";\r\n\r\nexport type ScopeType =\r\n | \"tenant\"\r\n | \"managementGroup\"\r\n | \"subscription\"\r\n | \"resourceGroup\";\r\n\r\ntype CommonScope = {\r\n type: ScopeType;\r\n tenantId?: string;\r\n};\r\n\r\nexport type TenantScope = CommonScope & {\r\n type: \"tenant\";\r\n};\r\n\r\nexport type ManagementGroupScope = CommonScope & {\r\n type: \"managementGroup\";\r\n managementGroup: string;\r\n};\r\n\r\nexport type SubscriptionScope = CommonScope & {\r\n type: \"subscription\";\r\n subscriptionId: string;\r\n};\r\n\r\nexport type ResourceGroupScope = CommonScope & {\r\n type: \"resourceGroup\";\r\n subscriptionId: string;\r\n resourceGroup: string;\r\n};\r\n\r\nexport type FileConfig = {\r\n templateFile?: string;\r\n parametersFile?: string;\r\n parameters?: Record;\r\n bicepVersion?: string;\r\n};\r\n\r\ntype CommonConfig = {\r\n type: \"deployment\" | \"deploymentStack\";\r\n name?: string;\r\n location?: string;\r\n tags?: Record;\r\n maskedOutputs?: string[];\r\n environment:\r\n | \"azureCloud\"\r\n | \"azureChinaCloud\"\r\n | \"azureGermanCloud\"\r\n | \"azureUSGovernment\";\r\n} & FileConfig;\r\n\r\ntype WhatIfChangeType =\r\n | \"create\"\r\n | \"delete\"\r\n | \"modify\"\r\n | \"deploy\"\r\n | \"noChange\"\r\n | \"ignore\"\r\n | \"unsupported\";\r\n\r\nexport type DeploymentsConfig = CommonConfig & {\r\n type: \"deployment\";\r\n operation: \"create\" | \"validate\" | \"whatIf\";\r\n scope:\r\n | TenantScope\r\n | ManagementGroupScope\r\n | SubscriptionScope\r\n | ResourceGroupScope;\r\n whatIf: {\r\n excludeChangeTypes?: WhatIfChangeType[];\r\n };\r\n validationLevel?: \"provider\" | \"template\" | \"providerNoRbac\";\r\n};\r\n\r\nexport type DeploymentStackConfig = CommonConfig & {\r\n type: \"deploymentStack\";\r\n operation: \"create\" | \"delete\" | \"validate\";\r\n scope: ManagementGroupScope | SubscriptionScope | ResourceGroupScope;\r\n description?: string;\r\n actionOnUnManage: {\r\n resources: \"delete\" | \"detach\";\r\n managementGroups?: \"delete\" | \"detach\";\r\n resourceGroups?: \"delete\" | \"detach\";\r\n };\r\n denySettings: {\r\n mode: \"denyDelete\" | \"denyWriteAndDelete\" | \"none\";\r\n excludedActions?: string[];\r\n excludedPrincipals?: string[];\r\n applyToChildScopes?: boolean;\r\n };\r\n bypassStackOutOfSyncError: boolean;\r\n};\r\n\r\nexport type ActionConfig = DeploymentsConfig | DeploymentStackConfig;\r\n\r\nexport function parseConfig(): DeploymentsConfig | DeploymentStackConfig {\r\n const type = getRequiredEnumInput(\"type\", [\"deployment\", \"deploymentStack\"]);\r\n const name = getOptionalStringInput(\"name\");\r\n const location = getOptionalStringInput(\"location\");\r\n const templateFile = getOptionalFilePath(\"template-file\");\r\n const parametersFile = getOptionalFilePath(\"parameters-file\");\r\n const parameters = getOptionalDictionaryInput(\"parameters\");\r\n const bicepVersion = getOptionalStringInput(\"bicep-version\");\r\n const description = getOptionalStringInput(\"description\");\r\n const tags = getOptionalStringDictionaryInput(\"tags\");\r\n const maskedOutputs = getOptionalStringArrayInput(\"masked-outputs\");\r\n const environment =\r\n getOptionalEnumInput(\"environment\", [\r\n \"azureCloud\",\r\n \"azureChinaCloud\",\r\n \"azureGermanCloud\",\r\n \"azureUSGovernment\",\r\n ]) ?? \"azureCloud\";\r\n\r\n switch (type) {\r\n case \"deployment\": {\r\n return {\r\n type,\r\n name,\r\n location,\r\n templateFile,\r\n parametersFile,\r\n parameters,\r\n bicepVersion,\r\n tags,\r\n maskedOutputs,\r\n environment: environment,\r\n operation: getRequiredEnumInput(\"operation\", [\r\n \"create\",\r\n \"validate\",\r\n \"whatIf\",\r\n ]),\r\n scope: parseDeploymentScope(),\r\n whatIf: {\r\n excludeChangeTypes: getOptionalEnumArrayInput(\r\n \"what-if-exclude-change-types\",\r\n [\r\n \"create\",\r\n \"delete\",\r\n \"modify\",\r\n \"deploy\",\r\n \"noChange\",\r\n \"ignore\",\r\n \"unsupported\",\r\n ],\r\n ),\r\n },\r\n validationLevel: getOptionalEnumInput(\"validation-level\", [\r\n \"provider\",\r\n \"template\",\r\n \"providerNoRbac\",\r\n ]),\r\n };\r\n }\r\n case \"deploymentStack\": {\r\n return {\r\n type,\r\n name,\r\n location,\r\n templateFile,\r\n parametersFile,\r\n parameters,\r\n bicepVersion,\r\n description,\r\n tags,\r\n maskedOutputs,\r\n environment: environment,\r\n operation: getRequiredEnumInput(\"operation\", [\r\n \"create\",\r\n \"validate\",\r\n \"delete\",\r\n ]),\r\n scope: parseDeploymentStackScope(),\r\n actionOnUnManage: {\r\n resources: getRequiredEnumInput(\"action-on-unmanage-resources\", [\r\n \"delete\",\r\n \"detach\",\r\n ]),\r\n resourceGroups: getOptionalEnumInput(\r\n \"action-on-unmanage-resourcegroups\",\r\n [\"delete\", \"detach\"],\r\n ),\r\n managementGroups: getOptionalEnumInput(\r\n \"action-on-unmanage-managementgroups\",\r\n [\"delete\", \"detach\"],\r\n ),\r\n },\r\n bypassStackOutOfSyncError: getOptionalBooleanInput(\r\n \"bypass-stack-out-of-sync-error\",\r\n ),\r\n denySettings: {\r\n mode: getRequiredEnumInput(\"deny-settings-mode\", [\r\n \"denyDelete\",\r\n \"denyWriteAndDelete\",\r\n \"none\",\r\n ]),\r\n excludedActions: getOptionalStringArrayInput(\r\n \"deny-settings-excluded-actions\",\r\n ),\r\n excludedPrincipals: getOptionalStringArrayInput(\r\n \"deny-settings-excluded-principals\",\r\n ),\r\n applyToChildScopes: getOptionalBooleanInput(\r\n \"deny-settings-apply-to-child-scopes\",\r\n ),\r\n },\r\n };\r\n }\r\n }\r\n}\r\n\r\nfunction parseDeploymentScope():\r\n | TenantScope\r\n | ManagementGroupScope\r\n | SubscriptionScope\r\n | ResourceGroupScope {\r\n const type = getRequiredEnumInput(\"scope\", [\r\n \"tenant\",\r\n \"managementGroup\",\r\n \"subscription\",\r\n \"resourceGroup\",\r\n ]);\r\n const tenantId = getOptionalStringInput(\"tenant-id\");\r\n\r\n switch (type) {\r\n case \"tenant\": {\r\n return {\r\n type,\r\n tenantId,\r\n };\r\n }\r\n case \"managementGroup\": {\r\n const managementGroup = getRequiredStringInput(\"management-group-id\");\r\n return {\r\n type,\r\n tenantId,\r\n managementGroup,\r\n };\r\n }\r\n case \"subscription\": {\r\n const subscriptionId = getRequiredStringInput(\"subscription-id\");\r\n return {\r\n type,\r\n tenantId,\r\n subscriptionId,\r\n };\r\n }\r\n case \"resourceGroup\": {\r\n const subscriptionId = getRequiredStringInput(\"subscription-id\");\r\n const resourceGroup = getRequiredStringInput(\"resource-group-name\");\r\n return {\r\n type,\r\n tenantId,\r\n subscriptionId,\r\n resourceGroup,\r\n };\r\n }\r\n }\r\n}\r\n\r\nfunction parseDeploymentStackScope():\r\n | ManagementGroupScope\r\n | SubscriptionScope\r\n | ResourceGroupScope {\r\n const type = getRequiredEnumInput(\"scope\", [\r\n \"managementGroup\",\r\n \"subscription\",\r\n \"resourceGroup\",\r\n ]);\r\n const tenantId = getOptionalStringInput(\"tenant-id\");\r\n\r\n switch (type) {\r\n case \"managementGroup\": {\r\n const managementGroup = getRequiredStringInput(\"management-group-id\");\r\n return {\r\n type,\r\n tenantId,\r\n managementGroup,\r\n };\r\n }\r\n case \"subscription\": {\r\n const subscriptionId = getRequiredStringInput(\"subscription-id\");\r\n return {\r\n type,\r\n tenantId,\r\n subscriptionId,\r\n };\r\n }\r\n case \"resourceGroup\": {\r\n const subscriptionId = getRequiredStringInput(\"subscription-id\");\r\n const resourceGroup = getRequiredStringInput(\"resource-group-name\");\r\n return {\r\n type,\r\n tenantId,\r\n subscriptionId,\r\n resourceGroup,\r\n };\r\n }\r\n }\r\n}\r\n", "// Copyright (c) Microsoft Corporation.\r\n// Licensed under the MIT License.\r\nimport { setOutput, setFailed, setSecret } from \"@actions/core\";\r\nimport {\r\n CloudError,\r\n Deployment,\r\n DeploymentDiagnosticsDefinition,\r\n ErrorResponse,\r\n} from \"@azure/arm-resources\";\r\nimport { DeploymentStack } from \"@azure/arm-resourcesdeploymentstacks\";\r\nimport { PipelineResponse, RestError } from \"@azure/core-rest-pipeline\";\r\nimport { OperationOptions } from \"@azure/core-client\";\r\n\r\nimport {\r\n ActionConfig,\r\n DeploymentsConfig,\r\n DeploymentStackConfig,\r\n ManagementGroupScope,\r\n ResourceGroupScope,\r\n ScopeType,\r\n SubscriptionScope,\r\n TenantScope,\r\n} from \"./config\";\r\nimport { ParsedFiles } from \"./helpers/file\";\r\nimport { createDeploymentClient, createStacksClient } from \"./helpers/azure\";\r\nimport { logError, logInfo, logInfoRaw, logWarning } from \"./helpers/logging\";\r\nimport { formatWhatIfOperationResult } from \"./helpers/whatif\";\r\n\r\nconst defaultName = \"azure-bicep-deploy\";\r\n\r\n// workaround until we're able to pick up https://github.com/Azure/azure-sdk-for-js/pull/25500\r\nclass CustomPollingError {\r\n response: PipelineResponse;\r\n details: CloudError;\r\n constructor(details: CloudError, response: PipelineResponse) {\r\n this.details = details;\r\n this.response = response;\r\n }\r\n}\r\n\r\n// workaround until we're able to pick up https://github.com/Azure/azure-sdk-for-js/pull/25500\r\nfunction getCreateOperationOptions(): OperationOptions {\r\n return {\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n onResponse: (rawResponse, flatResponse: any) => {\r\n if (\r\n flatResponse &&\r\n flatResponse.error &&\r\n flatResponse.error.code &&\r\n flatResponse.error.message\r\n ) {\r\n throw new CustomPollingError(flatResponse, rawResponse);\r\n }\r\n },\r\n };\r\n}\r\n\r\nfunction getDeploymentClient(\r\n config: ActionConfig,\r\n scope:\r\n | TenantScope\r\n | ManagementGroupScope\r\n | SubscriptionScope\r\n | ResourceGroupScope,\r\n) {\r\n const { tenantId } = scope;\r\n const subscriptionId =\r\n \"subscriptionId\" in scope ? scope.subscriptionId : undefined;\r\n\r\n return createDeploymentClient(config, subscriptionId, tenantId);\r\n}\r\n\r\nfunction getStacksClient(\r\n config: ActionConfig,\r\n scope:\r\n | TenantScope\r\n | ManagementGroupScope\r\n | SubscriptionScope\r\n | ResourceGroupScope,\r\n) {\r\n const { tenantId } = scope;\r\n const subscriptionId =\r\n \"subscriptionId\" in scope ? scope.subscriptionId : undefined;\r\n\r\n return createStacksClient(config, subscriptionId, tenantId);\r\n}\r\n\r\nexport async function execute(config: ActionConfig, files: ParsedFiles) {\r\n try {\r\n validateFileScope(config, files);\r\n switch (config.type) {\r\n case \"deployment\": {\r\n switch (config.operation) {\r\n case \"create\": {\r\n await tryWithErrorHandling(\r\n async () => {\r\n const result = await deploymentCreate(config, files);\r\n setCreateOutputs(config, result?.properties?.outputs);\r\n },\r\n error => {\r\n logError(JSON.stringify(error, null, 2));\r\n setFailed(\"Create failed\");\r\n },\r\n );\r\n break;\r\n }\r\n case \"validate\": {\r\n await tryWithErrorHandling(\r\n async () => {\r\n const result = await deploymentValidate(config, files);\r\n logDiagnostics(result?.properties?.diagnostics ?? []);\r\n },\r\n error => {\r\n logError(JSON.stringify(error, null, 2));\r\n setFailed(\"Validation failed\");\r\n },\r\n );\r\n break;\r\n }\r\n case \"whatIf\": {\r\n const result = await deploymentWhatIf(config, files);\r\n const formatted = formatWhatIfOperationResult(result, \"ansii\");\r\n logInfoRaw(formatted);\r\n logDiagnostics(result.diagnostics ?? []);\r\n break;\r\n }\r\n }\r\n break;\r\n }\r\n case \"deploymentStack\": {\r\n switch (config.operation) {\r\n case \"create\": {\r\n await tryWithErrorHandling(\r\n async () => {\r\n const result = await stackCreate(config, files);\r\n setCreateOutputs(config, result?.properties?.outputs);\r\n },\r\n error => {\r\n logError(JSON.stringify(error, null, 2));\r\n setFailed(\"Create failed\");\r\n },\r\n );\r\n break;\r\n }\r\n case \"validate\": {\r\n await tryWithErrorHandling(\r\n () => stackValidate(config, files),\r\n error => {\r\n logError(JSON.stringify(error, null, 2));\r\n setFailed(\"Validation failed\");\r\n },\r\n );\r\n break;\r\n }\r\n case \"delete\": {\r\n await stackDelete(config);\r\n break;\r\n }\r\n }\r\n break;\r\n }\r\n }\r\n } catch (error) {\r\n if (error instanceof RestError && error.response?.bodyAsText) {\r\n const correlationId = error.response.headers.get(\r\n \"x-ms-correlation-request-id\",\r\n );\r\n logError(`Request failed. CorrelationId: ${correlationId}`);\r\n\r\n const responseBody = JSON.parse(error.response.bodyAsText);\r\n logError(JSON.stringify(responseBody, null, 2));\r\n }\r\n\r\n setFailed(\"Operation failed\");\r\n throw error;\r\n }\r\n}\r\n\r\nfunction setCreateOutputs(\r\n config: ActionConfig,\r\n outputs?: Record,\r\n) {\r\n if (!outputs) {\r\n return;\r\n }\r\n\r\n for (const key of Object.keys(outputs)) {\r\n const output = outputs[key] as { value: string };\r\n setOutput(key, output.value);\r\n if (\r\n config.maskedOutputs &&\r\n config.maskedOutputs.some(x => x.toLowerCase() === key.toLowerCase())\r\n ) {\r\n setSecret(output.value);\r\n }\r\n }\r\n}\r\n\r\nasync function deploymentCreate(config: DeploymentsConfig, files: ParsedFiles) {\r\n const name = config.name ?? defaultName;\r\n const scope = config.scope;\r\n const client = getDeploymentClient(config, scope);\r\n const deployment = getDeployment(config, files);\r\n\r\n switch (scope.type) {\r\n case \"resourceGroup\":\r\n return await client.deployments.beginCreateOrUpdateAndWait(\r\n scope.resourceGroup,\r\n name,\r\n deployment,\r\n getCreateOperationOptions(),\r\n );\r\n case \"subscription\":\r\n return await client.deployments.beginCreateOrUpdateAtSubscriptionScopeAndWait(\r\n name,\r\n {\r\n ...deployment,\r\n location: requireLocation(config),\r\n },\r\n getCreateOperationOptions(),\r\n );\r\n case \"managementGroup\":\r\n return await client.deployments.beginCreateOrUpdateAtManagementGroupScopeAndWait(\r\n scope.managementGroup,\r\n name,\r\n {\r\n ...deployment,\r\n location: requireLocation(config),\r\n },\r\n getCreateOperationOptions(),\r\n );\r\n case \"tenant\":\r\n return await client.deployments.beginCreateOrUpdateAtTenantScopeAndWait(\r\n name,\r\n {\r\n ...deployment,\r\n location: requireLocation(config),\r\n },\r\n getCreateOperationOptions(),\r\n );\r\n }\r\n}\r\n\r\nasync function deploymentValidate(\r\n config: DeploymentsConfig,\r\n files: ParsedFiles,\r\n) {\r\n const name = config.name ?? defaultName;\r\n const scope = config.scope;\r\n const client = getDeploymentClient(config, scope);\r\n const deployment = getDeployment(config, files);\r\n\r\n switch (scope.type) {\r\n case \"resourceGroup\":\r\n return await client.deployments.beginValidateAndWait(\r\n scope.resourceGroup,\r\n name,\r\n deployment,\r\n );\r\n case \"subscription\":\r\n return await client.deployments.beginValidateAtSubscriptionScopeAndWait(\r\n name,\r\n {\r\n ...deployment,\r\n location: requireLocation(config),\r\n },\r\n );\r\n case \"managementGroup\":\r\n return await client.deployments.beginValidateAtManagementGroupScopeAndWait(\r\n scope.managementGroup,\r\n name,\r\n {\r\n ...deployment,\r\n location: requireLocation(config),\r\n },\r\n );\r\n case \"tenant\":\r\n await client.deployments.beginValidateAtTenantScopeAndWait(name, {\r\n ...deployment,\r\n location: requireLocation(config),\r\n });\r\n }\r\n}\r\n\r\nasync function deploymentWhatIf(config: DeploymentsConfig, files: ParsedFiles) {\r\n const deploymentName = config.name ?? defaultName;\r\n const scope = config.scope;\r\n const client = getDeploymentClient(config, scope);\r\n const deployment = getDeployment(config, files);\r\n\r\n switch (scope.type) {\r\n case \"resourceGroup\":\r\n return await client.deployments.beginWhatIfAndWait(\r\n scope.resourceGroup,\r\n deploymentName,\r\n deployment,\r\n );\r\n case \"subscription\":\r\n return await client.deployments.beginWhatIfAtSubscriptionScopeAndWait(\r\n deploymentName,\r\n {\r\n ...deployment,\r\n location: requireLocation(config),\r\n },\r\n );\r\n case \"managementGroup\":\r\n return await client.deployments.beginWhatIfAtManagementGroupScopeAndWait(\r\n scope.managementGroup,\r\n deploymentName,\r\n {\r\n ...deployment,\r\n location: requireLocation(config),\r\n },\r\n );\r\n case \"tenant\":\r\n return await client.deployments.beginWhatIfAtTenantScopeAndWait(\r\n deploymentName,\r\n {\r\n ...deployment,\r\n location: requireLocation(config),\r\n },\r\n );\r\n }\r\n}\r\n\r\nfunction getDeployment(\r\n config: DeploymentsConfig,\r\n files: ParsedFiles,\r\n): Deployment {\r\n const { templateContents, templateSpecId, parametersContents } = files;\r\n\r\n return {\r\n location: config.location,\r\n properties: {\r\n mode: \"Incremental\",\r\n template: templateContents,\r\n templateLink: templateSpecId\r\n ? {\r\n id: templateSpecId,\r\n }\r\n : undefined,\r\n parameters: parametersContents[\"parameters\"],\r\n expressionEvaluationOptions: {\r\n scope: \"inner\",\r\n },\r\n validationLevel: config.validationLevel,\r\n },\r\n tags: config.tags,\r\n };\r\n}\r\n\r\nasync function stackCreate(config: DeploymentStackConfig, files: ParsedFiles) {\r\n const name = config.name ?? defaultName;\r\n const scope = config.scope;\r\n const client = getStacksClient(config, scope);\r\n const stack = getStack(config, files);\r\n\r\n switch (scope.type) {\r\n case \"resourceGroup\":\r\n return await client.deploymentStacks.beginCreateOrUpdateAtResourceGroupAndWait(\r\n scope.resourceGroup,\r\n name,\r\n stack,\r\n getCreateOperationOptions(),\r\n );\r\n case \"subscription\":\r\n return await client.deploymentStacks.beginCreateOrUpdateAtSubscriptionAndWait(\r\n name,\r\n {\r\n ...stack,\r\n location: requireLocation(config),\r\n },\r\n getCreateOperationOptions(),\r\n );\r\n case \"managementGroup\":\r\n return await client.deploymentStacks.beginCreateOrUpdateAtManagementGroupAndWait(\r\n scope.managementGroup,\r\n name,\r\n {\r\n ...stack,\r\n location: requireLocation(config),\r\n },\r\n getCreateOperationOptions(),\r\n );\r\n }\r\n}\r\n\r\nasync function stackValidate(\r\n config: DeploymentStackConfig,\r\n files: ParsedFiles,\r\n) {\r\n const name = config.name ?? defaultName;\r\n const scope = config.scope;\r\n const client = getStacksClient(config, scope);\r\n const stack = getStack(config, files);\r\n\r\n switch (scope.type) {\r\n case \"resourceGroup\":\r\n return await client.deploymentStacks.beginValidateStackAtResourceGroupAndWait(\r\n scope.resourceGroup,\r\n name,\r\n stack,\r\n );\r\n case \"subscription\":\r\n return await client.deploymentStacks.beginValidateStackAtSubscriptionAndWait(\r\n name,\r\n {\r\n ...stack,\r\n location: requireLocation(config),\r\n },\r\n );\r\n case \"managementGroup\":\r\n return await client.deploymentStacks.beginValidateStackAtManagementGroupAndWait(\r\n scope.managementGroup,\r\n name,\r\n {\r\n ...stack,\r\n location: requireLocation(config),\r\n },\r\n );\r\n }\r\n}\r\n\r\nasync function stackDelete(config: DeploymentStackConfig) {\r\n const name = config.name ?? defaultName;\r\n const scope = config.scope;\r\n const client = getStacksClient(config, scope);\r\n const deletionOptions = getStackDeletionOptions(config);\r\n\r\n switch (scope.type) {\r\n case \"resourceGroup\":\r\n return await client.deploymentStacks.beginDeleteAtResourceGroupAndWait(\r\n scope.resourceGroup,\r\n name,\r\n deletionOptions,\r\n );\r\n case \"subscription\":\r\n return await client.deploymentStacks.beginDeleteAtSubscriptionAndWait(\r\n name,\r\n deletionOptions,\r\n );\r\n case \"managementGroup\":\r\n return await client.deploymentStacks.beginDeleteAtManagementGroupAndWait(\r\n scope.managementGroup,\r\n name,\r\n deletionOptions,\r\n );\r\n }\r\n}\r\n\r\nfunction getStack(\r\n config: DeploymentStackConfig,\r\n files: ParsedFiles,\r\n): DeploymentStack {\r\n const { templateContents, templateSpecId, parametersContents } = files;\r\n\r\n return {\r\n properties: {\r\n template: templateContents,\r\n templateLink: templateSpecId\r\n ? {\r\n id: templateSpecId,\r\n }\r\n : undefined,\r\n parameters: parametersContents[\"parameters\"],\r\n description: config.description,\r\n actionOnUnmanage: config.actionOnUnManage,\r\n denySettings: config.denySettings,\r\n bypassStackOutOfSyncError: config.bypassStackOutOfSyncError,\r\n },\r\n tags: config.tags,\r\n };\r\n}\r\n\r\nfunction getStackDeletionOptions(config: DeploymentStackConfig) {\r\n return {\r\n unmanageActionResources: config.actionOnUnManage.resources,\r\n unmanageActionResourceGroups: config.actionOnUnManage.resourceGroups,\r\n unmanageActionManagementGroups: config.actionOnUnManage.managementGroups,\r\n bypassStackOutOfSyncError: config.bypassStackOutOfSyncError,\r\n };\r\n}\r\n\r\nfunction requireLocation(config: ActionConfig) {\r\n // this just exists to make typescript's validation happy.\r\n // it should only be called in places where we've already validated the location is set.\r\n if (!config.location) {\r\n throw new Error(\"Location is required\");\r\n }\r\n\r\n return config.location;\r\n}\r\n\r\nasync function tryWithErrorHandling(\r\n action: () => Promise,\r\n onError: (error: ErrorResponse) => void,\r\n): Promise {\r\n try {\r\n return await action();\r\n } catch (ex) {\r\n if (ex instanceof RestError) {\r\n const correlationId = ex.response?.headers.get(\r\n \"x-ms-correlation-request-id\",\r\n );\r\n logError(`Request failed. CorrelationId: ${correlationId}`);\r\n\r\n const { error } = ex.details as CloudError;\r\n if (error) {\r\n onError(error);\r\n return;\r\n }\r\n }\r\n\r\n if (ex instanceof CustomPollingError) {\r\n const correlationId = ex.response?.headers.get(\r\n \"x-ms-correlation-request-id\",\r\n );\r\n logError(`Request failed. CorrelationId: ${correlationId}`);\r\n\r\n const { error } = ex.details;\r\n if (error) {\r\n onError(error);\r\n return;\r\n }\r\n }\r\n\r\n throw ex;\r\n }\r\n}\r\n\r\nexport function validateFileScope(config: ActionConfig, files: ParsedFiles) {\r\n const scope = getScope(files);\r\n if (!scope) {\r\n return;\r\n }\r\n\r\n if (scope !== config.scope.type) {\r\n throw new Error(\r\n `The target scope ${scope} does not match the deployment scope ${config.scope.type}.`,\r\n );\r\n }\r\n}\r\n\r\nfunction getScope(files: ParsedFiles): ScopeType | undefined {\r\n const template = files.templateContents ?? {};\r\n const bicepGenerated = template.metadata?._generator?.name;\r\n const schema = template[\"$schema\"];\r\n\r\n if (!bicepGenerated) {\r\n // loose validation for non-Bicep generated templates, to match Azure CLI behavior\r\n return;\r\n }\r\n\r\n const result =\r\n /https:\\/\\/schema\\.management\\.azure\\.com\\/schemas\\/[0-9a-zA-Z-]+\\/([a-zA-Z]+)Template\\.json#?/.exec(\r\n schema,\r\n );\r\n const scopeMatch = result ? result[1].toLowerCase() : null;\r\n\r\n switch (scopeMatch) {\r\n case \"tenantdeployment\":\r\n return \"tenant\";\r\n case \"managementgroupdeployment\":\r\n return \"managementGroup\";\r\n case \"subscriptiondeployment\":\r\n return \"subscription\";\r\n case \"deployment\":\r\n return \"resourceGroup\";\r\n default:\r\n throw new Error(`Failed to determine deployment scope from Bicep file.`);\r\n }\r\n}\r\n\r\nfunction logDiagnostics(diagnostics: DeploymentDiagnosticsDefinition[]) {\r\n if (diagnostics.length === 0) {\r\n return;\r\n }\r\n\r\n logInfo(\"Diagnostics returned by the API\");\r\n\r\n for (const diagnostic of diagnostics) {\r\n const message = `[${diagnostic.level}] ${diagnostic.code}: ${diagnostic.message}`;\r\n switch (diagnostic.level.toLowerCase()) {\r\n case \"error\":\r\n logError(message);\r\n break;\r\n case \"warning\":\r\n logWarning(message);\r\n break;\r\n default:\r\n logInfo(message);\r\n break;\r\n }\r\n }\r\n}\r\n", "// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { HttpClient, PipelineRequest, PipelineResponse, SendRequest } from \"./interfaces.js\";\n\n/**\n * Policies are executed in phases.\n * The execution order is:\n * 1. Serialize Phase\n * 2. Policies not in a phase\n * 3. Deserialize Phase\n * 4. Retry Phase\n * 5. Sign Phase\n */\nexport type PipelinePhase = \"Deserialize\" | \"Serialize\" | \"Retry\" | \"Sign\";\n\nconst ValidPhaseNames = new Set([\"Deserialize\", \"Serialize\", \"Retry\", \"Sign\"]);\n\n/**\n * Options when adding a policy to the pipeline.\n * Used to express dependencies on other policies.\n */\nexport interface AddPolicyOptions {\n /**\n * Policies that this policy must come before.\n */\n beforePolicies?: string[];\n /**\n * Policies that this policy must come after.\n */\n afterPolicies?: string[];\n /**\n * The phase that this policy must come after.\n */\n afterPhase?: PipelinePhase;\n /**\n * The phase this policy belongs to.\n */\n phase?: PipelinePhase;\n}\n\n/**\n * A pipeline policy manipulates a request as it travels through the pipeline.\n * It is conceptually a middleware that is allowed to modify the request before\n * it is made as well as the response when it is received.\n */\nexport interface PipelinePolicy {\n /**\n * The policy name. Must be a unique string in the pipeline.\n */\n name: string;\n /**\n * The main method to implement that manipulates a request/response.\n * @param request - The request being performed.\n * @param next - The next policy in the pipeline. Must be called to continue the pipeline.\n */\n sendRequest(request: PipelineRequest, next: SendRequest): Promise;\n}\n\n/**\n * Represents a pipeline for making a HTTP request to a URL.\n * Pipelines can have multiple policies to manage manipulating each request\n * before and after it is made to the server.\n */\nexport interface Pipeline {\n /**\n * Add a new policy to the pipeline.\n * @param policy - A policy that manipulates a request.\n * @param options - A set of options for when the policy should run.\n */\n addPolicy(policy: PipelinePolicy, options?: AddPolicyOptions): void;\n /**\n * Remove a policy from the pipeline.\n * @param options - Options that let you specify which policies to remove.\n */\n removePolicy(options: { name?: string; phase?: PipelinePhase }): PipelinePolicy[];\n /**\n * Uses the pipeline to make a HTTP request.\n * @param httpClient - The HttpClient that actually performs the request.\n * @param request - The request to be made.\n */\n sendRequest(httpClient: HttpClient, request: PipelineRequest): Promise;\n /**\n * Returns the current set of policies in the pipeline in the order in which\n * they will be applied to the request. Later in the list is closer to when\n * the request is performed.\n */\n getOrderedPolicies(): PipelinePolicy[];\n /**\n * Duplicates this pipeline to allow for modifying an existing one without mutating it.\n */\n clone(): Pipeline;\n}\n\ninterface PipelineDescriptor {\n policy: PipelinePolicy;\n options: AddPolicyOptions;\n}\n\ninterface PolicyGraphNode {\n policy: PipelinePolicy;\n dependsOn: Set;\n dependants: Set;\n afterPhase?: Phase;\n}\n\ninterface Phase {\n name: PipelinePhase | \"None\";\n policies: Set;\n hasRun: boolean;\n hasAfterPolicies: boolean;\n}\n\n/**\n * A private implementation of Pipeline.\n * Do not export this class from the package.\n * @internal\n */\nclass HttpPipeline implements Pipeline {\n private _policies: PipelineDescriptor[] = [];\n private _orderedPolicies?: PipelinePolicy[];\n\n private constructor(policies?: PipelineDescriptor[]) {\n this._policies = policies?.slice(0) ?? [];\n this._orderedPolicies = undefined;\n }\n\n public addPolicy(policy: PipelinePolicy, options: AddPolicyOptions = {}): void {\n if (options.phase && options.afterPhase) {\n throw new Error(\"Policies inside a phase cannot specify afterPhase.\");\n }\n if (options.phase && !ValidPhaseNames.has(options.phase)) {\n throw new Error(`Invalid phase name: ${options.phase}`);\n }\n if (options.afterPhase && !ValidPhaseNames.has(options.afterPhase)) {\n throw new Error(`Invalid afterPhase name: ${options.afterPhase}`);\n }\n this._policies.push({\n policy,\n options,\n });\n this._orderedPolicies = undefined;\n }\n\n public removePolicy(options: { name?: string; phase?: string }): PipelinePolicy[] {\n const removedPolicies: PipelinePolicy[] = [];\n\n this._policies = this._policies.filter((policyDescriptor) => {\n if (\n (options.name && policyDescriptor.policy.name === options.name) ||\n (options.phase && policyDescriptor.options.phase === options.phase)\n ) {\n removedPolicies.push(policyDescriptor.policy);\n return false;\n } else {\n return true;\n }\n });\n this._orderedPolicies = undefined;\n\n return removedPolicies;\n }\n\n public sendRequest(httpClient: HttpClient, request: PipelineRequest): Promise {\n const policies = this.getOrderedPolicies();\n\n const pipeline = policies.reduceRight(\n (next, policy) => {\n return (req: PipelineRequest) => {\n return policy.sendRequest(req, next);\n };\n },\n (req: PipelineRequest) => httpClient.sendRequest(req),\n );\n\n return pipeline(request);\n }\n\n public getOrderedPolicies(): PipelinePolicy[] {\n if (!this._orderedPolicies) {\n this._orderedPolicies = this.orderPolicies();\n }\n return this._orderedPolicies;\n }\n\n public clone(): Pipeline {\n return new HttpPipeline(this._policies);\n }\n\n public static create(): Pipeline {\n return new HttpPipeline();\n }\n\n private orderPolicies(): PipelinePolicy[] {\n /**\n * The goal of this method is to reliably order pipeline policies\n * based on their declared requirements when they were added.\n *\n * Order is first determined by phase:\n *\n * 1. Serialize Phase\n * 2. Policies not in a phase\n * 3. Deserialize Phase\n * 4. Retry Phase\n * 5. Sign Phase\n *\n * Within each phase, policies are executed in the order\n * they were added unless they were specified to execute\n * before/after other policies or after a particular phase.\n *\n * To determine the final order, we will walk the policy list\n * in phase order multiple times until all dependencies are\n * satisfied.\n *\n * `afterPolicies` are the set of policies that must be\n * executed before a given policy. This requirement is\n * considered satisfied when each of the listed policies\n * have been scheduled.\n *\n * `beforePolicies` are the set of policies that must be\n * executed after a given policy. Since this dependency\n * can be expressed by converting it into a equivalent\n * `afterPolicies` declarations, they are normalized\n * into that form for simplicity.\n *\n * An `afterPhase` dependency is considered satisfied when all\n * policies in that phase have scheduled.\n *\n */\n const result: PipelinePolicy[] = [];\n\n // Track all policies we know about.\n const policyMap: Map = new Map();\n\n function createPhase(name: PipelinePhase | \"None\"): Phase {\n return {\n name,\n policies: new Set(),\n hasRun: false,\n hasAfterPolicies: false,\n };\n }\n\n // Track policies for each phase.\n const serializePhase = createPhase(\"Serialize\");\n const noPhase = createPhase(\"None\");\n const deserializePhase = createPhase(\"Deserialize\");\n const retryPhase = createPhase(\"Retry\");\n const signPhase = createPhase(\"Sign\");\n\n // a list of phases in order\n const orderedPhases = [serializePhase, noPhase, deserializePhase, retryPhase, signPhase];\n\n // Small helper function to map phase name to each Phase\n function getPhase(phase: PipelinePhase | undefined): Phase {\n if (phase === \"Retry\") {\n return retryPhase;\n } else if (phase === \"Serialize\") {\n return serializePhase;\n } else if (phase === \"Deserialize\") {\n return deserializePhase;\n } else if (phase === \"Sign\") {\n return signPhase;\n } else {\n return noPhase;\n }\n }\n\n // First walk each policy and create a node to track metadata.\n for (const descriptor of this._policies) {\n const policy = descriptor.policy;\n const options = descriptor.options;\n const policyName = policy.name;\n if (policyMap.has(policyName)) {\n throw new Error(\"Duplicate policy names not allowed in pipeline\");\n }\n const node: PolicyGraphNode = {\n policy,\n dependsOn: new Set(),\n dependants: new Set(),\n };\n if (options.afterPhase) {\n node.afterPhase = getPhase(options.afterPhase);\n node.afterPhase.hasAfterPolicies = true;\n }\n policyMap.set(policyName, node);\n const phase = getPhase(options.phase);\n phase.policies.add(node);\n }\n\n // Now that each policy has a node, connect dependency references.\n for (const descriptor of this._policies) {\n const { policy, options } = descriptor;\n const policyName = policy.name;\n const node = policyMap.get(policyName);\n if (!node) {\n throw new Error(`Missing node for policy ${policyName}`);\n }\n\n if (options.afterPolicies) {\n for (const afterPolicyName of options.afterPolicies) {\n const afterNode = policyMap.get(afterPolicyName);\n if (afterNode) {\n // Linking in both directions helps later\n // when we want to notify dependants.\n node.dependsOn.add(afterNode);\n afterNode.dependants.add(node);\n }\n }\n }\n if (options.beforePolicies) {\n for (const beforePolicyName of options.beforePolicies) {\n const beforeNode = policyMap.get(beforePolicyName);\n if (beforeNode) {\n // To execute before another node, make it\n // depend on the current node.\n beforeNode.dependsOn.add(node);\n node.dependants.add(beforeNode);\n }\n }\n }\n }\n\n function walkPhase(phase: Phase): void {\n phase.hasRun = true;\n // Sets iterate in insertion order\n for (const node of phase.policies) {\n if (node.afterPhase && (!node.afterPhase.hasRun || node.afterPhase.policies.size)) {\n // If this node is waiting on a phase to complete,\n // we need to skip it for now.\n // Even if the phase is empty, we should wait for it\n // to be walked to avoid re-ordering policies.\n continue;\n }\n if (node.dependsOn.size === 0) {\n // If there's nothing else we're waiting for, we can\n // add this policy to the result list.\n result.push(node.policy);\n // Notify anything that depends on this policy that\n // the policy has been scheduled.\n for (const dependant of node.dependants) {\n dependant.dependsOn.delete(node);\n }\n policyMap.delete(node.policy.name);\n phase.policies.delete(node);\n }\n }\n }\n\n function walkPhases(): void {\n for (const phase of orderedPhases) {\n walkPhase(phase);\n // if the phase isn't complete\n if (phase.policies.size > 0 && phase !== noPhase) {\n if (!noPhase.hasRun) {\n // Try running noPhase to see if that unblocks this phase next tick.\n // This can happen if a phase that happens before noPhase\n // is waiting on a noPhase policy to complete.\n walkPhase(noPhase);\n }\n // Don't proceed to the next phase until this phase finishes.\n return;\n }\n\n if (phase.hasAfterPolicies) {\n // Run any policies unblocked by this phase\n walkPhase(noPhase);\n }\n }\n }\n\n // Iterate until we've put every node in the result list.\n let iteration = 0;\n while (policyMap.size > 0) {\n iteration++;\n const initialResultLength = result.length;\n // Keep walking each phase in order until we can order every node.\n walkPhases();\n // The result list *should* get at least one larger each time\n // after the first full pass.\n // Otherwise, we're going to loop forever.\n if (result.length <= initialResultLength && iteration > 1) {\n throw new Error(\"Cannot satisfy policy dependencies due to requirements cycle.\");\n }\n }\n\n return result;\n }\n}\n\n/**\n * Creates a totally empty pipeline.\n * Useful for testing or creating a custom one.\n */\nexport function createEmptyPipeline(): Pipeline {\n return HttpPipeline.create();\n}\n", "// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport { EOL } from \"node:os\";\nimport util from \"node:util\";\nimport * as process from \"node:process\";\n\nexport function log(message: unknown, ...args: any[]): void {\n process.stderr.write(`${util.format(message, ...args)}${EOL}`);\n}\n", "// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport { log } from \"./log.js\";\n\n/**\n * A simple mechanism for enabling logging.\n * Intended to mimic the publicly available `debug` package.\n */\nexport interface Debug {\n /**\n * Creates a new logger with the given namespace.\n */\n (namespace: string): Debugger;\n /**\n * The default log method (defaults to console)\n */\n log: (...args: any[]) => void;\n /**\n * Enables a particular set of namespaces.\n * To enable multiple separate them with commas, e.g. \"info,debug\".\n * Supports wildcards, e.g. \"azure:*\"\n * Supports skip syntax, e.g. \"azure:*,-azure:storage:*\" will enable\n * everything under azure except for things under azure:storage.\n */\n enable: (namespaces: string) => void;\n /**\n * Checks if a particular namespace is enabled.\n */\n enabled: (namespace: string) => boolean;\n /**\n * Disables all logging, returns what was previously enabled.\n */\n disable: () => string;\n}\n\n/**\n * A log function that can be dynamically enabled and redirected.\n */\nexport interface Debugger {\n /**\n * Logs the given arguments to the `log` method.\n */\n (...args: any[]): void;\n /**\n * True if this logger is active and logging.\n */\n enabled: boolean;\n /**\n * Used to cleanup/remove this logger.\n */\n destroy: () => boolean;\n /**\n * The current log method. Can be overridden to redirect output.\n */\n log: (...args: any[]) => void;\n /**\n * The namespace of this logger.\n */\n namespace: string;\n /**\n * Extends this logger with a child namespace.\n * Namespaces are separated with a ':' character.\n */\n extend: (namespace: string) => Debugger;\n}\n\nconst debugEnvVariable =\n (typeof process !== \"undefined\" && process.env && process.env.DEBUG) || undefined;\n\nlet enabledString: string | undefined;\nlet enabledNamespaces: RegExp[] = [];\nlet skippedNamespaces: RegExp[] = [];\nconst debuggers: Debugger[] = [];\n\nif (debugEnvVariable) {\n enable(debugEnvVariable);\n}\n\nconst debugObj: Debug = Object.assign(\n (namespace: string): Debugger => {\n return createDebugger(namespace);\n },\n {\n enable,\n enabled,\n disable,\n log,\n },\n);\n\nfunction enable(namespaces: string): void {\n enabledString = namespaces;\n enabledNamespaces = [];\n skippedNamespaces = [];\n const wildcard = /\\*/g;\n const namespaceList = namespaces.split(\",\").map((ns) => ns.trim().replace(wildcard, \".*?\"));\n for (const ns of namespaceList) {\n if (ns.startsWith(\"-\")) {\n skippedNamespaces.push(new RegExp(`^${ns.substr(1)}$`));\n } else {\n enabledNamespaces.push(new RegExp(`^${ns}$`));\n }\n }\n for (const instance of debuggers) {\n instance.enabled = enabled(instance.namespace);\n }\n}\n\nfunction enabled(namespace: string): boolean {\n if (namespace.endsWith(\"*\")) {\n return true;\n }\n\n for (const skipped of skippedNamespaces) {\n if (skipped.test(namespace)) {\n return false;\n }\n }\n for (const enabledNamespace of enabledNamespaces) {\n if (enabledNamespace.test(namespace)) {\n return true;\n }\n }\n return false;\n}\n\nfunction disable(): string {\n const result = enabledString || \"\";\n enable(\"\");\n return result;\n}\n\nfunction createDebugger(namespace: string): Debugger {\n const newDebugger: Debugger = Object.assign(debug, {\n enabled: enabled(namespace),\n destroy,\n log: debugObj.log,\n namespace,\n extend,\n });\n\n function debug(...args: any[]): void {\n if (!newDebugger.enabled) {\n return;\n }\n if (args.length > 0) {\n args[0] = `${namespace} ${args[0]}`;\n }\n newDebugger.log(...args);\n }\n\n debuggers.push(newDebugger);\n\n return newDebugger;\n}\n\nfunction destroy(this: Debugger): boolean {\n const index = debuggers.indexOf(this);\n if (index >= 0) {\n debuggers.splice(index, 1);\n return true;\n }\n return false;\n}\n\nfunction extend(this: Debugger, namespace: string): Debugger {\n const newDebugger = createDebugger(`${this.namespace}:${namespace}`);\n newDebugger.log = this.log;\n return newDebugger;\n}\n\nexport default debugObj;\n", "// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport debug, { type Debugger } from \"./debug.js\";\nexport type { Debugger } from \"./debug.js\";\n\nconst registeredLoggers = new Set();\nconst logLevelFromEnv =\n (typeof process !== \"undefined\" && process.env && process.env.AZURE_LOG_LEVEL) || undefined;\n\nlet azureLogLevel: AzureLogLevel | undefined;\n\n/**\n * The AzureLogger provides a mechanism for overriding where logs are output to.\n * By default, logs are sent to stderr.\n * Override the `log` method to redirect logs to another location.\n */\nexport const AzureLogger: AzureClientLogger = debug(\"azure\");\nAzureLogger.log = (...args) => {\n debug.log(...args);\n};\n\n/**\n * The log levels supported by the logger.\n * The log levels in order of most verbose to least verbose are:\n * - verbose\n * - info\n * - warning\n * - error\n */\nexport type AzureLogLevel = \"verbose\" | \"info\" | \"warning\" | \"error\";\nconst AZURE_LOG_LEVELS = [\"verbose\", \"info\", \"warning\", \"error\"];\n\ntype AzureDebugger = Debugger & { level: AzureLogLevel };\n\n/**\n * An AzureClientLogger is a function that can log to an appropriate severity level.\n */\nexport type AzureClientLogger = Debugger;\n\nif (logLevelFromEnv) {\n // avoid calling setLogLevel because we don't want a mis-set environment variable to crash\n if (isAzureLogLevel(logLevelFromEnv)) {\n setLogLevel(logLevelFromEnv);\n } else {\n console.error(\n `AZURE_LOG_LEVEL set to unknown log level '${logLevelFromEnv}'; logging is not enabled. Acceptable values: ${AZURE_LOG_LEVELS.join(\n \", \",\n )}.`,\n );\n }\n}\n\n/**\n * Immediately enables logging at the specified log level. If no level is specified, logging is disabled.\n * @param level - The log level to enable for logging.\n * Options from most verbose to least verbose are:\n * - verbose\n * - info\n * - warning\n * - error\n */\nexport function setLogLevel(level?: AzureLogLevel): void {\n if (level && !isAzureLogLevel(level)) {\n throw new Error(\n `Unknown log level '${level}'. Acceptable values: ${AZURE_LOG_LEVELS.join(\",\")}`,\n );\n }\n azureLogLevel = level;\n\n const enabledNamespaces = [];\n for (const logger of registeredLoggers) {\n if (shouldEnable(logger)) {\n enabledNamespaces.push(logger.namespace);\n }\n }\n\n debug.enable(enabledNamespaces.join(\",\"));\n}\n\n/**\n * Retrieves the currently specified log level.\n */\nexport function getLogLevel(): AzureLogLevel | undefined {\n return azureLogLevel;\n}\n\nconst levelMap = {\n verbose: 400,\n info: 300,\n warning: 200,\n error: 100,\n};\n\n/**\n * Defines the methods available on the SDK-facing logger.\n */\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport interface AzureLogger {\n /**\n * Used for failures the program is unlikely to recover from,\n * such as Out of Memory.\n */\n error: Debugger;\n /**\n * Used when a function fails to perform its intended task.\n * Usually this means the function will throw an exception.\n * Not used for self-healing events (e.g. automatic retry)\n */\n warning: Debugger;\n /**\n * Used when a function operates normally.\n */\n info: Debugger;\n /**\n * Used for detailed troubleshooting scenarios. This is\n * intended for use by developers / system administrators\n * for diagnosing specific failures.\n */\n verbose: Debugger;\n}\n\n/**\n * Creates a logger for use by the Azure SDKs that inherits from `AzureLogger`.\n * @param namespace - The name of the SDK package.\n * @hidden\n */\nexport function createClientLogger(namespace: string): AzureLogger {\n const clientRootLogger: AzureClientLogger = AzureLogger.extend(namespace);\n patchLogMethod(AzureLogger, clientRootLogger);\n return {\n error: createLogger(clientRootLogger, \"error\"),\n warning: createLogger(clientRootLogger, \"warning\"),\n info: createLogger(clientRootLogger, \"info\"),\n verbose: createLogger(clientRootLogger, \"verbose\"),\n };\n}\n\nfunction patchLogMethod(parent: AzureClientLogger, child: AzureClientLogger | AzureDebugger): void {\n child.log = (...args) => {\n parent.log(...args);\n };\n}\n\nfunction createLogger(parent: AzureClientLogger, level: AzureLogLevel): AzureDebugger {\n const logger: AzureDebugger = Object.assign(parent.extend(level), {\n level,\n });\n\n patchLogMethod(parent, logger);\n\n if (shouldEnable(logger)) {\n const enabledNamespaces = debug.disable();\n debug.enable(enabledNamespaces + \",\" + logger.namespace);\n }\n\n registeredLoggers.add(logger);\n\n return logger;\n}\n\nfunction shouldEnable(logger: AzureDebugger): boolean {\n return Boolean(azureLogLevel && levelMap[logger.level] <= levelMap[azureLogLevel]);\n}\n\nfunction isAzureLogLevel(logLevel: string): logLevel is AzureLogLevel {\n return AZURE_LOG_LEVELS.includes(logLevel as any);\n}\n", "// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { createClientLogger } from \"@azure/logger\";\nexport const logger = createClientLogger(\"core-rest-pipeline\");\n", "// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\n/**\n * This error is thrown when an asynchronous operation has been aborted.\n * Check for this error by testing the `name` that the name property of the\n * error matches `\"AbortError\"`.\n *\n * @example\n * ```ts\n * const controller = new AbortController();\n * controller.abort();\n * try {\n * doAsyncWork(controller.signal)\n * } catch (e) {\n * if (e.name === 'AbortError') {\n * // handle abort error here.\n * }\n * }\n * ```\n */\nexport class AbortError extends Error {\n constructor(message?: string) {\n super(message);\n this.name = \"AbortError\";\n }\n}\n", "// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { AbortError } from \"@azure/abort-controller\";\nimport type { AbortOptions } from \"./aborterUtils.js\";\n\n/**\n * Options for the createAbortablePromise function.\n */\nexport interface CreateAbortablePromiseOptions extends AbortOptions {\n /** A function to be called if the promise was aborted */\n cleanupBeforeAbort?: () => void;\n}\n\n/**\n * Creates an abortable promise.\n * @param buildPromise - A function that takes the resolve and reject functions as parameters.\n * @param options - The options for the abortable promise.\n * @returns A promise that can be aborted.\n */\nexport function createAbortablePromise(\n buildPromise: (\n resolve: (value: T | PromiseLike) => void,\n reject: (reason?: any) => void,\n ) => void,\n options?: CreateAbortablePromiseOptions,\n): Promise {\n const { cleanupBeforeAbort, abortSignal, abortErrorMsg } = options ?? {};\n return new Promise((resolve, reject) => {\n function rejectOnAbort(): void {\n reject(new AbortError(abortErrorMsg ?? \"The operation was aborted.\"));\n }\n function removeListeners(): void {\n abortSignal?.removeEventListener(\"abort\", onAbort);\n }\n function onAbort(): void {\n cleanupBeforeAbort?.();\n removeListeners();\n rejectOnAbort();\n }\n if (abortSignal?.aborted) {\n return rejectOnAbort();\n }\n try {\n buildPromise(\n (x) => {\n removeListeners();\n resolve(x);\n },\n (x) => {\n removeListeners();\n reject(x);\n },\n );\n } catch (err) {\n reject(err);\n }\n abortSignal?.addEventListener(\"abort\", onAbort);\n });\n}\n", "// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\n/**\n * Returns a random integer value between a lower and upper bound,\n * inclusive of both bounds.\n * Note that this uses Math.random and isn't secure. If you need to use\n * this for any kind of security purpose, find a better source of random.\n * @param min - The smallest integer value allowed.\n * @param max - The largest integer value allowed.\n */\nexport function getRandomIntegerInclusive(min: number, max: number): number {\n // Make sure inputs are integers.\n min = Math.ceil(min);\n max = Math.floor(max);\n // Pick a random offset from zero to the size of the range.\n // Since Math.random() can never return 1, we have to make the range one larger\n // in order to be inclusive of the maximum value after we take the floor.\n const offset = Math.floor(Math.random() * (max - min + 1));\n return offset + min;\n}\n", "// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { AbortOptions } from \"./aborterUtils.js\";\nimport { createAbortablePromise } from \"./createAbortablePromise.js\";\nimport { getRandomIntegerInclusive } from \"./random.js\";\n\nconst StandardAbortMessage = \"The delay was aborted.\";\n\n/**\n * Options for support abort functionality for the delay method\n */\nexport interface DelayOptions extends AbortOptions {}\n\n/**\n * A wrapper for setTimeout that resolves a promise after timeInMs milliseconds.\n * @param timeInMs - The number of milliseconds to be delayed.\n * @param options - The options for delay - currently abort options\n * @returns Promise that is resolved after timeInMs\n */\nexport function delay(timeInMs: number, options?: DelayOptions): Promise {\n let token: ReturnType;\n const { abortSignal, abortErrorMsg } = options ?? {};\n return createAbortablePromise(\n (resolve) => {\n token = setTimeout(resolve, timeInMs);\n },\n {\n cleanupBeforeAbort: () => clearTimeout(token),\n abortSignal,\n abortErrorMsg: abortErrorMsg ?? StandardAbortMessage,\n },\n );\n}\n\n/**\n * Calculates the delay interval for retry attempts using exponential delay with jitter.\n * @param retryAttempt - The current retry attempt number.\n * @param config - The exponential retry configuration.\n * @returns An object containing the calculated retry delay.\n */\nexport function calculateRetryDelay(\n retryAttempt: number,\n config: {\n retryDelayInMs: number;\n maxRetryDelayInMs: number;\n },\n): { retryAfterInMs: number } {\n // Exponentially increase the delay each time\n const exponentialDelay = config.retryDelayInMs * Math.pow(2, retryAttempt);\n\n // Don't let the delay exceed the maximum\n const clampedDelay = Math.min(config.maxRetryDelayInMs, exponentialDelay);\n\n // Allow the final value to have some \"jitter\" (within 50% of the delay size) so\n // that retries across multiple clients don't occur simultaneously.\n const retryAfterInMs = clampedDelay / 2 + getRandomIntegerInclusive(0, clampedDelay / 2);\n\n return { retryAfterInMs };\n}\n", "// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\n/**\n * A generic shape for a plain JS object.\n */\nexport type UnknownObject = { [s: string]: unknown };\n\n/**\n * Helper to determine when an input is a generic JS object.\n * @returns true when input is an object type that is not null, Array, RegExp, or Date.\n */\nexport function isObject(input: unknown): input is UnknownObject {\n return (\n typeof input === \"object\" &&\n input !== null &&\n !Array.isArray(input) &&\n !(input instanceof RegExp) &&\n !(input instanceof Date)\n );\n}\n", "// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { isObject } from \"./object.js\";\n\n/**\n * Typeguard for an error object shape (has name and message)\n * @param e - Something caught by a catch clause.\n */\nexport function isError(e: unknown): e is Error {\n if (isObject(e)) {\n const hasName = typeof e.name === \"string\";\n const hasMessage = typeof e.message === \"string\";\n return hasName && hasMessage;\n }\n return false;\n}\n\n/**\n * Given what is thought to be an error object, return the message if possible.\n * If the message is missing, returns a stringified version of the input.\n * @param e - Something thrown from a try block\n * @returns The error message or a string of the input\n */\nexport function getErrorMessage(e: unknown): string {\n if (isError(e)) {\n return e.message;\n } else {\n let stringified: string;\n try {\n if (typeof e === \"object\" && e) {\n stringified = JSON.stringify(e);\n } else {\n stringified = String(e);\n }\n } catch (err: any) {\n stringified = \"[unable to stringify input]\";\n }\n return `Unknown error ${stringified}`;\n }\n}\n", "// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { randomUUID as v4RandomUUID } from \"crypto\";\n\ninterface Crypto {\n randomUUID(): string;\n}\n\ndeclare const globalThis: {\n crypto: Crypto;\n};\n\n// NOTE: This is a workaround until we can use `globalThis.crypto.randomUUID` in Node.js 19+.\nconst uuidFunction =\n typeof globalThis?.crypto?.randomUUID === \"function\"\n ? globalThis.crypto.randomUUID.bind(globalThis.crypto)\n : v4RandomUUID;\n\n/**\n * Generated Universally Unique Identifier\n *\n * @returns RFC4122 v4 UUID.\n */\nexport function randomUUID(): string {\n return uuidFunction();\n}\n", "// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\ninterface Window {\n document: unknown;\n}\n\ninterface DedicatedWorkerGlobalScope {\n constructor: {\n name: string;\n };\n\n importScripts: (...paths: string[]) => void;\n}\n\ninterface Navigator {\n product: string;\n}\n\ninterface DenoGlobal {\n version: {\n deno: string;\n };\n}\n\ninterface BunGlobal {\n version: string;\n}\n\n// eslint-disable-next-line @azure/azure-sdk/ts-no-window\ndeclare const window: Window;\ndeclare const self: DedicatedWorkerGlobalScope;\ndeclare const Deno: DenoGlobal;\ndeclare const Bun: BunGlobal;\ndeclare const navigator: Navigator;\n\n/**\n * A constant that indicates whether the environment the code is running is a Web Browser.\n */\n// eslint-disable-next-line @azure/azure-sdk/ts-no-window\nexport const isBrowser = typeof window !== \"undefined\" && typeof window.document !== \"undefined\";\n\n/**\n * A constant that indicates whether the environment the code is running is a Web Worker.\n */\nexport const isWebWorker =\n typeof self === \"object\" &&\n typeof self?.importScripts === \"function\" &&\n (self.constructor?.name === \"DedicatedWorkerGlobalScope\" ||\n self.constructor?.name === \"ServiceWorkerGlobalScope\" ||\n self.constructor?.name === \"SharedWorkerGlobalScope\");\n\n/**\n * A constant that indicates whether the environment the code is running is Deno.\n */\nexport const isDeno =\n typeof Deno !== \"undefined\" &&\n typeof Deno.version !== \"undefined\" &&\n typeof Deno.version.deno !== \"undefined\";\n\n/**\n * A constant that indicates whether the environment the code is running is Bun.sh.\n */\nexport const isBun = typeof Bun !== \"undefined\" && typeof Bun.version !== \"undefined\";\n\n/**\n * A constant that indicates whether the environment the code is running is a Node.js compatible environment.\n */\nexport const isNodeLike =\n typeof globalThis.process !== \"undefined\" &&\n Boolean(globalThis.process.version) &&\n Boolean(globalThis.process.versions?.node);\n\n/**\n * A constant that indicates whether the environment the code is running is a Node.js compatible environment.\n * @deprecated Use `isNodeLike` instead.\n */\nexport const isNode = isNodeLike;\n\n/**\n * A constant that indicates whether the environment the code is running is Node.JS.\n */\nexport const isNodeRuntime = isNodeLike && !isBun && !isDeno;\n\n/**\n * A constant that indicates whether the environment the code is running is in React-Native.\n */\n// https://github.com/facebook/react-native/blob/main/packages/react-native/Libraries/Core/setUpNavigator.js\nexport const isReactNative =\n typeof navigator !== \"undefined\" && navigator?.product === \"ReactNative\";\n", "// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\n/** The supported character encoding type */\nexport type EncodingType = \"utf-8\" | \"base64\" | \"base64url\" | \"hex\";\n\n/**\n * The helper that transforms bytes with specific character encoding into string\n * @param bytes - the uint8array bytes\n * @param format - the format we use to encode the byte\n * @returns a string of the encoded string\n */\nexport function uint8ArrayToString(bytes: Uint8Array, format: EncodingType): string {\n return Buffer.from(bytes).toString(format);\n}\n\n/**\n * The helper that transforms string to specific character encoded bytes array.\n * @param value - the string to be converted\n * @param format - the format we use to decode the value\n * @returns a uint8array\n */\nexport function stringToUint8Array(value: string, format: EncodingType): Uint8Array {\n return Buffer.from(value, format);\n}\n", "// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { type UnknownObject, isObject } from \"@azure/core-util\";\n\n/**\n * @internal\n */\nexport interface SanitizerOptions {\n /**\n * Header names whose values will be logged when logging is enabled.\n * Defaults include a list of well-known safe headers. Any headers\n * specified in this field will be added to that list. Any other values will\n * be written to logs as \"REDACTED\".\n */\n additionalAllowedHeaderNames?: string[];\n\n /**\n * Query string names whose values will be logged when logging is enabled. By default no\n * query string values are logged.\n */\n additionalAllowedQueryParameters?: string[];\n}\n\nconst RedactedString = \"REDACTED\";\n\n// Make sure this list is up-to-date with the one under core/logger/Readme#Keyconcepts\nconst defaultAllowedHeaderNames = [\n \"x-ms-client-request-id\",\n \"x-ms-return-client-request-id\",\n \"x-ms-useragent\",\n \"x-ms-correlation-request-id\",\n \"x-ms-request-id\",\n \"client-request-id\",\n \"ms-cv\",\n \"return-client-request-id\",\n \"traceparent\",\n\n \"Access-Control-Allow-Credentials\",\n \"Access-Control-Allow-Headers\",\n \"Access-Control-Allow-Methods\",\n \"Access-Control-Allow-Origin\",\n \"Access-Control-Expose-Headers\",\n \"Access-Control-Max-Age\",\n \"Access-Control-Request-Headers\",\n \"Access-Control-Request-Method\",\n \"Origin\",\n\n \"Accept\",\n \"Accept-Encoding\",\n \"Cache-Control\",\n \"Connection\",\n \"Content-Length\",\n \"Content-Type\",\n \"Date\",\n \"ETag\",\n \"Expires\",\n \"If-Match\",\n \"If-Modified-Since\",\n \"If-None-Match\",\n \"If-Unmodified-Since\",\n \"Last-Modified\",\n \"Pragma\",\n \"Request-Id\",\n \"Retry-After\",\n \"Server\",\n \"Transfer-Encoding\",\n \"User-Agent\",\n \"WWW-Authenticate\",\n];\n\nconst defaultAllowedQueryParameters: string[] = [\"api-version\"];\n\n/**\n * @internal\n */\nexport class Sanitizer {\n private allowedHeaderNames: Set;\n private allowedQueryParameters: Set;\n\n constructor({\n additionalAllowedHeaderNames: allowedHeaderNames = [],\n additionalAllowedQueryParameters: allowedQueryParameters = [],\n }: SanitizerOptions = {}) {\n allowedHeaderNames = defaultAllowedHeaderNames.concat(allowedHeaderNames);\n allowedQueryParameters = defaultAllowedQueryParameters.concat(allowedQueryParameters);\n\n this.allowedHeaderNames = new Set(allowedHeaderNames.map((n) => n.toLowerCase()));\n this.allowedQueryParameters = new Set(allowedQueryParameters.map((p) => p.toLowerCase()));\n }\n\n public sanitize(obj: unknown): string {\n const seen = new Set();\n return JSON.stringify(\n obj,\n (key: string, value: unknown) => {\n // Ensure Errors include their interesting non-enumerable members\n if (value instanceof Error) {\n return {\n ...value,\n name: value.name,\n message: value.message,\n };\n }\n\n if (key === \"headers\") {\n return this.sanitizeHeaders(value as UnknownObject);\n } else if (key === \"url\") {\n return this.sanitizeUrl(value as string);\n } else if (key === \"query\") {\n return this.sanitizeQuery(value as UnknownObject);\n } else if (key === \"body\") {\n // Don't log the request body\n return undefined;\n } else if (key === \"response\") {\n // Don't log response again\n return undefined;\n } else if (key === \"operationSpec\") {\n // When using sendOperationRequest, the request carries a massive\n // field with the autorest spec. No need to log it.\n return undefined;\n } else if (Array.isArray(value) || isObject(value)) {\n if (seen.has(value)) {\n return \"[Circular]\";\n }\n seen.add(value);\n }\n\n return value;\n },\n 2,\n );\n }\n\n public sanitizeUrl(value: string): string {\n if (typeof value !== \"string\" || value === null || value === \"\") {\n return value;\n }\n\n const url = new URL(value);\n\n if (!url.search) {\n return value;\n }\n\n for (const [key] of url.searchParams) {\n if (!this.allowedQueryParameters.has(key.toLowerCase())) {\n url.searchParams.set(key, RedactedString);\n }\n }\n\n return url.toString();\n }\n\n private sanitizeHeaders(obj: UnknownObject): UnknownObject {\n const sanitized: UnknownObject = {};\n for (const key of Object.keys(obj)) {\n if (this.allowedHeaderNames.has(key.toLowerCase())) {\n sanitized[key] = obj[key];\n } else {\n sanitized[key] = RedactedString;\n }\n }\n return sanitized;\n }\n\n private sanitizeQuery(value: UnknownObject): UnknownObject {\n if (typeof value !== \"object\" || value === null) {\n return value;\n }\n\n const sanitized: UnknownObject = {};\n\n for (const k of Object.keys(value)) {\n if (this.allowedQueryParameters.has(k.toLowerCase())) {\n sanitized[k] = value[k];\n } else {\n sanitized[k] = RedactedString;\n }\n }\n\n return sanitized;\n }\n}\n", "// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { Debugger } from \"@azure/logger\";\nimport type { PipelineRequest, PipelineResponse, SendRequest } from \"../interfaces.js\";\nimport type { PipelinePolicy } from \"../pipeline.js\";\nimport { logger as coreLogger } from \"../log.js\";\nimport { Sanitizer } from \"../util/sanitizer.js\";\n\n/**\n * The programmatic identifier of the logPolicy.\n */\nexport const logPolicyName = \"logPolicy\";\n\n/**\n * Options to configure the logPolicy.\n */\nexport interface LogPolicyOptions {\n /**\n * Header names whose values will be logged when logging is enabled.\n * Defaults include a list of well-known safe headers. Any headers\n * specified in this field will be added to that list. Any other values will\n * be written to logs as \"REDACTED\".\n */\n additionalAllowedHeaderNames?: string[];\n\n /**\n * Query string names whose values will be logged when logging is enabled. By default no\n * query string values are logged.\n */\n additionalAllowedQueryParameters?: string[];\n\n /**\n * The log function to use for writing pipeline logs.\n * Defaults to core-http's built-in logger.\n * Compatible with the `debug` library.\n */\n logger?: Debugger;\n}\n\n/**\n * A policy that logs all requests and responses.\n * @param options - Options to configure logPolicy.\n */\nexport function logPolicy(options: LogPolicyOptions = {}): PipelinePolicy {\n const logger = options.logger ?? coreLogger.info;\n const sanitizer = new Sanitizer({\n additionalAllowedHeaderNames: options.additionalAllowedHeaderNames,\n additionalAllowedQueryParameters: options.additionalAllowedQueryParameters,\n });\n return {\n name: logPolicyName,\n async sendRequest(request: PipelineRequest, next: SendRequest): Promise {\n if (!logger.enabled) {\n return next(request);\n }\n\n logger(`Request: ${sanitizer.sanitize(request)}`);\n\n const response = await next(request);\n\n logger(`Response status code: ${response.status}`);\n logger(`Headers: ${sanitizer.sanitize(response.headers)}`);\n\n return response;\n },\n };\n}\n", "// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { PipelineRequest, PipelineResponse, SendRequest } from \"../interfaces.js\";\nimport type { PipelinePolicy } from \"../pipeline.js\";\n\n/**\n * The programmatic identifier of the redirectPolicy.\n */\nexport const redirectPolicyName = \"redirectPolicy\";\n\n/**\n * Methods that are allowed to follow redirects 301 and 302\n */\nconst allowedRedirect = [\"GET\", \"HEAD\"];\n\n/**\n * Options for how redirect responses are handled.\n */\nexport interface RedirectPolicyOptions {\n /**\n * The maximum number of times the redirect URL will be tried before\n * failing. Defaults to 20.\n */\n maxRetries?: number;\n}\n\n/**\n * A policy to follow Location headers from the server in order\n * to support server-side redirection.\n * In the browser, this policy is not used.\n * @param options - Options to control policy behavior.\n */\nexport function redirectPolicy(options: RedirectPolicyOptions = {}): PipelinePolicy {\n const { maxRetries = 20 } = options;\n return {\n name: redirectPolicyName,\n async sendRequest(request: PipelineRequest, next: SendRequest): Promise {\n const response = await next(request);\n return handleRedirect(next, response, maxRetries);\n },\n };\n}\n\nasync function handleRedirect(\n next: SendRequest,\n response: PipelineResponse,\n maxRetries: number,\n currentRetries: number = 0,\n): Promise {\n const { request, status, headers } = response;\n const locationHeader = headers.get(\"location\");\n if (\n locationHeader &&\n (status === 300 ||\n (status === 301 && allowedRedirect.includes(request.method)) ||\n (status === 302 && allowedRedirect.includes(request.method)) ||\n (status === 303 && request.method === \"POST\") ||\n status === 307) &&\n currentRetries < maxRetries\n ) {\n const url = new URL(locationHeader, request.url);\n request.url = url.toString();\n\n // POST request with Status code 303 should be converted into a\n // redirected GET request if the redirect url is present in the location header\n if (status === 303) {\n request.method = \"GET\";\n request.headers.delete(\"Content-Length\");\n delete request.body;\n }\n\n request.headers.delete(\"Authorization\");\n\n const res = await next(request);\n return handleRedirect(next, res, maxRetries, currentRetries + 1);\n }\n\n return response;\n}\n", "// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport * as os from \"node:os\";\nimport * as process from \"node:process\";\n\n/**\n * @internal\n */\ninterface ExtendedPlatformVersions extends NodeJS.ProcessVersions {\n bun?: string;\n deno?: string;\n}\n\n/**\n * @internal\n */\nexport function getHeaderName(): string {\n return \"User-Agent\";\n}\n\n/**\n * @internal\n */\nexport async function setPlatformSpecificData(map: Map): Promise {\n if (process && process.versions) {\n const versions = process.versions as ExtendedPlatformVersions;\n if (versions.bun) {\n map.set(\"Bun\", versions.bun);\n } else if (versions.deno) {\n map.set(\"Deno\", versions.deno);\n } else if (versions.node) {\n map.set(\"Node\", versions.node);\n }\n }\n\n map.set(\"OS\", `(${os.arch()}-${os.type()}-${os.release()})`);\n}\n", "// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nexport const SDK_VERSION: string = \"1.19.0\";\n\nexport const DEFAULT_RETRY_POLICY_COUNT = 3;\n", "// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { getHeaderName, setPlatformSpecificData } from \"./userAgentPlatform.js\";\nimport { SDK_VERSION } from \"../constants.js\";\n\nfunction getUserAgentString(telemetryInfo: Map): string {\n const parts: string[] = [];\n for (const [key, value] of telemetryInfo) {\n const token = value ? `${key}/${value}` : key;\n parts.push(token);\n }\n return parts.join(\" \");\n}\n\n/**\n * @internal\n */\nexport function getUserAgentHeaderName(): string {\n return getHeaderName();\n}\n\n/**\n * @internal\n */\nexport async function getUserAgentValue(prefix?: string): Promise {\n const runtimeInfo = new Map();\n runtimeInfo.set(\"core-rest-pipeline\", SDK_VERSION);\n await setPlatformSpecificData(runtimeInfo);\n const defaultAgent = getUserAgentString(runtimeInfo);\n const userAgentValue = prefix ? `${prefix} ${defaultAgent}` : defaultAgent;\n return userAgentValue;\n}\n", "// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { PipelineRequest, PipelineResponse, SendRequest } from \"../interfaces.js\";\nimport type { PipelinePolicy } from \"../pipeline.js\";\nimport { getUserAgentHeaderName, getUserAgentValue } from \"../util/userAgent.js\";\n\nconst UserAgentHeaderName = getUserAgentHeaderName();\n\n/**\n * The programmatic identifier of the userAgentPolicy.\n */\nexport const userAgentPolicyName = \"userAgentPolicy\";\n\n/**\n * Options for adding user agent details to outgoing requests.\n */\nexport interface UserAgentPolicyOptions {\n /**\n * String prefix to add to the user agent for outgoing requests.\n * Defaults to an empty string.\n */\n userAgentPrefix?: string;\n}\n\n/**\n * A policy that sets the User-Agent header (or equivalent) to reflect\n * the library version.\n * @param options - Options to customize the user agent value.\n */\nexport function userAgentPolicy(options: UserAgentPolicyOptions = {}): PipelinePolicy {\n const userAgentValue = getUserAgentValue(options.userAgentPrefix);\n return {\n name: userAgentPolicyName,\n async sendRequest(request: PipelineRequest, next: SendRequest): Promise {\n if (!request.headers.has(UserAgentHeaderName)) {\n request.headers.set(UserAgentHeaderName, await userAgentValue);\n }\n return next(request);\n },\n };\n}\n", "// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { Readable } from \"node:stream\";\nimport type { ReadableStream as AsyncIterableReadableStream } from \"node:stream/web\";\nimport { isBlob } from \"./typeGuards.js\";\nimport { getRawContent } from \"./file.js\";\n\nasync function* streamAsyncIterator(\n this: ReadableStream,\n): AsyncIterableIterator {\n const reader = this.getReader();\n try {\n while (true) {\n const { done, value } = await reader.read();\n if (done) {\n return;\n }\n\n yield value;\n }\n } finally {\n reader.releaseLock();\n }\n}\n\nfunction makeAsyncIterable(webStream: any): asserts webStream is AsyncIterableReadableStream {\n if (!webStream[Symbol.asyncIterator]) {\n webStream[Symbol.asyncIterator] = streamAsyncIterator.bind(webStream);\n }\n\n if (!webStream.values) {\n webStream.values = streamAsyncIterator.bind(webStream);\n }\n}\n\nfunction ensureNodeStream(\n stream: ReadableStream | NodeJS.ReadableStream,\n): NodeJS.ReadableStream {\n if (stream instanceof ReadableStream) {\n makeAsyncIterable(stream);\n return Readable.fromWeb(stream);\n } else {\n return stream;\n }\n}\n\nfunction toStream(\n source: ReadableStream | NodeJS.ReadableStream | Uint8Array | Blob,\n): NodeJS.ReadableStream {\n if (source instanceof Uint8Array) {\n return Readable.from(Buffer.from(source));\n } else if (isBlob(source)) {\n return toStream(getRawContent(source));\n } else {\n return ensureNodeStream(source);\n }\n}\n\n/**\n * Accepted binary data types for concat\n *\n * @internal\n */\nexport type ConcatSource = ReadableStream | NodeJS.ReadableStream | Uint8Array | Blob;\n\n/**\n * Utility function that concatenates a set of binary inputs into one combined output.\n *\n * @param sources - array of sources for the concatenation\n * @returns - in Node, a (() =\\> NodeJS.ReadableStream) which, when read, produces a concatenation of all the inputs.\n * In browser, returns a `Blob` representing all the concatenated inputs.\n *\n * @internal\n */\nexport async function concat(\n sources: (ConcatSource | (() => ConcatSource))[],\n): Promise<(() => NodeJS.ReadableStream) | Blob> {\n return function () {\n const streams = sources.map((x) => (typeof x === \"function\" ? x() : x)).map(toStream);\n\n return Readable.from(\n (async function* () {\n for (const stream of streams as NodeJS.ReadableStream[]) {\n for await (const chunk of stream) {\n yield chunk;\n }\n }\n })(),\n );\n };\n}\n", "// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nexport function isNodeReadableStream(x: unknown): x is NodeJS.ReadableStream {\n return Boolean(x && typeof (x as NodeJS.ReadableStream)[\"pipe\"] === \"function\");\n}\n\nexport function isWebReadableStream(x: unknown): x is ReadableStream {\n return Boolean(\n x &&\n typeof (x as ReadableStream).getReader === \"function\" &&\n typeof (x as ReadableStream).tee === \"function\",\n );\n}\n\nexport function isReadableStream(x: unknown): x is ReadableStream | NodeJS.ReadableStream {\n return isNodeReadableStream(x) || isWebReadableStream(x);\n}\n\nexport function isBlob(x: unknown): x is Blob {\n return typeof (x as Blob).stream === \"function\";\n}\n", "// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { isNodeLike } from \"@azure/core-util\";\nimport { isNodeReadableStream } from \"./typeGuards.js\";\n\n/**\n * Options passed into createFile specifying metadata about the file.\n */\nexport interface CreateFileOptions {\n /**\n * The MIME type of the file.\n */\n type?: string;\n\n /**\n * Last modified time of the file as a UNIX timestamp.\n * This will default to the current date.\n */\n lastModified?: number;\n\n /**\n * relative path of this file when uploading a directory.\n */\n webkitRelativePath?: string;\n}\n\n/**\n * Extra options for createFile when a stream is being passed in.\n */\nexport interface CreateFileFromStreamOptions extends CreateFileOptions {\n /**\n * Size of the file represented by the stream in bytes.\n *\n * This will be used by the pipeline when calculating the Content-Length header\n * for the overall request.\n */\n size?: number;\n}\n\nconst unimplementedMethods = {\n arrayBuffer: () => {\n throw new Error(\"Not implemented\");\n },\n bytes: () => {\n throw new Error(\"Not implemented\");\n },\n slice: () => {\n throw new Error(\"Not implemented\");\n },\n text: () => {\n throw new Error(\"Not implemented\");\n },\n};\n\n/**\n * Private symbol used as key on objects created using createFile containing the\n * original source of the file object.\n *\n * This is used in Node to access the original Node stream without using Blob#stream, which\n * returns a web stream. This is done to avoid a couple of bugs to do with Blob#stream and\n * Readable#to/fromWeb in Node versions we support:\n * - https://github.com/nodejs/node/issues/42694 (fixed in Node 18.14)\n * - https://github.com/nodejs/node/issues/48916 (fixed in Node 20.6)\n *\n * Once these versions are no longer supported, we may be able to stop doing this.\n *\n * @internal\n */\nconst rawContent: unique symbol = Symbol(\"rawContent\");\n\n/**\n * Type signature of a blob-like object with a raw content property.\n */\ninterface RawContent {\n [rawContent](): Uint8Array | NodeJS.ReadableStream | ReadableStream;\n}\n\nfunction hasRawContent(x: unknown): x is RawContent {\n return typeof (x as RawContent)[rawContent] === \"function\";\n}\n\n/**\n * Extract the raw content from a given blob-like object. If the input was created using createFile\n * or createFileFromStream, the exact content passed into createFile/createFileFromStream will be used.\n * For true instances of Blob and File, returns the blob's content as a Web ReadableStream.\n *\n * @internal\n */\nexport function getRawContent(\n blob: Blob,\n): NodeJS.ReadableStream | ReadableStream | Uint8Array {\n if (hasRawContent(blob)) {\n return blob[rawContent]();\n } else {\n return blob.stream();\n }\n}\n\n/**\n * Create an object that implements the File interface. This object is intended to be\n * passed into RequestBodyType.formData, and is not guaranteed to work as expected in\n * other situations.\n *\n * Use this function to:\n * - Create a File object for use in RequestBodyType.formData in environments where the\n * global File object is unavailable.\n * - Create a File-like object from a readable stream without reading the stream into memory.\n *\n * @param stream - the content of the file as a callback returning a stream. When a File object made using createFile is\n * passed in a request's form data map, the stream will not be read into memory\n * and instead will be streamed when the request is made. In the event of a retry, the\n * stream needs to be read again, so this callback SHOULD return a fresh stream if possible.\n * @param name - the name of the file.\n * @param options - optional metadata about the file, e.g. file name, file size, MIME type.\n */\nexport function createFileFromStream(\n stream: () => ReadableStream | NodeJS.ReadableStream,\n name: string,\n options: CreateFileFromStreamOptions = {},\n): File {\n return {\n ...unimplementedMethods,\n type: options.type ?? \"\",\n lastModified: options.lastModified ?? new Date().getTime(),\n webkitRelativePath: options.webkitRelativePath ?? \"\",\n size: options.size ?? -1,\n name,\n stream: () => {\n const s = stream();\n if (isNodeReadableStream(s)) {\n throw new Error(\n \"Not supported: a Node stream was provided as input to createFileFromStream.\",\n );\n }\n\n return s;\n },\n [rawContent]: stream,\n } as File & RawContent;\n}\n\n/**\n * Create an object that implements the File interface. This object is intended to be\n * passed into RequestBodyType.formData, and is not guaranteed to work as expected in\n * other situations.\n *\n * Use this function create a File object for use in RequestBodyType.formData in environments where the global File object is unavailable.\n *\n * @param content - the content of the file as a Uint8Array in memory.\n * @param name - the name of the file.\n * @param options - optional metadata about the file, e.g. file name, file size, MIME type.\n */\nexport function createFile(\n content: Uint8Array,\n name: string,\n options: CreateFileOptions = {},\n): File {\n if (isNodeLike) {\n return {\n ...unimplementedMethods,\n type: options.type ?? \"\",\n lastModified: options.lastModified ?? new Date().getTime(),\n webkitRelativePath: options.webkitRelativePath ?? \"\",\n size: content.byteLength,\n name,\n arrayBuffer: async () => content.buffer,\n stream: () => new Blob([content]).stream(),\n [rawContent]: () => content,\n } as File & RawContent;\n } else {\n return new File([content], name, options);\n }\n}\n", "// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { randomUUID, stringToUint8Array } from \"@azure/core-util\";\nimport type { BodyPart, HttpHeaders, PipelineRequest, PipelineResponse } from \"../interfaces.js\";\nimport type { PipelinePolicy } from \"../pipeline.js\";\nimport { concat } from \"../util/concat.js\";\nimport { isBlob } from \"../util/typeGuards.js\";\n\nfunction generateBoundary(): string {\n return `----AzSDKFormBoundary${randomUUID()}`;\n}\n\nfunction encodeHeaders(headers: HttpHeaders): string {\n let result = \"\";\n for (const [key, value] of headers) {\n result += `${key}: ${value}\\r\\n`;\n }\n return result;\n}\n\nfunction getLength(\n source:\n | (() => ReadableStream)\n | (() => NodeJS.ReadableStream)\n | Uint8Array\n | Blob\n | ReadableStream\n | NodeJS.ReadableStream,\n): number | undefined {\n if (source instanceof Uint8Array) {\n return source.byteLength;\n } else if (isBlob(source)) {\n // if was created using createFile then -1 means we have an unknown size\n return source.size === -1 ? undefined : source.size;\n } else {\n return undefined;\n }\n}\n\nfunction getTotalLength(\n sources: (\n | (() => ReadableStream)\n | (() => NodeJS.ReadableStream)\n | Uint8Array\n | Blob\n | ReadableStream\n | NodeJS.ReadableStream\n )[],\n): number | undefined {\n let total = 0;\n for (const source of sources) {\n const partLength = getLength(source);\n if (partLength === undefined) {\n return undefined;\n } else {\n total += partLength;\n }\n }\n return total;\n}\n\nasync function buildRequestBody(\n request: PipelineRequest,\n parts: BodyPart[],\n boundary: string,\n): Promise {\n const sources = [\n stringToUint8Array(`--${boundary}`, \"utf-8\"),\n ...parts.flatMap((part) => [\n stringToUint8Array(\"\\r\\n\", \"utf-8\"),\n stringToUint8Array(encodeHeaders(part.headers), \"utf-8\"),\n stringToUint8Array(\"\\r\\n\", \"utf-8\"),\n part.body,\n stringToUint8Array(`\\r\\n--${boundary}`, \"utf-8\"),\n ]),\n stringToUint8Array(\"--\\r\\n\\r\\n\", \"utf-8\"),\n ];\n\n const contentLength = getTotalLength(sources);\n if (contentLength) {\n request.headers.set(\"Content-Length\", contentLength);\n }\n\n request.body = await concat(sources);\n}\n\n/**\n * Name of multipart policy\n */\nexport const multipartPolicyName = \"multipartPolicy\";\n\nconst maxBoundaryLength = 70;\nconst validBoundaryCharacters = new Set(\n `abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789'()+,-./:=?`,\n);\n\nfunction assertValidBoundary(boundary: string): void {\n if (boundary.length > maxBoundaryLength) {\n throw new Error(`Multipart boundary \"${boundary}\" exceeds maximum length of 70 characters`);\n }\n\n if (Array.from(boundary).some((x) => !validBoundaryCharacters.has(x))) {\n throw new Error(`Multipart boundary \"${boundary}\" contains invalid characters`);\n }\n}\n\n/**\n * Pipeline policy for multipart requests\n */\nexport function multipartPolicy(): PipelinePolicy {\n return {\n name: multipartPolicyName,\n async sendRequest(request, next): Promise {\n if (!request.multipartBody) {\n return next(request);\n }\n\n if (request.body) {\n throw new Error(\"multipartBody and regular body cannot be set at the same time\");\n }\n\n let boundary = request.multipartBody.boundary;\n\n const contentTypeHeader = request.headers.get(\"Content-Type\") ?? \"multipart/mixed\";\n const parsedHeader = contentTypeHeader.match(/^(multipart\\/[^ ;]+)(?:; *boundary=(.+))?$/);\n if (!parsedHeader) {\n throw new Error(\n `Got multipart request body, but content-type header was not multipart: ${contentTypeHeader}`,\n );\n }\n\n const [, contentType, parsedBoundary] = parsedHeader;\n if (parsedBoundary && boundary && parsedBoundary !== boundary) {\n throw new Error(\n `Multipart boundary was specified as ${parsedBoundary} in the header, but got ${boundary} in the request body`,\n );\n }\n\n boundary ??= parsedBoundary;\n if (boundary) {\n assertValidBoundary(boundary);\n } else {\n boundary = generateBoundary();\n }\n request.headers.set(\"Content-Type\", `${contentType}; boundary=${boundary}`);\n await buildRequestBody(request, request.multipartBody.parts, boundary);\n\n request.multipartBody = undefined;\n\n return next(request);\n },\n };\n}\n", "// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { PipelineRequest, PipelineResponse, SendRequest } from \"../interfaces.js\";\nimport type { PipelinePolicy } from \"../pipeline.js\";\n\n/**\n * The programmatic identifier of the decompressResponsePolicy.\n */\nexport const decompressResponsePolicyName = \"decompressResponsePolicy\";\n\n/**\n * A policy to enable response decompression according to Accept-Encoding header\n * https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Accept-Encoding\n */\nexport function decompressResponsePolicy(): PipelinePolicy {\n return {\n name: decompressResponsePolicyName,\n async sendRequest(request: PipelineRequest, next: SendRequest): Promise {\n // HEAD requests have no body\n if (request.method !== \"HEAD\") {\n request.headers.set(\"Accept-Encoding\", \"gzip,deflate\");\n }\n return next(request);\n },\n };\n}\n", "// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\n/**\n * This error is thrown when an asynchronous operation has been aborted.\n * Check for this error by testing the `name` that the name property of the\n * error matches `\"AbortError\"`.\n *\n * @example\n * ```ts\n * const controller = new AbortController();\n * controller.abort();\n * try {\n * doAsyncWork(controller.signal)\n * } catch (e) {\n * if (e.name === 'AbortError') {\n * // handle abort error here.\n * }\n * }\n * ```\n */\nexport class AbortError extends Error {\n constructor(message?: string) {\n super(message);\n this.name = \"AbortError\";\n }\n}\n", "// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { AbortError, type AbortSignalLike } from \"@azure/abort-controller\";\nimport type { PipelineResponse } from \"../interfaces.js\";\n\nconst StandardAbortMessage = \"The operation was aborted.\";\n\n/**\n * A wrapper for setTimeout that resolves a promise after delayInMs milliseconds.\n * @param delayInMs - The number of milliseconds to be delayed.\n * @param value - The value to be resolved with after a timeout of t milliseconds.\n * @param options - The options for delay - currently abort options\n * - abortSignal - The abortSignal associated with containing operation.\n * - abortErrorMsg - The abort error message associated with containing operation.\n * @returns Resolved promise\n */\nexport function delay(\n delayInMs: number,\n value?: T,\n options?: {\n abortSignal?: AbortSignalLike;\n abortErrorMsg?: string;\n },\n): Promise {\n return new Promise((resolve, reject) => {\n let timer: ReturnType | undefined = undefined;\n let onAborted: (() => void) | undefined = undefined;\n\n const rejectOnAbort = (): void => {\n return reject(\n new AbortError(options?.abortErrorMsg ? options?.abortErrorMsg : StandardAbortMessage),\n );\n };\n\n const removeListeners = (): void => {\n if (options?.abortSignal && onAborted) {\n options.abortSignal.removeEventListener(\"abort\", onAborted);\n }\n };\n\n onAborted = (): void => {\n if (timer) {\n clearTimeout(timer);\n }\n removeListeners();\n return rejectOnAbort();\n };\n\n if (options?.abortSignal && options.abortSignal.aborted) {\n return rejectOnAbort();\n }\n\n timer = setTimeout(() => {\n removeListeners();\n resolve(value);\n }, delayInMs);\n\n if (options?.abortSignal) {\n options.abortSignal.addEventListener(\"abort\", onAborted);\n }\n });\n}\n\n/**\n * @internal\n * @returns the parsed value or undefined if the parsed value is invalid.\n */\nexport function parseHeaderValueAsNumber(\n response: PipelineResponse,\n headerName: string,\n): number | undefined {\n const value = response.headers.get(headerName);\n if (!value) return;\n const valueAsNum = Number(value);\n if (Number.isNaN(valueAsNum)) return;\n return valueAsNum;\n}\n", "// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { PipelineResponse } from \"../index.js\";\nimport { parseHeaderValueAsNumber } from \"../util/helpers.js\";\nimport type { RetryStrategy } from \"./retryStrategy.js\";\n\n/**\n * The header that comes back from Azure services representing\n * the amount of time (minimum) to wait to retry (in seconds or timestamp after which we can retry).\n */\nconst RetryAfterHeader = \"Retry-After\";\n/**\n * The headers that come back from Azure services representing\n * the amount of time (minimum) to wait to retry.\n *\n * \"retry-after-ms\", \"x-ms-retry-after-ms\" : milliseconds\n * \"Retry-After\" : seconds or timestamp\n */\nconst AllRetryAfterHeaders: string[] = [\"retry-after-ms\", \"x-ms-retry-after-ms\", RetryAfterHeader];\n\n/**\n * A response is a throttling retry response if it has a throttling status code (429 or 503),\n * as long as one of the [ \"Retry-After\" or \"retry-after-ms\" or \"x-ms-retry-after-ms\" ] headers has a valid value.\n *\n * Returns the `retryAfterInMs` value if the response is a throttling retry response.\n * If not throttling retry response, returns `undefined`.\n *\n * @internal\n */\nfunction getRetryAfterInMs(response?: PipelineResponse): number | undefined {\n if (!(response && [429, 503].includes(response.status))) return undefined;\n try {\n // Headers: \"retry-after-ms\", \"x-ms-retry-after-ms\", \"Retry-After\"\n for (const header of AllRetryAfterHeaders) {\n const retryAfterValue = parseHeaderValueAsNumber(response, header);\n if (retryAfterValue === 0 || retryAfterValue) {\n // \"Retry-After\" header ==> seconds\n // \"retry-after-ms\", \"x-ms-retry-after-ms\" headers ==> milli-seconds\n const multiplyingFactor = header === RetryAfterHeader ? 1000 : 1;\n return retryAfterValue * multiplyingFactor; // in milli-seconds\n }\n }\n\n // RetryAfterHeader (\"Retry-After\") has a special case where it might be formatted as a date instead of a number of seconds\n const retryAfterHeader = response.headers.get(RetryAfterHeader);\n if (!retryAfterHeader) return;\n\n const date = Date.parse(retryAfterHeader);\n const diff = date - Date.now();\n // negative diff would mean a date in the past, so retry asap with 0 milliseconds\n return Number.isFinite(diff) ? Math.max(0, diff) : undefined;\n } catch {\n return undefined;\n }\n}\n\n/**\n * A response is a retry response if it has a throttling status code (429 or 503),\n * as long as one of the [ \"Retry-After\" or \"retry-after-ms\" or \"x-ms-retry-after-ms\" ] headers has a valid value.\n */\nexport function isThrottlingRetryResponse(response?: PipelineResponse): boolean {\n return Number.isFinite(getRetryAfterInMs(response));\n}\n\nexport function throttlingRetryStrategy(): RetryStrategy {\n return {\n name: \"throttlingRetryStrategy\",\n retry({ response }) {\n const retryAfterInMs = getRetryAfterInMs(response);\n if (!Number.isFinite(retryAfterInMs)) {\n return { skipStrategy: true };\n }\n return {\n retryAfterInMs,\n };\n },\n };\n}\n", "// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { PipelineResponse } from \"../interfaces.js\";\nimport type { RestError } from \"../restError.js\";\nimport { calculateRetryDelay } from \"@azure/core-util\";\nimport type { RetryStrategy } from \"./retryStrategy.js\";\nimport { isThrottlingRetryResponse } from \"./throttlingRetryStrategy.js\";\n\n// intervals are in milliseconds\nconst DEFAULT_CLIENT_RETRY_INTERVAL = 1000;\nconst DEFAULT_CLIENT_MAX_RETRY_INTERVAL = 1000 * 64;\n\n/**\n * A retry strategy that retries with an exponentially increasing delay in these two cases:\n * - When there are errors in the underlying transport layer (e.g. DNS lookup failures).\n * - Or otherwise if the outgoing request fails (408, greater or equal than 500, except for 501 and 505).\n */\nexport function exponentialRetryStrategy(\n options: {\n /**\n * The amount of delay in milliseconds between retry attempts. Defaults to 1000\n * (1 second.) The delay increases exponentially with each retry up to a maximum\n * specified by maxRetryDelayInMs.\n */\n retryDelayInMs?: number;\n\n /**\n * The maximum delay in milliseconds allowed before retrying an operation. Defaults\n * to 64000 (64 seconds).\n */\n maxRetryDelayInMs?: number;\n\n /**\n * If true it won't retry if it received a system error.\n */\n ignoreSystemErrors?: boolean;\n\n /**\n * If true it won't retry if it received a non-fatal HTTP status code.\n */\n ignoreHttpStatusCodes?: boolean;\n } = {},\n): RetryStrategy {\n const retryInterval = options.retryDelayInMs ?? DEFAULT_CLIENT_RETRY_INTERVAL;\n const maxRetryInterval = options.maxRetryDelayInMs ?? DEFAULT_CLIENT_MAX_RETRY_INTERVAL;\n\n return {\n name: \"exponentialRetryStrategy\",\n retry({ retryCount, response, responseError }) {\n const matchedSystemError = isSystemError(responseError);\n const ignoreSystemErrors = matchedSystemError && options.ignoreSystemErrors;\n\n const isExponential = isExponentialRetryResponse(response);\n const ignoreExponentialResponse = isExponential && options.ignoreHttpStatusCodes;\n const unknownResponse = response && (isThrottlingRetryResponse(response) || !isExponential);\n\n if (unknownResponse || ignoreExponentialResponse || ignoreSystemErrors) {\n return { skipStrategy: true };\n }\n\n if (responseError && !matchedSystemError && !isExponential) {\n return { errorToThrow: responseError };\n }\n\n return calculateRetryDelay(retryCount, {\n retryDelayInMs: retryInterval,\n maxRetryDelayInMs: maxRetryInterval,\n });\n },\n };\n}\n\n/**\n * A response is a retry response if it has status codes:\n * - 408, or\n * - Greater or equal than 500, except for 501 and 505.\n */\nexport function isExponentialRetryResponse(response?: PipelineResponse): boolean {\n return Boolean(\n response &&\n response.status !== undefined &&\n (response.status >= 500 || response.status === 408) &&\n response.status !== 501 &&\n response.status !== 505,\n );\n}\n\n/**\n * Determines whether an error from a pipeline response was triggered in the network layer.\n */\nexport function isSystemError(err?: RestError): boolean {\n if (!err) {\n return false;\n }\n return (\n err.code === \"ETIMEDOUT\" ||\n err.code === \"ESOCKETTIMEDOUT\" ||\n err.code === \"ECONNREFUSED\" ||\n err.code === \"ECONNRESET\" ||\n err.code === \"ENOENT\" ||\n err.code === \"ENOTFOUND\"\n );\n}\n", "// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { PipelineRequest, PipelineResponse, SendRequest } from \"../interfaces.js\";\nimport type { PipelinePolicy } from \"../pipeline.js\";\nimport { delay } from \"../util/helpers.js\";\nimport { type AzureLogger, createClientLogger } from \"@azure/logger\";\nimport type { RetryStrategy } from \"../retryStrategies/retryStrategy.js\";\nimport type { RestError } from \"../restError.js\";\nimport { AbortError } from \"@azure/abort-controller\";\nimport { DEFAULT_RETRY_POLICY_COUNT } from \"../constants.js\";\n\nconst retryPolicyLogger = createClientLogger(\"core-rest-pipeline retryPolicy\");\n\n/**\n * The programmatic identifier of the retryPolicy.\n */\nconst retryPolicyName = \"retryPolicy\";\n\n/**\n * Options to the {@link retryPolicy}\n */\nexport interface RetryPolicyOptions {\n /**\n * Maximum number of retries. If not specified, it will limit to 3 retries.\n */\n maxRetries?: number;\n /**\n * Logger. If it's not provided, a default logger is used.\n */\n logger?: AzureLogger;\n}\n\n/**\n * retryPolicy is a generic policy to enable retrying requests when certain conditions are met\n */\nexport function retryPolicy(\n strategies: RetryStrategy[],\n options: RetryPolicyOptions = { maxRetries: DEFAULT_RETRY_POLICY_COUNT },\n): PipelinePolicy {\n const logger = options.logger || retryPolicyLogger;\n return {\n name: retryPolicyName,\n async sendRequest(request: PipelineRequest, next: SendRequest): Promise {\n let response: PipelineResponse | undefined;\n let responseError: RestError | undefined;\n let retryCount = -1;\n\n retryRequest: while (true) {\n retryCount += 1;\n response = undefined;\n responseError = undefined;\n\n try {\n logger.info(`Retry ${retryCount}: Attempting to send request`, request.requestId);\n response = await next(request);\n logger.info(`Retry ${retryCount}: Received a response from request`, request.requestId);\n } catch (e: any) {\n logger.error(`Retry ${retryCount}: Received an error from request`, request.requestId);\n\n // RestErrors are valid targets for the retry strategies.\n // If none of the retry strategies can work with them, they will be thrown later in this policy.\n // If the received error is not a RestError, it is immediately thrown.\n responseError = e as RestError;\n if (!e || responseError.name !== \"RestError\") {\n throw e;\n }\n\n response = responseError.response;\n }\n\n if (request.abortSignal?.aborted) {\n logger.error(`Retry ${retryCount}: Request aborted.`);\n const abortError = new AbortError();\n throw abortError;\n }\n\n if (retryCount >= (options.maxRetries ?? DEFAULT_RETRY_POLICY_COUNT)) {\n logger.info(\n `Retry ${retryCount}: Maximum retries reached. Returning the last received response, or throwing the last received error.`,\n );\n if (responseError) {\n throw responseError;\n } else if (response) {\n return response;\n } else {\n throw new Error(\"Maximum retries reached with no response or error to throw\");\n }\n }\n\n logger.info(`Retry ${retryCount}: Processing ${strategies.length} retry strategies.`);\n\n strategiesLoop: for (const strategy of strategies) {\n const strategyLogger = strategy.logger || retryPolicyLogger;\n strategyLogger.info(`Retry ${retryCount}: Processing retry strategy ${strategy.name}.`);\n\n const modifiers = strategy.retry({\n retryCount,\n response,\n responseError,\n });\n\n if (modifiers.skipStrategy) {\n strategyLogger.info(`Retry ${retryCount}: Skipped.`);\n continue strategiesLoop;\n }\n\n const { errorToThrow, retryAfterInMs, redirectTo } = modifiers;\n\n if (errorToThrow) {\n strategyLogger.error(\n `Retry ${retryCount}: Retry strategy ${strategy.name} throws error:`,\n errorToThrow,\n );\n throw errorToThrow;\n }\n\n if (retryAfterInMs || retryAfterInMs === 0) {\n strategyLogger.info(\n `Retry ${retryCount}: Retry strategy ${strategy.name} retries after ${retryAfterInMs}`,\n );\n await delay(retryAfterInMs, undefined, { abortSignal: request.abortSignal });\n continue retryRequest;\n }\n\n if (redirectTo) {\n strategyLogger.info(\n `Retry ${retryCount}: Retry strategy ${strategy.name} redirects to ${redirectTo}`,\n );\n request.url = redirectTo;\n continue retryRequest;\n }\n }\n\n if (responseError) {\n logger.info(\n `None of the retry strategies could work with the received error. Throwing it.`,\n );\n throw responseError;\n }\n if (response) {\n logger.info(\n `None of the retry strategies could work with the received response. Returning it.`,\n );\n return response;\n }\n\n // If all the retries skip and there's no response,\n // we're still in the retry loop, so a new request will be sent\n // until `maxRetries` is reached.\n }\n },\n };\n}\n", "// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { PipelineRetryOptions } from \"../interfaces.js\";\nimport type { PipelinePolicy } from \"../pipeline.js\";\nimport { exponentialRetryStrategy } from \"../retryStrategies/exponentialRetryStrategy.js\";\nimport { throttlingRetryStrategy } from \"../retryStrategies/throttlingRetryStrategy.js\";\nimport { retryPolicy } from \"./retryPolicy.js\";\nimport { DEFAULT_RETRY_POLICY_COUNT } from \"../constants.js\";\n\n/**\n * Name of the {@link defaultRetryPolicy}\n */\nexport const defaultRetryPolicyName = \"defaultRetryPolicy\";\n\n/**\n * Options that control how to retry failed requests.\n */\nexport interface DefaultRetryPolicyOptions extends PipelineRetryOptions {}\n\n/**\n * A policy that retries according to three strategies:\n * - When the server sends a 429 response with a Retry-After header.\n * - When there are errors in the underlying transport layer (e.g. DNS lookup failures).\n * - Or otherwise if the outgoing request fails, it will retry with an exponentially increasing delay.\n */\nexport function defaultRetryPolicy(options: DefaultRetryPolicyOptions = {}): PipelinePolicy {\n return {\n name: defaultRetryPolicyName,\n sendRequest: retryPolicy([throttlingRetryStrategy(), exponentialRetryStrategy(options)], {\n maxRetries: options.maxRetries ?? DEFAULT_RETRY_POLICY_COUNT,\n }).sendRequest,\n };\n}\n", "// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { HttpHeaders, RawHttpHeaders, RawHttpHeadersInput } from \"./interfaces.js\";\n\ninterface HeaderEntry {\n name: string;\n value: string;\n}\n\nfunction normalizeName(name: string): string {\n return name.toLowerCase();\n}\n\nfunction* headerIterator(map: Map): IterableIterator<[string, string]> {\n for (const entry of map.values()) {\n yield [entry.name, entry.value];\n }\n}\n\nclass HttpHeadersImpl implements HttpHeaders {\n private readonly _headersMap: Map;\n\n constructor(rawHeaders?: RawHttpHeaders | RawHttpHeadersInput) {\n this._headersMap = new Map();\n if (rawHeaders) {\n for (const headerName of Object.keys(rawHeaders)) {\n this.set(headerName, rawHeaders[headerName]);\n }\n }\n }\n\n /**\n * Set a header in this collection with the provided name and value. The name is\n * case-insensitive.\n * @param name - The name of the header to set. This value is case-insensitive.\n * @param value - The value of the header to set.\n */\n public set(name: string, value: string | number | boolean): void {\n this._headersMap.set(normalizeName(name), { name, value: String(value).trim() });\n }\n\n /**\n * Get the header value for the provided header name, or undefined if no header exists in this\n * collection with the provided name.\n * @param name - The name of the header. This value is case-insensitive.\n */\n public get(name: string): string | undefined {\n return this._headersMap.get(normalizeName(name))?.value;\n }\n\n /**\n * Get whether or not this header collection contains a header entry for the provided header name.\n * @param name - The name of the header to set. This value is case-insensitive.\n */\n public has(name: string): boolean {\n return this._headersMap.has(normalizeName(name));\n }\n\n /**\n * Remove the header with the provided headerName.\n * @param name - The name of the header to remove.\n */\n public delete(name: string): void {\n this._headersMap.delete(normalizeName(name));\n }\n\n /**\n * Get the JSON object representation of this HTTP header collection.\n */\n public toJSON(options: { preserveCase?: boolean } = {}): RawHttpHeaders {\n const result: RawHttpHeaders = {};\n if (options.preserveCase) {\n for (const entry of this._headersMap.values()) {\n result[entry.name] = entry.value;\n }\n } else {\n for (const [normalizedName, entry] of this._headersMap) {\n result[normalizedName] = entry.value;\n }\n }\n\n return result;\n }\n\n /**\n * Get the string representation of this HTTP header collection.\n */\n public toString(): string {\n return JSON.stringify(this.toJSON({ preserveCase: true }));\n }\n\n /**\n * Iterate over tuples of header [name, value] pairs.\n */\n [Symbol.iterator](): Iterator<[string, string]> {\n return headerIterator(this._headersMap);\n }\n}\n\n/**\n * Creates an object that satisfies the `HttpHeaders` interface.\n * @param rawHeaders - A simple object representing initial headers\n */\nexport function createHttpHeaders(rawHeaders?: RawHttpHeadersInput): HttpHeaders {\n return new HttpHeadersImpl(rawHeaders);\n}\n", "// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { isNodeLike, stringToUint8Array } from \"@azure/core-util\";\nimport { createHttpHeaders } from \"../httpHeaders.js\";\nimport type {\n BodyPart,\n FormDataMap,\n FormDataValue,\n PipelineRequest,\n PipelineResponse,\n SendRequest,\n} from \"../interfaces.js\";\nimport type { PipelinePolicy } from \"../pipeline.js\";\n\n/**\n * The programmatic identifier of the formDataPolicy.\n */\nexport const formDataPolicyName = \"formDataPolicy\";\n\nfunction formDataToFormDataMap(formData: FormData): FormDataMap {\n const formDataMap: FormDataMap = {};\n for (const [key, value] of formData.entries()) {\n formDataMap[key] ??= [];\n (formDataMap[key] as FormDataValue[]).push(value);\n }\n return formDataMap;\n}\n\n/**\n * A policy that encodes FormData on the request into the body.\n */\nexport function formDataPolicy(): PipelinePolicy {\n return {\n name: formDataPolicyName,\n async sendRequest(request: PipelineRequest, next: SendRequest): Promise {\n if (isNodeLike && typeof FormData !== \"undefined\" && request.body instanceof FormData) {\n request.formData = formDataToFormDataMap(request.body);\n request.body = undefined;\n }\n\n if (request.formData) {\n const contentType = request.headers.get(\"Content-Type\");\n if (contentType && contentType.indexOf(\"application/x-www-form-urlencoded\") !== -1) {\n request.body = wwwFormUrlEncode(request.formData);\n } else {\n await prepareFormData(request.formData, request);\n }\n\n request.formData = undefined;\n }\n return next(request);\n },\n };\n}\n\nfunction wwwFormUrlEncode(formData: FormDataMap): string {\n const urlSearchParams = new URLSearchParams();\n for (const [key, value] of Object.entries(formData)) {\n if (Array.isArray(value)) {\n for (const subValue of value) {\n urlSearchParams.append(key, subValue.toString());\n }\n } else {\n urlSearchParams.append(key, value.toString());\n }\n }\n return urlSearchParams.toString();\n}\n\nasync function prepareFormData(formData: FormDataMap, request: PipelineRequest): Promise {\n // validate content type (multipart/form-data)\n const contentType = request.headers.get(\"Content-Type\");\n if (contentType && !contentType.startsWith(\"multipart/form-data\")) {\n // content type is specified and is not multipart/form-data. Exit.\n return;\n }\n\n request.headers.set(\"Content-Type\", contentType ?? \"multipart/form-data\");\n\n // set body to MultipartRequestBody using content from FormDataMap\n const parts: BodyPart[] = [];\n\n for (const [fieldName, values] of Object.entries(formData)) {\n for (const value of Array.isArray(values) ? values : [values]) {\n if (typeof value === \"string\") {\n parts.push({\n headers: createHttpHeaders({\n \"Content-Disposition\": `form-data; name=\"${fieldName}\"`,\n }),\n body: stringToUint8Array(value, \"utf-8\"),\n });\n } else if (value === undefined || value === null || typeof value !== \"object\") {\n throw new Error(\n `Unexpected value for key ${fieldName}: ${value}. Value should be serialized to string first.`,\n );\n } else {\n // using || instead of ?? here since if value.name is empty we should create a file name\n const fileName = (value as File).name || \"blob\";\n const headers = createHttpHeaders();\n headers.set(\n \"Content-Disposition\",\n `form-data; name=\"${fieldName}\"; filename=\"${fileName}\"`,\n );\n\n // again, || is used since an empty value.type means the content type is unset\n headers.set(\"Content-Type\", value.type || \"application/octet-stream\");\n\n parts.push({\n headers,\n body: value,\n });\n }\n }\n }\n request.multipartBody = { parts };\n}\n", "// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type * as http from \"http\";\nimport type * as https from \"https\";\nimport { HttpsProxyAgent } from \"https-proxy-agent\";\nimport { HttpProxyAgent } from \"http-proxy-agent\";\nimport type {\n PipelineRequest,\n PipelineResponse,\n ProxySettings,\n SendRequest,\n} from \"../interfaces.js\";\nimport type { PipelinePolicy } from \"../pipeline.js\";\nimport { logger } from \"../log.js\";\n\nconst HTTPS_PROXY = \"HTTPS_PROXY\";\nconst HTTP_PROXY = \"HTTP_PROXY\";\nconst ALL_PROXY = \"ALL_PROXY\";\nconst NO_PROXY = \"NO_PROXY\";\n\n/**\n * The programmatic identifier of the proxyPolicy.\n */\nexport const proxyPolicyName = \"proxyPolicy\";\n\n/**\n * Stores the patterns specified in NO_PROXY environment variable.\n * @internal\n */\nexport const globalNoProxyList: string[] = [];\nlet noProxyListLoaded: boolean = false;\n\n/** A cache of whether a host should bypass the proxy. */\nconst globalBypassedMap: Map = new Map();\n\nfunction getEnvironmentValue(name: string): string | undefined {\n if (process.env[name]) {\n return process.env[name];\n } else if (process.env[name.toLowerCase()]) {\n return process.env[name.toLowerCase()];\n }\n return undefined;\n}\n\nfunction loadEnvironmentProxyValue(): string | undefined {\n if (!process) {\n return undefined;\n }\n\n const httpsProxy = getEnvironmentValue(HTTPS_PROXY);\n const allProxy = getEnvironmentValue(ALL_PROXY);\n const httpProxy = getEnvironmentValue(HTTP_PROXY);\n\n return httpsProxy || allProxy || httpProxy;\n}\n\n/**\n * Check whether the host of a given `uri` matches any pattern in the no proxy list.\n * If there's a match, any request sent to the same host shouldn't have the proxy settings set.\n * This implementation is a port of https://github.com/Azure/azure-sdk-for-net/blob/8cca811371159e527159c7eb65602477898683e2/sdk/core/Azure.Core/src/Pipeline/Internal/HttpEnvironmentProxy.cs#L210\n */\nfunction isBypassed(\n uri: string,\n noProxyList: string[],\n bypassedMap?: Map,\n): boolean | undefined {\n if (noProxyList.length === 0) {\n return false;\n }\n const host = new URL(uri).hostname;\n if (bypassedMap?.has(host)) {\n return bypassedMap.get(host);\n }\n let isBypassedFlag = false;\n for (const pattern of noProxyList) {\n if (pattern[0] === \".\") {\n // This should match either domain it self or any subdomain or host\n // .foo.com will match foo.com it self or *.foo.com\n if (host.endsWith(pattern)) {\n isBypassedFlag = true;\n } else {\n if (host.length === pattern.length - 1 && host === pattern.slice(1)) {\n isBypassedFlag = true;\n }\n }\n } else {\n if (host === pattern) {\n isBypassedFlag = true;\n }\n }\n }\n bypassedMap?.set(host, isBypassedFlag);\n return isBypassedFlag;\n}\n\nexport function loadNoProxy(): string[] {\n const noProxy = getEnvironmentValue(NO_PROXY);\n noProxyListLoaded = true;\n if (noProxy) {\n return noProxy\n .split(\",\")\n .map((item) => item.trim())\n .filter((item) => item.length);\n }\n\n return [];\n}\n\n/**\n * This method converts a proxy url into `ProxySettings` for use with ProxyPolicy.\n * If no argument is given, it attempts to parse a proxy URL from the environment\n * variables `HTTPS_PROXY` or `HTTP_PROXY`.\n * @param proxyUrl - The url of the proxy to use. May contain authentication information.\n * @deprecated - Internally this method is no longer necessary when setting proxy information.\n */\nexport function getDefaultProxySettings(proxyUrl?: string): ProxySettings | undefined {\n if (!proxyUrl) {\n proxyUrl = loadEnvironmentProxyValue();\n if (!proxyUrl) {\n return undefined;\n }\n }\n\n const parsedUrl = new URL(proxyUrl);\n const schema = parsedUrl.protocol ? parsedUrl.protocol + \"//\" : \"\";\n return {\n host: schema + parsedUrl.hostname,\n port: Number.parseInt(parsedUrl.port || \"80\"),\n username: parsedUrl.username,\n password: parsedUrl.password,\n };\n}\n\n/**\n * This method attempts to parse a proxy URL from the environment\n * variables `HTTPS_PROXY` or `HTTP_PROXY`.\n */\nfunction getDefaultProxySettingsInternal(): URL | undefined {\n const envProxy = loadEnvironmentProxyValue();\n return envProxy ? new URL(envProxy) : undefined;\n}\n\nfunction getUrlFromProxySettings(settings: ProxySettings): URL {\n let parsedProxyUrl: URL;\n try {\n parsedProxyUrl = new URL(settings.host);\n } catch {\n throw new Error(\n `Expecting a valid host string in proxy settings, but found \"${settings.host}\".`,\n );\n }\n\n parsedProxyUrl.port = String(settings.port);\n if (settings.username) {\n parsedProxyUrl.username = settings.username;\n }\n if (settings.password) {\n parsedProxyUrl.password = settings.password;\n }\n\n return parsedProxyUrl;\n}\n\nfunction setProxyAgentOnRequest(\n request: PipelineRequest,\n cachedAgents: CachedAgents,\n proxyUrl: URL,\n): void {\n // Custom Agent should take precedence so if one is present\n // we should skip to avoid overwriting it.\n if (request.agent) {\n return;\n }\n\n const url = new URL(request.url);\n\n const isInsecure = url.protocol !== \"https:\";\n\n if (request.tlsSettings) {\n logger.warning(\n \"TLS settings are not supported in combination with custom Proxy, certificates provided to the client will be ignored.\",\n );\n }\n\n const headers = request.headers.toJSON();\n\n if (isInsecure) {\n if (!cachedAgents.httpProxyAgent) {\n cachedAgents.httpProxyAgent = new HttpProxyAgent(proxyUrl, { headers });\n }\n request.agent = cachedAgents.httpProxyAgent;\n } else {\n if (!cachedAgents.httpsProxyAgent) {\n cachedAgents.httpsProxyAgent = new HttpsProxyAgent(proxyUrl, { headers });\n }\n request.agent = cachedAgents.httpsProxyAgent;\n }\n}\n\ninterface CachedAgents {\n httpsProxyAgent?: https.Agent;\n httpProxyAgent?: http.Agent;\n}\n\n/**\n * A policy that allows one to apply proxy settings to all requests.\n * If not passed static settings, they will be retrieved from the HTTPS_PROXY\n * or HTTP_PROXY environment variables.\n * @param proxySettings - ProxySettings to use on each request.\n * @param options - additional settings, for example, custom NO_PROXY patterns\n */\nexport function proxyPolicy(\n proxySettings?: ProxySettings,\n options?: {\n /** a list of patterns to override those loaded from NO_PROXY environment variable. */\n customNoProxyList?: string[];\n },\n): PipelinePolicy {\n if (!noProxyListLoaded) {\n globalNoProxyList.push(...loadNoProxy());\n }\n\n const defaultProxy = proxySettings\n ? getUrlFromProxySettings(proxySettings)\n : getDefaultProxySettingsInternal();\n\n const cachedAgents: CachedAgents = {};\n\n return {\n name: proxyPolicyName,\n async sendRequest(request: PipelineRequest, next: SendRequest): Promise {\n if (\n !request.proxySettings &&\n defaultProxy &&\n !isBypassed(\n request.url,\n options?.customNoProxyList ?? globalNoProxyList,\n options?.customNoProxyList ? undefined : globalBypassedMap,\n )\n ) {\n setProxyAgentOnRequest(request, cachedAgents, defaultProxy);\n } else if (request.proxySettings) {\n setProxyAgentOnRequest(\n request,\n cachedAgents,\n getUrlFromProxySettings(request.proxySettings),\n );\n }\n return next(request);\n },\n };\n}\n", "// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { PipelineRequest, PipelineResponse, SendRequest } from \"../interfaces.js\";\nimport type { PipelinePolicy } from \"../pipeline.js\";\n\n/**\n * The programmatic identifier of the setClientRequestIdPolicy.\n */\nexport const setClientRequestIdPolicyName = \"setClientRequestIdPolicy\";\n\n/**\n * Each PipelineRequest gets a unique id upon creation.\n * This policy passes that unique id along via an HTTP header to enable better\n * telemetry and tracing.\n * @param requestIdHeaderName - The name of the header to pass the request ID to.\n */\nexport function setClientRequestIdPolicy(\n requestIdHeaderName = \"x-ms-client-request-id\",\n): PipelinePolicy {\n return {\n name: setClientRequestIdPolicyName,\n async sendRequest(request: PipelineRequest, next: SendRequest): Promise {\n if (!request.headers.has(requestIdHeaderName)) {\n request.headers.set(requestIdHeaderName, request.requestId);\n }\n return next(request);\n },\n };\n}\n", "// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { PipelinePolicy } from \"../pipeline.js\";\nimport type { Agent } from \"../interfaces.js\";\n\n/**\n * Name of the Agent Policy\n */\nexport const agentPolicyName = \"agentPolicy\";\n\n/**\n * Gets a pipeline policy that sets http.agent\n */\nexport function agentPolicy(agent?: Agent): PipelinePolicy {\n return {\n name: agentPolicyName,\n sendRequest: async (req, next) => {\n // Users may define an agent on the request, honor it over the client level one\n if (!req.agent) {\n req.agent = agent;\n }\n return next(req);\n },\n };\n}\n", "// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { PipelinePolicy } from \"../pipeline.js\";\nimport type { TlsSettings } from \"../interfaces.js\";\n\n/**\n * Name of the TLS Policy\n */\nexport const tlsPolicyName = \"tlsPolicy\";\n\n/**\n * Gets a pipeline policy that adds the client certificate to the HttpClient agent for authentication.\n */\nexport function tlsPolicy(tlsSettings?: TlsSettings): PipelinePolicy {\n return {\n name: tlsPolicyName,\n sendRequest: async (req, next) => {\n // Users may define a request tlsSettings, honor those over the client level one\n if (!req.tlsSettings) {\n req.tlsSettings = tlsSettings;\n }\n return next(req);\n },\n };\n}\n", "// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport { TracingContext, TracingSpan } from \"./interfaces.js\";\n\n/** @internal */\nexport const knownContextKeys = {\n span: Symbol.for(\"@azure/core-tracing span\"),\n namespace: Symbol.for(\"@azure/core-tracing namespace\"),\n};\n\n/**\n * Creates a new {@link TracingContext} with the given options.\n * @param options - A set of known keys that may be set on the context.\n * @returns A new {@link TracingContext} with the given options.\n *\n * @internal\n */\nexport function createTracingContext(options: CreateTracingContextOptions = {}): TracingContext {\n let context: TracingContext = new TracingContextImpl(options.parentContext);\n if (options.span) {\n context = context.setValue(knownContextKeys.span, options.span);\n }\n if (options.namespace) {\n context = context.setValue(knownContextKeys.namespace, options.namespace);\n }\n return context;\n}\n\n/** @internal */\nexport class TracingContextImpl implements TracingContext {\n private _contextMap: Map;\n constructor(initialContext?: TracingContext) {\n this._contextMap =\n initialContext instanceof TracingContextImpl\n ? new Map(initialContext._contextMap)\n : new Map();\n }\n\n setValue(key: symbol, value: unknown): TracingContext {\n const newContext = new TracingContextImpl(this);\n newContext._contextMap.set(key, value);\n return newContext;\n }\n\n getValue(key: symbol): unknown {\n return this._contextMap.get(key);\n }\n\n deleteValue(key: symbol): TracingContext {\n const newContext = new TracingContextImpl(this);\n newContext._contextMap.delete(key);\n return newContext;\n }\n}\n\n/**\n * Represents a set of items that can be set when creating a new {@link TracingContext}.\n */\nexport interface CreateTracingContextOptions {\n /** The {@link parentContext} - the newly created context will contain all the values of the parent context unless overridden. */\n parentContext?: TracingContext;\n /** An initial span to set on the context. */\n span?: TracingSpan;\n /** The namespace to set on any child spans. */\n namespace?: string;\n}\n", "// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport { Instrumenter } from \"./interfaces.js\";\n// @ts-expect-error The recommended approach to sharing module state between ESM and CJS.\n// See https://github.com/isaacs/tshy/blob/main/README.md#module-local-state for additional information.\nimport { state as cjsState } from \"../commonjs/state.js\";\n\n/**\n * Defines the shared state between CJS and ESM by re-exporting the CJS state.\n */\nexport const state = cjsState as {\n instrumenterImplementation: Instrumenter | undefined;\n};\n", "// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport {\n Instrumenter,\n InstrumenterSpanOptions,\n TracingContext,\n TracingSpan,\n} from \"./interfaces.js\";\n\nimport { createTracingContext } from \"./tracingContext.js\";\nimport { state } from \"./state.js\";\n\nexport function createDefaultTracingSpan(): TracingSpan {\n return {\n end: () => {\n // noop\n },\n isRecording: () => false,\n recordException: () => {\n // noop\n },\n setAttribute: () => {\n // noop\n },\n setStatus: () => {\n // noop\n },\n };\n}\n\nexport function createDefaultInstrumenter(): Instrumenter {\n return {\n createRequestHeaders: (): Record => {\n return {};\n },\n parseTraceparentHeader: (): TracingContext | undefined => {\n return undefined;\n },\n startSpan: (\n _name: string,\n spanOptions: InstrumenterSpanOptions,\n ): { span: TracingSpan; tracingContext: TracingContext } => {\n return {\n span: createDefaultTracingSpan(),\n tracingContext: createTracingContext({ parentContext: spanOptions.tracingContext }),\n };\n },\n withContext<\n CallbackArgs extends unknown[],\n Callback extends (...args: CallbackArgs) => ReturnType,\n >(\n _context: TracingContext,\n callback: Callback,\n ...callbackArgs: CallbackArgs\n ): ReturnType {\n return callback(...callbackArgs);\n },\n };\n}\n\n/**\n * Extends the Azure SDK with support for a given instrumenter implementation.\n *\n * @param instrumenter - The instrumenter implementation to use.\n */\nexport function useInstrumenter(instrumenter: Instrumenter): void {\n state.instrumenterImplementation = instrumenter;\n}\n\n/**\n * Gets the currently set instrumenter, a No-Op instrumenter by default.\n *\n * @returns The currently set instrumenter\n */\nexport function getInstrumenter(): Instrumenter {\n if (!state.instrumenterImplementation) {\n state.instrumenterImplementation = createDefaultInstrumenter();\n }\n return state.instrumenterImplementation;\n}\n", "// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport {\n OperationTracingOptions,\n OptionsWithTracingContext,\n Resolved,\n TracingClient,\n TracingClientOptions,\n TracingContext,\n TracingSpan,\n TracingSpanOptions,\n} from \"./interfaces.js\";\nimport { getInstrumenter } from \"./instrumenter.js\";\nimport { knownContextKeys } from \"./tracingContext.js\";\n\n/**\n * Creates a new tracing client.\n *\n * @param options - Options used to configure the tracing client.\n * @returns - An instance of {@link TracingClient}.\n */\nexport function createTracingClient(options: TracingClientOptions): TracingClient {\n const { namespace, packageName, packageVersion } = options;\n\n function startSpan(\n name: string,\n operationOptions?: Options,\n spanOptions?: TracingSpanOptions,\n ): {\n span: TracingSpan;\n updatedOptions: OptionsWithTracingContext;\n } {\n const startSpanResult = getInstrumenter().startSpan(name, {\n ...spanOptions,\n packageName: packageName,\n packageVersion: packageVersion,\n tracingContext: operationOptions?.tracingOptions?.tracingContext,\n });\n let tracingContext = startSpanResult.tracingContext;\n const span = startSpanResult.span;\n if (!tracingContext.getValue(knownContextKeys.namespace)) {\n tracingContext = tracingContext.setValue(knownContextKeys.namespace, namespace);\n }\n span.setAttribute(\"az.namespace\", tracingContext.getValue(knownContextKeys.namespace));\n const updatedOptions: OptionsWithTracingContext = Object.assign({}, operationOptions, {\n tracingOptions: { ...operationOptions?.tracingOptions, tracingContext },\n });\n\n return {\n span,\n updatedOptions,\n };\n }\n\n async function withSpan<\n Options extends { tracingOptions?: OperationTracingOptions },\n Callback extends (\n updatedOptions: Options,\n span: Omit,\n ) => ReturnType,\n >(\n name: string,\n operationOptions: Options,\n callback: Callback,\n spanOptions?: TracingSpanOptions,\n ): Promise>> {\n const { span, updatedOptions } = startSpan(name, operationOptions, spanOptions);\n try {\n const result = await withContext(updatedOptions.tracingOptions.tracingContext, () =>\n Promise.resolve(callback(updatedOptions, span)),\n );\n span.setStatus({ status: \"success\" });\n return result as ReturnType;\n } catch (err: any) {\n span.setStatus({ status: \"error\", error: err });\n throw err;\n } finally {\n span.end();\n }\n }\n\n function withContext<\n CallbackArgs extends unknown[],\n Callback extends (...args: CallbackArgs) => ReturnType,\n >(\n context: TracingContext,\n callback: Callback,\n ...callbackArgs: CallbackArgs\n ): ReturnType {\n return getInstrumenter().withContext(context, callback, ...callbackArgs);\n }\n\n /**\n * Parses a traceparent header value into a span identifier.\n *\n * @param traceparentHeader - The traceparent header to parse.\n * @returns An implementation-specific identifier for the span.\n */\n function parseTraceparentHeader(traceparentHeader: string): TracingContext | undefined {\n return getInstrumenter().parseTraceparentHeader(traceparentHeader);\n }\n\n /**\n * Creates a set of request headers to propagate tracing information to a backend.\n *\n * @param tracingContext - The context containing the span to serialize.\n * @returns The set of headers to add to a request.\n */\n function createRequestHeaders(tracingContext?: TracingContext): Record {\n return getInstrumenter().createRequestHeaders(tracingContext);\n }\n\n return {\n startSpan,\n withSpan,\n withContext,\n parseTraceparentHeader,\n createRequestHeaders,\n };\n}\n", "// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { inspect } from \"node:util\";\n\nexport const custom = inspect.custom;\n", "// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { isError } from \"@azure/core-util\";\nimport type { PipelineRequest, PipelineResponse } from \"./interfaces.js\";\nimport { custom } from \"./util/inspect.js\";\nimport { Sanitizer } from \"./util/sanitizer.js\";\n\nconst errorSanitizer = new Sanitizer();\n\n/**\n * The options supported by RestError.\n */\nexport interface RestErrorOptions {\n /**\n * The code of the error itself (use statics on RestError if possible.)\n */\n code?: string;\n /**\n * The HTTP status code of the request (if applicable.)\n */\n statusCode?: number;\n /**\n * The request that was made.\n */\n request?: PipelineRequest;\n /**\n * The response received (if any.)\n */\n response?: PipelineResponse;\n}\n\n/**\n * A custom error type for failed pipeline requests.\n */\nexport class RestError extends Error {\n /**\n * Something went wrong when making the request.\n * This means the actual request failed for some reason,\n * such as a DNS issue or the connection being lost.\n */\n static readonly REQUEST_SEND_ERROR: string = \"REQUEST_SEND_ERROR\";\n /**\n * This means that parsing the response from the server failed.\n * It may have been malformed.\n */\n static readonly PARSE_ERROR: string = \"PARSE_ERROR\";\n\n /**\n * The code of the error itself (use statics on RestError if possible.)\n */\n public code?: string;\n /**\n * The HTTP status code of the request (if applicable.)\n */\n public statusCode?: number;\n /**\n * The request that was made.\n * This property is non-enumerable.\n */\n public request?: PipelineRequest;\n /**\n * The response received (if any.)\n * This property is non-enumerable.\n */\n public response?: PipelineResponse;\n /**\n * Bonus property set by the throw site.\n */\n public details?: unknown;\n\n constructor(message: string, options: RestErrorOptions = {}) {\n super(message);\n this.name = \"RestError\";\n this.code = options.code;\n this.statusCode = options.statusCode;\n\n // The request and response may contain sensitive information in the headers or body.\n // To help prevent this sensitive information being accidentally logged, the request and response\n // properties are marked as non-enumerable here. This prevents them showing up in the output of\n // JSON.stringify and console.log.\n Object.defineProperty(this, \"request\", { value: options.request, enumerable: false });\n Object.defineProperty(this, \"response\", { value: options.response, enumerable: false });\n\n Object.setPrototypeOf(this, RestError.prototype);\n }\n\n /**\n * Logging method for util.inspect in Node\n */\n [custom](): string {\n // Extract non-enumerable properties and add them back. This is OK since in this output the request and\n // response get sanitized.\n return `RestError: ${this.message} \\n ${errorSanitizer.sanitize({\n ...this,\n request: this.request,\n response: this.response,\n })}`;\n }\n}\n\n/**\n * Typeguard for RestError\n * @param e - Something caught by a catch clause.\n */\nexport function isRestError(e: unknown): e is RestError {\n if (e instanceof RestError) {\n return true;\n }\n return isError(e) && e.name === \"RestError\";\n}\n", "// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport {\n type TracingClient,\n type TracingContext,\n type TracingSpan,\n createTracingClient,\n} from \"@azure/core-tracing\";\nimport { SDK_VERSION } from \"../constants.js\";\nimport type { PipelineRequest, PipelineResponse, SendRequest } from \"../interfaces.js\";\nimport type { PipelinePolicy } from \"../pipeline.js\";\nimport { getUserAgentValue } from \"../util/userAgent.js\";\nimport { logger } from \"../log.js\";\nimport { getErrorMessage, isError } from \"@azure/core-util\";\nimport { isRestError } from \"../restError.js\";\nimport { Sanitizer } from \"../util/sanitizer.js\";\n\n/**\n * The programmatic identifier of the tracingPolicy.\n */\nexport const tracingPolicyName = \"tracingPolicy\";\n\n/**\n * Options to configure the tracing policy.\n */\nexport interface TracingPolicyOptions {\n /**\n * String prefix to add to the user agent logged as metadata\n * on the generated Span.\n * Defaults to an empty string.\n */\n userAgentPrefix?: string;\n /**\n * Query string names whose values will be logged when logging is enabled. By default no\n * query string values are logged.\n */\n additionalAllowedQueryParameters?: string[];\n}\n\n/**\n * A simple policy to create OpenTelemetry Spans for each request made by the pipeline\n * that has SpanOptions with a parent.\n * Requests made without a parent Span will not be recorded.\n * @param options - Options to configure the telemetry logged by the tracing policy.\n */\nexport function tracingPolicy(options: TracingPolicyOptions = {}): PipelinePolicy {\n const userAgentPromise = getUserAgentValue(options.userAgentPrefix);\n const sanitizer = new Sanitizer({\n additionalAllowedQueryParameters: options.additionalAllowedQueryParameters,\n });\n const tracingClient = tryCreateTracingClient();\n\n return {\n name: tracingPolicyName,\n async sendRequest(request: PipelineRequest, next: SendRequest): Promise {\n if (!tracingClient) {\n return next(request);\n }\n\n const userAgent = await userAgentPromise;\n\n const spanAttributes = {\n \"http.url\": sanitizer.sanitizeUrl(request.url),\n \"http.method\": request.method,\n \"http.user_agent\": userAgent,\n requestId: request.requestId,\n };\n if (userAgent) {\n spanAttributes[\"http.user_agent\"] = userAgent;\n }\n\n const { span, tracingContext } = tryCreateSpan(tracingClient, request, spanAttributes) ?? {};\n\n if (!span || !tracingContext) {\n return next(request);\n }\n\n try {\n const response = await tracingClient.withContext(tracingContext, next, request);\n tryProcessResponse(span, response);\n return response;\n } catch (err: any) {\n tryProcessError(span, err);\n throw err;\n }\n },\n };\n}\n\nfunction tryCreateTracingClient(): TracingClient | undefined {\n try {\n return createTracingClient({\n namespace: \"\",\n packageName: \"@azure/core-rest-pipeline\",\n packageVersion: SDK_VERSION,\n });\n } catch (e: unknown) {\n logger.warning(`Error when creating the TracingClient: ${getErrorMessage(e)}`);\n return undefined;\n }\n}\n\nfunction tryCreateSpan(\n tracingClient: TracingClient,\n request: PipelineRequest,\n spanAttributes: Record,\n): { span: TracingSpan; tracingContext: TracingContext } | undefined {\n try {\n // As per spec, we do not need to differentiate between HTTP and HTTPS in span name.\n const { span, updatedOptions } = tracingClient.startSpan(\n `HTTP ${request.method}`,\n { tracingOptions: request.tracingOptions },\n {\n spanKind: \"client\",\n spanAttributes,\n },\n );\n\n // If the span is not recording, don't do any more work.\n if (!span.isRecording()) {\n span.end();\n return undefined;\n }\n\n // set headers\n const headers = tracingClient.createRequestHeaders(\n updatedOptions.tracingOptions.tracingContext,\n );\n for (const [key, value] of Object.entries(headers)) {\n request.headers.set(key, value);\n }\n return { span, tracingContext: updatedOptions.tracingOptions.tracingContext };\n } catch (e: any) {\n logger.warning(`Skipping creating a tracing span due to an error: ${getErrorMessage(e)}`);\n return undefined;\n }\n}\n\nfunction tryProcessError(span: TracingSpan, error: unknown): void {\n try {\n span.setStatus({\n status: \"error\",\n error: isError(error) ? error : undefined,\n });\n if (isRestError(error) && error.statusCode) {\n span.setAttribute(\"http.status_code\", error.statusCode);\n }\n span.end();\n } catch (e: any) {\n logger.warning(`Skipping tracing span processing due to an error: ${getErrorMessage(e)}`);\n }\n}\n\nfunction tryProcessResponse(span: TracingSpan, response: PipelineResponse): void {\n try {\n span.setAttribute(\"http.status_code\", response.status);\n const serviceRequestId = response.headers.get(\"x-ms-request-id\");\n if (serviceRequestId) {\n span.setAttribute(\"serviceRequestId\", serviceRequestId);\n }\n // Per semantic conventions, only set the status to error if the status code is 4xx or 5xx.\n // Otherwise, the status MUST remain unset.\n // https://opentelemetry.io/docs/specs/semconv/http/http-spans/#status\n if (response.status >= 400) {\n span.setStatus({\n status: \"error\",\n });\n }\n span.end();\n } catch (e: any) {\n logger.warning(`Skipping tracing span processing due to an error: ${getErrorMessage(e)}`);\n }\n}\n", "// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { type LogPolicyOptions, logPolicy } from \"./policies/logPolicy.js\";\nimport { type Pipeline, createEmptyPipeline } from \"./pipeline.js\";\nimport type { Agent, PipelineRetryOptions, ProxySettings, TlsSettings } from \"./interfaces.js\";\nimport { type RedirectPolicyOptions, redirectPolicy } from \"./policies/redirectPolicy.js\";\nimport { type UserAgentPolicyOptions, userAgentPolicy } from \"./policies/userAgentPolicy.js\";\nimport { multipartPolicy, multipartPolicyName } from \"./policies/multipartPolicy.js\";\nimport { decompressResponsePolicy } from \"./policies/decompressResponsePolicy.js\";\nimport { defaultRetryPolicy } from \"./policies/defaultRetryPolicy.js\";\nimport { formDataPolicy } from \"./policies/formDataPolicy.js\";\nimport { isNodeLike } from \"@azure/core-util\";\nimport { proxyPolicy } from \"./policies/proxyPolicy.js\";\nimport { setClientRequestIdPolicy } from \"./policies/setClientRequestIdPolicy.js\";\nimport { agentPolicy } from \"./policies/agentPolicy.js\";\nimport { tlsPolicy } from \"./policies/tlsPolicy.js\";\nimport { tracingPolicy } from \"./policies/tracingPolicy.js\";\n\n/**\n * Defines options that are used to configure the HTTP pipeline for\n * an SDK client.\n */\nexport interface PipelineOptions {\n /**\n * Options that control how to retry failed requests.\n */\n retryOptions?: PipelineRetryOptions;\n\n /**\n * Options to configure a proxy for outgoing requests.\n */\n proxyOptions?: ProxySettings;\n\n /** Options for configuring Agent instance for outgoing requests */\n agent?: Agent;\n\n /** Options for configuring TLS authentication */\n tlsOptions?: TlsSettings;\n\n /**\n * Options for how redirect responses are handled.\n */\n redirectOptions?: RedirectPolicyOptions;\n\n /**\n * Options for adding user agent details to outgoing requests.\n */\n userAgentOptions?: UserAgentPolicyOptions;\n\n /**\n * Options for setting common telemetry and tracing info to outgoing requests.\n */\n telemetryOptions?: TelemetryOptions;\n}\n\n/**\n * Defines options that are used to configure common telemetry and tracing info\n */\nexport interface TelemetryOptions {\n /**\n * The name of the header to pass the request ID to.\n */\n clientRequestIdHeaderName?: string;\n}\n\n/**\n * Defines options that are used to configure internal options of\n * the HTTP pipeline for an SDK client.\n */\nexport interface InternalPipelineOptions extends PipelineOptions {\n /**\n * Options to configure request/response logging.\n */\n loggingOptions?: LogPolicyOptions;\n}\n\n/**\n * Create a new pipeline with a default set of customizable policies.\n * @param options - Options to configure a custom pipeline.\n */\nexport function createPipelineFromOptions(options: InternalPipelineOptions): Pipeline {\n const pipeline = createEmptyPipeline();\n\n if (isNodeLike) {\n if (options.agent) {\n pipeline.addPolicy(agentPolicy(options.agent));\n }\n if (options.tlsOptions) {\n pipeline.addPolicy(tlsPolicy(options.tlsOptions));\n }\n pipeline.addPolicy(proxyPolicy(options.proxyOptions));\n pipeline.addPolicy(decompressResponsePolicy());\n }\n\n pipeline.addPolicy(formDataPolicy(), { beforePolicies: [multipartPolicyName] });\n pipeline.addPolicy(userAgentPolicy(options.userAgentOptions));\n pipeline.addPolicy(setClientRequestIdPolicy(options.telemetryOptions?.clientRequestIdHeaderName));\n // The multipart policy is added after policies with no phase, so that\n // policies can be added between it and formDataPolicy to modify\n // properties (e.g., making the boundary constant in recorded tests).\n pipeline.addPolicy(multipartPolicy(), { afterPhase: \"Deserialize\" });\n pipeline.addPolicy(defaultRetryPolicy(options.retryOptions), { phase: \"Retry\" });\n pipeline.addPolicy(tracingPolicy({ ...options.userAgentOptions, ...options.loggingOptions }), {\n afterPhase: \"Retry\",\n });\n if (isNodeLike) {\n // Both XHR and Fetch expect to handle redirects automatically,\n // so only include this policy when we're in Node.\n pipeline.addPolicy(redirectPolicy(options.redirectOptions), { afterPhase: \"Retry\" });\n }\n pipeline.addPolicy(logPolicy(options.loggingOptions), { afterPhase: \"Sign\" });\n\n return pipeline;\n}\n", "// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport * as http from \"node:http\";\nimport * as https from \"node:https\";\nimport * as zlib from \"node:zlib\";\nimport { Transform } from \"node:stream\";\nimport { AbortError } from \"@azure/abort-controller\";\nimport type {\n HttpClient,\n HttpHeaders,\n PipelineRequest,\n PipelineResponse,\n RequestBodyType,\n TlsSettings,\n TransferProgressEvent,\n} from \"./interfaces.js\";\nimport { createHttpHeaders } from \"./httpHeaders.js\";\nimport { RestError } from \"./restError.js\";\nimport type { IncomingMessage } from \"node:http\";\nimport { logger } from \"./log.js\";\n\nconst DEFAULT_TLS_SETTINGS = {};\n\nfunction isReadableStream(body: any): body is NodeJS.ReadableStream {\n return body && typeof body.pipe === \"function\";\n}\n\nfunction isStreamComplete(stream: NodeJS.ReadableStream): Promise {\n if (stream.readable === false) {\n return Promise.resolve();\n }\n\n return new Promise((resolve) => {\n const handler = (): void => {\n resolve();\n stream.removeListener(\"close\", handler);\n stream.removeListener(\"end\", handler);\n stream.removeListener(\"error\", handler);\n };\n\n stream.on(\"close\", handler);\n stream.on(\"end\", handler);\n stream.on(\"error\", handler);\n });\n}\n\nfunction isArrayBuffer(body: any): body is ArrayBuffer | ArrayBufferView {\n return body && typeof body.byteLength === \"number\";\n}\n\nclass ReportTransform extends Transform {\n private loadedBytes = 0;\n private progressCallback: (progress: TransferProgressEvent) => void;\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-function-type\n _transform(chunk: string | Buffer, _encoding: string, callback: Function): void {\n this.push(chunk);\n this.loadedBytes += chunk.length;\n try {\n this.progressCallback({ loadedBytes: this.loadedBytes });\n callback();\n } catch (e: any) {\n callback(e);\n }\n }\n\n constructor(progressCallback: (progress: TransferProgressEvent) => void) {\n super();\n this.progressCallback = progressCallback;\n }\n}\n\n/**\n * A HttpClient implementation that uses Node's \"https\" module to send HTTPS requests.\n * @internal\n */\nclass NodeHttpClient implements HttpClient {\n private cachedHttpAgent?: http.Agent;\n private cachedHttpsAgents: WeakMap = new WeakMap();\n\n /**\n * Makes a request over an underlying transport layer and returns the response.\n * @param request - The request to be made.\n */\n public async sendRequest(request: PipelineRequest): Promise {\n const abortController = new AbortController();\n let abortListener: ((event: any) => void) | undefined;\n if (request.abortSignal) {\n if (request.abortSignal.aborted) {\n throw new AbortError(\"The operation was aborted.\");\n }\n\n abortListener = (event: Event) => {\n if (event.type === \"abort\") {\n abortController.abort();\n }\n };\n request.abortSignal.addEventListener(\"abort\", abortListener);\n }\n\n if (request.timeout > 0) {\n setTimeout(() => {\n abortController.abort();\n }, request.timeout);\n }\n\n const acceptEncoding = request.headers.get(\"Accept-Encoding\");\n const shouldDecompress =\n acceptEncoding?.includes(\"gzip\") || acceptEncoding?.includes(\"deflate\");\n\n let body = typeof request.body === \"function\" ? request.body() : request.body;\n if (body && !request.headers.has(\"Content-Length\")) {\n const bodyLength = getBodyLength(body);\n if (bodyLength !== null) {\n request.headers.set(\"Content-Length\", bodyLength);\n }\n }\n\n let responseStream: NodeJS.ReadableStream | undefined;\n try {\n if (body && request.onUploadProgress) {\n const onUploadProgress = request.onUploadProgress;\n const uploadReportStream = new ReportTransform(onUploadProgress);\n uploadReportStream.on(\"error\", (e) => {\n logger.error(\"Error in upload progress\", e);\n });\n if (isReadableStream(body)) {\n body.pipe(uploadReportStream);\n } else {\n uploadReportStream.end(body);\n }\n\n body = uploadReportStream;\n }\n\n const res = await this.makeRequest(request, abortController, body);\n\n const headers = getResponseHeaders(res);\n\n const status = res.statusCode ?? 0;\n const response: PipelineResponse = {\n status,\n headers,\n request,\n };\n\n // Responses to HEAD must not have a body.\n // If they do return a body, that body must be ignored.\n if (request.method === \"HEAD\") {\n // call resume() and not destroy() to avoid closing the socket\n // and losing keep alive\n res.resume();\n return response;\n }\n\n responseStream = shouldDecompress ? getDecodedResponseStream(res, headers) : res;\n\n const onDownloadProgress = request.onDownloadProgress;\n if (onDownloadProgress) {\n const downloadReportStream = new ReportTransform(onDownloadProgress);\n downloadReportStream.on(\"error\", (e) => {\n logger.error(\"Error in download progress\", e);\n });\n responseStream.pipe(downloadReportStream);\n responseStream = downloadReportStream;\n }\n\n if (\n // Value of POSITIVE_INFINITY in streamResponseStatusCodes is considered as any status code\n request.streamResponseStatusCodes?.has(Number.POSITIVE_INFINITY) ||\n request.streamResponseStatusCodes?.has(response.status)\n ) {\n response.readableStreamBody = responseStream;\n } else {\n response.bodyAsText = await streamToText(responseStream);\n }\n\n return response;\n } finally {\n // clean up event listener\n if (request.abortSignal && abortListener) {\n let uploadStreamDone = Promise.resolve();\n if (isReadableStream(body)) {\n uploadStreamDone = isStreamComplete(body);\n }\n let downloadStreamDone = Promise.resolve();\n if (isReadableStream(responseStream)) {\n downloadStreamDone = isStreamComplete(responseStream);\n }\n Promise.all([uploadStreamDone, downloadStreamDone])\n .then(() => {\n // eslint-disable-next-line promise/always-return\n if (abortListener) {\n request.abortSignal?.removeEventListener(\"abort\", abortListener);\n }\n })\n .catch((e) => {\n logger.warning(\"Error when cleaning up abortListener on httpRequest\", e);\n });\n }\n }\n }\n\n private makeRequest(\n request: PipelineRequest,\n abortController: AbortController,\n body?: RequestBodyType,\n ): Promise {\n const url = new URL(request.url);\n\n const isInsecure = url.protocol !== \"https:\";\n\n if (isInsecure && !request.allowInsecureConnection) {\n throw new Error(`Cannot connect to ${request.url} while allowInsecureConnection is false.`);\n }\n\n const agent = (request.agent as http.Agent) ?? this.getOrCreateAgent(request, isInsecure);\n const options: http.RequestOptions = {\n agent,\n hostname: url.hostname,\n path: `${url.pathname}${url.search}`,\n port: url.port,\n method: request.method,\n headers: request.headers.toJSON({ preserveCase: true }),\n };\n\n return new Promise((resolve, reject) => {\n const req = isInsecure ? http.request(options, resolve) : https.request(options, resolve);\n\n req.once(\"error\", (err: Error & { code?: string }) => {\n reject(\n new RestError(err.message, { code: err.code ?? RestError.REQUEST_SEND_ERROR, request }),\n );\n });\n\n abortController.signal.addEventListener(\"abort\", () => {\n const abortError = new AbortError(\"The operation was aborted.\");\n req.destroy(abortError);\n reject(abortError);\n });\n if (body && isReadableStream(body)) {\n body.pipe(req);\n } else if (body) {\n if (typeof body === \"string\" || Buffer.isBuffer(body)) {\n req.end(body);\n } else if (isArrayBuffer(body)) {\n req.end(ArrayBuffer.isView(body) ? Buffer.from(body.buffer) : Buffer.from(body));\n } else {\n logger.error(\"Unrecognized body type\", body);\n reject(new RestError(\"Unrecognized body type\"));\n }\n } else {\n // streams don't like \"undefined\" being passed as data\n req.end();\n }\n });\n }\n\n private getOrCreateAgent(request: PipelineRequest, isInsecure: boolean): http.Agent {\n const disableKeepAlive = request.disableKeepAlive;\n\n // Handle Insecure requests first\n if (isInsecure) {\n if (disableKeepAlive) {\n // keepAlive:false is the default so we don't need a custom Agent\n return http.globalAgent;\n }\n\n if (!this.cachedHttpAgent) {\n // If there is no cached agent create a new one and cache it.\n this.cachedHttpAgent = new http.Agent({ keepAlive: true });\n }\n return this.cachedHttpAgent;\n } else {\n if (disableKeepAlive && !request.tlsSettings) {\n // When there are no tlsSettings and keepAlive is false\n // we don't need a custom agent\n return https.globalAgent;\n }\n\n // We use the tlsSettings to index cached clients\n const tlsSettings = request.tlsSettings ?? DEFAULT_TLS_SETTINGS;\n\n // Get the cached agent or create a new one with the\n // provided values for keepAlive and tlsSettings\n let agent = this.cachedHttpsAgents.get(tlsSettings);\n\n if (agent && agent.options.keepAlive === !disableKeepAlive) {\n return agent;\n }\n\n logger.info(\"No cached TLS Agent exist, creating a new Agent\");\n agent = new https.Agent({\n // keepAlive is true if disableKeepAlive is false.\n keepAlive: !disableKeepAlive,\n // Since we are spreading, if no tslSettings were provided, nothing is added to the agent options.\n ...tlsSettings,\n });\n\n this.cachedHttpsAgents.set(tlsSettings, agent);\n return agent;\n }\n }\n}\n\nfunction getResponseHeaders(res: IncomingMessage): HttpHeaders {\n const headers = createHttpHeaders();\n for (const header of Object.keys(res.headers)) {\n const value = res.headers[header];\n if (Array.isArray(value)) {\n if (value.length > 0) {\n headers.set(header, value[0]);\n }\n } else if (value) {\n headers.set(header, value);\n }\n }\n return headers;\n}\n\nfunction getDecodedResponseStream(\n stream: IncomingMessage,\n headers: HttpHeaders,\n): NodeJS.ReadableStream {\n const contentEncoding = headers.get(\"Content-Encoding\");\n if (contentEncoding === \"gzip\") {\n const unzip = zlib.createGunzip();\n stream.pipe(unzip);\n return unzip;\n } else if (contentEncoding === \"deflate\") {\n const inflate = zlib.createInflate();\n stream.pipe(inflate);\n return inflate;\n }\n\n return stream;\n}\n\nfunction streamToText(stream: NodeJS.ReadableStream): Promise {\n return new Promise((resolve, reject) => {\n const buffer: Buffer[] = [];\n\n stream.on(\"data\", (chunk) => {\n if (Buffer.isBuffer(chunk)) {\n buffer.push(chunk);\n } else {\n buffer.push(Buffer.from(chunk));\n }\n });\n stream.on(\"end\", () => {\n resolve(Buffer.concat(buffer).toString(\"utf8\"));\n });\n stream.on(\"error\", (e) => {\n if (e && e?.name === \"AbortError\") {\n reject(e);\n } else {\n reject(\n new RestError(`Error reading response as text: ${e.message}`, {\n code: RestError.PARSE_ERROR,\n }),\n );\n }\n });\n });\n}\n\n/** @internal */\nexport function getBodyLength(body: RequestBodyType): number | null {\n if (!body) {\n return 0;\n } else if (Buffer.isBuffer(body)) {\n return body.length;\n } else if (isReadableStream(body)) {\n return null;\n } else if (isArrayBuffer(body)) {\n return body.byteLength;\n } else if (typeof body === \"string\") {\n return Buffer.from(body).length;\n } else {\n return null;\n }\n}\n\n/**\n * Create a new HttpClient instance for the NodeJS environment.\n * @internal\n */\nexport function createNodeHttpClient(): HttpClient {\n return new NodeHttpClient();\n}\n", "// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { HttpClient } from \"./interfaces.js\";\nimport { createNodeHttpClient } from \"./nodeHttpClient.js\";\n\n/**\n * Create the correct HttpClient for the current environment.\n */\nexport function createDefaultHttpClient(): HttpClient {\n return createNodeHttpClient();\n}\n", "// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type {\n Agent,\n FormDataMap,\n HttpHeaders,\n MultipartRequestBody,\n PipelineRequest,\n ProxySettings,\n RequestBodyType,\n TlsSettings,\n TransferProgressEvent,\n} from \"./interfaces.js\";\nimport { createHttpHeaders } from \"./httpHeaders.js\";\nimport type { AbortSignalLike } from \"@azure/abort-controller\";\nimport { randomUUID } from \"@azure/core-util\";\nimport type { OperationTracingOptions } from \"@azure/core-tracing\";\nimport type { HttpMethods } from \"@azure/core-util\";\n\n/**\n * Settings to initialize a request.\n * Almost equivalent to Partial, but url is mandatory.\n */\nexport interface PipelineRequestOptions {\n /**\n * The URL to make the request to.\n */\n url: string;\n\n /**\n * The HTTP method to use when making the request.\n */\n method?: HttpMethods;\n\n /**\n * The HTTP headers to use when making the request.\n */\n headers?: HttpHeaders;\n\n /**\n * The number of milliseconds a request can take before automatically being terminated.\n * If the request is terminated, an `AbortError` is thrown.\n * Defaults to 0, which disables the timeout.\n */\n timeout?: number;\n\n /**\n * If credentials (cookies) should be sent along during an XHR.\n * Defaults to false.\n */\n withCredentials?: boolean;\n\n /**\n * A unique identifier for the request. Used for logging and tracing.\n */\n requestId?: string;\n\n /**\n * The HTTP body content (if any)\n */\n body?: RequestBodyType;\n\n /**\n * Body for a multipart request.\n */\n multipartBody?: MultipartRequestBody;\n\n /**\n * To simulate a browser form post\n */\n formData?: FormDataMap;\n\n /**\n * A list of response status codes whose corresponding PipelineResponse body should be treated as a stream.\n */\n streamResponseStatusCodes?: Set;\n\n /**\n * NODEJS ONLY\n *\n * A Node-only option to provide a custom `http.Agent`/`https.Agent`.\n * NOTE: usually this should be one instance shared by multiple requests so that the underlying\n * connection to the service can be reused.\n * Does nothing when running in the browser.\n */\n agent?: Agent;\n\n /**\n * BROWSER ONLY\n *\n * A browser only option to enable use of the Streams API. If this option is set and streaming is used\n * (see `streamResponseStatusCodes`), the response will have a property `browserStream` instead of\n * `blobBody` which will be undefined.\n *\n * Default value is false\n */\n enableBrowserStreams?: boolean;\n\n /** Settings for configuring TLS authentication */\n tlsSettings?: TlsSettings;\n\n /**\n * Proxy configuration.\n */\n proxySettings?: ProxySettings;\n\n /**\n * If the connection should not be reused.\n */\n disableKeepAlive?: boolean;\n\n /**\n * Used to abort the request later.\n */\n abortSignal?: AbortSignalLike;\n\n /**\n * Options used to create a span when tracing is enabled.\n */\n tracingOptions?: OperationTracingOptions;\n\n /**\n * Callback which fires upon upload progress.\n */\n onUploadProgress?: (progress: TransferProgressEvent) => void;\n\n /** Callback which fires upon download progress. */\n onDownloadProgress?: (progress: TransferProgressEvent) => void;\n\n /** Set to true if the request is sent over HTTP instead of HTTPS */\n allowInsecureConnection?: boolean;\n}\n\nclass PipelineRequestImpl implements PipelineRequest {\n public url: string;\n public method: HttpMethods;\n public headers: HttpHeaders;\n public timeout: number;\n public withCredentials: boolean;\n public body?: RequestBodyType;\n public multipartBody?: MultipartRequestBody;\n public formData?: FormDataMap;\n public streamResponseStatusCodes?: Set;\n public enableBrowserStreams: boolean;\n public proxySettings?: ProxySettings;\n public disableKeepAlive: boolean;\n public abortSignal?: AbortSignalLike;\n public requestId: string;\n public tracingOptions?: OperationTracingOptions;\n public allowInsecureConnection?: boolean;\n public onUploadProgress?: (progress: TransferProgressEvent) => void;\n public onDownloadProgress?: (progress: TransferProgressEvent) => void;\n public agent?: Agent;\n public tlsSettings?: TlsSettings;\n\n constructor(options: PipelineRequestOptions) {\n this.url = options.url;\n this.body = options.body;\n this.headers = options.headers ?? createHttpHeaders();\n this.method = options.method ?? \"GET\";\n this.timeout = options.timeout ?? 0;\n this.multipartBody = options.multipartBody;\n this.formData = options.formData;\n this.disableKeepAlive = options.disableKeepAlive ?? false;\n this.proxySettings = options.proxySettings;\n this.streamResponseStatusCodes = options.streamResponseStatusCodes;\n this.withCredentials = options.withCredentials ?? false;\n this.abortSignal = options.abortSignal;\n this.tracingOptions = options.tracingOptions;\n this.onUploadProgress = options.onUploadProgress;\n this.onDownloadProgress = options.onDownloadProgress;\n this.requestId = options.requestId || randomUUID();\n this.allowInsecureConnection = options.allowInsecureConnection ?? false;\n this.enableBrowserStreams = options.enableBrowserStreams ?? false;\n this.agent = options.agent;\n this.tlsSettings = options.tlsSettings;\n }\n}\n\n/**\n * Creates a new pipeline request with the given options.\n * This method is to allow for the easy setting of default values and not required.\n * @param options - The options to create the request with.\n */\nexport function createPipelineRequest(options: PipelineRequestOptions): PipelineRequest {\n return new PipelineRequestImpl(options);\n}\n", "// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { AccessToken, GetTokenOptions, TokenCredential } from \"@azure/core-auth\";\nimport { delay } from \"./helpers.js\";\n\n/**\n * A function that gets a promise of an access token and allows providing\n * options.\n *\n * @param options - the options to pass to the underlying token provider\n */\nexport type AccessTokenGetter = (\n scopes: string | string[],\n options: GetTokenOptions,\n) => Promise;\n\nexport interface TokenCyclerOptions {\n /**\n * The window of time before token expiration during which the token will be\n * considered unusable due to risk of the token expiring before sending the\n * request.\n *\n * This will only become meaningful if the refresh fails for over\n * (refreshWindow - forcedRefreshWindow) milliseconds.\n */\n forcedRefreshWindowInMs: number;\n /**\n * Interval in milliseconds to retry failed token refreshes.\n */\n retryIntervalInMs: number;\n /**\n * The window of time before token expiration during which\n * we will attempt to refresh the token.\n */\n refreshWindowInMs: number;\n}\n\n// Default options for the cycler if none are provided\nexport const DEFAULT_CYCLER_OPTIONS: TokenCyclerOptions = {\n forcedRefreshWindowInMs: 1000, // Force waiting for a refresh 1s before the token expires\n retryIntervalInMs: 3000, // Allow refresh attempts every 3s\n refreshWindowInMs: 1000 * 60 * 2, // Start refreshing 2m before expiry\n};\n\n/**\n * Converts an an unreliable access token getter (which may resolve with null)\n * into an AccessTokenGetter by retrying the unreliable getter in a regular\n * interval.\n *\n * @param getAccessToken - A function that produces a promise of an access token that may fail by returning null.\n * @param retryIntervalInMs - The time (in milliseconds) to wait between retry attempts.\n * @param refreshTimeout - The timestamp after which the refresh attempt will fail, throwing an exception.\n * @returns - A promise that, if it resolves, will resolve with an access token.\n */\nasync function beginRefresh(\n getAccessToken: () => Promise,\n retryIntervalInMs: number,\n refreshTimeout: number,\n): Promise {\n // This wrapper handles exceptions gracefully as long as we haven't exceeded\n // the timeout.\n async function tryGetAccessToken(): Promise {\n if (Date.now() < refreshTimeout) {\n try {\n return await getAccessToken();\n } catch {\n return null;\n }\n } else {\n const finalToken = await getAccessToken();\n\n // Timeout is up, so throw if it's still null\n if (finalToken === null) {\n throw new Error(\"Failed to refresh access token.\");\n }\n\n return finalToken;\n }\n }\n\n let token: AccessToken | null = await tryGetAccessToken();\n\n while (token === null) {\n await delay(retryIntervalInMs);\n\n token = await tryGetAccessToken();\n }\n\n return token;\n}\n\n/**\n * Creates a token cycler from a credential, scopes, and optional settings.\n *\n * A token cycler represents a way to reliably retrieve a valid access token\n * from a TokenCredential. It will handle initializing the token, refreshing it\n * when it nears expiration, and synchronizes refresh attempts to avoid\n * concurrency hazards.\n *\n * @param credential - the underlying TokenCredential that provides the access\n * token\n * @param tokenCyclerOptions - optionally override default settings for the cycler\n *\n * @returns - a function that reliably produces a valid access token\n */\nexport function createTokenCycler(\n credential: TokenCredential,\n tokenCyclerOptions?: Partial,\n): AccessTokenGetter {\n let refreshWorker: Promise | null = null;\n let token: AccessToken | null = null;\n let tenantId: string | undefined;\n\n const options = {\n ...DEFAULT_CYCLER_OPTIONS,\n ...tokenCyclerOptions,\n };\n\n /**\n * This little holder defines several predicates that we use to construct\n * the rules of refreshing the token.\n */\n const cycler = {\n /**\n * Produces true if a refresh job is currently in progress.\n */\n get isRefreshing(): boolean {\n return refreshWorker !== null;\n },\n /**\n * Produces true if the cycler SHOULD refresh (we are within the refresh\n * window and not already refreshing)\n */\n get shouldRefresh(): boolean {\n if (cycler.isRefreshing) {\n return false;\n }\n if (token?.refreshAfterTimestamp && token.refreshAfterTimestamp < Date.now()) {\n return true;\n }\n\n return (token?.expiresOnTimestamp ?? 0) - options.refreshWindowInMs < Date.now();\n },\n /**\n * Produces true if the cycler MUST refresh (null or nearly-expired\n * token).\n */\n get mustRefresh(): boolean {\n return (\n token === null || token.expiresOnTimestamp - options.forcedRefreshWindowInMs < Date.now()\n );\n },\n };\n\n /**\n * Starts a refresh job or returns the existing job if one is already\n * running.\n */\n function refresh(\n scopes: string | string[],\n getTokenOptions: GetTokenOptions,\n ): Promise {\n if (!cycler.isRefreshing) {\n // We bind `scopes` here to avoid passing it around a lot\n const tryGetAccessToken = (): Promise =>\n credential.getToken(scopes, getTokenOptions);\n\n // Take advantage of promise chaining to insert an assignment to `token`\n // before the refresh can be considered done.\n refreshWorker = beginRefresh(\n tryGetAccessToken,\n options.retryIntervalInMs,\n // If we don't have a token, then we should timeout immediately\n token?.expiresOnTimestamp ?? Date.now(),\n )\n .then((_token) => {\n refreshWorker = null;\n token = _token;\n tenantId = getTokenOptions.tenantId;\n return token;\n })\n .catch((reason) => {\n // We also should reset the refresher if we enter a failed state. All\n // existing awaiters will throw, but subsequent requests will start a\n // new retry chain.\n refreshWorker = null;\n token = null;\n tenantId = undefined;\n throw reason;\n });\n }\n\n return refreshWorker as Promise;\n }\n\n return async (scopes: string | string[], tokenOptions: GetTokenOptions): Promise => {\n //\n // Simple rules:\n // - If we MUST refresh, then return the refresh task, blocking\n // the pipeline until a token is available.\n // - If we SHOULD refresh, then run refresh but don't return it\n // (we can still use the cached token).\n // - Return the token, since it's fine if we didn't return in\n // step 1.\n //\n\n const hasClaimChallenge = Boolean(tokenOptions.claims);\n const tenantIdChanged = tenantId !== tokenOptions.tenantId;\n\n if (hasClaimChallenge) {\n // If we've received a claim, we know the existing token isn't valid\n // We want to clear it so that that refresh worker won't use the old expiration time as a timeout\n token = null;\n }\n\n // If the tenantId passed in token options is different to the one we have\n // Or if we are in claim challenge and the token was rejected and a new access token need to be issued, we need to\n // refresh the token with the new tenantId or token.\n const mustRefresh = tenantIdChanged || hasClaimChallenge || cycler.mustRefresh;\n\n if (mustRefresh) {\n return refresh(scopes, tokenOptions);\n }\n\n if (cycler.shouldRefresh) {\n refresh(scopes, tokenOptions);\n }\n\n return token as AccessToken;\n };\n}\n", "// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { AccessToken, GetTokenOptions, TokenCredential } from \"@azure/core-auth\";\nimport type { AzureLogger } from \"@azure/logger\";\nimport type { PipelineRequest, PipelineResponse, SendRequest } from \"../interfaces.js\";\nimport type { PipelinePolicy } from \"../pipeline.js\";\nimport { createTokenCycler } from \"../util/tokenCycler.js\";\nimport { logger as coreLogger } from \"../log.js\";\nimport type { RestError } from \"../restError.js\";\nimport { isRestError } from \"../restError.js\";\n\n/**\n * The programmatic identifier of the bearerTokenAuthenticationPolicy.\n */\nexport const bearerTokenAuthenticationPolicyName = \"bearerTokenAuthenticationPolicy\";\n\n/**\n * Options sent to the authorizeRequest callback\n */\nexport interface AuthorizeRequestOptions {\n /**\n * The scopes for which the bearer token applies.\n */\n scopes: string[];\n /**\n * Function that retrieves either a cached access token or a new access token.\n */\n getAccessToken: (scopes: string[], options: GetTokenOptions) => Promise;\n /**\n * Request that the policy is trying to fulfill.\n */\n request: PipelineRequest;\n /**\n * A logger, if one was sent through the HTTP pipeline.\n */\n logger?: AzureLogger;\n}\n\n/**\n * Options sent to the authorizeRequestOnChallenge callback\n */\nexport interface AuthorizeRequestOnChallengeOptions {\n /**\n * The scopes for which the bearer token applies.\n */\n scopes: string[];\n /**\n * Function that retrieves either a cached access token or a new access token.\n */\n getAccessToken: (scopes: string[], options: GetTokenOptions) => Promise;\n /**\n * Request that the policy is trying to fulfill.\n */\n request: PipelineRequest;\n /**\n * Response containing the challenge.\n */\n response: PipelineResponse;\n /**\n * A logger, if one was sent through the HTTP pipeline.\n */\n logger?: AzureLogger;\n}\n\n/**\n * Options to override the processing of [Continuous Access Evaluation](https://learn.microsoft.com/azure/active-directory/conditional-access/concept-continuous-access-evaluation) challenges.\n */\nexport interface ChallengeCallbacks {\n /**\n * Allows for the authorization of the main request of this policy before it's sent.\n */\n authorizeRequest?(options: AuthorizeRequestOptions): Promise;\n /**\n * Allows to handle authentication challenges and to re-authorize the request.\n * The response containing the challenge is `options.response`.\n * If this method returns true, the underlying request will be sent once again.\n * The request may be modified before being sent.\n */\n authorizeRequestOnChallenge?(options: AuthorizeRequestOnChallengeOptions): Promise;\n}\n\n/**\n * Options to configure the bearerTokenAuthenticationPolicy\n */\nexport interface BearerTokenAuthenticationPolicyOptions {\n /**\n * The TokenCredential implementation that can supply the bearer token.\n */\n credential?: TokenCredential;\n /**\n * The scopes for which the bearer token applies.\n */\n scopes: string | string[];\n /**\n * Allows for the processing of [Continuous Access Evaluation](https://learn.microsoft.com/azure/active-directory/conditional-access/concept-continuous-access-evaluation) challenges.\n * If provided, it must contain at least the `authorizeRequestOnChallenge` method.\n * If provided, after a request is sent, if it has a challenge, it can be processed to re-send the original request with the relevant challenge information.\n */\n challengeCallbacks?: ChallengeCallbacks;\n /**\n * A logger can be sent for debugging purposes.\n */\n logger?: AzureLogger;\n}\n/**\n * Try to send the given request.\n *\n * When a response is received, returns a tuple of the response received and, if the response was received\n * inside a thrown RestError, the RestError that was thrown.\n *\n * Otherwise, if an error was thrown while sending the request that did not provide an underlying response, it\n * will be rethrown.\n */\nasync function trySendRequest(\n request: PipelineRequest,\n next: SendRequest,\n): Promise<[PipelineResponse, RestError | undefined]> {\n try {\n return [await next(request), undefined];\n } catch (e: any) {\n if (isRestError(e) && e.response) {\n return [e.response, e];\n } else {\n throw e;\n }\n }\n}\n/**\n * Default authorize request handler\n */\nasync function defaultAuthorizeRequest(options: AuthorizeRequestOptions): Promise {\n const { scopes, getAccessToken, request } = options;\n // Enable CAE true by default\n const getTokenOptions: GetTokenOptions = {\n abortSignal: request.abortSignal,\n tracingOptions: request.tracingOptions,\n enableCae: true,\n };\n\n const accessToken = await getAccessToken(scopes, getTokenOptions);\n\n if (accessToken) {\n options.request.headers.set(\"Authorization\", `Bearer ${accessToken.token}`);\n }\n}\n\n/**\n * We will retrieve the challenge only if the response status code was 401,\n * and if the response contained the header \"WWW-Authenticate\" with a non-empty value.\n */\nfunction isChallengeResponse(response: PipelineResponse): boolean {\n return response.status === 401 && response.headers.has(\"WWW-Authenticate\");\n}\n\n/**\n * Re-authorize the request for CAE challenge.\n * The response containing the challenge is `options.response`.\n * If this method returns true, the underlying request will be sent once again.\n */\nasync function authorizeRequestOnCaeChallenge(\n onChallengeOptions: AuthorizeRequestOnChallengeOptions,\n caeClaims: string,\n): Promise {\n const { scopes } = onChallengeOptions;\n\n const accessToken = await onChallengeOptions.getAccessToken(scopes, {\n enableCae: true,\n claims: caeClaims,\n });\n if (!accessToken) {\n return false;\n }\n\n onChallengeOptions.request.headers.set(\n \"Authorization\",\n `${accessToken.tokenType ?? \"Bearer\"} ${accessToken.token}`,\n );\n return true;\n}\n\n/**\n * A policy that can request a token from a TokenCredential implementation and\n * then apply it to the Authorization header of a request as a Bearer token.\n */\nexport function bearerTokenAuthenticationPolicy(\n options: BearerTokenAuthenticationPolicyOptions,\n): PipelinePolicy {\n const { credential, scopes, challengeCallbacks } = options;\n const logger = options.logger || coreLogger;\n const callbacks = {\n authorizeRequest:\n challengeCallbacks?.authorizeRequest?.bind(challengeCallbacks) ?? defaultAuthorizeRequest,\n authorizeRequestOnChallenge:\n challengeCallbacks?.authorizeRequestOnChallenge?.bind(challengeCallbacks),\n };\n\n // This function encapsulates the entire process of reliably retrieving the token\n // The options are left out of the public API until there's demand to configure this.\n // Remember to extend `BearerTokenAuthenticationPolicyOptions` with `TokenCyclerOptions`\n // in order to pass through the `options` object.\n const getAccessToken = credential\n ? createTokenCycler(credential /* , options */)\n : () => Promise.resolve(null);\n\n return {\n name: bearerTokenAuthenticationPolicyName,\n /**\n * If there's no challenge parameter:\n * - It will try to retrieve the token using the cache, or the credential's getToken.\n * - Then it will try the next policy with or without the retrieved token.\n *\n * It uses the challenge parameters to:\n * - Skip a first attempt to get the token from the credential if there's no cached token,\n * since it expects the token to be retrievable only after the challenge.\n * - Prepare the outgoing request if the `prepareRequest` method has been provided.\n * - Send an initial request to receive the challenge if it fails.\n * - Process a challenge if the response contains it.\n * - Retrieve a token with the challenge information, then re-send the request.\n */\n async sendRequest(request: PipelineRequest, next: SendRequest): Promise {\n if (!request.url.toLowerCase().startsWith(\"https://\")) {\n throw new Error(\n \"Bearer token authentication is not permitted for non-TLS protected (non-https) URLs.\",\n );\n }\n\n await callbacks.authorizeRequest({\n scopes: Array.isArray(scopes) ? scopes : [scopes],\n request,\n getAccessToken,\n logger,\n });\n\n let response: PipelineResponse;\n let error: Error | undefined;\n let shouldSendRequest: boolean;\n [response, error] = await trySendRequest(request, next);\n\n if (isChallengeResponse(response)) {\n let claims = getCaeChallengeClaims(response.headers.get(\"WWW-Authenticate\"));\n // Handle CAE by default when receive CAE claim\n if (claims) {\n let parsedClaim: string;\n // Return the response immediately if claims is not a valid base64 encoded string\n try {\n parsedClaim = atob(claims);\n } catch (e) {\n logger.warning(\n `The WWW-Authenticate header contains \"claims\" that cannot be parsed. Unable to perform the Continuous Access Evaluation authentication flow. Unparsable claims: ${claims}`,\n );\n return response;\n }\n shouldSendRequest = await authorizeRequestOnCaeChallenge(\n {\n scopes: Array.isArray(scopes) ? scopes : [scopes],\n response,\n request,\n getAccessToken,\n logger,\n },\n parsedClaim,\n );\n // Send updated request and handle response for RestError\n if (shouldSendRequest) {\n [response, error] = await trySendRequest(request, next);\n }\n } else if (callbacks.authorizeRequestOnChallenge) {\n // Handle custom challenges when client provides custom callback\n shouldSendRequest = await callbacks.authorizeRequestOnChallenge({\n scopes: Array.isArray(scopes) ? scopes : [scopes],\n request,\n response,\n getAccessToken,\n logger,\n });\n\n // Send updated request and handle response for RestError\n if (shouldSendRequest) {\n [response, error] = await trySendRequest(request, next);\n }\n\n // If we get another CAE Claim, we will handle it by default and return whatever value we receive for this\n if (isChallengeResponse(response)) {\n claims = getCaeChallengeClaims(response.headers.get(\"WWW-Authenticate\") as string);\n if (claims) {\n let parsedClaim: string;\n try {\n parsedClaim = atob(claims);\n } catch (e) {\n logger.warning(\n `The WWW-Authenticate header contains \"claims\" that cannot be parsed. Unable to perform the Continuous Access Evaluation authentication flow. Unparsable claims: ${claims}`,\n );\n return response;\n }\n\n shouldSendRequest = await authorizeRequestOnCaeChallenge(\n {\n scopes: Array.isArray(scopes) ? scopes : [scopes],\n response,\n request,\n getAccessToken,\n logger,\n },\n parsedClaim,\n );\n // Send updated request and handle response for RestError\n if (shouldSendRequest) {\n [response, error] = await trySendRequest(request, next);\n }\n }\n }\n }\n }\n\n if (error) {\n throw error;\n } else {\n return response;\n }\n },\n };\n}\n\n/**\n *\n * Interface to represent a parsed challenge.\n *\n * @internal\n */\ninterface AuthChallenge {\n scheme: string;\n params: Record;\n}\n\n/**\n * Converts: `Bearer a=\"b\", c=\"d\", Pop e=\"f\", g=\"h\"`.\n * Into: `[ { scheme: 'Bearer', params: { a: 'b', c: 'd' } }, { scheme: 'Pop', params: { e: 'f', g: 'h' } } ]`.\n *\n * @internal\n */\nexport function parseChallenges(challenges: string): AuthChallenge[] {\n // Challenge regex seperates the string to individual challenges with different schemes in the format `Scheme a=\"b\", c=d`\n // The challenge regex captures parameteres with either quotes values or unquoted values\n const challengeRegex = /(\\w+)\\s+((?:\\w+=(?:\"[^\"]*\"|[^,]*),?\\s*)+)/g;\n // Parameter regex captures the claims group removed from the scheme in the format `a=\"b\"` and `c=\"d\"`\n // CAE challenge always have quoted parameters. For more reference, https://learn.microsoft.com/entra/identity-platform/claims-challenge\n const paramRegex = /(\\w+)=\"([^\"]*)\"/g;\n\n const parsedChallenges: AuthChallenge[] = [];\n let match;\n\n // Iterate over each challenge match\n while ((match = challengeRegex.exec(challenges)) !== null) {\n const scheme = match[1];\n const paramsString = match[2];\n const params: Record = {};\n let paramMatch;\n\n // Iterate over each parameter match\n while ((paramMatch = paramRegex.exec(paramsString)) !== null) {\n params[paramMatch[1]] = paramMatch[2];\n }\n\n parsedChallenges.push({ scheme, params });\n }\n return parsedChallenges;\n}\n\n/**\n * Parse a pipeline response and look for a CAE challenge with \"Bearer\" scheme\n * Return the value in the header without parsing the challenge\n * @internal\n */\nfunction getCaeChallengeClaims(challenges: string | undefined): string | undefined {\n if (!challenges) {\n return;\n }\n // Find all challenges present in the header\n const parsedChallenges = parseChallenges(challenges);\n return parsedChallenges.find(\n (x) => x.scheme === \"Bearer\" && x.params.claims && x.params.error === \"insufficient_claims\",\n )?.params.claims;\n}\n", "/*\n * Copyright (c) Microsoft Corporation.\n * Licensed under the MIT License.\n *\n * Code generated by Microsoft (R) AutoRest Code Generator.\n * Changes may cause incorrect behavior and will be lost if the code is regenerated.\n */\n\nexport interface PageInfo {\n continuationToken?: string;\n}\n\nconst pageMap = new WeakMap();\n\n/**\n * Given the last `.value` produced by the `byPage` iterator,\n * returns a continuation token that can be used to begin paging from\n * that point later.\n * @param page An object from accessing `value` on the IteratorResult from a `byPage` iterator.\n * @returns The continuation token that can be passed into byPage() during future calls.\n */\nexport function getContinuationToken(page: unknown): string | undefined {\n if (typeof page !== \"object\" || page === null) {\n return undefined;\n }\n return pageMap.get(page)?.continuationToken;\n}\n\nexport function setContinuationToken(\n page: unknown,\n continuationToken: string | undefined,\n): void {\n if (typeof page !== \"object\" || page === null || !continuationToken) {\n return;\n }\n const pageInfo = pageMap.get(page) ?? {};\n pageInfo.continuationToken = continuationToken;\n pageMap.set(page, pageInfo);\n}\n", "/*\n * Copyright (c) Microsoft Corporation.\n * Licensed under the MIT License.\n *\n * Code generated by Microsoft (R) AutoRest Code Generator.\n * Changes may cause incorrect behavior and will be lost if the code is regenerated.\n */\n\nimport * as coreClient from \"@azure/core-client\";\n\n/** Result of the request to list Microsoft.Resources operations. It contains a list of operations and a URL link to get the next set of results. */\nexport interface OperationListResult {\n /** List of Microsoft.Resources operations. */\n value?: Operation[];\n /** URL to get the next set of operation list results if there are any. */\n nextLink?: string;\n}\n\n/** Microsoft.Resources operation */\nexport interface Operation {\n /** Operation name: {provider}/{resource}/{operation} */\n name?: string;\n /** The object that represents the operation. */\n display?: OperationDisplay;\n}\n\n/** The object that represents the operation. */\nexport interface OperationDisplay {\n /** Service provider: Microsoft.Resources */\n provider?: string;\n /** Resource on which the operation is performed: Profile, endpoint, etc. */\n resource?: string;\n /** Operation type: Read, write, delete, etc. */\n operation?: string;\n /** Description of the operation. */\n description?: string;\n}\n\n/** An error response for a resource management request. */\nexport interface CloudError {\n /** Common error response for all Azure Resource Manager APIs to return error details for failed operations. (This also follows the OData error response format.) */\n error?: ErrorResponse;\n}\n\n/** Common error response for all Azure Resource Manager APIs to return error details for failed operations. (This also follows the OData error response format.) */\nexport interface ErrorResponse {\n /**\n * The error code.\n * NOTE: This property will not be serialized. It can only be populated by the server.\n */\n readonly code?: string;\n /**\n * The error message.\n * NOTE: This property will not be serialized. It can only be populated by the server.\n */\n readonly message?: string;\n /**\n * The error target.\n * NOTE: This property will not be serialized. It can only be populated by the server.\n */\n readonly target?: string;\n /**\n * The error details.\n * NOTE: This property will not be serialized. It can only be populated by the server.\n */\n readonly details?: ErrorResponse[];\n /**\n * The error additional info.\n * NOTE: This property will not be serialized. It can only be populated by the server.\n */\n readonly additionalInfo?: ErrorAdditionalInfo[];\n}\n\n/** The resource management error additional info. */\nexport interface ErrorAdditionalInfo {\n /**\n * The additional info type.\n * NOTE: This property will not be serialized. It can only be populated by the server.\n */\n readonly type?: string;\n /**\n * The additional info.\n * NOTE: This property will not be serialized. It can only be populated by the server.\n */\n readonly info?: Record;\n}\n\n/** Deployment operation parameters. */\nexport interface Deployment {\n /** The location to store the deployment data. */\n location?: string;\n /** The deployment properties. */\n properties: DeploymentProperties;\n /** Deployment tags */\n tags?: { [propertyName: string]: string };\n}\n\n/** Deployment properties. */\nexport interface DeploymentProperties {\n /** The template content. You use this element when you want to pass the template syntax directly in the request rather than link to an existing template. It can be a JObject or well-formed JSON string. Use either the templateLink property or the template property, but not both. */\n template?: Record;\n /** The URI of the template. Use either the templateLink property or the template property, but not both. */\n templateLink?: TemplateLink;\n /** Name and value pairs that define the deployment parameters for the template. You use this element when you want to provide the parameter values directly in the request rather than link to an existing parameter file. Use either the parametersLink property or the parameters property, but not both. It can be a JObject or a well formed JSON string. */\n parameters?: { [propertyName: string]: DeploymentParameter };\n /** The URI of parameters file. You use this element to link to an existing parameters file. Use either the parametersLink property or the parameters property, but not both. */\n parametersLink?: ParametersLink;\n /** The mode that is used to deploy resources. This value can be either Incremental or Complete. In Incremental mode, resources are deployed without deleting existing resources that are not included in the template. In Complete mode, resources are deployed and existing resources in the resource group that are not included in the template are deleted. Be careful when using Complete mode as you may unintentionally delete resources. */\n mode: DeploymentMode;\n /** The debug setting of the deployment. */\n debugSetting?: DebugSetting;\n /** The deployment on error behavior. */\n onErrorDeployment?: OnErrorDeployment;\n /** Specifies whether template expressions are evaluated within the scope of the parent template or nested template. Only applicable to nested templates. If not specified, default value is outer. */\n expressionEvaluationOptions?: ExpressionEvaluationOptions;\n /** The validation level of the deployment */\n validationLevel?: ValidationLevel;\n}\n\n/** Entity representing the reference to the template. */\nexport interface TemplateLink {\n /** The URI of the template to deploy. Use either the uri or id property, but not both. */\n uri?: string;\n /** The resource id of a Template Spec. Use either the id or uri property, but not both. */\n id?: string;\n /** The relativePath property can be used to deploy a linked template at a location relative to the parent. If the parent template was linked with a TemplateSpec, this will reference an artifact in the TemplateSpec. If the parent was linked with a URI, the child deployment will be a combination of the parent and relativePath URIs */\n relativePath?: string;\n /** If included, must match the ContentVersion in the template. */\n contentVersion?: string;\n /** The query string (for example, a SAS token) to be used with the templateLink URI. */\n queryString?: string;\n}\n\n/** Deployment parameter for the template. */\nexport interface DeploymentParameter {\n /** Input value to the parameter . */\n value?: any;\n /** Azure Key Vault parameter reference. */\n reference?: KeyVaultParameterReference;\n}\n\n/** Azure Key Vault parameter reference. */\nexport interface KeyVaultParameterReference {\n /** Azure Key Vault reference. */\n keyVault: KeyVaultReference;\n /** Azure Key Vault secret name. */\n secretName: string;\n /** Azure Key Vault secret version. */\n secretVersion?: string;\n}\n\n/** Azure Key Vault reference. */\nexport interface KeyVaultReference {\n /** Azure Key Vault resource id. */\n id: string;\n}\n\n/** Entity representing the reference to the deployment parameters. */\nexport interface ParametersLink {\n /** The URI of the parameters file. */\n uri: string;\n /** If included, must match the ContentVersion in the template. */\n contentVersion?: string;\n}\n\n/** The debug setting. */\nexport interface DebugSetting {\n /** Specifies the type of information to log for debugging. The permitted values are none, requestContent, responseContent, or both requestContent and responseContent separated by a comma. The default is none. When setting this value, carefully consider the type of information you are passing in during deployment. By logging information about the request or response, you could potentially expose sensitive data that is retrieved through the deployment operations. */\n detailLevel?: string;\n}\n\n/** Deployment on error behavior. */\nexport interface OnErrorDeployment {\n /** The deployment on error behavior type. Possible values are LastSuccessful and SpecificDeployment. */\n type?: OnErrorDeploymentType;\n /** The deployment to be used on error case. */\n deploymentName?: string;\n}\n\n/** Specifies whether template expressions are evaluated within the scope of the parent template or nested template. */\nexport interface ExpressionEvaluationOptions {\n /** The scope to be used for evaluation of parameters, variables and functions in a nested template. */\n scope?: ExpressionEvaluationOptionsScopeType;\n}\n\n/** Deployment information. */\nexport interface DeploymentExtended {\n /**\n * The ID of the deployment.\n * NOTE: This property will not be serialized. It can only be populated by the server.\n */\n readonly id?: string;\n /**\n * The name of the deployment.\n * NOTE: This property will not be serialized. It can only be populated by the server.\n */\n readonly name?: string;\n /**\n * The type of the deployment.\n * NOTE: This property will not be serialized. It can only be populated by the server.\n */\n readonly type?: string;\n /** the location of the deployment. */\n location?: string;\n /** Deployment properties. */\n properties?: DeploymentPropertiesExtended;\n /** Deployment tags */\n tags?: { [propertyName: string]: string };\n}\n\n/** Deployment properties with additional details. */\nexport interface DeploymentPropertiesExtended {\n /**\n * Denotes the state of provisioning.\n * NOTE: This property will not be serialized. It can only be populated by the server.\n */\n readonly provisioningState?: ProvisioningState;\n /**\n * The correlation ID of the deployment.\n * NOTE: This property will not be serialized. It can only be populated by the server.\n */\n readonly correlationId?: string;\n /**\n * The timestamp of the template deployment.\n * NOTE: This property will not be serialized. It can only be populated by the server.\n */\n readonly timestamp?: Date;\n /**\n * The duration of the template deployment.\n * NOTE: This property will not be serialized. It can only be populated by the server.\n */\n readonly duration?: string;\n /**\n * Key/value pairs that represent deployment output.\n * NOTE: This property will not be serialized. It can only be populated by the server.\n */\n readonly outputs?: Record;\n /**\n * The list of resource providers needed for the deployment.\n * NOTE: This property will not be serialized. It can only be populated by the server.\n */\n readonly providers?: Provider[];\n /**\n * The list of deployment dependencies.\n * NOTE: This property will not be serialized. It can only be populated by the server.\n */\n readonly dependencies?: Dependency[];\n /**\n * The URI referencing the template.\n * NOTE: This property will not be serialized. It can only be populated by the server.\n */\n readonly templateLink?: TemplateLink;\n /**\n * Deployment parameters.\n * NOTE: This property will not be serialized. It can only be populated by the server.\n */\n readonly parameters?: Record;\n /**\n * The URI referencing the parameters.\n * NOTE: This property will not be serialized. It can only be populated by the server.\n */\n readonly parametersLink?: ParametersLink;\n /**\n * The deployment mode. Possible values are Incremental and Complete.\n * NOTE: This property will not be serialized. It can only be populated by the server.\n */\n readonly mode?: DeploymentMode;\n /**\n * The debug setting of the deployment.\n * NOTE: This property will not be serialized. It can only be populated by the server.\n */\n readonly debugSetting?: DebugSetting;\n /**\n * The deployment on error behavior.\n * NOTE: This property will not be serialized. It can only be populated by the server.\n */\n readonly onErrorDeployment?: OnErrorDeploymentExtended;\n /**\n * The hash produced for the template.\n * NOTE: This property will not be serialized. It can only be populated by the server.\n */\n readonly templateHash?: string;\n /**\n * Array of provisioned resources.\n * NOTE: This property will not be serialized. It can only be populated by the server.\n */\n readonly outputResources?: ResourceReference[];\n /**\n * Array of validated resources.\n * NOTE: This property will not be serialized. It can only be populated by the server.\n */\n readonly validatedResources?: ResourceReference[];\n /**\n * The deployment error.\n * NOTE: This property will not be serialized. It can only be populated by the server.\n */\n readonly error?: ErrorResponse;\n /**\n * Contains diagnostic information collected during validation process.\n * NOTE: This property will not be serialized. It can only be populated by the server.\n */\n readonly diagnostics?: DeploymentDiagnosticsDefinition[];\n /** The validation level of the deployment */\n validationLevel?: ValidationLevel;\n}\n\n/** Resource provider information. */\nexport interface Provider {\n /**\n * The provider ID.\n * NOTE: This property will not be serialized. It can only be populated by the server.\n */\n readonly id?: string;\n /** The namespace of the resource provider. */\n namespace?: string;\n /**\n * The registration state of the resource provider.\n * NOTE: This property will not be serialized. It can only be populated by the server.\n */\n readonly registrationState?: string;\n /**\n * The registration policy of the resource provider.\n * NOTE: This property will not be serialized. It can only be populated by the server.\n */\n readonly registrationPolicy?: string;\n /**\n * The collection of provider resource types.\n * NOTE: This property will not be serialized. It can only be populated by the server.\n */\n readonly resourceTypes?: ProviderResourceType[];\n /** The provider authorization consent state. */\n providerAuthorizationConsentState?: ProviderAuthorizationConsentState;\n}\n\n/** Resource type managed by the resource provider. */\nexport interface ProviderResourceType {\n /** The resource type. */\n resourceType?: string;\n /** The collection of locations where this resource type can be created. */\n locations?: string[];\n /** The location mappings that are supported by this resource type. */\n locationMappings?: ProviderExtendedLocation[];\n /** The aliases that are supported by this resource type. */\n aliases?: Alias[];\n /** The API version. */\n apiVersions?: string[];\n /**\n * The default API version.\n * NOTE: This property will not be serialized. It can only be populated by the server.\n */\n readonly defaultApiVersion?: string;\n zoneMappings?: ZoneMapping[];\n /**\n * The API profiles for the resource provider.\n * NOTE: This property will not be serialized. It can only be populated by the server.\n */\n readonly apiProfiles?: ApiProfile[];\n /** The additional capabilities offered by this resource type. */\n capabilities?: string;\n /** The properties. */\n properties?: { [propertyName: string]: string };\n}\n\n/** The provider extended location. */\nexport interface ProviderExtendedLocation {\n /** The azure location. */\n location?: string;\n /** The extended location type. */\n type?: string;\n /** The extended locations for the azure location. */\n extendedLocations?: string[];\n}\n\n/** The alias type. */\nexport interface Alias {\n /** The alias name. */\n name?: string;\n /** The paths for an alias. */\n paths?: AliasPath[];\n /** The type of the alias. */\n type?: AliasType;\n /** The default path for an alias. */\n defaultPath?: string;\n /** The default pattern for an alias. */\n defaultPattern?: AliasPattern;\n /**\n * The default alias path metadata. Applies to the default path and to any alias path that doesn't have metadata\n * NOTE: This property will not be serialized. It can only be populated by the server.\n */\n readonly defaultMetadata?: AliasPathMetadata;\n}\n\n/** The type of the paths for alias. */\nexport interface AliasPath {\n /** The path of an alias. */\n path?: string;\n /** The API versions. */\n apiVersions?: string[];\n /** The pattern for an alias path. */\n pattern?: AliasPattern;\n /**\n * The metadata of the alias path. If missing, fall back to the default metadata of the alias.\n * NOTE: This property will not be serialized. It can only be populated by the server.\n */\n readonly metadata?: AliasPathMetadata;\n}\n\n/** The type of the pattern for an alias path. */\nexport interface AliasPattern {\n /** The alias pattern phrase. */\n phrase?: string;\n /** The alias pattern variable. */\n variable?: string;\n /** The type of alias pattern */\n type?: AliasPatternType;\n}\n\nexport interface AliasPathMetadata {\n /**\n * The type of the token that the alias path is referring to.\n * NOTE: This property will not be serialized. It can only be populated by the server.\n */\n readonly type?: AliasPathTokenType;\n /**\n * The attributes of the token that the alias path is referring to.\n * NOTE: This property will not be serialized. It can only be populated by the server.\n */\n readonly attributes?: AliasPathAttributes;\n}\n\nexport interface ZoneMapping {\n /** The location of the zone mapping. */\n location?: string;\n zones?: string[];\n}\n\nexport interface ApiProfile {\n /**\n * The profile version.\n * NOTE: This property will not be serialized. It can only be populated by the server.\n */\n readonly profileVersion?: string;\n /**\n * The API version.\n * NOTE: This property will not be serialized. It can only be populated by the server.\n */\n readonly apiVersion?: string;\n}\n\n/** Deployment dependency information. */\nexport interface Dependency {\n /** The list of dependencies. */\n dependsOn?: BasicDependency[];\n /** The ID of the dependency. */\n id?: string;\n /** The dependency resource type. */\n resourceType?: string;\n /** The dependency resource name. */\n resourceName?: string;\n}\n\n/** Deployment dependency information. */\nexport interface BasicDependency {\n /** The ID of the dependency. */\n id?: string;\n /** The dependency resource type. */\n resourceType?: string;\n /** The dependency resource name. */\n resourceName?: string;\n}\n\n/** Deployment on error behavior with additional details. */\nexport interface OnErrorDeploymentExtended {\n /**\n * The state of the provisioning for the on error deployment.\n * NOTE: This property will not be serialized. It can only be populated by the server.\n */\n readonly provisioningState?: string;\n /** The deployment on error behavior type. Possible values are LastSuccessful and SpecificDeployment. */\n type?: OnErrorDeploymentType;\n /** The deployment to be used on error case. */\n deploymentName?: string;\n}\n\n/** The resource Id model. */\nexport interface ResourceReference {\n /**\n * The fully qualified resource Id.\n * NOTE: This property will not be serialized. It can only be populated by the server.\n */\n readonly id?: string;\n}\n\nexport interface DeploymentDiagnosticsDefinition {\n /**\n * Denotes the additional response level.\n * NOTE: This property will not be serialized. It can only be populated by the server.\n */\n readonly level: Level;\n /**\n * The error code.\n * NOTE: This property will not be serialized. It can only be populated by the server.\n */\n readonly code: string;\n /**\n * The error message.\n * NOTE: This property will not be serialized. It can only be populated by the server.\n */\n readonly message: string;\n /**\n * The error target.\n * NOTE: This property will not be serialized. It can only be populated by the server.\n */\n readonly target?: string;\n /**\n * The error additional info.\n * NOTE: This property will not be serialized. It can only be populated by the server.\n */\n readonly additionalInfo?: ErrorAdditionalInfo[];\n}\n\n/** Information from validate template deployment response. */\nexport interface DeploymentValidateResult {\n /**\n * The deployment validation error.\n * NOTE: This property will not be serialized. It can only be populated by the server.\n */\n readonly error?: ErrorResponse;\n /**\n * The ID of the deployment.\n * NOTE: This property will not be serialized. It can only be populated by the server.\n */\n readonly id?: string;\n /**\n * The name of the deployment.\n * NOTE: This property will not be serialized. It can only be populated by the server.\n */\n readonly name?: string;\n /**\n * The type of the deployment.\n * NOTE: This property will not be serialized. It can only be populated by the server.\n */\n readonly type?: string;\n /** The template deployment properties. */\n properties?: DeploymentPropertiesExtended;\n}\n\n/** The deployment export result. */\nexport interface DeploymentExportResult {\n /** The template content. */\n template?: Record;\n}\n\n/** List of deployments. */\nexport interface DeploymentListResult {\n /** An array of deployments. */\n value?: DeploymentExtended[];\n /**\n * The URL to use for getting the next set of results.\n * NOTE: This property will not be serialized. It can only be populated by the server.\n */\n readonly nextLink?: string;\n}\n\n/** Deployment operation parameters. */\nexport interface ScopedDeployment {\n /** The location to store the deployment data. */\n location: string;\n /** The deployment properties. */\n properties: DeploymentProperties;\n /** Deployment tags */\n tags?: { [propertyName: string]: string };\n}\n\n/** Deployment What-if operation parameters. */\nexport interface ScopedDeploymentWhatIf {\n /** The location to store the deployment data. */\n location: string;\n /** The deployment properties. */\n properties: DeploymentWhatIfProperties;\n}\n\n/** Deployment What-If operation settings. */\nexport interface DeploymentWhatIfSettings {\n /** The format of the What-If results */\n resultFormat?: WhatIfResultFormat;\n}\n\n/** Result of the What-If operation. Contains a list of predicted changes and a URL link to get to the next set of results. */\nexport interface WhatIfOperationResult {\n /** Status of the What-If operation. */\n status?: string;\n /** Error when What-If operation fails. */\n error?: ErrorResponse;\n /** List of resource changes predicted by What-If operation. */\n changes?: WhatIfChange[];\n /** List of resource changes predicted by What-If operation. */\n potentialChanges?: WhatIfChange[];\n /**\n * List of resource diagnostics detected by What-If operation.\n * NOTE: This property will not be serialized. It can only be populated by the server.\n */\n readonly diagnostics?: DeploymentDiagnosticsDefinition[];\n}\n\n/** Information about a single resource change predicted by What-If operation. */\nexport interface WhatIfChange {\n /** Resource ID */\n resourceId?: string;\n /** The resource id of the Deployment responsible for this change. */\n deploymentId?: string;\n /** The symbolic name of the resource responsible for this change. */\n symbolicName?: string;\n /** A subset of properties that uniquely identify a Bicep extensible resource because it lacks a resource id like an Azure resource has. */\n identifiers?: Record;\n /** Type of change that will be made to the resource when the deployment is executed. */\n changeType: ChangeType;\n /** The explanation about why the resource is unsupported by What-If. */\n unsupportedReason?: string;\n /** The snapshot of the resource before the deployment is executed. */\n before?: Record;\n /** The predicted snapshot of the resource after the deployment is executed. */\n after?: Record;\n /** The predicted changes to resource properties. */\n delta?: WhatIfPropertyChange[];\n}\n\n/** The predicted change to the resource property. */\nexport interface WhatIfPropertyChange {\n /** The path of the property. */\n path: string;\n /** The type of property change. */\n propertyChangeType: PropertyChangeType;\n /** The value of the property before the deployment is executed. */\n before?: Record;\n /** The value of the property after the deployment is executed. */\n after?: Record;\n /** Nested property changes. */\n children?: WhatIfPropertyChange[];\n}\n\n/** Deployment What-if operation parameters. */\nexport interface DeploymentWhatIf {\n /** The location to store the deployment data. */\n location?: string;\n /** The deployment properties. */\n properties: DeploymentWhatIfProperties;\n}\n\n/** List of provider permissions. */\nexport interface ProviderPermissionListResult {\n /** An array of provider permissions. */\n value?: ProviderPermission[];\n /**\n * The URL to use for getting the next set of results.\n * NOTE: This property will not be serialized. It can only be populated by the server.\n */\n readonly nextLink?: string;\n}\n\n/** The provider permission */\nexport interface ProviderPermission {\n /** The application id. */\n applicationId?: string;\n /** Role definition properties. */\n roleDefinition?: RoleDefinition;\n /** Role definition properties. */\n managedByRoleDefinition?: RoleDefinition;\n /** The provider authorization consent state. */\n providerAuthorizationConsentState?: ProviderAuthorizationConsentState;\n}\n\n/** Role definition properties. */\nexport interface RoleDefinition {\n /** The role definition ID. */\n id?: string;\n /** The role definition name. */\n name?: string;\n /** If this is a service role. */\n isServiceRole?: boolean;\n /** Role definition permissions. */\n permissions?: Permission[];\n /** Role definition assignable scopes. */\n scopes?: string[];\n}\n\n/** Role definition permissions. */\nexport interface Permission {\n /** Allowed actions. */\n actions?: string[];\n /** Denied actions. */\n notActions?: string[];\n /** Allowed Data actions. */\n dataActions?: string[];\n /** Denied Data actions. */\n notDataActions?: string[];\n}\n\n/** The provider registration definition. */\nexport interface ProviderRegistrationRequest {\n /** The provider consent. */\n thirdPartyProviderConsent?: ProviderConsentDefinition;\n}\n\n/** The provider consent. */\nexport interface ProviderConsentDefinition {\n /** A value indicating whether authorization is consented or not. */\n consentToAuthorization?: boolean;\n}\n\n/** List of resource providers. */\nexport interface ProviderListResult {\n /** An array of resource providers. */\n value?: Provider[];\n /**\n * The URL to use for getting the next set of results.\n * NOTE: This property will not be serialized. It can only be populated by the server.\n */\n readonly nextLink?: string;\n}\n\n/** List of resource types of a resource provider. */\nexport interface ProviderResourceTypeListResult {\n /** An array of resource types. */\n value?: ProviderResourceType[];\n /**\n * The URL to use for getting the next set of results.\n * NOTE: This property will not be serialized. It can only be populated by the server.\n */\n readonly nextLink?: string;\n}\n\n/** List of resource groups. */\nexport interface ResourceListResult {\n /** An array of resources. */\n value?: GenericResourceExpanded[];\n /**\n * The URL to use for getting the next set of results.\n * NOTE: This property will not be serialized. It can only be populated by the server.\n */\n readonly nextLink?: string;\n}\n\n/** Plan for the resource. */\nexport interface Plan {\n /** The plan ID. */\n name?: string;\n /** The publisher ID. */\n publisher?: string;\n /** The offer ID. */\n product?: string;\n /** The promotion code. */\n promotionCode?: string;\n /** The plan's version. */\n version?: string;\n}\n\n/** SKU for the resource. */\nexport interface Sku {\n /** The SKU name. */\n name?: string;\n /** The SKU tier. */\n tier?: string;\n /** The SKU size. */\n size?: string;\n /** The SKU family. */\n family?: string;\n /** The SKU model. */\n model?: string;\n /** The SKU capacity. */\n capacity?: number;\n}\n\n/** Identity for the resource. */\nexport interface Identity {\n /**\n * The principal ID of resource identity.\n * NOTE: This property will not be serialized. It can only be populated by the server.\n */\n readonly principalId?: string;\n /**\n * The tenant ID of resource.\n * NOTE: This property will not be serialized. It can only be populated by the server.\n */\n readonly tenantId?: string;\n /** The identity type. */\n type?: ResourceIdentityType;\n /** The list of user identities associated with the resource. The user identity dictionary key references will be ARM resource ids in the form: '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ManagedIdentity/userAssignedIdentities/{identityName}'. */\n userAssignedIdentities?: {\n [propertyName: string]: IdentityUserAssignedIdentitiesValue;\n };\n}\n\nexport interface IdentityUserAssignedIdentitiesValue {\n /**\n * The principal id of user assigned identity.\n * NOTE: This property will not be serialized. It can only be populated by the server.\n */\n readonly principalId?: string;\n /**\n * The client id of user assigned identity.\n * NOTE: This property will not be serialized. It can only be populated by the server.\n */\n readonly clientId?: string;\n}\n\n/** Specified resource. */\nexport interface Resource {\n /**\n * Resource ID\n * NOTE: This property will not be serialized. It can only be populated by the server.\n */\n readonly id?: string;\n /**\n * Resource name\n * NOTE: This property will not be serialized. It can only be populated by the server.\n */\n readonly name?: string;\n /**\n * Resource type\n * NOTE: This property will not be serialized. It can only be populated by the server.\n */\n readonly type?: string;\n /** Resource location */\n location?: string;\n /** Resource extended location. */\n extendedLocation?: ExtendedLocation;\n /** Resource tags */\n tags?: { [propertyName: string]: string };\n}\n\n/** Resource extended location. */\nexport interface ExtendedLocation {\n /** The extended location type. */\n type?: ExtendedLocationType;\n /** The extended location name. */\n name?: string;\n}\n\n/** Resource group information. */\nexport interface ResourceGroup {\n /**\n * The ID of the resource group.\n * NOTE: This property will not be serialized. It can only be populated by the server.\n */\n readonly id?: string;\n /**\n * The name of the resource group.\n * NOTE: This property will not be serialized. It can only be populated by the server.\n */\n readonly name?: string;\n /**\n * The type of the resource group.\n * NOTE: This property will not be serialized. It can only be populated by the server.\n */\n readonly type?: string;\n /** The resource group properties. */\n properties?: ResourceGroupProperties;\n /** The location of the resource group. It cannot be changed after the resource group has been created. It must be one of the supported Azure locations. */\n location: string;\n /** The ID of the resource that manages this resource group. */\n managedBy?: string;\n /** The tags attached to the resource group. */\n tags?: { [propertyName: string]: string };\n}\n\n/** The resource group properties. */\nexport interface ResourceGroupProperties {\n /**\n * The provisioning state.\n * NOTE: This property will not be serialized. It can only be populated by the server.\n */\n readonly provisioningState?: string;\n}\n\n/** Resource group information. */\nexport interface ResourceGroupPatchable {\n /** The name of the resource group. */\n name?: string;\n /** The resource group properties. */\n properties?: ResourceGroupProperties;\n /** The ID of the resource that manages this resource group. */\n managedBy?: string;\n /** The tags attached to the resource group. */\n tags?: { [propertyName: string]: string };\n}\n\n/** Export resource group template request parameters. */\nexport interface ExportTemplateRequest {\n /** The IDs of the resources to filter the export by. To export all resources, supply an array with single entry '*'. */\n resources?: string[];\n /** The export template options. A CSV-formatted list containing zero or more of the following: 'IncludeParameterDefaultValue', 'IncludeComments', 'SkipResourceNameParameterization', 'SkipAllParameterization' */\n options?: string;\n /** The output format for the exported resources. */\n outputFormat?: ExportTemplateOutputFormat;\n}\n\n/** Resource group export result. */\nexport interface ResourceGroupExportResult {\n /** The template content. Used if outputFormat is empty or set to 'Json'. */\n template?: Record;\n /** The formatted export content. Used if outputFormat is set to 'Bicep'. */\n output?: string;\n /** The template export error. */\n error?: ErrorResponse;\n}\n\n/** List of resource groups. */\nexport interface ResourceGroupListResult {\n /** An array of resource groups. */\n value?: ResourceGroup[];\n /**\n * The URL to use for getting the next set of results.\n * NOTE: This property will not be serialized. It can only be populated by the server.\n */\n readonly nextLink?: string;\n}\n\n/** Parameters of move resources. */\nexport interface ResourcesMoveInfo {\n /** The IDs of the resources. */\n resources?: string[];\n /** The target resource group. */\n targetResourceGroup?: string;\n}\n\n/** Tag information. */\nexport interface TagValue {\n /**\n * The tag value ID.\n * NOTE: This property will not be serialized. It can only be populated by the server.\n */\n readonly id?: string;\n /** The tag value. */\n tagValue?: string;\n /** The tag value count. */\n count?: TagCount;\n}\n\n/** Tag count. */\nexport interface TagCount {\n /** Type of count. */\n type?: string;\n /** Value of count. */\n value?: number;\n}\n\n/** Tag details. */\nexport interface TagDetails {\n /**\n * The tag name ID.\n * NOTE: This property will not be serialized. It can only be populated by the server.\n */\n readonly id?: string;\n /** The tag name. */\n tagName?: string;\n /** The total number of resources that use the resource tag. When a tag is initially created and has no associated resources, the value is 0. */\n count?: TagCount;\n /** The list of tag values. */\n values?: TagValue[];\n}\n\n/** List of subscription tags. */\nexport interface TagsListResult {\n /** An array of tags. */\n value?: TagDetails[];\n /**\n * The URL to use for getting the next set of results.\n * NOTE: This property will not be serialized. It can only be populated by the server.\n */\n readonly nextLink?: string;\n}\n\n/** Deployment operation information. */\nexport interface DeploymentOperation {\n /**\n * Full deployment operation ID.\n * NOTE: This property will not be serialized. It can only be populated by the server.\n */\n readonly id?: string;\n /**\n * Deployment operation ID.\n * NOTE: This property will not be serialized. It can only be populated by the server.\n */\n readonly operationId?: string;\n /** Deployment properties. */\n properties?: DeploymentOperationProperties;\n}\n\n/** Deployment operation properties. */\nexport interface DeploymentOperationProperties {\n /**\n * The name of the current provisioning operation.\n * NOTE: This property will not be serialized. It can only be populated by the server.\n */\n readonly provisioningOperation?: ProvisioningOperation;\n /**\n * The state of the provisioning.\n * NOTE: This property will not be serialized. It can only be populated by the server.\n */\n readonly provisioningState?: string;\n /**\n * The date and time of the operation.\n * NOTE: This property will not be serialized. It can only be populated by the server.\n */\n readonly timestamp?: Date;\n /**\n * The duration of the operation.\n * NOTE: This property will not be serialized. It can only be populated by the server.\n */\n readonly duration?: string;\n /**\n * Deployment operation service request id.\n * NOTE: This property will not be serialized. It can only be populated by the server.\n */\n readonly serviceRequestId?: string;\n /**\n * Operation status code from the resource provider. This property may not be set if a response has not yet been received.\n * NOTE: This property will not be serialized. It can only be populated by the server.\n */\n readonly statusCode?: string;\n /**\n * Operation status message from the resource provider. This property is optional. It will only be provided if an error was received from the resource provider.\n * NOTE: This property will not be serialized. It can only be populated by the server.\n */\n readonly statusMessage?: StatusMessage;\n /**\n * The target resource.\n * NOTE: This property will not be serialized. It can only be populated by the server.\n */\n readonly targetResource?: TargetResource;\n /**\n * The HTTP request message.\n * NOTE: This property will not be serialized. It can only be populated by the server.\n */\n readonly request?: HttpMessage;\n /**\n * The HTTP response message.\n * NOTE: This property will not be serialized. It can only be populated by the server.\n */\n readonly response?: HttpMessage;\n}\n\n/** Operation status message object. */\nexport interface StatusMessage {\n /** Status of the deployment operation. */\n status?: string;\n /** The error reported by the operation. */\n error?: ErrorResponse;\n}\n\n/** Target resource. */\nexport interface TargetResource {\n /** The ID of the resource. */\n id?: string;\n /** The name of the resource. */\n resourceName?: string;\n /** The type of the resource. */\n resourceType?: string;\n}\n\n/** HTTP message. */\nexport interface HttpMessage {\n /** HTTP message content. */\n content?: Record;\n}\n\n/** List of deployment operations. */\nexport interface DeploymentOperationsListResult {\n /** An array of deployment operations. */\n value?: DeploymentOperation[];\n /**\n * The URL to use for getting the next set of results.\n * NOTE: This property will not be serialized. It can only be populated by the server.\n */\n readonly nextLink?: string;\n}\n\n/** Result of the request to calculate template hash. It contains a string of minified template and its hash. */\nexport interface TemplateHashResult {\n /** The minified template string. */\n minifiedTemplate?: string;\n /** The template hash. */\n templateHash?: string;\n}\n\n/** Wrapper resource for tags API requests and responses. */\nexport interface TagsResource {\n /**\n * The ID of the tags wrapper resource.\n * NOTE: This property will not be serialized. It can only be populated by the server.\n */\n readonly id?: string;\n /**\n * The name of the tags wrapper resource.\n * NOTE: This property will not be serialized. It can only be populated by the server.\n */\n readonly name?: string;\n /**\n * The type of the tags wrapper resource.\n * NOTE: This property will not be serialized. It can only be populated by the server.\n */\n readonly type?: string;\n /** The set of tags. */\n properties: Tags;\n}\n\n/** A dictionary of name and value pairs. */\nexport interface Tags {\n /** Dictionary of */\n tags?: { [propertyName: string]: string };\n}\n\n/** Wrapper resource for tags patch API request only. */\nexport interface TagsPatchResource {\n /** The operation type for the patch API. */\n operation?: TagsPatchOperation;\n /** The set of tags. */\n properties?: Tags;\n}\n\n/** Deployment filter. */\nexport interface DeploymentExtendedFilter {\n /** The provisioning state. */\n provisioningState?: string;\n}\n\n/** Resource filter. */\nexport interface GenericResourceFilter {\n /** The resource type. */\n resourceType?: string;\n /** The tag name. */\n tagname?: string;\n /** The tag value. */\n tagvalue?: string;\n}\n\n/** Resource group filter. */\nexport interface ResourceGroupFilter {\n /** The tag name. */\n tagName?: string;\n /** The tag value. */\n tagValue?: string;\n}\n\n/** Resource provider operation's display properties. */\nexport interface ResourceProviderOperationDisplayProperties {\n /** Operation description. */\n publisher?: string;\n /** Operation provider. */\n provider?: string;\n /** Operation resource. */\n resource?: string;\n /** Resource provider operation. */\n operation?: string;\n /** Operation description. */\n description?: string;\n}\n\n/** Sub-resource. */\nexport interface SubResource {\n /** Resource ID */\n id?: string;\n}\n\n/** Deployment What-if properties. */\nexport interface DeploymentWhatIfProperties extends DeploymentProperties {\n /** Optional What-If operation settings. */\n whatIfSettings?: DeploymentWhatIfSettings;\n}\n\n/** Resource information. */\nexport interface GenericResource extends Resource {\n /** The plan of the resource. */\n plan?: Plan;\n /** The resource properties. */\n properties?: Record;\n /** The kind of the resource. */\n kind?: string;\n /** ID of the resource that manages this resource. */\n managedBy?: string;\n /** The SKU of the resource. */\n sku?: Sku;\n /** The identity of the resource. */\n identity?: Identity;\n}\n\n/** Resource information. */\nexport interface GenericResourceExpanded extends GenericResource {\n /**\n * The created time of the resource. This is only present if requested via the $expand query parameter.\n * NOTE: This property will not be serialized. It can only be populated by the server.\n */\n readonly createdTime?: Date;\n /**\n * The changed time of the resource. This is only present if requested via the $expand query parameter.\n * NOTE: This property will not be serialized. It can only be populated by the server.\n */\n readonly changedTime?: Date;\n /**\n * The provisioning state of the resource. This is only present if requested via the $expand query parameter.\n * NOTE: This property will not be serialized. It can only be populated by the server.\n */\n readonly provisioningState?: string;\n}\n\n/** Defines headers for Deployments_whatIfAtTenantScope operation. */\nexport interface DeploymentsWhatIfAtTenantScopeHeaders {\n /** URL to get status of this long-running operation. */\n location?: string;\n /** Number of seconds to wait before polling for status. */\n retryAfter?: string;\n}\n\n/** Defines headers for Deployments_whatIfAtManagementGroupScope operation. */\nexport interface DeploymentsWhatIfAtManagementGroupScopeHeaders {\n /** URL to get status of this long-running operation. */\n location?: string;\n /** Number of seconds to wait before polling for status. */\n retryAfter?: string;\n}\n\n/** Defines headers for Deployments_whatIfAtSubscriptionScope operation. */\nexport interface DeploymentsWhatIfAtSubscriptionScopeHeaders {\n /** URL to get status of this long-running operation. */\n location?: string;\n /** Number of seconds to wait before polling for status. */\n retryAfter?: string;\n}\n\n/** Defines headers for Deployments_whatIf operation. */\nexport interface DeploymentsWhatIfHeaders {\n /** URL to get status of this long-running operation. */\n location?: string;\n /** Number of seconds to wait before polling for status. */\n retryAfter?: string;\n}\n\n/** Defines headers for ResourceGroups_delete operation. */\nexport interface ResourceGroupsDeleteHeaders {\n /** URL to get status of this long-running operation. */\n location?: string;\n}\n\n/** Defines headers for Tags_createOrUpdateAtScope operation. */\nexport interface TagsCreateOrUpdateAtScopeHeaders {\n /** URL to get status of this long-running operation. */\n location?: string;\n}\n\n/** Defines headers for Tags_updateAtScope operation. */\nexport interface TagsUpdateAtScopeHeaders {\n /** URL to get status of this long-running operation. */\n location?: string;\n}\n\n/** Defines headers for Tags_deleteAtScope operation. */\nexport interface TagsDeleteAtScopeHeaders {\n /** URL to get status of this long-running operation. */\n location?: string;\n}\n\n/** Known values of {@link ExpressionEvaluationOptionsScopeType} that the service accepts. */\nexport enum KnownExpressionEvaluationOptionsScopeType {\n /** NotSpecified */\n NotSpecified = \"NotSpecified\",\n /** Outer */\n Outer = \"Outer\",\n /** Inner */\n Inner = \"Inner\",\n}\n\n/**\n * Defines values for ExpressionEvaluationOptionsScopeType. \\\n * {@link KnownExpressionEvaluationOptionsScopeType} can be used interchangeably with ExpressionEvaluationOptionsScopeType,\n * this enum contains the known values that the service supports.\n * ### Known values supported by the service\n * **NotSpecified** \\\n * **Outer** \\\n * **Inner**\n */\nexport type ExpressionEvaluationOptionsScopeType = string;\n\n/** Known values of {@link ValidationLevel} that the service accepts. */\nexport enum KnownValidationLevel {\n /** Static analysis of the template is performed. */\n Template = \"Template\",\n /** Static analysis of the template is performed and resource declarations are sent to resource providers for semantic validation. Validates that the caller has RBAC write permissions on each resource. */\n Provider = \"Provider\",\n /** Static analysis of the template is performed and resource declarations are sent to resource providers for semantic validation. Skips validating that the caller has RBAC write permissions on each resource. */\n ProviderNoRbac = \"ProviderNoRbac\",\n}\n\n/**\n * Defines values for ValidationLevel. \\\n * {@link KnownValidationLevel} can be used interchangeably with ValidationLevel,\n * this enum contains the known values that the service supports.\n * ### Known values supported by the service\n * **Template**: Static analysis of the template is performed. \\\n * **Provider**: Static analysis of the template is performed and resource declarations are sent to resource providers for semantic validation. Validates that the caller has RBAC write permissions on each resource. \\\n * **ProviderNoRbac**: Static analysis of the template is performed and resource declarations are sent to resource providers for semantic validation. Skips validating that the caller has RBAC write permissions on each resource.\n */\nexport type ValidationLevel = string;\n\n/** Known values of {@link ProvisioningState} that the service accepts. */\nexport enum KnownProvisioningState {\n /** NotSpecified */\n NotSpecified = \"NotSpecified\",\n /** Accepted */\n Accepted = \"Accepted\",\n /** Running */\n Running = \"Running\",\n /** Ready */\n Ready = \"Ready\",\n /** Creating */\n Creating = \"Creating\",\n /** Created */\n Created = \"Created\",\n /** Deleting */\n Deleting = \"Deleting\",\n /** Deleted */\n Deleted = \"Deleted\",\n /** Canceled */\n Canceled = \"Canceled\",\n /** Failed */\n Failed = \"Failed\",\n /** Succeeded */\n Succeeded = \"Succeeded\",\n /** Updating */\n Updating = \"Updating\",\n}\n\n/**\n * Defines values for ProvisioningState. \\\n * {@link KnownProvisioningState} can be used interchangeably with ProvisioningState,\n * this enum contains the known values that the service supports.\n * ### Known values supported by the service\n * **NotSpecified** \\\n * **Accepted** \\\n * **Running** \\\n * **Ready** \\\n * **Creating** \\\n * **Created** \\\n * **Deleting** \\\n * **Deleted** \\\n * **Canceled** \\\n * **Failed** \\\n * **Succeeded** \\\n * **Updating**\n */\nexport type ProvisioningState = string;\n\n/** Known values of {@link AliasPathTokenType} that the service accepts. */\nexport enum KnownAliasPathTokenType {\n /** The token type is not specified. */\n NotSpecified = \"NotSpecified\",\n /** The token type can be anything. */\n Any = \"Any\",\n /** The token type is string. */\n String = \"String\",\n /** The token type is object. */\n Object = \"Object\",\n /** The token type is array. */\n Array = \"Array\",\n /** The token type is integer. */\n Integer = \"Integer\",\n /** The token type is number. */\n Number = \"Number\",\n /** The token type is boolean. */\n Boolean = \"Boolean\",\n}\n\n/**\n * Defines values for AliasPathTokenType. \\\n * {@link KnownAliasPathTokenType} can be used interchangeably with AliasPathTokenType,\n * this enum contains the known values that the service supports.\n * ### Known values supported by the service\n * **NotSpecified**: The token type is not specified. \\\n * **Any**: The token type can be anything. \\\n * **String**: The token type is string. \\\n * **Object**: The token type is object. \\\n * **Array**: The token type is array. \\\n * **Integer**: The token type is integer. \\\n * **Number**: The token type is number. \\\n * **Boolean**: The token type is boolean.\n */\nexport type AliasPathTokenType = string;\n\n/** Known values of {@link AliasPathAttributes} that the service accepts. */\nexport enum KnownAliasPathAttributes {\n /** The token that the alias path is referring to has no attributes. */\n None = \"None\",\n /** The token that the alias path is referring to is modifiable by policies with 'modify' effect. */\n Modifiable = \"Modifiable\",\n}\n\n/**\n * Defines values for AliasPathAttributes. \\\n * {@link KnownAliasPathAttributes} can be used interchangeably with AliasPathAttributes,\n * this enum contains the known values that the service supports.\n * ### Known values supported by the service\n * **None**: The token that the alias path is referring to has no attributes. \\\n * **Modifiable**: The token that the alias path is referring to is modifiable by policies with 'modify' effect.\n */\nexport type AliasPathAttributes = string;\n\n/** Known values of {@link ProviderAuthorizationConsentState} that the service accepts. */\nexport enum KnownProviderAuthorizationConsentState {\n /** NotSpecified */\n NotSpecified = \"NotSpecified\",\n /** Required */\n Required = \"Required\",\n /** NotRequired */\n NotRequired = \"NotRequired\",\n /** Consented */\n Consented = \"Consented\",\n}\n\n/**\n * Defines values for ProviderAuthorizationConsentState. \\\n * {@link KnownProviderAuthorizationConsentState} can be used interchangeably with ProviderAuthorizationConsentState,\n * this enum contains the known values that the service supports.\n * ### Known values supported by the service\n * **NotSpecified** \\\n * **Required** \\\n * **NotRequired** \\\n * **Consented**\n */\nexport type ProviderAuthorizationConsentState = string;\n\n/** Known values of {@link Level} that the service accepts. */\nexport enum KnownLevel {\n /** Warning */\n Warning = \"Warning\",\n /** Info */\n Info = \"Info\",\n /** Error */\n Error = \"Error\",\n}\n\n/**\n * Defines values for Level. \\\n * {@link KnownLevel} can be used interchangeably with Level,\n * this enum contains the known values that the service supports.\n * ### Known values supported by the service\n * **Warning** \\\n * **Info** \\\n * **Error**\n */\nexport type Level = string;\n\n/** Known values of {@link ExtendedLocationType} that the service accepts. */\nexport enum KnownExtendedLocationType {\n /** EdgeZone */\n EdgeZone = \"EdgeZone\",\n}\n\n/**\n * Defines values for ExtendedLocationType. \\\n * {@link KnownExtendedLocationType} can be used interchangeably with ExtendedLocationType,\n * this enum contains the known values that the service supports.\n * ### Known values supported by the service\n * **EdgeZone**\n */\nexport type ExtendedLocationType = string;\n\n/** Known values of {@link ExportTemplateOutputFormat} that the service accepts. */\nexport enum KnownExportTemplateOutputFormat {\n /** Json */\n Json = \"Json\",\n /** Bicep */\n Bicep = \"Bicep\",\n}\n\n/**\n * Defines values for ExportTemplateOutputFormat. \\\n * {@link KnownExportTemplateOutputFormat} can be used interchangeably with ExportTemplateOutputFormat,\n * this enum contains the known values that the service supports.\n * ### Known values supported by the service\n * **Json** \\\n * **Bicep**\n */\nexport type ExportTemplateOutputFormat = string;\n\n/** Known values of {@link TagsPatchOperation} that the service accepts. */\nexport enum KnownTagsPatchOperation {\n /** The 'replace' option replaces the entire set of existing tags with a new set. */\n Replace = \"Replace\",\n /** The 'merge' option allows adding tags with new names and updating the values of tags with existing names. */\n Merge = \"Merge\",\n /** The 'delete' option allows selectively deleting tags based on given names or name\\/value pairs. */\n Delete = \"Delete\",\n}\n\n/**\n * Defines values for TagsPatchOperation. \\\n * {@link KnownTagsPatchOperation} can be used interchangeably with TagsPatchOperation,\n * this enum contains the known values that the service supports.\n * ### Known values supported by the service\n * **Replace**: The 'replace' option replaces the entire set of existing tags with a new set. \\\n * **Merge**: The 'merge' option allows adding tags with new names and updating the values of tags with existing names. \\\n * **Delete**: The 'delete' option allows selectively deleting tags based on given names or name\\/value pairs.\n */\nexport type TagsPatchOperation = string;\n/** Defines values for DeploymentMode. */\nexport type DeploymentMode = \"Incremental\" | \"Complete\";\n/** Defines values for OnErrorDeploymentType. */\nexport type OnErrorDeploymentType = \"LastSuccessful\" | \"SpecificDeployment\";\n/** Defines values for AliasPatternType. */\nexport type AliasPatternType = \"NotSpecified\" | \"Extract\";\n/** Defines values for AliasType. */\nexport type AliasType = \"NotSpecified\" | \"PlainText\" | \"Mask\";\n/** Defines values for WhatIfResultFormat. */\nexport type WhatIfResultFormat = \"ResourceIdOnly\" | \"FullResourcePayloads\";\n/** Defines values for ChangeType. */\nexport type ChangeType =\n | \"Create\"\n | \"Delete\"\n | \"Ignore\"\n | \"Deploy\"\n | \"NoChange\"\n | \"Modify\"\n | \"Unsupported\";\n/** Defines values for PropertyChangeType. */\nexport type PropertyChangeType =\n | \"Create\"\n | \"Delete\"\n | \"Modify\"\n | \"Array\"\n | \"NoEffect\";\n/** Defines values for ResourceIdentityType. */\nexport type ResourceIdentityType =\n | \"SystemAssigned\"\n | \"UserAssigned\"\n | \"SystemAssigned, UserAssigned\"\n | \"None\";\n/** Defines values for ProvisioningOperation. */\nexport type ProvisioningOperation =\n | \"NotSpecified\"\n | \"Create\"\n | \"Delete\"\n | \"Waiting\"\n | \"AzureAsyncOperationWaiting\"\n | \"ResourceCacheWaiting\"\n | \"Action\"\n | \"Read\"\n | \"EvaluateDeploymentOutput\"\n | \"DeploymentCleanup\";\n\n/** Optional parameters. */\nexport interface OperationsListOptionalParams\n extends coreClient.OperationOptions {}\n\n/** Contains response data for the list operation. */\nexport type OperationsListResponse = OperationListResult;\n\n/** Optional parameters. */\nexport interface OperationsListNextOptionalParams\n extends coreClient.OperationOptions {}\n\n/** Contains response data for the listNext operation. */\nexport type OperationsListNextResponse = OperationListResult;\n\n/** Optional parameters. */\nexport interface DeploymentsDeleteAtScopeOptionalParams\n extends coreClient.OperationOptions {\n /** Delay to wait until next poll, in milliseconds. */\n updateIntervalInMs?: number;\n /** A serialized poller which can be used to resume an existing paused Long-Running-Operation. */\n resumeFrom?: string;\n}\n\n/** Optional parameters. */\nexport interface DeploymentsCheckExistenceAtScopeOptionalParams\n extends coreClient.OperationOptions {}\n\n/** Contains response data for the checkExistenceAtScope operation. */\nexport type DeploymentsCheckExistenceAtScopeResponse = {\n body: boolean;\n};\n\n/** Optional parameters. */\nexport interface DeploymentsCreateOrUpdateAtScopeOptionalParams\n extends coreClient.OperationOptions {\n /** Delay to wait until next poll, in milliseconds. */\n updateIntervalInMs?: number;\n /** A serialized poller which can be used to resume an existing paused Long-Running-Operation. */\n resumeFrom?: string;\n}\n\n/** Contains response data for the createOrUpdateAtScope operation. */\nexport type DeploymentsCreateOrUpdateAtScopeResponse = DeploymentExtended;\n\n/** Optional parameters. */\nexport interface DeploymentsGetAtScopeOptionalParams\n extends coreClient.OperationOptions {}\n\n/** Contains response data for the getAtScope operation. */\nexport type DeploymentsGetAtScopeResponse = DeploymentExtended;\n\n/** Optional parameters. */\nexport interface DeploymentsCancelAtScopeOptionalParams\n extends coreClient.OperationOptions {}\n\n/** Optional parameters. */\nexport interface DeploymentsValidateAtScopeOptionalParams\n extends coreClient.OperationOptions {\n /** Delay to wait until next poll, in milliseconds. */\n updateIntervalInMs?: number;\n /** A serialized poller which can be used to resume an existing paused Long-Running-Operation. */\n resumeFrom?: string;\n}\n\n/** Contains response data for the validateAtScope operation. */\nexport type DeploymentsValidateAtScopeResponse = DeploymentValidateResult;\n\n/** Optional parameters. */\nexport interface DeploymentsExportTemplateAtScopeOptionalParams\n extends coreClient.OperationOptions {}\n\n/** Contains response data for the exportTemplateAtScope operation. */\nexport type DeploymentsExportTemplateAtScopeResponse = DeploymentExportResult;\n\n/** Optional parameters. */\nexport interface DeploymentsListAtScopeOptionalParams\n extends coreClient.OperationOptions {\n /** The filter to apply on the operation. For example, you can use $filter=provisioningState eq '{state}'. */\n filter?: string;\n /** The number of results to get. If null is passed, returns all deployments. */\n top?: number;\n}\n\n/** Contains response data for the listAtScope operation. */\nexport type DeploymentsListAtScopeResponse = DeploymentListResult;\n\n/** Optional parameters. */\nexport interface DeploymentsDeleteAtTenantScopeOptionalParams\n extends coreClient.OperationOptions {\n /** Delay to wait until next poll, in milliseconds. */\n updateIntervalInMs?: number;\n /** A serialized poller which can be used to resume an existing paused Long-Running-Operation. */\n resumeFrom?: string;\n}\n\n/** Optional parameters. */\nexport interface DeploymentsCheckExistenceAtTenantScopeOptionalParams\n extends coreClient.OperationOptions {}\n\n/** Contains response data for the checkExistenceAtTenantScope operation. */\nexport type DeploymentsCheckExistenceAtTenantScopeResponse = {\n body: boolean;\n};\n\n/** Optional parameters. */\nexport interface DeploymentsCreateOrUpdateAtTenantScopeOptionalParams\n extends coreClient.OperationOptions {\n /** Delay to wait until next poll, in milliseconds. */\n updateIntervalInMs?: number;\n /** A serialized poller which can be used to resume an existing paused Long-Running-Operation. */\n resumeFrom?: string;\n}\n\n/** Contains response data for the createOrUpdateAtTenantScope operation. */\nexport type DeploymentsCreateOrUpdateAtTenantScopeResponse = DeploymentExtended;\n\n/** Optional parameters. */\nexport interface DeploymentsGetAtTenantScopeOptionalParams\n extends coreClient.OperationOptions {}\n\n/** Contains response data for the getAtTenantScope operation. */\nexport type DeploymentsGetAtTenantScopeResponse = DeploymentExtended;\n\n/** Optional parameters. */\nexport interface DeploymentsCancelAtTenantScopeOptionalParams\n extends coreClient.OperationOptions {}\n\n/** Optional parameters. */\nexport interface DeploymentsValidateAtTenantScopeOptionalParams\n extends coreClient.OperationOptions {\n /** Delay to wait until next poll, in milliseconds. */\n updateIntervalInMs?: number;\n /** A serialized poller which can be used to resume an existing paused Long-Running-Operation. */\n resumeFrom?: string;\n}\n\n/** Contains response data for the validateAtTenantScope operation. */\nexport type DeploymentsValidateAtTenantScopeResponse = DeploymentValidateResult;\n\n/** Optional parameters. */\nexport interface DeploymentsWhatIfAtTenantScopeOptionalParams\n extends coreClient.OperationOptions {\n /** Delay to wait until next poll, in milliseconds. */\n updateIntervalInMs?: number;\n /** A serialized poller which can be used to resume an existing paused Long-Running-Operation. */\n resumeFrom?: string;\n}\n\n/** Contains response data for the whatIfAtTenantScope operation. */\nexport type DeploymentsWhatIfAtTenantScopeResponse = WhatIfOperationResult;\n\n/** Optional parameters. */\nexport interface DeploymentsExportTemplateAtTenantScopeOptionalParams\n extends coreClient.OperationOptions {}\n\n/** Contains response data for the exportTemplateAtTenantScope operation. */\nexport type DeploymentsExportTemplateAtTenantScopeResponse =\n DeploymentExportResult;\n\n/** Optional parameters. */\nexport interface DeploymentsListAtTenantScopeOptionalParams\n extends coreClient.OperationOptions {\n /** The filter to apply on the operation. For example, you can use $filter=provisioningState eq '{state}'. */\n filter?: string;\n /** The number of results to get. If null is passed, returns all deployments. */\n top?: number;\n}\n\n/** Contains response data for the listAtTenantScope operation. */\nexport type DeploymentsListAtTenantScopeResponse = DeploymentListResult;\n\n/** Optional parameters. */\nexport interface DeploymentsDeleteAtManagementGroupScopeOptionalParams\n extends coreClient.OperationOptions {\n /** Delay to wait until next poll, in milliseconds. */\n updateIntervalInMs?: number;\n /** A serialized poller which can be used to resume an existing paused Long-Running-Operation. */\n resumeFrom?: string;\n}\n\n/** Optional parameters. */\nexport interface DeploymentsCheckExistenceAtManagementGroupScopeOptionalParams\n extends coreClient.OperationOptions {}\n\n/** Contains response data for the checkExistenceAtManagementGroupScope operation. */\nexport type DeploymentsCheckExistenceAtManagementGroupScopeResponse = {\n body: boolean;\n};\n\n/** Optional parameters. */\nexport interface DeploymentsCreateOrUpdateAtManagementGroupScopeOptionalParams\n extends coreClient.OperationOptions {\n /** Delay to wait until next poll, in milliseconds. */\n updateIntervalInMs?: number;\n /** A serialized poller which can be used to resume an existing paused Long-Running-Operation. */\n resumeFrom?: string;\n}\n\n/** Contains response data for the createOrUpdateAtManagementGroupScope operation. */\nexport type DeploymentsCreateOrUpdateAtManagementGroupScopeResponse =\n DeploymentExtended;\n\n/** Optional parameters. */\nexport interface DeploymentsGetAtManagementGroupScopeOptionalParams\n extends coreClient.OperationOptions {}\n\n/** Contains response data for the getAtManagementGroupScope operation. */\nexport type DeploymentsGetAtManagementGroupScopeResponse = DeploymentExtended;\n\n/** Optional parameters. */\nexport interface DeploymentsCancelAtManagementGroupScopeOptionalParams\n extends coreClient.OperationOptions {}\n\n/** Optional parameters. */\nexport interface DeploymentsValidateAtManagementGroupScopeOptionalParams\n extends coreClient.OperationOptions {\n /** Delay to wait until next poll, in milliseconds. */\n updateIntervalInMs?: number;\n /** A serialized poller which can be used to resume an existing paused Long-Running-Operation. */\n resumeFrom?: string;\n}\n\n/** Contains response data for the validateAtManagementGroupScope operation. */\nexport type DeploymentsValidateAtManagementGroupScopeResponse =\n DeploymentValidateResult;\n\n/** Optional parameters. */\nexport interface DeploymentsWhatIfAtManagementGroupScopeOptionalParams\n extends coreClient.OperationOptions {\n /** Delay to wait until next poll, in milliseconds. */\n updateIntervalInMs?: number;\n /** A serialized poller which can be used to resume an existing paused Long-Running-Operation. */\n resumeFrom?: string;\n}\n\n/** Contains response data for the whatIfAtManagementGroupScope operation. */\nexport type DeploymentsWhatIfAtManagementGroupScopeResponse =\n WhatIfOperationResult;\n\n/** Optional parameters. */\nexport interface DeploymentsExportTemplateAtManagementGroupScopeOptionalParams\n extends coreClient.OperationOptions {}\n\n/** Contains response data for the exportTemplateAtManagementGroupScope operation. */\nexport type DeploymentsExportTemplateAtManagementGroupScopeResponse =\n DeploymentExportResult;\n\n/** Optional parameters. */\nexport interface DeploymentsListAtManagementGroupScopeOptionalParams\n extends coreClient.OperationOptions {\n /** The filter to apply on the operation. For example, you can use $filter=provisioningState eq '{state}'. */\n filter?: string;\n /** The number of results to get. If null is passed, returns all deployments. */\n top?: number;\n}\n\n/** Contains response data for the listAtManagementGroupScope operation. */\nexport type DeploymentsListAtManagementGroupScopeResponse =\n DeploymentListResult;\n\n/** Optional parameters. */\nexport interface DeploymentsDeleteAtSubscriptionScopeOptionalParams\n extends coreClient.OperationOptions {\n /** Delay to wait until next poll, in milliseconds. */\n updateIntervalInMs?: number;\n /** A serialized poller which can be used to resume an existing paused Long-Running-Operation. */\n resumeFrom?: string;\n}\n\n/** Optional parameters. */\nexport interface DeploymentsCheckExistenceAtSubscriptionScopeOptionalParams\n extends coreClient.OperationOptions {}\n\n/** Contains response data for the checkExistenceAtSubscriptionScope operation. */\nexport type DeploymentsCheckExistenceAtSubscriptionScopeResponse = {\n body: boolean;\n};\n\n/** Optional parameters. */\nexport interface DeploymentsCreateOrUpdateAtSubscriptionScopeOptionalParams\n extends coreClient.OperationOptions {\n /** Delay to wait until next poll, in milliseconds. */\n updateIntervalInMs?: number;\n /** A serialized poller which can be used to resume an existing paused Long-Running-Operation. */\n resumeFrom?: string;\n}\n\n/** Contains response data for the createOrUpdateAtSubscriptionScope operation. */\nexport type DeploymentsCreateOrUpdateAtSubscriptionScopeResponse =\n DeploymentExtended;\n\n/** Optional parameters. */\nexport interface DeploymentsGetAtSubscriptionScopeOptionalParams\n extends coreClient.OperationOptions {}\n\n/** Contains response data for the getAtSubscriptionScope operation. */\nexport type DeploymentsGetAtSubscriptionScopeResponse = DeploymentExtended;\n\n/** Optional parameters. */\nexport interface DeploymentsCancelAtSubscriptionScopeOptionalParams\n extends coreClient.OperationOptions {}\n\n/** Optional parameters. */\nexport interface DeploymentsValidateAtSubscriptionScopeOptionalParams\n extends coreClient.OperationOptions {\n /** Delay to wait until next poll, in milliseconds. */\n updateIntervalInMs?: number;\n /** A serialized poller which can be used to resume an existing paused Long-Running-Operation. */\n resumeFrom?: string;\n}\n\n/** Contains response data for the validateAtSubscriptionScope operation. */\nexport type DeploymentsValidateAtSubscriptionScopeResponse =\n DeploymentValidateResult;\n\n/** Optional parameters. */\nexport interface DeploymentsWhatIfAtSubscriptionScopeOptionalParams\n extends coreClient.OperationOptions {\n /** Delay to wait until next poll, in milliseconds. */\n updateIntervalInMs?: number;\n /** A serialized poller which can be used to resume an existing paused Long-Running-Operation. */\n resumeFrom?: string;\n}\n\n/** Contains response data for the whatIfAtSubscriptionScope operation. */\nexport type DeploymentsWhatIfAtSubscriptionScopeResponse =\n WhatIfOperationResult;\n\n/** Optional parameters. */\nexport interface DeploymentsExportTemplateAtSubscriptionScopeOptionalParams\n extends coreClient.OperationOptions {}\n\n/** Contains response data for the exportTemplateAtSubscriptionScope operation. */\nexport type DeploymentsExportTemplateAtSubscriptionScopeResponse =\n DeploymentExportResult;\n\n/** Optional parameters. */\nexport interface DeploymentsListAtSubscriptionScopeOptionalParams\n extends coreClient.OperationOptions {\n /** The filter to apply on the operation. For example, you can use $filter=provisioningState eq '{state}'. */\n filter?: string;\n /** The number of results to get. If null is passed, returns all deployments. */\n top?: number;\n}\n\n/** Contains response data for the listAtSubscriptionScope operation. */\nexport type DeploymentsListAtSubscriptionScopeResponse = DeploymentListResult;\n\n/** Optional parameters. */\nexport interface DeploymentsDeleteOptionalParams\n extends coreClient.OperationOptions {\n /** Delay to wait until next poll, in milliseconds. */\n updateIntervalInMs?: number;\n /** A serialized poller which can be used to resume an existing paused Long-Running-Operation. */\n resumeFrom?: string;\n}\n\n/** Optional parameters. */\nexport interface DeploymentsCheckExistenceOptionalParams\n extends coreClient.OperationOptions {}\n\n/** Contains response data for the checkExistence operation. */\nexport type DeploymentsCheckExistenceResponse = {\n body: boolean;\n};\n\n/** Optional parameters. */\nexport interface DeploymentsCreateOrUpdateOptionalParams\n extends coreClient.OperationOptions {\n /** Delay to wait until next poll, in milliseconds. */\n updateIntervalInMs?: number;\n /** A serialized poller which can be used to resume an existing paused Long-Running-Operation. */\n resumeFrom?: string;\n}\n\n/** Contains response data for the createOrUpdate operation. */\nexport type DeploymentsCreateOrUpdateResponse = DeploymentExtended;\n\n/** Optional parameters. */\nexport interface DeploymentsGetOptionalParams\n extends coreClient.OperationOptions {}\n\n/** Contains response data for the get operation. */\nexport type DeploymentsGetResponse = DeploymentExtended;\n\n/** Optional parameters. */\nexport interface DeploymentsCancelOptionalParams\n extends coreClient.OperationOptions {}\n\n/** Optional parameters. */\nexport interface DeploymentsValidateOptionalParams\n extends coreClient.OperationOptions {\n /** Delay to wait until next poll, in milliseconds. */\n updateIntervalInMs?: number;\n /** A serialized poller which can be used to resume an existing paused Long-Running-Operation. */\n resumeFrom?: string;\n}\n\n/** Contains response data for the validate operation. */\nexport type DeploymentsValidateResponse = DeploymentValidateResult;\n\n/** Optional parameters. */\nexport interface DeploymentsWhatIfOptionalParams\n extends coreClient.OperationOptions {\n /** Delay to wait until next poll, in milliseconds. */\n updateIntervalInMs?: number;\n /** A serialized poller which can be used to resume an existing paused Long-Running-Operation. */\n resumeFrom?: string;\n}\n\n/** Contains response data for the whatIf operation. */\nexport type DeploymentsWhatIfResponse = WhatIfOperationResult;\n\n/** Optional parameters. */\nexport interface DeploymentsExportTemplateOptionalParams\n extends coreClient.OperationOptions {}\n\n/** Contains response data for the exportTemplate operation. */\nexport type DeploymentsExportTemplateResponse = DeploymentExportResult;\n\n/** Optional parameters. */\nexport interface DeploymentsListByResourceGroupOptionalParams\n extends coreClient.OperationOptions {\n /** The filter to apply on the operation. For example, you can use $filter=provisioningState eq '{state}'. */\n filter?: string;\n /** The number of results to get. If null is passed, returns all deployments. */\n top?: number;\n}\n\n/** Contains response data for the listByResourceGroup operation. */\nexport type DeploymentsListByResourceGroupResponse = DeploymentListResult;\n\n/** Optional parameters. */\nexport interface DeploymentsCalculateTemplateHashOptionalParams\n extends coreClient.OperationOptions {}\n\n/** Contains response data for the calculateTemplateHash operation. */\nexport type DeploymentsCalculateTemplateHashResponse = TemplateHashResult;\n\n/** Optional parameters. */\nexport interface DeploymentsListAtScopeNextOptionalParams\n extends coreClient.OperationOptions {}\n\n/** Contains response data for the listAtScopeNext operation. */\nexport type DeploymentsListAtScopeNextResponse = DeploymentListResult;\n\n/** Optional parameters. */\nexport interface DeploymentsListAtTenantScopeNextOptionalParams\n extends coreClient.OperationOptions {}\n\n/** Contains response data for the listAtTenantScopeNext operation. */\nexport type DeploymentsListAtTenantScopeNextResponse = DeploymentListResult;\n\n/** Optional parameters. */\nexport interface DeploymentsListAtManagementGroupScopeNextOptionalParams\n extends coreClient.OperationOptions {}\n\n/** Contains response data for the listAtManagementGroupScopeNext operation. */\nexport type DeploymentsListAtManagementGroupScopeNextResponse =\n DeploymentListResult;\n\n/** Optional parameters. */\nexport interface DeploymentsListAtSubscriptionScopeNextOptionalParams\n extends coreClient.OperationOptions {}\n\n/** Contains response data for the listAtSubscriptionScopeNext operation. */\nexport type DeploymentsListAtSubscriptionScopeNextResponse =\n DeploymentListResult;\n\n/** Optional parameters. */\nexport interface DeploymentsListByResourceGroupNextOptionalParams\n extends coreClient.OperationOptions {}\n\n/** Contains response data for the listByResourceGroupNext operation. */\nexport type DeploymentsListByResourceGroupNextResponse = DeploymentListResult;\n\n/** Optional parameters. */\nexport interface ProvidersUnregisterOptionalParams\n extends coreClient.OperationOptions {}\n\n/** Contains response data for the unregister operation. */\nexport type ProvidersUnregisterResponse = Provider;\n\n/** Optional parameters. */\nexport interface ProvidersRegisterAtManagementGroupScopeOptionalParams\n extends coreClient.OperationOptions {}\n\n/** Optional parameters. */\nexport interface ProvidersProviderPermissionsOptionalParams\n extends coreClient.OperationOptions {}\n\n/** Contains response data for the providerPermissions operation. */\nexport type ProvidersProviderPermissionsResponse = ProviderPermissionListResult;\n\n/** Optional parameters. */\nexport interface ProvidersRegisterOptionalParams\n extends coreClient.OperationOptions {\n /** The third party consent for S2S. */\n properties?: ProviderRegistrationRequest;\n}\n\n/** Contains response data for the register operation. */\nexport type ProvidersRegisterResponse = Provider;\n\n/** Optional parameters. */\nexport interface ProvidersListOptionalParams\n extends coreClient.OperationOptions {\n /** The properties to include in the results. For example, use &$expand=metadata in the query string to retrieve resource provider metadata. To include property aliases in response, use $expand=resourceTypes/aliases. */\n expand?: string;\n}\n\n/** Contains response data for the list operation. */\nexport type ProvidersListResponse = ProviderListResult;\n\n/** Optional parameters. */\nexport interface ProvidersListAtTenantScopeOptionalParams\n extends coreClient.OperationOptions {\n /** The properties to include in the results. For example, use &$expand=metadata in the query string to retrieve resource provider metadata. To include property aliases in response, use $expand=resourceTypes/aliases. */\n expand?: string;\n}\n\n/** Contains response data for the listAtTenantScope operation. */\nexport type ProvidersListAtTenantScopeResponse = ProviderListResult;\n\n/** Optional parameters. */\nexport interface ProvidersGetOptionalParams\n extends coreClient.OperationOptions {\n /** The $expand query parameter. For example, to include property aliases in response, use $expand=resourceTypes/aliases. */\n expand?: string;\n}\n\n/** Contains response data for the get operation. */\nexport type ProvidersGetResponse = Provider;\n\n/** Optional parameters. */\nexport interface ProvidersGetAtTenantScopeOptionalParams\n extends coreClient.OperationOptions {\n /** The $expand query parameter. For example, to include property aliases in response, use $expand=resourceTypes/aliases. */\n expand?: string;\n}\n\n/** Contains response data for the getAtTenantScope operation. */\nexport type ProvidersGetAtTenantScopeResponse = Provider;\n\n/** Optional parameters. */\nexport interface ProvidersListNextOptionalParams\n extends coreClient.OperationOptions {}\n\n/** Contains response data for the listNext operation. */\nexport type ProvidersListNextResponse = ProviderListResult;\n\n/** Optional parameters. */\nexport interface ProvidersListAtTenantScopeNextOptionalParams\n extends coreClient.OperationOptions {}\n\n/** Contains response data for the listAtTenantScopeNext operation. */\nexport type ProvidersListAtTenantScopeNextResponse = ProviderListResult;\n\n/** Optional parameters. */\nexport interface ProviderResourceTypesListOptionalParams\n extends coreClient.OperationOptions {\n /** The $expand query parameter. For example, to include property aliases in response, use $expand=resourceTypes/aliases. */\n expand?: string;\n}\n\n/** Contains response data for the list operation. */\nexport type ProviderResourceTypesListResponse = ProviderResourceTypeListResult;\n\n/** Optional parameters. */\nexport interface ResourcesListByResourceGroupOptionalParams\n extends coreClient.OperationOptions {\n /** The filter to apply on the operation.

The properties you can use for eq (equals) or ne (not equals) are: location, resourceType, name, resourceGroup, identity, identity/principalId, plan, plan/publisher, plan/product, plan/name, plan/version, and plan/promotionCode.

For example, to filter by a resource type, use: $filter=resourceType eq 'Microsoft.Network/virtualNetworks'

You can use substringof(value, property) in the filter. The properties you can use for substring are: name and resourceGroup.

For example, to get all resources with 'demo' anywhere in the name, use: $filter=substringof('demo', name)

You can link more than one substringof together by adding and/or operators.

You can filter by tag names and values. For example, to filter for a tag name and value, use $filter=tagName eq 'tag1' and tagValue eq 'Value1'. When you filter by a tag name and value, the tags for each resource are not returned in the results.

You can use some properties together when filtering. The combinations you can use are: substringof and/or resourceType, plan and plan/publisher and plan/name, identity and identity/principalId. */\n filter?: string;\n /** The number of results to return. If null is passed, returns all resources. */\n top?: number;\n /** Comma-separated list of additional properties to be included in the response. Valid values include `createdTime`, `changedTime` and `provisioningState`. For example, `$expand=createdTime,changedTime`. */\n expand?: string;\n}\n\n/** Contains response data for the listByResourceGroup operation. */\nexport type ResourcesListByResourceGroupResponse = ResourceListResult;\n\n/** Optional parameters. */\nexport interface ResourcesMoveResourcesOptionalParams\n extends coreClient.OperationOptions {\n /** Delay to wait until next poll, in milliseconds. */\n updateIntervalInMs?: number;\n /** A serialized poller which can be used to resume an existing paused Long-Running-Operation. */\n resumeFrom?: string;\n}\n\n/** Optional parameters. */\nexport interface ResourcesValidateMoveResourcesOptionalParams\n extends coreClient.OperationOptions {\n /** Delay to wait until next poll, in milliseconds. */\n updateIntervalInMs?: number;\n /** A serialized poller which can be used to resume an existing paused Long-Running-Operation. */\n resumeFrom?: string;\n}\n\n/** Optional parameters. */\nexport interface ResourcesListOptionalParams\n extends coreClient.OperationOptions {\n /** The filter to apply on the operation.

Filter comparison operators include `eq` (equals) and `ne` (not equals) and may be used with the following properties: `location`, `resourceType`, `name`, `resourceGroup`, `identity`, `identity/principalId`, `plan`, `plan/publisher`, `plan/product`, `plan/name`, `plan/version`, and `plan/promotionCode`.

For example, to filter by a resource type, use `$filter=resourceType eq 'Microsoft.Network/virtualNetworks'`


`substringof(value, property)` can be used to filter for substrings of the following currently-supported properties: `name` and `resourceGroup`

For example, to get all resources with 'demo' anywhere in the resource name, use `$filter=substringof('demo', name)`

Multiple substring operations can also be combined using `and`/`or` operators.

Note that any truncated number of results queried via `$top` may also not be compatible when using a filter.


Resources can be filtered by tag names and values. For example, to filter for a tag name and value, use `$filter=tagName eq 'tag1' and tagValue eq 'Value1'`. Note that when resources are filtered by tag name and value, the original tags for each resource will not be returned in the results. Any list of additional properties queried via `$expand` may also not be compatible when filtering by tag names/values.

For tag names only, resources can be filtered by prefix using the following syntax: `$filter=startswith(tagName, 'depart')`. This query will return all resources with a tag name prefixed by the phrase `depart` (i.e.`department`, `departureDate`, `departureTime`, etc.)


Note that some properties can be combined when filtering resources, which include the following: `substringof() and/or resourceType`, `plan and plan/publisher and plan/name`, and `identity and identity/principalId`. */\n filter?: string;\n /** The number of recommendations per page if a paged version of this API is being used. */\n top?: number;\n /** Comma-separated list of additional properties to be included in the response. Valid values include `createdTime`, `changedTime` and `provisioningState`. For example, `$expand=createdTime,changedTime`. */\n expand?: string;\n}\n\n/** Contains response data for the list operation. */\nexport type ResourcesListResponse = ResourceListResult;\n\n/** Optional parameters. */\nexport interface ResourcesCheckExistenceOptionalParams\n extends coreClient.OperationOptions {}\n\n/** Contains response data for the checkExistence operation. */\nexport type ResourcesCheckExistenceResponse = {\n body: boolean;\n};\n\n/** Optional parameters. */\nexport interface ResourcesDeleteOptionalParams\n extends coreClient.OperationOptions {\n /** Delay to wait until next poll, in milliseconds. */\n updateIntervalInMs?: number;\n /** A serialized poller which can be used to resume an existing paused Long-Running-Operation. */\n resumeFrom?: string;\n}\n\n/** Optional parameters. */\nexport interface ResourcesCreateOrUpdateOptionalParams\n extends coreClient.OperationOptions {\n /** Delay to wait until next poll, in milliseconds. */\n updateIntervalInMs?: number;\n /** A serialized poller which can be used to resume an existing paused Long-Running-Operation. */\n resumeFrom?: string;\n}\n\n/** Contains response data for the createOrUpdate operation. */\nexport type ResourcesCreateOrUpdateResponse = GenericResource;\n\n/** Optional parameters. */\nexport interface ResourcesUpdateOptionalParams\n extends coreClient.OperationOptions {\n /** Delay to wait until next poll, in milliseconds. */\n updateIntervalInMs?: number;\n /** A serialized poller which can be used to resume an existing paused Long-Running-Operation. */\n resumeFrom?: string;\n}\n\n/** Contains response data for the update operation. */\nexport type ResourcesUpdateResponse = GenericResource;\n\n/** Optional parameters. */\nexport interface ResourcesGetOptionalParams\n extends coreClient.OperationOptions {}\n\n/** Contains response data for the get operation. */\nexport type ResourcesGetResponse = GenericResource;\n\n/** Optional parameters. */\nexport interface ResourcesCheckExistenceByIdOptionalParams\n extends coreClient.OperationOptions {}\n\n/** Contains response data for the checkExistenceById operation. */\nexport type ResourcesCheckExistenceByIdResponse = {\n body: boolean;\n};\n\n/** Optional parameters. */\nexport interface ResourcesDeleteByIdOptionalParams\n extends coreClient.OperationOptions {\n /** Delay to wait until next poll, in milliseconds. */\n updateIntervalInMs?: number;\n /** A serialized poller which can be used to resume an existing paused Long-Running-Operation. */\n resumeFrom?: string;\n}\n\n/** Optional parameters. */\nexport interface ResourcesCreateOrUpdateByIdOptionalParams\n extends coreClient.OperationOptions {\n /** Delay to wait until next poll, in milliseconds. */\n updateIntervalInMs?: number;\n /** A serialized poller which can be used to resume an existing paused Long-Running-Operation. */\n resumeFrom?: string;\n}\n\n/** Contains response data for the createOrUpdateById operation. */\nexport type ResourcesCreateOrUpdateByIdResponse = GenericResource;\n\n/** Optional parameters. */\nexport interface ResourcesUpdateByIdOptionalParams\n extends coreClient.OperationOptions {\n /** Delay to wait until next poll, in milliseconds. */\n updateIntervalInMs?: number;\n /** A serialized poller which can be used to resume an existing paused Long-Running-Operation. */\n resumeFrom?: string;\n}\n\n/** Contains response data for the updateById operation. */\nexport type ResourcesUpdateByIdResponse = GenericResource;\n\n/** Optional parameters. */\nexport interface ResourcesGetByIdOptionalParams\n extends coreClient.OperationOptions {}\n\n/** Contains response data for the getById operation. */\nexport type ResourcesGetByIdResponse = GenericResource;\n\n/** Optional parameters. */\nexport interface ResourcesListByResourceGroupNextOptionalParams\n extends coreClient.OperationOptions {}\n\n/** Contains response data for the listByResourceGroupNext operation. */\nexport type ResourcesListByResourceGroupNextResponse = ResourceListResult;\n\n/** Optional parameters. */\nexport interface ResourcesListNextOptionalParams\n extends coreClient.OperationOptions {}\n\n/** Contains response data for the listNext operation. */\nexport type ResourcesListNextResponse = ResourceListResult;\n\n/** Optional parameters. */\nexport interface ResourceGroupsCheckExistenceOptionalParams\n extends coreClient.OperationOptions {}\n\n/** Contains response data for the checkExistence operation. */\nexport type ResourceGroupsCheckExistenceResponse = {\n body: boolean;\n};\n\n/** Optional parameters. */\nexport interface ResourceGroupsCreateOrUpdateOptionalParams\n extends coreClient.OperationOptions {}\n\n/** Contains response data for the createOrUpdate operation. */\nexport type ResourceGroupsCreateOrUpdateResponse = ResourceGroup;\n\n/** Optional parameters. */\nexport interface ResourceGroupsDeleteOptionalParams\n extends coreClient.OperationOptions {\n /** The resource types you want to force delete. Currently, only the following is supported: forceDeletionTypes=Microsoft.Compute/virtualMachines,Microsoft.Compute/virtualMachineScaleSets */\n forceDeletionTypes?: string;\n /** Delay to wait until next poll, in milliseconds. */\n updateIntervalInMs?: number;\n /** A serialized poller which can be used to resume an existing paused Long-Running-Operation. */\n resumeFrom?: string;\n}\n\n/** Optional parameters. */\nexport interface ResourceGroupsGetOptionalParams\n extends coreClient.OperationOptions {}\n\n/** Contains response data for the get operation. */\nexport type ResourceGroupsGetResponse = ResourceGroup;\n\n/** Optional parameters. */\nexport interface ResourceGroupsUpdateOptionalParams\n extends coreClient.OperationOptions {}\n\n/** Contains response data for the update operation. */\nexport type ResourceGroupsUpdateResponse = ResourceGroup;\n\n/** Optional parameters. */\nexport interface ResourceGroupsExportTemplateOptionalParams\n extends coreClient.OperationOptions {\n /** Delay to wait until next poll, in milliseconds. */\n updateIntervalInMs?: number;\n /** A serialized poller which can be used to resume an existing paused Long-Running-Operation. */\n resumeFrom?: string;\n}\n\n/** Contains response data for the exportTemplate operation. */\nexport type ResourceGroupsExportTemplateResponse = ResourceGroupExportResult;\n\n/** Optional parameters. */\nexport interface ResourceGroupsListOptionalParams\n extends coreClient.OperationOptions {\n /** The filter to apply on the operation.

You can filter by tag names and values. For example, to filter for a tag name and value, use $filter=tagName eq 'tag1' and tagValue eq 'Value1' */\n filter?: string;\n /** The number of results to return. If null is passed, returns all resource groups. */\n top?: number;\n}\n\n/** Contains response data for the list operation. */\nexport type ResourceGroupsListResponse = ResourceGroupListResult;\n\n/** Optional parameters. */\nexport interface ResourceGroupsListNextOptionalParams\n extends coreClient.OperationOptions {}\n\n/** Contains response data for the listNext operation. */\nexport type ResourceGroupsListNextResponse = ResourceGroupListResult;\n\n/** Optional parameters. */\nexport interface TagsDeleteValueOptionalParams\n extends coreClient.OperationOptions {}\n\n/** Optional parameters. */\nexport interface TagsCreateOrUpdateValueOptionalParams\n extends coreClient.OperationOptions {}\n\n/** Contains response data for the createOrUpdateValue operation. */\nexport type TagsCreateOrUpdateValueResponse = TagValue;\n\n/** Optional parameters. */\nexport interface TagsCreateOrUpdateOptionalParams\n extends coreClient.OperationOptions {}\n\n/** Contains response data for the createOrUpdate operation. */\nexport type TagsCreateOrUpdateResponse = TagDetails;\n\n/** Optional parameters. */\nexport interface TagsDeleteOptionalParams extends coreClient.OperationOptions {}\n\n/** Optional parameters. */\nexport interface TagsListOptionalParams extends coreClient.OperationOptions {}\n\n/** Contains response data for the list operation. */\nexport type TagsListResponse = TagsListResult;\n\n/** Optional parameters. */\nexport interface TagsCreateOrUpdateAtScopeOptionalParams\n extends coreClient.OperationOptions {\n /** Delay to wait until next poll, in milliseconds. */\n updateIntervalInMs?: number;\n /** A serialized poller which can be used to resume an existing paused Long-Running-Operation. */\n resumeFrom?: string;\n}\n\n/** Contains response data for the createOrUpdateAtScope operation. */\nexport type TagsCreateOrUpdateAtScopeResponse = TagsResource;\n\n/** Optional parameters. */\nexport interface TagsUpdateAtScopeOptionalParams\n extends coreClient.OperationOptions {\n /** Delay to wait until next poll, in milliseconds. */\n updateIntervalInMs?: number;\n /** A serialized poller which can be used to resume an existing paused Long-Running-Operation. */\n resumeFrom?: string;\n}\n\n/** Contains response data for the updateAtScope operation. */\nexport type TagsUpdateAtScopeResponse = TagsResource;\n\n/** Optional parameters. */\nexport interface TagsGetAtScopeOptionalParams\n extends coreClient.OperationOptions {}\n\n/** Contains response data for the getAtScope operation. */\nexport type TagsGetAtScopeResponse = TagsResource;\n\n/** Optional parameters. */\nexport interface TagsDeleteAtScopeOptionalParams\n extends coreClient.OperationOptions {\n /** Delay to wait until next poll, in milliseconds. */\n updateIntervalInMs?: number;\n /** A serialized poller which can be used to resume an existing paused Long-Running-Operation. */\n resumeFrom?: string;\n}\n\n/** Optional parameters. */\nexport interface TagsListNextOptionalParams\n extends coreClient.OperationOptions {}\n\n/** Contains response data for the listNext operation. */\nexport type TagsListNextResponse = TagsListResult;\n\n/** Optional parameters. */\nexport interface DeploymentOperationsGetAtScopeOptionalParams\n extends coreClient.OperationOptions {}\n\n/** Contains response data for the getAtScope operation. */\nexport type DeploymentOperationsGetAtScopeResponse = DeploymentOperation;\n\n/** Optional parameters. */\nexport interface DeploymentOperationsListAtScopeOptionalParams\n extends coreClient.OperationOptions {\n /** The number of results to return. */\n top?: number;\n}\n\n/** Contains response data for the listAtScope operation. */\nexport type DeploymentOperationsListAtScopeResponse =\n DeploymentOperationsListResult;\n\n/** Optional parameters. */\nexport interface DeploymentOperationsGetAtTenantScopeOptionalParams\n extends coreClient.OperationOptions {}\n\n/** Contains response data for the getAtTenantScope operation. */\nexport type DeploymentOperationsGetAtTenantScopeResponse = DeploymentOperation;\n\n/** Optional parameters. */\nexport interface DeploymentOperationsListAtTenantScopeOptionalParams\n extends coreClient.OperationOptions {\n /** The number of results to return. */\n top?: number;\n}\n\n/** Contains response data for the listAtTenantScope operation. */\nexport type DeploymentOperationsListAtTenantScopeResponse =\n DeploymentOperationsListResult;\n\n/** Optional parameters. */\nexport interface DeploymentOperationsGetAtManagementGroupScopeOptionalParams\n extends coreClient.OperationOptions {}\n\n/** Contains response data for the getAtManagementGroupScope operation. */\nexport type DeploymentOperationsGetAtManagementGroupScopeResponse =\n DeploymentOperation;\n\n/** Optional parameters. */\nexport interface DeploymentOperationsListAtManagementGroupScopeOptionalParams\n extends coreClient.OperationOptions {\n /** The number of results to return. */\n top?: number;\n}\n\n/** Contains response data for the listAtManagementGroupScope operation. */\nexport type DeploymentOperationsListAtManagementGroupScopeResponse =\n DeploymentOperationsListResult;\n\n/** Optional parameters. */\nexport interface DeploymentOperationsGetAtSubscriptionScopeOptionalParams\n extends coreClient.OperationOptions {}\n\n/** Contains response data for the getAtSubscriptionScope operation. */\nexport type DeploymentOperationsGetAtSubscriptionScopeResponse =\n DeploymentOperation;\n\n/** Optional parameters. */\nexport interface DeploymentOperationsListAtSubscriptionScopeOptionalParams\n extends coreClient.OperationOptions {\n /** The number of results to return. */\n top?: number;\n}\n\n/** Contains response data for the listAtSubscriptionScope operation. */\nexport type DeploymentOperationsListAtSubscriptionScopeResponse =\n DeploymentOperationsListResult;\n\n/** Optional parameters. */\nexport interface DeploymentOperationsGetOptionalParams\n extends coreClient.OperationOptions {}\n\n/** Contains response data for the get operation. */\nexport type DeploymentOperationsGetResponse = DeploymentOperation;\n\n/** Optional parameters. */\nexport interface DeploymentOperationsListOptionalParams\n extends coreClient.OperationOptions {\n /** The number of results to return. */\n top?: number;\n}\n\n/** Contains response data for the list operation. */\nexport type DeploymentOperationsListResponse = DeploymentOperationsListResult;\n\n/** Optional parameters. */\nexport interface DeploymentOperationsListAtScopeNextOptionalParams\n extends coreClient.OperationOptions {}\n\n/** Contains response data for the listAtScopeNext operation. */\nexport type DeploymentOperationsListAtScopeNextResponse =\n DeploymentOperationsListResult;\n\n/** Optional parameters. */\nexport interface DeploymentOperationsListAtTenantScopeNextOptionalParams\n extends coreClient.OperationOptions {}\n\n/** Contains response data for the listAtTenantScopeNext operation. */\nexport type DeploymentOperationsListAtTenantScopeNextResponse =\n DeploymentOperationsListResult;\n\n/** Optional parameters. */\nexport interface DeploymentOperationsListAtManagementGroupScopeNextOptionalParams\n extends coreClient.OperationOptions {}\n\n/** Contains response data for the listAtManagementGroupScopeNext operation. */\nexport type DeploymentOperationsListAtManagementGroupScopeNextResponse =\n DeploymentOperationsListResult;\n\n/** Optional parameters. */\nexport interface DeploymentOperationsListAtSubscriptionScopeNextOptionalParams\n extends coreClient.OperationOptions {}\n\n/** Contains response data for the listAtSubscriptionScopeNext operation. */\nexport type DeploymentOperationsListAtSubscriptionScopeNextResponse =\n DeploymentOperationsListResult;\n\n/** Optional parameters. */\nexport interface DeploymentOperationsListNextOptionalParams\n extends coreClient.OperationOptions {}\n\n/** Contains response data for the listNext operation. */\nexport type DeploymentOperationsListNextResponse =\n DeploymentOperationsListResult;\n\n/** Optional parameters. */\nexport interface ResourceManagementClientOptionalParams\n extends coreClient.ServiceClientOptions {\n /** server parameter */\n $host?: string;\n /** Api Version */\n apiVersion?: string;\n /** Overrides client endpoint. */\n endpoint?: string;\n}\n", "// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\n/**\n * Encodes a string in base64 format.\n * @param value - the string to encode\n * @internal\n */\nexport function encodeString(value: string): string {\n return Buffer.from(value).toString(\"base64\");\n}\n\n/**\n * Encodes a byte array in base64 format.\n * @param value - the Uint8Aray to encode\n * @internal\n */\nexport function encodeByteArray(value: Uint8Array): string {\n const bufferValue = value instanceof Buffer ? value : Buffer.from(value.buffer as ArrayBuffer);\n return bufferValue.toString(\"base64\");\n}\n\n/**\n * Decodes a base64 string into a byte array.\n * @param value - the base64 string to decode\n * @internal\n */\nexport function decodeString(value: string): Uint8Array {\n return Buffer.from(value, \"base64\");\n}\n\n/**\n * Decodes a base64 string into a string.\n * @param value - the base64 string to decode\n * @internal\n */\nexport function decodeStringToString(value: string): string {\n return Buffer.from(value, \"base64\").toString();\n}\n", "// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport { CompositeMapper, FullOperationResponse, OperationResponseMap } from \"./interfaces.js\";\n\n/**\n * The union of all possible types for a primitive response body.\n * @internal\n */\nexport type BodyPrimitive = number | string | boolean | Date | Uint8Array | undefined | null;\n\n/**\n * A type guard for a primitive response body.\n * @param value - Value to test\n *\n * @internal\n */\nexport function isPrimitiveBody(value: unknown, mapperTypeName?: string): value is BodyPrimitive {\n return (\n mapperTypeName !== \"Composite\" &&\n mapperTypeName !== \"Dictionary\" &&\n (typeof value === \"string\" ||\n typeof value === \"number\" ||\n typeof value === \"boolean\" ||\n mapperTypeName?.match(/^(Date|DateTime|DateTimeRfc1123|UnixTime|ByteArray|Base64Url)$/i) !==\n null ||\n value === undefined ||\n value === null)\n );\n}\n\nconst validateISODuration =\n /^(-|\\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/;\n\n/**\n * Returns true if the given string is in ISO 8601 format.\n * @param value - The value to be validated for ISO 8601 duration format.\n * @internal\n */\nexport function isDuration(value: string): boolean {\n return validateISODuration.test(value);\n}\n\nconst validUuidRegex =\n /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/i;\n\n/**\n * Returns true if the provided uuid is valid.\n *\n * @param uuid - The uuid that needs to be validated.\n *\n * @internal\n */\nexport function isValidUuid(uuid: string): boolean {\n return validUuidRegex.test(uuid);\n}\n\n/**\n * Representation of parsed response headers and body coupled with information\n * about how to map them:\n * - whether the response body should be wrapped (typically if its type is primitive).\n * - whether the response is nullable so it can be null if the combination of\n * the headers and the body is empty.\n */\ninterface ResponseObjectWithMetadata {\n /** whether the mapper allows nullable body */\n hasNullableType: boolean;\n /** whether the response's body should be wrapped */\n shouldWrapBody: boolean;\n /** parsed headers of the response */\n headers:\n | {\n [key: string]: unknown;\n }\n | undefined;\n /** parsed body of the response */\n body: any;\n}\n\n/**\n * Maps the response as follows:\n * - wraps the response body if needed (typically if its type is primitive).\n * - returns null if the combination of the headers and the body is empty.\n * - otherwise, returns the combination of the headers and the body.\n *\n * @param responseObject - a representation of the parsed response\n * @returns the response that will be returned to the user which can be null and/or wrapped\n *\n * @internal\n */\nfunction handleNullableResponseAndWrappableBody(\n responseObject: ResponseObjectWithMetadata,\n): unknown | null {\n const combinedHeadersAndBody = {\n ...responseObject.headers,\n ...responseObject.body,\n };\n if (\n responseObject.hasNullableType &&\n Object.getOwnPropertyNames(combinedHeadersAndBody).length === 0\n ) {\n return responseObject.shouldWrapBody ? { body: null } : null;\n } else {\n return responseObject.shouldWrapBody\n ? {\n ...responseObject.headers,\n body: responseObject.body,\n }\n : combinedHeadersAndBody;\n }\n}\n\n/**\n * Take a `FullOperationResponse` and turn it into a flat\n * response object to hand back to the consumer.\n * @param fullResponse - The processed response from the operation request\n * @param responseSpec - The response map from the OperationSpec\n *\n * @internal\n */\nexport function flattenResponse(\n fullResponse: FullOperationResponse,\n responseSpec: OperationResponseMap | undefined,\n): unknown {\n const parsedHeaders = fullResponse.parsedHeaders;\n\n // head methods never have a body, but we return a boolean set to body property\n // to indicate presence/absence of the resource\n if (fullResponse.request.method === \"HEAD\") {\n return {\n ...parsedHeaders,\n body: fullResponse.parsedBody,\n };\n }\n const bodyMapper = responseSpec && responseSpec.bodyMapper;\n const isNullable = Boolean(bodyMapper?.nullable);\n const expectedBodyTypeName = bodyMapper?.type.name;\n\n /** If the body is asked for, we look at the expected body type to handle it */\n if (expectedBodyTypeName === \"Stream\") {\n return {\n ...parsedHeaders,\n blobBody: fullResponse.blobBody,\n readableStreamBody: fullResponse.readableStreamBody,\n };\n }\n\n const modelProperties =\n (expectedBodyTypeName === \"Composite\" &&\n (bodyMapper as CompositeMapper).type.modelProperties) ||\n {};\n const isPageableResponse = Object.keys(modelProperties).some(\n (k) => modelProperties[k].serializedName === \"\",\n );\n if (expectedBodyTypeName === \"Sequence\" || isPageableResponse) {\n const arrayResponse: { [key: string]: unknown } =\n fullResponse.parsedBody ?? ([] as unknown as { [key: string]: unknown });\n\n for (const key of Object.keys(modelProperties)) {\n if (modelProperties[key].serializedName) {\n arrayResponse[key] = fullResponse.parsedBody?.[key];\n }\n }\n\n if (parsedHeaders) {\n for (const key of Object.keys(parsedHeaders)) {\n arrayResponse[key] = parsedHeaders[key];\n }\n }\n return isNullable &&\n !fullResponse.parsedBody &&\n !parsedHeaders &&\n Object.getOwnPropertyNames(modelProperties).length === 0\n ? null\n : arrayResponse;\n }\n\n return handleNullableResponseAndWrappableBody({\n body: fullResponse.parsedBody,\n headers: parsedHeaders,\n hasNullableType: isNullable,\n shouldWrapBody: isPrimitiveBody(fullResponse.parsedBody, expectedBodyTypeName),\n });\n}\n", "// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport * as base64 from \"./base64.js\";\nimport {\n BaseMapper,\n CompositeMapper,\n DictionaryMapper,\n EnumMapper,\n Mapper,\n MapperConstraints,\n PolymorphicDiscriminator,\n RequiredSerializerOptions,\n SequenceMapper,\n Serializer,\n SerializerOptions,\n XML_ATTRKEY,\n XML_CHARKEY,\n} from \"./interfaces.js\";\nimport { isDuration, isValidUuid } from \"./utils.js\";\n\nclass SerializerImpl implements Serializer {\n constructor(\n public readonly modelMappers: { [key: string]: any } = {},\n public readonly isXML: boolean = false,\n ) {}\n\n /**\n * @deprecated Removing the constraints validation on client side.\n */\n validateConstraints(mapper: Mapper, value: any, objectName: string): void {\n const failValidation = (\n constraintName: keyof MapperConstraints,\n constraintValue: any,\n ): never => {\n throw new Error(\n `\"${objectName}\" with value \"${value}\" should satisfy the constraint \"${constraintName}\": ${constraintValue}.`,\n );\n };\n if (mapper.constraints && value !== undefined && value !== null) {\n const {\n ExclusiveMaximum,\n ExclusiveMinimum,\n InclusiveMaximum,\n InclusiveMinimum,\n MaxItems,\n MaxLength,\n MinItems,\n MinLength,\n MultipleOf,\n Pattern,\n UniqueItems,\n } = mapper.constraints;\n if (ExclusiveMaximum !== undefined && value >= ExclusiveMaximum) {\n failValidation(\"ExclusiveMaximum\", ExclusiveMaximum);\n }\n if (ExclusiveMinimum !== undefined && value <= ExclusiveMinimum) {\n failValidation(\"ExclusiveMinimum\", ExclusiveMinimum);\n }\n if (InclusiveMaximum !== undefined && value > InclusiveMaximum) {\n failValidation(\"InclusiveMaximum\", InclusiveMaximum);\n }\n if (InclusiveMinimum !== undefined && value < InclusiveMinimum) {\n failValidation(\"InclusiveMinimum\", InclusiveMinimum);\n }\n if (MaxItems !== undefined && value.length > MaxItems) {\n failValidation(\"MaxItems\", MaxItems);\n }\n if (MaxLength !== undefined && value.length > MaxLength) {\n failValidation(\"MaxLength\", MaxLength);\n }\n if (MinItems !== undefined && value.length < MinItems) {\n failValidation(\"MinItems\", MinItems);\n }\n if (MinLength !== undefined && value.length < MinLength) {\n failValidation(\"MinLength\", MinLength);\n }\n if (MultipleOf !== undefined && value % MultipleOf !== 0) {\n failValidation(\"MultipleOf\", MultipleOf);\n }\n if (Pattern) {\n const pattern: RegExp = typeof Pattern === \"string\" ? new RegExp(Pattern) : Pattern;\n if (typeof value !== \"string\" || value.match(pattern) === null) {\n failValidation(\"Pattern\", Pattern);\n }\n }\n if (\n UniqueItems &&\n value.some((item: any, i: number, ar: Array) => ar.indexOf(item) !== i)\n ) {\n failValidation(\"UniqueItems\", UniqueItems);\n }\n }\n }\n\n /**\n * Serialize the given object based on its metadata defined in the mapper\n *\n * @param mapper - The mapper which defines the metadata of the serializable object\n *\n * @param object - A valid Javascript object to be serialized\n *\n * @param objectName - Name of the serialized object\n *\n * @param options - additional options to serialization\n *\n * @returns A valid serialized Javascript object\n */\n serialize(\n mapper: Mapper,\n object: any,\n objectName?: string,\n options: SerializerOptions = { xml: {} },\n ): any {\n const updatedOptions: RequiredSerializerOptions = {\n xml: {\n rootName: options.xml.rootName ?? \"\",\n includeRoot: options.xml.includeRoot ?? false,\n xmlCharKey: options.xml.xmlCharKey ?? XML_CHARKEY,\n },\n };\n let payload: any = {};\n const mapperType = mapper.type.name as string;\n if (!objectName) {\n objectName = mapper.serializedName!;\n }\n if (mapperType.match(/^Sequence$/i) !== null) {\n payload = [];\n }\n\n if (mapper.isConstant) {\n object = mapper.defaultValue;\n }\n\n // This table of allowed values should help explain\n // the mapper.required and mapper.nullable properties.\n // X means \"neither undefined or null are allowed\".\n // || required\n // || true | false\n // nullable || ==========================\n // true || null | undefined/null\n // false || X | undefined\n // undefined || X | undefined/null\n\n const { required, nullable } = mapper;\n\n if (required && nullable && object === undefined) {\n throw new Error(`${objectName} cannot be undefined.`);\n }\n if (required && !nullable && (object === undefined || object === null)) {\n throw new Error(`${objectName} cannot be null or undefined.`);\n }\n if (!required && nullable === false && object === null) {\n throw new Error(`${objectName} cannot be null.`);\n }\n\n if (object === undefined || object === null) {\n payload = object;\n } else {\n if (mapperType.match(/^any$/i) !== null) {\n payload = object;\n } else if (mapperType.match(/^(Number|String|Boolean|Object|Stream|Uuid)$/i) !== null) {\n payload = serializeBasicTypes(mapperType, objectName, object);\n } else if (mapperType.match(/^Enum$/i) !== null) {\n const enumMapper = mapper as EnumMapper;\n payload = serializeEnumType(objectName, enumMapper.type.allowedValues, object);\n } else if (\n mapperType.match(/^(Date|DateTime|TimeSpan|DateTimeRfc1123|UnixTime)$/i) !== null\n ) {\n payload = serializeDateTypes(mapperType, object, objectName);\n } else if (mapperType.match(/^ByteArray$/i) !== null) {\n payload = serializeByteArrayType(objectName, object);\n } else if (mapperType.match(/^Base64Url$/i) !== null) {\n payload = serializeBase64UrlType(objectName, object);\n } else if (mapperType.match(/^Sequence$/i) !== null) {\n payload = serializeSequenceType(\n this,\n mapper as SequenceMapper,\n object,\n objectName,\n Boolean(this.isXML),\n updatedOptions,\n );\n } else if (mapperType.match(/^Dictionary$/i) !== null) {\n payload = serializeDictionaryType(\n this,\n mapper as DictionaryMapper,\n object,\n objectName,\n Boolean(this.isXML),\n updatedOptions,\n );\n } else if (mapperType.match(/^Composite$/i) !== null) {\n payload = serializeCompositeType(\n this,\n mapper as CompositeMapper,\n object,\n objectName,\n Boolean(this.isXML),\n updatedOptions,\n );\n }\n }\n return payload;\n }\n\n /**\n * Deserialize the given object based on its metadata defined in the mapper\n *\n * @param mapper - The mapper which defines the metadata of the serializable object\n *\n * @param responseBody - A valid Javascript entity to be deserialized\n *\n * @param objectName - Name of the deserialized object\n *\n * @param options - Controls behavior of XML parser and builder.\n *\n * @returns A valid deserialized Javascript object\n */\n deserialize(\n mapper: Mapper,\n responseBody: any,\n objectName: string,\n options: SerializerOptions = { xml: {} },\n ): any {\n const updatedOptions: RequiredSerializerOptions = {\n xml: {\n rootName: options.xml.rootName ?? \"\",\n includeRoot: options.xml.includeRoot ?? false,\n xmlCharKey: options.xml.xmlCharKey ?? XML_CHARKEY,\n },\n ignoreUnknownProperties: options.ignoreUnknownProperties ?? false,\n };\n if (responseBody === undefined || responseBody === null) {\n if (this.isXML && mapper.type.name === \"Sequence\" && !mapper.xmlIsWrapped) {\n // Edge case for empty XML non-wrapped lists. xml2js can't distinguish\n // between the list being empty versus being missing,\n // so let's do the more user-friendly thing and return an empty list.\n responseBody = [];\n }\n // specifically check for undefined as default value can be a falsey value `0, \"\", false, null`\n if (mapper.defaultValue !== undefined) {\n responseBody = mapper.defaultValue;\n }\n return responseBody;\n }\n\n let payload: any;\n const mapperType = mapper.type.name;\n if (!objectName) {\n objectName = mapper.serializedName!;\n }\n\n if (mapperType.match(/^Composite$/i) !== null) {\n payload = deserializeCompositeType(\n this,\n mapper as CompositeMapper,\n responseBody,\n objectName,\n updatedOptions,\n );\n } else {\n if (this.isXML) {\n const xmlCharKey = updatedOptions.xml.xmlCharKey;\n /**\n * If the mapper specifies this as a non-composite type value but the responseBody contains\n * both header (\"$\" i.e., XML_ATTRKEY) and body (\"#\" i.e., XML_CHARKEY) properties,\n * then just reduce the responseBody value to the body (\"#\" i.e., XML_CHARKEY) property.\n */\n if (responseBody[XML_ATTRKEY] !== undefined && responseBody[xmlCharKey] !== undefined) {\n responseBody = responseBody[xmlCharKey];\n }\n }\n\n if (mapperType.match(/^Number$/i) !== null) {\n payload = parseFloat(responseBody);\n if (isNaN(payload)) {\n payload = responseBody;\n }\n } else if (mapperType.match(/^Boolean$/i) !== null) {\n if (responseBody === \"true\") {\n payload = true;\n } else if (responseBody === \"false\") {\n payload = false;\n } else {\n payload = responseBody;\n }\n } else if (mapperType.match(/^(String|Enum|Object|Stream|Uuid|TimeSpan|any)$/i) !== null) {\n payload = responseBody;\n } else if (mapperType.match(/^(Date|DateTime|DateTimeRfc1123)$/i) !== null) {\n payload = new Date(responseBody);\n } else if (mapperType.match(/^UnixTime$/i) !== null) {\n payload = unixTimeToDate(responseBody);\n } else if (mapperType.match(/^ByteArray$/i) !== null) {\n payload = base64.decodeString(responseBody);\n } else if (mapperType.match(/^Base64Url$/i) !== null) {\n payload = base64UrlToByteArray(responseBody);\n } else if (mapperType.match(/^Sequence$/i) !== null) {\n payload = deserializeSequenceType(\n this,\n mapper as SequenceMapper,\n responseBody,\n objectName,\n updatedOptions,\n );\n } else if (mapperType.match(/^Dictionary$/i) !== null) {\n payload = deserializeDictionaryType(\n this,\n mapper as DictionaryMapper,\n responseBody,\n objectName,\n updatedOptions,\n );\n }\n }\n\n if (mapper.isConstant) {\n payload = mapper.defaultValue;\n }\n\n return payload;\n }\n}\n\n/**\n * Method that creates and returns a Serializer.\n * @param modelMappers - Known models to map\n * @param isXML - If XML should be supported\n */\nexport function createSerializer(\n modelMappers: { [key: string]: any } = {},\n isXML: boolean = false,\n): Serializer {\n return new SerializerImpl(modelMappers, isXML);\n}\n\nfunction trimEnd(str: string, ch: string): string {\n let len = str.length;\n while (len - 1 >= 0 && str[len - 1] === ch) {\n --len;\n }\n return str.substr(0, len);\n}\n\nfunction bufferToBase64Url(buffer: Uint8Array): string | undefined {\n if (!buffer) {\n return undefined;\n }\n if (!(buffer instanceof Uint8Array)) {\n throw new Error(`Please provide an input of type Uint8Array for converting to Base64Url.`);\n }\n // Uint8Array to Base64.\n const str = base64.encodeByteArray(buffer);\n // Base64 to Base64Url.\n return trimEnd(str, \"=\").replace(/\\+/g, \"-\").replace(/\\//g, \"_\");\n}\n\nfunction base64UrlToByteArray(str: string): Uint8Array | undefined {\n if (!str) {\n return undefined;\n }\n if (str && typeof str.valueOf() !== \"string\") {\n throw new Error(\"Please provide an input of type string for converting to Uint8Array\");\n }\n // Base64Url to Base64.\n str = str.replace(/-/g, \"+\").replace(/_/g, \"/\");\n // Base64 to Uint8Array.\n return base64.decodeString(str);\n}\n\nfunction splitSerializeName(prop: string | undefined): string[] {\n const classes: string[] = [];\n let partialclass = \"\";\n if (prop) {\n const subwords = prop.split(\".\");\n\n for (const item of subwords) {\n if (item.charAt(item.length - 1) === \"\\\\\") {\n partialclass += item.substr(0, item.length - 1) + \".\";\n } else {\n partialclass += item;\n classes.push(partialclass);\n partialclass = \"\";\n }\n }\n }\n\n return classes;\n}\n\nfunction dateToUnixTime(d: string | Date): number | undefined {\n if (!d) {\n return undefined;\n }\n\n if (typeof d.valueOf() === \"string\") {\n d = new Date(d as string);\n }\n return Math.floor((d as Date).getTime() / 1000);\n}\n\nfunction unixTimeToDate(n: number): Date | undefined {\n if (!n) {\n return undefined;\n }\n return new Date(n * 1000);\n}\n\nfunction serializeBasicTypes(typeName: string, objectName: string, value: any): any {\n if (value !== null && value !== undefined) {\n if (typeName.match(/^Number$/i) !== null) {\n if (typeof value !== \"number\") {\n throw new Error(`${objectName} with value ${value} must be of type number.`);\n }\n } else if (typeName.match(/^String$/i) !== null) {\n if (typeof value.valueOf() !== \"string\") {\n throw new Error(`${objectName} with value \"${value}\" must be of type string.`);\n }\n } else if (typeName.match(/^Uuid$/i) !== null) {\n if (!(typeof value.valueOf() === \"string\" && isValidUuid(value))) {\n throw new Error(\n `${objectName} with value \"${value}\" must be of type string and a valid uuid.`,\n );\n }\n } else if (typeName.match(/^Boolean$/i) !== null) {\n if (typeof value !== \"boolean\") {\n throw new Error(`${objectName} with value ${value} must be of type boolean.`);\n }\n } else if (typeName.match(/^Stream$/i) !== null) {\n const objectType = typeof value;\n if (\n objectType !== \"string\" &&\n typeof value.pipe !== \"function\" && // NodeJS.ReadableStream\n typeof value.tee !== \"function\" && // browser ReadableStream\n !(value instanceof ArrayBuffer) &&\n !ArrayBuffer.isView(value) &&\n // File objects count as a type of Blob, so we want to use instanceof explicitly\n !((typeof Blob === \"function\" || typeof Blob === \"object\") && value instanceof Blob) &&\n objectType !== \"function\"\n ) {\n throw new Error(\n `${objectName} must be a string, Blob, ArrayBuffer, ArrayBufferView, ReadableStream, or () => ReadableStream.`,\n );\n }\n }\n }\n return value;\n}\n\nfunction serializeEnumType(objectName: string, allowedValues: Array, value: any): any {\n if (!allowedValues) {\n throw new Error(\n `Please provide a set of allowedValues to validate ${objectName} as an Enum Type.`,\n );\n }\n const isPresent = allowedValues.some((item) => {\n if (typeof item.valueOf() === \"string\") {\n return item.toLowerCase() === value.toLowerCase();\n }\n return item === value;\n });\n if (!isPresent) {\n throw new Error(\n `${value} is not a valid value for ${objectName}. The valid values are: ${JSON.stringify(\n allowedValues,\n )}.`,\n );\n }\n return value;\n}\n\nfunction serializeByteArrayType(objectName: string, value: any): any {\n if (value !== undefined && value !== null) {\n if (!(value instanceof Uint8Array)) {\n throw new Error(`${objectName} must be of type Uint8Array.`);\n }\n value = base64.encodeByteArray(value);\n }\n return value;\n}\n\nfunction serializeBase64UrlType(objectName: string, value: any): any {\n if (value !== undefined && value !== null) {\n if (!(value instanceof Uint8Array)) {\n throw new Error(`${objectName} must be of type Uint8Array.`);\n }\n value = bufferToBase64Url(value);\n }\n return value;\n}\n\nfunction serializeDateTypes(typeName: string, value: any, objectName: string): any {\n if (value !== undefined && value !== null) {\n if (typeName.match(/^Date$/i) !== null) {\n if (\n !(\n value instanceof Date ||\n (typeof value.valueOf() === \"string\" && !isNaN(Date.parse(value)))\n )\n ) {\n throw new Error(`${objectName} must be an instanceof Date or a string in ISO8601 format.`);\n }\n value =\n value instanceof Date\n ? value.toISOString().substring(0, 10)\n : new Date(value).toISOString().substring(0, 10);\n } else if (typeName.match(/^DateTime$/i) !== null) {\n if (\n !(\n value instanceof Date ||\n (typeof value.valueOf() === \"string\" && !isNaN(Date.parse(value)))\n )\n ) {\n throw new Error(`${objectName} must be an instanceof Date or a string in ISO8601 format.`);\n }\n value = value instanceof Date ? value.toISOString() : new Date(value).toISOString();\n } else if (typeName.match(/^DateTimeRfc1123$/i) !== null) {\n if (\n !(\n value instanceof Date ||\n (typeof value.valueOf() === \"string\" && !isNaN(Date.parse(value)))\n )\n ) {\n throw new Error(`${objectName} must be an instanceof Date or a string in RFC-1123 format.`);\n }\n value = value instanceof Date ? value.toUTCString() : new Date(value).toUTCString();\n } else if (typeName.match(/^UnixTime$/i) !== null) {\n if (\n !(\n value instanceof Date ||\n (typeof value.valueOf() === \"string\" && !isNaN(Date.parse(value)))\n )\n ) {\n throw new Error(\n `${objectName} must be an instanceof Date or a string in RFC-1123/ISO8601 format ` +\n `for it to be serialized in UnixTime/Epoch format.`,\n );\n }\n value = dateToUnixTime(value);\n } else if (typeName.match(/^TimeSpan$/i) !== null) {\n if (!isDuration(value)) {\n throw new Error(\n `${objectName} must be a string in ISO 8601 format. Instead was \"${value}\".`,\n );\n }\n }\n }\n return value;\n}\n\nfunction serializeSequenceType(\n serializer: Serializer,\n mapper: SequenceMapper,\n object: any,\n objectName: string,\n isXml: boolean,\n options: RequiredSerializerOptions,\n): any {\n if (!Array.isArray(object)) {\n throw new Error(`${objectName} must be of type Array.`);\n }\n let elementType = mapper.type.element;\n if (!elementType || typeof elementType !== \"object\") {\n throw new Error(\n `element\" metadata for an Array must be defined in the ` +\n `mapper and it must of type \"object\" in ${objectName}.`,\n );\n }\n // Quirk: Composite mappers referenced by `element` might\n // not have *all* properties declared (like uberParent),\n // so let's try to look up the full definition by name.\n if (elementType.type.name === \"Composite\" && elementType.type.className) {\n elementType = serializer.modelMappers[elementType.type.className] ?? elementType;\n }\n const tempArray = [];\n for (let i = 0; i < object.length; i++) {\n const serializedValue = serializer.serialize(elementType, object[i], objectName, options);\n if (isXml && elementType.xmlNamespace) {\n const xmlnsKey = elementType.xmlNamespacePrefix\n ? `xmlns:${elementType.xmlNamespacePrefix}`\n : \"xmlns\";\n if (elementType.type.name === \"Composite\") {\n tempArray[i] = { ...serializedValue };\n tempArray[i][XML_ATTRKEY] = { [xmlnsKey]: elementType.xmlNamespace };\n } else {\n tempArray[i] = {};\n tempArray[i][options.xml.xmlCharKey] = serializedValue;\n tempArray[i][XML_ATTRKEY] = { [xmlnsKey]: elementType.xmlNamespace };\n }\n } else {\n tempArray[i] = serializedValue;\n }\n }\n return tempArray;\n}\n\nfunction serializeDictionaryType(\n serializer: Serializer,\n mapper: DictionaryMapper,\n object: any,\n objectName: string,\n isXml: boolean,\n options: RequiredSerializerOptions,\n): any {\n if (typeof object !== \"object\") {\n throw new Error(`${objectName} must be of type object.`);\n }\n const valueType = mapper.type.value;\n if (!valueType || typeof valueType !== \"object\") {\n throw new Error(\n `\"value\" metadata for a Dictionary must be defined in the ` +\n `mapper and it must of type \"object\" in ${objectName}.`,\n );\n }\n const tempDictionary: { [key: string]: any } = {};\n for (const key of Object.keys(object)) {\n const serializedValue = serializer.serialize(valueType, object[key], objectName, options);\n // If the element needs an XML namespace we need to add it within the $ property\n tempDictionary[key] = getXmlObjectValue(valueType, serializedValue, isXml, options);\n }\n\n // Add the namespace to the root element if needed\n if (isXml && mapper.xmlNamespace) {\n const xmlnsKey = mapper.xmlNamespacePrefix ? `xmlns:${mapper.xmlNamespacePrefix}` : \"xmlns\";\n const result = tempDictionary;\n result[XML_ATTRKEY] = { [xmlnsKey]: mapper.xmlNamespace };\n return result;\n }\n\n return tempDictionary;\n}\n\n/**\n * Resolves the additionalProperties property from a referenced mapper\n * @param serializer - the serializer containing the entire set of mappers\n * @param mapper - the composite mapper to resolve\n * @param objectName - name of the object being serialized\n */\nfunction resolveAdditionalProperties(\n serializer: Serializer,\n mapper: CompositeMapper,\n objectName: string,\n): SequenceMapper | BaseMapper | CompositeMapper | DictionaryMapper | EnumMapper | undefined {\n const additionalProperties = mapper.type.additionalProperties;\n\n if (!additionalProperties && mapper.type.className) {\n const modelMapper = resolveReferencedMapper(serializer, mapper, objectName);\n return modelMapper?.type.additionalProperties;\n }\n\n return additionalProperties;\n}\n\n/**\n * Finds the mapper referenced by className\n * @param serializer - the serializer containing the entire set of mappers\n * @param mapper - the composite mapper to resolve\n * @param objectName - name of the object being serialized\n */\nfunction resolveReferencedMapper(\n serializer: Serializer,\n mapper: CompositeMapper,\n objectName: string,\n): CompositeMapper | undefined {\n const className = mapper.type.className;\n if (!className) {\n throw new Error(\n `Class name for model \"${objectName}\" is not provided in the mapper \"${JSON.stringify(\n mapper,\n undefined,\n 2,\n )}\".`,\n );\n }\n\n return serializer.modelMappers[className];\n}\n\n/**\n * Resolves a composite mapper's modelProperties.\n * @param serializer - the serializer containing the entire set of mappers\n * @param mapper - the composite mapper to resolve\n */\nfunction resolveModelProperties(\n serializer: Serializer,\n mapper: CompositeMapper,\n objectName: string,\n): { [propertyName: string]: Mapper } {\n let modelProps = mapper.type.modelProperties;\n if (!modelProps) {\n const modelMapper = resolveReferencedMapper(serializer, mapper, objectName);\n if (!modelMapper) {\n throw new Error(`mapper() cannot be null or undefined for model \"${mapper.type.className}\".`);\n }\n modelProps = modelMapper?.type.modelProperties;\n if (!modelProps) {\n throw new Error(\n `modelProperties cannot be null or undefined in the ` +\n `mapper \"${JSON.stringify(modelMapper)}\" of type \"${\n mapper.type.className\n }\" for object \"${objectName}\".`,\n );\n }\n }\n\n return modelProps;\n}\n\nfunction serializeCompositeType(\n serializer: Serializer,\n mapper: CompositeMapper,\n object: any,\n objectName: string,\n isXml: boolean,\n options: RequiredSerializerOptions,\n): any {\n if (getPolymorphicDiscriminatorRecursively(serializer, mapper)) {\n mapper = getPolymorphicMapper(serializer, mapper, object, \"clientName\");\n }\n\n if (object !== undefined && object !== null) {\n const payload: any = {};\n const modelProps = resolveModelProperties(serializer, mapper, objectName);\n for (const key of Object.keys(modelProps)) {\n const propertyMapper = modelProps[key];\n if (propertyMapper.readOnly) {\n continue;\n }\n\n let propName: string | undefined;\n let parentObject: any = payload;\n if (serializer.isXML) {\n if (propertyMapper.xmlIsWrapped) {\n propName = propertyMapper.xmlName;\n } else {\n propName = propertyMapper.xmlElementName || propertyMapper.xmlName;\n }\n } else {\n const paths = splitSerializeName(propertyMapper.serializedName!);\n propName = paths.pop();\n\n for (const pathName of paths) {\n const childObject = parentObject[pathName];\n if (\n (childObject === undefined || childObject === null) &&\n ((object[key] !== undefined && object[key] !== null) ||\n propertyMapper.defaultValue !== undefined)\n ) {\n parentObject[pathName] = {};\n }\n parentObject = parentObject[pathName];\n }\n }\n\n if (parentObject !== undefined && parentObject !== null) {\n if (isXml && mapper.xmlNamespace) {\n const xmlnsKey = mapper.xmlNamespacePrefix\n ? `xmlns:${mapper.xmlNamespacePrefix}`\n : \"xmlns\";\n parentObject[XML_ATTRKEY] = {\n ...parentObject[XML_ATTRKEY],\n [xmlnsKey]: mapper.xmlNamespace,\n };\n }\n const propertyObjectName =\n propertyMapper.serializedName !== \"\"\n ? objectName + \".\" + propertyMapper.serializedName\n : objectName;\n\n let toSerialize = object[key];\n const polymorphicDiscriminator = getPolymorphicDiscriminatorRecursively(serializer, mapper);\n if (\n polymorphicDiscriminator &&\n polymorphicDiscriminator.clientName === key &&\n (toSerialize === undefined || toSerialize === null)\n ) {\n toSerialize = mapper.serializedName;\n }\n\n const serializedValue = serializer.serialize(\n propertyMapper,\n toSerialize,\n propertyObjectName,\n options,\n );\n if (serializedValue !== undefined && propName !== undefined && propName !== null) {\n const value = getXmlObjectValue(propertyMapper, serializedValue, isXml, options);\n if (isXml && propertyMapper.xmlIsAttribute) {\n // XML_ATTRKEY, i.e., $ is the key attributes are kept under in xml2js.\n // This keeps things simple while preventing name collision\n // with names in user documents.\n parentObject[XML_ATTRKEY] = parentObject[XML_ATTRKEY] || {};\n parentObject[XML_ATTRKEY][propName] = serializedValue;\n } else if (isXml && propertyMapper.xmlIsWrapped) {\n parentObject[propName] = { [propertyMapper.xmlElementName!]: value };\n } else {\n parentObject[propName] = value;\n }\n }\n }\n }\n\n const additionalPropertiesMapper = resolveAdditionalProperties(serializer, mapper, objectName);\n if (additionalPropertiesMapper) {\n const propNames = Object.keys(modelProps);\n for (const clientPropName in object) {\n const isAdditionalProperty = propNames.every((pn) => pn !== clientPropName);\n if (isAdditionalProperty) {\n payload[clientPropName] = serializer.serialize(\n additionalPropertiesMapper,\n object[clientPropName],\n objectName + '[\"' + clientPropName + '\"]',\n options,\n );\n }\n }\n }\n\n return payload;\n }\n return object;\n}\n\nfunction getXmlObjectValue(\n propertyMapper: Mapper,\n serializedValue: any,\n isXml: boolean,\n options: RequiredSerializerOptions,\n): any {\n if (!isXml || !propertyMapper.xmlNamespace) {\n return serializedValue;\n }\n\n const xmlnsKey = propertyMapper.xmlNamespacePrefix\n ? `xmlns:${propertyMapper.xmlNamespacePrefix}`\n : \"xmlns\";\n const xmlNamespace = { [xmlnsKey]: propertyMapper.xmlNamespace };\n\n if ([\"Composite\"].includes(propertyMapper.type.name)) {\n if (serializedValue[XML_ATTRKEY]) {\n return serializedValue;\n } else {\n const result: any = { ...serializedValue };\n result[XML_ATTRKEY] = xmlNamespace;\n return result;\n }\n }\n const result: any = {};\n result[options.xml.xmlCharKey] = serializedValue;\n result[XML_ATTRKEY] = xmlNamespace;\n return result;\n}\n\nfunction isSpecialXmlProperty(propertyName: string, options: RequiredSerializerOptions): boolean {\n return [XML_ATTRKEY, options.xml.xmlCharKey].includes(propertyName);\n}\n\nfunction deserializeCompositeType(\n serializer: Serializer,\n mapper: CompositeMapper,\n responseBody: any,\n objectName: string,\n options: RequiredSerializerOptions,\n): any {\n const xmlCharKey = options.xml.xmlCharKey ?? XML_CHARKEY;\n if (getPolymorphicDiscriminatorRecursively(serializer, mapper)) {\n mapper = getPolymorphicMapper(serializer, mapper, responseBody, \"serializedName\");\n }\n\n const modelProps = resolveModelProperties(serializer, mapper, objectName);\n let instance: { [key: string]: any } = {};\n const handledPropertyNames: string[] = [];\n\n for (const key of Object.keys(modelProps)) {\n const propertyMapper = modelProps[key];\n const paths = splitSerializeName(modelProps[key].serializedName!);\n handledPropertyNames.push(paths[0]);\n const { serializedName, xmlName, xmlElementName } = propertyMapper;\n let propertyObjectName = objectName;\n if (serializedName !== \"\" && serializedName !== undefined) {\n propertyObjectName = objectName + \".\" + serializedName;\n }\n\n const headerCollectionPrefix = (propertyMapper as DictionaryMapper).headerCollectionPrefix;\n if (headerCollectionPrefix) {\n const dictionary: any = {};\n for (const headerKey of Object.keys(responseBody)) {\n if (headerKey.startsWith(headerCollectionPrefix)) {\n dictionary[headerKey.substring(headerCollectionPrefix.length)] = serializer.deserialize(\n (propertyMapper as DictionaryMapper).type.value,\n responseBody[headerKey],\n propertyObjectName,\n options,\n );\n }\n\n handledPropertyNames.push(headerKey);\n }\n instance[key] = dictionary;\n } else if (serializer.isXML) {\n if (propertyMapper.xmlIsAttribute && responseBody[XML_ATTRKEY]) {\n instance[key] = serializer.deserialize(\n propertyMapper,\n responseBody[XML_ATTRKEY][xmlName!],\n propertyObjectName,\n options,\n );\n } else if (propertyMapper.xmlIsMsText) {\n if (responseBody[xmlCharKey] !== undefined) {\n instance[key] = responseBody[xmlCharKey];\n } else if (typeof responseBody === \"string\") {\n // The special case where xml parser parses \"content\" into JSON of\n // `{ name: \"content\"}` instead of `{ name: { \"_\": \"content\" }}`\n instance[key] = responseBody;\n }\n } else {\n const propertyName = xmlElementName || xmlName || serializedName;\n if (propertyMapper.xmlIsWrapped) {\n /* a list of wrapped by \n For the xml example below\n \n ...\n ...\n \n the responseBody has\n {\n Cors: {\n CorsRule: [{...}, {...}]\n }\n }\n xmlName is \"Cors\" and xmlElementName is\"CorsRule\".\n */\n const wrapped = responseBody[xmlName!];\n const elementList = wrapped?.[xmlElementName!] ?? [];\n instance[key] = serializer.deserialize(\n propertyMapper,\n elementList,\n propertyObjectName,\n options,\n );\n handledPropertyNames.push(xmlName!);\n } else {\n const property = responseBody[propertyName!];\n instance[key] = serializer.deserialize(\n propertyMapper,\n property,\n propertyObjectName,\n options,\n );\n handledPropertyNames.push(propertyName!);\n }\n }\n } else {\n // deserialize the property if it is present in the provided responseBody instance\n let propertyInstance;\n let res = responseBody;\n // traversing the object step by step.\n let steps = 0;\n for (const item of paths) {\n if (!res) break;\n steps++;\n res = res[item];\n }\n // only accept null when reaching the last position of object otherwise it would be undefined\n if (res === null && steps < paths.length) {\n res = undefined;\n }\n propertyInstance = res;\n const polymorphicDiscriminator = mapper.type.polymorphicDiscriminator;\n // checking that the model property name (key)(ex: \"fishtype\") and the\n // clientName of the polymorphicDiscriminator {metadata} (ex: \"fishtype\")\n // instead of the serializedName of the polymorphicDiscriminator (ex: \"fish.type\")\n // is a better approach. The generator is not consistent with escaping '\\.' in the\n // serializedName of the property (ex: \"fish\\.type\") that is marked as polymorphic discriminator\n // and the serializedName of the metadata polymorphicDiscriminator (ex: \"fish.type\"). However,\n // the clientName transformation of the polymorphicDiscriminator (ex: \"fishtype\") and\n // the transformation of model property name (ex: \"fishtype\") is done consistently.\n // Hence, it is a safer bet to rely on the clientName of the polymorphicDiscriminator.\n if (\n polymorphicDiscriminator &&\n key === polymorphicDiscriminator.clientName &&\n (propertyInstance === undefined || propertyInstance === null)\n ) {\n propertyInstance = mapper.serializedName;\n }\n\n let serializedValue;\n // paging\n if (Array.isArray(responseBody[key]) && modelProps[key].serializedName === \"\") {\n propertyInstance = responseBody[key];\n const arrayInstance = serializer.deserialize(\n propertyMapper,\n propertyInstance,\n propertyObjectName,\n options,\n );\n // Copy over any properties that have already been added into the instance, where they do\n // not exist on the newly de-serialized array\n for (const [k, v] of Object.entries(instance)) {\n if (!Object.prototype.hasOwnProperty.call(arrayInstance, k)) {\n arrayInstance[k] = v;\n }\n }\n instance = arrayInstance;\n } else if (propertyInstance !== undefined || propertyMapper.defaultValue !== undefined) {\n serializedValue = serializer.deserialize(\n propertyMapper,\n propertyInstance,\n propertyObjectName,\n options,\n );\n instance[key] = serializedValue;\n }\n }\n }\n\n const additionalPropertiesMapper = mapper.type.additionalProperties;\n if (additionalPropertiesMapper) {\n const isAdditionalProperty = (responsePropName: string): boolean => {\n for (const clientPropName in modelProps) {\n const paths = splitSerializeName(modelProps[clientPropName].serializedName);\n if (paths[0] === responsePropName) {\n return false;\n }\n }\n return true;\n };\n\n for (const responsePropName in responseBody) {\n if (isAdditionalProperty(responsePropName)) {\n instance[responsePropName] = serializer.deserialize(\n additionalPropertiesMapper,\n responseBody[responsePropName],\n objectName + '[\"' + responsePropName + '\"]',\n options,\n );\n }\n }\n } else if (responseBody && !options.ignoreUnknownProperties) {\n for (const key of Object.keys(responseBody)) {\n if (\n instance[key] === undefined &&\n !handledPropertyNames.includes(key) &&\n !isSpecialXmlProperty(key, options)\n ) {\n instance[key] = responseBody[key];\n }\n }\n }\n\n return instance;\n}\n\nfunction deserializeDictionaryType(\n serializer: Serializer,\n mapper: DictionaryMapper,\n responseBody: any,\n objectName: string,\n options: RequiredSerializerOptions,\n): any {\n /* jshint validthis: true */\n const value = mapper.type.value;\n if (!value || typeof value !== \"object\") {\n throw new Error(\n `\"value\" metadata for a Dictionary must be defined in the ` +\n `mapper and it must of type \"object\" in ${objectName}`,\n );\n }\n if (responseBody) {\n const tempDictionary: { [key: string]: any } = {};\n for (const key of Object.keys(responseBody)) {\n tempDictionary[key] = serializer.deserialize(value, responseBody[key], objectName, options);\n }\n return tempDictionary;\n }\n return responseBody;\n}\n\nfunction deserializeSequenceType(\n serializer: Serializer,\n mapper: SequenceMapper,\n responseBody: any,\n objectName: string,\n options: RequiredSerializerOptions,\n): any {\n let element = mapper.type.element;\n if (!element || typeof element !== \"object\") {\n throw new Error(\n `element\" metadata for an Array must be defined in the ` +\n `mapper and it must of type \"object\" in ${objectName}`,\n );\n }\n if (responseBody) {\n if (!Array.isArray(responseBody)) {\n // xml2js will interpret a single element array as just the element, so force it to be an array\n responseBody = [responseBody];\n }\n\n // Quirk: Composite mappers referenced by `element` might\n // not have *all* properties declared (like uberParent),\n // so let's try to look up the full definition by name.\n if (element.type.name === \"Composite\" && element.type.className) {\n element = serializer.modelMappers[element.type.className] ?? element;\n }\n\n const tempArray = [];\n for (let i = 0; i < responseBody.length; i++) {\n tempArray[i] = serializer.deserialize(\n element,\n responseBody[i],\n `${objectName}[${i}]`,\n options,\n );\n }\n return tempArray;\n }\n return responseBody;\n}\n\nfunction getIndexDiscriminator(\n discriminators: Record,\n discriminatorValue: string,\n typeName: string,\n): CompositeMapper | undefined {\n const typeNamesToCheck = [typeName];\n while (typeNamesToCheck.length) {\n const currentName = typeNamesToCheck.shift();\n const indexDiscriminator =\n discriminatorValue === currentName\n ? discriminatorValue\n : currentName + \".\" + discriminatorValue;\n if (Object.prototype.hasOwnProperty.call(discriminators, indexDiscriminator)) {\n return discriminators[indexDiscriminator];\n } else {\n for (const [name, mapper] of Object.entries(discriminators)) {\n if (\n name.startsWith(currentName + \".\") &&\n mapper.type.uberParent === currentName &&\n mapper.type.className\n ) {\n typeNamesToCheck.push(mapper.type.className);\n }\n }\n }\n }\n\n return undefined;\n}\n\nfunction getPolymorphicMapper(\n serializer: Serializer,\n mapper: CompositeMapper,\n object: any,\n polymorphicPropertyName: \"clientName\" | \"serializedName\",\n): CompositeMapper {\n const polymorphicDiscriminator = getPolymorphicDiscriminatorRecursively(serializer, mapper);\n\n if (polymorphicDiscriminator) {\n let discriminatorName = polymorphicDiscriminator[polymorphicPropertyName];\n if (discriminatorName) {\n // The serializedName might have \\\\, which we just want to ignore\n if (polymorphicPropertyName === \"serializedName\") {\n discriminatorName = discriminatorName.replace(/\\\\/gi, \"\");\n }\n const discriminatorValue = object[discriminatorName];\n const typeName = mapper.type.uberParent ?? mapper.type.className;\n\n if (typeof discriminatorValue === \"string\" && typeName) {\n const polymorphicMapper = getIndexDiscriminator(\n serializer.modelMappers.discriminators,\n discriminatorValue,\n typeName,\n );\n if (polymorphicMapper) {\n mapper = polymorphicMapper;\n }\n }\n }\n }\n return mapper;\n}\n\nfunction getPolymorphicDiscriminatorRecursively(\n serializer: Serializer,\n mapper: CompositeMapper,\n): PolymorphicDiscriminator | undefined {\n return (\n mapper.type.polymorphicDiscriminator ||\n getPolymorphicDiscriminatorSafely(serializer, mapper.type.uberParent) ||\n getPolymorphicDiscriminatorSafely(serializer, mapper.type.className)\n );\n}\n\nfunction getPolymorphicDiscriminatorSafely(\n serializer: Serializer,\n typeName?: string,\n): PolymorphicDiscriminator | undefined {\n return (\n typeName &&\n serializer.modelMappers[typeName] &&\n serializer.modelMappers[typeName].type.polymorphicDiscriminator\n );\n}\n\n/**\n * Known types of Mappers\n */\nexport const MapperTypeNames = {\n Base64Url: \"Base64Url\",\n Boolean: \"Boolean\",\n ByteArray: \"ByteArray\",\n Composite: \"Composite\",\n Date: \"Date\",\n DateTime: \"DateTime\",\n DateTimeRfc1123: \"DateTimeRfc1123\",\n Dictionary: \"Dictionary\",\n Enum: \"Enum\",\n Number: \"Number\",\n Object: \"Object\",\n Sequence: \"Sequence\",\n String: \"String\",\n Stream: \"Stream\",\n TimeSpan: \"TimeSpan\",\n UnixTime: \"UnixTime\",\n} as const;\n", "// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport { OperationRequest, OperationRequestInfo } from \"./interfaces.js\";\n\n// @ts-expect-error The recommended approach to sharing module state between ESM and CJS.\n// See https://github.com/isaacs/tshy/blob/main/README.md#module-local-state for additional information.\nimport { state as cjsState } from \"../commonjs/state.js\";\n\n/**\n * Defines the shared state between CJS and ESM by re-exporting the CJS state.\n */\nexport const state = cjsState as {\n operationRequestMap: WeakMap;\n};\n", "// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport {\n CompositeMapper,\n Mapper,\n OperationArguments,\n OperationParameter,\n OperationRequest,\n OperationRequestInfo,\n ParameterPath,\n} from \"./interfaces.js\";\n\nimport { state } from \"./state.js\";\n\n/**\n * @internal\n * Retrieves the value to use for a given operation argument\n * @param operationArguments - The arguments passed from the generated client\n * @param parameter - The parameter description\n * @param fallbackObject - If something isn't found in the arguments bag, look here.\n * Generally used to look at the service client properties.\n */\nexport function getOperationArgumentValueFromParameter(\n operationArguments: OperationArguments,\n parameter: OperationParameter,\n fallbackObject?: { [parameterName: string]: any },\n): any {\n let parameterPath = parameter.parameterPath;\n const parameterMapper = parameter.mapper;\n let value: any;\n if (typeof parameterPath === \"string\") {\n parameterPath = [parameterPath];\n }\n if (Array.isArray(parameterPath)) {\n if (parameterPath.length > 0) {\n if (parameterMapper.isConstant) {\n value = parameterMapper.defaultValue;\n } else {\n let propertySearchResult = getPropertyFromParameterPath(operationArguments, parameterPath);\n\n if (!propertySearchResult.propertyFound && fallbackObject) {\n propertySearchResult = getPropertyFromParameterPath(fallbackObject, parameterPath);\n }\n\n let useDefaultValue = false;\n if (!propertySearchResult.propertyFound) {\n useDefaultValue =\n parameterMapper.required ||\n (parameterPath[0] === \"options\" && parameterPath.length === 2);\n }\n value = useDefaultValue ? parameterMapper.defaultValue : propertySearchResult.propertyValue;\n }\n }\n } else {\n if (parameterMapper.required) {\n value = {};\n }\n\n for (const propertyName in parameterPath) {\n const propertyMapper: Mapper = (parameterMapper as CompositeMapper).type.modelProperties![\n propertyName\n ];\n const propertyPath: ParameterPath = parameterPath[propertyName];\n const propertyValue: any = getOperationArgumentValueFromParameter(\n operationArguments,\n {\n parameterPath: propertyPath,\n mapper: propertyMapper,\n },\n fallbackObject,\n );\n if (propertyValue !== undefined) {\n if (!value) {\n value = {};\n }\n value[propertyName] = propertyValue;\n }\n }\n }\n return value;\n}\n\ninterface PropertySearchResult {\n propertyValue?: any;\n propertyFound: boolean;\n}\n\nfunction getPropertyFromParameterPath(\n parent: { [parameterName: string]: any },\n parameterPath: string[],\n): PropertySearchResult {\n const result: PropertySearchResult = { propertyFound: false };\n let i = 0;\n for (; i < parameterPath.length; ++i) {\n const parameterPathPart: string = parameterPath[i];\n // Make sure to check inherited properties too, so don't use hasOwnProperty().\n if (parent && parameterPathPart in parent) {\n parent = parent[parameterPathPart];\n } else {\n break;\n }\n }\n if (i === parameterPath.length) {\n result.propertyValue = parent;\n result.propertyFound = true;\n }\n return result;\n}\n\nconst originalRequestSymbol = Symbol.for(\"@azure/core-client original request\");\n\nfunction hasOriginalRequest(\n request: OperationRequest,\n): request is OperationRequest & { [originalRequestSymbol]: OperationRequest } {\n return originalRequestSymbol in request;\n}\n\nexport function getOperationRequestInfo(request: OperationRequest): OperationRequestInfo {\n if (hasOriginalRequest(request)) {\n return getOperationRequestInfo(request[originalRequestSymbol]);\n }\n let info = state.operationRequestMap.get(request);\n\n if (!info) {\n info = {};\n state.operationRequestMap.set(request, info);\n }\n return info;\n}\n", "// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport {\n FullOperationResponse,\n OperationRequest,\n OperationResponseMap,\n OperationSpec,\n RequiredSerializerOptions,\n SerializerOptions,\n XML_CHARKEY,\n XmlOptions,\n} from \"./interfaces.js\";\nimport {\n PipelinePolicy,\n PipelineRequest,\n PipelineResponse,\n RestError,\n SendRequest,\n} from \"@azure/core-rest-pipeline\";\nimport { MapperTypeNames } from \"./serializer.js\";\nimport { getOperationRequestInfo } from \"./operationHelpers.js\";\n\nconst defaultJsonContentTypes = [\"application/json\", \"text/json\"];\nconst defaultXmlContentTypes = [\"application/xml\", \"application/atom+xml\"];\n\n/**\n * The programmatic identifier of the deserializationPolicy.\n */\nexport const deserializationPolicyName = \"deserializationPolicy\";\n\n/**\n * Options to configure API response deserialization.\n */\nexport interface DeserializationPolicyOptions {\n /**\n * Configures the expected content types for the deserialization of\n * JSON and XML response bodies.\n */\n expectedContentTypes?: DeserializationContentTypes;\n\n /**\n * A function that is able to parse XML. Required for XML support.\n */\n parseXML?: (str: string, opts?: XmlOptions) => Promise;\n\n /**\n * Configures behavior of xml parser and builder.\n */\n serializerOptions?: SerializerOptions;\n}\n\n/**\n * The content-types that will indicate that an operation response should be deserialized in a\n * particular way.\n */\nexport interface DeserializationContentTypes {\n /**\n * The content-types that indicate that an operation response should be deserialized as JSON.\n * Defaults to [ \"application/json\", \"text/json\" ].\n */\n json?: string[];\n\n /**\n * The content-types that indicate that an operation response should be deserialized as XML.\n * Defaults to [ \"application/xml\", \"application/atom+xml\" ].\n */\n xml?: string[];\n}\n\n/**\n * This policy handles parsing out responses according to OperationSpecs on the request.\n */\nexport function deserializationPolicy(options: DeserializationPolicyOptions = {}): PipelinePolicy {\n const jsonContentTypes = options.expectedContentTypes?.json ?? defaultJsonContentTypes;\n const xmlContentTypes = options.expectedContentTypes?.xml ?? defaultXmlContentTypes;\n const parseXML = options.parseXML;\n const serializerOptions = options.serializerOptions;\n const updatedOptions: RequiredSerializerOptions = {\n xml: {\n rootName: serializerOptions?.xml.rootName ?? \"\",\n includeRoot: serializerOptions?.xml.includeRoot ?? false,\n xmlCharKey: serializerOptions?.xml.xmlCharKey ?? XML_CHARKEY,\n },\n };\n\n return {\n name: deserializationPolicyName,\n async sendRequest(request: PipelineRequest, next: SendRequest): Promise {\n const response = await next(request);\n return deserializeResponseBody(\n jsonContentTypes,\n xmlContentTypes,\n response,\n updatedOptions,\n parseXML,\n );\n },\n };\n}\n\nfunction getOperationResponseMap(\n parsedResponse: PipelineResponse,\n): undefined | OperationResponseMap {\n let result: OperationResponseMap | undefined;\n const request: OperationRequest = parsedResponse.request;\n const operationInfo = getOperationRequestInfo(request);\n const operationSpec = operationInfo?.operationSpec;\n if (operationSpec) {\n if (!operationInfo?.operationResponseGetter) {\n result = operationSpec.responses[parsedResponse.status];\n } else {\n result = operationInfo?.operationResponseGetter(operationSpec, parsedResponse);\n }\n }\n return result;\n}\n\nfunction shouldDeserializeResponse(parsedResponse: PipelineResponse): boolean {\n const request: OperationRequest = parsedResponse.request;\n const operationInfo = getOperationRequestInfo(request);\n const shouldDeserialize = operationInfo?.shouldDeserialize;\n let result: boolean;\n if (shouldDeserialize === undefined) {\n result = true;\n } else if (typeof shouldDeserialize === \"boolean\") {\n result = shouldDeserialize;\n } else {\n result = shouldDeserialize(parsedResponse);\n }\n return result;\n}\n\nasync function deserializeResponseBody(\n jsonContentTypes: string[],\n xmlContentTypes: string[],\n response: PipelineResponse,\n options: RequiredSerializerOptions,\n parseXML?: (str: string, opts?: XmlOptions) => Promise,\n): Promise {\n const parsedResponse = await parse(\n jsonContentTypes,\n xmlContentTypes,\n response,\n options,\n parseXML,\n );\n if (!shouldDeserializeResponse(parsedResponse)) {\n return parsedResponse;\n }\n\n const operationInfo = getOperationRequestInfo(parsedResponse.request);\n const operationSpec = operationInfo?.operationSpec;\n if (!operationSpec || !operationSpec.responses) {\n return parsedResponse;\n }\n\n const responseSpec = getOperationResponseMap(parsedResponse);\n const { error, shouldReturnResponse } = handleErrorResponse(\n parsedResponse,\n operationSpec,\n responseSpec,\n options,\n );\n if (error) {\n throw error;\n } else if (shouldReturnResponse) {\n return parsedResponse;\n }\n\n // An operation response spec does exist for current status code, so\n // use it to deserialize the response.\n if (responseSpec) {\n if (responseSpec.bodyMapper) {\n let valueToDeserialize: any = parsedResponse.parsedBody;\n if (operationSpec.isXML && responseSpec.bodyMapper.type.name === MapperTypeNames.Sequence) {\n valueToDeserialize =\n typeof valueToDeserialize === \"object\"\n ? valueToDeserialize[responseSpec.bodyMapper.xmlElementName!]\n : [];\n }\n try {\n parsedResponse.parsedBody = operationSpec.serializer.deserialize(\n responseSpec.bodyMapper,\n valueToDeserialize,\n \"operationRes.parsedBody\",\n options,\n );\n } catch (deserializeError: any) {\n const restError = new RestError(\n `Error ${deserializeError} occurred in deserializing the responseBody - ${parsedResponse.bodyAsText}`,\n {\n statusCode: parsedResponse.status,\n request: parsedResponse.request,\n response: parsedResponse,\n },\n );\n throw restError;\n }\n } else if (operationSpec.httpMethod === \"HEAD\") {\n // head methods never have a body, but we return a boolean to indicate presence/absence of the resource\n parsedResponse.parsedBody = response.status >= 200 && response.status < 300;\n }\n\n if (responseSpec.headersMapper) {\n parsedResponse.parsedHeaders = operationSpec.serializer.deserialize(\n responseSpec.headersMapper,\n parsedResponse.headers.toJSON(),\n \"operationRes.parsedHeaders\",\n { xml: {}, ignoreUnknownProperties: true },\n );\n }\n }\n\n return parsedResponse;\n}\n\nfunction isOperationSpecEmpty(operationSpec: OperationSpec): boolean {\n const expectedStatusCodes = Object.keys(operationSpec.responses);\n return (\n expectedStatusCodes.length === 0 ||\n (expectedStatusCodes.length === 1 && expectedStatusCodes[0] === \"default\")\n );\n}\n\nfunction handleErrorResponse(\n parsedResponse: FullOperationResponse,\n operationSpec: OperationSpec,\n responseSpec: OperationResponseMap | undefined,\n options: RequiredSerializerOptions,\n): { error: RestError | null; shouldReturnResponse: boolean } {\n const isSuccessByStatus = 200 <= parsedResponse.status && parsedResponse.status < 300;\n const isExpectedStatusCode: boolean = isOperationSpecEmpty(operationSpec)\n ? isSuccessByStatus\n : !!responseSpec;\n\n if (isExpectedStatusCode) {\n if (responseSpec) {\n if (!responseSpec.isError) {\n return { error: null, shouldReturnResponse: false };\n }\n } else {\n return { error: null, shouldReturnResponse: false };\n }\n }\n\n const errorResponseSpec = responseSpec ?? operationSpec.responses.default;\n\n const initialErrorMessage = parsedResponse.request.streamResponseStatusCodes?.has(\n parsedResponse.status,\n )\n ? `Unexpected status code: ${parsedResponse.status}`\n : (parsedResponse.bodyAsText as string);\n\n const error = new RestError(initialErrorMessage, {\n statusCode: parsedResponse.status,\n request: parsedResponse.request,\n response: parsedResponse,\n });\n\n // If the item failed but there's no error spec or default spec to deserialize the error,\n // we should fail so we just throw the parsed response\n if (!errorResponseSpec) {\n throw error;\n }\n\n const defaultBodyMapper = errorResponseSpec.bodyMapper;\n const defaultHeadersMapper = errorResponseSpec.headersMapper;\n\n try {\n // If error response has a body, try to deserialize it using default body mapper.\n // Then try to extract error code & message from it\n if (parsedResponse.parsedBody) {\n const parsedBody = parsedResponse.parsedBody;\n let deserializedError;\n\n if (defaultBodyMapper) {\n let valueToDeserialize: any = parsedBody;\n if (operationSpec.isXML && defaultBodyMapper.type.name === MapperTypeNames.Sequence) {\n valueToDeserialize = [];\n const elementName = defaultBodyMapper.xmlElementName;\n if (typeof parsedBody === \"object\" && elementName) {\n valueToDeserialize = parsedBody[elementName];\n }\n }\n deserializedError = operationSpec.serializer.deserialize(\n defaultBodyMapper,\n valueToDeserialize,\n \"error.response.parsedBody\",\n options,\n );\n }\n\n const internalError: any = parsedBody.error || deserializedError || parsedBody;\n error.code = internalError.code;\n if (internalError.message) {\n error.message = internalError.message;\n }\n\n if (defaultBodyMapper) {\n (error.response! as FullOperationResponse).parsedBody = deserializedError;\n }\n }\n\n // If error response has headers, try to deserialize it using default header mapper\n if (parsedResponse.headers && defaultHeadersMapper) {\n (error.response! as FullOperationResponse).parsedHeaders =\n operationSpec.serializer.deserialize(\n defaultHeadersMapper,\n parsedResponse.headers.toJSON(),\n \"operationRes.parsedHeaders\",\n );\n }\n } catch (defaultError: any) {\n error.message = `Error \"${defaultError.message}\" occurred in deserializing the responseBody - \"${parsedResponse.bodyAsText}\" for the default response.`;\n }\n\n return { error, shouldReturnResponse: false };\n}\n\nasync function parse(\n jsonContentTypes: string[],\n xmlContentTypes: string[],\n operationResponse: FullOperationResponse,\n opts: RequiredSerializerOptions,\n parseXML?: (str: string, opts?: XmlOptions) => Promise,\n): Promise {\n if (\n !operationResponse.request.streamResponseStatusCodes?.has(operationResponse.status) &&\n operationResponse.bodyAsText\n ) {\n const text = operationResponse.bodyAsText;\n const contentType: string = operationResponse.headers.get(\"Content-Type\") || \"\";\n const contentComponents: string[] = !contentType\n ? []\n : contentType.split(\";\").map((component) => component.toLowerCase());\n\n try {\n if (\n contentComponents.length === 0 ||\n contentComponents.some((component) => jsonContentTypes.indexOf(component) !== -1)\n ) {\n operationResponse.parsedBody = JSON.parse(text);\n return operationResponse;\n } else if (contentComponents.some((component) => xmlContentTypes.indexOf(component) !== -1)) {\n if (!parseXML) {\n throw new Error(\"Parsing XML not supported.\");\n }\n const body = await parseXML(text, opts.xml);\n operationResponse.parsedBody = body;\n return operationResponse;\n }\n } catch (err: any) {\n const msg = `Error \"${err}\" occurred while parsing the response body - ${operationResponse.bodyAsText}.`;\n const errCode = err.code || RestError.PARSE_ERROR;\n const e = new RestError(msg, {\n code: errCode,\n statusCode: operationResponse.status,\n request: operationResponse.request,\n response: operationResponse,\n });\n throw e;\n }\n }\n\n return operationResponse;\n}\n", "// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport { OperationParameter, OperationSpec } from \"./interfaces.js\";\nimport { MapperTypeNames } from \"./serializer.js\";\n\n/**\n * Gets the list of status codes for streaming responses.\n * @internal\n */\nexport function getStreamingResponseStatusCodes(operationSpec: OperationSpec): Set {\n const result = new Set();\n for (const statusCode in operationSpec.responses) {\n const operationResponse = operationSpec.responses[statusCode];\n if (\n operationResponse.bodyMapper &&\n operationResponse.bodyMapper.type.name === MapperTypeNames.Stream\n ) {\n result.add(Number(statusCode));\n }\n }\n return result;\n}\n\n/**\n * Get the path to this parameter's value as a dotted string (a.b.c).\n * @param parameter - The parameter to get the path string for.\n * @returns The path to this parameter's value as a dotted string.\n * @internal\n */\nexport function getPathStringFromParameter(parameter: OperationParameter): string {\n const { parameterPath, mapper } = parameter;\n let result: string;\n if (typeof parameterPath === \"string\") {\n result = parameterPath;\n } else if (Array.isArray(parameterPath)) {\n result = parameterPath.join(\".\");\n } else {\n result = mapper.serializedName!;\n }\n return result;\n}\n", "// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport {\n DictionaryMapper,\n OperationArguments,\n OperationRequest,\n OperationSpec,\n RequiredSerializerOptions,\n SerializerOptions,\n XML_ATTRKEY,\n XML_CHARKEY,\n XmlOptions,\n} from \"./interfaces.js\";\nimport { PipelinePolicy, PipelineResponse, SendRequest } from \"@azure/core-rest-pipeline\";\nimport {\n getOperationArgumentValueFromParameter,\n getOperationRequestInfo,\n} from \"./operationHelpers.js\";\nimport { MapperTypeNames } from \"./serializer.js\";\nimport { getPathStringFromParameter } from \"./interfaceHelpers.js\";\n\n/**\n * The programmatic identifier of the serializationPolicy.\n */\nexport const serializationPolicyName = \"serializationPolicy\";\n\n/**\n * Options to configure API request serialization.\n */\nexport interface SerializationPolicyOptions {\n /**\n * A function that is able to write XML. Required for XML support.\n */\n stringifyXML?: (obj: any, opts?: XmlOptions) => string;\n\n /**\n * Configures behavior of xml parser and builder.\n */\n serializerOptions?: SerializerOptions;\n}\n\n/**\n * This policy handles assembling the request body and headers using\n * an OperationSpec and OperationArguments on the request.\n */\nexport function serializationPolicy(options: SerializationPolicyOptions = {}): PipelinePolicy {\n const stringifyXML = options.stringifyXML;\n\n return {\n name: serializationPolicyName,\n async sendRequest(request: OperationRequest, next: SendRequest): Promise {\n const operationInfo = getOperationRequestInfo(request);\n const operationSpec = operationInfo?.operationSpec;\n const operationArguments = operationInfo?.operationArguments;\n if (operationSpec && operationArguments) {\n serializeHeaders(request, operationArguments, operationSpec);\n serializeRequestBody(request, operationArguments, operationSpec, stringifyXML);\n }\n return next(request);\n },\n };\n}\n\n/**\n * @internal\n */\nexport function serializeHeaders(\n request: OperationRequest,\n operationArguments: OperationArguments,\n operationSpec: OperationSpec,\n): void {\n if (operationSpec.headerParameters) {\n for (const headerParameter of operationSpec.headerParameters) {\n let headerValue = getOperationArgumentValueFromParameter(operationArguments, headerParameter);\n if ((headerValue !== null && headerValue !== undefined) || headerParameter.mapper.required) {\n headerValue = operationSpec.serializer.serialize(\n headerParameter.mapper,\n headerValue,\n getPathStringFromParameter(headerParameter),\n );\n const headerCollectionPrefix = (headerParameter.mapper as DictionaryMapper)\n .headerCollectionPrefix;\n if (headerCollectionPrefix) {\n for (const key of Object.keys(headerValue)) {\n request.headers.set(headerCollectionPrefix + key, headerValue[key]);\n }\n } else {\n request.headers.set(\n headerParameter.mapper.serializedName || getPathStringFromParameter(headerParameter),\n headerValue,\n );\n }\n }\n }\n }\n const customHeaders = operationArguments.options?.requestOptions?.customHeaders;\n if (customHeaders) {\n for (const customHeaderName of Object.keys(customHeaders)) {\n request.headers.set(customHeaderName, customHeaders[customHeaderName]);\n }\n }\n}\n\n/**\n * @internal\n */\nexport function serializeRequestBody(\n request: OperationRequest,\n operationArguments: OperationArguments,\n operationSpec: OperationSpec,\n stringifyXML: (obj: any, opts?: XmlOptions) => string = function () {\n throw new Error(\"XML serialization unsupported!\");\n },\n): void {\n const serializerOptions = operationArguments.options?.serializerOptions;\n const updatedOptions: RequiredSerializerOptions = {\n xml: {\n rootName: serializerOptions?.xml.rootName ?? \"\",\n includeRoot: serializerOptions?.xml.includeRoot ?? false,\n xmlCharKey: serializerOptions?.xml.xmlCharKey ?? XML_CHARKEY,\n },\n };\n\n const xmlCharKey = updatedOptions.xml.xmlCharKey;\n if (operationSpec.requestBody && operationSpec.requestBody.mapper) {\n request.body = getOperationArgumentValueFromParameter(\n operationArguments,\n operationSpec.requestBody,\n );\n\n const bodyMapper = operationSpec.requestBody.mapper;\n const {\n required,\n serializedName,\n xmlName,\n xmlElementName,\n xmlNamespace,\n xmlNamespacePrefix,\n nullable,\n } = bodyMapper;\n const typeName = bodyMapper.type.name;\n\n try {\n if (\n (request.body !== undefined && request.body !== null) ||\n (nullable && request.body === null) ||\n required\n ) {\n const requestBodyParameterPathString: string = getPathStringFromParameter(\n operationSpec.requestBody,\n );\n request.body = operationSpec.serializer.serialize(\n bodyMapper,\n request.body,\n requestBodyParameterPathString,\n updatedOptions,\n );\n\n const isStream = typeName === MapperTypeNames.Stream;\n\n if (operationSpec.isXML) {\n const xmlnsKey = xmlNamespacePrefix ? `xmlns:${xmlNamespacePrefix}` : \"xmlns\";\n const value = getXmlValueWithNamespace(\n xmlNamespace,\n xmlnsKey,\n typeName,\n request.body,\n updatedOptions,\n );\n\n if (typeName === MapperTypeNames.Sequence) {\n request.body = stringifyXML(\n prepareXMLRootList(\n value,\n xmlElementName || xmlName || serializedName!,\n xmlnsKey,\n xmlNamespace,\n ),\n { rootName: xmlName || serializedName, xmlCharKey },\n );\n } else if (!isStream) {\n request.body = stringifyXML(value, {\n rootName: xmlName || serializedName,\n xmlCharKey,\n });\n }\n } else if (\n typeName === MapperTypeNames.String &&\n (operationSpec.contentType?.match(\"text/plain\") || operationSpec.mediaType === \"text\")\n ) {\n // the String serializer has validated that request body is a string\n // so just send the string.\n return;\n } else if (!isStream) {\n request.body = JSON.stringify(request.body);\n }\n }\n } catch (error: any) {\n throw new Error(\n `Error \"${error.message}\" occurred in serializing the payload - ${JSON.stringify(\n serializedName,\n undefined,\n \" \",\n )}.`,\n );\n }\n } else if (operationSpec.formDataParameters && operationSpec.formDataParameters.length > 0) {\n request.formData = {};\n for (const formDataParameter of operationSpec.formDataParameters) {\n const formDataParameterValue = getOperationArgumentValueFromParameter(\n operationArguments,\n formDataParameter,\n );\n if (formDataParameterValue !== undefined && formDataParameterValue !== null) {\n const formDataParameterPropertyName: string =\n formDataParameter.mapper.serializedName || getPathStringFromParameter(formDataParameter);\n request.formData[formDataParameterPropertyName] = operationSpec.serializer.serialize(\n formDataParameter.mapper,\n formDataParameterValue,\n getPathStringFromParameter(formDataParameter),\n updatedOptions,\n );\n }\n }\n }\n}\n\n/**\n * Adds an xml namespace to the xml serialized object if needed, otherwise it just returns the value itself\n */\nfunction getXmlValueWithNamespace(\n xmlNamespace: string | undefined,\n xmlnsKey: string,\n typeName: string,\n serializedValue: any,\n options: RequiredSerializerOptions,\n): any {\n // Composite and Sequence schemas already got their root namespace set during serialization\n // We just need to add xmlns to the other schema types\n if (xmlNamespace && ![\"Composite\", \"Sequence\", \"Dictionary\"].includes(typeName)) {\n const result: any = {};\n result[options.xml.xmlCharKey] = serializedValue;\n result[XML_ATTRKEY] = { [xmlnsKey]: xmlNamespace };\n return result;\n }\n\n return serializedValue;\n}\n\nfunction prepareXMLRootList(\n obj: any,\n elementName: string,\n xmlNamespaceKey?: string,\n xmlNamespace?: string,\n): { [key: string]: any[] } {\n if (!Array.isArray(obj)) {\n obj = [obj];\n }\n if (!xmlNamespaceKey || !xmlNamespace) {\n return { [elementName]: obj };\n }\n\n const result = { [elementName]: obj };\n result[XML_ATTRKEY] = { [xmlNamespaceKey]: xmlNamespace };\n return result;\n}\n", "// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport { DeserializationPolicyOptions, deserializationPolicy } from \"./deserializationPolicy.js\";\nimport {\n InternalPipelineOptions,\n Pipeline,\n bearerTokenAuthenticationPolicy,\n createPipelineFromOptions,\n} from \"@azure/core-rest-pipeline\";\nimport { SerializationPolicyOptions, serializationPolicy } from \"./serializationPolicy.js\";\nimport { TokenCredential } from \"@azure/core-auth\";\n\n/**\n * Options for creating a Pipeline to use with ServiceClient.\n * Mostly for customizing the auth policy (if using token auth) or\n * the deserialization options when using XML.\n */\nexport interface InternalClientPipelineOptions extends InternalPipelineOptions {\n /**\n * Options to customize bearerTokenAuthenticationPolicy.\n */\n credentialOptions?: { credentialScopes: string | string[]; credential: TokenCredential };\n /**\n * Options to customize deserializationPolicy.\n */\n deserializationOptions?: DeserializationPolicyOptions;\n /**\n * Options to customize serializationPolicy.\n */\n serializationOptions?: SerializationPolicyOptions;\n}\n\n/**\n * Creates a new Pipeline for use with a Service Client.\n * Adds in deserializationPolicy by default.\n * Also adds in bearerTokenAuthenticationPolicy if passed a TokenCredential.\n * @param options - Options to customize the created pipeline.\n */\nexport function createClientPipeline(options: InternalClientPipelineOptions = {}): Pipeline {\n const pipeline = createPipelineFromOptions(options ?? {});\n if (options.credentialOptions) {\n pipeline.addPolicy(\n bearerTokenAuthenticationPolicy({\n credential: options.credentialOptions.credential,\n scopes: options.credentialOptions.credentialScopes,\n }),\n );\n }\n\n pipeline.addPolicy(serializationPolicy(options.serializationOptions), { phase: \"Serialize\" });\n pipeline.addPolicy(deserializationPolicy(options.deserializationOptions), {\n phase: \"Deserialize\",\n });\n\n return pipeline;\n}\n", "// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport { HttpClient, createDefaultHttpClient } from \"@azure/core-rest-pipeline\";\n\nlet cachedHttpClient: HttpClient | undefined;\n\nexport function getCachedDefaultHttpClient(): HttpClient {\n if (!cachedHttpClient) {\n cachedHttpClient = createDefaultHttpClient();\n }\n\n return cachedHttpClient;\n}\n", "// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport { OperationArguments, OperationSpec, QueryCollectionFormat } from \"./interfaces.js\";\nimport { getOperationArgumentValueFromParameter } from \"./operationHelpers.js\";\nimport { getPathStringFromParameter } from \"./interfaceHelpers.js\";\n\nconst CollectionFormatToDelimiterMap: { [key in QueryCollectionFormat]: string } = {\n CSV: \",\",\n SSV: \" \",\n Multi: \"Multi\",\n TSV: \"\\t\",\n Pipes: \"|\",\n};\n\nexport function getRequestUrl(\n baseUri: string,\n operationSpec: OperationSpec,\n operationArguments: OperationArguments,\n fallbackObject: { [parameterName: string]: any },\n): string {\n const urlReplacements = calculateUrlReplacements(\n operationSpec,\n operationArguments,\n fallbackObject,\n );\n\n let isAbsolutePath = false;\n\n let requestUrl = replaceAll(baseUri, urlReplacements);\n if (operationSpec.path) {\n let path = replaceAll(operationSpec.path, urlReplacements);\n // QUIRK: sometimes we get a path component like /{nextLink}\n // which may be a fully formed URL with a leading /. In that case, we should\n // remove the leading /\n if (operationSpec.path === \"/{nextLink}\" && path.startsWith(\"/\")) {\n path = path.substring(1);\n }\n // QUIRK: sometimes we get a path component like {nextLink}\n // which may be a fully formed URL. In that case, we should\n // ignore the baseUri.\n if (isAbsoluteUrl(path)) {\n requestUrl = path;\n isAbsolutePath = true;\n } else {\n requestUrl = appendPath(requestUrl, path);\n }\n }\n\n const { queryParams, sequenceParams } = calculateQueryParameters(\n operationSpec,\n operationArguments,\n fallbackObject,\n );\n /**\n * Notice that this call sets the `noOverwrite` parameter to true if the `requestUrl`\n * is an absolute path. This ensures that existing query parameter values in `requestUrl`\n * do not get overwritten. On the other hand when `requestUrl` is not absolute path, it\n * is still being built so there is nothing to overwrite.\n */\n requestUrl = appendQueryParams(requestUrl, queryParams, sequenceParams, isAbsolutePath);\n\n return requestUrl;\n}\n\nfunction replaceAll(input: string, replacements: Map): string {\n let result = input;\n for (const [searchValue, replaceValue] of replacements) {\n result = result.split(searchValue).join(replaceValue);\n }\n return result;\n}\n\nfunction calculateUrlReplacements(\n operationSpec: OperationSpec,\n operationArguments: OperationArguments,\n fallbackObject: { [parameterName: string]: any },\n): Map {\n const result = new Map();\n if (operationSpec.urlParameters?.length) {\n for (const urlParameter of operationSpec.urlParameters) {\n let urlParameterValue: string = getOperationArgumentValueFromParameter(\n operationArguments,\n urlParameter,\n fallbackObject,\n );\n const parameterPathString = getPathStringFromParameter(urlParameter);\n urlParameterValue = operationSpec.serializer.serialize(\n urlParameter.mapper,\n urlParameterValue,\n parameterPathString,\n );\n if (!urlParameter.skipEncoding) {\n urlParameterValue = encodeURIComponent(urlParameterValue);\n }\n result.set(\n `{${urlParameter.mapper.serializedName || parameterPathString}}`,\n urlParameterValue,\n );\n }\n }\n return result;\n}\n\nfunction isAbsoluteUrl(url: string): boolean {\n return url.includes(\"://\");\n}\n\nfunction appendPath(url: string, pathToAppend?: string): string {\n if (!pathToAppend) {\n return url;\n }\n\n const parsedUrl = new URL(url);\n let newPath = parsedUrl.pathname;\n\n if (!newPath.endsWith(\"/\")) {\n newPath = `${newPath}/`;\n }\n\n if (pathToAppend.startsWith(\"/\")) {\n pathToAppend = pathToAppend.substring(1);\n }\n\n const searchStart = pathToAppend.indexOf(\"?\");\n if (searchStart !== -1) {\n const path = pathToAppend.substring(0, searchStart);\n const search = pathToAppend.substring(searchStart + 1);\n newPath = newPath + path;\n if (search) {\n parsedUrl.search = parsedUrl.search ? `${parsedUrl.search}&${search}` : search;\n }\n } else {\n newPath = newPath + pathToAppend;\n }\n\n parsedUrl.pathname = newPath;\n\n return parsedUrl.toString();\n}\n\nfunction calculateQueryParameters(\n operationSpec: OperationSpec,\n operationArguments: OperationArguments,\n fallbackObject: { [parameterName: string]: any },\n): {\n queryParams: Map;\n sequenceParams: Set;\n} {\n const result = new Map();\n const sequenceParams: Set = new Set();\n\n if (operationSpec.queryParameters?.length) {\n for (const queryParameter of operationSpec.queryParameters) {\n if (queryParameter.mapper.type.name === \"Sequence\" && queryParameter.mapper.serializedName) {\n sequenceParams.add(queryParameter.mapper.serializedName);\n }\n let queryParameterValue: string | string[] = getOperationArgumentValueFromParameter(\n operationArguments,\n queryParameter,\n fallbackObject,\n );\n if (\n (queryParameterValue !== undefined && queryParameterValue !== null) ||\n queryParameter.mapper.required\n ) {\n queryParameterValue = operationSpec.serializer.serialize(\n queryParameter.mapper,\n queryParameterValue,\n getPathStringFromParameter(queryParameter),\n );\n\n const delimiter = queryParameter.collectionFormat\n ? CollectionFormatToDelimiterMap[queryParameter.collectionFormat]\n : \"\";\n if (Array.isArray(queryParameterValue)) {\n // replace null and undefined\n queryParameterValue = queryParameterValue.map((item) => {\n if (item === null || item === undefined) {\n return \"\";\n }\n\n return item;\n });\n }\n if (queryParameter.collectionFormat === \"Multi\" && queryParameterValue.length === 0) {\n continue;\n } else if (\n Array.isArray(queryParameterValue) &&\n (queryParameter.collectionFormat === \"SSV\" || queryParameter.collectionFormat === \"TSV\")\n ) {\n queryParameterValue = queryParameterValue.join(delimiter);\n }\n if (!queryParameter.skipEncoding) {\n if (Array.isArray(queryParameterValue)) {\n queryParameterValue = queryParameterValue.map((item: string) => {\n return encodeURIComponent(item);\n });\n } else {\n queryParameterValue = encodeURIComponent(queryParameterValue);\n }\n }\n\n // Join pipes and CSV *after* encoding, or the server will be upset.\n if (\n Array.isArray(queryParameterValue) &&\n (queryParameter.collectionFormat === \"CSV\" || queryParameter.collectionFormat === \"Pipes\")\n ) {\n queryParameterValue = queryParameterValue.join(delimiter);\n }\n\n result.set(\n queryParameter.mapper.serializedName || getPathStringFromParameter(queryParameter),\n queryParameterValue,\n );\n }\n }\n }\n return {\n queryParams: result,\n sequenceParams,\n };\n}\n\nfunction simpleParseQueryParams(queryString: string): Map {\n const result: Map = new Map<\n string,\n string | string[] | undefined\n >();\n if (!queryString || queryString[0] !== \"?\") {\n return result;\n }\n\n // remove the leading ?\n queryString = queryString.slice(1);\n const pairs = queryString.split(\"&\");\n\n for (const pair of pairs) {\n const [name, value] = pair.split(\"=\", 2);\n const existingValue = result.get(name);\n if (existingValue) {\n if (Array.isArray(existingValue)) {\n existingValue.push(value);\n } else {\n result.set(name, [existingValue, value]);\n }\n } else {\n result.set(name, value);\n }\n }\n\n return result;\n}\n\n/** @internal */\nexport function appendQueryParams(\n url: string,\n queryParams: Map,\n sequenceParams: Set,\n noOverwrite: boolean = false,\n): string {\n if (queryParams.size === 0) {\n return url;\n }\n\n const parsedUrl = new URL(url);\n\n // QUIRK: parsedUrl.searchParams will have their name/value pairs decoded, which\n // can change their meaning to the server, such as in the case of a SAS signature.\n // To avoid accidentally un-encoding a query param, we parse the key/values ourselves\n const combinedParams = simpleParseQueryParams(parsedUrl.search);\n\n for (const [name, value] of queryParams) {\n const existingValue = combinedParams.get(name);\n if (Array.isArray(existingValue)) {\n if (Array.isArray(value)) {\n existingValue.push(...value);\n const valueSet = new Set(existingValue);\n combinedParams.set(name, Array.from(valueSet));\n } else {\n existingValue.push(value);\n }\n } else if (existingValue) {\n if (Array.isArray(value)) {\n value.unshift(existingValue);\n } else if (sequenceParams.has(name)) {\n combinedParams.set(name, [existingValue, value]);\n }\n if (!noOverwrite) {\n combinedParams.set(name, value);\n }\n } else {\n combinedParams.set(name, value);\n }\n }\n\n const searchPieces: string[] = [];\n for (const [name, value] of combinedParams) {\n if (typeof value === \"string\") {\n searchPieces.push(`${name}=${value}`);\n } else if (Array.isArray(value)) {\n // QUIRK: If we get an array of values, include multiple key/value pairs\n for (const subValue of value) {\n searchPieces.push(`${name}=${subValue}`);\n }\n } else {\n searchPieces.push(`${name}=${value}`);\n }\n }\n\n // QUIRK: we have to set search manually as searchParams will encode comma when it shouldn't.\n parsedUrl.search = searchPieces.length ? `?${searchPieces.join(\"&\")}` : \"\";\n return parsedUrl.toString();\n}\n", "// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport { createClientLogger } from \"@azure/logger\";\nexport const logger = createClientLogger(\"core-client\");\n", "// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport {\n CommonClientOptions,\n OperationArguments,\n OperationRequest,\n OperationSpec,\n} from \"./interfaces.js\";\nimport {\n HttpClient,\n Pipeline,\n PipelineRequest,\n PipelineResponse,\n createPipelineRequest,\n} from \"@azure/core-rest-pipeline\";\nimport { TokenCredential } from \"@azure/core-auth\";\nimport { createClientPipeline } from \"./pipeline.js\";\nimport { flattenResponse } from \"./utils.js\";\nimport { getCachedDefaultHttpClient } from \"./httpClientCache.js\";\nimport { getOperationRequestInfo } from \"./operationHelpers.js\";\nimport { getRequestUrl } from \"./urlHelpers.js\";\nimport { getStreamingResponseStatusCodes } from \"./interfaceHelpers.js\";\nimport { logger } from \"./log.js\";\n\n/**\n * Options to be provided while creating the client.\n */\nexport interface ServiceClientOptions extends CommonClientOptions {\n /**\n * If specified, this is the base URI that requests will be made against for this ServiceClient.\n * If it is not specified, then all OperationSpecs must contain a baseUrl property.\n * @deprecated This property is deprecated and will be removed soon, please use endpoint instead\n */\n baseUri?: string;\n /**\n * If specified, this is the endpoint that requests will be made against for this ServiceClient.\n * If it is not specified, then all OperationSpecs must contain a baseUrl property.\n * to encourage customer to use endpoint, we mark the baseUri as deprecated.\n */\n endpoint?: string;\n /**\n * If specified, will be used to build the BearerTokenAuthenticationPolicy.\n */\n credentialScopes?: string | string[];\n /**\n * The default request content type for the service.\n * Used if no requestContentType is present on an OperationSpec.\n */\n requestContentType?: string;\n /**\n * Credential used to authenticate the request.\n */\n credential?: TokenCredential;\n /**\n * A customized pipeline to use, otherwise a default one will be created.\n */\n pipeline?: Pipeline;\n}\n\n/**\n * Initializes a new instance of the ServiceClient.\n */\nexport class ServiceClient {\n /**\n * If specified, this is the base URI that requests will be made against for this ServiceClient.\n * If it is not specified, then all OperationSpecs must contain a baseUrl property.\n */\n private readonly _endpoint?: string;\n\n /**\n * The default request content type for the service.\n * Used if no requestContentType is present on an OperationSpec.\n */\n private readonly _requestContentType?: string;\n\n /**\n * Set to true if the request is sent over HTTP instead of HTTPS\n */\n private readonly _allowInsecureConnection?: boolean;\n\n /**\n * The HTTP client that will be used to send requests.\n */\n private readonly _httpClient: HttpClient;\n\n /**\n * The pipeline used by this client to make requests\n */\n public readonly pipeline: Pipeline;\n\n /**\n * The ServiceClient constructor\n * @param credential - The credentials used for authentication with the service.\n * @param options - The service client options that govern the behavior of the client.\n */\n constructor(options: ServiceClientOptions = {}) {\n this._requestContentType = options.requestContentType;\n this._endpoint = options.endpoint ?? options.baseUri;\n if (options.baseUri) {\n logger.warning(\n \"The baseUri option for SDK Clients has been deprecated, please use endpoint instead.\",\n );\n }\n this._allowInsecureConnection = options.allowInsecureConnection;\n this._httpClient = options.httpClient || getCachedDefaultHttpClient();\n\n this.pipeline = options.pipeline || createDefaultPipeline(options);\n if (options.additionalPolicies?.length) {\n for (const { policy, position } of options.additionalPolicies) {\n // Sign happens after Retry and is commonly needed to occur\n // before policies that intercept post-retry.\n const afterPhase = position === \"perRetry\" ? \"Sign\" : undefined;\n this.pipeline.addPolicy(policy, {\n afterPhase,\n });\n }\n }\n }\n\n /**\n * Send the provided httpRequest.\n */\n async sendRequest(request: PipelineRequest): Promise {\n return this.pipeline.sendRequest(this._httpClient, request);\n }\n\n /**\n * Send an HTTP request that is populated using the provided OperationSpec.\n * @typeParam T - The typed result of the request, based on the OperationSpec.\n * @param operationArguments - The arguments that the HTTP request's templated values will be populated from.\n * @param operationSpec - The OperationSpec to use to populate the httpRequest.\n */\n async sendOperationRequest(\n operationArguments: OperationArguments,\n operationSpec: OperationSpec,\n ): Promise {\n const endpoint: string | undefined = operationSpec.baseUrl || this._endpoint;\n if (!endpoint) {\n throw new Error(\n \"If operationSpec.baseUrl is not specified, then the ServiceClient must have a endpoint string property that contains the base URL to use.\",\n );\n }\n\n // Templatized URLs sometimes reference properties on the ServiceClient child class,\n // so we have to pass `this` below in order to search these properties if they're\n // not part of OperationArguments\n const url = getRequestUrl(endpoint, operationSpec, operationArguments, this);\n\n const request: OperationRequest = createPipelineRequest({\n url,\n });\n request.method = operationSpec.httpMethod;\n const operationInfo = getOperationRequestInfo(request);\n operationInfo.operationSpec = operationSpec;\n operationInfo.operationArguments = operationArguments;\n\n const contentType = operationSpec.contentType || this._requestContentType;\n if (contentType && operationSpec.requestBody) {\n request.headers.set(\"Content-Type\", contentType);\n }\n\n const options = operationArguments.options;\n if (options) {\n const requestOptions = options.requestOptions;\n\n if (requestOptions) {\n if (requestOptions.timeout) {\n request.timeout = requestOptions.timeout;\n }\n\n if (requestOptions.onUploadProgress) {\n request.onUploadProgress = requestOptions.onUploadProgress;\n }\n\n if (requestOptions.onDownloadProgress) {\n request.onDownloadProgress = requestOptions.onDownloadProgress;\n }\n\n if (requestOptions.shouldDeserialize !== undefined) {\n operationInfo.shouldDeserialize = requestOptions.shouldDeserialize;\n }\n\n if (requestOptions.allowInsecureConnection) {\n request.allowInsecureConnection = true;\n }\n }\n\n if (options.abortSignal) {\n request.abortSignal = options.abortSignal;\n }\n\n if (options.tracingOptions) {\n request.tracingOptions = options.tracingOptions;\n }\n }\n\n if (this._allowInsecureConnection) {\n request.allowInsecureConnection = true;\n }\n\n if (request.streamResponseStatusCodes === undefined) {\n request.streamResponseStatusCodes = getStreamingResponseStatusCodes(operationSpec);\n }\n\n try {\n const rawResponse = await this.sendRequest(request);\n const flatResponse = flattenResponse(\n rawResponse,\n operationSpec.responses[rawResponse.status],\n ) as T;\n if (options?.onResponse) {\n options.onResponse(rawResponse, flatResponse);\n }\n return flatResponse;\n } catch (error: any) {\n if (typeof error === \"object\" && error?.response) {\n const rawResponse = error.response;\n const flatResponse = flattenResponse(\n rawResponse,\n operationSpec.responses[error.statusCode] || operationSpec.responses[\"default\"],\n );\n error.details = flatResponse;\n if (options?.onResponse) {\n options.onResponse(rawResponse, flatResponse, error);\n }\n }\n throw error;\n }\n }\n}\n\nfunction createDefaultPipeline(options: ServiceClientOptions): Pipeline {\n const credentialScopes = getCredentialScopes(options);\n const credentialOptions =\n options.credential && credentialScopes\n ? { credentialScopes, credential: options.credential }\n : undefined;\n\n return createClientPipeline({\n ...options,\n credentialOptions,\n });\n}\n\nfunction getCredentialScopes(options: ServiceClientOptions): string | string[] | undefined {\n if (options.credentialScopes) {\n return options.credentialScopes;\n }\n\n if (options.endpoint) {\n return `${options.endpoint}/.default`;\n }\n\n if (options.baseUri) {\n return `${options.baseUri}/.default`;\n }\n\n if (options.credential && !options.credentialScopes) {\n throw new Error(\n `When using credentials, the ServiceClientOptions must contain either a endpoint or a credentialScopes. Unable to create a bearerTokenAuthenticationPolicy`,\n );\n }\n\n return undefined;\n}\n", "// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport { AuthorizeRequestOnChallengeOptions } from \"@azure/core-rest-pipeline\";\nimport { logger as coreClientLogger } from \"./log.js\";\nimport { decodeStringToString } from \"./base64.js\";\n\n/**\n * Converts: `Bearer a=\"b\", c=\"d\", Bearer d=\"e\", f=\"g\"`.\n * Into: `[ { a: 'b', c: 'd' }, { d: 'e', f: 'g' } ]`.\n *\n * @internal\n */\nexport function parseCAEChallenge(challenges: string): any[] {\n const bearerChallenges = `, ${challenges.trim()}`.split(\", Bearer \").filter((x) => x);\n return bearerChallenges.map((challenge) => {\n const challengeParts = `${challenge.trim()}, `.split('\", ').filter((x) => x);\n const keyValuePairs = challengeParts.map((keyValue) =>\n (([key, value]) => ({ [key]: value }))(keyValue.trim().split('=\"')),\n );\n // Key-value pairs to plain object:\n return keyValuePairs.reduce((a, b) => ({ ...a, ...b }), {});\n });\n}\n\n/**\n * CAE Challenge structure\n */\nexport interface CAEChallenge {\n scope: string;\n claims: string;\n}\n\n/**\n * This function can be used as a callback for the `bearerTokenAuthenticationPolicy` of `@azure/core-rest-pipeline`, to support CAE challenges:\n * [Continuous Access Evaluation](https://docs.microsoft.com/azure/active-directory/conditional-access/concept-continuous-access-evaluation).\n *\n * Call the `bearerTokenAuthenticationPolicy` with the following options:\n *\n * ```ts\n * import { bearerTokenAuthenticationPolicy } from \"@azure/core-rest-pipeline\";\n * import { authorizeRequestOnClaimChallenge } from \"@azure/core-client\";\n *\n * const bearerTokenAuthenticationPolicy = bearerTokenAuthenticationPolicy({\n * authorizeRequestOnChallenge: authorizeRequestOnClaimChallenge\n * });\n * ```\n *\n * Once provided, the `bearerTokenAuthenticationPolicy` policy will internally handle Continuous Access Evaluation (CAE) challenges.\n * When it can't complete a challenge it will return the 401 (unauthorized) response from ARM.\n *\n * Example challenge with claims:\n *\n * ```\n * Bearer authorization_uri=\"https://login.windows-ppe.net/\", error=\"invalid_token\",\n * error_description=\"User session has been revoked\",\n * claims=\"eyJhY2Nlc3NfdG9rZW4iOnsibmJmIjp7ImVzc2VudGlhbCI6dHJ1ZSwgInZhbHVlIjoiMTYwMzc0MjgwMCJ9fX0=\"\n * ```\n */\nexport async function authorizeRequestOnClaimChallenge(\n onChallengeOptions: AuthorizeRequestOnChallengeOptions,\n): Promise {\n const { scopes, response } = onChallengeOptions;\n const logger = onChallengeOptions.logger || coreClientLogger;\n\n const challenge = response.headers.get(\"WWW-Authenticate\");\n if (!challenge) {\n logger.info(\n `The WWW-Authenticate header was missing. Failed to perform the Continuous Access Evaluation authentication flow.`,\n );\n return false;\n }\n const challenges: CAEChallenge[] = parseCAEChallenge(challenge) || [];\n\n const parsedChallenge = challenges.find((x) => x.claims);\n if (!parsedChallenge) {\n logger.info(\n `The WWW-Authenticate header was missing the necessary \"claims\" to perform the Continuous Access Evaluation authentication flow.`,\n );\n return false;\n }\n\n const accessToken = await onChallengeOptions.getAccessToken(\n parsedChallenge.scope ? [parsedChallenge.scope] : scopes,\n {\n claims: decodeStringToString(parsedChallenge.claims),\n },\n );\n\n if (!accessToken) {\n return false;\n }\n\n onChallengeOptions.request.headers.set(\"Authorization\", `Bearer ${accessToken.token}`);\n return true;\n}\n", "/*\n * Copyright (c) Microsoft Corporation.\n * Licensed under the MIT License.\n *\n * Code generated by Microsoft (R) AutoRest Code Generator.\n * Changes may cause incorrect behavior and will be lost if the code is regenerated.\n */\n\nimport * as coreClient from \"@azure/core-client\";\n\nexport const OperationListResult: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"OperationListResult\",\n modelProperties: {\n value: {\n serializedName: \"value\",\n type: {\n name: \"Sequence\",\n element: {\n type: {\n name: \"Composite\",\n className: \"Operation\",\n },\n },\n },\n },\n nextLink: {\n serializedName: \"nextLink\",\n type: {\n name: \"String\",\n },\n },\n },\n },\n};\n\nexport const Operation: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"Operation\",\n modelProperties: {\n name: {\n serializedName: \"name\",\n type: {\n name: \"String\",\n },\n },\n display: {\n serializedName: \"display\",\n type: {\n name: \"Composite\",\n className: \"OperationDisplay\",\n },\n },\n },\n },\n};\n\nexport const OperationDisplay: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"OperationDisplay\",\n modelProperties: {\n provider: {\n serializedName: \"provider\",\n type: {\n name: \"String\",\n },\n },\n resource: {\n serializedName: \"resource\",\n type: {\n name: \"String\",\n },\n },\n operation: {\n serializedName: \"operation\",\n type: {\n name: \"String\",\n },\n },\n description: {\n serializedName: \"description\",\n type: {\n name: \"String\",\n },\n },\n },\n },\n};\n\nexport const CloudError: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"CloudError\",\n modelProperties: {\n error: {\n serializedName: \"error\",\n type: {\n name: \"Composite\",\n className: \"ErrorResponse\",\n },\n },\n },\n },\n};\n\nexport const ErrorResponse: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"ErrorResponse\",\n modelProperties: {\n code: {\n serializedName: \"code\",\n readOnly: true,\n type: {\n name: \"String\",\n },\n },\n message: {\n serializedName: \"message\",\n readOnly: true,\n type: {\n name: \"String\",\n },\n },\n target: {\n serializedName: \"target\",\n readOnly: true,\n type: {\n name: \"String\",\n },\n },\n details: {\n serializedName: \"details\",\n readOnly: true,\n type: {\n name: \"Sequence\",\n element: {\n type: {\n name: \"Composite\",\n className: \"ErrorResponse\",\n },\n },\n },\n },\n additionalInfo: {\n serializedName: \"additionalInfo\",\n readOnly: true,\n type: {\n name: \"Sequence\",\n element: {\n type: {\n name: \"Composite\",\n className: \"ErrorAdditionalInfo\",\n },\n },\n },\n },\n },\n },\n};\n\nexport const ErrorAdditionalInfo: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"ErrorAdditionalInfo\",\n modelProperties: {\n type: {\n serializedName: \"type\",\n readOnly: true,\n type: {\n name: \"String\",\n },\n },\n info: {\n serializedName: \"info\",\n readOnly: true,\n type: {\n name: \"Dictionary\",\n value: { type: { name: \"any\" } },\n },\n },\n },\n },\n};\n\nexport const Deployment: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"Deployment\",\n modelProperties: {\n location: {\n serializedName: \"location\",\n type: {\n name: \"String\",\n },\n },\n properties: {\n serializedName: \"properties\",\n type: {\n name: \"Composite\",\n className: \"DeploymentProperties\",\n },\n },\n tags: {\n serializedName: \"tags\",\n type: {\n name: \"Dictionary\",\n value: { type: { name: \"String\" } },\n },\n },\n },\n },\n};\n\nexport const DeploymentProperties: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"DeploymentProperties\",\n modelProperties: {\n template: {\n serializedName: \"template\",\n type: {\n name: \"Dictionary\",\n value: { type: { name: \"any\" } },\n },\n },\n templateLink: {\n serializedName: \"templateLink\",\n type: {\n name: \"Composite\",\n className: \"TemplateLink\",\n },\n },\n parameters: {\n serializedName: \"parameters\",\n type: {\n name: \"Dictionary\",\n value: {\n type: { name: \"Composite\", className: \"DeploymentParameter\" },\n },\n },\n },\n parametersLink: {\n serializedName: \"parametersLink\",\n type: {\n name: \"Composite\",\n className: \"ParametersLink\",\n },\n },\n mode: {\n serializedName: \"mode\",\n required: true,\n type: {\n name: \"Enum\",\n allowedValues: [\"Incremental\", \"Complete\"],\n },\n },\n debugSetting: {\n serializedName: \"debugSetting\",\n type: {\n name: \"Composite\",\n className: \"DebugSetting\",\n },\n },\n onErrorDeployment: {\n serializedName: \"onErrorDeployment\",\n type: {\n name: \"Composite\",\n className: \"OnErrorDeployment\",\n },\n },\n expressionEvaluationOptions: {\n serializedName: \"expressionEvaluationOptions\",\n type: {\n name: \"Composite\",\n className: \"ExpressionEvaluationOptions\",\n },\n },\n validationLevel: {\n serializedName: \"validationLevel\",\n type: {\n name: \"String\",\n },\n },\n },\n },\n};\n\nexport const TemplateLink: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"TemplateLink\",\n modelProperties: {\n uri: {\n serializedName: \"uri\",\n type: {\n name: \"String\",\n },\n },\n id: {\n serializedName: \"id\",\n type: {\n name: \"String\",\n },\n },\n relativePath: {\n serializedName: \"relativePath\",\n type: {\n name: \"String\",\n },\n },\n contentVersion: {\n serializedName: \"contentVersion\",\n type: {\n name: \"String\",\n },\n },\n queryString: {\n serializedName: \"queryString\",\n type: {\n name: \"String\",\n },\n },\n },\n },\n};\n\nexport const DeploymentParameter: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"DeploymentParameter\",\n modelProperties: {\n value: {\n serializedName: \"value\",\n type: {\n name: \"any\",\n },\n },\n reference: {\n serializedName: \"reference\",\n type: {\n name: \"Composite\",\n className: \"KeyVaultParameterReference\",\n },\n },\n },\n },\n};\n\nexport const KeyVaultParameterReference: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"KeyVaultParameterReference\",\n modelProperties: {\n keyVault: {\n serializedName: \"keyVault\",\n type: {\n name: \"Composite\",\n className: \"KeyVaultReference\",\n },\n },\n secretName: {\n serializedName: \"secretName\",\n required: true,\n type: {\n name: \"String\",\n },\n },\n secretVersion: {\n serializedName: \"secretVersion\",\n type: {\n name: \"String\",\n },\n },\n },\n },\n};\n\nexport const KeyVaultReference: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"KeyVaultReference\",\n modelProperties: {\n id: {\n serializedName: \"id\",\n required: true,\n type: {\n name: \"String\",\n },\n },\n },\n },\n};\n\nexport const ParametersLink: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"ParametersLink\",\n modelProperties: {\n uri: {\n serializedName: \"uri\",\n required: true,\n type: {\n name: \"String\",\n },\n },\n contentVersion: {\n serializedName: \"contentVersion\",\n type: {\n name: \"String\",\n },\n },\n },\n },\n};\n\nexport const DebugSetting: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"DebugSetting\",\n modelProperties: {\n detailLevel: {\n serializedName: \"detailLevel\",\n type: {\n name: \"String\",\n },\n },\n },\n },\n};\n\nexport const OnErrorDeployment: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"OnErrorDeployment\",\n modelProperties: {\n type: {\n serializedName: \"type\",\n type: {\n name: \"Enum\",\n allowedValues: [\"LastSuccessful\", \"SpecificDeployment\"],\n },\n },\n deploymentName: {\n serializedName: \"deploymentName\",\n type: {\n name: \"String\",\n },\n },\n },\n },\n};\n\nexport const ExpressionEvaluationOptions: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"ExpressionEvaluationOptions\",\n modelProperties: {\n scope: {\n serializedName: \"scope\",\n type: {\n name: \"String\",\n },\n },\n },\n },\n};\n\nexport const DeploymentExtended: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"DeploymentExtended\",\n modelProperties: {\n id: {\n serializedName: \"id\",\n readOnly: true,\n type: {\n name: \"String\",\n },\n },\n name: {\n serializedName: \"name\",\n readOnly: true,\n type: {\n name: \"String\",\n },\n },\n type: {\n serializedName: \"type\",\n readOnly: true,\n type: {\n name: \"String\",\n },\n },\n location: {\n serializedName: \"location\",\n type: {\n name: \"String\",\n },\n },\n properties: {\n serializedName: \"properties\",\n type: {\n name: \"Composite\",\n className: \"DeploymentPropertiesExtended\",\n },\n },\n tags: {\n serializedName: \"tags\",\n type: {\n name: \"Dictionary\",\n value: { type: { name: \"String\" } },\n },\n },\n },\n },\n};\n\nexport const DeploymentPropertiesExtended: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"DeploymentPropertiesExtended\",\n modelProperties: {\n provisioningState: {\n serializedName: \"provisioningState\",\n readOnly: true,\n type: {\n name: \"String\",\n },\n },\n correlationId: {\n serializedName: \"correlationId\",\n readOnly: true,\n type: {\n name: \"String\",\n },\n },\n timestamp: {\n serializedName: \"timestamp\",\n readOnly: true,\n type: {\n name: \"DateTime\",\n },\n },\n duration: {\n serializedName: \"duration\",\n readOnly: true,\n type: {\n name: \"String\",\n },\n },\n outputs: {\n serializedName: \"outputs\",\n readOnly: true,\n type: {\n name: \"Dictionary\",\n value: { type: { name: \"any\" } },\n },\n },\n providers: {\n serializedName: \"providers\",\n readOnly: true,\n type: {\n name: \"Sequence\",\n element: {\n type: {\n name: \"Composite\",\n className: \"Provider\",\n },\n },\n },\n },\n dependencies: {\n serializedName: \"dependencies\",\n readOnly: true,\n type: {\n name: \"Sequence\",\n element: {\n type: {\n name: \"Composite\",\n className: \"Dependency\",\n },\n },\n },\n },\n templateLink: {\n serializedName: \"templateLink\",\n type: {\n name: \"Composite\",\n className: \"TemplateLink\",\n },\n },\n parameters: {\n serializedName: \"parameters\",\n readOnly: true,\n type: {\n name: \"Dictionary\",\n value: { type: { name: \"any\" } },\n },\n },\n parametersLink: {\n serializedName: \"parametersLink\",\n type: {\n name: \"Composite\",\n className: \"ParametersLink\",\n },\n },\n mode: {\n serializedName: \"mode\",\n readOnly: true,\n type: {\n name: \"Enum\",\n allowedValues: [\"Incremental\", \"Complete\"],\n },\n },\n debugSetting: {\n serializedName: \"debugSetting\",\n type: {\n name: \"Composite\",\n className: \"DebugSetting\",\n },\n },\n onErrorDeployment: {\n serializedName: \"onErrorDeployment\",\n type: {\n name: \"Composite\",\n className: \"OnErrorDeploymentExtended\",\n },\n },\n templateHash: {\n serializedName: \"templateHash\",\n readOnly: true,\n type: {\n name: \"String\",\n },\n },\n outputResources: {\n serializedName: \"outputResources\",\n readOnly: true,\n type: {\n name: \"Sequence\",\n element: {\n type: {\n name: \"Composite\",\n className: \"ResourceReference\",\n },\n },\n },\n },\n validatedResources: {\n serializedName: \"validatedResources\",\n readOnly: true,\n type: {\n name: \"Sequence\",\n element: {\n type: {\n name: \"Composite\",\n className: \"ResourceReference\",\n },\n },\n },\n },\n error: {\n serializedName: \"error\",\n type: {\n name: \"Composite\",\n className: \"ErrorResponse\",\n },\n },\n diagnostics: {\n serializedName: \"diagnostics\",\n readOnly: true,\n type: {\n name: \"Sequence\",\n element: {\n type: {\n name: \"Composite\",\n className: \"DeploymentDiagnosticsDefinition\",\n },\n },\n },\n },\n validationLevel: {\n serializedName: \"validationLevel\",\n type: {\n name: \"String\",\n },\n },\n },\n },\n};\n\nexport const Provider: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"Provider\",\n modelProperties: {\n id: {\n serializedName: \"id\",\n readOnly: true,\n type: {\n name: \"String\",\n },\n },\n namespace: {\n serializedName: \"namespace\",\n type: {\n name: \"String\",\n },\n },\n registrationState: {\n serializedName: \"registrationState\",\n readOnly: true,\n type: {\n name: \"String\",\n },\n },\n registrationPolicy: {\n serializedName: \"registrationPolicy\",\n readOnly: true,\n type: {\n name: \"String\",\n },\n },\n resourceTypes: {\n serializedName: \"resourceTypes\",\n readOnly: true,\n type: {\n name: \"Sequence\",\n element: {\n type: {\n name: \"Composite\",\n className: \"ProviderResourceType\",\n },\n },\n },\n },\n providerAuthorizationConsentState: {\n serializedName: \"providerAuthorizationConsentState\",\n type: {\n name: \"String\",\n },\n },\n },\n },\n};\n\nexport const ProviderResourceType: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"ProviderResourceType\",\n modelProperties: {\n resourceType: {\n serializedName: \"resourceType\",\n type: {\n name: \"String\",\n },\n },\n locations: {\n serializedName: \"locations\",\n type: {\n name: \"Sequence\",\n element: {\n type: {\n name: \"String\",\n },\n },\n },\n },\n locationMappings: {\n serializedName: \"locationMappings\",\n type: {\n name: \"Sequence\",\n element: {\n type: {\n name: \"Composite\",\n className: \"ProviderExtendedLocation\",\n },\n },\n },\n },\n aliases: {\n serializedName: \"aliases\",\n type: {\n name: \"Sequence\",\n element: {\n type: {\n name: \"Composite\",\n className: \"Alias\",\n },\n },\n },\n },\n apiVersions: {\n serializedName: \"apiVersions\",\n type: {\n name: \"Sequence\",\n element: {\n type: {\n name: \"String\",\n },\n },\n },\n },\n defaultApiVersion: {\n serializedName: \"defaultApiVersion\",\n readOnly: true,\n type: {\n name: \"String\",\n },\n },\n zoneMappings: {\n serializedName: \"zoneMappings\",\n type: {\n name: \"Sequence\",\n element: {\n type: {\n name: \"Composite\",\n className: \"ZoneMapping\",\n },\n },\n },\n },\n apiProfiles: {\n serializedName: \"apiProfiles\",\n readOnly: true,\n type: {\n name: \"Sequence\",\n element: {\n type: {\n name: \"Composite\",\n className: \"ApiProfile\",\n },\n },\n },\n },\n capabilities: {\n serializedName: \"capabilities\",\n type: {\n name: \"String\",\n },\n },\n properties: {\n serializedName: \"properties\",\n type: {\n name: \"Dictionary\",\n value: { type: { name: \"String\" } },\n },\n },\n },\n },\n};\n\nexport const ProviderExtendedLocation: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"ProviderExtendedLocation\",\n modelProperties: {\n location: {\n serializedName: \"location\",\n type: {\n name: \"String\",\n },\n },\n type: {\n serializedName: \"type\",\n type: {\n name: \"String\",\n },\n },\n extendedLocations: {\n serializedName: \"extendedLocations\",\n type: {\n name: \"Sequence\",\n element: {\n type: {\n name: \"String\",\n },\n },\n },\n },\n },\n },\n};\n\nexport const Alias: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"Alias\",\n modelProperties: {\n name: {\n serializedName: \"name\",\n type: {\n name: \"String\",\n },\n },\n paths: {\n serializedName: \"paths\",\n type: {\n name: \"Sequence\",\n element: {\n type: {\n name: \"Composite\",\n className: \"AliasPath\",\n },\n },\n },\n },\n type: {\n serializedName: \"type\",\n type: {\n name: \"Enum\",\n allowedValues: [\"NotSpecified\", \"PlainText\", \"Mask\"],\n },\n },\n defaultPath: {\n serializedName: \"defaultPath\",\n type: {\n name: \"String\",\n },\n },\n defaultPattern: {\n serializedName: \"defaultPattern\",\n type: {\n name: \"Composite\",\n className: \"AliasPattern\",\n },\n },\n defaultMetadata: {\n serializedName: \"defaultMetadata\",\n type: {\n name: \"Composite\",\n className: \"AliasPathMetadata\",\n },\n },\n },\n },\n};\n\nexport const AliasPath: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"AliasPath\",\n modelProperties: {\n path: {\n serializedName: \"path\",\n type: {\n name: \"String\",\n },\n },\n apiVersions: {\n serializedName: \"apiVersions\",\n type: {\n name: \"Sequence\",\n element: {\n type: {\n name: \"String\",\n },\n },\n },\n },\n pattern: {\n serializedName: \"pattern\",\n type: {\n name: \"Composite\",\n className: \"AliasPattern\",\n },\n },\n metadata: {\n serializedName: \"metadata\",\n type: {\n name: \"Composite\",\n className: \"AliasPathMetadata\",\n },\n },\n },\n },\n};\n\nexport const AliasPattern: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"AliasPattern\",\n modelProperties: {\n phrase: {\n serializedName: \"phrase\",\n type: {\n name: \"String\",\n },\n },\n variable: {\n serializedName: \"variable\",\n type: {\n name: \"String\",\n },\n },\n type: {\n serializedName: \"type\",\n type: {\n name: \"Enum\",\n allowedValues: [\"NotSpecified\", \"Extract\"],\n },\n },\n },\n },\n};\n\nexport const AliasPathMetadata: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"AliasPathMetadata\",\n modelProperties: {\n type: {\n serializedName: \"type\",\n readOnly: true,\n type: {\n name: \"String\",\n },\n },\n attributes: {\n serializedName: \"attributes\",\n readOnly: true,\n type: {\n name: \"String\",\n },\n },\n },\n },\n};\n\nexport const ZoneMapping: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"ZoneMapping\",\n modelProperties: {\n location: {\n serializedName: \"location\",\n type: {\n name: \"String\",\n },\n },\n zones: {\n serializedName: \"zones\",\n type: {\n name: \"Sequence\",\n element: {\n type: {\n name: \"String\",\n },\n },\n },\n },\n },\n },\n};\n\nexport const ApiProfile: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"ApiProfile\",\n modelProperties: {\n profileVersion: {\n serializedName: \"profileVersion\",\n readOnly: true,\n type: {\n name: \"String\",\n },\n },\n apiVersion: {\n serializedName: \"apiVersion\",\n readOnly: true,\n type: {\n name: \"String\",\n },\n },\n },\n },\n};\n\nexport const Dependency: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"Dependency\",\n modelProperties: {\n dependsOn: {\n serializedName: \"dependsOn\",\n type: {\n name: \"Sequence\",\n element: {\n type: {\n name: \"Composite\",\n className: \"BasicDependency\",\n },\n },\n },\n },\n id: {\n serializedName: \"id\",\n type: {\n name: \"String\",\n },\n },\n resourceType: {\n serializedName: \"resourceType\",\n type: {\n name: \"String\",\n },\n },\n resourceName: {\n serializedName: \"resourceName\",\n type: {\n name: \"String\",\n },\n },\n },\n },\n};\n\nexport const BasicDependency: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"BasicDependency\",\n modelProperties: {\n id: {\n serializedName: \"id\",\n type: {\n name: \"String\",\n },\n },\n resourceType: {\n serializedName: \"resourceType\",\n type: {\n name: \"String\",\n },\n },\n resourceName: {\n serializedName: \"resourceName\",\n type: {\n name: \"String\",\n },\n },\n },\n },\n};\n\nexport const OnErrorDeploymentExtended: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"OnErrorDeploymentExtended\",\n modelProperties: {\n provisioningState: {\n serializedName: \"provisioningState\",\n readOnly: true,\n type: {\n name: \"String\",\n },\n },\n type: {\n serializedName: \"type\",\n type: {\n name: \"Enum\",\n allowedValues: [\"LastSuccessful\", \"SpecificDeployment\"],\n },\n },\n deploymentName: {\n serializedName: \"deploymentName\",\n type: {\n name: \"String\",\n },\n },\n },\n },\n};\n\nexport const ResourceReference: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"ResourceReference\",\n modelProperties: {\n id: {\n serializedName: \"id\",\n readOnly: true,\n type: {\n name: \"String\",\n },\n },\n },\n },\n};\n\nexport const DeploymentDiagnosticsDefinition: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"DeploymentDiagnosticsDefinition\",\n modelProperties: {\n level: {\n serializedName: \"level\",\n required: true,\n readOnly: true,\n type: {\n name: \"String\",\n },\n },\n code: {\n serializedName: \"code\",\n required: true,\n readOnly: true,\n type: {\n name: \"String\",\n },\n },\n message: {\n serializedName: \"message\",\n required: true,\n readOnly: true,\n type: {\n name: \"String\",\n },\n },\n target: {\n serializedName: \"target\",\n readOnly: true,\n type: {\n name: \"String\",\n },\n },\n additionalInfo: {\n serializedName: \"additionalInfo\",\n readOnly: true,\n type: {\n name: \"Sequence\",\n element: {\n type: {\n name: \"Composite\",\n className: \"ErrorAdditionalInfo\",\n },\n },\n },\n },\n },\n },\n};\n\nexport const DeploymentValidateResult: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"DeploymentValidateResult\",\n modelProperties: {\n error: {\n serializedName: \"error\",\n type: {\n name: \"Composite\",\n className: \"ErrorResponse\",\n },\n },\n id: {\n serializedName: \"id\",\n readOnly: true,\n type: {\n name: \"String\",\n },\n },\n name: {\n serializedName: \"name\",\n readOnly: true,\n type: {\n name: \"String\",\n },\n },\n type: {\n serializedName: \"type\",\n readOnly: true,\n type: {\n name: \"String\",\n },\n },\n properties: {\n serializedName: \"properties\",\n type: {\n name: \"Composite\",\n className: \"DeploymentPropertiesExtended\",\n },\n },\n },\n },\n};\n\nexport const DeploymentExportResult: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"DeploymentExportResult\",\n modelProperties: {\n template: {\n serializedName: \"template\",\n type: {\n name: \"Dictionary\",\n value: { type: { name: \"any\" } },\n },\n },\n },\n },\n};\n\nexport const DeploymentListResult: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"DeploymentListResult\",\n modelProperties: {\n value: {\n serializedName: \"value\",\n type: {\n name: \"Sequence\",\n element: {\n type: {\n name: \"Composite\",\n className: \"DeploymentExtended\",\n },\n },\n },\n },\n nextLink: {\n serializedName: \"nextLink\",\n readOnly: true,\n type: {\n name: \"String\",\n },\n },\n },\n },\n};\n\nexport const ScopedDeployment: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"ScopedDeployment\",\n modelProperties: {\n location: {\n serializedName: \"location\",\n required: true,\n type: {\n name: \"String\",\n },\n },\n properties: {\n serializedName: \"properties\",\n type: {\n name: \"Composite\",\n className: \"DeploymentProperties\",\n },\n },\n tags: {\n serializedName: \"tags\",\n type: {\n name: \"Dictionary\",\n value: { type: { name: \"String\" } },\n },\n },\n },\n },\n};\n\nexport const ScopedDeploymentWhatIf: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"ScopedDeploymentWhatIf\",\n modelProperties: {\n location: {\n serializedName: \"location\",\n required: true,\n type: {\n name: \"String\",\n },\n },\n properties: {\n serializedName: \"properties\",\n type: {\n name: \"Composite\",\n className: \"DeploymentWhatIfProperties\",\n },\n },\n },\n },\n};\n\nexport const DeploymentWhatIfSettings: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"DeploymentWhatIfSettings\",\n modelProperties: {\n resultFormat: {\n serializedName: \"resultFormat\",\n type: {\n name: \"Enum\",\n allowedValues: [\"ResourceIdOnly\", \"FullResourcePayloads\"],\n },\n },\n },\n },\n};\n\nexport const WhatIfOperationResult: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"WhatIfOperationResult\",\n modelProperties: {\n status: {\n serializedName: \"status\",\n type: {\n name: \"String\",\n },\n },\n error: {\n serializedName: \"error\",\n type: {\n name: \"Composite\",\n className: \"ErrorResponse\",\n },\n },\n changes: {\n serializedName: \"properties.changes\",\n type: {\n name: \"Sequence\",\n element: {\n type: {\n name: \"Composite\",\n className: \"WhatIfChange\",\n },\n },\n },\n },\n potentialChanges: {\n serializedName: \"properties.potentialChanges\",\n type: {\n name: \"Sequence\",\n element: {\n type: {\n name: \"Composite\",\n className: \"WhatIfChange\",\n },\n },\n },\n },\n diagnostics: {\n serializedName: \"properties.diagnostics\",\n readOnly: true,\n type: {\n name: \"Sequence\",\n element: {\n type: {\n name: \"Composite\",\n className: \"DeploymentDiagnosticsDefinition\",\n },\n },\n },\n },\n },\n },\n};\n\nexport const WhatIfChange: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"WhatIfChange\",\n modelProperties: {\n resourceId: {\n serializedName: \"resourceId\",\n type: {\n name: \"String\",\n },\n },\n deploymentId: {\n serializedName: \"deploymentId\",\n type: {\n name: \"String\",\n },\n },\n symbolicName: {\n serializedName: \"symbolicName\",\n type: {\n name: \"String\",\n },\n },\n identifiers: {\n serializedName: \"identifiers\",\n type: {\n name: \"Dictionary\",\n value: { type: { name: \"any\" } },\n },\n },\n changeType: {\n serializedName: \"changeType\",\n required: true,\n type: {\n name: \"Enum\",\n allowedValues: [\n \"Create\",\n \"Delete\",\n \"Ignore\",\n \"Deploy\",\n \"NoChange\",\n \"Modify\",\n \"Unsupported\",\n ],\n },\n },\n unsupportedReason: {\n serializedName: \"unsupportedReason\",\n type: {\n name: \"String\",\n },\n },\n before: {\n serializedName: \"before\",\n type: {\n name: \"Dictionary\",\n value: { type: { name: \"any\" } },\n },\n },\n after: {\n serializedName: \"after\",\n type: {\n name: \"Dictionary\",\n value: { type: { name: \"any\" } },\n },\n },\n delta: {\n serializedName: \"delta\",\n type: {\n name: \"Sequence\",\n element: {\n type: {\n name: \"Composite\",\n className: \"WhatIfPropertyChange\",\n },\n },\n },\n },\n },\n },\n};\n\nexport const WhatIfPropertyChange: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"WhatIfPropertyChange\",\n modelProperties: {\n path: {\n serializedName: \"path\",\n required: true,\n type: {\n name: \"String\",\n },\n },\n propertyChangeType: {\n serializedName: \"propertyChangeType\",\n required: true,\n type: {\n name: \"Enum\",\n allowedValues: [\"Create\", \"Delete\", \"Modify\", \"Array\", \"NoEffect\"],\n },\n },\n before: {\n serializedName: \"before\",\n type: {\n name: \"Dictionary\",\n value: { type: { name: \"any\" } },\n },\n },\n after: {\n serializedName: \"after\",\n type: {\n name: \"Dictionary\",\n value: { type: { name: \"any\" } },\n },\n },\n children: {\n serializedName: \"children\",\n type: {\n name: \"Sequence\",\n element: {\n type: {\n name: \"Composite\",\n className: \"WhatIfPropertyChange\",\n },\n },\n },\n },\n },\n },\n};\n\nexport const DeploymentWhatIf: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"DeploymentWhatIf\",\n modelProperties: {\n location: {\n serializedName: \"location\",\n type: {\n name: \"String\",\n },\n },\n properties: {\n serializedName: \"properties\",\n type: {\n name: \"Composite\",\n className: \"DeploymentWhatIfProperties\",\n },\n },\n },\n },\n};\n\nexport const ProviderPermissionListResult: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"ProviderPermissionListResult\",\n modelProperties: {\n value: {\n serializedName: \"value\",\n type: {\n name: \"Sequence\",\n element: {\n type: {\n name: \"Composite\",\n className: \"ProviderPermission\",\n },\n },\n },\n },\n nextLink: {\n serializedName: \"nextLink\",\n readOnly: true,\n type: {\n name: \"String\",\n },\n },\n },\n },\n};\n\nexport const ProviderPermission: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"ProviderPermission\",\n modelProperties: {\n applicationId: {\n serializedName: \"applicationId\",\n type: {\n name: \"String\",\n },\n },\n roleDefinition: {\n serializedName: \"roleDefinition\",\n type: {\n name: \"Composite\",\n className: \"RoleDefinition\",\n },\n },\n managedByRoleDefinition: {\n serializedName: \"managedByRoleDefinition\",\n type: {\n name: \"Composite\",\n className: \"RoleDefinition\",\n },\n },\n providerAuthorizationConsentState: {\n serializedName: \"providerAuthorizationConsentState\",\n type: {\n name: \"String\",\n },\n },\n },\n },\n};\n\nexport const RoleDefinition: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"RoleDefinition\",\n modelProperties: {\n id: {\n serializedName: \"id\",\n type: {\n name: \"String\",\n },\n },\n name: {\n serializedName: \"name\",\n type: {\n name: \"String\",\n },\n },\n isServiceRole: {\n serializedName: \"isServiceRole\",\n type: {\n name: \"Boolean\",\n },\n },\n permissions: {\n serializedName: \"permissions\",\n type: {\n name: \"Sequence\",\n element: {\n type: {\n name: \"Composite\",\n className: \"Permission\",\n },\n },\n },\n },\n scopes: {\n serializedName: \"scopes\",\n type: {\n name: \"Sequence\",\n element: {\n type: {\n name: \"String\",\n },\n },\n },\n },\n },\n },\n};\n\nexport const Permission: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"Permission\",\n modelProperties: {\n actions: {\n serializedName: \"actions\",\n type: {\n name: \"Sequence\",\n element: {\n type: {\n name: \"String\",\n },\n },\n },\n },\n notActions: {\n serializedName: \"notActions\",\n type: {\n name: \"Sequence\",\n element: {\n type: {\n name: \"String\",\n },\n },\n },\n },\n dataActions: {\n serializedName: \"dataActions\",\n type: {\n name: \"Sequence\",\n element: {\n type: {\n name: \"String\",\n },\n },\n },\n },\n notDataActions: {\n serializedName: \"notDataActions\",\n type: {\n name: \"Sequence\",\n element: {\n type: {\n name: \"String\",\n },\n },\n },\n },\n },\n },\n};\n\nexport const ProviderRegistrationRequest: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"ProviderRegistrationRequest\",\n modelProperties: {\n thirdPartyProviderConsent: {\n serializedName: \"thirdPartyProviderConsent\",\n type: {\n name: \"Composite\",\n className: \"ProviderConsentDefinition\",\n },\n },\n },\n },\n};\n\nexport const ProviderConsentDefinition: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"ProviderConsentDefinition\",\n modelProperties: {\n consentToAuthorization: {\n serializedName: \"consentToAuthorization\",\n type: {\n name: \"Boolean\",\n },\n },\n },\n },\n};\n\nexport const ProviderListResult: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"ProviderListResult\",\n modelProperties: {\n value: {\n serializedName: \"value\",\n type: {\n name: \"Sequence\",\n element: {\n type: {\n name: \"Composite\",\n className: \"Provider\",\n },\n },\n },\n },\n nextLink: {\n serializedName: \"nextLink\",\n readOnly: true,\n type: {\n name: \"String\",\n },\n },\n },\n },\n};\n\nexport const ProviderResourceTypeListResult: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"ProviderResourceTypeListResult\",\n modelProperties: {\n value: {\n serializedName: \"value\",\n type: {\n name: \"Sequence\",\n element: {\n type: {\n name: \"Composite\",\n className: \"ProviderResourceType\",\n },\n },\n },\n },\n nextLink: {\n serializedName: \"nextLink\",\n readOnly: true,\n type: {\n name: \"String\",\n },\n },\n },\n },\n};\n\nexport const ResourceListResult: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"ResourceListResult\",\n modelProperties: {\n value: {\n serializedName: \"value\",\n type: {\n name: \"Sequence\",\n element: {\n type: {\n name: \"Composite\",\n className: \"GenericResourceExpanded\",\n },\n },\n },\n },\n nextLink: {\n serializedName: \"nextLink\",\n readOnly: true,\n type: {\n name: \"String\",\n },\n },\n },\n },\n};\n\nexport const Plan: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"Plan\",\n modelProperties: {\n name: {\n serializedName: \"name\",\n type: {\n name: \"String\",\n },\n },\n publisher: {\n serializedName: \"publisher\",\n type: {\n name: \"String\",\n },\n },\n product: {\n serializedName: \"product\",\n type: {\n name: \"String\",\n },\n },\n promotionCode: {\n serializedName: \"promotionCode\",\n type: {\n name: \"String\",\n },\n },\n version: {\n serializedName: \"version\",\n type: {\n name: \"String\",\n },\n },\n },\n },\n};\n\nexport const Sku: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"Sku\",\n modelProperties: {\n name: {\n serializedName: \"name\",\n type: {\n name: \"String\",\n },\n },\n tier: {\n serializedName: \"tier\",\n type: {\n name: \"String\",\n },\n },\n size: {\n serializedName: \"size\",\n type: {\n name: \"String\",\n },\n },\n family: {\n serializedName: \"family\",\n type: {\n name: \"String\",\n },\n },\n model: {\n serializedName: \"model\",\n type: {\n name: \"String\",\n },\n },\n capacity: {\n serializedName: \"capacity\",\n type: {\n name: \"Number\",\n },\n },\n },\n },\n};\n\nexport const Identity: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"Identity\",\n modelProperties: {\n principalId: {\n serializedName: \"principalId\",\n readOnly: true,\n type: {\n name: \"String\",\n },\n },\n tenantId: {\n serializedName: \"tenantId\",\n readOnly: true,\n type: {\n name: \"String\",\n },\n },\n type: {\n serializedName: \"type\",\n type: {\n name: \"Enum\",\n allowedValues: [\n \"SystemAssigned\",\n \"UserAssigned\",\n \"SystemAssigned, UserAssigned\",\n \"None\",\n ],\n },\n },\n userAssignedIdentities: {\n serializedName: \"userAssignedIdentities\",\n type: {\n name: \"Dictionary\",\n value: {\n type: {\n name: \"Composite\",\n className: \"IdentityUserAssignedIdentitiesValue\",\n },\n },\n },\n },\n },\n },\n};\n\nexport const IdentityUserAssignedIdentitiesValue: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"IdentityUserAssignedIdentitiesValue\",\n modelProperties: {\n principalId: {\n serializedName: \"principalId\",\n readOnly: true,\n type: {\n name: \"String\",\n },\n },\n clientId: {\n serializedName: \"clientId\",\n readOnly: true,\n type: {\n name: \"String\",\n },\n },\n },\n },\n};\n\nexport const Resource: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"Resource\",\n modelProperties: {\n id: {\n serializedName: \"id\",\n readOnly: true,\n type: {\n name: \"String\",\n },\n },\n name: {\n serializedName: \"name\",\n readOnly: true,\n type: {\n name: \"String\",\n },\n },\n type: {\n serializedName: \"type\",\n readOnly: true,\n type: {\n name: \"String\",\n },\n },\n location: {\n serializedName: \"location\",\n type: {\n name: \"String\",\n },\n },\n extendedLocation: {\n serializedName: \"extendedLocation\",\n type: {\n name: \"Composite\",\n className: \"ExtendedLocation\",\n },\n },\n tags: {\n serializedName: \"tags\",\n type: {\n name: \"Dictionary\",\n value: { type: { name: \"String\" } },\n },\n },\n },\n },\n};\n\nexport const ExtendedLocation: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"ExtendedLocation\",\n modelProperties: {\n type: {\n serializedName: \"type\",\n type: {\n name: \"String\",\n },\n },\n name: {\n serializedName: \"name\",\n type: {\n name: \"String\",\n },\n },\n },\n },\n};\n\nexport const ResourceGroup: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"ResourceGroup\",\n modelProperties: {\n id: {\n serializedName: \"id\",\n readOnly: true,\n type: {\n name: \"String\",\n },\n },\n name: {\n serializedName: \"name\",\n readOnly: true,\n type: {\n name: \"String\",\n },\n },\n type: {\n serializedName: \"type\",\n readOnly: true,\n type: {\n name: \"String\",\n },\n },\n properties: {\n serializedName: \"properties\",\n type: {\n name: \"Composite\",\n className: \"ResourceGroupProperties\",\n },\n },\n location: {\n serializedName: \"location\",\n required: true,\n type: {\n name: \"String\",\n },\n },\n managedBy: {\n serializedName: \"managedBy\",\n type: {\n name: \"String\",\n },\n },\n tags: {\n serializedName: \"tags\",\n type: {\n name: \"Dictionary\",\n value: { type: { name: \"String\" } },\n },\n },\n },\n },\n};\n\nexport const ResourceGroupProperties: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"ResourceGroupProperties\",\n modelProperties: {\n provisioningState: {\n serializedName: \"provisioningState\",\n readOnly: true,\n type: {\n name: \"String\",\n },\n },\n },\n },\n};\n\nexport const ResourceGroupPatchable: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"ResourceGroupPatchable\",\n modelProperties: {\n name: {\n serializedName: \"name\",\n type: {\n name: \"String\",\n },\n },\n properties: {\n serializedName: \"properties\",\n type: {\n name: \"Composite\",\n className: \"ResourceGroupProperties\",\n },\n },\n managedBy: {\n serializedName: \"managedBy\",\n type: {\n name: \"String\",\n },\n },\n tags: {\n serializedName: \"tags\",\n type: {\n name: \"Dictionary\",\n value: { type: { name: \"String\" } },\n },\n },\n },\n },\n};\n\nexport const ExportTemplateRequest: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"ExportTemplateRequest\",\n modelProperties: {\n resources: {\n serializedName: \"resources\",\n type: {\n name: \"Sequence\",\n element: {\n type: {\n name: \"String\",\n },\n },\n },\n },\n options: {\n serializedName: \"options\",\n type: {\n name: \"String\",\n },\n },\n outputFormat: {\n serializedName: \"outputFormat\",\n type: {\n name: \"String\",\n },\n },\n },\n },\n};\n\nexport const ResourceGroupExportResult: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"ResourceGroupExportResult\",\n modelProperties: {\n template: {\n serializedName: \"template\",\n type: {\n name: \"Dictionary\",\n value: { type: { name: \"any\" } },\n },\n },\n output: {\n serializedName: \"output\",\n type: {\n name: \"String\",\n },\n },\n error: {\n serializedName: \"error\",\n type: {\n name: \"Composite\",\n className: \"ErrorResponse\",\n },\n },\n },\n },\n};\n\nexport const ResourceGroupListResult: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"ResourceGroupListResult\",\n modelProperties: {\n value: {\n serializedName: \"value\",\n type: {\n name: \"Sequence\",\n element: {\n type: {\n name: \"Composite\",\n className: \"ResourceGroup\",\n },\n },\n },\n },\n nextLink: {\n serializedName: \"nextLink\",\n readOnly: true,\n type: {\n name: \"String\",\n },\n },\n },\n },\n};\n\nexport const ResourcesMoveInfo: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"ResourcesMoveInfo\",\n modelProperties: {\n resources: {\n serializedName: \"resources\",\n type: {\n name: \"Sequence\",\n element: {\n type: {\n name: \"String\",\n },\n },\n },\n },\n targetResourceGroup: {\n serializedName: \"targetResourceGroup\",\n type: {\n name: \"String\",\n },\n },\n },\n },\n};\n\nexport const TagValue: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"TagValue\",\n modelProperties: {\n id: {\n serializedName: \"id\",\n readOnly: true,\n type: {\n name: \"String\",\n },\n },\n tagValue: {\n serializedName: \"tagValue\",\n type: {\n name: \"String\",\n },\n },\n count: {\n serializedName: \"count\",\n type: {\n name: \"Composite\",\n className: \"TagCount\",\n },\n },\n },\n },\n};\n\nexport const TagCount: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"TagCount\",\n modelProperties: {\n type: {\n serializedName: \"type\",\n type: {\n name: \"String\",\n },\n },\n value: {\n serializedName: \"value\",\n type: {\n name: \"Number\",\n },\n },\n },\n },\n};\n\nexport const TagDetails: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"TagDetails\",\n modelProperties: {\n id: {\n serializedName: \"id\",\n readOnly: true,\n type: {\n name: \"String\",\n },\n },\n tagName: {\n serializedName: \"tagName\",\n type: {\n name: \"String\",\n },\n },\n count: {\n serializedName: \"count\",\n type: {\n name: \"Composite\",\n className: \"TagCount\",\n },\n },\n values: {\n serializedName: \"values\",\n type: {\n name: \"Sequence\",\n element: {\n type: {\n name: \"Composite\",\n className: \"TagValue\",\n },\n },\n },\n },\n },\n },\n};\n\nexport const TagsListResult: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"TagsListResult\",\n modelProperties: {\n value: {\n serializedName: \"value\",\n type: {\n name: \"Sequence\",\n element: {\n type: {\n name: \"Composite\",\n className: \"TagDetails\",\n },\n },\n },\n },\n nextLink: {\n serializedName: \"nextLink\",\n readOnly: true,\n type: {\n name: \"String\",\n },\n },\n },\n },\n};\n\nexport const DeploymentOperation: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"DeploymentOperation\",\n modelProperties: {\n id: {\n serializedName: \"id\",\n readOnly: true,\n type: {\n name: \"String\",\n },\n },\n operationId: {\n serializedName: \"operationId\",\n readOnly: true,\n type: {\n name: \"String\",\n },\n },\n properties: {\n serializedName: \"properties\",\n type: {\n name: \"Composite\",\n className: \"DeploymentOperationProperties\",\n },\n },\n },\n },\n};\n\nexport const DeploymentOperationProperties: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"DeploymentOperationProperties\",\n modelProperties: {\n provisioningOperation: {\n serializedName: \"provisioningOperation\",\n readOnly: true,\n type: {\n name: \"Enum\",\n allowedValues: [\n \"NotSpecified\",\n \"Create\",\n \"Delete\",\n \"Waiting\",\n \"AzureAsyncOperationWaiting\",\n \"ResourceCacheWaiting\",\n \"Action\",\n \"Read\",\n \"EvaluateDeploymentOutput\",\n \"DeploymentCleanup\",\n ],\n },\n },\n provisioningState: {\n serializedName: \"provisioningState\",\n readOnly: true,\n type: {\n name: \"String\",\n },\n },\n timestamp: {\n serializedName: \"timestamp\",\n readOnly: true,\n type: {\n name: \"DateTime\",\n },\n },\n duration: {\n serializedName: \"duration\",\n readOnly: true,\n type: {\n name: \"String\",\n },\n },\n serviceRequestId: {\n serializedName: \"serviceRequestId\",\n readOnly: true,\n type: {\n name: \"String\",\n },\n },\n statusCode: {\n serializedName: \"statusCode\",\n readOnly: true,\n type: {\n name: \"String\",\n },\n },\n statusMessage: {\n serializedName: \"statusMessage\",\n type: {\n name: \"Composite\",\n className: \"StatusMessage\",\n },\n },\n targetResource: {\n serializedName: \"targetResource\",\n type: {\n name: \"Composite\",\n className: \"TargetResource\",\n },\n },\n request: {\n serializedName: \"request\",\n type: {\n name: \"Composite\",\n className: \"HttpMessage\",\n },\n },\n response: {\n serializedName: \"response\",\n type: {\n name: \"Composite\",\n className: \"HttpMessage\",\n },\n },\n },\n },\n};\n\nexport const StatusMessage: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"StatusMessage\",\n modelProperties: {\n status: {\n serializedName: \"status\",\n type: {\n name: \"String\",\n },\n },\n error: {\n serializedName: \"error\",\n type: {\n name: \"Composite\",\n className: \"ErrorResponse\",\n },\n },\n },\n },\n};\n\nexport const TargetResource: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"TargetResource\",\n modelProperties: {\n id: {\n serializedName: \"id\",\n type: {\n name: \"String\",\n },\n },\n resourceName: {\n serializedName: \"resourceName\",\n type: {\n name: \"String\",\n },\n },\n resourceType: {\n serializedName: \"resourceType\",\n type: {\n name: \"String\",\n },\n },\n },\n },\n};\n\nexport const HttpMessage: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"HttpMessage\",\n modelProperties: {\n content: {\n serializedName: \"content\",\n type: {\n name: \"Dictionary\",\n value: { type: { name: \"any\" } },\n },\n },\n },\n },\n};\n\nexport const DeploymentOperationsListResult: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"DeploymentOperationsListResult\",\n modelProperties: {\n value: {\n serializedName: \"value\",\n type: {\n name: \"Sequence\",\n element: {\n type: {\n name: \"Composite\",\n className: \"DeploymentOperation\",\n },\n },\n },\n },\n nextLink: {\n serializedName: \"nextLink\",\n readOnly: true,\n type: {\n name: \"String\",\n },\n },\n },\n },\n};\n\nexport const TemplateHashResult: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"TemplateHashResult\",\n modelProperties: {\n minifiedTemplate: {\n serializedName: \"minifiedTemplate\",\n type: {\n name: \"String\",\n },\n },\n templateHash: {\n serializedName: \"templateHash\",\n type: {\n name: \"String\",\n },\n },\n },\n },\n};\n\nexport const TagsResource: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"TagsResource\",\n modelProperties: {\n id: {\n serializedName: \"id\",\n readOnly: true,\n type: {\n name: \"String\",\n },\n },\n name: {\n serializedName: \"name\",\n readOnly: true,\n type: {\n name: \"String\",\n },\n },\n type: {\n serializedName: \"type\",\n readOnly: true,\n type: {\n name: \"String\",\n },\n },\n properties: {\n serializedName: \"properties\",\n type: {\n name: \"Composite\",\n className: \"Tags\",\n },\n },\n },\n },\n};\n\nexport const Tags: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"Tags\",\n modelProperties: {\n tags: {\n serializedName: \"tags\",\n type: {\n name: \"Dictionary\",\n value: { type: { name: \"String\" } },\n },\n },\n },\n },\n};\n\nexport const TagsPatchResource: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"TagsPatchResource\",\n modelProperties: {\n operation: {\n serializedName: \"operation\",\n type: {\n name: \"String\",\n },\n },\n properties: {\n serializedName: \"properties\",\n type: {\n name: \"Composite\",\n className: \"Tags\",\n },\n },\n },\n },\n};\n\nexport const DeploymentExtendedFilter: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"DeploymentExtendedFilter\",\n modelProperties: {\n provisioningState: {\n serializedName: \"provisioningState\",\n type: {\n name: \"String\",\n },\n },\n },\n },\n};\n\nexport const GenericResourceFilter: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"GenericResourceFilter\",\n modelProperties: {\n resourceType: {\n serializedName: \"resourceType\",\n type: {\n name: \"String\",\n },\n },\n tagname: {\n serializedName: \"tagname\",\n type: {\n name: \"String\",\n },\n },\n tagvalue: {\n serializedName: \"tagvalue\",\n type: {\n name: \"String\",\n },\n },\n },\n },\n};\n\nexport const ResourceGroupFilter: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"ResourceGroupFilter\",\n modelProperties: {\n tagName: {\n serializedName: \"tagName\",\n type: {\n name: \"String\",\n },\n },\n tagValue: {\n serializedName: \"tagValue\",\n type: {\n name: \"String\",\n },\n },\n },\n },\n};\n\nexport const ResourceProviderOperationDisplayProperties: coreClient.CompositeMapper =\n {\n type: {\n name: \"Composite\",\n className: \"ResourceProviderOperationDisplayProperties\",\n modelProperties: {\n publisher: {\n serializedName: \"publisher\",\n type: {\n name: \"String\",\n },\n },\n provider: {\n serializedName: \"provider\",\n type: {\n name: \"String\",\n },\n },\n resource: {\n serializedName: \"resource\",\n type: {\n name: \"String\",\n },\n },\n operation: {\n serializedName: \"operation\",\n type: {\n name: \"String\",\n },\n },\n description: {\n serializedName: \"description\",\n type: {\n name: \"String\",\n },\n },\n },\n },\n };\n\nexport const SubResource: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"SubResource\",\n modelProperties: {\n id: {\n serializedName: \"id\",\n type: {\n name: \"String\",\n },\n },\n },\n },\n};\n\nexport const DeploymentWhatIfProperties: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"DeploymentWhatIfProperties\",\n modelProperties: {\n ...DeploymentProperties.type.modelProperties,\n whatIfSettings: {\n serializedName: \"whatIfSettings\",\n type: {\n name: \"Composite\",\n className: \"DeploymentWhatIfSettings\",\n },\n },\n },\n },\n};\n\nexport const GenericResource: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"GenericResource\",\n modelProperties: {\n ...Resource.type.modelProperties,\n plan: {\n serializedName: \"plan\",\n type: {\n name: \"Composite\",\n className: \"Plan\",\n },\n },\n properties: {\n serializedName: \"properties\",\n type: {\n name: \"Dictionary\",\n value: { type: { name: \"any\" } },\n },\n },\n kind: {\n constraints: {\n Pattern: new RegExp(\"^[-\\\\w\\\\._,\\\\(\\\\)]+$\"),\n },\n serializedName: \"kind\",\n type: {\n name: \"String\",\n },\n },\n managedBy: {\n serializedName: \"managedBy\",\n type: {\n name: \"String\",\n },\n },\n sku: {\n serializedName: \"sku\",\n type: {\n name: \"Composite\",\n className: \"Sku\",\n },\n },\n identity: {\n serializedName: \"identity\",\n type: {\n name: \"Composite\",\n className: \"Identity\",\n },\n },\n },\n },\n};\n\nexport const GenericResourceExpanded: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"GenericResourceExpanded\",\n modelProperties: {\n ...GenericResource.type.modelProperties,\n createdTime: {\n serializedName: \"createdTime\",\n readOnly: true,\n type: {\n name: \"DateTime\",\n },\n },\n changedTime: {\n serializedName: \"changedTime\",\n readOnly: true,\n type: {\n name: \"DateTime\",\n },\n },\n provisioningState: {\n serializedName: \"provisioningState\",\n readOnly: true,\n type: {\n name: \"String\",\n },\n },\n },\n },\n};\n\nexport const DeploymentsWhatIfAtTenantScopeHeaders: coreClient.CompositeMapper =\n {\n type: {\n name: \"Composite\",\n className: \"DeploymentsWhatIfAtTenantScopeHeaders\",\n modelProperties: {\n location: {\n serializedName: \"location\",\n type: {\n name: \"String\",\n },\n },\n retryAfter: {\n serializedName: \"retry-after\",\n type: {\n name: \"String\",\n },\n },\n },\n },\n };\n\nexport const DeploymentsWhatIfAtManagementGroupScopeHeaders: coreClient.CompositeMapper =\n {\n type: {\n name: \"Composite\",\n className: \"DeploymentsWhatIfAtManagementGroupScopeHeaders\",\n modelProperties: {\n location: {\n serializedName: \"location\",\n type: {\n name: \"String\",\n },\n },\n retryAfter: {\n serializedName: \"retry-after\",\n type: {\n name: \"String\",\n },\n },\n },\n },\n };\n\nexport const DeploymentsWhatIfAtSubscriptionScopeHeaders: coreClient.CompositeMapper =\n {\n type: {\n name: \"Composite\",\n className: \"DeploymentsWhatIfAtSubscriptionScopeHeaders\",\n modelProperties: {\n location: {\n serializedName: \"location\",\n type: {\n name: \"String\",\n },\n },\n retryAfter: {\n serializedName: \"retry-after\",\n type: {\n name: \"String\",\n },\n },\n },\n },\n };\n\nexport const DeploymentsWhatIfHeaders: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"DeploymentsWhatIfHeaders\",\n modelProperties: {\n location: {\n serializedName: \"location\",\n type: {\n name: \"String\",\n },\n },\n retryAfter: {\n serializedName: \"retry-after\",\n type: {\n name: \"String\",\n },\n },\n },\n },\n};\n\nexport const ResourceGroupsDeleteHeaders: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"ResourceGroupsDeleteHeaders\",\n modelProperties: {\n location: {\n serializedName: \"location\",\n type: {\n name: \"String\",\n },\n },\n },\n },\n};\n\nexport const TagsCreateOrUpdateAtScopeHeaders: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"TagsCreateOrUpdateAtScopeHeaders\",\n modelProperties: {\n location: {\n serializedName: \"location\",\n type: {\n name: \"String\",\n },\n },\n },\n },\n};\n\nexport const TagsUpdateAtScopeHeaders: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"TagsUpdateAtScopeHeaders\",\n modelProperties: {\n location: {\n serializedName: \"location\",\n type: {\n name: \"String\",\n },\n },\n },\n },\n};\n\nexport const TagsDeleteAtScopeHeaders: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"TagsDeleteAtScopeHeaders\",\n modelProperties: {\n location: {\n serializedName: \"location\",\n type: {\n name: \"String\",\n },\n },\n },\n },\n};\n", "/*\n * Copyright (c) Microsoft Corporation.\n * Licensed under the MIT License.\n *\n * Code generated by Microsoft (R) AutoRest Code Generator.\n * Changes may cause incorrect behavior and will be lost if the code is regenerated.\n */\n\nimport {\n OperationParameter,\n OperationURLParameter,\n OperationQueryParameter,\n} from \"@azure/core-client\";\nimport {\n Deployment as DeploymentMapper,\n ScopedDeployment as ScopedDeploymentMapper,\n ScopedDeploymentWhatIf as ScopedDeploymentWhatIfMapper,\n DeploymentWhatIf as DeploymentWhatIfMapper,\n ProviderRegistrationRequest as ProviderRegistrationRequestMapper,\n ResourcesMoveInfo as ResourcesMoveInfoMapper,\n GenericResource as GenericResourceMapper,\n ResourceGroup as ResourceGroupMapper,\n ResourceGroupPatchable as ResourceGroupPatchableMapper,\n ExportTemplateRequest as ExportTemplateRequestMapper,\n TagsResource as TagsResourceMapper,\n TagsPatchResource as TagsPatchResourceMapper,\n} from \"../models/mappers.js\";\n\nexport const accept: OperationParameter = {\n parameterPath: \"accept\",\n mapper: {\n defaultValue: \"application/json\",\n isConstant: true,\n serializedName: \"Accept\",\n type: {\n name: \"String\",\n },\n },\n};\n\nexport const $host: OperationURLParameter = {\n parameterPath: \"$host\",\n mapper: {\n serializedName: \"$host\",\n required: true,\n type: {\n name: \"String\",\n },\n },\n skipEncoding: true,\n};\n\nexport const apiVersion: OperationQueryParameter = {\n parameterPath: \"apiVersion\",\n mapper: {\n defaultValue: \"2024-11-01\",\n isConstant: true,\n serializedName: \"api-version\",\n type: {\n name: \"String\",\n },\n },\n};\n\nexport const nextLink: OperationURLParameter = {\n parameterPath: \"nextLink\",\n mapper: {\n serializedName: \"nextLink\",\n required: true,\n type: {\n name: \"String\",\n },\n },\n skipEncoding: true,\n};\n\nexport const scope: OperationURLParameter = {\n parameterPath: \"scope\",\n mapper: {\n serializedName: \"scope\",\n required: true,\n type: {\n name: \"String\",\n },\n },\n skipEncoding: true,\n};\n\nexport const deploymentName: OperationURLParameter = {\n parameterPath: \"deploymentName\",\n mapper: {\n constraints: {\n Pattern: new RegExp(\"^[-\\\\w\\\\._\\\\(\\\\)]+$\"),\n MaxLength: 64,\n MinLength: 1,\n },\n serializedName: \"deploymentName\",\n required: true,\n type: {\n name: \"String\",\n },\n },\n};\n\nexport const contentType: OperationParameter = {\n parameterPath: [\"options\", \"contentType\"],\n mapper: {\n defaultValue: \"application/json\",\n isConstant: true,\n serializedName: \"Content-Type\",\n type: {\n name: \"String\",\n },\n },\n};\n\nexport const parameters: OperationParameter = {\n parameterPath: \"parameters\",\n mapper: DeploymentMapper,\n};\n\nexport const filter: OperationQueryParameter = {\n parameterPath: [\"options\", \"filter\"],\n mapper: {\n serializedName: \"$filter\",\n type: {\n name: \"String\",\n },\n },\n};\n\nexport const top: OperationQueryParameter = {\n parameterPath: [\"options\", \"top\"],\n mapper: {\n serializedName: \"$top\",\n type: {\n name: \"Number\",\n },\n },\n};\n\nexport const parameters1: OperationParameter = {\n parameterPath: \"parameters\",\n mapper: ScopedDeploymentMapper,\n};\n\nexport const parameters2: OperationParameter = {\n parameterPath: \"parameters\",\n mapper: ScopedDeploymentWhatIfMapper,\n};\n\nexport const groupId: OperationURLParameter = {\n parameterPath: \"groupId\",\n mapper: {\n constraints: {\n MaxLength: 90,\n MinLength: 1,\n },\n serializedName: \"groupId\",\n required: true,\n type: {\n name: \"String\",\n },\n },\n};\n\nexport const subscriptionId: OperationURLParameter = {\n parameterPath: \"subscriptionId\",\n mapper: {\n serializedName: \"subscriptionId\",\n required: true,\n type: {\n name: \"String\",\n },\n },\n};\n\nexport const parameters3: OperationParameter = {\n parameterPath: \"parameters\",\n mapper: DeploymentWhatIfMapper,\n};\n\nexport const resourceGroupName: OperationURLParameter = {\n parameterPath: \"resourceGroupName\",\n mapper: {\n constraints: {\n Pattern: new RegExp(\"^[-\\\\w\\\\._\\\\(\\\\)]+$\"),\n MaxLength: 90,\n MinLength: 1,\n },\n serializedName: \"resourceGroupName\",\n required: true,\n type: {\n name: \"String\",\n },\n },\n};\n\nexport const template: OperationParameter = {\n parameterPath: \"template\",\n mapper: {\n serializedName: \"template\",\n required: true,\n type: {\n name: \"Dictionary\",\n value: { type: { name: \"any\" } },\n },\n },\n};\n\nexport const resourceProviderNamespace: OperationURLParameter = {\n parameterPath: \"resourceProviderNamespace\",\n mapper: {\n serializedName: \"resourceProviderNamespace\",\n required: true,\n type: {\n name: \"String\",\n },\n },\n};\n\nexport const properties: OperationParameter = {\n parameterPath: [\"options\", \"properties\"],\n mapper: ProviderRegistrationRequestMapper,\n};\n\nexport const expand: OperationQueryParameter = {\n parameterPath: [\"options\", \"expand\"],\n mapper: {\n serializedName: \"$expand\",\n type: {\n name: \"String\",\n },\n },\n};\n\nexport const parameters4: OperationParameter = {\n parameterPath: \"parameters\",\n mapper: ResourcesMoveInfoMapper,\n};\n\nexport const sourceResourceGroupName: OperationURLParameter = {\n parameterPath: \"sourceResourceGroupName\",\n mapper: {\n constraints: {\n Pattern: new RegExp(\"^[-\\\\w\\\\._\\\\(\\\\)]+$\"),\n MaxLength: 90,\n MinLength: 1,\n },\n serializedName: \"sourceResourceGroupName\",\n required: true,\n type: {\n name: \"String\",\n },\n },\n};\n\nexport const parentResourcePath: OperationURLParameter = {\n parameterPath: \"parentResourcePath\",\n mapper: {\n serializedName: \"parentResourcePath\",\n required: true,\n type: {\n name: \"String\",\n },\n },\n skipEncoding: true,\n};\n\nexport const resourceType: OperationURLParameter = {\n parameterPath: \"resourceType\",\n mapper: {\n serializedName: \"resourceType\",\n required: true,\n type: {\n name: \"String\",\n },\n },\n skipEncoding: true,\n};\n\nexport const resourceName: OperationURLParameter = {\n parameterPath: \"resourceName\",\n mapper: {\n serializedName: \"resourceName\",\n required: true,\n type: {\n name: \"String\",\n },\n },\n};\n\nexport const apiVersion1: OperationQueryParameter = {\n parameterPath: \"apiVersion\",\n mapper: {\n serializedName: \"api-version\",\n required: true,\n type: {\n name: \"String\",\n },\n },\n};\n\nexport const parameters5: OperationParameter = {\n parameterPath: \"parameters\",\n mapper: GenericResourceMapper,\n};\n\nexport const resourceId: OperationURLParameter = {\n parameterPath: \"resourceId\",\n mapper: {\n serializedName: \"resourceId\",\n required: true,\n type: {\n name: \"String\",\n },\n },\n skipEncoding: true,\n};\n\nexport const parameters6: OperationParameter = {\n parameterPath: \"parameters\",\n mapper: ResourceGroupMapper,\n};\n\nexport const forceDeletionTypes: OperationQueryParameter = {\n parameterPath: [\"options\", \"forceDeletionTypes\"],\n mapper: {\n serializedName: \"forceDeletionTypes\",\n type: {\n name: \"String\",\n },\n },\n};\n\nexport const parameters7: OperationParameter = {\n parameterPath: \"parameters\",\n mapper: ResourceGroupPatchableMapper,\n};\n\nexport const parameters8: OperationParameter = {\n parameterPath: \"parameters\",\n mapper: ExportTemplateRequestMapper,\n};\n\nexport const resourceGroupName1: OperationURLParameter = {\n parameterPath: \"resourceGroupName\",\n mapper: {\n constraints: {\n MaxLength: 90,\n MinLength: 1,\n },\n serializedName: \"resourceGroupName\",\n required: true,\n type: {\n name: \"String\",\n },\n },\n};\n\nexport const tagName: OperationURLParameter = {\n parameterPath: \"tagName\",\n mapper: {\n serializedName: \"tagName\",\n required: true,\n type: {\n name: \"String\",\n },\n },\n};\n\nexport const tagValue: OperationURLParameter = {\n parameterPath: \"tagValue\",\n mapper: {\n serializedName: \"tagValue\",\n required: true,\n type: {\n name: \"String\",\n },\n },\n};\n\nexport const parameters9: OperationParameter = {\n parameterPath: \"parameters\",\n mapper: TagsResourceMapper,\n};\n\nexport const parameters10: OperationParameter = {\n parameterPath: \"parameters\",\n mapper: TagsPatchResourceMapper,\n};\n\nexport const operationId: OperationURLParameter = {\n parameterPath: \"operationId\",\n mapper: {\n serializedName: \"operationId\",\n required: true,\n type: {\n name: \"String\",\n },\n },\n};\n", "/*\n * Copyright (c) Microsoft Corporation.\n * Licensed under the MIT License.\n *\n * Code generated by Microsoft (R) AutoRest Code Generator.\n * Changes may cause incorrect behavior and will be lost if the code is regenerated.\n */\n\nimport { PagedAsyncIterableIterator, PageSettings } from \"@azure/core-paging\";\nimport { setContinuationToken } from \"../pagingHelper.js\";\nimport { Operations } from \"../operationsInterfaces/index.js\";\nimport * as coreClient from \"@azure/core-client\";\nimport * as Mappers from \"../models/mappers.js\";\nimport * as Parameters from \"../models/parameters.js\";\nimport { ResourceManagementClient } from \"../resourceManagementClient.js\";\nimport {\n Operation,\n OperationsListNextOptionalParams,\n OperationsListOptionalParams,\n OperationsListResponse,\n OperationsListNextResponse,\n} from \"../models/index.js\";\n\n/// \n/** Class containing Operations operations. */\nexport class OperationsImpl implements Operations {\n private readonly client: ResourceManagementClient;\n\n /**\n * Initialize a new instance of the class Operations class.\n * @param client Reference to the service client\n */\n constructor(client: ResourceManagementClient) {\n this.client = client;\n }\n\n /**\n * Lists all of the available Microsoft.Resources REST API operations.\n * @param options The options parameters.\n */\n public list(\n options?: OperationsListOptionalParams,\n ): PagedAsyncIterableIterator {\n const iter = this.listPagingAll(options);\n return {\n next() {\n return iter.next();\n },\n [Symbol.asyncIterator]() {\n return this;\n },\n byPage: (settings?: PageSettings) => {\n if (settings?.maxPageSize) {\n throw new Error(\"maxPageSize is not supported by this operation.\");\n }\n return this.listPagingPage(options, settings);\n },\n };\n }\n\n private async *listPagingPage(\n options?: OperationsListOptionalParams,\n settings?: PageSettings,\n ): AsyncIterableIterator {\n let result: OperationsListResponse;\n let continuationToken = settings?.continuationToken;\n if (!continuationToken) {\n result = await this._list(options);\n let page = result.value || [];\n continuationToken = result.nextLink;\n setContinuationToken(page, continuationToken);\n yield page;\n }\n while (continuationToken) {\n result = await this._listNext(continuationToken, options);\n continuationToken = result.nextLink;\n let page = result.value || [];\n setContinuationToken(page, continuationToken);\n yield page;\n }\n }\n\n private async *listPagingAll(\n options?: OperationsListOptionalParams,\n ): AsyncIterableIterator {\n for await (const page of this.listPagingPage(options)) {\n yield* page;\n }\n }\n\n /**\n * Lists all of the available Microsoft.Resources REST API operations.\n * @param options The options parameters.\n */\n private _list(\n options?: OperationsListOptionalParams,\n ): Promise {\n return this.client.sendOperationRequest({ options }, listOperationSpec);\n }\n\n /**\n * ListNext\n * @param nextLink The nextLink from the previous successful call to the List method.\n * @param options The options parameters.\n */\n private _listNext(\n nextLink: string,\n options?: OperationsListNextOptionalParams,\n ): Promise {\n return this.client.sendOperationRequest(\n { nextLink, options },\n listNextOperationSpec,\n );\n }\n}\n// Operation Specifications\nconst serializer = coreClient.createSerializer(Mappers, /* isXml */ false);\n\nconst listOperationSpec: coreClient.OperationSpec = {\n path: \"/providers/Microsoft.Resources/operations\",\n httpMethod: \"GET\",\n responses: {\n 200: {\n bodyMapper: Mappers.OperationListResult,\n },\n default: {\n bodyMapper: Mappers.CloudError,\n },\n },\n queryParameters: [Parameters.apiVersion],\n urlParameters: [Parameters.$host],\n headerParameters: [Parameters.accept],\n serializer,\n};\nconst listNextOperationSpec: coreClient.OperationSpec = {\n path: \"{nextLink}\",\n httpMethod: \"GET\",\n responses: {\n 200: {\n bodyMapper: Mappers.OperationListResult,\n },\n default: {\n bodyMapper: Mappers.CloudError,\n },\n },\n urlParameters: [Parameters.$host, Parameters.nextLink],\n headerParameters: [Parameters.accept],\n serializer,\n};\n", "// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport { createClientLogger } from \"@azure/logger\";\n\n/**\n * The `@azure/logger` configuration for this package.\n * @internal\n */\nexport const logger = createClientLogger(\"core-lro\");\n", "// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\n/**\n * The default time interval to wait before sending the next polling request.\n */\nexport const POLL_INTERVAL_IN_MS = 2000;\n/**\n * The closed set of terminal states.\n */\nexport const terminalStates = [\"succeeded\", \"canceled\", \"failed\"];\n", "// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport {\n LroError,\n InnerError,\n Operation,\n OperationStatus,\n RestorableOperationState,\n StateProxy,\n} from \"./models.js\";\nimport { logger } from \"../logger.js\";\nimport { terminalStates } from \"./constants.js\";\n\n/**\n * Deserializes the state\n */\nexport function deserializeState(\n serializedState: string,\n): RestorableOperationState {\n try {\n return JSON.parse(serializedState).state;\n } catch (e) {\n throw new Error(`Unable to deserialize input state: ${serializedState}`);\n }\n}\n\nfunction setStateError(inputs: {\n state: TState;\n stateProxy: StateProxy;\n isOperationError: (error: Error) => boolean;\n}): (error: Error) => never {\n const { state, stateProxy, isOperationError } = inputs;\n return (error: Error) => {\n if (isOperationError(error)) {\n stateProxy.setError(state, error);\n stateProxy.setFailed(state);\n }\n throw error;\n };\n}\n\nfunction appendReadableErrorMessage(currentMessage: string, innerMessage: string): string {\n let message = currentMessage;\n if (message.slice(-1) !== \".\") {\n message = message + \".\";\n }\n return message + \" \" + innerMessage;\n}\n\nfunction simplifyError(err: LroError): {\n code: string;\n message: string;\n} {\n let message = err.message;\n let code = err.code;\n let curErr = err as InnerError;\n while (curErr.innererror) {\n curErr = curErr.innererror;\n code = curErr.code;\n message = appendReadableErrorMessage(message, curErr.message);\n }\n return {\n code,\n message,\n };\n}\n\nfunction processOperationStatus(result: {\n status: OperationStatus;\n response: TResponse;\n state: RestorableOperationState;\n stateProxy: StateProxy;\n processResult?: (result: TResponse, state: TState) => TResult;\n getError?: (response: TResponse) => LroError | undefined;\n isDone?: (lastResponse: TResponse, state: TState) => boolean;\n setErrorAsResult: boolean;\n}): void {\n const { state, stateProxy, status, isDone, processResult, getError, response, setErrorAsResult } =\n result;\n switch (status) {\n case \"succeeded\": {\n stateProxy.setSucceeded(state);\n break;\n }\n case \"failed\": {\n const err = getError?.(response);\n let postfix = \"\";\n if (err) {\n const { code, message } = simplifyError(err);\n postfix = `. ${code}. ${message}`;\n }\n const errStr = `The long-running operation has failed${postfix}`;\n stateProxy.setError(state, new Error(errStr));\n stateProxy.setFailed(state);\n logger.warning(errStr);\n break;\n }\n case \"canceled\": {\n stateProxy.setCanceled(state);\n break;\n }\n }\n if (\n isDone?.(response, state) ||\n (isDone === undefined &&\n [\"succeeded\", \"canceled\"].concat(setErrorAsResult ? [] : [\"failed\"]).includes(status))\n ) {\n stateProxy.setResult(\n state,\n buildResult({\n response,\n state,\n processResult,\n }),\n );\n }\n}\n\nfunction buildResult(inputs: {\n response: TResponse;\n state: TState;\n processResult?: (result: TResponse, state: TState) => TResult;\n}): TResult {\n const { processResult, response, state } = inputs;\n return processResult ? processResult(response, state) : (response as unknown as TResult);\n}\n\n/**\n * Initiates the long-running operation.\n */\nexport async function initOperation(inputs: {\n init: Operation[\"init\"];\n stateProxy: StateProxy;\n getOperationStatus: (inputs: {\n response: TResponse;\n state: RestorableOperationState;\n operationLocation?: string;\n }) => OperationStatus;\n processResult?: (result: TResponse, state: TState) => TResult;\n withOperationLocation?: (operationLocation: string, isUpdated: boolean) => void;\n setErrorAsResult: boolean;\n}): Promise> {\n const {\n init,\n stateProxy,\n processResult,\n getOperationStatus,\n withOperationLocation,\n setErrorAsResult,\n } = inputs;\n const { operationLocation, resourceLocation, metadata, response } = await init();\n if (operationLocation) withOperationLocation?.(operationLocation, false);\n const config = {\n metadata,\n operationLocation,\n resourceLocation,\n };\n logger.verbose(`LRO: Operation description:`, config);\n const state = stateProxy.initState(config);\n const status = getOperationStatus({ response, state, operationLocation });\n processOperationStatus({ state, status, stateProxy, response, setErrorAsResult, processResult });\n return state;\n}\n\nasync function pollOperationHelper(inputs: {\n poll: Operation[\"poll\"];\n stateProxy: StateProxy;\n state: RestorableOperationState;\n operationLocation: string;\n getOperationStatus: (\n response: TResponse,\n state: RestorableOperationState,\n ) => OperationStatus;\n getResourceLocation: (\n response: TResponse,\n state: RestorableOperationState,\n ) => string | undefined;\n isOperationError: (error: Error) => boolean;\n options?: TOptions;\n}): Promise<{\n status: OperationStatus;\n response: TResponse;\n}> {\n const {\n poll,\n state,\n stateProxy,\n operationLocation,\n getOperationStatus,\n getResourceLocation,\n isOperationError,\n options,\n } = inputs;\n const response = await poll(operationLocation, options).catch(\n setStateError({\n state,\n stateProxy,\n isOperationError,\n }),\n );\n const status = getOperationStatus(response, state);\n logger.verbose(\n `LRO: Status:\\n\\tPolling from: ${\n state.config.operationLocation\n }\\n\\tOperation status: ${status}\\n\\tPolling status: ${\n terminalStates.includes(status) ? \"Stopped\" : \"Running\"\n }`,\n );\n if (status === \"succeeded\") {\n const resourceLocation = getResourceLocation(response, state);\n if (resourceLocation !== undefined) {\n return {\n response: await poll(resourceLocation).catch(\n setStateError({ state, stateProxy, isOperationError }),\n ),\n status,\n };\n }\n }\n return { response, status };\n}\n\n/** Polls the long-running operation. */\nexport async function pollOperation(inputs: {\n poll: Operation[\"poll\"];\n stateProxy: StateProxy;\n state: RestorableOperationState;\n getOperationStatus: (\n response: TResponse,\n state: RestorableOperationState,\n ) => OperationStatus;\n getResourceLocation: (\n response: TResponse,\n state: RestorableOperationState,\n ) => string | undefined;\n isOperationError: (error: Error) => boolean;\n getPollingInterval?: (response: TResponse) => number | undefined;\n setDelay: (intervalInMs: number) => void;\n getOperationLocation?: (\n response: TResponse,\n state: RestorableOperationState,\n ) => string | undefined;\n withOperationLocation?: (operationLocation: string, isUpdated: boolean) => void;\n processResult?: (result: TResponse, state: TState) => TResult;\n getError?: (response: TResponse) => LroError | undefined;\n updateState?: (state: TState, lastResponse: TResponse) => void;\n isDone?: (lastResponse: TResponse, state: TState) => boolean;\n setErrorAsResult: boolean;\n options?: TOptions;\n}): Promise {\n const {\n poll,\n state,\n stateProxy,\n options,\n getOperationStatus,\n getResourceLocation,\n getOperationLocation,\n isOperationError,\n withOperationLocation,\n getPollingInterval,\n processResult,\n getError,\n updateState,\n setDelay,\n isDone,\n setErrorAsResult,\n } = inputs;\n const { operationLocation } = state.config;\n if (operationLocation !== undefined) {\n const { response, status } = await pollOperationHelper({\n poll,\n getOperationStatus,\n state,\n stateProxy,\n operationLocation,\n getResourceLocation,\n isOperationError,\n options,\n });\n processOperationStatus({\n status,\n response,\n state,\n stateProxy,\n isDone,\n processResult,\n getError,\n setErrorAsResult,\n });\n\n if (!terminalStates.includes(status)) {\n const intervalInMs = getPollingInterval?.(response);\n if (intervalInMs) setDelay(intervalInMs);\n const location = getOperationLocation?.(response, state);\n if (location !== undefined) {\n const isUpdated = operationLocation !== location;\n state.config.operationLocation = location;\n withOperationLocation?.(location, isUpdated);\n } else withOperationLocation?.(operationLocation, false);\n }\n updateState?.(state, response);\n }\n}\n", "// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport {\n HttpOperationMode,\n LongRunningOperation,\n LroResourceLocationConfig,\n LroResponse,\n RawResponse,\n ResponseBody,\n} from \"./models.js\";\nimport {\n LroError,\n OperationConfig,\n OperationStatus,\n RestorableOperationState,\n StateProxy,\n} from \"../poller/models.js\";\nimport { initOperation, pollOperation } from \"../poller/operation.js\";\nimport { AbortSignalLike } from \"@azure/abort-controller\";\nimport { logger } from \"../logger.js\";\n\nfunction getOperationLocationPollingUrl(inputs: {\n operationLocation?: string;\n azureAsyncOperation?: string;\n}): string | undefined {\n const { azureAsyncOperation, operationLocation } = inputs;\n return operationLocation ?? azureAsyncOperation;\n}\n\nfunction getLocationHeader(rawResponse: RawResponse): string | undefined {\n return rawResponse.headers[\"location\"];\n}\n\nfunction getOperationLocationHeader(rawResponse: RawResponse): string | undefined {\n return rawResponse.headers[\"operation-location\"];\n}\n\nfunction getAzureAsyncOperationHeader(rawResponse: RawResponse): string | undefined {\n return rawResponse.headers[\"azure-asyncoperation\"];\n}\n\nfunction findResourceLocation(inputs: {\n requestMethod?: string;\n location?: string;\n requestPath?: string;\n resourceLocationConfig?: LroResourceLocationConfig;\n}): string | undefined {\n const { location, requestMethod, requestPath, resourceLocationConfig } = inputs;\n switch (requestMethod) {\n case \"PUT\": {\n return requestPath;\n }\n case \"DELETE\": {\n return undefined;\n }\n case \"PATCH\": {\n return getDefault() ?? requestPath;\n }\n default: {\n return getDefault();\n }\n }\n\n function getDefault() {\n switch (resourceLocationConfig) {\n case \"azure-async-operation\": {\n return undefined;\n }\n case \"original-uri\": {\n return requestPath;\n }\n case \"location\":\n default: {\n return location;\n }\n }\n }\n}\n\nexport function inferLroMode(inputs: {\n rawResponse: RawResponse;\n requestPath?: string;\n requestMethod?: string;\n resourceLocationConfig?: LroResourceLocationConfig;\n}): (OperationConfig & { mode: HttpOperationMode }) | undefined {\n const { rawResponse, requestMethod, requestPath, resourceLocationConfig } = inputs;\n const operationLocation = getOperationLocationHeader(rawResponse);\n const azureAsyncOperation = getAzureAsyncOperationHeader(rawResponse);\n const pollingUrl = getOperationLocationPollingUrl({ operationLocation, azureAsyncOperation });\n const location = getLocationHeader(rawResponse);\n const normalizedRequestMethod = requestMethod?.toLocaleUpperCase();\n if (pollingUrl !== undefined) {\n return {\n mode: \"OperationLocation\",\n operationLocation: pollingUrl,\n resourceLocation: findResourceLocation({\n requestMethod: normalizedRequestMethod,\n location,\n requestPath,\n resourceLocationConfig,\n }),\n };\n } else if (location !== undefined) {\n return {\n mode: \"ResourceLocation\",\n operationLocation: location,\n };\n } else if (normalizedRequestMethod === \"PUT\" && requestPath) {\n return {\n mode: \"Body\",\n operationLocation: requestPath,\n };\n } else {\n return undefined;\n }\n}\n\nfunction transformStatus(inputs: { status: unknown; statusCode: number }): OperationStatus {\n const { status, statusCode } = inputs;\n if (typeof status !== \"string\" && status !== undefined) {\n throw new Error(\n `Polling was unsuccessful. Expected status to have a string value or no value but it has instead: ${status}. This doesn't necessarily indicate the operation has failed. Check your Azure subscription or resource status for more information.`,\n );\n }\n switch (status?.toLocaleLowerCase()) {\n case undefined:\n return toOperationStatus(statusCode);\n case \"succeeded\":\n return \"succeeded\";\n case \"failed\":\n return \"failed\";\n case \"running\":\n case \"accepted\":\n case \"started\":\n case \"canceling\":\n case \"cancelling\":\n return \"running\";\n case \"canceled\":\n case \"cancelled\":\n return \"canceled\";\n default: {\n logger.verbose(`LRO: unrecognized operation status: ${status}`);\n return status as OperationStatus;\n }\n }\n}\n\nfunction getStatus(rawResponse: RawResponse): OperationStatus {\n const { status } = (rawResponse.body as ResponseBody) ?? {};\n return transformStatus({ status, statusCode: rawResponse.statusCode });\n}\n\nfunction getProvisioningState(rawResponse: RawResponse): OperationStatus {\n const { properties, provisioningState } = (rawResponse.body as ResponseBody) ?? {};\n const status = properties?.provisioningState ?? provisioningState;\n return transformStatus({ status, statusCode: rawResponse.statusCode });\n}\n\nfunction toOperationStatus(statusCode: number): OperationStatus {\n if (statusCode === 202) {\n return \"running\";\n } else if (statusCode < 300) {\n return \"succeeded\";\n } else {\n return \"failed\";\n }\n}\n\nexport function parseRetryAfter({ rawResponse }: LroResponse): number | undefined {\n const retryAfter: string | undefined = rawResponse.headers[\"retry-after\"];\n if (retryAfter !== undefined) {\n // Retry-After header value is either in HTTP date format, or in seconds\n const retryAfterInSeconds = parseInt(retryAfter);\n return isNaN(retryAfterInSeconds)\n ? calculatePollingIntervalFromDate(new Date(retryAfter))\n : retryAfterInSeconds * 1000;\n }\n return undefined;\n}\n\nexport function getErrorFromResponse(response: LroResponse): LroError | undefined {\n const error = accessBodyProperty(response, \"error\");\n if (!error) {\n logger.warning(\n `The long-running operation failed but there is no error property in the response's body`,\n );\n return;\n }\n if (!error.code || !error.message) {\n logger.warning(\n `The long-running operation failed but the error property in the response's body doesn't contain code or message`,\n );\n return;\n }\n return error as LroError;\n}\n\nfunction calculatePollingIntervalFromDate(retryAfterDate: Date): number | undefined {\n const timeNow = Math.floor(new Date().getTime());\n const retryAfterTime = retryAfterDate.getTime();\n if (timeNow < retryAfterTime) {\n return retryAfterTime - timeNow;\n }\n return undefined;\n}\n\nexport function getStatusFromInitialResponse(inputs: {\n response: LroResponse;\n state: RestorableOperationState;\n operationLocation?: string;\n}): OperationStatus {\n const { response, state, operationLocation } = inputs;\n function helper(): OperationStatus {\n const mode = state.config.metadata?.[\"mode\"];\n switch (mode) {\n case undefined:\n return toOperationStatus(response.rawResponse.statusCode);\n case \"Body\":\n return getOperationStatus(response, state);\n default:\n return \"running\";\n }\n }\n const status = helper();\n return status === \"running\" && operationLocation === undefined ? \"succeeded\" : status;\n}\n\n/**\n * Initiates the long-running operation.\n */\nexport async function initHttpOperation(inputs: {\n stateProxy: StateProxy;\n resourceLocationConfig?: LroResourceLocationConfig;\n processResult?: (result: unknown, state: TState) => TResult;\n setErrorAsResult: boolean;\n lro: LongRunningOperation;\n}): Promise> {\n const { stateProxy, resourceLocationConfig, processResult, lro, setErrorAsResult } = inputs;\n return initOperation({\n init: async () => {\n const response = await lro.sendInitialRequest();\n const config = inferLroMode({\n rawResponse: response.rawResponse,\n requestPath: lro.requestPath,\n requestMethod: lro.requestMethod,\n resourceLocationConfig,\n });\n return {\n response,\n operationLocation: config?.operationLocation,\n resourceLocation: config?.resourceLocation,\n ...(config?.mode ? { metadata: { mode: config.mode } } : {}),\n };\n },\n stateProxy,\n processResult: processResult\n ? ({ flatResponse }, state) => processResult(flatResponse, state)\n : ({ flatResponse }) => flatResponse as TResult,\n getOperationStatus: getStatusFromInitialResponse,\n setErrorAsResult,\n });\n}\n\nexport function getOperationLocation(\n { rawResponse }: LroResponse,\n state: RestorableOperationState,\n): string | undefined {\n const mode = state.config.metadata?.[\"mode\"];\n switch (mode) {\n case \"OperationLocation\": {\n return getOperationLocationPollingUrl({\n operationLocation: getOperationLocationHeader(rawResponse),\n azureAsyncOperation: getAzureAsyncOperationHeader(rawResponse),\n });\n }\n case \"ResourceLocation\": {\n return getLocationHeader(rawResponse);\n }\n case \"Body\":\n default: {\n return undefined;\n }\n }\n}\n\nexport function getOperationStatus(\n { rawResponse }: LroResponse,\n state: RestorableOperationState,\n): OperationStatus {\n const mode = state.config.metadata?.[\"mode\"];\n switch (mode) {\n case \"OperationLocation\": {\n return getStatus(rawResponse);\n }\n case \"ResourceLocation\": {\n return toOperationStatus(rawResponse.statusCode);\n }\n case \"Body\": {\n return getProvisioningState(rawResponse);\n }\n default:\n throw new Error(`Internal error: Unexpected operation mode: ${mode}`);\n }\n}\n\nfunction accessBodyProperty

(\n { flatResponse, rawResponse }: LroResponse,\n prop: P,\n): ResponseBody[P] {\n return (flatResponse as ResponseBody)?.[prop] ?? (rawResponse.body as ResponseBody)?.[prop];\n}\n\nexport function getResourceLocation(\n res: LroResponse,\n state: RestorableOperationState,\n): string | undefined {\n const loc = accessBodyProperty(res, \"resourceLocation\");\n if (loc && typeof loc === \"string\") {\n state.config.resourceLocation = loc;\n }\n return state.config.resourceLocation;\n}\n\nexport function isOperationError(e: Error): boolean {\n return e.name === \"RestError\";\n}\n\n/** Polls the long-running operation. */\nexport async function pollHttpOperation(inputs: {\n lro: LongRunningOperation;\n stateProxy: StateProxy;\n processResult?: (result: unknown, state: TState) => TResult;\n updateState?: (state: TState, lastResponse: LroResponse) => void;\n isDone?: (lastResponse: LroResponse, state: TState) => boolean;\n setDelay: (intervalInMs: number) => void;\n options?: { abortSignal?: AbortSignalLike };\n state: RestorableOperationState;\n setErrorAsResult: boolean;\n}): Promise {\n const {\n lro,\n stateProxy,\n options,\n processResult,\n updateState,\n setDelay,\n state,\n setErrorAsResult,\n } = inputs;\n return pollOperation({\n state,\n stateProxy,\n setDelay,\n processResult: processResult\n ? ({ flatResponse }, inputState) => processResult(flatResponse, inputState)\n : ({ flatResponse }) => flatResponse as TResult,\n getError: getErrorFromResponse,\n updateState,\n getPollingInterval: parseRetryAfter,\n getOperationLocation,\n getOperationStatus,\n isOperationError,\n getResourceLocation,\n options,\n /**\n * The expansion here is intentional because `lro` could be an object that\n * references an inner this, so we need to preserve a reference to it.\n */\n poll: async (location: string, inputOptions?: { abortSignal?: AbortSignalLike }) =>\n lro.sendPollRequest(location, inputOptions),\n setErrorAsResult,\n });\n}\n", "// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport { AbortSignalLike } from \"@azure/abort-controller\";\nimport {\n BuildCreatePollerOptions,\n CreatePollerOptions,\n Operation,\n OperationState,\n RestorableOperationState,\n SimplePollerLike,\n StateProxy,\n} from \"./models.js\";\nimport { deserializeState, initOperation, pollOperation } from \"./operation.js\";\nimport { POLL_INTERVAL_IN_MS } from \"./constants.js\";\nimport { delay } from \"@azure/core-util\";\n\nconst createStateProxy: >() => StateProxy<\n TState,\n TResult\n> = () => ({\n /**\n * The state at this point is created to be of type OperationState.\n * It will be updated later to be of type TState when the\n * customer-provided callback, `updateState`, is called during polling.\n */\n initState: (config) => ({ status: \"running\", config }) as any,\n setCanceled: (state) => (state.status = \"canceled\"),\n setError: (state, error) => (state.error = error),\n setResult: (state, result) => (state.result = result),\n setRunning: (state) => (state.status = \"running\"),\n setSucceeded: (state) => (state.status = \"succeeded\"),\n setFailed: (state) => (state.status = \"failed\"),\n\n getError: (state) => state.error,\n getResult: (state) => state.result,\n isCanceled: (state) => state.status === \"canceled\",\n isFailed: (state) => state.status === \"failed\",\n isRunning: (state) => state.status === \"running\",\n isSucceeded: (state) => state.status === \"succeeded\",\n});\n\n/**\n * Returns a poller factory.\n */\nexport function buildCreatePoller>(\n inputs: BuildCreatePollerOptions,\n): (\n lro: Operation,\n options?: CreatePollerOptions,\n) => Promise> {\n const {\n getOperationLocation,\n getStatusFromInitialResponse,\n getStatusFromPollResponse,\n isOperationError,\n getResourceLocation,\n getPollingInterval,\n getError,\n resolveOnUnsuccessful,\n } = inputs;\n return async (\n { init, poll }: Operation,\n options?: CreatePollerOptions,\n ) => {\n const {\n processResult,\n updateState,\n withOperationLocation: withOperationLocationCallback,\n intervalInMs = POLL_INTERVAL_IN_MS,\n restoreFrom,\n } = options || {};\n const stateProxy = createStateProxy();\n const withOperationLocation = withOperationLocationCallback\n ? (() => {\n let called = false;\n return (operationLocation: string, isUpdated: boolean) => {\n if (isUpdated) withOperationLocationCallback(operationLocation);\n else if (!called) withOperationLocationCallback(operationLocation);\n called = true;\n };\n })()\n : undefined;\n const state: RestorableOperationState = restoreFrom\n ? deserializeState(restoreFrom)\n : await initOperation({\n init,\n stateProxy,\n processResult,\n getOperationStatus: getStatusFromInitialResponse,\n withOperationLocation,\n setErrorAsResult: !resolveOnUnsuccessful,\n });\n let resultPromise: Promise | undefined;\n const abortController = new AbortController();\n // Progress handlers\n type Handler = (state: TState) => void;\n const handlers = new Map();\n const handleProgressEvents = async (): Promise => handlers.forEach((h) => h(state));\n const cancelErrMsg = \"Operation was canceled\";\n let currentPollIntervalInMs = intervalInMs;\n\n const poller: SimplePollerLike = {\n getOperationState: () => state,\n getResult: () => state.result,\n isDone: () => [\"succeeded\", \"failed\", \"canceled\"].includes(state.status),\n isStopped: () => resultPromise === undefined,\n stopPolling: () => {\n abortController.abort();\n },\n toString: () =>\n JSON.stringify({\n state,\n }),\n onProgress: (callback: (state: TState) => void) => {\n const s = Symbol();\n handlers.set(s, callback);\n return () => handlers.delete(s);\n },\n pollUntilDone: (pollOptions?: { abortSignal?: AbortSignalLike }) =>\n (resultPromise ??= (async () => {\n const { abortSignal: inputAbortSignal } = pollOptions || {};\n // In the future we can use AbortSignal.any() instead\n function abortListener(): void {\n abortController.abort();\n }\n const abortSignal = abortController.signal;\n if (inputAbortSignal?.aborted) {\n abortController.abort();\n } else if (!abortSignal.aborted) {\n inputAbortSignal?.addEventListener(\"abort\", abortListener, { once: true });\n }\n\n try {\n if (!poller.isDone()) {\n await poller.poll({ abortSignal });\n while (!poller.isDone()) {\n await delay(currentPollIntervalInMs, { abortSignal });\n await poller.poll({ abortSignal });\n }\n }\n } finally {\n inputAbortSignal?.removeEventListener(\"abort\", abortListener);\n }\n if (resolveOnUnsuccessful) {\n return poller.getResult() as TResult;\n } else {\n switch (state.status) {\n case \"succeeded\":\n return poller.getResult() as TResult;\n case \"canceled\":\n throw new Error(cancelErrMsg);\n case \"failed\":\n throw state.error;\n case \"notStarted\":\n case \"running\":\n throw new Error(`Polling completed without succeeding or failing`);\n }\n }\n })().finally(() => {\n resultPromise = undefined;\n })),\n async poll(pollOptions?: { abortSignal?: AbortSignalLike }): Promise {\n if (resolveOnUnsuccessful) {\n if (poller.isDone()) return;\n } else {\n switch (state.status) {\n case \"succeeded\":\n return;\n case \"canceled\":\n throw new Error(cancelErrMsg);\n case \"failed\":\n throw state.error;\n }\n }\n await pollOperation({\n poll,\n state,\n stateProxy,\n getOperationLocation,\n isOperationError,\n withOperationLocation,\n getPollingInterval,\n getOperationStatus: getStatusFromPollResponse,\n getResourceLocation,\n processResult,\n getError,\n updateState,\n options: pollOptions,\n setDelay: (pollIntervalInMs) => {\n currentPollIntervalInMs = pollIntervalInMs;\n },\n setErrorAsResult: !resolveOnUnsuccessful,\n });\n await handleProgressEvents();\n if (!resolveOnUnsuccessful) {\n switch (state.status) {\n case \"canceled\":\n throw new Error(cancelErrMsg);\n case \"failed\":\n throw state.error;\n }\n }\n },\n };\n return poller;\n };\n}\n", "// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport { LongRunningOperation, LroResponse } from \"./models.js\";\nimport { OperationState, SimplePollerLike } from \"../poller/models.js\";\nimport {\n getErrorFromResponse,\n getOperationLocation,\n getOperationStatus,\n getResourceLocation,\n getStatusFromInitialResponse,\n inferLroMode,\n isOperationError,\n parseRetryAfter,\n} from \"./operation.js\";\nimport { CreateHttpPollerOptions } from \"./models.js\";\nimport { buildCreatePoller } from \"../poller/poller.js\";\n\n/**\n * Creates a poller that can be used to poll a long-running operation.\n * @param lro - Description of the long-running operation\n * @param options - options to configure the poller\n * @returns an initialized poller\n */\nexport async function createHttpPoller>(\n lro: LongRunningOperation,\n options?: CreateHttpPollerOptions,\n): Promise> {\n const {\n resourceLocationConfig,\n intervalInMs,\n processResult,\n restoreFrom,\n updateState,\n withOperationLocation,\n resolveOnUnsuccessful = false,\n } = options || {};\n return buildCreatePoller({\n getStatusFromInitialResponse,\n getStatusFromPollResponse: getOperationStatus,\n isOperationError,\n getOperationLocation,\n getResourceLocation,\n getPollingInterval: parseRetryAfter,\n getError: getErrorFromResponse,\n resolveOnUnsuccessful,\n })(\n {\n init: async () => {\n const response = await lro.sendInitialRequest();\n const config = inferLroMode({\n rawResponse: response.rawResponse,\n requestPath: lro.requestPath,\n requestMethod: lro.requestMethod,\n resourceLocationConfig,\n });\n return {\n response,\n operationLocation: config?.operationLocation,\n resourceLocation: config?.resourceLocation,\n ...(config?.mode ? { metadata: { mode: config.mode } } : {}),\n };\n },\n poll: lro.sendPollRequest,\n },\n {\n intervalInMs,\n withOperationLocation,\n restoreFrom,\n updateState,\n processResult: processResult\n ? ({ flatResponse }, state) => processResult(flatResponse, state)\n : ({ flatResponse }) => flatResponse as TResult,\n },\n );\n}\n", "/*\n * Copyright (c) Microsoft Corporation.\n * Licensed under the MIT License.\n *\n * Code generated by Microsoft (R) AutoRest Code Generator.\n * Changes may cause incorrect behavior and will be lost if the code is regenerated.\n */\n\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { AbortSignalLike } from \"@azure/abort-controller\";\nimport { LongRunningOperation, LroResponse } from \"@azure/core-lro\";\n\nexport function createLroSpec(inputs: {\n sendOperationFn: (args: any, spec: any) => Promise>;\n args: Record;\n spec: {\n readonly requestBody?: unknown;\n readonly path?: string;\n readonly httpMethod: string;\n } & Record;\n}): LongRunningOperation {\n const { args, spec, sendOperationFn } = inputs;\n return {\n requestMethod: spec.httpMethod,\n requestPath: spec.path!,\n sendInitialRequest: () => sendOperationFn(args, spec),\n sendPollRequest: (\n path: string,\n options?: { abortSignal?: AbortSignalLike },\n ) => {\n const { requestBody, ...restSpec } = spec;\n return sendOperationFn(args, {\n ...restSpec,\n httpMethod: \"GET\",\n path,\n abortSignal: options?.abortSignal,\n });\n },\n };\n}\n", "/*\n * Copyright (c) Microsoft Corporation.\n * Licensed under the MIT License.\n *\n * Code generated by Microsoft (R) AutoRest Code Generator.\n * Changes may cause incorrect behavior and will be lost if the code is regenerated.\n */\n\nimport { PagedAsyncIterableIterator, PageSettings } from \"@azure/core-paging\";\nimport { setContinuationToken } from \"../pagingHelper.js\";\nimport { Deployments } from \"../operationsInterfaces/index.js\";\nimport * as coreClient from \"@azure/core-client\";\nimport * as Mappers from \"../models/mappers.js\";\nimport * as Parameters from \"../models/parameters.js\";\nimport { ResourceManagementClient } from \"../resourceManagementClient.js\";\nimport {\n SimplePollerLike,\n OperationState,\n createHttpPoller,\n} from \"@azure/core-lro\";\nimport { createLroSpec } from \"../lroImpl.js\";\nimport {\n DeploymentExtended,\n DeploymentsListAtScopeNextOptionalParams,\n DeploymentsListAtScopeOptionalParams,\n DeploymentsListAtScopeResponse,\n DeploymentsListAtTenantScopeNextOptionalParams,\n DeploymentsListAtTenantScopeOptionalParams,\n DeploymentsListAtTenantScopeResponse,\n DeploymentsListAtManagementGroupScopeNextOptionalParams,\n DeploymentsListAtManagementGroupScopeOptionalParams,\n DeploymentsListAtManagementGroupScopeResponse,\n DeploymentsListAtSubscriptionScopeNextOptionalParams,\n DeploymentsListAtSubscriptionScopeOptionalParams,\n DeploymentsListAtSubscriptionScopeResponse,\n DeploymentsListByResourceGroupNextOptionalParams,\n DeploymentsListByResourceGroupOptionalParams,\n DeploymentsListByResourceGroupResponse,\n DeploymentsDeleteAtScopeOptionalParams,\n DeploymentsCheckExistenceAtScopeOptionalParams,\n DeploymentsCheckExistenceAtScopeResponse,\n Deployment,\n DeploymentsCreateOrUpdateAtScopeOptionalParams,\n DeploymentsCreateOrUpdateAtScopeResponse,\n DeploymentsGetAtScopeOptionalParams,\n DeploymentsGetAtScopeResponse,\n DeploymentsCancelAtScopeOptionalParams,\n DeploymentsValidateAtScopeOptionalParams,\n DeploymentsValidateAtScopeResponse,\n DeploymentsExportTemplateAtScopeOptionalParams,\n DeploymentsExportTemplateAtScopeResponse,\n DeploymentsDeleteAtTenantScopeOptionalParams,\n DeploymentsCheckExistenceAtTenantScopeOptionalParams,\n DeploymentsCheckExistenceAtTenantScopeResponse,\n ScopedDeployment,\n DeploymentsCreateOrUpdateAtTenantScopeOptionalParams,\n DeploymentsCreateOrUpdateAtTenantScopeResponse,\n DeploymentsGetAtTenantScopeOptionalParams,\n DeploymentsGetAtTenantScopeResponse,\n DeploymentsCancelAtTenantScopeOptionalParams,\n DeploymentsValidateAtTenantScopeOptionalParams,\n DeploymentsValidateAtTenantScopeResponse,\n ScopedDeploymentWhatIf,\n DeploymentsWhatIfAtTenantScopeOptionalParams,\n DeploymentsWhatIfAtTenantScopeResponse,\n DeploymentsExportTemplateAtTenantScopeOptionalParams,\n DeploymentsExportTemplateAtTenantScopeResponse,\n DeploymentsDeleteAtManagementGroupScopeOptionalParams,\n DeploymentsCheckExistenceAtManagementGroupScopeOptionalParams,\n DeploymentsCheckExistenceAtManagementGroupScopeResponse,\n DeploymentsCreateOrUpdateAtManagementGroupScopeOptionalParams,\n DeploymentsCreateOrUpdateAtManagementGroupScopeResponse,\n DeploymentsGetAtManagementGroupScopeOptionalParams,\n DeploymentsGetAtManagementGroupScopeResponse,\n DeploymentsCancelAtManagementGroupScopeOptionalParams,\n DeploymentsValidateAtManagementGroupScopeOptionalParams,\n DeploymentsValidateAtManagementGroupScopeResponse,\n DeploymentsWhatIfAtManagementGroupScopeOptionalParams,\n DeploymentsWhatIfAtManagementGroupScopeResponse,\n DeploymentsExportTemplateAtManagementGroupScopeOptionalParams,\n DeploymentsExportTemplateAtManagementGroupScopeResponse,\n DeploymentsDeleteAtSubscriptionScopeOptionalParams,\n DeploymentsCheckExistenceAtSubscriptionScopeOptionalParams,\n DeploymentsCheckExistenceAtSubscriptionScopeResponse,\n DeploymentsCreateOrUpdateAtSubscriptionScopeOptionalParams,\n DeploymentsCreateOrUpdateAtSubscriptionScopeResponse,\n DeploymentsGetAtSubscriptionScopeOptionalParams,\n DeploymentsGetAtSubscriptionScopeResponse,\n DeploymentsCancelAtSubscriptionScopeOptionalParams,\n DeploymentsValidateAtSubscriptionScopeOptionalParams,\n DeploymentsValidateAtSubscriptionScopeResponse,\n DeploymentWhatIf,\n DeploymentsWhatIfAtSubscriptionScopeOptionalParams,\n DeploymentsWhatIfAtSubscriptionScopeResponse,\n DeploymentsExportTemplateAtSubscriptionScopeOptionalParams,\n DeploymentsExportTemplateAtSubscriptionScopeResponse,\n DeploymentsDeleteOptionalParams,\n DeploymentsCheckExistenceOptionalParams,\n DeploymentsCheckExistenceResponse,\n DeploymentsCreateOrUpdateOptionalParams,\n DeploymentsCreateOrUpdateResponse,\n DeploymentsGetOptionalParams,\n DeploymentsGetResponse,\n DeploymentsCancelOptionalParams,\n DeploymentsValidateOptionalParams,\n DeploymentsValidateResponse,\n DeploymentsWhatIfOptionalParams,\n DeploymentsWhatIfResponse,\n DeploymentsExportTemplateOptionalParams,\n DeploymentsExportTemplateResponse,\n DeploymentsCalculateTemplateHashOptionalParams,\n DeploymentsCalculateTemplateHashResponse,\n DeploymentsListAtScopeNextResponse,\n DeploymentsListAtTenantScopeNextResponse,\n DeploymentsListAtManagementGroupScopeNextResponse,\n DeploymentsListAtSubscriptionScopeNextResponse,\n DeploymentsListByResourceGroupNextResponse,\n} from \"../models/index.js\";\n\n/// \n/** Class containing Deployments operations. */\nexport class DeploymentsImpl implements Deployments {\n private readonly client: ResourceManagementClient;\n\n /**\n * Initialize a new instance of the class Deployments class.\n * @param client Reference to the service client\n */\n constructor(client: ResourceManagementClient) {\n this.client = client;\n }\n\n /**\n * Get all the deployments at the given scope.\n * @param scope The resource scope.\n * @param options The options parameters.\n */\n public listAtScope(\n scope: string,\n options?: DeploymentsListAtScopeOptionalParams,\n ): PagedAsyncIterableIterator {\n const iter = this.listAtScopePagingAll(scope, options);\n return {\n next() {\n return iter.next();\n },\n [Symbol.asyncIterator]() {\n return this;\n },\n byPage: (settings?: PageSettings) => {\n if (settings?.maxPageSize) {\n throw new Error(\"maxPageSize is not supported by this operation.\");\n }\n return this.listAtScopePagingPage(scope, options, settings);\n },\n };\n }\n\n private async *listAtScopePagingPage(\n scope: string,\n options?: DeploymentsListAtScopeOptionalParams,\n settings?: PageSettings,\n ): AsyncIterableIterator {\n let result: DeploymentsListAtScopeResponse;\n let continuationToken = settings?.continuationToken;\n if (!continuationToken) {\n result = await this._listAtScope(scope, options);\n let page = result.value || [];\n continuationToken = result.nextLink;\n setContinuationToken(page, continuationToken);\n yield page;\n }\n while (continuationToken) {\n result = await this._listAtScopeNext(scope, continuationToken, options);\n continuationToken = result.nextLink;\n let page = result.value || [];\n setContinuationToken(page, continuationToken);\n yield page;\n }\n }\n\n private async *listAtScopePagingAll(\n scope: string,\n options?: DeploymentsListAtScopeOptionalParams,\n ): AsyncIterableIterator {\n for await (const page of this.listAtScopePagingPage(scope, options)) {\n yield* page;\n }\n }\n\n /**\n * Get all the deployments at the tenant scope.\n * @param options The options parameters.\n */\n public listAtTenantScope(\n options?: DeploymentsListAtTenantScopeOptionalParams,\n ): PagedAsyncIterableIterator {\n const iter = this.listAtTenantScopePagingAll(options);\n return {\n next() {\n return iter.next();\n },\n [Symbol.asyncIterator]() {\n return this;\n },\n byPage: (settings?: PageSettings) => {\n if (settings?.maxPageSize) {\n throw new Error(\"maxPageSize is not supported by this operation.\");\n }\n return this.listAtTenantScopePagingPage(options, settings);\n },\n };\n }\n\n private async *listAtTenantScopePagingPage(\n options?: DeploymentsListAtTenantScopeOptionalParams,\n settings?: PageSettings,\n ): AsyncIterableIterator {\n let result: DeploymentsListAtTenantScopeResponse;\n let continuationToken = settings?.continuationToken;\n if (!continuationToken) {\n result = await this._listAtTenantScope(options);\n let page = result.value || [];\n continuationToken = result.nextLink;\n setContinuationToken(page, continuationToken);\n yield page;\n }\n while (continuationToken) {\n result = await this._listAtTenantScopeNext(continuationToken, options);\n continuationToken = result.nextLink;\n let page = result.value || [];\n setContinuationToken(page, continuationToken);\n yield page;\n }\n }\n\n private async *listAtTenantScopePagingAll(\n options?: DeploymentsListAtTenantScopeOptionalParams,\n ): AsyncIterableIterator {\n for await (const page of this.listAtTenantScopePagingPage(options)) {\n yield* page;\n }\n }\n\n /**\n * Get all the deployments for a management group.\n * @param groupId The management group ID.\n * @param options The options parameters.\n */\n public listAtManagementGroupScope(\n groupId: string,\n options?: DeploymentsListAtManagementGroupScopeOptionalParams,\n ): PagedAsyncIterableIterator {\n const iter = this.listAtManagementGroupScopePagingAll(groupId, options);\n return {\n next() {\n return iter.next();\n },\n [Symbol.asyncIterator]() {\n return this;\n },\n byPage: (settings?: PageSettings) => {\n if (settings?.maxPageSize) {\n throw new Error(\"maxPageSize is not supported by this operation.\");\n }\n return this.listAtManagementGroupScopePagingPage(\n groupId,\n options,\n settings,\n );\n },\n };\n }\n\n private async *listAtManagementGroupScopePagingPage(\n groupId: string,\n options?: DeploymentsListAtManagementGroupScopeOptionalParams,\n settings?: PageSettings,\n ): AsyncIterableIterator {\n let result: DeploymentsListAtManagementGroupScopeResponse;\n let continuationToken = settings?.continuationToken;\n if (!continuationToken) {\n result = await this._listAtManagementGroupScope(groupId, options);\n let page = result.value || [];\n continuationToken = result.nextLink;\n setContinuationToken(page, continuationToken);\n yield page;\n }\n while (continuationToken) {\n result = await this._listAtManagementGroupScopeNext(\n groupId,\n continuationToken,\n options,\n );\n continuationToken = result.nextLink;\n let page = result.value || [];\n setContinuationToken(page, continuationToken);\n yield page;\n }\n }\n\n private async *listAtManagementGroupScopePagingAll(\n groupId: string,\n options?: DeploymentsListAtManagementGroupScopeOptionalParams,\n ): AsyncIterableIterator {\n for await (const page of this.listAtManagementGroupScopePagingPage(\n groupId,\n options,\n )) {\n yield* page;\n }\n }\n\n /**\n * Get all the deployments for a subscription.\n * @param options The options parameters.\n */\n public listAtSubscriptionScope(\n options?: DeploymentsListAtSubscriptionScopeOptionalParams,\n ): PagedAsyncIterableIterator {\n const iter = this.listAtSubscriptionScopePagingAll(options);\n return {\n next() {\n return iter.next();\n },\n [Symbol.asyncIterator]() {\n return this;\n },\n byPage: (settings?: PageSettings) => {\n if (settings?.maxPageSize) {\n throw new Error(\"maxPageSize is not supported by this operation.\");\n }\n return this.listAtSubscriptionScopePagingPage(options, settings);\n },\n };\n }\n\n private async *listAtSubscriptionScopePagingPage(\n options?: DeploymentsListAtSubscriptionScopeOptionalParams,\n settings?: PageSettings,\n ): AsyncIterableIterator {\n let result: DeploymentsListAtSubscriptionScopeResponse;\n let continuationToken = settings?.continuationToken;\n if (!continuationToken) {\n result = await this._listAtSubscriptionScope(options);\n let page = result.value || [];\n continuationToken = result.nextLink;\n setContinuationToken(page, continuationToken);\n yield page;\n }\n while (continuationToken) {\n result = await this._listAtSubscriptionScopeNext(\n continuationToken,\n options,\n );\n continuationToken = result.nextLink;\n let page = result.value || [];\n setContinuationToken(page, continuationToken);\n yield page;\n }\n }\n\n private async *listAtSubscriptionScopePagingAll(\n options?: DeploymentsListAtSubscriptionScopeOptionalParams,\n ): AsyncIterableIterator {\n for await (const page of this.listAtSubscriptionScopePagingPage(options)) {\n yield* page;\n }\n }\n\n /**\n * Get all the deployments for a resource group.\n * @param resourceGroupName The name of the resource group with the deployments to get. The name is\n * case insensitive.\n * @param options The options parameters.\n */\n public listByResourceGroup(\n resourceGroupName: string,\n options?: DeploymentsListByResourceGroupOptionalParams,\n ): PagedAsyncIterableIterator {\n const iter = this.listByResourceGroupPagingAll(resourceGroupName, options);\n return {\n next() {\n return iter.next();\n },\n [Symbol.asyncIterator]() {\n return this;\n },\n byPage: (settings?: PageSettings) => {\n if (settings?.maxPageSize) {\n throw new Error(\"maxPageSize is not supported by this operation.\");\n }\n return this.listByResourceGroupPagingPage(\n resourceGroupName,\n options,\n settings,\n );\n },\n };\n }\n\n private async *listByResourceGroupPagingPage(\n resourceGroupName: string,\n options?: DeploymentsListByResourceGroupOptionalParams,\n settings?: PageSettings,\n ): AsyncIterableIterator {\n let result: DeploymentsListByResourceGroupResponse;\n let continuationToken = settings?.continuationToken;\n if (!continuationToken) {\n result = await this._listByResourceGroup(resourceGroupName, options);\n let page = result.value || [];\n continuationToken = result.nextLink;\n setContinuationToken(page, continuationToken);\n yield page;\n }\n while (continuationToken) {\n result = await this._listByResourceGroupNext(\n resourceGroupName,\n continuationToken,\n options,\n );\n continuationToken = result.nextLink;\n let page = result.value || [];\n setContinuationToken(page, continuationToken);\n yield page;\n }\n }\n\n private async *listByResourceGroupPagingAll(\n resourceGroupName: string,\n options?: DeploymentsListByResourceGroupOptionalParams,\n ): AsyncIterableIterator {\n for await (const page of this.listByResourceGroupPagingPage(\n resourceGroupName,\n options,\n )) {\n yield* page;\n }\n }\n\n /**\n * A template deployment that is currently running cannot be deleted. Deleting a template deployment\n * removes the associated deployment operations. This is an asynchronous operation that returns a\n * status of 202 until the template deployment is successfully deleted. The Location response header\n * contains the URI that is used to obtain the status of the process. While the process is running, a\n * call to the URI in the Location header returns a status of 202. When the process finishes, the URI\n * in the Location header returns a status of 204 on success. If the asynchronous request failed, the\n * URI in the Location header returns an error-level status code.\n * @param scope The resource scope.\n * @param deploymentName The name of the deployment.\n * @param options The options parameters.\n */\n async beginDeleteAtScope(\n scope: string,\n deploymentName: string,\n options?: DeploymentsDeleteAtScopeOptionalParams,\n ): Promise, void>> {\n const directSendOperation = async (\n args: coreClient.OperationArguments,\n spec: coreClient.OperationSpec,\n ): Promise => {\n return this.client.sendOperationRequest(args, spec);\n };\n const sendOperationFn = async (\n args: coreClient.OperationArguments,\n spec: coreClient.OperationSpec,\n ) => {\n let currentRawResponse: coreClient.FullOperationResponse | undefined =\n undefined;\n const providedCallback = args.options?.onResponse;\n const callback: coreClient.RawResponseCallback = (\n rawResponse: coreClient.FullOperationResponse,\n flatResponse: unknown,\n ) => {\n currentRawResponse = rawResponse;\n providedCallback?.(rawResponse, flatResponse);\n };\n const updatedArgs = {\n ...args,\n options: {\n ...args.options,\n onResponse: callback,\n },\n };\n const flatResponse = await directSendOperation(updatedArgs, spec);\n return {\n flatResponse,\n rawResponse: {\n statusCode: currentRawResponse!.status,\n body: currentRawResponse!.parsedBody,\n headers: currentRawResponse!.headers.toJSON(),\n },\n };\n };\n\n const lro = createLroSpec({\n sendOperationFn,\n args: { scope, deploymentName, options },\n spec: deleteAtScopeOperationSpec,\n });\n const poller = await createHttpPoller>(lro, {\n restoreFrom: options?.resumeFrom,\n intervalInMs: options?.updateIntervalInMs,\n });\n await poller.poll();\n return poller;\n }\n\n /**\n * A template deployment that is currently running cannot be deleted. Deleting a template deployment\n * removes the associated deployment operations. This is an asynchronous operation that returns a\n * status of 202 until the template deployment is successfully deleted. The Location response header\n * contains the URI that is used to obtain the status of the process. While the process is running, a\n * call to the URI in the Location header returns a status of 202. When the process finishes, the URI\n * in the Location header returns a status of 204 on success. If the asynchronous request failed, the\n * URI in the Location header returns an error-level status code.\n * @param scope The resource scope.\n * @param deploymentName The name of the deployment.\n * @param options The options parameters.\n */\n async beginDeleteAtScopeAndWait(\n scope: string,\n deploymentName: string,\n options?: DeploymentsDeleteAtScopeOptionalParams,\n ): Promise {\n const poller = await this.beginDeleteAtScope(\n scope,\n deploymentName,\n options,\n );\n return poller.pollUntilDone();\n }\n\n /**\n * Checks whether the deployment exists.\n * @param scope The resource scope.\n * @param deploymentName The name of the deployment.\n * @param options The options parameters.\n */\n checkExistenceAtScope(\n scope: string,\n deploymentName: string,\n options?: DeploymentsCheckExistenceAtScopeOptionalParams,\n ): Promise {\n return this.client.sendOperationRequest(\n { scope, deploymentName, options },\n checkExistenceAtScopeOperationSpec,\n );\n }\n\n /**\n * You can provide the template and parameters directly in the request or link to JSON files.\n * @param scope The resource scope.\n * @param deploymentName The name of the deployment.\n * @param parameters Additional parameters supplied to the operation.\n * @param options The options parameters.\n */\n async beginCreateOrUpdateAtScope(\n scope: string,\n deploymentName: string,\n parameters: Deployment,\n options?: DeploymentsCreateOrUpdateAtScopeOptionalParams,\n ): Promise<\n SimplePollerLike<\n OperationState,\n DeploymentsCreateOrUpdateAtScopeResponse\n >\n > {\n const directSendOperation = async (\n args: coreClient.OperationArguments,\n spec: coreClient.OperationSpec,\n ): Promise => {\n return this.client.sendOperationRequest(args, spec);\n };\n const sendOperationFn = async (\n args: coreClient.OperationArguments,\n spec: coreClient.OperationSpec,\n ) => {\n let currentRawResponse: coreClient.FullOperationResponse | undefined =\n undefined;\n const providedCallback = args.options?.onResponse;\n const callback: coreClient.RawResponseCallback = (\n rawResponse: coreClient.FullOperationResponse,\n flatResponse: unknown,\n ) => {\n currentRawResponse = rawResponse;\n providedCallback?.(rawResponse, flatResponse);\n };\n const updatedArgs = {\n ...args,\n options: {\n ...args.options,\n onResponse: callback,\n },\n };\n const flatResponse = await directSendOperation(updatedArgs, spec);\n return {\n flatResponse,\n rawResponse: {\n statusCode: currentRawResponse!.status,\n body: currentRawResponse!.parsedBody,\n headers: currentRawResponse!.headers.toJSON(),\n },\n };\n };\n\n const lro = createLroSpec({\n sendOperationFn,\n args: { scope, deploymentName, parameters, options },\n spec: createOrUpdateAtScopeOperationSpec,\n });\n const poller = await createHttpPoller<\n DeploymentsCreateOrUpdateAtScopeResponse,\n OperationState\n >(lro, {\n restoreFrom: options?.resumeFrom,\n intervalInMs: options?.updateIntervalInMs,\n });\n await poller.poll();\n return poller;\n }\n\n /**\n * You can provide the template and parameters directly in the request or link to JSON files.\n * @param scope The resource scope.\n * @param deploymentName The name of the deployment.\n * @param parameters Additional parameters supplied to the operation.\n * @param options The options parameters.\n */\n async beginCreateOrUpdateAtScopeAndWait(\n scope: string,\n deploymentName: string,\n parameters: Deployment,\n options?: DeploymentsCreateOrUpdateAtScopeOptionalParams,\n ): Promise {\n const poller = await this.beginCreateOrUpdateAtScope(\n scope,\n deploymentName,\n parameters,\n options,\n );\n return poller.pollUntilDone();\n }\n\n /**\n * Gets a deployment.\n * @param scope The resource scope.\n * @param deploymentName The name of the deployment.\n * @param options The options parameters.\n */\n getAtScope(\n scope: string,\n deploymentName: string,\n options?: DeploymentsGetAtScopeOptionalParams,\n ): Promise {\n return this.client.sendOperationRequest(\n { scope, deploymentName, options },\n getAtScopeOperationSpec,\n );\n }\n\n /**\n * You can cancel a deployment only if the provisioningState is Accepted or Running. After the\n * deployment is canceled, the provisioningState is set to Canceled. Canceling a template deployment\n * stops the currently running template deployment and leaves the resources partially deployed.\n * @param scope The resource scope.\n * @param deploymentName The name of the deployment.\n * @param options The options parameters.\n */\n cancelAtScope(\n scope: string,\n deploymentName: string,\n options?: DeploymentsCancelAtScopeOptionalParams,\n ): Promise {\n return this.client.sendOperationRequest(\n { scope, deploymentName, options },\n cancelAtScopeOperationSpec,\n );\n }\n\n /**\n * Validates whether the specified template is syntactically correct and will be accepted by Azure\n * Resource Manager..\n * @param scope The resource scope.\n * @param deploymentName The name of the deployment.\n * @param parameters Parameters to validate.\n * @param options The options parameters.\n */\n async beginValidateAtScope(\n scope: string,\n deploymentName: string,\n parameters: Deployment,\n options?: DeploymentsValidateAtScopeOptionalParams,\n ): Promise<\n SimplePollerLike<\n OperationState,\n DeploymentsValidateAtScopeResponse\n >\n > {\n const directSendOperation = async (\n args: coreClient.OperationArguments,\n spec: coreClient.OperationSpec,\n ): Promise => {\n return this.client.sendOperationRequest(args, spec);\n };\n const sendOperationFn = async (\n args: coreClient.OperationArguments,\n spec: coreClient.OperationSpec,\n ) => {\n let currentRawResponse: coreClient.FullOperationResponse | undefined =\n undefined;\n const providedCallback = args.options?.onResponse;\n const callback: coreClient.RawResponseCallback = (\n rawResponse: coreClient.FullOperationResponse,\n flatResponse: unknown,\n ) => {\n currentRawResponse = rawResponse;\n providedCallback?.(rawResponse, flatResponse);\n };\n const updatedArgs = {\n ...args,\n options: {\n ...args.options,\n onResponse: callback,\n },\n };\n const flatResponse = await directSendOperation(updatedArgs, spec);\n return {\n flatResponse,\n rawResponse: {\n statusCode: currentRawResponse!.status,\n body: currentRawResponse!.parsedBody,\n headers: currentRawResponse!.headers.toJSON(),\n },\n };\n };\n\n const lro = createLroSpec({\n sendOperationFn,\n args: { scope, deploymentName, parameters, options },\n spec: validateAtScopeOperationSpec,\n });\n const poller = await createHttpPoller<\n DeploymentsValidateAtScopeResponse,\n OperationState\n >(lro, {\n restoreFrom: options?.resumeFrom,\n intervalInMs: options?.updateIntervalInMs,\n });\n await poller.poll();\n return poller;\n }\n\n /**\n * Validates whether the specified template is syntactically correct and will be accepted by Azure\n * Resource Manager..\n * @param scope The resource scope.\n * @param deploymentName The name of the deployment.\n * @param parameters Parameters to validate.\n * @param options The options parameters.\n */\n async beginValidateAtScopeAndWait(\n scope: string,\n deploymentName: string,\n parameters: Deployment,\n options?: DeploymentsValidateAtScopeOptionalParams,\n ): Promise {\n const poller = await this.beginValidateAtScope(\n scope,\n deploymentName,\n parameters,\n options,\n );\n return poller.pollUntilDone();\n }\n\n /**\n * Exports the template used for specified deployment.\n * @param scope The resource scope.\n * @param deploymentName The name of the deployment.\n * @param options The options parameters.\n */\n exportTemplateAtScope(\n scope: string,\n deploymentName: string,\n options?: DeploymentsExportTemplateAtScopeOptionalParams,\n ): Promise {\n return this.client.sendOperationRequest(\n { scope, deploymentName, options },\n exportTemplateAtScopeOperationSpec,\n );\n }\n\n /**\n * Get all the deployments at the given scope.\n * @param scope The resource scope.\n * @param options The options parameters.\n */\n private _listAtScope(\n scope: string,\n options?: DeploymentsListAtScopeOptionalParams,\n ): Promise {\n return this.client.sendOperationRequest(\n { scope, options },\n listAtScopeOperationSpec,\n );\n }\n\n /**\n * A template deployment that is currently running cannot be deleted. Deleting a template deployment\n * removes the associated deployment operations. This is an asynchronous operation that returns a\n * status of 202 until the template deployment is successfully deleted. The Location response header\n * contains the URI that is used to obtain the status of the process. While the process is running, a\n * call to the URI in the Location header returns a status of 202. When the process finishes, the URI\n * in the Location header returns a status of 204 on success. If the asynchronous request failed, the\n * URI in the Location header returns an error-level status code.\n * @param deploymentName The name of the deployment.\n * @param options The options parameters.\n */\n async beginDeleteAtTenantScope(\n deploymentName: string,\n options?: DeploymentsDeleteAtTenantScopeOptionalParams,\n ): Promise, void>> {\n const directSendOperation = async (\n args: coreClient.OperationArguments,\n spec: coreClient.OperationSpec,\n ): Promise => {\n return this.client.sendOperationRequest(args, spec);\n };\n const sendOperationFn = async (\n args: coreClient.OperationArguments,\n spec: coreClient.OperationSpec,\n ) => {\n let currentRawResponse: coreClient.FullOperationResponse | undefined =\n undefined;\n const providedCallback = args.options?.onResponse;\n const callback: coreClient.RawResponseCallback = (\n rawResponse: coreClient.FullOperationResponse,\n flatResponse: unknown,\n ) => {\n currentRawResponse = rawResponse;\n providedCallback?.(rawResponse, flatResponse);\n };\n const updatedArgs = {\n ...args,\n options: {\n ...args.options,\n onResponse: callback,\n },\n };\n const flatResponse = await directSendOperation(updatedArgs, spec);\n return {\n flatResponse,\n rawResponse: {\n statusCode: currentRawResponse!.status,\n body: currentRawResponse!.parsedBody,\n headers: currentRawResponse!.headers.toJSON(),\n },\n };\n };\n\n const lro = createLroSpec({\n sendOperationFn,\n args: { deploymentName, options },\n spec: deleteAtTenantScopeOperationSpec,\n });\n const poller = await createHttpPoller>(lro, {\n restoreFrom: options?.resumeFrom,\n intervalInMs: options?.updateIntervalInMs,\n });\n await poller.poll();\n return poller;\n }\n\n /**\n * A template deployment that is currently running cannot be deleted. Deleting a template deployment\n * removes the associated deployment operations. This is an asynchronous operation that returns a\n * status of 202 until the template deployment is successfully deleted. The Location response header\n * contains the URI that is used to obtain the status of the process. While the process is running, a\n * call to the URI in the Location header returns a status of 202. When the process finishes, the URI\n * in the Location header returns a status of 204 on success. If the asynchronous request failed, the\n * URI in the Location header returns an error-level status code.\n * @param deploymentName The name of the deployment.\n * @param options The options parameters.\n */\n async beginDeleteAtTenantScopeAndWait(\n deploymentName: string,\n options?: DeploymentsDeleteAtTenantScopeOptionalParams,\n ): Promise {\n const poller = await this.beginDeleteAtTenantScope(deploymentName, options);\n return poller.pollUntilDone();\n }\n\n /**\n * Checks whether the deployment exists.\n * @param deploymentName The name of the deployment.\n * @param options The options parameters.\n */\n checkExistenceAtTenantScope(\n deploymentName: string,\n options?: DeploymentsCheckExistenceAtTenantScopeOptionalParams,\n ): Promise {\n return this.client.sendOperationRequest(\n { deploymentName, options },\n checkExistenceAtTenantScopeOperationSpec,\n );\n }\n\n /**\n * You can provide the template and parameters directly in the request or link to JSON files.\n * @param deploymentName The name of the deployment.\n * @param parameters Additional parameters supplied to the operation.\n * @param options The options parameters.\n */\n async beginCreateOrUpdateAtTenantScope(\n deploymentName: string,\n parameters: ScopedDeployment,\n options?: DeploymentsCreateOrUpdateAtTenantScopeOptionalParams,\n ): Promise<\n SimplePollerLike<\n OperationState,\n DeploymentsCreateOrUpdateAtTenantScopeResponse\n >\n > {\n const directSendOperation = async (\n args: coreClient.OperationArguments,\n spec: coreClient.OperationSpec,\n ): Promise => {\n return this.client.sendOperationRequest(args, spec);\n };\n const sendOperationFn = async (\n args: coreClient.OperationArguments,\n spec: coreClient.OperationSpec,\n ) => {\n let currentRawResponse: coreClient.FullOperationResponse | undefined =\n undefined;\n const providedCallback = args.options?.onResponse;\n const callback: coreClient.RawResponseCallback = (\n rawResponse: coreClient.FullOperationResponse,\n flatResponse: unknown,\n ) => {\n currentRawResponse = rawResponse;\n providedCallback?.(rawResponse, flatResponse);\n };\n const updatedArgs = {\n ...args,\n options: {\n ...args.options,\n onResponse: callback,\n },\n };\n const flatResponse = await directSendOperation(updatedArgs, spec);\n return {\n flatResponse,\n rawResponse: {\n statusCode: currentRawResponse!.status,\n body: currentRawResponse!.parsedBody,\n headers: currentRawResponse!.headers.toJSON(),\n },\n };\n };\n\n const lro = createLroSpec({\n sendOperationFn,\n args: { deploymentName, parameters, options },\n spec: createOrUpdateAtTenantScopeOperationSpec,\n });\n const poller = await createHttpPoller<\n DeploymentsCreateOrUpdateAtTenantScopeResponse,\n OperationState\n >(lro, {\n restoreFrom: options?.resumeFrom,\n intervalInMs: options?.updateIntervalInMs,\n });\n await poller.poll();\n return poller;\n }\n\n /**\n * You can provide the template and parameters directly in the request or link to JSON files.\n * @param deploymentName The name of the deployment.\n * @param parameters Additional parameters supplied to the operation.\n * @param options The options parameters.\n */\n async beginCreateOrUpdateAtTenantScopeAndWait(\n deploymentName: string,\n parameters: ScopedDeployment,\n options?: DeploymentsCreateOrUpdateAtTenantScopeOptionalParams,\n ): Promise {\n const poller = await this.beginCreateOrUpdateAtTenantScope(\n deploymentName,\n parameters,\n options,\n );\n return poller.pollUntilDone();\n }\n\n /**\n * Gets a deployment.\n * @param deploymentName The name of the deployment.\n * @param options The options parameters.\n */\n getAtTenantScope(\n deploymentName: string,\n options?: DeploymentsGetAtTenantScopeOptionalParams,\n ): Promise {\n return this.client.sendOperationRequest(\n { deploymentName, options },\n getAtTenantScopeOperationSpec,\n );\n }\n\n /**\n * You can cancel a deployment only if the provisioningState is Accepted or Running. After the\n * deployment is canceled, the provisioningState is set to Canceled. Canceling a template deployment\n * stops the currently running template deployment and leaves the resources partially deployed.\n * @param deploymentName The name of the deployment.\n * @param options The options parameters.\n */\n cancelAtTenantScope(\n deploymentName: string,\n options?: DeploymentsCancelAtTenantScopeOptionalParams,\n ): Promise {\n return this.client.sendOperationRequest(\n { deploymentName, options },\n cancelAtTenantScopeOperationSpec,\n );\n }\n\n /**\n * Validates whether the specified template is syntactically correct and will be accepted by Azure\n * Resource Manager..\n * @param deploymentName The name of the deployment.\n * @param parameters Parameters to validate.\n * @param options The options parameters.\n */\n async beginValidateAtTenantScope(\n deploymentName: string,\n parameters: ScopedDeployment,\n options?: DeploymentsValidateAtTenantScopeOptionalParams,\n ): Promise<\n SimplePollerLike<\n OperationState,\n DeploymentsValidateAtTenantScopeResponse\n >\n > {\n const directSendOperation = async (\n args: coreClient.OperationArguments,\n spec: coreClient.OperationSpec,\n ): Promise => {\n return this.client.sendOperationRequest(args, spec);\n };\n const sendOperationFn = async (\n args: coreClient.OperationArguments,\n spec: coreClient.OperationSpec,\n ) => {\n let currentRawResponse: coreClient.FullOperationResponse | undefined =\n undefined;\n const providedCallback = args.options?.onResponse;\n const callback: coreClient.RawResponseCallback = (\n rawResponse: coreClient.FullOperationResponse,\n flatResponse: unknown,\n ) => {\n currentRawResponse = rawResponse;\n providedCallback?.(rawResponse, flatResponse);\n };\n const updatedArgs = {\n ...args,\n options: {\n ...args.options,\n onResponse: callback,\n },\n };\n const flatResponse = await directSendOperation(updatedArgs, spec);\n return {\n flatResponse,\n rawResponse: {\n statusCode: currentRawResponse!.status,\n body: currentRawResponse!.parsedBody,\n headers: currentRawResponse!.headers.toJSON(),\n },\n };\n };\n\n const lro = createLroSpec({\n sendOperationFn,\n args: { deploymentName, parameters, options },\n spec: validateAtTenantScopeOperationSpec,\n });\n const poller = await createHttpPoller<\n DeploymentsValidateAtTenantScopeResponse,\n OperationState\n >(lro, {\n restoreFrom: options?.resumeFrom,\n intervalInMs: options?.updateIntervalInMs,\n });\n await poller.poll();\n return poller;\n }\n\n /**\n * Validates whether the specified template is syntactically correct and will be accepted by Azure\n * Resource Manager..\n * @param deploymentName The name of the deployment.\n * @param parameters Parameters to validate.\n * @param options The options parameters.\n */\n async beginValidateAtTenantScopeAndWait(\n deploymentName: string,\n parameters: ScopedDeployment,\n options?: DeploymentsValidateAtTenantScopeOptionalParams,\n ): Promise {\n const poller = await this.beginValidateAtTenantScope(\n deploymentName,\n parameters,\n options,\n );\n return poller.pollUntilDone();\n }\n\n /**\n * Returns changes that will be made by the deployment if executed at the scope of the tenant group.\n * @param deploymentName The name of the deployment.\n * @param parameters Parameters to validate.\n * @param options The options parameters.\n */\n async beginWhatIfAtTenantScope(\n deploymentName: string,\n parameters: ScopedDeploymentWhatIf,\n options?: DeploymentsWhatIfAtTenantScopeOptionalParams,\n ): Promise<\n SimplePollerLike<\n OperationState,\n DeploymentsWhatIfAtTenantScopeResponse\n >\n > {\n const directSendOperation = async (\n args: coreClient.OperationArguments,\n spec: coreClient.OperationSpec,\n ): Promise => {\n return this.client.sendOperationRequest(args, spec);\n };\n const sendOperationFn = async (\n args: coreClient.OperationArguments,\n spec: coreClient.OperationSpec,\n ) => {\n let currentRawResponse: coreClient.FullOperationResponse | undefined =\n undefined;\n const providedCallback = args.options?.onResponse;\n const callback: coreClient.RawResponseCallback = (\n rawResponse: coreClient.FullOperationResponse,\n flatResponse: unknown,\n ) => {\n currentRawResponse = rawResponse;\n providedCallback?.(rawResponse, flatResponse);\n };\n const updatedArgs = {\n ...args,\n options: {\n ...args.options,\n onResponse: callback,\n },\n };\n const flatResponse = await directSendOperation(updatedArgs, spec);\n return {\n flatResponse,\n rawResponse: {\n statusCode: currentRawResponse!.status,\n body: currentRawResponse!.parsedBody,\n headers: currentRawResponse!.headers.toJSON(),\n },\n };\n };\n\n const lro = createLroSpec({\n sendOperationFn,\n args: { deploymentName, parameters, options },\n spec: whatIfAtTenantScopeOperationSpec,\n });\n const poller = await createHttpPoller<\n DeploymentsWhatIfAtTenantScopeResponse,\n OperationState\n >(lro, {\n restoreFrom: options?.resumeFrom,\n intervalInMs: options?.updateIntervalInMs,\n resourceLocationConfig: \"location\",\n });\n await poller.poll();\n return poller;\n }\n\n /**\n * Returns changes that will be made by the deployment if executed at the scope of the tenant group.\n * @param deploymentName The name of the deployment.\n * @param parameters Parameters to validate.\n * @param options The options parameters.\n */\n async beginWhatIfAtTenantScopeAndWait(\n deploymentName: string,\n parameters: ScopedDeploymentWhatIf,\n options?: DeploymentsWhatIfAtTenantScopeOptionalParams,\n ): Promise {\n const poller = await this.beginWhatIfAtTenantScope(\n deploymentName,\n parameters,\n options,\n );\n return poller.pollUntilDone();\n }\n\n /**\n * Exports the template used for specified deployment.\n * @param deploymentName The name of the deployment.\n * @param options The options parameters.\n */\n exportTemplateAtTenantScope(\n deploymentName: string,\n options?: DeploymentsExportTemplateAtTenantScopeOptionalParams,\n ): Promise {\n return this.client.sendOperationRequest(\n { deploymentName, options },\n exportTemplateAtTenantScopeOperationSpec,\n );\n }\n\n /**\n * Get all the deployments at the tenant scope.\n * @param options The options parameters.\n */\n private _listAtTenantScope(\n options?: DeploymentsListAtTenantScopeOptionalParams,\n ): Promise {\n return this.client.sendOperationRequest(\n { options },\n listAtTenantScopeOperationSpec,\n );\n }\n\n /**\n * A template deployment that is currently running cannot be deleted. Deleting a template deployment\n * removes the associated deployment operations. This is an asynchronous operation that returns a\n * status of 202 until the template deployment is successfully deleted. The Location response header\n * contains the URI that is used to obtain the status of the process. While the process is running, a\n * call to the URI in the Location header returns a status of 202. When the process finishes, the URI\n * in the Location header returns a status of 204 on success. If the asynchronous request failed, the\n * URI in the Location header returns an error-level status code.\n * @param groupId The management group ID.\n * @param deploymentName The name of the deployment.\n * @param options The options parameters.\n */\n async beginDeleteAtManagementGroupScope(\n groupId: string,\n deploymentName: string,\n options?: DeploymentsDeleteAtManagementGroupScopeOptionalParams,\n ): Promise, void>> {\n const directSendOperation = async (\n args: coreClient.OperationArguments,\n spec: coreClient.OperationSpec,\n ): Promise => {\n return this.client.sendOperationRequest(args, spec);\n };\n const sendOperationFn = async (\n args: coreClient.OperationArguments,\n spec: coreClient.OperationSpec,\n ) => {\n let currentRawResponse: coreClient.FullOperationResponse | undefined =\n undefined;\n const providedCallback = args.options?.onResponse;\n const callback: coreClient.RawResponseCallback = (\n rawResponse: coreClient.FullOperationResponse,\n flatResponse: unknown,\n ) => {\n currentRawResponse = rawResponse;\n providedCallback?.(rawResponse, flatResponse);\n };\n const updatedArgs = {\n ...args,\n options: {\n ...args.options,\n onResponse: callback,\n },\n };\n const flatResponse = await directSendOperation(updatedArgs, spec);\n return {\n flatResponse,\n rawResponse: {\n statusCode: currentRawResponse!.status,\n body: currentRawResponse!.parsedBody,\n headers: currentRawResponse!.headers.toJSON(),\n },\n };\n };\n\n const lro = createLroSpec({\n sendOperationFn,\n args: { groupId, deploymentName, options },\n spec: deleteAtManagementGroupScopeOperationSpec,\n });\n const poller = await createHttpPoller>(lro, {\n restoreFrom: options?.resumeFrom,\n intervalInMs: options?.updateIntervalInMs,\n });\n await poller.poll();\n return poller;\n }\n\n /**\n * A template deployment that is currently running cannot be deleted. Deleting a template deployment\n * removes the associated deployment operations. This is an asynchronous operation that returns a\n * status of 202 until the template deployment is successfully deleted. The Location response header\n * contains the URI that is used to obtain the status of the process. While the process is running, a\n * call to the URI in the Location header returns a status of 202. When the process finishes, the URI\n * in the Location header returns a status of 204 on success. If the asynchronous request failed, the\n * URI in the Location header returns an error-level status code.\n * @param groupId The management group ID.\n * @param deploymentName The name of the deployment.\n * @param options The options parameters.\n */\n async beginDeleteAtManagementGroupScopeAndWait(\n groupId: string,\n deploymentName: string,\n options?: DeploymentsDeleteAtManagementGroupScopeOptionalParams,\n ): Promise {\n const poller = await this.beginDeleteAtManagementGroupScope(\n groupId,\n deploymentName,\n options,\n );\n return poller.pollUntilDone();\n }\n\n /**\n * Checks whether the deployment exists.\n * @param groupId The management group ID.\n * @param deploymentName The name of the deployment.\n * @param options The options parameters.\n */\n checkExistenceAtManagementGroupScope(\n groupId: string,\n deploymentName: string,\n options?: DeploymentsCheckExistenceAtManagementGroupScopeOptionalParams,\n ): Promise {\n return this.client.sendOperationRequest(\n { groupId, deploymentName, options },\n checkExistenceAtManagementGroupScopeOperationSpec,\n );\n }\n\n /**\n * You can provide the template and parameters directly in the request or link to JSON files.\n * @param groupId The management group ID.\n * @param deploymentName The name of the deployment.\n * @param parameters Additional parameters supplied to the operation.\n * @param options The options parameters.\n */\n async beginCreateOrUpdateAtManagementGroupScope(\n groupId: string,\n deploymentName: string,\n parameters: ScopedDeployment,\n options?: DeploymentsCreateOrUpdateAtManagementGroupScopeOptionalParams,\n ): Promise<\n SimplePollerLike<\n OperationState,\n DeploymentsCreateOrUpdateAtManagementGroupScopeResponse\n >\n > {\n const directSendOperation = async (\n args: coreClient.OperationArguments,\n spec: coreClient.OperationSpec,\n ): Promise => {\n return this.client.sendOperationRequest(args, spec);\n };\n const sendOperationFn = async (\n args: coreClient.OperationArguments,\n spec: coreClient.OperationSpec,\n ) => {\n let currentRawResponse: coreClient.FullOperationResponse | undefined =\n undefined;\n const providedCallback = args.options?.onResponse;\n const callback: coreClient.RawResponseCallback = (\n rawResponse: coreClient.FullOperationResponse,\n flatResponse: unknown,\n ) => {\n currentRawResponse = rawResponse;\n providedCallback?.(rawResponse, flatResponse);\n };\n const updatedArgs = {\n ...args,\n options: {\n ...args.options,\n onResponse: callback,\n },\n };\n const flatResponse = await directSendOperation(updatedArgs, spec);\n return {\n flatResponse,\n rawResponse: {\n statusCode: currentRawResponse!.status,\n body: currentRawResponse!.parsedBody,\n headers: currentRawResponse!.headers.toJSON(),\n },\n };\n };\n\n const lro = createLroSpec({\n sendOperationFn,\n args: { groupId, deploymentName, parameters, options },\n spec: createOrUpdateAtManagementGroupScopeOperationSpec,\n });\n const poller = await createHttpPoller<\n DeploymentsCreateOrUpdateAtManagementGroupScopeResponse,\n OperationState\n >(lro, {\n restoreFrom: options?.resumeFrom,\n intervalInMs: options?.updateIntervalInMs,\n });\n await poller.poll();\n return poller;\n }\n\n /**\n * You can provide the template and parameters directly in the request or link to JSON files.\n * @param groupId The management group ID.\n * @param deploymentName The name of the deployment.\n * @param parameters Additional parameters supplied to the operation.\n * @param options The options parameters.\n */\n async beginCreateOrUpdateAtManagementGroupScopeAndWait(\n groupId: string,\n deploymentName: string,\n parameters: ScopedDeployment,\n options?: DeploymentsCreateOrUpdateAtManagementGroupScopeOptionalParams,\n ): Promise {\n const poller = await this.beginCreateOrUpdateAtManagementGroupScope(\n groupId,\n deploymentName,\n parameters,\n options,\n );\n return poller.pollUntilDone();\n }\n\n /**\n * Gets a deployment.\n * @param groupId The management group ID.\n * @param deploymentName The name of the deployment.\n * @param options The options parameters.\n */\n getAtManagementGroupScope(\n groupId: string,\n deploymentName: string,\n options?: DeploymentsGetAtManagementGroupScopeOptionalParams,\n ): Promise {\n return this.client.sendOperationRequest(\n { groupId, deploymentName, options },\n getAtManagementGroupScopeOperationSpec,\n );\n }\n\n /**\n * You can cancel a deployment only if the provisioningState is Accepted or Running. After the\n * deployment is canceled, the provisioningState is set to Canceled. Canceling a template deployment\n * stops the currently running template deployment and leaves the resources partially deployed.\n * @param groupId The management group ID.\n * @param deploymentName The name of the deployment.\n * @param options The options parameters.\n */\n cancelAtManagementGroupScope(\n groupId: string,\n deploymentName: string,\n options?: DeploymentsCancelAtManagementGroupScopeOptionalParams,\n ): Promise {\n return this.client.sendOperationRequest(\n { groupId, deploymentName, options },\n cancelAtManagementGroupScopeOperationSpec,\n );\n }\n\n /**\n * Validates whether the specified template is syntactically correct and will be accepted by Azure\n * Resource Manager..\n * @param groupId The management group ID.\n * @param deploymentName The name of the deployment.\n * @param parameters Parameters to validate.\n * @param options The options parameters.\n */\n async beginValidateAtManagementGroupScope(\n groupId: string,\n deploymentName: string,\n parameters: ScopedDeployment,\n options?: DeploymentsValidateAtManagementGroupScopeOptionalParams,\n ): Promise<\n SimplePollerLike<\n OperationState,\n DeploymentsValidateAtManagementGroupScopeResponse\n >\n > {\n const directSendOperation = async (\n args: coreClient.OperationArguments,\n spec: coreClient.OperationSpec,\n ): Promise => {\n return this.client.sendOperationRequest(args, spec);\n };\n const sendOperationFn = async (\n args: coreClient.OperationArguments,\n spec: coreClient.OperationSpec,\n ) => {\n let currentRawResponse: coreClient.FullOperationResponse | undefined =\n undefined;\n const providedCallback = args.options?.onResponse;\n const callback: coreClient.RawResponseCallback = (\n rawResponse: coreClient.FullOperationResponse,\n flatResponse: unknown,\n ) => {\n currentRawResponse = rawResponse;\n providedCallback?.(rawResponse, flatResponse);\n };\n const updatedArgs = {\n ...args,\n options: {\n ...args.options,\n onResponse: callback,\n },\n };\n const flatResponse = await directSendOperation(updatedArgs, spec);\n return {\n flatResponse,\n rawResponse: {\n statusCode: currentRawResponse!.status,\n body: currentRawResponse!.parsedBody,\n headers: currentRawResponse!.headers.toJSON(),\n },\n };\n };\n\n const lro = createLroSpec({\n sendOperationFn,\n args: { groupId, deploymentName, parameters, options },\n spec: validateAtManagementGroupScopeOperationSpec,\n });\n const poller = await createHttpPoller<\n DeploymentsValidateAtManagementGroupScopeResponse,\n OperationState\n >(lro, {\n restoreFrom: options?.resumeFrom,\n intervalInMs: options?.updateIntervalInMs,\n });\n await poller.poll();\n return poller;\n }\n\n /**\n * Validates whether the specified template is syntactically correct and will be accepted by Azure\n * Resource Manager..\n * @param groupId The management group ID.\n * @param deploymentName The name of the deployment.\n * @param parameters Parameters to validate.\n * @param options The options parameters.\n */\n async beginValidateAtManagementGroupScopeAndWait(\n groupId: string,\n deploymentName: string,\n parameters: ScopedDeployment,\n options?: DeploymentsValidateAtManagementGroupScopeOptionalParams,\n ): Promise {\n const poller = await this.beginValidateAtManagementGroupScope(\n groupId,\n deploymentName,\n parameters,\n options,\n );\n return poller.pollUntilDone();\n }\n\n /**\n * Returns changes that will be made by the deployment if executed at the scope of the management\n * group.\n * @param groupId The management group ID.\n * @param deploymentName The name of the deployment.\n * @param parameters Parameters to validate.\n * @param options The options parameters.\n */\n async beginWhatIfAtManagementGroupScope(\n groupId: string,\n deploymentName: string,\n parameters: ScopedDeploymentWhatIf,\n options?: DeploymentsWhatIfAtManagementGroupScopeOptionalParams,\n ): Promise<\n SimplePollerLike<\n OperationState,\n DeploymentsWhatIfAtManagementGroupScopeResponse\n >\n > {\n const directSendOperation = async (\n args: coreClient.OperationArguments,\n spec: coreClient.OperationSpec,\n ): Promise => {\n return this.client.sendOperationRequest(args, spec);\n };\n const sendOperationFn = async (\n args: coreClient.OperationArguments,\n spec: coreClient.OperationSpec,\n ) => {\n let currentRawResponse: coreClient.FullOperationResponse | undefined =\n undefined;\n const providedCallback = args.options?.onResponse;\n const callback: coreClient.RawResponseCallback = (\n rawResponse: coreClient.FullOperationResponse,\n flatResponse: unknown,\n ) => {\n currentRawResponse = rawResponse;\n providedCallback?.(rawResponse, flatResponse);\n };\n const updatedArgs = {\n ...args,\n options: {\n ...args.options,\n onResponse: callback,\n },\n };\n const flatResponse = await directSendOperation(updatedArgs, spec);\n return {\n flatResponse,\n rawResponse: {\n statusCode: currentRawResponse!.status,\n body: currentRawResponse!.parsedBody,\n headers: currentRawResponse!.headers.toJSON(),\n },\n };\n };\n\n const lro = createLroSpec({\n sendOperationFn,\n args: { groupId, deploymentName, parameters, options },\n spec: whatIfAtManagementGroupScopeOperationSpec,\n });\n const poller = await createHttpPoller<\n DeploymentsWhatIfAtManagementGroupScopeResponse,\n OperationState\n >(lro, {\n restoreFrom: options?.resumeFrom,\n intervalInMs: options?.updateIntervalInMs,\n resourceLocationConfig: \"location\",\n });\n await poller.poll();\n return poller;\n }\n\n /**\n * Returns changes that will be made by the deployment if executed at the scope of the management\n * group.\n * @param groupId The management group ID.\n * @param deploymentName The name of the deployment.\n * @param parameters Parameters to validate.\n * @param options The options parameters.\n */\n async beginWhatIfAtManagementGroupScopeAndWait(\n groupId: string,\n deploymentName: string,\n parameters: ScopedDeploymentWhatIf,\n options?: DeploymentsWhatIfAtManagementGroupScopeOptionalParams,\n ): Promise {\n const poller = await this.beginWhatIfAtManagementGroupScope(\n groupId,\n deploymentName,\n parameters,\n options,\n );\n return poller.pollUntilDone();\n }\n\n /**\n * Exports the template used for specified deployment.\n * @param groupId The management group ID.\n * @param deploymentName The name of the deployment.\n * @param options The options parameters.\n */\n exportTemplateAtManagementGroupScope(\n groupId: string,\n deploymentName: string,\n options?: DeploymentsExportTemplateAtManagementGroupScopeOptionalParams,\n ): Promise {\n return this.client.sendOperationRequest(\n { groupId, deploymentName, options },\n exportTemplateAtManagementGroupScopeOperationSpec,\n );\n }\n\n /**\n * Get all the deployments for a management group.\n * @param groupId The management group ID.\n * @param options The options parameters.\n */\n private _listAtManagementGroupScope(\n groupId: string,\n options?: DeploymentsListAtManagementGroupScopeOptionalParams,\n ): Promise {\n return this.client.sendOperationRequest(\n { groupId, options },\n listAtManagementGroupScopeOperationSpec,\n );\n }\n\n /**\n * A template deployment that is currently running cannot be deleted. Deleting a template deployment\n * removes the associated deployment operations. This is an asynchronous operation that returns a\n * status of 202 until the template deployment is successfully deleted. The Location response header\n * contains the URI that is used to obtain the status of the process. While the process is running, a\n * call to the URI in the Location header returns a status of 202. When the process finishes, the URI\n * in the Location header returns a status of 204 on success. If the asynchronous request failed, the\n * URI in the Location header returns an error-level status code.\n * @param deploymentName The name of the deployment.\n * @param options The options parameters.\n */\n async beginDeleteAtSubscriptionScope(\n deploymentName: string,\n options?: DeploymentsDeleteAtSubscriptionScopeOptionalParams,\n ): Promise, void>> {\n const directSendOperation = async (\n args: coreClient.OperationArguments,\n spec: coreClient.OperationSpec,\n ): Promise => {\n return this.client.sendOperationRequest(args, spec);\n };\n const sendOperationFn = async (\n args: coreClient.OperationArguments,\n spec: coreClient.OperationSpec,\n ) => {\n let currentRawResponse: coreClient.FullOperationResponse | undefined =\n undefined;\n const providedCallback = args.options?.onResponse;\n const callback: coreClient.RawResponseCallback = (\n rawResponse: coreClient.FullOperationResponse,\n flatResponse: unknown,\n ) => {\n currentRawResponse = rawResponse;\n providedCallback?.(rawResponse, flatResponse);\n };\n const updatedArgs = {\n ...args,\n options: {\n ...args.options,\n onResponse: callback,\n },\n };\n const flatResponse = await directSendOperation(updatedArgs, spec);\n return {\n flatResponse,\n rawResponse: {\n statusCode: currentRawResponse!.status,\n body: currentRawResponse!.parsedBody,\n headers: currentRawResponse!.headers.toJSON(),\n },\n };\n };\n\n const lro = createLroSpec({\n sendOperationFn,\n args: { deploymentName, options },\n spec: deleteAtSubscriptionScopeOperationSpec,\n });\n const poller = await createHttpPoller>(lro, {\n restoreFrom: options?.resumeFrom,\n intervalInMs: options?.updateIntervalInMs,\n });\n await poller.poll();\n return poller;\n }\n\n /**\n * A template deployment that is currently running cannot be deleted. Deleting a template deployment\n * removes the associated deployment operations. This is an asynchronous operation that returns a\n * status of 202 until the template deployment is successfully deleted. The Location response header\n * contains the URI that is used to obtain the status of the process. While the process is running, a\n * call to the URI in the Location header returns a status of 202. When the process finishes, the URI\n * in the Location header returns a status of 204 on success. If the asynchronous request failed, the\n * URI in the Location header returns an error-level status code.\n * @param deploymentName The name of the deployment.\n * @param options The options parameters.\n */\n async beginDeleteAtSubscriptionScopeAndWait(\n deploymentName: string,\n options?: DeploymentsDeleteAtSubscriptionScopeOptionalParams,\n ): Promise {\n const poller = await this.beginDeleteAtSubscriptionScope(\n deploymentName,\n options,\n );\n return poller.pollUntilDone();\n }\n\n /**\n * Checks whether the deployment exists.\n * @param deploymentName The name of the deployment.\n * @param options The options parameters.\n */\n checkExistenceAtSubscriptionScope(\n deploymentName: string,\n options?: DeploymentsCheckExistenceAtSubscriptionScopeOptionalParams,\n ): Promise {\n return this.client.sendOperationRequest(\n { deploymentName, options },\n checkExistenceAtSubscriptionScopeOperationSpec,\n );\n }\n\n /**\n * You can provide the template and parameters directly in the request or link to JSON files.\n * @param deploymentName The name of the deployment.\n * @param parameters Additional parameters supplied to the operation.\n * @param options The options parameters.\n */\n async beginCreateOrUpdateAtSubscriptionScope(\n deploymentName: string,\n parameters: Deployment,\n options?: DeploymentsCreateOrUpdateAtSubscriptionScopeOptionalParams,\n ): Promise<\n SimplePollerLike<\n OperationState,\n DeploymentsCreateOrUpdateAtSubscriptionScopeResponse\n >\n > {\n const directSendOperation = async (\n args: coreClient.OperationArguments,\n spec: coreClient.OperationSpec,\n ): Promise => {\n return this.client.sendOperationRequest(args, spec);\n };\n const sendOperationFn = async (\n args: coreClient.OperationArguments,\n spec: coreClient.OperationSpec,\n ) => {\n let currentRawResponse: coreClient.FullOperationResponse | undefined =\n undefined;\n const providedCallback = args.options?.onResponse;\n const callback: coreClient.RawResponseCallback = (\n rawResponse: coreClient.FullOperationResponse,\n flatResponse: unknown,\n ) => {\n currentRawResponse = rawResponse;\n providedCallback?.(rawResponse, flatResponse);\n };\n const updatedArgs = {\n ...args,\n options: {\n ...args.options,\n onResponse: callback,\n },\n };\n const flatResponse = await directSendOperation(updatedArgs, spec);\n return {\n flatResponse,\n rawResponse: {\n statusCode: currentRawResponse!.status,\n body: currentRawResponse!.parsedBody,\n headers: currentRawResponse!.headers.toJSON(),\n },\n };\n };\n\n const lro = createLroSpec({\n sendOperationFn,\n args: { deploymentName, parameters, options },\n spec: createOrUpdateAtSubscriptionScopeOperationSpec,\n });\n const poller = await createHttpPoller<\n DeploymentsCreateOrUpdateAtSubscriptionScopeResponse,\n OperationState\n >(lro, {\n restoreFrom: options?.resumeFrom,\n intervalInMs: options?.updateIntervalInMs,\n });\n await poller.poll();\n return poller;\n }\n\n /**\n * You can provide the template and parameters directly in the request or link to JSON files.\n * @param deploymentName The name of the deployment.\n * @param parameters Additional parameters supplied to the operation.\n * @param options The options parameters.\n */\n async beginCreateOrUpdateAtSubscriptionScopeAndWait(\n deploymentName: string,\n parameters: Deployment,\n options?: DeploymentsCreateOrUpdateAtSubscriptionScopeOptionalParams,\n ): Promise {\n const poller = await this.beginCreateOrUpdateAtSubscriptionScope(\n deploymentName,\n parameters,\n options,\n );\n return poller.pollUntilDone();\n }\n\n /**\n * Gets a deployment.\n * @param deploymentName The name of the deployment.\n * @param options The options parameters.\n */\n getAtSubscriptionScope(\n deploymentName: string,\n options?: DeploymentsGetAtSubscriptionScopeOptionalParams,\n ): Promise {\n return this.client.sendOperationRequest(\n { deploymentName, options },\n getAtSubscriptionScopeOperationSpec,\n );\n }\n\n /**\n * You can cancel a deployment only if the provisioningState is Accepted or Running. After the\n * deployment is canceled, the provisioningState is set to Canceled. Canceling a template deployment\n * stops the currently running template deployment and leaves the resources partially deployed.\n * @param deploymentName The name of the deployment.\n * @param options The options parameters.\n */\n cancelAtSubscriptionScope(\n deploymentName: string,\n options?: DeploymentsCancelAtSubscriptionScopeOptionalParams,\n ): Promise {\n return this.client.sendOperationRequest(\n { deploymentName, options },\n cancelAtSubscriptionScopeOperationSpec,\n );\n }\n\n /**\n * Validates whether the specified template is syntactically correct and will be accepted by Azure\n * Resource Manager..\n * @param deploymentName The name of the deployment.\n * @param parameters Parameters to validate.\n * @param options The options parameters.\n */\n async beginValidateAtSubscriptionScope(\n deploymentName: string,\n parameters: Deployment,\n options?: DeploymentsValidateAtSubscriptionScopeOptionalParams,\n ): Promise<\n SimplePollerLike<\n OperationState,\n DeploymentsValidateAtSubscriptionScopeResponse\n >\n > {\n const directSendOperation = async (\n args: coreClient.OperationArguments,\n spec: coreClient.OperationSpec,\n ): Promise => {\n return this.client.sendOperationRequest(args, spec);\n };\n const sendOperationFn = async (\n args: coreClient.OperationArguments,\n spec: coreClient.OperationSpec,\n ) => {\n let currentRawResponse: coreClient.FullOperationResponse | undefined =\n undefined;\n const providedCallback = args.options?.onResponse;\n const callback: coreClient.RawResponseCallback = (\n rawResponse: coreClient.FullOperationResponse,\n flatResponse: unknown,\n ) => {\n currentRawResponse = rawResponse;\n providedCallback?.(rawResponse, flatResponse);\n };\n const updatedArgs = {\n ...args,\n options: {\n ...args.options,\n onResponse: callback,\n },\n };\n const flatResponse = await directSendOperation(updatedArgs, spec);\n return {\n flatResponse,\n rawResponse: {\n statusCode: currentRawResponse!.status,\n body: currentRawResponse!.parsedBody,\n headers: currentRawResponse!.headers.toJSON(),\n },\n };\n };\n\n const lro = createLroSpec({\n sendOperationFn,\n args: { deploymentName, parameters, options },\n spec: validateAtSubscriptionScopeOperationSpec,\n });\n const poller = await createHttpPoller<\n DeploymentsValidateAtSubscriptionScopeResponse,\n OperationState\n >(lro, {\n restoreFrom: options?.resumeFrom,\n intervalInMs: options?.updateIntervalInMs,\n });\n await poller.poll();\n return poller;\n }\n\n /**\n * Validates whether the specified template is syntactically correct and will be accepted by Azure\n * Resource Manager..\n * @param deploymentName The name of the deployment.\n * @param parameters Parameters to validate.\n * @param options The options parameters.\n */\n async beginValidateAtSubscriptionScopeAndWait(\n deploymentName: string,\n parameters: Deployment,\n options?: DeploymentsValidateAtSubscriptionScopeOptionalParams,\n ): Promise {\n const poller = await this.beginValidateAtSubscriptionScope(\n deploymentName,\n parameters,\n options,\n );\n return poller.pollUntilDone();\n }\n\n /**\n * Returns changes that will be made by the deployment if executed at the scope of the subscription.\n * @param deploymentName The name of the deployment.\n * @param parameters Parameters to What If.\n * @param options The options parameters.\n */\n async beginWhatIfAtSubscriptionScope(\n deploymentName: string,\n parameters: DeploymentWhatIf,\n options?: DeploymentsWhatIfAtSubscriptionScopeOptionalParams,\n ): Promise<\n SimplePollerLike<\n OperationState,\n DeploymentsWhatIfAtSubscriptionScopeResponse\n >\n > {\n const directSendOperation = async (\n args: coreClient.OperationArguments,\n spec: coreClient.OperationSpec,\n ): Promise => {\n return this.client.sendOperationRequest(args, spec);\n };\n const sendOperationFn = async (\n args: coreClient.OperationArguments,\n spec: coreClient.OperationSpec,\n ) => {\n let currentRawResponse: coreClient.FullOperationResponse | undefined =\n undefined;\n const providedCallback = args.options?.onResponse;\n const callback: coreClient.RawResponseCallback = (\n rawResponse: coreClient.FullOperationResponse,\n flatResponse: unknown,\n ) => {\n currentRawResponse = rawResponse;\n providedCallback?.(rawResponse, flatResponse);\n };\n const updatedArgs = {\n ...args,\n options: {\n ...args.options,\n onResponse: callback,\n },\n };\n const flatResponse = await directSendOperation(updatedArgs, spec);\n return {\n flatResponse,\n rawResponse: {\n statusCode: currentRawResponse!.status,\n body: currentRawResponse!.parsedBody,\n headers: currentRawResponse!.headers.toJSON(),\n },\n };\n };\n\n const lro = createLroSpec({\n sendOperationFn,\n args: { deploymentName, parameters, options },\n spec: whatIfAtSubscriptionScopeOperationSpec,\n });\n const poller = await createHttpPoller<\n DeploymentsWhatIfAtSubscriptionScopeResponse,\n OperationState\n >(lro, {\n restoreFrom: options?.resumeFrom,\n intervalInMs: options?.updateIntervalInMs,\n resourceLocationConfig: \"location\",\n });\n await poller.poll();\n return poller;\n }\n\n /**\n * Returns changes that will be made by the deployment if executed at the scope of the subscription.\n * @param deploymentName The name of the deployment.\n * @param parameters Parameters to What If.\n * @param options The options parameters.\n */\n async beginWhatIfAtSubscriptionScopeAndWait(\n deploymentName: string,\n parameters: DeploymentWhatIf,\n options?: DeploymentsWhatIfAtSubscriptionScopeOptionalParams,\n ): Promise {\n const poller = await this.beginWhatIfAtSubscriptionScope(\n deploymentName,\n parameters,\n options,\n );\n return poller.pollUntilDone();\n }\n\n /**\n * Exports the template used for specified deployment.\n * @param deploymentName The name of the deployment.\n * @param options The options parameters.\n */\n exportTemplateAtSubscriptionScope(\n deploymentName: string,\n options?: DeploymentsExportTemplateAtSubscriptionScopeOptionalParams,\n ): Promise {\n return this.client.sendOperationRequest(\n { deploymentName, options },\n exportTemplateAtSubscriptionScopeOperationSpec,\n );\n }\n\n /**\n * Get all the deployments for a subscription.\n * @param options The options parameters.\n */\n private _listAtSubscriptionScope(\n options?: DeploymentsListAtSubscriptionScopeOptionalParams,\n ): Promise {\n return this.client.sendOperationRequest(\n { options },\n listAtSubscriptionScopeOperationSpec,\n );\n }\n\n /**\n * A template deployment that is currently running cannot be deleted. Deleting a template deployment\n * removes the associated deployment operations. Deleting a template deployment does not affect the\n * state of the resource group. This is an asynchronous operation that returns a status of 202 until\n * the template deployment is successfully deleted. The Location response header contains the URI that\n * is used to obtain the status of the process. While the process is running, a call to the URI in the\n * Location header returns a status of 202. When the process finishes, the URI in the Location header\n * returns a status of 204 on success. If the asynchronous request failed, the URI in the Location\n * header returns an error-level status code.\n * @param resourceGroupName The name of the resource group with the deployment to delete. The name is\n * case insensitive.\n * @param deploymentName The name of the deployment.\n * @param options The options parameters.\n */\n async beginDelete(\n resourceGroupName: string,\n deploymentName: string,\n options?: DeploymentsDeleteOptionalParams,\n ): Promise, void>> {\n const directSendOperation = async (\n args: coreClient.OperationArguments,\n spec: coreClient.OperationSpec,\n ): Promise => {\n return this.client.sendOperationRequest(args, spec);\n };\n const sendOperationFn = async (\n args: coreClient.OperationArguments,\n spec: coreClient.OperationSpec,\n ) => {\n let currentRawResponse: coreClient.FullOperationResponse | undefined =\n undefined;\n const providedCallback = args.options?.onResponse;\n const callback: coreClient.RawResponseCallback = (\n rawResponse: coreClient.FullOperationResponse,\n flatResponse: unknown,\n ) => {\n currentRawResponse = rawResponse;\n providedCallback?.(rawResponse, flatResponse);\n };\n const updatedArgs = {\n ...args,\n options: {\n ...args.options,\n onResponse: callback,\n },\n };\n const flatResponse = await directSendOperation(updatedArgs, spec);\n return {\n flatResponse,\n rawResponse: {\n statusCode: currentRawResponse!.status,\n body: currentRawResponse!.parsedBody,\n headers: currentRawResponse!.headers.toJSON(),\n },\n };\n };\n\n const lro = createLroSpec({\n sendOperationFn,\n args: { resourceGroupName, deploymentName, options },\n spec: deleteOperationSpec,\n });\n const poller = await createHttpPoller>(lro, {\n restoreFrom: options?.resumeFrom,\n intervalInMs: options?.updateIntervalInMs,\n });\n await poller.poll();\n return poller;\n }\n\n /**\n * A template deployment that is currently running cannot be deleted. Deleting a template deployment\n * removes the associated deployment operations. Deleting a template deployment does not affect the\n * state of the resource group. This is an asynchronous operation that returns a status of 202 until\n * the template deployment is successfully deleted. The Location response header contains the URI that\n * is used to obtain the status of the process. While the process is running, a call to the URI in the\n * Location header returns a status of 202. When the process finishes, the URI in the Location header\n * returns a status of 204 on success. If the asynchronous request failed, the URI in the Location\n * header returns an error-level status code.\n * @param resourceGroupName The name of the resource group with the deployment to delete. The name is\n * case insensitive.\n * @param deploymentName The name of the deployment.\n * @param options The options parameters.\n */\n async beginDeleteAndWait(\n resourceGroupName: string,\n deploymentName: string,\n options?: DeploymentsDeleteOptionalParams,\n ): Promise {\n const poller = await this.beginDelete(\n resourceGroupName,\n deploymentName,\n options,\n );\n return poller.pollUntilDone();\n }\n\n /**\n * Checks whether the deployment exists.\n * @param resourceGroupName The name of the resource group with the deployment to check. The name is\n * case insensitive.\n * @param deploymentName The name of the deployment.\n * @param options The options parameters.\n */\n checkExistence(\n resourceGroupName: string,\n deploymentName: string,\n options?: DeploymentsCheckExistenceOptionalParams,\n ): Promise {\n return this.client.sendOperationRequest(\n { resourceGroupName, deploymentName, options },\n checkExistenceOperationSpec,\n );\n }\n\n /**\n * You can provide the template and parameters directly in the request or link to JSON files.\n * @param resourceGroupName The name of the resource group to deploy the resources to. The name is case\n * insensitive. The resource group must already exist.\n * @param deploymentName The name of the deployment.\n * @param parameters Additional parameters supplied to the operation.\n * @param options The options parameters.\n */\n async beginCreateOrUpdate(\n resourceGroupName: string,\n deploymentName: string,\n parameters: Deployment,\n options?: DeploymentsCreateOrUpdateOptionalParams,\n ): Promise<\n SimplePollerLike<\n OperationState,\n DeploymentsCreateOrUpdateResponse\n >\n > {\n const directSendOperation = async (\n args: coreClient.OperationArguments,\n spec: coreClient.OperationSpec,\n ): Promise => {\n return this.client.sendOperationRequest(args, spec);\n };\n const sendOperationFn = async (\n args: coreClient.OperationArguments,\n spec: coreClient.OperationSpec,\n ) => {\n let currentRawResponse: coreClient.FullOperationResponse | undefined =\n undefined;\n const providedCallback = args.options?.onResponse;\n const callback: coreClient.RawResponseCallback = (\n rawResponse: coreClient.FullOperationResponse,\n flatResponse: unknown,\n ) => {\n currentRawResponse = rawResponse;\n providedCallback?.(rawResponse, flatResponse);\n };\n const updatedArgs = {\n ...args,\n options: {\n ...args.options,\n onResponse: callback,\n },\n };\n const flatResponse = await directSendOperation(updatedArgs, spec);\n return {\n flatResponse,\n rawResponse: {\n statusCode: currentRawResponse!.status,\n body: currentRawResponse!.parsedBody,\n headers: currentRawResponse!.headers.toJSON(),\n },\n };\n };\n\n const lro = createLroSpec({\n sendOperationFn,\n args: { resourceGroupName, deploymentName, parameters, options },\n spec: createOrUpdateOperationSpec,\n });\n const poller = await createHttpPoller<\n DeploymentsCreateOrUpdateResponse,\n OperationState\n >(lro, {\n restoreFrom: options?.resumeFrom,\n intervalInMs: options?.updateIntervalInMs,\n });\n await poller.poll();\n return poller;\n }\n\n /**\n * You can provide the template and parameters directly in the request or link to JSON files.\n * @param resourceGroupName The name of the resource group to deploy the resources to. The name is case\n * insensitive. The resource group must already exist.\n * @param deploymentName The name of the deployment.\n * @param parameters Additional parameters supplied to the operation.\n * @param options The options parameters.\n */\n async beginCreateOrUpdateAndWait(\n resourceGroupName: string,\n deploymentName: string,\n parameters: Deployment,\n options?: DeploymentsCreateOrUpdateOptionalParams,\n ): Promise {\n const poller = await this.beginCreateOrUpdate(\n resourceGroupName,\n deploymentName,\n parameters,\n options,\n );\n return poller.pollUntilDone();\n }\n\n /**\n * Gets a deployment.\n * @param resourceGroupName The name of the resource group. The name is case insensitive.\n * @param deploymentName The name of the deployment.\n * @param options The options parameters.\n */\n get(\n resourceGroupName: string,\n deploymentName: string,\n options?: DeploymentsGetOptionalParams,\n ): Promise {\n return this.client.sendOperationRequest(\n { resourceGroupName, deploymentName, options },\n getOperationSpec,\n );\n }\n\n /**\n * You can cancel a deployment only if the provisioningState is Accepted or Running. After the\n * deployment is canceled, the provisioningState is set to Canceled. Canceling a template deployment\n * stops the currently running template deployment and leaves the resource group partially deployed.\n * @param resourceGroupName The name of the resource group. The name is case insensitive.\n * @param deploymentName The name of the deployment.\n * @param options The options parameters.\n */\n cancel(\n resourceGroupName: string,\n deploymentName: string,\n options?: DeploymentsCancelOptionalParams,\n ): Promise {\n return this.client.sendOperationRequest(\n { resourceGroupName, deploymentName, options },\n cancelOperationSpec,\n );\n }\n\n /**\n * Validates whether the specified template is syntactically correct and will be accepted by Azure\n * Resource Manager..\n * @param resourceGroupName The name of the resource group the template will be deployed to. The name\n * is case insensitive.\n * @param deploymentName The name of the deployment.\n * @param parameters Parameters to validate.\n * @param options The options parameters.\n */\n async beginValidate(\n resourceGroupName: string,\n deploymentName: string,\n parameters: Deployment,\n options?: DeploymentsValidateOptionalParams,\n ): Promise<\n SimplePollerLike<\n OperationState,\n DeploymentsValidateResponse\n >\n > {\n const directSendOperation = async (\n args: coreClient.OperationArguments,\n spec: coreClient.OperationSpec,\n ): Promise => {\n return this.client.sendOperationRequest(args, spec);\n };\n const sendOperationFn = async (\n args: coreClient.OperationArguments,\n spec: coreClient.OperationSpec,\n ) => {\n let currentRawResponse: coreClient.FullOperationResponse | undefined =\n undefined;\n const providedCallback = args.options?.onResponse;\n const callback: coreClient.RawResponseCallback = (\n rawResponse: coreClient.FullOperationResponse,\n flatResponse: unknown,\n ) => {\n currentRawResponse = rawResponse;\n providedCallback?.(rawResponse, flatResponse);\n };\n const updatedArgs = {\n ...args,\n options: {\n ...args.options,\n onResponse: callback,\n },\n };\n const flatResponse = await directSendOperation(updatedArgs, spec);\n return {\n flatResponse,\n rawResponse: {\n statusCode: currentRawResponse!.status,\n body: currentRawResponse!.parsedBody,\n headers: currentRawResponse!.headers.toJSON(),\n },\n };\n };\n\n const lro = createLroSpec({\n sendOperationFn,\n args: { resourceGroupName, deploymentName, parameters, options },\n spec: validateOperationSpec,\n });\n const poller = await createHttpPoller<\n DeploymentsValidateResponse,\n OperationState\n >(lro, {\n restoreFrom: options?.resumeFrom,\n intervalInMs: options?.updateIntervalInMs,\n });\n await poller.poll();\n return poller;\n }\n\n /**\n * Validates whether the specified template is syntactically correct and will be accepted by Azure\n * Resource Manager..\n * @param resourceGroupName The name of the resource group the template will be deployed to. The name\n * is case insensitive.\n * @param deploymentName The name of the deployment.\n * @param parameters Parameters to validate.\n * @param options The options parameters.\n */\n async beginValidateAndWait(\n resourceGroupName: string,\n deploymentName: string,\n parameters: Deployment,\n options?: DeploymentsValidateOptionalParams,\n ): Promise {\n const poller = await this.beginValidate(\n resourceGroupName,\n deploymentName,\n parameters,\n options,\n );\n return poller.pollUntilDone();\n }\n\n /**\n * Returns changes that will be made by the deployment if executed at the scope of the resource group.\n * @param resourceGroupName The name of the resource group the template will be deployed to. The name\n * is case insensitive.\n * @param deploymentName The name of the deployment.\n * @param parameters Parameters to validate.\n * @param options The options parameters.\n */\n async beginWhatIf(\n resourceGroupName: string,\n deploymentName: string,\n parameters: DeploymentWhatIf,\n options?: DeploymentsWhatIfOptionalParams,\n ): Promise<\n SimplePollerLike<\n OperationState,\n DeploymentsWhatIfResponse\n >\n > {\n const directSendOperation = async (\n args: coreClient.OperationArguments,\n spec: coreClient.OperationSpec,\n ): Promise => {\n return this.client.sendOperationRequest(args, spec);\n };\n const sendOperationFn = async (\n args: coreClient.OperationArguments,\n spec: coreClient.OperationSpec,\n ) => {\n let currentRawResponse: coreClient.FullOperationResponse | undefined =\n undefined;\n const providedCallback = args.options?.onResponse;\n const callback: coreClient.RawResponseCallback = (\n rawResponse: coreClient.FullOperationResponse,\n flatResponse: unknown,\n ) => {\n currentRawResponse = rawResponse;\n providedCallback?.(rawResponse, flatResponse);\n };\n const updatedArgs = {\n ...args,\n options: {\n ...args.options,\n onResponse: callback,\n },\n };\n const flatResponse = await directSendOperation(updatedArgs, spec);\n return {\n flatResponse,\n rawResponse: {\n statusCode: currentRawResponse!.status,\n body: currentRawResponse!.parsedBody,\n headers: currentRawResponse!.headers.toJSON(),\n },\n };\n };\n\n const lro = createLroSpec({\n sendOperationFn,\n args: { resourceGroupName, deploymentName, parameters, options },\n spec: whatIfOperationSpec,\n });\n const poller = await createHttpPoller<\n DeploymentsWhatIfResponse,\n OperationState\n >(lro, {\n restoreFrom: options?.resumeFrom,\n intervalInMs: options?.updateIntervalInMs,\n resourceLocationConfig: \"location\",\n });\n await poller.poll();\n return poller;\n }\n\n /**\n * Returns changes that will be made by the deployment if executed at the scope of the resource group.\n * @param resourceGroupName The name of the resource group the template will be deployed to. The name\n * is case insensitive.\n * @param deploymentName The name of the deployment.\n * @param parameters Parameters to validate.\n * @param options The options parameters.\n */\n async beginWhatIfAndWait(\n resourceGroupName: string,\n deploymentName: string,\n parameters: DeploymentWhatIf,\n options?: DeploymentsWhatIfOptionalParams,\n ): Promise {\n const poller = await this.beginWhatIf(\n resourceGroupName,\n deploymentName,\n parameters,\n options,\n );\n return poller.pollUntilDone();\n }\n\n /**\n * Exports the template used for specified deployment.\n * @param resourceGroupName The name of the resource group. The name is case insensitive.\n * @param deploymentName The name of the deployment.\n * @param options The options parameters.\n */\n exportTemplate(\n resourceGroupName: string,\n deploymentName: string,\n options?: DeploymentsExportTemplateOptionalParams,\n ): Promise {\n return this.client.sendOperationRequest(\n { resourceGroupName, deploymentName, options },\n exportTemplateOperationSpec,\n );\n }\n\n /**\n * Get all the deployments for a resource group.\n * @param resourceGroupName The name of the resource group with the deployments to get. The name is\n * case insensitive.\n * @param options The options parameters.\n */\n private _listByResourceGroup(\n resourceGroupName: string,\n options?: DeploymentsListByResourceGroupOptionalParams,\n ): Promise {\n return this.client.sendOperationRequest(\n { resourceGroupName, options },\n listByResourceGroupOperationSpec,\n );\n }\n\n /**\n * Calculate the hash of the given template.\n * @param template The template provided to calculate hash.\n * @param options The options parameters.\n */\n calculateTemplateHash(\n template: Record,\n options?: DeploymentsCalculateTemplateHashOptionalParams,\n ): Promise {\n return this.client.sendOperationRequest(\n { template, options },\n calculateTemplateHashOperationSpec,\n );\n }\n\n /**\n * ListAtScopeNext\n * @param scope The resource scope.\n * @param nextLink The nextLink from the previous successful call to the ListAtScope method.\n * @param options The options parameters.\n */\n private _listAtScopeNext(\n scope: string,\n nextLink: string,\n options?: DeploymentsListAtScopeNextOptionalParams,\n ): Promise {\n return this.client.sendOperationRequest(\n { scope, nextLink, options },\n listAtScopeNextOperationSpec,\n );\n }\n\n /**\n * ListAtTenantScopeNext\n * @param nextLink The nextLink from the previous successful call to the ListAtTenantScope method.\n * @param options The options parameters.\n */\n private _listAtTenantScopeNext(\n nextLink: string,\n options?: DeploymentsListAtTenantScopeNextOptionalParams,\n ): Promise {\n return this.client.sendOperationRequest(\n { nextLink, options },\n listAtTenantScopeNextOperationSpec,\n );\n }\n\n /**\n * ListAtManagementGroupScopeNext\n * @param groupId The management group ID.\n * @param nextLink The nextLink from the previous successful call to the ListAtManagementGroupScope\n * method.\n * @param options The options parameters.\n */\n private _listAtManagementGroupScopeNext(\n groupId: string,\n nextLink: string,\n options?: DeploymentsListAtManagementGroupScopeNextOptionalParams,\n ): Promise {\n return this.client.sendOperationRequest(\n { groupId, nextLink, options },\n listAtManagementGroupScopeNextOperationSpec,\n );\n }\n\n /**\n * ListAtSubscriptionScopeNext\n * @param nextLink The nextLink from the previous successful call to the ListAtSubscriptionScope\n * method.\n * @param options The options parameters.\n */\n private _listAtSubscriptionScopeNext(\n nextLink: string,\n options?: DeploymentsListAtSubscriptionScopeNextOptionalParams,\n ): Promise {\n return this.client.sendOperationRequest(\n { nextLink, options },\n listAtSubscriptionScopeNextOperationSpec,\n );\n }\n\n /**\n * ListByResourceGroupNext\n * @param resourceGroupName The name of the resource group with the deployments to get. The name is\n * case insensitive.\n * @param nextLink The nextLink from the previous successful call to the ListByResourceGroup method.\n * @param options The options parameters.\n */\n private _listByResourceGroupNext(\n resourceGroupName: string,\n nextLink: string,\n options?: DeploymentsListByResourceGroupNextOptionalParams,\n ): Promise {\n return this.client.sendOperationRequest(\n { resourceGroupName, nextLink, options },\n listByResourceGroupNextOperationSpec,\n );\n }\n}\n// Operation Specifications\nconst serializer = coreClient.createSerializer(Mappers, /* isXml */ false);\n\nconst deleteAtScopeOperationSpec: coreClient.OperationSpec = {\n path: \"/{scope}/providers/Microsoft.Resources/deployments/{deploymentName}\",\n httpMethod: \"DELETE\",\n responses: {\n 200: {},\n 201: {},\n 202: {},\n 204: {},\n default: {\n bodyMapper: Mappers.CloudError,\n },\n },\n queryParameters: [Parameters.apiVersion],\n urlParameters: [\n Parameters.$host,\n Parameters.scope,\n Parameters.deploymentName,\n ],\n headerParameters: [Parameters.accept],\n serializer,\n};\nconst checkExistenceAtScopeOperationSpec: coreClient.OperationSpec = {\n path: \"/{scope}/providers/Microsoft.Resources/deployments/{deploymentName}\",\n httpMethod: \"HEAD\",\n responses: {\n 204: {},\n 404: {},\n default: {\n bodyMapper: Mappers.CloudError,\n },\n },\n queryParameters: [Parameters.apiVersion],\n urlParameters: [\n Parameters.$host,\n Parameters.scope,\n Parameters.deploymentName,\n ],\n headerParameters: [Parameters.accept],\n serializer,\n};\nconst createOrUpdateAtScopeOperationSpec: coreClient.OperationSpec = {\n path: \"/{scope}/providers/Microsoft.Resources/deployments/{deploymentName}\",\n httpMethod: \"PUT\",\n responses: {\n 200: {\n bodyMapper: Mappers.DeploymentExtended,\n },\n 201: {\n bodyMapper: Mappers.DeploymentExtended,\n },\n 202: {\n bodyMapper: Mappers.DeploymentExtended,\n },\n 204: {\n bodyMapper: Mappers.DeploymentExtended,\n },\n default: {\n bodyMapper: Mappers.CloudError,\n },\n },\n requestBody: Parameters.parameters,\n queryParameters: [Parameters.apiVersion],\n urlParameters: [\n Parameters.$host,\n Parameters.scope,\n Parameters.deploymentName,\n ],\n headerParameters: [Parameters.accept, Parameters.contentType],\n mediaType: \"json\",\n serializer,\n};\nconst getAtScopeOperationSpec: coreClient.OperationSpec = {\n path: \"/{scope}/providers/Microsoft.Resources/deployments/{deploymentName}\",\n httpMethod: \"GET\",\n responses: {\n 200: {\n bodyMapper: Mappers.DeploymentExtended,\n },\n default: {\n bodyMapper: Mappers.CloudError,\n },\n },\n queryParameters: [Parameters.apiVersion],\n urlParameters: [\n Parameters.$host,\n Parameters.scope,\n Parameters.deploymentName,\n ],\n headerParameters: [Parameters.accept],\n serializer,\n};\nconst cancelAtScopeOperationSpec: coreClient.OperationSpec = {\n path: \"/{scope}/providers/Microsoft.Resources/deployments/{deploymentName}/cancel\",\n httpMethod: \"POST\",\n responses: {\n 204: {},\n default: {\n bodyMapper: Mappers.CloudError,\n },\n },\n queryParameters: [Parameters.apiVersion],\n urlParameters: [\n Parameters.$host,\n Parameters.scope,\n Parameters.deploymentName,\n ],\n headerParameters: [Parameters.accept],\n serializer,\n};\nconst validateAtScopeOperationSpec: coreClient.OperationSpec = {\n path: \"/{scope}/providers/Microsoft.Resources/deployments/{deploymentName}/validate\",\n httpMethod: \"POST\",\n responses: {\n 200: {\n bodyMapper: Mappers.DeploymentValidateResult,\n },\n 201: {\n bodyMapper: Mappers.DeploymentValidateResult,\n },\n 202: {\n bodyMapper: Mappers.DeploymentValidateResult,\n },\n 204: {\n bodyMapper: Mappers.DeploymentValidateResult,\n },\n default: {\n bodyMapper: Mappers.CloudError,\n },\n },\n requestBody: Parameters.parameters,\n queryParameters: [Parameters.apiVersion],\n urlParameters: [\n Parameters.$host,\n Parameters.scope,\n Parameters.deploymentName,\n ],\n headerParameters: [Parameters.accept, Parameters.contentType],\n mediaType: \"json\",\n serializer,\n};\nconst exportTemplateAtScopeOperationSpec: coreClient.OperationSpec = {\n path: \"/{scope}/providers/Microsoft.Resources/deployments/{deploymentName}/exportTemplate\",\n httpMethod: \"POST\",\n responses: {\n 200: {\n bodyMapper: Mappers.DeploymentExportResult,\n },\n default: {\n bodyMapper: Mappers.CloudError,\n },\n },\n queryParameters: [Parameters.apiVersion],\n urlParameters: [\n Parameters.$host,\n Parameters.scope,\n Parameters.deploymentName,\n ],\n headerParameters: [Parameters.accept],\n serializer,\n};\nconst listAtScopeOperationSpec: coreClient.OperationSpec = {\n path: \"/{scope}/providers/Microsoft.Resources/deployments/\",\n httpMethod: \"GET\",\n responses: {\n 200: {\n bodyMapper: Mappers.DeploymentListResult,\n },\n default: {\n bodyMapper: Mappers.CloudError,\n },\n },\n queryParameters: [Parameters.apiVersion, Parameters.filter, Parameters.top],\n urlParameters: [Parameters.$host, Parameters.scope],\n headerParameters: [Parameters.accept],\n serializer,\n};\nconst deleteAtTenantScopeOperationSpec: coreClient.OperationSpec = {\n path: \"/providers/Microsoft.Resources/deployments/{deploymentName}\",\n httpMethod: \"DELETE\",\n responses: {\n 200: {},\n 201: {},\n 202: {},\n 204: {},\n default: {\n bodyMapper: Mappers.CloudError,\n },\n },\n queryParameters: [Parameters.apiVersion],\n urlParameters: [Parameters.$host, Parameters.deploymentName],\n headerParameters: [Parameters.accept],\n serializer,\n};\nconst checkExistenceAtTenantScopeOperationSpec: coreClient.OperationSpec = {\n path: \"/providers/Microsoft.Resources/deployments/{deploymentName}\",\n httpMethod: \"HEAD\",\n responses: {\n 204: {},\n 404: {},\n default: {\n bodyMapper: Mappers.CloudError,\n },\n },\n queryParameters: [Parameters.apiVersion],\n urlParameters: [Parameters.$host, Parameters.deploymentName],\n headerParameters: [Parameters.accept],\n serializer,\n};\nconst createOrUpdateAtTenantScopeOperationSpec: coreClient.OperationSpec = {\n path: \"/providers/Microsoft.Resources/deployments/{deploymentName}\",\n httpMethod: \"PUT\",\n responses: {\n 200: {\n bodyMapper: Mappers.DeploymentExtended,\n },\n 201: {\n bodyMapper: Mappers.DeploymentExtended,\n },\n 202: {\n bodyMapper: Mappers.DeploymentExtended,\n },\n 204: {\n bodyMapper: Mappers.DeploymentExtended,\n },\n default: {\n bodyMapper: Mappers.CloudError,\n },\n },\n requestBody: Parameters.parameters1,\n queryParameters: [Parameters.apiVersion],\n urlParameters: [Parameters.$host, Parameters.deploymentName],\n headerParameters: [Parameters.accept, Parameters.contentType],\n mediaType: \"json\",\n serializer,\n};\nconst getAtTenantScopeOperationSpec: coreClient.OperationSpec = {\n path: \"/providers/Microsoft.Resources/deployments/{deploymentName}\",\n httpMethod: \"GET\",\n responses: {\n 200: {\n bodyMapper: Mappers.DeploymentExtended,\n },\n default: {\n bodyMapper: Mappers.CloudError,\n },\n },\n queryParameters: [Parameters.apiVersion],\n urlParameters: [Parameters.$host, Parameters.deploymentName],\n headerParameters: [Parameters.accept],\n serializer,\n};\nconst cancelAtTenantScopeOperationSpec: coreClient.OperationSpec = {\n path: \"/providers/Microsoft.Resources/deployments/{deploymentName}/cancel\",\n httpMethod: \"POST\",\n responses: {\n 204: {},\n default: {\n bodyMapper: Mappers.CloudError,\n },\n },\n queryParameters: [Parameters.apiVersion],\n urlParameters: [Parameters.$host, Parameters.deploymentName],\n headerParameters: [Parameters.accept],\n serializer,\n};\nconst validateAtTenantScopeOperationSpec: coreClient.OperationSpec = {\n path: \"/providers/Microsoft.Resources/deployments/{deploymentName}/validate\",\n httpMethod: \"POST\",\n responses: {\n 200: {\n bodyMapper: Mappers.DeploymentValidateResult,\n },\n 201: {\n bodyMapper: Mappers.DeploymentValidateResult,\n },\n 202: {\n bodyMapper: Mappers.DeploymentValidateResult,\n },\n 204: {\n bodyMapper: Mappers.DeploymentValidateResult,\n },\n default: {\n bodyMapper: Mappers.CloudError,\n },\n },\n requestBody: Parameters.parameters1,\n queryParameters: [Parameters.apiVersion],\n urlParameters: [Parameters.$host, Parameters.deploymentName],\n headerParameters: [Parameters.accept, Parameters.contentType],\n mediaType: \"json\",\n serializer,\n};\nconst whatIfAtTenantScopeOperationSpec: coreClient.OperationSpec = {\n path: \"/providers/Microsoft.Resources/deployments/{deploymentName}/whatIf\",\n httpMethod: \"POST\",\n responses: {\n 200: {\n bodyMapper: Mappers.WhatIfOperationResult,\n },\n 201: {\n bodyMapper: Mappers.WhatIfOperationResult,\n },\n 202: {\n bodyMapper: Mappers.WhatIfOperationResult,\n },\n 204: {\n bodyMapper: Mappers.WhatIfOperationResult,\n },\n default: {\n bodyMapper: Mappers.CloudError,\n },\n },\n requestBody: Parameters.parameters2,\n queryParameters: [Parameters.apiVersion],\n urlParameters: [Parameters.$host, Parameters.deploymentName],\n headerParameters: [Parameters.accept, Parameters.contentType],\n mediaType: \"json\",\n serializer,\n};\nconst exportTemplateAtTenantScopeOperationSpec: coreClient.OperationSpec = {\n path: \"/providers/Microsoft.Resources/deployments/{deploymentName}/exportTemplate\",\n httpMethod: \"POST\",\n responses: {\n 200: {\n bodyMapper: Mappers.DeploymentExportResult,\n },\n default: {\n bodyMapper: Mappers.CloudError,\n },\n },\n queryParameters: [Parameters.apiVersion],\n urlParameters: [Parameters.$host, Parameters.deploymentName],\n headerParameters: [Parameters.accept],\n serializer,\n};\nconst listAtTenantScopeOperationSpec: coreClient.OperationSpec = {\n path: \"/providers/Microsoft.Resources/deployments/\",\n httpMethod: \"GET\",\n responses: {\n 200: {\n bodyMapper: Mappers.DeploymentListResult,\n },\n default: {\n bodyMapper: Mappers.CloudError,\n },\n },\n queryParameters: [Parameters.apiVersion, Parameters.filter, Parameters.top],\n urlParameters: [Parameters.$host],\n headerParameters: [Parameters.accept],\n serializer,\n};\nconst deleteAtManagementGroupScopeOperationSpec: coreClient.OperationSpec = {\n path: \"/providers/Microsoft.Management/managementGroups/{groupId}/providers/Microsoft.Resources/deployments/{deploymentName}\",\n httpMethod: \"DELETE\",\n responses: {\n 200: {},\n 201: {},\n 202: {},\n 204: {},\n default: {\n bodyMapper: Mappers.CloudError,\n },\n },\n queryParameters: [Parameters.apiVersion],\n urlParameters: [\n Parameters.$host,\n Parameters.deploymentName,\n Parameters.groupId,\n ],\n headerParameters: [Parameters.accept],\n serializer,\n};\nconst checkExistenceAtManagementGroupScopeOperationSpec: coreClient.OperationSpec =\n {\n path: \"/providers/Microsoft.Management/managementGroups/{groupId}/providers/Microsoft.Resources/deployments/{deploymentName}\",\n httpMethod: \"HEAD\",\n responses: {\n 204: {},\n 404: {},\n default: {\n bodyMapper: Mappers.CloudError,\n },\n },\n queryParameters: [Parameters.apiVersion],\n urlParameters: [\n Parameters.$host,\n Parameters.deploymentName,\n Parameters.groupId,\n ],\n headerParameters: [Parameters.accept],\n serializer,\n };\nconst createOrUpdateAtManagementGroupScopeOperationSpec: coreClient.OperationSpec =\n {\n path: \"/providers/Microsoft.Management/managementGroups/{groupId}/providers/Microsoft.Resources/deployments/{deploymentName}\",\n httpMethod: \"PUT\",\n responses: {\n 200: {\n bodyMapper: Mappers.DeploymentExtended,\n },\n 201: {\n bodyMapper: Mappers.DeploymentExtended,\n },\n 202: {\n bodyMapper: Mappers.DeploymentExtended,\n },\n 204: {\n bodyMapper: Mappers.DeploymentExtended,\n },\n default: {\n bodyMapper: Mappers.CloudError,\n },\n },\n requestBody: Parameters.parameters1,\n queryParameters: [Parameters.apiVersion],\n urlParameters: [\n Parameters.$host,\n Parameters.deploymentName,\n Parameters.groupId,\n ],\n headerParameters: [Parameters.accept, Parameters.contentType],\n mediaType: \"json\",\n serializer,\n };\nconst getAtManagementGroupScopeOperationSpec: coreClient.OperationSpec = {\n path: \"/providers/Microsoft.Management/managementGroups/{groupId}/providers/Microsoft.Resources/deployments/{deploymentName}\",\n httpMethod: \"GET\",\n responses: {\n 200: {\n bodyMapper: Mappers.DeploymentExtended,\n },\n default: {\n bodyMapper: Mappers.CloudError,\n },\n },\n queryParameters: [Parameters.apiVersion],\n urlParameters: [\n Parameters.$host,\n Parameters.deploymentName,\n Parameters.groupId,\n ],\n headerParameters: [Parameters.accept],\n serializer,\n};\nconst cancelAtManagementGroupScopeOperationSpec: coreClient.OperationSpec = {\n path: \"/providers/Microsoft.Management/managementGroups/{groupId}/providers/Microsoft.Resources/deployments/{deploymentName}/cancel\",\n httpMethod: \"POST\",\n responses: {\n 204: {},\n default: {\n bodyMapper: Mappers.CloudError,\n },\n },\n queryParameters: [Parameters.apiVersion],\n urlParameters: [\n Parameters.$host,\n Parameters.deploymentName,\n Parameters.groupId,\n ],\n headerParameters: [Parameters.accept],\n serializer,\n};\nconst validateAtManagementGroupScopeOperationSpec: coreClient.OperationSpec = {\n path: \"/providers/Microsoft.Management/managementGroups/{groupId}/providers/Microsoft.Resources/deployments/{deploymentName}/validate\",\n httpMethod: \"POST\",\n responses: {\n 200: {\n bodyMapper: Mappers.DeploymentValidateResult,\n },\n 201: {\n bodyMapper: Mappers.DeploymentValidateResult,\n },\n 202: {\n bodyMapper: Mappers.DeploymentValidateResult,\n },\n 204: {\n bodyMapper: Mappers.DeploymentValidateResult,\n },\n default: {\n bodyMapper: Mappers.CloudError,\n },\n },\n requestBody: Parameters.parameters1,\n queryParameters: [Parameters.apiVersion],\n urlParameters: [\n Parameters.$host,\n Parameters.deploymentName,\n Parameters.groupId,\n ],\n headerParameters: [Parameters.accept, Parameters.contentType],\n mediaType: \"json\",\n serializer,\n};\nconst whatIfAtManagementGroupScopeOperationSpec: coreClient.OperationSpec = {\n path: \"/providers/Microsoft.Management/managementGroups/{groupId}/providers/Microsoft.Resources/deployments/{deploymentName}/whatIf\",\n httpMethod: \"POST\",\n responses: {\n 200: {\n bodyMapper: Mappers.WhatIfOperationResult,\n },\n 201: {\n bodyMapper: Mappers.WhatIfOperationResult,\n },\n 202: {\n bodyMapper: Mappers.WhatIfOperationResult,\n },\n 204: {\n bodyMapper: Mappers.WhatIfOperationResult,\n },\n default: {\n bodyMapper: Mappers.CloudError,\n },\n },\n requestBody: Parameters.parameters2,\n queryParameters: [Parameters.apiVersion],\n urlParameters: [\n Parameters.$host,\n Parameters.deploymentName,\n Parameters.groupId,\n ],\n headerParameters: [Parameters.accept, Parameters.contentType],\n mediaType: \"json\",\n serializer,\n};\nconst exportTemplateAtManagementGroupScopeOperationSpec: coreClient.OperationSpec =\n {\n path: \"/providers/Microsoft.Management/managementGroups/{groupId}/providers/Microsoft.Resources/deployments/{deploymentName}/exportTemplate\",\n httpMethod: \"POST\",\n responses: {\n 200: {\n bodyMapper: Mappers.DeploymentExportResult,\n },\n default: {\n bodyMapper: Mappers.CloudError,\n },\n },\n queryParameters: [Parameters.apiVersion],\n urlParameters: [\n Parameters.$host,\n Parameters.deploymentName,\n Parameters.groupId,\n ],\n headerParameters: [Parameters.accept],\n serializer,\n };\nconst listAtManagementGroupScopeOperationSpec: coreClient.OperationSpec = {\n path: \"/providers/Microsoft.Management/managementGroups/{groupId}/providers/Microsoft.Resources/deployments/\",\n httpMethod: \"GET\",\n responses: {\n 200: {\n bodyMapper: Mappers.DeploymentListResult,\n },\n default: {\n bodyMapper: Mappers.CloudError,\n },\n },\n queryParameters: [Parameters.apiVersion, Parameters.filter, Parameters.top],\n urlParameters: [Parameters.$host, Parameters.groupId],\n headerParameters: [Parameters.accept],\n serializer,\n};\nconst deleteAtSubscriptionScopeOperationSpec: coreClient.OperationSpec = {\n path: \"/subscriptions/{subscriptionId}/providers/Microsoft.Resources/deployments/{deploymentName}\",\n httpMethod: \"DELETE\",\n responses: {\n 200: {},\n 201: {},\n 202: {},\n 204: {},\n default: {\n bodyMapper: Mappers.CloudError,\n },\n },\n queryParameters: [Parameters.apiVersion],\n urlParameters: [\n Parameters.$host,\n Parameters.deploymentName,\n Parameters.subscriptionId,\n ],\n headerParameters: [Parameters.accept],\n serializer,\n};\nconst checkExistenceAtSubscriptionScopeOperationSpec: coreClient.OperationSpec =\n {\n path: \"/subscriptions/{subscriptionId}/providers/Microsoft.Resources/deployments/{deploymentName}\",\n httpMethod: \"HEAD\",\n responses: {\n 204: {},\n 404: {},\n default: {\n bodyMapper: Mappers.CloudError,\n },\n },\n queryParameters: [Parameters.apiVersion],\n urlParameters: [\n Parameters.$host,\n Parameters.deploymentName,\n Parameters.subscriptionId,\n ],\n headerParameters: [Parameters.accept],\n serializer,\n };\nconst createOrUpdateAtSubscriptionScopeOperationSpec: coreClient.OperationSpec =\n {\n path: \"/subscriptions/{subscriptionId}/providers/Microsoft.Resources/deployments/{deploymentName}\",\n httpMethod: \"PUT\",\n responses: {\n 200: {\n bodyMapper: Mappers.DeploymentExtended,\n },\n 201: {\n bodyMapper: Mappers.DeploymentExtended,\n },\n 202: {\n bodyMapper: Mappers.DeploymentExtended,\n },\n 204: {\n bodyMapper: Mappers.DeploymentExtended,\n },\n default: {\n bodyMapper: Mappers.CloudError,\n },\n },\n requestBody: Parameters.parameters,\n queryParameters: [Parameters.apiVersion],\n urlParameters: [\n Parameters.$host,\n Parameters.deploymentName,\n Parameters.subscriptionId,\n ],\n headerParameters: [Parameters.accept, Parameters.contentType],\n mediaType: \"json\",\n serializer,\n };\nconst getAtSubscriptionScopeOperationSpec: coreClient.OperationSpec = {\n path: \"/subscriptions/{subscriptionId}/providers/Microsoft.Resources/deployments/{deploymentName}\",\n httpMethod: \"GET\",\n responses: {\n 200: {\n bodyMapper: Mappers.DeploymentExtended,\n },\n default: {\n bodyMapper: Mappers.CloudError,\n },\n },\n queryParameters: [Parameters.apiVersion],\n urlParameters: [\n Parameters.$host,\n Parameters.deploymentName,\n Parameters.subscriptionId,\n ],\n headerParameters: [Parameters.accept],\n serializer,\n};\nconst cancelAtSubscriptionScopeOperationSpec: coreClient.OperationSpec = {\n path: \"/subscriptions/{subscriptionId}/providers/Microsoft.Resources/deployments/{deploymentName}/cancel\",\n httpMethod: \"POST\",\n responses: {\n 204: {},\n default: {\n bodyMapper: Mappers.CloudError,\n },\n },\n queryParameters: [Parameters.apiVersion],\n urlParameters: [\n Parameters.$host,\n Parameters.deploymentName,\n Parameters.subscriptionId,\n ],\n headerParameters: [Parameters.accept],\n serializer,\n};\nconst validateAtSubscriptionScopeOperationSpec: coreClient.OperationSpec = {\n path: \"/subscriptions/{subscriptionId}/providers/Microsoft.Resources/deployments/{deploymentName}/validate\",\n httpMethod: \"POST\",\n responses: {\n 200: {\n bodyMapper: Mappers.DeploymentValidateResult,\n },\n 201: {\n bodyMapper: Mappers.DeploymentValidateResult,\n },\n 202: {\n bodyMapper: Mappers.DeploymentValidateResult,\n },\n 204: {\n bodyMapper: Mappers.DeploymentValidateResult,\n },\n default: {\n bodyMapper: Mappers.CloudError,\n },\n },\n requestBody: Parameters.parameters,\n queryParameters: [Parameters.apiVersion],\n urlParameters: [\n Parameters.$host,\n Parameters.deploymentName,\n Parameters.subscriptionId,\n ],\n headerParameters: [Parameters.accept, Parameters.contentType],\n mediaType: \"json\",\n serializer,\n};\nconst whatIfAtSubscriptionScopeOperationSpec: coreClient.OperationSpec = {\n path: \"/subscriptions/{subscriptionId}/providers/Microsoft.Resources/deployments/{deploymentName}/whatIf\",\n httpMethod: \"POST\",\n responses: {\n 200: {\n bodyMapper: Mappers.WhatIfOperationResult,\n },\n 201: {\n bodyMapper: Mappers.WhatIfOperationResult,\n },\n 202: {\n bodyMapper: Mappers.WhatIfOperationResult,\n },\n 204: {\n bodyMapper: Mappers.WhatIfOperationResult,\n },\n default: {\n bodyMapper: Mappers.CloudError,\n },\n },\n requestBody: Parameters.parameters3,\n queryParameters: [Parameters.apiVersion],\n urlParameters: [\n Parameters.$host,\n Parameters.deploymentName,\n Parameters.subscriptionId,\n ],\n headerParameters: [Parameters.accept, Parameters.contentType],\n mediaType: \"json\",\n serializer,\n};\nconst exportTemplateAtSubscriptionScopeOperationSpec: coreClient.OperationSpec =\n {\n path: \"/subscriptions/{subscriptionId}/providers/Microsoft.Resources/deployments/{deploymentName}/exportTemplate\",\n httpMethod: \"POST\",\n responses: {\n 200: {\n bodyMapper: Mappers.DeploymentExportResult,\n },\n default: {\n bodyMapper: Mappers.CloudError,\n },\n },\n queryParameters: [Parameters.apiVersion],\n urlParameters: [\n Parameters.$host,\n Parameters.deploymentName,\n Parameters.subscriptionId,\n ],\n headerParameters: [Parameters.accept],\n serializer,\n };\nconst listAtSubscriptionScopeOperationSpec: coreClient.OperationSpec = {\n path: \"/subscriptions/{subscriptionId}/providers/Microsoft.Resources/deployments/\",\n httpMethod: \"GET\",\n responses: {\n 200: {\n bodyMapper: Mappers.DeploymentListResult,\n },\n default: {\n bodyMapper: Mappers.CloudError,\n },\n },\n queryParameters: [Parameters.apiVersion, Parameters.filter, Parameters.top],\n urlParameters: [Parameters.$host, Parameters.subscriptionId],\n headerParameters: [Parameters.accept],\n serializer,\n};\nconst deleteOperationSpec: coreClient.OperationSpec = {\n path: \"/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.Resources/deployments/{deploymentName}\",\n httpMethod: \"DELETE\",\n responses: {\n 200: {},\n 201: {},\n 202: {},\n 204: {},\n default: {\n bodyMapper: Mappers.CloudError,\n },\n },\n queryParameters: [Parameters.apiVersion],\n urlParameters: [\n Parameters.$host,\n Parameters.deploymentName,\n Parameters.subscriptionId,\n Parameters.resourceGroupName,\n ],\n headerParameters: [Parameters.accept],\n serializer,\n};\nconst checkExistenceOperationSpec: coreClient.OperationSpec = {\n path: \"/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.Resources/deployments/{deploymentName}\",\n httpMethod: \"HEAD\",\n responses: {\n 204: {},\n 404: {},\n default: {\n bodyMapper: Mappers.CloudError,\n },\n },\n queryParameters: [Parameters.apiVersion],\n urlParameters: [\n Parameters.$host,\n Parameters.deploymentName,\n Parameters.subscriptionId,\n Parameters.resourceGroupName,\n ],\n headerParameters: [Parameters.accept],\n serializer,\n};\nconst createOrUpdateOperationSpec: coreClient.OperationSpec = {\n path: \"/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.Resources/deployments/{deploymentName}\",\n httpMethod: \"PUT\",\n responses: {\n 200: {\n bodyMapper: Mappers.DeploymentExtended,\n },\n 201: {\n bodyMapper: Mappers.DeploymentExtended,\n },\n 202: {\n bodyMapper: Mappers.DeploymentExtended,\n },\n 204: {\n bodyMapper: Mappers.DeploymentExtended,\n },\n default: {\n bodyMapper: Mappers.CloudError,\n },\n },\n requestBody: Parameters.parameters,\n queryParameters: [Parameters.apiVersion],\n urlParameters: [\n Parameters.$host,\n Parameters.deploymentName,\n Parameters.subscriptionId,\n Parameters.resourceGroupName,\n ],\n headerParameters: [Parameters.accept, Parameters.contentType],\n mediaType: \"json\",\n serializer,\n};\nconst getOperationSpec: coreClient.OperationSpec = {\n path: \"/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.Resources/deployments/{deploymentName}\",\n httpMethod: \"GET\",\n responses: {\n 200: {\n bodyMapper: Mappers.DeploymentExtended,\n },\n default: {\n bodyMapper: Mappers.CloudError,\n },\n },\n queryParameters: [Parameters.apiVersion],\n urlParameters: [\n Parameters.$host,\n Parameters.deploymentName,\n Parameters.subscriptionId,\n Parameters.resourceGroupName,\n ],\n headerParameters: [Parameters.accept],\n serializer,\n};\nconst cancelOperationSpec: coreClient.OperationSpec = {\n path: \"/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.Resources/deployments/{deploymentName}/cancel\",\n httpMethod: \"POST\",\n responses: {\n 204: {},\n default: {\n bodyMapper: Mappers.CloudError,\n },\n },\n queryParameters: [Parameters.apiVersion],\n urlParameters: [\n Parameters.$host,\n Parameters.deploymentName,\n Parameters.subscriptionId,\n Parameters.resourceGroupName,\n ],\n headerParameters: [Parameters.accept],\n serializer,\n};\nconst validateOperationSpec: coreClient.OperationSpec = {\n path: \"/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.Resources/deployments/{deploymentName}/validate\",\n httpMethod: \"POST\",\n responses: {\n 200: {\n bodyMapper: Mappers.DeploymentValidateResult,\n },\n 201: {\n bodyMapper: Mappers.DeploymentValidateResult,\n },\n 202: {\n bodyMapper: Mappers.DeploymentValidateResult,\n },\n 204: {\n bodyMapper: Mappers.DeploymentValidateResult,\n },\n default: {\n bodyMapper: Mappers.CloudError,\n },\n },\n requestBody: Parameters.parameters,\n queryParameters: [Parameters.apiVersion],\n urlParameters: [\n Parameters.$host,\n Parameters.deploymentName,\n Parameters.subscriptionId,\n Parameters.resourceGroupName,\n ],\n headerParameters: [Parameters.accept, Parameters.contentType],\n mediaType: \"json\",\n serializer,\n};\nconst whatIfOperationSpec: coreClient.OperationSpec = {\n path: \"/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.Resources/deployments/{deploymentName}/whatIf\",\n httpMethod: \"POST\",\n responses: {\n 200: {\n bodyMapper: Mappers.WhatIfOperationResult,\n },\n 201: {\n bodyMapper: Mappers.WhatIfOperationResult,\n },\n 202: {\n bodyMapper: Mappers.WhatIfOperationResult,\n },\n 204: {\n bodyMapper: Mappers.WhatIfOperationResult,\n },\n default: {\n bodyMapper: Mappers.CloudError,\n },\n },\n requestBody: Parameters.parameters3,\n queryParameters: [Parameters.apiVersion],\n urlParameters: [\n Parameters.$host,\n Parameters.deploymentName,\n Parameters.subscriptionId,\n Parameters.resourceGroupName,\n ],\n headerParameters: [Parameters.accept, Parameters.contentType],\n mediaType: \"json\",\n serializer,\n};\nconst exportTemplateOperationSpec: coreClient.OperationSpec = {\n path: \"/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.Resources/deployments/{deploymentName}/exportTemplate\",\n httpMethod: \"POST\",\n responses: {\n 200: {\n bodyMapper: Mappers.DeploymentExportResult,\n },\n default: {\n bodyMapper: Mappers.CloudError,\n },\n },\n queryParameters: [Parameters.apiVersion],\n urlParameters: [\n Parameters.$host,\n Parameters.deploymentName,\n Parameters.subscriptionId,\n Parameters.resourceGroupName,\n ],\n headerParameters: [Parameters.accept],\n serializer,\n};\nconst listByResourceGroupOperationSpec: coreClient.OperationSpec = {\n path: \"/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.Resources/deployments/\",\n httpMethod: \"GET\",\n responses: {\n 200: {\n bodyMapper: Mappers.DeploymentListResult,\n },\n default: {\n bodyMapper: Mappers.CloudError,\n },\n },\n queryParameters: [Parameters.apiVersion, Parameters.filter, Parameters.top],\n urlParameters: [\n Parameters.$host,\n Parameters.subscriptionId,\n Parameters.resourceGroupName,\n ],\n headerParameters: [Parameters.accept],\n serializer,\n};\nconst calculateTemplateHashOperationSpec: coreClient.OperationSpec = {\n path: \"/providers/Microsoft.Resources/calculateTemplateHash\",\n httpMethod: \"POST\",\n responses: {\n 200: {\n bodyMapper: Mappers.TemplateHashResult,\n },\n default: {\n bodyMapper: Mappers.CloudError,\n },\n },\n requestBody: Parameters.template,\n queryParameters: [Parameters.apiVersion],\n urlParameters: [Parameters.$host],\n headerParameters: [Parameters.accept, Parameters.contentType],\n mediaType: \"json\",\n serializer,\n};\nconst listAtScopeNextOperationSpec: coreClient.OperationSpec = {\n path: \"{nextLink}\",\n httpMethod: \"GET\",\n responses: {\n 200: {\n bodyMapper: Mappers.DeploymentListResult,\n },\n default: {\n bodyMapper: Mappers.CloudError,\n },\n },\n urlParameters: [Parameters.$host, Parameters.nextLink, Parameters.scope],\n headerParameters: [Parameters.accept],\n serializer,\n};\nconst listAtTenantScopeNextOperationSpec: coreClient.OperationSpec = {\n path: \"{nextLink}\",\n httpMethod: \"GET\",\n responses: {\n 200: {\n bodyMapper: Mappers.DeploymentListResult,\n },\n default: {\n bodyMapper: Mappers.CloudError,\n },\n },\n urlParameters: [Parameters.$host, Parameters.nextLink],\n headerParameters: [Parameters.accept],\n serializer,\n};\nconst listAtManagementGroupScopeNextOperationSpec: coreClient.OperationSpec = {\n path: \"{nextLink}\",\n httpMethod: \"GET\",\n responses: {\n 200: {\n bodyMapper: Mappers.DeploymentListResult,\n },\n default: {\n bodyMapper: Mappers.CloudError,\n },\n },\n urlParameters: [Parameters.$host, Parameters.nextLink, Parameters.groupId],\n headerParameters: [Parameters.accept],\n serializer,\n};\nconst listAtSubscriptionScopeNextOperationSpec: coreClient.OperationSpec = {\n path: \"{nextLink}\",\n httpMethod: \"GET\",\n responses: {\n 200: {\n bodyMapper: Mappers.DeploymentListResult,\n },\n default: {\n bodyMapper: Mappers.CloudError,\n },\n },\n urlParameters: [\n Parameters.$host,\n Parameters.nextLink,\n Parameters.subscriptionId,\n ],\n headerParameters: [Parameters.accept],\n serializer,\n};\nconst listByResourceGroupNextOperationSpec: coreClient.OperationSpec = {\n path: \"{nextLink}\",\n httpMethod: \"GET\",\n responses: {\n 200: {\n bodyMapper: Mappers.DeploymentListResult,\n },\n default: {\n bodyMapper: Mappers.CloudError,\n },\n },\n urlParameters: [\n Parameters.$host,\n Parameters.nextLink,\n Parameters.subscriptionId,\n Parameters.resourceGroupName,\n ],\n headerParameters: [Parameters.accept],\n serializer,\n};\n", "/*\n * Copyright (c) Microsoft Corporation.\n * Licensed under the MIT License.\n *\n * Code generated by Microsoft (R) AutoRest Code Generator.\n * Changes may cause incorrect behavior and will be lost if the code is regenerated.\n */\n\nimport { PagedAsyncIterableIterator, PageSettings } from \"@azure/core-paging\";\nimport { setContinuationToken } from \"../pagingHelper.js\";\nimport { Providers } from \"../operationsInterfaces/index.js\";\nimport * as coreClient from \"@azure/core-client\";\nimport * as Mappers from \"../models/mappers.js\";\nimport * as Parameters from \"../models/parameters.js\";\nimport { ResourceManagementClient } from \"../resourceManagementClient.js\";\nimport {\n Provider,\n ProvidersListNextOptionalParams,\n ProvidersListOptionalParams,\n ProvidersListResponse,\n ProvidersListAtTenantScopeNextOptionalParams,\n ProvidersListAtTenantScopeOptionalParams,\n ProvidersListAtTenantScopeResponse,\n ProvidersUnregisterOptionalParams,\n ProvidersUnregisterResponse,\n ProvidersRegisterAtManagementGroupScopeOptionalParams,\n ProvidersProviderPermissionsOptionalParams,\n ProvidersProviderPermissionsResponse,\n ProvidersRegisterOptionalParams,\n ProvidersRegisterResponse,\n ProvidersGetOptionalParams,\n ProvidersGetResponse,\n ProvidersGetAtTenantScopeOptionalParams,\n ProvidersGetAtTenantScopeResponse,\n ProvidersListNextResponse,\n ProvidersListAtTenantScopeNextResponse,\n} from \"../models/index.js\";\n\n/// \n/** Class containing Providers operations. */\nexport class ProvidersImpl implements Providers {\n private readonly client: ResourceManagementClient;\n\n /**\n * Initialize a new instance of the class Providers class.\n * @param client Reference to the service client\n */\n constructor(client: ResourceManagementClient) {\n this.client = client;\n }\n\n /**\n * Gets all resource providers for a subscription.\n * @param options The options parameters.\n */\n public list(\n options?: ProvidersListOptionalParams,\n ): PagedAsyncIterableIterator {\n const iter = this.listPagingAll(options);\n return {\n next() {\n return iter.next();\n },\n [Symbol.asyncIterator]() {\n return this;\n },\n byPage: (settings?: PageSettings) => {\n if (settings?.maxPageSize) {\n throw new Error(\"maxPageSize is not supported by this operation.\");\n }\n return this.listPagingPage(options, settings);\n },\n };\n }\n\n private async *listPagingPage(\n options?: ProvidersListOptionalParams,\n settings?: PageSettings,\n ): AsyncIterableIterator {\n let result: ProvidersListResponse;\n let continuationToken = settings?.continuationToken;\n if (!continuationToken) {\n result = await this._list(options);\n let page = result.value || [];\n continuationToken = result.nextLink;\n setContinuationToken(page, continuationToken);\n yield page;\n }\n while (continuationToken) {\n result = await this._listNext(continuationToken, options);\n continuationToken = result.nextLink;\n let page = result.value || [];\n setContinuationToken(page, continuationToken);\n yield page;\n }\n }\n\n private async *listPagingAll(\n options?: ProvidersListOptionalParams,\n ): AsyncIterableIterator {\n for await (const page of this.listPagingPage(options)) {\n yield* page;\n }\n }\n\n /**\n * Gets all resource providers for the tenant.\n * @param options The options parameters.\n */\n public listAtTenantScope(\n options?: ProvidersListAtTenantScopeOptionalParams,\n ): PagedAsyncIterableIterator {\n const iter = this.listAtTenantScopePagingAll(options);\n return {\n next() {\n return iter.next();\n },\n [Symbol.asyncIterator]() {\n return this;\n },\n byPage: (settings?: PageSettings) => {\n if (settings?.maxPageSize) {\n throw new Error(\"maxPageSize is not supported by this operation.\");\n }\n return this.listAtTenantScopePagingPage(options, settings);\n },\n };\n }\n\n private async *listAtTenantScopePagingPage(\n options?: ProvidersListAtTenantScopeOptionalParams,\n settings?: PageSettings,\n ): AsyncIterableIterator {\n let result: ProvidersListAtTenantScopeResponse;\n let continuationToken = settings?.continuationToken;\n if (!continuationToken) {\n result = await this._listAtTenantScope(options);\n let page = result.value || [];\n continuationToken = result.nextLink;\n setContinuationToken(page, continuationToken);\n yield page;\n }\n while (continuationToken) {\n result = await this._listAtTenantScopeNext(continuationToken, options);\n continuationToken = result.nextLink;\n let page = result.value || [];\n setContinuationToken(page, continuationToken);\n yield page;\n }\n }\n\n private async *listAtTenantScopePagingAll(\n options?: ProvidersListAtTenantScopeOptionalParams,\n ): AsyncIterableIterator {\n for await (const page of this.listAtTenantScopePagingPage(options)) {\n yield* page;\n }\n }\n\n /**\n * Unregisters a subscription from a resource provider.\n * @param resourceProviderNamespace The namespace of the resource provider to unregister.\n * @param options The options parameters.\n */\n unregister(\n resourceProviderNamespace: string,\n options?: ProvidersUnregisterOptionalParams,\n ): Promise {\n return this.client.sendOperationRequest(\n { resourceProviderNamespace, options },\n unregisterOperationSpec,\n );\n }\n\n /**\n * Registers a management group with a resource provider. Use this operation to register a resource\n * provider with resource types that can be deployed at the management group scope. It does not\n * recursively register subscriptions within the management group. Instead, you must register\n * subscriptions individually.\n * @param resourceProviderNamespace The namespace of the resource provider to register.\n * @param groupId The management group ID.\n * @param options The options parameters.\n */\n registerAtManagementGroupScope(\n resourceProviderNamespace: string,\n groupId: string,\n options?: ProvidersRegisterAtManagementGroupScopeOptionalParams,\n ): Promise {\n return this.client.sendOperationRequest(\n { resourceProviderNamespace, groupId, options },\n registerAtManagementGroupScopeOperationSpec,\n );\n }\n\n /**\n * Get the provider permissions.\n * @param resourceProviderNamespace The namespace of the resource provider.\n * @param options The options parameters.\n */\n providerPermissions(\n resourceProviderNamespace: string,\n options?: ProvidersProviderPermissionsOptionalParams,\n ): Promise {\n return this.client.sendOperationRequest(\n { resourceProviderNamespace, options },\n providerPermissionsOperationSpec,\n );\n }\n\n /**\n * Registers a subscription with a resource provider.\n * @param resourceProviderNamespace The namespace of the resource provider to register.\n * @param options The options parameters.\n */\n register(\n resourceProviderNamespace: string,\n options?: ProvidersRegisterOptionalParams,\n ): Promise {\n return this.client.sendOperationRequest(\n { resourceProviderNamespace, options },\n registerOperationSpec,\n );\n }\n\n /**\n * Gets all resource providers for a subscription.\n * @param options The options parameters.\n */\n private _list(\n options?: ProvidersListOptionalParams,\n ): Promise {\n return this.client.sendOperationRequest({ options }, listOperationSpec);\n }\n\n /**\n * Gets all resource providers for the tenant.\n * @param options The options parameters.\n */\n private _listAtTenantScope(\n options?: ProvidersListAtTenantScopeOptionalParams,\n ): Promise {\n return this.client.sendOperationRequest(\n { options },\n listAtTenantScopeOperationSpec,\n );\n }\n\n /**\n * Gets the specified resource provider.\n * @param resourceProviderNamespace The namespace of the resource provider.\n * @param options The options parameters.\n */\n get(\n resourceProviderNamespace: string,\n options?: ProvidersGetOptionalParams,\n ): Promise {\n return this.client.sendOperationRequest(\n { resourceProviderNamespace, options },\n getOperationSpec,\n );\n }\n\n /**\n * Gets the specified resource provider at the tenant level.\n * @param resourceProviderNamespace The namespace of the resource provider.\n * @param options The options parameters.\n */\n getAtTenantScope(\n resourceProviderNamespace: string,\n options?: ProvidersGetAtTenantScopeOptionalParams,\n ): Promise {\n return this.client.sendOperationRequest(\n { resourceProviderNamespace, options },\n getAtTenantScopeOperationSpec,\n );\n }\n\n /**\n * ListNext\n * @param nextLink The nextLink from the previous successful call to the List method.\n * @param options The options parameters.\n */\n private _listNext(\n nextLink: string,\n options?: ProvidersListNextOptionalParams,\n ): Promise {\n return this.client.sendOperationRequest(\n { nextLink, options },\n listNextOperationSpec,\n );\n }\n\n /**\n * ListAtTenantScopeNext\n * @param nextLink The nextLink from the previous successful call to the ListAtTenantScope method.\n * @param options The options parameters.\n */\n private _listAtTenantScopeNext(\n nextLink: string,\n options?: ProvidersListAtTenantScopeNextOptionalParams,\n ): Promise {\n return this.client.sendOperationRequest(\n { nextLink, options },\n listAtTenantScopeNextOperationSpec,\n );\n }\n}\n// Operation Specifications\nconst serializer = coreClient.createSerializer(Mappers, /* isXml */ false);\n\nconst unregisterOperationSpec: coreClient.OperationSpec = {\n path: \"/subscriptions/{subscriptionId}/providers/{resourceProviderNamespace}/unregister\",\n httpMethod: \"POST\",\n responses: {\n 200: {\n bodyMapper: Mappers.Provider,\n },\n default: {\n bodyMapper: Mappers.CloudError,\n },\n },\n queryParameters: [Parameters.apiVersion],\n urlParameters: [\n Parameters.$host,\n Parameters.subscriptionId,\n Parameters.resourceProviderNamespace,\n ],\n headerParameters: [Parameters.accept],\n serializer,\n};\nconst registerAtManagementGroupScopeOperationSpec: coreClient.OperationSpec = {\n path: \"/providers/Microsoft.Management/managementGroups/{groupId}/providers/{resourceProviderNamespace}/register\",\n httpMethod: \"POST\",\n responses: {\n 200: {},\n default: {\n bodyMapper: Mappers.CloudError,\n },\n },\n queryParameters: [Parameters.apiVersion],\n urlParameters: [\n Parameters.$host,\n Parameters.groupId,\n Parameters.resourceProviderNamespace,\n ],\n headerParameters: [Parameters.accept],\n serializer,\n};\nconst providerPermissionsOperationSpec: coreClient.OperationSpec = {\n path: \"/subscriptions/{subscriptionId}/providers/{resourceProviderNamespace}/providerPermissions\",\n httpMethod: \"GET\",\n responses: {\n 200: {\n bodyMapper: Mappers.ProviderPermissionListResult,\n },\n default: {\n bodyMapper: Mappers.CloudError,\n },\n },\n queryParameters: [Parameters.apiVersion],\n urlParameters: [\n Parameters.$host,\n Parameters.subscriptionId,\n Parameters.resourceProviderNamespace,\n ],\n headerParameters: [Parameters.accept],\n serializer,\n};\nconst registerOperationSpec: coreClient.OperationSpec = {\n path: \"/subscriptions/{subscriptionId}/providers/{resourceProviderNamespace}/register\",\n httpMethod: \"POST\",\n responses: {\n 200: {\n bodyMapper: Mappers.Provider,\n },\n default: {\n bodyMapper: Mappers.CloudError,\n },\n },\n requestBody: Parameters.properties,\n queryParameters: [Parameters.apiVersion],\n urlParameters: [\n Parameters.$host,\n Parameters.subscriptionId,\n Parameters.resourceProviderNamespace,\n ],\n headerParameters: [Parameters.accept, Parameters.contentType],\n mediaType: \"json\",\n serializer,\n};\nconst listOperationSpec: coreClient.OperationSpec = {\n path: \"/subscriptions/{subscriptionId}/providers\",\n httpMethod: \"GET\",\n responses: {\n 200: {\n bodyMapper: Mappers.ProviderListResult,\n },\n default: {\n bodyMapper: Mappers.CloudError,\n },\n },\n queryParameters: [Parameters.apiVersion, Parameters.expand],\n urlParameters: [Parameters.$host, Parameters.subscriptionId],\n headerParameters: [Parameters.accept],\n serializer,\n};\nconst listAtTenantScopeOperationSpec: coreClient.OperationSpec = {\n path: \"/providers\",\n httpMethod: \"GET\",\n responses: {\n 200: {\n bodyMapper: Mappers.ProviderListResult,\n },\n default: {\n bodyMapper: Mappers.CloudError,\n },\n },\n queryParameters: [Parameters.apiVersion, Parameters.expand],\n urlParameters: [Parameters.$host],\n headerParameters: [Parameters.accept],\n serializer,\n};\nconst getOperationSpec: coreClient.OperationSpec = {\n path: \"/subscriptions/{subscriptionId}/providers/{resourceProviderNamespace}\",\n httpMethod: \"GET\",\n responses: {\n 200: {\n bodyMapper: Mappers.Provider,\n },\n default: {\n bodyMapper: Mappers.CloudError,\n },\n },\n queryParameters: [Parameters.apiVersion, Parameters.expand],\n urlParameters: [\n Parameters.$host,\n Parameters.subscriptionId,\n Parameters.resourceProviderNamespace,\n ],\n headerParameters: [Parameters.accept],\n serializer,\n};\nconst getAtTenantScopeOperationSpec: coreClient.OperationSpec = {\n path: \"/providers/{resourceProviderNamespace}\",\n httpMethod: \"GET\",\n responses: {\n 200: {\n bodyMapper: Mappers.Provider,\n },\n default: {\n bodyMapper: Mappers.CloudError,\n },\n },\n queryParameters: [Parameters.apiVersion, Parameters.expand],\n urlParameters: [Parameters.$host, Parameters.resourceProviderNamespace],\n headerParameters: [Parameters.accept],\n serializer,\n};\nconst listNextOperationSpec: coreClient.OperationSpec = {\n path: \"{nextLink}\",\n httpMethod: \"GET\",\n responses: {\n 200: {\n bodyMapper: Mappers.ProviderListResult,\n },\n default: {\n bodyMapper: Mappers.CloudError,\n },\n },\n urlParameters: [\n Parameters.$host,\n Parameters.nextLink,\n Parameters.subscriptionId,\n ],\n headerParameters: [Parameters.accept],\n serializer,\n};\nconst listAtTenantScopeNextOperationSpec: coreClient.OperationSpec = {\n path: \"{nextLink}\",\n httpMethod: \"GET\",\n responses: {\n 200: {\n bodyMapper: Mappers.ProviderListResult,\n },\n default: {\n bodyMapper: Mappers.CloudError,\n },\n },\n urlParameters: [Parameters.$host, Parameters.nextLink],\n headerParameters: [Parameters.accept],\n serializer,\n};\n", "/*\n * Copyright (c) Microsoft Corporation.\n * Licensed under the MIT License.\n *\n * Code generated by Microsoft (R) AutoRest Code Generator.\n * Changes may cause incorrect behavior and will be lost if the code is regenerated.\n */\n\nimport { ProviderResourceTypes } from \"../operationsInterfaces/index.js\";\nimport * as coreClient from \"@azure/core-client\";\nimport * as Mappers from \"../models/mappers.js\";\nimport * as Parameters from \"../models/parameters.js\";\nimport { ResourceManagementClient } from \"../resourceManagementClient.js\";\nimport {\n ProviderResourceTypesListOptionalParams,\n ProviderResourceTypesListResponse,\n} from \"../models/index.js\";\n\n/** Class containing ProviderResourceTypes operations. */\nexport class ProviderResourceTypesImpl implements ProviderResourceTypes {\n private readonly client: ResourceManagementClient;\n\n /**\n * Initialize a new instance of the class ProviderResourceTypes class.\n * @param client Reference to the service client\n */\n constructor(client: ResourceManagementClient) {\n this.client = client;\n }\n\n /**\n * List the resource types for a specified resource provider.\n * @param resourceProviderNamespace The namespace of the resource provider.\n * @param options The options parameters.\n */\n list(\n resourceProviderNamespace: string,\n options?: ProviderResourceTypesListOptionalParams,\n ): Promise {\n return this.client.sendOperationRequest(\n { resourceProviderNamespace, options },\n listOperationSpec,\n );\n }\n}\n// Operation Specifications\nconst serializer = coreClient.createSerializer(Mappers, /* isXml */ false);\n\nconst listOperationSpec: coreClient.OperationSpec = {\n path: \"/subscriptions/{subscriptionId}/providers/{resourceProviderNamespace}/resourceTypes\",\n httpMethod: \"GET\",\n responses: {\n 200: {\n bodyMapper: Mappers.ProviderResourceTypeListResult,\n },\n default: {\n bodyMapper: Mappers.CloudError,\n },\n },\n queryParameters: [Parameters.apiVersion, Parameters.expand],\n urlParameters: [\n Parameters.$host,\n Parameters.subscriptionId,\n Parameters.resourceProviderNamespace,\n ],\n headerParameters: [Parameters.accept],\n serializer,\n};\n", "/*\n * Copyright (c) Microsoft Corporation.\n * Licensed under the MIT License.\n *\n * Code generated by Microsoft (R) AutoRest Code Generator.\n * Changes may cause incorrect behavior and will be lost if the code is regenerated.\n */\n\nimport { PagedAsyncIterableIterator, PageSettings } from \"@azure/core-paging\";\nimport { setContinuationToken } from \"../pagingHelper.js\";\nimport { Resources } from \"../operationsInterfaces/index.js\";\nimport * as coreClient from \"@azure/core-client\";\nimport * as Mappers from \"../models/mappers.js\";\nimport * as Parameters from \"../models/parameters.js\";\nimport { ResourceManagementClient } from \"../resourceManagementClient.js\";\nimport {\n SimplePollerLike,\n OperationState,\n createHttpPoller,\n} from \"@azure/core-lro\";\nimport { createLroSpec } from \"../lroImpl.js\";\nimport {\n GenericResourceExpanded,\n ResourcesListByResourceGroupNextOptionalParams,\n ResourcesListByResourceGroupOptionalParams,\n ResourcesListByResourceGroupResponse,\n ResourcesListNextOptionalParams,\n ResourcesListOptionalParams,\n ResourcesListResponse,\n ResourcesMoveInfo,\n ResourcesMoveResourcesOptionalParams,\n ResourcesValidateMoveResourcesOptionalParams,\n ResourcesCheckExistenceOptionalParams,\n ResourcesCheckExistenceResponse,\n ResourcesDeleteOptionalParams,\n GenericResource,\n ResourcesCreateOrUpdateOptionalParams,\n ResourcesCreateOrUpdateResponse,\n ResourcesUpdateOptionalParams,\n ResourcesUpdateResponse,\n ResourcesGetOptionalParams,\n ResourcesGetResponse,\n ResourcesCheckExistenceByIdOptionalParams,\n ResourcesCheckExistenceByIdResponse,\n ResourcesDeleteByIdOptionalParams,\n ResourcesCreateOrUpdateByIdOptionalParams,\n ResourcesCreateOrUpdateByIdResponse,\n ResourcesUpdateByIdOptionalParams,\n ResourcesUpdateByIdResponse,\n ResourcesGetByIdOptionalParams,\n ResourcesGetByIdResponse,\n ResourcesListByResourceGroupNextResponse,\n ResourcesListNextResponse,\n} from \"../models/index.js\";\n\n/// \n/** Class containing Resources operations. */\nexport class ResourcesImpl implements Resources {\n private readonly client: ResourceManagementClient;\n\n /**\n * Initialize a new instance of the class Resources class.\n * @param client Reference to the service client\n */\n constructor(client: ResourceManagementClient) {\n this.client = client;\n }\n\n /**\n * Get all the resources for a resource group.\n * @param resourceGroupName The resource group with the resources to get.\n * @param options The options parameters.\n */\n public listByResourceGroup(\n resourceGroupName: string,\n options?: ResourcesListByResourceGroupOptionalParams,\n ): PagedAsyncIterableIterator {\n const iter = this.listByResourceGroupPagingAll(resourceGroupName, options);\n return {\n next() {\n return iter.next();\n },\n [Symbol.asyncIterator]() {\n return this;\n },\n byPage: (settings?: PageSettings) => {\n if (settings?.maxPageSize) {\n throw new Error(\"maxPageSize is not supported by this operation.\");\n }\n return this.listByResourceGroupPagingPage(\n resourceGroupName,\n options,\n settings,\n );\n },\n };\n }\n\n private async *listByResourceGroupPagingPage(\n resourceGroupName: string,\n options?: ResourcesListByResourceGroupOptionalParams,\n settings?: PageSettings,\n ): AsyncIterableIterator {\n let result: ResourcesListByResourceGroupResponse;\n let continuationToken = settings?.continuationToken;\n if (!continuationToken) {\n result = await this._listByResourceGroup(resourceGroupName, options);\n let page = result.value || [];\n continuationToken = result.nextLink;\n setContinuationToken(page, continuationToken);\n yield page;\n }\n while (continuationToken) {\n result = await this._listByResourceGroupNext(\n resourceGroupName,\n continuationToken,\n options,\n );\n continuationToken = result.nextLink;\n let page = result.value || [];\n setContinuationToken(page, continuationToken);\n yield page;\n }\n }\n\n private async *listByResourceGroupPagingAll(\n resourceGroupName: string,\n options?: ResourcesListByResourceGroupOptionalParams,\n ): AsyncIterableIterator {\n for await (const page of this.listByResourceGroupPagingPage(\n resourceGroupName,\n options,\n )) {\n yield* page;\n }\n }\n\n /**\n * Get all the resources in a subscription.\n * @param options The options parameters.\n */\n public list(\n options?: ResourcesListOptionalParams,\n ): PagedAsyncIterableIterator {\n const iter = this.listPagingAll(options);\n return {\n next() {\n return iter.next();\n },\n [Symbol.asyncIterator]() {\n return this;\n },\n byPage: (settings?: PageSettings) => {\n if (settings?.maxPageSize) {\n throw new Error(\"maxPageSize is not supported by this operation.\");\n }\n return this.listPagingPage(options, settings);\n },\n };\n }\n\n private async *listPagingPage(\n options?: ResourcesListOptionalParams,\n settings?: PageSettings,\n ): AsyncIterableIterator {\n let result: ResourcesListResponse;\n let continuationToken = settings?.continuationToken;\n if (!continuationToken) {\n result = await this._list(options);\n let page = result.value || [];\n continuationToken = result.nextLink;\n setContinuationToken(page, continuationToken);\n yield page;\n }\n while (continuationToken) {\n result = await this._listNext(continuationToken, options);\n continuationToken = result.nextLink;\n let page = result.value || [];\n setContinuationToken(page, continuationToken);\n yield page;\n }\n }\n\n private async *listPagingAll(\n options?: ResourcesListOptionalParams,\n ): AsyncIterableIterator {\n for await (const page of this.listPagingPage(options)) {\n yield* page;\n }\n }\n\n /**\n * Get all the resources for a resource group.\n * @param resourceGroupName The resource group with the resources to get.\n * @param options The options parameters.\n */\n private _listByResourceGroup(\n resourceGroupName: string,\n options?: ResourcesListByResourceGroupOptionalParams,\n ): Promise {\n return this.client.sendOperationRequest(\n { resourceGroupName, options },\n listByResourceGroupOperationSpec,\n );\n }\n\n /**\n * The resources to be moved must be in the same source resource group in the source subscription being\n * used. The target resource group may be in a different subscription. When moving resources, both the\n * source group and the target group are locked for the duration of the operation. Write and delete\n * operations are blocked on the groups until the move completes.\n * @param sourceResourceGroupName The name of the resource group from the source subscription\n * containing the resources to be moved.\n * @param parameters Parameters for moving resources.\n * @param options The options parameters.\n */\n async beginMoveResources(\n sourceResourceGroupName: string,\n parameters: ResourcesMoveInfo,\n options?: ResourcesMoveResourcesOptionalParams,\n ): Promise, void>> {\n const directSendOperation = async (\n args: coreClient.OperationArguments,\n spec: coreClient.OperationSpec,\n ): Promise => {\n return this.client.sendOperationRequest(args, spec);\n };\n const sendOperationFn = async (\n args: coreClient.OperationArguments,\n spec: coreClient.OperationSpec,\n ) => {\n let currentRawResponse: coreClient.FullOperationResponse | undefined =\n undefined;\n const providedCallback = args.options?.onResponse;\n const callback: coreClient.RawResponseCallback = (\n rawResponse: coreClient.FullOperationResponse,\n flatResponse: unknown,\n ) => {\n currentRawResponse = rawResponse;\n providedCallback?.(rawResponse, flatResponse);\n };\n const updatedArgs = {\n ...args,\n options: {\n ...args.options,\n onResponse: callback,\n },\n };\n const flatResponse = await directSendOperation(updatedArgs, spec);\n return {\n flatResponse,\n rawResponse: {\n statusCode: currentRawResponse!.status,\n body: currentRawResponse!.parsedBody,\n headers: currentRawResponse!.headers.toJSON(),\n },\n };\n };\n\n const lro = createLroSpec({\n sendOperationFn,\n args: { sourceResourceGroupName, parameters, options },\n spec: moveResourcesOperationSpec,\n });\n const poller = await createHttpPoller>(lro, {\n restoreFrom: options?.resumeFrom,\n intervalInMs: options?.updateIntervalInMs,\n });\n await poller.poll();\n return poller;\n }\n\n /**\n * The resources to be moved must be in the same source resource group in the source subscription being\n * used. The target resource group may be in a different subscription. When moving resources, both the\n * source group and the target group are locked for the duration of the operation. Write and delete\n * operations are blocked on the groups until the move completes.\n * @param sourceResourceGroupName The name of the resource group from the source subscription\n * containing the resources to be moved.\n * @param parameters Parameters for moving resources.\n * @param options The options parameters.\n */\n async beginMoveResourcesAndWait(\n sourceResourceGroupName: string,\n parameters: ResourcesMoveInfo,\n options?: ResourcesMoveResourcesOptionalParams,\n ): Promise {\n const poller = await this.beginMoveResources(\n sourceResourceGroupName,\n parameters,\n options,\n );\n return poller.pollUntilDone();\n }\n\n /**\n * This operation checks whether the specified resources can be moved to the target. The resources to\n * be moved must be in the same source resource group in the source subscription being used. The target\n * resource group may be in a different subscription. If validation succeeds, it returns HTTP response\n * code 204 (no content). If validation fails, it returns HTTP response code 409 (Conflict) with an\n * error message. Retrieve the URL in the Location header value to check the result of the long-running\n * operation.\n * @param sourceResourceGroupName The name of the resource group from the source subscription\n * containing the resources to be validated for move.\n * @param parameters Parameters for moving resources.\n * @param options The options parameters.\n */\n async beginValidateMoveResources(\n sourceResourceGroupName: string,\n parameters: ResourcesMoveInfo,\n options?: ResourcesValidateMoveResourcesOptionalParams,\n ): Promise, void>> {\n const directSendOperation = async (\n args: coreClient.OperationArguments,\n spec: coreClient.OperationSpec,\n ): Promise => {\n return this.client.sendOperationRequest(args, spec);\n };\n const sendOperationFn = async (\n args: coreClient.OperationArguments,\n spec: coreClient.OperationSpec,\n ) => {\n let currentRawResponse: coreClient.FullOperationResponse | undefined =\n undefined;\n const providedCallback = args.options?.onResponse;\n const callback: coreClient.RawResponseCallback = (\n rawResponse: coreClient.FullOperationResponse,\n flatResponse: unknown,\n ) => {\n currentRawResponse = rawResponse;\n providedCallback?.(rawResponse, flatResponse);\n };\n const updatedArgs = {\n ...args,\n options: {\n ...args.options,\n onResponse: callback,\n },\n };\n const flatResponse = await directSendOperation(updatedArgs, spec);\n return {\n flatResponse,\n rawResponse: {\n statusCode: currentRawResponse!.status,\n body: currentRawResponse!.parsedBody,\n headers: currentRawResponse!.headers.toJSON(),\n },\n };\n };\n\n const lro = createLroSpec({\n sendOperationFn,\n args: { sourceResourceGroupName, parameters, options },\n spec: validateMoveResourcesOperationSpec,\n });\n const poller = await createHttpPoller>(lro, {\n restoreFrom: options?.resumeFrom,\n intervalInMs: options?.updateIntervalInMs,\n });\n await poller.poll();\n return poller;\n }\n\n /**\n * This operation checks whether the specified resources can be moved to the target. The resources to\n * be moved must be in the same source resource group in the source subscription being used. The target\n * resource group may be in a different subscription. If validation succeeds, it returns HTTP response\n * code 204 (no content). If validation fails, it returns HTTP response code 409 (Conflict) with an\n * error message. Retrieve the URL in the Location header value to check the result of the long-running\n * operation.\n * @param sourceResourceGroupName The name of the resource group from the source subscription\n * containing the resources to be validated for move.\n * @param parameters Parameters for moving resources.\n * @param options The options parameters.\n */\n async beginValidateMoveResourcesAndWait(\n sourceResourceGroupName: string,\n parameters: ResourcesMoveInfo,\n options?: ResourcesValidateMoveResourcesOptionalParams,\n ): Promise {\n const poller = await this.beginValidateMoveResources(\n sourceResourceGroupName,\n parameters,\n options,\n );\n return poller.pollUntilDone();\n }\n\n /**\n * Get all the resources in a subscription.\n * @param options The options parameters.\n */\n private _list(\n options?: ResourcesListOptionalParams,\n ): Promise {\n return this.client.sendOperationRequest({ options }, listOperationSpec);\n }\n\n /**\n * Checks whether a resource exists.\n * @param resourceGroupName The name of the resource group containing the resource to check. The name\n * is case insensitive.\n * @param resourceProviderNamespace The resource provider of the resource to check.\n * @param parentResourcePath The parent resource identity.\n * @param resourceType The resource type.\n * @param resourceName The name of the resource to check whether it exists.\n * @param apiVersion The API version to use for the operation.\n * @param options The options parameters.\n */\n checkExistence(\n resourceGroupName: string,\n resourceProviderNamespace: string,\n parentResourcePath: string,\n resourceType: string,\n resourceName: string,\n apiVersion: string,\n options?: ResourcesCheckExistenceOptionalParams,\n ): Promise {\n return this.client.sendOperationRequest(\n {\n resourceGroupName,\n resourceProviderNamespace,\n parentResourcePath,\n resourceType,\n resourceName,\n apiVersion,\n options,\n },\n checkExistenceOperationSpec,\n );\n }\n\n /**\n * Deletes a resource.\n * @param resourceGroupName The name of the resource group that contains the resource to delete. The\n * name is case insensitive.\n * @param resourceProviderNamespace The namespace of the resource provider.\n * @param parentResourcePath The parent resource identity.\n * @param resourceType The resource type.\n * @param resourceName The name of the resource to delete.\n * @param apiVersion The API version to use for the operation.\n * @param options The options parameters.\n */\n async beginDelete(\n resourceGroupName: string,\n resourceProviderNamespace: string,\n parentResourcePath: string,\n resourceType: string,\n resourceName: string,\n apiVersion: string,\n options?: ResourcesDeleteOptionalParams,\n ): Promise, void>> {\n const directSendOperation = async (\n args: coreClient.OperationArguments,\n spec: coreClient.OperationSpec,\n ): Promise => {\n return this.client.sendOperationRequest(args, spec);\n };\n const sendOperationFn = async (\n args: coreClient.OperationArguments,\n spec: coreClient.OperationSpec,\n ) => {\n let currentRawResponse: coreClient.FullOperationResponse | undefined =\n undefined;\n const providedCallback = args.options?.onResponse;\n const callback: coreClient.RawResponseCallback = (\n rawResponse: coreClient.FullOperationResponse,\n flatResponse: unknown,\n ) => {\n currentRawResponse = rawResponse;\n providedCallback?.(rawResponse, flatResponse);\n };\n const updatedArgs = {\n ...args,\n options: {\n ...args.options,\n onResponse: callback,\n },\n };\n const flatResponse = await directSendOperation(updatedArgs, spec);\n return {\n flatResponse,\n rawResponse: {\n statusCode: currentRawResponse!.status,\n body: currentRawResponse!.parsedBody,\n headers: currentRawResponse!.headers.toJSON(),\n },\n };\n };\n\n const lro = createLroSpec({\n sendOperationFn,\n args: {\n resourceGroupName,\n resourceProviderNamespace,\n parentResourcePath,\n resourceType,\n resourceName,\n apiVersion,\n options,\n },\n spec: deleteOperationSpec,\n });\n const poller = await createHttpPoller>(lro, {\n restoreFrom: options?.resumeFrom,\n intervalInMs: options?.updateIntervalInMs,\n });\n await poller.poll();\n return poller;\n }\n\n /**\n * Deletes a resource.\n * @param resourceGroupName The name of the resource group that contains the resource to delete. The\n * name is case insensitive.\n * @param resourceProviderNamespace The namespace of the resource provider.\n * @param parentResourcePath The parent resource identity.\n * @param resourceType The resource type.\n * @param resourceName The name of the resource to delete.\n * @param apiVersion The API version to use for the operation.\n * @param options The options parameters.\n */\n async beginDeleteAndWait(\n resourceGroupName: string,\n resourceProviderNamespace: string,\n parentResourcePath: string,\n resourceType: string,\n resourceName: string,\n apiVersion: string,\n options?: ResourcesDeleteOptionalParams,\n ): Promise {\n const poller = await this.beginDelete(\n resourceGroupName,\n resourceProviderNamespace,\n parentResourcePath,\n resourceType,\n resourceName,\n apiVersion,\n options,\n );\n return poller.pollUntilDone();\n }\n\n /**\n * Creates a resource.\n * @param resourceGroupName The name of the resource group for the resource. The name is case\n * insensitive.\n * @param resourceProviderNamespace The namespace of the resource provider.\n * @param parentResourcePath The parent resource identity.\n * @param resourceType The resource type of the resource to create.\n * @param resourceName The name of the resource to create.\n * @param apiVersion The API version to use for the operation.\n * @param parameters Parameters for creating or updating the resource.\n * @param options The options parameters.\n */\n async beginCreateOrUpdate(\n resourceGroupName: string,\n resourceProviderNamespace: string,\n parentResourcePath: string,\n resourceType: string,\n resourceName: string,\n apiVersion: string,\n parameters: GenericResource,\n options?: ResourcesCreateOrUpdateOptionalParams,\n ): Promise<\n SimplePollerLike<\n OperationState,\n ResourcesCreateOrUpdateResponse\n >\n > {\n const directSendOperation = async (\n args: coreClient.OperationArguments,\n spec: coreClient.OperationSpec,\n ): Promise => {\n return this.client.sendOperationRequest(args, spec);\n };\n const sendOperationFn = async (\n args: coreClient.OperationArguments,\n spec: coreClient.OperationSpec,\n ) => {\n let currentRawResponse: coreClient.FullOperationResponse | undefined =\n undefined;\n const providedCallback = args.options?.onResponse;\n const callback: coreClient.RawResponseCallback = (\n rawResponse: coreClient.FullOperationResponse,\n flatResponse: unknown,\n ) => {\n currentRawResponse = rawResponse;\n providedCallback?.(rawResponse, flatResponse);\n };\n const updatedArgs = {\n ...args,\n options: {\n ...args.options,\n onResponse: callback,\n },\n };\n const flatResponse = await directSendOperation(updatedArgs, spec);\n return {\n flatResponse,\n rawResponse: {\n statusCode: currentRawResponse!.status,\n body: currentRawResponse!.parsedBody,\n headers: currentRawResponse!.headers.toJSON(),\n },\n };\n };\n\n const lro = createLroSpec({\n sendOperationFn,\n args: {\n resourceGroupName,\n resourceProviderNamespace,\n parentResourcePath,\n resourceType,\n resourceName,\n apiVersion,\n parameters,\n options,\n },\n spec: createOrUpdateOperationSpec,\n });\n const poller = await createHttpPoller<\n ResourcesCreateOrUpdateResponse,\n OperationState\n >(lro, {\n restoreFrom: options?.resumeFrom,\n intervalInMs: options?.updateIntervalInMs,\n });\n await poller.poll();\n return poller;\n }\n\n /**\n * Creates a resource.\n * @param resourceGroupName The name of the resource group for the resource. The name is case\n * insensitive.\n * @param resourceProviderNamespace The namespace of the resource provider.\n * @param parentResourcePath The parent resource identity.\n * @param resourceType The resource type of the resource to create.\n * @param resourceName The name of the resource to create.\n * @param apiVersion The API version to use for the operation.\n * @param parameters Parameters for creating or updating the resource.\n * @param options The options parameters.\n */\n async beginCreateOrUpdateAndWait(\n resourceGroupName: string,\n resourceProviderNamespace: string,\n parentResourcePath: string,\n resourceType: string,\n resourceName: string,\n apiVersion: string,\n parameters: GenericResource,\n options?: ResourcesCreateOrUpdateOptionalParams,\n ): Promise {\n const poller = await this.beginCreateOrUpdate(\n resourceGroupName,\n resourceProviderNamespace,\n parentResourcePath,\n resourceType,\n resourceName,\n apiVersion,\n parameters,\n options,\n );\n return poller.pollUntilDone();\n }\n\n /**\n * Updates a resource.\n * @param resourceGroupName The name of the resource group for the resource. The name is case\n * insensitive.\n * @param resourceProviderNamespace The namespace of the resource provider.\n * @param parentResourcePath The parent resource identity.\n * @param resourceType The resource type of the resource to update.\n * @param resourceName The name of the resource to update.\n * @param apiVersion The API version to use for the operation.\n * @param parameters Parameters for updating the resource.\n * @param options The options parameters.\n */\n async beginUpdate(\n resourceGroupName: string,\n resourceProviderNamespace: string,\n parentResourcePath: string,\n resourceType: string,\n resourceName: string,\n apiVersion: string,\n parameters: GenericResource,\n options?: ResourcesUpdateOptionalParams,\n ): Promise<\n SimplePollerLike<\n OperationState,\n ResourcesUpdateResponse\n >\n > {\n const directSendOperation = async (\n args: coreClient.OperationArguments,\n spec: coreClient.OperationSpec,\n ): Promise => {\n return this.client.sendOperationRequest(args, spec);\n };\n const sendOperationFn = async (\n args: coreClient.OperationArguments,\n spec: coreClient.OperationSpec,\n ) => {\n let currentRawResponse: coreClient.FullOperationResponse | undefined =\n undefined;\n const providedCallback = args.options?.onResponse;\n const callback: coreClient.RawResponseCallback = (\n rawResponse: coreClient.FullOperationResponse,\n flatResponse: unknown,\n ) => {\n currentRawResponse = rawResponse;\n providedCallback?.(rawResponse, flatResponse);\n };\n const updatedArgs = {\n ...args,\n options: {\n ...args.options,\n onResponse: callback,\n },\n };\n const flatResponse = await directSendOperation(updatedArgs, spec);\n return {\n flatResponse,\n rawResponse: {\n statusCode: currentRawResponse!.status,\n body: currentRawResponse!.parsedBody,\n headers: currentRawResponse!.headers.toJSON(),\n },\n };\n };\n\n const lro = createLroSpec({\n sendOperationFn,\n args: {\n resourceGroupName,\n resourceProviderNamespace,\n parentResourcePath,\n resourceType,\n resourceName,\n apiVersion,\n parameters,\n options,\n },\n spec: updateOperationSpec,\n });\n const poller = await createHttpPoller<\n ResourcesUpdateResponse,\n OperationState\n >(lro, {\n restoreFrom: options?.resumeFrom,\n intervalInMs: options?.updateIntervalInMs,\n });\n await poller.poll();\n return poller;\n }\n\n /**\n * Updates a resource.\n * @param resourceGroupName The name of the resource group for the resource. The name is case\n * insensitive.\n * @param resourceProviderNamespace The namespace of the resource provider.\n * @param parentResourcePath The parent resource identity.\n * @param resourceType The resource type of the resource to update.\n * @param resourceName The name of the resource to update.\n * @param apiVersion The API version to use for the operation.\n * @param parameters Parameters for updating the resource.\n * @param options The options parameters.\n */\n async beginUpdateAndWait(\n resourceGroupName: string,\n resourceProviderNamespace: string,\n parentResourcePath: string,\n resourceType: string,\n resourceName: string,\n apiVersion: string,\n parameters: GenericResource,\n options?: ResourcesUpdateOptionalParams,\n ): Promise {\n const poller = await this.beginUpdate(\n resourceGroupName,\n resourceProviderNamespace,\n parentResourcePath,\n resourceType,\n resourceName,\n apiVersion,\n parameters,\n options,\n );\n return poller.pollUntilDone();\n }\n\n /**\n * Gets a resource.\n * @param resourceGroupName The name of the resource group containing the resource to get. The name is\n * case insensitive.\n * @param resourceProviderNamespace The namespace of the resource provider.\n * @param parentResourcePath The parent resource identity.\n * @param resourceType The resource type of the resource.\n * @param resourceName The name of the resource to get.\n * @param apiVersion The API version to use for the operation.\n * @param options The options parameters.\n */\n get(\n resourceGroupName: string,\n resourceProviderNamespace: string,\n parentResourcePath: string,\n resourceType: string,\n resourceName: string,\n apiVersion: string,\n options?: ResourcesGetOptionalParams,\n ): Promise {\n return this.client.sendOperationRequest(\n {\n resourceGroupName,\n resourceProviderNamespace,\n parentResourcePath,\n resourceType,\n resourceName,\n apiVersion,\n options,\n },\n getOperationSpec,\n );\n }\n\n /**\n * Checks by ID whether a resource exists. This API currently works only for a limited set of Resource\n * providers. In the event that a Resource provider does not implement this API, ARM will respond with\n * a 405. The alternative then is to use the GET API to check for the existence of the resource.\n * @param resourceId The fully qualified ID of the resource, including the resource name and resource\n * type. Use the format,\n * /subscriptions/{guid}/resourceGroups/{resource-group-name}/{resource-provider-namespace}/{resource-type}/{resource-name}\n * @param apiVersion The API version to use for the operation.\n * @param options The options parameters.\n */\n checkExistenceById(\n resourceId: string,\n apiVersion: string,\n options?: ResourcesCheckExistenceByIdOptionalParams,\n ): Promise {\n return this.client.sendOperationRequest(\n { resourceId, apiVersion, options },\n checkExistenceByIdOperationSpec,\n );\n }\n\n /**\n * Deletes a resource by ID.\n * @param resourceId The fully qualified ID of the resource, including the resource name and resource\n * type. Use the format,\n * /subscriptions/{guid}/resourceGroups/{resource-group-name}/{resource-provider-namespace}/{resource-type}/{resource-name}\n * @param apiVersion The API version to use for the operation.\n * @param options The options parameters.\n */\n async beginDeleteById(\n resourceId: string,\n apiVersion: string,\n options?: ResourcesDeleteByIdOptionalParams,\n ): Promise, void>> {\n const directSendOperation = async (\n args: coreClient.OperationArguments,\n spec: coreClient.OperationSpec,\n ): Promise => {\n return this.client.sendOperationRequest(args, spec);\n };\n const sendOperationFn = async (\n args: coreClient.OperationArguments,\n spec: coreClient.OperationSpec,\n ) => {\n let currentRawResponse: coreClient.FullOperationResponse | undefined =\n undefined;\n const providedCallback = args.options?.onResponse;\n const callback: coreClient.RawResponseCallback = (\n rawResponse: coreClient.FullOperationResponse,\n flatResponse: unknown,\n ) => {\n currentRawResponse = rawResponse;\n providedCallback?.(rawResponse, flatResponse);\n };\n const updatedArgs = {\n ...args,\n options: {\n ...args.options,\n onResponse: callback,\n },\n };\n const flatResponse = await directSendOperation(updatedArgs, spec);\n return {\n flatResponse,\n rawResponse: {\n statusCode: currentRawResponse!.status,\n body: currentRawResponse!.parsedBody,\n headers: currentRawResponse!.headers.toJSON(),\n },\n };\n };\n\n const lro = createLroSpec({\n sendOperationFn,\n args: { resourceId, apiVersion, options },\n spec: deleteByIdOperationSpec,\n });\n const poller = await createHttpPoller>(lro, {\n restoreFrom: options?.resumeFrom,\n intervalInMs: options?.updateIntervalInMs,\n });\n await poller.poll();\n return poller;\n }\n\n /**\n * Deletes a resource by ID.\n * @param resourceId The fully qualified ID of the resource, including the resource name and resource\n * type. Use the format,\n * /subscriptions/{guid}/resourceGroups/{resource-group-name}/{resource-provider-namespace}/{resource-type}/{resource-name}\n * @param apiVersion The API version to use for the operation.\n * @param options The options parameters.\n */\n async beginDeleteByIdAndWait(\n resourceId: string,\n apiVersion: string,\n options?: ResourcesDeleteByIdOptionalParams,\n ): Promise {\n const poller = await this.beginDeleteById(resourceId, apiVersion, options);\n return poller.pollUntilDone();\n }\n\n /**\n * Create a resource by ID.\n * @param resourceId The fully qualified ID of the resource, including the resource name and resource\n * type. Use the format,\n * /subscriptions/{guid}/resourceGroups/{resource-group-name}/{resource-provider-namespace}/{resource-type}/{resource-name}\n * @param apiVersion The API version to use for the operation.\n * @param parameters Create or update resource parameters.\n * @param options The options parameters.\n */\n async beginCreateOrUpdateById(\n resourceId: string,\n apiVersion: string,\n parameters: GenericResource,\n options?: ResourcesCreateOrUpdateByIdOptionalParams,\n ): Promise<\n SimplePollerLike<\n OperationState,\n ResourcesCreateOrUpdateByIdResponse\n >\n > {\n const directSendOperation = async (\n args: coreClient.OperationArguments,\n spec: coreClient.OperationSpec,\n ): Promise => {\n return this.client.sendOperationRequest(args, spec);\n };\n const sendOperationFn = async (\n args: coreClient.OperationArguments,\n spec: coreClient.OperationSpec,\n ) => {\n let currentRawResponse: coreClient.FullOperationResponse | undefined =\n undefined;\n const providedCallback = args.options?.onResponse;\n const callback: coreClient.RawResponseCallback = (\n rawResponse: coreClient.FullOperationResponse,\n flatResponse: unknown,\n ) => {\n currentRawResponse = rawResponse;\n providedCallback?.(rawResponse, flatResponse);\n };\n const updatedArgs = {\n ...args,\n options: {\n ...args.options,\n onResponse: callback,\n },\n };\n const flatResponse = await directSendOperation(updatedArgs, spec);\n return {\n flatResponse,\n rawResponse: {\n statusCode: currentRawResponse!.status,\n body: currentRawResponse!.parsedBody,\n headers: currentRawResponse!.headers.toJSON(),\n },\n };\n };\n\n const lro = createLroSpec({\n sendOperationFn,\n args: { resourceId, apiVersion, parameters, options },\n spec: createOrUpdateByIdOperationSpec,\n });\n const poller = await createHttpPoller<\n ResourcesCreateOrUpdateByIdResponse,\n OperationState\n >(lro, {\n restoreFrom: options?.resumeFrom,\n intervalInMs: options?.updateIntervalInMs,\n });\n await poller.poll();\n return poller;\n }\n\n /**\n * Create a resource by ID.\n * @param resourceId The fully qualified ID of the resource, including the resource name and resource\n * type. Use the format,\n * /subscriptions/{guid}/resourceGroups/{resource-group-name}/{resource-provider-namespace}/{resource-type}/{resource-name}\n * @param apiVersion The API version to use for the operation.\n * @param parameters Create or update resource parameters.\n * @param options The options parameters.\n */\n async beginCreateOrUpdateByIdAndWait(\n resourceId: string,\n apiVersion: string,\n parameters: GenericResource,\n options?: ResourcesCreateOrUpdateByIdOptionalParams,\n ): Promise {\n const poller = await this.beginCreateOrUpdateById(\n resourceId,\n apiVersion,\n parameters,\n options,\n );\n return poller.pollUntilDone();\n }\n\n /**\n * Updates a resource by ID.\n * @param resourceId The fully qualified ID of the resource, including the resource name and resource\n * type. Use the format,\n * /subscriptions/{guid}/resourceGroups/{resource-group-name}/{resource-provider-namespace}/{resource-type}/{resource-name}\n * @param apiVersion The API version to use for the operation.\n * @param parameters Update resource parameters.\n * @param options The options parameters.\n */\n async beginUpdateById(\n resourceId: string,\n apiVersion: string,\n parameters: GenericResource,\n options?: ResourcesUpdateByIdOptionalParams,\n ): Promise<\n SimplePollerLike<\n OperationState,\n ResourcesUpdateByIdResponse\n >\n > {\n const directSendOperation = async (\n args: coreClient.OperationArguments,\n spec: coreClient.OperationSpec,\n ): Promise => {\n return this.client.sendOperationRequest(args, spec);\n };\n const sendOperationFn = async (\n args: coreClient.OperationArguments,\n spec: coreClient.OperationSpec,\n ) => {\n let currentRawResponse: coreClient.FullOperationResponse | undefined =\n undefined;\n const providedCallback = args.options?.onResponse;\n const callback: coreClient.RawResponseCallback = (\n rawResponse: coreClient.FullOperationResponse,\n flatResponse: unknown,\n ) => {\n currentRawResponse = rawResponse;\n providedCallback?.(rawResponse, flatResponse);\n };\n const updatedArgs = {\n ...args,\n options: {\n ...args.options,\n onResponse: callback,\n },\n };\n const flatResponse = await directSendOperation(updatedArgs, spec);\n return {\n flatResponse,\n rawResponse: {\n statusCode: currentRawResponse!.status,\n body: currentRawResponse!.parsedBody,\n headers: currentRawResponse!.headers.toJSON(),\n },\n };\n };\n\n const lro = createLroSpec({\n sendOperationFn,\n args: { resourceId, apiVersion, parameters, options },\n spec: updateByIdOperationSpec,\n });\n const poller = await createHttpPoller<\n ResourcesUpdateByIdResponse,\n OperationState\n >(lro, {\n restoreFrom: options?.resumeFrom,\n intervalInMs: options?.updateIntervalInMs,\n });\n await poller.poll();\n return poller;\n }\n\n /**\n * Updates a resource by ID.\n * @param resourceId The fully qualified ID of the resource, including the resource name and resource\n * type. Use the format,\n * /subscriptions/{guid}/resourceGroups/{resource-group-name}/{resource-provider-namespace}/{resource-type}/{resource-name}\n * @param apiVersion The API version to use for the operation.\n * @param parameters Update resource parameters.\n * @param options The options parameters.\n */\n async beginUpdateByIdAndWait(\n resourceId: string,\n apiVersion: string,\n parameters: GenericResource,\n options?: ResourcesUpdateByIdOptionalParams,\n ): Promise {\n const poller = await this.beginUpdateById(\n resourceId,\n apiVersion,\n parameters,\n options,\n );\n return poller.pollUntilDone();\n }\n\n /**\n * Gets a resource by ID.\n * @param resourceId The fully qualified ID of the resource, including the resource name and resource\n * type. Use the format,\n * /subscriptions/{guid}/resourceGroups/{resource-group-name}/{resource-provider-namespace}/{resource-type}/{resource-name}\n * @param apiVersion The API version to use for the operation.\n * @param options The options parameters.\n */\n getById(\n resourceId: string,\n apiVersion: string,\n options?: ResourcesGetByIdOptionalParams,\n ): Promise {\n return this.client.sendOperationRequest(\n { resourceId, apiVersion, options },\n getByIdOperationSpec,\n );\n }\n\n /**\n * ListByResourceGroupNext\n * @param resourceGroupName The resource group with the resources to get.\n * @param nextLink The nextLink from the previous successful call to the ListByResourceGroup method.\n * @param options The options parameters.\n */\n private _listByResourceGroupNext(\n resourceGroupName: string,\n nextLink: string,\n options?: ResourcesListByResourceGroupNextOptionalParams,\n ): Promise {\n return this.client.sendOperationRequest(\n { resourceGroupName, nextLink, options },\n listByResourceGroupNextOperationSpec,\n );\n }\n\n /**\n * ListNext\n * @param nextLink The nextLink from the previous successful call to the List method.\n * @param options The options parameters.\n */\n private _listNext(\n nextLink: string,\n options?: ResourcesListNextOptionalParams,\n ): Promise {\n return this.client.sendOperationRequest(\n { nextLink, options },\n listNextOperationSpec,\n );\n }\n}\n// Operation Specifications\nconst serializer = coreClient.createSerializer(Mappers, /* isXml */ false);\n\nconst listByResourceGroupOperationSpec: coreClient.OperationSpec = {\n path: \"/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/resources\",\n httpMethod: \"GET\",\n responses: {\n 200: {\n bodyMapper: Mappers.ResourceListResult,\n },\n default: {\n bodyMapper: Mappers.CloudError,\n },\n },\n queryParameters: [\n Parameters.apiVersion,\n Parameters.filter,\n Parameters.top,\n Parameters.expand,\n ],\n urlParameters: [\n Parameters.$host,\n Parameters.subscriptionId,\n Parameters.resourceGroupName,\n ],\n headerParameters: [Parameters.accept],\n serializer,\n};\nconst moveResourcesOperationSpec: coreClient.OperationSpec = {\n path: \"/subscriptions/{subscriptionId}/resourceGroups/{sourceResourceGroupName}/moveResources\",\n httpMethod: \"POST\",\n responses: {\n 200: {},\n 201: {},\n 202: {},\n 204: {},\n default: {\n bodyMapper: Mappers.CloudError,\n },\n },\n requestBody: Parameters.parameters4,\n queryParameters: [Parameters.apiVersion],\n urlParameters: [\n Parameters.$host,\n Parameters.subscriptionId,\n Parameters.sourceResourceGroupName,\n ],\n headerParameters: [Parameters.accept, Parameters.contentType],\n mediaType: \"json\",\n serializer,\n};\nconst validateMoveResourcesOperationSpec: coreClient.OperationSpec = {\n path: \"/subscriptions/{subscriptionId}/resourceGroups/{sourceResourceGroupName}/validateMoveResources\",\n httpMethod: \"POST\",\n responses: {\n 200: {},\n 201: {},\n 202: {},\n 204: {},\n default: {\n bodyMapper: Mappers.CloudError,\n },\n },\n requestBody: Parameters.parameters4,\n queryParameters: [Parameters.apiVersion],\n urlParameters: [\n Parameters.$host,\n Parameters.subscriptionId,\n Parameters.sourceResourceGroupName,\n ],\n headerParameters: [Parameters.accept, Parameters.contentType],\n mediaType: \"json\",\n serializer,\n};\nconst listOperationSpec: coreClient.OperationSpec = {\n path: \"/subscriptions/{subscriptionId}/resources\",\n httpMethod: \"GET\",\n responses: {\n 200: {\n bodyMapper: Mappers.ResourceListResult,\n },\n default: {\n bodyMapper: Mappers.CloudError,\n },\n },\n queryParameters: [\n Parameters.apiVersion,\n Parameters.filter,\n Parameters.top,\n Parameters.expand,\n ],\n urlParameters: [Parameters.$host, Parameters.subscriptionId],\n headerParameters: [Parameters.accept],\n serializer,\n};\nconst checkExistenceOperationSpec: coreClient.OperationSpec = {\n path: \"/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{parentResourcePath}/{resourceType}/{resourceName}\",\n httpMethod: \"HEAD\",\n responses: {\n 204: {},\n 404: {},\n default: {\n bodyMapper: Mappers.CloudError,\n },\n },\n queryParameters: [Parameters.apiVersion1],\n urlParameters: [\n Parameters.$host,\n Parameters.subscriptionId,\n Parameters.resourceGroupName,\n Parameters.resourceProviderNamespace,\n Parameters.parentResourcePath,\n Parameters.resourceType,\n Parameters.resourceName,\n ],\n headerParameters: [Parameters.accept],\n serializer,\n};\nconst deleteOperationSpec: coreClient.OperationSpec = {\n path: \"/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{parentResourcePath}/{resourceType}/{resourceName}\",\n httpMethod: \"DELETE\",\n responses: {\n 200: {},\n 201: {},\n 202: {},\n 204: {},\n default: {\n bodyMapper: Mappers.CloudError,\n },\n },\n queryParameters: [Parameters.apiVersion1],\n urlParameters: [\n Parameters.$host,\n Parameters.subscriptionId,\n Parameters.resourceGroupName,\n Parameters.resourceProviderNamespace,\n Parameters.parentResourcePath,\n Parameters.resourceType,\n Parameters.resourceName,\n ],\n headerParameters: [Parameters.accept],\n serializer,\n};\nconst createOrUpdateOperationSpec: coreClient.OperationSpec = {\n path: \"/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{parentResourcePath}/{resourceType}/{resourceName}\",\n httpMethod: \"PUT\",\n responses: {\n 200: {\n bodyMapper: Mappers.GenericResource,\n },\n 201: {\n bodyMapper: Mappers.GenericResource,\n },\n 202: {\n bodyMapper: Mappers.GenericResource,\n },\n 204: {\n bodyMapper: Mappers.GenericResource,\n },\n default: {\n bodyMapper: Mappers.CloudError,\n },\n },\n requestBody: Parameters.parameters5,\n queryParameters: [Parameters.apiVersion1],\n urlParameters: [\n Parameters.$host,\n Parameters.subscriptionId,\n Parameters.resourceGroupName,\n Parameters.resourceProviderNamespace,\n Parameters.parentResourcePath,\n Parameters.resourceType,\n Parameters.resourceName,\n ],\n headerParameters: [Parameters.accept, Parameters.contentType],\n mediaType: \"json\",\n serializer,\n};\nconst updateOperationSpec: coreClient.OperationSpec = {\n path: \"/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{parentResourcePath}/{resourceType}/{resourceName}\",\n httpMethod: \"PATCH\",\n responses: {\n 200: {\n bodyMapper: Mappers.GenericResource,\n },\n 201: {\n bodyMapper: Mappers.GenericResource,\n },\n 202: {\n bodyMapper: Mappers.GenericResource,\n },\n 204: {\n bodyMapper: Mappers.GenericResource,\n },\n default: {\n bodyMapper: Mappers.CloudError,\n },\n },\n requestBody: Parameters.parameters5,\n queryParameters: [Parameters.apiVersion1],\n urlParameters: [\n Parameters.$host,\n Parameters.subscriptionId,\n Parameters.resourceGroupName,\n Parameters.resourceProviderNamespace,\n Parameters.parentResourcePath,\n Parameters.resourceType,\n Parameters.resourceName,\n ],\n headerParameters: [Parameters.accept, Parameters.contentType],\n mediaType: \"json\",\n serializer,\n};\nconst getOperationSpec: coreClient.OperationSpec = {\n path: \"/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{parentResourcePath}/{resourceType}/{resourceName}\",\n httpMethod: \"GET\",\n responses: {\n 200: {\n bodyMapper: Mappers.GenericResource,\n },\n default: {\n bodyMapper: Mappers.CloudError,\n },\n },\n queryParameters: [Parameters.apiVersion1],\n urlParameters: [\n Parameters.$host,\n Parameters.subscriptionId,\n Parameters.resourceGroupName,\n Parameters.resourceProviderNamespace,\n Parameters.parentResourcePath,\n Parameters.resourceType,\n Parameters.resourceName,\n ],\n headerParameters: [Parameters.accept],\n serializer,\n};\nconst checkExistenceByIdOperationSpec: coreClient.OperationSpec = {\n path: \"/{resourceId}\",\n httpMethod: \"HEAD\",\n responses: {\n 204: {},\n 404: {},\n default: {\n bodyMapper: Mappers.CloudError,\n },\n },\n queryParameters: [Parameters.apiVersion1],\n urlParameters: [Parameters.$host, Parameters.resourceId],\n headerParameters: [Parameters.accept],\n serializer,\n};\nconst deleteByIdOperationSpec: coreClient.OperationSpec = {\n path: \"/{resourceId}\",\n httpMethod: \"DELETE\",\n responses: {\n 200: {},\n 201: {},\n 202: {},\n 204: {},\n default: {\n bodyMapper: Mappers.CloudError,\n },\n },\n queryParameters: [Parameters.apiVersion1],\n urlParameters: [Parameters.$host, Parameters.resourceId],\n headerParameters: [Parameters.accept],\n serializer,\n};\nconst createOrUpdateByIdOperationSpec: coreClient.OperationSpec = {\n path: \"/{resourceId}\",\n httpMethod: \"PUT\",\n responses: {\n 200: {\n bodyMapper: Mappers.GenericResource,\n },\n 201: {\n bodyMapper: Mappers.GenericResource,\n },\n 202: {\n bodyMapper: Mappers.GenericResource,\n },\n 204: {\n bodyMapper: Mappers.GenericResource,\n },\n default: {\n bodyMapper: Mappers.CloudError,\n },\n },\n requestBody: Parameters.parameters5,\n queryParameters: [Parameters.apiVersion1],\n urlParameters: [Parameters.$host, Parameters.resourceId],\n headerParameters: [Parameters.accept, Parameters.contentType],\n mediaType: \"json\",\n serializer,\n};\nconst updateByIdOperationSpec: coreClient.OperationSpec = {\n path: \"/{resourceId}\",\n httpMethod: \"PATCH\",\n responses: {\n 200: {\n bodyMapper: Mappers.GenericResource,\n },\n 201: {\n bodyMapper: Mappers.GenericResource,\n },\n 202: {\n bodyMapper: Mappers.GenericResource,\n },\n 204: {\n bodyMapper: Mappers.GenericResource,\n },\n default: {\n bodyMapper: Mappers.CloudError,\n },\n },\n requestBody: Parameters.parameters5,\n queryParameters: [Parameters.apiVersion1],\n urlParameters: [Parameters.$host, Parameters.resourceId],\n headerParameters: [Parameters.accept, Parameters.contentType],\n mediaType: \"json\",\n serializer,\n};\nconst getByIdOperationSpec: coreClient.OperationSpec = {\n path: \"/{resourceId}\",\n httpMethod: \"GET\",\n responses: {\n 200: {\n bodyMapper: Mappers.GenericResource,\n },\n default: {\n bodyMapper: Mappers.CloudError,\n },\n },\n queryParameters: [Parameters.apiVersion1],\n urlParameters: [Parameters.$host, Parameters.resourceId],\n headerParameters: [Parameters.accept],\n serializer,\n};\nconst listByResourceGroupNextOperationSpec: coreClient.OperationSpec = {\n path: \"{nextLink}\",\n httpMethod: \"GET\",\n responses: {\n 200: {\n bodyMapper: Mappers.ResourceListResult,\n },\n default: {\n bodyMapper: Mappers.CloudError,\n },\n },\n urlParameters: [\n Parameters.$host,\n Parameters.nextLink,\n Parameters.subscriptionId,\n Parameters.resourceGroupName,\n ],\n headerParameters: [Parameters.accept],\n serializer,\n};\nconst listNextOperationSpec: coreClient.OperationSpec = {\n path: \"{nextLink}\",\n httpMethod: \"GET\",\n responses: {\n 200: {\n bodyMapper: Mappers.ResourceListResult,\n },\n default: {\n bodyMapper: Mappers.CloudError,\n },\n },\n urlParameters: [\n Parameters.$host,\n Parameters.nextLink,\n Parameters.subscriptionId,\n ],\n headerParameters: [Parameters.accept],\n serializer,\n};\n", "/*\n * Copyright (c) Microsoft Corporation.\n * Licensed under the MIT License.\n *\n * Code generated by Microsoft (R) AutoRest Code Generator.\n * Changes may cause incorrect behavior and will be lost if the code is regenerated.\n */\n\nimport { PagedAsyncIterableIterator, PageSettings } from \"@azure/core-paging\";\nimport { setContinuationToken } from \"../pagingHelper.js\";\nimport { ResourceGroups } from \"../operationsInterfaces/index.js\";\nimport * as coreClient from \"@azure/core-client\";\nimport * as Mappers from \"../models/mappers.js\";\nimport * as Parameters from \"../models/parameters.js\";\nimport { ResourceManagementClient } from \"../resourceManagementClient.js\";\nimport {\n SimplePollerLike,\n OperationState,\n createHttpPoller,\n} from \"@azure/core-lro\";\nimport { createLroSpec } from \"../lroImpl.js\";\nimport {\n ResourceGroup,\n ResourceGroupsListNextOptionalParams,\n ResourceGroupsListOptionalParams,\n ResourceGroupsListResponse,\n ResourceGroupsCheckExistenceOptionalParams,\n ResourceGroupsCheckExistenceResponse,\n ResourceGroupsCreateOrUpdateOptionalParams,\n ResourceGroupsCreateOrUpdateResponse,\n ResourceGroupsDeleteOptionalParams,\n ResourceGroupsGetOptionalParams,\n ResourceGroupsGetResponse,\n ResourceGroupPatchable,\n ResourceGroupsUpdateOptionalParams,\n ResourceGroupsUpdateResponse,\n ExportTemplateRequest,\n ResourceGroupsExportTemplateOptionalParams,\n ResourceGroupsExportTemplateResponse,\n ResourceGroupsListNextResponse,\n} from \"../models/index.js\";\n\n/// \n/** Class containing ResourceGroups operations. */\nexport class ResourceGroupsImpl implements ResourceGroups {\n private readonly client: ResourceManagementClient;\n\n /**\n * Initialize a new instance of the class ResourceGroups class.\n * @param client Reference to the service client\n */\n constructor(client: ResourceManagementClient) {\n this.client = client;\n }\n\n /**\n * Gets all the resource groups for a subscription.\n * @param options The options parameters.\n */\n public list(\n options?: ResourceGroupsListOptionalParams,\n ): PagedAsyncIterableIterator {\n const iter = this.listPagingAll(options);\n return {\n next() {\n return iter.next();\n },\n [Symbol.asyncIterator]() {\n return this;\n },\n byPage: (settings?: PageSettings) => {\n if (settings?.maxPageSize) {\n throw new Error(\"maxPageSize is not supported by this operation.\");\n }\n return this.listPagingPage(options, settings);\n },\n };\n }\n\n private async *listPagingPage(\n options?: ResourceGroupsListOptionalParams,\n settings?: PageSettings,\n ): AsyncIterableIterator {\n let result: ResourceGroupsListResponse;\n let continuationToken = settings?.continuationToken;\n if (!continuationToken) {\n result = await this._list(options);\n let page = result.value || [];\n continuationToken = result.nextLink;\n setContinuationToken(page, continuationToken);\n yield page;\n }\n while (continuationToken) {\n result = await this._listNext(continuationToken, options);\n continuationToken = result.nextLink;\n let page = result.value || [];\n setContinuationToken(page, continuationToken);\n yield page;\n }\n }\n\n private async *listPagingAll(\n options?: ResourceGroupsListOptionalParams,\n ): AsyncIterableIterator {\n for await (const page of this.listPagingPage(options)) {\n yield* page;\n }\n }\n\n /**\n * Checks whether a resource group exists.\n * @param resourceGroupName The name of the resource group to check. The name is case insensitive.\n * @param options The options parameters.\n */\n checkExistence(\n resourceGroupName: string,\n options?: ResourceGroupsCheckExistenceOptionalParams,\n ): Promise {\n return this.client.sendOperationRequest(\n { resourceGroupName, options },\n checkExistenceOperationSpec,\n );\n }\n\n /**\n * Creates or updates a resource group.\n * @param resourceGroupName The name of the resource group to create or update. Can include\n * alphanumeric, underscore, parentheses, hyphen, period (except at end), and Unicode characters that\n * match the allowed characters.\n * @param parameters Parameters supplied to the create or update a resource group.\n * @param options The options parameters.\n */\n createOrUpdate(\n resourceGroupName: string,\n parameters: ResourceGroup,\n options?: ResourceGroupsCreateOrUpdateOptionalParams,\n ): Promise {\n return this.client.sendOperationRequest(\n { resourceGroupName, parameters, options },\n createOrUpdateOperationSpec,\n );\n }\n\n /**\n * When you delete a resource group, all of its resources are also deleted. Deleting a resource group\n * deletes all of its template deployments and currently stored operations.\n * @param resourceGroupName The name of the resource group to delete. The name is case insensitive.\n * @param options The options parameters.\n */\n async beginDelete(\n resourceGroupName: string,\n options?: ResourceGroupsDeleteOptionalParams,\n ): Promise, void>> {\n const directSendOperation = async (\n args: coreClient.OperationArguments,\n spec: coreClient.OperationSpec,\n ): Promise => {\n return this.client.sendOperationRequest(args, spec);\n };\n const sendOperationFn = async (\n args: coreClient.OperationArguments,\n spec: coreClient.OperationSpec,\n ) => {\n let currentRawResponse: coreClient.FullOperationResponse | undefined =\n undefined;\n const providedCallback = args.options?.onResponse;\n const callback: coreClient.RawResponseCallback = (\n rawResponse: coreClient.FullOperationResponse,\n flatResponse: unknown,\n ) => {\n currentRawResponse = rawResponse;\n providedCallback?.(rawResponse, flatResponse);\n };\n const updatedArgs = {\n ...args,\n options: {\n ...args.options,\n onResponse: callback,\n },\n };\n const flatResponse = await directSendOperation(updatedArgs, spec);\n return {\n flatResponse,\n rawResponse: {\n statusCode: currentRawResponse!.status,\n body: currentRawResponse!.parsedBody,\n headers: currentRawResponse!.headers.toJSON(),\n },\n };\n };\n\n const lro = createLroSpec({\n sendOperationFn,\n args: { resourceGroupName, options },\n spec: deleteOperationSpec,\n });\n const poller = await createHttpPoller>(lro, {\n restoreFrom: options?.resumeFrom,\n intervalInMs: options?.updateIntervalInMs,\n });\n await poller.poll();\n return poller;\n }\n\n /**\n * When you delete a resource group, all of its resources are also deleted. Deleting a resource group\n * deletes all of its template deployments and currently stored operations.\n * @param resourceGroupName The name of the resource group to delete. The name is case insensitive.\n * @param options The options parameters.\n */\n async beginDeleteAndWait(\n resourceGroupName: string,\n options?: ResourceGroupsDeleteOptionalParams,\n ): Promise {\n const poller = await this.beginDelete(resourceGroupName, options);\n return poller.pollUntilDone();\n }\n\n /**\n * Gets a resource group.\n * @param resourceGroupName The name of the resource group to get. The name is case insensitive.\n * @param options The options parameters.\n */\n get(\n resourceGroupName: string,\n options?: ResourceGroupsGetOptionalParams,\n ): Promise {\n return this.client.sendOperationRequest(\n { resourceGroupName, options },\n getOperationSpec,\n );\n }\n\n /**\n * Resource groups can be updated through a simple PATCH operation to a group address. The format of\n * the request is the same as that for creating a resource group. If a field is unspecified, the\n * current value is retained.\n * @param resourceGroupName The name of the resource group to update. The name is case insensitive.\n * @param parameters Parameters supplied to update a resource group.\n * @param options The options parameters.\n */\n update(\n resourceGroupName: string,\n parameters: ResourceGroupPatchable,\n options?: ResourceGroupsUpdateOptionalParams,\n ): Promise {\n return this.client.sendOperationRequest(\n { resourceGroupName, parameters, options },\n updateOperationSpec,\n );\n }\n\n /**\n * Captures the specified resource group as a template.\n * @param resourceGroupName The name of the resource group. The name is case insensitive.\n * @param parameters Parameters for exporting the template.\n * @param options The options parameters.\n */\n async beginExportTemplate(\n resourceGroupName: string,\n parameters: ExportTemplateRequest,\n options?: ResourceGroupsExportTemplateOptionalParams,\n ): Promise<\n SimplePollerLike<\n OperationState,\n ResourceGroupsExportTemplateResponse\n >\n > {\n const directSendOperation = async (\n args: coreClient.OperationArguments,\n spec: coreClient.OperationSpec,\n ): Promise => {\n return this.client.sendOperationRequest(args, spec);\n };\n const sendOperationFn = async (\n args: coreClient.OperationArguments,\n spec: coreClient.OperationSpec,\n ) => {\n let currentRawResponse: coreClient.FullOperationResponse | undefined =\n undefined;\n const providedCallback = args.options?.onResponse;\n const callback: coreClient.RawResponseCallback = (\n rawResponse: coreClient.FullOperationResponse,\n flatResponse: unknown,\n ) => {\n currentRawResponse = rawResponse;\n providedCallback?.(rawResponse, flatResponse);\n };\n const updatedArgs = {\n ...args,\n options: {\n ...args.options,\n onResponse: callback,\n },\n };\n const flatResponse = await directSendOperation(updatedArgs, spec);\n return {\n flatResponse,\n rawResponse: {\n statusCode: currentRawResponse!.status,\n body: currentRawResponse!.parsedBody,\n headers: currentRawResponse!.headers.toJSON(),\n },\n };\n };\n\n const lro = createLroSpec({\n sendOperationFn,\n args: { resourceGroupName, parameters, options },\n spec: exportTemplateOperationSpec,\n });\n const poller = await createHttpPoller<\n ResourceGroupsExportTemplateResponse,\n OperationState\n >(lro, {\n restoreFrom: options?.resumeFrom,\n intervalInMs: options?.updateIntervalInMs,\n resourceLocationConfig: \"location\",\n });\n await poller.poll();\n return poller;\n }\n\n /**\n * Captures the specified resource group as a template.\n * @param resourceGroupName The name of the resource group. The name is case insensitive.\n * @param parameters Parameters for exporting the template.\n * @param options The options parameters.\n */\n async beginExportTemplateAndWait(\n resourceGroupName: string,\n parameters: ExportTemplateRequest,\n options?: ResourceGroupsExportTemplateOptionalParams,\n ): Promise {\n const poller = await this.beginExportTemplate(\n resourceGroupName,\n parameters,\n options,\n );\n return poller.pollUntilDone();\n }\n\n /**\n * Gets all the resource groups for a subscription.\n * @param options The options parameters.\n */\n private _list(\n options?: ResourceGroupsListOptionalParams,\n ): Promise {\n return this.client.sendOperationRequest({ options }, listOperationSpec);\n }\n\n /**\n * ListNext\n * @param nextLink The nextLink from the previous successful call to the List method.\n * @param options The options parameters.\n */\n private _listNext(\n nextLink: string,\n options?: ResourceGroupsListNextOptionalParams,\n ): Promise {\n return this.client.sendOperationRequest(\n { nextLink, options },\n listNextOperationSpec,\n );\n }\n}\n// Operation Specifications\nconst serializer = coreClient.createSerializer(Mappers, /* isXml */ false);\n\nconst checkExistenceOperationSpec: coreClient.OperationSpec = {\n path: \"/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}\",\n httpMethod: \"HEAD\",\n responses: {\n 204: {},\n 404: {},\n default: {\n bodyMapper: Mappers.CloudError,\n },\n },\n queryParameters: [Parameters.apiVersion],\n urlParameters: [\n Parameters.$host,\n Parameters.subscriptionId,\n Parameters.resourceGroupName,\n ],\n headerParameters: [Parameters.accept],\n serializer,\n};\nconst createOrUpdateOperationSpec: coreClient.OperationSpec = {\n path: \"/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}\",\n httpMethod: \"PUT\",\n responses: {\n 200: {\n bodyMapper: Mappers.ResourceGroup,\n },\n 201: {\n bodyMapper: Mappers.ResourceGroup,\n },\n default: {\n bodyMapper: Mappers.CloudError,\n },\n },\n requestBody: Parameters.parameters6,\n queryParameters: [Parameters.apiVersion],\n urlParameters: [\n Parameters.$host,\n Parameters.subscriptionId,\n Parameters.resourceGroupName,\n ],\n headerParameters: [Parameters.accept, Parameters.contentType],\n mediaType: \"json\",\n serializer,\n};\nconst deleteOperationSpec: coreClient.OperationSpec = {\n path: \"/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}\",\n httpMethod: \"DELETE\",\n responses: {\n 200: {},\n 201: {},\n 202: {},\n 204: {},\n default: {\n bodyMapper: Mappers.CloudError,\n },\n },\n queryParameters: [Parameters.apiVersion, Parameters.forceDeletionTypes],\n urlParameters: [\n Parameters.$host,\n Parameters.subscriptionId,\n Parameters.resourceGroupName,\n ],\n headerParameters: [Parameters.accept],\n serializer,\n};\nconst getOperationSpec: coreClient.OperationSpec = {\n path: \"/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}\",\n httpMethod: \"GET\",\n responses: {\n 200: {\n bodyMapper: Mappers.ResourceGroup,\n },\n default: {\n bodyMapper: Mappers.CloudError,\n },\n },\n queryParameters: [Parameters.apiVersion],\n urlParameters: [\n Parameters.$host,\n Parameters.subscriptionId,\n Parameters.resourceGroupName,\n ],\n headerParameters: [Parameters.accept],\n serializer,\n};\nconst updateOperationSpec: coreClient.OperationSpec = {\n path: \"/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}\",\n httpMethod: \"PATCH\",\n responses: {\n 200: {\n bodyMapper: Mappers.ResourceGroup,\n },\n default: {\n bodyMapper: Mappers.CloudError,\n },\n },\n requestBody: Parameters.parameters7,\n queryParameters: [Parameters.apiVersion],\n urlParameters: [\n Parameters.$host,\n Parameters.subscriptionId,\n Parameters.resourceGroupName,\n ],\n headerParameters: [Parameters.accept, Parameters.contentType],\n mediaType: \"json\",\n serializer,\n};\nconst exportTemplateOperationSpec: coreClient.OperationSpec = {\n path: \"/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/exportTemplate\",\n httpMethod: \"POST\",\n responses: {\n 200: {\n bodyMapper: Mappers.ResourceGroupExportResult,\n },\n 201: {\n bodyMapper: Mappers.ResourceGroupExportResult,\n },\n 202: {\n bodyMapper: Mappers.ResourceGroupExportResult,\n },\n 204: {\n bodyMapper: Mappers.ResourceGroupExportResult,\n },\n default: {\n bodyMapper: Mappers.CloudError,\n },\n },\n requestBody: Parameters.parameters8,\n queryParameters: [Parameters.apiVersion],\n urlParameters: [\n Parameters.$host,\n Parameters.subscriptionId,\n Parameters.resourceGroupName1,\n ],\n headerParameters: [Parameters.accept, Parameters.contentType],\n mediaType: \"json\",\n serializer,\n};\nconst listOperationSpec: coreClient.OperationSpec = {\n path: \"/subscriptions/{subscriptionId}/resourcegroups\",\n httpMethod: \"GET\",\n responses: {\n 200: {\n bodyMapper: Mappers.ResourceGroupListResult,\n },\n default: {\n bodyMapper: Mappers.CloudError,\n },\n },\n queryParameters: [Parameters.apiVersion, Parameters.filter, Parameters.top],\n urlParameters: [Parameters.$host, Parameters.subscriptionId],\n headerParameters: [Parameters.accept],\n serializer,\n};\nconst listNextOperationSpec: coreClient.OperationSpec = {\n path: \"{nextLink}\",\n httpMethod: \"GET\",\n responses: {\n 200: {\n bodyMapper: Mappers.ResourceGroupListResult,\n },\n default: {\n bodyMapper: Mappers.CloudError,\n },\n },\n urlParameters: [\n Parameters.$host,\n Parameters.nextLink,\n Parameters.subscriptionId,\n ],\n headerParameters: [Parameters.accept],\n serializer,\n};\n", "/*\n * Copyright (c) Microsoft Corporation.\n * Licensed under the MIT License.\n *\n * Code generated by Microsoft (R) AutoRest Code Generator.\n * Changes may cause incorrect behavior and will be lost if the code is regenerated.\n */\n\nimport { PagedAsyncIterableIterator, PageSettings } from \"@azure/core-paging\";\nimport { setContinuationToken } from \"../pagingHelper.js\";\nimport { TagsOperations } from \"../operationsInterfaces/index.js\";\nimport * as coreClient from \"@azure/core-client\";\nimport * as Mappers from \"../models/mappers.js\";\nimport * as Parameters from \"../models/parameters.js\";\nimport { ResourceManagementClient } from \"../resourceManagementClient.js\";\nimport {\n SimplePollerLike,\n OperationState,\n createHttpPoller,\n} from \"@azure/core-lro\";\nimport { createLroSpec } from \"../lroImpl.js\";\nimport {\n TagDetails,\n TagsListNextOptionalParams,\n TagsListOptionalParams,\n TagsListResponse,\n TagsDeleteValueOptionalParams,\n TagsCreateOrUpdateValueOptionalParams,\n TagsCreateOrUpdateValueResponse,\n TagsCreateOrUpdateOptionalParams,\n TagsCreateOrUpdateResponse,\n TagsDeleteOptionalParams,\n TagsResource,\n TagsCreateOrUpdateAtScopeOptionalParams,\n TagsCreateOrUpdateAtScopeResponse,\n TagsPatchResource,\n TagsUpdateAtScopeOptionalParams,\n TagsUpdateAtScopeResponse,\n TagsGetAtScopeOptionalParams,\n TagsGetAtScopeResponse,\n TagsDeleteAtScopeOptionalParams,\n TagsListNextResponse,\n} from \"../models/index.js\";\n\n/// \n/** Class containing TagsOperations operations. */\nexport class TagsOperationsImpl implements TagsOperations {\n private readonly client: ResourceManagementClient;\n\n /**\n * Initialize a new instance of the class TagsOperations class.\n * @param client Reference to the service client\n */\n constructor(client: ResourceManagementClient) {\n this.client = client;\n }\n\n /**\n * This operation performs a union of predefined tags, resource tags, resource group tags and\n * subscription tags, and returns a summary of usage for each tag name and value under the given\n * subscription. In case of a large number of tags, this operation may return a previously cached\n * result.\n * @param options The options parameters.\n */\n public list(\n options?: TagsListOptionalParams,\n ): PagedAsyncIterableIterator {\n const iter = this.listPagingAll(options);\n return {\n next() {\n return iter.next();\n },\n [Symbol.asyncIterator]() {\n return this;\n },\n byPage: (settings?: PageSettings) => {\n if (settings?.maxPageSize) {\n throw new Error(\"maxPageSize is not supported by this operation.\");\n }\n return this.listPagingPage(options, settings);\n },\n };\n }\n\n private async *listPagingPage(\n options?: TagsListOptionalParams,\n settings?: PageSettings,\n ): AsyncIterableIterator {\n let result: TagsListResponse;\n let continuationToken = settings?.continuationToken;\n if (!continuationToken) {\n result = await this._list(options);\n let page = result.value || [];\n continuationToken = result.nextLink;\n setContinuationToken(page, continuationToken);\n yield page;\n }\n while (continuationToken) {\n result = await this._listNext(continuationToken, options);\n continuationToken = result.nextLink;\n let page = result.value || [];\n setContinuationToken(page, continuationToken);\n yield page;\n }\n }\n\n private async *listPagingAll(\n options?: TagsListOptionalParams,\n ): AsyncIterableIterator {\n for await (const page of this.listPagingPage(options)) {\n yield* page;\n }\n }\n\n /**\n * This operation allows deleting a value from the list of predefined values for an existing predefined\n * tag name. The value being deleted must not be in use as a tag value for the given tag name for any\n * resource.\n * @param tagName The name of the tag.\n * @param tagValue The value of the tag to delete.\n * @param options The options parameters.\n */\n deleteValue(\n tagName: string,\n tagValue: string,\n options?: TagsDeleteValueOptionalParams,\n ): Promise {\n return this.client.sendOperationRequest(\n { tagName, tagValue, options },\n deleteValueOperationSpec,\n );\n }\n\n /**\n * This operation allows adding a value to the list of predefined values for an existing predefined tag\n * name. A tag value can have a maximum of 256 characters.\n * @param tagName The name of the tag.\n * @param tagValue The value of the tag to create.\n * @param options The options parameters.\n */\n createOrUpdateValue(\n tagName: string,\n tagValue: string,\n options?: TagsCreateOrUpdateValueOptionalParams,\n ): Promise {\n return this.client.sendOperationRequest(\n { tagName, tagValue, options },\n createOrUpdateValueOperationSpec,\n );\n }\n\n /**\n * This operation allows adding a name to the list of predefined tag names for the given subscription.\n * A tag name can have a maximum of 512 characters and is case-insensitive. Tag names cannot have the\n * following prefixes which are reserved for Azure use: 'microsoft', 'azure', 'windows'.\n * @param tagName The name of the tag to create.\n * @param options The options parameters.\n */\n createOrUpdate(\n tagName: string,\n options?: TagsCreateOrUpdateOptionalParams,\n ): Promise {\n return this.client.sendOperationRequest(\n { tagName, options },\n createOrUpdateOperationSpec,\n );\n }\n\n /**\n * This operation allows deleting a name from the list of predefined tag names for the given\n * subscription. The name being deleted must not be in use as a tag name for any resource. All\n * predefined values for the given name must have already been deleted.\n * @param tagName The name of the tag.\n * @param options The options parameters.\n */\n delete(tagName: string, options?: TagsDeleteOptionalParams): Promise {\n return this.client.sendOperationRequest(\n { tagName, options },\n deleteOperationSpec,\n );\n }\n\n /**\n * This operation performs a union of predefined tags, resource tags, resource group tags and\n * subscription tags, and returns a summary of usage for each tag name and value under the given\n * subscription. In case of a large number of tags, this operation may return a previously cached\n * result.\n * @param options The options parameters.\n */\n private _list(options?: TagsListOptionalParams): Promise {\n return this.client.sendOperationRequest({ options }, listOperationSpec);\n }\n\n /**\n * This operation allows adding or replacing the entire set of tags on the specified resource or\n * subscription. The specified entity can have a maximum of 50 tags.\n * @param scope The resource scope.\n * @param parameters Wrapper resource for tags API requests and responses.\n * @param options The options parameters.\n */\n async beginCreateOrUpdateAtScope(\n scope: string,\n parameters: TagsResource,\n options?: TagsCreateOrUpdateAtScopeOptionalParams,\n ): Promise<\n SimplePollerLike<\n OperationState,\n TagsCreateOrUpdateAtScopeResponse\n >\n > {\n const directSendOperation = async (\n args: coreClient.OperationArguments,\n spec: coreClient.OperationSpec,\n ): Promise => {\n return this.client.sendOperationRequest(args, spec);\n };\n const sendOperationFn = async (\n args: coreClient.OperationArguments,\n spec: coreClient.OperationSpec,\n ) => {\n let currentRawResponse: coreClient.FullOperationResponse | undefined =\n undefined;\n const providedCallback = args.options?.onResponse;\n const callback: coreClient.RawResponseCallback = (\n rawResponse: coreClient.FullOperationResponse,\n flatResponse: unknown,\n ) => {\n currentRawResponse = rawResponse;\n providedCallback?.(rawResponse, flatResponse);\n };\n const updatedArgs = {\n ...args,\n options: {\n ...args.options,\n onResponse: callback,\n },\n };\n const flatResponse = await directSendOperation(updatedArgs, spec);\n return {\n flatResponse,\n rawResponse: {\n statusCode: currentRawResponse!.status,\n body: currentRawResponse!.parsedBody,\n headers: currentRawResponse!.headers.toJSON(),\n },\n };\n };\n\n const lro = createLroSpec({\n sendOperationFn,\n args: { scope, parameters, options },\n spec: createOrUpdateAtScopeOperationSpec,\n });\n const poller = await createHttpPoller<\n TagsCreateOrUpdateAtScopeResponse,\n OperationState\n >(lro, {\n restoreFrom: options?.resumeFrom,\n intervalInMs: options?.updateIntervalInMs,\n });\n await poller.poll();\n return poller;\n }\n\n /**\n * This operation allows adding or replacing the entire set of tags on the specified resource or\n * subscription. The specified entity can have a maximum of 50 tags.\n * @param scope The resource scope.\n * @param parameters Wrapper resource for tags API requests and responses.\n * @param options The options parameters.\n */\n async beginCreateOrUpdateAtScopeAndWait(\n scope: string,\n parameters: TagsResource,\n options?: TagsCreateOrUpdateAtScopeOptionalParams,\n ): Promise {\n const poller = await this.beginCreateOrUpdateAtScope(\n scope,\n parameters,\n options,\n );\n return poller.pollUntilDone();\n }\n\n /**\n * This operation allows replacing, merging or selectively deleting tags on the specified resource or\n * subscription. The specified entity can have a maximum of 50 tags at the end of the operation. The\n * 'replace' option replaces the entire set of existing tags with a new set. The 'merge' option allows\n * adding tags with new names and updating the values of tags with existing names. The 'delete' option\n * allows selectively deleting tags based on given names or name/value pairs.\n * @param scope The resource scope.\n * @param parameters Wrapper resource for tags patch API request only.\n * @param options The options parameters.\n */\n async beginUpdateAtScope(\n scope: string,\n parameters: TagsPatchResource,\n options?: TagsUpdateAtScopeOptionalParams,\n ): Promise<\n SimplePollerLike<\n OperationState,\n TagsUpdateAtScopeResponse\n >\n > {\n const directSendOperation = async (\n args: coreClient.OperationArguments,\n spec: coreClient.OperationSpec,\n ): Promise => {\n return this.client.sendOperationRequest(args, spec);\n };\n const sendOperationFn = async (\n args: coreClient.OperationArguments,\n spec: coreClient.OperationSpec,\n ) => {\n let currentRawResponse: coreClient.FullOperationResponse | undefined =\n undefined;\n const providedCallback = args.options?.onResponse;\n const callback: coreClient.RawResponseCallback = (\n rawResponse: coreClient.FullOperationResponse,\n flatResponse: unknown,\n ) => {\n currentRawResponse = rawResponse;\n providedCallback?.(rawResponse, flatResponse);\n };\n const updatedArgs = {\n ...args,\n options: {\n ...args.options,\n onResponse: callback,\n },\n };\n const flatResponse = await directSendOperation(updatedArgs, spec);\n return {\n flatResponse,\n rawResponse: {\n statusCode: currentRawResponse!.status,\n body: currentRawResponse!.parsedBody,\n headers: currentRawResponse!.headers.toJSON(),\n },\n };\n };\n\n const lro = createLroSpec({\n sendOperationFn,\n args: { scope, parameters, options },\n spec: updateAtScopeOperationSpec,\n });\n const poller = await createHttpPoller<\n TagsUpdateAtScopeResponse,\n OperationState\n >(lro, {\n restoreFrom: options?.resumeFrom,\n intervalInMs: options?.updateIntervalInMs,\n });\n await poller.poll();\n return poller;\n }\n\n /**\n * This operation allows replacing, merging or selectively deleting tags on the specified resource or\n * subscription. The specified entity can have a maximum of 50 tags at the end of the operation. The\n * 'replace' option replaces the entire set of existing tags with a new set. The 'merge' option allows\n * adding tags with new names and updating the values of tags with existing names. The 'delete' option\n * allows selectively deleting tags based on given names or name/value pairs.\n * @param scope The resource scope.\n * @param parameters Wrapper resource for tags patch API request only.\n * @param options The options parameters.\n */\n async beginUpdateAtScopeAndWait(\n scope: string,\n parameters: TagsPatchResource,\n options?: TagsUpdateAtScopeOptionalParams,\n ): Promise {\n const poller = await this.beginUpdateAtScope(scope, parameters, options);\n return poller.pollUntilDone();\n }\n\n /**\n * Gets the entire set of tags on a resource or subscription.\n * @param scope The resource scope.\n * @param options The options parameters.\n */\n getAtScope(\n scope: string,\n options?: TagsGetAtScopeOptionalParams,\n ): Promise {\n return this.client.sendOperationRequest(\n { scope, options },\n getAtScopeOperationSpec,\n );\n }\n\n /**\n * Deletes the entire set of tags on a resource or subscription.\n * @param scope The resource scope.\n * @param options The options parameters.\n */\n async beginDeleteAtScope(\n scope: string,\n options?: TagsDeleteAtScopeOptionalParams,\n ): Promise, void>> {\n const directSendOperation = async (\n args: coreClient.OperationArguments,\n spec: coreClient.OperationSpec,\n ): Promise => {\n return this.client.sendOperationRequest(args, spec);\n };\n const sendOperationFn = async (\n args: coreClient.OperationArguments,\n spec: coreClient.OperationSpec,\n ) => {\n let currentRawResponse: coreClient.FullOperationResponse | undefined =\n undefined;\n const providedCallback = args.options?.onResponse;\n const callback: coreClient.RawResponseCallback = (\n rawResponse: coreClient.FullOperationResponse,\n flatResponse: unknown,\n ) => {\n currentRawResponse = rawResponse;\n providedCallback?.(rawResponse, flatResponse);\n };\n const updatedArgs = {\n ...args,\n options: {\n ...args.options,\n onResponse: callback,\n },\n };\n const flatResponse = await directSendOperation(updatedArgs, spec);\n return {\n flatResponse,\n rawResponse: {\n statusCode: currentRawResponse!.status,\n body: currentRawResponse!.parsedBody,\n headers: currentRawResponse!.headers.toJSON(),\n },\n };\n };\n\n const lro = createLroSpec({\n sendOperationFn,\n args: { scope, options },\n spec: deleteAtScopeOperationSpec,\n });\n const poller = await createHttpPoller>(lro, {\n restoreFrom: options?.resumeFrom,\n intervalInMs: options?.updateIntervalInMs,\n });\n await poller.poll();\n return poller;\n }\n\n /**\n * Deletes the entire set of tags on a resource or subscription.\n * @param scope The resource scope.\n * @param options The options parameters.\n */\n async beginDeleteAtScopeAndWait(\n scope: string,\n options?: TagsDeleteAtScopeOptionalParams,\n ): Promise {\n const poller = await this.beginDeleteAtScope(scope, options);\n return poller.pollUntilDone();\n }\n\n /**\n * ListNext\n * @param nextLink The nextLink from the previous successful call to the List method.\n * @param options The options parameters.\n */\n private _listNext(\n nextLink: string,\n options?: TagsListNextOptionalParams,\n ): Promise {\n return this.client.sendOperationRequest(\n { nextLink, options },\n listNextOperationSpec,\n );\n }\n}\n// Operation Specifications\nconst serializer = coreClient.createSerializer(Mappers, /* isXml */ false);\n\nconst deleteValueOperationSpec: coreClient.OperationSpec = {\n path: \"/subscriptions/{subscriptionId}/tagNames/{tagName}/tagValues/{tagValue}\",\n httpMethod: \"DELETE\",\n responses: {\n 200: {},\n 204: {},\n default: {\n bodyMapper: Mappers.CloudError,\n },\n },\n queryParameters: [Parameters.apiVersion],\n urlParameters: [\n Parameters.$host,\n Parameters.subscriptionId,\n Parameters.tagName,\n Parameters.tagValue,\n ],\n headerParameters: [Parameters.accept],\n serializer,\n};\nconst createOrUpdateValueOperationSpec: coreClient.OperationSpec = {\n path: \"/subscriptions/{subscriptionId}/tagNames/{tagName}/tagValues/{tagValue}\",\n httpMethod: \"PUT\",\n responses: {\n 200: {\n bodyMapper: Mappers.TagValue,\n },\n 201: {\n bodyMapper: Mappers.TagValue,\n },\n default: {\n bodyMapper: Mappers.CloudError,\n },\n },\n queryParameters: [Parameters.apiVersion],\n urlParameters: [\n Parameters.$host,\n Parameters.subscriptionId,\n Parameters.tagName,\n Parameters.tagValue,\n ],\n headerParameters: [Parameters.accept],\n serializer,\n};\nconst createOrUpdateOperationSpec: coreClient.OperationSpec = {\n path: \"/subscriptions/{subscriptionId}/tagNames/{tagName}\",\n httpMethod: \"PUT\",\n responses: {\n 200: {\n bodyMapper: Mappers.TagDetails,\n },\n 201: {\n bodyMapper: Mappers.TagDetails,\n },\n default: {\n bodyMapper: Mappers.CloudError,\n },\n },\n queryParameters: [Parameters.apiVersion],\n urlParameters: [\n Parameters.$host,\n Parameters.subscriptionId,\n Parameters.tagName,\n ],\n headerParameters: [Parameters.accept],\n serializer,\n};\nconst deleteOperationSpec: coreClient.OperationSpec = {\n path: \"/subscriptions/{subscriptionId}/tagNames/{tagName}\",\n httpMethod: \"DELETE\",\n responses: {\n 200: {},\n 204: {},\n default: {\n bodyMapper: Mappers.CloudError,\n },\n },\n queryParameters: [Parameters.apiVersion],\n urlParameters: [\n Parameters.$host,\n Parameters.subscriptionId,\n Parameters.tagName,\n ],\n headerParameters: [Parameters.accept],\n serializer,\n};\nconst listOperationSpec: coreClient.OperationSpec = {\n path: \"/subscriptions/{subscriptionId}/tagNames\",\n httpMethod: \"GET\",\n responses: {\n 200: {\n bodyMapper: Mappers.TagsListResult,\n },\n default: {\n bodyMapper: Mappers.CloudError,\n },\n },\n queryParameters: [Parameters.apiVersion],\n urlParameters: [Parameters.$host, Parameters.subscriptionId],\n headerParameters: [Parameters.accept],\n serializer,\n};\nconst createOrUpdateAtScopeOperationSpec: coreClient.OperationSpec = {\n path: \"/{scope}/providers/Microsoft.Resources/tags/default\",\n httpMethod: \"PUT\",\n responses: {\n 200: {\n bodyMapper: Mappers.TagsResource,\n },\n 201: {\n bodyMapper: Mappers.TagsResource,\n },\n 202: {\n bodyMapper: Mappers.TagsResource,\n },\n 204: {\n bodyMapper: Mappers.TagsResource,\n },\n default: {\n bodyMapper: Mappers.CloudError,\n },\n },\n requestBody: Parameters.parameters9,\n queryParameters: [Parameters.apiVersion],\n urlParameters: [Parameters.$host, Parameters.scope],\n headerParameters: [Parameters.accept, Parameters.contentType],\n mediaType: \"json\",\n serializer,\n};\nconst updateAtScopeOperationSpec: coreClient.OperationSpec = {\n path: \"/{scope}/providers/Microsoft.Resources/tags/default\",\n httpMethod: \"PATCH\",\n responses: {\n 200: {\n bodyMapper: Mappers.TagsResource,\n },\n 201: {\n bodyMapper: Mappers.TagsResource,\n },\n 202: {\n bodyMapper: Mappers.TagsResource,\n },\n 204: {\n bodyMapper: Mappers.TagsResource,\n },\n default: {\n bodyMapper: Mappers.CloudError,\n },\n },\n requestBody: Parameters.parameters10,\n queryParameters: [Parameters.apiVersion],\n urlParameters: [Parameters.$host, Parameters.scope],\n headerParameters: [Parameters.accept, Parameters.contentType],\n mediaType: \"json\",\n serializer,\n};\nconst getAtScopeOperationSpec: coreClient.OperationSpec = {\n path: \"/{scope}/providers/Microsoft.Resources/tags/default\",\n httpMethod: \"GET\",\n responses: {\n 200: {\n bodyMapper: Mappers.TagsResource,\n },\n default: {\n bodyMapper: Mappers.CloudError,\n },\n },\n queryParameters: [Parameters.apiVersion],\n urlParameters: [Parameters.$host, Parameters.scope],\n headerParameters: [Parameters.accept],\n serializer,\n};\nconst deleteAtScopeOperationSpec: coreClient.OperationSpec = {\n path: \"/{scope}/providers/Microsoft.Resources/tags/default\",\n httpMethod: \"DELETE\",\n responses: {\n 200: {},\n 201: {},\n 202: {},\n 204: {},\n default: {\n bodyMapper: Mappers.CloudError,\n },\n },\n queryParameters: [Parameters.apiVersion],\n urlParameters: [Parameters.$host, Parameters.scope],\n headerParameters: [Parameters.accept],\n serializer,\n};\nconst listNextOperationSpec: coreClient.OperationSpec = {\n path: \"{nextLink}\",\n httpMethod: \"GET\",\n responses: {\n 200: {\n bodyMapper: Mappers.TagsListResult,\n },\n default: {\n bodyMapper: Mappers.CloudError,\n },\n },\n urlParameters: [\n Parameters.$host,\n Parameters.nextLink,\n Parameters.subscriptionId,\n ],\n headerParameters: [Parameters.accept],\n serializer,\n};\n", "/*\n * Copyright (c) Microsoft Corporation.\n * Licensed under the MIT License.\n *\n * Code generated by Microsoft (R) AutoRest Code Generator.\n * Changes may cause incorrect behavior and will be lost if the code is regenerated.\n */\n\nimport { PagedAsyncIterableIterator, PageSettings } from \"@azure/core-paging\";\nimport { setContinuationToken } from \"../pagingHelper.js\";\nimport { DeploymentOperations } from \"../operationsInterfaces/index.js\";\nimport * as coreClient from \"@azure/core-client\";\nimport * as Mappers from \"../models/mappers.js\";\nimport * as Parameters from \"../models/parameters.js\";\nimport { ResourceManagementClient } from \"../resourceManagementClient.js\";\nimport {\n DeploymentOperation,\n DeploymentOperationsListAtScopeNextOptionalParams,\n DeploymentOperationsListAtScopeOptionalParams,\n DeploymentOperationsListAtScopeResponse,\n DeploymentOperationsListAtTenantScopeNextOptionalParams,\n DeploymentOperationsListAtTenantScopeOptionalParams,\n DeploymentOperationsListAtTenantScopeResponse,\n DeploymentOperationsListAtManagementGroupScopeNextOptionalParams,\n DeploymentOperationsListAtManagementGroupScopeOptionalParams,\n DeploymentOperationsListAtManagementGroupScopeResponse,\n DeploymentOperationsListAtSubscriptionScopeNextOptionalParams,\n DeploymentOperationsListAtSubscriptionScopeOptionalParams,\n DeploymentOperationsListAtSubscriptionScopeResponse,\n DeploymentOperationsListNextOptionalParams,\n DeploymentOperationsListOptionalParams,\n DeploymentOperationsListResponse,\n DeploymentOperationsGetAtScopeOptionalParams,\n DeploymentOperationsGetAtScopeResponse,\n DeploymentOperationsGetAtTenantScopeOptionalParams,\n DeploymentOperationsGetAtTenantScopeResponse,\n DeploymentOperationsGetAtManagementGroupScopeOptionalParams,\n DeploymentOperationsGetAtManagementGroupScopeResponse,\n DeploymentOperationsGetAtSubscriptionScopeOptionalParams,\n DeploymentOperationsGetAtSubscriptionScopeResponse,\n DeploymentOperationsGetOptionalParams,\n DeploymentOperationsGetResponse,\n DeploymentOperationsListAtScopeNextResponse,\n DeploymentOperationsListAtTenantScopeNextResponse,\n DeploymentOperationsListAtManagementGroupScopeNextResponse,\n DeploymentOperationsListAtSubscriptionScopeNextResponse,\n DeploymentOperationsListNextResponse,\n} from \"../models/index.js\";\n\n/// \n/** Class containing DeploymentOperations operations. */\nexport class DeploymentOperationsImpl implements DeploymentOperations {\n private readonly client: ResourceManagementClient;\n\n /**\n * Initialize a new instance of the class DeploymentOperations class.\n * @param client Reference to the service client\n */\n constructor(client: ResourceManagementClient) {\n this.client = client;\n }\n\n /**\n * Gets all deployments operations for a deployment.\n * @param scope The resource scope.\n * @param deploymentName The name of the deployment.\n * @param options The options parameters.\n */\n public listAtScope(\n scope: string,\n deploymentName: string,\n options?: DeploymentOperationsListAtScopeOptionalParams,\n ): PagedAsyncIterableIterator {\n const iter = this.listAtScopePagingAll(scope, deploymentName, options);\n return {\n next() {\n return iter.next();\n },\n [Symbol.asyncIterator]() {\n return this;\n },\n byPage: (settings?: PageSettings) => {\n if (settings?.maxPageSize) {\n throw new Error(\"maxPageSize is not supported by this operation.\");\n }\n return this.listAtScopePagingPage(\n scope,\n deploymentName,\n options,\n settings,\n );\n },\n };\n }\n\n private async *listAtScopePagingPage(\n scope: string,\n deploymentName: string,\n options?: DeploymentOperationsListAtScopeOptionalParams,\n settings?: PageSettings,\n ): AsyncIterableIterator {\n let result: DeploymentOperationsListAtScopeResponse;\n let continuationToken = settings?.continuationToken;\n if (!continuationToken) {\n result = await this._listAtScope(scope, deploymentName, options);\n let page = result.value || [];\n continuationToken = result.nextLink;\n setContinuationToken(page, continuationToken);\n yield page;\n }\n while (continuationToken) {\n result = await this._listAtScopeNext(\n scope,\n deploymentName,\n continuationToken,\n options,\n );\n continuationToken = result.nextLink;\n let page = result.value || [];\n setContinuationToken(page, continuationToken);\n yield page;\n }\n }\n\n private async *listAtScopePagingAll(\n scope: string,\n deploymentName: string,\n options?: DeploymentOperationsListAtScopeOptionalParams,\n ): AsyncIterableIterator {\n for await (const page of this.listAtScopePagingPage(\n scope,\n deploymentName,\n options,\n )) {\n yield* page;\n }\n }\n\n /**\n * Gets all deployments operations for a deployment.\n * @param deploymentName The name of the deployment.\n * @param options The options parameters.\n */\n public listAtTenantScope(\n deploymentName: string,\n options?: DeploymentOperationsListAtTenantScopeOptionalParams,\n ): PagedAsyncIterableIterator {\n const iter = this.listAtTenantScopePagingAll(deploymentName, options);\n return {\n next() {\n return iter.next();\n },\n [Symbol.asyncIterator]() {\n return this;\n },\n byPage: (settings?: PageSettings) => {\n if (settings?.maxPageSize) {\n throw new Error(\"maxPageSize is not supported by this operation.\");\n }\n return this.listAtTenantScopePagingPage(\n deploymentName,\n options,\n settings,\n );\n },\n };\n }\n\n private async *listAtTenantScopePagingPage(\n deploymentName: string,\n options?: DeploymentOperationsListAtTenantScopeOptionalParams,\n settings?: PageSettings,\n ): AsyncIterableIterator {\n let result: DeploymentOperationsListAtTenantScopeResponse;\n let continuationToken = settings?.continuationToken;\n if (!continuationToken) {\n result = await this._listAtTenantScope(deploymentName, options);\n let page = result.value || [];\n continuationToken = result.nextLink;\n setContinuationToken(page, continuationToken);\n yield page;\n }\n while (continuationToken) {\n result = await this._listAtTenantScopeNext(\n deploymentName,\n continuationToken,\n options,\n );\n continuationToken = result.nextLink;\n let page = result.value || [];\n setContinuationToken(page, continuationToken);\n yield page;\n }\n }\n\n private async *listAtTenantScopePagingAll(\n deploymentName: string,\n options?: DeploymentOperationsListAtTenantScopeOptionalParams,\n ): AsyncIterableIterator {\n for await (const page of this.listAtTenantScopePagingPage(\n deploymentName,\n options,\n )) {\n yield* page;\n }\n }\n\n /**\n * Gets all deployments operations for a deployment.\n * @param groupId The management group ID.\n * @param deploymentName The name of the deployment.\n * @param options The options parameters.\n */\n public listAtManagementGroupScope(\n groupId: string,\n deploymentName: string,\n options?: DeploymentOperationsListAtManagementGroupScopeOptionalParams,\n ): PagedAsyncIterableIterator {\n const iter = this.listAtManagementGroupScopePagingAll(\n groupId,\n deploymentName,\n options,\n );\n return {\n next() {\n return iter.next();\n },\n [Symbol.asyncIterator]() {\n return this;\n },\n byPage: (settings?: PageSettings) => {\n if (settings?.maxPageSize) {\n throw new Error(\"maxPageSize is not supported by this operation.\");\n }\n return this.listAtManagementGroupScopePagingPage(\n groupId,\n deploymentName,\n options,\n settings,\n );\n },\n };\n }\n\n private async *listAtManagementGroupScopePagingPage(\n groupId: string,\n deploymentName: string,\n options?: DeploymentOperationsListAtManagementGroupScopeOptionalParams,\n settings?: PageSettings,\n ): AsyncIterableIterator {\n let result: DeploymentOperationsListAtManagementGroupScopeResponse;\n let continuationToken = settings?.continuationToken;\n if (!continuationToken) {\n result = await this._listAtManagementGroupScope(\n groupId,\n deploymentName,\n options,\n );\n let page = result.value || [];\n continuationToken = result.nextLink;\n setContinuationToken(page, continuationToken);\n yield page;\n }\n while (continuationToken) {\n result = await this._listAtManagementGroupScopeNext(\n groupId,\n deploymentName,\n continuationToken,\n options,\n );\n continuationToken = result.nextLink;\n let page = result.value || [];\n setContinuationToken(page, continuationToken);\n yield page;\n }\n }\n\n private async *listAtManagementGroupScopePagingAll(\n groupId: string,\n deploymentName: string,\n options?: DeploymentOperationsListAtManagementGroupScopeOptionalParams,\n ): AsyncIterableIterator {\n for await (const page of this.listAtManagementGroupScopePagingPage(\n groupId,\n deploymentName,\n options,\n )) {\n yield* page;\n }\n }\n\n /**\n * Gets all deployments operations for a deployment.\n * @param deploymentName The name of the deployment.\n * @param options The options parameters.\n */\n public listAtSubscriptionScope(\n deploymentName: string,\n options?: DeploymentOperationsListAtSubscriptionScopeOptionalParams,\n ): PagedAsyncIterableIterator {\n const iter = this.listAtSubscriptionScopePagingAll(deploymentName, options);\n return {\n next() {\n return iter.next();\n },\n [Symbol.asyncIterator]() {\n return this;\n },\n byPage: (settings?: PageSettings) => {\n if (settings?.maxPageSize) {\n throw new Error(\"maxPageSize is not supported by this operation.\");\n }\n return this.listAtSubscriptionScopePagingPage(\n deploymentName,\n options,\n settings,\n );\n },\n };\n }\n\n private async *listAtSubscriptionScopePagingPage(\n deploymentName: string,\n options?: DeploymentOperationsListAtSubscriptionScopeOptionalParams,\n settings?: PageSettings,\n ): AsyncIterableIterator {\n let result: DeploymentOperationsListAtSubscriptionScopeResponse;\n let continuationToken = settings?.continuationToken;\n if (!continuationToken) {\n result = await this._listAtSubscriptionScope(deploymentName, options);\n let page = result.value || [];\n continuationToken = result.nextLink;\n setContinuationToken(page, continuationToken);\n yield page;\n }\n while (continuationToken) {\n result = await this._listAtSubscriptionScopeNext(\n deploymentName,\n continuationToken,\n options,\n );\n continuationToken = result.nextLink;\n let page = result.value || [];\n setContinuationToken(page, continuationToken);\n yield page;\n }\n }\n\n private async *listAtSubscriptionScopePagingAll(\n deploymentName: string,\n options?: DeploymentOperationsListAtSubscriptionScopeOptionalParams,\n ): AsyncIterableIterator {\n for await (const page of this.listAtSubscriptionScopePagingPage(\n deploymentName,\n options,\n )) {\n yield* page;\n }\n }\n\n /**\n * Gets all deployments operations for a deployment.\n * @param resourceGroupName The name of the resource group. The name is case insensitive.\n * @param deploymentName The name of the deployment.\n * @param options The options parameters.\n */\n public list(\n resourceGroupName: string,\n deploymentName: string,\n options?: DeploymentOperationsListOptionalParams,\n ): PagedAsyncIterableIterator {\n const iter = this.listPagingAll(resourceGroupName, deploymentName, options);\n return {\n next() {\n return iter.next();\n },\n [Symbol.asyncIterator]() {\n return this;\n },\n byPage: (settings?: PageSettings) => {\n if (settings?.maxPageSize) {\n throw new Error(\"maxPageSize is not supported by this operation.\");\n }\n return this.listPagingPage(\n resourceGroupName,\n deploymentName,\n options,\n settings,\n );\n },\n };\n }\n\n private async *listPagingPage(\n resourceGroupName: string,\n deploymentName: string,\n options?: DeploymentOperationsListOptionalParams,\n settings?: PageSettings,\n ): AsyncIterableIterator {\n let result: DeploymentOperationsListResponse;\n let continuationToken = settings?.continuationToken;\n if (!continuationToken) {\n result = await this._list(resourceGroupName, deploymentName, options);\n let page = result.value || [];\n continuationToken = result.nextLink;\n setContinuationToken(page, continuationToken);\n yield page;\n }\n while (continuationToken) {\n result = await this._listNext(\n resourceGroupName,\n deploymentName,\n continuationToken,\n options,\n );\n continuationToken = result.nextLink;\n let page = result.value || [];\n setContinuationToken(page, continuationToken);\n yield page;\n }\n }\n\n private async *listPagingAll(\n resourceGroupName: string,\n deploymentName: string,\n options?: DeploymentOperationsListOptionalParams,\n ): AsyncIterableIterator {\n for await (const page of this.listPagingPage(\n resourceGroupName,\n deploymentName,\n options,\n )) {\n yield* page;\n }\n }\n\n /**\n * Gets a deployments operation.\n * @param scope The resource scope.\n * @param deploymentName The name of the deployment.\n * @param operationId The ID of the operation to get.\n * @param options The options parameters.\n */\n getAtScope(\n scope: string,\n deploymentName: string,\n operationId: string,\n options?: DeploymentOperationsGetAtScopeOptionalParams,\n ): Promise {\n return this.client.sendOperationRequest(\n { scope, deploymentName, operationId, options },\n getAtScopeOperationSpec,\n );\n }\n\n /**\n * Gets all deployments operations for a deployment.\n * @param scope The resource scope.\n * @param deploymentName The name of the deployment.\n * @param options The options parameters.\n */\n private _listAtScope(\n scope: string,\n deploymentName: string,\n options?: DeploymentOperationsListAtScopeOptionalParams,\n ): Promise {\n return this.client.sendOperationRequest(\n { scope, deploymentName, options },\n listAtScopeOperationSpec,\n );\n }\n\n /**\n * Gets a deployments operation.\n * @param deploymentName The name of the deployment.\n * @param operationId The ID of the operation to get.\n * @param options The options parameters.\n */\n getAtTenantScope(\n deploymentName: string,\n operationId: string,\n options?: DeploymentOperationsGetAtTenantScopeOptionalParams,\n ): Promise {\n return this.client.sendOperationRequest(\n { deploymentName, operationId, options },\n getAtTenantScopeOperationSpec,\n );\n }\n\n /**\n * Gets all deployments operations for a deployment.\n * @param deploymentName The name of the deployment.\n * @param options The options parameters.\n */\n private _listAtTenantScope(\n deploymentName: string,\n options?: DeploymentOperationsListAtTenantScopeOptionalParams,\n ): Promise {\n return this.client.sendOperationRequest(\n { deploymentName, options },\n listAtTenantScopeOperationSpec,\n );\n }\n\n /**\n * Gets a deployments operation.\n * @param groupId The management group ID.\n * @param deploymentName The name of the deployment.\n * @param operationId The ID of the operation to get.\n * @param options The options parameters.\n */\n getAtManagementGroupScope(\n groupId: string,\n deploymentName: string,\n operationId: string,\n options?: DeploymentOperationsGetAtManagementGroupScopeOptionalParams,\n ): Promise {\n return this.client.sendOperationRequest(\n { groupId, deploymentName, operationId, options },\n getAtManagementGroupScopeOperationSpec,\n );\n }\n\n /**\n * Gets all deployments operations for a deployment.\n * @param groupId The management group ID.\n * @param deploymentName The name of the deployment.\n * @param options The options parameters.\n */\n private _listAtManagementGroupScope(\n groupId: string,\n deploymentName: string,\n options?: DeploymentOperationsListAtManagementGroupScopeOptionalParams,\n ): Promise {\n return this.client.sendOperationRequest(\n { groupId, deploymentName, options },\n listAtManagementGroupScopeOperationSpec,\n );\n }\n\n /**\n * Gets a deployments operation.\n * @param deploymentName The name of the deployment.\n * @param operationId The ID of the operation to get.\n * @param options The options parameters.\n */\n getAtSubscriptionScope(\n deploymentName: string,\n operationId: string,\n options?: DeploymentOperationsGetAtSubscriptionScopeOptionalParams,\n ): Promise {\n return this.client.sendOperationRequest(\n { deploymentName, operationId, options },\n getAtSubscriptionScopeOperationSpec,\n );\n }\n\n /**\n * Gets all deployments operations for a deployment.\n * @param deploymentName The name of the deployment.\n * @param options The options parameters.\n */\n private _listAtSubscriptionScope(\n deploymentName: string,\n options?: DeploymentOperationsListAtSubscriptionScopeOptionalParams,\n ): Promise {\n return this.client.sendOperationRequest(\n { deploymentName, options },\n listAtSubscriptionScopeOperationSpec,\n );\n }\n\n /**\n * Gets a deployments operation.\n * @param resourceGroupName The name of the resource group. The name is case insensitive.\n * @param deploymentName The name of the deployment.\n * @param operationId The ID of the operation to get.\n * @param options The options parameters.\n */\n get(\n resourceGroupName: string,\n deploymentName: string,\n operationId: string,\n options?: DeploymentOperationsGetOptionalParams,\n ): Promise {\n return this.client.sendOperationRequest(\n { resourceGroupName, deploymentName, operationId, options },\n getOperationSpec,\n );\n }\n\n /**\n * Gets all deployments operations for a deployment.\n * @param resourceGroupName The name of the resource group. The name is case insensitive.\n * @param deploymentName The name of the deployment.\n * @param options The options parameters.\n */\n private _list(\n resourceGroupName: string,\n deploymentName: string,\n options?: DeploymentOperationsListOptionalParams,\n ): Promise {\n return this.client.sendOperationRequest(\n { resourceGroupName, deploymentName, options },\n listOperationSpec,\n );\n }\n\n /**\n * ListAtScopeNext\n * @param scope The resource scope.\n * @param deploymentName The name of the deployment.\n * @param nextLink The nextLink from the previous successful call to the ListAtScope method.\n * @param options The options parameters.\n */\n private _listAtScopeNext(\n scope: string,\n deploymentName: string,\n nextLink: string,\n options?: DeploymentOperationsListAtScopeNextOptionalParams,\n ): Promise {\n return this.client.sendOperationRequest(\n { scope, deploymentName, nextLink, options },\n listAtScopeNextOperationSpec,\n );\n }\n\n /**\n * ListAtTenantScopeNext\n * @param deploymentName The name of the deployment.\n * @param nextLink The nextLink from the previous successful call to the ListAtTenantScope method.\n * @param options The options parameters.\n */\n private _listAtTenantScopeNext(\n deploymentName: string,\n nextLink: string,\n options?: DeploymentOperationsListAtTenantScopeNextOptionalParams,\n ): Promise {\n return this.client.sendOperationRequest(\n { deploymentName, nextLink, options },\n listAtTenantScopeNextOperationSpec,\n );\n }\n\n /**\n * ListAtManagementGroupScopeNext\n * @param groupId The management group ID.\n * @param deploymentName The name of the deployment.\n * @param nextLink The nextLink from the previous successful call to the ListAtManagementGroupScope\n * method.\n * @param options The options parameters.\n */\n private _listAtManagementGroupScopeNext(\n groupId: string,\n deploymentName: string,\n nextLink: string,\n options?: DeploymentOperationsListAtManagementGroupScopeNextOptionalParams,\n ): Promise {\n return this.client.sendOperationRequest(\n { groupId, deploymentName, nextLink, options },\n listAtManagementGroupScopeNextOperationSpec,\n );\n }\n\n /**\n * ListAtSubscriptionScopeNext\n * @param deploymentName The name of the deployment.\n * @param nextLink The nextLink from the previous successful call to the ListAtSubscriptionScope\n * method.\n * @param options The options parameters.\n */\n private _listAtSubscriptionScopeNext(\n deploymentName: string,\n nextLink: string,\n options?: DeploymentOperationsListAtSubscriptionScopeNextOptionalParams,\n ): Promise {\n return this.client.sendOperationRequest(\n { deploymentName, nextLink, options },\n listAtSubscriptionScopeNextOperationSpec,\n );\n }\n\n /**\n * ListNext\n * @param resourceGroupName The name of the resource group. The name is case insensitive.\n * @param deploymentName The name of the deployment.\n * @param nextLink The nextLink from the previous successful call to the List method.\n * @param options The options parameters.\n */\n private _listNext(\n resourceGroupName: string,\n deploymentName: string,\n nextLink: string,\n options?: DeploymentOperationsListNextOptionalParams,\n ): Promise {\n return this.client.sendOperationRequest(\n { resourceGroupName, deploymentName, nextLink, options },\n listNextOperationSpec,\n );\n }\n}\n// Operation Specifications\nconst serializer = coreClient.createSerializer(Mappers, /* isXml */ false);\n\nconst getAtScopeOperationSpec: coreClient.OperationSpec = {\n path: \"/{scope}/providers/Microsoft.Resources/deployments/{deploymentName}/operations/{operationId}\",\n httpMethod: \"GET\",\n responses: {\n 200: {\n bodyMapper: Mappers.DeploymentOperation,\n },\n default: {\n bodyMapper: Mappers.CloudError,\n },\n },\n queryParameters: [Parameters.apiVersion],\n urlParameters: [\n Parameters.$host,\n Parameters.scope,\n Parameters.deploymentName,\n Parameters.operationId,\n ],\n headerParameters: [Parameters.accept],\n serializer,\n};\nconst listAtScopeOperationSpec: coreClient.OperationSpec = {\n path: \"/{scope}/providers/Microsoft.Resources/deployments/{deploymentName}/operations\",\n httpMethod: \"GET\",\n responses: {\n 200: {\n bodyMapper: Mappers.DeploymentOperationsListResult,\n },\n default: {\n bodyMapper: Mappers.CloudError,\n },\n },\n queryParameters: [Parameters.apiVersion, Parameters.top],\n urlParameters: [\n Parameters.$host,\n Parameters.scope,\n Parameters.deploymentName,\n ],\n headerParameters: [Parameters.accept],\n serializer,\n};\nconst getAtTenantScopeOperationSpec: coreClient.OperationSpec = {\n path: \"/providers/Microsoft.Resources/deployments/{deploymentName}/operations/{operationId}\",\n httpMethod: \"GET\",\n responses: {\n 200: {\n bodyMapper: Mappers.DeploymentOperation,\n },\n default: {\n bodyMapper: Mappers.CloudError,\n },\n },\n queryParameters: [Parameters.apiVersion],\n urlParameters: [\n Parameters.$host,\n Parameters.deploymentName,\n Parameters.operationId,\n ],\n headerParameters: [Parameters.accept],\n serializer,\n};\nconst listAtTenantScopeOperationSpec: coreClient.OperationSpec = {\n path: \"/providers/Microsoft.Resources/deployments/{deploymentName}/operations\",\n httpMethod: \"GET\",\n responses: {\n 200: {\n bodyMapper: Mappers.DeploymentOperationsListResult,\n },\n default: {\n bodyMapper: Mappers.CloudError,\n },\n },\n queryParameters: [Parameters.apiVersion, Parameters.top],\n urlParameters: [Parameters.$host, Parameters.deploymentName],\n headerParameters: [Parameters.accept],\n serializer,\n};\nconst getAtManagementGroupScopeOperationSpec: coreClient.OperationSpec = {\n path: \"/providers/Microsoft.Management/managementGroups/{groupId}/providers/Microsoft.Resources/deployments/{deploymentName}/operations/{operationId}\",\n httpMethod: \"GET\",\n responses: {\n 200: {\n bodyMapper: Mappers.DeploymentOperation,\n },\n default: {\n bodyMapper: Mappers.CloudError,\n },\n },\n queryParameters: [Parameters.apiVersion],\n urlParameters: [\n Parameters.$host,\n Parameters.deploymentName,\n Parameters.groupId,\n Parameters.operationId,\n ],\n headerParameters: [Parameters.accept],\n serializer,\n};\nconst listAtManagementGroupScopeOperationSpec: coreClient.OperationSpec = {\n path: \"/providers/Microsoft.Management/managementGroups/{groupId}/providers/Microsoft.Resources/deployments/{deploymentName}/operations\",\n httpMethod: \"GET\",\n responses: {\n 200: {\n bodyMapper: Mappers.DeploymentOperationsListResult,\n },\n default: {\n bodyMapper: Mappers.CloudError,\n },\n },\n queryParameters: [Parameters.apiVersion, Parameters.top],\n urlParameters: [\n Parameters.$host,\n Parameters.deploymentName,\n Parameters.groupId,\n ],\n headerParameters: [Parameters.accept],\n serializer,\n};\nconst getAtSubscriptionScopeOperationSpec: coreClient.OperationSpec = {\n path: \"/subscriptions/{subscriptionId}/providers/Microsoft.Resources/deployments/{deploymentName}/operations/{operationId}\",\n httpMethod: \"GET\",\n responses: {\n 200: {\n bodyMapper: Mappers.DeploymentOperation,\n },\n default: {\n bodyMapper: Mappers.CloudError,\n },\n },\n queryParameters: [Parameters.apiVersion],\n urlParameters: [\n Parameters.$host,\n Parameters.deploymentName,\n Parameters.subscriptionId,\n Parameters.operationId,\n ],\n headerParameters: [Parameters.accept],\n serializer,\n};\nconst listAtSubscriptionScopeOperationSpec: coreClient.OperationSpec = {\n path: \"/subscriptions/{subscriptionId}/providers/Microsoft.Resources/deployments/{deploymentName}/operations\",\n httpMethod: \"GET\",\n responses: {\n 200: {\n bodyMapper: Mappers.DeploymentOperationsListResult,\n },\n default: {\n bodyMapper: Mappers.CloudError,\n },\n },\n queryParameters: [Parameters.apiVersion, Parameters.top],\n urlParameters: [\n Parameters.$host,\n Parameters.deploymentName,\n Parameters.subscriptionId,\n ],\n headerParameters: [Parameters.accept],\n serializer,\n};\nconst getOperationSpec: coreClient.OperationSpec = {\n path: \"/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/deployments/{deploymentName}/operations/{operationId}\",\n httpMethod: \"GET\",\n responses: {\n 200: {\n bodyMapper: Mappers.DeploymentOperation,\n },\n default: {\n bodyMapper: Mappers.CloudError,\n },\n },\n queryParameters: [Parameters.apiVersion],\n urlParameters: [\n Parameters.$host,\n Parameters.deploymentName,\n Parameters.subscriptionId,\n Parameters.resourceGroupName,\n Parameters.operationId,\n ],\n headerParameters: [Parameters.accept],\n serializer,\n};\nconst listOperationSpec: coreClient.OperationSpec = {\n path: \"/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/deployments/{deploymentName}/operations\",\n httpMethod: \"GET\",\n responses: {\n 200: {\n bodyMapper: Mappers.DeploymentOperationsListResult,\n },\n default: {\n bodyMapper: Mappers.CloudError,\n },\n },\n queryParameters: [Parameters.apiVersion, Parameters.top],\n urlParameters: [\n Parameters.$host,\n Parameters.deploymentName,\n Parameters.subscriptionId,\n Parameters.resourceGroupName,\n ],\n headerParameters: [Parameters.accept],\n serializer,\n};\nconst listAtScopeNextOperationSpec: coreClient.OperationSpec = {\n path: \"{nextLink}\",\n httpMethod: \"GET\",\n responses: {\n 200: {\n bodyMapper: Mappers.DeploymentOperationsListResult,\n },\n default: {\n bodyMapper: Mappers.CloudError,\n },\n },\n urlParameters: [\n Parameters.$host,\n Parameters.nextLink,\n Parameters.scope,\n Parameters.deploymentName,\n ],\n headerParameters: [Parameters.accept],\n serializer,\n};\nconst listAtTenantScopeNextOperationSpec: coreClient.OperationSpec = {\n path: \"{nextLink}\",\n httpMethod: \"GET\",\n responses: {\n 200: {\n bodyMapper: Mappers.DeploymentOperationsListResult,\n },\n default: {\n bodyMapper: Mappers.CloudError,\n },\n },\n urlParameters: [\n Parameters.$host,\n Parameters.nextLink,\n Parameters.deploymentName,\n ],\n headerParameters: [Parameters.accept],\n serializer,\n};\nconst listAtManagementGroupScopeNextOperationSpec: coreClient.OperationSpec = {\n path: \"{nextLink}\",\n httpMethod: \"GET\",\n responses: {\n 200: {\n bodyMapper: Mappers.DeploymentOperationsListResult,\n },\n default: {\n bodyMapper: Mappers.CloudError,\n },\n },\n urlParameters: [\n Parameters.$host,\n Parameters.nextLink,\n Parameters.deploymentName,\n Parameters.groupId,\n ],\n headerParameters: [Parameters.accept],\n serializer,\n};\nconst listAtSubscriptionScopeNextOperationSpec: coreClient.OperationSpec = {\n path: \"{nextLink}\",\n httpMethod: \"GET\",\n responses: {\n 200: {\n bodyMapper: Mappers.DeploymentOperationsListResult,\n },\n default: {\n bodyMapper: Mappers.CloudError,\n },\n },\n urlParameters: [\n Parameters.$host,\n Parameters.nextLink,\n Parameters.deploymentName,\n Parameters.subscriptionId,\n ],\n headerParameters: [Parameters.accept],\n serializer,\n};\nconst listNextOperationSpec: coreClient.OperationSpec = {\n path: \"{nextLink}\",\n httpMethod: \"GET\",\n responses: {\n 200: {\n bodyMapper: Mappers.DeploymentOperationsListResult,\n },\n default: {\n bodyMapper: Mappers.CloudError,\n },\n },\n urlParameters: [\n Parameters.$host,\n Parameters.nextLink,\n Parameters.deploymentName,\n Parameters.subscriptionId,\n Parameters.resourceGroupName,\n ],\n headerParameters: [Parameters.accept],\n serializer,\n};\n", "/*\n * Copyright (c) Microsoft Corporation.\n * Licensed under the MIT License.\n *\n * Code generated by Microsoft (R) AutoRest Code Generator.\n * Changes may cause incorrect behavior and will be lost if the code is regenerated.\n */\n\nimport * as coreClient from \"@azure/core-client\";\nimport * as coreRestPipeline from \"@azure/core-rest-pipeline\";\nimport {\n PipelineRequest,\n PipelineResponse,\n SendRequest,\n} from \"@azure/core-rest-pipeline\";\nimport * as coreAuth from \"@azure/core-auth\";\nimport {\n OperationsImpl,\n DeploymentsImpl,\n ProvidersImpl,\n ProviderResourceTypesImpl,\n ResourcesImpl,\n ResourceGroupsImpl,\n TagsOperationsImpl,\n DeploymentOperationsImpl,\n} from \"./operations/index.js\";\nimport {\n Operations,\n Deployments,\n Providers,\n ProviderResourceTypes,\n Resources,\n ResourceGroups,\n TagsOperations,\n DeploymentOperations,\n} from \"./operationsInterfaces/index.js\";\nimport { ResourceManagementClientOptionalParams } from \"./models/index.js\";\n\nexport class ResourceManagementClient extends coreClient.ServiceClient {\n $host: string;\n apiVersion: string;\n subscriptionId?: string;\n\n /**\n * Initializes a new instance of the ResourceManagementClient class.\n * @param credentials Subscription credentials which uniquely identify client subscription.\n * @param subscriptionId The Microsoft Azure subscription ID.\n * @param options The parameter options\n */\n constructor(\n credentials: coreAuth.TokenCredential,\n subscriptionId: string,\n options?: ResourceManagementClientOptionalParams,\n );\n constructor(\n credentials: coreAuth.TokenCredential,\n options?: ResourceManagementClientOptionalParams,\n );\n constructor(\n credentials: coreAuth.TokenCredential,\n subscriptionIdOrOptions?: ResourceManagementClientOptionalParams | string,\n options?: ResourceManagementClientOptionalParams,\n ) {\n if (credentials === undefined) {\n throw new Error(\"'credentials' cannot be null\");\n }\n\n let subscriptionId: string | undefined;\n\n if (typeof subscriptionIdOrOptions === \"string\") {\n subscriptionId = subscriptionIdOrOptions;\n } else if (typeof subscriptionIdOrOptions === \"object\") {\n options = subscriptionIdOrOptions;\n }\n\n // Initializing default values for options\n if (!options) {\n options = {};\n }\n const defaults: ResourceManagementClientOptionalParams = {\n requestContentType: \"application/json; charset=utf-8\",\n credential: credentials,\n };\n\n const packageDetails = `azsdk-js-arm-resources/6.0.0`;\n const userAgentPrefix =\n options.userAgentOptions && options.userAgentOptions.userAgentPrefix\n ? `${options.userAgentOptions.userAgentPrefix} ${packageDetails}`\n : `${packageDetails}`;\n\n const optionsWithDefaults = {\n ...defaults,\n ...options,\n userAgentOptions: {\n userAgentPrefix,\n },\n endpoint:\n options.endpoint ?? options.baseUri ?? \"https://management.azure.com\",\n };\n super(optionsWithDefaults);\n\n let bearerTokenAuthenticationPolicyFound: boolean = false;\n if (options?.pipeline && options.pipeline.getOrderedPolicies().length > 0) {\n const pipelinePolicies: coreRestPipeline.PipelinePolicy[] =\n options.pipeline.getOrderedPolicies();\n bearerTokenAuthenticationPolicyFound = pipelinePolicies.some(\n (pipelinePolicy) =>\n pipelinePolicy.name ===\n coreRestPipeline.bearerTokenAuthenticationPolicyName,\n );\n }\n if (\n !options ||\n !options.pipeline ||\n options.pipeline.getOrderedPolicies().length == 0 ||\n !bearerTokenAuthenticationPolicyFound\n ) {\n this.pipeline.removePolicy({\n name: coreRestPipeline.bearerTokenAuthenticationPolicyName,\n });\n this.pipeline.addPolicy(\n coreRestPipeline.bearerTokenAuthenticationPolicy({\n credential: credentials,\n scopes:\n optionsWithDefaults.credentialScopes ??\n `${optionsWithDefaults.endpoint}/.default`,\n challengeCallbacks: {\n authorizeRequestOnChallenge:\n coreClient.authorizeRequestOnClaimChallenge,\n },\n }),\n );\n }\n // Parameter assignments\n this.subscriptionId = subscriptionId;\n\n // Assigning values to Constant parameters\n this.$host = options.$host || \"https://management.azure.com\";\n this.apiVersion = options.apiVersion || \"2024-11-01\";\n this.operations = new OperationsImpl(this);\n this.deployments = new DeploymentsImpl(this);\n this.providers = new ProvidersImpl(this);\n this.providerResourceTypes = new ProviderResourceTypesImpl(this);\n this.resources = new ResourcesImpl(this);\n this.resourceGroups = new ResourceGroupsImpl(this);\n this.tagsOperations = new TagsOperationsImpl(this);\n this.deploymentOperations = new DeploymentOperationsImpl(this);\n this.addCustomApiVersionPolicy(options.apiVersion);\n }\n\n /** A function that adds a policy that sets the api-version (or equivalent) to reflect the library version. */\n private addCustomApiVersionPolicy(apiVersion?: string) {\n if (!apiVersion) {\n return;\n }\n const apiVersionPolicy = {\n name: \"CustomApiVersionPolicy\",\n async sendRequest(\n request: PipelineRequest,\n next: SendRequest,\n ): Promise {\n const param = request.url.split(\"?\");\n if (param.length > 1) {\n const newParams = param[1].split(\"&\").map((item) => {\n if (item.indexOf(\"api-version\") > -1) {\n return \"api-version=\" + apiVersion;\n } else {\n return item;\n }\n });\n request.url = param[0] + \"?\" + newParams.join(\"&\");\n }\n return next(request);\n },\n };\n this.pipeline.addPolicy(apiVersionPolicy);\n }\n\n operations: Operations;\n deployments: Deployments;\n providers: Providers;\n providerResourceTypes: ProviderResourceTypes;\n resources: Resources;\n resourceGroups: ResourceGroups;\n tagsOperations: TagsOperations;\n deploymentOperations: DeploymentOperations;\n}\n", "// Copyright (c) Microsoft Corporation.\r\n// Licensed under the MIT License.\r\nimport { ResourceManagementClient } from \"@azure/arm-resources\";\r\nimport { DeploymentStacksClient } from \"@azure/arm-resourcesdeploymentstacks\";\r\nimport {\r\n ChainedTokenCredential,\r\n EnvironmentCredential,\r\n AzureCliCredential,\r\n AzurePowerShellCredential,\r\n TokenCredential,\r\n} from \"@azure/identity\";\r\nimport { AdditionalPolicyConfig } from \"@azure/core-client\";\r\nimport { debug, isDebug } from \"@actions/core\";\r\n\r\nimport { ActionConfig } from \"../config\";\r\n\r\nconst userAgentPrefix = \"gh-azure-bicep-deploy\";\r\nconst dummySubscriptionId = \"00000000-0000-0000-0000-000000000000\";\r\nconst endpoints = {\r\n azureCloud: \"https://management.azure.com\",\r\n azureChinaCloud: \"https://management.chinacloudapi.cn\",\r\n azureGermanCloud: \"https://management.microsoftazure.de\",\r\n azureUSGovernment: \"https://management.usgovcloudapi.net\",\r\n};\r\n\r\nexport function createDeploymentClient(\r\n config: ActionConfig,\r\n subscriptionId?: string,\r\n tenantId?: string,\r\n): ResourceManagementClient {\r\n return new ResourceManagementClient(\r\n getCredential(tenantId),\r\n // Use a dummy subscription ID for above-subscription scope operations\r\n subscriptionId ?? dummySubscriptionId,\r\n {\r\n userAgentOptions: {\r\n userAgentPrefix: userAgentPrefix,\r\n },\r\n additionalPolicies: [debugLoggingPolicy],\r\n // Use a recent API version to take advantage of error improvements\r\n apiVersion: \"2024-03-01\",\r\n endpoint: endpoints[config.environment],\r\n },\r\n );\r\n}\r\n\r\nexport function createStacksClient(\r\n config: ActionConfig,\r\n subscriptionId?: string,\r\n tenantId?: string,\r\n): DeploymentStacksClient {\r\n return new DeploymentStacksClient(\r\n getCredential(tenantId),\r\n // Use a dummy subscription ID for above-subscription scope operations\r\n subscriptionId ?? dummySubscriptionId,\r\n {\r\n userAgentOptions: {\r\n userAgentPrefix: userAgentPrefix,\r\n },\r\n additionalPolicies: [debugLoggingPolicy],\r\n endpoint: endpoints[config.environment],\r\n },\r\n );\r\n}\r\n\r\n// Log request + response bodies to GitHub Actions debug output if enabled\r\nconst debugLoggingPolicy: AdditionalPolicyConfig = {\r\n position: \"perCall\",\r\n policy: {\r\n name: \"debugLoggingPolicy\",\r\n async sendRequest(request, next) {\r\n if (isDebug()) {\r\n debug(`Request: ${request.method} ${request.url}`);\r\n if (request.body) {\r\n const parsed = JSON.parse(request.body.toString());\r\n debug(`Body: ${JSON.stringify(parsed, null, 2)}`);\r\n }\r\n }\r\n\r\n const response = await next(request);\r\n\r\n if (isDebug()) {\r\n debug(`Response: ${response.status}`);\r\n if (response.bodyAsText) {\r\n const parsed = JSON.parse(response.bodyAsText);\r\n debug(`Body: ${JSON.stringify(parsed, null, 2)}`);\r\n }\r\n\r\n const correlationId = response.headers.get(\r\n \"x-ms-correlation-request-id\",\r\n );\r\n debug(`CorrelationId: ${correlationId}`);\r\n\r\n const activityId = response.headers.get(\"x-ms-request-id\");\r\n debug(`ActivityId: ${activityId}`);\r\n }\r\n\r\n return response;\r\n },\r\n },\r\n};\r\n\r\nfunction getCredential(tenantId?: string): TokenCredential {\r\n return new ChainedTokenCredential(\r\n new EnvironmentCredential(),\r\n new AzureCliCredential({ tenantId }),\r\n new AzurePowerShellCredential({ tenantId }),\r\n );\r\n}\r\n", "// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\n/**\n * Current version of the `@azure/identity` package.\n */\nexport const SDK_VERSION = `4.10.2`;\n\n/**\n * The default client ID for authentication\n * @internal\n */\n// TODO: temporary - this is the Azure CLI clientID - we'll replace it when\n// Developer Sign On application is available\n// https://github.com/Azure/azure-sdk-for-net/blob/main/sdk/identity/Azure.Identity/src/Constants.cs#L9\nexport const DeveloperSignOnClientId = \"04b07795-8ddb-461a-bbee-02f9e1bf7b46\";\n\n/**\n * The default tenant for authentication\n * @internal\n */\nexport const DefaultTenantId = \"common\";\n\n/**\n * A list of known Azure authority hosts\n */\nexport enum AzureAuthorityHosts {\n /**\n * China-based Azure Authority Host\n */\n AzureChina = \"https://login.chinacloudapi.cn\",\n /**\n * Germany-based Azure Authority Host\n *\n * @deprecated Microsoft Cloud Germany was closed on October 29th, 2021.\n *\n * */\n AzureGermany = \"https://login.microsoftonline.de\",\n /**\n * US Government Azure Authority Host\n */\n AzureGovernment = \"https://login.microsoftonline.us\",\n /**\n * Public Cloud Azure Authority Host\n */\n AzurePublicCloud = \"https://login.microsoftonline.com\",\n}\n\n/**\n * @internal\n * The default authority host.\n */\nexport const DefaultAuthorityHost = AzureAuthorityHosts.AzurePublicCloud;\n\n/**\n * @internal\n * The default environment host for Azure Public Cloud\n */\nexport const DefaultAuthority = \"login.microsoftonline.com\";\n\n/**\n * @internal\n * Allow acquiring tokens for any tenant for multi-tentant auth.\n */\nexport const ALL_TENANTS: string[] = [\"*\"];\n\n/**\n * @internal\n */\nexport const CACHE_CAE_SUFFIX = \"cae\";\n\n/**\n * @internal\n */\nexport const CACHE_NON_CAE_SUFFIX = \"nocae\";\n\n/**\n * @internal\n *\n * The default name for the cache persistence plugin.\n * Matches the constant defined in the cache persistence package.\n */\nexport const DEFAULT_TOKEN_CACHE_NAME = \"msal.cache\";\n", "// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type * as msalNode from \"@azure/msal-node\";\n\nimport {\n CACHE_CAE_SUFFIX,\n CACHE_NON_CAE_SUFFIX,\n DEFAULT_TOKEN_CACHE_NAME,\n} from \"../../constants.js\";\n\nimport type { MsalClientOptions } from \"./msalClient.js\";\nimport type { NativeBrokerPluginControl } from \"../../plugins/provider.js\";\nimport type { TokenCachePersistenceOptions } from \"./tokenCachePersistenceOptions.js\";\n\n/**\n * Configuration for the plugins used by the MSAL node client.\n */\nexport interface PluginConfiguration {\n /**\n * Configuration for the cache plugin.\n */\n cache: {\n /**\n * The non-CAE cache plugin handler.\n */\n cachePlugin?: Promise;\n /**\n * The CAE cache plugin handler - persisted to a different file.\n */\n cachePluginCae?: Promise;\n };\n /**\n * Configuration for the broker plugin.\n */\n broker: {\n /**\n * True if the broker plugin is enabled and available. False otherwise.\n *\n * It is a bug if this is true and the broker plugin is not available.\n */\n isEnabled: boolean;\n /**\n * If true, MSA account will be passed through, required for WAM authentication.\n */\n enableMsaPassthrough: boolean;\n /**\n * The parent window handle for the broker.\n */\n parentWindowHandle?: Uint8Array;\n /**\n * The native broker plugin handler.\n */\n nativeBrokerPlugin?: msalNode.INativeBrokerPlugin;\n /**\n * If set to true, the credential will attempt to use the default broker account for authentication before falling back to interactive authentication. Default is set to false.\n */\n useDefaultBrokerAccount?: boolean;\n };\n}\n\n/**\n * The current persistence provider, undefined by default.\n * @internal\n */\nexport let persistenceProvider:\n | ((options?: TokenCachePersistenceOptions) => Promise)\n | undefined = undefined;\n\n/**\n * An object that allows setting the persistence provider.\n * @internal\n */\nexport const msalNodeFlowCacheControl = {\n setPersistence(pluginProvider: Exclude): void {\n persistenceProvider = pluginProvider;\n },\n};\n\n/**\n * The current native broker provider, undefined by default.\n * @internal\n */\nexport let nativeBrokerInfo:\n | {\n broker: msalNode.INativeBrokerPlugin;\n }\n | undefined = undefined;\n\nexport function hasNativeBroker(): boolean {\n return nativeBrokerInfo !== undefined;\n}\n\n/**\n * An object that allows setting the native broker provider.\n * @internal\n */\nexport const msalNodeFlowNativeBrokerControl: NativeBrokerPluginControl = {\n setNativeBroker(broker): void {\n nativeBrokerInfo = {\n broker,\n };\n },\n};\n\n/**\n * Configures plugins, validating that required plugins are available and enabled.\n *\n * Does not create the plugins themselves, but rather returns the configuration that will be used to create them.\n *\n * @param options - options for creating the MSAL client\n * @returns plugin configuration\n */\nfunction generatePluginConfiguration(options: MsalClientOptions): PluginConfiguration {\n const config: PluginConfiguration = {\n cache: {},\n broker: {\n isEnabled: options.brokerOptions?.enabled ?? false,\n enableMsaPassthrough: options.brokerOptions?.legacyEnableMsaPassthrough ?? false,\n parentWindowHandle: options.brokerOptions?.parentWindowHandle,\n },\n };\n\n if (options.tokenCachePersistenceOptions?.enabled) {\n if (persistenceProvider === undefined) {\n throw new Error(\n [\n \"Persistent token caching was requested, but no persistence provider was configured.\",\n \"You must install the identity-cache-persistence plugin package (`npm install --save @azure/identity-cache-persistence`)\",\n \"and enable it by importing `useIdentityPlugin` from `@azure/identity` and calling\",\n \"`useIdentityPlugin(cachePersistencePlugin)` before using `tokenCachePersistenceOptions`.\",\n ].join(\" \"),\n );\n }\n\n const cacheBaseName = options.tokenCachePersistenceOptions.name || DEFAULT_TOKEN_CACHE_NAME;\n config.cache.cachePlugin = persistenceProvider({\n name: `${cacheBaseName}.${CACHE_NON_CAE_SUFFIX}`,\n ...options.tokenCachePersistenceOptions,\n });\n config.cache.cachePluginCae = persistenceProvider({\n name: `${cacheBaseName}.${CACHE_CAE_SUFFIX}`,\n ...options.tokenCachePersistenceOptions,\n });\n }\n\n if (options.brokerOptions?.enabled) {\n if (nativeBrokerInfo === undefined) {\n throw new Error(\n [\n \"Broker for WAM was requested to be enabled, but no native broker was configured.\",\n \"You must install the identity-broker plugin package (`npm install --save @azure/identity-broker`)\",\n \"and enable it by importing `useIdentityPlugin` from `@azure/identity` and calling\",\n \"`useIdentityPlugin(createNativeBrokerPlugin())` before using `enableBroker`.\",\n ].join(\" \"),\n );\n }\n config.broker.nativeBrokerPlugin = nativeBrokerInfo!.broker;\n }\n\n return config;\n}\n\n/**\n * Wraps generatePluginConfiguration as a writeable property for test stubbing purposes.\n */\nexport const msalPlugins = {\n generatePluginConfiguration,\n};\n", "// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { AzureLogger } from \"@azure/logger\";\nimport { createClientLogger } from \"@azure/logger\";\n\n/**\n * The AzureLogger used for all clients within the identity package\n */\nexport const logger = createClientLogger(\"identity\");\n\ninterface EnvironmentAccumulator {\n missing: string[];\n assigned: string[];\n}\n\n/**\n * Separates a list of environment variable names into a plain object with two arrays: an array of missing environment variables and another array with assigned environment variables.\n * @param supportedEnvVars - List of environment variable names\n */\nexport function processEnvVars(supportedEnvVars: string[]): EnvironmentAccumulator {\n return supportedEnvVars.reduce(\n (acc: EnvironmentAccumulator, envVariable: string) => {\n if (process.env[envVariable]) {\n acc.assigned.push(envVariable);\n } else {\n acc.missing.push(envVariable);\n }\n return acc;\n },\n { missing: [], assigned: [] },\n );\n}\n\n/**\n * Based on a given list of environment variable names,\n * logs the environment variables currently assigned during the usage of a credential that goes by the given name.\n * @param credentialName - Name of the credential in use\n * @param supportedEnvVars - List of environment variables supported by that credential\n */\nexport function logEnvVars(credentialName: string, supportedEnvVars: string[]): void {\n const { assigned } = processEnvVars(supportedEnvVars);\n logger.info(\n `${credentialName} => Found the following environment variables: ${assigned.join(\", \")}`,\n );\n}\n\n/**\n * Formatting the success event on the credentials\n */\nexport function formatSuccess(scope: string | string[]): string {\n return `SUCCESS. Scopes: ${Array.isArray(scope) ? scope.join(\", \") : scope}.`;\n}\n\n/**\n * Formatting the success event on the credentials\n */\nexport function formatError(scope: string | string[] | undefined, error: Error | string): string {\n let message = \"ERROR.\";\n if (scope?.length) {\n message += ` Scopes: ${Array.isArray(scope) ? scope.join(\", \") : scope}.`;\n }\n return `${message} Error message: ${typeof error === \"string\" ? error : error.message}.`;\n}\n\n/**\n * A CredentialLoggerInstance is a logger properly formatted to work in a credential's constructor, and its methods.\n */\nexport interface CredentialLoggerInstance {\n title: string;\n fullTitle: string;\n info(message: string): void;\n warning(message: string): void;\n verbose(message: string): void;\n error(err: string): void;\n}\n\n/**\n * Generates a CredentialLoggerInstance.\n *\n * It logs with the format:\n *\n * `[title] => [message]`\n *\n */\nexport function credentialLoggerInstance(\n title: string,\n parent?: CredentialLoggerInstance,\n log: AzureLogger = logger,\n): CredentialLoggerInstance {\n const fullTitle = parent ? `${parent.fullTitle} ${title}` : title;\n\n function info(message: string): void {\n log.info(`${fullTitle} =>`, message);\n }\n\n function warning(message: string): void {\n log.warning(`${fullTitle} =>`, message);\n }\n\n function verbose(message: string): void {\n log.verbose(`${fullTitle} =>`, message);\n }\n\n function error(message: string): void {\n log.error(`${fullTitle} =>`, message);\n }\n\n return {\n title,\n fullTitle,\n info,\n warning,\n verbose,\n error,\n };\n}\n\n/**\n * A CredentialLogger is a logger declared at the credential's constructor, and used at any point in the credential.\n * It has all the properties of a CredentialLoggerInstance, plus other logger instances, one per method.\n */\nexport interface CredentialLogger extends CredentialLoggerInstance {\n parent: AzureLogger;\n getToken: CredentialLoggerInstance;\n}\n\n/**\n * Generates a CredentialLogger, which is a logger declared at the credential's constructor, and used at any point in the credential.\n * It has all the properties of a CredentialLoggerInstance, plus other logger instances, one per method.\n *\n * It logs with the format:\n *\n * `[title] => [message]`\n * `[title] => getToken() => [message]`\n *\n */\nexport function credentialLogger(title: string, log: AzureLogger = logger): CredentialLogger {\n const credLogger = credentialLoggerInstance(title, undefined, log);\n return {\n ...credLogger,\n parent: log,\n getToken: credentialLoggerInstance(\"=> getToken()\", credLogger, log),\n };\n}\n", "// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { GetTokenOptions } from \"@azure/core-auth\";\n\n/**\n * See the official documentation for more details:\n *\n * https://learn.microsoft.com/azure/active-directory/develop/v1-protocols-oauth-code#error-response-1\n *\n * NOTE: This documentation is for v1 OAuth support but the same error\n * response details still apply to v2.\n */\nexport interface ErrorResponse {\n /**\n * The string identifier for the error.\n */\n error: string;\n\n /**\n * The error's description.\n */\n errorDescription: string;\n\n /**\n * An array of codes pertaining to the error(s) that occurred.\n */\n errorCodes?: number[];\n\n /**\n * The timestamp at which the error occurred.\n */\n timestamp?: string;\n\n /**\n * The trace identifier for this error occurrence.\n */\n traceId?: string;\n\n /**\n * The correlation ID to be used for tracking the source of the error.\n */\n correlationId?: string;\n}\n\n/**\n * Used for internal deserialization of OAuth responses. Public model is ErrorResponse\n * @internal\n */\nexport interface OAuthErrorResponse {\n error: string;\n error_description: string;\n error_codes?: number[];\n timestamp?: string;\n trace_id?: string;\n correlation_id?: string;\n}\n\nfunction isErrorResponse(errorResponse: any): errorResponse is OAuthErrorResponse {\n return (\n errorResponse &&\n typeof errorResponse.error === \"string\" &&\n typeof errorResponse.error_description === \"string\"\n );\n}\n\n/**\n * The Error.name value of an CredentialUnavailable\n */\nexport const CredentialUnavailableErrorName = \"CredentialUnavailableError\";\n\n/**\n * This signifies that the credential that was tried in a chained credential\n * was not available to be used as the credential. Rather than treating this as\n * an error that should halt the chain, it's caught and the chain continues\n */\nexport class CredentialUnavailableError extends Error {\n constructor(message?: string, options?: { cause?: unknown }) {\n // @ts-expect-error - TypeScript does not recognize this until we use ES2022 as the target; however, all our major runtimes do support the `cause` property\n super(message, options);\n this.name = CredentialUnavailableErrorName;\n }\n}\n\n/**\n * The Error.name value of an AuthenticationError\n */\nexport const AuthenticationErrorName = \"AuthenticationError\";\n\n/**\n * Provides details about a failure to authenticate with Azure Active\n * Directory. The `errorResponse` field contains more details about\n * the specific failure.\n */\nexport class AuthenticationError extends Error {\n /**\n * The HTTP status code returned from the authentication request.\n */\n public readonly statusCode: number;\n\n /**\n * The error response details.\n */\n public readonly errorResponse: ErrorResponse;\n\n constructor(\n statusCode: number,\n errorBody: object | string | undefined | null,\n options?: { cause?: unknown },\n ) {\n let errorResponse: ErrorResponse = {\n error: \"unknown\",\n errorDescription: \"An unknown error occurred and no additional details are available.\",\n };\n\n if (isErrorResponse(errorBody)) {\n errorResponse = convertOAuthErrorResponseToErrorResponse(errorBody);\n } else if (typeof errorBody === \"string\") {\n try {\n // Most error responses will contain JSON-formatted error details\n // in the response body\n const oauthErrorResponse: OAuthErrorResponse = JSON.parse(errorBody);\n errorResponse = convertOAuthErrorResponseToErrorResponse(oauthErrorResponse);\n } catch (e: any) {\n if (statusCode === 400) {\n errorResponse = {\n error: \"invalid_request\",\n errorDescription: `The service indicated that the request was invalid.\\n\\n${errorBody}`,\n };\n } else {\n errorResponse = {\n error: \"unknown_error\",\n errorDescription: `An unknown error has occurred. Response body:\\n\\n${errorBody}`,\n };\n }\n }\n } else {\n errorResponse = {\n error: \"unknown_error\",\n errorDescription: \"An unknown error occurred and no additional details are available.\",\n };\n }\n\n super(\n `${errorResponse.error} Status code: ${statusCode}\\nMore details:\\n${errorResponse.errorDescription},`,\n // @ts-expect-error - TypeScript does not recognize this until we use ES2022 as the target; however, all our major runtimes do support the `cause` property\n options,\n );\n this.statusCode = statusCode;\n this.errorResponse = errorResponse;\n\n // Ensure that this type reports the correct name\n this.name = AuthenticationErrorName;\n }\n}\n\n/**\n * The Error.name value of an AggregateAuthenticationError\n */\nexport const AggregateAuthenticationErrorName = \"AggregateAuthenticationError\";\n\n/**\n * Provides an `errors` array containing {@link AuthenticationError} instance\n * for authentication failures from credentials in a {@link ChainedTokenCredential}.\n */\nexport class AggregateAuthenticationError extends Error {\n /**\n * The array of error objects that were thrown while trying to authenticate\n * with the credentials in a {@link ChainedTokenCredential}.\n */\n public errors: any[];\n\n constructor(errors: any[], errorMessage?: string) {\n const errorDetail = errors.join(\"\\n\");\n super(`${errorMessage}\\n${errorDetail}`);\n this.errors = errors;\n\n // Ensure that this type reports the correct name\n this.name = AggregateAuthenticationErrorName;\n }\n}\n\nfunction convertOAuthErrorResponseToErrorResponse(errorBody: OAuthErrorResponse): ErrorResponse {\n return {\n error: errorBody.error,\n errorDescription: errorBody.error_description,\n correlationId: errorBody.correlation_id,\n errorCodes: errorBody.error_codes,\n timestamp: errorBody.timestamp,\n traceId: errorBody.trace_id,\n };\n}\n\n/**\n * Optional parameters to the {@link AuthenticationRequiredError}\n */\nexport interface AuthenticationRequiredErrorOptions {\n /**\n * The list of scopes for which the token will have access.\n */\n scopes: string[];\n /**\n * The options passed to the getToken request.\n */\n getTokenOptions?: GetTokenOptions;\n /**\n * The message of the error.\n */\n message?: string;\n /**\n * The underlying cause, if any, that caused the authentication to fail.\n */\n cause?: unknown;\n}\n\n/**\n * Error used to enforce authentication after trying to retrieve a token silently.\n */\nexport class AuthenticationRequiredError extends Error {\n /**\n * The list of scopes for which the token will have access.\n */\n public scopes: string[];\n /**\n * The options passed to the getToken request.\n */\n public getTokenOptions?: GetTokenOptions;\n\n constructor(\n /**\n * Optional parameters. A message can be specified. The {@link GetTokenOptions} of the request can also be specified to more easily associate the error with the received parameters.\n */\n options: AuthenticationRequiredErrorOptions,\n ) {\n super(\n options.message,\n // @ts-expect-error - TypeScript does not recognize this until we use ES2022 as the target; however, all our major runtimes do support the `cause` property\n options.cause ? { cause: options.cause } : undefined,\n );\n this.scopes = options.scopes;\n this.getTokenOptions = options.getTokenOptions;\n this.name = \"AuthenticationRequiredError\";\n }\n}\n", "// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { GetTokenOptions } from \"@azure/core-auth\";\nimport { CredentialUnavailableError } from \"../errors.js\";\nimport type { CredentialLogger } from \"./logging.js\";\n\nfunction createConfigurationErrorMessage(tenantId: string): string {\n return `The current credential is not configured to acquire tokens for tenant ${tenantId}. To enable acquiring tokens for this tenant add it to the AdditionallyAllowedTenants on the credential options, or add \"*\" to AdditionallyAllowedTenants to allow acquiring tokens for any tenant.`;\n}\n\n/**\n * Of getToken contains a tenantId, this functions allows picking this tenantId as the appropriate for authentication,\n * unless multitenant authentication has been disabled through the AZURE_IDENTITY_DISABLE_MULTITENANTAUTH (on Node.js),\n * or unless the original tenant Id is `adfs`.\n * @internal\n */\nexport function processMultiTenantRequest(\n tenantId?: string,\n getTokenOptions?: GetTokenOptions,\n additionallyAllowedTenantIds: string[] = [],\n logger?: CredentialLogger,\n): string | undefined {\n let resolvedTenantId: string | undefined;\n if (process.env.AZURE_IDENTITY_DISABLE_MULTITENANTAUTH) {\n resolvedTenantId = tenantId;\n } else if (tenantId === \"adfs\") {\n resolvedTenantId = tenantId;\n } else {\n resolvedTenantId = getTokenOptions?.tenantId ?? tenantId;\n }\n if (\n tenantId &&\n resolvedTenantId !== tenantId &&\n !additionallyAllowedTenantIds.includes(\"*\") &&\n !additionallyAllowedTenantIds.some((t) => t.localeCompare(resolvedTenantId!) === 0)\n ) {\n const message = createConfigurationErrorMessage(resolvedTenantId!);\n logger?.info(message);\n throw new CredentialUnavailableError(message);\n }\n\n return resolvedTenantId;\n}\n", "// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { ALL_TENANTS, DeveloperSignOnClientId } from \"../constants.js\";\nimport type { CredentialLogger } from \"./logging.js\";\nimport { formatError } from \"./logging.js\";\nexport { processMultiTenantRequest } from \"./processMultiTenantRequest.js\";\n\n/**\n * @internal\n */\nexport function checkTenantId(logger: CredentialLogger, tenantId: string): void {\n if (!tenantId.match(/^[0-9a-zA-Z-.]+$/)) {\n const error = new Error(\n \"Invalid tenant id provided. You can locate your tenant id by following the instructions listed here: https://learn.microsoft.com/partner-center/find-ids-and-domain-names.\",\n );\n logger.info(formatError(\"\", error));\n throw error;\n }\n}\n\n/**\n * @internal\n */\nexport function resolveTenantId(\n logger: CredentialLogger,\n tenantId?: string,\n clientId?: string,\n): string {\n if (tenantId) {\n checkTenantId(logger, tenantId);\n return tenantId;\n }\n if (!clientId) {\n clientId = DeveloperSignOnClientId;\n }\n if (clientId !== DeveloperSignOnClientId) {\n return \"common\";\n }\n return \"organizations\";\n}\n\n/**\n * @internal\n */\nexport function resolveAdditionallyAllowedTenantIds(\n additionallyAllowedTenants?: string[],\n): string[] {\n if (!additionallyAllowedTenants || additionallyAllowedTenants.length === 0) {\n return [];\n }\n\n if (additionallyAllowedTenants.includes(\"*\")) {\n return ALL_TENANTS;\n }\n\n return additionallyAllowedTenants;\n}\n", "// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nexport function getIdentityTokenEndpointSuffix(tenantId: string): string {\n if (tenantId === \"adfs\") {\n return \"oauth2/token\";\n } else {\n return \"oauth2/v2.0/token\";\n }\n}\n", "// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { SDK_VERSION } from \"../constants.js\";\nimport { createTracingClient } from \"@azure/core-tracing\";\n\n/**\n * Creates a span using the global tracer.\n * @internal\n */\nexport const tracingClient = createTracingClient({\n namespace: \"Microsoft.AAD\",\n packageName: \"@azure/identity\",\n packageVersion: SDK_VERSION,\n});\n", "// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nconst DefaultScopeSuffix = \"/.default\";\n\n/**\n * Error message for Service Fabric Managed Identity environment.\n */\nexport const serviceFabricErrorMessage =\n \"Specifying a `clientId` or `resourceId` is not supported by the Service Fabric managed identity environment. The managed identity configuration is determined by the Service Fabric cluster resource configuration. See https://aka.ms/servicefabricmi for more information\";\n\n/**\n * Most MSIs send requests to the IMDS endpoint, or a similar endpoint.\n * These are GET requests that require sending a `resource` parameter on the query.\n * This resource can be derived from the scopes received through the getToken call, as long as only one scope is received.\n * Multiple scopes assume that the resulting token will have access to multiple resources, which won't be the case.\n *\n * For that reason, when we encounter multiple scopes, we return undefined.\n * It's up to the individual MSI implementations to throw the errors (which helps us provide less generic errors).\n */\nexport function mapScopesToResource(scopes: string | string[]): string | undefined {\n let scope = \"\";\n if (Array.isArray(scopes)) {\n if (scopes.length !== 1) {\n return;\n }\n\n scope = scopes[0];\n } else if (typeof scopes === \"string\") {\n scope = scopes;\n }\n\n if (!scope.endsWith(DefaultScopeSuffix)) {\n return scope;\n }\n\n return scope.substr(0, scope.lastIndexOf(DefaultScopeSuffix));\n}\n\n/**\n * Internal type roughly matching the raw responses of the authentication endpoints.\n *\n * @internal\n */\nexport interface TokenResponseParsedBody {\n access_token?: string;\n refresh_token?: string;\n expires_in: number;\n expires_on?: number | string;\n refresh_on?: number | string;\n}\n\n/**\n * Given a token response, return the expiration timestamp as the number of milliseconds from the Unix epoch.\n * @param body - A parsed response body from the authentication endpoint.\n */\nexport function parseExpirationTimestamp(body: TokenResponseParsedBody): number {\n if (typeof body.expires_on === \"number\") {\n return body.expires_on * 1000;\n }\n\n if (typeof body.expires_on === \"string\") {\n const asNumber = +body.expires_on;\n if (!isNaN(asNumber)) {\n return asNumber * 1000;\n }\n\n const asDate = Date.parse(body.expires_on);\n if (!isNaN(asDate)) {\n return asDate;\n }\n }\n\n if (typeof body.expires_in === \"number\") {\n return Date.now() + body.expires_in * 1000;\n }\n\n throw new Error(\n `Failed to parse token expiration from body. expires_in=\"${body.expires_in}\", expires_on=\"${body.expires_on}\"`,\n );\n}\n\n/**\n * Given a token response, return the expiration timestamp as the number of milliseconds from the Unix epoch.\n * @param body - A parsed response body from the authentication endpoint.\n */\nexport function parseRefreshTimestamp(body: TokenResponseParsedBody): number | undefined {\n if (body.refresh_on) {\n if (typeof body.refresh_on === \"number\") {\n return body.refresh_on * 1000;\n }\n\n if (typeof body.refresh_on === \"string\") {\n const asNumber = +body.refresh_on;\n if (!isNaN(asNumber)) {\n return asNumber * 1000;\n }\n\n const asDate = Date.parse(body.refresh_on);\n if (!isNaN(asDate)) {\n return asDate;\n }\n }\n throw new Error(`Failed to parse refresh_on from body. refresh_on=\"${body.refresh_on}\"`);\n } else {\n return undefined;\n }\n}\n", "// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { INetworkModule, NetworkRequestOptions, NetworkResponse } from \"@azure/msal-node\";\nimport type { AccessToken, GetTokenOptions } from \"@azure/core-auth\";\nimport { ServiceClient } from \"@azure/core-client\";\nimport { isNode } from \"@azure/core-util\";\nimport type { PipelineRequest, PipelineResponse } from \"@azure/core-rest-pipeline\";\nimport { createHttpHeaders, createPipelineRequest } from \"@azure/core-rest-pipeline\";\nimport type { AbortSignalLike } from \"@azure/abort-controller\";\nimport { AuthenticationError, AuthenticationErrorName } from \"../errors.js\";\nimport { getIdentityTokenEndpointSuffix } from \"../util/identityTokenEndpoint.js\";\nimport { DefaultAuthorityHost, SDK_VERSION } from \"../constants.js\";\nimport { tracingClient } from \"../util/tracing.js\";\nimport { logger } from \"../util/logging.js\";\nimport type { TokenCredentialOptions } from \"../tokenCredentialOptions.js\";\nimport type { TokenResponseParsedBody } from \"../credentials/managedIdentityCredential/utils.js\";\nimport {\n parseExpirationTimestamp,\n parseRefreshTimestamp,\n} from \"../credentials/managedIdentityCredential/utils.js\";\n\nconst noCorrelationId = \"noCorrelationId\";\n\n/**\n * An internal type used to communicate details of a token request's\n * response that should not be sent back as part of the access token.\n */\nexport interface TokenResponse {\n /**\n * The AccessToken to be returned from getToken.\n */\n accessToken: AccessToken;\n /**\n * The refresh token if the 'offline_access' scope was used.\n */\n refreshToken?: string;\n}\n\n/**\n * @internal\n */\nexport function getIdentityClientAuthorityHost(options?: TokenCredentialOptions): string {\n // The authorityHost can come from options or from the AZURE_AUTHORITY_HOST environment variable.\n let authorityHost = options?.authorityHost;\n\n // The AZURE_AUTHORITY_HOST environment variable can only be provided in Node.js.\n if (isNode) {\n authorityHost = authorityHost ?? process.env.AZURE_AUTHORITY_HOST;\n }\n\n // If the authorityHost is not provided, we use the default one from the public cloud: https://login.microsoftonline.com\n return authorityHost ?? DefaultAuthorityHost;\n}\n\n/**\n * The network module used by the Identity credentials.\n *\n * It allows for credentials to abort any pending request independently of the MSAL flow,\n * by calling to the `abortRequests()` method.\n *\n */\nexport class IdentityClient extends ServiceClient implements INetworkModule {\n public authorityHost: string;\n private allowLoggingAccountIdentifiers?: boolean;\n private abortControllers: Map;\n private allowInsecureConnection: boolean = false;\n // used for WorkloadIdentity\n private tokenCredentialOptions: TokenCredentialOptions;\n\n constructor(options?: TokenCredentialOptions) {\n const packageDetails = `azsdk-js-identity/${SDK_VERSION}`;\n const userAgentPrefix = options?.userAgentOptions?.userAgentPrefix\n ? `${options.userAgentOptions.userAgentPrefix} ${packageDetails}`\n : `${packageDetails}`;\n\n const baseUri = getIdentityClientAuthorityHost(options);\n if (!baseUri.startsWith(\"https:\")) {\n throw new Error(\"The authorityHost address must use the 'https' protocol.\");\n }\n\n super({\n requestContentType: \"application/json; charset=utf-8\",\n retryOptions: {\n maxRetries: 3,\n },\n ...options,\n userAgentOptions: {\n userAgentPrefix,\n },\n baseUri,\n });\n\n this.authorityHost = baseUri;\n this.abortControllers = new Map();\n this.allowLoggingAccountIdentifiers = options?.loggingOptions?.allowLoggingAccountIdentifiers;\n // used for WorkloadIdentity\n this.tokenCredentialOptions = { ...options };\n\n // used for ManagedIdentity\n if (options?.allowInsecureConnection) {\n this.allowInsecureConnection = options.allowInsecureConnection;\n }\n }\n\n async sendTokenRequest(request: PipelineRequest): Promise {\n logger.info(`IdentityClient: sending token request to [${request.url}]`);\n const response = await this.sendRequest(request);\n if (response.bodyAsText && (response.status === 200 || response.status === 201)) {\n const parsedBody: TokenResponseParsedBody = JSON.parse(response.bodyAsText);\n\n if (!parsedBody.access_token) {\n return null;\n }\n\n this.logIdentifiers(response);\n\n const token = {\n accessToken: {\n token: parsedBody.access_token,\n expiresOnTimestamp: parseExpirationTimestamp(parsedBody),\n refreshAfterTimestamp: parseRefreshTimestamp(parsedBody),\n tokenType: \"Bearer\",\n } as AccessToken,\n refreshToken: parsedBody.refresh_token,\n };\n\n logger.info(\n `IdentityClient: [${request.url}] token acquired, expires on ${token.accessToken.expiresOnTimestamp}`,\n );\n return token;\n } else {\n const error = new AuthenticationError(response.status, response.bodyAsText);\n logger.warning(\n `IdentityClient: authentication error. HTTP status: ${response.status}, ${error.errorResponse.errorDescription}`,\n );\n throw error;\n }\n }\n\n async refreshAccessToken(\n tenantId: string,\n clientId: string,\n scopes: string,\n refreshToken: string | undefined,\n clientSecret: string | undefined,\n options: GetTokenOptions = {},\n ): Promise {\n if (refreshToken === undefined) {\n return null;\n }\n logger.info(\n `IdentityClient: refreshing access token with client ID: ${clientId}, scopes: ${scopes} started`,\n );\n\n const refreshParams = {\n grant_type: \"refresh_token\",\n client_id: clientId,\n refresh_token: refreshToken,\n scope: scopes,\n };\n\n if (clientSecret !== undefined) {\n (refreshParams as any).client_secret = clientSecret;\n }\n\n const query = new URLSearchParams(refreshParams);\n\n return tracingClient.withSpan(\n \"IdentityClient.refreshAccessToken\",\n options,\n async (updatedOptions) => {\n try {\n const urlSuffix = getIdentityTokenEndpointSuffix(tenantId);\n const request = createPipelineRequest({\n url: `${this.authorityHost}/${tenantId}/${urlSuffix}`,\n method: \"POST\",\n body: query.toString(),\n abortSignal: options.abortSignal,\n headers: createHttpHeaders({\n Accept: \"application/json\",\n \"Content-Type\": \"application/x-www-form-urlencoded\",\n }),\n tracingOptions: updatedOptions.tracingOptions,\n });\n\n const response = await this.sendTokenRequest(request);\n logger.info(`IdentityClient: refreshed token for client ID: ${clientId}`);\n return response;\n } catch (err: any) {\n if (\n err.name === AuthenticationErrorName &&\n err.errorResponse.error === \"interaction_required\"\n ) {\n // It's likely that the refresh token has expired, so\n // return null so that the credential implementation will\n // initiate the authentication flow again.\n logger.info(`IdentityClient: interaction required for client ID: ${clientId}`);\n return null;\n } else {\n logger.warning(\n `IdentityClient: failed refreshing token for client ID: ${clientId}: ${err}`,\n );\n throw err;\n }\n }\n },\n );\n }\n\n // Here is a custom layer that allows us to abort requests that go through MSAL,\n // since MSAL doesn't allow us to pass options all the way through.\n\n generateAbortSignal(correlationId: string): AbortSignalLike {\n const controller = new AbortController();\n const controllers = this.abortControllers.get(correlationId) || [];\n controllers.push(controller);\n this.abortControllers.set(correlationId, controllers);\n const existingOnAbort = controller.signal.onabort;\n controller.signal.onabort = (...params) => {\n this.abortControllers.set(correlationId, undefined);\n if (existingOnAbort) {\n existingOnAbort.apply(controller.signal, params);\n }\n };\n return controller.signal;\n }\n\n abortRequests(correlationId?: string): void {\n const key = correlationId || noCorrelationId;\n const controllers = [\n ...(this.abortControllers.get(key) || []),\n // MSAL passes no correlation ID to the get requests...\n ...(this.abortControllers.get(noCorrelationId) || []),\n ];\n if (!controllers.length) {\n return;\n }\n for (const controller of controllers) {\n controller.abort();\n }\n this.abortControllers.set(key, undefined);\n }\n\n getCorrelationId(options?: NetworkRequestOptions): string {\n const parameter = options?.body\n ?.split(\"&\")\n .map((part) => part.split(\"=\"))\n .find(([key]) => key === \"client-request-id\");\n return parameter && parameter.length ? parameter[1] || noCorrelationId : noCorrelationId;\n }\n\n // The MSAL network module methods follow\n\n async sendGetRequestAsync(\n url: string,\n options?: NetworkRequestOptions,\n ): Promise> {\n const request = createPipelineRequest({\n url,\n method: \"GET\",\n body: options?.body,\n allowInsecureConnection: this.allowInsecureConnection,\n headers: createHttpHeaders(options?.headers),\n abortSignal: this.generateAbortSignal(noCorrelationId),\n });\n\n const response = await this.sendRequest(request);\n\n this.logIdentifiers(response);\n\n return {\n body: response.bodyAsText ? JSON.parse(response.bodyAsText) : undefined,\n headers: response.headers.toJSON(),\n status: response.status,\n };\n }\n\n async sendPostRequestAsync(\n url: string,\n options?: NetworkRequestOptions,\n ): Promise> {\n const request = createPipelineRequest({\n url,\n method: \"POST\",\n body: options?.body,\n headers: createHttpHeaders(options?.headers),\n allowInsecureConnection: this.allowInsecureConnection,\n // MSAL doesn't send the correlation ID on the get requests.\n abortSignal: this.generateAbortSignal(this.getCorrelationId(options)),\n });\n\n const response = await this.sendRequest(request);\n\n this.logIdentifiers(response);\n\n return {\n body: response.bodyAsText ? JSON.parse(response.bodyAsText) : undefined,\n headers: response.headers.toJSON(),\n status: response.status,\n };\n }\n\n /**\n *\n * @internal\n */\n getTokenCredentialOptions(): TokenCredentialOptions {\n return this.tokenCredentialOptions;\n }\n /**\n * If allowLoggingAccountIdentifiers was set on the constructor options\n * we try to log the account identifiers by parsing the received access token.\n *\n * The account identifiers we try to log are:\n * - `appid`: The application or Client Identifier.\n * - `upn`: User Principal Name.\n * - It might not be available in some authentication scenarios.\n * - If it's not available, we put a placeholder: \"No User Principal Name available\".\n * - `tid`: Tenant Identifier.\n * - `oid`: Object Identifier of the authenticated user.\n */\n private logIdentifiers(response: PipelineResponse): void {\n if (!this.allowLoggingAccountIdentifiers || !response.bodyAsText) {\n return;\n }\n const unavailableUpn = \"No User Principal Name available\";\n try {\n const parsed = (response as any).parsedBody || JSON.parse(response.bodyAsText);\n const accessToken = parsed.access_token;\n if (!accessToken) {\n // Without an access token allowLoggingAccountIdentifiers isn't useful.\n return;\n }\n const base64Metadata = accessToken.split(\".\")[1];\n const { appid, upn, tid, oid } = JSON.parse(\n Buffer.from(base64Metadata, \"base64\").toString(\"utf8\"),\n );\n\n logger.info(\n `[Authenticated account] Client ID: ${appid}. Tenant ID: ${tid}. User Principal Name: ${\n upn || unavailableUpn\n }. Object ID (user): ${oid}`,\n );\n } catch (e: any) {\n logger.warning(\n \"allowLoggingAccountIdentifiers was set, but we couldn't log the account information. Error:\",\n e.message,\n );\n }\n }\n}\n", "// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { AccessToken, GetTokenOptions, TokenCredential } from \"@azure/core-auth\";\nimport { credentialLogger, formatError, formatSuccess } from \"../util/logging.js\";\nimport {\n processMultiTenantRequest,\n resolveAdditionallyAllowedTenantIds,\n} from \"../util/tenantIdUtils.js\";\nimport { AzureAuthorityHosts } from \"../constants.js\";\nimport { CredentialUnavailableError } from \"../errors.js\";\nimport { IdentityClient } from \"../client/identityClient.js\";\nimport type { VisualStudioCodeCredentialOptions } from \"./visualStudioCodeCredentialOptions.js\";\nimport type { VSCodeCredentialFinder } from \"./visualStudioCodeCredentialPlugin.js\";\nimport { checkTenantId } from \"../util/tenantIdUtils.js\";\nimport fs from \"node:fs\";\nimport os from \"node:os\";\nimport path from \"node:path\";\n\nconst CommonTenantId = \"common\";\nconst AzureAccountClientId = \"aebc6443-996d-45c2-90f0-388ff96faa56\"; // VSC: 'aebc6443-996d-45c2-90f0-388ff96faa56'\nconst logger = credentialLogger(\"VisualStudioCodeCredential\");\n\nlet findCredentials: VSCodeCredentialFinder | undefined = undefined;\n\nexport const vsCodeCredentialControl = {\n setVsCodeCredentialFinder(finder: VSCodeCredentialFinder): void {\n findCredentials = finder;\n },\n};\n\n// Map of unsupported Tenant IDs and the errors we will be throwing.\nconst unsupportedTenantIds: Record = {\n adfs: \"The VisualStudioCodeCredential does not support authentication with ADFS tenants.\",\n};\n\nfunction checkUnsupportedTenant(tenantId: string): void {\n // If the Tenant ID isn't supported, we throw.\n const unsupportedTenantError = unsupportedTenantIds[tenantId];\n if (unsupportedTenantError) {\n throw new CredentialUnavailableError(unsupportedTenantError);\n }\n}\n\ntype VSCodeCloudNames = \"AzureCloud\" | \"AzureChina\" | \"AzureGermanCloud\" | \"AzureUSGovernment\";\n\nconst mapVSCodeAuthorityHosts: Record = {\n AzureCloud: AzureAuthorityHosts.AzurePublicCloud,\n AzureChina: AzureAuthorityHosts.AzureChina,\n AzureGermanCloud: AzureAuthorityHosts.AzureGermany,\n AzureUSGovernment: AzureAuthorityHosts.AzureGovernment,\n};\n\n/**\n * Attempts to load a specific property from the VSCode configurations of the current OS.\n * If it fails at any point, returns undefined.\n */\nexport function getPropertyFromVSCode(property: string): string | undefined {\n const settingsPath = [\"User\", \"settings.json\"];\n // Eventually we can add more folders for more versions of VSCode.\n const vsCodeFolder = \"Code\";\n const homedir = os.homedir();\n\n function loadProperty(...pathSegments: string[]): string | undefined {\n const fullPath = path.join(...pathSegments, vsCodeFolder, ...settingsPath);\n const settings = JSON.parse(fs.readFileSync(fullPath, { encoding: \"utf8\" }));\n return settings[property];\n }\n\n try {\n let appData: string;\n switch (process.platform) {\n case \"win32\":\n appData = process.env.APPDATA!;\n return appData ? loadProperty(appData) : undefined;\n case \"darwin\":\n return loadProperty(homedir, \"Library\", \"Application Support\");\n case \"linux\":\n return loadProperty(homedir, \".config\");\n default:\n return;\n }\n } catch (e: any) {\n logger.info(`Failed to load the Visual Studio Code configuration file. Error: ${e.message}`);\n return;\n }\n}\n\n/**\n * Connects to Azure using the credential provided by the VSCode extension 'Azure Account'.\n * Once the user has logged in via the extension, this credential can share the same refresh token\n * that is cached by the extension.\n *\n * It's a [known issue](https://github.com/Azure/azure-sdk-for-js/issues/20500) that this credential doesn't\n * work with [Azure Account extension](https://marketplace.visualstudio.com/items?itemName=ms-vscode.azure-account)\n * versions newer than **0.9.11**. A long-term fix to this problem is in progress. In the meantime, consider\n * authenticating with {@link AzureCliCredential}.\n *\n * @deprecated This credential is deprecated because the VS Code Azure Account extension on which this credential\n * relies has been deprecated. Users should use other dev-time credentials, such as {@link AzureCliCredential},\n * {@link AzureDeveloperCliCredential}, or {@link AzurePowerShellCredential} for their\n * local development needs. See Azure Account extension deprecation notice [here](https://github.com/microsoft/vscode-azure-account/issues/964).\n *\n */\nexport class VisualStudioCodeCredential implements TokenCredential {\n private identityClient: IdentityClient;\n private tenantId: string;\n private additionallyAllowedTenantIds: string[];\n private cloudName: VSCodeCloudNames;\n\n /**\n * Creates an instance of VisualStudioCodeCredential to use for automatically authenticating via VSCode.\n *\n * **Note**: `VisualStudioCodeCredential` is provided by a plugin package:\n * `@azure/identity-vscode`. If this package is not installed and registered\n * using the plugin API (`useIdentityPlugin`), then authentication using\n * `VisualStudioCodeCredential` will not be available.\n *\n * @param options - Options for configuring the client which makes the authentication request.\n */\n constructor(options?: VisualStudioCodeCredentialOptions) {\n // We want to make sure we use the one assigned by the user on the VSCode settings.\n // Or just `AzureCloud` by default.\n this.cloudName = (getPropertyFromVSCode(\"azure.cloud\") || \"AzureCloud\") as VSCodeCloudNames;\n\n // Picking an authority host based on the cloud name.\n const authorityHost = mapVSCodeAuthorityHosts[this.cloudName];\n\n this.identityClient = new IdentityClient({\n authorityHost,\n ...options,\n });\n\n if (options && options.tenantId) {\n checkTenantId(logger, options.tenantId);\n this.tenantId = options.tenantId;\n } else {\n this.tenantId = CommonTenantId;\n }\n\n this.additionallyAllowedTenantIds = resolveAdditionallyAllowedTenantIds(\n options?.additionallyAllowedTenants,\n );\n\n checkUnsupportedTenant(this.tenantId);\n }\n\n /**\n * Runs preparations for any further getToken request.\n */\n private async prepare(): Promise {\n // Attempts to load the tenant from the VSCode configuration file.\n const settingsTenant = getPropertyFromVSCode(\"azure.tenant\");\n if (settingsTenant) {\n this.tenantId = settingsTenant;\n }\n checkUnsupportedTenant(this.tenantId);\n }\n\n /**\n * The promise of the single preparation that will be executed at the first getToken request for an instance of this class.\n */\n private preparePromise: Promise | undefined;\n\n /**\n * Runs preparations for any further getToken, but only once.\n */\n private prepareOnce(): Promise | undefined {\n if (!this.preparePromise) {\n this.preparePromise = this.prepare();\n }\n return this.preparePromise;\n }\n\n /**\n * Returns the token found by searching VSCode's authentication cache or\n * returns null if no token could be found.\n *\n * @param scopes - The list of scopes for which the token will have access.\n * @param options - The options used to configure any requests this\n * `TokenCredential` implementation might make.\n */\n public async getToken(\n scopes: string | string[],\n options?: GetTokenOptions,\n ): Promise {\n await this.prepareOnce();\n\n const tenantId =\n processMultiTenantRequest(\n this.tenantId,\n options,\n this.additionallyAllowedTenantIds,\n logger,\n ) || this.tenantId;\n\n if (findCredentials === undefined) {\n throw new CredentialUnavailableError(\n [\n \"No implementation of `VisualStudioCodeCredential` is available.\",\n \"You must install the identity-vscode plugin package (`npm install --save-dev @azure/identity-vscode`)\",\n \"and enable it by importing `useIdentityPlugin` from `@azure/identity` and calling\",\n \"`useIdentityPlugin(vsCodePlugin)` before creating a `VisualStudioCodeCredential`.\",\n \"To troubleshoot, visit https://aka.ms/azsdk/js/identity/vscodecredential/troubleshoot.\",\n ].join(\" \"),\n );\n }\n\n let scopeString = typeof scopes === \"string\" ? scopes : scopes.join(\" \");\n\n // Check to make sure the scope we get back is a valid scope\n if (!scopeString.match(/^[0-9a-zA-Z-.:/]+$/)) {\n const error = new Error(\"Invalid scope was specified by the user or calling client\");\n logger.getToken.info(formatError(scopes, error));\n throw error;\n }\n\n if (scopeString.indexOf(\"offline_access\") < 0) {\n scopeString += \" offline_access\";\n }\n\n // findCredentials returns an array similar to:\n // [\n // {\n // account: \"\",\n // password: \"\",\n // },\n // /* ... */\n // ]\n const credentials = await findCredentials();\n\n // If we can't find the credential based on the name, we'll pick the first one available.\n const { password: refreshToken } =\n credentials.find(({ account }) => account === this.cloudName) ?? credentials[0] ?? {};\n\n if (refreshToken) {\n const tokenResponse = await this.identityClient.refreshAccessToken(\n tenantId,\n AzureAccountClientId,\n scopeString,\n refreshToken,\n undefined,\n );\n\n if (tokenResponse) {\n logger.getToken.info(formatSuccess(scopes));\n return tokenResponse.accessToken;\n } else {\n const error = new CredentialUnavailableError(\n \"Could not retrieve the token associated with Visual Studio Code. Have you connected using the 'Azure Account' extension recently? To troubleshoot, visit https://aka.ms/azsdk/js/identity/vscodecredential/troubleshoot.\",\n );\n logger.getToken.info(formatError(scopes, error));\n throw error;\n }\n } else {\n const error = new CredentialUnavailableError(\n \"Could not retrieve the token associated with Visual Studio Code. Did you connect using the 'Azure Account' extension? To troubleshoot, visit https://aka.ms/azsdk/js/identity/vscodecredential/troubleshoot.\",\n );\n logger.getToken.info(formatError(scopes, error));\n throw error;\n }\n }\n}\n", "/*! @azure/msal-node v3.6.2 2025-07-01 */\n'use strict';\nimport * as internals from './internals.mjs';\nexport { internals };\nexport { PublicClientApplication } from './client/PublicClientApplication.mjs';\nexport { ConfidentialClientApplication } from './client/ConfidentialClientApplication.mjs';\nexport { ClientApplication } from './client/ClientApplication.mjs';\nexport { ClientCredentialClient } from './client/ClientCredentialClient.mjs';\nexport { DeviceCodeClient } from './client/DeviceCodeClient.mjs';\nexport { OnBehalfOfClient } from './client/OnBehalfOfClient.mjs';\nexport { ManagedIdentityApplication } from './client/ManagedIdentityApplication.mjs';\nexport { UsernamePasswordClient } from './client/UsernamePasswordClient.mjs';\nexport { ClientAssertion } from './client/ClientAssertion.mjs';\nexport { TokenCache } from './cache/TokenCache.mjs';\nexport { DistributedCachePlugin } from './cache/distributed/DistributedCachePlugin.mjs';\nexport { ManagedIdentitySourceNames } from './utils/Constants.mjs';\nexport { CryptoProvider } from './crypto/CryptoProvider.mjs';\nexport { AuthError, AuthErrorCodes, AuthErrorMessage, AzureCloudInstance, ClientAuthError, ClientAuthErrorCodes, ClientAuthErrorMessage, ClientConfigurationError, ClientConfigurationErrorCodes, ClientConfigurationErrorMessage, InteractionRequiredAuthError, InteractionRequiredAuthErrorCodes, InteractionRequiredAuthErrorMessage, LogLevel, Logger, PromptValue, ProtocolMode, ResponseMode, ServerError, TokenCacheContext } from '@azure/msal-common/node';\nexport { version } from './packageMetadata.mjs';\n//# sourceMappingURL=index.mjs.map\n", "/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport {\n AccountCache,\n IdTokenCache,\n AccessTokenCache,\n RefreshTokenCache,\n AppMetadataCache,\n} from \"@azure/msal-common/node\";\nimport {\n InMemoryCache,\n JsonCache,\n SerializedAccountEntity,\n SerializedIdTokenEntity,\n SerializedAccessTokenEntity,\n SerializedRefreshTokenEntity,\n SerializedAppMetadataEntity,\n} from \"./SerializerTypes.js\";\n\n/**\n * This class serializes cache entities to be saved into in-memory object types defined internally\n * @internal\n */\nexport class Serializer {\n /**\n * serialize the JSON blob\n * @param data - JSON blob cache\n */\n static serializeJSONBlob(data: JsonCache): string {\n return JSON.stringify(data);\n }\n\n /**\n * Serialize Accounts\n * @param accCache - cache of accounts\n */\n static serializeAccounts(\n accCache: AccountCache\n ): Record {\n const accounts: Record = {};\n Object.keys(accCache).map(function (key) {\n const accountEntity = accCache[key];\n accounts[key] = {\n home_account_id: accountEntity.homeAccountId,\n environment: accountEntity.environment,\n realm: accountEntity.realm,\n local_account_id: accountEntity.localAccountId,\n username: accountEntity.username,\n authority_type: accountEntity.authorityType,\n name: accountEntity.name,\n client_info: accountEntity.clientInfo,\n last_modification_time: accountEntity.lastModificationTime,\n last_modification_app: accountEntity.lastModificationApp,\n tenantProfiles: accountEntity.tenantProfiles?.map(\n (tenantProfile) => {\n return JSON.stringify(tenantProfile);\n }\n ),\n };\n });\n\n return accounts;\n }\n\n /**\n * Serialize IdTokens\n * @param idTCache - cache of ID tokens\n */\n static serializeIdTokens(\n idTCache: IdTokenCache\n ): Record {\n const idTokens: Record = {};\n Object.keys(idTCache).map(function (key) {\n const idTEntity = idTCache[key];\n idTokens[key] = {\n home_account_id: idTEntity.homeAccountId,\n environment: idTEntity.environment,\n credential_type: idTEntity.credentialType,\n client_id: idTEntity.clientId,\n secret: idTEntity.secret,\n realm: idTEntity.realm,\n };\n });\n\n return idTokens;\n }\n\n /**\n * Serializes AccessTokens\n * @param atCache - cache of access tokens\n */\n static serializeAccessTokens(\n atCache: AccessTokenCache\n ): Record {\n const accessTokens: Record = {};\n Object.keys(atCache).map(function (key) {\n const atEntity = atCache[key];\n accessTokens[key] = {\n home_account_id: atEntity.homeAccountId,\n environment: atEntity.environment,\n credential_type: atEntity.credentialType,\n client_id: atEntity.clientId,\n secret: atEntity.secret,\n realm: atEntity.realm,\n target: atEntity.target,\n cached_at: atEntity.cachedAt,\n expires_on: atEntity.expiresOn,\n extended_expires_on: atEntity.extendedExpiresOn,\n refresh_on: atEntity.refreshOn,\n key_id: atEntity.keyId,\n token_type: atEntity.tokenType,\n requestedClaims: atEntity.requestedClaims,\n requestedClaimsHash: atEntity.requestedClaimsHash,\n userAssertionHash: atEntity.userAssertionHash,\n };\n });\n\n return accessTokens;\n }\n\n /**\n * Serialize refreshTokens\n * @param rtCache - cache of refresh tokens\n */\n static serializeRefreshTokens(\n rtCache: RefreshTokenCache\n ): Record {\n const refreshTokens: Record = {};\n Object.keys(rtCache).map(function (key) {\n const rtEntity = rtCache[key];\n refreshTokens[key] = {\n home_account_id: rtEntity.homeAccountId,\n environment: rtEntity.environment,\n credential_type: rtEntity.credentialType,\n client_id: rtEntity.clientId,\n secret: rtEntity.secret,\n family_id: rtEntity.familyId,\n target: rtEntity.target,\n realm: rtEntity.realm,\n };\n });\n\n return refreshTokens;\n }\n\n /**\n * Serialize amdtCache\n * @param amdtCache - cache of app metadata\n */\n static serializeAppMetadata(\n amdtCache: AppMetadataCache\n ): Record {\n const appMetadata: Record = {};\n Object.keys(amdtCache).map(function (key) {\n const amdtEntity = amdtCache[key];\n appMetadata[key] = {\n client_id: amdtEntity.clientId,\n environment: amdtEntity.environment,\n family_id: amdtEntity.familyId,\n };\n });\n\n return appMetadata;\n }\n\n /**\n * Serialize the cache\n * @param inMemCache - itemised cache read from the JSON\n */\n static serializeAllCache(inMemCache: InMemoryCache): JsonCache {\n return {\n Account: this.serializeAccounts(inMemCache.accounts),\n IdToken: this.serializeIdTokens(inMemCache.idTokens),\n AccessToken: this.serializeAccessTokens(inMemCache.accessTokens),\n RefreshToken: this.serializeRefreshTokens(inMemCache.refreshTokens),\n AppMetadata: this.serializeAppMetadata(inMemCache.appMetadata),\n };\n }\n}\n", "/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nexport const Constants = {\n LIBRARY_NAME: \"MSAL.JS\",\n SKU: \"msal.js.common\",\n // Prefix for all library cache entries\n CACHE_PREFIX: \"msal\",\n // default authority\n DEFAULT_AUTHORITY: \"https://login.microsoftonline.com/common/\",\n DEFAULT_AUTHORITY_HOST: \"login.microsoftonline.com\",\n DEFAULT_COMMON_TENANT: \"common\",\n // ADFS String\n ADFS: \"adfs\",\n DSTS: \"dstsv2\",\n // Default AAD Instance Discovery Endpoint\n AAD_INSTANCE_DISCOVERY_ENDPT:\n \"https://login.microsoftonline.com/common/discovery/instance?api-version=1.1&authorization_endpoint=\",\n // CIAM URL\n CIAM_AUTH_URL: \".ciamlogin.com\",\n AAD_TENANT_DOMAIN_SUFFIX: \".onmicrosoft.com\",\n // Resource delimiter - used for certain cache entries\n RESOURCE_DELIM: \"|\",\n // Placeholder for non-existent account ids/objects\n NO_ACCOUNT: \"NO_ACCOUNT\",\n // Claims\n CLAIMS: \"claims\",\n // Consumer UTID\n CONSUMER_UTID: \"9188040d-6c67-4c5b-b112-36a304b66dad\",\n // Default scopes\n OPENID_SCOPE: \"openid\",\n PROFILE_SCOPE: \"profile\",\n OFFLINE_ACCESS_SCOPE: \"offline_access\",\n EMAIL_SCOPE: \"email\",\n CODE_GRANT_TYPE: \"authorization_code\",\n RT_GRANT_TYPE: \"refresh_token\",\n S256_CODE_CHALLENGE_METHOD: \"S256\",\n URL_FORM_CONTENT_TYPE: \"application/x-www-form-urlencoded;charset=utf-8\",\n AUTHORIZATION_PENDING: \"authorization_pending\",\n NOT_DEFINED: \"not_defined\",\n EMPTY_STRING: \"\",\n NOT_APPLICABLE: \"N/A\",\n NOT_AVAILABLE: \"Not Available\",\n FORWARD_SLASH: \"/\",\n IMDS_ENDPOINT: \"http://169.254.169.254/metadata/instance/compute/location\",\n IMDS_VERSION: \"2020-06-01\",\n IMDS_TIMEOUT: 2000,\n AZURE_REGION_AUTO_DISCOVER_FLAG: \"TryAutoDetect\",\n REGIONAL_AUTH_PUBLIC_CLOUD_SUFFIX: \"login.microsoft.com\",\n KNOWN_PUBLIC_CLOUDS: [\n \"login.microsoftonline.com\",\n \"login.windows.net\",\n \"login.microsoft.com\",\n \"sts.windows.net\",\n ],\n SHR_NONCE_VALIDITY: 240,\n INVALID_INSTANCE: \"invalid_instance\",\n};\n\nexport const HttpStatus = {\n SUCCESS: 200,\n SUCCESS_RANGE_START: 200,\n SUCCESS_RANGE_END: 299,\n REDIRECT: 302,\n CLIENT_ERROR: 400,\n CLIENT_ERROR_RANGE_START: 400,\n BAD_REQUEST: 400,\n UNAUTHORIZED: 401,\n NOT_FOUND: 404,\n REQUEST_TIMEOUT: 408,\n GONE: 410,\n TOO_MANY_REQUESTS: 429,\n CLIENT_ERROR_RANGE_END: 499,\n SERVER_ERROR: 500,\n SERVER_ERROR_RANGE_START: 500,\n SERVICE_UNAVAILABLE: 503,\n GATEWAY_TIMEOUT: 504,\n SERVER_ERROR_RANGE_END: 599,\n MULTI_SIDED_ERROR: 600,\n} as const;\nexport type HttpStatus = (typeof HttpStatus)[keyof typeof HttpStatus];\n\nexport const OIDC_DEFAULT_SCOPES = [\n Constants.OPENID_SCOPE,\n Constants.PROFILE_SCOPE,\n Constants.OFFLINE_ACCESS_SCOPE,\n];\n\nexport const OIDC_SCOPES = [...OIDC_DEFAULT_SCOPES, Constants.EMAIL_SCOPE];\n\n/**\n * Request header names\n */\nexport const HeaderNames = {\n CONTENT_TYPE: \"Content-Type\",\n CONTENT_LENGTH: \"Content-Length\",\n RETRY_AFTER: \"Retry-After\",\n CCS_HEADER: \"X-AnchorMailbox\",\n WWWAuthenticate: \"WWW-Authenticate\",\n AuthenticationInfo: \"Authentication-Info\",\n X_MS_REQUEST_ID: \"x-ms-request-id\",\n X_MS_HTTP_VERSION: \"x-ms-httpver\",\n} as const;\nexport type HeaderNames = (typeof HeaderNames)[keyof typeof HeaderNames];\n\n/**\n * Persistent cache keys MSAL which stay while user is logged in.\n */\nexport const PersistentCacheKeys = {\n ACTIVE_ACCOUNT_FILTERS: \"active-account-filters\", // new cache entry for active_account for a more robust version for browser\n} as const;\nexport type PersistentCacheKeys =\n (typeof PersistentCacheKeys)[keyof typeof PersistentCacheKeys];\n\n/**\n * String constants related to AAD Authority\n */\nexport const AADAuthorityConstants = {\n COMMON: \"common\",\n ORGANIZATIONS: \"organizations\",\n CONSUMERS: \"consumers\",\n} as const;\nexport type AADAuthorityConstants =\n (typeof AADAuthorityConstants)[keyof typeof AADAuthorityConstants];\n\n/**\n * Claims request keys\n */\nexport const ClaimsRequestKeys = {\n ACCESS_TOKEN: \"access_token\",\n XMS_CC: \"xms_cc\",\n} as const;\nexport type ClaimsRequestKeys =\n (typeof ClaimsRequestKeys)[keyof typeof ClaimsRequestKeys];\n\n/**\n * we considered making this \"enum\" in the request instead of string, however it looks like the allowed list of\n * prompt values kept changing over past couple of years. There are some undocumented prompt values for some\n * internal partners too, hence the choice of generic \"string\" type instead of the \"enum\"\n */\nexport const PromptValue = {\n LOGIN: \"login\",\n SELECT_ACCOUNT: \"select_account\",\n CONSENT: \"consent\",\n NONE: \"none\",\n CREATE: \"create\",\n NO_SESSION: \"no_session\",\n};\n\n/**\n * allowed values for codeVerifier\n */\nexport const CodeChallengeMethodValues = {\n PLAIN: \"plain\",\n S256: \"S256\",\n};\n\n/**\n * Allowed values for response_type\n */\nexport const OAuthResponseType = {\n CODE: \"code\",\n IDTOKEN_TOKEN: \"id_token token\",\n IDTOKEN_TOKEN_REFRESHTOKEN: \"id_token token refresh_token\",\n} as const;\nexport type OAuthResponseType =\n (typeof OAuthResponseType)[keyof typeof OAuthResponseType];\n\n/**\n * allowed values for server response type\n * @deprecated Use ResponseMode instead\n */\nexport const ServerResponseType = {\n QUERY: \"query\",\n FRAGMENT: \"fragment\",\n} as const;\nexport type ServerResponseType =\n (typeof ServerResponseType)[keyof typeof ServerResponseType];\n\n/**\n * allowed values for response_mode\n */\nexport const ResponseMode = {\n QUERY: \"query\",\n FRAGMENT: \"fragment\",\n FORM_POST: \"form_post\",\n} as const;\nexport type ResponseMode = (typeof ResponseMode)[keyof typeof ResponseMode];\n\n/**\n * allowed grant_type\n */\nexport const GrantType = {\n IMPLICIT_GRANT: \"implicit\",\n AUTHORIZATION_CODE_GRANT: \"authorization_code\",\n CLIENT_CREDENTIALS_GRANT: \"client_credentials\",\n RESOURCE_OWNER_PASSWORD_GRANT: \"password\",\n REFRESH_TOKEN_GRANT: \"refresh_token\",\n DEVICE_CODE_GRANT: \"device_code\",\n JWT_BEARER: \"urn:ietf:params:oauth:grant-type:jwt-bearer\",\n} as const;\nexport type GrantType = (typeof GrantType)[keyof typeof GrantType];\n\n/**\n * Account types in Cache\n */\nexport const CacheAccountType = {\n MSSTS_ACCOUNT_TYPE: \"MSSTS\",\n ADFS_ACCOUNT_TYPE: \"ADFS\",\n MSAV1_ACCOUNT_TYPE: \"MSA\",\n GENERIC_ACCOUNT_TYPE: \"Generic\", // NTLM, Kerberos, FBA, Basic etc\n} as const;\nexport type CacheAccountType =\n (typeof CacheAccountType)[keyof typeof CacheAccountType];\n\n/**\n * Separators used in cache\n */\nexport const Separators = {\n CACHE_KEY_SEPARATOR: \"-\",\n CLIENT_INFO_SEPARATOR: \".\",\n} as const;\nexport type Separators = (typeof Separators)[keyof typeof Separators];\n\n/**\n * Credential Type stored in the cache\n */\nexport const CredentialType = {\n ID_TOKEN: \"IdToken\",\n ACCESS_TOKEN: \"AccessToken\",\n ACCESS_TOKEN_WITH_AUTH_SCHEME: \"AccessToken_With_AuthScheme\",\n REFRESH_TOKEN: \"RefreshToken\",\n} as const;\nexport type CredentialType =\n (typeof CredentialType)[keyof typeof CredentialType];\n\n/**\n * Combine all cache types\n */\nexport const CacheType = {\n ADFS: 1001,\n MSA: 1002,\n MSSTS: 1003,\n GENERIC: 1004,\n ACCESS_TOKEN: 2001,\n REFRESH_TOKEN: 2002,\n ID_TOKEN: 2003,\n APP_METADATA: 3001,\n UNDEFINED: 9999,\n} as const;\nexport type CacheType = (typeof CacheType)[keyof typeof CacheType];\n\n/**\n * More Cache related constants\n */\nexport const APP_METADATA = \"appmetadata\";\nexport const CLIENT_INFO = \"client_info\";\nexport const THE_FAMILY_ID = \"1\";\n\nexport const AUTHORITY_METADATA_CONSTANTS = {\n CACHE_KEY: \"authority-metadata\",\n REFRESH_TIME_SECONDS: 3600 * 24, // 24 Hours\n};\n\nexport const AuthorityMetadataSource = {\n CONFIG: \"config\",\n CACHE: \"cache\",\n NETWORK: \"network\",\n HARDCODED_VALUES: \"hardcoded_values\",\n} as const;\nexport type AuthorityMetadataSource =\n (typeof AuthorityMetadataSource)[keyof typeof AuthorityMetadataSource];\n\nexport const SERVER_TELEM_CONSTANTS = {\n SCHEMA_VERSION: 5,\n MAX_CUR_HEADER_BYTES: 80, // ESTS limit is 100B, set to 80 to provide a 20B buffer\n MAX_LAST_HEADER_BYTES: 330, // ESTS limit is 350B, set to 330 to provide a 20B buffer,\n MAX_CACHED_ERRORS: 50, // Limit the number of errors that can be stored to prevent uncontrolled size gains\n CACHE_KEY: \"server-telemetry\",\n CATEGORY_SEPARATOR: \"|\",\n VALUE_SEPARATOR: \",\",\n OVERFLOW_TRUE: \"1\",\n OVERFLOW_FALSE: \"0\",\n UNKNOWN_ERROR: \"unknown_error\",\n};\n\n/**\n * Type of the authentication request\n */\nexport const AuthenticationScheme = {\n BEARER: \"Bearer\",\n POP: \"pop\",\n SSH: \"ssh-cert\",\n} as const;\nexport type AuthenticationScheme =\n (typeof AuthenticationScheme)[keyof typeof AuthenticationScheme];\n\n/**\n * Constants related to throttling\n */\nexport const ThrottlingConstants = {\n // Default time to throttle RequestThumbprint in seconds\n DEFAULT_THROTTLE_TIME_SECONDS: 60,\n // Default maximum time to throttle in seconds, overrides what the server sends back\n DEFAULT_MAX_THROTTLE_TIME_SECONDS: 3600,\n // Prefix for storing throttling entries\n THROTTLING_PREFIX: \"throttling\",\n // Value assigned to the x-ms-lib-capability header to indicate to the server the library supports throttling\n X_MS_LIB_CAPABILITY_VALUE: \"retry-after, h429\",\n};\n\nexport const Errors = {\n INVALID_GRANT_ERROR: \"invalid_grant\",\n CLIENT_MISMATCH_ERROR: \"client_mismatch\",\n};\n\n/**\n * Password grant parameters\n */\nexport const PasswordGrantConstants = {\n username: \"username\",\n password: \"password\",\n} as const;\nexport type PasswordGrantConstants =\n (typeof PasswordGrantConstants)[keyof typeof PasswordGrantConstants];\n\n/**\n * Region Discovery Sources\n */\nexport const RegionDiscoverySources = {\n FAILED_AUTO_DETECTION: \"1\",\n INTERNAL_CACHE: \"2\",\n ENVIRONMENT_VARIABLE: \"3\",\n IMDS: \"4\",\n} as const;\nexport type RegionDiscoverySources =\n (typeof RegionDiscoverySources)[keyof typeof RegionDiscoverySources];\n\n/**\n * Region Discovery Outcomes\n */\nexport const RegionDiscoveryOutcomes = {\n CONFIGURED_MATCHES_DETECTED: \"1\",\n CONFIGURED_NO_AUTO_DETECTION: \"2\",\n CONFIGURED_NOT_DETECTED: \"3\",\n AUTO_DETECTION_REQUESTED_SUCCESSFUL: \"4\",\n AUTO_DETECTION_REQUESTED_FAILED: \"5\",\n} as const;\nexport type RegionDiscoveryOutcomes =\n (typeof RegionDiscoveryOutcomes)[keyof typeof RegionDiscoveryOutcomes];\n\n/**\n * Specifies the reason for fetching the access token from the identity provider\n */\nexport const CacheOutcome = {\n // When a token is found in the cache or the cache is not supposed to be hit when making the request\n NOT_APPLICABLE: \"0\",\n // When the token request goes to the identity provider because force_refresh was set to true. Also occurs if claims were requested\n FORCE_REFRESH_OR_CLAIMS: \"1\",\n // When the token request goes to the identity provider because no cached access token exists\n NO_CACHED_ACCESS_TOKEN: \"2\",\n // When the token request goes to the identity provider because cached access token expired\n CACHED_ACCESS_TOKEN_EXPIRED: \"3\",\n // When the token request goes to the identity provider because refresh_in was used and the existing token needs to be refreshed\n PROACTIVELY_REFRESHED: \"4\",\n} as const;\nexport type CacheOutcome = (typeof CacheOutcome)[keyof typeof CacheOutcome];\n\nexport const JsonWebTokenTypes = {\n Jwt: \"JWT\",\n Jwk: \"JWK\",\n Pop: \"pop\",\n} as const;\nexport type JsonWebTokenTypes =\n (typeof JsonWebTokenTypes)[keyof typeof JsonWebTokenTypes];\n\nexport const ONE_DAY_IN_MS = 86400000;\n\n// Token renewal offset default in seconds\nexport const DEFAULT_TOKEN_RENEWAL_OFFSET_SEC = 300;\n\nexport const EncodingTypes = {\n BASE64: \"base64\",\n HEX: \"hex\",\n UTF8: \"utf-8\",\n} as const;\nexport type EncodingTypes = (typeof EncodingTypes)[keyof typeof EncodingTypes];\n", "/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\n/**\n * AuthErrorMessage class containing string constants used by error codes and messages.\n */\nexport const unexpectedError = \"unexpected_error\";\nexport const postRequestFailed = \"post_request_failed\";\n", "/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { Constants } from \"../utils/Constants.js\";\nimport * as AuthErrorCodes from \"./AuthErrorCodes.js\";\nexport { AuthErrorCodes };\n\nexport const AuthErrorMessages = {\n [AuthErrorCodes.unexpectedError]: \"Unexpected error in authentication.\",\n [AuthErrorCodes.postRequestFailed]:\n \"Post request failed from the network, could be a 4xx/5xx or a network unavailability. Please check the exact error code for details.\",\n};\n\n/**\n * AuthErrorMessage class containing string constants used by error codes and messages.\n * @deprecated Use AuthErrorCodes instead\n */\nexport const AuthErrorMessage = {\n unexpectedError: {\n code: AuthErrorCodes.unexpectedError,\n desc: AuthErrorMessages[AuthErrorCodes.unexpectedError],\n },\n postRequestFailed: {\n code: AuthErrorCodes.postRequestFailed,\n desc: AuthErrorMessages[AuthErrorCodes.postRequestFailed],\n },\n};\n\n/**\n * General error class thrown by the MSAL.js library.\n */\nexport class AuthError extends Error {\n /**\n * Short string denoting error\n */\n errorCode: string;\n\n /**\n * Detailed description of error\n */\n errorMessage: string;\n\n /**\n * Describes the subclass of an error\n */\n subError: string;\n\n /**\n * CorrelationId associated with the error\n */\n correlationId: string;\n\n constructor(errorCode?: string, errorMessage?: string, suberror?: string) {\n const errorString = errorMessage\n ? `${errorCode}: ${errorMessage}`\n : errorCode;\n super(errorString);\n Object.setPrototypeOf(this, AuthError.prototype);\n\n this.errorCode = errorCode || Constants.EMPTY_STRING;\n this.errorMessage = errorMessage || Constants.EMPTY_STRING;\n this.subError = suberror || Constants.EMPTY_STRING;\n this.name = \"AuthError\";\n }\n\n setCorrelationId(correlationId: string): void {\n this.correlationId = correlationId;\n }\n}\n\nexport function createAuthError(\n code: string,\n additionalMessage?: string\n): AuthError {\n return new AuthError(\n code,\n additionalMessage\n ? `${AuthErrorMessages[code]} ${additionalMessage}`\n : AuthErrorMessages[code]\n );\n}\n", "/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nexport const clientInfoDecodingError = \"client_info_decoding_error\";\nexport const clientInfoEmptyError = \"client_info_empty_error\";\nexport const tokenParsingError = \"token_parsing_error\";\nexport const nullOrEmptyToken = \"null_or_empty_token\";\nexport const endpointResolutionError = \"endpoints_resolution_error\";\nexport const networkError = \"network_error\";\nexport const openIdConfigError = \"openid_config_error\";\nexport const hashNotDeserialized = \"hash_not_deserialized\";\nexport const invalidState = \"invalid_state\";\nexport const stateMismatch = \"state_mismatch\";\nexport const stateNotFound = \"state_not_found\";\nexport const nonceMismatch = \"nonce_mismatch\";\nexport const authTimeNotFound = \"auth_time_not_found\";\nexport const maxAgeTranspired = \"max_age_transpired\";\nexport const multipleMatchingTokens = \"multiple_matching_tokens\";\nexport const multipleMatchingAccounts = \"multiple_matching_accounts\";\nexport const multipleMatchingAppMetadata = \"multiple_matching_appMetadata\";\nexport const requestCannotBeMade = \"request_cannot_be_made\";\nexport const cannotRemoveEmptyScope = \"cannot_remove_empty_scope\";\nexport const cannotAppendScopeSet = \"cannot_append_scopeset\";\nexport const emptyInputScopeSet = \"empty_input_scopeset\";\nexport const deviceCodePollingCancelled = \"device_code_polling_cancelled\";\nexport const deviceCodeExpired = \"device_code_expired\";\nexport const deviceCodeUnknownError = \"device_code_unknown_error\";\nexport const noAccountInSilentRequest = \"no_account_in_silent_request\";\nexport const invalidCacheRecord = \"invalid_cache_record\";\nexport const invalidCacheEnvironment = \"invalid_cache_environment\";\nexport const noAccountFound = \"no_account_found\";\nexport const noCryptoObject = \"no_crypto_object\";\nexport const unexpectedCredentialType = \"unexpected_credential_type\";\nexport const invalidAssertion = \"invalid_assertion\";\nexport const invalidClientCredential = \"invalid_client_credential\";\nexport const tokenRefreshRequired = \"token_refresh_required\";\nexport const userTimeoutReached = \"user_timeout_reached\";\nexport const tokenClaimsCnfRequiredForSignedJwt =\n \"token_claims_cnf_required_for_signedjwt\";\nexport const authorizationCodeMissingFromServerResponse =\n \"authorization_code_missing_from_server_response\";\nexport const bindingKeyNotRemoved = \"binding_key_not_removed\";\nexport const endSessionEndpointNotSupported =\n \"end_session_endpoint_not_supported\";\nexport const keyIdMissing = \"key_id_missing\";\nexport const noNetworkConnectivity = \"no_network_connectivity\";\nexport const userCanceled = \"user_canceled\";\nexport const missingTenantIdError = \"missing_tenant_id_error\";\nexport const methodNotImplemented = \"method_not_implemented\";\nexport const nestedAppAuthBridgeDisabled = \"nested_app_auth_bridge_disabled\";\n", "/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { AuthError } from \"./AuthError.js\";\nimport * as ClientAuthErrorCodes from \"./ClientAuthErrorCodes.js\";\nexport { ClientAuthErrorCodes }; // Allow importing as \"ClientAuthErrorCodes\";\n\n/**\n * ClientAuthErrorMessage class containing string constants used by error codes and messages.\n */\n\nexport const ClientAuthErrorMessages = {\n [ClientAuthErrorCodes.clientInfoDecodingError]:\n \"The client info could not be parsed/decoded correctly\",\n [ClientAuthErrorCodes.clientInfoEmptyError]: \"The client info was empty\",\n [ClientAuthErrorCodes.tokenParsingError]: \"Token cannot be parsed\",\n [ClientAuthErrorCodes.nullOrEmptyToken]: \"The token is null or empty\",\n [ClientAuthErrorCodes.endpointResolutionError]:\n \"Endpoints cannot be resolved\",\n [ClientAuthErrorCodes.networkError]: \"Network request failed\",\n [ClientAuthErrorCodes.openIdConfigError]:\n \"Could not retrieve endpoints. Check your authority and verify the .well-known/openid-configuration endpoint returns the required endpoints.\",\n [ClientAuthErrorCodes.hashNotDeserialized]:\n \"The hash parameters could not be deserialized\",\n [ClientAuthErrorCodes.invalidState]: \"State was not the expected format\",\n [ClientAuthErrorCodes.stateMismatch]: \"State mismatch error\",\n [ClientAuthErrorCodes.stateNotFound]: \"State not found\",\n [ClientAuthErrorCodes.nonceMismatch]: \"Nonce mismatch error\",\n [ClientAuthErrorCodes.authTimeNotFound]:\n \"Max Age was requested and the ID token is missing the auth_time variable.\" +\n \" auth_time is an optional claim and is not enabled by default - it must be enabled.\" +\n \" See https://aka.ms/msaljs/optional-claims for more information.\",\n [ClientAuthErrorCodes.maxAgeTranspired]:\n \"Max Age is set to 0, or too much time has elapsed since the last end-user authentication.\",\n [ClientAuthErrorCodes.multipleMatchingTokens]:\n \"The cache contains multiple tokens satisfying the requirements. \" +\n \"Call AcquireToken again providing more requirements such as authority or account.\",\n [ClientAuthErrorCodes.multipleMatchingAccounts]:\n \"The cache contains multiple accounts satisfying the given parameters. Please pass more info to obtain the correct account\",\n [ClientAuthErrorCodes.multipleMatchingAppMetadata]:\n \"The cache contains multiple appMetadata satisfying the given parameters. Please pass more info to obtain the correct appMetadata\",\n [ClientAuthErrorCodes.requestCannotBeMade]:\n \"Token request cannot be made without authorization code or refresh token.\",\n [ClientAuthErrorCodes.cannotRemoveEmptyScope]:\n \"Cannot remove null or empty scope from ScopeSet\",\n [ClientAuthErrorCodes.cannotAppendScopeSet]: \"Cannot append ScopeSet\",\n [ClientAuthErrorCodes.emptyInputScopeSet]:\n \"Empty input ScopeSet cannot be processed\",\n [ClientAuthErrorCodes.deviceCodePollingCancelled]:\n \"Caller has cancelled token endpoint polling during device code flow by setting DeviceCodeRequest.cancel = true.\",\n [ClientAuthErrorCodes.deviceCodeExpired]: \"Device code is expired.\",\n [ClientAuthErrorCodes.deviceCodeUnknownError]:\n \"Device code stopped polling for unknown reasons.\",\n [ClientAuthErrorCodes.noAccountInSilentRequest]:\n \"Please pass an account object, silent flow is not supported without account information\",\n [ClientAuthErrorCodes.invalidCacheRecord]:\n \"Cache record object was null or undefined.\",\n [ClientAuthErrorCodes.invalidCacheEnvironment]:\n \"Invalid environment when attempting to create cache entry\",\n [ClientAuthErrorCodes.noAccountFound]:\n \"No account found in cache for given key.\",\n [ClientAuthErrorCodes.noCryptoObject]: \"No crypto object detected.\",\n [ClientAuthErrorCodes.unexpectedCredentialType]:\n \"Unexpected credential type.\",\n [ClientAuthErrorCodes.invalidAssertion]:\n \"Client assertion must meet requirements described in https://tools.ietf.org/html/rfc7515\",\n [ClientAuthErrorCodes.invalidClientCredential]:\n \"Client credential (secret, certificate, or assertion) must not be empty when creating a confidential client. An application should at most have one credential\",\n [ClientAuthErrorCodes.tokenRefreshRequired]:\n \"Cannot return token from cache because it must be refreshed. This may be due to one of the following reasons: forceRefresh parameter is set to true, claims have been requested, there is no cached access token or it is expired.\",\n [ClientAuthErrorCodes.userTimeoutReached]:\n \"User defined timeout for device code polling reached\",\n [ClientAuthErrorCodes.tokenClaimsCnfRequiredForSignedJwt]:\n \"Cannot generate a POP jwt if the token_claims are not populated\",\n [ClientAuthErrorCodes.authorizationCodeMissingFromServerResponse]:\n \"Server response does not contain an authorization code to proceed\",\n [ClientAuthErrorCodes.bindingKeyNotRemoved]:\n \"Could not remove the credential's binding key from storage.\",\n [ClientAuthErrorCodes.endSessionEndpointNotSupported]:\n \"The provided authority does not support logout\",\n [ClientAuthErrorCodes.keyIdMissing]:\n \"A keyId value is missing from the requested bound token's cache record and is required to match the token to it's stored binding key.\",\n [ClientAuthErrorCodes.noNetworkConnectivity]:\n \"No network connectivity. Check your internet connection.\",\n [ClientAuthErrorCodes.userCanceled]: \"User cancelled the flow.\",\n [ClientAuthErrorCodes.missingTenantIdError]:\n \"A tenant id - not common, organizations, or consumers - must be specified when using the client_credentials flow.\",\n [ClientAuthErrorCodes.methodNotImplemented]:\n \"This method has not been implemented\",\n [ClientAuthErrorCodes.nestedAppAuthBridgeDisabled]:\n \"The nested app auth bridge is disabled\",\n};\n\n/**\n * String constants used by error codes and messages.\n * @deprecated Use ClientAuthErrorCodes instead\n */\nexport const ClientAuthErrorMessage = {\n clientInfoDecodingError: {\n code: ClientAuthErrorCodes.clientInfoDecodingError,\n desc: ClientAuthErrorMessages[\n ClientAuthErrorCodes.clientInfoDecodingError\n ],\n },\n clientInfoEmptyError: {\n code: ClientAuthErrorCodes.clientInfoEmptyError,\n desc: ClientAuthErrorMessages[\n ClientAuthErrorCodes.clientInfoEmptyError\n ],\n },\n tokenParsingError: {\n code: ClientAuthErrorCodes.tokenParsingError,\n desc: ClientAuthErrorMessages[ClientAuthErrorCodes.tokenParsingError],\n },\n nullOrEmptyToken: {\n code: ClientAuthErrorCodes.nullOrEmptyToken,\n desc: ClientAuthErrorMessages[ClientAuthErrorCodes.nullOrEmptyToken],\n },\n endpointResolutionError: {\n code: ClientAuthErrorCodes.endpointResolutionError,\n desc: ClientAuthErrorMessages[\n ClientAuthErrorCodes.endpointResolutionError\n ],\n },\n networkError: {\n code: ClientAuthErrorCodes.networkError,\n desc: ClientAuthErrorMessages[ClientAuthErrorCodes.networkError],\n },\n unableToGetOpenidConfigError: {\n code: ClientAuthErrorCodes.openIdConfigError,\n desc: ClientAuthErrorMessages[ClientAuthErrorCodes.openIdConfigError],\n },\n hashNotDeserialized: {\n code: ClientAuthErrorCodes.hashNotDeserialized,\n desc: ClientAuthErrorMessages[ClientAuthErrorCodes.hashNotDeserialized],\n },\n invalidStateError: {\n code: ClientAuthErrorCodes.invalidState,\n desc: ClientAuthErrorMessages[ClientAuthErrorCodes.invalidState],\n },\n stateMismatchError: {\n code: ClientAuthErrorCodes.stateMismatch,\n desc: ClientAuthErrorMessages[ClientAuthErrorCodes.stateMismatch],\n },\n stateNotFoundError: {\n code: ClientAuthErrorCodes.stateNotFound,\n desc: ClientAuthErrorMessages[ClientAuthErrorCodes.stateNotFound],\n },\n nonceMismatchError: {\n code: ClientAuthErrorCodes.nonceMismatch,\n desc: ClientAuthErrorMessages[ClientAuthErrorCodes.nonceMismatch],\n },\n authTimeNotFoundError: {\n code: ClientAuthErrorCodes.authTimeNotFound,\n desc: ClientAuthErrorMessages[ClientAuthErrorCodes.authTimeNotFound],\n },\n maxAgeTranspired: {\n code: ClientAuthErrorCodes.maxAgeTranspired,\n desc: ClientAuthErrorMessages[ClientAuthErrorCodes.maxAgeTranspired],\n },\n multipleMatchingTokens: {\n code: ClientAuthErrorCodes.multipleMatchingTokens,\n desc: ClientAuthErrorMessages[\n ClientAuthErrorCodes.multipleMatchingTokens\n ],\n },\n multipleMatchingAccounts: {\n code: ClientAuthErrorCodes.multipleMatchingAccounts,\n desc: ClientAuthErrorMessages[\n ClientAuthErrorCodes.multipleMatchingAccounts\n ],\n },\n multipleMatchingAppMetadata: {\n code: ClientAuthErrorCodes.multipleMatchingAppMetadata,\n desc: ClientAuthErrorMessages[\n ClientAuthErrorCodes.multipleMatchingAppMetadata\n ],\n },\n tokenRequestCannotBeMade: {\n code: ClientAuthErrorCodes.requestCannotBeMade,\n desc: ClientAuthErrorMessages[ClientAuthErrorCodes.requestCannotBeMade],\n },\n removeEmptyScopeError: {\n code: ClientAuthErrorCodes.cannotRemoveEmptyScope,\n desc: ClientAuthErrorMessages[\n ClientAuthErrorCodes.cannotRemoveEmptyScope\n ],\n },\n appendScopeSetError: {\n code: ClientAuthErrorCodes.cannotAppendScopeSet,\n desc: ClientAuthErrorMessages[\n ClientAuthErrorCodes.cannotAppendScopeSet\n ],\n },\n emptyInputScopeSetError: {\n code: ClientAuthErrorCodes.emptyInputScopeSet,\n desc: ClientAuthErrorMessages[ClientAuthErrorCodes.emptyInputScopeSet],\n },\n DeviceCodePollingCancelled: {\n code: ClientAuthErrorCodes.deviceCodePollingCancelled,\n desc: ClientAuthErrorMessages[\n ClientAuthErrorCodes.deviceCodePollingCancelled\n ],\n },\n DeviceCodeExpired: {\n code: ClientAuthErrorCodes.deviceCodeExpired,\n desc: ClientAuthErrorMessages[ClientAuthErrorCodes.deviceCodeExpired],\n },\n DeviceCodeUnknownError: {\n code: ClientAuthErrorCodes.deviceCodeUnknownError,\n desc: ClientAuthErrorMessages[\n ClientAuthErrorCodes.deviceCodeUnknownError\n ],\n },\n NoAccountInSilentRequest: {\n code: ClientAuthErrorCodes.noAccountInSilentRequest,\n desc: ClientAuthErrorMessages[\n ClientAuthErrorCodes.noAccountInSilentRequest\n ],\n },\n invalidCacheRecord: {\n code: ClientAuthErrorCodes.invalidCacheRecord,\n desc: ClientAuthErrorMessages[ClientAuthErrorCodes.invalidCacheRecord],\n },\n invalidCacheEnvironment: {\n code: ClientAuthErrorCodes.invalidCacheEnvironment,\n desc: ClientAuthErrorMessages[\n ClientAuthErrorCodes.invalidCacheEnvironment\n ],\n },\n noAccountFound: {\n code: ClientAuthErrorCodes.noAccountFound,\n desc: ClientAuthErrorMessages[ClientAuthErrorCodes.noAccountFound],\n },\n noCryptoObj: {\n code: ClientAuthErrorCodes.noCryptoObject,\n desc: ClientAuthErrorMessages[ClientAuthErrorCodes.noCryptoObject],\n },\n unexpectedCredentialType: {\n code: ClientAuthErrorCodes.unexpectedCredentialType,\n desc: ClientAuthErrorMessages[\n ClientAuthErrorCodes.unexpectedCredentialType\n ],\n },\n invalidAssertion: {\n code: ClientAuthErrorCodes.invalidAssertion,\n desc: ClientAuthErrorMessages[ClientAuthErrorCodes.invalidAssertion],\n },\n invalidClientCredential: {\n code: ClientAuthErrorCodes.invalidClientCredential,\n desc: ClientAuthErrorMessages[\n ClientAuthErrorCodes.invalidClientCredential\n ],\n },\n tokenRefreshRequired: {\n code: ClientAuthErrorCodes.tokenRefreshRequired,\n desc: ClientAuthErrorMessages[\n ClientAuthErrorCodes.tokenRefreshRequired\n ],\n },\n userTimeoutReached: {\n code: ClientAuthErrorCodes.userTimeoutReached,\n desc: ClientAuthErrorMessages[ClientAuthErrorCodes.userTimeoutReached],\n },\n tokenClaimsRequired: {\n code: ClientAuthErrorCodes.tokenClaimsCnfRequiredForSignedJwt,\n desc: ClientAuthErrorMessages[\n ClientAuthErrorCodes.tokenClaimsCnfRequiredForSignedJwt\n ],\n },\n noAuthorizationCodeFromServer: {\n code: ClientAuthErrorCodes.authorizationCodeMissingFromServerResponse,\n desc: ClientAuthErrorMessages[\n ClientAuthErrorCodes.authorizationCodeMissingFromServerResponse\n ],\n },\n bindingKeyNotRemovedError: {\n code: ClientAuthErrorCodes.bindingKeyNotRemoved,\n desc: ClientAuthErrorMessages[\n ClientAuthErrorCodes.bindingKeyNotRemoved\n ],\n },\n logoutNotSupported: {\n code: ClientAuthErrorCodes.endSessionEndpointNotSupported,\n desc: ClientAuthErrorMessages[\n ClientAuthErrorCodes.endSessionEndpointNotSupported\n ],\n },\n keyIdMissing: {\n code: ClientAuthErrorCodes.keyIdMissing,\n desc: ClientAuthErrorMessages[ClientAuthErrorCodes.keyIdMissing],\n },\n noNetworkConnectivity: {\n code: ClientAuthErrorCodes.noNetworkConnectivity,\n desc: ClientAuthErrorMessages[\n ClientAuthErrorCodes.noNetworkConnectivity\n ],\n },\n userCanceledError: {\n code: ClientAuthErrorCodes.userCanceled,\n desc: ClientAuthErrorMessages[ClientAuthErrorCodes.userCanceled],\n },\n missingTenantIdError: {\n code: ClientAuthErrorCodes.missingTenantIdError,\n desc: ClientAuthErrorMessages[\n ClientAuthErrorCodes.missingTenantIdError\n ],\n },\n nestedAppAuthBridgeDisabled: {\n code: ClientAuthErrorCodes.nestedAppAuthBridgeDisabled,\n desc: ClientAuthErrorMessages[\n ClientAuthErrorCodes.nestedAppAuthBridgeDisabled\n ],\n },\n};\n\n/**\n * Error thrown when there is an error in the client code running on the browser.\n */\nexport class ClientAuthError extends AuthError {\n constructor(errorCode: string, additionalMessage?: string) {\n super(\n errorCode,\n additionalMessage\n ? `${ClientAuthErrorMessages[errorCode]}: ${additionalMessage}`\n : ClientAuthErrorMessages[errorCode]\n );\n this.name = \"ClientAuthError\";\n\n Object.setPrototypeOf(this, ClientAuthError.prototype);\n }\n}\n\nexport function createClientAuthError(\n errorCode: string,\n additionalMessage?: string\n): ClientAuthError {\n return new ClientAuthError(errorCode, additionalMessage);\n}\n", "/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport {\n ClientAuthErrorCodes,\n createClientAuthError,\n} from \"../error/ClientAuthError.js\";\nimport type { BaseAuthRequest } from \"../request/BaseAuthRequest.js\";\nimport type { ShrOptions, SignedHttpRequest } from \"./SignedHttpRequest.js\";\n\n/**\n * The PkceCodes type describes the structure\n * of objects that contain PKCE code\n * challenge and verifier pairs\n */\nexport type PkceCodes = {\n verifier: string;\n challenge: string;\n};\n\nexport type SignedHttpRequestParameters = Pick<\n BaseAuthRequest,\n | \"resourceRequestMethod\"\n | \"resourceRequestUri\"\n | \"shrClaims\"\n | \"shrNonce\"\n | \"shrOptions\"\n> & {\n correlationId?: string;\n};\n\n/**\n * Interface for crypto functions used by library\n */\nexport interface ICrypto {\n /**\n * Creates a guid randomly.\n */\n createNewGuid(): string;\n /**\n * base64 Encode string\n * @param input\n */\n base64Encode(input: string): string;\n /**\n * base64 decode string\n * @param input\n */\n base64Decode(input: string): string;\n /**\n * base64 URL safe encoded string\n */\n base64UrlEncode(input: string): string;\n /**\n * Stringifies and base64Url encodes input public key\n * @param inputKid\n * @returns Base64Url encoded public key\n */\n encodeKid(inputKid: string): string;\n /**\n * Generates an JWK RSA S256 Thumbprint\n * @param request\n */\n getPublicKeyThumbprint(\n request: SignedHttpRequestParameters\n ): Promise;\n /**\n * Removes cryptographic keypair from key store matching the keyId passed in\n * @param kid\n */\n removeTokenBindingKey(kid: string): Promise;\n /**\n * Removes all cryptographic keys from IndexedDB storage\n */\n clearKeystore(): Promise;\n /**\n * Returns a signed proof-of-possession token with a given acces token that contains a cnf claim with the required kid.\n * @param accessToken\n */\n signJwt(\n payload: SignedHttpRequest,\n kid: string,\n shrOptions?: ShrOptions,\n correlationId?: string\n ): Promise;\n /**\n * Returns the SHA-256 hash of an input string\n * @param plainText\n */\n hashString(plainText: string): Promise;\n}\n\nexport const DEFAULT_CRYPTO_IMPLEMENTATION: ICrypto = {\n createNewGuid: (): string => {\n throw createClientAuthError(ClientAuthErrorCodes.methodNotImplemented);\n },\n base64Decode: (): string => {\n throw createClientAuthError(ClientAuthErrorCodes.methodNotImplemented);\n },\n base64Encode: (): string => {\n throw createClientAuthError(ClientAuthErrorCodes.methodNotImplemented);\n },\n base64UrlEncode: (): string => {\n throw createClientAuthError(ClientAuthErrorCodes.methodNotImplemented);\n },\n encodeKid: (): string => {\n throw createClientAuthError(ClientAuthErrorCodes.methodNotImplemented);\n },\n async getPublicKeyThumbprint(): Promise {\n throw createClientAuthError(ClientAuthErrorCodes.methodNotImplemented);\n },\n async removeTokenBindingKey(): Promise {\n throw createClientAuthError(ClientAuthErrorCodes.methodNotImplemented);\n },\n async clearKeystore(): Promise {\n throw createClientAuthError(ClientAuthErrorCodes.methodNotImplemented);\n },\n async signJwt(): Promise {\n throw createClientAuthError(ClientAuthErrorCodes.methodNotImplemented);\n },\n async hashString(): Promise {\n throw createClientAuthError(ClientAuthErrorCodes.methodNotImplemented);\n },\n};\n", "/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport type { LoggerOptions } from \"../config/ClientConfiguration.js\";\nimport { Constants } from \"../utils/Constants.js\";\n\n/**\n * Options for logger messages.\n */\nexport type LoggerMessageOptions = {\n logLevel: LogLevel;\n containsPii?: boolean;\n context?: string;\n correlationId?: string;\n};\n\n/**\n * Log message level.\n */\nexport enum LogLevel {\n Error,\n Warning,\n Info,\n Verbose,\n Trace,\n}\n\n/**\n * Callback to send the messages to.\n */\nexport interface ILoggerCallback {\n (level: LogLevel, message: string, containsPii: boolean): void;\n}\n\n/**\n * Class which facilitates logging of messages to a specific place.\n */\nexport class Logger {\n // Correlation ID for request, usually set by user.\n private correlationId: string;\n\n // Current log level, defaults to info.\n private level: LogLevel = LogLevel.Info;\n\n // Boolean describing whether PII logging is allowed.\n private piiLoggingEnabled: boolean;\n\n // Callback to send messages to.\n private localCallback: ILoggerCallback;\n\n // Package name implementing this logger\n private packageName: string;\n\n // Package version implementing this logger\n private packageVersion: string;\n\n constructor(\n loggerOptions: LoggerOptions,\n packageName?: string,\n packageVersion?: string\n ) {\n const defaultLoggerCallback = () => {\n return;\n };\n const setLoggerOptions =\n loggerOptions || Logger.createDefaultLoggerOptions();\n this.localCallback =\n setLoggerOptions.loggerCallback || defaultLoggerCallback;\n this.piiLoggingEnabled = setLoggerOptions.piiLoggingEnabled || false;\n this.level =\n typeof setLoggerOptions.logLevel === \"number\"\n ? setLoggerOptions.logLevel\n : LogLevel.Info;\n this.correlationId =\n setLoggerOptions.correlationId || Constants.EMPTY_STRING;\n this.packageName = packageName || Constants.EMPTY_STRING;\n this.packageVersion = packageVersion || Constants.EMPTY_STRING;\n }\n\n private static createDefaultLoggerOptions(): LoggerOptions {\n return {\n loggerCallback: () => {\n // allow users to not set loggerCallback\n },\n piiLoggingEnabled: false,\n logLevel: LogLevel.Info,\n };\n }\n\n /**\n * Create new Logger with existing configurations.\n */\n public clone(\n packageName: string,\n packageVersion: string,\n correlationId?: string\n ): Logger {\n return new Logger(\n {\n loggerCallback: this.localCallback,\n piiLoggingEnabled: this.piiLoggingEnabled,\n logLevel: this.level,\n correlationId: correlationId || this.correlationId,\n },\n packageName,\n packageVersion\n );\n }\n\n /**\n * Log message with required options.\n */\n private logMessage(\n logMessage: string,\n options: LoggerMessageOptions\n ): void {\n if (\n options.logLevel > this.level ||\n (!this.piiLoggingEnabled && options.containsPii)\n ) {\n return;\n }\n const timestamp = new Date().toUTCString();\n\n // Add correlationId to logs if set, correlationId provided on log messages take precedence\n const logHeader = `[${timestamp}] : [${\n options.correlationId || this.correlationId || \"\"\n }]`;\n\n const log = `${logHeader} : ${this.packageName}@${\n this.packageVersion\n } : ${LogLevel[options.logLevel]} - ${logMessage}`;\n // debug(`msal:${LogLevel[options.logLevel]}${options.containsPii ? \"-Pii\": Constants.EMPTY_STRING}${options.context ? `:${options.context}` : Constants.EMPTY_STRING}`)(logMessage);\n this.executeCallback(\n options.logLevel,\n log,\n options.containsPii || false\n );\n }\n\n /**\n * Execute callback with message.\n */\n executeCallback(\n level: LogLevel,\n message: string,\n containsPii: boolean\n ): void {\n if (this.localCallback) {\n this.localCallback(level, message, containsPii);\n }\n }\n\n /**\n * Logs error messages.\n */\n error(message: string, correlationId?: string): void {\n this.logMessage(message, {\n logLevel: LogLevel.Error,\n containsPii: false,\n correlationId: correlationId || Constants.EMPTY_STRING,\n });\n }\n\n /**\n * Logs error messages with PII.\n */\n errorPii(message: string, correlationId?: string): void {\n this.logMessage(message, {\n logLevel: LogLevel.Error,\n containsPii: true,\n correlationId: correlationId || Constants.EMPTY_STRING,\n });\n }\n\n /**\n * Logs warning messages.\n */\n warning(message: string, correlationId?: string): void {\n this.logMessage(message, {\n logLevel: LogLevel.Warning,\n containsPii: false,\n correlationId: correlationId || Constants.EMPTY_STRING,\n });\n }\n\n /**\n * Logs warning messages with PII.\n */\n warningPii(message: string, correlationId?: string): void {\n this.logMessage(message, {\n logLevel: LogLevel.Warning,\n containsPii: true,\n correlationId: correlationId || Constants.EMPTY_STRING,\n });\n }\n\n /**\n * Logs info messages.\n */\n info(message: string, correlationId?: string): void {\n this.logMessage(message, {\n logLevel: LogLevel.Info,\n containsPii: false,\n correlationId: correlationId || Constants.EMPTY_STRING,\n });\n }\n\n /**\n * Logs info messages with PII.\n */\n infoPii(message: string, correlationId?: string): void {\n this.logMessage(message, {\n logLevel: LogLevel.Info,\n containsPii: true,\n correlationId: correlationId || Constants.EMPTY_STRING,\n });\n }\n\n /**\n * Logs verbose messages.\n */\n verbose(message: string, correlationId?: string): void {\n this.logMessage(message, {\n logLevel: LogLevel.Verbose,\n containsPii: false,\n correlationId: correlationId || Constants.EMPTY_STRING,\n });\n }\n\n /**\n * Logs verbose messages with PII.\n */\n verbosePii(message: string, correlationId?: string): void {\n this.logMessage(message, {\n logLevel: LogLevel.Verbose,\n containsPii: true,\n correlationId: correlationId || Constants.EMPTY_STRING,\n });\n }\n\n /**\n * Logs trace messages.\n */\n trace(message: string, correlationId?: string): void {\n this.logMessage(message, {\n logLevel: LogLevel.Trace,\n containsPii: false,\n correlationId: correlationId || Constants.EMPTY_STRING,\n });\n }\n\n /**\n * Logs trace messages with PII.\n */\n tracePii(message: string, correlationId?: string): void {\n this.logMessage(message, {\n logLevel: LogLevel.Trace,\n containsPii: true,\n correlationId: correlationId || Constants.EMPTY_STRING,\n });\n }\n\n /**\n * Returns whether PII Logging is enabled or not.\n */\n isPiiLoggingEnabled(): boolean {\n return this.piiLoggingEnabled || false;\n }\n}\n", "/* eslint-disable header/header */\nexport const name = \"@azure/msal-common\";\nexport const version = \"15.8.0\";\n", "/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { ProtocolMode } from \"./ProtocolMode.js\";\nimport { OIDCOptions } from \"./OIDCOptions.js\";\nimport { AzureRegionConfiguration } from \"./AzureRegionConfiguration.js\";\nimport { CloudInstanceDiscoveryResponse } from \"./CloudInstanceDiscoveryResponse.js\";\n\nexport type AuthorityOptions = {\n protocolMode: ProtocolMode;\n OIDCOptions?: OIDCOptions | null;\n knownAuthorities: Array;\n cloudDiscoveryMetadata: string;\n authorityMetadata: string;\n skipAuthorityMetadataCache?: boolean;\n azureRegionConfiguration?: AzureRegionConfiguration;\n authority?: string;\n};\n\nexport type StaticAuthorityOptions = Partial<\n Pick\n> & {\n canonicalAuthority?: string;\n cloudDiscoveryMetadata?: CloudInstanceDiscoveryResponse;\n};\n\nexport const AzureCloudInstance = {\n // AzureCloudInstance is not specified.\n None: \"none\",\n\n // Microsoft Azure public cloud\n AzurePublic: \"https://login.microsoftonline.com\",\n\n // Microsoft PPE\n AzurePpe: \"https://login.windows-ppe.net\",\n\n // Microsoft Chinese national/regional cloud\n AzureChina: \"https://login.chinacloudapi.cn\",\n\n // Microsoft German national/regional cloud (\"Black Forest\")\n AzureGermany: \"https://login.microsoftonline.de\",\n\n // US Government cloud\n AzureUsGovernment: \"https://login.microsoftonline.us\",\n} as const;\nexport type AzureCloudInstance =\n (typeof AzureCloudInstance)[keyof typeof AzureCloudInstance];\n", "/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { TokenClaims } from \"./TokenClaims.js\";\nimport {\n createClientAuthError,\n ClientAuthErrorCodes,\n} from \"../error/ClientAuthError.js\";\n\n/**\n * Extract token by decoding the rawToken\n *\n * @param encodedToken\n */\nexport function extractTokenClaims(\n encodedToken: string,\n base64Decode: (input: string) => string\n): TokenClaims {\n const jswPayload = getJWSPayload(encodedToken);\n\n // token will be decoded to get the username\n try {\n // base64Decode() should throw an error if there is an issue\n const base64Decoded = base64Decode(jswPayload);\n return JSON.parse(base64Decoded) as TokenClaims;\n } catch (err) {\n throw createClientAuthError(ClientAuthErrorCodes.tokenParsingError);\n }\n}\n\n/**\n * decode a JWT\n *\n * @param authToken\n */\nexport function getJWSPayload(authToken: string): string {\n if (!authToken) {\n throw createClientAuthError(ClientAuthErrorCodes.nullOrEmptyToken);\n }\n const tokenPartsRegex = /^([^\\.\\s]*)\\.([^\\.\\s]+)\\.([^\\.\\s]*)$/;\n const matches = tokenPartsRegex.exec(authToken);\n if (!matches || matches.length < 4) {\n throw createClientAuthError(ClientAuthErrorCodes.tokenParsingError);\n }\n /**\n * const crackedToken = {\n * header: matches[1],\n * JWSPayload: matches[2],\n * JWSSig: matches[3],\n * };\n */\n\n return matches[2];\n}\n\n/**\n * Determine if the token's max_age has transpired\n */\nexport function checkMaxAge(authTime: number, maxAge: number): void {\n /*\n * per https://openid.net/specs/openid-connect-core-1_0.html#AuthRequest\n * To force an immediate re-authentication: If an app requires that a user re-authenticate prior to access,\n * provide a value of 0 for the max_age parameter and the AS will force a fresh login.\n */\n const fiveMinuteSkew = 300000; // five minutes in milliseconds\n if (maxAge === 0 || Date.now() - fiveMinuteSkew > authTime + maxAge) {\n throw createClientAuthError(ClientAuthErrorCodes.maxAgeTranspired);\n }\n}\n", "/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\n/**\n * Utility functions for managing date and time operations.\n */\n\n/**\n * return the current time in Unix time (seconds).\n */\nexport function nowSeconds(): number {\n // Date.getTime() returns in milliseconds.\n return Math.round(new Date().getTime() / 1000.0);\n}\n\n/**\n * Converts JS Date object to seconds\n * @param date Date\n */\nexport function toSecondsFromDate(date: Date): number {\n // Convert date to seconds\n return date.getTime() / 1000;\n}\n\n/**\n * Convert seconds to JS Date object. Seconds can be in a number or string format or undefined (will still return a date).\n * @param seconds\n */\nexport function toDateFromSeconds(seconds: number | string | undefined): Date {\n if (seconds) {\n return new Date(Number(seconds) * 1000);\n }\n return new Date();\n}\n\n/**\n * check if a token is expired based on given UTC time in seconds.\n * @param expiresOn\n */\nexport function isTokenExpired(expiresOn: string, offset: number): boolean {\n // check for access token expiry\n const expirationSec = Number(expiresOn) || 0;\n const offsetCurrentTimeSec = nowSeconds() + offset;\n\n // If current time + offset is greater than token expiration time, then token is expired.\n return offsetCurrentTimeSec > expirationSec;\n}\n\n/**\n * If the current time is earlier than the time that a token was cached at, we must discard the token\n * i.e. The system clock was turned back after acquiring the cached token\n * @param cachedAt\n * @param offset\n */\nexport function wasClockTurnedBack(cachedAt: string): boolean {\n const cachedAtSec = Number(cachedAt);\n\n return cachedAtSec > nowSeconds();\n}\n\n/**\n * Waits for t number of milliseconds\n * @param t number\n * @param value T\n */\nexport function delay(t: number, value?: T): Promise {\n return new Promise((resolve) => setTimeout(() => resolve(value), t));\n}\n", "/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { extractTokenClaims } from \"../../account/AuthToken.js\";\nimport { TokenClaims } from \"../../account/TokenClaims.js\";\nimport { CloudDiscoveryMetadata } from \"../../authority/CloudDiscoveryMetadata.js\";\nimport { OpenIdConfigResponse } from \"../../authority/OpenIdConfigResponse.js\";\nimport {\n ClientAuthErrorCodes,\n createClientAuthError,\n} from \"../../error/ClientAuthError.js\";\nimport {\n APP_METADATA,\n AUTHORITY_METADATA_CONSTANTS,\n AuthenticationScheme,\n CredentialType,\n SERVER_TELEM_CONSTANTS,\n Separators,\n ThrottlingConstants,\n} from \"../../utils/Constants.js\";\nimport * as TimeUtils from \"../../utils/TimeUtils.js\";\nimport { AccessTokenEntity } from \"../entities/AccessTokenEntity.js\";\nimport { AppMetadataEntity } from \"../entities/AppMetadataEntity.js\";\nimport { AuthorityMetadataEntity } from \"../entities/AuthorityMetadataEntity.js\";\nimport { CredentialEntity } from \"../entities/CredentialEntity.js\";\nimport { IdTokenEntity } from \"../entities/IdTokenEntity.js\";\nimport { RefreshTokenEntity } from \"../entities/RefreshTokenEntity.js\";\n\n/**\n * Cache Key: -------\n * IdToken Example: uid.utid-login.microsoftonline.com-idtoken-app_client_id-contoso.com\n * AccessToken Example: uid.utid-login.microsoftonline.com-accesstoken-app_client_id-contoso.com-scope1 scope2--pop\n * RefreshToken Example: uid.utid-login.microsoftonline.com-refreshtoken-1-contoso.com\n * @param credentialEntity\n * @returns\n */\nexport function generateCredentialKey(\n credentialEntity: CredentialEntity\n): string {\n const credentialKey = [\n generateAccountId(credentialEntity),\n generateCredentialId(credentialEntity),\n generateTarget(credentialEntity),\n generateClaimsHash(credentialEntity),\n generateScheme(credentialEntity),\n ];\n\n return credentialKey.join(Separators.CACHE_KEY_SEPARATOR).toLowerCase();\n}\n\n/**\n * Create IdTokenEntity\n * @param homeAccountId\n * @param authenticationResult\n * @param clientId\n * @param authority\n */\nexport function createIdTokenEntity(\n homeAccountId: string,\n environment: string,\n idToken: string,\n clientId: string,\n tenantId: string\n): IdTokenEntity {\n const idTokenEntity: IdTokenEntity = {\n credentialType: CredentialType.ID_TOKEN,\n homeAccountId: homeAccountId,\n environment: environment,\n clientId: clientId,\n secret: idToken,\n realm: tenantId,\n };\n\n return idTokenEntity;\n}\n\n/**\n * Create AccessTokenEntity\n * @param homeAccountId\n * @param environment\n * @param accessToken\n * @param clientId\n * @param tenantId\n * @param scopes\n * @param expiresOn\n * @param extExpiresOn\n */\nexport function createAccessTokenEntity(\n homeAccountId: string,\n environment: string,\n accessToken: string,\n clientId: string,\n tenantId: string,\n scopes: string,\n expiresOn: number,\n extExpiresOn: number,\n base64Decode: (input: string) => string,\n refreshOn?: number,\n tokenType?: AuthenticationScheme,\n userAssertionHash?: string,\n keyId?: string,\n requestedClaims?: string,\n requestedClaimsHash?: string\n): AccessTokenEntity {\n const atEntity: AccessTokenEntity = {\n homeAccountId: homeAccountId,\n credentialType: CredentialType.ACCESS_TOKEN,\n secret: accessToken,\n cachedAt: TimeUtils.nowSeconds().toString(),\n expiresOn: expiresOn.toString(),\n extendedExpiresOn: extExpiresOn.toString(),\n environment: environment,\n clientId: clientId,\n realm: tenantId,\n target: scopes,\n tokenType: tokenType || AuthenticationScheme.BEARER,\n };\n\n if (userAssertionHash) {\n atEntity.userAssertionHash = userAssertionHash;\n }\n\n if (refreshOn) {\n atEntity.refreshOn = refreshOn.toString();\n }\n\n if (requestedClaims) {\n atEntity.requestedClaims = requestedClaims;\n atEntity.requestedClaimsHash = requestedClaimsHash;\n }\n\n /*\n * Create Access Token With Auth Scheme instead of regular access token\n * Cast to lower to handle \"bearer\" from ADFS\n */\n if (\n atEntity.tokenType?.toLowerCase() !==\n AuthenticationScheme.BEARER.toLowerCase()\n ) {\n atEntity.credentialType = CredentialType.ACCESS_TOKEN_WITH_AUTH_SCHEME;\n switch (atEntity.tokenType) {\n case AuthenticationScheme.POP:\n // Make sure keyId is present and add it to credential\n const tokenClaims: TokenClaims | null = extractTokenClaims(\n accessToken,\n base64Decode\n );\n if (!tokenClaims?.cnf?.kid) {\n throw createClientAuthError(\n ClientAuthErrorCodes.tokenClaimsCnfRequiredForSignedJwt\n );\n }\n atEntity.keyId = tokenClaims.cnf.kid;\n break;\n case AuthenticationScheme.SSH:\n atEntity.keyId = keyId;\n }\n }\n\n return atEntity;\n}\n\n/**\n * Create RefreshTokenEntity\n * @param homeAccountId\n * @param authenticationResult\n * @param clientId\n * @param authority\n */\nexport function createRefreshTokenEntity(\n homeAccountId: string,\n environment: string,\n refreshToken: string,\n clientId: string,\n familyId?: string,\n userAssertionHash?: string,\n expiresOn?: number\n): RefreshTokenEntity {\n const rtEntity: RefreshTokenEntity = {\n credentialType: CredentialType.REFRESH_TOKEN,\n homeAccountId: homeAccountId,\n environment: environment,\n clientId: clientId,\n secret: refreshToken,\n };\n\n if (userAssertionHash) {\n rtEntity.userAssertionHash = userAssertionHash;\n }\n\n if (familyId) {\n rtEntity.familyId = familyId;\n }\n\n if (expiresOn) {\n rtEntity.expiresOn = expiresOn.toString();\n }\n\n return rtEntity;\n}\n\nexport function isCredentialEntity(entity: object): boolean {\n return (\n entity.hasOwnProperty(\"homeAccountId\") &&\n entity.hasOwnProperty(\"environment\") &&\n entity.hasOwnProperty(\"credentialType\") &&\n entity.hasOwnProperty(\"clientId\") &&\n entity.hasOwnProperty(\"secret\")\n );\n}\n\n/**\n * Validates an entity: checks for all expected params\n * @param entity\n */\nexport function isAccessTokenEntity(entity: object): boolean {\n if (!entity) {\n return false;\n }\n\n return (\n isCredentialEntity(entity) &&\n entity.hasOwnProperty(\"realm\") &&\n entity.hasOwnProperty(\"target\") &&\n (entity[\"credentialType\"] === CredentialType.ACCESS_TOKEN ||\n entity[\"credentialType\"] ===\n CredentialType.ACCESS_TOKEN_WITH_AUTH_SCHEME)\n );\n}\n\n/**\n * Validates an entity: checks for all expected params\n * @param entity\n */\nexport function isIdTokenEntity(entity: object): boolean {\n if (!entity) {\n return false;\n }\n\n return (\n isCredentialEntity(entity) &&\n entity.hasOwnProperty(\"realm\") &&\n entity[\"credentialType\"] === CredentialType.ID_TOKEN\n );\n}\n\n/**\n * Validates an entity: checks for all expected params\n * @param entity\n */\nexport function isRefreshTokenEntity(entity: object): boolean {\n if (!entity) {\n return false;\n }\n\n return (\n isCredentialEntity(entity) &&\n entity[\"credentialType\"] === CredentialType.REFRESH_TOKEN\n );\n}\n\n/**\n * Generate Account Id key component as per the schema: -\n */\nfunction generateAccountId(credentialEntity: CredentialEntity): string {\n const accountId: Array = [\n credentialEntity.homeAccountId,\n credentialEntity.environment,\n ];\n return accountId.join(Separators.CACHE_KEY_SEPARATOR).toLowerCase();\n}\n\n/**\n * Generate Credential Id key component as per the schema: --\n */\nfunction generateCredentialId(credentialEntity: CredentialEntity): string {\n const clientOrFamilyId =\n credentialEntity.credentialType === CredentialType.REFRESH_TOKEN\n ? credentialEntity.familyId || credentialEntity.clientId\n : credentialEntity.clientId;\n const credentialId: Array = [\n credentialEntity.credentialType,\n clientOrFamilyId,\n credentialEntity.realm || \"\",\n ];\n\n return credentialId.join(Separators.CACHE_KEY_SEPARATOR).toLowerCase();\n}\n\n/**\n * Generate target key component as per schema: \n */\nfunction generateTarget(credentialEntity: CredentialEntity): string {\n return (credentialEntity.target || \"\").toLowerCase();\n}\n\n/**\n * Generate requested claims key component as per schema: \n */\nfunction generateClaimsHash(credentialEntity: CredentialEntity): string {\n return (credentialEntity.requestedClaimsHash || \"\").toLowerCase();\n}\n\n/**\n * Generate scheme key componenet as per schema: \n */\nfunction generateScheme(credentialEntity: CredentialEntity): string {\n /*\n * PoP Tokens and SSH certs include scheme in cache key\n * Cast to lowercase to handle \"bearer\" from ADFS\n */\n return credentialEntity.tokenType &&\n credentialEntity.tokenType.toLowerCase() !==\n AuthenticationScheme.BEARER.toLowerCase()\n ? credentialEntity.tokenType.toLowerCase()\n : \"\";\n}\n\n/**\n * validates if a given cache entry is \"Telemetry\", parses \n * @param key\n * @param entity\n */\nexport function isServerTelemetryEntity(key: string, entity?: object): boolean {\n const validateKey: boolean =\n key.indexOf(SERVER_TELEM_CONSTANTS.CACHE_KEY) === 0;\n let validateEntity: boolean = true;\n\n if (entity) {\n validateEntity =\n entity.hasOwnProperty(\"failedRequests\") &&\n entity.hasOwnProperty(\"errors\") &&\n entity.hasOwnProperty(\"cacheHits\");\n }\n\n return validateKey && validateEntity;\n}\n\n/**\n * validates if a given cache entry is \"Throttling\", parses \n * @param key\n * @param entity\n */\nexport function isThrottlingEntity(key: string, entity?: object): boolean {\n let validateKey: boolean = false;\n if (key) {\n validateKey = key.indexOf(ThrottlingConstants.THROTTLING_PREFIX) === 0;\n }\n\n let validateEntity: boolean = true;\n if (entity) {\n validateEntity = entity.hasOwnProperty(\"throttleTime\");\n }\n\n return validateKey && validateEntity;\n}\n\n/**\n * Generate AppMetadata Cache Key as per the schema: appmetadata--\n */\nexport function generateAppMetadataKey({\n environment,\n clientId,\n}: AppMetadataEntity): string {\n const appMetaDataKeyArray: Array = [\n APP_METADATA,\n environment,\n clientId,\n ];\n return appMetaDataKeyArray\n .join(Separators.CACHE_KEY_SEPARATOR)\n .toLowerCase();\n}\n\n/*\n * Validates an entity: checks for all expected params\n * @param entity\n */\nexport function isAppMetadataEntity(key: string, entity: object): boolean {\n if (!entity) {\n return false;\n }\n\n return (\n key.indexOf(APP_METADATA) === 0 &&\n entity.hasOwnProperty(\"clientId\") &&\n entity.hasOwnProperty(\"environment\")\n );\n}\n\n/**\n * Validates an entity: checks for all expected params\n * @param entity\n */\nexport function isAuthorityMetadataEntity(\n key: string,\n entity: object\n): boolean {\n if (!entity) {\n return false;\n }\n\n return (\n key.indexOf(AUTHORITY_METADATA_CONSTANTS.CACHE_KEY) === 0 &&\n entity.hasOwnProperty(\"aliases\") &&\n entity.hasOwnProperty(\"preferred_cache\") &&\n entity.hasOwnProperty(\"preferred_network\") &&\n entity.hasOwnProperty(\"canonical_authority\") &&\n entity.hasOwnProperty(\"authorization_endpoint\") &&\n entity.hasOwnProperty(\"token_endpoint\") &&\n entity.hasOwnProperty(\"issuer\") &&\n entity.hasOwnProperty(\"aliasesFromNetwork\") &&\n entity.hasOwnProperty(\"endpointsFromNetwork\") &&\n entity.hasOwnProperty(\"expiresAt\") &&\n entity.hasOwnProperty(\"jwks_uri\")\n );\n}\n\n/**\n * Reset the exiresAt value\n */\nexport function generateAuthorityMetadataExpiresAt(): number {\n return (\n TimeUtils.nowSeconds() +\n AUTHORITY_METADATA_CONSTANTS.REFRESH_TIME_SECONDS\n );\n}\n\nexport function updateAuthorityEndpointMetadata(\n authorityMetadata: AuthorityMetadataEntity,\n updatedValues: OpenIdConfigResponse,\n fromNetwork: boolean\n): void {\n authorityMetadata.authorization_endpoint =\n updatedValues.authorization_endpoint;\n authorityMetadata.token_endpoint = updatedValues.token_endpoint;\n authorityMetadata.end_session_endpoint = updatedValues.end_session_endpoint;\n authorityMetadata.issuer = updatedValues.issuer;\n authorityMetadata.endpointsFromNetwork = fromNetwork;\n authorityMetadata.jwks_uri = updatedValues.jwks_uri;\n}\n\nexport function updateCloudDiscoveryMetadata(\n authorityMetadata: AuthorityMetadataEntity,\n updatedValues: CloudDiscoveryMetadata,\n fromNetwork: boolean\n): void {\n authorityMetadata.aliases = updatedValues.aliases;\n authorityMetadata.preferred_cache = updatedValues.preferred_cache;\n authorityMetadata.preferred_network = updatedValues.preferred_network;\n authorityMetadata.aliasesFromNetwork = fromNetwork;\n}\n\n/**\n * Returns whether or not the data needs to be refreshed\n */\nexport function isAuthorityMetadataExpired(\n metadata: AuthorityMetadataEntity\n): boolean {\n return metadata.expiresAt <= TimeUtils.nowSeconds();\n}\n", "/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nexport const redirectUriEmpty = \"redirect_uri_empty\";\nexport const claimsRequestParsingError = \"claims_request_parsing_error\";\nexport const authorityUriInsecure = \"authority_uri_insecure\";\nexport const urlParseError = \"url_parse_error\";\nexport const urlEmptyError = \"empty_url_error\";\nexport const emptyInputScopesError = \"empty_input_scopes_error\";\nexport const invalidPromptValue = \"invalid_prompt_value\";\nexport const invalidClaims = \"invalid_claims\";\nexport const tokenRequestEmpty = \"token_request_empty\";\nexport const logoutRequestEmpty = \"logout_request_empty\";\nexport const invalidCodeChallengeMethod = \"invalid_code_challenge_method\";\nexport const pkceParamsMissing = \"pkce_params_missing\";\nexport const invalidCloudDiscoveryMetadata = \"invalid_cloud_discovery_metadata\";\nexport const invalidAuthorityMetadata = \"invalid_authority_metadata\";\nexport const untrustedAuthority = \"untrusted_authority\";\nexport const missingSshJwk = \"missing_ssh_jwk\";\nexport const missingSshKid = \"missing_ssh_kid\";\nexport const missingNonceAuthenticationHeader =\n \"missing_nonce_authentication_header\";\nexport const invalidAuthenticationHeader = \"invalid_authentication_header\";\nexport const cannotSetOIDCOptions = \"cannot_set_OIDCOptions\";\nexport const cannotAllowPlatformBroker = \"cannot_allow_platform_broker\";\nexport const authorityMismatch = \"authority_mismatch\";\n", "/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { AuthError } from \"./AuthError.js\";\nimport * as ClientConfigurationErrorCodes from \"./ClientConfigurationErrorCodes.js\";\nexport { ClientConfigurationErrorCodes };\n\nexport const ClientConfigurationErrorMessages = {\n [ClientConfigurationErrorCodes.redirectUriEmpty]:\n \"A redirect URI is required for all calls, and none has been set.\",\n [ClientConfigurationErrorCodes.claimsRequestParsingError]:\n \"Could not parse the given claims request object.\",\n [ClientConfigurationErrorCodes.authorityUriInsecure]:\n \"Authority URIs must use https. Please see here for valid authority configuration options: https://docs.microsoft.com/en-us/azure/active-directory/develop/msal-js-initializing-client-applications#configuration-options\",\n [ClientConfigurationErrorCodes.urlParseError]:\n \"URL could not be parsed into appropriate segments.\",\n [ClientConfigurationErrorCodes.urlEmptyError]: \"URL was empty or null.\",\n [ClientConfigurationErrorCodes.emptyInputScopesError]:\n \"Scopes cannot be passed as null, undefined or empty array because they are required to obtain an access token.\",\n [ClientConfigurationErrorCodes.invalidPromptValue]:\n \"Please see here for valid configuration options: https://azuread.github.io/microsoft-authentication-library-for-js/ref/modules/_azure_msal_common.html#commonauthorizationurlrequest\",\n [ClientConfigurationErrorCodes.invalidClaims]:\n \"Given claims parameter must be a stringified JSON object.\",\n [ClientConfigurationErrorCodes.tokenRequestEmpty]:\n \"Token request was empty and not found in cache.\",\n [ClientConfigurationErrorCodes.logoutRequestEmpty]:\n \"The logout request was null or undefined.\",\n [ClientConfigurationErrorCodes.invalidCodeChallengeMethod]:\n 'code_challenge_method passed is invalid. Valid values are \"plain\" and \"S256\".',\n [ClientConfigurationErrorCodes.pkceParamsMissing]:\n \"Both params: code_challenge and code_challenge_method are to be passed if to be sent in the request\",\n [ClientConfigurationErrorCodes.invalidCloudDiscoveryMetadata]:\n \"Invalid cloudDiscoveryMetadata provided. Must be a stringified JSON object containing tenant_discovery_endpoint and metadata fields\",\n [ClientConfigurationErrorCodes.invalidAuthorityMetadata]:\n \"Invalid authorityMetadata provided. Must by a stringified JSON object containing authorization_endpoint, token_endpoint, issuer fields.\",\n [ClientConfigurationErrorCodes.untrustedAuthority]:\n \"The provided authority is not a trusted authority. Please include this authority in the knownAuthorities config parameter.\",\n [ClientConfigurationErrorCodes.missingSshJwk]:\n \"Missing sshJwk in SSH certificate request. A stringified JSON Web Key is required when using the SSH authentication scheme.\",\n [ClientConfigurationErrorCodes.missingSshKid]:\n \"Missing sshKid in SSH certificate request. A string that uniquely identifies the public SSH key is required when using the SSH authentication scheme.\",\n [ClientConfigurationErrorCodes.missingNonceAuthenticationHeader]:\n \"Unable to find an authentication header containing server nonce. Either the Authentication-Info or WWW-Authenticate headers must be present in order to obtain a server nonce.\",\n [ClientConfigurationErrorCodes.invalidAuthenticationHeader]:\n \"Invalid authentication header provided\",\n [ClientConfigurationErrorCodes.cannotSetOIDCOptions]:\n \"Cannot set OIDCOptions parameter. Please change the protocol mode to OIDC or use a non-Microsoft authority.\",\n [ClientConfigurationErrorCodes.cannotAllowPlatformBroker]:\n \"Cannot set allowPlatformBroker parameter to true when not in AAD protocol mode.\",\n [ClientConfigurationErrorCodes.authorityMismatch]:\n \"Authority mismatch error. Authority provided in login request or PublicClientApplication config does not match the environment of the provided account. Please use a matching account or make an interactive request to login to this authority.\",\n};\n\n/**\n * ClientConfigurationErrorMessage class containing string constants used by error codes and messages.\n * @deprecated Use ClientConfigurationErrorCodes instead\n */\nexport const ClientConfigurationErrorMessage = {\n redirectUriNotSet: {\n code: ClientConfigurationErrorCodes.redirectUriEmpty,\n desc: ClientConfigurationErrorMessages[\n ClientConfigurationErrorCodes.redirectUriEmpty\n ],\n },\n claimsRequestParsingError: {\n code: ClientConfigurationErrorCodes.claimsRequestParsingError,\n desc: ClientConfigurationErrorMessages[\n ClientConfigurationErrorCodes.claimsRequestParsingError\n ],\n },\n authorityUriInsecure: {\n code: ClientConfigurationErrorCodes.authorityUriInsecure,\n desc: ClientConfigurationErrorMessages[\n ClientConfigurationErrorCodes.authorityUriInsecure\n ],\n },\n urlParseError: {\n code: ClientConfigurationErrorCodes.urlParseError,\n desc: ClientConfigurationErrorMessages[\n ClientConfigurationErrorCodes.urlParseError\n ],\n },\n urlEmptyError: {\n code: ClientConfigurationErrorCodes.urlEmptyError,\n desc: ClientConfigurationErrorMessages[\n ClientConfigurationErrorCodes.urlEmptyError\n ],\n },\n emptyScopesError: {\n code: ClientConfigurationErrorCodes.emptyInputScopesError,\n desc: ClientConfigurationErrorMessages[\n ClientConfigurationErrorCodes.emptyInputScopesError\n ],\n },\n invalidPrompt: {\n code: ClientConfigurationErrorCodes.invalidPromptValue,\n desc: ClientConfigurationErrorMessages[\n ClientConfigurationErrorCodes.invalidPromptValue\n ],\n },\n invalidClaimsRequest: {\n code: ClientConfigurationErrorCodes.invalidClaims,\n desc: ClientConfigurationErrorMessages[\n ClientConfigurationErrorCodes.invalidClaims\n ],\n },\n tokenRequestEmptyError: {\n code: ClientConfigurationErrorCodes.tokenRequestEmpty,\n desc: ClientConfigurationErrorMessages[\n ClientConfigurationErrorCodes.tokenRequestEmpty\n ],\n },\n logoutRequestEmptyError: {\n code: ClientConfigurationErrorCodes.logoutRequestEmpty,\n desc: ClientConfigurationErrorMessages[\n ClientConfigurationErrorCodes.logoutRequestEmpty\n ],\n },\n invalidCodeChallengeMethod: {\n code: ClientConfigurationErrorCodes.invalidCodeChallengeMethod,\n desc: ClientConfigurationErrorMessages[\n ClientConfigurationErrorCodes.invalidCodeChallengeMethod\n ],\n },\n invalidCodeChallengeParams: {\n code: ClientConfigurationErrorCodes.pkceParamsMissing,\n desc: ClientConfigurationErrorMessages[\n ClientConfigurationErrorCodes.pkceParamsMissing\n ],\n },\n invalidCloudDiscoveryMetadata: {\n code: ClientConfigurationErrorCodes.invalidCloudDiscoveryMetadata,\n desc: ClientConfigurationErrorMessages[\n ClientConfigurationErrorCodes.invalidCloudDiscoveryMetadata\n ],\n },\n invalidAuthorityMetadata: {\n code: ClientConfigurationErrorCodes.invalidAuthorityMetadata,\n desc: ClientConfigurationErrorMessages[\n ClientConfigurationErrorCodes.invalidAuthorityMetadata\n ],\n },\n untrustedAuthority: {\n code: ClientConfigurationErrorCodes.untrustedAuthority,\n desc: ClientConfigurationErrorMessages[\n ClientConfigurationErrorCodes.untrustedAuthority\n ],\n },\n missingSshJwk: {\n code: ClientConfigurationErrorCodes.missingSshJwk,\n desc: ClientConfigurationErrorMessages[\n ClientConfigurationErrorCodes.missingSshJwk\n ],\n },\n missingSshKid: {\n code: ClientConfigurationErrorCodes.missingSshKid,\n desc: ClientConfigurationErrorMessages[\n ClientConfigurationErrorCodes.missingSshKid\n ],\n },\n missingNonceAuthenticationHeader: {\n code: ClientConfigurationErrorCodes.missingNonceAuthenticationHeader,\n desc: ClientConfigurationErrorMessages[\n ClientConfigurationErrorCodes.missingNonceAuthenticationHeader\n ],\n },\n invalidAuthenticationHeader: {\n code: ClientConfigurationErrorCodes.invalidAuthenticationHeader,\n desc: ClientConfigurationErrorMessages[\n ClientConfigurationErrorCodes.invalidAuthenticationHeader\n ],\n },\n cannotSetOIDCOptions: {\n code: ClientConfigurationErrorCodes.cannotSetOIDCOptions,\n desc: ClientConfigurationErrorMessages[\n ClientConfigurationErrorCodes.cannotSetOIDCOptions\n ],\n },\n cannotAllowPlatformBroker: {\n code: ClientConfigurationErrorCodes.cannotAllowPlatformBroker,\n desc: ClientConfigurationErrorMessages[\n ClientConfigurationErrorCodes.cannotAllowPlatformBroker\n ],\n },\n authorityMismatch: {\n code: ClientConfigurationErrorCodes.authorityMismatch,\n desc: ClientConfigurationErrorMessages[\n ClientConfigurationErrorCodes.authorityMismatch\n ],\n },\n};\n\n/**\n * Error thrown when there is an error in configuration of the MSAL.js library.\n */\nexport class ClientConfigurationError extends AuthError {\n constructor(errorCode: string) {\n super(errorCode, ClientConfigurationErrorMessages[errorCode]);\n this.name = \"ClientConfigurationError\";\n Object.setPrototypeOf(this, ClientConfigurationError.prototype);\n }\n}\n\nexport function createClientConfigurationError(\n errorCode: string\n): ClientConfigurationError {\n return new ClientConfigurationError(errorCode);\n}\n", "/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\n/**\n * @hidden\n */\nexport class StringUtils {\n /**\n * Check if stringified object is empty\n * @param strObj\n */\n static isEmptyObj(strObj?: string): boolean {\n if (strObj) {\n try {\n const obj = JSON.parse(strObj);\n return Object.keys(obj).length === 0;\n } catch (e) {}\n }\n return true;\n }\n\n static startsWith(str: string, search: string): boolean {\n return str.indexOf(search) === 0;\n }\n\n static endsWith(str: string, search: string): boolean {\n return (\n str.length >= search.length &&\n str.lastIndexOf(search) === str.length - search.length\n );\n }\n\n /**\n * Parses string into an object.\n *\n * @param query\n */\n static queryStringToObject(query: string): T {\n const obj: {} = {};\n const params = query.split(\"&\");\n const decode = (s: string) => decodeURIComponent(s.replace(/\\+/g, \" \"));\n params.forEach((pair) => {\n if (pair.trim()) {\n const [key, value] = pair.split(/=(.+)/g, 2); // Split on the first occurence of the '=' character\n if (key && value) {\n obj[decode(key)] = decode(value);\n }\n }\n });\n return obj as T;\n }\n\n /**\n * Trims entries in an array.\n *\n * @param arr\n */\n static trimArrayEntries(arr: Array): Array {\n return arr.map((entry) => entry.trim());\n }\n\n /**\n * Removes empty strings from array\n * @param arr\n */\n static removeEmptyStringsFromArray(arr: Array): Array {\n return arr.filter((entry) => {\n return !!entry;\n });\n }\n\n /**\n * Attempts to parse a string into JSON\n * @param str\n */\n static jsonParseHelper(str: string): T | null {\n try {\n return JSON.parse(str) as T;\n } catch (e) {\n return null;\n }\n }\n\n /**\n * Tests if a given string matches a given pattern, with support for wildcards and queries.\n * @param pattern Wildcard pattern to string match. Supports \"*\" for wildcards and \"?\" for queries\n * @param input String to match against\n */\n static matchPattern(pattern: string, input: string): boolean {\n /**\n * Wildcard support: https://stackoverflow.com/a/3117248/4888559\n * Queries: replaces \"?\" in string with escaped \"\\?\" for regex test\n */\n // eslint-disable-next-line security/detect-non-literal-regexp\n const regex: RegExp = new RegExp(\n pattern\n .replace(/\\\\/g, \"\\\\\\\\\")\n .replace(/\\*/g, \"[^ ]*\")\n .replace(/\\?/g, \"\\\\?\")\n );\n\n return regex.test(input);\n }\n}\n", "/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport {\n createClientConfigurationError,\n ClientConfigurationErrorCodes,\n} from \"../error/ClientConfigurationError.js\";\nimport { StringUtils } from \"../utils/StringUtils.js\";\nimport {\n ClientAuthErrorCodes,\n createClientAuthError,\n} from \"../error/ClientAuthError.js\";\nimport { Constants, OIDC_SCOPES } from \"../utils/Constants.js\";\n\n/**\n * The ScopeSet class creates a set of scopes. Scopes are case-insensitive, unique values, so the Set object in JS makes\n * the most sense to implement for this class. All scopes are trimmed and converted to lower case strings in intersection and union functions\n * to ensure uniqueness of strings.\n */\nexport class ScopeSet {\n // Scopes as a Set of strings\n private scopes: Set;\n\n constructor(inputScopes: Array) {\n // Filter empty string and null/undefined array items\n const scopeArr = inputScopes\n ? StringUtils.trimArrayEntries([...inputScopes])\n : [];\n const filteredInput = scopeArr\n ? StringUtils.removeEmptyStringsFromArray(scopeArr)\n : [];\n\n // Check if scopes array has at least one member\n if (!filteredInput || !filteredInput.length) {\n throw createClientConfigurationError(\n ClientConfigurationErrorCodes.emptyInputScopesError\n );\n }\n\n this.scopes = new Set(); // Iterator in constructor not supported by IE11\n filteredInput.forEach((scope) => this.scopes.add(scope));\n }\n\n /**\n * Factory method to create ScopeSet from space-delimited string\n * @param inputScopeString\n * @param appClientId\n * @param scopesRequired\n */\n static fromString(inputScopeString: string): ScopeSet {\n const scopeString = inputScopeString || Constants.EMPTY_STRING;\n const inputScopes: Array = scopeString.split(\" \");\n return new ScopeSet(inputScopes);\n }\n\n /**\n * Creates the set of scopes to search for in cache lookups\n * @param inputScopeString\n * @returns\n */\n static createSearchScopes(inputScopeString: Array): ScopeSet {\n const scopeSet = new ScopeSet(inputScopeString);\n if (!scopeSet.containsOnlyOIDCScopes()) {\n scopeSet.removeOIDCScopes();\n } else {\n scopeSet.removeScope(Constants.OFFLINE_ACCESS_SCOPE);\n }\n\n return scopeSet;\n }\n\n /**\n * Check if a given scope is present in this set of scopes.\n * @param scope\n */\n containsScope(scope: string): boolean {\n const lowerCaseScopes = this.printScopesLowerCase().split(\" \");\n const lowerCaseScopesSet = new ScopeSet(lowerCaseScopes);\n // compare lowercase scopes\n return scope\n ? lowerCaseScopesSet.scopes.has(scope.toLowerCase())\n : false;\n }\n\n /**\n * Check if a set of scopes is present in this set of scopes.\n * @param scopeSet\n */\n containsScopeSet(scopeSet: ScopeSet): boolean {\n if (!scopeSet || scopeSet.scopes.size <= 0) {\n return false;\n }\n\n return (\n this.scopes.size >= scopeSet.scopes.size &&\n scopeSet.asArray().every((scope) => this.containsScope(scope))\n );\n }\n\n /**\n * Check if set of scopes contains only the defaults\n */\n containsOnlyOIDCScopes(): boolean {\n let defaultScopeCount = 0;\n OIDC_SCOPES.forEach((defaultScope: string) => {\n if (this.containsScope(defaultScope)) {\n defaultScopeCount += 1;\n }\n });\n\n return this.scopes.size === defaultScopeCount;\n }\n\n /**\n * Appends single scope if passed\n * @param newScope\n */\n appendScope(newScope: string): void {\n if (newScope) {\n this.scopes.add(newScope.trim());\n }\n }\n\n /**\n * Appends multiple scopes if passed\n * @param newScopes\n */\n appendScopes(newScopes: Array): void {\n try {\n newScopes.forEach((newScope) => this.appendScope(newScope));\n } catch (e) {\n throw createClientAuthError(\n ClientAuthErrorCodes.cannotAppendScopeSet\n );\n }\n }\n\n /**\n * Removes element from set of scopes.\n * @param scope\n */\n removeScope(scope: string): void {\n if (!scope) {\n throw createClientAuthError(\n ClientAuthErrorCodes.cannotRemoveEmptyScope\n );\n }\n this.scopes.delete(scope.trim());\n }\n\n /**\n * Removes default scopes from set of scopes\n * Primarily used to prevent cache misses if the default scopes are not returned from the server\n */\n removeOIDCScopes(): void {\n OIDC_SCOPES.forEach((defaultScope: string) => {\n this.scopes.delete(defaultScope);\n });\n }\n\n /**\n * Combines an array of scopes with the current set of scopes.\n * @param otherScopes\n */\n unionScopeSets(otherScopes: ScopeSet): Set {\n if (!otherScopes) {\n throw createClientAuthError(\n ClientAuthErrorCodes.emptyInputScopeSet\n );\n }\n const unionScopes = new Set(); // Iterator in constructor not supported in IE11\n otherScopes.scopes.forEach((scope) =>\n unionScopes.add(scope.toLowerCase())\n );\n this.scopes.forEach((scope) => unionScopes.add(scope.toLowerCase()));\n return unionScopes;\n }\n\n /**\n * Check if scopes intersect between this set and another.\n * @param otherScopes\n */\n intersectingScopeSets(otherScopes: ScopeSet): boolean {\n if (!otherScopes) {\n throw createClientAuthError(\n ClientAuthErrorCodes.emptyInputScopeSet\n );\n }\n\n // Do not allow OIDC scopes to be the only intersecting scopes\n if (!otherScopes.containsOnlyOIDCScopes()) {\n otherScopes.removeOIDCScopes();\n }\n const unionScopes = this.unionScopeSets(otherScopes);\n const sizeOtherScopes = otherScopes.getScopeCount();\n const sizeThisScopes = this.getScopeCount();\n const sizeUnionScopes = unionScopes.size;\n return sizeUnionScopes < sizeThisScopes + sizeOtherScopes;\n }\n\n /**\n * Returns size of set of scopes.\n */\n getScopeCount(): number {\n return this.scopes.size;\n }\n\n /**\n * Returns the scopes as an array of string values\n */\n asArray(): Array {\n const array: Array = [];\n this.scopes.forEach((val) => array.push(val));\n return array;\n }\n\n /**\n * Prints scopes into a space-delimited string\n */\n printScopes(): string {\n if (this.scopes) {\n const scopeArr = this.asArray();\n return scopeArr.join(\" \");\n }\n return Constants.EMPTY_STRING;\n }\n\n /**\n * Prints scopes into a space-delimited lower-case string (used for caching)\n */\n printScopesLowerCase(): string {\n return this.printScopes().toLowerCase();\n }\n}\n", "/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport {\n createClientAuthError,\n ClientAuthErrorCodes,\n} from \"../error/ClientAuthError.js\";\nimport { Separators, Constants } from \"../utils/Constants.js\";\n\n/**\n * Client info object which consists of two IDs. Need to add more info here.\n */\nexport type ClientInfo = {\n uid: string;\n utid: string;\n};\n\n/**\n * Function to build a client info object from server clientInfo string\n * @param rawClientInfo\n * @param crypto\n */\nexport function buildClientInfo(\n rawClientInfo: string,\n base64Decode: (input: string) => string\n): ClientInfo {\n if (!rawClientInfo) {\n throw createClientAuthError(ClientAuthErrorCodes.clientInfoEmptyError);\n }\n\n try {\n const decodedClientInfo: string = base64Decode(rawClientInfo);\n return JSON.parse(decodedClientInfo) as ClientInfo;\n } catch (e) {\n throw createClientAuthError(\n ClientAuthErrorCodes.clientInfoDecodingError\n );\n }\n}\n\n/**\n * Function to build a client info object from cached homeAccountId string\n * @param homeAccountId\n */\nexport function buildClientInfoFromHomeAccountId(\n homeAccountId: string\n): ClientInfo {\n if (!homeAccountId) {\n throw createClientAuthError(\n ClientAuthErrorCodes.clientInfoDecodingError\n );\n }\n const clientInfoParts: string[] = homeAccountId.split(\n Separators.CLIENT_INFO_SEPARATOR,\n 2\n );\n return {\n uid: clientInfoParts[0],\n utid:\n clientInfoParts.length < 2\n ? Constants.EMPTY_STRING\n : clientInfoParts[1],\n };\n}\n", "/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { TokenClaims } from \"./TokenClaims.js\";\n/**\n * Account object with the following signature:\n * - homeAccountId - Home account identifier for this account object\n * - environment - Entity which issued the token represented by the domain of the issuer (e.g. login.microsoftonline.com)\n * - tenantId - Full tenant or organizational id that this account belongs to\n * - username - preferred_username claim of the id_token that represents this account\n * - localAccountId - Local, tenant-specific account identifer for this account object, usually used in legacy cases\n * - name - Full name for the account, including given name and family name\n * - idToken - raw ID token\n * - idTokenClaims - Object contains claims from ID token\n * - nativeAccountId - The user's native account ID\n * - tenantProfiles - Map of tenant profile objects for each tenant that the account has authenticated with in the browser\n */\nexport type AccountInfo = {\n homeAccountId: string;\n environment: string;\n tenantId: string;\n username: string;\n localAccountId: string;\n name?: string;\n idToken?: string;\n idTokenClaims?: TokenClaims & {\n [key: string]:\n | string\n | number\n | string[]\n | object\n | undefined\n | unknown;\n };\n nativeAccountId?: string;\n authorityType?: string;\n tenantProfiles?: Map;\n};\n\n/**\n * Account details that vary across tenants for the same user\n */\nexport type TenantProfile = Pick<\n AccountInfo,\n \"tenantId\" | \"localAccountId\" | \"name\"\n> & {\n /**\n * - isHomeTenant - True if this is the home tenant profile of the account, false if it's a guest tenant profile\n */\n isHomeTenant?: boolean;\n};\n\nexport type ActiveAccountFilters = {\n homeAccountId: string;\n localAccountId: string;\n tenantId?: string;\n lastUpdatedAt?: string;\n};\n\n/**\n * Returns true if tenantId matches the utid portion of homeAccountId\n * @param tenantId\n * @param homeAccountId\n * @returns\n */\nexport function tenantIdMatchesHomeTenant(\n tenantId?: string,\n homeAccountId?: string\n): boolean {\n return (\n !!tenantId &&\n !!homeAccountId &&\n tenantId === homeAccountId.split(\".\")[1]\n );\n}\n\n/**\n * Build tenant profile\n * @param homeAccountId - Home account identifier for this account object\n * @param localAccountId - Local account identifer for this account object\n * @param tenantId - Full tenant or organizational id that this account belongs to\n * @param idTokenClaims - Claims from the ID token\n * @returns\n */\nexport function buildTenantProfile(\n homeAccountId: string,\n localAccountId: string,\n tenantId: string,\n idTokenClaims?: TokenClaims\n): TenantProfile {\n if (idTokenClaims) {\n const { oid, sub, tid, name, tfp, acr } = idTokenClaims;\n\n /**\n * Since there is no way to determine if the authority is AAD or B2C, we exhaust all the possible claims that can serve as tenant ID with the following precedence:\n * tid - TenantID claim that identifies the tenant that issued the token in AAD. Expected in all AAD ID tokens, not present in B2C ID Tokens.\n * tfp - Trust Framework Policy claim that identifies the policy that was used to authenticate the user. Functions as tenant for B2C scenarios.\n * acr - Authentication Context Class Reference claim used only with older B2C policies. Fallback in case tfp is not present, but likely won't be present anyway.\n */\n const tenantId = tid || tfp || acr || \"\";\n\n return {\n tenantId: tenantId,\n localAccountId: oid || sub || \"\",\n name: name,\n isHomeTenant: tenantIdMatchesHomeTenant(tenantId, homeAccountId),\n };\n } else {\n return {\n tenantId,\n localAccountId,\n isHomeTenant: tenantIdMatchesHomeTenant(tenantId, homeAccountId),\n };\n }\n}\n\n/**\n * Replaces account info that varies by tenant profile sourced from the ID token claims passed in with the tenant-specific account info\n * @param baseAccountInfo\n * @param idTokenClaims\n * @returns\n */\nexport function updateAccountTenantProfileData(\n baseAccountInfo: AccountInfo,\n tenantProfile?: TenantProfile,\n idTokenClaims?: TokenClaims,\n idTokenSecret?: string\n): AccountInfo {\n let updatedAccountInfo = baseAccountInfo;\n // Tenant Profile overrides passed in account info\n if (tenantProfile) {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const { isHomeTenant, ...tenantProfileOverride } = tenantProfile;\n updatedAccountInfo = { ...baseAccountInfo, ...tenantProfileOverride };\n }\n\n // ID token claims override passed in account info and tenant profile\n if (idTokenClaims) {\n // Ignore isHomeTenant, loginHint, and sid which are part of tenant profile but not base account info\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const { isHomeTenant, ...claimsSourcedTenantProfile } =\n buildTenantProfile(\n baseAccountInfo.homeAccountId,\n baseAccountInfo.localAccountId,\n baseAccountInfo.tenantId,\n idTokenClaims\n );\n\n updatedAccountInfo = {\n ...updatedAccountInfo,\n ...claimsSourcedTenantProfile,\n idTokenClaims: idTokenClaims,\n idToken: idTokenSecret,\n };\n\n return updatedAccountInfo;\n }\n\n return updatedAccountInfo;\n}\n", "/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\n/**\n * Authority types supported by MSAL.\n */\nexport const AuthorityType = {\n Default: 0,\n Adfs: 1,\n Dsts: 2,\n Ciam: 3,\n} as const;\nexport type AuthorityType = (typeof AuthorityType)[keyof typeof AuthorityType];\n", "/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\n/**\n * Type which describes Id Token claims known by MSAL.\n */\nexport type TokenClaims = {\n /**\n * Audience\n */\n aud?: string;\n /**\n * Issuer\n */\n iss?: string;\n /**\n * Issued at\n */\n iat?: number;\n /**\n * Not valid before\n */\n nbf?: number;\n /**\n * Immutable object identifier, this ID uniquely identifies the user across applications\n */\n oid?: string;\n /**\n * Immutable subject identifier, this is a pairwise identifier - it is unique to a particular application ID\n */\n sub?: string;\n /**\n * Users' tenant or '9188040d-6c67-4c5b-b112-36a304b66dad' for personal accounts.\n */\n tid?: string;\n /**\n * Trusted Framework Policy (B2C) The name of the policy that was used to acquire the ID token.\n */\n tfp?: string;\n /**\n * Authentication Context Class Reference (B2C) Used only with older policies.\n */\n acr?: string;\n ver?: string;\n upn?: string;\n preferred_username?: string;\n login_hint?: string;\n emails?: string[];\n name?: string;\n nonce?: string;\n /**\n * Expiration\n */\n exp?: number;\n home_oid?: string;\n sid?: string;\n cloud_instance_host_name?: string;\n cnf?: {\n kid: string;\n };\n x5c_ca?: string[];\n ts?: number;\n at?: string;\n u?: string;\n p?: string;\n m?: string;\n roles?: string[];\n amr?: string[];\n idp?: string;\n auth_time?: number;\n /**\n * \tRegion of the resource tenant\n */\n tenant_region_scope?: string;\n tenant_region_sub_scope?: string;\n};\n\n/**\n * Gets tenantId from available ID token claims to set as credential realm with the following precedence:\n * 1. tid - if the token is acquired from an Azure AD tenant tid will be present\n * 2. tfp - if the token is acquired from a modern B2C tenant tfp should be present\n * 3. acr - if the token is acquired from a legacy B2C tenant acr should be present\n * Downcased to match the realm case-insensitive comparison requirements\n * @param idTokenClaims\n * @returns\n */\nexport function getTenantIdFromIdTokenClaims(\n idTokenClaims?: TokenClaims\n): string | null {\n if (idTokenClaims) {\n const tenantId =\n idTokenClaims.tid || idTokenClaims.tfp || idTokenClaims.acr;\n return tenantId || null;\n }\n return null;\n}\n", "/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\n/**\n * Protocol modes supported by MSAL.\n */\nexport const ProtocolMode = {\n /**\n * Auth Code + PKCE with Entra ID (formerly AAD) specific optimizations and features\n */\n AAD: \"AAD\",\n /**\n * Auth Code + PKCE without Entra ID specific optimizations and features. For use only with non-Microsoft owned authorities.\n * Support is limited for this mode.\n */\n OIDC: \"OIDC\",\n /**\n * Encrypted Authorize Response (EAR) with Entra ID specific optimizations and features\n */\n EAR: \"EAR\",\n} as const;\nexport type ProtocolMode = (typeof ProtocolMode)[keyof typeof ProtocolMode];\n", "/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { CacheAccountType, Separators } from \"../../utils/Constants.js\";\nimport type { Authority } from \"../../authority/Authority.js\";\nimport { ICrypto } from \"../../crypto/ICrypto.js\";\nimport { ClientInfo, buildClientInfo } from \"../../account/ClientInfo.js\";\nimport {\n AccountInfo,\n TenantProfile,\n buildTenantProfile,\n} from \"../../account/AccountInfo.js\";\nimport {\n createClientAuthError,\n ClientAuthErrorCodes,\n} from \"../../error/ClientAuthError.js\";\nimport { AuthorityType } from \"../../authority/AuthorityType.js\";\nimport { Logger } from \"../../logger/Logger.js\";\nimport {\n TokenClaims,\n getTenantIdFromIdTokenClaims,\n} from \"../../account/TokenClaims.js\";\nimport { ProtocolMode } from \"../../authority/ProtocolMode.js\";\n\n/**\n * Type that defines required and optional parameters for an Account field (based on universal cache schema implemented by all MSALs).\n *\n * Key : Value Schema\n *\n * Key: --\n *\n * Value Schema:\n * {\n * homeAccountId: home account identifier for the auth scheme,\n * environment: entity that issued the token, represented as a full host\n * realm: Full tenant or organizational identifier that the account belongs to\n * localAccountId: Original tenant-specific accountID, usually used for legacy cases\n * username: primary username that represents the user, usually corresponds to preferred_username in the v2 endpt\n * authorityType: Accounts authority type as a string\n * name: Full name for the account, including given name and family name,\n * lastModificationTime: last time this entity was modified in the cache\n * lastModificationApp:\n * nativeAccountId: Account identifier on the native device\n * tenantProfiles: Array of tenant profile objects for each tenant that the account has authenticated with in the browser\n * }\n * @internal\n */\nexport class AccountEntity {\n homeAccountId: string;\n environment: string;\n realm: string;\n localAccountId: string;\n username: string;\n authorityType: string;\n clientInfo?: string;\n name?: string;\n lastModificationTime?: string;\n lastModificationApp?: string;\n cloudGraphHostName?: string;\n msGraphHost?: string;\n nativeAccountId?: string;\n tenantProfiles?: Array;\n lastUpdatedAt?: string;\n\n /**\n * Generate Account Id key component as per the schema: -\n */\n generateAccountId(): string {\n const accountId: Array = [this.homeAccountId, this.environment];\n return accountId.join(Separators.CACHE_KEY_SEPARATOR).toLowerCase();\n }\n\n /**\n * Generate Account Cache Key as per the schema: --\n */\n generateAccountKey(): string {\n return AccountEntity.generateAccountCacheKey({\n homeAccountId: this.homeAccountId,\n environment: this.environment,\n tenantId: this.realm,\n username: this.username,\n localAccountId: this.localAccountId,\n });\n }\n\n /**\n * Returns the AccountInfo interface for this account.\n */\n getAccountInfo(): AccountInfo {\n return {\n homeAccountId: this.homeAccountId,\n environment: this.environment,\n tenantId: this.realm,\n username: this.username,\n localAccountId: this.localAccountId,\n name: this.name,\n nativeAccountId: this.nativeAccountId,\n authorityType: this.authorityType,\n // Deserialize tenant profiles array into a Map\n tenantProfiles: new Map(\n (this.tenantProfiles || []).map((tenantProfile) => {\n return [tenantProfile.tenantId, tenantProfile];\n })\n ),\n };\n }\n\n /**\n * Returns true if the account entity is in single tenant format (outdated), false otherwise\n */\n isSingleTenant(): boolean {\n return !this.tenantProfiles;\n }\n\n /**\n * Generates account key from interface\n * @param accountInterface\n */\n static generateAccountCacheKey(accountInterface: AccountInfo): string {\n const homeTenantId = accountInterface.homeAccountId.split(\".\")[1];\n const accountKey = [\n accountInterface.homeAccountId,\n accountInterface.environment || \"\",\n homeTenantId || accountInterface.tenantId || \"\",\n ];\n\n return accountKey.join(Separators.CACHE_KEY_SEPARATOR).toLowerCase();\n }\n\n /**\n * Build Account cache from IdToken, clientInfo and authority/policy. Associated with AAD.\n * @param accountDetails\n */\n static createAccount(\n accountDetails: {\n homeAccountId: string;\n idTokenClaims?: TokenClaims;\n clientInfo?: string;\n cloudGraphHostName?: string;\n msGraphHost?: string;\n environment?: string;\n nativeAccountId?: string;\n tenantProfiles?: Array;\n },\n authority: Authority,\n base64Decode?: (input: string) => string\n ): AccountEntity {\n const account: AccountEntity = new AccountEntity();\n\n if (authority.authorityType === AuthorityType.Adfs) {\n account.authorityType = CacheAccountType.ADFS_ACCOUNT_TYPE;\n } else if (authority.protocolMode === ProtocolMode.OIDC) {\n account.authorityType = CacheAccountType.GENERIC_ACCOUNT_TYPE;\n } else {\n account.authorityType = CacheAccountType.MSSTS_ACCOUNT_TYPE;\n }\n\n let clientInfo: ClientInfo | undefined;\n\n if (accountDetails.clientInfo && base64Decode) {\n clientInfo = buildClientInfo(\n accountDetails.clientInfo,\n base64Decode\n );\n }\n\n account.clientInfo = accountDetails.clientInfo;\n account.homeAccountId = accountDetails.homeAccountId;\n account.nativeAccountId = accountDetails.nativeAccountId;\n\n const env =\n accountDetails.environment ||\n (authority && authority.getPreferredCache());\n\n if (!env) {\n throw createClientAuthError(\n ClientAuthErrorCodes.invalidCacheEnvironment\n );\n }\n\n account.environment = env;\n // non AAD scenarios can have empty realm\n account.realm =\n clientInfo?.utid ||\n getTenantIdFromIdTokenClaims(accountDetails.idTokenClaims) ||\n \"\";\n\n // How do you account for MSA CID here?\n account.localAccountId =\n clientInfo?.uid ||\n accountDetails.idTokenClaims?.oid ||\n accountDetails.idTokenClaims?.sub ||\n \"\";\n\n /*\n * In B2C scenarios the emails claim is used instead of preferred_username and it is an array.\n * In most cases it will contain a single email. This field should not be relied upon if a custom\n * policy is configured to return more than 1 email.\n */\n const preferredUsername =\n accountDetails.idTokenClaims?.preferred_username ||\n accountDetails.idTokenClaims?.upn;\n const email = accountDetails.idTokenClaims?.emails\n ? accountDetails.idTokenClaims.emails[0]\n : null;\n\n account.username = preferredUsername || email || \"\";\n account.name = accountDetails.idTokenClaims?.name || \"\";\n\n account.cloudGraphHostName = accountDetails.cloudGraphHostName;\n account.msGraphHost = accountDetails.msGraphHost;\n\n if (accountDetails.tenantProfiles) {\n account.tenantProfiles = accountDetails.tenantProfiles;\n } else {\n const tenantProfile = buildTenantProfile(\n accountDetails.homeAccountId,\n account.localAccountId,\n account.realm,\n accountDetails.idTokenClaims\n );\n account.tenantProfiles = [tenantProfile];\n }\n\n return account;\n }\n\n /**\n * Creates an AccountEntity object from AccountInfo\n * @param accountInfo\n * @param cloudGraphHostName\n * @param msGraphHost\n * @returns\n */\n static createFromAccountInfo(\n accountInfo: AccountInfo,\n cloudGraphHostName?: string,\n msGraphHost?: string\n ): AccountEntity {\n const account: AccountEntity = new AccountEntity();\n\n account.authorityType =\n accountInfo.authorityType || CacheAccountType.GENERIC_ACCOUNT_TYPE;\n account.homeAccountId = accountInfo.homeAccountId;\n account.localAccountId = accountInfo.localAccountId;\n account.nativeAccountId = accountInfo.nativeAccountId;\n\n account.realm = accountInfo.tenantId;\n account.environment = accountInfo.environment;\n\n account.username = accountInfo.username;\n account.name = accountInfo.name;\n\n account.cloudGraphHostName = cloudGraphHostName;\n account.msGraphHost = msGraphHost;\n // Serialize tenant profiles map into an array\n account.tenantProfiles = Array.from(\n accountInfo.tenantProfiles?.values() || []\n );\n\n return account;\n }\n\n /**\n * Generate HomeAccountId from server response\n * @param serverClientInfo\n * @param authType\n */\n static generateHomeAccountId(\n serverClientInfo: string,\n authType: AuthorityType,\n logger: Logger,\n cryptoObj: ICrypto,\n idTokenClaims?: TokenClaims\n ): string {\n // since ADFS/DSTS do not have tid and does not set client_info\n if (\n !(\n authType === AuthorityType.Adfs ||\n authType === AuthorityType.Dsts\n )\n ) {\n // for cases where there is clientInfo\n if (serverClientInfo) {\n try {\n const clientInfo = buildClientInfo(\n serverClientInfo,\n cryptoObj.base64Decode\n );\n if (clientInfo.uid && clientInfo.utid) {\n return `${clientInfo.uid}.${clientInfo.utid}`;\n }\n } catch (e) {}\n }\n logger.warning(\"No client info in response\");\n }\n\n // default to \"sub\" claim\n return idTokenClaims?.sub || \"\";\n }\n\n /**\n * Validates an entity: checks for all expected params\n * @param entity\n */\n static isAccountEntity(entity: object): boolean {\n if (!entity) {\n return false;\n }\n\n return (\n entity.hasOwnProperty(\"homeAccountId\") &&\n entity.hasOwnProperty(\"environment\") &&\n entity.hasOwnProperty(\"realm\") &&\n entity.hasOwnProperty(\"localAccountId\") &&\n entity.hasOwnProperty(\"username\") &&\n entity.hasOwnProperty(\"authorityType\")\n );\n }\n\n /**\n * Helper function to determine whether 2 accountInfo objects represent the same account\n * @param accountA\n * @param accountB\n * @param compareClaims - If set to true idTokenClaims will also be compared to determine account equality\n */\n static accountInfoIsEqual(\n accountA: AccountInfo | null,\n accountB: AccountInfo | null,\n compareClaims?: boolean\n ): boolean {\n if (!accountA || !accountB) {\n return false;\n }\n\n let claimsMatch = true; // default to true so as to not fail comparison below if compareClaims: false\n if (compareClaims) {\n const accountAClaims = (accountA.idTokenClaims ||\n {}) as TokenClaims;\n const accountBClaims = (accountB.idTokenClaims ||\n {}) as TokenClaims;\n\n // issued at timestamp and nonce are expected to change each time a new id token is acquired\n claimsMatch =\n accountAClaims.iat === accountBClaims.iat &&\n accountAClaims.nonce === accountBClaims.nonce;\n }\n\n return (\n accountA.homeAccountId === accountB.homeAccountId &&\n accountA.localAccountId === accountB.localAccountId &&\n accountA.username === accountB.username &&\n accountA.tenantId === accountB.tenantId &&\n accountA.environment === accountB.environment &&\n accountA.nativeAccountId === accountB.nativeAccountId &&\n claimsMatch\n );\n }\n}\n", "/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { AuthorizeResponse } from \"../response/AuthorizeResponse.js\";\nimport {\n ClientAuthErrorCodes,\n createClientAuthError,\n} from \"../error/ClientAuthError.js\";\nimport { StringDict } from \"./MsalTypes.js\";\n\n/**\n * Parses hash string from given string. Returns empty string if no hash symbol is found.\n * @param hashString\n */\nexport function stripLeadingHashOrQuery(responseString: string): string {\n if (responseString.startsWith(\"#/\")) {\n return responseString.substring(2);\n } else if (\n responseString.startsWith(\"#\") ||\n responseString.startsWith(\"?\")\n ) {\n return responseString.substring(1);\n }\n\n return responseString;\n}\n\n/**\n * Returns URL hash as server auth code response object.\n */\nexport function getDeserializedResponse(\n responseString: string\n): AuthorizeResponse | null {\n // Check if given hash is empty\n if (!responseString || responseString.indexOf(\"=\") < 0) {\n return null;\n }\n try {\n // Strip the # or ? symbol if present\n const normalizedResponse = stripLeadingHashOrQuery(responseString);\n // If # symbol was not present, above will return empty string, so give original hash value\n const deserializedHash: AuthorizeResponse = Object.fromEntries(\n new URLSearchParams(normalizedResponse)\n );\n\n // Check for known response properties\n if (\n deserializedHash.code ||\n deserializedHash.ear_jwe ||\n deserializedHash.error ||\n deserializedHash.error_description ||\n deserializedHash.state\n ) {\n return deserializedHash;\n }\n } catch (e) {\n throw createClientAuthError(ClientAuthErrorCodes.hashNotDeserialized);\n }\n\n return null;\n}\n\n/**\n * Utility to create a URL from the params map\n */\nexport function mapToQueryString(\n parameters: Map,\n encodeExtraParams: boolean = true,\n extraQueryParameters?: StringDict\n): string {\n const queryParameterArray: Array = new Array();\n\n parameters.forEach((value, key) => {\n if (\n !encodeExtraParams &&\n extraQueryParameters &&\n key in extraQueryParameters\n ) {\n queryParameterArray.push(`${key}=${value}`);\n } else {\n queryParameterArray.push(`${key}=${encodeURIComponent(value)}`);\n }\n });\n\n return queryParameterArray.join(\"&\");\n}\n", "/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport {\n createClientConfigurationError,\n ClientConfigurationErrorCodes,\n} from \"../error/ClientConfigurationError.js\";\nimport { StringUtils } from \"../utils/StringUtils.js\";\nimport { IUri } from \"./IUri.js\";\nimport { AADAuthorityConstants, Constants } from \"../utils/Constants.js\";\nimport * as UrlUtils from \"../utils/UrlUtils.js\";\n\n/**\n * Url object class which can perform various transformations on url strings.\n */\nexport class UrlString {\n // internal url string field\n private _urlString: string;\n public get urlString(): string {\n return this._urlString;\n }\n\n constructor(url: string) {\n this._urlString = url;\n if (!this._urlString) {\n // Throws error if url is empty\n throw createClientConfigurationError(\n ClientConfigurationErrorCodes.urlEmptyError\n );\n }\n\n if (!url.includes(\"#\")) {\n this._urlString = UrlString.canonicalizeUri(url);\n }\n }\n\n /**\n * Ensure urls are lower case and end with a / character.\n * @param url\n */\n static canonicalizeUri(url: string): string {\n if (url) {\n let lowerCaseUrl = url.toLowerCase();\n\n if (StringUtils.endsWith(lowerCaseUrl, \"?\")) {\n lowerCaseUrl = lowerCaseUrl.slice(0, -1);\n } else if (StringUtils.endsWith(lowerCaseUrl, \"?/\")) {\n lowerCaseUrl = lowerCaseUrl.slice(0, -2);\n }\n\n if (!StringUtils.endsWith(lowerCaseUrl, \"/\")) {\n lowerCaseUrl += \"/\";\n }\n\n return lowerCaseUrl;\n }\n\n return url;\n }\n\n /**\n * Throws if urlString passed is not a valid authority URI string.\n */\n validateAsUri(): void {\n // Attempts to parse url for uri components\n let components;\n try {\n components = this.getUrlComponents();\n } catch (e) {\n throw createClientConfigurationError(\n ClientConfigurationErrorCodes.urlParseError\n );\n }\n\n // Throw error if URI or path segments are not parseable.\n if (!components.HostNameAndPort || !components.PathSegments) {\n throw createClientConfigurationError(\n ClientConfigurationErrorCodes.urlParseError\n );\n }\n\n // Throw error if uri is insecure.\n if (\n !components.Protocol ||\n components.Protocol.toLowerCase() !== \"https:\"\n ) {\n throw createClientConfigurationError(\n ClientConfigurationErrorCodes.authorityUriInsecure\n );\n }\n }\n\n /**\n * Given a url and a query string return the url with provided query string appended\n * @param url\n * @param queryString\n */\n static appendQueryString(url: string, queryString: string): string {\n if (!queryString) {\n return url;\n }\n\n return url.indexOf(\"?\") < 0\n ? `${url}?${queryString}`\n : `${url}&${queryString}`;\n }\n\n /**\n * Returns a url with the hash removed\n * @param url\n */\n static removeHashFromUrl(url: string): string {\n return UrlString.canonicalizeUri(url.split(\"#\")[0]);\n }\n\n /**\n * Given a url like https://a:b/common/d?e=f#g, and a tenantId, returns https://a:b/tenantId/d\n * @param href The url\n * @param tenantId The tenant id to replace\n */\n replaceTenantPath(tenantId: string): UrlString {\n const urlObject = this.getUrlComponents();\n const pathArray = urlObject.PathSegments;\n if (\n tenantId &&\n pathArray.length !== 0 &&\n (pathArray[0] === AADAuthorityConstants.COMMON ||\n pathArray[0] === AADAuthorityConstants.ORGANIZATIONS)\n ) {\n pathArray[0] = tenantId;\n }\n return UrlString.constructAuthorityUriFromObject(urlObject);\n }\n\n /**\n * Parses out the components from a url string.\n * @returns An object with the various components. Please cache this value insted of calling this multiple times on the same url.\n */\n getUrlComponents(): IUri {\n // https://gist.github.com/curtisz/11139b2cfcaef4a261e0\n const regEx = RegExp(\n \"^(([^:/?#]+):)?(//([^/?#]*))?([^?#]*)(\\\\?([^#]*))?(#(.*))?\"\n );\n\n // If url string does not match regEx, we throw an error\n const match = this.urlString.match(regEx);\n if (!match) {\n throw createClientConfigurationError(\n ClientConfigurationErrorCodes.urlParseError\n );\n }\n\n // Url component object\n const urlComponents = {\n Protocol: match[1],\n HostNameAndPort: match[4],\n AbsolutePath: match[5],\n QueryString: match[7],\n } as IUri;\n\n let pathSegments = urlComponents.AbsolutePath.split(\"/\");\n pathSegments = pathSegments.filter((val) => val && val.length > 0); // remove empty elements\n urlComponents.PathSegments = pathSegments;\n\n if (\n urlComponents.QueryString &&\n urlComponents.QueryString.endsWith(\"/\")\n ) {\n urlComponents.QueryString = urlComponents.QueryString.substring(\n 0,\n urlComponents.QueryString.length - 1\n );\n }\n return urlComponents;\n }\n\n static getDomainFromUrl(url: string): string {\n const regEx = RegExp(\"^([^:/?#]+://)?([^/?#]*)\");\n\n const match = url.match(regEx);\n\n if (!match) {\n throw createClientConfigurationError(\n ClientConfigurationErrorCodes.urlParseError\n );\n }\n\n return match[2];\n }\n\n static getAbsoluteUrl(relativeUrl: string, baseUrl: string): string {\n if (relativeUrl[0] === Constants.FORWARD_SLASH) {\n const url = new UrlString(baseUrl);\n const baseComponents = url.getUrlComponents();\n\n return (\n baseComponents.Protocol +\n \"//\" +\n baseComponents.HostNameAndPort +\n relativeUrl\n );\n }\n\n return relativeUrl;\n }\n\n static constructAuthorityUriFromObject(urlObject: IUri): UrlString {\n return new UrlString(\n urlObject.Protocol +\n \"//\" +\n urlObject.HostNameAndPort +\n \"/\" +\n urlObject.PathSegments.join(\"/\")\n );\n }\n\n /**\n * Check if the hash of the URL string contains known properties\n * @deprecated This API will be removed in a future version\n */\n static hashContainsKnownProperties(response: string): boolean {\n return !!UrlUtils.getDeserializedResponse(response);\n }\n}\n", "/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { Logger } from \"../logger/Logger.js\";\nimport { UrlString } from \"../url/UrlString.js\";\nimport { AuthorityMetadataSource } from \"../utils/Constants.js\";\nimport { StaticAuthorityOptions } from \"./AuthorityOptions.js\";\nimport { CloudDiscoveryMetadata } from \"./CloudDiscoveryMetadata.js\";\nimport { CloudInstanceDiscoveryResponse } from \"./CloudInstanceDiscoveryResponse.js\";\nimport { OpenIdConfigResponse } from \"./OpenIdConfigResponse.js\";\n\ntype RawMetadata = {\n endpointMetadata: { [key: string]: OpenIdConfigResponse };\n instanceDiscoveryMetadata: CloudInstanceDiscoveryResponse;\n};\n\nexport const rawMetdataJSON: RawMetadata = {\n endpointMetadata: {\n \"login.microsoftonline.com\": {\n token_endpoint:\n \"https://login.microsoftonline.com/{tenantid}/oauth2/v2.0/token\",\n jwks_uri:\n \"https://login.microsoftonline.com/{tenantid}/discovery/v2.0/keys\",\n issuer: \"https://login.microsoftonline.com/{tenantid}/v2.0\",\n authorization_endpoint:\n \"https://login.microsoftonline.com/{tenantid}/oauth2/v2.0/authorize\",\n end_session_endpoint:\n \"https://login.microsoftonline.com/{tenantid}/oauth2/v2.0/logout\",\n },\n \"login.chinacloudapi.cn\": {\n token_endpoint:\n \"https://login.chinacloudapi.cn/{tenantid}/oauth2/v2.0/token\",\n jwks_uri:\n \"https://login.chinacloudapi.cn/{tenantid}/discovery/v2.0/keys\",\n issuer: \"https://login.partner.microsoftonline.cn/{tenantid}/v2.0\",\n authorization_endpoint:\n \"https://login.chinacloudapi.cn/{tenantid}/oauth2/v2.0/authorize\",\n end_session_endpoint:\n \"https://login.chinacloudapi.cn/{tenantid}/oauth2/v2.0/logout\",\n },\n \"login.microsoftonline.us\": {\n token_endpoint:\n \"https://login.microsoftonline.us/{tenantid}/oauth2/v2.0/token\",\n jwks_uri:\n \"https://login.microsoftonline.us/{tenantid}/discovery/v2.0/keys\",\n issuer: \"https://login.microsoftonline.us/{tenantid}/v2.0\",\n authorization_endpoint:\n \"https://login.microsoftonline.us/{tenantid}/oauth2/v2.0/authorize\",\n end_session_endpoint:\n \"https://login.microsoftonline.us/{tenantid}/oauth2/v2.0/logout\",\n },\n },\n instanceDiscoveryMetadata: {\n tenant_discovery_endpoint:\n \"https://{canonicalAuthority}/v2.0/.well-known/openid-configuration\",\n metadata: [\n {\n preferred_network: \"login.microsoftonline.com\",\n preferred_cache: \"login.windows.net\",\n aliases: [\n \"login.microsoftonline.com\",\n \"login.windows.net\",\n \"login.microsoft.com\",\n \"sts.windows.net\",\n ],\n },\n {\n preferred_network: \"login.partner.microsoftonline.cn\",\n preferred_cache: \"login.partner.microsoftonline.cn\",\n aliases: [\n \"login.partner.microsoftonline.cn\",\n \"login.chinacloudapi.cn\",\n ],\n },\n {\n preferred_network: \"login.microsoftonline.de\",\n preferred_cache: \"login.microsoftonline.de\",\n aliases: [\"login.microsoftonline.de\"],\n },\n {\n preferred_network: \"login.microsoftonline.us\",\n preferred_cache: \"login.microsoftonline.us\",\n aliases: [\n \"login.microsoftonline.us\",\n \"login.usgovcloudapi.net\",\n ],\n },\n {\n preferred_network: \"login-us.microsoftonline.com\",\n preferred_cache: \"login-us.microsoftonline.com\",\n aliases: [\"login-us.microsoftonline.com\"],\n },\n ],\n },\n};\n\nexport const EndpointMetadata = rawMetdataJSON.endpointMetadata;\nexport const InstanceDiscoveryMetadata =\n rawMetdataJSON.instanceDiscoveryMetadata;\n\nexport const InstanceDiscoveryMetadataAliases: Set = new Set();\nInstanceDiscoveryMetadata.metadata.forEach(\n (metadataEntry: CloudDiscoveryMetadata) => {\n metadataEntry.aliases.forEach((alias: string) => {\n InstanceDiscoveryMetadataAliases.add(alias);\n });\n }\n);\n\n/**\n * Attempts to get an aliases array from the static authority metadata sources based on the canonical authority host\n * @param staticAuthorityOptions\n * @param logger\n * @returns\n */\nexport function getAliasesFromStaticSources(\n staticAuthorityOptions: StaticAuthorityOptions,\n logger?: Logger\n): string[] {\n let staticAliases: string[] | undefined;\n const canonicalAuthority = staticAuthorityOptions.canonicalAuthority;\n if (canonicalAuthority) {\n const authorityHost = new UrlString(\n canonicalAuthority\n ).getUrlComponents().HostNameAndPort;\n staticAliases =\n getAliasesFromMetadata(\n authorityHost,\n staticAuthorityOptions.cloudDiscoveryMetadata?.metadata,\n AuthorityMetadataSource.CONFIG,\n logger\n ) ||\n getAliasesFromMetadata(\n authorityHost,\n InstanceDiscoveryMetadata.metadata,\n AuthorityMetadataSource.HARDCODED_VALUES,\n logger\n ) ||\n staticAuthorityOptions.knownAuthorities;\n }\n\n return staticAliases || [];\n}\n\n/**\n * Returns aliases for from the raw cloud discovery metadata passed in\n * @param authorityHost\n * @param rawCloudDiscoveryMetadata\n * @returns\n */\nexport function getAliasesFromMetadata(\n authorityHost?: string,\n cloudDiscoveryMetadata?: CloudDiscoveryMetadata[],\n source?: AuthorityMetadataSource,\n logger?: Logger\n): string[] | null {\n logger?.trace(`getAliasesFromMetadata called with source: ${source}`);\n if (authorityHost && cloudDiscoveryMetadata) {\n const metadata = getCloudDiscoveryMetadataFromNetworkResponse(\n cloudDiscoveryMetadata,\n authorityHost\n );\n\n if (metadata) {\n logger?.trace(\n `getAliasesFromMetadata: found cloud discovery metadata in ${source}, returning aliases`\n );\n return metadata.aliases;\n } else {\n logger?.trace(\n `getAliasesFromMetadata: did not find cloud discovery metadata in ${source}`\n );\n }\n }\n\n return null;\n}\n\n/**\n * Get cloud discovery metadata for common authorities\n */\nexport function getCloudDiscoveryMetadataFromHardcodedValues(\n authorityHost: string\n): CloudDiscoveryMetadata | null {\n const metadata = getCloudDiscoveryMetadataFromNetworkResponse(\n InstanceDiscoveryMetadata.metadata,\n authorityHost\n );\n return metadata;\n}\n\n/**\n * Searches instance discovery network response for the entry that contains the host in the aliases list\n * @param response\n * @param authority\n */\nexport function getCloudDiscoveryMetadataFromNetworkResponse(\n response: CloudDiscoveryMetadata[],\n authorityHost: string\n): CloudDiscoveryMetadata | null {\n for (let i = 0; i < response.length; i++) {\n const metadata = response[i];\n if (metadata.aliases.includes(authorityHost)) {\n return metadata;\n }\n }\n\n return null;\n}\n", "/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nexport const cacheQuotaExceeded = \"cache_quota_exceeded\";\nexport const cacheErrorUnknown = \"cache_error_unknown\";\n", "/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { AuthError } from \"./AuthError.js\";\nimport * as CacheErrorCodes from \"./CacheErrorCodes.js\";\nexport { CacheErrorCodes };\n\nexport const CacheErrorMessages = {\n [CacheErrorCodes.cacheQuotaExceeded]: \"Exceeded cache storage capacity.\",\n [CacheErrorCodes.cacheErrorUnknown]:\n \"Unexpected error occurred when using cache storage.\",\n};\n\n/**\n * Error thrown when there is an error with the cache\n */\nexport class CacheError extends AuthError {\n /**\n * Short string denoting error\n */\n errorCode: string;\n\n /**\n * Detailed description of error\n */\n errorMessage: string;\n\n constructor(errorCode: string, errorMessage?: string) {\n const message =\n errorMessage ||\n (CacheErrorMessages[errorCode]\n ? CacheErrorMessages[errorCode]\n : CacheErrorMessages[CacheErrorCodes.cacheErrorUnknown]);\n\n super(`${errorCode}: ${message}`);\n Object.setPrototypeOf(this, CacheError.prototype);\n\n this.name = \"CacheError\";\n this.errorCode = errorCode;\n this.errorMessage = message;\n }\n}\n\n/**\n * Helper function to wrap browser errors in a CacheError object\n * @param e\n * @returns\n */\nexport function createCacheError(e: unknown): CacheError {\n if (!(e instanceof Error)) {\n return new CacheError(CacheErrorCodes.cacheErrorUnknown);\n }\n\n if (\n e.name === \"QuotaExceededError\" ||\n e.name === \"NS_ERROR_DOM_QUOTA_REACHED\" ||\n e.message.includes(\"exceeded the quota\")\n ) {\n return new CacheError(CacheErrorCodes.cacheQuotaExceeded);\n } else {\n return new CacheError(e.name, e.message);\n }\n}\n", "/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport {\n AccountFilter,\n CredentialFilter,\n ValidCredentialType,\n AppMetadataFilter,\n AppMetadataCache,\n TokenKeys,\n TenantProfileFilter,\n} from \"./utils/CacheTypes.js\";\nimport { CacheRecord } from \"./entities/CacheRecord.js\";\nimport {\n CredentialType,\n APP_METADATA,\n THE_FAMILY_ID,\n AUTHORITY_METADATA_CONSTANTS,\n AuthenticationScheme,\n Separators,\n} from \"../utils/Constants.js\";\nimport { CredentialEntity } from \"./entities/CredentialEntity.js\";\nimport { generateCredentialKey } from \"./utils/CacheHelpers.js\";\nimport { ScopeSet } from \"../request/ScopeSet.js\";\nimport { AccountEntity } from \"./entities/AccountEntity.js\";\nimport { AccessTokenEntity } from \"./entities/AccessTokenEntity.js\";\nimport { IdTokenEntity } from \"./entities/IdTokenEntity.js\";\nimport { RefreshTokenEntity } from \"./entities/RefreshTokenEntity.js\";\nimport { ICacheManager } from \"./interface/ICacheManager.js\";\nimport {\n createClientAuthError,\n ClientAuthErrorCodes,\n} from \"../error/ClientAuthError.js\";\nimport {\n AccountInfo,\n TenantProfile,\n updateAccountTenantProfileData,\n} from \"../account/AccountInfo.js\";\nimport { AppMetadataEntity } from \"./entities/AppMetadataEntity.js\";\nimport { ServerTelemetryEntity } from \"./entities/ServerTelemetryEntity.js\";\nimport { ThrottlingEntity } from \"./entities/ThrottlingEntity.js\";\nimport { extractTokenClaims } from \"../account/AuthToken.js\";\nimport { ICrypto } from \"../crypto/ICrypto.js\";\nimport { AuthorityMetadataEntity } from \"./entities/AuthorityMetadataEntity.js\";\nimport { BaseAuthRequest } from \"../request/BaseAuthRequest.js\";\nimport { Logger } from \"../logger/Logger.js\";\nimport { name, version } from \"../packageMetadata.js\";\nimport { StoreInCache } from \"../request/StoreInCache.js\";\nimport { getAliasesFromStaticSources } from \"../authority/AuthorityMetadata.js\";\nimport { StaticAuthorityOptions } from \"../authority/AuthorityOptions.js\";\nimport { TokenClaims } from \"../account/TokenClaims.js\";\nimport { IPerformanceClient } from \"../telemetry/performance/IPerformanceClient.js\";\nimport { createCacheError } from \"../error/CacheError.js\";\nimport { AuthError } from \"../error/AuthError.js\";\n\n/**\n * Interface class which implement cache storage functions used by MSAL to perform validity checks, and store tokens.\n * @internal\n */\nexport abstract class CacheManager implements ICacheManager {\n protected clientId: string;\n protected cryptoImpl: ICrypto;\n // Instance of logger for functions defined in the msal-common layer\n private commonLogger: Logger;\n private staticAuthorityOptions?: StaticAuthorityOptions;\n protected performanceClient: IPerformanceClient;\n\n constructor(\n clientId: string,\n cryptoImpl: ICrypto,\n logger: Logger,\n performanceClient: IPerformanceClient,\n staticAuthorityOptions?: StaticAuthorityOptions\n ) {\n this.clientId = clientId;\n this.cryptoImpl = cryptoImpl;\n this.commonLogger = logger.clone(name, version);\n this.staticAuthorityOptions = staticAuthorityOptions;\n this.performanceClient = performanceClient;\n }\n\n /**\n * fetch the account entity from the platform cache\n * @param accountKey\n */\n abstract getAccount(\n accountKey: string,\n correlationId: string\n ): AccountEntity | null;\n\n /**\n * set account entity in the platform cache\n * @param account\n * @param correlationId\n */\n abstract setAccount(\n account: AccountEntity,\n correlationId: string\n ): Promise;\n\n /**\n * fetch the idToken entity from the platform cache\n * @param idTokenKey\n */\n abstract getIdTokenCredential(\n idTokenKey: string,\n correlationId: string\n ): IdTokenEntity | null;\n\n /**\n * set idToken entity to the platform cache\n * @param idToken\n * @param correlationId\n */\n abstract setIdTokenCredential(\n idToken: IdTokenEntity,\n correlationId: string\n ): Promise;\n\n /**\n * fetch the idToken entity from the platform cache\n * @param accessTokenKey\n */\n abstract getAccessTokenCredential(\n accessTokenKey: string,\n correlationId: string\n ): AccessTokenEntity | null;\n\n /**\n * set accessToken entity to the platform cache\n * @param accessToken\n * @param correlationId\n */\n abstract setAccessTokenCredential(\n accessToken: AccessTokenEntity,\n correlationId: string\n ): Promise;\n\n /**\n * fetch the idToken entity from the platform cache\n * @param refreshTokenKey\n */\n abstract getRefreshTokenCredential(\n refreshTokenKey: string,\n correlationId: string\n ): RefreshTokenEntity | null;\n\n /**\n * set refreshToken entity to the platform cache\n * @param refreshToken\n * @param correlationId\n */\n abstract setRefreshTokenCredential(\n refreshToken: RefreshTokenEntity,\n correlationId: string\n ): Promise;\n\n /**\n * fetch appMetadata entity from the platform cache\n * @param appMetadataKey\n */\n abstract getAppMetadata(appMetadataKey: string): AppMetadataEntity | null;\n\n /**\n * set appMetadata entity to the platform cache\n * @param appMetadata\n */\n abstract setAppMetadata(\n appMetadata: AppMetadataEntity,\n correlationId: string\n ): void;\n\n /**\n * fetch server telemetry entity from the platform cache\n * @param serverTelemetryKey\n */\n abstract getServerTelemetry(\n serverTelemetryKey: string\n ): ServerTelemetryEntity | null;\n\n /**\n * set server telemetry entity to the platform cache\n * @param serverTelemetryKey\n * @param serverTelemetry\n */\n abstract setServerTelemetry(\n serverTelemetryKey: string,\n serverTelemetry: ServerTelemetryEntity,\n correlationId: string\n ): void;\n\n /**\n * fetch cloud discovery metadata entity from the platform cache\n * @param key\n */\n abstract getAuthorityMetadata(key: string): AuthorityMetadataEntity | null;\n\n /**\n *\n */\n abstract getAuthorityMetadataKeys(): Array;\n\n /**\n * set cloud discovery metadata entity to the platform cache\n * @param key\n * @param value\n */\n abstract setAuthorityMetadata(\n key: string,\n value: AuthorityMetadataEntity\n ): void;\n\n /**\n * fetch throttling entity from the platform cache\n * @param throttlingCacheKey\n */\n abstract getThrottlingCache(\n throttlingCacheKey: string\n ): ThrottlingEntity | null;\n\n /**\n * set throttling entity to the platform cache\n * @param throttlingCacheKey\n * @param throttlingCache\n */\n abstract setThrottlingCache(\n throttlingCacheKey: string,\n throttlingCache: ThrottlingEntity,\n correlationId: string\n ): void;\n\n /**\n * Function to remove an item from cache given its key.\n * @param key\n */\n abstract removeItem(key: string, correlationId: string): void;\n\n /**\n * Function which retrieves all current keys from the cache.\n */\n abstract getKeys(): string[];\n\n /**\n * Function which retrieves all account keys from the cache\n */\n abstract getAccountKeys(): string[];\n\n /**\n * Function which retrieves all token keys from the cache\n */\n abstract getTokenKeys(): TokenKeys;\n\n /**\n * Returns all the accounts in the cache that match the optional filter. If no filter is provided, all accounts are returned.\n * @param accountFilter - (Optional) filter to narrow down the accounts returned\n * @returns Array of AccountInfo objects in cache\n */\n getAllAccounts(\n accountFilter: AccountFilter,\n correlationId: string\n ): AccountInfo[] {\n return this.buildTenantProfiles(\n this.getAccountsFilteredBy(accountFilter, correlationId),\n correlationId,\n accountFilter\n );\n }\n\n /**\n * Gets first tenanted AccountInfo object found based on provided filters\n */\n getAccountInfoFilteredBy(\n accountFilter: AccountFilter,\n correlationId: string\n ): AccountInfo | null {\n const allAccounts = this.getAllAccounts(accountFilter, correlationId);\n if (allAccounts.length > 1) {\n // If one or more accounts are found, prioritize accounts that have an ID token\n const sortedAccounts = allAccounts.sort((account) => {\n return account.idTokenClaims ? -1 : 1;\n });\n return sortedAccounts[0];\n } else if (allAccounts.length === 1) {\n // If only one account is found, return it regardless of whether a matching ID token was found\n return allAccounts[0];\n } else {\n return null;\n }\n }\n\n /**\n * Returns a single matching\n * @param accountFilter\n * @returns\n */\n getBaseAccountInfo(\n accountFilter: AccountFilter,\n correlationId: string\n ): AccountInfo | null {\n const accountEntities = this.getAccountsFilteredBy(\n accountFilter,\n correlationId\n );\n if (accountEntities.length > 0) {\n return accountEntities[0].getAccountInfo();\n } else {\n return null;\n }\n }\n\n /**\n * Matches filtered account entities with cached ID tokens that match the tenant profile-specific account filters\n * and builds the account info objects from the matching ID token's claims\n * @param cachedAccounts\n * @param accountFilter\n * @returns Array of AccountInfo objects that match account and tenant profile filters\n */\n private buildTenantProfiles(\n cachedAccounts: AccountEntity[],\n correlationId: string,\n accountFilter?: AccountFilter\n ): AccountInfo[] {\n return cachedAccounts.flatMap((accountEntity) => {\n return this.getTenantProfilesFromAccountEntity(\n accountEntity,\n correlationId,\n accountFilter?.tenantId,\n accountFilter\n );\n });\n }\n\n private getTenantedAccountInfoByFilter(\n accountInfo: AccountInfo,\n tokenKeys: TokenKeys,\n tenantProfile: TenantProfile,\n correlationId: string,\n tenantProfileFilter?: TenantProfileFilter\n ): AccountInfo | null {\n let tenantedAccountInfo: AccountInfo | null = null;\n let idTokenClaims: TokenClaims | undefined;\n\n if (tenantProfileFilter) {\n if (\n !this.tenantProfileMatchesFilter(\n tenantProfile,\n tenantProfileFilter\n )\n ) {\n return null;\n }\n }\n\n const idToken = this.getIdToken(\n accountInfo,\n correlationId,\n tokenKeys,\n tenantProfile.tenantId\n );\n\n if (idToken) {\n idTokenClaims = extractTokenClaims(\n idToken.secret,\n this.cryptoImpl.base64Decode\n );\n\n if (\n !this.idTokenClaimsMatchTenantProfileFilter(\n idTokenClaims,\n tenantProfileFilter\n )\n ) {\n // ID token sourced claims don't match so this tenant profile is not a match\n return null;\n }\n }\n\n // Expand tenant profile into account info based on matching tenant profile and if available matching ID token claims\n tenantedAccountInfo = updateAccountTenantProfileData(\n accountInfo,\n tenantProfile,\n idTokenClaims,\n idToken?.secret\n );\n\n return tenantedAccountInfo;\n }\n\n private getTenantProfilesFromAccountEntity(\n accountEntity: AccountEntity,\n correlationId: string,\n targetTenantId?: string,\n tenantProfileFilter?: TenantProfileFilter\n ): AccountInfo[] {\n const accountInfo = accountEntity.getAccountInfo();\n let searchTenantProfiles: Map =\n accountInfo.tenantProfiles || new Map();\n const tokenKeys = this.getTokenKeys();\n\n // If a tenant ID was provided, only return the tenant profile for that tenant ID if it exists\n if (targetTenantId) {\n const tenantProfile = searchTenantProfiles.get(targetTenantId);\n if (tenantProfile) {\n // Reduce search field to just this tenant profile\n searchTenantProfiles = new Map([\n [targetTenantId, tenantProfile],\n ]);\n } else {\n // No tenant profile for search tenant ID, return empty array\n return [];\n }\n }\n\n const matchingTenantProfiles: AccountInfo[] = [];\n searchTenantProfiles.forEach((tenantProfile: TenantProfile) => {\n const tenantedAccountInfo = this.getTenantedAccountInfoByFilter(\n accountInfo,\n tokenKeys,\n tenantProfile,\n correlationId,\n tenantProfileFilter\n );\n if (tenantedAccountInfo) {\n matchingTenantProfiles.push(tenantedAccountInfo);\n }\n });\n\n return matchingTenantProfiles;\n }\n\n private tenantProfileMatchesFilter(\n tenantProfile: TenantProfile,\n tenantProfileFilter: TenantProfileFilter\n ): boolean {\n if (\n !!tenantProfileFilter.localAccountId &&\n !this.matchLocalAccountIdFromTenantProfile(\n tenantProfile,\n tenantProfileFilter.localAccountId\n )\n ) {\n return false;\n }\n\n if (\n !!tenantProfileFilter.name &&\n !(tenantProfile.name === tenantProfileFilter.name)\n ) {\n return false;\n }\n\n if (\n tenantProfileFilter.isHomeTenant !== undefined &&\n !(tenantProfile.isHomeTenant === tenantProfileFilter.isHomeTenant)\n ) {\n return false;\n }\n\n return true;\n }\n\n private idTokenClaimsMatchTenantProfileFilter(\n idTokenClaims: TokenClaims,\n tenantProfileFilter?: TenantProfileFilter\n ): boolean {\n // Tenant Profile filtering\n if (tenantProfileFilter) {\n if (\n !!tenantProfileFilter.localAccountId &&\n !this.matchLocalAccountIdFromTokenClaims(\n idTokenClaims,\n tenantProfileFilter.localAccountId\n )\n ) {\n return false;\n }\n\n if (\n !!tenantProfileFilter.loginHint &&\n !this.matchLoginHintFromTokenClaims(\n idTokenClaims,\n tenantProfileFilter.loginHint\n )\n ) {\n return false;\n }\n\n if (\n !!tenantProfileFilter.username &&\n !this.matchUsername(\n idTokenClaims.preferred_username,\n tenantProfileFilter.username\n )\n ) {\n return false;\n }\n\n if (\n !!tenantProfileFilter.name &&\n !this.matchName(idTokenClaims, tenantProfileFilter.name)\n ) {\n return false;\n }\n\n if (\n !!tenantProfileFilter.sid &&\n !this.matchSid(idTokenClaims, tenantProfileFilter.sid)\n ) {\n return false;\n }\n }\n\n return true;\n }\n\n /**\n * saves a cache record\n * @param cacheRecord {CacheRecord}\n * @param storeInCache {?StoreInCache}\n * @param correlationId {?string} correlation id\n */\n async saveCacheRecord(\n cacheRecord: CacheRecord,\n correlationId: string,\n storeInCache?: StoreInCache\n ): Promise {\n if (!cacheRecord) {\n throw createClientAuthError(\n ClientAuthErrorCodes.invalidCacheRecord\n );\n }\n\n try {\n if (!!cacheRecord.account) {\n await this.setAccount(cacheRecord.account, correlationId);\n }\n\n if (!!cacheRecord.idToken && storeInCache?.idToken !== false) {\n await this.setIdTokenCredential(\n cacheRecord.idToken,\n correlationId\n );\n }\n\n if (\n !!cacheRecord.accessToken &&\n storeInCache?.accessToken !== false\n ) {\n await this.saveAccessToken(\n cacheRecord.accessToken,\n correlationId\n );\n }\n\n if (\n !!cacheRecord.refreshToken &&\n storeInCache?.refreshToken !== false\n ) {\n await this.setRefreshTokenCredential(\n cacheRecord.refreshToken,\n correlationId\n );\n }\n\n if (!!cacheRecord.appMetadata) {\n this.setAppMetadata(cacheRecord.appMetadata, correlationId);\n }\n } catch (e: unknown) {\n this.commonLogger?.error(`CacheManager.saveCacheRecord: failed`);\n if (e instanceof AuthError) {\n throw e;\n } else {\n throw createCacheError(e);\n }\n }\n }\n\n /**\n * saves access token credential\n * @param credential\n */\n private async saveAccessToken(\n credential: AccessTokenEntity,\n correlationId: string\n ): Promise {\n const accessTokenFilter: CredentialFilter = {\n clientId: credential.clientId,\n credentialType: credential.credentialType,\n environment: credential.environment,\n homeAccountId: credential.homeAccountId,\n realm: credential.realm,\n tokenType: credential.tokenType,\n requestedClaimsHash: credential.requestedClaimsHash,\n };\n\n const tokenKeys = this.getTokenKeys();\n const currentScopes = ScopeSet.fromString(credential.target);\n\n tokenKeys.accessToken.forEach((key) => {\n if (\n !this.accessTokenKeyMatchesFilter(key, accessTokenFilter, false)\n ) {\n return;\n }\n\n const tokenEntity = this.getAccessTokenCredential(\n key,\n correlationId\n );\n\n if (\n tokenEntity &&\n this.credentialMatchesFilter(tokenEntity, accessTokenFilter)\n ) {\n const tokenScopeSet = ScopeSet.fromString(tokenEntity.target);\n if (tokenScopeSet.intersectingScopeSets(currentScopes)) {\n this.removeAccessToken(key, correlationId);\n }\n }\n });\n await this.setAccessTokenCredential(credential, correlationId);\n }\n\n /**\n * Retrieve account entities matching all provided tenant-agnostic filters; if no filter is set, get all account entities in the cache\n * Not checking for casing as keys are all generated in lower case, remember to convert to lower case if object properties are compared\n * @param accountFilter - An object containing Account properties to filter by\n */\n getAccountsFilteredBy(\n accountFilter: AccountFilter,\n correlationId: string\n ): AccountEntity[] {\n const allAccountKeys = this.getAccountKeys();\n const matchingAccounts: AccountEntity[] = [];\n allAccountKeys.forEach((cacheKey) => {\n if (!this.isAccountKey(cacheKey, accountFilter.homeAccountId)) {\n // Don't parse value if the key doesn't match the account filters\n return;\n }\n\n const entity: AccountEntity | null = this.getAccount(\n cacheKey,\n correlationId\n );\n\n // Match base account fields\n\n if (!entity) {\n return;\n }\n\n if (\n !!accountFilter.homeAccountId &&\n !this.matchHomeAccountId(entity, accountFilter.homeAccountId)\n ) {\n return;\n }\n\n if (\n !!accountFilter.username &&\n !this.matchUsername(entity.username, accountFilter.username)\n ) {\n return;\n }\n\n if (\n !!accountFilter.environment &&\n !this.matchEnvironment(entity, accountFilter.environment)\n ) {\n return;\n }\n\n if (\n !!accountFilter.realm &&\n !this.matchRealm(entity, accountFilter.realm)\n ) {\n return;\n }\n\n if (\n !!accountFilter.nativeAccountId &&\n !this.matchNativeAccountId(\n entity,\n accountFilter.nativeAccountId\n )\n ) {\n return;\n }\n\n if (\n !!accountFilter.authorityType &&\n !this.matchAuthorityType(entity, accountFilter.authorityType)\n ) {\n return;\n }\n\n // If at least one tenant profile matches the tenant profile filter, add the account to the list of matching accounts\n const tenantProfileFilter: TenantProfileFilter = {\n localAccountId: accountFilter?.localAccountId,\n name: accountFilter?.name,\n };\n\n const matchingTenantProfiles = entity.tenantProfiles?.filter(\n (tenantProfile: TenantProfile) => {\n return this.tenantProfileMatchesFilter(\n tenantProfile,\n tenantProfileFilter\n );\n }\n );\n\n if (matchingTenantProfiles && matchingTenantProfiles.length === 0) {\n // No tenant profile for this account matches filter, don't add to list of matching accounts\n return;\n }\n\n matchingAccounts.push(entity);\n });\n\n return matchingAccounts;\n }\n\n /**\n * Returns true if the given key matches our account key schema. Also matches homeAccountId and/or tenantId if provided\n * @param key\n * @param homeAccountId\n * @param tenantId\n * @returns\n */\n isAccountKey(\n key: string,\n homeAccountId?: string,\n tenantId?: string\n ): boolean {\n if (key.split(Separators.CACHE_KEY_SEPARATOR).length < 3) {\n // Account cache keys contain 3 items separated by '-' (each item may also contain '-')\n return false;\n }\n\n if (\n homeAccountId &&\n !key.toLowerCase().includes(homeAccountId.toLowerCase())\n ) {\n return false;\n }\n\n if (tenantId && !key.toLowerCase().includes(tenantId.toLowerCase())) {\n return false;\n }\n\n // Do not check environment as aliasing can cause false negatives\n\n return true;\n }\n\n /**\n * Returns true if the given key matches our credential key schema.\n * @param key\n */\n isCredentialKey(key: string): boolean {\n if (key.split(Separators.CACHE_KEY_SEPARATOR).length < 6) {\n // Credential cache keys contain 6 items separated by '-' (each item may also contain '-')\n return false;\n }\n\n const lowerCaseKey = key.toLowerCase();\n // Credential keys must indicate what credential type they represent\n if (\n lowerCaseKey.indexOf(CredentialType.ID_TOKEN.toLowerCase()) ===\n -1 &&\n lowerCaseKey.indexOf(CredentialType.ACCESS_TOKEN.toLowerCase()) ===\n -1 &&\n lowerCaseKey.indexOf(\n CredentialType.ACCESS_TOKEN_WITH_AUTH_SCHEME.toLowerCase()\n ) === -1 &&\n lowerCaseKey.indexOf(CredentialType.REFRESH_TOKEN.toLowerCase()) ===\n -1\n ) {\n return false;\n }\n\n if (\n lowerCaseKey.indexOf(CredentialType.REFRESH_TOKEN.toLowerCase()) >\n -1\n ) {\n // Refresh tokens must contain the client id or family id\n const clientIdValidation = `${CredentialType.REFRESH_TOKEN}${Separators.CACHE_KEY_SEPARATOR}${this.clientId}${Separators.CACHE_KEY_SEPARATOR}`;\n const familyIdValidation = `${CredentialType.REFRESH_TOKEN}${Separators.CACHE_KEY_SEPARATOR}${THE_FAMILY_ID}${Separators.CACHE_KEY_SEPARATOR}`;\n if (\n lowerCaseKey.indexOf(clientIdValidation.toLowerCase()) === -1 &&\n lowerCaseKey.indexOf(familyIdValidation.toLowerCase()) === -1\n ) {\n return false;\n }\n } else if (lowerCaseKey.indexOf(this.clientId.toLowerCase()) === -1) {\n // Tokens must contain the clientId\n return false;\n }\n\n return true;\n }\n\n /**\n * Returns whether or not the given credential entity matches the filter\n * @param entity\n * @param filter\n * @returns\n */\n credentialMatchesFilter(\n entity: ValidCredentialType,\n filter: CredentialFilter\n ): boolean {\n if (!!filter.clientId && !this.matchClientId(entity, filter.clientId)) {\n return false;\n }\n\n if (\n !!filter.userAssertionHash &&\n !this.matchUserAssertionHash(entity, filter.userAssertionHash)\n ) {\n return false;\n }\n\n /*\n * homeAccountId can be undefined, and we want to filter out cached items that have a homeAccountId of \"\"\n * because we don't want a client_credential request to return a cached token that has a homeAccountId\n */\n if (\n typeof filter.homeAccountId === \"string\" &&\n !this.matchHomeAccountId(entity, filter.homeAccountId)\n ) {\n return false;\n }\n\n if (\n !!filter.environment &&\n !this.matchEnvironment(entity, filter.environment)\n ) {\n return false;\n }\n\n if (!!filter.realm && !this.matchRealm(entity, filter.realm)) {\n return false;\n }\n\n if (\n !!filter.credentialType &&\n !this.matchCredentialType(entity, filter.credentialType)\n ) {\n return false;\n }\n\n if (!!filter.familyId && !this.matchFamilyId(entity, filter.familyId)) {\n return false;\n }\n\n /*\n * idTokens do not have \"target\", target specific refreshTokens do exist for some types of authentication\n * Resource specific refresh tokens case will be added when the support is deemed necessary\n */\n if (!!filter.target && !this.matchTarget(entity, filter.target)) {\n return false;\n }\n\n // If request OR cached entity has requested Claims Hash, check if they match\n if (filter.requestedClaimsHash || entity.requestedClaimsHash) {\n // Don't match if either is undefined or they are different\n if (entity.requestedClaimsHash !== filter.requestedClaimsHash) {\n return false;\n }\n }\n\n // Access Token with Auth Scheme specific matching\n if (\n entity.credentialType ===\n CredentialType.ACCESS_TOKEN_WITH_AUTH_SCHEME\n ) {\n if (\n !!filter.tokenType &&\n !this.matchTokenType(entity, filter.tokenType)\n ) {\n return false;\n }\n\n // KeyId (sshKid) in request must match cached SSH certificate keyId because SSH cert is bound to a specific key\n if (filter.tokenType === AuthenticationScheme.SSH) {\n if (filter.keyId && !this.matchKeyId(entity, filter.keyId)) {\n return false;\n }\n }\n }\n\n return true;\n }\n\n /**\n * retrieve appMetadata matching all provided filters; if no filter is set, get all appMetadata\n * @param filter\n */\n getAppMetadataFilteredBy(filter: AppMetadataFilter): AppMetadataCache {\n const allCacheKeys = this.getKeys();\n const matchingAppMetadata: AppMetadataCache = {};\n\n allCacheKeys.forEach((cacheKey) => {\n // don't parse any non-appMetadata type cache entities\n if (!this.isAppMetadata(cacheKey)) {\n return;\n }\n\n // Attempt retrieval\n const entity = this.getAppMetadata(cacheKey);\n\n if (!entity) {\n return;\n }\n\n if (\n !!filter.environment &&\n !this.matchEnvironment(entity, filter.environment)\n ) {\n return;\n }\n\n if (\n !!filter.clientId &&\n !this.matchClientId(entity, filter.clientId)\n ) {\n return;\n }\n\n matchingAppMetadata[cacheKey] = entity;\n });\n\n return matchingAppMetadata;\n }\n\n /**\n * retrieve authorityMetadata that contains a matching alias\n * @param filter\n */\n getAuthorityMetadataByAlias(host: string): AuthorityMetadataEntity | null {\n const allCacheKeys = this.getAuthorityMetadataKeys();\n let matchedEntity = null;\n\n allCacheKeys.forEach((cacheKey) => {\n // don't parse any non-authorityMetadata type cache entities\n if (\n !this.isAuthorityMetadata(cacheKey) ||\n cacheKey.indexOf(this.clientId) === -1\n ) {\n return;\n }\n\n // Attempt retrieval\n const entity = this.getAuthorityMetadata(cacheKey);\n\n if (!entity) {\n return;\n }\n\n if (entity.aliases.indexOf(host) === -1) {\n return;\n }\n\n matchedEntity = entity;\n });\n\n return matchedEntity;\n }\n\n /**\n * Removes all accounts and related tokens from cache.\n */\n removeAllAccounts(correlationId: string): void {\n const allAccountKeys = this.getAccountKeys();\n\n allAccountKeys.forEach((cacheKey) => {\n this.removeAccount(cacheKey, correlationId);\n });\n }\n\n /**\n * Removes the account and related tokens for a given account key\n * @param account\n */\n removeAccount(accountKey: string, correlationId: string): void {\n const account = this.getAccount(accountKey, correlationId);\n if (!account) {\n return;\n }\n this.removeAccountContext(account, correlationId);\n this.removeItem(accountKey, correlationId);\n }\n\n /**\n * Removes credentials associated with the provided account\n * @param account\n */\n removeAccountContext(account: AccountEntity, correlationId: string): void {\n const allTokenKeys = this.getTokenKeys();\n const accountId = account.generateAccountId();\n\n allTokenKeys.idToken.forEach((key) => {\n if (key.indexOf(accountId) === 0) {\n this.removeIdToken(key, correlationId);\n }\n });\n\n allTokenKeys.accessToken.forEach((key) => {\n if (key.indexOf(accountId) === 0) {\n this.removeAccessToken(key, correlationId);\n }\n });\n\n allTokenKeys.refreshToken.forEach((key) => {\n if (key.indexOf(accountId) === 0) {\n this.removeRefreshToken(key, correlationId);\n }\n });\n }\n\n /**\n * Removes accessToken from the cache\n * @param key\n * @param correlationId\n */\n removeAccessToken(key: string, correlationId: string): void {\n const credential = this.getAccessTokenCredential(key, correlationId);\n this.removeItem(key, correlationId);\n this.performanceClient.incrementFields(\n { accessTokensRemoved: 1 },\n correlationId\n );\n\n if (\n !credential ||\n credential.credentialType.toLowerCase() !==\n CredentialType.ACCESS_TOKEN_WITH_AUTH_SCHEME.toLowerCase() ||\n credential.tokenType !== AuthenticationScheme.POP\n ) {\n // If the credential is not a PoP token, we can return\n return;\n }\n\n // Remove Token Binding Key from key store for PoP Tokens Credentials\n const kid = credential.keyId;\n\n if (kid) {\n void this.cryptoImpl.removeTokenBindingKey(kid).catch(() => {\n this.commonLogger.error(\n `Failed to remove token binding key ${kid}`,\n correlationId\n );\n this.performanceClient?.incrementFields(\n { removeTokenBindingKeyFailure: 1 },\n correlationId\n );\n });\n }\n }\n\n /**\n * Removes all app metadata objects from cache.\n */\n removeAppMetadata(correlationId: string): boolean {\n const allCacheKeys = this.getKeys();\n allCacheKeys.forEach((cacheKey) => {\n if (this.isAppMetadata(cacheKey)) {\n this.removeItem(cacheKey, correlationId);\n }\n });\n\n return true;\n }\n\n /**\n * Retrieve AccountEntity from cache\n * @param account\n */\n readAccountFromCache(\n account: AccountInfo,\n correlationId: string\n ): AccountEntity | null {\n const accountKey: string =\n AccountEntity.generateAccountCacheKey(account);\n return this.getAccount(accountKey, correlationId);\n }\n\n /**\n * Retrieve IdTokenEntity from cache\n * @param account {AccountInfo}\n * @param tokenKeys {?TokenKeys}\n * @param targetRealm {?string}\n * @param performanceClient {?IPerformanceClient}\n * @param correlationId {?string}\n */\n getIdToken(\n account: AccountInfo,\n correlationId: string,\n tokenKeys?: TokenKeys,\n targetRealm?: string,\n performanceClient?: IPerformanceClient\n ): IdTokenEntity | null {\n this.commonLogger.trace(\"CacheManager - getIdToken called\");\n const idTokenFilter: CredentialFilter = {\n homeAccountId: account.homeAccountId,\n environment: account.environment,\n credentialType: CredentialType.ID_TOKEN,\n clientId: this.clientId,\n realm: targetRealm,\n };\n\n const idTokenMap: Map = this.getIdTokensByFilter(\n idTokenFilter,\n correlationId,\n tokenKeys\n );\n\n const numIdTokens = idTokenMap.size;\n\n if (numIdTokens < 1) {\n this.commonLogger.info(\"CacheManager:getIdToken - No token found\");\n return null;\n } else if (numIdTokens > 1) {\n let tokensToBeRemoved: Map = idTokenMap;\n // Multiple tenant profiles and no tenant specified, pick home account\n if (!targetRealm) {\n const homeIdTokenMap: Map = new Map<\n string,\n IdTokenEntity\n >();\n idTokenMap.forEach((idToken, key) => {\n if (idToken.realm === account.tenantId) {\n homeIdTokenMap.set(key, idToken);\n }\n });\n const numHomeIdTokens = homeIdTokenMap.size;\n if (numHomeIdTokens < 1) {\n this.commonLogger.info(\n \"CacheManager:getIdToken - Multiple ID tokens found for account but none match account entity tenant id, returning first result\"\n );\n return idTokenMap.values().next().value;\n } else if (numHomeIdTokens === 1) {\n this.commonLogger.info(\n \"CacheManager:getIdToken - Multiple ID tokens found for account, defaulting to home tenant profile\"\n );\n return homeIdTokenMap.values().next().value;\n } else {\n // Multiple ID tokens for home tenant profile, remove all and return null\n tokensToBeRemoved = homeIdTokenMap;\n }\n }\n // Multiple tokens for a single tenant profile, remove all and return null\n this.commonLogger.info(\n \"CacheManager:getIdToken - Multiple matching ID tokens found, clearing them\"\n );\n tokensToBeRemoved.forEach((idToken, key) => {\n this.removeIdToken(key, correlationId);\n });\n if (performanceClient && correlationId) {\n performanceClient.addFields(\n { multiMatchedID: idTokenMap.size },\n correlationId\n );\n }\n return null;\n }\n\n this.commonLogger.info(\"CacheManager:getIdToken - Returning ID token\");\n return idTokenMap.values().next().value;\n }\n\n /**\n * Gets all idTokens matching the given filter\n * @param filter\n * @returns\n */\n getIdTokensByFilter(\n filter: CredentialFilter,\n correlationId: string,\n tokenKeys?: TokenKeys\n ): Map {\n const idTokenKeys =\n (tokenKeys && tokenKeys.idToken) || this.getTokenKeys().idToken;\n\n const idTokens: Map = new Map<\n string,\n IdTokenEntity\n >();\n idTokenKeys.forEach((key) => {\n if (\n !this.idTokenKeyMatchesFilter(key, {\n clientId: this.clientId,\n ...filter,\n })\n ) {\n return;\n }\n const idToken = this.getIdTokenCredential(key, correlationId);\n if (idToken && this.credentialMatchesFilter(idToken, filter)) {\n idTokens.set(key, idToken);\n }\n });\n\n return idTokens;\n }\n\n /**\n * Validate the cache key against filter before retrieving and parsing cache value\n * @param key\n * @param filter\n * @returns\n */\n idTokenKeyMatchesFilter(\n inputKey: string,\n filter: CredentialFilter\n ): boolean {\n const key = inputKey.toLowerCase();\n if (\n filter.clientId &&\n key.indexOf(filter.clientId.toLowerCase()) === -1\n ) {\n return false;\n }\n\n if (\n filter.homeAccountId &&\n key.indexOf(filter.homeAccountId.toLowerCase()) === -1\n ) {\n return false;\n }\n\n return true;\n }\n\n /**\n * Removes idToken from the cache\n * @param key\n */\n removeIdToken(key: string, correlationId: string): void {\n this.removeItem(key, correlationId);\n }\n\n /**\n * Removes refresh token from the cache\n * @param key\n */\n removeRefreshToken(key: string, correlationId: string): void {\n this.removeItem(key, correlationId);\n }\n\n /**\n * Retrieve AccessTokenEntity from cache\n * @param account {AccountInfo}\n * @param request {BaseAuthRequest}\n * @param correlationId {?string}\n * @param tokenKeys {?TokenKeys}\n * @param performanceClient {?IPerformanceClient}\n */\n getAccessToken(\n account: AccountInfo,\n request: BaseAuthRequest,\n tokenKeys?: TokenKeys,\n targetRealm?: string\n ): AccessTokenEntity | null {\n const correlationId = request.correlationId;\n this.commonLogger.trace(\n \"CacheManager - getAccessToken called\",\n correlationId\n );\n const scopes = ScopeSet.createSearchScopes(request.scopes);\n const authScheme =\n request.authenticationScheme || AuthenticationScheme.BEARER;\n /*\n * Distinguish between Bearer and PoP/SSH token cache types\n * Cast to lowercase to handle \"bearer\" from ADFS\n */\n const credentialType =\n authScheme &&\n authScheme.toLowerCase() !==\n AuthenticationScheme.BEARER.toLowerCase()\n ? CredentialType.ACCESS_TOKEN_WITH_AUTH_SCHEME\n : CredentialType.ACCESS_TOKEN;\n\n const accessTokenFilter: CredentialFilter = {\n homeAccountId: account.homeAccountId,\n environment: account.environment,\n credentialType: credentialType,\n clientId: this.clientId,\n realm: targetRealm || account.tenantId,\n target: scopes,\n tokenType: authScheme,\n keyId: request.sshKid,\n requestedClaimsHash: request.requestedClaimsHash,\n };\n\n const accessTokenKeys =\n (tokenKeys && tokenKeys.accessToken) ||\n this.getTokenKeys().accessToken;\n const accessTokens: AccessTokenEntity[] = [];\n\n accessTokenKeys.forEach((key) => {\n // Validate key\n if (\n this.accessTokenKeyMatchesFilter(key, accessTokenFilter, true)\n ) {\n const accessToken = this.getAccessTokenCredential(\n key,\n correlationId\n );\n\n // Validate value\n if (\n accessToken &&\n this.credentialMatchesFilter(accessToken, accessTokenFilter)\n ) {\n accessTokens.push(accessToken);\n }\n }\n });\n\n const numAccessTokens = accessTokens.length;\n if (numAccessTokens < 1) {\n this.commonLogger.info(\n \"CacheManager:getAccessToken - No token found\",\n correlationId\n );\n return null;\n } else if (numAccessTokens > 1) {\n this.commonLogger.info(\n \"CacheManager:getAccessToken - Multiple access tokens found, clearing them\",\n correlationId\n );\n accessTokens.forEach((accessToken) => {\n this.removeAccessToken(\n generateCredentialKey(accessToken),\n correlationId\n );\n });\n this.performanceClient.addFields(\n { multiMatchedAT: accessTokens.length },\n correlationId\n );\n return null;\n }\n\n this.commonLogger.info(\n \"CacheManager:getAccessToken - Returning access token\",\n correlationId\n );\n return accessTokens[0];\n }\n\n /**\n * Validate the cache key against filter before retrieving and parsing cache value\n * @param key\n * @param filter\n * @param keyMustContainAllScopes\n * @returns\n */\n accessTokenKeyMatchesFilter(\n inputKey: string,\n filter: CredentialFilter,\n keyMustContainAllScopes: boolean\n ): boolean {\n const key = inputKey.toLowerCase();\n if (\n filter.clientId &&\n key.indexOf(filter.clientId.toLowerCase()) === -1\n ) {\n return false;\n }\n\n if (\n filter.homeAccountId &&\n key.indexOf(filter.homeAccountId.toLowerCase()) === -1\n ) {\n return false;\n }\n\n if (filter.realm && key.indexOf(filter.realm.toLowerCase()) === -1) {\n return false;\n }\n\n if (\n filter.requestedClaimsHash &&\n key.indexOf(filter.requestedClaimsHash.toLowerCase()) === -1\n ) {\n return false;\n }\n\n if (filter.target) {\n const scopes = filter.target.asArray();\n for (let i = 0; i < scopes.length; i++) {\n if (\n keyMustContainAllScopes &&\n !key.includes(scopes[i].toLowerCase())\n ) {\n // When performing a cache lookup a missing scope would be a cache miss\n return false;\n } else if (\n !keyMustContainAllScopes &&\n key.includes(scopes[i].toLowerCase())\n ) {\n // When performing a cache write, any token with a subset of requested scopes should be replaced\n return true;\n }\n }\n }\n\n return true;\n }\n\n /**\n * Gets all access tokens matching the filter\n * @param filter\n * @returns\n */\n getAccessTokensByFilter(\n filter: CredentialFilter,\n correlationId: string\n ): AccessTokenEntity[] {\n const tokenKeys = this.getTokenKeys();\n\n const accessTokens: AccessTokenEntity[] = [];\n tokenKeys.accessToken.forEach((key) => {\n if (!this.accessTokenKeyMatchesFilter(key, filter, true)) {\n return;\n }\n\n const accessToken = this.getAccessTokenCredential(\n key,\n correlationId\n );\n if (\n accessToken &&\n this.credentialMatchesFilter(accessToken, filter)\n ) {\n accessTokens.push(accessToken);\n }\n });\n\n return accessTokens;\n }\n\n /**\n * Helper to retrieve the appropriate refresh token from cache\n * @param account {AccountInfo}\n * @param familyRT {boolean}\n * @param correlationId {?string}\n * @param tokenKeys {?TokenKeys}\n * @param performanceClient {?IPerformanceClient}\n */\n getRefreshToken(\n account: AccountInfo,\n familyRT: boolean,\n correlationId: string,\n tokenKeys?: TokenKeys,\n performanceClient?: IPerformanceClient\n ): RefreshTokenEntity | null {\n this.commonLogger.trace(\"CacheManager - getRefreshToken called\");\n const id = familyRT ? THE_FAMILY_ID : undefined;\n const refreshTokenFilter: CredentialFilter = {\n homeAccountId: account.homeAccountId,\n environment: account.environment,\n credentialType: CredentialType.REFRESH_TOKEN,\n clientId: this.clientId,\n familyId: id,\n };\n\n const refreshTokenKeys =\n (tokenKeys && tokenKeys.refreshToken) ||\n this.getTokenKeys().refreshToken;\n const refreshTokens: RefreshTokenEntity[] = [];\n\n refreshTokenKeys.forEach((key) => {\n // Validate key\n if (this.refreshTokenKeyMatchesFilter(key, refreshTokenFilter)) {\n const refreshToken = this.getRefreshTokenCredential(\n key,\n correlationId\n );\n // Validate value\n if (\n refreshToken &&\n this.credentialMatchesFilter(\n refreshToken,\n refreshTokenFilter\n )\n ) {\n refreshTokens.push(refreshToken);\n }\n }\n });\n\n const numRefreshTokens = refreshTokens.length;\n if (numRefreshTokens < 1) {\n this.commonLogger.info(\n \"CacheManager:getRefreshToken - No refresh token found.\"\n );\n return null;\n }\n // address the else case after remove functions address environment aliases\n\n if (numRefreshTokens > 1 && performanceClient && correlationId) {\n performanceClient.addFields(\n { multiMatchedRT: numRefreshTokens },\n correlationId\n );\n }\n\n this.commonLogger.info(\n \"CacheManager:getRefreshToken - returning refresh token\"\n );\n return refreshTokens[0] as RefreshTokenEntity;\n }\n\n /**\n * Validate the cache key against filter before retrieving and parsing cache value\n * @param key\n * @param filter\n */\n refreshTokenKeyMatchesFilter(\n inputKey: string,\n filter: CredentialFilter\n ): boolean {\n const key = inputKey.toLowerCase();\n if (\n filter.familyId &&\n key.indexOf(filter.familyId.toLowerCase()) === -1\n ) {\n return false;\n }\n\n // If familyId is used, clientId is not in the key\n if (\n !filter.familyId &&\n filter.clientId &&\n key.indexOf(filter.clientId.toLowerCase()) === -1\n ) {\n return false;\n }\n\n if (\n filter.homeAccountId &&\n key.indexOf(filter.homeAccountId.toLowerCase()) === -1\n ) {\n return false;\n }\n\n return true;\n }\n\n /**\n * Retrieve AppMetadataEntity from cache\n */\n readAppMetadataFromCache(environment: string): AppMetadataEntity | null {\n const appMetadataFilter: AppMetadataFilter = {\n environment,\n clientId: this.clientId,\n };\n\n const appMetadata: AppMetadataCache =\n this.getAppMetadataFilteredBy(appMetadataFilter);\n const appMetadataEntries: AppMetadataEntity[] = Object.keys(\n appMetadata\n ).map((key) => appMetadata[key]);\n\n const numAppMetadata = appMetadataEntries.length;\n if (numAppMetadata < 1) {\n return null;\n } else if (numAppMetadata > 1) {\n throw createClientAuthError(\n ClientAuthErrorCodes.multipleMatchingAppMetadata\n );\n }\n\n return appMetadataEntries[0] as AppMetadataEntity;\n }\n\n /**\n * Return the family_id value associated with FOCI\n * @param environment\n * @param clientId\n */\n isAppMetadataFOCI(environment: string): boolean {\n const appMetadata = this.readAppMetadataFromCache(environment);\n return !!(appMetadata && appMetadata.familyId === THE_FAMILY_ID);\n }\n\n /**\n * helper to match account ids\n * @param value\n * @param homeAccountId\n */\n private matchHomeAccountId(\n entity: AccountEntity | CredentialEntity,\n homeAccountId: string\n ): boolean {\n return !!(\n typeof entity.homeAccountId === \"string\" &&\n homeAccountId === entity.homeAccountId\n );\n }\n\n /**\n * helper to match account ids\n * @param entity\n * @param localAccountId\n * @returns\n */\n private matchLocalAccountIdFromTokenClaims(\n tokenClaims: TokenClaims,\n localAccountId: string\n ): boolean {\n const idTokenLocalAccountId = tokenClaims.oid || tokenClaims.sub;\n return localAccountId === idTokenLocalAccountId;\n }\n\n private matchLocalAccountIdFromTenantProfile(\n tenantProfile: TenantProfile,\n localAccountId: string\n ): boolean {\n return tenantProfile.localAccountId === localAccountId;\n }\n\n /**\n * helper to match names\n * @param entity\n * @param name\n * @returns true if the downcased name properties are present and match in the filter and the entity\n */\n private matchName(claims: TokenClaims, name: string): boolean {\n return !!(name.toLowerCase() === claims.name?.toLowerCase());\n }\n\n /**\n * helper to match usernames\n * @param entity\n * @param username\n * @returns\n */\n private matchUsername(\n cachedUsername?: string,\n filterUsername?: string\n ): boolean {\n return !!(\n cachedUsername &&\n typeof cachedUsername === \"string\" &&\n filterUsername?.toLowerCase() === cachedUsername.toLowerCase()\n );\n }\n\n /**\n * helper to match assertion\n * @param value\n * @param oboAssertion\n */\n private matchUserAssertionHash(\n entity: CredentialEntity,\n userAssertionHash: string\n ): boolean {\n return !!(\n entity.userAssertionHash &&\n userAssertionHash === entity.userAssertionHash\n );\n }\n\n /**\n * helper to match environment\n * @param value\n * @param environment\n */\n private matchEnvironment(\n entity: AccountEntity | CredentialEntity | AppMetadataEntity,\n environment: string\n ): boolean {\n // Check static authority options first for cases where authority metadata has not been resolved and cached yet\n if (this.staticAuthorityOptions) {\n const staticAliases = getAliasesFromStaticSources(\n this.staticAuthorityOptions,\n this.commonLogger\n );\n if (\n staticAliases.includes(environment) &&\n staticAliases.includes(entity.environment)\n ) {\n return true;\n }\n }\n\n // Query metadata cache if no static authority configuration has aliases that match enviroment\n const cloudMetadata = this.getAuthorityMetadataByAlias(environment);\n if (\n cloudMetadata &&\n cloudMetadata.aliases.indexOf(entity.environment) > -1\n ) {\n return true;\n }\n return false;\n }\n\n /**\n * helper to match credential type\n * @param entity\n * @param credentialType\n */\n private matchCredentialType(\n entity: CredentialEntity,\n credentialType: string\n ): boolean {\n return (\n entity.credentialType &&\n credentialType.toLowerCase() === entity.credentialType.toLowerCase()\n );\n }\n\n /**\n * helper to match client ids\n * @param entity\n * @param clientId\n */\n private matchClientId(\n entity: CredentialEntity | AppMetadataEntity,\n clientId: string\n ): boolean {\n return !!(entity.clientId && clientId === entity.clientId);\n }\n\n /**\n * helper to match family ids\n * @param entity\n * @param familyId\n */\n private matchFamilyId(\n entity: CredentialEntity | AppMetadataEntity,\n familyId: string\n ): boolean {\n return !!(entity.familyId && familyId === entity.familyId);\n }\n\n /**\n * helper to match realm\n * @param entity\n * @param realm\n */\n private matchRealm(\n entity: AccountEntity | CredentialEntity,\n realm: string\n ): boolean {\n return !!(entity.realm?.toLowerCase() === realm.toLowerCase());\n }\n\n /**\n * helper to match nativeAccountId\n * @param entity\n * @param nativeAccountId\n * @returns boolean indicating the match result\n */\n private matchNativeAccountId(\n entity: AccountEntity,\n nativeAccountId: string\n ): boolean {\n return !!(\n entity.nativeAccountId && nativeAccountId === entity.nativeAccountId\n );\n }\n\n /**\n * helper to match loginHint which can be either:\n * 1. login_hint ID token claim\n * 2. username in cached account object\n * 3. upn in ID token claims\n * @param entity\n * @param loginHint\n * @returns\n */\n private matchLoginHintFromTokenClaims(\n tokenClaims: TokenClaims,\n loginHint: string\n ): boolean {\n if (tokenClaims.login_hint === loginHint) {\n return true;\n }\n\n if (tokenClaims.preferred_username === loginHint) {\n return true;\n }\n\n if (tokenClaims.upn === loginHint) {\n return true;\n }\n\n return false;\n }\n\n /**\n * Helper to match sid\n * @param entity\n * @param sid\n * @returns true if the sid claim is present and matches the filter\n */\n private matchSid(idTokenClaims: TokenClaims, sid: string): boolean {\n return idTokenClaims.sid === sid;\n }\n\n private matchAuthorityType(\n entity: AccountEntity,\n authorityType: string\n ): boolean {\n return !!(\n entity.authorityType &&\n authorityType.toLowerCase() === entity.authorityType.toLowerCase()\n );\n }\n\n /**\n * Returns true if the target scopes are a subset of the current entity's scopes, false otherwise.\n * @param entity\n * @param target\n */\n private matchTarget(entity: CredentialEntity, target: ScopeSet): boolean {\n const isNotAccessTokenCredential =\n entity.credentialType !== CredentialType.ACCESS_TOKEN &&\n entity.credentialType !==\n CredentialType.ACCESS_TOKEN_WITH_AUTH_SCHEME;\n\n if (isNotAccessTokenCredential || !entity.target) {\n return false;\n }\n\n const entityScopeSet: ScopeSet = ScopeSet.fromString(entity.target);\n\n return entityScopeSet.containsScopeSet(target);\n }\n\n /**\n * Returns true if the credential's tokenType or Authentication Scheme matches the one in the request, false otherwise\n * @param entity\n * @param tokenType\n */\n private matchTokenType(\n entity: CredentialEntity,\n tokenType: AuthenticationScheme\n ): boolean {\n return !!(entity.tokenType && entity.tokenType === tokenType);\n }\n\n /**\n * Returns true if the credential's keyId matches the one in the request, false otherwise\n * @param entity\n * @param keyId\n */\n private matchKeyId(entity: CredentialEntity, keyId: string): boolean {\n return !!(entity.keyId && entity.keyId === keyId);\n }\n\n /**\n * returns if a given cache entity is of the type appmetadata\n * @param key\n */\n private isAppMetadata(key: string): boolean {\n return key.indexOf(APP_METADATA) !== -1;\n }\n\n /**\n * returns if a given cache entity is of the type authoritymetadata\n * @param key\n */\n protected isAuthorityMetadata(key: string): boolean {\n return key.indexOf(AUTHORITY_METADATA_CONSTANTS.CACHE_KEY) !== -1;\n }\n\n /**\n * returns cache key used for cloud instance metadata\n */\n generateAuthorityMetadataCacheKey(authority: string): string {\n return `${AUTHORITY_METADATA_CONSTANTS.CACHE_KEY}-${this.clientId}-${authority}`;\n }\n\n /**\n * Helper to convert serialized data to object\n * @param obj\n * @param json\n */\n static toObject(obj: T, json: object): T {\n for (const propertyName in json) {\n obj[propertyName] = json[propertyName];\n }\n return obj;\n }\n}\n\n/** @internal */\nexport class DefaultStorageClass extends CacheManager {\n async setAccount(): Promise {\n throw createClientAuthError(ClientAuthErrorCodes.methodNotImplemented);\n }\n getAccount(): AccountEntity {\n throw createClientAuthError(ClientAuthErrorCodes.methodNotImplemented);\n }\n async setIdTokenCredential(): Promise {\n throw createClientAuthError(ClientAuthErrorCodes.methodNotImplemented);\n }\n getIdTokenCredential(): IdTokenEntity {\n throw createClientAuthError(ClientAuthErrorCodes.methodNotImplemented);\n }\n async setAccessTokenCredential(): Promise {\n throw createClientAuthError(ClientAuthErrorCodes.methodNotImplemented);\n }\n getAccessTokenCredential(): AccessTokenEntity {\n throw createClientAuthError(ClientAuthErrorCodes.methodNotImplemented);\n }\n async setRefreshTokenCredential(): Promise {\n throw createClientAuthError(ClientAuthErrorCodes.methodNotImplemented);\n }\n getRefreshTokenCredential(): RefreshTokenEntity {\n throw createClientAuthError(ClientAuthErrorCodes.methodNotImplemented);\n }\n setAppMetadata(): void {\n throw createClientAuthError(ClientAuthErrorCodes.methodNotImplemented);\n }\n getAppMetadata(): AppMetadataEntity {\n throw createClientAuthError(ClientAuthErrorCodes.methodNotImplemented);\n }\n setServerTelemetry(): void {\n throw createClientAuthError(ClientAuthErrorCodes.methodNotImplemented);\n }\n getServerTelemetry(): ServerTelemetryEntity {\n throw createClientAuthError(ClientAuthErrorCodes.methodNotImplemented);\n }\n setAuthorityMetadata(): void {\n throw createClientAuthError(ClientAuthErrorCodes.methodNotImplemented);\n }\n getAuthorityMetadata(): AuthorityMetadataEntity | null {\n throw createClientAuthError(ClientAuthErrorCodes.methodNotImplemented);\n }\n getAuthorityMetadataKeys(): Array {\n throw createClientAuthError(ClientAuthErrorCodes.methodNotImplemented);\n }\n setThrottlingCache(): void {\n throw createClientAuthError(ClientAuthErrorCodes.methodNotImplemented);\n }\n getThrottlingCache(): ThrottlingEntity {\n throw createClientAuthError(ClientAuthErrorCodes.methodNotImplemented);\n }\n removeItem(): boolean {\n throw createClientAuthError(ClientAuthErrorCodes.methodNotImplemented);\n }\n getKeys(): string[] {\n throw createClientAuthError(ClientAuthErrorCodes.methodNotImplemented);\n }\n getAccountKeys(): string[] {\n throw createClientAuthError(ClientAuthErrorCodes.methodNotImplemented);\n }\n getTokenKeys(): TokenKeys {\n throw createClientAuthError(ClientAuthErrorCodes.methodNotImplemented);\n }\n}\n", "/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\n/**\n * Enumeration of operations that are instrumented by have their performance measured by the PerformanceClient.\n *\n * @export\n * @enum {number}\n */\nexport const PerformanceEvents = {\n /**\n * acquireTokenByCode API (msal-browser and msal-node).\n * Used to acquire tokens by trading an authorization code against the token endpoint.\n */\n AcquireTokenByCode: \"acquireTokenByCode\",\n\n /**\n * acquireTokenByRefreshToken API (msal-browser and msal-node).\n * Used to renew an access token using a refresh token against the token endpoint.\n */\n AcquireTokenByRefreshToken: \"acquireTokenByRefreshToken\",\n\n /**\n * acquireTokenSilent API (msal-browser and msal-node).\n * Used to silently acquire a new access token (from the cache or the network).\n */\n AcquireTokenSilent: \"acquireTokenSilent\",\n\n /**\n * acquireTokenSilentAsync (msal-browser).\n * Internal API for acquireTokenSilent.\n */\n AcquireTokenSilentAsync: \"acquireTokenSilentAsync\",\n\n /**\n * acquireTokenPopup (msal-browser).\n * Used to acquire a new access token interactively through pop ups\n */\n AcquireTokenPopup: \"acquireTokenPopup\",\n\n /**\n * acquireTokenPreRedirect (msal-browser).\n * First part of the redirect flow.\n * Used to acquire a new access token interactively through redirects.\n */\n AcquireTokenPreRedirect: \"acquireTokenPreRedirect\",\n\n /**\n * acquireTokenRedirect (msal-browser).\n * Second part of the redirect flow.\n * Used to acquire a new access token interactively through redirects.\n */\n AcquireTokenRedirect: \"acquireTokenRedirect\",\n\n /**\n * getPublicKeyThumbprint API in CryptoOpts class (msal-browser).\n * Used to generate a public/private keypair and generate a public key thumbprint for pop requests.\n */\n CryptoOptsGetPublicKeyThumbprint: \"cryptoOptsGetPublicKeyThumbprint\",\n\n /**\n * signJwt API in CryptoOpts class (msal-browser).\n * Used to signed a pop token.\n */\n CryptoOptsSignJwt: \"cryptoOptsSignJwt\",\n\n /**\n * acquireToken API in the SilentCacheClient class (msal-browser).\n * Used to read access tokens from the cache.\n */\n SilentCacheClientAcquireToken: \"silentCacheClientAcquireToken\",\n\n /**\n * acquireToken API in the SilentIframeClient class (msal-browser).\n * Used to acquire a new set of tokens from the authorize endpoint in a hidden iframe.\n */\n SilentIframeClientAcquireToken: \"silentIframeClientAcquireToken\",\n AwaitConcurrentIframe: \"awaitConcurrentIframe\", // Time spent waiting for a concurrent iframe to complete\n\n /**\n * acquireToken API in SilentRereshClient (msal-browser).\n * Used to acquire a new set of tokens from the token endpoint using a refresh token.\n */\n SilentRefreshClientAcquireToken: \"silentRefreshClientAcquireToken\",\n\n /**\n * ssoSilent API (msal-browser).\n * Used to silently acquire an authorization code and set of tokens using a hidden iframe.\n */\n SsoSilent: \"ssoSilent\",\n\n /**\n * getDiscoveredAuthority API in StandardInteractionClient class (msal-browser).\n * Used to load authority metadata for a request.\n */\n StandardInteractionClientGetDiscoveredAuthority:\n \"standardInteractionClientGetDiscoveredAuthority\",\n\n /**\n * acquireToken APIs in msal-browser.\n * Used to make an /authorize endpoint call with native brokering enabled.\n */\n FetchAccountIdWithNativeBroker: \"fetchAccountIdWithNativeBroker\",\n\n /**\n * acquireToken API in NativeInteractionClient class (msal-browser).\n * Used to acquire a token from Native component when native brokering is enabled.\n */\n NativeInteractionClientAcquireToken: \"nativeInteractionClientAcquireToken\",\n /**\n * Time spent creating default headers for requests to token endpoint\n */\n BaseClientCreateTokenRequestHeaders: \"baseClientCreateTokenRequestHeaders\",\n /**\n * Time spent sending/waiting for the response of a request to the token endpoint\n */\n NetworkClientSendPostRequestAsync: \"networkClientSendPostRequestAsync\",\n RefreshTokenClientExecutePostToTokenEndpoint:\n \"refreshTokenClientExecutePostToTokenEndpoint\",\n AuthorizationCodeClientExecutePostToTokenEndpoint:\n \"authorizationCodeClientExecutePostToTokenEndpoint\",\n /**\n * Used to measure the time taken for completing embedded-broker handshake (PW-Broker).\n */\n BrokerHandhshake: \"brokerHandshake\",\n /**\n * acquireTokenByRefreshToken API in BrokerClientApplication (PW-Broker) .\n */\n AcquireTokenByRefreshTokenInBroker: \"acquireTokenByRefreshTokenInBroker\",\n /**\n * Time taken for token acquisition by broker\n */\n AcquireTokenByBroker: \"acquireTokenByBroker\",\n\n /**\n * Time spent on the network for refresh token acquisition\n */\n RefreshTokenClientExecuteTokenRequest:\n \"refreshTokenClientExecuteTokenRequest\",\n\n /**\n * Time taken for acquiring refresh token , records RT size\n */\n RefreshTokenClientAcquireToken: \"refreshTokenClientAcquireToken\",\n\n /**\n * Time taken for acquiring cached refresh token\n */\n RefreshTokenClientAcquireTokenWithCachedRefreshToken:\n \"refreshTokenClientAcquireTokenWithCachedRefreshToken\",\n\n /**\n * acquireTokenByRefreshToken API in RefreshTokenClient (msal-common).\n */\n RefreshTokenClientAcquireTokenByRefreshToken:\n \"refreshTokenClientAcquireTokenByRefreshToken\",\n\n /**\n * Helper function to create token request body in RefreshTokenClient (msal-common).\n */\n RefreshTokenClientCreateTokenRequestBody:\n \"refreshTokenClientCreateTokenRequestBody\",\n\n /**\n * acquireTokenFromCache (msal-browser).\n * Internal API for acquiring token from cache\n */\n AcquireTokenFromCache: \"acquireTokenFromCache\",\n SilentFlowClientAcquireCachedToken: \"silentFlowClientAcquireCachedToken\",\n SilentFlowClientGenerateResultFromCacheRecord:\n \"silentFlowClientGenerateResultFromCacheRecord\",\n\n /**\n * acquireTokenBySilentIframe (msal-browser).\n * Internal API for acquiring token by silent Iframe\n */\n AcquireTokenBySilentIframe: \"acquireTokenBySilentIframe\",\n\n /**\n * Internal API for initializing base request in BaseInteractionClient (msal-browser)\n */\n InitializeBaseRequest: \"initializeBaseRequest\",\n\n /**\n * Internal API for initializing silent request in SilentCacheClient (msal-browser)\n */\n InitializeSilentRequest: \"initializeSilentRequest\",\n\n InitializeClientApplication: \"initializeClientApplication\",\n\n InitializeCache: \"initializeCache\",\n\n /**\n * Helper function in SilentIframeClient class (msal-browser).\n */\n SilentIframeClientTokenHelper: \"silentIframeClientTokenHelper\",\n\n /**\n * SilentHandler\n */\n SilentHandlerInitiateAuthRequest: \"silentHandlerInitiateAuthRequest\",\n SilentHandlerMonitorIframeForHash: \"silentHandlerMonitorIframeForHash\",\n SilentHandlerLoadFrame: \"silentHandlerLoadFrame\",\n SilentHandlerLoadFrameSync: \"silentHandlerLoadFrameSync\",\n\n /**\n * Helper functions in StandardInteractionClient class (msal-browser)\n */\n StandardInteractionClientCreateAuthCodeClient:\n \"standardInteractionClientCreateAuthCodeClient\",\n StandardInteractionClientGetClientConfiguration:\n \"standardInteractionClientGetClientConfiguration\",\n StandardInteractionClientInitializeAuthorizationRequest:\n \"standardInteractionClientInitializeAuthorizationRequest\",\n\n /**\n * getAuthCodeUrl API (msal-browser and msal-node).\n */\n GetAuthCodeUrl: \"getAuthCodeUrl\",\n GetStandardParams: \"getStandardParams\",\n\n /**\n * Functions from InteractionHandler (msal-browser)\n */\n HandleCodeResponseFromServer: \"handleCodeResponseFromServer\",\n HandleCodeResponse: \"handleCodeResponse\",\n HandleResponseEar: \"handleResponseEar\",\n HandleResponsePlatformBroker: \"handleResponsePlatformBroker\",\n HandleResponseCode: \"handleResponseCode\",\n UpdateTokenEndpointAuthority: \"updateTokenEndpointAuthority\",\n\n /**\n * APIs in Authorization Code Client (msal-common)\n */\n AuthClientAcquireToken: \"authClientAcquireToken\",\n AuthClientExecuteTokenRequest: \"authClientExecuteTokenRequest\",\n AuthClientCreateTokenRequestBody: \"authClientCreateTokenRequestBody\",\n\n /**\n * Generate functions in PopTokenGenerator (msal-common)\n */\n PopTokenGenerateCnf: \"popTokenGenerateCnf\",\n PopTokenGenerateKid: \"popTokenGenerateKid\",\n\n /**\n * handleServerTokenResponse API in ResponseHandler (msal-common)\n */\n HandleServerTokenResponse: \"handleServerTokenResponse\",\n DeserializeResponse: \"deserializeResponse\",\n\n /**\n * Authority functions\n */\n AuthorityFactoryCreateDiscoveredInstance:\n \"authorityFactoryCreateDiscoveredInstance\",\n AuthorityResolveEndpointsAsync: \"authorityResolveEndpointsAsync\",\n AuthorityResolveEndpointsFromLocalSources:\n \"authorityResolveEndpointsFromLocalSources\",\n AuthorityGetCloudDiscoveryMetadataFromNetwork:\n \"authorityGetCloudDiscoveryMetadataFromNetwork\",\n AuthorityUpdateCloudDiscoveryMetadata:\n \"authorityUpdateCloudDiscoveryMetadata\",\n AuthorityGetEndpointMetadataFromNetwork:\n \"authorityGetEndpointMetadataFromNetwork\",\n AuthorityUpdateEndpointMetadata: \"authorityUpdateEndpointMetadata\",\n AuthorityUpdateMetadataWithRegionalInformation:\n \"authorityUpdateMetadataWithRegionalInformation\",\n\n /**\n * Region Discovery functions\n */\n RegionDiscoveryDetectRegion: \"regionDiscoveryDetectRegion\",\n RegionDiscoveryGetRegionFromIMDS: \"regionDiscoveryGetRegionFromIMDS\",\n RegionDiscoveryGetCurrentVersion: \"regionDiscoveryGetCurrentVersion\",\n\n AcquireTokenByCodeAsync: \"acquireTokenByCodeAsync\",\n\n GetEndpointMetadataFromNetwork: \"getEndpointMetadataFromNetwork\",\n GetCloudDiscoveryMetadataFromNetworkMeasurement:\n \"getCloudDiscoveryMetadataFromNetworkMeasurement\",\n\n HandleRedirectPromiseMeasurement: \"handleRedirectPromise\",\n HandleNativeRedirectPromiseMeasurement: \"handleNativeRedirectPromise\",\n\n UpdateCloudDiscoveryMetadataMeasurement:\n \"updateCloudDiscoveryMetadataMeasurement\",\n\n UsernamePasswordClientAcquireToken: \"usernamePasswordClientAcquireToken\",\n\n NativeMessageHandlerHandshake: \"nativeMessageHandlerHandshake\",\n\n NativeGenerateAuthResult: \"nativeGenerateAuthResult\",\n\n RemoveHiddenIframe: \"removeHiddenIframe\",\n\n /**\n * Cache operations\n */\n ClearTokensAndKeysWithClaims: \"clearTokensAndKeysWithClaims\",\n CacheManagerGetRefreshToken: \"cacheManagerGetRefreshToken\",\n ImportExistingCache: \"importExistingCache\",\n SetUserData: \"setUserData\",\n LocalStorageUpdated: \"localStorageUpdated\",\n\n /**\n * Crypto Operations\n */\n GeneratePkceCodes: \"generatePkceCodes\",\n GenerateCodeVerifier: \"generateCodeVerifier\",\n GenerateCodeChallengeFromVerifier: \"generateCodeChallengeFromVerifier\",\n Sha256Digest: \"sha256Digest\",\n GetRandomValues: \"getRandomValues\",\n GenerateHKDF: \"generateHKDF\",\n GenerateBaseKey: \"generateBaseKey\",\n Base64Decode: \"base64Decode\",\n UrlEncodeArr: \"urlEncodeArr\",\n Encrypt: \"encrypt\",\n Decrypt: \"decrypt\",\n GenerateEarKey: \"generateEarKey\",\n DecryptEarResponse: \"decryptEarResponse\",\n} as const;\nexport type PerformanceEvents =\n (typeof PerformanceEvents)[keyof typeof PerformanceEvents];\n\nexport const PerformanceEventAbbreviations: ReadonlyMap =\n new Map([\n [PerformanceEvents.AcquireTokenByCode, \"ATByCode\"],\n [PerformanceEvents.AcquireTokenByRefreshToken, \"ATByRT\"],\n [PerformanceEvents.AcquireTokenSilent, \"ATS\"],\n [PerformanceEvents.AcquireTokenSilentAsync, \"ATSAsync\"],\n [PerformanceEvents.AcquireTokenPopup, \"ATPopup\"],\n [PerformanceEvents.AcquireTokenRedirect, \"ATRedirect\"],\n [\n PerformanceEvents.CryptoOptsGetPublicKeyThumbprint,\n \"CryptoGetPKThumb\",\n ],\n [PerformanceEvents.CryptoOptsSignJwt, \"CryptoSignJwt\"],\n [PerformanceEvents.SilentCacheClientAcquireToken, \"SltCacheClientAT\"],\n [PerformanceEvents.SilentIframeClientAcquireToken, \"SltIframeClientAT\"],\n [PerformanceEvents.SilentRefreshClientAcquireToken, \"SltRClientAT\"],\n [PerformanceEvents.SsoSilent, \"SsoSlt\"],\n [\n PerformanceEvents.StandardInteractionClientGetDiscoveredAuthority,\n \"StdIntClientGetDiscAuth\",\n ],\n [\n PerformanceEvents.FetchAccountIdWithNativeBroker,\n \"FetchAccIdWithNtvBroker\",\n ],\n [\n PerformanceEvents.NativeInteractionClientAcquireToken,\n \"NtvIntClientAT\",\n ],\n [\n PerformanceEvents.BaseClientCreateTokenRequestHeaders,\n \"BaseClientCreateTReqHead\",\n ],\n [\n PerformanceEvents.NetworkClientSendPostRequestAsync,\n \"NetClientSendPost\",\n ],\n [\n PerformanceEvents.RefreshTokenClientExecutePostToTokenEndpoint,\n \"RTClientExecPost\",\n ],\n [\n PerformanceEvents.AuthorizationCodeClientExecutePostToTokenEndpoint,\n \"AuthCodeClientExecPost\",\n ],\n [PerformanceEvents.BrokerHandhshake, \"BrokerHandshake\"],\n [\n PerformanceEvents.AcquireTokenByRefreshTokenInBroker,\n \"ATByRTInBroker\",\n ],\n [PerformanceEvents.AcquireTokenByBroker, \"ATByBroker\"],\n [\n PerformanceEvents.RefreshTokenClientExecuteTokenRequest,\n \"RTClientExecTReq\",\n ],\n [PerformanceEvents.RefreshTokenClientAcquireToken, \"RTClientAT\"],\n [\n PerformanceEvents.RefreshTokenClientAcquireTokenWithCachedRefreshToken,\n \"RTClientATWithCachedRT\",\n ],\n [\n PerformanceEvents.RefreshTokenClientAcquireTokenByRefreshToken,\n \"RTClientATByRT\",\n ],\n [\n PerformanceEvents.RefreshTokenClientCreateTokenRequestBody,\n \"RTClientCreateTReqBody\",\n ],\n [PerformanceEvents.AcquireTokenFromCache, \"ATFromCache\"],\n [\n PerformanceEvents.SilentFlowClientAcquireCachedToken,\n \"SltFlowClientATCached\",\n ],\n [\n PerformanceEvents.SilentFlowClientGenerateResultFromCacheRecord,\n \"SltFlowClientGenResFromCache\",\n ],\n [PerformanceEvents.AcquireTokenBySilentIframe, \"ATBySltIframe\"],\n [PerformanceEvents.InitializeBaseRequest, \"InitBaseReq\"],\n [PerformanceEvents.InitializeSilentRequest, \"InitSltReq\"],\n [\n PerformanceEvents.InitializeClientApplication,\n \"InitClientApplication\",\n ],\n [PerformanceEvents.InitializeCache, \"InitCache\"],\n [PerformanceEvents.ImportExistingCache, \"importCache\"],\n [PerformanceEvents.SetUserData, \"setUserData\"],\n [PerformanceEvents.LocalStorageUpdated, \"localStorageUpdated\"],\n [PerformanceEvents.SilentIframeClientTokenHelper, \"SIClientTHelper\"],\n [\n PerformanceEvents.SilentHandlerInitiateAuthRequest,\n \"SHandlerInitAuthReq\",\n ],\n [\n PerformanceEvents.SilentHandlerMonitorIframeForHash,\n \"SltHandlerMonitorIframeForHash\",\n ],\n [PerformanceEvents.SilentHandlerLoadFrame, \"SHandlerLoadFrame\"],\n [PerformanceEvents.SilentHandlerLoadFrameSync, \"SHandlerLoadFrameSync\"],\n\n [\n PerformanceEvents.StandardInteractionClientCreateAuthCodeClient,\n \"StdIntClientCreateAuthCodeClient\",\n ],\n [\n PerformanceEvents.StandardInteractionClientGetClientConfiguration,\n \"StdIntClientGetClientConf\",\n ],\n [\n PerformanceEvents.StandardInteractionClientInitializeAuthorizationRequest,\n \"StdIntClientInitAuthReq\",\n ],\n\n [PerformanceEvents.GetAuthCodeUrl, \"GetAuthCodeUrl\"],\n\n [\n PerformanceEvents.HandleCodeResponseFromServer,\n \"HandleCodeResFromServer\",\n ],\n [PerformanceEvents.HandleCodeResponse, \"HandleCodeResp\"],\n [PerformanceEvents.HandleResponseEar, \"HandleRespEar\"],\n [PerformanceEvents.HandleResponseCode, \"HandleRespCode\"],\n [\n PerformanceEvents.HandleResponsePlatformBroker,\n \"HandleRespPlatBroker\",\n ],\n [PerformanceEvents.UpdateTokenEndpointAuthority, \"UpdTEndpointAuth\"],\n\n [PerformanceEvents.AuthClientAcquireToken, \"AuthClientAT\"],\n [PerformanceEvents.AuthClientExecuteTokenRequest, \"AuthClientExecTReq\"],\n [\n PerformanceEvents.AuthClientCreateTokenRequestBody,\n \"AuthClientCreateTReqBody\",\n ],\n [PerformanceEvents.PopTokenGenerateCnf, \"PopTGenCnf\"],\n [PerformanceEvents.PopTokenGenerateKid, \"PopTGenKid\"],\n [PerformanceEvents.HandleServerTokenResponse, \"HandleServerTRes\"],\n [PerformanceEvents.DeserializeResponse, \"DeserializeRes\"],\n [\n PerformanceEvents.AuthorityFactoryCreateDiscoveredInstance,\n \"AuthFactCreateDiscInst\",\n ],\n [\n PerformanceEvents.AuthorityResolveEndpointsAsync,\n \"AuthResolveEndpointsAsync\",\n ],\n [\n PerformanceEvents.AuthorityResolveEndpointsFromLocalSources,\n \"AuthResolveEndpointsFromLocal\",\n ],\n [\n PerformanceEvents.AuthorityGetCloudDiscoveryMetadataFromNetwork,\n \"AuthGetCDMetaFromNet\",\n ],\n [\n PerformanceEvents.AuthorityUpdateCloudDiscoveryMetadata,\n \"AuthUpdCDMeta\",\n ],\n [\n PerformanceEvents.AuthorityGetEndpointMetadataFromNetwork,\n \"AuthUpdCDMetaFromNet\",\n ],\n [\n PerformanceEvents.AuthorityUpdateEndpointMetadata,\n \"AuthUpdEndpointMeta\",\n ],\n [\n PerformanceEvents.AuthorityUpdateMetadataWithRegionalInformation,\n \"AuthUpdMetaWithRegInfo\",\n ],\n [PerformanceEvents.RegionDiscoveryDetectRegion, \"RegDiscDetectReg\"],\n [\n PerformanceEvents.RegionDiscoveryGetRegionFromIMDS,\n \"RegDiscGetRegFromIMDS\",\n ],\n [\n PerformanceEvents.RegionDiscoveryGetCurrentVersion,\n \"RegDiscGetCurrentVer\",\n ],\n [PerformanceEvents.AcquireTokenByCodeAsync, \"ATByCodeAsync\"],\n [\n PerformanceEvents.GetEndpointMetadataFromNetwork,\n \"GetEndpointMetaFromNet\",\n ],\n [\n PerformanceEvents.GetCloudDiscoveryMetadataFromNetworkMeasurement,\n \"GetCDMetaFromNet\",\n ],\n [\n PerformanceEvents.HandleRedirectPromiseMeasurement,\n \"HandleRedirectPromise\",\n ],\n [\n PerformanceEvents.HandleNativeRedirectPromiseMeasurement,\n \"HandleNtvRedirectPromise\",\n ],\n [\n PerformanceEvents.UpdateCloudDiscoveryMetadataMeasurement,\n \"UpdateCDMeta\",\n ],\n [\n PerformanceEvents.UsernamePasswordClientAcquireToken,\n \"UserPassClientAT\",\n ],\n [\n PerformanceEvents.NativeMessageHandlerHandshake,\n \"NtvMsgHandlerHandshake\",\n ],\n [PerformanceEvents.NativeGenerateAuthResult, \"NtvGenAuthRes\"],\n [PerformanceEvents.RemoveHiddenIframe, \"RemoveHiddenIframe\"],\n [\n PerformanceEvents.ClearTokensAndKeysWithClaims,\n \"ClearTAndKeysWithClaims\",\n ],\n [PerformanceEvents.CacheManagerGetRefreshToken, \"CacheManagerGetRT\"],\n [PerformanceEvents.GeneratePkceCodes, \"GenPkceCodes\"],\n [PerformanceEvents.GenerateCodeVerifier, \"GenCodeVerifier\"],\n [\n PerformanceEvents.GenerateCodeChallengeFromVerifier,\n \"GenCodeChallengeFromVerifier\",\n ],\n [PerformanceEvents.Sha256Digest, \"Sha256Digest\"],\n [PerformanceEvents.GetRandomValues, \"GetRandomValues\"],\n [PerformanceEvents.GenerateHKDF, \"genHKDF\"],\n [PerformanceEvents.GenerateBaseKey, \"genBaseKey\"],\n [PerformanceEvents.Base64Decode, \"b64Decode\"],\n [PerformanceEvents.UrlEncodeArr, \"urlEncArr\"],\n [PerformanceEvents.Encrypt, \"encrypt\"],\n [PerformanceEvents.Decrypt, \"decrypt\"],\n [PerformanceEvents.GenerateEarKey, \"genEarKey\"],\n [PerformanceEvents.DecryptEarResponse, \"decryptEarResp\"],\n ]);\n\n/**\n * State of the performance event.\n *\n * @export\n * @enum {number}\n */\nexport const PerformanceEventStatus = {\n NotStarted: 0,\n InProgress: 1,\n Completed: 2,\n} as const;\nexport type PerformanceEventStatus =\n (typeof PerformanceEventStatus)[keyof typeof PerformanceEventStatus];\n\nexport type SubMeasurement = {\n name: string;\n startTimeMs: number;\n};\n\n/**\n * Performance measurement taken by the library, including metadata about the request and application.\n *\n * @export\n * @typedef {PerformanceEvent}\n */\nexport type PerformanceEvent = {\n /**\n * Unique id for the event\n *\n * @type {string}\n */\n eventId: string;\n\n /**\n * State of the perforance measure.\n *\n * @type {PerformanceEventStatus}\n */\n status: PerformanceEventStatus;\n\n /**\n * Login authority used for the request\n *\n * @type {string}\n */\n authority: string;\n\n /**\n * Client id for the application\n *\n * @type {string}\n */\n clientId: string;\n\n /**\n * Correlation ID used for the request\n *\n * @type {string}\n */\n correlationId: string;\n\n /**\n * End-to-end duration in milliseconds.\n * @date 3/22/2022 - 3:40:05 PM\n *\n * @type {number}\n */\n durationMs?: number;\n\n /**\n * Visibility of the page when the event completed.\n * Read from: https://developer.mozilla.org/docs/Web/API/Page_Visibility_API\n *\n * @type {?(string | null)}\n */\n endPageVisibility?: string | null;\n\n /**\n * Whether the result was retrieved from the cache.\n *\n * @type {(boolean | null)}\n */\n fromCache?: boolean | null;\n\n /**\n * Event name (usually in the form of classNameFunctionName)\n *\n * @type {string}\n */\n name: string;\n\n /**\n * Visibility of the page when the event completed.\n * Read from: https://developer.mozilla.org/docs/Web/API/Page_Visibility_API\n *\n * @type {?(string | null)}\n */\n startPageVisibility?: string | null;\n\n /**\n * Unix millisecond timestamp when the event was initiated.\n *\n * @type {number}\n */\n startTimeMs: number;\n\n /**\n * Whether or the operation completed successfully.\n *\n * @type {(boolean | null)}\n */\n success?: boolean | null;\n\n /**\n * Add specific error code in case of failure\n *\n * @type {string}\n */\n errorCode?: string;\n\n /**\n * Add specific sub error code in case of failure\n *\n * @type {string}\n */\n subErrorCode?: string;\n\n /**\n * Server error number\n */\n serverErrorNo?: string;\n\n /**\n * Name of the library used for the operation.\n *\n * @type {string}\n */\n libraryName: string;\n\n /**\n * Version of the library used for the operation.\n *\n * @type {string}\n */\n libraryVersion: string;\n\n /**\n * Version of the library used last. Used to track upgrades and downgrades\n */\n previousLibraryVersion?: string;\n\n /**\n * Whether the response is from a native component (e.g., WAM)\n *\n * @type {?boolean}\n */\n isNativeBroker?: boolean;\n\n /**\n * Request ID returned from the response\n *\n * @type {?string}\n */\n requestId?: string;\n\n /**\n * Cache lookup policy\n *\n * @type {?number}\n */\n cacheLookupPolicy?: number | undefined;\n\n /**\n * Cache Outcome\n * @type {?number}\n */\n cacheOutcome?: number;\n\n /**\n * Amount of time spent in the JS queue in milliseconds.\n *\n * @type {?number}\n */\n queuedTimeMs?: number;\n\n /**\n * Sub-measurements for internal use. To be deleted before flushing.\n */\n incompleteSubMeasurements?: Map;\n\n visibilityChangeCount?: number;\n incompleteSubsCount?: number;\n\n /**\n * CorrelationId of the in progress iframe request that was awaited\n */\n awaitIframeCorrelationId?: string;\n /**\n * Amount of times queued in the JS event queue.\n *\n * @type {?number}\n */\n queuedCount?: number;\n /**\n * Amount of manually completed queue events.\n *\n * @type {?number}\n */\n queuedManuallyCompletedCount?: number;\n\n /**\n * Size of the id token\n *\n * @type {number}\n */\n idTokenSize?: number;\n\n /**\n *\n * Size of the access token\n *\n * @type {number}\n */\n\n accessTokenSize?: number;\n\n /**\n *\n * Size of the refresh token\n *\n * @type {number}\n */\n\n refreshTokenSize?: number | undefined;\n\n /**\n * Application name as specified by the app.\n *\n * @type {?string}\n */\n appName?: string;\n\n /**\n * Application version as specified by the app.\n *\n * @type {?string}\n */\n appVersion?: string;\n\n /**\n * The following are fields that may be emitted in native broker scenarios\n */\n extensionId?: string;\n extensionVersion?: string;\n matsBrokerVersion?: string;\n matsAccountJoinOnStart?: string;\n matsAccountJoinOnEnd?: string;\n matsDeviceJoin?: string;\n matsPromptBehavior?: string;\n matsApiErrorCode?: number;\n matsUiVisible?: boolean;\n matsSilentCode?: number;\n matsSilentBiSubCode?: number;\n matsSilentMessage?: string;\n matsSilentStatus?: number;\n matsHttpStatus?: number;\n matsHttpEventCount?: number;\n\n /**\n * Http POST metadata\n */\n httpVerToken?: string;\n httpStatus?: number;\n contentTypeHeader?: string;\n contentLengthHeader?: string;\n\n /**\n * Platform broker fields\n */\n allowPlatformBroker?: boolean;\n extensionInstalled?: boolean;\n extensionHandshakeTimeoutMs?: number;\n extensionHandshakeTimedOut?: boolean;\n\n /**\n * Nested App Auth Fields\n */\n nestedAppAuthRequest?: boolean;\n\n /**\n * Multiple matched access/id/refresh tokens in the cache\n */\n multiMatchedAT?: number;\n multiMatchedID?: number;\n multiMatchedRT?: number;\n\n errorName?: string;\n errorStack?: string[];\n\n // Event context as JSON string\n context?: string;\n\n // Number of tokens in the cache to be reported when cache quota is exceeded\n cacheRtCount?: number;\n cacheIdCount?: number;\n cacheAtCount?: number;\n\n // Scenario id to track custom user prompts\n scenarioId?: string;\n\n accountType?: \"AAD\" | \"MSA\" | \"B2C\";\n\n /**\n * Server error that triggers a request retry\n *\n * @type {string}\n */\n retryError?: string;\n\n embeddedClientId?: string;\n embeddedRedirectUri?: string;\n\n isAsyncPopup?: boolean;\n\n rtExpiresOnMs?: number;\n\n sidFromClaims?: boolean;\n sidFromRequest?: boolean;\n loginHintFromRequest?: boolean;\n loginHintFromUpn?: boolean;\n loginHintFromClaim?: boolean;\n domainHintFromRequest?: boolean;\n\n prompt?: string;\n\n usePreGeneratedPkce?: boolean;\n\n // Number of MSAL JS instances in the frame\n msalInstanceCount?: number;\n // Number of MSAL JS instances using the same client id in the frame\n sameClientIdInstanceCount?: number;\n};\n\nexport type PerformanceEventContext = {\n dur?: number;\n err?: string;\n subErr?: string;\n fail?: number;\n};\n\nexport type PerformanceEventStackedContext = PerformanceEventContext & {\n name?: string;\n childErr?: string;\n};\n\nexport const IntFields: ReadonlySet = new Set([\n \"accessTokenSize\",\n \"durationMs\",\n \"idTokenSize\",\n \"matsSilentStatus\",\n \"matsHttpStatus\",\n \"refreshTokenSize\",\n \"queuedTimeMs\",\n \"startTimeMs\",\n \"status\",\n \"multiMatchedAT\",\n \"multiMatchedID\",\n \"multiMatchedRT\",\n \"unencryptedCacheCount\",\n \"encryptedCacheExpiredCount\",\n]);\n", "/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport {\n IPerformanceClient,\n InProgressPerformanceEvent,\n} from \"./IPerformanceClient.js\";\nimport { IPerformanceMeasurement } from \"./IPerformanceMeasurement.js\";\nimport {\n PerformanceEvent,\n PerformanceEventStatus,\n} from \"./PerformanceEvent.js\";\n\nexport class StubPerformanceMeasurement implements IPerformanceMeasurement {\n startMeasurement(): void {\n return;\n }\n endMeasurement(): void {\n return;\n }\n flushMeasurement(): number | null {\n return null;\n }\n}\n\nexport class StubPerformanceClient implements IPerformanceClient {\n generateId(): string {\n return \"callback-id\";\n }\n\n startMeasurement(\n measureName: string,\n correlationId?: string | undefined\n ): InProgressPerformanceEvent {\n return {\n end: () => null,\n discard: () => {},\n add: () => {},\n increment: () => {},\n event: {\n eventId: this.generateId(),\n status: PerformanceEventStatus.InProgress,\n authority: \"\",\n libraryName: \"\",\n libraryVersion: \"\",\n clientId: \"\",\n name: measureName,\n startTimeMs: Date.now(),\n correlationId: correlationId || \"\",\n },\n measurement: new StubPerformanceMeasurement(),\n };\n }\n\n startPerformanceMeasurement(): IPerformanceMeasurement {\n return new StubPerformanceMeasurement();\n }\n calculateQueuedTime(): number {\n return 0;\n }\n\n addQueueMeasurement(): void {\n return;\n }\n\n setPreQueueTime(): void {\n return;\n }\n\n endMeasurement(): PerformanceEvent | null {\n return null;\n }\n\n discardMeasurements(): void {\n return;\n }\n\n removePerformanceCallback(): boolean {\n return true;\n }\n\n addPerformanceCallback(): string {\n return \"\";\n }\n\n emitEvents(): void {\n return;\n }\n\n addFields(): void {\n return;\n }\n\n incrementFields(): void {\n return;\n }\n\n cacheEventByCorrelationId(): void {\n return;\n }\n}\n", "/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { INetworkModule } from \"../network/INetworkModule.js\";\nimport { DEFAULT_CRYPTO_IMPLEMENTATION, ICrypto } from \"../crypto/ICrypto.js\";\nimport { ILoggerCallback, Logger, LogLevel } from \"../logger/Logger.js\";\nimport {\n Constants,\n DEFAULT_TOKEN_RENEWAL_OFFSET_SEC,\n} from \"../utils/Constants.js\";\nimport { version } from \"../packageMetadata.js\";\nimport type { Authority } from \"../authority/Authority.js\";\nimport { AzureCloudInstance } from \"../authority/AuthorityOptions.js\";\nimport { CacheManager, DefaultStorageClass } from \"../cache/CacheManager.js\";\nimport { ServerTelemetryManager } from \"../telemetry/server/ServerTelemetryManager.js\";\nimport { ICachePlugin } from \"../cache/interface/ICachePlugin.js\";\nimport { ISerializableTokenCache } from \"../cache/interface/ISerializableTokenCache.js\";\nimport { ClientCredentials } from \"../account/ClientCredentials.js\";\nimport { ProtocolMode } from \"../authority/ProtocolMode.js\";\nimport {\n ClientAuthErrorCodes,\n createClientAuthError,\n} from \"../error/ClientAuthError.js\";\nimport { StubPerformanceClient } from \"../telemetry/performance/StubPerformanceClient.js\";\n\n/**\n * Use the configuration object to configure MSAL Modules and initialize the base interfaces for MSAL.\n *\n * This object allows you to configure important elements of MSAL functionality:\n * - authOptions - Authentication for application\n * - cryptoInterface - Implementation of crypto functions\n * - libraryInfo - Library metadata\n * - telemetry - Telemetry options and data\n * - loggerOptions - Logging for application\n * - networkInterface - Network implementation\n * - storageInterface - Storage implementation\n * - systemOptions - Additional library options\n * - clientCredentials - Credentials options for confidential clients\n * @internal\n */\nexport type ClientConfiguration = {\n authOptions: AuthOptions;\n systemOptions?: SystemOptions;\n loggerOptions?: LoggerOptions;\n cacheOptions?: CacheOptions;\n storageInterface?: CacheManager;\n networkInterface?: INetworkModule;\n cryptoInterface?: ICrypto;\n clientCredentials?: ClientCredentials;\n libraryInfo?: LibraryInfo;\n telemetry?: TelemetryOptions;\n serverTelemetryManager?: ServerTelemetryManager | null;\n persistencePlugin?: ICachePlugin | null;\n serializableCache?: ISerializableTokenCache | null;\n};\n\nexport type CommonClientConfiguration = {\n authOptions: Required;\n systemOptions: Required;\n loggerOptions: Required;\n cacheOptions: Required;\n storageInterface: CacheManager;\n networkInterface: INetworkModule;\n cryptoInterface: Required;\n libraryInfo: LibraryInfo;\n telemetry: Required;\n serverTelemetryManager: ServerTelemetryManager | null;\n clientCredentials: ClientCredentials;\n persistencePlugin: ICachePlugin | null;\n serializableCache: ISerializableTokenCache | null;\n};\n\n/**\n * Use this to configure the auth options in the ClientConfiguration object\n *\n * - clientId - Client ID of your app registered with our Application registration portal : https://portal.azure.com/#blade/Microsoft_AAD_IAM/ActiveDirectoryMenuBlade/RegisteredAppsPreview in Microsoft Identity Platform\n * - authority - You can configure a specific authority, defaults to \" \" or \"https://login.microsoftonline.com/common\"\n * - knownAuthorities - An array of URIs that are known to be valid. Used in B2C scenarios.\n * - cloudDiscoveryMetadata - A string containing the cloud discovery response. Used in AAD scenarios.\n * - clientCapabilities - Array of capabilities which will be added to the claims.access_token.xms_cc request property on every network request.\n * - protocolMode - Enum that represents the protocol that msal follows. Used for configuring proper endpoints.\n * - skipAuthorityMetadataCache - A flag to choose whether to use or not use the local metadata cache during authority initialization. Defaults to false.\n * - instanceAware - A flag of whether the STS will send back additional parameters to specify where the tokens should be retrieved from.\n * - redirectUri - The redirect URI where authentication responses can be received by your application. It must exactly match one of the redirect URIs registered in the Azure portal.\n * - encodeExtraQueryParams - A flag to choose whether to encode the extra query parameters or not. Defaults to false.\n * @internal\n */\nexport type AuthOptions = {\n clientId: string;\n authority: Authority;\n redirectUri: string;\n clientCapabilities?: Array;\n azureCloudOptions?: AzureCloudOptions;\n skipAuthorityMetadataCache?: boolean;\n instanceAware?: boolean;\n /**\n * @deprecated This flag is deprecated and will be removed in the next major version where all extra query params will be encoded by default.\n */\n encodeExtraQueryParams?: boolean;\n};\n\n/**\n * Use this to configure token renewal info in the Configuration object\n *\n * - tokenRenewalOffsetSeconds - Sets the window of offset needed to renew the token before expiry\n */\nexport type SystemOptions = {\n tokenRenewalOffsetSeconds?: number;\n preventCorsPreflight?: boolean;\n};\n\n/**\n * Use this to configure the logging that MSAL does, by configuring logger options in the Configuration object\n *\n * - loggerCallback - Callback for logger\n * - piiLoggingEnabled - Sets whether pii logging is enabled\n * - logLevel - Sets the level at which logging happens\n * - correlationId - Sets the correlationId printed by the logger\n */\nexport type LoggerOptions = {\n loggerCallback?: ILoggerCallback;\n piiLoggingEnabled?: boolean;\n logLevel?: LogLevel;\n correlationId?: string;\n};\n\n/**\n * Use this to configure credential cache preferences in the ClientConfiguration object\n *\n * - claimsBasedCachingEnabled - Sets whether tokens should be cached based on the claims hash. Default is false.\n */\nexport type CacheOptions = {\n /**\n * @deprecated claimsBasedCachingEnabled is deprecated and will be removed in the next major version.\n */\n claimsBasedCachingEnabled?: boolean;\n};\n\n/**\n * Library-specific options\n */\nexport type LibraryInfo = {\n sku: string;\n version: string;\n cpu: string;\n os: string;\n};\n\n/**\n * AzureCloudInstance specific options\n *\n * - azureCloudInstance - string enum providing short notation for soverign and public cloud authorities\n * - tenant - provision to provide the tenant info\n */\nexport type AzureCloudOptions = {\n azureCloudInstance: AzureCloudInstance;\n tenant?: string;\n};\n\nexport type TelemetryOptions = {\n application: ApplicationTelemetry;\n};\n\n/**\n * Telemetry information sent on request\n * - appName: Unique string name of an application\n * - appVersion: Version of the application using MSAL\n */\nexport type ApplicationTelemetry = {\n appName: string;\n appVersion: string;\n};\n\nexport const DEFAULT_SYSTEM_OPTIONS: Required = {\n tokenRenewalOffsetSeconds: DEFAULT_TOKEN_RENEWAL_OFFSET_SEC,\n preventCorsPreflight: false,\n};\n\nconst DEFAULT_LOGGER_IMPLEMENTATION: Required = {\n loggerCallback: () => {\n // allow users to not set loggerCallback\n },\n piiLoggingEnabled: false,\n logLevel: LogLevel.Info,\n correlationId: Constants.EMPTY_STRING,\n};\n\nconst DEFAULT_CACHE_OPTIONS: Required = {\n claimsBasedCachingEnabled: false,\n};\n\nconst DEFAULT_NETWORK_IMPLEMENTATION: INetworkModule = {\n async sendGetRequestAsync(): Promise {\n throw createClientAuthError(ClientAuthErrorCodes.methodNotImplemented);\n },\n async sendPostRequestAsync(): Promise {\n throw createClientAuthError(ClientAuthErrorCodes.methodNotImplemented);\n },\n};\n\nconst DEFAULT_LIBRARY_INFO: LibraryInfo = {\n sku: Constants.SKU,\n version: version,\n cpu: Constants.EMPTY_STRING,\n os: Constants.EMPTY_STRING,\n};\n\nconst DEFAULT_CLIENT_CREDENTIALS: ClientCredentials = {\n clientSecret: Constants.EMPTY_STRING,\n clientAssertion: undefined,\n};\n\nconst DEFAULT_AZURE_CLOUD_OPTIONS: AzureCloudOptions = {\n azureCloudInstance: AzureCloudInstance.None,\n tenant: `${Constants.DEFAULT_COMMON_TENANT}`,\n};\n\nconst DEFAULT_TELEMETRY_OPTIONS: Required = {\n application: {\n appName: \"\",\n appVersion: \"\",\n },\n};\n\n/**\n * Function that sets the default options when not explicitly configured from app developer\n *\n * @param Configuration\n *\n * @returns Configuration\n */\nexport function buildClientConfiguration({\n authOptions: userAuthOptions,\n systemOptions: userSystemOptions,\n loggerOptions: userLoggerOption,\n cacheOptions: userCacheOptions,\n storageInterface: storageImplementation,\n networkInterface: networkImplementation,\n cryptoInterface: cryptoImplementation,\n clientCredentials: clientCredentials,\n libraryInfo: libraryInfo,\n telemetry: telemetry,\n serverTelemetryManager: serverTelemetryManager,\n persistencePlugin: persistencePlugin,\n serializableCache: serializableCache,\n}: ClientConfiguration): CommonClientConfiguration {\n const loggerOptions = {\n ...DEFAULT_LOGGER_IMPLEMENTATION,\n ...userLoggerOption,\n };\n\n return {\n authOptions: buildAuthOptions(userAuthOptions),\n systemOptions: { ...DEFAULT_SYSTEM_OPTIONS, ...userSystemOptions },\n loggerOptions: loggerOptions,\n cacheOptions: { ...DEFAULT_CACHE_OPTIONS, ...userCacheOptions },\n storageInterface:\n storageImplementation ||\n new DefaultStorageClass(\n userAuthOptions.clientId,\n DEFAULT_CRYPTO_IMPLEMENTATION,\n new Logger(loggerOptions),\n new StubPerformanceClient()\n ),\n networkInterface:\n networkImplementation || DEFAULT_NETWORK_IMPLEMENTATION,\n cryptoInterface: cryptoImplementation || DEFAULT_CRYPTO_IMPLEMENTATION,\n clientCredentials: clientCredentials || DEFAULT_CLIENT_CREDENTIALS,\n libraryInfo: { ...DEFAULT_LIBRARY_INFO, ...libraryInfo },\n telemetry: { ...DEFAULT_TELEMETRY_OPTIONS, ...telemetry },\n serverTelemetryManager: serverTelemetryManager || null,\n persistencePlugin: persistencePlugin || null,\n serializableCache: serializableCache || null,\n };\n}\n\n/**\n * Construct authoptions from the client and platform passed values\n * @param authOptions\n */\nfunction buildAuthOptions(authOptions: AuthOptions): Required {\n return {\n clientCapabilities: [],\n azureCloudOptions: DEFAULT_AZURE_CLOUD_OPTIONS,\n skipAuthorityMetadataCache: false,\n instanceAware: false,\n encodeExtraQueryParams: false,\n ...authOptions,\n };\n}\n\n/**\n * Returns true if config has protocolMode set to ProtocolMode.OIDC, false otherwise\n * @param ClientConfiguration\n */\nexport function isOidcProtocolMode(config: ClientConfiguration): boolean {\n return (\n config.authOptions.authority.options.protocolMode === ProtocolMode.OIDC\n );\n}\n", "/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nexport type CcsCredential = {\n credential: string;\n type: CcsCredentialType;\n};\n\nexport const CcsCredentialType = {\n HOME_ACCOUNT_ID: \"home_account_id\",\n UPN: \"UPN\",\n} as const;\nexport type CcsCredentialType =\n (typeof CcsCredentialType)[keyof typeof CcsCredentialType];\n", "/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nexport const CLIENT_ID = \"client_id\";\nexport const REDIRECT_URI = \"redirect_uri\";\nexport const RESPONSE_TYPE = \"response_type\";\nexport const RESPONSE_MODE = \"response_mode\";\nexport const GRANT_TYPE = \"grant_type\";\nexport const CLAIMS = \"claims\";\nexport const SCOPE = \"scope\";\nexport const ERROR = \"error\";\nexport const ERROR_DESCRIPTION = \"error_description\";\nexport const ACCESS_TOKEN = \"access_token\";\nexport const ID_TOKEN = \"id_token\";\nexport const REFRESH_TOKEN = \"refresh_token\";\nexport const EXPIRES_IN = \"expires_in\";\nexport const REFRESH_TOKEN_EXPIRES_IN = \"refresh_token_expires_in\";\nexport const STATE = \"state\";\nexport const NONCE = \"nonce\";\nexport const PROMPT = \"prompt\";\nexport const SESSION_STATE = \"session_state\";\nexport const CLIENT_INFO = \"client_info\";\nexport const CODE = \"code\";\nexport const CODE_CHALLENGE = \"code_challenge\";\nexport const CODE_CHALLENGE_METHOD = \"code_challenge_method\";\nexport const CODE_VERIFIER = \"code_verifier\";\nexport const CLIENT_REQUEST_ID = \"client-request-id\";\nexport const X_CLIENT_SKU = \"x-client-SKU\";\nexport const X_CLIENT_VER = \"x-client-VER\";\nexport const X_CLIENT_OS = \"x-client-OS\";\nexport const X_CLIENT_CPU = \"x-client-CPU\";\nexport const X_CLIENT_CURR_TELEM = \"x-client-current-telemetry\";\nexport const X_CLIENT_LAST_TELEM = \"x-client-last-telemetry\";\nexport const X_MS_LIB_CAPABILITY = \"x-ms-lib-capability\";\nexport const X_APP_NAME = \"x-app-name\";\nexport const X_APP_VER = \"x-app-ver\";\nexport const POST_LOGOUT_URI = \"post_logout_redirect_uri\";\nexport const ID_TOKEN_HINT = \"id_token_hint\";\nexport const DEVICE_CODE = \"device_code\";\nexport const CLIENT_SECRET = \"client_secret\";\nexport const CLIENT_ASSERTION = \"client_assertion\";\nexport const CLIENT_ASSERTION_TYPE = \"client_assertion_type\";\nexport const TOKEN_TYPE = \"token_type\";\nexport const REQ_CNF = \"req_cnf\";\nexport const OBO_ASSERTION = \"assertion\";\nexport const REQUESTED_TOKEN_USE = \"requested_token_use\";\nexport const ON_BEHALF_OF = \"on_behalf_of\";\nexport const FOCI = \"foci\";\nexport const CCS_HEADER = \"X-AnchorMailbox\";\nexport const RETURN_SPA_CODE = \"return_spa_code\";\nexport const NATIVE_BROKER = \"nativebroker\";\nexport const LOGOUT_HINT = \"logout_hint\";\nexport const SID = \"sid\";\nexport const LOGIN_HINT = \"login_hint\";\nexport const DOMAIN_HINT = \"domain_hint\";\nexport const X_CLIENT_EXTRA_SKU = \"x-client-xtra-sku\";\nexport const BROKER_CLIENT_ID = \"brk_client_id\";\nexport const BROKER_REDIRECT_URI = \"brk_redirect_uri\";\nexport const INSTANCE_AWARE = \"instance_aware\";\nexport const EAR_JWK = \"ear_jwk\";\nexport const EAR_JWE_CRYPTO = \"ear_jwe_crypto\";\n", "/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport {\n ResponseMode,\n CLIENT_INFO,\n AuthenticationScheme,\n ClaimsRequestKeys,\n PasswordGrantConstants,\n OIDC_DEFAULT_SCOPES,\n ThrottlingConstants,\n HeaderNames,\n OAuthResponseType,\n} from \"../utils/Constants.js\";\nimport * as AADServerParamKeys from \"../constants/AADServerParamKeys.js\";\nimport { ScopeSet } from \"./ScopeSet.js\";\nimport {\n createClientConfigurationError,\n ClientConfigurationErrorCodes,\n} from \"../error/ClientConfigurationError.js\";\nimport { StringDict } from \"../utils/MsalTypes.js\";\nimport {\n ApplicationTelemetry,\n LibraryInfo,\n} from \"../config/ClientConfiguration.js\";\nimport { ServerTelemetryManager } from \"../telemetry/server/ServerTelemetryManager.js\";\nimport { ClientInfo } from \"../account/ClientInfo.js\";\nimport { IPerformanceClient } from \"../telemetry/performance/IPerformanceClient.js\";\n\nexport function instrumentBrokerParams(\n parameters: Map,\n correlationId?: string,\n performanceClient?: IPerformanceClient\n): void {\n if (!correlationId) {\n return;\n }\n\n const clientId = parameters.get(AADServerParamKeys.CLIENT_ID);\n if (clientId && parameters.has(AADServerParamKeys.BROKER_CLIENT_ID)) {\n performanceClient?.addFields(\n {\n embeddedClientId: clientId,\n embeddedRedirectUri: parameters.get(\n AADServerParamKeys.REDIRECT_URI\n ),\n },\n correlationId\n );\n }\n}\n\n/**\n * Add the given response_type\n * @param parameters\n * @param responseType\n */\nexport function addResponseType(\n parameters: Map,\n responseType: OAuthResponseType\n): void {\n parameters.set(AADServerParamKeys.RESPONSE_TYPE, responseType);\n}\n\n/**\n * add response_mode. defaults to query.\n * @param responseMode\n */\nexport function addResponseMode(\n parameters: Map,\n responseMode?: ResponseMode\n): void {\n parameters.set(\n AADServerParamKeys.RESPONSE_MODE,\n responseMode ? responseMode : ResponseMode.QUERY\n );\n}\n\n/**\n * Add flag to indicate STS should attempt to use WAM if available\n */\nexport function addNativeBroker(parameters: Map): void {\n parameters.set(AADServerParamKeys.NATIVE_BROKER, \"1\");\n}\n\n/**\n * add scopes. set addOidcScopes to false to prevent default scopes in non-user scenarios\n * @param scopeSet\n * @param addOidcScopes\n */\nexport function addScopes(\n parameters: Map,\n scopes: string[],\n addOidcScopes: boolean = true,\n defaultScopes: Array = OIDC_DEFAULT_SCOPES\n): void {\n // Always add openid to the scopes when adding OIDC scopes\n if (\n addOidcScopes &&\n !defaultScopes.includes(\"openid\") &&\n !scopes.includes(\"openid\")\n ) {\n defaultScopes.push(\"openid\");\n }\n const requestScopes = addOidcScopes\n ? [...(scopes || []), ...defaultScopes]\n : scopes || [];\n const scopeSet = new ScopeSet(requestScopes);\n parameters.set(AADServerParamKeys.SCOPE, scopeSet.printScopes());\n}\n\n/**\n * add clientId\n * @param clientId\n */\nexport function addClientId(\n parameters: Map,\n clientId: string\n): void {\n parameters.set(AADServerParamKeys.CLIENT_ID, clientId);\n}\n\n/**\n * add redirect_uri\n * @param redirectUri\n */\nexport function addRedirectUri(\n parameters: Map,\n redirectUri: string\n): void {\n parameters.set(AADServerParamKeys.REDIRECT_URI, redirectUri);\n}\n\n/**\n * add post logout redirectUri\n * @param redirectUri\n */\nexport function addPostLogoutRedirectUri(\n parameters: Map,\n redirectUri: string\n): void {\n parameters.set(AADServerParamKeys.POST_LOGOUT_URI, redirectUri);\n}\n\n/**\n * add id_token_hint to logout request\n * @param idTokenHint\n */\nexport function addIdTokenHint(\n parameters: Map,\n idTokenHint: string\n): void {\n parameters.set(AADServerParamKeys.ID_TOKEN_HINT, idTokenHint);\n}\n\n/**\n * add domain_hint\n * @param domainHint\n */\nexport function addDomainHint(\n parameters: Map,\n domainHint: string\n): void {\n parameters.set(AADServerParamKeys.DOMAIN_HINT, domainHint);\n}\n\n/**\n * add login_hint\n * @param loginHint\n */\nexport function addLoginHint(\n parameters: Map,\n loginHint: string\n): void {\n parameters.set(AADServerParamKeys.LOGIN_HINT, loginHint);\n}\n\n/**\n * Adds the CCS (Cache Credential Service) query parameter for login_hint\n * @param loginHint\n */\nexport function addCcsUpn(\n parameters: Map,\n loginHint: string\n): void {\n parameters.set(HeaderNames.CCS_HEADER, `UPN:${loginHint}`);\n}\n\n/**\n * Adds the CCS (Cache Credential Service) query parameter for account object\n * @param loginHint\n */\nexport function addCcsOid(\n parameters: Map,\n clientInfo: ClientInfo\n): void {\n parameters.set(\n HeaderNames.CCS_HEADER,\n `Oid:${clientInfo.uid}@${clientInfo.utid}`\n );\n}\n\n/**\n * add sid\n * @param sid\n */\nexport function addSid(parameters: Map, sid: string): void {\n parameters.set(AADServerParamKeys.SID, sid);\n}\n\n/**\n * add claims\n * @param claims\n */\nexport function addClaims(\n parameters: Map,\n claims?: string,\n clientCapabilities?: Array\n): void {\n const mergedClaims = addClientCapabilitiesToClaims(\n claims,\n clientCapabilities\n );\n try {\n JSON.parse(mergedClaims);\n } catch (e) {\n throw createClientConfigurationError(\n ClientConfigurationErrorCodes.invalidClaims\n );\n }\n parameters.set(AADServerParamKeys.CLAIMS, mergedClaims);\n}\n\n/**\n * add correlationId\n * @param correlationId\n */\nexport function addCorrelationId(\n parameters: Map,\n correlationId: string\n): void {\n parameters.set(AADServerParamKeys.CLIENT_REQUEST_ID, correlationId);\n}\n\n/**\n * add library info query params\n * @param libraryInfo\n */\nexport function addLibraryInfo(\n parameters: Map,\n libraryInfo: LibraryInfo\n): void {\n // Telemetry Info\n parameters.set(AADServerParamKeys.X_CLIENT_SKU, libraryInfo.sku);\n parameters.set(AADServerParamKeys.X_CLIENT_VER, libraryInfo.version);\n if (libraryInfo.os) {\n parameters.set(AADServerParamKeys.X_CLIENT_OS, libraryInfo.os);\n }\n if (libraryInfo.cpu) {\n parameters.set(AADServerParamKeys.X_CLIENT_CPU, libraryInfo.cpu);\n }\n}\n\n/**\n * Add client telemetry parameters\n * @param appTelemetry\n */\nexport function addApplicationTelemetry(\n parameters: Map,\n appTelemetry: ApplicationTelemetry\n): void {\n if (appTelemetry?.appName) {\n parameters.set(AADServerParamKeys.X_APP_NAME, appTelemetry.appName);\n }\n\n if (appTelemetry?.appVersion) {\n parameters.set(AADServerParamKeys.X_APP_VER, appTelemetry.appVersion);\n }\n}\n\n/**\n * add prompt\n * @param prompt\n */\nexport function addPrompt(\n parameters: Map,\n prompt: string\n): void {\n parameters.set(AADServerParamKeys.PROMPT, prompt);\n}\n\n/**\n * add state\n * @param state\n */\nexport function addState(parameters: Map, state: string): void {\n if (state) {\n parameters.set(AADServerParamKeys.STATE, state);\n }\n}\n\n/**\n * add nonce\n * @param nonce\n */\nexport function addNonce(parameters: Map, nonce: string): void {\n parameters.set(AADServerParamKeys.NONCE, nonce);\n}\n\n/**\n * add code_challenge and code_challenge_method\n * - throw if either of them are not passed\n * @param codeChallenge\n * @param codeChallengeMethod\n */\nexport function addCodeChallengeParams(\n parameters: Map,\n codeChallenge?: string,\n codeChallengeMethod?: string\n): void {\n if (codeChallenge && codeChallengeMethod) {\n parameters.set(AADServerParamKeys.CODE_CHALLENGE, codeChallenge);\n parameters.set(\n AADServerParamKeys.CODE_CHALLENGE_METHOD,\n codeChallengeMethod\n );\n } else {\n throw createClientConfigurationError(\n ClientConfigurationErrorCodes.pkceParamsMissing\n );\n }\n}\n\n/**\n * add the `authorization_code` passed by the user to exchange for a token\n * @param code\n */\nexport function addAuthorizationCode(\n parameters: Map,\n code: string\n): void {\n parameters.set(AADServerParamKeys.CODE, code);\n}\n\n/**\n * add the `authorization_code` passed by the user to exchange for a token\n * @param code\n */\nexport function addDeviceCode(\n parameters: Map,\n code: string\n): void {\n parameters.set(AADServerParamKeys.DEVICE_CODE, code);\n}\n\n/**\n * add the `refreshToken` passed by the user\n * @param refreshToken\n */\nexport function addRefreshToken(\n parameters: Map,\n refreshToken: string\n): void {\n parameters.set(AADServerParamKeys.REFRESH_TOKEN, refreshToken);\n}\n\n/**\n * add the `code_verifier` passed by the user to exchange for a token\n * @param codeVerifier\n */\nexport function addCodeVerifier(\n parameters: Map,\n codeVerifier: string\n): void {\n parameters.set(AADServerParamKeys.CODE_VERIFIER, codeVerifier);\n}\n\n/**\n * add client_secret\n * @param clientSecret\n */\nexport function addClientSecret(\n parameters: Map,\n clientSecret: string\n): void {\n parameters.set(AADServerParamKeys.CLIENT_SECRET, clientSecret);\n}\n\n/**\n * add clientAssertion for confidential client flows\n * @param clientAssertion\n */\nexport function addClientAssertion(\n parameters: Map,\n clientAssertion: string\n): void {\n if (clientAssertion) {\n parameters.set(AADServerParamKeys.CLIENT_ASSERTION, clientAssertion);\n }\n}\n\n/**\n * add clientAssertionType for confidential client flows\n * @param clientAssertionType\n */\nexport function addClientAssertionType(\n parameters: Map,\n clientAssertionType: string\n): void {\n if (clientAssertionType) {\n parameters.set(\n AADServerParamKeys.CLIENT_ASSERTION_TYPE,\n clientAssertionType\n );\n }\n}\n\n/**\n * add OBO assertion for confidential client flows\n * @param clientAssertion\n */\nexport function addOboAssertion(\n parameters: Map,\n oboAssertion: string\n): void {\n parameters.set(AADServerParamKeys.OBO_ASSERTION, oboAssertion);\n}\n\n/**\n * add grant type\n * @param grantType\n */\nexport function addRequestTokenUse(\n parameters: Map,\n tokenUse: string\n): void {\n parameters.set(AADServerParamKeys.REQUESTED_TOKEN_USE, tokenUse);\n}\n\n/**\n * add grant type\n * @param grantType\n */\nexport function addGrantType(\n parameters: Map,\n grantType: string\n): void {\n parameters.set(AADServerParamKeys.GRANT_TYPE, grantType);\n}\n\n/**\n * add client info\n *\n */\nexport function addClientInfo(parameters: Map): void {\n parameters.set(CLIENT_INFO, \"1\");\n}\n\nexport function addInstanceAware(parameters: Map): void {\n if (!parameters.has(AADServerParamKeys.INSTANCE_AWARE)) {\n parameters.set(AADServerParamKeys.INSTANCE_AWARE, \"true\");\n }\n}\n\n/**\n * add extraQueryParams\n * @param eQParams\n */\nexport function addExtraQueryParameters(\n parameters: Map,\n eQParams: StringDict\n): void {\n Object.entries(eQParams).forEach(([key, value]) => {\n if (!parameters.has(key) && value) {\n parameters.set(key, value);\n }\n });\n}\n\nexport function addClientCapabilitiesToClaims(\n claims?: string,\n clientCapabilities?: Array\n): string {\n let mergedClaims: object;\n\n // Parse provided claims into JSON object or initialize empty object\n if (!claims) {\n mergedClaims = {};\n } else {\n try {\n mergedClaims = JSON.parse(claims);\n } catch (e) {\n throw createClientConfigurationError(\n ClientConfigurationErrorCodes.invalidClaims\n );\n }\n }\n\n if (clientCapabilities && clientCapabilities.length > 0) {\n if (!mergedClaims.hasOwnProperty(ClaimsRequestKeys.ACCESS_TOKEN)) {\n // Add access_token key to claims object\n mergedClaims[ClaimsRequestKeys.ACCESS_TOKEN] = {};\n }\n\n // Add xms_cc claim with provided clientCapabilities to access_token key\n mergedClaims[ClaimsRequestKeys.ACCESS_TOKEN][ClaimsRequestKeys.XMS_CC] =\n {\n values: clientCapabilities,\n };\n }\n\n return JSON.stringify(mergedClaims);\n}\n\n/**\n * adds `username` for Password Grant flow\n * @param username\n */\nexport function addUsername(\n parameters: Map,\n username: string\n): void {\n parameters.set(PasswordGrantConstants.username, username);\n}\n\n/**\n * adds `password` for Password Grant flow\n * @param password\n */\nexport function addPassword(\n parameters: Map,\n password: string\n): void {\n parameters.set(PasswordGrantConstants.password, password);\n}\n\n/**\n * add pop_jwk to query params\n * @param cnfString\n */\nexport function addPopToken(\n parameters: Map,\n cnfString: string\n): void {\n if (cnfString) {\n parameters.set(AADServerParamKeys.TOKEN_TYPE, AuthenticationScheme.POP);\n parameters.set(AADServerParamKeys.REQ_CNF, cnfString);\n }\n}\n\n/**\n * add SSH JWK and key ID to query params\n */\nexport function addSshJwk(\n parameters: Map,\n sshJwkString: string\n): void {\n if (sshJwkString) {\n parameters.set(AADServerParamKeys.TOKEN_TYPE, AuthenticationScheme.SSH);\n parameters.set(AADServerParamKeys.REQ_CNF, sshJwkString);\n }\n}\n\n/**\n * add server telemetry fields\n * @param serverTelemetryManager\n */\nexport function addServerTelemetry(\n parameters: Map,\n serverTelemetryManager: ServerTelemetryManager\n): void {\n parameters.set(\n AADServerParamKeys.X_CLIENT_CURR_TELEM,\n serverTelemetryManager.generateCurrentRequestHeaderValue()\n );\n parameters.set(\n AADServerParamKeys.X_CLIENT_LAST_TELEM,\n serverTelemetryManager.generateLastRequestHeaderValue()\n );\n}\n\n/**\n * Adds parameter that indicates to the server that throttling is supported\n */\nexport function addThrottling(parameters: Map): void {\n parameters.set(\n AADServerParamKeys.X_MS_LIB_CAPABILITY,\n ThrottlingConstants.X_MS_LIB_CAPABILITY_VALUE\n );\n}\n\n/**\n * Adds logout_hint parameter for \"silent\" logout which prevent server account picker\n */\nexport function addLogoutHint(\n parameters: Map,\n logoutHint: string\n): void {\n parameters.set(AADServerParamKeys.LOGOUT_HINT, logoutHint);\n}\n\nexport function addBrokerParameters(\n parameters: Map,\n brokerClientId: string,\n brokerRedirectUri: string\n): void {\n if (!parameters.has(AADServerParamKeys.BROKER_CLIENT_ID)) {\n parameters.set(AADServerParamKeys.BROKER_CLIENT_ID, brokerClientId);\n }\n if (!parameters.has(AADServerParamKeys.BROKER_REDIRECT_URI)) {\n parameters.set(\n AADServerParamKeys.BROKER_REDIRECT_URI,\n brokerRedirectUri\n );\n }\n}\n\n/**\n * Add EAR (Encrypted Authorize Response) request parameters\n * @param parameters\n * @param jwk\n */\nexport function addEARParameters(\n parameters: Map,\n jwk: string\n): void {\n parameters.set(AADServerParamKeys.EAR_JWK, encodeURIComponent(jwk));\n\n // ear_jwe_crypto will always have value: {\"alg\":\"dir\",\"enc\":\"A256GCM\"} so we can hardcode this\n const jweCryptoB64Encoded = \"eyJhbGciOiJkaXIiLCJlbmMiOiJBMjU2R0NNIn0\";\n parameters.set(AADServerParamKeys.EAR_JWE_CRYPTO, jweCryptoB64Encoded);\n}\n", "/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\n/**\n * Tenant Discovery Response which contains the relevant OAuth endpoints and data needed for authentication and authorization.\n */\nexport type OpenIdConfigResponse = {\n authorization_endpoint: string;\n token_endpoint: string;\n end_session_endpoint?: string;\n issuer: string;\n jwks_uri: string;\n};\n\nexport function isOpenIdConfigResponse(response: object): boolean {\n return (\n response.hasOwnProperty(\"authorization_endpoint\") &&\n response.hasOwnProperty(\"token_endpoint\") &&\n response.hasOwnProperty(\"issuer\") &&\n response.hasOwnProperty(\"jwks_uri\")\n );\n}\n", "/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { CloudDiscoveryMetadata } from \"./CloudDiscoveryMetadata.js\";\n\n/**\n * The OpenID Configuration Endpoint Response type. Used by the authority class to get relevant OAuth endpoints.\n */\nexport type CloudInstanceDiscoveryResponse = {\n tenant_discovery_endpoint: string;\n metadata: Array;\n};\n\nexport function isCloudInstanceDiscoveryResponse(response: object): boolean {\n return (\n response.hasOwnProperty(\"tenant_discovery_endpoint\") &&\n response.hasOwnProperty(\"metadata\")\n );\n}\n", "/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\n/**\n * The OpenID Configuration Endpoint Response type. Used by the authority class to get relevant OAuth endpoints.\n */\nexport type CloudInstanceDiscoveryErrorResponse = {\n error: String;\n error_description: String;\n error_codes?: Array;\n timestamp?: String;\n trace_id?: String;\n correlation_id?: String;\n error_uri?: String;\n};\n\nexport function isCloudInstanceDiscoveryErrorResponse(\n response: object\n): boolean {\n return (\n response.hasOwnProperty(\"error\") &&\n response.hasOwnProperty(\"error_description\")\n );\n}\n", "/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { Logger } from \"../logger/Logger.js\";\nimport { IPerformanceClient } from \"../telemetry/performance/IPerformanceClient.js\";\n\n/**\n * Wraps a function with a performance measurement.\n * Usage: invoke(functionToCall, performanceClient, \"EventName\", \"correlationId\")(...argsToPassToFunction)\n * @param callback\n * @param eventName\n * @param logger\n * @param telemetryClient\n * @param correlationId\n * @returns\n * @internal\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport const invoke = , U>(\n callback: (...args: T) => U,\n eventName: string,\n logger: Logger,\n telemetryClient?: IPerformanceClient,\n correlationId?: string\n) => {\n return (...args: T): U => {\n logger.trace(`Executing function ${eventName}`);\n const inProgressEvent = telemetryClient?.startMeasurement(\n eventName,\n correlationId\n );\n if (correlationId) {\n // Track number of times this API is called in a single request\n const eventCount = eventName + \"CallCount\";\n telemetryClient?.incrementFields(\n { [eventCount]: 1 },\n correlationId\n );\n }\n try {\n const result = callback(...args);\n inProgressEvent?.end({\n success: true,\n });\n logger.trace(`Returning result from ${eventName}`);\n return result;\n } catch (e) {\n logger.trace(`Error occurred in ${eventName}`);\n try {\n logger.trace(JSON.stringify(e));\n } catch (e) {\n logger.trace(\"Unable to print error message.\");\n }\n inProgressEvent?.end(\n {\n success: false,\n },\n e\n );\n throw e;\n }\n };\n};\n\n/**\n * Wraps an async function with a performance measurement.\n * Usage: invokeAsync(functionToCall, performanceClient, \"EventName\", \"correlationId\")(...argsToPassToFunction)\n * @param callback\n * @param eventName\n * @param logger\n * @param telemetryClient\n * @param correlationId\n * @returns\n * @internal\n *\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport const invokeAsync = , U>(\n callback: (...args: T) => Promise,\n eventName: string,\n logger: Logger,\n telemetryClient?: IPerformanceClient,\n correlationId?: string\n) => {\n return (...args: T): Promise => {\n logger.trace(`Executing function ${eventName}`);\n const inProgressEvent = telemetryClient?.startMeasurement(\n eventName,\n correlationId\n );\n if (correlationId) {\n // Track number of times this API is called in a single request\n const eventCount = eventName + \"CallCount\";\n telemetryClient?.incrementFields(\n { [eventCount]: 1 },\n correlationId\n );\n }\n telemetryClient?.setPreQueueTime(eventName, correlationId);\n return callback(...args)\n .then((response) => {\n logger.trace(`Returning result from ${eventName}`);\n inProgressEvent?.end({\n success: true,\n });\n return response;\n })\n .catch((e) => {\n logger.trace(`Error occurred in ${eventName}`);\n try {\n logger.trace(JSON.stringify(e));\n } catch (e) {\n logger.trace(\"Unable to print error message.\");\n }\n inProgressEvent?.end(\n {\n success: false,\n },\n e\n );\n throw e;\n });\n };\n};\n", "/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { INetworkModule } from \"../network/INetworkModule.js\";\nimport { NetworkResponse } from \"../network/NetworkResponse.js\";\nimport { IMDSBadResponse } from \"../response/IMDSBadResponse.js\";\nimport {\n Constants,\n HttpStatus,\n RegionDiscoverySources,\n} from \"../utils/Constants.js\";\nimport { RegionDiscoveryMetadata } from \"./RegionDiscoveryMetadata.js\";\nimport { ImdsOptions } from \"./ImdsOptions.js\";\nimport { IPerformanceClient } from \"../telemetry/performance/IPerformanceClient.js\";\nimport { PerformanceEvents } from \"../telemetry/performance/PerformanceEvent.js\";\nimport { invokeAsync } from \"../utils/FunctionWrappers.js\";\nimport { Logger } from \"../logger/Logger.js\";\n\nexport class RegionDiscovery {\n // Network interface to make requests with.\n protected networkInterface: INetworkModule;\n // Logger\n private logger: Logger;\n // Performance client\n protected performanceClient: IPerformanceClient | undefined;\n // CorrelationId\n protected correlationId: string | undefined;\n // Options for the IMDS endpoint request\n protected static IMDS_OPTIONS: ImdsOptions = {\n headers: {\n Metadata: \"true\",\n },\n };\n\n constructor(\n networkInterface: INetworkModule,\n logger: Logger,\n performanceClient?: IPerformanceClient,\n correlationId?: string\n ) {\n this.networkInterface = networkInterface;\n this.logger = logger;\n this.performanceClient = performanceClient;\n this.correlationId = correlationId;\n }\n\n /**\n * Detect the region from the application's environment.\n *\n * @returns Promise\n */\n public async detectRegion(\n environmentRegion: string | undefined,\n regionDiscoveryMetadata: RegionDiscoveryMetadata\n ): Promise {\n this.performanceClient?.addQueueMeasurement(\n PerformanceEvents.RegionDiscoveryDetectRegion,\n this.correlationId\n );\n\n // Initialize auto detected region with the region from the envrionment\n let autodetectedRegionName = environmentRegion;\n\n // Check if a region was detected from the environment, if not, attempt to get the region from IMDS\n if (!autodetectedRegionName) {\n const options = RegionDiscovery.IMDS_OPTIONS;\n\n try {\n const localIMDSVersionResponse = await invokeAsync(\n this.getRegionFromIMDS.bind(this),\n PerformanceEvents.RegionDiscoveryGetRegionFromIMDS,\n this.logger,\n this.performanceClient,\n this.correlationId\n )(Constants.IMDS_VERSION, options);\n if (localIMDSVersionResponse.status === HttpStatus.SUCCESS) {\n autodetectedRegionName = localIMDSVersionResponse.body;\n regionDiscoveryMetadata.region_source =\n RegionDiscoverySources.IMDS;\n }\n\n // If the response using the local IMDS version failed, try to fetch the current version of IMDS and retry.\n if (\n localIMDSVersionResponse.status === HttpStatus.BAD_REQUEST\n ) {\n const currentIMDSVersion = await invokeAsync(\n this.getCurrentVersion.bind(this),\n PerformanceEvents.RegionDiscoveryGetCurrentVersion,\n this.logger,\n this.performanceClient,\n this.correlationId\n )(options);\n if (!currentIMDSVersion) {\n regionDiscoveryMetadata.region_source =\n RegionDiscoverySources.FAILED_AUTO_DETECTION;\n return null;\n }\n\n const currentIMDSVersionResponse = await invokeAsync(\n this.getRegionFromIMDS.bind(this),\n PerformanceEvents.RegionDiscoveryGetRegionFromIMDS,\n this.logger,\n this.performanceClient,\n this.correlationId\n )(currentIMDSVersion, options);\n if (\n currentIMDSVersionResponse.status === HttpStatus.SUCCESS\n ) {\n autodetectedRegionName =\n currentIMDSVersionResponse.body;\n regionDiscoveryMetadata.region_source =\n RegionDiscoverySources.IMDS;\n }\n }\n } catch (e) {\n regionDiscoveryMetadata.region_source =\n RegionDiscoverySources.FAILED_AUTO_DETECTION;\n return null;\n }\n } else {\n regionDiscoveryMetadata.region_source =\n RegionDiscoverySources.ENVIRONMENT_VARIABLE;\n }\n\n // If no region was auto detected from the environment or from the IMDS endpoint, mark the attempt as a FAILED_AUTO_DETECTION\n if (!autodetectedRegionName) {\n regionDiscoveryMetadata.region_source =\n RegionDiscoverySources.FAILED_AUTO_DETECTION;\n }\n\n return autodetectedRegionName || null;\n }\n\n /**\n * Make the call to the IMDS endpoint\n *\n * @param imdsEndpointUrl\n * @returns Promise>\n */\n private async getRegionFromIMDS(\n version: string,\n options: ImdsOptions\n ): Promise> {\n this.performanceClient?.addQueueMeasurement(\n PerformanceEvents.RegionDiscoveryGetRegionFromIMDS,\n this.correlationId\n );\n return this.networkInterface.sendGetRequestAsync(\n `${Constants.IMDS_ENDPOINT}?api-version=${version}&format=text`,\n options,\n Constants.IMDS_TIMEOUT\n );\n }\n\n /**\n * Get the most recent version of the IMDS endpoint available\n *\n * @returns Promise\n */\n private async getCurrentVersion(\n options: ImdsOptions\n ): Promise {\n this.performanceClient?.addQueueMeasurement(\n PerformanceEvents.RegionDiscoveryGetCurrentVersion,\n this.correlationId\n );\n try {\n const response =\n await this.networkInterface.sendGetRequestAsync(\n `${Constants.IMDS_ENDPOINT}?format=json`,\n options\n );\n\n // When IMDS endpoint is called without the api version query param, bad request response comes back with latest version.\n if (\n response.status === HttpStatus.BAD_REQUEST &&\n response.body &&\n response.body[\"newest-versions\"] &&\n response.body[\"newest-versions\"].length > 0\n ) {\n return response.body[\"newest-versions\"][0];\n }\n\n return null;\n } catch (e) {\n return null;\n }\n }\n}\n", "/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { AuthorityType } from \"./AuthorityType.js\";\nimport {\n isOpenIdConfigResponse,\n OpenIdConfigResponse,\n} from \"./OpenIdConfigResponse.js\";\nimport { UrlString } from \"../url/UrlString.js\";\nimport { IUri } from \"../url/IUri.js\";\nimport {\n createClientAuthError,\n ClientAuthErrorCodes,\n} from \"../error/ClientAuthError.js\";\nimport { INetworkModule } from \"../network/INetworkModule.js\";\nimport {\n AADAuthorityConstants,\n AuthorityMetadataSource,\n Constants,\n RegionDiscoveryOutcomes,\n} from \"../utils/Constants.js\";\nimport {\n EndpointMetadata,\n getCloudDiscoveryMetadataFromHardcodedValues,\n getCloudDiscoveryMetadataFromNetworkResponse,\n InstanceDiscoveryMetadataAliases,\n} from \"./AuthorityMetadata.js\";\nimport {\n createClientConfigurationError,\n ClientConfigurationErrorCodes,\n} from \"../error/ClientConfigurationError.js\";\nimport { ProtocolMode } from \"./ProtocolMode.js\";\nimport { ICacheManager } from \"../cache/interface/ICacheManager.js\";\nimport { AuthorityMetadataEntity } from \"../cache/entities/AuthorityMetadataEntity.js\";\nimport {\n AuthorityOptions,\n AzureCloudInstance,\n StaticAuthorityOptions,\n} from \"./AuthorityOptions.js\";\nimport {\n CloudInstanceDiscoveryResponse,\n isCloudInstanceDiscoveryResponse,\n} from \"./CloudInstanceDiscoveryResponse.js\";\nimport {\n CloudInstanceDiscoveryErrorResponse,\n isCloudInstanceDiscoveryErrorResponse,\n} from \"./CloudInstanceDiscoveryErrorResponse.js\";\nimport { CloudDiscoveryMetadata } from \"./CloudDiscoveryMetadata.js\";\nimport { RegionDiscovery } from \"./RegionDiscovery.js\";\nimport { RegionDiscoveryMetadata } from \"./RegionDiscoveryMetadata.js\";\nimport { ImdsOptions } from \"./ImdsOptions.js\";\nimport type { AzureCloudOptions } from \"../config/ClientConfiguration.js\";\nimport { Logger } from \"../logger/Logger.js\";\nimport { AuthError } from \"../error/AuthError.js\";\nimport { IPerformanceClient } from \"../telemetry/performance/IPerformanceClient.js\";\nimport { PerformanceEvents } from \"../telemetry/performance/PerformanceEvent.js\";\nimport { invokeAsync } from \"../utils/FunctionWrappers.js\";\nimport * as CacheHelpers from \"../cache/utils/CacheHelpers.js\";\n\n/**\n * The authority class validates the authority URIs used by the user, and retrieves the OpenID Configuration Data from the\n * endpoint. It will store the pertinent config data in this object for use during token calls.\n * @internal\n */\nexport class Authority {\n // Canonical authority url string\n private _canonicalAuthority: UrlString;\n // Canonicaly authority url components\n private _canonicalAuthorityUrlComponents: IUri | null;\n // Network interface to make requests with.\n protected networkInterface: INetworkModule;\n // Cache Manager to cache network responses\n protected cacheManager: ICacheManager;\n // Protocol mode to construct endpoints\n private authorityOptions: AuthorityOptions;\n // Authority metadata\n private metadata: AuthorityMetadataEntity;\n // Region discovery service\n private regionDiscovery: RegionDiscovery;\n // Region discovery metadata\n public regionDiscoveryMetadata: RegionDiscoveryMetadata;\n // Logger object\n private logger: Logger;\n // Performance client\n protected performanceClient: IPerformanceClient | undefined;\n // Correlation Id\n protected correlationId: string;\n // Indicates if the authority is fake, for the purpose of a Managed Identity Application\n private managedIdentity: boolean;\n // Reserved tenant domain names that will not be replaced with tenant id\n private static reservedTenantDomains: Set = new Set([\n \"{tenant}\",\n \"{tenantid}\",\n AADAuthorityConstants.COMMON,\n AADAuthorityConstants.CONSUMERS,\n AADAuthorityConstants.ORGANIZATIONS,\n ]);\n\n constructor(\n authority: string,\n networkInterface: INetworkModule,\n cacheManager: ICacheManager,\n authorityOptions: AuthorityOptions,\n logger: Logger,\n correlationId: string,\n performanceClient?: IPerformanceClient,\n managedIdentity?: boolean\n ) {\n this.canonicalAuthority = authority;\n this._canonicalAuthority.validateAsUri();\n this.networkInterface = networkInterface;\n this.cacheManager = cacheManager;\n this.authorityOptions = authorityOptions;\n this.regionDiscoveryMetadata = {\n region_used: undefined,\n region_source: undefined,\n region_outcome: undefined,\n };\n this.logger = logger;\n this.performanceClient = performanceClient;\n this.correlationId = correlationId;\n this.managedIdentity = managedIdentity || false;\n this.regionDiscovery = new RegionDiscovery(\n networkInterface,\n this.logger,\n this.performanceClient,\n this.correlationId\n );\n }\n\n /**\n * Get {@link AuthorityType}\n * @param authorityUri {@link IUri}\n * @private\n */\n private getAuthorityType(authorityUri: IUri): AuthorityType {\n // CIAM auth url pattern is being standardized as: .ciamlogin.com\n if (authorityUri.HostNameAndPort.endsWith(Constants.CIAM_AUTH_URL)) {\n return AuthorityType.Ciam;\n }\n\n const pathSegments = authorityUri.PathSegments;\n if (pathSegments.length) {\n switch (pathSegments[0].toLowerCase()) {\n case Constants.ADFS:\n return AuthorityType.Adfs;\n case Constants.DSTS:\n return AuthorityType.Dsts;\n default:\n break;\n }\n }\n return AuthorityType.Default;\n }\n\n // See above for AuthorityType\n public get authorityType(): AuthorityType {\n return this.getAuthorityType(this.canonicalAuthorityUrlComponents);\n }\n\n /**\n * ProtocolMode enum representing the way endpoints are constructed.\n */\n public get protocolMode(): ProtocolMode {\n return this.authorityOptions.protocolMode;\n }\n\n /**\n * Returns authorityOptions which can be used to reinstantiate a new authority instance\n */\n public get options(): AuthorityOptions {\n return this.authorityOptions;\n }\n\n /**\n * A URL that is the authority set by the developer\n */\n public get canonicalAuthority(): string {\n return this._canonicalAuthority.urlString;\n }\n\n /**\n * Sets canonical authority.\n */\n public set canonicalAuthority(url: string) {\n this._canonicalAuthority = new UrlString(url);\n this._canonicalAuthority.validateAsUri();\n this._canonicalAuthorityUrlComponents = null;\n }\n\n /**\n * Get authority components.\n */\n public get canonicalAuthorityUrlComponents(): IUri {\n if (!this._canonicalAuthorityUrlComponents) {\n this._canonicalAuthorityUrlComponents =\n this._canonicalAuthority.getUrlComponents();\n }\n\n return this._canonicalAuthorityUrlComponents;\n }\n\n /**\n * Get hostname and port i.e. login.microsoftonline.com\n */\n public get hostnameAndPort(): string {\n return this.canonicalAuthorityUrlComponents.HostNameAndPort.toLowerCase();\n }\n\n /**\n * Get tenant for authority.\n */\n public get tenant(): string {\n return this.canonicalAuthorityUrlComponents.PathSegments[0];\n }\n\n /**\n * OAuth /authorize endpoint for requests\n */\n public get authorizationEndpoint(): string {\n if (this.discoveryComplete()) {\n return this.replacePath(this.metadata.authorization_endpoint);\n } else {\n throw createClientAuthError(\n ClientAuthErrorCodes.endpointResolutionError\n );\n }\n }\n\n /**\n * OAuth /token endpoint for requests\n */\n public get tokenEndpoint(): string {\n if (this.discoveryComplete()) {\n return this.replacePath(this.metadata.token_endpoint);\n } else {\n throw createClientAuthError(\n ClientAuthErrorCodes.endpointResolutionError\n );\n }\n }\n\n public get deviceCodeEndpoint(): string {\n if (this.discoveryComplete()) {\n return this.replacePath(\n this.metadata.token_endpoint.replace(\"/token\", \"/devicecode\")\n );\n } else {\n throw createClientAuthError(\n ClientAuthErrorCodes.endpointResolutionError\n );\n }\n }\n\n /**\n * OAuth logout endpoint for requests\n */\n public get endSessionEndpoint(): string {\n if (this.discoveryComplete()) {\n // ROPC policies may not have end_session_endpoint set\n if (!this.metadata.end_session_endpoint) {\n throw createClientAuthError(\n ClientAuthErrorCodes.endSessionEndpointNotSupported\n );\n }\n return this.replacePath(this.metadata.end_session_endpoint);\n } else {\n throw createClientAuthError(\n ClientAuthErrorCodes.endpointResolutionError\n );\n }\n }\n\n /**\n * OAuth issuer for requests\n */\n public get selfSignedJwtAudience(): string {\n if (this.discoveryComplete()) {\n return this.replacePath(this.metadata.issuer);\n } else {\n throw createClientAuthError(\n ClientAuthErrorCodes.endpointResolutionError\n );\n }\n }\n\n /**\n * Jwks_uri for token signing keys\n */\n public get jwksUri(): string {\n if (this.discoveryComplete()) {\n return this.replacePath(this.metadata.jwks_uri);\n } else {\n throw createClientAuthError(\n ClientAuthErrorCodes.endpointResolutionError\n );\n }\n }\n\n /**\n * Returns a flag indicating that tenant name can be replaced in authority {@link IUri}\n * @param authorityUri {@link IUri}\n * @private\n */\n private canReplaceTenant(authorityUri: IUri): boolean {\n return (\n authorityUri.PathSegments.length === 1 &&\n !Authority.reservedTenantDomains.has(\n authorityUri.PathSegments[0]\n ) &&\n this.getAuthorityType(authorityUri) === AuthorityType.Default &&\n this.protocolMode !== ProtocolMode.OIDC\n );\n }\n\n /**\n * Replaces tenant in url path with current tenant. Defaults to common.\n * @param urlString\n */\n private replaceTenant(urlString: string): string {\n return urlString.replace(/{tenant}|{tenantid}/g, this.tenant);\n }\n\n /**\n * Replaces path such as tenant or policy with the current tenant or policy.\n * @param urlString\n */\n private replacePath(urlString: string): string {\n let endpoint = urlString;\n const cachedAuthorityUrl = new UrlString(\n this.metadata.canonical_authority\n );\n const cachedAuthorityUrlComponents =\n cachedAuthorityUrl.getUrlComponents();\n const cachedAuthorityParts = cachedAuthorityUrlComponents.PathSegments;\n const currentAuthorityParts =\n this.canonicalAuthorityUrlComponents.PathSegments;\n\n currentAuthorityParts.forEach((currentPart, index) => {\n let cachedPart = cachedAuthorityParts[index];\n if (\n index === 0 &&\n this.canReplaceTenant(cachedAuthorityUrlComponents)\n ) {\n const tenantId = new UrlString(\n this.metadata.authorization_endpoint\n ).getUrlComponents().PathSegments[0];\n /**\n * Check if AAD canonical authority contains tenant domain name, for example \"testdomain.onmicrosoft.com\",\n * by comparing its first path segment to the corresponding authorization endpoint path segment, which is\n * always resolved with tenant id by OIDC.\n */\n if (cachedPart !== tenantId) {\n this.logger.verbose(\n `Replacing tenant domain name ${cachedPart} with id ${tenantId}`\n );\n cachedPart = tenantId;\n }\n }\n if (currentPart !== cachedPart) {\n endpoint = endpoint.replace(\n `/${cachedPart}/`,\n `/${currentPart}/`\n );\n }\n });\n\n return this.replaceTenant(endpoint);\n }\n\n /**\n * The default open id configuration endpoint for any canonical authority.\n */\n protected get defaultOpenIdConfigurationEndpoint(): string {\n const canonicalAuthorityHost = this.hostnameAndPort;\n if (\n this.canonicalAuthority.endsWith(\"v2.0/\") ||\n this.authorityType === AuthorityType.Adfs ||\n (this.protocolMode === ProtocolMode.OIDC &&\n !this.isAliasOfKnownMicrosoftAuthority(canonicalAuthorityHost))\n ) {\n return `${this.canonicalAuthority}.well-known/openid-configuration`;\n }\n return `${this.canonicalAuthority}v2.0/.well-known/openid-configuration`;\n }\n\n /**\n * Boolean that returns whether or not tenant discovery has been completed.\n */\n discoveryComplete(): boolean {\n return !!this.metadata;\n }\n\n /**\n * Perform endpoint discovery to discover aliases, preferred_cache, preferred_network\n * and the /authorize, /token and logout endpoints.\n */\n public async resolveEndpointsAsync(): Promise {\n this.performanceClient?.addQueueMeasurement(\n PerformanceEvents.AuthorityResolveEndpointsAsync,\n this.correlationId\n );\n\n const metadataEntity = this.getCurrentMetadataEntity();\n\n const cloudDiscoverySource = await invokeAsync(\n this.updateCloudDiscoveryMetadata.bind(this),\n PerformanceEvents.AuthorityUpdateCloudDiscoveryMetadata,\n this.logger,\n this.performanceClient,\n this.correlationId\n )(metadataEntity);\n this.canonicalAuthority = this.canonicalAuthority.replace(\n this.hostnameAndPort,\n metadataEntity.preferred_network\n );\n const endpointSource = await invokeAsync(\n this.updateEndpointMetadata.bind(this),\n PerformanceEvents.AuthorityUpdateEndpointMetadata,\n this.logger,\n this.performanceClient,\n this.correlationId\n )(metadataEntity);\n this.updateCachedMetadata(metadataEntity, cloudDiscoverySource, {\n source: endpointSource,\n });\n this.performanceClient?.addFields(\n {\n cloudDiscoverySource: cloudDiscoverySource,\n authorityEndpointSource: endpointSource,\n },\n this.correlationId\n );\n }\n\n /**\n * Returns metadata entity from cache if it exists, otherwiser returns a new metadata entity built\n * from the configured canonical authority\n * @returns\n */\n private getCurrentMetadataEntity(): AuthorityMetadataEntity {\n let metadataEntity: AuthorityMetadataEntity | null =\n this.cacheManager.getAuthorityMetadataByAlias(this.hostnameAndPort);\n\n if (!metadataEntity) {\n metadataEntity = {\n aliases: [],\n preferred_cache: this.hostnameAndPort,\n preferred_network: this.hostnameAndPort,\n canonical_authority: this.canonicalAuthority,\n authorization_endpoint: \"\",\n token_endpoint: \"\",\n end_session_endpoint: \"\",\n issuer: \"\",\n aliasesFromNetwork: false,\n endpointsFromNetwork: false,\n expiresAt: CacheHelpers.generateAuthorityMetadataExpiresAt(),\n jwks_uri: \"\",\n };\n }\n return metadataEntity;\n }\n\n /**\n * Updates cached metadata based on metadata source and sets the instance's metadata\n * property to the same value\n * @param metadataEntity\n * @param cloudDiscoverySource\n * @param endpointMetadataResult\n */\n private updateCachedMetadata(\n metadataEntity: AuthorityMetadataEntity,\n cloudDiscoverySource: AuthorityMetadataSource | null,\n endpointMetadataResult: {\n source: AuthorityMetadataSource;\n metadata?: OpenIdConfigResponse;\n } | null\n ): void {\n if (\n cloudDiscoverySource !== AuthorityMetadataSource.CACHE &&\n endpointMetadataResult?.source !== AuthorityMetadataSource.CACHE\n ) {\n // Reset the expiration time unless both values came from a successful cache lookup\n metadataEntity.expiresAt =\n CacheHelpers.generateAuthorityMetadataExpiresAt();\n metadataEntity.canonical_authority = this.canonicalAuthority;\n }\n\n const cacheKey = this.cacheManager.generateAuthorityMetadataCacheKey(\n metadataEntity.preferred_cache\n );\n this.cacheManager.setAuthorityMetadata(cacheKey, metadataEntity);\n this.metadata = metadataEntity;\n }\n\n /**\n * Update AuthorityMetadataEntity with new endpoints and return where the information came from\n * @param metadataEntity\n */\n private async updateEndpointMetadata(\n metadataEntity: AuthorityMetadataEntity\n ): Promise {\n this.performanceClient?.addQueueMeasurement(\n PerformanceEvents.AuthorityUpdateEndpointMetadata,\n this.correlationId\n );\n\n const localMetadata =\n this.updateEndpointMetadataFromLocalSources(metadataEntity);\n\n // Further update may be required for hardcoded metadata if regional metadata is preferred\n if (localMetadata) {\n if (\n localMetadata.source ===\n AuthorityMetadataSource.HARDCODED_VALUES\n ) {\n // If the user prefers to use an azure region replace the global endpoints with regional information.\n if (\n this.authorityOptions.azureRegionConfiguration?.azureRegion\n ) {\n if (localMetadata.metadata) {\n const hardcodedMetadata = await invokeAsync(\n this.updateMetadataWithRegionalInformation.bind(\n this\n ),\n PerformanceEvents.AuthorityUpdateMetadataWithRegionalInformation,\n this.logger,\n this.performanceClient,\n this.correlationId\n )(localMetadata.metadata);\n CacheHelpers.updateAuthorityEndpointMetadata(\n metadataEntity,\n hardcodedMetadata,\n false\n );\n metadataEntity.canonical_authority =\n this.canonicalAuthority;\n }\n }\n }\n return localMetadata.source;\n }\n\n // Get metadata from network if local sources aren't available\n let metadata = await invokeAsync(\n this.getEndpointMetadataFromNetwork.bind(this),\n PerformanceEvents.AuthorityGetEndpointMetadataFromNetwork,\n this.logger,\n this.performanceClient,\n this.correlationId\n )();\n if (metadata) {\n // If the user prefers to use an azure region replace the global endpoints with regional information.\n if (this.authorityOptions.azureRegionConfiguration?.azureRegion) {\n metadata = await invokeAsync(\n this.updateMetadataWithRegionalInformation.bind(this),\n PerformanceEvents.AuthorityUpdateMetadataWithRegionalInformation,\n this.logger,\n this.performanceClient,\n this.correlationId\n )(metadata);\n }\n\n CacheHelpers.updateAuthorityEndpointMetadata(\n metadataEntity,\n metadata,\n true\n );\n return AuthorityMetadataSource.NETWORK;\n } else {\n // Metadata could not be obtained from the config, cache, network or hardcoded values\n throw createClientAuthError(\n ClientAuthErrorCodes.openIdConfigError,\n this.defaultOpenIdConfigurationEndpoint\n );\n }\n }\n\n /**\n * Updates endpoint metadata from local sources and returns where the information was retrieved from and the metadata config\n * response if the source is hardcoded metadata\n * @param metadataEntity\n * @returns\n */\n private updateEndpointMetadataFromLocalSources(\n metadataEntity: AuthorityMetadataEntity\n ): {\n source: AuthorityMetadataSource;\n metadata?: OpenIdConfigResponse;\n } | null {\n this.logger.verbose(\n \"Attempting to get endpoint metadata from authority configuration\"\n );\n const configMetadata = this.getEndpointMetadataFromConfig();\n if (configMetadata) {\n this.logger.verbose(\n \"Found endpoint metadata in authority configuration\"\n );\n CacheHelpers.updateAuthorityEndpointMetadata(\n metadataEntity,\n configMetadata,\n false\n );\n return {\n source: AuthorityMetadataSource.CONFIG,\n };\n }\n\n this.logger.verbose(\n \"Did not find endpoint metadata in the config... Attempting to get endpoint metadata from the hardcoded values.\"\n );\n\n // skipAuthorityMetadataCache is used to bypass hardcoded authority metadata and force a network metadata cache lookup and network metadata request if no cached response is available.\n if (this.authorityOptions.skipAuthorityMetadataCache) {\n this.logger.verbose(\n \"Skipping hardcoded metadata cache since skipAuthorityMetadataCache is set to true. Attempting to get endpoint metadata from the network metadata cache.\"\n );\n } else {\n const hardcodedMetadata =\n this.getEndpointMetadataFromHardcodedValues();\n if (hardcodedMetadata) {\n CacheHelpers.updateAuthorityEndpointMetadata(\n metadataEntity,\n hardcodedMetadata,\n false\n );\n return {\n source: AuthorityMetadataSource.HARDCODED_VALUES,\n metadata: hardcodedMetadata,\n };\n } else {\n this.logger.verbose(\n \"Did not find endpoint metadata in hardcoded values... Attempting to get endpoint metadata from the network metadata cache.\"\n );\n }\n }\n\n // Check cached metadata entity expiration status\n const metadataEntityExpired =\n CacheHelpers.isAuthorityMetadataExpired(metadataEntity);\n if (\n this.isAuthoritySameType(metadataEntity) &&\n metadataEntity.endpointsFromNetwork &&\n !metadataEntityExpired\n ) {\n // No need to update\n this.logger.verbose(\"Found endpoint metadata in the cache.\");\n return { source: AuthorityMetadataSource.CACHE };\n } else if (metadataEntityExpired) {\n this.logger.verbose(\"The metadata entity is expired.\");\n }\n\n return null;\n }\n\n /**\n * Compares the number of url components after the domain to determine if the cached\n * authority metadata can be used for the requested authority. Protects against same domain different\n * authority such as login.microsoftonline.com/tenant and login.microsoftonline.com/tfp/tenant/policy\n * @param metadataEntity\n */\n private isAuthoritySameType(\n metadataEntity: AuthorityMetadataEntity\n ): boolean {\n const cachedAuthorityUrl = new UrlString(\n metadataEntity.canonical_authority\n );\n const cachedParts = cachedAuthorityUrl.getUrlComponents().PathSegments;\n\n return (\n cachedParts.length ===\n this.canonicalAuthorityUrlComponents.PathSegments.length\n );\n }\n\n /**\n * Parse authorityMetadata config option\n */\n private getEndpointMetadataFromConfig(): OpenIdConfigResponse | null {\n if (this.authorityOptions.authorityMetadata) {\n try {\n return JSON.parse(\n this.authorityOptions.authorityMetadata\n ) as OpenIdConfigResponse;\n } catch (e) {\n throw createClientConfigurationError(\n ClientConfigurationErrorCodes.invalidAuthorityMetadata\n );\n }\n }\n\n return null;\n }\n\n /**\n * Gets OAuth endpoints from the given OpenID configuration endpoint.\n *\n * @param hasHardcodedMetadata boolean\n */\n private async getEndpointMetadataFromNetwork(): Promise {\n this.performanceClient?.addQueueMeasurement(\n PerformanceEvents.AuthorityGetEndpointMetadataFromNetwork,\n this.correlationId\n );\n\n const options: ImdsOptions = {};\n\n /*\n * TODO: Add a timeout if the authority exists in our library's\n * hardcoded list of metadata\n */\n\n const openIdConfigurationEndpoint =\n this.defaultOpenIdConfigurationEndpoint;\n this.logger.verbose(\n `Authority.getEndpointMetadataFromNetwork: attempting to retrieve OAuth endpoints from ${openIdConfigurationEndpoint}`\n );\n\n try {\n const response =\n await this.networkInterface.sendGetRequestAsync(\n openIdConfigurationEndpoint,\n options\n );\n const isValidResponse = isOpenIdConfigResponse(response.body);\n if (isValidResponse) {\n return response.body;\n } else {\n this.logger.verbose(\n `Authority.getEndpointMetadataFromNetwork: could not parse response as OpenID configuration`\n );\n return null;\n }\n } catch (e) {\n this.logger.verbose(\n `Authority.getEndpointMetadataFromNetwork: ${e}`\n );\n return null;\n }\n }\n\n /**\n * Get OAuth endpoints for common authorities.\n */\n private getEndpointMetadataFromHardcodedValues(): OpenIdConfigResponse | null {\n if (this.hostnameAndPort in EndpointMetadata) {\n return EndpointMetadata[this.hostnameAndPort];\n }\n\n return null;\n }\n\n /**\n * Update the retrieved metadata with regional information.\n * User selected Azure region will be used if configured.\n */\n private async updateMetadataWithRegionalInformation(\n metadata: OpenIdConfigResponse\n ): Promise {\n this.performanceClient?.addQueueMeasurement(\n PerformanceEvents.AuthorityUpdateMetadataWithRegionalInformation,\n this.correlationId\n );\n\n const userConfiguredAzureRegion =\n this.authorityOptions.azureRegionConfiguration?.azureRegion;\n\n if (userConfiguredAzureRegion) {\n if (\n userConfiguredAzureRegion !==\n Constants.AZURE_REGION_AUTO_DISCOVER_FLAG\n ) {\n this.regionDiscoveryMetadata.region_outcome =\n RegionDiscoveryOutcomes.CONFIGURED_NO_AUTO_DETECTION;\n this.regionDiscoveryMetadata.region_used =\n userConfiguredAzureRegion;\n return Authority.replaceWithRegionalInformation(\n metadata,\n userConfiguredAzureRegion\n );\n }\n\n const autodetectedRegionName = await invokeAsync(\n this.regionDiscovery.detectRegion.bind(this.regionDiscovery),\n PerformanceEvents.RegionDiscoveryDetectRegion,\n this.logger,\n this.performanceClient,\n this.correlationId\n )(\n this.authorityOptions.azureRegionConfiguration\n ?.environmentRegion,\n this.regionDiscoveryMetadata\n );\n\n if (autodetectedRegionName) {\n this.regionDiscoveryMetadata.region_outcome =\n RegionDiscoveryOutcomes.AUTO_DETECTION_REQUESTED_SUCCESSFUL;\n this.regionDiscoveryMetadata.region_used =\n autodetectedRegionName;\n return Authority.replaceWithRegionalInformation(\n metadata,\n autodetectedRegionName\n );\n }\n\n this.regionDiscoveryMetadata.region_outcome =\n RegionDiscoveryOutcomes.AUTO_DETECTION_REQUESTED_FAILED;\n }\n\n return metadata;\n }\n\n /**\n * Updates the AuthorityMetadataEntity with new aliases, preferred_network and preferred_cache\n * and returns where the information was retrieved from\n * @param metadataEntity\n * @returns AuthorityMetadataSource\n */\n private async updateCloudDiscoveryMetadata(\n metadataEntity: AuthorityMetadataEntity\n ): Promise {\n this.performanceClient?.addQueueMeasurement(\n PerformanceEvents.AuthorityUpdateCloudDiscoveryMetadata,\n this.correlationId\n );\n const localMetadataSource =\n this.updateCloudDiscoveryMetadataFromLocalSources(metadataEntity);\n if (localMetadataSource) {\n return localMetadataSource;\n }\n\n // Fallback to network as metadata source\n const metadata = await invokeAsync(\n this.getCloudDiscoveryMetadataFromNetwork.bind(this),\n PerformanceEvents.AuthorityGetCloudDiscoveryMetadataFromNetwork,\n this.logger,\n this.performanceClient,\n this.correlationId\n )();\n\n if (metadata) {\n CacheHelpers.updateCloudDiscoveryMetadata(\n metadataEntity,\n metadata,\n true\n );\n return AuthorityMetadataSource.NETWORK;\n }\n\n // Metadata could not be obtained from the config, cache, network or hardcoded values\n throw createClientConfigurationError(\n ClientConfigurationErrorCodes.untrustedAuthority\n );\n }\n\n private updateCloudDiscoveryMetadataFromLocalSources(\n metadataEntity: AuthorityMetadataEntity\n ): AuthorityMetadataSource | null {\n this.logger.verbose(\n \"Attempting to get cloud discovery metadata from authority configuration\"\n );\n this.logger.verbosePii(\n `Known Authorities: ${\n this.authorityOptions.knownAuthorities ||\n Constants.NOT_APPLICABLE\n }`\n );\n this.logger.verbosePii(\n `Authority Metadata: ${\n this.authorityOptions.authorityMetadata ||\n Constants.NOT_APPLICABLE\n }`\n );\n this.logger.verbosePii(\n `Canonical Authority: ${\n metadataEntity.canonical_authority || Constants.NOT_APPLICABLE\n }`\n );\n const metadata = this.getCloudDiscoveryMetadataFromConfig();\n if (metadata) {\n this.logger.verbose(\n \"Found cloud discovery metadata in authority configuration\"\n );\n CacheHelpers.updateCloudDiscoveryMetadata(\n metadataEntity,\n metadata,\n false\n );\n return AuthorityMetadataSource.CONFIG;\n }\n\n // If the cached metadata came from config but that config was not passed to this instance, we must go to hardcoded values\n this.logger.verbose(\n \"Did not find cloud discovery metadata in the config... Attempting to get cloud discovery metadata from the hardcoded values.\"\n );\n\n if (this.options.skipAuthorityMetadataCache) {\n this.logger.verbose(\n \"Skipping hardcoded cloud discovery metadata cache since skipAuthorityMetadataCache is set to true. Attempting to get cloud discovery metadata from the network metadata cache.\"\n );\n } else {\n const hardcodedMetadata =\n getCloudDiscoveryMetadataFromHardcodedValues(\n this.hostnameAndPort\n );\n if (hardcodedMetadata) {\n this.logger.verbose(\n \"Found cloud discovery metadata from hardcoded values.\"\n );\n CacheHelpers.updateCloudDiscoveryMetadata(\n metadataEntity,\n hardcodedMetadata,\n false\n );\n return AuthorityMetadataSource.HARDCODED_VALUES;\n }\n\n this.logger.verbose(\n \"Did not find cloud discovery metadata in hardcoded values... Attempting to get cloud discovery metadata from the network metadata cache.\"\n );\n }\n\n const metadataEntityExpired =\n CacheHelpers.isAuthorityMetadataExpired(metadataEntity);\n if (\n this.isAuthoritySameType(metadataEntity) &&\n metadataEntity.aliasesFromNetwork &&\n !metadataEntityExpired\n ) {\n this.logger.verbose(\"Found cloud discovery metadata in the cache.\");\n // No need to update\n return AuthorityMetadataSource.CACHE;\n } else if (metadataEntityExpired) {\n this.logger.verbose(\"The metadata entity is expired.\");\n }\n\n return null;\n }\n\n /**\n * Parse cloudDiscoveryMetadata config or check knownAuthorities\n */\n private getCloudDiscoveryMetadataFromConfig(): CloudDiscoveryMetadata | null {\n // CIAM does not support cloud discovery metadata\n if (this.authorityType === AuthorityType.Ciam) {\n this.logger.verbose(\n \"CIAM authorities do not support cloud discovery metadata, generate the aliases from authority host.\"\n );\n return Authority.createCloudDiscoveryMetadataFromHost(\n this.hostnameAndPort\n );\n }\n\n // Check if network response was provided in config\n if (this.authorityOptions.cloudDiscoveryMetadata) {\n this.logger.verbose(\n \"The cloud discovery metadata has been provided as a network response, in the config.\"\n );\n try {\n this.logger.verbose(\n \"Attempting to parse the cloud discovery metadata.\"\n );\n const parsedResponse = JSON.parse(\n this.authorityOptions.cloudDiscoveryMetadata\n ) as CloudInstanceDiscoveryResponse;\n const metadata = getCloudDiscoveryMetadataFromNetworkResponse(\n parsedResponse.metadata,\n this.hostnameAndPort\n );\n this.logger.verbose(\"Parsed the cloud discovery metadata.\");\n if (metadata) {\n this.logger.verbose(\n \"There is returnable metadata attached to the parsed cloud discovery metadata.\"\n );\n return metadata;\n } else {\n this.logger.verbose(\n \"There is no metadata attached to the parsed cloud discovery metadata.\"\n );\n }\n } catch (e) {\n this.logger.verbose(\n \"Unable to parse the cloud discovery metadata. Throwing Invalid Cloud Discovery Metadata Error.\"\n );\n throw createClientConfigurationError(\n ClientConfigurationErrorCodes.invalidCloudDiscoveryMetadata\n );\n }\n }\n\n // If cloudDiscoveryMetadata is empty or does not contain the host, check knownAuthorities\n if (this.isInKnownAuthorities()) {\n this.logger.verbose(\n \"The host is included in knownAuthorities. Creating new cloud discovery metadata from the host.\"\n );\n return Authority.createCloudDiscoveryMetadataFromHost(\n this.hostnameAndPort\n );\n }\n\n return null;\n }\n\n /**\n * Called to get metadata from network if CloudDiscoveryMetadata was not populated by config\n *\n * @param hasHardcodedMetadata boolean\n */\n private async getCloudDiscoveryMetadataFromNetwork(): Promise {\n this.performanceClient?.addQueueMeasurement(\n PerformanceEvents.AuthorityGetCloudDiscoveryMetadataFromNetwork,\n this.correlationId\n );\n const instanceDiscoveryEndpoint = `${Constants.AAD_INSTANCE_DISCOVERY_ENDPT}${this.canonicalAuthority}oauth2/v2.0/authorize`;\n const options: ImdsOptions = {};\n\n /*\n * TODO: Add a timeout if the authority exists in our library's\n * hardcoded list of metadata\n */\n\n let match = null;\n try {\n const response = await this.networkInterface.sendGetRequestAsync<\n | CloudInstanceDiscoveryResponse\n | CloudInstanceDiscoveryErrorResponse\n >(instanceDiscoveryEndpoint, options);\n let typedResponseBody:\n | CloudInstanceDiscoveryResponse\n | CloudInstanceDiscoveryErrorResponse;\n let metadata: Array;\n if (isCloudInstanceDiscoveryResponse(response.body)) {\n typedResponseBody =\n response.body as CloudInstanceDiscoveryResponse;\n metadata = typedResponseBody.metadata;\n\n this.logger.verbosePii(\n `tenant_discovery_endpoint is: ${typedResponseBody.tenant_discovery_endpoint}`\n );\n } else if (isCloudInstanceDiscoveryErrorResponse(response.body)) {\n this.logger.warning(\n `A CloudInstanceDiscoveryErrorResponse was returned. The cloud instance discovery network request's status code is: ${response.status}`\n );\n\n typedResponseBody =\n response.body as CloudInstanceDiscoveryErrorResponse;\n if (typedResponseBody.error === Constants.INVALID_INSTANCE) {\n this.logger.error(\n \"The CloudInstanceDiscoveryErrorResponse error is invalid_instance.\"\n );\n return null;\n }\n\n this.logger.warning(\n `The CloudInstanceDiscoveryErrorResponse error is ${typedResponseBody.error}`\n );\n this.logger.warning(\n `The CloudInstanceDiscoveryErrorResponse error description is ${typedResponseBody.error_description}`\n );\n\n this.logger.warning(\n \"Setting the value of the CloudInstanceDiscoveryMetadata (returned from the network) to []\"\n );\n metadata = [];\n } else {\n this.logger.error(\n \"AAD did not return a CloudInstanceDiscoveryResponse or CloudInstanceDiscoveryErrorResponse\"\n );\n return null;\n }\n\n this.logger.verbose(\n \"Attempting to find a match between the developer's authority and the CloudInstanceDiscoveryMetadata returned from the network request.\"\n );\n match = getCloudDiscoveryMetadataFromNetworkResponse(\n metadata,\n this.hostnameAndPort\n );\n } catch (error) {\n if (error instanceof AuthError) {\n this.logger.error(\n `There was a network error while attempting to get the cloud discovery instance metadata.\\nError: ${error.errorCode}\\nError Description: ${error.errorMessage}`\n );\n } else {\n const typedError = error as Error;\n this.logger.error(\n `A non-MSALJS error was thrown while attempting to get the cloud instance discovery metadata.\\nError: ${typedError.name}\\nError Description: ${typedError.message}`\n );\n }\n\n return null;\n }\n\n // Custom Domain scenario, host is trusted because Instance Discovery call succeeded\n if (!match) {\n this.logger.warning(\n \"The developer's authority was not found within the CloudInstanceDiscoveryMetadata returned from the network request.\"\n );\n this.logger.verbose(\n \"Creating custom Authority for custom domain scenario.\"\n );\n\n match = Authority.createCloudDiscoveryMetadataFromHost(\n this.hostnameAndPort\n );\n }\n return match;\n }\n\n /**\n * Helper function to determine if this host is included in the knownAuthorities config option\n */\n private isInKnownAuthorities(): boolean {\n const matches = this.authorityOptions.knownAuthorities.filter(\n (authority) => {\n return (\n authority &&\n UrlString.getDomainFromUrl(authority).toLowerCase() ===\n this.hostnameAndPort\n );\n }\n );\n return matches.length > 0;\n }\n\n /**\n * helper function to populate the authority based on azureCloudOptions\n * @param authorityString\n * @param azureCloudOptions\n */\n static generateAuthority(\n authorityString: string,\n azureCloudOptions?: AzureCloudOptions\n ): string {\n let authorityAzureCloudInstance;\n\n if (\n azureCloudOptions &&\n azureCloudOptions.azureCloudInstance !== AzureCloudInstance.None\n ) {\n const tenant = azureCloudOptions.tenant\n ? azureCloudOptions.tenant\n : Constants.DEFAULT_COMMON_TENANT;\n authorityAzureCloudInstance = `${azureCloudOptions.azureCloudInstance}/${tenant}/`;\n }\n\n return authorityAzureCloudInstance\n ? authorityAzureCloudInstance\n : authorityString;\n }\n\n /**\n * Creates cloud discovery metadata object from a given host\n * @param host\n */\n static createCloudDiscoveryMetadataFromHost(\n host: string\n ): CloudDiscoveryMetadata {\n return {\n preferred_network: host,\n preferred_cache: host,\n aliases: [host],\n };\n }\n\n /**\n * helper function to generate environment from authority object\n */\n getPreferredCache(): string {\n if (this.managedIdentity) {\n return Constants.DEFAULT_AUTHORITY_HOST;\n } else if (this.discoveryComplete()) {\n return this.metadata.preferred_cache;\n } else {\n throw createClientAuthError(\n ClientAuthErrorCodes.endpointResolutionError\n );\n }\n }\n\n /**\n * Returns whether or not the provided host is an alias of this authority instance\n * @param host\n */\n isAlias(host: string): boolean {\n return this.metadata.aliases.indexOf(host) > -1;\n }\n\n /**\n * Returns whether or not the provided host is an alias of a known Microsoft authority for purposes of endpoint discovery\n * @param host\n */\n isAliasOfKnownMicrosoftAuthority(host: string): boolean {\n return InstanceDiscoveryMetadataAliases.has(host);\n }\n\n /**\n * Checks whether the provided host is that of a public cloud authority\n *\n * @param authority string\n * @returns bool\n */\n static isPublicCloudAuthority(host: string): boolean {\n return Constants.KNOWN_PUBLIC_CLOUDS.indexOf(host) >= 0;\n }\n\n /**\n * Rebuild the authority string with the region\n *\n * @param host string\n * @param region string\n */\n static buildRegionalAuthorityString(\n host: string,\n region: string,\n queryString?: string\n ): string {\n // Create and validate a Url string object with the initial authority string\n const authorityUrlInstance = new UrlString(host);\n authorityUrlInstance.validateAsUri();\n\n const authorityUrlParts = authorityUrlInstance.getUrlComponents();\n\n let hostNameAndPort = `${region}.${authorityUrlParts.HostNameAndPort}`;\n\n if (this.isPublicCloudAuthority(authorityUrlParts.HostNameAndPort)) {\n hostNameAndPort = `${region}.${Constants.REGIONAL_AUTH_PUBLIC_CLOUD_SUFFIX}`;\n }\n\n // Include the query string portion of the url\n const url = UrlString.constructAuthorityUriFromObject({\n ...authorityUrlInstance.getUrlComponents(),\n HostNameAndPort: hostNameAndPort,\n }).urlString;\n\n // Add the query string if a query string was provided\n if (queryString) return `${url}?${queryString}`;\n\n return url;\n }\n\n /**\n * Replace the endpoints in the metadata object with their regional equivalents.\n *\n * @param metadata OpenIdConfigResponse\n * @param azureRegion string\n */\n static replaceWithRegionalInformation(\n metadata: OpenIdConfigResponse,\n azureRegion: string\n ): OpenIdConfigResponse {\n const regionalMetadata = { ...metadata };\n regionalMetadata.authorization_endpoint =\n Authority.buildRegionalAuthorityString(\n regionalMetadata.authorization_endpoint,\n azureRegion\n );\n\n regionalMetadata.token_endpoint =\n Authority.buildRegionalAuthorityString(\n regionalMetadata.token_endpoint,\n azureRegion\n );\n\n if (regionalMetadata.end_session_endpoint) {\n regionalMetadata.end_session_endpoint =\n Authority.buildRegionalAuthorityString(\n regionalMetadata.end_session_endpoint,\n azureRegion\n );\n }\n\n return regionalMetadata;\n }\n\n /**\n * Transform CIAM_AUTHORIY as per the below rules:\n * If no path segments found and it is a CIAM authority (hostname ends with .ciamlogin.com), then transform it\n *\n * NOTE: The transformation path should go away once STS supports CIAM with the format: `tenantIdorDomain.ciamlogin.com`\n * `ciamlogin.com` can also change in the future and we should accommodate the same\n *\n * @param authority\n */\n static transformCIAMAuthority(authority: string): string {\n let ciamAuthority = authority;\n const authorityUrl = new UrlString(authority);\n const authorityUrlComponents = authorityUrl.getUrlComponents();\n\n // check if transformation is needed\n if (\n authorityUrlComponents.PathSegments.length === 0 &&\n authorityUrlComponents.HostNameAndPort.endsWith(\n Constants.CIAM_AUTH_URL\n )\n ) {\n const tenantIdOrDomain =\n authorityUrlComponents.HostNameAndPort.split(\".\")[0];\n ciamAuthority = `${ciamAuthority}${tenantIdOrDomain}${Constants.AAD_TENANT_DOMAIN_SUFFIX}`;\n }\n\n return ciamAuthority;\n }\n}\n\n/**\n * Extract tenantId from authority\n */\nexport function getTenantFromAuthorityString(\n authority: string\n): string | undefined {\n const authorityUrl = new UrlString(authority);\n const authorityUrlComponents = authorityUrl.getUrlComponents();\n /**\n * For credential matching purposes, tenantId is the last path segment of the authority URL:\n * AAD Authority - domain/tenantId -> Credentials are cached with realm = tenantId\n * B2C Authority - domain/{tenantId}?/.../policy -> Credentials are cached with realm = policy\n * tenantId is downcased because B2C policies can have mixed case but tfp claim is downcased\n *\n * Note that we may not have any path segments in certain OIDC scenarios.\n */\n const tenantId =\n authorityUrlComponents.PathSegments.slice(-1)[0]?.toLowerCase();\n\n switch (tenantId) {\n case AADAuthorityConstants.COMMON:\n case AADAuthorityConstants.ORGANIZATIONS:\n case AADAuthorityConstants.CONSUMERS:\n return undefined;\n default:\n return tenantId;\n }\n}\n\nexport function formatAuthorityUri(authorityUri: string): string {\n return authorityUri.endsWith(Constants.FORWARD_SLASH)\n ? authorityUri\n : `${authorityUri}${Constants.FORWARD_SLASH}`;\n}\n\nexport function buildStaticAuthorityOptions(\n authOptions: Partial\n): StaticAuthorityOptions {\n const rawCloudDiscoveryMetadata = authOptions.cloudDiscoveryMetadata;\n let cloudDiscoveryMetadata: CloudInstanceDiscoveryResponse | undefined =\n undefined;\n if (rawCloudDiscoveryMetadata) {\n try {\n cloudDiscoveryMetadata = JSON.parse(rawCloudDiscoveryMetadata);\n } catch (e) {\n throw createClientConfigurationError(\n ClientConfigurationErrorCodes.invalidCloudDiscoveryMetadata\n );\n }\n }\n return {\n canonicalAuthority: authOptions.authority\n ? formatAuthorityUri(authOptions.authority)\n : undefined,\n knownAuthorities: authOptions.knownAuthorities,\n cloudDiscoveryMetadata: cloudDiscoveryMetadata,\n };\n}\n", "/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { Authority, formatAuthorityUri } from \"./Authority.js\";\nimport { INetworkModule } from \"../network/INetworkModule.js\";\nimport {\n createClientAuthError,\n ClientAuthErrorCodes,\n} from \"../error/ClientAuthError.js\";\nimport { ICacheManager } from \"../cache/interface/ICacheManager.js\";\nimport { AuthorityOptions } from \"./AuthorityOptions.js\";\nimport { Logger } from \"../logger/Logger.js\";\nimport { IPerformanceClient } from \"../telemetry/performance/IPerformanceClient.js\";\nimport { PerformanceEvents } from \"../telemetry/performance/PerformanceEvent.js\";\nimport { invokeAsync } from \"../utils/FunctionWrappers.js\";\n\n/**\n * Create an authority object of the correct type based on the url\n * Performs basic authority validation - checks to see if the authority is of a valid type (i.e. aad, b2c, adfs)\n *\n * Also performs endpoint discovery.\n *\n * @param authorityUri\n * @param networkClient\n * @param protocolMode\n * @internal\n */\nexport async function createDiscoveredInstance(\n authorityUri: string,\n networkClient: INetworkModule,\n cacheManager: ICacheManager,\n authorityOptions: AuthorityOptions,\n logger: Logger,\n correlationId: string,\n performanceClient?: IPerformanceClient\n): Promise {\n performanceClient?.addQueueMeasurement(\n PerformanceEvents.AuthorityFactoryCreateDiscoveredInstance,\n correlationId\n );\n const authorityUriFinal = Authority.transformCIAMAuthority(\n formatAuthorityUri(authorityUri)\n );\n\n // Initialize authority and perform discovery endpoint check.\n const acquireTokenAuthority: Authority = new Authority(\n authorityUriFinal,\n networkClient,\n cacheManager,\n authorityOptions,\n logger,\n correlationId,\n performanceClient\n );\n\n try {\n await invokeAsync(\n acquireTokenAuthority.resolveEndpointsAsync.bind(\n acquireTokenAuthority\n ),\n PerformanceEvents.AuthorityResolveEndpointsAsync,\n logger,\n performanceClient,\n correlationId\n )();\n return acquireTokenAuthority;\n } catch (e) {\n throw createClientAuthError(\n ClientAuthErrorCodes.endpointResolutionError\n );\n }\n}\n", "/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { AuthError } from \"./AuthError.js\";\n\n/**\n * Error thrown when there is an error with the server code, for example, unavailability.\n */\nexport class ServerError extends AuthError {\n /**\n * Server error number;\n */\n readonly errorNo?: string;\n\n /**\n * Http status number;\n */\n readonly status?: number;\n\n constructor(\n errorCode?: string,\n errorMessage?: string,\n subError?: string,\n errorNo?: string,\n status?: number\n ) {\n super(errorCode, errorMessage, subError);\n this.name = \"ServerError\";\n this.errorNo = errorNo;\n this.status = status;\n\n Object.setPrototypeOf(this, ServerError.prototype);\n }\n}\n", "/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { ShrOptions } from \"../crypto/SignedHttpRequest.js\";\nimport { BaseAuthRequest } from \"../request/BaseAuthRequest.js\";\nimport { AuthenticationScheme } from \"../utils/Constants.js\";\n\n/**\n * Type representing a unique request thumbprint.\n */\nexport type RequestThumbprint = {\n clientId: string;\n authority: string;\n scopes: Array;\n homeAccountIdentifier?: string;\n claims?: string;\n authenticationScheme?: AuthenticationScheme;\n resourceRequestMethod?: string;\n resourceRequestUri?: string;\n shrClaims?: string;\n sshKid?: string;\n shrOptions?: ShrOptions;\n embeddedClientId?: string;\n};\n\nexport function getRequestThumbprint(\n clientId: string,\n request: BaseAuthRequest,\n homeAccountId?: string\n): RequestThumbprint {\n return {\n clientId: clientId,\n authority: request.authority,\n scopes: request.scopes,\n homeAccountIdentifier: homeAccountId,\n claims: request.claims,\n authenticationScheme: request.authenticationScheme,\n resourceRequestMethod: request.resourceRequestMethod,\n resourceRequestUri: request.resourceRequestUri,\n shrClaims: request.shrClaims,\n sshKid: request.sshKid,\n embeddedClientId:\n request.embeddedClientId || request.tokenBodyParameters?.clientId,\n };\n}\n", "/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { NetworkResponse } from \"./NetworkResponse.js\";\nimport { ServerAuthorizationTokenResponse } from \"../response/ServerAuthorizationTokenResponse.js\";\nimport {\n HeaderNames,\n ThrottlingConstants,\n Constants,\n} from \"../utils/Constants.js\";\nimport { CacheManager } from \"../cache/CacheManager.js\";\nimport { ServerError } from \"../error/ServerError.js\";\nimport {\n getRequestThumbprint,\n RequestThumbprint,\n} from \"./RequestThumbprint.js\";\nimport { ThrottlingEntity } from \"../cache/entities/ThrottlingEntity.js\";\nimport { BaseAuthRequest } from \"../request/BaseAuthRequest.js\";\n\n/** @internal */\nexport class ThrottlingUtils {\n /**\n * Prepares a RequestThumbprint to be stored as a key.\n * @param thumbprint\n */\n static generateThrottlingStorageKey(thumbprint: RequestThumbprint): string {\n return `${ThrottlingConstants.THROTTLING_PREFIX}.${JSON.stringify(\n thumbprint\n )}`;\n }\n\n /**\n * Performs necessary throttling checks before a network request.\n * @param cacheManager\n * @param thumbprint\n */\n static preProcess(\n cacheManager: CacheManager,\n thumbprint: RequestThumbprint,\n correlationId: string\n ): void {\n const key = ThrottlingUtils.generateThrottlingStorageKey(thumbprint);\n const value = cacheManager.getThrottlingCache(key);\n\n if (value) {\n if (value.throttleTime < Date.now()) {\n cacheManager.removeItem(key, correlationId);\n return;\n }\n throw new ServerError(\n value.errorCodes?.join(\" \") || Constants.EMPTY_STRING,\n value.errorMessage,\n value.subError\n );\n }\n }\n\n /**\n * Performs necessary throttling checks after a network request.\n * @param cacheManager\n * @param thumbprint\n * @param response\n */\n static postProcess(\n cacheManager: CacheManager,\n thumbprint: RequestThumbprint,\n response: NetworkResponse,\n correlationId: string\n ): void {\n if (\n ThrottlingUtils.checkResponseStatus(response) ||\n ThrottlingUtils.checkResponseForRetryAfter(response)\n ) {\n const thumbprintValue: ThrottlingEntity = {\n throttleTime: ThrottlingUtils.calculateThrottleTime(\n parseInt(response.headers[HeaderNames.RETRY_AFTER])\n ),\n error: response.body.error,\n errorCodes: response.body.error_codes,\n errorMessage: response.body.error_description,\n subError: response.body.suberror,\n };\n cacheManager.setThrottlingCache(\n ThrottlingUtils.generateThrottlingStorageKey(thumbprint),\n thumbprintValue,\n correlationId\n );\n }\n }\n\n /**\n * Checks a NetworkResponse object's status codes against 429 or 5xx\n * @param response\n */\n static checkResponseStatus(\n response: NetworkResponse\n ): boolean {\n return (\n response.status === 429 ||\n (response.status >= 500 && response.status < 600)\n );\n }\n\n /**\n * Checks a NetworkResponse object's RetryAfter header\n * @param response\n */\n static checkResponseForRetryAfter(\n response: NetworkResponse\n ): boolean {\n if (response.headers) {\n return (\n response.headers.hasOwnProperty(HeaderNames.RETRY_AFTER) &&\n (response.status < 200 || response.status >= 300)\n );\n }\n return false;\n }\n\n /**\n * Calculates the Unix-time value for a throttle to expire given throttleTime in seconds.\n * @param throttleTime\n */\n static calculateThrottleTime(throttleTime: number): number {\n const time = throttleTime <= 0 ? 0 : throttleTime;\n\n const currentSeconds = Date.now() / 1000;\n return Math.floor(\n Math.min(\n currentSeconds +\n (time || ThrottlingConstants.DEFAULT_THROTTLE_TIME_SECONDS),\n currentSeconds +\n ThrottlingConstants.DEFAULT_MAX_THROTTLE_TIME_SECONDS\n ) * 1000\n );\n }\n\n static removeThrottle(\n cacheManager: CacheManager,\n clientId: string,\n request: BaseAuthRequest,\n homeAccountIdentifier?: string\n ): void {\n const thumbprint = getRequestThumbprint(\n clientId,\n request,\n homeAccountIdentifier\n );\n const key = this.generateThrottlingStorageKey(thumbprint);\n cacheManager.removeItem(key, request.correlationId);\n }\n}\n", "/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { AuthError } from \"./AuthError.js\";\n\n/**\n * Represents network related errors\n */\nexport class NetworkError extends AuthError {\n error: AuthError;\n httpStatus?: number;\n responseHeaders?: Record;\n\n constructor(\n error: AuthError,\n httpStatus?: number,\n responseHeaders?: Record\n ) {\n super(error.errorCode, error.errorMessage, error.subError);\n\n Object.setPrototypeOf(this, NetworkError.prototype);\n this.name = \"NetworkError\";\n this.error = error;\n this.httpStatus = httpStatus;\n this.responseHeaders = responseHeaders;\n }\n}\n\n/**\n * Creates NetworkError object for a failed network request\n * @param error - Error to be thrown back to the caller\n * @param httpStatus - Status code of the network request\n * @param responseHeaders - Response headers of the network request, when available\n * @returns NetworkError object\n */\nexport function createNetworkError(\n error: AuthError,\n httpStatus?: number,\n responseHeaders?: Record,\n additionalError?: Error\n): NetworkError {\n error.errorMessage = `${error.errorMessage}, additionalErrorInfo: error.name:${additionalError?.name}, error.message:${additionalError?.message}`;\n return new NetworkError(error, httpStatus, responseHeaders);\n}\n", "/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport {\n ClientConfiguration,\n buildClientConfiguration,\n CommonClientConfiguration,\n} from \"../config/ClientConfiguration.js\";\nimport {\n INetworkModule,\n NetworkRequestOptions,\n} from \"../network/INetworkModule.js\";\nimport { NetworkResponse } from \"../network/NetworkResponse.js\";\nimport { ICrypto } from \"../crypto/ICrypto.js\";\nimport { Authority } from \"../authority/Authority.js\";\nimport { Logger } from \"../logger/Logger.js\";\nimport { Constants, HeaderNames } from \"../utils/Constants.js\";\nimport { ServerAuthorizationTokenResponse } from \"../response/ServerAuthorizationTokenResponse.js\";\nimport { CacheManager } from \"../cache/CacheManager.js\";\nimport { ServerTelemetryManager } from \"../telemetry/server/ServerTelemetryManager.js\";\nimport { RequestThumbprint } from \"../network/RequestThumbprint.js\";\nimport { version, name } from \"../packageMetadata.js\";\nimport { CcsCredential, CcsCredentialType } from \"../account/CcsCredential.js\";\nimport { buildClientInfoFromHomeAccountId } from \"../account/ClientInfo.js\";\nimport { IPerformanceClient } from \"../telemetry/performance/IPerformanceClient.js\";\nimport * as RequestParameterBuilder from \"../request/RequestParameterBuilder.js\";\nimport * as UrlUtils from \"../utils/UrlUtils.js\";\nimport { BaseAuthRequest } from \"../request/BaseAuthRequest.js\";\nimport { createDiscoveredInstance } from \"../authority/AuthorityFactory.js\";\nimport { PerformanceEvents } from \"../telemetry/performance/PerformanceEvent.js\";\nimport { ThrottlingUtils } from \"../network/ThrottlingUtils.js\";\nimport { AuthError } from \"../error/AuthError.js\";\nimport {\n ClientAuthErrorCodes,\n createClientAuthError,\n} from \"../error/ClientAuthError.js\";\nimport { NetworkError } from \"../error/NetworkError.js\";\nimport { invokeAsync } from \"../utils/FunctionWrappers.js\";\n\n/**\n * Base application class which will construct requests to send to and handle responses from the Microsoft STS using the authorization code flow.\n * @internal\n */\nexport abstract class BaseClient {\n // Logger object\n public logger: Logger;\n\n // Application config\n protected config: CommonClientConfiguration;\n\n // Crypto Interface\n protected cryptoUtils: ICrypto;\n\n // Storage Interface\n protected cacheManager: CacheManager;\n\n // Network Interface\n protected networkClient: INetworkModule;\n\n // Server Telemetry Manager\n protected serverTelemetryManager: ServerTelemetryManager | null;\n\n // Default authority object\n public authority: Authority;\n\n // Performance telemetry client\n protected performanceClient?: IPerformanceClient;\n\n protected constructor(\n configuration: ClientConfiguration,\n performanceClient?: IPerformanceClient\n ) {\n // Set the configuration\n this.config = buildClientConfiguration(configuration);\n\n // Initialize the logger\n this.logger = new Logger(this.config.loggerOptions, name, version);\n\n // Initialize crypto\n this.cryptoUtils = this.config.cryptoInterface;\n\n // Initialize storage interface\n this.cacheManager = this.config.storageInterface;\n\n // Set the network interface\n this.networkClient = this.config.networkInterface;\n\n // Set TelemetryManager\n this.serverTelemetryManager = this.config.serverTelemetryManager;\n\n // set Authority\n this.authority = this.config.authOptions.authority;\n\n // set performance telemetry client\n this.performanceClient = performanceClient;\n }\n\n /**\n * Creates default headers for requests to token endpoint\n */\n protected createTokenRequestHeaders(\n ccsCred?: CcsCredential\n ): Record {\n const headers: Record = {};\n headers[HeaderNames.CONTENT_TYPE] = Constants.URL_FORM_CONTENT_TYPE;\n if (!this.config.systemOptions.preventCorsPreflight && ccsCred) {\n switch (ccsCred.type) {\n case CcsCredentialType.HOME_ACCOUNT_ID:\n try {\n const clientInfo = buildClientInfoFromHomeAccountId(\n ccsCred.credential\n );\n headers[\n HeaderNames.CCS_HEADER\n ] = `Oid:${clientInfo.uid}@${clientInfo.utid}`;\n } catch (e) {\n this.logger.verbose(\n \"Could not parse home account ID for CCS Header: \" +\n e\n );\n }\n break;\n case CcsCredentialType.UPN:\n headers[\n HeaderNames.CCS_HEADER\n ] = `UPN: ${ccsCred.credential}`;\n break;\n }\n }\n return headers;\n }\n\n /**\n * Http post to token endpoint\n * @param tokenEndpoint\n * @param queryString\n * @param headers\n * @param thumbprint\n */\n protected async executePostToTokenEndpoint(\n tokenEndpoint: string,\n queryString: string,\n headers: Record,\n thumbprint: RequestThumbprint,\n correlationId: string,\n queuedEvent?: string\n ): Promise> {\n if (queuedEvent) {\n this.performanceClient?.addQueueMeasurement(\n queuedEvent,\n correlationId\n );\n }\n\n const response =\n await this.sendPostRequest(\n thumbprint,\n tokenEndpoint,\n { body: queryString, headers: headers },\n correlationId\n );\n\n if (\n this.config.serverTelemetryManager &&\n response.status < 500 &&\n response.status !== 429\n ) {\n // Telemetry data successfully logged by server, clear Telemetry cache\n this.config.serverTelemetryManager.clearTelemetryCache();\n }\n\n return response;\n }\n\n /**\n * Wraps sendPostRequestAsync with necessary preflight and postflight logic\n * @param thumbprint - Request thumbprint for throttling\n * @param tokenEndpoint - Endpoint to make the POST to\n * @param options - Body and Headers to include on the POST request\n * @param correlationId - CorrelationId for telemetry\n */\n async sendPostRequest(\n thumbprint: RequestThumbprint,\n tokenEndpoint: string,\n options: NetworkRequestOptions,\n correlationId: string\n ): Promise> {\n ThrottlingUtils.preProcess(\n this.cacheManager,\n thumbprint,\n correlationId\n );\n\n let response;\n try {\n response = await invokeAsync(\n this.networkClient.sendPostRequestAsync.bind(\n this.networkClient\n ),\n PerformanceEvents.NetworkClientSendPostRequestAsync,\n this.logger,\n this.performanceClient,\n correlationId\n )(tokenEndpoint, options);\n const responseHeaders = response.headers || {};\n this.performanceClient?.addFields(\n {\n refreshTokenSize: response.body.refresh_token?.length || 0,\n httpVerToken:\n responseHeaders[HeaderNames.X_MS_HTTP_VERSION] || \"\",\n requestId:\n responseHeaders[HeaderNames.X_MS_REQUEST_ID] || \"\",\n },\n correlationId\n );\n } catch (e) {\n if (e instanceof NetworkError) {\n const responseHeaders = e.responseHeaders;\n if (responseHeaders) {\n this.performanceClient?.addFields(\n {\n httpVerToken:\n responseHeaders[\n HeaderNames.X_MS_HTTP_VERSION\n ] || \"\",\n requestId:\n responseHeaders[HeaderNames.X_MS_REQUEST_ID] ||\n \"\",\n contentTypeHeader:\n responseHeaders[HeaderNames.CONTENT_TYPE] ||\n undefined,\n contentLengthHeader:\n responseHeaders[HeaderNames.CONTENT_LENGTH] ||\n undefined,\n httpStatus: e.httpStatus,\n },\n correlationId\n );\n }\n throw e.error;\n }\n if (e instanceof AuthError) {\n throw e;\n } else {\n throw createClientAuthError(ClientAuthErrorCodes.networkError);\n }\n }\n\n ThrottlingUtils.postProcess(\n this.cacheManager,\n thumbprint,\n response,\n correlationId\n );\n\n return response;\n }\n\n /**\n * Updates the authority object of the client. Endpoint discovery must be completed.\n * @param updatedAuthority\n */\n async updateAuthority(\n cloudInstanceHostname: string,\n correlationId: string\n ): Promise {\n this.performanceClient?.addQueueMeasurement(\n PerformanceEvents.UpdateTokenEndpointAuthority,\n correlationId\n );\n const cloudInstanceAuthorityUri = `https://${cloudInstanceHostname}/${this.authority.tenant}/`;\n const cloudInstanceAuthority = await createDiscoveredInstance(\n cloudInstanceAuthorityUri,\n this.networkClient,\n this.cacheManager,\n this.authority.options,\n this.logger,\n correlationId,\n this.performanceClient\n );\n this.authority = cloudInstanceAuthority;\n }\n\n /**\n * Creates query string for the /token request\n * @param request\n */\n createTokenQueryParameters(request: BaseAuthRequest): string {\n const parameters = new Map();\n\n if (request.embeddedClientId) {\n RequestParameterBuilder.addBrokerParameters(\n parameters,\n this.config.authOptions.clientId,\n this.config.authOptions.redirectUri\n );\n }\n\n if (request.tokenQueryParameters) {\n RequestParameterBuilder.addExtraQueryParameters(\n parameters,\n request.tokenQueryParameters\n );\n }\n\n RequestParameterBuilder.addCorrelationId(\n parameters,\n request.correlationId\n );\n\n RequestParameterBuilder.instrumentBrokerParams(\n parameters,\n request.correlationId,\n this.performanceClient\n );\n return UrlUtils.mapToQueryString(parameters);\n }\n}\n", "/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\n// Codes defined by MSAL\nexport const noTokensFound = \"no_tokens_found\";\nexport const nativeAccountUnavailable = \"native_account_unavailable\";\nexport const refreshTokenExpired = \"refresh_token_expired\";\nexport const uxNotAllowed = \"ux_not_allowed\";\n\n// Codes potentially returned by server\nexport const interactionRequired = \"interaction_required\";\nexport const consentRequired = \"consent_required\";\nexport const loginRequired = \"login_required\";\nexport const badToken = \"bad_token\";\n", "/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { Constants } from \"../utils/Constants.js\";\nimport { AuthError } from \"./AuthError.js\";\nimport * as InteractionRequiredAuthErrorCodes from \"./InteractionRequiredAuthErrorCodes.js\";\nexport { InteractionRequiredAuthErrorCodes };\n\n/**\n * InteractionRequiredServerErrorMessage contains string constants used by error codes and messages returned by the server indicating interaction is required\n */\nexport const InteractionRequiredServerErrorMessage = [\n InteractionRequiredAuthErrorCodes.interactionRequired,\n InteractionRequiredAuthErrorCodes.consentRequired,\n InteractionRequiredAuthErrorCodes.loginRequired,\n InteractionRequiredAuthErrorCodes.badToken,\n InteractionRequiredAuthErrorCodes.uxNotAllowed,\n];\n\nexport const InteractionRequiredAuthSubErrorMessage = [\n \"message_only\",\n \"additional_action\",\n \"basic_action\",\n \"user_password_expired\",\n \"consent_required\",\n \"bad_token\",\n];\n\nconst InteractionRequiredAuthErrorMessages = {\n [InteractionRequiredAuthErrorCodes.noTokensFound]:\n \"No refresh token found in the cache. Please sign-in.\",\n [InteractionRequiredAuthErrorCodes.nativeAccountUnavailable]:\n \"The requested account is not available in the native broker. It may have been deleted or logged out. Please sign-in again using an interactive API.\",\n [InteractionRequiredAuthErrorCodes.refreshTokenExpired]:\n \"Refresh token has expired.\",\n [InteractionRequiredAuthErrorCodes.badToken]:\n \"Identity provider returned bad_token due to an expired or invalid refresh token. Please invoke an interactive API to resolve.\",\n [InteractionRequiredAuthErrorCodes.uxNotAllowed]:\n \"`canShowUI` flag in Edge was set to false. User interaction required on web page. Please invoke an interactive API to resolve.\",\n};\n\n/**\n * Interaction required errors defined by the SDK\n * @deprecated Use InteractionRequiredAuthErrorCodes instead\n */\nexport const InteractionRequiredAuthErrorMessage = {\n noTokensFoundError: {\n code: InteractionRequiredAuthErrorCodes.noTokensFound,\n desc: InteractionRequiredAuthErrorMessages[\n InteractionRequiredAuthErrorCodes.noTokensFound\n ],\n },\n native_account_unavailable: {\n code: InteractionRequiredAuthErrorCodes.nativeAccountUnavailable,\n desc: InteractionRequiredAuthErrorMessages[\n InteractionRequiredAuthErrorCodes.nativeAccountUnavailable\n ],\n },\n bad_token: {\n code: InteractionRequiredAuthErrorCodes.badToken,\n desc: InteractionRequiredAuthErrorMessages[\n InteractionRequiredAuthErrorCodes.badToken\n ],\n },\n};\n\n/**\n * Error thrown when user interaction is required.\n */\nexport class InteractionRequiredAuthError extends AuthError {\n /**\n * The time the error occured at\n */\n timestamp: string;\n\n /**\n * TraceId associated with the error\n */\n traceId: string;\n\n /**\n * https://github.com/AzureAD/microsoft-authentication-library-for-js/blob/dev/lib/msal-common/docs/claims-challenge.md\n *\n * A string with extra claims needed for the token request to succeed\n * web site: redirect the user to the authorization page and set the extra claims\n * web api: include the claims in the WWW-Authenticate header that are sent back to the client so that it knows to request a token with the extra claims\n * desktop application or browser context: include the claims when acquiring the token interactively\n * app to app context (client_credentials): include the claims in the AcquireTokenByClientCredential request\n */\n claims: string;\n\n /**\n * Server error number;\n */\n readonly errorNo?: string;\n\n constructor(\n errorCode?: string,\n errorMessage?: string,\n subError?: string,\n timestamp?: string,\n traceId?: string,\n correlationId?: string,\n claims?: string,\n errorNo?: string\n ) {\n super(errorCode, errorMessage, subError);\n Object.setPrototypeOf(this, InteractionRequiredAuthError.prototype);\n\n this.timestamp = timestamp || Constants.EMPTY_STRING;\n this.traceId = traceId || Constants.EMPTY_STRING;\n this.correlationId = correlationId || Constants.EMPTY_STRING;\n this.claims = claims || Constants.EMPTY_STRING;\n this.name = \"InteractionRequiredAuthError\";\n this.errorNo = errorNo;\n }\n}\n\n/**\n * Helper function used to determine if an error thrown by the server requires interaction to resolve\n * @param errorCode\n * @param errorString\n * @param subError\n */\nexport function isInteractionRequiredError(\n errorCode?: string,\n errorString?: string,\n subError?: string\n): boolean {\n const isInteractionRequiredErrorCode =\n !!errorCode &&\n InteractionRequiredServerErrorMessage.indexOf(errorCode) > -1;\n const isInteractionRequiredSubError =\n !!subError &&\n InteractionRequiredAuthSubErrorMessage.indexOf(subError) > -1;\n const isInteractionRequiredErrorDesc =\n !!errorString &&\n InteractionRequiredServerErrorMessage.some((irErrorCode) => {\n return errorString.indexOf(irErrorCode) > -1;\n });\n\n return (\n isInteractionRequiredErrorCode ||\n isInteractionRequiredErrorDesc ||\n isInteractionRequiredSubError\n );\n}\n\n/**\n * Creates an InteractionRequiredAuthError\n */\nexport function createInteractionRequiredAuthError(\n errorCode: string\n): InteractionRequiredAuthError {\n return new InteractionRequiredAuthError(\n errorCode,\n InteractionRequiredAuthErrorMessages[errorCode]\n );\n}\n", "/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { Constants } from \"./Constants.js\";\nimport { ICrypto } from \"../crypto/ICrypto.js\";\nimport {\n ClientAuthErrorCodes,\n createClientAuthError,\n} from \"../error/ClientAuthError.js\";\n\n/**\n * Type which defines the object that is stringified, encoded and sent in the state value.\n * Contains the following:\n * - id - unique identifier for this request\n * - ts - timestamp for the time the request was made. Used to ensure that token expiration is not calculated incorrectly.\n * - platformState - string value sent from the platform.\n */\nexport type LibraryStateObject = {\n id: string;\n meta?: Record;\n};\n\n/**\n * Type which defines the stringified and encoded object sent to the service in the authorize request.\n */\nexport type RequestStateObject = {\n userRequestState: string;\n libraryState: LibraryStateObject;\n};\n\n/**\n * Class which provides helpers for OAuth 2.0 protocol specific values\n */\nexport class ProtocolUtils {\n /**\n * Appends user state with random guid, or returns random guid.\n * @param userState\n * @param randomGuid\n */\n static setRequestState(\n cryptoObj: ICrypto,\n userState?: string,\n meta?: Record\n ): string {\n const libraryState = ProtocolUtils.generateLibraryState(\n cryptoObj,\n meta\n );\n return userState\n ? `${libraryState}${Constants.RESOURCE_DELIM}${userState}`\n : libraryState;\n }\n\n /**\n * Generates the state value used by the common library.\n * @param randomGuid\n * @param cryptoObj\n */\n static generateLibraryState(\n cryptoObj: ICrypto,\n meta?: Record\n ): string {\n if (!cryptoObj) {\n throw createClientAuthError(ClientAuthErrorCodes.noCryptoObject);\n }\n\n // Create a state object containing a unique id and the timestamp of the request creation\n const stateObj: LibraryStateObject = {\n id: cryptoObj.createNewGuid(),\n };\n\n if (meta) {\n stateObj.meta = meta;\n }\n\n const stateString = JSON.stringify(stateObj);\n\n return cryptoObj.base64Encode(stateString);\n }\n\n /**\n * Parses the state into the RequestStateObject, which contains the LibraryState info and the state passed by the user.\n * @param state\n * @param cryptoObj\n */\n static parseRequestState(\n cryptoObj: ICrypto,\n state: string\n ): RequestStateObject {\n if (!cryptoObj) {\n throw createClientAuthError(ClientAuthErrorCodes.noCryptoObject);\n }\n\n if (!state) {\n throw createClientAuthError(ClientAuthErrorCodes.invalidState);\n }\n\n try {\n // Split the state between library state and user passed state and decode them separately\n const splitState = state.split(Constants.RESOURCE_DELIM);\n const libraryState = splitState[0];\n const userState =\n splitState.length > 1\n ? splitState.slice(1).join(Constants.RESOURCE_DELIM)\n : Constants.EMPTY_STRING;\n const libraryStateString = cryptoObj.base64Decode(libraryState);\n const libraryStateObj = JSON.parse(\n libraryStateString\n ) as LibraryStateObject;\n return {\n userRequestState: userState || Constants.EMPTY_STRING,\n libraryState: libraryStateObj,\n };\n } catch (e) {\n throw createClientAuthError(ClientAuthErrorCodes.invalidState);\n }\n }\n}\n", "/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { ICrypto, SignedHttpRequestParameters } from \"./ICrypto.js\";\nimport * as TimeUtils from \"../utils/TimeUtils.js\";\nimport { UrlString } from \"../url/UrlString.js\";\nimport { IPerformanceClient } from \"../telemetry/performance/IPerformanceClient.js\";\nimport { PerformanceEvents } from \"../telemetry/performance/PerformanceEvent.js\";\nimport { invokeAsync } from \"../utils/FunctionWrappers.js\";\nimport { Logger } from \"../logger/Logger.js\";\n\n/**\n * See eSTS docs for more info.\n * - A kid element, with the value containing an RFC 7638-compliant JWK thumbprint that is base64 encoded.\n * - xms_ksl element, representing the storage location of the key's secret component on the client device. One of two values:\n * - sw: software storage\n * - uhw: hardware storage\n */\ntype ReqCnf = {\n kid: string;\n xms_ksl: KeyLocation;\n};\n\nexport type ReqCnfData = {\n kid: string;\n reqCnfString: string;\n};\n\nconst KeyLocation = {\n SW: \"sw\",\n UHW: \"uhw\",\n} as const;\nexport type KeyLocation = (typeof KeyLocation)[keyof typeof KeyLocation];\n\n/** @internal */\nexport class PopTokenGenerator {\n private cryptoUtils: ICrypto;\n private performanceClient?: IPerformanceClient;\n\n constructor(cryptoUtils: ICrypto, performanceClient?: IPerformanceClient) {\n this.cryptoUtils = cryptoUtils;\n this.performanceClient = performanceClient;\n }\n\n /**\n * Generates the req_cnf validated at the RP in the POP protocol for SHR parameters\n * and returns an object containing the keyid, the full req_cnf string and the req_cnf string hash\n * @param request\n * @returns\n */\n async generateCnf(\n request: SignedHttpRequestParameters,\n logger: Logger\n ): Promise {\n this.performanceClient?.addQueueMeasurement(\n PerformanceEvents.PopTokenGenerateCnf,\n request.correlationId\n );\n\n const reqCnf = await invokeAsync(\n this.generateKid.bind(this),\n PerformanceEvents.PopTokenGenerateCnf,\n logger,\n this.performanceClient,\n request.correlationId\n )(request);\n const reqCnfString: string = this.cryptoUtils.base64UrlEncode(\n JSON.stringify(reqCnf)\n );\n\n return {\n kid: reqCnf.kid,\n reqCnfString,\n };\n }\n\n /**\n * Generates key_id for a SHR token request\n * @param request\n * @returns\n */\n async generateKid(request: SignedHttpRequestParameters): Promise {\n this.performanceClient?.addQueueMeasurement(\n PerformanceEvents.PopTokenGenerateKid,\n request.correlationId\n );\n\n const kidThumbprint = await this.cryptoUtils.getPublicKeyThumbprint(\n request\n );\n\n return {\n kid: kidThumbprint,\n xms_ksl: KeyLocation.SW,\n };\n }\n\n /**\n * Signs the POP access_token with the local generated key-pair\n * @param accessToken\n * @param request\n * @returns\n */\n async signPopToken(\n accessToken: string,\n keyId: string,\n request: SignedHttpRequestParameters\n ): Promise {\n return this.signPayload(accessToken, keyId, request);\n }\n\n /**\n * Utility function to generate the signed JWT for an access_token\n * @param payload\n * @param kid\n * @param request\n * @param claims\n * @returns\n */\n async signPayload(\n payload: string,\n keyId: string,\n request: SignedHttpRequestParameters,\n claims?: object\n ): Promise {\n // Deconstruct request to extract SHR parameters\n const {\n resourceRequestMethod,\n resourceRequestUri,\n shrClaims,\n shrNonce,\n shrOptions,\n } = request;\n\n const resourceUrlString = resourceRequestUri\n ? new UrlString(resourceRequestUri)\n : undefined;\n const resourceUrlComponents = resourceUrlString?.getUrlComponents();\n return this.cryptoUtils.signJwt(\n {\n at: payload,\n ts: TimeUtils.nowSeconds(),\n m: resourceRequestMethod?.toUpperCase(),\n u: resourceUrlComponents?.HostNameAndPort,\n nonce: shrNonce || this.cryptoUtils.createNewGuid(),\n p: resourceUrlComponents?.AbsolutePath,\n q: resourceUrlComponents?.QueryString\n ? [[], resourceUrlComponents.QueryString]\n : undefined,\n client_claims: shrClaims || undefined,\n ...claims,\n },\n keyId,\n shrOptions,\n request.correlationId\n );\n }\n}\n", "/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { ISerializableTokenCache } from \"../interface/ISerializableTokenCache.js\";\n\n/**\n * This class instance helps track the memory changes facilitating\n * decisions to read from and write to the persistent cache\n */ export class TokenCacheContext {\n /**\n * boolean indicating cache change\n */\n hasChanged: boolean;\n /**\n * serializable token cache interface\n */\n cache: ISerializableTokenCache;\n\n constructor(tokenCache: ISerializableTokenCache, hasChanged: boolean) {\n this.cache = tokenCache;\n this.hasChanged = hasChanged;\n }\n\n /**\n * boolean which indicates the changes in cache\n */\n get cacheHasChanged(): boolean {\n return this.hasChanged;\n }\n\n /**\n * function to retrieve the token cache\n */\n get tokenCache(): ISerializableTokenCache {\n return this.cache;\n }\n}\n", "/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { ServerAuthorizationTokenResponse } from \"./ServerAuthorizationTokenResponse.js\";\nimport { ICrypto } from \"../crypto/ICrypto.js\";\nimport {\n ClientAuthErrorCodes,\n createClientAuthError,\n} from \"../error/ClientAuthError.js\";\nimport { Logger } from \"../logger/Logger.js\";\nimport { ServerError } from \"../error/ServerError.js\";\nimport { ScopeSet } from \"../request/ScopeSet.js\";\nimport { AuthenticationResult } from \"./AuthenticationResult.js\";\nimport { AccountEntity } from \"../cache/entities/AccountEntity.js\";\nimport { Authority } from \"../authority/Authority.js\";\nimport { IdTokenEntity } from \"../cache/entities/IdTokenEntity.js\";\nimport { AccessTokenEntity } from \"../cache/entities/AccessTokenEntity.js\";\nimport { RefreshTokenEntity } from \"../cache/entities/RefreshTokenEntity.js\";\nimport {\n InteractionRequiredAuthError,\n isInteractionRequiredError,\n} from \"../error/InteractionRequiredAuthError.js\";\nimport { CacheRecord } from \"../cache/entities/CacheRecord.js\";\nimport { CacheManager } from \"../cache/CacheManager.js\";\nimport { ProtocolUtils, RequestStateObject } from \"../utils/ProtocolUtils.js\";\nimport {\n AuthenticationScheme,\n Constants,\n THE_FAMILY_ID,\n HttpStatus,\n} from \"../utils/Constants.js\";\nimport { PopTokenGenerator } from \"../crypto/PopTokenGenerator.js\";\nimport { AppMetadataEntity } from \"../cache/entities/AppMetadataEntity.js\";\nimport { ICachePlugin } from \"../cache/interface/ICachePlugin.js\";\nimport { TokenCacheContext } from \"../cache/persistence/TokenCacheContext.js\";\nimport { ISerializableTokenCache } from \"../cache/interface/ISerializableTokenCache.js\";\nimport { AuthorizationCodePayload } from \"./AuthorizationCodePayload.js\";\nimport { BaseAuthRequest } from \"../request/BaseAuthRequest.js\";\nimport { IPerformanceClient } from \"../telemetry/performance/IPerformanceClient.js\";\nimport { PerformanceEvents } from \"../telemetry/performance/PerformanceEvent.js\";\nimport { checkMaxAge, extractTokenClaims } from \"../account/AuthToken.js\";\nimport {\n TokenClaims,\n getTenantIdFromIdTokenClaims,\n} from \"../account/TokenClaims.js\";\nimport {\n AccountInfo,\n buildTenantProfile,\n updateAccountTenantProfileData,\n} from \"../account/AccountInfo.js\";\nimport * as CacheHelpers from \"../cache/utils/CacheHelpers.js\";\nimport * as TimeUtils from \"../utils/TimeUtils.js\";\n\n/**\n * Class that handles response parsing.\n * @internal\n */\nexport class ResponseHandler {\n private clientId: string;\n private cacheStorage: CacheManager;\n private cryptoObj: ICrypto;\n private logger: Logger;\n private homeAccountIdentifier: string;\n private serializableCache: ISerializableTokenCache | null;\n private persistencePlugin: ICachePlugin | null;\n private performanceClient?: IPerformanceClient;\n\n constructor(\n clientId: string,\n cacheStorage: CacheManager,\n cryptoObj: ICrypto,\n logger: Logger,\n serializableCache: ISerializableTokenCache | null,\n persistencePlugin: ICachePlugin | null,\n performanceClient?: IPerformanceClient\n ) {\n this.clientId = clientId;\n this.cacheStorage = cacheStorage;\n this.cryptoObj = cryptoObj;\n this.logger = logger;\n this.serializableCache = serializableCache;\n this.persistencePlugin = persistencePlugin;\n this.performanceClient = performanceClient;\n }\n\n /**\n * Function which validates server authorization token response.\n * @param serverResponse\n * @param refreshAccessToken\n */\n validateTokenResponse(\n serverResponse: ServerAuthorizationTokenResponse,\n refreshAccessToken?: boolean\n ): void {\n // Check for error\n if (\n serverResponse.error ||\n serverResponse.error_description ||\n serverResponse.suberror\n ) {\n const errString = `Error(s): ${\n serverResponse.error_codes || Constants.NOT_AVAILABLE\n } - Timestamp: ${\n serverResponse.timestamp || Constants.NOT_AVAILABLE\n } - Description: ${\n serverResponse.error_description || Constants.NOT_AVAILABLE\n } - Correlation ID: ${\n serverResponse.correlation_id || Constants.NOT_AVAILABLE\n } - Trace ID: ${\n serverResponse.trace_id || Constants.NOT_AVAILABLE\n }`;\n const serverErrorNo = serverResponse.error_codes?.length\n ? serverResponse.error_codes[0]\n : undefined;\n const serverError = new ServerError(\n serverResponse.error,\n errString,\n serverResponse.suberror,\n serverErrorNo,\n serverResponse.status\n );\n\n // check if 500 error\n if (\n refreshAccessToken &&\n serverResponse.status &&\n serverResponse.status >= HttpStatus.SERVER_ERROR_RANGE_START &&\n serverResponse.status <= HttpStatus.SERVER_ERROR_RANGE_END\n ) {\n this.logger.warning(\n `executeTokenRequest:validateTokenResponse - AAD is currently unavailable and the access token is unable to be refreshed.\\n${serverError}`\n );\n\n // don't throw an exception, but alert the user via a log that the token was unable to be refreshed\n return;\n // check if 400 error\n } else if (\n refreshAccessToken &&\n serverResponse.status &&\n serverResponse.status >= HttpStatus.CLIENT_ERROR_RANGE_START &&\n serverResponse.status <= HttpStatus.CLIENT_ERROR_RANGE_END\n ) {\n this.logger.warning(\n `executeTokenRequest:validateTokenResponse - AAD is currently available but is unable to refresh the access token.\\n${serverError}`\n );\n\n // don't throw an exception, but alert the user via a log that the token was unable to be refreshed\n return;\n }\n\n if (\n isInteractionRequiredError(\n serverResponse.error,\n serverResponse.error_description,\n serverResponse.suberror\n )\n ) {\n throw new InteractionRequiredAuthError(\n serverResponse.error,\n serverResponse.error_description,\n serverResponse.suberror,\n serverResponse.timestamp || Constants.EMPTY_STRING,\n serverResponse.trace_id || Constants.EMPTY_STRING,\n serverResponse.correlation_id || Constants.EMPTY_STRING,\n serverResponse.claims || Constants.EMPTY_STRING,\n serverErrorNo\n );\n }\n\n throw serverError;\n }\n }\n\n /**\n * Returns a constructed token response based on given string. Also manages the cache updates and cleanups.\n * @param serverTokenResponse\n * @param authority\n */\n async handleServerTokenResponse(\n serverTokenResponse: ServerAuthorizationTokenResponse,\n authority: Authority,\n reqTimestamp: number,\n request: BaseAuthRequest,\n authCodePayload?: AuthorizationCodePayload,\n userAssertionHash?: string,\n handlingRefreshTokenResponse?: boolean,\n forceCacheRefreshTokenResponse?: boolean,\n serverRequestId?: string\n ): Promise {\n this.performanceClient?.addQueueMeasurement(\n PerformanceEvents.HandleServerTokenResponse,\n serverTokenResponse.correlation_id\n );\n\n // create an idToken object (not entity)\n let idTokenClaims: TokenClaims | undefined;\n if (serverTokenResponse.id_token) {\n idTokenClaims = extractTokenClaims(\n serverTokenResponse.id_token || Constants.EMPTY_STRING,\n this.cryptoObj.base64Decode\n );\n\n // token nonce check (TODO: Add a warning if no nonce is given?)\n if (authCodePayload && authCodePayload.nonce) {\n if (idTokenClaims.nonce !== authCodePayload.nonce) {\n throw createClientAuthError(\n ClientAuthErrorCodes.nonceMismatch\n );\n }\n }\n\n // token max_age check\n if (request.maxAge || request.maxAge === 0) {\n const authTime = idTokenClaims.auth_time;\n if (!authTime) {\n throw createClientAuthError(\n ClientAuthErrorCodes.authTimeNotFound\n );\n }\n\n checkMaxAge(authTime, request.maxAge);\n }\n }\n\n // generate homeAccountId\n this.homeAccountIdentifier = AccountEntity.generateHomeAccountId(\n serverTokenResponse.client_info || Constants.EMPTY_STRING,\n authority.authorityType,\n this.logger,\n this.cryptoObj,\n idTokenClaims\n );\n\n // save the response tokens\n let requestStateObj: RequestStateObject | undefined;\n if (!!authCodePayload && !!authCodePayload.state) {\n requestStateObj = ProtocolUtils.parseRequestState(\n this.cryptoObj,\n authCodePayload.state\n );\n }\n\n // Add keyId from request to serverTokenResponse if defined\n serverTokenResponse.key_id =\n serverTokenResponse.key_id || request.sshKid || undefined;\n\n const cacheRecord = this.generateCacheRecord(\n serverTokenResponse,\n authority,\n reqTimestamp,\n request,\n idTokenClaims,\n userAssertionHash,\n authCodePayload\n );\n let cacheContext;\n try {\n if (this.persistencePlugin && this.serializableCache) {\n this.logger.verbose(\n \"Persistence enabled, calling beforeCacheAccess\"\n );\n cacheContext = new TokenCacheContext(\n this.serializableCache,\n true\n );\n await this.persistencePlugin.beforeCacheAccess(cacheContext);\n }\n /*\n * When saving a refreshed tokens to the cache, it is expected that the account that was used is present in the cache.\n * If not present, we should return null, as it's the case that another application called removeAccount in between\n * the calls to getAllAccounts and acquireTokenSilent. We should not overwrite that removal, unless explicitly flagged by\n * the developer, as in the case of refresh token flow used in ADAL Node to MSAL Node migration.\n */\n if (\n handlingRefreshTokenResponse &&\n !forceCacheRefreshTokenResponse &&\n cacheRecord.account\n ) {\n const key = cacheRecord.account.generateAccountKey();\n const account = this.cacheStorage.getAccount(\n key,\n request.correlationId\n );\n if (!account) {\n this.logger.warning(\n \"Account used to refresh tokens not in persistence, refreshed tokens will not be stored in the cache\"\n );\n return await ResponseHandler.generateAuthenticationResult(\n this.cryptoObj,\n authority,\n cacheRecord,\n false,\n request,\n idTokenClaims,\n requestStateObj,\n undefined,\n serverRequestId\n );\n }\n }\n await this.cacheStorage.saveCacheRecord(\n cacheRecord,\n request.correlationId,\n request.storeInCache\n );\n } finally {\n if (\n this.persistencePlugin &&\n this.serializableCache &&\n cacheContext\n ) {\n this.logger.verbose(\n \"Persistence enabled, calling afterCacheAccess\"\n );\n await this.persistencePlugin.afterCacheAccess(cacheContext);\n }\n }\n\n return ResponseHandler.generateAuthenticationResult(\n this.cryptoObj,\n authority,\n cacheRecord,\n false,\n request,\n idTokenClaims,\n requestStateObj,\n serverTokenResponse,\n serverRequestId\n );\n }\n\n /**\n * Generates CacheRecord\n * @param serverTokenResponse\n * @param idTokenObj\n * @param authority\n */\n private generateCacheRecord(\n serverTokenResponse: ServerAuthorizationTokenResponse,\n authority: Authority,\n reqTimestamp: number,\n request: BaseAuthRequest,\n idTokenClaims?: TokenClaims,\n userAssertionHash?: string,\n authCodePayload?: AuthorizationCodePayload\n ): CacheRecord {\n const env = authority.getPreferredCache();\n if (!env) {\n throw createClientAuthError(\n ClientAuthErrorCodes.invalidCacheEnvironment\n );\n }\n\n const claimsTenantId = getTenantIdFromIdTokenClaims(idTokenClaims);\n\n // IdToken: non AAD scenarios can have empty realm\n let cachedIdToken: IdTokenEntity | undefined;\n let cachedAccount: AccountEntity | undefined;\n if (serverTokenResponse.id_token && !!idTokenClaims) {\n cachedIdToken = CacheHelpers.createIdTokenEntity(\n this.homeAccountIdentifier,\n env,\n serverTokenResponse.id_token,\n this.clientId,\n claimsTenantId || \"\"\n );\n\n cachedAccount = buildAccountToCache(\n this.cacheStorage,\n authority,\n this.homeAccountIdentifier,\n this.cryptoObj.base64Decode,\n request.correlationId,\n idTokenClaims,\n serverTokenResponse.client_info,\n env,\n claimsTenantId,\n authCodePayload,\n undefined, // nativeAccountId\n this.logger\n );\n }\n\n // AccessToken\n let cachedAccessToken: AccessTokenEntity | null = null;\n if (serverTokenResponse.access_token) {\n // If scopes not returned in server response, use request scopes\n const responseScopes = serverTokenResponse.scope\n ? ScopeSet.fromString(serverTokenResponse.scope)\n : new ScopeSet(request.scopes || []);\n\n /*\n * Use timestamp calculated before request\n * Server may return timestamps as strings, parse to numbers if so.\n */\n const expiresIn: number =\n (typeof serverTokenResponse.expires_in === \"string\"\n ? parseInt(serverTokenResponse.expires_in, 10)\n : serverTokenResponse.expires_in) || 0;\n const extExpiresIn: number =\n (typeof serverTokenResponse.ext_expires_in === \"string\"\n ? parseInt(serverTokenResponse.ext_expires_in, 10)\n : serverTokenResponse.ext_expires_in) || 0;\n const refreshIn: number | undefined =\n (typeof serverTokenResponse.refresh_in === \"string\"\n ? parseInt(serverTokenResponse.refresh_in, 10)\n : serverTokenResponse.refresh_in) || undefined;\n const tokenExpirationSeconds = reqTimestamp + expiresIn;\n const extendedTokenExpirationSeconds =\n tokenExpirationSeconds + extExpiresIn;\n const refreshOnSeconds =\n refreshIn && refreshIn > 0\n ? reqTimestamp + refreshIn\n : undefined;\n\n // non AAD scenarios can have empty realm\n cachedAccessToken = CacheHelpers.createAccessTokenEntity(\n this.homeAccountIdentifier,\n env,\n serverTokenResponse.access_token,\n this.clientId,\n claimsTenantId || authority.tenant || \"\",\n responseScopes.printScopes(),\n tokenExpirationSeconds,\n extendedTokenExpirationSeconds,\n this.cryptoObj.base64Decode,\n refreshOnSeconds,\n serverTokenResponse.token_type,\n userAssertionHash,\n serverTokenResponse.key_id,\n request.claims,\n request.requestedClaimsHash\n );\n }\n\n // refreshToken\n let cachedRefreshToken: RefreshTokenEntity | null = null;\n if (serverTokenResponse.refresh_token) {\n let rtExpiresOn: number | undefined;\n if (serverTokenResponse.refresh_token_expires_in) {\n const rtExpiresIn: number =\n typeof serverTokenResponse.refresh_token_expires_in ===\n \"string\"\n ? parseInt(\n serverTokenResponse.refresh_token_expires_in,\n 10\n )\n : serverTokenResponse.refresh_token_expires_in;\n rtExpiresOn = reqTimestamp + rtExpiresIn;\n }\n cachedRefreshToken = CacheHelpers.createRefreshTokenEntity(\n this.homeAccountIdentifier,\n env,\n serverTokenResponse.refresh_token,\n this.clientId,\n serverTokenResponse.foci,\n userAssertionHash,\n rtExpiresOn\n );\n }\n\n // appMetadata\n let cachedAppMetadata: AppMetadataEntity | null = null;\n if (serverTokenResponse.foci) {\n cachedAppMetadata = {\n clientId: this.clientId,\n environment: env,\n familyId: serverTokenResponse.foci,\n };\n }\n\n return {\n account: cachedAccount,\n idToken: cachedIdToken,\n accessToken: cachedAccessToken,\n refreshToken: cachedRefreshToken,\n appMetadata: cachedAppMetadata,\n };\n }\n\n /**\n * Creates an @AuthenticationResult from @CacheRecord , @IdToken , and a boolean that states whether or not the result is from cache.\n *\n * Optionally takes a state string that is set as-is in the response.\n *\n * @param cacheRecord\n * @param idTokenObj\n * @param fromTokenCache\n * @param stateString\n */\n static async generateAuthenticationResult(\n cryptoObj: ICrypto,\n authority: Authority,\n cacheRecord: CacheRecord,\n fromTokenCache: boolean,\n request: BaseAuthRequest,\n idTokenClaims?: TokenClaims,\n requestState?: RequestStateObject,\n serverTokenResponse?: ServerAuthorizationTokenResponse,\n requestId?: string\n ): Promise {\n let accessToken: string = Constants.EMPTY_STRING;\n let responseScopes: Array = [];\n let expiresOn: Date | null = null;\n let extExpiresOn: Date | undefined;\n let refreshOn: Date | undefined;\n let familyId: string = Constants.EMPTY_STRING;\n\n if (cacheRecord.accessToken) {\n /*\n * if the request object has `popKid` property, `signPopToken` will be set to false and\n * the token will be returned unsigned\n */\n if (\n cacheRecord.accessToken.tokenType ===\n AuthenticationScheme.POP &&\n !request.popKid\n ) {\n const popTokenGenerator: PopTokenGenerator =\n new PopTokenGenerator(cryptoObj);\n const { secret, keyId } = cacheRecord.accessToken;\n\n if (!keyId) {\n throw createClientAuthError(\n ClientAuthErrorCodes.keyIdMissing\n );\n }\n\n accessToken = await popTokenGenerator.signPopToken(\n secret,\n keyId,\n request\n );\n } else {\n accessToken = cacheRecord.accessToken.secret;\n }\n responseScopes = ScopeSet.fromString(\n cacheRecord.accessToken.target\n ).asArray();\n // Access token expiresOn cached in seconds, converting to Date for AuthenticationResult\n expiresOn = TimeUtils.toDateFromSeconds(\n cacheRecord.accessToken.expiresOn\n );\n extExpiresOn = TimeUtils.toDateFromSeconds(\n cacheRecord.accessToken.extendedExpiresOn\n );\n if (cacheRecord.accessToken.refreshOn) {\n refreshOn = TimeUtils.toDateFromSeconds(\n cacheRecord.accessToken.refreshOn\n );\n }\n }\n\n if (cacheRecord.appMetadata) {\n familyId =\n cacheRecord.appMetadata.familyId === THE_FAMILY_ID\n ? THE_FAMILY_ID\n : \"\";\n }\n const uid = idTokenClaims?.oid || idTokenClaims?.sub || \"\";\n const tid = idTokenClaims?.tid || \"\";\n\n // for hybrid + native bridge enablement, send back the native account Id\n if (serverTokenResponse?.spa_accountid && !!cacheRecord.account) {\n cacheRecord.account.nativeAccountId =\n serverTokenResponse?.spa_accountid;\n }\n\n const accountInfo: AccountInfo | null = cacheRecord.account\n ? updateAccountTenantProfileData(\n cacheRecord.account.getAccountInfo(),\n undefined, // tenantProfile optional\n idTokenClaims,\n cacheRecord.idToken?.secret\n )\n : null;\n\n return {\n authority: authority.canonicalAuthority,\n uniqueId: uid,\n tenantId: tid,\n scopes: responseScopes,\n account: accountInfo,\n idToken: cacheRecord?.idToken?.secret || \"\",\n idTokenClaims: idTokenClaims || {},\n accessToken: accessToken,\n fromCache: fromTokenCache,\n expiresOn: expiresOn,\n extExpiresOn: extExpiresOn,\n refreshOn: refreshOn,\n correlationId: request.correlationId,\n requestId: requestId || Constants.EMPTY_STRING,\n familyId: familyId,\n tokenType:\n cacheRecord.accessToken?.tokenType || Constants.EMPTY_STRING,\n state: requestState\n ? requestState.userRequestState\n : Constants.EMPTY_STRING,\n cloudGraphHostName:\n cacheRecord.account?.cloudGraphHostName ||\n Constants.EMPTY_STRING,\n msGraphHost:\n cacheRecord.account?.msGraphHost || Constants.EMPTY_STRING,\n code: serverTokenResponse?.spa_code,\n fromNativeBroker: false,\n };\n }\n}\n\nexport function buildAccountToCache(\n cacheStorage: CacheManager,\n authority: Authority,\n homeAccountId: string,\n base64Decode: (input: string) => string,\n correlationId: string,\n idTokenClaims?: TokenClaims,\n clientInfo?: string,\n environment?: string,\n claimsTenantId?: string | null,\n authCodePayload?: AuthorizationCodePayload,\n nativeAccountId?: string,\n logger?: Logger\n): AccountEntity {\n logger?.verbose(\"setCachedAccount called\");\n\n // Check if base account is already cached\n const accountKeys = cacheStorage.getAccountKeys();\n const baseAccountKey = accountKeys.find((accountKey: string) => {\n return accountKey.startsWith(homeAccountId);\n });\n\n let cachedAccount: AccountEntity | null = null;\n if (baseAccountKey) {\n cachedAccount = cacheStorage.getAccount(baseAccountKey, correlationId);\n }\n\n const baseAccount =\n cachedAccount ||\n AccountEntity.createAccount(\n {\n homeAccountId,\n idTokenClaims,\n clientInfo,\n environment,\n cloudGraphHostName: authCodePayload?.cloud_graph_host_name,\n msGraphHost: authCodePayload?.msgraph_host,\n nativeAccountId: nativeAccountId,\n },\n authority,\n base64Decode\n );\n\n const tenantProfiles = baseAccount.tenantProfiles || [];\n const tenantId = claimsTenantId || baseAccount.realm;\n if (\n tenantId &&\n !tenantProfiles.find((tenantProfile) => {\n return tenantProfile.tenantId === tenantId;\n })\n ) {\n const newTenantProfile = buildTenantProfile(\n homeAccountId,\n baseAccount.localAccountId,\n tenantId,\n idTokenClaims\n );\n tenantProfiles.push(newTenantProfile);\n }\n baseAccount.tenantProfiles = tenantProfiles;\n\n return baseAccount;\n}\n", "/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport {\n createClientConfigurationError,\n ClientConfigurationErrorCodes,\n} from \"../error/ClientConfigurationError.js\";\nimport { PromptValue, CodeChallengeMethodValues } from \"../utils/Constants.js\";\n\n/**\n * Validates server consumable params from the \"request\" objects\n */\nexport class RequestValidator {\n /**\n * Utility to check if the `redirectUri` in the request is a non-null value\n * @param redirectUri\n */\n static validateRedirectUri(redirectUri: string): void {\n if (!redirectUri) {\n throw createClientConfigurationError(\n ClientConfigurationErrorCodes.redirectUriEmpty\n );\n }\n }\n\n /**\n * Utility to validate prompt sent by the user in the request\n * @param prompt\n */\n static validatePrompt(prompt: string): void {\n const promptValues = [];\n\n for (const value in PromptValue) {\n promptValues.push(PromptValue[value]);\n }\n\n if (promptValues.indexOf(prompt) < 0) {\n throw createClientConfigurationError(\n ClientConfigurationErrorCodes.invalidPromptValue\n );\n }\n }\n\n static validateClaims(claims: string): void {\n try {\n JSON.parse(claims);\n } catch (e) {\n throw createClientConfigurationError(\n ClientConfigurationErrorCodes.invalidClaims\n );\n }\n }\n\n /**\n * Utility to validate code_challenge and code_challenge_method\n * @param codeChallenge\n * @param codeChallengeMethod\n */\n static validateCodeChallengeParams(\n codeChallenge: string,\n codeChallengeMethod: string\n ): void {\n if (!codeChallenge || !codeChallengeMethod) {\n throw createClientConfigurationError(\n ClientConfigurationErrorCodes.pkceParamsMissing\n );\n } else {\n this.validateCodeChallengeMethod(codeChallengeMethod);\n }\n }\n\n /**\n * Utility to validate code_challenge_method\n * @param codeChallengeMethod\n */\n static validateCodeChallengeMethod(codeChallengeMethod: string): void {\n if (\n [\n CodeChallengeMethodValues.PLAIN,\n CodeChallengeMethodValues.S256,\n ].indexOf(codeChallengeMethod) < 0\n ) {\n throw createClientConfigurationError(\n ClientConfigurationErrorCodes.invalidCodeChallengeMethod\n );\n }\n }\n}\n", "/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport {\n ClientAssertionCallback,\n ClientAssertionConfig,\n} from \"../account/ClientCredentials.js\";\n\nexport async function getClientAssertion(\n clientAssertion: string | ClientAssertionCallback,\n clientId: string,\n tokenEndpoint?: string\n): Promise {\n if (typeof clientAssertion === \"string\") {\n return clientAssertion;\n } else {\n const config: ClientAssertionConfig = {\n clientId: clientId,\n tokenEndpoint: tokenEndpoint,\n };\n return clientAssertion(config);\n }\n}\n", "/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { BaseClient } from \"./BaseClient.js\";\nimport { CommonAuthorizationCodeRequest } from \"../request/CommonAuthorizationCodeRequest.js\";\nimport { Authority } from \"../authority/Authority.js\";\nimport * as RequestParameterBuilder from \"../request/RequestParameterBuilder.js\";\nimport * as UrlUtils from \"../utils/UrlUtils.js\";\nimport {\n GrantType,\n AuthenticationScheme,\n Separators,\n HeaderNames,\n} from \"../utils/Constants.js\";\nimport * as AADServerParamKeys from \"../constants/AADServerParamKeys.js\";\nimport {\n ClientConfiguration,\n isOidcProtocolMode,\n} from \"../config/ClientConfiguration.js\";\nimport { ServerAuthorizationTokenResponse } from \"../response/ServerAuthorizationTokenResponse.js\";\nimport { NetworkResponse } from \"../network/NetworkResponse.js\";\nimport { ResponseHandler } from \"../response/ResponseHandler.js\";\nimport { AuthenticationResult } from \"../response/AuthenticationResult.js\";\nimport { StringUtils } from \"../utils/StringUtils.js\";\nimport {\n ClientAuthErrorCodes,\n createClientAuthError,\n} from \"../error/ClientAuthError.js\";\nimport { UrlString } from \"../url/UrlString.js\";\nimport { CommonEndSessionRequest } from \"../request/CommonEndSessionRequest.js\";\nimport { PopTokenGenerator } from \"../crypto/PopTokenGenerator.js\";\nimport { AuthorizationCodePayload } from \"../response/AuthorizationCodePayload.js\";\nimport * as TimeUtils from \"../utils/TimeUtils.js\";\nimport {\n buildClientInfoFromHomeAccountId,\n buildClientInfo,\n} from \"../account/ClientInfo.js\";\nimport { CcsCredentialType, CcsCredential } from \"../account/CcsCredential.js\";\nimport {\n createClientConfigurationError,\n ClientConfigurationErrorCodes,\n} from \"../error/ClientConfigurationError.js\";\nimport { RequestValidator } from \"../request/RequestValidator.js\";\nimport { IPerformanceClient } from \"../telemetry/performance/IPerformanceClient.js\";\nimport { PerformanceEvents } from \"../telemetry/performance/PerformanceEvent.js\";\nimport { invokeAsync } from \"../utils/FunctionWrappers.js\";\nimport { ClientAssertion } from \"../account/ClientCredentials.js\";\nimport { getClientAssertion } from \"../utils/ClientAssertionUtils.js\";\nimport { getRequestThumbprint } from \"../network/RequestThumbprint.js\";\n\n/**\n * Oauth2.0 Authorization Code client\n * @internal\n */\nexport class AuthorizationCodeClient extends BaseClient {\n // Flag to indicate if client is for hybrid spa auth code redemption\n protected includeRedirectUri: boolean = true;\n private oidcDefaultScopes;\n\n constructor(\n configuration: ClientConfiguration,\n performanceClient?: IPerformanceClient\n ) {\n super(configuration, performanceClient);\n this.oidcDefaultScopes =\n this.config.authOptions.authority.options.OIDCOptions?.defaultScopes;\n }\n\n /**\n * API to acquire a token in exchange of 'authorization_code` acquired by the user in the first leg of the\n * authorization_code_grant\n * @param request\n */\n async acquireToken(\n request: CommonAuthorizationCodeRequest,\n authCodePayload?: AuthorizationCodePayload\n ): Promise {\n this.performanceClient?.addQueueMeasurement(\n PerformanceEvents.AuthClientAcquireToken,\n request.correlationId\n );\n\n if (!request.code) {\n throw createClientAuthError(\n ClientAuthErrorCodes.requestCannotBeMade\n );\n }\n\n const reqTimestamp = TimeUtils.nowSeconds();\n const response = await invokeAsync(\n this.executeTokenRequest.bind(this),\n PerformanceEvents.AuthClientExecuteTokenRequest,\n this.logger,\n this.performanceClient,\n request.correlationId\n )(this.authority, request);\n\n // Retrieve requestId from response headers\n const requestId = response.headers?.[HeaderNames.X_MS_REQUEST_ID];\n\n const responseHandler = new ResponseHandler(\n this.config.authOptions.clientId,\n this.cacheManager,\n this.cryptoUtils,\n this.logger,\n this.config.serializableCache,\n this.config.persistencePlugin,\n this.performanceClient\n );\n\n // Validate response. This function throws a server error if an error is returned by the server.\n responseHandler.validateTokenResponse(response.body);\n\n return invokeAsync(\n responseHandler.handleServerTokenResponse.bind(responseHandler),\n PerformanceEvents.HandleServerTokenResponse,\n this.logger,\n this.performanceClient,\n request.correlationId\n )(\n response.body,\n this.authority,\n reqTimestamp,\n request,\n authCodePayload,\n undefined,\n undefined,\n undefined,\n requestId\n );\n }\n\n /**\n * Used to log out the current user, and redirect the user to the postLogoutRedirectUri.\n * Default behaviour is to redirect the user to `window.location.href`.\n * @param authorityUri\n */\n getLogoutUri(logoutRequest: CommonEndSessionRequest): string {\n // Throw error if logoutRequest is null/undefined\n if (!logoutRequest) {\n throw createClientConfigurationError(\n ClientConfigurationErrorCodes.logoutRequestEmpty\n );\n }\n const queryString = this.createLogoutUrlQueryString(logoutRequest);\n\n // Construct logout URI\n return UrlString.appendQueryString(\n this.authority.endSessionEndpoint,\n queryString\n );\n }\n\n /**\n * Executes POST request to token endpoint\n * @param authority\n * @param request\n */\n private async executeTokenRequest(\n authority: Authority,\n request: CommonAuthorizationCodeRequest\n ): Promise> {\n this.performanceClient?.addQueueMeasurement(\n PerformanceEvents.AuthClientExecuteTokenRequest,\n request.correlationId\n );\n\n const queryParametersString = this.createTokenQueryParameters(request);\n const endpoint = UrlString.appendQueryString(\n authority.tokenEndpoint,\n queryParametersString\n );\n\n const requestBody = await invokeAsync(\n this.createTokenRequestBody.bind(this),\n PerformanceEvents.AuthClientCreateTokenRequestBody,\n this.logger,\n this.performanceClient,\n request.correlationId\n )(request);\n\n let ccsCredential: CcsCredential | undefined = undefined;\n if (request.clientInfo) {\n try {\n const clientInfo = buildClientInfo(\n request.clientInfo,\n this.cryptoUtils.base64Decode\n );\n ccsCredential = {\n credential: `${clientInfo.uid}${Separators.CLIENT_INFO_SEPARATOR}${clientInfo.utid}`,\n type: CcsCredentialType.HOME_ACCOUNT_ID,\n };\n } catch (e) {\n this.logger.verbose(\n \"Could not parse client info for CCS Header: \" + e\n );\n }\n }\n const headers: Record = this.createTokenRequestHeaders(\n ccsCredential || request.ccsCredential\n );\n\n const thumbprint = getRequestThumbprint(\n this.config.authOptions.clientId,\n request\n );\n\n return invokeAsync(\n this.executePostToTokenEndpoint.bind(this),\n PerformanceEvents.AuthorizationCodeClientExecutePostToTokenEndpoint,\n this.logger,\n this.performanceClient,\n request.correlationId\n )(\n endpoint,\n requestBody,\n headers,\n thumbprint,\n request.correlationId,\n PerformanceEvents.AuthorizationCodeClientExecutePostToTokenEndpoint\n );\n }\n\n /**\n * Generates a map for all the params to be sent to the service\n * @param request\n */\n private async createTokenRequestBody(\n request: CommonAuthorizationCodeRequest\n ): Promise {\n this.performanceClient?.addQueueMeasurement(\n PerformanceEvents.AuthClientCreateTokenRequestBody,\n request.correlationId\n );\n\n const parameters = new Map();\n\n RequestParameterBuilder.addClientId(\n parameters,\n request.embeddedClientId ||\n request.tokenBodyParameters?.[AADServerParamKeys.CLIENT_ID] ||\n this.config.authOptions.clientId\n );\n\n /*\n * For hybrid spa flow, there will be a code but no verifier\n * In this scenario, don't include redirect uri as auth code will not be bound to redirect URI\n */\n if (!this.includeRedirectUri) {\n // Just validate\n RequestValidator.validateRedirectUri(request.redirectUri);\n } else {\n // Validate and include redirect uri\n RequestParameterBuilder.addRedirectUri(\n parameters,\n request.redirectUri\n );\n }\n\n // Add scope array, parameter builder will add default scopes and dedupe\n RequestParameterBuilder.addScopes(\n parameters,\n request.scopes,\n true,\n this.oidcDefaultScopes\n );\n\n // add code: user set, not validated\n RequestParameterBuilder.addAuthorizationCode(parameters, request.code);\n\n // Add library metadata\n RequestParameterBuilder.addLibraryInfo(\n parameters,\n this.config.libraryInfo\n );\n RequestParameterBuilder.addApplicationTelemetry(\n parameters,\n this.config.telemetry.application\n );\n RequestParameterBuilder.addThrottling(parameters);\n\n if (this.serverTelemetryManager && !isOidcProtocolMode(this.config)) {\n RequestParameterBuilder.addServerTelemetry(\n parameters,\n this.serverTelemetryManager\n );\n }\n\n // add code_verifier if passed\n if (request.codeVerifier) {\n RequestParameterBuilder.addCodeVerifier(\n parameters,\n request.codeVerifier\n );\n }\n\n if (this.config.clientCredentials.clientSecret) {\n RequestParameterBuilder.addClientSecret(\n parameters,\n this.config.clientCredentials.clientSecret\n );\n }\n\n if (this.config.clientCredentials.clientAssertion) {\n const clientAssertion: ClientAssertion =\n this.config.clientCredentials.clientAssertion;\n\n RequestParameterBuilder.addClientAssertion(\n parameters,\n await getClientAssertion(\n clientAssertion.assertion,\n this.config.authOptions.clientId,\n request.resourceRequestUri\n )\n );\n RequestParameterBuilder.addClientAssertionType(\n parameters,\n clientAssertion.assertionType\n );\n }\n\n RequestParameterBuilder.addGrantType(\n parameters,\n GrantType.AUTHORIZATION_CODE_GRANT\n );\n RequestParameterBuilder.addClientInfo(parameters);\n\n if (request.authenticationScheme === AuthenticationScheme.POP) {\n const popTokenGenerator = new PopTokenGenerator(\n this.cryptoUtils,\n this.performanceClient\n );\n\n let reqCnfData;\n if (!request.popKid) {\n const generatedReqCnfData = await invokeAsync(\n popTokenGenerator.generateCnf.bind(popTokenGenerator),\n PerformanceEvents.PopTokenGenerateCnf,\n this.logger,\n this.performanceClient,\n request.correlationId\n )(request, this.logger);\n reqCnfData = generatedReqCnfData.reqCnfString;\n } else {\n reqCnfData = this.cryptoUtils.encodeKid(request.popKid);\n }\n\n // SPA PoP requires full Base64Url encoded req_cnf string (unhashed)\n RequestParameterBuilder.addPopToken(parameters, reqCnfData);\n } else if (request.authenticationScheme === AuthenticationScheme.SSH) {\n if (request.sshJwk) {\n RequestParameterBuilder.addSshJwk(parameters, request.sshJwk);\n } else {\n throw createClientConfigurationError(\n ClientConfigurationErrorCodes.missingSshJwk\n );\n }\n }\n\n if (\n !StringUtils.isEmptyObj(request.claims) ||\n (this.config.authOptions.clientCapabilities &&\n this.config.authOptions.clientCapabilities.length > 0)\n ) {\n RequestParameterBuilder.addClaims(\n parameters,\n request.claims,\n this.config.authOptions.clientCapabilities\n );\n }\n\n let ccsCred: CcsCredential | undefined = undefined;\n if (request.clientInfo) {\n try {\n const clientInfo = buildClientInfo(\n request.clientInfo,\n this.cryptoUtils.base64Decode\n );\n ccsCred = {\n credential: `${clientInfo.uid}${Separators.CLIENT_INFO_SEPARATOR}${clientInfo.utid}`,\n type: CcsCredentialType.HOME_ACCOUNT_ID,\n };\n } catch (e) {\n this.logger.verbose(\n \"Could not parse client info for CCS Header: \" + e\n );\n }\n } else {\n ccsCred = request.ccsCredential;\n }\n\n // Adds these as parameters in the request instead of headers to prevent CORS preflight request\n if (this.config.systemOptions.preventCorsPreflight && ccsCred) {\n switch (ccsCred.type) {\n case CcsCredentialType.HOME_ACCOUNT_ID:\n try {\n const clientInfo = buildClientInfoFromHomeAccountId(\n ccsCred.credential\n );\n RequestParameterBuilder.addCcsOid(\n parameters,\n clientInfo\n );\n } catch (e) {\n this.logger.verbose(\n \"Could not parse home account ID for CCS Header: \" +\n e\n );\n }\n break;\n case CcsCredentialType.UPN:\n RequestParameterBuilder.addCcsUpn(\n parameters,\n ccsCred.credential\n );\n break;\n }\n }\n\n if (request.embeddedClientId) {\n RequestParameterBuilder.addBrokerParameters(\n parameters,\n this.config.authOptions.clientId,\n this.config.authOptions.redirectUri\n );\n }\n\n if (request.tokenBodyParameters) {\n RequestParameterBuilder.addExtraQueryParameters(\n parameters,\n request.tokenBodyParameters\n );\n }\n\n // Add hybrid spa parameters if not already provided\n if (\n request.enableSpaAuthorizationCode &&\n (!request.tokenBodyParameters ||\n !request.tokenBodyParameters[\n AADServerParamKeys.RETURN_SPA_CODE\n ])\n ) {\n RequestParameterBuilder.addExtraQueryParameters(parameters, {\n [AADServerParamKeys.RETURN_SPA_CODE]: \"1\",\n });\n }\n\n RequestParameterBuilder.instrumentBrokerParams(\n parameters,\n request.correlationId,\n this.performanceClient\n );\n return UrlUtils.mapToQueryString(parameters);\n }\n\n /**\n * This API validates the `EndSessionRequest` and creates a URL\n * @param request\n */\n private createLogoutUrlQueryString(\n request: CommonEndSessionRequest\n ): string {\n const parameters = new Map();\n\n if (request.postLogoutRedirectUri) {\n RequestParameterBuilder.addPostLogoutRedirectUri(\n parameters,\n request.postLogoutRedirectUri\n );\n }\n\n if (request.correlationId) {\n RequestParameterBuilder.addCorrelationId(\n parameters,\n request.correlationId\n );\n }\n\n if (request.idTokenHint) {\n RequestParameterBuilder.addIdTokenHint(\n parameters,\n request.idTokenHint\n );\n }\n\n if (request.state) {\n RequestParameterBuilder.addState(parameters, request.state);\n }\n\n if (request.logoutHint) {\n RequestParameterBuilder.addLogoutHint(\n parameters,\n request.logoutHint\n );\n }\n\n if (request.extraQueryParameters) {\n RequestParameterBuilder.addExtraQueryParameters(\n parameters,\n request.extraQueryParameters\n );\n }\n\n if (this.config.authOptions.instanceAware) {\n RequestParameterBuilder.addInstanceAware(parameters);\n }\n\n return UrlUtils.mapToQueryString(\n parameters,\n this.config.authOptions.encodeExtraQueryParams,\n request.extraQueryParameters\n );\n }\n}\n", "/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport {\n ClientConfiguration,\n isOidcProtocolMode,\n} from \"../config/ClientConfiguration.js\";\nimport { BaseClient } from \"./BaseClient.js\";\nimport { CommonRefreshTokenRequest } from \"../request/CommonRefreshTokenRequest.js\";\nimport { Authority } from \"../authority/Authority.js\";\nimport { ServerAuthorizationTokenResponse } from \"../response/ServerAuthorizationTokenResponse.js\";\nimport * as RequestParameterBuilder from \"../request/RequestParameterBuilder.js\";\nimport * as UrlUtils from \"../utils/UrlUtils.js\";\nimport {\n GrantType,\n AuthenticationScheme,\n Errors,\n HeaderNames,\n} from \"../utils/Constants.js\";\nimport * as AADServerParamKeys from \"../constants/AADServerParamKeys.js\";\nimport { ResponseHandler } from \"../response/ResponseHandler.js\";\nimport { AuthenticationResult } from \"../response/AuthenticationResult.js\";\nimport { PopTokenGenerator } from \"../crypto/PopTokenGenerator.js\";\nimport { StringUtils } from \"../utils/StringUtils.js\";\nimport { NetworkResponse } from \"../network/NetworkResponse.js\";\nimport { CommonSilentFlowRequest } from \"../request/CommonSilentFlowRequest.js\";\nimport {\n createClientConfigurationError,\n ClientConfigurationErrorCodes,\n} from \"../error/ClientConfigurationError.js\";\nimport {\n createClientAuthError,\n ClientAuthErrorCodes,\n} from \"../error/ClientAuthError.js\";\nimport { ServerError } from \"../error/ServerError.js\";\nimport * as TimeUtils from \"../utils/TimeUtils.js\";\nimport { UrlString } from \"../url/UrlString.js\";\nimport { CcsCredentialType } from \"../account/CcsCredential.js\";\nimport { buildClientInfoFromHomeAccountId } from \"../account/ClientInfo.js\";\nimport {\n InteractionRequiredAuthError,\n InteractionRequiredAuthErrorCodes,\n createInteractionRequiredAuthError,\n} from \"../error/InteractionRequiredAuthError.js\";\nimport { PerformanceEvents } from \"../telemetry/performance/PerformanceEvent.js\";\nimport { IPerformanceClient } from \"../telemetry/performance/IPerformanceClient.js\";\nimport { invoke, invokeAsync } from \"../utils/FunctionWrappers.js\";\nimport { generateCredentialKey } from \"../cache/utils/CacheHelpers.js\";\nimport { ClientAssertion } from \"../account/ClientCredentials.js\";\nimport { getClientAssertion } from \"../utils/ClientAssertionUtils.js\";\nimport { getRequestThumbprint } from \"../network/RequestThumbprint.js\";\n\nconst DEFAULT_REFRESH_TOKEN_EXPIRATION_OFFSET_SECONDS = 300; // 5 Minutes\n\n/**\n * OAuth2.0 refresh token client\n * @internal\n */\nexport class RefreshTokenClient extends BaseClient {\n constructor(\n configuration: ClientConfiguration,\n performanceClient?: IPerformanceClient\n ) {\n super(configuration, performanceClient);\n }\n public async acquireToken(\n request: CommonRefreshTokenRequest\n ): Promise {\n this.performanceClient?.addQueueMeasurement(\n PerformanceEvents.RefreshTokenClientAcquireToken,\n request.correlationId\n );\n\n const reqTimestamp = TimeUtils.nowSeconds();\n const response = await invokeAsync(\n this.executeTokenRequest.bind(this),\n PerformanceEvents.RefreshTokenClientExecuteTokenRequest,\n this.logger,\n this.performanceClient,\n request.correlationId\n )(request, this.authority);\n\n // Retrieve requestId from response headers\n const requestId = response.headers?.[HeaderNames.X_MS_REQUEST_ID];\n const responseHandler = new ResponseHandler(\n this.config.authOptions.clientId,\n this.cacheManager,\n this.cryptoUtils,\n this.logger,\n this.config.serializableCache,\n this.config.persistencePlugin\n );\n responseHandler.validateTokenResponse(response.body);\n\n return invokeAsync(\n responseHandler.handleServerTokenResponse.bind(responseHandler),\n PerformanceEvents.HandleServerTokenResponse,\n this.logger,\n this.performanceClient,\n request.correlationId\n )(\n response.body,\n this.authority,\n reqTimestamp,\n request,\n undefined,\n undefined,\n true,\n request.forceCache,\n requestId\n );\n }\n\n /**\n * Gets cached refresh token and attaches to request, then calls acquireToken API\n * @param request\n */\n public async acquireTokenByRefreshToken(\n request: CommonSilentFlowRequest\n ): Promise {\n // Cannot renew token if no request object is given.\n if (!request) {\n throw createClientConfigurationError(\n ClientConfigurationErrorCodes.tokenRequestEmpty\n );\n }\n\n this.performanceClient?.addQueueMeasurement(\n PerformanceEvents.RefreshTokenClientAcquireTokenByRefreshToken,\n request.correlationId\n );\n\n // We currently do not support silent flow for account === null use cases; This will be revisited for confidential flow usecases\n if (!request.account) {\n throw createClientAuthError(\n ClientAuthErrorCodes.noAccountInSilentRequest\n );\n }\n\n // try checking if FOCI is enabled for the given application\n const isFOCI = this.cacheManager.isAppMetadataFOCI(\n request.account.environment\n );\n\n // if the app is part of the family, retrive a Family refresh token if present and make a refreshTokenRequest\n if (isFOCI) {\n try {\n return await invokeAsync(\n this.acquireTokenWithCachedRefreshToken.bind(this),\n PerformanceEvents.RefreshTokenClientAcquireTokenWithCachedRefreshToken,\n this.logger,\n this.performanceClient,\n request.correlationId\n )(request, true);\n } catch (e) {\n const noFamilyRTInCache =\n e instanceof InteractionRequiredAuthError &&\n e.errorCode ===\n InteractionRequiredAuthErrorCodes.noTokensFound;\n const clientMismatchErrorWithFamilyRT =\n e instanceof ServerError &&\n e.errorCode === Errors.INVALID_GRANT_ERROR &&\n e.subError === Errors.CLIENT_MISMATCH_ERROR;\n\n // if family Refresh Token (FRT) cache acquisition fails or if client_mismatch error is seen with FRT, reattempt with application Refresh Token (ART)\n if (noFamilyRTInCache || clientMismatchErrorWithFamilyRT) {\n return invokeAsync(\n this.acquireTokenWithCachedRefreshToken.bind(this),\n PerformanceEvents.RefreshTokenClientAcquireTokenWithCachedRefreshToken,\n this.logger,\n this.performanceClient,\n request.correlationId\n )(request, false);\n // throw in all other cases\n } else {\n throw e;\n }\n }\n }\n // fall back to application refresh token acquisition\n return invokeAsync(\n this.acquireTokenWithCachedRefreshToken.bind(this),\n PerformanceEvents.RefreshTokenClientAcquireTokenWithCachedRefreshToken,\n this.logger,\n this.performanceClient,\n request.correlationId\n )(request, false);\n }\n\n /**\n * makes a network call to acquire tokens by exchanging RefreshToken available in userCache; throws if refresh token is not cached\n * @param request\n */\n private async acquireTokenWithCachedRefreshToken(\n request: CommonSilentFlowRequest,\n foci: boolean\n ) {\n this.performanceClient?.addQueueMeasurement(\n PerformanceEvents.RefreshTokenClientAcquireTokenWithCachedRefreshToken,\n request.correlationId\n );\n\n // fetches family RT or application RT based on FOCI value\n const refreshToken = invoke(\n this.cacheManager.getRefreshToken.bind(this.cacheManager),\n PerformanceEvents.CacheManagerGetRefreshToken,\n this.logger,\n this.performanceClient,\n request.correlationId\n )(\n request.account,\n foci,\n request.correlationId,\n undefined,\n this.performanceClient\n );\n\n if (!refreshToken) {\n throw createInteractionRequiredAuthError(\n InteractionRequiredAuthErrorCodes.noTokensFound\n );\n }\n\n if (\n refreshToken.expiresOn &&\n TimeUtils.isTokenExpired(\n refreshToken.expiresOn,\n request.refreshTokenExpirationOffsetSeconds ||\n DEFAULT_REFRESH_TOKEN_EXPIRATION_OFFSET_SECONDS\n )\n ) {\n this.performanceClient?.addFields(\n { rtExpiresOnMs: Number(refreshToken.expiresOn) },\n request.correlationId\n );\n throw createInteractionRequiredAuthError(\n InteractionRequiredAuthErrorCodes.refreshTokenExpired\n );\n }\n // attach cached RT size to the current measurement\n\n const refreshTokenRequest: CommonRefreshTokenRequest = {\n ...request,\n refreshToken: refreshToken.secret,\n authenticationScheme:\n request.authenticationScheme || AuthenticationScheme.BEARER,\n ccsCredential: {\n credential: request.account.homeAccountId,\n type: CcsCredentialType.HOME_ACCOUNT_ID,\n },\n };\n\n try {\n return await invokeAsync(\n this.acquireToken.bind(this),\n PerformanceEvents.RefreshTokenClientAcquireToken,\n this.logger,\n this.performanceClient,\n request.correlationId\n )(refreshTokenRequest);\n } catch (e) {\n if (e instanceof InteractionRequiredAuthError) {\n this.performanceClient?.addFields(\n { rtExpiresOnMs: Number(refreshToken.expiresOn) },\n request.correlationId\n );\n\n if (e.subError === InteractionRequiredAuthErrorCodes.badToken) {\n // Remove bad refresh token from cache\n this.logger.verbose(\n \"acquireTokenWithRefreshToken: bad refresh token, removing from cache\"\n );\n const badRefreshTokenKey =\n generateCredentialKey(refreshToken);\n this.cacheManager.removeRefreshToken(\n badRefreshTokenKey,\n request.correlationId\n );\n }\n }\n\n throw e;\n }\n }\n\n /**\n * Constructs the network message and makes a NW call to the underlying secure token service\n * @param request\n * @param authority\n */\n private async executeTokenRequest(\n request: CommonRefreshTokenRequest,\n authority: Authority\n ): Promise> {\n this.performanceClient?.addQueueMeasurement(\n PerformanceEvents.RefreshTokenClientExecuteTokenRequest,\n request.correlationId\n );\n\n const queryParametersString = this.createTokenQueryParameters(request);\n const endpoint = UrlString.appendQueryString(\n authority.tokenEndpoint,\n queryParametersString\n );\n\n const requestBody = await invokeAsync(\n this.createTokenRequestBody.bind(this),\n PerformanceEvents.RefreshTokenClientCreateTokenRequestBody,\n this.logger,\n this.performanceClient,\n request.correlationId\n )(request);\n const headers: Record = this.createTokenRequestHeaders(\n request.ccsCredential\n );\n\n const thumbprint = getRequestThumbprint(\n this.config.authOptions.clientId,\n request\n );\n\n return invokeAsync(\n this.executePostToTokenEndpoint.bind(this),\n PerformanceEvents.RefreshTokenClientExecutePostToTokenEndpoint,\n this.logger,\n this.performanceClient,\n request.correlationId\n )(\n endpoint,\n requestBody,\n headers,\n thumbprint,\n request.correlationId,\n PerformanceEvents.RefreshTokenClientExecutePostToTokenEndpoint\n );\n }\n\n /**\n * Helper function to create the token request body\n * @param request\n */\n private async createTokenRequestBody(\n request: CommonRefreshTokenRequest\n ): Promise {\n this.performanceClient?.addQueueMeasurement(\n PerformanceEvents.RefreshTokenClientCreateTokenRequestBody,\n request.correlationId\n );\n\n const parameters = new Map();\n\n RequestParameterBuilder.addClientId(\n parameters,\n request.embeddedClientId ||\n request.tokenBodyParameters?.[AADServerParamKeys.CLIENT_ID] ||\n this.config.authOptions.clientId\n );\n\n if (request.redirectUri) {\n RequestParameterBuilder.addRedirectUri(\n parameters,\n request.redirectUri\n );\n }\n\n RequestParameterBuilder.addScopes(\n parameters,\n request.scopes,\n true,\n this.config.authOptions.authority.options.OIDCOptions?.defaultScopes\n );\n\n RequestParameterBuilder.addGrantType(\n parameters,\n GrantType.REFRESH_TOKEN_GRANT\n );\n\n RequestParameterBuilder.addClientInfo(parameters);\n\n RequestParameterBuilder.addLibraryInfo(\n parameters,\n this.config.libraryInfo\n );\n RequestParameterBuilder.addApplicationTelemetry(\n parameters,\n this.config.telemetry.application\n );\n RequestParameterBuilder.addThrottling(parameters);\n\n if (this.serverTelemetryManager && !isOidcProtocolMode(this.config)) {\n RequestParameterBuilder.addServerTelemetry(\n parameters,\n this.serverTelemetryManager\n );\n }\n\n RequestParameterBuilder.addRefreshToken(\n parameters,\n request.refreshToken\n );\n\n if (this.config.clientCredentials.clientSecret) {\n RequestParameterBuilder.addClientSecret(\n parameters,\n this.config.clientCredentials.clientSecret\n );\n }\n\n if (this.config.clientCredentials.clientAssertion) {\n const clientAssertion: ClientAssertion =\n this.config.clientCredentials.clientAssertion;\n\n RequestParameterBuilder.addClientAssertion(\n parameters,\n await getClientAssertion(\n clientAssertion.assertion,\n this.config.authOptions.clientId,\n request.resourceRequestUri\n )\n );\n RequestParameterBuilder.addClientAssertionType(\n parameters,\n clientAssertion.assertionType\n );\n }\n\n if (request.authenticationScheme === AuthenticationScheme.POP) {\n const popTokenGenerator = new PopTokenGenerator(\n this.cryptoUtils,\n this.performanceClient\n );\n\n let reqCnfData;\n if (!request.popKid) {\n const generatedReqCnfData = await invokeAsync(\n popTokenGenerator.generateCnf.bind(popTokenGenerator),\n PerformanceEvents.PopTokenGenerateCnf,\n this.logger,\n this.performanceClient,\n request.correlationId\n )(request, this.logger);\n\n reqCnfData = generatedReqCnfData.reqCnfString;\n } else {\n reqCnfData = this.cryptoUtils.encodeKid(request.popKid);\n }\n\n // SPA PoP requires full Base64Url encoded req_cnf string (unhashed)\n RequestParameterBuilder.addPopToken(parameters, reqCnfData);\n } else if (request.authenticationScheme === AuthenticationScheme.SSH) {\n if (request.sshJwk) {\n RequestParameterBuilder.addSshJwk(parameters, request.sshJwk);\n } else {\n throw createClientConfigurationError(\n ClientConfigurationErrorCodes.missingSshJwk\n );\n }\n }\n\n if (\n !StringUtils.isEmptyObj(request.claims) ||\n (this.config.authOptions.clientCapabilities &&\n this.config.authOptions.clientCapabilities.length > 0)\n ) {\n RequestParameterBuilder.addClaims(\n parameters,\n request.claims,\n this.config.authOptions.clientCapabilities\n );\n }\n\n if (\n this.config.systemOptions.preventCorsPreflight &&\n request.ccsCredential\n ) {\n switch (request.ccsCredential.type) {\n case CcsCredentialType.HOME_ACCOUNT_ID:\n try {\n const clientInfo = buildClientInfoFromHomeAccountId(\n request.ccsCredential.credential\n );\n RequestParameterBuilder.addCcsOid(\n parameters,\n clientInfo\n );\n } catch (e) {\n this.logger.verbose(\n \"Could not parse home account ID for CCS Header: \" +\n e\n );\n }\n break;\n case CcsCredentialType.UPN:\n RequestParameterBuilder.addCcsUpn(\n parameters,\n request.ccsCredential.credential\n );\n break;\n }\n }\n\n if (request.embeddedClientId) {\n RequestParameterBuilder.addBrokerParameters(\n parameters,\n this.config.authOptions.clientId,\n this.config.authOptions.redirectUri\n );\n }\n\n if (request.tokenBodyParameters) {\n RequestParameterBuilder.addExtraQueryParameters(\n parameters,\n request.tokenBodyParameters\n );\n }\n\n RequestParameterBuilder.instrumentBrokerParams(\n parameters,\n request.correlationId,\n this.performanceClient\n );\n return UrlUtils.mapToQueryString(parameters);\n }\n}\n", "/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { BaseClient } from \"./BaseClient.js\";\nimport { ClientConfiguration } from \"../config/ClientConfiguration.js\";\nimport { CommonSilentFlowRequest } from \"../request/CommonSilentFlowRequest.js\";\nimport { AuthenticationResult } from \"../response/AuthenticationResult.js\";\nimport * as TimeUtils from \"../utils/TimeUtils.js\";\nimport {\n ClientAuthErrorCodes,\n createClientAuthError,\n} from \"../error/ClientAuthError.js\";\nimport { ResponseHandler } from \"../response/ResponseHandler.js\";\nimport { CacheRecord } from \"../cache/entities/CacheRecord.js\";\nimport { CacheOutcome } from \"../utils/Constants.js\";\nimport { IPerformanceClient } from \"../telemetry/performance/IPerformanceClient.js\";\nimport { StringUtils } from \"../utils/StringUtils.js\";\nimport { checkMaxAge, extractTokenClaims } from \"../account/AuthToken.js\";\nimport { TokenClaims } from \"../account/TokenClaims.js\";\nimport { PerformanceEvents } from \"../telemetry/performance/PerformanceEvent.js\";\nimport { invokeAsync } from \"../utils/FunctionWrappers.js\";\nimport { getTenantFromAuthorityString } from \"../authority/Authority.js\";\n\n/** @internal */\nexport class SilentFlowClient extends BaseClient {\n constructor(\n configuration: ClientConfiguration,\n performanceClient?: IPerformanceClient\n ) {\n super(configuration, performanceClient);\n }\n\n /**\n * Retrieves token from cache or throws an error if it must be refreshed.\n * @param request\n */\n async acquireCachedToken(\n request: CommonSilentFlowRequest\n ): Promise<[AuthenticationResult, CacheOutcome]> {\n this.performanceClient?.addQueueMeasurement(\n PerformanceEvents.SilentFlowClientAcquireCachedToken,\n request.correlationId\n );\n let lastCacheOutcome: CacheOutcome = CacheOutcome.NOT_APPLICABLE;\n\n if (\n request.forceRefresh ||\n (!this.config.cacheOptions.claimsBasedCachingEnabled &&\n !StringUtils.isEmptyObj(request.claims))\n ) {\n // Must refresh due to present force_refresh flag.\n this.setCacheOutcome(\n CacheOutcome.FORCE_REFRESH_OR_CLAIMS,\n request.correlationId\n );\n throw createClientAuthError(\n ClientAuthErrorCodes.tokenRefreshRequired\n );\n }\n\n // We currently do not support silent flow for account === null use cases; This will be revisited for confidential flow usecases\n if (!request.account) {\n throw createClientAuthError(\n ClientAuthErrorCodes.noAccountInSilentRequest\n );\n }\n\n const requestTenantId =\n request.account.tenantId ||\n getTenantFromAuthorityString(request.authority);\n const tokenKeys = this.cacheManager.getTokenKeys();\n const cachedAccessToken = this.cacheManager.getAccessToken(\n request.account,\n request,\n tokenKeys,\n requestTenantId\n );\n\n if (!cachedAccessToken) {\n // must refresh due to non-existent access_token\n this.setCacheOutcome(\n CacheOutcome.NO_CACHED_ACCESS_TOKEN,\n request.correlationId\n );\n throw createClientAuthError(\n ClientAuthErrorCodes.tokenRefreshRequired\n );\n } else if (\n TimeUtils.wasClockTurnedBack(cachedAccessToken.cachedAt) ||\n TimeUtils.isTokenExpired(\n cachedAccessToken.expiresOn,\n this.config.systemOptions.tokenRenewalOffsetSeconds\n )\n ) {\n // must refresh due to the expires_in value\n this.setCacheOutcome(\n CacheOutcome.CACHED_ACCESS_TOKEN_EXPIRED,\n request.correlationId\n );\n throw createClientAuthError(\n ClientAuthErrorCodes.tokenRefreshRequired\n );\n } else if (\n cachedAccessToken.refreshOn &&\n TimeUtils.isTokenExpired(cachedAccessToken.refreshOn, 0)\n ) {\n // must refresh (in the background) due to the refresh_in value\n lastCacheOutcome = CacheOutcome.PROACTIVELY_REFRESHED;\n\n // don't throw ClientAuthError.createRefreshRequiredError(), return cached token instead\n }\n\n const environment =\n request.authority || this.authority.getPreferredCache();\n const cacheRecord: CacheRecord = {\n account: this.cacheManager.readAccountFromCache(\n request.account,\n request.correlationId\n ),\n accessToken: cachedAccessToken,\n idToken: this.cacheManager.getIdToken(\n request.account,\n request.correlationId,\n tokenKeys,\n requestTenantId,\n this.performanceClient\n ),\n refreshToken: null,\n appMetadata:\n this.cacheManager.readAppMetadataFromCache(environment),\n };\n\n this.setCacheOutcome(lastCacheOutcome, request.correlationId);\n\n if (this.config.serverTelemetryManager) {\n this.config.serverTelemetryManager.incrementCacheHits();\n }\n\n return [\n await invokeAsync(\n this.generateResultFromCacheRecord.bind(this),\n PerformanceEvents.SilentFlowClientGenerateResultFromCacheRecord,\n this.logger,\n this.performanceClient,\n request.correlationId\n )(cacheRecord, request),\n lastCacheOutcome,\n ];\n }\n\n private setCacheOutcome(\n cacheOutcome: CacheOutcome,\n correlationId: string\n ): void {\n this.serverTelemetryManager?.setCacheOutcome(cacheOutcome);\n this.performanceClient?.addFields(\n {\n cacheOutcome: cacheOutcome,\n },\n correlationId\n );\n if (cacheOutcome !== CacheOutcome.NOT_APPLICABLE) {\n this.logger.info(\n `Token refresh is required due to cache outcome: ${cacheOutcome}`\n );\n }\n }\n\n /**\n * Helper function to build response object from the CacheRecord\n * @param cacheRecord\n */\n private async generateResultFromCacheRecord(\n cacheRecord: CacheRecord,\n request: CommonSilentFlowRequest\n ): Promise {\n this.performanceClient?.addQueueMeasurement(\n PerformanceEvents.SilentFlowClientGenerateResultFromCacheRecord,\n request.correlationId\n );\n let idTokenClaims: TokenClaims | undefined;\n if (cacheRecord.idToken) {\n idTokenClaims = extractTokenClaims(\n cacheRecord.idToken.secret,\n this.config.cryptoInterface.base64Decode\n );\n }\n\n // token max_age check\n if (request.maxAge || request.maxAge === 0) {\n const authTime = idTokenClaims?.auth_time;\n if (!authTime) {\n throw createClientAuthError(\n ClientAuthErrorCodes.authTimeNotFound\n );\n }\n\n checkMaxAge(authTime, request.maxAge);\n }\n\n return ResponseHandler.generateAuthenticationResult(\n this.cryptoUtils,\n this.authority,\n cacheRecord,\n true,\n request,\n idTokenClaims\n );\n }\n}\n", "/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { CommonAuthorizationUrlRequest } from \"../request/CommonAuthorizationUrlRequest.js\";\nimport * as RequestParameterBuilder from \"../request/RequestParameterBuilder.js\";\nimport { IPerformanceClient } from \"../telemetry/performance/IPerformanceClient.js\";\nimport * as AADServerParamKeys from \"../constants/AADServerParamKeys.js\";\nimport { AuthOptions } from \"../config/ClientConfiguration.js\";\nimport { PromptValue } from \"../utils/Constants.js\";\nimport { AccountInfo } from \"../account/AccountInfo.js\";\nimport { Logger } from \"../logger/Logger.js\";\nimport { buildClientInfoFromHomeAccountId } from \"../account/ClientInfo.js\";\nimport { Authority } from \"../authority/Authority.js\";\nimport { mapToQueryString } from \"../utils/UrlUtils.js\";\nimport { UrlString } from \"../url/UrlString.js\";\nimport { AuthorizationCodePayload } from \"../response/AuthorizationCodePayload.js\";\nimport { AuthorizeResponse } from \"../response/AuthorizeResponse.js\";\nimport {\n ClientAuthErrorCodes,\n createClientAuthError,\n} from \"../error/ClientAuthError.js\";\nimport {\n InteractionRequiredAuthError,\n isInteractionRequiredError,\n} from \"../error/InteractionRequiredAuthError.js\";\nimport { ServerError } from \"../error/ServerError.js\";\nimport { StringDict } from \"../utils/MsalTypes.js\";\n\n/**\n * Returns map of parameters that are applicable to all calls to /authorize whether using PKCE or EAR\n * @param config\n * @param request\n * @param logger\n * @param performanceClient\n * @returns\n */\nexport function getStandardAuthorizeRequestParameters(\n authOptions: AuthOptions,\n request: CommonAuthorizationUrlRequest,\n logger: Logger,\n performanceClient?: IPerformanceClient\n): Map {\n // generate the correlationId if not set by the user and add\n const correlationId = request.correlationId;\n\n const parameters = new Map();\n\n RequestParameterBuilder.addClientId(\n parameters,\n request.embeddedClientId ||\n request.extraQueryParameters?.[AADServerParamKeys.CLIENT_ID] ||\n authOptions.clientId\n );\n\n const requestScopes = [\n ...(request.scopes || []),\n ...(request.extraScopesToConsent || []),\n ];\n RequestParameterBuilder.addScopes(\n parameters,\n requestScopes,\n true,\n authOptions.authority.options.OIDCOptions?.defaultScopes\n );\n\n RequestParameterBuilder.addRedirectUri(parameters, request.redirectUri);\n\n RequestParameterBuilder.addCorrelationId(parameters, correlationId);\n\n // add response_mode. If not passed in it defaults to query.\n RequestParameterBuilder.addResponseMode(parameters, request.responseMode);\n\n // add client_info=1\n RequestParameterBuilder.addClientInfo(parameters);\n\n if (request.prompt) {\n RequestParameterBuilder.addPrompt(parameters, request.prompt);\n performanceClient?.addFields({ prompt: request.prompt }, correlationId);\n }\n\n if (request.domainHint) {\n RequestParameterBuilder.addDomainHint(parameters, request.domainHint);\n performanceClient?.addFields(\n { domainHintFromRequest: true },\n correlationId\n );\n }\n\n // Add sid or loginHint with preference for login_hint claim (in request) -> sid -> loginHint (upn/email) -> username of AccountInfo object\n if (request.prompt !== PromptValue.SELECT_ACCOUNT) {\n // AAD will throw if prompt=select_account is passed with an account hint\n if (request.sid && request.prompt === PromptValue.NONE) {\n // SessionID is only used in silent calls\n logger.verbose(\n \"createAuthCodeUrlQueryString: Prompt is none, adding sid from request\"\n );\n RequestParameterBuilder.addSid(parameters, request.sid);\n performanceClient?.addFields(\n { sidFromRequest: true },\n correlationId\n );\n } else if (request.account) {\n const accountSid = extractAccountSid(request.account);\n let accountLoginHintClaim = extractLoginHint(request.account);\n\n if (accountLoginHintClaim && request.domainHint) {\n logger.warning(\n `AuthorizationCodeClient.createAuthCodeUrlQueryString: \"domainHint\" param is set, skipping opaque \"login_hint\" claim. Please consider not passing domainHint`\n );\n accountLoginHintClaim = null;\n }\n\n // If login_hint claim is present, use it over sid/username\n if (accountLoginHintClaim) {\n logger.verbose(\n \"createAuthCodeUrlQueryString: login_hint claim present on account\"\n );\n RequestParameterBuilder.addLoginHint(\n parameters,\n accountLoginHintClaim\n );\n performanceClient?.addFields(\n { loginHintFromClaim: true },\n correlationId\n );\n try {\n const clientInfo = buildClientInfoFromHomeAccountId(\n request.account.homeAccountId\n );\n RequestParameterBuilder.addCcsOid(parameters, clientInfo);\n } catch (e) {\n logger.verbose(\n \"createAuthCodeUrlQueryString: Could not parse home account ID for CCS Header\"\n );\n }\n } else if (accountSid && request.prompt === PromptValue.NONE) {\n /*\n * If account and loginHint are provided, we will check account first for sid before adding loginHint\n * SessionId is only used in silent calls\n */\n logger.verbose(\n \"createAuthCodeUrlQueryString: Prompt is none, adding sid from account\"\n );\n RequestParameterBuilder.addSid(parameters, accountSid);\n performanceClient?.addFields(\n { sidFromClaim: true },\n correlationId\n );\n try {\n const clientInfo = buildClientInfoFromHomeAccountId(\n request.account.homeAccountId\n );\n RequestParameterBuilder.addCcsOid(parameters, clientInfo);\n } catch (e) {\n logger.verbose(\n \"createAuthCodeUrlQueryString: Could not parse home account ID for CCS Header\"\n );\n }\n } else if (request.loginHint) {\n logger.verbose(\n \"createAuthCodeUrlQueryString: Adding login_hint from request\"\n );\n RequestParameterBuilder.addLoginHint(\n parameters,\n request.loginHint\n );\n RequestParameterBuilder.addCcsUpn(\n parameters,\n request.loginHint\n );\n performanceClient?.addFields(\n { loginHintFromRequest: true },\n correlationId\n );\n } else if (request.account.username) {\n // Fallback to account username if provided\n logger.verbose(\n \"createAuthCodeUrlQueryString: Adding login_hint from account\"\n );\n RequestParameterBuilder.addLoginHint(\n parameters,\n request.account.username\n );\n performanceClient?.addFields(\n { loginHintFromUpn: true },\n correlationId\n );\n try {\n const clientInfo = buildClientInfoFromHomeAccountId(\n request.account.homeAccountId\n );\n RequestParameterBuilder.addCcsOid(parameters, clientInfo);\n } catch (e) {\n logger.verbose(\n \"createAuthCodeUrlQueryString: Could not parse home account ID for CCS Header\"\n );\n }\n }\n } else if (request.loginHint) {\n logger.verbose(\n \"createAuthCodeUrlQueryString: No account, adding login_hint from request\"\n );\n RequestParameterBuilder.addLoginHint(parameters, request.loginHint);\n RequestParameterBuilder.addCcsUpn(parameters, request.loginHint);\n performanceClient?.addFields(\n { loginHintFromRequest: true },\n correlationId\n );\n }\n } else {\n logger.verbose(\n \"createAuthCodeUrlQueryString: Prompt is select_account, ignoring account hints\"\n );\n }\n\n if (request.nonce) {\n RequestParameterBuilder.addNonce(parameters, request.nonce);\n }\n\n if (request.state) {\n RequestParameterBuilder.addState(parameters, request.state);\n }\n\n if (\n request.claims ||\n (authOptions.clientCapabilities &&\n authOptions.clientCapabilities.length > 0)\n ) {\n RequestParameterBuilder.addClaims(\n parameters,\n request.claims,\n authOptions.clientCapabilities\n );\n }\n\n if (request.embeddedClientId) {\n RequestParameterBuilder.addBrokerParameters(\n parameters,\n authOptions.clientId,\n authOptions.redirectUri\n );\n }\n\n // If extraQueryParameters includes instance_aware its value will be added when extraQueryParameters are added\n if (\n authOptions.instanceAware &&\n (!request.extraQueryParameters ||\n !Object.keys(request.extraQueryParameters).includes(\n AADServerParamKeys.INSTANCE_AWARE\n ))\n ) {\n RequestParameterBuilder.addInstanceAware(parameters);\n }\n\n return parameters;\n}\n\n/**\n * Returns authorize endpoint with given request parameters in the query string\n * @param authority\n * @param requestParameters\n * @returns\n */\nexport function getAuthorizeUrl(\n authority: Authority,\n requestParameters: Map,\n encodeParams?: boolean,\n extraQueryParameters?: StringDict | undefined\n): string {\n const queryString = mapToQueryString(\n requestParameters,\n encodeParams,\n extraQueryParameters\n );\n return UrlString.appendQueryString(\n authority.authorizationEndpoint,\n queryString\n );\n}\n\n/**\n * Handles the hash fragment response from public client code request. Returns a code response used by\n * the client to exchange for a token in acquireToken.\n * @param serverParams\n * @param cachedState\n */\nexport function getAuthorizationCodePayload(\n serverParams: AuthorizeResponse,\n cachedState: string\n): AuthorizationCodePayload {\n // Get code response\n validateAuthorizationResponse(serverParams, cachedState);\n\n // throw when there is no auth code in the response\n if (!serverParams.code) {\n throw createClientAuthError(\n ClientAuthErrorCodes.authorizationCodeMissingFromServerResponse\n );\n }\n\n return serverParams as AuthorizationCodePayload;\n}\n\n/**\n * Function which validates server authorization code response.\n * @param serverResponseHash\n * @param requestState\n */\nexport function validateAuthorizationResponse(\n serverResponse: AuthorizeResponse,\n requestState: string\n): void {\n if (!serverResponse.state || !requestState) {\n throw serverResponse.state\n ? createClientAuthError(\n ClientAuthErrorCodes.stateNotFound,\n \"Cached State\"\n )\n : createClientAuthError(\n ClientAuthErrorCodes.stateNotFound,\n \"Server State\"\n );\n }\n\n let decodedServerResponseState: string;\n let decodedRequestState: string;\n\n try {\n decodedServerResponseState = decodeURIComponent(serverResponse.state);\n } catch (e) {\n throw createClientAuthError(\n ClientAuthErrorCodes.invalidState,\n serverResponse.state\n );\n }\n\n try {\n decodedRequestState = decodeURIComponent(requestState);\n } catch (e) {\n throw createClientAuthError(\n ClientAuthErrorCodes.invalidState,\n serverResponse.state\n );\n }\n\n if (decodedServerResponseState !== decodedRequestState) {\n throw createClientAuthError(ClientAuthErrorCodes.stateMismatch);\n }\n\n // Check for error\n if (\n serverResponse.error ||\n serverResponse.error_description ||\n serverResponse.suberror\n ) {\n const serverErrorNo = parseServerErrorNo(serverResponse);\n if (\n isInteractionRequiredError(\n serverResponse.error,\n serverResponse.error_description,\n serverResponse.suberror\n )\n ) {\n throw new InteractionRequiredAuthError(\n serverResponse.error || \"\",\n serverResponse.error_description,\n serverResponse.suberror,\n serverResponse.timestamp || \"\",\n serverResponse.trace_id || \"\",\n serverResponse.correlation_id || \"\",\n serverResponse.claims || \"\",\n serverErrorNo\n );\n }\n\n throw new ServerError(\n serverResponse.error || \"\",\n serverResponse.error_description,\n serverResponse.suberror,\n serverErrorNo\n );\n }\n}\n\n/**\n * Get server error No from the error_uri\n * @param serverResponse\n * @returns\n */\nfunction parseServerErrorNo(\n serverResponse: AuthorizeResponse\n): string | undefined {\n const errorCodePrefix = \"code=\";\n const errorCodePrefixIndex =\n serverResponse.error_uri?.lastIndexOf(errorCodePrefix);\n return errorCodePrefixIndex && errorCodePrefixIndex >= 0\n ? serverResponse.error_uri?.substring(\n errorCodePrefixIndex + errorCodePrefix.length\n )\n : undefined;\n}\n\n/**\n * Helper to get sid from account. Returns null if idTokenClaims are not present or sid is not present.\n * @param account\n */\nfunction extractAccountSid(account: AccountInfo): string | null {\n return account.idTokenClaims?.sid || null;\n}\n\nfunction extractLoginHint(account: AccountInfo): string | null {\n return account.idTokenClaims?.login_hint || null;\n}\n", "/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport {\n SERVER_TELEM_CONSTANTS,\n Separators,\n CacheOutcome,\n Constants,\n RegionDiscoverySources,\n RegionDiscoveryOutcomes,\n} from \"../../utils/Constants.js\";\nimport { CacheManager } from \"../../cache/CacheManager.js\";\nimport { AuthError } from \"../../error/AuthError.js\";\nimport { ServerTelemetryRequest } from \"./ServerTelemetryRequest.js\";\nimport { ServerTelemetryEntity } from \"../../cache/entities/ServerTelemetryEntity.js\";\nimport { RegionDiscoveryMetadata } from \"../../authority/RegionDiscoveryMetadata.js\";\n\nconst skuGroupSeparator = \",\";\nconst skuValueSeparator = \"|\";\n\ntype SkuParams = {\n libraryName?: string;\n libraryVersion?: string;\n extensionName?: string;\n extensionVersion?: string;\n skus?: string;\n};\n\nfunction makeExtraSkuString(params: SkuParams): string {\n const {\n skus,\n libraryName,\n libraryVersion,\n extensionName,\n extensionVersion,\n } = params;\n const skuMap: Map = new Map([\n [0, [libraryName, libraryVersion]],\n [2, [extensionName, extensionVersion]],\n ]);\n let skuArr: string[] = [];\n\n if (skus?.length) {\n skuArr = skus.split(skuGroupSeparator);\n\n // Ignore invalid input sku param\n if (skuArr.length < 4) {\n return skus;\n }\n } else {\n skuArr = Array.from({ length: 4 }, () => skuValueSeparator);\n }\n\n skuMap.forEach((value, key) => {\n if (value.length === 2 && value[0]?.length && value[1]?.length) {\n setSku({\n skuArr,\n index: key,\n skuName: value[0],\n skuVersion: value[1],\n });\n }\n });\n\n return skuArr.join(skuGroupSeparator);\n}\n\nfunction setSku(params: {\n skuArr: string[];\n index: number;\n skuName: string;\n skuVersion: string;\n}): void {\n const { skuArr, index, skuName, skuVersion } = params;\n if (index >= skuArr.length) {\n return;\n }\n skuArr[index] = [skuName, skuVersion].join(skuValueSeparator);\n}\n\n/** @internal */\nexport class ServerTelemetryManager {\n private cacheManager: CacheManager;\n private apiId: number;\n private correlationId: string;\n private telemetryCacheKey: string;\n private wrapperSKU: String;\n private wrapperVer: String;\n private regionUsed: string | undefined;\n private regionSource: RegionDiscoverySources | undefined;\n private regionOutcome: RegionDiscoveryOutcomes | undefined;\n private cacheOutcome: CacheOutcome = CacheOutcome.NOT_APPLICABLE;\n\n constructor(\n telemetryRequest: ServerTelemetryRequest,\n cacheManager: CacheManager\n ) {\n this.cacheManager = cacheManager;\n this.apiId = telemetryRequest.apiId;\n this.correlationId = telemetryRequest.correlationId;\n this.wrapperSKU = telemetryRequest.wrapperSKU || Constants.EMPTY_STRING;\n this.wrapperVer = telemetryRequest.wrapperVer || Constants.EMPTY_STRING;\n\n this.telemetryCacheKey =\n SERVER_TELEM_CONSTANTS.CACHE_KEY +\n Separators.CACHE_KEY_SEPARATOR +\n telemetryRequest.clientId;\n }\n\n /**\n * API to add MSER Telemetry to request\n */\n generateCurrentRequestHeaderValue(): string {\n const request = `${this.apiId}${SERVER_TELEM_CONSTANTS.VALUE_SEPARATOR}${this.cacheOutcome}`;\n const platformFieldsArr = [this.wrapperSKU, this.wrapperVer];\n const nativeBrokerErrorCode = this.getNativeBrokerErrorCode();\n if (nativeBrokerErrorCode?.length) {\n platformFieldsArr.push(`broker_error=${nativeBrokerErrorCode}`);\n }\n const platformFields = platformFieldsArr.join(\n SERVER_TELEM_CONSTANTS.VALUE_SEPARATOR\n );\n const regionDiscoveryFields = this.getRegionDiscoveryFields();\n const requestWithRegionDiscoveryFields = [\n request,\n regionDiscoveryFields,\n ].join(SERVER_TELEM_CONSTANTS.VALUE_SEPARATOR);\n\n return [\n SERVER_TELEM_CONSTANTS.SCHEMA_VERSION,\n requestWithRegionDiscoveryFields,\n platformFields,\n ].join(SERVER_TELEM_CONSTANTS.CATEGORY_SEPARATOR);\n }\n\n /**\n * API to add MSER Telemetry for the last failed request\n */\n generateLastRequestHeaderValue(): string {\n const lastRequests = this.getLastRequests();\n\n const maxErrors = ServerTelemetryManager.maxErrorsToSend(lastRequests);\n const failedRequests = lastRequests.failedRequests\n .slice(0, 2 * maxErrors)\n .join(SERVER_TELEM_CONSTANTS.VALUE_SEPARATOR);\n const errors = lastRequests.errors\n .slice(0, maxErrors)\n .join(SERVER_TELEM_CONSTANTS.VALUE_SEPARATOR);\n const errorCount = lastRequests.errors.length;\n\n // Indicate whether this header contains all data or partial data\n const overflow =\n maxErrors < errorCount\n ? SERVER_TELEM_CONSTANTS.OVERFLOW_TRUE\n : SERVER_TELEM_CONSTANTS.OVERFLOW_FALSE;\n const platformFields = [errorCount, overflow].join(\n SERVER_TELEM_CONSTANTS.VALUE_SEPARATOR\n );\n\n return [\n SERVER_TELEM_CONSTANTS.SCHEMA_VERSION,\n lastRequests.cacheHits,\n failedRequests,\n errors,\n platformFields,\n ].join(SERVER_TELEM_CONSTANTS.CATEGORY_SEPARATOR);\n }\n\n /**\n * API to cache token failures for MSER data capture\n * @param error\n */\n cacheFailedRequest(error: unknown): void {\n const lastRequests = this.getLastRequests();\n if (\n lastRequests.errors.length >=\n SERVER_TELEM_CONSTANTS.MAX_CACHED_ERRORS\n ) {\n // Remove a cached error to make room, first in first out\n lastRequests.failedRequests.shift(); // apiId\n lastRequests.failedRequests.shift(); // correlationId\n lastRequests.errors.shift();\n }\n\n lastRequests.failedRequests.push(this.apiId, this.correlationId);\n\n if (error instanceof Error && !!error && error.toString()) {\n if (error instanceof AuthError) {\n if (error.subError) {\n lastRequests.errors.push(error.subError);\n } else if (error.errorCode) {\n lastRequests.errors.push(error.errorCode);\n } else {\n lastRequests.errors.push(error.toString());\n }\n } else {\n lastRequests.errors.push(error.toString());\n }\n } else {\n lastRequests.errors.push(SERVER_TELEM_CONSTANTS.UNKNOWN_ERROR);\n }\n\n this.cacheManager.setServerTelemetry(\n this.telemetryCacheKey,\n lastRequests,\n this.correlationId\n );\n\n return;\n }\n\n /**\n * Update server telemetry cache entry by incrementing cache hit counter\n */\n incrementCacheHits(): number {\n const lastRequests = this.getLastRequests();\n lastRequests.cacheHits += 1;\n\n this.cacheManager.setServerTelemetry(\n this.telemetryCacheKey,\n lastRequests,\n this.correlationId\n );\n return lastRequests.cacheHits;\n }\n\n /**\n * Get the server telemetry entity from cache or initialize a new one\n */\n getLastRequests(): ServerTelemetryEntity {\n const initialValue: ServerTelemetryEntity = {\n failedRequests: [],\n errors: [],\n cacheHits: 0,\n };\n const lastRequests = this.cacheManager.getServerTelemetry(\n this.telemetryCacheKey\n ) as ServerTelemetryEntity;\n\n return lastRequests || initialValue;\n }\n\n /**\n * Remove server telemetry cache entry\n */\n clearTelemetryCache(): void {\n const lastRequests = this.getLastRequests();\n const numErrorsFlushed =\n ServerTelemetryManager.maxErrorsToSend(lastRequests);\n const errorCount = lastRequests.errors.length;\n if (numErrorsFlushed === errorCount) {\n // All errors were sent on last request, clear Telemetry cache\n this.cacheManager.removeItem(\n this.telemetryCacheKey,\n this.correlationId\n );\n } else {\n // Partial data was flushed to server, construct a new telemetry cache item with errors that were not flushed\n const serverTelemEntity: ServerTelemetryEntity = {\n failedRequests: lastRequests.failedRequests.slice(\n numErrorsFlushed * 2\n ), // failedRequests contains 2 items for each error\n errors: lastRequests.errors.slice(numErrorsFlushed),\n cacheHits: 0,\n };\n\n this.cacheManager.setServerTelemetry(\n this.telemetryCacheKey,\n serverTelemEntity,\n this.correlationId\n );\n }\n }\n\n /**\n * Returns the maximum number of errors that can be flushed to the server in the next network request\n * @param serverTelemetryEntity\n */\n static maxErrorsToSend(\n serverTelemetryEntity: ServerTelemetryEntity\n ): number {\n let i;\n let maxErrors = 0;\n let dataSize = 0;\n const errorCount = serverTelemetryEntity.errors.length;\n for (i = 0; i < errorCount; i++) {\n // failedRequests parameter contains pairs of apiId and correlationId, multiply index by 2 to preserve pairs\n const apiId =\n serverTelemetryEntity.failedRequests[2 * i] ||\n Constants.EMPTY_STRING;\n const correlationId =\n serverTelemetryEntity.failedRequests[2 * i + 1] ||\n Constants.EMPTY_STRING;\n const errorCode =\n serverTelemetryEntity.errors[i] || Constants.EMPTY_STRING;\n\n // Count number of characters that would be added to header, each character is 1 byte. Add 3 at the end to account for separators\n dataSize +=\n apiId.toString().length +\n correlationId.toString().length +\n errorCode.length +\n 3;\n\n if (dataSize < SERVER_TELEM_CONSTANTS.MAX_LAST_HEADER_BYTES) {\n // Adding this entry to the header would still keep header size below the limit\n maxErrors += 1;\n } else {\n break;\n }\n }\n\n return maxErrors;\n }\n\n /**\n * Get the region discovery fields\n *\n * @returns string\n */\n getRegionDiscoveryFields(): string {\n const regionDiscoveryFields: string[] = [];\n\n regionDiscoveryFields.push(this.regionUsed || Constants.EMPTY_STRING);\n regionDiscoveryFields.push(this.regionSource || Constants.EMPTY_STRING);\n regionDiscoveryFields.push(\n this.regionOutcome || Constants.EMPTY_STRING\n );\n\n return regionDiscoveryFields.join(\",\");\n }\n\n /**\n * Update the region discovery metadata\n *\n * @param regionDiscoveryMetadata\n * @returns void\n */\n updateRegionDiscoveryMetadata(\n regionDiscoveryMetadata: RegionDiscoveryMetadata\n ): void {\n this.regionUsed = regionDiscoveryMetadata.region_used;\n this.regionSource = regionDiscoveryMetadata.region_source;\n this.regionOutcome = regionDiscoveryMetadata.region_outcome;\n }\n\n /**\n * Set cache outcome\n */\n setCacheOutcome(cacheOutcome: CacheOutcome): void {\n this.cacheOutcome = cacheOutcome;\n }\n\n setNativeBrokerErrorCode(errorCode: string): void {\n const lastRequests = this.getLastRequests();\n lastRequests.nativeBrokerErrorCode = errorCode;\n this.cacheManager.setServerTelemetry(\n this.telemetryCacheKey,\n lastRequests,\n this.correlationId\n );\n }\n\n getNativeBrokerErrorCode(): string | undefined {\n return this.getLastRequests().nativeBrokerErrorCode;\n }\n\n clearNativeBrokerErrorCode(): void {\n const lastRequests = this.getLastRequests();\n delete lastRequests.nativeBrokerErrorCode;\n this.cacheManager.setServerTelemetry(\n this.telemetryCacheKey,\n lastRequests,\n this.correlationId\n );\n }\n\n static makeExtraSkuString(params: SkuParams): string {\n return makeExtraSkuString(params);\n }\n}\n", "/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport {\n AccountCache,\n IdTokenCache,\n AccessTokenCache,\n RefreshTokenCache,\n AppMetadataCache,\n AccountEntity,\n IdTokenEntity,\n AccessTokenEntity,\n RefreshTokenEntity,\n CacheManager,\n CredentialType,\n AuthenticationScheme,\n} from \"@azure/msal-common/node\";\nimport {\n JsonCache,\n InMemoryCache,\n SerializedAccountEntity,\n SerializedIdTokenEntity,\n SerializedAccessTokenEntity,\n SerializedRefreshTokenEntity,\n SerializedAppMetadataEntity,\n} from \"./SerializerTypes.js\";\n\n/**\n * This class deserializes cache entities read from the file into in-memory object types defined internally\n * @internal\n */\nexport class Deserializer {\n /**\n * Parse the JSON blob in memory and deserialize the content\n * @param cachedJson - JSON blob cache\n */\n static deserializeJSONBlob(jsonFile: string): JsonCache {\n const deserializedCache = !jsonFile ? {} : JSON.parse(jsonFile);\n return deserializedCache;\n }\n\n /**\n * Deserializes accounts to AccountEntity objects\n * @param accounts - accounts of type SerializedAccountEntity\n */\n static deserializeAccounts(\n accounts: Record\n ): AccountCache {\n const accountObjects: AccountCache = {};\n if (accounts) {\n Object.keys(accounts).map(function (key) {\n const serializedAcc = accounts[key];\n const mappedAcc = {\n homeAccountId: serializedAcc.home_account_id,\n environment: serializedAcc.environment,\n realm: serializedAcc.realm,\n localAccountId: serializedAcc.local_account_id,\n username: serializedAcc.username,\n authorityType: serializedAcc.authority_type,\n name: serializedAcc.name,\n clientInfo: serializedAcc.client_info,\n lastModificationTime: serializedAcc.last_modification_time,\n lastModificationApp: serializedAcc.last_modification_app,\n tenantProfiles: serializedAcc.tenantProfiles?.map(\n (serializedTenantProfile) => {\n return JSON.parse(serializedTenantProfile);\n }\n ),\n };\n const account: AccountEntity = new AccountEntity();\n CacheManager.toObject(account, mappedAcc);\n accountObjects[key] = account;\n });\n }\n\n return accountObjects;\n }\n\n /**\n * Deserializes id tokens to IdTokenEntity objects\n * @param idTokens - credentials of type SerializedIdTokenEntity\n */\n static deserializeIdTokens(\n idTokens: Record\n ): IdTokenCache {\n const idObjects: IdTokenCache = {};\n if (idTokens) {\n Object.keys(idTokens).map(function (key) {\n const serializedIdT = idTokens[key];\n const idToken: IdTokenEntity = {\n homeAccountId: serializedIdT.home_account_id,\n environment: serializedIdT.environment,\n credentialType:\n serializedIdT.credential_type as CredentialType,\n clientId: serializedIdT.client_id,\n secret: serializedIdT.secret,\n realm: serializedIdT.realm,\n };\n idObjects[key] = idToken;\n });\n }\n return idObjects;\n }\n\n /**\n * Deserializes access tokens to AccessTokenEntity objects\n * @param accessTokens - access tokens of type SerializedAccessTokenEntity\n */\n static deserializeAccessTokens(\n accessTokens: Record\n ): AccessTokenCache {\n const atObjects: AccessTokenCache = {};\n if (accessTokens) {\n Object.keys(accessTokens).map(function (key) {\n const serializedAT = accessTokens[key];\n const accessToken: AccessTokenEntity = {\n homeAccountId: serializedAT.home_account_id,\n environment: serializedAT.environment,\n credentialType:\n serializedAT.credential_type as CredentialType,\n clientId: serializedAT.client_id,\n secret: serializedAT.secret,\n realm: serializedAT.realm,\n target: serializedAT.target,\n cachedAt: serializedAT.cached_at,\n expiresOn: serializedAT.expires_on,\n extendedExpiresOn: serializedAT.extended_expires_on,\n refreshOn: serializedAT.refresh_on,\n keyId: serializedAT.key_id,\n tokenType: serializedAT.token_type as AuthenticationScheme,\n requestedClaims: serializedAT.requestedClaims,\n requestedClaimsHash: serializedAT.requestedClaimsHash,\n userAssertionHash: serializedAT.userAssertionHash,\n };\n atObjects[key] = accessToken;\n });\n }\n\n return atObjects;\n }\n\n /**\n * Deserializes refresh tokens to RefreshTokenEntity objects\n * @param refreshTokens - refresh tokens of type SerializedRefreshTokenEntity\n */\n static deserializeRefreshTokens(\n refreshTokens: Record\n ): RefreshTokenCache {\n const rtObjects: RefreshTokenCache = {};\n if (refreshTokens) {\n Object.keys(refreshTokens).map(function (key) {\n const serializedRT = refreshTokens[key];\n const refreshToken: RefreshTokenEntity = {\n homeAccountId: serializedRT.home_account_id,\n environment: serializedRT.environment,\n credentialType:\n serializedRT.credential_type as CredentialType,\n clientId: serializedRT.client_id,\n secret: serializedRT.secret,\n familyId: serializedRT.family_id,\n target: serializedRT.target,\n realm: serializedRT.realm,\n };\n rtObjects[key] = refreshToken;\n });\n }\n\n return rtObjects;\n }\n\n /**\n * Deserializes appMetadata to AppMetaData objects\n * @param appMetadata - app metadata of type SerializedAppMetadataEntity\n */\n static deserializeAppMetadata(\n appMetadata: Record\n ): AppMetadataCache {\n const appMetadataObjects: AppMetadataCache = {};\n if (appMetadata) {\n Object.keys(appMetadata).map(function (key) {\n const serializedAmdt = appMetadata[key];\n appMetadataObjects[key] = {\n clientId: serializedAmdt.client_id,\n environment: serializedAmdt.environment,\n familyId: serializedAmdt.family_id,\n };\n });\n }\n\n return appMetadataObjects;\n }\n\n /**\n * Deserialize an inMemory Cache\n * @param jsonCache - JSON blob cache\n */\n static deserializeAllCache(jsonCache: JsonCache): InMemoryCache {\n return {\n accounts: jsonCache.Account\n ? this.deserializeAccounts(jsonCache.Account)\n : {},\n idTokens: jsonCache.IdToken\n ? this.deserializeIdTokens(jsonCache.IdToken)\n : {},\n accessTokens: jsonCache.AccessToken\n ? this.deserializeAccessTokens(jsonCache.AccessToken)\n : {},\n refreshTokens: jsonCache.RefreshToken\n ? this.deserializeRefreshTokens(jsonCache.RefreshToken)\n : {},\n appMetadata: jsonCache.AppMetadata\n ? this.deserializeAppMetadata(jsonCache.AppMetadata)\n : {},\n };\n }\n}\n", "/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { HttpStatus } from \"@azure/msal-common/node\";\nimport { DefaultManagedIdentityRetryPolicy } from \"../retry/DefaultManagedIdentityRetryPolicy.js\";\nimport { ImdsRetryPolicy } from \"../retry/ImdsRetryPolicy.js\";\n\n// MSI Constants. Docs for MSI are available here https://docs.microsoft.com/azure/app-service/overview-managed-identity\nexport const DEFAULT_MANAGED_IDENTITY_ID = \"system_assigned_managed_identity\";\nexport const MANAGED_IDENTITY_DEFAULT_TENANT = \"managed_identity\";\nexport const DEFAULT_AUTHORITY_FOR_MANAGED_IDENTITY = `https://login.microsoftonline.com/${MANAGED_IDENTITY_DEFAULT_TENANT}/`;\n\n/**\n * Managed Identity Headers - used in network requests\n */\nexport const ManagedIdentityHeaders = {\n AUTHORIZATION_HEADER_NAME: \"Authorization\",\n METADATA_HEADER_NAME: \"Metadata\",\n APP_SERVICE_SECRET_HEADER_NAME: \"X-IDENTITY-HEADER\",\n ML_AND_SF_SECRET_HEADER_NAME: \"secret\",\n} as const;\nexport type ManagedIdentityHeaders =\n (typeof ManagedIdentityHeaders)[keyof typeof ManagedIdentityHeaders];\n\n/**\n * Managed Identity Query Parameters - used in network requests\n */\nexport const ManagedIdentityQueryParameters = {\n API_VERSION: \"api-version\",\n RESOURCE: \"resource\",\n SHA256_TOKEN_TO_REFRESH: \"token_sha256_to_refresh\",\n XMS_CC: \"xms_cc\",\n} as const;\nexport type ManagedIdentityQueryParameters =\n (typeof ManagedIdentityQueryParameters)[keyof typeof ManagedIdentityQueryParameters];\n\n/**\n * Managed Identity Environment Variable Names\n */\nexport const ManagedIdentityEnvironmentVariableNames = {\n AZURE_POD_IDENTITY_AUTHORITY_HOST: \"AZURE_POD_IDENTITY_AUTHORITY_HOST\",\n DEFAULT_IDENTITY_CLIENT_ID: \"DEFAULT_IDENTITY_CLIENT_ID\",\n IDENTITY_ENDPOINT: \"IDENTITY_ENDPOINT\",\n IDENTITY_HEADER: \"IDENTITY_HEADER\",\n IDENTITY_SERVER_THUMBPRINT: \"IDENTITY_SERVER_THUMBPRINT\",\n IMDS_ENDPOINT: \"IMDS_ENDPOINT\",\n MSI_ENDPOINT: \"MSI_ENDPOINT\",\n MSI_SECRET: \"MSI_SECRET\",\n} as const;\nexport type ManagedIdentityEnvironmentVariableNames =\n (typeof ManagedIdentityEnvironmentVariableNames)[keyof typeof ManagedIdentityEnvironmentVariableNames];\n\n/**\n * Managed Identity Source Names\n * @public\n */\nexport const ManagedIdentitySourceNames = {\n APP_SERVICE: \"AppService\",\n AZURE_ARC: \"AzureArc\",\n CLOUD_SHELL: \"CloudShell\",\n DEFAULT_TO_IMDS: \"DefaultToImds\",\n IMDS: \"Imds\",\n MACHINE_LEARNING: \"MachineLearning\",\n SERVICE_FABRIC: \"ServiceFabric\",\n} as const;\n/**\n * The ManagedIdentitySourceNames type\n * @public\n */\nexport type ManagedIdentitySourceNames =\n (typeof ManagedIdentitySourceNames)[keyof typeof ManagedIdentitySourceNames];\n\n/**\n * Managed Identity Ids\n */\nexport const ManagedIdentityIdType = {\n SYSTEM_ASSIGNED: \"system-assigned\",\n USER_ASSIGNED_CLIENT_ID: \"user-assigned-client-id\",\n USER_ASSIGNED_RESOURCE_ID: \"user-assigned-resource-id\",\n USER_ASSIGNED_OBJECT_ID: \"user-assigned-object-id\",\n} as const;\nexport type ManagedIdentityIdType =\n (typeof ManagedIdentityIdType)[keyof typeof ManagedIdentityIdType];\n\n/**\n * http methods\n */\nexport const HttpMethod = {\n GET: \"get\",\n POST: \"post\",\n} as const;\nexport type HttpMethod = (typeof HttpMethod)[keyof typeof HttpMethod];\n\nexport const ProxyStatus = {\n SUCCESS: HttpStatus.SUCCESS,\n SUCCESS_RANGE_START: HttpStatus.SUCCESS_RANGE_START,\n SUCCESS_RANGE_END: HttpStatus.SUCCESS_RANGE_END,\n SERVER_ERROR: HttpStatus.SERVER_ERROR,\n} as const;\nexport type ProxyStatus = (typeof ProxyStatus)[keyof typeof ProxyStatus];\n\n/**\n * Constants used for region discovery\n */\nexport const REGION_ENVIRONMENT_VARIABLE = \"REGION_NAME\";\nexport const MSAL_FORCE_REGION = \"MSAL_FORCE_REGION\";\n\n/**\n * Constant used for PKCE\n */\nexport const RANDOM_OCTET_SIZE = 32;\n\n/**\n * Constants used in PKCE\n */\nexport const Hash = {\n SHA256: \"sha256\",\n};\n\n/**\n * Constants for encoding schemes\n */\nexport const CharSet = {\n CV_CHARSET:\n \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-._~\",\n};\n\n/**\n * Cache Constants\n */\nexport const CACHE = {\n FILE_CACHE: \"fileCache\",\n EXTENSION_LIB: \"extenstion_library\",\n};\n\n/**\n * Constants\n */\nexport const Constants = {\n MSAL_SKU: \"msal.js.node\",\n JWT_BEARER_ASSERTION_TYPE:\n \"urn:ietf:params:oauth:client-assertion-type:jwt-bearer\",\n AUTHORIZATION_PENDING: \"authorization_pending\",\n HTTP_PROTOCOL: \"http://\",\n LOCALHOST: \"localhost\",\n};\n\n/**\n * API Codes for Telemetry purposes.\n * Before adding a new code you must claim it in the MSAL Telemetry tracker as these number spaces are shared across all MSALs\n * 0-99 Silent Flow\n * 600-699 Device Code Flow\n * 800-899 Auth Code Flow\n */\nexport const ApiId = {\n acquireTokenSilent: 62,\n acquireTokenByUsernamePassword: 371,\n acquireTokenByDeviceCode: 671,\n acquireTokenByClientCredential: 771,\n acquireTokenByCode: 871,\n acquireTokenByRefreshToken: 872,\n};\nexport type ApiId = (typeof ApiId)[keyof typeof ApiId];\n\n/**\n * JWT constants\n */\nexport const JwtConstants = {\n ALGORITHM: \"alg\",\n RSA_256: \"RS256\",\n PSS_256: \"PS256\",\n X5T_256: \"x5t#S256\",\n X5T: \"x5t\",\n X5C: \"x5c\",\n AUDIENCE: \"aud\",\n EXPIRATION_TIME: \"exp\",\n ISSUER: \"iss\",\n SUBJECT: \"sub\",\n NOT_BEFORE: \"nbf\",\n JWT_ID: \"jti\",\n};\n\nexport const LOOPBACK_SERVER_CONSTANTS = {\n INTERVAL_MS: 100,\n TIMEOUT_MS: 5000,\n};\n\nexport const AZURE_ARC_SECRET_FILE_MAX_SIZE_BYTES: number = 4096; // 4 KB\n\nexport type RetryPolicies = DefaultManagedIdentityRetryPolicy | ImdsRetryPolicy;\n", "/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { NetworkResponse } from \"@azure/msal-common/node\";\n\nexport type UrlToHttpRequestOptions = {\n protocol: string;\n hostname: string;\n hash: string;\n search: string;\n pathname: string;\n path: string;\n href: string;\n port?: number;\n auth?: string;\n};\n\nexport class NetworkUtils {\n static getNetworkResponse(\n headers: Record,\n body: T,\n statusCode: number\n ): NetworkResponse {\n return {\n headers: headers,\n body: body,\n status: statusCode,\n };\n }\n\n /*\n * Utility function that converts a URL object into an ordinary options object as expected by the\n * http.request and https.request APIs.\n * https://github.com/nodejs/node/blob/main/lib/internal/url.js#L1090\n */\n static urlToHttpOptions(url: URL): UrlToHttpRequestOptions {\n const options: UrlToHttpRequestOptions = {\n protocol: url.protocol,\n hostname:\n url.hostname && url.hostname.startsWith(\"[\")\n ? url.hostname.slice(1, -1)\n : url.hostname,\n hash: url.hash,\n search: url.search,\n pathname: url.pathname,\n path: `${url.pathname || \"\"}${url.search || \"\"}`,\n href: url.href,\n };\n if (url.port !== \"\") {\n options.port = Number(url.port);\n }\n if (url.username || url.password) {\n options.auth = `${decodeURIComponent(\n url.username\n )}:${decodeURIComponent(url.password)}`;\n }\n return options;\n }\n}\n", "/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport {\n INetworkModule,\n NetworkRequestOptions,\n NetworkResponse,\n HttpStatus,\n} from \"@azure/msal-common/node\";\nimport { HttpMethod, Constants, ProxyStatus } from \"../utils/Constants.js\";\nimport { NetworkUtils } from \"../utils/NetworkUtils.js\";\nimport http from \"http\";\nimport https from \"https\";\n\n/**\n * This class implements the API for network requests.\n */\nexport class HttpClient implements INetworkModule {\n private proxyUrl: string;\n private customAgentOptions: http.AgentOptions | https.AgentOptions;\n\n constructor(\n proxyUrl?: string,\n customAgentOptions?: http.AgentOptions | https.AgentOptions\n ) {\n this.proxyUrl = proxyUrl || \"\";\n this.customAgentOptions = customAgentOptions || {};\n }\n\n /**\n * Http Get request\n * @param url\n * @param options\n */\n async sendGetRequestAsync(\n url: string,\n options?: NetworkRequestOptions,\n timeout?: number\n ): Promise> {\n if (this.proxyUrl) {\n return networkRequestViaProxy(\n url,\n this.proxyUrl,\n HttpMethod.GET,\n options,\n this.customAgentOptions as http.AgentOptions,\n timeout\n );\n } else {\n return networkRequestViaHttps(\n url,\n HttpMethod.GET,\n options,\n this.customAgentOptions as https.AgentOptions,\n timeout\n );\n }\n }\n\n /**\n * Http Post request\n * @param url\n * @param options\n */\n async sendPostRequestAsync(\n url: string,\n options?: NetworkRequestOptions\n ): Promise> {\n if (this.proxyUrl) {\n return networkRequestViaProxy(\n url,\n this.proxyUrl,\n HttpMethod.POST,\n options,\n this.customAgentOptions as http.AgentOptions\n );\n } else {\n return networkRequestViaHttps(\n url,\n HttpMethod.POST,\n options,\n this.customAgentOptions as https.AgentOptions\n );\n }\n }\n}\n\nconst networkRequestViaProxy = (\n destinationUrlString: string,\n proxyUrlString: string,\n httpMethod: string,\n options?: NetworkRequestOptions,\n agentOptions?: http.AgentOptions,\n timeout?: number\n): Promise> => {\n const destinationUrl = new URL(destinationUrlString);\n const proxyUrl = new URL(proxyUrlString);\n\n // \"method: connect\" must be used to establish a connection to the proxy\n const headers = options?.headers || ({} as Record);\n const tunnelRequestOptions: https.RequestOptions = {\n host: proxyUrl.hostname,\n port: proxyUrl.port,\n method: \"CONNECT\",\n path: destinationUrl.hostname,\n headers: headers,\n };\n\n if (agentOptions && Object.keys(agentOptions).length) {\n tunnelRequestOptions.agent = new http.Agent(agentOptions);\n }\n\n // compose a request string for the socket\n let postRequestStringContent: string = \"\";\n if (httpMethod === HttpMethod.POST) {\n const body = options?.body || \"\";\n postRequestStringContent =\n \"Content-Type: application/x-www-form-urlencoded\\r\\n\" +\n `Content-Length: ${body.length}\\r\\n` +\n `\\r\\n${body}`;\n } else {\n // optional timeout is only for get requests (regionDiscovery, for example)\n if (timeout) {\n tunnelRequestOptions.timeout = timeout;\n }\n }\n const outgoingRequestString =\n `${httpMethod.toUpperCase()} ${destinationUrl.href} HTTP/1.1\\r\\n` +\n `Host: ${destinationUrl.host}\\r\\n` +\n \"Connection: close\\r\\n\" +\n postRequestStringContent +\n \"\\r\\n\";\n\n return new Promise>((resolve, reject) => {\n const request = http.request(tunnelRequestOptions);\n\n if (timeout) {\n request.on(\"timeout\", () => {\n request.destroy();\n reject(new Error(\"Request time out\"));\n });\n }\n\n request.end();\n\n // establish connection to the proxy\n request.on(\"connect\", (response, socket) => {\n const proxyStatusCode =\n response?.statusCode || ProxyStatus.SERVER_ERROR;\n if (\n proxyStatusCode < ProxyStatus.SUCCESS_RANGE_START ||\n proxyStatusCode > ProxyStatus.SUCCESS_RANGE_END\n ) {\n request.destroy();\n socket.destroy();\n reject(\n new Error(\n `Error connecting to proxy. Http status code: ${\n response.statusCode\n }. Http status message: ${\n response?.statusMessage || \"Unknown\"\n }`\n )\n );\n }\n\n // make a request over an HTTP tunnel\n socket.write(outgoingRequestString);\n\n const data: Buffer[] = [];\n socket.on(\"data\", (chunk) => {\n data.push(chunk);\n });\n\n socket.on(\"end\", () => {\n // combine all received buffer streams into one buffer, and then into a string\n const dataString = Buffer.concat([...data]).toString();\n\n // separate each line into it's own entry in an arry\n const dataStringArray = dataString.split(\"\\r\\n\");\n // the first entry will contain the statusCode and statusMessage\n const httpStatusCode = parseInt(\n dataStringArray[0].split(\" \")[1]\n );\n // remove \"HTTP/1.1\" and the status code to get the status message\n const statusMessage = dataStringArray[0]\n .split(\" \")\n .slice(2)\n .join(\" \");\n // the last entry will contain the body\n const body = dataStringArray[dataStringArray.length - 1];\n\n // everything in between the first and last entries are the headers\n const headersArray = dataStringArray.slice(\n 1,\n dataStringArray.length - 2\n );\n\n // build an object out of all the headers\n const entries = new Map();\n headersArray.forEach((header) => {\n /**\n * the header might look like \"Content-Length: 1531\", but that is just a string\n * it needs to be converted to a key/value pair\n * split the string at the first instance of \":\"\n * there may be more than one \":\" if the value of the header is supposed to be a JSON object\n */\n const headerKeyValue = header.split(new RegExp(/:\\s(.*)/s));\n const headerKey = headerKeyValue[0];\n let headerValue = headerKeyValue[1];\n\n // check if the value of the header is supposed to be a JSON object\n try {\n const object = JSON.parse(headerValue);\n\n // if it is, then convert it from a string to a JSON object\n if (object && typeof object === \"object\") {\n headerValue = object;\n }\n } catch (e) {\n // otherwise, leave it as a string\n }\n\n entries.set(headerKey, headerValue);\n });\n const headers = Object.fromEntries(entries);\n\n const parsedHeaders = headers as Record;\n const networkResponse = NetworkUtils.getNetworkResponse(\n parsedHeaders,\n parseBody(\n httpStatusCode,\n statusMessage,\n parsedHeaders,\n body\n ) as T,\n httpStatusCode\n );\n\n if (\n (httpStatusCode < HttpStatus.SUCCESS_RANGE_START ||\n httpStatusCode > HttpStatus.SUCCESS_RANGE_END) &&\n // do not destroy the request for the device code flow\n networkResponse.body[\"error\"] !==\n Constants.AUTHORIZATION_PENDING\n ) {\n request.destroy();\n }\n resolve(networkResponse);\n });\n\n socket.on(\"error\", (chunk) => {\n request.destroy();\n socket.destroy();\n reject(new Error(chunk.toString()));\n });\n });\n\n request.on(\"error\", (chunk) => {\n request.destroy();\n reject(new Error(chunk.toString()));\n });\n });\n};\n\nconst networkRequestViaHttps = (\n urlString: string,\n httpMethod: string,\n options?: NetworkRequestOptions,\n agentOptions?: https.AgentOptions,\n timeout?: number\n): Promise> => {\n const isPostRequest = httpMethod === HttpMethod.POST;\n const body: string = options?.body || \"\";\n\n const url = new URL(urlString);\n const headers = options?.headers || ({} as Record);\n const customOptions: https.RequestOptions = {\n method: httpMethod,\n headers: headers,\n ...NetworkUtils.urlToHttpOptions(url),\n };\n\n if (agentOptions && Object.keys(agentOptions).length) {\n customOptions.agent = new https.Agent(agentOptions);\n }\n\n if (isPostRequest) {\n // needed for post request to work\n customOptions.headers = {\n ...customOptions.headers,\n \"Content-Length\": body.length,\n };\n } else {\n // optional timeout is only for get requests (regionDiscovery, for example)\n if (timeout) {\n customOptions.timeout = timeout;\n }\n }\n\n return new Promise>((resolve, reject) => {\n let request: http.ClientRequest;\n // managed identity sources use http instead of https\n if (customOptions.protocol === \"http:\") {\n request = http.request(customOptions);\n } else {\n request = https.request(customOptions);\n }\n\n if (isPostRequest) {\n request.write(body);\n }\n\n if (timeout) {\n request.on(\"timeout\", () => {\n request.destroy();\n reject(new Error(\"Request time out\"));\n });\n }\n\n request.end();\n\n request.on(\"response\", (response) => {\n const headers = response.headers;\n const statusCode = response.statusCode as number;\n const statusMessage = response.statusMessage;\n\n const data: Buffer[] = [];\n response.on(\"data\", (chunk) => {\n data.push(chunk);\n });\n\n response.on(\"end\", () => {\n // combine all received buffer streams into one buffer, and then into a string\n const body = Buffer.concat([...data]).toString();\n\n const parsedHeaders = headers as Record;\n const networkResponse = NetworkUtils.getNetworkResponse(\n parsedHeaders,\n parseBody(\n statusCode,\n statusMessage,\n parsedHeaders,\n body\n ) as T,\n statusCode\n );\n\n if (\n (statusCode < HttpStatus.SUCCESS_RANGE_START ||\n statusCode > HttpStatus.SUCCESS_RANGE_END) &&\n // do not destroy the request for the device code flow\n networkResponse.body[\"error\"] !==\n Constants.AUTHORIZATION_PENDING\n ) {\n request.destroy();\n }\n resolve(networkResponse);\n });\n });\n\n request.on(\"error\", (chunk) => {\n request.destroy();\n reject(new Error(chunk.toString()));\n });\n });\n};\n\n/**\n * Check if extra parsing is needed on the repsonse from the server\n * @param statusCode {number} the status code of the response from the server\n * @param statusMessage {string | undefined} the status message of the response from the server\n * @param headers {Record} the headers of the response from the server\n * @param body {string} the body from the response of the server\n * @returns {Object} JSON parsed body or error object\n */\nconst parseBody = (\n statusCode: number,\n statusMessage: string | undefined,\n headers: Record,\n body: string\n) => {\n /*\n * Informational responses (100 \u2013 199)\n * Successful responses (200 \u2013 299)\n * Redirection messages (300 \u2013 399)\n * Client error responses (400 \u2013 499)\n * Server error responses (500 \u2013 599)\n */\n\n let parsedBody;\n try {\n parsedBody = JSON.parse(body);\n } catch (error) {\n let errorType;\n let errorDescriptionHelper;\n if (\n statusCode >= HttpStatus.CLIENT_ERROR_RANGE_START &&\n statusCode <= HttpStatus.CLIENT_ERROR_RANGE_END\n ) {\n errorType = \"client_error\";\n errorDescriptionHelper = \"A client\";\n } else if (\n statusCode >= HttpStatus.SERVER_ERROR_RANGE_START &&\n statusCode <= HttpStatus.SERVER_ERROR_RANGE_END\n ) {\n errorType = \"server_error\";\n errorDescriptionHelper = \"A server\";\n } else {\n errorType = \"unknown_error\";\n errorDescriptionHelper = \"An unknown\";\n }\n\n parsedBody = {\n error: errorType,\n error_description: `${errorDescriptionHelper} error occured.\\nHttp status code: ${statusCode}\\nHttp status message: ${\n statusMessage || \"Unknown\"\n }\\nHeaders: ${JSON.stringify(headers)}`,\n };\n }\n\n return parsedBody;\n};\n", "/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { ManagedIdentityEnvironmentVariableNames } from \"../utils/Constants.js\";\n\nexport const invalidFileExtension = \"invalid_file_extension\";\nexport const invalidFilePath = \"invalid_file_path\";\nexport const invalidManagedIdentityIdType = \"invalid_managed_identity_id_type\";\nexport const invalidSecret = \"invalid_secret\";\nexport const missingId = \"missing_client_id\";\nexport const networkUnavailable = \"network_unavailable\";\nexport const platformNotSupported = \"platform_not_supported\";\nexport const unableToCreateAzureArc = \"unable_to_create_azure_arc\";\nexport const unableToCreateCloudShell = \"unable_to_create_cloud_shell\";\nexport const unableToCreateSource = \"unable_to_create_source\";\nexport const unableToReadSecretFile = \"unable_to_read_secret_file\";\nexport const urlParseError = \"url_parse_error\";\nexport const userAssignedNotAvailableAtRuntime =\n \"user_assigned_not_available_at_runtime\";\nexport const wwwAuthenticateHeaderMissing = \"www_authenticate_header_missing\";\nexport const wwwAuthenticateHeaderUnsupportedFormat =\n \"www_authenticate_header_unsupported_format\";\n\nexport const MsiEnvironmentVariableUrlMalformedErrorCodes = {\n [ManagedIdentityEnvironmentVariableNames.AZURE_POD_IDENTITY_AUTHORITY_HOST]:\n \"azure_pod_identity_authority_host_url_malformed\",\n [ManagedIdentityEnvironmentVariableNames.IDENTITY_ENDPOINT]:\n \"identity_endpoint_url_malformed\",\n [ManagedIdentityEnvironmentVariableNames.IMDS_ENDPOINT]:\n \"imds_endpoint_url_malformed\",\n [ManagedIdentityEnvironmentVariableNames.MSI_ENDPOINT]:\n \"msi_endpoint_url_malformed\",\n} as const;\nexport type MsiEnvironmentVariableErrorCodes =\n (typeof MsiEnvironmentVariableUrlMalformedErrorCodes)[keyof typeof MsiEnvironmentVariableUrlMalformedErrorCodes];\n", "/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { AuthError } from \"@azure/msal-common/node\";\nimport * as ManagedIdentityErrorCodes from \"./ManagedIdentityErrorCodes.js\";\nimport { ManagedIdentityEnvironmentVariableNames } from \"../utils/Constants.js\";\nexport { ManagedIdentityErrorCodes };\n\n/**\n * ManagedIdentityErrorMessage class containing string constants used by error codes and messages.\n */\nexport const ManagedIdentityErrorMessages = {\n [ManagedIdentityErrorCodes.invalidFileExtension]:\n \"The file path in the WWW-Authenticate header does not contain a .key file.\",\n [ManagedIdentityErrorCodes.invalidFilePath]:\n \"The file path in the WWW-Authenticate header is not in a valid Windows or Linux Format.\",\n [ManagedIdentityErrorCodes.invalidManagedIdentityIdType]:\n \"More than one ManagedIdentityIdType was provided.\",\n [ManagedIdentityErrorCodes.invalidSecret]:\n \"The secret in the file on the file path in the WWW-Authenticate header is greater than 4096 bytes.\",\n [ManagedIdentityErrorCodes.platformNotSupported]:\n \"The platform is not supported by Azure Arc. Azure Arc only supports Windows and Linux.\",\n [ManagedIdentityErrorCodes.missingId]:\n \"A ManagedIdentityId id was not provided.\",\n [ManagedIdentityErrorCodes.MsiEnvironmentVariableUrlMalformedErrorCodes\n .AZURE_POD_IDENTITY_AUTHORITY_HOST]: `The Managed Identity's '${ManagedIdentityEnvironmentVariableNames.AZURE_POD_IDENTITY_AUTHORITY_HOST}' environment variable is malformed.`,\n [ManagedIdentityErrorCodes.MsiEnvironmentVariableUrlMalformedErrorCodes\n .IDENTITY_ENDPOINT]: `The Managed Identity's '${ManagedIdentityEnvironmentVariableNames.IDENTITY_ENDPOINT}' environment variable is malformed.`,\n [ManagedIdentityErrorCodes.MsiEnvironmentVariableUrlMalformedErrorCodes\n .IMDS_ENDPOINT]: `The Managed Identity's '${ManagedIdentityEnvironmentVariableNames.IMDS_ENDPOINT}' environment variable is malformed.`,\n [ManagedIdentityErrorCodes.MsiEnvironmentVariableUrlMalformedErrorCodes\n .MSI_ENDPOINT]: `The Managed Identity's '${ManagedIdentityEnvironmentVariableNames.MSI_ENDPOINT}' environment variable is malformed.`,\n [ManagedIdentityErrorCodes.networkUnavailable]:\n \"Authentication unavailable. The request to the managed identity endpoint timed out.\",\n [ManagedIdentityErrorCodes.unableToCreateAzureArc]:\n \"Azure Arc Managed Identities can only be system assigned.\",\n [ManagedIdentityErrorCodes.unableToCreateCloudShell]:\n \"Cloud Shell Managed Identities can only be system assigned.\",\n [ManagedIdentityErrorCodes.unableToCreateSource]:\n \"Unable to create a Managed Identity source based on environment variables.\",\n [ManagedIdentityErrorCodes.unableToReadSecretFile]:\n \"Unable to read the secret file.\",\n [ManagedIdentityErrorCodes.userAssignedNotAvailableAtRuntime]:\n \"Service Fabric user assigned managed identity ClientId or ResourceId is not configurable at runtime.\",\n [ManagedIdentityErrorCodes.wwwAuthenticateHeaderMissing]:\n \"A 401 response was received form the Azure Arc Managed Identity, but the www-authenticate header is missing.\",\n [ManagedIdentityErrorCodes.wwwAuthenticateHeaderUnsupportedFormat]:\n \"A 401 response was received form the Azure Arc Managed Identity, but the www-authenticate header is in an unsupported format.\",\n};\n\nexport class ManagedIdentityError extends AuthError {\n constructor(errorCode: string) {\n super(errorCode, ManagedIdentityErrorMessages[errorCode]);\n this.name = \"ManagedIdentityError\";\n Object.setPrototypeOf(this, ManagedIdentityError.prototype);\n }\n}\n\nexport function createManagedIdentityError(\n errorCode: string\n): ManagedIdentityError {\n return new ManagedIdentityError(errorCode);\n}\n", "/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport {\n ManagedIdentityErrorCodes,\n createManagedIdentityError,\n} from \"../error/ManagedIdentityError.js\";\nimport {\n DEFAULT_MANAGED_IDENTITY_ID,\n ManagedIdentityIdType,\n} from \"../utils/Constants.js\";\nimport type { ManagedIdentityIdParams } from \"./Configuration.js\";\n\nexport class ManagedIdentityId {\n private _id: string;\n public get id(): string {\n return this._id;\n }\n private set id(value: string) {\n this._id = value;\n }\n\n private _idType: ManagedIdentityIdType;\n public get idType(): ManagedIdentityIdType {\n return this._idType;\n }\n private set idType(value: ManagedIdentityIdType) {\n this._idType = value;\n }\n\n constructor(managedIdentityIdParams?: ManagedIdentityIdParams) {\n const userAssignedClientId =\n managedIdentityIdParams?.userAssignedClientId;\n const userAssignedResourceId =\n managedIdentityIdParams?.userAssignedResourceId;\n const userAssignedObjectId =\n managedIdentityIdParams?.userAssignedObjectId;\n\n if (userAssignedClientId) {\n if (userAssignedResourceId || userAssignedObjectId) {\n throw createManagedIdentityError(\n ManagedIdentityErrorCodes.invalidManagedIdentityIdType\n );\n }\n\n this.id = userAssignedClientId;\n this.idType = ManagedIdentityIdType.USER_ASSIGNED_CLIENT_ID;\n } else if (userAssignedResourceId) {\n if (userAssignedClientId || userAssignedObjectId) {\n throw createManagedIdentityError(\n ManagedIdentityErrorCodes.invalidManagedIdentityIdType\n );\n }\n\n this.id = userAssignedResourceId;\n this.idType = ManagedIdentityIdType.USER_ASSIGNED_RESOURCE_ID;\n } else if (userAssignedObjectId) {\n if (userAssignedClientId || userAssignedResourceId) {\n throw createManagedIdentityError(\n ManagedIdentityErrorCodes.invalidManagedIdentityIdType\n );\n }\n\n this.id = userAssignedObjectId;\n this.idType = ManagedIdentityIdType.USER_ASSIGNED_OBJECT_ID;\n } else {\n this.id = DEFAULT_MANAGED_IDENTITY_ID;\n this.idType = ManagedIdentityIdType.SYSTEM_ASSIGNED;\n }\n }\n}\n", "/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { AuthError } from \"@azure/msal-common/node\";\n\n/**\n * NodeAuthErrorMessage class containing string constants used by error codes and messages.\n */\nexport const NodeAuthErrorMessage = {\n invalidLoopbackAddressType: {\n code: \"invalid_loopback_server_address_type\",\n desc: \"Loopback server address is not type string. This is unexpected.\",\n },\n unableToLoadRedirectUri: {\n code: \"unable_to_load_redirectUrl\",\n desc: \"Loopback server callback was invoked without a url. This is unexpected.\",\n },\n noAuthCodeInResponse: {\n code: \"no_auth_code_in_response\",\n desc: \"No auth code found in the server response. Please check your network trace to determine what happened.\",\n },\n noLoopbackServerExists: {\n code: \"no_loopback_server_exists\",\n desc: \"No loopback server exists yet.\",\n },\n loopbackServerAlreadyExists: {\n code: \"loopback_server_already_exists\",\n desc: \"Loopback server already exists. Cannot create another.\",\n },\n loopbackServerTimeout: {\n code: \"loopback_server_timeout\",\n desc: \"Timed out waiting for auth code listener to be registered.\",\n },\n stateNotFoundError: {\n code: \"state_not_found\",\n desc: \"State not found. Please verify that the request originated from msal.\",\n },\n thumbprintMissing: {\n code: \"thumbprint_missing_from_client_certificate\",\n desc: \"Client certificate does not contain a SHA-1 or SHA-256 thumbprint.\",\n },\n};\n\nexport class NodeAuthError extends AuthError {\n constructor(errorCode: string, errorMessage?: string) {\n super(errorCode, errorMessage);\n this.name = \"NodeAuthError\";\n }\n\n /**\n * Creates an error thrown if loopback server address is of type string.\n */\n static createInvalidLoopbackAddressTypeError(): NodeAuthError {\n return new NodeAuthError(\n NodeAuthErrorMessage.invalidLoopbackAddressType.code,\n `${NodeAuthErrorMessage.invalidLoopbackAddressType.desc}`\n );\n }\n\n /**\n * Creates an error thrown if the loopback server is unable to get a url.\n */\n static createUnableToLoadRedirectUrlError(): NodeAuthError {\n return new NodeAuthError(\n NodeAuthErrorMessage.unableToLoadRedirectUri.code,\n `${NodeAuthErrorMessage.unableToLoadRedirectUri.desc}`\n );\n }\n\n /**\n * Creates an error thrown if the server response does not contain an auth code.\n */\n static createNoAuthCodeInResponseError(): NodeAuthError {\n return new NodeAuthError(\n NodeAuthErrorMessage.noAuthCodeInResponse.code,\n `${NodeAuthErrorMessage.noAuthCodeInResponse.desc}`\n );\n }\n\n /**\n * Creates an error thrown if the loopback server has not been spun up yet.\n */\n static createNoLoopbackServerExistsError(): NodeAuthError {\n return new NodeAuthError(\n NodeAuthErrorMessage.noLoopbackServerExists.code,\n `${NodeAuthErrorMessage.noLoopbackServerExists.desc}`\n );\n }\n\n /**\n * Creates an error thrown if a loopback server already exists when attempting to create another one.\n */\n static createLoopbackServerAlreadyExistsError(): NodeAuthError {\n return new NodeAuthError(\n NodeAuthErrorMessage.loopbackServerAlreadyExists.code,\n `${NodeAuthErrorMessage.loopbackServerAlreadyExists.desc}`\n );\n }\n\n /**\n * Creates an error thrown if the loopback server times out registering the auth code listener.\n */\n static createLoopbackServerTimeoutError(): NodeAuthError {\n return new NodeAuthError(\n NodeAuthErrorMessage.loopbackServerTimeout.code,\n `${NodeAuthErrorMessage.loopbackServerTimeout.desc}`\n );\n }\n\n /**\n * Creates an error thrown when the state is not present.\n */\n static createStateNotFoundError(): NodeAuthError {\n return new NodeAuthError(\n NodeAuthErrorMessage.stateNotFoundError.code,\n NodeAuthErrorMessage.stateNotFoundError.desc\n );\n }\n\n /**\n * Creates an error thrown when client certificate was provided, but neither the SHA-1 or SHA-256 thumbprints were provided\n */\n static createThumbprintMissingError(): NodeAuthError {\n return new NodeAuthError(\n NodeAuthErrorMessage.thumbprintMissing.code,\n NodeAuthErrorMessage.thumbprintMissing.desc\n );\n }\n}\n", "/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport {\n LoggerOptions,\n INetworkModule,\n LogLevel,\n ProtocolMode,\n ICachePlugin,\n Constants,\n AzureCloudInstance,\n AzureCloudOptions,\n ApplicationTelemetry,\n INativeBrokerPlugin,\n ClientAssertionCallback,\n} from \"@azure/msal-common/node\";\nimport { HttpClient } from \"../network/HttpClient.js\";\nimport http from \"http\";\nimport https from \"https\";\nimport { ManagedIdentityId } from \"./ManagedIdentityId.js\";\nimport { NodeAuthError } from \"../error/NodeAuthError.js\";\n\n/**\n * - clientId - Client id of the application.\n * - authority - Url of the authority. If no value is set, defaults to https://login.microsoftonline.com/common.\n * - knownAuthorities - Needed for Azure B2C and ADFS. All authorities that will be used in the client application. Only the host of the authority should be passed in.\n * - clientSecret - Secret string that the application uses when requesting a token. Only used in confidential client applications. Can be created in the Azure app registration portal.\n * - clientAssertion - A ClientAssertion object containing an assertion string or a callback function that returns an assertion string that the application uses when requesting a token, as well as the assertion's type (urn:ietf:params:oauth:client-assertion-type:jwt-bearer). Only used in confidential client applications.\n * - clientCertificate - Certificate that the application uses when requesting a token. Only used in confidential client applications. Requires hex encoded X.509 SHA-1 or SHA-256 thumbprint of the certificate, and the PEM encoded private key (string should contain -----BEGIN PRIVATE KEY----- ... -----END PRIVATE KEY----- )\n * - protocolMode - Enum that represents the protocol that msal follows. Used for configuring proper endpoints.\n * - skipAuthorityMetadataCache - A flag to choose whether to use or not use the local metadata cache during authority initialization. Defaults to false.\n * - encodeExtraQueryParams - A flag to choose whether to encode extra query parameters in the request URL. Defaults to false.\n * @public\n */\nexport type NodeAuthOptions = {\n clientId: string;\n authority?: string;\n clientSecret?: string;\n clientAssertion?: string | ClientAssertionCallback;\n clientCertificate?: {\n /**\n * @deprecated Use thumbprintSha2 property instead. Thumbprint needs to be computed with SHA-256 algorithm.\n * SHA-1 is only needed for backwards compatibility with older versions of ADFS.\n */\n thumbprint?: string;\n thumbprintSha256?: string;\n privateKey: string;\n x5c?: string;\n };\n knownAuthorities?: Array;\n cloudDiscoveryMetadata?: string;\n authorityMetadata?: string;\n clientCapabilities?: Array;\n protocolMode?: ProtocolMode;\n azureCloudOptions?: AzureCloudOptions;\n skipAuthorityMetadataCache?: boolean;\n /**\n * @deprecated This flag is deprecated and will be removed in the next major version where all extra query params will be encoded by default.\n */\n encodeExtraQueryParams?: boolean;\n};\n\n/**\n * Use this to configure the below cache configuration options:\n *\n * - cachePlugin - Plugin for reading and writing token cache to disk.\n * @public\n */\nexport type CacheOptions = {\n cachePlugin?: ICachePlugin;\n /**\n * @deprecated claims-based-caching functionality will be removed in the next version of MSALJS\n */\n claimsBasedCachingEnabled?: boolean;\n};\n\n/**\n * Use this to configure the below broker options:\n * - nativeBrokerPlugin - Native broker implementation (should be imported from msal-node-extensions)\n *\n * Note: These options are only available for PublicClientApplications using the Authorization Code Flow\n * @public\n */\nexport type BrokerOptions = {\n nativeBrokerPlugin?: INativeBrokerPlugin;\n};\n\n/**\n * Type for configuring logger and http client options\n *\n * - logger - Used to initialize the Logger object; TODO: Expand on logger details or link to the documentation on logger\n * - networkClient - Http client used for all http get and post calls. Defaults to using MSAL's default http client.\n * @public\n */\nexport type NodeSystemOptions = {\n loggerOptions?: LoggerOptions;\n networkClient?: INetworkModule;\n proxyUrl?: string;\n customAgentOptions?: http.AgentOptions | https.AgentOptions;\n disableInternalRetries?: boolean;\n};\n\n/** @public */\nexport type NodeTelemetryOptions = {\n application?: ApplicationTelemetry;\n};\n\n/**\n * Use the configuration object to configure MSAL and initialize the client application object\n *\n * - auth: this is where you configure auth elements like clientID, authority used for authenticating against the Microsoft Identity Platform\n * - broker: this is where you configure broker options\n * - cache: this is where you configure cache location\n * - system: this is where you can configure the network client, logger\n * - telemetry: this is where you can configure telemetry options\n * @public\n */\nexport type Configuration = {\n auth: NodeAuthOptions;\n broker?: BrokerOptions;\n cache?: CacheOptions;\n system?: NodeSystemOptions;\n telemetry?: NodeTelemetryOptions;\n};\n\n/** @public */\nexport type ManagedIdentityIdParams = {\n userAssignedClientId?: string;\n userAssignedResourceId?: string;\n userAssignedObjectId?: string;\n};\n\n/** @public */\nexport type ManagedIdentityConfiguration = {\n clientCapabilities?: Array;\n managedIdentityIdParams?: ManagedIdentityIdParams;\n system?: NodeSystemOptions;\n};\n\nconst DEFAULT_AUTH_OPTIONS: Required = {\n clientId: Constants.EMPTY_STRING,\n authority: Constants.DEFAULT_AUTHORITY,\n clientSecret: Constants.EMPTY_STRING,\n clientAssertion: Constants.EMPTY_STRING,\n clientCertificate: {\n thumbprint: Constants.EMPTY_STRING,\n thumbprintSha256: Constants.EMPTY_STRING,\n privateKey: Constants.EMPTY_STRING,\n x5c: Constants.EMPTY_STRING,\n },\n knownAuthorities: [],\n cloudDiscoveryMetadata: Constants.EMPTY_STRING,\n authorityMetadata: Constants.EMPTY_STRING,\n clientCapabilities: [],\n protocolMode: ProtocolMode.AAD,\n azureCloudOptions: {\n azureCloudInstance: AzureCloudInstance.None,\n tenant: Constants.EMPTY_STRING,\n },\n skipAuthorityMetadataCache: false,\n encodeExtraQueryParams: false,\n};\n\nconst DEFAULT_CACHE_OPTIONS: CacheOptions = {\n claimsBasedCachingEnabled: false,\n};\n\nconst DEFAULT_LOGGER_OPTIONS: LoggerOptions = {\n loggerCallback: (): void => {\n // allow users to not set logger call back\n },\n piiLoggingEnabled: false,\n logLevel: LogLevel.Info,\n};\n\nconst DEFAULT_SYSTEM_OPTIONS: Required = {\n loggerOptions: DEFAULT_LOGGER_OPTIONS,\n networkClient: new HttpClient(),\n proxyUrl: Constants.EMPTY_STRING,\n customAgentOptions: {} as http.AgentOptions | https.AgentOptions,\n disableInternalRetries: false,\n};\n\nconst DEFAULT_TELEMETRY_OPTIONS: Required = {\n application: {\n appName: Constants.EMPTY_STRING,\n appVersion: Constants.EMPTY_STRING,\n },\n};\n\n/** @internal */\nexport type NodeConfiguration = {\n auth: Required;\n broker: BrokerOptions;\n cache: CacheOptions;\n system: Required;\n telemetry: Required;\n};\n\n/**\n * Sets the default options when not explicitly configured from app developer\n *\n * @param auth - Authentication options\n * @param cache - Cache options\n * @param system - System options\n * @param telemetry - Telemetry options\n *\n * @returns Configuration\n * @internal\n */\nexport function buildAppConfiguration({\n auth,\n broker,\n cache,\n system,\n telemetry,\n}: Configuration): NodeConfiguration {\n const systemOptions: Required = {\n ...DEFAULT_SYSTEM_OPTIONS,\n networkClient: new HttpClient(\n system?.proxyUrl,\n system?.customAgentOptions as http.AgentOptions | https.AgentOptions\n ),\n loggerOptions: system?.loggerOptions || DEFAULT_LOGGER_OPTIONS,\n disableInternalRetries: system?.disableInternalRetries || false,\n };\n\n // if client certificate was provided, ensure that at least one of the SHA-1 or SHA-256 thumbprints were provided\n if (\n !!auth.clientCertificate &&\n !!!auth.clientCertificate.thumbprint &&\n !!!auth.clientCertificate.thumbprintSha256\n ) {\n throw NodeAuthError.createStateNotFoundError();\n }\n\n return {\n auth: { ...DEFAULT_AUTH_OPTIONS, ...auth },\n broker: { ...broker },\n cache: { ...DEFAULT_CACHE_OPTIONS, ...cache },\n system: { ...systemOptions, ...system },\n telemetry: { ...DEFAULT_TELEMETRY_OPTIONS, ...telemetry },\n };\n}\n\n/** @internal */\nexport type ManagedIdentityNodeConfiguration = {\n clientCapabilities?: Array;\n disableInternalRetries: boolean;\n managedIdentityId: ManagedIdentityId;\n system: Required<\n Pick\n >;\n};\n\nexport function buildManagedIdentityConfiguration({\n clientCapabilities,\n managedIdentityIdParams,\n system,\n}: ManagedIdentityConfiguration): ManagedIdentityNodeConfiguration {\n const managedIdentityId: ManagedIdentityId = new ManagedIdentityId(\n managedIdentityIdParams\n );\n\n const loggerOptions: LoggerOptions =\n system?.loggerOptions || DEFAULT_LOGGER_OPTIONS;\n\n let networkClient: INetworkModule;\n // use developer provided network client if passed in\n if (system?.networkClient) {\n networkClient = system.networkClient;\n // otherwise, create a new one\n } else {\n networkClient = new HttpClient(\n system?.proxyUrl,\n system?.customAgentOptions as http.AgentOptions | https.AgentOptions\n );\n }\n\n return {\n clientCapabilities: clientCapabilities || [],\n managedIdentityId: managedIdentityId,\n system: {\n loggerOptions,\n networkClient,\n },\n disableInternalRetries: system?.disableInternalRetries || false,\n };\n}\n", "import crypto from 'crypto';\nconst rnds8Pool = new Uint8Array(256); // # of random values to pre-allocate\n\nlet poolPtr = rnds8Pool.length;\nexport default function rng() {\n if (poolPtr > rnds8Pool.length - 16) {\n crypto.randomFillSync(rnds8Pool);\n poolPtr = 0;\n }\n\n return rnds8Pool.slice(poolPtr, poolPtr += 16);\n}", "export default /^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i;", "import REGEX from './regex.js';\n\nfunction validate(uuid) {\n return typeof uuid === 'string' && REGEX.test(uuid);\n}\n\nexport default validate;", "import validate from './validate.js';\n/**\n * Convert array of 16 byte values to UUID string format of the form:\n * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX\n */\n\nconst byteToHex = [];\n\nfor (let i = 0; i < 256; ++i) {\n byteToHex.push((i + 0x100).toString(16).substr(1));\n}\n\nfunction stringify(arr, offset = 0) {\n // Note: Be careful editing this code! It's been tuned for performance\n // and works in ways you may not expect. See https://github.com/uuidjs/uuid/pull/434\n const uuid = (byteToHex[arr[offset + 0]] + byteToHex[arr[offset + 1]] + byteToHex[arr[offset + 2]] + byteToHex[arr[offset + 3]] + '-' + byteToHex[arr[offset + 4]] + byteToHex[arr[offset + 5]] + '-' + byteToHex[arr[offset + 6]] + byteToHex[arr[offset + 7]] + '-' + byteToHex[arr[offset + 8]] + byteToHex[arr[offset + 9]] + '-' + byteToHex[arr[offset + 10]] + byteToHex[arr[offset + 11]] + byteToHex[arr[offset + 12]] + byteToHex[arr[offset + 13]] + byteToHex[arr[offset + 14]] + byteToHex[arr[offset + 15]]).toLowerCase(); // Consistency check for valid UUID. If this throws, it's likely due to one\n // of the following:\n // - One or more input array values don't map to a hex octet (leading to\n // \"undefined\" in the uuid)\n // - Invalid input values for the RFC `version` or `variant` fields\n\n if (!validate(uuid)) {\n throw TypeError('Stringified UUID is invalid');\n }\n\n return uuid;\n}\n\nexport default stringify;", "import rng from './rng.js';\nimport stringify from './stringify.js';\n\nfunction v4(options, buf, offset) {\n options = options || {};\n const rnds = options.random || (options.rng || rng)(); // Per 4.4, set bits for version and `clock_seq_hi_and_reserved`\n\n rnds[6] = rnds[6] & 0x0f | 0x40;\n rnds[8] = rnds[8] & 0x3f | 0x80; // Copy bytes to buffer, if provided\n\n if (buf) {\n offset = offset || 0;\n\n for (let i = 0; i < 16; ++i) {\n buf[offset + i] = rnds[i];\n }\n\n return buf;\n }\n\n return stringify(rnds);\n}\n\nexport default v4;", "/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { IGuidGenerator } from \"@azure/msal-common/node\";\nimport { v4 as uuidv4 } from \"uuid\";\n\nexport class GuidGenerator implements IGuidGenerator {\n /**\n *\n * RFC4122: The version 4 UUID is meant for generating UUIDs from truly-random or pseudo-random numbers.\n * uuidv4 generates guids from cryprtographically-string random\n */\n generateGuid(): string {\n return uuidv4();\n }\n\n /**\n * verifies if a string is GUID\n * @param guid\n */\n isGuid(guid: string): boolean {\n const regexGuid =\n /^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i;\n return regexGuid.test(guid);\n }\n}\n", "/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { Constants, EncodingTypes } from \"@azure/msal-common/node\";\n\nexport class EncodingUtils {\n /**\n * 'utf8': Multibyte encoded Unicode characters. Many web pages and other document formats use UTF-8.\n * 'base64': Base64 encoding.\n *\n * @param str text\n */\n static base64Encode(str: string, encoding?: BufferEncoding): string {\n return Buffer.from(str, encoding).toString(EncodingTypes.BASE64);\n }\n\n /**\n * encode a URL\n * @param str\n */\n static base64EncodeUrl(str: string, encoding?: BufferEncoding): string {\n return EncodingUtils.base64Encode(str, encoding)\n .replace(/=/g, Constants.EMPTY_STRING)\n .replace(/\\+/g, \"-\")\n .replace(/\\//g, \"_\");\n }\n\n /**\n * 'utf8': Multibyte encoded Unicode characters. Many web pages and other document formats use UTF-8.\n * 'base64': Base64 encoding.\n *\n * @param base64Str Base64 encoded text\n */\n static base64Decode(base64Str: string): string {\n return Buffer.from(base64Str, EncodingTypes.BASE64).toString(\"utf8\");\n }\n\n /**\n * @param base64Str Base64 encoded Url\n */\n static base64DecodeUrl(base64Str: string): string {\n let str = base64Str.replace(/-/g, \"+\").replace(/_/g, \"/\");\n while (str.length % 4) {\n str += \"=\";\n }\n return EncodingUtils.base64Decode(str);\n }\n}\n", "/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { Hash } from \"../utils/Constants.js\";\nimport crypto from \"crypto\";\n\nexport class HashUtils {\n /**\n * generate 'SHA256' hash\n * @param buffer\n */\n sha256(buffer: string): Buffer {\n return crypto.createHash(Hash.SHA256).update(buffer).digest();\n }\n}\n", "/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { Constants, EncodingTypes, PkceCodes } from \"@azure/msal-common/node\";\nimport { CharSet, RANDOM_OCTET_SIZE } from \"../utils/Constants.js\";\nimport { EncodingUtils } from \"../utils/EncodingUtils.js\";\nimport { HashUtils } from \"./HashUtils.js\";\nimport crypto from \"crypto\";\n\n/**\n * https://tools.ietf.org/html/rfc7636#page-8\n */\nexport class PkceGenerator {\n private hashUtils: HashUtils;\n\n constructor() {\n this.hashUtils = new HashUtils();\n }\n /**\n * generates the codeVerfier and the challenge from the codeVerfier\n * reference: https://tools.ietf.org/html/rfc7636#section-4.1 and https://tools.ietf.org/html/rfc7636#section-4.2\n */\n async generatePkceCodes(): Promise {\n const verifier = this.generateCodeVerifier();\n const challenge = this.generateCodeChallengeFromVerifier(verifier);\n return { verifier, challenge };\n }\n\n /**\n * generates the codeVerfier; reference: https://tools.ietf.org/html/rfc7636#section-4.1\n */\n private generateCodeVerifier(): string {\n const charArr = [];\n const maxNumber = 256 - (256 % CharSet.CV_CHARSET.length);\n while (charArr.length <= RANDOM_OCTET_SIZE) {\n const byte = crypto.randomBytes(1)[0];\n if (byte >= maxNumber) {\n /*\n * Ignore this number to maintain randomness.\n * Including it would result in an unequal distribution of characters after doing the modulo\n */\n continue;\n }\n const index = byte % CharSet.CV_CHARSET.length;\n charArr.push(CharSet.CV_CHARSET[index]);\n }\n const verifier: string = charArr.join(Constants.EMPTY_STRING);\n return EncodingUtils.base64EncodeUrl(verifier);\n }\n\n /**\n * generate the challenge from the codeVerfier; reference: https://tools.ietf.org/html/rfc7636#section-4.2\n * @param codeVerifier\n */\n private generateCodeChallengeFromVerifier(codeVerifier: string): string {\n return EncodingUtils.base64EncodeUrl(\n this.hashUtils.sha256(codeVerifier).toString(EncodingTypes.BASE64),\n EncodingTypes.BASE64\n );\n }\n}\n", "/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { EncodingTypes, ICrypto, PkceCodes } from \"@azure/msal-common/node\";\nimport { GuidGenerator } from \"./GuidGenerator.js\";\nimport { EncodingUtils } from \"../utils/EncodingUtils.js\";\nimport { PkceGenerator } from \"./PkceGenerator.js\";\nimport { HashUtils } from \"./HashUtils.js\";\n\n/**\n * This class implements MSAL node's crypto interface, which allows it to perform base64 encoding and decoding, generating cryptographically random GUIDs and\n * implementing Proof Key for Code Exchange specs for the OAuth Authorization Code Flow using PKCE (rfc here: https://tools.ietf.org/html/rfc7636).\n * @public\n */\nexport class CryptoProvider implements ICrypto {\n private pkceGenerator: PkceGenerator;\n private guidGenerator: GuidGenerator;\n private hashUtils: HashUtils;\n\n constructor() {\n // Browser crypto needs to be validated first before any other classes can be set.\n this.pkceGenerator = new PkceGenerator();\n this.guidGenerator = new GuidGenerator();\n this.hashUtils = new HashUtils();\n }\n\n /**\n * base64 URL safe encoded string\n */\n base64UrlEncode(): string {\n throw new Error(\"Method not implemented.\");\n }\n /**\n * Stringifies and base64Url encodes input public key\n * @param inputKid - public key id\n * @returns Base64Url encoded public key\n */\n encodeKid(): string {\n throw new Error(\"Method not implemented.\");\n }\n\n /**\n * Creates a new random GUID - used to populate state and nonce.\n * @returns string (GUID)\n */\n createNewGuid(): string {\n return this.guidGenerator.generateGuid();\n }\n\n /**\n * Encodes input string to base64.\n * @param input - string to be encoded\n */\n base64Encode(input: string): string {\n return EncodingUtils.base64Encode(input);\n }\n\n /**\n * Decodes input string from base64.\n * @param input - string to be decoded\n */\n base64Decode(input: string): string {\n return EncodingUtils.base64Decode(input);\n }\n\n /**\n * Generates PKCE codes used in Authorization Code Flow.\n */\n generatePkceCodes(): Promise {\n return this.pkceGenerator.generatePkceCodes();\n }\n\n /**\n * Generates a keypair, stores it and returns a thumbprint - not yet implemented for node\n */\n getPublicKeyThumbprint(): Promise {\n throw new Error(\"Method not implemented.\");\n }\n\n /**\n * Removes cryptographic keypair from key store matching the keyId passed in\n * @param kid - public key id\n */\n removeTokenBindingKey(): Promise {\n throw new Error(\"Method not implemented.\");\n }\n\n /**\n * Removes all cryptographic keys from Keystore\n */\n clearKeystore(): Promise {\n throw new Error(\"Method not implemented.\");\n }\n\n /**\n * Signs the given object as a jwt payload with private key retrieved by given kid - currently not implemented for node\n */\n signJwt(): Promise {\n throw new Error(\"Method not implemented.\");\n }\n\n /**\n * Returns the SHA-256 hash of an input string\n */\n async hashString(plainText: string): Promise {\n return EncodingUtils.base64EncodeUrl(\n this.hashUtils.sha256(plainText).toString(EncodingTypes.BASE64),\n EncodingTypes.BASE64\n );\n }\n}\n", "/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport {\n TokenKeys,\n AccountEntity,\n IdTokenEntity,\n AccessTokenEntity,\n RefreshTokenEntity,\n AppMetadataEntity,\n ServerTelemetryEntity,\n ThrottlingEntity,\n CacheManager,\n Logger,\n ValidCacheType,\n ICrypto,\n AuthorityMetadataEntity,\n ValidCredentialType,\n StaticAuthorityOptions,\n CacheHelpers,\n} from \"@azure/msal-common/node\";\n\nimport { Deserializer } from \"./serializer/Deserializer.js\";\nimport { Serializer } from \"./serializer/Serializer.js\";\nimport {\n InMemoryCache,\n JsonCache,\n CacheKVStore,\n} from \"./serializer/SerializerTypes.js\";\nimport { StubPerformanceClient } from \"@azure/msal-common\";\n\n/**\n * This class implements Storage for node, reading cache from user specified storage location or an extension library\n * @public\n */\nexport class NodeStorage extends CacheManager {\n // Cache configuration, either set by user or default values.\n private logger: Logger;\n private cache: CacheKVStore = {};\n private changeEmitters: Array = [];\n\n constructor(\n logger: Logger,\n clientId: string,\n cryptoImpl: ICrypto,\n staticAuthorityOptions?: StaticAuthorityOptions\n ) {\n super(\n clientId,\n cryptoImpl,\n logger,\n new StubPerformanceClient(),\n staticAuthorityOptions\n );\n this.logger = logger;\n }\n\n /**\n * Queue up callbacks\n * @param func - a callback function for cache change indication\n */\n registerChangeEmitter(func: () => void): void {\n this.changeEmitters.push(func);\n }\n\n /**\n * Invoke the callback when cache changes\n */\n emitChange(): void {\n this.changeEmitters.forEach((func) => func.call(null));\n }\n\n /**\n * Converts cacheKVStore to InMemoryCache\n * @param cache - key value store\n */\n cacheToInMemoryCache(cache: CacheKVStore): InMemoryCache {\n const inMemoryCache: InMemoryCache = {\n accounts: {},\n idTokens: {},\n accessTokens: {},\n refreshTokens: {},\n appMetadata: {},\n };\n\n for (const key in cache) {\n const value = cache[key];\n if (typeof value !== \"object\") {\n continue;\n }\n if (value instanceof AccountEntity) {\n inMemoryCache.accounts[key] = value as AccountEntity;\n } else if (CacheHelpers.isIdTokenEntity(value)) {\n inMemoryCache.idTokens[key] = value as IdTokenEntity;\n } else if (CacheHelpers.isAccessTokenEntity(value)) {\n inMemoryCache.accessTokens[key] = value as AccessTokenEntity;\n } else if (CacheHelpers.isRefreshTokenEntity(value)) {\n inMemoryCache.refreshTokens[key] = value as RefreshTokenEntity;\n } else if (CacheHelpers.isAppMetadataEntity(key, value)) {\n inMemoryCache.appMetadata[key] = value as AppMetadataEntity;\n } else {\n continue;\n }\n }\n\n return inMemoryCache;\n }\n\n /**\n * converts inMemoryCache to CacheKVStore\n * @param inMemoryCache - kvstore map for inmemory\n */\n inMemoryCacheToCache(inMemoryCache: InMemoryCache): CacheKVStore {\n // convert in memory cache to a flat Key-Value map\n let cache = this.getCache();\n\n cache = {\n ...cache,\n ...inMemoryCache.accounts,\n ...inMemoryCache.idTokens,\n ...inMemoryCache.accessTokens,\n ...inMemoryCache.refreshTokens,\n ...inMemoryCache.appMetadata,\n };\n\n // convert in memory cache to a flat Key-Value map\n return cache;\n }\n\n /**\n * gets the current in memory cache for the client\n */\n getInMemoryCache(): InMemoryCache {\n this.logger.trace(\"Getting in-memory cache\");\n\n // convert the cache key value store to inMemoryCache\n const inMemoryCache = this.cacheToInMemoryCache(this.getCache());\n return inMemoryCache;\n }\n\n /**\n * sets the current in memory cache for the client\n * @param inMemoryCache - key value map in memory\n */\n setInMemoryCache(inMemoryCache: InMemoryCache): void {\n this.logger.trace(\"Setting in-memory cache\");\n\n // convert and append the inMemoryCache to cacheKVStore\n const cache = this.inMemoryCacheToCache(inMemoryCache);\n this.setCache(cache);\n\n this.emitChange();\n }\n\n /**\n * get the current cache key-value store\n */\n getCache(): CacheKVStore {\n this.logger.trace(\"Getting cache key-value store\");\n return this.cache;\n }\n\n /**\n * sets the current cache (key value store)\n * @param cacheMap - key value map\n */\n setCache(cache: CacheKVStore): void {\n this.logger.trace(\"Setting cache key value store\");\n this.cache = cache;\n\n // mark change in cache\n this.emitChange();\n }\n\n /**\n * Gets cache item with given key.\n * @param key - lookup key for the cache entry\n */\n getItem(key: string): ValidCacheType {\n this.logger.tracePii(`Item key: ${key}`);\n\n // read cache\n const cache = this.getCache();\n return cache[key];\n }\n\n /**\n * Gets cache item with given key-value\n * @param key - lookup key for the cache entry\n * @param value - value of the cache entry\n */\n setItem(key: string, value: ValidCacheType): void {\n this.logger.tracePii(`Item key: ${key}`);\n\n // read cache\n const cache = this.getCache();\n cache[key] = value;\n\n // write to cache\n this.setCache(cache);\n }\n\n getAccountKeys(): string[] {\n const inMemoryCache = this.getInMemoryCache();\n const accountKeys = Object.keys(inMemoryCache.accounts);\n\n return accountKeys;\n }\n\n getTokenKeys(): TokenKeys {\n const inMemoryCache = this.getInMemoryCache();\n const tokenKeys = {\n idToken: Object.keys(inMemoryCache.idTokens),\n accessToken: Object.keys(inMemoryCache.accessTokens),\n refreshToken: Object.keys(inMemoryCache.refreshTokens),\n };\n\n return tokenKeys;\n }\n\n /**\n * Reads account from cache, builds it into an account entity and returns it.\n * @param accountKey - lookup key to fetch cache type AccountEntity\n * @returns\n */\n getAccount(accountKey: string): AccountEntity | null {\n const cachedAccount = this.getItem(accountKey);\n return cachedAccount\n ? Object.assign(new AccountEntity(), this.getItem(accountKey))\n : null;\n }\n\n /**\n * set account entity\n * @param account - cache value to be set of type AccountEntity\n */\n async setAccount(account: AccountEntity): Promise {\n const accountKey = account.generateAccountKey();\n this.setItem(accountKey, account);\n }\n\n /**\n * fetch the idToken credential\n * @param idTokenKey - lookup key to fetch cache type IdTokenEntity\n */\n getIdTokenCredential(idTokenKey: string): IdTokenEntity | null {\n const idToken = this.getItem(idTokenKey) as IdTokenEntity;\n if (CacheHelpers.isIdTokenEntity(idToken)) {\n return idToken;\n }\n return null;\n }\n\n /**\n * set idToken credential\n * @param idToken - cache value to be set of type IdTokenEntity\n */\n async setIdTokenCredential(idToken: IdTokenEntity): Promise {\n const idTokenKey = CacheHelpers.generateCredentialKey(idToken);\n this.setItem(idTokenKey, idToken);\n }\n\n /**\n * fetch the accessToken credential\n * @param accessTokenKey - lookup key to fetch cache type AccessTokenEntity\n */\n getAccessTokenCredential(accessTokenKey: string): AccessTokenEntity | null {\n const accessToken = this.getItem(accessTokenKey) as AccessTokenEntity;\n if (CacheHelpers.isAccessTokenEntity(accessToken)) {\n return accessToken;\n }\n return null;\n }\n\n /**\n * set accessToken credential\n * @param accessToken - cache value to be set of type AccessTokenEntity\n */\n async setAccessTokenCredential(\n accessToken: AccessTokenEntity\n ): Promise {\n const accessTokenKey = CacheHelpers.generateCredentialKey(accessToken);\n this.setItem(accessTokenKey, accessToken);\n }\n\n /**\n * fetch the refreshToken credential\n * @param refreshTokenKey - lookup key to fetch cache type RefreshTokenEntity\n */\n getRefreshTokenCredential(\n refreshTokenKey: string\n ): RefreshTokenEntity | null {\n const refreshToken = this.getItem(\n refreshTokenKey\n ) as RefreshTokenEntity;\n if (CacheHelpers.isRefreshTokenEntity(refreshToken)) {\n return refreshToken as RefreshTokenEntity;\n }\n return null;\n }\n\n /**\n * set refreshToken credential\n * @param refreshToken - cache value to be set of type RefreshTokenEntity\n */\n async setRefreshTokenCredential(\n refreshToken: RefreshTokenEntity\n ): Promise {\n const refreshTokenKey =\n CacheHelpers.generateCredentialKey(refreshToken);\n this.setItem(refreshTokenKey, refreshToken);\n }\n\n /**\n * fetch appMetadata entity from the platform cache\n * @param appMetadataKey - lookup key to fetch cache type AppMetadataEntity\n */\n getAppMetadata(appMetadataKey: string): AppMetadataEntity | null {\n const appMetadata: AppMetadataEntity = this.getItem(\n appMetadataKey\n ) as AppMetadataEntity;\n if (CacheHelpers.isAppMetadataEntity(appMetadataKey, appMetadata)) {\n return appMetadata;\n }\n return null;\n }\n\n /**\n * set appMetadata entity to the platform cache\n * @param appMetadata - cache value to be set of type AppMetadataEntity\n */\n setAppMetadata(appMetadata: AppMetadataEntity): void {\n const appMetadataKey = CacheHelpers.generateAppMetadataKey(appMetadata);\n this.setItem(appMetadataKey, appMetadata);\n }\n\n /**\n * fetch server telemetry entity from the platform cache\n * @param serverTelemetrykey - lookup key to fetch cache type ServerTelemetryEntity\n */\n getServerTelemetry(\n serverTelemetrykey: string\n ): ServerTelemetryEntity | null {\n const serverTelemetryEntity: ServerTelemetryEntity = this.getItem(\n serverTelemetrykey\n ) as ServerTelemetryEntity;\n if (\n serverTelemetryEntity &&\n CacheHelpers.isServerTelemetryEntity(\n serverTelemetrykey,\n serverTelemetryEntity\n )\n ) {\n return serverTelemetryEntity;\n }\n return null;\n }\n\n /**\n * set server telemetry entity to the platform cache\n * @param serverTelemetryKey - lookup key to fetch cache type ServerTelemetryEntity\n * @param serverTelemetry - cache value to be set of type ServerTelemetryEntity\n */\n setServerTelemetry(\n serverTelemetryKey: string,\n serverTelemetry: ServerTelemetryEntity\n ): void {\n this.setItem(serverTelemetryKey, serverTelemetry);\n }\n\n /**\n * fetch authority metadata entity from the platform cache\n * @param key - lookup key to fetch cache type AuthorityMetadataEntity\n */\n getAuthorityMetadata(key: string): AuthorityMetadataEntity | null {\n const authorityMetadataEntity: AuthorityMetadataEntity = this.getItem(\n key\n ) as AuthorityMetadataEntity;\n if (\n authorityMetadataEntity &&\n CacheHelpers.isAuthorityMetadataEntity(key, authorityMetadataEntity)\n ) {\n return authorityMetadataEntity;\n }\n return null;\n }\n\n /**\n * Get all authority metadata keys\n */\n getAuthorityMetadataKeys(): Array {\n return this.getKeys().filter((key) => {\n return this.isAuthorityMetadata(key);\n });\n }\n\n /**\n * set authority metadata entity to the platform cache\n * @param key - lookup key to fetch cache type AuthorityMetadataEntity\n * @param metadata - cache value to be set of type AuthorityMetadataEntity\n */\n setAuthorityMetadata(key: string, metadata: AuthorityMetadataEntity): void {\n this.setItem(key, metadata);\n }\n\n /**\n * fetch throttling entity from the platform cache\n * @param throttlingCacheKey - lookup key to fetch cache type ThrottlingEntity\n */\n getThrottlingCache(throttlingCacheKey: string): ThrottlingEntity | null {\n const throttlingCache: ThrottlingEntity = this.getItem(\n throttlingCacheKey\n ) as ThrottlingEntity;\n if (\n throttlingCache &&\n CacheHelpers.isThrottlingEntity(throttlingCacheKey, throttlingCache)\n ) {\n return throttlingCache;\n }\n return null;\n }\n\n /**\n * set throttling entity to the platform cache\n * @param throttlingCacheKey - lookup key to fetch cache type ThrottlingEntity\n * @param throttlingCache - cache value to be set of type ThrottlingEntity\n */\n setThrottlingCache(\n throttlingCacheKey: string,\n throttlingCache: ThrottlingEntity\n ): void {\n this.setItem(throttlingCacheKey, throttlingCache);\n }\n\n /**\n * Removes the cache item from memory with the given key.\n * @param key - lookup key to remove a cache entity\n * @param inMemory - key value map of the cache\n */\n removeItem(key: string): boolean {\n this.logger.tracePii(`Item key: ${key}`);\n\n // read inMemoryCache\n let result: boolean = false;\n const cache = this.getCache();\n\n if (!!cache[key]) {\n delete cache[key];\n result = true;\n }\n\n // write to the cache after removal\n if (result) {\n this.setCache(cache);\n this.emitChange();\n }\n return result;\n }\n\n /**\n * Remove account entity from the platform cache if it's outdated\n * @param accountKey - lookup key to fetch cache type AccountEntity\n */\n removeOutdatedAccount(accountKey: string): void {\n this.removeItem(accountKey);\n }\n\n /**\n * Checks whether key is in cache.\n * @param key - look up key for a cache entity\n */\n containsKey(key: string): boolean {\n return this.getKeys().includes(key);\n }\n\n /**\n * Gets all keys in window.\n */\n getKeys(): string[] {\n this.logger.trace(\"Retrieving all cache keys\");\n\n // read cache\n const cache = this.getCache();\n return [...Object.keys(cache)];\n }\n\n /**\n * Clears all cache entries created by MSAL (except tokens).\n */\n clear(): void {\n this.logger.trace(\"Clearing cache entries created by MSAL\");\n\n // read inMemoryCache\n const cacheKeys = this.getKeys();\n\n // delete each element\n cacheKeys.forEach((key) => {\n this.removeItem(key);\n });\n this.emitChange();\n }\n\n /**\n * Initialize in memory cache from an exisiting cache vault\n * @param cache - blob formatted cache (JSON)\n */\n static generateInMemoryCache(cache: string): InMemoryCache {\n return Deserializer.deserializeAllCache(\n Deserializer.deserializeJSONBlob(cache)\n );\n }\n\n /**\n * retrieves the final JSON\n * @param inMemoryCache - itemised cache read from the JSON\n */\n static generateJsonCache(inMemoryCache: InMemoryCache): JsonCache {\n return Serializer.serializeAllCache(inMemoryCache);\n }\n\n /**\n * Updates a credential's cache key if the current cache key is outdated\n */\n updateCredentialCacheKey(\n currentCacheKey: string,\n credential: ValidCredentialType\n ): string {\n const updatedCacheKey = CacheHelpers.generateCredentialKey(credential);\n\n if (currentCacheKey !== updatedCacheKey) {\n const cacheItem = this.getItem(currentCacheKey);\n if (cacheItem) {\n this.removeItem(currentCacheKey);\n this.setItem(updatedCacheKey, cacheItem);\n this.logger.verbose(\n `Updated an outdated ${credential.credentialType} cache key`\n );\n return updatedCacheKey;\n } else {\n this.logger.error(\n `Attempted to update an outdated ${credential.credentialType} cache key but no item matching the outdated key was found in storage`\n );\n }\n }\n\n return currentCacheKey;\n }\n}\n", "/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { NodeStorage } from \"./NodeStorage.js\";\nimport {\n AccountEntity,\n AccountInfo,\n Logger,\n ISerializableTokenCache,\n ICachePlugin,\n TokenCacheContext,\n} from \"@azure/msal-common/node\";\nimport {\n InMemoryCache,\n JsonCache,\n SerializedAccountEntity,\n SerializedAccessTokenEntity,\n SerializedRefreshTokenEntity,\n SerializedIdTokenEntity,\n SerializedAppMetadataEntity,\n CacheKVStore,\n} from \"./serializer/SerializerTypes.js\";\nimport { Deserializer } from \"./serializer/Deserializer.js\";\nimport { Serializer } from \"./serializer/Serializer.js\";\nimport { ITokenCache } from \"./ITokenCache.js\";\nimport { CryptoProvider } from \"../crypto/CryptoProvider.js\";\nimport { GuidGenerator } from \"../crypto/GuidGenerator.js\";\n\nconst defaultSerializedCache: JsonCache = {\n Account: {},\n IdToken: {},\n AccessToken: {},\n RefreshToken: {},\n AppMetadata: {},\n};\n\n/**\n * In-memory token cache manager\n * @public\n */\nexport class TokenCache implements ISerializableTokenCache, ITokenCache {\n private storage: NodeStorage;\n private cacheHasChanged: boolean;\n private cacheSnapshot: string;\n public readonly persistence: ICachePlugin;\n private logger: Logger;\n\n constructor(\n storage: NodeStorage,\n logger: Logger,\n cachePlugin?: ICachePlugin\n ) {\n this.cacheHasChanged = false;\n this.storage = storage;\n this.storage.registerChangeEmitter(this.handleChangeEvent.bind(this));\n if (cachePlugin) {\n this.persistence = cachePlugin;\n }\n this.logger = logger;\n }\n\n /**\n * Set to true if cache state has changed since last time serialize or writeToPersistence was called\n */\n hasChanged(): boolean {\n return this.cacheHasChanged;\n }\n\n /**\n * Serializes in memory cache to JSON\n */\n serialize(): string {\n this.logger.trace(\"Serializing in-memory cache\");\n let finalState = Serializer.serializeAllCache(\n this.storage.getInMemoryCache() as InMemoryCache\n );\n\n // if cacheSnapshot not null or empty, merge\n if (this.cacheSnapshot) {\n this.logger.trace(\"Reading cache snapshot from disk\");\n finalState = this.mergeState(\n JSON.parse(this.cacheSnapshot),\n finalState\n );\n } else {\n this.logger.trace(\"No cache snapshot to merge\");\n }\n this.cacheHasChanged = false;\n\n return JSON.stringify(finalState);\n }\n\n /**\n * Deserializes JSON to in-memory cache. JSON should be in MSAL cache schema format\n * @param cache - blob formatted cache\n */\n deserialize(cache: string): void {\n this.logger.trace(\"Deserializing JSON to in-memory cache\");\n this.cacheSnapshot = cache;\n\n if (this.cacheSnapshot) {\n this.logger.trace(\"Reading cache snapshot from disk\");\n const deserializedCache = Deserializer.deserializeAllCache(\n this.overlayDefaults(JSON.parse(this.cacheSnapshot))\n );\n this.storage.setInMemoryCache(deserializedCache);\n } else {\n this.logger.trace(\"No cache snapshot to deserialize\");\n }\n }\n\n /**\n * Fetches the cache key-value map\n */\n getKVStore(): CacheKVStore {\n return this.storage.getCache();\n }\n\n /**\n * Gets cache snapshot in CacheKVStore format\n */\n getCacheSnapshot(): CacheKVStore {\n const deserializedPersistentStorage = NodeStorage.generateInMemoryCache(\n this.cacheSnapshot\n );\n return this.storage.inMemoryCacheToCache(deserializedPersistentStorage);\n }\n\n /**\n * API that retrieves all accounts currently in cache to the user\n */\n async getAllAccounts(\n correlationId: string = new CryptoProvider().createNewGuid()\n ): Promise {\n this.logger.trace(\"getAllAccounts called\");\n let cacheContext;\n try {\n if (this.persistence) {\n cacheContext = new TokenCacheContext(this, false);\n await this.persistence.beforeCacheAccess(cacheContext);\n }\n return this.storage.getAllAccounts({}, correlationId);\n } finally {\n if (this.persistence && cacheContext) {\n await this.persistence.afterCacheAccess(cacheContext);\n }\n }\n }\n\n /**\n * Returns the signed in account matching homeAccountId.\n * (the account object is created at the time of successful login)\n * or null when no matching account is found\n * @param homeAccountId - unique identifier for an account (uid.utid)\n */\n async getAccountByHomeId(\n homeAccountId: string\n ): Promise {\n const allAccounts = await this.getAllAccounts();\n if (homeAccountId && allAccounts && allAccounts.length) {\n return (\n allAccounts.filter(\n (accountObj) => accountObj.homeAccountId === homeAccountId\n )[0] || null\n );\n } else {\n return null;\n }\n }\n\n /**\n * Returns the signed in account matching localAccountId.\n * (the account object is created at the time of successful login)\n * or null when no matching account is found\n * @param localAccountId - unique identifier of an account (sub/obj when homeAccountId cannot be populated)\n */\n async getAccountByLocalId(\n localAccountId: string\n ): Promise {\n const allAccounts = await this.getAllAccounts();\n if (localAccountId && allAccounts && allAccounts.length) {\n return (\n allAccounts.filter(\n (accountObj) => accountObj.localAccountId === localAccountId\n )[0] || null\n );\n } else {\n return null;\n }\n }\n\n /**\n * API to remove a specific account and the relevant data from cache\n * @param account - AccountInfo passed by the user\n */\n async removeAccount(\n account: AccountInfo,\n correlationId?: string\n ): Promise {\n this.logger.trace(\"removeAccount called\");\n let cacheContext;\n try {\n if (this.persistence) {\n cacheContext = new TokenCacheContext(this, true);\n await this.persistence.beforeCacheAccess(cacheContext);\n }\n this.storage.removeAccount(\n AccountEntity.generateAccountCacheKey(account),\n correlationId || new GuidGenerator().generateGuid()\n );\n } finally {\n if (this.persistence && cacheContext) {\n await this.persistence.afterCacheAccess(cacheContext);\n }\n }\n }\n\n /**\n * Overwrites in-memory cache with persistent cache\n */\n async overwriteCache(): Promise {\n if (!this.persistence) {\n this.logger.info(\n \"No persistence layer specified, cache cannot be overwritten\"\n );\n return;\n }\n this.logger.info(\"Overwriting in-memory cache with persistent cache\");\n this.storage.clear();\n const cacheContext = new TokenCacheContext(this, false);\n await this.persistence.beforeCacheAccess(cacheContext);\n const cacheSnapshot = this.getCacheSnapshot();\n this.storage.setCache(cacheSnapshot);\n await this.persistence.afterCacheAccess(cacheContext);\n }\n\n /**\n * Called when the cache has changed state.\n */\n private handleChangeEvent() {\n this.cacheHasChanged = true;\n }\n\n /**\n * Merge in memory cache with the cache snapshot.\n * @param oldState - cache before changes\n * @param currentState - current cache state in the library\n */\n private mergeState(\n oldState: JsonCache,\n currentState: JsonCache\n ): JsonCache {\n this.logger.trace(\"Merging in-memory cache with cache snapshot\");\n const stateAfterRemoval = this.mergeRemovals(oldState, currentState);\n return this.mergeUpdates(stateAfterRemoval, currentState);\n }\n\n /**\n * Deep update of oldState based on newState values\n * @param oldState - cache before changes\n * @param newState - updated cache\n */\n private mergeUpdates(oldState: object, newState: object): JsonCache {\n Object.keys(newState).forEach((newKey: string) => {\n const newValue = newState[newKey];\n\n // if oldState does not contain value but newValue does, add it\n if (!oldState.hasOwnProperty(newKey)) {\n if (newValue !== null) {\n oldState[newKey] = newValue;\n }\n } else {\n // both oldState and newState contain the key, do deep update\n const newValueNotNull = newValue !== null;\n const newValueIsObject = typeof newValue === \"object\";\n const newValueIsNotArray = !Array.isArray(newValue);\n const oldStateNotUndefinedOrNull =\n typeof oldState[newKey] !== \"undefined\" &&\n oldState[newKey] !== null;\n\n if (\n newValueNotNull &&\n newValueIsObject &&\n newValueIsNotArray &&\n oldStateNotUndefinedOrNull\n ) {\n this.mergeUpdates(oldState[newKey], newValue);\n } else {\n oldState[newKey] = newValue;\n }\n }\n });\n\n return oldState as JsonCache;\n }\n\n /**\n * Removes entities in oldState that the were removed from newState. If there are any unknown values in root of\n * oldState that are not recognized, they are left untouched.\n * @param oldState - cache before changes\n * @param newState - updated cache\n */\n private mergeRemovals(oldState: JsonCache, newState: JsonCache): JsonCache {\n this.logger.trace(\"Remove updated entries in cache\");\n const accounts = oldState.Account\n ? this.mergeRemovalsDict(\n oldState.Account,\n newState.Account\n )\n : oldState.Account;\n const accessTokens = oldState.AccessToken\n ? this.mergeRemovalsDict(\n oldState.AccessToken,\n newState.AccessToken\n )\n : oldState.AccessToken;\n const refreshTokens = oldState.RefreshToken\n ? this.mergeRemovalsDict(\n oldState.RefreshToken,\n newState.RefreshToken\n )\n : oldState.RefreshToken;\n const idTokens = oldState.IdToken\n ? this.mergeRemovalsDict(\n oldState.IdToken,\n newState.IdToken\n )\n : oldState.IdToken;\n const appMetadata = oldState.AppMetadata\n ? this.mergeRemovalsDict(\n oldState.AppMetadata,\n newState.AppMetadata\n )\n : oldState.AppMetadata;\n\n return {\n ...oldState,\n Account: accounts,\n AccessToken: accessTokens,\n RefreshToken: refreshTokens,\n IdToken: idTokens,\n AppMetadata: appMetadata,\n };\n }\n\n /**\n * Helper to merge new cache with the old one\n * @param oldState - cache before changes\n * @param newState - updated cache\n */\n private mergeRemovalsDict(\n oldState: Record,\n newState?: Record\n ): Record {\n const finalState = { ...oldState };\n Object.keys(oldState).forEach((oldKey) => {\n if (!newState || !newState.hasOwnProperty(oldKey)) {\n delete finalState[oldKey];\n }\n });\n return finalState;\n }\n\n /**\n * Helper to overlay as a part of cache merge\n * @param passedInCache - cache read from the blob\n */\n private overlayDefaults(passedInCache: JsonCache): JsonCache {\n this.logger.trace(\"Overlaying input cache with the default cache\");\n return {\n Account: {\n ...defaultSerializedCache.Account,\n ...passedInCache.Account,\n },\n IdToken: {\n ...defaultSerializedCache.IdToken,\n ...passedInCache.IdToken,\n },\n AccessToken: {\n ...defaultSerializedCache.AccessToken,\n ...passedInCache.AccessToken,\n },\n RefreshToken: {\n ...defaultSerializedCache.RefreshToken,\n ...passedInCache.RefreshToken,\n },\n AppMetadata: {\n ...defaultSerializedCache.AppMetadata,\n ...passedInCache.AppMetadata,\n },\n };\n }\n}\n", "/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport jwt from \"jsonwebtoken\";\nimport {\n TimeUtils,\n Constants,\n createClientAuthError,\n ClientAuthErrorCodes,\n EncodingTypes,\n} from \"@azure/msal-common/node\";\nimport { CryptoProvider } from \"../crypto/CryptoProvider.js\";\nimport { EncodingUtils } from \"../utils/EncodingUtils.js\";\nimport { JwtConstants } from \"../utils/Constants.js\";\n\n/**\n * Client assertion of type jwt-bearer used in confidential client flows\n * @public\n */\nexport class ClientAssertion {\n private jwt: string;\n private privateKey: string;\n private thumbprint: string;\n private useSha256: boolean;\n private expirationTime: number;\n private issuer: string;\n private jwtAudience: string;\n private publicCertificate: Array;\n\n /**\n * Initialize the ClientAssertion class from the clientAssertion passed by the user\n * @param assertion - refer https://tools.ietf.org/html/rfc7521\n */\n public static fromAssertion(assertion: string): ClientAssertion {\n const clientAssertion = new ClientAssertion();\n clientAssertion.jwt = assertion;\n return clientAssertion;\n }\n\n /**\n * @deprecated Use fromCertificateWithSha256Thumbprint instead, with a SHA-256 thumprint\n * Initialize the ClientAssertion class from the certificate passed by the user\n * @param thumbprint - identifier of a certificate\n * @param privateKey - secret key\n * @param publicCertificate - electronic document provided to prove the ownership of the public key\n */\n public static fromCertificate(\n thumbprint: string,\n privateKey: string,\n publicCertificate?: string\n ): ClientAssertion {\n const clientAssertion = new ClientAssertion();\n clientAssertion.privateKey = privateKey;\n clientAssertion.thumbprint = thumbprint;\n clientAssertion.useSha256 = false;\n if (publicCertificate) {\n clientAssertion.publicCertificate =\n this.parseCertificate(publicCertificate);\n }\n return clientAssertion;\n }\n\n /**\n * Initialize the ClientAssertion class from the certificate passed by the user\n * @param thumbprint - identifier of a certificate\n * @param privateKey - secret key\n * @param publicCertificate - electronic document provided to prove the ownership of the public key\n */\n public static fromCertificateWithSha256Thumbprint(\n thumbprint: string,\n privateKey: string,\n publicCertificate?: string\n ): ClientAssertion {\n const clientAssertion = new ClientAssertion();\n clientAssertion.privateKey = privateKey;\n clientAssertion.thumbprint = thumbprint;\n clientAssertion.useSha256 = true;\n if (publicCertificate) {\n clientAssertion.publicCertificate =\n this.parseCertificate(publicCertificate);\n }\n return clientAssertion;\n }\n\n /**\n * Update JWT for certificate based clientAssertion, if passed by the user, uses it as is\n * @param cryptoProvider - library's crypto helper\n * @param issuer - iss claim\n * @param jwtAudience - aud claim\n */\n public getJwt(\n cryptoProvider: CryptoProvider,\n issuer: string,\n jwtAudience: string\n ): string {\n // if assertion was created from certificate, check if jwt is expired and create new one.\n if (this.privateKey && this.thumbprint) {\n if (\n this.jwt &&\n !this.isExpired() &&\n issuer === this.issuer &&\n jwtAudience === this.jwtAudience\n ) {\n return this.jwt;\n }\n\n return this.createJwt(cryptoProvider, issuer, jwtAudience);\n }\n\n /*\n * if assertion was created by caller, then we just append it. It is up to the caller to\n * ensure that it contains necessary claims and that it is not expired.\n */\n if (this.jwt) {\n return this.jwt;\n }\n\n throw createClientAuthError(ClientAuthErrorCodes.invalidAssertion);\n }\n\n /**\n * JWT format and required claims specified: https://tools.ietf.org/html/rfc7523#section-3\n */\n private createJwt(\n cryptoProvider: CryptoProvider,\n issuer: string,\n jwtAudience: string\n ): string {\n this.issuer = issuer;\n this.jwtAudience = jwtAudience;\n const issuedAt = TimeUtils.nowSeconds();\n this.expirationTime = issuedAt + 600;\n\n const algorithm = this.useSha256\n ? JwtConstants.PSS_256\n : JwtConstants.RSA_256;\n const header: jwt.JwtHeader = {\n alg: algorithm,\n };\n\n const thumbprintHeader = this.useSha256\n ? JwtConstants.X5T_256\n : JwtConstants.X5T;\n Object.assign(header, {\n [thumbprintHeader]: EncodingUtils.base64EncodeUrl(\n this.thumbprint,\n EncodingTypes.HEX\n ),\n } as Partial);\n\n if (this.publicCertificate) {\n Object.assign(header, {\n [JwtConstants.X5C]: this.publicCertificate,\n } as Partial);\n }\n\n const payload = {\n [JwtConstants.AUDIENCE]: this.jwtAudience,\n [JwtConstants.EXPIRATION_TIME]: this.expirationTime,\n [JwtConstants.ISSUER]: this.issuer,\n [JwtConstants.SUBJECT]: this.issuer,\n [JwtConstants.NOT_BEFORE]: issuedAt,\n [JwtConstants.JWT_ID]: cryptoProvider.createNewGuid(),\n };\n\n this.jwt = jwt.sign(payload, this.privateKey, { header });\n return this.jwt;\n }\n\n /**\n * Utility API to check expiration\n */\n private isExpired(): boolean {\n return this.expirationTime < TimeUtils.nowSeconds();\n }\n\n /**\n * Extracts the raw certs from a given certificate string and returns them in an array.\n * @param publicCertificate - electronic document provided to prove the ownership of the public key\n */\n public static parseCertificate(publicCertificate: string): Array {\n /**\n * This is regex to identify the certs in a given certificate string.\n * We want to look for the contents between the BEGIN and END certificate strings, without the associated newlines.\n * The information in parens \"(.+?)\" is the capture group to represent the cert we want isolated.\n * \".\" means any string character, \"+\" means match 1 or more times, and \"?\" means the shortest match.\n * The \"g\" at the end of the regex means search the string globally, and the \"s\" enables the \".\" to match newlines.\n */\n const regexToFindCerts =\n /-----BEGIN CERTIFICATE-----\\r*\\n(.+?)\\r*\\n-----END CERTIFICATE-----/gs;\n const certs: string[] = [];\n\n let matches;\n while ((matches = regexToFindCerts.exec(publicCertificate)) !== null) {\n // matches[1] represents the first parens capture group in the regex.\n certs.push(matches[1].replace(/\\r*\\n/g, Constants.EMPTY_STRING));\n }\n\n return certs;\n }\n}\n", "/* eslint-disable header/header */\nexport const name = \"@azure/msal-node\";\nexport const version = \"3.6.2\";\n", "/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport {\n AuthenticationResult,\n Authority,\n BaseClient,\n CcsCredentialType,\n ClientAssertion,\n ClientConfiguration,\n CommonUsernamePasswordRequest,\n GrantType,\n NetworkResponse,\n OAuthResponseType,\n RequestParameterBuilder,\n RequestThumbprint,\n ResponseHandler,\n ServerAuthorizationTokenResponse,\n StringUtils,\n TimeUtils,\n UrlString,\n UrlUtils,\n getClientAssertion,\n} from \"@azure/msal-common/node\";\n\n/**\n * Oauth2.0 Password grant client\n * Note: We are only supporting public clients for password grant and for purely testing purposes\n * @public\n * @deprecated - Use a more secure flow instead\n */\nexport class UsernamePasswordClient extends BaseClient {\n constructor(configuration: ClientConfiguration) {\n super(configuration);\n }\n\n /**\n * API to acquire a token by passing the username and password to the service in exchage of credentials\n * password_grant\n * @param request - CommonUsernamePasswordRequest\n */\n async acquireToken(\n request: CommonUsernamePasswordRequest\n ): Promise {\n this.logger.info(\"in acquireToken call in username-password client\");\n\n const reqTimestamp = TimeUtils.nowSeconds();\n const response = await this.executeTokenRequest(\n this.authority,\n request\n );\n\n const responseHandler = new ResponseHandler(\n this.config.authOptions.clientId,\n this.cacheManager,\n this.cryptoUtils,\n this.logger,\n this.config.serializableCache,\n this.config.persistencePlugin\n );\n\n // Validate response. This function throws a server error if an error is returned by the server.\n responseHandler.validateTokenResponse(response.body);\n const tokenResponse = responseHandler.handleServerTokenResponse(\n response.body,\n this.authority,\n reqTimestamp,\n request\n );\n\n return tokenResponse;\n }\n\n /**\n * Executes POST request to token endpoint\n * @param authority - authority object\n * @param request - CommonUsernamePasswordRequest provided by the developer\n */\n private async executeTokenRequest(\n authority: Authority,\n request: CommonUsernamePasswordRequest\n ): Promise> {\n const queryParametersString = this.createTokenQueryParameters(request);\n const endpoint = UrlString.appendQueryString(\n authority.tokenEndpoint,\n queryParametersString\n );\n const requestBody = await this.createTokenRequestBody(request);\n const headers: Record = this.createTokenRequestHeaders({\n credential: request.username,\n type: CcsCredentialType.UPN,\n });\n const thumbprint: RequestThumbprint = {\n clientId: this.config.authOptions.clientId,\n authority: authority.canonicalAuthority,\n scopes: request.scopes,\n claims: request.claims,\n authenticationScheme: request.authenticationScheme,\n resourceRequestMethod: request.resourceRequestMethod,\n resourceRequestUri: request.resourceRequestUri,\n shrClaims: request.shrClaims,\n sshKid: request.sshKid,\n };\n\n return this.executePostToTokenEndpoint(\n endpoint,\n requestBody,\n headers,\n thumbprint,\n request.correlationId\n );\n }\n\n /**\n * Generates a map for all the params to be sent to the service\n * @param request - CommonUsernamePasswordRequest provided by the developer\n */\n private async createTokenRequestBody(\n request: CommonUsernamePasswordRequest\n ): Promise {\n const parameters = new Map();\n\n RequestParameterBuilder.addClientId(\n parameters,\n this.config.authOptions.clientId\n );\n RequestParameterBuilder.addUsername(parameters, request.username);\n RequestParameterBuilder.addPassword(parameters, request.password);\n\n RequestParameterBuilder.addScopes(parameters, request.scopes);\n\n RequestParameterBuilder.addResponseType(\n parameters,\n OAuthResponseType.IDTOKEN_TOKEN\n );\n\n RequestParameterBuilder.addGrantType(\n parameters,\n GrantType.RESOURCE_OWNER_PASSWORD_GRANT\n );\n RequestParameterBuilder.addClientInfo(parameters);\n\n RequestParameterBuilder.addLibraryInfo(\n parameters,\n this.config.libraryInfo\n );\n RequestParameterBuilder.addApplicationTelemetry(\n parameters,\n this.config.telemetry.application\n );\n RequestParameterBuilder.addThrottling(parameters);\n\n if (this.serverTelemetryManager) {\n RequestParameterBuilder.addServerTelemetry(\n parameters,\n this.serverTelemetryManager\n );\n }\n\n const correlationId =\n request.correlationId ||\n this.config.cryptoInterface.createNewGuid();\n RequestParameterBuilder.addCorrelationId(parameters, correlationId);\n\n if (this.config.clientCredentials.clientSecret) {\n RequestParameterBuilder.addClientSecret(\n parameters,\n this.config.clientCredentials.clientSecret\n );\n }\n\n const clientAssertion: ClientAssertion | undefined =\n this.config.clientCredentials.clientAssertion;\n\n if (clientAssertion) {\n RequestParameterBuilder.addClientAssertion(\n parameters,\n await getClientAssertion(\n clientAssertion.assertion,\n this.config.authOptions.clientId,\n request.resourceRequestUri\n )\n );\n RequestParameterBuilder.addClientAssertionType(\n parameters,\n clientAssertion.assertionType\n );\n }\n\n if (\n !StringUtils.isEmptyObj(request.claims) ||\n (this.config.authOptions.clientCapabilities &&\n this.config.authOptions.clientCapabilities.length > 0)\n ) {\n RequestParameterBuilder.addClaims(\n parameters,\n request.claims,\n this.config.authOptions.clientCapabilities\n );\n }\n\n if (\n this.config.systemOptions.preventCorsPreflight &&\n request.username\n ) {\n RequestParameterBuilder.addCcsUpn(parameters, request.username);\n }\n\n return UrlUtils.mapToQueryString(parameters);\n }\n}\n", "/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport {\n Authority,\n AuthorizeProtocol,\n CommonAuthorizationUrlRequest,\n Logger,\n OAuthResponseType,\n ProtocolMode,\n RequestParameterBuilder,\n} from \"@azure/msal-common/node\";\nimport { NodeConfiguration } from \"../config/Configuration.js\";\nimport { Constants as NodeConstants } from \"../utils/Constants.js\";\nimport { version } from \"../packageMetadata.js\";\n\n/**\n * Constructs the full /authorize URL with request parameters\n * @param config\n * @param authority\n * @param request\n * @param logger\n * @returns\n */\nexport function getAuthCodeRequestUrl(\n config: NodeConfiguration,\n authority: Authority,\n request: CommonAuthorizationUrlRequest,\n logger: Logger\n): string {\n const parameters = AuthorizeProtocol.getStandardAuthorizeRequestParameters(\n {\n ...config.auth,\n authority: authority,\n redirectUri: request.redirectUri || \"\",\n },\n request,\n logger\n );\n RequestParameterBuilder.addLibraryInfo(parameters, {\n sku: NodeConstants.MSAL_SKU,\n version: version,\n cpu: process.arch || \"\",\n os: process.platform || \"\",\n });\n if (config.auth.protocolMode !== ProtocolMode.OIDC) {\n RequestParameterBuilder.addApplicationTelemetry(\n parameters,\n config.telemetry.application\n );\n }\n RequestParameterBuilder.addResponseType(parameters, OAuthResponseType.CODE);\n if (request.codeChallenge && request.codeChallengeMethod) {\n RequestParameterBuilder.addCodeChallengeParams(\n parameters,\n request.codeChallenge,\n request.codeChallengeMethod\n );\n }\n\n RequestParameterBuilder.addExtraQueryParameters(\n parameters,\n request.extraQueryParameters || {}\n );\n\n return AuthorizeProtocol.getAuthorizeUrl(\n authority,\n parameters,\n config.auth.encodeExtraQueryParams,\n request.extraQueryParameters\n );\n}\n", "/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport {\n AuthorizationCodeClient,\n ClientConfiguration,\n RefreshTokenClient,\n AuthenticationResult,\n Authority,\n AuthorityFactory,\n BaseAuthRequest,\n SilentFlowClient,\n Logger,\n ServerTelemetryManager,\n ServerTelemetryRequest,\n CommonSilentFlowRequest,\n CommonRefreshTokenRequest,\n CommonAuthorizationCodeRequest,\n CommonAuthorizationUrlRequest,\n CommonUsernamePasswordRequest,\n AuthenticationScheme,\n ResponseMode,\n AuthorityOptions,\n OIDC_DEFAULT_SCOPES,\n AzureRegionConfiguration,\n AuthError,\n AzureCloudOptions,\n AuthorizationCodePayload,\n Constants,\n StringUtils,\n createClientAuthError,\n ClientAuthErrorCodes,\n buildStaticAuthorityOptions,\n ClientAssertion as ClientAssertionType,\n getClientAssertion,\n ClientAssertionCallback,\n CacheOutcome,\n ClientAuthError,\n} from \"@azure/msal-common/node\";\nimport {\n Configuration,\n buildAppConfiguration,\n NodeConfiguration,\n} from \"../config/Configuration.js\";\nimport { CryptoProvider } from \"../crypto/CryptoProvider.js\";\nimport { NodeStorage } from \"../cache/NodeStorage.js\";\nimport { Constants as NodeConstants, ApiId } from \"../utils/Constants.js\";\nimport { TokenCache } from \"../cache/TokenCache.js\";\nimport { ClientAssertion } from \"./ClientAssertion.js\";\nimport { AuthorizationUrlRequest } from \"../request/AuthorizationUrlRequest.js\";\nimport { AuthorizationCodeRequest } from \"../request/AuthorizationCodeRequest.js\";\nimport { RefreshTokenRequest } from \"../request/RefreshTokenRequest.js\";\nimport { SilentFlowRequest } from \"../request/SilentFlowRequest.js\";\nimport { version, name } from \"../packageMetadata.js\";\nimport { UsernamePasswordRequest } from \"../request/UsernamePasswordRequest.js\";\nimport { NodeAuthError } from \"../error/NodeAuthError.js\";\nimport { UsernamePasswordClient } from \"./UsernamePasswordClient.js\";\nimport { getAuthCodeRequestUrl } from \"../protocol/Authorize.js\";\n\n/**\n * Base abstract class for all ClientApplications - public and confidential\n * @public\n */\nexport abstract class ClientApplication {\n protected readonly cryptoProvider: CryptoProvider;\n private tokenCache: TokenCache;\n\n /**\n * Platform storage object\n */\n protected storage: NodeStorage;\n /**\n * Logger object to log the application flow\n */\n protected logger: Logger;\n /**\n * Platform configuration initialized by the application\n */\n protected config: NodeConfiguration;\n /**\n * Client assertion passed by the user for confidential client flows\n */\n protected clientAssertion: ClientAssertion;\n protected developerProvidedClientAssertion:\n | string\n | ClientAssertionCallback;\n /**\n * Client secret passed by the user for confidential client flows\n */\n protected clientSecret: string;\n\n /**\n * Constructor for the ClientApplication\n */\n protected constructor(configuration: Configuration) {\n this.config = buildAppConfiguration(configuration);\n this.cryptoProvider = new CryptoProvider();\n this.logger = new Logger(\n this.config.system.loggerOptions,\n name,\n version\n );\n this.storage = new NodeStorage(\n this.logger,\n this.config.auth.clientId,\n this.cryptoProvider,\n buildStaticAuthorityOptions(this.config.auth)\n );\n this.tokenCache = new TokenCache(\n this.storage,\n this.logger,\n this.config.cache.cachePlugin\n );\n }\n\n /**\n * Creates the URL of the authorization request, letting the user input credentials and consent to the\n * application. The URL targets the /authorize endpoint of the authority configured in the\n * application object.\n *\n * Once the user inputs their credentials and consents, the authority will send a response to the redirect URI\n * sent in the request and should contain an authorization code, which can then be used to acquire tokens via\n * `acquireTokenByCode(AuthorizationCodeRequest)`.\n */\n async getAuthCodeUrl(request: AuthorizationUrlRequest): Promise {\n this.logger.info(\"getAuthCodeUrl called\", request.correlationId);\n const validRequest: CommonAuthorizationUrlRequest = {\n ...request,\n ...(await this.initializeBaseRequest(request)),\n responseMode: request.responseMode || ResponseMode.QUERY,\n authenticationScheme: AuthenticationScheme.BEARER,\n state: request.state || \"\",\n nonce: request.nonce || \"\",\n };\n\n const discoveredAuthority = await this.createAuthority(\n validRequest.authority,\n validRequest.correlationId,\n undefined,\n request.azureCloudOptions\n );\n return getAuthCodeRequestUrl(\n this.config,\n discoveredAuthority,\n validRequest,\n this.logger\n );\n }\n\n /**\n * Acquires a token by exchanging the Authorization Code received from the first step of OAuth2.0\n * Authorization Code flow.\n *\n * `getAuthCodeUrl(AuthorizationCodeUrlRequest)` can be used to create the URL for the first step of OAuth2.0\n * Authorization Code flow. Ensure that values for redirectUri and scopes in AuthorizationCodeUrlRequest and\n * AuthorizationCodeRequest are the same.\n */\n async acquireTokenByCode(\n request: AuthorizationCodeRequest,\n authCodePayLoad?: AuthorizationCodePayload\n ): Promise {\n this.logger.info(\"acquireTokenByCode called\");\n if (request.state && authCodePayLoad) {\n this.logger.info(\"acquireTokenByCode - validating state\");\n this.validateState(request.state, authCodePayLoad.state || \"\");\n // eslint-disable-next-line no-param-reassign\n authCodePayLoad = { ...authCodePayLoad, state: \"\" };\n }\n const validRequest: CommonAuthorizationCodeRequest = {\n ...request,\n ...(await this.initializeBaseRequest(request)),\n authenticationScheme: AuthenticationScheme.BEARER,\n };\n\n const serverTelemetryManager = this.initializeServerTelemetryManager(\n ApiId.acquireTokenByCode,\n validRequest.correlationId\n );\n try {\n const discoveredAuthority = await this.createAuthority(\n validRequest.authority,\n validRequest.correlationId,\n undefined,\n request.azureCloudOptions\n );\n const authClientConfig = await this.buildOauthClientConfiguration(\n discoveredAuthority,\n validRequest.correlationId,\n validRequest.redirectUri,\n serverTelemetryManager\n );\n const authorizationCodeClient = new AuthorizationCodeClient(\n authClientConfig\n );\n this.logger.verbose(\n \"Auth code client created\",\n validRequest.correlationId\n );\n return await authorizationCodeClient.acquireToken(\n validRequest,\n authCodePayLoad\n );\n } catch (e) {\n if (e instanceof AuthError) {\n e.setCorrelationId(validRequest.correlationId);\n }\n serverTelemetryManager.cacheFailedRequest(e);\n throw e;\n }\n }\n\n /**\n * Acquires a token by exchanging the refresh token provided for a new set of tokens.\n *\n * This API is provided only for scenarios where you would like to migrate from ADAL to MSAL. Otherwise, it is\n * recommended that you use `acquireTokenSilent()` for silent scenarios. When using `acquireTokenSilent()`, MSAL will\n * handle the caching and refreshing of tokens automatically.\n */\n async acquireTokenByRefreshToken(\n request: RefreshTokenRequest\n ): Promise {\n this.logger.info(\n \"acquireTokenByRefreshToken called\",\n request.correlationId\n );\n const validRequest: CommonRefreshTokenRequest = {\n ...request,\n ...(await this.initializeBaseRequest(request)),\n authenticationScheme: AuthenticationScheme.BEARER,\n };\n\n const serverTelemetryManager = this.initializeServerTelemetryManager(\n ApiId.acquireTokenByRefreshToken,\n validRequest.correlationId\n );\n try {\n const discoveredAuthority = await this.createAuthority(\n validRequest.authority,\n validRequest.correlationId,\n undefined,\n request.azureCloudOptions\n );\n const refreshTokenClientConfig =\n await this.buildOauthClientConfiguration(\n discoveredAuthority,\n validRequest.correlationId,\n validRequest.redirectUri || \"\",\n serverTelemetryManager\n );\n const refreshTokenClient = new RefreshTokenClient(\n refreshTokenClientConfig\n );\n this.logger.verbose(\n \"Refresh token client created\",\n validRequest.correlationId\n );\n return await refreshTokenClient.acquireToken(validRequest);\n } catch (e) {\n if (e instanceof AuthError) {\n e.setCorrelationId(validRequest.correlationId);\n }\n serverTelemetryManager.cacheFailedRequest(e);\n throw e;\n }\n }\n\n /**\n * Acquires a token silently when a user specifies the account the token is requested for.\n *\n * This API expects the user to provide an account object and looks into the cache to retrieve the token if present.\n * There is also an optional \"forceRefresh\" boolean the user can send to bypass the cache for access_token and id_token.\n * In case the refresh_token is expired or not found, an error is thrown\n * and the guidance is for the user to call any interactive token acquisition API (eg: `acquireTokenByCode()`).\n */\n async acquireTokenSilent(\n request: SilentFlowRequest\n ): Promise {\n const validRequest: CommonSilentFlowRequest = {\n ...request,\n ...(await this.initializeBaseRequest(request)),\n forceRefresh: request.forceRefresh || false,\n };\n\n const serverTelemetryManager = this.initializeServerTelemetryManager(\n ApiId.acquireTokenSilent,\n validRequest.correlationId,\n validRequest.forceRefresh\n );\n\n try {\n const discoveredAuthority = await this.createAuthority(\n validRequest.authority,\n validRequest.correlationId,\n undefined,\n request.azureCloudOptions\n );\n const clientConfiguration =\n await this.buildOauthClientConfiguration(\n discoveredAuthority,\n validRequest.correlationId,\n validRequest.redirectUri || \"\",\n serverTelemetryManager\n );\n const silentFlowClient = new SilentFlowClient(clientConfiguration);\n this.logger.verbose(\n \"Silent flow client created\",\n validRequest.correlationId\n );\n try {\n // always overwrite the in-memory cache with the persistence cache (if it exists) before a cache lookup\n await this.tokenCache.overwriteCache();\n return await this.acquireCachedTokenSilent(\n validRequest,\n silentFlowClient,\n clientConfiguration\n );\n } catch (error) {\n if (\n error instanceof ClientAuthError &&\n error.errorCode ===\n ClientAuthErrorCodes.tokenRefreshRequired\n ) {\n const refreshTokenClient = new RefreshTokenClient(\n clientConfiguration\n );\n return refreshTokenClient.acquireTokenByRefreshToken(\n validRequest\n );\n }\n throw error;\n }\n } catch (error) {\n if (error instanceof AuthError) {\n error.setCorrelationId(validRequest.correlationId);\n }\n serverTelemetryManager.cacheFailedRequest(error);\n throw error;\n }\n }\n\n private async acquireCachedTokenSilent(\n validRequest: CommonSilentFlowRequest,\n silentFlowClient: SilentFlowClient,\n clientConfiguration: ClientConfiguration\n ): Promise {\n const [authResponse, cacheOutcome] =\n await silentFlowClient.acquireCachedToken({\n ...validRequest,\n scopes: validRequest.scopes?.length\n ? validRequest.scopes\n : [...OIDC_DEFAULT_SCOPES],\n });\n\n if (cacheOutcome === CacheOutcome.PROACTIVELY_REFRESHED) {\n this.logger.info(\n \"ClientApplication:acquireCachedTokenSilent - Cached access token's refreshOn property has been exceeded'. It's not expired, but must be refreshed.\"\n );\n // refresh the access token in the background\n const refreshTokenClient = new RefreshTokenClient(\n clientConfiguration\n );\n\n try {\n await refreshTokenClient.acquireTokenByRefreshToken(\n validRequest\n );\n } catch {\n // do nothing, this is running in the background and no action is to be taken upon success or failure\n }\n }\n\n // return the cached token\n return authResponse;\n }\n\n /**\n * Acquires tokens with password grant by exchanging client applications username and password for credentials\n *\n * The latest OAuth 2.0 Security Best Current Practice disallows the password grant entirely.\n * More details on this recommendation at https://tools.ietf.org/html/draft-ietf-oauth-security-topics-13#section-3.4\n * Microsoft's documentation and recommendations are at:\n * https://docs.microsoft.com/en-us/azure/active-directory/develop/msal-authentication-flows#usernamepassword\n *\n * @param request - UsenamePasswordRequest\n * @deprecated - Use a more secure flow instead\n */\n async acquireTokenByUsernamePassword(\n request: UsernamePasswordRequest\n ): Promise {\n this.logger.info(\n \"acquireTokenByUsernamePassword called\",\n request.correlationId\n );\n const validRequest: CommonUsernamePasswordRequest = {\n ...request,\n ...(await this.initializeBaseRequest(request)),\n };\n const serverTelemetryManager = this.initializeServerTelemetryManager(\n ApiId.acquireTokenByUsernamePassword,\n validRequest.correlationId\n );\n try {\n const discoveredAuthority = await this.createAuthority(\n validRequest.authority,\n validRequest.correlationId,\n undefined,\n request.azureCloudOptions\n );\n const usernamePasswordClientConfig =\n await this.buildOauthClientConfiguration(\n discoveredAuthority,\n validRequest.correlationId,\n \"\",\n serverTelemetryManager\n );\n const usernamePasswordClient = new UsernamePasswordClient(\n usernamePasswordClientConfig\n );\n this.logger.verbose(\n \"Username password client created\",\n validRequest.correlationId\n );\n return await usernamePasswordClient.acquireToken(validRequest);\n } catch (e) {\n if (e instanceof AuthError) {\n e.setCorrelationId(validRequest.correlationId);\n }\n serverTelemetryManager.cacheFailedRequest(e);\n throw e;\n }\n }\n\n /**\n * Gets the token cache for the application.\n */\n getTokenCache(): TokenCache {\n this.logger.info(\"getTokenCache called\");\n return this.tokenCache;\n }\n\n /**\n * Validates OIDC state by comparing the user cached state with the state received from the server.\n *\n * This API is provided for scenarios where you would use OAuth2.0 state parameter to mitigate against\n * CSRF attacks.\n * For more information about state, visit https://datatracker.ietf.org/doc/html/rfc6819#section-3.6.\n * @param state - Unique GUID generated by the user that is cached by the user and sent to the server during the first leg of the flow\n * @param cachedState - This string is sent back by the server with the authorization code\n */\n protected validateState(state: string, cachedState: string): void {\n if (!state) {\n throw NodeAuthError.createStateNotFoundError();\n }\n\n if (state !== cachedState) {\n throw createClientAuthError(ClientAuthErrorCodes.stateMismatch);\n }\n }\n\n /**\n * Returns the logger instance\n */\n getLogger(): Logger {\n return this.logger;\n }\n\n /**\n * Replaces the default logger set in configurations with new Logger with new configurations\n * @param logger - Logger instance\n */\n setLogger(logger: Logger): void {\n this.logger = logger;\n }\n\n /**\n * Builds the common configuration to be passed to the common component based on the platform configurarion\n * @param authority - user passed authority in configuration\n * @param serverTelemetryManager - initializes servertelemetry if passed\n */\n protected async buildOauthClientConfiguration(\n discoveredAuthority: Authority,\n requestCorrelationId: string,\n redirectUri: string,\n serverTelemetryManager?: ServerTelemetryManager\n ): Promise {\n this.logger.verbose(\n \"buildOauthClientConfiguration called\",\n requestCorrelationId\n );\n\n this.logger.info(\n `Building oauth client configuration with the following authority: ${discoveredAuthority.tokenEndpoint}.`,\n requestCorrelationId\n );\n\n serverTelemetryManager?.updateRegionDiscoveryMetadata(\n discoveredAuthority.regionDiscoveryMetadata\n );\n\n const clientConfiguration: ClientConfiguration = {\n authOptions: {\n clientId: this.config.auth.clientId,\n authority: discoveredAuthority,\n clientCapabilities: this.config.auth.clientCapabilities,\n redirectUri,\n },\n loggerOptions: {\n logLevel: this.config.system.loggerOptions.logLevel,\n loggerCallback: this.config.system.loggerOptions.loggerCallback,\n piiLoggingEnabled:\n this.config.system.loggerOptions.piiLoggingEnabled,\n correlationId: requestCorrelationId,\n },\n cacheOptions: {\n claimsBasedCachingEnabled:\n this.config.cache.claimsBasedCachingEnabled,\n },\n cryptoInterface: this.cryptoProvider,\n networkInterface: this.config.system.networkClient,\n storageInterface: this.storage,\n serverTelemetryManager: serverTelemetryManager,\n clientCredentials: {\n clientSecret: this.clientSecret,\n clientAssertion: await this.getClientAssertion(\n discoveredAuthority\n ),\n },\n libraryInfo: {\n sku: NodeConstants.MSAL_SKU,\n version: version,\n cpu: process.arch || Constants.EMPTY_STRING,\n os: process.platform || Constants.EMPTY_STRING,\n },\n telemetry: this.config.telemetry,\n persistencePlugin: this.config.cache.cachePlugin,\n serializableCache: this.tokenCache,\n };\n\n return clientConfiguration;\n }\n\n private async getClientAssertion(\n authority: Authority\n ): Promise {\n if (this.developerProvidedClientAssertion) {\n this.clientAssertion = ClientAssertion.fromAssertion(\n await getClientAssertion(\n this.developerProvidedClientAssertion,\n this.config.auth.clientId,\n authority.tokenEndpoint\n )\n );\n }\n\n return (\n this.clientAssertion && {\n assertion: this.clientAssertion.getJwt(\n this.cryptoProvider,\n this.config.auth.clientId,\n authority.tokenEndpoint\n ),\n assertionType: NodeConstants.JWT_BEARER_ASSERTION_TYPE,\n }\n );\n }\n\n /**\n * Generates a request with the default scopes & generates a correlationId.\n * @param authRequest - BaseAuthRequest for initialization\n */\n protected async initializeBaseRequest(\n authRequest: Partial\n ): Promise {\n this.logger.verbose(\n \"initializeRequestScopes called\",\n authRequest.correlationId\n );\n // Default authenticationScheme to Bearer, log that POP isn't supported yet\n if (\n authRequest.authenticationScheme &&\n authRequest.authenticationScheme === AuthenticationScheme.POP\n ) {\n this.logger.verbose(\n \"Authentication Scheme 'pop' is not supported yet, setting Authentication Scheme to 'Bearer' for request\",\n authRequest.correlationId\n );\n }\n\n authRequest.authenticationScheme = AuthenticationScheme.BEARER;\n\n // Set requested claims hash if claims-based caching is enabled and claims were requested\n if (\n this.config.cache.claimsBasedCachingEnabled &&\n authRequest.claims &&\n // Checks for empty stringified object \"{}\" which doesn't qualify as requested claims\n !StringUtils.isEmptyObj(authRequest.claims)\n ) {\n authRequest.requestedClaimsHash =\n await this.cryptoProvider.hashString(authRequest.claims);\n }\n\n return {\n ...authRequest,\n scopes: [\n ...((authRequest && authRequest.scopes) || []),\n ...OIDC_DEFAULT_SCOPES,\n ],\n correlationId:\n (authRequest && authRequest.correlationId) ||\n this.cryptoProvider.createNewGuid(),\n authority: authRequest.authority || this.config.auth.authority,\n };\n }\n\n /**\n * Initializes the server telemetry payload\n * @param apiId - Id for a specific request\n * @param correlationId - GUID\n * @param forceRefresh - boolean to indicate network call\n */\n protected initializeServerTelemetryManager(\n apiId: number,\n correlationId: string,\n forceRefresh?: boolean\n ): ServerTelemetryManager {\n const telemetryPayload: ServerTelemetryRequest = {\n clientId: this.config.auth.clientId,\n correlationId: correlationId,\n apiId: apiId,\n forceRefresh: forceRefresh || false,\n };\n\n return new ServerTelemetryManager(telemetryPayload, this.storage);\n }\n\n /**\n * Create authority instance. If authority not passed in request, default to authority set on the application\n * object. If no authority set in application object, then default to common authority.\n * @param authorityString - authority from user configuration\n */\n protected async createAuthority(\n authorityString: string,\n requestCorrelationId: string,\n azureRegionConfiguration?: AzureRegionConfiguration,\n azureCloudOptions?: AzureCloudOptions\n ): Promise {\n this.logger.verbose(\"createAuthority called\", requestCorrelationId);\n\n // build authority string based on auth params - azureCloudInstance is prioritized if provided\n const authorityUrl = Authority.generateAuthority(\n authorityString,\n azureCloudOptions || this.config.auth.azureCloudOptions\n );\n\n const authorityOptions: AuthorityOptions = {\n protocolMode: this.config.auth.protocolMode,\n knownAuthorities: this.config.auth.knownAuthorities,\n cloudDiscoveryMetadata: this.config.auth.cloudDiscoveryMetadata,\n authorityMetadata: this.config.auth.authorityMetadata,\n azureRegionConfiguration,\n skipAuthorityMetadataCache:\n this.config.auth.skipAuthorityMetadataCache,\n };\n\n return AuthorityFactory.createDiscoveredInstance(\n authorityUrl,\n this.config.system.networkClient,\n this.storage,\n authorityOptions,\n this.logger,\n requestCorrelationId\n );\n }\n\n /**\n * Clear the cache\n */\n clearCache(): void {\n this.storage.clear();\n }\n}\n", "/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport {\n Constants as CommonConstants,\n AuthorizeResponse,\n HttpStatus,\n UrlUtils,\n} from \"@azure/msal-common/node\";\nimport http from \"http\";\nimport { NodeAuthError } from \"../error/NodeAuthError.js\";\nimport { Constants } from \"../utils/Constants.js\";\nimport { ILoopbackClient } from \"./ILoopbackClient.js\";\n\nexport class LoopbackClient implements ILoopbackClient {\n private server: http.Server | undefined;\n\n /**\n * Spins up a loopback server which returns the server response when the localhost redirectUri is hit\n * @param successTemplate\n * @param errorTemplate\n * @returns\n */\n async listenForAuthCode(\n successTemplate?: string,\n errorTemplate?: string\n ): Promise {\n if (this.server) {\n throw NodeAuthError.createLoopbackServerAlreadyExistsError();\n }\n\n return new Promise((resolve, reject) => {\n this.server = http.createServer(\n (req: http.IncomingMessage, res: http.ServerResponse) => {\n const url = req.url;\n if (!url) {\n res.end(\n errorTemplate ||\n \"Error occurred loading redirectUrl\"\n );\n reject(\n NodeAuthError.createUnableToLoadRedirectUrlError()\n );\n return;\n } else if (url === CommonConstants.FORWARD_SLASH) {\n res.end(\n successTemplate ||\n \"Auth code was successfully acquired. You can close this window now.\"\n );\n return;\n }\n\n const redirectUri = this.getRedirectUri();\n const parsedUrl = new URL(url, redirectUri);\n const authCodeResponse =\n UrlUtils.getDeserializedResponse(parsedUrl.search) ||\n {};\n if (authCodeResponse.code) {\n res.writeHead(HttpStatus.REDIRECT, {\n location: redirectUri,\n }); // Prevent auth code from being saved in the browser history\n res.end();\n }\n if (authCodeResponse.error) {\n res.end(\n errorTemplate ||\n `Error occurred: ${authCodeResponse.error}`\n );\n }\n resolve(authCodeResponse);\n }\n );\n this.server.listen(0, \"127.0.0.1\"); // Listen on any available port\n });\n }\n\n /**\n * Get the port that the loopback server is running on\n * @returns\n */\n getRedirectUri(): string {\n if (!this.server || !this.server.listening) {\n throw NodeAuthError.createNoLoopbackServerExistsError();\n }\n\n const address = this.server.address();\n if (!address || typeof address === \"string\" || !address.port) {\n this.closeServer();\n throw NodeAuthError.createInvalidLoopbackAddressTypeError();\n }\n\n const port = address && address.port;\n\n return `${Constants.HTTP_PROTOCOL}${Constants.LOCALHOST}:${port}`;\n }\n\n /**\n * Close the loopback server\n */\n closeServer(): void {\n if (this.server) {\n // Only stops accepting new connections, server will close once open/idle connections are closed.\n this.server.close();\n\n if (typeof this.server.closeAllConnections === \"function\") {\n /*\n * Close open/idle connections. This API is available in Node versions 18.2 and higher\n */\n this.server.closeAllConnections();\n }\n this.server.unref();\n this.server = undefined;\n }\n }\n}\n", "/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport {\n AuthErrorCodes,\n AuthenticationResult,\n BaseClient,\n ClientAuthErrorCodes,\n ClientConfiguration,\n CommonDeviceCodeRequest,\n Constants,\n DeviceCodeResponse,\n GrantType,\n RequestParameterBuilder,\n RequestThumbprint,\n ResponseHandler,\n ServerAuthorizationTokenResponse,\n ServerDeviceCodeResponse,\n StringUtils,\n TimeUtils,\n UrlString,\n UrlUtils,\n createAuthError,\n createClientAuthError,\n} from \"@azure/msal-common/node\";\n\n/**\n * OAuth2.0 Device code client\n * @public\n */\nexport class DeviceCodeClient extends BaseClient {\n constructor(configuration: ClientConfiguration) {\n super(configuration);\n }\n\n /**\n * Gets device code from device code endpoint, calls back to with device code response, and\n * polls token endpoint to exchange device code for tokens\n * @param request - developer provided CommonDeviceCodeRequest\n */\n public async acquireToken(\n request: CommonDeviceCodeRequest\n ): Promise {\n const deviceCodeResponse: DeviceCodeResponse = await this.getDeviceCode(\n request\n );\n request.deviceCodeCallback(deviceCodeResponse);\n const reqTimestamp = TimeUtils.nowSeconds();\n const response: ServerAuthorizationTokenResponse =\n await this.acquireTokenWithDeviceCode(request, deviceCodeResponse);\n\n const responseHandler = new ResponseHandler(\n this.config.authOptions.clientId,\n this.cacheManager,\n this.cryptoUtils,\n this.logger,\n this.config.serializableCache,\n this.config.persistencePlugin\n );\n\n // Validate response. This function throws a server error if an error is returned by the server.\n responseHandler.validateTokenResponse(response);\n return responseHandler.handleServerTokenResponse(\n response,\n this.authority,\n reqTimestamp,\n request\n );\n }\n\n /**\n * Creates device code request and executes http GET\n * @param request - developer provided CommonDeviceCodeRequest\n */\n private async getDeviceCode(\n request: CommonDeviceCodeRequest\n ): Promise {\n const queryParametersString = this.createExtraQueryParameters(request);\n const endpoint = UrlString.appendQueryString(\n this.authority.deviceCodeEndpoint,\n queryParametersString\n );\n const queryString = this.createQueryString(request);\n const headers = this.createTokenRequestHeaders();\n const thumbprint: RequestThumbprint = {\n clientId: this.config.authOptions.clientId,\n authority: request.authority,\n scopes: request.scopes,\n claims: request.claims,\n authenticationScheme: request.authenticationScheme,\n resourceRequestMethod: request.resourceRequestMethod,\n resourceRequestUri: request.resourceRequestUri,\n shrClaims: request.shrClaims,\n sshKid: request.sshKid,\n };\n\n return this.executePostRequestToDeviceCodeEndpoint(\n endpoint,\n queryString,\n headers,\n thumbprint,\n request.correlationId\n );\n }\n\n /**\n * Creates query string for the device code request\n * @param request - developer provided CommonDeviceCodeRequest\n */\n public createExtraQueryParameters(\n request: CommonDeviceCodeRequest\n ): string {\n const parameters = new Map();\n\n if (request.extraQueryParameters) {\n RequestParameterBuilder.addExtraQueryParameters(\n parameters,\n request.extraQueryParameters\n );\n }\n\n return UrlUtils.mapToQueryString(parameters);\n }\n\n /**\n * Executes POST request to device code endpoint\n * @param deviceCodeEndpoint - token endpoint\n * @param queryString - string to be used in the body of the request\n * @param headers - headers for the request\n * @param thumbprint - unique request thumbprint\n * @param correlationId - correlation id to be used in the request\n */\n private async executePostRequestToDeviceCodeEndpoint(\n deviceCodeEndpoint: string,\n queryString: string,\n headers: Record,\n thumbprint: RequestThumbprint,\n correlationId: string\n ): Promise {\n const {\n body: {\n user_code: userCode,\n device_code: deviceCode,\n verification_uri: verificationUri,\n expires_in: expiresIn,\n interval,\n message,\n },\n } = await this.sendPostRequest(\n thumbprint,\n deviceCodeEndpoint,\n {\n body: queryString,\n headers: headers,\n },\n correlationId\n );\n\n return {\n userCode,\n deviceCode,\n verificationUri,\n expiresIn,\n interval,\n message,\n };\n }\n\n /**\n * Create device code endpoint query parameters and returns string\n * @param request - developer provided CommonDeviceCodeRequest\n */\n private createQueryString(request: CommonDeviceCodeRequest): string {\n const parameters = new Map();\n\n RequestParameterBuilder.addScopes(parameters, request.scopes);\n RequestParameterBuilder.addClientId(\n parameters,\n this.config.authOptions.clientId\n );\n\n if (request.extraQueryParameters) {\n RequestParameterBuilder.addExtraQueryParameters(\n parameters,\n request.extraQueryParameters\n );\n }\n\n if (\n request.claims ||\n (this.config.authOptions.clientCapabilities &&\n this.config.authOptions.clientCapabilities.length > 0)\n ) {\n RequestParameterBuilder.addClaims(\n parameters,\n request.claims,\n this.config.authOptions.clientCapabilities\n );\n }\n\n return UrlUtils.mapToQueryString(parameters);\n }\n\n /**\n * Breaks the polling with specific conditions\n * @param deviceCodeExpirationTime - expiration time for the device code request\n * @param userSpecifiedTimeout - developer provided timeout, to be compared against deviceCodeExpirationTime\n * @param userSpecifiedCancelFlag - boolean indicating the developer would like to cancel the request\n */\n private continuePolling(\n deviceCodeExpirationTime: number,\n userSpecifiedTimeout?: number,\n userSpecifiedCancelFlag?: boolean\n ): boolean {\n if (userSpecifiedCancelFlag) {\n this.logger.error(\n \"Token request cancelled by setting DeviceCodeRequest.cancel = true\"\n );\n throw createClientAuthError(\n ClientAuthErrorCodes.deviceCodePollingCancelled\n );\n } else if (\n userSpecifiedTimeout &&\n userSpecifiedTimeout < deviceCodeExpirationTime &&\n TimeUtils.nowSeconds() > userSpecifiedTimeout\n ) {\n this.logger.error(\n `User defined timeout for device code polling reached. The timeout was set for ${userSpecifiedTimeout}`\n );\n throw createClientAuthError(\n ClientAuthErrorCodes.userTimeoutReached\n );\n } else if (TimeUtils.nowSeconds() > deviceCodeExpirationTime) {\n if (userSpecifiedTimeout) {\n this.logger.verbose(\n `User specified timeout ignored as the device code has expired before the timeout elapsed. The user specified timeout was set for ${userSpecifiedTimeout}`\n );\n }\n this.logger.error(\n `Device code expired. Expiration time of device code was ${deviceCodeExpirationTime}`\n );\n throw createClientAuthError(ClientAuthErrorCodes.deviceCodeExpired);\n }\n return true;\n }\n\n /**\n * Creates token request with device code response and polls token endpoint at interval set by the device code response\n * @param request - developer provided CommonDeviceCodeRequest\n * @param deviceCodeResponse - DeviceCodeResponse returned by the security token service device code endpoint\n */\n private async acquireTokenWithDeviceCode(\n request: CommonDeviceCodeRequest,\n deviceCodeResponse: DeviceCodeResponse\n ): Promise {\n const queryParametersString = this.createTokenQueryParameters(request);\n const endpoint = UrlString.appendQueryString(\n this.authority.tokenEndpoint,\n queryParametersString\n );\n const requestBody = this.createTokenRequestBody(\n request,\n deviceCodeResponse\n );\n const headers: Record =\n this.createTokenRequestHeaders();\n\n const userSpecifiedTimeout = request.timeout\n ? TimeUtils.nowSeconds() + request.timeout\n : undefined;\n const deviceCodeExpirationTime =\n TimeUtils.nowSeconds() + deviceCodeResponse.expiresIn;\n const pollingIntervalMilli = deviceCodeResponse.interval * 1000;\n\n /*\n * Poll token endpoint while (device code is not expired AND operation has not been cancelled by\n * setting CancellationToken.cancel = true). POST request is sent at interval set by pollingIntervalMilli\n */\n while (\n this.continuePolling(\n deviceCodeExpirationTime,\n userSpecifiedTimeout,\n request.cancel\n )\n ) {\n const thumbprint: RequestThumbprint = {\n clientId: this.config.authOptions.clientId,\n authority: request.authority,\n scopes: request.scopes,\n claims: request.claims,\n authenticationScheme: request.authenticationScheme,\n resourceRequestMethod: request.resourceRequestMethod,\n resourceRequestUri: request.resourceRequestUri,\n shrClaims: request.shrClaims,\n sshKid: request.sshKid,\n };\n const response = await this.executePostToTokenEndpoint(\n endpoint,\n requestBody,\n headers,\n thumbprint,\n request.correlationId\n );\n\n if (response.body && response.body.error) {\n // user authorization is pending. Sleep for polling interval and try again\n if (response.body.error === Constants.AUTHORIZATION_PENDING) {\n this.logger.info(\n \"Authorization pending. Continue polling.\"\n );\n await TimeUtils.delay(pollingIntervalMilli);\n } else {\n // for any other error, throw\n this.logger.info(\n \"Unexpected error in polling from the server\"\n );\n throw createAuthError(\n AuthErrorCodes.postRequestFailed,\n response.body.error\n );\n }\n } else {\n this.logger.verbose(\n \"Authorization completed successfully. Polling stopped.\"\n );\n return response.body;\n }\n }\n\n /*\n * The above code should've thrown by this point, but to satisfy TypeScript,\n * and in the rare case the conditionals in continuePolling() may not catch everything...\n */\n this.logger.error(\"Polling stopped for unknown reasons.\");\n throw createClientAuthError(\n ClientAuthErrorCodes.deviceCodeUnknownError\n );\n }\n\n /**\n * Creates query parameters and converts to string.\n * @param request - developer provided CommonDeviceCodeRequest\n * @param deviceCodeResponse - DeviceCodeResponse returned by the security token service device code endpoint\n */\n private createTokenRequestBody(\n request: CommonDeviceCodeRequest,\n deviceCodeResponse: DeviceCodeResponse\n ): string {\n const parameters = new Map();\n\n RequestParameterBuilder.addScopes(parameters, request.scopes);\n RequestParameterBuilder.addClientId(\n parameters,\n this.config.authOptions.clientId\n );\n RequestParameterBuilder.addGrantType(\n parameters,\n GrantType.DEVICE_CODE_GRANT\n );\n RequestParameterBuilder.addDeviceCode(\n parameters,\n deviceCodeResponse.deviceCode\n );\n const correlationId =\n request.correlationId ||\n this.config.cryptoInterface.createNewGuid();\n RequestParameterBuilder.addCorrelationId(parameters, correlationId);\n RequestParameterBuilder.addClientInfo(parameters);\n RequestParameterBuilder.addLibraryInfo(\n parameters,\n this.config.libraryInfo\n );\n RequestParameterBuilder.addApplicationTelemetry(\n parameters,\n this.config.telemetry.application\n );\n RequestParameterBuilder.addThrottling(parameters);\n if (this.serverTelemetryManager) {\n RequestParameterBuilder.addServerTelemetry(\n parameters,\n this.serverTelemetryManager\n );\n }\n\n if (\n !StringUtils.isEmptyObj(request.claims) ||\n (this.config.authOptions.clientCapabilities &&\n this.config.authOptions.clientCapabilities.length > 0)\n ) {\n RequestParameterBuilder.addClaims(\n parameters,\n request.claims,\n this.config.authOptions.clientCapabilities\n );\n }\n return UrlUtils.mapToQueryString(parameters);\n }\n}\n", "/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport {\n ApiId,\n Constants,\n LOOPBACK_SERVER_CONSTANTS,\n} from \"../utils/Constants.js\";\nimport {\n AuthenticationResult,\n CommonDeviceCodeRequest,\n AuthError,\n ResponseMode,\n OIDC_DEFAULT_SCOPES,\n CodeChallengeMethodValues,\n Constants as CommonConstants,\n ServerError,\n NativeRequest,\n NativeSignOutRequest,\n AccountInfo,\n INativeBrokerPlugin,\n AuthorizeResponse,\n AADServerParamKeys,\n ServerTelemetryManager,\n} from \"@azure/msal-common/node\";\nimport { Configuration } from \"../config/Configuration.js\";\nimport { ClientApplication } from \"./ClientApplication.js\";\nimport { IPublicClientApplication } from \"./IPublicClientApplication.js\";\nimport { DeviceCodeRequest } from \"../request/DeviceCodeRequest.js\";\nimport { AuthorizationUrlRequest } from \"../request/AuthorizationUrlRequest.js\";\nimport { AuthorizationCodeRequest } from \"../request/AuthorizationCodeRequest.js\";\nimport { InteractiveRequest } from \"../request/InteractiveRequest.js\";\nimport { NodeAuthError, NodeAuthErrorMessage } from \"../error/NodeAuthError.js\";\nimport { LoopbackClient } from \"../network/LoopbackClient.js\";\nimport { SilentFlowRequest } from \"../request/SilentFlowRequest.js\";\nimport { SignOutRequest } from \"../request/SignOutRequest.js\";\nimport { ILoopbackClient } from \"../network/ILoopbackClient.js\";\nimport { DeviceCodeClient } from \"./DeviceCodeClient.js\";\nimport { version } from \"../packageMetadata.js\";\n\n/**\n * This class is to be used to acquire tokens for public client applications (desktop, mobile). Public client applications\n * are not trusted to safely store application secrets, and therefore can only request tokens in the name of an user.\n * @public\n */\nexport class PublicClientApplication\n extends ClientApplication\n implements IPublicClientApplication\n{\n private nativeBrokerPlugin?: INativeBrokerPlugin;\n private readonly skus: string;\n /**\n * Important attributes in the Configuration object for auth are:\n * - clientID: the application ID of your application. You can obtain one by registering your application with our Application registration portal.\n * - authority: the authority URL for your application.\n *\n * AAD authorities are of the form https://login.microsoftonline.com/\\{Enter_the_Tenant_Info_Here\\}.\n * - If your application supports Accounts in one organizational directory, replace \"Enter_the_Tenant_Info_Here\" value with the Tenant Id or Tenant name (for example, contoso.microsoft.com).\n * - If your application supports Accounts in any organizational directory, replace \"Enter_the_Tenant_Info_Here\" value with organizations.\n * - If your application supports Accounts in any organizational directory and personal Microsoft accounts, replace \"Enter_the_Tenant_Info_Here\" value with common.\n * - To restrict support to Personal Microsoft accounts only, replace \"Enter_the_Tenant_Info_Here\" value with consumers.\n *\n * Azure B2C authorities are of the form https://\\{instance\\}/\\{tenant\\}/\\{policy\\}. Each policy is considered\n * its own authority. You will have to set the all of the knownAuthorities at the time of the client application\n * construction.\n *\n * ADFS authorities are of the form https://\\{instance\\}/adfs.\n */\n constructor(configuration: Configuration) {\n super(configuration);\n if (this.config.broker.nativeBrokerPlugin) {\n if (this.config.broker.nativeBrokerPlugin.isBrokerAvailable) {\n this.nativeBrokerPlugin = this.config.broker.nativeBrokerPlugin;\n this.nativeBrokerPlugin.setLogger(\n this.config.system.loggerOptions\n );\n } else {\n this.logger.warning(\n \"NativeBroker implementation was provided but the broker is unavailable.\"\n );\n }\n }\n this.skus = ServerTelemetryManager.makeExtraSkuString({\n libraryName: Constants.MSAL_SKU,\n libraryVersion: version,\n });\n }\n\n /**\n * Acquires a token from the authority using OAuth2.0 device code flow.\n * This flow is designed for devices that do not have access to a browser or have input constraints.\n * The authorization server issues a DeviceCode object with a verification code, an end-user code,\n * and the end-user verification URI. The DeviceCode object is provided through a callback, and the end-user should be\n * instructed to use another device to navigate to the verification URI to input credentials.\n * Since the client cannot receive incoming requests, it polls the authorization server repeatedly\n * until the end-user completes input of credentials.\n */\n public async acquireTokenByDeviceCode(\n request: DeviceCodeRequest\n ): Promise {\n this.logger.info(\n \"acquireTokenByDeviceCode called\",\n request.correlationId\n );\n const validRequest: CommonDeviceCodeRequest = Object.assign(\n request,\n await this.initializeBaseRequest(request)\n );\n const serverTelemetryManager = this.initializeServerTelemetryManager(\n ApiId.acquireTokenByDeviceCode,\n validRequest.correlationId\n );\n try {\n const discoveredAuthority = await this.createAuthority(\n validRequest.authority,\n validRequest.correlationId,\n undefined,\n request.azureCloudOptions\n );\n const deviceCodeConfig = await this.buildOauthClientConfiguration(\n discoveredAuthority,\n validRequest.correlationId,\n \"\",\n serverTelemetryManager\n );\n const deviceCodeClient = new DeviceCodeClient(deviceCodeConfig);\n this.logger.verbose(\n \"Device code client created\",\n validRequest.correlationId\n );\n return await deviceCodeClient.acquireToken(validRequest);\n } catch (e) {\n if (e instanceof AuthError) {\n e.setCorrelationId(validRequest.correlationId);\n }\n serverTelemetryManager.cacheFailedRequest(e as AuthError);\n throw e;\n }\n }\n\n /**\n * Acquires a token interactively via the browser by requesting an authorization code then exchanging it for a token.\n */\n async acquireTokenInteractive(\n request: InteractiveRequest\n ): Promise {\n const correlationId =\n request.correlationId || this.cryptoProvider.createNewGuid();\n this.logger.trace(\"acquireTokenInteractive called\", correlationId);\n const {\n openBrowser,\n successTemplate,\n errorTemplate,\n windowHandle,\n loopbackClient: customLoopbackClient,\n ...remainingProperties\n } = request;\n\n if (this.nativeBrokerPlugin) {\n const brokerRequest: NativeRequest = {\n ...remainingProperties,\n clientId: this.config.auth.clientId,\n scopes: request.scopes || OIDC_DEFAULT_SCOPES,\n redirectUri: `${Constants.HTTP_PROTOCOL}${Constants.LOCALHOST}`,\n authority: request.authority || this.config.auth.authority,\n correlationId: correlationId,\n extraParameters: {\n ...remainingProperties.extraQueryParameters,\n ...remainingProperties.tokenQueryParameters,\n [AADServerParamKeys.X_CLIENT_EXTRA_SKU]: this.skus,\n },\n accountId: remainingProperties.account?.nativeAccountId,\n };\n return this.nativeBrokerPlugin.acquireTokenInteractive(\n brokerRequest,\n windowHandle\n );\n }\n\n const { verifier, challenge } =\n await this.cryptoProvider.generatePkceCodes();\n\n const loopbackClient: ILoopbackClient =\n customLoopbackClient || new LoopbackClient();\n\n let authCodeResponse: AuthorizeResponse = {};\n let authCodeListenerError: AuthError | null = null;\n try {\n const authCodeListener = loopbackClient\n .listenForAuthCode(successTemplate, errorTemplate)\n .then((response) => {\n authCodeResponse = response;\n })\n .catch((e) => {\n // Store the promise instead of throwing so we can control when its thrown\n authCodeListenerError = e;\n });\n\n // Wait for server to be listening\n const redirectUri = await this.waitForRedirectUri(loopbackClient);\n\n const validRequest: AuthorizationUrlRequest = {\n ...remainingProperties,\n correlationId: correlationId,\n scopes: request.scopes || OIDC_DEFAULT_SCOPES,\n redirectUri: redirectUri,\n responseMode: ResponseMode.QUERY,\n codeChallenge: challenge,\n codeChallengeMethod: CodeChallengeMethodValues.S256,\n };\n\n const authCodeUrl = await this.getAuthCodeUrl(validRequest);\n await openBrowser(authCodeUrl);\n await authCodeListener;\n if (authCodeListenerError) {\n throw authCodeListenerError;\n }\n\n if (authCodeResponse.error) {\n throw new ServerError(\n authCodeResponse.error,\n authCodeResponse.error_description,\n authCodeResponse.suberror\n );\n } else if (!authCodeResponse.code) {\n throw NodeAuthError.createNoAuthCodeInResponseError();\n }\n\n const clientInfo = authCodeResponse.client_info;\n const tokenRequest: AuthorizationCodeRequest = {\n code: authCodeResponse.code,\n codeVerifier: verifier,\n clientInfo: clientInfo || CommonConstants.EMPTY_STRING,\n ...validRequest,\n };\n return await this.acquireTokenByCode(tokenRequest); // Await this so the server doesn't close prematurely\n } finally {\n loopbackClient.closeServer();\n }\n }\n\n /**\n * Returns a token retrieved either from the cache or by exchanging the refresh token for a fresh access token. If brokering is enabled the token request will be serviced by the broker.\n * @param request - developer provided SilentFlowRequest\n * @returns\n */\n async acquireTokenSilent(\n request: SilentFlowRequest\n ): Promise {\n const correlationId =\n request.correlationId || this.cryptoProvider.createNewGuid();\n this.logger.trace(\"acquireTokenSilent called\", correlationId);\n\n if (this.nativeBrokerPlugin) {\n const brokerRequest: NativeRequest = {\n ...request,\n clientId: this.config.auth.clientId,\n scopes: request.scopes || OIDC_DEFAULT_SCOPES,\n redirectUri: `${Constants.HTTP_PROTOCOL}${Constants.LOCALHOST}`,\n authority: request.authority || this.config.auth.authority,\n correlationId: correlationId,\n extraParameters: {\n ...request.tokenQueryParameters,\n [AADServerParamKeys.X_CLIENT_EXTRA_SKU]: this.skus,\n },\n accountId: request.account.nativeAccountId,\n forceRefresh: request.forceRefresh || false,\n };\n return this.nativeBrokerPlugin.acquireTokenSilent(brokerRequest);\n }\n\n return super.acquireTokenSilent(request);\n }\n\n /**\n * Removes cache artifacts associated with the given account\n * @param request - developer provided SignOutRequest\n * @returns\n */\n async signOut(request: SignOutRequest): Promise {\n if (this.nativeBrokerPlugin && request.account.nativeAccountId) {\n const signoutRequest: NativeSignOutRequest = {\n clientId: this.config.auth.clientId,\n accountId: request.account.nativeAccountId,\n correlationId:\n request.correlationId ||\n this.cryptoProvider.createNewGuid(),\n };\n await this.nativeBrokerPlugin.signOut(signoutRequest);\n }\n\n await this.getTokenCache().removeAccount(\n request.account,\n request.correlationId\n );\n }\n\n /**\n * Returns all cached accounts for this application. If brokering is enabled this request will be serviced by the broker.\n * @returns\n */\n async getAllAccounts(): Promise {\n if (this.nativeBrokerPlugin) {\n const correlationId = this.cryptoProvider.createNewGuid();\n return this.nativeBrokerPlugin.getAllAccounts(\n this.config.auth.clientId,\n correlationId\n );\n }\n\n return this.getTokenCache().getAllAccounts();\n }\n\n /**\n * Attempts to retrieve the redirectUri from the loopback server. If the loopback server does not start listening for requests within the timeout this will throw.\n * @param loopbackClient - developer provided custom loopback server implementation\n * @returns\n */\n private async waitForRedirectUri(\n loopbackClient: ILoopbackClient\n ): Promise {\n return new Promise((resolve, reject) => {\n let ticks = 0;\n const id = setInterval(() => {\n if (\n LOOPBACK_SERVER_CONSTANTS.TIMEOUT_MS /\n LOOPBACK_SERVER_CONSTANTS.INTERVAL_MS <\n ticks\n ) {\n clearInterval(id);\n reject(NodeAuthError.createLoopbackServerTimeoutError());\n return;\n }\n\n try {\n const r = loopbackClient.getRedirectUri();\n clearInterval(id);\n resolve(r);\n return;\n } catch (e) {\n if (\n e instanceof AuthError &&\n e.errorCode ===\n NodeAuthErrorMessage.noLoopbackServerExists.code\n ) {\n // Loopback server is not listening yet\n ticks++;\n return;\n }\n clearInterval(id);\n reject(e);\n return;\n }\n }, LOOPBACK_SERVER_CONSTANTS.INTERVAL_MS);\n });\n }\n}\n", "/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport {\n AccessTokenEntity,\n AuthenticationResult,\n AuthenticationScheme,\n Authority,\n BaseClient,\n CacheManager,\n CacheOutcome,\n ClientAuthErrorCodes,\n ClientConfiguration,\n CommonClientCredentialRequest,\n Constants,\n CredentialFilter,\n CredentialType,\n DEFAULT_TOKEN_RENEWAL_OFFSET_SEC,\n GrantType,\n IAppTokenProvider,\n ICrypto,\n RequestParameterBuilder,\n RequestThumbprint,\n ResponseHandler,\n ScopeSet,\n ServerAuthorizationTokenResponse,\n ServerTelemetryManager,\n StringUtils,\n TimeUtils,\n TokenCacheContext,\n UrlString,\n createClientAuthError,\n ClientAssertion,\n getClientAssertion,\n UrlUtils,\n} from \"@azure/msal-common/node\";\nimport {\n ManagedIdentityConfiguration,\n ManagedIdentityNodeConfiguration,\n} from \"../config/Configuration.js\";\n\n/**\n * OAuth2.0 client credential grant\n * @public\n */\nexport class ClientCredentialClient extends BaseClient {\n private readonly appTokenProvider?: IAppTokenProvider;\n\n constructor(\n configuration: ClientConfiguration,\n appTokenProvider?: IAppTokenProvider\n ) {\n super(configuration);\n this.appTokenProvider = appTokenProvider;\n }\n\n /**\n * Public API to acquire a token with ClientCredential Flow for Confidential clients\n * @param request - CommonClientCredentialRequest provided by the developer\n */\n public async acquireToken(\n request: CommonClientCredentialRequest\n ): Promise {\n if (request.skipCache || request.claims) {\n return this.executeTokenRequest(request, this.authority);\n }\n\n const [cachedAuthenticationResult, lastCacheOutcome] =\n await this.getCachedAuthenticationResult(\n request,\n this.config,\n this.cryptoUtils,\n this.authority,\n this.cacheManager,\n this.serverTelemetryManager\n );\n\n if (cachedAuthenticationResult) {\n // if the token is not expired but must be refreshed; get a new one in the background\n if (lastCacheOutcome === CacheOutcome.PROACTIVELY_REFRESHED) {\n this.logger.info(\n \"ClientCredentialClient:getCachedAuthenticationResult - Cached access token's refreshOn property has been exceeded'. It's not expired, but must be refreshed.\"\n );\n\n // refresh the access token in the background\n const refreshAccessToken = true;\n await this.executeTokenRequest(\n request,\n this.authority,\n refreshAccessToken\n );\n }\n\n // return the cached token\n return cachedAuthenticationResult;\n } else {\n return this.executeTokenRequest(request, this.authority);\n }\n }\n\n /**\n * looks up cache if the tokens are cached already\n */\n public async getCachedAuthenticationResult(\n request: CommonClientCredentialRequest,\n config: ClientConfiguration | ManagedIdentityConfiguration,\n cryptoUtils: ICrypto,\n authority: Authority,\n cacheManager: CacheManager,\n serverTelemetryManager?: ServerTelemetryManager | null\n ): Promise<[AuthenticationResult | null, CacheOutcome]> {\n const clientConfiguration = config as ClientConfiguration;\n const managedIdentityConfiguration =\n config as ManagedIdentityNodeConfiguration;\n\n let lastCacheOutcome: CacheOutcome = CacheOutcome.NOT_APPLICABLE;\n\n // read the user-supplied cache into memory, if applicable\n let cacheContext;\n if (\n clientConfiguration.serializableCache &&\n clientConfiguration.persistencePlugin\n ) {\n cacheContext = new TokenCacheContext(\n clientConfiguration.serializableCache,\n false\n );\n await clientConfiguration.persistencePlugin.beforeCacheAccess(\n cacheContext\n );\n }\n\n const cachedAccessToken = this.readAccessTokenFromCache(\n authority,\n managedIdentityConfiguration.managedIdentityId?.id ||\n clientConfiguration.authOptions.clientId,\n new ScopeSet(request.scopes || []),\n cacheManager,\n request.correlationId\n );\n\n if (\n clientConfiguration.serializableCache &&\n clientConfiguration.persistencePlugin &&\n cacheContext\n ) {\n await clientConfiguration.persistencePlugin.afterCacheAccess(\n cacheContext\n );\n }\n\n // must refresh due to non-existent access_token\n if (!cachedAccessToken) {\n serverTelemetryManager?.setCacheOutcome(\n CacheOutcome.NO_CACHED_ACCESS_TOKEN\n );\n return [null, CacheOutcome.NO_CACHED_ACCESS_TOKEN];\n }\n\n // must refresh due to the expires_in value\n if (\n TimeUtils.isTokenExpired(\n cachedAccessToken.expiresOn,\n clientConfiguration.systemOptions?.tokenRenewalOffsetSeconds ||\n DEFAULT_TOKEN_RENEWAL_OFFSET_SEC\n )\n ) {\n serverTelemetryManager?.setCacheOutcome(\n CacheOutcome.CACHED_ACCESS_TOKEN_EXPIRED\n );\n return [null, CacheOutcome.CACHED_ACCESS_TOKEN_EXPIRED];\n }\n\n // must refresh (in the background) due to the refresh_in value\n if (\n cachedAccessToken.refreshOn &&\n TimeUtils.isTokenExpired(cachedAccessToken.refreshOn.toString(), 0)\n ) {\n lastCacheOutcome = CacheOutcome.PROACTIVELY_REFRESHED;\n serverTelemetryManager?.setCacheOutcome(\n CacheOutcome.PROACTIVELY_REFRESHED\n );\n }\n\n return [\n await ResponseHandler.generateAuthenticationResult(\n cryptoUtils,\n authority,\n {\n account: null,\n idToken: null,\n accessToken: cachedAccessToken,\n refreshToken: null,\n appMetadata: null,\n },\n true,\n request\n ),\n lastCacheOutcome,\n ];\n }\n\n /**\n * Reads access token from the cache\n */\n private readAccessTokenFromCache(\n authority: Authority,\n id: string,\n scopeSet: ScopeSet,\n cacheManager: CacheManager,\n correlationId: string\n ): AccessTokenEntity | null {\n const accessTokenFilter: CredentialFilter = {\n homeAccountId: Constants.EMPTY_STRING,\n environment:\n authority.canonicalAuthorityUrlComponents.HostNameAndPort,\n credentialType: CredentialType.ACCESS_TOKEN,\n clientId: id,\n realm: authority.tenant,\n target: ScopeSet.createSearchScopes(scopeSet.asArray()),\n };\n\n const accessTokens = cacheManager.getAccessTokensByFilter(\n accessTokenFilter,\n correlationId\n );\n if (accessTokens.length < 1) {\n return null;\n } else if (accessTokens.length > 1) {\n throw createClientAuthError(\n ClientAuthErrorCodes.multipleMatchingTokens\n );\n }\n return accessTokens[0] as AccessTokenEntity;\n }\n\n /**\n * Makes a network call to request the token from the service\n * @param request - CommonClientCredentialRequest provided by the developer\n * @param authority - authority object\n */\n private async executeTokenRequest(\n request: CommonClientCredentialRequest,\n authority: Authority,\n refreshAccessToken?: boolean\n ): Promise {\n let serverTokenResponse: ServerAuthorizationTokenResponse;\n let reqTimestamp: number;\n\n if (this.appTokenProvider) {\n this.logger.info(\"Using appTokenProvider extensibility.\");\n\n const appTokenPropviderParameters = {\n correlationId: request.correlationId,\n tenantId: this.config.authOptions.authority.tenant,\n scopes: request.scopes,\n claims: request.claims,\n };\n\n reqTimestamp = TimeUtils.nowSeconds();\n const appTokenProviderResult = await this.appTokenProvider(\n appTokenPropviderParameters\n );\n\n serverTokenResponse = {\n access_token: appTokenProviderResult.accessToken,\n expires_in: appTokenProviderResult.expiresInSeconds,\n refresh_in: appTokenProviderResult.refreshInSeconds,\n token_type: AuthenticationScheme.BEARER,\n };\n } else {\n const queryParametersString =\n this.createTokenQueryParameters(request);\n const endpoint = UrlString.appendQueryString(\n authority.tokenEndpoint,\n queryParametersString\n );\n\n const requestBody = await this.createTokenRequestBody(request);\n const headers: Record =\n this.createTokenRequestHeaders();\n const thumbprint: RequestThumbprint = {\n clientId: this.config.authOptions.clientId,\n authority: request.authority,\n scopes: request.scopes,\n claims: request.claims,\n authenticationScheme: request.authenticationScheme,\n resourceRequestMethod: request.resourceRequestMethod,\n resourceRequestUri: request.resourceRequestUri,\n shrClaims: request.shrClaims,\n sshKid: request.sshKid,\n };\n\n this.logger.info(\n \"Sending token request to endpoint: \" + authority.tokenEndpoint\n );\n\n reqTimestamp = TimeUtils.nowSeconds();\n const response = await this.executePostToTokenEndpoint(\n endpoint,\n requestBody,\n headers,\n thumbprint,\n request.correlationId\n );\n\n serverTokenResponse = response.body;\n serverTokenResponse.status = response.status;\n }\n\n const responseHandler = new ResponseHandler(\n this.config.authOptions.clientId,\n this.cacheManager,\n this.cryptoUtils,\n this.logger,\n this.config.serializableCache,\n this.config.persistencePlugin\n );\n\n responseHandler.validateTokenResponse(\n serverTokenResponse,\n refreshAccessToken\n );\n\n const tokenResponse = await responseHandler.handleServerTokenResponse(\n serverTokenResponse,\n this.authority,\n reqTimestamp,\n request\n );\n\n return tokenResponse;\n }\n\n /**\n * generate the request to the server in the acceptable format\n * @param request - CommonClientCredentialRequest provided by the developer\n */\n private async createTokenRequestBody(\n request: CommonClientCredentialRequest\n ): Promise {\n const parameters = new Map();\n\n RequestParameterBuilder.addClientId(\n parameters,\n this.config.authOptions.clientId\n );\n\n RequestParameterBuilder.addScopes(parameters, request.scopes, false);\n\n RequestParameterBuilder.addGrantType(\n parameters,\n GrantType.CLIENT_CREDENTIALS_GRANT\n );\n\n RequestParameterBuilder.addLibraryInfo(\n parameters,\n this.config.libraryInfo\n );\n RequestParameterBuilder.addApplicationTelemetry(\n parameters,\n this.config.telemetry.application\n );\n\n RequestParameterBuilder.addThrottling(parameters);\n\n if (this.serverTelemetryManager) {\n RequestParameterBuilder.addServerTelemetry(\n parameters,\n this.serverTelemetryManager\n );\n }\n\n const correlationId =\n request.correlationId ||\n this.config.cryptoInterface.createNewGuid();\n RequestParameterBuilder.addCorrelationId(parameters, correlationId);\n\n if (this.config.clientCredentials.clientSecret) {\n RequestParameterBuilder.addClientSecret(\n parameters,\n this.config.clientCredentials.clientSecret\n );\n }\n\n // Use clientAssertion from request, fallback to client assertion in base configuration\n const clientAssertion: ClientAssertion | undefined =\n request.clientAssertion ||\n this.config.clientCredentials.clientAssertion;\n\n if (clientAssertion) {\n RequestParameterBuilder.addClientAssertion(\n parameters,\n await getClientAssertion(\n clientAssertion.assertion,\n this.config.authOptions.clientId,\n request.resourceRequestUri\n )\n );\n RequestParameterBuilder.addClientAssertionType(\n parameters,\n clientAssertion.assertionType\n );\n }\n\n if (\n !StringUtils.isEmptyObj(request.claims) ||\n (this.config.authOptions.clientCapabilities &&\n this.config.authOptions.clientCapabilities.length > 0)\n ) {\n RequestParameterBuilder.addClaims(\n parameters,\n request.claims,\n this.config.authOptions.clientCapabilities\n );\n }\n\n return UrlUtils.mapToQueryString(parameters);\n }\n}\n", "/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport {\n AADServerParamKeys,\n AccessTokenEntity,\n AccountEntity,\n AccountInfo,\n AuthenticationResult,\n AuthenticationScheme,\n Authority,\n AuthToken,\n BaseClient,\n CacheOutcome,\n ClientAuthErrorCodes,\n ClientConfiguration,\n CommonOnBehalfOfRequest,\n Constants,\n createClientAuthError,\n CredentialFilter,\n CredentialType,\n GrantType,\n IdTokenEntity,\n RequestParameterBuilder,\n RequestThumbprint,\n ResponseHandler,\n ScopeSet,\n TimeUtils,\n TokenClaims,\n UrlString,\n ClientAssertion,\n getClientAssertion,\n UrlUtils,\n} from \"@azure/msal-common/node\";\nimport { EncodingUtils } from \"../utils/EncodingUtils.js\";\n\n/**\n * On-Behalf-Of client\n * @public\n */\nexport class OnBehalfOfClient extends BaseClient {\n private scopeSet: ScopeSet;\n private userAssertionHash: string;\n\n constructor(configuration: ClientConfiguration) {\n super(configuration);\n }\n\n /**\n * Public API to acquire tokens with on behalf of flow\n * @param request - developer provided CommonOnBehalfOfRequest\n */\n public async acquireToken(\n request: CommonOnBehalfOfRequest\n ): Promise {\n this.scopeSet = new ScopeSet(request.scopes || []);\n\n // generate the user_assertion_hash for OBOAssertion\n this.userAssertionHash = await this.cryptoUtils.hashString(\n request.oboAssertion\n );\n\n if (request.skipCache || request.claims) {\n return this.executeTokenRequest(\n request,\n this.authority,\n this.userAssertionHash\n );\n }\n\n try {\n return await this.getCachedAuthenticationResult(request);\n } catch (e) {\n // Any failure falls back to interactive request, once we implement distributed cache, we plan to handle `createRefreshRequiredError` to refresh using the RT\n return await this.executeTokenRequest(\n request,\n this.authority,\n this.userAssertionHash\n );\n }\n }\n\n /**\n * look up cache for tokens\n * Find idtoken in the cache\n * Find accessToken based on user assertion and account info in the cache\n * Please note we are not yet supported OBO tokens refreshed with long lived RT. User will have to send a new assertion if the current access token expires\n * This is to prevent security issues when the assertion changes over time, however, longlived RT helps retaining the session\n * @param request - developer provided CommonOnBehalfOfRequest\n */\n private async getCachedAuthenticationResult(\n request: CommonOnBehalfOfRequest\n ): Promise {\n // look in the cache for the access_token which matches the incoming_assertion\n const cachedAccessToken = this.readAccessTokenFromCacheForOBO(\n this.config.authOptions.clientId,\n request\n );\n if (!cachedAccessToken) {\n // Must refresh due to non-existent access_token.\n this.serverTelemetryManager?.setCacheOutcome(\n CacheOutcome.NO_CACHED_ACCESS_TOKEN\n );\n this.logger.info(\n \"SilentFlowClient:acquireCachedToken - No access token found in cache for the given properties.\"\n );\n throw createClientAuthError(\n ClientAuthErrorCodes.tokenRefreshRequired\n );\n } else if (\n TimeUtils.isTokenExpired(\n cachedAccessToken.expiresOn,\n this.config.systemOptions.tokenRenewalOffsetSeconds\n )\n ) {\n // Access token expired, will need to renewed\n this.serverTelemetryManager?.setCacheOutcome(\n CacheOutcome.CACHED_ACCESS_TOKEN_EXPIRED\n );\n this.logger.info(\n `OnbehalfofFlow:getCachedAuthenticationResult - Cached access token is expired or will expire within ${this.config.systemOptions.tokenRenewalOffsetSeconds} seconds.`\n );\n throw createClientAuthError(\n ClientAuthErrorCodes.tokenRefreshRequired\n );\n }\n\n // fetch the idToken from cache\n const cachedIdToken = this.readIdTokenFromCacheForOBO(\n cachedAccessToken.homeAccountId,\n request.correlationId\n );\n let idTokenClaims: TokenClaims | undefined;\n let cachedAccount: AccountEntity | null = null;\n if (cachedIdToken) {\n idTokenClaims = AuthToken.extractTokenClaims(\n cachedIdToken.secret,\n EncodingUtils.base64Decode\n );\n const localAccountId = idTokenClaims.oid || idTokenClaims.sub;\n const accountInfo: AccountInfo = {\n homeAccountId: cachedIdToken.homeAccountId,\n environment: cachedIdToken.environment,\n tenantId: cachedIdToken.realm,\n username: Constants.EMPTY_STRING,\n localAccountId: localAccountId || Constants.EMPTY_STRING,\n };\n\n cachedAccount = this.cacheManager.readAccountFromCache(\n accountInfo,\n request.correlationId\n );\n }\n\n // increment telemetry cache hit counter\n if (this.config.serverTelemetryManager) {\n this.config.serverTelemetryManager.incrementCacheHits();\n }\n\n return ResponseHandler.generateAuthenticationResult(\n this.cryptoUtils,\n this.authority,\n {\n account: cachedAccount,\n accessToken: cachedAccessToken,\n idToken: cachedIdToken,\n refreshToken: null,\n appMetadata: null,\n },\n true,\n request,\n idTokenClaims\n );\n }\n\n /**\n * read idtoken from cache, this is a specific implementation for OBO as the requirements differ from a generic lookup in the cacheManager\n * Certain use cases of OBO flow do not expect an idToken in the cache/or from the service\n * @param atHomeAccountId - account id\n */\n private readIdTokenFromCacheForOBO(\n atHomeAccountId: string,\n correlationId: string\n ): IdTokenEntity | null {\n const idTokenFilter: CredentialFilter = {\n homeAccountId: atHomeAccountId,\n environment:\n this.authority.canonicalAuthorityUrlComponents.HostNameAndPort,\n credentialType: CredentialType.ID_TOKEN,\n clientId: this.config.authOptions.clientId,\n realm: this.authority.tenant,\n };\n\n const idTokenMap: Map =\n this.cacheManager.getIdTokensByFilter(idTokenFilter, correlationId);\n\n // When acquiring a token on behalf of an application, there might not be an id token in the cache\n if (Object.values(idTokenMap).length < 1) {\n return null;\n }\n return Object.values(idTokenMap)[0] as IdTokenEntity;\n }\n\n /**\n * Fetches the cached access token based on incoming assertion\n * @param clientId - client id\n * @param request - developer provided CommonOnBehalfOfRequest\n */\n private readAccessTokenFromCacheForOBO(\n clientId: string,\n request: CommonOnBehalfOfRequest\n ) {\n const authScheme =\n request.authenticationScheme || AuthenticationScheme.BEARER;\n /*\n * Distinguish between Bearer and PoP/SSH token cache types\n * Cast to lowercase to handle \"bearer\" from ADFS\n */\n const credentialType =\n authScheme &&\n authScheme.toLowerCase() !==\n AuthenticationScheme.BEARER.toLowerCase()\n ? CredentialType.ACCESS_TOKEN_WITH_AUTH_SCHEME\n : CredentialType.ACCESS_TOKEN;\n\n const accessTokenFilter: CredentialFilter = {\n credentialType: credentialType,\n clientId,\n target: ScopeSet.createSearchScopes(this.scopeSet.asArray()),\n tokenType: authScheme,\n keyId: request.sshKid,\n requestedClaimsHash: request.requestedClaimsHash,\n userAssertionHash: this.userAssertionHash,\n };\n\n const accessTokens = this.cacheManager.getAccessTokensByFilter(\n accessTokenFilter,\n request.correlationId\n );\n\n const numAccessTokens = accessTokens.length;\n if (numAccessTokens < 1) {\n return null;\n } else if (numAccessTokens > 1) {\n throw createClientAuthError(\n ClientAuthErrorCodes.multipleMatchingTokens\n );\n }\n\n return accessTokens[0] as AccessTokenEntity;\n }\n\n /**\n * Make a network call to the server requesting credentials\n * @param request - developer provided CommonOnBehalfOfRequest\n * @param authority - authority object\n */\n private async executeTokenRequest(\n request: CommonOnBehalfOfRequest,\n authority: Authority,\n userAssertionHash: string\n ): Promise {\n const queryParametersString = this.createTokenQueryParameters(request);\n const endpoint = UrlString.appendQueryString(\n authority.tokenEndpoint,\n queryParametersString\n );\n const requestBody = await this.createTokenRequestBody(request);\n const headers: Record =\n this.createTokenRequestHeaders();\n const thumbprint: RequestThumbprint = {\n clientId: this.config.authOptions.clientId,\n authority: request.authority,\n scopes: request.scopes,\n claims: request.claims,\n authenticationScheme: request.authenticationScheme,\n resourceRequestMethod: request.resourceRequestMethod,\n resourceRequestUri: request.resourceRequestUri,\n shrClaims: request.shrClaims,\n sshKid: request.sshKid,\n };\n\n const reqTimestamp = TimeUtils.nowSeconds();\n const response = await this.executePostToTokenEndpoint(\n endpoint,\n requestBody,\n headers,\n thumbprint,\n request.correlationId\n );\n\n const responseHandler = new ResponseHandler(\n this.config.authOptions.clientId,\n this.cacheManager,\n this.cryptoUtils,\n this.logger,\n this.config.serializableCache,\n this.config.persistencePlugin\n );\n\n responseHandler.validateTokenResponse(response.body);\n const tokenResponse = await responseHandler.handleServerTokenResponse(\n response.body,\n this.authority,\n reqTimestamp,\n request,\n undefined,\n userAssertionHash\n );\n\n return tokenResponse;\n }\n\n /**\n * generate a server request in accepable format\n * @param request - developer provided CommonOnBehalfOfRequest\n */\n private async createTokenRequestBody(\n request: CommonOnBehalfOfRequest\n ): Promise {\n const parameters = new Map();\n\n RequestParameterBuilder.addClientId(\n parameters,\n this.config.authOptions.clientId\n );\n\n RequestParameterBuilder.addScopes(parameters, request.scopes);\n\n RequestParameterBuilder.addGrantType(parameters, GrantType.JWT_BEARER);\n\n RequestParameterBuilder.addClientInfo(parameters);\n\n RequestParameterBuilder.addLibraryInfo(\n parameters,\n this.config.libraryInfo\n );\n RequestParameterBuilder.addApplicationTelemetry(\n parameters,\n this.config.telemetry.application\n );\n RequestParameterBuilder.addThrottling(parameters);\n\n if (this.serverTelemetryManager) {\n RequestParameterBuilder.addServerTelemetry(\n parameters,\n this.serverTelemetryManager\n );\n }\n\n const correlationId =\n request.correlationId ||\n this.config.cryptoInterface.createNewGuid();\n RequestParameterBuilder.addCorrelationId(parameters, correlationId);\n\n RequestParameterBuilder.addRequestTokenUse(\n parameters,\n AADServerParamKeys.ON_BEHALF_OF\n );\n\n RequestParameterBuilder.addOboAssertion(\n parameters,\n request.oboAssertion\n );\n\n if (this.config.clientCredentials.clientSecret) {\n RequestParameterBuilder.addClientSecret(\n parameters,\n this.config.clientCredentials.clientSecret\n );\n }\n\n const clientAssertion: ClientAssertion | undefined =\n this.config.clientCredentials.clientAssertion;\n\n if (clientAssertion) {\n RequestParameterBuilder.addClientAssertion(\n parameters,\n await getClientAssertion(\n clientAssertion.assertion,\n this.config.authOptions.clientId,\n request.resourceRequestUri\n )\n );\n RequestParameterBuilder.addClientAssertionType(\n parameters,\n clientAssertion.assertionType\n );\n }\n\n if (\n request.claims ||\n (this.config.authOptions.clientCapabilities &&\n this.config.authOptions.clientCapabilities.length > 0)\n ) {\n RequestParameterBuilder.addClaims(\n parameters,\n request.claims,\n this.config.authOptions.clientCapabilities\n );\n }\n\n return UrlUtils.mapToQueryString(parameters);\n }\n}\n", "/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\n// AADAuthorityConstants\n\nimport { ClientApplication } from \"./ClientApplication.js\";\nimport { Configuration } from \"../config/Configuration.js\";\nimport { ClientAssertion } from \"./ClientAssertion.js\";\nimport {\n Constants as NodeConstants,\n ApiId,\n REGION_ENVIRONMENT_VARIABLE,\n MSAL_FORCE_REGION,\n} from \"../utils/Constants.js\";\nimport {\n CommonClientCredentialRequest,\n CommonOnBehalfOfRequest,\n AuthenticationResult,\n AzureRegionConfiguration,\n AuthError,\n IAppTokenProvider,\n OIDC_DEFAULT_SCOPES,\n UrlString,\n AADAuthorityConstants,\n createClientAuthError,\n ClientAuthErrorCodes,\n ClientAssertion as ClientAssertionType,\n getClientAssertion,\n AzureRegion,\n} from \"@azure/msal-common/node\";\nimport { IConfidentialClientApplication } from \"./IConfidentialClientApplication.js\";\nimport { OnBehalfOfRequest } from \"../request/OnBehalfOfRequest.js\";\nimport { ClientCredentialRequest } from \"../request/ClientCredentialRequest.js\";\nimport { ClientCredentialClient } from \"./ClientCredentialClient.js\";\nimport { OnBehalfOfClient } from \"./OnBehalfOfClient.js\";\n\n/**\n * This class is to be used to acquire tokens for confidential client applications (webApp, webAPI). Confidential client applications\n * will configure application secrets, client certificates/assertions as applicable\n * @public\n */\nexport class ConfidentialClientApplication\n extends ClientApplication\n implements IConfidentialClientApplication\n{\n private appTokenProvider?: IAppTokenProvider;\n\n /**\n * Constructor for the ConfidentialClientApplication\n *\n * Required attributes in the Configuration object are:\n * - clientID: the application ID of your application. You can obtain one by registering your application with our application registration portal\n * - authority: the authority URL for your application.\n * - client credential: Must set either client secret, certificate, or assertion for confidential clients. You can obtain a client secret from the application registration portal.\n *\n * In Azure AD, authority is a URL indicating of the form https://login.microsoftonline.com/\\{Enter_the_Tenant_Info_Here\\}.\n * If your application supports Accounts in one organizational directory, replace \"Enter_the_Tenant_Info_Here\" value with the Tenant Id or Tenant name (for example, contoso.microsoft.com).\n * If your application supports Accounts in any organizational directory, replace \"Enter_the_Tenant_Info_Here\" value with organizations.\n * If your application supports Accounts in any organizational directory and personal Microsoft accounts, replace \"Enter_the_Tenant_Info_Here\" value with common.\n * To restrict support to Personal Microsoft accounts only, replace \"Enter_the_Tenant_Info_Here\" value with consumers.\n *\n * In Azure B2C, authority is of the form https://\\{instance\\}/tfp/\\{tenant\\}/\\{policyName\\}/\n * Full B2C functionality will be available in this library in future versions.\n *\n * @param Configuration - configuration object for the MSAL ConfidentialClientApplication instance\n */\n constructor(configuration: Configuration) {\n super(configuration);\n\n const clientSecretNotEmpty = !!this.config.auth.clientSecret;\n const clientAssertionNotEmpty = !!this.config.auth.clientAssertion;\n const certificateNotEmpty =\n (!!this.config.auth.clientCertificate?.thumbprint ||\n !!this.config.auth.clientCertificate?.thumbprintSha256) &&\n !!this.config.auth.clientCertificate?.privateKey;\n\n /*\n * If app developer configures this callback, they don't need a credential\n * i.e. AzureSDK can get token from Managed Identity without a cert / secret\n */\n if (this.appTokenProvider) {\n return;\n }\n\n // Check that at most one credential is set on the application\n if (\n (clientSecretNotEmpty && clientAssertionNotEmpty) ||\n (clientAssertionNotEmpty && certificateNotEmpty) ||\n (clientSecretNotEmpty && certificateNotEmpty)\n ) {\n throw createClientAuthError(\n ClientAuthErrorCodes.invalidClientCredential\n );\n }\n\n if (this.config.auth.clientSecret) {\n this.clientSecret = this.config.auth.clientSecret;\n return;\n }\n\n if (this.config.auth.clientAssertion) {\n this.developerProvidedClientAssertion =\n this.config.auth.clientAssertion;\n return;\n }\n\n if (!certificateNotEmpty) {\n throw createClientAuthError(\n ClientAuthErrorCodes.invalidClientCredential\n );\n } else {\n this.clientAssertion = !!this.config.auth.clientCertificate\n .thumbprintSha256\n ? ClientAssertion.fromCertificateWithSha256Thumbprint(\n this.config.auth.clientCertificate.thumbprintSha256,\n this.config.auth.clientCertificate.privateKey,\n this.config.auth.clientCertificate.x5c\n )\n : ClientAssertion.fromCertificate(\n // guaranteed to be a string, due to prior error checking in this function\n this.config.auth.clientCertificate.thumbprint as string,\n this.config.auth.clientCertificate.privateKey,\n this.config.auth.clientCertificate.x5c\n );\n }\n this.appTokenProvider = undefined;\n }\n\n /**\n * This extensibility point only works for the client_credential flow, i.e. acquireTokenByClientCredential and\n * is meant for Azure SDK to enhance Managed Identity support.\n *\n * @param IAppTokenProvider - Extensibility interface, which allows the app developer to return a token from a custom source.\n */\n SetAppTokenProvider(provider: IAppTokenProvider): void {\n this.appTokenProvider = provider;\n }\n\n /**\n * Acquires tokens from the authority for the application (not for an end user).\n */\n public async acquireTokenByClientCredential(\n request: ClientCredentialRequest\n ): Promise {\n this.logger.info(\n \"acquireTokenByClientCredential called\",\n request.correlationId\n );\n\n // If there is a client assertion present in the request, it overrides the one present in the client configuration\n let clientAssertion: ClientAssertionType | undefined;\n if (request.clientAssertion) {\n clientAssertion = {\n assertion: await getClientAssertion(\n request.clientAssertion,\n this.config.auth.clientId\n // tokenEndpoint will be undefined. resourceRequestUri is omitted in ClientCredentialRequest\n ),\n assertionType: NodeConstants.JWT_BEARER_ASSERTION_TYPE,\n };\n }\n\n const baseRequest = await this.initializeBaseRequest(request);\n\n // valid base request should not contain oidc scopes in this grant type\n const validBaseRequest = {\n ...baseRequest,\n scopes: baseRequest.scopes.filter(\n (scope: string) => !OIDC_DEFAULT_SCOPES.includes(scope)\n ),\n };\n\n const validRequest: CommonClientCredentialRequest = {\n ...request,\n ...validBaseRequest,\n clientAssertion,\n };\n\n /*\n * valid request should not have \"common\" or \"organizations\" in lieu of the tenant_id in the authority in the auth configuration\n * example authority: \"https://login.microsoftonline.com/TenantId\",\n */\n const authority = new UrlString(validRequest.authority);\n const tenantId = authority.getUrlComponents().PathSegments[0];\n if (\n Object.values(AADAuthorityConstants).includes(\n tenantId as AADAuthorityConstants\n )\n ) {\n throw createClientAuthError(\n ClientAuthErrorCodes.missingTenantIdError\n );\n }\n\n /*\n * if this env variable is set, and the developer provided region isn't defined and isn't \"DisableMsalForceRegion\",\n * MSAL shall opt-in to ESTS-R with the value of this variable\n */\n const ENV_MSAL_FORCE_REGION: AzureRegion | undefined =\n process.env[MSAL_FORCE_REGION];\n\n let region: AzureRegion | undefined;\n if (validRequest.azureRegion !== \"DisableMsalForceRegion\") {\n if (!validRequest.azureRegion && ENV_MSAL_FORCE_REGION) {\n region = ENV_MSAL_FORCE_REGION;\n } else {\n region = validRequest.azureRegion;\n }\n }\n\n const azureRegionConfiguration: AzureRegionConfiguration = {\n azureRegion: region,\n environmentRegion: process.env[REGION_ENVIRONMENT_VARIABLE],\n };\n\n const serverTelemetryManager = this.initializeServerTelemetryManager(\n ApiId.acquireTokenByClientCredential,\n validRequest.correlationId,\n validRequest.skipCache\n );\n try {\n const discoveredAuthority = await this.createAuthority(\n validRequest.authority,\n validRequest.correlationId,\n azureRegionConfiguration,\n request.azureCloudOptions\n );\n const clientCredentialConfig =\n await this.buildOauthClientConfiguration(\n discoveredAuthority,\n validRequest.correlationId,\n \"\",\n serverTelemetryManager\n );\n const clientCredentialClient = new ClientCredentialClient(\n clientCredentialConfig,\n this.appTokenProvider\n );\n this.logger.verbose(\n \"Client credential client created\",\n validRequest.correlationId\n );\n return await clientCredentialClient.acquireToken(validRequest);\n } catch (e) {\n if (e instanceof AuthError) {\n e.setCorrelationId(validRequest.correlationId);\n }\n serverTelemetryManager.cacheFailedRequest(e);\n throw e;\n }\n }\n\n /**\n * Acquires tokens from the authority for the application.\n *\n * Used in scenarios where the current app is a middle-tier service which was called with a token\n * representing an end user. The current app can use the token (oboAssertion) to request another\n * token to access downstream web API, on behalf of that user.\n *\n * The current middle-tier app has no user interaction to obtain consent.\n * See how to gain consent upfront for your middle-tier app from this article.\n * https://docs.microsoft.com/en-us/azure/active-directory/develop/v2-oauth2-on-behalf-of-flow#gaining-consent-for-the-middle-tier-application\n */\n public async acquireTokenOnBehalfOf(\n request: OnBehalfOfRequest\n ): Promise {\n this.logger.info(\n \"acquireTokenOnBehalfOf called\",\n request.correlationId\n );\n const validRequest: CommonOnBehalfOfRequest = {\n ...request,\n ...(await this.initializeBaseRequest(request)),\n };\n try {\n const discoveredAuthority = await this.createAuthority(\n validRequest.authority,\n validRequest.correlationId,\n undefined,\n request.azureCloudOptions\n );\n const onBehalfOfConfig = await this.buildOauthClientConfiguration(\n discoveredAuthority,\n validRequest.correlationId,\n \"\",\n undefined\n );\n const oboClient = new OnBehalfOfClient(onBehalfOfConfig);\n this.logger.verbose(\n \"On behalf of client created\",\n validRequest.correlationId\n );\n return await oboClient.acquireToken(validRequest);\n } catch (e) {\n if (e instanceof AuthError) {\n e.setCorrelationId(validRequest.correlationId);\n }\n throw e;\n }\n }\n}\n", "/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\n/**\n * @internal\n * Checks if a given date string is in ISO 8601 format.\n *\n * @param dateString - The date string to be checked.\n * @returns boolean - Returns true if the date string is in ISO 8601 format, otherwise false.\n */\nexport function isIso8601(dateString: number | string): boolean {\n if (typeof dateString !== \"string\") {\n return false;\n }\n\n const date = new Date(dateString);\n return !isNaN(date.getTime()) && date.toISOString() === dateString;\n}\n", "/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport {\n HeaderNames,\n INetworkModule,\n Logger,\n NetworkRequestOptions,\n NetworkResponse,\n} from \"@azure/msal-common/node\";\nimport { IHttpRetryPolicy } from \"../retry/IHttpRetryPolicy.js\";\nimport { HttpMethod } from \"../utils/Constants.js\";\n\nexport class HttpClientWithRetries implements INetworkModule {\n private httpClientNoRetries: INetworkModule;\n private retryPolicy: IHttpRetryPolicy;\n private logger: Logger;\n\n constructor(\n httpClientNoRetries: INetworkModule,\n retryPolicy: IHttpRetryPolicy,\n logger: Logger\n ) {\n this.httpClientNoRetries = httpClientNoRetries;\n this.retryPolicy = retryPolicy;\n this.logger = logger;\n }\n\n private async sendNetworkRequestAsyncHelper(\n httpMethod: HttpMethod,\n url: string,\n options?: NetworkRequestOptions\n ): Promise> {\n if (httpMethod === HttpMethod.GET) {\n return this.httpClientNoRetries.sendGetRequestAsync(url, options);\n } else {\n return this.httpClientNoRetries.sendPostRequestAsync(url, options);\n }\n }\n\n private async sendNetworkRequestAsync(\n httpMethod: HttpMethod,\n url: string,\n options?: NetworkRequestOptions\n ): Promise> {\n // the underlying network module (custom or HttpClient) will make the call\n let response: NetworkResponse =\n await this.sendNetworkRequestAsyncHelper(httpMethod, url, options);\n\n if (\"isNewRequest\" in this.retryPolicy) {\n this.retryPolicy.isNewRequest = true;\n }\n\n let currentRetry: number = 0;\n while (\n await this.retryPolicy.pauseForRetry(\n response.status,\n currentRetry,\n this.logger,\n response.headers[HeaderNames.RETRY_AFTER]\n )\n ) {\n response = await this.sendNetworkRequestAsyncHelper(\n httpMethod,\n url,\n options\n );\n currentRetry++;\n }\n\n return response;\n }\n\n public async sendGetRequestAsync(\n url: string,\n options?: NetworkRequestOptions\n ): Promise> {\n return this.sendNetworkRequestAsync(HttpMethod.GET, url, options);\n }\n\n public async sendPostRequestAsync(\n url: string,\n options?: NetworkRequestOptions\n ): Promise> {\n return this.sendNetworkRequestAsync(HttpMethod.POST, url, options);\n }\n}\n", "/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport {\n AuthError,\n Authority,\n ClientAuthErrorCodes,\n Constants,\n HeaderNames,\n INetworkModule,\n Logger,\n NetworkRequestOptions,\n NetworkResponse,\n ResponseHandler,\n ServerAuthorizationTokenResponse,\n TimeUtils,\n createClientAuthError,\n AuthenticationResult,\n UrlString,\n} from \"@azure/msal-common/node\";\nimport { ManagedIdentityId } from \"../../config/ManagedIdentityId.js\";\nimport { ManagedIdentityRequestParameters } from \"../../config/ManagedIdentityRequestParameters.js\";\nimport { CryptoProvider } from \"../../crypto/CryptoProvider.js\";\nimport { ManagedIdentityRequest } from \"../../request/ManagedIdentityRequest.js\";\nimport {\n HttpMethod,\n ManagedIdentityIdType,\n ManagedIdentityQueryParameters,\n} from \"../../utils/Constants.js\";\nimport { ManagedIdentityTokenResponse } from \"../../response/ManagedIdentityTokenResponse.js\";\nimport { NodeStorage } from \"../../cache/NodeStorage.js\";\nimport {\n ManagedIdentityErrorCodes,\n createManagedIdentityError,\n} from \"../../error/ManagedIdentityError.js\";\nimport { isIso8601 } from \"../../utils/TimeUtils.js\";\nimport { HttpClientWithRetries } from \"../../network/HttpClientWithRetries.js\";\n\n/**\n * Managed Identity User Assigned Id Query Parameter Names\n */\nexport const ManagedIdentityUserAssignedIdQueryParameterNames = {\n MANAGED_IDENTITY_CLIENT_ID_2017: \"clientid\", // 2017-09-01 API version\n MANAGED_IDENTITY_CLIENT_ID: \"client_id\", // 2019+ API versions\n MANAGED_IDENTITY_OBJECT_ID: \"object_id\",\n MANAGED_IDENTITY_RESOURCE_ID_IMDS: \"msi_res_id\",\n MANAGED_IDENTITY_RESOURCE_ID_NON_IMDS: \"mi_res_id\",\n} as const;\nexport type ManagedIdentityUserAssignedIdQueryParameterNames =\n (typeof ManagedIdentityUserAssignedIdQueryParameterNames)[keyof typeof ManagedIdentityUserAssignedIdQueryParameterNames];\n\nexport abstract class BaseManagedIdentitySource {\n protected logger: Logger;\n private nodeStorage: NodeStorage;\n private networkClient: INetworkModule;\n private cryptoProvider: CryptoProvider;\n private disableInternalRetries: boolean;\n\n constructor(\n logger: Logger,\n nodeStorage: NodeStorage,\n networkClient: INetworkModule,\n cryptoProvider: CryptoProvider,\n disableInternalRetries: boolean\n ) {\n this.logger = logger;\n this.nodeStorage = nodeStorage;\n this.networkClient = networkClient;\n this.cryptoProvider = cryptoProvider;\n this.disableInternalRetries = disableInternalRetries;\n }\n\n abstract createRequest(\n request: string,\n managedIdentityId: ManagedIdentityId\n ): ManagedIdentityRequestParameters;\n\n public async getServerTokenResponseAsync(\n response: NetworkResponse,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n _networkClient: INetworkModule,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n _networkRequest: ManagedIdentityRequestParameters,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n _networkRequestOptions: NetworkRequestOptions\n ): Promise {\n return this.getServerTokenResponse(response);\n }\n\n public getServerTokenResponse(\n response: NetworkResponse\n ): ServerAuthorizationTokenResponse {\n let refreshIn, expiresIn: number | undefined;\n if (response.body.expires_on) {\n // if the expires_on field in the response body is a string and in ISO 8601 format, convert it to a Unix timestamp (seconds since epoch)\n if (isIso8601(response.body.expires_on)) {\n response.body.expires_on =\n new Date(response.body.expires_on).getTime() / 1000;\n }\n\n expiresIn = response.body.expires_on - TimeUtils.nowSeconds();\n\n // compute refresh_in as 1/2 of expires_in, but only if expires_in > 2h\n if (expiresIn > 2 * 3600) {\n refreshIn = expiresIn / 2;\n }\n }\n\n const serverTokenResponse: ServerAuthorizationTokenResponse = {\n status: response.status,\n\n // success\n access_token: response.body.access_token,\n expires_in: expiresIn,\n scope: response.body.resource,\n token_type: response.body.token_type,\n refresh_in: refreshIn,\n\n // error\n correlation_id:\n response.body.correlation_id || response.body.correlationId,\n error:\n typeof response.body.error === \"string\"\n ? response.body.error\n : response.body.error?.code,\n error_description:\n response.body.message ||\n (typeof response.body.error === \"string\"\n ? response.body.error_description\n : response.body.error?.message),\n error_codes: response.body.error_codes,\n timestamp: response.body.timestamp,\n trace_id: response.body.trace_id,\n };\n\n return serverTokenResponse;\n }\n\n public async acquireTokenWithManagedIdentity(\n managedIdentityRequest: ManagedIdentityRequest,\n managedIdentityId: ManagedIdentityId,\n fakeAuthority: Authority,\n refreshAccessToken?: boolean\n ): Promise {\n const networkRequest: ManagedIdentityRequestParameters =\n this.createRequest(\n managedIdentityRequest.resource,\n managedIdentityId\n );\n\n if (managedIdentityRequest.revokedTokenSha256Hash) {\n this.logger.info(\n `[Managed Identity] The following claims are present in the request: ${managedIdentityRequest.claims}`\n );\n\n networkRequest.queryParameters[\n ManagedIdentityQueryParameters.SHA256_TOKEN_TO_REFRESH\n ] = managedIdentityRequest.revokedTokenSha256Hash;\n }\n\n if (managedIdentityRequest.clientCapabilities?.length) {\n const clientCapabilities: string =\n managedIdentityRequest.clientCapabilities.toString();\n\n this.logger.info(\n `[Managed Identity] The following client capabilities are present in the request: ${clientCapabilities}`\n );\n\n networkRequest.queryParameters[\n ManagedIdentityQueryParameters.XMS_CC\n ] = clientCapabilities;\n }\n\n const headers: Record = networkRequest.headers;\n headers[HeaderNames.CONTENT_TYPE] = Constants.URL_FORM_CONTENT_TYPE;\n\n const networkRequestOptions: NetworkRequestOptions = { headers };\n\n if (Object.keys(networkRequest.bodyParameters).length) {\n networkRequestOptions.body =\n networkRequest.computeParametersBodyString();\n }\n\n /**\n * Initializes the network client helper based on the retry policy configuration.\n * If internal retries are disabled, it uses the provided network client directly.\n * Otherwise, it wraps the network client with an HTTP client that supports retries.\n */\n const networkClientHelper: INetworkModule = this.disableInternalRetries\n ? this.networkClient\n : new HttpClientWithRetries(\n this.networkClient,\n networkRequest.retryPolicy,\n this.logger\n );\n\n const reqTimestamp = TimeUtils.nowSeconds();\n let response: NetworkResponse;\n try {\n // Sources that send POST requests: Cloud Shell\n if (networkRequest.httpMethod === HttpMethod.POST) {\n response =\n await networkClientHelper.sendPostRequestAsync(\n networkRequest.computeUri(),\n networkRequestOptions\n );\n // Sources that send GET requests: App Service, Azure Arc, IMDS, Service Fabric\n } else {\n response =\n await networkClientHelper.sendGetRequestAsync(\n networkRequest.computeUri(),\n networkRequestOptions\n );\n }\n } catch (error) {\n if (error instanceof AuthError) {\n throw error;\n } else {\n throw createClientAuthError(ClientAuthErrorCodes.networkError);\n }\n }\n\n const responseHandler = new ResponseHandler(\n managedIdentityId.id,\n this.nodeStorage,\n this.cryptoProvider,\n this.logger,\n null,\n null\n );\n\n const serverTokenResponse: ServerAuthorizationTokenResponse =\n await this.getServerTokenResponseAsync(\n response,\n networkClientHelper,\n networkRequest,\n networkRequestOptions\n );\n\n responseHandler.validateTokenResponse(\n serverTokenResponse,\n refreshAccessToken\n );\n\n // caches the token\n return responseHandler.handleServerTokenResponse(\n serverTokenResponse,\n fakeAuthority,\n reqTimestamp,\n managedIdentityRequest\n );\n }\n\n public getManagedIdentityUserAssignedIdQueryParameterKey(\n managedIdentityIdType: ManagedIdentityIdType,\n isImds?: boolean,\n usesApi2017?: boolean\n ): string {\n switch (managedIdentityIdType) {\n case ManagedIdentityIdType.USER_ASSIGNED_CLIENT_ID:\n this.logger.info(\n `[Managed Identity] [API version ${\n usesApi2017 ? \"2017+\" : \"2019+\"\n }] Adding user assigned client id to the request.`\n );\n // The Machine Learning source uses the 2017-09-01 API version, which uses \"clientid\" instead of \"client_id\"\n return usesApi2017\n ? ManagedIdentityUserAssignedIdQueryParameterNames.MANAGED_IDENTITY_CLIENT_ID_2017\n : ManagedIdentityUserAssignedIdQueryParameterNames.MANAGED_IDENTITY_CLIENT_ID;\n\n case ManagedIdentityIdType.USER_ASSIGNED_RESOURCE_ID:\n this.logger.info(\n \"[Managed Identity] Adding user assigned resource id to the request.\"\n );\n return isImds\n ? ManagedIdentityUserAssignedIdQueryParameterNames.MANAGED_IDENTITY_RESOURCE_ID_IMDS\n : ManagedIdentityUserAssignedIdQueryParameterNames.MANAGED_IDENTITY_RESOURCE_ID_NON_IMDS;\n\n case ManagedIdentityIdType.USER_ASSIGNED_OBJECT_ID:\n this.logger.info(\n \"[Managed Identity] Adding user assigned object id to the request.\"\n );\n return ManagedIdentityUserAssignedIdQueryParameterNames.MANAGED_IDENTITY_OBJECT_ID;\n default:\n throw createManagedIdentityError(\n ManagedIdentityErrorCodes.invalidManagedIdentityIdType\n );\n }\n }\n\n public static getValidatedEnvVariableUrlString = (\n envVariableStringName: string,\n envVariable: string,\n sourceName: string,\n logger: Logger\n ): string => {\n try {\n return new UrlString(envVariable).urlString;\n } catch (error) {\n logger.info(\n `[Managed Identity] ${sourceName} managed identity is unavailable because the '${envVariableStringName}' environment variable is malformed.`\n );\n\n throw createManagedIdentityError(\n ManagedIdentityErrorCodes\n .MsiEnvironmentVariableUrlMalformedErrorCodes[\n envVariableStringName\n ]\n );\n }\n };\n}\n", "/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { IncomingHttpHeaders } from \"http\";\n\nexport class LinearRetryStrategy {\n /**\n * Calculates the number of milliseconds to sleep based on the `retry-after` HTTP header.\n *\n * @param retryHeader - The value of the `retry-after` HTTP header. This can be either a number of seconds\n * or an HTTP date string.\n * @returns The number of milliseconds to sleep before retrying the request. If the `retry-after` header is not\n * present or cannot be parsed, returns 0.\n */\n public calculateDelay(\n retryHeader: IncomingHttpHeaders[\"retry-after\"],\n minimumDelay: number\n ): number {\n if (!retryHeader) {\n return minimumDelay;\n }\n\n // retry-after header is in seconds\n let millisToSleep = Math.round(parseFloat(retryHeader) * 1000);\n\n /*\n * retry-after header is in HTTP Date format\n * , :: GMT\n */\n if (isNaN(millisToSleep)) {\n // .valueOf() is needed to subtract dates in TypeScript\n millisToSleep =\n new Date(retryHeader).valueOf() - new Date().valueOf();\n }\n\n return Math.max(minimumDelay, millisToSleep);\n }\n}\n", "/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { IncomingHttpHeaders } from \"http\";\nimport { HttpStatus, Logger } from \"@azure/msal-common\";\nimport { IHttpRetryPolicy } from \"./IHttpRetryPolicy.js\";\nimport { LinearRetryStrategy } from \"./LinearRetryStrategy.js\";\n\nexport const DEFAULT_MANAGED_IDENTITY_MAX_RETRIES: number = 3; // referenced in unit test\nconst DEFAULT_MANAGED_IDENTITY_RETRY_DELAY_MS: number = 1000;\nconst DEFAULT_MANAGED_IDENTITY_HTTP_STATUS_CODES_TO_RETRY_ON: Array = [\n HttpStatus.NOT_FOUND,\n HttpStatus.REQUEST_TIMEOUT,\n HttpStatus.TOO_MANY_REQUESTS,\n HttpStatus.SERVER_ERROR,\n HttpStatus.SERVICE_UNAVAILABLE,\n HttpStatus.GATEWAY_TIMEOUT,\n];\n\nexport class DefaultManagedIdentityRetryPolicy implements IHttpRetryPolicy {\n /*\n * this is defined here as a static variable despite being defined as a constant outside of the\n * class because it needs to be overridden in the unit tests so that the unit tests run faster\n */\n static get DEFAULT_MANAGED_IDENTITY_RETRY_DELAY_MS(): number {\n return DEFAULT_MANAGED_IDENTITY_RETRY_DELAY_MS;\n }\n\n private linearRetryStrategy: LinearRetryStrategy =\n new LinearRetryStrategy();\n\n async pauseForRetry(\n httpStatusCode: number,\n currentRetry: number,\n logger: Logger,\n retryAfterHeader: IncomingHttpHeaders[\"retry-after\"]\n ): Promise {\n if (\n DEFAULT_MANAGED_IDENTITY_HTTP_STATUS_CODES_TO_RETRY_ON.includes(\n httpStatusCode\n ) &&\n currentRetry < DEFAULT_MANAGED_IDENTITY_MAX_RETRIES\n ) {\n const retryAfterDelay: number =\n this.linearRetryStrategy.calculateDelay(\n retryAfterHeader,\n DefaultManagedIdentityRetryPolicy.DEFAULT_MANAGED_IDENTITY_RETRY_DELAY_MS\n );\n\n logger.verbose(\n `Retrying request in ${retryAfterDelay}ms (retry attempt: ${\n currentRetry + 1\n })`\n );\n\n // pause execution for the calculated delay\n await new Promise((resolve) => {\n // retryAfterHeader value of 0 evaluates to false, and DEFAULT_MANAGED_IDENTITY_RETRY_DELAY_MS will be used\n return setTimeout(resolve, retryAfterDelay);\n });\n\n return true;\n }\n\n // if the status code is not retriable or max retries have been reached, do not retry\n return false;\n }\n}\n", "/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport {\n RequestParameterBuilder,\n UrlString,\n UrlUtils,\n} from \"@azure/msal-common/node\";\nimport { DefaultManagedIdentityRetryPolicy } from \"../retry/DefaultManagedIdentityRetryPolicy.js\";\nimport { HttpMethod, RetryPolicies } from \"../utils/Constants.js\";\n\nexport class ManagedIdentityRequestParameters {\n private _baseEndpoint: string;\n public httpMethod: HttpMethod;\n public headers: Record;\n public bodyParameters: Record;\n public queryParameters: Record;\n public retryPolicy: RetryPolicies;\n\n constructor(\n httpMethod: HttpMethod,\n endpoint: string,\n retryPolicy?: RetryPolicies\n ) {\n this.httpMethod = httpMethod;\n this._baseEndpoint = endpoint;\n this.headers = {} as Record;\n this.bodyParameters = {} as Record;\n this.queryParameters = {} as Record;\n\n this.retryPolicy =\n retryPolicy || new DefaultManagedIdentityRetryPolicy();\n }\n\n public computeUri(): string {\n const parameters = new Map();\n\n if (this.queryParameters) {\n RequestParameterBuilder.addExtraQueryParameters(\n parameters,\n this.queryParameters\n );\n }\n\n const queryParametersString = UrlUtils.mapToQueryString(parameters);\n\n return UrlString.appendQueryString(\n this._baseEndpoint,\n queryParametersString\n );\n }\n\n public computeParametersBodyString(): string {\n const parameters = new Map();\n\n if (this.bodyParameters) {\n RequestParameterBuilder.addExtraQueryParameters(\n parameters,\n this.bodyParameters\n );\n }\n\n return UrlUtils.mapToQueryString(parameters);\n }\n}\n", "/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { INetworkModule, Logger } from \"@azure/msal-common/node\";\nimport { BaseManagedIdentitySource } from \"./BaseManagedIdentitySource.js\";\nimport {\n HttpMethod,\n ManagedIdentityEnvironmentVariableNames,\n ManagedIdentitySourceNames,\n ManagedIdentityIdType,\n ManagedIdentityQueryParameters,\n ManagedIdentityHeaders,\n} from \"../../utils/Constants.js\";\nimport { CryptoProvider } from \"../../crypto/CryptoProvider.js\";\nimport { ManagedIdentityRequestParameters } from \"../../config/ManagedIdentityRequestParameters.js\";\nimport { ManagedIdentityId } from \"../../config/ManagedIdentityId.js\";\nimport { NodeStorage } from \"../../cache/NodeStorage.js\";\n\n// MSI Constants. Docs for MSI are available here https://docs.microsoft.com/azure/app-service/overview-managed-identity\nconst APP_SERVICE_MSI_API_VERSION: string = \"2019-08-01\";\n\n/**\n * Original source of code: https://github.com/Azure/azure-sdk-for-net/blob/main/sdk/identity/Azure.Identity/src/AppServiceManagedIdentitySource.cs\n */\nexport class AppService extends BaseManagedIdentitySource {\n private identityEndpoint: string;\n private identityHeader: string;\n\n constructor(\n logger: Logger,\n nodeStorage: NodeStorage,\n networkClient: INetworkModule,\n cryptoProvider: CryptoProvider,\n disableInternalRetries: boolean,\n identityEndpoint: string,\n identityHeader: string\n ) {\n super(\n logger,\n nodeStorage,\n networkClient,\n cryptoProvider,\n disableInternalRetries\n );\n\n this.identityEndpoint = identityEndpoint;\n this.identityHeader = identityHeader;\n }\n\n public static getEnvironmentVariables(): Array {\n const identityEndpoint: string | undefined =\n process.env[\n ManagedIdentityEnvironmentVariableNames.IDENTITY_ENDPOINT\n ];\n const identityHeader: string | undefined =\n process.env[\n ManagedIdentityEnvironmentVariableNames.IDENTITY_HEADER\n ];\n\n return [identityEndpoint, identityHeader];\n }\n\n public static tryCreate(\n logger: Logger,\n nodeStorage: NodeStorage,\n networkClient: INetworkModule,\n cryptoProvider: CryptoProvider,\n disableInternalRetries: boolean\n ): AppService | null {\n const [identityEndpoint, identityHeader] =\n AppService.getEnvironmentVariables();\n\n // if either of the identity endpoint or identity header variables are undefined, this MSI provider is unavailable.\n if (!identityEndpoint || !identityHeader) {\n logger.info(\n `[Managed Identity] ${ManagedIdentitySourceNames.APP_SERVICE} managed identity is unavailable because one or both of the '${ManagedIdentityEnvironmentVariableNames.IDENTITY_HEADER}' and '${ManagedIdentityEnvironmentVariableNames.IDENTITY_ENDPOINT}' environment variables are not defined.`\n );\n return null;\n }\n\n const validatedIdentityEndpoint: string =\n AppService.getValidatedEnvVariableUrlString(\n ManagedIdentityEnvironmentVariableNames.IDENTITY_ENDPOINT,\n identityEndpoint,\n ManagedIdentitySourceNames.APP_SERVICE,\n logger\n );\n\n logger.info(\n `[Managed Identity] Environment variables validation passed for ${ManagedIdentitySourceNames.APP_SERVICE} managed identity. Endpoint URI: ${validatedIdentityEndpoint}. Creating ${ManagedIdentitySourceNames.APP_SERVICE} managed identity.`\n );\n\n return new AppService(\n logger,\n nodeStorage,\n networkClient,\n cryptoProvider,\n disableInternalRetries,\n identityEndpoint,\n identityHeader\n );\n }\n\n public createRequest(\n resource: string,\n managedIdentityId: ManagedIdentityId\n ): ManagedIdentityRequestParameters {\n const request: ManagedIdentityRequestParameters =\n new ManagedIdentityRequestParameters(\n HttpMethod.GET,\n this.identityEndpoint\n );\n\n request.headers[ManagedIdentityHeaders.APP_SERVICE_SECRET_HEADER_NAME] =\n this.identityHeader;\n\n request.queryParameters[ManagedIdentityQueryParameters.API_VERSION] =\n APP_SERVICE_MSI_API_VERSION;\n request.queryParameters[ManagedIdentityQueryParameters.RESOURCE] =\n resource;\n\n if (\n managedIdentityId.idType !== ManagedIdentityIdType.SYSTEM_ASSIGNED\n ) {\n request.queryParameters[\n this.getManagedIdentityUserAssignedIdQueryParameterKey(\n managedIdentityId.idType\n )\n ] = managedIdentityId.id;\n }\n\n // bodyParameters calculated in BaseManagedIdentity.acquireTokenWithManagedIdentity\n\n return request;\n }\n}\n", "/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport {\n AuthError,\n ClientAuthErrorCodes,\n createClientAuthError,\n HttpStatus,\n INetworkModule,\n NetworkResponse,\n NetworkRequestOptions,\n Logger,\n ServerAuthorizationTokenResponse,\n EncodingTypes,\n} from \"@azure/msal-common/node\";\nimport { ManagedIdentityRequestParameters } from \"../../config/ManagedIdentityRequestParameters.js\";\nimport { BaseManagedIdentitySource } from \"./BaseManagedIdentitySource.js\";\nimport { CryptoProvider } from \"../../crypto/CryptoProvider.js\";\nimport {\n ManagedIdentityErrorCodes,\n createManagedIdentityError,\n} from \"../../error/ManagedIdentityError.js\";\nimport {\n AZURE_ARC_SECRET_FILE_MAX_SIZE_BYTES,\n HttpMethod,\n ManagedIdentityEnvironmentVariableNames,\n ManagedIdentityHeaders,\n ManagedIdentityIdType,\n ManagedIdentityQueryParameters,\n ManagedIdentitySourceNames,\n} from \"../../utils/Constants.js\";\nimport { NodeStorage } from \"../../cache/NodeStorage.js\";\nimport {\n accessSync,\n constants as fsConstants,\n readFileSync,\n statSync,\n} from \"fs\";\nimport { ManagedIdentityTokenResponse } from \"../../response/ManagedIdentityTokenResponse.js\";\nimport { ManagedIdentityId } from \"../../config/ManagedIdentityId.js\";\nimport path from \"path\";\n\nexport const ARC_API_VERSION: string = \"2019-11-01\";\nexport const DEFAULT_AZURE_ARC_IDENTITY_ENDPOINT: string =\n \"http://127.0.0.1:40342/metadata/identity/oauth2/token\";\nconst HIMDS_EXECUTABLE_HELPER_STRING = \"N/A: himds executable exists\";\n\ntype FilePathMap = {\n win32: string;\n linux: string;\n};\n\nexport const SUPPORTED_AZURE_ARC_PLATFORMS: FilePathMap = {\n win32: `${process.env[\"ProgramData\"]}\\\\AzureConnectedMachineAgent\\\\Tokens\\\\`,\n linux: \"/var/opt/azcmagent/tokens/\",\n};\n\nexport const AZURE_ARC_FILE_DETECTION: FilePathMap = {\n win32: `${process.env[\"ProgramFiles\"]}\\\\AzureConnectedMachineAgent\\\\himds.exe`,\n linux: \"/opt/azcmagent/bin/himds\",\n};\n\n/**\n * Original source of code: https://github.com/Azure/azure-sdk-for-net/blob/main/sdk/identity/Azure.Identity/src/AzureArcManagedIdentitySource.cs\n */\nexport class AzureArc extends BaseManagedIdentitySource {\n private identityEndpoint: string;\n\n constructor(\n logger: Logger,\n nodeStorage: NodeStorage,\n networkClient: INetworkModule,\n cryptoProvider: CryptoProvider,\n disableInternalRetries: boolean,\n identityEndpoint: string\n ) {\n super(\n logger,\n nodeStorage,\n networkClient,\n cryptoProvider,\n disableInternalRetries\n );\n\n this.identityEndpoint = identityEndpoint;\n }\n\n public static getEnvironmentVariables(): Array {\n let identityEndpoint: string | undefined =\n process.env[\n ManagedIdentityEnvironmentVariableNames.IDENTITY_ENDPOINT\n ];\n let imdsEndpoint: string | undefined =\n process.env[ManagedIdentityEnvironmentVariableNames.IMDS_ENDPOINT];\n\n // if either of the identity or imds endpoints are undefined, check if the himds executable exists\n if (!identityEndpoint || !imdsEndpoint) {\n // get the expected Windows or Linux file path of the himds executable\n const fileDetectionPath: string =\n AZURE_ARC_FILE_DETECTION[process.platform as keyof FilePathMap];\n try {\n /*\n * check if the himds executable exists and its permissions allow it to be read\n * returns undefined if true, throws an error otherwise\n */\n accessSync(\n fileDetectionPath,\n fsConstants.F_OK | fsConstants.R_OK\n );\n\n identityEndpoint = DEFAULT_AZURE_ARC_IDENTITY_ENDPOINT;\n imdsEndpoint = HIMDS_EXECUTABLE_HELPER_STRING;\n } catch (err) {\n /*\n * do nothing\n * accessSync returns undefined on success, and throws an error on failure\n */\n }\n }\n\n return [identityEndpoint, imdsEndpoint];\n }\n\n public static tryCreate(\n logger: Logger,\n nodeStorage: NodeStorage,\n networkClient: INetworkModule,\n cryptoProvider: CryptoProvider,\n disableInternalRetries: boolean,\n managedIdentityId: ManagedIdentityId\n ): AzureArc | null {\n const [identityEndpoint, imdsEndpoint] =\n AzureArc.getEnvironmentVariables();\n\n // if either of the identity or imds endpoints are undefined (even after himds file detection)\n if (!identityEndpoint || !imdsEndpoint) {\n logger.info(\n `[Managed Identity] ${ManagedIdentitySourceNames.AZURE_ARC} managed identity is unavailable through environment variables because one or both of '${ManagedIdentityEnvironmentVariableNames.IDENTITY_ENDPOINT}' and '${ManagedIdentityEnvironmentVariableNames.IMDS_ENDPOINT}' are not defined. ${ManagedIdentitySourceNames.AZURE_ARC} managed identity is also unavailable through file detection.`\n );\n\n return null;\n }\n\n // check if the imds endpoint is set to the default for file detection\n if (imdsEndpoint === HIMDS_EXECUTABLE_HELPER_STRING) {\n logger.info(\n `[Managed Identity] ${ManagedIdentitySourceNames.AZURE_ARC} managed identity is available through file detection. Defaulting to known ${ManagedIdentitySourceNames.AZURE_ARC} endpoint: ${DEFAULT_AZURE_ARC_IDENTITY_ENDPOINT}. Creating ${ManagedIdentitySourceNames.AZURE_ARC} managed identity.`\n );\n } else {\n // otherwise, both the identity and imds endpoints are defined without file detection; validate them\n\n const validatedIdentityEndpoint: string =\n AzureArc.getValidatedEnvVariableUrlString(\n ManagedIdentityEnvironmentVariableNames.IDENTITY_ENDPOINT,\n identityEndpoint,\n ManagedIdentitySourceNames.AZURE_ARC,\n logger\n );\n // remove trailing slash\n validatedIdentityEndpoint.endsWith(\"/\")\n ? validatedIdentityEndpoint.slice(0, -1)\n : validatedIdentityEndpoint;\n\n AzureArc.getValidatedEnvVariableUrlString(\n ManagedIdentityEnvironmentVariableNames.IMDS_ENDPOINT,\n imdsEndpoint,\n ManagedIdentitySourceNames.AZURE_ARC,\n logger\n );\n\n logger.info(\n `[Managed Identity] Environment variables validation passed for ${ManagedIdentitySourceNames.AZURE_ARC} managed identity. Endpoint URI: ${validatedIdentityEndpoint}. Creating ${ManagedIdentitySourceNames.AZURE_ARC} managed identity.`\n );\n }\n\n if (\n managedIdentityId.idType !== ManagedIdentityIdType.SYSTEM_ASSIGNED\n ) {\n throw createManagedIdentityError(\n ManagedIdentityErrorCodes.unableToCreateAzureArc\n );\n }\n\n return new AzureArc(\n logger,\n nodeStorage,\n networkClient,\n cryptoProvider,\n disableInternalRetries,\n identityEndpoint\n );\n }\n\n public createRequest(resource: string): ManagedIdentityRequestParameters {\n const request: ManagedIdentityRequestParameters =\n new ManagedIdentityRequestParameters(\n HttpMethod.GET,\n this.identityEndpoint.replace(\"localhost\", \"127.0.0.1\")\n );\n\n request.headers[ManagedIdentityHeaders.METADATA_HEADER_NAME] = \"true\";\n\n request.queryParameters[ManagedIdentityQueryParameters.API_VERSION] =\n ARC_API_VERSION;\n request.queryParameters[ManagedIdentityQueryParameters.RESOURCE] =\n resource;\n\n // bodyParameters calculated in BaseManagedIdentity.acquireTokenWithManagedIdentity\n\n return request;\n }\n\n public async getServerTokenResponseAsync(\n originalResponse: NetworkResponse,\n networkClient: INetworkModule,\n networkRequest: ManagedIdentityRequestParameters,\n networkRequestOptions: NetworkRequestOptions\n ): Promise {\n let retryResponse:\n | NetworkResponse\n | undefined;\n\n if (originalResponse.status === HttpStatus.UNAUTHORIZED) {\n const wwwAuthHeader: string =\n originalResponse.headers[\"www-authenticate\"];\n if (!wwwAuthHeader) {\n throw createManagedIdentityError(\n ManagedIdentityErrorCodes.wwwAuthenticateHeaderMissing\n );\n }\n if (!wwwAuthHeader.includes(\"Basic realm=\")) {\n throw createManagedIdentityError(\n ManagedIdentityErrorCodes.wwwAuthenticateHeaderUnsupportedFormat\n );\n }\n\n const secretFilePath = wwwAuthHeader.split(\"Basic realm=\")[1];\n\n // throw an error if the managed identity application is not being run on Windows or Linux\n if (\n !SUPPORTED_AZURE_ARC_PLATFORMS.hasOwnProperty(process.platform)\n ) {\n throw createManagedIdentityError(\n ManagedIdentityErrorCodes.platformNotSupported\n );\n }\n\n // get the expected Windows or Linux file path\n const expectedSecretFilePath: string =\n SUPPORTED_AZURE_ARC_PLATFORMS[\n process.platform as keyof FilePathMap\n ];\n\n // throw an error if the file in the file path is not a .key file\n const fileName: string = path.basename(secretFilePath);\n if (!fileName.endsWith(\".key\")) {\n throw createManagedIdentityError(\n ManagedIdentityErrorCodes.invalidFileExtension\n );\n }\n\n /*\n * throw an error if the file path from the www-authenticate header does not match the\n * expected file path for the platform (Windows or Linux) the managed identity application\n * is running on\n */\n if (expectedSecretFilePath + fileName !== secretFilePath) {\n throw createManagedIdentityError(\n ManagedIdentityErrorCodes.invalidFilePath\n );\n }\n\n let secretFileSize;\n // attempt to get the secret file's size, in bytes\n try {\n secretFileSize = await statSync(secretFilePath).size;\n } catch (e) {\n throw createManagedIdentityError(\n ManagedIdentityErrorCodes.unableToReadSecretFile\n );\n }\n // throw an error if the secret file's size is greater than 4096 bytes\n if (secretFileSize > AZURE_ARC_SECRET_FILE_MAX_SIZE_BYTES) {\n throw createManagedIdentityError(\n ManagedIdentityErrorCodes.invalidSecret\n );\n }\n\n // attempt to read the contents of the secret file\n let secret;\n try {\n secret = readFileSync(secretFilePath, EncodingTypes.UTF8);\n } catch (e) {\n throw createManagedIdentityError(\n ManagedIdentityErrorCodes.unableToReadSecretFile\n );\n }\n const authHeaderValue = `Basic ${secret}`;\n\n this.logger.info(\n `[Managed Identity] Adding authorization header to the request.`\n );\n networkRequest.headers[\n ManagedIdentityHeaders.AUTHORIZATION_HEADER_NAME\n ] = authHeaderValue;\n\n try {\n retryResponse =\n await networkClient.sendGetRequestAsync(\n networkRequest.computeUri(),\n networkRequestOptions\n );\n } catch (error) {\n if (error instanceof AuthError) {\n throw error;\n } else {\n throw createClientAuthError(\n ClientAuthErrorCodes.networkError\n );\n }\n }\n }\n\n return this.getServerTokenResponse(retryResponse || originalResponse);\n }\n}\n", "/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { INetworkModule, Logger } from \"@azure/msal-common/node\";\nimport { ManagedIdentityRequestParameters } from \"../../config/ManagedIdentityRequestParameters.js\";\nimport { BaseManagedIdentitySource } from \"./BaseManagedIdentitySource.js\";\nimport { NodeStorage } from \"../../cache/NodeStorage.js\";\nimport { CryptoProvider } from \"../../crypto/CryptoProvider.js\";\nimport {\n HttpMethod,\n ManagedIdentityEnvironmentVariableNames,\n ManagedIdentityHeaders,\n ManagedIdentityIdType,\n ManagedIdentityQueryParameters,\n ManagedIdentitySourceNames,\n} from \"../../utils/Constants.js\";\nimport {\n ManagedIdentityErrorCodes,\n createManagedIdentityError,\n} from \"../../error/ManagedIdentityError.js\";\nimport { ManagedIdentityId } from \"../../config/ManagedIdentityId.js\";\n\n/**\n * Original source of code: https://github.com/Azure/azure-sdk-for-net/blob/main/sdk/identity/Azure.Identity/src/CloudShellManagedIdentitySource.cs\n */\nexport class CloudShell extends BaseManagedIdentitySource {\n private msiEndpoint: string;\n\n constructor(\n logger: Logger,\n nodeStorage: NodeStorage,\n networkClient: INetworkModule,\n cryptoProvider: CryptoProvider,\n disableInternalRetries: boolean,\n msiEndpoint: string\n ) {\n super(\n logger,\n nodeStorage,\n networkClient,\n cryptoProvider,\n disableInternalRetries\n );\n\n this.msiEndpoint = msiEndpoint;\n }\n\n public static getEnvironmentVariables(): Array {\n const msiEndpoint: string | undefined =\n process.env[ManagedIdentityEnvironmentVariableNames.MSI_ENDPOINT];\n\n return [msiEndpoint];\n }\n\n public static tryCreate(\n logger: Logger,\n nodeStorage: NodeStorage,\n networkClient: INetworkModule,\n cryptoProvider: CryptoProvider,\n disableInternalRetries: boolean,\n managedIdentityId: ManagedIdentityId\n ): CloudShell | null {\n const [msiEndpoint] = CloudShell.getEnvironmentVariables();\n\n // if the msi endpoint environment variable is undefined, this MSI provider is unavailable.\n if (!msiEndpoint) {\n logger.info(\n `[Managed Identity] ${ManagedIdentitySourceNames.CLOUD_SHELL} managed identity is unavailable because the '${ManagedIdentityEnvironmentVariableNames.MSI_ENDPOINT} environment variable is not defined.`\n );\n return null;\n }\n\n const validatedMsiEndpoint: string =\n CloudShell.getValidatedEnvVariableUrlString(\n ManagedIdentityEnvironmentVariableNames.MSI_ENDPOINT,\n msiEndpoint,\n ManagedIdentitySourceNames.CLOUD_SHELL,\n logger\n );\n\n logger.info(\n `[Managed Identity] Environment variable validation passed for ${ManagedIdentitySourceNames.CLOUD_SHELL} managed identity. Endpoint URI: ${validatedMsiEndpoint}. Creating ${ManagedIdentitySourceNames.CLOUD_SHELL} managed identity.`\n );\n\n if (\n managedIdentityId.idType !== ManagedIdentityIdType.SYSTEM_ASSIGNED\n ) {\n throw createManagedIdentityError(\n ManagedIdentityErrorCodes.unableToCreateCloudShell\n );\n }\n\n return new CloudShell(\n logger,\n nodeStorage,\n networkClient,\n cryptoProvider,\n disableInternalRetries,\n msiEndpoint\n );\n }\n\n public createRequest(resource: string): ManagedIdentityRequestParameters {\n const request: ManagedIdentityRequestParameters =\n new ManagedIdentityRequestParameters(\n HttpMethod.POST,\n this.msiEndpoint\n );\n\n request.headers[ManagedIdentityHeaders.METADATA_HEADER_NAME] = \"true\";\n\n request.bodyParameters[ManagedIdentityQueryParameters.RESOURCE] =\n resource;\n\n return request;\n }\n}\n", "/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nexport class ExponentialRetryStrategy {\n // Minimum backoff time in milliseconds\n private minExponentialBackoff: number;\n // Maximum backoff time in milliseconds\n private maxExponentialBackoff: number;\n // Maximum backoff time in milliseconds\n private exponentialDeltaBackoff: number;\n\n constructor(\n minExponentialBackoff: number,\n maxExponentialBackoff: number,\n exponentialDeltaBackoff: number\n ) {\n this.minExponentialBackoff = minExponentialBackoff;\n this.maxExponentialBackoff = maxExponentialBackoff;\n this.exponentialDeltaBackoff = exponentialDeltaBackoff;\n }\n\n /**\n * Calculates the exponential delay based on the current retry attempt.\n *\n * @param {number} currentRetry - The current retry attempt number.\n * @returns {number} - The calculated exponential delay in milliseconds.\n *\n * The delay is calculated using the formula:\n * - If `currentRetry` is 0, it returns the minimum backoff time.\n * - Otherwise, it calculates the delay as the minimum of:\n * - `(2^(currentRetry - 1)) * deltaBackoff`\n * - `maxBackoff`\n *\n * This ensures that the delay increases exponentially with each retry attempt,\n * but does not exceed the maximum backoff time.\n */\n public calculateDelay(currentRetry: number): number {\n // Attempt 1\n if (currentRetry === 0) {\n return this.minExponentialBackoff;\n }\n\n // Attempt 2+\n const exponentialDelay = Math.min(\n Math.pow(2, currentRetry - 1) * this.exponentialDeltaBackoff,\n this.maxExponentialBackoff\n );\n\n return exponentialDelay;\n }\n}\n", "/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { HttpStatus, Logger } from \"@azure/msal-common\";\nimport { ExponentialRetryStrategy } from \"./ExponentialRetryStrategy.js\";\nimport { IHttpRetryPolicy } from \"./IHttpRetryPolicy.js\";\n\nconst HTTP_STATUS_400_CODES_FOR_EXPONENTIAL_STRATEGY: Array = [\n HttpStatus.NOT_FOUND,\n HttpStatus.REQUEST_TIMEOUT,\n HttpStatus.GONE,\n HttpStatus.TOO_MANY_REQUESTS,\n];\n\nconst EXPONENTIAL_STRATEGY_NUM_RETRIES = 3;\nconst LINEAR_STRATEGY_NUM_RETRIES = 7;\n\nconst MIN_EXPONENTIAL_BACKOFF_MS: number = 1000;\nconst MAX_EXPONENTIAL_BACKOFF_MS: number = 4000;\nconst EXPONENTIAL_DELTA_BACKOFF_MS: number = 2000;\n\nconst HTTP_STATUS_GONE_RETRY_AFTER_MS: number = 10 * 1000; // 10 seconds\n\nexport class ImdsRetryPolicy implements IHttpRetryPolicy {\n /*\n * these are defined here as static variables despite being defined as constants outside of the\n * class because they need to be overridden in the unit tests so that the unit tests run faster\n */\n static get MIN_EXPONENTIAL_BACKOFF_MS(): number {\n return MIN_EXPONENTIAL_BACKOFF_MS;\n }\n static get MAX_EXPONENTIAL_BACKOFF_MS(): number {\n return MAX_EXPONENTIAL_BACKOFF_MS;\n }\n static get EXPONENTIAL_DELTA_BACKOFF_MS(): number {\n return EXPONENTIAL_DELTA_BACKOFF_MS;\n }\n static get HTTP_STATUS_GONE_RETRY_AFTER_MS(): number {\n return HTTP_STATUS_GONE_RETRY_AFTER_MS;\n }\n\n public _isNewRequest: boolean;\n set isNewRequest(value: boolean) {\n this._isNewRequest = value;\n }\n\n private maxRetries: number;\n\n private exponentialRetryStrategy: ExponentialRetryStrategy =\n new ExponentialRetryStrategy(\n ImdsRetryPolicy.MIN_EXPONENTIAL_BACKOFF_MS,\n ImdsRetryPolicy.MAX_EXPONENTIAL_BACKOFF_MS,\n ImdsRetryPolicy.EXPONENTIAL_DELTA_BACKOFF_MS\n );\n\n /**\n * Pauses execution for a calculated delay before retrying a request.\n *\n * @param httpStatusCode - The HTTP status code of the response.\n * @param currentRetry - The current retry attempt number.\n * @param retryAfterHeader - The value of the \"retry-after\" header from the response.\n * @returns A promise that resolves to a boolean indicating whether a retry should be attempted.\n */\n async pauseForRetry(\n httpStatusCode: number,\n currentRetry: number,\n logger: Logger\n ): Promise {\n if (this._isNewRequest) {\n this._isNewRequest = false;\n\n // calculate the maxRetries based on the status code, once per request\n this.maxRetries =\n httpStatusCode === HttpStatus.GONE\n ? LINEAR_STRATEGY_NUM_RETRIES\n : EXPONENTIAL_STRATEGY_NUM_RETRIES;\n }\n\n /**\n * (status code is one of the retriable 400 status code\n * or\n * status code is >= 500 and <= 599)\n * and\n * current count of retries is less than the max number of retries\n */\n if (\n (HTTP_STATUS_400_CODES_FOR_EXPONENTIAL_STRATEGY.includes(\n httpStatusCode\n ) ||\n (httpStatusCode >= HttpStatus.SERVER_ERROR_RANGE_START &&\n httpStatusCode <= HttpStatus.SERVER_ERROR_RANGE_END &&\n currentRetry < this.maxRetries)) &&\n currentRetry < this.maxRetries\n ) {\n const retryAfterDelay: number =\n httpStatusCode === HttpStatus.GONE\n ? ImdsRetryPolicy.HTTP_STATUS_GONE_RETRY_AFTER_MS\n : this.exponentialRetryStrategy.calculateDelay(\n currentRetry\n );\n\n logger.verbose(\n `Retrying request in ${retryAfterDelay}ms (retry attempt: ${\n currentRetry + 1\n })`\n );\n\n // pause execution for the calculated delay\n await new Promise((resolve) => {\n return setTimeout(resolve, retryAfterDelay);\n });\n\n return true;\n }\n\n // if the status code is not retriable or max retries have been reached, do not retry\n return false;\n }\n}\n", "/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { INetworkModule, Logger } from \"@azure/msal-common/node\";\nimport { ManagedIdentityId } from \"../../config/ManagedIdentityId.js\";\nimport { ManagedIdentityRequestParameters } from \"../../config/ManagedIdentityRequestParameters.js\";\nimport { BaseManagedIdentitySource } from \"./BaseManagedIdentitySource.js\";\nimport { CryptoProvider } from \"../../crypto/CryptoProvider.js\";\nimport {\n HttpMethod,\n ManagedIdentityEnvironmentVariableNames,\n ManagedIdentityHeaders,\n ManagedIdentityIdType,\n ManagedIdentityQueryParameters,\n ManagedIdentitySourceNames,\n} from \"../../utils/Constants.js\";\nimport { NodeStorage } from \"../../cache/NodeStorage.js\";\nimport { ImdsRetryPolicy } from \"../../retry/ImdsRetryPolicy.js\";\n\n// Documentation for IMDS is available at https://docs.microsoft.com/azure/active-directory/managed-identities-azure-resources/how-to-use-vm-token#get-a-token-using-http\n\nconst IMDS_TOKEN_PATH: string = \"/metadata/identity/oauth2/token\";\nconst DEFAULT_IMDS_ENDPOINT: string = `http://169.254.169.254${IMDS_TOKEN_PATH}`;\nconst IMDS_API_VERSION: string = \"2018-02-01\";\n\n/**\n * Original source of code: https://github.com/Azure/azure-sdk-for-net/blob/main/sdk/identity/Azure.Identity/src/ImdsManagedIdentitySource.cs\n */\nexport class Imds extends BaseManagedIdentitySource {\n private identityEndpoint: string;\n\n /**\n * Constructs an Imds instance.\n * @param logger - Logger instance for logging.\n * @param nodeStorage - NodeStorage instance for caching.\n * @param networkClient - Network client for HTTP requests.\n * @param cryptoProvider - CryptoProvider for cryptographic operations.\n * @param disableInternalRetries - Whether to disable internal retry logic.\n * @param identityEndpoint - The IMDS endpoint to use.\n */\n constructor(\n logger: Logger,\n nodeStorage: NodeStorage,\n networkClient: INetworkModule,\n cryptoProvider: CryptoProvider,\n disableInternalRetries: boolean,\n identityEndpoint: string\n ) {\n super(\n logger,\n nodeStorage,\n networkClient,\n cryptoProvider,\n disableInternalRetries\n );\n\n this.identityEndpoint = identityEndpoint;\n }\n\n /**\n * Attempts to create an Imds instance by determining the correct endpoint.\n * If the AZURE_POD_IDENTITY_AUTHORITY_HOST environment variable is set, it uses that as the endpoint.\n * Otherwise, it falls back to the default IMDS endpoint.\n *\n * @param logger - Logger instance for logging.\n * @param nodeStorage - NodeStorage instance for caching.\n * @param networkClient - Network client for HTTP requests.\n * @param cryptoProvider - CryptoProvider for cryptographic operations.\n * @param disableInternalRetries - Whether to disable internal retry logic.\n * @returns An instance of Imds configured with the appropriate endpoint.\n */\n public static tryCreate(\n logger: Logger,\n nodeStorage: NodeStorage,\n networkClient: INetworkModule,\n cryptoProvider: CryptoProvider,\n disableInternalRetries: boolean\n ): Imds {\n let validatedIdentityEndpoint: string;\n\n if (\n process.env[\n ManagedIdentityEnvironmentVariableNames\n .AZURE_POD_IDENTITY_AUTHORITY_HOST\n ]\n ) {\n logger.info(\n `[Managed Identity] Environment variable ${\n ManagedIdentityEnvironmentVariableNames.AZURE_POD_IDENTITY_AUTHORITY_HOST\n } for ${ManagedIdentitySourceNames.IMDS} returned endpoint: ${\n process.env[\n ManagedIdentityEnvironmentVariableNames\n .AZURE_POD_IDENTITY_AUTHORITY_HOST\n ]\n }`\n );\n validatedIdentityEndpoint = Imds.getValidatedEnvVariableUrlString(\n ManagedIdentityEnvironmentVariableNames.AZURE_POD_IDENTITY_AUTHORITY_HOST,\n `${\n process.env[\n ManagedIdentityEnvironmentVariableNames\n .AZURE_POD_IDENTITY_AUTHORITY_HOST\n ]\n }${IMDS_TOKEN_PATH}`,\n ManagedIdentitySourceNames.IMDS,\n logger\n );\n } else {\n logger.info(\n `[Managed Identity] Unable to find ${ManagedIdentityEnvironmentVariableNames.AZURE_POD_IDENTITY_AUTHORITY_HOST} environment variable for ${ManagedIdentitySourceNames.IMDS}, using the default endpoint.`\n );\n validatedIdentityEndpoint = DEFAULT_IMDS_ENDPOINT;\n }\n\n return new Imds(\n logger,\n nodeStorage,\n networkClient,\n cryptoProvider,\n disableInternalRetries,\n validatedIdentityEndpoint\n );\n }\n\n /**\n * Creates a ManagedIdentityRequestParameters object for acquiring a token from IMDS.\n * Sets the required headers and query parameters for the IMDS token request.\n *\n * @param resource - The resource URI for which the token is requested.\n * @param managedIdentityId - The managed identity ID (system-assigned or user-assigned).\n * @returns A ManagedIdentityRequestParameters object configured for IMDS.\n */\n public createRequest(\n resource: string,\n managedIdentityId: ManagedIdentityId\n ): ManagedIdentityRequestParameters {\n const request: ManagedIdentityRequestParameters =\n new ManagedIdentityRequestParameters(\n HttpMethod.GET,\n this.identityEndpoint\n );\n\n request.headers[ManagedIdentityHeaders.METADATA_HEADER_NAME] = \"true\";\n\n request.queryParameters[ManagedIdentityQueryParameters.API_VERSION] =\n IMDS_API_VERSION;\n request.queryParameters[ManagedIdentityQueryParameters.RESOURCE] =\n resource;\n\n if (\n managedIdentityId.idType !== ManagedIdentityIdType.SYSTEM_ASSIGNED\n ) {\n request.queryParameters[\n this.getManagedIdentityUserAssignedIdQueryParameterKey(\n managedIdentityId.idType,\n true // indicates source is IMDS\n )\n ] = managedIdentityId.id;\n }\n\n // The bodyParameters are calculated in BaseManagedIdentity.acquireTokenWithManagedIdentity.\n\n request.retryPolicy = new ImdsRetryPolicy();\n\n return request;\n }\n}\n", "/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { INetworkModule, Logger } from \"@azure/msal-common/node\";\nimport { ManagedIdentityId } from \"../../config/ManagedIdentityId.js\";\nimport { ManagedIdentityRequestParameters } from \"../../config/ManagedIdentityRequestParameters.js\";\nimport { BaseManagedIdentitySource } from \"./BaseManagedIdentitySource.js\";\nimport { NodeStorage } from \"../../cache/NodeStorage.js\";\nimport { CryptoProvider } from \"../../crypto/CryptoProvider.js\";\nimport {\n HttpMethod,\n ManagedIdentityEnvironmentVariableNames,\n ManagedIdentityIdType,\n ManagedIdentitySourceNames,\n ManagedIdentityQueryParameters,\n ManagedIdentityHeaders,\n} from \"../../utils/Constants.js\";\n\nconst SERVICE_FABRIC_MSI_API_VERSION: string = \"2019-07-01-preview\";\n\n/**\n * Original source of code: https://github.com/Azure/azure-sdk-for-net/blob/main/sdk/identity/Azure.Identity/src/ServiceFabricManagedIdentitySource.cs\n */\nexport class ServiceFabric extends BaseManagedIdentitySource {\n private identityEndpoint: string;\n private identityHeader: string;\n\n /**\n * Constructs a new ServiceFabric managed identity source.\n * @param logger Logger instance for logging\n * @param nodeStorage NodeStorage instance for caching\n * @param networkClient Network client for HTTP requests\n * @param cryptoProvider Crypto provider for cryptographic operations\n * @param disableInternalRetries Whether to disable internal retry logic\n * @param identityEndpoint The Service Fabric managed identity endpoint\n * @param identityHeader The Service Fabric managed identity secret header\n */\n constructor(\n logger: Logger,\n nodeStorage: NodeStorage,\n networkClient: INetworkModule,\n cryptoProvider: CryptoProvider,\n disableInternalRetries: boolean,\n identityEndpoint: string,\n identityHeader: string\n ) {\n super(\n logger,\n nodeStorage,\n networkClient,\n cryptoProvider,\n disableInternalRetries\n );\n\n this.identityEndpoint = identityEndpoint;\n this.identityHeader = identityHeader;\n }\n\n /**\n * Retrieves the environment variables required for Service Fabric managed identity.\n * @returns An array containing the identity endpoint, identity header, and identity server thumbprint.\n */\n public static getEnvironmentVariables(): Array {\n const identityEndpoint: string | undefined =\n process.env[\n ManagedIdentityEnvironmentVariableNames.IDENTITY_ENDPOINT\n ];\n const identityHeader: string | undefined =\n process.env[\n ManagedIdentityEnvironmentVariableNames.IDENTITY_HEADER\n ];\n const identityServerThumbprint: string | undefined =\n process.env[\n ManagedIdentityEnvironmentVariableNames\n .IDENTITY_SERVER_THUMBPRINT\n ];\n\n return [identityEndpoint, identityHeader, identityServerThumbprint];\n }\n\n /**\n * Attempts to create a ServiceFabric managed identity source if all required environment variables are present.\n * @param logger Logger instance for logging\n * @param nodeStorage NodeStorage instance for caching\n * @param networkClient Network client for HTTP requests\n * @param cryptoProvider Crypto provider for cryptographic operations\n * @param disableInternalRetries Whether to disable internal retry logic\n * @param managedIdentityId Managed identity identifier\n * @returns A ServiceFabric instance if environment variables are set, otherwise null\n */\n public static tryCreate(\n logger: Logger,\n nodeStorage: NodeStorage,\n networkClient: INetworkModule,\n cryptoProvider: CryptoProvider,\n disableInternalRetries: boolean,\n managedIdentityId: ManagedIdentityId\n ): ServiceFabric | null {\n const [identityEndpoint, identityHeader, identityServerThumbprint] =\n ServiceFabric.getEnvironmentVariables();\n\n if (!identityEndpoint || !identityHeader || !identityServerThumbprint) {\n logger.info(\n `[Managed Identity] ${ManagedIdentitySourceNames.SERVICE_FABRIC} managed identity is unavailable because one or all of the '${ManagedIdentityEnvironmentVariableNames.IDENTITY_HEADER}', '${ManagedIdentityEnvironmentVariableNames.IDENTITY_ENDPOINT}' or '${ManagedIdentityEnvironmentVariableNames.IDENTITY_SERVER_THUMBPRINT}' environment variables are not defined.`\n );\n return null;\n }\n\n const validatedIdentityEndpoint: string =\n ServiceFabric.getValidatedEnvVariableUrlString(\n ManagedIdentityEnvironmentVariableNames.IDENTITY_ENDPOINT,\n identityEndpoint,\n ManagedIdentitySourceNames.SERVICE_FABRIC,\n logger\n );\n\n logger.info(\n `[Managed Identity] Environment variables validation passed for ${ManagedIdentitySourceNames.SERVICE_FABRIC} managed identity. Endpoint URI: ${validatedIdentityEndpoint}. Creating ${ManagedIdentitySourceNames.SERVICE_FABRIC} managed identity.`\n );\n\n if (\n managedIdentityId.idType !== ManagedIdentityIdType.SYSTEM_ASSIGNED\n ) {\n logger.warning(\n `[Managed Identity] ${ManagedIdentitySourceNames.SERVICE_FABRIC} user assigned managed identity is configured in the cluster, not during runtime. See also: https://learn.microsoft.com/en-us/azure/service-fabric/configure-existing-cluster-enable-managed-identity-token-service.`\n );\n }\n\n return new ServiceFabric(\n logger,\n nodeStorage,\n networkClient,\n cryptoProvider,\n disableInternalRetries,\n identityEndpoint,\n identityHeader\n );\n }\n\n /**\n * Creates the request parameters for acquiring a token from the Service Fabric cluster.\n * @param resource - The resource URI for which the token is requested.\n * @param managedIdentityId - The managed identity ID (system-assigned or user-assigned).\n * @returns A ManagedIdentityRequestParameters object configured for Service Fabric.\n */\n public createRequest(\n resource: string,\n managedIdentityId: ManagedIdentityId\n ): ManagedIdentityRequestParameters {\n const request: ManagedIdentityRequestParameters =\n new ManagedIdentityRequestParameters(\n HttpMethod.GET,\n this.identityEndpoint\n );\n\n request.headers[ManagedIdentityHeaders.ML_AND_SF_SECRET_HEADER_NAME] =\n this.identityHeader;\n\n request.queryParameters[ManagedIdentityQueryParameters.API_VERSION] =\n SERVICE_FABRIC_MSI_API_VERSION;\n request.queryParameters[ManagedIdentityQueryParameters.RESOURCE] =\n resource;\n\n if (\n managedIdentityId.idType !== ManagedIdentityIdType.SYSTEM_ASSIGNED\n ) {\n request.queryParameters[\n this.getManagedIdentityUserAssignedIdQueryParameterKey(\n managedIdentityId.idType\n )\n ] = managedIdentityId.id;\n }\n\n // bodyParameters calculated in BaseManagedIdentity.acquireTokenWithManagedIdentity\n\n return request;\n }\n}\n", "/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { INetworkModule, Logger } from \"@azure/msal-common/node\";\nimport {\n BaseManagedIdentitySource,\n ManagedIdentityUserAssignedIdQueryParameterNames,\n} from \"./BaseManagedIdentitySource.js\";\nimport {\n HttpMethod,\n ManagedIdentityEnvironmentVariableNames,\n ManagedIdentitySourceNames,\n ManagedIdentityIdType,\n ManagedIdentityQueryParameters,\n ManagedIdentityHeaders,\n} from \"../../utils/Constants.js\";\nimport { CryptoProvider } from \"../../crypto/CryptoProvider.js\";\nimport { ManagedIdentityRequestParameters } from \"../../config/ManagedIdentityRequestParameters.js\";\nimport { ManagedIdentityId } from \"../../config/ManagedIdentityId.js\";\nimport { NodeStorage } from \"../../cache/NodeStorage.js\";\n\nconst MACHINE_LEARNING_MSI_API_VERSION: string = \"2017-09-01\";\n\nexport const MANAGED_IDENTITY_MACHINE_LEARNING_UNSUPPORTED_ID_TYPE_ERROR = `Only client id is supported for user-assigned managed identity in ${ManagedIdentitySourceNames.MACHINE_LEARNING}.`; // referenced in unit test\n\nexport class MachineLearning extends BaseManagedIdentitySource {\n private msiEndpoint: string;\n private secret: string;\n\n constructor(\n logger: Logger,\n nodeStorage: NodeStorage,\n networkClient: INetworkModule,\n cryptoProvider: CryptoProvider,\n disableInternalRetries: boolean,\n msiEndpoint: string,\n secret: string\n ) {\n super(\n logger,\n nodeStorage,\n networkClient,\n cryptoProvider,\n disableInternalRetries\n );\n\n this.msiEndpoint = msiEndpoint;\n this.secret = secret;\n }\n\n public static getEnvironmentVariables(): Array {\n const msiEndpoint: string | undefined =\n process.env[ManagedIdentityEnvironmentVariableNames.MSI_ENDPOINT];\n\n const secret: string | undefined =\n process.env[ManagedIdentityEnvironmentVariableNames.MSI_SECRET];\n\n return [msiEndpoint, secret];\n }\n\n public static tryCreate(\n logger: Logger,\n nodeStorage: NodeStorage,\n networkClient: INetworkModule,\n cryptoProvider: CryptoProvider,\n disableInternalRetries: boolean\n ): MachineLearning | null {\n const [msiEndpoint, secret] = MachineLearning.getEnvironmentVariables();\n\n // if either of the MSI endpoint or MSI secret variables are undefined, this MSI provider is unavailable.\n if (!msiEndpoint || !secret) {\n logger.info(\n `[Managed Identity] ${ManagedIdentitySourceNames.MACHINE_LEARNING} managed identity is unavailable because one or both of the '${ManagedIdentityEnvironmentVariableNames.MSI_ENDPOINT}' and '${ManagedIdentityEnvironmentVariableNames.MSI_SECRET}' environment variables are not defined.`\n );\n return null;\n }\n\n const validatedMsiEndpoint: string =\n MachineLearning.getValidatedEnvVariableUrlString(\n ManagedIdentityEnvironmentVariableNames.MSI_ENDPOINT,\n msiEndpoint,\n ManagedIdentitySourceNames.MACHINE_LEARNING,\n logger\n );\n\n logger.info(\n `[Managed Identity] Environment variables validation passed for ${ManagedIdentitySourceNames.MACHINE_LEARNING} managed identity. Endpoint URI: ${validatedMsiEndpoint}. Creating ${ManagedIdentitySourceNames.MACHINE_LEARNING} managed identity.`\n );\n\n return new MachineLearning(\n logger,\n nodeStorage,\n networkClient,\n cryptoProvider,\n disableInternalRetries,\n msiEndpoint,\n secret\n );\n }\n\n public createRequest(\n resource: string,\n managedIdentityId: ManagedIdentityId\n ): ManagedIdentityRequestParameters {\n const request: ManagedIdentityRequestParameters =\n new ManagedIdentityRequestParameters(\n HttpMethod.GET,\n this.msiEndpoint\n );\n\n request.headers[ManagedIdentityHeaders.METADATA_HEADER_NAME] = \"true\";\n request.headers[ManagedIdentityHeaders.ML_AND_SF_SECRET_HEADER_NAME] =\n this.secret;\n\n request.queryParameters[ManagedIdentityQueryParameters.API_VERSION] =\n MACHINE_LEARNING_MSI_API_VERSION;\n request.queryParameters[ManagedIdentityQueryParameters.RESOURCE] =\n resource;\n\n if (\n managedIdentityId.idType === ManagedIdentityIdType.SYSTEM_ASSIGNED\n ) {\n request.queryParameters[\n ManagedIdentityUserAssignedIdQueryParameterNames.MANAGED_IDENTITY_CLIENT_ID_2017\n ] = process.env[\n ManagedIdentityEnvironmentVariableNames\n .DEFAULT_IDENTITY_CLIENT_ID\n ] as string; // this environment variable is always set in an Azure Machine Learning source\n } else if (\n managedIdentityId.idType ===\n ManagedIdentityIdType.USER_ASSIGNED_CLIENT_ID\n ) {\n request.queryParameters[\n this.getManagedIdentityUserAssignedIdQueryParameterKey(\n managedIdentityId.idType,\n false, // isIMDS\n true // uses2017API\n )\n ] = managedIdentityId.id;\n } else {\n throw new Error(\n MANAGED_IDENTITY_MACHINE_LEARNING_UNSUPPORTED_ID_TYPE_ERROR\n );\n }\n\n // bodyParameters calculated in BaseManagedIdentity.acquireTokenWithManagedIdentity\n\n return request;\n }\n}\n", "/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport {\n Authority,\n INetworkModule,\n Logger,\n AuthenticationResult,\n} from \"@azure/msal-common/node\";\nimport { AppService } from \"./ManagedIdentitySources/AppService.js\";\nimport { AzureArc } from \"./ManagedIdentitySources/AzureArc.js\";\nimport { CloudShell } from \"./ManagedIdentitySources/CloudShell.js\";\nimport { Imds } from \"./ManagedIdentitySources/Imds.js\";\nimport { ServiceFabric } from \"./ManagedIdentitySources/ServiceFabric.js\";\nimport { CryptoProvider } from \"../crypto/CryptoProvider.js\";\nimport {\n ManagedIdentityErrorCodes,\n createManagedIdentityError,\n} from \"../error/ManagedIdentityError.js\";\nimport { ManagedIdentityRequest } from \"../request/ManagedIdentityRequest.js\";\nimport { ManagedIdentityId } from \"../config/ManagedIdentityId.js\";\nimport { NodeStorage } from \"../cache/NodeStorage.js\";\nimport { BaseManagedIdentitySource } from \"./ManagedIdentitySources/BaseManagedIdentitySource.js\";\nimport { ManagedIdentitySourceNames } from \"../utils/Constants.js\";\nimport { MachineLearning } from \"./ManagedIdentitySources/MachineLearning.js\";\n\n/*\n * Class to initialize a managed identity and identify the service.\n * Original source of code: https://github.com/Azure/azure-sdk-for-net/blob/main/sdk/identity/Azure.Identity/src/ManagedIdentityClient.cs\n */\nexport class ManagedIdentityClient {\n private logger: Logger;\n private nodeStorage: NodeStorage;\n private networkClient: INetworkModule;\n private cryptoProvider: CryptoProvider;\n private disableInternalRetries: boolean;\n\n private static identitySource?: BaseManagedIdentitySource;\n public static sourceName?: ManagedIdentitySourceNames;\n\n constructor(\n logger: Logger,\n nodeStorage: NodeStorage,\n networkClient: INetworkModule,\n cryptoProvider: CryptoProvider,\n disableInternalRetries: boolean\n ) {\n this.logger = logger;\n this.nodeStorage = nodeStorage;\n this.networkClient = networkClient;\n this.cryptoProvider = cryptoProvider;\n this.disableInternalRetries = disableInternalRetries;\n }\n\n public async sendManagedIdentityTokenRequest(\n managedIdentityRequest: ManagedIdentityRequest,\n managedIdentityId: ManagedIdentityId,\n fakeAuthority: Authority,\n refreshAccessToken?: boolean\n ): Promise {\n if (!ManagedIdentityClient.identitySource) {\n ManagedIdentityClient.identitySource =\n this.selectManagedIdentitySource(\n this.logger,\n this.nodeStorage,\n this.networkClient,\n this.cryptoProvider,\n this.disableInternalRetries,\n managedIdentityId\n );\n }\n\n return ManagedIdentityClient.identitySource.acquireTokenWithManagedIdentity(\n managedIdentityRequest,\n managedIdentityId,\n fakeAuthority,\n refreshAccessToken\n );\n }\n\n private allEnvironmentVariablesAreDefined(\n environmentVariables: Array\n ): boolean {\n return Object.values(environmentVariables).every(\n (environmentVariable) => {\n return environmentVariable !== undefined;\n }\n );\n }\n\n /**\n * Determine the Managed Identity Source based on available environment variables. This API is consumed by ManagedIdentityApplication's getManagedIdentitySource.\n * @returns ManagedIdentitySourceNames - The Managed Identity source's name\n */\n public getManagedIdentitySource(): ManagedIdentitySourceNames {\n ManagedIdentityClient.sourceName =\n this.allEnvironmentVariablesAreDefined(\n ServiceFabric.getEnvironmentVariables()\n )\n ? ManagedIdentitySourceNames.SERVICE_FABRIC\n : this.allEnvironmentVariablesAreDefined(\n AppService.getEnvironmentVariables()\n )\n ? ManagedIdentitySourceNames.APP_SERVICE\n : this.allEnvironmentVariablesAreDefined(\n MachineLearning.getEnvironmentVariables()\n )\n ? ManagedIdentitySourceNames.MACHINE_LEARNING\n : this.allEnvironmentVariablesAreDefined(\n CloudShell.getEnvironmentVariables()\n )\n ? ManagedIdentitySourceNames.CLOUD_SHELL\n : this.allEnvironmentVariablesAreDefined(\n AzureArc.getEnvironmentVariables()\n )\n ? ManagedIdentitySourceNames.AZURE_ARC\n : ManagedIdentitySourceNames.DEFAULT_TO_IMDS;\n\n return ManagedIdentityClient.sourceName;\n }\n\n /**\n * Tries to create a managed identity source for all sources\n * @returns the managed identity Source\n */\n private selectManagedIdentitySource(\n logger: Logger,\n nodeStorage: NodeStorage,\n networkClient: INetworkModule,\n cryptoProvider: CryptoProvider,\n disableInternalRetries: boolean,\n managedIdentityId: ManagedIdentityId\n ): BaseManagedIdentitySource {\n const source =\n ServiceFabric.tryCreate(\n logger,\n nodeStorage,\n networkClient,\n cryptoProvider,\n disableInternalRetries,\n managedIdentityId\n ) ||\n AppService.tryCreate(\n logger,\n nodeStorage,\n networkClient,\n cryptoProvider,\n disableInternalRetries\n ) ||\n MachineLearning.tryCreate(\n logger,\n nodeStorage,\n networkClient,\n cryptoProvider,\n disableInternalRetries\n ) ||\n CloudShell.tryCreate(\n logger,\n nodeStorage,\n networkClient,\n cryptoProvider,\n disableInternalRetries,\n managedIdentityId\n ) ||\n AzureArc.tryCreate(\n logger,\n nodeStorage,\n networkClient,\n cryptoProvider,\n disableInternalRetries,\n managedIdentityId\n ) ||\n Imds.tryCreate(\n logger,\n nodeStorage,\n networkClient,\n cryptoProvider,\n disableInternalRetries\n );\n if (!source) {\n throw createManagedIdentityError(\n ManagedIdentityErrorCodes.unableToCreateSource\n );\n }\n return source;\n }\n}\n", "/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport {\n AuthOptions,\n Authority,\n AuthorityOptions,\n CacheOutcome,\n ClientConfiguration,\n Constants,\n DEFAULT_CRYPTO_IMPLEMENTATION,\n INetworkModule,\n Logger,\n ProtocolMode,\n StaticAuthorityOptions,\n AuthenticationResult,\n createClientConfigurationError,\n ClientConfigurationErrorCodes,\n EncodingTypes,\n} from \"@azure/msal-common/node\";\nimport {\n ManagedIdentityConfiguration,\n ManagedIdentityNodeConfiguration,\n buildManagedIdentityConfiguration,\n} from \"../config/Configuration.js\";\nimport { version, name } from \"../packageMetadata.js\";\nimport { ManagedIdentityRequest } from \"../request/ManagedIdentityRequest.js\";\nimport { CryptoProvider } from \"../crypto/CryptoProvider.js\";\nimport { ClientCredentialClient } from \"./ClientCredentialClient.js\";\nimport { ManagedIdentityClient } from \"./ManagedIdentityClient.js\";\nimport { ManagedIdentityRequestParams } from \"../request/ManagedIdentityRequestParams.js\";\nimport { NodeStorage } from \"../cache/NodeStorage.js\";\nimport {\n DEFAULT_AUTHORITY_FOR_MANAGED_IDENTITY,\n ManagedIdentitySourceNames,\n} from \"../utils/Constants.js\";\nimport { ManagedIdentityId } from \"../config/ManagedIdentityId.js\";\nimport { HashUtils } from \"../crypto/HashUtils.js\";\n\nconst SOURCES_THAT_SUPPORT_TOKEN_REVOCATION: Array =\n [ManagedIdentitySourceNames.SERVICE_FABRIC];\n\n/**\n * Class to initialize a managed identity and identify the service\n * @public\n */\nexport class ManagedIdentityApplication {\n private config: ManagedIdentityNodeConfiguration;\n\n private logger: Logger;\n private static nodeStorage?: NodeStorage;\n private networkClient: INetworkModule;\n private cryptoProvider: CryptoProvider;\n\n // authority needs to be faked to re-use existing functionality in msal-common: caching in responseHandler, etc.\n private fakeAuthority: Authority;\n\n // the ClientCredentialClient class needs to be faked to call it's getCachedAuthenticationResult method\n private fakeClientCredentialClient: ClientCredentialClient;\n\n private managedIdentityClient: ManagedIdentityClient;\n\n private hashUtils: HashUtils;\n\n constructor(configuration?: ManagedIdentityConfiguration) {\n // undefined config means the managed identity is system-assigned\n this.config = buildManagedIdentityConfiguration(configuration || {});\n\n this.logger = new Logger(\n this.config.system.loggerOptions,\n name,\n version\n );\n\n const fakeStatusAuthorityOptions: StaticAuthorityOptions = {\n canonicalAuthority: Constants.DEFAULT_AUTHORITY,\n };\n\n if (!ManagedIdentityApplication.nodeStorage) {\n ManagedIdentityApplication.nodeStorage = new NodeStorage(\n this.logger,\n this.config.managedIdentityId.id,\n DEFAULT_CRYPTO_IMPLEMENTATION,\n fakeStatusAuthorityOptions\n );\n }\n\n this.networkClient = this.config.system.networkClient;\n\n this.cryptoProvider = new CryptoProvider();\n\n const fakeAuthorityOptions: AuthorityOptions = {\n protocolMode: ProtocolMode.AAD,\n knownAuthorities: [DEFAULT_AUTHORITY_FOR_MANAGED_IDENTITY],\n cloudDiscoveryMetadata: \"\",\n authorityMetadata: \"\",\n };\n this.fakeAuthority = new Authority(\n DEFAULT_AUTHORITY_FOR_MANAGED_IDENTITY,\n this.networkClient,\n ManagedIdentityApplication.nodeStorage as NodeStorage,\n fakeAuthorityOptions,\n this.logger,\n this.cryptoProvider.createNewGuid(), // correlationID\n undefined,\n true\n );\n\n this.fakeClientCredentialClient = new ClientCredentialClient({\n authOptions: {\n clientId: this.config.managedIdentityId.id,\n authority: this.fakeAuthority,\n } as AuthOptions,\n } as ClientConfiguration);\n\n this.managedIdentityClient = new ManagedIdentityClient(\n this.logger,\n ManagedIdentityApplication.nodeStorage as NodeStorage,\n this.networkClient,\n this.cryptoProvider,\n this.config.disableInternalRetries\n );\n\n this.hashUtils = new HashUtils();\n }\n\n /**\n * Acquire an access token from the cache or the managed identity\n * @param managedIdentityRequest - the ManagedIdentityRequestParams object passed in by the developer\n * @returns the access token\n */\n public async acquireToken(\n managedIdentityRequestParams: ManagedIdentityRequestParams\n ): Promise {\n if (!managedIdentityRequestParams.resource) {\n throw createClientConfigurationError(\n ClientConfigurationErrorCodes.urlEmptyError\n );\n }\n\n const managedIdentityRequest: ManagedIdentityRequest = {\n forceRefresh: managedIdentityRequestParams.forceRefresh,\n resource: managedIdentityRequestParams.resource.replace(\n \"/.default\",\n \"\"\n ),\n scopes: [\n managedIdentityRequestParams.resource.replace(\"/.default\", \"\"),\n ],\n authority: this.fakeAuthority.canonicalAuthority,\n correlationId: this.cryptoProvider.createNewGuid(),\n claims: managedIdentityRequestParams.claims,\n clientCapabilities: this.config.clientCapabilities,\n };\n\n if (managedIdentityRequest.forceRefresh) {\n return this.acquireTokenFromManagedIdentity(\n managedIdentityRequest,\n this.config.managedIdentityId,\n this.fakeAuthority\n );\n }\n\n const [cachedAuthenticationResult, lastCacheOutcome] =\n await this.fakeClientCredentialClient.getCachedAuthenticationResult(\n managedIdentityRequest,\n this.config,\n this.cryptoProvider,\n this.fakeAuthority,\n ManagedIdentityApplication.nodeStorage as NodeStorage\n );\n\n /*\n * Check if claims are present in the managed identity request.\n * If so, the cached token will not be used.\n */\n if (managedIdentityRequest.claims) {\n const sourceName: ManagedIdentitySourceNames =\n this.managedIdentityClient.getManagedIdentitySource();\n\n /*\n * Check if there is a cached token and if the Managed Identity source supports token revocation.\n * If so, hash the cached access token and add it to the request.\n */\n if (\n cachedAuthenticationResult &&\n SOURCES_THAT_SUPPORT_TOKEN_REVOCATION.includes(sourceName)\n ) {\n const revokedTokenSha256Hash: string = this.hashUtils\n .sha256(cachedAuthenticationResult.accessToken)\n .toString(EncodingTypes.HEX);\n managedIdentityRequest.revokedTokenSha256Hash =\n revokedTokenSha256Hash;\n }\n\n return this.acquireTokenFromManagedIdentity(\n managedIdentityRequest,\n this.config.managedIdentityId,\n this.fakeAuthority\n );\n }\n\n if (cachedAuthenticationResult) {\n // if the token is not expired but must be refreshed; get a new one in the background\n if (lastCacheOutcome === CacheOutcome.PROACTIVELY_REFRESHED) {\n this.logger.info(\n \"ClientCredentialClient:getCachedAuthenticationResult - Cached access token's refreshOn property has been exceeded'. It's not expired, but must be refreshed.\"\n );\n\n // force refresh; will run in the background\n const refreshAccessToken = true;\n await this.acquireTokenFromManagedIdentity(\n managedIdentityRequest,\n this.config.managedIdentityId,\n this.fakeAuthority,\n refreshAccessToken\n );\n }\n\n return cachedAuthenticationResult;\n } else {\n return this.acquireTokenFromManagedIdentity(\n managedIdentityRequest,\n this.config.managedIdentityId,\n this.fakeAuthority\n );\n }\n }\n\n /**\n * Acquires a token from a managed identity endpoint.\n *\n * @param managedIdentityRequest - The request object containing parameters for the managed identity token request.\n * @param managedIdentityId - The identifier for the managed identity (e.g., client ID or resource ID).\n * @param fakeAuthority - A placeholder authority used for the token request.\n * @param refreshAccessToken - Optional flag indicating whether to force a refresh of the access token.\n * @returns A promise that resolves to an AuthenticationResult containing the acquired token and related information.\n */\n private async acquireTokenFromManagedIdentity(\n managedIdentityRequest: ManagedIdentityRequest,\n managedIdentityId: ManagedIdentityId,\n fakeAuthority: Authority,\n refreshAccessToken?: boolean\n ): Promise {\n // make a network call to the managed identity\n return this.managedIdentityClient.sendManagedIdentityTokenRequest(\n managedIdentityRequest,\n managedIdentityId,\n fakeAuthority,\n refreshAccessToken\n );\n }\n\n /**\n * Determine the Managed Identity Source based on available environment variables. This API is consumed by Azure Identity SDK.\n * @returns ManagedIdentitySourceNames - The Managed Identity source's name\n */\n public getManagedIdentitySource(): ManagedIdentitySourceNames {\n return (\n ManagedIdentityClient.sourceName ||\n this.managedIdentityClient.getManagedIdentitySource()\n );\n }\n}\n", "/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport {\n AccountEntity,\n ICachePlugin,\n TokenCacheContext,\n} from \"@azure/msal-common/node\";\nimport { TokenCache } from \"../TokenCache.js\";\nimport { IPartitionManager } from \"./IPartitionManager.js\";\nimport { ICacheClient } from \"./ICacheClient.js\";\n\n/**\n * Cache plugin that serializes data to the cache and deserializes data from the cache\n * @public\n */\nexport class DistributedCachePlugin implements ICachePlugin {\n private client: ICacheClient;\n private partitionManager: IPartitionManager;\n\n constructor(client: ICacheClient, partitionManager: IPartitionManager) {\n this.client = client;\n this.partitionManager = partitionManager;\n }\n\n /**\n * Deserializes the cache before accessing it\n * @param cacheContext - TokenCacheContext\n */\n public async beforeCacheAccess(\n cacheContext: TokenCacheContext\n ): Promise {\n const partitionKey = await this.partitionManager.getKey();\n const cacheData = await this.client.get(partitionKey);\n cacheContext.tokenCache.deserialize(cacheData);\n }\n\n /**\n * Serializes the cache after accessing it\n * @param cacheContext - TokenCacheContext\n */\n public async afterCacheAccess(\n cacheContext: TokenCacheContext\n ): Promise {\n if (cacheContext.cacheHasChanged) {\n const kvStore = (\n cacheContext.tokenCache as TokenCache\n ).getKVStore();\n const accountEntities = Object.values(kvStore).filter((value) =>\n AccountEntity.isAccountEntity(value as object)\n );\n\n let partitionKey: string;\n if (accountEntities.length > 0) {\n const accountEntity = accountEntities[0] as AccountEntity;\n partitionKey = await this.partitionManager.extractKey(\n accountEntity\n );\n } else {\n partitionKey = await this.partitionManager.getKey();\n }\n\n await this.client.set(\n partitionKey,\n cacheContext.tokenCache.serialize()\n );\n }\n }\n}\n", "// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\n/**\n * This error is thrown when an asynchronous operation has been aborted.\n * Check for this error by testing the `name` that the name property of the\n * error matches `\"AbortError\"`.\n *\n * @example\n * ```ts\n * const controller = new AbortController();\n * controller.abort();\n * try {\n * doAsyncWork(controller.signal)\n * } catch (e) {\n * if (e.name === 'AbortError') {\n * // handle abort error here.\n * }\n * }\n * ```\n */\nexport class AbortError extends Error {\n constructor(message?: string) {\n super(message);\n this.name = \"AbortError\";\n }\n}\n", "// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { AuthenticationRecord, MsalAccountInfo, MsalToken, ValidMsalToken } from \"./types.js\";\nimport { AuthenticationRequiredError, CredentialUnavailableError } from \"../errors.js\";\nimport type { CredentialLogger } from \"../util/logging.js\";\nimport { credentialLogger, formatError } from \"../util/logging.js\";\nimport { DefaultAuthority, DefaultAuthorityHost, DefaultTenantId } from \"../constants.js\";\nimport { randomUUID as coreRandomUUID, isNode, isNodeLike } from \"@azure/core-util\";\n\nimport { AbortError } from \"@azure/abort-controller\";\nimport type { AzureLogLevel } from \"@azure/logger\";\nimport type { GetTokenOptions } from \"@azure/core-auth\";\nimport { msalCommon } from \"./msal.js\";\n\nexport interface ILoggerCallback {\n (level: msalCommon.LogLevel, message: string, containsPii: boolean): void;\n}\n\n/**\n * @internal\n */\nconst logger = credentialLogger(\"IdentityUtils\");\n\n/**\n * Latest AuthenticationRecord version\n * @internal\n */\nconst LatestAuthenticationRecordVersion = \"1.0\";\n\n/**\n * Ensures the validity of the MSAL token\n * @internal\n */\nexport function ensureValidMsalToken(\n scopes: string | string[],\n msalToken?: MsalToken | null,\n getTokenOptions?: GetTokenOptions,\n): asserts msalToken is ValidMsalToken {\n const error = (message: string): Error => {\n logger.getToken.info(message);\n return new AuthenticationRequiredError({\n scopes: Array.isArray(scopes) ? scopes : [scopes],\n getTokenOptions,\n message,\n });\n };\n if (!msalToken) {\n throw error(\"No response\");\n }\n if (!msalToken.expiresOn) {\n throw error(`Response had no \"expiresOn\" property.`);\n }\n if (!msalToken.accessToken) {\n throw error(`Response had no \"accessToken\" property.`);\n }\n}\n\n/**\n * Returns the authority host from either the options bag or the AZURE_AUTHORITY_HOST environment variable.\n *\n * Defaults to {@link DefaultAuthorityHost}.\n * @internal\n */\nexport function getAuthorityHost(options?: { authorityHost?: string }): string {\n let authorityHost = options?.authorityHost;\n\n if (!authorityHost && isNodeLike) {\n authorityHost = process.env.AZURE_AUTHORITY_HOST;\n }\n\n return authorityHost ?? DefaultAuthorityHost;\n}\n\n/**\n * Generates a valid authority by combining a host with a tenantId.\n * @internal\n */\nexport function getAuthority(tenantId: string, host?: string): string {\n if (!host) {\n host = DefaultAuthorityHost;\n }\n if (new RegExp(`${tenantId}/?$`).test(host)) {\n return host;\n }\n if (host.endsWith(\"/\")) {\n return host + tenantId;\n } else {\n return `${host}/${tenantId}`;\n }\n}\n\n/**\n * Generates the known authorities.\n * If the Tenant Id is `adfs`, the authority can't be validated since the format won't match the expected one.\n * For that reason, we have to force MSAL to disable validating the authority\n * by sending it within the known authorities in the MSAL configuration.\n * @internal\n */\nexport function getKnownAuthorities(\n tenantId: string,\n authorityHost: string,\n disableInstanceDiscovery?: boolean,\n): string[] {\n if ((tenantId === \"adfs\" && authorityHost) || disableInstanceDiscovery) {\n return [authorityHost];\n }\n return [];\n}\n\n/**\n * Generates a logger that can be passed to the MSAL clients.\n * @param credLogger - The logger of the credential.\n * @internal\n */\nexport const defaultLoggerCallback: (\n logger: CredentialLogger,\n platform?: \"Node\" | \"Browser\",\n) => ILoggerCallback =\n (credLogger: CredentialLogger, platform: \"Node\" | \"Browser\" = isNode ? \"Node\" : \"Browser\") =>\n (level, message, containsPii): void => {\n if (containsPii) {\n return;\n }\n switch (level) {\n case msalCommon.LogLevel.Error:\n credLogger.info(`MSAL ${platform} V2 error: ${message}`);\n return;\n case msalCommon.LogLevel.Info:\n credLogger.info(`MSAL ${platform} V2 info message: ${message}`);\n return;\n case msalCommon.LogLevel.Verbose:\n credLogger.info(`MSAL ${platform} V2 verbose message: ${message}`);\n return;\n case msalCommon.LogLevel.Warning:\n credLogger.info(`MSAL ${platform} V2 warning: ${message}`);\n return;\n }\n };\n\n/**\n * @internal\n */\nexport function getMSALLogLevel(logLevel: AzureLogLevel | undefined): msalCommon.LogLevel {\n switch (logLevel) {\n case \"error\":\n return msalCommon.LogLevel.Error;\n case \"info\":\n return msalCommon.LogLevel.Info;\n case \"verbose\":\n return msalCommon.LogLevel.Verbose;\n case \"warning\":\n return msalCommon.LogLevel.Warning;\n default:\n // default msal logging level should be Info\n return msalCommon.LogLevel.Info;\n }\n}\n\n/**\n * Wraps core-util's randomUUID in order to allow for mocking in tests.\n * This prepares the library for the upcoming core-util update to ESM.\n *\n * @internal\n * @returns A string containing a random UUID\n */\nexport function randomUUID(): string {\n return coreRandomUUID();\n}\n\n/**\n * Handles MSAL errors.\n */\nexport function handleMsalError(\n scopes: string[],\n error: Error,\n getTokenOptions?: GetTokenOptions,\n): Error {\n if (\n error.name === \"AuthError\" ||\n error.name === \"ClientAuthError\" ||\n error.name === \"BrowserAuthError\"\n ) {\n const msalError = error as msalCommon.AuthError;\n switch (msalError.errorCode) {\n case \"endpoints_resolution_error\":\n logger.info(formatError(scopes, error.message));\n return new CredentialUnavailableError(error.message);\n case \"device_code_polling_cancelled\":\n return new AbortError(\"The authentication has been aborted by the caller.\");\n case \"consent_required\":\n case \"interaction_required\":\n case \"login_required\":\n logger.info(\n formatError(scopes, `Authentication returned errorCode ${msalError.errorCode}`),\n );\n break;\n default:\n logger.info(formatError(scopes, `Failed to acquire token: ${error.message}`));\n break;\n }\n }\n if (\n error.name === \"ClientConfigurationError\" ||\n error.name === \"BrowserConfigurationAuthError\" ||\n error.name === \"AbortError\" ||\n error.name === \"AuthenticationError\"\n ) {\n return error;\n }\n if (error.name === \"NativeAuthError\") {\n logger.info(\n formatError(\n scopes,\n `Error from the native broker: ${error.message} with status code: ${\n (error as any).statusCode\n }`,\n ),\n );\n return error;\n }\n return new AuthenticationRequiredError({ scopes, getTokenOptions, message: error.message });\n}\n\n// transformations\nexport function publicToMsal(account: AuthenticationRecord): msalCommon.AccountInfo {\n return {\n localAccountId: account.homeAccountId,\n environment: account.authority,\n username: account.username,\n homeAccountId: account.homeAccountId,\n tenantId: account.tenantId,\n };\n}\n\nexport function msalToPublic(clientId: string, account: MsalAccountInfo): AuthenticationRecord {\n const record = {\n authority: account.environment ?? DefaultAuthority,\n homeAccountId: account.homeAccountId,\n tenantId: account.tenantId || DefaultTenantId,\n username: account.username,\n clientId,\n version: LatestAuthenticationRecordVersion,\n };\n return record;\n}\n\n/**\n * Serializes an `AuthenticationRecord` into a string.\n *\n * The output of a serialized authentication record will contain the following properties:\n *\n * - \"authority\"\n * - \"homeAccountId\"\n * - \"clientId\"\n * - \"tenantId\"\n * - \"username\"\n * - \"version\"\n *\n * To later convert this string to a serialized `AuthenticationRecord`, please use the exported function `deserializeAuthenticationRecord()`.\n */\nexport function serializeAuthenticationRecord(record: AuthenticationRecord): string {\n return JSON.stringify(record);\n}\n\n/**\n * Deserializes a previously serialized authentication record from a string into an object.\n *\n * The input string must contain the following properties:\n *\n * - \"authority\"\n * - \"homeAccountId\"\n * - \"clientId\"\n * - \"tenantId\"\n * - \"username\"\n * - \"version\"\n *\n * If the version we receive is unsupported, an error will be thrown.\n *\n * At the moment, the only available version is: \"1.0\", which is always set when the authentication record is serialized.\n *\n * @param serializedRecord - Authentication record previously serialized into string.\n * @returns AuthenticationRecord.\n */\nexport function deserializeAuthenticationRecord(serializedRecord: string): AuthenticationRecord {\n const parsed: AuthenticationRecord & { version?: string } = JSON.parse(serializedRecord);\n\n if (parsed.version && parsed.version !== LatestAuthenticationRecordVersion) {\n throw Error(\"Unsupported AuthenticationRecord version\");\n }\n\n return parsed;\n}\n", "// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { PipelinePolicy } from \"@azure/core-rest-pipeline\";\nimport { retryPolicy } from \"@azure/core-rest-pipeline\";\n\nimport type { MSIConfiguration } from \"./models.js\";\nimport { calculateRetryDelay } from \"@azure/core-util\";\n\n// Matches the default retry configuration in expontentialRetryStrategy.ts\nconst DEFAULT_CLIENT_MAX_RETRY_INTERVAL = 1000 * 64;\n\n/**\n * An additional policy that retries on 404 errors. The default retry policy does not retry on\n * 404s, but the IMDS endpoint can return 404s when the token is not yet available. This policy\n * will retry on 404s with an exponential backoff.\n *\n * @param msiRetryConfig - The retry configuration for the MSI credential.\n * @returns - The policy that will retry on 404s.\n */\nexport function imdsRetryPolicy(msiRetryConfig: MSIConfiguration[\"retryConfig\"]): PipelinePolicy {\n return retryPolicy(\n [\n {\n name: \"imdsRetryPolicy\",\n retry: ({ retryCount, response }) => {\n if (response?.status !== 404) {\n return { skipStrategy: true };\n }\n\n return calculateRetryDelay(retryCount, {\n retryDelayInMs: msiRetryConfig.startDelayInMs,\n maxRetryDelayInMs: DEFAULT_CLIENT_MAX_RETRY_INTERVAL,\n });\n },\n },\n ],\n {\n maxRetries: msiRetryConfig.maxRetries,\n },\n );\n}\n", "// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { PipelineRequestOptions, PipelineResponse } from \"@azure/core-rest-pipeline\";\nimport { createHttpHeaders, createPipelineRequest } from \"@azure/core-rest-pipeline\";\nimport { isError } from \"@azure/core-util\";\n\nimport type { GetTokenOptions } from \"@azure/core-auth\";\nimport { credentialLogger } from \"../../util/logging.js\";\nimport { mapScopesToResource } from \"./utils.js\";\nimport { tracingClient } from \"../../util/tracing.js\";\nimport type { IdentityClient } from \"../../client/identityClient.js\";\n\nconst msiName = \"ManagedIdentityCredential - IMDS\";\nconst logger = credentialLogger(msiName);\n\nconst imdsHost = \"http://169.254.169.254\";\nconst imdsEndpointPath = \"/metadata/identity/oauth2/token\";\n\n/**\n * Generates an invalid request options to get a response quickly from IMDS endpoint.\n * The response indicates the availability of IMSD service; otherwise the request would time out.\n */\nfunction prepareInvalidRequestOptions(scopes: string | string[]): PipelineRequestOptions {\n const resource = mapScopesToResource(scopes);\n if (!resource) {\n throw new Error(`${msiName}: Multiple scopes are not supported.`);\n }\n\n // Pod Identity will try to process this request even if the Metadata header is missing.\n // We can exclude the request query to ensure no IMDS endpoint tries to process the ping request.\n const url = new URL(imdsEndpointPath, process.env.AZURE_POD_IDENTITY_AUTHORITY_HOST ?? imdsHost);\n\n const rawHeaders: Record = {\n Accept: \"application/json\",\n // intentionally leave out the Metadata header to invoke an error from IMDS endpoint.\n };\n\n return {\n // intentionally not including any query\n url: `${url}`,\n method: \"GET\",\n headers: createHttpHeaders(rawHeaders),\n };\n}\n\n/**\n * Defines how to determine whether the Azure IMDS MSI is available.\n *\n * Actually getting the token once we determine IMDS is available is handled by MSAL.\n */\nexport const imdsMsi = {\n name: \"imdsMsi\",\n async isAvailable(options: {\n scopes: string | string[];\n identityClient?: IdentityClient;\n clientId?: string;\n resourceId?: string;\n getTokenOptions?: GetTokenOptions;\n }): Promise {\n const { scopes, identityClient, getTokenOptions } = options;\n const resource = mapScopesToResource(scopes);\n if (!resource) {\n logger.info(`${msiName}: Unavailable. Multiple scopes are not supported.`);\n return false;\n }\n\n // if the PodIdentityEndpoint environment variable was set no need to probe the endpoint, it can be assumed to exist\n if (process.env.AZURE_POD_IDENTITY_AUTHORITY_HOST) {\n return true;\n }\n\n if (!identityClient) {\n throw new Error(\"Missing IdentityClient\");\n }\n\n const requestOptions = prepareInvalidRequestOptions(resource);\n\n return tracingClient.withSpan(\n \"ManagedIdentityCredential-pingImdsEndpoint\",\n getTokenOptions ?? {},\n async (updatedOptions) => {\n requestOptions.tracingOptions = updatedOptions.tracingOptions;\n\n // Create a request with a timeout since we expect that\n // not having a \"Metadata\" header should cause an error to be\n // returned quickly from the endpoint, proving its availability.\n const request = createPipelineRequest(requestOptions);\n\n // Default to 1000 if the default of 0 is used.\n // Negative values can still be used to disable the timeout.\n request.timeout = updatedOptions.requestOptions?.timeout || 1000;\n\n // This MSI uses the imdsEndpoint to get the token, which only uses http://\n request.allowInsecureConnection = true;\n let response: PipelineResponse;\n try {\n logger.info(`${msiName}: Pinging the Azure IMDS endpoint`);\n response = await identityClient.sendRequest(request);\n } catch (err: unknown) {\n // If the request failed, or Node.js was unable to establish a connection,\n // or the host was down, we'll assume the IMDS endpoint isn't available.\n if (isError(err)) {\n logger.verbose(`${msiName}: Caught error ${err.name}: ${err.message}`);\n }\n // This is a special case for Docker Desktop which responds with a 403 with a message that contains \"A socket operation was attempted to an unreachable network\" or \"A socket operation was attempted to an unreachable host\"\n // rather than just timing out, as expected.\n logger.info(`${msiName}: The Azure IMDS endpoint is unavailable`);\n return false;\n }\n if (response.status === 403) {\n if (response.bodyAsText?.includes(\"unreachable\")) {\n logger.info(`${msiName}: The Azure IMDS endpoint is unavailable`);\n logger.info(`${msiName}: ${response.bodyAsText}`);\n return false;\n }\n }\n // If we received any response, the endpoint is available\n logger.info(`${msiName}: The Azure IMDS endpoint is available`);\n return true;\n },\n );\n },\n};\n", "// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\n/**\n * Helps specify a regional authority, or \"AutoDiscoverRegion\" to auto-detect the region.\n */\nexport enum RegionalAuthority {\n /** Instructs MSAL to attempt to discover the region */\n AutoDiscoverRegion = \"AutoDiscoverRegion\",\n /** Uses the {@link RegionalAuthority} for the Azure 'westus' region. */\n USWest = \"westus\",\n /** Uses the {@link RegionalAuthority} for the Azure 'westus2' region. */\n USWest2 = \"westus2\",\n /** Uses the {@link RegionalAuthority} for the Azure 'centralus' region. */\n USCentral = \"centralus\",\n /** Uses the {@link RegionalAuthority} for the Azure 'eastus' region. */\n USEast = \"eastus\",\n /** Uses the {@link RegionalAuthority} for the Azure 'eastus2' region. */\n USEast2 = \"eastus2\",\n /** Uses the {@link RegionalAuthority} for the Azure 'northcentralus' region. */\n USNorthCentral = \"northcentralus\",\n /** Uses the {@link RegionalAuthority} for the Azure 'southcentralus' region. */\n USSouthCentral = \"southcentralus\",\n /** Uses the {@link RegionalAuthority} for the Azure 'westcentralus' region. */\n USWestCentral = \"westcentralus\",\n /** Uses the {@link RegionalAuthority} for the Azure 'canadacentral' region. */\n CanadaCentral = \"canadacentral\",\n /** Uses the {@link RegionalAuthority} for the Azure 'canadaeast' region. */\n CanadaEast = \"canadaeast\",\n /** Uses the {@link RegionalAuthority} for the Azure 'brazilsouth' region. */\n BrazilSouth = \"brazilsouth\",\n /** Uses the {@link RegionalAuthority} for the Azure 'northeurope' region. */\n EuropeNorth = \"northeurope\",\n /** Uses the {@link RegionalAuthority} for the Azure 'westeurope' region. */\n EuropeWest = \"westeurope\",\n /** Uses the {@link RegionalAuthority} for the Azure 'uksouth' region. */\n UKSouth = \"uksouth\",\n /** Uses the {@link RegionalAuthority} for the Azure 'ukwest' region. */\n UKWest = \"ukwest\",\n /** Uses the {@link RegionalAuthority} for the Azure 'francecentral' region. */\n FranceCentral = \"francecentral\",\n /** Uses the {@link RegionalAuthority} for the Azure 'francesouth' region. */\n FranceSouth = \"francesouth\",\n /** Uses the {@link RegionalAuthority} for the Azure 'switzerlandnorth' region. */\n SwitzerlandNorth = \"switzerlandnorth\",\n /** Uses the {@link RegionalAuthority} for the Azure 'switzerlandwest' region. */\n SwitzerlandWest = \"switzerlandwest\",\n /** Uses the {@link RegionalAuthority} for the Azure 'germanynorth' region. */\n GermanyNorth = \"germanynorth\",\n /** Uses the {@link RegionalAuthority} for the Azure 'germanywestcentral' region. */\n GermanyWestCentral = \"germanywestcentral\",\n /** Uses the {@link RegionalAuthority} for the Azure 'norwaywest' region. */\n NorwayWest = \"norwaywest\",\n /** Uses the {@link RegionalAuthority} for the Azure 'norwayeast' region. */\n NorwayEast = \"norwayeast\",\n /** Uses the {@link RegionalAuthority} for the Azure 'eastasia' region. */\n AsiaEast = \"eastasia\",\n /** Uses the {@link RegionalAuthority} for the Azure 'southeastasia' region. */\n AsiaSouthEast = \"southeastasia\",\n /** Uses the {@link RegionalAuthority} for the Azure 'japaneast' region. */\n JapanEast = \"japaneast\",\n /** Uses the {@link RegionalAuthority} for the Azure 'japanwest' region. */\n JapanWest = \"japanwest\",\n /** Uses the {@link RegionalAuthority} for the Azure 'australiaeast' region. */\n AustraliaEast = \"australiaeast\",\n /** Uses the {@link RegionalAuthority} for the Azure 'australiasoutheast' region. */\n AustraliaSouthEast = \"australiasoutheast\",\n /** Uses the {@link RegionalAuthority} for the Azure 'australiacentral' region. */\n AustraliaCentral = \"australiacentral\",\n /** Uses the {@link RegionalAuthority} for the Azure 'australiacentral2' region. */\n AustraliaCentral2 = \"australiacentral2\",\n /** Uses the {@link RegionalAuthority} for the Azure 'centralindia' region. */\n IndiaCentral = \"centralindia\",\n /** Uses the {@link RegionalAuthority} for the Azure 'southindia' region. */\n IndiaSouth = \"southindia\",\n /** Uses the {@link RegionalAuthority} for the Azure 'westindia' region. */\n IndiaWest = \"westindia\",\n /** Uses the {@link RegionalAuthority} for the Azure 'koreasouth' region. */\n KoreaSouth = \"koreasouth\",\n /** Uses the {@link RegionalAuthority} for the Azure 'koreacentral' region. */\n KoreaCentral = \"koreacentral\",\n /** Uses the {@link RegionalAuthority} for the Azure 'uaecentral' region. */\n UAECentral = \"uaecentral\",\n /** Uses the {@link RegionalAuthority} for the Azure 'uaenorth' region. */\n UAENorth = \"uaenorth\",\n /** Uses the {@link RegionalAuthority} for the Azure 'southafricanorth' region. */\n SouthAfricaNorth = \"southafricanorth\",\n /** Uses the {@link RegionalAuthority} for the Azure 'southafricawest' region. */\n SouthAfricaWest = \"southafricawest\",\n /** Uses the {@link RegionalAuthority} for the Azure 'chinanorth' region. */\n ChinaNorth = \"chinanorth\",\n /** Uses the {@link RegionalAuthority} for the Azure 'chinaeast' region. */\n ChinaEast = \"chinaeast\",\n /** Uses the {@link RegionalAuthority} for the Azure 'chinanorth2' region. */\n ChinaNorth2 = \"chinanorth2\",\n /** Uses the {@link RegionalAuthority} for the Azure 'chinaeast2' region. */\n ChinaEast2 = \"chinaeast2\",\n /** Uses the {@link RegionalAuthority} for the Azure 'germanycentral' region. */\n GermanyCentral = \"germanycentral\",\n /** Uses the {@link RegionalAuthority} for the Azure 'germanynortheast' region. */\n GermanyNorthEast = \"germanynortheast\",\n /** Uses the {@link RegionalAuthority} for the Azure 'usgovvirginia' region. */\n GovernmentUSVirginia = \"usgovvirginia\",\n /** Uses the {@link RegionalAuthority} for the Azure 'usgoviowa' region. */\n GovernmentUSIowa = \"usgoviowa\",\n /** Uses the {@link RegionalAuthority} for the Azure 'usgovarizona' region. */\n GovernmentUSArizona = \"usgovarizona\",\n /** Uses the {@link RegionalAuthority} for the Azure 'usgovtexas' region. */\n GovernmentUSTexas = \"usgovtexas\",\n /** Uses the {@link RegionalAuthority} for the Azure 'usdodeast' region. */\n GovernmentUSDodEast = \"usdodeast\",\n /** Uses the {@link RegionalAuthority} for the Azure 'usdodcentral' region. */\n GovernmentUSDodCentral = \"usdodcentral\",\n}\n\n/**\n * Calculates the correct regional authority based on the supplied value\n * and the AZURE_REGIONAL_AUTHORITY_NAME environment variable.\n *\n * Values will be returned verbatim, except for {@link RegionalAuthority.AutoDiscoverRegion}\n * which is mapped to a value MSAL can understand.\n *\n * @internal\n */\nexport function calculateRegionalAuthority(regionalAuthority?: string): string | undefined {\n // Note: as of today only 3 credentials support regional authority, and the parameter\n // is not exposed via the public API. Regional Authority is _only_ supported\n // via the AZURE_REGIONAL_AUTHORITY_NAME env var and _only_ for: ClientSecretCredential, ClientCertificateCredential, and ClientAssertionCredential.\n\n // Accepting the regionalAuthority parameter will allow us to support it in the future.\n let azureRegion = regionalAuthority;\n\n if (\n azureRegion === undefined &&\n globalThis.process?.env?.AZURE_REGIONAL_AUTHORITY_NAME !== undefined\n ) {\n azureRegion = process.env.AZURE_REGIONAL_AUTHORITY_NAME;\n }\n\n if (azureRegion === RegionalAuthority.AutoDiscoverRegion) {\n return \"AUTO_DISCOVER\";\n }\n\n return azureRegion;\n}\n", "// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport * as msal from \"@azure/msal-node\";\n\nimport type { AccessToken, GetTokenOptions } from \"@azure/core-auth\";\nimport type { AuthenticationRecord, CertificateParts } from \"../types.js\";\nimport type { CredentialLogger } from \"../../util/logging.js\";\nimport { credentialLogger, formatSuccess } from \"../../util/logging.js\";\nimport type { PluginConfiguration } from \"./msalPlugins.js\";\nimport { msalPlugins } from \"./msalPlugins.js\";\nimport {\n defaultLoggerCallback,\n ensureValidMsalToken,\n getAuthority,\n getAuthorityHost,\n getKnownAuthorities,\n getMSALLogLevel,\n handleMsalError,\n msalToPublic,\n publicToMsal,\n} from \"../utils.js\";\n\nimport { AuthenticationRequiredError } from \"../../errors.js\";\nimport type { BrokerOptions } from \"./brokerOptions.js\";\nimport type { DeviceCodePromptCallback } from \"../../credentials/deviceCodeCredentialOptions.js\";\nimport { IdentityClient } from \"../../client/identityClient.js\";\nimport type { InteractiveBrowserCredentialNodeOptions } from \"../../credentials/interactiveBrowserCredentialOptions.js\";\nimport type { TokenCachePersistenceOptions } from \"./tokenCachePersistenceOptions.js\";\nimport { calculateRegionalAuthority } from \"../../regionalAuthority.js\";\nimport { getLogLevel } from \"@azure/logger\";\nimport { resolveTenantId } from \"../../util/tenantIdUtils.js\";\n\n/**\n * The default logger used if no logger was passed in by the credential.\n */\nconst msalLogger = credentialLogger(\"MsalClient\");\n\n/**\n * Represents the options for acquiring a token using flows that support silent authentication.\n */\nexport interface GetTokenWithSilentAuthOptions extends GetTokenOptions {\n /**\n * Disables automatic authentication. If set to true, the method will throw an error if the user needs to authenticate.\n *\n * @remarks\n *\n * This option will be set to `false` when the user calls `authenticate` directly on a credential that supports it.\n */\n disableAutomaticAuthentication?: boolean;\n}\n\n/**\n * Represents the options for acquiring a token interactively.\n */\nexport interface GetTokenInteractiveOptions extends GetTokenWithSilentAuthOptions {\n /**\n * Window handle for parent window, required for WAM authentication.\n */\n parentWindowHandle?: Buffer;\n /**\n * Shared configuration options for browser customization\n */\n browserCustomizationOptions?: InteractiveBrowserCredentialNodeOptions[\"browserCustomizationOptions\"];\n /**\n * loginHint allows a user name to be pre-selected for interactive logins.\n * Setting this option skips the account selection prompt and immediately attempts to login with the specified account.\n */\n loginHint?: string;\n}\n\n/**\n * Represents a client for interacting with the Microsoft Authentication Library (MSAL).\n */\nexport interface MsalClient {\n /**\n *\n * Retrieves an access token by using the on-behalf-of flow and a client assertion callback of the calling service.\n *\n * @param scopes - The scopes for which the access token is requested. These represent the resources that the application wants to access.\n * @param userAssertionToken - The access token that was sent to the middle-tier API. This token must have an audience of the app making this OBO request.\n * @param clientCredentials - The client secret OR client certificate OR client `getAssertion` callback.\n * @param options - Additional options that may be provided to the method.\n * @returns An access token.\n */\n getTokenOnBehalfOf(\n scopes: string[],\n userAssertionToken: string,\n clientCredentials: string | CertificateParts | (() => Promise),\n options?: GetTokenOptions,\n ): Promise;\n\n /**\n * Retrieves an access token by using an interactive prompt (InteractiveBrowserCredential).\n * @param scopes - The scopes for which the access token is requested. These represent the resources that the application wants to access.\n * @param options - Additional options that may be provided to the method.\n * @returns An access token.\n */\n getTokenByInteractiveRequest(\n scopes: string[],\n options: GetTokenInteractiveOptions,\n ): Promise;\n /**\n * Retrieves an access token by using a user's username and password.\n *\n * @param scopes - The scopes for which the access token is requested. These represent the resources that the application wants to access.\n * @param username - The username provided by the developer.\n * @param password - The user's password provided by the developer.\n * @param options - Additional options that may be provided to the method.\n * @returns An access token.\n */\n getTokenByUsernamePassword(\n scopes: string[],\n username: string,\n password: string,\n options?: GetTokenOptions,\n ): Promise;\n /**\n * Retrieves an access token by prompting the user to authenticate using a device code.\n *\n * @param scopes - The scopes for which the access token is requested. These represent the resources that the application wants to access.\n * @param userPromptCallback - The callback function that allows developers to customize the prompt message.\n * @param options - Additional options that may be provided to the method.\n * @returns An access token.\n */\n getTokenByDeviceCode(\n scopes: string[],\n userPromptCallback: DeviceCodePromptCallback,\n options?: GetTokenWithSilentAuthOptions,\n ): Promise;\n /**\n * Retrieves an access token by using a client certificate.\n *\n * @param scopes - The scopes for which the access token is requested. These represent the resources that the application wants to access.\n * @param certificate - The client certificate used for authentication.\n * @param options - Additional options that may be provided to the method.\n * @returns An access token.\n */\n getTokenByClientCertificate(\n scopes: string[],\n certificate: CertificateParts,\n options?: GetTokenOptions,\n ): Promise;\n\n /**\n * Retrieves an access token by using a client assertion.\n *\n * @param scopes - The scopes for which the access token is requested. These represent the resources that the application wants to access.\n * @param clientAssertion - The client `getAssertion` callback used for authentication.\n * @param options - Additional options that may be provided to the method.\n * @returns An access token.\n */\n getTokenByClientAssertion(\n scopes: string[],\n clientAssertion: () => Promise,\n options?: GetTokenOptions,\n ): Promise;\n\n /**\n * Retrieves an access token by using a client secret.\n *\n * @param scopes - The scopes for which the access token is requested. These represent the resources that the application wants to access.\n * @param clientSecret - The client secret of the application. This is a credential that the application can use to authenticate itself.\n * @param options - Additional options that may be provided to the method.\n * @returns An access token.\n */\n getTokenByClientSecret(\n scopes: string[],\n clientSecret: string,\n options?: GetTokenOptions,\n ): Promise;\n\n /**\n * Retrieves an access token by using an authorization code flow.\n *\n * @param scopes - The scopes for which the access token is requested. These represent the resources that the application wants to access.\n * @param authorizationCode - An authorization code that was received from following the\n authorization code flow. This authorization code must not\n have already been used to obtain an access token.\n * @param redirectUri - The redirect URI that was used to request the authorization code.\n Must be the same URI that is configured for the App Registration.\n * @param clientSecret - An optional client secret that was generated for the App Registration.\n * @param options - Additional options that may be provided to the method.\n */\n getTokenByAuthorizationCode(\n scopes: string[],\n redirectUri: string,\n authorizationCode: string,\n clientSecret?: string,\n options?: GetTokenWithSilentAuthOptions,\n ): Promise;\n\n /**\n * Retrieves the last authenticated account. This method expects an authentication record to have been previously loaded.\n *\n * An authentication record could be loaded by calling the `getToken` method, or by providing an `authenticationRecord` when creating a credential.\n */\n getActiveAccount(): AuthenticationRecord | undefined;\n}\n\n/**\n * Represents the options for configuring the MsalClient.\n */\nexport interface MsalClientOptions {\n /**\n * Parameters that enable WAM broker authentication in the InteractiveBrowserCredential.\n */\n brokerOptions?: BrokerOptions;\n\n /**\n * Parameters that enable token cache persistence in the Identity credentials.\n */\n tokenCachePersistenceOptions?: TokenCachePersistenceOptions;\n\n /**\n * A custom authority host.\n */\n authorityHost?: IdentityClient[\"tokenCredentialOptions\"][\"authorityHost\"];\n\n /**\n * Allows users to configure settings for logging policy options, allow logging account information and personally identifiable information for customer support.\n */\n loggingOptions?: IdentityClient[\"tokenCredentialOptions\"][\"loggingOptions\"];\n\n /**\n * The token credential options for the MsalClient.\n */\n tokenCredentialOptions?: IdentityClient[\"tokenCredentialOptions\"];\n\n /**\n * Determines whether instance discovery is disabled.\n */\n disableInstanceDiscovery?: boolean;\n\n /**\n * The logger for the MsalClient.\n */\n logger?: CredentialLogger;\n\n /**\n * The authentication record for the MsalClient.\n */\n authenticationRecord?: AuthenticationRecord;\n}\n\n/**\n * Generates the configuration for MSAL (Microsoft Authentication Library).\n *\n * @param clientId - The client ID of the application.\n * @param tenantId - The tenant ID of the Azure Active Directory.\n * @param msalClientOptions - Optional. Additional options for creating the MSAL client.\n * @returns The MSAL configuration object.\n */\nexport function generateMsalConfiguration(\n clientId: string,\n tenantId: string,\n msalClientOptions: MsalClientOptions = {},\n): msal.Configuration {\n const resolvedTenant = resolveTenantId(\n msalClientOptions.logger ?? msalLogger,\n tenantId,\n clientId,\n );\n\n // TODO: move and reuse getIdentityClientAuthorityHost\n const authority = getAuthority(resolvedTenant, getAuthorityHost(msalClientOptions));\n\n const httpClient = new IdentityClient({\n ...msalClientOptions.tokenCredentialOptions,\n authorityHost: authority,\n loggingOptions: msalClientOptions.loggingOptions,\n });\n\n const msalConfig: msal.Configuration = {\n auth: {\n clientId,\n authority,\n knownAuthorities: getKnownAuthorities(\n resolvedTenant,\n authority,\n msalClientOptions.disableInstanceDiscovery,\n ),\n },\n system: {\n networkClient: httpClient,\n loggerOptions: {\n loggerCallback: defaultLoggerCallback(msalClientOptions.logger ?? msalLogger),\n logLevel: getMSALLogLevel(getLogLevel()),\n piiLoggingEnabled: msalClientOptions.loggingOptions?.enableUnsafeSupportLogging,\n },\n },\n };\n return msalConfig;\n}\n\n/**\n * Represents the state necessary for the MSAL (Microsoft Authentication Library) client to operate.\n * This includes the MSAL configuration, cached account information, Azure region, and a flag to disable automatic authentication.\n *\n * @internal\n */\ninterface MsalClientState {\n /** The configuration for the MSAL client. */\n msalConfig: msal.Configuration;\n\n /** The cached account information, or null if no account information is cached. */\n cachedAccount: msal.AccountInfo | null;\n\n /** Configured plugins */\n pluginConfiguration: PluginConfiguration;\n\n /** Claims received from challenges, cached for the next request */\n cachedClaims?: string;\n\n /** The logger instance */\n logger: CredentialLogger;\n}\n\n/**\n * Creates an instance of the MSAL (Microsoft Authentication Library) client.\n *\n * @param clientId - The client ID of the application.\n * @param tenantId - The tenant ID of the Azure Active Directory.\n * @param createMsalClientOptions - Optional. Additional options for creating the MSAL client.\n * @returns An instance of the MSAL client.\n *\n * @public\n */\nexport function createMsalClient(\n clientId: string,\n tenantId: string,\n createMsalClientOptions: MsalClientOptions = {},\n): MsalClient {\n const state: MsalClientState = {\n msalConfig: generateMsalConfiguration(clientId, tenantId, createMsalClientOptions),\n cachedAccount: createMsalClientOptions.authenticationRecord\n ? publicToMsal(createMsalClientOptions.authenticationRecord)\n : null,\n pluginConfiguration: msalPlugins.generatePluginConfiguration(createMsalClientOptions),\n logger: createMsalClientOptions.logger ?? msalLogger,\n };\n\n const publicApps: Map = new Map();\n async function getPublicApp(\n options: GetTokenOptions = {},\n ): Promise {\n const appKey = options.enableCae ? \"CAE\" : \"default\";\n\n let publicClientApp = publicApps.get(appKey);\n if (publicClientApp) {\n state.logger.getToken.info(\"Existing PublicClientApplication found in cache, returning it.\");\n return publicClientApp;\n }\n\n // Initialize a new app and cache it\n state.logger.getToken.info(\n `Creating new PublicClientApplication with CAE ${options.enableCae ? \"enabled\" : \"disabled\"}.`,\n );\n\n const cachePlugin = options.enableCae\n ? state.pluginConfiguration.cache.cachePluginCae\n : state.pluginConfiguration.cache.cachePlugin;\n\n state.msalConfig.auth.clientCapabilities = options.enableCae ? [\"cp1\"] : undefined;\n\n publicClientApp = new msal.PublicClientApplication({\n ...state.msalConfig,\n broker: { nativeBrokerPlugin: state.pluginConfiguration.broker.nativeBrokerPlugin },\n cache: { cachePlugin: await cachePlugin },\n });\n\n publicApps.set(appKey, publicClientApp);\n\n return publicClientApp;\n }\n\n const confidentialApps: Map = new Map();\n async function getConfidentialApp(\n options: GetTokenOptions = {},\n ): Promise {\n const appKey = options.enableCae ? \"CAE\" : \"default\";\n\n let confidentialClientApp = confidentialApps.get(appKey);\n if (confidentialClientApp) {\n state.logger.getToken.info(\n \"Existing ConfidentialClientApplication found in cache, returning it.\",\n );\n return confidentialClientApp;\n }\n\n // Initialize a new app and cache it\n state.logger.getToken.info(\n `Creating new ConfidentialClientApplication with CAE ${\n options.enableCae ? \"enabled\" : \"disabled\"\n }.`,\n );\n\n const cachePlugin = options.enableCae\n ? state.pluginConfiguration.cache.cachePluginCae\n : state.pluginConfiguration.cache.cachePlugin;\n\n state.msalConfig.auth.clientCapabilities = options.enableCae ? [\"cp1\"] : undefined;\n\n confidentialClientApp = new msal.ConfidentialClientApplication({\n ...state.msalConfig,\n broker: { nativeBrokerPlugin: state.pluginConfiguration.broker.nativeBrokerPlugin },\n cache: { cachePlugin: await cachePlugin },\n });\n\n confidentialApps.set(appKey, confidentialClientApp);\n\n return confidentialClientApp;\n }\n\n async function getTokenSilent(\n app: msal.ConfidentialClientApplication | msal.PublicClientApplication,\n scopes: string[],\n options: GetTokenOptions = {},\n ): Promise {\n if (state.cachedAccount === null) {\n state.logger.getToken.info(\"No cached account found in local state.\");\n throw new AuthenticationRequiredError({ scopes });\n }\n\n // Keep track and reuse the claims we received across challenges\n if (options.claims) {\n state.cachedClaims = options.claims;\n }\n\n const silentRequest: msal.SilentFlowRequest = {\n account: state.cachedAccount,\n scopes,\n claims: state.cachedClaims,\n };\n\n if (state.pluginConfiguration.broker.isEnabled) {\n silentRequest.tokenQueryParameters ||= {};\n if (state.pluginConfiguration.broker.enableMsaPassthrough) {\n silentRequest.tokenQueryParameters[\"msal_request_type\"] = \"consumer_passthrough\";\n }\n }\n\n if (options.proofOfPossessionOptions) {\n silentRequest.shrNonce = options.proofOfPossessionOptions.nonce;\n silentRequest.authenticationScheme = \"pop\";\n silentRequest.resourceRequestMethod = options.proofOfPossessionOptions.resourceRequestMethod;\n silentRequest.resourceRequestUri = options.proofOfPossessionOptions.resourceRequestUrl;\n }\n state.logger.getToken.info(\"Attempting to acquire token silently\");\n try {\n return await app.acquireTokenSilent(silentRequest);\n } catch (err: any) {\n throw handleMsalError(scopes, err, options);\n }\n }\n\n /**\n * Builds an authority URL for the given request. The authority may be different than the one used when creating the MSAL client\n * if the user is creating cross-tenant requests\n */\n function calculateRequestAuthority(options?: GetTokenOptions): string | undefined {\n if (options?.tenantId) {\n return getAuthority(options.tenantId, getAuthorityHost(createMsalClientOptions));\n }\n return state.msalConfig.auth.authority;\n }\n\n /**\n * Performs silent authentication using MSAL to acquire an access token.\n * If silent authentication fails, falls back to interactive authentication.\n *\n * @param msalApp - The MSAL application instance.\n * @param scopes - The scopes for which to acquire the access token.\n * @param options - The options for acquiring the access token.\n * @param onAuthenticationRequired - A callback function to handle interactive authentication when silent authentication fails.\n * @returns A promise that resolves to an AccessToken object containing the access token and its expiration timestamp.\n */\n async function withSilentAuthentication(\n msalApp: msal.ConfidentialClientApplication | msal.PublicClientApplication,\n scopes: Array,\n options: GetTokenWithSilentAuthOptions,\n onAuthenticationRequired: () => Promise,\n ): Promise {\n let response: msal.AuthenticationResult | null = null;\n try {\n response = await getTokenSilent(msalApp, scopes, options);\n } catch (e: any) {\n if (e.name !== \"AuthenticationRequiredError\") {\n throw e;\n }\n if (options.disableAutomaticAuthentication) {\n throw new AuthenticationRequiredError({\n scopes,\n getTokenOptions: options,\n message:\n \"Automatic authentication has been disabled. You may call the authentication() method.\",\n });\n }\n }\n\n // Silent authentication failed\n if (response === null) {\n try {\n response = await onAuthenticationRequired();\n } catch (err: any) {\n throw handleMsalError(scopes, err, options);\n }\n }\n\n // At this point we should have a token, process it\n ensureValidMsalToken(scopes, response, options);\n state.cachedAccount = response?.account ?? null;\n\n state.logger.getToken.info(formatSuccess(scopes));\n return {\n token: response.accessToken,\n expiresOnTimestamp: response.expiresOn.getTime(),\n refreshAfterTimestamp: response.refreshOn?.getTime(),\n tokenType: response.tokenType,\n } as AccessToken;\n }\n\n async function getTokenByClientSecret(\n scopes: string[],\n clientSecret: string,\n options: GetTokenOptions = {},\n ): Promise {\n state.logger.getToken.info(`Attempting to acquire token using client secret`);\n\n state.msalConfig.auth.clientSecret = clientSecret;\n\n const msalApp = await getConfidentialApp(options);\n\n try {\n const response = await msalApp.acquireTokenByClientCredential({\n scopes,\n authority: calculateRequestAuthority(options),\n azureRegion: calculateRegionalAuthority(),\n claims: options?.claims,\n });\n ensureValidMsalToken(scopes, response, options);\n state.logger.getToken.info(formatSuccess(scopes));\n return {\n token: response.accessToken,\n expiresOnTimestamp: response.expiresOn.getTime(),\n refreshAfterTimestamp: response.refreshOn?.getTime(),\n tokenType: response.tokenType,\n } as AccessToken;\n } catch (err: any) {\n throw handleMsalError(scopes, err, options);\n }\n }\n\n async function getTokenByClientAssertion(\n scopes: string[],\n clientAssertion: () => Promise,\n options: GetTokenOptions = {},\n ): Promise {\n state.logger.getToken.info(`Attempting to acquire token using client assertion`);\n\n state.msalConfig.auth.clientAssertion = clientAssertion;\n\n const msalApp = await getConfidentialApp(options);\n\n try {\n const response = await msalApp.acquireTokenByClientCredential({\n scopes,\n authority: calculateRequestAuthority(options),\n azureRegion: calculateRegionalAuthority(),\n claims: options?.claims,\n clientAssertion,\n });\n ensureValidMsalToken(scopes, response, options);\n\n state.logger.getToken.info(formatSuccess(scopes));\n return {\n token: response.accessToken,\n expiresOnTimestamp: response.expiresOn.getTime(),\n refreshAfterTimestamp: response.refreshOn?.getTime(),\n tokenType: response.tokenType,\n } as AccessToken;\n } catch (err: any) {\n throw handleMsalError(scopes, err, options);\n }\n }\n\n async function getTokenByClientCertificate(\n scopes: string[],\n certificate: CertificateParts,\n options: GetTokenOptions = {},\n ): Promise {\n state.logger.getToken.info(`Attempting to acquire token using client certificate`);\n\n state.msalConfig.auth.clientCertificate = certificate;\n\n const msalApp = await getConfidentialApp(options);\n try {\n const response = await msalApp.acquireTokenByClientCredential({\n scopes,\n authority: calculateRequestAuthority(options),\n azureRegion: calculateRegionalAuthority(),\n claims: options?.claims,\n });\n ensureValidMsalToken(scopes, response, options);\n\n state.logger.getToken.info(formatSuccess(scopes));\n return {\n token: response.accessToken,\n expiresOnTimestamp: response.expiresOn.getTime(),\n refreshAfterTimestamp: response.refreshOn?.getTime(),\n tokenType: response.tokenType,\n } as AccessToken;\n } catch (err: any) {\n throw handleMsalError(scopes, err, options);\n }\n }\n\n async function getTokenByDeviceCode(\n scopes: string[],\n deviceCodeCallback: DeviceCodePromptCallback,\n options: GetTokenWithSilentAuthOptions = {},\n ): Promise {\n state.logger.getToken.info(`Attempting to acquire token using device code`);\n\n const msalApp = await getPublicApp(options);\n\n return withSilentAuthentication(msalApp, scopes, options, () => {\n const requestOptions: msal.DeviceCodeRequest = {\n scopes,\n cancel: options?.abortSignal?.aborted ?? false,\n deviceCodeCallback,\n authority: calculateRequestAuthority(options),\n claims: options?.claims,\n };\n const deviceCodeRequest = msalApp.acquireTokenByDeviceCode(requestOptions);\n if (options.abortSignal) {\n options.abortSignal.addEventListener(\"abort\", () => {\n requestOptions.cancel = true;\n });\n }\n\n return deviceCodeRequest;\n });\n }\n\n async function getTokenByUsernamePassword(\n scopes: string[],\n username: string,\n password: string,\n options: GetTokenOptions = {},\n ): Promise {\n state.logger.getToken.info(`Attempting to acquire token using username and password`);\n\n const msalApp = await getPublicApp(options);\n\n return withSilentAuthentication(msalApp, scopes, options, () => {\n const requestOptions: msal.UsernamePasswordRequest = {\n scopes,\n username,\n password,\n authority: calculateRequestAuthority(options),\n claims: options?.claims,\n };\n\n return msalApp.acquireTokenByUsernamePassword(requestOptions);\n });\n }\n\n function getActiveAccount(): AuthenticationRecord | undefined {\n if (!state.cachedAccount) {\n return undefined;\n }\n return msalToPublic(clientId, state.cachedAccount);\n }\n\n async function getTokenByAuthorizationCode(\n scopes: string[],\n redirectUri: string,\n authorizationCode: string,\n clientSecret?: string,\n options: GetTokenWithSilentAuthOptions = {},\n ): Promise {\n state.logger.getToken.info(`Attempting to acquire token using authorization code`);\n\n let msalApp: msal.ConfidentialClientApplication | msal.PublicClientApplication;\n if (clientSecret) {\n // If a client secret is provided, we need to use a confidential client application\n // See https://learn.microsoft.com/entra/identity-platform/v2-oauth2-auth-code-flow#request-an-access-token-with-a-client_secret\n state.msalConfig.auth.clientSecret = clientSecret;\n msalApp = await getConfidentialApp(options);\n } else {\n msalApp = await getPublicApp(options);\n }\n\n return withSilentAuthentication(msalApp, scopes, options, () => {\n return msalApp.acquireTokenByCode({\n scopes,\n redirectUri,\n code: authorizationCode,\n authority: calculateRequestAuthority(options),\n claims: options?.claims,\n });\n });\n }\n\n async function getTokenOnBehalfOf(\n scopes: string[],\n userAssertionToken: string,\n clientCredentials: string | CertificateParts | (() => Promise),\n options: GetTokenOptions = {},\n ): Promise {\n msalLogger.getToken.info(`Attempting to acquire token on behalf of another user`);\n\n if (typeof clientCredentials === \"string\") {\n // Client secret\n msalLogger.getToken.info(`Using client secret for on behalf of flow`);\n state.msalConfig.auth.clientSecret = clientCredentials;\n } else if (typeof clientCredentials === \"function\") {\n // Client Assertion\n msalLogger.getToken.info(`Using client assertion callback for on behalf of flow`);\n state.msalConfig.auth.clientAssertion = clientCredentials;\n } else {\n // Client certificate\n msalLogger.getToken.info(`Using client certificate for on behalf of flow`);\n state.msalConfig.auth.clientCertificate = clientCredentials;\n }\n\n const msalApp = await getConfidentialApp(options);\n try {\n const response = await msalApp.acquireTokenOnBehalfOf({\n scopes,\n authority: calculateRequestAuthority(options),\n claims: options.claims,\n oboAssertion: userAssertionToken,\n });\n ensureValidMsalToken(scopes, response, options);\n\n msalLogger.getToken.info(formatSuccess(scopes));\n return {\n token: response.accessToken,\n expiresOnTimestamp: response.expiresOn.getTime(),\n refreshAfterTimestamp: response.refreshOn?.getTime(),\n tokenType: response.tokenType,\n } as AccessToken;\n } catch (err: any) {\n throw handleMsalError(scopes, err, options);\n }\n }\n\n async function getTokenByInteractiveRequest(\n scopes: string[],\n options: GetTokenInteractiveOptions = {},\n ): Promise {\n msalLogger.getToken.info(`Attempting to acquire token interactively`);\n\n const app = await getPublicApp(options);\n\n /**\n * A helper function that supports brokered authentication through the MSAL's public application.\n *\n * When options.useDefaultBrokerAccount is true, the method will attempt to authenticate using the default broker account.\n * If the default broker account is not available, the method will fall back to interactive authentication.\n */\n async function getBrokeredToken(\n useDefaultBrokerAccount: boolean,\n ): Promise {\n msalLogger.verbose(\"Authentication will resume through the broker\");\n const interactiveRequest = createBaseInteractiveRequest();\n if (state.pluginConfiguration.broker.parentWindowHandle) {\n interactiveRequest.windowHandle = Buffer.from(\n state.pluginConfiguration.broker.parentWindowHandle,\n );\n } else {\n // this is a bug, as the pluginConfiguration handler should validate this case.\n msalLogger.warning(\n \"Parent window handle is not specified for the broker. This may cause unexpected behavior. Please provide the parentWindowHandle.\",\n );\n }\n\n if (state.pluginConfiguration.broker.enableMsaPassthrough) {\n (interactiveRequest.tokenQueryParameters ??= {})[\"msal_request_type\"] =\n \"consumer_passthrough\";\n }\n if (useDefaultBrokerAccount) {\n interactiveRequest.prompt = \"none\";\n msalLogger.verbose(\"Attempting broker authentication using the default broker account\");\n } else {\n msalLogger.verbose(\"Attempting broker authentication without the default broker account\");\n }\n\n if (options.proofOfPossessionOptions) {\n interactiveRequest.shrNonce = options.proofOfPossessionOptions.nonce;\n interactiveRequest.authenticationScheme = \"pop\";\n interactiveRequest.resourceRequestMethod =\n options.proofOfPossessionOptions.resourceRequestMethod;\n interactiveRequest.resourceRequestUri = options.proofOfPossessionOptions.resourceRequestUrl;\n }\n try {\n return await app.acquireTokenInteractive(interactiveRequest);\n } catch (e: any) {\n msalLogger.verbose(`Failed to authenticate through the broker: ${e.message}`);\n // If we tried to use the default broker account and failed, fall back to interactive authentication\n if (useDefaultBrokerAccount) {\n return getBrokeredToken(/* useDefaultBrokerAccount: */ false);\n } else {\n throw e;\n }\n }\n }\n\n function createBaseInteractiveRequest(): msal.InteractiveRequest {\n return {\n openBrowser: async (url) => {\n const open = await import(\"open\");\n await open.default(url, { wait: true, newInstance: true });\n },\n scopes,\n authority: calculateRequestAuthority(options),\n claims: options?.claims,\n loginHint: options?.loginHint,\n errorTemplate: options?.browserCustomizationOptions?.errorMessage,\n successTemplate: options?.browserCustomizationOptions?.successMessage,\n prompt: options?.loginHint ? \"login\" : \"select_account\",\n };\n }\n\n return withSilentAuthentication(app, scopes, options, async () => {\n const interactiveRequest = createBaseInteractiveRequest();\n\n if (state.pluginConfiguration.broker.isEnabled) {\n return getBrokeredToken(state.pluginConfiguration.broker.useDefaultBrokerAccount ?? false);\n }\n if (options.proofOfPossessionOptions) {\n interactiveRequest.shrNonce = options.proofOfPossessionOptions.nonce;\n interactiveRequest.authenticationScheme = \"pop\";\n interactiveRequest.resourceRequestMethod =\n options.proofOfPossessionOptions.resourceRequestMethod;\n interactiveRequest.resourceRequestUri = options.proofOfPossessionOptions.resourceRequestUrl;\n }\n return app.acquireTokenInteractive(interactiveRequest);\n });\n }\n\n return {\n getActiveAccount,\n getTokenByClientSecret,\n getTokenByClientAssertion,\n getTokenByClientCertificate,\n getTokenByDeviceCode,\n getTokenByUsernamePassword,\n getTokenByAuthorizationCode,\n getTokenOnBehalfOf,\n getTokenByInteractiveRequest,\n };\n}\n", "// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { AccessToken, GetTokenOptions, TokenCredential } from \"@azure/core-auth\";\nimport type { MsalClient } from \"../msal/nodeFlows/msalClient.js\";\nimport { createMsalClient } from \"../msal/nodeFlows/msalClient.js\";\nimport {\n processMultiTenantRequest,\n resolveAdditionallyAllowedTenantIds,\n} from \"../util/tenantIdUtils.js\";\n\nimport type { ClientAssertionCredentialOptions } from \"./clientAssertionCredentialOptions.js\";\nimport { CredentialUnavailableError } from \"../errors.js\";\nimport { credentialLogger } from \"../util/logging.js\";\nimport { tracingClient } from \"../util/tracing.js\";\n\nconst logger = credentialLogger(\"ClientAssertionCredential\");\n\n/**\n * Authenticates a service principal with a JWT assertion.\n */\nexport class ClientAssertionCredential implements TokenCredential {\n private msalClient: MsalClient;\n private tenantId: string;\n private additionallyAllowedTenantIds: string[];\n private getAssertion: () => Promise;\n private options: ClientAssertionCredentialOptions;\n\n /**\n * Creates an instance of the ClientAssertionCredential with the details\n * needed to authenticate against Microsoft Entra ID with a client\n * assertion provided by the developer through the `getAssertion` function parameter.\n *\n * @param tenantId - The Microsoft Entra tenant (directory) ID.\n * @param clientId - The client (application) ID of an App Registration in the tenant.\n * @param getAssertion - A function that retrieves the assertion for the credential to use.\n * @param options - Options for configuring the client which makes the authentication request.\n */\n constructor(\n tenantId: string,\n clientId: string,\n getAssertion: () => Promise,\n options: ClientAssertionCredentialOptions = {},\n ) {\n if (!tenantId) {\n throw new CredentialUnavailableError(\n \"ClientAssertionCredential: tenantId is a required parameter.\",\n );\n }\n\n if (!clientId) {\n throw new CredentialUnavailableError(\n \"ClientAssertionCredential: clientId is a required parameter.\",\n );\n }\n\n if (!getAssertion) {\n throw new CredentialUnavailableError(\n \"ClientAssertionCredential: clientAssertion is a required parameter.\",\n );\n }\n this.tenantId = tenantId;\n this.additionallyAllowedTenantIds = resolveAdditionallyAllowedTenantIds(\n options?.additionallyAllowedTenants,\n );\n\n this.options = options;\n this.getAssertion = getAssertion;\n this.msalClient = createMsalClient(clientId, tenantId, {\n ...options,\n logger,\n tokenCredentialOptions: this.options,\n });\n }\n\n /**\n * Authenticates with Microsoft Entra ID and returns an access token if successful.\n * If authentication fails, a {@link CredentialUnavailableError} will be thrown with the details of the failure.\n *\n * @param scopes - The list of scopes for which the token will have access.\n * @param options - The options used to configure any requests this\n * TokenCredential implementation might make.\n */\n async getToken(scopes: string | string[], options: GetTokenOptions = {}): Promise {\n return tracingClient.withSpan(\n `${this.constructor.name}.getToken`,\n options,\n async (newOptions) => {\n newOptions.tenantId = processMultiTenantRequest(\n this.tenantId,\n newOptions,\n this.additionallyAllowedTenantIds,\n logger,\n );\n\n const arrayScopes = Array.isArray(scopes) ? scopes : [scopes];\n return this.msalClient.getTokenByClientAssertion(\n arrayScopes,\n this.getAssertion,\n newOptions,\n );\n },\n );\n }\n}\n", "// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { AccessToken, GetTokenOptions, TokenCredential } from \"@azure/core-auth\";\nimport { credentialLogger, processEnvVars } from \"../util/logging.js\";\n\nimport { ClientAssertionCredential } from \"./clientAssertionCredential.js\";\nimport { CredentialUnavailableError } from \"../errors.js\";\nimport type { WorkloadIdentityCredentialOptions } from \"./workloadIdentityCredentialOptions.js\";\nimport { checkTenantId } from \"../util/tenantIdUtils.js\";\nimport { readFile } from \"node:fs/promises\";\n\nconst credentialName = \"WorkloadIdentityCredential\";\n/**\n * Contains the list of all supported environment variable names so that an\n * appropriate error message can be generated when no credentials can be\n * configured.\n *\n * @internal\n */\nexport const SupportedWorkloadEnvironmentVariables = [\n \"AZURE_TENANT_ID\",\n \"AZURE_CLIENT_ID\",\n \"AZURE_FEDERATED_TOKEN_FILE\",\n];\nconst logger = credentialLogger(credentialName);\n/**\n * Workload Identity authentication is a feature in Azure that allows applications running on virtual machines (VMs)\n * to access other Azure resources without the need for a service principal or managed identity. With Workload Identity\n * authentication, applications authenticate themselves using their own identity, rather than using a shared service\n * principal or managed identity. Under the hood, Workload Identity authentication uses the concept of Service Account\n * Credentials (SACs), which are automatically created by Azure and stored securely in the VM. By using Workload\n * Identity authentication, you can avoid the need to manage and rotate service principals or managed identities for\n * each application on each VM. Additionally, because SACs are created automatically and managed by Azure, you don't\n * need to worry about storing and securing sensitive credentials themselves.\n * The WorkloadIdentityCredential supports Microsoft Entra Workload ID authentication on Azure Kubernetes and acquires\n * a token using the SACs available in the Azure Kubernetes environment.\n * Refer to Microsoft Entra\n * Workload ID for more information.\n */\nexport class WorkloadIdentityCredential implements TokenCredential {\n private client: ClientAssertionCredential | undefined;\n private azureFederatedTokenFileContent: string | undefined = undefined;\n private cacheDate: number | undefined = undefined;\n private federatedTokenFilePath: string | undefined;\n\n /**\n * WorkloadIdentityCredential supports Microsoft Entra Workload ID on Kubernetes.\n *\n * @param options - The identity client options to use for authentication.\n */\n constructor(options?: WorkloadIdentityCredentialOptions) {\n // Logging environment variables for error details\n const assignedEnv = processEnvVars(SupportedWorkloadEnvironmentVariables).assigned.join(\", \");\n logger.info(`Found the following environment variables: ${assignedEnv}`);\n\n const workloadIdentityCredentialOptions = options ?? {};\n const tenantId = workloadIdentityCredentialOptions.tenantId || process.env.AZURE_TENANT_ID;\n const clientId = workloadIdentityCredentialOptions.clientId || process.env.AZURE_CLIENT_ID;\n this.federatedTokenFilePath =\n workloadIdentityCredentialOptions.tokenFilePath || process.env.AZURE_FEDERATED_TOKEN_FILE;\n if (tenantId) {\n checkTenantId(logger, tenantId);\n }\n if (!clientId) {\n throw new CredentialUnavailableError(\n `${credentialName}: is unavailable. clientId is a required parameter. In DefaultAzureCredential and ManagedIdentityCredential, this can be provided as an environment variable - \"AZURE_CLIENT_ID\".\n See the troubleshooting guide for more information: https://aka.ms/azsdk/js/identity/workloadidentitycredential/troubleshoot`,\n );\n }\n\n if (!tenantId) {\n throw new CredentialUnavailableError(\n `${credentialName}: is unavailable. tenantId is a required parameter. In DefaultAzureCredential and ManagedIdentityCredential, this can be provided as an environment variable - \"AZURE_TENANT_ID\".\n See the troubleshooting guide for more information: https://aka.ms/azsdk/js/identity/workloadidentitycredential/troubleshoot`,\n );\n }\n\n if (!this.federatedTokenFilePath) {\n throw new CredentialUnavailableError(\n `${credentialName}: is unavailable. federatedTokenFilePath is a required parameter. In DefaultAzureCredential and ManagedIdentityCredential, this can be provided as an environment variable - \"AZURE_FEDERATED_TOKEN_FILE\".\n See the troubleshooting guide for more information: https://aka.ms/azsdk/js/identity/workloadidentitycredential/troubleshoot`,\n );\n }\n\n logger.info(\n `Invoking ClientAssertionCredential with tenant ID: ${tenantId}, clientId: ${workloadIdentityCredentialOptions.clientId} and federated token path: [REDACTED]`,\n );\n this.client = new ClientAssertionCredential(\n tenantId,\n clientId,\n this.readFileContents.bind(this),\n options,\n );\n }\n\n /**\n * Authenticates with Microsoft Entra ID and returns an access token if successful.\n * If authentication fails, a {@link CredentialUnavailableError} will be thrown with the details of the failure.\n *\n * @param scopes - The list of scopes for which the token will have access.\n * @param options - The options used to configure any requests this\n * TokenCredential implementation might make.\n */\n public async getToken(\n scopes: string | string[],\n options?: GetTokenOptions,\n ): Promise {\n if (!this.client) {\n const errorMessage = `${credentialName}: is unavailable. tenantId, clientId, and federatedTokenFilePath are required parameters. \n In DefaultAzureCredential and ManagedIdentityCredential, these can be provided as environment variables - \n \"AZURE_TENANT_ID\",\n \"AZURE_CLIENT_ID\",\n \"AZURE_FEDERATED_TOKEN_FILE\". See the troubleshooting guide for more information: https://aka.ms/azsdk/js/identity/workloadidentitycredential/troubleshoot`;\n logger.info(errorMessage);\n throw new CredentialUnavailableError(errorMessage);\n }\n logger.info(\"Invoking getToken() of Client Assertion Credential\");\n return this.client.getToken(scopes, options);\n }\n\n private async readFileContents(): Promise {\n // Cached assertions expire after 5 minutes\n if (this.cacheDate !== undefined && Date.now() - this.cacheDate >= 1000 * 60 * 5) {\n this.azureFederatedTokenFileContent = undefined;\n }\n if (!this.federatedTokenFilePath) {\n throw new CredentialUnavailableError(\n `${credentialName}: is unavailable. Invalid file path provided ${this.federatedTokenFilePath}.`,\n );\n }\n if (!this.azureFederatedTokenFileContent) {\n const file = await readFile(this.federatedTokenFilePath, \"utf8\");\n const value = file.trim();\n if (!value) {\n throw new CredentialUnavailableError(\n `${credentialName}: is unavailable. No content on the file ${this.federatedTokenFilePath}.`,\n );\n } else {\n this.azureFederatedTokenFileContent = value;\n this.cacheDate = Date.now();\n }\n }\n return this.azureFederatedTokenFileContent;\n }\n}\n", "// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { AccessToken, GetTokenOptions } from \"@azure/core-auth\";\nimport type { MSIConfiguration } from \"./models.js\";\nimport { WorkloadIdentityCredential } from \"../workloadIdentityCredential.js\";\nimport { credentialLogger } from \"../../util/logging.js\";\nimport type { WorkloadIdentityCredentialOptions } from \"../workloadIdentityCredentialOptions.js\";\n\nconst msiName = \"ManagedIdentityCredential - Token Exchange\";\nconst logger = credentialLogger(msiName);\n\n/**\n * Defines how to determine whether the token exchange MSI is available, and also how to retrieve a token from the token exchange MSI.\n *\n * Token exchange MSI (used by AKS) is the only MSI implementation handled entirely by Azure Identity.\n * The rest have been migrated to MSAL.\n */\nexport const tokenExchangeMsi = {\n name: \"tokenExchangeMsi\",\n async isAvailable(clientId?: string): Promise {\n const env = process.env;\n const result = Boolean(\n (clientId || env.AZURE_CLIENT_ID) &&\n env.AZURE_TENANT_ID &&\n process.env.AZURE_FEDERATED_TOKEN_FILE,\n );\n if (!result) {\n logger.info(\n `${msiName}: Unavailable. The environment variables needed are: AZURE_CLIENT_ID (or the client ID sent through the parameters), AZURE_TENANT_ID and AZURE_FEDERATED_TOKEN_FILE`,\n );\n }\n return result;\n },\n async getToken(\n configuration: MSIConfiguration,\n getTokenOptions: GetTokenOptions = {},\n ): Promise {\n const { scopes, clientId } = configuration;\n const identityClientTokenCredentialOptions = {};\n const workloadIdentityCredential = new WorkloadIdentityCredential({\n clientId,\n tenantId: process.env.AZURE_TENANT_ID,\n tokenFilePath: process.env.AZURE_FEDERATED_TOKEN_FILE,\n ...identityClientTokenCredentialOptions,\n disableInstanceDiscovery: true,\n } as WorkloadIdentityCredentialOptions);\n return workloadIdentityCredential.getToken(scopes, getTokenOptions);\n },\n};\n", "// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { AccessToken, GetTokenOptions, TokenCredential } from \"@azure/core-auth\";\n\nimport type { TokenCredentialOptions } from \"../../tokenCredentialOptions.js\";\nimport { getLogLevel } from \"@azure/logger\";\nimport { ManagedIdentityApplication } from \"@azure/msal-node\";\nimport { IdentityClient } from \"../../client/identityClient.js\";\nimport { AuthenticationRequiredError, CredentialUnavailableError } from \"../../errors.js\";\nimport { getMSALLogLevel, defaultLoggerCallback } from \"../../msal/utils.js\";\nimport { imdsRetryPolicy } from \"./imdsRetryPolicy.js\";\nimport type { MSIConfiguration } from \"./models.js\";\nimport { formatSuccess, formatError, credentialLogger } from \"../../util/logging.js\";\nimport { tracingClient } from \"../../util/tracing.js\";\nimport { imdsMsi } from \"./imdsMsi.js\";\nimport { tokenExchangeMsi } from \"./tokenExchangeMsi.js\";\nimport { mapScopesToResource, serviceFabricErrorMessage } from \"./utils.js\";\nimport type { MsalToken, ValidMsalToken } from \"../../msal/types.js\";\nimport type {\n ManagedIdentityCredentialClientIdOptions,\n ManagedIdentityCredentialObjectIdOptions,\n ManagedIdentityCredentialResourceIdOptions,\n} from \"./options.js\";\n\nconst logger = credentialLogger(\"ManagedIdentityCredential\");\n\n/**\n * Attempts authentication using a managed identity available at the deployment environment.\n * This authentication type works in Azure VMs, App Service instances, Azure Functions applications,\n * Azure Kubernetes Services, Azure Service Fabric instances and inside of the Azure Cloud Shell.\n *\n * More information about configuring managed identities can be found here:\n * https://learn.microsoft.com/azure/active-directory/managed-identities-azure-resources/overview\n */\nexport class ManagedIdentityCredential implements TokenCredential {\n private managedIdentityApp: ManagedIdentityApplication;\n private identityClient: IdentityClient;\n private clientId?: string;\n private resourceId?: string;\n private objectId?: string;\n private msiRetryConfig: MSIConfiguration[\"retryConfig\"] = {\n maxRetries: 5,\n startDelayInMs: 800,\n intervalIncrement: 2,\n };\n private isAvailableIdentityClient: IdentityClient;\n\n /**\n * Creates an instance of ManagedIdentityCredential with the client ID of a\n * user-assigned identity, or app registration (when working with AKS pod-identity).\n *\n * @param clientId - The client ID of the user-assigned identity, or app registration (when working with AKS pod-identity).\n * @param options - Options for configuring the client which makes the access token request.\n */\n constructor(clientId: string, options?: TokenCredentialOptions);\n /**\n * Creates an instance of ManagedIdentityCredential with a client ID\n *\n * @param options - Options for configuring the client which makes the access token request.\n */\n constructor(options?: ManagedIdentityCredentialClientIdOptions);\n /**\n * Creates an instance of ManagedIdentityCredential with a resource ID\n *\n * @param options - Options for configuring the resource which makes the access token request.\n */\n constructor(options?: ManagedIdentityCredentialResourceIdOptions);\n /**\n * Creates an instance of ManagedIdentityCredential with an object ID\n *\n * @param options - Options for configuring the resource which makes the access token request.\n */\n constructor(options?: ManagedIdentityCredentialObjectIdOptions);\n /**\n * @internal\n * @hidden\n */\n constructor(\n clientIdOrOptions?:\n | string\n | ManagedIdentityCredentialClientIdOptions\n | ManagedIdentityCredentialResourceIdOptions\n | ManagedIdentityCredentialObjectIdOptions,\n options?: TokenCredentialOptions,\n ) {\n let _options: TokenCredentialOptions;\n if (typeof clientIdOrOptions === \"string\") {\n this.clientId = clientIdOrOptions;\n _options = options ?? {};\n } else {\n this.clientId = (clientIdOrOptions as ManagedIdentityCredentialClientIdOptions)?.clientId;\n _options = clientIdOrOptions ?? {};\n }\n this.resourceId = (_options as ManagedIdentityCredentialResourceIdOptions)?.resourceId;\n this.objectId = (_options as ManagedIdentityCredentialObjectIdOptions)?.objectId;\n\n // For JavaScript users.\n const providedIds = [\n { key: \"clientId\", value: this.clientId },\n { key: \"resourceId\", value: this.resourceId },\n { key: \"objectId\", value: this.objectId },\n ].filter((id) => id.value);\n if (providedIds.length > 1) {\n throw new Error(\n `ManagedIdentityCredential: only one of 'clientId', 'resourceId', or 'objectId' can be provided. Received values: ${JSON.stringify(\n { clientId: this.clientId, resourceId: this.resourceId, objectId: this.objectId },\n )}`,\n );\n }\n\n // ManagedIdentity uses http for local requests\n _options.allowInsecureConnection = true;\n\n if (_options.retryOptions?.maxRetries !== undefined) {\n this.msiRetryConfig.maxRetries = _options.retryOptions.maxRetries;\n }\n\n this.identityClient = new IdentityClient({\n ..._options,\n additionalPolicies: [{ policy: imdsRetryPolicy(this.msiRetryConfig), position: \"perCall\" }],\n });\n\n this.managedIdentityApp = new ManagedIdentityApplication({\n managedIdentityIdParams: {\n userAssignedClientId: this.clientId,\n userAssignedResourceId: this.resourceId,\n userAssignedObjectId: this.objectId,\n },\n system: {\n disableInternalRetries: true,\n networkClient: this.identityClient,\n loggerOptions: {\n logLevel: getMSALLogLevel(getLogLevel()),\n piiLoggingEnabled: _options.loggingOptions?.enableUnsafeSupportLogging,\n loggerCallback: defaultLoggerCallback(logger),\n },\n },\n });\n\n this.isAvailableIdentityClient = new IdentityClient({\n ..._options,\n retryOptions: {\n maxRetries: 0,\n },\n });\n\n const managedIdentitySource = this.managedIdentityApp.getManagedIdentitySource();\n // CloudShell MSI will ignore any user-assigned identity passed as parameters. To avoid confusion, we prevent this from happening as early as possible.\n if (managedIdentitySource === \"CloudShell\") {\n if (this.clientId || this.resourceId || this.objectId) {\n logger.warning(\n `CloudShell MSI detected with user-provided IDs - throwing. Received values: ${JSON.stringify(\n {\n clientId: this.clientId,\n resourceId: this.resourceId,\n objectId: this.objectId,\n },\n )}.`,\n );\n throw new CredentialUnavailableError(\n \"ManagedIdentityCredential: Specifying a user-assigned managed identity is not supported for CloudShell at runtime. When using Managed Identity in CloudShell, omit the clientId, resourceId, and objectId parameters.\",\n );\n }\n }\n\n // ServiceFabric does not support specifying user-assigned managed identity by client ID or resource ID. The managed identity selected is based on the resource configuration.\n if (managedIdentitySource === \"ServiceFabric\") {\n if (this.clientId || this.resourceId || this.objectId) {\n logger.warning(\n `Service Fabric detected with user-provided IDs - throwing. Received values: ${JSON.stringify(\n {\n clientId: this.clientId,\n resourceId: this.resourceId,\n objectId: this.objectId,\n },\n )}.`,\n );\n throw new CredentialUnavailableError(\n `ManagedIdentityCredential: ${serviceFabricErrorMessage}`,\n );\n }\n }\n\n logger.info(`Using ${managedIdentitySource} managed identity.`);\n\n // Check if either clientId, resourceId or objectId was provided and log the value used\n if (providedIds.length === 1) {\n const { key, value } = providedIds[0];\n logger.info(`${managedIdentitySource} with ${key}: ${value}`);\n }\n }\n\n /**\n * Authenticates with Microsoft Entra ID and returns an access token if successful.\n * If authentication fails, a {@link CredentialUnavailableError} will be thrown with the details of the failure.\n * If an unexpected error occurs, an {@link AuthenticationError} will be thrown with the details of the failure.\n *\n * @param scopes - The list of scopes for which the token will have access.\n * @param options - The options used to configure any requests this\n * TokenCredential implementation might make.\n */\n public async getToken(\n scopes: string | string[],\n options: GetTokenOptions = {},\n ): Promise {\n logger.getToken.info(\"Using the MSAL provider for Managed Identity.\");\n const resource = mapScopesToResource(scopes);\n if (!resource) {\n throw new CredentialUnavailableError(\n `ManagedIdentityCredential: Multiple scopes are not supported. Scopes: ${JSON.stringify(\n scopes,\n )}`,\n );\n }\n\n return tracingClient.withSpan(\"ManagedIdentityCredential.getToken\", options, async () => {\n try {\n const isTokenExchangeMsi = await tokenExchangeMsi.isAvailable(this.clientId);\n\n // Most scenarios are handled by MSAL except for two:\n // AKS pod identity - MSAL does not implement the token exchange flow.\n // IMDS Endpoint probing - MSAL does not do any probing before trying to get a token.\n // As a DefaultAzureCredential optimization we probe the IMDS endpoint with a short timeout and no retries before actually trying to get a token\n // We will continue to implement these features in the Identity library.\n\n const identitySource = this.managedIdentityApp.getManagedIdentitySource();\n const isImdsMsi = identitySource === \"DefaultToImds\" || identitySource === \"Imds\"; // Neither actually checks that IMDS endpoint is available, just that it's the source the MSAL _would_ try to use.\n\n logger.getToken.info(`MSAL Identity source: ${identitySource}`);\n\n if (isTokenExchangeMsi) {\n // In the AKS scenario we will use the existing tokenExchangeMsi indefinitely.\n logger.getToken.info(\"Using the token exchange managed identity.\");\n const result = await tokenExchangeMsi.getToken({\n scopes,\n clientId: this.clientId,\n identityClient: this.identityClient,\n retryConfig: this.msiRetryConfig,\n resourceId: this.resourceId,\n });\n\n if (result === null) {\n throw new CredentialUnavailableError(\n \"Attempted to use the token exchange managed identity, but received a null response.\",\n );\n }\n\n return result;\n } else if (isImdsMsi) {\n // In the IMDS scenario we will probe the IMDS endpoint to ensure it's available before trying to get a token.\n // If the IMDS endpoint is not available and this is the source that MSAL will use, we will fail-fast with an error that tells DAC to move to the next credential.\n logger.getToken.info(\"Using the IMDS endpoint to probe for availability.\");\n const isAvailable = await imdsMsi.isAvailable({\n scopes,\n clientId: this.clientId,\n getTokenOptions: options,\n identityClient: this.isAvailableIdentityClient,\n resourceId: this.resourceId,\n });\n\n if (!isAvailable) {\n throw new CredentialUnavailableError(\n `Attempted to use the IMDS endpoint, but it is not available.`,\n );\n }\n }\n\n // If we got this far, it means:\n // - This is not a tokenExchangeMsi,\n // - We already probed for IMDS endpoint availability and failed-fast if it's unreachable.\n // We can proceed normally by calling MSAL for a token.\n logger.getToken.info(\"Calling into MSAL for managed identity token.\");\n const token = await this.managedIdentityApp.acquireToken({\n resource,\n });\n\n this.ensureValidMsalToken(scopes, token, options);\n logger.getToken.info(formatSuccess(scopes));\n\n return {\n expiresOnTimestamp: token.expiresOn.getTime(),\n token: token.accessToken,\n refreshAfterTimestamp: token.refreshOn?.getTime(),\n tokenType: \"Bearer\",\n } as AccessToken;\n } catch (err: any) {\n logger.getToken.error(formatError(scopes, err));\n\n // AuthenticationRequiredError described as Error to enforce authentication after trying to retrieve a token silently.\n // TODO: why would this _ever_ happen considering we're not trying the silent request in this flow?\n if (err.name === \"AuthenticationRequiredError\") {\n throw err;\n }\n\n if (isNetworkError(err)) {\n throw new CredentialUnavailableError(\n `ManagedIdentityCredential: Network unreachable. Message: ${err.message}`,\n { cause: err },\n );\n }\n\n throw new CredentialUnavailableError(\n `ManagedIdentityCredential: Authentication failed. Message ${err.message}`,\n { cause: err },\n );\n }\n });\n }\n\n /**\n * Ensures the validity of the MSAL token\n */\n private ensureValidMsalToken(\n scopes: string | string[],\n msalToken?: MsalToken,\n getTokenOptions?: GetTokenOptions,\n ): asserts msalToken is ValidMsalToken {\n const createError = (message: string): Error => {\n logger.getToken.info(message);\n return new AuthenticationRequiredError({\n scopes: Array.isArray(scopes) ? scopes : [scopes],\n getTokenOptions,\n message,\n });\n };\n if (!msalToken) {\n throw createError(\"No response.\");\n }\n if (!msalToken.expiresOn) {\n throw createError(`Response had no \"expiresOn\" property.`);\n }\n if (!msalToken.accessToken) {\n throw createError(`Response had no \"accessToken\" property.`);\n }\n }\n}\n\nfunction isNetworkError(err: any): boolean {\n // MSAL error\n if (err.errorCode === \"network_error\") {\n return true;\n }\n\n // Probe errors\n if (err.code === \"ENETUNREACH\" || err.code === \"EHOSTUNREACH\") {\n return true;\n }\n\n // This is a special case for Docker Desktop which responds with a 403 with a message that contains \"A socket operation was attempted to an unreachable network\" or \"A socket operation was attempted to an unreachable host\"\n // rather than just timing out, as expected.\n if (err.statusCode === 403 || err.code === 403) {\n if (err.message.includes(\"unreachable\")) {\n return true;\n }\n }\n\n return false;\n}\n", "// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { CredentialLogger } from \"./logging.js\";\nimport { formatError } from \"./logging.js\";\n\n/**\n * Ensures the scopes value is an array.\n * @internal\n */\nexport function ensureScopes(scopes: string | string[]): string[] {\n return Array.isArray(scopes) ? scopes : [scopes];\n}\n\n/**\n * Throws if the received scope is not valid.\n * @internal\n */\nexport function ensureValidScopeForDevTimeCreds(scope: string, logger: CredentialLogger): void {\n if (!scope.match(/^[0-9a-zA-Z-_.:/]+$/)) {\n const error = new Error(\"Invalid scope was specified by the user or calling client\");\n logger.getToken.info(formatError(scope, error));\n throw error;\n }\n}\n\n/**\n * Returns the resource out of a scope.\n * @internal\n */\nexport function getScopeResource(scope: string): string {\n return scope.replace(/\\/.default$/, \"\");\n}\n", "// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { AccessToken, GetTokenOptions, TokenCredential } from \"@azure/core-auth\";\nimport {\n checkTenantId,\n processMultiTenantRequest,\n resolveAdditionallyAllowedTenantIds,\n} from \"../util/tenantIdUtils.js\";\nimport { credentialLogger, formatError, formatSuccess } from \"../util/logging.js\";\nimport { ensureValidScopeForDevTimeCreds, getScopeResource } from \"../util/scopeUtils.js\";\n\nimport type { AzureCliCredentialOptions } from \"./azureCliCredentialOptions.js\";\nimport { CredentialUnavailableError } from \"../errors.js\";\nimport child_process from \"child_process\";\nimport { tracingClient } from \"../util/tracing.js\";\nimport { checkSubscription } from \"../util/subscriptionUtils.js\";\n\nconst logger = credentialLogger(\"AzureCliCredential\");\n\n/**\n * Mockable reference to the CLI credential cliCredentialFunctions\n * @internal\n */\nexport const cliCredentialInternals = {\n /**\n * @internal\n */\n getSafeWorkingDir(): string {\n if (process.platform === \"win32\") {\n let systemRoot = process.env.SystemRoot || process.env[\"SYSTEMROOT\"];\n if (!systemRoot) {\n logger.getToken.warning(\n \"The SystemRoot environment variable is not set. This may cause issues when using the Azure CLI credential.\",\n );\n\n systemRoot = \"C:\\\\Windows\";\n }\n return systemRoot;\n } else {\n return \"/bin\";\n }\n },\n\n /**\n * Gets the access token from Azure CLI\n * @param resource - The resource to use when getting the token\n * @internal\n */\n async getAzureCliAccessToken(\n resource: string,\n tenantId?: string,\n subscription?: string,\n timeout?: number,\n ): Promise<{ stdout: string; stderr: string; error: Error | null }> {\n let tenantSection: string[] = [];\n let subscriptionSection: string[] = [];\n if (tenantId) {\n tenantSection = [\"--tenant\", tenantId];\n }\n if (subscription) {\n // Add quotes around the subscription to handle subscriptions with spaces\n subscriptionSection = [\"--subscription\", `\"${subscription}\"`];\n }\n return new Promise((resolve, reject) => {\n try {\n child_process.execFile(\n \"az\",\n [\n \"account\",\n \"get-access-token\",\n \"--output\",\n \"json\",\n \"--resource\",\n resource,\n ...tenantSection,\n ...subscriptionSection,\n ],\n { cwd: cliCredentialInternals.getSafeWorkingDir(), shell: true, timeout },\n (error, stdout, stderr) => {\n resolve({ stdout: stdout, stderr: stderr, error });\n },\n );\n } catch (err: any) {\n reject(err);\n }\n });\n },\n};\n\n/**\n * This credential will use the currently logged-in user login information\n * via the Azure CLI ('az') commandline tool.\n * To do so, it will read the user access token and expire time\n * with Azure CLI command \"az account get-access-token\".\n */\nexport class AzureCliCredential implements TokenCredential {\n private tenantId?: string;\n private additionallyAllowedTenantIds: string[];\n private timeout?: number;\n private subscription?: string;\n\n /**\n * Creates an instance of the {@link AzureCliCredential}.\n *\n * To use this credential, ensure that you have already logged\n * in via the 'az' tool using the command \"az login\" from the commandline.\n *\n * @param options - Options, to optionally allow multi-tenant requests.\n */\n constructor(options?: AzureCliCredentialOptions) {\n if (options?.tenantId) {\n checkTenantId(logger, options?.tenantId);\n this.tenantId = options?.tenantId;\n }\n if (options?.subscription) {\n checkSubscription(logger, options?.subscription);\n this.subscription = options?.subscription;\n }\n this.additionallyAllowedTenantIds = resolveAdditionallyAllowedTenantIds(\n options?.additionallyAllowedTenants,\n );\n this.timeout = options?.processTimeoutInMs;\n }\n\n /**\n * Authenticates with Microsoft Entra ID and returns an access token if successful.\n * If authentication fails, a {@link CredentialUnavailableError} will be thrown with the details of the failure.\n *\n * @param scopes - The list of scopes for which the token will have access.\n * @param options - The options used to configure any requests this\n * TokenCredential implementation might make.\n */\n public async getToken(\n scopes: string | string[],\n options: GetTokenOptions = {},\n ): Promise {\n const tenantId = processMultiTenantRequest(\n this.tenantId,\n options,\n this.additionallyAllowedTenantIds,\n );\n if (tenantId) {\n checkTenantId(logger, tenantId);\n }\n if (this.subscription) {\n checkSubscription(logger, this.subscription);\n }\n const scope = typeof scopes === \"string\" ? scopes : scopes[0];\n logger.getToken.info(`Using the scope ${scope}`);\n\n return tracingClient.withSpan(`${this.constructor.name}.getToken`, options, async () => {\n try {\n ensureValidScopeForDevTimeCreds(scope, logger);\n const resource = getScopeResource(scope);\n const obj = await cliCredentialInternals.getAzureCliAccessToken(\n resource,\n tenantId,\n this.subscription,\n this.timeout,\n );\n const specificScope = obj.stderr?.match(\"(.*)az login --scope(.*)\");\n const isLoginError = obj.stderr?.match(\"(.*)az login(.*)\") && !specificScope;\n const isNotInstallError =\n obj.stderr?.match(\"az:(.*)not found\") || obj.stderr?.startsWith(\"'az' is not recognized\");\n\n if (isNotInstallError) {\n const error = new CredentialUnavailableError(\n \"Azure CLI could not be found. Please visit https://aka.ms/azure-cli for installation instructions and then, once installed, authenticate to your Azure account using 'az login'.\",\n );\n logger.getToken.info(formatError(scopes, error));\n throw error;\n }\n if (isLoginError) {\n const error = new CredentialUnavailableError(\n \"Please run 'az login' from a command prompt to authenticate before using this credential.\",\n );\n logger.getToken.info(formatError(scopes, error));\n throw error;\n }\n try {\n const responseData = obj.stdout;\n const response: AccessToken = this.parseRawResponse(responseData);\n logger.getToken.info(formatSuccess(scopes));\n return response;\n } catch (e: any) {\n if (obj.stderr) {\n throw new CredentialUnavailableError(obj.stderr);\n }\n throw e;\n }\n } catch (err: any) {\n const error =\n err.name === \"CredentialUnavailableError\"\n ? err\n : new CredentialUnavailableError(\n (err as Error).message || \"Unknown error while trying to retrieve the access token\",\n );\n logger.getToken.info(formatError(scopes, error));\n throw error;\n }\n });\n }\n\n /**\n * Parses the raw JSON response from the Azure CLI into a usable AccessToken object\n *\n * @param rawResponse - The raw JSON response from the Azure CLI\n * @returns An access token with the expiry time parsed from the raw response\n *\n * The expiryTime of the credential's access token, in milliseconds, is calculated as follows:\n *\n * When available, expires_on (introduced in Azure CLI v2.54.0) will be preferred. Otherwise falls back to expiresOn.\n */\n private parseRawResponse(rawResponse: string): AccessToken {\n const response: any = JSON.parse(rawResponse);\n const token = response.accessToken;\n // if available, expires_on will be a number representing seconds since epoch.\n // ensure it's a number or NaN\n let expiresOnTimestamp = Number.parseInt(response.expires_on, 10) * 1000;\n if (!isNaN(expiresOnTimestamp)) {\n logger.getToken.info(\"expires_on is available and is valid, using it\");\n return {\n token,\n expiresOnTimestamp,\n tokenType: \"Bearer\",\n };\n }\n\n // fallback to the older expiresOn - an RFC3339 date string\n expiresOnTimestamp = new Date(response.expiresOn).getTime();\n\n // ensure expiresOn is well-formatted\n if (isNaN(expiresOnTimestamp)) {\n throw new CredentialUnavailableError(\n `Unexpected response from Azure CLI when getting token. Expected \"expiresOn\" to be a RFC3339 date string. Got: \"${response.expiresOn}\"`,\n );\n }\n\n return {\n token,\n expiresOnTimestamp,\n tokenType: \"Bearer\",\n };\n }\n}\n", "// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { CredentialLogger } from \"./logging.js\";\nimport { formatError } from \"./logging.js\";\n\n/**\n * @internal\n */\nexport function checkSubscription(logger: CredentialLogger, subscription: string): void {\n if (!subscription.match(/^[0-9a-zA-Z-._ ]+$/)) {\n const error = new Error(\n `Subscription '${subscription}' contains invalid characters. If this is the name of a subscription, use ` +\n `its ID instead. You can locate your subscription by following the instructions listed here: ` +\n `https://learn.microsoft.com/azure/azure-portal/get-subscription-tenant-id`,\n );\n logger.info(formatError(\"\", error));\n throw error;\n }\n}\n", "// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { AccessToken, GetTokenOptions, TokenCredential } from \"@azure/core-auth\";\nimport { credentialLogger, formatError, formatSuccess } from \"../util/logging.js\";\nimport type { AzureDeveloperCliCredentialOptions } from \"./azureDeveloperCliCredentialOptions.js\";\nimport { CredentialUnavailableError } from \"../errors.js\";\nimport child_process from \"child_process\";\nimport {\n checkTenantId,\n processMultiTenantRequest,\n resolveAdditionallyAllowedTenantIds,\n} from \"../util/tenantIdUtils.js\";\nimport { tracingClient } from \"../util/tracing.js\";\nimport { ensureValidScopeForDevTimeCreds } from \"../util/scopeUtils.js\";\n\nconst logger = credentialLogger(\"AzureDeveloperCliCredential\");\n\n/**\n * Mockable reference to the Developer CLI credential cliCredentialFunctions\n * @internal\n */\nexport const developerCliCredentialInternals = {\n /**\n * @internal\n */\n getSafeWorkingDir(): string {\n if (process.platform === \"win32\") {\n let systemRoot = process.env.SystemRoot || process.env[\"SYSTEMROOT\"];\n if (!systemRoot) {\n logger.getToken.warning(\n \"The SystemRoot environment variable is not set. This may cause issues when using the Azure Developer CLI credential.\",\n );\n\n systemRoot = \"C:\\\\Windows\";\n }\n\n return systemRoot;\n } else {\n return \"/bin\";\n }\n },\n\n /**\n * Gets the access token from Azure Developer CLI\n * @param scopes - The scopes to use when getting the token\n * @internal\n */\n async getAzdAccessToken(\n scopes: string[],\n tenantId?: string,\n timeout?: number,\n ): Promise<{ stdout: string; stderr: string; error: Error | null }> {\n let tenantSection: string[] = [];\n if (tenantId) {\n tenantSection = [\"--tenant-id\", tenantId];\n }\n return new Promise((resolve, reject) => {\n try {\n child_process.execFile(\n \"azd\",\n [\n \"auth\",\n \"token\",\n \"--output\",\n \"json\",\n ...scopes.reduce(\n (previous, current) => previous.concat(\"--scope\", current),\n [],\n ),\n ...tenantSection,\n ],\n {\n cwd: developerCliCredentialInternals.getSafeWorkingDir(),\n timeout,\n },\n (error, stdout, stderr) => {\n resolve({ stdout, stderr, error });\n },\n );\n } catch (err: any) {\n reject(err);\n }\n });\n },\n};\n\n/**\n * Azure Developer CLI is a command-line interface tool that allows developers to create, manage, and deploy\n * resources in Azure. It's built on top of the Azure CLI and provides additional functionality specific\n * to Azure developers. It allows users to authenticate as a user and/or a service principal against\n * Microsoft Entra ID. The\n * AzureDeveloperCliCredential authenticates in a development environment and acquires a token on behalf of\n * the logged-in user or service principal in the Azure Developer CLI. It acts as the Azure Developer CLI logged in user or\n * service principal and executes an Azure CLI command underneath to authenticate the application against\n * Microsoft Entra ID.\n *\n *

Configure AzureDeveloperCliCredential

\n *\n * To use this credential, the developer needs to authenticate locally in Azure Developer CLI using one of the\n * commands below:\n *\n *
    \n *
  1. Run \"azd auth login\" in Azure Developer CLI to authenticate interactively as a user.
  2. \n *
  3. Run \"azd auth login --client-id clientID --client-secret clientSecret\n * --tenant-id tenantID\" to authenticate as a service principal.
  4. \n *
\n *\n * You may need to repeat this process after a certain time period, depending on the refresh token validity in your\n * organization. Generally, the refresh token validity period is a few weeks to a few months.\n * AzureDeveloperCliCredential will prompt you to sign in again.\n */\nexport class AzureDeveloperCliCredential implements TokenCredential {\n private tenantId?: string;\n private additionallyAllowedTenantIds: string[];\n private timeout?: number;\n\n /**\n * Creates an instance of the {@link AzureDeveloperCliCredential}.\n *\n * To use this credential, ensure that you have already logged\n * in via the 'azd' tool using the command \"azd auth login\" from the commandline.\n *\n * @param options - Options, to optionally allow multi-tenant requests.\n */\n constructor(options?: AzureDeveloperCliCredentialOptions) {\n if (options?.tenantId) {\n checkTenantId(logger, options?.tenantId);\n this.tenantId = options?.tenantId;\n }\n this.additionallyAllowedTenantIds = resolveAdditionallyAllowedTenantIds(\n options?.additionallyAllowedTenants,\n );\n this.timeout = options?.processTimeoutInMs;\n }\n\n /**\n * Authenticates with Microsoft Entra ID and returns an access token if successful.\n * If authentication fails, a {@link CredentialUnavailableError} will be thrown with the details of the failure.\n *\n * @param scopes - The list of scopes for which the token will have access.\n * @param options - The options used to configure any requests this\n * TokenCredential implementation might make.\n */\n public async getToken(\n scopes: string | string[],\n options: GetTokenOptions = {},\n ): Promise {\n const tenantId = processMultiTenantRequest(\n this.tenantId,\n options,\n this.additionallyAllowedTenantIds,\n );\n if (tenantId) {\n checkTenantId(logger, tenantId);\n }\n let scopeList: string[];\n if (typeof scopes === \"string\") {\n scopeList = [scopes];\n } else {\n scopeList = scopes;\n }\n logger.getToken.info(`Using the scopes ${scopes}`);\n\n return tracingClient.withSpan(`${this.constructor.name}.getToken`, options, async () => {\n try {\n scopeList.forEach((scope) => {\n ensureValidScopeForDevTimeCreds(scope, logger);\n });\n const obj = await developerCliCredentialInternals.getAzdAccessToken(\n scopeList,\n tenantId,\n this.timeout,\n );\n const isNotLoggedInError =\n obj.stderr?.match(\"not logged in, run `azd login` to login\") ||\n obj.stderr?.match(\"not logged in, run `azd auth login` to login\");\n const isNotInstallError =\n obj.stderr?.match(\"azd:(.*)not found\") ||\n obj.stderr?.startsWith(\"'azd' is not recognized\");\n\n if (isNotInstallError || (obj.error && (obj.error as any).code === \"ENOENT\")) {\n const error = new CredentialUnavailableError(\n \"Azure Developer CLI couldn't be found. To mitigate this issue, see the troubleshooting guidelines at https://aka.ms/azsdk/js/identity/azdevclicredential/troubleshoot.\",\n );\n logger.getToken.info(formatError(scopes, error));\n throw error;\n }\n\n if (isNotLoggedInError) {\n const error = new CredentialUnavailableError(\n \"Please run 'azd auth login' from a command prompt to authenticate before using this credential. For more information, see the troubleshooting guidelines at https://aka.ms/azsdk/js/identity/azdevclicredential/troubleshoot.\",\n );\n logger.getToken.info(formatError(scopes, error));\n throw error;\n }\n\n try {\n const resp: { token: string; expiresOn: string } = JSON.parse(obj.stdout);\n logger.getToken.info(formatSuccess(scopes));\n return {\n token: resp.token,\n expiresOnTimestamp: new Date(resp.expiresOn).getTime(),\n tokenType: \"Bearer\",\n } as AccessToken;\n } catch (e: any) {\n if (obj.stderr) {\n throw new CredentialUnavailableError(obj.stderr);\n }\n throw e;\n }\n } catch (err: any) {\n const error =\n err.name === \"CredentialUnavailableError\"\n ? err\n : new CredentialUnavailableError(\n (err as Error).message || \"Unknown error while trying to retrieve the access token\",\n );\n logger.getToken.info(formatError(scopes, error));\n throw error;\n }\n });\n }\n}\n", "// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport * as childProcess from \"child_process\";\n\n/**\n * Easy to mock childProcess utils.\n * @internal\n */\nexport const processUtils = {\n /**\n * Promisifying childProcess.execFile\n * @internal\n */\n execFile(\n file: string,\n params: string[],\n options?: childProcess.ExecFileOptionsWithStringEncoding,\n ): Promise {\n return new Promise((resolve, reject) => {\n childProcess.execFile(file, params, options, (error, stdout, stderr) => {\n if (Buffer.isBuffer(stdout)) {\n stdout = stdout.toString(\"utf8\");\n }\n if (Buffer.isBuffer(stderr)) {\n stderr = stderr.toString(\"utf8\");\n }\n if (stderr || error) {\n reject(stderr ? new Error(stderr) : error);\n } else {\n resolve(stdout);\n }\n });\n });\n },\n};\n", "// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { AccessToken, GetTokenOptions, TokenCredential } from \"@azure/core-auth\";\nimport {\n checkTenantId,\n processMultiTenantRequest,\n resolveAdditionallyAllowedTenantIds,\n} from \"../util/tenantIdUtils.js\";\nimport { credentialLogger, formatError, formatSuccess } from \"../util/logging.js\";\nimport { ensureValidScopeForDevTimeCreds, getScopeResource } from \"../util/scopeUtils.js\";\n\nimport type { AzurePowerShellCredentialOptions } from \"./azurePowerShellCredentialOptions.js\";\nimport { CredentialUnavailableError } from \"../errors.js\";\nimport { processUtils } from \"../util/processUtils.js\";\nimport { tracingClient } from \"../util/tracing.js\";\n\nconst logger = credentialLogger(\"AzurePowerShellCredential\");\n\nconst isWindows = process.platform === \"win32\";\n\n/**\n * Returns a platform-appropriate command name by appending \".exe\" on Windows.\n *\n * @internal\n */\nexport function formatCommand(commandName: string): string {\n if (isWindows) {\n return `${commandName}.exe`;\n } else {\n return commandName;\n }\n}\n\n/**\n * Receives a list of commands to run, executes them, then returns the outputs.\n * If anything fails, an error is thrown.\n * @internal\n */\nasync function runCommands(commands: string[][], timeout?: number): Promise {\n const results: string[] = [];\n\n for (const command of commands) {\n const [file, ...parameters] = command;\n const result = (await processUtils.execFile(file, parameters, {\n encoding: \"utf8\",\n timeout,\n })) as string;\n\n results.push(result);\n }\n\n return results;\n}\n\n/**\n * Known PowerShell errors\n * @internal\n */\nexport const powerShellErrors = {\n login: \"Run Connect-AzAccount to login\",\n installed:\n \"The specified module 'Az.Accounts' with version '2.2.0' was not loaded because no valid module file was found in any module directory\",\n};\n\n/**\n * Messages to use when throwing in this credential.\n * @internal\n */\nexport const powerShellPublicErrorMessages = {\n login:\n \"Please run 'Connect-AzAccount' from PowerShell to authenticate before using this credential.\",\n installed: `The 'Az.Account' module >= 2.2.0 is not installed. Install the Azure Az PowerShell module with: \"Install-Module -Name Az -Scope CurrentUser -Repository PSGallery -Force\".`,\n troubleshoot: `To troubleshoot, visit https://aka.ms/azsdk/js/identity/powershellcredential/troubleshoot.`,\n};\n\n// PowerShell Azure User not logged in error check.\nconst isLoginError: (err: Error) => RegExpMatchArray | null = (err: Error) =>\n err.message.match(`(.*)${powerShellErrors.login}(.*)`);\n\n// Az Module not Installed in Azure PowerShell check.\nconst isNotInstalledError: (err: Error) => RegExpMatchArray | null = (err: Error) =>\n err.message.match(powerShellErrors.installed);\n\n/**\n * The PowerShell commands to be tried, in order.\n *\n * @internal\n */\nexport const commandStack = [formatCommand(\"pwsh\")];\n\nif (isWindows) {\n commandStack.push(formatCommand(\"powershell\"));\n}\n\n/**\n * This credential will use the currently logged-in user information from the\n * Azure PowerShell module. To do so, it will read the user access token and\n * expire time with Azure PowerShell command `Get-AzAccessToken -ResourceUrl {ResourceScope}`\n */\nexport class AzurePowerShellCredential implements TokenCredential {\n private tenantId?: string;\n private additionallyAllowedTenantIds: string[];\n private timeout?: number;\n\n /**\n * Creates an instance of the {@link AzurePowerShellCredential}.\n *\n * To use this credential:\n * - Install the Azure Az PowerShell module with:\n * `Install-Module -Name Az -Scope CurrentUser -Repository PSGallery -Force`.\n * - You have already logged in to Azure PowerShell using the command\n * `Connect-AzAccount` from the command line.\n *\n * @param options - Options, to optionally allow multi-tenant requests.\n */\n constructor(options?: AzurePowerShellCredentialOptions) {\n if (options?.tenantId) {\n checkTenantId(logger, options?.tenantId);\n this.tenantId = options?.tenantId;\n }\n this.additionallyAllowedTenantIds = resolveAdditionallyAllowedTenantIds(\n options?.additionallyAllowedTenants,\n );\n this.timeout = options?.processTimeoutInMs;\n }\n\n /**\n * Gets the access token from Azure PowerShell\n * @param resource - The resource to use when getting the token\n */\n private async getAzurePowerShellAccessToken(\n resource: string,\n tenantId?: string,\n timeout?: number,\n ): Promise<{ Token: string; ExpiresOn: string }> {\n // Clone the stack to avoid mutating it while iterating\n for (const powerShellCommand of [...commandStack]) {\n try {\n await runCommands([[powerShellCommand, \"/?\"]], timeout);\n } catch (e: any) {\n // Remove this credential from the original stack so that we don't try it again.\n commandStack.shift();\n continue;\n }\n\n const results = await runCommands([\n [\n powerShellCommand,\n \"-NoProfile\",\n \"-NonInteractive\",\n \"-Command\",\n `\n $tenantId = \"${tenantId ?? \"\"}\"\n $m = Import-Module Az.Accounts -MinimumVersion 2.2.0 -PassThru\n $useSecureString = $m.Version -ge [version]'2.17.0' -and $m.Version -lt [version]'5.0.0'\n\n $params = @{\n ResourceUrl = \"${resource}\"\n }\n\n if ($tenantId.Length -gt 0) {\n $params[\"TenantId\"] = $tenantId\n }\n\n if ($useSecureString) {\n $params[\"AsSecureString\"] = $true\n }\n\n $token = Get-AzAccessToken @params\n\n $result = New-Object -TypeName PSObject\n $result | Add-Member -MemberType NoteProperty -Name ExpiresOn -Value $token.ExpiresOn\n\n if ($token.Token -is [System.Security.SecureString]) {\n if ($PSVersionTable.PSVersion.Major -lt 7) {\n $ssPtr = [System.Runtime.InteropServices.Marshal]::SecureStringToBSTR($token.Token)\n try {\n $result | Add-Member -MemberType NoteProperty -Name Token -Value ([System.Runtime.InteropServices.Marshal]::PtrToStringBSTR($ssPtr))\n }\n finally {\n [System.Runtime.InteropServices.Marshal]::ZeroFreeBSTR($ssPtr)\n }\n }\n else {\n $result | Add-Member -MemberType NoteProperty -Name Token -Value ($token.Token | ConvertFrom-SecureString -AsPlainText)\n }\n }\n else {\n $result | Add-Member -MemberType NoteProperty -Name Token -Value $token.Token\n }\n\n Write-Output (ConvertTo-Json $result)\n `,\n ],\n ]);\n\n const result = results[0];\n return parseJsonToken(result);\n }\n throw new Error(`Unable to execute PowerShell. Ensure that it is installed in your system`);\n }\n\n /**\n * Authenticates with Microsoft Entra ID and returns an access token if successful.\n * If the authentication cannot be performed through PowerShell, a {@link CredentialUnavailableError} will be thrown.\n *\n * @param scopes - The list of scopes for which the token will have access.\n * @param options - The options used to configure any requests this TokenCredential implementation might make.\n */\n public async getToken(\n scopes: string | string[],\n options: GetTokenOptions = {},\n ): Promise {\n return tracingClient.withSpan(`${this.constructor.name}.getToken`, options, async () => {\n const tenantId = processMultiTenantRequest(\n this.tenantId,\n options,\n this.additionallyAllowedTenantIds,\n );\n const scope = typeof scopes === \"string\" ? scopes : scopes[0];\n if (tenantId) {\n checkTenantId(logger, tenantId);\n }\n try {\n ensureValidScopeForDevTimeCreds(scope, logger);\n logger.getToken.info(`Using the scope ${scope}`);\n const resource = getScopeResource(scope);\n const response = await this.getAzurePowerShellAccessToken(resource, tenantId, this.timeout);\n logger.getToken.info(formatSuccess(scopes));\n return {\n token: response.Token,\n expiresOnTimestamp: new Date(response.ExpiresOn).getTime(),\n tokenType: \"Bearer\",\n } as AccessToken;\n } catch (err: any) {\n if (isNotInstalledError(err)) {\n const error = new CredentialUnavailableError(powerShellPublicErrorMessages.installed);\n logger.getToken.info(formatError(scope, error));\n throw error;\n } else if (isLoginError(err)) {\n const error = new CredentialUnavailableError(powerShellPublicErrorMessages.login);\n logger.getToken.info(formatError(scope, error));\n throw error;\n }\n const error = new CredentialUnavailableError(\n `${err}. ${powerShellPublicErrorMessages.troubleshoot}`,\n );\n logger.getToken.info(formatError(scope, error));\n throw error;\n }\n });\n }\n}\n\n/**\n *\n * @internal\n */\nexport async function parseJsonToken(\n result: string,\n): Promise<{ Token: string; ExpiresOn: string }> {\n const jsonRegex = /{[^{}]*}/g;\n const matches = result.match(jsonRegex);\n let resultWithoutToken = result;\n if (matches) {\n try {\n for (const item of matches) {\n try {\n const jsonContent = JSON.parse(item);\n if (jsonContent?.Token) {\n resultWithoutToken = resultWithoutToken.replace(item, \"\");\n if (resultWithoutToken) {\n logger.getToken.warning(resultWithoutToken);\n }\n return jsonContent;\n }\n } catch (e) {\n continue;\n }\n }\n } catch (e: any) {\n throw new Error(`Unable to parse the output of PowerShell. Received output: ${result}`);\n }\n }\n throw new Error(`No access token found in the output. Received output: ${result}`);\n}\n", "// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { AccessToken, GetTokenOptions, TokenCredential } from \"@azure/core-auth\";\nimport { AggregateAuthenticationError, CredentialUnavailableError } from \"../errors.js\";\nimport { credentialLogger, formatError, formatSuccess } from \"../util/logging.js\";\nimport { tracingClient } from \"../util/tracing.js\";\n\n/**\n * @internal\n */\nexport const logger = credentialLogger(\"ChainedTokenCredential\");\n\n/**\n * Enables multiple `TokenCredential` implementations to be tried in order until\n * one of the getToken methods returns an access token. For more information, see\n * [ChainedTokenCredential overview](https://aka.ms/azsdk/js/identity/credential-chains#use-chainedtokencredential-for-granularity).\n */\nexport class ChainedTokenCredential implements TokenCredential {\n private _sources: TokenCredential[] = [];\n\n /**\n * Creates an instance of ChainedTokenCredential using the given credentials.\n *\n * @param sources - `TokenCredential` implementations to be tried in order.\n *\n * Example usage:\n * ```ts snippet:chained_token_credential_example\n * import { ClientSecretCredential, ChainedTokenCredential } from \"@azure/identity\";\n *\n * const tenantId = \"\";\n * const clientId = \"\";\n * const clientSecret = \"\";\n * const anotherClientId = \"\";\n * const anotherSecret = \"\";\n *\n * const firstCredential = new ClientSecretCredential(tenantId, clientId, clientSecret);\n * const secondCredential = new ClientSecretCredential(tenantId, anotherClientId, anotherSecret);\n *\n * const credentialChain = new ChainedTokenCredential(firstCredential, secondCredential);\n * ```\n */\n constructor(...sources: TokenCredential[]) {\n this._sources = sources;\n }\n\n /**\n * Returns the first access token returned by one of the chained\n * `TokenCredential` implementations. Throws an {@link AggregateAuthenticationError}\n * when one or more credentials throws an {@link AuthenticationError} and\n * no credentials have returned an access token.\n *\n * This method is called automatically by Azure SDK client libraries. You may call this method\n * directly, but you must also handle token caching and token refreshing.\n *\n * @param scopes - The list of scopes for which the token will have access.\n * @param options - The options used to configure any requests this\n * `TokenCredential` implementation might make.\n */\n async getToken(scopes: string | string[], options: GetTokenOptions = {}): Promise {\n const { token } = await this.getTokenInternal(scopes, options);\n return token;\n }\n\n private async getTokenInternal(\n scopes: string | string[],\n options: GetTokenOptions = {},\n ): Promise<{ token: AccessToken; successfulCredential: TokenCredential }> {\n let token: AccessToken | null = null;\n let successfulCredential: TokenCredential;\n const errors: Error[] = [];\n\n return tracingClient.withSpan(\n \"ChainedTokenCredential.getToken\",\n options,\n async (updatedOptions) => {\n for (let i = 0; i < this._sources.length && token === null; i++) {\n try {\n token = await this._sources[i].getToken(scopes, updatedOptions);\n successfulCredential = this._sources[i];\n } catch (err: any) {\n if (\n err.name === \"CredentialUnavailableError\" ||\n err.name === \"AuthenticationRequiredError\"\n ) {\n errors.push(err);\n } else {\n logger.getToken.info(formatError(scopes, err));\n throw err;\n }\n }\n }\n\n if (!token && errors.length > 0) {\n const err = new AggregateAuthenticationError(\n errors,\n \"ChainedTokenCredential authentication failed.\",\n );\n logger.getToken.info(formatError(scopes, err));\n throw err;\n }\n\n logger.getToken.info(\n `Result for ${successfulCredential.constructor.name}: ${formatSuccess(scopes)}`,\n );\n\n if (token === null) {\n throw new CredentialUnavailableError(\"Failed to retrieve a valid token\");\n }\n return { token, successfulCredential };\n },\n );\n }\n}\n", "// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { AccessToken, GetTokenOptions, TokenCredential } from \"@azure/core-auth\";\nimport type { MsalClient } from \"../msal/nodeFlows/msalClient.js\";\nimport { createMsalClient } from \"../msal/nodeFlows/msalClient.js\";\nimport { createHash, createPrivateKey } from \"node:crypto\";\nimport {\n processMultiTenantRequest,\n resolveAdditionallyAllowedTenantIds,\n} from \"../util/tenantIdUtils.js\";\n\nimport type { CertificateParts } from \"../msal/types.js\";\nimport type { ClientCertificateCredentialOptions } from \"./clientCertificateCredentialOptions.js\";\nimport { credentialLogger } from \"../util/logging.js\";\nimport { readFile } from \"node:fs/promises\";\nimport { tracingClient } from \"../util/tracing.js\";\nimport type {\n ClientCertificateCredentialPEMConfiguration,\n ClientCertificatePEMCertificate,\n ClientCertificatePEMCertificatePath,\n} from \"./clientCertificateCredentialModels.js\";\n\nconst credentialName = \"ClientCertificateCredential\";\nconst logger = credentialLogger(credentialName);\n\n/**\n * Enables authentication to Microsoft Entra ID using a PEM-encoded\n * certificate that is assigned to an App Registration. More information\n * on how to configure certificate authentication can be found here:\n *\n * https://learn.microsoft.com/azure/active-directory/develop/active-directory-certificate-credentials#register-your-certificate-with-azure-ad\n *\n */\nexport class ClientCertificateCredential implements TokenCredential {\n private tenantId: string;\n private additionallyAllowedTenantIds: string[];\n private certificateConfiguration: ClientCertificateCredentialPEMConfiguration;\n private sendCertificateChain?: boolean;\n private msalClient: MsalClient;\n\n /**\n * Creates an instance of the ClientCertificateCredential with the details\n * needed to authenticate against Microsoft Entra ID with a certificate.\n *\n * @param tenantId - The Microsoft Entra tenant (directory) ID.\n * @param clientId - The client (application) ID of an App Registration in the tenant.\n * @param certificatePath - The path to a PEM-encoded public/private key certificate on the filesystem.\n * Ensure that certificate is in PEM format and contains both the public and private keys.\n * @param options - Options for configuring the client which makes the authentication request.\n */\n constructor(\n tenantId: string,\n clientId: string,\n certificatePath: string,\n options?: ClientCertificateCredentialOptions,\n );\n /**\n * Creates an instance of the ClientCertificateCredential with the details\n * needed to authenticate against Microsoft Entra ID with a certificate.\n *\n * @param tenantId - The Microsoft Entra tenant (directory) ID.\n * @param clientId - The client (application) ID of an App Registration in the tenant.\n * @param configuration - Other parameters required, including the path of the certificate on the filesystem.\n * If the type is ignored, we will throw the value of the path to a PEM certificate.\n * @param options - Options for configuring the client which makes the authentication request.\n */\n constructor(\n tenantId: string,\n clientId: string,\n configuration: ClientCertificatePEMCertificatePath,\n options?: ClientCertificateCredentialOptions,\n );\n /**\n * Creates an instance of the ClientCertificateCredential with the details\n * needed to authenticate against Microsoft Entra ID with a certificate.\n *\n * @param tenantId - The Microsoft Entra tenant (directory) ID.\n * @param clientId - The client (application) ID of an App Registration in the tenant.\n * @param configuration - Other parameters required, including the PEM-encoded certificate as a string.\n * If the type is ignored, we will throw the value of the PEM-encoded certificate.\n * @param options - Options for configuring the client which makes the authentication request.\n */\n constructor(\n tenantId: string,\n clientId: string,\n configuration: ClientCertificatePEMCertificate,\n options?: ClientCertificateCredentialOptions,\n );\n constructor(\n tenantId: string,\n clientId: string,\n certificatePathOrConfiguration: string | ClientCertificateCredentialPEMConfiguration,\n options: ClientCertificateCredentialOptions = {},\n ) {\n if (!tenantId || !clientId) {\n throw new Error(`${credentialName}: tenantId and clientId are required parameters.`);\n }\n\n this.tenantId = tenantId;\n this.additionallyAllowedTenantIds = resolveAdditionallyAllowedTenantIds(\n options?.additionallyAllowedTenants,\n );\n\n this.sendCertificateChain = options.sendCertificateChain;\n\n this.certificateConfiguration = {\n ...(typeof certificatePathOrConfiguration === \"string\"\n ? {\n certificatePath: certificatePathOrConfiguration,\n }\n : certificatePathOrConfiguration),\n };\n const certificate = (this.certificateConfiguration as ClientCertificatePEMCertificate)\n .certificate;\n const certificatePath = (this.certificateConfiguration as ClientCertificatePEMCertificatePath)\n .certificatePath;\n if (!this.certificateConfiguration || !(certificate || certificatePath)) {\n throw new Error(\n `${credentialName}: Provide either a PEM certificate in string form, or the path to that certificate in the filesystem. To troubleshoot, visit https://aka.ms/azsdk/js/identity/serviceprincipalauthentication/troubleshoot.`,\n );\n }\n if (certificate && certificatePath) {\n throw new Error(\n `${credentialName}: To avoid unexpected behaviors, providing both the contents of a PEM certificate and the path to a PEM certificate is forbidden. To troubleshoot, visit https://aka.ms/azsdk/js/identity/serviceprincipalauthentication/troubleshoot.`,\n );\n }\n this.msalClient = createMsalClient(clientId, tenantId, {\n ...options,\n logger,\n tokenCredentialOptions: options,\n });\n }\n\n /**\n * Authenticates with Microsoft Entra ID and returns an access token if successful.\n * If authentication fails, a {@link CredentialUnavailableError} will be thrown with the details of the failure.\n *\n * @param scopes - The list of scopes for which the token will have access.\n * @param options - The options used to configure any requests this\n * TokenCredential implementation might make.\n */\n async getToken(scopes: string | string[], options: GetTokenOptions = {}): Promise {\n return tracingClient.withSpan(`${credentialName}.getToken`, options, async (newOptions) => {\n newOptions.tenantId = processMultiTenantRequest(\n this.tenantId,\n newOptions,\n this.additionallyAllowedTenantIds,\n logger,\n );\n\n const arrayScopes = Array.isArray(scopes) ? scopes : [scopes];\n const certificate = await this.buildClientCertificate();\n return this.msalClient.getTokenByClientCertificate(arrayScopes, certificate, newOptions);\n });\n }\n\n private async buildClientCertificate(): Promise {\n const parts = await parseCertificate(\n this.certificateConfiguration,\n this.sendCertificateChain ?? false,\n );\n\n let privateKey: string;\n if (this.certificateConfiguration.certificatePassword !== undefined) {\n privateKey = createPrivateKey({\n key: parts.certificateContents,\n passphrase: this.certificateConfiguration.certificatePassword,\n format: \"pem\",\n })\n .export({\n format: \"pem\",\n type: \"pkcs8\",\n })\n .toString();\n } else {\n privateKey = parts.certificateContents;\n }\n\n return {\n thumbprint: parts.thumbprint,\n thumbprintSha256: parts.thumbprintSha256,\n privateKey,\n x5c: parts.x5c,\n };\n }\n}\n\n/**\n * Parses a certificate into its relevant parts\n *\n * @param certificateConfiguration - The certificate contents or path to the certificate\n * @param sendCertificateChain - true if the entire certificate chain should be sent for SNI, false otherwise\n * @returns The parsed certificate parts and the certificate contents\n */\nexport async function parseCertificate(\n certificateConfiguration: ClientCertificateCredentialPEMConfiguration,\n sendCertificateChain: boolean,\n): Promise & { certificateContents: string }> {\n const certificate = (certificateConfiguration as ClientCertificatePEMCertificate).certificate;\n const certificatePath = (certificateConfiguration as ClientCertificatePEMCertificatePath)\n .certificatePath;\n const certificateContents = certificate || (await readFile(certificatePath!, \"utf8\"));\n const x5c = sendCertificateChain ? certificateContents : undefined;\n\n const certificatePattern =\n /(-+BEGIN CERTIFICATE-+)(\\n\\r?|\\r\\n?)([A-Za-z0-9+/\\n\\r]+=*)(\\n\\r?|\\r\\n?)(-+END CERTIFICATE-+)/g;\n const publicKeys: string[] = [];\n\n // Match all possible certificates, in the order they are in the file. These will form the chain that is used for x5c\n let match;\n do {\n match = certificatePattern.exec(certificateContents);\n if (match) {\n publicKeys.push(match[3]);\n }\n } while (match);\n\n if (publicKeys.length === 0) {\n throw new Error(\"The file at the specified path does not contain a PEM-encoded certificate.\");\n }\n\n const thumbprint = createHash(\"sha1\") // CodeQL [SM04514] Needed for backward compatibility reason\n .update(Buffer.from(publicKeys[0], \"base64\"))\n .digest(\"hex\")\n .toUpperCase();\n\n const thumbprintSha256 = createHash(\"sha256\")\n .update(Buffer.from(publicKeys[0], \"base64\"))\n .digest(\"hex\")\n .toUpperCase();\n\n return {\n certificateContents,\n thumbprintSha256,\n thumbprint,\n x5c,\n };\n}\n", "// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { AccessToken, GetTokenOptions, TokenCredential } from \"@azure/core-auth\";\nimport type { MsalClient } from \"../msal/nodeFlows/msalClient.js\";\nimport { createMsalClient } from \"../msal/nodeFlows/msalClient.js\";\nimport {\n processMultiTenantRequest,\n resolveAdditionallyAllowedTenantIds,\n} from \"../util/tenantIdUtils.js\";\n\nimport type { ClientSecretCredentialOptions } from \"./clientSecretCredentialOptions.js\";\nimport { CredentialUnavailableError } from \"../errors.js\";\nimport { credentialLogger } from \"../util/logging.js\";\nimport { ensureScopes } from \"../util/scopeUtils.js\";\nimport { tracingClient } from \"../util/tracing.js\";\n\nconst logger = credentialLogger(\"ClientSecretCredential\");\n\n/**\n * Enables authentication to Microsoft Entra ID using a client secret\n * that was generated for an App Registration. More information on how\n * to configure a client secret can be found here:\n *\n * https://learn.microsoft.com/entra/identity-platform/quickstart-configure-app-access-web-apis#add-credentials-to-your-web-application\n *\n */\nexport class ClientSecretCredential implements TokenCredential {\n private tenantId: string;\n private additionallyAllowedTenantIds: string[];\n private msalClient: MsalClient;\n private clientSecret: string;\n\n /**\n * Creates an instance of the ClientSecretCredential with the details\n * needed to authenticate against Microsoft Entra ID with a client\n * secret.\n *\n * @param tenantId - The Microsoft Entra tenant (directory) ID.\n * @param clientId - The client (application) ID of an App Registration in the tenant.\n * @param clientSecret - A client secret that was generated for the App Registration.\n * @param options - Options for configuring the client which makes the authentication request.\n */\n constructor(\n tenantId: string,\n clientId: string,\n clientSecret: string,\n options: ClientSecretCredentialOptions = {},\n ) {\n if (!tenantId) {\n throw new CredentialUnavailableError(\n \"ClientSecretCredential: tenantId is a required parameter. To troubleshoot, visit https://aka.ms/azsdk/js/identity/serviceprincipalauthentication/troubleshoot.\",\n );\n }\n\n if (!clientId) {\n throw new CredentialUnavailableError(\n \"ClientSecretCredential: clientId is a required parameter. To troubleshoot, visit https://aka.ms/azsdk/js/identity/serviceprincipalauthentication/troubleshoot.\",\n );\n }\n\n if (!clientSecret) {\n throw new CredentialUnavailableError(\n \"ClientSecretCredential: clientSecret is a required parameter. To troubleshoot, visit https://aka.ms/azsdk/js/identity/serviceprincipalauthentication/troubleshoot.\",\n );\n }\n\n this.clientSecret = clientSecret;\n this.tenantId = tenantId;\n this.additionallyAllowedTenantIds = resolveAdditionallyAllowedTenantIds(\n options?.additionallyAllowedTenants,\n );\n\n this.msalClient = createMsalClient(clientId, tenantId, {\n ...options,\n logger,\n tokenCredentialOptions: options,\n });\n }\n\n /**\n * Authenticates with Microsoft Entra ID and returns an access token if successful.\n * If authentication fails, a {@link CredentialUnavailableError} will be thrown with the details of the failure.\n *\n * @param scopes - The list of scopes for which the token will have access.\n * @param options - The options used to configure any requests this\n * TokenCredential implementation might make.\n */\n async getToken(scopes: string | string[], options: GetTokenOptions = {}): Promise {\n return tracingClient.withSpan(\n `${this.constructor.name}.getToken`,\n options,\n async (newOptions) => {\n newOptions.tenantId = processMultiTenantRequest(\n this.tenantId,\n newOptions,\n this.additionallyAllowedTenantIds,\n logger,\n );\n\n const arrayScopes = ensureScopes(scopes);\n return this.msalClient.getTokenByClientSecret(arrayScopes, this.clientSecret, newOptions);\n },\n );\n }\n}\n", "// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { AccessToken, GetTokenOptions, TokenCredential } from \"@azure/core-auth\";\nimport type { MsalClient } from \"../msal/nodeFlows/msalClient.js\";\nimport { createMsalClient } from \"../msal/nodeFlows/msalClient.js\";\nimport {\n processMultiTenantRequest,\n resolveAdditionallyAllowedTenantIds,\n} from \"../util/tenantIdUtils.js\";\n\nimport { CredentialUnavailableError } from \"../errors.js\";\nimport type { UsernamePasswordCredentialOptions } from \"./usernamePasswordCredentialOptions.js\";\nimport { credentialLogger } from \"../util/logging.js\";\nimport { ensureScopes } from \"../util/scopeUtils.js\";\nimport { tracingClient } from \"../util/tracing.js\";\n\nconst logger = credentialLogger(\"UsernamePasswordCredential\");\n\n/**\n * Enables authentication to Microsoft Entra ID with a user's\n * username and password. This credential requires a high degree of\n * trust so you should only use it when other, more secure credential\n * types can't be used.\n * @deprecated UsernamePasswordCredential is deprecated. Use a more secure credential. See https://aka.ms/azsdk/identity/mfa for details.\n */\nexport class UsernamePasswordCredential implements TokenCredential {\n private tenantId: string;\n private additionallyAllowedTenantIds: string[];\n private msalClient: MsalClient;\n private username: string;\n private password: string;\n\n /**\n * Creates an instance of the UsernamePasswordCredential with the details\n * needed to authenticate against Microsoft Entra ID with a username\n * and password.\n *\n * @param tenantId - The Microsoft Entra tenant (directory).\n * @param clientId - The client (application) ID of an App Registration in the tenant.\n * @param username - The user account's e-mail address (user name).\n * @param password - The user account's account password\n * @param options - Options for configuring the client which makes the authentication request.\n */\n constructor(\n tenantId: string,\n clientId: string,\n username: string,\n password: string,\n options: UsernamePasswordCredentialOptions = {},\n ) {\n if (!tenantId) {\n throw new CredentialUnavailableError(\n \"UsernamePasswordCredential: tenantId is a required parameter. To troubleshoot, visit https://aka.ms/azsdk/js/identity/usernamepasswordcredential/troubleshoot.\",\n );\n }\n\n if (!clientId) {\n throw new CredentialUnavailableError(\n \"UsernamePasswordCredential: clientId is a required parameter. To troubleshoot, visit https://aka.ms/azsdk/js/identity/usernamepasswordcredential/troubleshoot.\",\n );\n }\n\n if (!username) {\n throw new CredentialUnavailableError(\n \"UsernamePasswordCredential: username is a required parameter. To troubleshoot, visit https://aka.ms/azsdk/js/identity/usernamepasswordcredential/troubleshoot.\",\n );\n }\n\n if (!password) {\n throw new CredentialUnavailableError(\n \"UsernamePasswordCredential: password is a required parameter. To troubleshoot, visit https://aka.ms/azsdk/js/identity/usernamepasswordcredential/troubleshoot.\",\n );\n }\n\n this.tenantId = tenantId;\n this.additionallyAllowedTenantIds = resolveAdditionallyAllowedTenantIds(\n options?.additionallyAllowedTenants,\n );\n\n this.username = username;\n this.password = password;\n\n this.msalClient = createMsalClient(clientId, this.tenantId, {\n ...options,\n tokenCredentialOptions: options ?? {},\n });\n }\n\n /**\n * Authenticates with Microsoft Entra ID and returns an access token if successful.\n * If authentication fails, a {@link CredentialUnavailableError} will be thrown with the details of the failure.\n *\n * If the user provided the option `disableAutomaticAuthentication`,\n * once the token can't be retrieved silently,\n * this method won't attempt to request user interaction to retrieve the token.\n *\n * @param scopes - The list of scopes for which the token will have access.\n * @param options - The options used to configure any requests this\n * TokenCredential implementation might make.\n */\n async getToken(scopes: string | string[], options: GetTokenOptions = {}): Promise {\n return tracingClient.withSpan(\n `${this.constructor.name}.getToken`,\n options,\n async (newOptions) => {\n newOptions.tenantId = processMultiTenantRequest(\n this.tenantId,\n newOptions,\n this.additionallyAllowedTenantIds,\n logger,\n );\n\n const arrayScopes = ensureScopes(scopes);\n return this.msalClient.getTokenByUsernamePassword(\n arrayScopes,\n this.username,\n this.password,\n newOptions,\n );\n },\n );\n }\n}\n", "// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { AccessToken, GetTokenOptions, TokenCredential } from \"@azure/core-auth\";\nimport { AuthenticationError, CredentialUnavailableError } from \"../errors.js\";\nimport { credentialLogger, formatError, formatSuccess, processEnvVars } from \"../util/logging.js\";\n\nimport { ClientCertificateCredential } from \"./clientCertificateCredential.js\";\nimport { ClientSecretCredential } from \"./clientSecretCredential.js\";\nimport type { EnvironmentCredentialOptions } from \"./environmentCredentialOptions.js\";\nimport { UsernamePasswordCredential } from \"./usernamePasswordCredential.js\";\nimport { checkTenantId } from \"../util/tenantIdUtils.js\";\nimport { tracingClient } from \"../util/tracing.js\";\n\n/**\n * Contains the list of all supported environment variable names so that an\n * appropriate error message can be generated when no credentials can be\n * configured.\n *\n * @internal\n */\nexport const AllSupportedEnvironmentVariables = [\n \"AZURE_TENANT_ID\",\n \"AZURE_CLIENT_ID\",\n \"AZURE_CLIENT_SECRET\",\n \"AZURE_CLIENT_CERTIFICATE_PATH\",\n \"AZURE_CLIENT_CERTIFICATE_PASSWORD\",\n \"AZURE_USERNAME\",\n \"AZURE_PASSWORD\",\n \"AZURE_ADDITIONALLY_ALLOWED_TENANTS\",\n \"AZURE_CLIENT_SEND_CERTIFICATE_CHAIN\",\n];\n\nfunction getAdditionallyAllowedTenants(): string[] {\n const additionallyAllowedValues = process.env.AZURE_ADDITIONALLY_ALLOWED_TENANTS ?? \"\";\n return additionallyAllowedValues.split(\";\");\n}\n\nconst credentialName = \"EnvironmentCredential\";\nconst logger = credentialLogger(credentialName);\n\nexport function getSendCertificateChain(): boolean {\n const sendCertificateChain = (\n process.env.AZURE_CLIENT_SEND_CERTIFICATE_CHAIN ?? \"\"\n ).toLowerCase();\n const result = sendCertificateChain === \"true\" || sendCertificateChain === \"1\";\n logger.verbose(\n `AZURE_CLIENT_SEND_CERTIFICATE_CHAIN: ${process.env.AZURE_CLIENT_SEND_CERTIFICATE_CHAIN}; sendCertificateChain: ${result}`,\n );\n return result;\n}\n\n/**\n * Enables authentication to Microsoft Entra ID using a client secret or certificate.\n */\nexport class EnvironmentCredential implements TokenCredential {\n private _credential?:\n | ClientSecretCredential\n | ClientCertificateCredential\n | UsernamePasswordCredential = undefined;\n /**\n * Creates an instance of the EnvironmentCredential class and decides what credential to use depending on the available environment variables.\n *\n * Required environment variables:\n * - `AZURE_TENANT_ID`: The Microsoft Entra tenant (directory) ID.\n * - `AZURE_CLIENT_ID`: The client (application) ID of an App Registration in the tenant.\n *\n * If setting the AZURE_TENANT_ID, then you can also set the additionally allowed tenants\n * - `AZURE_ADDITIONALLY_ALLOWED_TENANTS`: For multi-tenant applications, specifies additional tenants for which the credential may acquire tokens with a single semicolon delimited string. Use * to allow all tenants.\n *\n * Environment variables used for client credential authentication:\n * - `AZURE_CLIENT_SECRET`: A client secret that was generated for the App Registration.\n * - `AZURE_CLIENT_CERTIFICATE_PATH`: The path to a PEM certificate to use during the authentication, instead of the client secret.\n * - `AZURE_CLIENT_CERTIFICATE_PASSWORD`: (optional) password for the certificate file.\n * - `AZURE_CLIENT_SEND_CERTIFICATE_CHAIN`: (optional) indicates that the certificate chain should be set in x5c header to support subject name / issuer based authentication.\n *\n * Username and password authentication is deprecated, since it doesn't support multifactor authentication (MFA). See https://aka.ms/azsdk/identity/mfa for more details. Users can still provide environment variables for this authentication method:\n * - `AZURE_USERNAME`: Username to authenticate with.\n * - `AZURE_PASSWORD`: Password to authenticate with.\n *\n * If the environment variables required to perform the authentication are missing, a {@link CredentialUnavailableError} will be thrown.\n * If the authentication fails, or if there's an unknown error, an {@link AuthenticationError} will be thrown.\n *\n * @param options - Options for configuring the client which makes the authentication request.\n */\n constructor(options?: EnvironmentCredentialOptions) {\n // Keep track of any missing environment variables for error details\n\n const assigned = processEnvVars(AllSupportedEnvironmentVariables).assigned.join(\", \");\n logger.info(`Found the following environment variables: ${assigned}`);\n\n const tenantId = process.env.AZURE_TENANT_ID,\n clientId = process.env.AZURE_CLIENT_ID,\n clientSecret = process.env.AZURE_CLIENT_SECRET;\n\n const additionallyAllowedTenantIds = getAdditionallyAllowedTenants();\n const sendCertificateChain = getSendCertificateChain();\n const newOptions = { ...options, additionallyAllowedTenantIds, sendCertificateChain };\n\n if (tenantId) {\n checkTenantId(logger, tenantId);\n }\n\n if (tenantId && clientId && clientSecret) {\n logger.info(\n `Invoking ClientSecretCredential with tenant ID: ${tenantId}, clientId: ${clientId} and clientSecret: [REDACTED]`,\n );\n this._credential = new ClientSecretCredential(tenantId, clientId, clientSecret, newOptions);\n return;\n }\n\n const certificatePath = process.env.AZURE_CLIENT_CERTIFICATE_PATH;\n const certificatePassword = process.env.AZURE_CLIENT_CERTIFICATE_PASSWORD;\n if (tenantId && clientId && certificatePath) {\n logger.info(\n `Invoking ClientCertificateCredential with tenant ID: ${tenantId}, clientId: ${clientId} and certificatePath: ${certificatePath}`,\n );\n this._credential = new ClientCertificateCredential(\n tenantId,\n clientId,\n { certificatePath, certificatePassword },\n newOptions,\n );\n return;\n }\n\n const username = process.env.AZURE_USERNAME;\n const password = process.env.AZURE_PASSWORD;\n if (tenantId && clientId && username && password) {\n logger.info(\n `Invoking UsernamePasswordCredential with tenant ID: ${tenantId}, clientId: ${clientId} and username: ${username}`,\n );\n\n logger.warning(\n \"Environment is configured to use username and password authentication. This authentication method is deprecated, as it doesn't support multifactor authentication (MFA). Use a more secure credential. For more details, see https://aka.ms/azsdk/identity/mfa.\",\n );\n this._credential = new UsernamePasswordCredential(\n tenantId,\n clientId,\n username,\n password,\n newOptions,\n );\n }\n }\n\n /**\n * Authenticates with Microsoft Entra ID and returns an access token if successful.\n *\n * @param scopes - The list of scopes for which the token will have access.\n * @param options - Optional parameters. See {@link GetTokenOptions}.\n */\n async getToken(scopes: string | string[], options: GetTokenOptions = {}): Promise {\n return tracingClient.withSpan(`${credentialName}.getToken`, options, async (newOptions) => {\n if (this._credential) {\n try {\n const result = await this._credential.getToken(scopes, newOptions);\n logger.getToken.info(formatSuccess(scopes));\n return result;\n } catch (err: any) {\n const authenticationError = new AuthenticationError(400, {\n error: `${credentialName} authentication failed. To troubleshoot, visit https://aka.ms/azsdk/js/identity/environmentcredential/troubleshoot.`,\n error_description: err.message.toString().split(\"More details:\").join(\"\"),\n });\n logger.getToken.info(formatError(scopes, authenticationError));\n throw authenticationError;\n }\n }\n throw new CredentialUnavailableError(\n `${credentialName} is unavailable. No underlying credential could be used. To troubleshoot, visit https://aka.ms/azsdk/js/identity/environmentcredential/troubleshoot.`,\n );\n });\n }\n}\n", "// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type {\n DefaultAzureCredentialClientIdOptions,\n DefaultAzureCredentialOptions,\n DefaultAzureCredentialResourceIdOptions,\n} from \"./defaultAzureCredentialOptions.js\";\nimport type {\n ManagedIdentityCredentialClientIdOptions,\n ManagedIdentityCredentialResourceIdOptions,\n} from \"./managedIdentityCredential/options.js\";\nimport { ManagedIdentityCredential } from \"./managedIdentityCredential/index.js\";\n\nimport { AzureCliCredential } from \"./azureCliCredential.js\";\nimport { AzureDeveloperCliCredential } from \"./azureDeveloperCliCredential.js\";\nimport { AzurePowerShellCredential } from \"./azurePowerShellCredential.js\";\nimport { ChainedTokenCredential } from \"./chainedTokenCredential.js\";\nimport { EnvironmentCredential } from \"./environmentCredential.js\";\nimport type { TokenCredential } from \"@azure/core-auth\";\nimport { WorkloadIdentityCredential } from \"./workloadIdentityCredential.js\";\nimport type { WorkloadIdentityCredentialOptions } from \"./workloadIdentityCredentialOptions.js\";\nimport { credentialLogger } from \"../util/logging.js\";\n\nconst logger = credentialLogger(\"DefaultAzureCredential\");\n\n/**\n * Creates a {@link ManagedIdentityCredential} from the provided options.\n * @param options - Options to configure the credential.\n *\n * @internal\n */\nexport function createDefaultManagedIdentityCredential(\n options:\n | DefaultAzureCredentialOptions\n | DefaultAzureCredentialResourceIdOptions\n | DefaultAzureCredentialClientIdOptions = {},\n): TokenCredential {\n options.retryOptions ??= {\n maxRetries: 5,\n retryDelayInMs: 800,\n };\n const managedIdentityClientId =\n (options as DefaultAzureCredentialClientIdOptions)?.managedIdentityClientId ??\n process.env.AZURE_CLIENT_ID;\n const workloadIdentityClientId =\n (options as DefaultAzureCredentialClientIdOptions)?.workloadIdentityClientId ??\n managedIdentityClientId;\n const managedResourceId = (options as DefaultAzureCredentialResourceIdOptions)\n ?.managedIdentityResourceId;\n const workloadFile = process.env.AZURE_FEDERATED_TOKEN_FILE;\n const tenantId = options?.tenantId ?? process.env.AZURE_TENANT_ID;\n if (managedResourceId) {\n const managedIdentityResourceIdOptions: ManagedIdentityCredentialResourceIdOptions = {\n ...options,\n resourceId: managedResourceId,\n };\n return new ManagedIdentityCredential(managedIdentityResourceIdOptions);\n }\n\n if (workloadFile && workloadIdentityClientId) {\n const workloadIdentityCredentialOptions: DefaultAzureCredentialOptions = {\n ...options,\n tenantId: tenantId,\n };\n\n return new ManagedIdentityCredential(\n workloadIdentityClientId,\n workloadIdentityCredentialOptions,\n );\n }\n\n if (managedIdentityClientId) {\n const managedIdentityClientOptions: ManagedIdentityCredentialClientIdOptions = {\n ...options,\n clientId: managedIdentityClientId,\n };\n\n return new ManagedIdentityCredential(managedIdentityClientOptions);\n }\n\n // We may be able to return a UnavailableCredential here, but that may be a breaking change\n return new ManagedIdentityCredential(options);\n}\n\n/**\n * Creates a {@link WorkloadIdentityCredential} from the provided options.\n * @param options - Options to configure the credential.\n *\n * @internal\n */\nfunction createDefaultWorkloadIdentityCredential(\n options?: DefaultAzureCredentialOptions | DefaultAzureCredentialClientIdOptions,\n): TokenCredential {\n const managedIdentityClientId =\n (options as DefaultAzureCredentialClientIdOptions)?.managedIdentityClientId ??\n process.env.AZURE_CLIENT_ID;\n const workloadIdentityClientId =\n (options as DefaultAzureCredentialClientIdOptions)?.workloadIdentityClientId ??\n managedIdentityClientId;\n const workloadFile = process.env.AZURE_FEDERATED_TOKEN_FILE;\n const tenantId = options?.tenantId ?? process.env.AZURE_TENANT_ID;\n if (workloadFile && workloadIdentityClientId) {\n const workloadIdentityCredentialOptions: WorkloadIdentityCredentialOptions = {\n ...options,\n tenantId,\n clientId: workloadIdentityClientId,\n tokenFilePath: workloadFile,\n };\n return new WorkloadIdentityCredential(workloadIdentityCredentialOptions);\n }\n if (tenantId) {\n const workloadIdentityClientTenantOptions: WorkloadIdentityCredentialOptions = {\n ...options,\n tenantId,\n };\n return new WorkloadIdentityCredential(workloadIdentityClientTenantOptions);\n }\n\n // We may be able to return a UnavailableCredential here, but that may be a breaking change\n return new WorkloadIdentityCredential(options);\n}\n\n/**\n * Creates a {@link AzureDeveloperCliCredential} from the provided options.\n * @param options - Options to configure the credential.\n *\n * @internal\n */\nfunction createDefaultAzureDeveloperCliCredential(\n options: DefaultAzureCredentialOptions = {},\n): TokenCredential {\n const processTimeoutInMs = options.processTimeoutInMs;\n return new AzureDeveloperCliCredential({ processTimeoutInMs, ...options });\n}\n\n/**\n * Creates a {@link AzureCliCredential} from the provided options.\n * @param options - Options to configure the credential.\n *\n * @internal\n */\nfunction createDefaultAzureCliCredential(\n options: DefaultAzureCredentialOptions = {},\n): TokenCredential {\n const processTimeoutInMs = options.processTimeoutInMs;\n return new AzureCliCredential({ processTimeoutInMs, ...options });\n}\n\n/**\n * Creates a {@link AzurePowerShellCredential} from the provided options.\n * @param options - Options to configure the credential.\n *\n * @internal\n */\nfunction createDefaultAzurePowershellCredential(\n options: DefaultAzureCredentialOptions = {},\n): TokenCredential {\n const processTimeoutInMs = options.processTimeoutInMs;\n return new AzurePowerShellCredential({ processTimeoutInMs, ...options });\n}\n\n/**\n * Creates an {@link EnvironmentCredential} from the provided options.\n * @param options - Options to configure the credential.\n *\n * @internal\n */\nexport function createEnvironmentCredential(\n options: DefaultAzureCredentialOptions = {},\n): TokenCredential {\n return new EnvironmentCredential(options);\n}\n\n/**\n * A no-op credential that logs the reason it was skipped if getToken is called.\n * @internal\n */\nexport class UnavailableDefaultCredential implements TokenCredential {\n credentialUnavailableErrorMessage: string;\n credentialName: string;\n\n constructor(credentialName: string, message: string) {\n this.credentialName = credentialName;\n this.credentialUnavailableErrorMessage = message;\n }\n\n getToken(): Promise {\n logger.getToken.info(\n `Skipping ${this.credentialName}, reason: ${this.credentialUnavailableErrorMessage}`,\n );\n return Promise.resolve(null);\n }\n}\n\n/**\n * Provides a default {@link ChainedTokenCredential} configuration that works for most\n * applications that use Azure SDK client libraries. For more information, see\n * [DefaultAzureCredential overview](https://aka.ms/azsdk/js/identity/credential-chains#use-defaultazurecredential-for-flexibility).\n *\n * The following credential types will be tried, in order:\n *\n * - {@link EnvironmentCredential}\n * - {@link WorkloadIdentityCredential}\n * - {@link ManagedIdentityCredential}\n * - {@link AzureCliCredential}\n * - {@link AzurePowerShellCredential}\n * - {@link AzureDeveloperCliCredential}\n *\n * Consult the documentation of these credential types for more information\n * on how they attempt authentication.\n */\nexport class DefaultAzureCredential extends ChainedTokenCredential {\n /**\n * Creates an instance of the DefaultAzureCredential class with {@link DefaultAzureCredentialClientIdOptions}.\n *\n * @param options - Optional parameters. See {@link DefaultAzureCredentialClientIdOptions}.\n */\n constructor(options?: DefaultAzureCredentialClientIdOptions);\n\n /**\n * Creates an instance of the DefaultAzureCredential class with {@link DefaultAzureCredentialResourceIdOptions}.\n *\n * @param options - Optional parameters. See {@link DefaultAzureCredentialResourceIdOptions}.\n */\n constructor(options?: DefaultAzureCredentialResourceIdOptions);\n\n /**\n * Creates an instance of the DefaultAzureCredential class with {@link DefaultAzureCredentialOptions}.\n *\n * @param options - Optional parameters. See {@link DefaultAzureCredentialOptions}.\n */\n constructor(options?: DefaultAzureCredentialOptions);\n\n constructor(options?: DefaultAzureCredentialOptions) {\n // If AZURE_TOKEN_CREDENTIALS is not set, use the default credential chain.\n const azureTokenCredentials = process.env.AZURE_TOKEN_CREDENTIALS\n ? process.env.AZURE_TOKEN_CREDENTIALS.trim().toLowerCase()\n : undefined;\n const devCredentialFunctions = [\n createDefaultAzureCliCredential,\n createDefaultAzurePowershellCredential,\n createDefaultAzureDeveloperCliCredential,\n ];\n const prodCredentialFunctions = [\n createEnvironmentCredential,\n createDefaultWorkloadIdentityCredential,\n createDefaultManagedIdentityCredential,\n ];\n let credentialFunctions = [];\n // If AZURE_TOKEN_CREDENTIALS is set, use it to determine which credentials to use.\n // The value of AZURE_TOKEN_CREDENTIALS should be either \"dev\" or \"prod\".\n if (azureTokenCredentials) {\n switch (azureTokenCredentials) {\n case \"dev\":\n // If AZURE_TOKEN_CREDENTIALS is set to \"dev\", use the developer tool-based credential chain.\n credentialFunctions = devCredentialFunctions;\n break;\n case \"prod\":\n // If AZURE_TOKEN_CREDENTIALS is set to \"prod\", use the production credential chain.\n credentialFunctions = prodCredentialFunctions;\n break;\n default: {\n // If AZURE_TOKEN_CREDENTIALS is set to an unsupported value, throw an error.\n // We will throw an error here to prevent the creation of the DefaultAzureCredential.\n const errorMessage = `Invalid value for AZURE_TOKEN_CREDENTIALS = ${process.env.AZURE_TOKEN_CREDENTIALS}. Valid values are 'prod' or 'dev'.`;\n logger.warning(errorMessage);\n throw new Error(errorMessage);\n }\n }\n } else {\n // If AZURE_TOKEN_CREDENTIALS is not set, use the default credential chain.\n credentialFunctions = [...prodCredentialFunctions, ...devCredentialFunctions];\n }\n\n // Errors from individual credentials should not be thrown in the DefaultAzureCredential constructor, instead throwing on getToken() which is handled by ChainedTokenCredential.\n // When adding new credentials to the default chain, consider:\n // 1. Making the constructor parameters required and explicit\n // 2. Validating any required parameters in the factory function\n // 3. Returning a UnavailableDefaultCredential from the factory function if a credential is unavailable for any reason\n const credentials: TokenCredential[] = credentialFunctions.map((createCredentialFn) => {\n try {\n return createCredentialFn(options);\n } catch (err: any) {\n logger.warning(\n `Skipped ${createCredentialFn.name} because of an error creating the credential: ${err}`,\n );\n return new UnavailableDefaultCredential(createCredentialFn.name, err.message);\n }\n });\n\n super(...credentials);\n }\n}\n", "// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { AccessToken, GetTokenOptions, TokenCredential } from \"@azure/core-auth\";\nimport type {\n InteractiveBrowserCredentialInBrowserOptions,\n InteractiveBrowserCredentialNodeOptions,\n} from \"./interactiveBrowserCredentialOptions.js\";\nimport {\n processMultiTenantRequest,\n resolveAdditionallyAllowedTenantIds,\n resolveTenantId,\n} from \"../util/tenantIdUtils.js\";\n\nimport type { AuthenticationRecord } from \"../msal/types.js\";\nimport { credentialLogger } from \"../util/logging.js\";\nimport { ensureScopes } from \"../util/scopeUtils.js\";\nimport { tracingClient } from \"../util/tracing.js\";\nimport type { MsalClient, MsalClientOptions } from \"../msal/nodeFlows/msalClient.js\";\nimport { createMsalClient } from \"../msal/nodeFlows/msalClient.js\";\nimport { DeveloperSignOnClientId } from \"../constants.js\";\n\nconst logger = credentialLogger(\"InteractiveBrowserCredential\");\n\n/**\n * Enables authentication to Microsoft Entra ID inside of the web browser\n * using the interactive login flow.\n */\nexport class InteractiveBrowserCredential implements TokenCredential {\n private tenantId?: string;\n private additionallyAllowedTenantIds: string[];\n private msalClient: MsalClient;\n private disableAutomaticAuthentication?: boolean;\n private browserCustomizationOptions: InteractiveBrowserCredentialNodeOptions[\"browserCustomizationOptions\"];\n private loginHint?: string;\n\n /**\n * Creates an instance of InteractiveBrowserCredential with the details needed.\n *\n * This credential uses the [Authorization Code Flow](https://learn.microsoft.com/entra/identity-platform/v2-oauth2-auth-code-flow).\n * On Node.js, it will open a browser window while it listens for a redirect response from the authentication service.\n * On browsers, it authenticates via popups. The `loginStyle` optional parameter can be set to `redirect` to authenticate by redirecting the user to an Azure secure login page, which then will redirect the user back to the web application where the authentication started.\n *\n * For Node.js, if a `clientId` is provided, the Microsoft Entra application will need to be configured to have a \"Mobile and desktop applications\" redirect endpoint.\n * Follow our guide on [setting up Redirect URIs for Desktop apps that calls to web APIs](https://learn.microsoft.com/entra/identity-platform/scenario-desktop-app-registration#redirect-uris).\n *\n * @param options - Options for configuring the client which makes the authentication requests.\n */\n constructor(\n options: InteractiveBrowserCredentialNodeOptions | InteractiveBrowserCredentialInBrowserOptions,\n ) {\n this.tenantId = resolveTenantId(logger, options.tenantId, options.clientId);\n this.additionallyAllowedTenantIds = resolveAdditionallyAllowedTenantIds(\n options?.additionallyAllowedTenants,\n );\n\n const msalClientOptions: MsalClientOptions = {\n ...options,\n tokenCredentialOptions: options,\n logger,\n };\n const ibcNodeOptions = options as InteractiveBrowserCredentialNodeOptions;\n this.browserCustomizationOptions = ibcNodeOptions.browserCustomizationOptions;\n this.loginHint = ibcNodeOptions.loginHint;\n if (ibcNodeOptions?.brokerOptions?.enabled) {\n if (!ibcNodeOptions?.brokerOptions?.parentWindowHandle) {\n throw new Error(\n \"In order to do WAM authentication, `parentWindowHandle` under `brokerOptions` is a required parameter\",\n );\n } else {\n msalClientOptions.brokerOptions = {\n enabled: true,\n parentWindowHandle: ibcNodeOptions.brokerOptions.parentWindowHandle,\n legacyEnableMsaPassthrough: ibcNodeOptions.brokerOptions?.legacyEnableMsaPassthrough,\n useDefaultBrokerAccount: ibcNodeOptions.brokerOptions?.useDefaultBrokerAccount,\n };\n }\n }\n this.msalClient = createMsalClient(\n options.clientId ?? DeveloperSignOnClientId,\n this.tenantId,\n msalClientOptions,\n );\n this.disableAutomaticAuthentication = options?.disableAutomaticAuthentication;\n }\n\n /**\n * Authenticates with Microsoft Entra ID and returns an access token if successful.\n * If authentication fails, a {@link CredentialUnavailableError} will be thrown with the details of the failure.\n *\n * If the user provided the option `disableAutomaticAuthentication`,\n * once the token can't be retrieved silently,\n * this method won't attempt to request user interaction to retrieve the token.\n *\n * @param scopes - The list of scopes for which the token will have access.\n * @param options - The options used to configure any requests this\n * TokenCredential implementation might make.\n */\n async getToken(scopes: string | string[], options: GetTokenOptions = {}): Promise {\n return tracingClient.withSpan(\n `${this.constructor.name}.getToken`,\n options,\n async (newOptions) => {\n newOptions.tenantId = processMultiTenantRequest(\n this.tenantId,\n newOptions,\n this.additionallyAllowedTenantIds,\n logger,\n );\n\n const arrayScopes = ensureScopes(scopes);\n return this.msalClient.getTokenByInteractiveRequest(arrayScopes, {\n ...newOptions,\n disableAutomaticAuthentication: this.disableAutomaticAuthentication,\n browserCustomizationOptions: this.browserCustomizationOptions,\n loginHint: this.loginHint,\n });\n },\n );\n }\n\n /**\n * Authenticates with Microsoft Entra ID and returns an access token if successful.\n * If authentication fails, a {@link CredentialUnavailableError} will be thrown with the details of the failure.\n *\n * If the token can't be retrieved silently, this method will always generate a challenge for the user.\n *\n * On Node.js, this credential has [Proof Key for Code Exchange (PKCE)](https://datatracker.ietf.org/doc/html/rfc7636) enabled by default.\n * PKCE is a security feature that mitigates authentication code interception attacks.\n *\n * @param scopes - The list of scopes for which the token will have access.\n * @param options - The options used to configure any requests this\n * TokenCredential implementation might make.\n */\n async authenticate(\n scopes: string | string[],\n options: GetTokenOptions = {},\n ): Promise {\n return tracingClient.withSpan(\n `${this.constructor.name}.authenticate`,\n options,\n async (newOptions) => {\n const arrayScopes = ensureScopes(scopes);\n await this.msalClient.getTokenByInteractiveRequest(arrayScopes, {\n ...newOptions,\n disableAutomaticAuthentication: false, // this method should always allow user interaction\n browserCustomizationOptions: this.browserCustomizationOptions,\n loginHint: this.loginHint,\n });\n return this.msalClient.getActiveAccount();\n },\n );\n }\n}\n", "// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { AccessToken, GetTokenOptions, TokenCredential } from \"@azure/core-auth\";\nimport {\n processMultiTenantRequest,\n resolveAdditionallyAllowedTenantIds,\n resolveTenantId,\n} from \"../util/tenantIdUtils.js\";\nimport type {\n DeviceCodeCredentialOptions,\n DeviceCodeInfo,\n DeviceCodePromptCallback,\n} from \"./deviceCodeCredentialOptions.js\";\nimport type { AuthenticationRecord } from \"../msal/types.js\";\nimport { credentialLogger } from \"../util/logging.js\";\nimport { ensureScopes } from \"../util/scopeUtils.js\";\nimport { tracingClient } from \"../util/tracing.js\";\nimport type { MsalClient } from \"../msal/nodeFlows/msalClient.js\";\nimport { createMsalClient } from \"../msal/nodeFlows/msalClient.js\";\nimport { DeveloperSignOnClientId } from \"../constants.js\";\n\nconst logger = credentialLogger(\"DeviceCodeCredential\");\n\n/**\n * Method that logs the user code from the DeviceCodeCredential.\n * @param deviceCodeInfo - The device code.\n */\nexport function defaultDeviceCodePromptCallback(deviceCodeInfo: DeviceCodeInfo): void {\n console.log(deviceCodeInfo.message);\n}\n\n/**\n * Enables authentication to Microsoft Entra ID using a device code\n * that the user can enter into https://microsoft.com/devicelogin.\n */\nexport class DeviceCodeCredential implements TokenCredential {\n private tenantId?: string;\n private additionallyAllowedTenantIds: string[];\n private disableAutomaticAuthentication?: boolean;\n private msalClient: MsalClient;\n private userPromptCallback: DeviceCodePromptCallback;\n\n /**\n * Creates an instance of DeviceCodeCredential with the details needed\n * to initiate the device code authorization flow with Microsoft Entra ID.\n *\n * A message will be logged, giving users a code that they can use to authenticate once they go to https://microsoft.com/devicelogin\n *\n * Developers can configure how this message is shown by passing a custom `userPromptCallback`:\n *\n * ```ts snippet:device_code_credential_example\n * import { DeviceCodeCredential } from \"@azure/identity\";\n *\n * const credential = new DeviceCodeCredential({\n * tenantId: process.env.AZURE_TENANT_ID,\n * clientId: process.env.AZURE_CLIENT_ID,\n * userPromptCallback: (info) => {\n * console.log(\"CUSTOMIZED PROMPT CALLBACK\", info.message);\n * },\n * });\n * ```\n *\n * @param options - Options for configuring the client which makes the authentication requests.\n */\n constructor(options?: DeviceCodeCredentialOptions) {\n this.tenantId = options?.tenantId;\n this.additionallyAllowedTenantIds = resolveAdditionallyAllowedTenantIds(\n options?.additionallyAllowedTenants,\n );\n const clientId = options?.clientId ?? DeveloperSignOnClientId;\n const tenantId = resolveTenantId(logger, options?.tenantId, clientId);\n this.userPromptCallback = options?.userPromptCallback ?? defaultDeviceCodePromptCallback;\n this.msalClient = createMsalClient(clientId, tenantId, {\n ...options,\n logger,\n tokenCredentialOptions: options || {},\n });\n this.disableAutomaticAuthentication = options?.disableAutomaticAuthentication;\n }\n\n /**\n * Authenticates with Microsoft Entra ID and returns an access token if successful.\n * If authentication fails, a {@link CredentialUnavailableError} will be thrown with the details of the failure.\n *\n * If the user provided the option `disableAutomaticAuthentication`,\n * once the token can't be retrieved silently,\n * this method won't attempt to request user interaction to retrieve the token.\n *\n * @param scopes - The list of scopes for which the token will have access.\n * @param options - The options used to configure any requests this\n * TokenCredential implementation might make.\n */\n async getToken(scopes: string | string[], options: GetTokenOptions = {}): Promise {\n return tracingClient.withSpan(\n `${this.constructor.name}.getToken`,\n options,\n async (newOptions) => {\n newOptions.tenantId = processMultiTenantRequest(\n this.tenantId,\n newOptions,\n this.additionallyAllowedTenantIds,\n logger,\n );\n\n const arrayScopes = ensureScopes(scopes);\n return this.msalClient.getTokenByDeviceCode(arrayScopes, this.userPromptCallback, {\n ...newOptions,\n disableAutomaticAuthentication: this.disableAutomaticAuthentication,\n });\n },\n );\n }\n\n /**\n * Authenticates with Microsoft Entra ID and returns an access token if successful.\n * If authentication fails, a {@link CredentialUnavailableError} will be thrown with the details of the failure.\n *\n * If the token can't be retrieved silently, this method will always generate a challenge for the user.\n *\n * @param scopes - The list of scopes for which the token will have access.\n * @param options - The options used to configure any requests this\n * TokenCredential implementation might make.\n */\n async authenticate(\n scopes: string | string[],\n options: GetTokenOptions = {},\n ): Promise {\n return tracingClient.withSpan(\n `${this.constructor.name}.authenticate`,\n options,\n async (newOptions) => {\n const arrayScopes = Array.isArray(scopes) ? scopes : [scopes];\n await this.msalClient.getTokenByDeviceCode(arrayScopes, this.userPromptCallback, {\n ...newOptions,\n disableAutomaticAuthentication: false, // this method should always allow user interaction\n });\n return this.msalClient.getActiveAccount();\n },\n );\n }\n}\n", "// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { AccessToken, GetTokenOptions, TokenCredential } from \"@azure/core-auth\";\nimport { AuthenticationError, CredentialUnavailableError } from \"../errors.js\";\nimport { createHttpHeaders, createPipelineRequest } from \"@azure/core-rest-pipeline\";\n\nimport type { AzurePipelinesCredentialOptions } from \"./azurePipelinesCredentialOptions.js\";\nimport { ClientAssertionCredential } from \"./clientAssertionCredential.js\";\nimport { IdentityClient } from \"../client/identityClient.js\";\nimport type { PipelineResponse } from \"@azure/core-rest-pipeline\";\nimport { checkTenantId } from \"../util/tenantIdUtils.js\";\nimport { credentialLogger } from \"../util/logging.js\";\n\nconst credentialName = \"AzurePipelinesCredential\";\nconst logger = credentialLogger(credentialName);\nconst OIDC_API_VERSION = \"7.1\";\n\n/**\n * This credential is designed to be used in Azure Pipelines with service connections\n * as a setup for workload identity federation.\n */\nexport class AzurePipelinesCredential implements TokenCredential {\n private clientAssertionCredential: ClientAssertionCredential | undefined;\n private identityClient: IdentityClient;\n\n /**\n * AzurePipelinesCredential supports Federated Identity on Azure Pipelines through Service Connections.\n * @param tenantId - tenantId associated with the service connection\n * @param clientId - clientId associated with the service connection\n * @param serviceConnectionId - Unique ID for the service connection, as found in the querystring's resourceId key\n * @param systemAccessToken - The pipeline's System.AccessToken value.\n * @param options - The identity client options to use for authentication.\n */\n constructor(\n tenantId: string,\n clientId: string,\n serviceConnectionId: string,\n systemAccessToken: string,\n options: AzurePipelinesCredentialOptions = {},\n ) {\n if (!clientId) {\n throw new CredentialUnavailableError(\n `${credentialName}: is unavailable. clientId is a required parameter.`,\n );\n }\n if (!tenantId) {\n throw new CredentialUnavailableError(\n `${credentialName}: is unavailable. tenantId is a required parameter.`,\n );\n }\n if (!serviceConnectionId) {\n throw new CredentialUnavailableError(\n `${credentialName}: is unavailable. serviceConnectionId is a required parameter.`,\n );\n }\n if (!systemAccessToken) {\n throw new CredentialUnavailableError(\n `${credentialName}: is unavailable. systemAccessToken is a required parameter.`,\n );\n }\n\n // Allow these headers to be logged for troubleshooting by AzurePipelines.\n options.loggingOptions = {\n ...options?.loggingOptions,\n additionalAllowedHeaderNames: [\n ...(options.loggingOptions?.additionalAllowedHeaderNames ?? []),\n \"x-vss-e2eid\",\n \"x-msedge-ref\",\n ],\n };\n\n this.identityClient = new IdentityClient(options);\n checkTenantId(logger, tenantId);\n logger.info(\n `Invoking AzurePipelinesCredential with tenant ID: ${tenantId}, client ID: ${clientId}, and service connection ID: ${serviceConnectionId}`,\n );\n if (!process.env.SYSTEM_OIDCREQUESTURI) {\n throw new CredentialUnavailableError(\n `${credentialName}: is unavailable. Ensure that you're running this task in an Azure Pipeline, so that following missing system variable(s) can be defined- \"SYSTEM_OIDCREQUESTURI\"`,\n );\n }\n\n const oidcRequestUrl = `${process.env.SYSTEM_OIDCREQUESTURI}?api-version=${OIDC_API_VERSION}&serviceConnectionId=${serviceConnectionId}`;\n logger.info(\n `Invoking ClientAssertionCredential with tenant ID: ${tenantId}, client ID: ${clientId} and service connection ID: ${serviceConnectionId}`,\n );\n this.clientAssertionCredential = new ClientAssertionCredential(\n tenantId,\n clientId,\n this.requestOidcToken.bind(this, oidcRequestUrl, systemAccessToken),\n options,\n );\n }\n\n /**\n * Authenticates with Microsoft Entra ID and returns an access token if successful.\n * If authentication fails, a {@link CredentialUnavailableError} or {@link AuthenticationError} will be thrown with the details of the failure.\n *\n * @param scopes - The list of scopes for which the token will have access.\n * @param options - The options used to configure any requests this\n * TokenCredential implementation might make.\n */\n public async getToken(\n scopes: string | string[],\n options?: GetTokenOptions,\n ): Promise {\n if (!this.clientAssertionCredential) {\n const errorMessage = `${credentialName}: is unavailable. To use Federation Identity in Azure Pipelines, the following parameters are required - \n tenantId,\n clientId,\n serviceConnectionId,\n systemAccessToken,\n \"SYSTEM_OIDCREQUESTURI\". \n See the troubleshooting guide for more information: https://aka.ms/azsdk/js/identity/azurepipelinescredential/troubleshoot`;\n logger.error(errorMessage);\n throw new CredentialUnavailableError(errorMessage);\n }\n logger.info(\"Invoking getToken() of Client Assertion Credential\");\n return this.clientAssertionCredential.getToken(scopes, options);\n }\n\n /**\n *\n * @param oidcRequestUrl - oidc request url\n * @param systemAccessToken - system access token\n * @returns OIDC token from Azure Pipelines\n */\n private async requestOidcToken(\n oidcRequestUrl: string,\n systemAccessToken: string,\n ): Promise {\n logger.info(\"Requesting OIDC token from Azure Pipelines...\");\n logger.info(oidcRequestUrl);\n const request = createPipelineRequest({\n url: oidcRequestUrl,\n method: \"POST\",\n headers: createHttpHeaders({\n \"Content-Type\": \"application/json\",\n Authorization: `Bearer ${systemAccessToken}`,\n // Prevents the service from responding with a redirect HTTP status code (useful for automation).\n \"X-TFS-FedAuthRedirect\": \"Suppress\",\n }),\n });\n const response = await this.identityClient.sendRequest(request);\n return handleOidcResponse(response);\n }\n}\n\nexport function handleOidcResponse(response: PipelineResponse): string {\n // OIDC token is present in `bodyAsText` field\n const text = response.bodyAsText;\n if (!text) {\n logger.error(\n `${credentialName}: Authentication Failed. Received null token from OIDC request. Response status- ${\n response.status\n }. Complete response - ${JSON.stringify(response)}`,\n );\n throw new AuthenticationError(response.status, {\n error: `${credentialName}: Authentication Failed. Received null token from OIDC request.`,\n error_description: `${JSON.stringify(\n response,\n )}. See the troubleshooting guide for more information: https://aka.ms/azsdk/js/identity/azurepipelinescredential/troubleshoot`,\n });\n }\n try {\n const result = JSON.parse(text);\n if (result?.oidcToken) {\n return result.oidcToken;\n } else {\n const errorMessage = `${credentialName}: Authentication Failed. oidcToken field not detected in the response.`;\n let errorDescription = ``;\n if (response.status !== 200) {\n errorDescription = `Response body = ${text}. Response Headers [\"x-vss-e2eid\"] = ${response.headers.get(\"x-vss-e2eid\")} and [\"x-msedge-ref\"] = ${response.headers.get(\"x-msedge-ref\")}. See the troubleshooting guide for more information: https://aka.ms/azsdk/js/identity/azurepipelinescredential/troubleshoot`;\n }\n logger.error(errorMessage);\n logger.error(errorDescription);\n throw new AuthenticationError(response.status, {\n error: errorMessage,\n error_description: errorDescription,\n });\n }\n } catch (e: any) {\n const errorDetails = `${credentialName}: Authentication Failed. oidcToken field not detected in the response.`;\n logger.error(\n `Response from service = ${text}, Response Headers [\"x-vss-e2eid\"] = ${response.headers.get(\"x-vss-e2eid\")} \n and [\"x-msedge-ref\"] = ${response.headers.get(\"x-msedge-ref\")}, error message = ${e.message}`,\n );\n logger.error(errorDetails);\n throw new AuthenticationError(response.status, {\n error: errorDetails,\n error_description: `Response = ${text}. Response headers [\"x-vss-e2eid\"] = ${response.headers.get(\"x-vss-e2eid\")} and [\"x-msedge-ref\"] = ${response.headers.get(\"x-msedge-ref\")}. See the troubleshooting guide for more information: https://aka.ms/azsdk/js/identity/azurepipelinescredential/troubleshoot`,\n });\n }\n}\n", "// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { AccessToken, GetTokenOptions, TokenCredential } from \"@azure/core-auth\";\nimport {\n processMultiTenantRequest,\n resolveAdditionallyAllowedTenantIds,\n} from \"../util/tenantIdUtils.js\";\nimport type { AuthorizationCodeCredentialOptions } from \"./authorizationCodeCredentialOptions.js\";\nimport { checkTenantId } from \"../util/tenantIdUtils.js\";\nimport { credentialLogger } from \"../util/logging.js\";\nimport { ensureScopes } from \"../util/scopeUtils.js\";\nimport { tracingClient } from \"../util/tracing.js\";\nimport type { MsalClient } from \"../msal/nodeFlows/msalClient.js\";\nimport { createMsalClient } from \"../msal/nodeFlows/msalClient.js\";\n\nconst logger = credentialLogger(\"AuthorizationCodeCredential\");\n\n/**\n * Enables authentication to Microsoft Entra ID using an authorization code\n * that was obtained through the authorization code flow, described in more detail\n * in the Microsoft Entra ID documentation:\n *\n * https://learn.microsoft.com/entra/identity-platform/v2-oauth2-auth-code-flow\n */\nexport class AuthorizationCodeCredential implements TokenCredential {\n private msalClient: MsalClient;\n private disableAutomaticAuthentication?: boolean;\n private authorizationCode: string;\n private redirectUri: string;\n private tenantId?: string;\n private additionallyAllowedTenantIds: string[];\n private clientSecret?: string;\n\n /**\n * Creates an instance of AuthorizationCodeCredential with the details needed\n * to request an access token using an authentication that was obtained\n * from Microsoft Entra ID.\n *\n * It is currently necessary for the user of this credential to initiate\n * the authorization code flow to obtain an authorization code to be used\n * with this credential. A full example of this flow is provided here:\n *\n * https://github.com/Azure/azure-sdk-for-js/blob/main/sdk/identity/identity/samples/v2/manual/authorizationCodeSample.ts\n *\n * @param tenantId - The Microsoft Entra tenant (directory) ID or name.\n * 'common' may be used when dealing with multi-tenant scenarios.\n * @param clientId - The client (application) ID of an App Registration in the tenant.\n * @param clientSecret - A client secret that was generated for the App Registration\n * @param authorizationCode - An authorization code that was received from following the\n authorization code flow. This authorization code must not\n have already been used to obtain an access token.\n * @param redirectUri - The redirect URI that was used to request the authorization code.\n Must be the same URI that is configured for the App Registration.\n * @param options - Options for configuring the client which makes the access token request.\n */\n constructor(\n tenantId: string | \"common\",\n clientId: string,\n clientSecret: string,\n authorizationCode: string,\n redirectUri: string,\n options?: AuthorizationCodeCredentialOptions,\n );\n /**\n * Creates an instance of AuthorizationCodeCredential with the details needed\n * to request an access token using an authentication that was obtained\n * from Microsoft Entra ID.\n *\n * It is currently necessary for the user of this credential to initiate\n * the authorization code flow to obtain an authorization code to be used\n * with this credential. A full example of this flow is provided here:\n *\n * https://github.com/Azure/azure-sdk-for-js/blob/main/sdk/identity/identity/samples/v2/manual/authorizationCodeSample.ts\n *\n * @param tenantId - The Microsoft Entra tenant (directory) ID or name.\n * 'common' may be used when dealing with multi-tenant scenarios.\n * @param clientId - The client (application) ID of an App Registration in the tenant.\n * @param authorizationCode - An authorization code that was received from following the\n authorization code flow. This authorization code must not\n have already been used to obtain an access token.\n * @param redirectUri - The redirect URI that was used to request the authorization code.\n Must be the same URI that is configured for the App Registration.\n * @param options - Options for configuring the client which makes the access token request.\n */\n constructor(\n tenantId: string | \"common\",\n clientId: string,\n authorizationCode: string,\n redirectUri: string,\n options?: AuthorizationCodeCredentialOptions,\n );\n /**\n * @hidden\n * @internal\n */\n constructor(\n tenantId: string | \"common\",\n clientId: string,\n clientSecretOrAuthorizationCode: string,\n authorizationCodeOrRedirectUri: string,\n redirectUriOrOptions: string | AuthorizationCodeCredentialOptions | undefined,\n options?: AuthorizationCodeCredentialOptions,\n ) {\n checkTenantId(logger, tenantId);\n this.clientSecret = clientSecretOrAuthorizationCode;\n\n if (typeof redirectUriOrOptions === \"string\") {\n // the clientId+clientSecret constructor\n this.authorizationCode = authorizationCodeOrRedirectUri;\n this.redirectUri = redirectUriOrOptions;\n // in this case, options are good as they come\n } else {\n // clientId only\n this.authorizationCode = clientSecretOrAuthorizationCode;\n this.redirectUri = authorizationCodeOrRedirectUri as string;\n this.clientSecret = undefined;\n options = redirectUriOrOptions as AuthorizationCodeCredentialOptions;\n }\n\n // TODO: Validate tenant if provided\n this.tenantId = tenantId;\n this.additionallyAllowedTenantIds = resolveAdditionallyAllowedTenantIds(\n options?.additionallyAllowedTenants,\n );\n\n this.msalClient = createMsalClient(clientId, tenantId, {\n ...options,\n logger,\n tokenCredentialOptions: options ?? {},\n });\n }\n\n /**\n * Authenticates with Microsoft Entra ID and returns an access token if successful.\n * If authentication fails, a {@link CredentialUnavailableError} will be thrown with the details of the failure.\n *\n * @param scopes - The list of scopes for which the token will have access.\n * @param options - The options used to configure any requests this\n * TokenCredential implementation might make.\n */\n async getToken(scopes: string | string[], options: GetTokenOptions = {}): Promise {\n return tracingClient.withSpan(\n `${this.constructor.name}.getToken`,\n options,\n async (newOptions) => {\n const tenantId = processMultiTenantRequest(\n this.tenantId,\n newOptions,\n this.additionallyAllowedTenantIds,\n );\n newOptions.tenantId = tenantId;\n\n const arrayScopes = ensureScopes(scopes);\n return this.msalClient.getTokenByAuthorizationCode(\n arrayScopes,\n this.redirectUri,\n this.authorizationCode,\n this.clientSecret,\n {\n ...newOptions,\n disableAutomaticAuthentication: this.disableAutomaticAuthentication,\n },\n );\n },\n );\n }\n}\n", "// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { AccessToken, GetTokenOptions, TokenCredential } from \"@azure/core-auth\";\nimport type { MsalClient } from \"../msal/nodeFlows/msalClient.js\";\nimport { createMsalClient } from \"../msal/nodeFlows/msalClient.js\";\nimport type {\n OnBehalfOfCredentialAssertionOptions,\n OnBehalfOfCredentialCertificateOptions,\n OnBehalfOfCredentialOptions,\n OnBehalfOfCredentialSecretOptions,\n} from \"./onBehalfOfCredentialOptions.js\";\nimport { credentialLogger, formatError } from \"../util/logging.js\";\nimport {\n processMultiTenantRequest,\n resolveAdditionallyAllowedTenantIds,\n} from \"../util/tenantIdUtils.js\";\n\nimport type { CertificateParts } from \"../msal/types.js\";\nimport type { ClientCertificatePEMCertificatePath } from \"./clientCertificateCredentialModels.js\";\nimport type { CredentialPersistenceOptions } from \"./credentialPersistenceOptions.js\";\nimport { CredentialUnavailableError } from \"../errors.js\";\nimport type { MultiTenantTokenCredentialOptions } from \"./multiTenantTokenCredentialOptions.js\";\nimport { createHash } from \"node:crypto\";\nimport { ensureScopes } from \"../util/scopeUtils.js\";\nimport { readFile } from \"node:fs/promises\";\nimport { tracingClient } from \"../util/tracing.js\";\n\nconst credentialName = \"OnBehalfOfCredential\";\nconst logger = credentialLogger(credentialName);\n\n/**\n * Enables authentication to Microsoft Entra ID using the [On Behalf Of flow](https://learn.microsoft.com/entra/identity-platform/v2-oauth2-on-behalf-of-flow).\n */\nexport class OnBehalfOfCredential implements TokenCredential {\n private tenantId: string;\n private additionallyAllowedTenantIds: string[];\n private msalClient: MsalClient;\n private sendCertificateChain?: boolean;\n private certificatePath?: string;\n private clientSecret?: string;\n private userAssertionToken: string;\n private clientAssertion?: () => Promise;\n\n /**\n * Creates an instance of the {@link OnBehalfOfCredential} with the details\n * needed to authenticate against Microsoft Entra ID with path to a PEM certificate,\n * and an user assertion.\n *\n * Example using the `KeyClient` from [\\@azure/keyvault-keys](https://www.npmjs.com/package/\\@azure/keyvault-keys):\n *\n * ```ts snippet:on_behalf_of_credential_pem_example\n * import { OnBehalfOfCredential } from \"@azure/identity\";\n * import { KeyClient } from \"@azure/keyvault-keys\";\n *\n * const tokenCredential = new OnBehalfOfCredential({\n * tenantId: \"tenant-id\",\n * clientId: \"client-id\",\n * certificatePath: \"/path/to/certificate.pem\",\n * userAssertionToken: \"access-token\",\n * });\n * const client = new KeyClient(\"vault-url\", tokenCredential);\n *\n * await client.getKey(\"key-name\");\n * ```\n *\n * @param options - Optional parameters, generally common across credentials.\n */\n constructor(\n options: OnBehalfOfCredentialCertificateOptions &\n MultiTenantTokenCredentialOptions &\n CredentialPersistenceOptions,\n );\n /**\n * Creates an instance of the {@link OnBehalfOfCredential} with the details\n * needed to authenticate against Microsoft Entra ID with a client\n * secret and an user assertion.\n *\n * Example using the `KeyClient` from [\\@azure/keyvault-keys](https://www.npmjs.com/package/\\@azure/keyvault-keys):\n *\n * ```ts snippet:on_behalf_of_credential_secret_example\n * import { OnBehalfOfCredential } from \"@azure/identity\";\n * import { KeyClient } from \"@azure/keyvault-keys\";\n *\n * const tokenCredential = new OnBehalfOfCredential({\n * tenantId: \"tenant-id\",\n * clientId: \"client-id\",\n * clientSecret: \"client-secret\",\n * userAssertionToken: \"access-token\",\n * });\n * const client = new KeyClient(\"vault-url\", tokenCredential);\n *\n * await client.getKey(\"key-name\");\n * ```\n *\n * @param options - Optional parameters, generally common across credentials.\n */\n constructor(\n options: OnBehalfOfCredentialSecretOptions &\n MultiTenantTokenCredentialOptions &\n CredentialPersistenceOptions,\n );\n\n /**\n * Creates an instance of the {@link OnBehalfOfCredential} with the details\n * needed to authenticate against Microsoft Entra ID with a client `getAssertion`\n * and an user assertion.\n *\n * Example using the `KeyClient` from [\\@azure/keyvault-keys](https://www.npmjs.com/package/\\@azure/keyvault-keys):\n *\n * ```ts snippet:on_behalf_of_credential_assertion_example\n * import { OnBehalfOfCredential } from \"@azure/identity\";\n * import { KeyClient } from \"@azure/keyvault-keys\";\n *\n * const tokenCredential = new OnBehalfOfCredential({\n * tenantId: \"tenant-id\",\n * clientId: \"client-id\",\n * getAssertion: () => {\n * return Promise.resolve(\"my-jwt\");\n * },\n * userAssertionToken: \"access-token\",\n * });\n * const client = new KeyClient(\"vault-url\", tokenCredential);\n *\n * await client.getKey(\"key-name\");\n * ```\n *\n * @param options - Optional parameters, generally common across credentials.\n */\n constructor(\n options: OnBehalfOfCredentialAssertionOptions &\n MultiTenantTokenCredentialOptions &\n CredentialPersistenceOptions,\n );\n\n constructor(options: OnBehalfOfCredentialOptions) {\n const { clientSecret } = options as OnBehalfOfCredentialSecretOptions;\n const { certificatePath, sendCertificateChain } =\n options as OnBehalfOfCredentialCertificateOptions;\n const { getAssertion } = options as OnBehalfOfCredentialAssertionOptions;\n const {\n tenantId,\n clientId,\n userAssertionToken,\n additionallyAllowedTenants: additionallyAllowedTenantIds,\n } = options;\n if (!tenantId) {\n throw new CredentialUnavailableError(\n `${credentialName}: tenantId is a required parameter. To troubleshoot, visit https://aka.ms/azsdk/js/identity/serviceprincipalauthentication/troubleshoot.`,\n );\n }\n\n if (!clientId) {\n throw new CredentialUnavailableError(\n `${credentialName}: clientId is a required parameter. To troubleshoot, visit https://aka.ms/azsdk/js/identity/serviceprincipalauthentication/troubleshoot.`,\n );\n }\n\n if (!clientSecret && !certificatePath && !getAssertion) {\n throw new CredentialUnavailableError(\n `${credentialName}: You must provide one of clientSecret, certificatePath, or a getAssertion callback but none were provided. To troubleshoot, visit https://aka.ms/azsdk/js/identity/serviceprincipalauthentication/troubleshoot.`,\n );\n }\n\n if (!userAssertionToken) {\n throw new CredentialUnavailableError(\n `${credentialName}: userAssertionToken is a required parameter. To troubleshoot, visit https://aka.ms/azsdk/js/identity/serviceprincipalauthentication/troubleshoot.`,\n );\n }\n this.certificatePath = certificatePath;\n this.clientSecret = clientSecret;\n this.userAssertionToken = userAssertionToken;\n this.sendCertificateChain = sendCertificateChain;\n this.clientAssertion = getAssertion;\n\n this.tenantId = tenantId;\n this.additionallyAllowedTenantIds = resolveAdditionallyAllowedTenantIds(\n additionallyAllowedTenantIds,\n );\n\n this.msalClient = createMsalClient(clientId, this.tenantId, {\n ...options,\n logger,\n tokenCredentialOptions: options,\n });\n }\n\n /**\n * Authenticates with Microsoft Entra ID and returns an access token if successful.\n * If authentication fails, a {@link CredentialUnavailableError} will be thrown with the details of the failure.\n *\n * @param scopes - The list of scopes for which the token will have access.\n * @param options - The options used to configure the underlying network requests.\n */\n async getToken(scopes: string | string[], options: GetTokenOptions = {}): Promise {\n return tracingClient.withSpan(`${credentialName}.getToken`, options, async (newOptions) => {\n newOptions.tenantId = processMultiTenantRequest(\n this.tenantId,\n newOptions,\n this.additionallyAllowedTenantIds,\n logger,\n );\n\n const arrayScopes = ensureScopes(scopes);\n if (this.certificatePath) {\n const clientCertificate = await this.buildClientCertificate(this.certificatePath);\n\n return this.msalClient.getTokenOnBehalfOf(\n arrayScopes,\n this.userAssertionToken,\n clientCertificate,\n newOptions,\n );\n } else if (this.clientSecret) {\n return this.msalClient.getTokenOnBehalfOf(\n arrayScopes,\n this.userAssertionToken,\n this.clientSecret,\n options,\n );\n } else if (this.clientAssertion) {\n return this.msalClient.getTokenOnBehalfOf(\n arrayScopes,\n this.userAssertionToken,\n this.clientAssertion,\n options,\n );\n } else {\n // this is an invalid scenario and is a bug, as the constructor should have thrown an error if neither clientSecret nor certificatePath nor clientAssertion were provided\n throw new Error(\n \"Expected either clientSecret or certificatePath or clientAssertion to be defined.\",\n );\n }\n });\n }\n\n private async buildClientCertificate(certificatePath: string): Promise {\n try {\n const parts = await this.parseCertificate({ certificatePath }, this.sendCertificateChain);\n return {\n thumbprint: parts.thumbprint,\n thumbprintSha256: parts.thumbprintSha256,\n privateKey: parts.certificateContents,\n x5c: parts.x5c,\n };\n } catch (error: any) {\n logger.info(formatError(\"\", error));\n throw error;\n }\n }\n\n private async parseCertificate(\n configuration: ClientCertificatePEMCertificatePath,\n sendCertificateChain?: boolean,\n ): Promise & { certificateContents: string }> {\n const certificatePath = configuration.certificatePath;\n const certificateContents = await readFile(certificatePath, \"utf8\");\n const x5c = sendCertificateChain ? certificateContents : undefined;\n\n const certificatePattern =\n /(-+BEGIN CERTIFICATE-+)(\\n\\r?|\\r\\n?)([A-Za-z0-9+/\\n\\r]+=*)(\\n\\r?|\\r\\n?)(-+END CERTIFICATE-+)/g;\n const publicKeys: string[] = [];\n\n // Match all possible certificates, in the order they are in the file. These will form the chain that is used for x5c\n let match;\n do {\n match = certificatePattern.exec(certificateContents);\n if (match) {\n publicKeys.push(match[3]);\n }\n } while (match);\n\n if (publicKeys.length === 0) {\n throw new Error(\"The file at the specified path does not contain a PEM-encoded certificate.\");\n }\n const thumbprint = createHash(\"sha1\") // CodeQL [SM04514] Needed for backward compatibility reason\n .update(Buffer.from(publicKeys[0], \"base64\"))\n .digest(\"hex\")\n .toUpperCase();\n\n const thumbprintSha256 = createHash(\"sha256\")\n .update(Buffer.from(publicKeys[0], \"base64\"))\n .digest(\"hex\")\n .toUpperCase();\n\n return {\n certificateContents,\n thumbprintSha256,\n thumbprint,\n x5c,\n };\n }\n}\n", "// Copyright (c) Microsoft Corporation.\r\n// Licensed under the MIT License.\r\nimport {\r\n ChangeType,\r\n PropertyChangeType,\r\n WhatIfChange,\r\n WhatIfOperationResult,\r\n WhatIfPropertyChange,\r\n} from \"@azure/arm-resources\";\r\nimport { Color, ColorMode, ColorStringBuilder } from \"./logging\";\r\n\r\n// ChatGPT was heavily utilized to generate this file, using the below Python code as a starting point:\r\n// https://github.com/Azure/azure-cli/blob/5b77a09013d0f15f01e2b2acce1efd37571ac1d9/src/azure-cli/azure/cli/command_modules/resource/_formatters.py#L84\r\n\r\ntype UnknownValue = unknown;\r\n\r\nenum Symbol {\r\n WhiteSpace = \" \",\r\n Quote = '\"',\r\n Colon = \":\",\r\n LeftSquareBracket = \"[\",\r\n RightSquareBracket = \"]\",\r\n Dot = \".\",\r\n Equal = \"=\",\r\n Asterisk = \"*\",\r\n Plus = \"+\",\r\n Minus = \"-\",\r\n Tilde = \"~\",\r\n ExclamationPoint = \"!\",\r\n Cross = \"x\",\r\n}\r\n\r\nconst changeTypeToColor: Record = {\r\n Create: Color.Green,\r\n Delete: Color.Red,\r\n Modify: Color.Magenta,\r\n Deploy: Color.Blue,\r\n NoChange: Color.Reset,\r\n Ignore: Color.White,\r\n Unsupported: Color.White,\r\n};\r\n\r\nconst propertyChangeTypeToColor: Record = {\r\n Create: Color.Green,\r\n Delete: Color.Red,\r\n Modify: Color.Magenta,\r\n Array: Color.Magenta,\r\n NoEffect: Color.White,\r\n};\r\n\r\nconst changeTypeToSymbol: Record = {\r\n Create: Symbol.Plus,\r\n Delete: Symbol.Minus,\r\n Modify: Symbol.Tilde,\r\n Deploy: Symbol.ExclamationPoint,\r\n NoChange: Symbol.Equal,\r\n Ignore: Symbol.Asterisk,\r\n Unsupported: Symbol.Cross,\r\n};\r\n\r\nconst propertyChangeTypeToSymbol: Record = {\r\n Create: Symbol.Plus,\r\n Delete: Symbol.Minus,\r\n Modify: Symbol.Tilde,\r\n Array: Symbol.Tilde,\r\n NoEffect: Symbol.Cross,\r\n};\r\n\r\nconst changeTypeToWeight: Record = {\r\n Delete: 0,\r\n Create: 1,\r\n Deploy: 2,\r\n Modify: 3,\r\n NoChange: 4,\r\n Unsupported: 5,\r\n Ignore: 6,\r\n};\r\n\r\nconst propertyChangeTypeToWeight: Record = {\r\n Delete: 0,\r\n Create: 1,\r\n Modify: 2,\r\n Array: 2,\r\n NoEffect: 3,\r\n};\r\n\r\nconst propertyChangeToChangeType: Record = {\r\n Array: \"Modify\",\r\n Create: \"Create\",\r\n Delete: \"Delete\",\r\n Modify: \"Modify\",\r\n NoEffect: \"NoChange\",\r\n};\r\n\r\nexport function formatJson(value: UnknownValue, colorMode: ColorMode): string {\r\n const builder = new ColorStringBuilder(colorMode);\r\n formatJsonValue(builder, value);\r\n return builder.build();\r\n}\r\n\r\nexport function formatWhatIfOperationResult(\r\n whatIfOperationResult: WhatIfOperationResult,\r\n colorMode: ColorMode,\r\n): string {\r\n const builder = new ColorStringBuilder(colorMode);\r\n formatNoiseNotice(builder);\r\n formatChangeTypeLegend(builder, whatIfOperationResult.changes ?? []);\r\n formatResourceChanges(builder, whatIfOperationResult.changes ?? []);\r\n formatResourceChangesStats(builder, whatIfOperationResult.changes ?? []);\r\n return builder.build();\r\n}\r\n\r\nfunction formatNoiseNotice(builder: ColorStringBuilder): void {\r\n builder.appendLine(`Note: The result may contain false positive predictions (noise).\r\nYou can help us improve the accuracy of the result by opening an issue here: https://aka.ms/WhatIfIssues`);\r\n builder.appendLine();\r\n}\r\n\r\nfunction formatChangeTypeLegend(\r\n builder: ColorStringBuilder,\r\n resourceChanges: WhatIfChange[],\r\n): void {\r\n if (!resourceChanges.length) return;\r\n\r\n const changeTypeSet = new Set();\r\n\r\n function populateChangeTypeSet(\r\n propertyChanges: WhatIfPropertyChange[],\r\n ): void {\r\n if (!propertyChanges.length) return;\r\n\r\n for (const propertyChange of propertyChanges) {\r\n const propertyChangeType = propertyChange.propertyChangeType;\r\n changeTypeSet.add(propertyChangeToChangeType[propertyChangeType]);\r\n populateChangeTypeSet(propertyChange.children ?? []);\r\n }\r\n }\r\n\r\n for (const resourceChange of resourceChanges) {\r\n changeTypeSet.add(resourceChange.changeType);\r\n populateChangeTypeSet(resourceChange.delta ?? []);\r\n }\r\n\r\n const changeTypes = Array.from(changeTypeSet).sort(\r\n (a, b) => changeTypeToWeight[a] - changeTypeToWeight[b],\r\n );\r\n\r\n builder.append(\"Resource and property changes are indicated with \");\r\n builder.appendLine(\r\n changeTypes.length === 1 ? \"this symbol:\" : \"these symbols:\",\r\n );\r\n\r\n for (const changeType of changeTypes) {\r\n const changeTypeSymbol = changeTypeToSymbol[changeType];\r\n const changeTypeColor = changeTypeToColor[changeType];\r\n formatIndent(builder);\r\n builder.append(changeTypeSymbol, changeTypeColor).append(Symbol.WhiteSpace);\r\n builder.appendLine(\r\n changeType.charAt(0).toUpperCase() + changeType.slice(1),\r\n );\r\n }\r\n}\r\n\r\nfunction formatResourceChangesStats(\r\n builder: ColorStringBuilder,\r\n resourceChanges: WhatIfChange[],\r\n): void {\r\n builder.appendLine().append(\"Resource changes: \");\r\n\r\n if (!resourceChanges.length) {\r\n builder.append(\"no change.\");\r\n return;\r\n }\r\n\r\n const sortedResourceChanges = resourceChanges.sort(\r\n (a, b) =>\r\n changeTypeToWeight[a.changeType] - changeTypeToWeight[b.changeType],\r\n );\r\n const resourceChangesByChangeType = groupBy(\r\n sortedResourceChanges,\r\n x => x.changeType,\r\n );\r\n const countByChangeType = entries(resourceChangesByChangeType)\r\n .map(([key, value]) => ({ key, count: value.length }))\r\n .filter(x => x.count > 0);\r\n const changeTypeStats = countByChangeType.map(x =>\r\n formatChangeTypeCount(x.key, x.count),\r\n );\r\n\r\n builder.append(changeTypeStats.join(\", \")).append(\".\");\r\n}\r\n\r\nfunction formatChangeTypeCount(changeType: ChangeType, count: number): string {\r\n switch (changeType) {\r\n case \"Create\":\r\n return `${count} to create`;\r\n case \"Delete\":\r\n return `${count} to delete`;\r\n case \"Deploy\":\r\n return `${count} to deploy`;\r\n case \"Modify\":\r\n return `${count} to modify`;\r\n case \"Ignore\":\r\n return `${count} to ignore`;\r\n case \"NoChange\":\r\n return `${count} no change`;\r\n case \"Unsupported\":\r\n return `${count} unsupported`;\r\n default:\r\n throw new Error(`Invalid ChangeType: ${changeType}`);\r\n }\r\n}\r\n\r\nfunction formatResourceChanges(\r\n builder: ColorStringBuilder,\r\n resourceChanges: WhatIfChange[],\r\n): void {\r\n if (!resourceChanges.length) return;\r\n\r\n const numScopes = new Set(resourceChanges.map(getScopeUppercase)).size;\r\n const resourceChangesByScope = groupBy(\r\n resourceChanges.sort((a, b) =>\r\n getScopeUppercase(a).localeCompare(getScopeUppercase(b)),\r\n ),\r\n getScopeUppercase,\r\n );\r\n\r\n builder.appendLine();\r\n builder.appendLine(\r\n `The deployment will update the following ${numScopes === 1 ? \"scope:\" : \"scopes:\"}`,\r\n );\r\n\r\n for (const [, resourceChangesInScope] of entries(resourceChangesByScope)) {\r\n const scope = getScope(resourceChangesInScope[0]);\r\n formatResourceChangesInScope(builder, scope, resourceChangesInScope);\r\n }\r\n}\r\n\r\nfunction formatResourceChangesInScope(\r\n builder: ColorStringBuilder,\r\n scope: string,\r\n resourceChangesInScope: WhatIfChange[],\r\n): void {\r\n builder.appendLine().appendLine(`Scope: ${scope}`);\r\n\r\n const sortedResourceChanges = resourceChangesInScope.sort(\r\n (a, b) =>\r\n changeTypeToWeight[a.changeType] - changeTypeToWeight[b.changeType],\r\n );\r\n\r\n const grouped = groupBy(sortedResourceChanges, x => x.changeType);\r\n for (const [changeType, resourceChanges] of entries(grouped)) {\r\n builder.withColorScope(changeTypeToColor[changeType], () => {\r\n for (const resourceChange of resourceChanges) {\r\n const isLast =\r\n resourceChange ===\r\n sortedResourceChanges[sortedResourceChanges.length - 1];\r\n formatResourceChange(builder, resourceChange, isLast);\r\n }\r\n });\r\n }\r\n}\r\n\r\nfunction formatResourceChange(\r\n builder: ColorStringBuilder,\r\n resourceChange: WhatIfChange,\r\n isLast: boolean,\r\n): void {\r\n const changeType = resourceChange.changeType;\r\n const relativeResourceId = getRelativeResourceId(resourceChange);\r\n const apiVersion = getApiVersion(resourceChange);\r\n\r\n builder.appendLine();\r\n formatResourceChangePath(builder, changeType, relativeResourceId, apiVersion);\r\n\r\n if (changeType === \"Create\" && resourceChange.after) {\r\n formatJsonValue(builder, resourceChange.after, undefined, undefined, 2);\r\n } else if (changeType === \"Delete\" && resourceChange.before) {\r\n formatJsonValue(builder, resourceChange.before, undefined, undefined, 2);\r\n } else if (resourceChange.delta) {\r\n const delta = resourceChange.delta;\r\n builder.withColorScope(Color.Reset, () => {\r\n builder.appendLine();\r\n formatPropertyChanges(builder, sortChanges(delta));\r\n });\r\n } else if (isLast) {\r\n builder.appendLine();\r\n }\r\n}\r\n\r\nfunction formatResourceChangePath(\r\n builder: ColorStringBuilder,\r\n changeType: ChangeType,\r\n resourceChangeId: string,\r\n apiVersion?: string,\r\n): void {\r\n formatPath(\r\n builder,\r\n resourceChangeId,\r\n 0,\r\n 1,\r\n builder => formatResourceChangeType(builder, changeType),\r\n builder => formatResourceChangeApiVersion(builder, apiVersion),\r\n );\r\n}\r\n\r\nfunction formatResourceChangeType(\r\n builder: ColorStringBuilder,\r\n changeType: ChangeType,\r\n): void {\r\n const changeSymbol = changeTypeToSymbol[changeType];\r\n builder.append(changeSymbol).append(Symbol.WhiteSpace);\r\n}\r\n\r\nfunction formatResourceChangeApiVersion(\r\n builder: ColorStringBuilder,\r\n apiVersion?: string,\r\n): void {\r\n if (!apiVersion) return;\r\n\r\n builder.withColorScope(Color.Reset, () => {\r\n builder.append(Symbol.WhiteSpace);\r\n builder.append(Symbol.LeftSquareBracket);\r\n builder.append(apiVersion);\r\n builder.append(Symbol.RightSquareBracket);\r\n });\r\n}\r\n\r\nfunction formatPropertyChanges(\r\n builder: ColorStringBuilder,\r\n propertyChanges: WhatIfPropertyChange[],\r\n indentLevel: number = 2,\r\n): void {\r\n const maxPathLength = getMaxPathLengthFromPropertyChanges(propertyChanges);\r\n\r\n for (const propertyChange of propertyChanges) {\r\n formatPropertyChange(builder, propertyChange, maxPathLength, indentLevel);\r\n builder.appendLine();\r\n }\r\n}\r\n\r\nfunction formatPropertyChange(\r\n builder: ColorStringBuilder,\r\n propertyChange: WhatIfPropertyChange,\r\n maxPathLength: number,\r\n indentLevel: number,\r\n): void {\r\n const propertyChangeType = propertyChange.propertyChangeType;\r\n const before = propertyChange.before;\r\n const after = propertyChange.after;\r\n const children = propertyChange.children || [];\r\n\r\n switch (propertyChangeType) {\r\n case \"Create\":\r\n formatPropertyChangePath(\r\n builder,\r\n propertyChange,\r\n propertyChange.after,\r\n maxPathLength,\r\n indentLevel,\r\n );\r\n formatPropertyCreate(builder, after, indentLevel + 1);\r\n break;\r\n case \"Delete\":\r\n formatPropertyChangePath(\r\n builder,\r\n propertyChange,\r\n propertyChange.before,\r\n maxPathLength,\r\n indentLevel,\r\n );\r\n formatPropertyDelete(builder, before, indentLevel + 1);\r\n break;\r\n case \"Modify\":\r\n formatPropertyChangePath(\r\n builder,\r\n propertyChange,\r\n propertyChange.before,\r\n maxPathLength,\r\n indentLevel,\r\n );\r\n formatPropertyModify(builder, before, after, children, indentLevel + 1);\r\n break;\r\n case \"Array\":\r\n formatPropertyChangePath(\r\n builder,\r\n propertyChange,\r\n propertyChange.children,\r\n maxPathLength,\r\n indentLevel,\r\n );\r\n formatPropertyArrayChange(\r\n builder,\r\n propertyChange,\r\n children,\r\n indentLevel + 1,\r\n );\r\n break;\r\n case \"NoEffect\":\r\n formatPropertyChangePath(\r\n builder,\r\n propertyChange,\r\n propertyChange.after,\r\n maxPathLength,\r\n indentLevel,\r\n );\r\n formatPropertyNoEffect(builder, after, indentLevel + 1);\r\n break;\r\n default:\r\n throw new Error(`Unknown property change type: ${propertyChangeType}.`);\r\n }\r\n}\r\n\r\nfunction formatPropertyChangePath(\r\n builder: ColorStringBuilder,\r\n propertyChange: WhatIfPropertyChange,\r\n value: UnknownValue,\r\n maxPathLength: number,\r\n indentLevel: number,\r\n): void {\r\n if (!propertyChange.path) return;\r\n\r\n const path = propertyChange.path;\r\n const propertyChangeType = propertyChange.propertyChangeType;\r\n\r\n let paddingWidth = maxPathLength - path.length + 1;\r\n\r\n if (isNonEmptyArray(value)) {\r\n paddingWidth = 1;\r\n } else if (isNonEmptyObject(value)) {\r\n paddingWidth = 0;\r\n } else if (propertyChangeType === \"Modify\" && propertyChange.children) {\r\n paddingWidth = 0; // Has nested changes.\r\n }\r\n\r\n formatPath(\r\n builder,\r\n path,\r\n paddingWidth,\r\n indentLevel,\r\n builder => formatPropertyChangeType(builder, propertyChangeType),\r\n formatColon,\r\n );\r\n}\r\n\r\nfunction formatPropertyChangeType(\r\n builder: ColorStringBuilder,\r\n propertyChangeType: PropertyChangeType,\r\n): void {\r\n const propertyChangeSymbol = propertyChangeTypeToSymbol[propertyChangeType];\r\n const propertyChangeColor = propertyChangeTypeToColor[propertyChangeType];\r\n builder\r\n .append(propertyChangeSymbol, propertyChangeColor)\r\n .append(Symbol.WhiteSpace);\r\n}\r\n\r\nfunction formatPropertyNoEffect(\r\n builder: ColorStringBuilder,\r\n value: UnknownValue,\r\n indentLevel: number,\r\n): void {\r\n builder.withColorScope(propertyChangeTypeToColor[\"NoEffect\"], () => {\r\n formatJsonValue(builder, value, undefined, undefined, indentLevel);\r\n });\r\n}\r\n\r\nfunction formatPropertyCreate(\r\n builder: ColorStringBuilder,\r\n value: UnknownValue,\r\n indentLevel: number,\r\n): void {\r\n builder.withColorScope(propertyChangeTypeToColor[\"Create\"], () => {\r\n formatJsonValue(builder, value, undefined, undefined, indentLevel);\r\n });\r\n}\r\n\r\nfunction formatPropertyDelete(\r\n builder: ColorStringBuilder,\r\n value: UnknownValue,\r\n indentLevel: number,\r\n): void {\r\n builder.withColorScope(propertyChangeTypeToColor[\"Delete\"], () => {\r\n formatJsonValue(builder, value, undefined, undefined, indentLevel);\r\n });\r\n}\r\n\r\nfunction fixSdkDeltaFormattingBug(value: UnknownValue): UnknownValue {\r\n // For some reason, the node SDK appears to conver strings incorrectly inside the \"delta\" object.\r\n // Instead of returning \"foo\", we get {0: 'f', 1: 'o', 2: 'o' }. This function works around this bug, by\r\n // trying to detect this heuristically, and convert back into the correct string format.\r\n // See https://github.com/Azure/bicep-deploy/issues/71 for more info.\r\n if (\r\n value === null ||\r\n typeof value !== \"object\" ||\r\n Object.keys(value).length === 0\r\n ) {\r\n return value;\r\n }\r\n\r\n let fixedString = \"\";\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n const objValue = value as any;\r\n const keys = Object.keys(objValue);\r\n for (let i = 0; i < keys.length; i++) {\r\n const nextChar = objValue[i.toString()];\r\n // be specific here with the check, to minimize the chance of\r\n // accidentally trying to convert a value that genuinely should be an object.\r\n if (typeof nextChar !== \"string\" || nextChar.length !== 1) {\r\n return value;\r\n }\r\n\r\n fixedString += nextChar;\r\n }\r\n\r\n return fixedString;\r\n}\r\n\r\nfunction formatPropertyModify(\r\n builder: ColorStringBuilder,\r\n before: UnknownValue,\r\n after: UnknownValue,\r\n children: WhatIfPropertyChange[],\r\n indentLevel: number,\r\n): void {\r\n if (children && children.length > 0) {\r\n // Has nested changes.\r\n builder.appendLine().appendLine();\r\n formatPropertyChanges(builder, sortChanges(children), indentLevel);\r\n } else {\r\n formatPropertyDelete(builder, before, indentLevel);\r\n\r\n // Space before =>\r\n if (isNonEmptyObject(before)) {\r\n builder.appendLine();\r\n formatIndent(builder, indentLevel);\r\n } else {\r\n builder.append(Symbol.WhiteSpace);\r\n }\r\n\r\n builder.append(\"=>\");\r\n\r\n // Space after =>\r\n if (!isNonEmptyObject(after)) {\r\n builder.append(Symbol.WhiteSpace);\r\n }\r\n\r\n formatPropertyCreate(builder, after, indentLevel);\r\n\r\n if (!isLeaf(before) && isLeaf(after)) {\r\n builder.appendLine();\r\n }\r\n }\r\n}\r\n\r\nfunction formatPropertyArrayChange(\r\n builder: ColorStringBuilder,\r\n parentPropertyChange: WhatIfPropertyChange,\r\n propertyChanges: WhatIfPropertyChange[],\r\n indentLevel: number,\r\n): void {\r\n if (!parentPropertyChange.path) {\r\n // The parent change doesn't have a path, which means the current\r\n // array change is a nested change. Decrease indent level.\r\n indentLevel -= 1;\r\n formatIndent(builder, indentLevel);\r\n }\r\n\r\n if (!propertyChanges || propertyChanges.length === 0) {\r\n builder.appendLine(\"[]\");\r\n return;\r\n }\r\n\r\n // [\r\n builder.append(Symbol.LeftSquareBracket).appendLine();\r\n\r\n formatPropertyChanges(builder, sortChanges(propertyChanges), indentLevel);\r\n\r\n // ]\r\n formatIndent(builder, indentLevel);\r\n builder.append(Symbol.RightSquareBracket);\r\n}\r\n\r\nfunction getApiVersion(resourceChange: WhatIfChange): string | undefined {\r\n if (resourceChange.before) {\r\n return resourceChange.before.apiVersion as string;\r\n }\r\n if (resourceChange.after) {\r\n return resourceChange.after.apiVersion as string;\r\n }\r\n}\r\n\r\nfunction getScope(resourceChange: WhatIfChange): string {\r\n if (!resourceChange.resourceId) {\r\n throw new Error(\r\n \"Extensible resource what-if is not currently supported by this Action. Please raise an issue: https://github.com/Azure/bicep-deploy/issues.\",\r\n );\r\n }\r\n\r\n const [scope] = splitResourceId(resourceChange.resourceId);\r\n return scope;\r\n}\r\n\r\nfunction getScopeUppercase(resourceChange: WhatIfChange): string {\r\n return getScope(resourceChange).toUpperCase();\r\n}\r\n\r\nfunction getRelativeResourceId(resourceChange: WhatIfChange): string {\r\n if (!resourceChange.resourceId) {\r\n throw new Error(\r\n \"Extensible resource what-if is not currently supported by this Action. Please raise an issue: https://github.com/Azure/bicep-deploy/issues.\",\r\n );\r\n }\r\n\r\n const [, relativeResourceId] = splitResourceId(resourceChange.resourceId);\r\n return relativeResourceId;\r\n}\r\n\r\nfunction getMaxPathLengthFromPropertyChanges(\r\n propertyChanges: WhatIfPropertyChange[],\r\n): number {\r\n if (!propertyChanges || propertyChanges.length === 0) {\r\n return 0;\r\n }\r\n\r\n const filteredPropertyChanges = propertyChanges.filter(\r\n shouldConsiderPropertyChangePath,\r\n );\r\n const pathLengths = filteredPropertyChanges.map(x => x.path.length);\r\n\r\n return Math.max(...pathLengths, 0);\r\n}\r\n\r\nfunction shouldConsiderPropertyChangePath(\r\n propertyChange: WhatIfPropertyChange,\r\n): boolean {\r\n const propertyChangeType = propertyChange.propertyChangeType;\r\n\r\n if (propertyChangeType === \"Create\") {\r\n return isLeaf(propertyChange.after);\r\n }\r\n\r\n if (propertyChangeType === \"Delete\" || propertyChangeType === \"Modify\") {\r\n return isLeaf(propertyChange.before);\r\n }\r\n\r\n return !propertyChange.children;\r\n}\r\n\r\nfunction formatJsonValue(\r\n builder: ColorStringBuilder,\r\n value: UnknownValue,\r\n path: string = \"\",\r\n maxPathLength: number = 0,\r\n indentLevel: number = 0,\r\n): void {\r\n value = fixSdkDeltaFormattingBug(value);\r\n\r\n if (isLeaf(value)) {\r\n const pathLength = maxPathLength - path.length + 1;\r\n formatJsonPath(builder, path, pathLength > 0 ? pathLength : 0, indentLevel);\r\n formatLeaf(builder, value);\r\n } else if (isNonEmptyArray(value)) {\r\n formatJsonPath(builder, path, 1, indentLevel);\r\n formatNonEmptyArray(builder, value, indentLevel);\r\n } else if (isNonEmptyObject(value)) {\r\n formatNonEmptyObject(builder, value, path, maxPathLength, indentLevel);\r\n } else {\r\n throw new Error(`Invalid JSON value: ${value}`);\r\n }\r\n}\r\n\r\nfunction formatLeaf(builder: ColorStringBuilder, value: UnknownValue): void {\r\n if (value === null) {\r\n builder.append(\"null\");\r\n } else if (typeof value === \"boolean\") {\r\n builder.append(String(value).toLowerCase());\r\n } else if (typeof value === \"string\") {\r\n builder.append(Symbol.Quote).append(value).append(Symbol.Quote);\r\n } else if (Array.isArray(value) && value.length === 0) {\r\n builder.append(\"[]\");\r\n } else if (typeof value === \"object\") {\r\n builder.append(\"{}\");\r\n } else {\r\n builder.append(String(value));\r\n }\r\n}\r\n\r\nfunction formatNonEmptyArray(\r\n builder: ColorStringBuilder,\r\n value: UnknownValue[],\r\n indentLevel: number,\r\n): void {\r\n builder.append(Symbol.LeftSquareBracket, Color.Reset).appendLine();\r\n\r\n const maxPathLength = getMaxPathLengthFromArray(value);\r\n\r\n value.forEach((childValue, index) => {\r\n const childPath = String(index);\r\n\r\n if (isNonEmptyObject(childValue)) {\r\n formatJsonPath(builder, childPath, 0, indentLevel + 1);\r\n formatNonEmptyObject(\r\n builder,\r\n childValue,\r\n undefined,\r\n undefined,\r\n indentLevel + 1,\r\n );\r\n } else {\r\n formatJsonValue(\r\n builder,\r\n childValue,\r\n childPath,\r\n maxPathLength,\r\n indentLevel + 1,\r\n );\r\n }\r\n\r\n builder.appendLine();\r\n });\r\n\r\n formatIndent(builder, indentLevel);\r\n builder.append(Symbol.RightSquareBracket, Color.Reset);\r\n}\r\n\r\nfunction formatNonEmptyObject(\r\n builder: ColorStringBuilder,\r\n value: Record,\r\n path: string = \"\",\r\n maxPathLength: number = 0,\r\n indentLevel: number = 0,\r\n): void {\r\n const isRoot = !path;\r\n\r\n if (!path) {\r\n // Root object.\r\n builder.appendLine().appendLine();\r\n maxPathLength = getMaxPathLengthFromObject(value);\r\n indentLevel += 1;\r\n }\r\n\r\n for (const [childPath, childValue] of entries(value)) {\r\n const formattedChildPath = isRoot\r\n ? childPath\r\n : `${path}${Symbol.Dot}${childPath}`;\r\n formatJsonValue(\r\n builder,\r\n childValue,\r\n formattedChildPath,\r\n maxPathLength,\r\n indentLevel,\r\n );\r\n\r\n if (!isNonEmptyObject(childValue)) {\r\n builder.appendLine();\r\n }\r\n }\r\n}\r\n\r\nfunction formatJsonPath(\r\n builder: ColorStringBuilder,\r\n path: string,\r\n paddingWidth: number,\r\n indentLevel: number,\r\n): void {\r\n formatPath(builder, path, paddingWidth, indentLevel, undefined, formatColon);\r\n}\r\n\r\nfunction formatPath(\r\n builder: ColorStringBuilder,\r\n path: string,\r\n paddingWidth: number,\r\n indentLevel: number,\r\n formatHead?: (builder: ColorStringBuilder) => void,\r\n formatTail?: (builder: ColorStringBuilder) => void,\r\n): void {\r\n if (!path) return;\r\n\r\n formatIndent(builder, indentLevel);\r\n\r\n if (formatHead) {\r\n formatHead(builder);\r\n }\r\n\r\n builder.append(path);\r\n\r\n if (formatTail) {\r\n formatTail(builder);\r\n }\r\n\r\n builder.append(\" \".repeat(paddingWidth));\r\n}\r\n\r\nfunction formatColon(builder: ColorStringBuilder): void {\r\n builder.append(Symbol.Colon, Color.Reset);\r\n}\r\n\r\nfunction formatIndent(\r\n builder: ColorStringBuilder,\r\n indentLevel: number = 1,\r\n): void {\r\n builder.append(\" \".repeat(2 * indentLevel));\r\n}\r\n\r\nfunction getMaxPathLengthFromArray(value: UnknownValue[]): number {\r\n let maxLengthIndex = 0;\r\n\r\n value.forEach((childValue, index) => {\r\n if (isLeaf(childValue)) {\r\n maxLengthIndex = index;\r\n }\r\n });\r\n\r\n return String(maxLengthIndex).length;\r\n}\r\n\r\nfunction getMaxPathLengthFromObject(\r\n value: Record,\r\n): number {\r\n let maxPathLength = 0;\r\n\r\n for (const [key, childValue] of entries(value)) {\r\n if (isNonEmptyArray(childValue)) {\r\n continue; // Ignore array paths\r\n }\r\n\r\n const currentPathLength = isNonEmptyObject(childValue)\r\n ? key.length + 1 + getMaxPathLengthFromObject(childValue)\r\n : key.length;\r\n\r\n maxPathLength = Math.max(maxPathLength, currentPathLength);\r\n }\r\n\r\n return maxPathLength;\r\n}\r\n\r\nfunction isLeaf(value: UnknownValue): boolean {\r\n return (\r\n value === null ||\r\n value === undefined ||\r\n typeof value === \"boolean\" ||\r\n typeof value === \"number\" ||\r\n typeof value === \"string\" ||\r\n (Array.isArray(value) && value.length === 0) ||\r\n (typeof value === \"object\" && value && Object.keys(value).length === 0)\r\n );\r\n}\r\n\r\nfunction isNonEmptyArray(value: UnknownValue): value is UnknownValue[] {\r\n return Array.isArray(value) && value.length > 0;\r\n}\r\n\r\nfunction isNonEmptyObject(\r\n value: UnknownValue,\r\n): value is Record {\r\n return (\r\n typeof value === \"object\" && value !== null && Object.keys(value).length > 0\r\n );\r\n}\r\n\r\nfunction sortChanges(changes: WhatIfPropertyChange[]) {\r\n return changes\r\n .slice()\r\n .sort(\r\n (a, b) =>\r\n propertyChangeTypeToWeight[a.propertyChangeType] -\r\n propertyChangeTypeToWeight[b.propertyChangeType] ||\r\n a.path.localeCompare(b.path),\r\n );\r\n}\r\n\r\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\r\nfunction groupBy(\r\n array: T[],\r\n getKey: (item: T) => K,\r\n): Record {\r\n return array.reduce(\r\n (result, item) => {\r\n const key = getKey(item);\r\n (result[key] = result[key] || []).push(item);\r\n return result;\r\n },\r\n {} as Record,\r\n );\r\n}\r\n\r\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\r\nfunction entries(record: Record): [K, T][] {\r\n return Object.entries(record) as [K, T][];\r\n}\r\n\r\nfunction splitResourceId(resourceId: string): [string, string] {\r\n const providers = \"/providers/\";\r\n const providersIndex = resourceId.lastIndexOf(providers);\r\n if (providersIndex === -1) {\r\n const rgMatches = [\r\n ...resourceId.matchAll(\r\n /^(\\/subscriptions\\/[^/]+)\\/(resourceGroups\\/[^/]+)$/gi,\r\n ),\r\n ];\r\n\r\n if (rgMatches[0]) {\r\n return [rgMatches[0][1], rgMatches[0][2]];\r\n }\r\n\r\n return [\"/\", resourceId.substring(1)];\r\n }\r\n\r\n return [\r\n resourceId.substring(0, providersIndex),\r\n resourceId.substring(providersIndex + providers.length),\r\n ];\r\n}\r\n", "// Copyright (c) Microsoft Corporation.\r\n// Licensed under the MIT License.\r\nimport { run } from \"./main\";\r\n\r\nrun();\r\n"], - "mappings": "qzCAUA,SAAgBA,GAAeC,EAAU,CACvC,OAAIA,GAAU,KACL,GACE,OAAOA,GAAU,UAAYA,aAAiB,OAChDA,EAEF,KAAK,UAAUA,CAAK,CAC7B,CAPAC,GAAA,eAAAF,GAeA,SAAgBG,GACdC,EAA0C,CAE1C,OAAK,OAAO,KAAKA,CAAoB,EAAE,OAIhC,CACL,MAAOA,EAAqB,MAC5B,KAAMA,EAAqB,KAC3B,KAAMA,EAAqB,UAC3B,QAASA,EAAqB,QAC9B,IAAKA,EAAqB,YAC1B,UAAWA,EAAqB,WATzB,CAAA,CAWX,CAfAF,GAAA,oBAAAC,qvBCzBA,IAAAE,GAAAC,GAAA,QAAA,IAAA,CAAA,EACAC,GAAA,KAqBA,SAAgBC,GACdC,EACAC,EACAC,EAAY,CAEZ,IAAMC,EAAM,IAAIC,GAAQJ,EAASC,EAAYC,CAAO,EACpD,QAAQ,OAAO,MAAMC,EAAI,SAAQ,EAAKP,GAAG,GAAG,CAC9C,CAPAS,GAAA,aAAAN,GASA,SAAgBO,GAAMC,EAAcL,EAAU,GAAE,CAC9CH,GAAaQ,EAAM,CAAA,EAAIL,CAAO,CAChC,CAFAG,GAAA,MAAAC,GAIA,IAAME,GAAa,KAEbJ,GAAN,KAAa,CAKX,YAAYJ,EAAiBC,EAA+BC,EAAe,CACpEF,IACHA,EAAU,mBAGZ,KAAK,QAAUA,EACf,KAAK,WAAaC,EAClB,KAAK,QAAUC,CACjB,CAEA,UAAQ,CACN,IAAIO,EAASD,GAAa,KAAK,QAE/B,GAAI,KAAK,YAAc,OAAO,KAAK,KAAK,UAAU,EAAE,OAAS,EAAG,CAC9DC,GAAU,IACV,IAAIC,EAAQ,GACZ,QAAWC,KAAO,KAAK,WACrB,GAAI,KAAK,WAAW,eAAeA,CAAG,EAAG,CACvC,IAAMC,EAAM,KAAK,WAAWD,CAAG,EAC3BC,IACEF,EACFA,EAAQ,GAERD,GAAU,IAGZA,GAAU,GAAGE,CAAG,IAAIE,GAAeD,CAAG,CAAC,KAM/C,OAAAH,GAAU,GAAGD,EAAU,GAAGM,GAAW,KAAK,OAAO,CAAC,GAC3CL,CACT,GAGF,SAASK,GAAWC,EAAM,CACxB,SAAOjB,GAAA,gBAAeiB,CAAC,EACpB,QAAQ,KAAM,KAAK,EACnB,QAAQ,MAAO,KAAK,EACpB,QAAQ,MAAO,KAAK,CACzB,CAEA,SAASF,GAAeE,EAAM,CAC5B,SAAOjB,GAAA,gBAAeiB,CAAC,EACpB,QAAQ,KAAM,KAAK,EACnB,QAAQ,MAAO,KAAK,EACpB,QAAQ,MAAO,KAAK,EACpB,QAAQ,KAAM,KAAK,EACnB,QAAQ,KAAM,KAAK,CACxB,ywBCxFA,IAAAC,GAAAC,GAAA,QAAA,QAAA,CAAA,EACAC,GAAAD,GAAA,QAAA,IAAA,CAAA,EACAE,GAAAF,GAAA,QAAA,IAAA,CAAA,EACAG,GAAA,KAEA,SAAgBC,GAAiBC,EAAiBC,EAAY,CAC5D,IAAMC,EAAW,QAAQ,IAAI,UAAUF,CAAO,EAAE,EAChD,GAAI,CAACE,EACH,MAAM,IAAI,MACR,wDAAwDF,CAAO,EAAE,EAGrE,GAAI,CAACJ,GAAG,WAAWM,CAAQ,EACzB,MAAM,IAAI,MAAM,yBAAyBA,CAAQ,EAAE,EAGrDN,GAAG,eAAeM,EAAU,MAAGJ,GAAA,gBAAeG,CAAO,CAAC,GAAGJ,GAAG,GAAG,GAAI,CACjE,SAAU,OACX,CACH,CAdAM,GAAA,iBAAAJ,GAgBA,SAAgBK,GAAuBC,EAAaC,EAAU,CAC5D,IAAMC,EAAY,gBAAgBb,GAAO,WAAU,CAAE,GAC/Cc,KAAiBV,GAAA,gBAAeQ,CAAK,EAK3C,GAAID,EAAI,SAASE,CAAS,EACxB,MAAM,IAAI,MACR,4DAA4DA,CAAS,GAAG,EAI5E,GAAIC,EAAe,SAASD,CAAS,EACnC,MAAM,IAAI,MACR,6DAA6DA,CAAS,GAAG,EAI7E,MAAO,GAAGF,CAAG,KAAKE,CAAS,GAAGV,GAAG,GAAG,GAAGW,CAAc,GAAGX,GAAG,GAAG,GAAGU,CAAS,EAC5E,CApBAJ,GAAA,uBAAAC,uHC1BA,SAAgBK,GAAYC,EAAW,CACrC,IAAMC,EAAWD,EAAO,WAAa,SAErC,GAAIE,GAAYF,CAAM,EACpB,OAGF,IAAMG,EACAF,EACK,QAAQ,IAAI,aAAkB,QAAQ,IAAI,YAE1C,QAAQ,IAAI,YAAiB,QAAQ,IAAI,WAIpD,GAAIE,EACF,GAAI,CACF,OAAO,IAAIC,GAAWD,CAAQ,OACxB,CACN,GAAI,CAACA,EAAS,WAAW,SAAS,GAAK,CAACA,EAAS,WAAW,UAAU,EACpE,OAAO,IAAIC,GAAW,UAAUD,CAAQ,EAAE,MAG9C,OAEJ,CAzBAE,GAAA,YAAAN,GA2BA,SAAgBG,GAAYF,EAAW,CACrC,GAAI,CAACA,EAAO,SACV,MAAO,GAGT,IAAMM,EAAUN,EAAO,SACvB,GAAIO,GAAkBD,CAAO,EAC3B,MAAO,GAGT,IAAME,EAAU,QAAQ,IAAI,UAAe,QAAQ,IAAI,UAAe,GACtE,GAAI,CAACA,EACH,MAAO,GAIT,IAAIC,EACAT,EAAO,KACTS,EAAU,OAAOT,EAAO,IAAI,EACnBA,EAAO,WAAa,QAC7BS,EAAU,GACDT,EAAO,WAAa,WAC7BS,EAAU,KAIZ,IAAMC,EAAgB,CAACV,EAAO,SAAS,YAAW,CAAE,EAChD,OAAOS,GAAY,UACrBC,EAAc,KAAK,GAAGA,EAAc,CAAC,CAAC,IAAID,CAAO,EAAE,EAIrD,QAAWE,KAAoBH,EAC5B,MAAM,GAAG,EACT,IAAII,GAAKA,EAAE,KAAI,EAAG,YAAW,CAAE,EAC/B,OAAOA,GAAKA,CAAC,EACd,GACED,IAAqB,KACrBD,EAAc,KACZE,GACEA,IAAMD,GACNC,EAAE,SAAS,IAAID,CAAgB,EAAE,GAChCA,EAAiB,WAAW,GAAG,GAC9BC,EAAE,SAAS,GAAGD,CAAgB,EAAE,CAAE,EAGxC,MAAO,GAIX,MAAO,EACT,CAnDAN,GAAA,YAAAH,GAqDA,SAASK,GAAkBM,EAAY,CACrC,IAAMC,EAAYD,EAAK,YAAW,EAClC,OACEC,IAAc,aACdA,EAAU,WAAW,MAAM,GAC3BA,EAAU,WAAW,OAAO,GAC5BA,EAAU,WAAW,mBAAmB,CAE5C,CAEA,IAAMV,GAAN,cAAyB,GAAG,CAI1B,YAAYW,EAAmBC,EAAmB,CAChD,MAAMD,EAAKC,CAAI,EACf,KAAK,iBAAmB,mBAAmB,MAAM,QAAQ,EACzD,KAAK,iBAAmB,mBAAmB,MAAM,QAAQ,CAC3D,CAEA,IAAI,UAAQ,CACV,OAAO,KAAK,gBACd,CAEA,IAAI,UAAQ,CACV,OAAO,KAAK,gBACd,KC1GF,IAAAC,GAAAC,EAAAC,IAAA,cAEA,IAAIC,IAAM,QAAQ,KAAK,EACnBC,GAAM,QAAQ,KAAK,EACnBC,GAAO,QAAQ,MAAM,EACrBC,GAAQ,QAAQ,OAAO,EACvBC,GAAS,QAAQ,QAAQ,EACzBC,IAAS,QAAQ,QAAQ,EACzBC,GAAO,QAAQ,MAAM,EAGzBP,GAAQ,aAAeQ,GACvBR,GAAQ,cAAgBS,GACxBT,GAAQ,cAAgBU,GACxBV,GAAQ,eAAiBW,GAGzB,SAASH,GAAaI,EAAS,CAC7B,IAAIC,EAAQ,IAAIC,GAAeF,CAAO,EACtC,OAAAC,EAAM,QAAUV,GAAK,QACdU,CACT,CAEA,SAASJ,GAAcG,EAAS,CAC9B,IAAIC,EAAQ,IAAIC,GAAeF,CAAO,EACtC,OAAAC,EAAM,QAAUV,GAAK,QACrBU,EAAM,aAAeE,GACrBF,EAAM,YAAc,IACbA,CACT,CAEA,SAASH,GAAcE,EAAS,CAC9B,IAAIC,EAAQ,IAAIC,GAAeF,CAAO,EACtC,OAAAC,EAAM,QAAUT,GAAM,QACfS,CACT,CAEA,SAASF,GAAeC,EAAS,CAC/B,IAAIC,EAAQ,IAAIC,GAAeF,CAAO,EACtC,OAAAC,EAAM,QAAUT,GAAM,QACtBS,EAAM,aAAeE,GACrBF,EAAM,YAAc,IACbA,CACT,CAGA,SAASC,GAAeF,EAAS,CAC/B,IAAII,EAAO,KACXA,EAAK,QAAUJ,GAAW,CAAC,EAC3BI,EAAK,aAAeA,EAAK,QAAQ,OAAS,CAAC,EAC3CA,EAAK,WAAaA,EAAK,QAAQ,YAAcb,GAAK,MAAM,kBACxDa,EAAK,SAAW,CAAC,EACjBA,EAAK,QAAU,CAAC,EAEhBA,EAAK,GAAG,OAAQ,SAAgBC,EAAQC,EAAMC,EAAMC,EAAc,CAEhE,QADIR,EAAUS,GAAUH,EAAMC,EAAMC,CAAY,EACvCE,EAAI,EAAGC,EAAMP,EAAK,SAAS,OAAQM,EAAIC,EAAK,EAAED,EAAG,CACxD,IAAIE,EAAUR,EAAK,SAASM,CAAC,EAC7B,GAAIE,EAAQ,OAASZ,EAAQ,MAAQY,EAAQ,OAASZ,EAAQ,KAAM,CAGlEI,EAAK,SAAS,OAAOM,EAAG,CAAC,EACzBE,EAAQ,QAAQ,SAASP,CAAM,EAC/B,MACF,CACF,CACAA,EAAO,QAAQ,EACfD,EAAK,aAAaC,CAAM,CAC1B,CAAC,CACH,CACAV,GAAK,SAASO,GAAgBT,GAAO,YAAY,EAEjDS,GAAe,UAAU,WAAa,SAAoBW,EAAKP,EAAMC,EAAMC,EAAc,CACvF,IAAIJ,EAAO,KACPJ,EAAUc,GAAa,CAAC,QAASD,CAAG,EAAGT,EAAK,QAASK,GAAUH,EAAMC,EAAMC,CAAY,CAAC,EAE5F,GAAIJ,EAAK,QAAQ,QAAU,KAAK,WAAY,CAE1CA,EAAK,SAAS,KAAKJ,CAAO,EAC1B,MACF,CAGAI,EAAK,aAAaJ,EAAS,SAASK,EAAQ,CAC1CA,EAAO,GAAG,OAAQU,CAAM,EACxBV,EAAO,GAAG,QAASW,CAAe,EAClCX,EAAO,GAAG,cAAeW,CAAe,EACxCH,EAAI,SAASR,CAAM,EAEnB,SAASU,GAAS,CAChBX,EAAK,KAAK,OAAQC,EAAQL,CAAO,CACnC,CAEA,SAASgB,EAAgBC,EAAK,CAC5Bb,EAAK,aAAaC,CAAM,EACxBA,EAAO,eAAe,OAAQU,CAAM,EACpCV,EAAO,eAAe,QAASW,CAAe,EAC9CX,EAAO,eAAe,cAAeW,CAAe,CACtD,CACF,CAAC,CACH,EAEAd,GAAe,UAAU,aAAe,SAAsBF,EAASkB,EAAI,CACzE,IAAId,EAAO,KACPe,EAAc,CAAC,EACnBf,EAAK,QAAQ,KAAKe,CAAW,EAE7B,IAAIC,EAAiBN,GAAa,CAAC,EAAGV,EAAK,aAAc,CACvD,OAAQ,UACR,KAAMJ,EAAQ,KAAO,IAAMA,EAAQ,KACnC,MAAO,GACP,QAAS,CACP,KAAMA,EAAQ,KAAO,IAAMA,EAAQ,IACrC,CACF,CAAC,EACGA,EAAQ,eACVoB,EAAe,aAAepB,EAAQ,cAEpCoB,EAAe,YACjBA,EAAe,QAAUA,EAAe,SAAW,CAAC,EACpDA,EAAe,QAAQ,qBAAqB,EAAI,SAC5C,IAAI,OAAOA,EAAe,SAAS,EAAE,SAAS,QAAQ,GAG5DC,GAAM,wBAAwB,EAC9B,IAAIC,EAAalB,EAAK,QAAQgB,CAAc,EAC5CE,EAAW,4BAA8B,GACzCA,EAAW,KAAK,WAAYC,CAAU,EACtCD,EAAW,KAAK,UAAWE,CAAS,EACpCF,EAAW,KAAK,UAAWG,CAAS,EACpCH,EAAW,KAAK,QAASI,CAAO,EAChCJ,EAAW,IAAI,EAEf,SAASC,EAAWI,EAAK,CAEvBA,EAAI,QAAU,EAChB,CAEA,SAASH,EAAUG,EAAKtB,EAAQuB,EAAM,CAEpC,QAAQ,SAAS,UAAW,CAC1BH,EAAUE,EAAKtB,EAAQuB,CAAI,CAC7B,CAAC,CACH,CAEA,SAASH,EAAUE,EAAKtB,EAAQuB,EAAM,CAIpC,GAHAN,EAAW,mBAAmB,EAC9BjB,EAAO,mBAAmB,EAEtBsB,EAAI,aAAe,IAAK,CAC1BN,GAAM,2DACJM,EAAI,UAAU,EAChBtB,EAAO,QAAQ,EACf,IAAIwB,EAAQ,IAAI,MAAM,yDACJF,EAAI,UAAU,EAChCE,EAAM,KAAO,aACb7B,EAAQ,QAAQ,KAAK,QAAS6B,CAAK,EACnCzB,EAAK,aAAae,CAAW,EAC7B,MACF,CACA,GAAIS,EAAK,OAAS,EAAG,CACnBP,GAAM,sCAAsC,EAC5ChB,EAAO,QAAQ,EACf,IAAIwB,EAAQ,IAAI,MAAM,sCAAsC,EAC5DA,EAAM,KAAO,aACb7B,EAAQ,QAAQ,KAAK,QAAS6B,CAAK,EACnCzB,EAAK,aAAae,CAAW,EAC7B,MACF,CACA,OAAAE,GAAM,sCAAsC,EAC5CjB,EAAK,QAAQA,EAAK,QAAQ,QAAQe,CAAW,CAAC,EAAId,EAC3Ca,EAAGb,CAAM,CAClB,CAEA,SAASqB,EAAQI,EAAO,CACtBR,EAAW,mBAAmB,EAE9BD,GAAM;AAAA,EACAS,EAAM,QAASA,EAAM,KAAK,EAChC,IAAID,EAAQ,IAAI,MAAM,oDACWC,EAAM,OAAO,EAC9CD,EAAM,KAAO,aACb7B,EAAQ,QAAQ,KAAK,QAAS6B,CAAK,EACnCzB,EAAK,aAAae,CAAW,CAC/B,CACF,EAEAjB,GAAe,UAAU,aAAe,SAAsBG,EAAQ,CACpE,IAAI0B,EAAM,KAAK,QAAQ,QAAQ1B,CAAM,EACrC,GAAI0B,IAAQ,GAGZ,MAAK,QAAQ,OAAOA,EAAK,CAAC,EAE1B,IAAInB,EAAU,KAAK,SAAS,MAAM,EAC9BA,GAGF,KAAK,aAAaA,EAAS,SAASP,EAAQ,CAC1CO,EAAQ,QAAQ,SAASP,CAAM,CACjC,CAAC,EAEL,EAEA,SAASF,GAAmBH,EAASkB,EAAI,CACvC,IAAId,EAAO,KACXF,GAAe,UAAU,aAAa,KAAKE,EAAMJ,EAAS,SAASK,EAAQ,CACzE,IAAI2B,EAAahC,EAAQ,QAAQ,UAAU,MAAM,EAC7CiC,EAAanB,GAAa,CAAC,EAAGV,EAAK,QAAS,CAC9C,OAAQC,EACR,WAAY2B,EAAaA,EAAW,QAAQ,OAAQ,EAAE,EAAIhC,EAAQ,IACpE,CAAC,EAGGkC,EAAe5C,GAAI,QAAQ,EAAG2C,CAAU,EAC5C7B,EAAK,QAAQA,EAAK,QAAQ,QAAQC,CAAM,CAAC,EAAI6B,EAC7ChB,EAAGgB,CAAY,CACjB,CAAC,CACH,CAGA,SAASzB,GAAUH,EAAMC,EAAMC,EAAc,CAC3C,OAAI,OAAOF,GAAS,SACX,CACL,KAAMA,EACN,KAAMC,EACN,aAAcC,CAChB,EAEKF,CACT,CAEA,SAASQ,GAAaqB,EAAQ,CAC5B,QAASzB,EAAI,EAAGC,EAAM,UAAU,OAAQD,EAAIC,EAAK,EAAED,EAAG,CACpD,IAAI0B,EAAY,UAAU1B,CAAC,EAC3B,GAAI,OAAO0B,GAAc,SAEvB,QADIC,EAAO,OAAO,KAAKD,CAAS,EACvBE,EAAI,EAAGC,EAASF,EAAK,OAAQC,EAAIC,EAAQ,EAAED,EAAG,CACrD,IAAIE,EAAIH,EAAKC,CAAC,EACVF,EAAUI,CAAC,IAAM,SACnBL,EAAOK,CAAC,EAAIJ,EAAUI,CAAC,EAE3B,CAEJ,CACA,OAAOL,CACT,CAGA,IAAId,GACA,QAAQ,IAAI,YAAc,aAAa,KAAK,QAAQ,IAAI,UAAU,EACpEA,GAAQ,UAAW,CACjB,IAAIoB,EAAO,MAAM,UAAU,MAAM,KAAK,SAAS,EAC3C,OAAOA,EAAK,CAAC,GAAM,SACrBA,EAAK,CAAC,EAAI,WAAaA,EAAK,CAAC,EAE7BA,EAAK,QAAQ,SAAS,EAExB,QAAQ,MAAM,MAAM,QAASA,CAAI,CACnC,EAEApB,GAAQ,UAAW,CAAC,EAEtBjC,GAAQ,MAAQiC,KCvQhB,IAAAqB,GAAAC,EAAA,CAAAC,IAAAC,KAAA,CAAAA,GAAO,QAAU,OCAjB,IAAAC,GAAAC,EAAA,CAAAC,IAAAC,KAAA,CAAAA,GAAO,QAAU,CACf,OAAQ,OAAO,OAAO,EACtB,SAAU,OAAO,SAAS,EAC1B,UAAW,OAAO,UAAU,EAC5B,KAAM,OAAO,KAAK,EAClB,SAAU,OAAO,SAAS,EAC1B,UAAW,OAAO,UAAU,EAC5B,OAAQ,OAAO,OAAO,EACtB,SAAU,OAAO,SAAS,EAC1B,YAAa,OAAO,YAAY,EAChC,aAAc,OAAO,cAAc,EACnC,yBAA0B,OAAO,4BAA4B,EAC7D,qBAAsB,OAAO,wBAAwB,EACrD,2BAA4B,OAAO,8BAA8B,EACjE,uBAAwB,OAAO,oBAAoB,EACnD,WAAY,OAAO,YAAY,EAC/B,gBAAiB,OAAO,iBAAiB,EACzC,aAAc,OAAO,cAAc,EACnC,YAAa,OAAO,aAAa,EACjC,cAAe,OAAO,eAAe,EACrC,MAAO,OAAO,MAAM,EACpB,OAAQ,OAAO,QAAQ,EACvB,UAAW,OAAO,MAAM,EACxB,SAAU,OAAO,SAAS,EAC1B,UAAW,OAAO,UAAU,EAC5B,SAAU,OAAO,SAAS,EAC1B,MAAO,OAAO,MAAM,EACpB,MAAO,OAAO,MAAM,EACpB,QAAS,OAAO,QAAQ,EACxB,MAAO,OAAO,MAAM,EACpB,WAAY,OAAO,WAAW,EAC9B,QAAS,OAAO,QAAQ,EACxB,WAAY,OAAO,YAAY,EAC/B,OAAQ,OAAO,OAAO,EACtB,WAAY,OAAO,IAAI,yBAAyB,EAChD,gBAAiB,OAAO,kBAAkB,EAC1C,YAAa,OAAO,eAAe,EACnC,YAAa,OAAO,eAAe,EACnC,OAAQ,OAAO,OAAO,EACtB,SAAU,OAAO,SAAS,EAC1B,QAAS,OAAO,QAAQ,EACxB,QAAS,OAAO,QAAQ,EACxB,aAAc,OAAO,mBAAmB,EACxC,YAAa,OAAO,YAAY,EAChC,QAAS,OAAO,QAAQ,EACxB,YAAa,OAAO,aAAa,EACjC,WAAY,OAAO,WAAW,EAC9B,qBAAsB,OAAO,uBAAuB,EACpD,iBAAkB,OAAO,iBAAiB,EAC1C,aAAc,OAAO,sBAAsB,EAC3C,OAAQ,OAAO,qBAAqB,EACpC,SAAU,OAAO,wBAAwB,EACzC,cAAe,OAAO,uBAAuB,EAC7C,iBAAkB,OAAO,mBAAmB,EAC5C,cAAe,OAAO,cAAc,EACpC,mBAAoB,OAAO,oBAAoB,EAC/C,mBAAoB,OAAO,qBAAqB,EAChD,mBAAoB,OAAO,qBAAqB,EAChD,kBAAmB,OAAO,oBAAoB,EAC9C,iBAAkB,OAAO,yBAAyB,EAClD,0BAA2B,OAAO,2BAA2B,EAC7D,WAAY,OAAO,eAAe,CACpC,IC9DA,IAAAC,GAAAC,EAAA,CAAAC,IAAAC,KAAA,cAEA,IAAMC,GAAN,cAA0B,KAAM,CAC9B,YAAaC,EAAS,CACpB,MAAMA,CAAO,EACb,KAAK,KAAO,cACZ,KAAK,KAAO,SACd,CACF,EAEMC,GAAN,MAAMC,UAA4BH,EAAY,CAC5C,YAAaC,EAAS,CACpB,MAAMA,CAAO,EACb,MAAM,kBAAkB,KAAME,CAAmB,EACjD,KAAK,KAAO,sBACZ,KAAK,QAAUF,GAAW,wBAC1B,KAAK,KAAO,yBACd,CACF,EAEMG,GAAN,MAAMC,UAA4BL,EAAY,CAC5C,YAAaC,EAAS,CACpB,MAAMA,CAAO,EACb,MAAM,kBAAkB,KAAMI,CAAmB,EACjD,KAAK,KAAO,sBACZ,KAAK,QAAUJ,GAAW,wBAC1B,KAAK,KAAO,yBACd,CACF,EAEMK,GAAN,MAAMC,UAA6BP,EAAY,CAC7C,YAAaC,EAAS,CACpB,MAAMA,CAAO,EACb,MAAM,kBAAkB,KAAMM,CAAoB,EAClD,KAAK,KAAO,uBACZ,KAAK,QAAUN,GAAW,yBAC1B,KAAK,KAAO,0BACd,CACF,EAEMO,GAAN,MAAMC,UAAyBT,EAAY,CACzC,YAAaC,EAAS,CACpB,MAAMA,CAAO,EACb,MAAM,kBAAkB,KAAMQ,CAAgB,EAC9C,KAAK,KAAO,mBACZ,KAAK,QAAUR,GAAW,qBAC1B,KAAK,KAAO,sBACd,CACF,EAEMS,GAAN,MAAMC,UAAgCX,EAAY,CAChD,YAAaC,EAASW,EAAYC,EAASC,EAAM,CAC/C,MAAMb,CAAO,EACb,MAAM,kBAAkB,KAAMU,CAAuB,EACrD,KAAK,KAAO,0BACZ,KAAK,QAAUV,GAAW,6BAC1B,KAAK,KAAO,+BACZ,KAAK,KAAOa,EACZ,KAAK,OAASF,EACd,KAAK,WAAaA,EAClB,KAAK,QAAUC,CACjB,CACF,EAEME,GAAN,MAAMC,UAA6BhB,EAAY,CAC7C,YAAaC,EAAS,CACpB,MAAMA,CAAO,EACb,MAAM,kBAAkB,KAAMe,CAAoB,EAClD,KAAK,KAAO,uBACZ,KAAK,QAAUf,GAAW,yBAC1B,KAAK,KAAO,qBACd,CACF,EAEMgB,GAAN,MAAMC,UAAgClB,EAAY,CAChD,YAAaC,EAAS,CACpB,MAAMA,CAAO,EACb,MAAM,kBAAkB,KAAMiB,CAAuB,EACrD,KAAK,KAAO,0BACZ,KAAK,QAAUjB,GAAW,6BAC1B,KAAK,KAAO,8BACd,CACF,EAEMkB,GAAN,MAAMC,UAA4BpB,EAAY,CAC5C,YAAaC,EAAS,CACpB,MAAMA,CAAO,EACb,MAAM,kBAAkB,KAAMmB,CAAmB,EACjD,KAAK,KAAO,aACZ,KAAK,QAAUnB,GAAW,kBAC1B,KAAK,KAAO,iBACd,CACF,EAEMoB,GAAN,MAAMC,UAA2BtB,EAAY,CAC3C,YAAaC,EAAS,CACpB,MAAMA,CAAO,EACb,MAAM,kBAAkB,KAAMqB,CAAkB,EAChD,KAAK,KAAO,qBACZ,KAAK,QAAUrB,GAAW,sBAC1B,KAAK,KAAO,cACd,CACF,EAEMsB,GAAN,MAAMC,UAA0CxB,EAAY,CAC1D,YAAaC,EAAS,CACpB,MAAMA,CAAO,EACb,MAAM,kBAAkB,KAAMuB,CAAiC,EAC/D,KAAK,KAAO,oCACZ,KAAK,QAAUvB,GAAW,2DAC1B,KAAK,KAAO,qCACd,CACF,EAEMwB,GAAN,MAAMC,UAA2C1B,EAAY,CAC3D,YAAaC,EAAS,CACpB,MAAMA,CAAO,EACb,MAAM,kBAAkB,KAAMyB,CAAkC,EAChE,KAAK,KAAO,qCACZ,KAAK,QAAUzB,GAAW,4DAC1B,KAAK,KAAO,qCACd,CACF,EAEM0B,GAAN,MAAMC,UAA6B5B,EAAY,CAC7C,YAAaC,EAAS,CACpB,MAAMA,CAAO,EACb,MAAM,kBAAkB,KAAM2B,CAAoB,EAClD,KAAK,KAAO,uBACZ,KAAK,QAAU3B,GAAW,0BAC1B,KAAK,KAAO,mBACd,CACF,EAEM4B,GAAN,MAAMC,UAA0B9B,EAAY,CAC1C,YAAaC,EAAS,CACpB,MAAMA,CAAO,EACb,MAAM,kBAAkB,KAAM6B,CAAiB,EAC/C,KAAK,KAAO,oBACZ,KAAK,QAAU7B,GAAW,uBAC1B,KAAK,KAAO,gBACd,CACF,EAEM8B,GAAN,MAAMC,UAAoBhC,EAAY,CACpC,YAAaC,EAASgC,EAAQ,CAC5B,MAAMhC,CAAO,EACb,MAAM,kBAAkB,KAAM+B,CAAW,EACzC,KAAK,KAAO,cACZ,KAAK,QAAU/B,GAAW,eAC1B,KAAK,KAAO,iBACZ,KAAK,OAASgC,CAChB,CACF,EAEMC,GAAN,MAAMC,UAA0BnC,EAAY,CAC1C,YAAaC,EAAS,CACpB,MAAMA,CAAO,EACb,MAAM,kBAAkB,KAAMkC,CAAiB,EAC/C,KAAK,KAAO,oBACZ,KAAK,QAAUlC,GAAW,sBAC1B,KAAK,KAAO,uBACd,CACF,EAEMmC,GAAN,cAA+CpC,EAAY,CACzD,YAAaC,EAAS,CACpB,MAAMA,CAAO,EACb,MAAM,kBAAkB,KAAMiC,EAAiB,EAC/C,KAAK,KAAO,uBACZ,KAAK,QAAUjC,GAAW,iDAC1B,KAAK,KAAO,8BACd,CACF,EAEMoC,GAAN,MAAMC,UAAwB,KAAM,CAClC,YAAarC,EAASsC,EAAMC,EAAM,CAChC,MAAMvC,CAAO,EACb,MAAM,kBAAkB,KAAMqC,CAAe,EAC7C,KAAK,KAAO,kBACZ,KAAK,KAAOC,EAAO,OAAOA,CAAI,GAAK,OACnC,KAAK,KAAOC,EAAOA,EAAK,SAAS,EAAI,MACvC,CACF,EAEMC,GAAN,MAAMC,UAAqC1C,EAAY,CACrD,YAAaC,EAAS,CACpB,MAAMA,CAAO,EACb,MAAM,kBAAkB,KAAMyC,CAA4B,EAC1D,KAAK,KAAO,+BACZ,KAAK,QAAUzC,GAAW,qCAC1B,KAAK,KAAO,+BACd,CACF,EAEM0C,GAAN,MAAMC,UAA0B5C,EAAY,CAC1C,YAAaC,EAASsC,EAAM,CAAE,QAAA1B,EAAS,KAAA2B,CAAK,EAAG,CAC7C,MAAMvC,CAAO,EACb,MAAM,kBAAkB,KAAM2C,CAAiB,EAC/C,KAAK,KAAO,oBACZ,KAAK,QAAU3C,GAAW,sBAC1B,KAAK,KAAO,oBACZ,KAAK,WAAasC,EAClB,KAAK,KAAOC,EACZ,KAAK,QAAU3B,CACjB,CACF,EAEAd,GAAO,QAAU,CACf,gBAAAsC,GACA,YAAArC,GACA,oBAAAI,GACA,qBAAAE,GACA,iBAAAE,GACA,kCAAAe,GACA,oBAAArB,GACA,wBAAAQ,GACA,qBAAAK,GACA,wBAAAE,GACA,oBAAAE,GACA,qBAAAQ,GACA,kBAAAE,GACA,mBAAAR,GACA,YAAAU,GACA,kBAAAG,GACA,mCAAAT,GACA,iCAAAW,GACA,6BAAAK,GACA,kBAAAE,EACF,ICrOA,IAAAE,GAAAC,EAAA,CAAAC,IAAAC,KAAA,cAGA,IAAMC,GAA6B,CAAC,EAG9BC,GAAuB,CAC3B,SACA,kBACA,kBACA,gBACA,mCACA,+BACA,+BACA,8BACA,gCACA,yBACA,iCACA,gCACA,MACA,QACA,UACA,WACA,gBACA,gBACA,kBACA,aACA,sBACA,mBACA,mBACA,iBACA,mBACA,gBACA,0BACA,sCACA,eACA,SACA,+BACA,6BACA,+BACA,OACA,gBACA,WACA,MACA,OACA,SACA,YACA,UACA,YACA,OACA,OACA,WACA,oBACA,gBACA,WACA,sBACA,aACA,gBACA,OACA,WACA,eACA,SACA,qBACA,SACA,qBACA,sBACA,MACA,QACA,UACA,kBACA,UACA,cACA,uBACA,2BACA,oBACA,yBACA,wBACA,SACA,gBACA,yBACA,oCACA,aACA,YACA,4BACA,wBACA,KACA,sBACA,UACA,oBACA,UACA,4BACA,aACA,OACA,MACA,mBACA,yBACA,yBACA,kBACA,oCACA,eACA,mBACA,kBACF,EAEA,QAASC,EAAI,EAAGA,EAAID,GAAqB,OAAQ,EAAEC,EAAG,CACpD,IAAMC,EAAMF,GAAqBC,CAAC,EAC5BE,EAAgBD,EAAI,YAAY,EACtCH,GAA2BG,CAAG,EAAIH,GAA2BI,CAAa,EACxEA,CACJ,CAGA,OAAO,eAAeJ,GAA4B,IAAI,EAEtDD,GAAO,QAAU,CACf,qBAAAE,GACA,2BAAAD,EACF,ICrHA,IAAAK,GAAAC,EAAA,CAAAC,IAAAC,KAAA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nE,MAAO,IAAQ,MAAO,IAAQ,MAAO,OAAQ,MAAO,KAAQ,MAAO,IACnE,MAAO;AAAA,EAAQ,MAAO;AAAA,EAAQ,MAAO,KAAQ,MAAO,KAAQ,MAAO,KACnE,MAAO,KAAQ,MAAO,KAAQ,MAAO,KAAQ,MAAO,IAAQ,MAAO,IACnE,MAAO,IAAQ,MAAO,IAAQ,MAAO,IAAQ,MAAO,IAAQ,MAAO,IACnE,MAAO,IAAQ,MAAO,IAAQ,MAAO,IAAQ,MAAO,IAAQ,MAAO,IACnE,MAAO,IAAQ,MAAO,IAAQ,MAAO,IAAQ,MAAO,IAAQ,MAAO,OACnE,MAAO,OAAQ,MAAO,IAAQ,MAAO,IAAQ,MAAO,IAAQ,MAAO,IACnE,MAAO,IAAQ,MAAO,IAAQ,MAAO,IAAQ,MAAO,IAAQ,MAAO,IACnE,MAAO,IAAQ,MAAO,IAAQ,MAAO,IAAQ,MAAO,IAAQ,MAAO,IACnE,MAAO,IAAQ,MAAO,IAAQ,MAAO,IAAQ,MAAO,IAAQ,MAAO,IACnE,MAAO,IAAQ,MAAO,IAAQ,MAAO,IAAQ,MAAO,IAAQ,MAAO,IACnE,MAAO,IAAQ,MAAO,IAAQ,MAAO,IAAQ,MAAO,IAAQ,MAAO,IACnE,MAAO,IAAQ,MAAO,IAAQ,MAAO,IAAQ,MAAO,IAAQ,MAAO,IACnE,MAAO,IAAQ,MAAO,IAAQ,MAAO,IAAQ,MAAO,IAAQ,MAAO,IACnE,MAAO,IAAQ,MAAO,IAAQ,MAAO,IAAQ,MAAO,IAAQ,MAAO,IACnE,MAAO,IAAQ,MAAO,IAAQ,MAAO,IAAQ,MAAO,IAAQ,MAAO,IACnE,MAAO,IAAQ,MAAO,IAAQ,MAAO,IAAQ,MAAO,IAAQ,MAAO,IACnE,MAAO,IAAQ,MAAO,IAAQ,MAAO,IAAQ,MAAO,IAAQ,MAAO,IACnE,MAAO,IAAQ,MAAO,IAAQ,MAAO,IAAQ,MAAO,IAAQ,MAAO,IACnE,MAAO,IAAQ,MAAO,IAAQ,MAAO,IAAQ,MAAO,IAAQ,MAAO,IACnE,MAAO,IAAQ,MAAO,IAAQ,MAAO,IAAQ,MAAO,IAAQ,MAAO,IACnE,MAAO,IAAQ,MAAO,IAAQ,MAAO,IAAQ,MAAO,IAAQ,MAAO,IACnE,MAAO,IAAQ,MAAO,IAAQ,MAAO,IAAQ,MAAO,IAAQ,MAAO,IACnE,MAAO,IAAQ,MAAO,IAAQ,MAAO,IAAQ,MAAO,IAAQ,MAAO,KACnE,MAAO,KAAQ,MAAO,IAAQ,MAAO,IAAQ,MAAO,IAAQ,MAAO,IACnE,MAAO,IAAQ,MAAO,IAAQ,MAAO,IAAQ,MAAO,IAAQ,MAAO,IACnE,MAAO,IAAQ,MAAO,IAAQ,MAAO,IAAQ,MAAO,IAAQ,MAAO,IACnE,MAAO,IAAQ,MAAO,IAAQ,MAAO,IAAQ,MAAO,IAAQ,MAAO,IACnE,MAAO,IAAQ,MAAO,IAAQ,MAAO,IAAQ,MAAO,IAAQ,MAAO,IACnE,MAAO,IAAQ,MAAO,IAAQ,MAAO,IAAQ,MAAO,IAAQ,MAAO,IACnE,MAAO,IAAQ,MAAO,IAAQ,MAAO,IAAQ,MAAO,IAAQ,MAAO,IACnE,MAAO,IAAQ,MAAO,IAAQ,MAAO,IAAQ,MAAO,IAAQ,MAAO,IACnE,MAAO,IAAQ,MAAO,IAAQ,MAAO,IAAQ,MAAO,IAAQ,MAAO,IACnE,MAAO,IAAQ,MAAO,IAAQ,MAAO,IAAQ,MAAO,IAAQ,MAAO,OACnE,MAAO,OAAQ,MAAO,OAAQ,MAAO,OAAQ,MAAO,OAAQ,MAAO,OACnE,MAAO,OAAQ,MAAO,OAAQ,MAAO,OAAQ,MAAO,OAAQ,MAAO,OACnE,MAAO,OAAQ,MAAO,OAAQ,MAAO,OAAQ,MAAO,OAAQ,MAAO,OACnE,MAAO,OAAQ,MAAO,OAAQ,MAAO,OAAQ,MAAO,OAAQ,MAAO,OACnE,MAAO,OAAQ,MAAO,OAAQ,MAAO,OAAQ,MAAO,OAAQ,MAAO,OACnE,MAAO,OAAQ,MAAO,OAAQ,MAAO,OAAQ,MAAO,OAAQ,MAAO,OACnE,MAAO,OAAQ,MAAO,OAAQ,MAAO,OAAQ,MAAO,OAAQ,MAAO,OACnE,MAAO,OAAQ,MAAO,OAAQ,MAAO,OAAQ,MAAO,OAAQ,MAAO,OACnE,MAAO,OAAQ,MAAO,OAAQ,MAAO,OAAQ,MAAO,OAAQ,MAAO,OACnE,MAAO,OAAQ,MAAO,OAAQ,MAAO,OAAQ,MAAO,OAAQ,MAAO,OACnE,MAAO,OAAQ,MAAO,OAAQ,MAAO,OAAQ,MAAO,OAAQ,MAAO,OACnE,MAAO,OAAQ,MAAO,OAAQ,MAAO,OAAQ,MAAO,OAAQ,MAAO,OACnE,MAAO,OAAQ,MAAO,OAAQ,MAAO,OAAQ,MAAO,OAAQ,MAAO,OACnE,MAAO,OAAQ,MAAO,OAAQ,MAAO,OAAQ,MAAO,OAAQ,MAAO,OACnE,MAAO,OAAQ,MAAO,OAAQ,MAAO,OAAQ,MAAO,OAAQ,MAAO,OACnE,MAAO,OAAQ,MAAO,OAAQ,MAAO,OAAQ,MAAO,OAAQ,MAAO,OACnE,MAAO,OAAQ,MAAO,OAAQ,MAAO,OAAQ,MAAO,OAAQ,MAAO,OACnE,MAAO,OAAQ,MAAO,OAAQ,MAAO,OAAQ,MAAO,OAAQ,MAAO,OACnE,MAAO,OAAQ,MAAO,OAAQ,MAAO,OAAQ,MAAO,OAAQ,MAAO,OACnE,MAAO,OAAQ,MAAO,OAAQ,MAAO,OAAQ,MAAO,OAAQ,MAAO,OACnE,MAAO,OAAQ,MAAO,OAAQ,MAAO,OAAQ,MAAO,OAAQ,MAAO,OACnE,MAAO,OAAQ,MAAO,OAAQ,MAAO,OAAQ,MAAO,OAAQ,MAAO,OACnE,MAAO,OAAQ,MAAO,OAAQ,MAAO,OAAQ,MAAO,OAAQ,MAAO,OACnE,MAAO,OAAQ,MAAO,OAAQ,MAAO,OAAQ,MAAO,OAAQ,MAAO,OACnE,MAAO,OAAQ,MAAO,OAAQ,MAAO,OAAQ,MAAO,OAAQ,MAAO,OACnE,MAAO,OAAQ,MAAO,OAAQ,MAAO,OAAQ,MAAO,OAAQ,MAAO,OACnE,MAAO,OAAQ,MAAO,OAAQ,MAAO,OAAQ,MAAO,OAAQ,MAAO,OACnE,MAAO,OAAQ,MAAO,OAAQ,MAAO,OAAQ,MAAO,OAAQ,MAAO,OACnE,MAAO,OAAQ,MAAO,OAAQ,MAAO,OAAQ,MAAO,OAAQ,MAAO,OACnE,MAAO,OAAQ,MAAO,OAAQ,MAAO,OAAQ,MAAO,OAAQ,MAAO,OACnE,MAAO,OAAQ,MAAO,OAAQ,MAAO,OAAQ,MAAO,OAAQ,MAAO,OACnE,MAAO,OAAQ,MAAO,OAAQ,MAAO,OAAQ,MAAO,OAAQ,MAAO,OACnE,MAAO,OAAQ,MAAO,OAAQ,MAAO,OAAQ,MAAO,OAAQ,MAAO,OACnE,MAAO,OAAQ,MAAO,OAAQ,MAAO,OAAQ,MAAO,OAAQ,MAAO,OACnE,MAAO,OAAQ,MAAO,OAAQ,MAAO,OAAQ,MAAO,OAAQ,MAAO,OACnE,MAAO,OAAQ,MAAO,OAAQ,MAAO,OAAQ,MAAO,OAAQ,MAAO,OACnE,MAAO,OAAQ,MAAO,OAAQ,MAAO,OAAQ,MAAO,OAAQ,MAAO,OACnE,MAAO,OAAQ,MAAO,OAAQ,MAAO,OAAQ,MAAO,OAAQ,MAAO,OACnE,MAAO,OAAQ,MAAO,OAAQ,MAAO,OAAQ,MAAO,OAAQ,MAAO,OACnE,MAAO,OAAQ,MAAO,OAAQ,MAAO,OAAQ,MAAO,OAAQ,MAAO,OACnE,MAAO,OAAQ,MAAO,OAAQ,MAAO,OAAQ,MAAO,OAAQ,MAAO,OACnE,MAAO,OAAQ,MAAO,OAAQ,MAAO,OAAQ,MAAO,OAAQ,MAAO,OACnE,MAAO,OAAQ,MAAO,OAAQ,MAAO,OAAQ,MAAO,OAAQ,MAAO,OACnE,MAAO,OAAQ,MAAO,OAAQ,MAAO,OAAQ,MAAO,OAAQ,MAAO,OACnE,MAAO,OAAQ,MAAO,OAAQ,MAAO,OAAQ,MAAO,OAAQ,MAAO,OACnE,MAAO,OAAQ,MAAO,OAAQ,MAAO,OAAQ,MAAO,OAAQ,MAAO,OACnE,MAAO,OAAQ,MAAO,OAAQ,MAAO,OAAQ,MAAO,OAAQ,MAAO,OACnE,MAAO,OAAQ,MAAO,OAAQ,MAAO,OAAQ,MAAO,OAAQ,MAAO,OACnE,MAAO,OAAQ,MAAO,OAAQ,MAAO,OAAQ,MAAO,OAAQ,MAAO,OACnE,MAAO,OAAQ,MAAO,OAAQ,MAAO,OAAQ,MAAO,OAAQ,MAAO,OACnE,MAAO,OAAQ,MAAO,OAAQ,MAAO,OAAQ,MAAO,OAAQ,MAAO,OACnE,MAAO,OAAQ,MAAO,OAAQ,MAAO,OAAQ,MAAO,OAAQ,MAAO,OACnE,MAAO,OAAQ,MAAO,OAAQ,MAAO,OAAQ,MAAO,OAAQ,MAAO,OACnE,MAAO,OAAQ,MAAO,OAAQ,MAAO,OAAQ,MAAO,OAAQ,MAAO,OACnE,MAAO,OAAQ,MAAO,OAAQ,MAAO,OAAQ,MAAO,OAAQ,MAAO,OACnE,MAAO,OAAQ,MAAO,OAAQ,MAAO,OAAQ,MAAO,OAAQ,MAAO,OACnE,MAAO,OAAQ,MAAO,OAAQ,MAAO,OAAQ,MAAO,OAAQ,MAAO,OACnE,MAAO,OAAQ,MAAO,OAAQ,MAAO,OAAQ,MAAO,OAAQ,MAAO,OACnE,MAAO,OAAQ,MAAO,OAAQ,MAAO,OAAQ,MAAO,OAAQ,MAAO,OACnE,MAAO,OAAQ,MAAO,OAAQ,MAAO,OAAQ,MAAO,OAAQ,MAAO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O,aACT,IAAK,SACL,IAAK,WACL,IAAK,cACL,IAAK,cACL,IAAK,mBACL,IAAK,WACL,IAAK,aACL,IAAK,eACL,IAAK,eACL,IAAK,aACL,IAAK,YACL,IAAK,WACL,IAAK,aACL,IAAK,kBACH,MAAO,aACT,IAAK,kBACL,IAAK,WACL,IAAK,WACL,IAAK,QACL,IAAK,SACL,IAAK,aACL,IAAK,aACL,IAAK,YACL,IAAK,WACL,IAAK,aACL,IAAK,kBACL,IAAK,eACH,MAAO,aACT,IAAK,cACL,IAAK,mBACL,IAAK,SACL,IAAK,aACL,IAAK,eACL,IAAK,aACL,IAAK,YACL,IAAK,WACL,IAAK,aACL,IAAK,kBACL,IAAK,SACH,MAAO,aACT,IAAK,cACL,IAAK,eACL,IAAK,UACH,MAAO,eACT,IAAK,cACL,IAAK,cACL,IAAK,aACL,IAAK,aACL,IAAK,YACL,IAAK,KACL,IAAK,SACH,MAAO,cACT,IAAK,cACL,IAAK,aACL,IAAK,YACH,MAAO,cACT,IAAK,cACL,IAAK,aACL,IAAK,YACH,MAAO,cACT,IAAK,cACL,IAAK,cACL,IAAK,aACL,IAAK,YACL,IAAK,cACL,IAAK,KACH,MAAO,cACT,IAAK,cACH,MAAO,cACT,IAAK,UACL,IAAK,MACL,IAAK,OACL,IAAK,SACL,IAAK,SACH,MAAO,SACT,IAAK,UACL,IAAK,SACH,MAAO,SACT,IAAK,cACL,IAAK,MACL,IAAK,YACL,IAAK,cACH,MAAO,YACT,IAAK,cACL,IAAK,aACL,IAAK,YACL,IAAK,UACL,IAAK,cACH,MAAO,cACT,IAAK,SACL,IAAK,eACL,IAAK,WACH,MAAO,eACT,IAAK,SACL,IAAK,eACL,IAAK,WACH,MAAO,eACT,IAAK,iBACL,IAAK,QACL,IAAK,SACL,IAAK,QACL,IAAK,cACL,IAAK,SACL,IAAK,aACL,IAAK,aACL,IAAK,YACL,IAAK,WACL,IAAK,aACL,IAAK,kBACL,IAAK,KACL,IAAK,SACL,IAAK,WACL,IAAK,eACL,IAAK,WACH,MAAO,eACT,IAAK,SACL,IAAK,eACL,IAAK,WACH,MAAO,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,CAAAA,IAAA,SAAC,CAAC,CAAC,EAAE,EAAE,EAAE,uBAAuB,EAAE,CAAC,CAAC,GAAG,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC,GAAG,EAAE,EAAE,uBAAuB,EAAE,CAAC,CAAC,GAAG,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC,GAAG,EAAE,EAAE,uBAAuB,EAAE,CAAC,CAAC,GAAG,EAAE,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,EAAE,uBAAuB,EAAE,CAAC,CAAC,GAAG,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,uBAAuB,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,YAAY,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,yBAAyB,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,yBAAyB,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,yBAAyB,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,yBAAyB,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,yBAAyB,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,YAAY,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,yBAAyB,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,yBAAyB,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,yBAAyB,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,yBAAyB,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,yBAAyB,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,yBAAyB,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,YAAY,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,yBAAyB,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,yBAAyB,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,YAAY,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,yBAAyB,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,yBAAyB,CAAC,GAAG,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,YAAY,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,YAAY,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,YAAY,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,YAAY,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAK,GAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,KAAK,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,KAAK,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,GAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,IAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,yBAAyB,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,yBAAyB,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,yBAAyB,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,yBAAyB,CAAC,GAAG,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,yBAAyB,CAAC,GAAG,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,yBAAyB,CAAC,GAAG,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,yBAAyB,CAAC,GAAG,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,yBAAyB,CAAC,GAAG,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,yBAAyB,CAAC,GAAG,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,yBAAyB,CAAC,GAAG,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,yBAAyB,CAAC,GAAG,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,yBAAyB,CAAC,GAAG,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,yBAAyB,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,yBAAyB,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,yBAAyB,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,yBAAyB,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,yBAAyB,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,yBAAyB,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,KAAK,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,KAAK,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,yBAAyB,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,yBAAyB,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,yBAAyB,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,yBAAyB,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,yBAAyB,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,KAAK,KAAK,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,yBAAyB,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,yBAAyB,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,yBAAyB,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,yBAAyB,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,yBAAyB,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,yBAAyB,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,yBAAyB,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,yBAAyB,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,yBAAyB,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,yBAAyB,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,yBAAyB,CAAC,GAAG,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,yBAAyB,CAAC,GAAG,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,yBAAyB,CAAC,GAAG,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,KAAK,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,IAAI,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,IAAI,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,KAAK,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,KAAK,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,uBAAuB,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,uBAAuB,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,GAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,yBAAyB,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,yBAAyB,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,yBAAyB,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,yBAAyB,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,yBAAyB,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,yBAAyB,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,yBAAyB,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,yBAAyB,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,yBAAyB,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,yBAAyB,CAAC,GAAG,GAAG,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,yBAAyB,CAAC,GAAG,GAAG,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,yBAAyB,CAAC,GAAG,GAAG,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,yBAAyB,CAAC,GAAG,GAAG,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,yBAAyB,CAAC,GAAG,GAAG,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,yBAAyB,CAAC,GAAG,GAAG,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,yBAAyB,CAAC,GAAG,GAAG,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,yBAAyB,CAAC,GAAG,GAAG,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,yBAAyB,CAAC,GAAG,GAAG,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,yBAAyB,CAAC,GAAG,GAAG,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,yBAAyB,CAAC,GAAG,GAAG,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,yBAAyB,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,yBAAyB,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,yBAAyB,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,yBAAyB,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,yBAAyB,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,yBAAyB,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,yBAAyB,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,yBAAyB,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,yBAAyB,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,yBAAyB,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,yBAAyB,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,yBAAyB,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,yBAAyB,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,yBAAyB,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,yBAAyB,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,yBAAyB,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,yBAAyB,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,yBAAyB,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,yBAAyB,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,yBAAyB,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,yBAAyB,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,yBAAyB,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,yBAAyB,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,yBAAyB,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,yBAAyB,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,yBAAyB,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,KAAK,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,CAAC,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,CAAC,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,CAAC,GAAG,MAAM,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,CAAC,GAAG,MAAM,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC,KAAM,IAAK,EAAE,SAAS,CAAC,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,MAAM,MAAM,MAAM,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,MAAM,MAAM,MAAM,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,MAAM,MAAM,MAAM,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,MAAM,MAAM,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,MAAM,MAAM,MAAM,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,MAAM,MAAM,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,MAAM,MAAM,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,MAAM,MAAM,MAAM,MAAM,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,MAAM,MAAM,MAAM,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,MAAM,MAAM,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,MAAM,MAAM,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,MAAM,MAAM,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,MAAM,MAAM,MAAM,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,MAAM,MAAM,MAAM,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,MAAM,MAAM,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,MAAM,MAAM,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,MAAM,MAAM,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,MAAM,MAAM,MAAM,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,MAAM,MAAM,MAAM,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,MAAM,MAAM,MAAM,MAAM,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,MAAM,MAAM,MAAM,MAAM,MAAM,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,MAAM,MAAM,MAAM,MAAM,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,MAAM,MAAM,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,MAAM,MAAM,MAAM,MAAM,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,MAAM,MAAM,MAAM,MAAM,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,MAAM,MAAM,MAAM,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,MAAM,MAAM,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,MAAM,MAAM,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,MAAM,MAAM,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,MAAM,MAAM,MAAM,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,MAAM,MAAM,MAAM,MAAM,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,MAAM,MAAM,MAAM,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,MAAM,MAAM,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,MAAM,MAAM,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,MAAM,MAAM,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,MAAM,MAAM,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,MAAM,MAAM,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,MAAM,MAAM,MAAM,MAAM,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,MAAM,MAAM,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,MAAM,MAAM,MAAM,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,MAAM,MAAM,MAAM,MAAM,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,MAAM,MAAM,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,MAAM,MAAM,MAAM,MAAM,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,MAAM,MAAM,MAAM,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,MAAM,MAAM,MAAM,MAAM,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,MAAM,MAAM,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,MAAM,MAAM,MAAM,MAAM,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,MAAM,MAAM,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,MAAM,MAAM,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,MAAM,MAAM,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,MAAM,MAAM,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,MAAM,MAAM,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,MAAM,MAAM,MAAM,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,MAAM,MAAM,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,MAAM,MAAM,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,MAAM,MAAM,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,MAAM,MAAM,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,MAAM,MAAM,MAAM,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,MAAM,MAAM,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,MAAM,MAAM,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,MAAM,MAAM,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,MAAM,MAAM,MAAM,MAAM,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,MAAM,MAAM,MAAM,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,MAAM,MAAM,MAAM,MAAM,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,MAAM,MAAM,MAAM,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,MAAM,MAAM,MAAM,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,MAAM,MAAM,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,MAAM,MAAM,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,MAAM,MAAM,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,MAAM,MAAM,MAAM,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,MAAM,MAAM,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,MAAM,MAAM,MAAM,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,MAAM,MAAM,MAAM,MAAM,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,MAAM,MAAM,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,MAAM,MAAM,MAAM,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,GAAG,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,KAAK,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,GAAG,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,GAAG,IAAI,KAAK,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,KAAK,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,KAAK,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,KAAM,IAAK,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,KAAM,IAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,CAAC,GAAG,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,CAAC,GAAG,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,CAAC,GAAG,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,CAAC,GAAG,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,CAAC,GAAG,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,CAAC,GAAG,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,KAAK,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,KAAK,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,KAAK,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,KAAK,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,KAAK,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,KAAK,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,KAAK,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,CAAC,KAAK,KAAK,KAAK,GAAG,KAAK,KAAK,KAAK,KAAK,GAAG,KAAK,KAAK,KAAK,KAAK,GAAG,KAAK,KAAK,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,CAAC,KAAK,KAAK,GAAG,KAAK,KAAK,KAAK,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,KAAK,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,KAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,OAAO,MAAM,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,OAAO,MAAM,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,OAAO,OAAO,MAAM,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,OAAO,OAAO,MAAM,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,OAAO,OAAO,MAAM,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,OAAO,OAAO,MAAM,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,OAAO,OAAO,MAAM,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,OAAO,MAAM,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,OAAO,MAAM,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,OAAO,OAAO,MAAM,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,OAAO,OAAO,MAAM,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,OAAO,OAAO,MAAM,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,OAAO,OAAO,MAAM,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAO,IAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,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EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,yBAAyB,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,yBAAyB,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,yBAAyB,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,yBAAyB,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,yBAAyB,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,yBAAyB,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,yBAAyB,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,yBAAyB,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,yBAAyB,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,yBAAyB,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,yBAAyB,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,yBAAyB,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,yBAAyB,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,yBAAyB,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,yBAAyB,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,yBAAyB,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,MAAM,IAAI,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,IAAI,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,MAAM,MAAM,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,MAAM,MAAM,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,MAAM,MAAM,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,MAAM,MAAM,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,MAAM,MAAM,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,MAAM,MAAM,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,MAAM,MAAM,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,MAAM,MAAM,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,MAAM,MAAM,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAO,MAAM,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,IAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAM,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,IAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAO,KAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC,MAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,OAAO,EAAE,YAAY,EAAE,CAAC,CAAC,QAAQ,OAAO,EAAE,YAAY,EAAE,CAAC,CAAC,QAAQ,OAAO,EAA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7C,CAACA,EAAkB,oBAAqB,qBAAqB,EAC7D,CAACA,EAAkB,8BAA+B,iBAAiB,EACnE,CACIA,EAAkB,iCAClB,qBACH,EACD,CACIA,EAAkB,kCAClB,gCACH,EACD,CAACA,EAAkB,uBAAwB,mBAAmB,EAC9D,CAACA,EAAkB,2BAA4B,uBAAuB,EAEtE,CACIA,EAAkB,8CAClB,kCACH,EACD,CACIA,EAAkB,gDAClB,2BACH,EACD,CACIA,EAAkB,wDAClB,yBACH,EAED,CAACA,EAAkB,eAAgB,gBAAgB,EAEnD,CACIA,EAAkB,6BAClB,yBACH,EACD,CAACA,EAAkB,mBAAoB,gBAAgB,EACvD,CAACA,EAAkB,kBAAmB,eAAe,EACrD,CAACA,EAAkB,mBAAoB,gBAAgB,EACvD,CACIA,EAAkB,6BAClB,sBACH,EACD,CAACA,EAAkB,6BAA8B,kBAAkB,EAEnE,CAACA,EAAkB,uBAAwB,cAAc,EACzD,CAACA,EAAkB,8BAA+B,oBAAoB,EACtE,CACIA,EAAkB,iCAClB,0BACH,EACD,CAACA,EAAkB,oBAAqB,YAAY,EACpD,CAACA,EAAkB,oBAAqB,YAAY,EACpD,CAACA,EAAkB,0BAA2B,kBAAkB,EAChE,CAACA,EAAkB,oBAAqB,gBAAgB,EACxD,CACIA,EAAkB,yCAClB,wBACH,EACD,CACIA,EAAkB,+BAClB,2BACH,EACD,CACIA,EAAkB,0CAClB,+BACH,EACD,CACIA,EAAkB,8CAClB,sBACH,EACD,CACIA,EAAkB,sCAClB,eACH,EACD,CACIA,EAAkB,wCAClB,sBACH,EACD,CACIA,EAAkB,gCAClB,qBACH,EACD,CACIA,EAAkB,+CAClB,wBACH,EACD,CAACA,EAAkB,4BAA6B,kBAAkB,EAClE,CACIA,EAAkB,iCAClB,uBACH,EACD,CACIA,EAAkB,iCAClB,sBACH,EACD,CAACA,EAAkB,wBAAyB,eAAe,EAC3D,CACIA,EAAkB,+BAClB,wBACH,EACD,CACIA,EAAkB,gDAClB,kBACH,EACD,CACIA,EAAkB,iCAClB,uBACH,EACD,CACIA,EAAkB,uCAClB,0BACH,EACD,CACIA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", - "names": ["toCommandValue", "input", "exports", "toCommandProperties", "annotationProperties", "os", "__importStar", "utils_1", "issueCommand", "command", "properties", "message", "cmd", "Command", "exports", "issue", "name", "CMD_STRING", "cmdStr", "first", "key", "val", "escapeProperty", "escapeData", "s", "crypto", "__importStar", "fs", "os", "utils_1", "issueFileCommand", "command", "message", "filePath", "exports", "prepareKeyValueMessage", "key", "value", "delimiter", "convertedValue", "getProxyUrl", "reqUrl", "usingSsl", "checkBypass", "proxyVar", "DecodedURL", "exports", "reqHost", "isLoopbackAddress", "noProxy", "reqPort", "upperReqHosts", "upperNoProxyItem", "x", "host", "hostLower", "url", "base", "require_tunnel", "__commonJSMin", "exports", "net", "tls", "http", "https", "events", "assert", "util", "httpOverHttp", "httpsOverHttp", "httpOverHttps", "httpsOverHttps", "options", "agent", "TunnelingAgent", "createSecureSocket", "self", "socket", "host", "port", "localAddress", "toOptions", "i", "len", "pending", "req", "mergeOptions", "onFree", "onCloseOrRemove", "err", "cb", "placeholder", "connectOptions", "debug", "connectReq", "onResponse", "onUpgrade", "onConnect", "onError", "res", "head", "error", "cause", "pos", "hostHeader", "tlsOptions", "secureSocket", "target", "overrides", "keys", "j", "keyLen", "k", "args", "require_tunnel", "__commonJSMin", "exports", "module", "require_symbols", "__commonJSMin", "exports", "module", "require_errors", "__commonJSMin", "exports", "module", "UndiciError", "message", "ConnectTimeoutError", "_ConnectTimeoutError", "HeadersTimeoutError", "_HeadersTimeoutError", "HeadersOverflowError", "_HeadersOverflowError", "BodyTimeoutError", "_BodyTimeoutError", "ResponseStatusCodeError", "_ResponseStatusCodeError", "statusCode", "headers", "body", "InvalidArgumentError", "_InvalidArgumentError", "InvalidReturnValueError", "_InvalidReturnValueError", "RequestAbortedError", "_RequestAbortedError", "InformationalError", "_InformationalError", "RequestContentLengthMismatchError", "_RequestContentLengthMismatchError", "ResponseContentLengthMismatchError", "_ResponseContentLengthMismatchError", "ClientDestroyedError", "_ClientDestroyedError", "ClientClosedError", "_ClientClosedError", "SocketError", "_SocketError", "socket", "NotSupportedError", "_NotSupportedError", "BalancedPoolMissingUpstreamError", "HTTPParserError", "_HTTPParserError", "code", "data", "ResponseExceededMaxSizeError", "_ResponseExceededMaxSizeError", "RequestRetryError", "_RequestRetryError", "require_constants", "__commonJSMin", "exports", "module", "headerNameLowerCasedRecord", "wellknownHeaderNames", "i", "key", "lowerCasedKey", "require_util", "__commonJSMin", "exports", "module", "assert", "kDestroyed", "kBodyUsed", "IncomingMessage", "stream", "net", "InvalidArgumentError", "Blob", "nodeUtil", "stringify", "headerNameLowerCasedRecord", "nodeMajor", "nodeMinor", "v", "nop", "isStream", "obj", "isBlobLike", "object", "buildURL", "url", "queryParams", "stringified", "parseURL", "port", "origin", "path", "parseOrigin", "getHostname", "host", "idx", "getServerName", "servername", "deepClone", "isAsyncIterable", "isIterable", "bodyLength", "body", "state", "isBuffer", "isDestroyed", "isReadableAborted", "destroy", "err", "KEEPALIVE_TIMEOUT_EXPR", "parseKeepAliveTimeout", "val", "m", "headerNameToString", "value", "parseHeaders", "headers", "i", "key", "x", "parseRawHeaders", "ret", "hasContentLength", "contentDispositionIdx", "n", "buffer", "validateHandler", "handler", "method", "upgrade", "isDisturbed", "isErrored", "isReadable", "getSocketInfo", "socket", "convertIterableToBuffer", "iterable", "chunk", "ReadableStream", "ReadableStreamFrom", "iterator", "controller", "done", "buf", "reason", "isFormDataLike", "throwIfAborted", "signal", "addAbortListener", "listener", "hasToWellFormed", "toUSVString", "parseRangeHeader", "range", "kEnumerableProperty", "require_timers", "__commonJSMin", "exports", "module", "fastNow", "fastNowTimeout", "fastTimers", "onTimeout", "len", "idx", "timer", "refreshTimeout", "Timeout", "callback", "delay", "opaque", "timeout", "require_sbmh", "__commonJSMin", "exports", "module", "EventEmitter", "inherits", "SBMH", "needle", "needleLength", "i", "chunk", "pos", "chlen", "r", "data", "len", "lastNeedleChar", "ch", "bytesToCutOff", "require_PartStream", "__commonJSMin", "exports", "module", "inherits", "ReadableStream", "PartStream", "opts", "n", "require_getLimit", "__commonJSMin", "exports", "module", "limits", "name", "defaultLimit", "require_HeaderParser", "__commonJSMin", "exports", "module", "EventEmitter", "inherits", "getLimit", "StreamSearch", "B_DCRLF", "RE_CRLF", "RE_HDR", "HeaderParser", "cfg", "self", "isMatch", "data", "start", "end", "r", "header", "lines", "len", "m", "h", "posColon", "require_Dicer", "__commonJSMin", "exports", "module", "WritableStream", "inherits", "StreamSearch", "PartStream", "HeaderParser", "DASH", "B_ONEDASH", "B_CRLF", "EMPTY_FN", "Dicer", "cfg", "self", "header", "ev", "type", "data", "encoding", "cb", "r", "boundary", "isMatch", "start", "end", "buf", "i", "shouldWriteMore", "n", "require_decodeText", "__commonJSMin", "exports", "module", "utf8Decoder", "textDecoders", "getDecoder", "charset", "lc", "decoders", "data", "sourceEncoding", "decodeText", "text", "destEncoding", "require_parseParams", "__commonJSMin", "exports", "module", "decodeText", "RE_ENCODED", "EncodedLookup", "encodedReplacer", "match", "STATE_KEY", "STATE_VALUE", "STATE_CHARSET", "STATE_LANG", "parseParams", "str", "res", "state", "charset", "inquote", "escaping", "p", "tmp", "len", "i", "char", "require_basename", "__commonJSMin", "exports", "module", "path", "i", "require_multipart", "__commonJSMin", "exports", "module", "Readable", "inherits", "Dicer", "parseParams", "decodeText", "basename", "getLimit", "RE_BOUNDARY", "RE_FIELD", "RE_CHARSET", "RE_FILENAME", "RE_NAME", "Multipart", "boy", "cfg", "i", "len", "self", "boundary", "limits", "isPartAFile", "fieldName", "contentType", "fileName", "parsedConType", "defCharset", "preservePath", "fileOpts", "checkFinished", "nends", "finished", "fieldSizeLimit", "fileSizeLimit", "filesLimit", "fieldsLimit", "partsLimit", "headerPairsLimit", "headerSizeLimit", "nfiles", "nfields", "curFile", "curField", "parserCfg", "cb", "onPart", "part", "skipPart", "field", "header", "contype", "fieldname", "parsed", "charset", "encoding", "filename", "nsize", "onData", "onEnd", "file", "FileStream", "n", "data", "extralen", "buffer", "truncated", "err", "chunk", "opts", "require_Decoder", "__commonJSMin", "exports", "module", "RE_PLUS", "HEX", "Decoder", "str", "res", "i", "p", "len", "require_urlencoded", "__commonJSMin", "exports", "module", "Decoder", "decodeText", "getLimit", "RE_CHARSET", "UrlEncoded", "boy", "cfg", "limits", "parsedConType", "charset", "i", "len", "data", "cb", "idxeq", "idxamp", "p", "key", "keyTrunc", "require_main", "__commonJSMin", "exports", "module", "WritableStream", "inherits", "Dicer", "MultipartParser", "UrlencodedParser", "parseParams", "Busboy", "opts", "headers", "streamOptions", "ev", "parsed", "cfg", "chunk", "encoding", "cb", "require_constants", "__commonJSMin", "exports", "module", "MessageChannel", "receiveMessageOnPort", "corsSafeListedMethods", "corsSafeListedMethodsSet", "nullBodyStatus", "redirectStatus", "redirectStatusSet", "badPorts", "badPortsSet", "referrerPolicy", "referrerPolicySet", "requestRedirect", "safeMethods", "safeMethodsSet", "requestMode", "requestCredentials", "requestCache", "requestBodyHeader", "requestDuplex", "forbiddenMethods", "forbiddenMethodsSet", "subresource", "subresourceSet", "DOMException", "err", "channel", "structuredClone", "value", "options", "require_global", "__commonJSMin", "exports", "module", "globalOrigin", "getGlobalOrigin", "setGlobalOrigin", "newOrigin", "parsedURL", "require_util", "__commonJSMin", "exports", "module", "redirectStatusSet", "referrerPolicyTokens", "badPortsSet", "getGlobalOrigin", "performance", "isBlobLike", "toUSVString", "ReadableStreamFrom", "assert", "isUint8Array", "supportedHashes", "crypto", "possibleRelevantHashes", "hash", "responseURL", "response", "urlList", "length", "responseLocationURL", "requestFragment", "location", "isValidHeaderValue", "requestCurrentURL", "request", "requestBadPort", "url", "urlIsHttpHttpsScheme", "isErrorLike", "object", "isValidReasonPhrase", "statusText", "i", "c", "isTokenCharCode", "isValidHTTPToken", "characters", "isValidHeaderName", "potentialValue", "setRequestReferrerPolicyOnRedirect", "actualResponse", "headersList", "policyHeader", "policy", "token", "crossOriginResourcePolicyCheck", "corsCheck", "TAOCheck", "appendFetchMetadata", "httpRequest", "header", "appendRequestOriginHeader", "serializedOrigin", "urlHasHttpsScheme", "sameOrigin", "coarsenedSharedCurrentTime", "crossOriginIsolatedCapability", "createOpaqueTimingInfo", "timingInfo", "makePolicyContainer", "clonePolicyContainer", "policyContainer", "determineRequestsReferrer", "referrerSource", "globalOrigin", "referrerURL", "stripURLForReferrer", "referrerOrigin", "areSameOrigin", "isNonPotentiallyTrustWorthy", "isURLPotentiallyTrustworthy", "currentURL", "originOnly", "isOriginPotentiallyTrustworthy", "origin", "originAsURL", "bytesMatch", "bytes", "metadataList", "parsedMetadata", "parseMetadata", "strongest", "getStrongestMetadata", "metadata", "filterMetadataListByAlgorithm", "item", "algorithm", "expectedValue", "actualValue", "compareBase64Mixed", "parseHashWithOptions", "result", "empty", "parsedToken", "pos", "tryUpgradeRequestToAPotentiallyTrustworthyURL", "A", "B", "createDeferredPromise", "res", "rej", "resolve", "reject", "isAborted", "fetchParams", "isCancelled", "normalizeMethodRecord", "normalizeMethod", "method", "serializeJavascriptValueToJSONString", "value", "esIteratorPrototype", "makeIterator", "iterator", "name", "kind", "index", "target", "values", "len", "pair", "iteratorResult", "fullyReadBody", "body", "processBody", "processBodyError", "successSteps", "errorSteps", "reader", "e", "readAllBytes", "ReadableStream", "isReadableStreamLike", "stream", "MAXIMUM_ARGUMENT_LENGTH", "isomorphicDecode", "input", "previous", "current", "readableStreamClose", "controller", "err", "isomorphicEncode", "byteLength", "done", "chunk", "urlIsLocal", "protocol", "hasOwn", "dict", "key", "require_symbols", "__commonJSMin", "exports", "module", "require_webidl", "__commonJSMin", "exports", "module", "types", "hasOwn", "toUSVString", "webidl", "message", "context", "plural", "V", "I", "opts", "length", "min", "ctx", "bitLength", "signedness", "upperBound", "lowerBound", "x", "n", "r", "converter", "method", "seq", "done", "value", "keyConverter", "valueConverter", "O", "result", "keys", "key", "typedKey", "typedValue", "i", "converters", "dictionary", "type", "dict", "options", "defaultValue", "required", "hasDefault", "index", "T", "require_dataURL", "__commonJSMin", "exports", "module", "assert", "atob", "isomorphicDecode", "encoder", "HTTP_TOKEN_CODEPOINTS", "HTTP_WHITESPACE_REGEX", "HTTP_QUOTED_STRING_TOKENS", "dataURLProcessor", "dataURL", "input", "URLSerializer", "position", "mimeType", "collectASequenceOfCodePointsFast", "mimeTypeLength", "removeASCIIWhitespace", "encodedBody", "body", "stringPercentDecode", "stringBody", "forgivingBase64", "mimeTypeRecord", "parseMIMEType", "url", "excludeFragment", "href", "hashLength", "collectASequenceOfCodePoints", "condition", "result", "char", "idx", "start", "bytes", "percentDecode", "output", "i", "byte", "nextTwoBytes", "bytePoint", "removeHTTPWhitespace", "type", "subtype", "typeLowercase", "subtypeLowercase", "parameterName", "parameterValue", "collectAnHTTPQuotedString", "data", "binary", "extractValue", "positionStart", "value", "quoteOrBackslash", "serializeAMimeType", "parameters", "essence", "serialization", "name", "isHTTPWhiteSpace", "str", "leading", "trailing", "lead", "trail", "isASCIIWhitespace", "require_file", "__commonJSMin", "exports", "module", "Blob", "NativeFile", "types", "kState", "isBlobLike", "webidl", "parseMIMEType", "serializeAMimeType", "kEnumerableProperty", "encoder", "File", "_File", "fileBits", "fileName", "options", "n", "t", "d", "substep", "processBlobParts", "FileLike", "_FileLike", "blobLike", "args", "V", "opts", "value", "parts", "bytes", "element", "s", "convertLineEndingsNative", "nativeLineEnding", "isFileLike", "object", "require_formdata", "__commonJSMin", "exports", "module", "isBlobLike", "toUSVString", "makeIterator", "kState", "UndiciFile", "FileLike", "isFileLike", "webidl", "Blob", "NativeFile", "File", "FormData", "_FormData", "form", "name", "value", "filename", "entry", "makeEntry", "idx", "pair", "callbackFn", "thisArg", "key", "options", "require_body", "__commonJSMin", "exports", "module", "Busboy", "util", "ReadableStreamFrom", "isBlobLike", "isReadableStreamLike", "readableStreamClose", "createDeferredPromise", "fullyReadBody", "FormData", "kState", "webidl", "DOMException", "structuredClone", "Blob", "NativeFile", "kBodyUsed", "assert", "isErrored", "isUint8Array", "isArrayBuffer", "UndiciFile", "parseMIMEType", "serializeAMimeType", "random", "crypto", "max", "ReadableStream", "File", "textEncoder", "textDecoder", "extractBody", "object", "keepalive", "stream", "controller", "source", "action", "length", "type", "boundary", "prefix", "escape", "str", "normalizeLinefeeds", "value", "blobParts", "rn", "hasUnknownSizeValue", "name", "chunk", "part", "iterator", "done", "reason", "safelyExtractBody", "cloneBody", "body", "out1", "out2", "out2Clone", "finalClone", "consumeBody", "throwIfAborted", "state", "bodyMixinMethods", "instance", "specConsumeBody", "bytes", "mimeType", "bodyMimeType", "utf8DecodeBytes", "parseJSONFromBytes", "contentType", "headers", "key", "responseFormData", "busboy", "err", "filename", "encoding", "chunks", "base64chunk", "end", "busboyResolve", "resolve", "reject", "entries", "text", "streamingDecoder", "formData", "mixinBody", "prototype", "convertBytesToJSValue", "bodyUnusable", "promise", "errorSteps", "error", "successSteps", "data", "e", "buffer", "headersList", "require_request", "__commonJSMin", "exports", "module", "InvalidArgumentError", "NotSupportedError", "assert", "kHTTP2BuildRequest", "kHTTP2CopyHeaders", "kHTTP1BuildRequest", "util", "tokenRegExp", "headerCharRegex", "invalidPathRegex", "kHandler", "channels", "extractBody", "diagnosticsChannel", "Request", "_Request", "origin", "path", "method", "body", "headers", "query", "idempotent", "blocking", "upgrade", "headersTimeout", "bodyTimeout", "reset", "throwOnError", "expectContinue", "handler", "rState", "err", "i", "processHeader", "keys", "key", "bodyStream", "contentType", "chunk", "abort", "statusCode", "resume", "statusText", "socket", "trailers", "error", "value", "opts", "request", "raw", "rawHeaders", "header", "processHeaderValue", "val", "skipAppend", "require_dispatcher", "__commonJSMin", "exports", "module", "EventEmitter", "Dispatcher", "require_dispatcher_base", "__commonJSMin", "exports", "module", "Dispatcher", "ClientDestroyedError", "ClientClosedError", "InvalidArgumentError", "kDestroy", "kClose", "kDispatch", "kInterceptors", "kDestroyed", "kClosed", "kOnDestroyed", "kOnClosed", "kInterceptedDispatch", "DispatcherBase", "newInterceptors", "i", "callback", "resolve", "reject", "err", "data", "onClosed", "callbacks", "onDestroyed", "opts", "handler", "dispatch", "require_connect", "__commonJSMin", "exports", "module", "net", "assert", "util", "InvalidArgumentError", "ConnectTimeoutError", "tls", "SessionCache", "maxCachedSessions", "key", "ref", "sessionKey", "session", "oldestKey", "buildConnector", "allowH2", "socketPath", "timeout", "opts", "options", "sessionCache", "hostname", "host", "protocol", "port", "servername", "localAddress", "httpSocket", "callback", "socket", "keepAliveInitialDelay", "cancelTimeout", "setupTimeout", "onConnectTimeout", "cb", "err", "s1", "s2", "timeoutId", "enumToMap", "obj", "res", "key", "value", "exports", "utils_1", "ERROR", "exports", "TYPE", "FLAGS", "LENIENT_FLAGS", "METHODS", "key", "FINISH", "i", "c", "HEADER_STATE", "require_RedirectHandler", "__commonJSMin", "exports", "module", "util", "kBodyUsed", "assert", "InvalidArgumentError", "EE", "redirectableStatusCodes", "kBody", "BodyAsyncIterable", "body", "RedirectHandler", "dispatch", "maxRedirections", "opts", "handler", "abort", "statusCode", "headers", "socket", "error", "resume", "statusText", "parseLocation", "origin", "pathname", "search", "path", "cleanRequestHeaders", "chunk", "trailers", "i", "shouldRemoveHeader", "header", "removeContent", "unknownOrigin", "name", "ret", "key", "require_redirectInterceptor", "__commonJSMin", "exports", "module", "RedirectHandler", "createRedirectInterceptor", "defaultMaxRedirections", "dispatch", "opts", "handler", "maxRedirections", "redirectHandler", "require_llhttp_wasm", "__commonJSMin", "exports", "module", "require_llhttp_simd_wasm", "__commonJSMin", "exports", "module", "require_client", "__commonJSMin", "exports", "module", "assert", "net", "http", "pipeline", "util", "timers", "Request", "DispatcherBase", "RequestContentLengthMismatchError", "ResponseContentLengthMismatchError", "InvalidArgumentError", "RequestAbortedError", "HeadersTimeoutError", "HeadersOverflowError", "SocketError", "InformationalError", "BodyTimeoutError", "HTTPParserError", "ResponseExceededMaxSizeError", "ClientDestroyedError", "buildConnector", "kUrl", "kReset", "kServerName", "kClient", "kBusy", "kParser", "kConnect", "kBlocking", "kResuming", "kRunning", "kPending", "kSize", "kWriting", "kQueue", "kConnected", "kConnecting", "kNeedDrain", "kNoRef", "kKeepAliveDefaultTimeout", "kHostHeader", "kPendingIdx", "kRunningIdx", "kError", "kPipelining", "kSocket", "kKeepAliveTimeoutValue", "kMaxHeadersSize", "kKeepAliveMaxTimeout", "kKeepAliveTimeoutThreshold", "kHeadersTimeout", "kBodyTimeout", "kStrictContentLength", "kConnector", "kMaxRedirections", "kMaxRequests", "kCounter", "kClose", "kDestroy", "kDispatch", "kInterceptors", "kLocalAddress", "kMaxResponseSize", "kHTTPConnVersion", "kHost", "kHTTP2Session", "kHTTP2SessionState", "kHTTP2BuildRequest", "kHTTP2CopyHeaders", "kHTTP1BuildRequest", "http2", "HTTP2_HEADER_AUTHORITY", "HTTP2_HEADER_METHOD", "HTTP2_HEADER_PATH", "HTTP2_HEADER_SCHEME", "HTTP2_HEADER_CONTENT_LENGTH", "HTTP2_HEADER_EXPECT", "HTTP2_HEADER_STATUS", "h2ExperimentalWarned", "FastBuffer", "kClosedResolve", "channels", "diagnosticsChannel", "Client", "url", "interceptors", "maxHeaderSize", "headersTimeout", "socketTimeout", "requestTimeout", "connectTimeout", "bodyTimeout", "idleTimeout", "keepAlive", "keepAliveTimeout", "maxKeepAliveTimeout", "keepAliveMaxTimeout", "keepAliveTimeoutThreshold", "socketPath", "pipelining", "tls", "strictContentLength", "maxCachedSessions", "maxRedirections", "connect", "maxRequestsPerClient", "localAddress", "maxResponseSize", "autoSelectFamily", "autoSelectFamilyAttemptTimeout", "allowH2", "maxConcurrentStreams", "createRedirectInterceptor", "value", "resume", "socket", "cb", "opts", "handler", "origin", "request", "resolve", "err", "requests", "i", "errorRequest", "callback", "onHttp2SessionError", "onError", "onHttp2FrameError", "type", "code", "id", "onHttp2SessionEnd", "onHTTP2GoAway", "client", "constants", "EMPTY_BUF", "lazyllhttp", "llhttpWasmData", "mod", "p", "at", "len", "currentParser", "start", "currentBufferPtr", "currentBufferRef", "statusCode", "upgrade", "shouldKeepAlive", "llhttpInstance", "llhttpPromise", "currentBufferSize", "TIMEOUT_HEADERS", "TIMEOUT_BODY", "TIMEOUT_IDLE", "Parser", "onParserTimeout", "chunk", "data", "llhttp", "ret", "offset", "ptr", "message", "buf", "key", "head", "headers", "onSocketError", "onSocketReadable", "onSocketEnd", "onSocketClose", "statusText", "timeout", "pause", "contentLength", "bytesRead", "parser", "timeoutType", "host", "hostname", "protocol", "port", "idx", "ip", "reject", "session", "emitDrain", "sync", "_resume", "write", "shouldSendContentLength", "method", "writeH2", "body", "path", "blocking", "reset", "expectsPayload", "bodyLength", "header", "writeIterable", "writeBlob", "writeStream", "expectContinue", "signal", "reqHeaders", "stream", "h2State", "shouldEndStream", "writeBodyH2", "realHeaders", "h2stream", "onPipeData", "pipe", "finished", "writer", "AsyncWriter", "onData", "onDrain", "onAbort", "onFinished", "er", "isH2", "buffer", "waitForDrain", "res", "bytesWritten", "require_fixed_queue", "__commonJSMin", "exports", "module", "FixedCircularBuffer", "data", "nextItem", "tail", "next", "require_pool_stats", "__commonJSMin", "exports", "module", "kFree", "kConnected", "kPending", "kQueued", "kRunning", "kSize", "kPool", "PoolStats", "pool", "require_pool_base", "__commonJSMin", "exports", "module", "DispatcherBase", "FixedQueue", "kConnected", "kSize", "kRunning", "kPending", "kQueued", "kBusy", "kFree", "kUrl", "kClose", "kDestroy", "kDispatch", "PoolStats", "kClients", "kNeedDrain", "kQueue", "kClosedResolve", "kOnDrain", "kOnConnect", "kOnDisconnect", "kOnConnectionError", "kGetDispatcher", "kAddClient", "kRemoveClient", "kStats", "PoolBase", "pool", "origin", "targets", "queue", "needDrain", "item", "c", "err", "client", "ret", "pending", "running", "size", "resolve", "opts", "handler", "dispatcher", "idx", "require_pool", "__commonJSMin", "exports", "module", "PoolBase", "kClients", "kNeedDrain", "kAddClient", "kGetDispatcher", "Client", "InvalidArgumentError", "util", "kUrl", "kInterceptors", "buildConnector", "kOptions", "kConnections", "kFactory", "defaultFactory", "origin", "opts", "Pool", "connections", "factory", "connect", "connectTimeout", "tls", "maxCachedSessions", "socketPath", "autoSelectFamily", "autoSelectFamilyAttemptTimeout", "allowH2", "options", "dispatcher", "require_balanced_pool", "__commonJSMin", "exports", "module", "BalancedPoolMissingUpstreamError", "InvalidArgumentError", "PoolBase", "kClients", "kNeedDrain", "kAddClient", "kRemoveClient", "kGetDispatcher", "Pool", "kUrl", "kInterceptors", "parseOrigin", "kFactory", "kOptions", "kGreatestCommonDivisor", "kCurrentWeight", "kIndex", "kWeight", "kMaxWeightPerServer", "kErrorPenalty", "getGreatestCommonDivisor", "a", "b", "defaultFactory", "origin", "opts", "BalancedPool", "upstreams", "factory", "upstream", "upstreamOrigin", "pool", "args", "err", "client", "p", "dispatcher", "counter", "maxWeightIndex", "require_dispatcher_weakref", "__commonJSMin", "exports", "module", "kConnected", "kSize", "CompatWeakRef", "value", "CompatFinalizer", "finalizer", "dispatcher", "key", "require_agent", "__commonJSMin", "exports", "module", "InvalidArgumentError", "kClients", "kRunning", "kClose", "kDestroy", "kDispatch", "kInterceptors", "DispatcherBase", "Pool", "Client", "util", "createRedirectInterceptor", "WeakRef", "FinalizationRegistry", "kOnConnect", "kOnDisconnect", "kOnConnectionError", "kMaxRedirections", "kOnDrain", "kFactory", "kFinalizer", "kOptions", "defaultFactory", "origin", "opts", "Agent", "factory", "maxRedirections", "connect", "options", "key", "ref", "agent", "targets", "err", "ret", "client", "handler", "dispatcher", "closePromises", "destroyPromises", "require_readable", "__commonJSMin", "exports", "module", "assert", "Readable", "RequestAbortedError", "NotSupportedError", "InvalidArgumentError", "util", "ReadableStreamFrom", "toUSVString", "Blob", "kConsume", "kReading", "kBody", "kAbort", "kContentType", "noop", "resume", "abort", "contentType", "highWaterMark", "err", "ev", "args", "ret", "chunk", "consumePush", "consume", "opts", "limit", "signal", "resolve", "reject", "signalListenerCleanup", "isLocked", "self", "isUnusable", "stream", "type", "consumeFinish", "consumeStart", "state", "consumeEnd", "body", "length", "dst", "pos", "buf", "require_util", "__commonJSMin", "exports", "module", "assert", "ResponseStatusCodeError", "toUSVString", "getResolveErrorBodyCallback", "callback", "body", "contentType", "statusCode", "statusMessage", "headers", "chunks", "limit", "chunk", "payload", "require_abort_signal", "__commonJSMin", "exports", "module", "addAbortListener", "RequestAbortedError", "kListener", "kSignal", "abort", "self", "addSignal", "signal", "removeSignal", "require_api_request", "__commonJSMin", "exports", "module", "Readable", "InvalidArgumentError", "RequestAbortedError", "util", "getResolveErrorBodyCallback", "AsyncResource", "addSignal", "removeSignal", "RequestHandler", "opts", "callback", "signal", "method", "opaque", "body", "onInfo", "responseHeaders", "throwOnError", "highWaterMark", "err", "abort", "context", "statusCode", "rawHeaders", "resume", "statusMessage", "headers", "contentType", "chunk", "res", "trailers", "request", "resolve", "reject", "data", "require_api_stream", "__commonJSMin", "exports", "module", "finished", "PassThrough", "InvalidArgumentError", "InvalidReturnValueError", "RequestAbortedError", "util", "getResolveErrorBodyCallback", "AsyncResource", "addSignal", "removeSignal", "StreamHandler", "opts", "factory", "callback", "signal", "method", "opaque", "body", "onInfo", "responseHeaders", "throwOnError", "err", "abort", "context", "statusCode", "rawHeaders", "resume", "statusMessage", "headers", "res", "contentType", "trailers", "chunk", "stream", "resolve", "reject", "data", "require_api_pipeline", "__commonJSMin", "exports", "module", "Readable", "Duplex", "PassThrough", "InvalidArgumentError", "InvalidReturnValueError", "RequestAbortedError", "util", "AsyncResource", "addSignal", "removeSignal", "assert", "kResume", "PipelineRequest", "resume", "err", "callback", "PipelineResponse", "PipelineHandler", "opts", "handler", "signal", "method", "opaque", "onInfo", "responseHeaders", "body", "chunk", "encoding", "req", "res", "ret", "abort", "context", "statusCode", "rawHeaders", "headers", "trailers", "pipeline", "pipelineHandler", "require_api_upgrade", "__commonJSMin", "exports", "module", "InvalidArgumentError", "RequestAbortedError", "SocketError", "AsyncResource", "util", "addSignal", "removeSignal", "assert", "UpgradeHandler", "opts", "callback", "signal", "opaque", "responseHeaders", "abort", "context", "statusCode", "rawHeaders", "socket", "headers", "err", "upgrade", "resolve", "reject", "data", "upgradeHandler", "require_api_connect", "__commonJSMin", "exports", "module", "AsyncResource", "InvalidArgumentError", "RequestAbortedError", "SocketError", "util", "addSignal", "removeSignal", "ConnectHandler", "opts", "callback", "signal", "opaque", "responseHeaders", "abort", "context", "statusCode", "rawHeaders", "socket", "headers", "err", "connect", "resolve", "reject", "data", "connectHandler", "require_api", "__commonJSMin", "exports", "module", "require_mock_errors", "__commonJSMin", "exports", "module", "UndiciError", "MockNotMatchedError", "_MockNotMatchedError", "message", "require_mock_symbols", "__commonJSMin", "exports", "module", "require_mock_utils", "__commonJSMin", "exports", "module", "MockNotMatchedError", "kDispatches", "kMockAgent", "kOriginalDispatch", "kOrigin", "kGetNetConnect", "buildURL", "nop", "STATUS_CODES", "isPromise", "matchValue", "match", "value", "lowerCaseEntries", "headers", "headerName", "headerValue", "getHeaderByName", "key", "i", "buildHeadersFromArray", "clone", "entries", "index", "matchHeaders", "mockDispatch", "matchHeaderName", "matchHeaderValue", "safeUrl", "path", "pathSegments", "qp", "matchKey", "method", "body", "pathMatch", "methodMatch", "bodyMatch", "headersMatch", "getResponseData", "data", "getMockDispatch", "mockDispatches", "basePath", "resolvedPath", "matchedMockDispatches", "consumed", "addMockDispatch", "baseData", "replyData", "newMockDispatch", "deleteMockDispatch", "dispatch", "buildKey", "opts", "query", "generateKeyValues", "keyValuePairs", "x", "getStatusText", "statusCode", "getResponse", "buffers", "handler", "trailers", "error", "delay", "persist", "timesInvoked", "times", "handleReply", "_data", "optsHeaders", "newData", "responseData", "responseHeaders", "responseTrailers", "resume", "buildMockDispatch", "agent", "origin", "originalDispatch", "netConnect", "checkNetConnect", "url", "matcher", "buildMockOptions", "mockOptions", "require_mock_interceptor", "__commonJSMin", "exports", "module", "getResponseData", "buildKey", "addMockDispatch", "kDispatches", "kDispatchKey", "kDefaultHeaders", "kDefaultTrailers", "kContentLength", "kMockDispatch", "InvalidArgumentError", "buildURL", "MockScope", "mockDispatch", "waitInMs", "repeatTimes", "MockInterceptor", "opts", "mockDispatches", "parsedURL", "statusCode", "data", "responseOptions", "responseData", "contentLength", "headers", "trailers", "replyData", "wrappedDefaultsCallback", "resolvedData", "newMockDispatch", "dispatchData", "error", "require_mock_client", "__commonJSMin", "exports", "module", "promisify", "Client", "buildMockDispatch", "kDispatches", "kMockAgent", "kClose", "kOriginalClose", "kOrigin", "kOriginalDispatch", "kConnected", "MockInterceptor", "Symbols", "InvalidArgumentError", "MockClient", "origin", "opts", "require_mock_pool", "__commonJSMin", "exports", "module", "promisify", "Pool", "buildMockDispatch", "kDispatches", "kMockAgent", "kClose", "kOriginalClose", "kOrigin", "kOriginalDispatch", "kConnected", "MockInterceptor", "Symbols", "InvalidArgumentError", "MockPool", "origin", "opts", "require_pluralizer", "__commonJSMin", "exports", "module", "singulars", "plurals", "singular", "plural", "count", "one", "keys", "noun", "require_pending_interceptors_formatter", "__commonJSMin", "exports", "module", "Transform", "Console", "disableColors", "chunk", "_enc", "cb", "pendingInterceptors", "withPrettyHeaders", "method", "path", "statusCode", "persist", "times", "timesInvoked", "origin", "require_mock_agent", "__commonJSMin", "exports", "module", "kClients", "Agent", "kAgent", "kMockAgentSet", "kMockAgentGet", "kDispatches", "kIsMockActive", "kNetConnect", "kGetNetConnect", "kOptions", "kFactory", "MockClient", "MockPool", "matchValue", "buildMockOptions", "InvalidArgumentError", "UndiciError", "Dispatcher", "Pluralizer", "PendingInterceptorsFormatter", "FakeWeakRef", "value", "MockAgent", "opts", "agent", "origin", "dispatcher", "handler", "matcher", "mockOptions", "ref", "keyMatcher", "nonExplicitRef", "nonExplicitDispatcher", "mockAgentClients", "scope", "dispatch", "pending", "pendingInterceptorsFormatter", "pluralizer", "require_proxy_agent", "__commonJSMin", "exports", "module", "kProxy", "kClose", "kDestroy", "kInterceptors", "URL", "Agent", "Pool", "DispatcherBase", "InvalidArgumentError", "RequestAbortedError", "buildConnector", "kAgent", "kClient", "kProxyHeaders", "kRequestTls", "kProxyTls", "kConnectEndpoint", "defaultProtocolPort", "protocol", "buildProxyOptions", "opts", "defaultFactory", "origin", "ProxyAgent", "clientFactory", "resolvedUrl", "port", "host", "username", "password", "connect", "callback", "requestedHost", "socket", "statusCode", "servername", "err", "handler", "headers", "buildHeaders", "throwIfProxyAuthIsSent", "headersPair", "i", "key", "require_RetryHandler", "__commonJSMin", "exports", "module", "assert", "kRetryHandlerDefaultRetry", "RequestRetryError", "isDisturbed", "parseHeaders", "parseRangeHeader", "calculateRetryAfterHeader", "retryAfter", "current", "RetryHandler", "_RetryHandler", "opts", "handlers", "retryOptions", "dispatchOpts", "retryFn", "maxRetries", "maxTimeout", "minTimeout", "timeoutFactor", "methods", "errorCodes", "statusCodes", "reason", "statusCode", "headers", "socket", "abort", "chunk", "err", "state", "cb", "code", "method", "timeout", "counter", "currentTimeout", "retryAfterHeader", "retryTimeout", "rawHeaders", "resume", "statusMessage", "contentRange", "start", "size", "end", "range", "contentLength", "rawTrailers", "onRetry", "require_global", "__commonJSMin", "exports", "module", "globalDispatcher", "InvalidArgumentError", "Agent", "getGlobalDispatcher", "setGlobalDispatcher", "agent", "require_DecoratorHandler", "__commonJSMin", "exports", "module", "handler", "args", "require_headers", "__commonJSMin", "exports", "module", "kHeadersList", "kConstruct", "kGuard", "kEnumerableProperty", "makeIterator", "isValidHeaderName", "isValidHeaderValue", "webidl", "assert", "kHeadersMap", "kHeadersSortedMap", "isHTTPWhiteSpaceCharCode", "code", "headerValueNormalize", "potentialValue", "i", "j", "fill", "headers", "object", "header", "appendHeader", "keys", "name", "value", "HeadersList", "_HeadersList", "init", "__publicField", "lowercaseName", "exists", "delimiter", "Headers", "_Headers", "list", "names", "a", "b", "cookies", "callbackFn", "thisArg", "key", "V", "require_response", "__commonJSMin", "exports", "module", "Headers", "HeadersList", "fill", "extractBody", "cloneBody", "mixinBody", "util", "kEnumerableProperty", "isValidReasonPhrase", "isCancelled", "isAborted", "isBlobLike", "serializeJavascriptValueToJSONString", "isErrorLike", "isomorphicEncode", "redirectStatusSet", "nullBodyStatus", "DOMException", "kState", "kHeaders", "kGuard", "kRealm", "webidl", "FormData", "getGlobalOrigin", "URLSerializer", "kHeadersList", "kConstruct", "assert", "types", "ReadableStream", "textEncoder", "Response", "_Response", "relevantRealm", "responseObject", "makeNetworkError", "data", "init", "bytes", "body", "initializeResponse", "url", "status", "parsedURL", "err", "value", "makeResponse", "bodyWithType", "extractedBody", "type", "urlList", "clonedResponse", "cloneResponse", "clonedResponseObject", "response", "filterResponse", "newResponse", "reason", "isError", "makeFilteredResponse", "state", "target", "p", "makeAppropriateNetworkError", "fetchParams", "V", "require_request", "__commonJSMin", "exports", "module", "extractBody", "mixinBody", "cloneBody", "Headers", "fillHeaders", "HeadersList", "FinalizationRegistry", "util", "isValidHTTPToken", "sameOrigin", "normalizeMethod", "makePolicyContainer", "normalizeMethodRecord", "forbiddenMethodsSet", "corsSafeListedMethodsSet", "referrerPolicy", "requestRedirect", "requestMode", "requestCredentials", "requestCache", "requestDuplex", "kEnumerableProperty", "kHeaders", "kSignal", "kState", "kGuard", "kRealm", "webidl", "getGlobalOrigin", "URLSerializer", "kHeadersList", "kConstruct", "assert", "getMaxListeners", "setMaxListeners", "getEventListeners", "defaultMaxListeners", "TransformStream", "kAbortController", "requestFinalizer", "signal", "abort", "Request", "_Request", "input", "init", "request", "fallbackMode", "baseUrl", "parsedURL", "err", "makeRequest", "origin", "window", "initHasKey", "referrer", "parsedReferrer", "mode", "method", "ac", "acRef", "headersList", "headers", "key", "val", "inputBody", "initBody", "extractedBody", "contentType", "inputOrInitBody", "finalBody", "identityTransform", "clonedRequest", "cloneRequest", "clonedRequestObject", "newRequest", "V", "require_fetch", "__commonJSMin", "exports", "module", "Response", "makeNetworkError", "makeAppropriateNetworkError", "filterResponse", "makeResponse", "Headers", "Request", "makeRequest", "zlib", "bytesMatch", "makePolicyContainer", "clonePolicyContainer", "requestBadPort", "TAOCheck", "appendRequestOriginHeader", "responseLocationURL", "requestCurrentURL", "setRequestReferrerPolicyOnRedirect", "tryUpgradeRequestToAPotentiallyTrustworthyURL", "createOpaqueTimingInfo", "appendFetchMetadata", "corsCheck", "crossOriginResourcePolicyCheck", "determineRequestsReferrer", "coarsenedSharedCurrentTime", "createDeferredPromise", "isBlobLike", "sameOrigin", "isCancelled", "isAborted", "isErrorLike", "fullyReadBody", "readableStreamClose", "isomorphicEncode", "urlIsLocal", "urlIsHttpHttpsScheme", "urlHasHttpsScheme", "kState", "kHeaders", "kGuard", "kRealm", "assert", "safelyExtractBody", "redirectStatusSet", "nullBodyStatus", "safeMethodsSet", "requestBodyHeader", "subresourceSet", "DOMException", "kHeadersList", "EE", "Readable", "pipeline", "addAbortListener", "isErrored", "isReadable", "nodeMajor", "nodeMinor", "dataURLProcessor", "serializeAMimeType", "TransformStream", "getGlobalDispatcher", "webidl", "STATUS_CODES", "GET_OR_HEAD", "resolveObjectURL", "ReadableStream", "Fetch", "dispatcher", "reason", "error", "fetch", "input", "init", "p", "requestObject", "e", "request", "abortFetch", "responseObject", "relevantRealm", "locallyAborted", "controller", "fetching", "response", "finalizeAndReportTiming", "initiatorType", "originalURL", "timingInfo", "cacheState", "markResourceTiming", "globalThis", "err", "processRequestBodyChunkLength", "processRequestEndOfBody", "processResponse", "processResponseEndOfBody", "processResponseConsumeBody", "useParallelQueue", "taskDestination", "crossOriginIsolatedCapability", "currenTime", "fetchParams", "mainFetch", "recursive", "currentURL", "schemeFetch", "httpFetch", "internalResponse", "processBodyError", "fetchFinale", "processBody", "bytes", "scheme", "blobURLEntry", "blobURLEntryObject", "bodyWithType", "body", "length", "type", "dataURLStruct", "mimeType", "finalizeResponse", "identityTransformAlgorithm", "chunk", "transformStream", "nullOrBytes", "failure", "actualResponse", "httpNetworkOrCacheFetch", "httpRedirectFetch", "locationURL", "headerName", "isAuthenticationFetch", "isNewConnectionFetch", "httpFetchParams", "httpRequest", "httpCache", "revalidatingFlag", "includeCredentials", "contentLength", "contentLengthHeaderValue", "forwardResponse", "httpNetworkFetch", "forceNewConnection", "newConnection", "requestBody", "processBodyChunk", "processEndOfBody", "status", "statusText", "headersList", "socket", "dispatch", "iterator", "pullAlgorithm", "cancelAlgorithm", "stream", "onAborted", "isFailure", "done", "value", "url", "agent", "resolve", "reject", "abort", "connection", "resume", "codings", "location", "headers", "n", "key", "val", "x", "keys", "decoders", "willFollow", "coding", "require_symbols", "__commonJSMin", "exports", "module", "require_progressevent", "__commonJSMin", "exports", "module", "webidl", "kState", "ProgressEvent", "_ProgressEvent", "type", "eventInitDict", "require_encoding", "__commonJSMin", "exports", "module", "getEncoding", "label", "require_util", "__commonJSMin", "exports", "module", "kState", "kError", "kResult", "kAborted", "kLastProgressEventFired", "ProgressEvent", "getEncoding", "DOMException", "serializeAMimeType", "parseMIMEType", "types", "StringDecoder", "btoa", "staticPropertyDescriptors", "readOperation", "fr", "blob", "type", "encodingName", "reader", "bytes", "chunkPromise", "isFirstChunk", "done", "value", "fireAProgressEvent", "result", "packageData", "error", "e", "event", "mimeType", "dataURL", "parsed", "decoder", "chunk", "encoding", "decode", "combineByteSequences", "binaryString", "ioQueue", "BOMEncoding", "BOMSniffing", "slice", "sliced", "a", "b", "c", "sequences", "size", "offset", "require_filereader", "__commonJSMin", "exports", "module", "staticPropertyDescriptors", "readOperation", "fireAProgressEvent", "kState", "kError", "kResult", "kEvents", "kAborted", "webidl", "kEnumerableProperty", "FileReader", "_FileReader", "blob", "encoding", "fn", "require_symbols", "__commonJSMin", "exports", "module", "require_util", "__commonJSMin", "exports", "module", "assert", "URLSerializer", "isValidHeaderName", "urlEquals", "A", "B", "excludeFragment", "serializedA", "serializedB", "fieldValues", "header", "values", "value", "require_cache", "__commonJSMin", "exports", "module", "kConstruct", "urlEquals", "getFieldValues", "kEnumerableProperty", "isDisturbed", "kHeadersList", "webidl", "Response", "cloneResponse", "Request", "kState", "kHeaders", "kGuard", "kRealm", "fetching", "urlIsHttpHttpsScheme", "createDeferredPromise", "readAllBytes", "assert", "getGlobalDispatcher", "_relevantRequestResponseList", "_Cache_instances", "batchCacheOperations_fn", "queryCache_fn", "requestMatchesCachedItem_fn", "_Cache", "__privateAdd", "__privateSet", "request", "options", "p", "r", "responses", "requestResponse", "__privateGet", "requestResponses", "__privateMethod", "responseList", "response", "responseObject", "body", "requests", "responsePromises", "requestList", "fetchControllers", "responsePromise", "fieldValues", "fieldValue", "controller", "operations", "index", "operation", "cacheJobPromise", "errorData", "e", "innerRequest", "innerResponse", "clonedResponse", "bodyReadPromise", "reader", "bytes", "promise", "requestObject", "cache", "backupCache", "addedItems", "resultList", "idx", "requestQuery", "targetStorage", "storage", "cachedRequest", "cachedResponse", "queryURL", "cachedURL", "requestValue", "queryValue", "Cache", "cacheQueryOptionConverters", "require_cachestorage", "__commonJSMin", "exports", "module", "kConstruct", "Cache", "webidl", "kEnumerableProperty", "_caches", "_CacheStorage", "__privateAdd", "request", "options", "__privateGet", "cacheList", "response", "cacheName", "cache", "CacheStorage", "require_constants", "__commonJSMin", "exports", "module", "require_util", "__commonJSMin", "exports", "module", "assert", "kHeadersList", "isCTLExcludingHtab", "value", "char", "code", "validateCookieName", "name", "validateCookieValue", "validateCookiePath", "path", "validateCookieDomain", "domain", "toIMFDate", "date", "days", "months", "dayName", "day", "month", "year", "hour", "minute", "second", "validateCookieMaxAge", "maxAge", "stringify", "cookie", "out", "part", "key", "kHeadersListNode", "getHeadersList", "headers", "symbol", "headersList", "require_parse", "__commonJSMin", "exports", "module", "maxNameValuePairSize", "maxAttributeValueSize", "isCTLExcludingHtab", "collectASequenceOfCodePointsFast", "assert", "parseSetCookie", "header", "nameValuePair", "unparsedAttributes", "name", "value", "position", "parseUnparsedAttributes", "cookieAttributeList", "cookieAv", "attributeName", "attributeValue", "attributeNameLowercase", "expiryTime", "charCode", "deltaSeconds", "cookieDomain", "cookiePath", "enforcement", "attributeValueLowercase", "require_cookies", "__commonJSMin", "exports", "module", "parseSetCookie", "stringify", "getHeadersList", "webidl", "Headers", "getCookies", "headers", "cookie", "out", "piece", "name", "value", "deleteCookie", "attributes", "setCookie", "getSetCookies", "cookies", "pair", "require_constants", "__commonJSMin", "exports", "module", "uid", "staticPropertyDescriptors", "states", "opcodes", "maxUnsigned16Bit", "parserStates", "emptyBuffer", "require_symbols", "__commonJSMin", "exports", "module", "require_events", "__commonJSMin", "exports", "module", "webidl", "kEnumerableProperty", "MessagePort", "_eventInit", "_MessageEvent", "type", "eventInitDict", "__privateAdd", "__privateSet", "__privateGet", "bubbles", "cancelable", "data", "origin", "lastEventId", "source", "ports", "MessageEvent", "_CloseEvent", "CloseEvent", "_ErrorEvent", "ErrorEvent", "eventInit", "require_util", "__commonJSMin", "exports", "module", "kReadyState", "kController", "kResponse", "kBinaryType", "kWebSocketURL", "states", "opcodes", "MessageEvent", "ErrorEvent", "isEstablished", "ws", "isClosing", "isClosed", "fireEvent", "e", "target", "eventConstructor", "eventInitDict", "event", "websocketMessageReceived", "type", "data", "dataForEvent", "failWebsocketConnection", "isValidSubprotocol", "protocol", "char", "code", "isValidStatusCode", "reason", "controller", "response", "require_connection", "__commonJSMin", "exports", "module", "diagnosticsChannel", "uid", "states", "kReadyState", "kSentClose", "kByteParser", "kReceivedClose", "fireEvent", "failWebsocketConnection", "CloseEvent", "makeRequest", "fetching", "Headers", "getGlobalDispatcher", "kHeadersList", "channels", "crypto", "establishWebSocketConnection", "url", "protocols", "ws", "onEstablish", "options", "requestURL", "request", "headersList", "keyValue", "protocol", "permessageDeflate", "response", "secWSAccept", "digest", "secExtension", "secProtocol", "onSocketData", "onSocketClose", "onSocketError", "chunk", "wasClean", "code", "reason", "result", "error", "require_frame", "__commonJSMin", "exports", "module", "maxUnsigned16Bit", "crypto", "WebsocketFrameSend", "data", "opcode", "bodyLength", "payloadLength", "offset", "buffer", "i", "require_receiver", "__commonJSMin", "exports", "module", "Writable", "diagnosticsChannel", "parserStates", "opcodes", "states", "emptyBuffer", "kReadyState", "kSentClose", "kResponse", "kReceivedClose", "isValidStatusCode", "failWebsocketConnection", "websocketMessageReceived", "WebsocketFrameSend", "channels", "_buffers", "_byteOffset", "_state", "_info", "_fragments", "ByteParser", "ws", "__privateAdd", "chunk", "_", "callback", "__privateGet", "__privateSet", "buffer", "payloadLength", "body", "closeFrame", "err", "frame", "upper", "lower", "fullMessage", "n", "offset", "next", "length", "onlyCode", "data", "code", "reason", "require_websocket", "__commonJSMin", "exports", "module", "webidl", "DOMException", "URLSerializer", "getGlobalOrigin", "staticPropertyDescriptors", "states", "opcodes", "emptyBuffer", "kWebSocketURL", "kReadyState", "kController", "kBinaryType", "kResponse", "kSentClose", "kByteParser", "isEstablished", "isClosing", "isValidSubprotocol", "failWebsocketConnection", "fireEvent", "establishWebSocketConnection", "WebsocketFrameSend", "ByteParser", "kEnumerableProperty", "isBlobLike", "getGlobalDispatcher", "types", "experimentalWarned", "_events", "_bufferedAmount", "_protocol", "_extensions", "_WebSocket_instances", "onConnectionEstablished_fn", "_WebSocket", "url", "protocols", "__privateAdd", "options", "baseURL", "urlRecord", "e", "p", "response", "__privateMethod", "code", "reason", "reasonByteLength", "frame", "err", "data", "socket", "value", "buffer", "__privateSet", "__privateGet", "ab", "fn", "type", "parser", "extensions", "protocol", "WebSocket", "V", "require_undici", "__commonJSMin", "exports", "module", "Client", "Dispatcher", "errors", "Pool", "BalancedPool", "Agent", "util", "InvalidArgumentError", "api", "buildConnector", "MockClient", "MockAgent", "MockPool", "mockErrors", "ProxyAgent", "RetryHandler", "getGlobalDispatcher", "setGlobalDispatcher", "DecoratorHandler", "RedirectHandler", "createRedirectInterceptor", "hasCrypto", "makeDispatcher", "fn", "url", "opts", "handler", "path", "agent", "dispatcher", "fetchImpl", "resource", "err", "setGlobalOrigin", "getGlobalOrigin", "CacheStorage", "kConstruct", "deleteCookie", "getCookies", "getSetCookies", "setCookie", "parseMIMEType", "serializeAMimeType", "WebSocket", "http", "__importStar", "https", "pm", "tunnel", "undici_1", "HttpCodes", "exports", "Headers", "MediaTypes", "getProxyUrl", "serverUrl", "proxyUrl", "HttpRedirectCodes", "HttpResponseRetryCodes", "RetryableHttpVerbs", "ExponentialBackoffCeiling", "ExponentialBackoffTimeSlice", "HttpClientError", "_HttpClientError", "message", "statusCode", "HttpClientResponse", "resolve", "__awaiter", "output", "chunk", "chunks", "isHttps", "requestUrl", "HttpClient", "userAgent", "handlers", "requestOptions", "additionalHeaders", "data", "verb", "stream", "res", "obj", "headers", "parsedUrl", "info", "maxTries", "numTries", "response", "authenticationHandler", "handler", "redirectsRemaining", "redirectUrl", "parsedRedirectUrl", "header", "reject", "callbackForResult", "err", "onResult", "callbackCalled", "handleResult", "req", "msg", "socket", "sock", "method", "usingSsl", "defaultPort", "lowercaseKeys", "_default", "clientHeader", "agent", "useProxy", "maxSockets", "agentOptions", "tunnelAgent", "overHttps", "options", "proxyAgent", "retryNumber", "ms", "dateTimeDeserializer", "key", "value", "a", "contents", "c", "k", "BasicCredentialHandler", "username", "password", "options", "exports", "BearerCredentialHandler", "token", "PersonalAccessTokenCredentialHandler", "http_client_1", "auth_1", "core_1", "OidcClient", "_OidcClient", "allowRetry", "maxRetry", "requestOptions", "token", "runtimeUrl", "id_token_url", "id_token", "_a", "error", "audience", "encodedAudience", "exports", "os_1", "fs_1", "access", "appendFile", "writeFile", "exports", "Summary", "pathFromEnv", "tag", "content", "attrs", "htmlAttrs", "key", "value", "options", "overwrite", "filePath", "text", "addEOL", "code", "lang", "element", "items", "ordered", "listItems", "item", "rows", "tableBody", "row", "cells", "cell", "header", "data", "colspan", "rowspan", "label", "src", "alt", "width", "height", "level", "allowedTag", "cite", "href", "_summary", "path", "__importStar", "toPosixPath", "pth", "exports", "toWin32Path", "toPlatformPath", "fs", "__importStar", "path", "_a", "exports", "exists", "fsPath", "err", "isDirectory", "useStat", "isRooted", "p", "normalizeSeparators", "tryGetExecutablePath", "filePath", "extensions", "stats", "upperExt", "validExt", "isUnixExecutable", "originalFilePath", "extension", "directory", "upperName", "actualName", "getCmdPath", "assert_1", "path", "__importStar", "ioUtil", "cp", "source", "dest", "options", "force", "recursive", "copySourceDirectory", "readCopyOptions", "destStat", "newDest", "cpDirRecursive", "copyFile", "exports", "mv", "destExists", "rmRF", "mkdirP", "inputPath", "err", "fsPath", "which", "tool", "check", "result", "matches", "findInPath", "extensions", "extension", "filePath", "directories", "p", "directory", "sourceDir", "destDir", "currentDepth", "files", "fileName", "srcFile", "destFile", "e", "symlinkFull", "os", "__importStar", "events", "child", "path", "io", "ioUtil", "timers_1", "IS_WINDOWS", "ToolRunner", "toolPath", "args", "options", "message", "noPrefix", "cmd", "data", "strBuffer", "onLine", "s", "n", "line", "err", "argline", "a", "str", "end", "upperToolPath", "arg", "cmdSpecialChars", "needsQuotes", "char", "x", "reverse", "quoteHit", "i", "result", "resolve", "reject", "__awaiter", "optionsNonNull", "state", "ExecState", "fileName", "cp", "stdbuffer", "errbuffer", "code", "error", "exitCode", "exports", "argStringToArray", "argString", "inQuotes", "escaped", "append", "c", "_ExecState", "string_decoder_1", "tr", "__importStar", "exec", "commandLine", "args", "options", "commandArgs", "toolPath", "exports", "getExecOutput", "stdout", "stderr", "stdoutDecoder", "stderrDecoder", "originalStdoutListener", "_a", "originalStdErrListener", "_b", "stdErrListener", "data", "stdOutListener", "listeners", "exitCode", "os_1", "__importDefault", "exec", "__importStar", "getWindowsInfo", "__awaiter", "version", "name", "getMacOsInfo", "stdout", "_b", "_a", "_d", "_c", "getLinuxInfo", "exports", "getDetails", "command_1", "file_command_1", "utils_1", "os", "__importStar", "path", "oidc_utils_1", "ExitCode", "exports", "exportVariable", "name", "val", "convertedVal", "setSecret", "secret", "addPath", "inputPath", "getInput", "options", "getMultilineInput", "inputs", "x", "input", "getBooleanInput", "trueValue", "falseValue", "setOutput", "value", "setCommandEcho", "enabled", "setFailed", "message", "error", "isDebug", "debug", "properties", "warning", "notice", "info", "startGroup", "endGroup", "group", "fn", "result", "saveState", "getState", "getIDToken", "aud", "summary_1", "summary_2", "path_utils_1", "require_identity", "__commonJSMin", "exports", "ALIAS", "DOC", "MAP", "PAIR", "SCALAR", "SEQ", "NODE_TYPE", "isAlias", "node", "isDocument", "isMap", "isPair", "isScalar", "isSeq", "isCollection", "isNode", "hasAnchor", "require_visit", "__commonJSMin", "exports", "identity", "BREAK", "SKIP", "REMOVE", "visit", "node", "visitor", "visitor_", "initVisitor", "visit_", "key", "path", "ctrl", "callVisitor", "replaceNode", "i", "ci", "ck", "cv", "visitAsync", "visitAsync_", "parent", "pt", "require_directives", "__commonJSMin", "exports", "identity", "visit", "escapeChars", "escapeTagName", "tn", "ch", "Directives", "_Directives", "yaml", "tags", "copy", "res", "line", "onError", "parts", "name", "handle", "prefix", "version", "isValid", "source", "verbatim", "suffix", "error", "tag", "doc", "lines", "tagEntries", "tagNames", "_key", "node", "require_anchors", "__commonJSMin", "exports", "identity", "visit", "anchorIsValid", "anchor", "msg", "anchorNames", "root", "anchors", "_key", "node", "findNewAnchor", "prefix", "exclude", "i", "name", "createNodeAnchors", "doc", "aliasObjects", "sourceObjects", "prevAnchors", "source", "ref", "error", "require_applyReviver", "__commonJSMin", "exports", "applyReviver", "reviver", "obj", "key", "val", "len", "v0", "v1", "k", "require_toJS", "__commonJSMin", "exports", "identity", "toJS", "value", "arg", "ctx", "v", "data", "res", "require_Node", "__commonJSMin", "exports", "applyReviver", "identity", "toJS", "NodeBase", "type", "copy", "doc", "mapAsMap", "maxAliasCount", "onAnchor", "reviver", "ctx", "res", "count", "require_Alias", "__commonJSMin", "exports", "anchors", "visit", "identity", "Node", "toJS", "Alias", "source", "doc", "found", "_key", "node", "_arg", "ctx", "maxAliasCount", "msg", "data", "getAliasCount", "_onComment", "_onChompKeep", "src", "anchor", "count", "item", "c", "kc", "vc", "require_Scalar", "__commonJSMin", "exports", "identity", "Node", "toJS", "isScalarValue", "value", "Scalar", "arg", "ctx", "require_createNode", "__commonJSMin", "exports", "Alias", "identity", "Scalar", "defaultTagPrefix", "findTagObject", "value", "tagName", "tags", "match", "t", "tagObj", "createNode", "ctx", "map", "aliasDuplicateObjects", "onAnchor", "onTagObj", "schema", "sourceObjects", "ref", "node", "require_Collection", "__commonJSMin", "exports", "createNode", "identity", "Node", "collectionFromPath", "schema", "path", "value", "v", "k", "isEmptyPath", "Collection", "type", "copy", "it", "key", "rest", "node", "keepScalar", "allowScalar", "require_stringifyComment", "__commonJSMin", "exports", "stringifyComment", "str", "indentComment", "comment", "indent", "lineComment", "require_foldFlowLines", "__commonJSMin", "exports", "FOLD_FLOW", "FOLD_BLOCK", "FOLD_QUOTED", "foldFlowLines", "text", "indent", "mode", "indentAtStart", "lineWidth", "minContentWidth", "onFold", "onOverflow", "endStep", "folds", "escapedFolds", "end", "split", "prev", "overflow", "i", "escStart", "escEnd", "consumeMoreIndentedLines", "ch", "next", "j", "res", "fold", "start", "require_stringifyString", "__commonJSMin", "exports", "Scalar", "foldFlowLines", "getFoldOptions", "ctx", "isBlock", "containsDocumentMarker", "str", "lineLengthOverLimit", "lineWidth", "indentLength", "limit", "strLen", "i", "start", "doubleQuotedString", "value", "json", "implicitKey", "minMultiLineLength", "indent", "ch", "code", "singleQuotedString", "res", "quotedString", "singleQuote", "qs", "hasDouble", "hasSingle", "blockEndNewlines", "blockString", "comment", "type", "onComment", "onChompKeep", "blockQuote", "commentString", "literal", "chomp", "endStart", "end", "endNlPos", "startWithSpace", "startEnd", "startNlPos", "header", "foldedValue", "literalFallback", "foldOptions", "body", "plainString", "item", "actualString", "indentStep", "inFlow", "test", "tag", "compat", "tags", "stringifyString", "ss", "_stringify", "_type", "defaultKeyType", "defaultStringType", "t", "require_stringify", "__commonJSMin", "exports", "anchors", "identity", "stringifyComment", "stringifyString", "createStringifyContext", "doc", "options", "opt", "inFlow", "getTagObject", "tags", "item", "match", "t", "tagObj", "obj", "testMatch", "name", "stringifyProps", "node", "anchors$1", "props", "anchor", "tag", "stringify", "ctx", "onComment", "onChompKeep", "o", "str", "require_stringifyPair", "__commonJSMin", "exports", "identity", "Scalar", "stringify", "stringifyComment", "stringifyPair", "key", "value", "ctx", "onComment", "onChompKeep", "allNullValues", "doc", "indent", "indentStep", "commentString", "indentSeq", "simpleKeys", "keyComment", "msg", "explicitKey", "keyCommentDone", "chompKeep", "str", "vsb", "vcb", "valueComment", "valueCommentDone", "valueStr", "ws", "cs", "vs0", "nl0", "hasNewline", "flow", "hasPropsLine", "sp0", "require_log", "__commonJSMin", "exports", "node_process", "debug", "logLevel", "messages", "warn", "warning", "require_merge", "__commonJSMin", "exports", "identity", "Scalar", "MERGE_KEY", "merge", "value", "addMergeToJSMap", "isMergeKey", "ctx", "key", "tag", "map", "it", "mergeValue", "source", "srcMap", "require_addPairToJSMap", "__commonJSMin", "exports", "log", "merge", "stringify", "identity", "toJS", "addPairToJSMap", "ctx", "map", "key", "value", "jsKey", "stringKey", "stringifyKey", "jsValue", "strCtx", "node", "strKey", "jsonStr", "require_Pair", "__commonJSMin", "exports", "createNode", "stringifyPair", "addPairToJSMap", "identity", "createPair", "key", "value", "ctx", "k", "v", "Pair", "_Pair", "schema", "_", "pair", "onComment", "onChompKeep", "require_stringifyCollection", "__commonJSMin", "exports", "identity", "stringify", "stringifyComment", "stringifyCollection", "collection", "ctx", "options", "stringifyFlowCollection", "stringifyBlockCollection", "comment", "items", "blockItemPrefix", "flowChars", "itemIndent", "onChompKeep", "onComment", "indent", "commentString", "itemCtx", "chompKeep", "lines", "i", "item", "addCommentBefore", "ik", "str", "line", "indentStep", "fcPadding", "reqNewline", "linesAtValue", "iv", "start", "end", "len", "sum", "ic", "require_YAMLMap", "__commonJSMin", "exports", "stringifyCollection", "addPairToJSMap", "Collection", "identity", "Pair", "Scalar", "findPair", "items", "key", "k", "it", "YAMLMap", "schema", "obj", "ctx", "keepUndefined", "replacer", "map", "add", "value", "pair", "overwrite", "_pair", "prev", "sortEntries", "i", "item", "keepScalar", "node", "_", "Type", "onComment", "onChompKeep", "require_map", "__commonJSMin", "exports", "identity", "YAMLMap", "map", "onError", "schema", "obj", "ctx", "require_YAMLSeq", "__commonJSMin", "exports", "createNode", "stringifyCollection", "Collection", "identity", "Scalar", "toJS", "YAMLSeq", "schema", "value", "key", "idx", "asItemIndex", "keepScalar", "it", "prev", "_", "ctx", "seq", "item", "onComment", "onChompKeep", "obj", "replacer", "i", "require_seq", "__commonJSMin", "exports", "identity", "YAMLSeq", "seq", "onError", "schema", "obj", "ctx", "require_string", "__commonJSMin", "exports", "stringifyString", "string", "value", "str", "item", "ctx", "onComment", "onChompKeep", "require_null", "__commonJSMin", "exports", "Scalar", "nullTag", "value", "source", "ctx", "require_bool", "__commonJSMin", "exports", "Scalar", "boolTag", "value", "str", "source", "ctx", "sv", "require_stringifyNumber", "__commonJSMin", "exports", "stringifyNumber", "format", "minFractionDigits", "tag", "value", "num", "n", "i", "d", "require_float", "__commonJSMin", "exports", "Scalar", "stringifyNumber", "floatNaN", "value", "str", "floatExp", "node", "num", "float", "dot", "require_int", "__commonJSMin", "exports", "stringifyNumber", "intIdentify", "value", "intResolve", "str", "offset", "radix", "intAsBigInt", "intStringify", "node", "prefix", "intOct", "_onError", "opt", "int", "intHex", "require_schema", "__commonJSMin", "exports", "map", "_null", "seq", "string", "bool", "float", "int", "schema", "require_schema", "__commonJSMin", "exports", "Scalar", "map", "seq", "intIdentify", "value", "stringifyJSON", "jsonScalars", "str", "_onError", "intAsBigInt", "jsonError", "onError", "schema", "require_binary", "__commonJSMin", "exports", "node_buffer", "Scalar", "stringifyString", "binary", "value", "src", "onError", "str", "buffer", "comment", "type", "ctx", "onComment", "onChompKeep", "buf", "s", "i", "lineWidth", "n", "lines", "o", "require_pairs", "__commonJSMin", "exports", "identity", "Pair", "Scalar", "YAMLSeq", "resolvePairs", "seq", "onError", "i", "item", "pair", "cn", "createPairs", "schema", "iterable", "ctx", "replacer", "pairs", "it", "key", "value", "keys", "require_omap", "__commonJSMin", "exports", "identity", "toJS", "YAMLMap", "YAMLSeq", "pairs", "YAMLOMap", "_YAMLOMap", "_", "ctx", "map", "pair", "key", "value", "schema", "iterable", "pairs$1", "omap", "seq", "onError", "seenKeys", "require_bool", "__commonJSMin", "exports", "Scalar", "boolStringify", "value", "source", "ctx", "trueTag", "falseTag", "require_float", "__commonJSMin", "exports", "Scalar", "stringifyNumber", "floatNaN", "value", "str", "floatExp", "node", "num", "float", "dot", "f", "require_int", "__commonJSMin", "exports", "stringifyNumber", "intIdentify", "value", "intResolve", "str", "offset", "radix", "intAsBigInt", "sign", "n", "intStringify", "node", "prefix", "intBin", "_onError", "opt", "intOct", "int", "intHex", "require_set", "__commonJSMin", "exports", "identity", "Pair", "YAMLMap", "YAMLSet", "_YAMLSet", "schema", "key", "pair", "keepPair", "value", "prev", "_", "ctx", "onComment", "onChompKeep", "iterable", "replacer", "set", "map", "onError", "require_timestamp", "__commonJSMin", "exports", "stringifyNumber", "parseSexagesimal", "str", "asBigInt", "sign", "parts", "num", "n", "res", "p", "stringifySexagesimal", "node", "value", "_60", "intTime", "_onError", "intAsBigInt", "floatTime", "timestamp", "match", "year", "month", "day", "hour", "minute", "second", "millisec", "date", "tz", "require_schema", "__commonJSMin", "exports", "map", "_null", "seq", "string", "binary", "bool", "float", "int", "merge", "omap", "pairs", "set", "timestamp", "schema", "require_tags", "__commonJSMin", "exports", "map", "_null", "seq", "string", "bool", "float", "int", "schema", "schema$1", "binary", "merge", "omap", "pairs", "schema$2", "set", "timestamp", "schemas", "tagsByName", "coreKnownTags", "getTags", "customTags", "schemaName", "addMergeTag", "schemaTags", "tags", "keys", "key", "tag", "tagObj", "tagName", "require_Schema", "__commonJSMin", "exports", "identity", "map", "seq", "string", "tags", "sortMapEntriesByKey", "a", "b", "Schema", "_Schema", "compat", "customTags", "merge", "resolveKnownTags", "schema", "sortMapEntries", "toStringDefaults", "copy", "require_stringifyDocument", "__commonJSMin", "exports", "identity", "stringify", "stringifyComment", "stringifyDocument", "doc", "options", "lines", "hasDirectives", "dir", "ctx", "commentString", "cs", "chompKeep", "contentComment", "onChompKeep", "body", "dc", "require_Document", "__commonJSMin", "exports", "Alias", "Collection", "identity", "Pair", "toJS", "Schema", "stringifyDocument", "anchors", "applyReviver", "createNode", "directives", "Document", "_Document", "value", "replacer", "options", "_replacer", "opt", "version", "copy", "assertCollection", "path", "node", "name", "prev", "keyToStr", "v", "asStr", "aliasDuplicateObjects", "anchorPrefix", "flow", "keepUndefined", "onTagObj", "tag", "onAnchor", "setAnchors", "sourceObjects", "ctx", "key", "k", "keepScalar", "sv", "json", "jsonArg", "mapAsMap", "maxAliasCount", "reviver", "res", "count", "s", "contents", "require_errors", "__commonJSMin", "exports", "YAMLError", "name", "pos", "code", "message", "YAMLParseError", "YAMLWarning", "prettifyError", "src", "lc", "error", "line", "col", "ci", "lineStr", "trimStart", "prev", "count", "end", "pointer", "require_resolve_props", "__commonJSMin", "exports", "resolveProps", "tokens", "flow", "indicator", "next", "offset", "onError", "parentIndent", "startOnNewline", "spaceBefore", "atNewline", "hasSpace", "comment", "commentSep", "hasNewline", "reqSpace", "tab", "anchor", "tag", "newlineAfterProp", "comma", "found", "start", "token", "cb", "last", "end", "require_util_contains_newline", "__commonJSMin", "exports", "containsNewline", "key", "st", "it", "require_util_flow_indent_check", "__commonJSMin", "exports", "utilContainsNewline", "flowIndentCheck", "indent", "fc", "onError", "end", "require_util_map_includes", "__commonJSMin", "exports", "identity", "mapIncludes", "ctx", "items", "search", "uniqueKeys", "isEqual", "a", "b", "pair", "require_resolve_block_map", "__commonJSMin", "exports", "Pair", "YAMLMap", "resolveProps", "utilContainsNewline", "utilFlowIndentCheck", "utilMapIncludes", "startColMsg", "resolveBlockMap", "composeNode", "composeEmptyNode", "ctx", "bm", "onError", "tag", "NodeClass", "map", "offset", "commentEnd", "collItem", "start", "key", "sep", "value", "keyProps", "implicitKey", "keyStart", "keyNode", "valueProps", "valueNode", "pair", "require_resolve_block_seq", "__commonJSMin", "exports", "YAMLSeq", "resolveProps", "utilFlowIndentCheck", "resolveBlockSeq", "composeNode", "composeEmptyNode", "ctx", "bs", "onError", "tag", "NodeClass", "seq", "offset", "commentEnd", "start", "value", "props", "node", "require_resolve_end", "__commonJSMin", "exports", "resolveEnd", "end", "offset", "reqSpace", "onError", "comment", "hasSpace", "sep", "token", "source", "type", "cb", "require_resolve_flow_collection", "__commonJSMin", "exports", "identity", "Pair", "YAMLMap", "YAMLSeq", "resolveEnd", "resolveProps", "utilContainsNewline", "utilMapIncludes", "blockMsg", "isBlock", "token", "resolveFlowCollection", "composeNode", "composeEmptyNode", "ctx", "fc", "onError", "tag", "isMap", "fcName", "NodeClass", "coll", "atRoot", "offset", "i", "collItem", "start", "key", "sep", "value", "props", "prevItemComment", "loop", "st", "prev", "valueNode", "keyStart", "keyNode", "valueProps", "pair", "map", "endRange", "expectedEnd", "ce", "ee", "cePos", "name", "msg", "end", "require_compose_collection", "__commonJSMin", "exports", "identity", "Scalar", "YAMLMap", "YAMLSeq", "resolveBlockMap", "resolveBlockSeq", "resolveFlowCollection", "resolveCollection", "CN", "ctx", "token", "onError", "tagName", "tag", "coll", "Coll", "composeCollection", "props", "tagToken", "msg", "anchor", "nl", "lastProp", "expType", "t", "kt", "res", "node", "require_resolve_block_scalar", "__commonJSMin", "exports", "Scalar", "resolveBlockScalar", "ctx", "scalar", "onError", "start", "header", "parseBlockScalarHeader", "type", "lines", "splitLines", "chompStart", "i", "content", "value", "end", "trimIndent", "offset", "contentStart", "indent", "sep", "prevMoreIndented", "crlf", "message", "props", "strict", "source", "mode", "chomp", "error", "ch", "n", "hasSpace", "comment", "length", "token", "ts", "split", "first", "m", "require_resolve_flow_scalar", "__commonJSMin", "exports", "Scalar", "resolveEnd", "resolveFlowScalar", "scalar", "strict", "onError", "offset", "type", "source", "end", "_type", "value", "_onError", "rel", "code", "msg", "plainValue", "singleQuotedValue", "doubleQuotedValue", "valueEnd", "re", "badChar", "foldLines", "first", "line", "match", "res", "sep", "pos", "last", "i", "ch", "fold", "foldNewline", "next", "cc", "escapeCodes", "length", "parseCharCode", "raw", "wsStart", "require_compose_scalar", "__commonJSMin", "exports", "identity", "Scalar", "resolveBlockScalar", "resolveFlowScalar", "composeScalar", "ctx", "token", "tagToken", "onError", "value", "type", "comment", "range", "tagName", "msg", "tag", "findScalarTagByName", "findScalarTagByTest", "scalar", "res", "error", "schema", "matchWithTest", "kt", "atKey", "directives", "compat", "ts", "cs", "require_util_empty_scalar_position", "__commonJSMin", "exports", "emptyScalarPosition", "offset", "before", "pos", "i", "st", "require_compose_node", "__commonJSMin", "exports", "Alias", "identity", "composeCollection", "composeScalar", "resolveEnd", "utilEmptyScalarPosition", "CN", "composeNode", "composeEmptyNode", "ctx", "token", "props", "onError", "atKey", "spaceBefore", "comment", "anchor", "tag", "node", "isSrcToken", "composeAlias", "message", "offset", "before", "pos", "end", "options", "source", "alias", "valueEnd", "re", "require_compose_doc", "__commonJSMin", "exports", "Document", "composeNode", "resolveEnd", "resolveProps", "composeDoc", "options", "directives", "offset", "start", "value", "end", "onError", "opts", "doc", "ctx", "props", "contentEnd", "re", "require_composer", "__commonJSMin", "exports", "node_process", "directives", "Document", "errors", "identity", "composeDoc", "resolveEnd", "getErrorPos", "src", "offset", "source", "parsePrelude", "prelude", "comment", "atComment", "afterEmptyLine", "Composer", "options", "code", "message", "warning", "pos", "doc", "afterDoc", "dc", "it", "cb", "tokens", "forceDoc", "endOffset", "token", "msg", "error", "end", "opts", "require_cst_scalar", "__commonJSMin", "exports", "resolveBlockScalar", "resolveFlowScalar", "errors", "stringifyString", "resolveAsScalar", "token", "strict", "onError", "_onError", "pos", "code", "message", "offset", "createScalarToken", "value", "context", "implicitKey", "indent", "inFlow", "type", "source", "end", "he", "head", "body", "props", "addEndtoBlockProps", "setScalarValue", "afterKey", "header", "setBlockScalarValue", "setFlowScalarValue", "key", "st", "oa", "tok", "nl", "require_cst_stringify", "__commonJSMin", "exports", "stringify", "cst", "stringifyToken", "stringifyItem", "token", "res", "tok", "item", "st", "start", "key", "sep", "value", "require_cst_visit", "__commonJSMin", "exports", "BREAK", "SKIP", "REMOVE", "visit", "cst", "visitor", "_visit", "path", "item", "field", "index", "tok", "parent", "coll", "ctrl", "token", "i", "ci", "require_cst", "__commonJSMin", "exports", "cstScalar", "cstStringify", "cstVisit", "BOM", "DOCUMENT", "FLOW_END", "SCALAR", "isCollection", "token", "isScalar", "prettyToken", "tokenType", "source", "require_lexer", "__commonJSMin", "exports", "cst", "isEmpty", "ch", "hexDigits", "tagChars", "flowIndicatorChars", "invalidAnchorChars", "isNotAnchorChar", "Lexer", "source", "incomplete", "next", "i", "n", "offset", "indent", "dt", "end", "state", "line", "dirEnd", "cs", "sp", "s", "ch0", "ch1", "nl", "quote", "qb", "loop", "lastChar", "inFlow", "allowEmpty", "allowTabs", "test", "require_line_counter", "__commonJSMin", "exports", "LineCounter", "offset", "low", "high", "mid", "start", "require_parser", "__commonJSMin", "exports", "node_process", "cst", "lexer", "includesToken", "list", "type", "i", "findNonEmptyIndex", "isFlowToken", "token", "getPrevProps", "parent", "it", "getFirstKeyStartProps", "prev", "loop", "fixFlowSeqItems", "fc", "Parser", "onNewLine", "source", "incomplete", "lexeme", "message", "top", "n", "error", "last", "st", "doc", "bv", "scalar", "start", "sep", "map", "nl", "end", "atMapIndent", "atNextItem", "key", "fs", "seq", "indent", "docEnd", "require_public_api", "__commonJSMin", "exports", "composer", "Document", "errors", "log", "identity", "lineCounter", "parser", "parseOptions", "options", "prettyErrors", "parseAllDocuments", "source", "parser$1", "composer$1", "docs", "doc", "parseDocument", "_doc", "parse", "src", "reviver", "_reviver", "warning", "stringify", "value", "replacer", "_replacer", "indent", "keepUndefined", "require_dist", "__commonJSMin", "exports", "composer", "Document", "Schema", "errors", "Alias", "identity", "Pair", "Scalar", "YAMLMap", "YAMLSeq", "cst", "lexer", "lineCounter", "parser", "publicApi", "visit", "require_lib", "__commonJSMin", "exports", "module", "conversions", "sign", "x", "evenRound", "createNumberConversion", "bitLength", "typeOpts", "lowerBound", "upperBound", "moduloVal", "moduloBound", "V", "opts", "val", "c", "S", "n", "U", "d", "a", "b", "require_utils", "__commonJSMin", "exports", "module", "target", "source", "keys", "impl", "wrapper", "require_mappingTable", "__commonJSMin", "exports", "module", "require_tr46", "__commonJSMin", "exports", "module", "punycode", "mappingTable", "PROCESSING_OPTIONS", "normalize", "str", "s", "findStatus", "val", "start", "end", "mid", "target", "regexAstralSymbols", "countSymbols", "string", "mapChars", "domain_name", "useSTD3", "processing_option", "hasError", "processed", "len", "i", "codePoint", "status", "combiningMarksRegex", "validateLabel", "label", "error", "processing", "result", "labels", "validation", "verifyDnsLength", "l", "total", "require_url_state_machine", "__commonJSMin", "exports", "module", "punycode", "tr46", "specialSchemes", "failure", "countSymbols", "str", "at", "input", "idx", "c", "isASCIIDigit", "isASCIIAlpha", "isASCIIAlphanumeric", "isASCIIHex", "isSingleDot", "buffer", "isDoubleDot", "isWindowsDriveLetterCodePoints", "cp1", "cp2", "isWindowsDriveLetterString", "string", "isNormalizedWindowsDriveLetterString", "containsForbiddenHostCodePoint", "containsForbiddenHostCodePointExcludingPercent", "isSpecialScheme", "scheme", "isSpecial", "url", "defaultPort", "percentEncode", "hex", "utf8PercentEncode", "buf", "i", "utf8PercentDecode", "output", "isC0ControlPercentEncode", "extraPathPercentEncodeSet", "isPathPercentEncode", "extraUserinfoPercentEncodeSet", "isUserinfoPercentEncode", "percentEncodeChar", "encodeSetPredicate", "cStr", "parseIPv4Number", "R", "parseIPv4", "parts", "numbers", "part", "n", "ipv4", "counter", "serializeIPv4", "address", "parseIPv6", "pieceIndex", "compress", "pointer", "value", "length", "numbersSeen", "ipv4Piece", "number", "swaps", "temp", "serializeIPv6", "findLongestZeroSequence", "ignore0", "parseHost", "isSpecialArg", "parseOpaqueHost", "domain", "asciiDomain", "ipv4Host", "decoded", "arr", "maxIdx", "maxLen", "currStart", "currLen", "serializeHost", "host", "trimControlChars", "trimTabAndNewline", "shortenPath", "path", "isNormalizedWindowsDriveLetter", "includesCredentials", "cannotHaveAUsernamePasswordPort", "URLStateMachine", "base", "encodingOverride", "stateOverride", "res", "ret", "len", "codePoint", "encodedCodePoints", "port", "fileOtherwiseCodePoints", "serializeURL", "excludeFragment", "serializeOrigin", "tuple", "result", "options", "usm", "username", "password", "integer", "require_URL_impl", "__commonJSMin", "exports", "usm", "constructorArgs", "url", "base", "parsedBase", "parsedURL", "v", "input", "require_URL", "__commonJSMin", "exports", "module", "conversions", "utils", "Impl", "impl", "URL", "url", "args", "i", "V", "obj", "constructorArgs", "privateData", "require_public_api", "__commonJSMin", "exports", "require_lib", "__commonJSMin", "exports", "module", "_interopDefault", "ex", "Stream", "http", "Url", "whatwgUrl", "https", "zlib", "Readable", "BUFFER", "TYPE", "Blob", "_Blob", "blobParts", "options", "buffers", "size", "length", "i", "element", "buffer", "type", "buf", "ab", "readable", "start", "end", "relativeStart", "relativeEnd", "span", "slicedBuffer", "blob", "FetchError", "message", "systemError", "convert", "INTERNALS", "PassThrough", "Body", "body", "_this", "_ref", "_ref$size", "_ref$timeout", "timeout", "isURLSearchParams", "isBlob", "err", "error", "consumeBody", "ct", "_this2", "_this3", "convertBody", "proto", "name", "desc", "_this4", "accum", "accumBytes", "abort", "resolve", "reject", "resTimeout", "chunk", "headers", "charset", "res", "str", "obj", "clone", "instance", "p1", "p2", "extractContentType", "getTotalBytes", "writeToStream", "dest", "invalidTokenRegex", "invalidHeaderCharRegex", "validateName", "validateValue", "value", "find", "map", "key", "MAP", "Headers", "_Headers", "init", "rawHeaders", "headerNames", "headerName", "method", "pairs", "pair", "callback", "thisArg", "getHeaders", "_pairs$i", "createHeadersIterator", "kind", "k", "INTERNAL", "target", "iterator", "HeadersIteratorPrototype", "_INTERNAL", "index", "values", "len", "exportNodeCompatibleHeaders", "hostHeaderKey", "createHeadersLenient", "val", "INTERNALS$1", "STATUS_CODES", "Response", "_Response", "opts", "status", "contentType", "INTERNALS$2", "URL", "parse_url", "format_url", "parseURL", "urlStr", "streamDestructionSupported", "isRequest", "input", "isAbortSignal", "signal", "Request", "_Request", "parsedURL", "inputBody", "getNodeRequestOptions", "request", "contentLengthValue", "totalBytes", "agent", "AbortError", "URL$1", "PassThrough$1", "isDomainOrSubdomain", "destination", "original", "orig", "isSameProtocol", "fetch", "url", "send", "response", "destroyStream", "abortAndFinalize", "finalize", "req", "reqTimeout", "socket", "fixResponseChunkedTransferBadEnding", "s", "hadError", "hasDataListener", "location", "locationURL", "requestOpts", "response_options", "codings", "zlibOptions", "raw", "errorCallback", "stream", "code", "path_1", "__importDefault", "promises_1", "node_fetch_1", "downloadBaseUrl", "latestReleaseUrl", "downloadUrl", "tag", "artifact", "getLatestRelease", "response", "getDownloadUrlForTag", "osPlat", "osArch", "tagName", "getBicepCliDownloadUrl", "platform", "arch", "version", "exports", "installBicepCliWithArch", "basePath", "targetFile", "buffer", "toolPath", "require_is", "__commonJSMin", "exports", "boolean", "value", "string", "number", "error", "func", "array", "stringArray", "elem", "require_messages", "__commonJSMin", "exports", "is", "ErrorCodes", "ResponseError", "_ResponseError", "code", "message", "data", "result", "ParameterStructures", "_ParameterStructures", "kind", "value", "AbstractMessageSignature", "method", "numberOfParams", "RequestType0", "RequestType", "_parameterStructures", "RequestType1", "RequestType2", "RequestType3", "RequestType4", "RequestType5", "RequestType6", "RequestType7", "RequestType8", "RequestType9", "NotificationType", "NotificationType0", "NotificationType1", "NotificationType2", "NotificationType3", "NotificationType4", "NotificationType5", "NotificationType6", "NotificationType7", "NotificationType8", "NotificationType9", "Message", "isRequest", "candidate", "isNotification", "isResponse", "require_linkedMap", "__commonJSMin", "exports", "_a", "Touch", "LinkedMap", "key", "touch", "item", "value", "callbackfn", "thisArg", "state", "current", "iterator", "result", "newSize", "currentSize", "next", "previous", "data", "LRUCache", "limit", "ratio", "require_disposable", "__commonJSMin", "exports", "Disposable", "create", "func", "require_ral", "__commonJSMin", "exports", "_ral", "RAL", "install", "ral", "require_events", "__commonJSMin", "exports", "ral_1", "Event", "_disposable", "CallbackList", "callback", "context", "bucket", "foundCallbackWithDifferentContext", "len", "args", "ret", "callbacks", "contexts", "i", "e", "Emitter", "_Emitter", "_options", "listener", "thisArgs", "disposables", "result", "event", "require_cancellation", "__commonJSMin", "exports", "ral_1", "Is", "events_1", "CancellationToken", "is", "value", "candidate", "shortcutEvent", "callback", "context", "handle", "MutableToken", "CancellationTokenSource", "require_sharedArrayCancellation", "__commonJSMin", "exports", "cancellation_1", "CancellationState", "SharedArraySenderStrategy", "request", "buffer", "data", "_conn", "id", "SharedArrayBufferCancellationToken", "SharedArrayBufferCancellationTokenSource", "SharedArrayReceiverStrategy", "require_semaphore", "__commonJSMin", "exports", "ral_1", "Semaphore", "capacity", "thunk", "resolve", "reject", "next", "result", "value", "err", "require_messageReader", "__commonJSMin", "exports", "ral_1", "Is", "events_1", "semaphore_1", "MessageReader", "is", "value", "candidate", "AbstractMessageReader", "error", "info", "ResolvedMessageReaderOptions", "fromOptions", "options", "charset", "result", "contentDecoder", "contentDecoders", "contentTypeDecoder", "contentTypeDecoders", "decoder", "ReadableStreamMessageReader", "readable", "timeout", "callback", "data", "headers", "contentLength", "length", "body", "bytes", "message", "token", "require_messageWriter", "__commonJSMin", "exports", "ral_1", "Is", "semaphore_1", "events_1", "ContentLength", "CRLF", "MessageWriter", "is", "value", "candidate", "AbstractMessageWriter", "error", "message", "count", "ResolvedMessageWriterOptions", "fromOptions", "options", "WriteableStreamMessageWriter", "writable", "msg", "buffer", "headers", "data", "require_messageBuffer", "__commonJSMin", "exports", "CR", "LF", "CRLF", "AbstractMessageBuffer", "encoding", "chunk", "toAppend", "lowerCaseKeys", "state", "chunkIndex", "offset", "chunkBytesRead", "row", "buffer", "result", "headers", "i", "header", "index", "key", "value", "length", "byteCount", "resultOffset", "chunkPart", "require_connection", "__commonJSMin", "exports", "ral_1", "Is", "messages_1", "linkedMap_1", "events_1", "cancellation_1", "CancelNotification", "ProgressToken", "is", "value", "ProgressNotification", "ProgressType", "StarRequestHandler", "Trace", "TraceValues", "fromString", "toString", "TraceFormat", "SetTraceNotification", "LogTraceNotification", "ConnectionErrors", "ConnectionError", "_ConnectionError", "code", "message", "ConnectionStrategy", "candidate", "IdCancellationReceiverStrategy", "RequestCancellationReceiverStrategy", "CancellationReceiverStrategy", "_", "CancellationSenderStrategy", "conn", "id", "CancellationStrategy", "MessageStrategy", "ConnectionOptions", "ConnectionState", "createMessageConnection", "messageReader", "messageWriter", "_logger", "options", "logger", "sequenceNumber", "notificationSequenceNumber", "unknownResponseSequenceNumber", "version", "starRequestHandler", "requestHandlers", "starNotificationHandler", "notificationHandlers", "progressHandlers", "timer", "messageQueue", "responsePromises", "knownCanceledRequests", "requestTokens", "trace", "traceFormat", "tracer", "state", "errorEmitter", "closeEmitter", "unhandledNotificationEmitter", "unhandledProgressEmitter", "disposeEmitter", "cancellationStrategy", "createRequestQueueKey", "createResponseQueueKey", "createNotificationQueueKey", "addMessageToQueue", "queue", "cancelUndispatched", "_message", "isListening", "isClosed", "isDisposed", "closeHandler", "readErrorHandler", "error", "writeErrorHandler", "data", "triggerMessageQueue", "processMessageQueue", "handleMessage", "handleRequest", "handleNotification", "handleResponse", "handleInvalidMessage", "messageStrategy", "callback", "cancelId", "key", "toCancel", "strategy", "response", "traceSendingResponse", "cancellationToken", "traceReceivedNotification", "requestMessage", "reply", "resultOrError", "method", "startTime", "replyError", "replySuccess", "result", "traceReceivedRequest", "element", "type", "requestHandler", "tokenKey", "cancellationSource", "handlerResult", "promise", "responseMessage", "responsePromise", "traceReceivedResponse", "notificationHandler", "params", "responseHandler", "stringifyTrace", "traceSendingRequest", "logLSPMessage", "traceSendingNotification", "lspMessage", "throwIfClosedOrDisposed", "throwIfListening", "throwIfNotListening", "undefinedToNull", "param", "nullToUndefined", "isNamedParam", "computeSingleParam", "parameterStructures", "computeMessageParams", "numberOfParams", "i", "connection", "args", "messageParams", "first", "paramStart", "paramEnd", "notificationMessage", "handler", "_type", "token", "last", "disposable", "p", "resolve", "reject", "resolveWithCleanup", "r", "rejectWithCleanup", "_value", "_tracer", "sendNotificationOrTraceOptions", "_sendNotification", "_traceFormat", "verbose", "require_api", "__commonJSMin", "exports", "messages_1", "linkedMap_1", "disposable_1", "events_1", "cancellation_1", "sharedArrayCancellation_1", "messageReader_1", "messageWriter_1", "messageBuffer_1", "connection_1", "ral_1", "require_ril", "__commonJSMin", "exports", "util_1", "api_1", "MessageBuffer", "_MessageBuffer", "encoding", "value", "buffer", "length", "ReadableStreamWrapper", "stream", "listener", "WritableStreamWrapper", "data", "resolve", "reject", "callback", "error", "_ril", "msg", "options", "err", "ms", "args", "handle", "RIL", "install", "require_main", "__commonJSMin", "exports", "__createBinding", "o", "m", "k", "k2", "desc", "__exportStar", "p", "ril_1", "path", "os", "crypto_1", "net_1", "api_1", "IPCMessageReader", "process", "eventEmitter", "error", "callback", "IPCMessageWriter", "msg", "PortMessageReader", "port", "message", "PortMessageWriter", "SocketMessageReader", "socket", "encoding", "SocketMessageWriter", "options", "StreamMessageReader", "readable", "StreamMessageWriter", "writable", "XDG_RUNTIME_DIR", "safeIpcPathLengths", "generateRandomPipeName", "randomSuffix", "result", "limit", "createClientPipeTransport", "pipeName", "connectResolve", "connected", "resolve", "_reject", "reject", "server", "createServerPipeTransport", "createClientSocketTransport", "createServerSocketTransport", "isReadableStream", "value", "candidate", "isWritableStream", "createMessageConnection", "input", "output", "logger", "reader", "writer", "require_node", "__commonJSMin", "exports", "module", "path_1", "__importDefault", "os_1", "child_process_1", "crypto_1", "net_1", "node_1", "exports", "hasMinimumVersion", "version", "minimumVersion", "tryGetVersionNumberError", "bicepPath", "result", "versionMatch", "actualVersion", "success", "generateRandomPipeName", "randomSuffix", "connectClientPipe", "pipeName", "process", "resolve", "reject", "handleConnectionError", "server", "socket", "openConnection", "pipePath", "stderr", "x", "processExitedEarly", "_", "err", "error", "transportConnected", "reader", "writer", "connection", "os_1", "__importDefault", "install_1", "jsonrpc_1", "Bicep", "_Bicep", "connection", "bicepPath", "bicep", "version", "success", "minimumVersion", "e", "platform", "arch", "basePath", "request", "exports", "require_types", "__commonJSMin", "exports", "__exportStar", "exports", "tslib_es6_exports", "__export", "__addDisposableResource", "__assign", "__asyncDelegator", "__asyncGenerator", "__asyncValues", "__await", "__awaiter", "__classPrivateFieldGet", "__classPrivateFieldIn", "__classPrivateFieldSet", "__createBinding", "__decorate", "__disposeResources", "__esDecorate", "__exportStar", "__extends", "__generator", "__importDefault", "__importStar", "__makeTemplateObject", "__metadata", "__param", "__propKey", "__read", "__rest", "__rewriteRelativeImportExtension", "__runInitializers", "__setFunctionName", "__spread", "__spreadArray", "__spreadArrays", "__values", "tslib_es6_default", "d", "b", "extendStatics", "__", "s", "t", "p", "decorators", "target", "key", "desc", "c", "r", "i", "paramIndex", "decorator", "ctor", "descriptorIn", "contextIn", "initializers", "extraInitializers", "accept", "f", "kind", "descriptor", "_", "done", "context", "result", "thisArg", "value", "useValue", "x", "name", "prefix", "metadataKey", "metadataValue", "_arguments", "P", "generator", "adopt", "resolve", "reject", "fulfilled", "step", "e", "rejected", "body", "y", "g", "verb", "n", "v", "op", "m", "o", "ar", "error", "il", "k", "a", "j", "jl", "to", "from", "pack", "l", "q", "awaitReturn", "resume", "settle", "fulfill", "cooked", "raw", "mod", "ownKeys", "__setModuleDefault", "receiver", "state", "env", "async", "dispose", "inner", "fail", "_SuppressedError", "next", "path", "preserveJsx", "tsx", "ext", "cm", "init_tslib_es6", "__esmMin", "k2", "suppressed", "message", "require_ms", "__commonJSMin", "exports", "module", "s", "m", "h", "d", "w", "y", "val", "options", "type", "parse", "fmtLong", "fmtShort", "str", "match", "n", "ms", "msAbs", "plural", "name", "isPlural", "require_common", "__commonJSMin", "exports", "module", "setup", "env", "createDebug", "coerce", "disable", "enable", "enabled", "destroy", "key", "selectColor", "namespace", "hash", "i", "prevTime", "enableOverride", "namespacesCache", "enabledCache", "debug", "args", "self", "curr", "ms", "index", "match", "format", "formatter", "val", "extend", "v", "delimiter", "newDebug", "namespaces", "split", "ns", "matchesTemplate", "search", "template", "searchIndex", "templateIndex", "starIndex", "matchIndex", "name", "skip", "require_browser", "__commonJSMin", "exports", "module", "formatArgs", "save", "load", "useColors", "localstorage", "warned", "m", "args", "c", "index", "lastC", "match", "namespaces", "r", "formatters", "v", "error", "require_has_flag", "__commonJSMin", "exports", "module", "flag", "argv", "prefix", "position", "terminatorPosition", "require_supports_color", "__commonJSMin", "exports", "module", "os", "tty", "hasFlag", "env", "forceColor", "translateLevel", "level", "supportsColor", "haveStream", "streamIsTTY", "min", "osRelease", "sign", "version", "getSupportLevel", "stream", "require_node", "__commonJSMin", "exports", "module", "tty", "util", "init", "log", "formatArgs", "save", "load", "useColors", "supportsColor", "key", "obj", "prop", "_", "k", "val", "args", "name", "c", "colorCode", "prefix", "getDate", "namespaces", "debug", "keys", "i", "formatters", "v", "str", "require_src", "__commonJSMin", "exports", "module", "http", "__importStar", "https", "toBuffer", "stream", "length", "chunks", "chunk", "exports", "json", "str", "_err", "err", "req", "url", "opts", "promise", "resolve", "reject", "net", "__importStar", "http", "https_1", "__exportStar", "exports", "INTERNAL", "Agent", "opts", "options", "stack", "l", "name", "fakeSocket", "socket", "sockets", "index", "req", "cb", "connectOpts", "err", "v", "debug_1", "__importDefault", "debug", "parseProxyResponse", "socket", "resolve", "reject", "buffersLength", "buffers", "read", "b", "ondata", "cleanup", "onend", "onerror", "err", "buffered", "endOfHeaders", "headerParts", "firstLine", "firstLineParts", "statusCode", "statusText", "headers", "header", "firstColon", "key", "value", "current", "exports", "net", "__importStar", "tls", "assert_1", "__importDefault", "debug_1", "agent_base_1", "url_1", "parse_proxy_response_1", "debug", "HttpsProxyAgent", "proxy", "opts", "host", "port", "omit", "req", "socket", "servername", "headers", "payload", "auth", "name", "proxyResponsePromise", "connect", "buffered", "resume", "fakeSocket", "s", "exports", "obj", "keys", "ret", "key", "net", "__importStar", "tls", "debug_1", "__importDefault", "events_1", "agent_base_1", "url_1", "debug", "HttpProxyAgent", "proxy", "opts", "host", "port", "omit", "req", "protocol", "hostname", "base", "url", "headers", "auth", "name", "value", "first", "endOfHeaders", "socket", "exports", "obj", "keys", "ret", "key", "exports", "exports", "encodeString", "value", "exports", "encodeByteArray", "decodeString", "decodeStringToString", "exports", "isPrimitiveBody", "value", "mapperTypeName", "exports", "validateISODuration", "isDuration", "validUuidRegex", "isValidUuid", "uuid", "handleNullableResponseAndWrappableBody", "responseObject", "combinedHeadersAndBody", "flattenResponse", "fullResponse", "responseSpec", "parsedHeaders", "bodyMapper", "isNullable", "expectedBodyTypeName", "modelProperties", "isPageableResponse", "k", "arrayResponse", "_a", "key", "_b", "base64", "tslib_1", "interfaces_js_1", "utils_js_1", "SerializerImpl", "modelMappers", "isXML", "mapper", "value", "objectName", "failValidation", "constraintName", "constraintValue", "ExclusiveMaximum", "ExclusiveMinimum", "InclusiveMaximum", "InclusiveMinimum", "MaxItems", "MaxLength", "MinItems", "MinLength", "MultipleOf", "Pattern", "UniqueItems", "pattern", "item", "i", "ar", "object", "options", "updatedOptions", "_a", "_b", "_c", "payload", "mapperType", "required", "nullable", "serializeBasicTypes", "serializeEnumType", "serializeDateTypes", "serializeByteArrayType", "serializeBase64UrlType", "serializeSequenceType", "serializeDictionaryType", "serializeCompositeType", "responseBody", "_d", "deserializeCompositeType", "xmlCharKey", "unixTimeToDate", "base64UrlToByteArray", "deserializeSequenceType", "deserializeDictionaryType", "createSerializer", "exports", "trimEnd", "str", "ch", "len", "bufferToBase64Url", "buffer", "splitSerializeName", "prop", "classes", "partialclass", "subwords", "dateToUnixTime", "d", "n", "typeName", "objectType", "allowedValues", "serializer", "isXml", "elementType", "tempArray", "serializedValue", "xmlnsKey", "valueType", "tempDictionary", "key", "getXmlObjectValue", "result", "resolveAdditionalProperties", "additionalProperties", "modelMapper", "resolveReferencedMapper", "className", "resolveModelProperties", "modelProps", "getPolymorphicDiscriminatorRecursively", "getPolymorphicMapper", "propertyMapper", "propName", "parentObject", "paths", "pathName", "childObject", "propertyObjectName", "toSerialize", "polymorphicDiscriminator", "additionalPropertiesMapper", "propNames", "clientPropName", "pn", "xmlNamespace", "isSpecialXmlProperty", "propertyName", "instance", "handledPropertyNames", "serializedName", "xmlName", "xmlElementName", "headerCollectionPrefix", "dictionary", "headerKey", "wrapped", "elementList", "property", "propertyInstance", "res", "steps", "arrayInstance", "k", "v", "isAdditionalProperty", "responsePropName", "element", "getIndexDiscriminator", "discriminators", "discriminatorValue", "typeNamesToCheck", "currentName", "indexDiscriminator", "name", "polymorphicPropertyName", "discriminatorName", "polymorphicMapper", "getPolymorphicDiscriminatorSafely", "exports", "createEmptyPipeline", "ValidPhaseNames", "HttpPipeline", "_HttpPipeline", "policies", "_a", "policy", "options", "removedPolicies", "policyDescriptor", "httpClient", "request", "next", "req", "result", "policyMap", "createPhase", "name", "serializePhase", "noPhase", "deserializePhase", "retryPhase", "signPhase", "orderedPhases", "getPhase", "phase", "descriptor", "policyName", "node", "afterPolicyName", "afterNode", "beforePolicyName", "beforeNode", "walkPhase", "dependant", "walkPhases", "iteration", "initialResultLength", "exports", "log", "node_os_1", "node_util_1", "tslib_1", "process", "message", "args", "log_js_1", "debugEnvVariable", "enabledString", "enabledNamespaces", "skippedNamespaces", "debuggers", "enable", "debugObj", "namespace", "createDebugger", "enabled", "disable", "namespaces", "wildcard", "namespaceList", "ns", "instance", "skipped", "enabledNamespace", "result", "newDebugger", "debug", "destroy", "extend", "args", "index", "exports", "exports", "setLogLevel", "getLogLevel", "createClientLogger", "debug_js_1", "tslib_1", "registeredLoggers", "logLevelFromEnv", "azureLogLevel", "args", "AZURE_LOG_LEVELS", "isAzureLogLevel", "level", "enabledNamespaces", "logger", "shouldEnable", "levelMap", "namespace", "clientRootLogger", "patchLogMethod", "createLogger", "parent", "child", "logLevel", "logger_1", "exports", "AbortError", "message", "exports", "AbortError_js_1", "exports", "exports", "createAbortablePromise", "abort_controller_1", "buildPromise", "options", "cleanupBeforeAbort", "abortSignal", "abortErrorMsg", "resolve", "reject", "rejectOnAbort", "removeListeners", "onAbort", "x", "err", "exports", "getRandomIntegerInclusive", "min", "max", "exports", "delay", "calculateRetryDelay", "createAbortablePromise_js_1", "random_js_1", "StandardAbortMessage", "timeInMs", "options", "token", "abortSignal", "abortErrorMsg", "resolve", "retryAttempt", "config", "exponentialDelay", "clampedDelay", "exports", "cancelablePromiseRace", "abortablePromiseBuilders", "options", "aborter", "abortHandler", "_a", "p", "_b", "exports", "isObject", "input", "exports", "isError", "getErrorMessage", "object_js_1", "e", "hasName", "hasMessage", "stringified", "exports", "computeSha256Hmac", "computeSha256Hash", "crypto_1", "key", "stringToSign", "encoding", "decodedKey", "content", "exports", "isDefined", "isObjectWithProperties", "objectHasProperty", "thing", "properties", "property", "exports", "randomUUID", "crypto_1", "uuidFunction", "_a", "exports", "_a", "_b", "_c", "_d", "exports", "uint8ArrayToString", "stringToUint8Array", "bytes", "format", "value", "delay_js_1", "exports", "aborterUtils_js_1", "createAbortablePromise_js_1", "random_js_1", "object_js_1", "error_js_1", "sha256_js_1", "typeGuards_js_1", "uuidUtils_js_1", "checkEnvironment_js_1", "bytesEncoding_js_1", "core_util_1", "RedactedString", "defaultAllowedHeaderNames", "defaultAllowedQueryParameters", "Sanitizer", "allowedHeaderNames", "allowedQueryParameters", "p", "obj", "seen", "key", "value", "url", "sanitized", "k", "exports", "exports", "logPolicy", "log_js_1", "sanitizer_js_1", "options", "logger", "_a", "sanitizer", "request", "next", "response", "exports", "redirectPolicy", "allowedRedirect", "options", "maxRetries", "request", "next", "response", "handleRedirect", "currentRetries", "status", "headers", "locationHeader", "url", "res", "exports", "getHeaderName", "setPlatformSpecificData", "os", "tslib_1", "process", "map", "versions", "exports", "exports", "getUserAgentHeaderName", "getUserAgentValue", "userAgentPlatform_js_1", "constants_js_1", "getUserAgentString", "telemetryInfo", "parts", "key", "value", "token", "prefix", "runtimeInfo", "defaultAgent", "exports", "userAgentPolicy", "userAgent_js_1", "UserAgentHeaderName", "options", "userAgentValue", "request", "next", "exports", "isNodeReadableStream", "isWebReadableStream", "isReadableStream", "isBlob", "x", "exports", "getRawContent", "createFileFromStream", "createFile", "core_util_1", "typeGuards_js_1", "unimplementedMethods", "rawContent", "hasRawContent", "x", "blob", "stream", "name", "options", "_a", "_b", "_c", "_d", "s", "content", "exports", "concat", "node_stream_1", "typeGuards_js_1", "file_js_1", "streamAsyncIterator", "reader", "done", "value", "tslib_1", "makeAsyncIterable", "webStream", "ensureNodeStream", "stream", "toStream", "source", "sources", "streams", "x", "_d", "stream_1", "e_1", "stream_1_1", "_a", "_c", "chunk", "exports", "multipartPolicy", "core_util_1", "concat_js_1", "typeGuards_js_1", "generateBoundary", "encodeHeaders", "headers", "result", "key", "value", "getLength", "source", "getTotalLength", "sources", "total", "partLength", "buildRequestBody", "request", "parts", "boundary", "part", "contentLength", "maxBoundaryLength", "validBoundaryCharacters", "assertValidBoundary", "x", "next", "contentTypeHeader", "_a", "parsedHeader", "contentType", "parsedBoundary", "exports", "decompressResponsePolicy", "request", "next", "AbortError", "message", "exports", "AbortError_js_1", "exports", "exports", "delay", "parseHeaderValueAsNumber", "abort_controller_1", "StandardAbortMessage", "delayInMs", "value", "options", "resolve", "reject", "timer", "onAborted", "rejectOnAbort", "removeListeners", "response", "headerName", "valueAsNum", "exports", "isThrottlingRetryResponse", "throttlingRetryStrategy", "helpers_js_1", "RetryAfterHeader", "AllRetryAfterHeaders", "getRetryAfterInMs", "response", "header", "retryAfterValue", "retryAfterHeader", "diff", "retryAfterInMs", "exports", "exponentialRetryStrategy", "isExponentialRetryResponse", "isSystemError", "core_util_1", "throttlingRetryStrategy_js_1", "DEFAULT_CLIENT_RETRY_INTERVAL", "DEFAULT_CLIENT_MAX_RETRY_INTERVAL", "options", "retryInterval", "_a", "maxRetryInterval", "_b", "retryCount", "response", "responseError", "matchedSystemError", "ignoreSystemErrors", "isExponential", "ignoreExponentialResponse", "err", "exports", "retryPolicy", "helpers_js_1", "logger_1", "abort_controller_1", "constants_js_1", "retryPolicyLogger", "retryPolicyName", "strategies", "options", "logger", "request", "next", "response", "responseError", "retryCount", "retryRequest", "e", "_a", "_b", "strategiesLoop", "strategy", "strategyLogger", "modifiers", "errorToThrow", "retryAfterInMs", "redirectTo", "exports", "defaultRetryPolicy", "exponentialRetryStrategy_js_1", "throttlingRetryStrategy_js_1", "retryPolicy_js_1", "constants_js_1", "options", "_a", "exports", "createHttpHeaders", "normalizeName", "name", "headerIterator", "map", "entry", "HttpHeadersImpl", "rawHeaders", "headerName", "value", "_a", "options", "result", "normalizedName", "exports", "formDataPolicy", "core_util_1", "httpHeaders_js_1", "formDataToFormDataMap", "formData", "formDataMap", "key", "value", "_a", "request", "next", "contentType", "wwwFormUrlEncode", "prepareFormData", "urlSearchParams", "subValue", "parts", "fieldName", "values", "fileName", "headers", "exports", "loadNoProxy", "getDefaultProxySettings", "proxyPolicy", "https_proxy_agent_1", "http_proxy_agent_1", "log_js_1", "HTTPS_PROXY", "HTTP_PROXY", "ALL_PROXY", "NO_PROXY", "noProxyListLoaded", "globalBypassedMap", "getEnvironmentValue", "name", "loadEnvironmentProxyValue", "httpsProxy", "allProxy", "httpProxy", "isBypassed", "uri", "noProxyList", "bypassedMap", "host", "isBypassedFlag", "pattern", "noProxy", "item", "proxyUrl", "parsedUrl", "getDefaultProxySettingsInternal", "envProxy", "getUrlFromProxySettings", "settings", "parsedProxyUrl", "setProxyAgentOnRequest", "request", "cachedAgents", "isInsecure", "headers", "proxySettings", "options", "defaultProxy", "next", "_a", "exports", "setClientRequestIdPolicy", "requestIdHeaderName", "request", "next", "exports", "agentPolicy", "agent", "req", "next", "exports", "tlsPolicy", "tlsSettings", "req", "next", "exports", "createTracingContext", "options", "context", "TracingContextImpl", "_TracingContextImpl", "initialContext", "key", "value", "newContext", "tracingContext_js_1", "state_js_1", "createDefaultTracingSpan", "exports", "createDefaultInstrumenter", "_name", "spanOptions", "_context", "callback", "callbackArgs", "useInstrumenter", "instrumenter", "getInstrumenter", "instrumenter_js_1", "tracingContext_js_1", "createTracingClient", "options", "namespace", "packageName", "packageVersion", "startSpan", "name", "operationOptions", "spanOptions", "startSpanResult", "_a", "tracingContext", "span", "updatedOptions", "withSpan", "callback", "result", "withContext", "err", "context", "callbackArgs", "parseTraceparentHeader", "traceparentHeader", "createRequestHeaders", "exports", "instrumenter_js_1", "exports", "tracingClient_js_1", "node_util_1", "exports", "exports", "isRestError", "core_util_1", "inspect_js_1", "sanitizer_js_1", "errorSanitizer", "RestError", "_RestError", "message", "options", "e", "exports", "tracingPolicy", "core_tracing_1", "constants_js_1", "userAgent_js_1", "log_js_1", "core_util_1", "restError_js_1", "sanitizer_js_1", "options", "userAgentPromise", "sanitizer", "tracingClient", "tryCreateTracingClient", "request", "next", "userAgent", "spanAttributes", "span", "tracingContext", "_a", "tryCreateSpan", "response", "tryProcessResponse", "err", "tryProcessError", "e", "updatedOptions", "headers", "key", "value", "error", "serviceRequestId", "exports", "createPipelineFromOptions", "logPolicy_js_1", "pipeline_js_1", "redirectPolicy_js_1", "userAgentPolicy_js_1", "multipartPolicy_js_1", "decompressResponsePolicy_js_1", "defaultRetryPolicy_js_1", "formDataPolicy_js_1", "core_util_1", "proxyPolicy_js_1", "setClientRequestIdPolicy_js_1", "agentPolicy_js_1", "tlsPolicy_js_1", "tracingPolicy_js_1", "options", "pipeline", "_a", "exports", "getBodyLength", "createNodeHttpClient", "http", "tslib_1", "https", "zlib", "node_stream_1", "abort_controller_1", "httpHeaders_js_1", "restError_js_1", "log_js_1", "DEFAULT_TLS_SETTINGS", "isReadableStream", "body", "isStreamComplete", "stream", "resolve", "handler", "isArrayBuffer", "ReportTransform", "chunk", "_encoding", "callback", "e", "progressCallback", "NodeHttpClient", "request", "abortController", "abortListener", "event", "acceptEncoding", "shouldDecompress", "bodyLength", "responseStream", "onUploadProgress", "uploadReportStream", "res", "headers", "getResponseHeaders", "response", "_a", "getDecodedResponseStream", "onDownloadProgress", "downloadReportStream", "_b", "_c", "streamToText", "uploadStreamDone", "downloadStreamDone", "url", "isInsecure", "options", "reject", "req", "err", "abortError", "disableKeepAlive", "tlsSettings", "agent", "header", "value", "contentEncoding", "unzip", "inflate", "buffer", "exports", "createDefaultHttpClient", "nodeHttpClient_js_1", "exports", "createPipelineRequest", "httpHeaders_js_1", "core_util_1", "PipelineRequestImpl", "options", "_a", "_b", "_c", "_d", "_e", "_f", "_g", "exports", "exponentialRetryPolicy", "exponentialRetryStrategy_js_1", "retryPolicy_js_1", "constants_js_1", "options", "_a", "exports", "systemErrorRetryPolicy", "exponentialRetryStrategy_js_1", "retryPolicy_js_1", "constants_js_1", "options", "_a", "exports", "throttlingRetryPolicy", "throttlingRetryStrategy_js_1", "retryPolicy_js_1", "constants_js_1", "options", "_a", "exports", "createTokenCycler", "helpers_js_1", "beginRefresh", "getAccessToken", "retryIntervalInMs", "refreshTimeout", "tryGetAccessToken", "finalToken", "token", "credential", "tokenCyclerOptions", "refreshWorker", "tenantId", "options", "cycler", "_a", "refresh", "scopes", "getTokenOptions", "_token", "reason", "tokenOptions", "hasClaimChallenge", "tenantIdChanged", "exports", "bearerTokenAuthenticationPolicy", "parseChallenges", "tokenCycler_js_1", "log_js_1", "restError_js_1", "trySendRequest", "request", "next", "e", "defaultAuthorizeRequest", "options", "scopes", "getAccessToken", "getTokenOptions", "accessToken", "isChallengeResponse", "response", "authorizeRequestOnCaeChallenge", "onChallengeOptions", "caeClaims", "_a", "credential", "challengeCallbacks", "logger", "callbacks", "_b", "_c", "error", "shouldSendRequest", "claims", "getCaeChallengeClaims", "parsedClaim", "challenges", "challengeRegex", "paramRegex", "parsedChallenges", "match", "scheme", "paramsString", "params", "paramMatch", "x", "exports", "ndJsonPolicy", "request", "next", "body", "item", "exports", "auxiliaryAuthenticationHeaderPolicy", "tokenCycler_js_1", "log_js_1", "AUTHORIZATION_AUXILIARY_HEADER", "sendAuthorizeRequest", "options", "scopes", "getAccessToken", "request", "getTokenOptions", "_b", "_a", "credentials", "logger", "tokenCyclerMap", "next", "tokenPromises", "credential", "auxiliaryTokens", "token", "pipeline_js_1", "exports", "createPipelineFromOptions_js_1", "defaultHttpClient_js_1", "httpHeaders_js_1", "pipelineRequest_js_1", "restError_js_1", "decompressResponsePolicy_js_1", "exponentialRetryPolicy_js_1", "setClientRequestIdPolicy_js_1", "logPolicy_js_1", "multipartPolicy_js_1", "proxyPolicy_js_1", "redirectPolicy_js_1", "systemErrorRetryPolicy_js_1", "throttlingRetryPolicy_js_1", "retryPolicy_js_1", "tracingPolicy_js_1", "defaultRetryPolicy_js_1", "userAgentPolicy_js_1", "tlsPolicy_js_1", "formDataPolicy_js_1", "bearerTokenAuthenticationPolicy_js_1", "ndJsonPolicy_js_1", "auxiliaryAuthenticationHeaderPolicy_js_1", "agentPolicy_js_1", "file_js_1", "state_js_1", "getOperationArgumentValueFromParameter", "operationArguments", "parameter", "fallbackObject", "parameterPath", "parameterMapper", "value", "propertySearchResult", "getPropertyFromParameterPath", "useDefaultValue", "propertyName", "propertyMapper", "propertyPath", "propertyValue", "exports", "parent", "result", "i", "parameterPathPart", "originalRequestSymbol", "hasOriginalRequest", "request", "getOperationRequestInfo", "info", "interfaces_js_1", "core_rest_pipeline_1", "serializer_js_1", "operationHelpers_js_1", "defaultJsonContentTypes", "defaultXmlContentTypes", "exports", "deserializationPolicy", "options", "jsonContentTypes", "_b", "_a", "xmlContentTypes", "_d", "_c", "parseXML", "serializerOptions", "updatedOptions", "_e", "_f", "_g", "request", "next", "response", "deserializeResponseBody", "getOperationResponseMap", "parsedResponse", "result", "operationInfo", "operationSpec", "shouldDeserializeResponse", "shouldDeserialize", "parse", "responseSpec", "error", "shouldReturnResponse", "handleErrorResponse", "valueToDeserialize", "deserializeError", "isOperationSpecEmpty", "expectedStatusCodes", "isSuccessByStatus", "errorResponseSpec", "initialErrorMessage", "defaultBodyMapper", "defaultHeadersMapper", "parsedBody", "deserializedError", "elementName", "internalError", "defaultError", "operationResponse", "opts", "text", "contentType", "contentComponents", "component", "body", "err", "msg", "errCode", "serializer_js_1", "getStreamingResponseStatusCodes", "operationSpec", "result", "statusCode", "operationResponse", "exports", "getPathStringFromParameter", "parameter", "parameterPath", "mapper", "interfaces_js_1", "operationHelpers_js_1", "serializer_js_1", "interfaceHelpers_js_1", "exports", "serializationPolicy", "options", "stringifyXML", "request", "next", "operationInfo", "operationSpec", "operationArguments", "serializeHeaders", "serializeRequestBody", "headerParameter", "headerValue", "headerCollectionPrefix", "key", "customHeaders", "_b", "_a", "customHeaderName", "serializerOptions", "updatedOptions", "_c", "_d", "xmlCharKey", "bodyMapper", "required", "serializedName", "xmlName", "xmlElementName", "xmlNamespace", "xmlNamespacePrefix", "nullable", "typeName", "requestBodyParameterPathString", "isStream", "xmlnsKey", "value", "getXmlValueWithNamespace", "prepareXMLRootList", "_e", "error", "formDataParameter", "formDataParameterValue", "formDataParameterPropertyName", "serializedValue", "result", "obj", "elementName", "xmlNamespaceKey", "deserializationPolicy_js_1", "core_rest_pipeline_1", "serializationPolicy_js_1", "createClientPipeline", "options", "pipeline", "exports", "core_rest_pipeline_1", "cachedHttpClient", "getCachedDefaultHttpClient", "exports", "operationHelpers_js_1", "interfaceHelpers_js_1", "CollectionFormatToDelimiterMap", "getRequestUrl", "baseUri", "operationSpec", "operationArguments", "fallbackObject", "urlReplacements", "calculateUrlReplacements", "isAbsolutePath", "requestUrl", "replaceAll", "path", "isAbsoluteUrl", "appendPath", "queryParams", "sequenceParams", "calculateQueryParameters", "appendQueryParams", "exports", "input", "replacements", "result", "searchValue", "replaceValue", "_a", "urlParameter", "urlParameterValue", "parameterPathString", "url", "pathToAppend", "parsedUrl", "newPath", "searchStart", "search", "queryParameter", "queryParameterValue", "delimiter", "item", "simpleParseQueryParams", "queryString", "pairs", "pair", "name", "value", "existingValue", "noOverwrite", "combinedParams", "valueSet", "searchPieces", "subValue", "logger_1", "exports", "core_rest_pipeline_1", "pipeline_js_1", "utils_js_1", "httpClientCache_js_1", "operationHelpers_js_1", "urlHelpers_js_1", "interfaceHelpers_js_1", "log_js_1", "ServiceClient", "options", "_a", "createDefaultPipeline", "_b", "policy", "position", "afterPhase", "request", "operationArguments", "operationSpec", "endpoint", "url", "operationInfo", "contentType", "requestOptions", "rawResponse", "flatResponse", "error", "exports", "credentialScopes", "getCredentialScopes", "credentialOptions", "log_js_1", "base64_js_1", "parseCAEChallenge", "challenges", "x", "challenge", "keyValue", "key", "value", "a", "b", "exports", "authorizeRequestOnClaimChallenge", "onChallengeOptions", "scopes", "response", "logger", "parsedChallenge", "accessToken", "Constants", "isUuid", "text", "authorizeRequestOnTenantChallenge", "challengeOptions", "requestOptions", "requestToOptions", "challenge", "getChallenge", "challengeInfo", "parseChallenge", "challengeScopes", "buildScopes", "tenantId", "extractTenantId", "accessToken", "exports", "scope", "response", "x", "keyValue", "key", "value", "a", "b", "request", "serializer_js_1", "exports", "serviceClient_js_1", "pipeline_js_1", "interfaces_js_1", "deserializationPolicy_js_1", "serializationPolicy_js_1", "authorizeRequestOnClaimChallenge_js_1", "authorizeRequestOnTenantChallenge_js_1", "logger_1", "exports", "exports", "logger_js_1", "constants_js_1", "deserializeState", "serializedState", "exports", "setStateError", "inputs", "state", "stateProxy", "isOperationError", "error", "appendReadableErrorMessage", "currentMessage", "innerMessage", "message", "simplifyError", "err", "code", "curErr", "processOperationStatus", "result", "status", "isDone", "processResult", "getError", "response", "setErrorAsResult", "postfix", "errStr", "buildResult", "initOperation", "init", "getOperationStatus", "withOperationLocation", "operationLocation", "resourceLocation", "metadata", "config", "pollOperationHelper", "poll", "getResourceLocation", "options", "pollOperation", "getOperationLocation", "getPollingInterval", "updateState", "setDelay", "intervalInMs", "location", "isUpdated", "operation_js_1", "logger_js_1", "getOperationLocationPollingUrl", "inputs", "azureAsyncOperation", "operationLocation", "getLocationHeader", "rawResponse", "getOperationLocationHeader", "getAzureAsyncOperationHeader", "findResourceLocation", "location", "requestMethod", "requestPath", "resourceLocationConfig", "_a", "getDefault", "inferLroMode", "pollingUrl", "normalizedRequestMethod", "exports", "transformStatus", "status", "statusCode", "toOperationStatus", "getStatus", "getProvisioningState", "properties", "provisioningState", "_b", "parseRetryAfter", "retryAfter", "retryAfterInSeconds", "calculatePollingIntervalFromDate", "getErrorFromResponse", "response", "error", "accessBodyProperty", "retryAfterDate", "timeNow", "retryAfterTime", "getStatusFromInitialResponse", "state", "helper", "getOperationStatus", "initHttpOperation", "stateProxy", "processResult", "lro", "setErrorAsResult", "config", "flatResponse", "getOperationLocation", "mode", "prop", "getResourceLocation", "res", "loc", "isOperationError", "e", "pollHttpOperation", "options", "updateState", "setDelay", "inputState", "inputOptions", "operation_js_1", "constants_js_1", "core_util_1", "createStateProxy", "config", "state", "error", "result", "buildCreatePoller", "inputs", "getOperationLocation", "getStatusFromInitialResponse", "getStatusFromPollResponse", "isOperationError", "getResourceLocation", "getPollingInterval", "getError", "resolveOnUnsuccessful", "init", "poll", "options", "processResult", "updateState", "withOperationLocationCallback", "intervalInMs", "restoreFrom", "stateProxy", "withOperationLocation", "called", "operationLocation", "isUpdated", "resultPromise", "abortController", "handlers", "handleProgressEvents", "h", "cancelErrMsg", "currentPollIntervalInMs", "poller", "callback", "s", "pollOptions", "inputAbortSignal", "abortListener", "abortSignal", "pollIntervalInMs", "exports", "operation_js_1", "poller_js_1", "createHttpPoller", "lro", "options", "resourceLocationConfig", "intervalInMs", "processResult", "restoreFrom", "updateState", "withOperationLocation", "resolveOnUnsuccessful", "response", "config", "flatResponse", "state", "exports", "operation_js_1", "logger_js_1", "createStateProxy", "config", "state", "error", "result", "GenericPollOperation", "lro", "setErrorAsResult", "lroResourceLocationConfig", "processResult", "updateState", "isDone", "pollerConfig", "options", "stateProxy", "rawResponse", "flatResponse", "intervalInMs", "_a", "exports", "PollerStoppedError", "_PollerStoppedError", "message", "exports", "PollerCancelledError", "_PollerCancelledError", "Poller", "operation", "resolve", "reject", "pollOptions", "options", "state", "callback", "clearPollOncePromise", "error", "c", "operation_js_1", "constants_js_1", "poller_js_1", "operation_js_2", "LroEngine", "lro", "options", "intervalInMs", "resumeFrom", "resolveOnUnsuccessful", "isDone", "lroResourceLocationConfig", "processResult", "updateState", "state", "operation", "resolve", "exports", "lroEngine_js_1", "exports", "poller_js_1", "exports", "tslib_1", "pageMap", "getContinuationToken", "page", "_a", "setContinuationToken", "continuationToken", "pageInfo", "KnownDeploymentStacksDeleteDetachEnum", "KnownDenySettingsMode", "KnownDeploymentStackProvisioningState", "KnownResourceStatusMode", "KnownDenyStatusMode", "KnownCreatedByType", "KnownUnmanageActionResourceMode", "KnownUnmanageActionResourceGroupMode", "KnownUnmanageActionManagementGroupMode", "DeploymentStackListResult", "DeploymentStacksTemplateLink", "DeploymentParameter", "KeyVaultParameterReference", "KeyVaultReference", "DeploymentStacksParametersLink", "ActionOnUnmanage", "DeploymentStacksDebugSetting", "DenySettings", "ResourceReference", "DeploymentStacksError", "ErrorDetail", "ErrorAdditionalInfo", "AzureResourceBase", "SystemData", "DeploymentStackTemplateDefinition", "DeploymentStackValidateProperties", "ResourceReferenceExtended", "ManagedResourceReference", "DeploymentStackProperties", "DeploymentStackValidateResult", "DeploymentStack", "DeploymentStacksDeleteAtResourceGroupHeaders", "DeploymentStacksDeleteAtSubscriptionHeaders", "DeploymentStacksDeleteAtManagementGroupHeaders", "DeploymentStacksValidateStackAtResourceGroupHeaders", "DeploymentStacksValidateStackAtSubscriptionHeaders", "DeploymentStacksValidateStackAtManagementGroupHeaders", "accept", "$host", "subscriptionId", "resourceGroupName", "apiVersion", "managementGroupId", "contentType", "deploymentStack", "DeploymentStackMapper", "deploymentStackName", "unmanageActionResources", "unmanageActionResourceGroups", "unmanageActionManagementGroups", "bypassStackOutOfSyncError", "nextLink", "createLroSpec", "inputs", "args", "spec", "sendOperationFn", "path", "options", "restSpec", "__rest", "DeploymentStacksImpl", "client", "iter", "settings", "result", "__await", "_d", "_e", "__asyncValues", "_f", "tslib", "_c", "__asyncDelegator", "listAtResourceGroupOperationSpec", "listAtSubscriptionOperationSpec", "listAtManagementGroupOperationSpec", "directSendOperation", "__awaiter", "lro", "currentRawResponse", "providedCallback", "callback", "rawResponse", "flatResponse", "updatedArgs", "createOrUpdateAtResourceGroupOperationSpec", "poller", "createHttpPoller", "getAtResourceGroupOperationSpec", "deleteAtResourceGroupOperationSpec", "createOrUpdateAtSubscriptionOperationSpec", "getAtSubscriptionOperationSpec", "deleteAtSubscriptionOperationSpec", "createOrUpdateAtManagementGroupOperationSpec", "getAtManagementGroupOperationSpec", "deleteAtManagementGroupOperationSpec", "exportTemplateAtResourceGroupOperationSpec", "exportTemplateAtSubscriptionOperationSpec", "exportTemplateAtManagementGroupOperationSpec", "validateStackAtResourceGroupOperationSpec", "validateStackAtSubscriptionOperationSpec", "validateStackAtManagementGroupOperationSpec", "listAtResourceGroupNextOperationSpec", "listAtSubscriptionNextOperationSpec", "listAtManagementGroupNextOperationSpec", "serializer", "coreClient", "Mappers", "Mappers.DeploymentStackListResult", "Mappers.DeploymentStacksError", "Parameters.apiVersion", "Parameters.$host", "Parameters.subscriptionId", "Parameters.resourceGroupName", "Parameters.accept", "Parameters.managementGroupId", "Mappers.DeploymentStack", "Parameters.deploymentStack", "Parameters.deploymentStackName", "Parameters.contentType", "Parameters.unmanageActionResources", "Parameters.unmanageActionResourceGroups", "Parameters.unmanageActionManagementGroups", "Parameters.bypassStackOutOfSyncError", "Mappers.DeploymentStackTemplateDefinition", "Mappers.DeploymentStackValidateResult", "Parameters.nextLink", "DeploymentStacksClient", "credentials", "subscriptionIdOrOptions", "defaults", "packageDetails", "userAgentPrefix", "optionsWithDefaults", "_b", "bearerTokenAuthenticationPolicyFound", "pipelinePolicy", "coreRestPipeline", "apiVersionPolicy", "request", "next", "param", "newParams", "item", "require_safe_buffer", "__commonJSMin", "exports", "module", "buffer", "Buffer", "copyProps", "src", "dst", "key", "SafeBuffer", "arg", "encodingOrOffset", "length", "size", "fill", "encoding", "buf", "require_data_stream", "__commonJSMin", "exports", "module", "Buffer", "Stream", "util", "DataStream", "data", "require_param_bytes_for_alg", "__commonJSMin", "exports", "module", "getParamSize", "keySize", "result", "paramBytesForAlg", "getParamBytesForAlg", "alg", "paramBytes", "require_ecdsa_sig_formatter", "__commonJSMin", "exports", "module", "Buffer", "getParamBytesForAlg", "MAX_OCTET", "CLASS_UNIVERSAL", "PRIMITIVE_BIT", "TAG_SEQ", "TAG_INT", "ENCODED_TAG_SEQ", "ENCODED_TAG_INT", "base64Url", "base64", "signatureAsBuffer", "signature", "derToJose", "alg", "paramBytes", "maxEncodedParamLength", "inputLength", "offset", "seqLength", "rLength", "rOffset", "sLength", "sOffset", "rPadding", "sPadding", "dst", "o", "countPadding", "buf", "start", "stop", "padding", "needsSign", "joseToDer", "signatureBytes", "rsBytes", "shortLength", "require_buffer_equal_constant_time", "__commonJSMin", "exports", "module", "Buffer", "SlowBuffer", "bufferEq", "a", "b", "c", "i", "that", "origBufEqual", "origSlowBufEqual", "require_jwa", "__commonJSMin", "exports", "module", "Buffer", "crypto", "formatEcdsa", "util", "MSG_INVALID_ALGORITHM", "MSG_INVALID_SECRET", "MSG_INVALID_VERIFIER_KEY", "MSG_INVALID_SIGNER_KEY", "supportsKeyObjects", "checkIsPublicKey", "key", "typeError", "checkIsPrivateKey", "checkIsSecretKey", "fromBase64", "base64", "toBase64", "base64url", "padding", "i", "template", "args", "errMsg", "bufferOrString", "obj", "normalizeInput", "thing", "createHmacSigner", "bits", "secret", "hmac", "sig", "bufferEqual", "timingSafeEqual", "a", "b", "createHmacVerifier", "signature", "computedSig", "createKeySigner", "privateKey", "signer", "createKeyVerifier", "publicKey", "verifier", "createPSSKeySigner", "createPSSKeyVerifier", "createECDSASigner", "inner", "createECDSAVerifer", "result", "createNoneSigner", "createNoneVerifier", "algorithm", "signerFactories", "verifierFactories", "match", "algo", "require_tostring", "__commonJSMin", "exports", "module", "Buffer", "obj", "require_sign_stream", "__commonJSMin", "exports", "module", "Buffer", "DataStream", "jwa", "Stream", "toString", "util", "base64url", "string", "encoding", "jwsSecuredInput", "header", "payload", "encodedHeader", "encodedPayload", "jwsSign", "opts", "secretOrKey", "algo", "securedInput", "signature", "SignStream", "secret", "secretStream", "e", "require_verify_stream", "__commonJSMin", "exports", "module", "Buffer", "DataStream", "jwa", "Stream", "toString", "util", "JWS_REGEX", "isObject", "thing", "safeJsonParse", "headerFromJWS", "jwsSig", "encodedHeader", "securedInputFromJWS", "signatureFromJWS", "payloadFromJWS", "encoding", "payload", "isValidJws", "string", "jwsVerify", "algorithm", "secretOrKey", "err", "signature", "securedInput", "algo", "jwsDecode", "opts", "header", "VerifyStream", "secretStream", "valid", "obj", "e", "require_jws", "__commonJSMin", "exports", "SignStream", "VerifyStream", "ALGORITHMS", "opts", "require_decode", "__commonJSMin", "exports", "module", "jws", "jwt", "options", "decoded", "payload", "obj", "require_JsonWebTokenError", "__commonJSMin", "exports", "module", "JsonWebTokenError", "message", "error", "require_NotBeforeError", "__commonJSMin", "exports", "module", "JsonWebTokenError", "NotBeforeError", "message", "date", "require_TokenExpiredError", "__commonJSMin", "exports", "module", "JsonWebTokenError", "TokenExpiredError", "message", "expiredAt", "require_timespan", "__commonJSMin", "exports", "module", "ms", "time", "iat", "timestamp", "milliseconds", "require_constants", "__commonJSMin", "exports", "module", "SEMVER_SPEC_VERSION", "MAX_SAFE_INTEGER", "MAX_SAFE_COMPONENT_LENGTH", "MAX_SAFE_BUILD_LENGTH", "RELEASE_TYPES", "require_debug", "__commonJSMin", "exports", "module", "debug", "args", "require_re", "__commonJSMin", "exports", "module", "MAX_SAFE_COMPONENT_LENGTH", "MAX_SAFE_BUILD_LENGTH", "MAX_LENGTH", "debug", "re", "safeRe", "src", "t", "R", "LETTERDASHNUMBER", "safeRegexReplacements", "makeSafeRegex", "value", "token", "max", "createToken", "name", "isGlobal", "safe", "index", "require_parse_options", "__commonJSMin", "exports", "module", "looseOption", "emptyOpts", "parseOptions", "options", "require_identifiers", "__commonJSMin", "exports", "module", "numeric", "compareIdentifiers", "a", "b", "anum", "bnum", "rcompareIdentifiers", "require_semver", "__commonJSMin", "exports", "module", "debug", "MAX_LENGTH", "MAX_SAFE_INTEGER", "re", "t", "parseOptions", "compareIdentifiers", "SemVer", "_SemVer", "version", "options", "m", "id", "num", "other", "i", "a", "b", "release", "identifier", "identifierBase", "base", "prerelease", "require_parse", "__commonJSMin", "exports", "module", "SemVer", "parse", "version", "options", "throwErrors", "er", "require_valid", "__commonJSMin", "exports", "module", "parse", "valid", "version", "options", "v", "require_clean", "__commonJSMin", "exports", "module", "parse", "clean", "version", "options", "s", "require_inc", "__commonJSMin", "exports", "module", "SemVer", "inc", "version", "release", "options", "identifier", "identifierBase", "require_diff", "__commonJSMin", "exports", "module", "parse", "diff", "version1", "version2", "v1", "v2", "comparison", "v1Higher", "highVersion", "lowVersion", "highHasPre", "prefix", "require_major", "__commonJSMin", "exports", "module", "SemVer", "major", "a", "loose", "require_minor", "__commonJSMin", "exports", "module", "SemVer", "minor", "a", "loose", "require_patch", "__commonJSMin", "exports", "module", "SemVer", "patch", "a", "loose", "require_prerelease", "__commonJSMin", "exports", "module", "parse", "prerelease", "version", "options", "parsed", "require_compare", "__commonJSMin", "exports", "module", "SemVer", "compare", "a", "b", "loose", "require_rcompare", "__commonJSMin", "exports", "module", "compare", "rcompare", "a", "b", "loose", "require_compare_loose", "__commonJSMin", "exports", "module", "compare", "compareLoose", "a", "b", "require_compare_build", "__commonJSMin", "exports", "module", "SemVer", "compareBuild", "a", "b", "loose", "versionA", "versionB", "require_sort", "__commonJSMin", "exports", "module", "compareBuild", "sort", "list", "loose", "a", "b", "require_rsort", "__commonJSMin", "exports", "module", "compareBuild", "rsort", "list", "loose", "a", "b", "require_gt", "__commonJSMin", "exports", "module", "compare", "gt", "a", "b", "loose", "require_lt", "__commonJSMin", "exports", "module", "compare", "lt", "a", "b", "loose", "require_eq", "__commonJSMin", "exports", "module", "compare", "eq", "a", "b", "loose", "require_neq", "__commonJSMin", "exports", "module", "compare", "neq", "a", "b", "loose", "require_gte", "__commonJSMin", "exports", "module", "compare", "gte", "a", "b", "loose", "require_lte", "__commonJSMin", "exports", "module", "compare", "lte", "a", "b", "loose", "require_cmp", "__commonJSMin", "exports", "module", "eq", "neq", "gt", "gte", "lt", "lte", "cmp", "a", "op", "b", "loose", "require_coerce", "__commonJSMin", "exports", "module", "SemVer", "parse", "re", "t", "coerce", "version", "options", "match", "coerceRtlRegex", "next", "major", "minor", "patch", "prerelease", "build", "require_lrucache", "__commonJSMin", "exports", "module", "LRUCache", "key", "value", "firstKey", "require_range", "__commonJSMin", "exports", "module", "SPACE_CHARACTERS", "Range", "_Range", "range", "options", "parseOptions", "Comparator", "r", "c", "first", "isNullSet", "isAny", "i", "comps", "k", "memoKey", "FLAG_INCLUDE_PRERELEASE", "FLAG_LOOSE", "cached", "cache", "loose", "hr", "re", "t", "hyphenReplace", "debug", "comparatorTrimReplace", "tildeTrimReplace", "caretTrimReplace", "rangeList", "comp", "parseComparator", "replaceGTE0", "rangeMap", "comparators", "result", "thisComparators", "isSatisfiable", "rangeComparators", "thisComparator", "rangeComparator", "version", "SemVer", "testSet", "LRU", "remainingComparators", "testComparator", "otherComparator", "replaceCarets", "replaceTildes", "replaceXRanges", "replaceStars", "isX", "id", "replaceTilde", "_", "M", "m", "p", "pr", "ret", "replaceCaret", "z", "replaceXRange", "gtlt", "xM", "xm", "xp", "anyX", "incPr", "$0", "from", "fM", "fm", "fp", "fpr", "fb", "to", "tM", "tm", "tp", "tpr", "set", "allowed", "require_comparator", "__commonJSMin", "exports", "module", "ANY", "Comparator", "_Comparator", "comp", "options", "parseOptions", "debug", "re", "t", "m", "SemVer", "version", "cmp", "Range", "require_satisfies", "__commonJSMin", "exports", "module", "Range", "satisfies", "version", "range", "options", "require_to_comparators", "__commonJSMin", "exports", "module", "Range", "toComparators", "range", "options", "comp", "c", "require_max_satisfying", "__commonJSMin", "exports", "module", "SemVer", "Range", "maxSatisfying", "versions", "range", "options", "max", "maxSV", "rangeObj", "v", "require_min_satisfying", "__commonJSMin", "exports", "module", "SemVer", "Range", "minSatisfying", "versions", "range", "options", "min", "minSV", "rangeObj", "v", "require_min_version", "__commonJSMin", "exports", "module", "SemVer", "Range", "gt", "minVersion", "range", "loose", "minver", "i", "comparators", "setMin", "comparator", "compver", "require_valid", "__commonJSMin", "exports", "module", "Range", "validRange", "range", "options", "require_outside", "__commonJSMin", "exports", "module", "SemVer", "Comparator", "ANY", "Range", "satisfies", "gt", "lt", "lte", "gte", "outside", "version", "range", "hilo", "options", "gtfn", "ltefn", "ltfn", "comp", "ecomp", "i", "comparators", "high", "low", "comparator", "require_gtr", "__commonJSMin", "exports", "module", "outside", "gtr", "version", "range", "options", "require_ltr", "__commonJSMin", "exports", "module", "outside", "ltr", "version", "range", "options", "require_intersects", "__commonJSMin", "exports", "module", "Range", "intersects", "r1", "r2", "options", "require_simplify", "__commonJSMin", "exports", "module", "satisfies", "compare", "versions", "range", "options", "set", "first", "prev", "v", "a", "b", "version", "ranges", "min", "max", "simplified", "original", "require_subset", "__commonJSMin", "exports", "module", "Range", "Comparator", "ANY", "satisfies", "compare", "subset", "sub", "dom", "options", "sawNonNull", "OUTER", "simpleSub", "simpleDom", "isSub", "simpleSubset", "minimumVersionWithPreRelease", "minimumVersion", "eqSet", "gt", "lt", "c", "higherGT", "lowerLT", "gtltComp", "eq", "higher", "lower", "hasDomLT", "hasDomGT", "needDomLTPre", "needDomGTPre", "a", "b", "comp", "require_semver", "__commonJSMin", "exports", "module", "internalRe", "constants", "SemVer", "identifiers", "parse", "valid", "clean", "inc", "diff", "major", "minor", "patch", "prerelease", "compare", "rcompare", "compareLoose", "compareBuild", "sort", "rsort", "gt", "lt", "eq", "neq", "gte", "lte", "cmp", "coerce", "Comparator", "Range", "satisfies", "toComparators", "maxSatisfying", "minSatisfying", "minVersion", "validRange", "outside", "gtr", "ltr", "intersects", "simplifyRange", "subset", "require_asymmetricKeyDetailsSupported", "__commonJSMin", "exports", "module", "semver", "require_rsaPssKeyDetailsSupported", "__commonJSMin", "exports", "module", "semver", "require_validateAsymmetricKey", "__commonJSMin", "exports", "module", "ASYMMETRIC_KEY_DETAILS_SUPPORTED", "RSA_PSS_KEY_DETAILS_SUPPORTED", "allowedAlgorithmsForKeys", "allowedCurves", "algorithm", "key", "keyType", "allowedAlgorithms", "keyCurve", "allowedCurve", "length", "hashAlgorithm", "mgf1HashAlgorithm", "saltLength", "require_psSupported", "__commonJSMin", "exports", "module", "semver", "require_verify", "__commonJSMin", "exports", "module", "JsonWebTokenError", "NotBeforeError", "TokenExpiredError", "decode", "timespan", "validateAsymmetricKey", "PS_SUPPORTED", "jws", "KeyObject", "createSecretKey", "createPublicKey", "PUB_KEY_ALGS", "EC_KEY_ALGS", "RSA_KEY_ALGS", "HS_ALGS", "jwtString", "secretOrPublicKey", "options", "callback", "done", "err", "data", "clockTimestamp", "parts", "decodedToken", "header", "getSecret", "secretCallback", "hasSignature", "e", "valid", "payload", "audiences", "targetAudience", "audience", "maxAgeTimestamp", "signature", "require_lodash", "__commonJSMin", "exports", "module", "INFINITY", "MAX_SAFE_INTEGER", "MAX_INTEGER", "NAN", "argsTag", "funcTag", "genTag", "stringTag", "symbolTag", "reTrim", "reIsBadHex", "reIsBinary", "reIsOctal", "reIsUint", "freeParseInt", "arrayMap", "array", "iteratee", "index", "length", "result", "baseFindIndex", "predicate", "fromIndex", "fromRight", "baseIndexOf", "value", "baseIsNaN", "baseTimes", "n", "baseValues", "object", "props", "key", "overArg", "func", "transform", "arg", "objectProto", "hasOwnProperty", "objectToString", "propertyIsEnumerable", "nativeKeys", "nativeMax", "arrayLikeKeys", "inherited", "isArray", "isArguments", "skipIndexes", "isIndex", "baseKeys", "isPrototype", "Ctor", "proto", "includes", "collection", "guard", "isArrayLike", "values", "toInteger", "isString", "isArrayLikeObject", "isLength", "isFunction", "isObjectLike", "tag", "isObject", "type", "isSymbol", "toFinite", "toNumber", "sign", "remainder", "other", "isBinary", "keys", "require_lodash", "__commonJSMin", "exports", "module", "boolTag", "objectProto", "objectToString", "isBoolean", "value", "isObjectLike", "require_lodash", "__commonJSMin", "exports", "module", "INFINITY", "MAX_INTEGER", "NAN", "symbolTag", "reTrim", "reIsBadHex", "reIsBinary", "reIsOctal", "freeParseInt", "objectProto", "objectToString", "isInteger", "value", "toInteger", "isObject", "type", "isObjectLike", "isSymbol", "toFinite", "toNumber", "sign", "result", "remainder", "other", "isBinary", "require_lodash", "__commonJSMin", "exports", "module", "numberTag", "objectProto", "objectToString", "isObjectLike", "value", "isNumber", "require_lodash", "__commonJSMin", "exports", "module", "objectTag", "isHostObject", "value", "result", "overArg", "func", "transform", "arg", "funcProto", "objectProto", "funcToString", "hasOwnProperty", "objectCtorString", "objectToString", "getPrototype", "isObjectLike", "isPlainObject", "proto", "Ctor", "require_lodash", "__commonJSMin", "exports", "module", "stringTag", "objectProto", "objectToString", "isArray", "isObjectLike", "value", "isString", "require_lodash", "__commonJSMin", "exports", "module", "FUNC_ERROR_TEXT", "INFINITY", "MAX_INTEGER", "NAN", "symbolTag", "reTrim", "reIsBadHex", "reIsBinary", "reIsOctal", "freeParseInt", "objectProto", "objectToString", "before", "n", "func", "result", "toInteger", "once", "isObject", "value", "type", "isObjectLike", "isSymbol", "toFinite", "toNumber", "sign", "remainder", "other", "isBinary", "require_sign", "__commonJSMin", "exports", "module", "timespan", "PS_SUPPORTED", "validateAsymmetricKey", "jws", "includes", "isBoolean", "isInteger", "isNumber", "isPlainObject", "isString", "once", "KeyObject", "createSecretKey", "createPrivateKey", "SUPPORTED_ALGS", "sign_options_schema", "value", "registered_claims_schema", "validate", "schema", "allowUnknown", "object", "parameterName", "key", "validator", "validateOptions", "options", "validatePayload", "payload", "options_to_payload", "options_for_objects", "secretOrPrivateKey", "callback", "isObjectPayload", "header", "failure", "err", "error", "invalid_options", "opt", "timestamp", "claim", "encoding", "signature", "require_jsonwebtoken", "__commonJSMin", "exports", "module", "hasDockerEnv", "fs", "hasDockerCGroup", "isDocker", "isDockerCached", "import_node_fs", "init_is_docker", "__esmMin", "isInsideContainer", "cachedResult", "hasContainerEnv", "isDocker", "import_node_fs", "init_is_inside_container", "__esmMin", "init_is_docker", "fs", "import_node_process", "import_node_os", "import_node_fs", "isWsl", "is_wsl_default", "init_is_wsl", "__esmMin", "init_is_inside_container", "process", "os", "isInsideContainer", "fs", "defineLazyProperty", "object", "propertyName", "valueGetter", "define", "value", "result", "init_define_lazy_prop", "__esmMin", "defaultBrowserId", "process", "stdout", "execFileAsync", "import_node_util", "import_node_process", "import_node_child_process", "init_default_browser_id", "__esmMin", "runAppleScript", "script", "humanReadableOutput", "process", "outputArguments", "stdout", "execFileAsync", "import_node_process", "import_node_util", "import_node_child_process", "init_run_applescript", "__esmMin", "bundleName", "bundleId", "runAppleScript", "init_bundle_name", "__esmMin", "init_run_applescript", "defaultBrowser", "_execFileAsync", "execFileAsync", "stdout", "match", "UnknownBrowserError", "id", "browser", "windowsBrowserProgIds", "import_node_util", "import_node_child_process", "init_windows", "__esmMin", "defaultBrowser", "process", "id", "defaultBrowserId", "bundleName", "stdout", "execFileAsync", "titleize", "import_node_util", "import_node_process", "import_node_child_process", "init_default_browser", "__esmMin", "init_default_browser_id", "init_bundle_name", "init_windows", "string", "x", "open_exports", "__export", "apps", "open_default", "openApp", "detectArchBinary", "binary", "arch", "archBinary", "detectPlatformBinary", "platform", "platformBinary", "wsl", "is_wsl_default", "import_node_process", "import_node_buffer", "import_node_path", "import_node_url", "import_node_child_process", "import_promises", "import_meta", "__dirname", "localXdgOpenPath", "getWslDrivesMountPoint", "pTryEach", "baseOpen", "open", "init_open", "__esmMin", "init_is_wsl", "init_define_lazy_prop", "init_default_browser", "init_is_inside_container", "path", "process", "defaultMountPoint", "mountPoint", "configFilePath", "isConfigFileExists", "fs", "fsConstants", "configContent", "configMountPoint", "array", "mapper", "latestError", "item", "error", "options", "singleApp", "app", "appArguments", "appName", "ids", "flags", "browser", "defaultBrowser", "browserName", "command", "cliArguments", "childProcessOptions", "isInsideContainer", "encodedArguments", "argument", "isBundled", "exeLocalXdgOpen", "subprocess", "childProcess", "resolve", "reject", "exitCode", "target", "name", "defineLazyProperty", "core", "core", "yaml", "fs", "path", "os", "import_bicep_node", "core", "colorToName", "colorize", "message", "color", "line", "logInfoRaw", "message", "logInfo", "colorize", "logWarningRaw", "logWarning", "logErrorRaw", "logError", "getColorString", "colorMode", "color", "colorToName", "ColorStringBuilder", "value", "action", "prevColor", "installBicep", "bicepVersion", "bicepTmpDir", "compileBicepParams", "paramFilePath", "parameters", "bicepPath", "result", "withBicep", "bicep", "logDiagnostics", "compileBicep", "templateFilePath", "getJsonParameters", "config", "parametersFile", "contents", "key", "value", "getTemplateAndParameters", "templateFile", "parse", "template", "input", "templateSpecId", "parametersContents", "templateContents", "action", "version", "logInfo", "resolvePath", "fileName", "diagnostics", "diag", "message", "logError", "logWarning", "getRequiredStringInput", "inputName", "getInput", "getOptionalStringInput", "getRequiredEnumInput", "allowedValues", "getOptionalEnumInput", "getOptionalFilePath", "input", "resolvePath", "getOptionalBooleanInput", "getOptionalStringArrayInput", "inputString", "parseCommaSeparated", "getOptionalEnumArrayInput", "values", "allowedValuesString", "value", "getOptionalDictionaryInput", "tryParseJson", "tryParseYaml", "getOptionalStringDictionaryInput", "key", "throwOnMissing", "inputValue", "val", "parseConfig", "type", "getRequiredEnumInput", "name", "getOptionalStringInput", "location", "templateFile", "getOptionalFilePath", "parametersFile", "parameters", "getOptionalDictionaryInput", "bicepVersion", "description", "tags", "getOptionalStringDictionaryInput", "maskedOutputs", "getOptionalStringArrayInput", "environment", "getOptionalEnumInput", "parseDeploymentScope", "getOptionalEnumArrayInput", "parseDeploymentStackScope", "getOptionalBooleanInput", "tenantId", "managementGroup", "getRequiredStringInput", "subscriptionId", "resourceGroup", "import_core", "ValidPhaseNames", "HttpPipeline", "_HttpPipeline", "policies", "_a", "policy", "options", "removedPolicies", "policyDescriptor", "httpClient", "request", "next", "req", "result", "policyMap", "createPhase", "name", "serializePhase", "noPhase", "deserializePhase", "retryPhase", "signPhase", "orderedPhases", "getPhase", "phase", "descriptor", "policyName", "node", "afterPolicyName", "afterNode", "beforePolicyName", "beforeNode", "walkPhase", "dependant", "walkPhases", "iteration", "initialResultLength", "createEmptyPipeline", "import_node_os", "import_node_util", "process", "log", "message", "args", "util", "debugEnvVariable", "enabledString", "enabledNamespaces", "skippedNamespaces", "debuggers", "enable", "debugObj", "namespace", "createDebugger", "enabled", "disable", "log", "namespaces", "wildcard", "namespaceList", "ns", "instance", "skipped", "enabledNamespace", "result", "newDebugger", "debug", "destroy", "extend", "args", "index", "debug_default", "registeredLoggers", "logLevelFromEnv", "azureLogLevel", "AzureLogger", "debug_default", "args", "AZURE_LOG_LEVELS", "isAzureLogLevel", "setLogLevel", "level", "enabledNamespaces", "logger", "shouldEnable", "getLogLevel", "levelMap", "createClientLogger", "namespace", "clientRootLogger", "patchLogMethod", "createLogger", "parent", "child", "logLevel", "logger", "createClientLogger", "AbortError", "message", "createAbortablePromise", "buildPromise", "options", "cleanupBeforeAbort", "abortSignal", "abortErrorMsg", "resolve", "reject", "rejectOnAbort", "AbortError", "removeListeners", "onAbort", "x", "err", "getRandomIntegerInclusive", "min", "max", "StandardAbortMessage", "delay", "timeInMs", "options", "token", "abortSignal", "abortErrorMsg", "createAbortablePromise", "resolve", "calculateRetryDelay", "retryAttempt", "config", "exponentialDelay", "clampedDelay", "getRandomIntegerInclusive", "isObject", "input", "isError", "e", "isObject", "hasName", "hasMessage", "getErrorMessage", "stringified", "import_crypto", "uuidFunction", "_a", "v4RandomUUID", "randomUUID", "isBrowser", "isWebWorker", "_a", "_b", "_c", "isDeno", "isBun", "isNodeLike", "_d", "isNode", "isReactNative", "stringToUint8Array", "value", "format", "RedactedString", "defaultAllowedHeaderNames", "defaultAllowedQueryParameters", "Sanitizer", "allowedHeaderNames", "allowedQueryParameters", "p", "obj", "seen", "key", "value", "isObject", "url", "sanitized", "k", "logPolicyName", "logPolicy", "options", "logger", "_a", "sanitizer", "Sanitizer", "request", "next", "response", "redirectPolicyName", "allowedRedirect", "redirectPolicy", "options", "maxRetries", "request", "next", "response", "handleRedirect", "currentRetries", "status", "headers", "locationHeader", "url", "res", "os", "process", "getHeaderName", "setPlatformSpecificData", "map", "versions", "SDK_VERSION", "getUserAgentString", "telemetryInfo", "parts", "key", "value", "token", "getUserAgentHeaderName", "getHeaderName", "getUserAgentValue", "prefix", "runtimeInfo", "SDK_VERSION", "setPlatformSpecificData", "defaultAgent", "UserAgentHeaderName", "getUserAgentHeaderName", "userAgentPolicyName", "userAgentPolicy", "options", "userAgentValue", "getUserAgentValue", "request", "next", "import_node_stream", "isBlob", "x", "rawContent", "hasRawContent", "x", "getRawContent", "blob", "streamAsyncIterator", "reader", "done", "value", "__await", "makeAsyncIterable", "webStream", "ensureNodeStream", "stream", "toStream", "source", "isBlob", "getRawContent", "concat", "sources", "streams", "x", "_d", "stream_1", "e_1", "__asyncValues", "stream_1_1", "_a", "_c", "generateBoundary", "randomUUID", "encodeHeaders", "headers", "result", "key", "value", "getLength", "source", "isBlob", "getTotalLength", "sources", "total", "partLength", "buildRequestBody", "request", "parts", "boundary", "stringToUint8Array", "part", "contentLength", "concat", "multipartPolicyName", "maxBoundaryLength", "validBoundaryCharacters", "assertValidBoundary", "x", "multipartPolicy", "next", "contentTypeHeader", "_a", "parsedHeader", "contentType", "parsedBoundary", "decompressResponsePolicyName", "decompressResponsePolicy", "request", "next", "AbortError", "message", "StandardAbortMessage", "delay", "delayInMs", "value", "options", "resolve", "reject", "timer", "onAborted", "rejectOnAbort", "AbortError", "removeListeners", "parseHeaderValueAsNumber", "response", "headerName", "valueAsNum", "RetryAfterHeader", "AllRetryAfterHeaders", "getRetryAfterInMs", "response", "header", "retryAfterValue", "parseHeaderValueAsNumber", "retryAfterHeader", "diff", "isThrottlingRetryResponse", "throttlingRetryStrategy", "retryAfterInMs", "DEFAULT_CLIENT_RETRY_INTERVAL", "DEFAULT_CLIENT_MAX_RETRY_INTERVAL", "exponentialRetryStrategy", "options", "retryInterval", "_a", "maxRetryInterval", "_b", "retryCount", "response", "responseError", "matchedSystemError", "isSystemError", "ignoreSystemErrors", "isExponential", "isExponentialRetryResponse", "ignoreExponentialResponse", "isThrottlingRetryResponse", "calculateRetryDelay", "err", "retryPolicyLogger", "createClientLogger", "retryPolicyName", "retryPolicy", "strategies", "options", "logger", "request", "next", "response", "responseError", "retryCount", "retryRequest", "e", "_a", "AbortError", "_b", "strategiesLoop", "strategy", "strategyLogger", "modifiers", "errorToThrow", "retryAfterInMs", "redirectTo", "delay", "defaultRetryPolicyName", "defaultRetryPolicy", "options", "retryPolicy", "throttlingRetryStrategy", "exponentialRetryStrategy", "_a", "normalizeName", "name", "headerIterator", "map", "entry", "HttpHeadersImpl", "rawHeaders", "headerName", "value", "_a", "options", "result", "normalizedName", "createHttpHeaders", "formDataPolicyName", "formDataToFormDataMap", "formData", "formDataMap", "key", "value", "_a", "formDataPolicy", "request", "next", "isNodeLike", "contentType", "wwwFormUrlEncode", "prepareFormData", "urlSearchParams", "subValue", "parts", "fieldName", "values", "createHttpHeaders", "stringToUint8Array", "fileName", "headers", "import_https_proxy_agent", "import_http_proxy_agent", "HTTPS_PROXY", "HTTP_PROXY", "ALL_PROXY", "NO_PROXY", "proxyPolicyName", "globalNoProxyList", "noProxyListLoaded", "globalBypassedMap", "getEnvironmentValue", "name", "loadEnvironmentProxyValue", "httpsProxy", "allProxy", "httpProxy", "isBypassed", "uri", "noProxyList", "bypassedMap", "host", "isBypassedFlag", "pattern", "loadNoProxy", "noProxy", "item", "getDefaultProxySettingsInternal", "envProxy", "loadEnvironmentProxyValue", "getUrlFromProxySettings", "settings", "parsedProxyUrl", "setProxyAgentOnRequest", "request", "cachedAgents", "proxyUrl", "isInsecure", "logger", "headers", "proxyPolicy", "proxySettings", "options", "noProxyListLoaded", "globalNoProxyList", "loadNoProxy", "defaultProxy", "proxyPolicyName", "next", "isBypassed", "_a", "globalBypassedMap", "setClientRequestIdPolicyName", "setClientRequestIdPolicy", "requestIdHeaderName", "request", "next", "agentPolicyName", "agentPolicy", "agent", "req", "next", "tlsPolicyName", "tlsPolicy", "tlsSettings", "req", "next", "knownContextKeys", "createTracingContext", "options", "context", "TracingContextImpl", "_TracingContextImpl", "initialContext", "key", "value", "newContext", "import_state", "state", "cjsState", "createDefaultTracingSpan", "createDefaultInstrumenter", "_name", "spanOptions", "createTracingContext", "_context", "callback", "callbackArgs", "getInstrumenter", "state", "createDefaultInstrumenter", "createTracingClient", "options", "namespace", "packageName", "packageVersion", "startSpan", "name", "operationOptions", "spanOptions", "startSpanResult", "getInstrumenter", "_a", "tracingContext", "span", "knownContextKeys", "updatedOptions", "withSpan", "callback", "result", "withContext", "err", "context", "callbackArgs", "parseTraceparentHeader", "traceparentHeader", "createRequestHeaders", "import_node_util", "custom", "errorSanitizer", "Sanitizer", "RestError", "_RestError", "message", "options", "custom", "isRestError", "e", "isError", "tracingPolicyName", "tracingPolicy", "options", "userAgentPromise", "getUserAgentValue", "sanitizer", "Sanitizer", "tracingClient", "tryCreateTracingClient", "request", "next", "userAgent", "spanAttributes", "span", "tracingContext", "_a", "tryCreateSpan", "response", "tryProcessResponse", "err", "tryProcessError", "createTracingClient", "SDK_VERSION", "e", "logger", "getErrorMessage", "updatedOptions", "headers", "key", "value", "error", "isError", "isRestError", "serviceRequestId", "createPipelineFromOptions", "options", "pipeline", "createEmptyPipeline", "isNodeLike", "agentPolicy", "tlsPolicy", "proxyPolicy", "decompressResponsePolicy", "formDataPolicy", "multipartPolicyName", "userAgentPolicy", "setClientRequestIdPolicy", "_a", "multipartPolicy", "defaultRetryPolicy", "tracingPolicy", "redirectPolicy", "logPolicy", "http", "https", "zlib", "import_node_stream", "DEFAULT_TLS_SETTINGS", "isReadableStream", "body", "isStreamComplete", "stream", "resolve", "handler", "isArrayBuffer", "ReportTransform", "chunk", "_encoding", "callback", "e", "progressCallback", "NodeHttpClient", "request", "abortController", "abortListener", "AbortError", "event", "acceptEncoding", "shouldDecompress", "bodyLength", "getBodyLength", "responseStream", "onUploadProgress", "uploadReportStream", "logger", "res", "headers", "getResponseHeaders", "response", "_a", "getDecodedResponseStream", "onDownloadProgress", "downloadReportStream", "_b", "_c", "streamToText", "uploadStreamDone", "downloadStreamDone", "url", "isInsecure", "options", "reject", "req", "err", "RestError", "abortError", "disableKeepAlive", "tlsSettings", "agent", "createHttpHeaders", "header", "value", "contentEncoding", "unzip", "inflate", "buffer", "createNodeHttpClient", "createDefaultHttpClient", "createNodeHttpClient", "PipelineRequestImpl", "options", "_a", "createHttpHeaders", "_b", "_c", "_d", "_e", "randomUUID", "_f", "_g", "createPipelineRequest", "DEFAULT_CYCLER_OPTIONS", "beginRefresh", "getAccessToken", "retryIntervalInMs", "refreshTimeout", "tryGetAccessToken", "finalToken", "token", "delay", "createTokenCycler", "credential", "tokenCyclerOptions", "refreshWorker", "tenantId", "options", "cycler", "_a", "refresh", "scopes", "getTokenOptions", "_token", "reason", "tokenOptions", "hasClaimChallenge", "tenantIdChanged", "bearerTokenAuthenticationPolicyName", "trySendRequest", "request", "next", "e", "isRestError", "defaultAuthorizeRequest", "options", "scopes", "getAccessToken", "getTokenOptions", "accessToken", "isChallengeResponse", "response", "authorizeRequestOnCaeChallenge", "onChallengeOptions", "caeClaims", "_a", "bearerTokenAuthenticationPolicy", "credential", "challengeCallbacks", "logger", "callbacks", "_b", "_c", "createTokenCycler", "error", "shouldSendRequest", "claims", "getCaeChallengeClaims", "parsedClaim", "parseChallenges", "challenges", "challengeRegex", "paramRegex", "parsedChallenges", "match", "scheme", "paramsString", "params", "paramMatch", "x", "pageMap", "setContinuationToken", "page", "continuationToken", "pageInfo", "_a", "pageMap", "KnownExpressionEvaluationOptionsScopeType", "KnownValidationLevel", "KnownProvisioningState", "KnownAliasPathTokenType", "KnownAliasPathAttributes", "KnownProviderAuthorizationConsentState", "KnownLevel", "KnownExtendedLocationType", "KnownExportTemplateOutputFormat", "KnownTagsPatchOperation", "encodeByteArray", "value", "decodeString", "decodeStringToString", "isPrimitiveBody", "value", "mapperTypeName", "validateISODuration", "isDuration", "validUuidRegex", "isValidUuid", "uuid", "handleNullableResponseAndWrappableBody", "responseObject", "combinedHeadersAndBody", "flattenResponse", "fullResponse", "responseSpec", "parsedHeaders", "bodyMapper", "isNullable", "expectedBodyTypeName", "modelProperties", "isPageableResponse", "k", "arrayResponse", "_a", "key", "_b", "SerializerImpl", "modelMappers", "isXML", "mapper", "value", "objectName", "failValidation", "constraintName", "constraintValue", "ExclusiveMaximum", "ExclusiveMinimum", "InclusiveMaximum", "InclusiveMinimum", "MaxItems", "MaxLength", "MinItems", "MinLength", "MultipleOf", "Pattern", "UniqueItems", "pattern", "item", "i", "ar", "object", "options", "updatedOptions", "_a", "_b", "_c", "payload", "mapperType", "required", "nullable", "serializeBasicTypes", "serializeEnumType", "serializeDateTypes", "serializeByteArrayType", "serializeBase64UrlType", "serializeSequenceType", "serializeDictionaryType", "serializeCompositeType", "responseBody", "_d", "deserializeCompositeType", "xmlCharKey", "unixTimeToDate", "decodeString", "base64UrlToByteArray", "deserializeSequenceType", "deserializeDictionaryType", "createSerializer", "trimEnd", "str", "ch", "len", "bufferToBase64Url", "buffer", "encodeByteArray", "splitSerializeName", "prop", "classes", "partialclass", "subwords", "dateToUnixTime", "d", "n", "typeName", "isValidUuid", "objectType", "allowedValues", "isDuration", "serializer", "isXml", "elementType", "tempArray", "serializedValue", "xmlnsKey", "valueType", "tempDictionary", "key", "getXmlObjectValue", "result", "resolveAdditionalProperties", "additionalProperties", "modelMapper", "resolveReferencedMapper", "className", "resolveModelProperties", "modelProps", "getPolymorphicDiscriminatorRecursively", "getPolymorphicMapper", "propertyMapper", "propName", "parentObject", "paths", "pathName", "childObject", "propertyObjectName", "toSerialize", "polymorphicDiscriminator", "additionalPropertiesMapper", "propNames", "clientPropName", "pn", "xmlNamespace", "isSpecialXmlProperty", "propertyName", "instance", "handledPropertyNames", "serializedName", "xmlName", "xmlElementName", "headerCollectionPrefix", "dictionary", "headerKey", "wrapped", "elementList", "property", "propertyInstance", "res", "steps", "arrayInstance", "k", "v", "isAdditionalProperty", "responsePropName", "element", "getIndexDiscriminator", "discriminators", "discriminatorValue", "typeNamesToCheck", "currentName", "indexDiscriminator", "name", "polymorphicPropertyName", "discriminatorName", "polymorphicMapper", "getPolymorphicDiscriminatorSafely", "MapperTypeNames", "import_state", "state", "cjsState", "getOperationArgumentValueFromParameter", "operationArguments", "parameter", "fallbackObject", "parameterPath", "parameterMapper", "value", "propertySearchResult", "getPropertyFromParameterPath", "useDefaultValue", "propertyName", "propertyMapper", "propertyPath", "propertyValue", "parent", "result", "i", "parameterPathPart", "originalRequestSymbol", "hasOriginalRequest", "request", "getOperationRequestInfo", "info", "state", "defaultJsonContentTypes", "defaultXmlContentTypes", "deserializationPolicyName", "deserializationPolicy", "options", "jsonContentTypes", "_b", "_a", "xmlContentTypes", "_d", "_c", "parseXML", "serializerOptions", "updatedOptions", "_e", "_f", "_g", "request", "next", "response", "deserializeResponseBody", "getOperationResponseMap", "parsedResponse", "result", "operationInfo", "getOperationRequestInfo", "operationSpec", "shouldDeserializeResponse", "shouldDeserialize", "parse", "responseSpec", "error", "shouldReturnResponse", "handleErrorResponse", "valueToDeserialize", "MapperTypeNames", "deserializeError", "RestError", "isOperationSpecEmpty", "expectedStatusCodes", "isSuccessByStatus", "errorResponseSpec", "initialErrorMessage", "defaultBodyMapper", "defaultHeadersMapper", "parsedBody", "deserializedError", "elementName", "internalError", "defaultError", "operationResponse", "opts", "text", "contentType", "contentComponents", "component", "body", "err", "msg", "errCode", "getStreamingResponseStatusCodes", "operationSpec", "result", "statusCode", "operationResponse", "MapperTypeNames", "getPathStringFromParameter", "parameter", "parameterPath", "mapper", "serializationPolicyName", "serializationPolicy", "options", "stringifyXML", "request", "next", "operationInfo", "getOperationRequestInfo", "operationSpec", "operationArguments", "serializeHeaders", "serializeRequestBody", "headerParameter", "headerValue", "getOperationArgumentValueFromParameter", "getPathStringFromParameter", "headerCollectionPrefix", "key", "customHeaders", "_b", "_a", "customHeaderName", "serializerOptions", "updatedOptions", "_c", "_d", "xmlCharKey", "bodyMapper", "required", "serializedName", "xmlName", "xmlElementName", "xmlNamespace", "xmlNamespacePrefix", "nullable", "typeName", "requestBodyParameterPathString", "isStream", "MapperTypeNames", "xmlnsKey", "value", "getXmlValueWithNamespace", "prepareXMLRootList", "_e", "error", "formDataParameter", "formDataParameterValue", "formDataParameterPropertyName", "serializedValue", "result", "obj", "elementName", "xmlNamespaceKey", "createClientPipeline", "options", "pipeline", "createPipelineFromOptions", "bearerTokenAuthenticationPolicy", "serializationPolicy", "deserializationPolicy", "cachedHttpClient", "getCachedDefaultHttpClient", "createDefaultHttpClient", "CollectionFormatToDelimiterMap", "getRequestUrl", "baseUri", "operationSpec", "operationArguments", "fallbackObject", "urlReplacements", "calculateUrlReplacements", "isAbsolutePath", "requestUrl", "replaceAll", "path", "isAbsoluteUrl", "appendPath", "queryParams", "sequenceParams", "calculateQueryParameters", "appendQueryParams", "input", "replacements", "result", "searchValue", "replaceValue", "_a", "urlParameter", "urlParameterValue", "getOperationArgumentValueFromParameter", "parameterPathString", "getPathStringFromParameter", "url", "pathToAppend", "parsedUrl", "newPath", "searchStart", "search", "queryParameter", "queryParameterValue", "delimiter", "item", "simpleParseQueryParams", "queryString", "pairs", "pair", "name", "value", "existingValue", "noOverwrite", "combinedParams", "valueSet", "searchPieces", "subValue", "logger", "createClientLogger", "ServiceClient", "options", "_a", "logger", "getCachedDefaultHttpClient", "createDefaultPipeline", "_b", "policy", "position", "afterPhase", "request", "operationArguments", "operationSpec", "endpoint", "url", "getRequestUrl", "createPipelineRequest", "operationInfo", "getOperationRequestInfo", "contentType", "requestOptions", "getStreamingResponseStatusCodes", "rawResponse", "flatResponse", "flattenResponse", "error", "credentialScopes", "getCredentialScopes", "credentialOptions", "createClientPipeline", "parseCAEChallenge", "challenges", "x", "challenge", "keyValue", "key", "value", "a", "b", "authorizeRequestOnClaimChallenge", "onChallengeOptions", "scopes", "response", "logger", "parsedChallenge", "accessToken", "decodeStringToString", "mappers_exports", "__export", "Alias", "AliasPath", "AliasPathMetadata", "AliasPattern", "ApiProfile", "BasicDependency", "CloudError", "DebugSetting", "Dependency", "Deployment", "DeploymentDiagnosticsDefinition", "DeploymentExportResult", "DeploymentExtended", "DeploymentExtendedFilter", "DeploymentListResult", "DeploymentOperation", "DeploymentOperationProperties", "DeploymentOperationsListResult", "DeploymentParameter", "DeploymentProperties", "DeploymentPropertiesExtended", "DeploymentValidateResult", "DeploymentWhatIf", "DeploymentWhatIfProperties", "DeploymentWhatIfSettings", "DeploymentsWhatIfAtManagementGroupScopeHeaders", "DeploymentsWhatIfAtSubscriptionScopeHeaders", "DeploymentsWhatIfAtTenantScopeHeaders", "DeploymentsWhatIfHeaders", "ErrorAdditionalInfo", "ErrorResponse", "ExportTemplateRequest", "ExpressionEvaluationOptions", "ExtendedLocation", "GenericResource", "GenericResourceExpanded", "GenericResourceFilter", "HttpMessage", "Identity", "IdentityUserAssignedIdentitiesValue", "KeyVaultParameterReference", "KeyVaultReference", "OnErrorDeployment", "OnErrorDeploymentExtended", "Operation", "OperationDisplay", "OperationListResult", "ParametersLink", "Permission", "Plan", "Provider", "ProviderConsentDefinition", "ProviderExtendedLocation", "ProviderListResult", "ProviderPermission", "ProviderPermissionListResult", "ProviderRegistrationRequest", "ProviderResourceType", "ProviderResourceTypeListResult", "Resource", "ResourceGroup", "ResourceGroupExportResult", "ResourceGroupFilter", "ResourceGroupListResult", "ResourceGroupPatchable", "ResourceGroupProperties", "ResourceGroupsDeleteHeaders", "ResourceListResult", "ResourceProviderOperationDisplayProperties", "ResourceReference", "ResourcesMoveInfo", "RoleDefinition", "ScopedDeployment", "ScopedDeploymentWhatIf", "Sku", "StatusMessage", "SubResource", "TagCount", "TagDetails", "TagValue", "Tags", "TagsCreateOrUpdateAtScopeHeaders", "TagsDeleteAtScopeHeaders", "TagsListResult", "TagsPatchResource", "TagsResource", "TagsUpdateAtScopeHeaders", "TargetResource", "TemplateHashResult", "TemplateLink", "WhatIfChange", "WhatIfOperationResult", "WhatIfPropertyChange", "ZoneMapping", "accept", "$host", "apiVersion", "nextLink", "scope", "deploymentName", "contentType", "parameters", "Deployment", "filter", "top", "parameters1", "ScopedDeployment", "parameters2", "ScopedDeploymentWhatIf", "groupId", "subscriptionId", "parameters3", "DeploymentWhatIf", "resourceGroupName", "template", "resourceProviderNamespace", "properties", "ProviderRegistrationRequest", "expand", "parameters4", "ResourcesMoveInfo", "sourceResourceGroupName", "parentResourcePath", "resourceType", "resourceName", "apiVersion1", "parameters5", "GenericResource", "resourceId", "parameters6", "ResourceGroup", "forceDeletionTypes", "parameters7", "ResourceGroupPatchable", "parameters8", "ExportTemplateRequest", "resourceGroupName1", "tagName", "tagValue", "parameters9", "TagsResource", "parameters10", "TagsPatchResource", "operationId", "OperationsImpl", "client", "options", "iter", "settings", "result", "continuationToken", "__await", "page", "setContinuationToken", "_d", "_e", "__asyncValues", "_f", "_a", "_c", "__asyncDelegator", "listOperationSpec", "nextLink", "listNextOperationSpec", "serializer", "createSerializer", "mappers_exports", "OperationListResult", "CloudError", "apiVersion", "$host", "accept", "logger", "createClientLogger", "terminalStates", "deserializeState", "serializedState", "setStateError", "inputs", "state", "stateProxy", "isOperationError", "error", "appendReadableErrorMessage", "currentMessage", "innerMessage", "message", "simplifyError", "err", "code", "curErr", "processOperationStatus", "result", "status", "isDone", "processResult", "getError", "response", "setErrorAsResult", "postfix", "errStr", "logger", "buildResult", "initOperation", "init", "getOperationStatus", "withOperationLocation", "operationLocation", "resourceLocation", "metadata", "config", "pollOperationHelper", "poll", "getResourceLocation", "options", "terminalStates", "pollOperation", "getOperationLocation", "getPollingInterval", "updateState", "setDelay", "intervalInMs", "location", "isUpdated", "getOperationLocationPollingUrl", "inputs", "azureAsyncOperation", "operationLocation", "getLocationHeader", "rawResponse", "getOperationLocationHeader", "getAzureAsyncOperationHeader", "findResourceLocation", "location", "requestMethod", "requestPath", "resourceLocationConfig", "_a", "getDefault", "inferLroMode", "pollingUrl", "normalizedRequestMethod", "transformStatus", "status", "statusCode", "toOperationStatus", "logger", "getStatus", "getProvisioningState", "properties", "provisioningState", "_b", "parseRetryAfter", "retryAfter", "retryAfterInSeconds", "calculatePollingIntervalFromDate", "getErrorFromResponse", "response", "error", "accessBodyProperty", "retryAfterDate", "timeNow", "retryAfterTime", "getStatusFromInitialResponse", "state", "helper", "getOperationStatus", "getOperationLocation", "rawResponse", "state", "_a", "getOperationLocationPollingUrl", "getOperationLocationHeader", "getAzureAsyncOperationHeader", "getLocationHeader", "getOperationStatus", "mode", "getStatus", "toOperationStatus", "getProvisioningState", "accessBodyProperty", "flatResponse", "prop", "_b", "getResourceLocation", "res", "loc", "isOperationError", "e", "createStateProxy", "config", "state", "error", "result", "buildCreatePoller", "inputs", "getOperationLocation", "getStatusFromInitialResponse", "getStatusFromPollResponse", "isOperationError", "getResourceLocation", "getPollingInterval", "getError", "resolveOnUnsuccessful", "init", "poll", "options", "processResult", "updateState", "withOperationLocationCallback", "intervalInMs", "restoreFrom", "stateProxy", "withOperationLocation", "called", "operationLocation", "isUpdated", "deserializeState", "initOperation", "resultPromise", "abortController", "handlers", "handleProgressEvents", "h", "cancelErrMsg", "currentPollIntervalInMs", "poller", "callback", "s", "pollOptions", "inputAbortSignal", "abortListener", "abortSignal", "delay", "pollOperation", "pollIntervalInMs", "createHttpPoller", "lro", "options", "resourceLocationConfig", "intervalInMs", "processResult", "restoreFrom", "updateState", "withOperationLocation", "resolveOnUnsuccessful", "buildCreatePoller", "getStatusFromInitialResponse", "getOperationStatus", "isOperationError", "getOperationLocation", "getResourceLocation", "parseRetryAfter", "getErrorFromResponse", "response", "config", "inferLroMode", "flatResponse", "state", "createLroSpec", "inputs", "args", "spec", "sendOperationFn", "path", "options", "requestBody", "restSpec", "__rest", "DeploymentsImpl", "client", "scope", "options", "iter", "settings", "result", "continuationToken", "__await", "page", "setContinuationToken", "_d", "_e", "__asyncValues", "_f", "_a", "_c", "__asyncDelegator", "groupId", "resourceGroupName", "deploymentName", "directSendOperation", "args", "spec", "lro", "createLroSpec", "currentRawResponse", "providedCallback", "callback", "rawResponse", "flatResponse", "updatedArgs", "deleteAtScopeOperationSpec", "poller", "createHttpPoller", "checkExistenceAtScopeOperationSpec", "parameters", "createOrUpdateAtScopeOperationSpec", "getAtScopeOperationSpec", "cancelAtScopeOperationSpec", "validateAtScopeOperationSpec", "exportTemplateAtScopeOperationSpec", "listAtScopeOperationSpec", "deleteAtTenantScopeOperationSpec", "checkExistenceAtTenantScopeOperationSpec", "createOrUpdateAtTenantScopeOperationSpec", "getAtTenantScopeOperationSpec", "cancelAtTenantScopeOperationSpec", "validateAtTenantScopeOperationSpec", "whatIfAtTenantScopeOperationSpec", "exportTemplateAtTenantScopeOperationSpec", "listAtTenantScopeOperationSpec", "deleteAtManagementGroupScopeOperationSpec", "checkExistenceAtManagementGroupScopeOperationSpec", "createOrUpdateAtManagementGroupScopeOperationSpec", "getAtManagementGroupScopeOperationSpec", "cancelAtManagementGroupScopeOperationSpec", "validateAtManagementGroupScopeOperationSpec", "whatIfAtManagementGroupScopeOperationSpec", "exportTemplateAtManagementGroupScopeOperationSpec", "listAtManagementGroupScopeOperationSpec", "deleteAtSubscriptionScopeOperationSpec", "checkExistenceAtSubscriptionScopeOperationSpec", "createOrUpdateAtSubscriptionScopeOperationSpec", "getAtSubscriptionScopeOperationSpec", "cancelAtSubscriptionScopeOperationSpec", "validateAtSubscriptionScopeOperationSpec", "whatIfAtSubscriptionScopeOperationSpec", "exportTemplateAtSubscriptionScopeOperationSpec", "listAtSubscriptionScopeOperationSpec", "deleteOperationSpec", "checkExistenceOperationSpec", "createOrUpdateOperationSpec", "getOperationSpec", "cancelOperationSpec", "validateOperationSpec", "whatIfOperationSpec", "exportTemplateOperationSpec", "listByResourceGroupOperationSpec", "template", "calculateTemplateHashOperationSpec", "nextLink", "listAtScopeNextOperationSpec", "listAtTenantScopeNextOperationSpec", "listAtManagementGroupScopeNextOperationSpec", "listAtSubscriptionScopeNextOperationSpec", "listByResourceGroupNextOperationSpec", "serializer", "createSerializer", "mappers_exports", "CloudError", "apiVersion", "$host", "accept", "DeploymentExtended", "contentType", "DeploymentValidateResult", "DeploymentExportResult", "DeploymentListResult", "filter", "top", "parameters1", "WhatIfOperationResult", "parameters2", "subscriptionId", "parameters3", "TemplateHashResult", "ProvidersImpl", "client", "options", "iter", "settings", "result", "continuationToken", "__await", "page", "setContinuationToken", "_d", "_e", "__asyncValues", "_f", "_a", "_c", "__asyncDelegator", "resourceProviderNamespace", "unregisterOperationSpec", "groupId", "registerAtManagementGroupScopeOperationSpec", "providerPermissionsOperationSpec", "registerOperationSpec", "listOperationSpec", "listAtTenantScopeOperationSpec", "getOperationSpec", "getAtTenantScopeOperationSpec", "nextLink", "listNextOperationSpec", "listAtTenantScopeNextOperationSpec", "serializer", "createSerializer", "mappers_exports", "Provider", "CloudError", "apiVersion", "$host", "subscriptionId", "accept", "ProviderPermissionListResult", "properties", "contentType", "ProviderListResult", "expand", "ProviderResourceTypesImpl", "client", "resourceProviderNamespace", "options", "listOperationSpec", "serializer", "createSerializer", "mappers_exports", "ProviderResourceTypeListResult", "CloudError", "apiVersion", "expand", "$host", "subscriptionId", "accept", "ResourcesImpl", "client", "resourceGroupName", "options", "iter", "settings", "result", "continuationToken", "__await", "page", "setContinuationToken", "_d", "_e", "__asyncValues", "_f", "_a", "_c", "__asyncDelegator", "listByResourceGroupOperationSpec", "sourceResourceGroupName", "parameters", "directSendOperation", "args", "spec", "lro", "createLroSpec", "currentRawResponse", "providedCallback", "callback", "rawResponse", "flatResponse", "updatedArgs", "moveResourcesOperationSpec", "poller", "createHttpPoller", "validateMoveResourcesOperationSpec", "listOperationSpec", "resourceProviderNamespace", "parentResourcePath", "resourceType", "resourceName", "apiVersion", "checkExistenceOperationSpec", "deleteOperationSpec", "createOrUpdateOperationSpec", "updateOperationSpec", "getOperationSpec", "resourceId", "checkExistenceByIdOperationSpec", "deleteByIdOperationSpec", "createOrUpdateByIdOperationSpec", "updateByIdOperationSpec", "getByIdOperationSpec", "nextLink", "listByResourceGroupNextOperationSpec", "listNextOperationSpec", "serializer", "createSerializer", "mappers_exports", "ResourceListResult", "CloudError", "filter", "top", "expand", "$host", "subscriptionId", "accept", "parameters4", "contentType", "apiVersion1", "GenericResource", "parameters5", "ResourceGroupsImpl", "client", "options", "iter", "settings", "result", "continuationToken", "__await", "page", "setContinuationToken", "_d", "_e", "__asyncValues", "_f", "_a", "_c", "__asyncDelegator", "resourceGroupName", "checkExistenceOperationSpec", "parameters", "createOrUpdateOperationSpec", "directSendOperation", "args", "spec", "lro", "createLroSpec", "currentRawResponse", "providedCallback", "callback", "rawResponse", "flatResponse", "updatedArgs", "deleteOperationSpec", "poller", "createHttpPoller", "getOperationSpec", "updateOperationSpec", "exportTemplateOperationSpec", "listOperationSpec", "nextLink", "listNextOperationSpec", "serializer", "createSerializer", "mappers_exports", "CloudError", "apiVersion", "$host", "subscriptionId", "accept", "ResourceGroup", "parameters6", "contentType", "forceDeletionTypes", "parameters7", "ResourceGroupExportResult", "parameters8", "resourceGroupName1", "ResourceGroupListResult", "filter", "top", "TagsOperationsImpl", "client", "options", "iter", "settings", "result", "continuationToken", "__await", "page", "setContinuationToken", "_d", "_e", "__asyncValues", "_f", "_a", "_c", "__asyncDelegator", "tagName", "tagValue", "deleteValueOperationSpec", "createOrUpdateValueOperationSpec", "createOrUpdateOperationSpec", "deleteOperationSpec", "listOperationSpec", "scope", "parameters", "directSendOperation", "args", "spec", "lro", "createLroSpec", "currentRawResponse", "providedCallback", "callback", "rawResponse", "flatResponse", "updatedArgs", "createOrUpdateAtScopeOperationSpec", "poller", "createHttpPoller", "updateAtScopeOperationSpec", "getAtScopeOperationSpec", "deleteAtScopeOperationSpec", "nextLink", "listNextOperationSpec", "serializer", "createSerializer", "mappers_exports", "CloudError", "apiVersion", "$host", "subscriptionId", "accept", "TagValue", "TagDetails", "TagsListResult", "TagsResource", "parameters9", "contentType", "parameters10", "DeploymentOperationsImpl", "client", "scope", "deploymentName", "options", "iter", "settings", "result", "continuationToken", "__await", "page", "setContinuationToken", "_d", "_e", "__asyncValues", "_f", "_a", "_c", "__asyncDelegator", "groupId", "resourceGroupName", "operationId", "getAtScopeOperationSpec", "listAtScopeOperationSpec", "getAtTenantScopeOperationSpec", "listAtTenantScopeOperationSpec", "getAtManagementGroupScopeOperationSpec", "listAtManagementGroupScopeOperationSpec", "getAtSubscriptionScopeOperationSpec", "listAtSubscriptionScopeOperationSpec", "getOperationSpec", "listOperationSpec", "nextLink", "listAtScopeNextOperationSpec", "listAtTenantScopeNextOperationSpec", "listAtManagementGroupScopeNextOperationSpec", "listAtSubscriptionScopeNextOperationSpec", "listNextOperationSpec", "serializer", "createSerializer", "mappers_exports", "DeploymentOperation", "CloudError", "apiVersion", "$host", "accept", "DeploymentOperationsListResult", "top", "subscriptionId", "ResourceManagementClient", "ServiceClient", "credentials", "subscriptionIdOrOptions", "options", "subscriptionId", "defaults", "packageDetails", "userAgentPrefix", "optionsWithDefaults", "_b", "_a", "bearerTokenAuthenticationPolicyFound", "pipelinePolicy", "bearerTokenAuthenticationPolicyName", "bearerTokenAuthenticationPolicy", "_c", "authorizeRequestOnClaimChallenge", "OperationsImpl", "DeploymentsImpl", "ProvidersImpl", "ProviderResourceTypesImpl", "ResourcesImpl", "ResourceGroupsImpl", "TagsOperationsImpl", "DeploymentOperationsImpl", "apiVersion", "apiVersionPolicy", "request", "next", "param", "newParams", "item", "import_arm_resourcesdeploymentstacks", "SDK_VERSION", "DeveloperSignOnClientId", "DefaultTenantId", "AzureAuthorityHosts", "DefaultAuthorityHost", "DefaultAuthority", "ALL_TENANTS", "CACHE_CAE_SUFFIX", "CACHE_NON_CAE_SUFFIX", "DEFAULT_TOKEN_CACHE_NAME", "persistenceProvider", "nativeBrokerInfo", "generatePluginConfiguration", "options", "config", "_b", "_a", "_d", "_c", "_e", "_f", "persistenceProvider", "cacheBaseName", "DEFAULT_TOKEN_CACHE_NAME", "CACHE_NON_CAE_SUFFIX", "CACHE_CAE_SUFFIX", "_g", "nativeBrokerInfo", "msalPlugins", "logger", "createClientLogger", "processEnvVars", "supportedEnvVars", "acc", "envVariable", "formatSuccess", "scope", "formatError", "error", "message", "credentialLoggerInstance", "title", "parent", "log", "logger", "fullTitle", "info", "warning", "verbose", "credentialLogger", "credLogger", "isErrorResponse", "errorResponse", "CredentialUnavailableErrorName", "CredentialUnavailableError", "message", "options", "AuthenticationErrorName", "AuthenticationError", "statusCode", "errorBody", "convertOAuthErrorResponseToErrorResponse", "oauthErrorResponse", "AggregateAuthenticationErrorName", "AggregateAuthenticationError", "errors", "errorMessage", "errorDetail", "AuthenticationRequiredError", "createConfigurationErrorMessage", "tenantId", "processMultiTenantRequest", "getTokenOptions", "additionallyAllowedTenantIds", "logger", "resolvedTenantId", "_a", "t", "message", "CredentialUnavailableError", "checkTenantId", "logger", "tenantId", "error", "formatError", "resolveTenantId", "clientId", "DeveloperSignOnClientId", "resolveAdditionallyAllowedTenantIds", "additionallyAllowedTenants", "ALL_TENANTS", "getIdentityTokenEndpointSuffix", "tenantId", "tracingClient", "createTracingClient", "SDK_VERSION", "parseExpirationTimestamp", "body", "asNumber", "asDate", "parseRefreshTimestamp", "noCorrelationId", "getIdentityClientAuthorityHost", "options", "authorityHost", "isNode", "DefaultAuthorityHost", "IdentityClient", "ServiceClient", "packageDetails", "SDK_VERSION", "userAgentPrefix", "_a", "baseUri", "_b", "request", "logger", "response", "parsedBody", "token", "parseExpirationTimestamp", "parseRefreshTimestamp", "error", "AuthenticationError", "tenantId", "clientId", "scopes", "refreshToken", "clientSecret", "refreshParams", "query", "tracingClient", "updatedOptions", "urlSuffix", "getIdentityTokenEndpointSuffix", "createPipelineRequest", "createHttpHeaders", "err", "AuthenticationErrorName", "correlationId", "controller", "controllers", "existingOnAbort", "params", "key", "parameter", "part", "url", "unavailableUpn", "accessToken", "base64Metadata", "appid", "upn", "tid", "oid", "e", "logger", "credentialLogger", "mapVSCodeAuthorityHosts", "AzureAuthorityHosts", "dist_exports", "__export", "AuthError", "AuthErrorCodes_exports", "AuthErrorMessage", "AzureCloudInstance", "ClientApplication", "ClientAssertion", "ClientAuthError", "ClientAuthErrorCodes_exports", "ClientAuthErrorMessage", "ClientConfigurationError", "ClientConfigurationErrorCodes_exports", "ClientConfigurationErrorMessage", "ClientCredentialClient", "ConfidentialClientApplication", "CryptoProvider", "DeviceCodeClient", "DistributedCachePlugin", "InteractionRequiredAuthError", "InteractionRequiredAuthErrorCodes_exports", "InteractionRequiredAuthErrorMessage", "LogLevel", "Logger", "ManagedIdentityApplication", "ManagedIdentitySourceNames", "OnBehalfOfClient", "PromptValue", "ProtocolMode", "PublicClientApplication", "ResponseMode", "ServerError", "TokenCache", "TokenCacheContext", "UsernamePasswordClient", "internals_exports", "version", "Serializer", "data", "accCache", "accounts", "key", "accountEntity", "tenantProfile", "idTCache", "idTokens", "idTEntity", "atCache", "accessTokens", "atEntity", "rtCache", "refreshTokens", "rtEntity", "amdtCache", "appMetadata", "amdtEntity", "inMemCache", "Constants", "HttpStatus", "OIDC_DEFAULT_SCOPES", "OIDC_SCOPES", "HeaderNames", "AADAuthorityConstants", "ClaimsRequestKeys", "PromptValue", "CodeChallengeMethodValues", "OAuthResponseType", "ResponseMode", "GrantType", "CacheAccountType", "Separators", "CredentialType", "APP_METADATA", "CLIENT_INFO", "THE_FAMILY_ID", "AUTHORITY_METADATA_CONSTANTS", "AuthorityMetadataSource", "SERVER_TELEM_CONSTANTS", "AuthenticationScheme", "ThrottlingConstants", "Errors", "PasswordGrantConstants", "RegionDiscoverySources", "RegionDiscoveryOutcomes", "CacheOutcome", "DEFAULT_TOKEN_RENEWAL_OFFSET_SEC", "EncodingTypes", "unexpectedError", "postRequestFailed", "AuthErrorMessages", "AuthErrorCodes.unexpectedError", "AuthErrorCodes.postRequestFailed", "AuthErrorMessage", "AuthError", "_AuthError", "errorCode", "errorMessage", "suberror", "errorString", "Constants", "correlationId", "createAuthError", "code", "additionalMessage", "clientInfoDecodingError", "clientInfoEmptyError", "tokenParsingError", "nullOrEmptyToken", "endpointResolutionError", "networkError", "openIdConfigError", "hashNotDeserialized", "invalidState", "stateMismatch", "stateNotFound", "nonceMismatch", "authTimeNotFound", "maxAgeTranspired", "multipleMatchingTokens", "multipleMatchingAccounts", "multipleMatchingAppMetadata", "requestCannotBeMade", "cannotRemoveEmptyScope", "cannotAppendScopeSet", "emptyInputScopeSet", "deviceCodePollingCancelled", "deviceCodeExpired", "deviceCodeUnknownError", "noAccountInSilentRequest", "invalidCacheRecord", "invalidCacheEnvironment", "noAccountFound", "noCryptoObject", "unexpectedCredentialType", "invalidAssertion", "invalidClientCredential", "tokenRefreshRequired", "userTimeoutReached", "tokenClaimsCnfRequiredForSignedJwt", "authorizationCodeMissingFromServerResponse", "bindingKeyNotRemoved", "endSessionEndpointNotSupported", "keyIdMissing", "noNetworkConnectivity", "userCanceled", "missingTenantIdError", "methodNotImplemented", "nestedAppAuthBridgeDisabled", "ClientAuthErrorMessages", "ClientAuthErrorCodes.clientInfoDecodingError", "ClientAuthErrorCodes.clientInfoEmptyError", "ClientAuthErrorCodes.tokenParsingError", "ClientAuthErrorCodes.nullOrEmptyToken", "ClientAuthErrorCodes.endpointResolutionError", "ClientAuthErrorCodes.networkError", "ClientAuthErrorCodes.openIdConfigError", "ClientAuthErrorCodes.hashNotDeserialized", "ClientAuthErrorCodes.invalidState", "ClientAuthErrorCodes.stateMismatch", "ClientAuthErrorCodes.stateNotFound", "ClientAuthErrorCodes.nonceMismatch", "ClientAuthErrorCodes.authTimeNotFound", "ClientAuthErrorCodes.maxAgeTranspired", "ClientAuthErrorCodes.multipleMatchingTokens", "ClientAuthErrorCodes.multipleMatchingAccounts", "ClientAuthErrorCodes.multipleMatchingAppMetadata", "ClientAuthErrorCodes.requestCannotBeMade", "ClientAuthErrorCodes.cannotRemoveEmptyScope", "ClientAuthErrorCodes.cannotAppendScopeSet", "ClientAuthErrorCodes.emptyInputScopeSet", "ClientAuthErrorCodes.deviceCodePollingCancelled", "ClientAuthErrorCodes.deviceCodeExpired", "ClientAuthErrorCodes.deviceCodeUnknownError", "ClientAuthErrorCodes.noAccountInSilentRequest", "ClientAuthErrorCodes.invalidCacheRecord", "ClientAuthErrorCodes.invalidCacheEnvironment", "ClientAuthErrorCodes.noAccountFound", "ClientAuthErrorCodes.noCryptoObject", "ClientAuthErrorCodes.unexpectedCredentialType", "ClientAuthErrorCodes.invalidAssertion", "ClientAuthErrorCodes.invalidClientCredential", "ClientAuthErrorCodes.tokenRefreshRequired", "ClientAuthErrorCodes.userTimeoutReached", "ClientAuthErrorCodes.tokenClaimsCnfRequiredForSignedJwt", "ClientAuthErrorCodes.authorizationCodeMissingFromServerResponse", "ClientAuthErrorCodes.bindingKeyNotRemoved", "ClientAuthErrorCodes.endSessionEndpointNotSupported", "ClientAuthErrorCodes.keyIdMissing", "ClientAuthErrorCodes.noNetworkConnectivity", "ClientAuthErrorCodes.userCanceled", "ClientAuthErrorCodes.missingTenantIdError", "ClientAuthErrorCodes.methodNotImplemented", "ClientAuthErrorCodes.nestedAppAuthBridgeDisabled", "ClientAuthErrorMessage", "ClientAuthError", "_ClientAuthError", "AuthError", "errorCode", "additionalMessage", "createClientAuthError", "DEFAULT_CRYPTO_IMPLEMENTATION", "createClientAuthError", "ClientAuthErrorCodes.methodNotImplemented", "LogLevel", "Logger", "_Logger", "loggerOptions", "packageName", "packageVersion", "defaultLoggerCallback", "setLoggerOptions", "Constants", "correlationId", "logMessage", "options", "log", "level", "message", "containsPii", "name", "version", "AzureCloudInstance", "extractTokenClaims", "encodedToken", "base64Decode", "jswPayload", "getJWSPayload", "base64Decoded", "createClientAuthError", "ClientAuthErrorCodes.tokenParsingError", "authToken", "ClientAuthErrorCodes.nullOrEmptyToken", "matches", "checkMaxAge", "authTime", "maxAge", "ClientAuthErrorCodes.maxAgeTranspired", "nowSeconds", "toSecondsFromDate", "date", "toDateFromSeconds", "seconds", "isTokenExpired", "expiresOn", "offset", "expirationSec", "wasClockTurnedBack", "cachedAt", "delay", "value", "resolve", "generateCredentialKey", "credentialEntity", "generateAccountId", "generateCredentialId", "generateTarget", "generateClaimsHash", "generateScheme", "Separators", "createIdTokenEntity", "homeAccountId", "environment", "idToken", "clientId", "tenantId", "CredentialType", "createAccessTokenEntity", "accessToken", "scopes", "expiresOn", "extExpiresOn", "base64Decode", "refreshOn", "tokenType", "userAssertionHash", "keyId", "requestedClaims", "requestedClaimsHash", "atEntity", "TimeUtils.nowSeconds", "AuthenticationScheme", "tokenClaims", "extractTokenClaims", "createClientAuthError", "ClientAuthErrorCodes.tokenClaimsCnfRequiredForSignedJwt", "createRefreshTokenEntity", "refreshToken", "familyId", "rtEntity", "isCredentialEntity", "entity", "isAccessTokenEntity", "isIdTokenEntity", "isRefreshTokenEntity", "clientOrFamilyId", "isServerTelemetryEntity", "key", "validateKey", "SERVER_TELEM_CONSTANTS", "validateEntity", "isThrottlingEntity", "ThrottlingConstants", "generateAppMetadataKey", "APP_METADATA", "isAppMetadataEntity", "isAuthorityMetadataEntity", "AUTHORITY_METADATA_CONSTANTS", "generateAuthorityMetadataExpiresAt", "updateAuthorityEndpointMetadata", "authorityMetadata", "updatedValues", "fromNetwork", "updateCloudDiscoveryMetadata", "isAuthorityMetadataExpired", "metadata", "redirectUriEmpty", "claimsRequestParsingError", "authorityUriInsecure", "urlParseError", "urlEmptyError", "emptyInputScopesError", "invalidPromptValue", "invalidClaims", "tokenRequestEmpty", "logoutRequestEmpty", "invalidCodeChallengeMethod", "pkceParamsMissing", "invalidCloudDiscoveryMetadata", "invalidAuthorityMetadata", "untrustedAuthority", "missingSshJwk", "missingSshKid", "missingNonceAuthenticationHeader", "invalidAuthenticationHeader", "cannotSetOIDCOptions", "cannotAllowPlatformBroker", "authorityMismatch", "ClientConfigurationErrorMessages", "ClientConfigurationErrorCodes.redirectUriEmpty", "ClientConfigurationErrorCodes.claimsRequestParsingError", "ClientConfigurationErrorCodes.authorityUriInsecure", "ClientConfigurationErrorCodes.urlParseError", "ClientConfigurationErrorCodes.urlEmptyError", "ClientConfigurationErrorCodes.emptyInputScopesError", "ClientConfigurationErrorCodes.invalidPromptValue", "ClientConfigurationErrorCodes.invalidClaims", "ClientConfigurationErrorCodes.tokenRequestEmpty", "ClientConfigurationErrorCodes.logoutRequestEmpty", "ClientConfigurationErrorCodes.invalidCodeChallengeMethod", "ClientConfigurationErrorCodes.pkceParamsMissing", "ClientConfigurationErrorCodes.invalidCloudDiscoveryMetadata", "ClientConfigurationErrorCodes.invalidAuthorityMetadata", "ClientConfigurationErrorCodes.untrustedAuthority", "ClientConfigurationErrorCodes.missingSshJwk", "ClientConfigurationErrorCodes.missingSshKid", "ClientConfigurationErrorCodes.missingNonceAuthenticationHeader", "ClientConfigurationErrorCodes.invalidAuthenticationHeader", "ClientConfigurationErrorCodes.cannotSetOIDCOptions", "ClientConfigurationErrorCodes.cannotAllowPlatformBroker", "ClientConfigurationErrorCodes.authorityMismatch", "ClientConfigurationErrorMessage", "ClientConfigurationError", "_ClientConfigurationError", "AuthError", "errorCode", "createClientConfigurationError", "StringUtils", "strObj", "obj", "str", "search", "query", "params", "decode", "pair", "key", "value", "arr", "entry", "pattern", "input", "ScopeSet", "_ScopeSet", "inputScopes", "scopeArr", "StringUtils", "filteredInput", "createClientConfigurationError", "ClientConfigurationErrorCodes.emptyInputScopesError", "scope", "inputScopeString", "Constants", "scopeSet", "lowerCaseScopes", "lowerCaseScopesSet", "defaultScopeCount", "OIDC_SCOPES", "defaultScope", "newScope", "newScopes", "createClientAuthError", "ClientAuthErrorCodes.cannotAppendScopeSet", "ClientAuthErrorCodes.cannotRemoveEmptyScope", "otherScopes", "ClientAuthErrorCodes.emptyInputScopeSet", "unionScopes", "sizeOtherScopes", "sizeThisScopes", "array", "val", "buildClientInfo", "rawClientInfo", "base64Decode", "createClientAuthError", "ClientAuthErrorCodes.clientInfoEmptyError", "decodedClientInfo", "ClientAuthErrorCodes.clientInfoDecodingError", "buildClientInfoFromHomeAccountId", "homeAccountId", "clientInfoParts", "Separators", "Constants", "tenantIdMatchesHomeTenant", "tenantId", "homeAccountId", "buildTenantProfile", "localAccountId", "idTokenClaims", "oid", "sub", "tid", "name", "tfp", "acr", "updateAccountTenantProfileData", "baseAccountInfo", "tenantProfile", "idTokenSecret", "updatedAccountInfo", "isHomeTenant", "tenantProfileOverride", "claimsSourcedTenantProfile", "AuthorityType", "getTenantIdFromIdTokenClaims", "idTokenClaims", "ProtocolMode", "AccountEntity", "_AccountEntity", "Separators", "tenantProfile", "accountInterface", "homeTenantId", "accountDetails", "authority", "base64Decode", "account", "AuthorityType", "CacheAccountType", "ProtocolMode", "clientInfo", "buildClientInfo", "env", "createClientAuthError", "ClientAuthErrorCodes.invalidCacheEnvironment", "getTenantIdFromIdTokenClaims", "preferredUsername", "email", "buildTenantProfile", "accountInfo", "cloudGraphHostName", "msGraphHost", "serverClientInfo", "authType", "logger", "cryptoObj", "idTokenClaims", "entity", "accountA", "accountB", "compareClaims", "claimsMatch", "accountAClaims", "accountBClaims", "stripLeadingHashOrQuery", "responseString", "getDeserializedResponse", "normalizedResponse", "deserializedHash", "createClientAuthError", "ClientAuthErrorCodes.hashNotDeserialized", "mapToQueryString", "parameters", "encodeExtraParams", "extraQueryParameters", "queryParameterArray", "value", "key", "UrlString", "_UrlString", "url", "createClientConfigurationError", "ClientConfigurationErrorCodes.urlEmptyError", "lowerCaseUrl", "StringUtils", "components", "ClientConfigurationErrorCodes.urlParseError", "ClientConfigurationErrorCodes.authorityUriInsecure", "queryString", "tenantId", "urlObject", "pathArray", "AADAuthorityConstants", "regEx", "match", "urlComponents", "pathSegments", "val", "relativeUrl", "baseUrl", "Constants", "baseComponents", "response", "UrlUtils.getDeserializedResponse", "rawMetdataJSON", "EndpointMetadata", "InstanceDiscoveryMetadata", "InstanceDiscoveryMetadataAliases", "metadataEntry", "alias", "getAliasesFromStaticSources", "staticAuthorityOptions", "logger", "staticAliases", "canonicalAuthority", "authorityHost", "UrlString", "getAliasesFromMetadata", "AuthorityMetadataSource", "cloudDiscoveryMetadata", "source", "metadata", "getCloudDiscoveryMetadataFromNetworkResponse", "getCloudDiscoveryMetadataFromHardcodedValues", "response", "i", "cacheQuotaExceeded", "cacheErrorUnknown", "CacheErrorMessages", "CacheErrorCodes.cacheQuotaExceeded", "CacheErrorCodes.cacheErrorUnknown", "CacheError", "_CacheError", "AuthError", "errorCode", "errorMessage", "message", "createCacheError", "e", "CacheManager", "clientId", "cryptoImpl", "logger", "performanceClient", "staticAuthorityOptions", "name", "version", "accountFilter", "correlationId", "allAccounts", "account", "accountEntities", "cachedAccounts", "accountEntity", "accountInfo", "tokenKeys", "tenantProfile", "tenantProfileFilter", "tenantedAccountInfo", "idTokenClaims", "idToken", "extractTokenClaims", "updateAccountTenantProfileData", "targetTenantId", "searchTenantProfiles", "matchingTenantProfiles", "cacheRecord", "storeInCache", "createClientAuthError", "ClientAuthErrorCodes.invalidCacheRecord", "e", "AuthError", "createCacheError", "credential", "accessTokenFilter", "currentScopes", "ScopeSet", "key", "tokenEntity", "allAccountKeys", "matchingAccounts", "cacheKey", "entity", "homeAccountId", "tenantId", "Separators", "lowerCaseKey", "CredentialType", "clientIdValidation", "familyIdValidation", "THE_FAMILY_ID", "filter", "AuthenticationScheme", "allCacheKeys", "matchingAppMetadata", "host", "matchedEntity", "accountKey", "allTokenKeys", "accountId", "kid", "AccountEntity", "targetRealm", "idTokenFilter", "idTokenMap", "numIdTokens", "tokensToBeRemoved", "homeIdTokenMap", "numHomeIdTokens", "idTokenKeys", "idTokens", "inputKey", "request", "scopes", "authScheme", "credentialType", "accessTokenKeys", "accessTokens", "accessToken", "numAccessTokens", "generateCredentialKey", "keyMustContainAllScopes", "i", "familyRT", "id", "refreshTokenFilter", "refreshTokenKeys", "refreshTokens", "refreshToken", "numRefreshTokens", "environment", "appMetadataFilter", "appMetadata", "appMetadataEntries", "numAppMetadata", "ClientAuthErrorCodes.multipleMatchingAppMetadata", "tokenClaims", "localAccountId", "idTokenLocalAccountId", "claims", "cachedUsername", "filterUsername", "userAssertionHash", "staticAliases", "getAliasesFromStaticSources", "cloudMetadata", "familyId", "realm", "nativeAccountId", "loginHint", "sid", "authorityType", "target", "tokenType", "keyId", "APP_METADATA", "AUTHORITY_METADATA_CONSTANTS", "authority", "obj", "json", "propertyName", "DefaultStorageClass", "ClientAuthErrorCodes.methodNotImplemented", "PerformanceEvents", "PerformanceEventAbbreviations", "PerformanceEventStatus", "StubPerformanceMeasurement", "StubPerformanceClient", "measureName", "correlationId", "PerformanceEventStatus", "DEFAULT_SYSTEM_OPTIONS", "DEFAULT_TOKEN_RENEWAL_OFFSET_SEC", "DEFAULT_LOGGER_IMPLEMENTATION", "LogLevel", "Constants", "DEFAULT_CACHE_OPTIONS", "DEFAULT_NETWORK_IMPLEMENTATION", "createClientAuthError", "ClientAuthErrorCodes.methodNotImplemented", "DEFAULT_LIBRARY_INFO", "version", "DEFAULT_CLIENT_CREDENTIALS", "DEFAULT_AZURE_CLOUD_OPTIONS", "AzureCloudInstance", "DEFAULT_TELEMETRY_OPTIONS", "buildClientConfiguration", "userAuthOptions", "userSystemOptions", "userLoggerOption", "userCacheOptions", "storageImplementation", "networkImplementation", "cryptoImplementation", "clientCredentials", "libraryInfo", "telemetry", "serverTelemetryManager", "persistencePlugin", "serializableCache", "loggerOptions", "buildAuthOptions", "DefaultStorageClass", "DEFAULT_CRYPTO_IMPLEMENTATION", "Logger", "StubPerformanceClient", "authOptions", "isOidcProtocolMode", "config", "ProtocolMode", "CcsCredentialType", "CLIENT_ID", "REDIRECT_URI", "RESPONSE_TYPE", "RESPONSE_MODE", "GRANT_TYPE", "CLAIMS", "SCOPE", "ERROR", "ERROR_DESCRIPTION", "ACCESS_TOKEN", "ID_TOKEN", "REFRESH_TOKEN", "EXPIRES_IN", "REFRESH_TOKEN_EXPIRES_IN", "STATE", "NONCE", "PROMPT", "SESSION_STATE", "CLIENT_INFO", "CODE", "CODE_CHALLENGE", "CODE_CHALLENGE_METHOD", "CODE_VERIFIER", "CLIENT_REQUEST_ID", "X_CLIENT_SKU", "X_CLIENT_VER", "X_CLIENT_OS", "X_CLIENT_CPU", "X_CLIENT_CURR_TELEM", "X_CLIENT_LAST_TELEM", "X_MS_LIB_CAPABILITY", "X_APP_NAME", "X_APP_VER", "POST_LOGOUT_URI", "ID_TOKEN_HINT", "DEVICE_CODE", "CLIENT_SECRET", "CLIENT_ASSERTION", "CLIENT_ASSERTION_TYPE", "TOKEN_TYPE", "REQ_CNF", "OBO_ASSERTION", "REQUESTED_TOKEN_USE", "ON_BEHALF_OF", "FOCI", "CCS_HEADER", "RETURN_SPA_CODE", "NATIVE_BROKER", "LOGOUT_HINT", "SID", "LOGIN_HINT", "DOMAIN_HINT", "X_CLIENT_EXTRA_SKU", "BROKER_CLIENT_ID", "BROKER_REDIRECT_URI", "INSTANCE_AWARE", "EAR_JWK", "EAR_JWE_CRYPTO", "instrumentBrokerParams", "parameters", "correlationId", "performanceClient", "clientId", "AADServerParamKeys.CLIENT_ID", "AADServerParamKeys.BROKER_CLIENT_ID", "AADServerParamKeys.REDIRECT_URI", "addResponseType", "responseType", "AADServerParamKeys.RESPONSE_TYPE", "addResponseMode", "responseMode", "AADServerParamKeys.RESPONSE_MODE", "ResponseMode", "addNativeBroker", "AADServerParamKeys.NATIVE_BROKER", "addScopes", "scopes", "addOidcScopes", "defaultScopes", "OIDC_DEFAULT_SCOPES", "requestScopes", "scopeSet", "ScopeSet", "AADServerParamKeys.SCOPE", "addClientId", "addRedirectUri", "redirectUri", "addPostLogoutRedirectUri", "AADServerParamKeys.POST_LOGOUT_URI", "addIdTokenHint", "idTokenHint", "AADServerParamKeys.ID_TOKEN_HINT", "addDomainHint", "domainHint", "AADServerParamKeys.DOMAIN_HINT", "addLoginHint", "loginHint", "AADServerParamKeys.LOGIN_HINT", "addCcsUpn", "HeaderNames", "addCcsOid", "clientInfo", "addSid", "sid", "AADServerParamKeys.SID", "addClaims", "claims", "clientCapabilities", "mergedClaims", "addClientCapabilitiesToClaims", "createClientConfigurationError", "ClientConfigurationErrorCodes.invalidClaims", "AADServerParamKeys.CLAIMS", "addCorrelationId", "AADServerParamKeys.CLIENT_REQUEST_ID", "addLibraryInfo", "libraryInfo", "AADServerParamKeys.X_CLIENT_SKU", "AADServerParamKeys.X_CLIENT_VER", "AADServerParamKeys.X_CLIENT_OS", "AADServerParamKeys.X_CLIENT_CPU", "addApplicationTelemetry", "appTelemetry", "AADServerParamKeys.X_APP_NAME", "AADServerParamKeys.X_APP_VER", "addPrompt", "prompt", "AADServerParamKeys.PROMPT", "addState", "state", "AADServerParamKeys.STATE", "addNonce", "nonce", "AADServerParamKeys.NONCE", "addCodeChallengeParams", "codeChallenge", "codeChallengeMethod", "AADServerParamKeys.CODE_CHALLENGE", "AADServerParamKeys.CODE_CHALLENGE_METHOD", "ClientConfigurationErrorCodes.pkceParamsMissing", "addAuthorizationCode", "code", "AADServerParamKeys.CODE", "addDeviceCode", "AADServerParamKeys.DEVICE_CODE", "addRefreshToken", "refreshToken", "AADServerParamKeys.REFRESH_TOKEN", "addCodeVerifier", "codeVerifier", "AADServerParamKeys.CODE_VERIFIER", "addClientSecret", "clientSecret", "AADServerParamKeys.CLIENT_SECRET", "addClientAssertion", "clientAssertion", "AADServerParamKeys.CLIENT_ASSERTION", "addClientAssertionType", "clientAssertionType", "AADServerParamKeys.CLIENT_ASSERTION_TYPE", "addOboAssertion", "oboAssertion", "AADServerParamKeys.OBO_ASSERTION", "addRequestTokenUse", "tokenUse", "AADServerParamKeys.REQUESTED_TOKEN_USE", "addGrantType", "grantType", "AADServerParamKeys.GRANT_TYPE", "addClientInfo", "CLIENT_INFO", "addInstanceAware", "AADServerParamKeys.INSTANCE_AWARE", "addExtraQueryParameters", "eQParams", "key", "value", "ClaimsRequestKeys", "addUsername", "username", "PasswordGrantConstants", "addPassword", "password", "addPopToken", "cnfString", "AADServerParamKeys.TOKEN_TYPE", "AuthenticationScheme", "AADServerParamKeys.REQ_CNF", "addSshJwk", "sshJwkString", "addServerTelemetry", "serverTelemetryManager", "AADServerParamKeys.X_CLIENT_CURR_TELEM", "AADServerParamKeys.X_CLIENT_LAST_TELEM", "addThrottling", "AADServerParamKeys.X_MS_LIB_CAPABILITY", "ThrottlingConstants", "addLogoutHint", "logoutHint", "AADServerParamKeys.LOGOUT_HINT", "addBrokerParameters", "brokerClientId", "brokerRedirectUri", "AADServerParamKeys.BROKER_REDIRECT_URI", "addEARParameters", "jwk", "AADServerParamKeys.EAR_JWK", "AADServerParamKeys.EAR_JWE_CRYPTO", "isOpenIdConfigResponse", "response", "isCloudInstanceDiscoveryResponse", "response", "isCloudInstanceDiscoveryErrorResponse", "response", "invoke", "callback", "eventName", "logger", "telemetryClient", "correlationId", "args", "inProgressEvent", "eventCount", "result", "e", "invokeAsync", "response", "RegionDiscovery", "_RegionDiscovery", "networkInterface", "logger", "performanceClient", "correlationId", "environmentRegion", "regionDiscoveryMetadata", "PerformanceEvents", "autodetectedRegionName", "RegionDiscoverySources", "options", "localIMDSVersionResponse", "invokeAsync", "Constants", "HttpStatus", "currentIMDSVersion", "currentIMDSVersionResponse", "version", "response", "Authority", "_Authority", "authority", "networkInterface", "cacheManager", "authorityOptions", "logger", "correlationId", "performanceClient", "managedIdentity", "RegionDiscovery", "authorityUri", "Constants", "AuthorityType", "pathSegments", "url", "UrlString", "createClientAuthError", "ClientAuthErrorCodes.endpointResolutionError", "ClientAuthErrorCodes.endSessionEndpointNotSupported", "ProtocolMode", "urlString", "endpoint", "cachedAuthorityUrlComponents", "cachedAuthorityParts", "currentPart", "index", "cachedPart", "tenantId", "canonicalAuthorityHost", "PerformanceEvents", "metadataEntity", "cloudDiscoverySource", "invokeAsync", "endpointSource", "CacheHelpers.generateAuthorityMetadataExpiresAt", "endpointMetadataResult", "AuthorityMetadataSource", "cacheKey", "localMetadata", "hardcodedMetadata", "CacheHelpers.updateAuthorityEndpointMetadata", "metadata", "ClientAuthErrorCodes.openIdConfigError", "configMetadata", "metadataEntityExpired", "CacheHelpers.isAuthorityMetadataExpired", "createClientConfigurationError", "ClientConfigurationErrorCodes.invalidAuthorityMetadata", "options", "openIdConfigurationEndpoint", "response", "isOpenIdConfigResponse", "e", "EndpointMetadata", "userConfiguredAzureRegion", "RegionDiscoveryOutcomes", "autodetectedRegionName", "localMetadataSource", "CacheHelpers.updateCloudDiscoveryMetadata", "ClientConfigurationErrorCodes.untrustedAuthority", "getCloudDiscoveryMetadataFromHardcodedValues", "parsedResponse", "getCloudDiscoveryMetadataFromNetworkResponse", "ClientConfigurationErrorCodes.invalidCloudDiscoveryMetadata", "instanceDiscoveryEndpoint", "match", "typedResponseBody", "isCloudInstanceDiscoveryResponse", "isCloudInstanceDiscoveryErrorResponse", "error", "AuthError", "typedError", "authorityString", "azureCloudOptions", "authorityAzureCloudInstance", "AzureCloudInstance", "tenant", "host", "InstanceDiscoveryMetadataAliases", "region", "queryString", "authorityUrlInstance", "authorityUrlParts", "hostNameAndPort", "azureRegion", "regionalMetadata", "ciamAuthority", "authorityUrlComponents", "tenantIdOrDomain", "AADAuthorityConstants", "getTenantFromAuthorityString", "formatAuthorityUri", "buildStaticAuthorityOptions", "authOptions", "rawCloudDiscoveryMetadata", "cloudDiscoveryMetadata", "createDiscoveredInstance", "authorityUri", "networkClient", "cacheManager", "authorityOptions", "logger", "correlationId", "performanceClient", "PerformanceEvents", "authorityUriFinal", "Authority", "formatAuthorityUri", "acquireTokenAuthority", "invokeAsync", "createClientAuthError", "ClientAuthErrorCodes.endpointResolutionError", "ServerError", "_ServerError", "AuthError", "errorCode", "errorMessage", "subError", "errorNo", "status", "getRequestThumbprint", "clientId", "request", "homeAccountId", "ThrottlingUtils", "_ThrottlingUtils", "thumbprint", "ThrottlingConstants", "cacheManager", "correlationId", "key", "value", "ServerError", "Constants", "response", "thumbprintValue", "HeaderNames", "throttleTime", "time", "currentSeconds", "clientId", "request", "homeAccountIdentifier", "getRequestThumbprint", "NetworkError", "_NetworkError", "AuthError", "error", "httpStatus", "responseHeaders", "BaseClient", "configuration", "performanceClient", "buildClientConfiguration", "Logger", "name", "version", "ccsCred", "headers", "HeaderNames", "Constants", "CcsCredentialType", "clientInfo", "buildClientInfoFromHomeAccountId", "e", "tokenEndpoint", "queryString", "thumbprint", "correlationId", "queuedEvent", "response", "options", "ThrottlingUtils", "invokeAsync", "PerformanceEvents", "responseHeaders", "NetworkError", "AuthError", "createClientAuthError", "ClientAuthErrorCodes.networkError", "cloudInstanceHostname", "cloudInstanceAuthorityUri", "cloudInstanceAuthority", "createDiscoveredInstance", "request", "parameters", "RequestParameterBuilder.addBrokerParameters", "RequestParameterBuilder.addExtraQueryParameters", "RequestParameterBuilder.addCorrelationId", "RequestParameterBuilder.instrumentBrokerParams", "UrlUtils.mapToQueryString", "noTokensFound", "nativeAccountUnavailable", "refreshTokenExpired", "uxNotAllowed", "interactionRequired", "consentRequired", "loginRequired", "badToken", "InteractionRequiredServerErrorMessage", "InteractionRequiredAuthErrorCodes.interactionRequired", "InteractionRequiredAuthErrorCodes.consentRequired", "InteractionRequiredAuthErrorCodes.loginRequired", "InteractionRequiredAuthErrorCodes.badToken", "InteractionRequiredAuthErrorCodes.uxNotAllowed", "InteractionRequiredAuthSubErrorMessage", "InteractionRequiredAuthErrorMessages", "InteractionRequiredAuthErrorCodes.noTokensFound", "InteractionRequiredAuthErrorCodes.nativeAccountUnavailable", "InteractionRequiredAuthErrorCodes.refreshTokenExpired", "InteractionRequiredAuthErrorMessage", "InteractionRequiredAuthError", "_InteractionRequiredAuthError", "AuthError", "errorCode", "errorMessage", "subError", "timestamp", "traceId", "correlationId", "claims", "errorNo", "Constants", "isInteractionRequiredError", "errorString", "isInteractionRequiredErrorCode", "isInteractionRequiredSubError", "isInteractionRequiredErrorDesc", "irErrorCode", "createInteractionRequiredAuthError", "ProtocolUtils", "_ProtocolUtils", "cryptoObj", "userState", "meta", "libraryState", "Constants", "createClientAuthError", "ClientAuthErrorCodes.noCryptoObject", "stateObj", "stateString", "state", "ClientAuthErrorCodes.invalidState", "splitState", "libraryStateString", "libraryStateObj", "KeyLocation", "PopTokenGenerator", "cryptoUtils", "performanceClient", "request", "logger", "PerformanceEvents", "reqCnf", "invokeAsync", "reqCnfString", "accessToken", "keyId", "payload", "claims", "resourceRequestMethod", "resourceRequestUri", "shrClaims", "shrNonce", "shrOptions", "resourceUrlComponents", "UrlString", "TimeUtils.nowSeconds", "TokenCacheContext", "tokenCache", "hasChanged", "ResponseHandler", "_ResponseHandler", "clientId", "cacheStorage", "cryptoObj", "logger", "serializableCache", "persistencePlugin", "performanceClient", "serverResponse", "refreshAccessToken", "errString", "Constants", "serverErrorNo", "serverError", "ServerError", "HttpStatus", "isInteractionRequiredError", "InteractionRequiredAuthError", "serverTokenResponse", "authority", "reqTimestamp", "request", "authCodePayload", "userAssertionHash", "handlingRefreshTokenResponse", "forceCacheRefreshTokenResponse", "serverRequestId", "PerformanceEvents", "idTokenClaims", "extractTokenClaims", "createClientAuthError", "ClientAuthErrorCodes.nonceMismatch", "authTime", "ClientAuthErrorCodes.authTimeNotFound", "checkMaxAge", "AccountEntity", "requestStateObj", "ProtocolUtils", "cacheRecord", "cacheContext", "TokenCacheContext", "key", "env", "ClientAuthErrorCodes.invalidCacheEnvironment", "claimsTenantId", "getTenantIdFromIdTokenClaims", "cachedIdToken", "cachedAccount", "CacheHelpers.createIdTokenEntity", "buildAccountToCache", "cachedAccessToken", "responseScopes", "ScopeSet", "expiresIn", "extExpiresIn", "refreshIn", "tokenExpirationSeconds", "extendedTokenExpirationSeconds", "refreshOnSeconds", "CacheHelpers.createAccessTokenEntity", "cachedRefreshToken", "rtExpiresOn", "rtExpiresIn", "CacheHelpers.createRefreshTokenEntity", "cachedAppMetadata", "fromTokenCache", "requestState", "requestId", "accessToken", "expiresOn", "extExpiresOn", "refreshOn", "familyId", "AuthenticationScheme", "popTokenGenerator", "PopTokenGenerator", "secret", "keyId", "ClientAuthErrorCodes.keyIdMissing", "TimeUtils.toDateFromSeconds", "THE_FAMILY_ID", "uid", "tid", "accountInfo", "updateAccountTenantProfileData", "homeAccountId", "base64Decode", "correlationId", "clientInfo", "environment", "nativeAccountId", "baseAccountKey", "accountKey", "baseAccount", "tenantProfiles", "tenantId", "tenantProfile", "newTenantProfile", "buildTenantProfile", "RequestValidator", "redirectUri", "createClientConfigurationError", "ClientConfigurationErrorCodes.redirectUriEmpty", "prompt", "promptValues", "value", "PromptValue", "ClientConfigurationErrorCodes.invalidPromptValue", "claims", "ClientConfigurationErrorCodes.invalidClaims", "codeChallenge", "codeChallengeMethod", "ClientConfigurationErrorCodes.pkceParamsMissing", "CodeChallengeMethodValues", "ClientConfigurationErrorCodes.invalidCodeChallengeMethod", "getClientAssertion", "clientAssertion", "clientId", "tokenEndpoint", "AuthorizationCodeClient", "BaseClient", "configuration", "performanceClient", "request", "authCodePayload", "PerformanceEvents", "createClientAuthError", "ClientAuthErrorCodes.requestCannotBeMade", "reqTimestamp", "TimeUtils.nowSeconds", "response", "invokeAsync", "requestId", "HeaderNames", "responseHandler", "ResponseHandler", "logoutRequest", "createClientConfigurationError", "ClientConfigurationErrorCodes.logoutRequestEmpty", "queryString", "UrlString", "authority", "queryParametersString", "endpoint", "requestBody", "ccsCredential", "clientInfo", "buildClientInfo", "Separators", "CcsCredentialType", "e", "headers", "thumbprint", "getRequestThumbprint", "parameters", "RequestParameterBuilder.addClientId", "AADServerParamKeys.CLIENT_ID", "RequestParameterBuilder.addRedirectUri", "RequestValidator", "RequestParameterBuilder.addScopes", "RequestParameterBuilder.addAuthorizationCode", "RequestParameterBuilder.addLibraryInfo", "RequestParameterBuilder.addApplicationTelemetry", "RequestParameterBuilder.addThrottling", "isOidcProtocolMode", "RequestParameterBuilder.addServerTelemetry", "RequestParameterBuilder.addCodeVerifier", "RequestParameterBuilder.addClientSecret", "clientAssertion", "RequestParameterBuilder.addClientAssertion", "getClientAssertion", "RequestParameterBuilder.addClientAssertionType", "RequestParameterBuilder.addGrantType", "GrantType", "RequestParameterBuilder.addClientInfo", "AuthenticationScheme", "popTokenGenerator", "PopTokenGenerator", "reqCnfData", "RequestParameterBuilder.addPopToken", "RequestParameterBuilder.addSshJwk", "ClientConfigurationErrorCodes.missingSshJwk", "StringUtils", "RequestParameterBuilder.addClaims", "ccsCred", "buildClientInfoFromHomeAccountId", "RequestParameterBuilder.addCcsOid", "RequestParameterBuilder.addCcsUpn", "RequestParameterBuilder.addBrokerParameters", "RequestParameterBuilder.addExtraQueryParameters", "AADServerParamKeys.RETURN_SPA_CODE", "RequestParameterBuilder.instrumentBrokerParams", "UrlUtils.mapToQueryString", "RequestParameterBuilder.addPostLogoutRedirectUri", "RequestParameterBuilder.addCorrelationId", "RequestParameterBuilder.addIdTokenHint", "RequestParameterBuilder.addState", "RequestParameterBuilder.addLogoutHint", "RequestParameterBuilder.addInstanceAware", "DEFAULT_REFRESH_TOKEN_EXPIRATION_OFFSET_SECONDS", "RefreshTokenClient", "BaseClient", "configuration", "performanceClient", "request", "PerformanceEvents", "reqTimestamp", "TimeUtils.nowSeconds", "response", "invokeAsync", "requestId", "HeaderNames", "responseHandler", "ResponseHandler", "createClientConfigurationError", "ClientConfigurationErrorCodes.tokenRequestEmpty", "createClientAuthError", "ClientAuthErrorCodes.noAccountInSilentRequest", "e", "noFamilyRTInCache", "InteractionRequiredAuthError", "InteractionRequiredAuthErrorCodes.noTokensFound", "clientMismatchErrorWithFamilyRT", "ServerError", "Errors", "foci", "refreshToken", "invoke", "createInteractionRequiredAuthError", "TimeUtils.isTokenExpired", "InteractionRequiredAuthErrorCodes.refreshTokenExpired", "refreshTokenRequest", "AuthenticationScheme", "CcsCredentialType", "InteractionRequiredAuthErrorCodes.badToken", "badRefreshTokenKey", "generateCredentialKey", "authority", "queryParametersString", "endpoint", "UrlString", "requestBody", "headers", "thumbprint", "getRequestThumbprint", "parameters", "RequestParameterBuilder.addClientId", "AADServerParamKeys.CLIENT_ID", "RequestParameterBuilder.addRedirectUri", "RequestParameterBuilder.addScopes", "RequestParameterBuilder.addGrantType", "GrantType", "RequestParameterBuilder.addClientInfo", "RequestParameterBuilder.addLibraryInfo", "RequestParameterBuilder.addApplicationTelemetry", "RequestParameterBuilder.addThrottling", "isOidcProtocolMode", "RequestParameterBuilder.addServerTelemetry", "RequestParameterBuilder.addRefreshToken", "RequestParameterBuilder.addClientSecret", "clientAssertion", "RequestParameterBuilder.addClientAssertion", "getClientAssertion", "RequestParameterBuilder.addClientAssertionType", "popTokenGenerator", "PopTokenGenerator", "reqCnfData", "RequestParameterBuilder.addPopToken", "RequestParameterBuilder.addSshJwk", "ClientConfigurationErrorCodes.missingSshJwk", "StringUtils", "RequestParameterBuilder.addClaims", "clientInfo", "buildClientInfoFromHomeAccountId", "RequestParameterBuilder.addCcsOid", "RequestParameterBuilder.addCcsUpn", "RequestParameterBuilder.addBrokerParameters", "RequestParameterBuilder.addExtraQueryParameters", "RequestParameterBuilder.instrumentBrokerParams", "UrlUtils.mapToQueryString", "SilentFlowClient", "BaseClient", "configuration", "performanceClient", "request", "PerformanceEvents", "lastCacheOutcome", "CacheOutcome", "StringUtils", "createClientAuthError", "ClientAuthErrorCodes.tokenRefreshRequired", "ClientAuthErrorCodes.noAccountInSilentRequest", "requestTenantId", "getTenantFromAuthorityString", "tokenKeys", "cachedAccessToken", "TimeUtils.wasClockTurnedBack", "TimeUtils.isTokenExpired", "environment", "cacheRecord", "invokeAsync", "cacheOutcome", "correlationId", "idTokenClaims", "extractTokenClaims", "authTime", "ClientAuthErrorCodes.authTimeNotFound", "checkMaxAge", "ResponseHandler", "getStandardAuthorizeRequestParameters", "authOptions", "request", "logger", "performanceClient", "correlationId", "parameters", "RequestParameterBuilder.addClientId", "AADServerParamKeys.CLIENT_ID", "requestScopes", "RequestParameterBuilder.addScopes", "RequestParameterBuilder.addRedirectUri", "RequestParameterBuilder.addCorrelationId", "RequestParameterBuilder.addResponseMode", "RequestParameterBuilder.addClientInfo", "RequestParameterBuilder.addPrompt", "RequestParameterBuilder.addDomainHint", "PromptValue", "RequestParameterBuilder.addSid", "accountSid", "extractAccountSid", "accountLoginHintClaim", "extractLoginHint", "RequestParameterBuilder.addLoginHint", "clientInfo", "buildClientInfoFromHomeAccountId", "RequestParameterBuilder.addCcsOid", "RequestParameterBuilder.addCcsUpn", "RequestParameterBuilder.addNonce", "RequestParameterBuilder.addState", "RequestParameterBuilder.addClaims", "RequestParameterBuilder.addBrokerParameters", "AADServerParamKeys.INSTANCE_AWARE", "RequestParameterBuilder.addInstanceAware", "getAuthorizeUrl", "authority", "requestParameters", "encodeParams", "extraQueryParameters", "queryString", "mapToQueryString", "UrlString", "getAuthorizationCodePayload", "serverParams", "cachedState", "validateAuthorizationResponse", "createClientAuthError", "ClientAuthErrorCodes.authorizationCodeMissingFromServerResponse", "serverResponse", "requestState", "ClientAuthErrorCodes.stateNotFound", "decodedServerResponseState", "decodedRequestState", "ClientAuthErrorCodes.invalidState", "ClientAuthErrorCodes.stateMismatch", "serverErrorNo", "parseServerErrorNo", "isInteractionRequiredError", "InteractionRequiredAuthError", "ServerError", "errorCodePrefix", "errorCodePrefixIndex", "account", "skuGroupSeparator", "skuValueSeparator", "makeExtraSkuString", "params", "skus", "libraryName", "libraryVersion", "extensionName", "extensionVersion", "skuMap", "skuArr", "value", "key", "setSku", "index", "skuName", "skuVersion", "ServerTelemetryManager", "_ServerTelemetryManager", "telemetryRequest", "cacheManager", "CacheOutcome", "Constants", "SERVER_TELEM_CONSTANTS", "Separators", "request", "platformFieldsArr", "nativeBrokerErrorCode", "platformFields", "regionDiscoveryFields", "requestWithRegionDiscoveryFields", "lastRequests", "maxErrors", "failedRequests", "errors", "errorCount", "overflow", "error", "AuthError", "initialValue", "numErrorsFlushed", "serverTelemEntity", "serverTelemetryEntity", "i", "dataSize", "apiId", "correlationId", "errorCode", "regionDiscoveryMetadata", "cacheOutcome", "Deserializer", "jsonFile", "accounts", "accountObjects", "key", "serializedAcc", "mappedAcc", "serializedTenantProfile", "account", "AccountEntity", "CacheManager", "idTokens", "idObjects", "serializedIdT", "idToken", "accessTokens", "atObjects", "serializedAT", "accessToken", "refreshTokens", "rtObjects", "serializedRT", "refreshToken", "appMetadata", "appMetadataObjects", "serializedAmdt", "jsonCache", "DEFAULT_MANAGED_IDENTITY_ID", "MANAGED_IDENTITY_DEFAULT_TENANT", "DEFAULT_AUTHORITY_FOR_MANAGED_IDENTITY", "ManagedIdentityHeaders", "ManagedIdentityQueryParameters", "ManagedIdentityEnvironmentVariableNames", "ManagedIdentitySourceNames", "ManagedIdentityIdType", "HttpMethod", "ProxyStatus", "HttpStatus", "REGION_ENVIRONMENT_VARIABLE", "MSAL_FORCE_REGION", "RANDOM_OCTET_SIZE", "Hash", "CharSet", "Constants", "ApiId", "JwtConstants", "LOOPBACK_SERVER_CONSTANTS", "AZURE_ARC_SECRET_FILE_MAX_SIZE_BYTES", "NetworkUtils", "headers", "body", "statusCode", "url", "options", "HttpClient", "proxyUrl", "customAgentOptions", "url", "options", "timeout", "networkRequestViaProxy", "HttpMethod", "networkRequestViaHttps", "destinationUrlString", "proxyUrlString", "httpMethod", "agentOptions", "destinationUrl", "headers", "tunnelRequestOptions", "http", "postRequestStringContent", "body", "outgoingRequestString", "resolve", "reject", "request", "response", "socket", "proxyStatusCode", "ProxyStatus", "data", "chunk", "dataStringArray", "httpStatusCode", "statusMessage", "headersArray", "entries", "header", "headerKeyValue", "headerKey", "headerValue", "object", "parsedHeaders", "networkResponse", "NetworkUtils", "parseBody", "HttpStatus", "Constants", "urlString", "isPostRequest", "customOptions", "https", "statusCode", "parsedBody", "errorType", "errorDescriptionHelper", "invalidFileExtension", "invalidFilePath", "invalidManagedIdentityIdType", "invalidSecret", "missingId", "networkUnavailable", "platformNotSupported", "unableToCreateAzureArc", "unableToCreateCloudShell", "unableToCreateSource", "unableToReadSecretFile", "userAssignedNotAvailableAtRuntime", "wwwAuthenticateHeaderMissing", "wwwAuthenticateHeaderUnsupportedFormat", "MsiEnvironmentVariableUrlMalformedErrorCodes", "ManagedIdentityEnvironmentVariableNames", "ManagedIdentityErrorMessages", "ManagedIdentityErrorCodes.invalidFileExtension", "ManagedIdentityErrorCodes.invalidFilePath", "ManagedIdentityErrorCodes.invalidManagedIdentityIdType", "ManagedIdentityErrorCodes.invalidSecret", "ManagedIdentityErrorCodes.platformNotSupported", "ManagedIdentityErrorCodes.missingId", "ManagedIdentityErrorCodes.MsiEnvironmentVariableUrlMalformedErrorCodes", "ManagedIdentityEnvironmentVariableNames", "ManagedIdentityErrorCodes.networkUnavailable", "ManagedIdentityErrorCodes.unableToCreateAzureArc", "ManagedIdentityErrorCodes.unableToCreateCloudShell", "ManagedIdentityErrorCodes.unableToCreateSource", "ManagedIdentityErrorCodes.unableToReadSecretFile", "ManagedIdentityErrorCodes.userAssignedNotAvailableAtRuntime", "ManagedIdentityErrorCodes.wwwAuthenticateHeaderMissing", "ManagedIdentityErrorCodes.wwwAuthenticateHeaderUnsupportedFormat", "ManagedIdentityError", "_ManagedIdentityError", "AuthError", "errorCode", "createManagedIdentityError", "ManagedIdentityId", "value", "managedIdentityIdParams", "userAssignedClientId", "userAssignedResourceId", "userAssignedObjectId", "createManagedIdentityError", "ManagedIdentityErrorCodes.invalidManagedIdentityIdType", "ManagedIdentityIdType", "DEFAULT_MANAGED_IDENTITY_ID", "NodeAuthErrorMessage", "NodeAuthError", "_NodeAuthError", "AuthError", "errorCode", "errorMessage", "DEFAULT_AUTH_OPTIONS", "Constants", "ProtocolMode", "AzureCloudInstance", "DEFAULT_CACHE_OPTIONS", "DEFAULT_LOGGER_OPTIONS", "LogLevel", "DEFAULT_SYSTEM_OPTIONS", "HttpClient", "DEFAULT_TELEMETRY_OPTIONS", "buildAppConfiguration", "auth", "broker", "cache", "system", "telemetry", "systemOptions", "NodeAuthError", "buildManagedIdentityConfiguration", "clientCapabilities", "managedIdentityIdParams", "managedIdentityId", "ManagedIdentityId", "loggerOptions", "networkClient", "import_crypto", "rnds8Pool", "poolPtr", "rng", "crypto", "regex_default", "validate", "uuid", "regex_default", "validate_default", "byteToHex", "i", "stringify", "arr", "offset", "uuid", "validate_default", "stringify_default", "v4", "options", "buf", "offset", "rnds", "rng", "stringify_default", "v4_default", "GuidGenerator", "uuidv4", "guid", "EncodingUtils", "_EncodingUtils", "str", "encoding", "EncodingTypes", "Constants", "base64Str", "HashUtils", "buffer", "crypto", "Hash", "PkceGenerator", "HashUtils", "verifier", "challenge", "charArr", "maxNumber", "CharSet", "RANDOM_OCTET_SIZE", "byte", "crypto", "index", "Constants", "EncodingUtils", "codeVerifier", "EncodingTypes", "CryptoProvider", "PkceGenerator", "GuidGenerator", "HashUtils", "input", "EncodingUtils", "plainText", "EncodingTypes", "NodeStorage", "CacheManager", "logger", "clientId", "cryptoImpl", "staticAuthorityOptions", "StubPerformanceClient", "func", "cache", "inMemoryCache", "key", "value", "AccountEntity", "CacheHelpers_exports", "accountKey", "account", "idTokenKey", "idToken", "accessTokenKey", "accessToken", "refreshTokenKey", "refreshToken", "appMetadataKey", "appMetadata", "serverTelemetrykey", "serverTelemetryEntity", "serverTelemetryKey", "serverTelemetry", "authorityMetadataEntity", "metadata", "throttlingCacheKey", "throttlingCache", "result", "Deserializer", "Serializer", "currentCacheKey", "credential", "updatedCacheKey", "cacheItem", "defaultSerializedCache", "TokenCache", "storage", "logger", "cachePlugin", "finalState", "Serializer", "cache", "deserializedCache", "Deserializer", "deserializedPersistentStorage", "NodeStorage", "correlationId", "CryptoProvider", "cacheContext", "TokenCacheContext", "homeAccountId", "allAccounts", "accountObj", "localAccountId", "account", "AccountEntity", "GuidGenerator", "cacheSnapshot", "oldState", "currentState", "stateAfterRemoval", "newState", "newKey", "newValue", "newValueNotNull", "newValueIsObject", "newValueIsNotArray", "oldStateNotUndefinedOrNull", "accounts", "accessTokens", "refreshTokens", "idTokens", "appMetadata", "oldKey", "passedInCache", "ClientAssertion", "_ClientAssertion", "assertion", "clientAssertion", "thumbprint", "privateKey", "publicCertificate", "cryptoProvider", "issuer", "jwtAudience", "createClientAuthError", "ClientAuthErrorCodes_exports", "issuedAt", "TimeUtils_exports", "header", "JwtConstants", "thumbprintHeader", "EncodingUtils", "EncodingTypes", "payload", "jwt", "regexToFindCerts", "certs", "matches", "Constants", "name", "version", "UsernamePasswordClient", "BaseClient", "configuration", "request", "reqTimestamp", "TimeUtils_exports", "response", "responseHandler", "ResponseHandler", "authority", "queryParametersString", "endpoint", "UrlString", "requestBody", "headers", "CcsCredentialType", "thumbprint", "parameters", "RequestParameterBuilder_exports", "OAuthResponseType", "GrantType", "correlationId", "clientAssertion", "getClientAssertion", "StringUtils", "UrlUtils_exports", "getAuthCodeRequestUrl", "config", "authority", "request", "logger", "parameters", "Authorize_exports", "RequestParameterBuilder_exports", "NodeConstants", "version", "ProtocolMode", "OAuthResponseType", "ClientApplication", "configuration", "buildAppConfiguration", "CryptoProvider", "Logger", "name", "version", "NodeStorage", "buildStaticAuthorityOptions", "TokenCache", "request", "validRequest", "ResponseMode", "AuthenticationScheme", "discoveredAuthority", "getAuthCodeRequestUrl", "authCodePayLoad", "serverTelemetryManager", "ApiId", "authClientConfig", "authorizationCodeClient", "AuthorizationCodeClient", "e", "AuthError", "refreshTokenClientConfig", "refreshTokenClient", "RefreshTokenClient", "clientConfiguration", "silentFlowClient", "SilentFlowClient", "error", "ClientAuthError", "ClientAuthErrorCodes_exports", "authResponse", "cacheOutcome", "OIDC_DEFAULT_SCOPES", "CacheOutcome", "usernamePasswordClientConfig", "usernamePasswordClient", "UsernamePasswordClient", "state", "cachedState", "NodeAuthError", "createClientAuthError", "logger", "requestCorrelationId", "redirectUri", "NodeConstants", "Constants", "authority", "ClientAssertion", "getClientAssertion", "authRequest", "StringUtils", "apiId", "correlationId", "forceRefresh", "telemetryPayload", "ServerTelemetryManager", "authorityString", "azureRegionConfiguration", "azureCloudOptions", "authorityUrl", "Authority", "authorityOptions", "AuthorityFactory_exports", "LoopbackClient", "successTemplate", "errorTemplate", "NodeAuthError", "resolve", "reject", "http", "req", "res", "url", "CommonConstants", "redirectUri", "parsedUrl", "authCodeResponse", "UrlUtils_exports", "HttpStatus", "address", "port", "Constants", "DeviceCodeClient", "BaseClient", "configuration", "request", "deviceCodeResponse", "reqTimestamp", "TimeUtils_exports", "response", "responseHandler", "ResponseHandler", "queryParametersString", "endpoint", "UrlString", "queryString", "headers", "thumbprint", "parameters", "RequestParameterBuilder_exports", "UrlUtils_exports", "deviceCodeEndpoint", "correlationId", "userCode", "deviceCode", "verificationUri", "expiresIn", "interval", "message", "deviceCodeExpirationTime", "userSpecifiedTimeout", "userSpecifiedCancelFlag", "createClientAuthError", "ClientAuthErrorCodes_exports", "requestBody", "pollingIntervalMilli", "Constants", "createAuthError", "AuthErrorCodes_exports", "GrantType", "StringUtils", "PublicClientApplication", "ClientApplication", "configuration", "ServerTelemetryManager", "Constants", "version", "request", "validRequest", "serverTelemetryManager", "ApiId", "discoveredAuthority", "deviceCodeConfig", "deviceCodeClient", "DeviceCodeClient", "e", "AuthError", "correlationId", "openBrowser", "successTemplate", "errorTemplate", "windowHandle", "customLoopbackClient", "remainingProperties", "brokerRequest", "OIDC_DEFAULT_SCOPES", "AADServerParamKeys_exports", "verifier", "challenge", "loopbackClient", "LoopbackClient", "authCodeResponse", "authCodeListenerError", "authCodeListener", "response", "redirectUri", "ResponseMode", "CodeChallengeMethodValues", "authCodeUrl", "ServerError", "NodeAuthError", "clientInfo", "tokenRequest", "CommonConstants", "signoutRequest", "resolve", "reject", "ticks", "id", "LOOPBACK_SERVER_CONSTANTS", "r", "NodeAuthErrorMessage", "ClientCredentialClient", "BaseClient", "configuration", "appTokenProvider", "request", "cachedAuthenticationResult", "lastCacheOutcome", "CacheOutcome", "config", "cryptoUtils", "authority", "cacheManager", "serverTelemetryManager", "clientConfiguration", "managedIdentityConfiguration", "cacheContext", "TokenCacheContext", "cachedAccessToken", "ScopeSet", "TimeUtils_exports", "DEFAULT_TOKEN_RENEWAL_OFFSET_SEC", "ResponseHandler", "id", "scopeSet", "correlationId", "accessTokenFilter", "Constants", "CredentialType", "accessTokens", "createClientAuthError", "ClientAuthErrorCodes_exports", "refreshAccessToken", "serverTokenResponse", "reqTimestamp", "appTokenPropviderParameters", "appTokenProviderResult", "AuthenticationScheme", "queryParametersString", "endpoint", "UrlString", "requestBody", "headers", "thumbprint", "response", "responseHandler", "parameters", "RequestParameterBuilder_exports", "GrantType", "clientAssertion", "getClientAssertion", "StringUtils", "UrlUtils_exports", "OnBehalfOfClient", "BaseClient", "configuration", "request", "ScopeSet", "cachedAccessToken", "TimeUtils_exports", "CacheOutcome", "createClientAuthError", "ClientAuthErrorCodes_exports", "cachedIdToken", "idTokenClaims", "cachedAccount", "AuthToken_exports", "EncodingUtils", "localAccountId", "accountInfo", "Constants", "ResponseHandler", "atHomeAccountId", "correlationId", "idTokenFilter", "CredentialType", "idTokenMap", "clientId", "authScheme", "AuthenticationScheme", "accessTokenFilter", "accessTokens", "numAccessTokens", "authority", "userAssertionHash", "queryParametersString", "endpoint", "UrlString", "requestBody", "headers", "thumbprint", "reqTimestamp", "response", "responseHandler", "parameters", "RequestParameterBuilder_exports", "GrantType", "AADServerParamKeys_exports", "clientAssertion", "getClientAssertion", "UrlUtils_exports", "ConfidentialClientApplication", "ClientApplication", "configuration", "clientSecretNotEmpty", "clientAssertionNotEmpty", "certificateNotEmpty", "createClientAuthError", "ClientAuthErrorCodes_exports", "ClientAssertion", "provider", "request", "clientAssertion", "getClientAssertion", "NodeConstants", "baseRequest", "validBaseRequest", "scope", "OIDC_DEFAULT_SCOPES", "validRequest", "tenantId", "UrlString", "AADAuthorityConstants", "ENV_MSAL_FORCE_REGION", "MSAL_FORCE_REGION", "region", "azureRegionConfiguration", "REGION_ENVIRONMENT_VARIABLE", "serverTelemetryManager", "ApiId", "discoveredAuthority", "clientCredentialConfig", "clientCredentialClient", "ClientCredentialClient", "e", "AuthError", "onBehalfOfConfig", "oboClient", "OnBehalfOfClient", "isIso8601", "dateString", "date", "HttpClientWithRetries", "httpClientNoRetries", "retryPolicy", "logger", "httpMethod", "url", "options", "HttpMethod", "response", "currentRetry", "HeaderNames", "ManagedIdentityUserAssignedIdQueryParameterNames", "BaseManagedIdentitySource", "logger", "nodeStorage", "networkClient", "cryptoProvider", "disableInternalRetries", "response", "_networkClient", "_networkRequest", "_networkRequestOptions", "refreshIn", "expiresIn", "isIso8601", "TimeUtils_exports", "managedIdentityRequest", "managedIdentityId", "fakeAuthority", "refreshAccessToken", "networkRequest", "ManagedIdentityQueryParameters", "clientCapabilities", "headers", "HeaderNames", "Constants", "networkRequestOptions", "networkClientHelper", "HttpClientWithRetries", "reqTimestamp", "HttpMethod", "error", "AuthError", "createClientAuthError", "ClientAuthErrorCodes_exports", "responseHandler", "ResponseHandler", "serverTokenResponse", "managedIdentityIdType", "isImds", "usesApi2017", "ManagedIdentityIdType", "createManagedIdentityError", "ManagedIdentityErrorCodes.invalidManagedIdentityIdType", "envVariableStringName", "envVariable", "sourceName", "UrlString", "ManagedIdentityErrorCodes\r\n .MsiEnvironmentVariableUrlMalformedErrorCodes", "LinearRetryStrategy", "retryHeader", "minimumDelay", "millisToSleep", "DEFAULT_MANAGED_IDENTITY_MAX_RETRIES", "DEFAULT_MANAGED_IDENTITY_RETRY_DELAY_MS", "DEFAULT_MANAGED_IDENTITY_HTTP_STATUS_CODES_TO_RETRY_ON", "HttpStatus", "DefaultManagedIdentityRetryPolicy", "_DefaultManagedIdentityRetryPolicy", "LinearRetryStrategy", "httpStatusCode", "currentRetry", "logger", "retryAfterHeader", "retryAfterDelay", "resolve", "ManagedIdentityRequestParameters", "httpMethod", "endpoint", "retryPolicy", "DefaultManagedIdentityRetryPolicy", "parameters", "RequestParameterBuilder_exports", "queryParametersString", "UrlUtils_exports", "UrlString", "APP_SERVICE_MSI_API_VERSION", "AppService", "_AppService", "BaseManagedIdentitySource", "logger", "nodeStorage", "networkClient", "cryptoProvider", "disableInternalRetries", "identityEndpoint", "identityHeader", "ManagedIdentityEnvironmentVariableNames", "ManagedIdentitySourceNames", "validatedIdentityEndpoint", "resource", "managedIdentityId", "request", "ManagedIdentityRequestParameters", "HttpMethod", "ManagedIdentityHeaders", "ManagedIdentityQueryParameters", "ManagedIdentityIdType", "ARC_API_VERSION", "DEFAULT_AZURE_ARC_IDENTITY_ENDPOINT", "HIMDS_EXECUTABLE_HELPER_STRING", "SUPPORTED_AZURE_ARC_PLATFORMS", "AZURE_ARC_FILE_DETECTION", "AzureArc", "_AzureArc", "BaseManagedIdentitySource", "logger", "nodeStorage", "networkClient", "cryptoProvider", "disableInternalRetries", "identityEndpoint", "ManagedIdentityEnvironmentVariableNames", "imdsEndpoint", "fileDetectionPath", "fsConstants", "managedIdentityId", "ManagedIdentitySourceNames", "validatedIdentityEndpoint", "ManagedIdentityIdType", "createManagedIdentityError", "ManagedIdentityErrorCodes.unableToCreateAzureArc", "resource", "request", "ManagedIdentityRequestParameters", "HttpMethod", "ManagedIdentityHeaders", "ManagedIdentityQueryParameters", "originalResponse", "networkRequest", "networkRequestOptions", "retryResponse", "HttpStatus", "wwwAuthHeader", "ManagedIdentityErrorCodes.wwwAuthenticateHeaderMissing", "ManagedIdentityErrorCodes.wwwAuthenticateHeaderUnsupportedFormat", "secretFilePath", "ManagedIdentityErrorCodes.platformNotSupported", "expectedSecretFilePath", "fileName", "path", "ManagedIdentityErrorCodes.invalidFileExtension", "ManagedIdentityErrorCodes.invalidFilePath", "secretFileSize", "ManagedIdentityErrorCodes.unableToReadSecretFile", "AZURE_ARC_SECRET_FILE_MAX_SIZE_BYTES", "ManagedIdentityErrorCodes.invalidSecret", "secret", "EncodingTypes", "authHeaderValue", "error", "AuthError", "createClientAuthError", "ClientAuthErrorCodes_exports", "CloudShell", "_CloudShell", "BaseManagedIdentitySource", "logger", "nodeStorage", "networkClient", "cryptoProvider", "disableInternalRetries", "msiEndpoint", "ManagedIdentityEnvironmentVariableNames", "managedIdentityId", "ManagedIdentitySourceNames", "validatedMsiEndpoint", "ManagedIdentityIdType", "createManagedIdentityError", "ManagedIdentityErrorCodes.unableToCreateCloudShell", "resource", "request", "ManagedIdentityRequestParameters", "HttpMethod", "ManagedIdentityHeaders", "ManagedIdentityQueryParameters", "ExponentialRetryStrategy", "minExponentialBackoff", "maxExponentialBackoff", "exponentialDeltaBackoff", "currentRetry", "HTTP_STATUS_400_CODES_FOR_EXPONENTIAL_STRATEGY", "HttpStatus", "EXPONENTIAL_STRATEGY_NUM_RETRIES", "LINEAR_STRATEGY_NUM_RETRIES", "MIN_EXPONENTIAL_BACKOFF_MS", "MAX_EXPONENTIAL_BACKOFF_MS", "EXPONENTIAL_DELTA_BACKOFF_MS", "HTTP_STATUS_GONE_RETRY_AFTER_MS", "ImdsRetryPolicy", "_ImdsRetryPolicy", "ExponentialRetryStrategy", "value", "httpStatusCode", "currentRetry", "logger", "retryAfterDelay", "resolve", "IMDS_TOKEN_PATH", "DEFAULT_IMDS_ENDPOINT", "IMDS_API_VERSION", "Imds", "_Imds", "BaseManagedIdentitySource", "logger", "nodeStorage", "networkClient", "cryptoProvider", "disableInternalRetries", "identityEndpoint", "validatedIdentityEndpoint", "ManagedIdentityEnvironmentVariableNames", "ManagedIdentitySourceNames", "resource", "managedIdentityId", "request", "ManagedIdentityRequestParameters", "HttpMethod", "ManagedIdentityHeaders", "ManagedIdentityQueryParameters", "ManagedIdentityIdType", "ImdsRetryPolicy", "SERVICE_FABRIC_MSI_API_VERSION", "ServiceFabric", "_ServiceFabric", "BaseManagedIdentitySource", "logger", "nodeStorage", "networkClient", "cryptoProvider", "disableInternalRetries", "identityEndpoint", "identityHeader", "ManagedIdentityEnvironmentVariableNames", "identityServerThumbprint", "managedIdentityId", "ManagedIdentitySourceNames", "validatedIdentityEndpoint", "ManagedIdentityIdType", "resource", "request", "ManagedIdentityRequestParameters", "HttpMethod", "ManagedIdentityHeaders", "ManagedIdentityQueryParameters", "MACHINE_LEARNING_MSI_API_VERSION", "MANAGED_IDENTITY_MACHINE_LEARNING_UNSUPPORTED_ID_TYPE_ERROR", "ManagedIdentitySourceNames", "MachineLearning", "_MachineLearning", "BaseManagedIdentitySource", "logger", "nodeStorage", "networkClient", "cryptoProvider", "disableInternalRetries", "msiEndpoint", "secret", "ManagedIdentityEnvironmentVariableNames", "validatedMsiEndpoint", "resource", "managedIdentityId", "request", "ManagedIdentityRequestParameters", "HttpMethod", "ManagedIdentityHeaders", "ManagedIdentityQueryParameters", "ManagedIdentityIdType", "ManagedIdentityUserAssignedIdQueryParameterNames", "ManagedIdentityClient", "_ManagedIdentityClient", "logger", "nodeStorage", "networkClient", "cryptoProvider", "disableInternalRetries", "managedIdentityRequest", "managedIdentityId", "fakeAuthority", "refreshAccessToken", "environmentVariables", "environmentVariable", "ServiceFabric", "ManagedIdentitySourceNames", "AppService", "MachineLearning", "CloudShell", "AzureArc", "source", "Imds", "createManagedIdentityError", "ManagedIdentityErrorCodes.unableToCreateSource", "SOURCES_THAT_SUPPORT_TOKEN_REVOCATION", "ManagedIdentitySourceNames", "ManagedIdentityApplication", "_ManagedIdentityApplication", "configuration", "buildManagedIdentityConfiguration", "Logger", "name", "version", "fakeStatusAuthorityOptions", "Constants", "NodeStorage", "DEFAULT_CRYPTO_IMPLEMENTATION", "CryptoProvider", "fakeAuthorityOptions", "ProtocolMode", "DEFAULT_AUTHORITY_FOR_MANAGED_IDENTITY", "Authority", "ClientCredentialClient", "ManagedIdentityClient", "HashUtils", "managedIdentityRequestParams", "createClientConfigurationError", "ClientConfigurationErrorCodes_exports", "managedIdentityRequest", "cachedAuthenticationResult", "lastCacheOutcome", "sourceName", "revokedTokenSha256Hash", "EncodingTypes", "CacheOutcome", "managedIdentityId", "fakeAuthority", "refreshAccessToken", "DistributedCachePlugin", "client", "partitionManager", "cacheContext", "partitionKey", "cacheData", "kvStore", "accountEntities", "value", "AccountEntity", "accountEntity", "AbortError", "message", "logger", "credentialLogger", "LatestAuthenticationRecordVersion", "ensureValidMsalToken", "scopes", "msalToken", "getTokenOptions", "error", "message", "AuthenticationRequiredError", "getAuthorityHost", "options", "authorityHost", "isNodeLike", "DefaultAuthorityHost", "getAuthority", "tenantId", "host", "getKnownAuthorities", "disableInstanceDiscovery", "defaultLoggerCallback", "credLogger", "platform", "isNode", "level", "containsPii", "dist_exports", "getMSALLogLevel", "logLevel", "handleMsalError", "scopes", "error", "getTokenOptions", "msalError", "logger", "formatError", "CredentialUnavailableError", "AbortError", "AuthenticationRequiredError", "publicToMsal", "account", "msalToPublic", "clientId", "_a", "DefaultAuthority", "DefaultTenantId", "LatestAuthenticationRecordVersion", "DEFAULT_CLIENT_MAX_RETRY_INTERVAL", "msiName", "logger", "credentialLogger", "RegionalAuthority", "calculateRegionalAuthority", "regionalAuthority", "azureRegion", "_b", "_a", "msalLogger", "credentialLogger", "generateMsalConfiguration", "clientId", "tenantId", "msalClientOptions", "resolvedTenant", "resolveTenantId", "_a", "authority", "getAuthority", "getAuthorityHost", "httpClient", "IdentityClient", "getKnownAuthorities", "defaultLoggerCallback", "_b", "getMSALLogLevel", "getLogLevel", "_c", "createMsalClient", "createMsalClientOptions", "state", "publicToMsal", "msalPlugins", "publicApps", "getPublicApp", "options", "appKey", "publicClientApp", "cachePlugin", "PublicClientApplication", "confidentialApps", "getConfidentialApp", "confidentialClientApp", "ConfidentialClientApplication", "getTokenSilent", "app", "scopes", "AuthenticationRequiredError", "silentRequest", "err", "handleMsalError", "calculateRequestAuthority", "withSilentAuthentication", "msalApp", "onAuthenticationRequired", "response", "e", "ensureValidMsalToken", "formatSuccess", "getTokenByClientSecret", "clientSecret", "calculateRegionalAuthority", "getTokenByClientAssertion", "clientAssertion", "getTokenByClientCertificate", "certificate", "getTokenByDeviceCode", "deviceCodeCallback", "requestOptions", "deviceCodeRequest", "getTokenByUsernamePassword", "username", "password", "getActiveAccount", "msalToPublic", "getTokenByAuthorizationCode", "redirectUri", "authorizationCode", "getTokenOnBehalfOf", "userAssertionToken", "clientCredentials", "getTokenByInteractiveRequest", "getBrokeredToken", "useDefaultBrokerAccount", "interactiveRequest", "createBaseInteractiveRequest", "url", "logger", "credentialLogger", "credentialName", "logger", "credentialLogger", "credentialName", "msiName", "logger", "credentialLogger", "logger", "credentialLogger", "ensureScopes", "scopes", "ensureValidScopeForDevTimeCreds", "scope", "logger", "error", "formatError", "getScopeResource", "import_child_process", "checkSubscription", "logger", "subscription", "error", "formatError", "logger", "credentialLogger", "cliCredentialInternals", "systemRoot", "resource", "tenantId", "subscription", "timeout", "tenantSection", "subscriptionSection", "resolve", "reject", "child_process", "error", "stdout", "stderr", "err", "AzureCliCredential", "options", "checkTenantId", "checkSubscription", "resolveAdditionallyAllowedTenantIds", "scopes", "processMultiTenantRequest", "scope", "tracingClient", "ensureValidScopeForDevTimeCreds", "getScopeResource", "obj", "specificScope", "_a", "isLoginError", "_b", "_c", "_d", "CredentialUnavailableError", "formatError", "responseData", "response", "formatSuccess", "e", "rawResponse", "token", "expiresOnTimestamp", "logger", "credentialLogger", "childProcess", "processUtils", "file", "params", "options", "resolve", "reject", "error", "stdout", "stderr", "logger", "credentialLogger", "isWindows", "formatCommand", "commandName", "runCommands", "commands", "timeout", "results", "command", "file", "parameters", "result", "processUtils", "powerShellErrors", "powerShellPublicErrorMessages", "isLoginError", "err", "isNotInstalledError", "commandStack", "AzurePowerShellCredential", "options", "checkTenantId", "resolveAdditionallyAllowedTenantIds", "resource", "tenantId", "powerShellCommand", "parseJsonToken", "scopes", "tracingClient", "processMultiTenantRequest", "scope", "ensureValidScopeForDevTimeCreds", "getScopeResource", "response", "formatSuccess", "error", "CredentialUnavailableError", "formatError", "jsonRegex", "matches", "resultWithoutToken", "item", "jsonContent", "logger", "credentialLogger", "ChainedTokenCredential", "sources", "scopes", "options", "token", "successfulCredential", "errors", "tracingClient", "updatedOptions", "i", "err", "formatError", "AggregateAuthenticationError", "formatSuccess", "CredentialUnavailableError", "import_node_crypto", "import_promises", "credentialName", "logger", "credentialLogger", "ClientCertificateCredential", "tenantId", "clientId", "certificatePathOrConfiguration", "options", "resolveAdditionallyAllowedTenantIds", "certificate", "certificatePath", "createMsalClient", "scopes", "tracingClient", "newOptions", "processMultiTenantRequest", "arrayScopes", "parts", "parseCertificate", "_a", "privateKey", "certificateConfiguration", "sendCertificateChain", "certificateContents", "x5c", "certificatePattern", "publicKeys", "match", "thumbprint", "thumbprintSha256", "logger", "credentialLogger", "ClientSecretCredential", "tenantId", "clientId", "clientSecret", "options", "CredentialUnavailableError", "resolveAdditionallyAllowedTenantIds", "createMsalClient", "scopes", "tracingClient", "newOptions", "processMultiTenantRequest", "arrayScopes", "ensureScopes", "logger", "credentialLogger", "UsernamePasswordCredential", "tenantId", "clientId", "username", "password", "options", "CredentialUnavailableError", "resolveAdditionallyAllowedTenantIds", "createMsalClient", "scopes", "tracingClient", "newOptions", "processMultiTenantRequest", "arrayScopes", "ensureScopes", "AllSupportedEnvironmentVariables", "getAdditionallyAllowedTenants", "_a", "credentialName", "logger", "credentialLogger", "getSendCertificateChain", "sendCertificateChain", "result", "EnvironmentCredential", "options", "assigned", "processEnvVars", "tenantId", "clientId", "clientSecret", "additionallyAllowedTenantIds", "newOptions", "checkTenantId", "ClientSecretCredential", "certificatePath", "certificatePassword", "ClientCertificateCredential", "username", "password", "UsernamePasswordCredential", "scopes", "tracingClient", "formatSuccess", "err", "authenticationError", "AuthenticationError", "formatError", "CredentialUnavailableError", "logger", "credentialLogger", "logger", "credentialLogger", "logger", "credentialLogger", "credentialName", "logger", "credentialLogger", "logger", "credentialLogger", "credentialName", "logger", "credentialLogger", "import_core", "userAgentPrefix", "dummySubscriptionId", "endpoints", "createDeploymentClient", "config", "subscriptionId", "tenantId", "ResourceManagementClient", "getCredential", "debugLoggingPolicy", "createStacksClient", "request", "next", "parsed", "response", "correlationId", "activityId", "ChainedTokenCredential", "EnvironmentCredential", "AzureCliCredential", "AzurePowerShellCredential", "changeTypeToColor", "propertyChangeTypeToColor", "changeTypeToSymbol", "propertyChangeTypeToSymbol", "changeTypeToWeight", "propertyChangeTypeToWeight", "propertyChangeToChangeType", "formatWhatIfOperationResult", "whatIfOperationResult", "colorMode", "builder", "ColorStringBuilder", "formatNoiseNotice", "formatChangeTypeLegend", "formatResourceChanges", "formatResourceChangesStats", "resourceChanges", "changeTypeSet", "populateChangeTypeSet", "propertyChanges", "propertyChange", "propertyChangeType", "propertyChangeToChangeType", "resourceChange", "changeTypes", "a", "b", "changeTypeToWeight", "changeType", "changeTypeSymbol", "changeTypeToSymbol", "changeTypeColor", "changeTypeToColor", "formatIndent", "sortedResourceChanges", "resourceChangesByChangeType", "groupBy", "x", "changeTypeStats", "entries", "key", "value", "formatChangeTypeCount", "count", "numScopes", "getScopeUppercase", "resourceChangesByScope", "resourceChangesInScope", "scope", "getScope", "formatResourceChangesInScope", "grouped", "isLast", "formatResourceChange", "relativeResourceId", "getRelativeResourceId", "apiVersion", "getApiVersion", "formatResourceChangePath", "formatJsonValue", "delta", "formatPropertyChanges", "sortChanges", "resourceChangeId", "formatPath", "formatResourceChangeType", "formatResourceChangeApiVersion", "changeSymbol", "indentLevel", "maxPathLength", "getMaxPathLengthFromPropertyChanges", "formatPropertyChange", "before", "after", "children", "formatPropertyChangePath", "formatPropertyCreate", "formatPropertyDelete", "formatPropertyModify", "formatPropertyArrayChange", "formatPropertyNoEffect", "path", "paddingWidth", "isNonEmptyArray", "isNonEmptyObject", "formatPropertyChangeType", "formatColon", "propertyChangeSymbol", "propertyChangeTypeToSymbol", "propertyChangeColor", "propertyChangeTypeToColor", "fixSdkDeltaFormattingBug", "fixedString", "objValue", "keys", "nextChar", "isLeaf", "parentPropertyChange", "splitResourceId", "pathLengths", "shouldConsiderPropertyChangePath", "pathLength", "formatJsonPath", "formatLeaf", "formatNonEmptyArray", "formatNonEmptyObject", "getMaxPathLengthFromArray", "childValue", "index", "childPath", "isRoot", "getMaxPathLengthFromObject", "formattedChildPath", "formatHead", "formatTail", "maxLengthIndex", "currentPathLength", "changes", "propertyChangeTypeToWeight", "array", "getKey", "result", "item", "record", "resourceId", "providers", "providersIndex", "rgMatches", "defaultName", "CustomPollingError", "details", "response", "getCreateOperationOptions", "rawResponse", "flatResponse", "getDeploymentClient", "config", "scope", "tenantId", "subscriptionId", "createDeploymentClient", "getStacksClient", "createStacksClient", "execute", "files", "validateFileScope", "tryWithErrorHandling", "result", "deploymentCreate", "setCreateOutputs", "error", "logError", "deploymentValidate", "logDiagnostics", "deploymentWhatIf", "formatted", "formatWhatIfOperationResult", "logInfoRaw", "stackCreate", "stackValidate", "stackDelete", "RestError", "correlationId", "responseBody", "outputs", "key", "output", "x", "name", "client", "deployment", "getDeployment", "requireLocation", "deploymentName", "templateContents", "templateSpecId", "parametersContents", "stack", "getStack", "deletionOptions", "getStackDeletionOptions", "action", "onError", "ex", "getScope", "template", "bicepGenerated", "schema", "diagnostics", "logInfo", "diagnostic", "message", "logWarning", "run", "config", "parseConfig", "logInfo", "files", "getTemplateAndParameters", "execute", "error", "message", "run"] -} diff --git a/dist/index.mjs b/dist/index.mjs new file mode 100644 index 0000000..d30aaa0 --- /dev/null +++ b/dist/index.mjs @@ -0,0 +1,327 @@ +import{createRequire as e}from"node:module";import t from"crypto";import{promisify as n}from"node:util";import r from"node:os";import i from"node:process";import{Buffer as a}from"node:buffer";import o from"node:path";import{fileURLToPath as s}from"node:url";import c,{execFile as l}from"node:child_process";import u,{constants as d}from"node:fs/promises";import f from"node:fs";var p=Object.create,m=Object.defineProperty,h=Object.getOwnPropertyDescriptor,g=Object.getOwnPropertyNames,_=Object.getPrototypeOf,v=Object.prototype.hasOwnProperty,y=(e,t)=>()=>(e&&(t=e(e=0)),t),b=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),x=(e,t)=>{let n={};for(var r in e)m(n,r,{get:e[r],enumerable:!0});return t&&m(n,Symbol.toStringTag,{value:`Module`}),n},S=(e,t,n,r)=>{if(t&&typeof t==`object`||typeof t==`function`)for(var i=g(t),a=0,o=i.length,s;at[e]).bind(null,s),enumerable:!(r=h(t,s))||r.enumerable});return e},C=(e,t,n)=>(n=e==null?{}:p(_(e)),S(t||!e||!e.__esModule?m(n,`default`,{value:e,enumerable:!0}):n,e)),w=e=>v.call(e,`module.exports`)?e[`module.exports`]:S(m({},`__esModule`,{value:!0}),e),T=e(import.meta.url),E=b((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.toCommandProperties=e.toCommandValue=void 0;function t(e){return e==null?``:typeof e==`string`||e instanceof String?e:JSON.stringify(e)}e.toCommandValue=t;function n(e){return Object.keys(e).length?{title:e.title,file:e.file,line:e.startLine,endLine:e.endLine,col:e.startColumn,endColumn:e.endColumn}:{}}e.toCommandProperties=n})),D=b((e=>{var t=e&&e.__createBinding||(Object.create?(function(e,t,n,r){r===void 0&&(r=n);var i=Object.getOwnPropertyDescriptor(t,n);(!i||(`get`in i?!t.__esModule:i.writable||i.configurable))&&(i={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,r,i)}):(function(e,t,n,r){r===void 0&&(r=n),e[r]=t[n]})),n=e&&e.__setModuleDefault||(Object.create?(function(e,t){Object.defineProperty(e,`default`,{enumerable:!0,value:t})}):function(e,t){e.default=t}),r=e&&e.__importStar||function(e){if(e&&e.__esModule)return e;var r={};if(e!=null)for(var i in e)i!==`default`&&Object.prototype.hasOwnProperty.call(e,i)&&t(r,e,i);return n(r,e),r};Object.defineProperty(e,`__esModule`,{value:!0}),e.issue=e.issueCommand=void 0;let i=r(T(`os`)),a=E();function o(e,t,n){let r=new c(e,t,n);process.stdout.write(r.toString()+i.EOL)}e.issueCommand=o;function s(e,t=``){o(e,{},t)}e.issue=s;var c=class{constructor(e,t,n){e||=`missing.command`,this.command=e,this.properties=t,this.message=n}toString(){let e=`::`+this.command;if(this.properties&&Object.keys(this.properties).length>0){e+=` `;let t=!0;for(let n in this.properties)if(this.properties.hasOwnProperty(n)){let r=this.properties[n];r&&(t?t=!1:e+=`,`,e+=`${n}=${u(r)}`)}}return e+=`::${l(this.message)}`,e}};function l(e){return(0,a.toCommandValue)(e).replace(/%/g,`%25`).replace(/\r/g,`%0D`).replace(/\n/g,`%0A`)}function u(e){return(0,a.toCommandValue)(e).replace(/%/g,`%25`).replace(/\r/g,`%0D`).replace(/\n/g,`%0A`).replace(/:/g,`%3A`).replace(/,/g,`%2C`)}})),O=b((e=>{var t=e&&e.__createBinding||(Object.create?(function(e,t,n,r){r===void 0&&(r=n);var i=Object.getOwnPropertyDescriptor(t,n);(!i||(`get`in i?!t.__esModule:i.writable||i.configurable))&&(i={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,r,i)}):(function(e,t,n,r){r===void 0&&(r=n),e[r]=t[n]})),n=e&&e.__setModuleDefault||(Object.create?(function(e,t){Object.defineProperty(e,`default`,{enumerable:!0,value:t})}):function(e,t){e.default=t}),r=e&&e.__importStar||function(e){if(e&&e.__esModule)return e;var r={};if(e!=null)for(var i in e)i!==`default`&&Object.prototype.hasOwnProperty.call(e,i)&&t(r,e,i);return n(r,e),r};Object.defineProperty(e,`__esModule`,{value:!0}),e.prepareKeyValueMessage=e.issueFileCommand=void 0;let i=r(T(`crypto`)),a=r(T(`fs`)),o=r(T(`os`)),s=E();function c(e,t){let n=process.env[`GITHUB_${e}`];if(!n)throw Error(`Unable to find environment variable for file command ${e}`);if(!a.existsSync(n))throw Error(`Missing file at path: ${n}`);a.appendFileSync(n,`${(0,s.toCommandValue)(t)}${o.EOL}`,{encoding:`utf8`})}e.issueFileCommand=c;function l(e,t){let n=`ghadelimiter_${i.randomUUID()}`,r=(0,s.toCommandValue)(t);if(e.includes(n))throw Error(`Unexpected input: name should not contain the delimiter "${n}"`);if(r.includes(n))throw Error(`Unexpected input: value should not contain the delimiter "${n}"`);return`${e}<<${n}${o.EOL}${r}${o.EOL}${n}`}e.prepareKeyValueMessage=l})),k=b((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.checkBypass=e.getProxyUrl=void 0;function t(e){let t=e.protocol===`https:`;if(n(e))return;let r=(()=>t?process.env.https_proxy||process.env.HTTPS_PROXY:process.env.http_proxy||process.env.HTTP_PROXY)();if(r)try{return new i(r)}catch{if(!r.startsWith(`http://`)&&!r.startsWith(`https://`))return new i(`http://${r}`)}else return}e.getProxyUrl=t;function n(e){if(!e.hostname)return!1;let t=e.hostname;if(r(t))return!0;let n=process.env.no_proxy||process.env.NO_PROXY||``;if(!n)return!1;let i;e.port?i=Number(e.port):e.protocol===`http:`?i=80:e.protocol===`https:`&&(i=443);let a=[e.hostname.toUpperCase()];typeof i==`number`&&a.push(`${a[0]}:${i}`);for(let e of n.split(`,`).map(e=>e.trim().toUpperCase()).filter(e=>e))if(e===`*`||a.some(t=>t===e||t.endsWith(`.${e}`)||e.startsWith(`.`)&&t.endsWith(`${e}`)))return!0;return!1}e.checkBypass=n;function r(e){let t=e.toLowerCase();return t===`localhost`||t.startsWith(`127.`)||t.startsWith(`[::1]`)||t.startsWith(`[0:0:0:0:0:0:0:1]`)}var i=class extends URL{constructor(e,t){super(e,t),this._decodedUsername=decodeURIComponent(super.username),this._decodedPassword=decodeURIComponent(super.password)}get username(){return this._decodedUsername}get password(){return this._decodedPassword}}})),A=b((e=>{T(`net`);var t=T(`tls`),n=T(`http`),r=T(`https`),i=T(`events`);T(`assert`);var a=T(`util`);e.httpOverHttp=o,e.httpsOverHttp=s,e.httpOverHttps=c,e.httpsOverHttps=l;function o(e){var t=new u(e);return t.request=n.request,t}function s(e){var t=new u(e);return t.request=n.request,t.createSocket=d,t.defaultPort=443,t}function c(e){var t=new u(e);return t.request=r.request,t}function l(e){var t=new u(e);return t.request=r.request,t.createSocket=d,t.defaultPort=443,t}function u(e){var t=this;t.options=e||{},t.proxyOptions=t.options.proxy||{},t.maxSockets=t.options.maxSockets||n.Agent.defaultMaxSockets,t.requests=[],t.sockets=[],t.on(`free`,function(e,n,r,i){for(var a=f(n,r,i),o=0,s=t.requests.length;o=this.maxSockets){i.requests.push(a);return}i.createSocket(a,function(t){t.on(`free`,n),t.on(`close`,r),t.on(`agentRemove`,r),e.onSocket(t);function n(){i.emit(`free`,t,a)}function r(e){i.removeSocket(t),t.removeListener(`free`,n),t.removeListener(`close`,r),t.removeListener(`agentRemove`,r)}})},u.prototype.createSocket=function(e,t){var n=this,r={};n.sockets.push(r);var i=p({},n.proxyOptions,{method:`CONNECT`,path:e.host+`:`+e.port,agent:!1,headers:{host:e.host+`:`+e.port}});e.localAddress&&(i.localAddress=e.localAddress),i.proxyAuth&&(i.headers=i.headers||{},i.headers[`Proxy-Authorization`]=`Basic `+new Buffer(i.proxyAuth).toString(`base64`)),m(`making CONNECT request`);var a=n.request(i);a.useChunkedEncodingByDefault=!1,a.once(`response`,o),a.once(`upgrade`,s),a.once(`connect`,c),a.once(`error`,l),a.end();function o(e){e.upgrade=!0}function s(e,t,n){process.nextTick(function(){c(e,t,n)})}function c(i,o,s){if(a.removeAllListeners(),o.removeAllListeners(),i.statusCode!==200){m(`tunneling socket could not be established, statusCode=%d`,i.statusCode),o.destroy();var c=Error(`tunneling socket could not be established, statusCode=`+i.statusCode);c.code=`ECONNRESET`,e.request.emit(`error`,c),n.removeSocket(r);return}if(s.length>0){m(`got illegal response body from proxy`),o.destroy();var c=Error(`got illegal response body from proxy`);c.code=`ECONNRESET`,e.request.emit(`error`,c),n.removeSocket(r);return}return m(`tunneling connection has established`),n.sockets[n.sockets.indexOf(r)]=o,t(o)}function l(t){a.removeAllListeners(),m(`tunneling socket could not be established, cause=%s +`,t.message,t.stack);var i=Error(`tunneling socket could not be established, cause=`+t.message);i.code=`ECONNRESET`,e.request.emit(`error`,i),n.removeSocket(r)}},u.prototype.removeSocket=function(e){var t=this.sockets.indexOf(e);if(t!==-1){this.sockets.splice(t,1);var n=this.requests.shift();n&&this.createSocket(n,function(e){n.request.onSocket(e)})}};function d(e,n){var r=this;u.prototype.createSocket.call(r,e,function(i){var a=e.request.getHeader(`host`),o=p({},r.options,{socket:i,servername:a?a.replace(/:.*$/,``):e.host}),s=t.connect(0,o);r.sockets[r.sockets.indexOf(i)]=s,n(s)})}function f(e,t,n){return typeof e==`string`?{host:e,port:t,localAddress:n}:e}function p(e){for(var t=1,n=arguments.length;t{t.exports=A()})),M=b(((e,t)=>{t.exports={kClose:Symbol(`close`),kDestroy:Symbol(`destroy`),kDispatch:Symbol(`dispatch`),kUrl:Symbol(`url`),kWriting:Symbol(`writing`),kResuming:Symbol(`resuming`),kQueue:Symbol(`queue`),kConnect:Symbol(`connect`),kConnecting:Symbol(`connecting`),kHeadersList:Symbol(`headers list`),kKeepAliveDefaultTimeout:Symbol(`default keep alive timeout`),kKeepAliveMaxTimeout:Symbol(`max keep alive timeout`),kKeepAliveTimeoutThreshold:Symbol(`keep alive timeout threshold`),kKeepAliveTimeoutValue:Symbol(`keep alive timeout`),kKeepAlive:Symbol(`keep alive`),kHeadersTimeout:Symbol(`headers timeout`),kBodyTimeout:Symbol(`body timeout`),kServerName:Symbol(`server name`),kLocalAddress:Symbol(`local address`),kHost:Symbol(`host`),kNoRef:Symbol(`no ref`),kBodyUsed:Symbol(`used`),kRunning:Symbol(`running`),kBlocking:Symbol(`blocking`),kPending:Symbol(`pending`),kSize:Symbol(`size`),kBusy:Symbol(`busy`),kQueued:Symbol(`queued`),kFree:Symbol(`free`),kConnected:Symbol(`connected`),kClosed:Symbol(`closed`),kNeedDrain:Symbol(`need drain`),kReset:Symbol(`reset`),kDestroyed:Symbol.for(`nodejs.stream.destroyed`),kMaxHeadersSize:Symbol(`max headers size`),kRunningIdx:Symbol(`running index`),kPendingIdx:Symbol(`pending index`),kError:Symbol(`error`),kClients:Symbol(`clients`),kClient:Symbol(`client`),kParser:Symbol(`parser`),kOnDestroyed:Symbol(`destroy callbacks`),kPipelining:Symbol(`pipelining`),kSocket:Symbol(`socket`),kHostHeader:Symbol(`host header`),kConnector:Symbol(`connector`),kStrictContentLength:Symbol(`strict content length`),kMaxRedirections:Symbol(`maxRedirections`),kMaxRequests:Symbol(`maxRequestsPerClient`),kProxy:Symbol(`proxy agent options`),kCounter:Symbol(`socket request counter`),kInterceptors:Symbol(`dispatch interceptors`),kMaxResponseSize:Symbol(`max response size`),kHTTP2Session:Symbol(`http2Session`),kHTTP2SessionState:Symbol(`http2Session state`),kHTTP2BuildRequest:Symbol(`http2 build request`),kHTTP1BuildRequest:Symbol(`http1 build request`),kHTTP2CopyHeaders:Symbol(`http2 copy headers`),kHTTPConnVersion:Symbol(`http connection version`),kRetryHandlerDefaultRetry:Symbol(`retry agent default retry`),kConstruct:Symbol(`constructable`)}})),N=b(((e,t)=>{var n=class extends Error{constructor(e){super(e),this.name=`UndiciError`,this.code=`UND_ERR`}},r=class e extends n{constructor(t){super(t),Error.captureStackTrace(this,e),this.name=`ConnectTimeoutError`,this.message=t||`Connect Timeout Error`,this.code=`UND_ERR_CONNECT_TIMEOUT`}},i=class e extends n{constructor(t){super(t),Error.captureStackTrace(this,e),this.name=`HeadersTimeoutError`,this.message=t||`Headers Timeout Error`,this.code=`UND_ERR_HEADERS_TIMEOUT`}},a=class e extends n{constructor(t){super(t),Error.captureStackTrace(this,e),this.name=`HeadersOverflowError`,this.message=t||`Headers Overflow Error`,this.code=`UND_ERR_HEADERS_OVERFLOW`}},o=class e extends n{constructor(t){super(t),Error.captureStackTrace(this,e),this.name=`BodyTimeoutError`,this.message=t||`Body Timeout Error`,this.code=`UND_ERR_BODY_TIMEOUT`}},s=class e extends n{constructor(t,n,r,i){super(t),Error.captureStackTrace(this,e),this.name=`ResponseStatusCodeError`,this.message=t||`Response Status Code Error`,this.code=`UND_ERR_RESPONSE_STATUS_CODE`,this.body=i,this.status=n,this.statusCode=n,this.headers=r}},c=class e extends n{constructor(t){super(t),Error.captureStackTrace(this,e),this.name=`InvalidArgumentError`,this.message=t||`Invalid Argument Error`,this.code=`UND_ERR_INVALID_ARG`}},l=class e extends n{constructor(t){super(t),Error.captureStackTrace(this,e),this.name=`InvalidReturnValueError`,this.message=t||`Invalid Return Value Error`,this.code=`UND_ERR_INVALID_RETURN_VALUE`}},u=class e extends n{constructor(t){super(t),Error.captureStackTrace(this,e),this.name=`AbortError`,this.message=t||`Request aborted`,this.code=`UND_ERR_ABORTED`}},d=class e extends n{constructor(t){super(t),Error.captureStackTrace(this,e),this.name=`InformationalError`,this.message=t||`Request information`,this.code=`UND_ERR_INFO`}},f=class e extends n{constructor(t){super(t),Error.captureStackTrace(this,e),this.name=`RequestContentLengthMismatchError`,this.message=t||`Request body length does not match content-length header`,this.code=`UND_ERR_REQ_CONTENT_LENGTH_MISMATCH`}},p=class e extends n{constructor(t){super(t),Error.captureStackTrace(this,e),this.name=`ResponseContentLengthMismatchError`,this.message=t||`Response body length does not match content-length header`,this.code=`UND_ERR_RES_CONTENT_LENGTH_MISMATCH`}},m=class e extends n{constructor(t){super(t),Error.captureStackTrace(this,e),this.name=`ClientDestroyedError`,this.message=t||`The client is destroyed`,this.code=`UND_ERR_DESTROYED`}},h=class e extends n{constructor(t){super(t),Error.captureStackTrace(this,e),this.name=`ClientClosedError`,this.message=t||`The client is closed`,this.code=`UND_ERR_CLOSED`}},g=class e extends n{constructor(t,n){super(t),Error.captureStackTrace(this,e),this.name=`SocketError`,this.message=t||`Socket error`,this.code=`UND_ERR_SOCKET`,this.socket=n}},_=class e extends n{constructor(t){super(t),Error.captureStackTrace(this,e),this.name=`NotSupportedError`,this.message=t||`Not supported error`,this.code=`UND_ERR_NOT_SUPPORTED`}},v=class extends n{constructor(e){super(e),Error.captureStackTrace(this,_),this.name=`MissingUpstreamError`,this.message=e||`No upstream has been added to the BalancedPool`,this.code=`UND_ERR_BPL_MISSING_UPSTREAM`}};t.exports={HTTPParserError:class e extends Error{constructor(t,n,r){super(t),Error.captureStackTrace(this,e),this.name=`HTTPParserError`,this.code=n?`HPE_${n}`:void 0,this.data=r?r.toString():void 0}},UndiciError:n,HeadersTimeoutError:i,HeadersOverflowError:a,BodyTimeoutError:o,RequestContentLengthMismatchError:f,ConnectTimeoutError:r,ResponseStatusCodeError:s,InvalidArgumentError:c,InvalidReturnValueError:l,RequestAbortedError:u,ClientDestroyedError:m,ClientClosedError:h,InformationalError:d,SocketError:g,NotSupportedError:_,ResponseContentLengthMismatchError:p,BalancedPoolMissingUpstreamError:v,ResponseExceededMaxSizeError:class e extends n{constructor(t){super(t),Error.captureStackTrace(this,e),this.name=`ResponseExceededMaxSizeError`,this.message=t||`Response content exceeded max size`,this.code=`UND_ERR_RES_EXCEEDED_MAX_SIZE`}},RequestRetryError:class e extends n{constructor(t,n,{headers:r,data:i}){super(t),Error.captureStackTrace(this,e),this.name=`RequestRetryError`,this.message=t||`Request retry error`,this.code=`UND_ERR_REQ_RETRY`,this.statusCode=n,this.data=i,this.headers=r}}}})),ee=b(((e,t)=>{let n={},r=`Accept.Accept-Encoding.Accept-Language.Accept-Ranges.Access-Control-Allow-Credentials.Access-Control-Allow-Headers.Access-Control-Allow-Methods.Access-Control-Allow-Origin.Access-Control-Expose-Headers.Access-Control-Max-Age.Access-Control-Request-Headers.Access-Control-Request-Method.Age.Allow.Alt-Svc.Alt-Used.Authorization.Cache-Control.Clear-Site-Data.Connection.Content-Disposition.Content-Encoding.Content-Language.Content-Length.Content-Location.Content-Range.Content-Security-Policy.Content-Security-Policy-Report-Only.Content-Type.Cookie.Cross-Origin-Embedder-Policy.Cross-Origin-Opener-Policy.Cross-Origin-Resource-Policy.Date.Device-Memory.Downlink.ECT.ETag.Expect.Expect-CT.Expires.Forwarded.From.Host.If-Match.If-Modified-Since.If-None-Match.If-Range.If-Unmodified-Since.Keep-Alive.Last-Modified.Link.Location.Max-Forwards.Origin.Permissions-Policy.Pragma.Proxy-Authenticate.Proxy-Authorization.RTT.Range.Referer.Referrer-Policy.Refresh.Retry-After.Sec-WebSocket-Accept.Sec-WebSocket-Extensions.Sec-WebSocket-Key.Sec-WebSocket-Protocol.Sec-WebSocket-Version.Server.Server-Timing.Service-Worker-Allowed.Service-Worker-Navigation-Preload.Set-Cookie.SourceMap.Strict-Transport-Security.Supports-Loading-Mode.TE.Timing-Allow-Origin.Trailer.Transfer-Encoding.Upgrade.Upgrade-Insecure-Requests.User-Agent.Vary.Via.WWW-Authenticate.X-Content-Type-Options.X-DNS-Prefetch-Control.X-Frame-Options.X-Permitted-Cross-Domain-Policies.X-Powered-By.X-Requested-With.X-XSS-Protection`.split(`.`);for(let e=0;e{let n=T(`assert`),{kDestroyed:r,kBodyUsed:i}=M(),{IncomingMessage:a}=T(`http`),o=T(`stream`),s=T(`net`),{InvalidArgumentError:c}=N(),{Blob:l}=T(`buffer`),u=T(`util`),{stringify:d}=T(`querystring`),{headerNameLowerCasedRecord:f}=ee(),[p,m]=process.versions.node.split(`.`).map(e=>Number(e));function h(){}function g(e){return e&&typeof e==`object`&&typeof e.pipe==`function`&&typeof e.on==`function`}function _(e){return l&&e instanceof l||e&&typeof e==`object`&&(typeof e.stream==`function`||typeof e.arrayBuffer==`function`)&&/^(Blob|File)$/.test(e[Symbol.toStringTag])}function v(e,t){if(e.includes(`?`)||e.includes(`#`))throw Error(`Query params cannot be passed when url already contains "?" or "#".`);let n=d(t);return n&&(e+=`?`+n),e}function y(e){if(typeof e==`string`){if(e=new URL(e),!/^https?:/.test(e.origin||e.protocol))throw new c("Invalid URL protocol: the URL must start with `http:` or `https:`.");return e}if(!e||typeof e!=`object`)throw new c(`Invalid URL: The URL argument must be a non-null object.`);if(!/^https?:/.test(e.origin||e.protocol))throw new c("Invalid URL protocol: the URL must start with `http:` or `https:`.");if(!(e instanceof URL)){if(e.port!=null&&e.port!==``&&!Number.isFinite(parseInt(e.port)))throw new c(`Invalid URL: port must be a valid integer or a string representation of an integer.`);if(e.path!=null&&typeof e.path!=`string`)throw new c(`Invalid URL path: the path must be a string or null/undefined.`);if(e.pathname!=null&&typeof e.pathname!=`string`)throw new c(`Invalid URL pathname: the pathname must be a string or null/undefined.`);if(e.hostname!=null&&typeof e.hostname!=`string`)throw new c(`Invalid URL hostname: the hostname must be a string or null/undefined.`);if(e.origin!=null&&typeof e.origin!=`string`)throw new c(`Invalid URL origin: the origin must be a string or null/undefined.`);let t=e.port==null?e.protocol===`https:`?443:80:e.port,n=e.origin==null?`${e.protocol}//${e.hostname}:${t}`:e.origin,r=e.path==null?`${e.pathname||``}${e.search||``}`:e.path;n.endsWith(`/`)&&(n=n.substring(0,n.length-1)),r&&!r.startsWith(`/`)&&(r=`/${r}`),e=new URL(n+r)}return e}function b(e){if(e=y(e),e.pathname!==`/`||e.search||e.hash)throw new c(`invalid url`);return e}function x(e){if(e[0]===`[`){let t=e.indexOf(`]`);return n(t!==-1),e.substring(1,t)}let t=e.indexOf(`:`);return t===-1?e:e.substring(0,t)}function S(e){if(!e)return null;n.strictEqual(typeof e,`string`);let t=x(e);return s.isIP(t)?``:t}function C(e){return JSON.parse(JSON.stringify(e))}function w(e){return e!=null&&typeof e[Symbol.asyncIterator]==`function`}function E(e){return e!=null&&(typeof e[Symbol.iterator]==`function`||typeof e[Symbol.asyncIterator]==`function`)}function D(e){if(e==null)return 0;if(g(e)){let t=e._readableState;return t&&t.objectMode===!1&&t.ended===!0&&Number.isFinite(t.length)?t.length:null}else if(_(e))return e.size==null?null:e.size;else if(R(e))return e.byteLength;return null}function O(e){return!e||!!(e.destroyed||e[r])}function k(e){let t=e&&e._readableState;return O(e)&&t&&!t.endEmitted}function A(e,t){e==null||!g(e)||O(e)||(typeof e.destroy==`function`?(Object.getPrototypeOf(e).constructor===a&&(e.socket=null),e.destroy(t)):t&&process.nextTick((e,t)=>{e.emit(`error`,t)},e,t),e.destroyed!==!0&&(e[r]=!0))}let j=/timeout=(\d+)/;function P(e){let t=e.toString().match(j);return t?parseInt(t[1],10)*1e3:null}function F(e){return f[e]||e.toLowerCase()}function I(e,t={}){if(!Array.isArray(e))return e;for(let n=0;ne.toString(`utf8`)):t[r]=e[n+1].toString(`utf8`)}return`content-length`in t&&`content-disposition`in t&&(t[`content-disposition`]=Buffer.from(t[`content-disposition`]).toString(`latin1`)),t}function L(e){let t=[],n=!1,r=-1;for(let i=0;i{e.close()});else{let t=Buffer.isBuffer(r)?r:Buffer.from(r);e.enqueue(new Uint8Array(t))}return e.desiredSize>0},async cancel(e){await t.return()}},0)}function ie(e){return e&&typeof e==`object`&&typeof e.append==`function`&&typeof e.delete==`function`&&typeof e.get==`function`&&typeof e.getAll==`function`&&typeof e.has==`function`&&typeof e.set==`function`&&e[Symbol.toStringTag]===`FormData`}function W(e){if(e){if(typeof e.throwIfAborted==`function`)e.throwIfAborted();else if(e.aborted){let e=Error(`The operation was aborted`);throw e.name=`AbortError`,e}}}function ae(e,t){return`addEventListener`in e?(e.addEventListener(`abort`,t,{once:!0}),()=>e.removeEventListener(`abort`,t)):(e.addListener(`abort`,t),()=>e.removeListener(`abort`,t))}let G=!!String.prototype.toWellFormed;function oe(e){return G?`${e}`.toWellFormed():u.toUSVString?u.toUSVString(e):`${e}`}function se(e){if(e==null||e===``)return{start:0,end:null,size:null};let t=e?e.match(/^bytes (\d+)-(\d+)\/(\d+)?$/):null;return t?{start:parseInt(t[1]),end:t[2]?parseInt(t[2]):null,size:t[3]?parseInt(t[3]):null}:null}let ce=Object.create(null);ce.enumerable=!0,t.exports={kEnumerableProperty:ce,nop:h,isDisturbed:B,isErrored:V,isReadable:te,toUSVString:oe,isReadableAborted:k,isBlobLike:_,parseOrigin:b,parseURL:y,getServerName:S,isStream:g,isIterable:E,isAsyncIterable:w,isDestroyed:O,headerNameToString:F,parseRawHeaders:L,parseHeaders:I,parseKeepAliveTimeout:P,destroy:A,bodyLength:D,deepClone:C,ReadableStreamFrom:U,isBuffer:R,validateHandler:z,getSocketInfo:H,isFormDataLike:ie,buildURL:v,throwIfAborted:W,addAbortListener:ae,parseRangeHeader:se,nodeMajor:p,nodeMinor:m,nodeHasAutoSelectFamily:p>18||p===18&&m>=13,safeHTTPMethods:[`GET`,`HEAD`,`OPTIONS`,`TRACE`]}})),F=b(((e,t)=>{let n=Date.now(),r,i=[];function a(){n=Date.now();let e=i.length,t=0;for(;t0&&n>=r.state&&(r.state=-1,r.callback(r.opaque)),r.state===-1?(r.state=-2,t===e-1?i.pop():i[t]=i.pop(),--e):t+=1}i.length>0&&o()}function o(){r&&r.refresh?r.refresh():(clearTimeout(r),r=setTimeout(a,1e3),r.unref&&r.unref())}var s=class{constructor(e,t,n){this.callback=e,this.delay=t,this.opaque=n,this.state=-2,this.refresh()}refresh(){this.state===-2&&(i.push(this),(!r||i.length===1)&&o()),this.state=0}clear(){this.state=-1}};t.exports={setTimeout(e,t,n){return t<1e3?setTimeout(e,t,n):new s(e,t,n)},clearTimeout(e){e instanceof s?e.clear():clearTimeout(e)}}})),I=b(((e,t)=>{let n=T(`node:events`).EventEmitter,r=T(`node:util`).inherits;function i(e){if(typeof e==`string`&&(e=Buffer.from(e)),!Buffer.isBuffer(e))throw TypeError(`The needle has to be a String or a Buffer.`);let t=e.length;if(t===0)throw Error(`The needle cannot be an empty String/Buffer.`);if(t>256)throw Error(`The needle cannot have a length bigger than 256.`);this.maxMatches=1/0,this.matches=0,this._occ=Array(256).fill(t),this._lookbehind_size=0,this._needle=e,this._bufpos=0,this._lookbehind=Buffer.alloc(t);for(var n=0;n=0)this.emit(`info`,!1,this._lookbehind,0,this._lookbehind_size),this._lookbehind_size=0;else{let n=this._lookbehind_size+a;return n>0&&this.emit(`info`,!1,this._lookbehind,0,n),this._lookbehind.copy(this._lookbehind,0,n,this._lookbehind_size-n),this._lookbehind_size-=n,e.copy(this._lookbehind,this._lookbehind_size),this._lookbehind_size+=t,this._bufpos=t,t}}if(a+=(a>=0)*this._bufpos,e.indexOf(n,a)!==-1)return a=e.indexOf(n,a),++this.matches,a>0?this.emit(`info`,!0,e,this._bufpos,a):this.emit(`info`,!0),this._bufpos=a+r;for(a=t-r;a0&&this.emit(`info`,!1,e,this._bufpos,a{let n=T(`node:util`).inherits,r=T(`node:stream`).Readable;function i(e){r.call(this,e)}n(i,r),i.prototype._read=function(e){},t.exports=i})),R=b(((e,t)=>{t.exports=function(e,t,n){if(!e||e[t]===void 0||e[t]===null)return n;if(typeof e[t]!=`number`||isNaN(e[t]))throw TypeError(`Limit `+t+` is not a valid number`);return e[t]}})),z=b(((e,t)=>{let n=T(`node:events`).EventEmitter,r=T(`node:util`).inherits,i=R(),a=I(),o=Buffer.from(`\r +\r +`),s=/\r\n/g,c=/^([^:]+):[ \t]?([\x00-\xFF]+)?$/;function l(e){n.call(this),e||={};let t=this;this.nread=0,this.maxed=!1,this.npairs=0,this.maxHeaderPairs=i(e,`maxHeaderPairs`,2e3),this.maxHeaderSize=i(e,`maxHeaderSize`,80*1024),this.buffer=``,this.header={},this.finished=!1,this.ss=new a(o),this.ss.on(`info`,function(e,n,r,i){n&&!t.maxed&&(t.nread+i-r>=t.maxHeaderSize?(i=t.maxHeaderSize-t.nread+r,t.nread=t.maxHeaderSize,t.maxed=!0):t.nread+=i-r,t.buffer+=n.toString(`binary`,r,i)),e&&t._finish()})}r(l,n),l.prototype.push=function(e){let t=this.ss.push(e);if(this.finished)return t},l.prototype.reset=function(){this.finished=!1,this.buffer=``,this.header={},this.ss.reset()},l.prototype._finish=function(){this.buffer&&this._parseHeader(),this.ss.matches=this.ss.maxMatches;let e=this.header;this.header={},this.buffer=``,this.finished=!0,this.nread=this.npairs=0,this.maxed=!1,this.emit(`header`,e)},l.prototype._parseHeader=function(){if(this.npairs===this.maxHeaderPairs)return;let e=this.buffer.split(s),t=e.length,n,r;for(var i=0;i{let n=T(`node:stream`).Writable,r=T(`node:util`).inherits,i=I(),a=L(),o=z(),s=Buffer.from(`-`),c=Buffer.from(`\r +`),l=function(){};function u(e){if(!(this instanceof u))return new u(e);if(n.call(this,e),!e||!e.headerFirst&&typeof e.boundary!=`string`)throw TypeError(`Boundary required`);typeof e.boundary==`string`?this.setBoundary(e.boundary):this._bparser=void 0,this._headerFirst=e.headerFirst,this._dashes=0,this._parts=0,this._finished=!1,this._realFinish=!1,this._isPreamble=!0,this._justMatched=!1,this._firstWrite=!0,this._inHeader=!0,this._part=void 0,this._cb=void 0,this._ignoreData=!1,this._partOpts={highWaterMark:e.partHwm},this._pause=!1;let t=this;this._hparser=new o(e),this._hparser.on(`header`,function(e){t._inHeader=!1,t._part.emit(`header`,e)})}r(u,n),u.prototype.emit=function(e){if(e===`finish`&&!this._realFinish){if(!this._finished){let e=this;process.nextTick(function(){if(e.emit(`error`,Error(`Unexpected end of multipart data`)),e._part&&!e._ignoreData){let t=e._isPreamble?`Preamble`:`Part`;e._part.emit(`error`,Error(t+` terminated early due to unexpected end of multipart data`)),e._part.push(null),process.nextTick(function(){e._realFinish=!0,e.emit(`finish`),e._realFinish=!1});return}e._realFinish=!0,e.emit(`finish`),e._realFinish=!1})}}else n.prototype.emit.apply(this,arguments)},u.prototype._write=function(e,t,n){if(!this._hparser&&!this._bparser)return n();if(this._headerFirst&&this._isPreamble){this._part||(this._part=new a(this._partOpts),this.listenerCount(`preamble`)===0?this._ignore():this.emit(`preamble`,this._part));let t=this._hparser.push(e);if(!this._inHeader&&t!==void 0&&t{let n=new TextDecoder(`utf-8`),r=new Map([[`utf-8`,n],[`utf8`,n]]);function i(e){let t;for(;;)switch(e){case`utf-8`:case`utf8`:return a.utf8;case`latin1`:case`ascii`:case`us-ascii`:case`iso-8859-1`:case`iso8859-1`:case`iso88591`:case`iso_8859-1`:case`windows-1252`:case`iso_8859-1:1987`:case`cp1252`:case`x-cp1252`:return a.latin1;case`utf16le`:case`utf-16le`:case`ucs2`:case`ucs-2`:return a.utf16le;case`base64`:return a.base64;default:if(t===void 0){t=!0,e=e.toLowerCase();continue}return a.other.bind(e)}}let a={utf8:(e,t)=>e.length===0?``:(typeof e==`string`&&(e=Buffer.from(e,t)),e.utf8Slice(0,e.length)),latin1:(e,t)=>e.length===0?``:typeof e==`string`?e:e.latin1Slice(0,e.length),utf16le:(e,t)=>e.length===0?``:(typeof e==`string`&&(e=Buffer.from(e,t)),e.ucs2Slice(0,e.length)),base64:(e,t)=>e.length===0?``:(typeof e==`string`&&(e=Buffer.from(e,t)),e.base64Slice(0,e.length)),other:(t,n)=>{if(t.length===0)return``;if(typeof t==`string`&&(t=Buffer.from(t,n)),r.has(e.toString()))try{return r.get(e).decode(t)}catch{}return typeof t==`string`?t:t.toString()}};function o(e,t,n){return e&&i(n)(e,t)}t.exports=o})),te=b(((e,t)=>{let n=V(),r=/%[a-fA-F0-9][a-fA-F0-9]/g,i={"%00":`\0`,"%01":``,"%02":``,"%03":``,"%04":``,"%05":``,"%06":``,"%07":`\x07`,"%08":`\b`,"%09":` `,"%0a":` +`,"%0A":` +`,"%0b":`\v`,"%0B":`\v`,"%0c":`\f`,"%0C":`\f`,"%0d":`\r`,"%0D":`\r`,"%0e":``,"%0E":``,"%0f":``,"%0F":``,"%10":``,"%11":``,"%12":``,"%13":``,"%14":``,"%15":``,"%16":``,"%17":``,"%18":``,"%19":``,"%1a":``,"%1A":``,"%1b":`\x1B`,"%1B":`\x1B`,"%1c":``,"%1C":``,"%1d":``,"%1D":``,"%1e":``,"%1E":``,"%1f":``,"%1F":``,"%20":` `,"%21":`!`,"%22":`"`,"%23":`#`,"%24":`$`,"%25":`%`,"%26":`&`,"%27":`'`,"%28":`(`,"%29":`)`,"%2a":`*`,"%2A":`*`,"%2b":`+`,"%2B":`+`,"%2c":`,`,"%2C":`,`,"%2d":`-`,"%2D":`-`,"%2e":`.`,"%2E":`.`,"%2f":`/`,"%2F":`/`,"%30":`0`,"%31":`1`,"%32":`2`,"%33":`3`,"%34":`4`,"%35":`5`,"%36":`6`,"%37":`7`,"%38":`8`,"%39":`9`,"%3a":`:`,"%3A":`:`,"%3b":`;`,"%3B":`;`,"%3c":`<`,"%3C":`<`,"%3d":`=`,"%3D":`=`,"%3e":`>`,"%3E":`>`,"%3f":`?`,"%3F":`?`,"%40":`@`,"%41":`A`,"%42":`B`,"%43":`C`,"%44":`D`,"%45":`E`,"%46":`F`,"%47":`G`,"%48":`H`,"%49":`I`,"%4a":`J`,"%4A":`J`,"%4b":`K`,"%4B":`K`,"%4c":`L`,"%4C":`L`,"%4d":`M`,"%4D":`M`,"%4e":`N`,"%4E":`N`,"%4f":`O`,"%4F":`O`,"%50":`P`,"%51":`Q`,"%52":`R`,"%53":`S`,"%54":`T`,"%55":`U`,"%56":`V`,"%57":`W`,"%58":`X`,"%59":`Y`,"%5a":`Z`,"%5A":`Z`,"%5b":`[`,"%5B":`[`,"%5c":`\\`,"%5C":`\\`,"%5d":`]`,"%5D":`]`,"%5e":`^`,"%5E":`^`,"%5f":`_`,"%5F":`_`,"%60":"`","%61":`a`,"%62":`b`,"%63":`c`,"%64":`d`,"%65":`e`,"%66":`f`,"%67":`g`,"%68":`h`,"%69":`i`,"%6a":`j`,"%6A":`j`,"%6b":`k`,"%6B":`k`,"%6c":`l`,"%6C":`l`,"%6d":`m`,"%6D":`m`,"%6e":`n`,"%6E":`n`,"%6f":`o`,"%6F":`o`,"%70":`p`,"%71":`q`,"%72":`r`,"%73":`s`,"%74":`t`,"%75":`u`,"%76":`v`,"%77":`w`,"%78":`x`,"%79":`y`,"%7a":`z`,"%7A":`z`,"%7b":`{`,"%7B":`{`,"%7c":`|`,"%7C":`|`,"%7d":`}`,"%7D":`}`,"%7e":`~`,"%7E":`~`,"%7f":``,"%7F":``,"%80":`€`,"%81":``,"%82":`‚`,"%83":`ƒ`,"%84":`„`,"%85":`…`,"%86":`†`,"%87":`‡`,"%88":`ˆ`,"%89":`‰`,"%8a":`Š`,"%8A":`Š`,"%8b":`‹`,"%8B":`‹`,"%8c":`Œ`,"%8C":`Œ`,"%8d":``,"%8D":``,"%8e":`Ž`,"%8E":`Ž`,"%8f":``,"%8F":``,"%90":``,"%91":`‘`,"%92":`’`,"%93":`“`,"%94":`”`,"%95":`•`,"%96":`–`,"%97":`—`,"%98":`˜`,"%99":`™`,"%9a":`š`,"%9A":`š`,"%9b":`›`,"%9B":`›`,"%9c":`œ`,"%9C":`œ`,"%9d":``,"%9D":``,"%9e":`ž`,"%9E":`ž`,"%9f":`Ÿ`,"%9F":`Ÿ`,"%a0":`\xA0`,"%A0":`\xA0`,"%a1":`¡`,"%A1":`¡`,"%a2":`¢`,"%A2":`¢`,"%a3":`£`,"%A3":`£`,"%a4":`¤`,"%A4":`¤`,"%a5":`¥`,"%A5":`¥`,"%a6":`¦`,"%A6":`¦`,"%a7":`§`,"%A7":`§`,"%a8":`¨`,"%A8":`¨`,"%a9":`©`,"%A9":`©`,"%aa":`ª`,"%Aa":`ª`,"%aA":`ª`,"%AA":`ª`,"%ab":`«`,"%Ab":`«`,"%aB":`«`,"%AB":`«`,"%ac":`¬`,"%Ac":`¬`,"%aC":`¬`,"%AC":`¬`,"%ad":`­`,"%Ad":`­`,"%aD":`­`,"%AD":`­`,"%ae":`®`,"%Ae":`®`,"%aE":`®`,"%AE":`®`,"%af":`¯`,"%Af":`¯`,"%aF":`¯`,"%AF":`¯`,"%b0":`°`,"%B0":`°`,"%b1":`±`,"%B1":`±`,"%b2":`²`,"%B2":`²`,"%b3":`³`,"%B3":`³`,"%b4":`´`,"%B4":`´`,"%b5":`µ`,"%B5":`µ`,"%b6":`¶`,"%B6":`¶`,"%b7":`·`,"%B7":`·`,"%b8":`¸`,"%B8":`¸`,"%b9":`¹`,"%B9":`¹`,"%ba":`º`,"%Ba":`º`,"%bA":`º`,"%BA":`º`,"%bb":`»`,"%Bb":`»`,"%bB":`»`,"%BB":`»`,"%bc":`¼`,"%Bc":`¼`,"%bC":`¼`,"%BC":`¼`,"%bd":`½`,"%Bd":`½`,"%bD":`½`,"%BD":`½`,"%be":`¾`,"%Be":`¾`,"%bE":`¾`,"%BE":`¾`,"%bf":`¿`,"%Bf":`¿`,"%bF":`¿`,"%BF":`¿`,"%c0":`À`,"%C0":`À`,"%c1":`Á`,"%C1":`Á`,"%c2":`Â`,"%C2":`Â`,"%c3":`Ã`,"%C3":`Ã`,"%c4":`Ä`,"%C4":`Ä`,"%c5":`Å`,"%C5":`Å`,"%c6":`Æ`,"%C6":`Æ`,"%c7":`Ç`,"%C7":`Ç`,"%c8":`È`,"%C8":`È`,"%c9":`É`,"%C9":`É`,"%ca":`Ê`,"%Ca":`Ê`,"%cA":`Ê`,"%CA":`Ê`,"%cb":`Ë`,"%Cb":`Ë`,"%cB":`Ë`,"%CB":`Ë`,"%cc":`Ì`,"%Cc":`Ì`,"%cC":`Ì`,"%CC":`Ì`,"%cd":`Í`,"%Cd":`Í`,"%cD":`Í`,"%CD":`Í`,"%ce":`Î`,"%Ce":`Î`,"%cE":`Î`,"%CE":`Î`,"%cf":`Ï`,"%Cf":`Ï`,"%cF":`Ï`,"%CF":`Ï`,"%d0":`Ð`,"%D0":`Ð`,"%d1":`Ñ`,"%D1":`Ñ`,"%d2":`Ò`,"%D2":`Ò`,"%d3":`Ó`,"%D3":`Ó`,"%d4":`Ô`,"%D4":`Ô`,"%d5":`Õ`,"%D5":`Õ`,"%d6":`Ö`,"%D6":`Ö`,"%d7":`×`,"%D7":`×`,"%d8":`Ø`,"%D8":`Ø`,"%d9":`Ù`,"%D9":`Ù`,"%da":`Ú`,"%Da":`Ú`,"%dA":`Ú`,"%DA":`Ú`,"%db":`Û`,"%Db":`Û`,"%dB":`Û`,"%DB":`Û`,"%dc":`Ü`,"%Dc":`Ü`,"%dC":`Ü`,"%DC":`Ü`,"%dd":`Ý`,"%Dd":`Ý`,"%dD":`Ý`,"%DD":`Ý`,"%de":`Þ`,"%De":`Þ`,"%dE":`Þ`,"%DE":`Þ`,"%df":`ß`,"%Df":`ß`,"%dF":`ß`,"%DF":`ß`,"%e0":`à`,"%E0":`à`,"%e1":`á`,"%E1":`á`,"%e2":`â`,"%E2":`â`,"%e3":`ã`,"%E3":`ã`,"%e4":`ä`,"%E4":`ä`,"%e5":`å`,"%E5":`å`,"%e6":`æ`,"%E6":`æ`,"%e7":`ç`,"%E7":`ç`,"%e8":`è`,"%E8":`è`,"%e9":`é`,"%E9":`é`,"%ea":`ê`,"%Ea":`ê`,"%eA":`ê`,"%EA":`ê`,"%eb":`ë`,"%Eb":`ë`,"%eB":`ë`,"%EB":`ë`,"%ec":`ì`,"%Ec":`ì`,"%eC":`ì`,"%EC":`ì`,"%ed":`í`,"%Ed":`í`,"%eD":`í`,"%ED":`í`,"%ee":`î`,"%Ee":`î`,"%eE":`î`,"%EE":`î`,"%ef":`ï`,"%Ef":`ï`,"%eF":`ï`,"%EF":`ï`,"%f0":`ð`,"%F0":`ð`,"%f1":`ñ`,"%F1":`ñ`,"%f2":`ò`,"%F2":`ò`,"%f3":`ó`,"%F3":`ó`,"%f4":`ô`,"%F4":`ô`,"%f5":`õ`,"%F5":`õ`,"%f6":`ö`,"%F6":`ö`,"%f7":`÷`,"%F7":`÷`,"%f8":`ø`,"%F8":`ø`,"%f9":`ù`,"%F9":`ù`,"%fa":`ú`,"%Fa":`ú`,"%fA":`ú`,"%FA":`ú`,"%fb":`û`,"%Fb":`û`,"%fB":`û`,"%FB":`û`,"%fc":`ü`,"%Fc":`ü`,"%fC":`ü`,"%FC":`ü`,"%fd":`ý`,"%Fd":`ý`,"%fD":`ý`,"%FD":`ý`,"%fe":`þ`,"%Fe":`þ`,"%fE":`þ`,"%FE":`þ`,"%ff":`ÿ`,"%Ff":`ÿ`,"%fF":`ÿ`,"%FF":`ÿ`};function a(e){return i[e]}function o(e){let t=[],i=0,o=``,s=!1,c=!1,l=0,u=``,d=e.length;for(var f=0;f{t.exports=function(e){if(typeof e!=`string`)return``;for(var t=e.length-1;t>=0;--t)switch(e.charCodeAt(t)){case 47:case 92:return e=e.slice(t+1),e===`..`||e===`.`?``:e}return e===`..`||e===`.`?``:e}})),ne=b(((e,t)=>{let{Readable:n}=T(`node:stream`),{inherits:r}=T(`node:util`),i=B(),a=te(),o=V(),s=H(),c=R(),l=/^boundary$/i,u=/^form-data$/i,d=/^charset$/i,f=/^filename$/i,p=/^name$/i;m.detect=/^multipart\/form-data/i;function m(e,t){let n,r,m=this,_,v=t.limits,y=t.isPartAFile||((e,t,n)=>t===`application/octet-stream`||n!==void 0),b=t.parsedConType||[],x=t.defCharset||`utf8`,S=t.preservePath,C={highWaterMark:t.fileHwm};for(n=0,r=b.length;nk)return m.parser.removeListener(`part`,t),m.parser.on(`part`,h),e.hitPartsLimit=!0,e.emit(`partsLimit`),h(i);if(F){let e=F;e.emit(`end`),e.removeAllListeners(`end`)}i.on(`header`,function(t){let c,l,_,v,b,k,A=0;if(t[`content-type`]&&(_=a(t[`content-type`][0]),_[0])){for(c=_[0].toLowerCase(),n=0,r=_.length;nE){let n=E-A+e.length;n>0&&t.push(e.slice(0,n)),t.truncated=!0,t.bytesRead=E,i.removeAllListeners(`data`),t.emit(`limit`);return}else t.push(e)||(m._pause=!0);t.bytesRead=A},I=function(){P=void 0,t.push(null)}}else{if(N===O)return e.hitFieldsLimit||(e.hitFieldsLimit=!0,e.emit(`fieldsLimit`)),h(i);++N,++ee;let t=``,n=!1;F=i,j=function(e){if((A+=e.length)>T){let r=T-(A-e.length);t+=e.toString(`binary`,0,r),n=!0,i.removeAllListeners(`data`)}else t+=e.toString(`binary`)},I=function(){F=void 0,t.length&&(t=o(t,`binary`,v)),e.emit(`field`,l,t,!1,n,b,c),--ee,w()}}i._readableState.sync=!1,i.on(`data`,j),i.on(`end`,I)}).on(`error`,function(e){P&&P.emit(`error`,e)})}).on(`error`,function(t){e.emit(`error`,t)}).on(`finish`,function(){I=!0,w()})}m.prototype.write=function(e,t){let n=this.parser.write(e);n&&!this._pause?t():(this._needDrain=!n,this._cb=t)},m.prototype.end=function(){let e=this;e.parser.writable?e.parser.end():e._boy._done||process.nextTick(function(){e._boy._done=!0,e._boy.emit(`finish`)})};function h(e){e.resume()}function g(e){n.call(this,e),this.bytesRead=0,this.truncated=!1}r(g,n),g.prototype._read=function(e){},t.exports=m})),re=b(((e,t)=>{let n=/\+/g,r=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0];function i(){this.buffer=void 0}i.prototype.write=function(e){e=e.replace(n,` `);let t=``,i=0,a=0,o=e.length;for(;ia&&(t+=e.substring(a,i),a=i),this.buffer=``,++a):r[e.charCodeAt(i)]?(this.buffer+=e[i],++a,this.buffer.length===2&&(t+=String.fromCharCode(parseInt(this.buffer,16)),this.buffer=void 0)):(t+=`%`+this.buffer,this.buffer=void 0,--i);return a{let n=re(),r=V(),i=R(),a=/^charset$/i;o.detect=/^application\/x-www-form-urlencoded/i;function o(e,t){let r=t.limits,o=t.parsedConType;this.boy=e,this.fieldSizeLimit=i(r,`fieldSize`,1*1024*1024),this.fieldNameSizeLimit=i(r,`fieldNameSize`,100),this.fieldsLimit=i(r,`fields`,1/0);let s;for(var c=0,l=o.length;co&&(this._key+=this.decoder.write(e.toString(`binary`,o,n))),this._state=`val`,this._hitLimit=!1,this._checkingBytes=!0,this._val=``,this._bytesVal=0,this._valTrunc=!1,this.decoder.reset(),o=n+1;else if(i!==void 0){++this._fields;let n,a=this._keyTrunc;if(n=i>o?this._key+=this.decoder.write(e.toString(`binary`,o,i)):this._key,this._hitLimit=!1,this._checkingBytes=!0,this._key=``,this._bytesKey=0,this._keyTrunc=!1,this.decoder.reset(),n.length&&this.boy.emit(`field`,r(n,`binary`,this.charset),``,a,!1),o=i+1,this._fields===this.fieldsLimit)return t()}else this._hitLimit?(a>o&&(this._key+=this.decoder.write(e.toString(`binary`,o,a))),o=a,(this._bytesKey=this._key.length)===this.fieldNameSizeLimit&&(this._checkingBytes=!1,this._keyTrunc=!0)):(oo&&(this._val+=this.decoder.write(e.toString(`binary`,o,i))),this.boy.emit(`field`,r(this._key,`binary`,this.charset),r(this._val,`binary`,this.charset),this._keyTrunc,this._valTrunc),this._state=`key`,this._hitLimit=!1,this._checkingBytes=!0,this._key=``,this._bytesKey=0,this._keyTrunc=!1,this.decoder.reset(),o=i+1,this._fields===this.fieldsLimit)return t()}else this._hitLimit?(a>o&&(this._val+=this.decoder.write(e.toString(`binary`,o,a))),o=a,(this._val===``&&this.fieldSizeLimit===0||(this._bytesVal=this._val.length)===this.fieldSizeLimit)&&(this._checkingBytes=!1,this._valTrunc=!0)):(o0?this.boy.emit(`field`,r(this._key,`binary`,this.charset),``,this._keyTrunc,!1):this._state===`val`&&this.boy.emit(`field`,r(this._key,`binary`,this.charset),r(this._val,`binary`,this.charset),this._keyTrunc,this._valTrunc),this.boy._done=!0,this.boy.emit(`finish`))},t.exports=o})),ie=b(((e,t)=>{let n=T(`node:stream`).Writable,{inherits:r}=T(`node:util`),i=B(),a=ne(),o=U(),s=te();function c(e){if(!(this instanceof c))return new c(e);if(typeof e!=`object`)throw TypeError(`Busboy expected an options-Object.`);if(typeof e.headers!=`object`)throw TypeError(`Busboy expected an options-Object with headers-attribute.`);if(typeof e.headers[`content-type`]!=`string`)throw TypeError(`Missing Content-Type-header.`);let{headers:t,...r}=e;this.opts={autoDestroy:!1,...r},n.call(this,this.opts),this._done=!1,this._parser=this.getParserByHeaders(t),this._finished=!1}r(c,n),c.prototype.emit=function(e){if(e===`finish`){if(this._done){if(this._finished)return}else{this._parser?.end();return}this._finished=!0}n.prototype.emit.apply(this,arguments)},c.prototype.getParserByHeaders=function(e){let t=s(e[`content-type`]),n={defCharset:this.opts.defCharset,fileHwm:this.opts.fileHwm,headers:e,highWaterMark:this.opts.highWaterMark,isPartAFile:this.opts.isPartAFile,limits:this.opts.limits,parsedConType:t,preservePath:this.opts.preservePath};if(a.detect.test(t[0]))return new a(this,n);if(o.detect.test(t[0]))return new o(this,n);throw Error(`Unsupported Content-Type.`)},c.prototype._write=function(e,t,n){this._parser.write(e,n)},t.exports=c,t.exports.default=c,t.exports.Busboy=c,t.exports.Dicer=i})),W=b(((e,t)=>{let{MessageChannel:n,receiveMessageOnPort:r}=T(`worker_threads`),i=[`GET`,`HEAD`,`POST`],a=new Set(i),o=[101,204,205,304],s=[301,302,303,307,308],c=new Set(s),l=`1.7.9.11.13.15.17.19.20.21.22.23.25.37.42.43.53.69.77.79.87.95.101.102.103.104.109.110.111.113.115.117.119.123.135.137.139.143.161.179.389.427.465.512.513.514.515.526.530.531.532.540.548.554.556.563.587.601.636.989.990.993.995.1719.1720.1723.2049.3659.4045.5060.5061.6000.6566.6665.6666.6667.6668.6669.6697.10080`.split(`.`),u=new Set(l),d=[``,`no-referrer`,`no-referrer-when-downgrade`,`same-origin`,`origin`,`strict-origin`,`origin-when-cross-origin`,`strict-origin-when-cross-origin`,`unsafe-url`],f=new Set(d),p=[`follow`,`manual`,`error`],m=[`GET`,`HEAD`,`OPTIONS`,`TRACE`],h=new Set(m),g=[`navigate`,`same-origin`,`no-cors`,`cors`],_=[`omit`,`same-origin`,`include`],v=[`default`,`no-store`,`reload`,`no-cache`,`force-cache`,`only-if-cached`],y=[`content-encoding`,`content-language`,`content-location`,`content-type`,`content-length`],b=[`half`],x=[`CONNECT`,`TRACE`,`TRACK`],S=new Set(x),C=[`audio`,`audioworklet`,`font`,`image`,`manifest`,`paintworklet`,`script`,`style`,`track`,`video`,`xslt`,``],w=new Set(C),E=globalThis.DOMException??(()=>{try{atob(`~`)}catch(e){return Object.getPrototypeOf(e).constructor}})(),D;t.exports={DOMException:E,structuredClone:globalThis.structuredClone??function(e,t=void 0){if(arguments.length===0)throw TypeError(`missing argument`);return D||=new n,D.port1.unref(),D.port2.unref(),D.port1.postMessage(e,t?.transfer),r(D.port2).message},subresource:C,forbiddenMethods:x,requestBodyHeader:y,referrerPolicy:d,requestRedirect:p,requestMode:g,requestCredentials:_,requestCache:v,redirectStatus:s,corsSafeListedMethods:i,nullBodyStatus:o,safeMethods:m,badPorts:l,requestDuplex:b,subresourceSet:w,badPortsSet:u,redirectStatusSet:c,corsSafeListedMethodsSet:a,safeMethodsSet:h,forbiddenMethodsSet:S,referrerPolicySet:f}})),ae=b(((e,t)=>{let n=Symbol.for(`undici.globalOrigin.1`);function r(){return globalThis[n]}function i(e){if(e===void 0){Object.defineProperty(globalThis,n,{value:void 0,writable:!0,enumerable:!1,configurable:!1});return}let t=new URL(e);if(t.protocol!==`http:`&&t.protocol!==`https:`)throw TypeError(`Only http & https urls are allowed, received ${t.protocol}`);Object.defineProperty(globalThis,n,{value:t,writable:!0,enumerable:!1,configurable:!1})}t.exports={getGlobalOrigin:r,setGlobalOrigin:i}})),G=b(((e,t)=>{let{redirectStatusSet:n,referrerPolicySet:r,badPortsSet:i}=W(),{getGlobalOrigin:a}=ae(),{performance:o}=T(`perf_hooks`),{isBlobLike:s,toUSVString:c,ReadableStreamFrom:l}=P(),u=T(`assert`),{isUint8Array:d}=T(`util/types`),f=[],p;try{p=T(`crypto`);let e=[`sha256`,`sha384`,`sha512`];f=p.getHashes().filter(t=>e.includes(t))}catch{}function m(e){let t=e.urlList,n=t.length;return n===0?null:t[n-1].toString()}function h(e,t){if(!n.has(e.status))return null;let r=e.headersList.get(`location`);return r!==null&&C(r)&&(r=new URL(r,m(e))),r&&!r.hash&&(r.hash=t),r}function g(e){return e.urlList[e.urlList.length-1]}function _(e){let t=g(e);return xe(t)&&i.has(t.port)?`blocked`:`allowed`}function v(e){return e instanceof Error||e?.constructor?.name===`Error`||e?.constructor?.name===`DOMException`}function y(e){for(let t=0;t=32&&n<=126||n>=128&&n<=255))return!1}return!0}function b(e){switch(e){case 34:case 40:case 41:case 44:case 47:case 58:case 59:case 60:case 61:case 62:case 63:case 64:case 91:case 92:case 93:case 123:case 125:return!1;default:return e>=33&&e<=126}}function x(e){if(e.length===0)return!1;for(let t=0;t0)for(let e=i.length;e!==0;e--){let t=i[e-1].trim();if(r.has(t)){a=t;break}}a!==``&&(e.referrerPolicy=a)}function E(){return`allowed`}function D(){return`success`}function O(){return`success`}function k(e){let t=null;t=e.mode,e.headersList.set(`sec-fetch-mode`,t)}function A(e){let t=e.origin;if(e.responseTainting===`cors`||e.mode===`websocket`)t&&e.headersList.append(`origin`,t);else if(e.method!==`GET`&&e.method!==`HEAD`){switch(e.referrerPolicy){case`no-referrer`:t=null;break;case`no-referrer-when-downgrade`:case`strict-origin`:case`strict-origin-when-cross-origin`:e.origin&&be(e.origin)&&!be(g(e))&&(t=null);break;case`same-origin`:re(e,g(e))||(t=null);break;default:}t&&e.headersList.append(`origin`,t)}}function j(e){return o.now()}function M(e){return{startTime:e.startTime??0,redirectStartTime:0,redirectEndTime:0,postRedirectStartTime:e.startTime??0,finalServiceWorkerStartTime:0,finalNetworkResponseStartTime:0,finalNetworkRequestStartTime:0,endTime:0,encodedBodySize:0,decodedBodySize:0,finalConnectionTimingInfo:null}}function N(){return{referrerPolicy:`strict-origin-when-cross-origin`}}function ee(e){return{referrerPolicy:e.referrerPolicy}}function F(e){let t=e.referrerPolicy;u(t);let n=null;if(e.referrer===`client`){let e=a();if(!e||e.origin===`null`)return`no-referrer`;n=new URL(e)}else e.referrer instanceof URL&&(n=e.referrer);let r=I(n),i=I(n,!0);r.toString().length>4096&&(r=i);let o=re(e,r),s=L(r)&&!L(e.url);switch(t){case`origin`:return i??I(n,!0);case`unsafe-url`:return r;case`same-origin`:return o?i:`no-referrer`;case`origin-when-cross-origin`:return o?r:i;case`strict-origin-when-cross-origin`:{let t=g(e);return re(r,t)?r:L(r)&&!L(t)?`no-referrer`:i}case`strict-origin`:case`no-referrer-when-downgrade`:default:return s?`no-referrer`:i}}function I(e,t){return u(e instanceof URL),e.protocol===`file:`||e.protocol===`about:`||e.protocol===`blank:`?`no-referrer`:(e.username=``,e.password=``,e.hash=``,t&&(e.pathname=``,e.search=``),e)}function L(e){if(!(e instanceof URL))return!1;if(e.href===`about:blank`||e.href===`about:srcdoc`||e.protocol===`data:`||e.protocol===`file:`)return!0;return t(e.origin);function t(e){if(e==null||e===`null`)return!1;let t=new URL(e);return!!(t.protocol===`https:`||t.protocol===`wss:`||/^127(?:\.[0-9]+){0,2}\.[0-9]+$|^\[(?:0*:)*?:?0*1\]$/.test(t.hostname)||t.hostname===`localhost`||t.hostname.includes(`localhost.`)||t.hostname.endsWith(`.localhost`))}}function R(e,t){if(p===void 0)return!0;let n=B(t);if(n===`no metadata`||n.length===0)return!0;let r=te(n,V(n));for(let t of r){let n=t.algo,r=t.hash,i=p.createHash(n).update(e).digest(`base64`);if(i[i.length-1]===`=`&&(i=i[i.length-2]===`=`?i.slice(0,-2):i.slice(0,-1)),H(i,r))return!0}return!1}let z=/(?sha256|sha384|sha512)-((?[A-Za-z0-9+/]+|[A-Za-z0-9_-]+)={0,2}(?:\s|$)( +[!-~]*)?)?/i;function B(e){let t=[],n=!0;for(let r of e.split(` `)){n=!1;let e=z.exec(r);if(e===null||e.groups===void 0||e.groups.algo===void 0)continue;let i=e.groups.algo.toLowerCase();f.includes(i)&&t.push(e.groups)}return n===!0?`no metadata`:t}function V(e){let t=e[0].algo;if(t[3]===`5`)return t;for(let n=1;n{e=n,t=r}),resolve:e,reject:t}}function ie(e){return e.controller.state===`aborted`}function G(e){return e.controller.state===`aborted`||e.controller.state===`terminated`}let oe={delete:`DELETE`,DELETE:`DELETE`,get:`GET`,GET:`GET`,head:`HEAD`,HEAD:`HEAD`,options:`OPTIONS`,OPTIONS:`OPTIONS`,post:`POST`,POST:`POST`,put:`PUT`,PUT:`PUT`};Object.setPrototypeOf(oe,null);function se(e){return oe[e.toLowerCase()]??e}function ce(e){let t=JSON.stringify(e);if(t===void 0)throw TypeError(`Value is not JSON serializable`);return u(typeof t==`string`),t}let le=Object.getPrototypeOf(Object.getPrototypeOf([][Symbol.iterator]()));function ue(e,t,n){let r={index:0,kind:n,target:e},i={next(){if(Object.getPrototypeOf(this)!==i)throw TypeError(`'next' called on an object that does not implement interface ${t} Iterator.`);let{index:e,kind:n,target:a}=r,o=a();if(e>=o.length)return{value:void 0,done:!0};let s=o[e];return r.index=e+1,de(s,n)},[Symbol.toStringTag]:`${t} Iterator`};return Object.setPrototypeOf(i,le),Object.setPrototypeOf({},i)}function de(e,t){let n;switch(t){case`key`:n=e[0];break;case`value`:n=e[1];break;case`key+value`:n=e;break}return{value:n,done:!1}}async function fe(e,t,n){let r=t,i=n,a;try{a=e.stream.getReader()}catch(e){i(e);return}try{r(await ve(a))}catch(e){i(e)}}let pe=globalThis.ReadableStream;function me(e){return pe||=T(`stream/web`).ReadableStream,e instanceof pe||e[Symbol.toStringTag]===`ReadableStream`&&typeof e.tee==`function`}function he(e){return e.length<65535?String.fromCharCode(...e):e.reduce((e,t)=>e+String.fromCharCode(t),``)}function ge(e){try{e.close()}catch(e){if(!e.message.includes(`Controller is already closed`))throw e}}function _e(e){for(let t=0;tObject.prototype.hasOwnProperty.call(e,t)),isErrorLike:v,fullyReadBody:fe,bytesMatch:R,isReadableStreamLike:me,readableStreamClose:ge,isomorphicEncode:_e,isomorphicDecode:he,urlIsLocal:ye,urlHasHttpsScheme:be,urlIsHttpHttpsScheme:xe,readAllBytes:ve,normalizeMethodRecord:oe,parseMetadata:B}})),oe=b(((e,t)=>{t.exports={kUrl:Symbol(`url`),kHeaders:Symbol(`headers`),kSignal:Symbol(`signal`),kState:Symbol(`state`),kGuard:Symbol(`guard`),kRealm:Symbol(`realm`)}})),se=b(((e,t)=>{let{types:n}=T(`util`),{hasOwn:r,toUSVString:i}=G(),a={};a.converters={},a.util={},a.errors={},a.errors.exception=function(e){return TypeError(`${e.header}: ${e.message}`)},a.errors.conversionFailed=function(e){let t=e.types.length===1?``:` one of`,n=`${e.argument} could not be converted to${t}: ${e.types.join(`, `)}.`;return a.errors.exception({header:e.prefix,message:n})},a.errors.invalidArgument=function(e){return a.errors.exception({header:e.prefix,message:`"${e.value}" is an invalid ${e.type}.`})},a.brandCheck=function(e,t,n=void 0){if(n?.strict!==!1&&!(e instanceof t))throw TypeError(`Illegal invocation`);return e?.[Symbol.toStringTag]===t.prototype[Symbol.toStringTag]},a.argumentLengthCheck=function({length:e},t,n){if(ei)throw a.errors.exception({header:`Integer conversion`,message:`Value must be between ${o}-${i}, got ${s}.`});return s}return!Number.isNaN(s)&&r.clamp===!0?(s=Math.min(Math.max(s,o),i),s=Math.floor(s)%2==0?Math.floor(s):Math.ceil(s),s):Number.isNaN(s)||s===0&&Object.is(0,s)||s===1/0||s===-1/0?0:(s=a.util.IntegerPart(s),s%=2**t,n===`signed`&&s>=2**t-1?s-2**t:s)},a.util.IntegerPart=function(e){let t=Math.floor(Math.abs(e));return e<0?-1*t:t},a.sequenceConverter=function(e){return t=>{if(a.util.Type(t)!==`Object`)throw a.errors.exception({header:`Sequence`,message:`Value of type ${a.util.Type(t)} is not an Object.`});let n=t?.[Symbol.iterator]?.(),r=[];if(n===void 0||typeof n.next!=`function`)throw a.errors.exception({header:`Sequence`,message:`Object is not an iterator.`});for(;;){let{done:t,value:i}=n.next();if(t)break;r.push(e(i))}return r}},a.recordConverter=function(e,t){return r=>{if(a.util.Type(r)!==`Object`)throw a.errors.exception({header:`Record`,message:`Value of type ${a.util.Type(r)} is not an Object.`});let i={};if(!n.isProxy(r)){let n=Object.keys(r);for(let a of n){let n=e(a);i[n]=t(r[a])}return i}let o=Reflect.ownKeys(r);for(let n of o)if(Reflect.getOwnPropertyDescriptor(r,n)?.enumerable){let a=e(n);i[a]=t(r[n])}return i}},a.interfaceConverter=function(e){return(t,n={})=>{if(n.strict!==!1&&!(t instanceof e))throw a.errors.exception({header:e.name,message:`Expected ${t} to be an instance of ${e.name}.`});return t}},a.dictionaryConverter=function(e){return t=>{let n=a.util.Type(t),i={};if(n===`Null`||n===`Undefined`)return i;if(n!==`Object`)throw a.errors.exception({header:`Dictionary`,message:`Expected ${t} to be one of: Null, Undefined, Object.`});for(let n of e){let{key:e,defaultValue:o,required:s,converter:c}=n;if(s===!0&&!r(t,e))throw a.errors.exception({header:`Dictionary`,message:`Missing required key "${e}".`});let l=t[e],u=r(n,`defaultValue`);if(u&&l!==null&&(l??=o),s||u||l!==void 0){if(l=c(l),n.allowedValues&&!n.allowedValues.includes(l))throw a.errors.exception({header:`Dictionary`,message:`${l} is not an accepted type. Expected one of ${n.allowedValues.join(`, `)}.`});i[e]=l}}return i}},a.nullableConverter=function(e){return t=>t===null?t:e(t)},a.converters.DOMString=function(e,t={}){if(e===null&&t.legacyNullToEmptyString)return``;if(typeof e==`symbol`)throw TypeError(`Could not convert argument of type symbol to string.`);return String(e)},a.converters.ByteString=function(e){let t=a.converters.DOMString(e);for(let e=0;e255)throw TypeError(`Cannot convert argument to a ByteString because the character at index ${e} has a value of ${t.charCodeAt(e)} which is greater than 255.`);return t},a.converters.USVString=i,a.converters.boolean=function(e){return!!e},a.converters.any=function(e){return e},a.converters[`long long`]=function(e){return a.util.ConvertToInt(e,64,`signed`)},a.converters[`unsigned long long`]=function(e){return a.util.ConvertToInt(e,64,`unsigned`)},a.converters[`unsigned long`]=function(e){return a.util.ConvertToInt(e,32,`unsigned`)},a.converters[`unsigned short`]=function(e,t){return a.util.ConvertToInt(e,16,`unsigned`,t)},a.converters.ArrayBuffer=function(e,t={}){if(a.util.Type(e)!==`Object`||!n.isAnyArrayBuffer(e))throw a.errors.conversionFailed({prefix:`${e}`,argument:`${e}`,types:[`ArrayBuffer`]});if(t.allowShared===!1&&n.isSharedArrayBuffer(e))throw a.errors.exception({header:`ArrayBuffer`,message:`SharedArrayBuffer is not allowed.`});return e},a.converters.TypedArray=function(e,t,r={}){if(a.util.Type(e)!==`Object`||!n.isTypedArray(e)||e.constructor.name!==t.name)throw a.errors.conversionFailed({prefix:`${t.name}`,argument:`${e}`,types:[t.name]});if(r.allowShared===!1&&n.isSharedArrayBuffer(e.buffer))throw a.errors.exception({header:`ArrayBuffer`,message:`SharedArrayBuffer is not allowed.`});return e},a.converters.DataView=function(e,t={}){if(a.util.Type(e)!==`Object`||!n.isDataView(e))throw a.errors.exception({header:`DataView`,message:`Object is not a DataView.`});if(t.allowShared===!1&&n.isSharedArrayBuffer(e.buffer))throw a.errors.exception({header:`ArrayBuffer`,message:`SharedArrayBuffer is not allowed.`});return e},a.converters.BufferSource=function(e,t={}){if(n.isAnyArrayBuffer(e))return a.converters.ArrayBuffer(e,t);if(n.isTypedArray(e))return a.converters.TypedArray(e,e.constructor);if(n.isDataView(e))return a.converters.DataView(e,t);throw TypeError(`Could not convert ${e} to a BufferSource.`)},a.converters[`sequence`]=a.sequenceConverter(a.converters.ByteString),a.converters[`sequence>`]=a.sequenceConverter(a.converters[`sequence`]),a.converters[`record`]=a.recordConverter(a.converters.ByteString,a.converters.ByteString),t.exports={webidl:a}})),ce=b(((e,t)=>{let n=T(`assert`),{atob:r}=T(`buffer`),{isomorphicDecode:i}=G(),a=new TextEncoder,o=/^[!#$%&'*+-.^_|~A-Za-z0-9]+$/,s=/(\u000A|\u000D|\u0009|\u0020)/,c=/[\u0009|\u0020-\u007E|\u0080-\u00FF]/;function l(e){n(e.protocol===`data:`);let t=u(e,!0);t=t.slice(5);let r={position:0},a=f(`,`,t,r),o=a.length;if(a=S(a,!0,!0),r.position>=t.length)return`failure`;r.position++;let s=p(t.slice(o+1));if(/;(\u0020){0,}base64$/i.test(a)){if(s=g(i(s)),s===`failure`)return`failure`;a=a.slice(0,-6),a=a.replace(/(\u0020)+$/,``),a=a.slice(0,-1)}a.startsWith(`;`)&&(a=`text/plain`+a);let c=h(a);return c===`failure`&&(c=h(`text/plain;charset=US-ASCII`)),{mimeType:c,body:s}}function u(e,t=!1){if(!t)return e.href;let n=e.href,r=e.hash.length;return r===0?n:n.substring(0,n.length-r)}function d(e,t,n){let r=``;for(;n.positione.length)return`failure`;t.position++;let r=f(`;`,e,t);if(r=b(r,!1,!0),r.length===0||!o.test(r))return`failure`;let i=n.toLowerCase(),a=r.toLowerCase(),l={type:i,subtype:a,parameters:new Map,essence:`${i}/${a}`};for(;t.positions.test(e),e,t);let n=d(e=>e!==`;`&&e!==`=`,e,t);if(n=n.toLowerCase(),t.positione.length)break;let r=null;if(e[t.position]===`"`)r=_(e,t,!0),f(`;`,e,t);else if(r=f(`;`,e,t),r=b(r,!1,!0),r.length===0)continue;n.length!==0&&o.test(n)&&(r.length===0||c.test(r))&&!l.parameters.has(n)&&l.parameters.set(n,r)}return l}function g(e){if(e=e.replace(/[\u0009\u000A\u000C\u000D\u0020]/g,``),e.length%4==0&&(e=e.replace(/=?=$/,``)),e.length%4==1||/[^+/0-9A-Za-z]/.test(e))return`failure`;let t=r(e),n=new Uint8Array(t.length);for(let e=0;ee!==`"`&&e!==`\\`,e,t),!(t.position>=e.length);){let r=e[t.position];if(t.position++,r===`\\`){if(t.position>=e.length){a+=`\\`;break}a+=e[t.position],t.position++}else{n(r===`"`);break}}return r?a:e.slice(i,t.position)}function v(e){n(e!==`failure`);let{parameters:t,essence:r}=e,i=r;for(let[e,n]of t.entries())i+=`;`,i+=e,i+=`=`,o.test(n)||(n=n.replace(/(\\|")/g,`\\$1`),n=`"`+n,n+=`"`),i+=n;return i}function y(e){return e===`\r`||e===` +`||e===` `||e===` `}function b(e,t=!0,n=!0){let r=0,i=e.length-1;if(t)for(;r0&&y(e[i]);i--);return e.slice(r,i+1)}function x(e){return e===`\r`||e===` +`||e===` `||e===`\f`||e===` `}function S(e,t=!0,n=!0){let r=0,i=e.length-1;if(t)for(;r0&&x(e[i]);i--);return e.slice(r,i+1)}t.exports={dataURLProcessor:l,URLSerializer:u,collectASequenceOfCodePoints:d,collectASequenceOfCodePointsFast:f,stringPercentDecode:p,parseMIMEType:h,collectAnHTTPQuotedString:_,serializeAMimeType:v}})),le=b(((e,t)=>{let{Blob:n,File:r}=T(`buffer`),{types:i}=T(`util`),{kState:a}=oe(),{isBlobLike:o}=G(),{webidl:s}=se(),{parseMIMEType:c,serializeAMimeType:l}=ce(),{kEnumerableProperty:u}=P(),d=new TextEncoder;var f=class e extends n{constructor(e,t,n={}){s.argumentLengthCheck(arguments,2,{header:`File constructor`}),e=s.converters[`sequence`](e),t=s.converters.USVString(t),n=s.converters.FilePropertyBag(n);let r=t,i=n.type,o;substep:{if(i){if(i=c(i),i===`failure`){i=``;break substep}i=l(i).toLowerCase()}o=n.lastModified}super(m(e,n),{type:i}),this[a]={name:r,lastModified:o,type:i}}get name(){return s.brandCheck(this,e),this[a].name}get lastModified(){return s.brandCheck(this,e),this[a].lastModified}get type(){return s.brandCheck(this,e),this[a].type}},p=class e{constructor(e,t,n={}){this[a]={blobLike:e,name:t,type:n.type,lastModified:n.lastModified??Date.now()}}stream(...t){return s.brandCheck(this,e),this[a].blobLike.stream(...t)}arrayBuffer(...t){return s.brandCheck(this,e),this[a].blobLike.arrayBuffer(...t)}slice(...t){return s.brandCheck(this,e),this[a].blobLike.slice(...t)}text(...t){return s.brandCheck(this,e),this[a].blobLike.text(...t)}get size(){return s.brandCheck(this,e),this[a].blobLike.size}get type(){return s.brandCheck(this,e),this[a].blobLike.type}get name(){return s.brandCheck(this,e),this[a].name}get lastModified(){return s.brandCheck(this,e),this[a].lastModified}get[Symbol.toStringTag](){return`File`}};Object.defineProperties(f.prototype,{[Symbol.toStringTag]:{value:`File`,configurable:!0},name:u,lastModified:u}),s.converters.Blob=s.interfaceConverter(n),s.converters.BlobPart=function(e,t){if(s.util.Type(e)===`Object`){if(o(e))return s.converters.Blob(e,{strict:!1});if(ArrayBuffer.isView(e)||i.isAnyArrayBuffer(e))return s.converters.BufferSource(e,t)}return s.converters.USVString(e,t)},s.converters[`sequence`]=s.sequenceConverter(s.converters.BlobPart),s.converters.FilePropertyBag=s.dictionaryConverter([{key:`lastModified`,converter:s.converters[`long long`],get defaultValue(){return Date.now()}},{key:`type`,converter:s.converters.DOMString,defaultValue:``},{key:`endings`,converter:e=>(e=s.converters.DOMString(e),e=e.toLowerCase(),e!==`native`&&(e=`transparent`),e),defaultValue:`transparent`}]);function m(e,t){let n=[];for(let r of e)if(typeof r==`string`){let e=r;t.endings===`native`&&(e=h(e)),n.push(d.encode(e))}else i.isAnyArrayBuffer(r)||i.isTypedArray(r)?r.buffer?n.push(new Uint8Array(r.buffer,r.byteOffset,r.byteLength)):n.push(new Uint8Array(r)):o(r)&&n.push(r);return n}function h(e){let t=` +`;return process.platform===`win32`&&(t=`\r +`),e.replace(/\r?\n/g,t)}function g(e){return r&&e instanceof r||e instanceof f||e&&(typeof e.stream==`function`||typeof e.arrayBuffer==`function`)&&e[Symbol.toStringTag]===`File`}t.exports={File:f,FileLike:p,isFileLike:g}})),ue=b(((e,t)=>{let{isBlobLike:n,toUSVString:r,makeIterator:i}=G(),{kState:a}=oe(),{File:o,FileLike:s,isFileLike:c}=le(),{webidl:l}=se(),{Blob:u,File:d}=T(`buffer`),f=d??o;var p=class e{constructor(e){if(e!==void 0)throw l.errors.conversionFailed({prefix:`FormData constructor`,argument:`Argument 1`,types:[`undefined`]});this[a]=[]}append(t,r,i=void 0){if(l.brandCheck(this,e),l.argumentLengthCheck(arguments,2,{header:`FormData.append`}),arguments.length===3&&!n(r))throw TypeError(`Failed to execute 'append' on 'FormData': parameter 2 is not of type 'Blob'`);t=l.converters.USVString(t),r=n(r)?l.converters.Blob(r,{strict:!1}):l.converters.USVString(r),i=arguments.length===3?l.converters.USVString(i):void 0;let o=m(t,r,i);this[a].push(o)}delete(t){l.brandCheck(this,e),l.argumentLengthCheck(arguments,1,{header:`FormData.delete`}),t=l.converters.USVString(t),this[a]=this[a].filter(e=>e.name!==t)}get(t){l.brandCheck(this,e),l.argumentLengthCheck(arguments,1,{header:`FormData.get`}),t=l.converters.USVString(t);let n=this[a].findIndex(e=>e.name===t);return n===-1?null:this[a][n].value}getAll(t){return l.brandCheck(this,e),l.argumentLengthCheck(arguments,1,{header:`FormData.getAll`}),t=l.converters.USVString(t),this[a].filter(e=>e.name===t).map(e=>e.value)}has(t){return l.brandCheck(this,e),l.argumentLengthCheck(arguments,1,{header:`FormData.has`}),t=l.converters.USVString(t),this[a].findIndex(e=>e.name===t)!==-1}set(t,i,o=void 0){if(l.brandCheck(this,e),l.argumentLengthCheck(arguments,2,{header:`FormData.set`}),arguments.length===3&&!n(i))throw TypeError(`Failed to execute 'set' on 'FormData': parameter 2 is not of type 'Blob'`);t=l.converters.USVString(t),i=n(i)?l.converters.Blob(i,{strict:!1}):l.converters.USVString(i),o=arguments.length===3?r(o):void 0;let s=m(t,i,o),c=this[a].findIndex(e=>e.name===t);c===-1?this[a].push(s):this[a]=[...this[a].slice(0,c),s,...this[a].slice(c+1).filter(e=>e.name!==t)]}entries(){return l.brandCheck(this,e),i(()=>this[a].map(e=>[e.name,e.value]),`FormData`,`key+value`)}keys(){return l.brandCheck(this,e),i(()=>this[a].map(e=>[e.name,e.value]),`FormData`,`key`)}values(){return l.brandCheck(this,e),i(()=>this[a].map(e=>[e.name,e.value]),`FormData`,`value`)}forEach(t,n=globalThis){if(l.brandCheck(this,e),l.argumentLengthCheck(arguments,1,{header:`FormData.forEach`}),typeof t!=`function`)throw TypeError(`Failed to execute 'forEach' on 'FormData': parameter 1 is not of type 'Function'.`);for(let[e,r]of this)t.apply(n,[r,e,this])}};p.prototype[Symbol.iterator]=p.prototype.entries,Object.defineProperties(p.prototype,{[Symbol.toStringTag]:{value:`FormData`,configurable:!0}});function m(e,t,n){if(e=Buffer.from(e).toString(`utf8`),typeof t==`string`)t=Buffer.from(t).toString(`utf8`);else if(c(t)||(t=t instanceof u?new f([t],`blob`,{type:t.type}):new s(t,`blob`,{type:t.type})),n!==void 0){let e={type:t.type,lastModified:t.lastModified};t=d&&t instanceof d||t instanceof o?new f([t],n,e):new s(t,n,e)}return{name:e,value:t}}t.exports={FormData:p}})),de=b(((e,t)=>{let n=ie(),r=P(),{ReadableStreamFrom:i,isBlobLike:a,isReadableStreamLike:o,readableStreamClose:s,createDeferredPromise:c,fullyReadBody:l}=G(),{FormData:u}=ue(),{kState:d}=oe(),{webidl:f}=se(),{DOMException:p,structuredClone:m}=W(),{Blob:h,File:g}=T(`buffer`),{kBodyUsed:_}=M(),v=T(`assert`),{isErrored:y}=P(),{isUint8Array:b,isArrayBuffer:x}=T(`util/types`),{File:S}=le(),{parseMIMEType:C,serializeAMimeType:w}=ce(),E;try{let e=T(`node:crypto`);E=t=>e.randomInt(0,t)}catch{E=e=>Math.floor(Math.random(e))}let D=globalThis.ReadableStream,O=g??S,k=new TextEncoder,A=new TextDecoder;function j(e,t=!1){D||=T(`stream/web`).ReadableStream;let n=null;n=e instanceof D?e:a(e)?e.stream():new D({async pull(e){e.enqueue(typeof l==`string`?k.encode(l):l),queueMicrotask(()=>s(e))},start(){},type:void 0}),v(o(n));let c=null,l=null,u=null,d=null;if(typeof e==`string`)l=e,d=`text/plain;charset=UTF-8`;else if(e instanceof URLSearchParams)l=e.toString(),d=`application/x-www-form-urlencoded;charset=UTF-8`;else if(x(e))l=new Uint8Array(e.slice());else if(ArrayBuffer.isView(e))l=new Uint8Array(e.buffer.slice(e.byteOffset,e.byteOffset+e.byteLength));else if(r.isFormDataLike(e)){let t=`----formdata-undici-0${`${E(1e11)}`.padStart(11,`0`)}`,n=`--${t}\r\nContent-Disposition: form-data`,r=e=>e.replace(/\n/g,`%0A`).replace(/\r/g,`%0D`).replace(/"/g,`%22`),i=e=>e.replace(/\r?\n|\r/g,`\r +`),a=[],o=new Uint8Array([13,10]);u=0;let s=!1;for(let[t,c]of e)if(typeof c==`string`){let e=k.encode(n+`; name="${r(i(t))}"\r\n\r\n${i(c)}\r\n`);a.push(e),u+=e.byteLength}else{let e=k.encode(`${n}; name="${r(i(t))}"`+(c.name?`; filename="${r(c.name)}"`:``)+`\r +Content-Type: ${c.type||`application/octet-stream`}\r\n\r\n`);a.push(e,c,o),typeof c.size==`number`?u+=e.byteLength+c.size+o.byteLength:s=!0}let f=k.encode(`--${t}--`);a.push(f),u+=f.byteLength,s&&(u=null),l=e,c=async function*(){for(let e of a)e.stream?yield*e.stream():yield e},d=`multipart/form-data; boundary=`+t}else if(a(e))l=e,u=e.size,e.type&&(d=e.type);else if(typeof e[Symbol.asyncIterator]==`function`){if(t)throw TypeError(`keepalive`);if(r.isDisturbed(e)||e.locked)throw TypeError(`Response body object should not be disturbed or locked`);n=e instanceof D?e:i(e)}if((typeof l==`string`||r.isBuffer(l))&&(u=Buffer.byteLength(l)),c!=null){let t;n=new D({async start(){t=c(e)[Symbol.asyncIterator]()},async pull(e){let{value:r,done:i}=await t.next();return i?queueMicrotask(()=>{e.close()}):y(n)||e.enqueue(new Uint8Array(r)),e.desiredSize>0},async cancel(e){await t.return()},type:void 0})}return[{stream:n,source:l,length:u},d]}function N(e,t=!1){return D||=T(`stream/web`).ReadableStream,e instanceof D&&(v(!r.isDisturbed(e),`The body has already been consumed.`),v(!e.locked,`The stream is locked.`)),j(e,t)}function ee(e){let[t,n]=e.stream.tee(),[,r]=m(n,{transfer:[n]}).tee();return e.stream=t,{stream:r,length:e.length,source:e.source}}async function*F(e){if(e)if(b(e))yield e;else{let t=e.stream;if(r.isDisturbed(t))throw TypeError(`The body has already been consumed.`);if(t.locked)throw TypeError(`The stream is locked.`);t[_]=!0,yield*t}}function I(e){if(e.aborted)throw new p(`The operation was aborted.`,`AbortError`)}function L(e){return{blob(){return z(this,e=>{let t=H(this);return t===`failure`?t=``:t&&=w(t),new h([e],{type:t})},e)},arrayBuffer(){return z(this,e=>new Uint8Array(e).buffer,e)},text(){return z(this,V,e)},json(){return z(this,te,e)},async formData(){f.brandCheck(this,e),I(this[d]);let t=this.headers.get(`Content-Type`);if(/multipart\/form-data/.test(t)){let e={};for(let[t,n]of this.headers)e[t.toLowerCase()]=n;let t=new u,r;try{r=new n({headers:e,preservePath:!0})}catch(e){throw new p(`${e}`,`AbortError`)}r.on(`field`,(e,n)=>{t.append(e,n)}),r.on(`file`,(e,n,r,i,a)=>{let o=[];if(i===`base64`||i.toLowerCase()===`base64`){let i=``;n.on(`data`,e=>{i+=e.toString().replace(/[\r\n]/gm,``);let t=i.length-i.length%4;o.push(Buffer.from(i.slice(0,t),`base64`)),i=i.slice(t)}),n.on(`end`,()=>{o.push(Buffer.from(i,`base64`)),t.append(e,new O(o,r,{type:a}))})}else n.on(`data`,e=>{o.push(e)}),n.on(`end`,()=>{t.append(e,new O(o,r,{type:a}))})});let i=new Promise((e,t)=>{r.on(`finish`,e),r.on(`error`,e=>t(TypeError(e)))});if(this.body!==null)for await(let e of F(this[d].body))r.write(e);return r.end(),await i,t}else if(/application\/x-www-form-urlencoded/.test(t)){let e;try{let t=``,n=new TextDecoder(`utf-8`,{ignoreBOM:!0});for await(let e of F(this[d].body)){if(!b(e))throw TypeError(`Expected Uint8Array chunk`);t+=n.decode(e,{stream:!0})}t+=n.decode(),e=new URLSearchParams(t)}catch(e){throw Object.assign(TypeError(),{cause:e})}let t=new u;for(let[n,r]of e)t.append(n,r);return t}else throw await Promise.resolve(),I(this[d]),f.errors.exception({header:`${e.name}.formData`,message:`Could not parse content as FormData.`})}}}function R(e){Object.assign(e.prototype,L(e))}async function z(e,t,n){if(f.brandCheck(e,n),I(e[d]),B(e[d].body))throw TypeError(`Body is unusable`);let r=c(),i=e=>r.reject(e),a=e=>{try{r.resolve(t(e))}catch(e){i(e)}};return e[d].body==null?(a(new Uint8Array),r.promise):(await l(e[d].body,a,i),r.promise)}function B(e){return e!=null&&(e.stream.locked||r.isDisturbed(e.stream))}function V(e){return e.length===0?``:(e[0]===239&&e[1]===187&&e[2]===191&&(e=e.subarray(3)),A.decode(e))}function te(e){return JSON.parse(V(e))}function H(e){let{headersList:t}=e[d],n=t.get(`content-type`);return n===null?`failure`:C(n)}t.exports={extractBody:j,safelyExtractBody:N,cloneBody:ee,mixinBody:R}})),fe=b(((e,t)=>{let{InvalidArgumentError:n,NotSupportedError:r}=N(),i=T(`assert`),{kHTTP2BuildRequest:a,kHTTP2CopyHeaders:o,kHTTP1BuildRequest:s}=M(),c=P(),l=/^[\^_`a-zA-Z\-0-9!#$%&'*+.|~]+$/,u=/[^\t\x20-\x7e\x80-\xff]/,d=/[^\u0021-\u00ff]/,f=Symbol(`handler`),p={},m;try{let e=T(`diagnostics_channel`);p.create=e.channel(`undici:request:create`),p.bodySent=e.channel(`undici:request:bodySent`),p.headers=e.channel(`undici:request:headers`),p.trailers=e.channel(`undici:request:trailers`),p.error=e.channel(`undici:request:error`)}catch{p.create={hasSubscribers:!1},p.bodySent={hasSubscribers:!1},p.headers={hasSubscribers:!1},p.trailers={hasSubscribers:!1},p.error={hasSubscribers:!1}}var h=class e{constructor(e,{path:t,method:r,body:i,headers:a,query:o,idempotent:s,blocking:u,upgrade:h,headersTimeout:g,bodyTimeout:v,reset:y,throwOnError:b,expectContinue:x},S){if(typeof t!=`string`)throw new n(`path must be a string`);if(t[0]!==`/`&&!(t.startsWith(`http://`)||t.startsWith(`https://`))&&r!==`CONNECT`)throw new n(`path must be an absolute URL or start with a slash`);if(d.exec(t)!==null)throw new n(`invalid request path`);if(typeof r!=`string`)throw new n(`method must be a string`);if(l.exec(r)===null)throw new n(`invalid request method`);if(h&&typeof h!=`string`)throw new n(`upgrade must be a string`);if(g!=null&&(!Number.isFinite(g)||g<0))throw new n(`invalid headersTimeout`);if(v!=null&&(!Number.isFinite(v)||v<0))throw new n(`invalid bodyTimeout`);if(y!=null&&typeof y!=`boolean`)throw new n(`invalid reset`);if(x!=null&&typeof x!=`boolean`)throw new n(`invalid expectContinue`);if(this.headersTimeout=g,this.bodyTimeout=v,this.throwOnError=b===!0,this.method=r,this.abort=null,i==null)this.body=null;else if(c.isStream(i)){this.body=i;let e=this.body._readableState;(!e||!e.autoDestroy)&&(this.endHandler=function(){c.destroy(this)},this.body.on(`end`,this.endHandler)),this.errorHandler=e=>{this.abort?this.abort(e):this.error=e},this.body.on(`error`,this.errorHandler)}else if(c.isBuffer(i))this.body=i.byteLength?i:null;else if(ArrayBuffer.isView(i))this.body=i.buffer.byteLength?Buffer.from(i.buffer,i.byteOffset,i.byteLength):null;else if(i instanceof ArrayBuffer)this.body=i.byteLength?Buffer.from(i):null;else if(typeof i==`string`)this.body=i.length?Buffer.from(i):null;else if(c.isFormDataLike(i)||c.isIterable(i)||c.isBlobLike(i))this.body=i;else throw new n(`body must be a string, a Buffer, a Readable stream, an iterable, or an async iterable`);if(this.completed=!1,this.aborted=!1,this.upgrade=h||null,this.path=o?c.buildURL(t,o):t,this.origin=e,this.idempotent=s??(r===`HEAD`||r===`GET`),this.blocking=u??!1,this.reset=y??null,this.host=null,this.contentLength=null,this.contentType=null,this.headers=``,this.expectContinue=x??!1,Array.isArray(a)){if(a.length%2!=0)throw new n(`headers array must be even`);for(let e=0;e{let n=T(`events`);t.exports=class extends n{dispatch(){throw Error(`not implemented`)}close(){throw Error(`not implemented`)}destroy(){throw Error(`not implemented`)}}})),me=b(((e,t)=>{let n=pe(),{ClientDestroyedError:r,ClientClosedError:i,InvalidArgumentError:a}=N(),{kDestroy:o,kClose:s,kDispatch:c,kInterceptors:l}=M(),u=Symbol(`destroyed`),d=Symbol(`closed`),f=Symbol(`onDestroyed`),p=Symbol(`onClosed`),m=Symbol(`Intercepted Dispatch`);t.exports=class extends n{constructor(){super(),this[u]=!1,this[f]=null,this[d]=!1,this[p]=[]}get destroyed(){return this[u]}get closed(){return this[d]}get interceptors(){return this[l]}set interceptors(e){if(e){for(let t=e.length-1;t>=0;t--)if(typeof this[l][t]!=`function`)throw new a(`interceptor must be an function`)}this[l]=e}close(e){if(e===void 0)return new Promise((e,t)=>{this.close((n,r)=>n?t(n):e(r))});if(typeof e!=`function`)throw new a(`invalid callback`);if(this[u]){queueMicrotask(()=>e(new r,null));return}if(this[d]){this[p]?this[p].push(e):queueMicrotask(()=>e(null,null));return}this[d]=!0,this[p].push(e);let t=()=>{let e=this[p];this[p]=null;for(let t=0;tthis.destroy()).then(()=>{queueMicrotask(t)})}destroy(e,t){if(typeof e==`function`&&(t=e,e=null),t===void 0)return new Promise((t,n)=>{this.destroy(e,(e,r)=>e?n(e):t(r))});if(typeof t!=`function`)throw new a(`invalid callback`);if(this[u]){this[f]?this[f].push(t):queueMicrotask(()=>t(null,null));return}e||=new r,this[u]=!0,this[f]=this[f]||[],this[f].push(t);let n=()=>{let e=this[f];this[f]=null;for(let t=0;t{queueMicrotask(n)})}[m](e,t){if(!this[l]||this[l].length===0)return this[m]=this[c],this[c](e,t);let n=this[c].bind(this);for(let e=this[l].length-1;e>=0;e--)n=this[l][e](n);return this[m]=n,n(e,t)}dispatch(e,t){if(!t||typeof t!=`object`)throw new a(`handler must be an object`);try{if(!e||typeof e!=`object`)throw new a(`opts must be an object.`);if(this[u]||this[f])throw new r;if(this[d])throw new i;return this[m](e,t)}catch(e){if(typeof t.onError!=`function`)throw new a(`invalid onError method`);return t.onError(e),!1}}}})),he=b(((e,t)=>{let n=T(`net`),r=T(`assert`),i=P(),{InvalidArgumentError:a,ConnectTimeoutError:o}=N(),s,c;c=global.FinalizationRegistry&&!process.env.NODE_V8_COVERAGE?class{constructor(e){this._maxCachedSessions=e,this._sessionCache=new Map,this._sessionRegistry=new global.FinalizationRegistry(e=>{if(this._sessionCache.size=this._maxCachedSessions){let{value:e}=this._sessionCache.keys().next();this._sessionCache.delete(e)}this._sessionCache.set(e,t)}}};function l({allowH2:e,maxCachedSessions:t,socketPath:o,timeout:l,...f}){if(t!=null&&(!Number.isInteger(t)||t<0))throw new a(`maxCachedSessions must be a positive integer or zero`);let p={path:o,...f},m=new c(t??100);return l??=1e4,e??=!1,function({hostname:t,host:a,protocol:o,port:c,servername:f,localAddress:h,httpSocket:g},_){let v;if(o===`https:`){s||=T(`tls`),f=f||p.servername||i.getServerName(a)||null;let n=f||t,o=m.get(n)||null;r(n),v=s.connect({highWaterMark:16384,...p,servername:f,session:o,localAddress:h,ALPNProtocols:e?[`http/1.1`,`h2`]:[`http/1.1`],socket:g,port:c||443,host:t}),v.on(`session`,function(e){m.set(n,e)})}else r(!g,`httpSocket can only be sent on TLS update`),v=n.connect({highWaterMark:64*1024,...p,localAddress:h,port:c||80,host:t});if(p.keepAlive==null||p.keepAlive){let e=p.keepAliveInitialDelay===void 0?6e4:p.keepAliveInitialDelay;v.setKeepAlive(!0,e)}let y=u(()=>d(v),l);return v.setNoDelay(!0).once(o===`https:`?`secureConnect`:`connect`,function(){if(y(),_){let e=_;_=null,e(null,this)}}).on(`error`,function(e){if(y(),_){let t=_;_=null,t(e)}}),v}}function u(e,t){if(!t)return()=>{};let n=null,r=null,i=setTimeout(()=>{n=setImmediate(()=>{process.platform===`win32`?r=setImmediate(()=>e()):e()})},t);return()=>{clearTimeout(i),clearImmediate(n),clearImmediate(r)}}function d(e){i.destroy(e,new o)}t.exports=l})),ge=b((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.enumToMap=void 0;function t(e){let t={};return Object.keys(e).forEach(n=>{let r=e[n];typeof r==`number`&&(t[n]=r)}),t}e.enumToMap=t})),_e=b((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.SPECIAL_HEADERS=e.HEADER_STATE=e.MINOR=e.MAJOR=e.CONNECTION_TOKEN_CHARS=e.HEADER_CHARS=e.TOKEN=e.STRICT_TOKEN=e.HEX=e.URL_CHAR=e.STRICT_URL_CHAR=e.USERINFO_CHARS=e.MARK=e.ALPHANUM=e.NUM=e.HEX_MAP=e.NUM_MAP=e.ALPHA=e.FINISH=e.H_METHOD_MAP=e.METHOD_MAP=e.METHODS_RTSP=e.METHODS_ICE=e.METHODS_HTTP=e.METHODS=e.LENIENT_FLAGS=e.FLAGS=e.TYPE=e.ERROR=void 0;let t=ge();(function(e){e[e.OK=0]=`OK`,e[e.INTERNAL=1]=`INTERNAL`,e[e.STRICT=2]=`STRICT`,e[e.LF_EXPECTED=3]=`LF_EXPECTED`,e[e.UNEXPECTED_CONTENT_LENGTH=4]=`UNEXPECTED_CONTENT_LENGTH`,e[e.CLOSED_CONNECTION=5]=`CLOSED_CONNECTION`,e[e.INVALID_METHOD=6]=`INVALID_METHOD`,e[e.INVALID_URL=7]=`INVALID_URL`,e[e.INVALID_CONSTANT=8]=`INVALID_CONSTANT`,e[e.INVALID_VERSION=9]=`INVALID_VERSION`,e[e.INVALID_HEADER_TOKEN=10]=`INVALID_HEADER_TOKEN`,e[e.INVALID_CONTENT_LENGTH=11]=`INVALID_CONTENT_LENGTH`,e[e.INVALID_CHUNK_SIZE=12]=`INVALID_CHUNK_SIZE`,e[e.INVALID_STATUS=13]=`INVALID_STATUS`,e[e.INVALID_EOF_STATE=14]=`INVALID_EOF_STATE`,e[e.INVALID_TRANSFER_ENCODING=15]=`INVALID_TRANSFER_ENCODING`,e[e.CB_MESSAGE_BEGIN=16]=`CB_MESSAGE_BEGIN`,e[e.CB_HEADERS_COMPLETE=17]=`CB_HEADERS_COMPLETE`,e[e.CB_MESSAGE_COMPLETE=18]=`CB_MESSAGE_COMPLETE`,e[e.CB_CHUNK_HEADER=19]=`CB_CHUNK_HEADER`,e[e.CB_CHUNK_COMPLETE=20]=`CB_CHUNK_COMPLETE`,e[e.PAUSED=21]=`PAUSED`,e[e.PAUSED_UPGRADE=22]=`PAUSED_UPGRADE`,e[e.PAUSED_H2_UPGRADE=23]=`PAUSED_H2_UPGRADE`,e[e.USER=24]=`USER`})(e.ERROR||={}),(function(e){e[e.BOTH=0]=`BOTH`,e[e.REQUEST=1]=`REQUEST`,e[e.RESPONSE=2]=`RESPONSE`})(e.TYPE||={}),(function(e){e[e.CONNECTION_KEEP_ALIVE=1]=`CONNECTION_KEEP_ALIVE`,e[e.CONNECTION_CLOSE=2]=`CONNECTION_CLOSE`,e[e.CONNECTION_UPGRADE=4]=`CONNECTION_UPGRADE`,e[e.CHUNKED=8]=`CHUNKED`,e[e.UPGRADE=16]=`UPGRADE`,e[e.CONTENT_LENGTH=32]=`CONTENT_LENGTH`,e[e.SKIPBODY=64]=`SKIPBODY`,e[e.TRAILING=128]=`TRAILING`,e[e.TRANSFER_ENCODING=512]=`TRANSFER_ENCODING`})(e.FLAGS||={}),(function(e){e[e.HEADERS=1]=`HEADERS`,e[e.CHUNKED_LENGTH=2]=`CHUNKED_LENGTH`,e[e.KEEP_ALIVE=4]=`KEEP_ALIVE`})(e.LENIENT_FLAGS||={});var n;(function(e){e[e.DELETE=0]=`DELETE`,e[e.GET=1]=`GET`,e[e.HEAD=2]=`HEAD`,e[e.POST=3]=`POST`,e[e.PUT=4]=`PUT`,e[e.CONNECT=5]=`CONNECT`,e[e.OPTIONS=6]=`OPTIONS`,e[e.TRACE=7]=`TRACE`,e[e.COPY=8]=`COPY`,e[e.LOCK=9]=`LOCK`,e[e.MKCOL=10]=`MKCOL`,e[e.MOVE=11]=`MOVE`,e[e.PROPFIND=12]=`PROPFIND`,e[e.PROPPATCH=13]=`PROPPATCH`,e[e.SEARCH=14]=`SEARCH`,e[e.UNLOCK=15]=`UNLOCK`,e[e.BIND=16]=`BIND`,e[e.REBIND=17]=`REBIND`,e[e.UNBIND=18]=`UNBIND`,e[e.ACL=19]=`ACL`,e[e.REPORT=20]=`REPORT`,e[e.MKACTIVITY=21]=`MKACTIVITY`,e[e.CHECKOUT=22]=`CHECKOUT`,e[e.MERGE=23]=`MERGE`,e[e[`M-SEARCH`]=24]=`M-SEARCH`,e[e.NOTIFY=25]=`NOTIFY`,e[e.SUBSCRIBE=26]=`SUBSCRIBE`,e[e.UNSUBSCRIBE=27]=`UNSUBSCRIBE`,e[e.PATCH=28]=`PATCH`,e[e.PURGE=29]=`PURGE`,e[e.MKCALENDAR=30]=`MKCALENDAR`,e[e.LINK=31]=`LINK`,e[e.UNLINK=32]=`UNLINK`,e[e.SOURCE=33]=`SOURCE`,e[e.PRI=34]=`PRI`,e[e.DESCRIBE=35]=`DESCRIBE`,e[e.ANNOUNCE=36]=`ANNOUNCE`,e[e.SETUP=37]=`SETUP`,e[e.PLAY=38]=`PLAY`,e[e.PAUSE=39]=`PAUSE`,e[e.TEARDOWN=40]=`TEARDOWN`,e[e.GET_PARAMETER=41]=`GET_PARAMETER`,e[e.SET_PARAMETER=42]=`SET_PARAMETER`,e[e.REDIRECT=43]=`REDIRECT`,e[e.RECORD=44]=`RECORD`,e[e.FLUSH=45]=`FLUSH`})(n=e.METHODS||={}),e.METHODS_HTTP=[n.DELETE,n.GET,n.HEAD,n.POST,n.PUT,n.CONNECT,n.OPTIONS,n.TRACE,n.COPY,n.LOCK,n.MKCOL,n.MOVE,n.PROPFIND,n.PROPPATCH,n.SEARCH,n.UNLOCK,n.BIND,n.REBIND,n.UNBIND,n.ACL,n.REPORT,n.MKACTIVITY,n.CHECKOUT,n.MERGE,n[`M-SEARCH`],n.NOTIFY,n.SUBSCRIBE,n.UNSUBSCRIBE,n.PATCH,n.PURGE,n.MKCALENDAR,n.LINK,n.UNLINK,n.PRI,n.SOURCE],e.METHODS_ICE=[n.SOURCE],e.METHODS_RTSP=[n.OPTIONS,n.DESCRIBE,n.ANNOUNCE,n.SETUP,n.PLAY,n.PAUSE,n.TEARDOWN,n.GET_PARAMETER,n.SET_PARAMETER,n.REDIRECT,n.RECORD,n.FLUSH,n.GET,n.POST],e.METHOD_MAP=t.enumToMap(n),e.H_METHOD_MAP={},Object.keys(e.METHOD_MAP).forEach(t=>{/^H/.test(t)&&(e.H_METHOD_MAP[t]=e.METHOD_MAP[t])}),(function(e){e[e.SAFE=0]=`SAFE`,e[e.SAFE_WITH_CB=1]=`SAFE_WITH_CB`,e[e.UNSAFE=2]=`UNSAFE`})(e.FINISH||={}),e.ALPHA=[];for(let t=65;t<=90;t++)e.ALPHA.push(String.fromCharCode(t)),e.ALPHA.push(String.fromCharCode(t+32));e.NUM_MAP={0:0,1:1,2:2,3:3,4:4,5:5,6:6,7:7,8:8,9:9},e.HEX_MAP={0:0,1:1,2:2,3:3,4:4,5:5,6:6,7:7,8:8,9:9,A:10,B:11,C:12,D:13,E:14,F:15,a:10,b:11,c:12,d:13,e:14,f:15},e.NUM=[`0`,`1`,`2`,`3`,`4`,`5`,`6`,`7`,`8`,`9`],e.ALPHANUM=e.ALPHA.concat(e.NUM),e.MARK=[`-`,`_`,`.`,`!`,`~`,`*`,`'`,`(`,`)`],e.USERINFO_CHARS=e.ALPHANUM.concat(e.MARK).concat([`%`,`;`,`:`,`&`,`=`,`+`,`$`,`,`]),e.STRICT_URL_CHAR=`!"$%&'()*+,-./:;<=>@[\\]^_\`{|}~`.split(``).concat(e.ALPHANUM),e.URL_CHAR=e.STRICT_URL_CHAR.concat([` `,`\f`]);for(let t=128;t<=255;t++)e.URL_CHAR.push(t);e.HEX=e.NUM.concat([`a`,`b`,`c`,`d`,`e`,`f`,`A`,`B`,`C`,`D`,`E`,`F`]),e.STRICT_TOKEN=[`!`,`#`,`$`,`%`,`&`,`'`,`*`,`+`,`-`,`.`,`^`,`_`,"`",`|`,`~`].concat(e.ALPHANUM),e.TOKEN=e.STRICT_TOKEN.concat([` `]),e.HEADER_CHARS=[` `];for(let t=32;t<=255;t++)t!==127&&e.HEADER_CHARS.push(t);e.CONNECTION_TOKEN_CHARS=e.HEADER_CHARS.filter(e=>e!==44),e.MAJOR=e.NUM_MAP,e.MINOR=e.MAJOR;var r;(function(e){e[e.GENERAL=0]=`GENERAL`,e[e.CONNECTION=1]=`CONNECTION`,e[e.CONTENT_LENGTH=2]=`CONTENT_LENGTH`,e[e.TRANSFER_ENCODING=3]=`TRANSFER_ENCODING`,e[e.UPGRADE=4]=`UPGRADE`,e[e.CONNECTION_KEEP_ALIVE=5]=`CONNECTION_KEEP_ALIVE`,e[e.CONNECTION_CLOSE=6]=`CONNECTION_CLOSE`,e[e.CONNECTION_UPGRADE=7]=`CONNECTION_UPGRADE`,e[e.TRANSFER_ENCODING_CHUNKED=8]=`TRANSFER_ENCODING_CHUNKED`})(r=e.HEADER_STATE||={}),e.SPECIAL_HEADERS={connection:r.CONNECTION,"content-length":r.CONTENT_LENGTH,"proxy-connection":r.CONNECTION,"transfer-encoding":r.TRANSFER_ENCODING,upgrade:r.UPGRADE}})),ve=b(((e,t)=>{let n=P(),{kBodyUsed:r}=M(),i=T(`assert`),{InvalidArgumentError:a}=N(),o=T(`events`),s=[300,301,302,303,307,308],c=Symbol(`body`);var l=class{constructor(e){this[c]=e,this[r]=!1}async*[Symbol.asyncIterator](){i(!this[r],`disturbed`),this[r]=!0,yield*this[c]}},u=class{constructor(e,t,s,c){if(t!=null&&(!Number.isInteger(t)||t<0))throw new a(`maxRedirections must be a positive number`);n.validateHandler(c,s.method,s.upgrade),this.dispatch=e,this.location=null,this.abort=null,this.opts={...s,maxRedirections:0},this.maxRedirections=t,this.handler=c,this.history=[],n.isStream(this.opts.body)?(n.bodyLength(this.opts.body)===0&&this.opts.body.on(`data`,function(){i(!1)}),typeof this.opts.body.readableDidRead!=`boolean`&&(this.opts.body[r]=!1,o.prototype.on.call(this.opts.body,`data`,function(){this[r]=!0}))):(this.opts.body&&typeof this.opts.body.pipeTo==`function`||this.opts.body&&typeof this.opts.body!=`string`&&!ArrayBuffer.isView(this.opts.body)&&n.isIterable(this.opts.body))&&(this.opts.body=new l(this.opts.body))}onConnect(e){this.abort=e,this.handler.onConnect(e,{history:this.history})}onUpgrade(e,t,n){this.handler.onUpgrade(e,t,n)}onError(e){this.handler.onError(e)}onHeaders(e,t,r,i){if(this.location=this.history.length>=this.maxRedirections||n.isDisturbed(this.opts.body)?null:d(e,t),this.opts.origin&&this.history.push(new URL(this.opts.path,this.opts.origin)),!this.location)return this.handler.onHeaders(e,t,r,i);let{origin:a,pathname:o,search:s}=n.parseURL(new URL(this.location,this.opts.origin&&new URL(this.opts.path,this.opts.origin))),c=s?`${o}${s}`:o;this.opts.headers=p(this.opts.headers,e===303,this.opts.origin!==a),this.opts.path=c,this.opts.origin=a,this.opts.maxRedirections=0,this.opts.query=null,e===303&&this.opts.method!==`HEAD`&&(this.opts.method=`GET`,this.opts.body=null)}onData(e){if(!this.location)return this.handler.onData(e)}onComplete(e){this.location?(this.location=null,this.abort=null,this.dispatch(this.opts,this)):this.handler.onComplete(e)}onBodySent(e){this.handler.onBodySent&&this.handler.onBodySent(e)}};function d(e,t){if(s.indexOf(e)===-1)return null;for(let e=0;e{let n=ve();function r({maxRedirections:e}){return t=>function(r,i){let{maxRedirections:a=e}=r;if(!a)return t(r,i);let o=new n(t,a,r,i);return r={...r,maxRedirections:0},t(r,o)}}t.exports=r})),be=b(((e,t)=>{t.exports=`AGFzbQEAAAABMAhgAX8Bf2ADf39/AX9gBH9/f38Bf2AAAGADf39/AGABfwBgAn9/AGAGf39/f39/AALLAQgDZW52GHdhc21fb25faGVhZGVyc19jb21wbGV0ZQACA2VudhV3YXNtX29uX21lc3NhZ2VfYmVnaW4AAANlbnYLd2FzbV9vbl91cmwAAQNlbnYOd2FzbV9vbl9zdGF0dXMAAQNlbnYUd2FzbV9vbl9oZWFkZXJfZmllbGQAAQNlbnYUd2FzbV9vbl9oZWFkZXJfdmFsdWUAAQNlbnYMd2FzbV9vbl9ib2R5AAEDZW52GHdhc21fb25fbWVzc2FnZV9jb21wbGV0ZQAAA0ZFAwMEAAAFAAAAAAAABQEFAAUFBQAABgAAAAAGBgYGAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAAABAQcAAAUFAwABBAUBcAESEgUDAQACBggBfwFBgNQECwfRBSIGbWVtb3J5AgALX2luaXRpYWxpemUACRlfX2luZGlyZWN0X2Z1bmN0aW9uX3RhYmxlAQALbGxodHRwX2luaXQAChhsbGh0dHBfc2hvdWxkX2tlZXBfYWxpdmUAQQxsbGh0dHBfYWxsb2MADAZtYWxsb2MARgtsbGh0dHBfZnJlZQANBGZyZWUASA9sbGh0dHBfZ2V0X3R5cGUADhVsbGh0dHBfZ2V0X2h0dHBfbWFqb3IADxVsbGh0dHBfZ2V0X2h0dHBfbWlub3IAEBFsbGh0dHBfZ2V0X21ldGhvZAARFmxsaHR0cF9nZXRfc3RhdHVzX2NvZGUAEhJsbGh0dHBfZ2V0X3VwZ3JhZGUAEwxsbGh0dHBfcmVzZXQAFA5sbGh0dHBfZXhlY3V0ZQAVFGxsaHR0cF9zZXR0aW5nc19pbml0ABYNbGxodHRwX2ZpbmlzaAAXDGxsaHR0cF9wYXVzZQAYDWxsaHR0cF9yZXN1bWUAGRtsbGh0dHBfcmVzdW1lX2FmdGVyX3VwZ3JhZGUAGhBsbGh0dHBfZ2V0X2Vycm5vABsXbGxodHRwX2dldF9lcnJvcl9yZWFzb24AHBdsbGh0dHBfc2V0X2Vycm9yX3JlYXNvbgAdFGxsaHR0cF9nZXRfZXJyb3JfcG9zAB4RbGxodHRwX2Vycm5vX25hbWUAHxJsbGh0dHBfbWV0aG9kX25hbWUAIBJs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ADcDACAAQShqQgA3AwAgAEEgakIANwMAIABBEGpCADcDACAAQQhqQgA3AwAgAEHdATYCHEEAC3sBAX8CQCAAKAIMIgMNAAJAIAAoAgRFDQAgACABNgIECwJAIAAgASACEMSAgIAAIgMNACAAKAIMDwsgACADNgIcQQAhAyAAKAIEIgFFDQAgACABIAIgACgCCBGBgICAAAAiAUUNACAAIAI2AhQgACABNgIMIAEhAwsgAwvk8wEDDn8DfgR/I4CAgIAAQRBrIgMkgICAgAAgASEEIAEhBSABIQYgASEHIAEhCCABIQkgASEKIAEhCyABIQwgASENIAEhDiABIQ8CQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgACgCHCIQQX9qDt0B2gEB2QECAwQFBgcICQoLDA0O2AEPENcBERLWARMUFRYXGBkaG+AB3wEcHR7VAR8gISIjJCXUASYnKCkqKyzTAdIBLS7RAdABLzAxMjM0NTY3ODk6Ozw9Pj9AQUJDREVG2wFHSElKzwHOAUvNAUzMAU1OT1BRUlNUVVZXWFlaW1xdXl9gYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXp7fH1+f4ABgQGCAYMBhAGFAYYBhwGIAYkB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QAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAC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FCAAIBA2AgxBACEQDLIBCyAAKAIEIRAgAEEANgIEAkAgACAQIAEQp4CAgAAiEA0AIAEhAQxNCyAAQdMANgIcIAAgATYCFCAAIBA2AgxBACEQDLEBCyAAKAIEIRAgAEEANgIEAkAgACAQIAEQp4CAgAAiEA0AIAEhAQxRCyAAQeUANgIcIAAgATYCFCAAIBA2AgxBACEQDLABCyAAQQA2AhwgACABNgIUIABBxoqAgAA2AhAgAEEHNgIMQQAhEAyvAQsgACgCBCEQIABBADYCBAJAIAAgECABEKeAgIAAIhANACABIQEMSQsgAEHSADYCHCAAIAE2AhQgACAQNgIMQQAhEAyuAQsgACgCBCEQIABBADYCBAJAIAAgECABEKeAgIAAIhANACABIQEMSQsgAEHTADYCHCAAIAE2AhQgACAQNgIMQQAhEAytAQsgACgCBCEQIABBADYCBAJAIAAgECABEKeAgIAAIhANACABIQEMTQsgAEHlADYCHCAAIAE2AhQgACAQNgIMQQAhEAysAQsgAEEANgIcIAAgATYCFCAAQdyIgIAANgIQIABBBzYCDEEAIRAMqwELIBBBP0cNASABQQFqIQELQQUhEAyQAQtBACEQIABBADYCHCAAIAE2AhQgAEH9koCAADYCECAAQQc2AgwMqAELIAAoAgQhECAAQQA2AgQCQCAAIBAgARCngICAACIQDQAgASEBDEILIABB0gA2AhwgACABNgIUIAAgEDYCDEEAIRAMpwELIAAoAgQhECAAQQA2AgQCQCAAIBAgARCngICAACIQDQAgASEBDEILIABB0wA2AhwgACABNgIUIAAgEDYCDEEAIRAMpgELIAAoAgQhECAAQQA2AgQCQCAAIBAgARCngICAACIQDQAgASEBDEYLIABB5QA2AhwgACABNgIUIAAgEDYCDEEAIRAMpQELIAAoAgQhASAAQQA2AgQCQCAAIAEgFBCngICAACIBDQAgFCEBDD8LIABB0gA2AhwgACAUNgIUIAAgATYCDEEAIRAMpAELIAAoAgQhASAAQQA2AgQCQCAAIAEgFBCngICAACIBDQAgFCEBDD8LIABB0wA2AhwgACAUNgIUIAAgATYCDEEAIRAMowELIAAoAgQhASAAQQA2AgQCQCAAIAEgFBCngICAACIBDQAgFCEBDEMLIABB5QA2AhwgACAU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YWdlX2JlZ2luYCBjYWxsYmFjayBlcnJvcgBgb25fY2h1bmtfZXh0ZW5zaW9uX3ZhbHVlYCBjYWxsYmFjayBlcnJvcgBgb25fc3RhdHVzX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fdmVyc2lvbl9jb21wbGV0ZWAgY2FsbGJhY2sgZXJyb3IAYG9uX3VybF9jb21wbGV0ZWAgY2FsbGJhY2sgZXJyb3IAYG9uX2NodW5rX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25faGVhZGVyX3ZhbHVlX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fbWVzc2FnZV9jb21wbGV0ZWAgY2FsbGJhY2sgZXJyb3IAYG9uX21ldGhvZF9jb21wbGV0ZWAgY2FsbGJhY2sgZXJyb3IAYG9uX2hlYWRlcl9maWVsZF9jb21wbGV0ZWAgY2FsbGJhY2sgZXJyb3IAYG9uX2NodW5rX2V4dGVuc2lvbl9uYW1lYCBjYWxsYmFjayBlcnJvcgBVbmV4cGVjdGVkIGNoYXIgaW4gdXJsIHNlcnZlcgBJbnZhbGlkIGhlYWRlciB2YWx1ZSBjaGFyAEludmFsaWQgaGVhZGVyIGZpZWxkIGNoYXIAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl92ZXJzaW9uAEludmFsaWQgbWlub3IgdmVyc2lvbgBJbnZhbGlkIG1ham9yIHZlcnNpb24ARXhwZWN0ZWQgc3BhY2UgYWZ0ZXIgdmVyc2lvbgBFeHBlY3RlZCBDUkxGIGFmdGVyIHZlcnNpb24ASW52YWxpZCBIVFRQIHZlcnNpb24ASW52YWxpZCBoZWFkZXIgdG9rZW4AU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl91cmwASW52YWxpZCBjaGFyYWN0ZXJzIGluIHVybABVbmV4cGVjdGVkIHN0YXJ0IGNoYXIgaW4gdXJsAERvdWJsZSBAIGluIHVybABFbXB0eSBDb250ZW50LUxlbmd0aABJbnZhbGlkIGNoYXJhY3RlciBpbiBDb250ZW50LUxlbmd0aABEdXBsaWNhdGUgQ29udGVudC1MZW5ndGgASW52YWxpZCBjaGFyIGluIHVybCBwYXRoAENvbnRlbnQtTGVuZ3RoIGNhbid0IGJlIHByZXNlbnQgd2l0aCBUcmFuc2Zlci1FbmNvZGluZwBJbnZhbGlkIGNoYXJhY3RlciBpbiBjaHVuayBzaXplAFNwYW4gY2FsbGJhY2sgZXJyb3IgaW4gb25faGVhZGVyX3ZhbHVlAFNwYW4gY2FsbGJhY2sgZXJyb3IgaW4gb25fY2h1bmtfZXh0ZW5zaW9uX3ZhbHVlAEludmFsaWQgY2hhcmFjdGVyIGluIGNodW5rIGV4dGVuc2lvbnMgdmFsdWUATWlzc2luZyBleHBlY3RlZCBMRiBhZnRlciBoZWFkZXIgdmFsdWUASW52YWxpZCBgVHJhbnNmZXItRW5jb2RpbmdgIGhlYWRlciB2YWx1ZQBJbnZhbGlkIGNoYXJhY3RlciBpbiBjaHVuayBleHRlbnNpb25zIHF1b3RlIHZhbHVlAEludmFsaWQgY2hhcmFjdGVyIGluIGNodW5rIGV4dGVuc2lvbnMgcXVvdGVkIHZhbHVlAFBhdXNlZCBieSBvbl9oZWFkZXJzX2NvbXBsZXRlAEludmFsaWQgRU9GIHN0YXRlAG9uX3Jlc2V0IHBhdXNlAG9uX2NodW5rX2hlYWRlciBwYXVzZQBvbl9tZXNzYWdlX2JlZ2luIHBhdXNlAG9uX2NodW5rX2V4dGVuc2lvbl92YWx1ZSBwYXVzZQBvbl9zdGF0dXNfY29tcGxldGUgcGF1c2UAb25fdmVyc2lvbl9jb21wbGV0ZSBwYXVzZQBvbl91cmxfY29tcGxldGUgcGF1c2UAb25fY2h1bmtfY29tcGxldGUgcGF1c2UAb25faGVhZGVyX3ZhbHVlX2NvbXBsZXRlIHBhdXNlAG9uX21lc3NhZ2VfY29tcGxldGUgcGF1c2UAb25fbWV0aG9kX2NvbXBsZXRlIHBhdXNlAG9uX2hlYWRlcl9maWVsZF9jb21wbGV0ZSBwYXVzZQBvbl9jaHVua19leHRlbnNpb25fbmFtZSBwYXVzZQBVbmV4cGVjdGVkIHNwYWNlIGFmdGVyIHN0YXJ0IGxpbmUAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9jaHVua19leHRlbnNpb25fbmFtZQBJbnZhbGlkIGNoYXJhY3RlciBpbiBjaHVuayBleHRlbnNpb25zIG5hbWUAUGF1c2Ugb24gQ09OTkVDVC9VcGdyYWRlAFBhdXNlIG9uIFBSSS9VcGdyYWRlAEV4cGVjdGVkIEhUVFAvMiBDb25uZWN0aW9uIFByZWZhY2UAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9tZXRob2QARXhwZWN0ZWQgc3BhY2UgYWZ0ZXIgbWV0aG9kAFNwYW4gY2FsbGJhY2sgZXJyb3IgaW4gb25faGVhZGVyX2ZpZWxkAFBhdXNlZABJbnZhbGlkIHdvcmQgZW5jb3VudGVyZWQASW52YWxpZCBtZXRob2QgZW5jb3VudGVyZWQAVW5leHBlY3RlZCBjaGFyIGluIHVybCBzY2hlbWEAUmVxdWVzdCBoYXMgaW52YWxpZCBgVHJhbnNmZXItRW5jb2RpbmdgAFNXSVRDSF9QUk9YWQBVU0VfUFJPWFkATUtBQ1RJVklUWQBVTlBST0NFU1NBQkxFX0VOVElUWQBDT1BZAE1PVkVEX1BFUk1BTkVOVExZAFRPT19FQVJMWQBOT1RJRlkARkFJTEVEX0RFUEVOREVOQ1kAQkFEX0dBVEVXQVkAUExBWQBQVVQAQ0hFQ0tPVVQAR0FURVdBWV9USU1FT1VUAFJFUVVFU1RfVElNRU9VVABORVRXT1JLX0NPTk5FQ1RfVElNRU9VVABDT05ORUNUSU9OX1RJTUVPVVQATE9HSU5fVElNRU9VVABORVRXT1JLX1JFQURfVElNRU9VVABQT1NUAE1JU0RJUkVDVEVEX1JFUVVFU1QAQ0xJRU5UX0NMT1NFRF9SRVFVRVNUAENMSUVOVF9DTE9TRURfTE9BRF9CQUxBTkNFRF9SRVFVRVNUAEJBRF9SRVFVRVNUAEhUVFBfUkVRVUVTVF9TRU5UX1RPX0hUVFBTX1BPUlQAUkVQT1JUAElNX0FfVEVBUE9UAFJFU0VUX0NPTlRFTlQATk9fQ09OVEVOVABQQVJUSUFMX0NPTlRFTlQASFBFX0lOVkFMSURfQ09OU1RBTlQASFBFX0NCX1JFU0VUAEdFVABIUEVfU1RSSUNUAENPTkZMSUNUAFRFTVBPUkFSWV9SRURJUkVDVABQRVJNQU5FTlRfUkVESVJFQ1QAQ09OTkVDVABNVUxUSV9TVEFUVVMASFBFX0lOVkFMSURfU1RBVFVTAFRPT19NQU5ZX1JFUVVFU1RTAEVBUkxZX0hJTlRTAFVOQVZBSUxBQkxFX0ZPUl9MRUdBTF9SRUFTT05TAE9QVElPTlMAU1dJVENISU5HX1BST1RPQ09MUwBWQVJJQU5UX0FMU09fTkVHT1RJQVRFUwBNVUxUSVBMRV9DSE9JQ0VTAElOVEVSTkFMX1NFUlZFUl9FUlJPUgBXRUJfU0VSVkVSX1VOS05PV05fRVJST1IAUkFJTEdVTl9FUlJPUgBJREVOVElUWV9QUk9WSURFUl9BVVRIRU5USUNBVElPTl9FUlJPUgBTU0xfQ0VSVElGSUNBVEVfRVJST1IASU5WQUxJRF9YX0ZPUldBUkRFRF9GT1IAU0VUX1BBUkFNRVRFUgBHRVRfUEFSQU1FVEVSAEhQRV9VU0VSAFNFRV9PVEhFUgBIUEVfQ0JfQ0hVTktfSEVBREVSAE1LQ0FMRU5EQVIAU0VUVVAAV0VCX1NFUlZFUl9JU19ET1dOAFRFQVJET1dOAEhQRV9DTE9TRURfQ09OTkVDVElPTgBIRVVSSVNUSUNfRVhQSVJBVElPTgBESVNDT05ORUNURURfT1BFUkFUSU9OAE5PTl9BVVRIT1JJVEFUSVZFX0lORk9STUFUSU9OAEhQRV9JTlZBTElEX1ZFUlNJT04ASFBFX0NCX01FU1NBR0VfQkVHSU4AU0lURV9JU19GUk9aRU4ASFBFX0lOVkFMSURfSEVBREVSX1RPS0VOAElOVkFMSURfVE9LRU4ARk9SQklEREVOAEVOSEFOQ0VfWU9VUl9DQUxNAEhQRV9JTlZBTElEX1VSTABCTE9DS0VEX0JZX1BBUkVOVEFMX0NPTlRST0wATUtDT0wAQUNMAEhQRV9JTlRFUk5BTABSRVFVRVNUX0hFQURFUl9GSUVMRFNfVE9PX0xBUkdFX1VOT0ZGSUNJQUwASFBFX09LAFVOTElOSwBVTkxPQ0sAUFJJAFJFVFJZX1dJVEgASFBFX0lOVkFMSURfQ09OVEVOVF9MRU5HVEgASFBFX1VORVhQRUNURURfQ09OVEVOVF9MRU5HVEgARkxVU0gAUFJPUFBBVENIAE0tU0VBUkNIAFVSSV9UT09fTE9ORwBQUk9DRVNTSU5HAE1JU0NFTExBTkVPVVNfUEVSU0lTVEVOVF9XQVJOSU5HAE1JU0NFTExBTkVPVVNfV0FSTklORwBIUEVfSU5WQUxJRF9UUkFOU0ZFUl9FTkNPRElORwBFeHBlY3RlZCBDUkxGAEhQRV9JTlZBTElEX0NIVU5LX1NJWkUATU9WRQBDT05USU5VRQBIUEVfQ0JfU1RBVFVTX0NPTVBMRVRFAEhQRV9DQl9IRUFERVJTX0NPTVBMRVRFAEhQRV9DQl9WRVJTSU9OX0NPTVBMRVRFAEhQRV9DQl9VUkxfQ09NUExFVEUASFBFX0NCX0NIVU5LX0NPTVBMRVRFAEhQRV9DQl9IRUFERVJfVkFMVUVfQ09NUExFVEUASFBFX0NCX0NIVU5LX0VYVEVOU0lPTl9WQUxVRV9DT01QTEVURQBIUEVfQ0JfQ0hVTktfRVhURU5TSU9OX05BTUVfQ09NUExFVEUASFBFX0NCX01FU1NBR0VfQ09NUExFVEUASFBFX0NCX01FVEhPRF9DT01QTEVURQBIUEVfQ0JfSEVBREVSX0ZJRUxEX0NPTVBMRVRFAERFTEVURQBIUEVfSU5WQUxJRF9FT0ZfU1RBVEUASU5WQUxJRF9TU0xfQ0VSVElGSUNBVEUAUEFVU0UATk9fUkVTUE9OU0UAVU5TVVBQT1JURURfTUVESUFfVFlQRQBHT05FAE5PVF9BQ0NFUFRBQkxFAFNFUlZJQ0VfVU5BVkFJTEFCTEUAUkFOR0VfTk9UX1NBVElTRklBQkxFAE9SSUdJTl9JU19VTlJFQUNIQUJMRQBSRVNQT05TRV9JU19TVEFMRQBQVVJHRQBNRVJHRQBSRVFVRVNUX0hFQURFUl9GSUVMRFNfVE9PX0xBUkdFAFJFUVVFU1RfSEVBREVSX1RPT19MQVJHRQBQQVlMT0FEX1RPT19MQVJHRQBJTlNVRkZJQ0lFTlRfU1RPUkFHRQBIUEVfUEFVU0VEX1VQR1JBREUASFBFX1BBVVNFRF9IMl9VUEdSQURFAFNPVVJDRQBBTk5PVU5DRQBUUkFDRQBIUEVfVU5FWFBFQ1RFRF9TUEFDRQBERVNDUklCRQBVTlNVQlNDUklCRQBSRUNPUkQASFBFX0lOVkFMSURfTUVUSE9EAE5PVF9GT1VORABQUk9QRklORABVTkJJTkQAUkVCSU5EAFVOQVVUSE9SSVpFRABNRVRIT0RfTk9UX0FMTE9XRUQASFRUUF9WRVJTSU9OX05PVF9TVVBQT1JURUQAQUxSRUFEWV9SRVBPUlRFRABBQ0NFUFRFRABOT1RfSU1QTEVNRU5URUQATE9PUF9ERVRFQ1RFRABIUEVfQ1JfRVhQRUNURUQASFBFX0xGX0VYUEVDVEVEAENSRUFURUQASU1fVVNFRABIUEVfUEFVU0VEAFRJTUVPVVRfT0NDVVJFRABQQVlNRU5UX1JFUVVJUkVEAFBSRUNPTkRJVElPTl9SRVFVSVJFRABQUk9YWV9BVVRIRU5USUNBVElPTl9SRVFVSVJFRABORVRXT1JLX0FVVEhFTlRJQ0FUSU9OX1JFUVVJUkVEAExFTkdUSF9SRVFVSVJFRABTU0xfQ0VSVElGSUNBVEVfUkVRVUlSRUQAVVBHUkFERV9SRVFVSVJFRABQQUdFX0VYUElSRUQAUFJFQ09ORElUSU9OX0ZBSUxFRABFWFBFQ1RBVElPTl9GQUlMRUQAUkVWQUxJREFUSU9OX0ZBSUxFRABTU0xfSEFORFNIQUtFX0ZBSUxFRABMT0NLRUQAVFJBTlNGT1JNQVRJT05fQVBQTElFRABOT1RfTU9ESUZJRUQATk9UX0VYVEVOREVEAEJBTkRXSURUSF9MSU1JVF9FWENFRURFRABTSVRFX0lTX09WRVJMT0FERUQASEVBRABFeHBlY3RlZCBIVFRQLwAAXhMAACYTAAAwEAAA8BcAAJ0TAAAVEgAAORcAAPASAAAKEAAAdRIAAK0SAACCEwAATxQAAH8QAACgFQAAIxQAAIkSAACLFAAATRUAANQRAADPFAAAEBgAAMkWAADcFgAAwREAAOAXAAC7FAAAdBQAAHwVAADlFAAACBcAAB8QAABlFQAAoxQAACgVAAACFQAAmRUAACwQAACLGQAATw8AANQOAABqEAAAzhAAAAIXAACJDgAAbhMAABwTAABmFAAAVhcAAMETAADNEwAAbBMAAGgXAABmFwAAXxcAACITAADODwAAaQ4AANgOAABjFgAAyxMAAKoOAAAoFwAAJhcAAMUTAABdFgAA6BEAAGcTAABlEwAA8hYAAHMTAAAdFwAA+RYAAPMRAADPDgAAzhUAAAwSAACzEQAApREAAGEQAAAyFwAAuxMAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQIBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAIDAgICAgIAAAICAAICAAICAgICAgICAgIABAAAAAAAAgICAgICAgICAgICAgICAgICAgICAgICAgIAAAACAgICAgICAgICAgICAgICAgICAgICAgICAgICAgACAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAACAAICAgICAAACAgACAgACAgICAgICAgICAAMABAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAAgACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbG9zZWVlcC1hbGl2ZQAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQIBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBY2h1bmtlZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEAAQEBAQEAAAEBAAEBAAEBAQEBAQEBAQEAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABlY3Rpb25lbnQtbGVuZ3Rob25yb3h5LWNvbm5lY3Rpb24AAAAAAAAAAAAAAAAAAAByYW5zZmVyLWVuY29kaW5ncGdyYWRlDQoNCg0KU00NCg0KVFRQL0NFL1RTUC8AAAAAAAAAAAAAAAABAgABAwAAAAAAAAAAAAAAAAAAAAAAAAQBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAQIAAQMAAAAAAAAAAAAAAAAAAAAAAAAEAQEFAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAEAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAQAAAgAAAAAAAAAAAAAAAAAAAAAAAAMEAAAEBAQEBAQEBAQEBAUEBAQEBAQEBAQEBAQABAAGBwQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEAAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAEAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAADAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwAAAAAAAAMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAABAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAIAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAAAAAAAADAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABOT1VOQ0VFQ0tPVVRORUNURVRFQ1JJQkVMVVNIRVRFQURTRUFSQ0hSR0VDVElWSVRZTEVOREFSVkVPVElGWVBUSU9OU0NIU0VBWVNUQVRDSEdFT1JESVJFQ1RPUlRSQ0hQQVJBTUVURVJVUkNFQlNDUklCRUFSRE9XTkFDRUlORE5LQ0tVQlNDUklCRUhUVFAvQURUUC8=`})),xe=b(((e,t)=>{t.exports=`AGFzbQEAAAABMAhgAX8Bf2ADf39/AX9gBH9/f38Bf2AAAGADf39/AGABfwBgAn9/AGAGf39/f39/AALLAQgDZW52GHdhc21fb25faGVhZGVyc19jb21wbGV0ZQACA2VudhV3YXNtX29uX21lc3NhZ2VfYmVnaW4AAANlbnYLd2FzbV9vbl91cmwAAQNlbnYOd2FzbV9vbl9zdGF0dXMAAQNlbnYUd2FzbV9vbl9oZWFkZXJfZmllbGQAAQNlbnYUd2FzbV9vbl9oZWFkZXJfdmFsdWUAAQNlbnYMd2FzbV9vbl9ib2R5AAEDZW52GHdhc21fb25fbWVzc2FnZV9jb21wbGV0ZQAAA0ZFAwMEAAAFAAAAAAAABQEFAAUFBQAABgAAAAAGBgYGAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAAABAQcAAAUFAwABBAUBcAESEgUDAQACBggBfwFBgNQECwfRBSIGbWVtb3J5AgALX2luaXRpYWxpemUACRlfX2luZGlyZWN0X2Z1bmN0aW9uX3RhYmxlAQALbGxodHRwX2luaXQAChhsbGh0dHBfc2hvdWxkX2tlZXBfYWxpdmUAQQxsbGh0dHBfYWxsb2MADAZtYWxsb2MARgtsbGh0dHBfZnJlZQANBGZyZWUASA9sbGh0dHBfZ2V0X3R5cGUADhVsbGh0dHBfZ2V0X2h0dHBfbWFqb3IADxVsbGh0dHBfZ2V0X2h0dHBfbWlub3IAEBFsbGh0dHBfZ2V0X21ldGhvZAARFmxsaHR0cF9nZXRfc3RhdHVzX2NvZGUAEhJsbGh0dHBfZ2V0X3VwZ3JhZGUAEwxsbGh0dHBfcmVzZXQAFA5sbGh0dHBfZXhlY3V0ZQAVFGxsaHR0cF9zZXR0aW5nc19pbml0ABYNbGxodHRwX2ZpbmlzaAAXDGxsaHR0cF9wYXVzZQAYDWxsaHR0cF9yZXN1bWUAGRtsbGh0dHBfcmVzdW1lX2FmdGVyX3VwZ3JhZGUAGhBsbGh0dHBfZ2V0X2Vycm5vABsXbGxodHRwX2dldF9lcnJvcl9yZWFzb24AHBdsbGh0dHBfc2V0X2Vycm9yX3JlYXNvbgAdFGxsaHR0cF9nZXRfZXJyb3JfcG9zAB4RbGxodHRwX2Vycm5vX25hbWUAHxJsbGh0dHBfbWV0aG9kX25hbWUAIBJsbGh0dHBfc3RhdHVzX25hbWUAIRpsbGh0dHBfc2V0X2xlbmllbnRfaGVhZGVycwAiIWxsaHR0cF9zZXRfbGVuaWVudF9jaHVua2VkX2xlbmd0aAAjHWxsaHR0cF9zZXRfbGVuaWVudF9rZWVwX2FsaXZlACQkbGxodHRwX3NldF9sZW5pZW50X3RyYW5zZmVyX2VuY29kaW5nACUYbGxodHRwX21lc3NhZ2VfbmVlZHNfZW9mAD8JFwEAQQELEQECAwQFCwYHNTk3MS8tJyspCrLgAkUCAAsIABCIgICAAAsZACAAEMKAgIAAGiAAIAI2AjggACABOgAoCxwAIAAgAC8BMiAALQAuIAAQwYCAgAAQgICAgAALKgEBf0HAABDGgICAACIBEMKAgIAAGiABQYCIgIAANgI4IAEgADoAKCABCwoAIAAQyICAgAALBwAgAC0AKAsHACAALQAqCwcAIAAtACsLBwAgAC0AKQsHACAALwEyCwcAIAAtAC4LRQEEfyAAKAIYIQEgAC0ALSECIAAtACghAyAAKAI4IQQgABDCgICAABogACAENgI4IAAgAzoAKCAAIAI6AC0gACABNgIYCxEAIAAgASABIAJqEMOAgIAACxAAIABBAEHcABDMgICAABoLZwEBf0EAIQECQCAAKAIMDQACQAJAAkACQCAALQAvDgMBAAMCCyAAKAI4IgFFDQAgASgCLCIBRQ0AIAAgARGAgICAAAAiAQ0DC0EADwsQyoCAgAAACyAAQcOWgIAANgIQQQ4hAQsgAQseAAJAIAAoAgwNACAAQdGbgIAANgIQIABBFTYCDAsLFgACQCAAKAIMQRVHDQAgAEEANgIMCwsWAAJAIAAoAgxBFkcNACAAQQA2AgwLCwcAIAAoAgwLBwAgACgCEAsJACAAIAE2AhALBwAgACgCFAsiAAJAIABBJEkNABDKgICAAAALIABBAnRBoLOAgABqKAIACyIAAkAgAEEuSQ0AEMqAgIAAAAsgAEECdEGwtICAAGooAgAL7gsBAX9B66iAgAAhAQJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIABBnH9qDvQDY2IAAWFhYWFhYQIDBAVhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhBgcICQoLDA0OD2FhYWFhEGFhYWFhYWFhYWFhEWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYRITFBUWFxgZGhthYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhHB0eHyAhIiMkJSYnKCkqKywtLi8wMTIzNDU2YTc4OTphYWFhYWFhYTthYWE8YWFhYT0+P2FhYWFhYWFhQGFhQWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYUJDREVGR0hJSktMTU5PUFFSU2FhYWFhYWFhVFVWV1hZWlthXF1hYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFeYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhX2BhC0Hhp4CAAA8LQaShgIAADwtBy6yAgAAPC0H+sYCAAA8LQcCkgIAADwtBq6SAgAAPC0GNqICAAA8LQeKmgIAADwtBgLCAgAAPC0G5r4CAAA8LQdekgIAADwtB75+AgAAPC0Hhn4CAAA8LQfqfgIAADwtB8qCAgAAPC0Gor4CAAA8LQa6ygIAADwtBiLCAgAAPC0Hsp4CAAA8LQYKigIAADwtBjp2AgAAPC0HQroCAAA8LQcqjgIAADwtBxbKAgAAPC0HfnICAAA8LQdKcgIAADwtBxKCAgAAPC0HXoICAAA8LQaKfgIAADwtB7a6AgAAPC0GrsICAAA8LQdSlgIAADwtBzK6AgAAPC0H6roCAAA8LQfyrgIAADwtB0rCAgAAPC0HxnYCAAA8LQbuggIAADwtB96uAgAAPC0GQsYCAAA8LQdexgIAADwtBoq2AgAAPC0HUp4CAAA8LQeCrgIAADwtBn6yAgAAPC0HrsYCAAA8LQdWfgIAADwtByrGAgAAPC0HepYCAAA8LQdSegIAADwtB9JyAgAAPC0GnsoCAAA8LQbGdgIAADwtBoJ2AgAAPC0G5sYCAAA8LQbywgIAADwtBkqGAgAAPC0GzpoCAAA8LQemsgIAADwtBrJ6AgAAPC0HUq4CAAA8LQfemgIAADwtBgKaAgAAPC0GwoYCAAA8LQf6egIAADwtBjaOAgAAPC0GJrYCAAA8LQfeigIAADwtBoLGAgAAPC0Gun4CAAA8LQcalgIAADwtB6J6AgAAPC0GTooCAAA8LQcKvgIAADwtBw52AgAAPC0GLrICAAA8LQeGdgIAADwtBja+AgAAPC0HqoYCAAA8LQbStgIAADwtB0q+AgAAPC0HfsoCAAA8LQdKygIAADwtB8LCAgAAPC0GpooCAAA8LQfmjgIAADwtBmZ6AgAAPC0G1rICAAA8LQZuwgIAADwtBkrKAgAAPC0G2q4CAAA8LQcKigIAADwtB+LKAgAAPC0GepYCAAA8LQdCigIAADwtBup6AgAAPC0GBnoCAAA8LEMqAgIAAAAtB1qGAgAAhAQsgAQsWACAAIAAtAC1B/gFxIAFBAEdyOgAtCxkAIAAgAC0ALUH9AXEgAUEAR0EBdHI6AC0LGQAgACAALQAtQfsBcSABQQBHQQJ0cjoALQsZACAAIAAtAC1B9wFxIAFBAEdBA3RyOgAtCy4BAn9BACEDAkAgACgCOCIERQ0AIAQoAgAiBEUNACAAIAQRgICAgAAAIQMLIAMLSQECf0EAIQMCQCAAKAI4IgRFDQAgBCgCBCIERQ0AIAAgASACIAFrIAQRgYCAgAAAIgNBf0cNACAAQcaRgIAANgIQQRghAwsgAwsuAQJ/QQAhAwJAIAAoAjgiBEUNACAEKAIwIgRFDQAgACAEEYCAgIAAACEDCyADC0kBAn9BACEDAkAgACgCOCIERQ0AIAQoAggiBEUNACAAIAEgAiABayAEEYGAgIAAACIDQX9HDQAgAEH2ioCAADYCEEEYIQMLIAMLLgECf0EAIQMCQCAAKAI4IgRFDQAgBCgCNCIERQ0AIAAgBBGAgICAAAAhAwsgAwtJAQJ/QQAhAwJAIAAoAjgiBEUNACAEKAIMIgRFDQAgACABIAIgAWsgBBGBgICAAAAiA0F/Rw0AIABB7ZqAgAA2AhBBGCEDCyADCy4BAn9BACEDAkAgACgCOCIERQ0AIAQoAjgiBEUNACAAIAQRgICAgAAAIQMLIAMLSQECf0EAIQMCQCAAKAI4IgRFDQAgBCgCECIERQ0AIAAgASACIAFrIAQRgYCAgAAAIgNBf0cNACAAQZWQgIAANgIQQRghAwsgAwsuAQJ/QQAhAwJAIAAoAjgiBEUNACAEKAI8IgRFDQAgACAEEYCAgIAAACEDCyADC0kBAn9BACEDAkAgACgCOCIERQ0AIAQoAhQiBEUNACAAIAEgAiABayAEEYGAgIAAACIDQX9HDQAgAEGqm4CAADYCEEEYIQMLIAMLLgECf0EAIQMCQCAAKAI4IgRFDQAgBCgCQCIERQ0AIAAgBBGAgICAAAAhAwsgAwtJAQJ/QQAhAwJAIAAoAjgiBEUNACAEKAIYIgRFDQAgACABIAIgAWsgBBGBgICAAAAiA0F/Rw0AIABB7ZOAgAA2AhBBGCEDCyADCy4BAn9BACEDAkAgACgCOCIERQ0AIAQoAkQiBEUNACAAIAQRgICAgAAAIQMLIAMLLgECf0EAIQMCQCAAKAI4IgRFDQAgBCgCJCIERQ0AIAAgBBGAgICAAAAhAwsgAwsuAQJ/QQAhAwJAIAAoAjgiBEUNACAEKAIsIgRFDQAgACAEEYCAgIAAACEDCyADC0kBAn9BACEDAkAgACgCOCIERQ0AIAQoAigiBEUNACAAIAEgAiABayAEEYGAgIAAACIDQX9HDQAgAEH2iICAADYCEEEYIQMLIAMLLgECf0EAIQMCQCAAKAI4IgRFDQAgBCgCUCIERQ0AIAAgBBGAgICAAAAhAwsgAwtJAQJ/QQAhAwJAIAAoAjgiBEUNACAEKAIcIgRFDQAgACABIAIgAWsgBBGBgICAAAAiA0F/Rw0AIABBwpmAgAA2AhBBGCEDCyADCy4BAn9BACEDAkAgACgCOCIERQ0AIAQoAkgiBEUNACAAIAQRgICAgAAAIQMLIAMLSQECf0EAIQMCQCAAKAI4IgRFDQAgBCgCICIERQ0AIAAgASACIAFrIAQRgYCAgAAAIgNBf0cNACAAQZSUgIAANgIQQRghAwsgAwsuAQJ/QQAhAwJAIAAoAjgiBEUNACAEKAJMIgRFDQAgACAEEYCAgIAAACEDCyADCy4BAn9BACEDAkAgACgCOCIERQ0AIAQoAlQiBEUNACAAIAQRgICAgAAAIQMLIAMLLgECf0EAIQMCQCAAKAI4IgRFDQAgBCgCWCIERQ0AIAAgBBGAgICAAAAhAwsgAwtFAQF/AkACQCAALwEwQRRxQRRHDQBBASEDIAAtAChBAUYNASAALwEyQeUARiEDDAELIAAtAClBBUYhAwsgACADOgAuQQAL/gEBA39BASEDAkAgAC8BMCIEQQhxDQAgACkDIEIAUiEDCwJAAkAgAC0ALkUNAEEBIQUgAC0AKUEFRg0BQQEhBSAEQcAAcUUgA3FBAUcNAQtBACEFIARBwABxDQBBAiEFIARB//8DcSIDQQhxDQACQCADQYAEcUUNAAJAIAAtAChBAUcNACAALQAtQQpxDQBBBQ8LQQQPCwJAIANBIHENAAJAIAAtAChBAUYNACAALwEyQf//A3EiAEGcf2pB5ABJDQAgAEHMAUYNACAAQbACRg0AQQQhBSAEQShxRQ0CIANBiARxQYAERg0CC0EADwtBAEEDIAApAyBQGyEFCyAFC2IBAn9BACEBAkAgAC0AKEEBRg0AIAAvATJB//8DcSICQZx/akHkAEkNACACQcwBRg0AIAJBsAJGDQAgAC8BMCIAQcAAcQ0AQQEhASAAQYgEcUGABEYNACAAQShxRSEBCyABC6cBAQN/AkACQAJAIAAtACpFDQAgAC0AK0UNAEEAIQMgAC8BMCIEQQJxRQ0BDAILQQAhAyAALwEwIgRBAXFFDQELQQEhAyAALQAoQQFGDQAgAC8BMkH//wNxIgVBnH9qQeQASQ0AIAVBzAFGDQAgBUGwAkYNACAEQcAAcQ0AQQAhAyAEQYgEcUGABEYNACAEQShxQQBHIQMLIABBADsBMCAAQQA6AC8gAwuZAQECfwJAAkACQCAALQAqRQ0AIAAtACtFDQBBACEBIAAvATAiAkECcUUNAQwCC0EAIQEgAC8BMCICQQFxRQ0BC0EBIQEgAC0AKEEBRg0AIAAvATJB//8DcSIAQZx/akHkAEkNACAAQcwBRg0AIABBsAJGDQAgAkHAAHENAEEAIQEgAkGIBHFBgARGDQAgAkEocUEARyEBCyABC0kBAXsgAEEQav0MAAAAAAAAAAAAAAAAAAAAACIB/QsDACAAIAH9CwMAIABBMGogAf0LAwAgAEEgaiAB/QsDACAAQd0BNgIcQQALewEBfwJAIAAoAgwiAw0AAkAgACgCBEUNACAAIAE2AgQLAkAgACABIAIQxICAgAAiAw0AIAAoAgwPCyAAIAM2AhxBACEDIAAoAgQiAUUNACAAIAEgAiAAKAIIEYGAgIAAACIBRQ0AIAAgAjYCFCAAIAE2AgwgASEDCyADC+TzAQMOfwN+BH8jgICAgABBEGsiAySAgICAACABIQQgASEFIAEhBiABIQcgASEIIAEhCSABIQogASELIAEhDCABIQ0gASEOIAEhDwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCAAKAIcIhBBf2oO3QHaAQHZAQIDBAUGBwgJCgsMDQ7YAQ8Q1wEREtYBExQVFhcYGRob4AHfARwdHtUBHyAhIiMkJdQBJicoKSorLNMB0gEtLtEB0AEvMDEyMzQ1Njc4OTo7PD0+P0BBQkNERUbbAUdISUrPAc4BS80BTMwBTU5PUFFSU1RVVldYWVpbXF1eX2BhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ent8fX5/gAGBAYIBgwGEAYUBhgGHAYgBiQGKAYsBjAGNAY4BjwGQAZEBkgGTAZQBlQGWAZcBmAGZAZoBmwGcAZ0BngGfAaABoQGiAaMBpAGlAaYBpwGoAakBqgGrAawBrQGuAa8BsAGxAbIBswG0AbUBtgG3AcsBygG4AckBuQHIAboBuwG8Ab0BvgG/AcABwQHCAcMBxAHFAcYBANwBC0EAIRAMxgELQQ4hEAzFAQtBDSEQDMQBC0EPIRAMwwELQRAhEAzCAQtBEyEQDMEBC0EUIRAMwAELQRUhEAy/AQtBFiEQDL4BC0EXIRAMvQELQRghEAy8AQtBGSEQDLsBC0EaIRAMugELQRshEAy5AQtBHCEQDLgBC0EIIRAMtwELQR0hEAy2AQtBICEQDLUBC0EfIRAMtAELQQchEAyzAQtBISEQDLIBC0EiIRAMsQELQR4hEAywAQtBIyEQDK8BC0ESIRAMrgELQREhEAytAQtBJCEQDKwBC0ElIRAMqwELQSYhEAyqAQtBJyEQDKkBC0HDASEQDKgBC0EpIRAMpwELQSshEAymAQtBLCEQDKUBC0EtIRAMpAELQS4hEAyjAQtBLyEQDKIBC0HEASEQDKEBC0EwIRAMoAELQTQhEAyfAQtBDCEQDJ4BC0ExIRAMnQELQTIhEAycAQtBMyEQDJsBC0E5IRAMmgELQTUhEAyZAQtBxQEhEAyYAQtBCyEQDJcBC0E6IRAMlgELQTYhEAyVAQtBCiEQDJQBC0E3IRAMkwELQTghEAySAQtBPCEQDJEBC0E7IRAMkAELQT0hEAyPAQtBCSEQDI4BC0EoIRAMjQELQT4hEAyMAQtBPyEQDIsBC0HAACEQDIoBC0HBACEQDIkBC0HCACEQDIgBC0HDACEQDIcBC0HEACEQDIYBC0HFACEQDIUBC0HGACEQDIQBC0EqIRAMgwELQccAIRAMggELQcgAIRAMgQELQckAIRAMgAELQcoAIRAMfwtBywAhEAx+C0HNACEQDH0LQcwAIRAMfAtBzgAhEAx7C0HPACEQDHoLQdAAIRAMeQtB0QAhEAx4C0HSACEQDHcLQdMAIRAMdgtB1AAhEAx1C0HWACEQDHQLQdUAIRAMcwtBBiEQDHILQdcAIRAMcQtBBSEQDHALQdgAIRAMbwtBBCEQDG4LQdkAIRAMbQtB2gAhEAxsC0HbACEQDGsLQdwAIRAMagtBAyEQDGkLQd0AIRAMaAtB3gAhEAxnC0HfACEQDGYLQeEAIRAMZQtB4AAhEAxkC0HiACEQDGMLQeMAIRAMYgtBAiEQDGELQeQAIRAMYAtB5QAhEAxfC0HmACEQDF4LQecAIRAMXQtB6AAhEAxcC0HpACEQDFsLQeoAIRAMWgtB6wAhEAxZC0HsACEQDFgLQe0AIRAMVwtB7gAhEAxWC0HvACEQDFULQfAAIRAMVAtB8QAhEAxTC0HyACEQDFILQfMAIRAMUQtB9AAhEAxQC0H1ACEQDE8LQfYAIRAMTgtB9wAhEAxNC0H4ACEQDEwLQfkAIRAMSwtB+gAhEAxKC0H7ACEQDEkLQfwAIRAMSAtB/QAhEAxHC0H+ACEQDEYLQf8AIRAMRQtBgAEhEAxEC0GBASEQDEMLQYIBIRAMQgtBgwEhEAxBC0GEASEQDEALQYUBIRAMPwtBhgEhEAw+C0GHASEQDD0LQYgBIRAMPAtBiQEhEAw7C0GKASEQDDoLQYsBIRAMOQtBjAEhEAw4C0GNASEQDDcLQY4BIRAMNgtBjwEhEAw1C0GQASEQDDQLQZEBIRAMMwtBkgEhEAwyC0GTASEQDDELQZQBIRAMMAtBlQEhEAwvC0GWASEQDC4LQZcBIRAMLQtBmAEhEAwsC0GZASEQDCsLQZoBIRAMKgtBmwEhEAwpC0GcASEQDCgLQZ0BIRAMJwtBngEhEAwmC0GfASEQDCULQaABIRAMJAtBoQEhEAwjC0GiASEQDCILQaMBIRAMIQtBpAEhEAwgC0GlASEQDB8LQaYBIRAMHgtBpwEhEAwdC0GoASEQDBwLQakBIRAMGwtBqgEhEAwaC0GrASEQDBkLQawBIRAMGAtBrQEhEAwXC0GuASEQDBYLQQEhEAwVC0GvASEQDBQLQbABIRAMEwtBsQEhEAwSC0GzASEQDBELQbIBIRAMEAtBtAEhEAwPC0G1ASEQDA4LQbYBIRAMDQtBtwEhEAwMC0G4ASEQDAsLQbkBIRAMCgtBugEhEAwJC0G7ASEQDAgLQcYBIRAMBwtBvAEhEAwGC0G9ASEQDAULQb4BIRAMBAtBvwEhEAwDC0HAASEQDAILQcIBIRAMAQtBwQEhEAsDQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIBAOxwEAAQID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YWNrIGVycm9yAGBvbl9jaHVua19leHRlbnNpb25fdmFsdWVgIGNhbGxiYWNrIGVycm9yAGBvbl9zdGF0dXNfY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl92ZXJzaW9uX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fdXJsX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fY2h1bmtfY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl9oZWFkZXJfdmFsdWVfY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl9tZXNzYWdlX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fbWV0aG9kX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25faGVhZGVyX2ZpZWxkX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fY2h1bmtfZXh0ZW5zaW9uX25hbWVgIGNhbGxiYWNrIGVycm9yAFVuZXhwZWN0ZWQgY2hhciBpbiB1cmwgc2VydmVyAEludmFsaWQgaGVhZGVyIHZhbHVlIGNoYXIASW52YWxpZCBoZWFkZXIgZmllbGQgY2hhcgBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX3ZlcnNpb24ASW52YWxpZCBtaW5vciB2ZXJzaW9uAEludmFsaWQgbWFqb3IgdmVyc2lvbgBFeHBlY3RlZCBzcGFjZSBhZnRlciB2ZXJzaW9uAEV4cGVjdGVkIENSTEYgYWZ0ZXIgdmVyc2lvbgBJbnZhbGlkIEhUVFAgdmVyc2lvbgBJbnZhbGlkIGhlYWRlciB0b2tlbgBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX3VybABJbnZhbGlkIGNoYXJhY3RlcnMgaW4gdXJsAFVuZXhwZWN0ZWQgc3RhcnQgY2hhciBpbiB1cmwARG91YmxlIEAgaW4gdXJsAEVtcHR5IENvbnRlbnQtTGVuZ3RoAEludmFsaWQgY2hhcmFjdGVyIGluIENvbnRlbnQtTGVuZ3RoAER1cGxpY2F0ZSBDb250ZW50LUxlbmd0aABJbnZhbGlkIGNoYXIgaW4gdXJsIHBhdGgAQ29udGVudC1MZW5ndGggY2FuJ3QgYmUgcHJlc2VudCB3aXRoIFRyYW5zZmVyLUVuY29kaW5nAEludmFsaWQgY2hhcmFjdGVyIGluIGNodW5rIHNpemUAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9oZWFkZXJfdmFsdWUAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9jaHVua19leHRlbnNpb25fdmFsdWUASW52YWxpZCBjaGFyYWN0ZXIgaW4gY2h1bmsgZXh0ZW5zaW9ucyB2YWx1ZQBNaXNzaW5nIGV4cGVjdGVkIExGIGFmdGVyIGhlYWRlciB2YWx1ZQBJbnZhbGlkIGBUcmFuc2Zlci1FbmNvZGluZ2AgaGVhZGVyIHZhbHVlAEludmFsaWQgY2hhcmFjdGVyIGluIGNodW5rIGV4dGVuc2lvbnMgcXVvdGUgdmFsdWUASW52YWxpZCBjaGFyYWN0ZXIgaW4gY2h1bmsgZXh0ZW5zaW9ucyBxdW90ZWQgdmFsdWUAUGF1c2VkIGJ5IG9uX2hlYWRlcnNfY29tcGxldGUASW52YWxpZCBFT0Ygc3RhdGUAb25fcmVzZXQgcGF1c2UAb25fY2h1bmtfaGVhZGVyIHBhdXNlAG9uX21lc3NhZ2VfYmVnaW4gcGF1c2UAb25fY2h1bmtfZXh0ZW5zaW9uX3ZhbHVlIHBhdXNlAG9uX3N0YXR1c19jb21wbGV0ZSBwYXVzZQBvbl92ZXJzaW9uX2NvbXBsZXRlIHBhdXNlAG9uX3VybF9jb21wbGV0ZSBwYXVzZQBvbl9jaHVua19jb21wbGV0ZSBwYXVzZQBvbl9oZWFkZXJfdmFsdWVfY29tcGxldGUgcGF1c2UAb25fbWVzc2FnZV9jb21wbGV0ZSBwYXVzZQBvbl9tZXRob2RfY29tcGxldGUgcGF1c2UAb25faGVhZGVyX2ZpZWxkX2NvbXBsZXRlIHBhdXNlAG9uX2NodW5rX2V4dGVuc2lvbl9uYW1lIHBhdXNlAFVuZXhwZWN0ZWQgc3BhY2UgYWZ0ZXIgc3RhcnQgbGluZQBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX2NodW5rX2V4dGVuc2lvbl9uYW1lAEludmFsaWQgY2hhcmFjdGVyIGluIGNodW5rIGV4dGVuc2lvbnMgbmFtZQBQYXVzZSBvbiBDT05ORUNUL1VwZ3JhZGUAUGF1c2Ugb24gUFJJL1VwZ3JhZGUARXhwZWN0ZWQgSFRUUC8yIENvbm5lY3Rpb24gUHJlZmFjZQBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX21ldGhvZABFeHBlY3RlZCBzcGFjZSBhZnRlciBtZXRob2QAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9oZWFkZXJfZmllbGQAUGF1c2VkAEludmFsaWQgd29yZCBlbmNvdW50ZXJlZABJbnZhbGlkIG1ldGhvZCBlbmNvdW50ZXJlZABVbmV4cGVjdGVkIGNoYXIgaW4gdXJsIHNjaGVtYQBSZXF1ZXN0IGhhcyBpbnZhbGlkIGBUcmFuc2Zlci1FbmNvZGluZ2AAU1dJVENIX1BST1hZAFVTRV9QUk9YWQBNS0FDVElWSVRZAFVOUFJPQ0VTU0FCTEVfRU5USVRZAENPUFkATU9WRURfUEVSTUFORU5UTFkAVE9PX0VBUkxZAE5PVElGWQBGQUlMRURfREVQRU5ERU5DWQBCQURfR0FURVdBWQBQTEFZAFBVVABDSEVDS09VVABHQVRFV0FZX1RJTUVPVVQAUkVRVUVTVF9USU1FT1VUAE5FVFdPUktfQ09OTkVDVF9USU1FT1VUAENPTk5FQ1RJT05fVElNRU9VVABMT0dJTl9USU1FT1VUAE5FVFdPUktfUkVBRF9USU1FT1VUAFBPU1QATUlTRElSRUNURURfUkVRVUVTVABDTElFTlRfQ0xPU0VEX1JFUVVFU1QAQ0xJRU5UX0NMT1NFRF9MT0FEX0JBTEFOQ0VEX1JFUVVFU1QAQkFEX1JFUVVFU1QASFRUUF9SRVFVRVNUX1NFTlRfVE9fSFRUUFNfUE9SVABSRVBPUlQASU1fQV9URUFQT1QAUkVTRVRfQ09OVEVOVABOT19DT05URU5UAFBBUlRJQUxfQ09OVEVOVABIUEVfSU5WQUxJRF9DT05TVEFOVABIUEVfQ0JfUkVTRVQAR0VUAEhQRV9TVFJJQ1QAQ09ORkxJQ1QAVEVNUE9SQVJZX1JFRElSRUNUAFBFUk1BTkVOVF9SRURJUkVDVABDT05ORUNUAE1VTFRJX1NUQVRVUwBIUEVfSU5WQUxJRF9TVEFUVVMAVE9PX01BTllfUkVRVUVTVFMARUFSTFlfSElOVFMAVU5BVkFJTEFCTEVfRk9SX0xFR0FMX1JFQVNPTlMAT1BUSU9OUwBTV0lUQ0hJTkdfUFJPVE9DT0xTAFZBUklBTlRfQUxTT19ORUdPVElBVEVTAE1VTFRJUExFX0NIT0lDRVMASU5URVJOQUxfU0VSVkVSX0VSUk9SAFdFQl9TRVJWRVJfVU5LTk9XTl9FUlJPUgBSQUlMR1VOX0VSUk9SAElERU5USVRZX1BST1ZJREVSX0FVVEhFTlRJQ0FUSU9OX0VSUk9SAFNTTF9DRVJUSUZJQ0FURV9FUlJPUgBJTlZBTElEX1hfRk9SV0FSREVEX0ZPUgBTRVRfUEFSQU1FVEVSAEdFVF9QQVJBTUVURVIASFBFX1VTRVIAU0VFX09USEVSAEhQRV9DQl9DSFVOS19IRUFERVIATUtDQUxFTkRBUgBTRVRVUABXRUJfU0VSVkVSX0lTX0RPV04AVEVBUkRPV04ASFBFX0NMT1NFRF9DT05ORUNUSU9OAEhFVVJJU1RJQ19FWFBJUkFUSU9OAERJU0NPTk5FQ1RFRF9PUEVSQVRJT04ATk9OX0FVVEhPUklUQVRJVkVfSU5GT1JNQVRJT04ASFBFX0lOVkFMSURfVkVSU0lPTgBIUEVfQ0JfTUVTU0FHRV9CRUdJTgBTSVRFX0lTX0ZST1pFTgBIUEVfSU5WQUxJRF9IRUFERVJfVE9LRU4ASU5WQUxJRF9UT0tFTgBGT1JCSURERU4ARU5IQU5DRV9ZT1VSX0NBTE0ASFBFX0lOVkFMSURfVVJMAEJMT0NLRURfQllfUEFSRU5UQUxfQ09OVFJPTABNS0NPTABBQ0wASFBFX0lOVEVSTkFMAFJFUVVFU1RfSEVBREVSX0ZJRUxEU19UT09fTEFSR0VfVU5PRkZJQ0lBTABIUEVfT0sAVU5MSU5LAFVOTE9DSwBQUkkAUkVUUllfV0lUSABIUEVfSU5WQUxJRF9DT05URU5UX0xFTkdUSABIUEVfVU5FWFBFQ1RFRF9DT05URU5UX0xFTkdUSABGTFVTSABQUk9QUEFUQ0gATS1TRUFSQ0gAVVJJX1RPT19MT05HAFBST0NFU1NJTkcATUlTQ0VMTEFORU9VU19QRVJTSVNURU5UX1dBUk5JTkcATUlTQ0VMTEFORU9VU19XQVJOSU5HAEhQRV9JTlZBTElEX1RSQU5TRkVSX0VOQ09ESU5HAEV4cGVjdGVkIENSTEYASFBFX0lOVkFMSURfQ0hVTktfU0laRQBNT1ZFAENPTlRJTlVFAEhQRV9DQl9TVEFUVVNfQ09NUExFVEUASFBFX0NCX0hFQURFUlNfQ09NUExFVEUASFBFX0NCX1ZFUlNJT05fQ09NUExFVEUASFBFX0NCX1VSTF9DT01QTEVURQBIUEVfQ0JfQ0hVTktfQ09NUExFVEUASFBFX0NCX0hFQURFUl9WQUxVRV9DT01QTEVURQBIUEVfQ0JfQ0hVTktfRVhURU5TSU9OX1ZBTFVFX0NPTVBMRVRFAEhQRV9DQl9DSFVOS19FWFRFTlNJT05fTkFNRV9DT01QTEVURQBIUEVfQ0JfTUVTU0FHRV9DT01QTEVURQBIUEVfQ0JfTUVUSE9EX0NPTVBMRVRFAEhQRV9DQl9IRUFERVJfRklFTERfQ09NUExFVEUAREVMRVRFAEhQRV9JTlZBTElEX0VPRl9TVEFURQBJTlZBTElEX1NTTF9DRVJUSUZJQ0FURQBQQVVTRQBOT19SRVNQT05TRQBVTlNVUFBPUlRFRF9NRURJQV9UWVBFAEdPTkUATk9UX0FDQ0VQVEFCTEUAU0VSVklDRV9VTkFWQUlMQUJMRQBSQU5HRV9OT1RfU0FUSVNGSUFCTEUAT1JJR0lOX0lTX1VOUkVBQ0hBQkxFAFJFU1BPTlNFX0lTX1NUQUxFAFBVUkdFAE1FUkdFAFJFUVVFU1RfSEVBREVSX0ZJRUxEU19UT09fTEFSR0UAUkVRVUVTVF9IRUFERVJfVE9PX0xBUkdFAFBBWUxPQURfVE9PX0xBUkdFAElOU1VGRklDSUVOVF9TVE9SQUdFAEhQRV9QQVVTRURfVVBHUkFERQBIUEVfUEFVU0VEX0gyX1VQR1JBREUAU09VUkNFAEFOTk9VTkNFAFRSQUNFAEhQRV9VTkVYUEVDVEVEX1NQQUNFAERFU0NSSUJFAFVOU1VCU0NSSUJFAFJFQ09SRABIUEVfSU5WQUxJRF9NRVRIT0QATk9UX0ZPVU5EAFBST1BGSU5EAFVOQklORABSRUJJTkQAVU5BVVRIT1JJWkVEAE1FVEhPRF9OT1RfQUxMT1dFRABIVFRQX1ZFUlNJT05fTk9UX1NVUFBPUlRFRABBTFJFQURZX1JFUE9SVEVEAEFDQ0VQVEVEAE5PVF9JTVBMRU1FTlRFRABMT09QX0RFVEVDVEVEAEhQRV9DUl9FWFBFQ1RFRABIUEVfTEZfRVhQRUNURUQAQ1JFQVRFRABJTV9VU0VEAEhQRV9QQVVTRUQAVElNRU9VVF9PQ0NVUkVEAFBBWU1FTlRfUkVRVUlSRUQAUFJFQ09ORElUSU9OX1JFUVVJUkVEAFBST1hZX0FVVEhFTlRJQ0FUSU9OX1JFUVVJUkVEAE5FVFdPUktfQVVUSEVOVElDQVRJT05fUkVRVUlSRUQATEVOR1RIX1JFUVVJUkVEAFNTTF9DRVJUSUZJQ0FURV9SRVFVSVJFRABVUEdSQURFX1JFUVVJUkVEAFBBR0VfRVhQSVJFRABQUkVDT05ESVRJT05fRkFJTEVEAEVYUEVDVEFUSU9OX0ZBSUxFRABSRVZBTElEQVRJT05fRkFJTEVEAFNTTF9IQU5EU0hBS0VfRkFJTEVEAExPQ0tFRABUUkFOU0ZPUk1BVElPTl9BUFBMSUVEAE5PVF9NT0RJRklFRABOT1RfRVhURU5ERUQAQkFORFdJRFRIX0xJTUlUX0VYQ0VFREVEAFNJVEVfSVNfT1ZFUkxPQURFRABIRUFEAEV4cGVjdGVkIEhUVFAvAABeEwAAJhMAADAQAADwFwAAnRMAABUSAAA5FwAA8BIAAAoQAAB1EgAArRIAAIITAABPFAAAfxAAAKAVAAAjFAAAiRIAAIsUAABNFQAA1BEAAM8UAAAQGAAAyRYAANwWAADBEQAA4BcAALsUAAB0FAAAfBUAAOUUAAAIFwAAHxAAAGUVAACjFAAAKBUAAAIVAACZFQAALBAAAIsZAABPDwAA1A4AAGoQAADOEAAAAhcAAIkOAABuEwAAHBMAAGYUAABWFwAAwRMAAM0TAABsEwAAaBcAAGYXAABfFwAAIhMAAM4PAABpDgAA2A4AAGMWAADLEwAAqg4AACgXAAAmFwAAxRMAAF0WAADoEQAAZxMAAGUTAADyFgAAcxMAAB0XAAD5FgAA8xEAAM8OAADOFQAADBIAALMRAAClEQAAYRAAADIXAAC7EwAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAgMCAgICAgAAAgIAAgIAAgICAgICAgICAgAEAAAAAAACAgICAgICAgICAgICAgICAgICAgICAgICAgAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAIAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAIAAgICAgIAAAICAAICAAICAgICAgICAgIAAwAEAAAAAgICAgICAgICAgICAgICAgICAgICAgICAgIAAAACAgICAgICAgICAgICAgICAgICAgICAgICAgICAgACAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABsb3NlZWVwLWFsaXZlAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQFjaHVua2VkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQABAQEBAQAAAQEAAQEAAQEBAQEBAQEBAQAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGVjdGlvbmVudC1sZW5ndGhvbnJveHktY29ubmVjdGlvbgAAAAAAAAAAAAAAAAAAAHJhbnNmZXItZW5jb2RpbmdwZ3JhZGUNCg0KDQpTTQ0KDQpUVFAvQ0UvVFNQLwAAAAAAAAAAAAAAAAECAAEDAAAAAAAAAAAAAAAAAAAAAAAABAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAABAgABAwAAAAAAAAAAAAAAAAAAAAAAAAQBAQUBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAQAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAABAAACAAAAAAAAAAAAAAAAAAAAAAAAAwQAAAQEBAQEBAQEBAQEBQQEBAQEBAQEBAQEBAAEAAYHBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQABAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAQAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAAAAAAAAAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAEAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAgAAAAACAAAAAAAAAAAAAAAAAAAAAAADAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwAAAAAAAAMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAE5PVU5DRUVDS09VVE5FQ1RFVEVDUklCRUxVU0hFVEVBRFNFQVJDSFJHRUNUSVZJVFlMRU5EQVJWRU9USUZZUFRJT05TQ0hTRUFZU1RBVENIR0VPUkRJUkVDVE9SVFJDSFBBUkFNRVRFUlVSQ0VCU0NSSUJFQVJET1dOQUNFSU5ETktDS1VCU0NSSUJFSFRUUC9BRFRQLw==`})),Se=b(((e,t)=>{let n=T(`assert`),r=T(`net`),i=T(`http`),{pipeline:a}=T(`stream`),o=P(),s=F(),c=fe(),l=me(),{RequestContentLengthMismatchError:u,ResponseContentLengthMismatchError:d,InvalidArgumentError:f,RequestAbortedError:p,HeadersTimeoutError:m,HeadersOverflowError:h,SocketError:g,InformationalError:_,BodyTimeoutError:v,HTTPParserError:y,ResponseExceededMaxSizeError:b,ClientDestroyedError:x}=N(),S=he(),{kUrl:C,kReset:w,kServerName:E,kClient:D,kBusy:O,kParser:k,kConnect:A,kBlocking:j,kResuming:ee,kRunning:I,kPending:L,kSize:R,kWriting:z,kQueue:B,kConnected:V,kConnecting:te,kNeedDrain:H,kNoRef:ne,kKeepAliveDefaultTimeout:re,kHostHeader:U,kPendingIdx:ie,kRunningIdx:W,kError:ae,kPipelining:G,kSocket:oe,kKeepAliveTimeoutValue:se,kMaxHeadersSize:ce,kKeepAliveMaxTimeout:le,kKeepAliveTimeoutThreshold:ue,kHeadersTimeout:de,kBodyTimeout:pe,kStrictContentLength:ge,kConnector:ve,kMaxRedirections:Se,kMaxRequests:Ce,kCounter:we,kClose:Te,kDestroy:Ee,kDispatch:De,kInterceptors:Oe,kLocalAddress:ke,kMaxResponseSize:Ae,kHTTPConnVersion:je,kHost:Me,kHTTP2Session:Ne,kHTTP2SessionState:Pe,kHTTP2BuildRequest:Fe,kHTTP2CopyHeaders:Ie,kHTTP1BuildRequest:Le}=M(),Re;try{Re=T(`http2`)}catch{Re={constants:{}}}let{constants:{HTTP2_HEADER_AUTHORITY:ze,HTTP2_HEADER_METHOD:K,HTTP2_HEADER_PATH:Be,HTTP2_HEADER_SCHEME:Ve,HTTP2_HEADER_CONTENT_LENGTH:q,HTTP2_HEADER_EXPECT:He,HTTP2_HEADER_STATUS:Ue}}=Re,J=!1,We=Buffer[Symbol.species],Ge=Symbol(`kClosedResolve`),Y={};try{let e=T(`diagnostics_channel`);Y.sendHeaders=e.channel(`undici:client:sendHeaders`),Y.beforeConnect=e.channel(`undici:client:beforeConnect`),Y.connectError=e.channel(`undici:client:connectError`),Y.connected=e.channel(`undici:client:connected`)}catch{Y.sendHeaders={hasSubscribers:!1},Y.beforeConnect={hasSubscribers:!1},Y.connectError={hasSubscribers:!1},Y.connected={hasSubscribers:!1}}var Ke=class extends l{constructor(e,{interceptors:t,maxHeaderSize:n,headersTimeout:a,socketTimeout:s,requestTimeout:c,connectTimeout:l,bodyTimeout:u,idleTimeout:d,keepAlive:p,keepAliveTimeout:m,maxKeepAliveTimeout:h,keepAliveMaxTimeout:g,keepAliveTimeoutThreshold:_,socketPath:v,pipelining:y,tls:b,strictContentLength:x,maxCachedSessions:w,maxRedirections:T,connect:D,maxRequestsPerClient:O,localAddress:k,maxResponseSize:A,autoSelectFamily:j,autoSelectFamilyAttemptTimeout:M,allowH2:N,maxConcurrentStreams:P}={}){if(super(),p!==void 0)throw new f(`unsupported keepAlive, use pipelining=0 instead`);if(s!==void 0)throw new f(`unsupported socketTimeout, use headersTimeout & bodyTimeout instead`);if(c!==void 0)throw new f(`unsupported requestTimeout, use headersTimeout & bodyTimeout instead`);if(d!==void 0)throw new f(`unsupported idleTimeout, use keepAliveTimeout instead`);if(h!==void 0)throw new f(`unsupported maxKeepAliveTimeout, use keepAliveMaxTimeout instead`);if(n!=null&&!Number.isFinite(n))throw new f(`invalid maxHeaderSize`);if(v!=null&&typeof v!=`string`)throw new f(`invalid socketPath`);if(l!=null&&(!Number.isFinite(l)||l<0))throw new f(`invalid connectTimeout`);if(m!=null&&(!Number.isFinite(m)||m<=0))throw new f(`invalid keepAliveTimeout`);if(g!=null&&(!Number.isFinite(g)||g<=0))throw new f(`invalid keepAliveMaxTimeout`);if(_!=null&&!Number.isFinite(_))throw new f(`invalid keepAliveTimeoutThreshold`);if(a!=null&&(!Number.isInteger(a)||a<0))throw new f(`headersTimeout must be a positive integer or zero`);if(u!=null&&(!Number.isInteger(u)||u<0))throw new f(`bodyTimeout must be a positive integer or zero`);if(D!=null&&typeof D!=`function`&&typeof D!=`object`)throw new f(`connect must be a function or an object`);if(T!=null&&(!Number.isInteger(T)||T<0))throw new f(`maxRedirections must be a positive number`);if(O!=null&&(!Number.isInteger(O)||O<0))throw new f(`maxRequestsPerClient must be a positive number`);if(k!=null&&(typeof k!=`string`||r.isIP(k)===0))throw new f(`localAddress must be valid string IP address`);if(A!=null&&(!Number.isInteger(A)||A<-1))throw new f(`maxResponseSize must be a positive number`);if(M!=null&&(!Number.isInteger(M)||M<-1))throw new f(`autoSelectFamilyAttemptTimeout must be a positive number`);if(N!=null&&typeof N!=`boolean`)throw new f(`allowH2 must be a valid boolean value`);if(P!=null&&(typeof P!=`number`||P<1))throw new f(`maxConcurrentStreams must be a possitive integer, greater than 0`);typeof D!=`function`&&(D=S({...b,maxCachedSessions:w,allowH2:N,socketPath:v,timeout:l,...o.nodeHasAutoSelectFamily&&j?{autoSelectFamily:j,autoSelectFamilyAttemptTimeout:M}:void 0,...D})),this[Oe]=t&&t.Client&&Array.isArray(t.Client)?t.Client:[Qe({maxRedirections:T})],this[C]=o.parseOrigin(e),this[ve]=D,this[oe]=null,this[G]=y??1,this[ce]=n||i.maxHeaderSize,this[re]=m??4e3,this[le]=g??6e5,this[ue]=_??1e3,this[se]=this[re],this[E]=null,this[ke]=k??null,this[ee]=0,this[H]=0,this[U]=`host: ${this[C].hostname}${this[C].port?`:${this[C].port}`:``}\r\n`,this[pe]=u??3e5,this[de]=a??3e5,this[ge]=x??!0,this[Se]=T,this[Ce]=O,this[Ge]=null,this[Ae]=A>-1?A:-1,this[je]=`h1`,this[Ne]=null,this[Pe]=N?{openStreams:0,maxConcurrentStreams:P??100}:null,this[Me]=`${this[C].hostname}${this[C].port?`:${this[C].port}`:``}`,this[B]=[],this[W]=0,this[ie]=0}get pipelining(){return this[G]}set pipelining(e){this[G]=e,ht(this,!0)}get[L](){return this[B].length-this[ie]}get[I](){return this[ie]-this[W]}get[R](){return this[B].length-this[W]}get[V](){return!!this[oe]&&!this[te]&&!this[oe].destroyed}get[O](){let e=this[oe];return e&&(e[w]||e[z]||e[j])||this[R]>=(this[G]||1)||this[L]>0}[A](e){pt(this),this.once(`connect`,e)}[De](e,t){let n=e.origin||this[C].origin,r=this[je]===`h2`?c[Fe](n,e,t):c[Le](n,e,t);return this[B].push(r),this[ee]||(o.bodyLength(r.body)==null&&o.isIterable(r.body)?(this[ee]=1,process.nextTick(ht,this)):ht(this,!0)),this[ee]&&this[H]!==2&&this[O]&&(this[H]=2),this[H]<2}async[Te](){return new Promise(e=>{this[R]?this[Ge]=e:e(null)})}async[Ee](e){return new Promise(t=>{let n=this[B].splice(this[ie]);for(let t=0;t{this[Ge]&&(this[Ge](),this[Ge]=null),t()};this[Ne]!=null&&(o.destroy(this[Ne],e),this[Ne]=null,this[Pe]=null),this[oe]?o.destroy(this[oe].on(`close`,r),e):queueMicrotask(r),ht(this)})}};function qe(e){n(e.code!==`ERR_TLS_CERT_ALTNAME_INVALID`),this[oe][ae]=e,ut(this[D],e)}function Je(e,t,n){let r=new _(`HTTP/2: "frameError" received - type ${e}, code ${t}`);n===0&&(this[oe][ae]=r,ut(this[D],r))}function Ye(){o.destroy(this,new g(`other side closed`)),o.destroy(this[oe],new g(`other side closed`))}function Xe(e){let t=this[D],r=new _(`HTTP/2: "GOAWAY" frame received with code ${e}`);if(t[oe]=null,t[Ne]=null,t.destroyed){n(this[L]===0);let e=t[B].splice(t[W]);for(let t=0;t0){let e=t[B][t[W]];t[B][t[W]++]=null,wt(t,e,r)}t[ie]=t[W],n(t[I]===0),t.emit(`disconnect`,t[C],[t],r),ht(t)}let Ze=_e(),Qe=ye(),$e=Buffer.alloc(0);async function et(){let e=process.env.JEST_WORKER_ID?be():void 0,t;try{t=await WebAssembly.compile(Buffer.from(xe(),`base64`))}catch{t=await WebAssembly.compile(Buffer.from(e||be(),`base64`))}return await WebAssembly.instantiate(t,{env:{wasm_on_url:(e,t,n)=>0,wasm_on_status:(e,t,r)=>{n.strictEqual(rt.ptr,e);let i=t-ot+it.byteOffset;return rt.onStatus(new We(it.buffer,i,r))||0},wasm_on_message_begin:e=>(n.strictEqual(rt.ptr,e),rt.onMessageBegin()||0),wasm_on_header_field:(e,t,r)=>{n.strictEqual(rt.ptr,e);let i=t-ot+it.byteOffset;return rt.onHeaderField(new We(it.buffer,i,r))||0},wasm_on_header_value:(e,t,r)=>{n.strictEqual(rt.ptr,e);let i=t-ot+it.byteOffset;return rt.onHeaderValue(new We(it.buffer,i,r))||0},wasm_on_headers_complete:(e,t,r,i)=>(n.strictEqual(rt.ptr,e),rt.onHeadersComplete(t,!!r,!!i)||0),wasm_on_body:(e,t,r)=>{n.strictEqual(rt.ptr,e);let i=t-ot+it.byteOffset;return rt.onBody(new We(it.buffer,i,r))||0},wasm_on_message_complete:e=>(n.strictEqual(rt.ptr,e),rt.onMessageComplete()||0)}})}let tt=null,nt=et();nt.catch();let rt=null,it=null,at=0,ot=null;var st=class{constructor(e,t,{exports:r}){n(Number.isFinite(e[ce])&&e[ce]>0),this.llhttp=r,this.ptr=this.llhttp.llhttp_alloc(Ze.TYPE.RESPONSE),this.client=e,this.socket=t,this.timeout=null,this.timeoutValue=null,this.timeoutType=null,this.statusCode=null,this.statusText=``,this.upgrade=!1,this.headers=[],this.headersSize=0,this.headersMaxSize=e[ce],this.shouldKeepAlive=!1,this.paused=!1,this.resume=this.resume.bind(this),this.bytesRead=0,this.keepAlive=``,this.contentLength=``,this.connection=``,this.maxResponseSize=e[Ae]}setTimeout(e,t){this.timeoutType=t,e===this.timeoutValue?this.timeout&&this.timeout.refresh&&this.timeout.refresh():(s.clearTimeout(this.timeout),e?(this.timeout=s.setTimeout(ct,e,this),this.timeout.unref&&this.timeout.unref()):this.timeout=null,this.timeoutValue=e)}resume(){this.socket.destroyed||!this.paused||(n(this.ptr!=null),n(rt==null),this.llhttp.llhttp_resume(this.ptr),n(this.timeoutType===2),this.timeout&&this.timeout.refresh&&this.timeout.refresh(),this.paused=!1,this.execute(this.socket.read()||$e),this.readMore())}readMore(){for(;!this.paused&&this.ptr;){let e=this.socket.read();if(e===null)break;this.execute(e)}}execute(e){n(this.ptr!=null),n(rt==null),n(!this.paused);let{socket:t,llhttp:r}=this;e.length>at&&(ot&&r.free(ot),at=Math.ceil(e.length/4096)*4096,ot=r.malloc(at)),new Uint8Array(r.memory.buffer,ot,at).set(e);try{let n;try{it=e,rt=this,n=r.llhttp_execute(this.ptr,ot,e.length)}catch(e){throw e}finally{rt=null,it=null}let i=r.llhttp_get_error_pos(this.ptr)-ot;if(n===Ze.ERROR.PAUSED_UPGRADE)this.onUpgrade(e.slice(i));else if(n===Ze.ERROR.PAUSED)this.paused=!0,t.unshift(e.slice(i));else if(n!==Ze.ERROR.OK){let t=r.llhttp_get_error_reason(this.ptr),a=``;if(t){let e=new Uint8Array(r.memory.buffer,t).indexOf(0);a=`Response does not match the HTTP/1.1 protocol (`+Buffer.from(r.memory.buffer,t,e).toString()+`)`}throw new y(a,Ze.ERROR[n],e.slice(i))}}catch(e){o.destroy(t,e)}}destroy(){n(this.ptr!=null),n(rt==null),this.llhttp.llhttp_free(this.ptr),this.ptr=null,s.clearTimeout(this.timeout),this.timeout=null,this.timeoutValue=null,this.timeoutType=null,this.paused=!1}onStatus(e){this.statusText=e.toString()}onMessageBegin(){let{socket:e,client:t}=this;if(e.destroyed||!t[B][t[W]])return-1}onHeaderField(e){let t=this.headers.length;t&1?this.headers[t-1]=Buffer.concat([this.headers[t-1],e]):this.headers.push(e),this.trackHeader(e.length)}onHeaderValue(e){let t=this.headers.length;(t&1)==1?(this.headers.push(e),t+=1):this.headers[t-1]=Buffer.concat([this.headers[t-1],e]);let n=this.headers[t-2];n.length===10&&n.toString().toLowerCase()===`keep-alive`?this.keepAlive+=e.toString():n.length===10&&n.toString().toLowerCase()===`connection`?this.connection+=e.toString():n.length===14&&n.toString().toLowerCase()===`content-length`&&(this.contentLength+=e.toString()),this.trackHeader(e.length)}trackHeader(e){this.headersSize+=e,this.headersSize>=this.headersMaxSize&&o.destroy(this.socket,new h)}onUpgrade(e){let{upgrade:t,client:r,socket:i,headers:a,statusCode:s}=this;n(t);let c=r[B][r[W]];n(c),n(!i.destroyed),n(i===r[oe]),n(!this.paused),n(c.upgrade||c.method===`CONNECT`),this.statusCode=null,this.statusText=``,this.shouldKeepAlive=null,n(this.headers.length%2==0),this.headers=[],this.headersSize=0,i.unshift(e),i[k].destroy(),i[k]=null,i[D]=null,i[ae]=null,i.removeListener(`error`,lt).removeListener(`readable`,X).removeListener(`end`,dt).removeListener(`close`,ft),r[oe]=null,r[B][r[W]++]=null,r.emit(`disconnect`,r[C],[r],new _(`upgrade`));try{c.onUpgrade(s,a,i)}catch(e){o.destroy(i,e)}ht(r)}onHeadersComplete(e,t,r){let{client:i,socket:a,headers:s,statusText:c}=this;if(a.destroyed)return-1;let l=i[B][i[W]];if(!l)return-1;if(n(!this.upgrade),n(this.statusCode<200),e===100)return o.destroy(a,new g(`bad response`,o.getSocketInfo(a))),-1;if(t&&!l.upgrade)return o.destroy(a,new g(`bad upgrade`,o.getSocketInfo(a))),-1;if(n.strictEqual(this.timeoutType,1),this.statusCode=e,this.shouldKeepAlive=r||l.method===`HEAD`&&!a[w]&&this.connection.toLowerCase()===`keep-alive`,this.statusCode>=200){let e=l.bodyTimeout==null?i[pe]:l.bodyTimeout;this.setTimeout(e,2)}else this.timeout&&this.timeout.refresh&&this.timeout.refresh();if(l.method===`CONNECT`||t)return n(i[I]===1),this.upgrade=!0,2;if(n(this.headers.length%2==0),this.headers=[],this.headersSize=0,this.shouldKeepAlive&&i[G]){let e=this.keepAlive?o.parseKeepAliveTimeout(this.keepAlive):null;if(e!=null){let t=Math.min(e-i[ue],i[le]);t<=0?a[w]=!0:i[se]=t}else i[se]=i[re]}else a[w]=!0;let u=l.onHeaders(e,s,this.resume,c)===!1;return l.aborted?-1:l.method===`HEAD`||e<200?1:(a[j]&&(a[j]=!1,ht(i)),u?Ze.ERROR.PAUSED:0)}onBody(e){let{client:t,socket:r,statusCode:i,maxResponseSize:a}=this;if(r.destroyed)return-1;let s=t[B][t[W]];if(n(s),n.strictEqual(this.timeoutType,2),this.timeout&&this.timeout.refresh&&this.timeout.refresh(),n(i>=200),a>-1&&this.bytesRead+e.length>a)return o.destroy(r,new b),-1;if(this.bytesRead+=e.length,s.onData(e)===!1)return Ze.ERROR.PAUSED}onMessageComplete(){let{client:e,socket:t,statusCode:r,upgrade:i,headers:a,contentLength:s,bytesRead:c,shouldKeepAlive:l}=this;if(t.destroyed&&(!r||l))return-1;if(i)return;let u=e[B][e[W]];if(n(u),n(r>=100),this.statusCode=null,this.statusText=``,this.bytesRead=0,this.contentLength=``,this.keepAlive=``,this.connection=``,n(this.headers.length%2==0),this.headers=[],this.headersSize=0,!(r<200)){if(u.method!==`HEAD`&&s&&c!==parseInt(s,10))return o.destroy(t,new d),-1;if(u.onComplete(a),e[B][e[W]++]=null,t[z])return n.strictEqual(e[I],0),o.destroy(t,new _(`reset`)),Ze.ERROR.PAUSED;if(l){if(t[w]&&e[I]===0)return o.destroy(t,new _(`reset`)),Ze.ERROR.PAUSED;e[G]===1?setImmediate(ht,e):ht(e)}else return o.destroy(t,new _(`reset`)),Ze.ERROR.PAUSED}}};function ct(e){let{socket:t,timeoutType:r,client:i}=e;r===1?(!t[z]||t.writableNeedDrain||i[I]>1)&&(n(!e.paused,`cannot be paused while waiting for headers`),o.destroy(t,new m)):r===2?e.paused||o.destroy(t,new v):r===3&&(n(i[I]===0&&i[se]),o.destroy(t,new _(`socket idle timeout`)))}function X(){let{[k]:e}=this;e&&e.readMore()}function lt(e){let{[D]:t,[k]:r}=this;if(n(e.code!==`ERR_TLS_CERT_ALTNAME_INVALID`),t[je]!==`h2`&&e.code===`ECONNRESET`&&r.statusCode&&!r.shouldKeepAlive){r.onMessageComplete();return}this[ae]=e,ut(this[D],e)}function ut(e,t){if(e[I]===0&&t.code!==`UND_ERR_INFO`&&t.code!==`UND_ERR_SOCKET`){n(e[ie]===e[W]);let r=e[B].splice(e[W]);for(let n=0;n0&&r.code!==`UND_ERR_INFO`){let t=e[B][e[W]];e[B][e[W]++]=null,wt(e,t,r)}e[ie]=e[W],n(e[I]===0),e.emit(`disconnect`,e[C],[e],r),ht(e)}async function pt(e){n(!e[te]),n(!e[oe]);let{host:t,hostname:i,protocol:a,port:s}=e[C];if(i[0]===`[`){let e=i.indexOf(`]`);n(e!==-1);let t=i.substring(1,e);n(r.isIP(t)),i=t}e[te]=!0,Y.beforeConnect.hasSubscribers&&Y.beforeConnect.publish({connectParams:{host:t,hostname:i,protocol:a,port:s,servername:e[E],localAddress:e[ke]},connector:e[ve]});try{let r=await new Promise((n,r)=>{e[ve]({host:t,hostname:i,protocol:a,port:s,servername:e[E],localAddress:e[ke]},(e,t)=>{e?r(e):n(t)})});if(e.destroyed){o.destroy(r.on(`error`,()=>{}),new x);return}if(e[te]=!1,n(r),r.alpnProtocol===`h2`){J||(J=!0,process.emitWarning(`H2 support is experimental, expect them to change at any time.`,{code:`UNDICI-H2`}));let t=Re.connect(e[C],{createConnection:()=>r,peerMaxConcurrentStreams:e[Pe].maxConcurrentStreams});e[je]=`h2`,t[D]=e,t[oe]=r,t.on(`error`,qe),t.on(`frameError`,Je),t.on(`end`,Ye),t.on(`goaway`,Xe),t.on(`close`,ft),t.unref(),e[Ne]=t,r[Ne]=t}else tt||(tt=await nt,nt=null),r[ne]=!1,r[z]=!1,r[w]=!1,r[j]=!1,r[k]=new st(e,r,tt);r[we]=0,r[Ce]=e[Ce],r[D]=e,r[ae]=null,r.on(`error`,lt).on(`readable`,X).on(`end`,dt).on(`close`,ft),e[oe]=r,Y.connected.hasSubscribers&&Y.connected.publish({connectParams:{host:t,hostname:i,protocol:a,port:s,servername:e[E],localAddress:e[ke]},connector:e[ve],socket:r}),e.emit(`connect`,e[C],[e])}catch(r){if(e.destroyed)return;if(e[te]=!1,Y.connectError.hasSubscribers&&Y.connectError.publish({connectParams:{host:t,hostname:i,protocol:a,port:s,servername:e[E],localAddress:e[ke]},connector:e[ve],error:r}),r.code===`ERR_TLS_CERT_ALTNAME_INVALID`)for(n(e[I]===0);e[L]>0&&e[B][e[ie]].servername===e[E];){let t=e[B][e[ie]++];wt(e,t,r)}else ut(e,r);e.emit(`connectionError`,e[C],[e],r)}ht(e)}function mt(e){e[H]=0,e.emit(`drain`,e[C],[e])}function ht(e,t){e[ee]!==2&&(e[ee]=2,gt(e,t),e[ee]=0,e[W]>256&&(e[B].splice(0,e[W]),e[ie]-=e[W],e[W]=0))}function gt(e,t){for(;;){if(e.destroyed){n(e[L]===0);return}if(e[Ge]&&!e[R]){e[Ge](),e[Ge]=null;return}let r=e[oe];if(r&&!r.destroyed&&r.alpnProtocol!==`h2`){if(e[R]===0?!r[ne]&&r.unref&&(r.unref(),r[ne]=!0):r[ne]&&r.ref&&(r.ref(),r[ne]=!1),e[R]===0)r[k].timeoutType!==3&&r[k].setTimeout(e[se],3);else if(e[I]>0&&r[k].statusCode<200&&r[k].timeoutType!==1){let t=e[B][e[W]],n=t.headersTimeout==null?e[de]:t.headersTimeout;r[k].setTimeout(n,1)}}if(e[O])e[H]=2;else if(e[H]===2){t?(e[H]=1,process.nextTick(mt,e)):mt(e);continue}if(e[L]===0||e[I]>=(e[G]||1))return;let i=e[B][e[ie]];if(e[C].protocol===`https:`&&e[E]!==i.servername){if(e[I]>0)return;if(e[E]=i.servername,r&&r.servername!==i.servername){o.destroy(r,new _(`servername changed`));return}}if(e[te])return;if(!r&&!e[Ne]){pt(e);return}if(r.destroyed||r[z]||r[w]||r[j]||e[I]>0&&!i.idempotent||e[I]>0&&(i.upgrade||i.method===`CONNECT`)||e[I]>0&&o.bodyLength(i.body)!==0&&(o.isStream(i.body)||o.isAsyncIterable(i.body)))return;!i.aborted&&vt(e,i)?e[ie]++:e[B].splice(e[ie],1)}}function _t(e){return e!==`GET`&&e!==`HEAD`&&e!==`OPTIONS`&&e!==`TRACE`&&e!==`CONNECT`}function vt(e,t){if(e[je]===`h2`){yt(e,e[Ne],t);return}let{body:r,method:i,path:a,host:s,upgrade:c,headers:l,blocking:d,reset:f}=t,m=i===`PUT`||i===`POST`||i===`PATCH`;r&&typeof r.read==`function`&&r.read(0);let h=o.bodyLength(r),g=h;if(g===null&&(g=t.contentLength),g===0&&!m&&(g=null),_t(i)&&g>0&&t.contentLength!==null&&t.contentLength!==g){if(e[ge])return wt(e,t,new u),!1;process.emitWarning(new u)}let v=e[oe];try{t.onConnect(n=>{t.aborted||t.completed||(wt(e,t,n||new p),o.destroy(v,new _(`aborted`)))})}catch(n){wt(e,t,n)}if(t.aborted)return!1;i===`HEAD`&&(v[w]=!0),(c||i===`CONNECT`)&&(v[w]=!0),f!=null&&(v[w]=f),e[Ce]&&v[we]++>=e[Ce]&&(v[w]=!0),d&&(v[j]=!0);let y=`${i} ${a} HTTP/1.1\r\n`;return typeof s==`string`?y+=`host: ${s}\r\n`:y+=e[U],c?y+=`connection: upgrade\r\nupgrade: ${c}\r\n`:e[G]&&!v[w]?y+=`connection: keep-alive\r +`:y+=`connection: close\r +`,l&&(y+=l),Y.sendHeaders.hasSubscribers&&Y.sendHeaders.publish({request:t,headers:y,socket:v}),!r||h===0?(g===0?v.write(`${y}content-length: 0\r\n\r\n`,`latin1`):(n(g===null,`no body must not have content length`),v.write(`${y}\r\n`,`latin1`)),t.onRequestSent()):o.isBuffer(r)?(n(g===r.byteLength,`buffer body must have content length`),v.cork(),v.write(`${y}content-length: ${g}\r\n\r\n`,`latin1`),v.write(r),v.uncork(),t.onBodySent(r),t.onRequestSent(),m||(v[w]=!0)):o.isBlobLike(r)?typeof r.stream==`function`?St({body:r.stream(),client:e,request:t,socket:v,contentLength:g,header:y,expectsPayload:m}):xt({body:r,client:e,request:t,socket:v,contentLength:g,header:y,expectsPayload:m}):o.isStream(r)?bt({body:r,client:e,request:t,socket:v,contentLength:g,header:y,expectsPayload:m}):o.isIterable(r)?St({body:r,client:e,request:t,socket:v,contentLength:g,header:y,expectsPayload:m}):n(!1),!0}function yt(e,t,r){let{body:i,method:a,path:s,host:l,upgrade:d,expectContinue:f,signal:m,headers:h}=r,g;if(g=typeof h==`string`?c[Ie](h.trim()):h,d)return wt(e,r,Error(`Upgrade not supported for H2`)),!1;try{r.onConnect(t=>{r.aborted||r.completed||wt(e,r,t||new p)})}catch(t){wt(e,r,t)}if(r.aborted)return!1;let v,y=e[Pe];if(g[ze]=l||e[Me],g[K]=a,a===`CONNECT`)return t.ref(),v=t.request(g,{endStream:!1,signal:m}),v.id&&!v.pending?(r.onUpgrade(null,null,v),++y.openStreams):v.once(`ready`,()=>{r.onUpgrade(null,null,v),++y.openStreams}),v.once(`close`,()=>{--y.openStreams,y.openStreams===0&&t.unref()}),!0;g[Be]=s,g[Ve]=`https`;let b=a===`PUT`||a===`POST`||a===`PATCH`;i&&typeof i.read==`function`&&i.read(0);let x=o.bodyLength(i);if(x??=r.contentLength,(x===0||!b)&&(x=null),_t(a)&&x>0&&r.contentLength!=null&&r.contentLength!==x){if(e[ge])return wt(e,r,new u),!1;process.emitWarning(new u)}x!=null&&(n(i,`no body must not have content length`),g[q]=`${x}`),t.ref();let S=a===`GET`||a===`HEAD`;return f?(g[He]=`100-continue`,v=t.request(g,{endStream:S,signal:m}),v.once(`continue`,C)):(v=t.request(g,{endStream:S,signal:m}),C()),++y.openStreams,v.once(`response`,e=>{let{[Ue]:t,...n}=e;r.onHeaders(Number(t),n,v.resume.bind(v),``)===!1&&v.pause()}),v.once(`end`,()=>{r.onComplete([])}),v.on(`data`,e=>{r.onData(e)===!1&&v.pause()}),v.once(`close`,()=>{--y.openStreams,y.openStreams===0&&t.unref()}),v.once(`error`,function(t){e[Ne]&&!e[Ne].destroyed&&!this.closed&&!this.destroyed&&(--y.streams,o.destroy(v,t))}),v.once(`frameError`,(t,n)=>{let i=new _(`HTTP/2: "frameError" received - type ${t}, code ${n}`);wt(e,r,i),e[Ne]&&!e[Ne].destroyed&&!this.closed&&!this.destroyed&&(--y.streams,o.destroy(v,i))}),!0;function C(){i?o.isBuffer(i)?(n(x===i.byteLength,`buffer body must have content length`),v.cork(),v.write(i),v.uncork(),v.end(),r.onBodySent(i),r.onRequestSent()):o.isBlobLike(i)?typeof i.stream==`function`?St({client:e,request:r,contentLength:x,h2stream:v,expectsPayload:b,body:i.stream(),socket:e[oe],header:``}):xt({body:i,client:e,request:r,contentLength:x,expectsPayload:b,h2stream:v,header:``,socket:e[oe]}):o.isStream(i)?bt({body:i,client:e,request:r,contentLength:x,expectsPayload:b,socket:e[oe],h2stream:v,header:``}):o.isIterable(i)?St({body:i,client:e,request:r,contentLength:x,expectsPayload:b,header:``,h2stream:v,socket:e[oe]}):n(!1):r.onRequestSent()}}function bt({h2stream:e,body:t,client:r,request:i,socket:s,contentLength:c,header:l,expectsPayload:u}){if(n(c!==0||r[I]===0,`stream body cannot be pipelined`),r[je]===`h2`){let n=a(t,e,n=>{n?(o.destroy(t,n),o.destroy(e,n)):i.onRequestSent()});n.on(`data`,r),n.once(`end`,()=>{n.removeListener(`data`,r),o.destroy(n)});function r(e){i.onBodySent(e)}return}let d=!1,f=new Ct({socket:s,request:i,contentLength:c,client:r,expectsPayload:u,header:l}),m=function(e){if(!d)try{!f.write(e)&&this.pause&&this.pause()}catch(e){o.destroy(this,e)}},h=function(){d||t.resume&&t.resume()},g=function(){if(d)return;let e=new p;queueMicrotask(()=>_(e))},_=function(e){if(!d){if(d=!0,n(s.destroyed||s[z]&&r[I]<=1),s.off(`drain`,h).off(`error`,_),t.removeListener(`data`,m).removeListener(`end`,_).removeListener(`error`,_).removeListener(`close`,g),!e)try{f.end()}catch(t){e=t}f.destroy(e),e&&(e.code!==`UND_ERR_INFO`||e.message!==`reset`)?o.destroy(t,e):o.destroy(t)}};t.on(`data`,m).on(`end`,_).on(`error`,_).on(`close`,g),t.resume&&t.resume(),s.on(`drain`,h).on(`error`,_)}async function xt({h2stream:e,body:t,client:r,request:i,socket:a,contentLength:s,header:c,expectsPayload:l}){n(s===t.size,`blob body must have content length`);let d=r[je]===`h2`;try{if(s!=null&&s!==t.size)throw new u;let n=Buffer.from(await t.arrayBuffer());d?(e.cork(),e.write(n),e.uncork()):(a.cork(),a.write(`${c}content-length: ${s}\r\n\r\n`,`latin1`),a.write(n),a.uncork()),i.onBodySent(n),i.onRequestSent(),l||(a[w]=!0),ht(r)}catch(t){o.destroy(d?e:a,t)}}async function St({h2stream:e,body:t,client:r,request:i,socket:a,contentLength:o,header:s,expectsPayload:c}){n(o!==0||r[I]===0,`iterator body cannot be pipelined`);let l=null;function u(){if(l){let e=l;l=null,e()}}let d=()=>new Promise((e,t)=>{n(l===null),a[ae]?t(a[ae]):l=e});if(r[je]===`h2`){e.on(`close`,u).on(`drain`,u);try{for await(let n of t){if(a[ae])throw a[ae];let t=e.write(n);i.onBodySent(n),t||await d()}}catch(t){e.destroy(t)}finally{i.onRequestSent(),e.end(),e.off(`close`,u).off(`drain`,u)}return}a.on(`close`,u).on(`drain`,u);let f=new Ct({socket:a,request:i,contentLength:o,client:r,expectsPayload:c,header:s});try{for await(let e of t){if(a[ae])throw a[ae];f.write(e)||await d()}f.end()}catch(e){f.destroy(e)}finally{a.off(`close`,u).off(`drain`,u)}}var Ct=class{constructor({socket:e,request:t,contentLength:n,client:r,expectsPayload:i,header:a}){this.socket=e,this.request=t,this.contentLength=n,this.client=r,this.bytesWritten=0,this.expectsPayload=i,this.header=a,e[z]=!0}write(e){let{socket:t,request:n,contentLength:r,client:i,bytesWritten:a,expectsPayload:o,header:s}=this;if(t[ae])throw t[ae];if(t.destroyed)return!1;let c=Buffer.byteLength(e);if(!c)return!0;if(r!==null&&a+c>r){if(i[ge])throw new u;process.emitWarning(new u)}t.cork(),a===0&&(o||(t[w]=!0),r===null?t.write(`${s}transfer-encoding: chunked\r\n`,`latin1`):t.write(`${s}content-length: ${r}\r\n\r\n`,`latin1`)),r===null&&t.write(`\r\n${c.toString(16)}\r\n`,`latin1`),this.bytesWritten+=c;let l=t.write(e);return t.uncork(),n.onBodySent(e),l||t[k].timeout&&t[k].timeoutType===1&&t[k].timeout.refresh&&t[k].timeout.refresh(),l}end(){let{socket:e,contentLength:t,client:n,bytesWritten:r,expectsPayload:i,header:a,request:o}=this;if(o.onRequestSent(),e[z]=!1,e[ae])throw e[ae];if(!e.destroyed){if(r===0?i?e.write(`${a}content-length: 0\r\n\r\n`,`latin1`):e.write(`${a}\r\n`,`latin1`):t===null&&e.write(`\r +0\r +\r +`,`latin1`),t!==null&&r!==t){if(n[ge])throw new u;process.emitWarning(new u)}e[k].timeout&&e[k].timeoutType===1&&e[k].timeout.refresh&&e[k].timeout.refresh(),ht(n)}}destroy(e){let{socket:t,client:r}=this;t[z]=!1,e&&(n(r[I]<=1,`pipeline should only contain this request`),o.destroy(t,e))}};function wt(e,t,r){try{t.onError(r),n(t.aborted)}catch(t){e.emit(`error`,t)}}t.exports=Ke})),Ce=b(((e,t)=>{let n=2048,r=n-1;var i=class{constructor(){this.bottom=0,this.top=0,this.list=Array(n),this.next=null}isEmpty(){return this.top===this.bottom}isFull(){return(this.top+1&r)===this.bottom}push(e){this.list[this.top]=e,this.top=this.top+1&r}shift(){let e=this.list[this.bottom];return e===void 0?null:(this.list[this.bottom]=void 0,this.bottom=this.bottom+1&r,e)}};t.exports=class{constructor(){this.head=this.tail=new i}isEmpty(){return this.head.isEmpty()}push(e){this.head.isFull()&&(this.head=this.head.next=new i),this.head.push(e)}shift(){let e=this.tail,t=e.shift();return e.isEmpty()&&e.next!==null&&(this.tail=e.next),t}}})),we=b(((e,t)=>{let{kFree:n,kConnected:r,kPending:i,kQueued:a,kRunning:o,kSize:s}=M(),c=Symbol(`pool`);t.exports=class{constructor(e){this[c]=e}get connected(){return this[c][r]}get free(){return this[c][n]}get pending(){return this[c][i]}get queued(){return this[c][a]}get running(){return this[c][o]}get size(){return this[c][s]}}})),Te=b(((e,t)=>{let n=me(),r=Ce(),{kConnected:i,kSize:a,kRunning:o,kPending:s,kQueued:c,kBusy:l,kFree:u,kUrl:d,kClose:f,kDestroy:p,kDispatch:m}=M(),h=we(),g=Symbol(`clients`),_=Symbol(`needDrain`),v=Symbol(`queue`),y=Symbol(`closed resolve`),b=Symbol(`onDrain`),x=Symbol(`onConnect`),S=Symbol(`onDisconnect`),C=Symbol(`onConnectionError`),w=Symbol(`get dispatcher`),T=Symbol(`add client`),E=Symbol(`remove client`),D=Symbol(`stats`);t.exports={PoolBase:class extends n{constructor(){super(),this[v]=new r,this[g]=[],this[c]=0;let e=this;this[b]=function(t,n){let r=e[v],i=!1;for(;!i;){let t=r.shift();if(!t)break;e[c]--,i=!this.dispatch(t.opts,t.handler)}this[_]=i,!this[_]&&e[_]&&(e[_]=!1,e.emit(`drain`,t,[e,...n])),e[y]&&r.isEmpty()&&Promise.all(e[g].map(e=>e.close())).then(e[y])},this[x]=(t,n)=>{e.emit(`connect`,t,[e,...n])},this[S]=(t,n,r)=>{e.emit(`disconnect`,t,[e,...n],r)},this[C]=(t,n,r)=>{e.emit(`connectionError`,t,[e,...n],r)},this[D]=new h(this)}get[l](){return this[_]}get[i](){return this[g].filter(e=>e[i]).length}get[u](){return this[g].filter(e=>e[i]&&!e[_]).length}get[s](){let e=this[c];for(let{[s]:t}of this[g])e+=t;return e}get[o](){let e=0;for(let{[o]:t}of this[g])e+=t;return e}get[a](){let e=this[c];for(let{[a]:t}of this[g])e+=t;return e}get stats(){return this[D]}async[f](){return this[v].isEmpty()?Promise.all(this[g].map(e=>e.close())):new Promise(e=>{this[y]=e})}async[p](e){for(;;){let t=this[v].shift();if(!t)break;t.handler.onError(e)}return Promise.all(this[g].map(t=>t.destroy(e)))}[m](e,t){let n=this[w]();return n?n.dispatch(e,t)||(n[_]=!0,this[_]=!this[w]()):(this[_]=!0,this[v].push({opts:e,handler:t}),this[c]++),!this[_]}[T](e){return e.on(`drain`,this[b]).on(`connect`,this[x]).on(`disconnect`,this[S]).on(`connectionError`,this[C]),this[g].push(e),this[_]&&process.nextTick(()=>{this[_]&&this[b](e[d],[this,e])}),this}[E](e){e.close(()=>{let t=this[g].indexOf(e);t!==-1&&this[g].splice(t,1)}),this[_]=this[g].some(e=>!e[_]&&e.closed!==!0&&e.destroyed!==!0)}},kClients:g,kNeedDrain:_,kAddClient:T,kRemoveClient:E,kGetDispatcher:w}})),Ee=b(((e,t)=>{let{PoolBase:n,kClients:r,kNeedDrain:i,kAddClient:a,kGetDispatcher:o}=Te(),s=Se(),{InvalidArgumentError:c}=N(),l=P(),{kUrl:u,kInterceptors:d}=M(),f=he(),p=Symbol(`options`),m=Symbol(`connections`),h=Symbol(`factory`);function g(e,t){return new s(e,t)}t.exports=class extends n{constructor(e,{connections:t,factory:n=g,connect:i,connectTimeout:a,tls:o,maxCachedSessions:s,socketPath:_,autoSelectFamily:v,autoSelectFamilyAttemptTimeout:y,allowH2:b,...x}={}){if(super(),t!=null&&(!Number.isFinite(t)||t<0))throw new c(`invalid connections`);if(typeof n!=`function`)throw new c(`factory must be a function.`);if(i!=null&&typeof i!=`function`&&typeof i!=`object`)throw new c(`connect must be a function or an object`);typeof i!=`function`&&(i=f({...o,maxCachedSessions:s,allowH2:b,socketPath:_,timeout:a,...l.nodeHasAutoSelectFamily&&v?{autoSelectFamily:v,autoSelectFamilyAttemptTimeout:y}:void 0,...i})),this[d]=x.interceptors&&x.interceptors.Pool&&Array.isArray(x.interceptors.Pool)?x.interceptors.Pool:[],this[m]=t||null,this[u]=l.parseOrigin(e),this[p]={...l.deepClone(x),connect:i,allowH2:b},this[p].interceptors=x.interceptors?{...x.interceptors}:void 0,this[h]=n,this.on(`connectionError`,(e,t,n)=>{for(let e of t){let t=this[r].indexOf(e);t!==-1&&this[r].splice(t,1)}})}[o](){let e=this[r].find(e=>!e[i]);return e||((!this[m]||this[r].length{let{BalancedPoolMissingUpstreamError:n,InvalidArgumentError:r}=N(),{PoolBase:i,kClients:a,kNeedDrain:o,kAddClient:s,kRemoveClient:c,kGetDispatcher:l}=Te(),u=Ee(),{kUrl:d,kInterceptors:f}=M(),{parseOrigin:p}=P(),m=Symbol(`factory`),h=Symbol(`options`),g=Symbol(`kGreatestCommonDivisor`),_=Symbol(`kCurrentWeight`),v=Symbol(`kIndex`),y=Symbol(`kWeight`),b=Symbol(`kMaxWeightPerServer`),x=Symbol(`kErrorPenalty`);function S(e,t){return t===0?e:S(t,e%t)}function C(e,t){return new u(e,t)}t.exports=class extends i{constructor(e=[],{factory:t=C,...n}={}){if(super(),this[h]=n,this[v]=-1,this[_]=0,this[b]=this[h].maxWeightPerServer||100,this[x]=this[h].errorPenalty||15,Array.isArray(e)||(e=[e]),typeof t!=`function`)throw new r(`factory must be a function.`);this[f]=n.interceptors&&n.interceptors.BalancedPool&&Array.isArray(n.interceptors.BalancedPool)?n.interceptors.BalancedPool:[],this[m]=t;for(let t of e)this.addUpstream(t);this._updateBalancedPoolStats()}addUpstream(e){let t=p(e).origin;if(this[a].find(e=>e[d].origin===t&&e.closed!==!0&&e.destroyed!==!0))return this;let n=this[m](t,Object.assign({},this[h]));this[s](n),n.on(`connect`,()=>{n[y]=Math.min(this[b],n[y]+this[x])}),n.on(`connectionError`,()=>{n[y]=Math.max(1,n[y]-this[x]),this._updateBalancedPoolStats()}),n.on(`disconnect`,(...e)=>{let t=e[2];t&&t.code===`UND_ERR_SOCKET`&&(n[y]=Math.max(1,n[y]-this[x]),this._updateBalancedPoolStats())});for(let e of this[a])e[y]=this[b];return this._updateBalancedPoolStats(),this}_updateBalancedPoolStats(){this[g]=this[a].map(e=>e[y]).reduce(S,0)}removeUpstream(e){let t=p(e).origin,n=this[a].find(e=>e[d].origin===t&&e.closed!==!0&&e.destroyed!==!0);return n&&this[c](n),this}get upstreams(){return this[a].filter(e=>e.closed!==!0&&e.destroyed!==!0).map(e=>e[d].origin)}[l](){if(this[a].length===0)throw new n;if(!this[a].find(e=>!e[o]&&e.closed!==!0&&e.destroyed!==!0)||this[a].map(e=>e[o]).reduce((e,t)=>e&&t,!0))return;let e=0,t=this[a].findIndex(e=>!e[o]);for(;e++this[a][t][y]&&!e[o]&&(t=this[v]),this[v]===0&&(this[_]=this[_]-this[g],this[_]<=0&&(this[_]=this[b])),e[y]>=this[_]&&!e[o])return e}return this[_]=this[a][t][y],this[v]=t,this[a][t]}}})),Oe=b(((e,t)=>{let{kConnected:n,kSize:r}=M();var i=class{constructor(e){this.value=e}deref(){return this.value[n]===0&&this.value[r]===0?void 0:this.value}},a=class{constructor(e){this.finalizer=e}register(e,t){e.on&&e.on(`disconnect`,()=>{e[n]===0&&e[r]===0&&this.finalizer(t)})}};t.exports=function(){return process.env.NODE_V8_COVERAGE?{WeakRef:i,FinalizationRegistry:a}:{WeakRef:global.WeakRef||i,FinalizationRegistry:global.FinalizationRegistry||a}}})),ke=b(((e,t)=>{let{InvalidArgumentError:n}=N(),{kClients:r,kRunning:i,kClose:a,kDestroy:o,kDispatch:s,kInterceptors:c}=M(),l=me(),u=Ee(),d=Se(),f=P(),p=ye(),{WeakRef:m,FinalizationRegistry:h}=Oe()(),g=Symbol(`onConnect`),_=Symbol(`onDisconnect`),v=Symbol(`onConnectionError`),y=Symbol(`maxRedirections`),b=Symbol(`onDrain`),x=Symbol(`factory`),S=Symbol(`finalizer`),C=Symbol(`options`);function w(e,t){return t&&t.connections===1?new d(e,t):new u(e,t)}t.exports=class extends l{constructor({factory:e=w,maxRedirections:t=0,connect:i,...a}={}){if(super(),typeof e!=`function`)throw new n(`factory must be a function.`);if(i!=null&&typeof i!=`function`&&typeof i!=`object`)throw new n(`connect must be a function or an object`);if(!Number.isInteger(t)||t<0)throw new n(`maxRedirections must be a positive number`);i&&typeof i!=`function`&&(i={...i}),this[c]=a.interceptors&&a.interceptors.Agent&&Array.isArray(a.interceptors.Agent)?a.interceptors.Agent:[p({maxRedirections:t})],this[C]={...f.deepClone(a),connect:i},this[C].interceptors=a.interceptors?{...a.interceptors}:void 0,this[y]=t,this[x]=e,this[r]=new Map,this[S]=new h(e=>{let t=this[r].get(e);t!==void 0&&t.deref()===void 0&&this[r].delete(e)});let o=this;this[b]=(e,t)=>{o.emit(`drain`,e,[o,...t])},this[g]=(e,t)=>{o.emit(`connect`,e,[o,...t])},this[_]=(e,t,n)=>{o.emit(`disconnect`,e,[o,...t],n)},this[v]=(e,t,n)=>{o.emit(`connectionError`,e,[o,...t],n)}}get[i](){let e=0;for(let t of this[r].values()){let n=t.deref();n&&(e+=n[i])}return e}[s](e,t){let i;if(e.origin&&(typeof e.origin==`string`||e.origin instanceof URL))i=String(e.origin);else throw new n(`opts.origin must be a non-empty string or URL.`);let a=this[r].get(i),o=a?a.deref():null;return o||(o=this[x](e.origin,this[C]).on(`drain`,this[b]).on(`connect`,this[g]).on(`disconnect`,this[_]).on(`connectionError`,this[v]),this[r].set(i,new m(o)),this[S].register(o,i)),o.dispatch(e,t)}async[a](){let e=[];for(let t of this[r].values()){let n=t.deref();n&&e.push(n.close())}await Promise.all(e)}async[o](e){let t=[];for(let n of this[r].values()){let r=n.deref();r&&t.push(r.destroy(e))}await Promise.all(t)}}})),Ae=b(((e,t)=>{let n=T(`assert`),{Readable:r}=T(`stream`),{RequestAbortedError:i,NotSupportedError:a,InvalidArgumentError:o}=N(),s=P(),{ReadableStreamFrom:c,toUSVString:l}=P(),u,d=Symbol(`kConsume`),f=Symbol(`kReading`),p=Symbol(`kBody`),m=Symbol(`abort`),h=Symbol(`kContentType`),g=()=>{};t.exports=class extends r{constructor({resume:e,abort:t,contentType:n=``,highWaterMark:r=64*1024}){super({autoDestroy:!0,read:e,highWaterMark:r}),this._readableState.dataEmitted=!1,this[m]=t,this[d]=null,this[p]=null,this[h]=n,this[f]=!1}destroy(e){return this.destroyed?this:(!e&&!this._readableState.endEmitted&&(e=new i),e&&this[m](),super.destroy(e))}emit(e,...t){return e===`data`?this._readableState.dataEmitted=!0:e===`error`&&(this._readableState.errorEmitted=!0),super.emit(e,...t)}on(e,...t){return(e===`data`||e===`readable`)&&(this[f]=!0),super.on(e,...t)}addListener(e,...t){return this.on(e,...t)}off(e,...t){let n=super.off(e,...t);return(e===`data`||e===`readable`)&&(this[f]=this.listenerCount(`data`)>0||this.listenerCount(`readable`)>0),n}removeListener(e,...t){return this.off(e,...t)}push(e){return this[d]&&e!==null&&this.readableLength===0?(S(this[d],e),this[f]?super.push(e):!0):super.push(e)}async text(){return y(this,`text`)}async json(){return y(this,`json`)}async blob(){return y(this,`blob`)}async arrayBuffer(){return y(this,`arrayBuffer`)}async formData(){throw new a}get bodyUsed(){return s.isDisturbed(this)}get body(){return this[p]||(this[p]=c(this),this[d]&&(this[p].getReader(),n(this[p].locked))),this[p]}dump(e){let t=e&&Number.isFinite(e.limit)?e.limit:262144,n=e&&e.signal;if(n)try{if(typeof n!=`object`||!(`aborted`in n))throw new o(`signal must be an AbortSignal`);s.throwIfAborted(n)}catch(e){return Promise.reject(e)}return this.closed?Promise.resolve(null):new Promise((e,r)=>{let i=n?s.addAbortListener(n,()=>{this.destroy()}):g;this.on(`close`,function(){i(),n&&n.aborted?r(n.reason||Object.assign(Error(`The operation was aborted`),{name:`AbortError`})):e(null)}).on(`error`,g).on(`data`,function(e){t-=e.length,t<=0&&this.destroy()}).resume()})}};function _(e){return e[p]&&e[p].locked===!0||e[d]}function v(e){return s.isDisturbed(e)||_(e)}async function y(e,t){if(v(e))throw TypeError(`unusable`);return n(!e[d]),new Promise((n,r)=>{e[d]={type:t,stream:e,resolve:n,reject:r,length:0,body:[]},e.on(`error`,function(e){C(this[d],e)}).on(`close`,function(){this[d].body!==null&&C(this[d],new i)}),process.nextTick(b,e[d])})}function b(e){if(e.body===null)return;let{_readableState:t}=e.stream;for(let n of t.buffer)S(e,n);for(t.endEmitted?x(this[d]):e.stream.on(`end`,function(){x(this[d])}),e.stream.resume();e.stream.read()!=null;);}function x(e){let{type:t,body:n,resolve:r,stream:i,length:a}=e;try{if(t===`text`)r(l(Buffer.concat(n)));else if(t===`json`)r(JSON.parse(Buffer.concat(n)));else if(t===`arrayBuffer`){let e=new Uint8Array(a),t=0;for(let r of n)e.set(r,t),t+=r.byteLength;r(e.buffer)}else t===`blob`&&(u||=T(`buffer`).Blob,r(new u(n,{type:i[h]})));C(e)}catch(e){i.destroy(e)}}function S(e,t){e.length+=t.length,e.body.push(t)}function C(e,t){e.body!==null&&(t?e.reject(t):e.resolve(),e.type=null,e.stream=null,e.resolve=null,e.reject=null,e.length=0,e.body=null)}})),je=b(((e,t)=>{let n=T(`assert`),{ResponseStatusCodeError:r}=N(),{toUSVString:i}=P();async function a({callback:e,body:t,contentType:a,statusCode:o,statusMessage:s,headers:c}){n(t);let l=[],u=0;for await(let e of t)if(l.push(e),u+=e.length,u>128*1024){l=null;break}if(o===204||!a||!l){process.nextTick(e,new r(`Response status code ${o}${s?`: ${s}`:``}`,o,c));return}try{if(a.startsWith(`application/json`)){let t=JSON.parse(i(Buffer.concat(l)));process.nextTick(e,new r(`Response status code ${o}${s?`: ${s}`:``}`,o,c,t));return}if(a.startsWith(`text/`)){let t=i(Buffer.concat(l));process.nextTick(e,new r(`Response status code ${o}${s?`: ${s}`:``}`,o,c,t));return}}catch{}process.nextTick(e,new r(`Response status code ${o}${s?`: ${s}`:``}`,o,c))}t.exports={getResolveErrorBodyCallback:a}})),Me=b(((e,t)=>{let{addAbortListener:n}=P(),{RequestAbortedError:r}=N(),i=Symbol(`kListener`),a=Symbol(`kSignal`);function o(e){e.abort?e.abort():e.onError(new r)}function s(e,t){if(e[a]=null,e[i]=null,t){if(t.aborted){o(e);return}e[a]=t,e[i]=()=>{o(e)},n(e[a],e[i])}}function c(e){e[a]&&(`removeEventListener`in e[a]?e[a].removeEventListener(`abort`,e[i]):e[a].removeListener(`abort`,e[i]),e[a]=null,e[i]=null)}t.exports={addSignal:s,removeSignal:c}})),Ne=b(((e,t)=>{let n=Ae(),{InvalidArgumentError:r,RequestAbortedError:i}=N(),a=P(),{getResolveErrorBodyCallback:o}=je(),{AsyncResource:s}=T(`async_hooks`),{addSignal:c,removeSignal:l}=Me();var u=class extends s{constructor(e,t){if(!e||typeof e!=`object`)throw new r(`invalid opts`);let{signal:n,method:i,opaque:o,body:s,onInfo:l,responseHeaders:u,throwOnError:d,highWaterMark:f}=e;try{if(typeof t!=`function`)throw new r(`invalid callback`);if(f&&(typeof f!=`number`||f<0))throw new r(`invalid highWaterMark`);if(n&&typeof n.on!=`function`&&typeof n.addEventListener!=`function`)throw new r(`signal must be an EventEmitter or EventTarget`);if(i===`CONNECT`)throw new r(`invalid method`);if(l&&typeof l!=`function`)throw new r(`invalid onInfo callback`);super(`UNDICI_REQUEST`)}catch(e){throw a.isStream(s)&&a.destroy(s.on(`error`,a.nop),e),e}this.responseHeaders=u||null,this.opaque=o||null,this.callback=t,this.res=null,this.abort=null,this.body=s,this.trailers={},this.context=null,this.onInfo=l||null,this.throwOnError=d,this.highWaterMark=f,a.isStream(s)&&s.on(`error`,e=>{this.onError(e)}),c(this,n)}onConnect(e,t){if(!this.callback)throw new i;this.abort=e,this.context=t}onHeaders(e,t,r,i){let{callback:s,opaque:c,abort:l,context:u,responseHeaders:d,highWaterMark:f}=this,p=d===`raw`?a.parseRawHeaders(t):a.parseHeaders(t);if(e<200){this.onInfo&&this.onInfo({statusCode:e,headers:p});return}let m=(d===`raw`?a.parseHeaders(t):p)[`content-type`],h=new n({resume:r,abort:l,contentType:m,highWaterMark:f});this.callback=null,this.res=h,s!==null&&(this.throwOnError&&e>=400?this.runInAsyncScope(o,null,{callback:s,body:h,contentType:m,statusCode:e,statusMessage:i,headers:p}):this.runInAsyncScope(s,null,null,{statusCode:e,headers:p,trailers:this.trailers,opaque:c,body:h,context:u}))}onData(e){let{res:t}=this;return t.push(e)}onComplete(e){let{res:t}=this;l(this),a.parseHeaders(e,this.trailers),t.push(null)}onError(e){let{res:t,callback:n,body:r,opaque:i}=this;l(this),n&&(this.callback=null,queueMicrotask(()=>{this.runInAsyncScope(n,null,e,{opaque:i})})),t&&(this.res=null,queueMicrotask(()=>{a.destroy(t,e)})),r&&(this.body=null,a.destroy(r,e))}};function d(e,t){if(t===void 0)return new Promise((t,n)=>{d.call(this,e,(e,r)=>e?n(e):t(r))});try{this.dispatch(e,new u(e,t))}catch(n){if(typeof t!=`function`)throw n;let r=e&&e.opaque;queueMicrotask(()=>t(n,{opaque:r}))}}t.exports=d,t.exports.RequestHandler=u})),Pe=b(((e,t)=>{let{finished:n,PassThrough:r}=T(`stream`),{InvalidArgumentError:i,InvalidReturnValueError:a,RequestAbortedError:o}=N(),s=P(),{getResolveErrorBodyCallback:c}=je(),{AsyncResource:l}=T(`async_hooks`),{addSignal:u,removeSignal:d}=Me();var f=class extends l{constructor(e,t,n){if(!e||typeof e!=`object`)throw new i(`invalid opts`);let{signal:r,method:a,opaque:o,body:c,onInfo:l,responseHeaders:d,throwOnError:f}=e;try{if(typeof n!=`function`)throw new i(`invalid callback`);if(typeof t!=`function`)throw new i(`invalid factory`);if(r&&typeof r.on!=`function`&&typeof r.addEventListener!=`function`)throw new i(`signal must be an EventEmitter or EventTarget`);if(a===`CONNECT`)throw new i(`invalid method`);if(l&&typeof l!=`function`)throw new i(`invalid onInfo callback`);super(`UNDICI_STREAM`)}catch(e){throw s.isStream(c)&&s.destroy(c.on(`error`,s.nop),e),e}this.responseHeaders=d||null,this.opaque=o||null,this.factory=t,this.callback=n,this.res=null,this.abort=null,this.context=null,this.trailers=null,this.body=c,this.onInfo=l||null,this.throwOnError=f||!1,s.isStream(c)&&c.on(`error`,e=>{this.onError(e)}),u(this,r)}onConnect(e,t){if(!this.callback)throw new o;this.abort=e,this.context=t}onHeaders(e,t,i,o){let{factory:l,opaque:u,context:d,callback:f,responseHeaders:p}=this,m=p===`raw`?s.parseRawHeaders(t):s.parseHeaders(t);if(e<200){this.onInfo&&this.onInfo({statusCode:e,headers:m});return}this.factory=null;let h;if(this.throwOnError&&e>=400){let n=(p===`raw`?s.parseHeaders(t):m)[`content-type`];h=new r,this.callback=null,this.runInAsyncScope(c,null,{callback:f,body:h,contentType:n,statusCode:e,statusMessage:o,headers:m})}else{if(l===null)return;if(h=this.runInAsyncScope(l,null,{statusCode:e,headers:m,opaque:u,context:d}),!h||typeof h.write!=`function`||typeof h.end!=`function`||typeof h.on!=`function`)throw new a(`expected Writable`);n(h,{readable:!1},e=>{let{callback:t,res:n,opaque:r,trailers:i,abort:a}=this;this.res=null,(e||!n.readable)&&s.destroy(n,e),this.callback=null,this.runInAsyncScope(t,null,e||null,{opaque:r,trailers:i}),e&&a()})}return h.on(`drain`,i),this.res=h,(h.writableNeedDrain===void 0?h._writableState&&h._writableState.needDrain:h.writableNeedDrain)!==!0}onData(e){let{res:t}=this;return t?t.write(e):!0}onComplete(e){let{res:t}=this;d(this),t&&(this.trailers=s.parseHeaders(e),t.end())}onError(e){let{res:t,callback:n,opaque:r,body:i}=this;d(this),this.factory=null,t?(this.res=null,s.destroy(t,e)):n&&(this.callback=null,queueMicrotask(()=>{this.runInAsyncScope(n,null,e,{opaque:r})})),i&&(this.body=null,s.destroy(i,e))}};function p(e,t,n){if(n===void 0)return new Promise((n,r)=>{p.call(this,e,t,(e,t)=>e?r(e):n(t))});try{this.dispatch(e,new f(e,t,n))}catch(t){if(typeof n!=`function`)throw t;let r=e&&e.opaque;queueMicrotask(()=>n(t,{opaque:r}))}}t.exports=p})),Fe=b(((e,t)=>{let{Readable:n,Duplex:r,PassThrough:i}=T(`stream`),{InvalidArgumentError:a,InvalidReturnValueError:o,RequestAbortedError:s}=N(),c=P(),{AsyncResource:l}=T(`async_hooks`),{addSignal:u,removeSignal:d}=Me(),f=T(`assert`),p=Symbol(`resume`);var m=class extends n{constructor(){super({autoDestroy:!0}),this[p]=null}_read(){let{[p]:e}=this;e&&(this[p]=null,e())}_destroy(e,t){this._read(),t(e)}},h=class extends n{constructor(e){super({autoDestroy:!0}),this[p]=e}_read(){this[p]()}_destroy(e,t){!e&&!this._readableState.endEmitted&&(e=new s),t(e)}},g=class extends l{constructor(e,t){if(!e||typeof e!=`object`)throw new a(`invalid opts`);if(typeof t!=`function`)throw new a(`invalid handler`);let{signal:n,method:i,opaque:o,onInfo:l,responseHeaders:f}=e;if(n&&typeof n.on!=`function`&&typeof n.addEventListener!=`function`)throw new a(`signal must be an EventEmitter or EventTarget`);if(i===`CONNECT`)throw new a(`invalid method`);if(l&&typeof l!=`function`)throw new a(`invalid onInfo callback`);super(`UNDICI_PIPELINE`),this.opaque=o||null,this.responseHeaders=f||null,this.handler=t,this.abort=null,this.context=null,this.onInfo=l||null,this.req=new m().on(`error`,c.nop),this.ret=new r({readableObjectMode:e.objectMode,autoDestroy:!0,read:()=>{let{body:e}=this;e&&e.resume&&e.resume()},write:(e,t,n)=>{let{req:r}=this;r.push(e,t)||r._readableState.destroyed?n():r[p]=n},destroy:(e,t)=>{let{body:n,req:r,res:i,ret:a,abort:o}=this;!e&&!a._readableState.endEmitted&&(e=new s),o&&e&&o(),c.destroy(n,e),c.destroy(r,e),c.destroy(i,e),d(this),t(e)}}).on(`prefinish`,()=>{let{req:e}=this;e.push(null)}),this.res=null,u(this,n)}onConnect(e,t){let{ret:n,res:r}=this;if(f(!r,`pipeline cannot be retried`),n.destroyed)throw new s;this.abort=e,this.context=t}onHeaders(e,t,n){let{opaque:r,handler:i,context:a}=this;if(e<200){if(this.onInfo){let n=this.responseHeaders===`raw`?c.parseRawHeaders(t):c.parseHeaders(t);this.onInfo({statusCode:e,headers:n})}return}this.res=new h(n);let l;try{this.handler=null;let n=this.responseHeaders===`raw`?c.parseRawHeaders(t):c.parseHeaders(t);l=this.runInAsyncScope(i,null,{statusCode:e,headers:n,opaque:r,body:this.res,context:a})}catch(e){throw this.res.on(`error`,c.nop),e}if(!l||typeof l.on!=`function`)throw new o(`expected Readable`);l.on(`data`,e=>{let{ret:t,body:n}=this;!t.push(e)&&n.pause&&n.pause()}).on(`error`,e=>{let{ret:t}=this;c.destroy(t,e)}).on(`end`,()=>{let{ret:e}=this;e.push(null)}).on(`close`,()=>{let{ret:e}=this;e._readableState.ended||c.destroy(e,new s)}),this.body=l}onData(e){let{res:t}=this;return t.push(e)}onComplete(e){let{res:t}=this;t.push(null)}onError(e){let{ret:t}=this;this.handler=null,c.destroy(t,e)}};function _(e,t){try{let n=new g(e,t);return this.dispatch({...e,body:n.req},n),n.ret}catch(e){return new i().destroy(e)}}t.exports=_})),Ie=b(((e,t)=>{let{InvalidArgumentError:n,RequestAbortedError:r,SocketError:i}=N(),{AsyncResource:a}=T(`async_hooks`),o=P(),{addSignal:s,removeSignal:c}=Me(),l=T(`assert`);var u=class extends a{constructor(e,t){if(!e||typeof e!=`object`)throw new n(`invalid opts`);if(typeof t!=`function`)throw new n(`invalid callback`);let{signal:r,opaque:i,responseHeaders:a}=e;if(r&&typeof r.on!=`function`&&typeof r.addEventListener!=`function`)throw new n(`signal must be an EventEmitter or EventTarget`);super(`UNDICI_UPGRADE`),this.responseHeaders=a||null,this.opaque=i||null,this.callback=t,this.abort=null,this.context=null,s(this,r)}onConnect(e,t){if(!this.callback)throw new r;this.abort=e,this.context=null}onHeaders(){throw new i(`bad upgrade`,null)}onUpgrade(e,t,n){let{callback:r,opaque:i,context:a}=this;l.strictEqual(e,101),c(this),this.callback=null;let s=this.responseHeaders===`raw`?o.parseRawHeaders(t):o.parseHeaders(t);this.runInAsyncScope(r,null,null,{headers:s,socket:n,opaque:i,context:a})}onError(e){let{callback:t,opaque:n}=this;c(this),t&&(this.callback=null,queueMicrotask(()=>{this.runInAsyncScope(t,null,e,{opaque:n})}))}};function d(e,t){if(t===void 0)return new Promise((t,n)=>{d.call(this,e,(e,r)=>e?n(e):t(r))});try{let n=new u(e,t);this.dispatch({...e,method:e.method||`GET`,upgrade:e.protocol||`Websocket`},n)}catch(n){if(typeof t!=`function`)throw n;let r=e&&e.opaque;queueMicrotask(()=>t(n,{opaque:r}))}}t.exports=d})),Le=b(((e,t)=>{let{AsyncResource:n}=T(`async_hooks`),{InvalidArgumentError:r,RequestAbortedError:i,SocketError:a}=N(),o=P(),{addSignal:s,removeSignal:c}=Me();var l=class extends n{constructor(e,t){if(!e||typeof e!=`object`)throw new r(`invalid opts`);if(typeof t!=`function`)throw new r(`invalid callback`);let{signal:n,opaque:i,responseHeaders:a}=e;if(n&&typeof n.on!=`function`&&typeof n.addEventListener!=`function`)throw new r(`signal must be an EventEmitter or EventTarget`);super(`UNDICI_CONNECT`),this.opaque=i||null,this.responseHeaders=a||null,this.callback=t,this.abort=null,s(this,n)}onConnect(e,t){if(!this.callback)throw new i;this.abort=e,this.context=t}onHeaders(){throw new a(`bad connect`,null)}onUpgrade(e,t,n){let{callback:r,opaque:i,context:a}=this;c(this),this.callback=null;let s=t;s!=null&&(s=this.responseHeaders===`raw`?o.parseRawHeaders(t):o.parseHeaders(t)),this.runInAsyncScope(r,null,null,{statusCode:e,headers:s,socket:n,opaque:i,context:a})}onError(e){let{callback:t,opaque:n}=this;c(this),t&&(this.callback=null,queueMicrotask(()=>{this.runInAsyncScope(t,null,e,{opaque:n})}))}};function u(e,t){if(t===void 0)return new Promise((t,n)=>{u.call(this,e,(e,r)=>e?n(e):t(r))});try{let n=new l(e,t);this.dispatch({...e,method:`CONNECT`},n)}catch(n){if(typeof t!=`function`)throw n;let r=e&&e.opaque;queueMicrotask(()=>t(n,{opaque:r}))}}t.exports=u})),Re=b(((e,t)=>{t.exports.request=Ne(),t.exports.stream=Pe(),t.exports.pipeline=Fe(),t.exports.upgrade=Ie(),t.exports.connect=Le()})),ze=b(((e,t)=>{let{UndiciError:n}=N();t.exports={MockNotMatchedError:class e extends n{constructor(t){super(t),Error.captureStackTrace(this,e),this.name=`MockNotMatchedError`,this.message=t||`The request does not match any registered mock dispatches`,this.code=`UND_MOCK_ERR_MOCK_NOT_MATCHED`}}}})),K=b(((e,t)=>{t.exports={kAgent:Symbol(`agent`),kOptions:Symbol(`options`),kFactory:Symbol(`factory`),kDispatches:Symbol(`dispatches`),kDispatchKey:Symbol(`dispatch key`),kDefaultHeaders:Symbol(`default headers`),kDefaultTrailers:Symbol(`default trailers`),kContentLength:Symbol(`content length`),kMockAgent:Symbol(`mock agent`),kMockAgentSet:Symbol(`mock agent set`),kMockAgentGet:Symbol(`mock agent get`),kMockDispatch:Symbol(`mock dispatch`),kClose:Symbol(`close`),kOriginalClose:Symbol(`original agent close`),kOrigin:Symbol(`origin`),kIsMockActive:Symbol(`is mock active`),kNetConnect:Symbol(`net connect`),kGetNetConnect:Symbol(`get net connect`),kConnected:Symbol(`connected`)}})),Be=b(((e,t)=>{let{MockNotMatchedError:n}=ze(),{kDispatches:r,kMockAgent:i,kOriginalDispatch:a,kOrigin:o,kGetNetConnect:s}=K(),{buildURL:c,nop:l}=P(),{STATUS_CODES:u}=T(`http`),{types:{isPromise:d}}=T(`util`);function f(e,t){return typeof e==`string`?e===t:e instanceof RegExp?e.test(t):typeof e==`function`?e(t)===!0:!1}function p(e){return Object.fromEntries(Object.entries(e).map(([e,t])=>[e.toLocaleLowerCase(),t]))}function m(e,t){if(Array.isArray(e)){for(let n=0;n!e).filter(({path:e})=>f(_(e),i));if(a.length===0)throw new n(`Mock dispatch not matched for path '${i}'`);if(a=a.filter(({method:e})=>f(e,t.method)),a.length===0)throw new n(`Mock dispatch not matched for method '${t.method}'`);if(a=a.filter(({body:e})=>e===void 0?!0:f(e,t.body)),a.length===0)throw new n(`Mock dispatch not matched for body '${t.body}'`);if(a=a.filter(e=>g(e,t.headers)),a.length===0)throw new n(`Mock dispatch not matched for headers '${typeof t.headers==`object`?JSON.stringify(t.headers):t.headers}'`);return a[0]}function x(e,t,n){let r={timesInvoked:0,times:1,persist:!1,consumed:!1},i=typeof n==`function`?{callback:n}:{...n},a={...r,...t,pending:!0,data:{error:null,...i}};return e.push(a),a}function S(e,t){let n=e.findIndex(e=>e.consumed?v(e,t):!1);n!==-1&&e.splice(n,1)}function C(e){let{path:t,method:n,body:r,headers:i,query:a}=e;return{path:t,method:n,body:r,headers:i,query:a}}function w(e){return Object.entries(e).reduce((e,[t,n])=>[...e,Buffer.from(`${t}`),Array.isArray(n)?n.map(e=>Buffer.from(`${e}`)):Buffer.from(`${n}`)],[])}function E(e){return u[e]||`unknown`}async function D(e){let t=[];for await(let n of e)t.push(n);return Buffer.concat(t).toString(`utf8`)}function O(e,t){let n=C(e),i=b(this[r],n);i.timesInvoked++,i.data.callback&&(i.data={...i.data,...i.data.callback(e)});let{data:{statusCode:a,data:o,headers:s,trailers:c,error:u},delay:f,persist:p}=i,{timesInvoked:m,times:g}=i;if(i.consumed=!p&&m>=g,i.pending=m0?setTimeout(()=>{_(this[r])},f):_(this[r]);function _(r,i=o){let u=Array.isArray(e.headers)?h(e.headers):e.headers,f=typeof i==`function`?i({...e,headers:u}):i;if(d(f)){f.then(e=>_(r,e));return}let p=y(f),m=w(s),g=w(c);t.abort=l,t.onHeaders(a,m,v,E(a)),t.onData(Buffer.from(p)),t.onComplete(g),S(r,n)}function v(){}return!0}function k(){let e=this[i],t=this[o],r=this[a];return function(i,a){if(e.isMockActive)try{O.call(this,i,a)}catch(o){if(o instanceof n){let c=e[s]();if(c===!1)throw new n(`${o.message}: subsequent request to origin ${t} was not allowed (net.connect disabled)`);if(A(c,t))r.call(this,i,a);else throw new n(`${o.message}: subsequent request to origin ${t} was not allowed (net.connect is not enabled for this origin)`)}else throw o}else r.call(this,i,a)}}function A(e,t){let n=new URL(t);return e===!0?!0:!!(Array.isArray(e)&&e.some(e=>f(e,n.host)))}function j(e){if(e){let{agent:t,...n}=e;return n}}t.exports={getResponseData:y,getMockDispatch:b,addMockDispatch:x,deleteMockDispatch:S,buildKey:C,generateKeyValues:w,matchValue:f,getResponse:D,getStatusText:E,mockDispatch:O,buildMockDispatch:k,checkNetConnect:A,buildMockOptions:j,getHeaderByName:m}})),Ve=b(((e,t)=>{let{getResponseData:n,buildKey:r,addMockDispatch:i}=Be(),{kDispatches:a,kDispatchKey:o,kDefaultHeaders:s,kDefaultTrailers:c,kContentLength:l,kMockDispatch:u}=K(),{InvalidArgumentError:d}=N(),{buildURL:f}=P();var p=class{constructor(e){this[u]=e}delay(e){if(typeof e!=`number`||!Number.isInteger(e)||e<=0)throw new d(`waitInMs must be a valid integer > 0`);return this[u].delay=e,this}persist(){return this[u].persist=!0,this}times(e){if(typeof e!=`number`||!Number.isInteger(e)||e<=0)throw new d(`repeatTimes must be a valid integer > 0`);return this[u].times=e,this}},m=class{constructor(e,t){if(typeof e!=`object`)throw new d(`opts must be an object`);if(e.path===void 0)throw new d(`opts.path must be defined`);if(e.method===void 0&&(e.method=`GET`),typeof e.path==`string`)if(e.query)e.path=f(e.path,e.query);else{let t=new URL(e.path,`data://`);e.path=t.pathname+t.search}typeof e.method==`string`&&(e.method=e.method.toUpperCase()),this[o]=r(e),this[a]=t,this[s]={},this[c]={},this[l]=!1}createMockScopeDispatchData(e,t,r={}){let i=n(t),a=this[l]?{"content-length":i.length}:{};return{statusCode:e,data:t,headers:{...this[s],...a,...r.headers},trailers:{...this[c],...r.trailers}}}validateReplyParameters(e,t,n){if(e===void 0)throw new d(`statusCode must be defined`);if(t===void 0)throw new d(`data must be defined`);if(typeof n!=`object`)throw new d(`responseOptions must be an object`)}reply(e){if(typeof e==`function`)return new p(i(this[a],this[o],t=>{let n=e(t);if(typeof n!=`object`)throw new d(`reply options callback must return an object`);let{statusCode:r,data:i=``,responseOptions:a={}}=n;return this.validateReplyParameters(r,i,a),{...this.createMockScopeDispatchData(r,i,a)}}));let[t,n=``,r={}]=[...arguments];this.validateReplyParameters(t,n,r);let s=this.createMockScopeDispatchData(t,n,r);return new p(i(this[a],this[o],s))}replyWithError(e){if(e===void 0)throw new d(`error must be defined`);return new p(i(this[a],this[o],{error:e}))}defaultReplyHeaders(e){if(e===void 0)throw new d(`headers must be defined`);return this[s]=e,this}defaultReplyTrailers(e){if(e===void 0)throw new d(`trailers must be defined`);return this[c]=e,this}replyContentLength(){return this[l]=!0,this}};t.exports.MockInterceptor=m,t.exports.MockScope=p})),q=b(((e,t)=>{let{promisify:n}=T(`util`),r=Se(),{buildMockDispatch:i}=Be(),{kDispatches:a,kMockAgent:o,kClose:s,kOriginalClose:c,kOrigin:l,kOriginalDispatch:u,kConnected:d}=K(),{MockInterceptor:f}=Ve(),p=M(),{InvalidArgumentError:m}=N();t.exports=class extends r{constructor(e,t){if(super(e,t),!t||!t.agent||typeof t.agent.dispatch!=`function`)throw new m(`Argument opts.agent must implement Agent`);this[o]=t.agent,this[l]=e,this[a]=[],this[d]=1,this[u]=this.dispatch,this[c]=this.close.bind(this),this.dispatch=i.call(this),this.close=this[s]}get[p.kConnected](){return this[d]}intercept(e){return new f(e,this[a])}async[s](){await n(this[c])(),this[d]=0,this[o][p.kClients].delete(this[l])}}})),He=b(((e,t)=>{let{promisify:n}=T(`util`),r=Ee(),{buildMockDispatch:i}=Be(),{kDispatches:a,kMockAgent:o,kClose:s,kOriginalClose:c,kOrigin:l,kOriginalDispatch:u,kConnected:d}=K(),{MockInterceptor:f}=Ve(),p=M(),{InvalidArgumentError:m}=N();t.exports=class extends r{constructor(e,t){if(super(e,t),!t||!t.agent||typeof t.agent.dispatch!=`function`)throw new m(`Argument opts.agent must implement Agent`);this[o]=t.agent,this[l]=e,this[a]=[],this[d]=1,this[u]=this.dispatch,this[c]=this.close.bind(this),this.dispatch=i.call(this),this.close=this[s]}get[p.kConnected](){return this[d]}intercept(e){return new f(e,this[a])}async[s](){await n(this[c])(),this[d]=0,this[o][p.kClients].delete(this[l])}}})),Ue=b(((e,t)=>{let n={pronoun:`it`,is:`is`,was:`was`,this:`this`},r={pronoun:`they`,is:`are`,was:`were`,this:`these`};t.exports=class{constructor(e,t){this.singular=e,this.plural=t}pluralize(e){let t=e===1,i=t?n:r,a=t?this.singular:this.plural;return{...i,count:e,noun:a}}}})),J=b(((e,t)=>{let{Transform:n}=T(`stream`),{Console:r}=T(`console`);t.exports=class{constructor({disableColors:e}={}){this.transform=new n({transform(e,t,n){n(null,e)}}),this.logger=new r({stdout:this.transform,inspectOptions:{colors:!e&&!process.env.CI}})}format(e){let t=e.map(({method:e,path:t,data:{statusCode:n},persist:r,times:i,timesInvoked:a,origin:o})=>({Method:e,Origin:o,Path:t,"Status code":n,Persistent:r?`✅`:`❌`,Invocations:a,Remaining:r?1/0:i-a}));return this.logger.table(t),this.transform.read().toString()}}})),We=b(((e,t)=>{let{kClients:n}=M(),r=ke(),{kAgent:i,kMockAgentSet:a,kMockAgentGet:o,kDispatches:s,kIsMockActive:c,kNetConnect:l,kGetNetConnect:u,kOptions:d,kFactory:f}=K(),p=q(),m=He(),{matchValue:h,buildMockOptions:g}=Be(),{InvalidArgumentError:_,UndiciError:v}=N(),y=pe(),b=Ue(),x=J();var S=class{constructor(e){this.value=e}deref(){return this.value}};t.exports=class extends y{constructor(e){if(super(e),this[l]=!0,this[c]=!0,e&&e.agent&&typeof e.agent.dispatch!=`function`)throw new _(`Argument opts.agent must implement Agent`);let t=e&&e.agent?e.agent:new r(e);this[i]=t,this[n]=t[n],this[d]=g(e)}get(e){let t=this[o](e);return t||(t=this[f](e),this[a](e,t)),t}dispatch(e,t){return this.get(e.origin),this[i].dispatch(e,t)}async close(){await this[i].close(),this[n].clear()}deactivate(){this[c]=!1}activate(){this[c]=!0}enableNetConnect(e){if(typeof e==`string`||typeof e==`function`||e instanceof RegExp)Array.isArray(this[l])?this[l].push(e):this[l]=[e];else if(e===void 0)this[l]=!0;else throw new _(`Unsupported matcher. Must be one of String|Function|RegExp.`)}disableNetConnect(){this[l]=!1}get isMockActive(){return this[c]}[a](e,t){this[n].set(e,new S(t))}[f](e){let t=Object.assign({agent:this},this[d]);return this[d]&&this[d].connections===1?new p(e,t):new m(e,t)}[o](e){let t=this[n].get(e);if(t)return t.deref();if(typeof e!=`string`){let t=this[f](`http://localhost:9999`);return this[a](e,t),t}for(let[t,r]of Array.from(this[n])){let n=r.deref();if(n&&typeof t!=`string`&&h(t,e)){let t=this[f](e);return this[a](e,t),t[s]=n[s],t}}}[u](){return this[l]}pendingInterceptors(){let e=this[n];return Array.from(e.entries()).flatMap(([e,t])=>t.deref()[s].map(t=>({...t,origin:e}))).filter(({pending:e})=>e)}assertNoPendingInterceptors({pendingInterceptorsFormatter:e=new x}={}){let t=this.pendingInterceptors();if(t.length===0)return;let n=new b(`interceptor`,`interceptors`).pluralize(t.length);throw new v(` +${n.count} ${n.noun} ${n.is} pending: + +${e.format(t)} +`.trim())}}})),Ge=b(((e,t)=>{let{kProxy:n,kClose:r,kDestroy:i,kInterceptors:a}=M(),{URL:o}=T(`url`),s=ke(),c=Ee(),l=me(),{InvalidArgumentError:u,RequestAbortedError:d}=N(),f=he(),p=Symbol(`proxy agent`),m=Symbol(`proxy client`),h=Symbol(`proxy headers`),g=Symbol(`request tls settings`),_=Symbol(`proxy tls settings`),v=Symbol(`connect endpoint function`);function y(e){return e===`https:`?443:80}function b(e){if(typeof e==`string`&&(e={uri:e}),!e||!e.uri)throw new u(`Proxy opts.uri is mandatory`);return{uri:e.uri,protocol:e.protocol||`https`}}function x(e,t){return new c(e,t)}var S=class extends l{constructor(e){if(super(e),this[n]=b(e),this[p]=new s(e),this[a]=e.interceptors&&e.interceptors.ProxyAgent&&Array.isArray(e.interceptors.ProxyAgent)?e.interceptors.ProxyAgent:[],typeof e==`string`&&(e={uri:e}),!e||!e.uri)throw new u(`Proxy opts.uri is mandatory`);let{clientFactory:t=x}=e;if(typeof t!=`function`)throw new u(`Proxy opts.clientFactory must be a function.`);this[g]=e.requestTls,this[_]=e.proxyTls,this[h]=e.headers||{};let r=new o(e.uri),{origin:i,port:c,host:l,username:S,password:C}=r;if(e.auth&&e.token)throw new u(`opts.auth cannot be used in combination with opts.token`);e.auth?this[h][`proxy-authorization`]=`Basic ${e.auth}`:e.token?this[h][`proxy-authorization`]=e.token:S&&C&&(this[h][`proxy-authorization`]=`Basic ${Buffer.from(`${decodeURIComponent(S)}:${decodeURIComponent(C)}`).toString(`base64`)}`);let w=f({...e.proxyTls});this[v]=f({...e.requestTls}),this[m]=t(r,{connect:w}),this[p]=new s({...e,connect:async(e,t)=>{let n=e.host;e.port||(n+=`:${y(e.protocol)}`);try{let{socket:r,statusCode:a}=await this[m].connect({origin:i,port:c,path:n,signal:e.signal,headers:{...this[h],host:l}});if(a!==200&&(r.on(`error`,()=>{}).destroy(),t(new d(`Proxy response (${a}) !== 200 when HTTP Tunneling`))),e.protocol!==`https:`){t(null,r);return}let o;o=this[g]?this[g].servername:e.servername,this[v]({...e,servername:o,httpSocket:r},t)}catch(e){t(e)}}})}dispatch(e,t){let{host:n}=new o(e.origin),r=C(e.headers);return w(r),this[p].dispatch({...e,headers:{...r,host:n}},t)}async[r](){await this[p].close(),await this[m].close()}async[i](){await this[p].destroy(),await this[m].destroy()}};function C(e){if(Array.isArray(e)){let t={};for(let n=0;ne.toLowerCase()===`proxy-authorization`))throw new u(`Proxy-Authorization should be sent in ProxyAgent constructor`)}t.exports=S})),Y=b(((e,t)=>{let n=T(`assert`),{kRetryHandlerDefaultRetry:r}=M(),{RequestRetryError:i}=N(),{isDisturbed:a,parseHeaders:o,parseRangeHeader:s}=P();function c(e){let t=Date.now();return new Date(e).getTime()-t}t.exports=class e{constructor(t,n){let{retryOptions:i,...a}=t,{retry:o,maxRetries:s,maxTimeout:c,minTimeout:l,timeoutFactor:u,methods:d,errorCodes:f,retryAfter:p,statusCodes:m}=i??{};this.dispatch=n.dispatch,this.handler=n.handler,this.opts=a,this.abort=null,this.aborted=!1,this.retryOpts={retry:o??e[r],retryAfter:p??!0,maxTimeout:c??30*1e3,timeout:l??500,timeoutFactor:u??2,maxRetries:s??5,methods:d??[`GET`,`HEAD`,`OPTIONS`,`PUT`,`DELETE`,`TRACE`],statusCodes:m??[500,502,503,504,429],errorCodes:f??[`ECONNRESET`,`ECONNREFUSED`,`ENOTFOUND`,`ENETDOWN`,`ENETUNREACH`,`EHOSTDOWN`,`EHOSTUNREACH`,`EPIPE`]},this.retryCount=0,this.start=0,this.end=null,this.etag=null,this.resume=null,this.handler.onConnect(e=>{this.aborted=!0,this.abort?this.abort(e):this.reason=e})}onRequestSent(){this.handler.onRequestSent&&this.handler.onRequestSent()}onUpgrade(e,t,n){this.handler.onUpgrade&&this.handler.onUpgrade(e,t,n)}onConnect(e){this.aborted?e(this.reason):this.abort=e}onBodySent(e){if(this.handler.onBodySent)return this.handler.onBodySent(e)}static[r](e,{state:t,opts:n},r){let{statusCode:i,code:a,headers:o}=e,{method:s,retryOptions:l}=n,{maxRetries:u,timeout:d,maxTimeout:f,timeoutFactor:p,statusCodes:m,errorCodes:h,methods:g}=l,{counter:_,currentTimeout:v}=t;if(v=v!=null&&v>0?v:d,a&&a!==`UND_ERR_REQ_RETRY`&&a!==`UND_ERR_SOCKET`&&!h.includes(a)){r(e);return}if(Array.isArray(g)&&!g.includes(s)){r(e);return}if(i!=null&&Array.isArray(m)&&!m.includes(i)){r(e);return}if(_>u){r(e);return}let y=o!=null&&o[`retry-after`];y&&=(y=Number(y),isNaN(y)?c(y):y*1e3);let b=y>0?Math.min(y,f):Math.min(v*p**_,f);t.currentTimeout=b,setTimeout(()=>r(null),b)}onHeaders(e,t,r,a){let c=o(t);if(this.retryCount+=1,e>=300)return this.abort(new i(`Request failed`,e,{headers:c,count:this.retryCount})),!1;if(this.resume!=null){if(this.resume=null,e!==206)return!0;let t=s(c[`content-range`]);if(!t)return this.abort(new i(`Content-Range mismatch`,e,{headers:c,count:this.retryCount})),!1;if(this.etag!=null&&this.etag!==c.etag)return this.abort(new i(`ETag mismatch`,e,{headers:c,count:this.retryCount})),!1;let{start:a,size:o,end:l=o}=t;return n(this.start===a,`content-range mismatch`),n(this.end==null||this.end===l,`content-range mismatch`),this.resume=r,!0}if(this.end==null){if(e===206){let i=s(c[`content-range`]);if(i==null)return this.handler.onHeaders(e,t,r,a);let{start:o,size:l,end:u=l}=i;n(o!=null&&Number.isFinite(o)&&this.start!==o,`content-range mismatch`),n(Number.isFinite(o)),n(u!=null&&Number.isFinite(u)&&this.end!==u,`invalid content-length`),this.start=o,this.end=u}if(this.end==null){let e=c[`content-length`];this.end=e==null?null:Number(e)}return n(Number.isFinite(this.start)),n(this.end==null||Number.isFinite(this.end),`invalid content-length`),this.resume=r,this.etag=c.etag==null?null:c.etag,this.handler.onHeaders(e,t,r,a)}let l=new i(`Request failed`,e,{headers:c,count:this.retryCount});return this.abort(l),!1}onData(e){return this.start+=e.length,this.handler.onData(e)}onComplete(e){return this.retryCount=0,this.handler.onComplete(e)}onError(e){if(this.aborted||a(this.opts.body))return this.handler.onError(e);this.retryOpts.retry(e,{state:{counter:this.retryCount++,currentTimeout:this.retryAfter},opts:{retryOptions:this.retryOpts,...this.opts}},t.bind(this));function t(e){if(e!=null||this.aborted||a(this.opts.body))return this.handler.onError(e);this.start!==0&&(this.opts={...this.opts,headers:{...this.opts.headers,range:`bytes=${this.start}-${this.end??``}`}});try{this.dispatch(this.opts,this)}catch(e){this.handler.onError(e)}}}}})),Ke=b(((e,t)=>{let n=Symbol.for(`undici.globalDispatcher.1`),{InvalidArgumentError:r}=N(),i=ke();o()===void 0&&a(new i);function a(e){if(!e||typeof e.dispatch!=`function`)throw new r(`Argument agent must implement Agent`);Object.defineProperty(globalThis,n,{value:e,writable:!0,enumerable:!1,configurable:!1})}function o(){return globalThis[n]}t.exports={setGlobalDispatcher:a,getGlobalDispatcher:o}})),qe=b(((e,t)=>{t.exports=class{constructor(e){this.handler=e}onConnect(...e){return this.handler.onConnect(...e)}onError(...e){return this.handler.onError(...e)}onUpgrade(...e){return this.handler.onUpgrade(...e)}onHeaders(...e){return this.handler.onHeaders(...e)}onData(...e){return this.handler.onData(...e)}onComplete(...e){return this.handler.onComplete(...e)}onBodySent(...e){return this.handler.onBodySent(...e)}}})),Je=b(((e,t)=>{let n,{kHeadersList:r,kConstruct:i}=M(),{kGuard:a}=oe(),{kEnumerableProperty:o}=P(),{makeIterator:s,isValidHeaderName:c,isValidHeaderValue:l}=G(),u=T(`util`),{webidl:d}=se(),f=T(`assert`),p=Symbol(`headers map`),m=Symbol(`headers map sorted`);function h(e){return e===10||e===13||e===9||e===32}function g(e){let t=0,n=e.length;for(;n>t&&h(e.charCodeAt(n-1));)--n;for(;n>t&&h(e.charCodeAt(t));)++t;return t===0&&n===e.length?e:e.substring(t,n)}function _(e,t){if(Array.isArray(t))for(let n=0;n>`,`record`]})}function v(e,t,n){if(n=g(n),c(t)){if(!l(n))throw d.errors.invalidArgument({prefix:`Headers.append`,value:n,type:`header value`})}else throw d.errors.invalidArgument({prefix:`Headers.append`,value:t,type:`header name`});if(e[a]===`immutable`)throw TypeError(`immutable`);return e[a],e[r].append(t,n)}n=Symbol.iterator;var y=class e{constructor(t){this.cookies=null,t instanceof e?(this[p]=new Map(t[p]),this[m]=t[m],this.cookies=t.cookies===null?null:[...t.cookies]):(this[p]=new Map(t),this[m]=null)}contains(e){return e=e.toLowerCase(),this[p].has(e)}clear(){this[p].clear(),this[m]=null,this.cookies=null}append(e,t){this[m]=null;let n=e.toLowerCase(),r=this[p].get(n);if(r){let e=n===`cookie`?`; `:`, `;this[p].set(n,{name:r.name,value:`${r.value}${e}${t}`})}else this[p].set(n,{name:e,value:t});n===`set-cookie`&&(this.cookies??=[],this.cookies.push(t))}set(e,t){this[m]=null;let n=e.toLowerCase();n===`set-cookie`&&(this.cookies=[t]),this[p].set(n,{name:e,value:t})}delete(e){this[m]=null,e=e.toLowerCase(),e===`set-cookie`&&(this.cookies=null),this[p].delete(e)}get(e){let t=this[p].get(e.toLowerCase());return t===void 0?null:t.value}*[n](){for(let[e,{value:t}]of this[p])yield[e,t]}get entries(){let e={};if(this[p].size)for(let{name:t,value:n}of this[p].values())e[t]=n;return e}},b=class e{constructor(e=void 0){e!==i&&(this[r]=new y,this[a]=`none`,e!==void 0&&(e=d.converters.HeadersInit(e),_(this,e)))}append(t,n){return d.brandCheck(this,e),d.argumentLengthCheck(arguments,2,{header:`Headers.append`}),t=d.converters.ByteString(t),n=d.converters.ByteString(n),v(this,t,n)}delete(t){if(d.brandCheck(this,e),d.argumentLengthCheck(arguments,1,{header:`Headers.delete`}),t=d.converters.ByteString(t),!c(t))throw d.errors.invalidArgument({prefix:`Headers.delete`,value:t,type:`header name`});if(this[a]===`immutable`)throw TypeError(`immutable`);this[a],this[r].contains(t)&&this[r].delete(t)}get(t){if(d.brandCheck(this,e),d.argumentLengthCheck(arguments,1,{header:`Headers.get`}),t=d.converters.ByteString(t),!c(t))throw d.errors.invalidArgument({prefix:`Headers.get`,value:t,type:`header name`});return this[r].get(t)}has(t){if(d.brandCheck(this,e),d.argumentLengthCheck(arguments,1,{header:`Headers.has`}),t=d.converters.ByteString(t),!c(t))throw d.errors.invalidArgument({prefix:`Headers.has`,value:t,type:`header name`});return this[r].contains(t)}set(t,n){if(d.brandCheck(this,e),d.argumentLengthCheck(arguments,2,{header:`Headers.set`}),t=d.converters.ByteString(t),n=d.converters.ByteString(n),n=g(n),c(t)){if(!l(n))throw d.errors.invalidArgument({prefix:`Headers.set`,value:n,type:`header value`})}else throw d.errors.invalidArgument({prefix:`Headers.set`,value:t,type:`header name`});if(this[a]===`immutable`)throw TypeError(`immutable`);this[a],this[r].set(t,n)}getSetCookie(){d.brandCheck(this,e);let t=this[r].cookies;return t?[...t]:[]}get[m](){if(this[r][m])return this[r][m];let e=[],t=[...this[r]].sort((e,t)=>e[0]e,`Headers`,`key`)}return s(()=>[...this[m].values()],`Headers`,`key`)}values(){if(d.brandCheck(this,e),this[a]===`immutable`){let e=this[m];return s(()=>e,`Headers`,`value`)}return s(()=>[...this[m].values()],`Headers`,`value`)}entries(){if(d.brandCheck(this,e),this[a]===`immutable`){let e=this[m];return s(()=>e,`Headers`,`key+value`)}return s(()=>[...this[m].values()],`Headers`,`key+value`)}forEach(t,n=globalThis){if(d.brandCheck(this,e),d.argumentLengthCheck(arguments,1,{header:`Headers.forEach`}),typeof t!=`function`)throw TypeError(`Failed to execute 'forEach' on 'Headers': parameter 1 is not of type 'Function'.`);for(let[e,r]of this)t.apply(n,[r,e,this])}[Symbol.for(`nodejs.util.inspect.custom`)](){return d.brandCheck(this,e),this[r]}};b.prototype[Symbol.iterator]=b.prototype.entries,Object.defineProperties(b.prototype,{append:o,delete:o,get:o,has:o,set:o,getSetCookie:o,keys:o,values:o,entries:o,forEach:o,[Symbol.iterator]:{enumerable:!1},[Symbol.toStringTag]:{value:`Headers`,configurable:!0},[u.inspect.custom]:{enumerable:!1}}),d.converters.HeadersInit=function(e){if(d.util.Type(e)===`Object`)return e[Symbol.iterator]?d.converters[`sequence>`](e):d.converters[`record`](e);throw d.errors.conversionFailed({prefix:`Headers constructor`,argument:`Argument 1`,types:[`sequence>`,`record`]})},t.exports={fill:_,Headers:b,HeadersList:y}})),Ye=b(((e,t)=>{let{Headers:n,HeadersList:r,fill:i}=Je(),{extractBody:a,cloneBody:o,mixinBody:s}=de(),c=P(),{kEnumerableProperty:l}=c,{isValidReasonPhrase:u,isCancelled:d,isAborted:f,isBlobLike:p,serializeJavascriptValueToJSONString:m,isErrorLike:h,isomorphicEncode:g}=G(),{redirectStatusSet:_,nullBodyStatus:v,DOMException:y}=W(),{kState:b,kHeaders:x,kGuard:S,kRealm:C}=oe(),{webidl:w}=se(),{FormData:E}=ue(),{getGlobalOrigin:D}=ae(),{URLSerializer:O}=ce(),{kHeadersList:k,kConstruct:A}=M(),j=T(`assert`),{types:N}=T(`util`),ee=globalThis.ReadableStream||T(`stream/web`).ReadableStream,F=new TextEncoder(`utf-8`);var I=class e{static error(){let t={settingsObject:{}},n=new e;return n[b]=z(),n[C]=t,n[x][k]=n[b].headersList,n[x][S]=`immutable`,n[x][C]=t,n}static json(t,n={}){w.argumentLengthCheck(arguments,1,{header:`Response.json`}),n!==null&&(n=w.converters.ResponseInit(n));let r=a(F.encode(m(t))),i={settingsObject:{}},o=new e;return o[C]=i,o[x][S]=`response`,o[x][C]=i,H(o,n,{body:r[0],type:`application/json`}),o}static redirect(t,n=302){let r={settingsObject:{}};w.argumentLengthCheck(arguments,1,{header:`Response.redirect`}),t=w.converters.USVString(t),n=w.converters[`unsigned short`](n);let i;try{i=new URL(t,D())}catch(e){throw Object.assign(TypeError(`Failed to parse URL from `+t),{cause:e})}if(!_.has(n))throw RangeError(`Invalid status code `+n);let a=new e;a[C]=r,a[x][S]=`immutable`,a[x][C]=r,a[b].status=n;let o=g(O(i));return a[b].headersList.append(`location`,o),a}constructor(e=null,t={}){e!==null&&(e=w.converters.BodyInit(e)),t=w.converters.ResponseInit(t),this[C]={settingsObject:{}},this[b]=R({}),this[x]=new n(A),this[x][S]=`response`,this[x][k]=this[b].headersList,this[x][C]=this[C];let r=null;if(e!=null){let[t,n]=a(e);r={body:t,type:n}}H(this,t,r)}get type(){return w.brandCheck(this,e),this[b].type}get url(){w.brandCheck(this,e);let t=this[b].urlList,n=t[t.length-1]??null;return n===null?``:O(n,!0)}get redirected(){return w.brandCheck(this,e),this[b].urlList.length>1}get status(){return w.brandCheck(this,e),this[b].status}get ok(){return w.brandCheck(this,e),this[b].status>=200&&this[b].status<=299}get statusText(){return w.brandCheck(this,e),this[b].statusText}get headers(){return w.brandCheck(this,e),this[x]}get body(){return w.brandCheck(this,e),this[b].body?this[b].body.stream:null}get bodyUsed(){return w.brandCheck(this,e),!!this[b].body&&c.isDisturbed(this[b].body.stream)}clone(){if(w.brandCheck(this,e),this.bodyUsed||this.body&&this.body.locked)throw w.errors.exception({header:`Response.clone`,message:`Body has already been consumed.`});let t=L(this[b]),n=new e;return n[b]=t,n[C]=this[C],n[x][k]=t.headersList,n[x][S]=this[x][S],n[x][C]=this[x][C],n}};s(I),Object.defineProperties(I.prototype,{type:l,url:l,status:l,ok:l,redirected:l,statusText:l,headers:l,clone:l,body:l,bodyUsed:l,[Symbol.toStringTag]:{value:`Response`,configurable:!0}}),Object.defineProperties(I,{json:l,redirect:l,error:l});function L(e){if(e.internalResponse)return V(L(e.internalResponse),e.type);let t=R({...e,body:null});return e.body!=null&&(t.body=o(e.body)),t}function R(e){return{aborted:!1,rangeRequested:!1,timingAllowPassed:!1,requestIncludesCredentials:!1,type:`default`,status:200,timingInfo:null,cacheState:``,statusText:``,...e,headersList:e.headersList?new r(e.headersList):new r,urlList:e.urlList?[...e.urlList]:[]}}function z(e){return R({type:`error`,status:0,error:h(e)?e:Error(e&&String(e)),aborted:e&&e.name===`AbortError`})}function B(e,t){return t={internalResponse:e,...t},new Proxy(e,{get(e,n){return n in t?t[n]:e[n]},set(e,n,r){return j(!(n in t)),e[n]=r,!0}})}function V(e,t){if(t===`basic`)return B(e,{type:`basic`,headersList:e.headersList});if(t===`cors`)return B(e,{type:`cors`,headersList:e.headersList});if(t===`opaque`)return B(e,{type:`opaque`,urlList:Object.freeze([]),status:0,statusText:``,body:null});if(t===`opaqueredirect`)return B(e,{type:`opaqueredirect`,status:0,statusText:``,headersList:[],body:null});j(!1)}function te(e,t=null){return j(d(e)),f(e)?z(Object.assign(new y(`The operation was aborted.`,`AbortError`),{cause:t})):z(Object.assign(new y(`Request was cancelled.`),{cause:t}))}function H(e,t,n){if(t.status!==null&&(t.status<200||t.status>599))throw RangeError(`init["status"] must be in the range of 200 to 599, inclusive.`);if(`statusText`in t&&t.statusText!=null&&!u(String(t.statusText)))throw TypeError(`Invalid statusText`);if(`status`in t&&t.status!=null&&(e[b].status=t.status),`statusText`in t&&t.statusText!=null&&(e[b].statusText=t.statusText),`headers`in t&&t.headers!=null&&i(e[x],t.headers),n){if(v.includes(e.status))throw w.errors.exception({header:`Response constructor`,message:`Invalid response status code `+e.status});e[b].body=n.body,n.type!=null&&!e[b].headersList.contains(`Content-Type`)&&e[b].headersList.append(`content-type`,n.type)}}w.converters.ReadableStream=w.interfaceConverter(ee),w.converters.FormData=w.interfaceConverter(E),w.converters.URLSearchParams=w.interfaceConverter(URLSearchParams),w.converters.XMLHttpRequestBodyInit=function(e){return typeof e==`string`?w.converters.USVString(e):p(e)?w.converters.Blob(e,{strict:!1}):N.isArrayBuffer(e)||N.isTypedArray(e)||N.isDataView(e)?w.converters.BufferSource(e):c.isFormDataLike(e)?w.converters.FormData(e,{strict:!1}):e instanceof URLSearchParams?w.converters.URLSearchParams(e):w.converters.DOMString(e)},w.converters.BodyInit=function(e){return e instanceof ee?w.converters.ReadableStream(e):e?.[Symbol.asyncIterator]?e:w.converters.XMLHttpRequestBodyInit(e)},w.converters.ResponseInit=w.dictionaryConverter([{key:`status`,converter:w.converters[`unsigned short`],defaultValue:200},{key:`statusText`,converter:w.converters.ByteString,defaultValue:``},{key:`headers`,converter:w.converters.HeadersInit}]),t.exports={makeNetworkError:z,makeResponse:R,makeAppropriateNetworkError:te,filterResponse:V,Response:I,cloneResponse:L}})),Xe=b(((e,t)=>{let{extractBody:n,mixinBody:r,cloneBody:i}=de(),{Headers:a,fill:o,HeadersList:s}=Je(),{FinalizationRegistry:c}=Oe()(),l=P(),{isValidHTTPToken:u,sameOrigin:d,normalizeMethod:f,makePolicyContainer:p,normalizeMethodRecord:m}=G(),{forbiddenMethodsSet:h,corsSafeListedMethodsSet:g,referrerPolicy:_,requestRedirect:v,requestMode:y,requestCredentials:b,requestCache:x,requestDuplex:S}=W(),{kEnumerableProperty:C}=l,{kHeaders:w,kSignal:E,kState:D,kGuard:O,kRealm:k}=oe(),{webidl:A}=se(),{getGlobalOrigin:j}=ae(),{URLSerializer:N}=ce(),{kHeadersList:ee,kConstruct:F}=M(),I=T(`assert`),{getMaxListeners:L,setMaxListeners:R,getEventListeners:z,defaultMaxListeners:B}=T(`events`),V=globalThis.TransformStream,te=Symbol(`abortController`),H=new c(({signal:e,abort:t})=>{e.removeEventListener(`abort`,t)});var ne=class e{constructor(t,r={}){if(t===F)return;A.argumentLengthCheck(arguments,1,{header:`Request constructor`}),t=A.converters.RequestInfo(t),r=A.converters.RequestInit(r),this[k]={settingsObject:{baseUrl:j(),get origin(){return this.baseUrl?.origin},policyContainer:p()}};let i=null,c=null,_=this[k].settingsObject.baseUrl,v=null;if(typeof t==`string`){let e;try{e=new URL(t,_)}catch(e){throw TypeError(`Failed to parse URL from `+t,{cause:e})}if(e.username||e.password)throw TypeError(`Request cannot be constructed from a URL that includes credentials: `+t);i=re({urlList:[e]}),c=`cors`}else I(t instanceof e),i=t[D],v=t[E];let y=this[k].settingsObject.origin,b=`client`;if(i.window?.constructor?.name===`EnvironmentSettingsObject`&&d(i.window,y)&&(b=i.window),r.window!=null)throw TypeError(`'window' option '${b}' must be null`);`window`in r&&(b=`no-window`),i=re({method:i.method,headersList:i.headersList,unsafeRequest:i.unsafeRequest,client:this[k].settingsObject,window:b,priority:i.priority,origin:i.origin,referrer:i.referrer,referrerPolicy:i.referrerPolicy,mode:i.mode,credentials:i.credentials,cache:i.cache,redirect:i.redirect,integrity:i.integrity,keepalive:i.keepalive,reloadNavigation:i.reloadNavigation,historyNavigation:i.historyNavigation,urlList:[...i.urlList]});let x=Object.keys(r).length!==0;if(x&&(i.mode===`navigate`&&(i.mode=`same-origin`),i.reloadNavigation=!1,i.historyNavigation=!1,i.origin=`client`,i.referrer=`client`,i.referrerPolicy=``,i.url=i.urlList[i.urlList.length-1],i.urlList=[i.url]),r.referrer!==void 0){let e=r.referrer;if(e===``)i.referrer=`no-referrer`;else{let t;try{t=new URL(e,_)}catch(t){throw TypeError(`Referrer "${e}" is not a valid URL.`,{cause:t})}t.protocol===`about:`&&t.hostname===`client`||y&&!d(t,this[k].settingsObject.baseUrl)?i.referrer=`client`:i.referrer=t}}r.referrerPolicy!==void 0&&(i.referrerPolicy=r.referrerPolicy);let S;if(S=r.mode===void 0?c:r.mode,S===`navigate`)throw A.errors.exception({header:`Request constructor`,message:`invalid request mode navigate.`});if(S!=null&&(i.mode=S),r.credentials!==void 0&&(i.credentials=r.credentials),r.cache!==void 0&&(i.cache=r.cache),i.cache===`only-if-cached`&&i.mode!==`same-origin`)throw TypeError(`'only-if-cached' can be set only with 'same-origin' mode`);if(r.redirect!==void 0&&(i.redirect=r.redirect),r.integrity!=null&&(i.integrity=String(r.integrity)),r.keepalive!==void 0&&(i.keepalive=!!r.keepalive),r.method!==void 0){let e=r.method;if(!u(e))throw TypeError(`'${e}' is not a valid HTTP method.`);if(h.has(e.toUpperCase()))throw TypeError(`'${e}' HTTP method is unsupported.`);e=m[e]??f(e),i.method=e}r.signal!==void 0&&(v=r.signal),this[D]=i;let C=new AbortController;if(this[E]=C.signal,this[E][k]=this[k],v!=null){if(!v||typeof v.aborted!=`boolean`||typeof v.addEventListener!=`function`)throw TypeError(`Failed to construct 'Request': member signal is not of type AbortSignal.`);if(v.aborted)C.abort(v.reason);else{this[te]=C;let e=new WeakRef(C),t=function(){let t=e.deref();t!==void 0&&t.abort(this.reason)};try{(typeof L==`function`&&L(v)===B||z(v,`abort`).length>=B)&&R(100,v)}catch{}l.addAbortListener(v,t),H.register(C,{signal:v,abort:t})}}if(this[w]=new a(F),this[w][ee]=i.headersList,this[w][O]=`request`,this[w][k]=this[k],S===`no-cors`){if(!g.has(i.method))throw TypeError(`'${i.method} is unsupported in no-cors mode.`);this[w][O]=`request-no-cors`}if(x){let e=this[w][ee],t=r.headers===void 0?new s(e):r.headers;if(e.clear(),t instanceof s){for(let[n,r]of t)e.append(n,r);e.cookies=t.cookies}else o(this[w],t)}let M=t instanceof e?t[D].body:null;if((r.body!=null||M!=null)&&(i.method===`GET`||i.method===`HEAD`))throw TypeError(`Request with GET/HEAD method cannot have body.`);let N=null;if(r.body!=null){let[e,t]=n(r.body,i.keepalive);N=e,t&&!this[w][ee].contains(`content-type`)&&this[w].append(`content-type`,t)}let P=N??M;if(P!=null&&P.source==null){if(N!=null&&r.duplex==null)throw TypeError(`RequestInit: duplex option is required when sending a body.`);if(i.mode!==`same-origin`&&i.mode!==`cors`)throw TypeError(`If request is made from ReadableStream, mode should be "same-origin" or "cors"`);i.useCORSPreflightFlag=!0}let ne=P;if(N==null&&M!=null){if(l.isDisturbed(M.stream)||M.stream.locked)throw TypeError(`Cannot construct a Request with a Request object that has already been used.`);V||=T(`stream/web`).TransformStream;let e=new V;M.stream.pipeThrough(e),ne={source:M.source,length:M.length,stream:e.readable}}this[D].body=ne}get method(){return A.brandCheck(this,e),this[D].method}get url(){return A.brandCheck(this,e),N(this[D].url)}get headers(){return A.brandCheck(this,e),this[w]}get destination(){return A.brandCheck(this,e),this[D].destination}get referrer(){return A.brandCheck(this,e),this[D].referrer===`no-referrer`?``:this[D].referrer===`client`?`about:client`:this[D].referrer.toString()}get referrerPolicy(){return A.brandCheck(this,e),this[D].referrerPolicy}get mode(){return A.brandCheck(this,e),this[D].mode}get credentials(){return this[D].credentials}get cache(){return A.brandCheck(this,e),this[D].cache}get redirect(){return A.brandCheck(this,e),this[D].redirect}get integrity(){return A.brandCheck(this,e),this[D].integrity}get keepalive(){return A.brandCheck(this,e),this[D].keepalive}get isReloadNavigation(){return A.brandCheck(this,e),this[D].reloadNavigation}get isHistoryNavigation(){return A.brandCheck(this,e),this[D].historyNavigation}get signal(){return A.brandCheck(this,e),this[E]}get body(){return A.brandCheck(this,e),this[D].body?this[D].body.stream:null}get bodyUsed(){return A.brandCheck(this,e),!!this[D].body&&l.isDisturbed(this[D].body.stream)}get duplex(){return A.brandCheck(this,e),`half`}clone(){if(A.brandCheck(this,e),this.bodyUsed||this.body?.locked)throw TypeError(`unusable`);let t=U(this[D]),n=new e(F);n[D]=t,n[k]=this[k],n[w]=new a(F),n[w][ee]=t.headersList,n[w][O]=this[w][O],n[w][k]=this[w][k];let r=new AbortController;return this.signal.aborted?r.abort(this.signal.reason):l.addAbortListener(this.signal,()=>{r.abort(this.signal.reason)}),n[E]=r.signal,n}};r(ne);function re(e){let t={method:`GET`,localURLsOnly:!1,unsafeRequest:!1,body:null,client:null,reservedClient:null,replacesClientId:``,window:`client`,keepalive:!1,serviceWorkers:`all`,initiator:``,destination:``,priority:null,origin:`client`,policyContainer:`client`,referrer:`client`,referrerPolicy:``,mode:`no-cors`,useCORSPreflightFlag:!1,credentials:`same-origin`,useCredentials:!1,cache:`default`,redirect:`follow`,integrity:``,cryptoGraphicsNonceMetadata:``,parserMetadata:``,reloadNavigation:!1,historyNavigation:!1,userActivation:!1,taintedOrigin:!1,redirectCount:0,responseTainting:`basic`,preventNoCacheCacheControlHeaderModification:!1,done:!1,timingAllowFailed:!1,...e,headersList:e.headersList?new s(e.headersList):new s};return t.url=t.urlList[0],t}function U(e){let t=re({...e,body:null});return e.body!=null&&(t.body=i(e.body)),t}Object.defineProperties(ne.prototype,{method:C,url:C,headers:C,redirect:C,clone:C,signal:C,duplex:C,destination:C,body:C,bodyUsed:C,isHistoryNavigation:C,isReloadNavigation:C,keepalive:C,integrity:C,cache:C,credentials:C,attribute:C,referrerPolicy:C,referrer:C,mode:C,[Symbol.toStringTag]:{value:`Request`,configurable:!0}}),A.converters.Request=A.interfaceConverter(ne),A.converters.RequestInfo=function(e){return typeof e==`string`?A.converters.USVString(e):e instanceof ne?A.converters.Request(e):A.converters.USVString(e)},A.converters.AbortSignal=A.interfaceConverter(AbortSignal),A.converters.RequestInit=A.dictionaryConverter([{key:`method`,converter:A.converters.ByteString},{key:`headers`,converter:A.converters.HeadersInit},{key:`body`,converter:A.nullableConverter(A.converters.BodyInit)},{key:`referrer`,converter:A.converters.USVString},{key:`referrerPolicy`,converter:A.converters.DOMString,allowedValues:_},{key:`mode`,converter:A.converters.DOMString,allowedValues:y},{key:`credentials`,converter:A.converters.DOMString,allowedValues:b},{key:`cache`,converter:A.converters.DOMString,allowedValues:x},{key:`redirect`,converter:A.converters.DOMString,allowedValues:v},{key:`integrity`,converter:A.converters.DOMString},{key:`keepalive`,converter:A.converters.boolean},{key:`signal`,converter:A.nullableConverter(e=>A.converters.AbortSignal(e,{strict:!1}))},{key:`window`,converter:A.converters.any},{key:`duplex`,converter:A.converters.DOMString,allowedValues:S}]),t.exports={Request:ne,makeRequest:re}})),Ze=b(((e,t)=>{let{Response:n,makeNetworkError:r,makeAppropriateNetworkError:i,filterResponse:a,makeResponse:o}=Ye(),{Headers:s}=Je(),{Request:c,makeRequest:l}=Xe(),u=T(`zlib`),{bytesMatch:d,makePolicyContainer:f,clonePolicyContainer:p,requestBadPort:m,TAOCheck:h,appendRequestOriginHeader:g,responseLocationURL:_,requestCurrentURL:v,setRequestReferrerPolicyOnRedirect:y,tryUpgradeRequestToAPotentiallyTrustworthyURL:b,createOpaqueTimingInfo:x,appendFetchMetadata:S,corsCheck:C,crossOriginResourcePolicyCheck:w,determineRequestsReferrer:E,coarsenedSharedCurrentTime:D,createDeferredPromise:O,isBlobLike:k,sameOrigin:A,isCancelled:j,isAborted:N,isErrorLike:ee,fullyReadBody:F,readableStreamClose:I,isomorphicEncode:L,urlIsLocal:R,urlIsHttpHttpsScheme:z,urlHasHttpsScheme:B}=G(),{kState:V,kHeaders:te,kGuard:H,kRealm:ne}=oe(),re=T(`assert`),{safelyExtractBody:U}=de(),{redirectStatusSet:ie,nullBodyStatus:ae,safeMethodsSet:le,requestBodyHeader:ue,subresourceSet:fe,DOMException:pe}=W(),{kHeadersList:me}=M(),he=T(`events`),{Readable:ge,pipeline:_e}=T(`stream`),{addAbortListener:ve,isErrored:ye,isReadable:be,nodeMajor:xe,nodeMinor:Se}=P(),{dataURLProcessor:Ce,serializeAMimeType:we}=ce(),{TransformStream:Te}=T(`stream/web`),{getGlobalDispatcher:Ee}=Ke(),{webidl:De}=se(),{STATUS_CODES:Oe}=T(`http`),ke=[`GET`,`HEAD`],Ae,je=globalThis.ReadableStream;var Me=class extends he{constructor(e){super(),this.dispatcher=e,this.connection=null,this.dump=!1,this.state=`ongoing`,this.setMaxListeners(21)}terminate(e){this.state===`ongoing`&&(this.state=`terminated`,this.connection?.destroy(e),this.emit(`terminated`,e))}abort(e){this.state===`ongoing`&&(this.state=`aborted`,e||=new pe(`The operation was aborted.`,`AbortError`),this.serializedAbortReason=e,this.connection?.destroy(e),this.emit(`terminated`,e))}};function Ne(e,t={}){De.argumentLengthCheck(arguments,1,{header:`globalThis.fetch`});let r=O(),i;try{i=new c(e,t)}catch(e){return r.reject(e),r.promise}let a=i[V];if(i.signal.aborted)return Ie(r,a,null,i.signal.reason),r.promise;a.client.globalObject?.constructor?.name===`ServiceWorkerGlobalScope`&&(a.serviceWorkers=`none`);let o=null,s=!1,l=null;return ve(i.signal,()=>{s=!0,re(l!=null),l.abort(i.signal.reason),Ie(r,a,o,i.signal.reason)}),l=Le({request:a,processResponseEndOfBody:e=>Pe(e,`fetch`),processResponse:e=>{if(s)return Promise.resolve();if(e.aborted)return Ie(r,a,o,l.serializedAbortReason),Promise.resolve();if(e.type===`error`)return r.reject(Object.assign(TypeError(`fetch failed`),{cause:e.error})),Promise.resolve();o=new n,o[V]=e,o[ne]=null,o[te][me]=e.headersList,o[te][H]=`immutable`,o[te][ne]=null,r.resolve(o)},dispatcher:t.dispatcher??Ee()}),r.promise}function Pe(e,t=`other`){if(e.type===`error`&&e.aborted||!e.urlList?.length)return;let n=e.urlList[0],r=e.timingInfo,i=e.cacheState;z(n)&&r!==null&&(e.timingAllowPassed||(r=x({startTime:r.startTime}),i=``),r.endTime=D(),e.timingInfo=r,Fe(r,n,t,globalThis,i))}function Fe(e,t,n,r,i){(xe>18||xe===18&&Se>=2)&&performance.markResourceTiming(e,t.href,n,r,i)}function Ie(e,t,n,r){if(r||=new pe(`The operation was aborted.`,`AbortError`),e.reject(r),t.body!=null&&be(t.body?.stream)&&t.body.stream.cancel(r).catch(e=>{if(e.code!==`ERR_INVALID_STATE`)throw e}),n==null)return;let i=n[V];i.body!=null&&be(i.body?.stream)&&i.body.stream.cancel(r).catch(e=>{if(e.code!==`ERR_INVALID_STATE`)throw e})}function Le({request:e,processRequestBodyChunkLength:t,processRequestEndOfBody:n,processResponse:r,processResponseEndOfBody:i,processResponseConsumeBody:a,useParallelQueue:o=!1,dispatcher:s}){let c=null,l=!1;e.client!=null&&(c=e.client.globalObject,l=e.client.crossOriginIsolatedCapability);let u=x({startTime:D(l)}),d={controller:new Me(s),request:e,timingInfo:u,processRequestBodyChunkLength:t,processRequestEndOfBody:n,processResponse:r,processResponseConsumeBody:a,processResponseEndOfBody:i,taskDestination:c,crossOriginIsolatedCapability:l};return re(!e.body||e.body.stream),e.window===`client`&&(e.window=e.client?.globalObject?.constructor?.name===`Window`?e.client:`no-window`),e.origin===`client`&&(e.origin=e.client?.origin),e.policyContainer===`client`&&(e.client==null?e.policyContainer=f():e.policyContainer=p(e.client.policyContainer)),e.headersList.contains(`accept`)||e.headersList.append(`accept`,`*/*`),e.headersList.contains(`accept-language`)||e.headersList.append(`accept-language`,`*`),e.priority,fe.has(e.destination),Re(d).catch(e=>{d.controller.terminate(e)}),d.controller}async function Re(e,t=!1){let n=e.request,i=null;if(n.localURLsOnly&&!R(v(n))&&(i=r(`local URLs only`)),b(n),m(n)===`blocked`&&(i=r(`bad port`)),n.referrerPolicy===``&&(n.referrerPolicy=n.policyContainer.referrerPolicy),n.referrer!==`no-referrer`&&(n.referrer=E(n)),i===null&&(i=await(async()=>{let t=v(n);return A(t,n.url)&&n.responseTainting===`basic`||t.protocol===`data:`||n.mode===`navigate`||n.mode===`websocket`?(n.responseTainting=`basic`,await ze(e)):n.mode===`same-origin`?r(`request mode cannot be "same-origin"`):n.mode===`no-cors`?n.redirect===`follow`?(n.responseTainting=`opaque`,await ze(e)):r(`redirect mode cannot be "follow" for "no-cors" request`):z(v(n))?(n.responseTainting=`cors`,await Ve(e)):r(`URL scheme must be a HTTP(S) scheme`)})()),t)return i;i.status!==0&&!i.internalResponse&&(n.responseTainting,n.responseTainting===`basic`?i=a(i,`basic`):n.responseTainting===`cors`?i=a(i,`cors`):n.responseTainting===`opaque`?i=a(i,`opaque`):re(!1));let o=i.status===0?i:i.internalResponse;if(o.urlList.length===0&&o.urlList.push(...n.urlList),n.timingAllowFailed||(i.timingAllowPassed=!0),i.type===`opaque`&&o.status===206&&o.rangeRequested&&!n.headers.contains(`range`)&&(i=o=r()),i.status!==0&&(n.method===`HEAD`||n.method===`CONNECT`||ae.includes(o.status))&&(o.body=null,e.controller.dump=!0),n.integrity){let t=t=>Be(e,r(t));if(n.responseTainting===`opaque`||i.body==null){t(i.error);return}await F(i.body,r=>{if(!d(r,n.integrity)){t(`integrity mismatch`);return}i.body=U(r)[0],Be(e,i)},t)}else Be(e,i)}function ze(e){if(j(e)&&e.request.redirectCount===0)return Promise.resolve(i(e));let{request:t}=e,{protocol:n}=v(t);switch(n){case`about:`:return Promise.resolve(r(`about scheme is not supported`));case`blob:`:{Ae||=T(`buffer`).resolveObjectURL;let e=v(t);if(e.search.length!==0)return Promise.resolve(r(`NetworkError when attempting to fetch resource.`));let n=Ae(e.toString());if(t.method!==`GET`||!k(n))return Promise.resolve(r(`invalid method`));let i=U(n),a=i[0],s=L(`${a.length}`),c=i[1]??``,l=o({statusText:`OK`,headersList:[[`content-length`,{name:`Content-Length`,value:s}],[`content-type`,{name:`Content-Type`,value:c}]]});return l.body=a,Promise.resolve(l)}case`data:`:{let e=Ce(v(t));if(e===`failure`)return Promise.resolve(r(`failed to fetch the data URL`));let n=we(e.mimeType);return Promise.resolve(o({statusText:`OK`,headersList:[[`content-type`,{name:`Content-Type`,value:n}]],body:U(e.body)[0]}))}case`file:`:return Promise.resolve(r(`not implemented... yet...`));case`http:`:case`https:`:return Ve(e).catch(e=>r(e));default:return Promise.resolve(r(`unknown scheme`))}}function K(e,t){e.request.done=!0,e.processResponseDone!=null&&queueMicrotask(()=>e.processResponseDone(t))}function Be(e,t){t.type===`error`&&(t.urlList=[e.request.urlList[0]],t.timingInfo=x({startTime:e.timingInfo.startTime}));let n=()=>{e.request.done=!0,e.processResponseEndOfBody!=null&&queueMicrotask(()=>e.processResponseEndOfBody(t))};if(e.processResponse!=null&&queueMicrotask(()=>e.processResponse(t)),t.body==null)n();else{let e=new Te({start(){},transform:(e,t)=>{t.enqueue(e)},flush:n},{size(){return 1}},{size(){return 1}});t.body={stream:t.body.stream.pipeThrough(e)}}if(e.processResponseConsumeBody!=null){let n=n=>e.processResponseConsumeBody(t,n),r=n=>e.processResponseConsumeBody(t,n);if(t.body==null)queueMicrotask(()=>n(null));else return F(t.body,n,r);return Promise.resolve()}}async function Ve(e){let t=e.request,n=null,i=null,a=e.timingInfo;if(t.serviceWorkers,n===null){if(t.redirect===`follow`&&(t.serviceWorkers=`none`),i=n=await He(e),t.responseTainting===`cors`&&C(t,n)===`failure`)return r(`cors failure`);h(t,n)===`failure`&&(t.timingAllowFailed=!0)}return(t.responseTainting===`opaque`||n.type===`opaque`)&&w(t.origin,t.client,t.destination,i)===`blocked`?r(`blocked`):(ie.has(i.status)&&(t.redirect!==`manual`&&e.controller.connection.destroy(),t.redirect===`error`?n=r(`unexpected redirect`):t.redirect===`manual`?n=i:t.redirect===`follow`?n=await q(e,n):re(!1)),n.timingInfo=a,n)}function q(e,t){let n=e.request,i=t.internalResponse?t.internalResponse:t,a;try{if(a=_(i,v(n).hash),a==null)return t}catch(e){return Promise.resolve(r(e))}if(!z(a))return Promise.resolve(r(`URL scheme must be a HTTP(S) scheme`));if(n.redirectCount===20)return Promise.resolve(r(`redirect count exceeded`));if(n.redirectCount+=1,n.mode===`cors`&&(a.username||a.password)&&!A(n,a))return Promise.resolve(r(`cross origin not allowed for request mode "cors"`));if(n.responseTainting===`cors`&&(a.username||a.password))return Promise.resolve(r(`URL cannot contain credentials for request mode "cors"`));if(i.status!==303&&n.body!=null&&n.body.source==null)return Promise.resolve(r());if([301,302].includes(i.status)&&n.method===`POST`||i.status===303&&!ke.includes(n.method)){n.method=`GET`,n.body=null;for(let e of ue)n.headersList.delete(e)}A(v(n),a)||(n.headersList.delete(`authorization`),n.headersList.delete(`proxy-authorization`,!0),n.headersList.delete(`cookie`),n.headersList.delete(`host`)),n.body!=null&&(re(n.body.source!=null),n.body=U(n.body.source)[0]);let o=e.timingInfo;return o.redirectEndTime=o.postRedirectStartTime=D(e.crossOriginIsolatedCapability),o.redirectStartTime===0&&(o.redirectStartTime=o.startTime),n.urlList.push(a),y(n,i),Re(e,!0)}async function He(e,t=!1,n=!1){let a=e.request,o=null,s=null,c=null;a.window===`no-window`&&a.redirect===`error`?(o=e,s=a):(s=l(a),o={...e},o.request=s);let u=a.credentials===`include`||a.credentials===`same-origin`&&a.responseTainting===`basic`,d=s.body?s.body.length:null,f=null;if(s.body==null&&[`POST`,`PUT`].includes(s.method)&&(f=`0`),d!=null&&(f=L(`${d}`)),f!=null&&s.headersList.append(`content-length`,f),d!=null&&s.keepalive,s.referrer instanceof URL&&s.headersList.append(`referer`,L(s.referrer.href)),g(s),S(s),s.headersList.contains(`user-agent`)||s.headersList.append(`user-agent`,typeof esbuildDetection>`u`?`undici`:`node`),s.cache===`default`&&(s.headersList.contains(`if-modified-since`)||s.headersList.contains(`if-none-match`)||s.headersList.contains(`if-unmodified-since`)||s.headersList.contains(`if-match`)||s.headersList.contains(`if-range`))&&(s.cache=`no-store`),s.cache===`no-cache`&&!s.preventNoCacheCacheControlHeaderModification&&!s.headersList.contains(`cache-control`)&&s.headersList.append(`cache-control`,`max-age=0`),(s.cache===`no-store`||s.cache===`reload`)&&(s.headersList.contains(`pragma`)||s.headersList.append(`pragma`,`no-cache`),s.headersList.contains(`cache-control`)||s.headersList.append(`cache-control`,`no-cache`)),s.headersList.contains(`range`)&&s.headersList.append(`accept-encoding`,`identity`),s.headersList.contains(`accept-encoding`)||(B(v(s))?s.headersList.append(`accept-encoding`,`br, gzip, deflate`):s.headersList.append(`accept-encoding`,`gzip, deflate`)),s.headersList.delete(`host`),s.cache=`no-store`,s.mode!==`no-store`&&s.mode,c==null){if(s.mode===`only-if-cached`)return r(`only if cached`);let e=await Ue(o,u,n);!le.has(s.method)&&e.status>=200&&e.status,c??=e}if(c.urlList=[...s.urlList],s.headersList.contains(`range`)&&(c.rangeRequested=!0),c.requestIncludesCredentials=u,c.status===407)return a.window===`no-window`?r():j(e)?i(e):r(`proxy authentication required`);if(c.status===421&&!n&&(a.body==null||a.body.source!=null)){if(j(e))return i(e);e.controller.connection.destroy(),c=await He(e,t,!0)}return c}async function Ue(e,t=!1,n=!1){re(!e.controller.connection||e.controller.connection.destroyed),e.controller.connection={abort:null,destroyed:!1,destroy(e){this.destroyed||(this.destroyed=!0,this.abort?.(e??new pe(`The operation was aborted.`,`AbortError`)))}};let a=e.request,c=null,l=e.timingInfo;a.cache=`no-store`,a.mode;let d=null;if(a.body==null&&e.processRequestEndOfBody)queueMicrotask(()=>e.processRequestEndOfBody());else if(a.body!=null){let t=async function*(t){j(e)||(yield t,e.processRequestBodyChunkLength?.(t.byteLength))},n=()=>{j(e)||e.processRequestEndOfBody&&e.processRequestEndOfBody()},r=t=>{j(e)||(t.name===`AbortError`?e.controller.abort():e.controller.terminate(t))};d=(async function*(){try{for await(let e of a.body.stream)yield*t(e);n()}catch(e){r(e)}})()}try{let{body:t,status:n,statusText:r,headersList:i,socket:a}=await g({body:d});if(a)c=o({status:n,statusText:r,headersList:i,socket:a});else{let a=t[Symbol.asyncIterator]();e.controller.next=()=>a.next(),c=o({status:n,statusText:r,headersList:i})}}catch(t){return t.name===`AbortError`?(e.controller.connection.destroy(),i(e,t)):r(t)}let f=()=>{e.controller.resume()},p=t=>{e.controller.abort(t)};je||=T(`stream/web`).ReadableStream;let m=new je({async start(t){e.controller.controller=t},async pull(e){await f(e)},async cancel(e){await p(e)}},{highWaterMark:0,size(){return 1}});c.body={stream:m},e.controller.on(`terminated`,h),e.controller.resume=async()=>{for(;;){let t,n;try{let{done:n,value:r}=await e.controller.next();if(N(e))break;t=n?void 0:r}catch(r){e.controller.ended&&!l.encodedBodySize?t=void 0:(t=r,n=!0)}if(t===void 0){I(e.controller.controller),K(e,c);return}if(l.decodedBodySize+=t?.byteLength??0,n){e.controller.terminate(t);return}if(e.controller.controller.enqueue(new Uint8Array(t)),ye(m)){e.controller.terminate();return}if(!e.controller.controller.desiredSize)return}};function h(t){N(e)?(c.aborted=!0,be(m)&&e.controller.controller.error(e.controller.serializedAbortReason)):be(m)&&e.controller.controller.error(TypeError(`terminated`,{cause:ee(t)?t:void 0})),e.controller.connection.destroy()}return c;async function g({body:t}){let n=v(a),r=e.controller.dispatcher;return new Promise((i,o)=>r.dispatch({path:n.pathname+n.search,origin:n.origin,method:a.method,body:e.controller.dispatcher.isMockActive?a.body&&(a.body.source||a.body.stream):t,headers:a.headersList.entries,maxRedirections:0,upgrade:a.mode===`websocket`?`websocket`:void 0},{body:null,abort:null,onConnect(t){let{connection:n}=e.controller;n.destroyed?t(new pe(`The operation was aborted.`,`AbortError`)):(e.controller.on(`terminated`,t),this.abort=n.abort=t)},onHeaders(e,t,n,r){if(e<200)return;let o=[],c=``,l=new s;if(Array.isArray(t))for(let e=0;ee.trim()):n.toLowerCase()===`location`&&(c=r),l[me].append(n,r)}else{let e=Object.keys(t);for(let n of e){let e=t[n];n.toLowerCase()===`content-encoding`?o=e.toLowerCase().split(`,`).map(e=>e.trim()).reverse():n.toLowerCase()===`location`&&(c=e),l[me].append(n,e)}}this.body=new ge({read:n});let d=[],f=a.redirect===`follow`&&c&&ie.has(e);if(a.method!==`HEAD`&&a.method!==`CONNECT`&&!ae.includes(e)&&!f)for(let e of o)if(e===`x-gzip`||e===`gzip`)d.push(u.createGunzip({flush:u.constants.Z_SYNC_FLUSH,finishFlush:u.constants.Z_SYNC_FLUSH}));else if(e===`deflate`)d.push(u.createInflate());else if(e===`br`)d.push(u.createBrotliDecompress());else{d.length=0;break}return i({status:e,statusText:r,headersList:l[me],body:d.length?_e(this.body,...d,()=>{}):this.body.on(`error`,()=>{})}),!0},onData(t){if(e.controller.dump)return;let n=t;return l.encodedBodySize+=n.byteLength,this.body.push(n)},onComplete(){this.abort&&e.controller.off(`terminated`,this.abort),e.controller.ended=!0,this.body.push(null)},onError(t){this.abort&&e.controller.off(`terminated`,this.abort),this.body?.destroy(t),e.controller.terminate(t),o(t)},onUpgrade(e,t,n){if(e!==101)return;let r=new s;for(let e=0;e{t.exports={kState:Symbol(`FileReader state`),kResult:Symbol(`FileReader result`),kError:Symbol(`FileReader error`),kLastProgressEventFired:Symbol(`FileReader last progress event fired timestamp`),kEvents:Symbol(`FileReader events`),kAborted:Symbol(`FileReader aborted`)}})),$e=b(((e,t)=>{let{webidl:n}=se(),r=Symbol(`ProgressEvent state`);var i=class e extends Event{constructor(e,t={}){e=n.converters.DOMString(e),t=n.converters.ProgressEventInit(t??{}),super(e,t),this[r]={lengthComputable:t.lengthComputable,loaded:t.loaded,total:t.total}}get lengthComputable(){return n.brandCheck(this,e),this[r].lengthComputable}get loaded(){return n.brandCheck(this,e),this[r].loaded}get total(){return n.brandCheck(this,e),this[r].total}};n.converters.ProgressEventInit=n.dictionaryConverter([{key:`lengthComputable`,converter:n.converters.boolean,defaultValue:!1},{key:`loaded`,converter:n.converters[`unsigned long long`],defaultValue:0},{key:`total`,converter:n.converters[`unsigned long long`],defaultValue:0},{key:`bubbles`,converter:n.converters.boolean,defaultValue:!1},{key:`cancelable`,converter:n.converters.boolean,defaultValue:!1},{key:`composed`,converter:n.converters.boolean,defaultValue:!1}]),t.exports={ProgressEvent:i}})),et=b(((e,t)=>{function n(e){if(!e)return`failure`;switch(e.trim().toLowerCase()){case`unicode-1-1-utf-8`:case`unicode11utf8`:case`unicode20utf8`:case`utf-8`:case`utf8`:case`x-unicode20utf8`:return`UTF-8`;case`866`:case`cp866`:case`csibm866`:case`ibm866`:return`IBM866`;case`csisolatin2`:case`iso-8859-2`:case`iso-ir-101`:case`iso8859-2`:case`iso88592`:case`iso_8859-2`:case`iso_8859-2:1987`:case`l2`:case`latin2`:return`ISO-8859-2`;case`csisolatin3`:case`iso-8859-3`:case`iso-ir-109`:case`iso8859-3`:case`iso88593`:case`iso_8859-3`:case`iso_8859-3:1988`:case`l3`:case`latin3`:return`ISO-8859-3`;case`csisolatin4`:case`iso-8859-4`:case`iso-ir-110`:case`iso8859-4`:case`iso88594`:case`iso_8859-4`:case`iso_8859-4:1988`:case`l4`:case`latin4`:return`ISO-8859-4`;case`csisolatincyrillic`:case`cyrillic`:case`iso-8859-5`:case`iso-ir-144`:case`iso8859-5`:case`iso88595`:case`iso_8859-5`:case`iso_8859-5:1988`:return`ISO-8859-5`;case`arabic`:case`asmo-708`:case`csiso88596e`:case`csiso88596i`:case`csisolatinarabic`:case`ecma-114`:case`iso-8859-6`:case`iso-8859-6-e`:case`iso-8859-6-i`:case`iso-ir-127`:case`iso8859-6`:case`iso88596`:case`iso_8859-6`:case`iso_8859-6:1987`:return`ISO-8859-6`;case`csisolatingreek`:case`ecma-118`:case`elot_928`:case`greek`:case`greek8`:case`iso-8859-7`:case`iso-ir-126`:case`iso8859-7`:case`iso88597`:case`iso_8859-7`:case`iso_8859-7:1987`:case`sun_eu_greek`:return`ISO-8859-7`;case`csiso88598e`:case`csisolatinhebrew`:case`hebrew`:case`iso-8859-8`:case`iso-8859-8-e`:case`iso-ir-138`:case`iso8859-8`:case`iso88598`:case`iso_8859-8`:case`iso_8859-8:1988`:case`visual`:return`ISO-8859-8`;case`csiso88598i`:case`iso-8859-8-i`:case`logical`:return`ISO-8859-8-I`;case`csisolatin6`:case`iso-8859-10`:case`iso-ir-157`:case`iso8859-10`:case`iso885910`:case`l6`:case`latin6`:return`ISO-8859-10`;case`iso-8859-13`:case`iso8859-13`:case`iso885913`:return`ISO-8859-13`;case`iso-8859-14`:case`iso8859-14`:case`iso885914`:return`ISO-8859-14`;case`csisolatin9`:case`iso-8859-15`:case`iso8859-15`:case`iso885915`:case`iso_8859-15`:case`l9`:return`ISO-8859-15`;case`iso-8859-16`:return`ISO-8859-16`;case`cskoi8r`:case`koi`:case`koi8`:case`koi8-r`:case`koi8_r`:return`KOI8-R`;case`koi8-ru`:case`koi8-u`:return`KOI8-U`;case`csmacintosh`:case`mac`:case`macintosh`:case`x-mac-roman`:return`macintosh`;case`iso-8859-11`:case`iso8859-11`:case`iso885911`:case`tis-620`:case`windows-874`:return`windows-874`;case`cp1250`:case`windows-1250`:case`x-cp1250`:return`windows-1250`;case`cp1251`:case`windows-1251`:case`x-cp1251`:return`windows-1251`;case`ansi_x3.4-1968`:case`ascii`:case`cp1252`:case`cp819`:case`csisolatin1`:case`ibm819`:case`iso-8859-1`:case`iso-ir-100`:case`iso8859-1`:case`iso88591`:case`iso_8859-1`:case`iso_8859-1:1987`:case`l1`:case`latin1`:case`us-ascii`:case`windows-1252`:case`x-cp1252`:return`windows-1252`;case`cp1253`:case`windows-1253`:case`x-cp1253`:return`windows-1253`;case`cp1254`:case`csisolatin5`:case`iso-8859-9`:case`iso-ir-148`:case`iso8859-9`:case`iso88599`:case`iso_8859-9`:case`iso_8859-9:1989`:case`l5`:case`latin5`:case`windows-1254`:case`x-cp1254`:return`windows-1254`;case`cp1255`:case`windows-1255`:case`x-cp1255`:return`windows-1255`;case`cp1256`:case`windows-1256`:case`x-cp1256`:return`windows-1256`;case`cp1257`:case`windows-1257`:case`x-cp1257`:return`windows-1257`;case`cp1258`:case`windows-1258`:case`x-cp1258`:return`windows-1258`;case`x-mac-cyrillic`:case`x-mac-ukrainian`:return`x-mac-cyrillic`;case`chinese`:case`csgb2312`:case`csiso58gb231280`:case`gb2312`:case`gb_2312`:case`gb_2312-80`:case`gbk`:case`iso-ir-58`:case`x-gbk`:return`GBK`;case`gb18030`:return`gb18030`;case`big5`:case`big5-hkscs`:case`cn-big5`:case`csbig5`:case`x-x-big5`:return`Big5`;case`cseucpkdfmtjapanese`:case`euc-jp`:case`x-euc-jp`:return`EUC-JP`;case`csiso2022jp`:case`iso-2022-jp`:return`ISO-2022-JP`;case`csshiftjis`:case`ms932`:case`ms_kanji`:case`shift-jis`:case`shift_jis`:case`sjis`:case`windows-31j`:case`x-sjis`:return`Shift_JIS`;case`cseuckr`:case`csksc56011987`:case`euc-kr`:case`iso-ir-149`:case`korean`:case`ks_c_5601-1987`:case`ks_c_5601-1989`:case`ksc5601`:case`ksc_5601`:case`windows-949`:return`EUC-KR`;case`csiso2022kr`:case`hz-gb-2312`:case`iso-2022-cn`:case`iso-2022-cn-ext`:case`iso-2022-kr`:case`replacement`:return`replacement`;case`unicodefffe`:case`utf-16be`:return`UTF-16BE`;case`csunicode`:case`iso-10646-ucs-2`:case`ucs-2`:case`unicode`:case`unicodefeff`:case`utf-16`:case`utf-16le`:return`UTF-16LE`;case`x-user-defined`:return`x-user-defined`;default:return`failure`}}t.exports={getEncoding:n}})),tt=b(((e,t)=>{let{kState:n,kError:r,kResult:i,kAborted:a,kLastProgressEventFired:o}=Qe(),{ProgressEvent:s}=$e(),{getEncoding:c}=et(),{DOMException:l}=W(),{serializeAMimeType:u,parseMIMEType:d}=ce(),{types:f}=T(`util`),{StringDecoder:p}=T(`string_decoder`),{btoa:m}=T(`buffer`),h={enumerable:!0,writable:!1,configurable:!1};function g(e,t,s,c){if(e[n]===`loading`)throw new l(`Invalid state`,`InvalidStateError`);e[n]=`loading`,e[i]=null,e[r]=null;let u=t.stream().getReader(),d=[],p=u.read(),m=!0;(async()=>{for(;!e[a];)try{let{done:l,value:h}=await p;if(m&&!e[a]&&queueMicrotask(()=>{_(`loadstart`,e)}),m=!1,!l&&f.isUint8Array(h))d.push(h),(e[o]===void 0||Date.now()-e[o]>=50)&&!e[a]&&(e[o]=Date.now(),queueMicrotask(()=>{_(`progress`,e)})),p=u.read();else if(l){queueMicrotask(()=>{e[n]=`done`;try{let n=v(d,s,t.type,c);if(e[a])return;e[i]=n,_(`load`,e)}catch(t){e[r]=t,_(`error`,e)}e[n]!==`loading`&&_(`loadend`,e)});break}}catch(t){if(e[a])return;queueMicrotask(()=>{e[n]=`done`,e[r]=t,_(`error`,e),e[n]!==`loading`&&_(`loadend`,e)});break}})()}function _(e,t){let n=new s(e,{bubbles:!1,cancelable:!1});t.dispatchEvent(n)}function v(e,t,n,r){switch(t){case`DataURL`:{let t=`data:`,r=d(n||`application/octet-stream`);r!==`failure`&&(t+=u(r)),t+=`;base64,`;let i=new p(`latin1`);for(let n of e)t+=m(i.write(n));return t+=m(i.end()),t}case`Text`:{let t=`failure`;if(r&&(t=c(r)),t===`failure`&&n){let e=d(n);e!==`failure`&&(t=c(e.parameters.get(`charset`)))}return t===`failure`&&(t=`UTF-8`),y(e,t)}case`ArrayBuffer`:return x(e).buffer;case`BinaryString`:{let t=``,n=new p(`latin1`);for(let r of e)t+=n.write(r);return t+=n.end(),t}}}function y(e,t){let n=x(e),r=b(n),i=0;r!==null&&(t=r,i=r===`UTF-8`?3:2);let a=n.slice(i);return new TextDecoder(t).decode(a)}function b(e){let[t,n,r]=e;return t===239&&n===187&&r===191?`UTF-8`:t===254&&n===255?`UTF-16BE`:t===255&&n===254?`UTF-16LE`:null}function x(e){let t=e.reduce((e,t)=>e+t.byteLength,0),n=0;return e.reduce((e,t)=>(e.set(t,n),n+=t.byteLength,e),new Uint8Array(t))}t.exports={staticPropertyDescriptors:h,readOperation:g,fireAProgressEvent:_}})),nt=b(((e,t)=>{let{staticPropertyDescriptors:n,readOperation:r,fireAProgressEvent:i}=tt(),{kState:a,kError:o,kResult:s,kEvents:c,kAborted:l}=Qe(),{webidl:u}=se(),{kEnumerableProperty:d}=P();var f=class e extends EventTarget{constructor(){super(),this[a]=`empty`,this[s]=null,this[o]=null,this[c]={loadend:null,error:null,abort:null,load:null,progress:null,loadstart:null}}readAsArrayBuffer(t){u.brandCheck(this,e),u.argumentLengthCheck(arguments,1,{header:`FileReader.readAsArrayBuffer`}),t=u.converters.Blob(t,{strict:!1}),r(this,t,`ArrayBuffer`)}readAsBinaryString(t){u.brandCheck(this,e),u.argumentLengthCheck(arguments,1,{header:`FileReader.readAsBinaryString`}),t=u.converters.Blob(t,{strict:!1}),r(this,t,`BinaryString`)}readAsText(t,n=void 0){u.brandCheck(this,e),u.argumentLengthCheck(arguments,1,{header:`FileReader.readAsText`}),t=u.converters.Blob(t,{strict:!1}),n!==void 0&&(n=u.converters.DOMString(n)),r(this,t,`Text`,n)}readAsDataURL(t){u.brandCheck(this,e),u.argumentLengthCheck(arguments,1,{header:`FileReader.readAsDataURL`}),t=u.converters.Blob(t,{strict:!1}),r(this,t,`DataURL`)}abort(){if(this[a]===`empty`||this[a]===`done`){this[s]=null;return}this[a]===`loading`&&(this[a]=`done`,this[s]=null),this[l]=!0,i(`abort`,this),this[a]!==`loading`&&i(`loadend`,this)}get readyState(){switch(u.brandCheck(this,e),this[a]){case`empty`:return this.EMPTY;case`loading`:return this.LOADING;case`done`:return this.DONE}}get result(){return u.brandCheck(this,e),this[s]}get error(){return u.brandCheck(this,e),this[o]}get onloadend(){return u.brandCheck(this,e),this[c].loadend}set onloadend(t){u.brandCheck(this,e),this[c].loadend&&this.removeEventListener(`loadend`,this[c].loadend),typeof t==`function`?(this[c].loadend=t,this.addEventListener(`loadend`,t)):this[c].loadend=null}get onerror(){return u.brandCheck(this,e),this[c].error}set onerror(t){u.brandCheck(this,e),this[c].error&&this.removeEventListener(`error`,this[c].error),typeof t==`function`?(this[c].error=t,this.addEventListener(`error`,t)):this[c].error=null}get onloadstart(){return u.brandCheck(this,e),this[c].loadstart}set onloadstart(t){u.brandCheck(this,e),this[c].loadstart&&this.removeEventListener(`loadstart`,this[c].loadstart),typeof t==`function`?(this[c].loadstart=t,this.addEventListener(`loadstart`,t)):this[c].loadstart=null}get onprogress(){return u.brandCheck(this,e),this[c].progress}set onprogress(t){u.brandCheck(this,e),this[c].progress&&this.removeEventListener(`progress`,this[c].progress),typeof t==`function`?(this[c].progress=t,this.addEventListener(`progress`,t)):this[c].progress=null}get onload(){return u.brandCheck(this,e),this[c].load}set onload(t){u.brandCheck(this,e),this[c].load&&this.removeEventListener(`load`,this[c].load),typeof t==`function`?(this[c].load=t,this.addEventListener(`load`,t)):this[c].load=null}get onabort(){return u.brandCheck(this,e),this[c].abort}set onabort(t){u.brandCheck(this,e),this[c].abort&&this.removeEventListener(`abort`,this[c].abort),typeof t==`function`?(this[c].abort=t,this.addEventListener(`abort`,t)):this[c].abort=null}};f.EMPTY=f.prototype.EMPTY=0,f.LOADING=f.prototype.LOADING=1,f.DONE=f.prototype.DONE=2,Object.defineProperties(f.prototype,{EMPTY:n,LOADING:n,DONE:n,readAsArrayBuffer:d,readAsBinaryString:d,readAsText:d,readAsDataURL:d,abort:d,readyState:d,result:d,error:d,onloadstart:d,onprogress:d,onload:d,onabort:d,onerror:d,onloadend:d,[Symbol.toStringTag]:{value:`FileReader`,writable:!1,enumerable:!1,configurable:!0}}),Object.defineProperties(f,{EMPTY:n,LOADING:n,DONE:n}),t.exports={FileReader:f}}));function rt(e,t){if(t.has(e))throw TypeError(`Cannot initialize the same private elements twice on an object`)}var it=y((()=>{}));function at(e,t,n){rt(e,t),t.set(e,n)}var ot=y((()=>{it()}));function st(e,t,n){if(typeof e==`function`?e===t:e.has(t))return arguments.length<3?t:n;throw TypeError(`Private element is not present on this object`)}var ct=y((()=>{}));function X(e,t){return e.get(st(e,t))}var lt=y((()=>{ct()})),ut=b(((e,t)=>{t.exports={kConstruct:M().kConstruct}}));function dt(e,t){rt(e,t),t.add(e)}var ft=y((()=>{it()}));function pt(e,t,n){return e.set(st(e,t),n),n}var mt=y((()=>{ct()})),ht=b(((e,t)=>{let n=T(`assert`),{URLSerializer:r}=ce(),{isValidHeaderName:i}=G();function a(e,t,n=!1){return r(e,n)===r(t,n)}function o(e){n(e!==null);let t=[];for(let n of e.split(`,`)){if(n=n.trim(),n.length){if(!i(n))continue}else continue;t.push(n)}return t}t.exports={urlEquals:a,fieldValues:o}})),gt=b(((e,t)=>{ft(),ot(),mt(),lt(),ct();let{kConstruct:n}=ut(),{urlEquals:r,fieldValues:i}=ht(),{kEnumerableProperty:a,isDisturbed:o}=P(),{kHeadersList:s}=M(),{webidl:c}=se(),{Response:l,cloneResponse:u}=Ye(),{Request:d}=Xe(),{kState:f,kHeaders:p,kGuard:m,kRealm:h}=oe(),{fetching:g}=Ze(),{urlIsHttpHttpsScheme:_,createDeferredPromise:v,readAllBytes:y}=G(),b=T(`assert`),{getGlobalDispatcher:x}=Ke();var S=new WeakMap,C=new WeakSet,w=class e{constructor(){dt(this,C),at(this,S,void 0),arguments[0]!==n&&c.illegalConstructor(),pt(S,this,arguments[1])}async match(t,n={}){c.brandCheck(this,e),c.argumentLengthCheck(arguments,1,{header:`Cache.match`}),t=c.converters.RequestInfo(t),n=c.converters.CacheQueryOptions(n);let r=await this.matchAll(t,n);if(r.length!==0)return r[0]}async matchAll(t=void 0,n={}){c.brandCheck(this,e),t!==void 0&&(t=c.converters.RequestInfo(t)),n=c.converters.CacheQueryOptions(n);let r=null;if(t!==void 0)if(t instanceof d){if(r=t[f],r.method!==`GET`&&!n.ignoreMethod)return[]}else typeof t==`string`&&(r=new d(t)[f]);let i=[];if(t===void 0)for(let e of X(S,this))i.push(e[1]);else{let e=st(C,this,D).call(this,r,n);for(let t of e)i.push(t[1])}let a=[];for(let e of i){let t=new l(e.body?.source??null),n=t[f].body;t[f]=e,t[f].body=n,t[p][s]=e.headersList,t[p][m]=`immutable`,a.push(t)}return Object.freeze(a)}async add(t){c.brandCheck(this,e),c.argumentLengthCheck(arguments,1,{header:`Cache.add`}),t=c.converters.RequestInfo(t);let n=[t];return await this.addAll(n)}async addAll(t){c.brandCheck(this,e),c.argumentLengthCheck(arguments,1,{header:`Cache.addAll`}),t=c.converters[`sequence`](t);let n=[],r=[];for(let e of t){if(typeof e==`string`)continue;let t=e[f];if(!_(t.url)||t.method!==`GET`)throw c.errors.exception({header:`Cache.addAll`,message:`Expected http/s scheme when method is not GET.`})}let a=[];for(let e of t){let t=new d(e)[f];if(!_(t.url))throw c.errors.exception({header:`Cache.addAll`,message:`Expected http/s scheme.`});t.initiator=`fetch`,t.destination=`subresource`,r.push(t);let o=v();a.push(g({request:t,dispatcher:x(),processResponse(e){if(e.type===`error`||e.status===206||e.status<200||e.status>299)o.reject(c.errors.exception({header:`Cache.addAll`,message:`Received an invalid status code or the request failed.`}));else if(e.headersList.contains(`vary`)){let t=i(e.headersList.get(`vary`));for(let e of t)if(e===`*`){o.reject(c.errors.exception({header:`Cache.addAll`,message:`invalid vary field value`}));for(let e of a)e.abort();return}}},processResponseEndOfBody(e){if(e.aborted){o.reject(new DOMException(`aborted`,`AbortError`));return}o.resolve(e)}})),n.push(o.promise)}let o=await Promise.all(n),s=[],l=0;for(let e of o){let t={type:`put`,request:r[l],response:e};s.push(t),l++}let u=v(),p=null;try{st(C,this,E).call(this,s)}catch(e){p=e}return queueMicrotask(()=>{p===null?u.resolve(void 0):u.reject(p)}),u.promise}async put(t,n){c.brandCheck(this,e),c.argumentLengthCheck(arguments,2,{header:`Cache.put`}),t=c.converters.RequestInfo(t),n=c.converters.Response(n);let r=null;if(r=t instanceof d?t[f]:new d(t)[f],!_(r.url)||r.method!==`GET`)throw c.errors.exception({header:`Cache.put`,message:`Expected an http/s scheme when method is not GET`});let a=n[f];if(a.status===206)throw c.errors.exception({header:`Cache.put`,message:`Got 206 status`});if(a.headersList.contains(`vary`)){let e=i(a.headersList.get(`vary`));for(let t of e)if(t===`*`)throw c.errors.exception({header:`Cache.put`,message:`Got * vary field value`})}if(a.body&&(o(a.body.stream)||a.body.stream.locked))throw c.errors.exception({header:`Cache.put`,message:`Response body is locked or disturbed`});let s=u(a),l=v();a.body==null?l.resolve(void 0):y(a.body.stream.getReader()).then(l.resolve,l.reject);let p=[],m={type:`put`,request:r,response:s};p.push(m);let h=await l.promise;s.body!=null&&(s.body.source=h);let g=v(),b=null;try{st(C,this,E).call(this,p)}catch(e){b=e}return queueMicrotask(()=>{b===null?g.resolve():g.reject(b)}),g.promise}async delete(t,n={}){c.brandCheck(this,e),c.argumentLengthCheck(arguments,1,{header:`Cache.delete`}),t=c.converters.RequestInfo(t),n=c.converters.CacheQueryOptions(n);let r=null;if(t instanceof d){if(r=t[f],r.method!==`GET`&&!n.ignoreMethod)return!1}else b(typeof t==`string`),r=new d(t)[f];let i=[],a={type:`delete`,request:r,options:n};i.push(a);let o=v(),s=null,l;try{l=st(C,this,E).call(this,i)}catch(e){s=e}return queueMicrotask(()=>{s===null?o.resolve(!!l?.length):o.reject(s)}),o.promise}async keys(t=void 0,n={}){c.brandCheck(this,e),t!==void 0&&(t=c.converters.RequestInfo(t)),n=c.converters.CacheQueryOptions(n);let r=null;if(t!==void 0)if(t instanceof d){if(r=t[f],r.method!==`GET`&&!n.ignoreMethod)return[]}else typeof t==`string`&&(r=new d(t)[f]);let i=v(),a=[];if(t===void 0)for(let e of X(S,this))a.push(e[0]);else{let e=st(C,this,D).call(this,r,n);for(let t of e)a.push(t[0])}return queueMicrotask(()=>{let e=[];for(let t of a){let n=new d(`https://a`);n[f]=t,n[p][s]=t.headersList,n[p][m]=`immutable`,n[h]=t.client,e.push(n)}i.resolve(Object.freeze(e))}),i.promise}};function E(e){let t=X(S,this),n=[...t],r=[],i=[];try{for(let n of e){if(n.type!==`delete`&&n.type!==`put`)throw c.errors.exception({header:`Cache.#batchCacheOperations`,message:`operation type does not match "delete" or "put"`});if(n.type===`delete`&&n.response!=null)throw c.errors.exception({header:`Cache.#batchCacheOperations`,message:`delete operation should not have an associated response`});if(st(C,this,D).call(this,n.request,n.options,r).length)throw new DOMException(`???`,`InvalidStateError`);let e;if(n.type===`delete`){if(e=st(C,this,D).call(this,n.request,n.options),e.length===0)return[];for(let n of e){let e=t.indexOf(n);b(e!==-1),t.splice(e,1)}}else if(n.type===`put`){if(n.response==null)throw c.errors.exception({header:`Cache.#batchCacheOperations`,message:`put operation should have an associated response`});let i=n.request;if(!_(i.url))throw c.errors.exception({header:`Cache.#batchCacheOperations`,message:`expected http or https scheme`});if(i.method!==`GET`)throw c.errors.exception({header:`Cache.#batchCacheOperations`,message:`not get method`});if(n.options!=null)throw c.errors.exception({header:`Cache.#batchCacheOperations`,message:`options must not be defined`});e=st(C,this,D).call(this,n.request);for(let n of e){let e=t.indexOf(n);b(e!==-1),t.splice(e,1)}t.push([n.request,n.response]),r.push([n.request,n.response])}i.push([n.request,n.response])}return i}catch(e){throw X(S,this).length=0,pt(S,this,n),e}}function D(e,t,n){let r=[],i=n??X(S,this);for(let n of i){let[i,a]=n;st(C,this,O).call(this,e,i,a,t)&&r.push(n)}return r}function O(e,t,n=null,a){let o=new URL(e.url),s=new URL(t.url);if(a?.ignoreSearch&&(s.search=``,o.search=``),!r(o,s,!0))return!1;if(n==null||a?.ignoreVary||!n.headersList.contains(`vary`))return!0;let c=i(n.headersList.get(`vary`));for(let n of c)if(n===`*`||t.headersList.get(n)!==e.headersList.get(n))return!1;return!0}Object.defineProperties(w.prototype,{[Symbol.toStringTag]:{value:`Cache`,configurable:!0},match:a,matchAll:a,add:a,addAll:a,put:a,delete:a,keys:a});let k=[{key:`ignoreSearch`,converter:c.converters.boolean,defaultValue:!1},{key:`ignoreMethod`,converter:c.converters.boolean,defaultValue:!1},{key:`ignoreVary`,converter:c.converters.boolean,defaultValue:!1}];c.converters.CacheQueryOptions=c.dictionaryConverter(k),c.converters.MultiCacheQueryOptions=c.dictionaryConverter([...k,{key:`cacheName`,converter:c.converters.DOMString}]),c.converters.Response=c.interfaceConverter(l),c.converters[`sequence`]=c.sequenceConverter(c.converters.RequestInfo),t.exports={Cache:w}})),_t=b(((e,t)=>{ot(),lt();let{kConstruct:n}=ut(),{Cache:r}=gt(),{webidl:i}=se(),{kEnumerableProperty:a}=P();var o=new WeakMap,s=class e{constructor(){at(this,o,new Map),arguments[0]!==n&&i.illegalConstructor()}async match(t,a={}){if(i.brandCheck(this,e),i.argumentLengthCheck(arguments,1,{header:`CacheStorage.match`}),t=i.converters.RequestInfo(t),a=i.converters.MultiCacheQueryOptions(a),a.cacheName!=null){if(X(o,this).has(a.cacheName))return await new r(n,X(o,this).get(a.cacheName)).match(t,a)}else for(let e of X(o,this).values()){let i=await new r(n,e).match(t,a);if(i!==void 0)return i}}async has(t){return i.brandCheck(this,e),i.argumentLengthCheck(arguments,1,{header:`CacheStorage.has`}),t=i.converters.DOMString(t),X(o,this).has(t)}async open(t){if(i.brandCheck(this,e),i.argumentLengthCheck(arguments,1,{header:`CacheStorage.open`}),t=i.converters.DOMString(t),X(o,this).has(t))return new r(n,X(o,this).get(t));let a=[];return X(o,this).set(t,a),new r(n,a)}async delete(t){return i.brandCheck(this,e),i.argumentLengthCheck(arguments,1,{header:`CacheStorage.delete`}),t=i.converters.DOMString(t),X(o,this).delete(t)}async keys(){return i.brandCheck(this,e),[...X(o,this).keys()]}};Object.defineProperties(s.prototype,{[Symbol.toStringTag]:{value:`CacheStorage`,configurable:!0},match:a,has:a,open:a,delete:a,keys:a}),t.exports={CacheStorage:s}})),vt=b(((e,t)=>{t.exports={maxAttributeValueSize:1024,maxNameValuePairSize:4096}})),yt=b(((e,t)=>{function n(e){if(e.length===0)return!1;for(let t of e){let e=t.charCodeAt(0);if(e>=0||e<=8||e>=10||e<=31||e===127)return!1}}function r(e){for(let t of e){let e=t.charCodeAt(0);if(e<=32||e>127||t===`(`||t===`)`||t===`>`||t===`<`||t===`@`||t===`,`||t===`;`||t===`:`||t===`\\`||t===`"`||t===`/`||t===`[`||t===`]`||t===`?`||t===`=`||t===`{`||t===`}`)throw Error(`Invalid cookie name`)}}function i(e){for(let t of e){let e=t.charCodeAt(0);if(e<33||e===34||e===44||e===59||e===92||e>126)throw Error(`Invalid header value`)}}function a(e){for(let t of e)if(t.charCodeAt(0)<33||t===`;`)throw Error(`Invalid cookie path`)}function o(e){if(e.startsWith(`-`)||e.endsWith(`.`)||e.endsWith(`-`))throw Error(`Invalid cookie domain`)}function s(e){return typeof e==`number`&&(e=new Date(e)),`${[`Sun`,`Mon`,`Tue`,`Wed`,`Thu`,`Fri`,`Sat`][e.getUTCDay()]}, ${e.getUTCDate().toString().padStart(2,`0`)} ${[`Jan`,`Feb`,`Mar`,`Apr`,`May`,`Jun`,`Jul`,`Aug`,`Sep`,`Oct`,`Nov`,`Dec`][e.getUTCMonth()]} ${e.getUTCFullYear()} ${e.getUTCHours().toString().padStart(2,`0`)}:${e.getUTCMinutes().toString().padStart(2,`0`)}:${e.getUTCSeconds().toString().padStart(2,`0`)} GMT`}function c(e){if(e<0)throw Error(`Invalid cookie max-age`)}function l(e){if(e.name.length===0)return null;r(e.name),i(e.value);let t=[`${e.name}=${e.value}`];e.name.startsWith(`__Secure-`)&&(e.secure=!0),e.name.startsWith(`__Host-`)&&(e.secure=!0,e.domain=null,e.path=`/`),e.secure&&t.push(`Secure`),e.httpOnly&&t.push(`HttpOnly`),typeof e.maxAge==`number`&&(c(e.maxAge),t.push(`Max-Age=${e.maxAge}`)),e.domain&&(o(e.domain),t.push(`Domain=${e.domain}`)),e.path&&(a(e.path),t.push(`Path=${e.path}`)),e.expires&&e.expires.toString()!==`Invalid Date`&&t.push(`Expires=${s(e.expires)}`),e.sameSite&&t.push(`SameSite=${e.sameSite}`);for(let n of e.unparsed){if(!n.includes(`=`))throw Error(`Invalid unparsed`);let[e,...r]=n.split(`=`);t.push(`${e.trim()}=${r.join(`=`)}`)}return t.join(`; `)}t.exports={isCTLExcludingHtab:n,validateCookieName:r,validateCookiePath:a,validateCookieValue:i,toIMFDate:s,stringify:l}})),bt=b(((e,t)=>{let{maxNameValuePairSize:n,maxAttributeValueSize:r}=vt(),{isCTLExcludingHtab:i}=yt(),{collectASequenceOfCodePointsFast:a}=ce(),o=T(`assert`);function s(e){if(i(e))return null;let t=``,r=``,o=``,s=``;if(e.includes(`;`)){let n={position:0};t=a(`;`,e,n),r=e.slice(n.position)}else t=e;if(!t.includes(`=`))s=t;else{let e={position:0};o=a(`=`,t,e),s=t.slice(e.position+1)}return o=o.trim(),s=s.trim(),o.length+s.length>n?null:{name:o,value:s,...c(r)}}function c(e,t={}){if(e.length===0)return t;o(e[0]===`;`),e=e.slice(1);let n=``;e.includes(`;`)?(n=a(`;`,e,{position:0}),e=e.slice(n.length)):(n=e,e=``);let i=``,s=``;if(n.includes(`=`)){let e={position:0};i=a(`=`,n,e),s=n.slice(e.position+1)}else i=n;if(i=i.trim(),s=s.trim(),s.length>r)return c(e,t);let l=i.toLowerCase();if(l===`expires`)t.expires=new Date(s);else if(l===`max-age`){let n=s.charCodeAt(0);if((n<48||n>57)&&s[0]!==`-`||!/^\d+$/.test(s))return c(e,t);t.maxAge=Number(s)}else if(l===`domain`){let e=s;e[0]===`.`&&(e=e.slice(1)),e=e.toLowerCase(),t.domain=e}else if(l===`path`){let e=``;e=s.length===0||s[0]!==`/`?`/`:s,t.path=e}else if(l===`secure`)t.secure=!0;else if(l===`httponly`)t.httpOnly=!0;else if(l===`samesite`){let e=`Default`,n=s.toLowerCase();n.includes(`none`)&&(e=`None`),n.includes(`strict`)&&(e=`Strict`),n.includes(`lax`)&&(e=`Lax`),t.sameSite=e}else t.unparsed??=[],t.unparsed.push(`${i}=${s}`);return c(e,t)}t.exports={parseSetCookie:s,parseUnparsedAttributes:c}})),xt=b(((e,t)=>{let{parseSetCookie:n}=bt(),{stringify:r}=yt(),{webidl:i}=se(),{Headers:a}=Je();function o(e){i.argumentLengthCheck(arguments,1,{header:`getCookies`}),i.brandCheck(e,a,{strict:!1});let t=e.get(`cookie`),n={};if(!t)return n;for(let e of t.split(`;`)){let[t,...r]=e.split(`=`);n[t.trim()]=r.join(`=`)}return n}function s(e,t,n){i.argumentLengthCheck(arguments,2,{header:`deleteCookie`}),i.brandCheck(e,a,{strict:!1}),t=i.converters.DOMString(t),n=i.converters.DeleteCookieAttributes(n),l(e,{name:t,value:``,expires:new Date(0),...n})}function c(e){i.argumentLengthCheck(arguments,1,{header:`getSetCookies`}),i.brandCheck(e,a,{strict:!1});let t=e.getSetCookie();return t?t.map(e=>n(e)):[]}function l(e,t){i.argumentLengthCheck(arguments,2,{header:`setCookie`}),i.brandCheck(e,a,{strict:!1}),t=i.converters.Cookie(t),r(t)&&e.append(`Set-Cookie`,r(t))}i.converters.DeleteCookieAttributes=i.dictionaryConverter([{converter:i.nullableConverter(i.converters.DOMString),key:`path`,defaultValue:null},{converter:i.nullableConverter(i.converters.DOMString),key:`domain`,defaultValue:null}]),i.converters.Cookie=i.dictionaryConverter([{converter:i.converters.DOMString,key:`name`},{converter:i.converters.DOMString,key:`value`},{converter:i.nullableConverter(e=>typeof e==`number`?i.converters[`unsigned long long`](e):new Date(e)),key:`expires`,defaultValue:null},{converter:i.nullableConverter(i.converters[`long long`]),key:`maxAge`,defaultValue:null},{converter:i.nullableConverter(i.converters.DOMString),key:`domain`,defaultValue:null},{converter:i.nullableConverter(i.converters.DOMString),key:`path`,defaultValue:null},{converter:i.nullableConverter(i.converters.boolean),key:`secure`,defaultValue:null},{converter:i.nullableConverter(i.converters.boolean),key:`httpOnly`,defaultValue:null},{converter:i.converters.USVString,key:`sameSite`,allowedValues:[`Strict`,`Lax`,`None`]},{converter:i.sequenceConverter(i.converters.DOMString),key:`unparsed`,defaultValue:[]}]),t.exports={getCookies:o,deleteCookie:s,getSetCookies:c,setCookie:l}})),St=b(((e,t)=>{t.exports={uid:`258EAFA5-E914-47DA-95CA-C5AB0DC85B11`,staticPropertyDescriptors:{enumerable:!0,writable:!1,configurable:!1},states:{CONNECTING:0,OPEN:1,CLOSING:2,CLOSED:3},opcodes:{CONTINUATION:0,TEXT:1,BINARY:2,CLOSE:8,PING:9,PONG:10},maxUnsigned16Bit:2**16-1,parserStates:{INFO:0,PAYLOADLENGTH_16:2,PAYLOADLENGTH_64:3,READ_DATA:4},emptyBuffer:Buffer.allocUnsafe(0)}})),Ct=b(((e,t)=>{t.exports={kWebSocketURL:Symbol(`url`),kReadyState:Symbol(`ready state`),kController:Symbol(`controller`),kResponse:Symbol(`response`),kBinaryType:Symbol(`binary type`),kSentClose:Symbol(`sent close`),kReceivedClose:Symbol(`received close`),kByteParser:Symbol(`byte parser`)}})),wt=b(((e,t)=>{ot(),mt(),lt();let{webidl:n}=se(),{kEnumerableProperty:r}=P(),{MessagePort:i}=T(`worker_threads`);var a=new WeakMap,o=class e extends Event{constructor(e,t={}){n.argumentLengthCheck(arguments,1,{header:`MessageEvent constructor`}),e=n.converters.DOMString(e),t=n.converters.MessageEventInit(t),super(e,t),at(this,a,void 0),pt(a,this,t)}get data(){return n.brandCheck(this,e),X(a,this).data}get origin(){return n.brandCheck(this,e),X(a,this).origin}get lastEventId(){return n.brandCheck(this,e),X(a,this).lastEventId}get source(){return n.brandCheck(this,e),X(a,this).source}get ports(){return n.brandCheck(this,e),Object.isFrozen(X(a,this).ports)||Object.freeze(X(a,this).ports),X(a,this).ports}initMessageEvent(t,r=!1,i=!1,a=null,o=``,s=``,c=null,l=[]){return n.brandCheck(this,e),n.argumentLengthCheck(arguments,1,{header:`MessageEvent.initMessageEvent`}),new e(t,{bubbles:r,cancelable:i,data:a,origin:o,lastEventId:s,source:c,ports:l})}},s=new WeakMap,c=class e extends Event{constructor(e,t={}){n.argumentLengthCheck(arguments,1,{header:`CloseEvent constructor`}),e=n.converters.DOMString(e),t=n.converters.CloseEventInit(t),super(e,t),at(this,s,void 0),pt(s,this,t)}get wasClean(){return n.brandCheck(this,e),X(s,this).wasClean}get code(){return n.brandCheck(this,e),X(s,this).code}get reason(){return n.brandCheck(this,e),X(s,this).reason}},l=new WeakMap,u=class e extends Event{constructor(e,t){n.argumentLengthCheck(arguments,1,{header:`ErrorEvent constructor`}),super(e,t),at(this,l,void 0),e=n.converters.DOMString(e),t=n.converters.ErrorEventInit(t??{}),pt(l,this,t)}get message(){return n.brandCheck(this,e),X(l,this).message}get filename(){return n.brandCheck(this,e),X(l,this).filename}get lineno(){return n.brandCheck(this,e),X(l,this).lineno}get colno(){return n.brandCheck(this,e),X(l,this).colno}get error(){return n.brandCheck(this,e),X(l,this).error}};Object.defineProperties(o.prototype,{[Symbol.toStringTag]:{value:`MessageEvent`,configurable:!0},data:r,origin:r,lastEventId:r,source:r,ports:r,initMessageEvent:r}),Object.defineProperties(c.prototype,{[Symbol.toStringTag]:{value:`CloseEvent`,configurable:!0},reason:r,code:r,wasClean:r}),Object.defineProperties(u.prototype,{[Symbol.toStringTag]:{value:`ErrorEvent`,configurable:!0},message:r,filename:r,lineno:r,colno:r,error:r}),n.converters.MessagePort=n.interfaceConverter(i),n.converters[`sequence`]=n.sequenceConverter(n.converters.MessagePort);let d=[{key:`bubbles`,converter:n.converters.boolean,defaultValue:!1},{key:`cancelable`,converter:n.converters.boolean,defaultValue:!1},{key:`composed`,converter:n.converters.boolean,defaultValue:!1}];n.converters.MessageEventInit=n.dictionaryConverter([...d,{key:`data`,converter:n.converters.any,defaultValue:null},{key:`origin`,converter:n.converters.USVString,defaultValue:``},{key:`lastEventId`,converter:n.converters.DOMString,defaultValue:``},{key:`source`,converter:n.nullableConverter(n.converters.MessagePort),defaultValue:null},{key:`ports`,converter:n.converters[`sequence`],get defaultValue(){return[]}}]),n.converters.CloseEventInit=n.dictionaryConverter([...d,{key:`wasClean`,converter:n.converters.boolean,defaultValue:!1},{key:`code`,converter:n.converters[`unsigned short`],defaultValue:0},{key:`reason`,converter:n.converters.USVString,defaultValue:``}]),n.converters.ErrorEventInit=n.dictionaryConverter([...d,{key:`message`,converter:n.converters.DOMString,defaultValue:``},{key:`filename`,converter:n.converters.USVString,defaultValue:``},{key:`lineno`,converter:n.converters[`unsigned long`],defaultValue:0},{key:`colno`,converter:n.converters[`unsigned long`],defaultValue:0},{key:`error`,converter:n.converters.any}]),t.exports={MessageEvent:o,CloseEvent:c,ErrorEvent:u}})),Tt=b(((e,t)=>{let{kReadyState:n,kController:r,kResponse:i,kBinaryType:a,kWebSocketURL:o}=Ct(),{states:s,opcodes:c}=St(),{MessageEvent:l,ErrorEvent:u}=wt();function d(e){return e[n]===s.OPEN}function f(e){return e[n]===s.CLOSING}function p(e){return e[n]===s.CLOSED}function m(e,t,n=Event,r){let i=new n(e,r);t.dispatchEvent(i)}function h(e,t,r){if(e[n]!==s.OPEN)return;let i;if(t===c.TEXT)try{i=new TextDecoder(`utf-8`,{fatal:!0}).decode(r)}catch{v(e,`Received invalid UTF-8 in text frame.`);return}else t===c.BINARY&&(i=e[a]===`blob`?new Blob([r]):new Uint8Array(r).buffer);m(`message`,e,l,{origin:e[o].origin,data:i})}function g(e){if(e.length===0)return!1;for(let t of e){let e=t.charCodeAt(0);if(e<33||e>126||t===`(`||t===`)`||t===`<`||t===`>`||t===`@`||t===`,`||t===`;`||t===`:`||t===`\\`||t===`"`||t===`/`||t===`[`||t===`]`||t===`?`||t===`=`||t===`{`||t===`}`||e===32||e===9)return!1}return!0}function _(e){return e>=1e3&&e<1015?e!==1004&&e!==1005&&e!==1006:e>=3e3&&e<=4999}function v(e,t){let{[r]:n,[i]:a}=e;n.abort(),a?.socket&&!a.socket.destroyed&&a.socket.destroy(),t&&m(`error`,e,u,{error:Error(t)})}t.exports={isEstablished:d,isClosing:f,isClosed:p,fireEvent:m,isValidSubprotocol:g,isValidStatusCode:_,failWebsocketConnection:v,websocketMessageReceived:h}})),Et=b(((e,t)=>{let n=T(`diagnostics_channel`),{uid:r,states:i}=St(),{kReadyState:a,kSentClose:o,kByteParser:s,kReceivedClose:c}=Ct(),{fireEvent:l,failWebsocketConnection:u}=Tt(),{CloseEvent:d}=wt(),{makeRequest:f}=Xe(),{fetching:p}=Ze(),{Headers:m}=Je(),{getGlobalDispatcher:h}=Ke(),{kHeadersList:g}=M(),_={};_.open=n.channel(`undici:websocket:open`),_.close=n.channel(`undici:websocket:close`),_.socketError=n.channel(`undici:websocket:socket_error`);let v;try{v=T(`crypto`)}catch{}function y(e,t,n,i,a){let o=e;o.protocol=e.protocol===`ws:`?`http:`:`https:`;let s=f({urlList:[o],serviceWorkers:`none`,referrer:`no-referrer`,mode:`websocket`,credentials:`include`,cache:`no-store`,redirect:`error`});a.headers&&(s.headersList=new m(a.headers)[g]);let c=v.randomBytes(16).toString(`base64`);s.headersList.append(`sec-websocket-key`,c),s.headersList.append(`sec-websocket-version`,`13`);for(let e of t)s.headersList.append(`sec-websocket-protocol`,e);return p({request:s,useParallelQueue:!0,dispatcher:a.dispatcher??h(),processResponse(e){if(e.type===`error`||e.status!==101){u(n,`Received network error or non-101 status code.`);return}if(t.length!==0&&!e.headersList.get(`Sec-WebSocket-Protocol`)){u(n,`Server did not respond with sent protocols.`);return}if(e.headersList.get(`Upgrade`)?.toLowerCase()!==`websocket`){u(n,`Server did not set Upgrade header to "websocket".`);return}if(e.headersList.get(`Connection`)?.toLowerCase()!==`upgrade`){u(n,`Server did not set Connection header to "upgrade".`);return}if(e.headersList.get(`Sec-WebSocket-Accept`)!==v.createHash(`sha1`).update(c+r).digest(`base64`)){u(n,`Incorrect hash received in Sec-WebSocket-Accept header.`);return}let a=e.headersList.get(`Sec-WebSocket-Extensions`);if(a!==null&&a!==``){u(n,`Received different permessage-deflate than the one set.`);return}let o=e.headersList.get(`Sec-WebSocket-Protocol`);if(o!==null&&o!==s.headersList.get(`Sec-WebSocket-Protocol`)){u(n,`Protocol was not set in the opening handshake.`);return}e.socket.on(`data`,b),e.socket.on(`close`,x),e.socket.on(`error`,S),_.open.hasSubscribers&&_.open.publish({address:e.socket.address(),protocol:o,extensions:a}),i(e)}})}function b(e){this.ws[s].write(e)||this.pause()}function x(){let{ws:e}=this,t=e[o]&&e[c],n=1005,r=``,u=e[s].closingInfo;u?(n=u.code??1005,r=u.reason):e[o]||(n=1006),e[a]=i.CLOSED,l(`close`,e,d,{wasClean:t,code:n,reason:r}),_.close.hasSubscribers&&_.close.publish({websocket:e,code:n,reason:r})}function S(e){let{ws:t}=this;t[a]=i.CLOSING,_.socketError.hasSubscribers&&_.socketError.publish(e),this.destroy()}t.exports={establishWebSocketConnection:y}})),Dt=b(((e,t)=>{let{maxUnsigned16Bit:n}=St(),r;try{r=T(`crypto`)}catch{}t.exports={WebsocketFrameSend:class{constructor(e){this.frameData=e,this.maskKey=r.randomBytes(4)}createFrame(e){let t=this.frameData?.byteLength??0,r=t,i=6;t>n?(i+=8,r=127):t>125&&(i+=2,r=126);let a=Buffer.allocUnsafe(t+i);a[0]=a[1]=0,a[0]|=128,a[0]=(a[0]&240)+e,a[i-4]=this.maskKey[0],a[i-3]=this.maskKey[1],a[i-2]=this.maskKey[2],a[i-1]=this.maskKey[3],a[1]=r,r===126?a.writeUInt16BE(t,2):r===127&&(a[2]=a[3]=0,a.writeUIntBE(t,4,6)),a[1]|=128;for(let e=0;e{ot(),lt(),mt();let{Writable:n}=T(`stream`),r=T(`diagnostics_channel`),{parserStates:i,opcodes:a,states:o,emptyBuffer:s}=St(),{kReadyState:c,kSentClose:l,kResponse:u,kReceivedClose:d}=Ct(),{isValidStatusCode:f,failWebsocketConnection:p,websocketMessageReceived:m}=Tt(),{WebsocketFrameSend:h}=Dt(),g={};g.ping=r.channel(`undici:websocket:ping`),g.pong=r.channel(`undici:websocket:pong`);var _=new WeakMap,v=new WeakMap,y=new WeakMap,b=new WeakMap,x=new WeakMap;t.exports={ByteParser:class extends n{constructor(e){super(),at(this,_,[]),at(this,v,0),at(this,y,i.INFO),at(this,b,{}),at(this,x,[]),this.ws=e}_write(e,t,n){X(_,this).push(e),pt(v,this,X(v,this)+e.length),this.run(n)}run(e){for(;;){if(X(y,this)===i.INFO){if(X(v,this)<2)return e();let t=this.consume(2);if(X(b,this).fin=(t[0]&128)!=0,X(b,this).opcode=t[0]&15,X(b,this).originalOpcode??=X(b,this).opcode,X(b,this).fragmented=!X(b,this).fin&&X(b,this).opcode!==a.CONTINUATION,X(b,this).fragmented&&X(b,this).opcode!==a.BINARY&&X(b,this).opcode!==a.TEXT){p(this.ws,`Invalid frame type was fragmented.`);return}let n=t[1]&127;if(n<=125?(X(b,this).payloadLength=n,pt(y,this,i.READ_DATA)):n===126?pt(y,this,i.PAYLOADLENGTH_16):n===127&&pt(y,this,i.PAYLOADLENGTH_64),X(b,this).fragmented&&n>125){p(this.ws,`Fragmented frame exceeded 125 bytes.`);return}else if((X(b,this).opcode===a.PING||X(b,this).opcode===a.PONG||X(b,this).opcode===a.CLOSE)&&n>125){p(this.ws,`Payload length for control frame exceeded 125 bytes.`);return}else if(X(b,this).opcode===a.CLOSE){if(n===1){p(this.ws,`Received close frame with a 1-byte body.`);return}let e=this.consume(n);if(X(b,this).closeInfo=this.parseCloseBody(!1,e),!this.ws[l]){let e=Buffer.allocUnsafe(2);e.writeUInt16BE(X(b,this).closeInfo.code,0);let t=new h(e);this.ws[u].socket.write(t.createFrame(a.CLOSE),e=>{e||(this.ws[l]=!0)})}this.ws[c]=o.CLOSING,this.ws[d]=!0,this.end();return}else if(X(b,this).opcode===a.PING){let t=this.consume(n);if(!this.ws[d]){let e=new h(t);this.ws[u].socket.write(e.createFrame(a.PONG)),g.ping.hasSubscribers&&g.ping.publish({payload:t})}if(pt(y,this,i.INFO),X(v,this)>0)continue;e();return}else if(X(b,this).opcode===a.PONG){let t=this.consume(n);if(g.pong.hasSubscribers&&g.pong.publish({payload:t}),X(v,this)>0)continue;e();return}}else if(X(y,this)===i.PAYLOADLENGTH_16){if(X(v,this)<2)return e();let t=this.consume(2);X(b,this).payloadLength=t.readUInt16BE(0),pt(y,this,i.READ_DATA)}else if(X(y,this)===i.PAYLOADLENGTH_64){if(X(v,this)<8)return e();let t=this.consume(8),n=t.readUInt32BE(0);if(n>2**31-1){p(this.ws,`Received payload length > 2^31 bytes.`);return}let r=t.readUInt32BE(4);X(b,this).payloadLength=(n<<8)+r,pt(y,this,i.READ_DATA)}else if(X(y,this)===i.READ_DATA){if(X(v,this)=X(b,this).payloadLength){let e=this.consume(X(b,this).payloadLength);if(X(x,this).push(e),!X(b,this).fragmented||X(b,this).fin&&X(b,this).opcode===a.CONTINUATION){let e=Buffer.concat(X(x,this));m(this.ws,X(b,this).originalOpcode,e),pt(b,this,{}),X(x,this).length=0}pt(y,this,i.INFO)}}if(!(X(v,this)>0)){e();break}}}consume(e){if(e>X(v,this))return null;if(e===0)return s;if(X(_,this)[0].length===e)return pt(v,this,X(v,this)-X(_,this)[0].length),X(_,this).shift();let t=Buffer.allocUnsafe(e),n=0;for(;n!==e;){let r=X(_,this)[0],{length:i}=r;if(i+n===e){t.set(X(_,this).shift(),n);break}else if(i+n>e){t.set(r.subarray(0,e-n),n),X(_,this)[0]=r.subarray(e-n);break}else t.set(X(_,this).shift(),n),n+=r.length}return pt(v,this,X(v,this)-e),t}parseCloseBody(e,t){let n;if(t.length>=2&&(n=t.readUInt16BE(0)),e)return f(n)?{code:n}:null;let r=t.subarray(2);if(r[0]===239&&r[1]===187&&r[2]===191&&(r=r.subarray(3)),n!==void 0&&!f(n))return null;try{r=new TextDecoder(`utf-8`,{fatal:!0}).decode(r)}catch{return null}return{code:n,reason:r}}get closingInfo(){return X(b,this).closeInfo}}}})),kt=b(((e,t)=>{ft(),ot(),ct(),lt(),mt();let{webidl:n}=se(),{DOMException:r}=W(),{URLSerializer:i}=ce(),{getGlobalOrigin:a}=ae(),{staticPropertyDescriptors:o,states:s,opcodes:c,emptyBuffer:l}=St(),{kWebSocketURL:u,kReadyState:d,kController:f,kBinaryType:p,kResponse:m,kSentClose:h,kByteParser:g}=Ct(),{isEstablished:_,isClosing:v,isValidSubprotocol:y,failWebsocketConnection:b,fireEvent:x}=Tt(),{establishWebSocketConnection:S}=Et(),{WebsocketFrameSend:C}=Dt(),{ByteParser:w}=Ot(),{kEnumerableProperty:E,isBlobLike:D}=P(),{getGlobalDispatcher:O}=Ke(),{types:k}=T(`util`),A=!1;var j=new WeakMap,M=new WeakMap,N=new WeakMap,ee=new WeakMap,F=new WeakSet,I=class e extends EventTarget{constructor(t,i=[]){super(),dt(this,F),at(this,j,{open:null,error:null,close:null,message:null}),at(this,M,0),at(this,N,``),at(this,ee,``),n.argumentLengthCheck(arguments,1,{header:`WebSocket constructor`}),A||(A=!0,process.emitWarning(`WebSockets are experimental, expect them to change at any time.`,{code:`UNDICI-WS`}));let o=n.converters[`DOMString or sequence or WebSocketInit`](i);t=n.converters.USVString(t),i=o.protocols;let s=a(),c;try{c=new URL(t,s)}catch(e){throw new r(e,`SyntaxError`)}if(c.protocol===`http:`?c.protocol=`ws:`:c.protocol===`https:`&&(c.protocol=`wss:`),c.protocol!==`ws:`&&c.protocol!==`wss:`)throw new r(`Expected a ws: or wss: protocol, got ${c.protocol}`,`SyntaxError`);if(c.hash||c.href.endsWith(`#`))throw new r(`Got fragment`,`SyntaxError`);if(typeof i==`string`&&(i=[i]),i.length!==new Set(i.map(e=>e.toLowerCase())).size||i.length>0&&!i.every(e=>y(e)))throw new r(`Invalid Sec-WebSocket-Protocol value`,`SyntaxError`);this[u]=new URL(c.href),this[f]=S(c,i,this,e=>st(F,this,L).call(this,e),o),this[d]=e.CONNECTING,this[p]=`blob`}close(t=void 0,i=void 0){if(n.brandCheck(this,e),t!==void 0&&(t=n.converters[`unsigned short`](t,{clamp:!0})),i!==void 0&&(i=n.converters.USVString(i)),t!==void 0&&t!==1e3&&(t<3e3||t>4999))throw new r(`invalid code`,`InvalidAccessError`);let a=0;if(i!==void 0&&(a=Buffer.byteLength(i),a>123))throw new r(`Reason must be less than 123 bytes; received ${a}`,`SyntaxError`);if(!(this[d]===e.CLOSING||this[d]===e.CLOSED))if(!_(this))b(this,`Connection was closed before it was established.`),this[d]=e.CLOSING;else if(v(this))this[d]=e.CLOSING;else{let e=new C;t!==void 0&&i===void 0?(e.frameData=Buffer.allocUnsafe(2),e.frameData.writeUInt16BE(t,0)):t!==void 0&&i!==void 0?(e.frameData=Buffer.allocUnsafe(2+a),e.frameData.writeUInt16BE(t,0),e.frameData.write(i,2,`utf-8`)):e.frameData=l,this[m].socket.write(e.createFrame(c.CLOSE),e=>{e||(this[h]=!0)}),this[d]=s.CLOSING}}send(t){if(n.brandCheck(this,e),n.argumentLengthCheck(arguments,1,{header:`WebSocket.send`}),t=n.converters.WebSocketSendData(t),this[d]===e.CONNECTING)throw new r(`Sent before connected.`,`InvalidStateError`);if(!_(this)||v(this))return;let i=this[m].socket;if(typeof t==`string`){let e=Buffer.from(t),n=new C(e).createFrame(c.TEXT);pt(M,this,X(M,this)+e.byteLength),i.write(n,()=>{pt(M,this,X(M,this)-e.byteLength)})}else if(k.isArrayBuffer(t)){let e=Buffer.from(t),n=new C(e).createFrame(c.BINARY);pt(M,this,X(M,this)+e.byteLength),i.write(n,()=>{pt(M,this,X(M,this)-e.byteLength)})}else if(ArrayBuffer.isView(t)){let e=Buffer.from(t,t.byteOffset,t.byteLength),n=new C(e).createFrame(c.BINARY);pt(M,this,X(M,this)+e.byteLength),i.write(n,()=>{pt(M,this,X(M,this)-e.byteLength)})}else if(D(t)){let e=new C;t.arrayBuffer().then(t=>{let n=Buffer.from(t);e.frameData=n;let r=e.createFrame(c.BINARY);pt(M,this,X(M,this)+n.byteLength),i.write(r,()=>{pt(M,this,X(M,this)-n.byteLength)})})}}get readyState(){return n.brandCheck(this,e),this[d]}get bufferedAmount(){return n.brandCheck(this,e),X(M,this)}get url(){return n.brandCheck(this,e),i(this[u])}get extensions(){return n.brandCheck(this,e),X(ee,this)}get protocol(){return n.brandCheck(this,e),X(N,this)}get onopen(){return n.brandCheck(this,e),X(j,this).open}set onopen(t){n.brandCheck(this,e),X(j,this).open&&this.removeEventListener(`open`,X(j,this).open),typeof t==`function`?(X(j,this).open=t,this.addEventListener(`open`,t)):X(j,this).open=null}get onerror(){return n.brandCheck(this,e),X(j,this).error}set onerror(t){n.brandCheck(this,e),X(j,this).error&&this.removeEventListener(`error`,X(j,this).error),typeof t==`function`?(X(j,this).error=t,this.addEventListener(`error`,t)):X(j,this).error=null}get onclose(){return n.brandCheck(this,e),X(j,this).close}set onclose(t){n.brandCheck(this,e),X(j,this).close&&this.removeEventListener(`close`,X(j,this).close),typeof t==`function`?(X(j,this).close=t,this.addEventListener(`close`,t)):X(j,this).close=null}get onmessage(){return n.brandCheck(this,e),X(j,this).message}set onmessage(t){n.brandCheck(this,e),X(j,this).message&&this.removeEventListener(`message`,X(j,this).message),typeof t==`function`?(X(j,this).message=t,this.addEventListener(`message`,t)):X(j,this).message=null}get binaryType(){return n.brandCheck(this,e),this[p]}set binaryType(t){n.brandCheck(this,e),t!==`blob`&&t!==`arraybuffer`?this[p]=`blob`:this[p]=t}};function L(e){this[m]=e;let t=new w(this);t.on(`drain`,function(){this.ws[m].socket.resume()}),e.socket.ws=this,this[g]=t,this[d]=s.OPEN;let n=e.headersList.get(`sec-websocket-extensions`);n!==null&&pt(ee,this,n);let r=e.headersList.get(`sec-websocket-protocol`);r!==null&&pt(N,this,r),x(`open`,this)}I.CONNECTING=I.prototype.CONNECTING=s.CONNECTING,I.OPEN=I.prototype.OPEN=s.OPEN,I.CLOSING=I.prototype.CLOSING=s.CLOSING,I.CLOSED=I.prototype.CLOSED=s.CLOSED,Object.defineProperties(I.prototype,{CONNECTING:o,OPEN:o,CLOSING:o,CLOSED:o,url:E,readyState:E,bufferedAmount:E,onopen:E,onerror:E,onclose:E,close:E,onmessage:E,binaryType:E,send:E,extensions:E,protocol:E,[Symbol.toStringTag]:{value:`WebSocket`,writable:!1,enumerable:!1,configurable:!0}}),Object.defineProperties(I,{CONNECTING:o,OPEN:o,CLOSING:o,CLOSED:o}),n.converters[`sequence`]=n.sequenceConverter(n.converters.DOMString),n.converters[`DOMString or sequence`]=function(e){return n.util.Type(e)===`Object`&&Symbol.iterator in e?n.converters[`sequence`](e):n.converters.DOMString(e)},n.converters.WebSocketInit=n.dictionaryConverter([{key:`protocols`,converter:n.converters[`DOMString or sequence`],get defaultValue(){return[]}},{key:`dispatcher`,converter:e=>e,get defaultValue(){return O()}},{key:`headers`,converter:n.nullableConverter(n.converters.HeadersInit)}]),n.converters[`DOMString or sequence or WebSocketInit`]=function(e){return n.util.Type(e)===`Object`&&!(Symbol.iterator in e)?n.converters.WebSocketInit(e):{protocols:n.converters[`DOMString or sequence`](e)}},n.converters.WebSocketSendData=function(e){if(n.util.Type(e)===`Object`){if(D(e))return n.converters.Blob(e,{strict:!1});if(ArrayBuffer.isView(e)||k.isAnyArrayBuffer(e))return n.converters.BufferSource(e)}return n.converters.USVString(e)},t.exports={WebSocket:I}})),At=b(((e,t)=>{let n=Se(),r=pe(),i=N(),a=Ee(),o=De(),s=ke(),c=P(),{InvalidArgumentError:l}=i,u=Re(),d=he(),f=q(),p=We(),m=He(),h=ze(),g=Ge(),_=Y(),{getGlobalDispatcher:v,setGlobalDispatcher:y}=Ke(),b=qe(),x=ve(),S=ye(),C;try{T(`crypto`),C=!0}catch{C=!1}Object.assign(r.prototype,u),t.exports.Dispatcher=r,t.exports.Client=n,t.exports.Pool=a,t.exports.BalancedPool=o,t.exports.Agent=s,t.exports.ProxyAgent=g,t.exports.RetryHandler=_,t.exports.DecoratorHandler=b,t.exports.RedirectHandler=x,t.exports.createRedirectInterceptor=S,t.exports.buildConnector=d,t.exports.errors=i;function w(e){return(t,n,r)=>{if(typeof n==`function`&&(r=n,n=null),!t||typeof t!=`string`&&typeof t!=`object`&&!(t instanceof URL))throw new l(`invalid url`);if(n!=null&&typeof n!=`object`)throw new l(`invalid opts`);if(n&&n.path!=null){if(typeof n.path!=`string`)throw new l(`invalid opts.path`);let e=n.path;n.path.startsWith(`/`)||(e=`/${e}`),t=new URL(c.parseOrigin(t).origin+e)}else n||=typeof t==`object`?t:{},t=c.parseURL(t);let{agent:i,dispatcher:a=v()}=n;if(i)throw new l(`unsupported opts.agent. Did you mean opts.client?`);return e.call(a,{...n,origin:t.origin,path:t.search?`${t.pathname}${t.search}`:t.pathname,method:n.method||(n.body?`PUT`:`GET`)},r)}}if(t.exports.setGlobalDispatcher=y,t.exports.getGlobalDispatcher=v,c.nodeMajor>16||c.nodeMajor===16&&c.nodeMinor>=8){let e=null;t.exports.fetch=async function(t){e||=Ze().fetch;try{return await e(...arguments)}catch(e){throw typeof e==`object`&&Error.captureStackTrace(e,this),e}},t.exports.Headers=Je().Headers,t.exports.Response=Ye().Response,t.exports.Request=Xe().Request,t.exports.FormData=ue().FormData,t.exports.File=le().File,t.exports.FileReader=nt().FileReader;let{setGlobalOrigin:n,getGlobalOrigin:r}=ae();t.exports.setGlobalOrigin=n,t.exports.getGlobalOrigin=r;let{CacheStorage:i}=_t(),{kConstruct:a}=ut();t.exports.caches=new i(a)}if(c.nodeMajor>=16){let{deleteCookie:e,getCookies:n,getSetCookies:r,setCookie:i}=xt();t.exports.deleteCookie=e,t.exports.getCookies=n,t.exports.getSetCookies=r,t.exports.setCookie=i;let{parseMIMEType:a,serializeAMimeType:o}=ce();t.exports.parseMIMEType=a,t.exports.serializeAMimeType=o}if(c.nodeMajor>=18&&C){let{WebSocket:e}=kt();t.exports.WebSocket=e}t.exports.request=w(u.request),t.exports.stream=w(u.stream),t.exports.pipeline=w(u.pipeline),t.exports.connect=w(u.connect),t.exports.upgrade=w(u.upgrade),t.exports.MockClient=f,t.exports.MockPool=m,t.exports.MockAgent=p,t.exports.mockErrors=h})),jt=b((e=>{var t=e&&e.__createBinding||(Object.create?(function(e,t,n,r){r===void 0&&(r=n);var i=Object.getOwnPropertyDescriptor(t,n);(!i||(`get`in i?!t.__esModule:i.writable||i.configurable))&&(i={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,r,i)}):(function(e,t,n,r){r===void 0&&(r=n),e[r]=t[n]})),n=e&&e.__setModuleDefault||(Object.create?(function(e,t){Object.defineProperty(e,`default`,{enumerable:!0,value:t})}):function(e,t){e.default=t}),r=e&&e.__importStar||function(e){if(e&&e.__esModule)return e;var r={};if(e!=null)for(var i in e)i!==`default`&&Object.prototype.hasOwnProperty.call(e,i)&&t(r,e,i);return n(r,e),r},i=e&&e.__awaiter||function(e,t,n,r){function i(e){return e instanceof n?e:new n(function(t){t(e)})}return new(n||=Promise)(function(n,a){function o(e){try{c(r.next(e))}catch(e){a(e)}}function s(e){try{c(r.throw(e))}catch(e){a(e)}}function c(e){e.done?n(e.value):i(e.value).then(o,s)}c((r=r.apply(e,t||[])).next())})};Object.defineProperty(e,`__esModule`,{value:!0}),e.HttpClient=e.isHttps=e.HttpClientResponse=e.HttpClientError=e.getProxyUrl=e.MediaTypes=e.Headers=e.HttpCodes=void 0;let a=r(T(`http`)),o=r(T(`https`)),s=r(k()),c=r(j()),l=At();var u;(function(e){e[e.OK=200]=`OK`,e[e.MultipleChoices=300]=`MultipleChoices`,e[e.MovedPermanently=301]=`MovedPermanently`,e[e.ResourceMoved=302]=`ResourceMoved`,e[e.SeeOther=303]=`SeeOther`,e[e.NotModified=304]=`NotModified`,e[e.UseProxy=305]=`UseProxy`,e[e.SwitchProxy=306]=`SwitchProxy`,e[e.TemporaryRedirect=307]=`TemporaryRedirect`,e[e.PermanentRedirect=308]=`PermanentRedirect`,e[e.BadRequest=400]=`BadRequest`,e[e.Unauthorized=401]=`Unauthorized`,e[e.PaymentRequired=402]=`PaymentRequired`,e[e.Forbidden=403]=`Forbidden`,e[e.NotFound=404]=`NotFound`,e[e.MethodNotAllowed=405]=`MethodNotAllowed`,e[e.NotAcceptable=406]=`NotAcceptable`,e[e.ProxyAuthenticationRequired=407]=`ProxyAuthenticationRequired`,e[e.RequestTimeout=408]=`RequestTimeout`,e[e.Conflict=409]=`Conflict`,e[e.Gone=410]=`Gone`,e[e.TooManyRequests=429]=`TooManyRequests`,e[e.InternalServerError=500]=`InternalServerError`,e[e.NotImplemented=501]=`NotImplemented`,e[e.BadGateway=502]=`BadGateway`,e[e.ServiceUnavailable=503]=`ServiceUnavailable`,e[e.GatewayTimeout=504]=`GatewayTimeout`})(u||(e.HttpCodes=u={}));var d;(function(e){e.Accept=`accept`,e.ContentType=`content-type`})(d||(e.Headers=d={}));var f;(function(e){e.ApplicationJson=`application/json`})(f||(e.MediaTypes=f={}));function p(e){let t=s.getProxyUrl(new URL(e));return t?t.href:``}e.getProxyUrl=p;let m=[u.MovedPermanently,u.ResourceMoved,u.SeeOther,u.TemporaryRedirect,u.PermanentRedirect],h=[u.BadGateway,u.ServiceUnavailable,u.GatewayTimeout],g=[`OPTIONS`,`GET`,`DELETE`,`HEAD`];var _=class e extends Error{constructor(t,n){super(t),this.name=`HttpClientError`,this.statusCode=n,Object.setPrototypeOf(this,e.prototype)}};e.HttpClientError=_;var v=class{constructor(e){this.message=e}readBody(){return i(this,void 0,void 0,function*(){return new Promise(e=>i(this,void 0,void 0,function*(){let t=Buffer.alloc(0);this.message.on(`data`,e=>{t=Buffer.concat([t,e])}),this.message.on(`end`,()=>{e(t.toString())})}))})}readBodyBuffer(){return i(this,void 0,void 0,function*(){return new Promise(e=>i(this,void 0,void 0,function*(){let t=[];this.message.on(`data`,e=>{t.push(e)}),this.message.on(`end`,()=>{e(Buffer.concat(t))})}))})}};e.HttpClientResponse=v;function y(e){return new URL(e).protocol===`https:`}e.isHttps=y,e.HttpClient=class{constructor(e,t,n){this._ignoreSslError=!1,this._allowRedirects=!0,this._allowRedirectDowngrade=!1,this._maxRedirects=50,this._allowRetries=!1,this._maxRetries=1,this._keepAlive=!1,this._disposed=!1,this.userAgent=e,this.handlers=t||[],this.requestOptions=n,n&&(n.ignoreSslError!=null&&(this._ignoreSslError=n.ignoreSslError),this._socketTimeout=n.socketTimeout,n.allowRedirects!=null&&(this._allowRedirects=n.allowRedirects),n.allowRedirectDowngrade!=null&&(this._allowRedirectDowngrade=n.allowRedirectDowngrade),n.maxRedirects!=null&&(this._maxRedirects=Math.max(n.maxRedirects,0)),n.keepAlive!=null&&(this._keepAlive=n.keepAlive),n.allowRetries!=null&&(this._allowRetries=n.allowRetries),n.maxRetries!=null&&(this._maxRetries=n.maxRetries))}options(e,t){return i(this,void 0,void 0,function*(){return this.request(`OPTIONS`,e,null,t||{})})}get(e,t){return i(this,void 0,void 0,function*(){return this.request(`GET`,e,null,t||{})})}del(e,t){return i(this,void 0,void 0,function*(){return this.request(`DELETE`,e,null,t||{})})}post(e,t,n){return i(this,void 0,void 0,function*(){return this.request(`POST`,e,t,n||{})})}patch(e,t,n){return i(this,void 0,void 0,function*(){return this.request(`PATCH`,e,t,n||{})})}put(e,t,n){return i(this,void 0,void 0,function*(){return this.request(`PUT`,e,t,n||{})})}head(e,t){return i(this,void 0,void 0,function*(){return this.request(`HEAD`,e,null,t||{})})}sendStream(e,t,n,r){return i(this,void 0,void 0,function*(){return this.request(e,t,n,r)})}getJson(e,t={}){return i(this,void 0,void 0,function*(){t[d.Accept]=this._getExistingOrDefaultHeader(t,d.Accept,f.ApplicationJson);let n=yield this.get(e,t);return this._processResponse(n,this.requestOptions)})}postJson(e,t,n={}){return i(this,void 0,void 0,function*(){let r=JSON.stringify(t,null,2);n[d.Accept]=this._getExistingOrDefaultHeader(n,d.Accept,f.ApplicationJson),n[d.ContentType]=this._getExistingOrDefaultHeader(n,d.ContentType,f.ApplicationJson);let i=yield this.post(e,r,n);return this._processResponse(i,this.requestOptions)})}putJson(e,t,n={}){return i(this,void 0,void 0,function*(){let r=JSON.stringify(t,null,2);n[d.Accept]=this._getExistingOrDefaultHeader(n,d.Accept,f.ApplicationJson),n[d.ContentType]=this._getExistingOrDefaultHeader(n,d.ContentType,f.ApplicationJson);let i=yield this.put(e,r,n);return this._processResponse(i,this.requestOptions)})}patchJson(e,t,n={}){return i(this,void 0,void 0,function*(){let r=JSON.stringify(t,null,2);n[d.Accept]=this._getExistingOrDefaultHeader(n,d.Accept,f.ApplicationJson),n[d.ContentType]=this._getExistingOrDefaultHeader(n,d.ContentType,f.ApplicationJson);let i=yield this.patch(e,r,n);return this._processResponse(i,this.requestOptions)})}request(e,t,n,r){return i(this,void 0,void 0,function*(){if(this._disposed)throw Error(`Client has already been disposed.`);let i=new URL(t),a=this._prepareRequest(e,i,r),o=this._allowRetries&&g.includes(e)?this._maxRetries+1:1,s=0,c;do{if(c=yield this.requestRaw(a,n),c&&c.message&&c.message.statusCode===u.Unauthorized){let e;for(let t of this.handlers)if(t.canHandleAuthentication(c)){e=t;break}return e?e.handleAuthentication(this,a,n):c}let t=this._maxRedirects;for(;c.message.statusCode&&m.includes(c.message.statusCode)&&this._allowRedirects&&t>0;){let o=c.message.headers.location;if(!o)break;let s=new URL(o);if(i.protocol===`https:`&&i.protocol!==s.protocol&&!this._allowRedirectDowngrade)throw Error(`Redirect from HTTPS to HTTP protocol. This downgrade is not allowed for security reasons. If you want to allow this behavior, set the allowRedirectDowngrade option to true.`);if(yield c.readBody(),s.hostname!==i.hostname)for(let e in r)e.toLowerCase()===`authorization`&&delete r[e];a=this._prepareRequest(e,s,r),c=yield this.requestRaw(a,n),t--}if(!c.message.statusCode||!h.includes(c.message.statusCode))return c;s+=1,s{function i(e,t){e?r(e):t?n(t):r(Error(`Unknown error`))}this.requestRawWithCallback(e,t,i)})})}requestRawWithCallback(e,t,n){typeof t==`string`&&(e.options.headers||(e.options.headers={}),e.options.headers[`Content-Length`]=Buffer.byteLength(t,`utf8`));let r=!1;function i(e,t){r||(r=!0,n(e,t))}let a=e.httpModule.request(e.options,e=>{i(void 0,new v(e))}),o;a.on(`socket`,e=>{o=e}),a.setTimeout(this._socketTimeout||3*6e4,()=>{o&&o.end(),i(Error(`Request timeout: ${e.options.path}`))}),a.on(`error`,function(e){i(e)}),t&&typeof t==`string`&&a.write(t,`utf8`),t&&typeof t!=`string`?(t.on(`close`,function(){a.end()}),t.pipe(a)):a.end()}getAgent(e){let t=new URL(e);return this._getAgent(t)}getAgentDispatcher(e){let t=new URL(e),n=s.getProxyUrl(t);if(n&&n.hostname)return this._getProxyAgentDispatcher(t,n)}_prepareRequest(e,t,n){let r={};r.parsedUrl=t;let i=r.parsedUrl.protocol===`https:`;r.httpModule=i?o:a;let s=i?443:80;if(r.options={},r.options.host=r.parsedUrl.hostname,r.options.port=r.parsedUrl.port?parseInt(r.parsedUrl.port):s,r.options.path=(r.parsedUrl.pathname||``)+(r.parsedUrl.search||``),r.options.method=e,r.options.headers=this._mergeHeaders(n),this.userAgent!=null&&(r.options.headers[`user-agent`]=this.userAgent),r.options.agent=this._getAgent(r.parsedUrl),this.handlers)for(let e of this.handlers)e.prepareRequest(r.options);return r}_mergeHeaders(e){return this.requestOptions&&this.requestOptions.headers?Object.assign({},b(this.requestOptions.headers),b(e||{})):b(e||{})}_getExistingOrDefaultHeader(e,t,n){let r;return this.requestOptions&&this.requestOptions.headers&&(r=b(this.requestOptions.headers)[t]),e[t]||r||n}_getAgent(e){let t,n=s.getProxyUrl(e),r=n&&n.hostname;if(this._keepAlive&&r&&(t=this._proxyAgent),r||(t=this._agent),t)return t;let i=e.protocol===`https:`,l=100;if(this.requestOptions&&(l=this.requestOptions.maxSockets||a.globalAgent.maxSockets),n&&n.hostname){let e={maxSockets:l,keepAlive:this._keepAlive,proxy:Object.assign(Object.assign({},(n.username||n.password)&&{proxyAuth:`${n.username}:${n.password}`}),{host:n.hostname,port:n.port})},r,a=n.protocol===`https:`;r=i?a?c.httpsOverHttps:c.httpsOverHttp:a?c.httpOverHttps:c.httpOverHttp,t=r(e),this._proxyAgent=t}if(!t){let e={keepAlive:this._keepAlive,maxSockets:l};t=i?new o.Agent(e):new a.Agent(e),this._agent=t}return i&&this._ignoreSslError&&(t.options=Object.assign(t.options||{},{rejectUnauthorized:!1})),t}_getProxyAgentDispatcher(e,t){let n;if(this._keepAlive&&(n=this._proxyAgentDispatcher),n)return n;let r=e.protocol===`https:`;return n=new l.ProxyAgent(Object.assign({uri:t.href,pipelining:this._keepAlive?1:0},(t.username||t.password)&&{token:`Basic ${Buffer.from(`${t.username}:${t.password}`).toString(`base64`)}`})),this._proxyAgentDispatcher=n,r&&this._ignoreSslError&&(n.options=Object.assign(n.options.requestTls||{},{rejectUnauthorized:!1})),n}_performExponentialBackoff(e){return i(this,void 0,void 0,function*(){e=Math.min(10,e);let t=5*2**e;return new Promise(e=>setTimeout(()=>e(),t))})}_processResponse(e,t){return i(this,void 0,void 0,function*(){return new Promise((n,r)=>i(this,void 0,void 0,function*(){let i=e.message.statusCode||0,a={statusCode:i,result:null,headers:{}};i===u.NotFound&&n(a);function o(e,t){if(typeof t==`string`){let e=new Date(t);if(!isNaN(e.valueOf()))return e}return t}let s,c;try{c=yield e.readBody(),c&&c.length>0&&(s=t&&t.deserializeDates?JSON.parse(c,o):JSON.parse(c),a.result=s),a.headers=e.message.headers}catch{}if(i>299){let e;e=s&&s.message?s.message:c&&c.length>0?c:`Failed request: (${i})`;let t=new _(e,i);t.result=a.result,r(t)}else n(a)}))})}};let b=e=>Object.keys(e).reduce((t,n)=>(t[n.toLowerCase()]=e[n],t),{})})),Mt=b((e=>{var t=e&&e.__awaiter||function(e,t,n,r){function i(e){return e instanceof n?e:new n(function(t){t(e)})}return new(n||=Promise)(function(n,a){function o(e){try{c(r.next(e))}catch(e){a(e)}}function s(e){try{c(r.throw(e))}catch(e){a(e)}}function c(e){e.done?n(e.value):i(e.value).then(o,s)}c((r=r.apply(e,t||[])).next())})};Object.defineProperty(e,`__esModule`,{value:!0}),e.PersonalAccessTokenCredentialHandler=e.BearerCredentialHandler=e.BasicCredentialHandler=void 0,e.BasicCredentialHandler=class{constructor(e,t){this.username=e,this.password=t}prepareRequest(e){if(!e.headers)throw Error(`The request has no headers`);e.headers.Authorization=`Basic ${Buffer.from(`${this.username}:${this.password}`).toString(`base64`)}`}canHandleAuthentication(){return!1}handleAuthentication(){return t(this,void 0,void 0,function*(){throw Error(`not implemented`)})}},e.BearerCredentialHandler=class{constructor(e){this.token=e}prepareRequest(e){if(!e.headers)throw Error(`The request has no headers`);e.headers.Authorization=`Bearer ${this.token}`}canHandleAuthentication(){return!1}handleAuthentication(){return t(this,void 0,void 0,function*(){throw Error(`not implemented`)})}},e.PersonalAccessTokenCredentialHandler=class{constructor(e){this.token=e}prepareRequest(e){if(!e.headers)throw Error(`The request has no headers`);e.headers.Authorization=`Basic ${Buffer.from(`PAT:${this.token}`).toString(`base64`)}`}canHandleAuthentication(){return!1}handleAuthentication(){return t(this,void 0,void 0,function*(){throw Error(`not implemented`)})}}})),Nt=b((e=>{var t=e&&e.__awaiter||function(e,t,n,r){function i(e){return e instanceof n?e:new n(function(t){t(e)})}return new(n||=Promise)(function(n,a){function o(e){try{c(r.next(e))}catch(e){a(e)}}function s(e){try{c(r.throw(e))}catch(e){a(e)}}function c(e){e.done?n(e.value):i(e.value).then(o,s)}c((r=r.apply(e,t||[])).next())})};Object.defineProperty(e,`__esModule`,{value:!0}),e.OidcClient=void 0;let n=jt(),r=Mt(),i=Bt();e.OidcClient=class e{static createHttpClient(t=!0,i=10){let a={allowRetries:t,maxRetries:i};return new n.HttpClient(`actions/oidc-client`,[new r.BearerCredentialHandler(e.getRequestToken())],a)}static getRequestToken(){let e=process.env.ACTIONS_ID_TOKEN_REQUEST_TOKEN;if(!e)throw Error(`Unable to get ACTIONS_ID_TOKEN_REQUEST_TOKEN env variable`);return e}static getIDTokenUrl(){let e=process.env.ACTIONS_ID_TOKEN_REQUEST_URL;if(!e)throw Error(`Unable to get ACTIONS_ID_TOKEN_REQUEST_URL env variable`);return e}static getCall(n){return t(this,void 0,void 0,function*(){let t=(yield e.createHttpClient().getJson(n).catch(e=>{throw Error(`Failed to get ID Token. \n + Error Code : ${e.statusCode}\n + Error Message: ${e.message}`)})).result?.value;if(!t)throw Error(`Response json body do not have ID Token field`);return t})}static getIDToken(n){return t(this,void 0,void 0,function*(){try{let t=e.getIDTokenUrl();n&&(t=`${t}&audience=${encodeURIComponent(n)}`),(0,i.debug)(`ID token url is ${t}`);let r=yield e.getCall(t);return(0,i.setSecret)(r),r}catch(e){throw Error(`Error message: ${e.message}`)}})}}})),Pt=b((e=>{var t=e&&e.__awaiter||function(e,t,n,r){function i(e){return e instanceof n?e:new n(function(t){t(e)})}return new(n||=Promise)(function(n,a){function o(e){try{c(r.next(e))}catch(e){a(e)}}function s(e){try{c(r.throw(e))}catch(e){a(e)}}function c(e){e.done?n(e.value):i(e.value).then(o,s)}c((r=r.apply(e,t||[])).next())})};Object.defineProperty(e,`__esModule`,{value:!0}),e.summary=e.markdownSummary=e.SUMMARY_DOCS_URL=e.SUMMARY_ENV_VAR=void 0;let n=T(`os`),r=T(`fs`),{access:i,appendFile:a,writeFile:o}=r.promises;e.SUMMARY_ENV_VAR=`GITHUB_STEP_SUMMARY`,e.SUMMARY_DOCS_URL=`https://docs.github.com/actions/using-workflows/workflow-commands-for-github-actions#adding-a-job-summary`;let s=new class{constructor(){this._buffer=``}filePath(){return t(this,void 0,void 0,function*(){if(this._filePath)return this._filePath;let t=process.env[e.SUMMARY_ENV_VAR];if(!t)throw Error(`Unable to find environment variable for $${e.SUMMARY_ENV_VAR}. Check if your runtime environment supports job summaries.`);try{yield i(t,r.constants.R_OK|r.constants.W_OK)}catch{throw Error(`Unable to access summary file: '${t}'. Check if the file has correct read/write permissions.`)}return this._filePath=t,this._filePath})}wrap(e,t,n={}){let r=Object.entries(n).map(([e,t])=>` ${e}="${t}"`).join(``);return t?`<${e}${r}>${t}`:`<${e}${r}>`}write(e){return t(this,void 0,void 0,function*(){let t=!!e?.overwrite,n=yield this.filePath();return yield(t?o:a)(n,this._buffer,{encoding:`utf8`}),this.emptyBuffer()})}clear(){return t(this,void 0,void 0,function*(){return this.emptyBuffer().write({overwrite:!0})})}stringify(){return this._buffer}isEmptyBuffer(){return this._buffer.length===0}emptyBuffer(){return this._buffer=``,this}addRaw(e,t=!1){return this._buffer+=e,t?this.addEOL():this}addEOL(){return this.addRaw(n.EOL)}addCodeBlock(e,t){let n=Object.assign({},t&&{lang:t}),r=this.wrap(`pre`,this.wrap(`code`,e),n);return this.addRaw(r).addEOL()}addList(e,t=!1){let n=t?`ol`:`ul`,r=e.map(e=>this.wrap(`li`,e)).join(``),i=this.wrap(n,r);return this.addRaw(i).addEOL()}addTable(e){let t=e.map(e=>{let t=e.map(e=>{if(typeof e==`string`)return this.wrap(`td`,e);let{header:t,data:n,colspan:r,rowspan:i}=e,a=t?`th`:`td`,o=Object.assign(Object.assign({},r&&{colspan:r}),i&&{rowspan:i});return this.wrap(a,n,o)}).join(``);return this.wrap(`tr`,t)}).join(``),n=this.wrap(`table`,t);return this.addRaw(n).addEOL()}addDetails(e,t){let n=this.wrap(`details`,this.wrap(`summary`,e)+t);return this.addRaw(n).addEOL()}addImage(e,t,n){let{width:r,height:i}=n||{},a=Object.assign(Object.assign({},r&&{width:r}),i&&{height:i}),o=this.wrap(`img`,null,Object.assign({src:e,alt:t},a));return this.addRaw(o).addEOL()}addHeading(e,t){let n=`h${t}`,r=[`h1`,`h2`,`h3`,`h4`,`h5`,`h6`].includes(n)?n:`h1`,i=this.wrap(r,e);return this.addRaw(i).addEOL()}addSeparator(){let e=this.wrap(`hr`,null);return this.addRaw(e).addEOL()}addBreak(){let e=this.wrap(`br`,null);return this.addRaw(e).addEOL()}addQuote(e,t){let n=Object.assign({},t&&{cite:t}),r=this.wrap(`blockquote`,e,n);return this.addRaw(r).addEOL()}addLink(e,t){let n=this.wrap(`a`,e,{href:t});return this.addRaw(n).addEOL()}};e.markdownSummary=s,e.summary=s})),Ft=b((e=>{var t=e&&e.__createBinding||(Object.create?(function(e,t,n,r){r===void 0&&(r=n);var i=Object.getOwnPropertyDescriptor(t,n);(!i||(`get`in i?!t.__esModule:i.writable||i.configurable))&&(i={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,r,i)}):(function(e,t,n,r){r===void 0&&(r=n),e[r]=t[n]})),n=e&&e.__setModuleDefault||(Object.create?(function(e,t){Object.defineProperty(e,`default`,{enumerable:!0,value:t})}):function(e,t){e.default=t}),r=e&&e.__importStar||function(e){if(e&&e.__esModule)return e;var r={};if(e!=null)for(var i in e)i!==`default`&&Object.prototype.hasOwnProperty.call(e,i)&&t(r,e,i);return n(r,e),r};Object.defineProperty(e,`__esModule`,{value:!0}),e.toPlatformPath=e.toWin32Path=e.toPosixPath=void 0;let i=r(T(`path`));function a(e){return e.replace(/[\\]/g,`/`)}e.toPosixPath=a;function o(e){return e.replace(/[/]/g,`\\`)}e.toWin32Path=o;function s(e){return e.replace(/[/\\]/g,i.sep)}e.toPlatformPath=s})),It=b((e=>{var t=e&&e.__createBinding||(Object.create?(function(e,t,n,r){r===void 0&&(r=n),Object.defineProperty(e,r,{enumerable:!0,get:function(){return t[n]}})}):(function(e,t,n,r){r===void 0&&(r=n),e[r]=t[n]})),n=e&&e.__setModuleDefault||(Object.create?(function(e,t){Object.defineProperty(e,`default`,{enumerable:!0,value:t})}):function(e,t){e.default=t}),r=e&&e.__importStar||function(e){if(e&&e.__esModule)return e;var r={};if(e!=null)for(var i in e)i!==`default`&&Object.hasOwnProperty.call(e,i)&&t(r,e,i);return n(r,e),r},i=e&&e.__awaiter||function(e,t,n,r){function i(e){return e instanceof n?e:new n(function(t){t(e)})}return new(n||=Promise)(function(n,a){function o(e){try{c(r.next(e))}catch(e){a(e)}}function s(e){try{c(r.throw(e))}catch(e){a(e)}}function c(e){e.done?n(e.value):i(e.value).then(o,s)}c((r=r.apply(e,t||[])).next())})},a;Object.defineProperty(e,`__esModule`,{value:!0}),e.getCmdPath=e.tryGetExecutablePath=e.isRooted=e.isDirectory=e.exists=e.READONLY=e.UV_FS_O_EXLOCK=e.IS_WINDOWS=e.unlink=e.symlink=e.stat=e.rmdir=e.rm=e.rename=e.readlink=e.readdir=e.open=e.mkdir=e.lstat=e.copyFile=e.chmod=void 0;let o=r(T(`fs`)),s=r(T(`path`));a=o.promises,e.chmod=a.chmod,e.copyFile=a.copyFile,e.lstat=a.lstat,e.mkdir=a.mkdir,e.open=a.open,e.readdir=a.readdir,e.readlink=a.readlink,e.rename=a.rename,e.rm=a.rm,e.rmdir=a.rmdir,e.stat=a.stat,e.symlink=a.symlink,e.unlink=a.unlink,e.IS_WINDOWS=process.platform===`win32`,e.UV_FS_O_EXLOCK=268435456,e.READONLY=o.constants.O_RDONLY;function c(t){return i(this,void 0,void 0,function*(){try{yield e.stat(t)}catch(e){if(e.code===`ENOENT`)return!1;throw e}return!0})}e.exists=c;function l(t,n=!1){return i(this,void 0,void 0,function*(){return(n?yield e.stat(t):yield e.lstat(t)).isDirectory()})}e.isDirectory=l;function u(t){if(t=f(t),!t)throw Error(`isRooted() parameter "p" cannot be empty`);return e.IS_WINDOWS?t.startsWith(`\\`)||/^[A-Z]:/i.test(t):t.startsWith(`/`)}e.isRooted=u;function d(t,n){return i(this,void 0,void 0,function*(){let r;try{r=yield e.stat(t)}catch(e){e.code!==`ENOENT`&&console.log(`Unexpected error attempting to determine if executable file exists '${t}': ${e}`)}if(r&&r.isFile()){if(e.IS_WINDOWS){let e=s.extname(t).toUpperCase();if(n.some(t=>t.toUpperCase()===e))return t}else if(p(r))return t}let i=t;for(let a of n){t=i+a,r=void 0;try{r=yield e.stat(t)}catch(e){e.code!==`ENOENT`&&console.log(`Unexpected error attempting to determine if executable file exists '${t}': ${e}`)}if(r&&r.isFile()){if(e.IS_WINDOWS){try{let n=s.dirname(t),r=s.basename(t).toUpperCase();for(let i of yield e.readdir(n))if(r===i.toUpperCase()){t=s.join(n,i);break}}catch(e){console.log(`Unexpected error attempting to determine the actual case of the file '${t}': ${e}`)}return t}else if(p(r))return t}}return``})}e.tryGetExecutablePath=d;function f(t){return t||=``,e.IS_WINDOWS?(t=t.replace(/\//g,`\\`),t.replace(/\\\\+/g,`\\`)):t.replace(/\/\/+/g,`/`)}function p(e){return(e.mode&1)>0||(e.mode&8)>0&&e.gid===process.getgid()||(e.mode&64)>0&&e.uid===process.getuid()}function m(){return process.env.COMSPEC??`cmd.exe`}e.getCmdPath=m})),Lt=b((e=>{var t=e&&e.__createBinding||(Object.create?(function(e,t,n,r){r===void 0&&(r=n),Object.defineProperty(e,r,{enumerable:!0,get:function(){return t[n]}})}):(function(e,t,n,r){r===void 0&&(r=n),e[r]=t[n]})),n=e&&e.__setModuleDefault||(Object.create?(function(e,t){Object.defineProperty(e,`default`,{enumerable:!0,value:t})}):function(e,t){e.default=t}),r=e&&e.__importStar||function(e){if(e&&e.__esModule)return e;var r={};if(e!=null)for(var i in e)i!==`default`&&Object.hasOwnProperty.call(e,i)&&t(r,e,i);return n(r,e),r},i=e&&e.__awaiter||function(e,t,n,r){function i(e){return e instanceof n?e:new n(function(t){t(e)})}return new(n||=Promise)(function(n,a){function o(e){try{c(r.next(e))}catch(e){a(e)}}function s(e){try{c(r.throw(e))}catch(e){a(e)}}function c(e){e.done?n(e.value):i(e.value).then(o,s)}c((r=r.apply(e,t||[])).next())})};Object.defineProperty(e,`__esModule`,{value:!0}),e.findInPath=e.which=e.mkdirP=e.rmRF=e.mv=e.cp=void 0;let a=T(`assert`),o=r(T(`path`)),s=r(It());function c(e,t,n={}){return i(this,void 0,void 0,function*(){let{force:r,recursive:i,copySourceDirectory:a}=m(n),c=(yield s.exists(t))?yield s.stat(t):null;if(c&&c.isFile()&&!r)return;let l=c&&c.isDirectory()&&a?o.join(t,o.basename(e)):t;if(!(yield s.exists(e)))throw Error(`no such file or directory: ${e}`);if((yield s.stat(e)).isDirectory())if(i)yield h(e,l,0,r);else throw Error(`Failed to copy. ${e} is a directory, but tried to copy without recursive flag.`);else{if(o.relative(e,l)===``)throw Error(`'${l}' and '${e}' are the same file`);yield g(e,l,r)}})}e.cp=c;function l(e,t,n={}){return i(this,void 0,void 0,function*(){if(yield s.exists(t)){let r=!0;if((yield s.isDirectory(t))&&(t=o.join(t,o.basename(e)),r=yield s.exists(t)),r)if(n.force==null||n.force)yield u(t);else throw Error(`Destination already exists`)}yield d(o.dirname(t)),yield s.rename(e,t)})}e.mv=l;function u(e){return i(this,void 0,void 0,function*(){if(s.IS_WINDOWS&&/[*"<>|]/.test(e))throw Error('File path must not contain `*`, `"`, `<`, `>` or `|` on Windows');try{yield s.rm(e,{force:!0,maxRetries:3,recursive:!0,retryDelay:300})}catch(e){throw Error(`File was unable to be removed ${e}`)}})}e.rmRF=u;function d(e){return i(this,void 0,void 0,function*(){a.ok(e,`a path argument must be provided`),yield s.mkdir(e,{recursive:!0})})}e.mkdirP=d;function f(e,t){return i(this,void 0,void 0,function*(){if(!e)throw Error(`parameter 'tool' is required`);if(t){let t=yield f(e,!1);if(!t)throw s.IS_WINDOWS?Error(`Unable to locate executable file: ${e}. Please verify either the file path exists or the file can be found within a directory specified by the PATH environment variable. Also verify the file has a valid extension for an executable file.`):Error(`Unable to locate executable file: ${e}. Please verify either the file path exists or the file can be found within a directory specified by the PATH environment variable. Also check the file mode to verify the file is executable.`);return t}let n=yield p(e);return n&&n.length>0?n[0]:``})}e.which=f;function p(e){return i(this,void 0,void 0,function*(){if(!e)throw Error(`parameter 'tool' is required`);let t=[];if(s.IS_WINDOWS&&process.env.PATHEXT)for(let e of process.env.PATHEXT.split(o.delimiter))e&&t.push(e);if(s.isRooted(e)){let n=yield s.tryGetExecutablePath(e,t);return n?[n]:[]}if(e.includes(o.sep))return[];let n=[];if(process.env.PATH)for(let e of process.env.PATH.split(o.delimiter))e&&n.push(e);let r=[];for(let i of n){let n=yield s.tryGetExecutablePath(o.join(i,e),t);n&&r.push(n)}return r})}e.findInPath=p;function m(e){return{force:e.force==null?!0:e.force,recursive:!!e.recursive,copySourceDirectory:e.copySourceDirectory==null?!0:!!e.copySourceDirectory}}function h(e,t,n,r){return i(this,void 0,void 0,function*(){if(n>=255)return;n++,yield d(t);let i=yield s.readdir(e);for(let a of i){let i=`${e}/${a}`,o=`${t}/${a}`;(yield s.lstat(i)).isDirectory()?yield h(i,o,n,r):yield g(i,o,r)}yield s.chmod(t,(yield s.stat(e)).mode)})}function g(e,t,n){return i(this,void 0,void 0,function*(){if((yield s.lstat(e)).isSymbolicLink()){try{yield s.lstat(t),yield s.unlink(t)}catch(e){e.code===`EPERM`&&(yield s.chmod(t,`0666`),yield s.unlink(t))}let n=yield s.readlink(e);yield s.symlink(n,t,s.IS_WINDOWS?`junction`:null)}else (!(yield s.exists(t))||n)&&(yield s.copyFile(e,t))})}})),Rt=b((e=>{var t=e&&e.__createBinding||(Object.create?(function(e,t,n,r){r===void 0&&(r=n),Object.defineProperty(e,r,{enumerable:!0,get:function(){return t[n]}})}):(function(e,t,n,r){r===void 0&&(r=n),e[r]=t[n]})),n=e&&e.__setModuleDefault||(Object.create?(function(e,t){Object.defineProperty(e,`default`,{enumerable:!0,value:t})}):function(e,t){e.default=t}),r=e&&e.__importStar||function(e){if(e&&e.__esModule)return e;var r={};if(e!=null)for(var i in e)i!==`default`&&Object.hasOwnProperty.call(e,i)&&t(r,e,i);return n(r,e),r},i=e&&e.__awaiter||function(e,t,n,r){function i(e){return e instanceof n?e:new n(function(t){t(e)})}return new(n||=Promise)(function(n,a){function o(e){try{c(r.next(e))}catch(e){a(e)}}function s(e){try{c(r.throw(e))}catch(e){a(e)}}function c(e){e.done?n(e.value):i(e.value).then(o,s)}c((r=r.apply(e,t||[])).next())})};Object.defineProperty(e,`__esModule`,{value:!0}),e.argStringToArray=e.ToolRunner=void 0;let a=r(T(`os`)),o=r(T(`events`)),s=r(T(`child_process`)),c=r(T(`path`)),l=r(Lt()),u=r(It()),d=T(`timers`),f=process.platform===`win32`;e.ToolRunner=class extends o.EventEmitter{constructor(e,t,n){if(super(),!e)throw Error(`Parameter 'toolPath' cannot be null or empty.`);this.toolPath=e,this.args=t||[],this.options=n||{}}_debug(e){this.options.listeners&&this.options.listeners.debug&&this.options.listeners.debug(e)}_getCommandString(e,t){let n=this._getSpawnFileName(),r=this._getSpawnArgs(e),i=t?``:`[command]`;if(f)if(this._isCmdFile()){i+=n;for(let e of r)i+=` ${e}`}else if(e.windowsVerbatimArguments){i+=`"${n}"`;for(let e of r)i+=` ${e}`}else{i+=this._windowsQuoteCmdArg(n);for(let e of r)i+=` ${this._windowsQuoteCmdArg(e)}`}else{i+=n;for(let e of r)i+=` ${e}`}return i}_processLineBuffer(e,t,n){try{let r=t+e.toString(),i=r.indexOf(a.EOL);for(;i>-1;)n(r.substring(0,i)),r=r.substring(i+a.EOL.length),i=r.indexOf(a.EOL);return r}catch(e){return this._debug(`error processing line. Failed with error ${e}`),``}}_getSpawnFileName(){return f&&this._isCmdFile()?process.env.COMSPEC||`cmd.exe`:this.toolPath}_getSpawnArgs(e){if(f&&this._isCmdFile()){let t=`/D /S /C "${this._windowsQuoteCmdArg(this.toolPath)}`;for(let n of this.args)t+=` `,t+=e.windowsVerbatimArguments?n:this._windowsQuoteCmdArg(n);return t+=`"`,[t]}return this.args}_endsWith(e,t){return e.endsWith(t)}_isCmdFile(){let e=this.toolPath.toUpperCase();return this._endsWith(e,`.CMD`)||this._endsWith(e,`.BAT`)}_windowsQuoteCmdArg(e){if(!this._isCmdFile())return this._uvQuoteCmdArg(e);if(!e)return`""`;let t=[` `,` `,`&`,`(`,`)`,`[`,`]`,`{`,`}`,`^`,`=`,`;`,`!`,`'`,`+`,`,`,"`",`~`,`|`,`<`,`>`,`"`],n=!1;for(let r of e)if(t.some(e=>e===r)){n=!0;break}if(!n)return e;let r=`"`,i=!0;for(let t=e.length;t>0;t--)r+=e[t-1],i&&e[t-1]===`\\`?r+=`\\`:e[t-1]===`"`?(i=!0,r+=`"`):i=!1;return r+=`"`,r.split(``).reverse().join(``)}_uvQuoteCmdArg(e){if(!e)return`""`;if(!e.includes(` `)&&!e.includes(` `)&&!e.includes(`"`))return e;if(!e.includes(`"`)&&!e.includes(`\\`))return`"${e}"`;let t=`"`,n=!0;for(let r=e.length;r>0;r--)t+=e[r-1],n&&e[r-1]===`\\`?t+=`\\`:e[r-1]===`"`?(n=!0,t+=`\\`):n=!1;return t+=`"`,t.split(``).reverse().join(``)}_cloneExecOptions(e){e||={};let t={cwd:e.cwd||process.cwd(),env:e.env||process.env,silent:e.silent||!1,windowsVerbatimArguments:e.windowsVerbatimArguments||!1,failOnStdErr:e.failOnStdErr||!1,ignoreReturnCode:e.ignoreReturnCode||!1,delay:e.delay||1e4};return t.outStream=e.outStream||process.stdout,t.errStream=e.errStream||process.stderr,t}_getSpawnOptions(e,t){e||={};let n={};return n.cwd=e.cwd,n.env=e.env,n.windowsVerbatimArguments=e.windowsVerbatimArguments||this._isCmdFile(),e.windowsVerbatimArguments&&(n.argv0=`"${t}"`),n}exec(){return i(this,void 0,void 0,function*(){return!u.isRooted(this.toolPath)&&(this.toolPath.includes(`/`)||f&&this.toolPath.includes(`\\`))&&(this.toolPath=c.resolve(process.cwd(),this.options.cwd||process.cwd(),this.toolPath)),this.toolPath=yield l.which(this.toolPath,!0),new Promise((e,t)=>i(this,void 0,void 0,function*(){this._debug(`exec tool: ${this.toolPath}`),this._debug(`arguments:`);for(let e of this.args)this._debug(` ${e}`);let n=this._cloneExecOptions(this.options);!n.silent&&n.outStream&&n.outStream.write(this._getCommandString(n)+a.EOL);let r=new m(n,this.toolPath);if(r.on(`debug`,e=>{this._debug(e)}),this.options.cwd&&!(yield u.exists(this.options.cwd)))return t(Error(`The cwd: ${this.options.cwd} does not exist!`));let i=this._getSpawnFileName(),o=s.spawn(i,this._getSpawnArgs(n),this._getSpawnOptions(this.options,i)),c=``;o.stdout&&o.stdout.on(`data`,e=>{this.options.listeners&&this.options.listeners.stdout&&this.options.listeners.stdout(e),!n.silent&&n.outStream&&n.outStream.write(e),c=this._processLineBuffer(e,c,e=>{this.options.listeners&&this.options.listeners.stdline&&this.options.listeners.stdline(e)})});let l=``;if(o.stderr&&o.stderr.on(`data`,e=>{r.processStderr=!0,this.options.listeners&&this.options.listeners.stderr&&this.options.listeners.stderr(e),!n.silent&&n.errStream&&n.outStream&&(n.failOnStdErr?n.errStream:n.outStream).write(e),l=this._processLineBuffer(e,l,e=>{this.options.listeners&&this.options.listeners.errline&&this.options.listeners.errline(e)})}),o.on(`error`,e=>{r.processError=e.message,r.processExited=!0,r.processClosed=!0,r.CheckComplete()}),o.on(`exit`,e=>{r.processExitCode=e,r.processExited=!0,this._debug(`Exit code ${e} received from tool '${this.toolPath}'`),r.CheckComplete()}),o.on(`close`,e=>{r.processExitCode=e,r.processExited=!0,r.processClosed=!0,this._debug(`STDIO streams have closed for tool '${this.toolPath}'`),r.CheckComplete()}),r.on(`done`,(n,r)=>{c.length>0&&this.emit(`stdline`,c),l.length>0&&this.emit(`errline`,l),o.removeAllListeners(),n?t(n):e(r)}),this.options.input){if(!o.stdin)throw Error(`child process missing stdin`);o.stdin.end(this.options.input)}}))})}};function p(e){let t=[],n=!1,r=!1,i=``;function a(e){r&&e!==`"`&&(i+=`\\`),i+=e,r=!1}for(let o=0;o0&&(t.push(i),i=``);continue}a(s)}return i.length>0&&t.push(i.trim()),t}e.argStringToArray=p;var m=class e extends o.EventEmitter{constructor(e,t){if(super(),this.processClosed=!1,this.processError=``,this.processExitCode=0,this.processExited=!1,this.processStderr=!1,this.delay=1e4,this.done=!1,this.timeout=null,!t)throw Error(`toolPath must not be empty`);this.options=e,this.toolPath=t,e.delay&&(this.delay=e.delay)}CheckComplete(){this.done||(this.processClosed?this._setResult():this.processExited&&(this.timeout=d.setTimeout(e.HandleTimeout,this.delay,this)))}_debug(e){this.emit(`debug`,e)}_setResult(){let e;this.processExited&&(this.processError?e=Error(`There was an error when attempting to execute the process '${this.toolPath}'. This may indicate the process failed to start. Error: ${this.processError}`):this.processExitCode!==0&&!this.options.ignoreReturnCode?e=Error(`The process '${this.toolPath}' failed with exit code ${this.processExitCode}`):this.processStderr&&this.options.failOnStdErr&&(e=Error(`The process '${this.toolPath}' failed because one or more lines were written to the STDERR stream`))),this.timeout&&=(clearTimeout(this.timeout),null),this.done=!0,this.emit(`done`,e,this.processExitCode)}static HandleTimeout(e){if(!e.done){if(!e.processClosed&&e.processExited){let t=`The STDIO streams did not close within ${e.delay/1e3} seconds of the exit event from process '${e.toolPath}'. This may indicate a child process inherited the STDIO streams and has not yet exited.`;e._debug(t)}e._setResult()}}}})),zt=b((e=>{var t=e&&e.__createBinding||(Object.create?(function(e,t,n,r){r===void 0&&(r=n),Object.defineProperty(e,r,{enumerable:!0,get:function(){return t[n]}})}):(function(e,t,n,r){r===void 0&&(r=n),e[r]=t[n]})),n=e&&e.__setModuleDefault||(Object.create?(function(e,t){Object.defineProperty(e,`default`,{enumerable:!0,value:t})}):function(e,t){e.default=t}),r=e&&e.__importStar||function(e){if(e&&e.__esModule)return e;var r={};if(e!=null)for(var i in e)i!==`default`&&Object.hasOwnProperty.call(e,i)&&t(r,e,i);return n(r,e),r},i=e&&e.__awaiter||function(e,t,n,r){function i(e){return e instanceof n?e:new n(function(t){t(e)})}return new(n||=Promise)(function(n,a){function o(e){try{c(r.next(e))}catch(e){a(e)}}function s(e){try{c(r.throw(e))}catch(e){a(e)}}function c(e){e.done?n(e.value):i(e.value).then(o,s)}c((r=r.apply(e,t||[])).next())})};Object.defineProperty(e,`__esModule`,{value:!0}),e.getExecOutput=e.exec=void 0;let a=T(`string_decoder`),o=r(Rt());function s(e,t,n){return i(this,void 0,void 0,function*(){let r=o.argStringToArray(e);if(r.length===0)throw Error(`Parameter 'commandLine' cannot be null or empty.`);let i=r[0];return t=r.slice(1).concat(t||[]),new o.ToolRunner(i,t,n).exec()})}e.exec=s;function c(e,t,n){return i(this,void 0,void 0,function*(){let r=``,i=``,o=new a.StringDecoder(`utf8`),c=new a.StringDecoder(`utf8`),l=n?.listeners?.stdout,u=n?.listeners?.stderr,d=Object.assign(Object.assign({},n?.listeners),{stdout:e=>{r+=o.write(e),l&&l(e)},stderr:e=>{i+=c.write(e),u&&u(e)}}),f=yield s(e,t,Object.assign(Object.assign({},n),{listeners:d}));return r+=o.end(),i+=c.end(),{exitCode:f,stdout:r,stderr:i}})}e.getExecOutput=c})),Z=b((e=>{var t=e&&e.__createBinding||(Object.create?(function(e,t,n,r){r===void 0&&(r=n);var i=Object.getOwnPropertyDescriptor(t,n);(!i||(`get`in i?!t.__esModule:i.writable||i.configurable))&&(i={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,r,i)}):(function(e,t,n,r){r===void 0&&(r=n),e[r]=t[n]})),n=e&&e.__setModuleDefault||(Object.create?(function(e,t){Object.defineProperty(e,`default`,{enumerable:!0,value:t})}):function(e,t){e.default=t}),r=e&&e.__importStar||function(e){if(e&&e.__esModule)return e;var r={};if(e!=null)for(var i in e)i!==`default`&&Object.prototype.hasOwnProperty.call(e,i)&&t(r,e,i);return n(r,e),r},i=e&&e.__awaiter||function(e,t,n,r){function i(e){return e instanceof n?e:new n(function(t){t(e)})}return new(n||=Promise)(function(n,a){function o(e){try{c(r.next(e))}catch(e){a(e)}}function s(e){try{c(r.throw(e))}catch(e){a(e)}}function c(e){e.done?n(e.value):i(e.value).then(o,s)}c((r=r.apply(e,t||[])).next())})},a=e&&e.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(e,`__esModule`,{value:!0}),e.getDetails=e.isLinux=e.isMacOS=e.isWindows=e.arch=e.platform=void 0;let o=a(T(`os`)),s=r(zt()),c=()=>i(void 0,void 0,void 0,function*(){let{stdout:e}=yield s.getExecOutput(`powershell -command "(Get-CimInstance -ClassName Win32_OperatingSystem).Version"`,void 0,{silent:!0}),{stdout:t}=yield s.getExecOutput(`powershell -command "(Get-CimInstance -ClassName Win32_OperatingSystem).Caption"`,void 0,{silent:!0});return{name:t.trim(),version:e.trim()}}),l=()=>i(void 0,void 0,void 0,function*(){let{stdout:e}=yield s.getExecOutput(`sw_vers`,void 0,{silent:!0}),t=e.match(/ProductVersion:\s*(.+)/)?.[1]??``;return{name:e.match(/ProductName:\s*(.+)/)?.[1]??``,version:t}}),u=()=>i(void 0,void 0,void 0,function*(){let{stdout:e}=yield s.getExecOutput(`lsb_release`,[`-i`,`-r`,`-s`],{silent:!0}),[t,n]=e.trim().split(` +`);return{name:t,version:n}});e.platform=o.default.platform(),e.arch=o.default.arch(),e.isWindows=e.platform===`win32`,e.isMacOS=e.platform===`darwin`,e.isLinux=e.platform===`linux`;function d(){return i(this,void 0,void 0,function*(){return Object.assign(Object.assign({},yield e.isWindows?c():e.isMacOS?l():u()),{platform:e.platform,arch:e.arch,isWindows:e.isWindows,isMacOS:e.isMacOS,isLinux:e.isLinux})})}e.getDetails=d})),Bt=b((e=>{var t=e&&e.__createBinding||(Object.create?(function(e,t,n,r){r===void 0&&(r=n);var i=Object.getOwnPropertyDescriptor(t,n);(!i||(`get`in i?!t.__esModule:i.writable||i.configurable))&&(i={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,r,i)}):(function(e,t,n,r){r===void 0&&(r=n),e[r]=t[n]})),n=e&&e.__setModuleDefault||(Object.create?(function(e,t){Object.defineProperty(e,`default`,{enumerable:!0,value:t})}):function(e,t){e.default=t}),r=e&&e.__importStar||function(e){if(e&&e.__esModule)return e;var r={};if(e!=null)for(var i in e)i!==`default`&&Object.prototype.hasOwnProperty.call(e,i)&&t(r,e,i);return n(r,e),r},i=e&&e.__awaiter||function(e,t,n,r){function i(e){return e instanceof n?e:new n(function(t){t(e)})}return new(n||=Promise)(function(n,a){function o(e){try{c(r.next(e))}catch(e){a(e)}}function s(e){try{c(r.throw(e))}catch(e){a(e)}}function c(e){e.done?n(e.value):i(e.value).then(o,s)}c((r=r.apply(e,t||[])).next())})};Object.defineProperty(e,`__esModule`,{value:!0}),e.platform=e.toPlatformPath=e.toWin32Path=e.toPosixPath=e.markdownSummary=e.summary=e.getIDToken=e.getState=e.saveState=e.group=e.endGroup=e.startGroup=e.info=e.notice=e.warning=e.error=e.debug=e.isDebug=e.setFailed=e.setCommandEcho=e.setOutput=e.getBooleanInput=e.getMultilineInput=e.getInput=e.addPath=e.setSecret=e.exportVariable=e.ExitCode=void 0;let a=D(),o=O(),s=E(),c=r(T(`os`)),l=r(T(`path`)),u=Nt();var d;(function(e){e[e.Success=0]=`Success`,e[e.Failure=1]=`Failure`})(d||(e.ExitCode=d={}));function f(e,t){let n=(0,s.toCommandValue)(t);if(process.env[e]=n,process.env.GITHUB_ENV)return(0,o.issueFileCommand)(`ENV`,(0,o.prepareKeyValueMessage)(e,t));(0,a.issueCommand)(`set-env`,{name:e},n)}e.exportVariable=f;function p(e){(0,a.issueCommand)(`add-mask`,{},e)}e.setSecret=p;function m(e){process.env.GITHUB_PATH?(0,o.issueFileCommand)(`PATH`,e):(0,a.issueCommand)(`add-path`,{},e),process.env.PATH=`${e}${l.delimiter}${process.env.PATH}`}e.addPath=m;function h(e,t){let n=process.env[`INPUT_${e.replace(/ /g,`_`).toUpperCase()}`]||``;if(t&&t.required&&!n)throw Error(`Input required and not supplied: ${e}`);return t&&t.trimWhitespace===!1?n:n.trim()}e.getInput=h;function g(e,t){let n=h(e,t).split(` +`).filter(e=>e!==``);return t&&t.trimWhitespace===!1?n:n.map(e=>e.trim())}e.getMultilineInput=g;function _(e,t){let n=[`true`,`True`,`TRUE`],r=[`false`,`False`,`FALSE`],i=h(e,t);if(n.includes(i))return!0;if(r.includes(i))return!1;throw TypeError(`Input does not meet YAML 1.2 "Core Schema" specification: ${e}\nSupport boolean input list: \`true | True | TRUE | false | False | FALSE\``)}e.getBooleanInput=_;function v(e,t){if(process.env.GITHUB_OUTPUT)return(0,o.issueFileCommand)(`OUTPUT`,(0,o.prepareKeyValueMessage)(e,t));process.stdout.write(c.EOL),(0,a.issueCommand)(`set-output`,{name:e},(0,s.toCommandValue)(t))}e.setOutput=v;function y(e){(0,a.issue)(`echo`,e?`on`:`off`)}e.setCommandEcho=y;function b(e){process.exitCode=d.Failure,C(e)}e.setFailed=b;function x(){return process.env.RUNNER_DEBUG===`1`}e.isDebug=x;function S(e){(0,a.issueCommand)(`debug`,{},e)}e.debug=S;function C(e,t={}){(0,a.issueCommand)(`error`,(0,s.toCommandProperties)(t),e instanceof Error?e.toString():e)}e.error=C;function w(e,t={}){(0,a.issueCommand)(`warning`,(0,s.toCommandProperties)(t),e instanceof Error?e.toString():e)}e.warning=w;function k(e,t={}){(0,a.issueCommand)(`notice`,(0,s.toCommandProperties)(t),e instanceof Error?e.toString():e)}e.notice=k;function A(e){process.stdout.write(e+c.EOL)}e.info=A;function j(e){(0,a.issue)(`group`,e)}e.startGroup=j;function M(){(0,a.issue)(`endgroup`)}e.endGroup=M;function N(e,t){return i(this,void 0,void 0,function*(){j(e);let n;try{n=yield t()}finally{M()}return n})}e.group=N;function ee(e,t){if(process.env.GITHUB_STATE)return(0,o.issueFileCommand)(`STATE`,(0,o.prepareKeyValueMessage)(e,t));(0,a.issueCommand)(`save-state`,{name:e},(0,s.toCommandValue)(t))}e.saveState=ee;function P(e){return process.env[`STATE_${e}`]||``}e.getState=P;function F(e){return i(this,void 0,void 0,function*(){return yield u.OidcClient.getIDToken(e)})}e.getIDToken=F;var I=Pt();Object.defineProperty(e,`summary`,{enumerable:!0,get:function(){return I.summary}});var L=Pt();Object.defineProperty(e,`markdownSummary`,{enumerable:!0,get:function(){return L.markdownSummary}});var R=Ft();Object.defineProperty(e,`toPosixPath`,{enumerable:!0,get:function(){return R.toPosixPath}}),Object.defineProperty(e,`toWin32Path`,{enumerable:!0,get:function(){return R.toWin32Path}}),Object.defineProperty(e,`toPlatformPath`,{enumerable:!0,get:function(){return R.toPlatformPath}}),e.platform=r(Z())})),Q=b((e=>{let t=Symbol.for(`yaml.alias`),n=Symbol.for(`yaml.document`),r=Symbol.for(`yaml.map`),i=Symbol.for(`yaml.pair`),a=Symbol.for(`yaml.scalar`),o=Symbol.for(`yaml.seq`),s=Symbol.for(`yaml.node.type`),c=e=>!!e&&typeof e==`object`&&e[s]===t,l=e=>!!e&&typeof e==`object`&&e[s]===n,u=e=>!!e&&typeof e==`object`&&e[s]===r,d=e=>!!e&&typeof e==`object`&&e[s]===i,f=e=>!!e&&typeof e==`object`&&e[s]===a,p=e=>!!e&&typeof e==`object`&&e[s]===o;function m(e){if(e&&typeof e==`object`)switch(e[s]){case r:case o:return!0}return!1}function h(e){if(e&&typeof e==`object`)switch(e[s]){case t:case r:case a:case o:return!0}return!1}e.ALIAS=t,e.DOC=n,e.MAP=r,e.NODE_TYPE=s,e.PAIR=i,e.SCALAR=a,e.SEQ=o,e.hasAnchor=e=>(f(e)||m(e))&&!!e.anchor,e.isAlias=c,e.isCollection=m,e.isDocument=l,e.isMap=u,e.isNode=h,e.isPair=d,e.isScalar=f,e.isSeq=p})),Vt=b((e=>{var t=Q();let n=Symbol(`break visit`),r=Symbol(`skip children`),i=Symbol(`remove node`);function a(e,n){let r=l(n);t.isDocument(e)?o(null,e.contents,r,Object.freeze([e]))===i&&(e.contents=null):o(null,e,r,Object.freeze([]))}a.BREAK=n,a.SKIP=r,a.REMOVE=i;function o(e,r,a,s){let c=u(e,r,a,s);if(t.isNode(c)||t.isPair(c))return d(e,s,c),o(e,c,a,s);if(typeof c!=`symbol`){if(t.isCollection(r)){s=Object.freeze(s.concat(r));for(let e=0;e{var t=Q(),n=Vt();let r={"!":`%21`,",":`%2C`,"[":`%5B`,"]":`%5D`,"{":`%7B`,"}":`%7D`},i=e=>e.replace(/[!,[\]{}]/g,e=>r[e]);var a=class e{constructor(t,n){this.docStart=null,this.docEnd=!1,this.yaml=Object.assign({},e.defaultYaml,t),this.tags=Object.assign({},e.defaultTags,n)}clone(){let t=new e(this.yaml,this.tags);return t.docStart=this.docStart,t}atDocument(){let t=new e(this.yaml,this.tags);switch(this.yaml.version){case`1.1`:this.atNextDocument=!0;break;case`1.2`:this.atNextDocument=!1,this.yaml={explicit:e.defaultYaml.explicit,version:`1.2`},this.tags=Object.assign({},e.defaultTags);break}return t}add(t,n){this.atNextDocument&&=(this.yaml={explicit:e.defaultYaml.explicit,version:`1.1`},this.tags=Object.assign({},e.defaultTags),!1);let r=t.trim().split(/[ \t]+/),i=r.shift();switch(i){case`%TAG`:{if(r.length!==2&&(n(0,`%TAG directive should contain exactly two parts`),r.length<2))return!1;let[e,t]=r;return this.tags[e]=t,!0}case`%YAML`:{if(this.yaml.explicit=!0,r.length!==1)return n(0,`%YAML directive should contain exactly one part`),!1;let[e]=r;if(e===`1.1`||e===`1.2`)return this.yaml.version=e,!0;{let t=/^\d+\.\d+$/.test(e);return n(6,`Unsupported YAML version ${e}`,t),!1}}default:return n(0,`Unknown directive ${i}`,!0),!1}}tagName(e,t){if(e===`!`)return`!`;if(e[0]!==`!`)return t(`Not a valid tag: ${e}`),null;if(e[1]===`<`){let n=e.slice(2,-1);return n===`!`||n===`!!`?(t(`Verbatim tags aren't resolved, so ${e} is invalid.`),null):(e[e.length-1]!==`>`&&t(`Verbatim tags must end with a >`),n)}let[,n,r]=e.match(/^(.*!)([^!]*)$/s);r||t(`The ${e} tag has no suffix`);let i=this.tags[n];if(i)try{return i+decodeURIComponent(r)}catch(e){return t(String(e)),null}return n===`!`?e:(t(`Could not resolve tag: ${e}`),null)}tagString(e){for(let[t,n]of Object.entries(this.tags))if(e.startsWith(n))return t+i(e.substring(n.length));return e[0]===`!`?e:`!<${e}>`}toString(e){let r=this.yaml.explicit?[`%YAML ${this.yaml.version||`1.2`}`]:[],i=Object.entries(this.tags),a;if(e&&i.length>0&&t.isNode(e.contents)){let r={};n.visit(e.contents,(e,n)=>{t.isNode(n)&&n.tag&&(r[n.tag]=!0)}),a=Object.keys(r)}else a=[];for(let[t,n]of i)t===`!!`&&n===`tag:yaml.org,2002:`||(!e||a.some(e=>e.startsWith(n)))&&r.push(`%TAG ${t} ${n}`);return r.join(` +`)}};a.defaultYaml={explicit:!1,version:`1.2`},a.defaultTags={"!!":`tag:yaml.org,2002:`},e.Directives=a})),Ut=b((e=>{var t=Q(),n=Vt();function r(e){if(/[\x00-\x19\s,[\]{}]/.test(e)){let t=`Anchor must not contain whitespace or control characters: ${JSON.stringify(e)}`;throw Error(t)}return!0}function i(e){let t=new Set;return n.visit(e,{Value(e,n){n.anchor&&t.add(n.anchor)}}),t}function a(e,t){for(let n=1;;++n){let r=`${e}${n}`;if(!t.has(r))return r}}function o(e,n){let r=[],o=new Map,s=null;return{onAnchor:t=>{r.push(t),s??=i(e);let o=a(n,s);return s.add(o),o},setAnchors:()=>{for(let e of r){let n=o.get(e);if(typeof n==`object`&&n.anchor&&(t.isScalar(n.node)||t.isCollection(n.node)))n.node.anchor=n.anchor;else{let t=Error(`Failed to resolve repeated object (this should not happen)`);throw t.source=e,t}}},sourceObjects:o}}e.anchorIsValid=r,e.anchorNames=i,e.createNodeAnchors=o,e.findNewAnchor=a})),Wt=b((e=>{function t(e,n,r,i){if(i&&typeof i==`object`)if(Array.isArray(i))for(let n=0,r=i.length;n{var t=Q();function n(e,r,i){if(Array.isArray(e))return e.map((e,t)=>n(e,String(t),i));if(e&&typeof e.toJSON==`function`){if(!i||!t.hasAnchor(e))return e.toJSON(r,i);let n={aliasCount:0,count:1,res:void 0};i.anchors.set(e,n),i.onCreate=e=>{n.res=e,delete i.onCreate};let a=e.toJSON(r,i);return i.onCreate&&i.onCreate(a),a}return typeof e==`bigint`&&!i?.keep?Number(e):e}e.toJS=n})),Kt=b((e=>{var t=Wt(),n=Q(),r=Gt();e.NodeBase=class{constructor(e){Object.defineProperty(this,n.NODE_TYPE,{value:e})}clone(){let e=Object.create(Object.getPrototypeOf(this),Object.getOwnPropertyDescriptors(this));return this.range&&(e.range=this.range.slice()),e}toJS(e,{mapAsMap:i,maxAliasCount:a,onAnchor:o,reviver:s}={}){if(!n.isDocument(e))throw TypeError(`A document argument is required`);let c={anchors:new Map,doc:e,keep:!0,mapAsMap:i===!0,mapKeyWarned:!1,maxAliasCount:typeof a==`number`?a:100},l=r.toJS(this,``,c);if(typeof o==`function`)for(let{count:e,res:t}of c.anchors.values())o(t,e);return typeof s==`function`?t.applyReviver(s,{"":l},``,l):l}}})),qt=b((e=>{var t=Ut(),n=Vt(),r=Q(),i=Kt(),a=Gt(),o=class extends i.NodeBase{constructor(e){super(r.ALIAS),this.source=e,Object.defineProperty(this,`tag`,{set(){throw Error(`Alias nodes cannot have tags`)}})}resolve(e,t){let i;t?.aliasResolveCache?i=t.aliasResolveCache:(i=[],n.visit(e,{Node:(e,t)=>{(r.isAlias(t)||r.hasAnchor(t))&&i.push(t)}}),t&&(t.aliasResolveCache=i));let a;for(let e of i){if(e===this)break;e.anchor===this.source&&(a=e)}return a}toJSON(e,t){if(!t)return{source:this.source};let{anchors:n,doc:r,maxAliasCount:i}=t,o=this.resolve(r,t);if(!o){let e=`Unresolved alias (the anchor must be set before the alias): ${this.source}`;throw ReferenceError(e)}let c=n.get(o);if(c||=(a.toJS(o,null,t),n.get(o)),!c||c.res===void 0)throw ReferenceError(`This should not happen: Alias anchor was not resolved?`);if(i>=0&&(c.count+=1,c.aliasCount===0&&(c.aliasCount=s(r,o,n)),c.count*c.aliasCount>i))throw ReferenceError(`Excessive alias count indicates a resource exhaustion attack`);return c.res}toString(e,n,r){let i=`*${this.source}`;if(e){if(t.anchorIsValid(this.source),e.options.verifyAliasOrder&&!e.anchors.has(this.source)){let e=`Unresolved alias (the anchor must be set before the alias): ${this.source}`;throw Error(e)}if(e.implicitKey)return`${i} `}return i}};function s(e,t,n){if(r.isAlias(t)){let r=t.resolve(e),i=n&&r&&n.get(r);return i?i.count*i.aliasCount:0}else if(r.isCollection(t)){let r=0;for(let i of t.items){let t=s(e,i,n);t>r&&(r=t)}return r}else if(r.isPair(t)){let r=s(e,t.key,n),i=s(e,t.value,n);return Math.max(r,i)}return 1}e.Alias=o})),Jt=b((e=>{var t=Q(),n=Kt(),r=Gt();let i=e=>!e||typeof e!=`function`&&typeof e!=`object`;var a=class extends n.NodeBase{constructor(e){super(t.SCALAR),this.value=e}toJSON(e,t){return t?.keep?this.value:r.toJS(this.value,e,t)}toString(){return String(this.value)}};a.BLOCK_FOLDED=`BLOCK_FOLDED`,a.BLOCK_LITERAL=`BLOCK_LITERAL`,a.PLAIN=`PLAIN`,a.QUOTE_DOUBLE=`QUOTE_DOUBLE`,a.QUOTE_SINGLE=`QUOTE_SINGLE`,e.Scalar=a,e.isScalarValue=i})),Yt=b((e=>{var t=qt(),n=Q(),r=Jt();function i(e,t,n){if(t){let e=n.filter(e=>e.tag===t),r=e.find(e=>!e.format)??e[0];if(!r)throw Error(`Tag ${t} not found`);return r}return n.find(t=>t.identify?.(e)&&!t.format)}function a(e,a,o){if(n.isDocument(e)&&(e=e.contents),n.isNode(e))return e;if(n.isPair(e)){let t=o.schema[n.MAP].createNode?.(o.schema,null,o);return t.items.push(e),t}(e instanceof String||e instanceof Number||e instanceof Boolean||typeof BigInt<`u`&&e instanceof BigInt)&&(e=e.valueOf());let{aliasDuplicateObjects:s,onAnchor:c,onTagObj:l,schema:u,sourceObjects:d}=o,f;if(s&&e&&typeof e==`object`){if(f=d.get(e),f)return f.anchor??=c(e),new t.Alias(f.anchor);f={anchor:null,node:null},d.set(e,f)}a?.startsWith(`!!`)&&(a=`tag:yaml.org,2002:`+a.slice(2));let p=i(e,a,u.tags);if(!p){if(e&&typeof e.toJSON==`function`&&(e=e.toJSON()),!e||typeof e!=`object`){let t=new r.Scalar(e);return f&&(f.node=t),t}p=e instanceof Map?u[n.MAP]:Symbol.iterator in Object(e)?u[n.SEQ]:u[n.MAP]}l&&(l(p),delete o.onTagObj);let m=p?.createNode?p.createNode(o.schema,e,o):typeof p?.nodeClass?.from==`function`?p.nodeClass.from(o.schema,e,o):new r.Scalar(e);return a?m.tag=a:p.default||(m.tag=p.tag),f&&(f.node=m),m}e.createNode=a})),Xt=b((e=>{var t=Yt(),n=Q(),r=Kt();function i(e,n,r){let i=r;for(let e=n.length-1;e>=0;--e){let t=n[e];if(typeof t==`number`&&Number.isInteger(t)&&t>=0){let e=[];e[t]=i,i=e}else i=new Map([[t,i]])}return t.createNode(i,void 0,{aliasDuplicateObjects:!1,keepUndefined:!1,onAnchor:()=>{throw Error(`This should not happen, please report a bug.`)},schema:e,sourceObjects:new Map})}let a=e=>e==null||typeof e==`object`&&!!e[Symbol.iterator]().next().done;e.Collection=class extends r.NodeBase{constructor(e,t){super(e),Object.defineProperty(this,`schema`,{value:t,configurable:!0,enumerable:!1,writable:!0})}clone(e){let t=Object.create(Object.getPrototypeOf(this),Object.getOwnPropertyDescriptors(this));return e&&(t.schema=e),t.items=t.items.map(t=>n.isNode(t)||n.isPair(t)?t.clone(e):t),this.range&&(t.range=this.range.slice()),t}addIn(e,t){if(a(e))this.add(t);else{let[r,...a]=e,o=this.get(r,!0);if(n.isCollection(o))o.addIn(a,t);else if(o===void 0&&this.schema)this.set(r,i(this.schema,a,t));else throw Error(`Expected YAML collection at ${r}. Remaining path: ${a}`)}}deleteIn(e){let[t,...r]=e;if(r.length===0)return this.delete(t);let i=this.get(t,!0);if(n.isCollection(i))return i.deleteIn(r);throw Error(`Expected YAML collection at ${t}. Remaining path: ${r}`)}getIn(e,t){let[r,...i]=e,a=this.get(r,!0);return i.length===0?!t&&n.isScalar(a)?a.value:a:n.isCollection(a)?a.getIn(i,t):void 0}hasAllNullValues(e){return this.items.every(t=>{if(!n.isPair(t))return!1;let r=t.value;return r==null||e&&n.isScalar(r)&&r.value==null&&!r.commentBefore&&!r.comment&&!r.tag})}hasIn(e){let[t,...r]=e;if(r.length===0)return this.has(t);let i=this.get(t,!0);return n.isCollection(i)?i.hasIn(r):!1}setIn(e,t){let[r,...a]=e;if(a.length===0)this.set(r,t);else{let e=this.get(r,!0);if(n.isCollection(e))e.setIn(a,t);else if(e===void 0&&this.schema)this.set(r,i(this.schema,a,t));else throw Error(`Expected YAML collection at ${r}. Remaining path: ${a}`)}}},e.collectionFromPath=i,e.isEmptyPath=a})),Zt=b((e=>{let t=e=>e.replace(/^(?!$)(?: $)?/gm,`#`);function n(e,t){return/^\n+$/.test(e)?e.substring(1):t?e.replace(/^(?! *$)/gm,t):e}e.indentComment=n,e.lineComment=(e,t,r)=>e.endsWith(` +`)?n(r,t):r.includes(` +`)?` +`+n(r,t):(e.endsWith(` `)?``:` `)+r,e.stringifyComment=t})),Qt=b((e=>{let t=`block`,n=`quoted`;function r(e,r,a=`flow`,{indentAtStart:o,lineWidth:s=80,minContentWidth:c=20,onFold:l,onOverflow:u}={}){if(!s||s<0)return e;ss-Math.max(2,c)?f.push(0):m=s-o);let h,g,_=!1,v=-1,y=-1,b=-1;a===t&&(v=i(e,v,r.length),v!==-1&&(m=v+d));for(let o;o=e[v+=1];){if(a===n&&o===`\\`){switch(y=v,e[v+1]){case`x`:v+=3;break;case`u`:v+=5;break;case`U`:v+=9;break;default:v+=1}b=v}if(o===` +`)a===t&&(v=i(e,v,r.length)),m=v+r.length+d,h=void 0;else{if(o===` `&&g&&g!==` `&&g!==` +`&&g!==` `){let t=e[v+1];t&&t!==` `&&t!==` +`&&t!==` `&&(h=v)}if(v>=m)if(h)f.push(h),m=h+d,h=void 0;else if(a===n){for(;g===` `||g===` `;)g=o,o=e[v+=1],_=!0;let t=v>b+1?v-2:y-1;if(p[t])return e;f.push(t),p[t]=!0,m=t+d,h=void 0}else _=!0}g=o}if(_&&u&&u(),f.length===0)return e;l&&l();let x=e.slice(0,f[0]);for(let t=0;t{var t=Jt(),n=Qt();let r=(e,t)=>({indentAtStart:t?e.indent.length:e.indentAtStart,lineWidth:e.options.lineWidth,minContentWidth:e.options.minContentWidth}),i=e=>/^(%|---|\.\.\.)/m.test(e);function a(e,t,n){if(!t||t<0)return!1;let r=t-n,i=e.length;if(i<=r)return!1;for(let t=0,n=0;tr)return!0;if(n=t+1,i-n<=r)return!1}return!0}function o(e,t){let a=JSON.stringify(e);if(t.options.doubleQuotedAsJSON)return a;let{implicitKey:o}=t,s=t.options.doubleQuotedMinMultiLineLength,c=t.indent||(i(e)?` `:``),l=``,u=0;for(let e=0,t=a[e];t;t=a[++e])if(t===` `&&a[e+1]===`\\`&&a[e+2]===`n`&&(l+=a.slice(u,e)+`\\ `,e+=1,u=e,t=`\\`),t===`\\`)switch(a[e+1]){case`u`:{l+=a.slice(u,e);let t=a.substr(e+2,4);switch(t){case`0000`:l+=`\\0`;break;case`0007`:l+=`\\a`;break;case`000b`:l+=`\\v`;break;case`001b`:l+=`\\e`;break;case`0085`:l+=`\\N`;break;case`00a0`:l+=`\\_`;break;case`2028`:l+=`\\L`;break;case`2029`:l+=`\\P`;break;default:t.substr(0,2)===`00`?l+=`\\x`+t.substr(2):l+=a.substr(e,6)}e+=5,u=e+1}break;case`n`:if(o||a[e+2]===`"`||a.length +`;let v,y;for(y=s.length;y>0;--y){let e=s[y-1];if(e!==` +`&&e!==` `&&e!==` `)break}let b=s.substring(y),x=b.indexOf(` +`);x===-1?v=`-`:s===b||x!==b.length-1?(v=`+`,f&&f()):v=``,b&&=(s=s.slice(0,-b.length),b[b.length-1]===` +`&&(b=b.slice(0,-1)),b.replace(l,`$&${g}`));let S=!1,C,w=-1;for(C=0;C{i=!0});let c=n.foldFlowLines(`${T}${e}${b}`,g,n.FOLD_BLOCK,a);if(!i)return`>${E}\n${g}${c}`}return s=s.replace(/\n+/g,`$&${g}`),`|${E}\n${g}${T}${s}${b}`}function d(e,a,o,s){let{type:l,value:d}=e,{actualString:f,implicitKey:p,indent:m,indentStep:h,inFlow:g}=a;if(p&&d.includes(` +`)||g&&/[[\]{},]/.test(d))return c(d,a);if(/^[\n\t ,[\]{}#&*!|>'"%@`]|^[?-]$|^[?-][ \t]|[\n:][ \t]|[ \t]\n|[\n\t ]#|[\n\t :]$/.test(d))return p||g||!d.includes(` +`)?c(d,a):u(e,a,o,s);if(!p&&!g&&l!==t.Scalar.PLAIN&&d.includes(` +`))return u(e,a,o,s);if(i(d)){if(m===``)return a.forceBlockIndent=!0,u(e,a,o,s);if(p&&m===h)return c(d,a)}let _=d.replace(/\n+/g,`$&\n${m}`);if(f){let e=e=>e.default&&e.tag!==`tag:yaml.org,2002:str`&&e.test?.test(_),{compat:t,tags:n}=a.doc.schema;if(n.some(e)||t?.some(e))return c(d,a)}return p?_:n.foldFlowLines(_,m,n.FOLD_FLOW,r(a,!1))}function f(e,n,r,i){let{implicitKey:a,inFlow:l}=n,f=typeof e.value==`string`?e:Object.assign({},e,{value:String(e.value)}),{type:p}=e;p!==t.Scalar.QUOTE_DOUBLE&&/[\x00-\x08\x0b-\x1f\x7f-\x9f\u{D800}-\u{DFFF}]/u.test(f.value)&&(p=t.Scalar.QUOTE_DOUBLE);let m=e=>{switch(e){case t.Scalar.BLOCK_FOLDED:case t.Scalar.BLOCK_LITERAL:return a||l?c(f.value,n):u(f,n,r,i);case t.Scalar.QUOTE_DOUBLE:return o(f.value,n);case t.Scalar.QUOTE_SINGLE:return s(f.value,n);case t.Scalar.PLAIN:return d(f,n,r,i);default:return null}},h=m(p);if(h===null){let{defaultKeyType:e,defaultStringType:t}=n.options,r=a&&e||t;if(h=m(r),h===null)throw Error(`Unsupported default string type ${r}`)}return h}e.stringifyString=f})),en=b((e=>{var t=Ut(),n=Q(),r=Zt(),i=$t();function a(e,t){let n=Object.assign({blockQuote:!0,commentString:r.stringifyComment,defaultKeyType:null,defaultStringType:`PLAIN`,directives:null,doubleQuotedAsJSON:!1,doubleQuotedMinMultiLineLength:40,falseStr:`false`,flowCollectionPadding:!0,indentSeq:!0,lineWidth:80,minContentWidth:20,nullStr:`null`,simpleKeys:!1,singleQuote:null,trueStr:`true`,verifyAliasOrder:!0},e.schema.toStringOptions,t),i;switch(n.collectionStyle){case`block`:i=!1;break;case`flow`:i=!0;break;default:i=null}return{anchors:new Set,doc:e,flowCollectionPadding:n.flowCollectionPadding?` `:``,indent:``,indentStep:typeof n.indent==`number`?` `.repeat(n.indent):` `,inFlow:i,options:n}}function o(e,t){if(t.tag){let n=e.filter(e=>e.tag===t.tag);if(n.length>0)return n.find(e=>e.format===t.format)??n[0]}let r,i;if(n.isScalar(t)){i=t.value;let n=e.filter(e=>e.identify?.(i));if(n.length>1){let e=n.filter(e=>e.test);e.length>0&&(n=e)}r=n.find(e=>e.format===t.format)??n.find(e=>!e.format)}else i=t,r=e.find(e=>e.nodeClass&&i instanceof e.nodeClass);if(!r){let e=i?.constructor?.name??(i===null?`null`:typeof i);throw Error(`Tag not resolved for ${e} value`)}return r}function s(e,r,{anchors:i,doc:a}){if(!a.directives)return``;let o=[],s=(n.isScalar(e)||n.isCollection(e))&&e.anchor;s&&t.anchorIsValid(s)&&(i.add(s),o.push(`&${s}`));let c=e.tag??(r.default?null:r.tag);return c&&o.push(a.directives.tagString(c)),o.join(` `)}function c(e,t,r,a){if(n.isPair(e))return e.toString(t,r,a);if(n.isAlias(e)){if(t.doc.directives)return e.toString(t);if(t.resolvedAliases?.has(e))throw TypeError(`Cannot stringify circular structure without alias nodes`);t.resolvedAliases?t.resolvedAliases.add(e):t.resolvedAliases=new Set([e]),e=e.resolve(t.doc)}let c,l=n.isNode(e)?e:t.doc.createNode(e,{onTagObj:e=>c=e});c??=o(t.doc.schema.tags,l);let u=s(l,c,t);u.length>0&&(t.indentAtStart=(t.indentAtStart??0)+u.length+1);let d=typeof c.stringify==`function`?c.stringify(l,t,r,a):n.isScalar(l)?i.stringifyString(l,t,r,a):l.toString(t,r,a);return u?n.isScalar(l)||d[0]===`{`||d[0]===`[`?`${u} ${d}`:`${u}\n${t.indent}${d}`:d}e.createStringifyContext=a,e.stringify=c})),tn=b((e=>{var t=Q(),n=Jt(),r=en(),i=Zt();function a({key:e,value:a},o,s,c){let{allNullValues:l,doc:u,indent:d,indentStep:f,options:{commentString:p,indentSeq:m,simpleKeys:h}}=o,g=t.isNode(e)&&e.comment||null;if(h){if(g)throw Error(`With simple keys, key nodes cannot have comments`);if(t.isCollection(e)||!t.isNode(e)&&typeof e==`object`)throw Error(`With simple keys, collection cannot be used as a key value`)}let _=!h&&(!e||g&&a==null&&!o.inFlow||t.isCollection(e)||(t.isScalar(e)?e.type===n.Scalar.BLOCK_FOLDED||e.type===n.Scalar.BLOCK_LITERAL:typeof e==`object`));o=Object.assign({},o,{allNullValues:!1,implicitKey:!_&&(h||!l),indent:d+f});let v=!1,y=!1,b=r.stringify(e,o,()=>v=!0,()=>y=!0);if(!_&&!o.inFlow&&b.length>1024){if(h)throw Error(`With simple keys, single line scalar must not span more than 1024 characters`);_=!0}if(o.inFlow){if(l||a==null)return v&&s&&s(),b===``?`?`:_?`? ${b}`:b}else if(l&&!h||a==null&&_)return b=`? ${b}`,g&&!v?b+=i.lineComment(b,o.indent,p(g)):y&&c&&c(),b;v&&(g=null),_?(g&&(b+=i.lineComment(b,o.indent,p(g))),b=`? ${b}\n${d}:`):(b=`${b}:`,g&&(b+=i.lineComment(b,o.indent,p(g))));let x,S,C;t.isNode(a)?(x=!!a.spaceBefore,S=a.commentBefore,C=a.comment):(x=!1,S=null,C=null,a&&typeof a==`object`&&(a=u.createNode(a))),o.implicitKey=!1,!_&&!g&&t.isScalar(a)&&(o.indentAtStart=b.length+1),y=!1,!m&&f.length>=2&&!o.inFlow&&!_&&t.isSeq(a)&&!a.flow&&!a.tag&&!a.anchor&&(o.indent=o.indent.substring(2));let w=!1,T=r.stringify(a,o,()=>w=!0,()=>y=!0),E=` `;if(g||x||S){if(E=x?` +`:``,S){let e=p(S);E+=`\n${i.indentComment(e,o.indent)}`}T===``&&!o.inFlow?E===` +`&&(E=` + +`):E+=`\n${o.indent}`}else if(!_&&t.isCollection(a)){let e=T[0],t=T.indexOf(` +`),n=t!==-1,r=o.inFlow??a.flow??a.items.length===0;if(n||!r){let r=!1;if(n&&(e===`&`||e===`!`)){let n=T.indexOf(` `);e===`&`&&n!==-1&&n{var t=T(`process`);function n(e,...t){e===`debug`&&console.log(...t)}function r(e,n){(e===`debug`||e===`warn`)&&(typeof t.emitWarning==`function`?t.emitWarning(n):console.warn(n))}e.debug=n,e.warn=r})),nn=b((e=>{var t=Q(),n=Jt();let r={identify:e=>e===`<<`||typeof e==`symbol`&&e.description===`<<`,default:`key`,tag:`tag:yaml.org,2002:merge`,test:/^<<$/,resolve:()=>Object.assign(new n.Scalar(Symbol(`<<`)),{addToJSMap:a}),stringify:()=>`<<`},i=(e,i)=>(r.identify(i)||t.isScalar(i)&&(!i.type||i.type===n.Scalar.PLAIN)&&r.identify(i.value))&&e?.doc.schema.tags.some(e=>e.tag===r.tag&&e.default);function a(e,n,r){if(r=e&&t.isAlias(r)?r.resolve(e.doc):r,t.isSeq(r))for(let t of r.items)o(e,n,t);else if(Array.isArray(r))for(let t of r)o(e,n,t);else o(e,n,r)}function o(e,n,r){let i=e&&t.isAlias(r)?r.resolve(e.doc):r;if(!t.isMap(i))throw Error(`Merge sources must be maps or map aliases`);let a=i.toJSON(null,e,Map);for(let[e,t]of a)n instanceof Map?n.has(e)||n.set(e,t):n instanceof Set?n.add(e):Object.prototype.hasOwnProperty.call(n,e)||Object.defineProperty(n,e,{value:t,writable:!0,enumerable:!0,configurable:!0});return n}e.addMergeToJSMap=a,e.isMergeKey=i,e.merge=r})),rn=b((e=>{var t=$(),n=nn(),r=en(),i=Q(),a=Gt();function o(e,t,{key:r,value:o}){if(i.isNode(r)&&r.addToJSMap)r.addToJSMap(e,t,o);else if(n.isMergeKey(e,r))n.addMergeToJSMap(e,t,o);else{let n=a.toJS(r,``,e);if(t instanceof Map)t.set(n,a.toJS(o,n,e));else if(t instanceof Set)t.add(n);else{let i=s(r,n,e),c=a.toJS(o,i,e);i in t?Object.defineProperty(t,i,{value:c,writable:!0,enumerable:!0,configurable:!0}):t[i]=c}}return t}function s(e,n,a){if(n===null)return``;if(typeof n!=`object`)return String(n);if(i.isNode(e)&&a?.doc){let n=r.createStringifyContext(a.doc,{});n.anchors=new Set;for(let e of a.anchors.keys())n.anchors.add(e.anchor);n.inFlow=!0,n.inStringifyKey=!0;let i=e.toString(n);if(!a.mapKeyWarned){let e=JSON.stringify(i);e.length>40&&(e=e.substring(0,36)+`..."`),t.warn(a.doc.options.logLevel,`Keys with collection values will be stringified due to JS Object restrictions: ${e}. Set mapAsMap: true to use object keys.`),a.mapKeyWarned=!0}return i}return JSON.stringify(n)}e.addPairToJSMap=o})),an=b((e=>{var t=Yt(),n=tn(),r=rn(),i=Q();function a(e,n,r){return new o(t.createNode(e,void 0,r),t.createNode(n,void 0,r))}var o=class e{constructor(e,t=null){Object.defineProperty(this,i.NODE_TYPE,{value:i.PAIR}),this.key=e,this.value=t}clone(t){let{key:n,value:r}=this;return i.isNode(n)&&(n=n.clone(t)),i.isNode(r)&&(r=r.clone(t)),new e(n,r)}toJSON(e,t){let n=t?.mapAsMap?new Map:{};return r.addPairToJSMap(t,n,this)}toString(e,t,r){return e?.doc?n.stringifyPair(this,e,t,r):JSON.stringify(this)}};e.Pair=o,e.createPair=a})),on=b((e=>{var t=Q(),n=en(),r=Zt();function i(e,t,n){return(t.inFlow??e.flow?o:a)(e,t,n)}function a({comment:e,items:i},a,{blockItemPrefix:o,flowChars:c,itemIndent:l,onChompKeep:u,onComment:d}){let{indent:f,options:{commentString:p}}=a,m=Object.assign({},a,{indent:l,type:null}),h=!1,g=[];for(let e=0;eu=null,()=>h=!0);u&&(d+=r.lineComment(d,l,p(u))),h&&u&&(h=!1),g.push(o+d)}let _;if(g.length===0)_=c.start+c.end;else{_=g[0];for(let e=1;el=null);am||u.includes(` +`))&&(p=!0),h.push(u),m=h.length}let{start:g,end:_}=a;if(h.length===0)return g+_;if(!p){let e=h.reduce((e,t)=>e+t.length+2,2);p=i.options.lineWidth>0&&e>i.options.lineWidth}if(p){let e=g;for(let t of h)e+=t?`\n${l}${c}${t}`:` +`;return`${e}\n${c}${_}`}else return`${g}${u}${h.join(` `)}${u}${_}`}function s({indent:e,options:{commentString:t}},n,i,a){if(i&&a&&(i=i.replace(/^\n+/,``)),i){let a=r.indentComment(t(i),e);n.push(a.trimStart())}}e.stringifyCollection=i})),sn=b((e=>{var t=on(),n=rn(),r=Xt(),i=Q(),a=an(),o=Jt();function s(e,t){let n=i.isScalar(t)?t.value:t;for(let r of e)if(i.isPair(r)&&(r.key===t||r.key===n||i.isScalar(r.key)&&r.key.value===n))return r}e.YAMLMap=class extends r.Collection{static get tagName(){return`tag:yaml.org,2002:map`}constructor(e){super(i.MAP,e),this.items=[]}static from(e,t,n){let{keepUndefined:r,replacer:i}=n,o=new this(e),s=(e,s)=>{if(typeof i==`function`)s=i.call(t,e,s);else if(Array.isArray(i)&&!i.includes(e))return;(s!==void 0||r)&&o.items.push(a.createPair(e,s,n))};if(t instanceof Map)for(let[e,n]of t)s(e,n);else if(t&&typeof t==`object`)for(let e of Object.keys(t))s(e,t[e]);return typeof e.sortMapEntries==`function`&&o.items.sort(e.sortMapEntries),o}add(e,t){let n;n=i.isPair(e)?e:!e||typeof e!=`object`||!(`key`in e)?new a.Pair(e,e?.value):new a.Pair(e.key,e.value);let r=s(this.items,n.key),c=this.schema?.sortMapEntries;if(r){if(!t)throw Error(`Key ${n.key} already set`);i.isScalar(r.value)&&o.isScalarValue(n.value)?r.value.value=n.value:r.value=n.value}else if(c){let e=this.items.findIndex(e=>c(n,e)<0);e===-1?this.items.push(n):this.items.splice(e,0,n)}else this.items.push(n)}delete(e){let t=s(this.items,e);return t?this.items.splice(this.items.indexOf(t),1).length>0:!1}get(e,t){let n=s(this.items,e)?.value;return(!t&&i.isScalar(n)?n.value:n)??void 0}has(e){return!!s(this.items,e)}set(e,t){this.add(new a.Pair(e,t),!0)}toJSON(e,t,r){let i=r?new r:t?.mapAsMap?new Map:{};t?.onCreate&&t.onCreate(i);for(let e of this.items)n.addPairToJSMap(t,i,e);return i}toString(e,n,r){if(!e)return JSON.stringify(this);for(let e of this.items)if(!i.isPair(e))throw Error(`Map items must all be pairs; found ${JSON.stringify(e)} instead`);return!e.allNullValues&&this.hasAllNullValues(!1)&&(e=Object.assign({},e,{allNullValues:!0})),t.stringifyCollection(this,e,{blockItemPrefix:``,flowChars:{start:`{`,end:`}`},itemIndent:e.indent||``,onChompKeep:r,onComment:n})}},e.findPair=s})),cn=b((e=>{var t=Q(),n=sn();e.map={collection:`map`,default:!0,nodeClass:n.YAMLMap,tag:`tag:yaml.org,2002:map`,resolve(e,n){return t.isMap(e)||n(`Expected a mapping for this tag`),e},createNode:(e,t,r)=>n.YAMLMap.from(e,t,r)}})),ln=b((e=>{var t=Yt(),n=on(),r=Xt(),i=Q(),a=Jt(),o=Gt(),s=class extends r.Collection{static get tagName(){return`tag:yaml.org,2002:seq`}constructor(e){super(i.SEQ,e),this.items=[]}add(e){this.items.push(e)}delete(e){let t=c(e);return typeof t==`number`?this.items.splice(t,1).length>0:!1}get(e,t){let n=c(e);if(typeof n!=`number`)return;let r=this.items[n];return!t&&i.isScalar(r)?r.value:r}has(e){let t=c(e);return typeof t==`number`&&t=0?t:null}e.YAMLSeq=s})),un=b((e=>{var t=Q(),n=ln();e.seq={collection:`seq`,default:!0,nodeClass:n.YAMLSeq,tag:`tag:yaml.org,2002:seq`,resolve(e,n){return t.isSeq(e)||n(`Expected a sequence for this tag`),e},createNode:(e,t,r)=>n.YAMLSeq.from(e,t,r)}})),dn=b((e=>{var t=$t();e.string={identify:e=>typeof e==`string`,default:!0,tag:`tag:yaml.org,2002:str`,resolve:e=>e,stringify(e,n,r,i){return n=Object.assign({actualString:!0},n),t.stringifyString(e,n,r,i)}}})),fn=b((e=>{var t=Jt();let n={identify:e=>e==null,createNode:()=>new t.Scalar(null),default:!0,tag:`tag:yaml.org,2002:null`,test:/^(?:~|[Nn]ull|NULL)?$/,resolve:()=>new t.Scalar(null),stringify:({source:e},t)=>typeof e==`string`&&n.test.test(e)?e:t.options.nullStr};e.nullTag=n})),pn=b((e=>{var t=Jt();let n={identify:e=>typeof e==`boolean`,default:!0,tag:`tag:yaml.org,2002:bool`,test:/^(?:[Tt]rue|TRUE|[Ff]alse|FALSE)$/,resolve:e=>new t.Scalar(e[0]===`t`||e[0]===`T`),stringify({source:e,value:t},r){return e&&n.test.test(e)&&t===(e[0]===`t`||e[0]===`T`)?e:t?r.options.trueStr:r.options.falseStr}};e.boolTag=n})),mn=b((e=>{function t({format:e,minFractionDigits:t,tag:n,value:r}){if(typeof r==`bigint`)return String(r);let i=typeof r==`number`?r:Number(r);if(!isFinite(i))return isNaN(i)?`.nan`:i<0?`-.inf`:`.inf`;let a=JSON.stringify(r);if(!e&&t&&(!n||n===`tag:yaml.org,2002:float`)&&/^\d/.test(a)){let e=a.indexOf(`.`);e<0&&(e=a.length,a+=`.`);let n=t-(a.length-e-1);for(;n-- >0;)a+=`0`}return a}e.stringifyNumber=t})),hn=b((e=>{var t=Jt(),n=mn();let r={identify:e=>typeof e==`number`,default:!0,tag:`tag:yaml.org,2002:float`,test:/^(?:[-+]?\.(?:inf|Inf|INF)|\.nan|\.NaN|\.NAN)$/,resolve:e=>e.slice(-3).toLowerCase()===`nan`?NaN:e[0]===`-`?-1/0:1/0,stringify:n.stringifyNumber};e.float={identify:e=>typeof e==`number`,default:!0,tag:`tag:yaml.org,2002:float`,test:/^[-+]?(?:\.[0-9]+|[0-9]+\.[0-9]*)$/,resolve(e){let n=new t.Scalar(parseFloat(e)),r=e.indexOf(`.`);return r!==-1&&e[e.length-1]===`0`&&(n.minFractionDigits=e.length-r-1),n},stringify:n.stringifyNumber},e.floatExp={identify:e=>typeof e==`number`,default:!0,tag:`tag:yaml.org,2002:float`,format:`EXP`,test:/^[-+]?(?:\.[0-9]+|[0-9]+(?:\.[0-9]*)?)[eE][-+]?[0-9]+$/,resolve:e=>parseFloat(e),stringify(e){let t=Number(e.value);return isFinite(t)?t.toExponential():n.stringifyNumber(e)}},e.floatNaN=r})),gn=b((e=>{var t=mn();let n=e=>typeof e==`bigint`||Number.isInteger(e),r=(e,t,n,{intAsBigInt:r})=>r?BigInt(e):parseInt(e.substring(t),n);function i(e,r,i){let{value:a}=e;return n(a)&&a>=0?i+a.toString(r):t.stringifyNumber(e)}e.int={identify:n,default:!0,tag:`tag:yaml.org,2002:int`,test:/^[-+]?[0-9]+$/,resolve:(e,t,n)=>r(e,0,10,n),stringify:t.stringifyNumber},e.intHex={identify:e=>n(e)&&e>=0,default:!0,tag:`tag:yaml.org,2002:int`,format:`HEX`,test:/^0x[0-9a-fA-F]+$/,resolve:(e,t,n)=>r(e,2,16,n),stringify:e=>i(e,16,`0x`)},e.intOct={identify:e=>n(e)&&e>=0,default:!0,tag:`tag:yaml.org,2002:int`,format:`OCT`,test:/^0o[0-7]+$/,resolve:(e,t,n)=>r(e,2,8,n),stringify:e=>i(e,8,`0o`)}})),_n=b((e=>{var t=cn(),n=fn(),r=un(),i=dn(),a=pn(),o=hn(),s=gn();e.schema=[t.map,r.seq,i.string,n.nullTag,a.boolTag,s.intOct,s.int,s.intHex,o.floatNaN,o.floatExp,o.float]})),vn=b((e=>{var t=Jt(),n=cn(),r=un();function i(e){return typeof e==`bigint`||Number.isInteger(e)}let a=({value:e})=>JSON.stringify(e),o=[{identify:e=>typeof e==`string`,default:!0,tag:`tag:yaml.org,2002:str`,resolve:e=>e,stringify:a},{identify:e=>e==null,createNode:()=>new t.Scalar(null),default:!0,tag:`tag:yaml.org,2002:null`,test:/^null$/,resolve:()=>null,stringify:a},{identify:e=>typeof e==`boolean`,default:!0,tag:`tag:yaml.org,2002:bool`,test:/^true$|^false$/,resolve:e=>e===`true`,stringify:a},{identify:i,default:!0,tag:`tag:yaml.org,2002:int`,test:/^-?(?:0|[1-9][0-9]*)$/,resolve:(e,t,{intAsBigInt:n})=>n?BigInt(e):parseInt(e,10),stringify:({value:e})=>i(e)?e.toString():JSON.stringify(e)},{identify:e=>typeof e==`number`,default:!0,tag:`tag:yaml.org,2002:float`,test:/^-?(?:0|[1-9][0-9]*)(?:\.[0-9]*)?(?:[eE][-+]?[0-9]+)?$/,resolve:e=>parseFloat(e),stringify:a}];e.schema=[n.map,r.seq].concat(o,{default:!0,tag:``,test:/^/,resolve(e,t){return t(`Unresolved plain scalar ${JSON.stringify(e)}`),e}})})),yn=b((e=>{var t=T(`buffer`),n=Jt(),r=$t();e.binary={identify:e=>e instanceof Uint8Array,default:!1,tag:`tag:yaml.org,2002:binary`,resolve(e,n){if(typeof t.Buffer==`function`)return t.Buffer.from(e,`base64`);if(typeof atob==`function`){let t=atob(e.replace(/[\n\r]/g,``)),n=new Uint8Array(t.length);for(let e=0;e{var t=Q(),n=an(),r=Jt(),i=ln();function a(e,i){if(t.isSeq(e))for(let a=0;a1&&i(`Each pair must have its own sequence indicator`);let e=o.items[0]||new n.Pair(new r.Scalar(null));if(o.commentBefore&&(e.key.commentBefore=e.key.commentBefore?`${o.commentBefore}\n${e.key.commentBefore}`:o.commentBefore),o.comment){let t=e.value??e.key;t.comment=t.comment?`${o.comment}\n${t.comment}`:o.comment}o=e}e.items[a]=t.isPair(o)?o:new n.Pair(o)}}else i(`Expected a sequence for this tag`);return e}function o(e,t,r){let{replacer:a}=r,o=new i.YAMLSeq(e);o.tag=`tag:yaml.org,2002:pairs`;let s=0;if(t&&Symbol.iterator in Object(t))for(let e of t){typeof a==`function`&&(e=a.call(t,String(s++),e));let i,c;if(Array.isArray(e))if(e.length===2)i=e[0],c=e[1];else throw TypeError(`Expected [key, value] tuple: ${e}`);else if(e&&e instanceof Object){let t=Object.keys(e);if(t.length===1)i=t[0],c=e[i];else throw TypeError(`Expected tuple with one key, not ${t.length} keys`)}else i=e;o.items.push(n.createPair(i,c,r))}return o}let s={collection:`seq`,default:!1,tag:`tag:yaml.org,2002:pairs`,resolve:a,createNode:o};e.createPairs=o,e.pairs=s,e.resolvePairs=a})),xn=b((e=>{var t=Q(),n=Gt(),r=sn(),i=ln(),a=bn(),o=class e extends i.YAMLSeq{constructor(){super(),this.add=r.YAMLMap.prototype.add.bind(this),this.delete=r.YAMLMap.prototype.delete.bind(this),this.get=r.YAMLMap.prototype.get.bind(this),this.has=r.YAMLMap.prototype.has.bind(this),this.set=r.YAMLMap.prototype.set.bind(this),this.tag=e.tag}toJSON(e,r){if(!r)return super.toJSON(e);let i=new Map;r?.onCreate&&r.onCreate(i);for(let e of this.items){let a,o;if(t.isPair(e)?(a=n.toJS(e.key,``,r),o=n.toJS(e.value,a,r)):a=n.toJS(e,``,r),i.has(a))throw Error(`Ordered maps must not include duplicate keys`);i.set(a,o)}return i}static from(e,t,n){let r=a.createPairs(e,t,n),i=new this;return i.items=r.items,i}};o.tag=`tag:yaml.org,2002:omap`;let s={collection:`seq`,identify:e=>e instanceof Map,nodeClass:o,default:!1,tag:`tag:yaml.org,2002:omap`,resolve(e,n){let r=a.resolvePairs(e,n),i=[];for(let{key:e}of r.items)t.isScalar(e)&&(i.includes(e.value)?n(`Ordered maps must not include duplicate keys: ${e.value}`):i.push(e.value));return Object.assign(new o,r)},createNode:(e,t,n)=>o.from(e,t,n)};e.YAMLOMap=o,e.omap=s})),Sn=b((e=>{var t=Jt();function n({value:e,source:t},n){return t&&(e?r:i).test.test(t)?t:e?n.options.trueStr:n.options.falseStr}let r={identify:e=>e===!0,default:!0,tag:`tag:yaml.org,2002:bool`,test:/^(?:Y|y|[Yy]es|YES|[Tt]rue|TRUE|[Oo]n|ON)$/,resolve:()=>new t.Scalar(!0),stringify:n},i={identify:e=>e===!1,default:!0,tag:`tag:yaml.org,2002:bool`,test:/^(?:N|n|[Nn]o|NO|[Ff]alse|FALSE|[Oo]ff|OFF)$/,resolve:()=>new t.Scalar(!1),stringify:n};e.falseTag=i,e.trueTag=r})),Cn=b((e=>{var t=Jt(),n=mn();let r={identify:e=>typeof e==`number`,default:!0,tag:`tag:yaml.org,2002:float`,test:/^(?:[-+]?\.(?:inf|Inf|INF)|\.nan|\.NaN|\.NAN)$/,resolve:e=>e.slice(-3).toLowerCase()===`nan`?NaN:e[0]===`-`?-1/0:1/0,stringify:n.stringifyNumber};e.float={identify:e=>typeof e==`number`,default:!0,tag:`tag:yaml.org,2002:float`,test:/^[-+]?(?:[0-9][0-9_]*)?\.[0-9_]*$/,resolve(e){let n=new t.Scalar(parseFloat(e.replace(/_/g,``))),r=e.indexOf(`.`);if(r!==-1){let t=e.substring(r+1).replace(/_/g,``);t[t.length-1]===`0`&&(n.minFractionDigits=t.length)}return n},stringify:n.stringifyNumber},e.floatExp={identify:e=>typeof e==`number`,default:!0,tag:`tag:yaml.org,2002:float`,format:`EXP`,test:/^[-+]?(?:[0-9][0-9_]*)?(?:\.[0-9_]*)?[eE][-+]?[0-9]+$/,resolve:e=>parseFloat(e.replace(/_/g,``)),stringify(e){let t=Number(e.value);return isFinite(t)?t.toExponential():n.stringifyNumber(e)}},e.floatNaN=r})),wn=b((e=>{var t=mn();let n=e=>typeof e==`bigint`||Number.isInteger(e);function r(e,t,n,{intAsBigInt:r}){let i=e[0];if((i===`-`||i===`+`)&&(t+=1),e=e.substring(t).replace(/_/g,``),r){switch(n){case 2:e=`0b${e}`;break;case 8:e=`0o${e}`;break;case 16:e=`0x${e}`;break}let t=BigInt(e);return i===`-`?BigInt(-1)*t:t}let a=parseInt(e,n);return i===`-`?-1*a:a}function i(e,r,i){let{value:a}=e;if(n(a)){let e=a.toString(r);return a<0?`-`+i+e.substr(1):i+e}return t.stringifyNumber(e)}let a={identify:n,default:!0,tag:`tag:yaml.org,2002:int`,format:`BIN`,test:/^[-+]?0b[0-1_]+$/,resolve:(e,t,n)=>r(e,2,2,n),stringify:e=>i(e,2,`0b`)},o={identify:n,default:!0,tag:`tag:yaml.org,2002:int`,format:`OCT`,test:/^[-+]?0[0-7_]+$/,resolve:(e,t,n)=>r(e,1,8,n),stringify:e=>i(e,8,`0`)},s={identify:n,default:!0,tag:`tag:yaml.org,2002:int`,test:/^[-+]?[0-9][0-9_]*$/,resolve:(e,t,n)=>r(e,0,10,n),stringify:t.stringifyNumber},c={identify:n,default:!0,tag:`tag:yaml.org,2002:int`,format:`HEX`,test:/^[-+]?0x[0-9a-fA-F_]+$/,resolve:(e,t,n)=>r(e,2,16,n),stringify:e=>i(e,16,`0x`)};e.int=s,e.intBin=a,e.intHex=c,e.intOct=o})),Tn=b((e=>{var t=Q(),n=an(),r=sn(),i=class e extends r.YAMLMap{constructor(t){super(t),this.tag=e.tag}add(e){let i;i=t.isPair(e)?e:e&&typeof e==`object`&&`key`in e&&`value`in e&&e.value===null?new n.Pair(e.key,null):new n.Pair(e,null),r.findPair(this.items,i.key)||this.items.push(i)}get(e,n){let i=r.findPair(this.items,e);return!n&&t.isPair(i)?t.isScalar(i.key)?i.key.value:i.key:i}set(e,t){if(typeof t!=`boolean`)throw Error(`Expected boolean value for set(key, value) in a YAML set, not ${typeof t}`);let i=r.findPair(this.items,e);i&&!t?this.items.splice(this.items.indexOf(i),1):!i&&t&&this.items.push(new n.Pair(e))}toJSON(e,t){return super.toJSON(e,t,Set)}toString(e,t,n){if(!e)return JSON.stringify(this);if(this.hasAllNullValues(!0))return super.toString(Object.assign({},e,{allNullValues:!0}),t,n);throw Error(`Set items must all have null values`)}static from(e,t,r){let{replacer:i}=r,a=new this(e);if(t&&Symbol.iterator in Object(t))for(let e of t)typeof i==`function`&&(e=i.call(t,e,e)),a.items.push(n.createPair(e,null,r));return a}};i.tag=`tag:yaml.org,2002:set`;let a={collection:`map`,identify:e=>e instanceof Set,nodeClass:i,default:!1,tag:`tag:yaml.org,2002:set`,createNode:(e,t,n)=>i.from(e,t,n),resolve(e,n){if(t.isMap(e)){if(e.hasAllNullValues(!0))return Object.assign(new i,e);n(`Set items must all have null values`)}else n(`Expected a mapping for this tag`);return e}};e.YAMLSet=i,e.set=a})),En=b((e=>{var t=mn();function n(e,t){let n=e[0],r=n===`-`||n===`+`?e.substring(1):e,i=e=>t?BigInt(e):Number(e),a=r.replace(/_/g,``).split(`:`).reduce((e,t)=>e*i(60)+i(t),i(0));return n===`-`?i(-1)*a:a}function r(e){let{value:n}=e,r=e=>e;if(typeof n==`bigint`)r=e=>BigInt(e);else if(isNaN(n)||!isFinite(n))return t.stringifyNumber(e);let i=``;n<0&&(i=`-`,n*=r(-1));let a=r(60),o=[n%a];return n<60?o.unshift(0):(n=(n-o[0])/a,o.unshift(n%a),n>=60&&(n=(n-o[0])/a,o.unshift(n))),i+o.map(e=>String(e).padStart(2,`0`)).join(`:`).replace(/000000\d*$/,``)}let i={identify:e=>typeof e==`bigint`||Number.isInteger(e),default:!0,tag:`tag:yaml.org,2002:int`,format:`TIME`,test:/^[-+]?[0-9][0-9_]*(?::[0-5]?[0-9])+$/,resolve:(e,t,{intAsBigInt:r})=>n(e,r),stringify:r},a={identify:e=>typeof e==`number`,default:!0,tag:`tag:yaml.org,2002:float`,format:`TIME`,test:/^[-+]?[0-9][0-9_]*(?::[0-5]?[0-9])+\.[0-9_]*$/,resolve:e=>n(e,!1),stringify:r},o={identify:e=>e instanceof Date,default:!0,tag:`tag:yaml.org,2002:timestamp`,test:RegExp(`^([0-9]{4})-([0-9]{1,2})-([0-9]{1,2})(?:(?:t|T|[ \\t]+)([0-9]{1,2}):([0-9]{1,2}):([0-9]{1,2}(\\.[0-9]+)?)(?:[ \\t]*(Z|[-+][012]?[0-9](?::[0-9]{2})?))?)?$`),resolve(e){let t=e.match(o.test);if(!t)throw Error(`!!timestamp expects a date, starting with yyyy-mm-dd`);let[,r,i,a,s,c,l]=t.map(Number),u=t[7]?Number((t[7]+`00`).substr(1,3)):0,d=Date.UTC(r,i-1,a,s||0,c||0,l||0,u),f=t[8];if(f&&f!==`Z`){let e=n(f,!1);Math.abs(e)<30&&(e*=60),d-=6e4*e}return new Date(d)},stringify:({value:e})=>e?.toISOString().replace(/(T00:00:00)?\.000Z$/,``)??``};e.floatTime=a,e.intTime=i,e.timestamp=o})),Dn=b((e=>{var t=cn(),n=fn(),r=un(),i=dn(),a=yn(),o=Sn(),s=Cn(),c=wn(),l=nn(),u=xn(),d=bn(),f=Tn(),p=En();e.schema=[t.map,r.seq,i.string,n.nullTag,o.trueTag,o.falseTag,c.intBin,c.intOct,c.int,c.intHex,s.floatNaN,s.floatExp,s.float,a.binary,l.merge,u.omap,d.pairs,f.set,p.intTime,p.floatTime,p.timestamp]})),On=b((e=>{var t=cn(),n=fn(),r=un(),i=dn(),a=pn(),o=hn(),s=gn(),c=_n(),l=vn(),u=yn(),d=nn(),f=xn(),p=bn(),m=Dn(),h=Tn(),g=En();let _=new Map([[`core`,c.schema],[`failsafe`,[t.map,r.seq,i.string]],[`json`,l.schema],[`yaml11`,m.schema],[`yaml-1.1`,m.schema]]),v={binary:u.binary,bool:a.boolTag,float:o.float,floatExp:o.floatExp,floatNaN:o.floatNaN,floatTime:g.floatTime,int:s.int,intHex:s.intHex,intOct:s.intOct,intTime:g.intTime,map:t.map,merge:d.merge,null:n.nullTag,omap:f.omap,pairs:p.pairs,seq:r.seq,set:h.set,timestamp:g.timestamp},y={"tag:yaml.org,2002:binary":u.binary,"tag:yaml.org,2002:merge":d.merge,"tag:yaml.org,2002:omap":f.omap,"tag:yaml.org,2002:pairs":p.pairs,"tag:yaml.org,2002:set":h.set,"tag:yaml.org,2002:timestamp":g.timestamp};function b(e,t,n){let r=_.get(t);if(r&&!e)return n&&!r.includes(d.merge)?r.concat(d.merge):r.slice();let i=r;if(!i)if(Array.isArray(e))i=[];else{let e=Array.from(_.keys()).filter(e=>e!==`yaml11`).map(e=>JSON.stringify(e)).join(`, `);throw Error(`Unknown schema "${t}"; use one of ${e} or define customTags array`)}if(Array.isArray(e))for(let t of e)i=i.concat(t);else typeof e==`function`&&(i=e(i.slice()));return n&&(i=i.concat(d.merge)),i.reduce((e,t)=>{let n=typeof t==`string`?v[t]:t;if(!n){let e=JSON.stringify(t),n=Object.keys(v).map(e=>JSON.stringify(e)).join(`, `);throw Error(`Unknown custom tag ${e}; use one of ${n}`)}return e.includes(n)||e.push(n),e},[])}e.coreKnownTags=y,e.getTags=b})),kn=b((e=>{var t=Q(),n=cn(),r=un(),i=dn(),a=On();let o=(e,t)=>e.keyt.key?1:0;e.Schema=class e{constructor({compat:e,customTags:s,merge:c,resolveKnownTags:l,schema:u,sortMapEntries:d,toStringDefaults:f}){this.compat=Array.isArray(e)?a.getTags(e,`compat`):e?a.getTags(null,e):null,this.name=typeof u==`string`&&u||`core`,this.knownTags=l?a.coreKnownTags:{},this.tags=a.getTags(s,this.name,c),this.toStringOptions=f??null,Object.defineProperty(this,t.MAP,{value:n.map}),Object.defineProperty(this,t.SCALAR,{value:i.string}),Object.defineProperty(this,t.SEQ,{value:r.seq}),this.sortMapEntries=typeof d==`function`?d:d===!0?o:null}clone(){let t=Object.create(e.prototype,Object.getOwnPropertyDescriptors(this));return t.tags=this.tags.slice(),t}}})),An=b((e=>{var t=Q(),n=en(),r=Zt();function i(e,i){let a=[],o=i.directives===!0;if(i.directives!==!1&&e.directives){let t=e.directives.toString(e);t?(a.push(t),o=!0):e.directives.docStart&&(o=!0)}o&&a.push(`---`);let s=n.createStringifyContext(e,i),{commentString:c}=s.options;if(e.commentBefore){a.length!==1&&a.unshift(``);let t=c(e.commentBefore);a.unshift(r.indentComment(t,``))}let l=!1,u=null;if(e.contents){if(t.isNode(e.contents)){if(e.contents.spaceBefore&&o&&a.push(``),e.contents.commentBefore){let t=c(e.contents.commentBefore);a.push(r.indentComment(t,``))}s.forceBlockIndent=!!e.comment,u=e.contents.comment}let i=u?void 0:()=>l=!0,d=n.stringify(e.contents,s,()=>u=null,i);u&&(d+=r.lineComment(d,``,c(u))),(d[0]===`|`||d[0]===`>`)&&a[a.length-1]===`---`?a[a.length-1]=`--- ${d}`:a.push(d)}else a.push(n.stringify(e.contents,s));if(e.directives?.docEnd)if(e.comment){let t=c(e.comment);t.includes(` +`)?(a.push(`...`),a.push(r.indentComment(t,``))):a.push(`... ${t}`)}else a.push(`...`);else{let t=e.comment;t&&l&&(t=t.replace(/^\n+/,``)),t&&((!l||u)&&a[a.length-1]!==``&&a.push(``),a.push(r.indentComment(c(t),``)))}return a.join(` +`)+` +`}e.stringifyDocument=i})),jn=b((e=>{var t=qt(),n=Xt(),r=Q(),i=an(),a=Gt(),o=kn(),s=An(),c=Ut(),l=Wt(),u=Yt(),d=Ht(),f=class e{constructor(e,t,n){this.commentBefore=null,this.comment=null,this.errors=[],this.warnings=[],Object.defineProperty(this,r.NODE_TYPE,{value:r.DOC});let i=null;typeof t==`function`||Array.isArray(t)?i=t:n===void 0&&t&&(n=t,t=void 0);let a=Object.assign({intAsBigInt:!1,keepSourceTokens:!1,logLevel:`warn`,prettyErrors:!0,strict:!0,stringKeys:!1,uniqueKeys:!0,version:`1.2`},n);this.options=a;let{version:o}=a;n?._directives?(this.directives=n._directives.atDocument(),this.directives.yaml.explicit&&(o=this.directives.yaml.version)):this.directives=new d.Directives({version:o}),this.setSchema(o,n),this.contents=e===void 0?null:this.createNode(e,i,n)}clone(){let t=Object.create(e.prototype,{[r.NODE_TYPE]:{value:r.DOC}});return t.commentBefore=this.commentBefore,t.comment=this.comment,t.errors=this.errors.slice(),t.warnings=this.warnings.slice(),t.options=Object.assign({},this.options),this.directives&&(t.directives=this.directives.clone()),t.schema=this.schema.clone(),t.contents=r.isNode(this.contents)?this.contents.clone(t.schema):this.contents,this.range&&(t.range=this.range.slice()),t}add(e){p(this.contents)&&this.contents.add(e)}addIn(e,t){p(this.contents)&&this.contents.addIn(e,t)}createAlias(e,n){if(!e.anchor){let t=c.anchorNames(this);e.anchor=!n||t.has(n)?c.findNewAnchor(n||`a`,t):n}return new t.Alias(e.anchor)}createNode(e,t,n){let i;if(typeof t==`function`)e=t.call({"":e},``,e),i=t;else if(Array.isArray(t)){let e=t.filter(e=>typeof e==`number`||e instanceof String||e instanceof Number).map(String);e.length>0&&(t=t.concat(e)),i=t}else n===void 0&&t&&(n=t,t=void 0);let{aliasDuplicateObjects:a,anchorPrefix:o,flow:s,keepUndefined:l,onTagObj:d,tag:f}=n??{},{onAnchor:p,setAnchors:m,sourceObjects:h}=c.createNodeAnchors(this,o||`a`),g={aliasDuplicateObjects:a??!0,keepUndefined:l??!1,onAnchor:p,onTagObj:d,replacer:i,schema:this.schema,sourceObjects:h},_=u.createNode(e,f,g);return s&&r.isCollection(_)&&(_.flow=!0),m(),_}createPair(e,t,n={}){let r=this.createNode(e,null,n),a=this.createNode(t,null,n);return new i.Pair(r,a)}delete(e){return p(this.contents)?this.contents.delete(e):!1}deleteIn(e){return n.isEmptyPath(e)?this.contents==null?!1:(this.contents=null,!0):p(this.contents)?this.contents.deleteIn(e):!1}get(e,t){return r.isCollection(this.contents)?this.contents.get(e,t):void 0}getIn(e,t){return n.isEmptyPath(e)?!t&&r.isScalar(this.contents)?this.contents.value:this.contents:r.isCollection(this.contents)?this.contents.getIn(e,t):void 0}has(e){return r.isCollection(this.contents)?this.contents.has(e):!1}hasIn(e){return n.isEmptyPath(e)?this.contents!==void 0:r.isCollection(this.contents)?this.contents.hasIn(e):!1}set(e,t){this.contents==null?this.contents=n.collectionFromPath(this.schema,[e],t):p(this.contents)&&this.contents.set(e,t)}setIn(e,t){n.isEmptyPath(e)?this.contents=t:this.contents==null?this.contents=n.collectionFromPath(this.schema,Array.from(e),t):p(this.contents)&&this.contents.setIn(e,t)}setSchema(e,t={}){typeof e==`number`&&(e=String(e));let n;switch(e){case`1.1`:this.directives?this.directives.yaml.version=`1.1`:this.directives=new d.Directives({version:`1.1`}),n={resolveKnownTags:!1,schema:`yaml-1.1`};break;case`1.2`:case`next`:this.directives?this.directives.yaml.version=e:this.directives=new d.Directives({version:e}),n={resolveKnownTags:!0,schema:`core`};break;case null:this.directives&&delete this.directives,n=null;break;default:{let t=JSON.stringify(e);throw Error(`Expected '1.1', '1.2' or null as first argument, but found: ${t}`)}}if(t.schema instanceof Object)this.schema=t.schema;else if(n)this.schema=new o.Schema(Object.assign(n,t));else throw Error(`With a null YAML version, the { schema: Schema } option is required`)}toJS({json:e,jsonArg:t,mapAsMap:n,maxAliasCount:r,onAnchor:i,reviver:o}={}){let s={anchors:new Map,doc:this,keep:!e,mapAsMap:n===!0,mapKeyWarned:!1,maxAliasCount:typeof r==`number`?r:100},c=a.toJS(this.contents,t??``,s);if(typeof i==`function`)for(let{count:e,res:t}of s.anchors.values())i(t,e);return typeof o==`function`?l.applyReviver(o,{"":c},``,c):c}toJSON(e,t){return this.toJS({json:!0,jsonArg:e,mapAsMap:!1,onAnchor:t})}toString(e={}){if(this.errors.length>0)throw Error(`Document with errors cannot be stringified`);if(`indent`in e&&(!Number.isInteger(e.indent)||Number(e.indent)<=0)){let t=JSON.stringify(e.indent);throw Error(`"indent" option must be a positive integer, not ${t}`)}return s.stringifyDocument(this,e)}};function p(e){if(r.isCollection(e))return!0;throw Error(`Expected a YAML collection as document contents`)}e.Document=f})),Mn=b((e=>{var t=class extends Error{constructor(e,t,n,r){super(),this.name=e,this.code=n,this.message=r,this.pos=t}},n=class extends t{constructor(e,t,n){super(`YAMLParseError`,e,t,n)}},r=class extends t{constructor(e,t,n){super(`YAMLWarning`,e,t,n)}};e.YAMLError=t,e.YAMLParseError=n,e.YAMLWarning=r,e.prettifyError=(e,t)=>n=>{if(n.pos[0]===-1)return;n.linePos=n.pos.map(e=>t.linePos(e));let{line:r,col:i}=n.linePos[0];n.message+=` at line ${r}, column ${i}`;let a=i-1,o=e.substring(t.lineStarts[r-1],t.lineStarts[r]).replace(/[\n\r]+$/,``);if(a>=60&&o.length>80){let e=Math.min(a-39,o.length-79);o=`…`+o.substring(e),a-=e-1}if(o.length>80&&(o=o.substring(0,79)+`…`),r>1&&/^ *$/.test(o.substring(0,a))){let n=e.substring(t.lineStarts[r-2],t.lineStarts[r-1]);n.length>80&&(n=n.substring(0,79)+`… +`),o=n+o}if(/[^ ]/.test(o)){let e=1,t=n.linePos[1];t&&t.line===r&&t.col>i&&(e=Math.max(1,Math.min(t.col-i,80-a)));let s=` `.repeat(a)+`^`.repeat(e);n.message+=`:\n\n${o}\n${s}\n`}}})),Nn=b((e=>{function t(e,{flow:t,indicator:n,next:r,offset:i,onError:a,parentIndent:o,startOnNewline:s}){let c=!1,l=s,u=s,d=``,f=``,p=!1,m=!1,h=null,g=null,_=null,v=null,y=null,b=null,x=null;for(let i of e)switch(m&&=(i.type!==`space`&&i.type!==`newline`&&i.type!==`comma`&&a(i.offset,`MISSING_CHAR`,`Tags and anchors must be separated from the next token by white space`),!1),h&&=(l&&i.type!==`comment`&&i.type!==`newline`&&a(h,`TAB_AS_INDENT`,`Tabs are not allowed as indentation`),null),i.type){case`space`:!t&&(n!==`doc-start`||r?.type!==`flow-collection`)&&i.source.includes(` `)&&(h=i),u=!0;break;case`comment`:{u||a(i,`MISSING_CHAR`,`Comments must be separated from other tokens by white space characters`);let e=i.source.substring(1)||` `;d?d+=f+e:d=e,f=``,l=!1;break}case`newline`:l?d?d+=i.source:(!b||n!==`seq-item-ind`)&&(c=!0):f+=i.source,l=!0,p=!0,(g||_)&&(v=i),u=!0;break;case`anchor`:g&&a(i,`MULTIPLE_ANCHORS`,`A node can have at most one anchor`),i.source.endsWith(`:`)&&a(i.offset+i.source.length-1,`BAD_ALIAS`,`Anchor ending in : is ambiguous`,!0),g=i,x??=i.offset,l=!1,u=!1,m=!0;break;case`tag`:_&&a(i,`MULTIPLE_TAGS`,`A node can have at most one tag`),_=i,x??=i.offset,l=!1,u=!1,m=!0;break;case n:(g||_)&&a(i,`BAD_PROP_ORDER`,`Anchors and tags must be after the ${i.source} indicator`),b&&a(i,`UNEXPECTED_TOKEN`,`Unexpected ${i.source} in ${t??`collection`}`),b=i,l=n===`seq-item-ind`||n===`explicit-key-ind`,u=!1;break;case`comma`:if(t){y&&a(i,`UNEXPECTED_TOKEN`,`Unexpected , in ${t}`),y=i,l=!1,u=!1;break}default:a(i,`UNEXPECTED_TOKEN`,`Unexpected ${i.type} token`),l=!1,u=!1}let S=e[e.length-1],C=S?S.offset+S.source.length:i;return m&&r&&r.type!==`space`&&r.type!==`newline`&&r.type!==`comma`&&(r.type!==`scalar`||r.source!==``)&&a(r.offset,`MISSING_CHAR`,`Tags and anchors must be separated from the next token by white space`),h&&(l&&h.indent<=o||r?.type===`block-map`||r?.type===`block-seq`)&&a(h,`TAB_AS_INDENT`,`Tabs are not allowed as indentation`),{comma:y,found:b,spaceBefore:c,comment:d,hasNewline:p,anchor:g,tag:_,newlineAfterProp:v,end:C,start:x??C}}e.resolveProps=t})),Pn=b((e=>{function t(e){if(!e)return null;switch(e.type){case`alias`:case`scalar`:case`double-quoted-scalar`:case`single-quoted-scalar`:if(e.source.includes(` +`))return!0;if(e.end){for(let t of e.end)if(t.type===`newline`)return!0}return!1;case`flow-collection`:for(let n of e.items){for(let e of n.start)if(e.type===`newline`)return!0;if(n.sep){for(let e of n.sep)if(e.type===`newline`)return!0}if(t(n.key)||t(n.value))return!0}return!1;default:return!0}}e.containsNewline=t})),Fn=b((e=>{var t=Pn();function n(e,n,r){if(n?.type===`flow-collection`){let i=n.end[0];i.indent===e&&(i.source===`]`||i.source===`}`)&&t.containsNewline(n)&&r(i,`BAD_INDENT`,`Flow end indicator should be more indented than parent`,!0)}}e.flowIndentCheck=n})),In=b((e=>{var t=Q();function n(e,n,r){let{uniqueKeys:i}=e.options;if(i===!1)return!1;let a=typeof i==`function`?i:(e,n)=>e===n||t.isScalar(e)&&t.isScalar(n)&&e.value===n.value;return n.some(e=>a(e.key,r))}e.mapIncludes=n})),Ln=b((e=>{var t=an(),n=sn(),r=Nn(),i=Pn(),a=Fn(),o=In();let s=`All mapping items must start at the same column`;function c({composeNode:e,composeEmptyNode:c},l,u,d,f){let p=new(f?.nodeClass??n.YAMLMap)(l.schema);l.atRoot&&=!1;let m=u.offset,h=null;for(let n of u.items){let{start:f,key:g,sep:_,value:v}=n,y=r.resolveProps(f,{indicator:`explicit-key-ind`,next:g??_?.[0],offset:m,onError:d,parentIndent:u.indent,startOnNewline:!0}),b=!y.found;if(b){if(g&&(g.type===`block-seq`?d(m,`BLOCK_AS_IMPLICIT_KEY`,`A block sequence may not be used as an implicit map key`):`indent`in g&&g.indent!==u.indent&&d(m,`BAD_INDENT`,s)),!y.anchor&&!y.tag&&!_){h=y.end,y.comment&&(p.comment?p.comment+=` +`+y.comment:p.comment=y.comment);continue}(y.newlineAfterProp||i.containsNewline(g))&&d(g??f[f.length-1],`MULTILINE_IMPLICIT_KEY`,`Implicit keys need to be on a single line`)}else y.found?.indent!==u.indent&&d(m,`BAD_INDENT`,s);l.atKey=!0;let x=y.end,S=g?e(l,g,y,d):c(l,x,f,null,y,d);l.schema.compat&&a.flowIndentCheck(u.indent,g,d),l.atKey=!1,o.mapIncludes(l,p.items,S)&&d(x,`DUPLICATE_KEY`,`Map keys must be unique`);let C=r.resolveProps(_??[],{indicator:`map-value-ind`,next:v,offset:S.range[2],onError:d,parentIndent:u.indent,startOnNewline:!g||g.type===`block-scalar`});if(m=C.end,C.found){b&&(v?.type===`block-map`&&!C.hasNewline&&d(m,`BLOCK_AS_IMPLICIT_KEY`,`Nested mappings are not allowed in compact mappings`),l.options.strict&&y.start{var t=ln(),n=Nn(),r=Fn();function i({composeNode:e,composeEmptyNode:i},a,o,s,c){let l=new(c?.nodeClass??t.YAMLSeq)(a.schema);a.atRoot&&=!1,a.atKey&&=!1;let u=o.offset,d=null;for(let{start:t,value:c}of o.items){let f=n.resolveProps(t,{indicator:`seq-item-ind`,next:c,offset:u,onError:s,parentIndent:o.indent,startOnNewline:!0});if(!f.found)if(f.anchor||f.tag||c)c&&c.type===`block-seq`?s(f.end,`BAD_INDENT`,`All sequence items must start at the same column`):s(u,`MISSING_CHAR`,`Sequence item without - indicator`);else{d=f.end,f.comment&&(l.comment=f.comment);continue}let p=c?e(a,c,f,s):i(a,f.end,t,null,f,s);a.schema.compat&&r.flowIndentCheck(o.indent,c,s),u=p.range[2],l.items.push(p)}return l.range=[o.offset,u,d??u],l}e.resolveBlockSeq=i})),zn=b((e=>{function t(e,t,n,r){let i=``;if(e){let a=!1,o=``;for(let s of e){let{source:e,type:c}=s;switch(c){case`space`:a=!0;break;case`comment`:{n&&!a&&r(s,`MISSING_CHAR`,`Comments must be separated from other tokens by white space characters`);let t=e.substring(1)||` `;i?i+=o+t:i=t,o=``;break}case`newline`:i&&(o+=e),a=!0;break;default:r(s,`UNEXPECTED_TOKEN`,`Unexpected ${c} at node end`)}t+=e.length}}return{comment:i,offset:t}}e.resolveEnd=t})),Bn=b((e=>{var t=Q(),n=an(),r=sn(),i=ln(),a=zn(),o=Nn(),s=Pn(),c=In();let l=`Block collections are not allowed within flow collections`,u=e=>e&&(e.type===`block-map`||e.type===`block-seq`);function d({composeNode:e,composeEmptyNode:d},f,p,m,h){let g=p.start.source===`{`,_=g?`flow map`:`flow sequence`,v=new(h?.nodeClass??(g?r.YAMLMap:i.YAMLSeq))(f.schema);v.flow=!0;let y=f.atRoot;y&&(f.atRoot=!1),f.atKey&&=!1;let b=p.offset+p.start.source.length;for(let i=0;i0){let e=a.resolveEnd(C,w,f.options.strict,m);e.comment&&(v.comment?v.comment+=` +`+e.comment:v.comment=e.comment),v.range=[p.offset,w,e.offset]}else v.range=[p.offset,w,w];return v}e.resolveFlowCollection=d})),Vn=b((e=>{var t=Q(),n=Jt(),r=sn(),i=ln(),a=Ln(),o=Rn(),s=Bn();function c(e,t,n,r,i,c){let l=n.type===`block-map`?a.resolveBlockMap(e,t,n,r,c):n.type===`block-seq`?o.resolveBlockSeq(e,t,n,r,c):s.resolveFlowCollection(e,t,n,r,c),u=l.constructor;return i===`!`||i===u.tagName?(l.tag=u.tagName,l):(i&&(l.tag=i),l)}function l(e,a,o,s,l){let u=s.tag,d=u?a.directives.tagName(u.source,e=>l(u,`TAG_RESOLVE_FAILED`,e)):null;if(o.type===`block-seq`){let{anchor:e,newlineAfterProp:t}=s,n=e&&u?e.offset>u.offset?e:u:e??u;n&&(!t||t.offsete.tag===d&&e.collection===f);if(!p){let t=a.schema.knownTags[d];if(t&&t.collection===f)a.schema.tags.push(Object.assign({},t,{default:!1})),p=t;else return t?l(u,`BAD_COLLECTION_TYPE`,`${t.tag} used for ${f} collection, but expects ${t.collection??`scalar`}`,!0):l(u,`TAG_RESOLVE_FAILED`,`Unresolved tag: ${d}`,!0),c(e,a,o,l,d)}let m=c(e,a,o,l,d,p),h=p.resolve?.(m,e=>l(u,`TAG_RESOLVE_FAILED`,e),a.options)??m,g=t.isNode(h)?h:new n.Scalar(h);return g.range=m.range,g.tag=d,p?.format&&(g.format=p.format),g}e.composeCollection=l})),Hn=b((e=>{var t=Jt();function n(e,n,a){let o=n.offset,s=r(n,e.options.strict,a);if(!s)return{value:``,type:null,comment:``,range:[o,o,o]};let c=s.mode===`>`?t.Scalar.BLOCK_FOLDED:t.Scalar.BLOCK_LITERAL,l=n.source?i(n.source):[],u=l.length;for(let e=l.length-1;e>=0;--e){let t=l[e][1];if(t===``||t===`\r`)u=e;else break}if(u===0){let e=s.chomp===`+`&&l.length>0?` +`.repeat(Math.max(1,l.length-1)):``,t=o+s.length;return n.source&&(t+=n.source.length),{value:e,type:c,comment:s.comment,range:[o,t,t]}}let d=n.indent+s.indent,f=n.offset+s.length,p=0;for(let t=0;td&&(d=n.length);else{n.length=u;--e)l[e][0].length>d&&(u=e+1);let m=``,h=``,g=!1;for(let e=0;ed||r[0]===` `?(h===` `?h=` +`:!g&&h===` +`&&(h=` + +`),m+=h+n.slice(d)+r,h=` +`,g=!0):r===``?h===` +`?m+=` +`:h=` +`:(m+=h+r,h=` `,g=!1)}switch(s.chomp){case`-`:break;case`+`:for(let e=u;e{var t=Jt(),n=zn();function r(e,r,o){let{offset:c,type:l,source:u,end:d}=e,f,p,m=(e,t,n)=>o(c+e,t,n);switch(l){case`scalar`:f=t.Scalar.PLAIN,p=i(u,m);break;case`single-quoted-scalar`:f=t.Scalar.QUOTE_SINGLE,p=a(u,m);break;case`double-quoted-scalar`:f=t.Scalar.QUOTE_DOUBLE,p=s(u,m);break;default:return o(e,`UNEXPECTED_TOKEN`,`Expected a flow scalar value, but found: ${l}`),{value:``,type:null,comment:``,range:[c,c+u.length,c+u.length]}}let h=c+u.length,g=n.resolveEnd(d,h,r,o);return{value:p,type:f,comment:g.comment,range:[c,h,g.offset]}}function i(e,t){let n=``;switch(e[0]){case` `:n=`a tab character`;break;case`,`:n=`flow indicator character ,`;break;case`%`:n=`directive indicator character %`;break;case`|`:case`>`:n=`block scalar indicator ${e[0]}`;break;case`@`:case"`":n=`reserved character ${e[0]}`;break}return n&&t(0,`BAD_SCALAR_START`,`Plain value cannot start with ${n}`),o(e)}function a(e,t){return(e[e.length-1]!==`'`||e.length===1)&&t(e.length,`MISSING_CHAR`,`Missing closing 'quote`),o(e.slice(1,-1)).replace(/''/g,`'`)}function o(e){let t,n;try{t=RegExp(`(.*?)(?t?e.slice(t,r+1):i)}else n+=i}return(e[e.length-1]!==`"`||e.length===1)&&t(e.length,`MISSING_CHAR`,`Missing closing "quote`),n}function c(e,t){let n=``,r=e[t+1];for(;(r===` `||r===` `||r===` +`||r===`\r`)&&!(r===`\r`&&e[t+2]!==` +`);)r===` +`&&(n+=` +`),t+=1,r=e[t+1];return n||=` `,{fold:n,offset:t}}let l={0:`\0`,a:`\x07`,b:`\b`,e:`\x1B`,f:`\f`,n:` +`,r:`\r`,t:` `,v:`\v`,N:`…`,_:`\xA0`,L:`\u2028`,P:`\u2029`," ":` `,'"':`"`,"/":`/`,"\\":`\\`," ":` `};function u(e,t,n,r){let i=e.substr(t,n),a=i.length===n&&/^[0-9a-fA-F]+$/.test(i)?parseInt(i,16):NaN;if(isNaN(a)){let i=e.substr(t-2,n+2);return r(t-2,`BAD_DQ_ESCAPE`,`Invalid escape sequence ${i}`),i}return String.fromCodePoint(a)}e.resolveFlowScalar=r})),Wn=b((e=>{var t=Q(),n=Jt(),r=Hn(),i=Un();function a(e,a,c,l){let{value:u,type:d,comment:f,range:p}=a.type===`block-scalar`?r.resolveBlockScalar(e,a,l):i.resolveFlowScalar(a,e.options.strict,l),m=c?e.directives.tagName(c.source,e=>l(c,`TAG_RESOLVE_FAILED`,e)):null,h;h=e.options.stringKeys&&e.atKey?e.schema[t.SCALAR]:m?o(e.schema,u,m,c,l):a.type===`scalar`?s(e,u,a,l):e.schema[t.SCALAR];let g;try{let r=h.resolve(u,e=>l(c??a,`TAG_RESOLVE_FAILED`,e),e.options);g=t.isScalar(r)?r:new n.Scalar(r)}catch(e){let t=e instanceof Error?e.message:String(e);l(c??a,`TAG_RESOLVE_FAILED`,t),g=new n.Scalar(u)}return g.range=p,g.source=u,d&&(g.type=d),m&&(g.tag=m),h.format&&(g.format=h.format),f&&(g.comment=f),g}function o(e,n,r,i,a){if(r===`!`)return e[t.SCALAR];let o=[];for(let t of e.tags)if(!t.collection&&t.tag===r)if(t.default&&t.test)o.push(t);else return t;for(let e of o)if(e.test?.test(n))return e;let s=e.knownTags[r];return s&&!s.collection?(e.tags.push(Object.assign({},s,{default:!1,test:void 0})),s):(a(i,`TAG_RESOLVE_FAILED`,`Unresolved tag: ${r}`,r!==`tag:yaml.org,2002:str`),e[t.SCALAR])}function s({atKey:e,directives:n,schema:r},i,a,o){let s=r.tags.find(t=>(t.default===!0||e&&t.default===`key`)&&t.test?.test(i))||r[t.SCALAR];if(r.compat){let e=r.compat.find(e=>e.default&&e.test?.test(i))??r[t.SCALAR];s.tag!==e.tag&&o(a,`TAG_RESOLVE_FAILED`,`Value may be parsed as either ${n.tagString(s.tag)} or ${n.tagString(e.tag)}`,!0)}return s}e.composeScalar=a})),Gn=b((e=>{function t(e,t,n){if(t){n??=t.length;for(let r=n-1;r>=0;--r){let n=t[r];switch(n.type){case`space`:case`comment`:case`newline`:e-=n.source.length;continue}for(n=t[++r];n?.type===`space`;)e+=n.source.length,n=t[++r];break}}return e}e.emptyScalarPosition=t})),Kn=b((e=>{var t=qt(),n=Q(),r=Vn(),i=Wn(),a=zn(),o=Gn();let s={composeNode:c,composeEmptyNode:l};function c(e,t,a,o){let c=e.atKey,{spaceBefore:d,comment:f,anchor:p,tag:m}=a,h,g=!0;switch(t.type){case`alias`:h=u(e,t,o),(p||m)&&o(t,`ALIAS_PROPS`,`An alias node must not specify any properties`);break;case`scalar`:case`single-quoted-scalar`:case`double-quoted-scalar`:case`block-scalar`:h=i.composeScalar(e,t,m,o),p&&(h.anchor=p.source.substring(1));break;case`block-map`:case`block-seq`:case`flow-collection`:h=r.composeCollection(s,e,t,a,o),p&&(h.anchor=p.source.substring(1));break;default:o(t,`UNEXPECTED_TOKEN`,t.type===`error`?t.message:`Unsupported token (type: ${t.type})`),h=l(e,t.offset,void 0,null,a,o),g=!1}return p&&h.anchor===``&&o(p,`BAD_ALIAS`,`Anchor cannot be an empty string`),c&&e.options.stringKeys&&(!n.isScalar(h)||typeof h.value!=`string`||h.tag&&h.tag!==`tag:yaml.org,2002:str`)&&o(m??t,`NON_STRING_KEY`,`With stringKeys, all keys must be strings`),d&&(h.spaceBefore=!0),f&&(t.type===`scalar`&&t.source===``?h.comment=f:h.commentBefore=f),e.options.keepSourceTokens&&g&&(h.srcToken=t),h}function l(e,t,n,r,{spaceBefore:a,comment:s,anchor:c,tag:l,end:u},d){let f={type:`scalar`,offset:o.emptyScalarPosition(t,n,r),indent:-1,source:``},p=i.composeScalar(e,f,l,d);return c&&(p.anchor=c.source.substring(1),p.anchor===``&&d(c,`BAD_ALIAS`,`Anchor cannot be an empty string`)),a&&(p.spaceBefore=!0),s&&(p.comment=s,p.range[2]=u),p}function u({options:e},{offset:n,source:r,end:i},o){let s=new t.Alias(r.substring(1));s.source===``&&o(n,`BAD_ALIAS`,`Alias cannot be an empty string`),s.source.endsWith(`:`)&&o(n+r.length-1,`BAD_ALIAS`,`Alias ending in : is ambiguous`,!0);let c=n+r.length,l=a.resolveEnd(i,c,e.strict,o);return s.range=[n,c,l.offset],l.comment&&(s.comment=l.comment),s}e.composeEmptyNode=l,e.composeNode=c})),qn=b((e=>{var t=jn(),n=Kn(),r=zn(),i=Nn();function a(e,a,{offset:o,start:s,value:c,end:l},u){let d=Object.assign({_directives:a},e),f=new t.Document(void 0,d),p={atKey:!1,atRoot:!0,directives:f.directives,options:f.options,schema:f.schema},m=i.resolveProps(s,{indicator:`doc-start`,next:c??l?.[0],offset:o,onError:u,parentIndent:0,startOnNewline:!0});m.found&&(f.directives.docStart=!0,c&&(c.type===`block-map`||c.type===`block-seq`)&&!m.hasNewline&&u(m.end,`MISSING_CHAR`,`Block collection cannot start on same line with directives-end marker`)),f.contents=c?n.composeNode(p,c,m,u):n.composeEmptyNode(p,m.end,s,null,m,u);let h=f.contents.range[2],g=r.resolveEnd(l,h,!1,u);return g.comment&&(f.comment=g.comment),f.range=[o,h,g.offset],f}e.composeDoc=a})),Jn=b((e=>{var t=T(`process`),n=Ht(),r=jn(),i=Mn(),a=Q(),o=qn(),s=zn();function c(e){if(typeof e==`number`)return[e,e+1];if(Array.isArray(e))return e.length===2?e:[e[0],e[1]];let{offset:t,source:n}=e;return[t,t+(typeof n==`string`?n.length:1)]}function l(e){let t=``,n=!1,r=!1;for(let i=0;i{let a=c(e);r?this.warnings.push(new i.YAMLWarning(a,t,n)):this.errors.push(new i.YAMLParseError(a,t,n))},this.directives=new n.Directives({version:e.version||`1.2`}),this.options=e}decorate(e,t){let{comment:n,afterEmptyLine:r}=l(this.prelude);if(n){let i=e.contents;if(t)e.comment=e.comment?`${e.comment}\n${n}`:n;else if(r||e.directives.docStart||!i)e.commentBefore=n;else if(a.isCollection(i)&&!i.flow&&i.items.length>0){let e=i.items[0];a.isPair(e)&&(e=e.key);let t=e.commentBefore;e.commentBefore=t?`${n}\n${t}`:n}else{let e=i.commentBefore;i.commentBefore=e?`${n}\n${e}`:n}}t?(Array.prototype.push.apply(e.errors,this.errors),Array.prototype.push.apply(e.warnings,this.warnings)):(e.errors=this.errors,e.warnings=this.warnings),this.prelude=[],this.errors=[],this.warnings=[]}streamInfo(){return{comment:l(this.prelude).comment,directives:this.directives,errors:this.errors,warnings:this.warnings}}*compose(e,t=!1,n=-1){for(let t of e)yield*this.next(t);yield*this.end(t,n)}*next(e){switch(t.env.LOG_STREAM&&console.dir(e,{depth:null}),e.type){case`directive`:this.directives.add(e.source,(t,n,r)=>{let i=c(e);i[0]+=t,this.onError(i,`BAD_DIRECTIVE`,n,r)}),this.prelude.push(e.source),this.atDirectives=!0;break;case`document`:{let t=o.composeDoc(this.options,this.directives,e,this.onError);this.atDirectives&&!t.directives.docStart&&this.onError(e,`MISSING_CHAR`,`Missing directives-end/doc-start indicator line`),this.decorate(t,!1),this.doc&&(yield this.doc),this.doc=t,this.atDirectives=!1;break}case`byte-order-mark`:case`space`:break;case`comment`:case`newline`:this.prelude.push(e.source);break;case`error`:{let t=e.source?`${e.message}: ${JSON.stringify(e.source)}`:e.message,n=new i.YAMLParseError(c(e),`UNEXPECTED_TOKEN`,t);this.atDirectives||!this.doc?this.errors.push(n):this.doc.errors.push(n);break}case`doc-end`:{if(!this.doc){this.errors.push(new i.YAMLParseError(c(e),`UNEXPECTED_TOKEN`,`Unexpected doc-end without preceding document`));break}this.doc.directives.docEnd=!0;let t=s.resolveEnd(e.end,e.offset+e.source.length,this.doc.options.strict,this.onError);if(this.decorate(this.doc,!0),t.comment){let e=this.doc.comment;this.doc.comment=e?`${e}\n${t.comment}`:t.comment}this.doc.range[2]=t.offset;break}default:this.errors.push(new i.YAMLParseError(c(e),`UNEXPECTED_TOKEN`,`Unsupported token ${e.type}`))}}*end(e=!1,t=-1){if(this.doc)this.decorate(this.doc,!0),yield this.doc,this.doc=null;else if(e){let e=Object.assign({_directives:this.directives},this.options),n=new r.Document(void 0,e);this.atDirectives&&this.onError(t,`MISSING_CHAR`,`Missing directives-end indicator line`),n.range=[0,t,t],this.decorate(n,!1),yield n}}}})),Yn=b((e=>{var t=Hn(),n=Un(),r=Mn(),i=$t();function a(e,i=!0,a){if(e){let o=(e,t,n)=>{let i=typeof e==`number`?e:Array.isArray(e)?e[0]:e.offset;if(a)a(i,t,n);else throw new r.YAMLParseError([i,i+1],t,n)};switch(e.type){case`scalar`:case`single-quoted-scalar`:case`double-quoted-scalar`:return n.resolveFlowScalar(e,i,o);case`block-scalar`:return t.resolveBlockScalar({options:{strict:i}},e,o)}}return null}function o(e,t){let{implicitKey:n=!1,indent:r,inFlow:a=!1,offset:o=-1,type:s=`PLAIN`}=t,c=i.stringifyString({type:s,value:e},{implicitKey:n,indent:r>0?` `.repeat(r):``,inFlow:a,options:{blockQuote:!0,lineWidth:-1}}),u=t.end??[{type:`newline`,offset:-1,indent:r,source:` +`}];switch(c[0]){case`|`:case`>`:{let e=c.indexOf(` +`),t=c.substring(0,e),n=c.substring(e+1)+` +`,i=[{type:`block-scalar-header`,offset:o,indent:r,source:t}];return l(i,u)||i.push({type:`newline`,offset:-1,indent:r,source:` +`}),{type:`block-scalar`,offset:o,indent:r,props:i,source:n}}case`"`:return{type:`double-quoted-scalar`,offset:o,indent:r,source:c,end:u};case`'`:return{type:`single-quoted-scalar`,offset:o,indent:r,source:c,end:u};default:return{type:`scalar`,offset:o,indent:r,source:c,end:u}}}function s(e,t,n={}){let{afterKey:r=!1,implicitKey:a=!1,inFlow:o=!1,type:s}=n,l=`indent`in e?e.indent:null;if(r&&typeof l==`number`&&(l+=2),!s)switch(e.type){case`single-quoted-scalar`:s=`QUOTE_SINGLE`;break;case`double-quoted-scalar`:s=`QUOTE_DOUBLE`;break;case`block-scalar`:{let t=e.props[0];if(t.type!==`block-scalar-header`)throw Error(`Invalid block scalar header`);s=t.source[0]===`>`?`BLOCK_FOLDED`:`BLOCK_LITERAL`;break}default:s=`PLAIN`}let d=i.stringifyString({type:s,value:t},{implicitKey:a||l===null,indent:l!==null&&l>0?` `.repeat(l):``,inFlow:o,options:{blockQuote:!0,lineWidth:-1}});switch(d[0]){case`|`:case`>`:c(e,d);break;case`"`:u(e,d,`double-quoted-scalar`);break;case`'`:u(e,d,`single-quoted-scalar`);break;default:u(e,d,`scalar`)}}function c(e,t){let n=t.indexOf(` +`),r=t.substring(0,n),i=t.substring(n+1)+` +`;if(e.type===`block-scalar`){let t=e.props[0];if(t.type!==`block-scalar-header`)throw Error(`Invalid block scalar header`);t.source=r,e.source=i}else{let{offset:t}=e,n=`indent`in e?e.indent:-1,a=[{type:`block-scalar-header`,offset:t,indent:n,source:r}];l(a,`end`in e?e.end:void 0)||a.push({type:`newline`,offset:-1,indent:n,source:` +`});for(let t of Object.keys(e))t!==`type`&&t!==`offset`&&delete e[t];Object.assign(e,{type:`block-scalar`,indent:n,props:a,source:i})}}function l(e,t){if(t)for(let n of t)switch(n.type){case`space`:case`comment`:e.push(n);break;case`newline`:return e.push(n),!0}return!1}function u(e,t,n){switch(e.type){case`scalar`:case`double-quoted-scalar`:case`single-quoted-scalar`:e.type=n,e.source=t;break;case`block-scalar`:{let r=e.props.slice(1),i=t.length;e.props[0].type===`block-scalar-header`&&(i-=e.props[0].source.length);for(let e of r)e.offset+=i;delete e.props,Object.assign(e,{type:n,source:t,end:r});break}case`block-map`:case`block-seq`:{let r={type:`newline`,offset:e.offset+t.length,indent:e.indent,source:` +`};delete e.items,Object.assign(e,{type:n,source:t,end:[r]});break}default:{let r=`indent`in e?e.indent:-1,i=`end`in e&&Array.isArray(e.end)?e.end.filter(e=>e.type===`space`||e.type===`comment`||e.type===`newline`):[];for(let t of Object.keys(e))t!==`type`&&t!==`offset`&&delete e[t];Object.assign(e,{type:n,indent:r,source:t,end:i})}}}e.createScalarToken=o,e.resolveAsScalar=a,e.setScalarValue=s})),Xn=b((e=>{let t=e=>`type`in e?n(e):r(e);function n(e){switch(e.type){case`block-scalar`:{let t=``;for(let r of e.props)t+=n(r);return t+e.source}case`block-map`:case`block-seq`:{let t=``;for(let n of e.items)t+=r(n);return t}case`flow-collection`:{let t=e.start.source;for(let n of e.items)t+=r(n);for(let n of e.end)t+=n.source;return t}case`document`:{let t=r(e);if(e.end)for(let n of e.end)t+=n.source;return t}default:{let t=e.source;if(`end`in e&&e.end)for(let n of e.end)t+=n.source;return t}}}function r({start:e,key:t,sep:r,value:i}){let a=``;for(let t of e)a+=t.source;if(t&&(a+=n(t)),r)for(let e of r)a+=e.source;return i&&(a+=n(i)),a}e.stringify=t})),Zn=b((e=>{let t=Symbol(`break visit`),n=Symbol(`skip children`),r=Symbol(`remove item`);function i(e,t){`type`in e&&e.type===`document`&&(e={start:e.start,value:e.value}),a(Object.freeze([]),e,t)}i.BREAK=t,i.SKIP=n,i.REMOVE=r,i.itemAtPath=(e,t)=>{let n=e;for(let[e,r]of t){let t=n?.[e];if(t&&`items`in t)n=t.items[r];else return}return n},i.parentCollection=(e,t)=>{let n=i.itemAtPath(e,t.slice(0,-1)),r=t[t.length-1][0],a=n?.[r];if(a&&`items`in a)return a;throw Error(`Parent collection not found`)};function a(e,n,i){let o=i(n,e);if(typeof o==`symbol`)return o;for(let s of[`key`,`value`]){let c=n[s];if(c&&`items`in c){for(let n=0;n{var t=Yn(),n=Xn(),r=Zn();let i=e=>!!e&&`items`in e,a=e=>!!e&&(e.type===`scalar`||e.type===`single-quoted-scalar`||e.type===`double-quoted-scalar`||e.type===`block-scalar`);function o(e){switch(e){case``:return``;case``:return``;case``:return``;case``:return``;default:return JSON.stringify(e)}}function s(e){switch(e){case``:return`byte-order-mark`;case``:return`doc-mode`;case``:return`flow-error-end`;case``:return`scalar`;case`---`:return`doc-start`;case`...`:return`doc-end`;case``:case` +`:case`\r +`:return`newline`;case`-`:return`seq-item-ind`;case`?`:return`explicit-key-ind`;case`:`:return`map-value-ind`;case`{`:return`flow-map-start`;case`}`:return`flow-map-end`;case`[`:return`flow-seq-start`;case`]`:return`flow-seq-end`;case`,`:return`comma`}switch(e[0]){case` `:case` `:return`space`;case`#`:return`comment`;case`%`:return`directive-line`;case`*`:return`alias`;case`&`:return`anchor`;case`!`:return`tag`;case`'`:return`single-quoted-scalar`;case`"`:return`double-quoted-scalar`;case`|`:case`>`:return`block-scalar-header`}return null}e.createScalarToken=t.createScalarToken,e.resolveAsScalar=t.resolveAsScalar,e.setScalarValue=t.setScalarValue,e.stringify=n.stringify,e.visit=r.visit,e.BOM=``,e.DOCUMENT=``,e.FLOW_END=``,e.SCALAR=``,e.isCollection=i,e.isScalar=a,e.prettyToken=o,e.tokenType=s})),$n=b((e=>{var t=Qn();function n(e){switch(e){case void 0:case` `:case` +`:case`\r`:case` `:return!0;default:return!1}}let r=new Set(`0123456789ABCDEFabcdef`),i=new Set(`0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-#;/?:@&=+$_.!~*'()`),a=new Set(`,[]{}`),o=new Set(` ,[]{} +\r `),s=e=>!e||o.has(e);e.Lexer=class{constructor(){this.atEnd=!1,this.blockScalarIndent=-1,this.blockScalarKeep=!1,this.buffer=``,this.flowKey=!1,this.flowLevel=0,this.indentNext=0,this.indentValue=0,this.lineEndPos=null,this.next=null,this.pos=0}*lex(e,t=!1){if(e){if(typeof e!=`string`)throw TypeError(`source is not a string`);this.buffer=this.buffer?this.buffer+e:e,this.lineEndPos=null}this.atEnd=!t;let n=this.next??`stream`;for(;n&&(t||this.hasChars(1));)n=yield*this.parseNext(n)}atLineEnd(){let e=this.pos,t=this.buffer[e];for(;t===` `||t===` `;)t=this.buffer[++e];return!t||t===`#`||t===` +`?!0:t===`\r`?this.buffer[e+1]===` +`:!1}charAt(e){return this.buffer[this.pos+e]}continueScalar(e){let t=this.buffer[e];if(this.indentNext>0){let n=0;for(;t===` `;)t=this.buffer[++n+e];if(t===`\r`){let t=this.buffer[n+e+1];if(t===` +`||!t&&!this.atEnd)return e+n+1}return t===` +`||n>=this.indentNext||!t&&!this.atEnd?e+n:-1}if(t===`-`||t===`.`){let t=this.buffer.substr(e,3);if((t===`---`||t===`...`)&&n(this.buffer[e+3]))return-1}return e}getLine(){let e=this.lineEndPos;return(typeof e!=`number`||e!==-1&&ethis.indentValue&&!n(this.charAt(1))&&(this.indentNext=this.indentValue),yield*this.parseBlockStart()}*parseBlockStart(){let[e,t]=this.peek(2);if(!t&&!this.atEnd)return this.setNext(`block-start`);if((e===`-`||e===`?`||e===`:`)&&n(t)){let e=(yield*this.pushCount(1))+(yield*this.pushSpaces(!0));return this.indentNext=this.indentValue+1,this.indentValue+=e,yield*this.parseBlockStart()}return`doc`}*parseDocument(){yield*this.pushSpaces(!0);let e=this.getLine();if(e===null)return this.setNext(`doc`);let t=yield*this.pushIndicators();switch(e[t]){case`#`:yield*this.pushCount(e.length-t);case void 0:return yield*this.pushNewline(),yield*this.parseLineStart();case`{`:case`[`:return yield*this.pushCount(1),this.flowKey=!1,this.flowLevel=1,`flow`;case`}`:case`]`:return yield*this.pushCount(1),`doc`;case`*`:return yield*this.pushUntil(s),`doc`;case`"`:case`'`:return yield*this.parseQuotedScalar();case`|`:case`>`:return t+=yield*this.parseBlockScalarHeader(),t+=yield*this.pushSpaces(!0),yield*this.pushCount(e.length-t),yield*this.pushNewline(),yield*this.parseBlockScalar();default:return yield*this.parsePlainScalar()}}*parseFlowCollection(){let e,r,i=-1;do e=yield*this.pushNewline(),e>0?(r=yield*this.pushSpaces(!1),this.indentValue=i=r):r=0,r+=yield*this.pushSpaces(!0);while(e+r>0);let a=this.getLine();if(a===null)return this.setNext(`flow`);if((i!==-1&&i`0`&&t<=`9`)this.blockScalarIndent=Number(t)-1;else if(t!==`-`)break}return yield*this.pushUntil(e=>n(e)||e===`#`)}*parseBlockScalar(){let e=this.pos-1,n=0,r;loop:for(let t=this.pos;r=this.buffer[t];++t)switch(r){case` `:n+=1;break;case` +`:e=t,n=0;break;case`\r`:{let e=this.buffer[t+1];if(!e&&!this.atEnd)return this.setNext(`block-scalar`);if(e===` +`)break}default:break loop}if(!r&&!this.atEnd)return this.setNext(`block-scalar`);if(n>=this.indentNext){this.blockScalarIndent===-1?this.indentNext=n:this.indentNext=this.blockScalarIndent+(this.indentNext===0?1:this.indentNext);do{let t=this.continueScalar(e+1);if(t===-1)break;e=this.buffer.indexOf(` +`,t)}while(e!==-1);if(e===-1){if(!this.atEnd)return this.setNext(`block-scalar`);e=this.buffer.length}}let i=e+1;for(r=this.buffer[i];r===` `;)r=this.buffer[++i];if(r===` `){for(;r===` `||r===` `||r===`\r`||r===` +`;)r=this.buffer[++i];e=i-1}else if(!this.blockScalarKeep)do{let t=e-1,r=this.buffer[t];r===`\r`&&(r=this.buffer[--t]);let i=t;for(;r===` `;)r=this.buffer[--t];if(r===` +`&&t>=this.pos&&t+1+n>i)e=t;else break}while(!0);return yield t.SCALAR,yield*this.pushToIndex(e+1,!0),yield*this.parseLineStart()}*parsePlainScalar(){let e=this.flowLevel>0,r=this.pos-1,i=this.pos-1,o;for(;o=this.buffer[++i];)if(o===`:`){let t=this.buffer[i+1];if(n(t)||e&&a.has(t))break;r=i}else if(n(o)){let t=this.buffer[i+1];if(o===`\r`&&(t===` +`?(i+=1,o=` +`,t=this.buffer[i+1]):r=i),t===`#`||e&&a.has(t))break;if(o===` +`){let e=this.continueScalar(i+1);if(e===-1)break;i=Math.max(i,e-2)}}else{if(e&&a.has(o))break;r=i}return!o&&!this.atEnd?this.setNext(`plain-scalar`):(yield t.SCALAR,yield*this.pushToIndex(r+1,!0),e?`flow`:`doc`)}*pushCount(e){return e>0?(yield this.buffer.substr(this.pos,e),this.pos+=e,e):0}*pushToIndex(e,t){let n=this.buffer.slice(this.pos,e);return n?(yield n,this.pos+=n.length,n.length):(t&&(yield``),0)}*pushIndicators(){switch(this.charAt(0)){case`!`:return(yield*this.pushTag())+(yield*this.pushSpaces(!0))+(yield*this.pushIndicators());case`&`:return(yield*this.pushUntil(s))+(yield*this.pushSpaces(!0))+(yield*this.pushIndicators());case`-`:case`?`:case`:`:{let e=this.flowLevel>0,t=this.charAt(1);if(n(t)||e&&a.has(t))return e?this.flowKey&&=!1:this.indentNext=this.indentValue+1,(yield*this.pushCount(1))+(yield*this.pushSpaces(!0))+(yield*this.pushIndicators())}}return 0}*pushTag(){if(this.charAt(1)===`<`){let e=this.pos+2,t=this.buffer[e];for(;!n(t)&&t!==`>`;)t=this.buffer[++e];return yield*this.pushToIndex(t===`>`?e+1:e,!1)}else{let e=this.pos+1,t=this.buffer[e];for(;t;)if(i.has(t))t=this.buffer[++e];else if(t===`%`&&r.has(this.buffer[e+1])&&r.has(this.buffer[e+2]))t=this.buffer[e+=3];else break;return yield*this.pushToIndex(e,!1)}}*pushNewline(){let e=this.buffer[this.pos];return e===` +`?yield*this.pushCount(1):e===`\r`&&this.charAt(1)===` +`?yield*this.pushCount(2):0}*pushSpaces(e){let t=this.pos-1,n;do n=this.buffer[++t];while(n===` `||e&&n===` `);let r=t-this.pos;return r>0&&(yield this.buffer.substr(this.pos,r),this.pos=t),r}*pushUntil(e){let t=this.pos,n=this.buffer[t];for(;!e(n);)n=this.buffer[++t];return yield*this.pushToIndex(t,!1)}}})),er=b((e=>{e.LineCounter=class{constructor(){this.lineStarts=[],this.addNewLine=e=>this.lineStarts.push(e),this.linePos=e=>{let t=0,n=this.lineStarts.length;for(;t>1;this.lineStarts[r]{var t=T(`process`),n=Qn(),r=$n();function i(e,t){for(let n=0;n=0;)switch(e[t].type){case`doc-start`:case`explicit-key-ind`:case`map-value-ind`:case`seq-item-ind`:case`newline`:break loop}for(;e[++t]?.type===`space`;);return e.splice(t,e.length)}function l(e){if(e.start.type===`flow-seq-start`)for(let t of e.items)t.sep&&!t.value&&!i(t.start,`explicit-key-ind`)&&!i(t.sep,`map-value-ind`)&&(t.key&&(t.value=t.key),delete t.key,o(t.value)?t.value.end?Array.prototype.push.apply(t.value.end,t.sep):t.value.end=t.sep:Array.prototype.push.apply(t.start,t.sep),delete t.sep)}e.Parser=class{constructor(e){this.atNewLine=!0,this.atScalar=!1,this.indent=0,this.offset=0,this.onKeyLine=!1,this.stack=[],this.source=``,this.type=``,this.lexer=new r.Lexer,this.onNewLine=e}*parse(e,t=!1){this.onNewLine&&this.offset===0&&this.onNewLine(0);for(let n of this.lexer.lex(e,t))yield*this.next(n);t||(yield*this.end())}*next(e){if(this.source=e,t.env.LOG_TOKENS&&console.log(`|`,n.prettyToken(e)),this.atScalar){this.atScalar=!1,yield*this.step(),this.offset+=e.length;return}let r=n.tokenType(e);if(r)if(r===`scalar`)this.atNewLine=!1,this.atScalar=!0,this.type=`scalar`;else{switch(this.type=r,yield*this.step(),r){case`newline`:this.atNewLine=!0,this.indent=0,this.onNewLine&&this.onNewLine(this.offset+e.length);break;case`space`:this.atNewLine&&e[0]===` `&&(this.indent+=e.length);break;case`explicit-key-ind`:case`map-value-ind`:case`seq-item-ind`:this.atNewLine&&(this.indent+=e.length);break;case`doc-mode`:case`flow-error-end`:return;default:this.atNewLine=!1}this.offset+=e.length}else{let t=`Not a YAML token: ${e}`;yield*this.pop({type:`error`,offset:this.offset,message:t,source:e}),this.offset+=e.length}}*end(){for(;this.stack.length>0;)yield*this.pop()}get sourceToken(){return{type:this.type,offset:this.offset,indent:this.indent,source:this.source}}*step(){let e=this.peek(1);if(this.type===`doc-end`&&(!e||e.type!==`doc-end`)){for(;this.stack.length>0;)yield*this.pop();this.stack.push({type:`doc-end`,offset:this.offset,source:this.source});return}if(!e)return yield*this.stream();switch(e.type){case`document`:return yield*this.document(e);case`alias`:case`scalar`:case`single-quoted-scalar`:case`double-quoted-scalar`:return yield*this.scalar(e);case`block-scalar`:return yield*this.blockScalar(e);case`block-map`:return yield*this.blockMap(e);case`block-seq`:return yield*this.blockSequence(e);case`flow-collection`:return yield*this.flowCollection(e);case`doc-end`:return yield*this.documentEnd(e)}yield*this.pop()}peek(e){return this.stack[this.stack.length-e]}*pop(e){let t=e??this.stack.pop();if(!t)yield{type:`error`,offset:this.offset,source:``,message:`Tried to pop an empty stack`};else if(this.stack.length===0)yield t;else{let e=this.peek(1);switch(t.type===`block-scalar`?t.indent=`indent`in e?e.indent:0:t.type===`flow-collection`&&e.type===`document`&&(t.indent=0),t.type===`flow-collection`&&l(t),e.type){case`document`:e.value=t;break;case`block-scalar`:e.props.push(t);break;case`block-map`:{let n=e.items[e.items.length-1];if(n.value){e.items.push({start:[],key:t,sep:[]}),this.onKeyLine=!0;return}else if(n.sep)n.value=t;else{Object.assign(n,{key:t,sep:[]}),this.onKeyLine=!n.explicitKey;return}break}case`block-seq`:{let n=e.items[e.items.length-1];n.value?e.items.push({start:[],value:t}):n.value=t;break}case`flow-collection`:{let n=e.items[e.items.length-1];!n||n.value?e.items.push({start:[],key:t,sep:[]}):n.sep?n.value=t:Object.assign(n,{key:t,sep:[]});return}default:yield*this.pop(),yield*this.pop(t)}if((e.type===`document`||e.type===`block-map`||e.type===`block-seq`)&&(t.type===`block-map`||t.type===`block-seq`)){let n=t.items[t.items.length-1];n&&!n.sep&&!n.value&&n.start.length>0&&a(n.start)===-1&&(t.indent===0||n.start.every(e=>e.type!==`comment`||e.indent=e.indent){let n=!this.onKeyLine&&this.indent===e.indent,r=n&&(t.sep||t.explicitKey)&&this.type!==`seq-item-ind`,a=[];if(r&&t.sep&&!t.value){let n=[];for(let r=0;re.indent&&(n.length=0);break;default:n.length=0}}n.length>=2&&(a=t.sep.splice(n[1]))}switch(this.type){case`anchor`:case`tag`:r||t.value?(a.push(this.sourceToken),e.items.push({start:a}),this.onKeyLine=!0):t.sep?t.sep.push(this.sourceToken):t.start.push(this.sourceToken);return;case`explicit-key-ind`:!t.sep&&!t.explicitKey?(t.start.push(this.sourceToken),t.explicitKey=!0):r||t.value?(a.push(this.sourceToken),e.items.push({start:a,explicitKey:!0})):this.stack.push({type:`block-map`,offset:this.offset,indent:this.indent,items:[{start:[this.sourceToken],explicitKey:!0}]}),this.onKeyLine=!0;return;case`map-value-ind`:if(t.explicitKey)if(t.sep)if(t.value)e.items.push({start:[],key:null,sep:[this.sourceToken]});else if(i(t.sep,`map-value-ind`))this.stack.push({type:`block-map`,offset:this.offset,indent:this.indent,items:[{start:a,key:null,sep:[this.sourceToken]}]});else if(o(t.key)&&!i(t.sep,`newline`)){let e=c(t.start),n=t.key,r=t.sep;r.push(this.sourceToken),delete t.key,delete t.sep,this.stack.push({type:`block-map`,offset:this.offset,indent:this.indent,items:[{start:e,key:n,sep:r}]})}else a.length>0?t.sep=t.sep.concat(a,this.sourceToken):t.sep.push(this.sourceToken);else if(i(t.start,`newline`))Object.assign(t,{key:null,sep:[this.sourceToken]});else{let e=c(t.start);this.stack.push({type:`block-map`,offset:this.offset,indent:this.indent,items:[{start:e,key:null,sep:[this.sourceToken]}]})}else t.sep?t.value||r?e.items.push({start:a,key:null,sep:[this.sourceToken]}):i(t.sep,`map-value-ind`)?this.stack.push({type:`block-map`,offset:this.offset,indent:this.indent,items:[{start:[],key:null,sep:[this.sourceToken]}]}):t.sep.push(this.sourceToken):Object.assign(t,{key:null,sep:[this.sourceToken]});this.onKeyLine=!0;return;case`alias`:case`scalar`:case`single-quoted-scalar`:case`double-quoted-scalar`:{let n=this.flowScalar(this.type);r||t.value?(e.items.push({start:a,key:n,sep:[]}),this.onKeyLine=!0):t.sep?this.stack.push(n):(Object.assign(t,{key:n,sep:[]}),this.onKeyLine=!0);return}default:{let r=this.startBlockValue(e);if(r){if(r.type===`block-seq`){if(!t.explicitKey&&t.sep&&!i(t.sep,`newline`)){yield*this.pop({type:`error`,offset:this.offset,message:`Unexpected block-seq-ind on same line with key`,source:this.source});return}}else n&&e.items.push({start:a});this.stack.push(r);return}}}}yield*this.pop(),yield*this.step()}*blockSequence(e){let t=e.items[e.items.length-1];switch(this.type){case`newline`:if(t.value){let n=`end`in t.value?t.value.end:void 0;(Array.isArray(n)?n[n.length-1]:void 0)?.type===`comment`?n?.push(this.sourceToken):e.items.push({start:[this.sourceToken]})}else t.start.push(this.sourceToken);return;case`space`:case`comment`:if(t.value)e.items.push({start:[this.sourceToken]});else{if(this.atIndentedComment(t.start,e.indent)){let n=e.items[e.items.length-2]?.value?.end;if(Array.isArray(n)){Array.prototype.push.apply(n,t.start),n.push(this.sourceToken),e.items.pop();return}}t.start.push(this.sourceToken)}return;case`anchor`:case`tag`:if(t.value||this.indent<=e.indent)break;t.start.push(this.sourceToken);return;case`seq-item-ind`:if(this.indent!==e.indent)break;t.value||i(t.start,`seq-item-ind`)?e.items.push({start:[this.sourceToken]}):t.start.push(this.sourceToken);return}if(this.indent>e.indent){let t=this.startBlockValue(e);if(t){this.stack.push(t);return}}yield*this.pop(),yield*this.step()}*flowCollection(e){let t=e.items[e.items.length-1];if(this.type===`flow-error-end`){let e;do yield*this.pop(),e=this.peek(1);while(e&&e.type===`flow-collection`)}else if(e.end.length===0){switch(this.type){case`comma`:case`explicit-key-ind`:!t||t.sep?e.items.push({start:[this.sourceToken]}):t.start.push(this.sourceToken);return;case`map-value-ind`:!t||t.value?e.items.push({start:[],key:null,sep:[this.sourceToken]}):t.sep?t.sep.push(this.sourceToken):Object.assign(t,{key:null,sep:[this.sourceToken]});return;case`space`:case`comment`:case`newline`:case`anchor`:case`tag`:!t||t.value?e.items.push({start:[this.sourceToken]}):t.sep?t.sep.push(this.sourceToken):t.start.push(this.sourceToken);return;case`alias`:case`scalar`:case`single-quoted-scalar`:case`double-quoted-scalar`:{let n=this.flowScalar(this.type);!t||t.value?e.items.push({start:[],key:n,sep:[]}):t.sep?this.stack.push(n):Object.assign(t,{key:n,sep:[]});return}case`flow-map-end`:case`flow-seq-end`:e.end.push(this.sourceToken);return}let n=this.startBlockValue(e);n?this.stack.push(n):(yield*this.pop(),yield*this.step())}else{let t=this.peek(2);if(t.type===`block-map`&&(this.type===`map-value-ind`&&t.indent===e.indent||this.type===`newline`&&!t.items[t.items.length-1].sep))yield*this.pop(),yield*this.step();else if(this.type===`map-value-ind`&&t.type!==`flow-collection`){let n=c(s(t));l(e);let r=e.end.splice(1,e.end.length);r.push(this.sourceToken);let i={type:`block-map`,offset:e.offset,indent:e.indent,items:[{start:n,key:e,sep:r}]};this.onKeyLine=!0,this.stack[this.stack.length-1]=i}else yield*this.lineEnd(e)}}flowScalar(e){if(this.onNewLine){let e=this.source.indexOf(` +`)+1;for(;e!==0;)this.onNewLine(this.offset+e),e=this.source.indexOf(` +`,e)+1}return{type:e,offset:this.offset,indent:this.indent,source:this.source}}startBlockValue(e){switch(this.type){case`alias`:case`scalar`:case`single-quoted-scalar`:case`double-quoted-scalar`:return this.flowScalar(this.type);case`block-scalar-header`:return{type:`block-scalar`,offset:this.offset,indent:this.indent,props:[this.sourceToken],source:``};case`flow-map-start`:case`flow-seq-start`:return{type:`flow-collection`,offset:this.offset,indent:this.indent,start:this.sourceToken,items:[],end:[]};case`seq-item-ind`:return{type:`block-seq`,offset:this.offset,indent:this.indent,items:[{start:[this.sourceToken]}]};case`explicit-key-ind`:{this.onKeyLine=!0;let t=c(s(e));return t.push(this.sourceToken),{type:`block-map`,offset:this.offset,indent:this.indent,items:[{start:t,explicitKey:!0}]}}case`map-value-ind`:{this.onKeyLine=!0;let t=c(s(e));return{type:`block-map`,offset:this.offset,indent:this.indent,items:[{start:t,key:null,sep:[this.sourceToken]}]}}}return null}atIndentedComment(e,t){return this.type!==`comment`||this.indent<=t?!1:e.every(e=>e.type===`newline`||e.type===`space`)}*documentEnd(e){this.type!==`doc-mode`&&(e.end?e.end.push(this.sourceToken):e.end=[this.sourceToken],this.type===`newline`&&(yield*this.pop()))}*lineEnd(e){switch(this.type){case`comma`:case`doc-start`:case`doc-end`:case`flow-seq-end`:case`flow-map-end`:case`map-value-ind`:yield*this.pop(),yield*this.step();break;case`newline`:this.onKeyLine=!1;case`space`:case`comment`:default:e.end?e.end.push(this.sourceToken):e.end=[this.sourceToken],this.type===`newline`&&(yield*this.pop())}}}})),nr=b((e=>{var t=Jn(),n=jn(),r=Mn(),i=$(),a=Q(),o=er(),s=tr();function c(e){let t=e.prettyErrors!==!1;return{lineCounter:e.lineCounter||t&&new o.LineCounter||null,prettyErrors:t}}function l(e,n={}){let{lineCounter:i,prettyErrors:a}=c(n),o=new s.Parser(i?.addNewLine),l=new t.Composer(n),u=Array.from(l.compose(o.parse(e)));if(a&&i)for(let t of u)t.errors.forEach(r.prettifyError(e,i)),t.warnings.forEach(r.prettifyError(e,i));return u.length>0?u:Object.assign([],{empty:!0},l.streamInfo())}function u(e,n={}){let{lineCounter:i,prettyErrors:a}=c(n),o=new s.Parser(i?.addNewLine),l=new t.Composer(n),u=null;for(let t of l.compose(o.parse(e),!0,e.length))if(!u)u=t;else if(u.options.logLevel!==`silent`){u.errors.push(new r.YAMLParseError(t.range.slice(0,2),`MULTIPLE_DOCS`,`Source contains multiple documents; please use YAML.parseAllDocuments()`));break}return a&&i&&(u.errors.forEach(r.prettifyError(e,i)),u.warnings.forEach(r.prettifyError(e,i))),u}function d(e,t,n){let r;typeof t==`function`?r=t:n===void 0&&t&&typeof t==`object`&&(n=t);let a=u(e,n);if(!a)return null;if(a.warnings.forEach(e=>i.warn(a.options.logLevel,e)),a.errors.length>0){if(a.options.logLevel!==`silent`)throw a.errors[0];a.errors=[]}return a.toJS(Object.assign({reviver:r},n))}function f(e,t,r){let i=null;if(typeof t==`function`||Array.isArray(t)?i=t:r===void 0&&t&&(r=t),typeof r==`string`&&(r=r.length),typeof r==`number`){let e=Math.round(r);r=e<1?void 0:e>8?{indent:8}:{indent:e}}if(e===void 0){let{keepUndefined:e}=r??t??{};if(!e)return}return a.isDocument(e)&&!i?e.toString(r):new n.Document(e,i,r).toString(r)}e.parse=d,e.parseAllDocuments=l,e.parseDocument=u,e.stringify=f})),rr=b((e=>{var t=Jn(),n=jn(),r=kn(),i=Mn(),a=qt(),o=Q(),s=an(),c=Jt(),l=sn(),u=ln(),d=Qn(),f=$n(),p=er(),m=tr(),h=nr(),g=Vt();e.Composer=t.Composer,e.Document=n.Document,e.Schema=r.Schema,e.YAMLError=i.YAMLError,e.YAMLParseError=i.YAMLParseError,e.YAMLWarning=i.YAMLWarning,e.Alias=a.Alias,e.isAlias=o.isAlias,e.isCollection=o.isCollection,e.isDocument=o.isDocument,e.isMap=o.isMap,e.isNode=o.isNode,e.isPair=o.isPair,e.isScalar=o.isScalar,e.isSeq=o.isSeq,e.Pair=s.Pair,e.Scalar=c.Scalar,e.YAMLMap=l.YAMLMap,e.YAMLSeq=u.YAMLSeq,e.CST=d,e.Lexer=f.Lexer,e.LineCounter=p.LineCounter,e.Parser=m.Parser,e.parse=h.parse,e.parseAllDocuments=h.parseAllDocuments,e.parseDocument=h.parseDocument,e.stringify=h.stringify,e.visit=g.visit,e.visitAsync=g.visitAsync})),ir=b(((e,t)=>{var n={};t.exports=n;function r(e){return e<0?-1:1}function i(e){return e%1==.5&&!(e&1)?Math.floor(e):Math.round(e)}function a(e,t){t.unsigned||--e;let n=t.unsigned?0:-(2**e),a=2**e-1,o=t.moduloBitLength?2**t.moduloBitLength:2**e,s=t.moduloBitLength?2**(t.moduloBitLength-1):2**(e-1);return function(e,c){c||={};let l=+e;if(c.enforceRange){if(!Number.isFinite(l))throw TypeError(`Argument is not a finite number`);if(l=r(l)*Math.floor(Math.abs(l)),la)throw TypeError(`Argument is not in byte range`);return l}if(!isNaN(l)&&c.clamp)return l=i(l),la&&(l=a),l;if(!Number.isFinite(l)||l===0)return 0;if(l=r(l)*Math.floor(Math.abs(l)),l%=o,!t.unsigned&&l>=s)return l-o;if(t.unsigned){if(l<0)l+=o;else if(l===-0)return 0}return l}}n.void=function(){},n.boolean=function(e){return!!e},n.byte=a(8,{unsigned:!1}),n.octet=a(8,{unsigned:!0}),n.short=a(16,{unsigned:!1}),n[`unsigned short`]=a(16,{unsigned:!0}),n.long=a(32,{unsigned:!1}),n[`unsigned long`]=a(32,{unsigned:!0}),n[`long long`]=a(32,{unsigned:!1,moduloBitLength:64}),n[`unsigned long long`]=a(32,{unsigned:!0,moduloBitLength:64}),n.double=function(e){let t=+e;if(!Number.isFinite(t))throw TypeError(`Argument is not a finite floating-point value`);return t},n[`unrestricted double`]=function(e){let t=+e;if(isNaN(t))throw TypeError(`Argument is NaN`);return t},n.float=n.double,n[`unrestricted float`]=n[`unrestricted double`],n.DOMString=function(e,t){return t||={},t.treatNullAsEmptyString&&e===null?``:String(e)},n.ByteString=function(e,t){let n=String(e),r;for(let e=0;(r=n.codePointAt(e))!==void 0;++e)if(r>255)throw TypeError(`Argument is not a valid bytestring`);return n},n.USVString=function(e){let t=String(e),n=t.length,r=[];for(let e=0;e57343)r.push(String.fromCodePoint(i));else if(56320<=i&&i<=57343)r.push(String.fromCodePoint(65533));else if(e===n-1)r.push(String.fromCodePoint(65533));else{let n=t.charCodeAt(e+1);if(56320<=n&&n<=57343){let t=i&1023,a=n&1023;r.push(String.fromCodePoint(65536+1024*t+a)),++e}else r.push(String.fromCodePoint(65533))}}return r.join(``)},n.Date=function(e,t){if(!(e instanceof Date))throw TypeError(`Argument is not a Date object`);if(!isNaN(e))return e},n.RegExp=function(e,t){return e instanceof RegExp||(e=new RegExp(e)),e}})),ar=b(((e,t)=>{t.exports.mixin=function(e,t){let n=Object.getOwnPropertyNames(t);for(let r=0;r{t.exports=[[[0,44],`disallowed_STD3_valid`],[[45,46],`valid`],[[47,47],`disallowed_STD3_valid`],[[48,57],`valid`],[[58,64],`disallowed_STD3_valid`],[[65,65],`mapped`,[97]],[[66,66],`mapped`,[98]],[[67,67],`mapped`,[99]],[[68,68],`mapped`,[100]],[[69,69],`mapped`,[101]],[[70,70],`mapped`,[102]],[[71,71],`mapped`,[103]],[[72,72],`mapped`,[104]],[[73,73],`mapped`,[105]],[[74,74],`mapped`,[106]],[[75,75],`mapped`,[107]],[[76,76],`mapped`,[108]],[[77,77],`mapped`,[109]],[[78,78],`mapped`,[110]],[[79,79],`mapped`,[111]],[[80,80],`mapped`,[112]],[[81,81],`mapped`,[113]],[[82,82],`mapped`,[114]],[[83,83],`mapped`,[115]],[[84,84],`mapped`,[116]],[[85,85],`mapped`,[117]],[[86,86],`mapped`,[118]],[[87,87],`mapped`,[119]],[[88,88],`mapped`,[120]],[[89,89],`mapped`,[121]],[[90,90],`mapped`,[122]],[[91,96],`disallowed_STD3_valid`],[[97,122],`valid`],[[123,127],`disallowed_STD3_valid`],[[128,159],`disallowed`],[[160,160],`disallowed_STD3_mapped`,[32]],[[161,167],`valid`,[],`NV8`],[[168,168],`disallowed_STD3_mapped`,[32,776]],[[169,169],`valid`,[],`NV8`],[[170,170],`mapped`,[97]],[[171,172],`valid`,[],`NV8`],[[173,173],`ignored`],[[174,174],`valid`,[],`NV8`],[[175,175],`disallowed_STD3_mapped`,[32,772]],[[176,177],`valid`,[],`NV8`],[[178,178],`mapped`,[50]],[[179,179],`mapped`,[51]],[[180,180],`disallowed_STD3_mapped`,[32,769]],[[181,181],`mapped`,[956]],[[182,182],`valid`,[],`NV8`],[[183,183],`valid`],[[184,184],`disallowed_STD3_mapped`,[32,807]],[[185,185],`mapped`,[49]],[[186,186],`mapped`,[111]],[[187,187],`valid`,[],`NV8`],[[188,188],`mapped`,[49,8260,52]],[[189,189],`mapped`,[49,8260,50]],[[190,190],`mapped`,[51,8260,52]],[[191,191],`valid`,[],`NV8`],[[192,192],`mapped`,[224]],[[193,193],`mapped`,[225]],[[194,194],`mapped`,[226]],[[195,195],`mapped`,[227]],[[196,196],`mapped`,[228]],[[197,197],`mapped`,[229]],[[198,198],`mapped`,[230]],[[199,199],`mapped`,[231]],[[200,200],`mapped`,[232]],[[201,201],`mapped`,[233]],[[202,202],`mapped`,[234]],[[203,203],`mapped`,[235]],[[204,204],`mapped`,[236]],[[205,205],`mapped`,[237]],[[206,206],`mapped`,[238]],[[207,207],`mapped`,[239]],[[208,208],`mapped`,[240]],[[209,209],`mapped`,[241]],[[210,210],`mapped`,[242]],[[211,211],`mapped`,[243]],[[212,212],`mapped`,[244]],[[213,213],`mapped`,[245]],[[214,214],`mapped`,[246]],[[215,215],`valid`,[],`NV8`],[[216,216],`mapped`,[248]],[[217,217],`mapped`,[249]],[[218,218],`mapped`,[250]],[[219,219],`mapped`,[251]],[[220,220],`mapped`,[252]],[[221,221],`mapped`,[253]],[[222,222],`mapped`,[254]],[[223,223],`deviation`,[115,115]],[[224,246],`valid`],[[247,247],`valid`,[],`NV8`],[[248,255],`valid`],[[256,256],`mapped`,[257]],[[257,257],`valid`],[[258,258],`mapped`,[259]],[[259,259],`valid`],[[260,260],`mapped`,[261]],[[261,261],`valid`],[[262,262],`mapped`,[263]],[[263,263],`valid`],[[264,264],`mapped`,[265]],[[265,265],`valid`],[[266,266],`mapped`,[267]],[[267,267],`valid`],[[268,268],`mapped`,[269]],[[269,269],`valid`],[[270,270],`mapped`,[271]],[[271,271],`valid`],[[272,272],`mapped`,[273]],[[273,273],`valid`],[[274,274],`mapped`,[275]],[[275,275],`valid`],[[276,276],`mapped`,[277]],[[277,277],`valid`],[[278,278],`mapped`,[279]],[[279,279],`valid`],[[280,280],`mapped`,[281]],[[281,281],`valid`],[[282,282],`mapped`,[283]],[[283,283],`valid`],[[284,284],`mapped`,[285]],[[285,285],`valid`],[[286,286],`mapped`,[287]],[[287,287],`valid`],[[288,288],`mapped`,[289]],[[289,289],`valid`],[[290,290],`mapped`,[291]],[[291,291],`valid`],[[292,292],`mapped`,[293]],[[293,293],`valid`],[[294,294],`mapped`,[295]],[[295,295],`valid`],[[296,296],`mapped`,[297]],[[297,297],`valid`],[[298,298],`mapped`,[299]],[[299,299],`valid`],[[300,300],`mapped`,[301]],[[301,301],`valid`],[[302,302],`mapped`,[303]],[[303,303],`valid`],[[304,304],`mapped`,[105,775]],[[305,305],`valid`],[[306,307],`mapped`,[105,106]],[[308,308],`mapped`,[309]],[[309,309],`valid`],[[310,310],`mapped`,[311]],[[311,312],`valid`],[[313,313],`mapped`,[314]],[[314,314],`valid`],[[315,315],`mapped`,[316]],[[316,316],`valid`],[[317,317],`mapped`,[318]],[[318,318],`valid`],[[319,320],`mapped`,[108,183]],[[321,321],`mapped`,[322]],[[322,322],`valid`],[[323,323],`mapped`,[324]],[[324,324],`valid`],[[325,325],`mapped`,[326]],[[326,326],`valid`],[[327,327],`mapped`,[328]],[[328,328],`valid`],[[329,329],`mapped`,[700,110]],[[330,330],`mapped`,[331]],[[331,331],`valid`],[[332,332],`mapped`,[333]],[[333,333],`valid`],[[334,334],`mapped`,[335]],[[335,335],`valid`],[[336,336],`mapped`,[337]],[[337,337],`valid`],[[338,338],`mapped`,[339]],[[339,339],`valid`],[[340,340],`mapped`,[341]],[[341,341],`valid`],[[342,342],`mapped`,[343]],[[343,343],`valid`],[[344,344],`mapped`,[345]],[[345,345],`valid`],[[346,346],`mapped`,[347]],[[347,347],`valid`],[[348,348],`mapped`,[349]],[[349,349],`valid`],[[350,350],`mapped`,[351]],[[351,351],`valid`],[[352,352],`mapped`,[353]],[[353,353],`valid`],[[354,354],`mapped`,[355]],[[355,355],`valid`],[[356,356],`mapped`,[357]],[[357,357],`valid`],[[358,358],`mapped`,[359]],[[359,359],`valid`],[[360,360],`mapped`,[361]],[[361,361],`valid`],[[362,362],`mapped`,[363]],[[363,363],`valid`],[[364,364],`mapped`,[365]],[[365,365],`valid`],[[366,366],`mapped`,[367]],[[367,367],`valid`],[[368,368],`mapped`,[369]],[[369,369],`valid`],[[370,370],`mapped`,[371]],[[371,371],`valid`],[[372,372],`mapped`,[373]],[[373,373],`valid`],[[374,374],`mapped`,[375]],[[375,375],`valid`],[[376,376],`mapped`,[255]],[[377,377],`mapped`,[378]],[[378,378],`valid`],[[379,379],`mapped`,[380]],[[380,380],`valid`],[[381,381],`mapped`,[382]],[[382,382],`valid`],[[383,383],`mapped`,[115]],[[384,384],`valid`],[[385,385],`mapped`,[595]],[[386,386],`mapped`,[387]],[[387,387],`valid`],[[388,388],`mapped`,[389]],[[389,389],`valid`],[[390,390],`mapped`,[596]],[[391,391],`mapped`,[392]],[[392,392],`valid`],[[393,393],`mapped`,[598]],[[394,394],`mapped`,[599]],[[395,395],`mapped`,[396]],[[396,397],`valid`],[[398,398],`mapped`,[477]],[[399,399],`mapped`,[601]],[[400,400],`mapped`,[603]],[[401,401],`mapped`,[402]],[[402,402],`valid`],[[403,403],`mapped`,[608]],[[404,404],`mapped`,[611]],[[405,405],`valid`],[[406,406],`mapped`,[617]],[[407,407],`mapped`,[616]],[[408,408],`mapped`,[409]],[[409,411],`valid`],[[412,412],`mapped`,[623]],[[413,413],`mapped`,[626]],[[414,414],`valid`],[[415,415],`mapped`,[629]],[[416,416],`mapped`,[417]],[[417,417],`valid`],[[418,418],`mapped`,[419]],[[419,419],`valid`],[[420,420],`mapped`,[421]],[[421,421],`valid`],[[422,422],`mapped`,[640]],[[423,423],`mapped`,[424]],[[424,424],`valid`],[[425,425],`mapped`,[643]],[[426,427],`valid`],[[428,428],`mapped`,[429]],[[429,429],`valid`],[[430,430],`mapped`,[648]],[[431,431],`mapped`,[432]],[[432,432],`valid`],[[433,433],`mapped`,[650]],[[434,434],`mapped`,[651]],[[435,435],`mapped`,[436]],[[436,436],`valid`],[[437,437],`mapped`,[438]],[[438,438],`valid`],[[439,439],`mapped`,[658]],[[440,440],`mapped`,[441]],[[441,443],`valid`],[[444,444],`mapped`,[445]],[[445,451],`valid`],[[452,454],`mapped`,[100,382]],[[455,457],`mapped`,[108,106]],[[458,460],`mapped`,[110,106]],[[461,461],`mapped`,[462]],[[462,462],`valid`],[[463,463],`mapped`,[464]],[[464,464],`valid`],[[465,465],`mapped`,[466]],[[466,466],`valid`],[[467,467],`mapped`,[468]],[[468,468],`valid`],[[469,469],`mapped`,[470]],[[470,470],`valid`],[[471,471],`mapped`,[472]],[[472,472],`valid`],[[473,473],`mapped`,[474]],[[474,474],`valid`],[[475,475],`mapped`,[476]],[[476,477],`valid`],[[478,478],`mapped`,[479]],[[479,479],`valid`],[[480,480],`mapped`,[481]],[[481,481],`valid`],[[482,482],`mapped`,[483]],[[483,483],`valid`],[[484,484],`mapped`,[485]],[[485,485],`valid`],[[486,486],`mapped`,[487]],[[487,487],`valid`],[[488,488],`mapped`,[489]],[[489,489],`valid`],[[490,490],`mapped`,[491]],[[491,491],`valid`],[[492,492],`mapped`,[493]],[[493,493],`valid`],[[494,494],`mapped`,[495]],[[495,496],`valid`],[[497,499],`mapped`,[100,122]],[[500,500],`mapped`,[501]],[[501,501],`valid`],[[502,502],`mapped`,[405]],[[503,503],`mapped`,[447]],[[504,504],`mapped`,[505]],[[505,505],`valid`],[[506,506],`mapped`,[507]],[[507,507],`valid`],[[508,508],`mapped`,[509]],[[509,509],`valid`],[[510,510],`mapped`,[511]],[[511,511],`valid`],[[512,512],`mapped`,[513]],[[513,513],`valid`],[[514,514],`mapped`,[515]],[[515,515],`valid`],[[516,516],`mapped`,[517]],[[517,517],`valid`],[[518,518],`mapped`,[519]],[[519,519],`valid`],[[520,520],`mapped`,[521]],[[521,521],`valid`],[[522,522],`mapped`,[523]],[[523,523],`valid`],[[524,524],`mapped`,[525]],[[525,525],`valid`],[[526,526],`mapped`,[527]],[[527,527],`valid`],[[528,528],`mapped`,[529]],[[529,529],`valid`],[[530,530],`mapped`,[531]],[[531,531],`valid`],[[532,532],`mapped`,[533]],[[533,533],`valid`],[[534,534],`mapped`,[535]],[[535,535],`valid`],[[536,536],`mapped`,[537]],[[537,537],`valid`],[[538,538],`mapped`,[539]],[[539,539],`valid`],[[540,540],`mapped`,[541]],[[541,541],`valid`],[[542,542],`mapped`,[543]],[[543,543],`valid`],[[544,544],`mapped`,[414]],[[545,545],`valid`],[[546,546],`mapped`,[547]],[[547,547],`valid`],[[548,548],`mapped`,[549]],[[549,549],`valid`],[[550,550],`mapped`,[551]],[[551,551],`valid`],[[552,552],`mapped`,[553]],[[553,553],`valid`],[[554,554],`mapped`,[555]],[[555,555],`valid`],[[556,556],`mapped`,[557]],[[557,557],`valid`],[[558,558],`mapped`,[559]],[[559,559],`valid`],[[560,560],`mapped`,[561]],[[561,561],`valid`],[[562,562],`mapped`,[563]],[[563,563],`valid`],[[564,566],`valid`],[[567,569],`valid`],[[570,570],`mapped`,[11365]],[[571,571],`mapped`,[572]],[[572,572],`valid`],[[573,573],`mapped`,[410]],[[574,574],`mapped`,[11366]],[[575,576],`valid`],[[577,577],`mapped`,[578]],[[578,578],`valid`],[[579,579],`mapped`,[384]],[[580,580],`mapped`,[649]],[[581,581],`mapped`,[652]],[[582,582],`mapped`,[583]],[[583,583],`valid`],[[584,584],`mapped`,[585]],[[585,585],`valid`],[[586,586],`mapped`,[587]],[[587,587],`valid`],[[588,588],`mapped`,[589]],[[589,589],`valid`],[[590,590],`mapped`,[591]],[[591,591],`valid`],[[592,680],`valid`],[[681,685],`valid`],[[686,687],`valid`],[[688,688],`mapped`,[104]],[[689,689],`mapped`,[614]],[[690,690],`mapped`,[106]],[[691,691],`mapped`,[114]],[[692,692],`mapped`,[633]],[[693,693],`mapped`,[635]],[[694,694],`mapped`,[641]],[[695,695],`mapped`,[119]],[[696,696],`mapped`,[121]],[[697,705],`valid`],[[706,709],`valid`,[],`NV8`],[[710,721],`valid`],[[722,727],`valid`,[],`NV8`],[[728,728],`disallowed_STD3_mapped`,[32,774]],[[729,729],`disallowed_STD3_mapped`,[32,775]],[[730,730],`disallowed_STD3_mapped`,[32,778]],[[731,731],`disallowed_STD3_mapped`,[32,808]],[[732,732],`disallowed_STD3_mapped`,[32,771]],[[733,733],`disallowed_STD3_mapped`,[32,779]],[[734,734],`valid`,[],`NV8`],[[735,735],`valid`,[],`NV8`],[[736,736],`mapped`,[611]],[[737,737],`mapped`,[108]],[[738,738],`mapped`,[115]],[[739,739],`mapped`,[120]],[[740,740],`mapped`,[661]],[[741,745],`valid`,[],`NV8`],[[746,747],`valid`,[],`NV8`],[[748,748],`valid`],[[749,749],`valid`,[],`NV8`],[[750,750],`valid`],[[751,767],`valid`,[],`NV8`],[[768,831],`valid`],[[832,832],`mapped`,[768]],[[833,833],`mapped`,[769]],[[834,834],`valid`],[[835,835],`mapped`,[787]],[[836,836],`mapped`,[776,769]],[[837,837],`mapped`,[953]],[[838,846],`valid`],[[847,847],`ignored`],[[848,855],`valid`],[[856,860],`valid`],[[861,863],`valid`],[[864,865],`valid`],[[866,866],`valid`],[[867,879],`valid`],[[880,880],`mapped`,[881]],[[881,881],`valid`],[[882,882],`mapped`,[883]],[[883,883],`valid`],[[884,884],`mapped`,[697]],[[885,885],`valid`],[[886,886],`mapped`,[887]],[[887,887],`valid`],[[888,889],`disallowed`],[[890,890],`disallowed_STD3_mapped`,[32,953]],[[891,893],`valid`],[[894,894],`disallowed_STD3_mapped`,[59]],[[895,895],`mapped`,[1011]],[[896,899],`disallowed`],[[900,900],`disallowed_STD3_mapped`,[32,769]],[[901,901],`disallowed_STD3_mapped`,[32,776,769]],[[902,902],`mapped`,[940]],[[903,903],`mapped`,[183]],[[904,904],`mapped`,[941]],[[905,905],`mapped`,[942]],[[906,906],`mapped`,[943]],[[907,907],`disallowed`],[[908,908],`mapped`,[972]],[[909,909],`disallowed`],[[910,910],`mapped`,[973]],[[911,911],`mapped`,[974]],[[912,912],`valid`],[[913,913],`mapped`,[945]],[[914,914],`mapped`,[946]],[[915,915],`mapped`,[947]],[[916,916],`mapped`,[948]],[[917,917],`mapped`,[949]],[[918,918],`mapped`,[950]],[[919,919],`mapped`,[951]],[[920,920],`mapped`,[952]],[[921,921],`mapped`,[953]],[[922,922],`mapped`,[954]],[[923,923],`mapped`,[955]],[[924,924],`mapped`,[956]],[[925,925],`mapped`,[957]],[[926,926],`mapped`,[958]],[[927,927],`mapped`,[959]],[[928,928],`mapped`,[960]],[[929,929],`mapped`,[961]],[[930,930],`disallowed`],[[931,931],`mapped`,[963]],[[932,932],`mapped`,[964]],[[933,933],`mapped`,[965]],[[934,934],`mapped`,[966]],[[935,935],`mapped`,[967]],[[936,936],`mapped`,[968]],[[937,937],`mapped`,[969]],[[938,938],`mapped`,[970]],[[939,939],`mapped`,[971]],[[940,961],`valid`],[[962,962],`deviation`,[963]],[[963,974],`valid`],[[975,975],`mapped`,[983]],[[976,976],`mapped`,[946]],[[977,977],`mapped`,[952]],[[978,978],`mapped`,[965]],[[979,979],`mapped`,[973]],[[980,980],`mapped`,[971]],[[981,981],`mapped`,[966]],[[982,982],`mapped`,[960]],[[983,983],`valid`],[[984,984],`mapped`,[985]],[[985,985],`valid`],[[986,986],`mapped`,[987]],[[987,987],`valid`],[[988,988],`mapped`,[989]],[[989,989],`valid`],[[990,990],`mapped`,[991]],[[991,991],`valid`],[[992,992],`mapped`,[993]],[[993,993],`valid`],[[994,994],`mapped`,[995]],[[995,995],`valid`],[[996,996],`mapped`,[997]],[[997,997],`valid`],[[998,998],`mapped`,[999]],[[999,999],`valid`],[[1e3,1e3],`mapped`,[1001]],[[1001,1001],`valid`],[[1002,1002],`mapped`,[1003]],[[1003,1003],`valid`],[[1004,1004],`mapped`,[1005]],[[1005,1005],`valid`],[[1006,1006],`mapped`,[1007]],[[1007,1007],`valid`],[[1008,1008],`mapped`,[954]],[[1009,1009],`mapped`,[961]],[[1010,1010],`mapped`,[963]],[[1011,1011],`valid`],[[1012,1012],`mapped`,[952]],[[1013,1013],`mapped`,[949]],[[1014,1014],`valid`,[],`NV8`],[[1015,1015],`mapped`,[1016]],[[1016,1016],`valid`],[[1017,1017],`mapped`,[963]],[[1018,1018],`mapped`,[1019]],[[1019,1019],`valid`],[[1020,1020],`valid`],[[1021,1021],`mapped`,[891]],[[1022,1022],`mapped`,[892]],[[1023,1023],`mapped`,[893]],[[1024,1024],`mapped`,[1104]],[[1025,1025],`mapped`,[1105]],[[1026,1026],`mapped`,[1106]],[[1027,1027],`mapped`,[1107]],[[1028,1028],`mapped`,[1108]],[[1029,1029],`mapped`,[1109]],[[1030,1030],`mapped`,[1110]],[[1031,1031],`mapped`,[1111]],[[1032,1032],`mapped`,[1112]],[[1033,1033],`mapped`,[1113]],[[1034,1034],`mapped`,[1114]],[[1035,1035],`mapped`,[1115]],[[1036,1036],`mapped`,[1116]],[[1037,1037],`mapped`,[1117]],[[1038,1038],`mapped`,[1118]],[[1039,1039],`mapped`,[1119]],[[1040,1040],`mapped`,[1072]],[[1041,1041],`mapped`,[1073]],[[1042,1042],`mapped`,[1074]],[[1043,1043],`mapped`,[1075]],[[1044,1044],`mapped`,[1076]],[[1045,1045],`mapped`,[1077]],[[1046,1046],`mapped`,[1078]],[[1047,1047],`mapped`,[1079]],[[1048,1048],`mapped`,[1080]],[[1049,1049],`mapped`,[1081]],[[1050,1050],`mapped`,[1082]],[[1051,1051],`mapped`,[1083]],[[1052,1052],`mapped`,[1084]],[[1053,1053],`mapped`,[1085]],[[1054,1054],`mapped`,[1086]],[[1055,1055],`mapped`,[1087]],[[1056,1056],`mapped`,[1088]],[[1057,1057],`mapped`,[1089]],[[1058,1058],`mapped`,[1090]],[[1059,1059],`mapped`,[1091]],[[1060,1060],`mapped`,[1092]],[[1061,1061],`mapped`,[1093]],[[1062,1062],`mapped`,[1094]],[[1063,1063],`mapped`,[1095]],[[1064,1064],`mapped`,[1096]],[[1065,1065],`mapped`,[1097]],[[1066,1066],`mapped`,[1098]],[[1067,1067],`mapped`,[1099]],[[1068,1068],`mapped`,[1100]],[[1069,1069],`mapped`,[1101]],[[1070,1070],`mapped`,[1102]],[[1071,1071],`mapped`,[1103]],[[1072,1103],`valid`],[[1104,1104],`valid`],[[1105,1116],`valid`],[[1117,1117],`valid`],[[1118,1119],`valid`],[[1120,1120],`mapped`,[1121]],[[1121,1121],`valid`],[[1122,1122],`mapped`,[1123]],[[1123,1123],`valid`],[[1124,1124],`mapped`,[1125]],[[1125,1125],`valid`],[[1126,1126],`mapped`,[1127]],[[1127,1127],`valid`],[[1128,1128],`mapped`,[1129]],[[1129,1129],`valid`],[[1130,1130],`mapped`,[1131]],[[1131,1131],`valid`],[[1132,1132],`mapped`,[1133]],[[1133,1133],`valid`],[[1134,1134],`mapped`,[1135]],[[1135,1135],`valid`],[[1136,1136],`mapped`,[1137]],[[1137,1137],`valid`],[[1138,1138],`mapped`,[1139]],[[1139,1139],`valid`],[[1140,1140],`mapped`,[1141]],[[1141,1141],`valid`],[[1142,1142],`mapped`,[1143]],[[1143,1143],`valid`],[[1144,1144],`mapped`,[1145]],[[1145,1145],`valid`],[[1146,1146],`mapped`,[1147]],[[1147,1147],`valid`],[[1148,1148],`mapped`,[1149]],[[1149,1149],`valid`],[[1150,1150],`mapped`,[1151]],[[1151,1151],`valid`],[[1152,1152],`mapped`,[1153]],[[1153,1153],`valid`],[[1154,1154],`valid`,[],`NV8`],[[1155,1158],`valid`],[[1159,1159],`valid`],[[1160,1161],`valid`,[],`NV8`],[[1162,1162],`mapped`,[1163]],[[1163,1163],`valid`],[[1164,1164],`mapped`,[1165]],[[1165,1165],`valid`],[[1166,1166],`mapped`,[1167]],[[1167,1167],`valid`],[[1168,1168],`mapped`,[1169]],[[1169,1169],`valid`],[[1170,1170],`mapped`,[1171]],[[1171,1171],`valid`],[[1172,1172],`mapped`,[1173]],[[1173,1173],`valid`],[[1174,1174],`mapped`,[1175]],[[1175,1175],`valid`],[[1176,1176],`mapped`,[1177]],[[1177,1177],`valid`],[[1178,1178],`mapped`,[1179]],[[1179,1179],`valid`],[[1180,1180],`mapped`,[1181]],[[1181,1181],`valid`],[[1182,1182],`mapped`,[1183]],[[1183,1183],`valid`],[[1184,1184],`mapped`,[1185]],[[1185,1185],`valid`],[[1186,1186],`mapped`,[1187]],[[1187,1187],`valid`],[[1188,1188],`mapped`,[1189]],[[1189,1189],`valid`],[[1190,1190],`mapped`,[1191]],[[1191,1191],`valid`],[[1192,1192],`mapped`,[1193]],[[1193,1193],`valid`],[[1194,1194],`mapped`,[1195]],[[1195,1195],`valid`],[[1196,1196],`mapped`,[1197]],[[1197,1197],`valid`],[[1198,1198],`mapped`,[1199]],[[1199,1199],`valid`],[[1200,1200],`mapped`,[1201]],[[1201,1201],`valid`],[[1202,1202],`mapped`,[1203]],[[1203,1203],`valid`],[[1204,1204],`mapped`,[1205]],[[1205,1205],`valid`],[[1206,1206],`mapped`,[1207]],[[1207,1207],`valid`],[[1208,1208],`mapped`,[1209]],[[1209,1209],`valid`],[[1210,1210],`mapped`,[1211]],[[1211,1211],`valid`],[[1212,1212],`mapped`,[1213]],[[1213,1213],`valid`],[[1214,1214],`mapped`,[1215]],[[1215,1215],`valid`],[[1216,1216],`disallowed`],[[1217,1217],`mapped`,[1218]],[[1218,1218],`valid`],[[1219,1219],`mapped`,[1220]],[[1220,1220],`valid`],[[1221,1221],`mapped`,[1222]],[[1222,1222],`valid`],[[1223,1223],`mapped`,[1224]],[[1224,1224],`valid`],[[1225,1225],`mapped`,[1226]],[[1226,1226],`valid`],[[1227,1227],`mapped`,[1228]],[[1228,1228],`valid`],[[1229,1229],`mapped`,[1230]],[[1230,1230],`valid`],[[1231,1231],`valid`],[[1232,1232],`mapped`,[1233]],[[1233,1233],`valid`],[[1234,1234],`mapped`,[1235]],[[1235,1235],`valid`],[[1236,1236],`mapped`,[1237]],[[1237,1237],`valid`],[[1238,1238],`mapped`,[1239]],[[1239,1239],`valid`],[[1240,1240],`mapped`,[1241]],[[1241,1241],`valid`],[[1242,1242],`mapped`,[1243]],[[1243,1243],`valid`],[[1244,1244],`mapped`,[1245]],[[1245,1245],`valid`],[[1246,1246],`mapped`,[1247]],[[1247,1247],`valid`],[[1248,1248],`mapped`,[1249]],[[1249,1249],`valid`],[[1250,1250],`mapped`,[1251]],[[1251,1251],`valid`],[[1252,1252],`mapped`,[1253]],[[1253,1253],`valid`],[[1254,1254],`mapped`,[1255]],[[1255,1255],`valid`],[[1256,1256],`mapped`,[1257]],[[1257,1257],`valid`],[[1258,1258],`mapped`,[1259]],[[1259,1259],`valid`],[[1260,1260],`mapped`,[1261]],[[1261,1261],`valid`],[[1262,1262],`mapped`,[1263]],[[1263,1263],`valid`],[[1264,1264],`mapped`,[1265]],[[1265,1265],`valid`],[[1266,1266],`mapped`,[1267]],[[1267,1267],`valid`],[[1268,1268],`mapped`,[1269]],[[1269,1269],`valid`],[[1270,1270],`mapped`,[1271]],[[1271,1271],`valid`],[[1272,1272],`mapped`,[1273]],[[1273,1273],`valid`],[[1274,1274],`mapped`,[1275]],[[1275,1275],`valid`],[[1276,1276],`mapped`,[1277]],[[1277,1277],`valid`],[[1278,1278],`mapped`,[1279]],[[1279,1279],`valid`],[[1280,1280],`mapped`,[1281]],[[1281,1281],`valid`],[[1282,1282],`mapped`,[1283]],[[1283,1283],`valid`],[[1284,1284],`mapped`,[1285]],[[1285,1285],`valid`],[[1286,1286],`mapped`,[1287]],[[1287,1287],`valid`],[[1288,1288],`mapped`,[1289]],[[1289,1289],`valid`],[[1290,1290],`mapped`,[1291]],[[1291,1291],`valid`],[[1292,1292],`mapped`,[1293]],[[1293,1293],`valid`],[[1294,1294],`mapped`,[1295]],[[1295,1295],`valid`],[[1296,1296],`mapped`,[1297]],[[1297,1297],`valid`],[[1298,1298],`mapped`,[1299]],[[1299,1299],`valid`],[[1300,1300],`mapped`,[1301]],[[1301,1301],`valid`],[[1302,1302],`mapped`,[1303]],[[1303,1303],`valid`],[[1304,1304],`mapped`,[1305]],[[1305,1305],`valid`],[[1306,1306],`mapped`,[1307]],[[1307,1307],`valid`],[[1308,1308],`mapped`,[1309]],[[1309,1309],`valid`],[[1310,1310],`mapped`,[1311]],[[1311,1311],`valid`],[[1312,1312],`mapped`,[1313]],[[1313,1313],`valid`],[[1314,1314],`mapped`,[1315]],[[1315,1315],`valid`],[[1316,1316],`mapped`,[1317]],[[1317,1317],`valid`],[[1318,1318],`mapped`,[1319]],[[1319,1319],`valid`],[[1320,1320],`mapped`,[1321]],[[1321,1321],`valid`],[[1322,1322],`mapped`,[1323]],[[1323,1323],`valid`],[[1324,1324],`mapped`,[1325]],[[1325,1325],`valid`],[[1326,1326],`mapped`,[1327]],[[1327,1327],`valid`],[[1328,1328],`disallowed`],[[1329,1329],`mapped`,[1377]],[[1330,1330],`mapped`,[1378]],[[1331,1331],`mapped`,[1379]],[[1332,1332],`mapped`,[1380]],[[1333,1333],`mapped`,[1381]],[[1334,1334],`mapped`,[1382]],[[1335,1335],`mapped`,[1383]],[[1336,1336],`mapped`,[1384]],[[1337,1337],`mapped`,[1385]],[[1338,1338],`mapped`,[1386]],[[1339,1339],`mapped`,[1387]],[[1340,1340],`mapped`,[1388]],[[1341,1341],`mapped`,[1389]],[[1342,1342],`mapped`,[1390]],[[1343,1343],`mapped`,[1391]],[[1344,1344],`mapped`,[1392]],[[1345,1345],`mapped`,[1393]],[[1346,1346],`mapped`,[1394]],[[1347,1347],`mapped`,[1395]],[[1348,1348],`mapped`,[1396]],[[1349,1349],`mapped`,[1397]],[[1350,1350],`mapped`,[1398]],[[1351,1351],`mapped`,[1399]],[[1352,1352],`mapped`,[1400]],[[1353,1353],`mapped`,[1401]],[[1354,1354],`mapped`,[1402]],[[1355,1355],`mapped`,[1403]],[[1356,1356],`mapped`,[1404]],[[1357,1357],`mapped`,[1405]],[[1358,1358],`mapped`,[1406]],[[1359,1359],`mapped`,[1407]],[[1360,1360],`mapped`,[1408]],[[1361,1361],`mapped`,[1409]],[[1362,1362],`mapped`,[1410]],[[1363,1363],`mapped`,[1411]],[[1364,1364],`mapped`,[1412]],[[1365,1365],`mapped`,[1413]],[[1366,1366],`mapped`,[1414]],[[1367,1368],`disallowed`],[[1369,1369],`valid`],[[1370,1375],`valid`,[],`NV8`],[[1376,1376],`disallowed`],[[1377,1414],`valid`],[[1415,1415],`mapped`,[1381,1410]],[[1416,1416],`disallowed`],[[1417,1417],`valid`,[],`NV8`],[[1418,1418],`valid`,[],`NV8`],[[1419,1420],`disallowed`],[[1421,1422],`valid`,[],`NV8`],[[1423,1423],`valid`,[],`NV8`],[[1424,1424],`disallowed`],[[1425,1441],`valid`],[[1442,1442],`valid`],[[1443,1455],`valid`],[[1456,1465],`valid`],[[1466,1466],`valid`],[[1467,1469],`valid`],[[1470,1470],`valid`,[],`NV8`],[[1471,1471],`valid`],[[1472,1472],`valid`,[],`NV8`],[[1473,1474],`valid`],[[1475,1475],`valid`,[],`NV8`],[[1476,1476],`valid`],[[1477,1477],`valid`],[[1478,1478],`valid`,[],`NV8`],[[1479,1479],`valid`],[[1480,1487],`disallowed`],[[1488,1514],`valid`],[[1515,1519],`disallowed`],[[1520,1524],`valid`],[[1525,1535],`disallowed`],[[1536,1539],`disallowed`],[[1540,1540],`disallowed`],[[1541,1541],`disallowed`],[[1542,1546],`valid`,[],`NV8`],[[1547,1547],`valid`,[],`NV8`],[[1548,1548],`valid`,[],`NV8`],[[1549,1551],`valid`,[],`NV8`],[[1552,1557],`valid`],[[1558,1562],`valid`],[[1563,1563],`valid`,[],`NV8`],[[1564,1564],`disallowed`],[[1565,1565],`disallowed`],[[1566,1566],`valid`,[],`NV8`],[[1567,1567],`valid`,[],`NV8`],[[1568,1568],`valid`],[[1569,1594],`valid`],[[1595,1599],`valid`],[[1600,1600],`valid`,[],`NV8`],[[1601,1618],`valid`],[[1619,1621],`valid`],[[1622,1624],`valid`],[[1625,1630],`valid`],[[1631,1631],`valid`],[[1632,1641],`valid`],[[1642,1645],`valid`,[],`NV8`],[[1646,1647],`valid`],[[1648,1652],`valid`],[[1653,1653],`mapped`,[1575,1652]],[[1654,1654],`mapped`,[1608,1652]],[[1655,1655],`mapped`,[1735,1652]],[[1656,1656],`mapped`,[1610,1652]],[[1657,1719],`valid`],[[1720,1721],`valid`],[[1722,1726],`valid`],[[1727,1727],`valid`],[[1728,1742],`valid`],[[1743,1743],`valid`],[[1744,1747],`valid`],[[1748,1748],`valid`,[],`NV8`],[[1749,1756],`valid`],[[1757,1757],`disallowed`],[[1758,1758],`valid`,[],`NV8`],[[1759,1768],`valid`],[[1769,1769],`valid`,[],`NV8`],[[1770,1773],`valid`],[[1774,1775],`valid`],[[1776,1785],`valid`],[[1786,1790],`valid`],[[1791,1791],`valid`],[[1792,1805],`valid`,[],`NV8`],[[1806,1806],`disallowed`],[[1807,1807],`disallowed`],[[1808,1836],`valid`],[[1837,1839],`valid`],[[1840,1866],`valid`],[[1867,1868],`disallowed`],[[1869,1871],`valid`],[[1872,1901],`valid`],[[1902,1919],`valid`],[[1920,1968],`valid`],[[1969,1969],`valid`],[[1970,1983],`disallowed`],[[1984,2037],`valid`],[[2038,2042],`valid`,[],`NV8`],[[2043,2047],`disallowed`],[[2048,2093],`valid`],[[2094,2095],`disallowed`],[[2096,2110],`valid`,[],`NV8`],[[2111,2111],`disallowed`],[[2112,2139],`valid`],[[2140,2141],`disallowed`],[[2142,2142],`valid`,[],`NV8`],[[2143,2207],`disallowed`],[[2208,2208],`valid`],[[2209,2209],`valid`],[[2210,2220],`valid`],[[2221,2226],`valid`],[[2227,2228],`valid`],[[2229,2274],`disallowed`],[[2275,2275],`valid`],[[2276,2302],`valid`],[[2303,2303],`valid`],[[2304,2304],`valid`],[[2305,2307],`valid`],[[2308,2308],`valid`],[[2309,2361],`valid`],[[2362,2363],`valid`],[[2364,2381],`valid`],[[2382,2382],`valid`],[[2383,2383],`valid`],[[2384,2388],`valid`],[[2389,2389],`valid`],[[2390,2391],`valid`],[[2392,2392],`mapped`,[2325,2364]],[[2393,2393],`mapped`,[2326,2364]],[[2394,2394],`mapped`,[2327,2364]],[[2395,2395],`mapped`,[2332,2364]],[[2396,2396],`mapped`,[2337,2364]],[[2397,2397],`mapped`,[2338,2364]],[[2398,2398],`mapped`,[2347,2364]],[[2399,2399],`mapped`,[2351,2364]],[[2400,2403],`valid`],[[2404,2405],`valid`,[],`NV8`],[[2406,2415],`valid`],[[2416,2416],`valid`,[],`NV8`],[[2417,2418],`valid`],[[2419,2423],`valid`],[[2424,2424],`valid`],[[2425,2426],`valid`],[[2427,2428],`valid`],[[2429,2429],`valid`],[[2430,2431],`valid`],[[2432,2432],`valid`],[[2433,2435],`valid`],[[2436,2436],`disallowed`],[[2437,2444],`valid`],[[2445,2446],`disallowed`],[[2447,2448],`valid`],[[2449,2450],`disallowed`],[[2451,2472],`valid`],[[2473,2473],`disallowed`],[[2474,2480],`valid`],[[2481,2481],`disallowed`],[[2482,2482],`valid`],[[2483,2485],`disallowed`],[[2486,2489],`valid`],[[2490,2491],`disallowed`],[[2492,2492],`valid`],[[2493,2493],`valid`],[[2494,2500],`valid`],[[2501,2502],`disallowed`],[[2503,2504],`valid`],[[2505,2506],`disallowed`],[[2507,2509],`valid`],[[2510,2510],`valid`],[[2511,2518],`disallowed`],[[2519,2519],`valid`],[[2520,2523],`disallowed`],[[2524,2524],`mapped`,[2465,2492]],[[2525,2525],`mapped`,[2466,2492]],[[2526,2526],`disallowed`],[[2527,2527],`mapped`,[2479,2492]],[[2528,2531],`valid`],[[2532,2533],`disallowed`],[[2534,2545],`valid`],[[2546,2554],`valid`,[],`NV8`],[[2555,2555],`valid`,[],`NV8`],[[2556,2560],`disallowed`],[[2561,2561],`valid`],[[2562,2562],`valid`],[[2563,2563],`valid`],[[2564,2564],`disallowed`],[[2565,2570],`valid`],[[2571,2574],`disallowed`],[[2575,2576],`valid`],[[2577,2578],`disallowed`],[[2579,2600],`valid`],[[2601,2601],`disallowed`],[[2602,2608],`valid`],[[2609,2609],`disallowed`],[[2610,2610],`valid`],[[2611,2611],`mapped`,[2610,2620]],[[2612,2612],`disallowed`],[[2613,2613],`valid`],[[2614,2614],`mapped`,[2616,2620]],[[2615,2615],`disallowed`],[[2616,2617],`valid`],[[2618,2619],`disallowed`],[[2620,2620],`valid`],[[2621,2621],`disallowed`],[[2622,2626],`valid`],[[2627,2630],`disallowed`],[[2631,2632],`valid`],[[2633,2634],`disallowed`],[[2635,2637],`valid`],[[2638,2640],`disallowed`],[[2641,2641],`valid`],[[2642,2648],`disallowed`],[[2649,2649],`mapped`,[2582,2620]],[[2650,2650],`mapped`,[2583,2620]],[[2651,2651],`mapped`,[2588,2620]],[[2652,2652],`valid`],[[2653,2653],`disallowed`],[[2654,2654],`mapped`,[2603,2620]],[[2655,2661],`disallowed`],[[2662,2676],`valid`],[[2677,2677],`valid`],[[2678,2688],`disallowed`],[[2689,2691],`valid`],[[2692,2692],`disallowed`],[[2693,2699],`valid`],[[2700,2700],`valid`],[[2701,2701],`valid`],[[2702,2702],`disallowed`],[[2703,2705],`valid`],[[2706,2706],`disallowed`],[[2707,2728],`valid`],[[2729,2729],`disallowed`],[[2730,2736],`valid`],[[2737,2737],`disallowed`],[[2738,2739],`valid`],[[2740,2740],`disallowed`],[[2741,2745],`valid`],[[2746,2747],`disallowed`],[[2748,2757],`valid`],[[2758,2758],`disallowed`],[[2759,2761],`valid`],[[2762,2762],`disallowed`],[[2763,2765],`valid`],[[2766,2767],`disallowed`],[[2768,2768],`valid`],[[2769,2783],`disallowed`],[[2784,2784],`valid`],[[2785,2787],`valid`],[[2788,2789],`disallowed`],[[2790,2799],`valid`],[[2800,2800],`valid`,[],`NV8`],[[2801,2801],`valid`,[],`NV8`],[[2802,2808],`disallowed`],[[2809,2809],`valid`],[[2810,2816],`disallowed`],[[2817,2819],`valid`],[[2820,2820],`disallowed`],[[2821,2828],`valid`],[[2829,2830],`disallowed`],[[2831,2832],`valid`],[[2833,2834],`disallowed`],[[2835,2856],`valid`],[[2857,2857],`disallowed`],[[2858,2864],`valid`],[[2865,2865],`disallowed`],[[2866,2867],`valid`],[[2868,2868],`disallowed`],[[2869,2869],`valid`],[[2870,2873],`valid`],[[2874,2875],`disallowed`],[[2876,2883],`valid`],[[2884,2884],`valid`],[[2885,2886],`disallowed`],[[2887,2888],`valid`],[[2889,2890],`disallowed`],[[2891,2893],`valid`],[[2894,2901],`disallowed`],[[2902,2903],`valid`],[[2904,2907],`disallowed`],[[2908,2908],`mapped`,[2849,2876]],[[2909,2909],`mapped`,[2850,2876]],[[2910,2910],`disallowed`],[[2911,2913],`valid`],[[2914,2915],`valid`],[[2916,2917],`disallowed`],[[2918,2927],`valid`],[[2928,2928],`valid`,[],`NV8`],[[2929,2929],`valid`],[[2930,2935],`valid`,[],`NV8`],[[2936,2945],`disallowed`],[[2946,2947],`valid`],[[2948,2948],`disallowed`],[[2949,2954],`valid`],[[2955,2957],`disallowed`],[[2958,2960],`valid`],[[2961,2961],`disallowed`],[[2962,2965],`valid`],[[2966,2968],`disallowed`],[[2969,2970],`valid`],[[2971,2971],`disallowed`],[[2972,2972],`valid`],[[2973,2973],`disallowed`],[[2974,2975],`valid`],[[2976,2978],`disallowed`],[[2979,2980],`valid`],[[2981,2983],`disallowed`],[[2984,2986],`valid`],[[2987,2989],`disallowed`],[[2990,2997],`valid`],[[2998,2998],`valid`],[[2999,3001],`valid`],[[3002,3005],`disallowed`],[[3006,3010],`valid`],[[3011,3013],`disallowed`],[[3014,3016],`valid`],[[3017,3017],`disallowed`],[[3018,3021],`valid`],[[3022,3023],`disallowed`],[[3024,3024],`valid`],[[3025,3030],`disallowed`],[[3031,3031],`valid`],[[3032,3045],`disallowed`],[[3046,3046],`valid`],[[3047,3055],`valid`],[[3056,3058],`valid`,[],`NV8`],[[3059,3066],`valid`,[],`NV8`],[[3067,3071],`disallowed`],[[3072,3072],`valid`],[[3073,3075],`valid`],[[3076,3076],`disallowed`],[[3077,3084],`valid`],[[3085,3085],`disallowed`],[[3086,3088],`valid`],[[3089,3089],`disallowed`],[[3090,3112],`valid`],[[3113,3113],`disallowed`],[[3114,3123],`valid`],[[3124,3124],`valid`],[[3125,3129],`valid`],[[3130,3132],`disallowed`],[[3133,3133],`valid`],[[3134,3140],`valid`],[[3141,3141],`disallowed`],[[3142,3144],`valid`],[[3145,3145],`disallowed`],[[3146,3149],`valid`],[[3150,3156],`disallowed`],[[3157,3158],`valid`],[[3159,3159],`disallowed`],[[3160,3161],`valid`],[[3162,3162],`valid`],[[3163,3167],`disallowed`],[[3168,3169],`valid`],[[3170,3171],`valid`],[[3172,3173],`disallowed`],[[3174,3183],`valid`],[[3184,3191],`disallowed`],[[3192,3199],`valid`,[],`NV8`],[[3200,3200],`disallowed`],[[3201,3201],`valid`],[[3202,3203],`valid`],[[3204,3204],`disallowed`],[[3205,3212],`valid`],[[3213,3213],`disallowed`],[[3214,3216],`valid`],[[3217,3217],`disallowed`],[[3218,3240],`valid`],[[3241,3241],`disallowed`],[[3242,3251],`valid`],[[3252,3252],`disallowed`],[[3253,3257],`valid`],[[3258,3259],`disallowed`],[[3260,3261],`valid`],[[3262,3268],`valid`],[[3269,3269],`disallowed`],[[3270,3272],`valid`],[[3273,3273],`disallowed`],[[3274,3277],`valid`],[[3278,3284],`disallowed`],[[3285,3286],`valid`],[[3287,3293],`disallowed`],[[3294,3294],`valid`],[[3295,3295],`disallowed`],[[3296,3297],`valid`],[[3298,3299],`valid`],[[3300,3301],`disallowed`],[[3302,3311],`valid`],[[3312,3312],`disallowed`],[[3313,3314],`valid`],[[3315,3328],`disallowed`],[[3329,3329],`valid`],[[3330,3331],`valid`],[[3332,3332],`disallowed`],[[3333,3340],`valid`],[[3341,3341],`disallowed`],[[3342,3344],`valid`],[[3345,3345],`disallowed`],[[3346,3368],`valid`],[[3369,3369],`valid`],[[3370,3385],`valid`],[[3386,3386],`valid`],[[3387,3388],`disallowed`],[[3389,3389],`valid`],[[3390,3395],`valid`],[[3396,3396],`valid`],[[3397,3397],`disallowed`],[[3398,3400],`valid`],[[3401,3401],`disallowed`],[[3402,3405],`valid`],[[3406,3406],`valid`],[[3407,3414],`disallowed`],[[3415,3415],`valid`],[[3416,3422],`disallowed`],[[3423,3423],`valid`],[[3424,3425],`valid`],[[3426,3427],`valid`],[[3428,3429],`disallowed`],[[3430,3439],`valid`],[[3440,3445],`valid`,[],`NV8`],[[3446,3448],`disallowed`],[[3449,3449],`valid`,[],`NV8`],[[3450,3455],`valid`],[[3456,3457],`disallowed`],[[3458,3459],`valid`],[[3460,3460],`disallowed`],[[3461,3478],`valid`],[[3479,3481],`disallowed`],[[3482,3505],`valid`],[[3506,3506],`disallowed`],[[3507,3515],`valid`],[[3516,3516],`disallowed`],[[3517,3517],`valid`],[[3518,3519],`disallowed`],[[3520,3526],`valid`],[[3527,3529],`disallowed`],[[3530,3530],`valid`],[[3531,3534],`disallowed`],[[3535,3540],`valid`],[[3541,3541],`disallowed`],[[3542,3542],`valid`],[[3543,3543],`disallowed`],[[3544,3551],`valid`],[[3552,3557],`disallowed`],[[3558,3567],`valid`],[[3568,3569],`disallowed`],[[3570,3571],`valid`],[[3572,3572],`valid`,[],`NV8`],[[3573,3584],`disallowed`],[[3585,3634],`valid`],[[3635,3635],`mapped`,[3661,3634]],[[3636,3642],`valid`],[[3643,3646],`disallowed`],[[3647,3647],`valid`,[],`NV8`],[[3648,3662],`valid`],[[3663,3663],`valid`,[],`NV8`],[[3664,3673],`valid`],[[3674,3675],`valid`,[],`NV8`],[[3676,3712],`disallowed`],[[3713,3714],`valid`],[[3715,3715],`disallowed`],[[3716,3716],`valid`],[[3717,3718],`disallowed`],[[3719,3720],`valid`],[[3721,3721],`disallowed`],[[3722,3722],`valid`],[[3723,3724],`disallowed`],[[3725,3725],`valid`],[[3726,3731],`disallowed`],[[3732,3735],`valid`],[[3736,3736],`disallowed`],[[3737,3743],`valid`],[[3744,3744],`disallowed`],[[3745,3747],`valid`],[[3748,3748],`disallowed`],[[3749,3749],`valid`],[[3750,3750],`disallowed`],[[3751,3751],`valid`],[[3752,3753],`disallowed`],[[3754,3755],`valid`],[[3756,3756],`disallowed`],[[3757,3762],`valid`],[[3763,3763],`mapped`,[3789,3762]],[[3764,3769],`valid`],[[3770,3770],`disallowed`],[[3771,3773],`valid`],[[3774,3775],`disallowed`],[[3776,3780],`valid`],[[3781,3781],`disallowed`],[[3782,3782],`valid`],[[3783,3783],`disallowed`],[[3784,3789],`valid`],[[3790,3791],`disallowed`],[[3792,3801],`valid`],[[3802,3803],`disallowed`],[[3804,3804],`mapped`,[3755,3737]],[[3805,3805],`mapped`,[3755,3745]],[[3806,3807],`valid`],[[3808,3839],`disallowed`],[[3840,3840],`valid`],[[3841,3850],`valid`,[],`NV8`],[[3851,3851],`valid`],[[3852,3852],`mapped`,[3851]],[[3853,3863],`valid`,[],`NV8`],[[3864,3865],`valid`],[[3866,3871],`valid`,[],`NV8`],[[3872,3881],`valid`],[[3882,3892],`valid`,[],`NV8`],[[3893,3893],`valid`],[[3894,3894],`valid`,[],`NV8`],[[3895,3895],`valid`],[[3896,3896],`valid`,[],`NV8`],[[3897,3897],`valid`],[[3898,3901],`valid`,[],`NV8`],[[3902,3906],`valid`],[[3907,3907],`mapped`,[3906,4023]],[[3908,3911],`valid`],[[3912,3912],`disallowed`],[[3913,3916],`valid`],[[3917,3917],`mapped`,[3916,4023]],[[3918,3921],`valid`],[[3922,3922],`mapped`,[3921,4023]],[[3923,3926],`valid`],[[3927,3927],`mapped`,[3926,4023]],[[3928,3931],`valid`],[[3932,3932],`mapped`,[3931,4023]],[[3933,3944],`valid`],[[3945,3945],`mapped`,[3904,4021]],[[3946,3946],`valid`],[[3947,3948],`valid`],[[3949,3952],`disallowed`],[[3953,3954],`valid`],[[3955,3955],`mapped`,[3953,3954]],[[3956,3956],`valid`],[[3957,3957],`mapped`,[3953,3956]],[[3958,3958],`mapped`,[4018,3968]],[[3959,3959],`mapped`,[4018,3953,3968]],[[3960,3960],`mapped`,[4019,3968]],[[3961,3961],`mapped`,[4019,3953,3968]],[[3962,3968],`valid`],[[3969,3969],`mapped`,[3953,3968]],[[3970,3972],`valid`],[[3973,3973],`valid`,[],`NV8`],[[3974,3979],`valid`],[[3980,3983],`valid`],[[3984,3986],`valid`],[[3987,3987],`mapped`,[3986,4023]],[[3988,3989],`valid`],[[3990,3990],`valid`],[[3991,3991],`valid`],[[3992,3992],`disallowed`],[[3993,3996],`valid`],[[3997,3997],`mapped`,[3996,4023]],[[3998,4001],`valid`],[[4002,4002],`mapped`,[4001,4023]],[[4003,4006],`valid`],[[4007,4007],`mapped`,[4006,4023]],[[4008,4011],`valid`],[[4012,4012],`mapped`,[4011,4023]],[[4013,4013],`valid`],[[4014,4016],`valid`],[[4017,4023],`valid`],[[4024,4024],`valid`],[[4025,4025],`mapped`,[3984,4021]],[[4026,4028],`valid`],[[4029,4029],`disallowed`],[[4030,4037],`valid`,[],`NV8`],[[4038,4038],`valid`],[[4039,4044],`valid`,[],`NV8`],[[4045,4045],`disallowed`],[[4046,4046],`valid`,[],`NV8`],[[4047,4047],`valid`,[],`NV8`],[[4048,4049],`valid`,[],`NV8`],[[4050,4052],`valid`,[],`NV8`],[[4053,4056],`valid`,[],`NV8`],[[4057,4058],`valid`,[],`NV8`],[[4059,4095],`disallowed`],[[4096,4129],`valid`],[[4130,4130],`valid`],[[4131,4135],`valid`],[[4136,4136],`valid`],[[4137,4138],`valid`],[[4139,4139],`valid`],[[4140,4146],`valid`],[[4147,4149],`valid`],[[4150,4153],`valid`],[[4154,4159],`valid`],[[4160,4169],`valid`],[[4170,4175],`valid`,[],`NV8`],[[4176,4185],`valid`],[[4186,4249],`valid`],[[4250,4253],`valid`],[[4254,4255],`valid`,[],`NV8`],[[4256,4293],`disallowed`],[[4294,4294],`disallowed`],[[4295,4295],`mapped`,[11559]],[[4296,4300],`disallowed`],[[4301,4301],`mapped`,[11565]],[[4302,4303],`disallowed`],[[4304,4342],`valid`],[[4343,4344],`valid`],[[4345,4346],`valid`],[[4347,4347],`valid`,[],`NV8`],[[4348,4348],`mapped`,[4316]],[[4349,4351],`valid`],[[4352,4441],`valid`,[],`NV8`],[[4442,4446],`valid`,[],`NV8`],[[4447,4448],`disallowed`],[[4449,4514],`valid`,[],`NV8`],[[4515,4519],`valid`,[],`NV8`],[[4520,4601],`valid`,[],`NV8`],[[4602,4607],`valid`,[],`NV8`],[[4608,4614],`valid`],[[4615,4615],`valid`],[[4616,4678],`valid`],[[4679,4679],`valid`],[[4680,4680],`valid`],[[4681,4681],`disallowed`],[[4682,4685],`valid`],[[4686,4687],`disallowed`],[[4688,4694],`valid`],[[4695,4695],`disallowed`],[[4696,4696],`valid`],[[4697,4697],`disallowed`],[[4698,4701],`valid`],[[4702,4703],`disallowed`],[[4704,4742],`valid`],[[4743,4743],`valid`],[[4744,4744],`valid`],[[4745,4745],`disallowed`],[[4746,4749],`valid`],[[4750,4751],`disallowed`],[[4752,4782],`valid`],[[4783,4783],`valid`],[[4784,4784],`valid`],[[4785,4785],`disallowed`],[[4786,4789],`valid`],[[4790,4791],`disallowed`],[[4792,4798],`valid`],[[4799,4799],`disallowed`],[[4800,4800],`valid`],[[4801,4801],`disallowed`],[[4802,4805],`valid`],[[4806,4807],`disallowed`],[[4808,4814],`valid`],[[4815,4815],`valid`],[[4816,4822],`valid`],[[4823,4823],`disallowed`],[[4824,4846],`valid`],[[4847,4847],`valid`],[[4848,4878],`valid`],[[4879,4879],`valid`],[[4880,4880],`valid`],[[4881,4881],`disallowed`],[[4882,4885],`valid`],[[4886,4887],`disallowed`],[[4888,4894],`valid`],[[4895,4895],`valid`],[[4896,4934],`valid`],[[4935,4935],`valid`],[[4936,4954],`valid`],[[4955,4956],`disallowed`],[[4957,4958],`valid`],[[4959,4959],`valid`],[[4960,4960],`valid`,[],`NV8`],[[4961,4988],`valid`,[],`NV8`],[[4989,4991],`disallowed`],[[4992,5007],`valid`],[[5008,5017],`valid`,[],`NV8`],[[5018,5023],`disallowed`],[[5024,5108],`valid`],[[5109,5109],`valid`],[[5110,5111],`disallowed`],[[5112,5112],`mapped`,[5104]],[[5113,5113],`mapped`,[5105]],[[5114,5114],`mapped`,[5106]],[[5115,5115],`mapped`,[5107]],[[5116,5116],`mapped`,[5108]],[[5117,5117],`mapped`,[5109]],[[5118,5119],`disallowed`],[[5120,5120],`valid`,[],`NV8`],[[5121,5740],`valid`],[[5741,5742],`valid`,[],`NV8`],[[5743,5750],`valid`],[[5751,5759],`valid`],[[5760,5760],`disallowed`],[[5761,5786],`valid`],[[5787,5788],`valid`,[],`NV8`],[[5789,5791],`disallowed`],[[5792,5866],`valid`],[[5867,5872],`valid`,[],`NV8`],[[5873,5880],`valid`],[[5881,5887],`disallowed`],[[5888,5900],`valid`],[[5901,5901],`disallowed`],[[5902,5908],`valid`],[[5909,5919],`disallowed`],[[5920,5940],`valid`],[[5941,5942],`valid`,[],`NV8`],[[5943,5951],`disallowed`],[[5952,5971],`valid`],[[5972,5983],`disallowed`],[[5984,5996],`valid`],[[5997,5997],`disallowed`],[[5998,6e3],`valid`],[[6001,6001],`disallowed`],[[6002,6003],`valid`],[[6004,6015],`disallowed`],[[6016,6067],`valid`],[[6068,6069],`disallowed`],[[6070,6099],`valid`],[[6100,6102],`valid`,[],`NV8`],[[6103,6103],`valid`],[[6104,6107],`valid`,[],`NV8`],[[6108,6108],`valid`],[[6109,6109],`valid`],[[6110,6111],`disallowed`],[[6112,6121],`valid`],[[6122,6127],`disallowed`],[[6128,6137],`valid`,[],`NV8`],[[6138,6143],`disallowed`],[[6144,6149],`valid`,[],`NV8`],[[6150,6150],`disallowed`],[[6151,6154],`valid`,[],`NV8`],[[6155,6157],`ignored`],[[6158,6158],`disallowed`],[[6159,6159],`disallowed`],[[6160,6169],`valid`],[[6170,6175],`disallowed`],[[6176,6263],`valid`],[[6264,6271],`disallowed`],[[6272,6313],`valid`],[[6314,6314],`valid`],[[6315,6319],`disallowed`],[[6320,6389],`valid`],[[6390,6399],`disallowed`],[[6400,6428],`valid`],[[6429,6430],`valid`],[[6431,6431],`disallowed`],[[6432,6443],`valid`],[[6444,6447],`disallowed`],[[6448,6459],`valid`],[[6460,6463],`disallowed`],[[6464,6464],`valid`,[],`NV8`],[[6465,6467],`disallowed`],[[6468,6469],`valid`,[],`NV8`],[[6470,6509],`valid`],[[6510,6511],`disallowed`],[[6512,6516],`valid`],[[6517,6527],`disallowed`],[[6528,6569],`valid`],[[6570,6571],`valid`],[[6572,6575],`disallowed`],[[6576,6601],`valid`],[[6602,6607],`disallowed`],[[6608,6617],`valid`],[[6618,6618],`valid`,[],`XV8`],[[6619,6621],`disallowed`],[[6622,6623],`valid`,[],`NV8`],[[6624,6655],`valid`,[],`NV8`],[[6656,6683],`valid`],[[6684,6685],`disallowed`],[[6686,6687],`valid`,[],`NV8`],[[6688,6750],`valid`],[[6751,6751],`disallowed`],[[6752,6780],`valid`],[[6781,6782],`disallowed`],[[6783,6793],`valid`],[[6794,6799],`disallowed`],[[6800,6809],`valid`],[[6810,6815],`disallowed`],[[6816,6822],`valid`,[],`NV8`],[[6823,6823],`valid`],[[6824,6829],`valid`,[],`NV8`],[[6830,6831],`disallowed`],[[6832,6845],`valid`],[[6846,6846],`valid`,[],`NV8`],[[6847,6911],`disallowed`],[[6912,6987],`valid`],[[6988,6991],`disallowed`],[[6992,7001],`valid`],[[7002,7018],`valid`,[],`NV8`],[[7019,7027],`valid`],[[7028,7036],`valid`,[],`NV8`],[[7037,7039],`disallowed`],[[7040,7082],`valid`],[[7083,7085],`valid`],[[7086,7097],`valid`],[[7098,7103],`valid`],[[7104,7155],`valid`],[[7156,7163],`disallowed`],[[7164,7167],`valid`,[],`NV8`],[[7168,7223],`valid`],[[7224,7226],`disallowed`],[[7227,7231],`valid`,[],`NV8`],[[7232,7241],`valid`],[[7242,7244],`disallowed`],[[7245,7293],`valid`],[[7294,7295],`valid`,[],`NV8`],[[7296,7359],`disallowed`],[[7360,7367],`valid`,[],`NV8`],[[7368,7375],`disallowed`],[[7376,7378],`valid`],[[7379,7379],`valid`,[],`NV8`],[[7380,7410],`valid`],[[7411,7414],`valid`],[[7415,7415],`disallowed`],[[7416,7417],`valid`],[[7418,7423],`disallowed`],[[7424,7467],`valid`],[[7468,7468],`mapped`,[97]],[[7469,7469],`mapped`,[230]],[[7470,7470],`mapped`,[98]],[[7471,7471],`valid`],[[7472,7472],`mapped`,[100]],[[7473,7473],`mapped`,[101]],[[7474,7474],`mapped`,[477]],[[7475,7475],`mapped`,[103]],[[7476,7476],`mapped`,[104]],[[7477,7477],`mapped`,[105]],[[7478,7478],`mapped`,[106]],[[7479,7479],`mapped`,[107]],[[7480,7480],`mapped`,[108]],[[7481,7481],`mapped`,[109]],[[7482,7482],`mapped`,[110]],[[7483,7483],`valid`],[[7484,7484],`mapped`,[111]],[[7485,7485],`mapped`,[547]],[[7486,7486],`mapped`,[112]],[[7487,7487],`mapped`,[114]],[[7488,7488],`mapped`,[116]],[[7489,7489],`mapped`,[117]],[[7490,7490],`mapped`,[119]],[[7491,7491],`mapped`,[97]],[[7492,7492],`mapped`,[592]],[[7493,7493],`mapped`,[593]],[[7494,7494],`mapped`,[7426]],[[7495,7495],`mapped`,[98]],[[7496,7496],`mapped`,[100]],[[7497,7497],`mapped`,[101]],[[7498,7498],`mapped`,[601]],[[7499,7499],`mapped`,[603]],[[7500,7500],`mapped`,[604]],[[7501,7501],`mapped`,[103]],[[7502,7502],`valid`],[[7503,7503],`mapped`,[107]],[[7504,7504],`mapped`,[109]],[[7505,7505],`mapped`,[331]],[[7506,7506],`mapped`,[111]],[[7507,7507],`mapped`,[596]],[[7508,7508],`mapped`,[7446]],[[7509,7509],`mapped`,[7447]],[[7510,7510],`mapped`,[112]],[[7511,7511],`mapped`,[116]],[[7512,7512],`mapped`,[117]],[[7513,7513],`mapped`,[7453]],[[7514,7514],`mapped`,[623]],[[7515,7515],`mapped`,[118]],[[7516,7516],`mapped`,[7461]],[[7517,7517],`mapped`,[946]],[[7518,7518],`mapped`,[947]],[[7519,7519],`mapped`,[948]],[[7520,7520],`mapped`,[966]],[[7521,7521],`mapped`,[967]],[[7522,7522],`mapped`,[105]],[[7523,7523],`mapped`,[114]],[[7524,7524],`mapped`,[117]],[[7525,7525],`mapped`,[118]],[[7526,7526],`mapped`,[946]],[[7527,7527],`mapped`,[947]],[[7528,7528],`mapped`,[961]],[[7529,7529],`mapped`,[966]],[[7530,7530],`mapped`,[967]],[[7531,7531],`valid`],[[7532,7543],`valid`],[[7544,7544],`mapped`,[1085]],[[7545,7578],`valid`],[[7579,7579],`mapped`,[594]],[[7580,7580],`mapped`,[99]],[[7581,7581],`mapped`,[597]],[[7582,7582],`mapped`,[240]],[[7583,7583],`mapped`,[604]],[[7584,7584],`mapped`,[102]],[[7585,7585],`mapped`,[607]],[[7586,7586],`mapped`,[609]],[[7587,7587],`mapped`,[613]],[[7588,7588],`mapped`,[616]],[[7589,7589],`mapped`,[617]],[[7590,7590],`mapped`,[618]],[[7591,7591],`mapped`,[7547]],[[7592,7592],`mapped`,[669]],[[7593,7593],`mapped`,[621]],[[7594,7594],`mapped`,[7557]],[[7595,7595],`mapped`,[671]],[[7596,7596],`mapped`,[625]],[[7597,7597],`mapped`,[624]],[[7598,7598],`mapped`,[626]],[[7599,7599],`mapped`,[627]],[[7600,7600],`mapped`,[628]],[[7601,7601],`mapped`,[629]],[[7602,7602],`mapped`,[632]],[[7603,7603],`mapped`,[642]],[[7604,7604],`mapped`,[643]],[[7605,7605],`mapped`,[427]],[[7606,7606],`mapped`,[649]],[[7607,7607],`mapped`,[650]],[[7608,7608],`mapped`,[7452]],[[7609,7609],`mapped`,[651]],[[7610,7610],`mapped`,[652]],[[7611,7611],`mapped`,[122]],[[7612,7612],`mapped`,[656]],[[7613,7613],`mapped`,[657]],[[7614,7614],`mapped`,[658]],[[7615,7615],`mapped`,[952]],[[7616,7619],`valid`],[[7620,7626],`valid`],[[7627,7654],`valid`],[[7655,7669],`valid`],[[7670,7675],`disallowed`],[[7676,7676],`valid`],[[7677,7677],`valid`],[[7678,7679],`valid`],[[7680,7680],`mapped`,[7681]],[[7681,7681],`valid`],[[7682,7682],`mapped`,[7683]],[[7683,7683],`valid`],[[7684,7684],`mapped`,[7685]],[[7685,7685],`valid`],[[7686,7686],`mapped`,[7687]],[[7687,7687],`valid`],[[7688,7688],`mapped`,[7689]],[[7689,7689],`valid`],[[7690,7690],`mapped`,[7691]],[[7691,7691],`valid`],[[7692,7692],`mapped`,[7693]],[[7693,7693],`valid`],[[7694,7694],`mapped`,[7695]],[[7695,7695],`valid`],[[7696,7696],`mapped`,[7697]],[[7697,7697],`valid`],[[7698,7698],`mapped`,[7699]],[[7699,7699],`valid`],[[7700,7700],`mapped`,[7701]],[[7701,7701],`valid`],[[7702,7702],`mapped`,[7703]],[[7703,7703],`valid`],[[7704,7704],`mapped`,[7705]],[[7705,7705],`valid`],[[7706,7706],`mapped`,[7707]],[[7707,7707],`valid`],[[7708,7708],`mapped`,[7709]],[[7709,7709],`valid`],[[7710,7710],`mapped`,[7711]],[[7711,7711],`valid`],[[7712,7712],`mapped`,[7713]],[[7713,7713],`valid`],[[7714,7714],`mapped`,[7715]],[[7715,7715],`valid`],[[7716,7716],`mapped`,[7717]],[[7717,7717],`valid`],[[7718,7718],`mapped`,[7719]],[[7719,7719],`valid`],[[7720,7720],`mapped`,[7721]],[[7721,7721],`valid`],[[7722,7722],`mapped`,[7723]],[[7723,7723],`valid`],[[7724,7724],`mapped`,[7725]],[[7725,7725],`valid`],[[7726,7726],`mapped`,[7727]],[[7727,7727],`valid`],[[7728,7728],`mapped`,[7729]],[[7729,7729],`valid`],[[7730,7730],`mapped`,[7731]],[[7731,7731],`valid`],[[7732,7732],`mapped`,[7733]],[[7733,7733],`valid`],[[7734,7734],`mapped`,[7735]],[[7735,7735],`valid`],[[7736,7736],`mapped`,[7737]],[[7737,7737],`valid`],[[7738,7738],`mapped`,[7739]],[[7739,7739],`valid`],[[7740,7740],`mapped`,[7741]],[[7741,7741],`valid`],[[7742,7742],`mapped`,[7743]],[[7743,7743],`valid`],[[7744,7744],`mapped`,[7745]],[[7745,7745],`valid`],[[7746,7746],`mapped`,[7747]],[[7747,7747],`valid`],[[7748,7748],`mapped`,[7749]],[[7749,7749],`valid`],[[7750,7750],`mapped`,[7751]],[[7751,7751],`valid`],[[7752,7752],`mapped`,[7753]],[[7753,7753],`valid`],[[7754,7754],`mapped`,[7755]],[[7755,7755],`valid`],[[7756,7756],`mapped`,[7757]],[[7757,7757],`valid`],[[7758,7758],`mapped`,[7759]],[[7759,7759],`valid`],[[7760,7760],`mapped`,[7761]],[[7761,7761],`valid`],[[7762,7762],`mapped`,[7763]],[[7763,7763],`valid`],[[7764,7764],`mapped`,[7765]],[[7765,7765],`valid`],[[7766,7766],`mapped`,[7767]],[[7767,7767],`valid`],[[7768,7768],`mapped`,[7769]],[[7769,7769],`valid`],[[7770,7770],`mapped`,[7771]],[[7771,7771],`valid`],[[7772,7772],`mapped`,[7773]],[[7773,7773],`valid`],[[7774,7774],`mapped`,[7775]],[[7775,7775],`valid`],[[7776,7776],`mapped`,[7777]],[[7777,7777],`valid`],[[7778,7778],`mapped`,[7779]],[[7779,7779],`valid`],[[7780,7780],`mapped`,[7781]],[[7781,7781],`valid`],[[7782,7782],`mapped`,[7783]],[[7783,7783],`valid`],[[7784,7784],`mapped`,[7785]],[[7785,7785],`valid`],[[7786,7786],`mapped`,[7787]],[[7787,7787],`valid`],[[7788,7788],`mapped`,[7789]],[[7789,7789],`valid`],[[7790,7790],`mapped`,[7791]],[[7791,7791],`valid`],[[7792,7792],`mapped`,[7793]],[[7793,7793],`valid`],[[7794,7794],`mapped`,[7795]],[[7795,7795],`valid`],[[7796,7796],`mapped`,[7797]],[[7797,7797],`valid`],[[7798,7798],`mapped`,[7799]],[[7799,7799],`valid`],[[7800,7800],`mapped`,[7801]],[[7801,7801],`valid`],[[7802,7802],`mapped`,[7803]],[[7803,7803],`valid`],[[7804,7804],`mapped`,[7805]],[[7805,7805],`valid`],[[7806,7806],`mapped`,[7807]],[[7807,7807],`valid`],[[7808,7808],`mapped`,[7809]],[[7809,7809],`valid`],[[7810,7810],`mapped`,[7811]],[[7811,7811],`valid`],[[7812,7812],`mapped`,[7813]],[[7813,7813],`valid`],[[7814,7814],`mapped`,[7815]],[[7815,7815],`valid`],[[7816,7816],`mapped`,[7817]],[[7817,7817],`valid`],[[7818,7818],`mapped`,[7819]],[[7819,7819],`valid`],[[7820,7820],`mapped`,[7821]],[[7821,7821],`valid`],[[7822,7822],`mapped`,[7823]],[[7823,7823],`valid`],[[7824,7824],`mapped`,[7825]],[[7825,7825],`valid`],[[7826,7826],`mapped`,[7827]],[[7827,7827],`valid`],[[7828,7828],`mapped`,[7829]],[[7829,7833],`valid`],[[7834,7834],`mapped`,[97,702]],[[7835,7835],`mapped`,[7777]],[[7836,7837],`valid`],[[7838,7838],`mapped`,[115,115]],[[7839,7839],`valid`],[[7840,7840],`mapped`,[7841]],[[7841,7841],`valid`],[[7842,7842],`mapped`,[7843]],[[7843,7843],`valid`],[[7844,7844],`mapped`,[7845]],[[7845,7845],`valid`],[[7846,7846],`mapped`,[7847]],[[7847,7847],`valid`],[[7848,7848],`mapped`,[7849]],[[7849,7849],`valid`],[[7850,7850],`mapped`,[7851]],[[7851,7851],`valid`],[[7852,7852],`mapped`,[7853]],[[7853,7853],`valid`],[[7854,7854],`mapped`,[7855]],[[7855,7855],`valid`],[[7856,7856],`mapped`,[7857]],[[7857,7857],`valid`],[[7858,7858],`mapped`,[7859]],[[7859,7859],`valid`],[[7860,7860],`mapped`,[7861]],[[7861,7861],`valid`],[[7862,7862],`mapped`,[7863]],[[7863,7863],`valid`],[[7864,7864],`mapped`,[7865]],[[7865,7865],`valid`],[[7866,7866],`mapped`,[7867]],[[7867,7867],`valid`],[[7868,7868],`mapped`,[7869]],[[7869,7869],`valid`],[[7870,7870],`mapped`,[7871]],[[7871,7871],`valid`],[[7872,7872],`mapped`,[7873]],[[7873,7873],`valid`],[[7874,7874],`mapped`,[7875]],[[7875,7875],`valid`],[[7876,7876],`mapped`,[7877]],[[7877,7877],`valid`],[[7878,7878],`mapped`,[7879]],[[7879,7879],`valid`],[[7880,7880],`mapped`,[7881]],[[7881,7881],`valid`],[[7882,7882],`mapped`,[7883]],[[7883,7883],`valid`],[[7884,7884],`mapped`,[7885]],[[7885,7885],`valid`],[[7886,7886],`mapped`,[7887]],[[7887,7887],`valid`],[[7888,7888],`mapped`,[7889]],[[7889,7889],`valid`],[[7890,7890],`mapped`,[7891]],[[7891,7891],`valid`],[[7892,7892],`mapped`,[7893]],[[7893,7893],`valid`],[[7894,7894],`mapped`,[7895]],[[7895,7895],`valid`],[[7896,7896],`mapped`,[7897]],[[7897,7897],`valid`],[[7898,7898],`mapped`,[7899]],[[7899,7899],`valid`],[[7900,7900],`mapped`,[7901]],[[7901,7901],`valid`],[[7902,7902],`mapped`,[7903]],[[7903,7903],`valid`],[[7904,7904],`mapped`,[7905]],[[7905,7905],`valid`],[[7906,7906],`mapped`,[7907]],[[7907,7907],`valid`],[[7908,7908],`mapped`,[7909]],[[7909,7909],`valid`],[[7910,7910],`mapped`,[7911]],[[7911,7911],`valid`],[[7912,7912],`mapped`,[7913]],[[7913,7913],`valid`],[[7914,7914],`mapped`,[7915]],[[7915,7915],`valid`],[[7916,7916],`mapped`,[7917]],[[7917,7917],`valid`],[[7918,7918],`mapped`,[7919]],[[7919,7919],`valid`],[[7920,7920],`mapped`,[7921]],[[7921,7921],`valid`],[[7922,7922],`mapped`,[7923]],[[7923,7923],`valid`],[[7924,7924],`mapped`,[7925]],[[7925,7925],`valid`],[[7926,7926],`mapped`,[7927]],[[7927,7927],`valid`],[[7928,7928],`mapped`,[7929]],[[7929,7929],`valid`],[[7930,7930],`mapped`,[7931]],[[7931,7931],`valid`],[[7932,7932],`mapped`,[7933]],[[7933,7933],`valid`],[[7934,7934],`mapped`,[7935]],[[7935,7935],`valid`],[[7936,7943],`valid`],[[7944,7944],`mapped`,[7936]],[[7945,7945],`mapped`,[7937]],[[7946,7946],`mapped`,[7938]],[[7947,7947],`mapped`,[7939]],[[7948,7948],`mapped`,[7940]],[[7949,7949],`mapped`,[7941]],[[7950,7950],`mapped`,[7942]],[[7951,7951],`mapped`,[7943]],[[7952,7957],`valid`],[[7958,7959],`disallowed`],[[7960,7960],`mapped`,[7952]],[[7961,7961],`mapped`,[7953]],[[7962,7962],`mapped`,[7954]],[[7963,7963],`mapped`,[7955]],[[7964,7964],`mapped`,[7956]],[[7965,7965],`mapped`,[7957]],[[7966,7967],`disallowed`],[[7968,7975],`valid`],[[7976,7976],`mapped`,[7968]],[[7977,7977],`mapped`,[7969]],[[7978,7978],`mapped`,[7970]],[[7979,7979],`mapped`,[7971]],[[7980,7980],`mapped`,[7972]],[[7981,7981],`mapped`,[7973]],[[7982,7982],`mapped`,[7974]],[[7983,7983],`mapped`,[7975]],[[7984,7991],`valid`],[[7992,7992],`mapped`,[7984]],[[7993,7993],`mapped`,[7985]],[[7994,7994],`mapped`,[7986]],[[7995,7995],`mapped`,[7987]],[[7996,7996],`mapped`,[7988]],[[7997,7997],`mapped`,[7989]],[[7998,7998],`mapped`,[7990]],[[7999,7999],`mapped`,[7991]],[[8e3,8005],`valid`],[[8006,8007],`disallowed`],[[8008,8008],`mapped`,[8e3]],[[8009,8009],`mapped`,[8001]],[[8010,8010],`mapped`,[8002]],[[8011,8011],`mapped`,[8003]],[[8012,8012],`mapped`,[8004]],[[8013,8013],`mapped`,[8005]],[[8014,8015],`disallowed`],[[8016,8023],`valid`],[[8024,8024],`disallowed`],[[8025,8025],`mapped`,[8017]],[[8026,8026],`disallowed`],[[8027,8027],`mapped`,[8019]],[[8028,8028],`disallowed`],[[8029,8029],`mapped`,[8021]],[[8030,8030],`disallowed`],[[8031,8031],`mapped`,[8023]],[[8032,8039],`valid`],[[8040,8040],`mapped`,[8032]],[[8041,8041],`mapped`,[8033]],[[8042,8042],`mapped`,[8034]],[[8043,8043],`mapped`,[8035]],[[8044,8044],`mapped`,[8036]],[[8045,8045],`mapped`,[8037]],[[8046,8046],`mapped`,[8038]],[[8047,8047],`mapped`,[8039]],[[8048,8048],`valid`],[[8049,8049],`mapped`,[940]],[[8050,8050],`valid`],[[8051,8051],`mapped`,[941]],[[8052,8052],`valid`],[[8053,8053],`mapped`,[942]],[[8054,8054],`valid`],[[8055,8055],`mapped`,[943]],[[8056,8056],`valid`],[[8057,8057],`mapped`,[972]],[[8058,8058],`valid`],[[8059,8059],`mapped`,[973]],[[8060,8060],`valid`],[[8061,8061],`mapped`,[974]],[[8062,8063],`disallowed`],[[8064,8064],`mapped`,[7936,953]],[[8065,8065],`mapped`,[7937,953]],[[8066,8066],`mapped`,[7938,953]],[[8067,8067],`mapped`,[7939,953]],[[8068,8068],`mapped`,[7940,953]],[[8069,8069],`mapped`,[7941,953]],[[8070,8070],`mapped`,[7942,953]],[[8071,8071],`mapped`,[7943,953]],[[8072,8072],`mapped`,[7936,953]],[[8073,8073],`mapped`,[7937,953]],[[8074,8074],`mapped`,[7938,953]],[[8075,8075],`mapped`,[7939,953]],[[8076,8076],`mapped`,[7940,953]],[[8077,8077],`mapped`,[7941,953]],[[8078,8078],`mapped`,[7942,953]],[[8079,8079],`mapped`,[7943,953]],[[8080,8080],`mapped`,[7968,953]],[[8081,8081],`mapped`,[7969,953]],[[8082,8082],`mapped`,[7970,953]],[[8083,8083],`mapped`,[7971,953]],[[8084,8084],`mapped`,[7972,953]],[[8085,8085],`mapped`,[7973,953]],[[8086,8086],`mapped`,[7974,953]],[[8087,8087],`mapped`,[7975,953]],[[8088,8088],`mapped`,[7968,953]],[[8089,8089],`mapped`,[7969,953]],[[8090,8090],`mapped`,[7970,953]],[[8091,8091],`mapped`,[7971,953]],[[8092,8092],`mapped`,[7972,953]],[[8093,8093],`mapped`,[7973,953]],[[8094,8094],`mapped`,[7974,953]],[[8095,8095],`mapped`,[7975,953]],[[8096,8096],`mapped`,[8032,953]],[[8097,8097],`mapped`,[8033,953]],[[8098,8098],`mapped`,[8034,953]],[[8099,8099],`mapped`,[8035,953]],[[8100,8100],`mapped`,[8036,953]],[[8101,8101],`mapped`,[8037,953]],[[8102,8102],`mapped`,[8038,953]],[[8103,8103],`mapped`,[8039,953]],[[8104,8104],`mapped`,[8032,953]],[[8105,8105],`mapped`,[8033,953]],[[8106,8106],`mapped`,[8034,953]],[[8107,8107],`mapped`,[8035,953]],[[8108,8108],`mapped`,[8036,953]],[[8109,8109],`mapped`,[8037,953]],[[8110,8110],`mapped`,[8038,953]],[[8111,8111],`mapped`,[8039,953]],[[8112,8113],`valid`],[[8114,8114],`mapped`,[8048,953]],[[8115,8115],`mapped`,[945,953]],[[8116,8116],`mapped`,[940,953]],[[8117,8117],`disallowed`],[[8118,8118],`valid`],[[8119,8119],`mapped`,[8118,953]],[[8120,8120],`mapped`,[8112]],[[8121,8121],`mapped`,[8113]],[[8122,8122],`mapped`,[8048]],[[8123,8123],`mapped`,[940]],[[8124,8124],`mapped`,[945,953]],[[8125,8125],`disallowed_STD3_mapped`,[32,787]],[[8126,8126],`mapped`,[953]],[[8127,8127],`disallowed_STD3_mapped`,[32,787]],[[8128,8128],`disallowed_STD3_mapped`,[32,834]],[[8129,8129],`disallowed_STD3_mapped`,[32,776,834]],[[8130,8130],`mapped`,[8052,953]],[[8131,8131],`mapped`,[951,953]],[[8132,8132],`mapped`,[942,953]],[[8133,8133],`disallowed`],[[8134,8134],`valid`],[[8135,8135],`mapped`,[8134,953]],[[8136,8136],`mapped`,[8050]],[[8137,8137],`mapped`,[941]],[[8138,8138],`mapped`,[8052]],[[8139,8139],`mapped`,[942]],[[8140,8140],`mapped`,[951,953]],[[8141,8141],`disallowed_STD3_mapped`,[32,787,768]],[[8142,8142],`disallowed_STD3_mapped`,[32,787,769]],[[8143,8143],`disallowed_STD3_mapped`,[32,787,834]],[[8144,8146],`valid`],[[8147,8147],`mapped`,[912]],[[8148,8149],`disallowed`],[[8150,8151],`valid`],[[8152,8152],`mapped`,[8144]],[[8153,8153],`mapped`,[8145]],[[8154,8154],`mapped`,[8054]],[[8155,8155],`mapped`,[943]],[[8156,8156],`disallowed`],[[8157,8157],`disallowed_STD3_mapped`,[32,788,768]],[[8158,8158],`disallowed_STD3_mapped`,[32,788,769]],[[8159,8159],`disallowed_STD3_mapped`,[32,788,834]],[[8160,8162],`valid`],[[8163,8163],`mapped`,[944]],[[8164,8167],`valid`],[[8168,8168],`mapped`,[8160]],[[8169,8169],`mapped`,[8161]],[[8170,8170],`mapped`,[8058]],[[8171,8171],`mapped`,[973]],[[8172,8172],`mapped`,[8165]],[[8173,8173],`disallowed_STD3_mapped`,[32,776,768]],[[8174,8174],`disallowed_STD3_mapped`,[32,776,769]],[[8175,8175],`disallowed_STD3_mapped`,[96]],[[8176,8177],`disallowed`],[[8178,8178],`mapped`,[8060,953]],[[8179,8179],`mapped`,[969,953]],[[8180,8180],`mapped`,[974,953]],[[8181,8181],`disallowed`],[[8182,8182],`valid`],[[8183,8183],`mapped`,[8182,953]],[[8184,8184],`mapped`,[8056]],[[8185,8185],`mapped`,[972]],[[8186,8186],`mapped`,[8060]],[[8187,8187],`mapped`,[974]],[[8188,8188],`mapped`,[969,953]],[[8189,8189],`disallowed_STD3_mapped`,[32,769]],[[8190,8190],`disallowed_STD3_mapped`,[32,788]],[[8191,8191],`disallowed`],[[8192,8202],`disallowed_STD3_mapped`,[32]],[[8203,8203],`ignored`],[[8204,8205],`deviation`,[]],[[8206,8207],`disallowed`],[[8208,8208],`valid`,[],`NV8`],[[8209,8209],`mapped`,[8208]],[[8210,8214],`valid`,[],`NV8`],[[8215,8215],`disallowed_STD3_mapped`,[32,819]],[[8216,8227],`valid`,[],`NV8`],[[8228,8230],`disallowed`],[[8231,8231],`valid`,[],`NV8`],[[8232,8238],`disallowed`],[[8239,8239],`disallowed_STD3_mapped`,[32]],[[8240,8242],`valid`,[],`NV8`],[[8243,8243],`mapped`,[8242,8242]],[[8244,8244],`mapped`,[8242,8242,8242]],[[8245,8245],`valid`,[],`NV8`],[[8246,8246],`mapped`,[8245,8245]],[[8247,8247],`mapped`,[8245,8245,8245]],[[8248,8251],`valid`,[],`NV8`],[[8252,8252],`disallowed_STD3_mapped`,[33,33]],[[8253,8253],`valid`,[],`NV8`],[[8254,8254],`disallowed_STD3_mapped`,[32,773]],[[8255,8262],`valid`,[],`NV8`],[[8263,8263],`disallowed_STD3_mapped`,[63,63]],[[8264,8264],`disallowed_STD3_mapped`,[63,33]],[[8265,8265],`disallowed_STD3_mapped`,[33,63]],[[8266,8269],`valid`,[],`NV8`],[[8270,8274],`valid`,[],`NV8`],[[8275,8276],`valid`,[],`NV8`],[[8277,8278],`valid`,[],`NV8`],[[8279,8279],`mapped`,[8242,8242,8242,8242]],[[8280,8286],`valid`,[],`NV8`],[[8287,8287],`disallowed_STD3_mapped`,[32]],[[8288,8288],`ignored`],[[8289,8291],`disallowed`],[[8292,8292],`ignored`],[[8293,8293],`disallowed`],[[8294,8297],`disallowed`],[[8298,8303],`disallowed`],[[8304,8304],`mapped`,[48]],[[8305,8305],`mapped`,[105]],[[8306,8307],`disallowed`],[[8308,8308],`mapped`,[52]],[[8309,8309],`mapped`,[53]],[[8310,8310],`mapped`,[54]],[[8311,8311],`mapped`,[55]],[[8312,8312],`mapped`,[56]],[[8313,8313],`mapped`,[57]],[[8314,8314],`disallowed_STD3_mapped`,[43]],[[8315,8315],`mapped`,[8722]],[[8316,8316],`disallowed_STD3_mapped`,[61]],[[8317,8317],`disallowed_STD3_mapped`,[40]],[[8318,8318],`disallowed_STD3_mapped`,[41]],[[8319,8319],`mapped`,[110]],[[8320,8320],`mapped`,[48]],[[8321,8321],`mapped`,[49]],[[8322,8322],`mapped`,[50]],[[8323,8323],`mapped`,[51]],[[8324,8324],`mapped`,[52]],[[8325,8325],`mapped`,[53]],[[8326,8326],`mapped`,[54]],[[8327,8327],`mapped`,[55]],[[8328,8328],`mapped`,[56]],[[8329,8329],`mapped`,[57]],[[8330,8330],`disallowed_STD3_mapped`,[43]],[[8331,8331],`mapped`,[8722]],[[8332,8332],`disallowed_STD3_mapped`,[61]],[[8333,8333],`disallowed_STD3_mapped`,[40]],[[8334,8334],`disallowed_STD3_mapped`,[41]],[[8335,8335],`disallowed`],[[8336,8336],`mapped`,[97]],[[8337,8337],`mapped`,[101]],[[8338,8338],`mapped`,[111]],[[8339,8339],`mapped`,[120]],[[8340,8340],`mapped`,[601]],[[8341,8341],`mapped`,[104]],[[8342,8342],`mapped`,[107]],[[8343,8343],`mapped`,[108]],[[8344,8344],`mapped`,[109]],[[8345,8345],`mapped`,[110]],[[8346,8346],`mapped`,[112]],[[8347,8347],`mapped`,[115]],[[8348,8348],`mapped`,[116]],[[8349,8351],`disallowed`],[[8352,8359],`valid`,[],`NV8`],[[8360,8360],`mapped`,[114,115]],[[8361,8362],`valid`,[],`NV8`],[[8363,8363],`valid`,[],`NV8`],[[8364,8364],`valid`,[],`NV8`],[[8365,8367],`valid`,[],`NV8`],[[8368,8369],`valid`,[],`NV8`],[[8370,8373],`valid`,[],`NV8`],[[8374,8376],`valid`,[],`NV8`],[[8377,8377],`valid`,[],`NV8`],[[8378,8378],`valid`,[],`NV8`],[[8379,8381],`valid`,[],`NV8`],[[8382,8382],`valid`,[],`NV8`],[[8383,8399],`disallowed`],[[8400,8417],`valid`,[],`NV8`],[[8418,8419],`valid`,[],`NV8`],[[8420,8426],`valid`,[],`NV8`],[[8427,8427],`valid`,[],`NV8`],[[8428,8431],`valid`,[],`NV8`],[[8432,8432],`valid`,[],`NV8`],[[8433,8447],`disallowed`],[[8448,8448],`disallowed_STD3_mapped`,[97,47,99]],[[8449,8449],`disallowed_STD3_mapped`,[97,47,115]],[[8450,8450],`mapped`,[99]],[[8451,8451],`mapped`,[176,99]],[[8452,8452],`valid`,[],`NV8`],[[8453,8453],`disallowed_STD3_mapped`,[99,47,111]],[[8454,8454],`disallowed_STD3_mapped`,[99,47,117]],[[8455,8455],`mapped`,[603]],[[8456,8456],`valid`,[],`NV8`],[[8457,8457],`mapped`,[176,102]],[[8458,8458],`mapped`,[103]],[[8459,8462],`mapped`,[104]],[[8463,8463],`mapped`,[295]],[[8464,8465],`mapped`,[105]],[[8466,8467],`mapped`,[108]],[[8468,8468],`valid`,[],`NV8`],[[8469,8469],`mapped`,[110]],[[8470,8470],`mapped`,[110,111]],[[8471,8472],`valid`,[],`NV8`],[[8473,8473],`mapped`,[112]],[[8474,8474],`mapped`,[113]],[[8475,8477],`mapped`,[114]],[[8478,8479],`valid`,[],`NV8`],[[8480,8480],`mapped`,[115,109]],[[8481,8481],`mapped`,[116,101,108]],[[8482,8482],`mapped`,[116,109]],[[8483,8483],`valid`,[],`NV8`],[[8484,8484],`mapped`,[122]],[[8485,8485],`valid`,[],`NV8`],[[8486,8486],`mapped`,[969]],[[8487,8487],`valid`,[],`NV8`],[[8488,8488],`mapped`,[122]],[[8489,8489],`valid`,[],`NV8`],[[8490,8490],`mapped`,[107]],[[8491,8491],`mapped`,[229]],[[8492,8492],`mapped`,[98]],[[8493,8493],`mapped`,[99]],[[8494,8494],`valid`,[],`NV8`],[[8495,8496],`mapped`,[101]],[[8497,8497],`mapped`,[102]],[[8498,8498],`disallowed`],[[8499,8499],`mapped`,[109]],[[8500,8500],`mapped`,[111]],[[8501,8501],`mapped`,[1488]],[[8502,8502],`mapped`,[1489]],[[8503,8503],`mapped`,[1490]],[[8504,8504],`mapped`,[1491]],[[8505,8505],`mapped`,[105]],[[8506,8506],`valid`,[],`NV8`],[[8507,8507],`mapped`,[102,97,120]],[[8508,8508],`mapped`,[960]],[[8509,8510],`mapped`,[947]],[[8511,8511],`mapped`,[960]],[[8512,8512],`mapped`,[8721]],[[8513,8516],`valid`,[],`NV8`],[[8517,8518],`mapped`,[100]],[[8519,8519],`mapped`,[101]],[[8520,8520],`mapped`,[105]],[[8521,8521],`mapped`,[106]],[[8522,8523],`valid`,[],`NV8`],[[8524,8524],`valid`,[],`NV8`],[[8525,8525],`valid`,[],`NV8`],[[8526,8526],`valid`],[[8527,8527],`valid`,[],`NV8`],[[8528,8528],`mapped`,[49,8260,55]],[[8529,8529],`mapped`,[49,8260,57]],[[8530,8530],`mapped`,[49,8260,49,48]],[[8531,8531],`mapped`,[49,8260,51]],[[8532,8532],`mapped`,[50,8260,51]],[[8533,8533],`mapped`,[49,8260,53]],[[8534,8534],`mapped`,[50,8260,53]],[[8535,8535],`mapped`,[51,8260,53]],[[8536,8536],`mapped`,[52,8260,53]],[[8537,8537],`mapped`,[49,8260,54]],[[8538,8538],`mapped`,[53,8260,54]],[[8539,8539],`mapped`,[49,8260,56]],[[8540,8540],`mapped`,[51,8260,56]],[[8541,8541],`mapped`,[53,8260,56]],[[8542,8542],`mapped`,[55,8260,56]],[[8543,8543],`mapped`,[49,8260]],[[8544,8544],`mapped`,[105]],[[8545,8545],`mapped`,[105,105]],[[8546,8546],`mapped`,[105,105,105]],[[8547,8547],`mapped`,[105,118]],[[8548,8548],`mapped`,[118]],[[8549,8549],`mapped`,[118,105]],[[8550,8550],`mapped`,[118,105,105]],[[8551,8551],`mapped`,[118,105,105,105]],[[8552,8552],`mapped`,[105,120]],[[8553,8553],`mapped`,[120]],[[8554,8554],`mapped`,[120,105]],[[8555,8555],`mapped`,[120,105,105]],[[8556,8556],`mapped`,[108]],[[8557,8557],`mapped`,[99]],[[8558,8558],`mapped`,[100]],[[8559,8559],`mapped`,[109]],[[8560,8560],`mapped`,[105]],[[8561,8561],`mapped`,[105,105]],[[8562,8562],`mapped`,[105,105,105]],[[8563,8563],`mapped`,[105,118]],[[8564,8564],`mapped`,[118]],[[8565,8565],`mapped`,[118,105]],[[8566,8566],`mapped`,[118,105,105]],[[8567,8567],`mapped`,[118,105,105,105]],[[8568,8568],`mapped`,[105,120]],[[8569,8569],`mapped`,[120]],[[8570,8570],`mapped`,[120,105]],[[8571,8571],`mapped`,[120,105,105]],[[8572,8572],`mapped`,[108]],[[8573,8573],`mapped`,[99]],[[8574,8574],`mapped`,[100]],[[8575,8575],`mapped`,[109]],[[8576,8578],`valid`,[],`NV8`],[[8579,8579],`disallowed`],[[8580,8580],`valid`],[[8581,8584],`valid`,[],`NV8`],[[8585,8585],`mapped`,[48,8260,51]],[[8586,8587],`valid`,[],`NV8`],[[8588,8591],`disallowed`],[[8592,8682],`valid`,[],`NV8`],[[8683,8691],`valid`,[],`NV8`],[[8692,8703],`valid`,[],`NV8`],[[8704,8747],`valid`,[],`NV8`],[[8748,8748],`mapped`,[8747,8747]],[[8749,8749],`mapped`,[8747,8747,8747]],[[8750,8750],`valid`,[],`NV8`],[[8751,8751],`mapped`,[8750,8750]],[[8752,8752],`mapped`,[8750,8750,8750]],[[8753,8799],`valid`,[],`NV8`],[[8800,8800],`disallowed_STD3_valid`],[[8801,8813],`valid`,[],`NV8`],[[8814,8815],`disallowed_STD3_valid`],[[8816,8945],`valid`,[],`NV8`],[[8946,8959],`valid`,[],`NV8`],[[8960,8960],`valid`,[],`NV8`],[[8961,8961],`valid`,[],`NV8`],[[8962,9e3],`valid`,[],`NV8`],[[9001,9001],`mapped`,[12296]],[[9002,9002],`mapped`,[12297]],[[9003,9082],`valid`,[],`NV8`],[[9083,9083],`valid`,[],`NV8`],[[9084,9084],`valid`,[],`NV8`],[[9085,9114],`valid`,[],`NV8`],[[9115,9166],`valid`,[],`NV8`],[[9167,9168],`valid`,[],`NV8`],[[9169,9179],`valid`,[],`NV8`],[[9180,9191],`valid`,[],`NV8`],[[9192,9192],`valid`,[],`NV8`],[[9193,9203],`valid`,[],`NV8`],[[9204,9210],`valid`,[],`NV8`],[[9211,9215],`disallowed`],[[9216,9252],`valid`,[],`NV8`],[[9253,9254],`valid`,[],`NV8`],[[9255,9279],`disallowed`],[[9280,9290],`valid`,[],`NV8`],[[9291,9311],`disallowed`],[[9312,9312],`mapped`,[49]],[[9313,9313],`mapped`,[50]],[[9314,9314],`mapped`,[51]],[[9315,9315],`mapped`,[52]],[[9316,9316],`mapped`,[53]],[[9317,9317],`mapped`,[54]],[[9318,9318],`mapped`,[55]],[[9319,9319],`mapped`,[56]],[[9320,9320],`mapped`,[57]],[[9321,9321],`mapped`,[49,48]],[[9322,9322],`mapped`,[49,49]],[[9323,9323],`mapped`,[49,50]],[[9324,9324],`mapped`,[49,51]],[[9325,9325],`mapped`,[49,52]],[[9326,9326],`mapped`,[49,53]],[[9327,9327],`mapped`,[49,54]],[[9328,9328],`mapped`,[49,55]],[[9329,9329],`mapped`,[49,56]],[[9330,9330],`mapped`,[49,57]],[[9331,9331],`mapped`,[50,48]],[[9332,9332],`disallowed_STD3_mapped`,[40,49,41]],[[9333,9333],`disallowed_STD3_mapped`,[40,50,41]],[[9334,9334],`disallowed_STD3_mapped`,[40,51,41]],[[9335,9335],`disallowed_STD3_mapped`,[40,52,41]],[[9336,9336],`disallowed_STD3_mapped`,[40,53,41]],[[9337,9337],`disallowed_STD3_mapped`,[40,54,41]],[[9338,9338],`disallowed_STD3_mapped`,[40,55,41]],[[9339,9339],`disallowed_STD3_mapped`,[40,56,41]],[[9340,9340],`disallowed_STD3_mapped`,[40,57,41]],[[9341,9341],`disallowed_STD3_mapped`,[40,49,48,41]],[[9342,9342],`disallowed_STD3_mapped`,[40,49,49,41]],[[9343,9343],`disallowed_STD3_mapped`,[40,49,50,41]],[[9344,9344],`disallowed_STD3_mapped`,[40,49,51,41]],[[9345,9345],`disallowed_STD3_mapped`,[40,49,52,41]],[[9346,9346],`disallowed_STD3_mapped`,[40,49,53,41]],[[9347,9347],`disallowed_STD3_mapped`,[40,49,54,41]],[[9348,9348],`disallowed_STD3_mapped`,[40,49,55,41]],[[9349,9349],`disallowed_STD3_mapped`,[40,49,56,41]],[[9350,9350],`disallowed_STD3_mapped`,[40,49,57,41]],[[9351,9351],`disallowed_STD3_mapped`,[40,50,48,41]],[[9352,9371],`disallowed`],[[9372,9372],`disallowed_STD3_mapped`,[40,97,41]],[[9373,9373],`disallowed_STD3_mapped`,[40,98,41]],[[9374,9374],`disallowed_STD3_mapped`,[40,99,41]],[[9375,9375],`disallowed_STD3_mapped`,[40,100,41]],[[9376,9376],`disallowed_STD3_mapped`,[40,101,41]],[[9377,9377],`disallowed_STD3_mapped`,[40,102,41]],[[9378,9378],`disallowed_STD3_mapped`,[40,103,41]],[[9379,9379],`disallowed_STD3_mapped`,[40,104,41]],[[9380,9380],`disallowed_STD3_mapped`,[40,105,41]],[[9381,9381],`disallowed_STD3_mapped`,[40,106,41]],[[9382,9382],`disallowed_STD3_mapped`,[40,107,41]],[[9383,9383],`disallowed_STD3_mapped`,[40,108,41]],[[9384,9384],`disallowed_STD3_mapped`,[40,109,41]],[[9385,9385],`disallowed_STD3_mapped`,[40,110,41]],[[9386,9386],`disallowed_STD3_mapped`,[40,111,41]],[[9387,9387],`disallowed_STD3_mapped`,[40,112,41]],[[9388,9388],`disallowed_STD3_mapped`,[40,113,41]],[[9389,9389],`disallowed_STD3_mapped`,[40,114,41]],[[9390,9390],`disallowed_STD3_mapped`,[40,115,41]],[[9391,9391],`disallowed_STD3_mapped`,[40,116,41]],[[9392,9392],`disallowed_STD3_mapped`,[40,117,41]],[[9393,9393],`disallowed_STD3_mapped`,[40,118,41]],[[9394,9394],`disallowed_STD3_mapped`,[40,119,41]],[[9395,9395],`disallowed_STD3_mapped`,[40,120,41]],[[9396,9396],`disallowed_STD3_mapped`,[40,121,41]],[[9397,9397],`disallowed_STD3_mapped`,[40,122,41]],[[9398,9398],`mapped`,[97]],[[9399,9399],`mapped`,[98]],[[9400,9400],`mapped`,[99]],[[9401,9401],`mapped`,[100]],[[9402,9402],`mapped`,[101]],[[9403,9403],`mapped`,[102]],[[9404,9404],`mapped`,[103]],[[9405,9405],`mapped`,[104]],[[9406,9406],`mapped`,[105]],[[9407,9407],`mapped`,[106]],[[9408,9408],`mapped`,[107]],[[9409,9409],`mapped`,[108]],[[9410,9410],`mapped`,[109]],[[9411,9411],`mapped`,[110]],[[9412,9412],`mapped`,[111]],[[9413,9413],`mapped`,[112]],[[9414,9414],`mapped`,[113]],[[9415,9415],`mapped`,[114]],[[9416,9416],`mapped`,[115]],[[9417,9417],`mapped`,[116]],[[9418,9418],`mapped`,[117]],[[9419,9419],`mapped`,[118]],[[9420,9420],`mapped`,[119]],[[9421,9421],`mapped`,[120]],[[9422,9422],`mapped`,[121]],[[9423,9423],`mapped`,[122]],[[9424,9424],`mapped`,[97]],[[9425,9425],`mapped`,[98]],[[9426,9426],`mapped`,[99]],[[9427,9427],`mapped`,[100]],[[9428,9428],`mapped`,[101]],[[9429,9429],`mapped`,[102]],[[9430,9430],`mapped`,[103]],[[9431,9431],`mapped`,[104]],[[9432,9432],`mapped`,[105]],[[9433,9433],`mapped`,[106]],[[9434,9434],`mapped`,[107]],[[9435,9435],`mapped`,[108]],[[9436,9436],`mapped`,[109]],[[9437,9437],`mapped`,[110]],[[9438,9438],`mapped`,[111]],[[9439,9439],`mapped`,[112]],[[9440,9440],`mapped`,[113]],[[9441,9441],`mapped`,[114]],[[9442,9442],`mapped`,[115]],[[9443,9443],`mapped`,[116]],[[9444,9444],`mapped`,[117]],[[9445,9445],`mapped`,[118]],[[9446,9446],`mapped`,[119]],[[9447,9447],`mapped`,[120]],[[9448,9448],`mapped`,[121]],[[9449,9449],`mapped`,[122]],[[9450,9450],`mapped`,[48]],[[9451,9470],`valid`,[],`NV8`],[[9471,9471],`valid`,[],`NV8`],[[9472,9621],`valid`,[],`NV8`],[[9622,9631],`valid`,[],`NV8`],[[9632,9711],`valid`,[],`NV8`],[[9712,9719],`valid`,[],`NV8`],[[9720,9727],`valid`,[],`NV8`],[[9728,9747],`valid`,[],`NV8`],[[9748,9749],`valid`,[],`NV8`],[[9750,9751],`valid`,[],`NV8`],[[9752,9752],`valid`,[],`NV8`],[[9753,9753],`valid`,[],`NV8`],[[9754,9839],`valid`,[],`NV8`],[[9840,9841],`valid`,[],`NV8`],[[9842,9853],`valid`,[],`NV8`],[[9854,9855],`valid`,[],`NV8`],[[9856,9865],`valid`,[],`NV8`],[[9866,9873],`valid`,[],`NV8`],[[9874,9884],`valid`,[],`NV8`],[[9885,9885],`valid`,[],`NV8`],[[9886,9887],`valid`,[],`NV8`],[[9888,9889],`valid`,[],`NV8`],[[9890,9905],`valid`,[],`NV8`],[[9906,9906],`valid`,[],`NV8`],[[9907,9916],`valid`,[],`NV8`],[[9917,9919],`valid`,[],`NV8`],[[9920,9923],`valid`,[],`NV8`],[[9924,9933],`valid`,[],`NV8`],[[9934,9934],`valid`,[],`NV8`],[[9935,9953],`valid`,[],`NV8`],[[9954,9954],`valid`,[],`NV8`],[[9955,9955],`valid`,[],`NV8`],[[9956,9959],`valid`,[],`NV8`],[[9960,9983],`valid`,[],`NV8`],[[9984,9984],`valid`,[],`NV8`],[[9985,9988],`valid`,[],`NV8`],[[9989,9989],`valid`,[],`NV8`],[[9990,9993],`valid`,[],`NV8`],[[9994,9995],`valid`,[],`NV8`],[[9996,10023],`valid`,[],`NV8`],[[10024,10024],`valid`,[],`NV8`],[[10025,10059],`valid`,[],`NV8`],[[10060,10060],`valid`,[],`NV8`],[[10061,10061],`valid`,[],`NV8`],[[10062,10062],`valid`,[],`NV8`],[[10063,10066],`valid`,[],`NV8`],[[10067,10069],`valid`,[],`NV8`],[[10070,10070],`valid`,[],`NV8`],[[10071,10071],`valid`,[],`NV8`],[[10072,10078],`valid`,[],`NV8`],[[10079,10080],`valid`,[],`NV8`],[[10081,10087],`valid`,[],`NV8`],[[10088,10101],`valid`,[],`NV8`],[[10102,10132],`valid`,[],`NV8`],[[10133,10135],`valid`,[],`NV8`],[[10136,10159],`valid`,[],`NV8`],[[10160,10160],`valid`,[],`NV8`],[[10161,10174],`valid`,[],`NV8`],[[10175,10175],`valid`,[],`NV8`],[[10176,10182],`valid`,[],`NV8`],[[10183,10186],`valid`,[],`NV8`],[[10187,10187],`valid`,[],`NV8`],[[10188,10188],`valid`,[],`NV8`],[[10189,10189],`valid`,[],`NV8`],[[10190,10191],`valid`,[],`NV8`],[[10192,10219],`valid`,[],`NV8`],[[10220,10223],`valid`,[],`NV8`],[[10224,10239],`valid`,[],`NV8`],[[10240,10495],`valid`,[],`NV8`],[[10496,10763],`valid`,[],`NV8`],[[10764,10764],`mapped`,[8747,8747,8747,8747]],[[10765,10867],`valid`,[],`NV8`],[[10868,10868],`disallowed_STD3_mapped`,[58,58,61]],[[10869,10869],`disallowed_STD3_mapped`,[61,61]],[[10870,10870],`disallowed_STD3_mapped`,[61,61,61]],[[10871,10971],`valid`,[],`NV8`],[[10972,10972],`mapped`,[10973,824]],[[10973,11007],`valid`,[],`NV8`],[[11008,11021],`valid`,[],`NV8`],[[11022,11027],`valid`,[],`NV8`],[[11028,11034],`valid`,[],`NV8`],[[11035,11039],`valid`,[],`NV8`],[[11040,11043],`valid`,[],`NV8`],[[11044,11084],`valid`,[],`NV8`],[[11085,11087],`valid`,[],`NV8`],[[11088,11092],`valid`,[],`NV8`],[[11093,11097],`valid`,[],`NV8`],[[11098,11123],`valid`,[],`NV8`],[[11124,11125],`disallowed`],[[11126,11157],`valid`,[],`NV8`],[[11158,11159],`disallowed`],[[11160,11193],`valid`,[],`NV8`],[[11194,11196],`disallowed`],[[11197,11208],`valid`,[],`NV8`],[[11209,11209],`disallowed`],[[11210,11217],`valid`,[],`NV8`],[[11218,11243],`disallowed`],[[11244,11247],`valid`,[],`NV8`],[[11248,11263],`disallowed`],[[11264,11264],`mapped`,[11312]],[[11265,11265],`mapped`,[11313]],[[11266,11266],`mapped`,[11314]],[[11267,11267],`mapped`,[11315]],[[11268,11268],`mapped`,[11316]],[[11269,11269],`mapped`,[11317]],[[11270,11270],`mapped`,[11318]],[[11271,11271],`mapped`,[11319]],[[11272,11272],`mapped`,[11320]],[[11273,11273],`mapped`,[11321]],[[11274,11274],`mapped`,[11322]],[[11275,11275],`mapped`,[11323]],[[11276,11276],`mapped`,[11324]],[[11277,11277],`mapped`,[11325]],[[11278,11278],`mapped`,[11326]],[[11279,11279],`mapped`,[11327]],[[11280,11280],`mapped`,[11328]],[[11281,11281],`mapped`,[11329]],[[11282,11282],`mapped`,[11330]],[[11283,11283],`mapped`,[11331]],[[11284,11284],`mapped`,[11332]],[[11285,11285],`mapped`,[11333]],[[11286,11286],`mapped`,[11334]],[[11287,11287],`mapped`,[11335]],[[11288,11288],`mapped`,[11336]],[[11289,11289],`mapped`,[11337]],[[11290,11290],`mapped`,[11338]],[[11291,11291],`mapped`,[11339]],[[11292,11292],`mapped`,[11340]],[[11293,11293],`mapped`,[11341]],[[11294,11294],`mapped`,[11342]],[[11295,11295],`mapped`,[11343]],[[11296,11296],`mapped`,[11344]],[[11297,11297],`mapped`,[11345]],[[11298,11298],`mapped`,[11346]],[[11299,11299],`mapped`,[11347]],[[11300,11300],`mapped`,[11348]],[[11301,11301],`mapped`,[11349]],[[11302,11302],`mapped`,[11350]],[[11303,11303],`mapped`,[11351]],[[11304,11304],`mapped`,[11352]],[[11305,11305],`mapped`,[11353]],[[11306,11306],`mapped`,[11354]],[[11307,11307],`mapped`,[11355]],[[11308,11308],`mapped`,[11356]],[[11309,11309],`mapped`,[11357]],[[11310,11310],`mapped`,[11358]],[[11311,11311],`disallowed`],[[11312,11358],`valid`],[[11359,11359],`disallowed`],[[11360,11360],`mapped`,[11361]],[[11361,11361],`valid`],[[11362,11362],`mapped`,[619]],[[11363,11363],`mapped`,[7549]],[[11364,11364],`mapped`,[637]],[[11365,11366],`valid`],[[11367,11367],`mapped`,[11368]],[[11368,11368],`valid`],[[11369,11369],`mapped`,[11370]],[[11370,11370],`valid`],[[11371,11371],`mapped`,[11372]],[[11372,11372],`valid`],[[11373,11373],`mapped`,[593]],[[11374,11374],`mapped`,[625]],[[11375,11375],`mapped`,[592]],[[11376,11376],`mapped`,[594]],[[11377,11377],`valid`],[[11378,11378],`mapped`,[11379]],[[11379,11379],`valid`],[[11380,11380],`valid`],[[11381,11381],`mapped`,[11382]],[[11382,11383],`valid`],[[11384,11387],`valid`],[[11388,11388],`mapped`,[106]],[[11389,11389],`mapped`,[118]],[[11390,11390],`mapped`,[575]],[[11391,11391],`mapped`,[576]],[[11392,11392],`mapped`,[11393]],[[11393,11393],`valid`],[[11394,11394],`mapped`,[11395]],[[11395,11395],`valid`],[[11396,11396],`mapped`,[11397]],[[11397,11397],`valid`],[[11398,11398],`mapped`,[11399]],[[11399,11399],`valid`],[[11400,11400],`mapped`,[11401]],[[11401,11401],`valid`],[[11402,11402],`mapped`,[11403]],[[11403,11403],`valid`],[[11404,11404],`mapped`,[11405]],[[11405,11405],`valid`],[[11406,11406],`mapped`,[11407]],[[11407,11407],`valid`],[[11408,11408],`mapped`,[11409]],[[11409,11409],`valid`],[[11410,11410],`mapped`,[11411]],[[11411,11411],`valid`],[[11412,11412],`mapped`,[11413]],[[11413,11413],`valid`],[[11414,11414],`mapped`,[11415]],[[11415,11415],`valid`],[[11416,11416],`mapped`,[11417]],[[11417,11417],`valid`],[[11418,11418],`mapped`,[11419]],[[11419,11419],`valid`],[[11420,11420],`mapped`,[11421]],[[11421,11421],`valid`],[[11422,11422],`mapped`,[11423]],[[11423,11423],`valid`],[[11424,11424],`mapped`,[11425]],[[11425,11425],`valid`],[[11426,11426],`mapped`,[11427]],[[11427,11427],`valid`],[[11428,11428],`mapped`,[11429]],[[11429,11429],`valid`],[[11430,11430],`mapped`,[11431]],[[11431,11431],`valid`],[[11432,11432],`mapped`,[11433]],[[11433,11433],`valid`],[[11434,11434],`mapped`,[11435]],[[11435,11435],`valid`],[[11436,11436],`mapped`,[11437]],[[11437,11437],`valid`],[[11438,11438],`mapped`,[11439]],[[11439,11439],`valid`],[[11440,11440],`mapped`,[11441]],[[11441,11441],`valid`],[[11442,11442],`mapped`,[11443]],[[11443,11443],`valid`],[[11444,11444],`mapped`,[11445]],[[11445,11445],`valid`],[[11446,11446],`mapped`,[11447]],[[11447,11447],`valid`],[[11448,11448],`mapped`,[11449]],[[11449,11449],`valid`],[[11450,11450],`mapped`,[11451]],[[11451,11451],`valid`],[[11452,11452],`mapped`,[11453]],[[11453,11453],`valid`],[[11454,11454],`mapped`,[11455]],[[11455,11455],`valid`],[[11456,11456],`mapped`,[11457]],[[11457,11457],`valid`],[[11458,11458],`mapped`,[11459]],[[11459,11459],`valid`],[[11460,11460],`mapped`,[11461]],[[11461,11461],`valid`],[[11462,11462],`mapped`,[11463]],[[11463,11463],`valid`],[[11464,11464],`mapped`,[11465]],[[11465,11465],`valid`],[[11466,11466],`mapped`,[11467]],[[11467,11467],`valid`],[[11468,11468],`mapped`,[11469]],[[11469,11469],`valid`],[[11470,11470],`mapped`,[11471]],[[11471,11471],`valid`],[[11472,11472],`mapped`,[11473]],[[11473,11473],`valid`],[[11474,11474],`mapped`,[11475]],[[11475,11475],`valid`],[[11476,11476],`mapped`,[11477]],[[11477,11477],`valid`],[[11478,11478],`mapped`,[11479]],[[11479,11479],`valid`],[[11480,11480],`mapped`,[11481]],[[11481,11481],`valid`],[[11482,11482],`mapped`,[11483]],[[11483,11483],`valid`],[[11484,11484],`mapped`,[11485]],[[11485,11485],`valid`],[[11486,11486],`mapped`,[11487]],[[11487,11487],`valid`],[[11488,11488],`mapped`,[11489]],[[11489,11489],`valid`],[[11490,11490],`mapped`,[11491]],[[11491,11492],`valid`],[[11493,11498],`valid`,[],`NV8`],[[11499,11499],`mapped`,[11500]],[[11500,11500],`valid`],[[11501,11501],`mapped`,[11502]],[[11502,11505],`valid`],[[11506,11506],`mapped`,[11507]],[[11507,11507],`valid`],[[11508,11512],`disallowed`],[[11513,11519],`valid`,[],`NV8`],[[11520,11557],`valid`],[[11558,11558],`disallowed`],[[11559,11559],`valid`],[[11560,11564],`disallowed`],[[11565,11565],`valid`],[[11566,11567],`disallowed`],[[11568,11621],`valid`],[[11622,11623],`valid`],[[11624,11630],`disallowed`],[[11631,11631],`mapped`,[11617]],[[11632,11632],`valid`,[],`NV8`],[[11633,11646],`disallowed`],[[11647,11647],`valid`],[[11648,11670],`valid`],[[11671,11679],`disallowed`],[[11680,11686],`valid`],[[11687,11687],`disallowed`],[[11688,11694],`valid`],[[11695,11695],`disallowed`],[[11696,11702],`valid`],[[11703,11703],`disallowed`],[[11704,11710],`valid`],[[11711,11711],`disallowed`],[[11712,11718],`valid`],[[11719,11719],`disallowed`],[[11720,11726],`valid`],[[11727,11727],`disallowed`],[[11728,11734],`valid`],[[11735,11735],`disallowed`],[[11736,11742],`valid`],[[11743,11743],`disallowed`],[[11744,11775],`valid`],[[11776,11799],`valid`,[],`NV8`],[[11800,11803],`valid`,[],`NV8`],[[11804,11805],`valid`,[],`NV8`],[[11806,11822],`valid`,[],`NV8`],[[11823,11823],`valid`],[[11824,11824],`valid`,[],`NV8`],[[11825,11825],`valid`,[],`NV8`],[[11826,11835],`valid`,[],`NV8`],[[11836,11842],`valid`,[],`NV8`],[[11843,11903],`disallowed`],[[11904,11929],`valid`,[],`NV8`],[[11930,11930],`disallowed`],[[11931,11934],`valid`,[],`NV8`],[[11935,11935],`mapped`,[27597]],[[11936,12018],`valid`,[],`NV8`],[[12019,12019],`mapped`,[40863]],[[12020,12031],`disallowed`],[[12032,12032],`mapped`,[19968]],[[12033,12033],`mapped`,[20008]],[[12034,12034],`mapped`,[20022]],[[12035,12035],`mapped`,[20031]],[[12036,12036],`mapped`,[20057]],[[12037,12037],`mapped`,[20101]],[[12038,12038],`mapped`,[20108]],[[12039,12039],`mapped`,[20128]],[[12040,12040],`mapped`,[20154]],[[12041,12041],`mapped`,[20799]],[[12042,12042],`mapped`,[20837]],[[12043,12043],`mapped`,[20843]],[[12044,12044],`mapped`,[20866]],[[12045,12045],`mapped`,[20886]],[[12046,12046],`mapped`,[20907]],[[12047,12047],`mapped`,[20960]],[[12048,12048],`mapped`,[20981]],[[12049,12049],`mapped`,[20992]],[[12050,12050],`mapped`,[21147]],[[12051,12051],`mapped`,[21241]],[[12052,12052],`mapped`,[21269]],[[12053,12053],`mapped`,[21274]],[[12054,12054],`mapped`,[21304]],[[12055,12055],`mapped`,[21313]],[[12056,12056],`mapped`,[21340]],[[12057,12057],`mapped`,[21353]],[[12058,12058],`mapped`,[21378]],[[12059,12059],`mapped`,[21430]],[[12060,12060],`mapped`,[21448]],[[12061,12061],`mapped`,[21475]],[[12062,12062],`mapped`,[22231]],[[12063,12063],`mapped`,[22303]],[[12064,12064],`mapped`,[22763]],[[12065,12065],`mapped`,[22786]],[[12066,12066],`mapped`,[22794]],[[12067,12067],`mapped`,[22805]],[[12068,12068],`mapped`,[22823]],[[12069,12069],`mapped`,[22899]],[[12070,12070],`mapped`,[23376]],[[12071,12071],`mapped`,[23424]],[[12072,12072],`mapped`,[23544]],[[12073,12073],`mapped`,[23567]],[[12074,12074],`mapped`,[23586]],[[12075,12075],`mapped`,[23608]],[[12076,12076],`mapped`,[23662]],[[12077,12077],`mapped`,[23665]],[[12078,12078],`mapped`,[24027]],[[12079,12079],`mapped`,[24037]],[[12080,12080],`mapped`,[24049]],[[12081,12081],`mapped`,[24062]],[[12082,12082],`mapped`,[24178]],[[12083,12083],`mapped`,[24186]],[[12084,12084],`mapped`,[24191]],[[12085,12085],`mapped`,[24308]],[[12086,12086],`mapped`,[24318]],[[12087,12087],`mapped`,[24331]],[[12088,12088],`mapped`,[24339]],[[12089,12089],`mapped`,[24400]],[[12090,12090],`mapped`,[24417]],[[12091,12091],`mapped`,[24435]],[[12092,12092],`mapped`,[24515]],[[12093,12093],`mapped`,[25096]],[[12094,12094],`mapped`,[25142]],[[12095,12095],`mapped`,[25163]],[[12096,12096],`mapped`,[25903]],[[12097,12097],`mapped`,[25908]],[[12098,12098],`mapped`,[25991]],[[12099,12099],`mapped`,[26007]],[[12100,12100],`mapped`,[26020]],[[12101,12101],`mapped`,[26041]],[[12102,12102],`mapped`,[26080]],[[12103,12103],`mapped`,[26085]],[[12104,12104],`mapped`,[26352]],[[12105,12105],`mapped`,[26376]],[[12106,12106],`mapped`,[26408]],[[12107,12107],`mapped`,[27424]],[[12108,12108],`mapped`,[27490]],[[12109,12109],`mapped`,[27513]],[[12110,12110],`mapped`,[27571]],[[12111,12111],`mapped`,[27595]],[[12112,12112],`mapped`,[27604]],[[12113,12113],`mapped`,[27611]],[[12114,12114],`mapped`,[27663]],[[12115,12115],`mapped`,[27668]],[[12116,12116],`mapped`,[27700]],[[12117,12117],`mapped`,[28779]],[[12118,12118],`mapped`,[29226]],[[12119,12119],`mapped`,[29238]],[[12120,12120],`mapped`,[29243]],[[12121,12121],`mapped`,[29247]],[[12122,12122],`mapped`,[29255]],[[12123,12123],`mapped`,[29273]],[[12124,12124],`mapped`,[29275]],[[12125,12125],`mapped`,[29356]],[[12126,12126],`mapped`,[29572]],[[12127,12127],`mapped`,[29577]],[[12128,12128],`mapped`,[29916]],[[12129,12129],`mapped`,[29926]],[[12130,12130],`mapped`,[29976]],[[12131,12131],`mapped`,[29983]],[[12132,12132],`mapped`,[29992]],[[12133,12133],`mapped`,[3e4]],[[12134,12134],`mapped`,[30091]],[[12135,12135],`mapped`,[30098]],[[12136,12136],`mapped`,[30326]],[[12137,12137],`mapped`,[30333]],[[12138,12138],`mapped`,[30382]],[[12139,12139],`mapped`,[30399]],[[12140,12140],`mapped`,[30446]],[[12141,12141],`mapped`,[30683]],[[12142,12142],`mapped`,[30690]],[[12143,12143],`mapped`,[30707]],[[12144,12144],`mapped`,[31034]],[[12145,12145],`mapped`,[31160]],[[12146,12146],`mapped`,[31166]],[[12147,12147],`mapped`,[31348]],[[12148,12148],`mapped`,[31435]],[[12149,12149],`mapped`,[31481]],[[12150,12150],`mapped`,[31859]],[[12151,12151],`mapped`,[31992]],[[12152,12152],`mapped`,[32566]],[[12153,12153],`mapped`,[32593]],[[12154,12154],`mapped`,[32650]],[[12155,12155],`mapped`,[32701]],[[12156,12156],`mapped`,[32769]],[[12157,12157],`mapped`,[32780]],[[12158,12158],`mapped`,[32786]],[[12159,12159],`mapped`,[32819]],[[12160,12160],`mapped`,[32895]],[[12161,12161],`mapped`,[32905]],[[12162,12162],`mapped`,[33251]],[[12163,12163],`mapped`,[33258]],[[12164,12164],`mapped`,[33267]],[[12165,12165],`mapped`,[33276]],[[12166,12166],`mapped`,[33292]],[[12167,12167],`mapped`,[33307]],[[12168,12168],`mapped`,[33311]],[[12169,12169],`mapped`,[33390]],[[12170,12170],`mapped`,[33394]],[[12171,12171],`mapped`,[33400]],[[12172,12172],`mapped`,[34381]],[[12173,12173],`mapped`,[34411]],[[12174,12174],`mapped`,[34880]],[[12175,12175],`mapped`,[34892]],[[12176,12176],`mapped`,[34915]],[[12177,12177],`mapped`,[35198]],[[12178,12178],`mapped`,[35211]],[[12179,12179],`mapped`,[35282]],[[12180,12180],`mapped`,[35328]],[[12181,12181],`mapped`,[35895]],[[12182,12182],`mapped`,[35910]],[[12183,12183],`mapped`,[35925]],[[12184,12184],`mapped`,[35960]],[[12185,12185],`mapped`,[35997]],[[12186,12186],`mapped`,[36196]],[[12187,12187],`mapped`,[36208]],[[12188,12188],`mapped`,[36275]],[[12189,12189],`mapped`,[36523]],[[12190,12190],`mapped`,[36554]],[[12191,12191],`mapped`,[36763]],[[12192,12192],`mapped`,[36784]],[[12193,12193],`mapped`,[36789]],[[12194,12194],`mapped`,[37009]],[[12195,12195],`mapped`,[37193]],[[12196,12196],`mapped`,[37318]],[[12197,12197],`mapped`,[37324]],[[12198,12198],`mapped`,[37329]],[[12199,12199],`mapped`,[38263]],[[12200,12200],`mapped`,[38272]],[[12201,12201],`mapped`,[38428]],[[12202,12202],`mapped`,[38582]],[[12203,12203],`mapped`,[38585]],[[12204,12204],`mapped`,[38632]],[[12205,12205],`mapped`,[38737]],[[12206,12206],`mapped`,[38750]],[[12207,12207],`mapped`,[38754]],[[12208,12208],`mapped`,[38761]],[[12209,12209],`mapped`,[38859]],[[12210,12210],`mapped`,[38893]],[[12211,12211],`mapped`,[38899]],[[12212,12212],`mapped`,[38913]],[[12213,12213],`mapped`,[39080]],[[12214,12214],`mapped`,[39131]],[[12215,12215],`mapped`,[39135]],[[12216,12216],`mapped`,[39318]],[[12217,12217],`mapped`,[39321]],[[12218,12218],`mapped`,[39340]],[[12219,12219],`mapped`,[39592]],[[12220,12220],`mapped`,[39640]],[[12221,12221],`mapped`,[39647]],[[12222,12222],`mapped`,[39717]],[[12223,12223],`mapped`,[39727]],[[12224,12224],`mapped`,[39730]],[[12225,12225],`mapped`,[39740]],[[12226,12226],`mapped`,[39770]],[[12227,12227],`mapped`,[40165]],[[12228,12228],`mapped`,[40565]],[[12229,12229],`mapped`,[40575]],[[12230,12230],`mapped`,[40613]],[[12231,12231],`mapped`,[40635]],[[12232,12232],`mapped`,[40643]],[[12233,12233],`mapped`,[40653]],[[12234,12234],`mapped`,[40657]],[[12235,12235],`mapped`,[40697]],[[12236,12236],`mapped`,[40701]],[[12237,12237],`mapped`,[40718]],[[12238,12238],`mapped`,[40723]],[[12239,12239],`mapped`,[40736]],[[12240,12240],`mapped`,[40763]],[[12241,12241],`mapped`,[40778]],[[12242,12242],`mapped`,[40786]],[[12243,12243],`mapped`,[40845]],[[12244,12244],`mapped`,[40860]],[[12245,12245],`mapped`,[40864]],[[12246,12271],`disallowed`],[[12272,12283],`disallowed`],[[12284,12287],`disallowed`],[[12288,12288],`disallowed_STD3_mapped`,[32]],[[12289,12289],`valid`,[],`NV8`],[[12290,12290],`mapped`,[46]],[[12291,12292],`valid`,[],`NV8`],[[12293,12295],`valid`],[[12296,12329],`valid`,[],`NV8`],[[12330,12333],`valid`],[[12334,12341],`valid`,[],`NV8`],[[12342,12342],`mapped`,[12306]],[[12343,12343],`valid`,[],`NV8`],[[12344,12344],`mapped`,[21313]],[[12345,12345],`mapped`,[21316]],[[12346,12346],`mapped`,[21317]],[[12347,12347],`valid`,[],`NV8`],[[12348,12348],`valid`],[[12349,12349],`valid`,[],`NV8`],[[12350,12350],`valid`,[],`NV8`],[[12351,12351],`valid`,[],`NV8`],[[12352,12352],`disallowed`],[[12353,12436],`valid`],[[12437,12438],`valid`],[[12439,12440],`disallowed`],[[12441,12442],`valid`],[[12443,12443],`disallowed_STD3_mapped`,[32,12441]],[[12444,12444],`disallowed_STD3_mapped`,[32,12442]],[[12445,12446],`valid`],[[12447,12447],`mapped`,[12424,12426]],[[12448,12448],`valid`,[],`NV8`],[[12449,12542],`valid`],[[12543,12543],`mapped`,[12467,12488]],[[12544,12548],`disallowed`],[[12549,12588],`valid`],[[12589,12589],`valid`],[[12590,12592],`disallowed`],[[12593,12593],`mapped`,[4352]],[[12594,12594],`mapped`,[4353]],[[12595,12595],`mapped`,[4522]],[[12596,12596],`mapped`,[4354]],[[12597,12597],`mapped`,[4524]],[[12598,12598],`mapped`,[4525]],[[12599,12599],`mapped`,[4355]],[[12600,12600],`mapped`,[4356]],[[12601,12601],`mapped`,[4357]],[[12602,12602],`mapped`,[4528]],[[12603,12603],`mapped`,[4529]],[[12604,12604],`mapped`,[4530]],[[12605,12605],`mapped`,[4531]],[[12606,12606],`mapped`,[4532]],[[12607,12607],`mapped`,[4533]],[[12608,12608],`mapped`,[4378]],[[12609,12609],`mapped`,[4358]],[[12610,12610],`mapped`,[4359]],[[12611,12611],`mapped`,[4360]],[[12612,12612],`mapped`,[4385]],[[12613,12613],`mapped`,[4361]],[[12614,12614],`mapped`,[4362]],[[12615,12615],`mapped`,[4363]],[[12616,12616],`mapped`,[4364]],[[12617,12617],`mapped`,[4365]],[[12618,12618],`mapped`,[4366]],[[12619,12619],`mapped`,[4367]],[[12620,12620],`mapped`,[4368]],[[12621,12621],`mapped`,[4369]],[[12622,12622],`mapped`,[4370]],[[12623,12623],`mapped`,[4449]],[[12624,12624],`mapped`,[4450]],[[12625,12625],`mapped`,[4451]],[[12626,12626],`mapped`,[4452]],[[12627,12627],`mapped`,[4453]],[[12628,12628],`mapped`,[4454]],[[12629,12629],`mapped`,[4455]],[[12630,12630],`mapped`,[4456]],[[12631,12631],`mapped`,[4457]],[[12632,12632],`mapped`,[4458]],[[12633,12633],`mapped`,[4459]],[[12634,12634],`mapped`,[4460]],[[12635,12635],`mapped`,[4461]],[[12636,12636],`mapped`,[4462]],[[12637,12637],`mapped`,[4463]],[[12638,12638],`mapped`,[4464]],[[12639,12639],`mapped`,[4465]],[[12640,12640],`mapped`,[4466]],[[12641,12641],`mapped`,[4467]],[[12642,12642],`mapped`,[4468]],[[12643,12643],`mapped`,[4469]],[[12644,12644],`disallowed`],[[12645,12645],`mapped`,[4372]],[[12646,12646],`mapped`,[4373]],[[12647,12647],`mapped`,[4551]],[[12648,12648],`mapped`,[4552]],[[12649,12649],`mapped`,[4556]],[[12650,12650],`mapped`,[4558]],[[12651,12651],`mapped`,[4563]],[[12652,12652],`mapped`,[4567]],[[12653,12653],`mapped`,[4569]],[[12654,12654],`mapped`,[4380]],[[12655,12655],`mapped`,[4573]],[[12656,12656],`mapped`,[4575]],[[12657,12657],`mapped`,[4381]],[[12658,12658],`mapped`,[4382]],[[12659,12659],`mapped`,[4384]],[[12660,12660],`mapped`,[4386]],[[12661,12661],`mapped`,[4387]],[[12662,12662],`mapped`,[4391]],[[12663,12663],`mapped`,[4393]],[[12664,12664],`mapped`,[4395]],[[12665,12665],`mapped`,[4396]],[[12666,12666],`mapped`,[4397]],[[12667,12667],`mapped`,[4398]],[[12668,12668],`mapped`,[4399]],[[12669,12669],`mapped`,[4402]],[[12670,12670],`mapped`,[4406]],[[12671,12671],`mapped`,[4416]],[[12672,12672],`mapped`,[4423]],[[12673,12673],`mapped`,[4428]],[[12674,12674],`mapped`,[4593]],[[12675,12675],`mapped`,[4594]],[[12676,12676],`mapped`,[4439]],[[12677,12677],`mapped`,[4440]],[[12678,12678],`mapped`,[4441]],[[12679,12679],`mapped`,[4484]],[[12680,12680],`mapped`,[4485]],[[12681,12681],`mapped`,[4488]],[[12682,12682],`mapped`,[4497]],[[12683,12683],`mapped`,[4498]],[[12684,12684],`mapped`,[4500]],[[12685,12685],`mapped`,[4510]],[[12686,12686],`mapped`,[4513]],[[12687,12687],`disallowed`],[[12688,12689],`valid`,[],`NV8`],[[12690,12690],`mapped`,[19968]],[[12691,12691],`mapped`,[20108]],[[12692,12692],`mapped`,[19977]],[[12693,12693],`mapped`,[22235]],[[12694,12694],`mapped`,[19978]],[[12695,12695],`mapped`,[20013]],[[12696,12696],`mapped`,[19979]],[[12697,12697],`mapped`,[30002]],[[12698,12698],`mapped`,[20057]],[[12699,12699],`mapped`,[19993]],[[12700,12700],`mapped`,[19969]],[[12701,12701],`mapped`,[22825]],[[12702,12702],`mapped`,[22320]],[[12703,12703],`mapped`,[20154]],[[12704,12727],`valid`],[[12728,12730],`valid`],[[12731,12735],`disallowed`],[[12736,12751],`valid`,[],`NV8`],[[12752,12771],`valid`,[],`NV8`],[[12772,12783],`disallowed`],[[12784,12799],`valid`],[[12800,12800],`disallowed_STD3_mapped`,[40,4352,41]],[[12801,12801],`disallowed_STD3_mapped`,[40,4354,41]],[[12802,12802],`disallowed_STD3_mapped`,[40,4355,41]],[[12803,12803],`disallowed_STD3_mapped`,[40,4357,41]],[[12804,12804],`disallowed_STD3_mapped`,[40,4358,41]],[[12805,12805],`disallowed_STD3_mapped`,[40,4359,41]],[[12806,12806],`disallowed_STD3_mapped`,[40,4361,41]],[[12807,12807],`disallowed_STD3_mapped`,[40,4363,41]],[[12808,12808],`disallowed_STD3_mapped`,[40,4364,41]],[[12809,12809],`disallowed_STD3_mapped`,[40,4366,41]],[[12810,12810],`disallowed_STD3_mapped`,[40,4367,41]],[[12811,12811],`disallowed_STD3_mapped`,[40,4368,41]],[[12812,12812],`disallowed_STD3_mapped`,[40,4369,41]],[[12813,12813],`disallowed_STD3_mapped`,[40,4370,41]],[[12814,12814],`disallowed_STD3_mapped`,[40,44032,41]],[[12815,12815],`disallowed_STD3_mapped`,[40,45208,41]],[[12816,12816],`disallowed_STD3_mapped`,[40,45796,41]],[[12817,12817],`disallowed_STD3_mapped`,[40,46972,41]],[[12818,12818],`disallowed_STD3_mapped`,[40,47560,41]],[[12819,12819],`disallowed_STD3_mapped`,[40,48148,41]],[[12820,12820],`disallowed_STD3_mapped`,[40,49324,41]],[[12821,12821],`disallowed_STD3_mapped`,[40,50500,41]],[[12822,12822],`disallowed_STD3_mapped`,[40,51088,41]],[[12823,12823],`disallowed_STD3_mapped`,[40,52264,41]],[[12824,12824],`disallowed_STD3_mapped`,[40,52852,41]],[[12825,12825],`disallowed_STD3_mapped`,[40,53440,41]],[[12826,12826],`disallowed_STD3_mapped`,[40,54028,41]],[[12827,12827],`disallowed_STD3_mapped`,[40,54616,41]],[[12828,12828],`disallowed_STD3_mapped`,[40,51452,41]],[[12829,12829],`disallowed_STD3_mapped`,[40,50724,51204,41]],[[12830,12830],`disallowed_STD3_mapped`,[40,50724,54980,41]],[[12831,12831],`disallowed`],[[12832,12832],`disallowed_STD3_mapped`,[40,19968,41]],[[12833,12833],`disallowed_STD3_mapped`,[40,20108,41]],[[12834,12834],`disallowed_STD3_mapped`,[40,19977,41]],[[12835,12835],`disallowed_STD3_mapped`,[40,22235,41]],[[12836,12836],`disallowed_STD3_mapped`,[40,20116,41]],[[12837,12837],`disallowed_STD3_mapped`,[40,20845,41]],[[12838,12838],`disallowed_STD3_mapped`,[40,19971,41]],[[12839,12839],`disallowed_STD3_mapped`,[40,20843,41]],[[12840,12840],`disallowed_STD3_mapped`,[40,20061,41]],[[12841,12841],`disallowed_STD3_mapped`,[40,21313,41]],[[12842,12842],`disallowed_STD3_mapped`,[40,26376,41]],[[12843,12843],`disallowed_STD3_mapped`,[40,28779,41]],[[12844,12844],`disallowed_STD3_mapped`,[40,27700,41]],[[12845,12845],`disallowed_STD3_mapped`,[40,26408,41]],[[12846,12846],`disallowed_STD3_mapped`,[40,37329,41]],[[12847,12847],`disallowed_STD3_mapped`,[40,22303,41]],[[12848,12848],`disallowed_STD3_mapped`,[40,26085,41]],[[12849,12849],`disallowed_STD3_mapped`,[40,26666,41]],[[12850,12850],`disallowed_STD3_mapped`,[40,26377,41]],[[12851,12851],`disallowed_STD3_mapped`,[40,31038,41]],[[12852,12852],`disallowed_STD3_mapped`,[40,21517,41]],[[12853,12853],`disallowed_STD3_mapped`,[40,29305,41]],[[12854,12854],`disallowed_STD3_mapped`,[40,36001,41]],[[12855,12855],`disallowed_STD3_mapped`,[40,31069,41]],[[12856,12856],`disallowed_STD3_mapped`,[40,21172,41]],[[12857,12857],`disallowed_STD3_mapped`,[40,20195,41]],[[12858,12858],`disallowed_STD3_mapped`,[40,21628,41]],[[12859,12859],`disallowed_STD3_mapped`,[40,23398,41]],[[12860,12860],`disallowed_STD3_mapped`,[40,30435,41]],[[12861,12861],`disallowed_STD3_mapped`,[40,20225,41]],[[12862,12862],`disallowed_STD3_mapped`,[40,36039,41]],[[12863,12863],`disallowed_STD3_mapped`,[40,21332,41]],[[12864,12864],`disallowed_STD3_mapped`,[40,31085,41]],[[12865,12865],`disallowed_STD3_mapped`,[40,20241,41]],[[12866,12866],`disallowed_STD3_mapped`,[40,33258,41]],[[12867,12867],`disallowed_STD3_mapped`,[40,33267,41]],[[12868,12868],`mapped`,[21839]],[[12869,12869],`mapped`,[24188]],[[12870,12870],`mapped`,[25991]],[[12871,12871],`mapped`,[31631]],[[12872,12879],`valid`,[],`NV8`],[[12880,12880],`mapped`,[112,116,101]],[[12881,12881],`mapped`,[50,49]],[[12882,12882],`mapped`,[50,50]],[[12883,12883],`mapped`,[50,51]],[[12884,12884],`mapped`,[50,52]],[[12885,12885],`mapped`,[50,53]],[[12886,12886],`mapped`,[50,54]],[[12887,12887],`mapped`,[50,55]],[[12888,12888],`mapped`,[50,56]],[[12889,12889],`mapped`,[50,57]],[[12890,12890],`mapped`,[51,48]],[[12891,12891],`mapped`,[51,49]],[[12892,12892],`mapped`,[51,50]],[[12893,12893],`mapped`,[51,51]],[[12894,12894],`mapped`,[51,52]],[[12895,12895],`mapped`,[51,53]],[[12896,12896],`mapped`,[4352]],[[12897,12897],`mapped`,[4354]],[[12898,12898],`mapped`,[4355]],[[12899,12899],`mapped`,[4357]],[[12900,12900],`mapped`,[4358]],[[12901,12901],`mapped`,[4359]],[[12902,12902],`mapped`,[4361]],[[12903,12903],`mapped`,[4363]],[[12904,12904],`mapped`,[4364]],[[12905,12905],`mapped`,[4366]],[[12906,12906],`mapped`,[4367]],[[12907,12907],`mapped`,[4368]],[[12908,12908],`mapped`,[4369]],[[12909,12909],`mapped`,[4370]],[[12910,12910],`mapped`,[44032]],[[12911,12911],`mapped`,[45208]],[[12912,12912],`mapped`,[45796]],[[12913,12913],`mapped`,[46972]],[[12914,12914],`mapped`,[47560]],[[12915,12915],`mapped`,[48148]],[[12916,12916],`mapped`,[49324]],[[12917,12917],`mapped`,[50500]],[[12918,12918],`mapped`,[51088]],[[12919,12919],`mapped`,[52264]],[[12920,12920],`mapped`,[52852]],[[12921,12921],`mapped`,[53440]],[[12922,12922],`mapped`,[54028]],[[12923,12923],`mapped`,[54616]],[[12924,12924],`mapped`,[52280,44256]],[[12925,12925],`mapped`,[51452,51032]],[[12926,12926],`mapped`,[50864]],[[12927,12927],`valid`,[],`NV8`],[[12928,12928],`mapped`,[19968]],[[12929,12929],`mapped`,[20108]],[[12930,12930],`mapped`,[19977]],[[12931,12931],`mapped`,[22235]],[[12932,12932],`mapped`,[20116]],[[12933,12933],`mapped`,[20845]],[[12934,12934],`mapped`,[19971]],[[12935,12935],`mapped`,[20843]],[[12936,12936],`mapped`,[20061]],[[12937,12937],`mapped`,[21313]],[[12938,12938],`mapped`,[26376]],[[12939,12939],`mapped`,[28779]],[[12940,12940],`mapped`,[27700]],[[12941,12941],`mapped`,[26408]],[[12942,12942],`mapped`,[37329]],[[12943,12943],`mapped`,[22303]],[[12944,12944],`mapped`,[26085]],[[12945,12945],`mapped`,[26666]],[[12946,12946],`mapped`,[26377]],[[12947,12947],`mapped`,[31038]],[[12948,12948],`mapped`,[21517]],[[12949,12949],`mapped`,[29305]],[[12950,12950],`mapped`,[36001]],[[12951,12951],`mapped`,[31069]],[[12952,12952],`mapped`,[21172]],[[12953,12953],`mapped`,[31192]],[[12954,12954],`mapped`,[30007]],[[12955,12955],`mapped`,[22899]],[[12956,12956],`mapped`,[36969]],[[12957,12957],`mapped`,[20778]],[[12958,12958],`mapped`,[21360]],[[12959,12959],`mapped`,[27880]],[[12960,12960],`mapped`,[38917]],[[12961,12961],`mapped`,[20241]],[[12962,12962],`mapped`,[20889]],[[12963,12963],`mapped`,[27491]],[[12964,12964],`mapped`,[19978]],[[12965,12965],`mapped`,[20013]],[[12966,12966],`mapped`,[19979]],[[12967,12967],`mapped`,[24038]],[[12968,12968],`mapped`,[21491]],[[12969,12969],`mapped`,[21307]],[[12970,12970],`mapped`,[23447]],[[12971,12971],`mapped`,[23398]],[[12972,12972],`mapped`,[30435]],[[12973,12973],`mapped`,[20225]],[[12974,12974],`mapped`,[36039]],[[12975,12975],`mapped`,[21332]],[[12976,12976],`mapped`,[22812]],[[12977,12977],`mapped`,[51,54]],[[12978,12978],`mapped`,[51,55]],[[12979,12979],`mapped`,[51,56]],[[12980,12980],`mapped`,[51,57]],[[12981,12981],`mapped`,[52,48]],[[12982,12982],`mapped`,[52,49]],[[12983,12983],`mapped`,[52,50]],[[12984,12984],`mapped`,[52,51]],[[12985,12985],`mapped`,[52,52]],[[12986,12986],`mapped`,[52,53]],[[12987,12987],`mapped`,[52,54]],[[12988,12988],`mapped`,[52,55]],[[12989,12989],`mapped`,[52,56]],[[12990,12990],`mapped`,[52,57]],[[12991,12991],`mapped`,[53,48]],[[12992,12992],`mapped`,[49,26376]],[[12993,12993],`mapped`,[50,26376]],[[12994,12994],`mapped`,[51,26376]],[[12995,12995],`mapped`,[52,26376]],[[12996,12996],`mapped`,[53,26376]],[[12997,12997],`mapped`,[54,26376]],[[12998,12998],`mapped`,[55,26376]],[[12999,12999],`mapped`,[56,26376]],[[13e3,13e3],`mapped`,[57,26376]],[[13001,13001],`mapped`,[49,48,26376]],[[13002,13002],`mapped`,[49,49,26376]],[[13003,13003],`mapped`,[49,50,26376]],[[13004,13004],`mapped`,[104,103]],[[13005,13005],`mapped`,[101,114,103]],[[13006,13006],`mapped`,[101,118]],[[13007,13007],`mapped`,[108,116,100]],[[13008,13008],`mapped`,[12450]],[[13009,13009],`mapped`,[12452]],[[13010,13010],`mapped`,[12454]],[[13011,13011],`mapped`,[12456]],[[13012,13012],`mapped`,[12458]],[[13013,13013],`mapped`,[12459]],[[13014,13014],`mapped`,[12461]],[[13015,13015],`mapped`,[12463]],[[13016,13016],`mapped`,[12465]],[[13017,13017],`mapped`,[12467]],[[13018,13018],`mapped`,[12469]],[[13019,13019],`mapped`,[12471]],[[13020,13020],`mapped`,[12473]],[[13021,13021],`mapped`,[12475]],[[13022,13022],`mapped`,[12477]],[[13023,13023],`mapped`,[12479]],[[13024,13024],`mapped`,[12481]],[[13025,13025],`mapped`,[12484]],[[13026,13026],`mapped`,[12486]],[[13027,13027],`mapped`,[12488]],[[13028,13028],`mapped`,[12490]],[[13029,13029],`mapped`,[12491]],[[13030,13030],`mapped`,[12492]],[[13031,13031],`mapped`,[12493]],[[13032,13032],`mapped`,[12494]],[[13033,13033],`mapped`,[12495]],[[13034,13034],`mapped`,[12498]],[[13035,13035],`mapped`,[12501]],[[13036,13036],`mapped`,[12504]],[[13037,13037],`mapped`,[12507]],[[13038,13038],`mapped`,[12510]],[[13039,13039],`mapped`,[12511]],[[13040,13040],`mapped`,[12512]],[[13041,13041],`mapped`,[12513]],[[13042,13042],`mapped`,[12514]],[[13043,13043],`mapped`,[12516]],[[13044,13044],`mapped`,[12518]],[[13045,13045],`mapped`,[12520]],[[13046,13046],`mapped`,[12521]],[[13047,13047],`mapped`,[12522]],[[13048,13048],`mapped`,[12523]],[[13049,13049],`mapped`,[12524]],[[13050,13050],`mapped`,[12525]],[[13051,13051],`mapped`,[12527]],[[13052,13052],`mapped`,[12528]],[[13053,13053],`mapped`,[12529]],[[13054,13054],`mapped`,[12530]],[[13055,13055],`disallowed`],[[13056,13056],`mapped`,[12450,12497,12540,12488]],[[13057,13057],`mapped`,[12450,12523,12501,12449]],[[13058,13058],`mapped`,[12450,12531,12506,12450]],[[13059,13059],`mapped`,[12450,12540,12523]],[[13060,13060],`mapped`,[12452,12491,12531,12464]],[[13061,13061],`mapped`,[12452,12531,12481]],[[13062,13062],`mapped`,[12454,12457,12531]],[[13063,13063],`mapped`,[12456,12473,12463,12540,12489]],[[13064,13064],`mapped`,[12456,12540,12459,12540]],[[13065,13065],`mapped`,[12458,12531,12473]],[[13066,13066],`mapped`,[12458,12540,12512]],[[13067,13067],`mapped`,[12459,12452,12522]],[[13068,13068],`mapped`,[12459,12521,12483,12488]],[[13069,13069],`mapped`,[12459,12525,12522,12540]],[[13070,13070],`mapped`,[12460,12525,12531]],[[13071,13071],`mapped`,[12460,12531,12510]],[[13072,13072],`mapped`,[12462,12460]],[[13073,13073],`mapped`,[12462,12491,12540]],[[13074,13074],`mapped`,[12461,12517,12522,12540]],[[13075,13075],`mapped`,[12462,12523,12480,12540]],[[13076,13076],`mapped`,[12461,12525]],[[13077,13077],`mapped`,[12461,12525,12464,12521,12512]],[[13078,13078],`mapped`,[12461,12525,12513,12540,12488,12523]],[[13079,13079],`mapped`,[12461,12525,12527,12483,12488]],[[13080,13080],`mapped`,[12464,12521,12512]],[[13081,13081],`mapped`,[12464,12521,12512,12488,12531]],[[13082,13082],`mapped`,[12463,12523,12476,12452,12525]],[[13083,13083],`mapped`,[12463,12525,12540,12493]],[[13084,13084],`mapped`,[12465,12540,12473]],[[13085,13085],`mapped`,[12467,12523,12490]],[[13086,13086],`mapped`,[12467,12540,12509]],[[13087,13087],`mapped`,[12469,12452,12463,12523]],[[13088,13088],`mapped`,[12469,12531,12481,12540,12512]],[[13089,13089],`mapped`,[12471,12522,12531,12464]],[[13090,13090],`mapped`,[12475,12531,12481]],[[13091,13091],`mapped`,[12475,12531,12488]],[[13092,13092],`mapped`,[12480,12540,12473]],[[13093,13093],`mapped`,[12487,12471]],[[13094,13094],`mapped`,[12489,12523]],[[13095,13095],`mapped`,[12488,12531]],[[13096,13096],`mapped`,[12490,12494]],[[13097,13097],`mapped`,[12494,12483,12488]],[[13098,13098],`mapped`,[12495,12452,12484]],[[13099,13099],`mapped`,[12497,12540,12475,12531,12488]],[[13100,13100],`mapped`,[12497,12540,12484]],[[13101,13101],`mapped`,[12496,12540,12524,12523]],[[13102,13102],`mapped`,[12500,12450,12473,12488,12523]],[[13103,13103],`mapped`,[12500,12463,12523]],[[13104,13104],`mapped`,[12500,12467]],[[13105,13105],`mapped`,[12499,12523]],[[13106,13106],`mapped`,[12501,12449,12521,12483,12489]],[[13107,13107],`mapped`,[12501,12451,12540,12488]],[[13108,13108],`mapped`,[12502,12483,12471,12455,12523]],[[13109,13109],`mapped`,[12501,12521,12531]],[[13110,13110],`mapped`,[12504,12463,12479,12540,12523]],[[13111,13111],`mapped`,[12506,12477]],[[13112,13112],`mapped`,[12506,12491,12498]],[[13113,13113],`mapped`,[12504,12523,12484]],[[13114,13114],`mapped`,[12506,12531,12473]],[[13115,13115],`mapped`,[12506,12540,12472]],[[13116,13116],`mapped`,[12505,12540,12479]],[[13117,13117],`mapped`,[12509,12452,12531,12488]],[[13118,13118],`mapped`,[12508,12523,12488]],[[13119,13119],`mapped`,[12507,12531]],[[13120,13120],`mapped`,[12509,12531,12489]],[[13121,13121],`mapped`,[12507,12540,12523]],[[13122,13122],`mapped`,[12507,12540,12531]],[[13123,13123],`mapped`,[12510,12452,12463,12525]],[[13124,13124],`mapped`,[12510,12452,12523]],[[13125,13125],`mapped`,[12510,12483,12495]],[[13126,13126],`mapped`,[12510,12523,12463]],[[13127,13127],`mapped`,[12510,12531,12471,12519,12531]],[[13128,13128],`mapped`,[12511,12463,12525,12531]],[[13129,13129],`mapped`,[12511,12522]],[[13130,13130],`mapped`,[12511,12522,12496,12540,12523]],[[13131,13131],`mapped`,[12513,12460]],[[13132,13132],`mapped`,[12513,12460,12488,12531]],[[13133,13133],`mapped`,[12513,12540,12488,12523]],[[13134,13134],`mapped`,[12516,12540,12489]],[[13135,13135],`mapped`,[12516,12540,12523]],[[13136,13136],`mapped`,[12518,12450,12531]],[[13137,13137],`mapped`,[12522,12483,12488,12523]],[[13138,13138],`mapped`,[12522,12521]],[[13139,13139],`mapped`,[12523,12500,12540]],[[13140,13140],`mapped`,[12523,12540,12502,12523]],[[13141,13141],`mapped`,[12524,12512]],[[13142,13142],`mapped`,[12524,12531,12488,12466,12531]],[[13143,13143],`mapped`,[12527,12483,12488]],[[13144,13144],`mapped`,[48,28857]],[[13145,13145],`mapped`,[49,28857]],[[13146,13146],`mapped`,[50,28857]],[[13147,13147],`mapped`,[51,28857]],[[13148,13148],`mapped`,[52,28857]],[[13149,13149],`mapped`,[53,28857]],[[13150,13150],`mapped`,[54,28857]],[[13151,13151],`mapped`,[55,28857]],[[13152,13152],`mapped`,[56,28857]],[[13153,13153],`mapped`,[57,28857]],[[13154,13154],`mapped`,[49,48,28857]],[[13155,13155],`mapped`,[49,49,28857]],[[13156,13156],`mapped`,[49,50,28857]],[[13157,13157],`mapped`,[49,51,28857]],[[13158,13158],`mapped`,[49,52,28857]],[[13159,13159],`mapped`,[49,53,28857]],[[13160,13160],`mapped`,[49,54,28857]],[[13161,13161],`mapped`,[49,55,28857]],[[13162,13162],`mapped`,[49,56,28857]],[[13163,13163],`mapped`,[49,57,28857]],[[13164,13164],`mapped`,[50,48,28857]],[[13165,13165],`mapped`,[50,49,28857]],[[13166,13166],`mapped`,[50,50,28857]],[[13167,13167],`mapped`,[50,51,28857]],[[13168,13168],`mapped`,[50,52,28857]],[[13169,13169],`mapped`,[104,112,97]],[[13170,13170],`mapped`,[100,97]],[[13171,13171],`mapped`,[97,117]],[[13172,13172],`mapped`,[98,97,114]],[[13173,13173],`mapped`,[111,118]],[[13174,13174],`mapped`,[112,99]],[[13175,13175],`mapped`,[100,109]],[[13176,13176],`mapped`,[100,109,50]],[[13177,13177],`mapped`,[100,109,51]],[[13178,13178],`mapped`,[105,117]],[[13179,13179],`mapped`,[24179,25104]],[[13180,13180],`mapped`,[26157,21644]],[[13181,13181],`mapped`,[22823,27491]],[[13182,13182],`mapped`,[26126,27835]],[[13183,13183],`mapped`,[26666,24335,20250,31038]],[[13184,13184],`mapped`,[112,97]],[[13185,13185],`mapped`,[110,97]],[[13186,13186],`mapped`,[956,97]],[[13187,13187],`mapped`,[109,97]],[[13188,13188],`mapped`,[107,97]],[[13189,13189],`mapped`,[107,98]],[[13190,13190],`mapped`,[109,98]],[[13191,13191],`mapped`,[103,98]],[[13192,13192],`mapped`,[99,97,108]],[[13193,13193],`mapped`,[107,99,97,108]],[[13194,13194],`mapped`,[112,102]],[[13195,13195],`mapped`,[110,102]],[[13196,13196],`mapped`,[956,102]],[[13197,13197],`mapped`,[956,103]],[[13198,13198],`mapped`,[109,103]],[[13199,13199],`mapped`,[107,103]],[[13200,13200],`mapped`,[104,122]],[[13201,13201],`mapped`,[107,104,122]],[[13202,13202],`mapped`,[109,104,122]],[[13203,13203],`mapped`,[103,104,122]],[[13204,13204],`mapped`,[116,104,122]],[[13205,13205],`mapped`,[956,108]],[[13206,13206],`mapped`,[109,108]],[[13207,13207],`mapped`,[100,108]],[[13208,13208],`mapped`,[107,108]],[[13209,13209],`mapped`,[102,109]],[[13210,13210],`mapped`,[110,109]],[[13211,13211],`mapped`,[956,109]],[[13212,13212],`mapped`,[109,109]],[[13213,13213],`mapped`,[99,109]],[[13214,13214],`mapped`,[107,109]],[[13215,13215],`mapped`,[109,109,50]],[[13216,13216],`mapped`,[99,109,50]],[[13217,13217],`mapped`,[109,50]],[[13218,13218],`mapped`,[107,109,50]],[[13219,13219],`mapped`,[109,109,51]],[[13220,13220],`mapped`,[99,109,51]],[[13221,13221],`mapped`,[109,51]],[[13222,13222],`mapped`,[107,109,51]],[[13223,13223],`mapped`,[109,8725,115]],[[13224,13224],`mapped`,[109,8725,115,50]],[[13225,13225],`mapped`,[112,97]],[[13226,13226],`mapped`,[107,112,97]],[[13227,13227],`mapped`,[109,112,97]],[[13228,13228],`mapped`,[103,112,97]],[[13229,13229],`mapped`,[114,97,100]],[[13230,13230],`mapped`,[114,97,100,8725,115]],[[13231,13231],`mapped`,[114,97,100,8725,115,50]],[[13232,13232],`mapped`,[112,115]],[[13233,13233],`mapped`,[110,115]],[[13234,13234],`mapped`,[956,115]],[[13235,13235],`mapped`,[109,115]],[[13236,13236],`mapped`,[112,118]],[[13237,13237],`mapped`,[110,118]],[[13238,13238],`mapped`,[956,118]],[[13239,13239],`mapped`,[109,118]],[[13240,13240],`mapped`,[107,118]],[[13241,13241],`mapped`,[109,118]],[[13242,13242],`mapped`,[112,119]],[[13243,13243],`mapped`,[110,119]],[[13244,13244],`mapped`,[956,119]],[[13245,13245],`mapped`,[109,119]],[[13246,13246],`mapped`,[107,119]],[[13247,13247],`mapped`,[109,119]],[[13248,13248],`mapped`,[107,969]],[[13249,13249],`mapped`,[109,969]],[[13250,13250],`disallowed`],[[13251,13251],`mapped`,[98,113]],[[13252,13252],`mapped`,[99,99]],[[13253,13253],`mapped`,[99,100]],[[13254,13254],`mapped`,[99,8725,107,103]],[[13255,13255],`disallowed`],[[13256,13256],`mapped`,[100,98]],[[13257,13257],`mapped`,[103,121]],[[13258,13258],`mapped`,[104,97]],[[13259,13259],`mapped`,[104,112]],[[13260,13260],`mapped`,[105,110]],[[13261,13261],`mapped`,[107,107]],[[13262,13262],`mapped`,[107,109]],[[13263,13263],`mapped`,[107,116]],[[13264,13264],`mapped`,[108,109]],[[13265,13265],`mapped`,[108,110]],[[13266,13266],`mapped`,[108,111,103]],[[13267,13267],`mapped`,[108,120]],[[13268,13268],`mapped`,[109,98]],[[13269,13269],`mapped`,[109,105,108]],[[13270,13270],`mapped`,[109,111,108]],[[13271,13271],`mapped`,[112,104]],[[13272,13272],`disallowed`],[[13273,13273],`mapped`,[112,112,109]],[[13274,13274],`mapped`,[112,114]],[[13275,13275],`mapped`,[115,114]],[[13276,13276],`mapped`,[115,118]],[[13277,13277],`mapped`,[119,98]],[[13278,13278],`mapped`,[118,8725,109]],[[13279,13279],`mapped`,[97,8725,109]],[[13280,13280],`mapped`,[49,26085]],[[13281,13281],`mapped`,[50,26085]],[[13282,13282],`mapped`,[51,26085]],[[13283,13283],`mapped`,[52,26085]],[[13284,13284],`mapped`,[53,26085]],[[13285,13285],`mapped`,[54,26085]],[[13286,13286],`mapped`,[55,26085]],[[13287,13287],`mapped`,[56,26085]],[[13288,13288],`mapped`,[57,26085]],[[13289,13289],`mapped`,[49,48,26085]],[[13290,13290],`mapped`,[49,49,26085]],[[13291,13291],`mapped`,[49,50,26085]],[[13292,13292],`mapped`,[49,51,26085]],[[13293,13293],`mapped`,[49,52,26085]],[[13294,13294],`mapped`,[49,53,26085]],[[13295,13295],`mapped`,[49,54,26085]],[[13296,13296],`mapped`,[49,55,26085]],[[13297,13297],`mapped`,[49,56,26085]],[[13298,13298],`mapped`,[49,57,26085]],[[13299,13299],`mapped`,[50,48,26085]],[[13300,13300],`mapped`,[50,49,26085]],[[13301,13301],`mapped`,[50,50,26085]],[[13302,13302],`mapped`,[50,51,26085]],[[13303,13303],`mapped`,[50,52,26085]],[[13304,13304],`mapped`,[50,53,26085]],[[13305,13305],`mapped`,[50,54,26085]],[[13306,13306],`mapped`,[50,55,26085]],[[13307,13307],`mapped`,[50,56,26085]],[[13308,13308],`mapped`,[50,57,26085]],[[13309,13309],`mapped`,[51,48,26085]],[[13310,13310],`mapped`,[51,49,26085]],[[13311,13311],`mapped`,[103,97,108]],[[13312,19893],`valid`],[[19894,19903],`disallowed`],[[19904,19967],`valid`,[],`NV8`],[[19968,40869],`valid`],[[40870,40891],`valid`],[[40892,40899],`valid`],[[40900,40907],`valid`],[[40908,40908],`valid`],[[40909,40917],`valid`],[[40918,40959],`disallowed`],[[40960,42124],`valid`],[[42125,42127],`disallowed`],[[42128,42145],`valid`,[],`NV8`],[[42146,42147],`valid`,[],`NV8`],[[42148,42163],`valid`,[],`NV8`],[[42164,42164],`valid`,[],`NV8`],[[42165,42176],`valid`,[],`NV8`],[[42177,42177],`valid`,[],`NV8`],[[42178,42180],`valid`,[],`NV8`],[[42181,42181],`valid`,[],`NV8`],[[42182,42182],`valid`,[],`NV8`],[[42183,42191],`disallowed`],[[42192,42237],`valid`],[[42238,42239],`valid`,[],`NV8`],[[42240,42508],`valid`],[[42509,42511],`valid`,[],`NV8`],[[42512,42539],`valid`],[[42540,42559],`disallowed`],[[42560,42560],`mapped`,[42561]],[[42561,42561],`valid`],[[42562,42562],`mapped`,[42563]],[[42563,42563],`valid`],[[42564,42564],`mapped`,[42565]],[[42565,42565],`valid`],[[42566,42566],`mapped`,[42567]],[[42567,42567],`valid`],[[42568,42568],`mapped`,[42569]],[[42569,42569],`valid`],[[42570,42570],`mapped`,[42571]],[[42571,42571],`valid`],[[42572,42572],`mapped`,[42573]],[[42573,42573],`valid`],[[42574,42574],`mapped`,[42575]],[[42575,42575],`valid`],[[42576,42576],`mapped`,[42577]],[[42577,42577],`valid`],[[42578,42578],`mapped`,[42579]],[[42579,42579],`valid`],[[42580,42580],`mapped`,[42581]],[[42581,42581],`valid`],[[42582,42582],`mapped`,[42583]],[[42583,42583],`valid`],[[42584,42584],`mapped`,[42585]],[[42585,42585],`valid`],[[42586,42586],`mapped`,[42587]],[[42587,42587],`valid`],[[42588,42588],`mapped`,[42589]],[[42589,42589],`valid`],[[42590,42590],`mapped`,[42591]],[[42591,42591],`valid`],[[42592,42592],`mapped`,[42593]],[[42593,42593],`valid`],[[42594,42594],`mapped`,[42595]],[[42595,42595],`valid`],[[42596,42596],`mapped`,[42597]],[[42597,42597],`valid`],[[42598,42598],`mapped`,[42599]],[[42599,42599],`valid`],[[42600,42600],`mapped`,[42601]],[[42601,42601],`valid`],[[42602,42602],`mapped`,[42603]],[[42603,42603],`valid`],[[42604,42604],`mapped`,[42605]],[[42605,42607],`valid`],[[42608,42611],`valid`,[],`NV8`],[[42612,42619],`valid`],[[42620,42621],`valid`],[[42622,42622],`valid`,[],`NV8`],[[42623,42623],`valid`],[[42624,42624],`mapped`,[42625]],[[42625,42625],`valid`],[[42626,42626],`mapped`,[42627]],[[42627,42627],`valid`],[[42628,42628],`mapped`,[42629]],[[42629,42629],`valid`],[[42630,42630],`mapped`,[42631]],[[42631,42631],`valid`],[[42632,42632],`mapped`,[42633]],[[42633,42633],`valid`],[[42634,42634],`mapped`,[42635]],[[42635,42635],`valid`],[[42636,42636],`mapped`,[42637]],[[42637,42637],`valid`],[[42638,42638],`mapped`,[42639]],[[42639,42639],`valid`],[[42640,42640],`mapped`,[42641]],[[42641,42641],`valid`],[[42642,42642],`mapped`,[42643]],[[42643,42643],`valid`],[[42644,42644],`mapped`,[42645]],[[42645,42645],`valid`],[[42646,42646],`mapped`,[42647]],[[42647,42647],`valid`],[[42648,42648],`mapped`,[42649]],[[42649,42649],`valid`],[[42650,42650],`mapped`,[42651]],[[42651,42651],`valid`],[[42652,42652],`mapped`,[1098]],[[42653,42653],`mapped`,[1100]],[[42654,42654],`valid`],[[42655,42655],`valid`],[[42656,42725],`valid`],[[42726,42735],`valid`,[],`NV8`],[[42736,42737],`valid`],[[42738,42743],`valid`,[],`NV8`],[[42744,42751],`disallowed`],[[42752,42774],`valid`,[],`NV8`],[[42775,42778],`valid`],[[42779,42783],`valid`],[[42784,42785],`valid`,[],`NV8`],[[42786,42786],`mapped`,[42787]],[[42787,42787],`valid`],[[42788,42788],`mapped`,[42789]],[[42789,42789],`valid`],[[42790,42790],`mapped`,[42791]],[[42791,42791],`valid`],[[42792,42792],`mapped`,[42793]],[[42793,42793],`valid`],[[42794,42794],`mapped`,[42795]],[[42795,42795],`valid`],[[42796,42796],`mapped`,[42797]],[[42797,42797],`valid`],[[42798,42798],`mapped`,[42799]],[[42799,42801],`valid`],[[42802,42802],`mapped`,[42803]],[[42803,42803],`valid`],[[42804,42804],`mapped`,[42805]],[[42805,42805],`valid`],[[42806,42806],`mapped`,[42807]],[[42807,42807],`valid`],[[42808,42808],`mapped`,[42809]],[[42809,42809],`valid`],[[42810,42810],`mapped`,[42811]],[[42811,42811],`valid`],[[42812,42812],`mapped`,[42813]],[[42813,42813],`valid`],[[42814,42814],`mapped`,[42815]],[[42815,42815],`valid`],[[42816,42816],`mapped`,[42817]],[[42817,42817],`valid`],[[42818,42818],`mapped`,[42819]],[[42819,42819],`valid`],[[42820,42820],`mapped`,[42821]],[[42821,42821],`valid`],[[42822,42822],`mapped`,[42823]],[[42823,42823],`valid`],[[42824,42824],`mapped`,[42825]],[[42825,42825],`valid`],[[42826,42826],`mapped`,[42827]],[[42827,42827],`valid`],[[42828,42828],`mapped`,[42829]],[[42829,42829],`valid`],[[42830,42830],`mapped`,[42831]],[[42831,42831],`valid`],[[42832,42832],`mapped`,[42833]],[[42833,42833],`valid`],[[42834,42834],`mapped`,[42835]],[[42835,42835],`valid`],[[42836,42836],`mapped`,[42837]],[[42837,42837],`valid`],[[42838,42838],`mapped`,[42839]],[[42839,42839],`valid`],[[42840,42840],`mapped`,[42841]],[[42841,42841],`valid`],[[42842,42842],`mapped`,[42843]],[[42843,42843],`valid`],[[42844,42844],`mapped`,[42845]],[[42845,42845],`valid`],[[42846,42846],`mapped`,[42847]],[[42847,42847],`valid`],[[42848,42848],`mapped`,[42849]],[[42849,42849],`valid`],[[42850,42850],`mapped`,[42851]],[[42851,42851],`valid`],[[42852,42852],`mapped`,[42853]],[[42853,42853],`valid`],[[42854,42854],`mapped`,[42855]],[[42855,42855],`valid`],[[42856,42856],`mapped`,[42857]],[[42857,42857],`valid`],[[42858,42858],`mapped`,[42859]],[[42859,42859],`valid`],[[42860,42860],`mapped`,[42861]],[[42861,42861],`valid`],[[42862,42862],`mapped`,[42863]],[[42863,42863],`valid`],[[42864,42864],`mapped`,[42863]],[[42865,42872],`valid`],[[42873,42873],`mapped`,[42874]],[[42874,42874],`valid`],[[42875,42875],`mapped`,[42876]],[[42876,42876],`valid`],[[42877,42877],`mapped`,[7545]],[[42878,42878],`mapped`,[42879]],[[42879,42879],`valid`],[[42880,42880],`mapped`,[42881]],[[42881,42881],`valid`],[[42882,42882],`mapped`,[42883]],[[42883,42883],`valid`],[[42884,42884],`mapped`,[42885]],[[42885,42885],`valid`],[[42886,42886],`mapped`,[42887]],[[42887,42888],`valid`],[[42889,42890],`valid`,[],`NV8`],[[42891,42891],`mapped`,[42892]],[[42892,42892],`valid`],[[42893,42893],`mapped`,[613]],[[42894,42894],`valid`],[[42895,42895],`valid`],[[42896,42896],`mapped`,[42897]],[[42897,42897],`valid`],[[42898,42898],`mapped`,[42899]],[[42899,42899],`valid`],[[42900,42901],`valid`],[[42902,42902],`mapped`,[42903]],[[42903,42903],`valid`],[[42904,42904],`mapped`,[42905]],[[42905,42905],`valid`],[[42906,42906],`mapped`,[42907]],[[42907,42907],`valid`],[[42908,42908],`mapped`,[42909]],[[42909,42909],`valid`],[[42910,42910],`mapped`,[42911]],[[42911,42911],`valid`],[[42912,42912],`mapped`,[42913]],[[42913,42913],`valid`],[[42914,42914],`mapped`,[42915]],[[42915,42915],`valid`],[[42916,42916],`mapped`,[42917]],[[42917,42917],`valid`],[[42918,42918],`mapped`,[42919]],[[42919,42919],`valid`],[[42920,42920],`mapped`,[42921]],[[42921,42921],`valid`],[[42922,42922],`mapped`,[614]],[[42923,42923],`mapped`,[604]],[[42924,42924],`mapped`,[609]],[[42925,42925],`mapped`,[620]],[[42926,42927],`disallowed`],[[42928,42928],`mapped`,[670]],[[42929,42929],`mapped`,[647]],[[42930,42930],`mapped`,[669]],[[42931,42931],`mapped`,[43859]],[[42932,42932],`mapped`,[42933]],[[42933,42933],`valid`],[[42934,42934],`mapped`,[42935]],[[42935,42935],`valid`],[[42936,42998],`disallowed`],[[42999,42999],`valid`],[[43e3,43e3],`mapped`,[295]],[[43001,43001],`mapped`,[339]],[[43002,43002],`valid`],[[43003,43007],`valid`],[[43008,43047],`valid`],[[43048,43051],`valid`,[],`NV8`],[[43052,43055],`disallowed`],[[43056,43065],`valid`,[],`NV8`],[[43066,43071],`disallowed`],[[43072,43123],`valid`],[[43124,43127],`valid`,[],`NV8`],[[43128,43135],`disallowed`],[[43136,43204],`valid`],[[43205,43213],`disallowed`],[[43214,43215],`valid`,[],`NV8`],[[43216,43225],`valid`],[[43226,43231],`disallowed`],[[43232,43255],`valid`],[[43256,43258],`valid`,[],`NV8`],[[43259,43259],`valid`],[[43260,43260],`valid`,[],`NV8`],[[43261,43261],`valid`],[[43262,43263],`disallowed`],[[43264,43309],`valid`],[[43310,43311],`valid`,[],`NV8`],[[43312,43347],`valid`],[[43348,43358],`disallowed`],[[43359,43359],`valid`,[],`NV8`],[[43360,43388],`valid`,[],`NV8`],[[43389,43391],`disallowed`],[[43392,43456],`valid`],[[43457,43469],`valid`,[],`NV8`],[[43470,43470],`disallowed`],[[43471,43481],`valid`],[[43482,43485],`disallowed`],[[43486,43487],`valid`,[],`NV8`],[[43488,43518],`valid`],[[43519,43519],`disallowed`],[[43520,43574],`valid`],[[43575,43583],`disallowed`],[[43584,43597],`valid`],[[43598,43599],`disallowed`],[[43600,43609],`valid`],[[43610,43611],`disallowed`],[[43612,43615],`valid`,[],`NV8`],[[43616,43638],`valid`],[[43639,43641],`valid`,[],`NV8`],[[43642,43643],`valid`],[[43644,43647],`valid`],[[43648,43714],`valid`],[[43715,43738],`disallowed`],[[43739,43741],`valid`],[[43742,43743],`valid`,[],`NV8`],[[43744,43759],`valid`],[[43760,43761],`valid`,[],`NV8`],[[43762,43766],`valid`],[[43767,43776],`disallowed`],[[43777,43782],`valid`],[[43783,43784],`disallowed`],[[43785,43790],`valid`],[[43791,43792],`disallowed`],[[43793,43798],`valid`],[[43799,43807],`disallowed`],[[43808,43814],`valid`],[[43815,43815],`disallowed`],[[43816,43822],`valid`],[[43823,43823],`disallowed`],[[43824,43866],`valid`],[[43867,43867],`valid`,[],`NV8`],[[43868,43868],`mapped`,[42791]],[[43869,43869],`mapped`,[43831]],[[43870,43870],`mapped`,[619]],[[43871,43871],`mapped`,[43858]],[[43872,43875],`valid`],[[43876,43877],`valid`],[[43878,43887],`disallowed`],[[43888,43888],`mapped`,[5024]],[[43889,43889],`mapped`,[5025]],[[43890,43890],`mapped`,[5026]],[[43891,43891],`mapped`,[5027]],[[43892,43892],`mapped`,[5028]],[[43893,43893],`mapped`,[5029]],[[43894,43894],`mapped`,[5030]],[[43895,43895],`mapped`,[5031]],[[43896,43896],`mapped`,[5032]],[[43897,43897],`mapped`,[5033]],[[43898,43898],`mapped`,[5034]],[[43899,43899],`mapped`,[5035]],[[43900,43900],`mapped`,[5036]],[[43901,43901],`mapped`,[5037]],[[43902,43902],`mapped`,[5038]],[[43903,43903],`mapped`,[5039]],[[43904,43904],`mapped`,[5040]],[[43905,43905],`mapped`,[5041]],[[43906,43906],`mapped`,[5042]],[[43907,43907],`mapped`,[5043]],[[43908,43908],`mapped`,[5044]],[[43909,43909],`mapped`,[5045]],[[43910,43910],`mapped`,[5046]],[[43911,43911],`mapped`,[5047]],[[43912,43912],`mapped`,[5048]],[[43913,43913],`mapped`,[5049]],[[43914,43914],`mapped`,[5050]],[[43915,43915],`mapped`,[5051]],[[43916,43916],`mapped`,[5052]],[[43917,43917],`mapped`,[5053]],[[43918,43918],`mapped`,[5054]],[[43919,43919],`mapped`,[5055]],[[43920,43920],`mapped`,[5056]],[[43921,43921],`mapped`,[5057]],[[43922,43922],`mapped`,[5058]],[[43923,43923],`mapped`,[5059]],[[43924,43924],`mapped`,[5060]],[[43925,43925],`mapped`,[5061]],[[43926,43926],`mapped`,[5062]],[[43927,43927],`mapped`,[5063]],[[43928,43928],`mapped`,[5064]],[[43929,43929],`mapped`,[5065]],[[43930,43930],`mapped`,[5066]],[[43931,43931],`mapped`,[5067]],[[43932,43932],`mapped`,[5068]],[[43933,43933],`mapped`,[5069]],[[43934,43934],`mapped`,[5070]],[[43935,43935],`mapped`,[5071]],[[43936,43936],`mapped`,[5072]],[[43937,43937],`mapped`,[5073]],[[43938,43938],`mapped`,[5074]],[[43939,43939],`mapped`,[5075]],[[43940,43940],`mapped`,[5076]],[[43941,43941],`mapped`,[5077]],[[43942,43942],`mapped`,[5078]],[[43943,43943],`mapped`,[5079]],[[43944,43944],`mapped`,[5080]],[[43945,43945],`mapped`,[5081]],[[43946,43946],`mapped`,[5082]],[[43947,43947],`mapped`,[5083]],[[43948,43948],`mapped`,[5084]],[[43949,43949],`mapped`,[5085]],[[43950,43950],`mapped`,[5086]],[[43951,43951],`mapped`,[5087]],[[43952,43952],`mapped`,[5088]],[[43953,43953],`mapped`,[5089]],[[43954,43954],`mapped`,[5090]],[[43955,43955],`mapped`,[5091]],[[43956,43956],`mapped`,[5092]],[[43957,43957],`mapped`,[5093]],[[43958,43958],`mapped`,[5094]],[[43959,43959],`mapped`,[5095]],[[43960,43960],`mapped`,[5096]],[[43961,43961],`mapped`,[5097]],[[43962,43962],`mapped`,[5098]],[[43963,43963],`mapped`,[5099]],[[43964,43964],`mapped`,[5100]],[[43965,43965],`mapped`,[5101]],[[43966,43966],`mapped`,[5102]],[[43967,43967],`mapped`,[5103]],[[43968,44010],`valid`],[[44011,44011],`valid`,[],`NV8`],[[44012,44013],`valid`],[[44014,44015],`disallowed`],[[44016,44025],`valid`],[[44026,44031],`disallowed`],[[44032,55203],`valid`],[[55204,55215],`disallowed`],[[55216,55238],`valid`,[],`NV8`],[[55239,55242],`disallowed`],[[55243,55291],`valid`,[],`NV8`],[[55292,55295],`disallowed`],[[55296,57343],`disallowed`],[[57344,63743],`disallowed`],[[63744,63744],`mapped`,[35912]],[[63745,63745],`mapped`,[26356]],[[63746,63746],`mapped`,[36554]],[[63747,63747],`mapped`,[36040]],[[63748,63748],`mapped`,[28369]],[[63749,63749],`mapped`,[20018]],[[63750,63750],`mapped`,[21477]],[[63751,63752],`mapped`,[40860]],[[63753,63753],`mapped`,[22865]],[[63754,63754],`mapped`,[37329]],[[63755,63755],`mapped`,[21895]],[[63756,63756],`mapped`,[22856]],[[63757,63757],`mapped`,[25078]],[[63758,63758],`mapped`,[30313]],[[63759,63759],`mapped`,[32645]],[[63760,63760],`mapped`,[34367]],[[63761,63761],`mapped`,[34746]],[[63762,63762],`mapped`,[35064]],[[63763,63763],`mapped`,[37007]],[[63764,63764],`mapped`,[27138]],[[63765,63765],`mapped`,[27931]],[[63766,63766],`mapped`,[28889]],[[63767,63767],`mapped`,[29662]],[[63768,63768],`mapped`,[33853]],[[63769,63769],`mapped`,[37226]],[[63770,63770],`mapped`,[39409]],[[63771,63771],`mapped`,[20098]],[[63772,63772],`mapped`,[21365]],[[63773,63773],`mapped`,[27396]],[[63774,63774],`mapped`,[29211]],[[63775,63775],`mapped`,[34349]],[[63776,63776],`mapped`,[40478]],[[63777,63777],`mapped`,[23888]],[[63778,63778],`mapped`,[28651]],[[63779,63779],`mapped`,[34253]],[[63780,63780],`mapped`,[35172]],[[63781,63781],`mapped`,[25289]],[[63782,63782],`mapped`,[33240]],[[63783,63783],`mapped`,[34847]],[[63784,63784],`mapped`,[24266]],[[63785,63785],`mapped`,[26391]],[[63786,63786],`mapped`,[28010]],[[63787,63787],`mapped`,[29436]],[[63788,63788],`mapped`,[37070]],[[63789,63789],`mapped`,[20358]],[[63790,63790],`mapped`,[20919]],[[63791,63791],`mapped`,[21214]],[[63792,63792],`mapped`,[25796]],[[63793,63793],`mapped`,[27347]],[[63794,63794],`mapped`,[29200]],[[63795,63795],`mapped`,[30439]],[[63796,63796],`mapped`,[32769]],[[63797,63797],`mapped`,[34310]],[[63798,63798],`mapped`,[34396]],[[63799,63799],`mapped`,[36335]],[[63800,63800],`mapped`,[38706]],[[63801,63801],`mapped`,[39791]],[[63802,63802],`mapped`,[40442]],[[63803,63803],`mapped`,[30860]],[[63804,63804],`mapped`,[31103]],[[63805,63805],`mapped`,[32160]],[[63806,63806],`mapped`,[33737]],[[63807,63807],`mapped`,[37636]],[[63808,63808],`mapped`,[40575]],[[63809,63809],`mapped`,[35542]],[[63810,63810],`mapped`,[22751]],[[63811,63811],`mapped`,[24324]],[[63812,63812],`mapped`,[31840]],[[63813,63813],`mapped`,[32894]],[[63814,63814],`mapped`,[29282]],[[63815,63815],`mapped`,[30922]],[[63816,63816],`mapped`,[36034]],[[63817,63817],`mapped`,[38647]],[[63818,63818],`mapped`,[22744]],[[63819,63819],`mapped`,[23650]],[[63820,63820],`mapped`,[27155]],[[63821,63821],`mapped`,[28122]],[[63822,63822],`mapped`,[28431]],[[63823,63823],`mapped`,[32047]],[[63824,63824],`mapped`,[32311]],[[63825,63825],`mapped`,[38475]],[[63826,63826],`mapped`,[21202]],[[63827,63827],`mapped`,[32907]],[[63828,63828],`mapped`,[20956]],[[63829,63829],`mapped`,[20940]],[[63830,63830],`mapped`,[31260]],[[63831,63831],`mapped`,[32190]],[[63832,63832],`mapped`,[33777]],[[63833,63833],`mapped`,[38517]],[[63834,63834],`mapped`,[35712]],[[63835,63835],`mapped`,[25295]],[[63836,63836],`mapped`,[27138]],[[63837,63837],`mapped`,[35582]],[[63838,63838],`mapped`,[20025]],[[63839,63839],`mapped`,[23527]],[[63840,63840],`mapped`,[24594]],[[63841,63841],`mapped`,[29575]],[[63842,63842],`mapped`,[30064]],[[63843,63843],`mapped`,[21271]],[[63844,63844],`mapped`,[30971]],[[63845,63845],`mapped`,[20415]],[[63846,63846],`mapped`,[24489]],[[63847,63847],`mapped`,[19981]],[[63848,63848],`mapped`,[27852]],[[63849,63849],`mapped`,[25976]],[[63850,63850],`mapped`,[32034]],[[63851,63851],`mapped`,[21443]],[[63852,63852],`mapped`,[22622]],[[63853,63853],`mapped`,[30465]],[[63854,63854],`mapped`,[33865]],[[63855,63855],`mapped`,[35498]],[[63856,63856],`mapped`,[27578]],[[63857,63857],`mapped`,[36784]],[[63858,63858],`mapped`,[27784]],[[63859,63859],`mapped`,[25342]],[[63860,63860],`mapped`,[33509]],[[63861,63861],`mapped`,[25504]],[[63862,63862],`mapped`,[30053]],[[63863,63863],`mapped`,[20142]],[[63864,63864],`mapped`,[20841]],[[63865,63865],`mapped`,[20937]],[[63866,63866],`mapped`,[26753]],[[63867,63867],`mapped`,[31975]],[[63868,63868],`mapped`,[33391]],[[63869,63869],`mapped`,[35538]],[[63870,63870],`mapped`,[37327]],[[63871,63871],`mapped`,[21237]],[[63872,63872],`mapped`,[21570]],[[63873,63873],`mapped`,[22899]],[[63874,63874],`mapped`,[24300]],[[63875,63875],`mapped`,[26053]],[[63876,63876],`mapped`,[28670]],[[63877,63877],`mapped`,[31018]],[[63878,63878],`mapped`,[38317]],[[63879,63879],`mapped`,[39530]],[[63880,63880],`mapped`,[40599]],[[63881,63881],`mapped`,[40654]],[[63882,63882],`mapped`,[21147]],[[63883,63883],`mapped`,[26310]],[[63884,63884],`mapped`,[27511]],[[63885,63885],`mapped`,[36706]],[[63886,63886],`mapped`,[24180]],[[63887,63887],`mapped`,[24976]],[[63888,63888],`mapped`,[25088]],[[63889,63889],`mapped`,[25754]],[[63890,63890],`mapped`,[28451]],[[63891,63891],`mapped`,[29001]],[[63892,63892],`mapped`,[29833]],[[63893,63893],`mapped`,[31178]],[[63894,63894],`mapped`,[32244]],[[63895,63895],`mapped`,[32879]],[[63896,63896],`mapped`,[36646]],[[63897,63897],`mapped`,[34030]],[[63898,63898],`mapped`,[36899]],[[63899,63899],`mapped`,[37706]],[[63900,63900],`mapped`,[21015]],[[63901,63901],`mapped`,[21155]],[[63902,63902],`mapped`,[21693]],[[63903,63903],`mapped`,[28872]],[[63904,63904],`mapped`,[35010]],[[63905,63905],`mapped`,[35498]],[[63906,63906],`mapped`,[24265]],[[63907,63907],`mapped`,[24565]],[[63908,63908],`mapped`,[25467]],[[63909,63909],`mapped`,[27566]],[[63910,63910],`mapped`,[31806]],[[63911,63911],`mapped`,[29557]],[[63912,63912],`mapped`,[20196]],[[63913,63913],`mapped`,[22265]],[[63914,63914],`mapped`,[23527]],[[63915,63915],`mapped`,[23994]],[[63916,63916],`mapped`,[24604]],[[63917,63917],`mapped`,[29618]],[[63918,63918],`mapped`,[29801]],[[63919,63919],`mapped`,[32666]],[[63920,63920],`mapped`,[32838]],[[63921,63921],`mapped`,[37428]],[[63922,63922],`mapped`,[38646]],[[63923,63923],`mapped`,[38728]],[[63924,63924],`mapped`,[38936]],[[63925,63925],`mapped`,[20363]],[[63926,63926],`mapped`,[31150]],[[63927,63927],`mapped`,[37300]],[[63928,63928],`mapped`,[38584]],[[63929,63929],`mapped`,[24801]],[[63930,63930],`mapped`,[20102]],[[63931,63931],`mapped`,[20698]],[[63932,63932],`mapped`,[23534]],[[63933,63933],`mapped`,[23615]],[[63934,63934],`mapped`,[26009]],[[63935,63935],`mapped`,[27138]],[[63936,63936],`mapped`,[29134]],[[63937,63937],`mapped`,[30274]],[[63938,63938],`mapped`,[34044]],[[63939,63939],`mapped`,[36988]],[[63940,63940],`mapped`,[40845]],[[63941,63941],`mapped`,[26248]],[[63942,63942],`mapped`,[38446]],[[63943,63943],`mapped`,[21129]],[[63944,63944],`mapped`,[26491]],[[63945,63945],`mapped`,[26611]],[[63946,63946],`mapped`,[27969]],[[63947,63947],`mapped`,[28316]],[[63948,63948],`mapped`,[29705]],[[63949,63949],`mapped`,[30041]],[[63950,63950],`mapped`,[30827]],[[63951,63951],`mapped`,[32016]],[[63952,63952],`mapped`,[39006]],[[63953,63953],`mapped`,[20845]],[[63954,63954],`mapped`,[25134]],[[63955,63955],`mapped`,[38520]],[[63956,63956],`mapped`,[20523]],[[63957,63957],`mapped`,[23833]],[[63958,63958],`mapped`,[28138]],[[63959,63959],`mapped`,[36650]],[[63960,63960],`mapped`,[24459]],[[63961,63961],`mapped`,[24900]],[[63962,63962],`mapped`,[26647]],[[63963,63963],`mapped`,[29575]],[[63964,63964],`mapped`,[38534]],[[63965,63965],`mapped`,[21033]],[[63966,63966],`mapped`,[21519]],[[63967,63967],`mapped`,[23653]],[[63968,63968],`mapped`,[26131]],[[63969,63969],`mapped`,[26446]],[[63970,63970],`mapped`,[26792]],[[63971,63971],`mapped`,[27877]],[[63972,63972],`mapped`,[29702]],[[63973,63973],`mapped`,[30178]],[[63974,63974],`mapped`,[32633]],[[63975,63975],`mapped`,[35023]],[[63976,63976],`mapped`,[35041]],[[63977,63977],`mapped`,[37324]],[[63978,63978],`mapped`,[38626]],[[63979,63979],`mapped`,[21311]],[[63980,63980],`mapped`,[28346]],[[63981,63981],`mapped`,[21533]],[[63982,63982],`mapped`,[29136]],[[63983,63983],`mapped`,[29848]],[[63984,63984],`mapped`,[34298]],[[63985,63985],`mapped`,[38563]],[[63986,63986],`mapped`,[40023]],[[63987,63987],`mapped`,[40607]],[[63988,63988],`mapped`,[26519]],[[63989,63989],`mapped`,[28107]],[[63990,63990],`mapped`,[33256]],[[63991,63991],`mapped`,[31435]],[[63992,63992],`mapped`,[31520]],[[63993,63993],`mapped`,[31890]],[[63994,63994],`mapped`,[29376]],[[63995,63995],`mapped`,[28825]],[[63996,63996],`mapped`,[35672]],[[63997,63997],`mapped`,[20160]],[[63998,63998],`mapped`,[33590]],[[63999,63999],`mapped`,[21050]],[[64e3,64e3],`mapped`,[20999]],[[64001,64001],`mapped`,[24230]],[[64002,64002],`mapped`,[25299]],[[64003,64003],`mapped`,[31958]],[[64004,64004],`mapped`,[23429]],[[64005,64005],`mapped`,[27934]],[[64006,64006],`mapped`,[26292]],[[64007,64007],`mapped`,[36667]],[[64008,64008],`mapped`,[34892]],[[64009,64009],`mapped`,[38477]],[[64010,64010],`mapped`,[35211]],[[64011,64011],`mapped`,[24275]],[[64012,64012],`mapped`,[20800]],[[64013,64013],`mapped`,[21952]],[[64014,64015],`valid`],[[64016,64016],`mapped`,[22618]],[[64017,64017],`valid`],[[64018,64018],`mapped`,[26228]],[[64019,64020],`valid`],[[64021,64021],`mapped`,[20958]],[[64022,64022],`mapped`,[29482]],[[64023,64023],`mapped`,[30410]],[[64024,64024],`mapped`,[31036]],[[64025,64025],`mapped`,[31070]],[[64026,64026],`mapped`,[31077]],[[64027,64027],`mapped`,[31119]],[[64028,64028],`mapped`,[38742]],[[64029,64029],`mapped`,[31934]],[[64030,64030],`mapped`,[32701]],[[64031,64031],`valid`],[[64032,64032],`mapped`,[34322]],[[64033,64033],`valid`],[[64034,64034],`mapped`,[35576]],[[64035,64036],`valid`],[[64037,64037],`mapped`,[36920]],[[64038,64038],`mapped`,[37117]],[[64039,64041],`valid`],[[64042,64042],`mapped`,[39151]],[[64043,64043],`mapped`,[39164]],[[64044,64044],`mapped`,[39208]],[[64045,64045],`mapped`,[40372]],[[64046,64046],`mapped`,[37086]],[[64047,64047],`mapped`,[38583]],[[64048,64048],`mapped`,[20398]],[[64049,64049],`mapped`,[20711]],[[64050,64050],`mapped`,[20813]],[[64051,64051],`mapped`,[21193]],[[64052,64052],`mapped`,[21220]],[[64053,64053],`mapped`,[21329]],[[64054,64054],`mapped`,[21917]],[[64055,64055],`mapped`,[22022]],[[64056,64056],`mapped`,[22120]],[[64057,64057],`mapped`,[22592]],[[64058,64058],`mapped`,[22696]],[[64059,64059],`mapped`,[23652]],[[64060,64060],`mapped`,[23662]],[[64061,64061],`mapped`,[24724]],[[64062,64062],`mapped`,[24936]],[[64063,64063],`mapped`,[24974]],[[64064,64064],`mapped`,[25074]],[[64065,64065],`mapped`,[25935]],[[64066,64066],`mapped`,[26082]],[[64067,64067],`mapped`,[26257]],[[64068,64068],`mapped`,[26757]],[[64069,64069],`mapped`,[28023]],[[64070,64070],`mapped`,[28186]],[[64071,64071],`mapped`,[28450]],[[64072,64072],`mapped`,[29038]],[[64073,64073],`mapped`,[29227]],[[64074,64074],`mapped`,[29730]],[[64075,64075],`mapped`,[30865]],[[64076,64076],`mapped`,[31038]],[[64077,64077],`mapped`,[31049]],[[64078,64078],`mapped`,[31048]],[[64079,64079],`mapped`,[31056]],[[64080,64080],`mapped`,[31062]],[[64081,64081],`mapped`,[31069]],[[64082,64082],`mapped`,[31117]],[[64083,64083],`mapped`,[31118]],[[64084,64084],`mapped`,[31296]],[[64085,64085],`mapped`,[31361]],[[64086,64086],`mapped`,[31680]],[[64087,64087],`mapped`,[32244]],[[64088,64088],`mapped`,[32265]],[[64089,64089],`mapped`,[32321]],[[64090,64090],`mapped`,[32626]],[[64091,64091],`mapped`,[32773]],[[64092,64092],`mapped`,[33261]],[[64093,64094],`mapped`,[33401]],[[64095,64095],`mapped`,[33879]],[[64096,64096],`mapped`,[35088]],[[64097,64097],`mapped`,[35222]],[[64098,64098],`mapped`,[35585]],[[64099,64099],`mapped`,[35641]],[[64100,64100],`mapped`,[36051]],[[64101,64101],`mapped`,[36104]],[[64102,64102],`mapped`,[36790]],[[64103,64103],`mapped`,[36920]],[[64104,64104],`mapped`,[38627]],[[64105,64105],`mapped`,[38911]],[[64106,64106],`mapped`,[38971]],[[64107,64107],`mapped`,[24693]],[[64108,64108],`mapped`,[148206]],[[64109,64109],`mapped`,[33304]],[[64110,64111],`disallowed`],[[64112,64112],`mapped`,[20006]],[[64113,64113],`mapped`,[20917]],[[64114,64114],`mapped`,[20840]],[[64115,64115],`mapped`,[20352]],[[64116,64116],`mapped`,[20805]],[[64117,64117],`mapped`,[20864]],[[64118,64118],`mapped`,[21191]],[[64119,64119],`mapped`,[21242]],[[64120,64120],`mapped`,[21917]],[[64121,64121],`mapped`,[21845]],[[64122,64122],`mapped`,[21913]],[[64123,64123],`mapped`,[21986]],[[64124,64124],`mapped`,[22618]],[[64125,64125],`mapped`,[22707]],[[64126,64126],`mapped`,[22852]],[[64127,64127],`mapped`,[22868]],[[64128,64128],`mapped`,[23138]],[[64129,64129],`mapped`,[23336]],[[64130,64130],`mapped`,[24274]],[[64131,64131],`mapped`,[24281]],[[64132,64132],`mapped`,[24425]],[[64133,64133],`mapped`,[24493]],[[64134,64134],`mapped`,[24792]],[[64135,64135],`mapped`,[24910]],[[64136,64136],`mapped`,[24840]],[[64137,64137],`mapped`,[24974]],[[64138,64138],`mapped`,[24928]],[[64139,64139],`mapped`,[25074]],[[64140,64140],`mapped`,[25140]],[[64141,64141],`mapped`,[25540]],[[64142,64142],`mapped`,[25628]],[[64143,64143],`mapped`,[25682]],[[64144,64144],`mapped`,[25942]],[[64145,64145],`mapped`,[26228]],[[64146,64146],`mapped`,[26391]],[[64147,64147],`mapped`,[26395]],[[64148,64148],`mapped`,[26454]],[[64149,64149],`mapped`,[27513]],[[64150,64150],`mapped`,[27578]],[[64151,64151],`mapped`,[27969]],[[64152,64152],`mapped`,[28379]],[[64153,64153],`mapped`,[28363]],[[64154,64154],`mapped`,[28450]],[[64155,64155],`mapped`,[28702]],[[64156,64156],`mapped`,[29038]],[[64157,64157],`mapped`,[30631]],[[64158,64158],`mapped`,[29237]],[[64159,64159],`mapped`,[29359]],[[64160,64160],`mapped`,[29482]],[[64161,64161],`mapped`,[29809]],[[64162,64162],`mapped`,[29958]],[[64163,64163],`mapped`,[30011]],[[64164,64164],`mapped`,[30237]],[[64165,64165],`mapped`,[30239]],[[64166,64166],`mapped`,[30410]],[[64167,64167],`mapped`,[30427]],[[64168,64168],`mapped`,[30452]],[[64169,64169],`mapped`,[30538]],[[64170,64170],`mapped`,[30528]],[[64171,64171],`mapped`,[30924]],[[64172,64172],`mapped`,[31409]],[[64173,64173],`mapped`,[31680]],[[64174,64174],`mapped`,[31867]],[[64175,64175],`mapped`,[32091]],[[64176,64176],`mapped`,[32244]],[[64177,64177],`mapped`,[32574]],[[64178,64178],`mapped`,[32773]],[[64179,64179],`mapped`,[33618]],[[64180,64180],`mapped`,[33775]],[[64181,64181],`mapped`,[34681]],[[64182,64182],`mapped`,[35137]],[[64183,64183],`mapped`,[35206]],[[64184,64184],`mapped`,[35222]],[[64185,64185],`mapped`,[35519]],[[64186,64186],`mapped`,[35576]],[[64187,64187],`mapped`,[35531]],[[64188,64188],`mapped`,[35585]],[[64189,64189],`mapped`,[35582]],[[64190,64190],`mapped`,[35565]],[[64191,64191],`mapped`,[35641]],[[64192,64192],`mapped`,[35722]],[[64193,64193],`mapped`,[36104]],[[64194,64194],`mapped`,[36664]],[[64195,64195],`mapped`,[36978]],[[64196,64196],`mapped`,[37273]],[[64197,64197],`mapped`,[37494]],[[64198,64198],`mapped`,[38524]],[[64199,64199],`mapped`,[38627]],[[64200,64200],`mapped`,[38742]],[[64201,64201],`mapped`,[38875]],[[64202,64202],`mapped`,[38911]],[[64203,64203],`mapped`,[38923]],[[64204,64204],`mapped`,[38971]],[[64205,64205],`mapped`,[39698]],[[64206,64206],`mapped`,[40860]],[[64207,64207],`mapped`,[141386]],[[64208,64208],`mapped`,[141380]],[[64209,64209],`mapped`,[144341]],[[64210,64210],`mapped`,[15261]],[[64211,64211],`mapped`,[16408]],[[64212,64212],`mapped`,[16441]],[[64213,64213],`mapped`,[152137]],[[64214,64214],`mapped`,[154832]],[[64215,64215],`mapped`,[163539]],[[64216,64216],`mapped`,[40771]],[[64217,64217],`mapped`,[40846]],[[64218,64255],`disallowed`],[[64256,64256],`mapped`,[102,102]],[[64257,64257],`mapped`,[102,105]],[[64258,64258],`mapped`,[102,108]],[[64259,64259],`mapped`,[102,102,105]],[[64260,64260],`mapped`,[102,102,108]],[[64261,64262],`mapped`,[115,116]],[[64263,64274],`disallowed`],[[64275,64275],`mapped`,[1396,1398]],[[64276,64276],`mapped`,[1396,1381]],[[64277,64277],`mapped`,[1396,1387]],[[64278,64278],`mapped`,[1406,1398]],[[64279,64279],`mapped`,[1396,1389]],[[64280,64284],`disallowed`],[[64285,64285],`mapped`,[1497,1460]],[[64286,64286],`valid`],[[64287,64287],`mapped`,[1522,1463]],[[64288,64288],`mapped`,[1506]],[[64289,64289],`mapped`,[1488]],[[64290,64290],`mapped`,[1491]],[[64291,64291],`mapped`,[1492]],[[64292,64292],`mapped`,[1499]],[[64293,64293],`mapped`,[1500]],[[64294,64294],`mapped`,[1501]],[[64295,64295],`mapped`,[1512]],[[64296,64296],`mapped`,[1514]],[[64297,64297],`disallowed_STD3_mapped`,[43]],[[64298,64298],`mapped`,[1513,1473]],[[64299,64299],`mapped`,[1513,1474]],[[64300,64300],`mapped`,[1513,1468,1473]],[[64301,64301],`mapped`,[1513,1468,1474]],[[64302,64302],`mapped`,[1488,1463]],[[64303,64303],`mapped`,[1488,1464]],[[64304,64304],`mapped`,[1488,1468]],[[64305,64305],`mapped`,[1489,1468]],[[64306,64306],`mapped`,[1490,1468]],[[64307,64307],`mapped`,[1491,1468]],[[64308,64308],`mapped`,[1492,1468]],[[64309,64309],`mapped`,[1493,1468]],[[64310,64310],`mapped`,[1494,1468]],[[64311,64311],`disallowed`],[[64312,64312],`mapped`,[1496,1468]],[[64313,64313],`mapped`,[1497,1468]],[[64314,64314],`mapped`,[1498,1468]],[[64315,64315],`mapped`,[1499,1468]],[[64316,64316],`mapped`,[1500,1468]],[[64317,64317],`disallowed`],[[64318,64318],`mapped`,[1502,1468]],[[64319,64319],`disallowed`],[[64320,64320],`mapped`,[1504,1468]],[[64321,64321],`mapped`,[1505,1468]],[[64322,64322],`disallowed`],[[64323,64323],`mapped`,[1507,1468]],[[64324,64324],`mapped`,[1508,1468]],[[64325,64325],`disallowed`],[[64326,64326],`mapped`,[1510,1468]],[[64327,64327],`mapped`,[1511,1468]],[[64328,64328],`mapped`,[1512,1468]],[[64329,64329],`mapped`,[1513,1468]],[[64330,64330],`mapped`,[1514,1468]],[[64331,64331],`mapped`,[1493,1465]],[[64332,64332],`mapped`,[1489,1471]],[[64333,64333],`mapped`,[1499,1471]],[[64334,64334],`mapped`,[1508,1471]],[[64335,64335],`mapped`,[1488,1500]],[[64336,64337],`mapped`,[1649]],[[64338,64341],`mapped`,[1659]],[[64342,64345],`mapped`,[1662]],[[64346,64349],`mapped`,[1664]],[[64350,64353],`mapped`,[1658]],[[64354,64357],`mapped`,[1663]],[[64358,64361],`mapped`,[1657]],[[64362,64365],`mapped`,[1700]],[[64366,64369],`mapped`,[1702]],[[64370,64373],`mapped`,[1668]],[[64374,64377],`mapped`,[1667]],[[64378,64381],`mapped`,[1670]],[[64382,64385],`mapped`,[1671]],[[64386,64387],`mapped`,[1677]],[[64388,64389],`mapped`,[1676]],[[64390,64391],`mapped`,[1678]],[[64392,64393],`mapped`,[1672]],[[64394,64395],`mapped`,[1688]],[[64396,64397],`mapped`,[1681]],[[64398,64401],`mapped`,[1705]],[[64402,64405],`mapped`,[1711]],[[64406,64409],`mapped`,[1715]],[[64410,64413],`mapped`,[1713]],[[64414,64415],`mapped`,[1722]],[[64416,64419],`mapped`,[1723]],[[64420,64421],`mapped`,[1728]],[[64422,64425],`mapped`,[1729]],[[64426,64429],`mapped`,[1726]],[[64430,64431],`mapped`,[1746]],[[64432,64433],`mapped`,[1747]],[[64434,64449],`valid`,[],`NV8`],[[64450,64466],`disallowed`],[[64467,64470],`mapped`,[1709]],[[64471,64472],`mapped`,[1735]],[[64473,64474],`mapped`,[1734]],[[64475,64476],`mapped`,[1736]],[[64477,64477],`mapped`,[1735,1652]],[[64478,64479],`mapped`,[1739]],[[64480,64481],`mapped`,[1733]],[[64482,64483],`mapped`,[1737]],[[64484,64487],`mapped`,[1744]],[[64488,64489],`mapped`,[1609]],[[64490,64491],`mapped`,[1574,1575]],[[64492,64493],`mapped`,[1574,1749]],[[64494,64495],`mapped`,[1574,1608]],[[64496,64497],`mapped`,[1574,1735]],[[64498,64499],`mapped`,[1574,1734]],[[64500,64501],`mapped`,[1574,1736]],[[64502,64504],`mapped`,[1574,1744]],[[64505,64507],`mapped`,[1574,1609]],[[64508,64511],`mapped`,[1740]],[[64512,64512],`mapped`,[1574,1580]],[[64513,64513],`mapped`,[1574,1581]],[[64514,64514],`mapped`,[1574,1605]],[[64515,64515],`mapped`,[1574,1609]],[[64516,64516],`mapped`,[1574,1610]],[[64517,64517],`mapped`,[1576,1580]],[[64518,64518],`mapped`,[1576,1581]],[[64519,64519],`mapped`,[1576,1582]],[[64520,64520],`mapped`,[1576,1605]],[[64521,64521],`mapped`,[1576,1609]],[[64522,64522],`mapped`,[1576,1610]],[[64523,64523],`mapped`,[1578,1580]],[[64524,64524],`mapped`,[1578,1581]],[[64525,64525],`mapped`,[1578,1582]],[[64526,64526],`mapped`,[1578,1605]],[[64527,64527],`mapped`,[1578,1609]],[[64528,64528],`mapped`,[1578,1610]],[[64529,64529],`mapped`,[1579,1580]],[[64530,64530],`mapped`,[1579,1605]],[[64531,64531],`mapped`,[1579,1609]],[[64532,64532],`mapped`,[1579,1610]],[[64533,64533],`mapped`,[1580,1581]],[[64534,64534],`mapped`,[1580,1605]],[[64535,64535],`mapped`,[1581,1580]],[[64536,64536],`mapped`,[1581,1605]],[[64537,64537],`mapped`,[1582,1580]],[[64538,64538],`mapped`,[1582,1581]],[[64539,64539],`mapped`,[1582,1605]],[[64540,64540],`mapped`,[1587,1580]],[[64541,64541],`mapped`,[1587,1581]],[[64542,64542],`mapped`,[1587,1582]],[[64543,64543],`mapped`,[1587,1605]],[[64544,64544],`mapped`,[1589,1581]],[[64545,64545],`mapped`,[1589,1605]],[[64546,64546],`mapped`,[1590,1580]],[[64547,64547],`mapped`,[1590,1581]],[[64548,64548],`mapped`,[1590,1582]],[[64549,64549],`mapped`,[1590,1605]],[[64550,64550],`mapped`,[1591,1581]],[[64551,64551],`mapped`,[1591,1605]],[[64552,64552],`mapped`,[1592,1605]],[[64553,64553],`mapped`,[1593,1580]],[[64554,64554],`mapped`,[1593,1605]],[[64555,64555],`mapped`,[1594,1580]],[[64556,64556],`mapped`,[1594,1605]],[[64557,64557],`mapped`,[1601,1580]],[[64558,64558],`mapped`,[1601,1581]],[[64559,64559],`mapped`,[1601,1582]],[[64560,64560],`mapped`,[1601,1605]],[[64561,64561],`mapped`,[1601,1609]],[[64562,64562],`mapped`,[1601,1610]],[[64563,64563],`mapped`,[1602,1581]],[[64564,64564],`mapped`,[1602,1605]],[[64565,64565],`mapped`,[1602,1609]],[[64566,64566],`mapped`,[1602,1610]],[[64567,64567],`mapped`,[1603,1575]],[[64568,64568],`mapped`,[1603,1580]],[[64569,64569],`mapped`,[1603,1581]],[[64570,64570],`mapped`,[1603,1582]],[[64571,64571],`mapped`,[1603,1604]],[[64572,64572],`mapped`,[1603,1605]],[[64573,64573],`mapped`,[1603,1609]],[[64574,64574],`mapped`,[1603,1610]],[[64575,64575],`mapped`,[1604,1580]],[[64576,64576],`mapped`,[1604,1581]],[[64577,64577],`mapped`,[1604,1582]],[[64578,64578],`mapped`,[1604,1605]],[[64579,64579],`mapped`,[1604,1609]],[[64580,64580],`mapped`,[1604,1610]],[[64581,64581],`mapped`,[1605,1580]],[[64582,64582],`mapped`,[1605,1581]],[[64583,64583],`mapped`,[1605,1582]],[[64584,64584],`mapped`,[1605,1605]],[[64585,64585],`mapped`,[1605,1609]],[[64586,64586],`mapped`,[1605,1610]],[[64587,64587],`mapped`,[1606,1580]],[[64588,64588],`mapped`,[1606,1581]],[[64589,64589],`mapped`,[1606,1582]],[[64590,64590],`mapped`,[1606,1605]],[[64591,64591],`mapped`,[1606,1609]],[[64592,64592],`mapped`,[1606,1610]],[[64593,64593],`mapped`,[1607,1580]],[[64594,64594],`mapped`,[1607,1605]],[[64595,64595],`mapped`,[1607,1609]],[[64596,64596],`mapped`,[1607,1610]],[[64597,64597],`mapped`,[1610,1580]],[[64598,64598],`mapped`,[1610,1581]],[[64599,64599],`mapped`,[1610,1582]],[[64600,64600],`mapped`,[1610,1605]],[[64601,64601],`mapped`,[1610,1609]],[[64602,64602],`mapped`,[1610,1610]],[[64603,64603],`mapped`,[1584,1648]],[[64604,64604],`mapped`,[1585,1648]],[[64605,64605],`mapped`,[1609,1648]],[[64606,64606],`disallowed_STD3_mapped`,[32,1612,1617]],[[64607,64607],`disallowed_STD3_mapped`,[32,1613,1617]],[[64608,64608],`disallowed_STD3_mapped`,[32,1614,1617]],[[64609,64609],`disallowed_STD3_mapped`,[32,1615,1617]],[[64610,64610],`disallowed_STD3_mapped`,[32,1616,1617]],[[64611,64611],`disallowed_STD3_mapped`,[32,1617,1648]],[[64612,64612],`mapped`,[1574,1585]],[[64613,64613],`mapped`,[1574,1586]],[[64614,64614],`mapped`,[1574,1605]],[[64615,64615],`mapped`,[1574,1606]],[[64616,64616],`mapped`,[1574,1609]],[[64617,64617],`mapped`,[1574,1610]],[[64618,64618],`mapped`,[1576,1585]],[[64619,64619],`mapped`,[1576,1586]],[[64620,64620],`mapped`,[1576,1605]],[[64621,64621],`mapped`,[1576,1606]],[[64622,64622],`mapped`,[1576,1609]],[[64623,64623],`mapped`,[1576,1610]],[[64624,64624],`mapped`,[1578,1585]],[[64625,64625],`mapped`,[1578,1586]],[[64626,64626],`mapped`,[1578,1605]],[[64627,64627],`mapped`,[1578,1606]],[[64628,64628],`mapped`,[1578,1609]],[[64629,64629],`mapped`,[1578,1610]],[[64630,64630],`mapped`,[1579,1585]],[[64631,64631],`mapped`,[1579,1586]],[[64632,64632],`mapped`,[1579,1605]],[[64633,64633],`mapped`,[1579,1606]],[[64634,64634],`mapped`,[1579,1609]],[[64635,64635],`mapped`,[1579,1610]],[[64636,64636],`mapped`,[1601,1609]],[[64637,64637],`mapped`,[1601,1610]],[[64638,64638],`mapped`,[1602,1609]],[[64639,64639],`mapped`,[1602,1610]],[[64640,64640],`mapped`,[1603,1575]],[[64641,64641],`mapped`,[1603,1604]],[[64642,64642],`mapped`,[1603,1605]],[[64643,64643],`mapped`,[1603,1609]],[[64644,64644],`mapped`,[1603,1610]],[[64645,64645],`mapped`,[1604,1605]],[[64646,64646],`mapped`,[1604,1609]],[[64647,64647],`mapped`,[1604,1610]],[[64648,64648],`mapped`,[1605,1575]],[[64649,64649],`mapped`,[1605,1605]],[[64650,64650],`mapped`,[1606,1585]],[[64651,64651],`mapped`,[1606,1586]],[[64652,64652],`mapped`,[1606,1605]],[[64653,64653],`mapped`,[1606,1606]],[[64654,64654],`mapped`,[1606,1609]],[[64655,64655],`mapped`,[1606,1610]],[[64656,64656],`mapped`,[1609,1648]],[[64657,64657],`mapped`,[1610,1585]],[[64658,64658],`mapped`,[1610,1586]],[[64659,64659],`mapped`,[1610,1605]],[[64660,64660],`mapped`,[1610,1606]],[[64661,64661],`mapped`,[1610,1609]],[[64662,64662],`mapped`,[1610,1610]],[[64663,64663],`mapped`,[1574,1580]],[[64664,64664],`mapped`,[1574,1581]],[[64665,64665],`mapped`,[1574,1582]],[[64666,64666],`mapped`,[1574,1605]],[[64667,64667],`mapped`,[1574,1607]],[[64668,64668],`mapped`,[1576,1580]],[[64669,64669],`mapped`,[1576,1581]],[[64670,64670],`mapped`,[1576,1582]],[[64671,64671],`mapped`,[1576,1605]],[[64672,64672],`mapped`,[1576,1607]],[[64673,64673],`mapped`,[1578,1580]],[[64674,64674],`mapped`,[1578,1581]],[[64675,64675],`mapped`,[1578,1582]],[[64676,64676],`mapped`,[1578,1605]],[[64677,64677],`mapped`,[1578,1607]],[[64678,64678],`mapped`,[1579,1605]],[[64679,64679],`mapped`,[1580,1581]],[[64680,64680],`mapped`,[1580,1605]],[[64681,64681],`mapped`,[1581,1580]],[[64682,64682],`mapped`,[1581,1605]],[[64683,64683],`mapped`,[1582,1580]],[[64684,64684],`mapped`,[1582,1605]],[[64685,64685],`mapped`,[1587,1580]],[[64686,64686],`mapped`,[1587,1581]],[[64687,64687],`mapped`,[1587,1582]],[[64688,64688],`mapped`,[1587,1605]],[[64689,64689],`mapped`,[1589,1581]],[[64690,64690],`mapped`,[1589,1582]],[[64691,64691],`mapped`,[1589,1605]],[[64692,64692],`mapped`,[1590,1580]],[[64693,64693],`mapped`,[1590,1581]],[[64694,64694],`mapped`,[1590,1582]],[[64695,64695],`mapped`,[1590,1605]],[[64696,64696],`mapped`,[1591,1581]],[[64697,64697],`mapped`,[1592,1605]],[[64698,64698],`mapped`,[1593,1580]],[[64699,64699],`mapped`,[1593,1605]],[[64700,64700],`mapped`,[1594,1580]],[[64701,64701],`mapped`,[1594,1605]],[[64702,64702],`mapped`,[1601,1580]],[[64703,64703],`mapped`,[1601,1581]],[[64704,64704],`mapped`,[1601,1582]],[[64705,64705],`mapped`,[1601,1605]],[[64706,64706],`mapped`,[1602,1581]],[[64707,64707],`mapped`,[1602,1605]],[[64708,64708],`mapped`,[1603,1580]],[[64709,64709],`mapped`,[1603,1581]],[[64710,64710],`mapped`,[1603,1582]],[[64711,64711],`mapped`,[1603,1604]],[[64712,64712],`mapped`,[1603,1605]],[[64713,64713],`mapped`,[1604,1580]],[[64714,64714],`mapped`,[1604,1581]],[[64715,64715],`mapped`,[1604,1582]],[[64716,64716],`mapped`,[1604,1605]],[[64717,64717],`mapped`,[1604,1607]],[[64718,64718],`mapped`,[1605,1580]],[[64719,64719],`mapped`,[1605,1581]],[[64720,64720],`mapped`,[1605,1582]],[[64721,64721],`mapped`,[1605,1605]],[[64722,64722],`mapped`,[1606,1580]],[[64723,64723],`mapped`,[1606,1581]],[[64724,64724],`mapped`,[1606,1582]],[[64725,64725],`mapped`,[1606,1605]],[[64726,64726],`mapped`,[1606,1607]],[[64727,64727],`mapped`,[1607,1580]],[[64728,64728],`mapped`,[1607,1605]],[[64729,64729],`mapped`,[1607,1648]],[[64730,64730],`mapped`,[1610,1580]],[[64731,64731],`mapped`,[1610,1581]],[[64732,64732],`mapped`,[1610,1582]],[[64733,64733],`mapped`,[1610,1605]],[[64734,64734],`mapped`,[1610,1607]],[[64735,64735],`mapped`,[1574,1605]],[[64736,64736],`mapped`,[1574,1607]],[[64737,64737],`mapped`,[1576,1605]],[[64738,64738],`mapped`,[1576,1607]],[[64739,64739],`mapped`,[1578,1605]],[[64740,64740],`mapped`,[1578,1607]],[[64741,64741],`mapped`,[1579,1605]],[[64742,64742],`mapped`,[1579,1607]],[[64743,64743],`mapped`,[1587,1605]],[[64744,64744],`mapped`,[1587,1607]],[[64745,64745],`mapped`,[1588,1605]],[[64746,64746],`mapped`,[1588,1607]],[[64747,64747],`mapped`,[1603,1604]],[[64748,64748],`mapped`,[1603,1605]],[[64749,64749],`mapped`,[1604,1605]],[[64750,64750],`mapped`,[1606,1605]],[[64751,64751],`mapped`,[1606,1607]],[[64752,64752],`mapped`,[1610,1605]],[[64753,64753],`mapped`,[1610,1607]],[[64754,64754],`mapped`,[1600,1614,1617]],[[64755,64755],`mapped`,[1600,1615,1617]],[[64756,64756],`mapped`,[1600,1616,1617]],[[64757,64757],`mapped`,[1591,1609]],[[64758,64758],`mapped`,[1591,1610]],[[64759,64759],`mapped`,[1593,1609]],[[64760,64760],`mapped`,[1593,1610]],[[64761,64761],`mapped`,[1594,1609]],[[64762,64762],`mapped`,[1594,1610]],[[64763,64763],`mapped`,[1587,1609]],[[64764,64764],`mapped`,[1587,1610]],[[64765,64765],`mapped`,[1588,1609]],[[64766,64766],`mapped`,[1588,1610]],[[64767,64767],`mapped`,[1581,1609]],[[64768,64768],`mapped`,[1581,1610]],[[64769,64769],`mapped`,[1580,1609]],[[64770,64770],`mapped`,[1580,1610]],[[64771,64771],`mapped`,[1582,1609]],[[64772,64772],`mapped`,[1582,1610]],[[64773,64773],`mapped`,[1589,1609]],[[64774,64774],`mapped`,[1589,1610]],[[64775,64775],`mapped`,[1590,1609]],[[64776,64776],`mapped`,[1590,1610]],[[64777,64777],`mapped`,[1588,1580]],[[64778,64778],`mapped`,[1588,1581]],[[64779,64779],`mapped`,[1588,1582]],[[64780,64780],`mapped`,[1588,1605]],[[64781,64781],`mapped`,[1588,1585]],[[64782,64782],`mapped`,[1587,1585]],[[64783,64783],`mapped`,[1589,1585]],[[64784,64784],`mapped`,[1590,1585]],[[64785,64785],`mapped`,[1591,1609]],[[64786,64786],`mapped`,[1591,1610]],[[64787,64787],`mapped`,[1593,1609]],[[64788,64788],`mapped`,[1593,1610]],[[64789,64789],`mapped`,[1594,1609]],[[64790,64790],`mapped`,[1594,1610]],[[64791,64791],`mapped`,[1587,1609]],[[64792,64792],`mapped`,[1587,1610]],[[64793,64793],`mapped`,[1588,1609]],[[64794,64794],`mapped`,[1588,1610]],[[64795,64795],`mapped`,[1581,1609]],[[64796,64796],`mapped`,[1581,1610]],[[64797,64797],`mapped`,[1580,1609]],[[64798,64798],`mapped`,[1580,1610]],[[64799,64799],`mapped`,[1582,1609]],[[64800,64800],`mapped`,[1582,1610]],[[64801,64801],`mapped`,[1589,1609]],[[64802,64802],`mapped`,[1589,1610]],[[64803,64803],`mapped`,[1590,1609]],[[64804,64804],`mapped`,[1590,1610]],[[64805,64805],`mapped`,[1588,1580]],[[64806,64806],`mapped`,[1588,1581]],[[64807,64807],`mapped`,[1588,1582]],[[64808,64808],`mapped`,[1588,1605]],[[64809,64809],`mapped`,[1588,1585]],[[64810,64810],`mapped`,[1587,1585]],[[64811,64811],`mapped`,[1589,1585]],[[64812,64812],`mapped`,[1590,1585]],[[64813,64813],`mapped`,[1588,1580]],[[64814,64814],`mapped`,[1588,1581]],[[64815,64815],`mapped`,[1588,1582]],[[64816,64816],`mapped`,[1588,1605]],[[64817,64817],`mapped`,[1587,1607]],[[64818,64818],`mapped`,[1588,1607]],[[64819,64819],`mapped`,[1591,1605]],[[64820,64820],`mapped`,[1587,1580]],[[64821,64821],`mapped`,[1587,1581]],[[64822,64822],`mapped`,[1587,1582]],[[64823,64823],`mapped`,[1588,1580]],[[64824,64824],`mapped`,[1588,1581]],[[64825,64825],`mapped`,[1588,1582]],[[64826,64826],`mapped`,[1591,1605]],[[64827,64827],`mapped`,[1592,1605]],[[64828,64829],`mapped`,[1575,1611]],[[64830,64831],`valid`,[],`NV8`],[[64832,64847],`disallowed`],[[64848,64848],`mapped`,[1578,1580,1605]],[[64849,64850],`mapped`,[1578,1581,1580]],[[64851,64851],`mapped`,[1578,1581,1605]],[[64852,64852],`mapped`,[1578,1582,1605]],[[64853,64853],`mapped`,[1578,1605,1580]],[[64854,64854],`mapped`,[1578,1605,1581]],[[64855,64855],`mapped`,[1578,1605,1582]],[[64856,64857],`mapped`,[1580,1605,1581]],[[64858,64858],`mapped`,[1581,1605,1610]],[[64859,64859],`mapped`,[1581,1605,1609]],[[64860,64860],`mapped`,[1587,1581,1580]],[[64861,64861],`mapped`,[1587,1580,1581]],[[64862,64862],`mapped`,[1587,1580,1609]],[[64863,64864],`mapped`,[1587,1605,1581]],[[64865,64865],`mapped`,[1587,1605,1580]],[[64866,64867],`mapped`,[1587,1605,1605]],[[64868,64869],`mapped`,[1589,1581,1581]],[[64870,64870],`mapped`,[1589,1605,1605]],[[64871,64872],`mapped`,[1588,1581,1605]],[[64873,64873],`mapped`,[1588,1580,1610]],[[64874,64875],`mapped`,[1588,1605,1582]],[[64876,64877],`mapped`,[1588,1605,1605]],[[64878,64878],`mapped`,[1590,1581,1609]],[[64879,64880],`mapped`,[1590,1582,1605]],[[64881,64882],`mapped`,[1591,1605,1581]],[[64883,64883],`mapped`,[1591,1605,1605]],[[64884,64884],`mapped`,[1591,1605,1610]],[[64885,64885],`mapped`,[1593,1580,1605]],[[64886,64887],`mapped`,[1593,1605,1605]],[[64888,64888],`mapped`,[1593,1605,1609]],[[64889,64889],`mapped`,[1594,1605,1605]],[[64890,64890],`mapped`,[1594,1605,1610]],[[64891,64891],`mapped`,[1594,1605,1609]],[[64892,64893],`mapped`,[1601,1582,1605]],[[64894,64894],`mapped`,[1602,1605,1581]],[[64895,64895],`mapped`,[1602,1605,1605]],[[64896,64896],`mapped`,[1604,1581,1605]],[[64897,64897],`mapped`,[1604,1581,1610]],[[64898,64898],`mapped`,[1604,1581,1609]],[[64899,64900],`mapped`,[1604,1580,1580]],[[64901,64902],`mapped`,[1604,1582,1605]],[[64903,64904],`mapped`,[1604,1605,1581]],[[64905,64905],`mapped`,[1605,1581,1580]],[[64906,64906],`mapped`,[1605,1581,1605]],[[64907,64907],`mapped`,[1605,1581,1610]],[[64908,64908],`mapped`,[1605,1580,1581]],[[64909,64909],`mapped`,[1605,1580,1605]],[[64910,64910],`mapped`,[1605,1582,1580]],[[64911,64911],`mapped`,[1605,1582,1605]],[[64912,64913],`disallowed`],[[64914,64914],`mapped`,[1605,1580,1582]],[[64915,64915],`mapped`,[1607,1605,1580]],[[64916,64916],`mapped`,[1607,1605,1605]],[[64917,64917],`mapped`,[1606,1581,1605]],[[64918,64918],`mapped`,[1606,1581,1609]],[[64919,64920],`mapped`,[1606,1580,1605]],[[64921,64921],`mapped`,[1606,1580,1609]],[[64922,64922],`mapped`,[1606,1605,1610]],[[64923,64923],`mapped`,[1606,1605,1609]],[[64924,64925],`mapped`,[1610,1605,1605]],[[64926,64926],`mapped`,[1576,1582,1610]],[[64927,64927],`mapped`,[1578,1580,1610]],[[64928,64928],`mapped`,[1578,1580,1609]],[[64929,64929],`mapped`,[1578,1582,1610]],[[64930,64930],`mapped`,[1578,1582,1609]],[[64931,64931],`mapped`,[1578,1605,1610]],[[64932,64932],`mapped`,[1578,1605,1609]],[[64933,64933],`mapped`,[1580,1605,1610]],[[64934,64934],`mapped`,[1580,1581,1609]],[[64935,64935],`mapped`,[1580,1605,1609]],[[64936,64936],`mapped`,[1587,1582,1609]],[[64937,64937],`mapped`,[1589,1581,1610]],[[64938,64938],`mapped`,[1588,1581,1610]],[[64939,64939],`mapped`,[1590,1581,1610]],[[64940,64940],`mapped`,[1604,1580,1610]],[[64941,64941],`mapped`,[1604,1605,1610]],[[64942,64942],`mapped`,[1610,1581,1610]],[[64943,64943],`mapped`,[1610,1580,1610]],[[64944,64944],`mapped`,[1610,1605,1610]],[[64945,64945],`mapped`,[1605,1605,1610]],[[64946,64946],`mapped`,[1602,1605,1610]],[[64947,64947],`mapped`,[1606,1581,1610]],[[64948,64948],`mapped`,[1602,1605,1581]],[[64949,64949],`mapped`,[1604,1581,1605]],[[64950,64950],`mapped`,[1593,1605,1610]],[[64951,64951],`mapped`,[1603,1605,1610]],[[64952,64952],`mapped`,[1606,1580,1581]],[[64953,64953],`mapped`,[1605,1582,1610]],[[64954,64954],`mapped`,[1604,1580,1605]],[[64955,64955],`mapped`,[1603,1605,1605]],[[64956,64956],`mapped`,[1604,1580,1605]],[[64957,64957],`mapped`,[1606,1580,1581]],[[64958,64958],`mapped`,[1580,1581,1610]],[[64959,64959],`mapped`,[1581,1580,1610]],[[64960,64960],`mapped`,[1605,1580,1610]],[[64961,64961],`mapped`,[1601,1605,1610]],[[64962,64962],`mapped`,[1576,1581,1610]],[[64963,64963],`mapped`,[1603,1605,1605]],[[64964,64964],`mapped`,[1593,1580,1605]],[[64965,64965],`mapped`,[1589,1605,1605]],[[64966,64966],`mapped`,[1587,1582,1610]],[[64967,64967],`mapped`,[1606,1580,1610]],[[64968,64975],`disallowed`],[[64976,65007],`disallowed`],[[65008,65008],`mapped`,[1589,1604,1746]],[[65009,65009],`mapped`,[1602,1604,1746]],[[65010,65010],`mapped`,[1575,1604,1604,1607]],[[65011,65011],`mapped`,[1575,1603,1576,1585]],[[65012,65012],`mapped`,[1605,1581,1605,1583]],[[65013,65013],`mapped`,[1589,1604,1593,1605]],[[65014,65014],`mapped`,[1585,1587,1608,1604]],[[65015,65015],`mapped`,[1593,1604,1610,1607]],[[65016,65016],`mapped`,[1608,1587,1604,1605]],[[65017,65017],`mapped`,[1589,1604,1609]],[[65018,65018],`disallowed_STD3_mapped`,[1589,1604,1609,32,1575,1604,1604,1607,32,1593,1604,1610,1607,32,1608,1587,1604,1605]],[[65019,65019],`disallowed_STD3_mapped`,[1580,1604,32,1580,1604,1575,1604,1607]],[[65020,65020],`mapped`,[1585,1740,1575,1604]],[[65021,65021],`valid`,[],`NV8`],[[65022,65023],`disallowed`],[[65024,65039],`ignored`],[[65040,65040],`disallowed_STD3_mapped`,[44]],[[65041,65041],`mapped`,[12289]],[[65042,65042],`disallowed`],[[65043,65043],`disallowed_STD3_mapped`,[58]],[[65044,65044],`disallowed_STD3_mapped`,[59]],[[65045,65045],`disallowed_STD3_mapped`,[33]],[[65046,65046],`disallowed_STD3_mapped`,[63]],[[65047,65047],`mapped`,[12310]],[[65048,65048],`mapped`,[12311]],[[65049,65049],`disallowed`],[[65050,65055],`disallowed`],[[65056,65059],`valid`],[[65060,65062],`valid`],[[65063,65069],`valid`],[[65070,65071],`valid`],[[65072,65072],`disallowed`],[[65073,65073],`mapped`,[8212]],[[65074,65074],`mapped`,[8211]],[[65075,65076],`disallowed_STD3_mapped`,[95]],[[65077,65077],`disallowed_STD3_mapped`,[40]],[[65078,65078],`disallowed_STD3_mapped`,[41]],[[65079,65079],`disallowed_STD3_mapped`,[123]],[[65080,65080],`disallowed_STD3_mapped`,[125]],[[65081,65081],`mapped`,[12308]],[[65082,65082],`mapped`,[12309]],[[65083,65083],`mapped`,[12304]],[[65084,65084],`mapped`,[12305]],[[65085,65085],`mapped`,[12298]],[[65086,65086],`mapped`,[12299]],[[65087,65087],`mapped`,[12296]],[[65088,65088],`mapped`,[12297]],[[65089,65089],`mapped`,[12300]],[[65090,65090],`mapped`,[12301]],[[65091,65091],`mapped`,[12302]],[[65092,65092],`mapped`,[12303]],[[65093,65094],`valid`,[],`NV8`],[[65095,65095],`disallowed_STD3_mapped`,[91]],[[65096,65096],`disallowed_STD3_mapped`,[93]],[[65097,65100],`disallowed_STD3_mapped`,[32,773]],[[65101,65103],`disallowed_STD3_mapped`,[95]],[[65104,65104],`disallowed_STD3_mapped`,[44]],[[65105,65105],`mapped`,[12289]],[[65106,65106],`disallowed`],[[65107,65107],`disallowed`],[[65108,65108],`disallowed_STD3_mapped`,[59]],[[65109,65109],`disallowed_STD3_mapped`,[58]],[[65110,65110],`disallowed_STD3_mapped`,[63]],[[65111,65111],`disallowed_STD3_mapped`,[33]],[[65112,65112],`mapped`,[8212]],[[65113,65113],`disallowed_STD3_mapped`,[40]],[[65114,65114],`disallowed_STD3_mapped`,[41]],[[65115,65115],`disallowed_STD3_mapped`,[123]],[[65116,65116],`disallowed_STD3_mapped`,[125]],[[65117,65117],`mapped`,[12308]],[[65118,65118],`mapped`,[12309]],[[65119,65119],`disallowed_STD3_mapped`,[35]],[[65120,65120],`disallowed_STD3_mapped`,[38]],[[65121,65121],`disallowed_STD3_mapped`,[42]],[[65122,65122],`disallowed_STD3_mapped`,[43]],[[65123,65123],`mapped`,[45]],[[65124,65124],`disallowed_STD3_mapped`,[60]],[[65125,65125],`disallowed_STD3_mapped`,[62]],[[65126,65126],`disallowed_STD3_mapped`,[61]],[[65127,65127],`disallowed`],[[65128,65128],`disallowed_STD3_mapped`,[92]],[[65129,65129],`disallowed_STD3_mapped`,[36]],[[65130,65130],`disallowed_STD3_mapped`,[37]],[[65131,65131],`disallowed_STD3_mapped`,[64]],[[65132,65135],`disallowed`],[[65136,65136],`disallowed_STD3_mapped`,[32,1611]],[[65137,65137],`mapped`,[1600,1611]],[[65138,65138],`disallowed_STD3_mapped`,[32,1612]],[[65139,65139],`valid`],[[65140,65140],`disallowed_STD3_mapped`,[32,1613]],[[65141,65141],`disallowed`],[[65142,65142],`disallowed_STD3_mapped`,[32,1614]],[[65143,65143],`mapped`,[1600,1614]],[[65144,65144],`disallowed_STD3_mapped`,[32,1615]],[[65145,65145],`mapped`,[1600,1615]],[[65146,65146],`disallowed_STD3_mapped`,[32,1616]],[[65147,65147],`mapped`,[1600,1616]],[[65148,65148],`disallowed_STD3_mapped`,[32,1617]],[[65149,65149],`mapped`,[1600,1617]],[[65150,65150],`disallowed_STD3_mapped`,[32,1618]],[[65151,65151],`mapped`,[1600,1618]],[[65152,65152],`mapped`,[1569]],[[65153,65154],`mapped`,[1570]],[[65155,65156],`mapped`,[1571]],[[65157,65158],`mapped`,[1572]],[[65159,65160],`mapped`,[1573]],[[65161,65164],`mapped`,[1574]],[[65165,65166],`mapped`,[1575]],[[65167,65170],`mapped`,[1576]],[[65171,65172],`mapped`,[1577]],[[65173,65176],`mapped`,[1578]],[[65177,65180],`mapped`,[1579]],[[65181,65184],`mapped`,[1580]],[[65185,65188],`mapped`,[1581]],[[65189,65192],`mapped`,[1582]],[[65193,65194],`mapped`,[1583]],[[65195,65196],`mapped`,[1584]],[[65197,65198],`mapped`,[1585]],[[65199,65200],`mapped`,[1586]],[[65201,65204],`mapped`,[1587]],[[65205,65208],`mapped`,[1588]],[[65209,65212],`mapped`,[1589]],[[65213,65216],`mapped`,[1590]],[[65217,65220],`mapped`,[1591]],[[65221,65224],`mapped`,[1592]],[[65225,65228],`mapped`,[1593]],[[65229,65232],`mapped`,[1594]],[[65233,65236],`mapped`,[1601]],[[65237,65240],`mapped`,[1602]],[[65241,65244],`mapped`,[1603]],[[65245,65248],`mapped`,[1604]],[[65249,65252],`mapped`,[1605]],[[65253,65256],`mapped`,[1606]],[[65257,65260],`mapped`,[1607]],[[65261,65262],`mapped`,[1608]],[[65263,65264],`mapped`,[1609]],[[65265,65268],`mapped`,[1610]],[[65269,65270],`mapped`,[1604,1570]],[[65271,65272],`mapped`,[1604,1571]],[[65273,65274],`mapped`,[1604,1573]],[[65275,65276],`mapped`,[1604,1575]],[[65277,65278],`disallowed`],[[65279,65279],`ignored`],[[65280,65280],`disallowed`],[[65281,65281],`disallowed_STD3_mapped`,[33]],[[65282,65282],`disallowed_STD3_mapped`,[34]],[[65283,65283],`disallowed_STD3_mapped`,[35]],[[65284,65284],`disallowed_STD3_mapped`,[36]],[[65285,65285],`disallowed_STD3_mapped`,[37]],[[65286,65286],`disallowed_STD3_mapped`,[38]],[[65287,65287],`disallowed_STD3_mapped`,[39]],[[65288,65288],`disallowed_STD3_mapped`,[40]],[[65289,65289],`disallowed_STD3_mapped`,[41]],[[65290,65290],`disallowed_STD3_mapped`,[42]],[[65291,65291],`disallowed_STD3_mapped`,[43]],[[65292,65292],`disallowed_STD3_mapped`,[44]],[[65293,65293],`mapped`,[45]],[[65294,65294],`mapped`,[46]],[[65295,65295],`disallowed_STD3_mapped`,[47]],[[65296,65296],`mapped`,[48]],[[65297,65297],`mapped`,[49]],[[65298,65298],`mapped`,[50]],[[65299,65299],`mapped`,[51]],[[65300,65300],`mapped`,[52]],[[65301,65301],`mapped`,[53]],[[65302,65302],`mapped`,[54]],[[65303,65303],`mapped`,[55]],[[65304,65304],`mapped`,[56]],[[65305,65305],`mapped`,[57]],[[65306,65306],`disallowed_STD3_mapped`,[58]],[[65307,65307],`disallowed_STD3_mapped`,[59]],[[65308,65308],`disallowed_STD3_mapped`,[60]],[[65309,65309],`disallowed_STD3_mapped`,[61]],[[65310,65310],`disallowed_STD3_mapped`,[62]],[[65311,65311],`disallowed_STD3_mapped`,[63]],[[65312,65312],`disallowed_STD3_mapped`,[64]],[[65313,65313],`mapped`,[97]],[[65314,65314],`mapped`,[98]],[[65315,65315],`mapped`,[99]],[[65316,65316],`mapped`,[100]],[[65317,65317],`mapped`,[101]],[[65318,65318],`mapped`,[102]],[[65319,65319],`mapped`,[103]],[[65320,65320],`mapped`,[104]],[[65321,65321],`mapped`,[105]],[[65322,65322],`mapped`,[106]],[[65323,65323],`mapped`,[107]],[[65324,65324],`mapped`,[108]],[[65325,65325],`mapped`,[109]],[[65326,65326],`mapped`,[110]],[[65327,65327],`mapped`,[111]],[[65328,65328],`mapped`,[112]],[[65329,65329],`mapped`,[113]],[[65330,65330],`mapped`,[114]],[[65331,65331],`mapped`,[115]],[[65332,65332],`mapped`,[116]],[[65333,65333],`mapped`,[117]],[[65334,65334],`mapped`,[118]],[[65335,65335],`mapped`,[119]],[[65336,65336],`mapped`,[120]],[[65337,65337],`mapped`,[121]],[[65338,65338],`mapped`,[122]],[[65339,65339],`disallowed_STD3_mapped`,[91]],[[65340,65340],`disallowed_STD3_mapped`,[92]],[[65341,65341],`disallowed_STD3_mapped`,[93]],[[65342,65342],`disallowed_STD3_mapped`,[94]],[[65343,65343],`disallowed_STD3_mapped`,[95]],[[65344,65344],`disallowed_STD3_mapped`,[96]],[[65345,65345],`mapped`,[97]],[[65346,65346],`mapped`,[98]],[[65347,65347],`mapped`,[99]],[[65348,65348],`mapped`,[100]],[[65349,65349],`mapped`,[101]],[[65350,65350],`mapped`,[102]],[[65351,65351],`mapped`,[103]],[[65352,65352],`mapped`,[104]],[[65353,65353],`mapped`,[105]],[[65354,65354],`mapped`,[106]],[[65355,65355],`mapped`,[107]],[[65356,65356],`mapped`,[108]],[[65357,65357],`mapped`,[109]],[[65358,65358],`mapped`,[110]],[[65359,65359],`mapped`,[111]],[[65360,65360],`mapped`,[112]],[[65361,65361],`mapped`,[113]],[[65362,65362],`mapped`,[114]],[[65363,65363],`mapped`,[115]],[[65364,65364],`mapped`,[116]],[[65365,65365],`mapped`,[117]],[[65366,65366],`mapped`,[118]],[[65367,65367],`mapped`,[119]],[[65368,65368],`mapped`,[120]],[[65369,65369],`mapped`,[121]],[[65370,65370],`mapped`,[122]],[[65371,65371],`disallowed_STD3_mapped`,[123]],[[65372,65372],`disallowed_STD3_mapped`,[124]],[[65373,65373],`disallowed_STD3_mapped`,[125]],[[65374,65374],`disallowed_STD3_mapped`,[126]],[[65375,65375],`mapped`,[10629]],[[65376,65376],`mapped`,[10630]],[[65377,65377],`mapped`,[46]],[[65378,65378],`mapped`,[12300]],[[65379,65379],`mapped`,[12301]],[[65380,65380],`mapped`,[12289]],[[65381,65381],`mapped`,[12539]],[[65382,65382],`mapped`,[12530]],[[65383,65383],`mapped`,[12449]],[[65384,65384],`mapped`,[12451]],[[65385,65385],`mapped`,[12453]],[[65386,65386],`mapped`,[12455]],[[65387,65387],`mapped`,[12457]],[[65388,65388],`mapped`,[12515]],[[65389,65389],`mapped`,[12517]],[[65390,65390],`mapped`,[12519]],[[65391,65391],`mapped`,[12483]],[[65392,65392],`mapped`,[12540]],[[65393,65393],`mapped`,[12450]],[[65394,65394],`mapped`,[12452]],[[65395,65395],`mapped`,[12454]],[[65396,65396],`mapped`,[12456]],[[65397,65397],`mapped`,[12458]],[[65398,65398],`mapped`,[12459]],[[65399,65399],`mapped`,[12461]],[[65400,65400],`mapped`,[12463]],[[65401,65401],`mapped`,[12465]],[[65402,65402],`mapped`,[12467]],[[65403,65403],`mapped`,[12469]],[[65404,65404],`mapped`,[12471]],[[65405,65405],`mapped`,[12473]],[[65406,65406],`mapped`,[12475]],[[65407,65407],`mapped`,[12477]],[[65408,65408],`mapped`,[12479]],[[65409,65409],`mapped`,[12481]],[[65410,65410],`mapped`,[12484]],[[65411,65411],`mapped`,[12486]],[[65412,65412],`mapped`,[12488]],[[65413,65413],`mapped`,[12490]],[[65414,65414],`mapped`,[12491]],[[65415,65415],`mapped`,[12492]],[[65416,65416],`mapped`,[12493]],[[65417,65417],`mapped`,[12494]],[[65418,65418],`mapped`,[12495]],[[65419,65419],`mapped`,[12498]],[[65420,65420],`mapped`,[12501]],[[65421,65421],`mapped`,[12504]],[[65422,65422],`mapped`,[12507]],[[65423,65423],`mapped`,[12510]],[[65424,65424],`mapped`,[12511]],[[65425,65425],`mapped`,[12512]],[[65426,65426],`mapped`,[12513]],[[65427,65427],`mapped`,[12514]],[[65428,65428],`mapped`,[12516]],[[65429,65429],`mapped`,[12518]],[[65430,65430],`mapped`,[12520]],[[65431,65431],`mapped`,[12521]],[[65432,65432],`mapped`,[12522]],[[65433,65433],`mapped`,[12523]],[[65434,65434],`mapped`,[12524]],[[65435,65435],`mapped`,[12525]],[[65436,65436],`mapped`,[12527]],[[65437,65437],`mapped`,[12531]],[[65438,65438],`mapped`,[12441]],[[65439,65439],`mapped`,[12442]],[[65440,65440],`disallowed`],[[65441,65441],`mapped`,[4352]],[[65442,65442],`mapped`,[4353]],[[65443,65443],`mapped`,[4522]],[[65444,65444],`mapped`,[4354]],[[65445,65445],`mapped`,[4524]],[[65446,65446],`mapped`,[4525]],[[65447,65447],`mapped`,[4355]],[[65448,65448],`mapped`,[4356]],[[65449,65449],`mapped`,[4357]],[[65450,65450],`mapped`,[4528]],[[65451,65451],`mapped`,[4529]],[[65452,65452],`mapped`,[4530]],[[65453,65453],`mapped`,[4531]],[[65454,65454],`mapped`,[4532]],[[65455,65455],`mapped`,[4533]],[[65456,65456],`mapped`,[4378]],[[65457,65457],`mapped`,[4358]],[[65458,65458],`mapped`,[4359]],[[65459,65459],`mapped`,[4360]],[[65460,65460],`mapped`,[4385]],[[65461,65461],`mapped`,[4361]],[[65462,65462],`mapped`,[4362]],[[65463,65463],`mapped`,[4363]],[[65464,65464],`mapped`,[4364]],[[65465,65465],`mapped`,[4365]],[[65466,65466],`mapped`,[4366]],[[65467,65467],`mapped`,[4367]],[[65468,65468],`mapped`,[4368]],[[65469,65469],`mapped`,[4369]],[[65470,65470],`mapped`,[4370]],[[65471,65473],`disallowed`],[[65474,65474],`mapped`,[4449]],[[65475,65475],`mapped`,[4450]],[[65476,65476],`mapped`,[4451]],[[65477,65477],`mapped`,[4452]],[[65478,65478],`mapped`,[4453]],[[65479,65479],`mapped`,[4454]],[[65480,65481],`disallowed`],[[65482,65482],`mapped`,[4455]],[[65483,65483],`mapped`,[4456]],[[65484,65484],`mapped`,[4457]],[[65485,65485],`mapped`,[4458]],[[65486,65486],`mapped`,[4459]],[[65487,65487],`mapped`,[4460]],[[65488,65489],`disallowed`],[[65490,65490],`mapped`,[4461]],[[65491,65491],`mapped`,[4462]],[[65492,65492],`mapped`,[4463]],[[65493,65493],`mapped`,[4464]],[[65494,65494],`mapped`,[4465]],[[65495,65495],`mapped`,[4466]],[[65496,65497],`disallowed`],[[65498,65498],`mapped`,[4467]],[[65499,65499],`mapped`,[4468]],[[65500,65500],`mapped`,[4469]],[[65501,65503],`disallowed`],[[65504,65504],`mapped`,[162]],[[65505,65505],`mapped`,[163]],[[65506,65506],`mapped`,[172]],[[65507,65507],`disallowed_STD3_mapped`,[32,772]],[[65508,65508],`mapped`,[166]],[[65509,65509],`mapped`,[165]],[[65510,65510],`mapped`,[8361]],[[65511,65511],`disallowed`],[[65512,65512],`mapped`,[9474]],[[65513,65513],`mapped`,[8592]],[[65514,65514],`mapped`,[8593]],[[65515,65515],`mapped`,[8594]],[[65516,65516],`mapped`,[8595]],[[65517,65517],`mapped`,[9632]],[[65518,65518],`mapped`,[9675]],[[65519,65528],`disallowed`],[[65529,65531],`disallowed`],[[65532,65532],`disallowed`],[[65533,65533],`disallowed`],[[65534,65535],`disallowed`],[[65536,65547],`valid`],[[65548,65548],`disallowed`],[[65549,65574],`valid`],[[65575,65575],`disallowed`],[[65576,65594],`valid`],[[65595,65595],`disallowed`],[[65596,65597],`valid`],[[65598,65598],`disallowed`],[[65599,65613],`valid`],[[65614,65615],`disallowed`],[[65616,65629],`valid`],[[65630,65663],`disallowed`],[[65664,65786],`valid`],[[65787,65791],`disallowed`],[[65792,65794],`valid`,[],`NV8`],[[65795,65798],`disallowed`],[[65799,65843],`valid`,[],`NV8`],[[65844,65846],`disallowed`],[[65847,65855],`valid`,[],`NV8`],[[65856,65930],`valid`,[],`NV8`],[[65931,65932],`valid`,[],`NV8`],[[65933,65935],`disallowed`],[[65936,65947],`valid`,[],`NV8`],[[65948,65951],`disallowed`],[[65952,65952],`valid`,[],`NV8`],[[65953,65999],`disallowed`],[[66e3,66044],`valid`,[],`NV8`],[[66045,66045],`valid`],[[66046,66175],`disallowed`],[[66176,66204],`valid`],[[66205,66207],`disallowed`],[[66208,66256],`valid`],[[66257,66271],`disallowed`],[[66272,66272],`valid`],[[66273,66299],`valid`,[],`NV8`],[[66300,66303],`disallowed`],[[66304,66334],`valid`],[[66335,66335],`valid`],[[66336,66339],`valid`,[],`NV8`],[[66340,66351],`disallowed`],[[66352,66368],`valid`],[[66369,66369],`valid`,[],`NV8`],[[66370,66377],`valid`],[[66378,66378],`valid`,[],`NV8`],[[66379,66383],`disallowed`],[[66384,66426],`valid`],[[66427,66431],`disallowed`],[[66432,66461],`valid`],[[66462,66462],`disallowed`],[[66463,66463],`valid`,[],`NV8`],[[66464,66499],`valid`],[[66500,66503],`disallowed`],[[66504,66511],`valid`],[[66512,66517],`valid`,[],`NV8`],[[66518,66559],`disallowed`],[[66560,66560],`mapped`,[66600]],[[66561,66561],`mapped`,[66601]],[[66562,66562],`mapped`,[66602]],[[66563,66563],`mapped`,[66603]],[[66564,66564],`mapped`,[66604]],[[66565,66565],`mapped`,[66605]],[[66566,66566],`mapped`,[66606]],[[66567,66567],`mapped`,[66607]],[[66568,66568],`mapped`,[66608]],[[66569,66569],`mapped`,[66609]],[[66570,66570],`mapped`,[66610]],[[66571,66571],`mapped`,[66611]],[[66572,66572],`mapped`,[66612]],[[66573,66573],`mapped`,[66613]],[[66574,66574],`mapped`,[66614]],[[66575,66575],`mapped`,[66615]],[[66576,66576],`mapped`,[66616]],[[66577,66577],`mapped`,[66617]],[[66578,66578],`mapped`,[66618]],[[66579,66579],`mapped`,[66619]],[[66580,66580],`mapped`,[66620]],[[66581,66581],`mapped`,[66621]],[[66582,66582],`mapped`,[66622]],[[66583,66583],`mapped`,[66623]],[[66584,66584],`mapped`,[66624]],[[66585,66585],`mapped`,[66625]],[[66586,66586],`mapped`,[66626]],[[66587,66587],`mapped`,[66627]],[[66588,66588],`mapped`,[66628]],[[66589,66589],`mapped`,[66629]],[[66590,66590],`mapped`,[66630]],[[66591,66591],`mapped`,[66631]],[[66592,66592],`mapped`,[66632]],[[66593,66593],`mapped`,[66633]],[[66594,66594],`mapped`,[66634]],[[66595,66595],`mapped`,[66635]],[[66596,66596],`mapped`,[66636]],[[66597,66597],`mapped`,[66637]],[[66598,66598],`mapped`,[66638]],[[66599,66599],`mapped`,[66639]],[[66600,66637],`valid`],[[66638,66717],`valid`],[[66718,66719],`disallowed`],[[66720,66729],`valid`],[[66730,66815],`disallowed`],[[66816,66855],`valid`],[[66856,66863],`disallowed`],[[66864,66915],`valid`],[[66916,66926],`disallowed`],[[66927,66927],`valid`,[],`NV8`],[[66928,67071],`disallowed`],[[67072,67382],`valid`],[[67383,67391],`disallowed`],[[67392,67413],`valid`],[[67414,67423],`disallowed`],[[67424,67431],`valid`],[[67432,67583],`disallowed`],[[67584,67589],`valid`],[[67590,67591],`disallowed`],[[67592,67592],`valid`],[[67593,67593],`disallowed`],[[67594,67637],`valid`],[[67638,67638],`disallowed`],[[67639,67640],`valid`],[[67641,67643],`disallowed`],[[67644,67644],`valid`],[[67645,67646],`disallowed`],[[67647,67647],`valid`],[[67648,67669],`valid`],[[67670,67670],`disallowed`],[[67671,67679],`valid`,[],`NV8`],[[67680,67702],`valid`],[[67703,67711],`valid`,[],`NV8`],[[67712,67742],`valid`],[[67743,67750],`disallowed`],[[67751,67759],`valid`,[],`NV8`],[[67760,67807],`disallowed`],[[67808,67826],`valid`],[[67827,67827],`disallowed`],[[67828,67829],`valid`],[[67830,67834],`disallowed`],[[67835,67839],`valid`,[],`NV8`],[[67840,67861],`valid`],[[67862,67865],`valid`,[],`NV8`],[[67866,67867],`valid`,[],`NV8`],[[67868,67870],`disallowed`],[[67871,67871],`valid`,[],`NV8`],[[67872,67897],`valid`],[[67898,67902],`disallowed`],[[67903,67903],`valid`,[],`NV8`],[[67904,67967],`disallowed`],[[67968,68023],`valid`],[[68024,68027],`disallowed`],[[68028,68029],`valid`,[],`NV8`],[[68030,68031],`valid`],[[68032,68047],`valid`,[],`NV8`],[[68048,68049],`disallowed`],[[68050,68095],`valid`,[],`NV8`],[[68096,68099],`valid`],[[68100,68100],`disallowed`],[[68101,68102],`valid`],[[68103,68107],`disallowed`],[[68108,68115],`valid`],[[68116,68116],`disallowed`],[[68117,68119],`valid`],[[68120,68120],`disallowed`],[[68121,68147],`valid`],[[68148,68151],`disallowed`],[[68152,68154],`valid`],[[68155,68158],`disallowed`],[[68159,68159],`valid`],[[68160,68167],`valid`,[],`NV8`],[[68168,68175],`disallowed`],[[68176,68184],`valid`,[],`NV8`],[[68185,68191],`disallowed`],[[68192,68220],`valid`],[[68221,68223],`valid`,[],`NV8`],[[68224,68252],`valid`],[[68253,68255],`valid`,[],`NV8`],[[68256,68287],`disallowed`],[[68288,68295],`valid`],[[68296,68296],`valid`,[],`NV8`],[[68297,68326],`valid`],[[68327,68330],`disallowed`],[[68331,68342],`valid`,[],`NV8`],[[68343,68351],`disallowed`],[[68352,68405],`valid`],[[68406,68408],`disallowed`],[[68409,68415],`valid`,[],`NV8`],[[68416,68437],`valid`],[[68438,68439],`disallowed`],[[68440,68447],`valid`,[],`NV8`],[[68448,68466],`valid`],[[68467,68471],`disallowed`],[[68472,68479],`valid`,[],`NV8`],[[68480,68497],`valid`],[[68498,68504],`disallowed`],[[68505,68508],`valid`,[],`NV8`],[[68509,68520],`disallowed`],[[68521,68527],`valid`,[],`NV8`],[[68528,68607],`disallowed`],[[68608,68680],`valid`],[[68681,68735],`disallowed`],[[68736,68736],`mapped`,[68800]],[[68737,68737],`mapped`,[68801]],[[68738,68738],`mapped`,[68802]],[[68739,68739],`mapped`,[68803]],[[68740,68740],`mapped`,[68804]],[[68741,68741],`mapped`,[68805]],[[68742,68742],`mapped`,[68806]],[[68743,68743],`mapped`,[68807]],[[68744,68744],`mapped`,[68808]],[[68745,68745],`mapped`,[68809]],[[68746,68746],`mapped`,[68810]],[[68747,68747],`mapped`,[68811]],[[68748,68748],`mapped`,[68812]],[[68749,68749],`mapped`,[68813]],[[68750,68750],`mapped`,[68814]],[[68751,68751],`mapped`,[68815]],[[68752,68752],`mapped`,[68816]],[[68753,68753],`mapped`,[68817]],[[68754,68754],`mapped`,[68818]],[[68755,68755],`mapped`,[68819]],[[68756,68756],`mapped`,[68820]],[[68757,68757],`mapped`,[68821]],[[68758,68758],`mapped`,[68822]],[[68759,68759],`mapped`,[68823]],[[68760,68760],`mapped`,[68824]],[[68761,68761],`mapped`,[68825]],[[68762,68762],`mapped`,[68826]],[[68763,68763],`mapped`,[68827]],[[68764,68764],`mapped`,[68828]],[[68765,68765],`mapped`,[68829]],[[68766,68766],`mapped`,[68830]],[[68767,68767],`mapped`,[68831]],[[68768,68768],`mapped`,[68832]],[[68769,68769],`mapped`,[68833]],[[68770,68770],`mapped`,[68834]],[[68771,68771],`mapped`,[68835]],[[68772,68772],`mapped`,[68836]],[[68773,68773],`mapped`,[68837]],[[68774,68774],`mapped`,[68838]],[[68775,68775],`mapped`,[68839]],[[68776,68776],`mapped`,[68840]],[[68777,68777],`mapped`,[68841]],[[68778,68778],`mapped`,[68842]],[[68779,68779],`mapped`,[68843]],[[68780,68780],`mapped`,[68844]],[[68781,68781],`mapped`,[68845]],[[68782,68782],`mapped`,[68846]],[[68783,68783],`mapped`,[68847]],[[68784,68784],`mapped`,[68848]],[[68785,68785],`mapped`,[68849]],[[68786,68786],`mapped`,[68850]],[[68787,68799],`disallowed`],[[68800,68850],`valid`],[[68851,68857],`disallowed`],[[68858,68863],`valid`,[],`NV8`],[[68864,69215],`disallowed`],[[69216,69246],`valid`,[],`NV8`],[[69247,69631],`disallowed`],[[69632,69702],`valid`],[[69703,69709],`valid`,[],`NV8`],[[69710,69713],`disallowed`],[[69714,69733],`valid`,[],`NV8`],[[69734,69743],`valid`],[[69744,69758],`disallowed`],[[69759,69759],`valid`],[[69760,69818],`valid`],[[69819,69820],`valid`,[],`NV8`],[[69821,69821],`disallowed`],[[69822,69825],`valid`,[],`NV8`],[[69826,69839],`disallowed`],[[69840,69864],`valid`],[[69865,69871],`disallowed`],[[69872,69881],`valid`],[[69882,69887],`disallowed`],[[69888,69940],`valid`],[[69941,69941],`disallowed`],[[69942,69951],`valid`],[[69952,69955],`valid`,[],`NV8`],[[69956,69967],`disallowed`],[[69968,70003],`valid`],[[70004,70005],`valid`,[],`NV8`],[[70006,70006],`valid`],[[70007,70015],`disallowed`],[[70016,70084],`valid`],[[70085,70088],`valid`,[],`NV8`],[[70089,70089],`valid`,[],`NV8`],[[70090,70092],`valid`],[[70093,70093],`valid`,[],`NV8`],[[70094,70095],`disallowed`],[[70096,70105],`valid`],[[70106,70106],`valid`],[[70107,70107],`valid`,[],`NV8`],[[70108,70108],`valid`],[[70109,70111],`valid`,[],`NV8`],[[70112,70112],`disallowed`],[[70113,70132],`valid`,[],`NV8`],[[70133,70143],`disallowed`],[[70144,70161],`valid`],[[70162,70162],`disallowed`],[[70163,70199],`valid`],[[70200,70205],`valid`,[],`NV8`],[[70206,70271],`disallowed`],[[70272,70278],`valid`],[[70279,70279],`disallowed`],[[70280,70280],`valid`],[[70281,70281],`disallowed`],[[70282,70285],`valid`],[[70286,70286],`disallowed`],[[70287,70301],`valid`],[[70302,70302],`disallowed`],[[70303,70312],`valid`],[[70313,70313],`valid`,[],`NV8`],[[70314,70319],`disallowed`],[[70320,70378],`valid`],[[70379,70383],`disallowed`],[[70384,70393],`valid`],[[70394,70399],`disallowed`],[[70400,70400],`valid`],[[70401,70403],`valid`],[[70404,70404],`disallowed`],[[70405,70412],`valid`],[[70413,70414],`disallowed`],[[70415,70416],`valid`],[[70417,70418],`disallowed`],[[70419,70440],`valid`],[[70441,70441],`disallowed`],[[70442,70448],`valid`],[[70449,70449],`disallowed`],[[70450,70451],`valid`],[[70452,70452],`disallowed`],[[70453,70457],`valid`],[[70458,70459],`disallowed`],[[70460,70468],`valid`],[[70469,70470],`disallowed`],[[70471,70472],`valid`],[[70473,70474],`disallowed`],[[70475,70477],`valid`],[[70478,70479],`disallowed`],[[70480,70480],`valid`],[[70481,70486],`disallowed`],[[70487,70487],`valid`],[[70488,70492],`disallowed`],[[70493,70499],`valid`],[[70500,70501],`disallowed`],[[70502,70508],`valid`],[[70509,70511],`disallowed`],[[70512,70516],`valid`],[[70517,70783],`disallowed`],[[70784,70853],`valid`],[[70854,70854],`valid`,[],`NV8`],[[70855,70855],`valid`],[[70856,70863],`disallowed`],[[70864,70873],`valid`],[[70874,71039],`disallowed`],[[71040,71093],`valid`],[[71094,71095],`disallowed`],[[71096,71104],`valid`],[[71105,71113],`valid`,[],`NV8`],[[71114,71127],`valid`,[],`NV8`],[[71128,71133],`valid`],[[71134,71167],`disallowed`],[[71168,71232],`valid`],[[71233,71235],`valid`,[],`NV8`],[[71236,71236],`valid`],[[71237,71247],`disallowed`],[[71248,71257],`valid`],[[71258,71295],`disallowed`],[[71296,71351],`valid`],[[71352,71359],`disallowed`],[[71360,71369],`valid`],[[71370,71423],`disallowed`],[[71424,71449],`valid`],[[71450,71452],`disallowed`],[[71453,71467],`valid`],[[71468,71471],`disallowed`],[[71472,71481],`valid`],[[71482,71487],`valid`,[],`NV8`],[[71488,71839],`disallowed`],[[71840,71840],`mapped`,[71872]],[[71841,71841],`mapped`,[71873]],[[71842,71842],`mapped`,[71874]],[[71843,71843],`mapped`,[71875]],[[71844,71844],`mapped`,[71876]],[[71845,71845],`mapped`,[71877]],[[71846,71846],`mapped`,[71878]],[[71847,71847],`mapped`,[71879]],[[71848,71848],`mapped`,[71880]],[[71849,71849],`mapped`,[71881]],[[71850,71850],`mapped`,[71882]],[[71851,71851],`mapped`,[71883]],[[71852,71852],`mapped`,[71884]],[[71853,71853],`mapped`,[71885]],[[71854,71854],`mapped`,[71886]],[[71855,71855],`mapped`,[71887]],[[71856,71856],`mapped`,[71888]],[[71857,71857],`mapped`,[71889]],[[71858,71858],`mapped`,[71890]],[[71859,71859],`mapped`,[71891]],[[71860,71860],`mapped`,[71892]],[[71861,71861],`mapped`,[71893]],[[71862,71862],`mapped`,[71894]],[[71863,71863],`mapped`,[71895]],[[71864,71864],`mapped`,[71896]],[[71865,71865],`mapped`,[71897]],[[71866,71866],`mapped`,[71898]],[[71867,71867],`mapped`,[71899]],[[71868,71868],`mapped`,[71900]],[[71869,71869],`mapped`,[71901]],[[71870,71870],`mapped`,[71902]],[[71871,71871],`mapped`,[71903]],[[71872,71913],`valid`],[[71914,71922],`valid`,[],`NV8`],[[71923,71934],`disallowed`],[[71935,71935],`valid`],[[71936,72383],`disallowed`],[[72384,72440],`valid`],[[72441,73727],`disallowed`],[[73728,74606],`valid`],[[74607,74648],`valid`],[[74649,74649],`valid`],[[74650,74751],`disallowed`],[[74752,74850],`valid`,[],`NV8`],[[74851,74862],`valid`,[],`NV8`],[[74863,74863],`disallowed`],[[74864,74867],`valid`,[],`NV8`],[[74868,74868],`valid`,[],`NV8`],[[74869,74879],`disallowed`],[[74880,75075],`valid`],[[75076,77823],`disallowed`],[[77824,78894],`valid`],[[78895,82943],`disallowed`],[[82944,83526],`valid`],[[83527,92159],`disallowed`],[[92160,92728],`valid`],[[92729,92735],`disallowed`],[[92736,92766],`valid`],[[92767,92767],`disallowed`],[[92768,92777],`valid`],[[92778,92781],`disallowed`],[[92782,92783],`valid`,[],`NV8`],[[92784,92879],`disallowed`],[[92880,92909],`valid`],[[92910,92911],`disallowed`],[[92912,92916],`valid`],[[92917,92917],`valid`,[],`NV8`],[[92918,92927],`disallowed`],[[92928,92982],`valid`],[[92983,92991],`valid`,[],`NV8`],[[92992,92995],`valid`],[[92996,92997],`valid`,[],`NV8`],[[92998,93007],`disallowed`],[[93008,93017],`valid`],[[93018,93018],`disallowed`],[[93019,93025],`valid`,[],`NV8`],[[93026,93026],`disallowed`],[[93027,93047],`valid`],[[93048,93052],`disallowed`],[[93053,93071],`valid`],[[93072,93951],`disallowed`],[[93952,94020],`valid`],[[94021,94031],`disallowed`],[[94032,94078],`valid`],[[94079,94094],`disallowed`],[[94095,94111],`valid`],[[94112,110591],`disallowed`],[[110592,110593],`valid`],[[110594,113663],`disallowed`],[[113664,113770],`valid`],[[113771,113775],`disallowed`],[[113776,113788],`valid`],[[113789,113791],`disallowed`],[[113792,113800],`valid`],[[113801,113807],`disallowed`],[[113808,113817],`valid`],[[113818,113819],`disallowed`],[[113820,113820],`valid`,[],`NV8`],[[113821,113822],`valid`],[[113823,113823],`valid`,[],`NV8`],[[113824,113827],`ignored`],[[113828,118783],`disallowed`],[[118784,119029],`valid`,[],`NV8`],[[119030,119039],`disallowed`],[[119040,119078],`valid`,[],`NV8`],[[119079,119080],`disallowed`],[[119081,119081],`valid`,[],`NV8`],[[119082,119133],`valid`,[],`NV8`],[[119134,119134],`mapped`,[119127,119141]],[[119135,119135],`mapped`,[119128,119141]],[[119136,119136],`mapped`,[119128,119141,119150]],[[119137,119137],`mapped`,[119128,119141,119151]],[[119138,119138],`mapped`,[119128,119141,119152]],[[119139,119139],`mapped`,[119128,119141,119153]],[[119140,119140],`mapped`,[119128,119141,119154]],[[119141,119154],`valid`,[],`NV8`],[[119155,119162],`disallowed`],[[119163,119226],`valid`,[],`NV8`],[[119227,119227],`mapped`,[119225,119141]],[[119228,119228],`mapped`,[119226,119141]],[[119229,119229],`mapped`,[119225,119141,119150]],[[119230,119230],`mapped`,[119226,119141,119150]],[[119231,119231],`mapped`,[119225,119141,119151]],[[119232,119232],`mapped`,[119226,119141,119151]],[[119233,119261],`valid`,[],`NV8`],[[119262,119272],`valid`,[],`NV8`],[[119273,119295],`disallowed`],[[119296,119365],`valid`,[],`NV8`],[[119366,119551],`disallowed`],[[119552,119638],`valid`,[],`NV8`],[[119639,119647],`disallowed`],[[119648,119665],`valid`,[],`NV8`],[[119666,119807],`disallowed`],[[119808,119808],`mapped`,[97]],[[119809,119809],`mapped`,[98]],[[119810,119810],`mapped`,[99]],[[119811,119811],`mapped`,[100]],[[119812,119812],`mapped`,[101]],[[119813,119813],`mapped`,[102]],[[119814,119814],`mapped`,[103]],[[119815,119815],`mapped`,[104]],[[119816,119816],`mapped`,[105]],[[119817,119817],`mapped`,[106]],[[119818,119818],`mapped`,[107]],[[119819,119819],`mapped`,[108]],[[119820,119820],`mapped`,[109]],[[119821,119821],`mapped`,[110]],[[119822,119822],`mapped`,[111]],[[119823,119823],`mapped`,[112]],[[119824,119824],`mapped`,[113]],[[119825,119825],`mapped`,[114]],[[119826,119826],`mapped`,[115]],[[119827,119827],`mapped`,[116]],[[119828,119828],`mapped`,[117]],[[119829,119829],`mapped`,[118]],[[119830,119830],`mapped`,[119]],[[119831,119831],`mapped`,[120]],[[119832,119832],`mapped`,[121]],[[119833,119833],`mapped`,[122]],[[119834,119834],`mapped`,[97]],[[119835,119835],`mapped`,[98]],[[119836,119836],`mapped`,[99]],[[119837,119837],`mapped`,[100]],[[119838,119838],`mapped`,[101]],[[119839,119839],`mapped`,[102]],[[119840,119840],`mapped`,[103]],[[119841,119841],`mapped`,[104]],[[119842,119842],`mapped`,[105]],[[119843,119843],`mapped`,[106]],[[119844,119844],`mapped`,[107]],[[119845,119845],`mapped`,[108]],[[119846,119846],`mapped`,[109]],[[119847,119847],`mapped`,[110]],[[119848,119848],`mapped`,[111]],[[119849,119849],`mapped`,[112]],[[119850,119850],`mapped`,[113]],[[119851,119851],`mapped`,[114]],[[119852,119852],`mapped`,[115]],[[119853,119853],`mapped`,[116]],[[119854,119854],`mapped`,[117]],[[119855,119855],`mapped`,[118]],[[119856,119856],`mapped`,[119]],[[119857,119857],`mapped`,[120]],[[119858,119858],`mapped`,[121]],[[119859,119859],`mapped`,[122]],[[119860,119860],`mapped`,[97]],[[119861,119861],`mapped`,[98]],[[119862,119862],`mapped`,[99]],[[119863,119863],`mapped`,[100]],[[119864,119864],`mapped`,[101]],[[119865,119865],`mapped`,[102]],[[119866,119866],`mapped`,[103]],[[119867,119867],`mapped`,[104]],[[119868,119868],`mapped`,[105]],[[119869,119869],`mapped`,[106]],[[119870,119870],`mapped`,[107]],[[119871,119871],`mapped`,[108]],[[119872,119872],`mapped`,[109]],[[119873,119873],`mapped`,[110]],[[119874,119874],`mapped`,[111]],[[119875,119875],`mapped`,[112]],[[119876,119876],`mapped`,[113]],[[119877,119877],`mapped`,[114]],[[119878,119878],`mapped`,[115]],[[119879,119879],`mapped`,[116]],[[119880,119880],`mapped`,[117]],[[119881,119881],`mapped`,[118]],[[119882,119882],`mapped`,[119]],[[119883,119883],`mapped`,[120]],[[119884,119884],`mapped`,[121]],[[119885,119885],`mapped`,[122]],[[119886,119886],`mapped`,[97]],[[119887,119887],`mapped`,[98]],[[119888,119888],`mapped`,[99]],[[119889,119889],`mapped`,[100]],[[119890,119890],`mapped`,[101]],[[119891,119891],`mapped`,[102]],[[119892,119892],`mapped`,[103]],[[119893,119893],`disallowed`],[[119894,119894],`mapped`,[105]],[[119895,119895],`mapped`,[106]],[[119896,119896],`mapped`,[107]],[[119897,119897],`mapped`,[108]],[[119898,119898],`mapped`,[109]],[[119899,119899],`mapped`,[110]],[[119900,119900],`mapped`,[111]],[[119901,119901],`mapped`,[112]],[[119902,119902],`mapped`,[113]],[[119903,119903],`mapped`,[114]],[[119904,119904],`mapped`,[115]],[[119905,119905],`mapped`,[116]],[[119906,119906],`mapped`,[117]],[[119907,119907],`mapped`,[118]],[[119908,119908],`mapped`,[119]],[[119909,119909],`mapped`,[120]],[[119910,119910],`mapped`,[121]],[[119911,119911],`mapped`,[122]],[[119912,119912],`mapped`,[97]],[[119913,119913],`mapped`,[98]],[[119914,119914],`mapped`,[99]],[[119915,119915],`mapped`,[100]],[[119916,119916],`mapped`,[101]],[[119917,119917],`mapped`,[102]],[[119918,119918],`mapped`,[103]],[[119919,119919],`mapped`,[104]],[[119920,119920],`mapped`,[105]],[[119921,119921],`mapped`,[106]],[[119922,119922],`mapped`,[107]],[[119923,119923],`mapped`,[108]],[[119924,119924],`mapped`,[109]],[[119925,119925],`mapped`,[110]],[[119926,119926],`mapped`,[111]],[[119927,119927],`mapped`,[112]],[[119928,119928],`mapped`,[113]],[[119929,119929],`mapped`,[114]],[[119930,119930],`mapped`,[115]],[[119931,119931],`mapped`,[116]],[[119932,119932],`mapped`,[117]],[[119933,119933],`mapped`,[118]],[[119934,119934],`mapped`,[119]],[[119935,119935],`mapped`,[120]],[[119936,119936],`mapped`,[121]],[[119937,119937],`mapped`,[122]],[[119938,119938],`mapped`,[97]],[[119939,119939],`mapped`,[98]],[[119940,119940],`mapped`,[99]],[[119941,119941],`mapped`,[100]],[[119942,119942],`mapped`,[101]],[[119943,119943],`mapped`,[102]],[[119944,119944],`mapped`,[103]],[[119945,119945],`mapped`,[104]],[[119946,119946],`mapped`,[105]],[[119947,119947],`mapped`,[106]],[[119948,119948],`mapped`,[107]],[[119949,119949],`mapped`,[108]],[[119950,119950],`mapped`,[109]],[[119951,119951],`mapped`,[110]],[[119952,119952],`mapped`,[111]],[[119953,119953],`mapped`,[112]],[[119954,119954],`mapped`,[113]],[[119955,119955],`mapped`,[114]],[[119956,119956],`mapped`,[115]],[[119957,119957],`mapped`,[116]],[[119958,119958],`mapped`,[117]],[[119959,119959],`mapped`,[118]],[[119960,119960],`mapped`,[119]],[[119961,119961],`mapped`,[120]],[[119962,119962],`mapped`,[121]],[[119963,119963],`mapped`,[122]],[[119964,119964],`mapped`,[97]],[[119965,119965],`disallowed`],[[119966,119966],`mapped`,[99]],[[119967,119967],`mapped`,[100]],[[119968,119969],`disallowed`],[[119970,119970],`mapped`,[103]],[[119971,119972],`disallowed`],[[119973,119973],`mapped`,[106]],[[119974,119974],`mapped`,[107]],[[119975,119976],`disallowed`],[[119977,119977],`mapped`,[110]],[[119978,119978],`mapped`,[111]],[[119979,119979],`mapped`,[112]],[[119980,119980],`mapped`,[113]],[[119981,119981],`disallowed`],[[119982,119982],`mapped`,[115]],[[119983,119983],`mapped`,[116]],[[119984,119984],`mapped`,[117]],[[119985,119985],`mapped`,[118]],[[119986,119986],`mapped`,[119]],[[119987,119987],`mapped`,[120]],[[119988,119988],`mapped`,[121]],[[119989,119989],`mapped`,[122]],[[119990,119990],`mapped`,[97]],[[119991,119991],`mapped`,[98]],[[119992,119992],`mapped`,[99]],[[119993,119993],`mapped`,[100]],[[119994,119994],`disallowed`],[[119995,119995],`mapped`,[102]],[[119996,119996],`disallowed`],[[119997,119997],`mapped`,[104]],[[119998,119998],`mapped`,[105]],[[119999,119999],`mapped`,[106]],[[12e4,12e4],`mapped`,[107]],[[120001,120001],`mapped`,[108]],[[120002,120002],`mapped`,[109]],[[120003,120003],`mapped`,[110]],[[120004,120004],`disallowed`],[[120005,120005],`mapped`,[112]],[[120006,120006],`mapped`,[113]],[[120007,120007],`mapped`,[114]],[[120008,120008],`mapped`,[115]],[[120009,120009],`mapped`,[116]],[[120010,120010],`mapped`,[117]],[[120011,120011],`mapped`,[118]],[[120012,120012],`mapped`,[119]],[[120013,120013],`mapped`,[120]],[[120014,120014],`mapped`,[121]],[[120015,120015],`mapped`,[122]],[[120016,120016],`mapped`,[97]],[[120017,120017],`mapped`,[98]],[[120018,120018],`mapped`,[99]],[[120019,120019],`mapped`,[100]],[[120020,120020],`mapped`,[101]],[[120021,120021],`mapped`,[102]],[[120022,120022],`mapped`,[103]],[[120023,120023],`mapped`,[104]],[[120024,120024],`mapped`,[105]],[[120025,120025],`mapped`,[106]],[[120026,120026],`mapped`,[107]],[[120027,120027],`mapped`,[108]],[[120028,120028],`mapped`,[109]],[[120029,120029],`mapped`,[110]],[[120030,120030],`mapped`,[111]],[[120031,120031],`mapped`,[112]],[[120032,120032],`mapped`,[113]],[[120033,120033],`mapped`,[114]],[[120034,120034],`mapped`,[115]],[[120035,120035],`mapped`,[116]],[[120036,120036],`mapped`,[117]],[[120037,120037],`mapped`,[118]],[[120038,120038],`mapped`,[119]],[[120039,120039],`mapped`,[120]],[[120040,120040],`mapped`,[121]],[[120041,120041],`mapped`,[122]],[[120042,120042],`mapped`,[97]],[[120043,120043],`mapped`,[98]],[[120044,120044],`mapped`,[99]],[[120045,120045],`mapped`,[100]],[[120046,120046],`mapped`,[101]],[[120047,120047],`mapped`,[102]],[[120048,120048],`mapped`,[103]],[[120049,120049],`mapped`,[104]],[[120050,120050],`mapped`,[105]],[[120051,120051],`mapped`,[106]],[[120052,120052],`mapped`,[107]],[[120053,120053],`mapped`,[108]],[[120054,120054],`mapped`,[109]],[[120055,120055],`mapped`,[110]],[[120056,120056],`mapped`,[111]],[[120057,120057],`mapped`,[112]],[[120058,120058],`mapped`,[113]],[[120059,120059],`mapped`,[114]],[[120060,120060],`mapped`,[115]],[[120061,120061],`mapped`,[116]],[[120062,120062],`mapped`,[117]],[[120063,120063],`mapped`,[118]],[[120064,120064],`mapped`,[119]],[[120065,120065],`mapped`,[120]],[[120066,120066],`mapped`,[121]],[[120067,120067],`mapped`,[122]],[[120068,120068],`mapped`,[97]],[[120069,120069],`mapped`,[98]],[[120070,120070],`disallowed`],[[120071,120071],`mapped`,[100]],[[120072,120072],`mapped`,[101]],[[120073,120073],`mapped`,[102]],[[120074,120074],`mapped`,[103]],[[120075,120076],`disallowed`],[[120077,120077],`mapped`,[106]],[[120078,120078],`mapped`,[107]],[[120079,120079],`mapped`,[108]],[[120080,120080],`mapped`,[109]],[[120081,120081],`mapped`,[110]],[[120082,120082],`mapped`,[111]],[[120083,120083],`mapped`,[112]],[[120084,120084],`mapped`,[113]],[[120085,120085],`disallowed`],[[120086,120086],`mapped`,[115]],[[120087,120087],`mapped`,[116]],[[120088,120088],`mapped`,[117]],[[120089,120089],`mapped`,[118]],[[120090,120090],`mapped`,[119]],[[120091,120091],`mapped`,[120]],[[120092,120092],`mapped`,[121]],[[120093,120093],`disallowed`],[[120094,120094],`mapped`,[97]],[[120095,120095],`mapped`,[98]],[[120096,120096],`mapped`,[99]],[[120097,120097],`mapped`,[100]],[[120098,120098],`mapped`,[101]],[[120099,120099],`mapped`,[102]],[[120100,120100],`mapped`,[103]],[[120101,120101],`mapped`,[104]],[[120102,120102],`mapped`,[105]],[[120103,120103],`mapped`,[106]],[[120104,120104],`mapped`,[107]],[[120105,120105],`mapped`,[108]],[[120106,120106],`mapped`,[109]],[[120107,120107],`mapped`,[110]],[[120108,120108],`mapped`,[111]],[[120109,120109],`mapped`,[112]],[[120110,120110],`mapped`,[113]],[[120111,120111],`mapped`,[114]],[[120112,120112],`mapped`,[115]],[[120113,120113],`mapped`,[116]],[[120114,120114],`mapped`,[117]],[[120115,120115],`mapped`,[118]],[[120116,120116],`mapped`,[119]],[[120117,120117],`mapped`,[120]],[[120118,120118],`mapped`,[121]],[[120119,120119],`mapped`,[122]],[[120120,120120],`mapped`,[97]],[[120121,120121],`mapped`,[98]],[[120122,120122],`disallowed`],[[120123,120123],`mapped`,[100]],[[120124,120124],`mapped`,[101]],[[120125,120125],`mapped`,[102]],[[120126,120126],`mapped`,[103]],[[120127,120127],`disallowed`],[[120128,120128],`mapped`,[105]],[[120129,120129],`mapped`,[106]],[[120130,120130],`mapped`,[107]],[[120131,120131],`mapped`,[108]],[[120132,120132],`mapped`,[109]],[[120133,120133],`disallowed`],[[120134,120134],`mapped`,[111]],[[120135,120137],`disallowed`],[[120138,120138],`mapped`,[115]],[[120139,120139],`mapped`,[116]],[[120140,120140],`mapped`,[117]],[[120141,120141],`mapped`,[118]],[[120142,120142],`mapped`,[119]],[[120143,120143],`mapped`,[120]],[[120144,120144],`mapped`,[121]],[[120145,120145],`disallowed`],[[120146,120146],`mapped`,[97]],[[120147,120147],`mapped`,[98]],[[120148,120148],`mapped`,[99]],[[120149,120149],`mapped`,[100]],[[120150,120150],`mapped`,[101]],[[120151,120151],`mapped`,[102]],[[120152,120152],`mapped`,[103]],[[120153,120153],`mapped`,[104]],[[120154,120154],`mapped`,[105]],[[120155,120155],`mapped`,[106]],[[120156,120156],`mapped`,[107]],[[120157,120157],`mapped`,[108]],[[120158,120158],`mapped`,[109]],[[120159,120159],`mapped`,[110]],[[120160,120160],`mapped`,[111]],[[120161,120161],`mapped`,[112]],[[120162,120162],`mapped`,[113]],[[120163,120163],`mapped`,[114]],[[120164,120164],`mapped`,[115]],[[120165,120165],`mapped`,[116]],[[120166,120166],`mapped`,[117]],[[120167,120167],`mapped`,[118]],[[120168,120168],`mapped`,[119]],[[120169,120169],`mapped`,[120]],[[120170,120170],`mapped`,[121]],[[120171,120171],`mapped`,[122]],[[120172,120172],`mapped`,[97]],[[120173,120173],`mapped`,[98]],[[120174,120174],`mapped`,[99]],[[120175,120175],`mapped`,[100]],[[120176,120176],`mapped`,[101]],[[120177,120177],`mapped`,[102]],[[120178,120178],`mapped`,[103]],[[120179,120179],`mapped`,[104]],[[120180,120180],`mapped`,[105]],[[120181,120181],`mapped`,[106]],[[120182,120182],`mapped`,[107]],[[120183,120183],`mapped`,[108]],[[120184,120184],`mapped`,[109]],[[120185,120185],`mapped`,[110]],[[120186,120186],`mapped`,[111]],[[120187,120187],`mapped`,[112]],[[120188,120188],`mapped`,[113]],[[120189,120189],`mapped`,[114]],[[120190,120190],`mapped`,[115]],[[120191,120191],`mapped`,[116]],[[120192,120192],`mapped`,[117]],[[120193,120193],`mapped`,[118]],[[120194,120194],`mapped`,[119]],[[120195,120195],`mapped`,[120]],[[120196,120196],`mapped`,[121]],[[120197,120197],`mapped`,[122]],[[120198,120198],`mapped`,[97]],[[120199,120199],`mapped`,[98]],[[120200,120200],`mapped`,[99]],[[120201,120201],`mapped`,[100]],[[120202,120202],`mapped`,[101]],[[120203,120203],`mapped`,[102]],[[120204,120204],`mapped`,[103]],[[120205,120205],`mapped`,[104]],[[120206,120206],`mapped`,[105]],[[120207,120207],`mapped`,[106]],[[120208,120208],`mapped`,[107]],[[120209,120209],`mapped`,[108]],[[120210,120210],`mapped`,[109]],[[120211,120211],`mapped`,[110]],[[120212,120212],`mapped`,[111]],[[120213,120213],`mapped`,[112]],[[120214,120214],`mapped`,[113]],[[120215,120215],`mapped`,[114]],[[120216,120216],`mapped`,[115]],[[120217,120217],`mapped`,[116]],[[120218,120218],`mapped`,[117]],[[120219,120219],`mapped`,[118]],[[120220,120220],`mapped`,[119]],[[120221,120221],`mapped`,[120]],[[120222,120222],`mapped`,[121]],[[120223,120223],`mapped`,[122]],[[120224,120224],`mapped`,[97]],[[120225,120225],`mapped`,[98]],[[120226,120226],`mapped`,[99]],[[120227,120227],`mapped`,[100]],[[120228,120228],`mapped`,[101]],[[120229,120229],`mapped`,[102]],[[120230,120230],`mapped`,[103]],[[120231,120231],`mapped`,[104]],[[120232,120232],`mapped`,[105]],[[120233,120233],`mapped`,[106]],[[120234,120234],`mapped`,[107]],[[120235,120235],`mapped`,[108]],[[120236,120236],`mapped`,[109]],[[120237,120237],`mapped`,[110]],[[120238,120238],`mapped`,[111]],[[120239,120239],`mapped`,[112]],[[120240,120240],`mapped`,[113]],[[120241,120241],`mapped`,[114]],[[120242,120242],`mapped`,[115]],[[120243,120243],`mapped`,[116]],[[120244,120244],`mapped`,[117]],[[120245,120245],`mapped`,[118]],[[120246,120246],`mapped`,[119]],[[120247,120247],`mapped`,[120]],[[120248,120248],`mapped`,[121]],[[120249,120249],`mapped`,[122]],[[120250,120250],`mapped`,[97]],[[120251,120251],`mapped`,[98]],[[120252,120252],`mapped`,[99]],[[120253,120253],`mapped`,[100]],[[120254,120254],`mapped`,[101]],[[120255,120255],`mapped`,[102]],[[120256,120256],`mapped`,[103]],[[120257,120257],`mapped`,[104]],[[120258,120258],`mapped`,[105]],[[120259,120259],`mapped`,[106]],[[120260,120260],`mapped`,[107]],[[120261,120261],`mapped`,[108]],[[120262,120262],`mapped`,[109]],[[120263,120263],`mapped`,[110]],[[120264,120264],`mapped`,[111]],[[120265,120265],`mapped`,[112]],[[120266,120266],`mapped`,[113]],[[120267,120267],`mapped`,[114]],[[120268,120268],`mapped`,[115]],[[120269,120269],`mapped`,[116]],[[120270,120270],`mapped`,[117]],[[120271,120271],`mapped`,[118]],[[120272,120272],`mapped`,[119]],[[120273,120273],`mapped`,[120]],[[120274,120274],`mapped`,[121]],[[120275,120275],`mapped`,[122]],[[120276,120276],`mapped`,[97]],[[120277,120277],`mapped`,[98]],[[120278,120278],`mapped`,[99]],[[120279,120279],`mapped`,[100]],[[120280,120280],`mapped`,[101]],[[120281,120281],`mapped`,[102]],[[120282,120282],`mapped`,[103]],[[120283,120283],`mapped`,[104]],[[120284,120284],`mapped`,[105]],[[120285,120285],`mapped`,[106]],[[120286,120286],`mapped`,[107]],[[120287,120287],`mapped`,[108]],[[120288,120288],`mapped`,[109]],[[120289,120289],`mapped`,[110]],[[120290,120290],`mapped`,[111]],[[120291,120291],`mapped`,[112]],[[120292,120292],`mapped`,[113]],[[120293,120293],`mapped`,[114]],[[120294,120294],`mapped`,[115]],[[120295,120295],`mapped`,[116]],[[120296,120296],`mapped`,[117]],[[120297,120297],`mapped`,[118]],[[120298,120298],`mapped`,[119]],[[120299,120299],`mapped`,[120]],[[120300,120300],`mapped`,[121]],[[120301,120301],`mapped`,[122]],[[120302,120302],`mapped`,[97]],[[120303,120303],`mapped`,[98]],[[120304,120304],`mapped`,[99]],[[120305,120305],`mapped`,[100]],[[120306,120306],`mapped`,[101]],[[120307,120307],`mapped`,[102]],[[120308,120308],`mapped`,[103]],[[120309,120309],`mapped`,[104]],[[120310,120310],`mapped`,[105]],[[120311,120311],`mapped`,[106]],[[120312,120312],`mapped`,[107]],[[120313,120313],`mapped`,[108]],[[120314,120314],`mapped`,[109]],[[120315,120315],`mapped`,[110]],[[120316,120316],`mapped`,[111]],[[120317,120317],`mapped`,[112]],[[120318,120318],`mapped`,[113]],[[120319,120319],`mapped`,[114]],[[120320,120320],`mapped`,[115]],[[120321,120321],`mapped`,[116]],[[120322,120322],`mapped`,[117]],[[120323,120323],`mapped`,[118]],[[120324,120324],`mapped`,[119]],[[120325,120325],`mapped`,[120]],[[120326,120326],`mapped`,[121]],[[120327,120327],`mapped`,[122]],[[120328,120328],`mapped`,[97]],[[120329,120329],`mapped`,[98]],[[120330,120330],`mapped`,[99]],[[120331,120331],`mapped`,[100]],[[120332,120332],`mapped`,[101]],[[120333,120333],`mapped`,[102]],[[120334,120334],`mapped`,[103]],[[120335,120335],`mapped`,[104]],[[120336,120336],`mapped`,[105]],[[120337,120337],`mapped`,[106]],[[120338,120338],`mapped`,[107]],[[120339,120339],`mapped`,[108]],[[120340,120340],`mapped`,[109]],[[120341,120341],`mapped`,[110]],[[120342,120342],`mapped`,[111]],[[120343,120343],`mapped`,[112]],[[120344,120344],`mapped`,[113]],[[120345,120345],`mapped`,[114]],[[120346,120346],`mapped`,[115]],[[120347,120347],`mapped`,[116]],[[120348,120348],`mapped`,[117]],[[120349,120349],`mapped`,[118]],[[120350,120350],`mapped`,[119]],[[120351,120351],`mapped`,[120]],[[120352,120352],`mapped`,[121]],[[120353,120353],`mapped`,[122]],[[120354,120354],`mapped`,[97]],[[120355,120355],`mapped`,[98]],[[120356,120356],`mapped`,[99]],[[120357,120357],`mapped`,[100]],[[120358,120358],`mapped`,[101]],[[120359,120359],`mapped`,[102]],[[120360,120360],`mapped`,[103]],[[120361,120361],`mapped`,[104]],[[120362,120362],`mapped`,[105]],[[120363,120363],`mapped`,[106]],[[120364,120364],`mapped`,[107]],[[120365,120365],`mapped`,[108]],[[120366,120366],`mapped`,[109]],[[120367,120367],`mapped`,[110]],[[120368,120368],`mapped`,[111]],[[120369,120369],`mapped`,[112]],[[120370,120370],`mapped`,[113]],[[120371,120371],`mapped`,[114]],[[120372,120372],`mapped`,[115]],[[120373,120373],`mapped`,[116]],[[120374,120374],`mapped`,[117]],[[120375,120375],`mapped`,[118]],[[120376,120376],`mapped`,[119]],[[120377,120377],`mapped`,[120]],[[120378,120378],`mapped`,[121]],[[120379,120379],`mapped`,[122]],[[120380,120380],`mapped`,[97]],[[120381,120381],`mapped`,[98]],[[120382,120382],`mapped`,[99]],[[120383,120383],`mapped`,[100]],[[120384,120384],`mapped`,[101]],[[120385,120385],`mapped`,[102]],[[120386,120386],`mapped`,[103]],[[120387,120387],`mapped`,[104]],[[120388,120388],`mapped`,[105]],[[120389,120389],`mapped`,[106]],[[120390,120390],`mapped`,[107]],[[120391,120391],`mapped`,[108]],[[120392,120392],`mapped`,[109]],[[120393,120393],`mapped`,[110]],[[120394,120394],`mapped`,[111]],[[120395,120395],`mapped`,[112]],[[120396,120396],`mapped`,[113]],[[120397,120397],`mapped`,[114]],[[120398,120398],`mapped`,[115]],[[120399,120399],`mapped`,[116]],[[120400,120400],`mapped`,[117]],[[120401,120401],`mapped`,[118]],[[120402,120402],`mapped`,[119]],[[120403,120403],`mapped`,[120]],[[120404,120404],`mapped`,[121]],[[120405,120405],`mapped`,[122]],[[120406,120406],`mapped`,[97]],[[120407,120407],`mapped`,[98]],[[120408,120408],`mapped`,[99]],[[120409,120409],`mapped`,[100]],[[120410,120410],`mapped`,[101]],[[120411,120411],`mapped`,[102]],[[120412,120412],`mapped`,[103]],[[120413,120413],`mapped`,[104]],[[120414,120414],`mapped`,[105]],[[120415,120415],`mapped`,[106]],[[120416,120416],`mapped`,[107]],[[120417,120417],`mapped`,[108]],[[120418,120418],`mapped`,[109]],[[120419,120419],`mapped`,[110]],[[120420,120420],`mapped`,[111]],[[120421,120421],`mapped`,[112]],[[120422,120422],`mapped`,[113]],[[120423,120423],`mapped`,[114]],[[120424,120424],`mapped`,[115]],[[120425,120425],`mapped`,[116]],[[120426,120426],`mapped`,[117]],[[120427,120427],`mapped`,[118]],[[120428,120428],`mapped`,[119]],[[120429,120429],`mapped`,[120]],[[120430,120430],`mapped`,[121]],[[120431,120431],`mapped`,[122]],[[120432,120432],`mapped`,[97]],[[120433,120433],`mapped`,[98]],[[120434,120434],`mapped`,[99]],[[120435,120435],`mapped`,[100]],[[120436,120436],`mapped`,[101]],[[120437,120437],`mapped`,[102]],[[120438,120438],`mapped`,[103]],[[120439,120439],`mapped`,[104]],[[120440,120440],`mapped`,[105]],[[120441,120441],`mapped`,[106]],[[120442,120442],`mapped`,[107]],[[120443,120443],`mapped`,[108]],[[120444,120444],`mapped`,[109]],[[120445,120445],`mapped`,[110]],[[120446,120446],`mapped`,[111]],[[120447,120447],`mapped`,[112]],[[120448,120448],`mapped`,[113]],[[120449,120449],`mapped`,[114]],[[120450,120450],`mapped`,[115]],[[120451,120451],`mapped`,[116]],[[120452,120452],`mapped`,[117]],[[120453,120453],`mapped`,[118]],[[120454,120454],`mapped`,[119]],[[120455,120455],`mapped`,[120]],[[120456,120456],`mapped`,[121]],[[120457,120457],`mapped`,[122]],[[120458,120458],`mapped`,[97]],[[120459,120459],`mapped`,[98]],[[120460,120460],`mapped`,[99]],[[120461,120461],`mapped`,[100]],[[120462,120462],`mapped`,[101]],[[120463,120463],`mapped`,[102]],[[120464,120464],`mapped`,[103]],[[120465,120465],`mapped`,[104]],[[120466,120466],`mapped`,[105]],[[120467,120467],`mapped`,[106]],[[120468,120468],`mapped`,[107]],[[120469,120469],`mapped`,[108]],[[120470,120470],`mapped`,[109]],[[120471,120471],`mapped`,[110]],[[120472,120472],`mapped`,[111]],[[120473,120473],`mapped`,[112]],[[120474,120474],`mapped`,[113]],[[120475,120475],`mapped`,[114]],[[120476,120476],`mapped`,[115]],[[120477,120477],`mapped`,[116]],[[120478,120478],`mapped`,[117]],[[120479,120479],`mapped`,[118]],[[120480,120480],`mapped`,[119]],[[120481,120481],`mapped`,[120]],[[120482,120482],`mapped`,[121]],[[120483,120483],`mapped`,[122]],[[120484,120484],`mapped`,[305]],[[120485,120485],`mapped`,[567]],[[120486,120487],`disallowed`],[[120488,120488],`mapped`,[945]],[[120489,120489],`mapped`,[946]],[[120490,120490],`mapped`,[947]],[[120491,120491],`mapped`,[948]],[[120492,120492],`mapped`,[949]],[[120493,120493],`mapped`,[950]],[[120494,120494],`mapped`,[951]],[[120495,120495],`mapped`,[952]],[[120496,120496],`mapped`,[953]],[[120497,120497],`mapped`,[954]],[[120498,120498],`mapped`,[955]],[[120499,120499],`mapped`,[956]],[[120500,120500],`mapped`,[957]],[[120501,120501],`mapped`,[958]],[[120502,120502],`mapped`,[959]],[[120503,120503],`mapped`,[960]],[[120504,120504],`mapped`,[961]],[[120505,120505],`mapped`,[952]],[[120506,120506],`mapped`,[963]],[[120507,120507],`mapped`,[964]],[[120508,120508],`mapped`,[965]],[[120509,120509],`mapped`,[966]],[[120510,120510],`mapped`,[967]],[[120511,120511],`mapped`,[968]],[[120512,120512],`mapped`,[969]],[[120513,120513],`mapped`,[8711]],[[120514,120514],`mapped`,[945]],[[120515,120515],`mapped`,[946]],[[120516,120516],`mapped`,[947]],[[120517,120517],`mapped`,[948]],[[120518,120518],`mapped`,[949]],[[120519,120519],`mapped`,[950]],[[120520,120520],`mapped`,[951]],[[120521,120521],`mapped`,[952]],[[120522,120522],`mapped`,[953]],[[120523,120523],`mapped`,[954]],[[120524,120524],`mapped`,[955]],[[120525,120525],`mapped`,[956]],[[120526,120526],`mapped`,[957]],[[120527,120527],`mapped`,[958]],[[120528,120528],`mapped`,[959]],[[120529,120529],`mapped`,[960]],[[120530,120530],`mapped`,[961]],[[120531,120532],`mapped`,[963]],[[120533,120533],`mapped`,[964]],[[120534,120534],`mapped`,[965]],[[120535,120535],`mapped`,[966]],[[120536,120536],`mapped`,[967]],[[120537,120537],`mapped`,[968]],[[120538,120538],`mapped`,[969]],[[120539,120539],`mapped`,[8706]],[[120540,120540],`mapped`,[949]],[[120541,120541],`mapped`,[952]],[[120542,120542],`mapped`,[954]],[[120543,120543],`mapped`,[966]],[[120544,120544],`mapped`,[961]],[[120545,120545],`mapped`,[960]],[[120546,120546],`mapped`,[945]],[[120547,120547],`mapped`,[946]],[[120548,120548],`mapped`,[947]],[[120549,120549],`mapped`,[948]],[[120550,120550],`mapped`,[949]],[[120551,120551],`mapped`,[950]],[[120552,120552],`mapped`,[951]],[[120553,120553],`mapped`,[952]],[[120554,120554],`mapped`,[953]],[[120555,120555],`mapped`,[954]],[[120556,120556],`mapped`,[955]],[[120557,120557],`mapped`,[956]],[[120558,120558],`mapped`,[957]],[[120559,120559],`mapped`,[958]],[[120560,120560],`mapped`,[959]],[[120561,120561],`mapped`,[960]],[[120562,120562],`mapped`,[961]],[[120563,120563],`mapped`,[952]],[[120564,120564],`mapped`,[963]],[[120565,120565],`mapped`,[964]],[[120566,120566],`mapped`,[965]],[[120567,120567],`mapped`,[966]],[[120568,120568],`mapped`,[967]],[[120569,120569],`mapped`,[968]],[[120570,120570],`mapped`,[969]],[[120571,120571],`mapped`,[8711]],[[120572,120572],`mapped`,[945]],[[120573,120573],`mapped`,[946]],[[120574,120574],`mapped`,[947]],[[120575,120575],`mapped`,[948]],[[120576,120576],`mapped`,[949]],[[120577,120577],`mapped`,[950]],[[120578,120578],`mapped`,[951]],[[120579,120579],`mapped`,[952]],[[120580,120580],`mapped`,[953]],[[120581,120581],`mapped`,[954]],[[120582,120582],`mapped`,[955]],[[120583,120583],`mapped`,[956]],[[120584,120584],`mapped`,[957]],[[120585,120585],`mapped`,[958]],[[120586,120586],`mapped`,[959]],[[120587,120587],`mapped`,[960]],[[120588,120588],`mapped`,[961]],[[120589,120590],`mapped`,[963]],[[120591,120591],`mapped`,[964]],[[120592,120592],`mapped`,[965]],[[120593,120593],`mapped`,[966]],[[120594,120594],`mapped`,[967]],[[120595,120595],`mapped`,[968]],[[120596,120596],`mapped`,[969]],[[120597,120597],`mapped`,[8706]],[[120598,120598],`mapped`,[949]],[[120599,120599],`mapped`,[952]],[[120600,120600],`mapped`,[954]],[[120601,120601],`mapped`,[966]],[[120602,120602],`mapped`,[961]],[[120603,120603],`mapped`,[960]],[[120604,120604],`mapped`,[945]],[[120605,120605],`mapped`,[946]],[[120606,120606],`mapped`,[947]],[[120607,120607],`mapped`,[948]],[[120608,120608],`mapped`,[949]],[[120609,120609],`mapped`,[950]],[[120610,120610],`mapped`,[951]],[[120611,120611],`mapped`,[952]],[[120612,120612],`mapped`,[953]],[[120613,120613],`mapped`,[954]],[[120614,120614],`mapped`,[955]],[[120615,120615],`mapped`,[956]],[[120616,120616],`mapped`,[957]],[[120617,120617],`mapped`,[958]],[[120618,120618],`mapped`,[959]],[[120619,120619],`mapped`,[960]],[[120620,120620],`mapped`,[961]],[[120621,120621],`mapped`,[952]],[[120622,120622],`mapped`,[963]],[[120623,120623],`mapped`,[964]],[[120624,120624],`mapped`,[965]],[[120625,120625],`mapped`,[966]],[[120626,120626],`mapped`,[967]],[[120627,120627],`mapped`,[968]],[[120628,120628],`mapped`,[969]],[[120629,120629],`mapped`,[8711]],[[120630,120630],`mapped`,[945]],[[120631,120631],`mapped`,[946]],[[120632,120632],`mapped`,[947]],[[120633,120633],`mapped`,[948]],[[120634,120634],`mapped`,[949]],[[120635,120635],`mapped`,[950]],[[120636,120636],`mapped`,[951]],[[120637,120637],`mapped`,[952]],[[120638,120638],`mapped`,[953]],[[120639,120639],`mapped`,[954]],[[120640,120640],`mapped`,[955]],[[120641,120641],`mapped`,[956]],[[120642,120642],`mapped`,[957]],[[120643,120643],`mapped`,[958]],[[120644,120644],`mapped`,[959]],[[120645,120645],`mapped`,[960]],[[120646,120646],`mapped`,[961]],[[120647,120648],`mapped`,[963]],[[120649,120649],`mapped`,[964]],[[120650,120650],`mapped`,[965]],[[120651,120651],`mapped`,[966]],[[120652,120652],`mapped`,[967]],[[120653,120653],`mapped`,[968]],[[120654,120654],`mapped`,[969]],[[120655,120655],`mapped`,[8706]],[[120656,120656],`mapped`,[949]],[[120657,120657],`mapped`,[952]],[[120658,120658],`mapped`,[954]],[[120659,120659],`mapped`,[966]],[[120660,120660],`mapped`,[961]],[[120661,120661],`mapped`,[960]],[[120662,120662],`mapped`,[945]],[[120663,120663],`mapped`,[946]],[[120664,120664],`mapped`,[947]],[[120665,120665],`mapped`,[948]],[[120666,120666],`mapped`,[949]],[[120667,120667],`mapped`,[950]],[[120668,120668],`mapped`,[951]],[[120669,120669],`mapped`,[952]],[[120670,120670],`mapped`,[953]],[[120671,120671],`mapped`,[954]],[[120672,120672],`mapped`,[955]],[[120673,120673],`mapped`,[956]],[[120674,120674],`mapped`,[957]],[[120675,120675],`mapped`,[958]],[[120676,120676],`mapped`,[959]],[[120677,120677],`mapped`,[960]],[[120678,120678],`mapped`,[961]],[[120679,120679],`mapped`,[952]],[[120680,120680],`mapped`,[963]],[[120681,120681],`mapped`,[964]],[[120682,120682],`mapped`,[965]],[[120683,120683],`mapped`,[966]],[[120684,120684],`mapped`,[967]],[[120685,120685],`mapped`,[968]],[[120686,120686],`mapped`,[969]],[[120687,120687],`mapped`,[8711]],[[120688,120688],`mapped`,[945]],[[120689,120689],`mapped`,[946]],[[120690,120690],`mapped`,[947]],[[120691,120691],`mapped`,[948]],[[120692,120692],`mapped`,[949]],[[120693,120693],`mapped`,[950]],[[120694,120694],`mapped`,[951]],[[120695,120695],`mapped`,[952]],[[120696,120696],`mapped`,[953]],[[120697,120697],`mapped`,[954]],[[120698,120698],`mapped`,[955]],[[120699,120699],`mapped`,[956]],[[120700,120700],`mapped`,[957]],[[120701,120701],`mapped`,[958]],[[120702,120702],`mapped`,[959]],[[120703,120703],`mapped`,[960]],[[120704,120704],`mapped`,[961]],[[120705,120706],`mapped`,[963]],[[120707,120707],`mapped`,[964]],[[120708,120708],`mapped`,[965]],[[120709,120709],`mapped`,[966]],[[120710,120710],`mapped`,[967]],[[120711,120711],`mapped`,[968]],[[120712,120712],`mapped`,[969]],[[120713,120713],`mapped`,[8706]],[[120714,120714],`mapped`,[949]],[[120715,120715],`mapped`,[952]],[[120716,120716],`mapped`,[954]],[[120717,120717],`mapped`,[966]],[[120718,120718],`mapped`,[961]],[[120719,120719],`mapped`,[960]],[[120720,120720],`mapped`,[945]],[[120721,120721],`mapped`,[946]],[[120722,120722],`mapped`,[947]],[[120723,120723],`mapped`,[948]],[[120724,120724],`mapped`,[949]],[[120725,120725],`mapped`,[950]],[[120726,120726],`mapped`,[951]],[[120727,120727],`mapped`,[952]],[[120728,120728],`mapped`,[953]],[[120729,120729],`mapped`,[954]],[[120730,120730],`mapped`,[955]],[[120731,120731],`mapped`,[956]],[[120732,120732],`mapped`,[957]],[[120733,120733],`mapped`,[958]],[[120734,120734],`mapped`,[959]],[[120735,120735],`mapped`,[960]],[[120736,120736],`mapped`,[961]],[[120737,120737],`mapped`,[952]],[[120738,120738],`mapped`,[963]],[[120739,120739],`mapped`,[964]],[[120740,120740],`mapped`,[965]],[[120741,120741],`mapped`,[966]],[[120742,120742],`mapped`,[967]],[[120743,120743],`mapped`,[968]],[[120744,120744],`mapped`,[969]],[[120745,120745],`mapped`,[8711]],[[120746,120746],`mapped`,[945]],[[120747,120747],`mapped`,[946]],[[120748,120748],`mapped`,[947]],[[120749,120749],`mapped`,[948]],[[120750,120750],`mapped`,[949]],[[120751,120751],`mapped`,[950]],[[120752,120752],`mapped`,[951]],[[120753,120753],`mapped`,[952]],[[120754,120754],`mapped`,[953]],[[120755,120755],`mapped`,[954]],[[120756,120756],`mapped`,[955]],[[120757,120757],`mapped`,[956]],[[120758,120758],`mapped`,[957]],[[120759,120759],`mapped`,[958]],[[120760,120760],`mapped`,[959]],[[120761,120761],`mapped`,[960]],[[120762,120762],`mapped`,[961]],[[120763,120764],`mapped`,[963]],[[120765,120765],`mapped`,[964]],[[120766,120766],`mapped`,[965]],[[120767,120767],`mapped`,[966]],[[120768,120768],`mapped`,[967]],[[120769,120769],`mapped`,[968]],[[120770,120770],`mapped`,[969]],[[120771,120771],`mapped`,[8706]],[[120772,120772],`mapped`,[949]],[[120773,120773],`mapped`,[952]],[[120774,120774],`mapped`,[954]],[[120775,120775],`mapped`,[966]],[[120776,120776],`mapped`,[961]],[[120777,120777],`mapped`,[960]],[[120778,120779],`mapped`,[989]],[[120780,120781],`disallowed`],[[120782,120782],`mapped`,[48]],[[120783,120783],`mapped`,[49]],[[120784,120784],`mapped`,[50]],[[120785,120785],`mapped`,[51]],[[120786,120786],`mapped`,[52]],[[120787,120787],`mapped`,[53]],[[120788,120788],`mapped`,[54]],[[120789,120789],`mapped`,[55]],[[120790,120790],`mapped`,[56]],[[120791,120791],`mapped`,[57]],[[120792,120792],`mapped`,[48]],[[120793,120793],`mapped`,[49]],[[120794,120794],`mapped`,[50]],[[120795,120795],`mapped`,[51]],[[120796,120796],`mapped`,[52]],[[120797,120797],`mapped`,[53]],[[120798,120798],`mapped`,[54]],[[120799,120799],`mapped`,[55]],[[120800,120800],`mapped`,[56]],[[120801,120801],`mapped`,[57]],[[120802,120802],`mapped`,[48]],[[120803,120803],`mapped`,[49]],[[120804,120804],`mapped`,[50]],[[120805,120805],`mapped`,[51]],[[120806,120806],`mapped`,[52]],[[120807,120807],`mapped`,[53]],[[120808,120808],`mapped`,[54]],[[120809,120809],`mapped`,[55]],[[120810,120810],`mapped`,[56]],[[120811,120811],`mapped`,[57]],[[120812,120812],`mapped`,[48]],[[120813,120813],`mapped`,[49]],[[120814,120814],`mapped`,[50]],[[120815,120815],`mapped`,[51]],[[120816,120816],`mapped`,[52]],[[120817,120817],`mapped`,[53]],[[120818,120818],`mapped`,[54]],[[120819,120819],`mapped`,[55]],[[120820,120820],`mapped`,[56]],[[120821,120821],`mapped`,[57]],[[120822,120822],`mapped`,[48]],[[120823,120823],`mapped`,[49]],[[120824,120824],`mapped`,[50]],[[120825,120825],`mapped`,[51]],[[120826,120826],`mapped`,[52]],[[120827,120827],`mapped`,[53]],[[120828,120828],`mapped`,[54]],[[120829,120829],`mapped`,[55]],[[120830,120830],`mapped`,[56]],[[120831,120831],`mapped`,[57]],[[120832,121343],`valid`,[],`NV8`],[[121344,121398],`valid`],[[121399,121402],`valid`,[],`NV8`],[[121403,121452],`valid`],[[121453,121460],`valid`,[],`NV8`],[[121461,121461],`valid`],[[121462,121475],`valid`,[],`NV8`],[[121476,121476],`valid`],[[121477,121483],`valid`,[],`NV8`],[[121484,121498],`disallowed`],[[121499,121503],`valid`],[[121504,121504],`disallowed`],[[121505,121519],`valid`],[[121520,124927],`disallowed`],[[124928,125124],`valid`],[[125125,125126],`disallowed`],[[125127,125135],`valid`,[],`NV8`],[[125136,125142],`valid`],[[125143,126463],`disallowed`],[[126464,126464],`mapped`,[1575]],[[126465,126465],`mapped`,[1576]],[[126466,126466],`mapped`,[1580]],[[126467,126467],`mapped`,[1583]],[[126468,126468],`disallowed`],[[126469,126469],`mapped`,[1608]],[[126470,126470],`mapped`,[1586]],[[126471,126471],`mapped`,[1581]],[[126472,126472],`mapped`,[1591]],[[126473,126473],`mapped`,[1610]],[[126474,126474],`mapped`,[1603]],[[126475,126475],`mapped`,[1604]],[[126476,126476],`mapped`,[1605]],[[126477,126477],`mapped`,[1606]],[[126478,126478],`mapped`,[1587]],[[126479,126479],`mapped`,[1593]],[[126480,126480],`mapped`,[1601]],[[126481,126481],`mapped`,[1589]],[[126482,126482],`mapped`,[1602]],[[126483,126483],`mapped`,[1585]],[[126484,126484],`mapped`,[1588]],[[126485,126485],`mapped`,[1578]],[[126486,126486],`mapped`,[1579]],[[126487,126487],`mapped`,[1582]],[[126488,126488],`mapped`,[1584]],[[126489,126489],`mapped`,[1590]],[[126490,126490],`mapped`,[1592]],[[126491,126491],`mapped`,[1594]],[[126492,126492],`mapped`,[1646]],[[126493,126493],`mapped`,[1722]],[[126494,126494],`mapped`,[1697]],[[126495,126495],`mapped`,[1647]],[[126496,126496],`disallowed`],[[126497,126497],`mapped`,[1576]],[[126498,126498],`mapped`,[1580]],[[126499,126499],`disallowed`],[[126500,126500],`mapped`,[1607]],[[126501,126502],`disallowed`],[[126503,126503],`mapped`,[1581]],[[126504,126504],`disallowed`],[[126505,126505],`mapped`,[1610]],[[126506,126506],`mapped`,[1603]],[[126507,126507],`mapped`,[1604]],[[126508,126508],`mapped`,[1605]],[[126509,126509],`mapped`,[1606]],[[126510,126510],`mapped`,[1587]],[[126511,126511],`mapped`,[1593]],[[126512,126512],`mapped`,[1601]],[[126513,126513],`mapped`,[1589]],[[126514,126514],`mapped`,[1602]],[[126515,126515],`disallowed`],[[126516,126516],`mapped`,[1588]],[[126517,126517],`mapped`,[1578]],[[126518,126518],`mapped`,[1579]],[[126519,126519],`mapped`,[1582]],[[126520,126520],`disallowed`],[[126521,126521],`mapped`,[1590]],[[126522,126522],`disallowed`],[[126523,126523],`mapped`,[1594]],[[126524,126529],`disallowed`],[[126530,126530],`mapped`,[1580]],[[126531,126534],`disallowed`],[[126535,126535],`mapped`,[1581]],[[126536,126536],`disallowed`],[[126537,126537],`mapped`,[1610]],[[126538,126538],`disallowed`],[[126539,126539],`mapped`,[1604]],[[126540,126540],`disallowed`],[[126541,126541],`mapped`,[1606]],[[126542,126542],`mapped`,[1587]],[[126543,126543],`mapped`,[1593]],[[126544,126544],`disallowed`],[[126545,126545],`mapped`,[1589]],[[126546,126546],`mapped`,[1602]],[[126547,126547],`disallowed`],[[126548,126548],`mapped`,[1588]],[[126549,126550],`disallowed`],[[126551,126551],`mapped`,[1582]],[[126552,126552],`disallowed`],[[126553,126553],`mapped`,[1590]],[[126554,126554],`disallowed`],[[126555,126555],`mapped`,[1594]],[[126556,126556],`disallowed`],[[126557,126557],`mapped`,[1722]],[[126558,126558],`disallowed`],[[126559,126559],`mapped`,[1647]],[[126560,126560],`disallowed`],[[126561,126561],`mapped`,[1576]],[[126562,126562],`mapped`,[1580]],[[126563,126563],`disallowed`],[[126564,126564],`mapped`,[1607]],[[126565,126566],`disallowed`],[[126567,126567],`mapped`,[1581]],[[126568,126568],`mapped`,[1591]],[[126569,126569],`mapped`,[1610]],[[126570,126570],`mapped`,[1603]],[[126571,126571],`disallowed`],[[126572,126572],`mapped`,[1605]],[[126573,126573],`mapped`,[1606]],[[126574,126574],`mapped`,[1587]],[[126575,126575],`mapped`,[1593]],[[126576,126576],`mapped`,[1601]],[[126577,126577],`mapped`,[1589]],[[126578,126578],`mapped`,[1602]],[[126579,126579],`disallowed`],[[126580,126580],`mapped`,[1588]],[[126581,126581],`mapped`,[1578]],[[126582,126582],`mapped`,[1579]],[[126583,126583],`mapped`,[1582]],[[126584,126584],`disallowed`],[[126585,126585],`mapped`,[1590]],[[126586,126586],`mapped`,[1592]],[[126587,126587],`mapped`,[1594]],[[126588,126588],`mapped`,[1646]],[[126589,126589],`disallowed`],[[126590,126590],`mapped`,[1697]],[[126591,126591],`disallowed`],[[126592,126592],`mapped`,[1575]],[[126593,126593],`mapped`,[1576]],[[126594,126594],`mapped`,[1580]],[[126595,126595],`mapped`,[1583]],[[126596,126596],`mapped`,[1607]],[[126597,126597],`mapped`,[1608]],[[126598,126598],`mapped`,[1586]],[[126599,126599],`mapped`,[1581]],[[126600,126600],`mapped`,[1591]],[[126601,126601],`mapped`,[1610]],[[126602,126602],`disallowed`],[[126603,126603],`mapped`,[1604]],[[126604,126604],`mapped`,[1605]],[[126605,126605],`mapped`,[1606]],[[126606,126606],`mapped`,[1587]],[[126607,126607],`mapped`,[1593]],[[126608,126608],`mapped`,[1601]],[[126609,126609],`mapped`,[1589]],[[126610,126610],`mapped`,[1602]],[[126611,126611],`mapped`,[1585]],[[126612,126612],`mapped`,[1588]],[[126613,126613],`mapped`,[1578]],[[126614,126614],`mapped`,[1579]],[[126615,126615],`mapped`,[1582]],[[126616,126616],`mapped`,[1584]],[[126617,126617],`mapped`,[1590]],[[126618,126618],`mapped`,[1592]],[[126619,126619],`mapped`,[1594]],[[126620,126624],`disallowed`],[[126625,126625],`mapped`,[1576]],[[126626,126626],`mapped`,[1580]],[[126627,126627],`mapped`,[1583]],[[126628,126628],`disallowed`],[[126629,126629],`mapped`,[1608]],[[126630,126630],`mapped`,[1586]],[[126631,126631],`mapped`,[1581]],[[126632,126632],`mapped`,[1591]],[[126633,126633],`mapped`,[1610]],[[126634,126634],`disallowed`],[[126635,126635],`mapped`,[1604]],[[126636,126636],`mapped`,[1605]],[[126637,126637],`mapped`,[1606]],[[126638,126638],`mapped`,[1587]],[[126639,126639],`mapped`,[1593]],[[126640,126640],`mapped`,[1601]],[[126641,126641],`mapped`,[1589]],[[126642,126642],`mapped`,[1602]],[[126643,126643],`mapped`,[1585]],[[126644,126644],`mapped`,[1588]],[[126645,126645],`mapped`,[1578]],[[126646,126646],`mapped`,[1579]],[[126647,126647],`mapped`,[1582]],[[126648,126648],`mapped`,[1584]],[[126649,126649],`mapped`,[1590]],[[126650,126650],`mapped`,[1592]],[[126651,126651],`mapped`,[1594]],[[126652,126703],`disallowed`],[[126704,126705],`valid`,[],`NV8`],[[126706,126975],`disallowed`],[[126976,127019],`valid`,[],`NV8`],[[127020,127023],`disallowed`],[[127024,127123],`valid`,[],`NV8`],[[127124,127135],`disallowed`],[[127136,127150],`valid`,[],`NV8`],[[127151,127152],`disallowed`],[[127153,127166],`valid`,[],`NV8`],[[127167,127167],`valid`,[],`NV8`],[[127168,127168],`disallowed`],[[127169,127183],`valid`,[],`NV8`],[[127184,127184],`disallowed`],[[127185,127199],`valid`,[],`NV8`],[[127200,127221],`valid`,[],`NV8`],[[127222,127231],`disallowed`],[[127232,127232],`disallowed`],[[127233,127233],`disallowed_STD3_mapped`,[48,44]],[[127234,127234],`disallowed_STD3_mapped`,[49,44]],[[127235,127235],`disallowed_STD3_mapped`,[50,44]],[[127236,127236],`disallowed_STD3_mapped`,[51,44]],[[127237,127237],`disallowed_STD3_mapped`,[52,44]],[[127238,127238],`disallowed_STD3_mapped`,[53,44]],[[127239,127239],`disallowed_STD3_mapped`,[54,44]],[[127240,127240],`disallowed_STD3_mapped`,[55,44]],[[127241,127241],`disallowed_STD3_mapped`,[56,44]],[[127242,127242],`disallowed_STD3_mapped`,[57,44]],[[127243,127244],`valid`,[],`NV8`],[[127245,127247],`disallowed`],[[127248,127248],`disallowed_STD3_mapped`,[40,97,41]],[[127249,127249],`disallowed_STD3_mapped`,[40,98,41]],[[127250,127250],`disallowed_STD3_mapped`,[40,99,41]],[[127251,127251],`disallowed_STD3_mapped`,[40,100,41]],[[127252,127252],`disallowed_STD3_mapped`,[40,101,41]],[[127253,127253],`disallowed_STD3_mapped`,[40,102,41]],[[127254,127254],`disallowed_STD3_mapped`,[40,103,41]],[[127255,127255],`disallowed_STD3_mapped`,[40,104,41]],[[127256,127256],`disallowed_STD3_mapped`,[40,105,41]],[[127257,127257],`disallowed_STD3_mapped`,[40,106,41]],[[127258,127258],`disallowed_STD3_mapped`,[40,107,41]],[[127259,127259],`disallowed_STD3_mapped`,[40,108,41]],[[127260,127260],`disallowed_STD3_mapped`,[40,109,41]],[[127261,127261],`disallowed_STD3_mapped`,[40,110,41]],[[127262,127262],`disallowed_STD3_mapped`,[40,111,41]],[[127263,127263],`disallowed_STD3_mapped`,[40,112,41]],[[127264,127264],`disallowed_STD3_mapped`,[40,113,41]],[[127265,127265],`disallowed_STD3_mapped`,[40,114,41]],[[127266,127266],`disallowed_STD3_mapped`,[40,115,41]],[[127267,127267],`disallowed_STD3_mapped`,[40,116,41]],[[127268,127268],`disallowed_STD3_mapped`,[40,117,41]],[[127269,127269],`disallowed_STD3_mapped`,[40,118,41]],[[127270,127270],`disallowed_STD3_mapped`,[40,119,41]],[[127271,127271],`disallowed_STD3_mapped`,[40,120,41]],[[127272,127272],`disallowed_STD3_mapped`,[40,121,41]],[[127273,127273],`disallowed_STD3_mapped`,[40,122,41]],[[127274,127274],`mapped`,[12308,115,12309]],[[127275,127275],`mapped`,[99]],[[127276,127276],`mapped`,[114]],[[127277,127277],`mapped`,[99,100]],[[127278,127278],`mapped`,[119,122]],[[127279,127279],`disallowed`],[[127280,127280],`mapped`,[97]],[[127281,127281],`mapped`,[98]],[[127282,127282],`mapped`,[99]],[[127283,127283],`mapped`,[100]],[[127284,127284],`mapped`,[101]],[[127285,127285],`mapped`,[102]],[[127286,127286],`mapped`,[103]],[[127287,127287],`mapped`,[104]],[[127288,127288],`mapped`,[105]],[[127289,127289],`mapped`,[106]],[[127290,127290],`mapped`,[107]],[[127291,127291],`mapped`,[108]],[[127292,127292],`mapped`,[109]],[[127293,127293],`mapped`,[110]],[[127294,127294],`mapped`,[111]],[[127295,127295],`mapped`,[112]],[[127296,127296],`mapped`,[113]],[[127297,127297],`mapped`,[114]],[[127298,127298],`mapped`,[115]],[[127299,127299],`mapped`,[116]],[[127300,127300],`mapped`,[117]],[[127301,127301],`mapped`,[118]],[[127302,127302],`mapped`,[119]],[[127303,127303],`mapped`,[120]],[[127304,127304],`mapped`,[121]],[[127305,127305],`mapped`,[122]],[[127306,127306],`mapped`,[104,118]],[[127307,127307],`mapped`,[109,118]],[[127308,127308],`mapped`,[115,100]],[[127309,127309],`mapped`,[115,115]],[[127310,127310],`mapped`,[112,112,118]],[[127311,127311],`mapped`,[119,99]],[[127312,127318],`valid`,[],`NV8`],[[127319,127319],`valid`,[],`NV8`],[[127320,127326],`valid`,[],`NV8`],[[127327,127327],`valid`,[],`NV8`],[[127328,127337],`valid`,[],`NV8`],[[127338,127338],`mapped`,[109,99]],[[127339,127339],`mapped`,[109,100]],[[127340,127343],`disallowed`],[[127344,127352],`valid`,[],`NV8`],[[127353,127353],`valid`,[],`NV8`],[[127354,127354],`valid`,[],`NV8`],[[127355,127356],`valid`,[],`NV8`],[[127357,127358],`valid`,[],`NV8`],[[127359,127359],`valid`,[],`NV8`],[[127360,127369],`valid`,[],`NV8`],[[127370,127373],`valid`,[],`NV8`],[[127374,127375],`valid`,[],`NV8`],[[127376,127376],`mapped`,[100,106]],[[127377,127386],`valid`,[],`NV8`],[[127387,127461],`disallowed`],[[127462,127487],`valid`,[],`NV8`],[[127488,127488],`mapped`,[12411,12363]],[[127489,127489],`mapped`,[12467,12467]],[[127490,127490],`mapped`,[12469]],[[127491,127503],`disallowed`],[[127504,127504],`mapped`,[25163]],[[127505,127505],`mapped`,[23383]],[[127506,127506],`mapped`,[21452]],[[127507,127507],`mapped`,[12487]],[[127508,127508],`mapped`,[20108]],[[127509,127509],`mapped`,[22810]],[[127510,127510],`mapped`,[35299]],[[127511,127511],`mapped`,[22825]],[[127512,127512],`mapped`,[20132]],[[127513,127513],`mapped`,[26144]],[[127514,127514],`mapped`,[28961]],[[127515,127515],`mapped`,[26009]],[[127516,127516],`mapped`,[21069]],[[127517,127517],`mapped`,[24460]],[[127518,127518],`mapped`,[20877]],[[127519,127519],`mapped`,[26032]],[[127520,127520],`mapped`,[21021]],[[127521,127521],`mapped`,[32066]],[[127522,127522],`mapped`,[29983]],[[127523,127523],`mapped`,[36009]],[[127524,127524],`mapped`,[22768]],[[127525,127525],`mapped`,[21561]],[[127526,127526],`mapped`,[28436]],[[127527,127527],`mapped`,[25237]],[[127528,127528],`mapped`,[25429]],[[127529,127529],`mapped`,[19968]],[[127530,127530],`mapped`,[19977]],[[127531,127531],`mapped`,[36938]],[[127532,127532],`mapped`,[24038]],[[127533,127533],`mapped`,[20013]],[[127534,127534],`mapped`,[21491]],[[127535,127535],`mapped`,[25351]],[[127536,127536],`mapped`,[36208]],[[127537,127537],`mapped`,[25171]],[[127538,127538],`mapped`,[31105]],[[127539,127539],`mapped`,[31354]],[[127540,127540],`mapped`,[21512]],[[127541,127541],`mapped`,[28288]],[[127542,127542],`mapped`,[26377]],[[127543,127543],`mapped`,[26376]],[[127544,127544],`mapped`,[30003]],[[127545,127545],`mapped`,[21106]],[[127546,127546],`mapped`,[21942]],[[127547,127551],`disallowed`],[[127552,127552],`mapped`,[12308,26412,12309]],[[127553,127553],`mapped`,[12308,19977,12309]],[[127554,127554],`mapped`,[12308,20108,12309]],[[127555,127555],`mapped`,[12308,23433,12309]],[[127556,127556],`mapped`,[12308,28857,12309]],[[127557,127557],`mapped`,[12308,25171,12309]],[[127558,127558],`mapped`,[12308,30423,12309]],[[127559,127559],`mapped`,[12308,21213,12309]],[[127560,127560],`mapped`,[12308,25943,12309]],[[127561,127567],`disallowed`],[[127568,127568],`mapped`,[24471]],[[127569,127569],`mapped`,[21487]],[[127570,127743],`disallowed`],[[127744,127776],`valid`,[],`NV8`],[[127777,127788],`valid`,[],`NV8`],[[127789,127791],`valid`,[],`NV8`],[[127792,127797],`valid`,[],`NV8`],[[127798,127798],`valid`,[],`NV8`],[[127799,127868],`valid`,[],`NV8`],[[127869,127869],`valid`,[],`NV8`],[[127870,127871],`valid`,[],`NV8`],[[127872,127891],`valid`,[],`NV8`],[[127892,127903],`valid`,[],`NV8`],[[127904,127940],`valid`,[],`NV8`],[[127941,127941],`valid`,[],`NV8`],[[127942,127946],`valid`,[],`NV8`],[[127947,127950],`valid`,[],`NV8`],[[127951,127955],`valid`,[],`NV8`],[[127956,127967],`valid`,[],`NV8`],[[127968,127984],`valid`,[],`NV8`],[[127985,127991],`valid`,[],`NV8`],[[127992,127999],`valid`,[],`NV8`],[[128e3,128062],`valid`,[],`NV8`],[[128063,128063],`valid`,[],`NV8`],[[128064,128064],`valid`,[],`NV8`],[[128065,128065],`valid`,[],`NV8`],[[128066,128247],`valid`,[],`NV8`],[[128248,128248],`valid`,[],`NV8`],[[128249,128252],`valid`,[],`NV8`],[[128253,128254],`valid`,[],`NV8`],[[128255,128255],`valid`,[],`NV8`],[[128256,128317],`valid`,[],`NV8`],[[128318,128319],`valid`,[],`NV8`],[[128320,128323],`valid`,[],`NV8`],[[128324,128330],`valid`,[],`NV8`],[[128331,128335],`valid`,[],`NV8`],[[128336,128359],`valid`,[],`NV8`],[[128360,128377],`valid`,[],`NV8`],[[128378,128378],`disallowed`],[[128379,128419],`valid`,[],`NV8`],[[128420,128420],`disallowed`],[[128421,128506],`valid`,[],`NV8`],[[128507,128511],`valid`,[],`NV8`],[[128512,128512],`valid`,[],`NV8`],[[128513,128528],`valid`,[],`NV8`],[[128529,128529],`valid`,[],`NV8`],[[128530,128532],`valid`,[],`NV8`],[[128533,128533],`valid`,[],`NV8`],[[128534,128534],`valid`,[],`NV8`],[[128535,128535],`valid`,[],`NV8`],[[128536,128536],`valid`,[],`NV8`],[[128537,128537],`valid`,[],`NV8`],[[128538,128538],`valid`,[],`NV8`],[[128539,128539],`valid`,[],`NV8`],[[128540,128542],`valid`,[],`NV8`],[[128543,128543],`valid`,[],`NV8`],[[128544,128549],`valid`,[],`NV8`],[[128550,128551],`valid`,[],`NV8`],[[128552,128555],`valid`,[],`NV8`],[[128556,128556],`valid`,[],`NV8`],[[128557,128557],`valid`,[],`NV8`],[[128558,128559],`valid`,[],`NV8`],[[128560,128563],`valid`,[],`NV8`],[[128564,128564],`valid`,[],`NV8`],[[128565,128576],`valid`,[],`NV8`],[[128577,128578],`valid`,[],`NV8`],[[128579,128580],`valid`,[],`NV8`],[[128581,128591],`valid`,[],`NV8`],[[128592,128639],`valid`,[],`NV8`],[[128640,128709],`valid`,[],`NV8`],[[128710,128719],`valid`,[],`NV8`],[[128720,128720],`valid`,[],`NV8`],[[128721,128735],`disallowed`],[[128736,128748],`valid`,[],`NV8`],[[128749,128751],`disallowed`],[[128752,128755],`valid`,[],`NV8`],[[128756,128767],`disallowed`],[[128768,128883],`valid`,[],`NV8`],[[128884,128895],`disallowed`],[[128896,128980],`valid`,[],`NV8`],[[128981,129023],`disallowed`],[[129024,129035],`valid`,[],`NV8`],[[129036,129039],`disallowed`],[[129040,129095],`valid`,[],`NV8`],[[129096,129103],`disallowed`],[[129104,129113],`valid`,[],`NV8`],[[129114,129119],`disallowed`],[[129120,129159],`valid`,[],`NV8`],[[129160,129167],`disallowed`],[[129168,129197],`valid`,[],`NV8`],[[129198,129295],`disallowed`],[[129296,129304],`valid`,[],`NV8`],[[129305,129407],`disallowed`],[[129408,129412],`valid`,[],`NV8`],[[129413,129471],`disallowed`],[[129472,129472],`valid`,[],`NV8`],[[129473,131069],`disallowed`],[[131070,131071],`disallowed`],[[131072,173782],`valid`],[[173783,173823],`disallowed`],[[173824,177972],`valid`],[[177973,177983],`disallowed`],[[177984,178205],`valid`],[[178206,178207],`disallowed`],[[178208,183969],`valid`],[[183970,194559],`disallowed`],[[194560,194560],`mapped`,[20029]],[[194561,194561],`mapped`,[20024]],[[194562,194562],`mapped`,[20033]],[[194563,194563],`mapped`,[131362]],[[194564,194564],`mapped`,[20320]],[[194565,194565],`mapped`,[20398]],[[194566,194566],`mapped`,[20411]],[[194567,194567],`mapped`,[20482]],[[194568,194568],`mapped`,[20602]],[[194569,194569],`mapped`,[20633]],[[194570,194570],`mapped`,[20711]],[[194571,194571],`mapped`,[20687]],[[194572,194572],`mapped`,[13470]],[[194573,194573],`mapped`,[132666]],[[194574,194574],`mapped`,[20813]],[[194575,194575],`mapped`,[20820]],[[194576,194576],`mapped`,[20836]],[[194577,194577],`mapped`,[20855]],[[194578,194578],`mapped`,[132380]],[[194579,194579],`mapped`,[13497]],[[194580,194580],`mapped`,[20839]],[[194581,194581],`mapped`,[20877]],[[194582,194582],`mapped`,[132427]],[[194583,194583],`mapped`,[20887]],[[194584,194584],`mapped`,[20900]],[[194585,194585],`mapped`,[20172]],[[194586,194586],`mapped`,[20908]],[[194587,194587],`mapped`,[20917]],[[194588,194588],`mapped`,[168415]],[[194589,194589],`mapped`,[20981]],[[194590,194590],`mapped`,[20995]],[[194591,194591],`mapped`,[13535]],[[194592,194592],`mapped`,[21051]],[[194593,194593],`mapped`,[21062]],[[194594,194594],`mapped`,[21106]],[[194595,194595],`mapped`,[21111]],[[194596,194596],`mapped`,[13589]],[[194597,194597],`mapped`,[21191]],[[194598,194598],`mapped`,[21193]],[[194599,194599],`mapped`,[21220]],[[194600,194600],`mapped`,[21242]],[[194601,194601],`mapped`,[21253]],[[194602,194602],`mapped`,[21254]],[[194603,194603],`mapped`,[21271]],[[194604,194604],`mapped`,[21321]],[[194605,194605],`mapped`,[21329]],[[194606,194606],`mapped`,[21338]],[[194607,194607],`mapped`,[21363]],[[194608,194608],`mapped`,[21373]],[[194609,194611],`mapped`,[21375]],[[194612,194612],`mapped`,[133676]],[[194613,194613],`mapped`,[28784]],[[194614,194614],`mapped`,[21450]],[[194615,194615],`mapped`,[21471]],[[194616,194616],`mapped`,[133987]],[[194617,194617],`mapped`,[21483]],[[194618,194618],`mapped`,[21489]],[[194619,194619],`mapped`,[21510]],[[194620,194620],`mapped`,[21662]],[[194621,194621],`mapped`,[21560]],[[194622,194622],`mapped`,[21576]],[[194623,194623],`mapped`,[21608]],[[194624,194624],`mapped`,[21666]],[[194625,194625],`mapped`,[21750]],[[194626,194626],`mapped`,[21776]],[[194627,194627],`mapped`,[21843]],[[194628,194628],`mapped`,[21859]],[[194629,194630],`mapped`,[21892]],[[194631,194631],`mapped`,[21913]],[[194632,194632],`mapped`,[21931]],[[194633,194633],`mapped`,[21939]],[[194634,194634],`mapped`,[21954]],[[194635,194635],`mapped`,[22294]],[[194636,194636],`mapped`,[22022]],[[194637,194637],`mapped`,[22295]],[[194638,194638],`mapped`,[22097]],[[194639,194639],`mapped`,[22132]],[[194640,194640],`mapped`,[20999]],[[194641,194641],`mapped`,[22766]],[[194642,194642],`mapped`,[22478]],[[194643,194643],`mapped`,[22516]],[[194644,194644],`mapped`,[22541]],[[194645,194645],`mapped`,[22411]],[[194646,194646],`mapped`,[22578]],[[194647,194647],`mapped`,[22577]],[[194648,194648],`mapped`,[22700]],[[194649,194649],`mapped`,[136420]],[[194650,194650],`mapped`,[22770]],[[194651,194651],`mapped`,[22775]],[[194652,194652],`mapped`,[22790]],[[194653,194653],`mapped`,[22810]],[[194654,194654],`mapped`,[22818]],[[194655,194655],`mapped`,[22882]],[[194656,194656],`mapped`,[136872]],[[194657,194657],`mapped`,[136938]],[[194658,194658],`mapped`,[23020]],[[194659,194659],`mapped`,[23067]],[[194660,194660],`mapped`,[23079]],[[194661,194661],`mapped`,[23e3]],[[194662,194662],`mapped`,[23142]],[[194663,194663],`mapped`,[14062]],[[194664,194664],`disallowed`],[[194665,194665],`mapped`,[23304]],[[194666,194667],`mapped`,[23358]],[[194668,194668],`mapped`,[137672]],[[194669,194669],`mapped`,[23491]],[[194670,194670],`mapped`,[23512]],[[194671,194671],`mapped`,[23527]],[[194672,194672],`mapped`,[23539]],[[194673,194673],`mapped`,[138008]],[[194674,194674],`mapped`,[23551]],[[194675,194675],`mapped`,[23558]],[[194676,194676],`disallowed`],[[194677,194677],`mapped`,[23586]],[[194678,194678],`mapped`,[14209]],[[194679,194679],`mapped`,[23648]],[[194680,194680],`mapped`,[23662]],[[194681,194681],`mapped`,[23744]],[[194682,194682],`mapped`,[23693]],[[194683,194683],`mapped`,[138724]],[[194684,194684],`mapped`,[23875]],[[194685,194685],`mapped`,[138726]],[[194686,194686],`mapped`,[23918]],[[194687,194687],`mapped`,[23915]],[[194688,194688],`mapped`,[23932]],[[194689,194689],`mapped`,[24033]],[[194690,194690],`mapped`,[24034]],[[194691,194691],`mapped`,[14383]],[[194692,194692],`mapped`,[24061]],[[194693,194693],`mapped`,[24104]],[[194694,194694],`mapped`,[24125]],[[194695,194695],`mapped`,[24169]],[[194696,194696],`mapped`,[14434]],[[194697,194697],`mapped`,[139651]],[[194698,194698],`mapped`,[14460]],[[194699,194699],`mapped`,[24240]],[[194700,194700],`mapped`,[24243]],[[194701,194701],`mapped`,[24246]],[[194702,194702],`mapped`,[24266]],[[194703,194703],`mapped`,[172946]],[[194704,194704],`mapped`,[24318]],[[194705,194706],`mapped`,[140081]],[[194707,194707],`mapped`,[33281]],[[194708,194709],`mapped`,[24354]],[[194710,194710],`mapped`,[14535]],[[194711,194711],`mapped`,[144056]],[[194712,194712],`mapped`,[156122]],[[194713,194713],`mapped`,[24418]],[[194714,194714],`mapped`,[24427]],[[194715,194715],`mapped`,[14563]],[[194716,194716],`mapped`,[24474]],[[194717,194717],`mapped`,[24525]],[[194718,194718],`mapped`,[24535]],[[194719,194719],`mapped`,[24569]],[[194720,194720],`mapped`,[24705]],[[194721,194721],`mapped`,[14650]],[[194722,194722],`mapped`,[14620]],[[194723,194723],`mapped`,[24724]],[[194724,194724],`mapped`,[141012]],[[194725,194725],`mapped`,[24775]],[[194726,194726],`mapped`,[24904]],[[194727,194727],`mapped`,[24908]],[[194728,194728],`mapped`,[24910]],[[194729,194729],`mapped`,[24908]],[[194730,194730],`mapped`,[24954]],[[194731,194731],`mapped`,[24974]],[[194732,194732],`mapped`,[25010]],[[194733,194733],`mapped`,[24996]],[[194734,194734],`mapped`,[25007]],[[194735,194735],`mapped`,[25054]],[[194736,194736],`mapped`,[25074]],[[194737,194737],`mapped`,[25078]],[[194738,194738],`mapped`,[25104]],[[194739,194739],`mapped`,[25115]],[[194740,194740],`mapped`,[25181]],[[194741,194741],`mapped`,[25265]],[[194742,194742],`mapped`,[25300]],[[194743,194743],`mapped`,[25424]],[[194744,194744],`mapped`,[142092]],[[194745,194745],`mapped`,[25405]],[[194746,194746],`mapped`,[25340]],[[194747,194747],`mapped`,[25448]],[[194748,194748],`mapped`,[25475]],[[194749,194749],`mapped`,[25572]],[[194750,194750],`mapped`,[142321]],[[194751,194751],`mapped`,[25634]],[[194752,194752],`mapped`,[25541]],[[194753,194753],`mapped`,[25513]],[[194754,194754],`mapped`,[14894]],[[194755,194755],`mapped`,[25705]],[[194756,194756],`mapped`,[25726]],[[194757,194757],`mapped`,[25757]],[[194758,194758],`mapped`,[25719]],[[194759,194759],`mapped`,[14956]],[[194760,194760],`mapped`,[25935]],[[194761,194761],`mapped`,[25964]],[[194762,194762],`mapped`,[143370]],[[194763,194763],`mapped`,[26083]],[[194764,194764],`mapped`,[26360]],[[194765,194765],`mapped`,[26185]],[[194766,194766],`mapped`,[15129]],[[194767,194767],`mapped`,[26257]],[[194768,194768],`mapped`,[15112]],[[194769,194769],`mapped`,[15076]],[[194770,194770],`mapped`,[20882]],[[194771,194771],`mapped`,[20885]],[[194772,194772],`mapped`,[26368]],[[194773,194773],`mapped`,[26268]],[[194774,194774],`mapped`,[32941]],[[194775,194775],`mapped`,[17369]],[[194776,194776],`mapped`,[26391]],[[194777,194777],`mapped`,[26395]],[[194778,194778],`mapped`,[26401]],[[194779,194779],`mapped`,[26462]],[[194780,194780],`mapped`,[26451]],[[194781,194781],`mapped`,[144323]],[[194782,194782],`mapped`,[15177]],[[194783,194783],`mapped`,[26618]],[[194784,194784],`mapped`,[26501]],[[194785,194785],`mapped`,[26706]],[[194786,194786],`mapped`,[26757]],[[194787,194787],`mapped`,[144493]],[[194788,194788],`mapped`,[26766]],[[194789,194789],`mapped`,[26655]],[[194790,194790],`mapped`,[26900]],[[194791,194791],`mapped`,[15261]],[[194792,194792],`mapped`,[26946]],[[194793,194793],`mapped`,[27043]],[[194794,194794],`mapped`,[27114]],[[194795,194795],`mapped`,[27304]],[[194796,194796],`mapped`,[145059]],[[194797,194797],`mapped`,[27355]],[[194798,194798],`mapped`,[15384]],[[194799,194799],`mapped`,[27425]],[[194800,194800],`mapped`,[145575]],[[194801,194801],`mapped`,[27476]],[[194802,194802],`mapped`,[15438]],[[194803,194803],`mapped`,[27506]],[[194804,194804],`mapped`,[27551]],[[194805,194805],`mapped`,[27578]],[[194806,194806],`mapped`,[27579]],[[194807,194807],`mapped`,[146061]],[[194808,194808],`mapped`,[138507]],[[194809,194809],`mapped`,[146170]],[[194810,194810],`mapped`,[27726]],[[194811,194811],`mapped`,[146620]],[[194812,194812],`mapped`,[27839]],[[194813,194813],`mapped`,[27853]],[[194814,194814],`mapped`,[27751]],[[194815,194815],`mapped`,[27926]],[[194816,194816],`mapped`,[27966]],[[194817,194817],`mapped`,[28023]],[[194818,194818],`mapped`,[27969]],[[194819,194819],`mapped`,[28009]],[[194820,194820],`mapped`,[28024]],[[194821,194821],`mapped`,[28037]],[[194822,194822],`mapped`,[146718]],[[194823,194823],`mapped`,[27956]],[[194824,194824],`mapped`,[28207]],[[194825,194825],`mapped`,[28270]],[[194826,194826],`mapped`,[15667]],[[194827,194827],`mapped`,[28363]],[[194828,194828],`mapped`,[28359]],[[194829,194829],`mapped`,[147153]],[[194830,194830],`mapped`,[28153]],[[194831,194831],`mapped`,[28526]],[[194832,194832],`mapped`,[147294]],[[194833,194833],`mapped`,[147342]],[[194834,194834],`mapped`,[28614]],[[194835,194835],`mapped`,[28729]],[[194836,194836],`mapped`,[28702]],[[194837,194837],`mapped`,[28699]],[[194838,194838],`mapped`,[15766]],[[194839,194839],`mapped`,[28746]],[[194840,194840],`mapped`,[28797]],[[194841,194841],`mapped`,[28791]],[[194842,194842],`mapped`,[28845]],[[194843,194843],`mapped`,[132389]],[[194844,194844],`mapped`,[28997]],[[194845,194845],`mapped`,[148067]],[[194846,194846],`mapped`,[29084]],[[194847,194847],`disallowed`],[[194848,194848],`mapped`,[29224]],[[194849,194849],`mapped`,[29237]],[[194850,194850],`mapped`,[29264]],[[194851,194851],`mapped`,[149e3]],[[194852,194852],`mapped`,[29312]],[[194853,194853],`mapped`,[29333]],[[194854,194854],`mapped`,[149301]],[[194855,194855],`mapped`,[149524]],[[194856,194856],`mapped`,[29562]],[[194857,194857],`mapped`,[29579]],[[194858,194858],`mapped`,[16044]],[[194859,194859],`mapped`,[29605]],[[194860,194861],`mapped`,[16056]],[[194862,194862],`mapped`,[29767]],[[194863,194863],`mapped`,[29788]],[[194864,194864],`mapped`,[29809]],[[194865,194865],`mapped`,[29829]],[[194866,194866],`mapped`,[29898]],[[194867,194867],`mapped`,[16155]],[[194868,194868],`mapped`,[29988]],[[194869,194869],`mapped`,[150582]],[[194870,194870],`mapped`,[30014]],[[194871,194871],`mapped`,[150674]],[[194872,194872],`mapped`,[30064]],[[194873,194873],`mapped`,[139679]],[[194874,194874],`mapped`,[30224]],[[194875,194875],`mapped`,[151457]],[[194876,194876],`mapped`,[151480]],[[194877,194877],`mapped`,[151620]],[[194878,194878],`mapped`,[16380]],[[194879,194879],`mapped`,[16392]],[[194880,194880],`mapped`,[30452]],[[194881,194881],`mapped`,[151795]],[[194882,194882],`mapped`,[151794]],[[194883,194883],`mapped`,[151833]],[[194884,194884],`mapped`,[151859]],[[194885,194885],`mapped`,[30494]],[[194886,194887],`mapped`,[30495]],[[194888,194888],`mapped`,[30538]],[[194889,194889],`mapped`,[16441]],[[194890,194890],`mapped`,[30603]],[[194891,194891],`mapped`,[16454]],[[194892,194892],`mapped`,[16534]],[[194893,194893],`mapped`,[152605]],[[194894,194894],`mapped`,[30798]],[[194895,194895],`mapped`,[30860]],[[194896,194896],`mapped`,[30924]],[[194897,194897],`mapped`,[16611]],[[194898,194898],`mapped`,[153126]],[[194899,194899],`mapped`,[31062]],[[194900,194900],`mapped`,[153242]],[[194901,194901],`mapped`,[153285]],[[194902,194902],`mapped`,[31119]],[[194903,194903],`mapped`,[31211]],[[194904,194904],`mapped`,[16687]],[[194905,194905],`mapped`,[31296]],[[194906,194906],`mapped`,[31306]],[[194907,194907],`mapped`,[31311]],[[194908,194908],`mapped`,[153980]],[[194909,194910],`mapped`,[154279]],[[194911,194911],`disallowed`],[[194912,194912],`mapped`,[16898]],[[194913,194913],`mapped`,[154539]],[[194914,194914],`mapped`,[31686]],[[194915,194915],`mapped`,[31689]],[[194916,194916],`mapped`,[16935]],[[194917,194917],`mapped`,[154752]],[[194918,194918],`mapped`,[31954]],[[194919,194919],`mapped`,[17056]],[[194920,194920],`mapped`,[31976]],[[194921,194921],`mapped`,[31971]],[[194922,194922],`mapped`,[32e3]],[[194923,194923],`mapped`,[155526]],[[194924,194924],`mapped`,[32099]],[[194925,194925],`mapped`,[17153]],[[194926,194926],`mapped`,[32199]],[[194927,194927],`mapped`,[32258]],[[194928,194928],`mapped`,[32325]],[[194929,194929],`mapped`,[17204]],[[194930,194930],`mapped`,[156200]],[[194931,194931],`mapped`,[156231]],[[194932,194932],`mapped`,[17241]],[[194933,194933],`mapped`,[156377]],[[194934,194934],`mapped`,[32634]],[[194935,194935],`mapped`,[156478]],[[194936,194936],`mapped`,[32661]],[[194937,194937],`mapped`,[32762]],[[194938,194938],`mapped`,[32773]],[[194939,194939],`mapped`,[156890]],[[194940,194940],`mapped`,[156963]],[[194941,194941],`mapped`,[32864]],[[194942,194942],`mapped`,[157096]],[[194943,194943],`mapped`,[32880]],[[194944,194944],`mapped`,[144223]],[[194945,194945],`mapped`,[17365]],[[194946,194946],`mapped`,[32946]],[[194947,194947],`mapped`,[33027]],[[194948,194948],`mapped`,[17419]],[[194949,194949],`mapped`,[33086]],[[194950,194950],`mapped`,[23221]],[[194951,194951],`mapped`,[157607]],[[194952,194952],`mapped`,[157621]],[[194953,194953],`mapped`,[144275]],[[194954,194954],`mapped`,[144284]],[[194955,194955],`mapped`,[33281]],[[194956,194956],`mapped`,[33284]],[[194957,194957],`mapped`,[36766]],[[194958,194958],`mapped`,[17515]],[[194959,194959],`mapped`,[33425]],[[194960,194960],`mapped`,[33419]],[[194961,194961],`mapped`,[33437]],[[194962,194962],`mapped`,[21171]],[[194963,194963],`mapped`,[33457]],[[194964,194964],`mapped`,[33459]],[[194965,194965],`mapped`,[33469]],[[194966,194966],`mapped`,[33510]],[[194967,194967],`mapped`,[158524]],[[194968,194968],`mapped`,[33509]],[[194969,194969],`mapped`,[33565]],[[194970,194970],`mapped`,[33635]],[[194971,194971],`mapped`,[33709]],[[194972,194972],`mapped`,[33571]],[[194973,194973],`mapped`,[33725]],[[194974,194974],`mapped`,[33767]],[[194975,194975],`mapped`,[33879]],[[194976,194976],`mapped`,[33619]],[[194977,194977],`mapped`,[33738]],[[194978,194978],`mapped`,[33740]],[[194979,194979],`mapped`,[33756]],[[194980,194980],`mapped`,[158774]],[[194981,194981],`mapped`,[159083]],[[194982,194982],`mapped`,[158933]],[[194983,194983],`mapped`,[17707]],[[194984,194984],`mapped`,[34033]],[[194985,194985],`mapped`,[34035]],[[194986,194986],`mapped`,[34070]],[[194987,194987],`mapped`,[160714]],[[194988,194988],`mapped`,[34148]],[[194989,194989],`mapped`,[159532]],[[194990,194990],`mapped`,[17757]],[[194991,194991],`mapped`,[17761]],[[194992,194992],`mapped`,[159665]],[[194993,194993],`mapped`,[159954]],[[194994,194994],`mapped`,[17771]],[[194995,194995],`mapped`,[34384]],[[194996,194996],`mapped`,[34396]],[[194997,194997],`mapped`,[34407]],[[194998,194998],`mapped`,[34409]],[[194999,194999],`mapped`,[34473]],[[195e3,195e3],`mapped`,[34440]],[[195001,195001],`mapped`,[34574]],[[195002,195002],`mapped`,[34530]],[[195003,195003],`mapped`,[34681]],[[195004,195004],`mapped`,[34600]],[[195005,195005],`mapped`,[34667]],[[195006,195006],`mapped`,[34694]],[[195007,195007],`disallowed`],[[195008,195008],`mapped`,[34785]],[[195009,195009],`mapped`,[34817]],[[195010,195010],`mapped`,[17913]],[[195011,195011],`mapped`,[34912]],[[195012,195012],`mapped`,[34915]],[[195013,195013],`mapped`,[161383]],[[195014,195014],`mapped`,[35031]],[[195015,195015],`mapped`,[35038]],[[195016,195016],`mapped`,[17973]],[[195017,195017],`mapped`,[35066]],[[195018,195018],`mapped`,[13499]],[[195019,195019],`mapped`,[161966]],[[195020,195020],`mapped`,[162150]],[[195021,195021],`mapped`,[18110]],[[195022,195022],`mapped`,[18119]],[[195023,195023],`mapped`,[35488]],[[195024,195024],`mapped`,[35565]],[[195025,195025],`mapped`,[35722]],[[195026,195026],`mapped`,[35925]],[[195027,195027],`mapped`,[162984]],[[195028,195028],`mapped`,[36011]],[[195029,195029],`mapped`,[36033]],[[195030,195030],`mapped`,[36123]],[[195031,195031],`mapped`,[36215]],[[195032,195032],`mapped`,[163631]],[[195033,195033],`mapped`,[133124]],[[195034,195034],`mapped`,[36299]],[[195035,195035],`mapped`,[36284]],[[195036,195036],`mapped`,[36336]],[[195037,195037],`mapped`,[133342]],[[195038,195038],`mapped`,[36564]],[[195039,195039],`mapped`,[36664]],[[195040,195040],`mapped`,[165330]],[[195041,195041],`mapped`,[165357]],[[195042,195042],`mapped`,[37012]],[[195043,195043],`mapped`,[37105]],[[195044,195044],`mapped`,[37137]],[[195045,195045],`mapped`,[165678]],[[195046,195046],`mapped`,[37147]],[[195047,195047],`mapped`,[37432]],[[195048,195048],`mapped`,[37591]],[[195049,195049],`mapped`,[37592]],[[195050,195050],`mapped`,[37500]],[[195051,195051],`mapped`,[37881]],[[195052,195052],`mapped`,[37909]],[[195053,195053],`mapped`,[166906]],[[195054,195054],`mapped`,[38283]],[[195055,195055],`mapped`,[18837]],[[195056,195056],`mapped`,[38327]],[[195057,195057],`mapped`,[167287]],[[195058,195058],`mapped`,[18918]],[[195059,195059],`mapped`,[38595]],[[195060,195060],`mapped`,[23986]],[[195061,195061],`mapped`,[38691]],[[195062,195062],`mapped`,[168261]],[[195063,195063],`mapped`,[168474]],[[195064,195064],`mapped`,[19054]],[[195065,195065],`mapped`,[19062]],[[195066,195066],`mapped`,[38880]],[[195067,195067],`mapped`,[168970]],[[195068,195068],`mapped`,[19122]],[[195069,195069],`mapped`,[169110]],[[195070,195071],`mapped`,[38923]],[[195072,195072],`mapped`,[38953]],[[195073,195073],`mapped`,[169398]],[[195074,195074],`mapped`,[39138]],[[195075,195075],`mapped`,[19251]],[[195076,195076],`mapped`,[39209]],[[195077,195077],`mapped`,[39335]],[[195078,195078],`mapped`,[39362]],[[195079,195079],`mapped`,[39422]],[[195080,195080],`mapped`,[19406]],[[195081,195081],`mapped`,[170800]],[[195082,195082],`mapped`,[39698]],[[195083,195083],`mapped`,[4e4]],[[195084,195084],`mapped`,[40189]],[[195085,195085],`mapped`,[19662]],[[195086,195086],`mapped`,[19693]],[[195087,195087],`mapped`,[40295]],[[195088,195088],`mapped`,[172238]],[[195089,195089],`mapped`,[19704]],[[195090,195090],`mapped`,[172293]],[[195091,195091],`mapped`,[172558]],[[195092,195092],`mapped`,[172689]],[[195093,195093],`mapped`,[40635]],[[195094,195094],`mapped`,[19798]],[[195095,195095],`mapped`,[40697]],[[195096,195096],`mapped`,[40702]],[[195097,195097],`mapped`,[40709]],[[195098,195098],`mapped`,[40719]],[[195099,195099],`mapped`,[40726]],[[195100,195100],`mapped`,[40763]],[[195101,195101],`mapped`,[173568]],[[195102,196605],`disallowed`],[[196606,196607],`disallowed`],[[196608,262141],`disallowed`],[[262142,262143],`disallowed`],[[262144,327677],`disallowed`],[[327678,327679],`disallowed`],[[327680,393213],`disallowed`],[[393214,393215],`disallowed`],[[393216,458749],`disallowed`],[[458750,458751],`disallowed`],[[458752,524285],`disallowed`],[[524286,524287],`disallowed`],[[524288,589821],`disallowed`],[[589822,589823],`disallowed`],[[589824,655357],`disallowed`],[[655358,655359],`disallowed`],[[655360,720893],`disallowed`],[[720894,720895],`disallowed`],[[720896,786429],`disallowed`],[[786430,786431],`disallowed`],[[786432,851965],`disallowed`],[[851966,851967],`disallowed`],[[851968,917501],`disallowed`],[[917502,917503],`disallowed`],[[917504,917504],`disallowed`],[[917505,917505],`disallowed`],[[917506,917535],`disallowed`],[[917536,917631],`disallowed`],[[917632,917759],`disallowed`],[[917760,917999],`ignored`],[[918e3,983037],`disallowed`],[[983038,983039],`disallowed`],[[983040,1048573],`disallowed`],[[1048574,1048575],`disallowed`],[[1048576,1114109],`disallowed`],[[1114110,1114111],`disallowed`]]})),sr=b(((e,t)=>{var n=T(`punycode`),r=or(),i={TRANSITIONAL:0,NONTRANSITIONAL:1};function a(e){return e.split(`\0`).map(function(e){return e.normalize(`NFC`)}).join(`\0`)}function o(e){for(var t=0,n=r.length-1;t<=n;){var i=Math.floor((t+n)/2),a=r[i];if(a[0][0]<=e&&a[0][1]>=e)return a;a[0][0]>e?n=i-1:t=i+1}return null}var s=/[\uD800-\uDBFF][\uDC00-\uDFFF]/g;function c(e){return e.replace(s,`_`).length}function l(e,t,n){for(var r=!1,a=``,s=c(e),l=0;l253||s.length===0)&&(a.error=!0);for(var c=0;c63||o.length===0){a.error=!0;break}}return a.error?null:o.join(`.`)},t.exports.toUnicode=function(e,t){var n=f(e,t,i.NONTRANSITIONAL);return{domain:n.string,error:n.error}},t.exports.PROCESSING_OPTIONS=i})),cr=b(((e,t)=>{let n=T(`punycode`),r=sr(),i={ftp:21,file:null,gopher:70,http:80,https:443,ws:80,wss:443},a=Symbol(`failure`);function o(e){return n.ucs2.decode(e).length}function s(e,t){let n=e[t];return isNaN(n)?void 0:String.fromCodePoint(n)}function c(e){return e>=48&&e<=57}function l(e){return e>=65&&e<=90||e>=97&&e<=122}function u(e){return l(e)||c(e)}function d(e){return c(e)||e>=65&&e<=70||e>=97&&e<=102}function f(e){return e===`.`||e.toLowerCase()===`%2e`}function p(e){return e=e.toLowerCase(),e===`..`||e===`%2e.`||e===`.%2e`||e===`%2e%2e`}function m(e,t){return l(e)&&(t===58||t===124)}function h(e){return e.length===2&&l(e.codePointAt(0))&&(e[1]===`:`||e[1]===`|`)}function g(e){return e.length===2&&l(e.codePointAt(0))&&e[1]===`:`}function _(e){return e.search(/\u0000|\u0009|\u000A|\u000D|\u0020|#|%|\/|:|\?|@|\[|\\|\]/)!==-1}function v(e){return e.search(/\u0000|\u0009|\u000A|\u000D|\u0020|#|\/|:|\?|@|\[|\\|\]/)!==-1}function y(e){return i[e]!==void 0}function b(e){return y(e.scheme)}function x(e){return i[e]}function S(e){let t=e.toString(16).toUpperCase();return t.length===1&&(t=`0`+t),`%`+t}function C(e){let t=new Buffer(e),n=``;for(let e=0;e126}let D=new Set([32,34,35,60,62,63,96,123,125]);function O(e){return E(e)||D.has(e)}let k=new Set([47,58,59,61,64,91,92,93,94,124]);function A(e){return O(e)||k.has(e)}function j(e,t){let n=String.fromCodePoint(e);return t(e)?C(n):n}function M(e){let t=10;return e.length>=2&&e.charAt(0)===`0`&&e.charAt(1).toLowerCase()===`x`?(e=e.substring(2),t=16):e.length>=2&&e.charAt(0)===`0`&&(e=e.substring(1),t=8),e===``?0:(t===10?/[^0-9]/:t===16?/[^0-9A-Fa-f]/:/[^0-7]/).test(e)?a:parseInt(e,t)}function N(e){let t=e.split(`.`);if(t[t.length-1]===``&&t.length>1&&t.pop(),t.length>4)return e;let n=[];for(let r of t){if(r===``)return e;let t=M(r);if(t===a)return e;n.push(t)}for(let e=0;e255)return a;if(n[n.length-1]>=256**(5-n.length))return a;let r=n.pop(),i=0;for(let e of n)r+=e*256**(3-i),++i;return r}function ee(e){let t=``,n=e;for(let e=1;e<=4;++e)t=String(n%256)+t,e!==4&&(t=`.`+t),n=Math.floor(n/256);return t}function P(e){let t=[0,0,0,0,0,0,0,0],r=0,i=null,o=0;if(e=n.ucs2.decode(e),e[o]===58){if(e[o+1]!==58)return a;o+=2,++r,i=r}for(;o6))return a;let n=0;for(;e[o]!==void 0;){let i=null;if(n>0)if(e[o]===46&&n<4)++o;else return a;if(!c(e[o]))return a;for(;c(e[o]);){let t=parseInt(s(e,o));if(i===null)i=t;else if(i===0)return a;else i=i*10+t;if(i>255)return a;++o}t[r]=t[r]*256+i,++n,(n===2||n===4)&&++r}if(n!==4)return a;break}else if(e[o]===58){if(++o,e[o]===void 0)return a}else if(e[o]!==void 0)return a;t[r]=n,++r}if(i!==null){let e=r-i;for(r=7;r!==0&&e>0;){let n=t[i+e-1];t[i+e-1]=t[r],t[r]=n,--r,--e}}else if(i===null&&r!==8)return a;return t}function F(e){let t=``,n=R(e).idx,r=!1;for(let i=0;i<=7;++i)if(!(r&&e[i]===0)){if(r&&=!1,n===i){t+=i===0?`::`:`:`,r=!0;continue}t+=e[i].toString(16),i!==7&&(t+=`:`)}return t}function I(e,t){if(e[0]===`[`)return e[e.length-1]===`]`?P(e.substring(1,e.length-1)):a;if(!t)return L(e);let n=w(e),i=r.toASCII(n,!1,r.PROCESSING_OPTIONS.NONTRANSITIONAL,!1);if(i===null||_(i))return a;let o=N(i);return typeof o==`number`||o===a?o:i}function L(e){if(v(e))return a;let t=``,r=n.ucs2.decode(e);for(let e=0;en&&(t=r,n=i),r=null,i=0);return i>n&&(t=r,n=i),{idx:t,len:n}}function z(e){return typeof e==`number`?ee(e):e instanceof Array?`[`+F(e)+`]`:e}function B(e){return e.replace(/^[\u0000-\u001F\u0020]+|[\u0000-\u001F\u0020]+$/g,``)}function V(e){return e.replace(/\u0009|\u000A|\u000D/g,``)}function te(e){let t=e.path;t.length!==0&&(e.scheme===`file`&&t.length===1&&re(t[0])||t.pop())}function H(e){return e.username!==``||e.password!==``}function ne(e){return e.host===null||e.host===``||e.cannotBeABaseURL||e.scheme===`file`}function re(e){return/^[A-Za-z]:$/.test(e)}function U(e,t,r,i,o){if(this.pointer=0,this.input=e,this.base=t||null,this.encodingOverride=r||`utf-8`,this.stateOverride=o,this.url=i,this.failure=!1,this.parseError=!1,!this.url){this.url={scheme:``,username:``,password:``,host:null,port:null,path:[],query:null,fragment:null,cannotBeABaseURL:!1};let e=B(this.input);e!==this.input&&(this.parseError=!0),this.input=e}let s=V(this.input);for(s!==this.input&&(this.parseError=!0),this.input=s,this.state=o||`scheme start`,this.buffer=``,this.atFlag=!1,this.arrFlag=!1,this.passwordTokenSeenFlag=!1,this.input=n.ucs2.decode(this.input);this.pointer<=this.input.length;++this.pointer){let e=this.input[this.pointer],t=isNaN(e)?void 0:String.fromCodePoint(e),n=this[`parse `+this.state](e,t);if(n){if(n===a){this.failure=!0;break}}else break}}U.prototype[`parse scheme start`]=function(e,t){if(l(e))this.buffer+=t.toLowerCase(),this.state=`scheme`;else if(!this.stateOverride)this.state=`no scheme`,--this.pointer;else return this.parseError=!0,a;return!0},U.prototype[`parse scheme`]=function(e,t){if(u(e)||e===43||e===45||e===46)this.buffer+=t.toLowerCase();else if(e===58){if(this.stateOverride&&(b(this.url)&&!y(this.buffer)||!b(this.url)&&y(this.buffer)||(H(this.url)||this.url.port!==null)&&this.buffer===`file`||this.url.scheme===`file`&&(this.url.host===``||this.url.host===null))||(this.url.scheme=this.buffer,this.buffer=``,this.stateOverride))return!1;this.url.scheme===`file`?((this.input[this.pointer+1]!==47||this.input[this.pointer+2]!==47)&&(this.parseError=!0),this.state=`file`):b(this.url)&&this.base!==null&&this.base.scheme===this.url.scheme?this.state=`special relative or authority`:b(this.url)?this.state=`special authority slashes`:this.input[this.pointer+1]===47?(this.state=`path or authority`,++this.pointer):(this.url.cannotBeABaseURL=!0,this.url.path.push(``),this.state=`cannot-be-a-base-URL path`)}else if(!this.stateOverride)this.buffer=``,this.state=`no scheme`,this.pointer=-1;else return this.parseError=!0,a;return!0},U.prototype[`parse no scheme`]=function(e){return this.base===null||this.base.cannotBeABaseURL&&e!==35?a:(this.base.cannotBeABaseURL&&e===35?(this.url.scheme=this.base.scheme,this.url.path=this.base.path.slice(),this.url.query=this.base.query,this.url.fragment=``,this.url.cannotBeABaseURL=!0,this.state=`fragment`):this.base.scheme===`file`?(this.state=`file`,--this.pointer):(this.state=`relative`,--this.pointer),!0)},U.prototype[`parse special relative or authority`]=function(e){return e===47&&this.input[this.pointer+1]===47?(this.state=`special authority ignore slashes`,++this.pointer):(this.parseError=!0,this.state=`relative`,--this.pointer),!0},U.prototype[`parse path or authority`]=function(e){return e===47?this.state=`authority`:(this.state=`path`,--this.pointer),!0},U.prototype[`parse relative`]=function(e){return this.url.scheme=this.base.scheme,isNaN(e)?(this.url.username=this.base.username,this.url.password=this.base.password,this.url.host=this.base.host,this.url.port=this.base.port,this.url.path=this.base.path.slice(),this.url.query=this.base.query):e===47?this.state=`relative slash`:e===63?(this.url.username=this.base.username,this.url.password=this.base.password,this.url.host=this.base.host,this.url.port=this.base.port,this.url.path=this.base.path.slice(),this.url.query=``,this.state=`query`):e===35?(this.url.username=this.base.username,this.url.password=this.base.password,this.url.host=this.base.host,this.url.port=this.base.port,this.url.path=this.base.path.slice(),this.url.query=this.base.query,this.url.fragment=``,this.state=`fragment`):b(this.url)&&e===92?(this.parseError=!0,this.state=`relative slash`):(this.url.username=this.base.username,this.url.password=this.base.password,this.url.host=this.base.host,this.url.port=this.base.port,this.url.path=this.base.path.slice(0,this.base.path.length-1),this.state=`path`,--this.pointer),!0},U.prototype[`parse relative slash`]=function(e){return b(this.url)&&(e===47||e===92)?(e===92&&(this.parseError=!0),this.state=`special authority ignore slashes`):e===47?this.state=`authority`:(this.url.username=this.base.username,this.url.password=this.base.password,this.url.host=this.base.host,this.url.port=this.base.port,this.state=`path`,--this.pointer),!0},U.prototype[`parse special authority slashes`]=function(e){return e===47&&this.input[this.pointer+1]===47?(this.state=`special authority ignore slashes`,++this.pointer):(this.parseError=!0,this.state=`special authority ignore slashes`,--this.pointer),!0},U.prototype[`parse special authority ignore slashes`]=function(e){return e!==47&&e!==92?(this.state=`authority`,--this.pointer):this.parseError=!0,!0},U.prototype[`parse authority`]=function(e,t){if(e===64){this.parseError=!0,this.atFlag&&(this.buffer=`%40`+this.buffer),this.atFlag=!0;let e=o(this.buffer);for(let t=0;t2**16-1)return this.parseError=!0,a;this.url.port=e===x(this.url.scheme)?null:e,this.buffer=``}if(this.stateOverride)return!1;this.state=`path start`,--this.pointer}else return this.parseError=!0,a;return!0};let ie=new Set([47,92,63,35]);U.prototype[`parse file`]=function(e){return this.url.scheme=`file`,e===47||e===92?(e===92&&(this.parseError=!0),this.state=`file slash`):this.base!==null&&this.base.scheme===`file`?isNaN(e)?(this.url.host=this.base.host,this.url.path=this.base.path.slice(),this.url.query=this.base.query):e===63?(this.url.host=this.base.host,this.url.path=this.base.path.slice(),this.url.query=``,this.state=`query`):e===35?(this.url.host=this.base.host,this.url.path=this.base.path.slice(),this.url.query=this.base.query,this.url.fragment=``,this.state=`fragment`):(this.input.length-this.pointer-1==0||!m(e,this.input[this.pointer+1])||this.input.length-this.pointer-1>=2&&!ie.has(this.input[this.pointer+2])?(this.url.host=this.base.host,this.url.path=this.base.path.slice(),te(this.url)):this.parseError=!0,this.state=`path`,--this.pointer):(this.state=`path`,--this.pointer),!0},U.prototype[`parse file slash`]=function(e){return e===47||e===92?(e===92&&(this.parseError=!0),this.state=`file host`):(this.base!==null&&this.base.scheme===`file`&&(g(this.base.path[0])?this.url.path.push(this.base.path[0]):this.url.host=this.base.host),this.state=`path`,--this.pointer),!0},U.prototype[`parse file host`]=function(e,t){if(isNaN(e)||e===47||e===92||e===63||e===35)if(--this.pointer,!this.stateOverride&&h(this.buffer))this.parseError=!0,this.state=`path`;else if(this.buffer===``){if(this.url.host=``,this.stateOverride)return!1;this.state=`path start`}else{let e=I(this.buffer,b(this.url));if(e===a)return a;if(e===`localhost`&&(e=``),this.url.host=e,this.stateOverride)return!1;this.buffer=``,this.state=`path start`}else this.buffer+=t;return!0},U.prototype[`parse path start`]=function(e){return b(this.url)?(e===92&&(this.parseError=!0),this.state=`path`,e!==47&&e!==92&&--this.pointer):!this.stateOverride&&e===63?(this.url.query=``,this.state=`query`):!this.stateOverride&&e===35?(this.url.fragment=``,this.state=`fragment`):e!==void 0&&(this.state=`path`,e!==47&&--this.pointer),!0},U.prototype[`parse path`]=function(e){if(isNaN(e)||e===47||b(this.url)&&e===92||!this.stateOverride&&(e===63||e===35)){if(b(this.url)&&e===92&&(this.parseError=!0),p(this.buffer)?(te(this.url),e!==47&&!(b(this.url)&&e===92)&&this.url.path.push(``)):f(this.buffer)&&e!==47&&!(b(this.url)&&e===92)?this.url.path.push(``):f(this.buffer)||(this.url.scheme===`file`&&this.url.path.length===0&&h(this.buffer)&&(this.url.host!==``&&this.url.host!==null&&(this.parseError=!0,this.url.host=``),this.buffer=this.buffer[0]+`:`),this.url.path.push(this.buffer)),this.buffer=``,this.url.scheme===`file`&&(e===void 0||e===63||e===35))for(;this.url.path.length>1&&this.url.path[0]===``;)this.parseError=!0,this.url.path.shift();e===63&&(this.url.query=``,this.state=`query`),e===35&&(this.url.fragment=``,this.state=`fragment`)}else e===37&&(!d(this.input[this.pointer+1])||!d(this.input[this.pointer+2]))&&(this.parseError=!0),this.buffer+=j(e,O);return!0},U.prototype[`parse cannot-be-a-base-URL path`]=function(e){return e===63?(this.url.query=``,this.state=`query`):e===35?(this.url.fragment=``,this.state=`fragment`):(!isNaN(e)&&e!==37&&(this.parseError=!0),e===37&&(!d(this.input[this.pointer+1])||!d(this.input[this.pointer+2]))&&(this.parseError=!0),isNaN(e)||(this.url.path[0]=this.url.path[0]+j(e,E))),!0},U.prototype[`parse query`]=function(e,t){if(isNaN(e)||!this.stateOverride&&e===35){(!b(this.url)||this.url.scheme===`ws`||this.url.scheme===`wss`)&&(this.encodingOverride=`utf-8`);let t=new Buffer(this.buffer);for(let e=0;e126||t[e]===34||t[e]===35||t[e]===60||t[e]===62?this.url.query+=S(t[e]):this.url.query+=String.fromCodePoint(t[e]);this.buffer=``,e===35&&(this.url.fragment=``,this.state=`fragment`)}else e===37&&(!d(this.input[this.pointer+1])||!d(this.input[this.pointer+2]))&&(this.parseError=!0),this.buffer+=t;return!0},U.prototype[`parse fragment`]=function(e){return isNaN(e)||(e===0?this.parseError=!0:(e===37&&(!d(this.input[this.pointer+1])||!d(this.input[this.pointer+2]))&&(this.parseError=!0),this.url.fragment+=j(e,E))),!0};function W(e,t){let n=e.scheme+`:`;if(e.host===null?e.host===null&&e.scheme===`file`&&(n+=`//`):(n+=`//`,(e.username!==``||e.password!==``)&&(n+=e.username,e.password!==``&&(n+=`:`+e.password),n+=`@`),n+=z(e.host),e.port!==null&&(n+=`:`+e.port)),e.cannotBeABaseURL)n+=e.path[0];else for(let t of e.path)n+=`/`+t;return e.query!==null&&(n+=`?`+e.query),!t&&e.fragment!==null&&(n+=`#`+e.fragment),n}function ae(e){let t=e.scheme+`://`;return t+=z(e.host),e.port!==null&&(t+=`:`+e.port),t}t.exports.serializeURL=W,t.exports.serializeURLOrigin=function(e){switch(e.scheme){case`blob`:try{return t.exports.serializeURLOrigin(t.exports.parseURL(e.path[0]))}catch{return`null`}case`ftp`:case`gopher`:case`http`:case`https`:case`ws`:case`wss`:return ae({scheme:e.scheme,host:e.host,port:e.port});case`file`:return`file://`;default:return`null`}},t.exports.basicURLParse=function(e,t){t===void 0&&(t={});let n=new U(e,t.baseURL,t.encodingOverride,t.url,t.stateOverride);return n.failure?`failure`:n.url},t.exports.setTheUsername=function(e,t){e.username=``;let r=n.ucs2.decode(t);for(let t=0;t{let t=cr();e.implementation=class{constructor(e){let n=e[0],r=e[1],i=null;if(r!==void 0&&(i=t.basicURLParse(r),i===`failure`))throw TypeError(`Invalid base URL`);let a=t.basicURLParse(n,{baseURL:i});if(a===`failure`)throw TypeError(`Invalid URL`);this._url=a}get href(){return t.serializeURL(this._url)}set href(e){let n=t.basicURLParse(e);if(n===`failure`)throw TypeError(`Invalid URL`);this._url=n}get origin(){return t.serializeURLOrigin(this._url)}get protocol(){return this._url.scheme+`:`}set protocol(e){t.basicURLParse(e+`:`,{url:this._url,stateOverride:`scheme start`})}get username(){return this._url.username}set username(e){t.cannotHaveAUsernamePasswordPort(this._url)||t.setTheUsername(this._url,e)}get password(){return this._url.password}set password(e){t.cannotHaveAUsernamePasswordPort(this._url)||t.setThePassword(this._url,e)}get host(){let e=this._url;return e.host===null?``:e.port===null?t.serializeHost(e.host):t.serializeHost(e.host)+`:`+t.serializeInteger(e.port)}set host(e){this._url.cannotBeABaseURL||t.basicURLParse(e,{url:this._url,stateOverride:`host`})}get hostname(){return this._url.host===null?``:t.serializeHost(this._url.host)}set hostname(e){this._url.cannotBeABaseURL||t.basicURLParse(e,{url:this._url,stateOverride:`hostname`})}get port(){return this._url.port===null?``:t.serializeInteger(this._url.port)}set port(e){t.cannotHaveAUsernamePasswordPort(this._url)||(e===``?this._url.port=null:t.basicURLParse(e,{url:this._url,stateOverride:`port`}))}get pathname(){return this._url.cannotBeABaseURL?this._url.path[0]:this._url.path.length===0?``:`/`+this._url.path.join(`/`)}set pathname(e){this._url.cannotBeABaseURL||(this._url.path=[],t.basicURLParse(e,{url:this._url,stateOverride:`path start`}))}get search(){return this._url.query===null||this._url.query===``?``:`?`+this._url.query}set search(e){let n=this._url;if(e===``){n.query=null;return}let r=e[0]===`?`?e.substring(1):e;n.query=``,t.basicURLParse(r,{url:n,stateOverride:`query`})}get hash(){return this._url.fragment===null||this._url.fragment===``?``:`#`+this._url.fragment}set hash(e){if(e===``){this._url.fragment=null;return}let n=e[0]===`#`?e.substring(1):e;this._url.fragment=``,t.basicURLParse(n,{url:this._url,stateOverride:`fragment`})}toJSON(){return this.href}}})),ur=b(((e,t)=>{let n=ir(),r=ar(),i=lr(),a=r.implSymbol;function o(e){if(!this||this[a]||!(this instanceof o))throw TypeError(`Failed to construct 'URL': Please use the 'new' operator, this DOM object constructor cannot be called as a function.`);if(arguments.length<1)throw TypeError(`Failed to construct 'URL': 1 argument required, but only `+arguments.length+` present.`);let r=[];for(let e=0;e{e.URL=ur().interface,e.serializeURL=cr().serializeURL,e.serializeURLOrigin=cr().serializeURLOrigin,e.basicURLParse=cr().basicURLParse,e.setTheUsername=cr().setTheUsername,e.setThePassword=cr().setThePassword,e.serializeHost=cr().serializeHost,e.serializeInteger=cr().serializeInteger,e.parseURL=cr().parseURL})),fr=b(((e,t)=>{Object.defineProperty(e,`__esModule`,{value:!0});function n(e){return e&&typeof e==`object`&&`default`in e?e.default:e}var r=n(T(`stream`)),i=n(T(`http`)),a=n(T(`url`)),o=n(dr()),s=n(T(`https`)),c=n(T(`zlib`));let l=r.Readable,u=Symbol(`buffer`),d=Symbol(`type`);var f=class e{constructor(){this[d]=``;let t=arguments[0],n=arguments[1],r=[],i=0;if(t){let n=t,a=Number(n.length);for(let t=0;t1&&arguments[1]!==void 0?arguments[1]:{},i=n.size;let a=i===void 0?0:i;var o=n.timeout;let s=o===void 0?0:o;e==null?e=null:b(e)?e=Buffer.from(e.toString()):x(e)||Buffer.isBuffer(e)||(Object.prototype.toString.call(e)===`[object ArrayBuffer]`?e=Buffer.from(e):ArrayBuffer.isView(e)?e=Buffer.from(e.buffer,e.byteOffset,e.byteLength):e instanceof r||(e=Buffer.from(String(e)))),this[h]={body:e,disturbed:!1,error:null},this.size=a,this.timeout=s,e instanceof r&&e.on(`error`,function(e){let n=e.name===`AbortError`?e:new p(`Invalid response body while trying to fetch ${t.url}: ${e.message}`,`system`,e);t[h].error=n})}_.prototype={get body(){return this[h].body},get bodyUsed(){return this[h].disturbed},arrayBuffer(){return v.call(this).then(function(e){return e.buffer.slice(e.byteOffset,e.byteOffset+e.byteLength)})},blob(){let e=this.headers&&this.headers.get(`content-type`)||``;return v.call(this).then(function(t){return Object.assign(new f([],{type:e.toLowerCase()}),{[u]:t})})},json(){var e=this;return v.call(this).then(function(t){try{return JSON.parse(t.toString())}catch(t){return _.Promise.reject(new p(`invalid json response body at ${e.url} reason: ${t.message}`,`invalid-json`))}})},text(){return v.call(this).then(function(e){return e.toString()})},buffer(){return v.call(this)},textConverted(){var e=this;return v.call(this).then(function(t){return y(t,e.headers)})}},Object.defineProperties(_.prototype,{body:{enumerable:!0},bodyUsed:{enumerable:!0},arrayBuffer:{enumerable:!0},blob:{enumerable:!0},json:{enumerable:!0},text:{enumerable:!0}}),_.mixIn=function(e){for(let t of Object.getOwnPropertyNames(_.prototype))if(!(t in e)){let n=Object.getOwnPropertyDescriptor(_.prototype,t);Object.defineProperty(e,t,n)}};function v(){var e=this;if(this[h].disturbed)return _.Promise.reject(TypeError(`body used already for: ${this.url}`));if(this[h].disturbed=!0,this[h].error)return _.Promise.reject(this[h].error);let t=this.body;if(t===null)return _.Promise.resolve(Buffer.alloc(0));if(x(t)&&(t=t.stream()),Buffer.isBuffer(t))return _.Promise.resolve(t);if(!(t instanceof r))return _.Promise.resolve(Buffer.alloc(0));let n=[],i=0,a=!1;return new _.Promise(function(r,o){let s;e.timeout&&(s=setTimeout(function(){a=!0,o(new p(`Response timeout while trying to fetch ${e.url} (over ${e.timeout}ms)`,`body-timeout`))},e.timeout)),t.on(`error`,function(t){t.name===`AbortError`?(a=!0,o(t)):o(new p(`Invalid response body while trying to fetch ${e.url}: ${t.message}`,`system`,t))}),t.on(`data`,function(t){if(!(a||t===null)){if(e.size&&i+t.length>e.size){a=!0,o(new p(`content size at ${e.url} over limit: ${e.size}`,`max-size`));return}i+=t.length,n.push(t)}}),t.on(`end`,function(){if(!a){clearTimeout(s);try{r(Buffer.concat(n,i))}catch(t){o(new p(`Could not create Buffer from response body for ${e.url}: ${t.message}`,`system`,t))}}})})}function y(e,t){if(typeof m!=`function`)throw Error("The package `encoding` must be installed to use the textConverted() function");let n=t.get(`content-type`),r=`utf-8`,i,a;return n&&(i=/charset=([^;]*)/i.exec(n)),a=e.slice(0,1024).toString(),!i&&a&&(i=/0&&arguments[0]!==void 0?arguments[0]:void 0;if(this[M]=Object.create(null),t instanceof e){let e=t.raw(),n=Object.keys(e);for(let t of n)for(let n of e[t])this.append(t,n);return}if(t!=null)if(typeof t==`object`){let e=t[Symbol.iterator];if(e!=null){if(typeof e!=`function`)throw TypeError(`Header pairs must be iterable`);let n=[];for(let e of t){if(typeof e!=`object`||typeof e[Symbol.iterator]!=`function`)throw TypeError(`Each header pair must be iterable`);n.push(Array.from(e))}for(let e of n){if(e.length!==2)throw TypeError(`Each header pair must be a name/value tuple`);this.append(e[0],e[1])}}else for(let e of Object.keys(t)){let n=t[e];this.append(e,n)}}else throw TypeError(`Provided initializer must be an object`)}get(e){e=`${e}`,k(e);let t=j(this[M],e);return t===void 0?null:this[M][t].join(`, `)}forEach(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:void 0,n=ee(this),r=0;for(;r1&&arguments[1]!==void 0?arguments[1]:`key+value`;return Object.keys(e[M]).sort().map(t===`key`?function(e){return e.toLowerCase()}:t===`value`?function(t){return e[M][t].join(`, `)}:function(t){return[t.toLowerCase(),e[M][t].join(`, `)]})}let P=Symbol(`internal`);function F(e,t){let n=Object.create(I);return n[P]={target:e,kind:t,index:0},n}let I=Object.setPrototypeOf({next(){if(!this||Object.getPrototypeOf(this)!==I)throw TypeError("Value of `this` is not a HeadersIterator");var e=this[P];let t=e.target,n=e.kind,r=e.index,i=ee(t,n);return r>=i.length?{value:void 0,done:!0}:(this[P].index=r+1,{value:i[r],done:!1})}},Object.getPrototypeOf(Object.getPrototypeOf([][Symbol.iterator]())));Object.defineProperty(I,Symbol.toStringTag,{value:`HeadersIterator`,writable:!1,enumerable:!1,configurable:!0});function L(e){let t=Object.assign({__proto__:null},e[M]),n=j(e[M],`Host`);return n!==void 0&&(t[n]=t[n][0]),t}function R(e){let t=new N;for(let n of Object.keys(e))if(!D.test(n))if(Array.isArray(e[n]))for(let r of e[n])O.test(r)||(t[M][n]===void 0?t[M][n]=[r]:t[M][n].push(r));else O.test(e[n])||(t[M][n]=[e[n]]);return t}let z=Symbol(`Response internals`),B=i.STATUS_CODES;var V=class e{constructor(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:null,t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};_.call(this,e,t);let n=t.status||200,r=new N(t.headers);if(e!=null&&!r.has(`Content-Type`)){let t=C(e);t&&r.append(`Content-Type`,t)}this[z]={url:t.url,status:n,statusText:t.statusText||B[n],headers:r,counter:t.counter}}get url(){return this[z].url||``}get status(){return this[z].status}get ok(){return this[z].status>=200&&this[z].status<300}get redirected(){return this[z].counter>0}get statusText(){return this[z].statusText}get headers(){return this[z].headers}clone(){return new e(S(this),{url:this.url,status:this.status,statusText:this.statusText,headers:this.headers,ok:this.ok,redirected:this.redirected})}};_.mixIn(V.prototype),Object.defineProperties(V.prototype,{url:{enumerable:!0},status:{enumerable:!0},ok:{enumerable:!0},redirected:{enumerable:!0},statusText:{enumerable:!0},headers:{enumerable:!0},clone:{enumerable:!0}}),Object.defineProperty(V.prototype,Symbol.toStringTag,{value:`Response`,writable:!1,enumerable:!1,configurable:!0});let te=Symbol(`Request internals`),H=a.URL||o.URL,ne=a.parse,re=a.format;function U(e){return/^[a-zA-Z][a-zA-Z\d+\-.]*:/.exec(e)&&(e=new H(e).toString()),ne(e)}let ie=`destroy`in r.Readable.prototype;function W(e){return typeof e==`object`&&typeof e[te]==`object`}function ae(e){let t=e&&typeof e==`object`&&Object.getPrototypeOf(e);return!!(t&&t.constructor.name===`AbortSignal`)}var G=class e{constructor(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},n;W(e)?n=U(e.url):(n=e&&e.href?U(e.href):U(`${e}`),e={});let r=t.method||e.method||`GET`;if(r=r.toUpperCase(),(t.body!=null||W(e)&&e.body!==null)&&(r===`GET`||r===`HEAD`))throw TypeError(`Request with GET/HEAD method cannot have body`);let i=t.body==null?W(e)&&e.body!==null?S(e):null:t.body;_.call(this,i,{timeout:t.timeout||e.timeout||0,size:t.size||e.size||0});let a=new N(t.headers||e.headers||{});if(i!=null&&!a.has(`Content-Type`)){let e=C(i);e&&a.append(`Content-Type`,e)}let o=W(e)?e.signal:null;if(`signal`in t&&(o=t.signal),o!=null&&!ae(o))throw TypeError(`Expected signal to be an instanceof AbortSignal`);this[te]={method:r,redirect:t.redirect||e.redirect||`follow`,headers:a,parsedURL:n,signal:o},this.follow=t.follow===void 0?e.follow===void 0?20:e.follow:t.follow,this.compress=t.compress===void 0?e.compress===void 0?!0:e.compress:t.compress,this.counter=t.counter||e.counter||0,this.agent=t.agent||e.agent}get method(){return this[te].method}get url(){return re(this[te].parsedURL)}get headers(){return this[te].headers}get redirect(){return this[te].redirect}get signal(){return this[te].signal}clone(){return new e(this)}};_.mixIn(G.prototype),Object.defineProperty(G.prototype,Symbol.toStringTag,{value:`Request`,writable:!1,enumerable:!1,configurable:!0}),Object.defineProperties(G.prototype,{method:{enumerable:!0},url:{enumerable:!0},headers:{enumerable:!0},redirect:{enumerable:!0},clone:{enumerable:!0},signal:{enumerable:!0}});function oe(e){let t=e[te].parsedURL,n=new N(e[te].headers);if(n.has(`Accept`)||n.set(`Accept`,`*/*`),!t.protocol||!t.hostname)throw TypeError(`Only absolute URLs are supported`);if(!/^https?:$/.test(t.protocol))throw TypeError(`Only HTTP(S) protocols are supported`);if(e.signal&&e.body instanceof r.Readable&&!ie)throw Error(`Cancellation of streamed requests with AbortSignal is not supported in node < 8`);let i=null;if(e.body==null&&/^(POST|PUT)$/i.test(e.method)&&(i=`0`),e.body!=null){let t=w(e);typeof t==`number`&&(i=String(t))}i&&n.set(`Content-Length`,i),n.has(`User-Agent`)||n.set(`User-Agent`,`node-fetch/1.0 (+https://github.com/bitinn/node-fetch)`),e.compress&&!n.has(`Accept-Encoding`)&&n.set(`Accept-Encoding`,`gzip,deflate`);let a=e.agent;return typeof a==`function`&&(a=a(t)),Object.assign({},t,{method:e.method,headers:L(n),agent:a})}function se(e){Error.call(this,e),this.type=`aborted`,this.message=e,Error.captureStackTrace(this,this.constructor)}se.prototype=Object.create(Error.prototype),se.prototype.constructor=se,se.prototype.name=`AbortError`;let ce=a.URL||o.URL,le=r.PassThrough,ue=function(e,t){let n=new ce(t).hostname,r=new ce(e).hostname;return n===r||n[n.length-r.length-1]===`.`&&n.endsWith(r)},de=function(e,t){return new ce(t).protocol===new ce(e).protocol};function fe(e,t){if(!fe.Promise)throw Error(`native promise missing, set fetch.Promise to your favorite alternative`);return _.Promise=fe.Promise,new fe.Promise(function(n,a){let o=new G(e,t),l=oe(o),u=(l.protocol===`https:`?s:i).request,d=o.signal,f=null,m=function(){let e=new se(`The user aborted a request.`);a(e),o.body&&o.body instanceof r.Readable&&me(o.body,e),!(!f||!f.body)&&f.body.emit(`error`,e)};if(d&&d.aborted){m();return}let h=function(){m(),v()},g=u(l),_;d&&d.addEventListener(`abort`,h);function v(){g.abort(),d&&d.removeEventListener(`abort`,h),clearTimeout(_)}o.timeout&&g.once(`socket`,function(e){_=setTimeout(function(){a(new p(`network timeout at: ${o.url}`,`request-timeout`)),v()},o.timeout)}),g.on(`error`,function(e){a(new p(`request to ${o.url} failed, reason: ${e.message}`,`system`,e)),f&&f.body&&me(f.body,e),v()}),pe(g,function(e){d&&d.aborted||f&&f.body&&me(f.body,e)}),parseInt(process.version.substring(1))<14&&g.on(`socket`,function(e){e.addListener(`close`,function(t){let n=e.listenerCount(`data`)>0;if(f&&n&&!t&&!(d&&d.aborted)){let e=Error(`Premature close`);e.code=`ERR_STREAM_PREMATURE_CLOSE`,f.body.emit(`error`,e)}})}),g.on(`response`,function(e){clearTimeout(_);let t=R(e.headers);if(fe.isRedirect(e.statusCode)){let r=t.get(`Location`),i=null;try{i=r===null?null:new ce(r,o.url).toString()}catch{if(o.redirect!==`manual`){a(new p(`uri requested responds with an invalid redirect URL: ${r}`,`invalid-redirect`)),v();return}}switch(o.redirect){case`error`:a(new p(`uri requested responds with a redirect, redirect mode is set to error: ${o.url}`,`no-redirect`)),v();return;case`manual`:if(i!==null)try{t.set(`Location`,i)}catch(e){a(e)}break;case`follow`:if(i===null)break;if(o.counter>=o.follow){a(new p(`maximum redirect reached at: ${o.url}`,`max-redirect`)),v();return}let r={headers:new N(o.headers),follow:o.follow,counter:o.counter+1,agent:o.agent,compress:o.compress,method:o.method,body:o.body,signal:o.signal,timeout:o.timeout,size:o.size};if(!ue(o.url,i)||!de(o.url,i))for(let e of[`authorization`,`www-authenticate`,`cookie`,`cookie2`])r.headers.delete(e);if(e.statusCode!==303&&o.body&&w(o)===null){a(new p(`Cannot follow redirect with body being a readable stream`,`unsupported-redirect`)),v();return}(e.statusCode===303||(e.statusCode===301||e.statusCode===302)&&o.method===`POST`)&&(r.method=`GET`,r.body=void 0,r.headers.delete(`content-length`)),n(fe(new G(i,r))),v();return}}e.once(`end`,function(){d&&d.removeEventListener(`abort`,h)});let r=e.pipe(new le),i={url:o.url,status:e.statusCode,statusText:e.statusMessage,headers:t,size:o.size,timeout:o.timeout,counter:o.counter},s=t.get(`Content-Encoding`);if(!o.compress||o.method===`HEAD`||s===null||e.statusCode===204||e.statusCode===304){f=new V(r,i),n(f);return}let l={flush:c.Z_SYNC_FLUSH,finishFlush:c.Z_SYNC_FLUSH};if(s==`gzip`||s==`x-gzip`){r=r.pipe(c.createGunzip(l)),f=new V(r,i),n(f);return}if(s==`deflate`||s==`x-deflate`){let t=e.pipe(new le);t.once(`data`,function(e){r=(e[0]&15)==8?r.pipe(c.createInflate()):r.pipe(c.createInflateRaw()),f=new V(r,i),n(f)}),t.on(`end`,function(){f||(f=new V(r,i),n(f))});return}if(s==`br`&&typeof c.createBrotliDecompress==`function`){r=r.pipe(c.createBrotliDecompress()),f=new V(r,i),n(f);return}f=new V(r,i),n(f)}),E(g,o)})}function pe(e,t){let n;e.on(`socket`,function(e){n=e}),e.on(`response`,function(e){let r=e.headers;r[`transfer-encoding`]===`chunked`&&!r[`content-length`]&&e.once(`close`,function(e){if(n&&n.listenerCount(`data`)>0&&!e){let e=Error(`Premature close`);e.code=`ERR_STREAM_PREMATURE_CLOSE`,t(e)}})})}function me(e,t){e.destroy?e.destroy(t):(e.emit(`error`,t),e.end())}fe.isRedirect=function(e){return e===301||e===302||e===303||e===307||e===308},fe.Promise=global.Promise,t.exports=e=fe,Object.defineProperty(e,`__esModule`,{value:!0}),e.default=e,e.Headers=N,e.Request=G,e.Response=V,e.FetchError=p,e.AbortError=se})),pr=b((e=>{var t=e&&e.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(e,`__esModule`,{value:!0}),e.installBicepCliWithArch=e.getBicepCliDownloadUrl=void 0;let n=t(T(`path`)),r=t(T(`fs/promises`)),i=t(fr()),a=`https://downloads.bicep.azure.com`,o=`${a}/releases/latest`,s=(e,t)=>`${a}/${e}/${t}`;async function c(){let e=await(0,i.default)(o);if(!e.ok)throw`Failed to find latest release of Bicep CLI. Status code: ${e.status}`;return(await e.json()).tag_name}function l(e,t,n){switch(`${e}_${t}`.toLowerCase()){case`win32_x64`:return s(n,`bicep-win-x64.exe`);case`win32_arm64`:return s(n,`bicep-win-arm64.exe`);case`linux_x64`:return s(n,`bicep-linux-x64`);case`linux_arm64`:return s(n,`bicep-linux-arm64`);case`darwin_x64`:return s(n,`bicep-osx-x64`);case`darwin_arm64`:return s(n,`bicep-osx-arm64`);default:throw`Bicep CLI is not available for platform ${e} and architecture ${t}`}}async function u(e,t,n){return l(e,t,n?`v${n}`:await c())}e.getBicepCliDownloadUrl=u;async function d(e,t,a,o){let s=t===`win32`?`bicep.exe`:`bicep`,c=await u(t,a,o),l=await(0,i.default)(c);if(!l.ok)throw`Failed to download Bicep CLI. Status code: ${l.status}`;let d=await l.arrayBuffer(),f=n.default.join(e,s);return await r.default.writeFile(f,Buffer.from(d)),await r.default.chmod(f,493),f}e.installBicepCliWithArch=d})),mr=b((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.stringArray=e.array=e.func=e.error=e.number=e.string=e.boolean=void 0;function t(e){return e===!0||e===!1}e.boolean=t;function n(e){return typeof e==`string`||e instanceof String}e.string=n;function r(e){return typeof e==`number`||e instanceof Number}e.number=r;function i(e){return e instanceof Error}e.error=i;function a(e){return typeof e==`function`}e.func=a;function o(e){return Array.isArray(e)}e.array=o;function s(e){return o(e)&&e.every(e=>n(e))}e.stringArray=s})),hr=b((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.Message=e.NotificationType9=e.NotificationType8=e.NotificationType7=e.NotificationType6=e.NotificationType5=e.NotificationType4=e.NotificationType3=e.NotificationType2=e.NotificationType1=e.NotificationType0=e.NotificationType=e.RequestType9=e.RequestType8=e.RequestType7=e.RequestType6=e.RequestType5=e.RequestType4=e.RequestType3=e.RequestType2=e.RequestType1=e.RequestType=e.RequestType0=e.AbstractMessageSignature=e.ParameterStructures=e.ResponseError=e.ErrorCodes=void 0;let t=mr();var n;(function(e){e.ParseError=-32700,e.InvalidRequest=-32600,e.MethodNotFound=-32601,e.InvalidParams=-32602,e.InternalError=-32603,e.jsonrpcReservedErrorRangeStart=-32099,e.serverErrorStart=-32099,e.MessageWriteError=-32099,e.MessageReadError=-32098,e.PendingResponseRejected=-32097,e.ConnectionInactive=-32096,e.ServerNotInitialized=-32002,e.UnknownErrorCode=-32001,e.jsonrpcReservedErrorRangeEnd=-32e3,e.serverErrorEnd=-32e3})(n||(e.ErrorCodes=n={})),e.ResponseError=class e extends Error{constructor(r,i,a){super(i),this.code=t.number(r)?r:n.UnknownErrorCode,this.data=a,Object.setPrototypeOf(this,e.prototype)}toJson(){let e={code:this.code,message:this.message};return this.data!==void 0&&(e.data=this.data),e}};var r=class e{constructor(e){this.kind=e}static is(t){return t===e.auto||t===e.byName||t===e.byPosition}toString(){return this.kind}};e.ParameterStructures=r,r.auto=new r(`auto`),r.byPosition=new r(`byPosition`),r.byName=new r(`byName`);var i=class{constructor(e,t){this.method=e,this.numberOfParams=t}get parameterStructures(){return r.auto}};e.AbstractMessageSignature=i,e.RequestType0=class extends i{constructor(e){super(e,0)}},e.RequestType=class extends i{constructor(e,t=r.auto){super(e,1),this._parameterStructures=t}get parameterStructures(){return this._parameterStructures}},e.RequestType1=class extends i{constructor(e,t=r.auto){super(e,1),this._parameterStructures=t}get parameterStructures(){return this._parameterStructures}},e.RequestType2=class extends i{constructor(e){super(e,2)}},e.RequestType3=class extends i{constructor(e){super(e,3)}},e.RequestType4=class extends i{constructor(e){super(e,4)}},e.RequestType5=class extends i{constructor(e){super(e,5)}},e.RequestType6=class extends i{constructor(e){super(e,6)}},e.RequestType7=class extends i{constructor(e){super(e,7)}},e.RequestType8=class extends i{constructor(e){super(e,8)}},e.RequestType9=class extends i{constructor(e){super(e,9)}},e.NotificationType=class extends i{constructor(e,t=r.auto){super(e,1),this._parameterStructures=t}get parameterStructures(){return this._parameterStructures}},e.NotificationType0=class extends i{constructor(e){super(e,0)}},e.NotificationType1=class extends i{constructor(e,t=r.auto){super(e,1),this._parameterStructures=t}get parameterStructures(){return this._parameterStructures}},e.NotificationType2=class extends i{constructor(e){super(e,2)}},e.NotificationType3=class extends i{constructor(e){super(e,3)}},e.NotificationType4=class extends i{constructor(e){super(e,4)}},e.NotificationType5=class extends i{constructor(e){super(e,5)}},e.NotificationType6=class extends i{constructor(e){super(e,6)}},e.NotificationType7=class extends i{constructor(e){super(e,7)}},e.NotificationType8=class extends i{constructor(e){super(e,8)}},e.NotificationType9=class extends i{constructor(e){super(e,9)}};var a;(function(e){function n(e){let n=e;return n&&t.string(n.method)&&(t.string(n.id)||t.number(n.id))}e.isRequest=n;function r(e){let n=e;return n&&t.string(n.method)&&e.id===void 0}e.isNotification=r;function i(e){let n=e;return n&&(n.result!==void 0||!!n.error)&&(t.string(n.id)||t.number(n.id)||n.id===null)}e.isResponse=i})(a||(e.Message=a={}))})),gr=b((e=>{var t;Object.defineProperty(e,`__esModule`,{value:!0}),e.LRUCache=e.LinkedMap=e.Touch=void 0;var n;(function(e){e.None=0,e.First=1,e.AsOld=e.First,e.Last=2,e.AsNew=e.Last})(n||(e.Touch=n={}));var r=class{constructor(){this[t]=`LinkedMap`,this._map=new Map,this._head=void 0,this._tail=void 0,this._size=0,this._state=0}clear(){this._map.clear(),this._head=void 0,this._tail=void 0,this._size=0,this._state++}isEmpty(){return!this._head&&!this._tail}get size(){return this._size}get first(){return this._head?.value}get last(){return this._tail?.value}has(e){return this._map.has(e)}get(e,t=n.None){let r=this._map.get(e);if(r)return t!==n.None&&this.touch(r,t),r.value}set(e,t,r=n.None){let i=this._map.get(e);if(i)i.value=t,r!==n.None&&this.touch(i,r);else{switch(i={key:e,value:t,next:void 0,previous:void 0},r){case n.None:this.addItemLast(i);break;case n.First:this.addItemFirst(i);break;case n.Last:this.addItemLast(i);break;default:this.addItemLast(i);break}this._map.set(e,i),this._size++}return this}delete(e){return!!this.remove(e)}remove(e){let t=this._map.get(e);if(t)return this._map.delete(e),this.removeItem(t),this._size--,t.value}shift(){if(!this._head&&!this._tail)return;if(!this._head||!this._tail)throw Error(`Invalid list`);let e=this._head;return this._map.delete(e.key),this.removeItem(e),this._size--,e.value}forEach(e,t){let n=this._state,r=this._head;for(;r;){if(t?e.bind(t)(r.value,r.key,this):e(r.value,r.key,this),this._state!==n)throw Error(`LinkedMap got modified during iteration.`);r=r.next}}keys(){let e=this._state,t=this._head,n={[Symbol.iterator]:()=>n,next:()=>{if(this._state!==e)throw Error(`LinkedMap got modified during iteration.`);if(t){let e={value:t.key,done:!1};return t=t.next,e}else return{value:void 0,done:!0}}};return n}values(){let e=this._state,t=this._head,n={[Symbol.iterator]:()=>n,next:()=>{if(this._state!==e)throw Error(`LinkedMap got modified during iteration.`);if(t){let e={value:t.value,done:!1};return t=t.next,e}else return{value:void 0,done:!0}}};return n}entries(){let e=this._state,t=this._head,n={[Symbol.iterator]:()=>n,next:()=>{if(this._state!==e)throw Error(`LinkedMap got modified during iteration.`);if(t){let e={value:[t.key,t.value],done:!1};return t=t.next,e}else return{value:void 0,done:!0}}};return n}[(t=Symbol.toStringTag,Symbol.iterator)](){return this.entries()}trimOld(e){if(e>=this.size)return;if(e===0){this.clear();return}let t=this._head,n=this.size;for(;t&&n>e;)this._map.delete(t.key),t=t.next,n--;this._head=t,this._size=n,t&&(t.previous=void 0),this._state++}addItemFirst(e){if(!this._head&&!this._tail)this._tail=e;else if(this._head)e.next=this._head,this._head.previous=e;else throw Error(`Invalid list`);this._head=e,this._state++}addItemLast(e){if(!this._head&&!this._tail)this._head=e;else if(this._tail)e.previous=this._tail,this._tail.next=e;else throw Error(`Invalid list`);this._tail=e,this._state++}removeItem(e){if(e===this._head&&e===this._tail)this._head=void 0,this._tail=void 0;else if(e===this._head){if(!e.next)throw Error(`Invalid list`);e.next.previous=void 0,this._head=e.next}else if(e===this._tail){if(!e.previous)throw Error(`Invalid list`);e.previous.next=void 0,this._tail=e.previous}else{let t=e.next,n=e.previous;if(!t||!n)throw Error(`Invalid list`);t.previous=n,n.next=t}e.next=void 0,e.previous=void 0,this._state++}touch(e,t){if(!this._head||!this._tail)throw Error(`Invalid list`);if(!(t!==n.First&&t!==n.Last)){if(t===n.First){if(e===this._head)return;let t=e.next,n=e.previous;e===this._tail?(n.next=void 0,this._tail=n):(t.previous=n,n.next=t),e.previous=void 0,e.next=this._head,this._head.previous=e,this._head=e,this._state++}else if(t===n.Last){if(e===this._tail)return;let t=e.next,n=e.previous;e===this._head?(t.previous=void 0,this._head=t):(t.previous=n,n.next=t),e.next=void 0,e.previous=this._tail,this._tail.next=e,this._tail=e,this._state++}}}toJSON(){let e=[];return this.forEach((t,n)=>{e.push([n,t])}),e}fromJSON(e){this.clear();for(let[t,n]of e)this.set(t,n)}};e.LinkedMap=r,e.LRUCache=class extends r{constructor(e,t=1){super(),this._limit=e,this._ratio=Math.min(Math.max(0,t),1)}get limit(){return this._limit}set limit(e){this._limit=e,this.checkTrim()}get ratio(){return this._ratio}set ratio(e){this._ratio=Math.min(Math.max(0,e),1),this.checkTrim()}get(e,t=n.AsNew){return super.get(e,t)}peek(e){return super.get(e,n.None)}set(e,t){return super.set(e,t,n.Last),this.checkTrim(),this}checkTrim(){this.size>this._limit&&this.trimOld(Math.round(this._limit*this._ratio))}}})),_r=b((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.Disposable=void 0;var t;(function(e){function t(e){return{dispose:e}}e.create=t})(t||(e.Disposable=t={}))})),vr=b((e=>{Object.defineProperty(e,`__esModule`,{value:!0});let t;function n(){if(t===void 0)throw Error(`No runtime abstraction layer installed`);return t}(function(e){function n(e){if(e===void 0)throw Error(`No runtime abstraction layer provided`);t=e}e.install=n})(n||={}),e.default=n})),yr=b((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.Emitter=e.Event=void 0;let t=vr();var n;(function(e){let t={dispose(){}};e.None=function(){return t}})(n||(e.Event=n={}));var r=class{add(e,t=null,n){this._callbacks||(this._callbacks=[],this._contexts=[]),this._callbacks.push(e),this._contexts.push(t),Array.isArray(n)&&n.push({dispose:()=>this.remove(e,t)})}remove(e,t=null){if(!this._callbacks)return;let n=!1;for(let r=0,i=this._callbacks.length;r{this._callbacks||=new r,this._options&&this._options.onFirstListenerAdd&&this._callbacks.isEmpty()&&this._options.onFirstListenerAdd(this),this._callbacks.add(t,n);let a={dispose:()=>{this._callbacks&&(this._callbacks.remove(t,n),a.dispose=e._noop,this._options&&this._options.onLastListenerRemove&&this._callbacks.isEmpty()&&this._options.onLastListenerRemove(this))}};return Array.isArray(i)&&i.push(a),a},this._event}fire(e){this._callbacks&&this._callbacks.invoke.call(this._callbacks,e)}dispose(){this._callbacks&&=(this._callbacks.dispose(),void 0)}};e.Emitter=i,i._noop=function(){}})),br=b((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.CancellationTokenSource=e.CancellationToken=void 0;let t=vr(),n=mr(),r=yr();var i;(function(e){e.None=Object.freeze({isCancellationRequested:!1,onCancellationRequested:r.Event.None}),e.Cancelled=Object.freeze({isCancellationRequested:!0,onCancellationRequested:r.Event.None});function t(t){let r=t;return r&&(r===e.None||r===e.Cancelled||n.boolean(r.isCancellationRequested)&&!!r.onCancellationRequested)}e.is=t})(i||(e.CancellationToken=i={}));let a=Object.freeze(function(e,n){let r=(0,t.default)().timer.setTimeout(e.bind(n),0);return{dispose(){r.dispose()}}});var o=class{constructor(){this._isCancelled=!1}cancel(){this._isCancelled||(this._isCancelled=!0,this._emitter&&(this._emitter.fire(void 0),this.dispose()))}get isCancellationRequested(){return this._isCancelled}get onCancellationRequested(){return this._isCancelled?a:(this._emitter||=new r.Emitter,this._emitter.event)}dispose(){this._emitter&&=(this._emitter.dispose(),void 0)}};e.CancellationTokenSource=class{get token(){return this._token||=new o,this._token}cancel(){this._token?this._token.cancel():this._token=i.Cancelled}dispose(){this._token?this._token instanceof o&&this._token.dispose():this._token=i.None}}})),xr=b((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.SharedArrayReceiverStrategy=e.SharedArraySenderStrategy=void 0;let t=br();var n;(function(e){e.Continue=0,e.Cancelled=1})(n||={}),e.SharedArraySenderStrategy=class{constructor(){this.buffers=new Map}enableCancellation(e){if(e.id===null)return;let t=new SharedArrayBuffer(4),r=new Int32Array(t,0,1);r[0]=n.Continue,this.buffers.set(e.id,t),e.$cancellationData=t}async sendCancellation(e,t){let r=this.buffers.get(t);if(r===void 0)return;let i=new Int32Array(r,0,1);Atomics.store(i,0,n.Cancelled)}cleanup(e){this.buffers.delete(e)}dispose(){this.buffers.clear()}};var r=class{constructor(e){this.data=new Int32Array(e,0,1)}get isCancellationRequested(){return Atomics.load(this.data,0)===n.Cancelled}get onCancellationRequested(){throw Error(`Cancellation over SharedArrayBuffer doesn't support cancellation events`)}},i=class{constructor(e){this.token=new r(e)}cancel(){}dispose(){}};e.SharedArrayReceiverStrategy=class{constructor(){this.kind=`request`}createCancellationTokenSource(e){let n=e.$cancellationData;return n===void 0?new t.CancellationTokenSource:new i(n)}}})),Sr=b((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.Semaphore=void 0;let t=vr();e.Semaphore=class{constructor(e=1){if(e<=0)throw Error(`Capacity must be greater than 0`);this._capacity=e,this._active=0,this._waiting=[]}lock(e){return new Promise((t,n)=>{this._waiting.push({thunk:e,resolve:t,reject:n}),this.runNext()})}get active(){return this._active}runNext(){this._waiting.length===0||this._active===this._capacity||(0,t.default)().timer.setImmediate(()=>this.doRunNext())}doRunNext(){if(this._waiting.length===0||this._active===this._capacity)return;let e=this._waiting.shift();if(this._active++,this._active>this._capacity)throw Error(`To many thunks active`);try{let t=e.thunk();t instanceof Promise?t.then(t=>{this._active--,e.resolve(t),this.runNext()},t=>{this._active--,e.reject(t),this.runNext()}):(this._active--,e.resolve(t),this.runNext())}catch(t){this._active--,e.reject(t),this.runNext()}}}})),Cr=b((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.ReadableStreamMessageReader=e.AbstractMessageReader=e.MessageReader=void 0;let t=vr(),n=mr(),r=yr(),i=Sr();var a;(function(e){function t(e){let t=e;return t&&n.func(t.listen)&&n.func(t.dispose)&&n.func(t.onError)&&n.func(t.onClose)&&n.func(t.onPartialMessage)}e.is=t})(a||(e.MessageReader=a={}));var o=class{constructor(){this.errorEmitter=new r.Emitter,this.closeEmitter=new r.Emitter,this.partialMessageEmitter=new r.Emitter}dispose(){this.errorEmitter.dispose(),this.closeEmitter.dispose()}get onError(){return this.errorEmitter.event}fireError(e){this.errorEmitter.fire(this.asError(e))}get onClose(){return this.closeEmitter.event}fireClose(){this.closeEmitter.fire(void 0)}get onPartialMessage(){return this.partialMessageEmitter.event}firePartialMessage(e){this.partialMessageEmitter.fire(e)}asError(e){return e instanceof Error?e:Error(`Reader received error. Reason: ${n.string(e.message)?e.message:`unknown`}`)}};e.AbstractMessageReader=o;var s;(function(e){function n(e){let n,r,i=new Map,a,o=new Map;if(e===void 0||typeof e==`string`)n=e??`utf-8`;else{if(n=e.charset??`utf-8`,e.contentDecoder!==void 0&&(r=e.contentDecoder,i.set(r.name,r)),e.contentDecoders!==void 0)for(let t of e.contentDecoders)i.set(t.name,t);if(e.contentTypeDecoder!==void 0&&(a=e.contentTypeDecoder,o.set(a.name,a)),e.contentTypeDecoders!==void 0)for(let t of e.contentTypeDecoders)o.set(t.name,t)}return a===void 0&&(a=(0,t.default)().applicationJson.decoder,o.set(a.name,a)),{charset:n,contentDecoder:r,contentDecoders:i,contentTypeDecoder:a,contentTypeDecoders:o}}e.fromOptions=n})(s||={}),e.ReadableStreamMessageReader=class extends o{constructor(e,n){super(),this.readable=e,this.options=s.fromOptions(n),this.buffer=(0,t.default)().messageBuffer.create(this.options.charset),this._partialMessageTimeout=1e4,this.nextMessageLength=-1,this.messageToken=0,this.readSemaphore=new i.Semaphore(1)}set partialMessageTimeout(e){this._partialMessageTimeout=e}get partialMessageTimeout(){return this._partialMessageTimeout}listen(e){this.nextMessageLength=-1,this.messageToken=0,this.partialMessageTimer=void 0,this.callback=e;let t=this.readable.onData(e=>{this.onData(e)});return this.readable.onError(e=>this.fireError(e)),this.readable.onClose(()=>this.fireClose()),t}onData(e){try{for(this.buffer.append(e);;){if(this.nextMessageLength===-1){let e=this.buffer.tryReadHeaders(!0);if(!e)return;let t=e.get(`content-length`);if(!t){this.fireError(Error(`Header must provide a Content-Length property.\n${JSON.stringify(Object.fromEntries(e))}`));return}let n=parseInt(t);if(isNaN(n)){this.fireError(Error(`Content-Length value must be a number. Got ${t}`));return}this.nextMessageLength=n}let e=this.buffer.tryReadBody(this.nextMessageLength);if(e===void 0){this.setPartialMessageTimer();return}this.clearPartialMessageTimer(),this.nextMessageLength=-1,this.readSemaphore.lock(async()=>{let t=this.options.contentDecoder===void 0?e:await this.options.contentDecoder.decode(e),n=await this.options.contentTypeDecoder.decode(t,this.options);this.callback(n)}).catch(e=>{this.fireError(e)})}}catch(e){this.fireError(e)}}clearPartialMessageTimer(){this.partialMessageTimer&&=(this.partialMessageTimer.dispose(),void 0)}setPartialMessageTimer(){this.clearPartialMessageTimer(),!(this._partialMessageTimeout<=0)&&(this.partialMessageTimer=(0,t.default)().timer.setTimeout((e,t)=>{this.partialMessageTimer=void 0,e===this.messageToken&&(this.firePartialMessage({messageToken:e,waitingTime:t}),this.setPartialMessageTimer())},this._partialMessageTimeout,this.messageToken,this._partialMessageTimeout))}}})),wr=b((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.WriteableStreamMessageWriter=e.AbstractMessageWriter=e.MessageWriter=void 0;let t=vr(),n=mr(),r=Sr(),i=yr();var a;(function(e){function t(e){let t=e;return t&&n.func(t.dispose)&&n.func(t.onClose)&&n.func(t.onError)&&n.func(t.write)}e.is=t})(a||(e.MessageWriter=a={}));var o=class{constructor(){this.errorEmitter=new i.Emitter,this.closeEmitter=new i.Emitter}dispose(){this.errorEmitter.dispose(),this.closeEmitter.dispose()}get onError(){return this.errorEmitter.event}fireError(e,t,n){this.errorEmitter.fire([this.asError(e),t,n])}get onClose(){return this.closeEmitter.event}fireClose(){this.closeEmitter.fire(void 0)}asError(e){return e instanceof Error?e:Error(`Writer received error. Reason: ${n.string(e.message)?e.message:`unknown`}`)}};e.AbstractMessageWriter=o;var s;(function(e){function n(e){return e===void 0||typeof e==`string`?{charset:e??`utf-8`,contentTypeEncoder:(0,t.default)().applicationJson.encoder}:{charset:e.charset??`utf-8`,contentEncoder:e.contentEncoder,contentTypeEncoder:e.contentTypeEncoder??(0,t.default)().applicationJson.encoder}}e.fromOptions=n})(s||={}),e.WriteableStreamMessageWriter=class extends o{constructor(e,t){super(),this.writable=e,this.options=s.fromOptions(t),this.errorCount=0,this.writeSemaphore=new r.Semaphore(1),this.writable.onError(e=>this.fireError(e)),this.writable.onClose(()=>this.fireClose())}async write(e){return this.writeSemaphore.lock(async()=>this.options.contentTypeEncoder.encode(e,this.options).then(e=>this.options.contentEncoder===void 0?e:this.options.contentEncoder.encode(e)).then(t=>{let n=[];return n.push(`Content-Length: `,t.byteLength.toString(),`\r +`),n.push(`\r +`),this.doWrite(e,n,t)},e=>{throw this.fireError(e),e}))}async doWrite(e,t,n){try{return await this.writable.write(t.join(``),`ascii`),this.writable.write(n)}catch(t){return this.handleError(t,e),Promise.reject(t)}}handleError(e,t){this.errorCount++,this.fireError(e,t,this.errorCount)}end(){this.writable.end()}}})),Tr=b((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.AbstractMessageBuffer=void 0,e.AbstractMessageBuffer=class{constructor(e=`utf-8`){this._encoding=e,this._chunks=[],this._totalLength=0}get encoding(){return this._encoding}append(e){let t=typeof e==`string`?this.fromString(e,this._encoding):e;this._chunks.push(t),this._totalLength+=t.byteLength}tryReadHeaders(e=!1){if(this._chunks.length===0)return;let t=0,n=0,r=0,i=0;row:for(;nthis._totalLength)throw Error(`Cannot read so many bytes!`);if(this._chunks[0].byteLength===e){let t=this._chunks[0];return this._chunks.shift(),this._totalLength-=e,this.asNative(t)}if(this._chunks[0].byteLength>e){let t=this._chunks[0],n=this.asNative(t,e);return this._chunks[0]=t.slice(e),this._totalLength-=e,n}let t=this.allocNative(e),n=0;for(;e>0;){let r=this._chunks[0];if(r.byteLength>e){let i=r.slice(0,e);t.set(i,n),n+=e,this._chunks[0]=r.slice(e),this._totalLength-=e,e-=e}else t.set(r,n),n+=r.byteLength,this._chunks.shift(),this._totalLength-=r.byteLength,e-=r.byteLength}return t}}})),Er=b((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.createMessageConnection=e.ConnectionOptions=e.MessageStrategy=e.CancellationStrategy=e.CancellationSenderStrategy=e.CancellationReceiverStrategy=e.RequestCancellationReceiverStrategy=e.IdCancellationReceiverStrategy=e.ConnectionStrategy=e.ConnectionError=e.ConnectionErrors=e.LogTraceNotification=e.SetTraceNotification=e.TraceFormat=e.TraceValues=e.Trace=e.NullLogger=e.ProgressType=e.ProgressToken=void 0;let t=vr(),n=mr(),r=hr(),i=gr(),a=yr(),o=br();var s;(function(e){e.type=new r.NotificationType(`$/cancelRequest`)})(s||={});var c;(function(e){function t(e){return typeof e==`string`||typeof e==`number`}e.is=t})(c||(e.ProgressToken=c={}));var l;(function(e){e.type=new r.NotificationType(`$/progress`)})(l||={}),e.ProgressType=class{constructor(){}};var u;(function(e){function t(e){return n.func(e)}e.is=t})(u||={}),e.NullLogger=Object.freeze({error:()=>{},warn:()=>{},info:()=>{},log:()=>{}});var d;(function(e){e[e.Off=0]=`Off`,e[e.Messages=1]=`Messages`,e[e.Compact=2]=`Compact`,e[e.Verbose=3]=`Verbose`})(d||(e.Trace=d={}));var f;(function(e){e.Off=`off`,e.Messages=`messages`,e.Compact=`compact`,e.Verbose=`verbose`})(f||(e.TraceValues=f={})),(function(e){function t(t){if(!n.string(t))return e.Off;switch(t=t.toLowerCase(),t){case`off`:return e.Off;case`messages`:return e.Messages;case`compact`:return e.Compact;case`verbose`:return e.Verbose;default:return e.Off}}e.fromString=t;function r(t){switch(t){case e.Off:return`off`;case e.Messages:return`messages`;case e.Compact:return`compact`;case e.Verbose:return`verbose`;default:return`off`}}e.toString=r})(d||(e.Trace=d={}));var p;(function(e){e.Text=`text`,e.JSON=`json`})(p||(e.TraceFormat=p={})),(function(e){function t(t){return n.string(t)?(t=t.toLowerCase(),t===`json`?e.JSON:e.Text):e.Text}e.fromString=t})(p||(e.TraceFormat=p={}));var m;(function(e){e.type=new r.NotificationType(`$/setTrace`)})(m||(e.SetTraceNotification=m={}));var h;(function(e){e.type=new r.NotificationType(`$/logTrace`)})(h||(e.LogTraceNotification=h={}));var g;(function(e){e[e.Closed=1]=`Closed`,e[e.Disposed=2]=`Disposed`,e[e.AlreadyListening=3]=`AlreadyListening`})(g||(e.ConnectionErrors=g={}));var _=class e extends Error{constructor(t,n){super(n),this.code=t,Object.setPrototypeOf(this,e.prototype)}};e.ConnectionError=_;var v;(function(e){function t(e){let t=e;return t&&n.func(t.cancelUndispatched)}e.is=t})(v||(e.ConnectionStrategy=v={}));var y;(function(e){function t(e){let t=e;return t&&(t.kind===void 0||t.kind===`id`)&&n.func(t.createCancellationTokenSource)&&(t.dispose===void 0||n.func(t.dispose))}e.is=t})(y||(e.IdCancellationReceiverStrategy=y={}));var b;(function(e){function t(e){let t=e;return t&&t.kind===`request`&&n.func(t.createCancellationTokenSource)&&(t.dispose===void 0||n.func(t.dispose))}e.is=t})(b||(e.RequestCancellationReceiverStrategy=b={}));var x;(function(e){e.Message=Object.freeze({createCancellationTokenSource(e){return new o.CancellationTokenSource}});function t(e){return y.is(e)||b.is(e)}e.is=t})(x||(e.CancellationReceiverStrategy=x={}));var S;(function(e){e.Message=Object.freeze({sendCancellation(e,t){return e.sendNotification(s.type,{id:t})},cleanup(e){}});function t(e){let t=e;return t&&n.func(t.sendCancellation)&&n.func(t.cleanup)}e.is=t})(S||(e.CancellationSenderStrategy=S={}));var C;(function(e){e.Message=Object.freeze({receiver:x.Message,sender:S.Message});function t(e){let t=e;return t&&x.is(t.receiver)&&S.is(t.sender)}e.is=t})(C||(e.CancellationStrategy=C={}));var w;(function(e){function t(e){let t=e;return t&&n.func(t.handleMessage)}e.is=t})(w||(e.MessageStrategy=w={}));var T;(function(e){function t(e){let t=e;return t&&(C.is(t.cancellationStrategy)||v.is(t.connectionStrategy)||w.is(t.messageStrategy))}e.is=t})(T||(e.ConnectionOptions=T={}));var E;(function(e){e[e.New=1]=`New`,e[e.Listening=2]=`Listening`,e[e.Closed=3]=`Closed`,e[e.Disposed=4]=`Disposed`})(E||={});function D(f,v,b,x){let S=b===void 0?e.NullLogger:b,T=0,D=0,O=0,k,A=new Map,j,M=new Map,N=new Map,ee,P=new i.LinkedMap,F=new Map,I=new Set,L=new Map,R=d.Off,z=p.Text,B,V=E.New,te=new a.Emitter,H=new a.Emitter,ne=new a.Emitter,re=new a.Emitter,U=new a.Emitter,ie=x&&x.cancellationStrategy?x.cancellationStrategy:C.Message;function W(e){if(e===null)throw Error(`Can't send requests with id null since the response can't be correlated.`);return`req-`+e.toString()}function ae(e){return e===null?`res-unknown-`+(++O).toString():`res-`+e.toString()}function G(){return`not-`+(++D).toString()}function oe(e,t){r.Message.isRequest(t)?e.set(W(t.id),t):r.Message.isResponse(t)?e.set(ae(t.id),t):e.set(G(),t)}function se(e){}function ce(){return V===E.Listening}function le(){return V===E.Closed}function ue(){return V===E.Disposed}function de(){(V===E.New||V===E.Listening)&&(V=E.Closed,H.fire(void 0))}function fe(e){te.fire([e,void 0,void 0])}function pe(e){te.fire(e)}f.onClose(de),f.onError(fe),v.onClose(de),v.onError(pe);function me(){ee||P.size===0||(ee=(0,t.default)().timer.setImmediate(()=>{ee=void 0,ge()}))}function he(e){r.Message.isRequest(e)?ve(e):r.Message.isNotification(e)?be(e):r.Message.isResponse(e)?ye(e):xe(e)}function ge(){if(P.size===0)return;let e=P.shift();try{let t=x?.messageStrategy;w.is(t)?t.handleMessage(e,he):he(e)}finally{me()}}let _e=e=>{try{if(r.Message.isNotification(e)&&e.method===s.type.method){let t=e.params.id,n=W(t),i=P.get(n);if(r.Message.isRequest(i)){let r=x?.connectionStrategy,a=r&&r.cancelUndispatched?r.cancelUndispatched(i,se):void 0;if(a&&(a.error!==void 0||a.result!==void 0)){P.delete(n),L.delete(t),a.id=i.id,Te(a,e.method,Date.now()),v.write(a).catch(()=>S.error(`Sending response for canceled message failed.`));return}}let a=L.get(t);if(a!==void 0){a.cancel(),De(e);return}else I.add(t)}oe(P,e)}finally{me()}};function ve(e){if(ue())return;function t(t,n,i){let a={jsonrpc:`2.0`,id:e.id};t instanceof r.ResponseError?a.error=t.toJson():a.result=t===void 0?null:t,Te(a,n,i),v.write(a).catch(()=>S.error(`Sending response failed.`))}function i(t,n,r){let i={jsonrpc:`2.0`,id:e.id,error:t.toJson()};Te(i,n,r),v.write(i).catch(()=>S.error(`Sending response failed.`))}function a(t,n,r){t===void 0&&(t=null);let i={jsonrpc:`2.0`,id:e.id,result:t};Te(i,n,r),v.write(i).catch(()=>S.error(`Sending response failed.`))}Ee(e);let o=A.get(e.method),s,c;o&&(s=o.type,c=o.handler);let l=Date.now();if(c||k){let o=e.id??String(Date.now()),u=y.is(ie.receiver)?ie.receiver.createCancellationTokenSource(o):ie.receiver.createCancellationTokenSource(e);e.id!==null&&I.has(e.id)&&u.cancel(),e.id!==null&&L.set(o,u);try{let d;if(c)if(e.params===void 0){if(s!==void 0&&s.numberOfParams!==0){i(new r.ResponseError(r.ErrorCodes.InvalidParams,`Request ${e.method} defines ${s.numberOfParams} params but received none.`),e.method,l);return}d=c(u.token)}else if(Array.isArray(e.params)){if(s!==void 0&&s.parameterStructures===r.ParameterStructures.byName){i(new r.ResponseError(r.ErrorCodes.InvalidParams,`Request ${e.method} defines parameters by name but received parameters by position`),e.method,l);return}d=c(...e.params,u.token)}else{if(s!==void 0&&s.parameterStructures===r.ParameterStructures.byPosition){i(new r.ResponseError(r.ErrorCodes.InvalidParams,`Request ${e.method} defines parameters by position but received parameters by name`),e.method,l);return}d=c(e.params,u.token)}else k&&(d=k(e.method,e.params,u.token));let f=d;d?f.then?f.then(n=>{L.delete(o),t(n,e.method,l)},t=>{L.delete(o),t instanceof r.ResponseError?i(t,e.method,l):t&&n.string(t.message)?i(new r.ResponseError(r.ErrorCodes.InternalError,`Request ${e.method} failed with message: ${t.message}`),e.method,l):i(new r.ResponseError(r.ErrorCodes.InternalError,`Request ${e.method} failed unexpectedly without providing any details.`),e.method,l)}):(L.delete(o),t(d,e.method,l)):(L.delete(o),a(d,e.method,l))}catch(a){L.delete(o),a instanceof r.ResponseError?t(a,e.method,l):a&&n.string(a.message)?i(new r.ResponseError(r.ErrorCodes.InternalError,`Request ${e.method} failed with message: ${a.message}`),e.method,l):i(new r.ResponseError(r.ErrorCodes.InternalError,`Request ${e.method} failed unexpectedly without providing any details.`),e.method,l)}}else i(new r.ResponseError(r.ErrorCodes.MethodNotFound,`Unhandled method ${e.method}`),e.method,l)}function ye(e){if(!ue())if(e.id===null)e.error?S.error(`Received response message without id: Error is: \n${JSON.stringify(e.error,void 0,4)}`):S.error(`Received response message without id. No further error information provided.`);else{let t=e.id,n=F.get(t);if(Oe(e,n),n!==void 0){F.delete(t);try{if(e.error){let t=e.error;n.reject(new r.ResponseError(t.code,t.message,t.data))}else if(e.result!==void 0)n.resolve(e.result);else throw Error(`Should never happen.`)}catch(e){e.message?S.error(`Response handler '${n.method}' failed with message: ${e.message}`):S.error(`Response handler '${n.method}' failed unexpectedly.`)}}}}function be(e){if(ue())return;let t,n;if(e.method===s.type.method){let t=e.params.id;I.delete(t),De(e);return}else{let r=M.get(e.method);r&&(n=r.handler,t=r.type)}if(n||j)try{if(De(e),n)if(e.params===void 0)t!==void 0&&t.numberOfParams!==0&&t.parameterStructures!==r.ParameterStructures.byName&&S.error(`Notification ${e.method} defines ${t.numberOfParams} params but received none.`),n();else if(Array.isArray(e.params)){let i=e.params;e.method===l.type.method&&i.length===2&&c.is(i[0])?n({token:i[0],value:i[1]}):(t!==void 0&&(t.parameterStructures===r.ParameterStructures.byName&&S.error(`Notification ${e.method} defines parameters by name but received parameters by position`),t.numberOfParams!==e.params.length&&S.error(`Notification ${e.method} defines ${t.numberOfParams} params but received ${i.length} arguments`)),n(...i))}else t!==void 0&&t.parameterStructures===r.ParameterStructures.byPosition&&S.error(`Notification ${e.method} defines parameters by position but received parameters by name`),n(e.params);else j&&j(e.method,e.params)}catch(t){t.message?S.error(`Notification handler '${e.method}' failed with message: ${t.message}`):S.error(`Notification handler '${e.method}' failed unexpectedly.`)}else ne.fire(e)}function xe(e){if(!e){S.error(`Received empty message.`);return}S.error(`Received message which is neither a response nor a notification message:\n${JSON.stringify(e,null,4)}`);let t=e;if(n.string(t.id)||n.number(t.id)){let e=t.id,n=F.get(e);n&&n.reject(Error(`The received response has neither a result nor an error property.`))}}function Se(e){if(e!=null)switch(R){case d.Verbose:return JSON.stringify(e,null,4);case d.Compact:return JSON.stringify(e);default:return}}function Ce(e){if(!(R===d.Off||!B))if(z===p.Text){let t;(R===d.Verbose||R===d.Compact)&&e.params&&(t=`Params: ${Se(e.params)}\n\n`),B.log(`Sending request '${e.method} - (${e.id})'.`,t)}else ke(`send-request`,e)}function we(e){if(!(R===d.Off||!B))if(z===p.Text){let t;(R===d.Verbose||R===d.Compact)&&(t=e.params?`Params: ${Se(e.params)}\n\n`:`No parameters provided. + +`),B.log(`Sending notification '${e.method}'.`,t)}else ke(`send-notification`,e)}function Te(e,t,n){if(!(R===d.Off||!B))if(z===p.Text){let r;(R===d.Verbose||R===d.Compact)&&(e.error&&e.error.data?r=`Error data: ${Se(e.error.data)}\n\n`:e.result?r=`Result: ${Se(e.result)}\n\n`:e.error===void 0&&(r=`No result returned. + +`)),B.log(`Sending response '${t} - (${e.id})'. Processing request took ${Date.now()-n}ms`,r)}else ke(`send-response`,e)}function Ee(e){if(!(R===d.Off||!B))if(z===p.Text){let t;(R===d.Verbose||R===d.Compact)&&e.params&&(t=`Params: ${Se(e.params)}\n\n`),B.log(`Received request '${e.method} - (${e.id})'.`,t)}else ke(`receive-request`,e)}function De(e){if(!(R===d.Off||!B||e.method===h.type.method))if(z===p.Text){let t;(R===d.Verbose||R===d.Compact)&&(t=e.params?`Params: ${Se(e.params)}\n\n`:`No parameters provided. + +`),B.log(`Received notification '${e.method}'.`,t)}else ke(`receive-notification`,e)}function Oe(e,t){if(!(R===d.Off||!B))if(z===p.Text){let n;if((R===d.Verbose||R===d.Compact)&&(e.error&&e.error.data?n=`Error data: ${Se(e.error.data)}\n\n`:e.result?n=`Result: ${Se(e.result)}\n\n`:e.error===void 0&&(n=`No result returned. + +`)),t){let r=e.error?` Request failed: ${e.error.message} (${e.error.code}).`:``;B.log(`Received response '${t.method} - (${e.id})' in ${Date.now()-t.timerStart}ms.${r}`,n)}else B.log(`Received response ${e.id} without active response promise.`,n)}else ke(`receive-response`,e)}function ke(e,t){if(!B||R===d.Off)return;let n={isLSPMessage:!0,type:e,message:t,timestamp:Date.now()};B.log(n)}function Ae(){if(le())throw new _(g.Closed,`Connection is closed.`);if(ue())throw new _(g.Disposed,`Connection is disposed.`)}function je(){if(ce())throw new _(g.AlreadyListening,`Connection is already listening`)}function Me(){if(!ce())throw Error(`Call listen() first.`)}function Ne(e){return e===void 0?null:e}function Pe(e){if(e!==null)return e}function Fe(e){return e!=null&&!Array.isArray(e)&&typeof e==`object`}function Ie(e,t){switch(e){case r.ParameterStructures.auto:return Fe(t)?Pe(t):[Ne(t)];case r.ParameterStructures.byName:if(!Fe(t))throw Error(`Received parameters by name but param is not an object literal.`);return Pe(t);case r.ParameterStructures.byPosition:return[Ne(t)];default:throw Error(`Unknown parameter structure ${e.toString()}`)}}function Le(e,t){let n,r=e.numberOfParams;switch(r){case 0:n=void 0;break;case 1:n=Ie(e.parameterStructures,t[0]);break;default:n=[];for(let e=0;e{Ae();let i,a;if(n.string(e)){i=e;let n=t[0],o=0,s=r.ParameterStructures.auto;r.ParameterStructures.is(n)&&(o=1,s=n);let c=t.length,l=c-o;switch(l){case 0:a=void 0;break;case 1:a=Ie(s,t[o]);break;default:if(s===r.ParameterStructures.byName)throw Error(`Received ${l} parameters for 'by Name' notification parameter structure.`);a=t.slice(o,c).map(e=>Ne(e));break}}else{let n=t;i=e.method,a=Le(e,n)}let o={jsonrpc:`2.0`,method:i,params:a};return we(o),v.write(o).catch(e=>{throw S.error(`Sending notification failed.`),e})},onNotification:(e,t)=>{Ae();let r;return n.func(e)?j=e:t&&(n.string(e)?(r=e,M.set(e,{type:void 0,handler:t})):(r=e.method,M.set(e.method,{type:e,handler:t}))),{dispose:()=>{r===void 0?j=void 0:M.delete(r)}}},onProgress:(e,t,n)=>{if(N.has(t))throw Error(`Progress handler for token ${t} already registered`);return N.set(t,n),{dispose:()=>{N.delete(t)}}},sendProgress:(e,t,n)=>Re.sendNotification(l.type,{token:t,value:n}),onUnhandledProgress:re.event,sendRequest:(e,...t)=>{Ae(),Me();let i,a,s;if(n.string(e)){i=e;let n=t[0],c=t[t.length-1],l=0,u=r.ParameterStructures.auto;r.ParameterStructures.is(n)&&(l=1,u=n);let d=t.length;o.CancellationToken.is(c)&&(--d,s=c);let f=d-l;switch(f){case 0:a=void 0;break;case 1:a=Ie(u,t[l]);break;default:if(u===r.ParameterStructures.byName)throw Error(`Received ${f} parameters for 'by Name' request parameter structure.`);a=t.slice(l,d).map(e=>Ne(e));break}}else{let n=t;i=e.method,a=Le(e,n);let r=e.numberOfParams;s=o.CancellationToken.is(n[r])?n[r]:void 0}let c=T++,l;s&&(l=s.onCancellationRequested(()=>{let e=ie.sender.sendCancellation(Re,c);return e===void 0?(S.log(`Received no promise from cancellation strategy when cancelling id ${c}`),Promise.resolve()):e.catch(()=>{S.log(`Sending cancellation messages for id ${c} failed`)})}));let u={jsonrpc:`2.0`,id:c,method:i,params:a};return Ce(u),typeof ie.sender.enableCancellation==`function`&&ie.sender.enableCancellation(u),new Promise(async(e,t)=>{let n={method:i,timerStart:Date.now(),resolve:t=>{e(t),ie.sender.cleanup(c),l?.dispose()},reject:e=>{t(e),ie.sender.cleanup(c),l?.dispose()}};try{F.set(c,n),await v.write(u)}catch(e){throw F.delete(c),n.reject(new r.ResponseError(r.ErrorCodes.MessageWriteError,e.message?e.message:`Unknown reason`)),S.error(`Sending request failed.`),e}})},onRequest:(e,t)=>{Ae();let r=null;return u.is(e)?(r=void 0,k=e):n.string(e)?(r=null,t!==void 0&&(r=e,A.set(e,{handler:t,type:void 0}))):t!==void 0&&(r=e.method,A.set(e.method,{type:e,handler:t})),{dispose:()=>{r!==null&&(r===void 0?k=void 0:A.delete(r))}}},hasPendingResponse:()=>F.size>0,trace:async(e,t,r)=>{let i=!1,a=p.Text;r!==void 0&&(n.boolean(r)?i=r:(i=r.sendNotification||!1,a=r.traceFormat||p.Text)),R=e,z=a,B=R===d.Off?void 0:t,i&&!le()&&!ue()&&await Re.sendNotification(m.type,{value:d.toString(e)})},onError:te.event,onClose:H.event,onUnhandledNotification:ne.event,onDispose:U.event,end:()=>{v.end()},dispose:()=>{if(ue())return;V=E.Disposed,U.fire(void 0);let e=new r.ResponseError(r.ErrorCodes.PendingResponseRejected,`Pending response rejected since connection got disposed`);for(let t of F.values())t.reject(e);F=new Map,L=new Map,I=new Set,P=new i.LinkedMap,n.func(v.dispose)&&v.dispose(),n.func(f.dispose)&&f.dispose()},listen:()=>{Ae(),je(),V=E.Listening,f.listen(_e)},inspect:()=>{(0,t.default)().console.log(`inspect`)}};return Re.onNotification(h.type,e=>{if(R===d.Off||!B)return;let t=R===d.Verbose||R===d.Compact;B.log(e.message,t?e.verbose:void 0)}),Re.onNotification(l.type,e=>{let t=N.get(e.token);t?t(e.value):re.fire(e)}),Re}e.createMessageConnection=D})),Dr=b((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.ProgressType=e.ProgressToken=e.createMessageConnection=e.NullLogger=e.ConnectionOptions=e.ConnectionStrategy=e.AbstractMessageBuffer=e.WriteableStreamMessageWriter=e.AbstractMessageWriter=e.MessageWriter=e.ReadableStreamMessageReader=e.AbstractMessageReader=e.MessageReader=e.SharedArrayReceiverStrategy=e.SharedArraySenderStrategy=e.CancellationToken=e.CancellationTokenSource=e.Emitter=e.Event=e.Disposable=e.LRUCache=e.Touch=e.LinkedMap=e.ParameterStructures=e.NotificationType9=e.NotificationType8=e.NotificationType7=e.NotificationType6=e.NotificationType5=e.NotificationType4=e.NotificationType3=e.NotificationType2=e.NotificationType1=e.NotificationType0=e.NotificationType=e.ErrorCodes=e.ResponseError=e.RequestType9=e.RequestType8=e.RequestType7=e.RequestType6=e.RequestType5=e.RequestType4=e.RequestType3=e.RequestType2=e.RequestType1=e.RequestType0=e.RequestType=e.Message=e.RAL=void 0,e.MessageStrategy=e.CancellationStrategy=e.CancellationSenderStrategy=e.CancellationReceiverStrategy=e.ConnectionError=e.ConnectionErrors=e.LogTraceNotification=e.SetTraceNotification=e.TraceFormat=e.TraceValues=e.Trace=void 0;let t=hr();Object.defineProperty(e,`Message`,{enumerable:!0,get:function(){return t.Message}}),Object.defineProperty(e,`RequestType`,{enumerable:!0,get:function(){return t.RequestType}}),Object.defineProperty(e,`RequestType0`,{enumerable:!0,get:function(){return t.RequestType0}}),Object.defineProperty(e,`RequestType1`,{enumerable:!0,get:function(){return t.RequestType1}}),Object.defineProperty(e,`RequestType2`,{enumerable:!0,get:function(){return t.RequestType2}}),Object.defineProperty(e,`RequestType3`,{enumerable:!0,get:function(){return t.RequestType3}}),Object.defineProperty(e,`RequestType4`,{enumerable:!0,get:function(){return t.RequestType4}}),Object.defineProperty(e,`RequestType5`,{enumerable:!0,get:function(){return t.RequestType5}}),Object.defineProperty(e,`RequestType6`,{enumerable:!0,get:function(){return t.RequestType6}}),Object.defineProperty(e,`RequestType7`,{enumerable:!0,get:function(){return t.RequestType7}}),Object.defineProperty(e,`RequestType8`,{enumerable:!0,get:function(){return t.RequestType8}}),Object.defineProperty(e,`RequestType9`,{enumerable:!0,get:function(){return t.RequestType9}}),Object.defineProperty(e,`ResponseError`,{enumerable:!0,get:function(){return t.ResponseError}}),Object.defineProperty(e,`ErrorCodes`,{enumerable:!0,get:function(){return t.ErrorCodes}}),Object.defineProperty(e,`NotificationType`,{enumerable:!0,get:function(){return t.NotificationType}}),Object.defineProperty(e,`NotificationType0`,{enumerable:!0,get:function(){return t.NotificationType0}}),Object.defineProperty(e,`NotificationType1`,{enumerable:!0,get:function(){return t.NotificationType1}}),Object.defineProperty(e,`NotificationType2`,{enumerable:!0,get:function(){return t.NotificationType2}}),Object.defineProperty(e,`NotificationType3`,{enumerable:!0,get:function(){return t.NotificationType3}}),Object.defineProperty(e,`NotificationType4`,{enumerable:!0,get:function(){return t.NotificationType4}}),Object.defineProperty(e,`NotificationType5`,{enumerable:!0,get:function(){return t.NotificationType5}}),Object.defineProperty(e,`NotificationType6`,{enumerable:!0,get:function(){return t.NotificationType6}}),Object.defineProperty(e,`NotificationType7`,{enumerable:!0,get:function(){return t.NotificationType7}}),Object.defineProperty(e,`NotificationType8`,{enumerable:!0,get:function(){return t.NotificationType8}}),Object.defineProperty(e,`NotificationType9`,{enumerable:!0,get:function(){return t.NotificationType9}}),Object.defineProperty(e,`ParameterStructures`,{enumerable:!0,get:function(){return t.ParameterStructures}});let n=gr();Object.defineProperty(e,`LinkedMap`,{enumerable:!0,get:function(){return n.LinkedMap}}),Object.defineProperty(e,`LRUCache`,{enumerable:!0,get:function(){return n.LRUCache}}),Object.defineProperty(e,`Touch`,{enumerable:!0,get:function(){return n.Touch}});let r=_r();Object.defineProperty(e,`Disposable`,{enumerable:!0,get:function(){return r.Disposable}});let i=yr();Object.defineProperty(e,`Event`,{enumerable:!0,get:function(){return i.Event}}),Object.defineProperty(e,`Emitter`,{enumerable:!0,get:function(){return i.Emitter}});let a=br();Object.defineProperty(e,`CancellationTokenSource`,{enumerable:!0,get:function(){return a.CancellationTokenSource}}),Object.defineProperty(e,`CancellationToken`,{enumerable:!0,get:function(){return a.CancellationToken}});let o=xr();Object.defineProperty(e,`SharedArraySenderStrategy`,{enumerable:!0,get:function(){return o.SharedArraySenderStrategy}}),Object.defineProperty(e,`SharedArrayReceiverStrategy`,{enumerable:!0,get:function(){return o.SharedArrayReceiverStrategy}});let s=Cr();Object.defineProperty(e,`MessageReader`,{enumerable:!0,get:function(){return s.MessageReader}}),Object.defineProperty(e,`AbstractMessageReader`,{enumerable:!0,get:function(){return s.AbstractMessageReader}}),Object.defineProperty(e,`ReadableStreamMessageReader`,{enumerable:!0,get:function(){return s.ReadableStreamMessageReader}});let c=wr();Object.defineProperty(e,`MessageWriter`,{enumerable:!0,get:function(){return c.MessageWriter}}),Object.defineProperty(e,`AbstractMessageWriter`,{enumerable:!0,get:function(){return c.AbstractMessageWriter}}),Object.defineProperty(e,`WriteableStreamMessageWriter`,{enumerable:!0,get:function(){return c.WriteableStreamMessageWriter}});let l=Tr();Object.defineProperty(e,`AbstractMessageBuffer`,{enumerable:!0,get:function(){return l.AbstractMessageBuffer}});let u=Er();Object.defineProperty(e,`ConnectionStrategy`,{enumerable:!0,get:function(){return u.ConnectionStrategy}}),Object.defineProperty(e,`ConnectionOptions`,{enumerable:!0,get:function(){return u.ConnectionOptions}}),Object.defineProperty(e,`NullLogger`,{enumerable:!0,get:function(){return u.NullLogger}}),Object.defineProperty(e,`createMessageConnection`,{enumerable:!0,get:function(){return u.createMessageConnection}}),Object.defineProperty(e,`ProgressToken`,{enumerable:!0,get:function(){return u.ProgressToken}}),Object.defineProperty(e,`ProgressType`,{enumerable:!0,get:function(){return u.ProgressType}}),Object.defineProperty(e,`Trace`,{enumerable:!0,get:function(){return u.Trace}}),Object.defineProperty(e,`TraceValues`,{enumerable:!0,get:function(){return u.TraceValues}}),Object.defineProperty(e,`TraceFormat`,{enumerable:!0,get:function(){return u.TraceFormat}}),Object.defineProperty(e,`SetTraceNotification`,{enumerable:!0,get:function(){return u.SetTraceNotification}}),Object.defineProperty(e,`LogTraceNotification`,{enumerable:!0,get:function(){return u.LogTraceNotification}}),Object.defineProperty(e,`ConnectionErrors`,{enumerable:!0,get:function(){return u.ConnectionErrors}}),Object.defineProperty(e,`ConnectionError`,{enumerable:!0,get:function(){return u.ConnectionError}}),Object.defineProperty(e,`CancellationReceiverStrategy`,{enumerable:!0,get:function(){return u.CancellationReceiverStrategy}}),Object.defineProperty(e,`CancellationSenderStrategy`,{enumerable:!0,get:function(){return u.CancellationSenderStrategy}}),Object.defineProperty(e,`CancellationStrategy`,{enumerable:!0,get:function(){return u.CancellationStrategy}}),Object.defineProperty(e,`MessageStrategy`,{enumerable:!0,get:function(){return u.MessageStrategy}}),e.RAL=vr().default})),Or=b((e=>{Object.defineProperty(e,`__esModule`,{value:!0});let t=T(`util`),n=Dr();var r=class e extends n.AbstractMessageBuffer{constructor(e=`utf-8`){super(e)}emptyBuffer(){return e.emptyBuffer}fromString(e,t){return Buffer.from(e,t)}toString(e,n){return e instanceof Buffer?e.toString(n):new t.TextDecoder(n).decode(e)}asNative(e,t){return t===void 0?e instanceof Buffer?e:Buffer.from(e):e instanceof Buffer?e.slice(0,t):Buffer.from(e,0,t)}allocNative(e){return Buffer.allocUnsafe(e)}};r.emptyBuffer=Buffer.allocUnsafe(0);var i=class{constructor(e){this.stream=e}onClose(e){return this.stream.on(`close`,e),n.Disposable.create(()=>this.stream.off(`close`,e))}onError(e){return this.stream.on(`error`,e),n.Disposable.create(()=>this.stream.off(`error`,e))}onEnd(e){return this.stream.on(`end`,e),n.Disposable.create(()=>this.stream.off(`end`,e))}onData(e){return this.stream.on(`data`,e),n.Disposable.create(()=>this.stream.off(`data`,e))}},a=class{constructor(e){this.stream=e}onClose(e){return this.stream.on(`close`,e),n.Disposable.create(()=>this.stream.off(`close`,e))}onError(e){return this.stream.on(`error`,e),n.Disposable.create(()=>this.stream.off(`error`,e))}onEnd(e){return this.stream.on(`end`,e),n.Disposable.create(()=>this.stream.off(`end`,e))}write(e,t){return new Promise((n,r)=>{let i=e=>{e==null?n():r(e)};typeof e==`string`?this.stream.write(e,t,i):this.stream.write(e,i)})}end(){this.stream.end()}};let o=Object.freeze({messageBuffer:Object.freeze({create:e=>new r(e)}),applicationJson:Object.freeze({encoder:Object.freeze({name:`application/json`,encode:(e,t)=>{try{return Promise.resolve(Buffer.from(JSON.stringify(e,void 0,0),t.charset))}catch(e){return Promise.reject(e)}}}),decoder:Object.freeze({name:`application/json`,decode:(e,n)=>{try{return e instanceof Buffer?Promise.resolve(JSON.parse(e.toString(n.charset))):Promise.resolve(JSON.parse(new t.TextDecoder(n.charset).decode(e)))}catch(e){return Promise.reject(e)}}})}),stream:Object.freeze({asReadableStream:e=>new i(e),asWritableStream:e=>new a(e)}),console,timer:Object.freeze({setTimeout(e,t,...n){let r=setTimeout(e,t,...n);return{dispose:()=>clearTimeout(r)}},setImmediate(e,...t){let n=setImmediate(e,...t);return{dispose:()=>clearImmediate(n)}},setInterval(e,t,...n){let r=setInterval(e,t,...n);return{dispose:()=>clearInterval(r)}}})});function s(){return o}(function(e){function t(){n.RAL.install(o)}e.install=t})(s||={}),e.default=s})),kr=b((e=>{var t=e&&e.__createBinding||(Object.create?(function(e,t,n,r){r===void 0&&(r=n);var i=Object.getOwnPropertyDescriptor(t,n);(!i||(`get`in i?!t.__esModule:i.writable||i.configurable))&&(i={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,r,i)}):(function(e,t,n,r){r===void 0&&(r=n),e[r]=t[n]})),n=e&&e.__exportStar||function(e,n){for(var r in e)r!==`default`&&!Object.prototype.hasOwnProperty.call(n,r)&&t(n,e,r)};Object.defineProperty(e,`__esModule`,{value:!0}),e.createMessageConnection=e.createServerSocketTransport=e.createClientSocketTransport=e.createServerPipeTransport=e.createClientPipeTransport=e.generateRandomPipeName=e.StreamMessageWriter=e.StreamMessageReader=e.SocketMessageWriter=e.SocketMessageReader=e.PortMessageWriter=e.PortMessageReader=e.IPCMessageWriter=e.IPCMessageReader=void 0;let r=Or();r.default.install();let i=T(`path`),a=T(`os`),o=T(`crypto`),s=T(`net`),c=Dr();n(Dr(),e),e.IPCMessageReader=class extends c.AbstractMessageReader{constructor(e){super(),this.process=e;let t=this.process;t.on(`error`,e=>this.fireError(e)),t.on(`close`,()=>this.fireClose())}listen(e){return this.process.on(`message`,e),c.Disposable.create(()=>this.process.off(`message`,e))}},e.IPCMessageWriter=class extends c.AbstractMessageWriter{constructor(e){super(),this.process=e,this.errorCount=0;let t=this.process;t.on(`error`,e=>this.fireError(e)),t.on(`close`,()=>this.fireClose)}write(e){try{return typeof this.process.send==`function`&&this.process.send(e,void 0,void 0,t=>{t?(this.errorCount++,this.handleError(t,e)):this.errorCount=0}),Promise.resolve()}catch(t){return this.handleError(t,e),Promise.reject(t)}}handleError(e,t){this.errorCount++,this.fireError(e,t,this.errorCount)}end(){}},e.PortMessageReader=class extends c.AbstractMessageReader{constructor(e){super(),this.onData=new c.Emitter,e.on(`close`,()=>this.fireClose),e.on(`error`,e=>this.fireError(e)),e.on(`message`,e=>{this.onData.fire(e)})}listen(e){return this.onData.event(e)}},e.PortMessageWriter=class extends c.AbstractMessageWriter{constructor(e){super(),this.port=e,this.errorCount=0,e.on(`close`,()=>this.fireClose()),e.on(`error`,e=>this.fireError(e))}write(e){try{return this.port.postMessage(e),Promise.resolve()}catch(t){return this.handleError(t,e),Promise.reject(t)}}handleError(e,t){this.errorCount++,this.fireError(e,t,this.errorCount)}end(){}};var l=class extends c.ReadableStreamMessageReader{constructor(e,t=`utf-8`){super((0,r.default)().stream.asReadableStream(e),t)}};e.SocketMessageReader=l;var u=class extends c.WriteableStreamMessageWriter{constructor(e,t){super((0,r.default)().stream.asWritableStream(e),t),this.socket=e}dispose(){super.dispose(),this.socket.destroy()}};e.SocketMessageWriter=u;var d=class extends c.ReadableStreamMessageReader{constructor(e,t){super((0,r.default)().stream.asReadableStream(e),t)}};e.StreamMessageReader=d;var f=class extends c.WriteableStreamMessageWriter{constructor(e,t){super((0,r.default)().stream.asWritableStream(e),t)}};e.StreamMessageWriter=f;let p=process.env.XDG_RUNTIME_DIR,m=new Map([[`linux`,107],[`darwin`,103]]);function h(){let e=(0,o.randomBytes)(21).toString(`hex`);if(process.platform===`win32`)return`\\\\.\\pipe\\vscode-jsonrpc-${e}-sock`;let t;t=p?i.join(p,`vscode-ipc-${e}.sock`):i.join(a.tmpdir(),`vscode-${e}.sock`);let n=m.get(process.platform);return n!==void 0&&t.length>n&&(0,r.default)().console.warn(`WARNING: IPC handle "${t}" is longer than ${n} characters.`),t}e.generateRandomPipeName=h;function g(e,t=`utf-8`){let n,r=new Promise((e,t)=>{n=e});return new Promise((i,a)=>{let o=(0,s.createServer)(e=>{o.close(),n([new l(e,t),new u(e,t)])});o.on(`error`,a),o.listen(e,()=>{o.removeListener(`error`,a),i({onConnected:()=>r})})})}e.createClientPipeTransport=g;function _(e,t=`utf-8`){let n=(0,s.createConnection)(e);return[new l(n,t),new u(n,t)]}e.createServerPipeTransport=_;function v(e,t=`utf-8`){let n,r=new Promise((e,t)=>{n=e});return new Promise((i,a)=>{let o=(0,s.createServer)(e=>{o.close(),n([new l(e,t),new u(e,t)])});o.on(`error`,a),o.listen(e,`127.0.0.1`,()=>{o.removeListener(`error`,a),i({onConnected:()=>r})})})}e.createClientSocketTransport=v;function y(e,t=`utf-8`){let n=(0,s.createConnection)(e,`127.0.0.1`);return[new l(n,t),new u(n,t)]}e.createServerSocketTransport=y;function b(e){let t=e;return t.read!==void 0&&t.addListener!==void 0}function x(e){let t=e;return t.write!==void 0&&t.addListener!==void 0}function S(e,t,n,r){n||=c.NullLogger;let i=b(e)?new d(e):e,a=x(t)?new f(t):t;return c.ConnectionStrategy.is(r)&&(r={connectionStrategy:r}),(0,c.createMessageConnection)(i,a,n,r)}e.createMessageConnection=S})),Ar=b(((e,t)=>{t.exports=kr()})),jr=b((e=>{var t=e&&e.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(e,`__esModule`,{value:!0}),e.openConnection=e.hasMinimumVersion=e.getFileReferencesRequestType=e.getDeploymentGraphRequestType=e.getMetadataRequestType=e.compileParamsRequestType=e.compileRequestType=e.versionRequestType=void 0;let n=t(T(`path`)),r=t(T(`os`)),i=T(`child_process`),a=T(`crypto`),o=T(`net`),s=Ar();e.versionRequestType=new s.RequestType(`bicep/version`),e.compileRequestType=new s.RequestType(`bicep/compile`),e.compileParamsRequestType=new s.RequestType(`bicep/compileParams`),e.getMetadataRequestType=new s.RequestType(`bicep/getMetadata`),e.getDeploymentGraphRequestType=new s.RequestType(`bicep/getDeploymentGraph`),e.getFileReferencesRequestType=new s.RequestType(`bicep/getFileReferences`);function c(e){let t=`0.25.3`;return{success:e.localeCompare(t,void 0,{numeric:!0,sensitivity:`base`})>=0,minimumVersion:t}}e.hasMinimumVersion=c;function l(e){let t=(0,i.spawnSync)(e,[`--version`],{encoding:`utf-8`});if(t.status!==0)return`Failed to obtain valid Bicep version from '${e} --version'`;let n=t.stdout.match(/Bicep CLI version ([^ ]+) /);if(!n)return`Failed to obtain valid Bicep version from '${e} --version'`;let r=n[1],{success:a,minimumVersion:o}=c(r);if(!a)return`A minimum Bicep version of ${o} is required. Detected version ${r} from '${e} --version'`}function u(){let e=(0,a.randomBytes)(21).toString(`hex`);return process.platform===`win32`?`\\\\.\\pipe\\bicep-${e}-sock`:n.default.join(r.default.tmpdir(),`bicep-${e}.sock`)}function d(e,t){return new Promise((n,r)=>{let i=()=>{a.close(),r()},a=(0,o.createServer)(e=>{t.removeListener(`exit`,i),a.close(),n([new s.SocketMessageReader(e,`utf-8`),new s.SocketMessageWriter(e,`utf-8`)])});t.on(`exit`,i),t.on(`error`,i),a.on(`error`,i),a.listen(e,()=>a.removeListener(`error`,i))})}async function f(e){let t=u(),n=(0,i.spawn)(e,[`jsonrpc`,`--pipe`,t]),r=``;n.stderr.on(`data`,e=>r+=e.toString());let a=new Promise((t,i)=>{n.on(`error`,t=>{i(`Failed to invoke '${e} jsonrpc'. Error: ${t}`)}),n.on(`exit`,()=>{i(l(e)||`Failed to invoke '${e} jsonrpc'. Error: ${r}`)})}),o=d(t,n),[c,f]=await Promise.race([o,a]),p=(0,s.createMessageConnection)(c,f,console);return p.onDispose(()=>n.kill()),n.on(`exit`,()=>p.dispose()),p.listen(),p}e.openConnection=f})),Mr=b((e=>{var t=e&&e.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(e,`__esModule`,{value:!0}),e.Bicep=void 0;let n=t(T(`os`)),r=pr(),i=jr();e.Bicep=class e{constructor(e){this.connection=e}static async initialize(t){let n=new e(await(0,i.openConnection)(t));try{let e=await n.version(),{success:t,minimumVersion:r}=(0,i.hasMinimumVersion)(e);if(!t)throw Error(`Bicep CLI version ${e} is not supported. Please install version ${r} or later.`);return n}catch(e){throw n.dispose(),e}}static async getDownloadUrl(e,t,i){return t??=n.default.platform(),i??=n.default.arch(),await(0,r.getBicepCliDownloadUrl)(t,i,e)}static async install(e,t,i,a){return i??=n.default.platform(),a??=n.default.arch(),await(0,r.installBicepCliWithArch)(e,i,a,t)}async version(){return(await this.connection.sendRequest(i.versionRequestType,{})).version}async compile(e){return await this.connection.sendRequest(i.compileRequestType,e)}async compileParams(e){return await this.connection.sendRequest(i.compileParamsRequestType,e)}async getMetadata(e){return await this.connection.sendRequest(i.getMetadataRequestType,e)}async getDeploymentGraph(e){return await this.connection.sendRequest(i.getDeploymentGraphRequestType,e)}async getFileReferences(e){return await this.connection.sendRequest(i.getFileReferencesRequestType,e)}dispose(){this.connection.dispose()}}})),Nr=b((e=>{Object.defineProperty(e,`__esModule`,{value:!0})})),Pr=b((e=>{var t=e&&e.__createBinding||(Object.create?(function(e,t,n,r){r===void 0&&(r=n);var i=Object.getOwnPropertyDescriptor(t,n);(!i||(`get`in i?!t.__esModule:i.writable||i.configurable))&&(i={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,r,i)}):(function(e,t,n,r){r===void 0&&(r=n),e[r]=t[n]})),n=e&&e.__exportStar||function(e,n){for(var r in e)r!==`default`&&!Object.prototype.hasOwnProperty.call(n,r)&&t(n,e,r)};Object.defineProperty(e,`__esModule`,{value:!0}),n(Mr(),e),n(Nr(),e)})),Fr=x({__addDisposableResource:()=>li,__assign:()=>pi,__asyncDelegator:()=>ti,__asyncGenerator:()=>ei,__asyncValues:()=>ni,__await:()=>$r,__awaiter:()=>Gr,__classPrivateFieldGet:()=>oi,__classPrivateFieldIn:()=>ci,__classPrivateFieldSet:()=>si,__createBinding:()=>mi,__decorate:()=>Rr,__disposeResources:()=>ui,__esDecorate:()=>Br,__exportStar:()=>qr,__extends:()=>Ir,__generator:()=>Kr,__importDefault:()=>ai,__importStar:()=>ii,__makeTemplateObject:()=>ri,__metadata:()=>Wr,__param:()=>zr,__propKey:()=>Hr,__read:()=>Yr,__rest:()=>Lr,__rewriteRelativeImportExtension:()=>di,__runInitializers:()=>Vr,__setFunctionName:()=>Ur,__spread:()=>Xr,__spreadArray:()=>Qr,__spreadArrays:()=>Zr,__values:()=>Jr,default:()=>vi});function Ir(e,t){if(typeof t!=`function`&&t!==null)throw TypeError(`Class extends value `+String(t)+` is not a constructor or null`);fi(e,t);function n(){this.constructor=e}e.prototype=t===null?Object.create(t):(n.prototype=t.prototype,new n)}function Lr(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(e!=null&&typeof Object.getOwnPropertySymbols==`function`)for(var i=0,r=Object.getOwnPropertySymbols(e);i=0;s--)(o=e[s])&&(a=(i<3?o(a):i>3?o(t,n,a):o(t,n))||a);return i>3&&a&&Object.defineProperty(t,n,a),a}function zr(e,t){return function(n,r){t(n,r,e)}}function Br(e,t,n,r,i,a){function o(e){if(e!==void 0&&typeof e!=`function`)throw TypeError(`Function expected`);return e}for(var s=r.kind,c=s===`getter`?`get`:s===`setter`?`set`:`value`,l=!t&&e?r.static?e:e.prototype:null,u=t||(l?Object.getOwnPropertyDescriptor(l,r.name):{}),d,f=!1,p=n.length-1;p>=0;p--){var m={};for(var h in r)m[h]=h===`access`?{}:r[h];for(var h in r.access)m.access[h]=r.access[h];m.addInitializer=function(e){if(f)throw TypeError(`Cannot add initializers after decoration has completed`);a.push(o(e||null))};var g=(0,n[p])(s===`accessor`?{get:u.get,set:u.set}:u[c],m);if(s===`accessor`){if(g===void 0)continue;if(typeof g!=`object`||!g)throw TypeError(`Object expected`);(d=o(g.get))&&(u.get=d),(d=o(g.set))&&(u.set=d),(d=o(g.init))&&i.unshift(d)}else (d=o(g))&&(s===`field`?i.unshift(d):u[c]=d)}l&&Object.defineProperty(l,r.name,u),f=!0}function Vr(e,t,n){for(var r=arguments.length>2,i=0;i0&&a[a.length-1]))&&(s[0]===6||s[0]===2)){n=0;continue}if(s[0]===3&&(!a||s[1]>a[0]&&s[1]=e.length&&(e=void 0),{value:e&&e[r++],done:!e}}};throw TypeError(t?`Object is not iterable.`:`Symbol.iterator is not defined.`)}function Yr(e,t){var n=typeof Symbol==`function`&&e[Symbol.iterator];if(!n)return e;var r=n.call(e),i,a=[],o;try{for(;(t===void 0||t-- >0)&&!(i=r.next()).done;)a.push(i.value)}catch(e){o={error:e}}finally{try{i&&!i.done&&(n=r.return)&&n.call(r)}finally{if(o)throw o.error}}return a}function Xr(){for(var e=[],t=0;t1||c(e,t)})},t&&(i[e]=t(i[e])))}function c(e,t){try{l(r[e](t))}catch(e){f(a[0][3],e)}}function l(e){e.value instanceof $r?Promise.resolve(e.value.v).then(u,d):f(a[0][2],e)}function u(e){c(`next`,e)}function d(e){c(`throw`,e)}function f(e,t){e(t),a.shift(),a.length&&c(a[0][0],a[0][1])}}function ti(e){var t,n;return t={},r(`next`),r(`throw`,function(e){throw e}),r(`return`),t[Symbol.iterator]=function(){return this},t;function r(r,i){t[r]=e[r]?function(t){return(n=!n)?{value:$r(e[r](t)),done:!1}:i?i(t):t}:i}}function ni(e){if(!Symbol.asyncIterator)throw TypeError(`Symbol.asyncIterator is not defined.`);var t=e[Symbol.asyncIterator],n;return t?t.call(e):(e=typeof Jr==`function`?Jr(e):e[Symbol.iterator](),n={},r(`next`),r(`throw`),r(`return`),n[Symbol.asyncIterator]=function(){return this},n);function r(t){n[t]=e[t]&&function(n){return new Promise(function(r,a){n=e[t](n),i(r,a,n.done,n.value)})}}function i(e,t,n,r){Promise.resolve(r).then(function(t){e({value:t,done:n})},t)}}function ri(e,t){return Object.defineProperty?Object.defineProperty(e,`raw`,{value:t}):e.raw=t,e}function ii(e){if(e&&e.__esModule)return e;var t={};if(e!=null)for(var n=gi(e),r=0;r{fi=function(e,t){return fi=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])},fi(e,t)},pi=function(){return pi=Object.assign||function(e){for(var t,n=1,r=arguments.length;n{Object.defineProperty(e,`__esModule`,{value:!0}),e.getContinuationToken=n,e.setContinuationToken=r;let t=new WeakMap;function n(e){if(!(typeof e!=`object`||!e))return t.get(e)?.continuationToken}function r(e,n){if(typeof e!=`object`||!e||!n)return;let r=t.get(e)??{};r.continuationToken=n,t.set(e,r)}})),xi=b((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.KnownTagsPatchOperation=e.KnownExportTemplateOutputFormat=e.KnownExtendedLocationType=e.KnownLevel=e.KnownProviderAuthorizationConsentState=e.KnownAliasPathAttributes=e.KnownAliasPathTokenType=e.KnownProvisioningState=e.KnownValidationLevel=e.KnownExpressionEvaluationOptionsScopeType=e.KnownExtensionConfigPropertyType=void 0;var t;(function(e){e.String=`String`,e.Int=`Int`,e.Bool=`Bool`,e.Array=`Array`,e.Object=`Object`,e.SecureString=`SecureString`,e.SecureObject=`SecureObject`})(t||(e.KnownExtensionConfigPropertyType=t={}));var n;(function(e){e.NotSpecified=`NotSpecified`,e.Outer=`Outer`,e.Inner=`Inner`})(n||(e.KnownExpressionEvaluationOptionsScopeType=n={}));var r;(function(e){e.Template=`Template`,e.Provider=`Provider`,e.ProviderNoRbac=`ProviderNoRbac`})(r||(e.KnownValidationLevel=r={}));var i;(function(e){e.NotSpecified=`NotSpecified`,e.Accepted=`Accepted`,e.Running=`Running`,e.Ready=`Ready`,e.Creating=`Creating`,e.Created=`Created`,e.Deleting=`Deleting`,e.Deleted=`Deleted`,e.Canceled=`Canceled`,e.Failed=`Failed`,e.Succeeded=`Succeeded`,e.Updating=`Updating`})(i||(e.KnownProvisioningState=i={}));var a;(function(e){e.NotSpecified=`NotSpecified`,e.Any=`Any`,e.String=`String`,e.Object=`Object`,e.Array=`Array`,e.Integer=`Integer`,e.Number=`Number`,e.Boolean=`Boolean`})(a||(e.KnownAliasPathTokenType=a={}));var o;(function(e){e.None=`None`,e.Modifiable=`Modifiable`})(o||(e.KnownAliasPathAttributes=o={}));var s;(function(e){e.NotSpecified=`NotSpecified`,e.Required=`Required`,e.NotRequired=`NotRequired`,e.Consented=`Consented`})(s||(e.KnownProviderAuthorizationConsentState=s={}));var c;(function(e){e.Warning=`Warning`,e.Info=`Info`,e.Error=`Error`})(c||(e.KnownLevel=c={}));var l;(function(e){e.EdgeZone=`EdgeZone`})(l||(e.KnownExtendedLocationType=l={}));var u;(function(e){e.Json=`Json`,e.Bicep=`Bicep`})(u||(e.KnownExportTemplateOutputFormat=u={}));var d;(function(e){e.Replace=`Replace`,e.Merge=`Merge`,e.Delete=`Delete`})(d||(e.KnownTagsPatchOperation=d={}))})),Si=b((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.encodeString=t,e.encodeByteArray=n,e.decodeString=r,e.decodeStringToString=i;function t(e){return Buffer.from(e).toString(`base64`)}function n(e){return(e instanceof Buffer?e:Buffer.from(e.buffer)).toString(`base64`)}function r(e){return Buffer.from(e,`base64`)}function i(e){return Buffer.from(e,`base64`).toString()}})),Ci=b((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.XML_CHARKEY=e.XML_ATTRKEY=void 0,e.XML_ATTRKEY=`$`,e.XML_CHARKEY=`_`})),wi=b((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.isPrimitiveBody=t,e.isDuration=r,e.isValidUuid=a,e.flattenResponse=s;function t(e,t){return t!==`Composite`&&t!==`Dictionary`&&(typeof e==`string`||typeof e==`number`||typeof e==`boolean`||t?.match(/^(Date|DateTime|DateTimeRfc1123|UnixTime|ByteArray|Base64Url)$/i)!==null||e==null)}let n=/^(-|\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/;function r(e){return n.test(e)}let i=/^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/i;function a(e){return i.test(e)}function o(e){let t={...e.headers,...e.body};return e.hasNullableType&&Object.getOwnPropertyNames(t).length===0?e.shouldWrapBody?{body:null}:null:e.shouldWrapBody?{...e.headers,body:e.body}:t}function s(e,n){let r=e.parsedHeaders;if(e.request.method===`HEAD`)return{...r,body:e.parsedBody};let i=n&&n.bodyMapper,a=!!i?.nullable,s=i?.type.name;if(s===`Stream`)return{...r,blobBody:e.blobBody,readableStreamBody:e.readableStreamBody};let c=s===`Composite`&&i.type.modelProperties||{},l=Object.keys(c).some(e=>c[e].serializedName===``);if(s===`Sequence`||l){let t=e.parsedBody??[];for(let n of Object.keys(c))c[n].serializedName&&(t[n]=e.parsedBody?.[n]);if(r)for(let e of Object.keys(r))t[e]=r[e];return a&&!e.parsedBody&&!r&&Object.getOwnPropertyNames(c).length===0?null:t}return o({body:e.parsedBody,headers:r,hasNullableType:a,shouldWrapBody:t(e.parsedBody,s)})}})),Ti=b((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.MapperTypeNames=void 0,e.createSerializer=a;let t=(yi(),w(Fr)).__importStar(Si()),n=Ci(),r=wi();var i=class{constructor(e={},t=!1){this.modelMappers=e,this.isXML=t}validateConstraints(e,t,n){let r=(e,r)=>{throw Error(`"${n}" with value "${t}" should satisfy the constraint "${e}": ${r}.`)};if(e.constraints&&t!=null){let{ExclusiveMaximum:n,ExclusiveMinimum:i,InclusiveMaximum:a,InclusiveMinimum:o,MaxItems:s,MaxLength:c,MinItems:l,MinLength:u,MultipleOf:d,Pattern:f,UniqueItems:p}=e.constraints;if(n!==void 0&&t>=n&&r(`ExclusiveMaximum`,n),i!==void 0&&t<=i&&r(`ExclusiveMinimum`,i),a!==void 0&&t>a&&r(`InclusiveMaximum`,a),o!==void 0&&ts&&r(`MaxItems`,s),c!==void 0&&t.length>c&&r(`MaxLength`,c),l!==void 0&&t.lengthn.indexOf(e)!==t)&&r(`UniqueItems`,p)}}serialize(e,t,r,i={xml:{}}){let a={xml:{rootName:i.xml.rootName??``,includeRoot:i.xml.includeRoot??!1,xmlCharKey:i.xml.xmlCharKey??n.XML_CHARKEY}},o={},s=e.type.name;r||=e.serializedName,s.match(/^Sequence$/i)!==null&&(o=[]),e.isConstant&&(t=e.defaultValue);let{required:c,nullable:l}=e;if(c&&l&&t===void 0)throw Error(`${r} cannot be undefined.`);if(c&&!l&&t==null)throw Error(`${r} cannot be null or undefined.`);if(!c&&l===!1&&t===null)throw Error(`${r} cannot be null.`);return t==null?o=t:s.match(/^any$/i)===null?s.match(/^(Number|String|Boolean|Object|Stream|Uuid)$/i)===null?s.match(/^Enum$/i)===null?s.match(/^(Date|DateTime|TimeSpan|DateTimeRfc1123|UnixTime)$/i)===null?s.match(/^ByteArray$/i)===null?s.match(/^Base64Url$/i)===null?s.match(/^Sequence$/i)===null?s.match(/^Dictionary$/i)===null?s.match(/^Composite$/i)!==null&&(o=S(this,e,t,r,!!this.isXML,a)):o=v(this,e,t,r,!!this.isXML,a):o=_(this,e,t,r,!!this.isXML,a):o=h(r,t):o=m(r,t):o=g(s,t,r):o=p(r,e.type.allowedValues,t):o=f(s,r,t):o=t,o}deserialize(e,r,i,a={xml:{}}){let o={xml:{rootName:a.xml.rootName??``,includeRoot:a.xml.includeRoot??!1,xmlCharKey:a.xml.xmlCharKey??n.XML_CHARKEY},ignoreUnknownProperties:a.ignoreUnknownProperties??!1};if(r==null)return this.isXML&&e.type.name===`Sequence`&&!e.xmlIsWrapped&&(r=[]),e.defaultValue!==void 0&&(r=e.defaultValue),r;let s,l=e.type.name;if(i||=e.serializedName,l.match(/^Composite$/i)!==null)s=E(this,e,r,i,o);else{if(this.isXML){let e=o.xml.xmlCharKey;r[n.XML_ATTRKEY]!==void 0&&r[e]!==void 0&&(r=r[e])}l.match(/^Number$/i)===null?l.match(/^Boolean$/i)===null?l.match(/^(String|Enum|Object|Stream|Uuid|TimeSpan|any)$/i)===null?l.match(/^(Date|DateTime|DateTimeRfc1123)$/i)===null?l.match(/^UnixTime$/i)===null?l.match(/^ByteArray$/i)===null?l.match(/^Base64Url$/i)===null?l.match(/^Sequence$/i)===null?l.match(/^Dictionary$/i)!==null&&(s=D(this,e,r,i,o)):s=O(this,e,r,i,o):s=c(r):s=t.decodeString(r):s=d(r):s=new Date(r):s=r:s=r===`true`?!0:r===`false`?!1:r:(s=parseFloat(r),isNaN(s)&&(s=r))}return e.isConstant&&(s=e.defaultValue),s}};function a(e={},t=!1){return new i(e,t)}function o(e,t){let n=e.length;for(;n-1>=0&&e[n-1]===t;)--n;return e.substr(0,n)}function s(e){if(e){if(!(e instanceof Uint8Array))throw Error(`Please provide an input of type Uint8Array for converting to Base64Url.`);return o(t.encodeByteArray(e),`=`).replace(/\+/g,`-`).replace(/\//g,`_`)}}function c(e){if(e){if(e&&typeof e.valueOf()!=`string`)throw Error(`Please provide an input of type string for converting to Uint8Array`);return e=e.replace(/-/g,`+`).replace(/_/g,`/`),t.decodeString(e)}}function l(e){let t=[],n=``;if(e){let r=e.split(`.`);for(let e of r)e.charAt(e.length-1)===`\\`?n+=e.substr(0,e.length-1)+`.`:(n+=e,t.push(n),n=``)}return t}function u(e){if(e)return typeof e.valueOf()==`string`&&(e=new Date(e)),Math.floor(e.getTime()/1e3)}function d(e){if(e)return new Date(e*1e3)}function f(e,t,n){if(n!=null){if(e.match(/^Number$/i)!==null){if(typeof n!=`number`)throw Error(`${t} with value ${n} must be of type number.`)}else if(e.match(/^String$/i)!==null){if(typeof n.valueOf()!=`string`)throw Error(`${t} with value "${n}" must be of type string.`)}else if(e.match(/^Uuid$/i)!==null){if(!(typeof n.valueOf()==`string`&&(0,r.isValidUuid)(n)))throw Error(`${t} with value "${n}" must be of type string and a valid uuid.`)}else if(e.match(/^Boolean$/i)!==null){if(typeof n!=`boolean`)throw Error(`${t} with value ${n} must be of type boolean.`)}else if(e.match(/^Stream$/i)!==null){let e=typeof n;if(e!==`string`&&typeof n.pipe!=`function`&&typeof n.tee!=`function`&&!(n instanceof ArrayBuffer)&&!ArrayBuffer.isView(n)&&!((typeof Blob==`function`||typeof Blob==`object`)&&n instanceof Blob)&&e!==`function`)throw Error(`${t} must be a string, Blob, ArrayBuffer, ArrayBufferView, ReadableStream, or () => ReadableStream.`)}}return n}function p(e,t,n){if(!t)throw Error(`Please provide a set of allowedValues to validate ${e} as an Enum Type.`);if(!t.some(e=>typeof e.valueOf()==`string`?e.toLowerCase()===n.toLowerCase():e===n))throw Error(`${n} is not a valid value for ${e}. The valid values are: ${JSON.stringify(t)}.`);return n}function m(e,n){if(n!=null){if(!(n instanceof Uint8Array))throw Error(`${e} must be of type Uint8Array.`);n=t.encodeByteArray(n)}return n}function h(e,t){if(t!=null){if(!(t instanceof Uint8Array))throw Error(`${e} must be of type Uint8Array.`);t=s(t)}return t}function g(e,t,n){if(t!=null){if(e.match(/^Date$/i)!==null){if(!(t instanceof Date||typeof t.valueOf()==`string`&&!isNaN(Date.parse(t))))throw Error(`${n} must be an instanceof Date or a string in ISO8601 format.`);t=t instanceof Date?t.toISOString().substring(0,10):new Date(t).toISOString().substring(0,10)}else if(e.match(/^DateTime$/i)!==null){if(!(t instanceof Date||typeof t.valueOf()==`string`&&!isNaN(Date.parse(t))))throw Error(`${n} must be an instanceof Date or a string in ISO8601 format.`);t=t instanceof Date?t.toISOString():new Date(t).toISOString()}else if(e.match(/^DateTimeRfc1123$/i)!==null){if(!(t instanceof Date||typeof t.valueOf()==`string`&&!isNaN(Date.parse(t))))throw Error(`${n} must be an instanceof Date or a string in RFC-1123 format.`);t=t instanceof Date?t.toUTCString():new Date(t).toUTCString()}else if(e.match(/^UnixTime$/i)!==null){if(!(t instanceof Date||typeof t.valueOf()==`string`&&!isNaN(Date.parse(t))))throw Error(`${n} must be an instanceof Date or a string in RFC-1123/ISO8601 format for it to be serialized in UnixTime/Epoch format.`);t=u(t)}else if(e.match(/^TimeSpan$/i)!==null&&!(0,r.isDuration)(t))throw Error(`${n} must be a string in ISO 8601 format. Instead was "${t}".`)}return t}function _(e,t,r,i,a,o){if(!Array.isArray(r))throw Error(`${i} must be of type Array.`);let s=t.type.element;if(!s||typeof s!=`object`)throw Error(`element" metadata for an Array must be defined in the mapper and it must of type "object" in ${i}.`);s.type.name===`Composite`&&s.type.className&&(s=e.modelMappers[s.type.className]??s);let c=[];for(let t=0;te!==n)&&(s[n]=e.serialize(u,r[n],i+`["`+n+`"]`,o))}return s}return r}function C(e,t,r,i){if(!r||!e.xmlNamespace)return t;let a={[e.xmlNamespacePrefix?`xmlns:${e.xmlNamespacePrefix}`:`xmlns`]:e.xmlNamespace};if([`Composite`].includes(e.type.name)){if(t[n.XML_ATTRKEY])return t;{let e={...t};return e[n.XML_ATTRKEY]=a,e}}let o={};return o[i.xml.xmlCharKey]=t,o[n.XML_ATTRKEY]=a,o}function T(e,t){return[n.XML_ATTRKEY,t.xml.xmlCharKey].includes(e)}function E(e,t,r,i,a){let o=a.xml.xmlCharKey??n.XML_CHARKEY;j(e,t)&&(t=A(e,t,r,`serializedName`));let s=x(e,t,i),c={},u=[];for(let d of Object.keys(s)){let f=s[d],p=l(s[d].serializedName);u.push(p[0]);let{serializedName:m,xmlName:h,xmlElementName:g}=f,_=i;m!==``&&m!==void 0&&(_=i+`.`+m);let v=f.headerCollectionPrefix;if(v){let t={};for(let n of Object.keys(r))n.startsWith(v)&&(t[n.substring(v.length)]=e.deserialize(f.type.value,r[n],_,a)),u.push(n);c[d]=t}else if(e.isXML)if(f.xmlIsAttribute&&r[n.XML_ATTRKEY])c[d]=e.deserialize(f,r[n.XML_ATTRKEY][h],_,a);else if(f.xmlIsMsText)r[o]===void 0?typeof r==`string`&&(c[d]=r):c[d]=r[o];else{let t=g||h||m;if(f.xmlIsWrapped){let t=r[h]?.[g]??[];c[d]=e.deserialize(f,t,_,a),u.push(h)}else{let n=r[t];c[d]=e.deserialize(f,n,_,a),u.push(t)}}else{let n,i=r,o=0;for(let e of p){if(!i)break;o++,i=i[e]}i===null&&o{for(let t in s)if(l(s[t].serializedName)[0]===e)return!1;return!0};for(let n in r)t(n)&&(c[n]=e.deserialize(d,r[n],i+`["`+n+`"]`,a))}else if(r&&!a.ignoreUnknownProperties)for(let e of Object.keys(r))c[e]===void 0&&!u.includes(e)&&!T(e,a)&&(c[e]=r[e]);return c}function D(e,t,n,r,i){let a=t.type.value;if(!a||typeof a!=`object`)throw Error(`"value" metadata for a Dictionary must be defined in the mapper and it must of type "object" in ${r}`);if(n){let t={};for(let o of Object.keys(n))t[o]=e.deserialize(a,n[o],r,i);return t}return n}function O(e,t,n,r,i){let a=t.type.element;if(!a||typeof a!=`object`)throw Error(`element" metadata for an Array must be defined in the mapper and it must of type "object" in ${r}`);if(n){Array.isArray(n)||(n=[n]),a.type.name===`Composite`&&a.type.className&&(a=e.modelMappers[a.type.className]??a);let t=[];for(let o=0;o{Object.defineProperty(e,`__esModule`,{value:!0}),e.AbortError=void 0,e.AbortError=class extends Error{constructor(e){super(e),this.name=`AbortError`}}})),Di=b((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.log=a;let t=(yi(),w(Fr)),n=T(`node:os`),r=t.__importDefault(T(`node:util`)),i=t.__importDefault(T(`node:process`));function a(e,...t){i.default.stderr.write(`${r.default.format(e,...t)}${n.EOL}`)}})),Oi=b((e=>{Object.defineProperty(e,`__esModule`,{value:!0});let t=Di(),n=typeof process<`u`&&process.env&&process.env.DEBUG||void 0,r,i=[],a=[],o=[];n&&c(n);let s=Object.assign(e=>f(e),{enable:c,enabled:l,disable:d,log:t.log});function c(e){r=e,i=[],a=[];let t=e.split(`,`).map(e=>e.trim());for(let e of t)e.startsWith(`-`)?a.push(e.substring(1)):i.push(e);for(let e of o)e.enabled=l(e.namespace)}function l(e){if(e.endsWith(`*`))return!0;for(let t of a)if(u(e,t))return!1;for(let t of i)if(u(e,t))return!0;return!1}function u(e,t){if(t.indexOf(`*`)===-1)return e===t;let n=t;if(t.indexOf(`**`)!==-1){let e=[],r=``;for(let n of t)if(n===`*`&&r===`*`)continue;else r=n,e.push(n);n=e.join(``)}let r=0,i=0,a=n.length,o=e.length,s=-1,c=-1;for(;r=0){if(i=s+1,r=c+1,r===o)return!1;for(;e[r]!==n[i];)if(r++,r===o)return!1;c=r,r++,i++;continue}else return!1;let l=r===e.length,u=i===n.length,d=i===n.length-1&&n[i]===`*`;return l&&(u||d)}function d(){let e=r||``;return c(``),e}function f(e){let t=Object.assign(n,{enabled:l(e),destroy:p,log:s.log,namespace:e,extend:m});function n(...n){t.enabled&&(n.length>0&&(n[0]=`${e} ${n[0]}`),t.log(...n))}return o.push(t),t}function p(){let e=o.indexOf(this);return e>=0?(o.splice(e,1),!0):!1}function m(e){let t=f(`${this.namespace}:${e}`);return t.log=this.log,t}e.default=s})),ki=b((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.TypeSpecRuntimeLogger=void 0,e.createLoggerContext=o,e.setLogLevel=c,e.getLogLevel=l,e.createClientLogger=u;let t=(yi(),w(Fr)).__importDefault(Oi()),n=[`verbose`,`info`,`warning`,`error`],r={verbose:400,info:300,warning:200,error:100};function i(e,t){t.log=(...t)=>{e.log(...t)}}function a(e){return n.includes(e)}function o(e){let o=new Set,s=typeof process<`u`&&process.env&&process.env[e.logLevelEnvVarName]||void 0,c,l=(0,t.default)(e.namespace);l.log=(...e)=>{t.default.log(...e)};function u(e){if(e&&!a(e))throw Error(`Unknown log level '${e}'. Acceptable values: ${n.join(`,`)}`);c=e;let r=[];for(let e of o)d(e)&&r.push(e.namespace);t.default.enable(r.join(`,`))}s&&(a(s)?u(s):console.error(`${e.logLevelEnvVarName} set to unknown log level '${s}'; logging is not enabled. Acceptable values: ${n.join(`, `)}.`));function d(e){return!!(c&&r[e.level]<=r[c])}function f(e,n){let r=Object.assign(e.extend(n),{level:n});if(i(e,r),d(r)){let e=t.default.disable();t.default.enable(e+`,`+r.namespace)}return o.add(r),r}function p(){return c}function m(e){let t=l.extend(e);return i(l,t),{error:f(t,`error`),warning:f(t,`warning`),info:f(t,`info`),verbose:f(t,`verbose`)}}return{setLogLevel:u,getLogLevel:p,createClientLogger:m,logger:l}}let s=o({logLevelEnvVarName:`TYPESPEC_RUNTIME_LOG_LEVEL`,namespace:`typeSpecRuntime`});e.TypeSpecRuntimeLogger=s.logger;function c(e){s.setLogLevel(e)}function l(){return s.getLogLevel()}function u(e){return s.createClientLogger(e)}})),Ai=b((e=>{let t;Object.defineProperty(e,`__esModule`,{value:!0}),e.createHttpHeaders=a;function n(e){return e.toLowerCase()}function*r(e){for(let t of e.values())yield[t.name,t.value]}t=Symbol.iterator;var i=class{constructor(e){if(this._headersMap=new Map,e)for(let t of Object.keys(e))this.set(t,e[t])}set(e,t){this._headersMap.set(n(e),{name:e,value:String(t).trim()})}get(e){return this._headersMap.get(n(e))?.value}has(e){return this._headersMap.has(n(e))}delete(e){this._headersMap.delete(n(e))}toJSON(e={}){let t={};if(e.preserveCase)for(let e of this._headersMap.values())t[e.name]=e.value;else for(let[e,n]of this._headersMap)t[e]=n.value;return t}toString(){return JSON.stringify(this.toJSON({preserveCase:!0}))}[t](){return r(this._headersMap)}};function a(e){return new i(e)}})),ji=b((e=>{Object.defineProperty(e,`__esModule`,{value:!0})})),Mi=b((e=>{Object.defineProperty(e,`__esModule`,{value:!0})})),Ni=b((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.randomUUID=t;function t(){return crypto.randomUUID()}})),Pi=b((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.createPipelineRequest=i;let t=Ai(),n=Ni();var r=class{constructor(e){this.url=e.url,this.body=e.body,this.headers=e.headers??(0,t.createHttpHeaders)(),this.method=e.method??`GET`,this.timeout=e.timeout??0,this.multipartBody=e.multipartBody,this.formData=e.formData,this.disableKeepAlive=e.disableKeepAlive??!1,this.proxySettings=e.proxySettings,this.streamResponseStatusCodes=e.streamResponseStatusCodes,this.withCredentials=e.withCredentials??!1,this.abortSignal=e.abortSignal,this.onUploadProgress=e.onUploadProgress,this.onDownloadProgress=e.onDownloadProgress,this.requestId=e.requestId||(0,n.randomUUID)(),this.allowInsecureConnection=e.allowInsecureConnection??!1,this.enableBrowserStreams=e.enableBrowserStreams??!1,this.requestOverrides=e.requestOverrides,this.authSchemes=e.authSchemes}};function i(e){return new r(e)}})),Fi=b((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.createEmptyPipeline=r;let t=new Set([`Deserialize`,`Serialize`,`Retry`,`Sign`]);var n=class e{constructor(e){this._policies=[],this._policies=e?.slice(0)??[],this._orderedPolicies=void 0}addPolicy(e,n={}){if(n.phase&&n.afterPhase)throw Error(`Policies inside a phase cannot specify afterPhase.`);if(n.phase&&!t.has(n.phase))throw Error(`Invalid phase name: ${n.phase}`);if(n.afterPhase&&!t.has(n.afterPhase))throw Error(`Invalid afterPhase name: ${n.afterPhase}`);this._policies.push({policy:e,options:n}),this._orderedPolicies=void 0}removePolicy(e){let t=[];return this._policies=this._policies.filter(n=>e.name&&n.policy.name===e.name||e.phase&&n.options.phase===e.phase?(t.push(n.policy),!1):!0),this._orderedPolicies=void 0,t}sendRequest(e,t){return this.getOrderedPolicies().reduceRight((e,t)=>n=>t.sendRequest(n,e),t=>e.sendRequest(t))(t)}getOrderedPolicies(){return this._orderedPolicies||=this.orderPolicies(),this._orderedPolicies}clone(){return new e(this._policies)}static create(){return new e}orderPolicies(){let e=[],t=new Map;function n(e){return{name:e,policies:new Set,hasRun:!1,hasAfterPolicies:!1}}let r=n(`Serialize`),i=n(`None`),a=n(`Deserialize`),o=n(`Retry`),s=n(`Sign`),c=[r,i,a,o,s];function l(e){return e===`Retry`?o:e===`Serialize`?r:e===`Deserialize`?a:e===`Sign`?s:i}for(let e of this._policies){let n=e.policy,r=e.options,i=n.name;if(t.has(i))throw Error(`Duplicate policy names not allowed in pipeline`);let a={policy:n,dependsOn:new Set,dependants:new Set};r.afterPhase&&(a.afterPhase=l(r.afterPhase),a.afterPhase.hasAfterPolicies=!0),t.set(i,a),l(r.phase).policies.add(a)}for(let e of this._policies){let{policy:n,options:r}=e,i=n.name,a=t.get(i);if(!a)throw Error(`Missing node for policy ${i}`);if(r.afterPolicies)for(let e of r.afterPolicies){let n=t.get(e);n&&(a.dependsOn.add(n),n.dependants.add(a))}if(r.beforePolicies)for(let e of r.beforePolicies){let n=t.get(e);n&&(n.dependsOn.add(a),a.dependants.add(n))}}function u(n){n.hasRun=!0;for(let r of n.policies)if(!(r.afterPhase&&(!r.afterPhase.hasRun||r.afterPhase.policies.size))&&r.dependsOn.size===0){e.push(r.policy);for(let e of r.dependants)e.dependsOn.delete(r);t.delete(r.policy.name),n.policies.delete(r)}}function d(){for(let e of c){if(u(e),e.policies.size>0&&e!==i){i.hasRun||u(i);return}e.hasAfterPolicies&&u(i)}}let f=0;for(;t.size>0;){f++;let t=e.length;if(d(),e.length<=t&&f>1)throw Error(`Cannot satisfy policy dependencies due to requirements cycle.`)}return e}};function r(){return n.create()}})),Ii=b((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.isObject=t;function t(e){return typeof e==`object`&&!!e&&!Array.isArray(e)&&!(e instanceof RegExp)&&!(e instanceof Date)}})),Li=b((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.isError=n;let t=Ii();function n(e){if((0,t.isObject)(e)){let t=typeof e.name==`string`,n=typeof e.message==`string`;return t&&n}return!1}})),Ri=b((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.custom=void 0,e.custom=T(`node:util`).inspect.custom})),zi=b((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.Sanitizer=void 0;let t=Ii(),n=`REDACTED`,r=`x-ms-client-request-id.x-ms-return-client-request-id.x-ms-useragent.x-ms-correlation-request-id.x-ms-request-id.client-request-id.ms-cv.return-client-request-id.traceparent.Access-Control-Allow-Credentials.Access-Control-Allow-Headers.Access-Control-Allow-Methods.Access-Control-Allow-Origin.Access-Control-Expose-Headers.Access-Control-Max-Age.Access-Control-Request-Headers.Access-Control-Request-Method.Origin.Accept.Accept-Encoding.Cache-Control.Connection.Content-Length.Content-Type.Date.ETag.Expires.If-Match.If-Modified-Since.If-None-Match.If-Unmodified-Since.Last-Modified.Pragma.Request-Id.Retry-After.Server.Transfer-Encoding.User-Agent.WWW-Authenticate`.split(`.`),i=[`api-version`];e.Sanitizer=class{constructor({additionalAllowedHeaderNames:e=[],additionalAllowedQueryParameters:t=[]}={}){e=r.concat(e),t=i.concat(t),this.allowedHeaderNames=new Set(e.map(e=>e.toLowerCase())),this.allowedQueryParameters=new Set(t.map(e=>e.toLowerCase()))}sanitize(e){let n=new Set;return JSON.stringify(e,(e,r)=>{if(r instanceof Error)return{...r,name:r.name,message:r.message};if(e===`headers`)return this.sanitizeHeaders(r);if(e===`url`)return this.sanitizeUrl(r);if(e===`query`)return this.sanitizeQuery(r);if(e!==`body`&&e!==`response`&&e!==`operationSpec`){if(Array.isArray(r)||(0,t.isObject)(r)){if(n.has(r))return`[Circular]`;n.add(r)}return r}},2)}sanitizeUrl(e){if(typeof e!=`string`||e===null||e===``)return e;let t=new URL(e);if(!t.search)return e;for(let[e]of t.searchParams)this.allowedQueryParameters.has(e.toLowerCase())||t.searchParams.set(e,n);return t.toString()}sanitizeHeaders(e){let t={};for(let r of Object.keys(e))this.allowedHeaderNames.has(r.toLowerCase())?t[r]=e[r]:t[r]=n;return t}sanitizeQuery(e){if(typeof e!=`object`||!e)return e;let t={};for(let r of Object.keys(e))this.allowedQueryParameters.has(r.toLowerCase())?t[r]=e[r]:t[r]=n;return t}}})),Bi=b((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.RestError=void 0,e.isRestError=a;let t=Li(),n=Ri(),r=new(zi()).Sanitizer;var i=class e extends Error{constructor(t,i={}){super(t),this.name=`RestError`,this.code=i.code,this.statusCode=i.statusCode,Object.defineProperty(this,`request`,{value:i.request,enumerable:!1}),Object.defineProperty(this,`response`,{value:i.response,enumerable:!1});let a=this.request?.agent?{maxFreeSockets:this.request.agent.maxFreeSockets,maxSockets:this.request.agent.maxSockets}:void 0;Object.defineProperty(this,n.custom,{value:()=>`RestError: ${this.message} \n ${r.sanitize({...this,request:{...this.request,agent:a},response:this.response})}`,enumerable:!1}),Object.setPrototypeOf(this,e.prototype)}};i.REQUEST_SEND_ERROR=`REQUEST_SEND_ERROR`,i.PARSE_ERROR=`PARSE_ERROR`,e.RestError=i;function a(e){return e instanceof i?!0:(0,t.isError)(e)&&e.name===`RestError`}})),Vi=b((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.uint8ArrayToString=t,e.stringToUint8Array=n;function t(e,t){return Buffer.from(e).toString(t)}function n(e,t){return Buffer.from(e,t)}})),Hi=b((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.logger=void 0,e.logger=(0,ki().createClientLogger)(`ts-http-runtime`)})),Ui=b((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.getBodyLength=b,e.createNodeHttpClient=x;let t=(yi(),w(Fr)),n=t.__importDefault(T(`node:http`)),r=t.__importDefault(T(`node:https`)),i=t.__importDefault(T(`node:zlib`)),a=T(`node:stream`),o=Ei(),s=Ai(),c=Bi(),l=Hi(),u=zi(),d={};function f(e){return e&&typeof e.pipe==`function`}function p(e){return e.readable===!1?Promise.resolve():new Promise(t=>{let n=()=>{t(),e.removeListener(`close`,n),e.removeListener(`end`,n),e.removeListener(`error`,n)};e.on(`close`,n),e.on(`end`,n),e.on(`error`,n)})}function m(e){return e&&typeof e.byteLength==`number`}var h=class extends a.Transform{_transform(e,t,n){this.push(e),this.loadedBytes+=e.length;try{this.progressCallback({loadedBytes:this.loadedBytes}),n()}catch(e){n(e)}}constructor(e){super(),this.loadedBytes=0,this.progressCallback=e}},g=class{constructor(){this.cachedHttpsAgents=new WeakMap}async sendRequest(e){let t=new AbortController,n;if(e.abortSignal){if(e.abortSignal.aborted)throw new o.AbortError(`The operation was aborted. Request has already been canceled.`);n=e=>{e.type===`abort`&&t.abort()},e.abortSignal.addEventListener(`abort`,n)}let r;e.timeout>0&&(r=setTimeout(()=>{let n=new u.Sanitizer;l.logger.info(`request to '${n.sanitizeUrl(e.url)}' timed out. canceling...`),t.abort()},e.timeout));let i=e.headers.get(`Accept-Encoding`),a=i?.includes(`gzip`)||i?.includes(`deflate`),s=typeof e.body==`function`?e.body():e.body;if(s&&!e.headers.has(`Content-Length`)){let t=b(s);t!==null&&e.headers.set(`Content-Length`,t)}let c;try{if(s&&e.onUploadProgress){let t=e.onUploadProgress,n=new h(t);n.on(`error`,e=>{l.logger.error(`Error in upload progress`,e)}),f(s)?s.pipe(n):n.end(s),s=n}let n=await this.makeRequest(e,t,s);r!==void 0&&clearTimeout(r);let i=_(n),o={status:n.statusCode??0,headers:i,request:e};if(e.method===`HEAD`)return n.resume(),o;c=a?v(n,i):n;let u=e.onDownloadProgress;if(u){let e=new h(u);e.on(`error`,e=>{l.logger.error(`Error in download progress`,e)}),c.pipe(e),c=e}return e.streamResponseStatusCodes?.has(1/0)||e.streamResponseStatusCodes?.has(o.status)?o.readableStreamBody=c:o.bodyAsText=await y(c),o}finally{if(e.abortSignal&&n){let t=Promise.resolve();f(s)&&(t=p(s));let r=Promise.resolve();f(c)&&(r=p(c)),Promise.all([t,r]).then(()=>{n&&e.abortSignal?.removeEventListener(`abort`,n)}).catch(e=>{l.logger.warning(`Error when cleaning up abortListener on httpRequest`,e)})}}}makeRequest(e,t,i){let a=new URL(e.url),s=a.protocol!==`https:`;if(s&&!e.allowInsecureConnection)throw Error(`Cannot connect to ${e.url} while allowInsecureConnection is false.`);let u={agent:e.agent??this.getOrCreateAgent(e,s),hostname:a.hostname,path:`${a.pathname}${a.search}`,port:a.port,method:e.method,headers:e.headers.toJSON({preserveCase:!0}),...e.requestOverrides};return new Promise((a,d)=>{let p=s?n.default.request(u,a):r.default.request(u,a);p.once(`error`,t=>{d(new c.RestError(t.message,{code:t.code??c.RestError.REQUEST_SEND_ERROR,request:e}))}),t.signal.addEventListener(`abort`,()=>{let e=new o.AbortError(`The operation was aborted. Rejecting from abort signal callback while making request.`);p.destroy(e),d(e)}),i&&f(i)?i.pipe(p):i?typeof i==`string`||Buffer.isBuffer(i)?p.end(i):m(i)?p.end(ArrayBuffer.isView(i)?Buffer.from(i.buffer):Buffer.from(i)):(l.logger.error(`Unrecognized body type`,i),d(new c.RestError(`Unrecognized body type`))):p.end()})}getOrCreateAgent(e,t){let i=e.disableKeepAlive;if(t)return i?n.default.globalAgent:(this.cachedHttpAgent||=new n.default.Agent({keepAlive:!0}),this.cachedHttpAgent);{if(i&&!e.tlsSettings)return r.default.globalAgent;let t=e.tlsSettings??d,n=this.cachedHttpsAgents.get(t);return n&&n.options.keepAlive===!i?n:(l.logger.info(`No cached TLS Agent exist, creating a new Agent`),n=new r.default.Agent({keepAlive:!i,...t}),this.cachedHttpsAgents.set(t,n),n)}}};function _(e){let t=(0,s.createHttpHeaders)();for(let n of Object.keys(e.headers)){let r=e.headers[n];Array.isArray(r)?r.length>0&&t.set(n,r[0]):r&&t.set(n,r)}return t}function v(e,t){let n=t.get(`Content-Encoding`);if(n===`gzip`){let t=i.default.createGunzip();return e.pipe(t),t}else if(n===`deflate`){let t=i.default.createInflate();return e.pipe(t),t}return e}function y(e){return new Promise((t,n)=>{let r=[];e.on(`data`,e=>{Buffer.isBuffer(e)?r.push(e):r.push(Buffer.from(e))}),e.on(`end`,()=>{t(Buffer.concat(r).toString(`utf8`))}),e.on(`error`,e=>{e&&e?.name===`AbortError`?n(e):n(new c.RestError(`Error reading response as text: ${e.message}`,{code:c.RestError.PARSE_ERROR}))})})}function b(e){return e?Buffer.isBuffer(e)?e.length:f(e)?null:m(e)?e.byteLength:typeof e==`string`?Buffer.from(e).length:null:0}function x(){return new g}})),Wi=b((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.createDefaultHttpClient=n;let t=Ui();function n(){return(0,t.createNodeHttpClient)()}})),Gi=b((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.logPolicyName=void 0,e.logPolicy=r;let t=Hi(),n=zi();e.logPolicyName=`logPolicy`;function r(r={}){let i=r.logger??t.logger.info,a=new n.Sanitizer({additionalAllowedHeaderNames:r.additionalAllowedHeaderNames,additionalAllowedQueryParameters:r.additionalAllowedQueryParameters});return{name:e.logPolicyName,async sendRequest(e,t){if(!i.enabled)return t(e);i(`Request: ${a.sanitize(e)}`);let n=await t(e);return i(`Response status code: ${n.status}`),i(`Headers: ${a.sanitize(n.headers)}`),n}}}})),Ki=b((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.redirectPolicyName=void 0,e.redirectPolicy=n,e.redirectPolicyName=`redirectPolicy`;let t=[`GET`,`HEAD`];function n(t={}){let{maxRetries:n=20}=t;return{name:e.redirectPolicyName,async sendRequest(e,t){return r(t,await t(e),n)}}}async function r(e,n,i,a=0){let{request:o,status:s,headers:c}=n,l=c.get(`location`);return l&&(s===300||s===301&&t.includes(o.method)||s===302&&t.includes(o.method)||s===303&&o.method===`POST`||s===307)&&a{Object.defineProperty(e,`__esModule`,{value:!0}),e.getHeaderName=i,e.setPlatformSpecificData=a;let t=(yi(),w(Fr)),n=t.__importDefault(T(`node:os`)),r=t.__importDefault(T(`node:process`));function i(){return`User-Agent`}async function a(e){if(r.default&&r.default.versions){let t=`${n.default.type()} ${n.default.release()}; ${n.default.arch()}`,i=r.default.versions;i.bun?e.set(`Bun`,`${i.bun} (${t})`):i.deno?e.set(`Deno`,`${i.deno} (${t})`):i.node&&e.set(`Node`,`${i.node} (${t})`)}}})),Ji=b((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.DEFAULT_RETRY_POLICY_COUNT=e.SDK_VERSION=void 0,e.SDK_VERSION=`0.3.2`,e.DEFAULT_RETRY_POLICY_COUNT=3})),Yi=b((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.getUserAgentHeaderName=i,e.getUserAgentValue=a;let t=qi(),n=Ji();function r(e){let t=[];for(let[n,r]of e){let e=r?`${n}/${r}`:n;t.push(e)}return t.join(` `)}function i(){return(0,t.getHeaderName)()}async function a(e){let i=new Map;i.set(`ts-http-runtime`,n.SDK_VERSION),await(0,t.setPlatformSpecificData)(i);let a=r(i);return e?`${e} ${a}`:a}})),Xi=b((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.userAgentPolicyName=void 0,e.userAgentPolicy=r;let t=Yi(),n=(0,t.getUserAgentHeaderName)();e.userAgentPolicyName=`userAgentPolicy`;function r(r={}){let i=(0,t.getUserAgentValue)(r.userAgentPrefix);return{name:e.userAgentPolicyName,async sendRequest(e,t){return e.headers.has(n)||e.headers.set(n,await i),t(e)}}}})),Zi=b((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.decompressResponsePolicyName=void 0,e.decompressResponsePolicy=t,e.decompressResponsePolicyName=`decompressResponsePolicy`;function t(){return{name:e.decompressResponsePolicyName,async sendRequest(e,t){return e.method!==`HEAD`&&e.headers.set(`Accept-Encoding`,`gzip,deflate`),t(e)}}}})),Qi=b((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.getRandomIntegerInclusive=t;function t(e,t){return e=Math.ceil(e),t=Math.floor(t),Math.floor(Math.random()*(t-e+1))+e}})),$i=b((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.calculateRetryDelay=n;let t=Qi();function n(e,n){let r=n.retryDelayInMs*2**e,i=Math.min(n.maxRetryDelayInMs,r);return{retryAfterInMs:i/2+(0,t.getRandomIntegerInclusive)(0,i/2)}}})),ea=b((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.delay=n,e.parseHeaderValueAsNumber=r;let t=Ei();function n(e,n,r){return new Promise((i,a)=>{let o,s,c=()=>a(new t.AbortError(r?.abortErrorMsg?r?.abortErrorMsg:`The operation was aborted.`)),l=()=>{r?.abortSignal&&s&&r.abortSignal.removeEventListener(`abort`,s)};if(s=()=>(o&&clearTimeout(o),l(),c()),r?.abortSignal&&r.abortSignal.aborted)return c();o=setTimeout(()=>{l(),i(n)},e),r?.abortSignal&&r.abortSignal.addEventListener(`abort`,s)})}function r(e,t){let n=e.headers.get(t);if(!n)return;let r=Number(n);if(!Number.isNaN(r))return r}})),ta=b((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.isThrottlingRetryResponse=a,e.throttlingRetryStrategy=o;let t=ea(),n=`Retry-After`,r=[`retry-after-ms`,`x-ms-retry-after-ms`,n];function i(e){if(e&&[429,503].includes(e.status))try{for(let i of r){let r=(0,t.parseHeaderValueAsNumber)(e,i);if(r===0||r)return r*(i===n?1e3:1)}let i=e.headers.get(n);if(!i)return;let a=Date.parse(i)-Date.now();return Number.isFinite(a)?Math.max(0,a):void 0}catch{return}}function a(e){return Number.isFinite(i(e))}function o(){return{name:`throttlingRetryStrategy`,retry({response:e}){let t=i(e);return Number.isFinite(t)?{retryAfterInMs:t}:{skipStrategy:!0}}}}})),na=b((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.exponentialRetryStrategy=r,e.isExponentialRetryResponse=i,e.isSystemError=a;let t=$i(),n=ta();function r(e={}){let r=e.retryDelayInMs??1e3,o=e.maxRetryDelayInMs??64e3;return{name:`exponentialRetryStrategy`,retry({retryCount:s,response:c,responseError:l}){let u=a(l),d=u&&e.ignoreSystemErrors,f=i(c),p=f&&e.ignoreHttpStatusCodes;return c&&((0,n.isThrottlingRetryResponse)(c)||!f)||p||d?{skipStrategy:!0}:l&&!u&&!f?{errorToThrow:l}:(0,t.calculateRetryDelay)(s,{retryDelayInMs:r,maxRetryDelayInMs:o})}}}function i(e){return!!(e&&e.status!==void 0&&(e.status>=500||e.status===408)&&e.status!==501&&e.status!==505)}function a(e){return e?e.code===`ETIMEDOUT`||e.code===`ESOCKETTIMEDOUT`||e.code===`ECONNREFUSED`||e.code===`ECONNRESET`||e.code===`ENOENT`||e.code===`ENOTFOUND`:!1}})),ra=b((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.retryPolicy=o;let t=ea(),n=Ei(),r=ki(),i=Ji(),a=(0,r.createClientLogger)(`ts-http-runtime retryPolicy`);function o(e,r={maxRetries:i.DEFAULT_RETRY_POLICY_COUNT}){let o=r.logger||a;return{name:`retryPolicy`,async sendRequest(a,s){let c,l,u=-1;retryRequest:for(;;){u+=1,c=void 0,l=void 0;try{o.info(`Retry ${u}: Attempting to send request`,a.requestId),c=await s(a),o.info(`Retry ${u}: Received a response from request`,a.requestId)}catch(e){if(o.error(`Retry ${u}: Received an error from request`,a.requestId),l=e,!e||l.name!==`RestError`)throw e;c=l.response}if(a.abortSignal?.aborted)throw o.error(`Retry ${u}: Request aborted.`),new n.AbortError;if(u>=(r.maxRetries??i.DEFAULT_RETRY_POLICY_COUNT)){if(o.info(`Retry ${u}: Maximum retries reached. Returning the last received response, or throwing the last received error.`),l)throw l;if(c)return c;throw Error(`Maximum retries reached with no response or error to throw`)}o.info(`Retry ${u}: Processing ${e.length} retry strategies.`);strategiesLoop:for(let n of e){let e=n.logger||o;e.info(`Retry ${u}: Processing retry strategy ${n.name}.`);let r=n.retry({retryCount:u,response:c,responseError:l});if(r.skipStrategy){e.info(`Retry ${u}: Skipped.`);continue strategiesLoop}let{errorToThrow:i,retryAfterInMs:s,redirectTo:d}=r;if(i)throw e.error(`Retry ${u}: Retry strategy ${n.name} throws error:`,i),i;if(s||s===0){e.info(`Retry ${u}: Retry strategy ${n.name} retries after ${s}`),await(0,t.delay)(s,void 0,{abortSignal:a.abortSignal});continue retryRequest}if(d){e.info(`Retry ${u}: Retry strategy ${n.name} redirects to ${d}`),a.url=d;continue retryRequest}}if(l)throw o.info(`None of the retry strategies could work with the received error. Throwing it.`),l;if(c)return o.info(`None of the retry strategies could work with the received response. Returning it.`),c}}}}})),ia=b((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.defaultRetryPolicyName=void 0,e.defaultRetryPolicy=a;let t=na(),n=ta(),r=ra(),i=Ji();e.defaultRetryPolicyName=`defaultRetryPolicy`;function a(a={}){return{name:e.defaultRetryPolicyName,sendRequest:(0,r.retryPolicy)([(0,n.throttlingRetryStrategy)(),(0,t.exponentialRetryStrategy)(a)],{maxRetries:a.maxRetries??i.DEFAULT_RETRY_POLICY_COUNT}).sendRequest}}})),aa=b((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.isReactNative=e.isNodeRuntime=e.isNodeLike=e.isBun=e.isDeno=e.isWebWorker=e.isBrowser=void 0,e.isBrowser=typeof window<`u`&&window.document!==void 0,e.isWebWorker=typeof self==`object`&&typeof self?.importScripts==`function`&&(self.constructor?.name===`DedicatedWorkerGlobalScope`||self.constructor?.name===`ServiceWorkerGlobalScope`||self.constructor?.name===`SharedWorkerGlobalScope`),e.isDeno=typeof Deno<`u`&&Deno.version!==void 0&&Deno.version.deno!==void 0,e.isBun=typeof Bun<`u`&&Bun.version!==void 0,e.isNodeLike=globalThis.process!==void 0&&!!globalThis.process.version&&!!globalThis.process.versions?.node,e.isNodeRuntime=e.isNodeLike&&!e.isBun&&!e.isDeno,e.isReactNative=typeof navigator<`u`&&navigator?.product===`ReactNative`})),oa=b((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.formDataPolicyName=void 0,e.formDataPolicy=a;let t=Vi(),n=aa(),r=Ai();e.formDataPolicyName=`formDataPolicy`;function i(e){let t={};for(let[n,r]of e.entries())t[n]??=[],t[n].push(r);return t}function a(){return{name:e.formDataPolicyName,async sendRequest(e,t){if(n.isNodeLike&&typeof FormData<`u`&&e.body instanceof FormData&&(e.formData=i(e.body),e.body=void 0),e.formData){let t=e.headers.get(`Content-Type`);t&&t.indexOf(`application/x-www-form-urlencoded`)!==-1?e.body=o(e.formData):await s(e.formData,e),e.formData=void 0}return t(e)}}}function o(e){let t=new URLSearchParams;for(let[n,r]of Object.entries(e))if(Array.isArray(r))for(let e of r)t.append(n,e.toString());else t.append(n,r.toString());return t.toString()}async function s(e,n){let i=n.headers.get(`Content-Type`);if(i&&!i.startsWith(`multipart/form-data`))return;n.headers.set(`Content-Type`,i??`multipart/form-data`);let a=[];for(let[n,i]of Object.entries(e))for(let e of Array.isArray(i)?i:[i])if(typeof e==`string`)a.push({headers:(0,r.createHttpHeaders)({"Content-Disposition":`form-data; name="${n}"`}),body:(0,t.stringToUint8Array)(e,`utf-8`)});else if(typeof e!=`object`||!e)throw Error(`Unexpected value for key ${n}: ${e}. Value should be serialized to string first.`);else{let t=e.name||`blob`,i=(0,r.createHttpHeaders)();i.set(`Content-Disposition`,`form-data; name="${n}"; filename="${t}"`),i.set(`Content-Type`,e.type||`application/octet-stream`),a.push({headers:i,body:e})}n.multipartBody={parts:a}}})),sa=b(((e,t)=>{var n=1e3,r=n*60,i=r*60,a=i*24,o=a*7,s=a*365.25;t.exports=function(e,t){t||={};var n=typeof e;if(n===`string`&&e.length>0)return c(e);if(n===`number`&&isFinite(e))return t.long?u(e):l(e);throw Error(`val is not a non-empty string or a valid number. val=`+JSON.stringify(e))};function c(e){if(e=String(e),!(e.length>100)){var t=/^(-?(?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(e);if(t){var c=parseFloat(t[1]);switch((t[2]||`ms`).toLowerCase()){case`years`:case`year`:case`yrs`:case`yr`:case`y`:return c*s;case`weeks`:case`week`:case`w`:return c*o;case`days`:case`day`:case`d`:return c*a;case`hours`:case`hour`:case`hrs`:case`hr`:case`h`:return c*i;case`minutes`:case`minute`:case`mins`:case`min`:case`m`:return c*r;case`seconds`:case`second`:case`secs`:case`sec`:case`s`:return c*n;case`milliseconds`:case`millisecond`:case`msecs`:case`msec`:case`ms`:return c;default:return}}}}function l(e){var t=Math.abs(e);return t>=a?Math.round(e/a)+`d`:t>=i?Math.round(e/i)+`h`:t>=r?Math.round(e/r)+`m`:t>=n?Math.round(e/n)+`s`:e+`ms`}function u(e){var t=Math.abs(e);return t>=a?d(e,t,a,`day`):t>=i?d(e,t,i,`hour`):t>=r?d(e,t,r,`minute`):t>=n?d(e,t,n,`second`):e+` ms`}function d(e,t,n,r){var i=t>=n*1.5;return Math.round(e/n)+` `+r+(i?`s`:``)}})),ca=b(((e,t)=>{function n(e){n.debug=n,n.default=n,n.coerce=c,n.disable=o,n.enable=i,n.enabled=s,n.humanize=sa(),n.destroy=l,Object.keys(e).forEach(t=>{n[t]=e[t]}),n.names=[],n.skips=[],n.formatters={};function t(e){let t=0;for(let n=0;n{if(t===`%%`)return`%`;a++;let o=n.formatters[i];if(typeof o==`function`){let n=e[a];t=o.call(r,n),e.splice(a,1),a--}return t}),n.formatArgs.call(r,e),(r.log||n.log).apply(r,e)}return s.namespace=e,s.useColors=n.useColors(),s.color=n.selectColor(e),s.extend=r,s.destroy=n.destroy,Object.defineProperty(s,`enabled`,{enumerable:!0,configurable:!1,get:()=>i===null?(a!==n.namespaces&&(a=n.namespaces,o=n.enabled(e)),o):i,set:e=>{i=e}}),typeof n.init==`function`&&n.init(s),s}function r(e,t){let r=n(this.namespace+(t===void 0?`:`:t)+e);return r.log=this.log,r}function i(e){n.save(e),n.namespaces=e,n.names=[],n.skips=[];let t=(typeof e==`string`?e:``).trim().replace(/\s+/g,`,`).split(`,`).filter(Boolean);for(let e of t)e[0]===`-`?n.skips.push(e.slice(1)):n.names.push(e)}function a(e,t){let n=0,r=0,i=-1,a=0;for(;n`-`+e)].join(`,`);return n.enable(``),e}function s(e){for(let t of n.skips)if(a(e,t))return!1;for(let t of n.names)if(a(e,t))return!0;return!1}function c(e){return e instanceof Error?e.stack||e.message:e}function l(){console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.")}return n.enable(n.load()),n}t.exports=n})),la=b(((e,t)=>{e.formatArgs=r,e.save=i,e.load=a,e.useColors=n,e.storage=o(),e.destroy=(()=>{let e=!1;return()=>{e||(e=!0,console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`."))}})(),e.colors=`#0000CC.#0000FF.#0033CC.#0033FF.#0066CC.#0066FF.#0099CC.#0099FF.#00CC00.#00CC33.#00CC66.#00CC99.#00CCCC.#00CCFF.#3300CC.#3300FF.#3333CC.#3333FF.#3366CC.#3366FF.#3399CC.#3399FF.#33CC00.#33CC33.#33CC66.#33CC99.#33CCCC.#33CCFF.#6600CC.#6600FF.#6633CC.#6633FF.#66CC00.#66CC33.#9900CC.#9900FF.#9933CC.#9933FF.#99CC00.#99CC33.#CC0000.#CC0033.#CC0066.#CC0099.#CC00CC.#CC00FF.#CC3300.#CC3333.#CC3366.#CC3399.#CC33CC.#CC33FF.#CC6600.#CC6633.#CC9900.#CC9933.#CCCC00.#CCCC33.#FF0000.#FF0033.#FF0066.#FF0099.#FF00CC.#FF00FF.#FF3300.#FF3333.#FF3366.#FF3399.#FF33CC.#FF33FF.#FF6600.#FF6633.#FF9900.#FF9933.#FFCC00.#FFCC33`.split(`.`);function n(){if(typeof window<`u`&&window.process&&(window.process.type===`renderer`||window.process.__nwjs))return!0;if(typeof navigator<`u`&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/(edge|trident)\/(\d+)/))return!1;let e;return typeof document<`u`&&document.documentElement&&document.documentElement.style&&document.documentElement.style.WebkitAppearance||typeof window<`u`&&window.console&&(window.console.firebug||window.console.exception&&window.console.table)||typeof navigator<`u`&&navigator.userAgent&&(e=navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/))&&parseInt(e[1],10)>=31||typeof navigator<`u`&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/)}function r(e){if(e[0]=(this.useColors?`%c`:``)+this.namespace+(this.useColors?` %c`:` `)+e[0]+(this.useColors?`%c `:` `)+`+`+t.exports.humanize(this.diff),!this.useColors)return;let n=`color: `+this.color;e.splice(1,0,n,`color: inherit`);let r=0,i=0;e[0].replace(/%[a-zA-Z%]/g,e=>{e!==`%%`&&(r++,e===`%c`&&(i=r))}),e.splice(i,0,n)}e.log=console.debug||console.log||(()=>{});function i(t){try{t?e.storage.setItem(`debug`,t):e.storage.removeItem(`debug`)}catch{}}function a(){let t;try{t=e.storage.getItem(`debug`)||e.storage.getItem(`DEBUG`)}catch{}return!t&&typeof process<`u`&&`env`in process&&(t=process.env.DEBUG),t}function o(){try{return localStorage}catch{}}t.exports=ca()(e);let{formatters:s}=t.exports;s.j=function(e){try{return JSON.stringify(e)}catch(e){return`[UnexpectedJSONParseError]: `+e.message}}})),ua=b(((e,t)=>{t.exports=(e,t=process.argv)=>{let n=e.startsWith(`-`)?``:e.length===1?`-`:`--`,r=t.indexOf(n+e),i=t.indexOf(`--`);return r!==-1&&(i===-1||r{let n=T(`os`),r=T(`tty`),i=ua(),{env:a}=process,o;i(`no-color`)||i(`no-colors`)||i(`color=false`)||i(`color=never`)?o=0:(i(`color`)||i(`colors`)||i(`color=true`)||i(`color=always`))&&(o=1),`FORCE_COLOR`in a&&(o=a.FORCE_COLOR===`true`?1:a.FORCE_COLOR===`false`?0:a.FORCE_COLOR.length===0?1:Math.min(parseInt(a.FORCE_COLOR,10),3));function s(e){return e===0?!1:{level:e,hasBasic:!0,has256:e>=2,has16m:e>=3}}function c(e,t){if(o===0)return 0;if(i(`color=16m`)||i(`color=full`)||i(`color=truecolor`))return 3;if(i(`color=256`))return 2;if(e&&!t&&o===void 0)return 0;let r=o||0;if(a.TERM===`dumb`)return r;if(process.platform===`win32`){let e=n.release().split(`.`);return Number(e[0])>=10&&Number(e[2])>=10586?Number(e[2])>=14931?3:2:1}if(`CI`in a)return[`TRAVIS`,`CIRCLECI`,`APPVEYOR`,`GITLAB_CI`,`GITHUB_ACTIONS`,`BUILDKITE`].some(e=>e in a)||a.CI_NAME===`codeship`?1:r;if(`TEAMCITY_VERSION`in a)return/^(9\.(0*[1-9]\d*)\.|\d{2,}\.)/.test(a.TEAMCITY_VERSION)?1:0;if(a.COLORTERM===`truecolor`)return 3;if(`TERM_PROGRAM`in a){let e=parseInt((a.TERM_PROGRAM_VERSION||``).split(`.`)[0],10);switch(a.TERM_PROGRAM){case`iTerm.app`:return e>=3?3:2;case`Apple_Terminal`:return 2}}return/-256(color)?$/i.test(a.TERM)?2:/^screen|^xterm|^vt100|^vt220|^rxvt|color|ansi|cygwin|linux/i.test(a.TERM)||`COLORTERM`in a?1:r}function l(e){return s(c(e,e&&e.isTTY))}t.exports={supportsColor:l,stdout:s(c(!0,r.isatty(1))),stderr:s(c(!0,r.isatty(2)))}})),fa=b(((e,t)=>{let n=T(`tty`),r=T(`util`);e.init=u,e.log=s,e.formatArgs=a,e.save=c,e.load=l,e.useColors=i,e.destroy=r.deprecate(()=>{},"Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`."),e.colors=[6,2,3,4,5,1];try{let t=da();t&&(t.stderr||t).level>=2&&(e.colors=[20,21,26,27,32,33,38,39,40,41,42,43,44,45,56,57,62,63,68,69,74,75,76,77,78,79,80,81,92,93,98,99,112,113,128,129,134,135,148,149,160,161,162,163,164,165,166,167,168,169,170,171,172,173,178,179,184,185,196,197,198,199,200,201,202,203,204,205,206,207,208,209,214,215,220,221])}catch{}e.inspectOpts=Object.keys(process.env).filter(e=>/^debug_/i.test(e)).reduce((e,t)=>{let n=t.substring(6).toLowerCase().replace(/_([a-z])/g,(e,t)=>t.toUpperCase()),r=process.env[t];return r=/^(yes|on|true|enabled)$/i.test(r)?!0:/^(no|off|false|disabled)$/i.test(r)?!1:r===`null`?null:Number(r),e[n]=r,e},{});function i(){return`colors`in e.inspectOpts?!!e.inspectOpts.colors:n.isatty(process.stderr.fd)}function a(e){let{namespace:n,useColors:r}=this;if(r){let r=this.color,i=`\x1B[3`+(r<8?r:`8;5;`+r),a=` ${i};1m${n} \u001B[0m`;e[0]=a+e[0].split(` +`).join(` +`+a),e.push(i+`m+`+t.exports.humanize(this.diff)+`\x1B[0m`)}else e[0]=o()+n+` `+e[0]}function o(){return e.inspectOpts.hideDate?``:new Date().toISOString()+` `}function s(...t){return process.stderr.write(r.formatWithOptions(e.inspectOpts,...t)+` +`)}function c(e){e?process.env.DEBUG=e:delete process.env.DEBUG}function l(){return process.env.DEBUG}function u(t){t.inspectOpts={};let n=Object.keys(e.inspectOpts);for(let r=0;re.trim()).join(` `)},d.O=function(e){return this.inspectOpts.colors=this.useColors,r.inspect(e,this.inspectOpts)}})),pa=b(((e,t)=>{typeof process>`u`||process.type===`renderer`||process.browser===!0||process.__nwjs?t.exports=la():t.exports=fa()})),ma=b((e=>{var t=e&&e.__createBinding||(Object.create?(function(e,t,n,r){r===void 0&&(r=n);var i=Object.getOwnPropertyDescriptor(t,n);(!i||(`get`in i?!t.__esModule:i.writable||i.configurable))&&(i={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,r,i)}):(function(e,t,n,r){r===void 0&&(r=n),e[r]=t[n]})),n=e&&e.__setModuleDefault||(Object.create?(function(e,t){Object.defineProperty(e,`default`,{enumerable:!0,value:t})}):function(e,t){e.default=t}),r=e&&e.__importStar||function(e){if(e&&e.__esModule)return e;var r={};if(e!=null)for(var i in e)i!==`default`&&Object.prototype.hasOwnProperty.call(e,i)&&t(r,e,i);return n(r,e),r};Object.defineProperty(e,`__esModule`,{value:!0}),e.req=e.json=e.toBuffer=void 0;let i=r(T(`http`)),a=r(T(`https`));async function o(e){let t=0,n=[];for await(let r of e)t+=r.length,n.push(r);return Buffer.concat(n,t)}e.toBuffer=o;async function s(e){let t=(await o(e)).toString(`utf8`);try{return JSON.parse(t)}catch(e){let n=e;throw n.message+=` (input: ${t})`,n}}e.json=s;function c(e,t={}){let n=((typeof e==`string`?e:e.href).startsWith(`https:`)?a:i).request(e,t),r=new Promise((e,t)=>{n.once(`response`,e).once(`error`,t).end()});return n.then=r.then.bind(r),n}e.req=c})),ha=b((e=>{var t=e&&e.__createBinding||(Object.create?(function(e,t,n,r){r===void 0&&(r=n);var i=Object.getOwnPropertyDescriptor(t,n);(!i||(`get`in i?!t.__esModule:i.writable||i.configurable))&&(i={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,r,i)}):(function(e,t,n,r){r===void 0&&(r=n),e[r]=t[n]})),n=e&&e.__setModuleDefault||(Object.create?(function(e,t){Object.defineProperty(e,`default`,{enumerable:!0,value:t})}):function(e,t){e.default=t}),r=e&&e.__importStar||function(e){if(e&&e.__esModule)return e;var r={};if(e!=null)for(var i in e)i!==`default`&&Object.prototype.hasOwnProperty.call(e,i)&&t(r,e,i);return n(r,e),r},i=e&&e.__exportStar||function(e,n){for(var r in e)r!==`default`&&!Object.prototype.hasOwnProperty.call(n,r)&&t(n,e,r)};Object.defineProperty(e,`__esModule`,{value:!0}),e.Agent=void 0;let a=r(T(`net`)),o=r(T(`http`)),s=T(`https`);i(ma(),e);let c=Symbol(`AgentBaseInternalState`);e.Agent=class extends o.Agent{constructor(e){super(e),this[c]={}}isSecureEndpoint(e){if(e){if(typeof e.secureEndpoint==`boolean`)return e.secureEndpoint;if(typeof e.protocol==`string`)return e.protocol===`https:`}let{stack:t}=Error();return typeof t==`string`?t.split(` +`).some(e=>e.indexOf(`(https.js:`)!==-1||e.indexOf(`node:https:`)!==-1):!1}incrementSockets(e){if(this.maxSockets===1/0&&this.maxTotalSockets===1/0)return null;this.sockets[e]||(this.sockets[e]=[]);let t=new a.Socket({writable:!1});return this.sockets[e].push(t),this.totalSocketCount++,t}decrementSockets(e,t){if(!this.sockets[e]||t===null)return;let n=this.sockets[e],r=n.indexOf(t);r!==-1&&(n.splice(r,1),this.totalSocketCount--,n.length===0&&delete this.sockets[e])}getName(e){return this.isSecureEndpoint(e)?s.Agent.prototype.getName.call(this,e):super.getName(e)}createSocket(e,t,n){let r={...t,secureEndpoint:this.isSecureEndpoint(t)},i=this.getName(r),a=this.incrementSockets(i);Promise.resolve().then(()=>this.connect(e,r)).then(s=>{if(this.decrementSockets(i,a),s instanceof o.Agent)try{return s.addRequest(e,r)}catch(e){return n(e)}this[c].currentSocket=s,super.createSocket(e,t,n)},e=>{this.decrementSockets(i,a),n(e)})}createConnection(){let e=this[c].currentSocket;if(this[c].currentSocket=void 0,!e)throw Error("No socket was returned in the `connect()` function");return e}get defaultPort(){return this[c].defaultPort??(this.protocol===`https:`?443:80)}set defaultPort(e){this[c]&&(this[c].defaultPort=e)}get protocol(){return this[c].protocol??(this.isSecureEndpoint()?`https:`:`http:`)}set protocol(e){this[c]&&(this[c].protocol=e)}}})),ga=b((e=>{var t=e&&e.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(e,`__esModule`,{value:!0}),e.parseProxyResponse=void 0;let n=(0,t(pa()).default)(`https-proxy-agent:parse-proxy-response`);function r(e){return new Promise((t,r)=>{let i=0,a=[];function o(){let t=e.read();t?u(t):e.once(`readable`,o)}function s(){e.removeListener(`end`,c),e.removeListener(`error`,l),e.removeListener(`readable`,o)}function c(){s(),n(`onend`),r(Error(`Proxy connection ended before receiving CONNECT response`))}function l(e){s(),n(`onerror %o`,e),r(e)}function u(c){a.push(c),i+=c.length;let l=Buffer.concat(a,i),u=l.indexOf(`\r +\r +`);if(u===-1){n(`have not received end of HTTP headers yet...`),o();return}let d=l.slice(0,u).toString(`ascii`).split(`\r +`),f=d.shift();if(!f)return e.destroy(),r(Error(`No header received from proxy CONNECT response`));let p=f.split(` `),m=+p[1],h=p.slice(2).join(` `),g={};for(let t of d){if(!t)continue;let n=t.indexOf(`:`);if(n===-1)return e.destroy(),r(Error(`Invalid header from proxy CONNECT response: "${t}"`));let i=t.slice(0,n).toLowerCase(),a=t.slice(n+1).trimStart(),o=g[i];typeof o==`string`?g[i]=[o,a]:Array.isArray(o)?o.push(a):g[i]=a}n(`got proxy server response: %o %o`,f,g),s(),t({connect:{statusCode:m,statusText:h,headers:g},buffered:l})}e.on(`error`,l),e.on(`end`,c),o()})}e.parseProxyResponse=r})),_a=b((e=>{var t=e&&e.__createBinding||(Object.create?(function(e,t,n,r){r===void 0&&(r=n);var i=Object.getOwnPropertyDescriptor(t,n);(!i||(`get`in i?!t.__esModule:i.writable||i.configurable))&&(i={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,r,i)}):(function(e,t,n,r){r===void 0&&(r=n),e[r]=t[n]})),n=e&&e.__setModuleDefault||(Object.create?(function(e,t){Object.defineProperty(e,`default`,{enumerable:!0,value:t})}):function(e,t){e.default=t}),r=e&&e.__importStar||function(e){if(e&&e.__esModule)return e;var r={};if(e!=null)for(var i in e)i!==`default`&&Object.prototype.hasOwnProperty.call(e,i)&&t(r,e,i);return n(r,e),r},i=e&&e.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(e,`__esModule`,{value:!0}),e.HttpsProxyAgent=void 0;let a=r(T(`net`)),o=r(T(`tls`)),s=i(T(`assert`)),c=i(pa()),l=ha(),u=T(`url`),d=ga(),f=(0,c.default)(`https-proxy-agent`),p=e=>e.servername===void 0&&e.host&&!a.isIP(e.host)?{...e,servername:e.host}:e;var m=class extends l.Agent{constructor(e,t){super(t),this.options={path:void 0},this.proxy=typeof e==`string`?new u.URL(e):e,this.proxyHeaders=t?.headers??{},f(`Creating new HttpsProxyAgent instance: %o`,this.proxy.href);let n=(this.proxy.hostname||this.proxy.host).replace(/^\[|\]$/g,``),r=this.proxy.port?parseInt(this.proxy.port,10):this.proxy.protocol===`https:`?443:80;this.connectOpts={ALPNProtocols:[`http/1.1`],...t?g(t,`headers`):null,host:n,port:r}}async connect(e,t){let{proxy:n}=this;if(!t.host)throw TypeError(`No "host" provided`);let r;n.protocol===`https:`?(f("Creating `tls.Socket`: %o",this.connectOpts),r=o.connect(p(this.connectOpts))):(f("Creating `net.Socket`: %o",this.connectOpts),r=a.connect(this.connectOpts));let i=typeof this.proxyHeaders==`function`?this.proxyHeaders():{...this.proxyHeaders},c=a.isIPv6(t.host)?`[${t.host}]`:t.host,l=`CONNECT ${c}:${t.port} HTTP/1.1\r\n`;if(n.username||n.password){let e=`${decodeURIComponent(n.username)}:${decodeURIComponent(n.password)}`;i[`Proxy-Authorization`]=`Basic ${Buffer.from(e).toString(`base64`)}`}i.Host=`${c}:${t.port}`,i[`Proxy-Connection`]||=this.keepAlive?`Keep-Alive`:`close`;for(let e of Object.keys(i))l+=`${e}: ${i[e]}\r\n`;let u=(0,d.parseProxyResponse)(r);r.write(`${l}\r\n`);let{connect:m,buffered:_}=await u;if(e.emit(`proxyConnect`,m),this.emit(`proxyConnect`,m,e),m.statusCode===200)return e.once(`socket`,h),t.secureEndpoint?(f(`Upgrading socket connection to TLS`),o.connect({...g(p(t),`host`,`path`,`port`),socket:r})):r;r.destroy();let v=new a.Socket({writable:!1});return v.readable=!0,e.once(`socket`,e=>{f(`Replaying proxy buffer for failed request`),(0,s.default)(e.listenerCount(`data`)>0),e.push(_),e.push(null)}),v}};m.protocols=[`http`,`https`],e.HttpsProxyAgent=m;function h(e){e.resume()}function g(e,...t){let n={},r;for(r in e)t.includes(r)||(n[r]=e[r]);return n}})),va=b((e=>{var t=e&&e.__createBinding||(Object.create?(function(e,t,n,r){r===void 0&&(r=n);var i=Object.getOwnPropertyDescriptor(t,n);(!i||(`get`in i?!t.__esModule:i.writable||i.configurable))&&(i={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,r,i)}):(function(e,t,n,r){r===void 0&&(r=n),e[r]=t[n]})),n=e&&e.__setModuleDefault||(Object.create?(function(e,t){Object.defineProperty(e,`default`,{enumerable:!0,value:t})}):function(e,t){e.default=t}),r=e&&e.__importStar||function(e){if(e&&e.__esModule)return e;var r={};if(e!=null)for(var i in e)i!==`default`&&Object.prototype.hasOwnProperty.call(e,i)&&t(r,e,i);return n(r,e),r},i=e&&e.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(e,`__esModule`,{value:!0}),e.HttpProxyAgent=void 0;let a=r(T(`net`)),o=r(T(`tls`)),s=i(pa()),c=T(`events`),l=ha(),u=T(`url`),d=(0,s.default)(`http-proxy-agent`);var f=class extends l.Agent{constructor(e,t){super(t),this.proxy=typeof e==`string`?new u.URL(e):e,this.proxyHeaders=t?.headers??{},d(`Creating new HttpProxyAgent instance: %o`,this.proxy.href);let n=(this.proxy.hostname||this.proxy.host).replace(/^\[|\]$/g,``),r=this.proxy.port?parseInt(this.proxy.port,10):this.proxy.protocol===`https:`?443:80;this.connectOpts={...t?p(t,`headers`):null,host:n,port:r}}addRequest(e,t){e._header=null,this.setRequestProps(e,t),super.addRequest(e,t)}setRequestProps(e,t){let{proxy:n}=this,r=`${t.secureEndpoint?`https:`:`http:`}//${e.getHeader(`host`)||`localhost`}`,i=new u.URL(e.path,r);t.port!==80&&(i.port=String(t.port)),e.path=String(i);let a=typeof this.proxyHeaders==`function`?this.proxyHeaders():{...this.proxyHeaders};if(n.username||n.password){let e=`${decodeURIComponent(n.username)}:${decodeURIComponent(n.password)}`;a[`Proxy-Authorization`]=`Basic ${Buffer.from(e).toString(`base64`)}`}a[`Proxy-Connection`]||=this.keepAlive?`Keep-Alive`:`close`;for(let t of Object.keys(a)){let n=a[t];n&&e.setHeader(t,n)}}async connect(e,t){e._header=null,e.path.includes(`://`)||this.setRequestProps(e,t);let n,r;d(`Regenerating stored HTTP header string for request`),e._implicitHeader(),e.outputData&&e.outputData.length>0&&(d(`Patching connection write() output buffer with updated header`),n=e.outputData[0].data,r=n.indexOf(`\r +\r +`)+4,e.outputData[0].data=e._header+n.substring(r),d(`Output buffer: %o`,e.outputData[0].data));let i;return this.proxy.protocol===`https:`?(d("Creating `tls.Socket`: %o",this.connectOpts),i=o.connect(this.connectOpts)):(d("Creating `net.Socket`: %o",this.connectOpts),i=a.connect(this.connectOpts)),await(0,c.once)(i,`connect`),i}};f.protocols=[`http`,`https`],e.HttpProxyAgent=f;function p(e,...t){let n={},r;for(r in e)t.includes(r)||(n[r]=e[r]);return n}})),ya=b((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.globalNoProxyList=e.proxyPolicyName=void 0,e.loadNoProxy=l,e.getDefaultProxySettings=u,e.proxyPolicy=m;let t=_a(),n=va(),r=Hi();e.proxyPolicyName=`proxyPolicy`,e.globalNoProxyList=[];let i=!1,a=new Map;function o(e){if(process.env[e])return process.env[e];if(process.env[e.toLowerCase()])return process.env[e.toLowerCase()]}function s(){if(!process)return;let e=o(`HTTPS_PROXY`),t=o(`ALL_PROXY`),n=o(`HTTP_PROXY`);return e||t||n}function c(e,t,n){if(t.length===0)return!1;let r=new URL(e).hostname;if(n?.has(r))return n.get(r);let i=!1;for(let e of t)e[0]===`.`?(r.endsWith(e)||r.length===e.length-1&&r===e.slice(1))&&(i=!0):r===e&&(i=!0);return n?.set(r,i),i}function l(){let e=o(`NO_PROXY`);return i=!0,e?e.split(`,`).map(e=>e.trim()).filter(e=>e.length):[]}function u(e){if(!e&&(e=s(),!e))return;let t=new URL(e);return{host:(t.protocol?t.protocol+`//`:``)+t.hostname,port:Number.parseInt(t.port||`80`),username:t.username,password:t.password}}function d(){let e=s();return e?new URL(e):void 0}function f(e){let t;try{t=new URL(e.host)}catch{throw Error(`Expecting a valid host string in proxy settings, but found "${e.host}".`)}return t.port=String(e.port),e.username&&(t.username=e.username),e.password&&(t.password=e.password),t}function p(e,i,a){if(e.agent)return;let o=new URL(e.url).protocol!==`https:`;e.tlsSettings&&r.logger.warning(`TLS settings are not supported in combination with custom Proxy, certificates provided to the client will be ignored.`);let s=e.headers.toJSON();o?(i.httpProxyAgent||=new n.HttpProxyAgent(a,{headers:s}),e.agent=i.httpProxyAgent):(i.httpsProxyAgent||=new t.HttpsProxyAgent(a,{headers:s}),e.agent=i.httpsProxyAgent)}function m(t,n){i||e.globalNoProxyList.push(...l());let r=t?f(t):d(),o={};return{name:e.proxyPolicyName,async sendRequest(t,i){return!t.proxySettings&&r&&!c(t.url,n?.customNoProxyList??e.globalNoProxyList,n?.customNoProxyList?void 0:a)?p(t,o,r):t.proxySettings&&p(t,o,f(t.proxySettings)),i(t)}}}})),ba=b((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.agentPolicyName=void 0,e.agentPolicy=t,e.agentPolicyName=`agentPolicy`;function t(t){return{name:e.agentPolicyName,sendRequest:async(e,n)=>(e.agent||=t,n(e))}}})),xa=b((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.tlsPolicyName=void 0,e.tlsPolicy=t,e.tlsPolicyName=`tlsPolicy`;function t(t){return{name:e.tlsPolicyName,sendRequest:async(e,n)=>(e.tlsSettings||=t,n(e))}}})),Sa=b((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.isNodeReadableStream=t,e.isWebReadableStream=n,e.isBinaryBody=r,e.isReadableStream=i,e.isBlob=a;function t(e){return!!(e&&typeof e.pipe==`function`)}function n(e){return!!(e&&typeof e.getReader==`function`&&typeof e.tee==`function`)}function r(e){return e!==void 0&&(e instanceof Uint8Array||i(e)||typeof e==`function`||e instanceof Blob)}function i(e){return t(e)||n(e)}function a(e){return typeof e.stream==`function`}})),Ca=b((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.concat=s;let t=T(`stream`),n=Sa();async function*r(){let e=this.getReader();try{for(;;){let{done:t,value:n}=await e.read();if(t)return;yield n}}finally{e.releaseLock()}}function i(e){e[Symbol.asyncIterator]||(e[Symbol.asyncIterator]=r.bind(e)),e.values||=r.bind(e)}function a(e){return e instanceof ReadableStream?(i(e),t.Readable.fromWeb(e)):e}function o(e){return e instanceof Uint8Array?t.Readable.from(Buffer.from(e)):(0,n.isBlob)(e)?a(e.stream()):a(e)}async function s(e){return function(){let n=e.map(e=>typeof e==`function`?e():e).map(o);return t.Readable.from((async function*(){for(let e of n)for await(let t of e)yield t})())}}})),wa=b((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.multipartPolicyName=void 0,e.multipartPolicy=f;let t=Vi(),n=Sa(),r=Ni(),i=Ca();function a(){return`----AzSDKFormBoundary${(0,r.randomUUID)()}`}function o(e){let t=``;for(let[n,r]of e)t+=`${n}: ${r}\r\n`;return t}function s(e){if(e instanceof Uint8Array)return e.byteLength;if((0,n.isBlob)(e))return e.size===-1?void 0:e.size}function c(e){let t=0;for(let n of e){let e=s(n);if(e===void 0)return;t+=e}return t}async function l(e,n,r){let a=[(0,t.stringToUint8Array)(`--${r}`,`utf-8`),...n.flatMap(e=>[(0,t.stringToUint8Array)(`\r +`,`utf-8`),(0,t.stringToUint8Array)(o(e.headers),`utf-8`),(0,t.stringToUint8Array)(`\r +`,`utf-8`),e.body,(0,t.stringToUint8Array)(`\r\n--${r}`,`utf-8`)]),(0,t.stringToUint8Array)(`--\r +\r +`,`utf-8`)],s=c(a);s&&e.headers.set(`Content-Length`,s),e.body=await(0,i.concat)(a)}e.multipartPolicyName=`multipartPolicy`;let u=new Set(`abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789'()+,-./:=?`);function d(e){if(e.length>70)throw Error(`Multipart boundary "${e}" exceeds maximum length of 70 characters`);if(Array.from(e).some(e=>!u.has(e)))throw Error(`Multipart boundary "${e}" contains invalid characters`)}function f(){return{name:e.multipartPolicyName,async sendRequest(e,t){if(!e.multipartBody)return t(e);if(e.body)throw Error(`multipartBody and regular body cannot be set at the same time`);let n=e.multipartBody.boundary,r=e.headers.get(`Content-Type`)??`multipart/mixed`,i=r.match(/^(multipart\/[^ ;]+)(?:; *boundary=(.+))?$/);if(!i)throw Error(`Got multipart request body, but content-type header was not multipart: ${r}`);let[,o,s]=i;if(s&&n&&s!==n)throw Error(`Multipart boundary was specified as ${s} in the header, but got ${n} in the request body`);return n??=s,n?d(n):n=a(),e.headers.set(`Content-Type`,`${o}; boundary=${n}`),await l(e,e.multipartBody.parts,n),e.multipartBody=void 0,t(e)}}}})),Ta=b((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.createPipelineFromOptions=p;let t=Gi(),n=Fi(),r=Ki(),i=Xi(),a=Zi(),o=ia(),s=oa(),c=aa(),l=ya(),u=ba(),d=xa(),f=wa();function p(e){let p=(0,n.createEmptyPipeline)();return c.isNodeLike&&(e.agent&&p.addPolicy((0,u.agentPolicy)(e.agent)),e.tlsOptions&&p.addPolicy((0,d.tlsPolicy)(e.tlsOptions)),p.addPolicy((0,l.proxyPolicy)(e.proxyOptions)),p.addPolicy((0,a.decompressResponsePolicy)())),p.addPolicy((0,s.formDataPolicy)(),{beforePolicies:[f.multipartPolicyName]}),p.addPolicy((0,i.userAgentPolicy)(e.userAgentOptions)),p.addPolicy((0,f.multipartPolicy)(),{afterPhase:`Deserialize`}),p.addPolicy((0,o.defaultRetryPolicy)(e.retryOptions),{phase:`Retry`}),c.isNodeLike&&p.addPolicy((0,r.redirectPolicy)(e.redirectOptions),{afterPhase:`Retry`}),p.addPolicy((0,t.logPolicy)(e.loggingOptions),{afterPhase:`Sign`}),p}})),Ea=b((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.apiVersionPolicyName=void 0,e.apiVersionPolicy=t,e.apiVersionPolicyName=`ApiVersionPolicy`;function t(t){return{name:e.apiVersionPolicyName,sendRequest:(e,n)=>{let r=new URL(e.url);return!r.searchParams.get(`api-version`)&&t.apiVersion&&(e.url=`${e.url}${Array.from(r.searchParams.keys()).length>0?`&`:`?`}api-version=${t.apiVersion}`),n(e)}}}})),Da=b((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.isOAuth2TokenCredential=t,e.isBearerTokenCredential=n,e.isBasicCredential=r,e.isApiKeyCredential=i;function t(e){return`getOAuth2Token`in e}function n(e){return`getBearerToken`in e}function r(e){return`username`in e&&`password`in e}function i(e){return`key`in e}})),Oa=b((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.ensureSecureConnection=a;let t=Hi(),n=!1;function r(e,t){if(t.allowInsecureConnection&&e.allowInsecureConnection){let t=new URL(e.url);if(t.hostname===`localhost`||t.hostname===`127.0.0.1`)return!0}return!1}function i(){let e=`Sending token over insecure transport. Assume any token issued is compromised.`;t.logger.warning(e),typeof process?.emitWarning==`function`&&!n&&(n=!0,process.emitWarning(e))}function a(e,t){if(!e.url.toLowerCase().startsWith(`https://`))if(r(e,t))i();else throw Error(`Authentication is not permitted for non-TLS protected (non-https) URLs when allowInsecureConnection is false.`)}})),ka=b((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.apiKeyAuthenticationPolicyName=void 0,e.apiKeyAuthenticationPolicy=n;let t=Oa();e.apiKeyAuthenticationPolicyName=`apiKeyAuthenticationPolicy`;function n(n){return{name:e.apiKeyAuthenticationPolicyName,async sendRequest(e,r){(0,t.ensureSecureConnection)(e,n);let i=(e.authSchemes??n.authSchemes)?.find(e=>e.kind===`apiKey`);if(!i)return r(e);if(i.apiKeyLocation!==`header`)throw Error(`Unsupported API key location: ${i.apiKeyLocation}`);return e.headers.set(i.name,n.credential.key),r(e)}}}})),Aa=b((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.basicAuthenticationPolicyName=void 0,e.basicAuthenticationPolicy=r;let t=Vi(),n=Oa();e.basicAuthenticationPolicyName=`bearerAuthenticationPolicy`;function r(r){return{name:e.basicAuthenticationPolicyName,async sendRequest(e,i){if((0,n.ensureSecureConnection)(e,r),!(e.authSchemes??r.authSchemes)?.find(e=>e.kind===`http`&&e.scheme===`basic`))return i(e);let{username:a,password:o}=r.credential,s=(0,t.uint8ArrayToString)((0,t.stringToUint8Array)(`${a}:${o}`,`utf-8`),`base64`);return e.headers.set(`Authorization`,`Basic ${s}`),i(e)}}}})),ja=b((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.bearerAuthenticationPolicyName=void 0,e.bearerAuthenticationPolicy=n;let t=Oa();e.bearerAuthenticationPolicyName=`bearerAuthenticationPolicy`;function n(n){return{name:e.bearerAuthenticationPolicyName,async sendRequest(e,r){if((0,t.ensureSecureConnection)(e,n),!(e.authSchemes??n.authSchemes)?.find(e=>e.kind===`http`&&e.scheme===`bearer`))return r(e);let i=await n.credential.getBearerToken({abortSignal:e.abortSignal});return e.headers.set(`Authorization`,`Bearer ${i}`),r(e)}}}})),Ma=b((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.oauth2AuthenticationPolicyName=void 0,e.oauth2AuthenticationPolicy=n;let t=Oa();e.oauth2AuthenticationPolicyName=`oauth2AuthenticationPolicy`;function n(n){return{name:e.oauth2AuthenticationPolicyName,async sendRequest(e,r){(0,t.ensureSecureConnection)(e,n);let i=(e.authSchemes??n.authSchemes)?.find(e=>e.kind===`oauth2`);if(!i)return r(e);let a=await n.credential.getOAuth2Token(i.flows,{abortSignal:e.abortSignal});return e.headers.set(`Authorization`,`Bearer ${a}`),r(e)}}}})),Na=b((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.createDefaultPipeline=u,e.getCachedDefaultHttpsClient=d;let t=Wi(),n=Ta(),r=Ea(),i=Da(),a=ka(),o=Aa(),s=ja(),c=Ma(),l;function u(e={}){let t=(0,n.createPipelineFromOptions)(e);t.addPolicy((0,r.apiVersionPolicy)(e));let{credential:l,authSchemes:u,allowInsecureConnection:d}=e;return l&&((0,i.isApiKeyCredential)(l)?t.addPolicy((0,a.apiKeyAuthenticationPolicy)({authSchemes:u,credential:l,allowInsecureConnection:d})):(0,i.isBasicCredential)(l)?t.addPolicy((0,o.basicAuthenticationPolicy)({authSchemes:u,credential:l,allowInsecureConnection:d})):(0,i.isBearerTokenCredential)(l)?t.addPolicy((0,s.bearerAuthenticationPolicy)({authSchemes:u,credential:l,allowInsecureConnection:d})):(0,i.isOAuth2TokenCredential)(l)&&t.addPolicy((0,c.oauth2AuthenticationPolicy)({authSchemes:u,credential:l,allowInsecureConnection:d}))),t}function d(){return l||=(0,t.createDefaultHttpClient)(),l}})),Pa=b((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.buildBodyPart=u,e.buildMultipartBody=d;let t=Bi(),n=Ai(),r=Vi(),i=Sa();function a(e,t){if(e.headers){let n=Object.keys(e.headers).find(e=>e.toLowerCase()===t.toLowerCase());if(n)return e.headers[n]}}function o(e){let t=a(e,`content-type`);if(t)return t;if(e.contentType===null)return;if(e.contentType)return e.contentType;let{body:n}=e;if(n!=null)return typeof n==`string`||typeof n==`number`||typeof n==`boolean`?`text/plain; charset=UTF-8`:n instanceof Blob?n.type||`application/octet-stream`:(0,i.isBinaryBody)(n)?`application/octet-stream`:`application/json`}function s(e){return JSON.stringify(e)}function c(e){let t=a(e,`content-disposition`);if(t)return t;if(e.dispositionType===void 0&&e.name===void 0&&e.filename===void 0)return;let n=e.dispositionType??`form-data`;e.name&&(n+=`; name=${s(e.name)}`);let r;if(e.filename)r=e.filename;else if(typeof File<`u`&&e.body instanceof File){let t=e.body.name;t!==``&&(r=t)}return r&&(n+=`; filename=${s(r)}`),n}function l(e,n){if(e===void 0)return new Uint8Array([]);if((0,i.isBinaryBody)(e))return e;if(typeof e==`string`||typeof e==`number`||typeof e==`boolean`)return(0,r.stringToUint8Array)(String(e),`utf-8`);if(n&&/application\/(.+\+)?json(;.+)?/i.test(String(n)))return(0,r.stringToUint8Array)(JSON.stringify(e),`utf-8`);throw new t.RestError(`Unsupported body/content-type combination: ${e}, ${n}`)}function u(e){let t=o(e),r=c(e),i=(0,n.createHttpHeaders)(e.headers??{});return t&&i.set(`content-type`,t),r&&i.set(`content-disposition`,r),{headers:i,body:l(e.body,t)}}function d(e){return{parts:e.map(u)}}})),Fa=b((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.sendRequest=s;let t=Bi(),n=Ai(),r=Pi(),i=Na(),a=Sa(),o=Pa();async function s(e,n,r,a={},o){let s=o??(0,i.getCachedDefaultHttpsClient)(),c=u(e,n,a);try{let e=await r.sendRequest(s,c),t=e.headers.toJSON(),n=e.readableStreamBody??e.browserStreamBody,i=a.responseAsStream||n!==void 0?void 0:f(e),o=n??i;return a?.onResponse&&a.onResponse({...e,request:c,rawHeaders:t,parsedBody:i}),{request:c,headers:t,status:`${e.status}`,body:o}}catch(e){if((0,t.isRestError)(e)&&e.response&&a.onResponse){let{response:t}=e,n=t.headers.toJSON();a?.onResponse({...t,request:c,rawHeaders:n},e)}throw e}}function c(e={}){return e.contentType??e.headers?.[`content-type`]??l(e.body)}function l(e){if(ArrayBuffer.isView(e))return`application/octet-stream`;if(typeof e==`string`)try{return JSON.parse(e),`application/json`}catch{return}return`application/json`}function u(e,t,i={}){let a=c(i),{body:o,multipartBody:s}=d(i.body,a),l=o!==void 0||s!==void 0,u=(0,n.createHttpHeaders)({...i.headers?i.headers:{},accept:i.accept??i.headers?.accept??`application/json`,...l&&a&&{"content-type":a}});return(0,r.createPipelineRequest)({url:t,method:e,body:o,multipartBody:s,headers:u,allowInsecureConnection:i.allowInsecureConnection,abortSignal:i.abortSignal,onUploadProgress:i.onUploadProgress,onDownloadProgress:i.onDownloadProgress,timeout:i.timeout,enableBrowserStreams:!0,streamResponseStatusCodes:i.responseAsStream?new Set([1/0]):void 0})}function d(e,t=``){if(e===void 0)return{body:void 0};if(typeof FormData<`u`&&e instanceof FormData||(0,a.isReadableStream)(e))return{body:e};if(ArrayBuffer.isView(e))return{body:e instanceof Uint8Array?e:JSON.stringify(e)};switch(t.split(`;`)[0]){case`application/json`:return{body:JSON.stringify(e)};case`multipart/form-data`:return Array.isArray(e)?{multipartBody:(0,o.buildMultipartBody)(e)}:{body:JSON.stringify(e)};case`text/plain`:return{body:String(e)};default:return typeof e==`string`?{body:e}:{body:JSON.stringify(e)}}}function f(e){let t=(e.headers.get(`content-type`)??``).split(`;`)[0],n=e.bodyAsText??``;if(t===`text/plain`)return String(n);try{return n?JSON.parse(n):void 0}catch(r){if(t===`application/json`)throw p(e,r);return String(n)}}function p(e,n){let r=`Error "${n}" occurred while parsing the response body - ${e.bodyAsText}.`,i=n.code??t.RestError.PARSE_ERROR;return new t.RestError(r,{code:i,statusCode:e.status,request:e.request,response:e})}})),Ia=b((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.buildRequestUrl=n,e.buildBaseUrl=a,e.replaceAll=s;function t(e){let t=e.value;return t!==void 0&&t.toString!==void 0&&typeof t.toString==`function`}function n(e,t,n,r={}){if(t.startsWith(`https://`)||t.startsWith(`http://`))return t;e=a(e,r),t=o(t,n,r);let s=i(`${e}/${t}`,r);return new URL(s).toString().replace(/([^:]\/)\/+/g,`$1`)}function r(e,t,n,r){let i;i=n===`pipeDelimited`?`|`:n===`spaceDelimited`?`%20`:`,`;let a;a=Array.isArray(r)?r:typeof r==`object`&&r.toString===Object.prototype.toString?Object.entries(r).flat():[r];let o=a.map(n=>{if(n==null)return``;if(!n.toString||typeof n.toString!=`function`)throw Error(`Query parameters must be able to be represented as string, ${e} can't`);let r=n.toISOString===void 0?n.toString():n.toISOString();return t?r:encodeURIComponent(r)}).join(i);return`${t?e:encodeURIComponent(e)}=${o}`}function i(e,n={}){if(!n.queryParameters)return e;let i=new URL(e),a=n.queryParameters,o=[];for(let e of Object.keys(a)){let i=a[e];if(i==null)continue;let s=t(i),c=s?i.value:i,l=s?i.explode??!1:!1,u=s&&i.style?i.style:`form`;if(l)if(Array.isArray(c))for(let t of c)o.push(r(e,n.skipUrlEncoding??!1,u,t));else if(typeof c==`object`)for(let[e,t]of Object.entries(c))o.push(r(e,n.skipUrlEncoding??!1,u,t));else throw Error(`explode can only be set to true for objects and arrays`);else o.push(r(e,n.skipUrlEncoding??!1,u,c))}return i.search!==``&&(i.search+=`&`),i.search+=o.join(`&`),i.toString()}function a(e,t){if(!t.pathParameters)return e;let n=t.pathParameters;for(let[r,i]of Object.entries(n)){if(i==null)throw Error(`Path parameters ${r} must not be undefined or null`);if(!i.toString||typeof i.toString!=`function`)throw Error(`Path parameters must be able to be represented as string, ${r} can't`);let n=i.toISOString===void 0?String(i):i.toISOString();t.skipUrlEncoding||(n=encodeURIComponent(i)),e=s(e,`{${r}}`,n)??``}return e}function o(e,t,n={}){for(let r of t){let t=typeof r==`object`&&(r.allowReserved??!1),i=typeof r==`object`?r.value:r;!n.skipUrlEncoding&&!t&&(i=encodeURIComponent(i)),e=e.replace(/\{[\w-]+\}/,String(i))}return e}function s(e,t,n){return!e||!t?e:e.split(t).join(n||``)}})),La=b((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.getClient=a;let t=Na(),n=Fa(),r=Ia(),i=aa();function a(e,n={}){let i=n.pipeline??(0,t.createDefaultPipeline)(n);if(n.additionalPolicies?.length)for(let{policy:e,position:t}of n.additionalPolicies){let n=t===`perRetry`?`Sign`:void 0;i.addPolicy(e,{afterPhase:n})}let{allowInsecureConnection:a,httpClient:s}=n,c=n.endpoint??e,l=(e,...t)=>{let n=n=>(0,r.buildRequestUrl)(c,e,t,{allowInsecureConnection:a,...n});return{get:(e={})=>o(`GET`,n(e),i,e,a,s),post:(e={})=>o(`POST`,n(e),i,e,a,s),put:(e={})=>o(`PUT`,n(e),i,e,a,s),patch:(e={})=>o(`PATCH`,n(e),i,e,a,s),delete:(e={})=>o(`DELETE`,n(e),i,e,a,s),head:(e={})=>o(`HEAD`,n(e),i,e,a,s),options:(e={})=>o(`OPTIONS`,n(e),i,e,a,s),trace:(e={})=>o(`TRACE`,n(e),i,e,a,s)}};return{path:l,pathUnchecked:l,pipeline:i}}function o(e,t,r,a,o,s){return o=a.allowInsecureConnection??o,{then:function(i,c){return(0,n.sendRequest)(e,t,r,{...a,allowInsecureConnection:o},s).then(i,c)},async asBrowserStream(){if(i.isNodeLike)throw Error("`asBrowserStream` is supported only in the browser environment. Use `asNodeStream` instead to obtain the response body stream. If you require a Web stream of the response in Node, consider using `Readable.toWeb` on the result of `asNodeStream`.");return(0,n.sendRequest)(e,t,r,{...a,allowInsecureConnection:o,responseAsStream:!0},s)},async asNodeStream(){if(i.isNodeLike)return(0,n.sendRequest)(e,t,r,{...a,allowInsecureConnection:o,responseAsStream:!0},s);throw Error("`isNodeStream` is not supported in the browser environment. Use `asBrowserStream` to obtain the response body stream.")}}}})),Ra=b((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.operationOptionsToRequestParameters=t;function t(e){return{allowInsecureConnection:e.requestOptions?.allowInsecureConnection,timeout:e.requestOptions?.timeout,skipUrlEncoding:e.requestOptions?.skipUrlEncoding,abortSignal:e.abortSignal,onUploadProgress:e.requestOptions?.onUploadProgress,onDownloadProgress:e.requestOptions?.onDownloadProgress,headers:{...e.requestOptions?.headers},onResponse:e.onResponse}}})),za=b((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.createRestError=r;let t=Bi(),n=Ai();function r(e,n){let r=typeof e==`string`?n:e,o=r.body?.error??r.body,s=typeof e==`string`?e:o?.message??`Unexpected status code: ${r.status}`;return new t.RestError(s,{statusCode:a(r.status),code:o?.code,request:r.request,response:i(r)})}function i(e){return{headers:(0,n.createHttpHeaders)(e.headers),request:e.request,status:a(e.status)??-1}}function a(e){let t=Number.parseInt(e);return Number.isNaN(t)?void 0:t}})),Ba=b((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.createRestError=e.operationOptionsToRequestParameters=e.getClient=e.createDefaultHttpClient=e.uint8ArrayToString=e.stringToUint8Array=e.isRestError=e.RestError=e.createEmptyPipeline=e.createPipelineRequest=e.createHttpHeaders=e.TypeSpecRuntimeLogger=e.setLogLevel=e.getLogLevel=e.createClientLogger=e.AbortError=void 0;let t=(yi(),w(Fr));var n=Ei();Object.defineProperty(e,`AbortError`,{enumerable:!0,get:function(){return n.AbortError}});var r=ki();Object.defineProperty(e,`createClientLogger`,{enumerable:!0,get:function(){return r.createClientLogger}}),Object.defineProperty(e,`getLogLevel`,{enumerable:!0,get:function(){return r.getLogLevel}}),Object.defineProperty(e,`setLogLevel`,{enumerable:!0,get:function(){return r.setLogLevel}}),Object.defineProperty(e,`TypeSpecRuntimeLogger`,{enumerable:!0,get:function(){return r.TypeSpecRuntimeLogger}});var i=Ai();Object.defineProperty(e,`createHttpHeaders`,{enumerable:!0,get:function(){return i.createHttpHeaders}}),t.__exportStar(ji(),e),t.__exportStar(Mi(),e);var a=Pi();Object.defineProperty(e,`createPipelineRequest`,{enumerable:!0,get:function(){return a.createPipelineRequest}});var o=Fi();Object.defineProperty(e,`createEmptyPipeline`,{enumerable:!0,get:function(){return o.createEmptyPipeline}});var s=Bi();Object.defineProperty(e,`RestError`,{enumerable:!0,get:function(){return s.RestError}}),Object.defineProperty(e,`isRestError`,{enumerable:!0,get:function(){return s.isRestError}});var c=Vi();Object.defineProperty(e,`stringToUint8Array`,{enumerable:!0,get:function(){return c.stringToUint8Array}}),Object.defineProperty(e,`uint8ArrayToString`,{enumerable:!0,get:function(){return c.uint8ArrayToString}});var l=Wi();Object.defineProperty(e,`createDefaultHttpClient`,{enumerable:!0,get:function(){return l.createDefaultHttpClient}});var u=La();Object.defineProperty(e,`getClient`,{enumerable:!0,get:function(){return u.getClient}});var d=Ra();Object.defineProperty(e,`operationOptionsToRequestParameters`,{enumerable:!0,get:function(){return d.operationOptionsToRequestParameters}});var f=za();Object.defineProperty(e,`createRestError`,{enumerable:!0,get:function(){return f.createRestError}})})),Va=b((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.createEmptyPipeline=n;let t=Ba();function n(){return(0,t.createEmptyPipeline)()}})),Ha=b((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.createLoggerContext=void 0;var t=ki();Object.defineProperty(e,`createLoggerContext`,{enumerable:!0,get:function(){return t.createLoggerContext}})})),Ua=b((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.AzureLogger=void 0,e.setLogLevel=n,e.getLogLevel=r,e.createClientLogger=i;let t=(0,Ha().createLoggerContext)({logLevelEnvVarName:`AZURE_LOG_LEVEL`,namespace:`azure`});e.AzureLogger=t.logger;function n(e){t.setLogLevel(e)}function r(){return t.getLogLevel()}function i(e){return t.createClientLogger(e)}})),Wa=b((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.logger=void 0,e.logger=(0,Ua().createClientLogger)(`core-rest-pipeline`)})),Ga=b((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.exponentialRetryPolicyName=void 0,e.exponentialRetryPolicy=i;let t=na(),n=ra(),r=Ji();e.exponentialRetryPolicyName=`exponentialRetryPolicy`;function i(e={}){return(0,n.retryPolicy)([(0,t.exponentialRetryStrategy)({...e,ignoreSystemErrors:!0})],{maxRetries:e.maxRetries??r.DEFAULT_RETRY_POLICY_COUNT})}})),Ka=b((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.systemErrorRetryPolicyName=void 0,e.systemErrorRetryPolicy=i;let t=na(),n=ra(),r=Ji();e.systemErrorRetryPolicyName=`systemErrorRetryPolicy`;function i(i={}){return{name:e.systemErrorRetryPolicyName,sendRequest:(0,n.retryPolicy)([(0,t.exponentialRetryStrategy)({...i,ignoreHttpStatusCodes:!0})],{maxRetries:i.maxRetries??r.DEFAULT_RETRY_POLICY_COUNT}).sendRequest}}})),qa=b((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.throttlingRetryPolicyName=void 0,e.throttlingRetryPolicy=i;let t=ta(),n=ra(),r=Ji();e.throttlingRetryPolicyName=`throttlingRetryPolicy`;function i(i={}){return{name:e.throttlingRetryPolicyName,sendRequest:(0,n.retryPolicy)([(0,t.throttlingRetryStrategy)()],{maxRetries:i.maxRetries??r.DEFAULT_RETRY_POLICY_COUNT}).sendRequest}}})),Ja=b((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.userAgentPolicyName=e.userAgentPolicy=e.tlsPolicyName=e.tlsPolicy=e.redirectPolicyName=e.redirectPolicy=e.getDefaultProxySettings=e.proxyPolicyName=e.proxyPolicy=e.multipartPolicyName=e.multipartPolicy=e.logPolicyName=e.logPolicy=e.formDataPolicyName=e.formDataPolicy=e.throttlingRetryPolicyName=e.throttlingRetryPolicy=e.systemErrorRetryPolicyName=e.systemErrorRetryPolicy=e.retryPolicy=e.exponentialRetryPolicyName=e.exponentialRetryPolicy=e.defaultRetryPolicyName=e.defaultRetryPolicy=e.decompressResponsePolicyName=e.decompressResponsePolicy=e.agentPolicyName=e.agentPolicy=void 0;var t=ba();Object.defineProperty(e,`agentPolicy`,{enumerable:!0,get:function(){return t.agentPolicy}}),Object.defineProperty(e,`agentPolicyName`,{enumerable:!0,get:function(){return t.agentPolicyName}});var n=Zi();Object.defineProperty(e,`decompressResponsePolicy`,{enumerable:!0,get:function(){return n.decompressResponsePolicy}}),Object.defineProperty(e,`decompressResponsePolicyName`,{enumerable:!0,get:function(){return n.decompressResponsePolicyName}});var r=ia();Object.defineProperty(e,`defaultRetryPolicy`,{enumerable:!0,get:function(){return r.defaultRetryPolicy}}),Object.defineProperty(e,`defaultRetryPolicyName`,{enumerable:!0,get:function(){return r.defaultRetryPolicyName}});var i=Ga();Object.defineProperty(e,`exponentialRetryPolicy`,{enumerable:!0,get:function(){return i.exponentialRetryPolicy}}),Object.defineProperty(e,`exponentialRetryPolicyName`,{enumerable:!0,get:function(){return i.exponentialRetryPolicyName}});var a=ra();Object.defineProperty(e,`retryPolicy`,{enumerable:!0,get:function(){return a.retryPolicy}});var o=Ka();Object.defineProperty(e,`systemErrorRetryPolicy`,{enumerable:!0,get:function(){return o.systemErrorRetryPolicy}}),Object.defineProperty(e,`systemErrorRetryPolicyName`,{enumerable:!0,get:function(){return o.systemErrorRetryPolicyName}});var s=qa();Object.defineProperty(e,`throttlingRetryPolicy`,{enumerable:!0,get:function(){return s.throttlingRetryPolicy}}),Object.defineProperty(e,`throttlingRetryPolicyName`,{enumerable:!0,get:function(){return s.throttlingRetryPolicyName}});var c=oa();Object.defineProperty(e,`formDataPolicy`,{enumerable:!0,get:function(){return c.formDataPolicy}}),Object.defineProperty(e,`formDataPolicyName`,{enumerable:!0,get:function(){return c.formDataPolicyName}});var l=Gi();Object.defineProperty(e,`logPolicy`,{enumerable:!0,get:function(){return l.logPolicy}}),Object.defineProperty(e,`logPolicyName`,{enumerable:!0,get:function(){return l.logPolicyName}});var u=wa();Object.defineProperty(e,`multipartPolicy`,{enumerable:!0,get:function(){return u.multipartPolicy}}),Object.defineProperty(e,`multipartPolicyName`,{enumerable:!0,get:function(){return u.multipartPolicyName}});var d=ya();Object.defineProperty(e,`proxyPolicy`,{enumerable:!0,get:function(){return d.proxyPolicy}}),Object.defineProperty(e,`proxyPolicyName`,{enumerable:!0,get:function(){return d.proxyPolicyName}}),Object.defineProperty(e,`getDefaultProxySettings`,{enumerable:!0,get:function(){return d.getDefaultProxySettings}});var f=Ki();Object.defineProperty(e,`redirectPolicy`,{enumerable:!0,get:function(){return f.redirectPolicy}}),Object.defineProperty(e,`redirectPolicyName`,{enumerable:!0,get:function(){return f.redirectPolicyName}});var p=xa();Object.defineProperty(e,`tlsPolicy`,{enumerable:!0,get:function(){return p.tlsPolicy}}),Object.defineProperty(e,`tlsPolicyName`,{enumerable:!0,get:function(){return p.tlsPolicyName}});var m=Xi();Object.defineProperty(e,`userAgentPolicy`,{enumerable:!0,get:function(){return m.userAgentPolicy}}),Object.defineProperty(e,`userAgentPolicyName`,{enumerable:!0,get:function(){return m.userAgentPolicyName}})})),Ya=b((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.logPolicyName=void 0,e.logPolicy=r;let t=Wa(),n=Ja();e.logPolicyName=n.logPolicyName;function r(e={}){return(0,n.logPolicy)({logger:t.logger.info,...e})}})),Xa=b((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.redirectPolicyName=void 0,e.redirectPolicy=n;let t=Ja();e.redirectPolicyName=t.redirectPolicyName;function n(e={}){return(0,t.redirectPolicy)(e)}})),Za=b((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.getHeaderName=i,e.setPlatformSpecificData=a;let t=(yi(),w(Fr)),n=t.__importDefault(T(`node:os`)),r=t.__importDefault(T(`node:process`));function i(){return`User-Agent`}async function a(e){if(r.default&&r.default.versions){let t=`${n.default.type()} ${n.default.release()}; ${n.default.arch()}`,i=r.default.versions;i.bun?e.set(`Bun`,`${i.bun} (${t})`):i.deno?e.set(`Deno`,`${i.deno} (${t})`):i.node&&e.set(`Node`,`${i.node} (${t})`)}}})),Qa=b((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.DEFAULT_RETRY_POLICY_COUNT=e.SDK_VERSION=void 0,e.SDK_VERSION=`1.22.2`,e.DEFAULT_RETRY_POLICY_COUNT=3})),$a=b((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.getUserAgentHeaderName=i,e.getUserAgentValue=a;let t=Za(),n=Qa();function r(e){let t=[];for(let[n,r]of e){let e=r?`${n}/${r}`:n;t.push(e)}return t.join(` `)}function i(){return(0,t.getHeaderName)()}async function a(e){let i=new Map;i.set(`core-rest-pipeline`,n.SDK_VERSION),await(0,t.setPlatformSpecificData)(i);let a=r(i);return e?`${e} ${a}`:a}})),eo=b((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.userAgentPolicyName=void 0,e.userAgentPolicy=r;let t=$a(),n=(0,t.getUserAgentHeaderName)();e.userAgentPolicyName=`userAgentPolicy`;function r(r={}){let i=(0,t.getUserAgentValue)(r.userAgentPrefix);return{name:e.userAgentPolicyName,async sendRequest(e,t){return e.headers.has(n)||e.headers.set(n,await i),t(e)}}}})),to=b((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.computeSha256Hmac=n,e.computeSha256Hash=r;let t=T(`node:crypto`);async function n(e,n,r){let i=Buffer.from(e,`base64`);return(0,t.createHmac)(`sha256`,i).update(n).digest(r)}async function r(e,n){return(0,t.createHash)(`sha256`).update(e).digest(n)}})),no=b((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.Sanitizer=e.uint8ArrayToString=e.stringToUint8Array=e.isWebWorker=e.isReactNative=e.isDeno=e.isNodeRuntime=e.isNodeLike=e.isBun=e.isBrowser=e.randomUUID=e.computeSha256Hmac=e.computeSha256Hash=e.isError=e.isObject=e.getRandomIntegerInclusive=e.calculateRetryDelay=void 0;var t=$i();Object.defineProperty(e,`calculateRetryDelay`,{enumerable:!0,get:function(){return t.calculateRetryDelay}});var n=Qi();Object.defineProperty(e,`getRandomIntegerInclusive`,{enumerable:!0,get:function(){return n.getRandomIntegerInclusive}});var r=Ii();Object.defineProperty(e,`isObject`,{enumerable:!0,get:function(){return r.isObject}});var i=Li();Object.defineProperty(e,`isError`,{enumerable:!0,get:function(){return i.isError}});var a=to();Object.defineProperty(e,`computeSha256Hash`,{enumerable:!0,get:function(){return a.computeSha256Hash}}),Object.defineProperty(e,`computeSha256Hmac`,{enumerable:!0,get:function(){return a.computeSha256Hmac}});var o=Ni();Object.defineProperty(e,`randomUUID`,{enumerable:!0,get:function(){return o.randomUUID}});var s=aa();Object.defineProperty(e,`isBrowser`,{enumerable:!0,get:function(){return s.isBrowser}}),Object.defineProperty(e,`isBun`,{enumerable:!0,get:function(){return s.isBun}}),Object.defineProperty(e,`isNodeLike`,{enumerable:!0,get:function(){return s.isNodeLike}}),Object.defineProperty(e,`isNodeRuntime`,{enumerable:!0,get:function(){return s.isNodeRuntime}}),Object.defineProperty(e,`isDeno`,{enumerable:!0,get:function(){return s.isDeno}}),Object.defineProperty(e,`isReactNative`,{enumerable:!0,get:function(){return s.isReactNative}}),Object.defineProperty(e,`isWebWorker`,{enumerable:!0,get:function(){return s.isWebWorker}});var c=Vi();Object.defineProperty(e,`stringToUint8Array`,{enumerable:!0,get:function(){return c.stringToUint8Array}}),Object.defineProperty(e,`uint8ArrayToString`,{enumerable:!0,get:function(){return c.uint8ArrayToString}});var l=zi();Object.defineProperty(e,`Sanitizer`,{enumerable:!0,get:function(){return l.Sanitizer}})})),ro=b((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.cancelablePromiseRace=t;async function t(e,t){let n=new AbortController;function r(){n.abort()}t?.abortSignal?.addEventListener(`abort`,r);try{return await Promise.race(e.map(e=>e({abortSignal:n.signal})))}finally{n.abort(),t?.abortSignal?.removeEventListener(`abort`,r)}}})),io=b((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.AbortError=void 0,e.AbortError=class extends Error{constructor(e){super(e),this.name=`AbortError`}}})),ao=b((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.AbortError=void 0;var t=io();Object.defineProperty(e,`AbortError`,{enumerable:!0,get:function(){return t.AbortError}})})),oo=b((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.createAbortablePromise=n;let t=ao();function n(e,n){let{cleanupBeforeAbort:r,abortSignal:i,abortErrorMsg:a}=n??{};return new Promise((n,o)=>{function s(){o(new t.AbortError(a??`The operation was aborted.`))}function c(){i?.removeEventListener(`abort`,l)}function l(){r?.(),c(),s()}if(i?.aborted)return s();try{e(e=>{c(),n(e)},e=>{c(),o(e)})}catch(e){o(e)}i?.addEventListener(`abort`,l)})}})),so=b((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.delay=r,e.calculateRetryDelay=i;let t=oo(),n=no();function r(e,n){let r,{abortSignal:i,abortErrorMsg:a}=n??{};return(0,t.createAbortablePromise)(t=>{r=setTimeout(t,e)},{cleanupBeforeAbort:()=>clearTimeout(r),abortSignal:i,abortErrorMsg:a??`The delay was aborted.`})}function i(e,t){let r=t.retryDelayInMs*2**e,i=Math.min(t.maxRetryDelayInMs,r);return{retryAfterInMs:i/2+(0,n.getRandomIntegerInclusive)(0,i/2)}}})),co=b((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.getErrorMessage=n;let t=no();function n(e){if((0,t.isError)(e))return e.message;{let t;try{t=typeof e==`object`&&e?JSON.stringify(e):String(e)}catch{t=`[unable to stringify input]`}return`Unknown error ${t}`}}})),lo=b((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.isDefined=t,e.isObjectWithProperties=n,e.objectHasProperty=r;function t(e){return e!=null}function n(e,n){if(!t(e)||typeof e!=`object`)return!1;for(let t of n)if(!r(e,t))return!1;return!0}function r(e,n){return t(e)&&typeof e==`object`&&n in e}})),uo=b((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.isWebWorker=e.isReactNative=e.isNodeRuntime=e.isNodeLike=e.isNode=e.isDeno=e.isBun=e.isBrowser=e.objectHasProperty=e.isObjectWithProperties=e.isDefined=e.getErrorMessage=e.delay=e.createAbortablePromise=e.cancelablePromiseRace=void 0,e.calculateRetryDelay=s,e.computeSha256Hash=c,e.computeSha256Hmac=l,e.getRandomIntegerInclusive=u,e.isError=d,e.isObject=f,e.randomUUID=p,e.uint8ArrayToString=m,e.stringToUint8Array=h;let t=(yi(),w(Fr)).__importStar(no());var n=ro();Object.defineProperty(e,`cancelablePromiseRace`,{enumerable:!0,get:function(){return n.cancelablePromiseRace}});var r=oo();Object.defineProperty(e,`createAbortablePromise`,{enumerable:!0,get:function(){return r.createAbortablePromise}});var i=so();Object.defineProperty(e,`delay`,{enumerable:!0,get:function(){return i.delay}});var a=co();Object.defineProperty(e,`getErrorMessage`,{enumerable:!0,get:function(){return a.getErrorMessage}});var o=lo();Object.defineProperty(e,`isDefined`,{enumerable:!0,get:function(){return o.isDefined}}),Object.defineProperty(e,`isObjectWithProperties`,{enumerable:!0,get:function(){return o.isObjectWithProperties}}),Object.defineProperty(e,`objectHasProperty`,{enumerable:!0,get:function(){return o.objectHasProperty}});function s(e,n){return t.calculateRetryDelay(e,n)}function c(e,n){return t.computeSha256Hash(e,n)}function l(e,n,r){return t.computeSha256Hmac(e,n,r)}function u(e,n){return t.getRandomIntegerInclusive(e,n)}function d(e){return t.isError(e)}function f(e){return t.isObject(e)}function p(){return t.randomUUID()}e.isBrowser=t.isBrowser,e.isBun=t.isBun,e.isDeno=t.isDeno,e.isNode=t.isNodeLike,e.isNodeLike=t.isNodeLike,e.isNodeRuntime=t.isNodeRuntime,e.isReactNative=t.isReactNative,e.isWebWorker=t.isWebWorker;function m(e,n){return t.uint8ArrayToString(e,n)}function h(e,n){return t.stringToUint8Array(e,n)}})),fo=b((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.hasRawContent=a,e.getRawContent=o,e.createFileFromStream=s,e.createFile=c;let t=uo();function n(e){return!!(e&&typeof e.pipe==`function`)}let r={arrayBuffer:()=>{throw Error(`Not implemented`)},bytes:()=>{throw Error(`Not implemented`)},slice:()=>{throw Error(`Not implemented`)},text:()=>{throw Error(`Not implemented`)}},i=Symbol(`rawContent`);function a(e){return typeof e[i]==`function`}function o(e){return a(e)?e[i]():e}function s(e,t,a={}){return{...r,type:a.type??``,lastModified:a.lastModified??new Date().getTime(),webkitRelativePath:a.webkitRelativePath??``,size:a.size??-1,name:t,stream:()=>{let t=e();if(n(t))throw Error(`Not supported: a Node stream was provided as input to createFileFromStream.`);return t},[i]:e}}function c(e,n,a={}){return t.isNodeLike?{...r,type:a.type??``,lastModified:a.lastModified??new Date().getTime(),webkitRelativePath:a.webkitRelativePath??``,size:e.byteLength,name:n,arrayBuffer:async()=>e.buffer,stream:()=>new Blob([l(e)]).stream(),[i]:()=>e}:new File([l(e)],n,a)}function l(e){return`resize`in e.buffer?e:e.map(e=>e)}})),po=b((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.multipartPolicyName=void 0,e.multipartPolicy=r;let t=Ja(),n=fo();e.multipartPolicyName=t.multipartPolicyName;function r(){let r=(0,t.multipartPolicy)();return{name:e.multipartPolicyName,sendRequest:async(e,t)=>{if(e.multipartBody)for(let t of e.multipartBody.parts)(0,n.hasRawContent)(t.body)&&(t.body=(0,n.getRawContent)(t.body));return r.sendRequest(e,t)}}}})),mo=b((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.decompressResponsePolicyName=void 0,e.decompressResponsePolicy=n;let t=Ja();e.decompressResponsePolicyName=t.decompressResponsePolicyName;function n(){return(0,t.decompressResponsePolicy)()}})),ho=b((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.defaultRetryPolicyName=void 0,e.defaultRetryPolicy=n;let t=Ja();e.defaultRetryPolicyName=t.defaultRetryPolicyName;function n(e={}){return(0,t.defaultRetryPolicy)(e)}})),go=b((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.formDataPolicyName=void 0,e.formDataPolicy=n;let t=Ja();e.formDataPolicyName=t.formDataPolicyName;function n(){return(0,t.formDataPolicy)()}})),_o=b((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.proxyPolicyName=void 0,e.getDefaultProxySettings=n,e.proxyPolicy=r;let t=Ja();e.proxyPolicyName=t.proxyPolicyName;function n(e){return(0,t.getDefaultProxySettings)(e)}function r(e,n){return(0,t.proxyPolicy)(e,n)}})),vo=b((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.setClientRequestIdPolicyName=void 0,e.setClientRequestIdPolicy=t,e.setClientRequestIdPolicyName=`setClientRequestIdPolicy`;function t(t=`x-ms-client-request-id`){return{name:e.setClientRequestIdPolicyName,async sendRequest(e,n){return e.headers.has(t)||e.headers.set(t,e.requestId),n(e)}}}})),yo=b((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.agentPolicyName=void 0,e.agentPolicy=n;let t=Ja();e.agentPolicyName=t.agentPolicyName;function n(e){return(0,t.agentPolicy)(e)}})),bo=b((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.tlsPolicyName=void 0,e.tlsPolicy=n;let t=Ja();e.tlsPolicyName=t.tlsPolicyName;function n(e){return(0,t.tlsPolicy)(e)}})),xo=b((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.TracingContextImpl=e.knownContextKeys=void 0,e.createTracingContext=t,e.knownContextKeys={span:Symbol.for(`@azure/core-tracing span`),namespace:Symbol.for(`@azure/core-tracing namespace`)};function t(t={}){let r=new n(t.parentContext);return t.span&&(r=r.setValue(e.knownContextKeys.span,t.span)),t.namespace&&(r=r.setValue(e.knownContextKeys.namespace,t.namespace)),r}var n=class e{constructor(t){this._contextMap=t instanceof e?new Map(t._contextMap):new Map}setValue(t,n){let r=new e(this);return r._contextMap.set(t,n),r}getValue(e){return this._contextMap.get(e)}deleteValue(t){let n=new e(this);return n._contextMap.delete(t),n}};e.TracingContextImpl=n})),So=b((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.state=void 0,e.state={instrumenterImplementation:void 0}})),Co=b((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.createDefaultTracingSpan=r,e.createDefaultInstrumenter=i,e.useInstrumenter=a,e.getInstrumenter=o;let t=xo(),n=So();function r(){return{end:()=>{},isRecording:()=>!1,recordException:()=>{},setAttribute:()=>{},setStatus:()=>{},addEvent:()=>{}}}function i(){return{createRequestHeaders:()=>({}),parseTraceparentHeader:()=>{},startSpan:(e,n)=>({span:r(),tracingContext:(0,t.createTracingContext)({parentContext:n.tracingContext})}),withContext(e,t,...n){return t(...n)}}}function a(e){n.state.instrumenterImplementation=e}function o(){return n.state.instrumenterImplementation||(n.state.instrumenterImplementation=i()),n.state.instrumenterImplementation}})),wo=b((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.createTracingClient=r;let t=Co(),n=xo();function r(e){let{namespace:r,packageName:i,packageVersion:a}=e;function o(e,o,s){let c=(0,t.getInstrumenter)().startSpan(e,{...s,packageName:i,packageVersion:a,tracingContext:o?.tracingOptions?.tracingContext}),l=c.tracingContext,u=c.span;return l.getValue(n.knownContextKeys.namespace)||(l=l.setValue(n.knownContextKeys.namespace,r)),u.setAttribute(`az.namespace`,l.getValue(n.knownContextKeys.namespace)),{span:u,updatedOptions:Object.assign({},o,{tracingOptions:{...o?.tracingOptions,tracingContext:l}})}}async function s(e,t,n,r){let{span:i,updatedOptions:a}=o(e,t,r);try{let e=await c(a.tracingOptions.tracingContext,()=>Promise.resolve(n(a,i)));return i.setStatus({status:`success`}),e}catch(e){throw i.setStatus({status:`error`,error:e}),e}finally{i.end()}}function c(e,n,...r){return(0,t.getInstrumenter)().withContext(e,n,...r)}function l(e){return(0,t.getInstrumenter)().parseTraceparentHeader(e)}function u(e){return(0,t.getInstrumenter)().createRequestHeaders(e)}return{startSpan:o,withSpan:s,withContext:c,parseTraceparentHeader:l,createRequestHeaders:u}}})),To=b((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.createTracingClient=e.useInstrumenter=void 0;var t=Co();Object.defineProperty(e,`useInstrumenter`,{enumerable:!0,get:function(){return t.useInstrumenter}});var n=wo();Object.defineProperty(e,`createTracingClient`,{enumerable:!0,get:function(){return n.createTracingClient}})})),Eo=b((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.RestError=void 0,e.isRestError=n;let t=Ba();e.RestError=t.RestError;function n(e){return(0,t.isRestError)(e)}})),Do=b((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.tracingPolicyName=void 0,e.tracingPolicy=c;let t=To(),n=Qa(),r=$a(),i=Wa(),a=uo(),o=Eo(),s=no();e.tracingPolicyName=`tracingPolicy`;function c(t={}){let n=(0,r.getUserAgentValue)(t.userAgentPrefix),i=new s.Sanitizer({additionalAllowedQueryParameters:t.additionalAllowedQueryParameters}),a=l();return{name:e.tracingPolicyName,async sendRequest(e,t){if(!a)return t(e);let r=await n,o={"http.url":i.sanitizeUrl(e.url),"http.method":e.method,"http.user_agent":r,requestId:e.requestId};r&&(o[`http.user_agent`]=r);let{span:s,tracingContext:c}=u(a,e,o)??{};if(!s||!c)return t(e);try{let n=await a.withContext(c,t,e);return f(s,n),n}catch(e){throw d(s,e),e}}}}function l(){try{return(0,t.createTracingClient)({namespace:``,packageName:`@azure/core-rest-pipeline`,packageVersion:n.SDK_VERSION})}catch(e){i.logger.warning(`Error when creating the TracingClient: ${(0,a.getErrorMessage)(e)}`);return}}function u(e,t,n){try{let{span:r,updatedOptions:i}=e.startSpan(`HTTP ${t.method}`,{tracingOptions:t.tracingOptions},{spanKind:`client`,spanAttributes:n});if(!r.isRecording()){r.end();return}let a=e.createRequestHeaders(i.tracingOptions.tracingContext);for(let[e,n]of Object.entries(a))t.headers.set(e,n);return{span:r,tracingContext:i.tracingOptions.tracingContext}}catch(e){i.logger.warning(`Skipping creating a tracing span due to an error: ${(0,a.getErrorMessage)(e)}`);return}}function d(e,t){try{e.setStatus({status:`error`,error:(0,a.isError)(t)?t:void 0}),(0,o.isRestError)(t)&&t.statusCode&&e.setAttribute(`http.status_code`,t.statusCode),e.end()}catch(e){i.logger.warning(`Skipping tracing span processing due to an error: ${(0,a.getErrorMessage)(e)}`)}}function f(e,t){try{e.setAttribute(`http.status_code`,t.status);let n=t.headers.get(`x-ms-request-id`);n&&e.setAttribute(`serviceRequestId`,n),t.status>=400&&e.setStatus({status:`error`}),e.end()}catch(e){i.logger.warning(`Skipping tracing span processing due to an error: ${(0,a.getErrorMessage)(e)}`)}}})),Oo=b((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.wrapAbortSignalLike=t;function t(e){if(e instanceof AbortSignal)return{abortSignal:e};if(e.aborted)return{abortSignal:AbortSignal.abort(e.reason)};let t=new AbortController,n=!0;function r(){n&&=(e.removeEventListener(`abort`,i),!1)}function i(){t.abort(e.reason),r()}return e.addEventListener(`abort`,i),{abortSignal:t.signal,cleanup:r}}})),ko=b((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.wrapAbortSignalLikePolicyName=void 0,e.wrapAbortSignalLikePolicy=n;let t=Oo();e.wrapAbortSignalLikePolicyName=`wrapAbortSignalLikePolicy`;function n(){return{name:e.wrapAbortSignalLikePolicyName,sendRequest:async(e,n)=>{if(!e.abortSignal)return n(e);let{abortSignal:r,cleanup:i}=(0,t.wrapAbortSignalLike)(e.abortSignal);e.abortSignal=r;try{return await n(e)}finally{i?.()}}}}})),Ao=b((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.createPipelineFromOptions=g;let t=Ya(),n=Va(),r=Xa(),i=eo(),a=po(),o=mo(),s=ho(),c=go(),l=uo(),u=_o(),d=vo(),f=yo(),p=bo(),m=Do(),h=ko();function g(e){let g=(0,n.createEmptyPipeline)();return l.isNodeLike&&(e.agent&&g.addPolicy((0,f.agentPolicy)(e.agent)),e.tlsOptions&&g.addPolicy((0,p.tlsPolicy)(e.tlsOptions)),g.addPolicy((0,u.proxyPolicy)(e.proxyOptions)),g.addPolicy((0,o.decompressResponsePolicy)())),g.addPolicy((0,h.wrapAbortSignalLikePolicy)()),g.addPolicy((0,c.formDataPolicy)(),{beforePolicies:[a.multipartPolicyName]}),g.addPolicy((0,i.userAgentPolicy)(e.userAgentOptions)),g.addPolicy((0,d.setClientRequestIdPolicy)(e.telemetryOptions?.clientRequestIdHeaderName)),g.addPolicy((0,a.multipartPolicy)(),{afterPhase:`Deserialize`}),g.addPolicy((0,s.defaultRetryPolicy)(e.retryOptions),{phase:`Retry`}),g.addPolicy((0,m.tracingPolicy)({...e.userAgentOptions,...e.loggingOptions}),{afterPhase:`Retry`}),l.isNodeLike&&g.addPolicy((0,r.redirectPolicy)(e.redirectOptions),{afterPhase:`Retry`}),g.addPolicy((0,t.logPolicy)(e.loggingOptions),{afterPhase:`Sign`}),g}})),jo=b((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.createDefaultHttpClient=r;let t=Ba(),n=Oo();function r(){let e=(0,t.createDefaultHttpClient)();return{async sendRequest(t){let{abortSignal:r,cleanup:i}=t.abortSignal?(0,n.wrapAbortSignalLike)(t.abortSignal):{};try{return t.abortSignal=r,await e.sendRequest(t)}finally{i?.()}}}}})),Mo=b((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.createHttpHeaders=n;let t=Ba();function n(e){return(0,t.createHttpHeaders)(e)}})),No=b((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.createPipelineRequest=n;let t=Ba();function n(e){return(0,t.createPipelineRequest)(e)}})),Po=b((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.exponentialRetryPolicyName=void 0,e.exponentialRetryPolicy=n;let t=Ja();e.exponentialRetryPolicyName=t.exponentialRetryPolicyName;function n(e={}){return(0,t.exponentialRetryPolicy)(e)}})),Fo=b((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.systemErrorRetryPolicyName=void 0,e.systemErrorRetryPolicy=n;let t=Ja();e.systemErrorRetryPolicyName=t.systemErrorRetryPolicyName;function n(e={}){return(0,t.systemErrorRetryPolicy)(e)}})),Io=b((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.throttlingRetryPolicyName=void 0,e.throttlingRetryPolicy=n;let t=Ja();e.throttlingRetryPolicyName=t.throttlingRetryPolicyName;function n(e={}){return(0,t.throttlingRetryPolicy)(e)}})),Lo=b((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.retryPolicy=a;let t=Ua(),n=Qa(),r=Ja(),i=(0,t.createClientLogger)(`core-rest-pipeline retryPolicy`);function a(e,t={maxRetries:n.DEFAULT_RETRY_POLICY_COUNT}){return(0,r.retryPolicy)(e,{logger:i,...t})}})),Ro=b((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.DEFAULT_CYCLER_OPTIONS=void 0,e.createTokenCycler=r;let t=uo();e.DEFAULT_CYCLER_OPTIONS={forcedRefreshWindowInMs:1e3,retryIntervalInMs:3e3,refreshWindowInMs:1e3*60*2};async function n(e,n,r){async function i(){if(Date.now()t.getToken(e,r),s.retryIntervalInMs,a?.expiresOnTimestamp??Date.now()).then(e=>(i=null,a=e,o=r.tenantId,a)).catch(e=>{throw i=null,a=null,o=void 0,e})),i}return async(e,t)=>{let n=!!t.claims,r=o!==t.tenantId;return n&&(a=null),r||n||c.mustRefresh?l(e,t):(c.shouldRefresh&&l(e,t),a)}}})),zo=b((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.bearerTokenAuthenticationPolicyName=void 0,e.bearerTokenAuthenticationPolicy=c,e.parseChallenges=l;let t=Ro(),n=Wa(),r=Eo();e.bearerTokenAuthenticationPolicyName=`bearerTokenAuthenticationPolicy`;async function i(e,t){try{return[await t(e),void 0]}catch(e){if((0,r.isRestError)(e)&&e.response)return[e.response,e];throw e}}async function a(e){let{scopes:t,getAccessToken:n,request:r}=e,i=await n(t,{abortSignal:r.abortSignal,tracingOptions:r.tracingOptions,enableCae:!0});i&&e.request.headers.set(`Authorization`,`Bearer ${i.token}`)}function o(e){return e.status===401&&e.headers.has(`WWW-Authenticate`)}async function s(e,t){let{scopes:n}=e,r=await e.getAccessToken(n,{enableCae:!0,claims:t});return r?(e.request.headers.set(`Authorization`,`${r.tokenType??`Bearer`} ${r.token}`),!0):!1}function c(r){let{credential:c,scopes:l,challengeCallbacks:d}=r,f=r.logger||n.logger,p={authorizeRequest:d?.authorizeRequest?.bind(d)??a,authorizeRequestOnChallenge:d?.authorizeRequestOnChallenge?.bind(d)},m=c?(0,t.createTokenCycler)(c):()=>Promise.resolve(null);return{name:e.bearerTokenAuthenticationPolicyName,async sendRequest(e,t){if(!e.url.toLowerCase().startsWith(`https://`))throw Error(`Bearer token authentication is not permitted for non-TLS protected (non-https) URLs.`);await p.authorizeRequest({scopes:Array.isArray(l)?l:[l],request:e,getAccessToken:m,logger:f});let n,r,a;if([n,r]=await i(e,t),o(n)){let c=u(n.headers.get(`WWW-Authenticate`));if(c){let o;try{o=atob(c)}catch{return f.warning(`The WWW-Authenticate header contains "claims" that cannot be parsed. Unable to perform the Continuous Access Evaluation authentication flow. Unparsable claims: ${c}`),n}a=await s({scopes:Array.isArray(l)?l:[l],response:n,request:e,getAccessToken:m,logger:f},o),a&&([n,r]=await i(e,t))}else if(p.authorizeRequestOnChallenge&&(a=await p.authorizeRequestOnChallenge({scopes:Array.isArray(l)?l:[l],request:e,response:n,getAccessToken:m,logger:f}),a&&([n,r]=await i(e,t)),o(n)&&(c=u(n.headers.get(`WWW-Authenticate`)),c))){let o;try{o=atob(c)}catch{return f.warning(`The WWW-Authenticate header contains "claims" that cannot be parsed. Unable to perform the Continuous Access Evaluation authentication flow. Unparsable claims: ${c}`),n}a=await s({scopes:Array.isArray(l)?l:[l],response:n,request:e,getAccessToken:m,logger:f},o),a&&([n,r]=await i(e,t))}}if(r)throw r;return n}}}function l(e){let t=/(\w+)\s+((?:\w+=(?:"[^"]*"|[^,]*),?\s*)+)/g,n=/(\w+)="([^"]*)"/g,r=[],i;for(;(i=t.exec(e))!==null;){let e=i[1],t=i[2],a={},o;for(;(o=n.exec(t))!==null;)a[o[1]]=o[2];r.push({scheme:e,params:a})}return r}function u(e){if(e)return l(e).find(e=>e.scheme===`Bearer`&&e.params.claims&&e.params.error===`insufficient_claims`)?.params.claims}})),Bo=b((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.ndJsonPolicyName=void 0,e.ndJsonPolicy=t,e.ndJsonPolicyName=`ndJsonPolicy`;function t(){return{name:e.ndJsonPolicyName,async sendRequest(e,t){if(typeof e.body==`string`&&e.body.startsWith(`[`)){let t=JSON.parse(e.body);Array.isArray(t)&&(e.body=t.map(e=>JSON.stringify(e)+` +`).join(``))}return t(e)}}}})),Vo=b((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.auxiliaryAuthenticationHeaderPolicyName=void 0,e.auxiliaryAuthenticationHeaderPolicy=a;let t=Ro(),n=Wa();e.auxiliaryAuthenticationHeaderPolicyName=`auxiliaryAuthenticationHeaderPolicy`;let r=`x-ms-authorization-auxiliary`;async function i(e){let{scopes:t,getAccessToken:n,request:r}=e;return(await n(t,{abortSignal:r.abortSignal,tracingOptions:r.tracingOptions}))?.token??``}function a(a){let{credentials:o,scopes:s}=a,c=a.logger||n.logger,l=new WeakMap;return{name:e.auxiliaryAuthenticationHeaderPolicyName,async sendRequest(n,a){if(!n.url.toLowerCase().startsWith(`https://`))throw Error(`Bearer token authentication for auxiliary header is not permitted for non-TLS protected (non-https) URLs.`);if(!o||o.length===0)return c.info(`${e.auxiliaryAuthenticationHeaderPolicyName} header will not be set due to empty credentials.`),a(n);let u=[];for(let e of o){let r=l.get(e);r||(r=(0,t.createTokenCycler)(e),l.set(e,r)),u.push(i({scopes:Array.isArray(s)?s:[s],request:n,getAccessToken:r,logger:c}))}let d=(await Promise.all(u)).filter(e=>!!e);return d.length===0?(c.warning(`None of the auxiliary tokens are valid. ${r} header will not be set.`),a(n)):(n.headers.set(r,d.map(e=>`Bearer ${e}`).join(`, `)),a(n))}}}})),Ho=b((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.createFileFromStream=e.createFile=e.agentPolicyName=e.agentPolicy=e.auxiliaryAuthenticationHeaderPolicyName=e.auxiliaryAuthenticationHeaderPolicy=e.ndJsonPolicyName=e.ndJsonPolicy=e.bearerTokenAuthenticationPolicyName=e.bearerTokenAuthenticationPolicy=e.formDataPolicyName=e.formDataPolicy=e.tlsPolicyName=e.tlsPolicy=e.userAgentPolicyName=e.userAgentPolicy=e.defaultRetryPolicy=e.tracingPolicyName=e.tracingPolicy=e.retryPolicy=e.throttlingRetryPolicyName=e.throttlingRetryPolicy=e.systemErrorRetryPolicyName=e.systemErrorRetryPolicy=e.redirectPolicyName=e.redirectPolicy=e.getDefaultProxySettings=e.proxyPolicyName=e.proxyPolicy=e.multipartPolicyName=e.multipartPolicy=e.logPolicyName=e.logPolicy=e.setClientRequestIdPolicyName=e.setClientRequestIdPolicy=e.exponentialRetryPolicyName=e.exponentialRetryPolicy=e.decompressResponsePolicyName=e.decompressResponsePolicy=e.isRestError=e.RestError=e.createPipelineRequest=e.createHttpHeaders=e.createDefaultHttpClient=e.createPipelineFromOptions=e.createEmptyPipeline=void 0;var t=Va();Object.defineProperty(e,`createEmptyPipeline`,{enumerable:!0,get:function(){return t.createEmptyPipeline}});var n=Ao();Object.defineProperty(e,`createPipelineFromOptions`,{enumerable:!0,get:function(){return n.createPipelineFromOptions}});var r=jo();Object.defineProperty(e,`createDefaultHttpClient`,{enumerable:!0,get:function(){return r.createDefaultHttpClient}});var i=Mo();Object.defineProperty(e,`createHttpHeaders`,{enumerable:!0,get:function(){return i.createHttpHeaders}});var a=No();Object.defineProperty(e,`createPipelineRequest`,{enumerable:!0,get:function(){return a.createPipelineRequest}});var o=Eo();Object.defineProperty(e,`RestError`,{enumerable:!0,get:function(){return o.RestError}}),Object.defineProperty(e,`isRestError`,{enumerable:!0,get:function(){return o.isRestError}});var s=mo();Object.defineProperty(e,`decompressResponsePolicy`,{enumerable:!0,get:function(){return s.decompressResponsePolicy}}),Object.defineProperty(e,`decompressResponsePolicyName`,{enumerable:!0,get:function(){return s.decompressResponsePolicyName}});var c=Po();Object.defineProperty(e,`exponentialRetryPolicy`,{enumerable:!0,get:function(){return c.exponentialRetryPolicy}}),Object.defineProperty(e,`exponentialRetryPolicyName`,{enumerable:!0,get:function(){return c.exponentialRetryPolicyName}});var l=vo();Object.defineProperty(e,`setClientRequestIdPolicy`,{enumerable:!0,get:function(){return l.setClientRequestIdPolicy}}),Object.defineProperty(e,`setClientRequestIdPolicyName`,{enumerable:!0,get:function(){return l.setClientRequestIdPolicyName}});var u=Ya();Object.defineProperty(e,`logPolicy`,{enumerable:!0,get:function(){return u.logPolicy}}),Object.defineProperty(e,`logPolicyName`,{enumerable:!0,get:function(){return u.logPolicyName}});var d=po();Object.defineProperty(e,`multipartPolicy`,{enumerable:!0,get:function(){return d.multipartPolicy}}),Object.defineProperty(e,`multipartPolicyName`,{enumerable:!0,get:function(){return d.multipartPolicyName}});var f=_o();Object.defineProperty(e,`proxyPolicy`,{enumerable:!0,get:function(){return f.proxyPolicy}}),Object.defineProperty(e,`proxyPolicyName`,{enumerable:!0,get:function(){return f.proxyPolicyName}}),Object.defineProperty(e,`getDefaultProxySettings`,{enumerable:!0,get:function(){return f.getDefaultProxySettings}});var p=Xa();Object.defineProperty(e,`redirectPolicy`,{enumerable:!0,get:function(){return p.redirectPolicy}}),Object.defineProperty(e,`redirectPolicyName`,{enumerable:!0,get:function(){return p.redirectPolicyName}});var m=Fo();Object.defineProperty(e,`systemErrorRetryPolicy`,{enumerable:!0,get:function(){return m.systemErrorRetryPolicy}}),Object.defineProperty(e,`systemErrorRetryPolicyName`,{enumerable:!0,get:function(){return m.systemErrorRetryPolicyName}});var h=Io();Object.defineProperty(e,`throttlingRetryPolicy`,{enumerable:!0,get:function(){return h.throttlingRetryPolicy}}),Object.defineProperty(e,`throttlingRetryPolicyName`,{enumerable:!0,get:function(){return h.throttlingRetryPolicyName}});var g=Lo();Object.defineProperty(e,`retryPolicy`,{enumerable:!0,get:function(){return g.retryPolicy}});var _=Do();Object.defineProperty(e,`tracingPolicy`,{enumerable:!0,get:function(){return _.tracingPolicy}}),Object.defineProperty(e,`tracingPolicyName`,{enumerable:!0,get:function(){return _.tracingPolicyName}});var v=ho();Object.defineProperty(e,`defaultRetryPolicy`,{enumerable:!0,get:function(){return v.defaultRetryPolicy}});var y=eo();Object.defineProperty(e,`userAgentPolicy`,{enumerable:!0,get:function(){return y.userAgentPolicy}}),Object.defineProperty(e,`userAgentPolicyName`,{enumerable:!0,get:function(){return y.userAgentPolicyName}});var b=bo();Object.defineProperty(e,`tlsPolicy`,{enumerable:!0,get:function(){return b.tlsPolicy}}),Object.defineProperty(e,`tlsPolicyName`,{enumerable:!0,get:function(){return b.tlsPolicyName}});var x=go();Object.defineProperty(e,`formDataPolicy`,{enumerable:!0,get:function(){return x.formDataPolicy}}),Object.defineProperty(e,`formDataPolicyName`,{enumerable:!0,get:function(){return x.formDataPolicyName}});var S=zo();Object.defineProperty(e,`bearerTokenAuthenticationPolicy`,{enumerable:!0,get:function(){return S.bearerTokenAuthenticationPolicy}}),Object.defineProperty(e,`bearerTokenAuthenticationPolicyName`,{enumerable:!0,get:function(){return S.bearerTokenAuthenticationPolicyName}});var C=Bo();Object.defineProperty(e,`ndJsonPolicy`,{enumerable:!0,get:function(){return C.ndJsonPolicy}}),Object.defineProperty(e,`ndJsonPolicyName`,{enumerable:!0,get:function(){return C.ndJsonPolicyName}});var w=Vo();Object.defineProperty(e,`auxiliaryAuthenticationHeaderPolicy`,{enumerable:!0,get:function(){return w.auxiliaryAuthenticationHeaderPolicy}}),Object.defineProperty(e,`auxiliaryAuthenticationHeaderPolicyName`,{enumerable:!0,get:function(){return w.auxiliaryAuthenticationHeaderPolicyName}});var T=yo();Object.defineProperty(e,`agentPolicy`,{enumerable:!0,get:function(){return T.agentPolicy}}),Object.defineProperty(e,`agentPolicyName`,{enumerable:!0,get:function(){return T.agentPolicyName}});var E=fo();Object.defineProperty(e,`createFile`,{enumerable:!0,get:function(){return E.createFile}}),Object.defineProperty(e,`createFileFromStream`,{enumerable:!0,get:function(){return E.createFileFromStream}})})),Uo=b((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.state=void 0,e.state={operationRequestMap:new WeakMap}})),Wo=b((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.getOperationArgumentValueFromParameter=n,e.getOperationRequestInfo=o;let t=Uo();function n(e,t,i){let a=t.parameterPath,o=t.mapper,s;if(typeof a==`string`&&(a=[a]),Array.isArray(a)){if(a.length>0)if(o.isConstant)s=o.defaultValue;else{let t=r(e,a);!t.propertyFound&&i&&(t=r(i,a));let n=!1;t.propertyFound||(n=o.required||a[0]===`options`&&a.length===2),s=n?o.defaultValue:t.propertyValue}}else for(let t in o.required&&(s={}),a){let r=o.type.modelProperties[t],c=a[t],l=n(e,{parameterPath:c,mapper:r},i);l!==void 0&&(s||={},s[t]=l)}return s}function r(e,t){let n={propertyFound:!1},r=0;for(;r{Object.defineProperty(e,`__esModule`,{value:!0}),e.deserializationPolicyName=void 0,e.deserializationPolicy=s;let t=Ci(),n=Ho(),r=Ti(),i=Wo(),a=[`application/json`,`text/json`],o=[`application/xml`,`application/atom+xml`];e.deserializationPolicyName=`deserializationPolicy`;function s(n={}){let r=n.expectedContentTypes?.json??a,i=n.expectedContentTypes?.xml??o,s=n.parseXML,c=n.serializerOptions,l={xml:{rootName:c?.xml.rootName??``,includeRoot:c?.xml.includeRoot??!1,xmlCharKey:c?.xml.xmlCharKey??t.XML_CHARKEY}};return{name:e.deserializationPolicyName,async sendRequest(e,t){return u(r,i,await t(e),l,s)}}}function c(e){let t,n=e.request,r=(0,i.getOperationRequestInfo)(n),a=r?.operationSpec;return a&&(t=r?.operationResponseGetter?r?.operationResponseGetter(a,e):a.responses[e.status]),t}function l(e){let t=e.request,n=(0,i.getOperationRequestInfo)(t)?.shouldDeserialize,r;return r=n===void 0?!0:typeof n==`boolean`?n:n(e),r}async function u(e,t,a,o,s){let u=await p(e,t,a,o,s);if(!l(u))return u;let d=(0,i.getOperationRequestInfo)(u.request)?.operationSpec;if(!d||!d.responses)return u;let m=c(u),{error:h,shouldReturnResponse:g}=f(u,d,m,o);if(h)throw h;if(g)return u;if(m){if(m.bodyMapper){let e=u.parsedBody;d.isXML&&m.bodyMapper.type.name===r.MapperTypeNames.Sequence&&(e=typeof e==`object`?e[m.bodyMapper.xmlElementName]:[]);try{u.parsedBody=d.serializer.deserialize(m.bodyMapper,e,`operationRes.parsedBody`,o)}catch(e){throw new n.RestError(`Error ${e} occurred in deserializing the responseBody - ${u.bodyAsText}`,{statusCode:u.status,request:u.request,response:u})}}else d.httpMethod===`HEAD`&&(u.parsedBody=a.status>=200&&a.status<300);m.headersMapper&&(u.parsedHeaders=d.serializer.deserialize(m.headersMapper,u.headers.toJSON(),`operationRes.parsedHeaders`,{xml:{},ignoreUnknownProperties:!0}))}return u}function d(e){let t=Object.keys(e.responses);return t.length===0||t.length===1&&t[0]===`default`}function f(e,t,i,a){let o=200<=e.status&&e.status<300;if(d(t)?o:i)if(i){if(!i.isError)return{error:null,shouldReturnResponse:!1}}else return{error:null,shouldReturnResponse:!1};let s=i??t.responses.default,c=e.request.streamResponseStatusCodes?.has(e.status)?`Unexpected status code: ${e.status}`:e.bodyAsText,l=new n.RestError(c,{statusCode:e.status,request:e.request,response:e});if(!s&&!(e.parsedBody?.error?.code&&e.parsedBody?.error?.message))throw l;let u=s?.bodyMapper,f=s?.headersMapper;try{if(e.parsedBody){let n=e.parsedBody,i;if(u){let e=n;if(t.isXML&&u.type.name===r.MapperTypeNames.Sequence){e=[];let t=u.xmlElementName;typeof n==`object`&&t&&(e=n[t])}i=t.serializer.deserialize(u,e,`error.response.parsedBody`,a)}let o=n.error||i||n;l.code=o.code,o.message&&(l.message=o.message),u&&(l.response.parsedBody=i)}e.headers&&f&&(l.response.parsedHeaders=t.serializer.deserialize(f,e.headers.toJSON(),`operationRes.parsedHeaders`))}catch(t){l.message=`Error "${t.message}" occurred in deserializing the responseBody - "${e.bodyAsText}" for the default response.`}return{error:l,shouldReturnResponse:!1}}async function p(e,t,r,i,a){if(!r.request.streamResponseStatusCodes?.has(r.status)&&r.bodyAsText){let o=r.bodyAsText,s=r.headers.get(`Content-Type`)||``,c=s?s.split(`;`).map(e=>e.toLowerCase()):[];try{if(c.length===0||c.some(t=>e.indexOf(t)!==-1))return r.parsedBody=JSON.parse(o),r;if(c.some(e=>t.indexOf(e)!==-1)){if(!a)throw Error(`Parsing XML not supported.`);return r.parsedBody=await a(o,i.xml),r}}catch(e){let t=`Error "${e}" occurred while parsing the response body - ${r.bodyAsText}.`,i=e.code||n.RestError.PARSE_ERROR;throw new n.RestError(t,{code:i,statusCode:r.status,request:r.request,response:r})}}return r}})),Ko=b((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.getStreamingResponseStatusCodes=n,e.getPathStringFromParameter=r;let t=Ti();function n(e){let n=new Set;for(let r in e.responses){let i=e.responses[r];i.bodyMapper&&i.bodyMapper.type.name===t.MapperTypeNames.Stream&&n.add(Number(r))}return n}function r(e){let{parameterPath:t,mapper:n}=e,r;return r=typeof t==`string`?t:Array.isArray(t)?t.join(`.`):n.serializedName,r}})),qo=b((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.serializationPolicyName=void 0,e.serializationPolicy=a,e.serializeHeaders=o,e.serializeRequestBody=s;let t=Ci(),n=Wo(),r=Ti(),i=Ko();e.serializationPolicyName=`serializationPolicy`;function a(t={}){let r=t.stringifyXML;return{name:e.serializationPolicyName,async sendRequest(e,t){let i=(0,n.getOperationRequestInfo)(e),a=i?.operationSpec,c=i?.operationArguments;return a&&c&&(o(e,c,a),s(e,c,a,r)),t(e)}}}function o(e,t,r){if(r.headerParameters)for(let a of r.headerParameters){let o=(0,n.getOperationArgumentValueFromParameter)(t,a);if(o!=null||a.mapper.required){o=r.serializer.serialize(a.mapper,o,(0,i.getPathStringFromParameter)(a));let t=a.mapper.headerCollectionPrefix;if(t)for(let n of Object.keys(o))e.headers.set(t+n,o[n]);else e.headers.set(a.mapper.serializedName||(0,i.getPathStringFromParameter)(a),o)}}let a=t.options?.requestOptions?.customHeaders;if(a)for(let t of Object.keys(a))e.headers.set(t,a[t])}function s(e,a,o,s=function(){throw Error(`XML serialization unsupported!`)}){let u=a.options?.serializerOptions,d={xml:{rootName:u?.xml.rootName??``,includeRoot:u?.xml.includeRoot??!1,xmlCharKey:u?.xml.xmlCharKey??t.XML_CHARKEY}},f=d.xml.xmlCharKey;if(o.requestBody&&o.requestBody.mapper){e.body=(0,n.getOperationArgumentValueFromParameter)(a,o.requestBody);let t=o.requestBody.mapper,{required:u,serializedName:p,xmlName:m,xmlElementName:h,xmlNamespace:g,xmlNamespacePrefix:_,nullable:v}=t,y=t.type.name;try{if(e.body!==void 0&&e.body!==null||v&&e.body===null||u){let n=(0,i.getPathStringFromParameter)(o.requestBody);e.body=o.serializer.serialize(t,e.body,n,d);let a=y===r.MapperTypeNames.Stream;if(o.isXML){let t=_?`xmlns:${_}`:`xmlns`,n=c(g,t,y,e.body,d);y===r.MapperTypeNames.Sequence?e.body=s(l(n,h||m||p,t,g),{rootName:m||p,xmlCharKey:f}):a||(e.body=s(n,{rootName:m||p,xmlCharKey:f}))}else if(y===r.MapperTypeNames.String&&(o.contentType?.match(`text/plain`)||o.mediaType===`text`))return;else a||(e.body=JSON.stringify(e.body))}}catch(e){throw Error(`Error "${e.message}" occurred in serializing the payload - ${JSON.stringify(p,void 0,` `)}.`)}}else if(o.formDataParameters&&o.formDataParameters.length>0){e.formData={};for(let t of o.formDataParameters){let r=(0,n.getOperationArgumentValueFromParameter)(a,t);if(r!=null){let n=t.mapper.serializedName||(0,i.getPathStringFromParameter)(t);e.formData[n]=o.serializer.serialize(t.mapper,r,(0,i.getPathStringFromParameter)(t),d)}}}}function c(e,n,r,i,a){if(e&&![`Composite`,`Sequence`,`Dictionary`].includes(r)){let r={};return r[a.xml.xmlCharKey]=i,r[t.XML_ATTRKEY]={[n]:e},r}return i}function l(e,n,r,i){if(Array.isArray(e)||(e=[e]),!r||!i)return{[n]:e};let a={[n]:e};return a[t.XML_ATTRKEY]={[r]:i},a}})),Jo=b((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.createClientPipeline=i;let t=Go(),n=Ho(),r=qo();function i(e={}){let i=(0,n.createPipelineFromOptions)(e??{});return e.credentialOptions&&i.addPolicy((0,n.bearerTokenAuthenticationPolicy)({credential:e.credentialOptions.credential,scopes:e.credentialOptions.credentialScopes})),i.addPolicy((0,r.serializationPolicy)(e.serializationOptions),{phase:`Serialize`}),i.addPolicy((0,t.deserializationPolicy)(e.deserializationOptions),{phase:`Deserialize`}),i}})),Yo=b((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.getCachedDefaultHttpClient=r;let t=Ho(),n;function r(){return n||=(0,t.createDefaultHttpClient)(),n}})),Xo=b((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.getRequestUrl=i,e.appendQueryParams=d;let t=Wo(),n=Ko(),r={CSV:`,`,SSV:` `,Multi:`Multi`,TSV:` `,Pipes:`|`};function i(e,t,n,r){let i=o(t,n,r),u=!1,f=a(e,i);if(t.path){let e=a(t.path,i);t.path===`/{nextLink}`&&e.startsWith(`/`)&&(e=e.substring(1)),s(e)?(f=e,u=!0):f=c(f,e)}let{queryParams:p,sequenceParams:m}=l(t,n,r);return f=d(f,p,m,u),f}function a(e,t){let n=e;for(let[e,r]of t)n=n.split(e).join(r);return n}function o(e,r,i){let a=new Map;if(e.urlParameters?.length)for(let o of e.urlParameters){let s=(0,t.getOperationArgumentValueFromParameter)(r,o,i),c=(0,n.getPathStringFromParameter)(o);s=e.serializer.serialize(o.mapper,s,c),o.skipEncoding||(s=encodeURIComponent(s)),a.set(`{${o.mapper.serializedName||c}}`,s)}return a}function s(e){return e.includes(`://`)}function c(e,t){if(!t)return e;let n=new URL(e),r=n.pathname;r.endsWith(`/`)||(r=`${r}/`),t.startsWith(`/`)&&(t=t.substring(1));let i=t.indexOf(`?`);if(i!==-1){let e=t.substring(0,i),a=t.substring(i+1);r+=e,a&&(n.search=n.search?`${n.search}&${a}`:a)}else r+=t;return n.pathname=r,n.toString()}function l(e,i,a){let o=new Map,s=new Set;if(e.queryParameters?.length)for(let c of e.queryParameters){c.mapper.type.name===`Sequence`&&c.mapper.serializedName&&s.add(c.mapper.serializedName);let l=(0,t.getOperationArgumentValueFromParameter)(i,c,a);if(l!=null||c.mapper.required){l=e.serializer.serialize(c.mapper,l,(0,n.getPathStringFromParameter)(c));let t=c.collectionFormat?r[c.collectionFormat]:``;if(Array.isArray(l)&&(l=l.map(e=>e??``)),c.collectionFormat===`Multi`&&l.length===0)continue;Array.isArray(l)&&(c.collectionFormat===`SSV`||c.collectionFormat===`TSV`)&&(l=l.join(t)),c.skipEncoding||(l=Array.isArray(l)?l.map(e=>encodeURIComponent(e)):encodeURIComponent(l)),Array.isArray(l)&&(c.collectionFormat===`CSV`||c.collectionFormat===`Pipes`)&&(l=l.join(t)),o.set(c.mapper.serializedName||(0,n.getPathStringFromParameter)(c),l)}}return{queryParams:o,sequenceParams:s}}function u(e){let t=new Map;if(!e||e[0]!==`?`)return t;e=e.slice(1);let n=e.split(`&`);for(let e of n){let[n,r]=e.split(`=`,2),i=t.get(n);i?Array.isArray(i)?i.push(r):t.set(n,[i,r]):t.set(n,r)}return t}function d(e,t,n,r=!1){if(t.size===0)return e;let i=new URL(e),a=u(i.search);for(let[e,i]of t){let t=a.get(e);if(Array.isArray(t))if(Array.isArray(i)){t.push(...i);let n=new Set(t);a.set(e,Array.from(n))}else t.push(i);else t?(Array.isArray(i)?i.unshift(t):n.has(e)&&a.set(e,[t,i]),r||a.set(e,i)):a.set(e,i)}let o=[];for(let[e,t]of a)if(typeof t==`string`)o.push(`${e}=${t}`);else if(Array.isArray(t))for(let n of t)o.push(`${e}=${n}`);else o.push(`${e}=${t}`);return i.search=o.length?`?${o.join(`&`)}`:``,i.toString()}})),Zo=b((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.logger=void 0,e.logger=(0,Ua().createClientLogger)(`core-client`)})),Qo=b((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.ServiceClient=void 0;let t=Ho(),n=Jo(),r=wi(),i=Yo(),a=Wo(),o=Xo(),s=Ko(),c=Zo();e.ServiceClient=class{constructor(e={}){if(this._requestContentType=e.requestContentType,this._endpoint=e.endpoint??e.baseUri,e.baseUri&&c.logger.warning(`The baseUri option for SDK Clients has been deprecated, please use endpoint instead.`),this._allowInsecureConnection=e.allowInsecureConnection,this._httpClient=e.httpClient||(0,i.getCachedDefaultHttpClient)(),this.pipeline=e.pipeline||l(e),e.additionalPolicies?.length)for(let{policy:t,position:n}of e.additionalPolicies){let e=n===`perRetry`?`Sign`:void 0;this.pipeline.addPolicy(t,{afterPhase:e})}}async sendRequest(e){return this.pipeline.sendRequest(this._httpClient,e)}async sendOperationRequest(e,n){let i=n.baseUrl||this._endpoint;if(!i)throw Error(`If operationSpec.baseUrl is not specified, then the ServiceClient must have a endpoint string property that contains the base URL to use.`);let c=(0,o.getRequestUrl)(i,n,e,this),l=(0,t.createPipelineRequest)({url:c});l.method=n.httpMethod;let u=(0,a.getOperationRequestInfo)(l);u.operationSpec=n,u.operationArguments=e;let d=n.contentType||this._requestContentType;d&&n.requestBody&&l.headers.set(`Content-Type`,d);let f=e.options;if(f){let e=f.requestOptions;e&&(e.timeout&&(l.timeout=e.timeout),e.onUploadProgress&&(l.onUploadProgress=e.onUploadProgress),e.onDownloadProgress&&(l.onDownloadProgress=e.onDownloadProgress),e.shouldDeserialize!==void 0&&(u.shouldDeserialize=e.shouldDeserialize),e.allowInsecureConnection&&(l.allowInsecureConnection=!0)),f.abortSignal&&(l.abortSignal=f.abortSignal),f.tracingOptions&&(l.tracingOptions=f.tracingOptions)}this._allowInsecureConnection&&(l.allowInsecureConnection=!0),l.streamResponseStatusCodes===void 0&&(l.streamResponseStatusCodes=(0,s.getStreamingResponseStatusCodes)(n));try{let e=await this.sendRequest(l),t=(0,r.flattenResponse)(e,n.responses[e.status]);return f?.onResponse&&f.onResponse(e,t),t}catch(e){if(typeof e==`object`&&e?.response){let t=e.response,i=(0,r.flattenResponse)(t,n.responses[e.statusCode]||n.responses.default);e.details=i,f?.onResponse&&f.onResponse(t,i,e)}throw e}}};function l(e){let t=u(e),r=e.credential&&t?{credentialScopes:t,credential:e.credential}:void 0;return(0,n.createClientPipeline)({...e,credentialOptions:r})}function u(e){if(e.credentialScopes)return e.credentialScopes;if(e.endpoint)return`${e.endpoint}/.default`;if(e.baseUri)return`${e.baseUri}/.default`;if(e.credential&&!e.credentialScopes)throw Error(`When using credentials, the ServiceClientOptions must contain either a endpoint or a credentialScopes. Unable to create a bearerTokenAuthenticationPolicy`)}})),$o=b((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.parseCAEChallenge=r,e.authorizeRequestOnClaimChallenge=i;let t=Zo(),n=Si();function r(e){return`, ${e.trim()}`.split(`, Bearer `).filter(e=>e).map(e=>`${e.trim()}, `.split(`", `).filter(e=>e).map(e=>(([e,t])=>({[e]:t}))(e.trim().split(`="`))).reduce((e,t)=>({...e,...t}),{}))}async function i(e){let{scopes:i,response:a}=e,o=e.logger||t.logger,s=a.headers.get(`WWW-Authenticate`);if(!s)return o.info(`The WWW-Authenticate header was missing. Failed to perform the Continuous Access Evaluation authentication flow.`),!1;let c=(r(s)||[]).find(e=>e.claims);if(!c)return o.info(`The WWW-Authenticate header was missing the necessary "claims" to perform the Continuous Access Evaluation authentication flow.`),!1;let l=await e.getAccessToken(c.scope?[c.scope]:i,{claims:(0,n.decodeStringToString)(c.claims)});return l?(e.request.headers.set(`Authorization`,`${l.tokenType??`Bearer`} ${l.token}`),!0):!1}})),es=b((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.authorizeRequestOnTenantChallenge=void 0;let t={DefaultScope:`/.default`,HeaderConstants:{AUTHORIZATION:`authorization`}};function n(e){return/^[0-9a-fA-F]{8}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{12}$/.test(e)}e.authorizeRequestOnTenantChallenge=async e=>{let n=s(e.request),c=a(e.response);if(c){let a=o(c),s=i(e,a),l=r(a);if(!l)return!1;let u=await e.getAccessToken(s,{...n,tenantId:l});return u?(e.request.headers.set(t.HeaderConstants.AUTHORIZATION,`${u.tokenType??`Bearer`} ${u.token}`),!0):!1}return!1};function r(e){let t=new URL(e.authorization_uri).pathname.split(`/`)[1];if(t&&n(t))return t}function i(e,n){if(!n.resource_id)return e.scopes;let r=new URL(n.resource_id);r.pathname=t.DefaultScope;let i=r.toString();return i===`https://disk.azure.com/.default`&&(i=`https://disk.azure.com//.default`),[i]}function a(e){let t=e.headers.get(`WWW-Authenticate`);if(e.status===401&&t)return t}function o(e){return`${e.slice(7).trim()} `.split(` `).filter(e=>e).map(e=>(([e,t])=>({[e]:t}))(e.trim().split(`=`))).reduce((e,t)=>({...e,...t}),{})}function s(e){return{abortSignal:e.abortSignal,requestOptions:{timeout:e.timeout},tracingOptions:e.tracingOptions}}})),ts=b((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.authorizeRequestOnTenantChallenge=e.authorizeRequestOnClaimChallenge=e.serializationPolicyName=e.serializationPolicy=e.deserializationPolicyName=e.deserializationPolicy=e.XML_CHARKEY=e.XML_ATTRKEY=e.createClientPipeline=e.ServiceClient=e.MapperTypeNames=e.createSerializer=void 0;var t=Ti();Object.defineProperty(e,`createSerializer`,{enumerable:!0,get:function(){return t.createSerializer}}),Object.defineProperty(e,`MapperTypeNames`,{enumerable:!0,get:function(){return t.MapperTypeNames}});var n=Qo();Object.defineProperty(e,`ServiceClient`,{enumerable:!0,get:function(){return n.ServiceClient}});var r=Jo();Object.defineProperty(e,`createClientPipeline`,{enumerable:!0,get:function(){return r.createClientPipeline}});var i=Ci();Object.defineProperty(e,`XML_ATTRKEY`,{enumerable:!0,get:function(){return i.XML_ATTRKEY}}),Object.defineProperty(e,`XML_CHARKEY`,{enumerable:!0,get:function(){return i.XML_CHARKEY}});var a=Go();Object.defineProperty(e,`deserializationPolicy`,{enumerable:!0,get:function(){return a.deserializationPolicy}}),Object.defineProperty(e,`deserializationPolicyName`,{enumerable:!0,get:function(){return a.deserializationPolicyName}});var o=qo();Object.defineProperty(e,`serializationPolicy`,{enumerable:!0,get:function(){return o.serializationPolicy}}),Object.defineProperty(e,`serializationPolicyName`,{enumerable:!0,get:function(){return o.serializationPolicyName}});var s=$o();Object.defineProperty(e,`authorizeRequestOnClaimChallenge`,{enumerable:!0,get:function(){return s.authorizeRequestOnClaimChallenge}});var c=es();Object.defineProperty(e,`authorizeRequestOnTenantChallenge`,{enumerable:!0,get:function(){return c.authorizeRequestOnTenantChallenge}})})),ns=b((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.ProviderConsentDefinition=e.ProviderRegistrationRequest=e.Permission=e.RoleDefinition=e.ProviderPermission=e.ProviderPermissionListResult=e.DeploymentWhatIf=e.WhatIfPropertyChange=e.WhatIfChange=e.WhatIfOperationResult=e.DeploymentWhatIfSettings=e.ScopedDeploymentWhatIf=e.ScopedDeployment=e.DeploymentListResult=e.DeploymentExportResult=e.DeploymentValidateResult=e.DeploymentDiagnosticsDefinition=e.ResourceReference=e.OnErrorDeploymentExtended=e.DeploymentExtensionDefinition=e.BasicDependency=e.Dependency=e.ApiProfile=e.ZoneMapping=e.AliasPathMetadata=e.AliasPattern=e.AliasPath=e.Alias=e.ProviderExtendedLocation=e.ProviderResourceType=e.Provider=e.DeploymentPropertiesExtended=e.DeploymentExtended=e.ExpressionEvaluationOptions=e.OnErrorDeployment=e.DebugSetting=e.DeploymentExtensionConfigItem=e.ParametersLink=e.KeyVaultReference=e.KeyVaultParameterReference=e.DeploymentParameter=e.TemplateLink=e.DeploymentProperties=e.Deployment=e.ErrorAdditionalInfo=e.ErrorResponse=e.CloudError=e.OperationDisplay=e.Operation=e.OperationListResult=void 0,e.TagsDeleteAtScopeHeaders=e.TagsUpdateAtScopeHeaders=e.TagsCreateOrUpdateAtScopeHeaders=e.ResourceGroupsDeleteHeaders=e.DeploymentsWhatIfHeaders=e.DeploymentsWhatIfAtSubscriptionScopeHeaders=e.DeploymentsWhatIfAtManagementGroupScopeHeaders=e.DeploymentsWhatIfAtTenantScopeHeaders=e.GenericResourceExpanded=e.GenericResource=e.DeploymentWhatIfProperties=e.SubResource=e.ResourceProviderOperationDisplayProperties=e.ResourceGroupFilter=e.GenericResourceFilter=e.DeploymentExtendedFilter=e.TagsPatchResource=e.Tags=e.TagsResource=e.TemplateHashResult=e.DeploymentOperationsListResult=e.HttpMessage=e.TargetResource=e.StatusMessage=e.DeploymentOperationProperties=e.DeploymentOperation=e.TagsListResult=e.TagDetails=e.TagCount=e.TagValue=e.ResourcesMoveInfo=e.ResourceGroupListResult=e.ResourceGroupExportResult=e.ExportTemplateRequest=e.ResourceGroupPatchable=e.ResourceGroupProperties=e.ResourceGroup=e.ExtendedLocation=e.Resource=e.IdentityUserAssignedIdentitiesValue=e.Identity=e.Sku=e.Plan=e.ResourceListResult=e.ProviderResourceTypeListResult=e.ProviderListResult=void 0,e.OperationListResult={type:{name:`Composite`,className:`OperationListResult`,modelProperties:{value:{serializedName:`value`,type:{name:`Sequence`,element:{type:{name:`Composite`,className:`Operation`}}}},nextLink:{serializedName:`nextLink`,type:{name:`String`}}}}},e.Operation={type:{name:`Composite`,className:`Operation`,modelProperties:{name:{serializedName:`name`,type:{name:`String`}},display:{serializedName:`display`,type:{name:`Composite`,className:`OperationDisplay`}}}}},e.OperationDisplay={type:{name:`Composite`,className:`OperationDisplay`,modelProperties:{provider:{serializedName:`provider`,type:{name:`String`}},resource:{serializedName:`resource`,type:{name:`String`}},operation:{serializedName:`operation`,type:{name:`String`}},description:{serializedName:`description`,type:{name:`String`}}}}},e.CloudError={type:{name:`Composite`,className:`CloudError`,modelProperties:{error:{serializedName:`error`,type:{name:`Composite`,className:`ErrorResponse`}}}}},e.ErrorResponse={type:{name:`Composite`,className:`ErrorResponse`,modelProperties:{code:{serializedName:`code`,readOnly:!0,type:{name:`String`}},message:{serializedName:`message`,readOnly:!0,type:{name:`String`}},target:{serializedName:`target`,readOnly:!0,type:{name:`String`}},details:{serializedName:`details`,readOnly:!0,type:{name:`Sequence`,element:{type:{name:`Composite`,className:`ErrorResponse`}}}},additionalInfo:{serializedName:`additionalInfo`,readOnly:!0,type:{name:`Sequence`,element:{type:{name:`Composite`,className:`ErrorAdditionalInfo`}}}}}}},e.ErrorAdditionalInfo={type:{name:`Composite`,className:`ErrorAdditionalInfo`,modelProperties:{type:{serializedName:`type`,readOnly:!0,type:{name:`String`}},info:{serializedName:`info`,readOnly:!0,type:{name:`Dictionary`,value:{type:{name:`any`}}}}}}},e.Deployment={type:{name:`Composite`,className:`Deployment`,modelProperties:{location:{serializedName:`location`,type:{name:`String`}},properties:{serializedName:`properties`,type:{name:`Composite`,className:`DeploymentProperties`}},tags:{serializedName:`tags`,type:{name:`Dictionary`,value:{type:{name:`String`}}}}}}},e.DeploymentProperties={type:{name:`Composite`,className:`DeploymentProperties`,modelProperties:{template:{serializedName:`template`,type:{name:`Dictionary`,value:{type:{name:`any`}}}},templateLink:{serializedName:`templateLink`,type:{name:`Composite`,className:`TemplateLink`}},parameters:{serializedName:`parameters`,type:{name:`Dictionary`,value:{type:{name:`Composite`,className:`DeploymentParameter`}}}},parametersLink:{serializedName:`parametersLink`,type:{name:`Composite`,className:`ParametersLink`}},extensionConfigs:{serializedName:`extensionConfigs`,type:{name:`Dictionary`,value:{type:{name:`Dictionary`,value:{type:{name:`Composite`,className:`DeploymentExtensionConfigItem`}}}}}},mode:{serializedName:`mode`,required:!0,type:{name:`Enum`,allowedValues:[`Incremental`,`Complete`]}},debugSetting:{serializedName:`debugSetting`,type:{name:`Composite`,className:`DebugSetting`}},onErrorDeployment:{serializedName:`onErrorDeployment`,type:{name:`Composite`,className:`OnErrorDeployment`}},expressionEvaluationOptions:{serializedName:`expressionEvaluationOptions`,type:{name:`Composite`,className:`ExpressionEvaluationOptions`}},validationLevel:{serializedName:`validationLevel`,type:{name:`String`}}}}},e.TemplateLink={type:{name:`Composite`,className:`TemplateLink`,modelProperties:{uri:{serializedName:`uri`,type:{name:`String`}},id:{serializedName:`id`,type:{name:`String`}},relativePath:{serializedName:`relativePath`,type:{name:`String`}},contentVersion:{serializedName:`contentVersion`,type:{name:`String`}},queryString:{serializedName:`queryString`,type:{name:`String`}}}}},e.DeploymentParameter={type:{name:`Composite`,className:`DeploymentParameter`,modelProperties:{value:{serializedName:`value`,type:{name:`any`}},reference:{serializedName:`reference`,type:{name:`Composite`,className:`KeyVaultParameterReference`}}}}},e.KeyVaultParameterReference={type:{name:`Composite`,className:`KeyVaultParameterReference`,modelProperties:{keyVault:{serializedName:`keyVault`,type:{name:`Composite`,className:`KeyVaultReference`}},secretName:{serializedName:`secretName`,required:!0,type:{name:`String`}},secretVersion:{serializedName:`secretVersion`,type:{name:`String`}}}}},e.KeyVaultReference={type:{name:`Composite`,className:`KeyVaultReference`,modelProperties:{id:{serializedName:`id`,required:!0,type:{name:`String`}}}}},e.ParametersLink={type:{name:`Composite`,className:`ParametersLink`,modelProperties:{uri:{serializedName:`uri`,required:!0,type:{name:`String`}},contentVersion:{serializedName:`contentVersion`,type:{name:`String`}}}}},e.DeploymentExtensionConfigItem={type:{name:`Composite`,className:`DeploymentExtensionConfigItem`,modelProperties:{type:{serializedName:`type`,readOnly:!0,type:{name:`String`}},value:{serializedName:`value`,type:{name:`any`}},keyVaultReference:{serializedName:`keyVaultReference`,type:{name:`Composite`,className:`KeyVaultParameterReference`}}}}},e.DebugSetting={type:{name:`Composite`,className:`DebugSetting`,modelProperties:{detailLevel:{serializedName:`detailLevel`,type:{name:`String`}}}}},e.OnErrorDeployment={type:{name:`Composite`,className:`OnErrorDeployment`,modelProperties:{type:{serializedName:`type`,type:{name:`Enum`,allowedValues:[`LastSuccessful`,`SpecificDeployment`]}},deploymentName:{serializedName:`deploymentName`,type:{name:`String`}}}}},e.ExpressionEvaluationOptions={type:{name:`Composite`,className:`ExpressionEvaluationOptions`,modelProperties:{scope:{serializedName:`scope`,type:{name:`String`}}}}},e.DeploymentExtended={type:{name:`Composite`,className:`DeploymentExtended`,modelProperties:{id:{serializedName:`id`,readOnly:!0,type:{name:`String`}},name:{serializedName:`name`,readOnly:!0,type:{name:`String`}},type:{serializedName:`type`,readOnly:!0,type:{name:`String`}},location:{serializedName:`location`,type:{name:`String`}},properties:{serializedName:`properties`,type:{name:`Composite`,className:`DeploymentPropertiesExtended`}},tags:{serializedName:`tags`,type:{name:`Dictionary`,value:{type:{name:`String`}}}}}}},e.DeploymentPropertiesExtended={type:{name:`Composite`,className:`DeploymentPropertiesExtended`,modelProperties:{provisioningState:{serializedName:`provisioningState`,readOnly:!0,type:{name:`String`}},correlationId:{serializedName:`correlationId`,readOnly:!0,type:{name:`String`}},timestamp:{serializedName:`timestamp`,readOnly:!0,type:{name:`DateTime`}},duration:{serializedName:`duration`,readOnly:!0,type:{name:`String`}},outputs:{serializedName:`outputs`,readOnly:!0,type:{name:`Dictionary`,value:{type:{name:`any`}}}},providers:{serializedName:`providers`,readOnly:!0,type:{name:`Sequence`,element:{type:{name:`Composite`,className:`Provider`}}}},dependencies:{serializedName:`dependencies`,readOnly:!0,type:{name:`Sequence`,element:{type:{name:`Composite`,className:`Dependency`}}}},templateLink:{serializedName:`templateLink`,type:{name:`Composite`,className:`TemplateLink`}},parameters:{serializedName:`parameters`,readOnly:!0,type:{name:`Dictionary`,value:{type:{name:`any`}}}},parametersLink:{serializedName:`parametersLink`,type:{name:`Composite`,className:`ParametersLink`}},extensions:{serializedName:`extensions`,readOnly:!0,type:{name:`Sequence`,element:{type:{name:`Composite`,className:`DeploymentExtensionDefinition`}}}},mode:{serializedName:`mode`,readOnly:!0,type:{name:`Enum`,allowedValues:[`Incremental`,`Complete`]}},debugSetting:{serializedName:`debugSetting`,type:{name:`Composite`,className:`DebugSetting`}},onErrorDeployment:{serializedName:`onErrorDeployment`,type:{name:`Composite`,className:`OnErrorDeploymentExtended`}},templateHash:{serializedName:`templateHash`,readOnly:!0,type:{name:`String`}},outputResources:{serializedName:`outputResources`,readOnly:!0,type:{name:`Sequence`,element:{type:{name:`Composite`,className:`ResourceReference`}}}},validatedResources:{serializedName:`validatedResources`,readOnly:!0,type:{name:`Sequence`,element:{type:{name:`Composite`,className:`ResourceReference`}}}},error:{serializedName:`error`,type:{name:`Composite`,className:`ErrorResponse`}},diagnostics:{serializedName:`diagnostics`,readOnly:!0,type:{name:`Sequence`,element:{type:{name:`Composite`,className:`DeploymentDiagnosticsDefinition`}}}},validationLevel:{serializedName:`validationLevel`,type:{name:`String`}}}}},e.Provider={type:{name:`Composite`,className:`Provider`,modelProperties:{id:{serializedName:`id`,readOnly:!0,type:{name:`String`}},namespace:{serializedName:`namespace`,type:{name:`String`}},registrationState:{serializedName:`registrationState`,readOnly:!0,type:{name:`String`}},registrationPolicy:{serializedName:`registrationPolicy`,readOnly:!0,type:{name:`String`}},resourceTypes:{serializedName:`resourceTypes`,readOnly:!0,type:{name:`Sequence`,element:{type:{name:`Composite`,className:`ProviderResourceType`}}}},providerAuthorizationConsentState:{serializedName:`providerAuthorizationConsentState`,type:{name:`String`}}}}},e.ProviderResourceType={type:{name:`Composite`,className:`ProviderResourceType`,modelProperties:{resourceType:{serializedName:`resourceType`,type:{name:`String`}},locations:{serializedName:`locations`,type:{name:`Sequence`,element:{type:{name:`String`}}}},locationMappings:{serializedName:`locationMappings`,type:{name:`Sequence`,element:{type:{name:`Composite`,className:`ProviderExtendedLocation`}}}},aliases:{serializedName:`aliases`,type:{name:`Sequence`,element:{type:{name:`Composite`,className:`Alias`}}}},apiVersions:{serializedName:`apiVersions`,type:{name:`Sequence`,element:{type:{name:`String`}}}},defaultApiVersion:{serializedName:`defaultApiVersion`,readOnly:!0,type:{name:`String`}},zoneMappings:{serializedName:`zoneMappings`,type:{name:`Sequence`,element:{type:{name:`Composite`,className:`ZoneMapping`}}}},apiProfiles:{serializedName:`apiProfiles`,readOnly:!0,type:{name:`Sequence`,element:{type:{name:`Composite`,className:`ApiProfile`}}}},capabilities:{serializedName:`capabilities`,type:{name:`String`}},properties:{serializedName:`properties`,type:{name:`Dictionary`,value:{type:{name:`String`}}}}}}},e.ProviderExtendedLocation={type:{name:`Composite`,className:`ProviderExtendedLocation`,modelProperties:{location:{serializedName:`location`,type:{name:`String`}},type:{serializedName:`type`,type:{name:`String`}},extendedLocations:{serializedName:`extendedLocations`,type:{name:`Sequence`,element:{type:{name:`String`}}}}}}},e.Alias={type:{name:`Composite`,className:`Alias`,modelProperties:{name:{serializedName:`name`,type:{name:`String`}},paths:{serializedName:`paths`,type:{name:`Sequence`,element:{type:{name:`Composite`,className:`AliasPath`}}}},type:{serializedName:`type`,type:{name:`Enum`,allowedValues:[`NotSpecified`,`PlainText`,`Mask`]}},defaultPath:{serializedName:`defaultPath`,type:{name:`String`}},defaultPattern:{serializedName:`defaultPattern`,type:{name:`Composite`,className:`AliasPattern`}},defaultMetadata:{serializedName:`defaultMetadata`,type:{name:`Composite`,className:`AliasPathMetadata`}}}}},e.AliasPath={type:{name:`Composite`,className:`AliasPath`,modelProperties:{path:{serializedName:`path`,type:{name:`String`}},apiVersions:{serializedName:`apiVersions`,type:{name:`Sequence`,element:{type:{name:`String`}}}},pattern:{serializedName:`pattern`,type:{name:`Composite`,className:`AliasPattern`}},metadata:{serializedName:`metadata`,type:{name:`Composite`,className:`AliasPathMetadata`}}}}},e.AliasPattern={type:{name:`Composite`,className:`AliasPattern`,modelProperties:{phrase:{serializedName:`phrase`,type:{name:`String`}},variable:{serializedName:`variable`,type:{name:`String`}},type:{serializedName:`type`,type:{name:`Enum`,allowedValues:[`NotSpecified`,`Extract`]}}}}},e.AliasPathMetadata={type:{name:`Composite`,className:`AliasPathMetadata`,modelProperties:{type:{serializedName:`type`,readOnly:!0,type:{name:`String`}},attributes:{serializedName:`attributes`,readOnly:!0,type:{name:`String`}}}}},e.ZoneMapping={type:{name:`Composite`,className:`ZoneMapping`,modelProperties:{location:{serializedName:`location`,type:{name:`String`}},zones:{serializedName:`zones`,type:{name:`Sequence`,element:{type:{name:`String`}}}}}}},e.ApiProfile={type:{name:`Composite`,className:`ApiProfile`,modelProperties:{profileVersion:{serializedName:`profileVersion`,readOnly:!0,type:{name:`String`}},apiVersion:{serializedName:`apiVersion`,readOnly:!0,type:{name:`String`}}}}},e.Dependency={type:{name:`Composite`,className:`Dependency`,modelProperties:{dependsOn:{serializedName:`dependsOn`,type:{name:`Sequence`,element:{type:{name:`Composite`,className:`BasicDependency`}}}},id:{serializedName:`id`,type:{name:`String`}},resourceType:{serializedName:`resourceType`,type:{name:`String`}},resourceName:{serializedName:`resourceName`,type:{name:`String`}}}}},e.BasicDependency={type:{name:`Composite`,className:`BasicDependency`,modelProperties:{id:{serializedName:`id`,type:{name:`String`}},resourceType:{serializedName:`resourceType`,type:{name:`String`}},resourceName:{serializedName:`resourceName`,type:{name:`String`}}}}},e.DeploymentExtensionDefinition={type:{name:`Composite`,className:`DeploymentExtensionDefinition`,modelProperties:{alias:{serializedName:`alias`,readOnly:!0,type:{name:`String`}},name:{serializedName:`name`,readOnly:!0,type:{name:`String`}},version:{serializedName:`version`,readOnly:!0,type:{name:`String`}},configId:{serializedName:`configId`,readOnly:!0,type:{name:`String`}},config:{serializedName:`config`,readOnly:!0,type:{name:`Dictionary`,value:{type:{name:`Composite`,className:`DeploymentExtensionConfigItem`}}}}}}},e.OnErrorDeploymentExtended={type:{name:`Composite`,className:`OnErrorDeploymentExtended`,modelProperties:{provisioningState:{serializedName:`provisioningState`,readOnly:!0,type:{name:`String`}},type:{serializedName:`type`,type:{name:`Enum`,allowedValues:[`LastSuccessful`,`SpecificDeployment`]}},deploymentName:{serializedName:`deploymentName`,type:{name:`String`}}}}},e.ResourceReference={type:{name:`Composite`,className:`ResourceReference`,modelProperties:{id:{serializedName:`id`,readOnly:!0,type:{name:`String`}},extension:{serializedName:`extension`,type:{name:`Composite`,className:`DeploymentExtensionDefinition`}},resourceType:{serializedName:`resourceType`,readOnly:!0,type:{name:`String`}},identifiers:{serializedName:`identifiers`,readOnly:!0,type:{name:`Dictionary`,value:{type:{name:`any`}}}},apiVersion:{serializedName:`apiVersion`,readOnly:!0,type:{name:`String`}}}}},e.DeploymentDiagnosticsDefinition={type:{name:`Composite`,className:`DeploymentDiagnosticsDefinition`,modelProperties:{level:{serializedName:`level`,required:!0,readOnly:!0,type:{name:`String`}},code:{serializedName:`code`,required:!0,readOnly:!0,type:{name:`String`}},message:{serializedName:`message`,required:!0,readOnly:!0,type:{name:`String`}},target:{serializedName:`target`,readOnly:!0,type:{name:`String`}},additionalInfo:{serializedName:`additionalInfo`,readOnly:!0,type:{name:`Sequence`,element:{type:{name:`Composite`,className:`ErrorAdditionalInfo`}}}}}}},e.DeploymentValidateResult={type:{name:`Composite`,className:`DeploymentValidateResult`,modelProperties:{error:{serializedName:`error`,type:{name:`Composite`,className:`ErrorResponse`}},id:{serializedName:`id`,readOnly:!0,type:{name:`String`}},name:{serializedName:`name`,readOnly:!0,type:{name:`String`}},type:{serializedName:`type`,readOnly:!0,type:{name:`String`}},properties:{serializedName:`properties`,type:{name:`Composite`,className:`DeploymentPropertiesExtended`}}}}},e.DeploymentExportResult={type:{name:`Composite`,className:`DeploymentExportResult`,modelProperties:{template:{serializedName:`template`,type:{name:`Dictionary`,value:{type:{name:`any`}}}}}}},e.DeploymentListResult={type:{name:`Composite`,className:`DeploymentListResult`,modelProperties:{value:{serializedName:`value`,type:{name:`Sequence`,element:{type:{name:`Composite`,className:`DeploymentExtended`}}}},nextLink:{serializedName:`nextLink`,readOnly:!0,type:{name:`String`}}}}},e.ScopedDeployment={type:{name:`Composite`,className:`ScopedDeployment`,modelProperties:{location:{serializedName:`location`,required:!0,type:{name:`String`}},properties:{serializedName:`properties`,type:{name:`Composite`,className:`DeploymentProperties`}},tags:{serializedName:`tags`,type:{name:`Dictionary`,value:{type:{name:`String`}}}}}}},e.ScopedDeploymentWhatIf={type:{name:`Composite`,className:`ScopedDeploymentWhatIf`,modelProperties:{location:{serializedName:`location`,required:!0,type:{name:`String`}},properties:{serializedName:`properties`,type:{name:`Composite`,className:`DeploymentWhatIfProperties`}}}}},e.DeploymentWhatIfSettings={type:{name:`Composite`,className:`DeploymentWhatIfSettings`,modelProperties:{resultFormat:{serializedName:`resultFormat`,type:{name:`Enum`,allowedValues:[`ResourceIdOnly`,`FullResourcePayloads`]}}}}},e.WhatIfOperationResult={type:{name:`Composite`,className:`WhatIfOperationResult`,modelProperties:{status:{serializedName:`status`,type:{name:`String`}},error:{serializedName:`error`,type:{name:`Composite`,className:`ErrorResponse`}},changes:{serializedName:`properties.changes`,type:{name:`Sequence`,element:{type:{name:`Composite`,className:`WhatIfChange`}}}},potentialChanges:{serializedName:`properties.potentialChanges`,type:{name:`Sequence`,element:{type:{name:`Composite`,className:`WhatIfChange`}}}},diagnostics:{serializedName:`properties.diagnostics`,readOnly:!0,type:{name:`Sequence`,element:{type:{name:`Composite`,className:`DeploymentDiagnosticsDefinition`}}}}}}},e.WhatIfChange={type:{name:`Composite`,className:`WhatIfChange`,modelProperties:{resourceId:{serializedName:`resourceId`,type:{name:`String`}},deploymentId:{serializedName:`deploymentId`,type:{name:`String`}},symbolicName:{serializedName:`symbolicName`,type:{name:`String`}},identifiers:{serializedName:`identifiers`,type:{name:`Dictionary`,value:{type:{name:`any`}}}},changeType:{serializedName:`changeType`,required:!0,type:{name:`Enum`,allowedValues:[`Create`,`Delete`,`Ignore`,`Deploy`,`NoChange`,`Modify`,`Unsupported`]}},unsupportedReason:{serializedName:`unsupportedReason`,type:{name:`String`}},before:{serializedName:`before`,type:{name:`Dictionary`,value:{type:{name:`any`}}}},after:{serializedName:`after`,type:{name:`Dictionary`,value:{type:{name:`any`}}}},delta:{serializedName:`delta`,type:{name:`Sequence`,element:{type:{name:`Composite`,className:`WhatIfPropertyChange`}}}}}}},e.WhatIfPropertyChange={type:{name:`Composite`,className:`WhatIfPropertyChange`,modelProperties:{path:{serializedName:`path`,required:!0,type:{name:`String`}},propertyChangeType:{serializedName:`propertyChangeType`,required:!0,type:{name:`Enum`,allowedValues:[`Create`,`Delete`,`Modify`,`Array`,`NoEffect`]}},before:{serializedName:`before`,type:{name:`Dictionary`,value:{type:{name:`any`}}}},after:{serializedName:`after`,type:{name:`Dictionary`,value:{type:{name:`any`}}}},children:{serializedName:`children`,type:{name:`Sequence`,element:{type:{name:`Composite`,className:`WhatIfPropertyChange`}}}}}}},e.DeploymentWhatIf={type:{name:`Composite`,className:`DeploymentWhatIf`,modelProperties:{location:{serializedName:`location`,type:{name:`String`}},properties:{serializedName:`properties`,type:{name:`Composite`,className:`DeploymentWhatIfProperties`}}}}},e.ProviderPermissionListResult={type:{name:`Composite`,className:`ProviderPermissionListResult`,modelProperties:{value:{serializedName:`value`,type:{name:`Sequence`,element:{type:{name:`Composite`,className:`ProviderPermission`}}}},nextLink:{serializedName:`nextLink`,readOnly:!0,type:{name:`String`}}}}},e.ProviderPermission={type:{name:`Composite`,className:`ProviderPermission`,modelProperties:{applicationId:{serializedName:`applicationId`,type:{name:`String`}},roleDefinition:{serializedName:`roleDefinition`,type:{name:`Composite`,className:`RoleDefinition`}},managedByRoleDefinition:{serializedName:`managedByRoleDefinition`,type:{name:`Composite`,className:`RoleDefinition`}},providerAuthorizationConsentState:{serializedName:`providerAuthorizationConsentState`,type:{name:`String`}}}}},e.RoleDefinition={type:{name:`Composite`,className:`RoleDefinition`,modelProperties:{id:{serializedName:`id`,type:{name:`String`}},name:{serializedName:`name`,type:{name:`String`}},isServiceRole:{serializedName:`isServiceRole`,type:{name:`Boolean`}},permissions:{serializedName:`permissions`,type:{name:`Sequence`,element:{type:{name:`Composite`,className:`Permission`}}}},scopes:{serializedName:`scopes`,type:{name:`Sequence`,element:{type:{name:`String`}}}}}}},e.Permission={type:{name:`Composite`,className:`Permission`,modelProperties:{actions:{serializedName:`actions`,type:{name:`Sequence`,element:{type:{name:`String`}}}},notActions:{serializedName:`notActions`,type:{name:`Sequence`,element:{type:{name:`String`}}}},dataActions:{serializedName:`dataActions`,type:{name:`Sequence`,element:{type:{name:`String`}}}},notDataActions:{serializedName:`notDataActions`,type:{name:`Sequence`,element:{type:{name:`String`}}}}}}},e.ProviderRegistrationRequest={type:{name:`Composite`,className:`ProviderRegistrationRequest`,modelProperties:{thirdPartyProviderConsent:{serializedName:`thirdPartyProviderConsent`,type:{name:`Composite`,className:`ProviderConsentDefinition`}}}}},e.ProviderConsentDefinition={type:{name:`Composite`,className:`ProviderConsentDefinition`,modelProperties:{consentToAuthorization:{serializedName:`consentToAuthorization`,type:{name:`Boolean`}}}}},e.ProviderListResult={type:{name:`Composite`,className:`ProviderListResult`,modelProperties:{value:{serializedName:`value`,type:{name:`Sequence`,element:{type:{name:`Composite`,className:`Provider`}}}},nextLink:{serializedName:`nextLink`,readOnly:!0,type:{name:`String`}}}}},e.ProviderResourceTypeListResult={type:{name:`Composite`,className:`ProviderResourceTypeListResult`,modelProperties:{value:{serializedName:`value`,type:{name:`Sequence`,element:{type:{name:`Composite`,className:`ProviderResourceType`}}}},nextLink:{serializedName:`nextLink`,readOnly:!0,type:{name:`String`}}}}},e.ResourceListResult={type:{name:`Composite`,className:`ResourceListResult`,modelProperties:{value:{serializedName:`value`,type:{name:`Sequence`,element:{type:{name:`Composite`,className:`GenericResourceExpanded`}}}},nextLink:{serializedName:`nextLink`,readOnly:!0,type:{name:`String`}}}}},e.Plan={type:{name:`Composite`,className:`Plan`,modelProperties:{name:{serializedName:`name`,type:{name:`String`}},publisher:{serializedName:`publisher`,type:{name:`String`}},product:{serializedName:`product`,type:{name:`String`}},promotionCode:{serializedName:`promotionCode`,type:{name:`String`}},version:{serializedName:`version`,type:{name:`String`}}}}},e.Sku={type:{name:`Composite`,className:`Sku`,modelProperties:{name:{serializedName:`name`,type:{name:`String`}},tier:{serializedName:`tier`,type:{name:`String`}},size:{serializedName:`size`,type:{name:`String`}},family:{serializedName:`family`,type:{name:`String`}},model:{serializedName:`model`,type:{name:`String`}},capacity:{serializedName:`capacity`,type:{name:`Number`}}}}},e.Identity={type:{name:`Composite`,className:`Identity`,modelProperties:{principalId:{serializedName:`principalId`,readOnly:!0,type:{name:`String`}},tenantId:{serializedName:`tenantId`,readOnly:!0,type:{name:`String`}},type:{serializedName:`type`,type:{name:`Enum`,allowedValues:[`SystemAssigned`,`UserAssigned`,`SystemAssigned, UserAssigned`,`None`]}},userAssignedIdentities:{serializedName:`userAssignedIdentities`,type:{name:`Dictionary`,value:{type:{name:`Composite`,className:`IdentityUserAssignedIdentitiesValue`}}}}}}},e.IdentityUserAssignedIdentitiesValue={type:{name:`Composite`,className:`IdentityUserAssignedIdentitiesValue`,modelProperties:{principalId:{serializedName:`principalId`,readOnly:!0,type:{name:`String`}},clientId:{serializedName:`clientId`,readOnly:!0,type:{name:`String`}}}}},e.Resource={type:{name:`Composite`,className:`Resource`,modelProperties:{id:{serializedName:`id`,readOnly:!0,type:{name:`String`}},name:{serializedName:`name`,readOnly:!0,type:{name:`String`}},type:{serializedName:`type`,readOnly:!0,type:{name:`String`}},location:{serializedName:`location`,type:{name:`String`}},extendedLocation:{serializedName:`extendedLocation`,type:{name:`Composite`,className:`ExtendedLocation`}},tags:{serializedName:`tags`,type:{name:`Dictionary`,value:{type:{name:`String`}}}}}}},e.ExtendedLocation={type:{name:`Composite`,className:`ExtendedLocation`,modelProperties:{type:{serializedName:`type`,type:{name:`String`}},name:{serializedName:`name`,type:{name:`String`}}}}},e.ResourceGroup={type:{name:`Composite`,className:`ResourceGroup`,modelProperties:{id:{serializedName:`id`,readOnly:!0,type:{name:`String`}},name:{serializedName:`name`,readOnly:!0,type:{name:`String`}},type:{serializedName:`type`,readOnly:!0,type:{name:`String`}},properties:{serializedName:`properties`,type:{name:`Composite`,className:`ResourceGroupProperties`}},location:{serializedName:`location`,required:!0,type:{name:`String`}},managedBy:{serializedName:`managedBy`,type:{name:`String`}},tags:{serializedName:`tags`,type:{name:`Dictionary`,value:{type:{name:`String`}}}}}}},e.ResourceGroupProperties={type:{name:`Composite`,className:`ResourceGroupProperties`,modelProperties:{provisioningState:{serializedName:`provisioningState`,readOnly:!0,type:{name:`String`}}}}},e.ResourceGroupPatchable={type:{name:`Composite`,className:`ResourceGroupPatchable`,modelProperties:{name:{serializedName:`name`,type:{name:`String`}},properties:{serializedName:`properties`,type:{name:`Composite`,className:`ResourceGroupProperties`}},managedBy:{serializedName:`managedBy`,type:{name:`String`}},tags:{serializedName:`tags`,type:{name:`Dictionary`,value:{type:{name:`String`}}}}}}},e.ExportTemplateRequest={type:{name:`Composite`,className:`ExportTemplateRequest`,modelProperties:{resources:{serializedName:`resources`,type:{name:`Sequence`,element:{type:{name:`String`}}}},options:{serializedName:`options`,type:{name:`String`}},outputFormat:{serializedName:`outputFormat`,type:{name:`String`}}}}},e.ResourceGroupExportResult={type:{name:`Composite`,className:`ResourceGroupExportResult`,modelProperties:{template:{serializedName:`template`,type:{name:`Dictionary`,value:{type:{name:`any`}}}},output:{serializedName:`output`,type:{name:`String`}},error:{serializedName:`error`,type:{name:`Composite`,className:`ErrorResponse`}}}}},e.ResourceGroupListResult={type:{name:`Composite`,className:`ResourceGroupListResult`,modelProperties:{value:{serializedName:`value`,type:{name:`Sequence`,element:{type:{name:`Composite`,className:`ResourceGroup`}}}},nextLink:{serializedName:`nextLink`,readOnly:!0,type:{name:`String`}}}}},e.ResourcesMoveInfo={type:{name:`Composite`,className:`ResourcesMoveInfo`,modelProperties:{resources:{serializedName:`resources`,type:{name:`Sequence`,element:{type:{name:`String`}}}},targetResourceGroup:{serializedName:`targetResourceGroup`,type:{name:`String`}}}}},e.TagValue={type:{name:`Composite`,className:`TagValue`,modelProperties:{id:{serializedName:`id`,readOnly:!0,type:{name:`String`}},tagValue:{serializedName:`tagValue`,type:{name:`String`}},count:{serializedName:`count`,type:{name:`Composite`,className:`TagCount`}}}}},e.TagCount={type:{name:`Composite`,className:`TagCount`,modelProperties:{type:{serializedName:`type`,type:{name:`String`}},value:{serializedName:`value`,type:{name:`Number`}}}}},e.TagDetails={type:{name:`Composite`,className:`TagDetails`,modelProperties:{id:{serializedName:`id`,readOnly:!0,type:{name:`String`}},tagName:{serializedName:`tagName`,type:{name:`String`}},count:{serializedName:`count`,type:{name:`Composite`,className:`TagCount`}},values:{serializedName:`values`,type:{name:`Sequence`,element:{type:{name:`Composite`,className:`TagValue`}}}}}}},e.TagsListResult={type:{name:`Composite`,className:`TagsListResult`,modelProperties:{value:{serializedName:`value`,type:{name:`Sequence`,element:{type:{name:`Composite`,className:`TagDetails`}}}},nextLink:{serializedName:`nextLink`,readOnly:!0,type:{name:`String`}}}}},e.DeploymentOperation={type:{name:`Composite`,className:`DeploymentOperation`,modelProperties:{id:{serializedName:`id`,readOnly:!0,type:{name:`String`}},operationId:{serializedName:`operationId`,readOnly:!0,type:{name:`String`}},properties:{serializedName:`properties`,type:{name:`Composite`,className:`DeploymentOperationProperties`}}}}},e.DeploymentOperationProperties={type:{name:`Composite`,className:`DeploymentOperationProperties`,modelProperties:{provisioningOperation:{serializedName:`provisioningOperation`,readOnly:!0,type:{name:`Enum`,allowedValues:[`NotSpecified`,`Create`,`Delete`,`Waiting`,`AzureAsyncOperationWaiting`,`ResourceCacheWaiting`,`Action`,`Read`,`EvaluateDeploymentOutput`,`DeploymentCleanup`]}},provisioningState:{serializedName:`provisioningState`,readOnly:!0,type:{name:`String`}},timestamp:{serializedName:`timestamp`,readOnly:!0,type:{name:`DateTime`}},duration:{serializedName:`duration`,readOnly:!0,type:{name:`String`}},serviceRequestId:{serializedName:`serviceRequestId`,readOnly:!0,type:{name:`String`}},statusCode:{serializedName:`statusCode`,readOnly:!0,type:{name:`String`}},statusMessage:{serializedName:`statusMessage`,type:{name:`Composite`,className:`StatusMessage`}},targetResource:{serializedName:`targetResource`,type:{name:`Composite`,className:`TargetResource`}},request:{serializedName:`request`,type:{name:`Composite`,className:`HttpMessage`}},response:{serializedName:`response`,type:{name:`Composite`,className:`HttpMessage`}}}}},e.StatusMessage={type:{name:`Composite`,className:`StatusMessage`,modelProperties:{status:{serializedName:`status`,type:{name:`String`}},error:{serializedName:`error`,type:{name:`Composite`,className:`ErrorResponse`}}}}},e.TargetResource={type:{name:`Composite`,className:`TargetResource`,modelProperties:{id:{serializedName:`id`,type:{name:`String`}},resourceName:{serializedName:`resourceName`,type:{name:`String`}},resourceType:{serializedName:`resourceType`,type:{name:`String`}},extension:{serializedName:`extension`,type:{name:`Composite`,className:`DeploymentExtensionDefinition`}},identifiers:{serializedName:`identifiers`,type:{name:`Dictionary`,value:{type:{name:`any`}}}},apiVersion:{serializedName:`apiVersion`,type:{name:`String`}},symbolicName:{serializedName:`symbolicName`,type:{name:`String`}}}}},e.HttpMessage={type:{name:`Composite`,className:`HttpMessage`,modelProperties:{content:{serializedName:`content`,type:{name:`Dictionary`,value:{type:{name:`any`}}}}}}},e.DeploymentOperationsListResult={type:{name:`Composite`,className:`DeploymentOperationsListResult`,modelProperties:{value:{serializedName:`value`,type:{name:`Sequence`,element:{type:{name:`Composite`,className:`DeploymentOperation`}}}},nextLink:{serializedName:`nextLink`,readOnly:!0,type:{name:`String`}}}}},e.TemplateHashResult={type:{name:`Composite`,className:`TemplateHashResult`,modelProperties:{minifiedTemplate:{serializedName:`minifiedTemplate`,type:{name:`String`}},templateHash:{serializedName:`templateHash`,type:{name:`String`}}}}},e.TagsResource={type:{name:`Composite`,className:`TagsResource`,modelProperties:{id:{serializedName:`id`,readOnly:!0,type:{name:`String`}},name:{serializedName:`name`,readOnly:!0,type:{name:`String`}},type:{serializedName:`type`,readOnly:!0,type:{name:`String`}},properties:{serializedName:`properties`,type:{name:`Composite`,className:`Tags`}}}}},e.Tags={type:{name:`Composite`,className:`Tags`,modelProperties:{tags:{serializedName:`tags`,type:{name:`Dictionary`,value:{type:{name:`String`}}}}}}},e.TagsPatchResource={type:{name:`Composite`,className:`TagsPatchResource`,modelProperties:{operation:{serializedName:`operation`,type:{name:`String`}},properties:{serializedName:`properties`,type:{name:`Composite`,className:`Tags`}}}}},e.DeploymentExtendedFilter={type:{name:`Composite`,className:`DeploymentExtendedFilter`,modelProperties:{provisioningState:{serializedName:`provisioningState`,type:{name:`String`}}}}},e.GenericResourceFilter={type:{name:`Composite`,className:`GenericResourceFilter`,modelProperties:{resourceType:{serializedName:`resourceType`,type:{name:`String`}},tagname:{serializedName:`tagname`,type:{name:`String`}},tagvalue:{serializedName:`tagvalue`,type:{name:`String`}}}}},e.ResourceGroupFilter={type:{name:`Composite`,className:`ResourceGroupFilter`,modelProperties:{tagName:{serializedName:`tagName`,type:{name:`String`}},tagValue:{serializedName:`tagValue`,type:{name:`String`}}}}},e.ResourceProviderOperationDisplayProperties={type:{name:`Composite`,className:`ResourceProviderOperationDisplayProperties`,modelProperties:{publisher:{serializedName:`publisher`,type:{name:`String`}},provider:{serializedName:`provider`,type:{name:`String`}},resource:{serializedName:`resource`,type:{name:`String`}},operation:{serializedName:`operation`,type:{name:`String`}},description:{serializedName:`description`,type:{name:`String`}}}}},e.SubResource={type:{name:`Composite`,className:`SubResource`,modelProperties:{id:{serializedName:`id`,type:{name:`String`}}}}},e.DeploymentWhatIfProperties={type:{name:`Composite`,className:`DeploymentWhatIfProperties`,modelProperties:Object.assign(Object.assign({},e.DeploymentProperties.type.modelProperties),{whatIfSettings:{serializedName:`whatIfSettings`,type:{name:`Composite`,className:`DeploymentWhatIfSettings`}}})}},e.GenericResource={type:{name:`Composite`,className:`GenericResource`,modelProperties:Object.assign(Object.assign({},e.Resource.type.modelProperties),{plan:{serializedName:`plan`,type:{name:`Composite`,className:`Plan`}},properties:{serializedName:`properties`,type:{name:`Dictionary`,value:{type:{name:`any`}}}},kind:{constraints:{Pattern:RegExp(`^[-\\w\\._,\\(\\)]+$`)},serializedName:`kind`,type:{name:`String`}},managedBy:{serializedName:`managedBy`,type:{name:`String`}},sku:{serializedName:`sku`,type:{name:`Composite`,className:`Sku`}},identity:{serializedName:`identity`,type:{name:`Composite`,className:`Identity`}}})}},e.GenericResourceExpanded={type:{name:`Composite`,className:`GenericResourceExpanded`,modelProperties:Object.assign(Object.assign({},e.GenericResource.type.modelProperties),{createdTime:{serializedName:`createdTime`,readOnly:!0,type:{name:`DateTime`}},changedTime:{serializedName:`changedTime`,readOnly:!0,type:{name:`DateTime`}},provisioningState:{serializedName:`provisioningState`,readOnly:!0,type:{name:`String`}}})}},e.DeploymentsWhatIfAtTenantScopeHeaders={type:{name:`Composite`,className:`DeploymentsWhatIfAtTenantScopeHeaders`,modelProperties:{location:{serializedName:`location`,type:{name:`String`}},retryAfter:{serializedName:`retry-after`,type:{name:`String`}}}}},e.DeploymentsWhatIfAtManagementGroupScopeHeaders={type:{name:`Composite`,className:`DeploymentsWhatIfAtManagementGroupScopeHeaders`,modelProperties:{location:{serializedName:`location`,type:{name:`String`}},retryAfter:{serializedName:`retry-after`,type:{name:`String`}}}}},e.DeploymentsWhatIfAtSubscriptionScopeHeaders={type:{name:`Composite`,className:`DeploymentsWhatIfAtSubscriptionScopeHeaders`,modelProperties:{location:{serializedName:`location`,type:{name:`String`}},retryAfter:{serializedName:`retry-after`,type:{name:`String`}}}}},e.DeploymentsWhatIfHeaders={type:{name:`Composite`,className:`DeploymentsWhatIfHeaders`,modelProperties:{location:{serializedName:`location`,type:{name:`String`}},retryAfter:{serializedName:`retry-after`,type:{name:`String`}}}}},e.ResourceGroupsDeleteHeaders={type:{name:`Composite`,className:`ResourceGroupsDeleteHeaders`,modelProperties:{location:{serializedName:`location`,type:{name:`String`}}}}},e.TagsCreateOrUpdateAtScopeHeaders={type:{name:`Composite`,className:`TagsCreateOrUpdateAtScopeHeaders`,modelProperties:{location:{serializedName:`location`,type:{name:`String`}}}}},e.TagsUpdateAtScopeHeaders={type:{name:`Composite`,className:`TagsUpdateAtScopeHeaders`,modelProperties:{location:{serializedName:`location`,type:{name:`String`}}}}},e.TagsDeleteAtScopeHeaders={type:{name:`Composite`,className:`TagsDeleteAtScopeHeaders`,modelProperties:{location:{serializedName:`location`,type:{name:`String`}}}}}})),rs=b((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.operationId=e.parameters10=e.parameters9=e.tagValue=e.tagName=e.resourceGroupName1=e.parameters8=e.parameters7=e.forceDeletionTypes=e.parameters6=e.resourceId=e.parameters5=e.apiVersion1=e.resourceName=e.resourceType=e.parentResourcePath=e.sourceResourceGroupName=e.parameters4=e.expand=e.properties=e.resourceProviderNamespace=e.template=e.resourceGroupName=e.parameters3=e.subscriptionId=e.groupId=e.parameters2=e.parameters1=e.top=e.filter=e.parameters=e.contentType=e.deploymentName=e.scope=e.nextLink=e.apiVersion=e.$host=e.accept=void 0;let t=ns();e.accept={parameterPath:`accept`,mapper:{defaultValue:`application/json`,isConstant:!0,serializedName:`Accept`,type:{name:`String`}}},e.$host={parameterPath:`$host`,mapper:{serializedName:`$host`,required:!0,type:{name:`String`}},skipEncoding:!0},e.apiVersion={parameterPath:`apiVersion`,mapper:{defaultValue:`2025-03-01`,isConstant:!0,serializedName:`api-version`,type:{name:`String`}}},e.nextLink={parameterPath:`nextLink`,mapper:{serializedName:`nextLink`,required:!0,type:{name:`String`}},skipEncoding:!0},e.scope={parameterPath:`scope`,mapper:{serializedName:`scope`,required:!0,type:{name:`String`}},skipEncoding:!0},e.deploymentName={parameterPath:`deploymentName`,mapper:{constraints:{Pattern:RegExp(`^[-\\w\\._\\(\\)]+$`),MaxLength:64,MinLength:1},serializedName:`deploymentName`,required:!0,type:{name:`String`}}},e.contentType={parameterPath:[`options`,`contentType`],mapper:{defaultValue:`application/json`,isConstant:!0,serializedName:`Content-Type`,type:{name:`String`}}},e.parameters={parameterPath:`parameters`,mapper:t.Deployment},e.filter={parameterPath:[`options`,`filter`],mapper:{serializedName:`$filter`,type:{name:`String`}}},e.top={parameterPath:[`options`,`top`],mapper:{serializedName:`$top`,type:{name:`Number`}}},e.parameters1={parameterPath:`parameters`,mapper:t.ScopedDeployment},e.parameters2={parameterPath:`parameters`,mapper:t.ScopedDeploymentWhatIf},e.groupId={parameterPath:`groupId`,mapper:{constraints:{MaxLength:90,MinLength:1},serializedName:`groupId`,required:!0,type:{name:`String`}}},e.subscriptionId={parameterPath:`subscriptionId`,mapper:{serializedName:`subscriptionId`,required:!0,type:{name:`String`}}},e.parameters3={parameterPath:`parameters`,mapper:t.DeploymentWhatIf},e.resourceGroupName={parameterPath:`resourceGroupName`,mapper:{constraints:{Pattern:RegExp(`^[-\\w\\._\\(\\)]+$`),MaxLength:90,MinLength:1},serializedName:`resourceGroupName`,required:!0,type:{name:`String`}}},e.template={parameterPath:`template`,mapper:{serializedName:`template`,required:!0,type:{name:`Dictionary`,value:{type:{name:`any`}}}}},e.resourceProviderNamespace={parameterPath:`resourceProviderNamespace`,mapper:{serializedName:`resourceProviderNamespace`,required:!0,type:{name:`String`}}},e.properties={parameterPath:[`options`,`properties`],mapper:t.ProviderRegistrationRequest},e.expand={parameterPath:[`options`,`expand`],mapper:{serializedName:`$expand`,type:{name:`String`}}},e.parameters4={parameterPath:`parameters`,mapper:t.ResourcesMoveInfo},e.sourceResourceGroupName={parameterPath:`sourceResourceGroupName`,mapper:{constraints:{Pattern:RegExp(`^[-\\w\\._\\(\\)]+$`),MaxLength:90,MinLength:1},serializedName:`sourceResourceGroupName`,required:!0,type:{name:`String`}}},e.parentResourcePath={parameterPath:`parentResourcePath`,mapper:{serializedName:`parentResourcePath`,required:!0,type:{name:`String`}},skipEncoding:!0},e.resourceType={parameterPath:`resourceType`,mapper:{serializedName:`resourceType`,required:!0,type:{name:`String`}},skipEncoding:!0},e.resourceName={parameterPath:`resourceName`,mapper:{serializedName:`resourceName`,required:!0,type:{name:`String`}}},e.apiVersion1={parameterPath:`apiVersion`,mapper:{serializedName:`api-version`,required:!0,type:{name:`String`}}},e.parameters5={parameterPath:`parameters`,mapper:t.GenericResource},e.resourceId={parameterPath:`resourceId`,mapper:{serializedName:`resourceId`,required:!0,type:{name:`String`}},skipEncoding:!0},e.parameters6={parameterPath:`parameters`,mapper:t.ResourceGroup},e.forceDeletionTypes={parameterPath:[`options`,`forceDeletionTypes`],mapper:{serializedName:`forceDeletionTypes`,type:{name:`String`}}},e.parameters7={parameterPath:`parameters`,mapper:t.ResourceGroupPatchable},e.parameters8={parameterPath:`parameters`,mapper:t.ExportTemplateRequest},e.resourceGroupName1={parameterPath:`resourceGroupName`,mapper:{constraints:{MaxLength:90,MinLength:1},serializedName:`resourceGroupName`,required:!0,type:{name:`String`}}},e.tagName={parameterPath:`tagName`,mapper:{serializedName:`tagName`,required:!0,type:{name:`String`}}},e.tagValue={parameterPath:`tagValue`,mapper:{serializedName:`tagValue`,required:!0,type:{name:`String`}}},e.parameters9={parameterPath:`parameters`,mapper:t.TagsResource},e.parameters10={parameterPath:`parameters`,mapper:t.TagsPatchResource},e.operationId={parameterPath:`operationId`,mapper:{serializedName:`operationId`,required:!0,type:{name:`String`}}}})),is=b((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.OperationsImpl=void 0;let t=(yi(),w(Fr)),n=bi(),r=t.__importStar(ts()),i=t.__importStar(ns()),a=t.__importStar(rs());e.OperationsImpl=class{constructor(e){this.client=e}list(e){let t=this.listPagingAll(e);return{next(){return t.next()},[Symbol.asyncIterator](){return this},byPage:t=>{if(t?.maxPageSize)throw Error(`maxPageSize is not supported by this operation.`);return this.listPagingPage(e,t)}}}listPagingPage(e,r){return t.__asyncGenerator(this,arguments,function*(){let i,a=r?.continuationToken;if(!a){i=yield t.__await(this._list(e));let r=i.value||[];a=i.nextLink,(0,n.setContinuationToken)(r,a),yield yield t.__await(r)}for(;a;){i=yield t.__await(this._listNext(a,e)),a=i.nextLink;let r=i.value||[];(0,n.setContinuationToken)(r,a),yield yield t.__await(r)}})}listPagingAll(e){return t.__asyncGenerator(this,arguments,function*(){var n,r,i,a;try{for(var o=!0,s=t.__asyncValues(this.listPagingPage(e)),c;c=yield t.__await(s.next()),n=c.done,!n;o=!0){a=c.value,o=!1;let e=a;yield t.__await(yield*t.__asyncDelegator(t.__asyncValues(e)))}}catch(e){r={error:e}}finally{try{!o&&!n&&(i=s.return)&&(yield t.__await(i.call(s)))}finally{if(r)throw r.error}}})}_list(e){return this.client.sendOperationRequest({options:e},s)}_listNext(e,t){return this.client.sendOperationRequest({nextLink:e,options:t},c)}};let o=r.createSerializer(i,!1),s={path:`/providers/Microsoft.Resources/operations`,httpMethod:`GET`,responses:{200:{bodyMapper:i.OperationListResult},default:{bodyMapper:i.CloudError}},queryParameters:[a.apiVersion],urlParameters:[a.$host],headerParameters:[a.accept],serializer:o},c={path:`{nextLink}`,httpMethod:`GET`,responses:{200:{bodyMapper:i.OperationListResult},default:{bodyMapper:i.CloudError}},urlParameters:[a.$host,a.nextLink],headerParameters:[a.accept],serializer:o}})),as=b((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.logger=void 0,e.logger=(0,Ua().createClientLogger)(`core-lro`)})),os=b((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.terminalStates=e.POLL_INTERVAL_IN_MS=void 0,e.POLL_INTERVAL_IN_MS=2e3,e.terminalStates=[`succeeded`,`canceled`,`failed`]})),ss=b((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.pollOperation=e.initOperation=e.deserializeState=void 0;let t=as(),n=os();function r(e){try{return JSON.parse(e).state}catch{throw Error(`Unable to deserialize input state: ${e}`)}}e.deserializeState=r;function i(e){let{state:t,stateProxy:n,isOperationError:r}=e;return e=>{throw r(e)&&(n.setError(t,e),n.setFailed(t)),e}}function a(e,t){let n=e;return n.slice(-1)!==`.`&&(n+=`.`),n+` `+t}function o(e){let t=e.message,n=e.code,r=e;for(;r.innererror;)r=r.innererror,n=r.code,t=a(t,r.message);return{code:n,message:t}}function s(e){let{state:n,stateProxy:r,status:i,isDone:a,processResult:s,getError:l,response:u,setErrorAsResult:d}=e;switch(i){case`succeeded`:r.setSucceeded(n);break;case`failed`:{let e=l?.(u),i=``;if(e){let{code:t,message:n}=o(e);i=`. ${t}. ${n}`}let a=`The long-running operation has failed${i}`;r.setError(n,Error(a)),r.setFailed(n),t.logger.warning(a);break}case`canceled`:r.setCanceled(n);break}(a?.(u,n)||a===void 0&&[`succeeded`,`canceled`].concat(d?[]:[`failed`]).includes(i))&&r.setResult(n,c({response:u,state:n,processResult:s}))}function c(e){let{processResult:t,response:n,state:r}=e;return t?t(n,r):n}async function l(e){let{init:n,stateProxy:r,processResult:i,getOperationStatus:a,withOperationLocation:o,setErrorAsResult:c}=e,{operationLocation:l,resourceLocation:u,metadata:d,response:f}=await n();l&&o?.(l,!1);let p={metadata:d,operationLocation:l,resourceLocation:u};t.logger.verbose(`LRO: Operation description:`,p);let m=r.initState(p);return s({state:m,status:a({response:f,state:m,operationLocation:l}),stateProxy:r,response:f,setErrorAsResult:c,processResult:i}),m}e.initOperation=l;async function u(e){let{poll:r,state:a,stateProxy:o,operationLocation:s,getOperationStatus:c,getResourceLocation:l,isOperationError:u,options:d}=e,f=await r(s,d).catch(i({state:a,stateProxy:o,isOperationError:u})),p=c(f,a);if(t.logger.verbose(`LRO: Status:\n\tPolling from: ${a.config.operationLocation}\n\tOperation status: ${p}\n\tPolling status: ${n.terminalStates.includes(p)?`Stopped`:`Running`}`),p===`succeeded`){let e=l(f,a);if(e!==void 0)return{response:await r(e).catch(i({state:a,stateProxy:o,isOperationError:u})),status:p}}return{response:f,status:p}}async function d(e){let{poll:t,state:r,stateProxy:i,options:a,getOperationStatus:o,getResourceLocation:c,getOperationLocation:l,isOperationError:d,withOperationLocation:f,getPollingInterval:p,processResult:m,getError:h,updateState:g,setDelay:_,isDone:v,setErrorAsResult:y}=e,{operationLocation:b}=r.config;if(b!==void 0){let{response:e,status:x}=await u({poll:t,getOperationStatus:o,state:r,stateProxy:i,operationLocation:b,getResourceLocation:c,isOperationError:d,options:a});if(s({status:x,response:e,state:r,stateProxy:i,isDone:v,processResult:m,getError:h,setErrorAsResult:y}),!n.terminalStates.includes(x)){let t=p?.(e);t&&_(t);let n=l?.(e,r);if(n!==void 0){let e=b!==n;r.config.operationLocation=n,f?.(n,e)}else f?.(b,!1)}g?.(r,e)}}e.pollOperation=d})),cs=b((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.pollHttpOperation=e.isOperationError=e.getResourceLocation=e.getOperationStatus=e.getOperationLocation=e.initHttpOperation=e.getStatusFromInitialResponse=e.getErrorFromResponse=e.parseRetryAfter=e.inferLroMode=void 0;let t=ss(),n=as();function r(e){let{azureAsyncOperation:t,operationLocation:n}=e;return n??t}function i(e){return e.headers.location}function a(e){return e.headers[`operation-location`]}function o(e){return e.headers[`azure-asyncoperation`]}function s(e){let{location:t,requestMethod:n,requestPath:r,resourceLocationConfig:i}=e;switch(n){case`PUT`:return r;case`DELETE`:return;case`PATCH`:return a()??r;default:return a()}function a(){switch(i){case`azure-async-operation`:return;case`original-uri`:return r;case`location`:default:return t}}}function c(e){let{rawResponse:t,requestMethod:n,requestPath:c,resourceLocationConfig:l}=e,u=r({operationLocation:a(t),azureAsyncOperation:o(t)}),d=i(t),f=n?.toLocaleUpperCase();if(u!==void 0)return{mode:`OperationLocation`,operationLocation:u,resourceLocation:s({requestMethod:f,location:d,requestPath:c,resourceLocationConfig:l})};if(d!==void 0)return{mode:`ResourceLocation`,operationLocation:d};if(f===`PUT`&&c)return{mode:`Body`,operationLocation:c}}e.inferLroMode=c;function l(e){let{status:t,statusCode:r}=e;if(typeof t!=`string`&&t!==void 0)throw Error(`Polling was unsuccessful. Expected status to have a string value or no value but it has instead: ${t}. This doesn't necessarily indicate the operation has failed. Check your Azure subscription or resource status for more information.`);switch(t?.toLocaleLowerCase()){case void 0:return f(r);case`succeeded`:return`succeeded`;case`failed`:return`failed`;case`running`:case`accepted`:case`started`:case`canceling`:case`cancelling`:return`running`;case`canceled`:case`cancelled`:return`canceled`;default:return n.logger.verbose(`LRO: unrecognized operation status: ${t}`),t}}function u(e){let{status:t}=e.body??{};return l({status:t,statusCode:e.statusCode})}function d(e){let{properties:t,provisioningState:n}=e.body??{};return l({status:t?.provisioningState??n,statusCode:e.statusCode})}function f(e){return e===202?`running`:e<300?`succeeded`:`failed`}function p({rawResponse:e}){let t=e.headers[`retry-after`];if(t!==void 0){let e=parseInt(t);return isNaN(e)?h(new Date(t)):e*1e3}}e.parseRetryAfter=p;function m(e){let t=b(e,`error`);if(!t){n.logger.warning(`The long-running operation failed but there is no error property in the response's body`);return}if(!t.code||!t.message){n.logger.warning(`The long-running operation failed but the error property in the response's body doesn't contain code or message`);return}return t}e.getErrorFromResponse=m;function h(e){let t=Math.floor(new Date().getTime()),n=e.getTime();if(t{let e=await a.sendInitialRequest(),t=c({rawResponse:e.rawResponse,requestPath:a.requestPath,requestMethod:a.requestMethod,resourceLocationConfig:r});return Object.assign({response:e,operationLocation:t?.operationLocation,resourceLocation:t?.resourceLocation},t?.mode?{metadata:{mode:t.mode}}:{})},stateProxy:n,processResult:i?({flatResponse:e},t)=>i(e,t):({flatResponse:e})=>e,getOperationStatus:g,setErrorAsResult:o})}e.initHttpOperation=_;function v({rawResponse:e},t){switch(t.config.metadata?.mode){case`OperationLocation`:return r({operationLocation:a(e),azureAsyncOperation:o(e)});case`ResourceLocation`:return i(e);case`Body`:default:return}}e.getOperationLocation=v;function y({rawResponse:e},t){let n=t.config.metadata?.mode;switch(n){case`OperationLocation`:return u(e);case`ResourceLocation`:return f(e.statusCode);case`Body`:return d(e);default:throw Error(`Internal error: Unexpected operation mode: ${n}`)}}e.getOperationStatus=y;function b({flatResponse:e,rawResponse:t},n){return e?.[n]??t.body?.[n]}function x(e,t){let n=b(e,`resourceLocation`);return n&&typeof n==`string`&&(t.config.resourceLocation=n),t.config.resourceLocation}e.getResourceLocation=x;function S(e){return e.name===`RestError`}e.isOperationError=S;async function C(e){let{lro:n,stateProxy:r,options:i,processResult:a,updateState:o,setDelay:s,state:c,setErrorAsResult:l}=e;return(0,t.pollOperation)({state:c,stateProxy:r,setDelay:s,processResult:a?({flatResponse:e},t)=>a(e,t):({flatResponse:e})=>e,getError:m,updateState:o,getPollingInterval:p,getOperationLocation:v,getOperationStatus:y,isOperationError:S,getResourceLocation:x,options:i,poll:async(e,t)=>n.sendPollRequest(e,t),setErrorAsResult:l})}e.pollHttpOperation=C})),ls=b((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.buildCreatePoller=void 0;let t=ss(),n=os(),r=uo(),i=()=>({initState:e=>({status:`running`,config:e}),setCanceled:e=>e.status=`canceled`,setError:(e,t)=>e.error=t,setResult:(e,t)=>e.result=t,setRunning:e=>e.status=`running`,setSucceeded:e=>e.status=`succeeded`,setFailed:e=>e.status=`failed`,getError:e=>e.error,getResult:e=>e.result,isCanceled:e=>e.status===`canceled`,isFailed:e=>e.status===`failed`,isRunning:e=>e.status===`running`,isSucceeded:e=>e.status===`succeeded`});function a(e){let{getOperationLocation:a,getStatusFromInitialResponse:o,getStatusFromPollResponse:s,isOperationError:c,getResourceLocation:l,getPollingInterval:u,getError:d,resolveOnUnsuccessful:f}=e;return async({init:e,poll:p},m)=>{let{processResult:h,updateState:g,withOperationLocation:_,intervalInMs:v=n.POLL_INTERVAL_IN_MS,restoreFrom:y}=m||{},b=i(),x=_?(()=>{let e=!1;return(t,n)=>{n?_(t):e||_(t),e=!0}})():void 0,S=y?(0,t.deserializeState)(y):await(0,t.initOperation)({init:e,stateProxy:b,processResult:h,getOperationStatus:o,withOperationLocation:x,setErrorAsResult:!f}),C,w=new AbortController,T=new Map,E=async()=>T.forEach(e=>e(S)),D=`Operation was canceled`,O=v,k={getOperationState:()=>S,getResult:()=>S.result,isDone:()=>[`succeeded`,`failed`,`canceled`].includes(S.status),isStopped:()=>C===void 0,stopPolling:()=>{w.abort()},toString:()=>JSON.stringify({state:S}),onProgress:e=>{let t=Symbol();return T.set(t,e),()=>T.delete(t)},pollUntilDone:e=>C??=(async()=>{let{abortSignal:t}=e||{};function n(){w.abort()}let i=w.signal;t?.aborted?w.abort():i.aborted||t?.addEventListener(`abort`,n,{once:!0});try{if(!k.isDone())for(await k.poll({abortSignal:i});!k.isDone();)await(0,r.delay)(O,{abortSignal:i}),await k.poll({abortSignal:i})}finally{t?.removeEventListener(`abort`,n)}if(f)return k.getResult();switch(S.status){case`succeeded`:return k.getResult();case`canceled`:throw Error(D);case`failed`:throw S.error;case`notStarted`:case`running`:throw Error(`Polling completed without succeeding or failing`)}})().finally(()=>{C=void 0}),async poll(e){if(f){if(k.isDone())return}else switch(S.status){case`succeeded`:return;case`canceled`:throw Error(D);case`failed`:throw S.error}if(await(0,t.pollOperation)({poll:p,state:S,stateProxy:b,getOperationLocation:a,isOperationError:c,withOperationLocation:x,getPollingInterval:u,getOperationStatus:s,getResourceLocation:l,processResult:h,getError:d,updateState:g,options:e,setDelay:e=>{O=e},setErrorAsResult:!f}),await E(),!f)switch(S.status){case`canceled`:throw Error(D);case`failed`:throw S.error}}};return k}}e.buildCreatePoller=a})),us=b((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.createHttpPoller=void 0;let t=cs(),n=ls();async function r(e,r){let{resourceLocationConfig:i,intervalInMs:a,processResult:o,restoreFrom:s,updateState:c,withOperationLocation:l,resolveOnUnsuccessful:u=!1}=r||{};return(0,n.buildCreatePoller)({getStatusFromInitialResponse:t.getStatusFromInitialResponse,getStatusFromPollResponse:t.getOperationStatus,isOperationError:t.isOperationError,getOperationLocation:t.getOperationLocation,getResourceLocation:t.getResourceLocation,getPollingInterval:t.parseRetryAfter,getError:t.getErrorFromResponse,resolveOnUnsuccessful:u})({init:async()=>{let n=await e.sendInitialRequest(),r=(0,t.inferLroMode)({rawResponse:n.rawResponse,requestPath:e.requestPath,requestMethod:e.requestMethod,resourceLocationConfig:i});return Object.assign({response:n,operationLocation:r?.operationLocation,resourceLocation:r?.resourceLocation},r?.mode?{metadata:{mode:r.mode}}:{})},poll:e.sendPollRequest},{intervalInMs:a,withOperationLocation:l,restoreFrom:s,updateState:c,processResult:o?({flatResponse:e},t)=>o(e,t):({flatResponse:e})=>e})}e.createHttpPoller=r})),ds=b((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.GenericPollOperation=void 0;let t=cs(),n=as(),r=()=>({initState:e=>({config:e,isStarted:!0}),setCanceled:e=>e.isCancelled=!0,setError:(e,t)=>e.error=t,setResult:(e,t)=>e.result=t,setRunning:e=>e.isStarted=!0,setSucceeded:e=>e.isCompleted=!0,setFailed:()=>{},getError:e=>e.error,getResult:e=>e.result,isCanceled:e=>!!e.isCancelled,isFailed:e=>!!e.error,isRunning:e=>!!e.isStarted,isSucceeded:e=>!!(e.isCompleted&&!e.isCancelled&&!e.error)});e.GenericPollOperation=class{constructor(e,t,n,r,i,a,o){this.state=e,this.lro=t,this.setErrorAsResult=n,this.lroResourceLocationConfig=r,this.processResult=i,this.updateState=a,this.isDone=o}setPollerConfig(e){this.pollerConfig=e}async update(e){var n;let i=r();this.state.isStarted||(this.state=Object.assign(Object.assign({},this.state),await(0,t.initHttpOperation)({lro:this.lro,stateProxy:i,resourceLocationConfig:this.lroResourceLocationConfig,processResult:this.processResult,setErrorAsResult:this.setErrorAsResult})));let a=this.updateState,o=this.isDone;return!this.state.isCompleted&&this.state.error===void 0&&await(0,t.pollHttpOperation)({lro:this.lro,state:this.state,stateProxy:i,processResult:this.processResult,updateState:a?(e,{rawResponse:t})=>a(e,t):void 0,isDone:o?({flatResponse:e},t)=>o(e,t):void 0,options:e,setDelay:e=>{this.pollerConfig.intervalInMs=e},setErrorAsResult:this.setErrorAsResult}),(n=e?.fireProgress)==null||n.call(e,this.state),this}async cancel(){return n.logger.error("`cancelOperation` is deprecated because it wasn't implemented"),this}toString(){return JSON.stringify({state:this.state})}}})),fs=b((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.Poller=e.PollerCancelledError=e.PollerStoppedError=void 0;var t=class e extends Error{constructor(t){super(t),this.name=`PollerStoppedError`,Object.setPrototypeOf(this,e.prototype)}};e.PollerStoppedError=t;var n=class e extends Error{constructor(t){super(t),this.name=`PollerCancelledError`,Object.setPrototypeOf(this,e.prototype)}};e.PollerCancelledError=n,e.Poller=class{constructor(e){this.resolveOnUnsuccessful=!1,this.stopped=!0,this.pollProgressCallbacks=[],this.operation=e,this.promise=new Promise((e,t)=>{this.resolve=e,this.reject=t}),this.promise.catch(()=>{})}async startPolling(e={}){for(this.stopped&&=!1;!this.isStopped()&&!this.isDone();)await this.poll(e),await this.delay()}async pollOnce(e={}){this.isDone()||(this.operation=await this.operation.update({abortSignal:e.abortSignal,fireProgress:this.fireProgress.bind(this)})),this.processUpdatedState()}fireProgress(e){for(let t of this.pollProgressCallbacks)t(e)}async cancelOnce(e={}){this.operation=await this.operation.cancel(e)}poll(e={}){if(!this.pollOncePromise){this.pollOncePromise=this.pollOnce(e);let t=()=>{this.pollOncePromise=void 0};this.pollOncePromise.then(t,t).catch(this.reject)}return this.pollOncePromise}processUpdatedState(){if(this.operation.state.error&&(this.stopped=!0,!this.resolveOnUnsuccessful))throw this.reject(this.operation.state.error),this.operation.state.error;if(this.operation.state.isCancelled&&(this.stopped=!0,!this.resolveOnUnsuccessful)){let e=new n(`Operation was canceled`);throw this.reject(e),e}this.isDone()&&this.resolve&&this.resolve(this.getResult())}async pollUntilDone(e={}){return this.stopped&&this.startPolling(e).catch(this.reject),this.processUpdatedState(),this.promise}onProgress(e){return this.pollProgressCallbacks.push(e),()=>{this.pollProgressCallbacks=this.pollProgressCallbacks.filter(t=>t!==e)}}isDone(){let e=this.operation.state;return!!(e.isCompleted||e.isCancelled||e.error)}stopPolling(){this.stopped||(this.stopped=!0,this.reject&&this.reject(new t(`This poller is already stopped`)))}isStopped(){return this.stopped}cancelOperation(e={}){if(!this.cancelPromise)this.cancelPromise=this.cancelOnce(e);else if(e.abortSignal)throw Error(`A cancel request is currently pending`);return this.cancelPromise}getOperationState(){return this.operation.state}getResult(){return this.operation.state.result}toString(){return this.operation.toString()}}})),ps=b((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.LroEngine=void 0;let t=ds(),n=os(),r=fs(),i=ss();e.LroEngine=class extends r.Poller{constructor(e,r){let{intervalInMs:a=n.POLL_INTERVAL_IN_MS,resumeFrom:o,resolveOnUnsuccessful:s=!1,isDone:c,lroResourceLocationConfig:l,processResult:u,updateState:d}=r||{},f=o?(0,i.deserializeState)(o):{},p=new t.GenericPollOperation(f,e,!s,l,u,d,c);super(p),this.resolveOnUnsuccessful=s,this.config={intervalInMs:a},p.setPollerConfig(this.config)}delay(){return new Promise(e=>setTimeout(()=>e(),this.config.intervalInMs))}}})),ms=b((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.LroEngine=void 0;var t=ps();Object.defineProperty(e,`LroEngine`,{enumerable:!0,get:function(){return t.LroEngine}})})),hs=b((e=>{Object.defineProperty(e,`__esModule`,{value:!0})})),gs=b((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.createHttpPoller=void 0;let t=(yi(),w(Fr));var n=us();Object.defineProperty(e,`createHttpPoller`,{enumerable:!0,get:function(){return n.createHttpPoller}}),t.__exportStar(ms(),e),t.__exportStar(fs(),e),t.__exportStar(hs(),e)})),_s=b((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.createLroSpec=n;let t=(yi(),w(Fr));function n(e){let{args:n,spec:r,sendOperationFn:i}=e;return{requestMethod:r.httpMethod,requestPath:r.path,sendInitialRequest:()=>i(n,r),sendPollRequest:(e,a)=>{let{requestBody:o}=r,s=t.__rest(r,[`requestBody`]);return i(n,Object.assign(Object.assign({},s),{httpMethod:`GET`,path:e,abortSignal:a?.abortSignal}))}}}})),vs=b((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.DeploymentsImpl=void 0;let t=(yi(),w(Fr)),n=bi(),r=t.__importStar(ts()),i=t.__importStar(ns()),a=t.__importStar(rs()),o=gs(),s=_s();e.DeploymentsImpl=class{constructor(e){this.client=e}listAtScope(e,t){let n=this.listAtScopePagingAll(e,t);return{next(){return n.next()},[Symbol.asyncIterator](){return this},byPage:n=>{if(n?.maxPageSize)throw Error(`maxPageSize is not supported by this operation.`);return this.listAtScopePagingPage(e,t,n)}}}listAtScopePagingPage(e,r,i){return t.__asyncGenerator(this,arguments,function*(){let a,o=i?.continuationToken;if(!o){a=yield t.__await(this._listAtScope(e,r));let i=a.value||[];o=a.nextLink,(0,n.setContinuationToken)(i,o),yield yield t.__await(i)}for(;o;){a=yield t.__await(this._listAtScopeNext(e,o,r)),o=a.nextLink;let i=a.value||[];(0,n.setContinuationToken)(i,o),yield yield t.__await(i)}})}listAtScopePagingAll(e,n){return t.__asyncGenerator(this,arguments,function*(){var r,i,a,o;try{for(var s=!0,c=t.__asyncValues(this.listAtScopePagingPage(e,n)),l;l=yield t.__await(c.next()),r=l.done,!r;s=!0){o=l.value,s=!1;let e=o;yield t.__await(yield*t.__asyncDelegator(t.__asyncValues(e)))}}catch(e){i={error:e}}finally{try{!s&&!r&&(a=c.return)&&(yield t.__await(a.call(c)))}finally{if(i)throw i.error}}})}listAtTenantScope(e){let t=this.listAtTenantScopePagingAll(e);return{next(){return t.next()},[Symbol.asyncIterator](){return this},byPage:t=>{if(t?.maxPageSize)throw Error(`maxPageSize is not supported by this operation.`);return this.listAtTenantScopePagingPage(e,t)}}}listAtTenantScopePagingPage(e,r){return t.__asyncGenerator(this,arguments,function*(){let i,a=r?.continuationToken;if(!a){i=yield t.__await(this._listAtTenantScope(e));let r=i.value||[];a=i.nextLink,(0,n.setContinuationToken)(r,a),yield yield t.__await(r)}for(;a;){i=yield t.__await(this._listAtTenantScopeNext(a,e)),a=i.nextLink;let r=i.value||[];(0,n.setContinuationToken)(r,a),yield yield t.__await(r)}})}listAtTenantScopePagingAll(e){return t.__asyncGenerator(this,arguments,function*(){var n,r,i,a;try{for(var o=!0,s=t.__asyncValues(this.listAtTenantScopePagingPage(e)),c;c=yield t.__await(s.next()),n=c.done,!n;o=!0){a=c.value,o=!1;let e=a;yield t.__await(yield*t.__asyncDelegator(t.__asyncValues(e)))}}catch(e){r={error:e}}finally{try{!o&&!n&&(i=s.return)&&(yield t.__await(i.call(s)))}finally{if(r)throw r.error}}})}listAtManagementGroupScope(e,t){let n=this.listAtManagementGroupScopePagingAll(e,t);return{next(){return n.next()},[Symbol.asyncIterator](){return this},byPage:n=>{if(n?.maxPageSize)throw Error(`maxPageSize is not supported by this operation.`);return this.listAtManagementGroupScopePagingPage(e,t,n)}}}listAtManagementGroupScopePagingPage(e,r,i){return t.__asyncGenerator(this,arguments,function*(){let a,o=i?.continuationToken;if(!o){a=yield t.__await(this._listAtManagementGroupScope(e,r));let i=a.value||[];o=a.nextLink,(0,n.setContinuationToken)(i,o),yield yield t.__await(i)}for(;o;){a=yield t.__await(this._listAtManagementGroupScopeNext(e,o,r)),o=a.nextLink;let i=a.value||[];(0,n.setContinuationToken)(i,o),yield yield t.__await(i)}})}listAtManagementGroupScopePagingAll(e,n){return t.__asyncGenerator(this,arguments,function*(){var r,i,a,o;try{for(var s=!0,c=t.__asyncValues(this.listAtManagementGroupScopePagingPage(e,n)),l;l=yield t.__await(c.next()),r=l.done,!r;s=!0){o=l.value,s=!1;let e=o;yield t.__await(yield*t.__asyncDelegator(t.__asyncValues(e)))}}catch(e){i={error:e}}finally{try{!s&&!r&&(a=c.return)&&(yield t.__await(a.call(c)))}finally{if(i)throw i.error}}})}listAtSubscriptionScope(e){let t=this.listAtSubscriptionScopePagingAll(e);return{next(){return t.next()},[Symbol.asyncIterator](){return this},byPage:t=>{if(t?.maxPageSize)throw Error(`maxPageSize is not supported by this operation.`);return this.listAtSubscriptionScopePagingPage(e,t)}}}listAtSubscriptionScopePagingPage(e,r){return t.__asyncGenerator(this,arguments,function*(){let i,a=r?.continuationToken;if(!a){i=yield t.__await(this._listAtSubscriptionScope(e));let r=i.value||[];a=i.nextLink,(0,n.setContinuationToken)(r,a),yield yield t.__await(r)}for(;a;){i=yield t.__await(this._listAtSubscriptionScopeNext(a,e)),a=i.nextLink;let r=i.value||[];(0,n.setContinuationToken)(r,a),yield yield t.__await(r)}})}listAtSubscriptionScopePagingAll(e){return t.__asyncGenerator(this,arguments,function*(){var n,r,i,a;try{for(var o=!0,s=t.__asyncValues(this.listAtSubscriptionScopePagingPage(e)),c;c=yield t.__await(s.next()),n=c.done,!n;o=!0){a=c.value,o=!1;let e=a;yield t.__await(yield*t.__asyncDelegator(t.__asyncValues(e)))}}catch(e){r={error:e}}finally{try{!o&&!n&&(i=s.return)&&(yield t.__await(i.call(s)))}finally{if(r)throw r.error}}})}listByResourceGroup(e,t){let n=this.listByResourceGroupPagingAll(e,t);return{next(){return n.next()},[Symbol.asyncIterator](){return this},byPage:n=>{if(n?.maxPageSize)throw Error(`maxPageSize is not supported by this operation.`);return this.listByResourceGroupPagingPage(e,t,n)}}}listByResourceGroupPagingPage(e,r,i){return t.__asyncGenerator(this,arguments,function*(){let a,o=i?.continuationToken;if(!o){a=yield t.__await(this._listByResourceGroup(e,r));let i=a.value||[];o=a.nextLink,(0,n.setContinuationToken)(i,o),yield yield t.__await(i)}for(;o;){a=yield t.__await(this._listByResourceGroupNext(e,o,r)),o=a.nextLink;let i=a.value||[];(0,n.setContinuationToken)(i,o),yield yield t.__await(i)}})}listByResourceGroupPagingAll(e,n){return t.__asyncGenerator(this,arguments,function*(){var r,i,a,o;try{for(var s=!0,c=t.__asyncValues(this.listByResourceGroupPagingPage(e,n)),l;l=yield t.__await(c.next()),r=l.done,!r;s=!0){o=l.value,s=!1;let e=o;yield t.__await(yield*t.__asyncDelegator(t.__asyncValues(e)))}}catch(e){i={error:e}}finally{try{!s&&!r&&(a=c.return)&&(yield t.__await(a.call(c)))}finally{if(i)throw i.error}}})}async beginDeleteAtScope(e,t,n){let r=async(e,t)=>this.client.sendOperationRequest(e,t),i=(0,s.createLroSpec)({sendOperationFn:async(e,t)=>{let n,i=e.options?.onResponse;return{flatResponse:await r(Object.assign(Object.assign({},e),{options:Object.assign(Object.assign({},e.options),{onResponse:(e,t)=>{n=e,i?.(e,t)}})}),t),rawResponse:{statusCode:n.status,body:n.parsedBody,headers:n.headers.toJSON()}}},args:{scope:e,deploymentName:t,options:n},spec:l}),a=await(0,o.createHttpPoller)(i,{restoreFrom:n?.resumeFrom,intervalInMs:n?.updateIntervalInMs});return await a.poll(),a}async beginDeleteAtScopeAndWait(e,t,n){return(await this.beginDeleteAtScope(e,t,n)).pollUntilDone()}checkExistenceAtScope(e,t,n){return this.client.sendOperationRequest({scope:e,deploymentName:t,options:n},u)}async beginCreateOrUpdateAtScope(e,t,n,r){let i=async(e,t)=>this.client.sendOperationRequest(e,t),a=(0,s.createLroSpec)({sendOperationFn:async(e,t)=>{let n,r=e.options?.onResponse;return{flatResponse:await i(Object.assign(Object.assign({},e),{options:Object.assign(Object.assign({},e.options),{onResponse:(e,t)=>{n=e,r?.(e,t)}})}),t),rawResponse:{statusCode:n.status,body:n.parsedBody,headers:n.headers.toJSON()}}},args:{scope:e,deploymentName:t,parameters:n,options:r},spec:d}),c=await(0,o.createHttpPoller)(a,{restoreFrom:r?.resumeFrom,intervalInMs:r?.updateIntervalInMs});return await c.poll(),c}async beginCreateOrUpdateAtScopeAndWait(e,t,n,r){return(await this.beginCreateOrUpdateAtScope(e,t,n,r)).pollUntilDone()}getAtScope(e,t,n){return this.client.sendOperationRequest({scope:e,deploymentName:t,options:n},f)}cancelAtScope(e,t,n){return this.client.sendOperationRequest({scope:e,deploymentName:t,options:n},p)}async beginValidateAtScope(e,t,n,r){let i=async(e,t)=>this.client.sendOperationRequest(e,t),a=(0,s.createLroSpec)({sendOperationFn:async(e,t)=>{let n,r=e.options?.onResponse;return{flatResponse:await i(Object.assign(Object.assign({},e),{options:Object.assign(Object.assign({},e.options),{onResponse:(e,t)=>{n=e,r?.(e,t)}})}),t),rawResponse:{statusCode:n.status,body:n.parsedBody,headers:n.headers.toJSON()}}},args:{scope:e,deploymentName:t,parameters:n,options:r},spec:m}),c=await(0,o.createHttpPoller)(a,{restoreFrom:r?.resumeFrom,intervalInMs:r?.updateIntervalInMs});return await c.poll(),c}async beginValidateAtScopeAndWait(e,t,n,r){return(await this.beginValidateAtScope(e,t,n,r)).pollUntilDone()}exportTemplateAtScope(e,t,n){return this.client.sendOperationRequest({scope:e,deploymentName:t,options:n},h)}_listAtScope(e,t){return this.client.sendOperationRequest({scope:e,options:t},g)}async beginDeleteAtTenantScope(e,t){let n=async(e,t)=>this.client.sendOperationRequest(e,t),r=(0,s.createLroSpec)({sendOperationFn:async(e,t)=>{let r,i=e.options?.onResponse;return{flatResponse:await n(Object.assign(Object.assign({},e),{options:Object.assign(Object.assign({},e.options),{onResponse:(e,t)=>{r=e,i?.(e,t)}})}),t),rawResponse:{statusCode:r.status,body:r.parsedBody,headers:r.headers.toJSON()}}},args:{deploymentName:e,options:t},spec:_}),i=await(0,o.createHttpPoller)(r,{restoreFrom:t?.resumeFrom,intervalInMs:t?.updateIntervalInMs});return await i.poll(),i}async beginDeleteAtTenantScopeAndWait(e,t){return(await this.beginDeleteAtTenantScope(e,t)).pollUntilDone()}checkExistenceAtTenantScope(e,t){return this.client.sendOperationRequest({deploymentName:e,options:t},v)}async beginCreateOrUpdateAtTenantScope(e,t,n){let r=async(e,t)=>this.client.sendOperationRequest(e,t),i=(0,s.createLroSpec)({sendOperationFn:async(e,t)=>{let n,i=e.options?.onResponse;return{flatResponse:await r(Object.assign(Object.assign({},e),{options:Object.assign(Object.assign({},e.options),{onResponse:(e,t)=>{n=e,i?.(e,t)}})}),t),rawResponse:{statusCode:n.status,body:n.parsedBody,headers:n.headers.toJSON()}}},args:{deploymentName:e,parameters:t,options:n},spec:y}),a=await(0,o.createHttpPoller)(i,{restoreFrom:n?.resumeFrom,intervalInMs:n?.updateIntervalInMs});return await a.poll(),a}async beginCreateOrUpdateAtTenantScopeAndWait(e,t,n){return(await this.beginCreateOrUpdateAtTenantScope(e,t,n)).pollUntilDone()}getAtTenantScope(e,t){return this.client.sendOperationRequest({deploymentName:e,options:t},b)}cancelAtTenantScope(e,t){return this.client.sendOperationRequest({deploymentName:e,options:t},x)}async beginValidateAtTenantScope(e,t,n){let r=async(e,t)=>this.client.sendOperationRequest(e,t),i=(0,s.createLroSpec)({sendOperationFn:async(e,t)=>{let n,i=e.options?.onResponse;return{flatResponse:await r(Object.assign(Object.assign({},e),{options:Object.assign(Object.assign({},e.options),{onResponse:(e,t)=>{n=e,i?.(e,t)}})}),t),rawResponse:{statusCode:n.status,body:n.parsedBody,headers:n.headers.toJSON()}}},args:{deploymentName:e,parameters:t,options:n},spec:S}),a=await(0,o.createHttpPoller)(i,{restoreFrom:n?.resumeFrom,intervalInMs:n?.updateIntervalInMs});return await a.poll(),a}async beginValidateAtTenantScopeAndWait(e,t,n){return(await this.beginValidateAtTenantScope(e,t,n)).pollUntilDone()}async beginWhatIfAtTenantScope(e,t,n){let r=async(e,t)=>this.client.sendOperationRequest(e,t),i=(0,s.createLroSpec)({sendOperationFn:async(e,t)=>{let n,i=e.options?.onResponse;return{flatResponse:await r(Object.assign(Object.assign({},e),{options:Object.assign(Object.assign({},e.options),{onResponse:(e,t)=>{n=e,i?.(e,t)}})}),t),rawResponse:{statusCode:n.status,body:n.parsedBody,headers:n.headers.toJSON()}}},args:{deploymentName:e,parameters:t,options:n},spec:C}),a=await(0,o.createHttpPoller)(i,{restoreFrom:n?.resumeFrom,intervalInMs:n?.updateIntervalInMs,resourceLocationConfig:`location`});return await a.poll(),a}async beginWhatIfAtTenantScopeAndWait(e,t,n){return(await this.beginWhatIfAtTenantScope(e,t,n)).pollUntilDone()}exportTemplateAtTenantScope(e,t){return this.client.sendOperationRequest({deploymentName:e,options:t},T)}_listAtTenantScope(e){return this.client.sendOperationRequest({options:e},E)}async beginDeleteAtManagementGroupScope(e,t,n){let r=async(e,t)=>this.client.sendOperationRequest(e,t),i=(0,s.createLroSpec)({sendOperationFn:async(e,t)=>{let n,i=e.options?.onResponse;return{flatResponse:await r(Object.assign(Object.assign({},e),{options:Object.assign(Object.assign({},e.options),{onResponse:(e,t)=>{n=e,i?.(e,t)}})}),t),rawResponse:{statusCode:n.status,body:n.parsedBody,headers:n.headers.toJSON()}}},args:{groupId:e,deploymentName:t,options:n},spec:D}),a=await(0,o.createHttpPoller)(i,{restoreFrom:n?.resumeFrom,intervalInMs:n?.updateIntervalInMs});return await a.poll(),a}async beginDeleteAtManagementGroupScopeAndWait(e,t,n){return(await this.beginDeleteAtManagementGroupScope(e,t,n)).pollUntilDone()}checkExistenceAtManagementGroupScope(e,t,n){return this.client.sendOperationRequest({groupId:e,deploymentName:t,options:n},O)}async beginCreateOrUpdateAtManagementGroupScope(e,t,n,r){let i=async(e,t)=>this.client.sendOperationRequest(e,t),a=(0,s.createLroSpec)({sendOperationFn:async(e,t)=>{let n,r=e.options?.onResponse;return{flatResponse:await i(Object.assign(Object.assign({},e),{options:Object.assign(Object.assign({},e.options),{onResponse:(e,t)=>{n=e,r?.(e,t)}})}),t),rawResponse:{statusCode:n.status,body:n.parsedBody,headers:n.headers.toJSON()}}},args:{groupId:e,deploymentName:t,parameters:n,options:r},spec:k}),c=await(0,o.createHttpPoller)(a,{restoreFrom:r?.resumeFrom,intervalInMs:r?.updateIntervalInMs});return await c.poll(),c}async beginCreateOrUpdateAtManagementGroupScopeAndWait(e,t,n,r){return(await this.beginCreateOrUpdateAtManagementGroupScope(e,t,n,r)).pollUntilDone()}getAtManagementGroupScope(e,t,n){return this.client.sendOperationRequest({groupId:e,deploymentName:t,options:n},A)}cancelAtManagementGroupScope(e,t,n){return this.client.sendOperationRequest({groupId:e,deploymentName:t,options:n},j)}async beginValidateAtManagementGroupScope(e,t,n,r){let i=async(e,t)=>this.client.sendOperationRequest(e,t),a=(0,s.createLroSpec)({sendOperationFn:async(e,t)=>{let n,r=e.options?.onResponse;return{flatResponse:await i(Object.assign(Object.assign({},e),{options:Object.assign(Object.assign({},e.options),{onResponse:(e,t)=>{n=e,r?.(e,t)}})}),t),rawResponse:{statusCode:n.status,body:n.parsedBody,headers:n.headers.toJSON()}}},args:{groupId:e,deploymentName:t,parameters:n,options:r},spec:M}),c=await(0,o.createHttpPoller)(a,{restoreFrom:r?.resumeFrom,intervalInMs:r?.updateIntervalInMs});return await c.poll(),c}async beginValidateAtManagementGroupScopeAndWait(e,t,n,r){return(await this.beginValidateAtManagementGroupScope(e,t,n,r)).pollUntilDone()}async beginWhatIfAtManagementGroupScope(e,t,n,r){let i=async(e,t)=>this.client.sendOperationRequest(e,t),a=(0,s.createLroSpec)({sendOperationFn:async(e,t)=>{let n,r=e.options?.onResponse;return{flatResponse:await i(Object.assign(Object.assign({},e),{options:Object.assign(Object.assign({},e.options),{onResponse:(e,t)=>{n=e,r?.(e,t)}})}),t),rawResponse:{statusCode:n.status,body:n.parsedBody,headers:n.headers.toJSON()}}},args:{groupId:e,deploymentName:t,parameters:n,options:r},spec:N}),c=await(0,o.createHttpPoller)(a,{restoreFrom:r?.resumeFrom,intervalInMs:r?.updateIntervalInMs,resourceLocationConfig:`location`});return await c.poll(),c}async beginWhatIfAtManagementGroupScopeAndWait(e,t,n,r){return(await this.beginWhatIfAtManagementGroupScope(e,t,n,r)).pollUntilDone()}exportTemplateAtManagementGroupScope(e,t,n){return this.client.sendOperationRequest({groupId:e,deploymentName:t,options:n},ee)}_listAtManagementGroupScope(e,t){return this.client.sendOperationRequest({groupId:e,options:t},P)}async beginDeleteAtSubscriptionScope(e,t){let n=async(e,t)=>this.client.sendOperationRequest(e,t),r=(0,s.createLroSpec)({sendOperationFn:async(e,t)=>{let r,i=e.options?.onResponse;return{flatResponse:await n(Object.assign(Object.assign({},e),{options:Object.assign(Object.assign({},e.options),{onResponse:(e,t)=>{r=e,i?.(e,t)}})}),t),rawResponse:{statusCode:r.status,body:r.parsedBody,headers:r.headers.toJSON()}}},args:{deploymentName:e,options:t},spec:F}),i=await(0,o.createHttpPoller)(r,{restoreFrom:t?.resumeFrom,intervalInMs:t?.updateIntervalInMs});return await i.poll(),i}async beginDeleteAtSubscriptionScopeAndWait(e,t){return(await this.beginDeleteAtSubscriptionScope(e,t)).pollUntilDone()}checkExistenceAtSubscriptionScope(e,t){return this.client.sendOperationRequest({deploymentName:e,options:t},I)}async beginCreateOrUpdateAtSubscriptionScope(e,t,n){let r=async(e,t)=>this.client.sendOperationRequest(e,t),i=(0,s.createLroSpec)({sendOperationFn:async(e,t)=>{let n,i=e.options?.onResponse;return{flatResponse:await r(Object.assign(Object.assign({},e),{options:Object.assign(Object.assign({},e.options),{onResponse:(e,t)=>{n=e,i?.(e,t)}})}),t),rawResponse:{statusCode:n.status,body:n.parsedBody,headers:n.headers.toJSON()}}},args:{deploymentName:e,parameters:t,options:n},spec:L}),a=await(0,o.createHttpPoller)(i,{restoreFrom:n?.resumeFrom,intervalInMs:n?.updateIntervalInMs});return await a.poll(),a}async beginCreateOrUpdateAtSubscriptionScopeAndWait(e,t,n){return(await this.beginCreateOrUpdateAtSubscriptionScope(e,t,n)).pollUntilDone()}getAtSubscriptionScope(e,t){return this.client.sendOperationRequest({deploymentName:e,options:t},R)}cancelAtSubscriptionScope(e,t){return this.client.sendOperationRequest({deploymentName:e,options:t},z)}async beginValidateAtSubscriptionScope(e,t,n){let r=async(e,t)=>this.client.sendOperationRequest(e,t),i=(0,s.createLroSpec)({sendOperationFn:async(e,t)=>{let n,i=e.options?.onResponse;return{flatResponse:await r(Object.assign(Object.assign({},e),{options:Object.assign(Object.assign({},e.options),{onResponse:(e,t)=>{n=e,i?.(e,t)}})}),t),rawResponse:{statusCode:n.status,body:n.parsedBody,headers:n.headers.toJSON()}}},args:{deploymentName:e,parameters:t,options:n},spec:B}),a=await(0,o.createHttpPoller)(i,{restoreFrom:n?.resumeFrom,intervalInMs:n?.updateIntervalInMs});return await a.poll(),a}async beginValidateAtSubscriptionScopeAndWait(e,t,n){return(await this.beginValidateAtSubscriptionScope(e,t,n)).pollUntilDone()}async beginWhatIfAtSubscriptionScope(e,t,n){let r=async(e,t)=>this.client.sendOperationRequest(e,t),i=(0,s.createLroSpec)({sendOperationFn:async(e,t)=>{let n,i=e.options?.onResponse;return{flatResponse:await r(Object.assign(Object.assign({},e),{options:Object.assign(Object.assign({},e.options),{onResponse:(e,t)=>{n=e,i?.(e,t)}})}),t),rawResponse:{statusCode:n.status,body:n.parsedBody,headers:n.headers.toJSON()}}},args:{deploymentName:e,parameters:t,options:n},spec:V}),a=await(0,o.createHttpPoller)(i,{restoreFrom:n?.resumeFrom,intervalInMs:n?.updateIntervalInMs,resourceLocationConfig:`location`});return await a.poll(),a}async beginWhatIfAtSubscriptionScopeAndWait(e,t,n){return(await this.beginWhatIfAtSubscriptionScope(e,t,n)).pollUntilDone()}exportTemplateAtSubscriptionScope(e,t){return this.client.sendOperationRequest({deploymentName:e,options:t},te)}_listAtSubscriptionScope(e){return this.client.sendOperationRequest({options:e},H)}async beginDelete(e,t,n){let r=async(e,t)=>this.client.sendOperationRequest(e,t),i=(0,s.createLroSpec)({sendOperationFn:async(e,t)=>{let n,i=e.options?.onResponse;return{flatResponse:await r(Object.assign(Object.assign({},e),{options:Object.assign(Object.assign({},e.options),{onResponse:(e,t)=>{n=e,i?.(e,t)}})}),t),rawResponse:{statusCode:n.status,body:n.parsedBody,headers:n.headers.toJSON()}}},args:{resourceGroupName:e,deploymentName:t,options:n},spec:ne}),a=await(0,o.createHttpPoller)(i,{restoreFrom:n?.resumeFrom,intervalInMs:n?.updateIntervalInMs});return await a.poll(),a}async beginDeleteAndWait(e,t,n){return(await this.beginDelete(e,t,n)).pollUntilDone()}checkExistence(e,t,n){return this.client.sendOperationRequest({resourceGroupName:e,deploymentName:t,options:n},re)}async beginCreateOrUpdate(e,t,n,r){let i=async(e,t)=>this.client.sendOperationRequest(e,t),a=(0,s.createLroSpec)({sendOperationFn:async(e,t)=>{let n,r=e.options?.onResponse;return{flatResponse:await i(Object.assign(Object.assign({},e),{options:Object.assign(Object.assign({},e.options),{onResponse:(e,t)=>{n=e,r?.(e,t)}})}),t),rawResponse:{statusCode:n.status,body:n.parsedBody,headers:n.headers.toJSON()}}},args:{resourceGroupName:e,deploymentName:t,parameters:n,options:r},spec:U}),c=await(0,o.createHttpPoller)(a,{restoreFrom:r?.resumeFrom,intervalInMs:r?.updateIntervalInMs});return await c.poll(),c}async beginCreateOrUpdateAndWait(e,t,n,r){return(await this.beginCreateOrUpdate(e,t,n,r)).pollUntilDone()}get(e,t,n){return this.client.sendOperationRequest({resourceGroupName:e,deploymentName:t,options:n},ie)}cancel(e,t,n){return this.client.sendOperationRequest({resourceGroupName:e,deploymentName:t,options:n},W)}async beginValidate(e,t,n,r){let i=async(e,t)=>this.client.sendOperationRequest(e,t),a=(0,s.createLroSpec)({sendOperationFn:async(e,t)=>{let n,r=e.options?.onResponse;return{flatResponse:await i(Object.assign(Object.assign({},e),{options:Object.assign(Object.assign({},e.options),{onResponse:(e,t)=>{n=e,r?.(e,t)}})}),t),rawResponse:{statusCode:n.status,body:n.parsedBody,headers:n.headers.toJSON()}}},args:{resourceGroupName:e,deploymentName:t,parameters:n,options:r},spec:ae}),c=await(0,o.createHttpPoller)(a,{restoreFrom:r?.resumeFrom,intervalInMs:r?.updateIntervalInMs});return await c.poll(),c}async beginValidateAndWait(e,t,n,r){return(await this.beginValidate(e,t,n,r)).pollUntilDone()}async beginWhatIf(e,t,n,r){let i=async(e,t)=>this.client.sendOperationRequest(e,t),a=(0,s.createLroSpec)({sendOperationFn:async(e,t)=>{let n,r=e.options?.onResponse;return{flatResponse:await i(Object.assign(Object.assign({},e),{options:Object.assign(Object.assign({},e.options),{onResponse:(e,t)=>{n=e,r?.(e,t)}})}),t),rawResponse:{statusCode:n.status,body:n.parsedBody,headers:n.headers.toJSON()}}},args:{resourceGroupName:e,deploymentName:t,parameters:n,options:r},spec:G}),c=await(0,o.createHttpPoller)(a,{restoreFrom:r?.resumeFrom,intervalInMs:r?.updateIntervalInMs,resourceLocationConfig:`location`});return await c.poll(),c}async beginWhatIfAndWait(e,t,n,r){return(await this.beginWhatIf(e,t,n,r)).pollUntilDone()}exportTemplate(e,t,n){return this.client.sendOperationRequest({resourceGroupName:e,deploymentName:t,options:n},oe)}_listByResourceGroup(e,t){return this.client.sendOperationRequest({resourceGroupName:e,options:t},se)}calculateTemplateHash(e,t){return this.client.sendOperationRequest({template:e,options:t},ce)}_listAtScopeNext(e,t,n){return this.client.sendOperationRequest({scope:e,nextLink:t,options:n},le)}_listAtTenantScopeNext(e,t){return this.client.sendOperationRequest({nextLink:e,options:t},ue)}_listAtManagementGroupScopeNext(e,t,n){return this.client.sendOperationRequest({groupId:e,nextLink:t,options:n},de)}_listAtSubscriptionScopeNext(e,t){return this.client.sendOperationRequest({nextLink:e,options:t},fe)}_listByResourceGroupNext(e,t,n){return this.client.sendOperationRequest({resourceGroupName:e,nextLink:t,options:n},pe)}};let c=r.createSerializer(i,!1),l={path:`/{scope}/providers/Microsoft.Resources/deployments/{deploymentName}`,httpMethod:`DELETE`,responses:{200:{},201:{},202:{},204:{},default:{bodyMapper:i.CloudError}},queryParameters:[a.apiVersion],urlParameters:[a.$host,a.scope,a.deploymentName],headerParameters:[a.accept],serializer:c},u={path:`/{scope}/providers/Microsoft.Resources/deployments/{deploymentName}`,httpMethod:`HEAD`,responses:{204:{},404:{},default:{bodyMapper:i.CloudError}},queryParameters:[a.apiVersion],urlParameters:[a.$host,a.scope,a.deploymentName],headerParameters:[a.accept],serializer:c},d={path:`/{scope}/providers/Microsoft.Resources/deployments/{deploymentName}`,httpMethod:`PUT`,responses:{200:{bodyMapper:i.DeploymentExtended},201:{bodyMapper:i.DeploymentExtended},202:{bodyMapper:i.DeploymentExtended},204:{bodyMapper:i.DeploymentExtended},default:{bodyMapper:i.CloudError}},requestBody:a.parameters,queryParameters:[a.apiVersion],urlParameters:[a.$host,a.scope,a.deploymentName],headerParameters:[a.accept,a.contentType],mediaType:`json`,serializer:c},f={path:`/{scope}/providers/Microsoft.Resources/deployments/{deploymentName}`,httpMethod:`GET`,responses:{200:{bodyMapper:i.DeploymentExtended},default:{bodyMapper:i.CloudError}},queryParameters:[a.apiVersion],urlParameters:[a.$host,a.scope,a.deploymentName],headerParameters:[a.accept],serializer:c},p={path:`/{scope}/providers/Microsoft.Resources/deployments/{deploymentName}/cancel`,httpMethod:`POST`,responses:{204:{},default:{bodyMapper:i.CloudError}},queryParameters:[a.apiVersion],urlParameters:[a.$host,a.scope,a.deploymentName],headerParameters:[a.accept],serializer:c},m={path:`/{scope}/providers/Microsoft.Resources/deployments/{deploymentName}/validate`,httpMethod:`POST`,responses:{200:{bodyMapper:i.DeploymentValidateResult},201:{bodyMapper:i.DeploymentValidateResult},202:{bodyMapper:i.DeploymentValidateResult},204:{bodyMapper:i.DeploymentValidateResult},default:{bodyMapper:i.CloudError}},requestBody:a.parameters,queryParameters:[a.apiVersion],urlParameters:[a.$host,a.scope,a.deploymentName],headerParameters:[a.accept,a.contentType],mediaType:`json`,serializer:c},h={path:`/{scope}/providers/Microsoft.Resources/deployments/{deploymentName}/exportTemplate`,httpMethod:`POST`,responses:{200:{bodyMapper:i.DeploymentExportResult},default:{bodyMapper:i.CloudError}},queryParameters:[a.apiVersion],urlParameters:[a.$host,a.scope,a.deploymentName],headerParameters:[a.accept],serializer:c},g={path:`/{scope}/providers/Microsoft.Resources/deployments/`,httpMethod:`GET`,responses:{200:{bodyMapper:i.DeploymentListResult},default:{bodyMapper:i.CloudError}},queryParameters:[a.apiVersion,a.filter,a.top],urlParameters:[a.$host,a.scope],headerParameters:[a.accept],serializer:c},_={path:`/providers/Microsoft.Resources/deployments/{deploymentName}`,httpMethod:`DELETE`,responses:{200:{},201:{},202:{},204:{},default:{bodyMapper:i.CloudError}},queryParameters:[a.apiVersion],urlParameters:[a.$host,a.deploymentName],headerParameters:[a.accept],serializer:c},v={path:`/providers/Microsoft.Resources/deployments/{deploymentName}`,httpMethod:`HEAD`,responses:{204:{},404:{},default:{bodyMapper:i.CloudError}},queryParameters:[a.apiVersion],urlParameters:[a.$host,a.deploymentName],headerParameters:[a.accept],serializer:c},y={path:`/providers/Microsoft.Resources/deployments/{deploymentName}`,httpMethod:`PUT`,responses:{200:{bodyMapper:i.DeploymentExtended},201:{bodyMapper:i.DeploymentExtended},202:{bodyMapper:i.DeploymentExtended},204:{bodyMapper:i.DeploymentExtended},default:{bodyMapper:i.CloudError}},requestBody:a.parameters1,queryParameters:[a.apiVersion],urlParameters:[a.$host,a.deploymentName],headerParameters:[a.accept,a.contentType],mediaType:`json`,serializer:c},b={path:`/providers/Microsoft.Resources/deployments/{deploymentName}`,httpMethod:`GET`,responses:{200:{bodyMapper:i.DeploymentExtended},default:{bodyMapper:i.CloudError}},queryParameters:[a.apiVersion],urlParameters:[a.$host,a.deploymentName],headerParameters:[a.accept],serializer:c},x={path:`/providers/Microsoft.Resources/deployments/{deploymentName}/cancel`,httpMethod:`POST`,responses:{204:{},default:{bodyMapper:i.CloudError}},queryParameters:[a.apiVersion],urlParameters:[a.$host,a.deploymentName],headerParameters:[a.accept],serializer:c},S={path:`/providers/Microsoft.Resources/deployments/{deploymentName}/validate`,httpMethod:`POST`,responses:{200:{bodyMapper:i.DeploymentValidateResult},201:{bodyMapper:i.DeploymentValidateResult},202:{bodyMapper:i.DeploymentValidateResult},204:{bodyMapper:i.DeploymentValidateResult},default:{bodyMapper:i.CloudError}},requestBody:a.parameters1,queryParameters:[a.apiVersion],urlParameters:[a.$host,a.deploymentName],headerParameters:[a.accept,a.contentType],mediaType:`json`,serializer:c},C={path:`/providers/Microsoft.Resources/deployments/{deploymentName}/whatIf`,httpMethod:`POST`,responses:{200:{bodyMapper:i.WhatIfOperationResult},201:{bodyMapper:i.WhatIfOperationResult},202:{bodyMapper:i.WhatIfOperationResult},204:{bodyMapper:i.WhatIfOperationResult},default:{bodyMapper:i.CloudError}},requestBody:a.parameters2,queryParameters:[a.apiVersion],urlParameters:[a.$host,a.deploymentName],headerParameters:[a.accept,a.contentType],mediaType:`json`,serializer:c},T={path:`/providers/Microsoft.Resources/deployments/{deploymentName}/exportTemplate`,httpMethod:`POST`,responses:{200:{bodyMapper:i.DeploymentExportResult},default:{bodyMapper:i.CloudError}},queryParameters:[a.apiVersion],urlParameters:[a.$host,a.deploymentName],headerParameters:[a.accept],serializer:c},E={path:`/providers/Microsoft.Resources/deployments/`,httpMethod:`GET`,responses:{200:{bodyMapper:i.DeploymentListResult},default:{bodyMapper:i.CloudError}},queryParameters:[a.apiVersion,a.filter,a.top],urlParameters:[a.$host],headerParameters:[a.accept],serializer:c},D={path:`/providers/Microsoft.Management/managementGroups/{groupId}/providers/Microsoft.Resources/deployments/{deploymentName}`,httpMethod:`DELETE`,responses:{200:{},201:{},202:{},204:{},default:{bodyMapper:i.CloudError}},queryParameters:[a.apiVersion],urlParameters:[a.$host,a.deploymentName,a.groupId],headerParameters:[a.accept],serializer:c},O={path:`/providers/Microsoft.Management/managementGroups/{groupId}/providers/Microsoft.Resources/deployments/{deploymentName}`,httpMethod:`HEAD`,responses:{204:{},404:{},default:{bodyMapper:i.CloudError}},queryParameters:[a.apiVersion],urlParameters:[a.$host,a.deploymentName,a.groupId],headerParameters:[a.accept],serializer:c},k={path:`/providers/Microsoft.Management/managementGroups/{groupId}/providers/Microsoft.Resources/deployments/{deploymentName}`,httpMethod:`PUT`,responses:{200:{bodyMapper:i.DeploymentExtended},201:{bodyMapper:i.DeploymentExtended},202:{bodyMapper:i.DeploymentExtended},204:{bodyMapper:i.DeploymentExtended},default:{bodyMapper:i.CloudError}},requestBody:a.parameters1,queryParameters:[a.apiVersion],urlParameters:[a.$host,a.deploymentName,a.groupId],headerParameters:[a.accept,a.contentType],mediaType:`json`,serializer:c},A={path:`/providers/Microsoft.Management/managementGroups/{groupId}/providers/Microsoft.Resources/deployments/{deploymentName}`,httpMethod:`GET`,responses:{200:{bodyMapper:i.DeploymentExtended},default:{bodyMapper:i.CloudError}},queryParameters:[a.apiVersion],urlParameters:[a.$host,a.deploymentName,a.groupId],headerParameters:[a.accept],serializer:c},j={path:`/providers/Microsoft.Management/managementGroups/{groupId}/providers/Microsoft.Resources/deployments/{deploymentName}/cancel`,httpMethod:`POST`,responses:{204:{},default:{bodyMapper:i.CloudError}},queryParameters:[a.apiVersion],urlParameters:[a.$host,a.deploymentName,a.groupId],headerParameters:[a.accept],serializer:c},M={path:`/providers/Microsoft.Management/managementGroups/{groupId}/providers/Microsoft.Resources/deployments/{deploymentName}/validate`,httpMethod:`POST`,responses:{200:{bodyMapper:i.DeploymentValidateResult},201:{bodyMapper:i.DeploymentValidateResult},202:{bodyMapper:i.DeploymentValidateResult},204:{bodyMapper:i.DeploymentValidateResult},default:{bodyMapper:i.CloudError}},requestBody:a.parameters1,queryParameters:[a.apiVersion],urlParameters:[a.$host,a.deploymentName,a.groupId],headerParameters:[a.accept,a.contentType],mediaType:`json`,serializer:c},N={path:`/providers/Microsoft.Management/managementGroups/{groupId}/providers/Microsoft.Resources/deployments/{deploymentName}/whatIf`,httpMethod:`POST`,responses:{200:{bodyMapper:i.WhatIfOperationResult},201:{bodyMapper:i.WhatIfOperationResult},202:{bodyMapper:i.WhatIfOperationResult},204:{bodyMapper:i.WhatIfOperationResult},default:{bodyMapper:i.CloudError}},requestBody:a.parameters2,queryParameters:[a.apiVersion],urlParameters:[a.$host,a.deploymentName,a.groupId],headerParameters:[a.accept,a.contentType],mediaType:`json`,serializer:c},ee={path:`/providers/Microsoft.Management/managementGroups/{groupId}/providers/Microsoft.Resources/deployments/{deploymentName}/exportTemplate`,httpMethod:`POST`,responses:{200:{bodyMapper:i.DeploymentExportResult},default:{bodyMapper:i.CloudError}},queryParameters:[a.apiVersion],urlParameters:[a.$host,a.deploymentName,a.groupId],headerParameters:[a.accept],serializer:c},P={path:`/providers/Microsoft.Management/managementGroups/{groupId}/providers/Microsoft.Resources/deployments/`,httpMethod:`GET`,responses:{200:{bodyMapper:i.DeploymentListResult},default:{bodyMapper:i.CloudError}},queryParameters:[a.apiVersion,a.filter,a.top],urlParameters:[a.$host,a.groupId],headerParameters:[a.accept],serializer:c},F={path:`/subscriptions/{subscriptionId}/providers/Microsoft.Resources/deployments/{deploymentName}`,httpMethod:`DELETE`,responses:{200:{},201:{},202:{},204:{},default:{bodyMapper:i.CloudError}},queryParameters:[a.apiVersion],urlParameters:[a.$host,a.deploymentName,a.subscriptionId],headerParameters:[a.accept],serializer:c},I={path:`/subscriptions/{subscriptionId}/providers/Microsoft.Resources/deployments/{deploymentName}`,httpMethod:`HEAD`,responses:{204:{},404:{},default:{bodyMapper:i.CloudError}},queryParameters:[a.apiVersion],urlParameters:[a.$host,a.deploymentName,a.subscriptionId],headerParameters:[a.accept],serializer:c},L={path:`/subscriptions/{subscriptionId}/providers/Microsoft.Resources/deployments/{deploymentName}`,httpMethod:`PUT`,responses:{200:{bodyMapper:i.DeploymentExtended},201:{bodyMapper:i.DeploymentExtended},202:{bodyMapper:i.DeploymentExtended},204:{bodyMapper:i.DeploymentExtended},default:{bodyMapper:i.CloudError}},requestBody:a.parameters,queryParameters:[a.apiVersion],urlParameters:[a.$host,a.deploymentName,a.subscriptionId],headerParameters:[a.accept,a.contentType],mediaType:`json`,serializer:c},R={path:`/subscriptions/{subscriptionId}/providers/Microsoft.Resources/deployments/{deploymentName}`,httpMethod:`GET`,responses:{200:{bodyMapper:i.DeploymentExtended},default:{bodyMapper:i.CloudError}},queryParameters:[a.apiVersion],urlParameters:[a.$host,a.deploymentName,a.subscriptionId],headerParameters:[a.accept],serializer:c},z={path:`/subscriptions/{subscriptionId}/providers/Microsoft.Resources/deployments/{deploymentName}/cancel`,httpMethod:`POST`,responses:{204:{},default:{bodyMapper:i.CloudError}},queryParameters:[a.apiVersion],urlParameters:[a.$host,a.deploymentName,a.subscriptionId],headerParameters:[a.accept],serializer:c},B={path:`/subscriptions/{subscriptionId}/providers/Microsoft.Resources/deployments/{deploymentName}/validate`,httpMethod:`POST`,responses:{200:{bodyMapper:i.DeploymentValidateResult},201:{bodyMapper:i.DeploymentValidateResult},202:{bodyMapper:i.DeploymentValidateResult},204:{bodyMapper:i.DeploymentValidateResult},default:{bodyMapper:i.CloudError}},requestBody:a.parameters,queryParameters:[a.apiVersion],urlParameters:[a.$host,a.deploymentName,a.subscriptionId],headerParameters:[a.accept,a.contentType],mediaType:`json`,serializer:c},V={path:`/subscriptions/{subscriptionId}/providers/Microsoft.Resources/deployments/{deploymentName}/whatIf`,httpMethod:`POST`,responses:{200:{bodyMapper:i.WhatIfOperationResult},201:{bodyMapper:i.WhatIfOperationResult},202:{bodyMapper:i.WhatIfOperationResult},204:{bodyMapper:i.WhatIfOperationResult},default:{bodyMapper:i.CloudError}},requestBody:a.parameters3,queryParameters:[a.apiVersion],urlParameters:[a.$host,a.deploymentName,a.subscriptionId],headerParameters:[a.accept,a.contentType],mediaType:`json`,serializer:c},te={path:`/subscriptions/{subscriptionId}/providers/Microsoft.Resources/deployments/{deploymentName}/exportTemplate`,httpMethod:`POST`,responses:{200:{bodyMapper:i.DeploymentExportResult},default:{bodyMapper:i.CloudError}},queryParameters:[a.apiVersion],urlParameters:[a.$host,a.deploymentName,a.subscriptionId],headerParameters:[a.accept],serializer:c},H={path:`/subscriptions/{subscriptionId}/providers/Microsoft.Resources/deployments/`,httpMethod:`GET`,responses:{200:{bodyMapper:i.DeploymentListResult},default:{bodyMapper:i.CloudError}},queryParameters:[a.apiVersion,a.filter,a.top],urlParameters:[a.$host,a.subscriptionId],headerParameters:[a.accept],serializer:c},ne={path:`/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.Resources/deployments/{deploymentName}`,httpMethod:`DELETE`,responses:{200:{},201:{},202:{},204:{},default:{bodyMapper:i.CloudError}},queryParameters:[a.apiVersion],urlParameters:[a.$host,a.deploymentName,a.subscriptionId,a.resourceGroupName],headerParameters:[a.accept],serializer:c},re={path:`/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.Resources/deployments/{deploymentName}`,httpMethod:`HEAD`,responses:{204:{},404:{},default:{bodyMapper:i.CloudError}},queryParameters:[a.apiVersion],urlParameters:[a.$host,a.deploymentName,a.subscriptionId,a.resourceGroupName],headerParameters:[a.accept],serializer:c},U={path:`/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.Resources/deployments/{deploymentName}`,httpMethod:`PUT`,responses:{200:{bodyMapper:i.DeploymentExtended},201:{bodyMapper:i.DeploymentExtended},202:{bodyMapper:i.DeploymentExtended},204:{bodyMapper:i.DeploymentExtended},default:{bodyMapper:i.CloudError}},requestBody:a.parameters,queryParameters:[a.apiVersion],urlParameters:[a.$host,a.deploymentName,a.subscriptionId,a.resourceGroupName],headerParameters:[a.accept,a.contentType],mediaType:`json`,serializer:c},ie={path:`/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.Resources/deployments/{deploymentName}`,httpMethod:`GET`,responses:{200:{bodyMapper:i.DeploymentExtended},default:{bodyMapper:i.CloudError}},queryParameters:[a.apiVersion],urlParameters:[a.$host,a.deploymentName,a.subscriptionId,a.resourceGroupName],headerParameters:[a.accept],serializer:c},W={path:`/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.Resources/deployments/{deploymentName}/cancel`,httpMethod:`POST`,responses:{204:{},default:{bodyMapper:i.CloudError}},queryParameters:[a.apiVersion],urlParameters:[a.$host,a.deploymentName,a.subscriptionId,a.resourceGroupName],headerParameters:[a.accept],serializer:c},ae={path:`/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.Resources/deployments/{deploymentName}/validate`,httpMethod:`POST`,responses:{200:{bodyMapper:i.DeploymentValidateResult},201:{bodyMapper:i.DeploymentValidateResult},202:{bodyMapper:i.DeploymentValidateResult},204:{bodyMapper:i.DeploymentValidateResult},default:{bodyMapper:i.CloudError}},requestBody:a.parameters,queryParameters:[a.apiVersion],urlParameters:[a.$host,a.deploymentName,a.subscriptionId,a.resourceGroupName],headerParameters:[a.accept,a.contentType],mediaType:`json`,serializer:c},G={path:`/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.Resources/deployments/{deploymentName}/whatIf`,httpMethod:`POST`,responses:{200:{bodyMapper:i.WhatIfOperationResult},201:{bodyMapper:i.WhatIfOperationResult},202:{bodyMapper:i.WhatIfOperationResult},204:{bodyMapper:i.WhatIfOperationResult},default:{bodyMapper:i.CloudError}},requestBody:a.parameters3,queryParameters:[a.apiVersion],urlParameters:[a.$host,a.deploymentName,a.subscriptionId,a.resourceGroupName],headerParameters:[a.accept,a.contentType],mediaType:`json`,serializer:c},oe={path:`/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.Resources/deployments/{deploymentName}/exportTemplate`,httpMethod:`POST`,responses:{200:{bodyMapper:i.DeploymentExportResult},default:{bodyMapper:i.CloudError}},queryParameters:[a.apiVersion],urlParameters:[a.$host,a.deploymentName,a.subscriptionId,a.resourceGroupName],headerParameters:[a.accept],serializer:c},se={path:`/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.Resources/deployments/`,httpMethod:`GET`,responses:{200:{bodyMapper:i.DeploymentListResult},default:{bodyMapper:i.CloudError}},queryParameters:[a.apiVersion,a.filter,a.top],urlParameters:[a.$host,a.subscriptionId,a.resourceGroupName],headerParameters:[a.accept],serializer:c},ce={path:`/providers/Microsoft.Resources/calculateTemplateHash`,httpMethod:`POST`,responses:{200:{bodyMapper:i.TemplateHashResult},default:{bodyMapper:i.CloudError}},requestBody:a.template,queryParameters:[a.apiVersion],urlParameters:[a.$host],headerParameters:[a.accept,a.contentType],mediaType:`json`,serializer:c},le={path:`{nextLink}`,httpMethod:`GET`,responses:{200:{bodyMapper:i.DeploymentListResult},default:{bodyMapper:i.CloudError}},urlParameters:[a.$host,a.nextLink,a.scope],headerParameters:[a.accept],serializer:c},ue={path:`{nextLink}`,httpMethod:`GET`,responses:{200:{bodyMapper:i.DeploymentListResult},default:{bodyMapper:i.CloudError}},urlParameters:[a.$host,a.nextLink],headerParameters:[a.accept],serializer:c},de={path:`{nextLink}`,httpMethod:`GET`,responses:{200:{bodyMapper:i.DeploymentListResult},default:{bodyMapper:i.CloudError}},urlParameters:[a.$host,a.nextLink,a.groupId],headerParameters:[a.accept],serializer:c},fe={path:`{nextLink}`,httpMethod:`GET`,responses:{200:{bodyMapper:i.DeploymentListResult},default:{bodyMapper:i.CloudError}},urlParameters:[a.$host,a.nextLink,a.subscriptionId],headerParameters:[a.accept],serializer:c},pe={path:`{nextLink}`,httpMethod:`GET`,responses:{200:{bodyMapper:i.DeploymentListResult},default:{bodyMapper:i.CloudError}},urlParameters:[a.$host,a.nextLink,a.subscriptionId,a.resourceGroupName],headerParameters:[a.accept],serializer:c}})),ys=b((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.ProvidersImpl=void 0;let t=(yi(),w(Fr)),n=bi(),r=t.__importStar(ts()),i=t.__importStar(ns()),a=t.__importStar(rs());e.ProvidersImpl=class{constructor(e){this.client=e}list(e){let t=this.listPagingAll(e);return{next(){return t.next()},[Symbol.asyncIterator](){return this},byPage:t=>{if(t?.maxPageSize)throw Error(`maxPageSize is not supported by this operation.`);return this.listPagingPage(e,t)}}}listPagingPage(e,r){return t.__asyncGenerator(this,arguments,function*(){let i,a=r?.continuationToken;if(!a){i=yield t.__await(this._list(e));let r=i.value||[];a=i.nextLink,(0,n.setContinuationToken)(r,a),yield yield t.__await(r)}for(;a;){i=yield t.__await(this._listNext(a,e)),a=i.nextLink;let r=i.value||[];(0,n.setContinuationToken)(r,a),yield yield t.__await(r)}})}listPagingAll(e){return t.__asyncGenerator(this,arguments,function*(){var n,r,i,a;try{for(var o=!0,s=t.__asyncValues(this.listPagingPage(e)),c;c=yield t.__await(s.next()),n=c.done,!n;o=!0){a=c.value,o=!1;let e=a;yield t.__await(yield*t.__asyncDelegator(t.__asyncValues(e)))}}catch(e){r={error:e}}finally{try{!o&&!n&&(i=s.return)&&(yield t.__await(i.call(s)))}finally{if(r)throw r.error}}})}listAtTenantScope(e){let t=this.listAtTenantScopePagingAll(e);return{next(){return t.next()},[Symbol.asyncIterator](){return this},byPage:t=>{if(t?.maxPageSize)throw Error(`maxPageSize is not supported by this operation.`);return this.listAtTenantScopePagingPage(e,t)}}}listAtTenantScopePagingPage(e,r){return t.__asyncGenerator(this,arguments,function*(){let i,a=r?.continuationToken;if(!a){i=yield t.__await(this._listAtTenantScope(e));let r=i.value||[];a=i.nextLink,(0,n.setContinuationToken)(r,a),yield yield t.__await(r)}for(;a;){i=yield t.__await(this._listAtTenantScopeNext(a,e)),a=i.nextLink;let r=i.value||[];(0,n.setContinuationToken)(r,a),yield yield t.__await(r)}})}listAtTenantScopePagingAll(e){return t.__asyncGenerator(this,arguments,function*(){var n,r,i,a;try{for(var o=!0,s=t.__asyncValues(this.listAtTenantScopePagingPage(e)),c;c=yield t.__await(s.next()),n=c.done,!n;o=!0){a=c.value,o=!1;let e=a;yield t.__await(yield*t.__asyncDelegator(t.__asyncValues(e)))}}catch(e){r={error:e}}finally{try{!o&&!n&&(i=s.return)&&(yield t.__await(i.call(s)))}finally{if(r)throw r.error}}})}unregister(e,t){return this.client.sendOperationRequest({resourceProviderNamespace:e,options:t},s)}registerAtManagementGroupScope(e,t,n){return this.client.sendOperationRequest({resourceProviderNamespace:e,groupId:t,options:n},c)}providerPermissions(e,t){return this.client.sendOperationRequest({resourceProviderNamespace:e,options:t},l)}register(e,t){return this.client.sendOperationRequest({resourceProviderNamespace:e,options:t},u)}_list(e){return this.client.sendOperationRequest({options:e},d)}_listAtTenantScope(e){return this.client.sendOperationRequest({options:e},f)}get(e,t){return this.client.sendOperationRequest({resourceProviderNamespace:e,options:t},p)}getAtTenantScope(e,t){return this.client.sendOperationRequest({resourceProviderNamespace:e,options:t},m)}_listNext(e,t){return this.client.sendOperationRequest({nextLink:e,options:t},h)}_listAtTenantScopeNext(e,t){return this.client.sendOperationRequest({nextLink:e,options:t},g)}};let o=r.createSerializer(i,!1),s={path:`/subscriptions/{subscriptionId}/providers/{resourceProviderNamespace}/unregister`,httpMethod:`POST`,responses:{200:{bodyMapper:i.Provider},default:{bodyMapper:i.CloudError}},queryParameters:[a.apiVersion],urlParameters:[a.$host,a.subscriptionId,a.resourceProviderNamespace],headerParameters:[a.accept],serializer:o},c={path:`/providers/Microsoft.Management/managementGroups/{groupId}/providers/{resourceProviderNamespace}/register`,httpMethod:`POST`,responses:{200:{},default:{bodyMapper:i.CloudError}},queryParameters:[a.apiVersion],urlParameters:[a.$host,a.groupId,a.resourceProviderNamespace],headerParameters:[a.accept],serializer:o},l={path:`/subscriptions/{subscriptionId}/providers/{resourceProviderNamespace}/providerPermissions`,httpMethod:`GET`,responses:{200:{bodyMapper:i.ProviderPermissionListResult},default:{bodyMapper:i.CloudError}},queryParameters:[a.apiVersion],urlParameters:[a.$host,a.subscriptionId,a.resourceProviderNamespace],headerParameters:[a.accept],serializer:o},u={path:`/subscriptions/{subscriptionId}/providers/{resourceProviderNamespace}/register`,httpMethod:`POST`,responses:{200:{bodyMapper:i.Provider},default:{bodyMapper:i.CloudError}},requestBody:a.properties,queryParameters:[a.apiVersion],urlParameters:[a.$host,a.subscriptionId,a.resourceProviderNamespace],headerParameters:[a.accept,a.contentType],mediaType:`json`,serializer:o},d={path:`/subscriptions/{subscriptionId}/providers`,httpMethod:`GET`,responses:{200:{bodyMapper:i.ProviderListResult},default:{bodyMapper:i.CloudError}},queryParameters:[a.apiVersion,a.expand],urlParameters:[a.$host,a.subscriptionId],headerParameters:[a.accept],serializer:o},f={path:`/providers`,httpMethod:`GET`,responses:{200:{bodyMapper:i.ProviderListResult},default:{bodyMapper:i.CloudError}},queryParameters:[a.apiVersion,a.expand],urlParameters:[a.$host],headerParameters:[a.accept],serializer:o},p={path:`/subscriptions/{subscriptionId}/providers/{resourceProviderNamespace}`,httpMethod:`GET`,responses:{200:{bodyMapper:i.Provider},default:{bodyMapper:i.CloudError}},queryParameters:[a.apiVersion,a.expand],urlParameters:[a.$host,a.subscriptionId,a.resourceProviderNamespace],headerParameters:[a.accept],serializer:o},m={path:`/providers/{resourceProviderNamespace}`,httpMethod:`GET`,responses:{200:{bodyMapper:i.Provider},default:{bodyMapper:i.CloudError}},queryParameters:[a.apiVersion,a.expand],urlParameters:[a.$host,a.resourceProviderNamespace],headerParameters:[a.accept],serializer:o},h={path:`{nextLink}`,httpMethod:`GET`,responses:{200:{bodyMapper:i.ProviderListResult},default:{bodyMapper:i.CloudError}},urlParameters:[a.$host,a.nextLink,a.subscriptionId],headerParameters:[a.accept],serializer:o},g={path:`{nextLink}`,httpMethod:`GET`,responses:{200:{bodyMapper:i.ProviderListResult},default:{bodyMapper:i.CloudError}},urlParameters:[a.$host,a.nextLink],headerParameters:[a.accept],serializer:o}})),bs=b((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.ProviderResourceTypesImpl=void 0;let t=(yi(),w(Fr)),n=t.__importStar(ts()),r=t.__importStar(ns()),i=t.__importStar(rs());e.ProviderResourceTypesImpl=class{constructor(e){this.client=e}list(e,t){return this.client.sendOperationRequest({resourceProviderNamespace:e,options:t},o)}};let a=n.createSerializer(r,!1),o={path:`/subscriptions/{subscriptionId}/providers/{resourceProviderNamespace}/resourceTypes`,httpMethod:`GET`,responses:{200:{bodyMapper:r.ProviderResourceTypeListResult},default:{bodyMapper:r.CloudError}},queryParameters:[i.apiVersion,i.expand],urlParameters:[i.$host,i.subscriptionId,i.resourceProviderNamespace],headerParameters:[i.accept],serializer:a}})),xs=b((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.ResourcesImpl=void 0;let t=(yi(),w(Fr)),n=bi(),r=t.__importStar(ts()),i=t.__importStar(ns()),a=t.__importStar(rs()),o=gs(),s=_s();e.ResourcesImpl=class{constructor(e){this.client=e}listByResourceGroup(e,t){let n=this.listByResourceGroupPagingAll(e,t);return{next(){return n.next()},[Symbol.asyncIterator](){return this},byPage:n=>{if(n?.maxPageSize)throw Error(`maxPageSize is not supported by this operation.`);return this.listByResourceGroupPagingPage(e,t,n)}}}listByResourceGroupPagingPage(e,r,i){return t.__asyncGenerator(this,arguments,function*(){let a,o=i?.continuationToken;if(!o){a=yield t.__await(this._listByResourceGroup(e,r));let i=a.value||[];o=a.nextLink,(0,n.setContinuationToken)(i,o),yield yield t.__await(i)}for(;o;){a=yield t.__await(this._listByResourceGroupNext(e,o,r)),o=a.nextLink;let i=a.value||[];(0,n.setContinuationToken)(i,o),yield yield t.__await(i)}})}listByResourceGroupPagingAll(e,n){return t.__asyncGenerator(this,arguments,function*(){var r,i,a,o;try{for(var s=!0,c=t.__asyncValues(this.listByResourceGroupPagingPage(e,n)),l;l=yield t.__await(c.next()),r=l.done,!r;s=!0){o=l.value,s=!1;let e=o;yield t.__await(yield*t.__asyncDelegator(t.__asyncValues(e)))}}catch(e){i={error:e}}finally{try{!s&&!r&&(a=c.return)&&(yield t.__await(a.call(c)))}finally{if(i)throw i.error}}})}list(e){let t=this.listPagingAll(e);return{next(){return t.next()},[Symbol.asyncIterator](){return this},byPage:t=>{if(t?.maxPageSize)throw Error(`maxPageSize is not supported by this operation.`);return this.listPagingPage(e,t)}}}listPagingPage(e,r){return t.__asyncGenerator(this,arguments,function*(){let i,a=r?.continuationToken;if(!a){i=yield t.__await(this._list(e));let r=i.value||[];a=i.nextLink,(0,n.setContinuationToken)(r,a),yield yield t.__await(r)}for(;a;){i=yield t.__await(this._listNext(a,e)),a=i.nextLink;let r=i.value||[];(0,n.setContinuationToken)(r,a),yield yield t.__await(r)}})}listPagingAll(e){return t.__asyncGenerator(this,arguments,function*(){var n,r,i,a;try{for(var o=!0,s=t.__asyncValues(this.listPagingPage(e)),c;c=yield t.__await(s.next()),n=c.done,!n;o=!0){a=c.value,o=!1;let e=a;yield t.__await(yield*t.__asyncDelegator(t.__asyncValues(e)))}}catch(e){r={error:e}}finally{try{!o&&!n&&(i=s.return)&&(yield t.__await(i.call(s)))}finally{if(r)throw r.error}}})}_listByResourceGroup(e,t){return this.client.sendOperationRequest({resourceGroupName:e,options:t},l)}async beginMoveResources(e,t,n){let r=async(e,t)=>this.client.sendOperationRequest(e,t),i=(0,s.createLroSpec)({sendOperationFn:async(e,t)=>{let n,i=e.options?.onResponse;return{flatResponse:await r(Object.assign(Object.assign({},e),{options:Object.assign(Object.assign({},e.options),{onResponse:(e,t)=>{n=e,i?.(e,t)}})}),t),rawResponse:{statusCode:n.status,body:n.parsedBody,headers:n.headers.toJSON()}}},args:{sourceResourceGroupName:e,parameters:t,options:n},spec:u}),a=await(0,o.createHttpPoller)(i,{restoreFrom:n?.resumeFrom,intervalInMs:n?.updateIntervalInMs});return await a.poll(),a}async beginMoveResourcesAndWait(e,t,n){return(await this.beginMoveResources(e,t,n)).pollUntilDone()}async beginValidateMoveResources(e,t,n){let r=async(e,t)=>this.client.sendOperationRequest(e,t),i=(0,s.createLroSpec)({sendOperationFn:async(e,t)=>{let n,i=e.options?.onResponse;return{flatResponse:await r(Object.assign(Object.assign({},e),{options:Object.assign(Object.assign({},e.options),{onResponse:(e,t)=>{n=e,i?.(e,t)}})}),t),rawResponse:{statusCode:n.status,body:n.parsedBody,headers:n.headers.toJSON()}}},args:{sourceResourceGroupName:e,parameters:t,options:n},spec:d}),a=await(0,o.createHttpPoller)(i,{restoreFrom:n?.resumeFrom,intervalInMs:n?.updateIntervalInMs});return await a.poll(),a}async beginValidateMoveResourcesAndWait(e,t,n){return(await this.beginValidateMoveResources(e,t,n)).pollUntilDone()}_list(e){return this.client.sendOperationRequest({options:e},f)}checkExistence(e,t,n,r,i,a,o){return this.client.sendOperationRequest({resourceGroupName:e,resourceProviderNamespace:t,parentResourcePath:n,resourceType:r,resourceName:i,apiVersion:a,options:o},p)}async beginDelete(e,t,n,r,i,a,c){let l=async(e,t)=>this.client.sendOperationRequest(e,t),u=(0,s.createLroSpec)({sendOperationFn:async(e,t)=>{let n,r=e.options?.onResponse;return{flatResponse:await l(Object.assign(Object.assign({},e),{options:Object.assign(Object.assign({},e.options),{onResponse:(e,t)=>{n=e,r?.(e,t)}})}),t),rawResponse:{statusCode:n.status,body:n.parsedBody,headers:n.headers.toJSON()}}},args:{resourceGroupName:e,resourceProviderNamespace:t,parentResourcePath:n,resourceType:r,resourceName:i,apiVersion:a,options:c},spec:m}),d=await(0,o.createHttpPoller)(u,{restoreFrom:c?.resumeFrom,intervalInMs:c?.updateIntervalInMs});return await d.poll(),d}async beginDeleteAndWait(e,t,n,r,i,a,o){return(await this.beginDelete(e,t,n,r,i,a,o)).pollUntilDone()}async beginCreateOrUpdate(e,t,n,r,i,a,c,l){let u=async(e,t)=>this.client.sendOperationRequest(e,t),d=(0,s.createLroSpec)({sendOperationFn:async(e,t)=>{let n,r=e.options?.onResponse;return{flatResponse:await u(Object.assign(Object.assign({},e),{options:Object.assign(Object.assign({},e.options),{onResponse:(e,t)=>{n=e,r?.(e,t)}})}),t),rawResponse:{statusCode:n.status,body:n.parsedBody,headers:n.headers.toJSON()}}},args:{resourceGroupName:e,resourceProviderNamespace:t,parentResourcePath:n,resourceType:r,resourceName:i,apiVersion:a,parameters:c,options:l},spec:h}),f=await(0,o.createHttpPoller)(d,{restoreFrom:l?.resumeFrom,intervalInMs:l?.updateIntervalInMs});return await f.poll(),f}async beginCreateOrUpdateAndWait(e,t,n,r,i,a,o,s){return(await this.beginCreateOrUpdate(e,t,n,r,i,a,o,s)).pollUntilDone()}async beginUpdate(e,t,n,r,i,a,c,l){let u=async(e,t)=>this.client.sendOperationRequest(e,t),d=(0,s.createLroSpec)({sendOperationFn:async(e,t)=>{let n,r=e.options?.onResponse;return{flatResponse:await u(Object.assign(Object.assign({},e),{options:Object.assign(Object.assign({},e.options),{onResponse:(e,t)=>{n=e,r?.(e,t)}})}),t),rawResponse:{statusCode:n.status,body:n.parsedBody,headers:n.headers.toJSON()}}},args:{resourceGroupName:e,resourceProviderNamespace:t,parentResourcePath:n,resourceType:r,resourceName:i,apiVersion:a,parameters:c,options:l},spec:g}),f=await(0,o.createHttpPoller)(d,{restoreFrom:l?.resumeFrom,intervalInMs:l?.updateIntervalInMs});return await f.poll(),f}async beginUpdateAndWait(e,t,n,r,i,a,o,s){return(await this.beginUpdate(e,t,n,r,i,a,o,s)).pollUntilDone()}get(e,t,n,r,i,a,o){return this.client.sendOperationRequest({resourceGroupName:e,resourceProviderNamespace:t,parentResourcePath:n,resourceType:r,resourceName:i,apiVersion:a,options:o},_)}checkExistenceById(e,t,n){return this.client.sendOperationRequest({resourceId:e,apiVersion:t,options:n},v)}async beginDeleteById(e,t,n){let r=async(e,t)=>this.client.sendOperationRequest(e,t),i=(0,s.createLroSpec)({sendOperationFn:async(e,t)=>{let n,i=e.options?.onResponse;return{flatResponse:await r(Object.assign(Object.assign({},e),{options:Object.assign(Object.assign({},e.options),{onResponse:(e,t)=>{n=e,i?.(e,t)}})}),t),rawResponse:{statusCode:n.status,body:n.parsedBody,headers:n.headers.toJSON()}}},args:{resourceId:e,apiVersion:t,options:n},spec:y}),a=await(0,o.createHttpPoller)(i,{restoreFrom:n?.resumeFrom,intervalInMs:n?.updateIntervalInMs});return await a.poll(),a}async beginDeleteByIdAndWait(e,t,n){return(await this.beginDeleteById(e,t,n)).pollUntilDone()}async beginCreateOrUpdateById(e,t,n,r){let i=async(e,t)=>this.client.sendOperationRequest(e,t),a=(0,s.createLroSpec)({sendOperationFn:async(e,t)=>{let n,r=e.options?.onResponse;return{flatResponse:await i(Object.assign(Object.assign({},e),{options:Object.assign(Object.assign({},e.options),{onResponse:(e,t)=>{n=e,r?.(e,t)}})}),t),rawResponse:{statusCode:n.status,body:n.parsedBody,headers:n.headers.toJSON()}}},args:{resourceId:e,apiVersion:t,parameters:n,options:r},spec:b}),c=await(0,o.createHttpPoller)(a,{restoreFrom:r?.resumeFrom,intervalInMs:r?.updateIntervalInMs});return await c.poll(),c}async beginCreateOrUpdateByIdAndWait(e,t,n,r){return(await this.beginCreateOrUpdateById(e,t,n,r)).pollUntilDone()}async beginUpdateById(e,t,n,r){let i=async(e,t)=>this.client.sendOperationRequest(e,t),a=(0,s.createLroSpec)({sendOperationFn:async(e,t)=>{let n,r=e.options?.onResponse;return{flatResponse:await i(Object.assign(Object.assign({},e),{options:Object.assign(Object.assign({},e.options),{onResponse:(e,t)=>{n=e,r?.(e,t)}})}),t),rawResponse:{statusCode:n.status,body:n.parsedBody,headers:n.headers.toJSON()}}},args:{resourceId:e,apiVersion:t,parameters:n,options:r},spec:x}),c=await(0,o.createHttpPoller)(a,{restoreFrom:r?.resumeFrom,intervalInMs:r?.updateIntervalInMs});return await c.poll(),c}async beginUpdateByIdAndWait(e,t,n,r){return(await this.beginUpdateById(e,t,n,r)).pollUntilDone()}getById(e,t,n){return this.client.sendOperationRequest({resourceId:e,apiVersion:t,options:n},S)}_listByResourceGroupNext(e,t,n){return this.client.sendOperationRequest({resourceGroupName:e,nextLink:t,options:n},C)}_listNext(e,t){return this.client.sendOperationRequest({nextLink:e,options:t},T)}};let c=r.createSerializer(i,!1),l={path:`/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/resources`,httpMethod:`GET`,responses:{200:{bodyMapper:i.ResourceListResult},default:{bodyMapper:i.CloudError}},queryParameters:[a.apiVersion,a.filter,a.top,a.expand],urlParameters:[a.$host,a.subscriptionId,a.resourceGroupName],headerParameters:[a.accept],serializer:c},u={path:`/subscriptions/{subscriptionId}/resourceGroups/{sourceResourceGroupName}/moveResources`,httpMethod:`POST`,responses:{200:{},201:{},202:{},204:{},default:{bodyMapper:i.CloudError}},requestBody:a.parameters4,queryParameters:[a.apiVersion],urlParameters:[a.$host,a.subscriptionId,a.sourceResourceGroupName],headerParameters:[a.accept,a.contentType],mediaType:`json`,serializer:c},d={path:`/subscriptions/{subscriptionId}/resourceGroups/{sourceResourceGroupName}/validateMoveResources`,httpMethod:`POST`,responses:{200:{},201:{},202:{},204:{},default:{bodyMapper:i.CloudError}},requestBody:a.parameters4,queryParameters:[a.apiVersion],urlParameters:[a.$host,a.subscriptionId,a.sourceResourceGroupName],headerParameters:[a.accept,a.contentType],mediaType:`json`,serializer:c},f={path:`/subscriptions/{subscriptionId}/resources`,httpMethod:`GET`,responses:{200:{bodyMapper:i.ResourceListResult},default:{bodyMapper:i.CloudError}},queryParameters:[a.apiVersion,a.filter,a.top,a.expand],urlParameters:[a.$host,a.subscriptionId],headerParameters:[a.accept],serializer:c},p={path:`/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{parentResourcePath}/{resourceType}/{resourceName}`,httpMethod:`HEAD`,responses:{204:{},404:{},default:{bodyMapper:i.CloudError}},queryParameters:[a.apiVersion1],urlParameters:[a.$host,a.subscriptionId,a.resourceGroupName,a.resourceProviderNamespace,a.parentResourcePath,a.resourceType,a.resourceName],headerParameters:[a.accept],serializer:c},m={path:`/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{parentResourcePath}/{resourceType}/{resourceName}`,httpMethod:`DELETE`,responses:{200:{},201:{},202:{},204:{},default:{bodyMapper:i.CloudError}},queryParameters:[a.apiVersion1],urlParameters:[a.$host,a.subscriptionId,a.resourceGroupName,a.resourceProviderNamespace,a.parentResourcePath,a.resourceType,a.resourceName],headerParameters:[a.accept],serializer:c},h={path:`/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{parentResourcePath}/{resourceType}/{resourceName}`,httpMethod:`PUT`,responses:{200:{bodyMapper:i.GenericResource},201:{bodyMapper:i.GenericResource},202:{bodyMapper:i.GenericResource},204:{bodyMapper:i.GenericResource},default:{bodyMapper:i.CloudError}},requestBody:a.parameters5,queryParameters:[a.apiVersion1],urlParameters:[a.$host,a.subscriptionId,a.resourceGroupName,a.resourceProviderNamespace,a.parentResourcePath,a.resourceType,a.resourceName],headerParameters:[a.accept,a.contentType],mediaType:`json`,serializer:c},g={path:`/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{parentResourcePath}/{resourceType}/{resourceName}`,httpMethod:`PATCH`,responses:{200:{bodyMapper:i.GenericResource},201:{bodyMapper:i.GenericResource},202:{bodyMapper:i.GenericResource},204:{bodyMapper:i.GenericResource},default:{bodyMapper:i.CloudError}},requestBody:a.parameters5,queryParameters:[a.apiVersion1],urlParameters:[a.$host,a.subscriptionId,a.resourceGroupName,a.resourceProviderNamespace,a.parentResourcePath,a.resourceType,a.resourceName],headerParameters:[a.accept,a.contentType],mediaType:`json`,serializer:c},_={path:`/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{parentResourcePath}/{resourceType}/{resourceName}`,httpMethod:`GET`,responses:{200:{bodyMapper:i.GenericResource},default:{bodyMapper:i.CloudError}},queryParameters:[a.apiVersion1],urlParameters:[a.$host,a.subscriptionId,a.resourceGroupName,a.resourceProviderNamespace,a.parentResourcePath,a.resourceType,a.resourceName],headerParameters:[a.accept],serializer:c},v={path:`/{resourceId}`,httpMethod:`HEAD`,responses:{204:{},404:{},default:{bodyMapper:i.CloudError}},queryParameters:[a.apiVersion1],urlParameters:[a.$host,a.resourceId],headerParameters:[a.accept],serializer:c},y={path:`/{resourceId}`,httpMethod:`DELETE`,responses:{200:{},201:{},202:{},204:{},default:{bodyMapper:i.CloudError}},queryParameters:[a.apiVersion1],urlParameters:[a.$host,a.resourceId],headerParameters:[a.accept],serializer:c},b={path:`/{resourceId}`,httpMethod:`PUT`,responses:{200:{bodyMapper:i.GenericResource},201:{bodyMapper:i.GenericResource},202:{bodyMapper:i.GenericResource},204:{bodyMapper:i.GenericResource},default:{bodyMapper:i.CloudError}},requestBody:a.parameters5,queryParameters:[a.apiVersion1],urlParameters:[a.$host,a.resourceId],headerParameters:[a.accept,a.contentType],mediaType:`json`,serializer:c},x={path:`/{resourceId}`,httpMethod:`PATCH`,responses:{200:{bodyMapper:i.GenericResource},201:{bodyMapper:i.GenericResource},202:{bodyMapper:i.GenericResource},204:{bodyMapper:i.GenericResource},default:{bodyMapper:i.CloudError}},requestBody:a.parameters5,queryParameters:[a.apiVersion1],urlParameters:[a.$host,a.resourceId],headerParameters:[a.accept,a.contentType],mediaType:`json`,serializer:c},S={path:`/{resourceId}`,httpMethod:`GET`,responses:{200:{bodyMapper:i.GenericResource},default:{bodyMapper:i.CloudError}},queryParameters:[a.apiVersion1],urlParameters:[a.$host,a.resourceId],headerParameters:[a.accept],serializer:c},C={path:`{nextLink}`,httpMethod:`GET`,responses:{200:{bodyMapper:i.ResourceListResult},default:{bodyMapper:i.CloudError}},urlParameters:[a.$host,a.nextLink,a.subscriptionId,a.resourceGroupName],headerParameters:[a.accept],serializer:c},T={path:`{nextLink}`,httpMethod:`GET`,responses:{200:{bodyMapper:i.ResourceListResult},default:{bodyMapper:i.CloudError}},urlParameters:[a.$host,a.nextLink,a.subscriptionId],headerParameters:[a.accept],serializer:c}})),Ss=b((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.ResourceGroupsImpl=void 0;let t=(yi(),w(Fr)),n=bi(),r=t.__importStar(ts()),i=t.__importStar(ns()),a=t.__importStar(rs()),o=gs(),s=_s();e.ResourceGroupsImpl=class{constructor(e){this.client=e}list(e){let t=this.listPagingAll(e);return{next(){return t.next()},[Symbol.asyncIterator](){return this},byPage:t=>{if(t?.maxPageSize)throw Error(`maxPageSize is not supported by this operation.`);return this.listPagingPage(e,t)}}}listPagingPage(e,r){return t.__asyncGenerator(this,arguments,function*(){let i,a=r?.continuationToken;if(!a){i=yield t.__await(this._list(e));let r=i.value||[];a=i.nextLink,(0,n.setContinuationToken)(r,a),yield yield t.__await(r)}for(;a;){i=yield t.__await(this._listNext(a,e)),a=i.nextLink;let r=i.value||[];(0,n.setContinuationToken)(r,a),yield yield t.__await(r)}})}listPagingAll(e){return t.__asyncGenerator(this,arguments,function*(){var n,r,i,a;try{for(var o=!0,s=t.__asyncValues(this.listPagingPage(e)),c;c=yield t.__await(s.next()),n=c.done,!n;o=!0){a=c.value,o=!1;let e=a;yield t.__await(yield*t.__asyncDelegator(t.__asyncValues(e)))}}catch(e){r={error:e}}finally{try{!o&&!n&&(i=s.return)&&(yield t.__await(i.call(s)))}finally{if(r)throw r.error}}})}checkExistence(e,t){return this.client.sendOperationRequest({resourceGroupName:e,options:t},l)}createOrUpdate(e,t,n){return this.client.sendOperationRequest({resourceGroupName:e,parameters:t,options:n},u)}async beginDelete(e,t){let n=async(e,t)=>this.client.sendOperationRequest(e,t),r=(0,s.createLroSpec)({sendOperationFn:async(e,t)=>{let r,i=e.options?.onResponse;return{flatResponse:await n(Object.assign(Object.assign({},e),{options:Object.assign(Object.assign({},e.options),{onResponse:(e,t)=>{r=e,i?.(e,t)}})}),t),rawResponse:{statusCode:r.status,body:r.parsedBody,headers:r.headers.toJSON()}}},args:{resourceGroupName:e,options:t},spec:d}),i=await(0,o.createHttpPoller)(r,{restoreFrom:t?.resumeFrom,intervalInMs:t?.updateIntervalInMs});return await i.poll(),i}async beginDeleteAndWait(e,t){return(await this.beginDelete(e,t)).pollUntilDone()}get(e,t){return this.client.sendOperationRequest({resourceGroupName:e,options:t},f)}update(e,t,n){return this.client.sendOperationRequest({resourceGroupName:e,parameters:t,options:n},p)}async beginExportTemplate(e,t,n){let r=async(e,t)=>this.client.sendOperationRequest(e,t),i=(0,s.createLroSpec)({sendOperationFn:async(e,t)=>{let n,i=e.options?.onResponse;return{flatResponse:await r(Object.assign(Object.assign({},e),{options:Object.assign(Object.assign({},e.options),{onResponse:(e,t)=>{n=e,i?.(e,t)}})}),t),rawResponse:{statusCode:n.status,body:n.parsedBody,headers:n.headers.toJSON()}}},args:{resourceGroupName:e,parameters:t,options:n},spec:m}),a=await(0,o.createHttpPoller)(i,{restoreFrom:n?.resumeFrom,intervalInMs:n?.updateIntervalInMs,resourceLocationConfig:`location`});return await a.poll(),a}async beginExportTemplateAndWait(e,t,n){return(await this.beginExportTemplate(e,t,n)).pollUntilDone()}_list(e){return this.client.sendOperationRequest({options:e},h)}_listNext(e,t){return this.client.sendOperationRequest({nextLink:e,options:t},g)}};let c=r.createSerializer(i,!1),l={path:`/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}`,httpMethod:`HEAD`,responses:{204:{},404:{},default:{bodyMapper:i.CloudError}},queryParameters:[a.apiVersion],urlParameters:[a.$host,a.subscriptionId,a.resourceGroupName],headerParameters:[a.accept],serializer:c},u={path:`/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}`,httpMethod:`PUT`,responses:{200:{bodyMapper:i.ResourceGroup},201:{bodyMapper:i.ResourceGroup},default:{bodyMapper:i.CloudError}},requestBody:a.parameters6,queryParameters:[a.apiVersion],urlParameters:[a.$host,a.subscriptionId,a.resourceGroupName],headerParameters:[a.accept,a.contentType],mediaType:`json`,serializer:c},d={path:`/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}`,httpMethod:`DELETE`,responses:{200:{},201:{},202:{},204:{},default:{bodyMapper:i.CloudError}},queryParameters:[a.apiVersion,a.forceDeletionTypes],urlParameters:[a.$host,a.subscriptionId,a.resourceGroupName],headerParameters:[a.accept],serializer:c},f={path:`/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}`,httpMethod:`GET`,responses:{200:{bodyMapper:i.ResourceGroup},default:{bodyMapper:i.CloudError}},queryParameters:[a.apiVersion],urlParameters:[a.$host,a.subscriptionId,a.resourceGroupName],headerParameters:[a.accept],serializer:c},p={path:`/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}`,httpMethod:`PATCH`,responses:{200:{bodyMapper:i.ResourceGroup},default:{bodyMapper:i.CloudError}},requestBody:a.parameters7,queryParameters:[a.apiVersion],urlParameters:[a.$host,a.subscriptionId,a.resourceGroupName],headerParameters:[a.accept,a.contentType],mediaType:`json`,serializer:c},m={path:`/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/exportTemplate`,httpMethod:`POST`,responses:{200:{bodyMapper:i.ResourceGroupExportResult},201:{bodyMapper:i.ResourceGroupExportResult},202:{bodyMapper:i.ResourceGroupExportResult},204:{bodyMapper:i.ResourceGroupExportResult},default:{bodyMapper:i.CloudError}},requestBody:a.parameters8,queryParameters:[a.apiVersion],urlParameters:[a.$host,a.subscriptionId,a.resourceGroupName1],headerParameters:[a.accept,a.contentType],mediaType:`json`,serializer:c},h={path:`/subscriptions/{subscriptionId}/resourcegroups`,httpMethod:`GET`,responses:{200:{bodyMapper:i.ResourceGroupListResult},default:{bodyMapper:i.CloudError}},queryParameters:[a.apiVersion,a.filter,a.top],urlParameters:[a.$host,a.subscriptionId],headerParameters:[a.accept],serializer:c},g={path:`{nextLink}`,httpMethod:`GET`,responses:{200:{bodyMapper:i.ResourceGroupListResult},default:{bodyMapper:i.CloudError}},urlParameters:[a.$host,a.nextLink,a.subscriptionId],headerParameters:[a.accept],serializer:c}})),Cs=b((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.TagsOperationsImpl=void 0;let t=(yi(),w(Fr)),n=bi(),r=t.__importStar(ts()),i=t.__importStar(ns()),a=t.__importStar(rs()),o=gs(),s=_s();e.TagsOperationsImpl=class{constructor(e){this.client=e}list(e){let t=this.listPagingAll(e);return{next(){return t.next()},[Symbol.asyncIterator](){return this},byPage:t=>{if(t?.maxPageSize)throw Error(`maxPageSize is not supported by this operation.`);return this.listPagingPage(e,t)}}}listPagingPage(e,r){return t.__asyncGenerator(this,arguments,function*(){let i,a=r?.continuationToken;if(!a){i=yield t.__await(this._list(e));let r=i.value||[];a=i.nextLink,(0,n.setContinuationToken)(r,a),yield yield t.__await(r)}for(;a;){i=yield t.__await(this._listNext(a,e)),a=i.nextLink;let r=i.value||[];(0,n.setContinuationToken)(r,a),yield yield t.__await(r)}})}listPagingAll(e){return t.__asyncGenerator(this,arguments,function*(){var n,r,i,a;try{for(var o=!0,s=t.__asyncValues(this.listPagingPage(e)),c;c=yield t.__await(s.next()),n=c.done,!n;o=!0){a=c.value,o=!1;let e=a;yield t.__await(yield*t.__asyncDelegator(t.__asyncValues(e)))}}catch(e){r={error:e}}finally{try{!o&&!n&&(i=s.return)&&(yield t.__await(i.call(s)))}finally{if(r)throw r.error}}})}deleteValue(e,t,n){return this.client.sendOperationRequest({tagName:e,tagValue:t,options:n},l)}createOrUpdateValue(e,t,n){return this.client.sendOperationRequest({tagName:e,tagValue:t,options:n},u)}createOrUpdate(e,t){return this.client.sendOperationRequest({tagName:e,options:t},d)}delete(e,t){return this.client.sendOperationRequest({tagName:e,options:t},f)}_list(e){return this.client.sendOperationRequest({options:e},p)}async beginCreateOrUpdateAtScope(e,t,n){let r=async(e,t)=>this.client.sendOperationRequest(e,t),i=(0,s.createLroSpec)({sendOperationFn:async(e,t)=>{let n,i=e.options?.onResponse;return{flatResponse:await r(Object.assign(Object.assign({},e),{options:Object.assign(Object.assign({},e.options),{onResponse:(e,t)=>{n=e,i?.(e,t)}})}),t),rawResponse:{statusCode:n.status,body:n.parsedBody,headers:n.headers.toJSON()}}},args:{scope:e,parameters:t,options:n},spec:m}),a=await(0,o.createHttpPoller)(i,{restoreFrom:n?.resumeFrom,intervalInMs:n?.updateIntervalInMs});return await a.poll(),a}async beginCreateOrUpdateAtScopeAndWait(e,t,n){return(await this.beginCreateOrUpdateAtScope(e,t,n)).pollUntilDone()}async beginUpdateAtScope(e,t,n){let r=async(e,t)=>this.client.sendOperationRequest(e,t),i=(0,s.createLroSpec)({sendOperationFn:async(e,t)=>{let n,i=e.options?.onResponse;return{flatResponse:await r(Object.assign(Object.assign({},e),{options:Object.assign(Object.assign({},e.options),{onResponse:(e,t)=>{n=e,i?.(e,t)}})}),t),rawResponse:{statusCode:n.status,body:n.parsedBody,headers:n.headers.toJSON()}}},args:{scope:e,parameters:t,options:n},spec:h}),a=await(0,o.createHttpPoller)(i,{restoreFrom:n?.resumeFrom,intervalInMs:n?.updateIntervalInMs});return await a.poll(),a}async beginUpdateAtScopeAndWait(e,t,n){return(await this.beginUpdateAtScope(e,t,n)).pollUntilDone()}getAtScope(e,t){return this.client.sendOperationRequest({scope:e,options:t},g)}async beginDeleteAtScope(e,t){let n=async(e,t)=>this.client.sendOperationRequest(e,t),r=(0,s.createLroSpec)({sendOperationFn:async(e,t)=>{let r,i=e.options?.onResponse;return{flatResponse:await n(Object.assign(Object.assign({},e),{options:Object.assign(Object.assign({},e.options),{onResponse:(e,t)=>{r=e,i?.(e,t)}})}),t),rawResponse:{statusCode:r.status,body:r.parsedBody,headers:r.headers.toJSON()}}},args:{scope:e,options:t},spec:_}),i=await(0,o.createHttpPoller)(r,{restoreFrom:t?.resumeFrom,intervalInMs:t?.updateIntervalInMs});return await i.poll(),i}async beginDeleteAtScopeAndWait(e,t){return(await this.beginDeleteAtScope(e,t)).pollUntilDone()}_listNext(e,t){return this.client.sendOperationRequest({nextLink:e,options:t},v)}};let c=r.createSerializer(i,!1),l={path:`/subscriptions/{subscriptionId}/tagNames/{tagName}/tagValues/{tagValue}`,httpMethod:`DELETE`,responses:{200:{},204:{},default:{bodyMapper:i.CloudError}},queryParameters:[a.apiVersion],urlParameters:[a.$host,a.subscriptionId,a.tagName,a.tagValue],headerParameters:[a.accept],serializer:c},u={path:`/subscriptions/{subscriptionId}/tagNames/{tagName}/tagValues/{tagValue}`,httpMethod:`PUT`,responses:{200:{bodyMapper:i.TagValue},201:{bodyMapper:i.TagValue},default:{bodyMapper:i.CloudError}},queryParameters:[a.apiVersion],urlParameters:[a.$host,a.subscriptionId,a.tagName,a.tagValue],headerParameters:[a.accept],serializer:c},d={path:`/subscriptions/{subscriptionId}/tagNames/{tagName}`,httpMethod:`PUT`,responses:{200:{bodyMapper:i.TagDetails},201:{bodyMapper:i.TagDetails},default:{bodyMapper:i.CloudError}},queryParameters:[a.apiVersion],urlParameters:[a.$host,a.subscriptionId,a.tagName],headerParameters:[a.accept],serializer:c},f={path:`/subscriptions/{subscriptionId}/tagNames/{tagName}`,httpMethod:`DELETE`,responses:{200:{},204:{},default:{bodyMapper:i.CloudError}},queryParameters:[a.apiVersion],urlParameters:[a.$host,a.subscriptionId,a.tagName],headerParameters:[a.accept],serializer:c},p={path:`/subscriptions/{subscriptionId}/tagNames`,httpMethod:`GET`,responses:{200:{bodyMapper:i.TagsListResult},default:{bodyMapper:i.CloudError}},queryParameters:[a.apiVersion],urlParameters:[a.$host,a.subscriptionId],headerParameters:[a.accept],serializer:c},m={path:`/{scope}/providers/Microsoft.Resources/tags/default`,httpMethod:`PUT`,responses:{200:{bodyMapper:i.TagsResource},201:{bodyMapper:i.TagsResource},202:{bodyMapper:i.TagsResource},204:{bodyMapper:i.TagsResource},default:{bodyMapper:i.CloudError}},requestBody:a.parameters9,queryParameters:[a.apiVersion],urlParameters:[a.$host,a.scope],headerParameters:[a.accept,a.contentType],mediaType:`json`,serializer:c},h={path:`/{scope}/providers/Microsoft.Resources/tags/default`,httpMethod:`PATCH`,responses:{200:{bodyMapper:i.TagsResource},201:{bodyMapper:i.TagsResource},202:{bodyMapper:i.TagsResource},204:{bodyMapper:i.TagsResource},default:{bodyMapper:i.CloudError}},requestBody:a.parameters10,queryParameters:[a.apiVersion],urlParameters:[a.$host,a.scope],headerParameters:[a.accept,a.contentType],mediaType:`json`,serializer:c},g={path:`/{scope}/providers/Microsoft.Resources/tags/default`,httpMethod:`GET`,responses:{200:{bodyMapper:i.TagsResource},default:{bodyMapper:i.CloudError}},queryParameters:[a.apiVersion],urlParameters:[a.$host,a.scope],headerParameters:[a.accept],serializer:c},_={path:`/{scope}/providers/Microsoft.Resources/tags/default`,httpMethod:`DELETE`,responses:{200:{},201:{},202:{},204:{},default:{bodyMapper:i.CloudError}},queryParameters:[a.apiVersion],urlParameters:[a.$host,a.scope],headerParameters:[a.accept],serializer:c},v={path:`{nextLink}`,httpMethod:`GET`,responses:{200:{bodyMapper:i.TagsListResult},default:{bodyMapper:i.CloudError}},urlParameters:[a.$host,a.nextLink,a.subscriptionId],headerParameters:[a.accept],serializer:c}})),ws=b((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.DeploymentOperationsImpl=void 0;let t=(yi(),w(Fr)),n=bi(),r=t.__importStar(ts()),i=t.__importStar(ns()),a=t.__importStar(rs());e.DeploymentOperationsImpl=class{constructor(e){this.client=e}listAtScope(e,t,n){let r=this.listAtScopePagingAll(e,t,n);return{next(){return r.next()},[Symbol.asyncIterator](){return this},byPage:r=>{if(r?.maxPageSize)throw Error(`maxPageSize is not supported by this operation.`);return this.listAtScopePagingPage(e,t,n,r)}}}listAtScopePagingPage(e,r,i,a){return t.__asyncGenerator(this,arguments,function*(){let o,s=a?.continuationToken;if(!s){o=yield t.__await(this._listAtScope(e,r,i));let a=o.value||[];s=o.nextLink,(0,n.setContinuationToken)(a,s),yield yield t.__await(a)}for(;s;){o=yield t.__await(this._listAtScopeNext(e,r,s,i)),s=o.nextLink;let a=o.value||[];(0,n.setContinuationToken)(a,s),yield yield t.__await(a)}})}listAtScopePagingAll(e,n,r){return t.__asyncGenerator(this,arguments,function*(){var i,a,o,s;try{for(var c=!0,l=t.__asyncValues(this.listAtScopePagingPage(e,n,r)),u;u=yield t.__await(l.next()),i=u.done,!i;c=!0){s=u.value,c=!1;let e=s;yield t.__await(yield*t.__asyncDelegator(t.__asyncValues(e)))}}catch(e){a={error:e}}finally{try{!c&&!i&&(o=l.return)&&(yield t.__await(o.call(l)))}finally{if(a)throw a.error}}})}listAtTenantScope(e,t){let n=this.listAtTenantScopePagingAll(e,t);return{next(){return n.next()},[Symbol.asyncIterator](){return this},byPage:n=>{if(n?.maxPageSize)throw Error(`maxPageSize is not supported by this operation.`);return this.listAtTenantScopePagingPage(e,t,n)}}}listAtTenantScopePagingPage(e,r,i){return t.__asyncGenerator(this,arguments,function*(){let a,o=i?.continuationToken;if(!o){a=yield t.__await(this._listAtTenantScope(e,r));let i=a.value||[];o=a.nextLink,(0,n.setContinuationToken)(i,o),yield yield t.__await(i)}for(;o;){a=yield t.__await(this._listAtTenantScopeNext(e,o,r)),o=a.nextLink;let i=a.value||[];(0,n.setContinuationToken)(i,o),yield yield t.__await(i)}})}listAtTenantScopePagingAll(e,n){return t.__asyncGenerator(this,arguments,function*(){var r,i,a,o;try{for(var s=!0,c=t.__asyncValues(this.listAtTenantScopePagingPage(e,n)),l;l=yield t.__await(c.next()),r=l.done,!r;s=!0){o=l.value,s=!1;let e=o;yield t.__await(yield*t.__asyncDelegator(t.__asyncValues(e)))}}catch(e){i={error:e}}finally{try{!s&&!r&&(a=c.return)&&(yield t.__await(a.call(c)))}finally{if(i)throw i.error}}})}listAtManagementGroupScope(e,t,n){let r=this.listAtManagementGroupScopePagingAll(e,t,n);return{next(){return r.next()},[Symbol.asyncIterator](){return this},byPage:r=>{if(r?.maxPageSize)throw Error(`maxPageSize is not supported by this operation.`);return this.listAtManagementGroupScopePagingPage(e,t,n,r)}}}listAtManagementGroupScopePagingPage(e,r,i,a){return t.__asyncGenerator(this,arguments,function*(){let o,s=a?.continuationToken;if(!s){o=yield t.__await(this._listAtManagementGroupScope(e,r,i));let a=o.value||[];s=o.nextLink,(0,n.setContinuationToken)(a,s),yield yield t.__await(a)}for(;s;){o=yield t.__await(this._listAtManagementGroupScopeNext(e,r,s,i)),s=o.nextLink;let a=o.value||[];(0,n.setContinuationToken)(a,s),yield yield t.__await(a)}})}listAtManagementGroupScopePagingAll(e,n,r){return t.__asyncGenerator(this,arguments,function*(){var i,a,o,s;try{for(var c=!0,l=t.__asyncValues(this.listAtManagementGroupScopePagingPage(e,n,r)),u;u=yield t.__await(l.next()),i=u.done,!i;c=!0){s=u.value,c=!1;let e=s;yield t.__await(yield*t.__asyncDelegator(t.__asyncValues(e)))}}catch(e){a={error:e}}finally{try{!c&&!i&&(o=l.return)&&(yield t.__await(o.call(l)))}finally{if(a)throw a.error}}})}listAtSubscriptionScope(e,t){let n=this.listAtSubscriptionScopePagingAll(e,t);return{next(){return n.next()},[Symbol.asyncIterator](){return this},byPage:n=>{if(n?.maxPageSize)throw Error(`maxPageSize is not supported by this operation.`);return this.listAtSubscriptionScopePagingPage(e,t,n)}}}listAtSubscriptionScopePagingPage(e,r,i){return t.__asyncGenerator(this,arguments,function*(){let a,o=i?.continuationToken;if(!o){a=yield t.__await(this._listAtSubscriptionScope(e,r));let i=a.value||[];o=a.nextLink,(0,n.setContinuationToken)(i,o),yield yield t.__await(i)}for(;o;){a=yield t.__await(this._listAtSubscriptionScopeNext(e,o,r)),o=a.nextLink;let i=a.value||[];(0,n.setContinuationToken)(i,o),yield yield t.__await(i)}})}listAtSubscriptionScopePagingAll(e,n){return t.__asyncGenerator(this,arguments,function*(){var r,i,a,o;try{for(var s=!0,c=t.__asyncValues(this.listAtSubscriptionScopePagingPage(e,n)),l;l=yield t.__await(c.next()),r=l.done,!r;s=!0){o=l.value,s=!1;let e=o;yield t.__await(yield*t.__asyncDelegator(t.__asyncValues(e)))}}catch(e){i={error:e}}finally{try{!s&&!r&&(a=c.return)&&(yield t.__await(a.call(c)))}finally{if(i)throw i.error}}})}list(e,t,n){let r=this.listPagingAll(e,t,n);return{next(){return r.next()},[Symbol.asyncIterator](){return this},byPage:r=>{if(r?.maxPageSize)throw Error(`maxPageSize is not supported by this operation.`);return this.listPagingPage(e,t,n,r)}}}listPagingPage(e,r,i,a){return t.__asyncGenerator(this,arguments,function*(){let o,s=a?.continuationToken;if(!s){o=yield t.__await(this._list(e,r,i));let a=o.value||[];s=o.nextLink,(0,n.setContinuationToken)(a,s),yield yield t.__await(a)}for(;s;){o=yield t.__await(this._listNext(e,r,s,i)),s=o.nextLink;let a=o.value||[];(0,n.setContinuationToken)(a,s),yield yield t.__await(a)}})}listPagingAll(e,n,r){return t.__asyncGenerator(this,arguments,function*(){var i,a,o,s;try{for(var c=!0,l=t.__asyncValues(this.listPagingPage(e,n,r)),u;u=yield t.__await(l.next()),i=u.done,!i;c=!0){s=u.value,c=!1;let e=s;yield t.__await(yield*t.__asyncDelegator(t.__asyncValues(e)))}}catch(e){a={error:e}}finally{try{!c&&!i&&(o=l.return)&&(yield t.__await(o.call(l)))}finally{if(a)throw a.error}}})}getAtScope(e,t,n,r){return this.client.sendOperationRequest({scope:e,deploymentName:t,operationId:n,options:r},s)}_listAtScope(e,t,n){return this.client.sendOperationRequest({scope:e,deploymentName:t,options:n},c)}getAtTenantScope(e,t,n){return this.client.sendOperationRequest({deploymentName:e,operationId:t,options:n},l)}_listAtTenantScope(e,t){return this.client.sendOperationRequest({deploymentName:e,options:t},u)}getAtManagementGroupScope(e,t,n,r){return this.client.sendOperationRequest({groupId:e,deploymentName:t,operationId:n,options:r},d)}_listAtManagementGroupScope(e,t,n){return this.client.sendOperationRequest({groupId:e,deploymentName:t,options:n},f)}getAtSubscriptionScope(e,t,n){return this.client.sendOperationRequest({deploymentName:e,operationId:t,options:n},p)}_listAtSubscriptionScope(e,t){return this.client.sendOperationRequest({deploymentName:e,options:t},m)}get(e,t,n,r){return this.client.sendOperationRequest({resourceGroupName:e,deploymentName:t,operationId:n,options:r},h)}_list(e,t,n){return this.client.sendOperationRequest({resourceGroupName:e,deploymentName:t,options:n},g)}_listAtScopeNext(e,t,n,r){return this.client.sendOperationRequest({scope:e,deploymentName:t,nextLink:n,options:r},_)}_listAtTenantScopeNext(e,t,n){return this.client.sendOperationRequest({deploymentName:e,nextLink:t,options:n},v)}_listAtManagementGroupScopeNext(e,t,n,r){return this.client.sendOperationRequest({groupId:e,deploymentName:t,nextLink:n,options:r},y)}_listAtSubscriptionScopeNext(e,t,n){return this.client.sendOperationRequest({deploymentName:e,nextLink:t,options:n},b)}_listNext(e,t,n,r){return this.client.sendOperationRequest({resourceGroupName:e,deploymentName:t,nextLink:n,options:r},x)}};let o=r.createSerializer(i,!1),s={path:`/{scope}/providers/Microsoft.Resources/deployments/{deploymentName}/operations/{operationId}`,httpMethod:`GET`,responses:{200:{bodyMapper:i.DeploymentOperation},default:{bodyMapper:i.CloudError}},queryParameters:[a.apiVersion],urlParameters:[a.$host,a.scope,a.deploymentName,a.operationId],headerParameters:[a.accept],serializer:o},c={path:`/{scope}/providers/Microsoft.Resources/deployments/{deploymentName}/operations`,httpMethod:`GET`,responses:{200:{bodyMapper:i.DeploymentOperationsListResult},default:{bodyMapper:i.CloudError}},queryParameters:[a.apiVersion,a.top],urlParameters:[a.$host,a.scope,a.deploymentName],headerParameters:[a.accept],serializer:o},l={path:`/providers/Microsoft.Resources/deployments/{deploymentName}/operations/{operationId}`,httpMethod:`GET`,responses:{200:{bodyMapper:i.DeploymentOperation},default:{bodyMapper:i.CloudError}},queryParameters:[a.apiVersion],urlParameters:[a.$host,a.deploymentName,a.operationId],headerParameters:[a.accept],serializer:o},u={path:`/providers/Microsoft.Resources/deployments/{deploymentName}/operations`,httpMethod:`GET`,responses:{200:{bodyMapper:i.DeploymentOperationsListResult},default:{bodyMapper:i.CloudError}},queryParameters:[a.apiVersion,a.top],urlParameters:[a.$host,a.deploymentName],headerParameters:[a.accept],serializer:o},d={path:`/providers/Microsoft.Management/managementGroups/{groupId}/providers/Microsoft.Resources/deployments/{deploymentName}/operations/{operationId}`,httpMethod:`GET`,responses:{200:{bodyMapper:i.DeploymentOperation},default:{bodyMapper:i.CloudError}},queryParameters:[a.apiVersion],urlParameters:[a.$host,a.deploymentName,a.groupId,a.operationId],headerParameters:[a.accept],serializer:o},f={path:`/providers/Microsoft.Management/managementGroups/{groupId}/providers/Microsoft.Resources/deployments/{deploymentName}/operations`,httpMethod:`GET`,responses:{200:{bodyMapper:i.DeploymentOperationsListResult},default:{bodyMapper:i.CloudError}},queryParameters:[a.apiVersion,a.top],urlParameters:[a.$host,a.deploymentName,a.groupId],headerParameters:[a.accept],serializer:o},p={path:`/subscriptions/{subscriptionId}/providers/Microsoft.Resources/deployments/{deploymentName}/operations/{operationId}`,httpMethod:`GET`,responses:{200:{bodyMapper:i.DeploymentOperation},default:{bodyMapper:i.CloudError}},queryParameters:[a.apiVersion],urlParameters:[a.$host,a.deploymentName,a.subscriptionId,a.operationId],headerParameters:[a.accept],serializer:o},m={path:`/subscriptions/{subscriptionId}/providers/Microsoft.Resources/deployments/{deploymentName}/operations`,httpMethod:`GET`,responses:{200:{bodyMapper:i.DeploymentOperationsListResult},default:{bodyMapper:i.CloudError}},queryParameters:[a.apiVersion,a.top],urlParameters:[a.$host,a.deploymentName,a.subscriptionId],headerParameters:[a.accept],serializer:o},h={path:`/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/deployments/{deploymentName}/operations/{operationId}`,httpMethod:`GET`,responses:{200:{bodyMapper:i.DeploymentOperation},default:{bodyMapper:i.CloudError}},queryParameters:[a.apiVersion],urlParameters:[a.$host,a.deploymentName,a.subscriptionId,a.resourceGroupName,a.operationId],headerParameters:[a.accept],serializer:o},g={path:`/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/deployments/{deploymentName}/operations`,httpMethod:`GET`,responses:{200:{bodyMapper:i.DeploymentOperationsListResult},default:{bodyMapper:i.CloudError}},queryParameters:[a.apiVersion,a.top],urlParameters:[a.$host,a.deploymentName,a.subscriptionId,a.resourceGroupName],headerParameters:[a.accept],serializer:o},_={path:`{nextLink}`,httpMethod:`GET`,responses:{200:{bodyMapper:i.DeploymentOperationsListResult},default:{bodyMapper:i.CloudError}},urlParameters:[a.$host,a.nextLink,a.scope,a.deploymentName],headerParameters:[a.accept],serializer:o},v={path:`{nextLink}`,httpMethod:`GET`,responses:{200:{bodyMapper:i.DeploymentOperationsListResult},default:{bodyMapper:i.CloudError}},urlParameters:[a.$host,a.nextLink,a.deploymentName],headerParameters:[a.accept],serializer:o},y={path:`{nextLink}`,httpMethod:`GET`,responses:{200:{bodyMapper:i.DeploymentOperationsListResult},default:{bodyMapper:i.CloudError}},urlParameters:[a.$host,a.nextLink,a.deploymentName,a.groupId],headerParameters:[a.accept],serializer:o},b={path:`{nextLink}`,httpMethod:`GET`,responses:{200:{bodyMapper:i.DeploymentOperationsListResult},default:{bodyMapper:i.CloudError}},urlParameters:[a.$host,a.nextLink,a.deploymentName,a.subscriptionId],headerParameters:[a.accept],serializer:o},x={path:`{nextLink}`,httpMethod:`GET`,responses:{200:{bodyMapper:i.DeploymentOperationsListResult},default:{bodyMapper:i.CloudError}},urlParameters:[a.$host,a.nextLink,a.deploymentName,a.subscriptionId,a.resourceGroupName],headerParameters:[a.accept],serializer:o}})),Ts=b((e=>{Object.defineProperty(e,`__esModule`,{value:!0});let t=(yi(),w(Fr));t.__exportStar(is(),e),t.__exportStar(vs(),e),t.__exportStar(ys(),e),t.__exportStar(bs(),e),t.__exportStar(xs(),e),t.__exportStar(Ss(),e),t.__exportStar(Cs(),e),t.__exportStar(ws(),e)})),Es=b((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.ResourceManagementClient=void 0;let t=(yi(),w(Fr)),n=t.__importStar(ts()),r=t.__importStar(Ho()),i=Ts();e.ResourceManagementClient=class extends n.ServiceClient{constructor(e,t,a){if(e===void 0)throw Error(`'credentials' cannot be null`);let o;typeof t==`string`?o=t:typeof t==`object`&&(a=t),a||={};let s={requestContentType:`application/json; charset=utf-8`,credential:e},c=`azsdk-js-arm-resources/6.1.0`,l=a.userAgentOptions&&a.userAgentOptions.userAgentPrefix?`${a.userAgentOptions.userAgentPrefix} ${c}`:`${c}`,u=Object.assign(Object.assign(Object.assign({},s),a),{userAgentOptions:{userAgentPrefix:l},endpoint:a.endpoint??a.baseUri??`https://management.azure.com`});super(u);let d=!1;a?.pipeline&&a.pipeline.getOrderedPolicies().length>0&&(d=a.pipeline.getOrderedPolicies().some(e=>e.name===r.bearerTokenAuthenticationPolicyName)),(!a||!a.pipeline||a.pipeline.getOrderedPolicies().length==0||!d)&&(this.pipeline.removePolicy({name:r.bearerTokenAuthenticationPolicyName}),this.pipeline.addPolicy(r.bearerTokenAuthenticationPolicy({credential:e,scopes:u.credentialScopes??`${u.endpoint}/.default`,challengeCallbacks:{authorizeRequestOnChallenge:n.authorizeRequestOnClaimChallenge}}))),this.subscriptionId=o,this.$host=a.$host||`https://management.azure.com`,this.apiVersion=a.apiVersion||`2025-03-01`,this.operations=new i.OperationsImpl(this),this.deployments=new i.DeploymentsImpl(this),this.providers=new i.ProvidersImpl(this),this.providerResourceTypes=new i.ProviderResourceTypesImpl(this),this.resources=new i.ResourcesImpl(this),this.resourceGroups=new i.ResourceGroupsImpl(this),this.tagsOperations=new i.TagsOperationsImpl(this),this.deploymentOperations=new i.DeploymentOperationsImpl(this),this.addCustomApiVersionPolicy(a.apiVersion)}addCustomApiVersionPolicy(e){e&&this.pipeline.addPolicy({name:`CustomApiVersionPolicy`,async sendRequest(t,n){let r=t.url.split(`?`);if(r.length>1){let n=r[1].split(`&`).map(t=>t.indexOf(`api-version`)>-1?`api-version=`+e:t);t.url=r[0]+`?`+n.join(`&`)}return n(t)}})}}})),Ds=b((e=>{Object.defineProperty(e,`__esModule`,{value:!0})})),Os=b((e=>{Object.defineProperty(e,`__esModule`,{value:!0})})),ks=b((e=>{Object.defineProperty(e,`__esModule`,{value:!0})})),As=b((e=>{Object.defineProperty(e,`__esModule`,{value:!0})})),js=b((e=>{Object.defineProperty(e,`__esModule`,{value:!0})})),Ms=b((e=>{Object.defineProperty(e,`__esModule`,{value:!0})})),Ns=b((e=>{Object.defineProperty(e,`__esModule`,{value:!0})})),Ps=b((e=>{Object.defineProperty(e,`__esModule`,{value:!0})})),Fs=b((e=>{Object.defineProperty(e,`__esModule`,{value:!0});let t=(yi(),w(Fr));t.__exportStar(Ds(),e),t.__exportStar(Os(),e),t.__exportStar(ks(),e),t.__exportStar(As(),e),t.__exportStar(js(),e),t.__exportStar(Ms(),e),t.__exportStar(Ns(),e),t.__exportStar(Ps(),e)})),Is=b((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.ResourceManagementClient=e.getContinuationToken=void 0;let t=(yi(),w(Fr));var n=bi();Object.defineProperty(e,`getContinuationToken`,{enumerable:!0,get:function(){return n.getContinuationToken}}),t.__exportStar(xi(),e);var r=Es();Object.defineProperty(e,`ResourceManagementClient`,{enumerable:!0,get:function(){return r.ResourceManagementClient}}),t.__exportStar(Fs(),e)})),Ls=b((e=>{Object.defineProperty(e,`__esModule`,{value:!0});var t=(yi(),w(Fr)),n=ts(),r=Ho(),i=gs();function a(e){var t=Object.create(null);return e&&Object.keys(e).forEach(function(n){if(n!==`default`){var r=Object.getOwnPropertyDescriptor(e,n);Object.defineProperty(t,n,r.get?r:{enumerable:!0,get:function(){return e[n]}})}}),t.default=e,Object.freeze(t)}var o=a(n),s=a(r);let c=new WeakMap;function l(e){if(!(typeof e!=`object`||!e))return c.get(e)?.continuationToken}function u(e,t){if(typeof e!=`object`||!e||!t)return;let n=c.get(e)??{};n.continuationToken=t,c.set(e,n)}e.KnownDeploymentStacksDeleteDetachEnum=void 0,(function(e){e.Delete=`delete`,e.Detach=`detach`})(e.KnownDeploymentStacksDeleteDetachEnum||={}),e.KnownDenySettingsMode=void 0,(function(e){e.DenyDelete=`denyDelete`,e.DenyWriteAndDelete=`denyWriteAndDelete`,e.None=`none`})(e.KnownDenySettingsMode||={}),e.KnownDeploymentStackProvisioningState=void 0,(function(e){e.Creating=`creating`,e.Validating=`validating`,e.Waiting=`waiting`,e.Deploying=`deploying`,e.Canceling=`canceling`,e.UpdatingDenyAssignments=`updatingDenyAssignments`,e.DeletingResources=`deletingResources`,e.Succeeded=`succeeded`,e.Failed=`failed`,e.Canceled=`canceled`,e.Deleting=`deleting`})(e.KnownDeploymentStackProvisioningState||={}),e.KnownResourceStatusMode=void 0,(function(e){e.Managed=`managed`,e.RemoveDenyFailed=`removeDenyFailed`,e.DeleteFailed=`deleteFailed`})(e.KnownResourceStatusMode||={}),e.KnownDenyStatusMode=void 0,(function(e){e.DenyDelete=`denyDelete`,e.NotSupported=`notSupported`,e.Inapplicable=`inapplicable`,e.DenyWriteAndDelete=`denyWriteAndDelete`,e.RemovedBySystem=`removedBySystem`,e.None=`none`})(e.KnownDenyStatusMode||={}),e.KnownCreatedByType=void 0,(function(e){e.User=`User`,e.Application=`Application`,e.ManagedIdentity=`ManagedIdentity`,e.Key=`Key`})(e.KnownCreatedByType||={}),e.KnownUnmanageActionResourceMode=void 0,(function(e){e.Delete=`delete`,e.Detach=`detach`})(e.KnownUnmanageActionResourceMode||={}),e.KnownUnmanageActionResourceGroupMode=void 0,(function(e){e.Delete=`delete`,e.Detach=`detach`})(e.KnownUnmanageActionResourceGroupMode||={}),e.KnownUnmanageActionManagementGroupMode=void 0,(function(e){e.Delete=`delete`,e.Detach=`detach`})(e.KnownUnmanageActionManagementGroupMode||={});let d={type:{name:`Composite`,className:`DeploymentStackListResult`,modelProperties:{value:{serializedName:`value`,type:{name:`Sequence`,element:{type:{name:`Composite`,className:`DeploymentStack`}}}},nextLink:{serializedName:`nextLink`,readOnly:!0,type:{name:`String`}}}}},f={type:{name:`Composite`,className:`DeploymentStacksTemplateLink`,modelProperties:{uri:{serializedName:`uri`,type:{name:`String`}},id:{serializedName:`id`,type:{name:`String`}},relativePath:{serializedName:`relativePath`,type:{name:`String`}},queryString:{serializedName:`queryString`,type:{name:`String`}},contentVersion:{serializedName:`contentVersion`,type:{name:`String`}}}}},p={type:{name:`Composite`,className:`DeploymentParameter`,modelProperties:{value:{serializedName:`value`,type:{name:`any`}},type:{serializedName:`type`,type:{name:`String`}},reference:{serializedName:`reference`,type:{name:`Composite`,className:`KeyVaultParameterReference`}}}}},m={type:{name:`Composite`,className:`KeyVaultParameterReference`,modelProperties:{keyVault:{serializedName:`keyVault`,type:{name:`Composite`,className:`KeyVaultReference`}},secretName:{serializedName:`secretName`,required:!0,type:{name:`String`}},secretVersion:{serializedName:`secretVersion`,type:{name:`String`}}}}},h={type:{name:`Composite`,className:`KeyVaultReference`,modelProperties:{id:{serializedName:`id`,required:!0,type:{name:`String`}}}}},g={type:{name:`Composite`,className:`DeploymentStacksParametersLink`,modelProperties:{uri:{serializedName:`uri`,required:!0,type:{name:`String`}},contentVersion:{serializedName:`contentVersion`,type:{name:`String`}}}}},_={type:{name:`Composite`,className:`ActionOnUnmanage`,modelProperties:{resources:{serializedName:`resources`,required:!0,type:{name:`String`}},resourceGroups:{serializedName:`resourceGroups`,type:{name:`String`}},managementGroups:{serializedName:`managementGroups`,type:{name:`String`}}}}},v={type:{name:`Composite`,className:`DeploymentStacksDebugSetting`,modelProperties:{detailLevel:{serializedName:`detailLevel`,type:{name:`String`}}}}},y={type:{name:`Composite`,className:`DenySettings`,modelProperties:{mode:{serializedName:`mode`,required:!0,type:{name:`String`}},excludedPrincipals:{serializedName:`excludedPrincipals`,type:{name:`Sequence`,element:{type:{name:`String`}}}},excludedActions:{serializedName:`excludedActions`,type:{name:`Sequence`,element:{type:{name:`String`}}}},applyToChildScopes:{serializedName:`applyToChildScopes`,type:{name:`Boolean`}}}}},b={type:{name:`Composite`,className:`ResourceReference`,modelProperties:{id:{serializedName:`id`,readOnly:!0,type:{name:`String`}}}}},x={type:{name:`Composite`,className:`DeploymentStacksError`,modelProperties:{error:{serializedName:`error`,type:{name:`Composite`,className:`ErrorDetail`}}}}},S={type:{name:`Composite`,className:`ErrorDetail`,modelProperties:{code:{serializedName:`code`,readOnly:!0,type:{name:`String`}},message:{serializedName:`message`,readOnly:!0,type:{name:`String`}},target:{serializedName:`target`,readOnly:!0,type:{name:`String`}},details:{serializedName:`details`,readOnly:!0,type:{name:`Sequence`,element:{type:{name:`Composite`,className:`ErrorDetail`}}}},additionalInfo:{serializedName:`additionalInfo`,readOnly:!0,type:{name:`Sequence`,element:{type:{name:`Composite`,className:`ErrorAdditionalInfo`}}}}}}},C={type:{name:`Composite`,className:`ErrorAdditionalInfo`,modelProperties:{type:{serializedName:`type`,readOnly:!0,type:{name:`String`}},info:{serializedName:`info`,readOnly:!0,type:{name:`Dictionary`,value:{type:{name:`any`}}}}}}},T={type:{name:`Composite`,className:`AzureResourceBase`,modelProperties:{id:{serializedName:`id`,readOnly:!0,type:{name:`String`}},name:{serializedName:`name`,readOnly:!0,type:{name:`String`}},type:{serializedName:`type`,readOnly:!0,type:{name:`String`}},systemData:{serializedName:`systemData`,type:{name:`Composite`,className:`SystemData`}}}}},E={type:{name:`Composite`,className:`SystemData`,modelProperties:{createdBy:{serializedName:`createdBy`,type:{name:`String`}},createdByType:{serializedName:`createdByType`,type:{name:`String`}},createdAt:{serializedName:`createdAt`,type:{name:`DateTime`}},lastModifiedBy:{serializedName:`lastModifiedBy`,type:{name:`String`}},lastModifiedByType:{serializedName:`lastModifiedByType`,type:{name:`String`}},lastModifiedAt:{serializedName:`lastModifiedAt`,type:{name:`DateTime`}}}}},D={type:{name:`Composite`,className:`DeploymentStackTemplateDefinition`,modelProperties:{template:{serializedName:`template`,type:{name:`Dictionary`,value:{type:{name:`any`}}}},templateLink:{serializedName:`templateLink`,type:{name:`Composite`,className:`DeploymentStacksTemplateLink`}}}}},O={type:{name:`Composite`,className:`DeploymentStackValidateProperties`,modelProperties:{actionOnUnmanage:{serializedName:`actionOnUnmanage`,type:{name:`Composite`,className:`ActionOnUnmanage`}},correlationId:{serializedName:`correlationId`,type:{name:`String`}},denySettings:{serializedName:`denySettings`,type:{name:`Composite`,className:`DenySettings`}},deploymentScope:{serializedName:`deploymentScope`,type:{name:`String`}},description:{serializedName:`description`,type:{name:`String`}},parameters:{serializedName:`parameters`,type:{name:`Dictionary`,value:{type:{name:`Composite`,className:`DeploymentParameter`}}}},templateLink:{serializedName:`templateLink`,type:{name:`Composite`,className:`DeploymentStacksTemplateLink`}},validatedResources:{serializedName:`validatedResources`,type:{name:`Sequence`,element:{type:{name:`Composite`,className:`ResourceReference`}}}}}}},k={type:{name:`Composite`,className:`ResourceReferenceExtended`,modelProperties:Object.assign(Object.assign({},b.type.modelProperties),x.type.modelProperties)}},A={type:{name:`Composite`,className:`ManagedResourceReference`,modelProperties:Object.assign(Object.assign({},b.type.modelProperties),{status:{serializedName:`status`,type:{name:`String`}},denyStatus:{defaultValue:`none`,serializedName:`denyStatus`,type:{name:`String`}}})}},j={type:{name:`Composite`,className:`DeploymentStackProperties`,modelProperties:Object.assign(Object.assign({},x.type.modelProperties),{template:{serializedName:`template`,type:{name:`Dictionary`,value:{type:{name:`any`}}}},templateLink:{serializedName:`templateLink`,type:{name:`Composite`,className:`DeploymentStacksTemplateLink`}},parameters:{serializedName:`parameters`,type:{name:`Dictionary`,value:{type:{name:`Composite`,className:`DeploymentParameter`}}}},parametersLink:{serializedName:`parametersLink`,type:{name:`Composite`,className:`DeploymentStacksParametersLink`}},actionOnUnmanage:{serializedName:`actionOnUnmanage`,type:{name:`Composite`,className:`ActionOnUnmanage`}},debugSetting:{serializedName:`debugSetting`,type:{name:`Composite`,className:`DeploymentStacksDebugSetting`}},bypassStackOutOfSyncError:{serializedName:`bypassStackOutOfSyncError`,type:{name:`Boolean`}},deploymentScope:{serializedName:`deploymentScope`,type:{name:`String`}},description:{constraints:{MaxLength:4096},serializedName:`description`,type:{name:`String`}},denySettings:{serializedName:`denySettings`,type:{name:`Composite`,className:`DenySettings`}},provisioningState:{serializedName:`provisioningState`,readOnly:!0,type:{name:`String`}},correlationId:{serializedName:`correlationId`,readOnly:!0,type:{name:`String`}},detachedResources:{serializedName:`detachedResources`,readOnly:!0,type:{name:`Sequence`,element:{type:{name:`Composite`,className:`ResourceReference`}}}},deletedResources:{serializedName:`deletedResources`,readOnly:!0,type:{name:`Sequence`,element:{type:{name:`Composite`,className:`ResourceReference`}}}},failedResources:{serializedName:`failedResources`,readOnly:!0,type:{name:`Sequence`,element:{type:{name:`Composite`,className:`ResourceReferenceExtended`}}}},resources:{serializedName:`resources`,readOnly:!0,type:{name:`Sequence`,element:{type:{name:`Composite`,className:`ManagedResourceReference`}}}},deploymentId:{serializedName:`deploymentId`,readOnly:!0,type:{name:`String`}},outputs:{serializedName:`outputs`,readOnly:!0,type:{name:`Dictionary`,value:{type:{name:`any`}}}},duration:{serializedName:`duration`,readOnly:!0,type:{name:`String`}}})}},M={type:{name:`Composite`,className:`DeploymentStackValidateResult`,modelProperties:Object.assign(Object.assign(Object.assign({},T.type.modelProperties),x.type.modelProperties),{properties:{serializedName:`properties`,type:{name:`Composite`,className:`DeploymentStackValidateProperties`}}})}},N={type:{name:`Composite`,className:`DeploymentStack`,modelProperties:Object.assign(Object.assign({},T.type.modelProperties),{location:{serializedName:`location`,type:{name:`String`}},tags:{serializedName:`tags`,type:{name:`Dictionary`,value:{type:{name:`String`}}}},properties:{serializedName:`properties`,type:{name:`Composite`,className:`DeploymentStackProperties`}}})}};var ee=Object.freeze({__proto__:null,ActionOnUnmanage:_,AzureResourceBase:T,DenySettings:y,DeploymentParameter:p,DeploymentStack:N,DeploymentStackListResult:d,DeploymentStackProperties:j,DeploymentStackTemplateDefinition:D,DeploymentStackValidateProperties:O,DeploymentStackValidateResult:M,DeploymentStacksDebugSetting:v,DeploymentStacksDeleteAtManagementGroupHeaders:{type:{name:`Composite`,className:`DeploymentStacksDeleteAtManagementGroupHeaders`,modelProperties:{location:{serializedName:`location`,type:{name:`String`}}}}},DeploymentStacksDeleteAtResourceGroupHeaders:{type:{name:`Composite`,className:`DeploymentStacksDeleteAtResourceGroupHeaders`,modelProperties:{location:{serializedName:`location`,type:{name:`String`}}}}},DeploymentStacksDeleteAtSubscriptionHeaders:{type:{name:`Composite`,className:`DeploymentStacksDeleteAtSubscriptionHeaders`,modelProperties:{location:{serializedName:`location`,type:{name:`String`}}}}},DeploymentStacksError:x,DeploymentStacksParametersLink:g,DeploymentStacksTemplateLink:f,DeploymentStacksValidateStackAtManagementGroupHeaders:{type:{name:`Composite`,className:`DeploymentStacksValidateStackAtManagementGroupHeaders`,modelProperties:{location:{serializedName:`location`,type:{name:`String`}},retryAfter:{serializedName:`retry-after`,type:{name:`String`}}}}},DeploymentStacksValidateStackAtResourceGroupHeaders:{type:{name:`Composite`,className:`DeploymentStacksValidateStackAtResourceGroupHeaders`,modelProperties:{location:{serializedName:`location`,type:{name:`String`}},retryAfter:{serializedName:`retry-after`,type:{name:`String`}}}}},DeploymentStacksValidateStackAtSubscriptionHeaders:{type:{name:`Composite`,className:`DeploymentStacksValidateStackAtSubscriptionHeaders`,modelProperties:{location:{serializedName:`location`,type:{name:`String`}},retryAfter:{serializedName:`retry-after`,type:{name:`String`}}}}},ErrorAdditionalInfo:C,ErrorDetail:S,KeyVaultParameterReference:m,KeyVaultReference:h,ManagedResourceReference:A,ResourceReference:b,ResourceReferenceExtended:k,SystemData:E});let P={parameterPath:`accept`,mapper:{defaultValue:`application/json`,isConstant:!0,serializedName:`Accept`,type:{name:`String`}}},F={parameterPath:`$host`,mapper:{serializedName:`$host`,required:!0,type:{name:`String`}},skipEncoding:!0},I={parameterPath:`subscriptionId`,mapper:{serializedName:`subscriptionId`,required:!0,type:{name:`Uuid`}}},L={parameterPath:`resourceGroupName`,mapper:{constraints:{MaxLength:90,MinLength:1},serializedName:`resourceGroupName`,required:!0,type:{name:`String`}}},R={parameterPath:`apiVersion`,mapper:{defaultValue:`2024-03-01`,isConstant:!0,serializedName:`api-version`,type:{name:`String`}}},z={parameterPath:`managementGroupId`,mapper:{constraints:{Pattern:RegExp(`^[-\\w\\._\\(\\)]+$`),MaxLength:90,MinLength:1},serializedName:`managementGroupId`,required:!0,type:{name:`String`}}},B={parameterPath:[`options`,`contentType`],mapper:{defaultValue:`application/json`,isConstant:!0,serializedName:`Content-Type`,type:{name:`String`}}},V={parameterPath:`deploymentStack`,mapper:N},te={parameterPath:`deploymentStackName`,mapper:{constraints:{Pattern:RegExp(`^[-\\w\\._\\(\\)]+$`),MaxLength:90,MinLength:1},serializedName:`deploymentStackName`,required:!0,type:{name:`String`}}},H={parameterPath:[`options`,`unmanageActionResources`],mapper:{serializedName:`unmanageAction.Resources`,type:{name:`String`}}},ne={parameterPath:[`options`,`unmanageActionResourceGroups`],mapper:{serializedName:`unmanageAction.ResourceGroups`,type:{name:`String`}}},re={parameterPath:[`options`,`unmanageActionManagementGroups`],mapper:{serializedName:`unmanageAction.ManagementGroups`,type:{name:`String`}}},U={parameterPath:[`options`,`bypassStackOutOfSyncError`],mapper:{serializedName:`bypassStackOutOfSyncError`,type:{name:`Boolean`}}},ie={parameterPath:`nextLink`,mapper:{serializedName:`nextLink`,required:!0,type:{name:`String`}},skipEncoding:!0};function W(e){let{args:n,spec:r,sendOperationFn:i}=e;return{requestMethod:r.httpMethod,requestPath:r.path,sendInitialRequest:()=>i(n,r),sendPollRequest:(e,a)=>{let o=t.__rest(r,[`requestBody`]);return i(n,Object.assign(Object.assign({},o),{httpMethod:`GET`,path:e,abortSignal:a?.abortSignal}))}}}var ae=class{constructor(e){this.client=e}listAtResourceGroup(e,t){let n=this.listAtResourceGroupPagingAll(e,t);return{next(){return n.next()},[Symbol.asyncIterator](){return this},byPage:n=>{if(n?.maxPageSize)throw Error(`maxPageSize is not supported by this operation.`);return this.listAtResourceGroupPagingPage(e,t,n)}}}listAtResourceGroupPagingPage(e,n,r){return t.__asyncGenerator(this,arguments,function*(){let i,a=r?.continuationToken;if(!a){i=yield t.__await(this._listAtResourceGroup(e,n));let r=i.value||[];a=i.nextLink,u(r,a),yield yield t.__await(r)}for(;a;){i=yield t.__await(this._listAtResourceGroupNext(e,a,n)),a=i.nextLink;let r=i.value||[];u(r,a),yield yield t.__await(r)}})}listAtResourceGroupPagingAll(e,n){return t.__asyncGenerator(this,arguments,function*(){var r,i,a,o;try{for(var s=!0,c=t.__asyncValues(this.listAtResourceGroupPagingPage(e,n)),l;l=yield t.__await(c.next()),r=l.done,!r;s=!0){o=l.value,s=!1;let e=o;yield t.__await(yield*t.__asyncDelegator(t.__asyncValues(e)))}}catch(e){i={error:e}}finally{try{!s&&!r&&(a=c.return)&&(yield t.__await(a.call(c)))}finally{if(i)throw i.error}}})}listAtSubscription(e){let t=this.listAtSubscriptionPagingAll(e);return{next(){return t.next()},[Symbol.asyncIterator](){return this},byPage:t=>{if(t?.maxPageSize)throw Error(`maxPageSize is not supported by this operation.`);return this.listAtSubscriptionPagingPage(e,t)}}}listAtSubscriptionPagingPage(e,n){return t.__asyncGenerator(this,arguments,function*(){let r,i=n?.continuationToken;if(!i){r=yield t.__await(this._listAtSubscription(e));let n=r.value||[];i=r.nextLink,u(n,i),yield yield t.__await(n)}for(;i;){r=yield t.__await(this._listAtSubscriptionNext(i,e)),i=r.nextLink;let n=r.value||[];u(n,i),yield yield t.__await(n)}})}listAtSubscriptionPagingAll(e){return t.__asyncGenerator(this,arguments,function*(){var n,r,i,a;try{for(var o=!0,s=t.__asyncValues(this.listAtSubscriptionPagingPage(e)),c;c=yield t.__await(s.next()),n=c.done,!n;o=!0){a=c.value,o=!1;let e=a;yield t.__await(yield*t.__asyncDelegator(t.__asyncValues(e)))}}catch(e){r={error:e}}finally{try{!o&&!n&&(i=s.return)&&(yield t.__await(i.call(s)))}finally{if(r)throw r.error}}})}listAtManagementGroup(e,t){let n=this.listAtManagementGroupPagingAll(e,t);return{next(){return n.next()},[Symbol.asyncIterator](){return this},byPage:n=>{if(n?.maxPageSize)throw Error(`maxPageSize is not supported by this operation.`);return this.listAtManagementGroupPagingPage(e,t,n)}}}listAtManagementGroupPagingPage(e,n,r){return t.__asyncGenerator(this,arguments,function*(){let i,a=r?.continuationToken;if(!a){i=yield t.__await(this._listAtManagementGroup(e,n));let r=i.value||[];a=i.nextLink,u(r,a),yield yield t.__await(r)}for(;a;){i=yield t.__await(this._listAtManagementGroupNext(e,a,n)),a=i.nextLink;let r=i.value||[];u(r,a),yield yield t.__await(r)}})}listAtManagementGroupPagingAll(e,n){return t.__asyncGenerator(this,arguments,function*(){var r,i,a,o;try{for(var s=!0,c=t.__asyncValues(this.listAtManagementGroupPagingPage(e,n)),l;l=yield t.__await(c.next()),r=l.done,!r;s=!0){o=l.value,s=!1;let e=o;yield t.__await(yield*t.__asyncDelegator(t.__asyncValues(e)))}}catch(e){i={error:e}}finally{try{!s&&!r&&(a=c.return)&&(yield t.__await(a.call(c)))}finally{if(i)throw i.error}}})}_listAtResourceGroup(e,t){return this.client.sendOperationRequest({resourceGroupName:e,options:t},oe)}_listAtSubscription(e){return this.client.sendOperationRequest({options:e},se)}_listAtManagementGroup(e,t){return this.client.sendOperationRequest({managementGroupId:e,options:t},ce)}beginCreateOrUpdateAtResourceGroup(e,n,r,a){return t.__awaiter(this,void 0,void 0,function*(){let o=(e,n)=>t.__awaiter(this,void 0,void 0,function*(){return this.client.sendOperationRequest(e,n)}),s=W({sendOperationFn:(e,n)=>t.__awaiter(this,void 0,void 0,function*(){let t,r=e.options?.onResponse;return{flatResponse:yield o(Object.assign(Object.assign({},e),{options:Object.assign(Object.assign({},e.options),{onResponse:(e,n)=>{t=e,r?.(e,n)}})}),n),rawResponse:{statusCode:t.status,body:t.parsedBody,headers:t.headers.toJSON()}}}),args:{resourceGroupName:e,deploymentStackName:n,deploymentStack:r,options:a},spec:le}),c=yield i.createHttpPoller(s,{restoreFrom:a?.resumeFrom,intervalInMs:a?.updateIntervalInMs,resourceLocationConfig:`azure-async-operation`});return yield c.poll(),c})}beginCreateOrUpdateAtResourceGroupAndWait(e,n,r,i){return t.__awaiter(this,void 0,void 0,function*(){return(yield this.beginCreateOrUpdateAtResourceGroup(e,n,r,i)).pollUntilDone()})}getAtResourceGroup(e,t,n){return this.client.sendOperationRequest({resourceGroupName:e,deploymentStackName:t,options:n},ue)}beginDeleteAtResourceGroup(e,n,r){return t.__awaiter(this,void 0,void 0,function*(){let a=(e,n)=>t.__awaiter(this,void 0,void 0,function*(){return this.client.sendOperationRequest(e,n)}),o=W({sendOperationFn:(e,n)=>t.__awaiter(this,void 0,void 0,function*(){let t,r=e.options?.onResponse;return{flatResponse:yield a(Object.assign(Object.assign({},e),{options:Object.assign(Object.assign({},e.options),{onResponse:(e,n)=>{t=e,r?.(e,n)}})}),n),rawResponse:{statusCode:t.status,body:t.parsedBody,headers:t.headers.toJSON()}}}),args:{resourceGroupName:e,deploymentStackName:n,options:r},spec:de}),s=yield i.createHttpPoller(o,{restoreFrom:r?.resumeFrom,intervalInMs:r?.updateIntervalInMs,resourceLocationConfig:`location`});return yield s.poll(),s})}beginDeleteAtResourceGroupAndWait(e,n,r){return t.__awaiter(this,void 0,void 0,function*(){return(yield this.beginDeleteAtResourceGroup(e,n,r)).pollUntilDone()})}beginCreateOrUpdateAtSubscription(e,n,r){return t.__awaiter(this,void 0,void 0,function*(){let a=(e,n)=>t.__awaiter(this,void 0,void 0,function*(){return this.client.sendOperationRequest(e,n)}),o=W({sendOperationFn:(e,n)=>t.__awaiter(this,void 0,void 0,function*(){let t,r=e.options?.onResponse;return{flatResponse:yield a(Object.assign(Object.assign({},e),{options:Object.assign(Object.assign({},e.options),{onResponse:(e,n)=>{t=e,r?.(e,n)}})}),n),rawResponse:{statusCode:t.status,body:t.parsedBody,headers:t.headers.toJSON()}}}),args:{deploymentStackName:e,deploymentStack:n,options:r},spec:fe}),s=yield i.createHttpPoller(o,{restoreFrom:r?.resumeFrom,intervalInMs:r?.updateIntervalInMs,resourceLocationConfig:`azure-async-operation`});return yield s.poll(),s})}beginCreateOrUpdateAtSubscriptionAndWait(e,n,r){return t.__awaiter(this,void 0,void 0,function*(){return(yield this.beginCreateOrUpdateAtSubscription(e,n,r)).pollUntilDone()})}getAtSubscription(e,t){return this.client.sendOperationRequest({deploymentStackName:e,options:t},pe)}beginDeleteAtSubscription(e,n){return t.__awaiter(this,void 0,void 0,function*(){let r=(e,n)=>t.__awaiter(this,void 0,void 0,function*(){return this.client.sendOperationRequest(e,n)}),a=W({sendOperationFn:(e,n)=>t.__awaiter(this,void 0,void 0,function*(){let t,i=e.options?.onResponse;return{flatResponse:yield r(Object.assign(Object.assign({},e),{options:Object.assign(Object.assign({},e.options),{onResponse:(e,n)=>{t=e,i?.(e,n)}})}),n),rawResponse:{statusCode:t.status,body:t.parsedBody,headers:t.headers.toJSON()}}}),args:{deploymentStackName:e,options:n},spec:me}),o=yield i.createHttpPoller(a,{restoreFrom:n?.resumeFrom,intervalInMs:n?.updateIntervalInMs,resourceLocationConfig:`location`});return yield o.poll(),o})}beginDeleteAtSubscriptionAndWait(e,n){return t.__awaiter(this,void 0,void 0,function*(){return(yield this.beginDeleteAtSubscription(e,n)).pollUntilDone()})}beginCreateOrUpdateAtManagementGroup(e,n,r,a){return t.__awaiter(this,void 0,void 0,function*(){let o=(e,n)=>t.__awaiter(this,void 0,void 0,function*(){return this.client.sendOperationRequest(e,n)}),s=W({sendOperationFn:(e,n)=>t.__awaiter(this,void 0,void 0,function*(){let t,r=e.options?.onResponse;return{flatResponse:yield o(Object.assign(Object.assign({},e),{options:Object.assign(Object.assign({},e.options),{onResponse:(e,n)=>{t=e,r?.(e,n)}})}),n),rawResponse:{statusCode:t.status,body:t.parsedBody,headers:t.headers.toJSON()}}}),args:{managementGroupId:e,deploymentStackName:n,deploymentStack:r,options:a},spec:he}),c=yield i.createHttpPoller(s,{restoreFrom:a?.resumeFrom,intervalInMs:a?.updateIntervalInMs,resourceLocationConfig:`azure-async-operation`});return yield c.poll(),c})}beginCreateOrUpdateAtManagementGroupAndWait(e,n,r,i){return t.__awaiter(this,void 0,void 0,function*(){return(yield this.beginCreateOrUpdateAtManagementGroup(e,n,r,i)).pollUntilDone()})}getAtManagementGroup(e,t,n){return this.client.sendOperationRequest({managementGroupId:e,deploymentStackName:t,options:n},ge)}beginDeleteAtManagementGroup(e,n,r){return t.__awaiter(this,void 0,void 0,function*(){let a=(e,n)=>t.__awaiter(this,void 0,void 0,function*(){return this.client.sendOperationRequest(e,n)}),o=W({sendOperationFn:(e,n)=>t.__awaiter(this,void 0,void 0,function*(){let t,r=e.options?.onResponse;return{flatResponse:yield a(Object.assign(Object.assign({},e),{options:Object.assign(Object.assign({},e.options),{onResponse:(e,n)=>{t=e,r?.(e,n)}})}),n),rawResponse:{statusCode:t.status,body:t.parsedBody,headers:t.headers.toJSON()}}}),args:{managementGroupId:e,deploymentStackName:n,options:r},spec:_e}),s=yield i.createHttpPoller(o,{restoreFrom:r?.resumeFrom,intervalInMs:r?.updateIntervalInMs,resourceLocationConfig:`location`});return yield s.poll(),s})}beginDeleteAtManagementGroupAndWait(e,n,r){return t.__awaiter(this,void 0,void 0,function*(){return(yield this.beginDeleteAtManagementGroup(e,n,r)).pollUntilDone()})}exportTemplateAtResourceGroup(e,t,n){return this.client.sendOperationRequest({resourceGroupName:e,deploymentStackName:t,options:n},ve)}exportTemplateAtSubscription(e,t){return this.client.sendOperationRequest({deploymentStackName:e,options:t},ye)}exportTemplateAtManagementGroup(e,t,n){return this.client.sendOperationRequest({managementGroupId:e,deploymentStackName:t,options:n},be)}beginValidateStackAtResourceGroup(e,n,r,a){return t.__awaiter(this,void 0,void 0,function*(){let o=(e,n)=>t.__awaiter(this,void 0,void 0,function*(){return this.client.sendOperationRequest(e,n)}),s=W({sendOperationFn:(e,n)=>t.__awaiter(this,void 0,void 0,function*(){let t,r=e.options?.onResponse;return{flatResponse:yield o(Object.assign(Object.assign({},e),{options:Object.assign(Object.assign({},e.options),{onResponse:(e,n)=>{t=e,r?.(e,n)}})}),n),rawResponse:{statusCode:t.status,body:t.parsedBody,headers:t.headers.toJSON()}}}),args:{resourceGroupName:e,deploymentStackName:n,deploymentStack:r,options:a},spec:xe}),c=yield i.createHttpPoller(s,{restoreFrom:a?.resumeFrom,intervalInMs:a?.updateIntervalInMs,resourceLocationConfig:`location`});return yield c.poll(),c})}beginValidateStackAtResourceGroupAndWait(e,n,r,i){return t.__awaiter(this,void 0,void 0,function*(){return(yield this.beginValidateStackAtResourceGroup(e,n,r,i)).pollUntilDone()})}beginValidateStackAtSubscription(e,n,r){return t.__awaiter(this,void 0,void 0,function*(){let a=(e,n)=>t.__awaiter(this,void 0,void 0,function*(){return this.client.sendOperationRequest(e,n)}),o=W({sendOperationFn:(e,n)=>t.__awaiter(this,void 0,void 0,function*(){let t,r=e.options?.onResponse;return{flatResponse:yield a(Object.assign(Object.assign({},e),{options:Object.assign(Object.assign({},e.options),{onResponse:(e,n)=>{t=e,r?.(e,n)}})}),n),rawResponse:{statusCode:t.status,body:t.parsedBody,headers:t.headers.toJSON()}}}),args:{deploymentStackName:e,deploymentStack:n,options:r},spec:Se}),s=yield i.createHttpPoller(o,{restoreFrom:r?.resumeFrom,intervalInMs:r?.updateIntervalInMs,resourceLocationConfig:`location`});return yield s.poll(),s})}beginValidateStackAtSubscriptionAndWait(e,n,r){return t.__awaiter(this,void 0,void 0,function*(){return(yield this.beginValidateStackAtSubscription(e,n,r)).pollUntilDone()})}beginValidateStackAtManagementGroup(e,n,r,a){return t.__awaiter(this,void 0,void 0,function*(){let o=(e,n)=>t.__awaiter(this,void 0,void 0,function*(){return this.client.sendOperationRequest(e,n)}),s=W({sendOperationFn:(e,n)=>t.__awaiter(this,void 0,void 0,function*(){let t,r=e.options?.onResponse;return{flatResponse:yield o(Object.assign(Object.assign({},e),{options:Object.assign(Object.assign({},e.options),{onResponse:(e,n)=>{t=e,r?.(e,n)}})}),n),rawResponse:{statusCode:t.status,body:t.parsedBody,headers:t.headers.toJSON()}}}),args:{managementGroupId:e,deploymentStackName:n,deploymentStack:r,options:a},spec:Ce}),c=yield i.createHttpPoller(s,{restoreFrom:a?.resumeFrom,intervalInMs:a?.updateIntervalInMs,resourceLocationConfig:`location`});return yield c.poll(),c})}beginValidateStackAtManagementGroupAndWait(e,n,r,i){return t.__awaiter(this,void 0,void 0,function*(){return(yield this.beginValidateStackAtManagementGroup(e,n,r,i)).pollUntilDone()})}_listAtResourceGroupNext(e,t,n){return this.client.sendOperationRequest({resourceGroupName:e,nextLink:t,options:n},we)}_listAtSubscriptionNext(e,t){return this.client.sendOperationRequest({nextLink:e,options:t},Te)}_listAtManagementGroupNext(e,t,n){return this.client.sendOperationRequest({managementGroupId:e,nextLink:t,options:n},Ee)}};let G=o.createSerializer(ee,!1),oe={path:`/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Resources/deploymentStacks`,httpMethod:`GET`,responses:{200:{bodyMapper:d},default:{bodyMapper:x}},queryParameters:[R],urlParameters:[F,I,L],headerParameters:[P],serializer:G},se={path:`/subscriptions/{subscriptionId}/providers/Microsoft.Resources/deploymentStacks`,httpMethod:`GET`,responses:{200:{bodyMapper:d},default:{bodyMapper:x}},queryParameters:[R],urlParameters:[F,I],headerParameters:[P],serializer:G},ce={path:`/providers/Microsoft.Management/managementGroups/{managementGroupId}/providers/Microsoft.Resources/deploymentStacks`,httpMethod:`GET`,responses:{200:{bodyMapper:d},default:{bodyMapper:x}},queryParameters:[R],urlParameters:[F,z],headerParameters:[P],serializer:G},le={path:`/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Resources/deploymentStacks/{deploymentStackName}`,httpMethod:`PUT`,responses:{200:{bodyMapper:N},201:{bodyMapper:N},202:{bodyMapper:N},204:{bodyMapper:N},default:{bodyMapper:x}},requestBody:V,queryParameters:[R],urlParameters:[F,I,L,te],headerParameters:[P,B],mediaType:`json`,serializer:G},ue={path:`/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Resources/deploymentStacks/{deploymentStackName}`,httpMethod:`GET`,responses:{200:{bodyMapper:N},default:{bodyMapper:x}},queryParameters:[R],urlParameters:[F,I,L,te],headerParameters:[P],serializer:G},de={path:`/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Resources/deploymentStacks/{deploymentStackName}`,httpMethod:`DELETE`,responses:{200:{},201:{},202:{},204:{},default:{bodyMapper:x}},queryParameters:[R,H,ne,re,U],urlParameters:[F,I,L,te],headerParameters:[P],serializer:G},fe={path:`/subscriptions/{subscriptionId}/providers/Microsoft.Resources/deploymentStacks/{deploymentStackName}`,httpMethod:`PUT`,responses:{200:{bodyMapper:N},201:{bodyMapper:N},202:{bodyMapper:N},204:{bodyMapper:N},default:{bodyMapper:x}},requestBody:V,queryParameters:[R],urlParameters:[F,I,te],headerParameters:[P,B],mediaType:`json`,serializer:G},pe={path:`/subscriptions/{subscriptionId}/providers/Microsoft.Resources/deploymentStacks/{deploymentStackName}`,httpMethod:`GET`,responses:{200:{bodyMapper:N},default:{bodyMapper:x}},queryParameters:[R],urlParameters:[F,I,te],headerParameters:[P],serializer:G},me={path:`/subscriptions/{subscriptionId}/providers/Microsoft.Resources/deploymentStacks/{deploymentStackName}`,httpMethod:`DELETE`,responses:{200:{},201:{},202:{},204:{},default:{bodyMapper:x}},queryParameters:[R,H,ne,re,U],urlParameters:[F,I,te],headerParameters:[P],serializer:G},he={path:`/providers/Microsoft.Management/managementGroups/{managementGroupId}/providers/Microsoft.Resources/deploymentStacks/{deploymentStackName}`,httpMethod:`PUT`,responses:{200:{bodyMapper:N},201:{bodyMapper:N},202:{bodyMapper:N},204:{bodyMapper:N},default:{bodyMapper:x}},requestBody:V,queryParameters:[R],urlParameters:[F,z,te],headerParameters:[P,B],mediaType:`json`,serializer:G},ge={path:`/providers/Microsoft.Management/managementGroups/{managementGroupId}/providers/Microsoft.Resources/deploymentStacks/{deploymentStackName}`,httpMethod:`GET`,responses:{200:{bodyMapper:N},default:{bodyMapper:x}},queryParameters:[R],urlParameters:[F,z,te],headerParameters:[P],serializer:G},_e={path:`/providers/Microsoft.Management/managementGroups/{managementGroupId}/providers/Microsoft.Resources/deploymentStacks/{deploymentStackName}`,httpMethod:`DELETE`,responses:{200:{},201:{},202:{},204:{},default:{bodyMapper:x}},queryParameters:[R,H,ne,re,U],urlParameters:[F,z,te],headerParameters:[P],serializer:G},ve={path:`/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Resources/deploymentStacks/{deploymentStackName}/exportTemplate`,httpMethod:`POST`,responses:{200:{bodyMapper:D},default:{bodyMapper:x}},queryParameters:[R],urlParameters:[F,I,L,te],headerParameters:[P],serializer:G},ye={path:`/subscriptions/{subscriptionId}/providers/Microsoft.Resources/deploymentStacks/{deploymentStackName}/exportTemplate`,httpMethod:`POST`,responses:{200:{bodyMapper:D},default:{bodyMapper:x}},queryParameters:[R],urlParameters:[F,I,te],headerParameters:[P],serializer:G},be={path:`/providers/Microsoft.Management/managementGroups/{managementGroupId}/providers/Microsoft.Resources/deploymentStacks/{deploymentStackName}/exportTemplate`,httpMethod:`POST`,responses:{200:{bodyMapper:D},default:{bodyMapper:x}},queryParameters:[R],urlParameters:[F,z,te],headerParameters:[P],serializer:G},xe={path:`/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Resources/deploymentStacks/{deploymentStackName}/validate`,httpMethod:`POST`,responses:{200:{bodyMapper:M},201:{bodyMapper:M},202:{bodyMapper:M},204:{bodyMapper:M},default:{bodyMapper:x}},requestBody:V,queryParameters:[R],urlParameters:[F,I,L,te],headerParameters:[P,B],mediaType:`json`,serializer:G},Se={path:`/subscriptions/{subscriptionId}/providers/Microsoft.Resources/deploymentStacks/{deploymentStackName}/validate`,httpMethod:`POST`,responses:{200:{bodyMapper:M},201:{bodyMapper:M},202:{bodyMapper:M},204:{bodyMapper:M},default:{bodyMapper:x}},requestBody:V,queryParameters:[R],urlParameters:[F,I,te],headerParameters:[P,B],mediaType:`json`,serializer:G},Ce={path:`/providers/Microsoft.Management/managementGroups/{managementGroupId}/providers/Microsoft.Resources/deploymentStacks/{deploymentStackName}/validate`,httpMethod:`POST`,responses:{200:{bodyMapper:M},201:{bodyMapper:M},202:{bodyMapper:M},204:{bodyMapper:M},default:{bodyMapper:x}},requestBody:V,queryParameters:[R],urlParameters:[F,z,te],headerParameters:[P,B],mediaType:`json`,serializer:G},we={path:`{nextLink}`,httpMethod:`GET`,responses:{200:{bodyMapper:d},default:{bodyMapper:x}},urlParameters:[F,I,L,ie],headerParameters:[P],serializer:G},Te={path:`{nextLink}`,httpMethod:`GET`,responses:{200:{bodyMapper:d},default:{bodyMapper:x}},urlParameters:[F,I,ie],headerParameters:[P],serializer:G},Ee={path:`{nextLink}`,httpMethod:`GET`,responses:{200:{bodyMapper:d},default:{bodyMapper:x}},urlParameters:[F,z,ie],headerParameters:[P],serializer:G};e.DeploymentStacksClient=class extends o.ServiceClient{constructor(e,t,n){if(e===void 0)throw Error(`'credentials' cannot be null`);let r;typeof t==`string`?r=t:typeof t==`object`&&(n=t),n||={};let i={requestContentType:`application/json; charset=utf-8`,credential:e},a=`azsdk-js-arm-resourcesdeploymentstacks/1.0.0`,c=n.userAgentOptions&&n.userAgentOptions.userAgentPrefix?`${n.userAgentOptions.userAgentPrefix} ${a}`:`${a}`,l=Object.assign(Object.assign(Object.assign({},i),n),{userAgentOptions:{userAgentPrefix:c},endpoint:n.endpoint??n.baseUri??`https://management.azure.com`});super(l);let u=!1;n?.pipeline&&n.pipeline.getOrderedPolicies().length>0&&(u=n.pipeline.getOrderedPolicies().some(e=>e.name===s.bearerTokenAuthenticationPolicyName)),(!n||!n.pipeline||n.pipeline.getOrderedPolicies().length==0||!u)&&(this.pipeline.removePolicy({name:s.bearerTokenAuthenticationPolicyName}),this.pipeline.addPolicy(s.bearerTokenAuthenticationPolicy({credential:e,scopes:l.credentialScopes??`${l.endpoint}/.default`,challengeCallbacks:{authorizeRequestOnChallenge:o.authorizeRequestOnClaimChallenge}}))),this.subscriptionId=r,this.$host=n.$host||`https://management.azure.com`,this.apiVersion=n.apiVersion||`2024-03-01`,this.deploymentStacks=new ae(this),this.addCustomApiVersionPolicy(n.apiVersion)}addCustomApiVersionPolicy(e){e&&this.pipeline.addPolicy({name:`CustomApiVersionPolicy`,sendRequest(n,r){return t.__awaiter(this,void 0,void 0,function*(){let t=n.url.split(`?`);if(t.length>1){let r=t[1].split(`&`).map(t=>t.indexOf(`api-version`)>-1?`api-version=`+e:t);n.url=t[0]+`?`+r.join(`&`)}return r(n)})}})}},e.getContinuationToken=l})),Rs=b((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.DEFAULT_TOKEN_CACHE_NAME=e.CACHE_NON_CAE_SUFFIX=e.CACHE_CAE_SUFFIX=e.ALL_TENANTS=e.DefaultAuthority=e.DefaultAuthorityHost=e.AzureAuthorityHosts=e.DefaultTenantId=e.DeveloperSignOnClientId=e.SDK_VERSION=void 0,e.SDK_VERSION=`4.13.0`,e.DeveloperSignOnClientId=`04b07795-8ddb-461a-bbee-02f9e1bf7b46`,e.DefaultTenantId=`common`;var t;(function(e){e.AzureChina=`https://login.chinacloudapi.cn`,e.AzureGermany=`https://login.microsoftonline.de`,e.AzureGovernment=`https://login.microsoftonline.us`,e.AzurePublicCloud=`https://login.microsoftonline.com`})(t||(e.AzureAuthorityHosts=t={})),e.DefaultAuthorityHost=t.AzurePublicCloud,e.DefaultAuthority=`login.microsoftonline.com`,e.ALL_TENANTS=[`*`],e.CACHE_CAE_SUFFIX=`cae`,e.CACHE_NON_CAE_SUFFIX=`nocae`,e.DEFAULT_TOKEN_CACHE_NAME=`msal.cache`})),zs=b((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.msalPlugins=e.msalNodeFlowVSCodeCredentialControl=e.msalNodeFlowNativeBrokerControl=e.vsCodeBrokerInfo=e.vsCodeAuthRecordPath=e.nativeBrokerInfo=e.msalNodeFlowCacheControl=e.persistenceProvider=void 0,e.hasNativeBroker=n,e.hasVSCodePlugin=r;let t=Rs();e.persistenceProvider=void 0,e.msalNodeFlowCacheControl={setPersistence(t){e.persistenceProvider=t}},e.nativeBrokerInfo=void 0,e.vsCodeAuthRecordPath=void 0,e.vsCodeBrokerInfo=void 0;function n(){return e.nativeBrokerInfo!==void 0}function r(){return e.vsCodeAuthRecordPath!==void 0&&e.vsCodeBrokerInfo!==void 0}e.msalNodeFlowNativeBrokerControl={setNativeBroker(t){e.nativeBrokerInfo={broker:t}}},e.msalNodeFlowVSCodeCredentialControl={setVSCodeAuthRecordPath(t){e.vsCodeAuthRecordPath=t},setVSCodeBroker(t){e.vsCodeBrokerInfo={broker:t}}};function i(n){let r={cache:{},broker:{...n.brokerOptions,isEnabled:n.brokerOptions?.enabled??!1,enableMsaPassthrough:n.brokerOptions?.legacyEnableMsaPassthrough??!1}};if(n.tokenCachePersistenceOptions?.enabled){if(e.persistenceProvider===void 0)throw Error([`Persistent token caching was requested, but no persistence provider was configured.`,"You must install the identity-cache-persistence plugin package (`npm install --save @azure/identity-cache-persistence`)","and enable it by importing `useIdentityPlugin` from `@azure/identity` and calling","`useIdentityPlugin(cachePersistencePlugin)` before using `tokenCachePersistenceOptions`."].join(` `));let i=n.tokenCachePersistenceOptions.name||t.DEFAULT_TOKEN_CACHE_NAME;r.cache.cachePlugin=(0,e.persistenceProvider)({name:`${i}.${t.CACHE_NON_CAE_SUFFIX}`,...n.tokenCachePersistenceOptions}),r.cache.cachePluginCae=(0,e.persistenceProvider)({name:`${i}.${t.CACHE_CAE_SUFFIX}`,...n.tokenCachePersistenceOptions})}return n.brokerOptions?.enabled&&(r.broker.nativeBrokerPlugin=s(n.isVSCodeCredential||!1)),r}let a={missing:(e,t,n)=>[`${e} was requested, but no plugin was configured or no authentication record was found.`,`You must install the ${t} plugin package (npm install --save ${t})`,"and enable it by importing `useIdentityPlugin` from `@azure/identity` and calling",`useIdentityPlugin(${n}) before using enableBroker.`].join(` `),unavailable:(e,t)=>[`${e} was requested, and the plugin is configured, but the broker is unavailable.`,`Ensure the ${e} plugin is properly installed and configured.`,`Check for missing native dependencies and ensure the package is properly installed.`,`See the README for prerequisites on installing and using ${t}.`].join(` `)},o={vsCode:{credentialName:`Visual Studio Code Credential`,packageName:`@azure/identity-vscode`,pluginVar:`vsCodePlugin`,get brokerInfo(){return e.vsCodeBrokerInfo}},native:{credentialName:`Broker for WAM`,packageName:`@azure/identity-broker`,pluginVar:`nativeBrokerPlugin`,get brokerInfo(){return e.nativeBrokerInfo}}};function s(e){let{credentialName:t,packageName:n,pluginVar:r,brokerInfo:i}=o[e?`vsCode`:`native`];if(i===void 0)throw Error(a.missing(t,n,r));if(i.broker.isBrokerAvailable===!1)throw Error(a.unavailable(t,n));return i.broker}e.msalPlugins={generatePluginConfiguration:i}})),Bs=b((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.useIdentityPlugin=r;let t=zs(),n={cachePluginControl:t.msalNodeFlowCacheControl,nativeBrokerPluginControl:t.msalNodeFlowNativeBrokerControl,vsCodeCredentialControl:t.msalNodeFlowVSCodeCredentialControl};function r(e){e(n)}})),Vs=b((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.AuthenticationRequiredError=e.AggregateAuthenticationError=e.AggregateAuthenticationErrorName=e.AuthenticationError=e.AuthenticationErrorName=e.CredentialUnavailableError=e.CredentialUnavailableErrorName=void 0;function t(e){return e&&typeof e.error==`string`&&typeof e.error_description==`string`}e.CredentialUnavailableErrorName=`CredentialUnavailableError`,e.CredentialUnavailableError=class extends Error{constructor(t,n){super(t,n),this.name=e.CredentialUnavailableErrorName}},e.AuthenticationErrorName=`AuthenticationError`,e.AuthenticationError=class extends Error{constructor(r,i,a){let o={error:`unknown`,errorDescription:`An unknown error occurred and no additional details are available.`};if(t(i))o=n(i);else if(typeof i==`string`)try{o=n(JSON.parse(i))}catch{o=r===400?{error:`invalid_request`,errorDescription:`The service indicated that the request was invalid.\n\n${i}`}:{error:`unknown_error`,errorDescription:`An unknown error has occurred. Response body:\n\n${i}`}}else o={error:`unknown_error`,errorDescription:`An unknown error occurred and no additional details are available.`};super(`${o.error} Status code: ${r}\nMore details:\n${o.errorDescription},`,a),this.statusCode=r,this.errorResponse=o,this.name=e.AuthenticationErrorName}},e.AggregateAuthenticationErrorName=`AggregateAuthenticationError`,e.AggregateAuthenticationError=class extends Error{constructor(t,n){let r=t.join(` +`);super(`${n}\n${r}`),this.errors=t,this.name=e.AggregateAuthenticationErrorName}};function n(e){return{error:e.error,errorDescription:e.error_description,correlationId:e.correlation_id,errorCodes:e.error_codes,timestamp:e.timestamp,traceId:e.trace_id}}e.AuthenticationRequiredError=class extends Error{constructor(e){super(e.message,e.cause?{cause:e.cause}:void 0),this.scopes=e.scopes,this.getTokenOptions=e.getTokenOptions,this.name=`AuthenticationRequiredError`}}})),Hs=b((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.logger=void 0,e.processEnvVars=t,e.logEnvVars=n,e.formatSuccess=r,e.formatError=i,e.credentialLoggerInstance=a,e.credentialLogger=o,e.logger=(0,Ua().createClientLogger)(`identity`);function t(e){return e.reduce((e,t)=>(process.env[t]?e.assigned.push(t):e.missing.push(t),e),{missing:[],assigned:[]})}function n(n,r){let{assigned:i}=t(r);e.logger.info(`${n} => Found the following environment variables: ${i.join(`, `)}`)}function r(e){return`SUCCESS. Scopes: ${Array.isArray(e)?e.join(`, `):e}.`}function i(e,t){let n=`ERROR.`;return e?.length&&(n+=` Scopes: ${Array.isArray(e)?e.join(`, `):e}.`),`${n} Error message: ${typeof t==`string`?t:t.message}.`}function a(t,n,r=e.logger){let i=n?`${n.fullTitle} ${t}`:t;function a(e){r.info(`${i} =>`,e)}function o(e){r.warning(`${i} =>`,e)}function s(e){r.verbose(`${i} =>`,e)}function c(e){r.error(`${i} =>`,e)}return{title:t,fullTitle:i,info:a,warning:o,verbose:s,error:c}}function o(t,n=e.logger){let r=a(t,void 0,n);return{...r,parent:n,getToken:a(`=> getToken()`,r,n)}}})),Us=b((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.tracingClient=void 0;let t=Rs();e.tracingClient=(0,To().createTracingClient)({namespace:`Microsoft.AAD`,packageName:`@azure/identity`,packageVersion:t.SDK_VERSION})})),Ws=b((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.ChainedTokenCredential=e.logger=void 0;let t=Vs(),n=Hs(),r=Us();e.logger=(0,n.credentialLogger)(`ChainedTokenCredential`),e.ChainedTokenCredential=class{constructor(...e){this._sources=[],this._sources=e}async getToken(e,t={}){let{token:n}=await this.getTokenInternal(e,t);return n}async getTokenInternal(i,a={}){let o=null,s,c=[];return r.tracingClient.withSpan(`ChainedTokenCredential.getToken`,a,async r=>{for(let t=0;t0){let r=new t.AggregateAuthenticationError(c,`ChainedTokenCredential authentication failed.`);throw e.logger.getToken.info((0,n.formatError)(i,r)),r}if(e.logger.getToken.info(`Result for ${s.constructor.name}: ${(0,n.formatSuccess)(i)}`),o===null)throw new t.CredentialUnavailableError(`Failed to retrieve a valid token`);return{token:o,successfulCredential:s}})}}}));function Gs(){return qs>Ks.length-16&&(t.randomFillSync(Ks),qs=0),Ks.slice(qs,qs+=16)}var Ks,qs,Js=y((()=>{Ks=new Uint8Array(256),qs=Ks.length})),Ys,Xs=y((()=>{Ys=/^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i}));function Zs(e){return typeof e==`string`&&Ys.test(e)}var Qs,$s=y((()=>{Xs(),Qs=Zs}));function ec(e,t=0){let n=(tc[e[t+0]]+tc[e[t+1]]+tc[e[t+2]]+tc[e[t+3]]+`-`+tc[e[t+4]]+tc[e[t+5]]+`-`+tc[e[t+6]]+tc[e[t+7]]+`-`+tc[e[t+8]]+tc[e[t+9]]+`-`+tc[e[t+10]]+tc[e[t+11]]+tc[e[t+12]]+tc[e[t+13]]+tc[e[t+14]]+tc[e[t+15]]).toLowerCase();if(!Qs(n))throw TypeError(`Stringified UUID is invalid`);return n}var tc,nc,rc=y((()=>{$s(),tc=[];for(let e=0;e<256;++e)tc.push((e+256).toString(16).substr(1));nc=ec}));function ic(e,t,n){let r=t&&n||0,i=t||Array(16);e||={};let a=e.node||ac,o=e.clockseq===void 0?oc:e.clockseq;if(a==null||o==null){let t=e.random||(e.rng||Gs)();a??=ac=[t[0]|1,t[1],t[2],t[3],t[4],t[5]],o??=oc=(t[6]<<8|t[7])&16383}let s=e.msecs===void 0?Date.now():e.msecs,c=e.nsecs===void 0?cc+1:e.nsecs,l=s-sc+(c-cc)/1e4;if(l<0&&e.clockseq===void 0&&(o=o+1&16383),(l<0||s>sc)&&e.nsecs===void 0&&(c=0),c>=1e4)throw Error(`uuid.v1(): Can't create more than 10M uuids/sec`);sc=s,cc=c,oc=o,s+=0xb1d069b5400;let u=((s&268435455)*1e4+c)%4294967296;i[r++]=u>>>24&255,i[r++]=u>>>16&255,i[r++]=u>>>8&255,i[r++]=u&255;let d=s/4294967296*1e4&268435455;i[r++]=d>>>8&255,i[r++]=d&255,i[r++]=d>>>24&15|16,i[r++]=d>>>16&255,i[r++]=o>>>8|128,i[r++]=o&255;for(let e=0;e<6;++e)i[r+e]=a[e];return t||nc(i)}var ac,oc,sc,cc,lc,uc=y((()=>{Js(),rc(),sc=0,cc=0,lc=ic}));function dc(e){if(!Qs(e))throw TypeError(`Invalid UUID`);let t,n=new Uint8Array(16);return n[0]=(t=parseInt(e.slice(0,8),16))>>>24,n[1]=t>>>16&255,n[2]=t>>>8&255,n[3]=t&255,n[4]=(t=parseInt(e.slice(9,13),16))>>>8,n[5]=t&255,n[6]=(t=parseInt(e.slice(14,18),16))>>>8,n[7]=t&255,n[8]=(t=parseInt(e.slice(19,23),16))>>>8,n[9]=t&255,n[10]=(t=parseInt(e.slice(24,36),16))/1099511627776&255,n[11]=t/4294967296&255,n[12]=t>>>24&255,n[13]=t>>>16&255,n[14]=t>>>8&255,n[15]=t&255,n}var fc,pc=y((()=>{$s(),fc=dc}));function mc(e){e=unescape(encodeURIComponent(e));let t=[];for(let n=0;n{rc(),pc(),gc=`6ba7b810-9dad-11d1-80b4-00c04fd430c8`,_c=`6ba7b811-9dad-11d1-80b4-00c04fd430c8`}));function yc(e){return Array.isArray(e)?e=Buffer.from(e):typeof e==`string`&&(e=Buffer.from(e,`utf8`)),t.createHash(`md5`).update(e).digest()}var bc,xc=y((()=>{bc=yc})),Sc,Cc,wc=y((()=>{vc(),xc(),Sc=hc(`v3`,48,bc),Cc=Sc}));function Tc(e,t,n){e||={};let r=e.random||(e.rng||Gs)();if(r[6]=r[6]&15|64,r[8]=r[8]&63|128,t){n||=0;for(let e=0;e<16;++e)t[n+e]=r[e];return t}return nc(r)}var Ec,Dc=y((()=>{Js(),rc(),Ec=Tc}));function Oc(e){return Array.isArray(e)?e=Buffer.from(e):typeof e==`string`&&(e=Buffer.from(e,`utf8`)),t.createHash(`sha1`).update(e).digest()}var kc,Ac=y((()=>{kc=Oc})),jc,Mc,Nc=y((()=>{vc(),Ac(),jc=hc(`v5`,80,kc),Mc=jc})),Pc,Fc=y((()=>{Pc=`00000000-0000-0000-0000-000000000000`}));function Ic(e){if(!Qs(e))throw TypeError(`Invalid UUID`);return parseInt(e.substr(14,1),16)}var Lc,Rc=y((()=>{$s(),Lc=Ic})),zc=x({NIL:()=>Pc,parse:()=>fc,stringify:()=>nc,v1:()=>lc,v3:()=>Cc,v4:()=>Ec,v5:()=>Mc,validate:()=>Qs,version:()=>Lc}),Bc=y((()=>{uc(),wc(),Dc(),Nc(),Fc(),Rc(),$s(),rc(),pc()})),Vc=b((e=>{let t={LIBRARY_NAME:`MSAL.JS`,SKU:`msal.js.common`,DEFAULT_AUTHORITY:`https://login.microsoftonline.com/common/`,DEFAULT_AUTHORITY_HOST:`login.microsoftonline.com`,DEFAULT_COMMON_TENANT:`common`,ADFS:`adfs`,DSTS:`dstsv2`,AAD_INSTANCE_DISCOVERY_ENDPT:`https://login.microsoftonline.com/common/discovery/instance?api-version=1.1&authorization_endpoint=`,CIAM_AUTH_URL:`.ciamlogin.com`,AAD_TENANT_DOMAIN_SUFFIX:`.onmicrosoft.com`,RESOURCE_DELIM:`|`,NO_ACCOUNT:`NO_ACCOUNT`,CLAIMS:`claims`,CONSUMER_UTID:`9188040d-6c67-4c5b-b112-36a304b66dad`,OPENID_SCOPE:`openid`,PROFILE_SCOPE:`profile`,OFFLINE_ACCESS_SCOPE:`offline_access`,EMAIL_SCOPE:`email`,CODE_GRANT_TYPE:`authorization_code`,RT_GRANT_TYPE:`refresh_token`,S256_CODE_CHALLENGE_METHOD:`S256`,URL_FORM_CONTENT_TYPE:`application/x-www-form-urlencoded;charset=utf-8`,AUTHORIZATION_PENDING:`authorization_pending`,NOT_DEFINED:`not_defined`,EMPTY_STRING:``,NOT_APPLICABLE:`N/A`,NOT_AVAILABLE:`Not Available`,FORWARD_SLASH:`/`,IMDS_ENDPOINT:`http://169.254.169.254/metadata/instance/compute/location`,IMDS_VERSION:`2020-06-01`,IMDS_TIMEOUT:2e3,AZURE_REGION_AUTO_DISCOVER_FLAG:`TryAutoDetect`,REGIONAL_AUTH_PUBLIC_CLOUD_SUFFIX:`login.microsoft.com`,KNOWN_PUBLIC_CLOUDS:[`login.microsoftonline.com`,`login.windows.net`,`login.microsoft.com`,`sts.windows.net`],SHR_NONCE_VALIDITY:240,INVALID_INSTANCE:`invalid_instance`},n={SUCCESS:200,SUCCESS_RANGE_START:200,SUCCESS_RANGE_END:299,REDIRECT:302,CLIENT_ERROR:400,CLIENT_ERROR_RANGE_START:400,BAD_REQUEST:400,UNAUTHORIZED:401,NOT_FOUND:404,REQUEST_TIMEOUT:408,GONE:410,TOO_MANY_REQUESTS:429,CLIENT_ERROR_RANGE_END:499,SERVER_ERROR:500,SERVER_ERROR_RANGE_START:500,SERVICE_UNAVAILABLE:503,GATEWAY_TIMEOUT:504,SERVER_ERROR_RANGE_END:599,MULTI_SIDED_ERROR:600},r={GET:`GET`,POST:`POST`},i=[t.OPENID_SCOPE,t.PROFILE_SCOPE,t.OFFLINE_ACCESS_SCOPE],a=[...i,t.EMAIL_SCOPE],o={CONTENT_TYPE:`Content-Type`,CONTENT_LENGTH:`Content-Length`,RETRY_AFTER:`Retry-After`,CCS_HEADER:`X-AnchorMailbox`,WWWAuthenticate:`WWW-Authenticate`,AuthenticationInfo:`Authentication-Info`,X_MS_REQUEST_ID:`x-ms-request-id`,X_MS_HTTP_VERSION:`x-ms-httpver`},s={ACTIVE_ACCOUNT_FILTERS:`active-account-filters`},c={COMMON:`common`,ORGANIZATIONS:`organizations`,CONSUMERS:`consumers`},l={ACCESS_TOKEN:`access_token`,XMS_CC:`xms_cc`},u={LOGIN:`login`,SELECT_ACCOUNT:`select_account`,CONSENT:`consent`,NONE:`none`,CREATE:`create`,NO_SESSION:`no_session`},d={PLAIN:`plain`,S256:`S256`},f={CODE:`code`,IDTOKEN_TOKEN:`id_token token`,IDTOKEN_TOKEN_REFRESHTOKEN:`id_token token refresh_token`},p={QUERY:`query`,FRAGMENT:`fragment`},m={QUERY:`query`,FRAGMENT:`fragment`,FORM_POST:`form_post`},h={IMPLICIT_GRANT:`implicit`,AUTHORIZATION_CODE_GRANT:`authorization_code`,CLIENT_CREDENTIALS_GRANT:`client_credentials`,RESOURCE_OWNER_PASSWORD_GRANT:`password`,REFRESH_TOKEN_GRANT:`refresh_token`,DEVICE_CODE_GRANT:`device_code`,JWT_BEARER:`urn:ietf:params:oauth:grant-type:jwt-bearer`},g={MSSTS_ACCOUNT_TYPE:`MSSTS`,ADFS_ACCOUNT_TYPE:`ADFS`,MSAV1_ACCOUNT_TYPE:`MSA`,GENERIC_ACCOUNT_TYPE:`Generic`},_={CACHE_KEY_SEPARATOR:`-`,CLIENT_INFO_SEPARATOR:`.`},v={ID_TOKEN:`IdToken`,ACCESS_TOKEN:`AccessToken`,ACCESS_TOKEN_WITH_AUTH_SCHEME:`AccessToken_With_AuthScheme`,REFRESH_TOKEN:`RefreshToken`},y={ADFS:1001,MSA:1002,MSSTS:1003,GENERIC:1004,ACCESS_TOKEN:2001,REFRESH_TOKEN:2002,ID_TOKEN:2003,APP_METADATA:3001,UNDEFINED:9999},b=`appmetadata`,x={CACHE_KEY:`authority-metadata`,REFRESH_TIME_SECONDS:3600*24},S={CONFIG:`config`,CACHE:`cache`,NETWORK:`network`,HARDCODED_VALUES:`hardcoded_values`},C={SCHEMA_VERSION:5,MAX_LAST_HEADER_BYTES:330,MAX_CACHED_ERRORS:50,CACHE_KEY:`server-telemetry`,CATEGORY_SEPARATOR:`|`,VALUE_SEPARATOR:`,`,OVERFLOW_TRUE:`1`,OVERFLOW_FALSE:`0`,UNKNOWN_ERROR:`unknown_error`},w={BEARER:`Bearer`,POP:`pop`,SSH:`ssh-cert`},T={DEFAULT_THROTTLE_TIME_SECONDS:60,DEFAULT_MAX_THROTTLE_TIME_SECONDS:3600,THROTTLING_PREFIX:`throttling`,X_MS_LIB_CAPABILITY_VALUE:`retry-after, h429`},E={INVALID_GRANT_ERROR:`invalid_grant`,CLIENT_MISMATCH_ERROR:`client_mismatch`},D={username:`username`,password:`password`},O={FAILED_AUTO_DETECTION:`1`,INTERNAL_CACHE:`2`,ENVIRONMENT_VARIABLE:`3`,IMDS:`4`},k={CONFIGURED_NO_AUTO_DETECTION:`2`,AUTO_DETECTION_REQUESTED_SUCCESSFUL:`4`,AUTO_DETECTION_REQUESTED_FAILED:`5`},A={NOT_APPLICABLE:`0`,FORCE_REFRESH_OR_CLAIMS:`1`,NO_CACHED_ACCESS_TOKEN:`2`,CACHED_ACCESS_TOKEN_EXPIRED:`3`,PROACTIVELY_REFRESHED:`4`},j={Jwt:`JWT`,Jwk:`JWK`,Pop:`pop`},M={BASE64:`base64`,HEX:`hex`,UTF8:`utf-8`},N=`unexpected_error`,ee=`post_request_failed`;var P=Object.freeze({__proto__:null,postRequestFailed:ee,unexpectedError:N});let F={[N]:`Unexpected error in authentication.`,[ee]:`Post request failed from the network, could be a 4xx/5xx or a network unavailability. Please check the exact error code for details.`},I={unexpectedError:{code:N,desc:F[N]},postRequestFailed:{code:ee,desc:F[ee]}};var L=class e extends Error{constructor(n,r,i){let a=r?`${n}: ${r}`:n;super(a),Object.setPrototypeOf(this,e.prototype),this.errorCode=n||t.EMPTY_STRING,this.errorMessage=r||t.EMPTY_STRING,this.subError=i||t.EMPTY_STRING,this.name=`AuthError`}setCorrelationId(e){this.correlationId=e}};function R(e,t){return new L(e,t?`${F[e]} ${t}`:F[e])}let z=`client_info_decoding_error`,B=`client_info_empty_error`,V=`token_parsing_error`,te=`null_or_empty_token`,H=`endpoints_resolution_error`,ne=`network_error`,re=`openid_config_error`,U=`hash_not_deserialized`,ie=`invalid_state`,W=`state_mismatch`,ae=`state_not_found`,G=`nonce_mismatch`,oe=`auth_time_not_found`,se=`max_age_transpired`,ce=`multiple_matching_tokens`,le=`multiple_matching_accounts`,ue=`multiple_matching_appMetadata`,de=`request_cannot_be_made`,fe=`cannot_remove_empty_scope`,pe=`cannot_append_scopeset`,me=`empty_input_scopeset`,he=`device_code_polling_cancelled`,ge=`device_code_expired`,_e=`device_code_unknown_error`,ve=`no_account_in_silent_request`,ye=`invalid_cache_record`,be=`invalid_cache_environment`,xe=`no_account_found`,Se=`no_crypto_object`,Ce=`unexpected_credential_type`,we=`invalid_assertion`,Te=`invalid_client_credential`,Ee=`token_refresh_required`,De=`user_timeout_reached`,Oe=`token_claims_cnf_required_for_signedjwt`,ke=`authorization_code_missing_from_server_response`,Ae=`binding_key_not_removed`,je=`end_session_endpoint_not_supported`,Me=`key_id_missing`,Ne=`no_network_connectivity`,Pe=`user_canceled`,Fe=`missing_tenant_id_error`,Ie=`method_not_implemented`,Le=`nested_app_auth_bridge_disabled`,Re=`platform_broker_error`;var ze=Object.freeze({__proto__:null,authTimeNotFound:oe,authorizationCodeMissingFromServerResponse:ke,bindingKeyNotRemoved:Ae,cannotAppendScopeSet:pe,cannotRemoveEmptyScope:fe,clientInfoDecodingError:z,clientInfoEmptyError:B,deviceCodeExpired:ge,deviceCodePollingCancelled:he,deviceCodeUnknownError:_e,emptyInputScopeSet:me,endSessionEndpointNotSupported:je,endpointResolutionError:H,hashNotDeserialized:U,invalidAssertion:we,invalidCacheEnvironment:be,invalidCacheRecord:ye,invalidClientCredential:Te,invalidState:ie,keyIdMissing:Me,maxAgeTranspired:se,methodNotImplemented:Ie,missingTenantIdError:Fe,multipleMatchingAccounts:le,multipleMatchingAppMetadata:ue,multipleMatchingTokens:ce,nestedAppAuthBridgeDisabled:Le,networkError:ne,noAccountFound:xe,noAccountInSilentRequest:ve,noCryptoObject:Se,noNetworkConnectivity:Ne,nonceMismatch:G,nullOrEmptyToken:te,openIdConfigError:re,platformBrokerError:Re,requestCannotBeMade:de,stateMismatch:W,stateNotFound:ae,tokenClaimsCnfRequiredForSignedJwt:Oe,tokenParsingError:V,tokenRefreshRequired:Ee,unexpectedCredentialType:Ce,userCanceled:Pe,userTimeoutReached:De});let K={[z]:`The client info could not be parsed/decoded correctly`,[B]:`The client info was empty`,[V]:`Token cannot be parsed`,[te]:`The token is null or empty`,[H]:`Endpoints cannot be resolved`,[ne]:`Network request failed`,[re]:`Could not retrieve endpoints. Check your authority and verify the .well-known/openid-configuration endpoint returns the required endpoints.`,[U]:`The hash parameters could not be deserialized`,[ie]:`State was not the expected format`,[W]:`State mismatch error`,[ae]:`State not found`,[G]:`Nonce mismatch error`,[oe]:`Max Age was requested and the ID token is missing the auth_time variable. auth_time is an optional claim and is not enabled by default - it must be enabled. See https://aka.ms/msaljs/optional-claims for more information.`,[se]:`Max Age is set to 0, or too much time has elapsed since the last end-user authentication.`,[ce]:`The cache contains multiple tokens satisfying the requirements. Call AcquireToken again providing more requirements such as authority or account.`,[le]:`The cache contains multiple accounts satisfying the given parameters. Please pass more info to obtain the correct account`,[ue]:`The cache contains multiple appMetadata satisfying the given parameters. Please pass more info to obtain the correct appMetadata`,[de]:`Token request cannot be made without authorization code or refresh token.`,[fe]:`Cannot remove null or empty scope from ScopeSet`,[pe]:`Cannot append ScopeSet`,[me]:`Empty input ScopeSet cannot be processed`,[he]:`Caller has cancelled token endpoint polling during device code flow by setting DeviceCodeRequest.cancel = true.`,[ge]:`Device code is expired.`,[_e]:`Device code stopped polling for unknown reasons.`,[ve]:`Please pass an account object, silent flow is not supported without account information`,[ye]:`Cache record object was null or undefined.`,[be]:`Invalid environment when attempting to create cache entry`,[xe]:`No account found in cache for given key.`,[Se]:`No crypto object detected.`,[Ce]:`Unexpected credential type.`,[we]:`Client assertion must meet requirements described in https://tools.ietf.org/html/rfc7515`,[Te]:`Client credential (secret, certificate, or assertion) must not be empty when creating a confidential client. An application should at most have one credential`,[Ee]:`Cannot return token from cache because it must be refreshed. This may be due to one of the following reasons: forceRefresh parameter is set to true, claims have been requested, there is no cached access token or it is expired.`,[De]:`User defined timeout for device code polling reached`,[Oe]:`Cannot generate a POP jwt if the token_claims are not populated`,[ke]:`Server response does not contain an authorization code to proceed`,[Ae]:`Could not remove the credential's binding key from storage.`,[je]:`The provided authority does not support logout`,[Me]:`A keyId value is missing from the requested bound token's cache record and is required to match the token to it's stored binding key.`,[Ne]:`No network connectivity. Check your internet connection.`,[Pe]:`User cancelled the flow.`,[Fe]:`A tenant id - not common, organizations, or consumers - must be specified when using the client_credentials flow.`,[Ie]:`This method has not been implemented`,[Le]:`The nested app auth bridge is disabled`,[Re]:`An error occurred in the native broker. See the platformBrokerError property for details.`},Be={clientInfoDecodingError:{code:z,desc:K[z]},clientInfoEmptyError:{code:B,desc:K[B]},tokenParsingError:{code:V,desc:K[V]},nullOrEmptyToken:{code:te,desc:K[te]},endpointResolutionError:{code:H,desc:K[H]},networkError:{code:ne,desc:K[ne]},unableToGetOpenidConfigError:{code:re,desc:K[re]},hashNotDeserialized:{code:U,desc:K[U]},invalidStateError:{code:ie,desc:K[ie]},stateMismatchError:{code:W,desc:K[W]},stateNotFoundError:{code:ae,desc:K[ae]},nonceMismatchError:{code:G,desc:K[G]},authTimeNotFoundError:{code:oe,desc:K[oe]},maxAgeTranspired:{code:se,desc:K[se]},multipleMatchingTokens:{code:ce,desc:K[ce]},multipleMatchingAccounts:{code:le,desc:K[le]},multipleMatchingAppMetadata:{code:ue,desc:K[ue]},tokenRequestCannotBeMade:{code:de,desc:K[de]},removeEmptyScopeError:{code:fe,desc:K[fe]},appendScopeSetError:{code:pe,desc:K[pe]},emptyInputScopeSetError:{code:me,desc:K[me]},DeviceCodePollingCancelled:{code:he,desc:K[he]},DeviceCodeExpired:{code:ge,desc:K[ge]},DeviceCodeUnknownError:{code:_e,desc:K[_e]},NoAccountInSilentRequest:{code:ve,desc:K[ve]},invalidCacheRecord:{code:ye,desc:K[ye]},invalidCacheEnvironment:{code:be,desc:K[be]},noAccountFound:{code:xe,desc:K[xe]},noCryptoObj:{code:Se,desc:K[Se]},unexpectedCredentialType:{code:Ce,desc:K[Ce]},invalidAssertion:{code:we,desc:K[we]},invalidClientCredential:{code:Te,desc:K[Te]},tokenRefreshRequired:{code:Ee,desc:K[Ee]},userTimeoutReached:{code:De,desc:K[De]},tokenClaimsRequired:{code:Oe,desc:K[Oe]},noAuthorizationCodeFromServer:{code:ke,desc:K[ke]},bindingKeyNotRemovedError:{code:Ae,desc:K[Ae]},logoutNotSupported:{code:je,desc:K[je]},keyIdMissing:{code:Me,desc:K[Me]},noNetworkConnectivity:{code:Ne,desc:K[Ne]},userCanceledError:{code:Pe,desc:K[Pe]},missingTenantIdError:{code:Fe,desc:K[Fe]},nestedAppAuthBridgeDisabled:{code:Le,desc:K[Le]},platformBrokerError:{code:Re,desc:K[Re]}};var Ve=class e extends L{constructor(t,n){super(t,n?`${K[t]}: ${n}`:K[t]),this.name=`ClientAuthError`,Object.setPrototypeOf(this,e.prototype)}};function q(e,t){return new Ve(e,t)}function He(e,t){let n=J(e);try{let e=t(n);return JSON.parse(e)}catch{throw q(V)}}function Ue(e){if(!e.signin_state)return!1;let t=[`kmsi`,`dvc_dmjd`];return e.signin_state.some(e=>t.includes(e.trim().toLowerCase()))}function J(e){if(!e)throw q(te);let t=/^([^\.\s]*)\.([^\.\s]+)\.([^\.\s]*)$/.exec(e);if(!t||t.length<4)throw q(V);return t[2]}function We(e,t){if(t===0||Date.now()-3e5>e+t)throw q(se)}var Ge=Object.freeze({__proto__:null,checkMaxAge:We,extractTokenClaims:He,getJWSPayload:J,isKmsi:Ue});let Y={Default:0,Adfs:1,Dsts:2,Ciam:3};function Ke(e){return e.hasOwnProperty(`authorization_endpoint`)&&e.hasOwnProperty(`token_endpoint`)&&e.hasOwnProperty(`issuer`)&&e.hasOwnProperty(`jwks_uri`)}let qe=`redirect_uri_empty`,Je=`claims_request_parsing_error`,Ye=`authority_uri_insecure`,Xe=`url_parse_error`,Ze=`empty_url_error`,Qe=`empty_input_scopes_error`,$e=`invalid_claims`,et=`token_request_empty`,tt=`logout_request_empty`,nt=`invalid_code_challenge_method`,rt=`pkce_params_missing`,it=`invalid_cloud_discovery_metadata`,at=`invalid_authority_metadata`,ot=`untrusted_authority`,st=`missing_ssh_jwk`,ct=`missing_ssh_kid`,X=`missing_nonce_authentication_header`,lt=`invalid_authentication_header`,ut=`cannot_set_OIDCOptions`,dt=`cannot_allow_platform_broker`,ft=`authority_mismatch`,pt=`invalid_request_method_for_EAR`,mt=`invalid_authorize_post_body_parameters`;var ht=Object.freeze({__proto__:null,authorityMismatch:ft,authorityUriInsecure:Ye,cannotAllowPlatformBroker:dt,cannotSetOIDCOptions:ut,claimsRequestParsingError:Je,emptyInputScopesError:Qe,invalidAuthenticationHeader:lt,invalidAuthorityMetadata:at,invalidAuthorizePostBodyParameters:mt,invalidClaims:$e,invalidCloudDiscoveryMetadata:it,invalidCodeChallengeMethod:nt,invalidRequestMethodForEAR:pt,logoutRequestEmpty:tt,missingNonceAuthenticationHeader:X,missingSshJwk:st,missingSshKid:ct,pkceParamsMissing:rt,redirectUriEmpty:qe,tokenRequestEmpty:et,untrustedAuthority:ot,urlEmptyError:Ze,urlParseError:Xe});let gt={[qe]:`A redirect URI is required for all calls, and none has been set.`,[Je]:`Could not parse the given claims request object.`,[Ye]:`Authority URIs must use https. Please see here for valid authority configuration options: https://docs.microsoft.com/en-us/azure/active-directory/develop/msal-js-initializing-client-applications#configuration-options`,[Xe]:`URL could not be parsed into appropriate segments.`,[Ze]:`URL was empty or null.`,[Qe]:`Scopes cannot be passed as null, undefined or empty array because they are required to obtain an access token.`,[$e]:`Given claims parameter must be a stringified JSON object.`,[et]:`Token request was empty and not found in cache.`,[tt]:`The logout request was null or undefined.`,[nt]:`code_challenge_method passed is invalid. Valid values are "plain" and "S256".`,[rt]:`Both params: code_challenge and code_challenge_method are to be passed if to be sent in the request`,[it]:`Invalid cloudDiscoveryMetadata provided. Must be a stringified JSON object containing tenant_discovery_endpoint and metadata fields`,[at]:`Invalid authorityMetadata provided. Must by a stringified JSON object containing authorization_endpoint, token_endpoint, issuer fields.`,[ot]:`The provided authority is not a trusted authority. Please include this authority in the knownAuthorities config parameter.`,[st]:`Missing sshJwk in SSH certificate request. A stringified JSON Web Key is required when using the SSH authentication scheme.`,[ct]:`Missing sshKid in SSH certificate request. A string that uniquely identifies the public SSH key is required when using the SSH authentication scheme.`,[X]:`Unable to find an authentication header containing server nonce. Either the Authentication-Info or WWW-Authenticate headers must be present in order to obtain a server nonce.`,[lt]:`Invalid authentication header provided`,[ut]:`Cannot set OIDCOptions parameter. Please change the protocol mode to OIDC or use a non-Microsoft authority.`,[dt]:`Cannot set allowPlatformBroker parameter to true when not in AAD protocol mode.`,[ft]:`Authority mismatch error. Authority provided in login request or PublicClientApplication config does not match the environment of the provided account. Please use a matching account or make an interactive request to login to this authority.`,[mt]:`Invalid authorize post body parameters provided. If you are using authorizePostBodyParameters, the request method must be POST. Please check the request method and parameters.`,[pt]:`Invalid request method for EAR protocol mode. The request method cannot be GET when using EAR protocol mode. Please change the request method to POST.`},_t={redirectUriNotSet:{code:qe,desc:gt[qe]},claimsRequestParsingError:{code:Je,desc:gt[Je]},authorityUriInsecure:{code:Ye,desc:gt[Ye]},urlParseError:{code:Xe,desc:gt[Xe]},urlEmptyError:{code:Ze,desc:gt[Ze]},emptyScopesError:{code:Qe,desc:gt[Qe]},invalidClaimsRequest:{code:$e,desc:gt[$e]},tokenRequestEmptyError:{code:et,desc:gt[et]},logoutRequestEmptyError:{code:tt,desc:gt[tt]},invalidCodeChallengeMethod:{code:nt,desc:gt[nt]},invalidCodeChallengeParams:{code:rt,desc:gt[rt]},invalidCloudDiscoveryMetadata:{code:it,desc:gt[it]},invalidAuthorityMetadata:{code:at,desc:gt[at]},untrustedAuthority:{code:ot,desc:gt[ot]},missingSshJwk:{code:st,desc:gt[st]},missingSshKid:{code:ct,desc:gt[ct]},missingNonceAuthenticationHeader:{code:X,desc:gt[X]},invalidAuthenticationHeader:{code:lt,desc:gt[lt]},cannotSetOIDCOptions:{code:ut,desc:gt[ut]},cannotAllowPlatformBroker:{code:dt,desc:gt[dt]},authorityMismatch:{code:ft,desc:gt[ft]},invalidAuthorizePostBodyParameters:{code:mt,desc:gt[mt]},invalidRequestMethodForEAR:{code:pt,desc:gt[pt]}};var vt=class e extends L{constructor(t){super(t,gt[t]),this.name=`ClientConfigurationError`,Object.setPrototypeOf(this,e.prototype)}};function yt(e){return new vt(e)}var bt=class{static isEmptyObj(e){if(e)try{let t=JSON.parse(e);return Object.keys(t).length===0}catch{}return!0}static startsWith(e,t){return e.indexOf(t)===0}static endsWith(e,t){return e.length>=t.length&&e.lastIndexOf(t)===e.length-t.length}static queryStringToObject(e){let t={},n=e.split(`&`),r=e=>decodeURIComponent(e.replace(/\+/g,` `));return n.forEach(e=>{if(e.trim()){let[n,i]=e.split(/=(.+)/g,2);n&&i&&(t[r(n)]=r(i))}}),t}static trimArrayEntries(e){return e.map(e=>e.trim())}static removeEmptyStringsFromArray(e){return e.filter(e=>!!e)}static jsonParseHelper(e){try{return JSON.parse(e)}catch{return null}}static matchPattern(e,t){return new RegExp(e.replace(/\\/g,`\\\\`).replace(/\*/g,`[^ ]*`).replace(/\?/g,`\\?`)).test(t)}};function xt(e){if(!e)return e;let t=e.toLowerCase();return bt.endsWith(t,`?`)?t=t.slice(0,-1):bt.endsWith(t,`?/`)&&(t=t.slice(0,-2)),bt.endsWith(t,`/`)||(t+=`/`),t}function St(e){return e.startsWith(`#/`)?e.substring(2):e.startsWith(`#`)||e.startsWith(`?`)?e.substring(1):e}function Ct(e){if(!e||e.indexOf(`=`)<0)return null;try{let t=St(e),n=Object.fromEntries(new URLSearchParams(t));if(n.code||n.ear_jwe||n.error||n.error_description||n.state)return n}catch{throw q(U)}return null}function wt(e,t=!0,n){let r=[];return e.forEach((e,i)=>{!t&&n&&i in n?r.push(`${i}=${e}`):r.push(`${i}=${encodeURIComponent(e)}`)}),r.join(`&`)}function Tt(e){if(!e)return e;let t=e.split(`#`)[0];try{let e=new URL(t);return xt(e.origin+e.pathname+e.search)}catch{return xt(t)}}var Et=Object.freeze({__proto__:null,getDeserializedResponse:Ct,mapToQueryString:wt,normalizeUrlForComparison:Tt,stripLeadingHashOrQuery:St}),Dt=class e{get urlString(){return this._urlString}constructor(t){if(this._urlString=t,!this._urlString)throw yt(Ze);t.includes(`#`)||(this._urlString=e.canonicalizeUri(t))}static canonicalizeUri(e){if(e){let t=e.toLowerCase();return bt.endsWith(t,`?`)?t=t.slice(0,-1):bt.endsWith(t,`?/`)&&(t=t.slice(0,-2)),bt.endsWith(t,`/`)||(t+=`/`),t}return e}validateAsUri(){let e;try{e=this.getUrlComponents()}catch{throw yt(Xe)}if(!e.HostNameAndPort||!e.PathSegments)throw yt(Xe);if(!e.Protocol||e.Protocol.toLowerCase()!==`https:`)throw yt(Ye)}static appendQueryString(e,t){return t?e.indexOf(`?`)<0?`${e}?${t}`:`${e}&${t}`:e}static removeHashFromUrl(t){return e.canonicalizeUri(t.split(`#`)[0])}replaceTenantPath(t){let n=this.getUrlComponents(),r=n.PathSegments;return t&&r.length!==0&&(r[0]===c.COMMON||r[0]===c.ORGANIZATIONS)&&(r[0]=t),e.constructAuthorityUriFromObject(n)}getUrlComponents(){let e=RegExp(`^(([^:/?#]+):)?(//([^/?#]*))?([^?#]*)(\\?([^#]*))?(#(.*))?`),t=this.urlString.match(e);if(!t)throw yt(Xe);let n={Protocol:t[1],HostNameAndPort:t[4],AbsolutePath:t[5],QueryString:t[7]},r=n.AbsolutePath.split(`/`);return r=r.filter(e=>e&&e.length>0),n.PathSegments=r,n.QueryString&&n.QueryString.endsWith(`/`)&&(n.QueryString=n.QueryString.substring(0,n.QueryString.length-1)),n}static getDomainFromUrl(e){let t=RegExp(`^([^:/?#]+://)?([^/?#]*)`),n=e.match(t);if(!n)throw yt(Xe);return n[2]}static getAbsoluteUrl(n,r){if(n[0]===t.FORWARD_SLASH){let t=new e(r).getUrlComponents();return t.Protocol+`//`+t.HostNameAndPort+n}return n}static constructAuthorityUriFromObject(t){return new e(t.Protocol+`//`+t.HostNameAndPort+`/`+t.PathSegments.join(`/`))}static hashContainsKnownProperties(e){return!!Ct(e)}};let Ot={endpointMetadata:{"login.microsoftonline.com":{token_endpoint:`https://login.microsoftonline.com/{tenantid}/oauth2/v2.0/token`,jwks_uri:`https://login.microsoftonline.com/{tenantid}/discovery/v2.0/keys`,issuer:`https://login.microsoftonline.com/{tenantid}/v2.0`,authorization_endpoint:`https://login.microsoftonline.com/{tenantid}/oauth2/v2.0/authorize`,end_session_endpoint:`https://login.microsoftonline.com/{tenantid}/oauth2/v2.0/logout`},"login.chinacloudapi.cn":{token_endpoint:`https://login.chinacloudapi.cn/{tenantid}/oauth2/v2.0/token`,jwks_uri:`https://login.chinacloudapi.cn/{tenantid}/discovery/v2.0/keys`,issuer:`https://login.partner.microsoftonline.cn/{tenantid}/v2.0`,authorization_endpoint:`https://login.chinacloudapi.cn/{tenantid}/oauth2/v2.0/authorize`,end_session_endpoint:`https://login.chinacloudapi.cn/{tenantid}/oauth2/v2.0/logout`},"login.microsoftonline.us":{token_endpoint:`https://login.microsoftonline.us/{tenantid}/oauth2/v2.0/token`,jwks_uri:`https://login.microsoftonline.us/{tenantid}/discovery/v2.0/keys`,issuer:`https://login.microsoftonline.us/{tenantid}/v2.0`,authorization_endpoint:`https://login.microsoftonline.us/{tenantid}/oauth2/v2.0/authorize`,end_session_endpoint:`https://login.microsoftonline.us/{tenantid}/oauth2/v2.0/logout`}},instanceDiscoveryMetadata:{metadata:[{preferred_network:`login.microsoftonline.com`,preferred_cache:`login.windows.net`,aliases:[`login.microsoftonline.com`,`login.windows.net`,`login.microsoft.com`,`sts.windows.net`]},{preferred_network:`login.partner.microsoftonline.cn`,preferred_cache:`login.partner.microsoftonline.cn`,aliases:[`login.partner.microsoftonline.cn`,`login.chinacloudapi.cn`]},{preferred_network:`login.microsoftonline.de`,preferred_cache:`login.microsoftonline.de`,aliases:[`login.microsoftonline.de`]},{preferred_network:`login.microsoftonline.us`,preferred_cache:`login.microsoftonline.us`,aliases:[`login.microsoftonline.us`,`login.usgovcloudapi.net`]},{preferred_network:`login-us.microsoftonline.com`,preferred_cache:`login-us.microsoftonline.com`,aliases:[`login-us.microsoftonline.com`]}]}},kt=Ot.endpointMetadata,At=Ot.instanceDiscoveryMetadata,jt=new Set;At.metadata.forEach(e=>{e.aliases.forEach(e=>{jt.add(e)})});function Mt(e,t){let n,r=e.canonicalAuthority;if(r){let i=new Dt(r).getUrlComponents().HostNameAndPort;n=Nt(i,e.cloudDiscoveryMetadata?.metadata,S.CONFIG,t)||Nt(i,At.metadata,S.HARDCODED_VALUES,t)||e.knownAuthorities}return n||[]}function Nt(e,t,n,r){if(r?.trace(`getAliasesFromMetadata called with source: ${n}`),e&&t){let i=Ft(t,e);if(i)return r?.trace(`getAliasesFromMetadata: found cloud discovery metadata in ${n}, returning aliases`),i.aliases;r?.trace(`getAliasesFromMetadata: did not find cloud discovery metadata in ${n}`)}return null}function Pt(e){return Ft(At.metadata,e)}function Ft(e,t){for(let n=0;n(...a)=>{n.trace(`Executing function ${t}`);let o=r?.startMeasurement(t,i);if(i){let e=t+`CallCount`;r?.incrementFields({[e]:1},i)}try{let r=e(...a);return o?.end({success:!0}),n.trace(`Returning result from ${t}`),r}catch(e){n.trace(`Error occurred in ${t}`);try{n.trace(JSON.stringify(e))}catch{n.trace(`Unable to print error message.`)}throw o?.end({success:!1},e),e}},Ut=(e,t,n,r,i)=>(...a)=>{n.trace(`Executing function ${t}`);let o=r?.startMeasurement(t,i);if(i){let e=t+`CallCount`;r?.incrementFields({[e]:1},i)}return r?.setPreQueueTime(t,i),e(...a).then(e=>(n.trace(`Returning result from ${t}`),o?.end({success:!0}),e)).catch(e=>{n.trace(`Error occurred in ${t}`);try{n.trace(JSON.stringify(e))}catch{n.trace(`Unable to print error message.`)}throw o?.end({success:!1},e),e})};var Wt=class e{constructor(e,t,n,r){this.networkInterface=e,this.logger=t,this.performanceClient=n,this.correlationId=r}async detectRegion(r,i){this.performanceClient?.addQueueMeasurement(Z.RegionDiscoveryDetectRegion,this.correlationId);let a=r;if(a)i.region_source=O.ENVIRONMENT_VARIABLE;else{let r=e.IMDS_OPTIONS;try{let e=await Ut(this.getRegionFromIMDS.bind(this),Z.RegionDiscoveryGetRegionFromIMDS,this.logger,this.performanceClient,this.correlationId)(t.IMDS_VERSION,r);if(e.status===n.SUCCESS&&(a=e.body,i.region_source=O.IMDS),e.status===n.BAD_REQUEST){let e=await Ut(this.getCurrentVersion.bind(this),Z.RegionDiscoveryGetCurrentVersion,this.logger,this.performanceClient,this.correlationId)(r);if(!e)return i.region_source=O.FAILED_AUTO_DETECTION,null;let t=await Ut(this.getRegionFromIMDS.bind(this),Z.RegionDiscoveryGetRegionFromIMDS,this.logger,this.performanceClient,this.correlationId)(e,r);t.status===n.SUCCESS&&(a=t.body,i.region_source=O.IMDS)}}catch{return i.region_source=O.FAILED_AUTO_DETECTION,null}}return a||(i.region_source=O.FAILED_AUTO_DETECTION),a||null}async getRegionFromIMDS(e,n){return this.performanceClient?.addQueueMeasurement(Z.RegionDiscoveryGetRegionFromIMDS,this.correlationId),this.networkInterface.sendGetRequestAsync(`${t.IMDS_ENDPOINT}?api-version=${e}&format=text`,n,t.IMDS_TIMEOUT)}async getCurrentVersion(e){this.performanceClient?.addQueueMeasurement(Z.RegionDiscoveryGetCurrentVersion,this.correlationId);try{let r=await this.networkInterface.sendGetRequestAsync(`${t.IMDS_ENDPOINT}?format=json`,e);return r.status===n.BAD_REQUEST&&r.body&&r.body[`newest-versions`]&&r.body[`newest-versions`].length>0?r.body[`newest-versions`][0]:null}catch{return null}}};Wt.IMDS_OPTIONS={headers:{Metadata:`true`}};function Gt(){return Math.round(new Date().getTime()/1e3)}function Kt(e){return e.getTime()/1e3}function qt(e){return e?new Date(Number(e)*1e3):new Date}function Jt(e,t){let n=Number(e)||0;return Gt()+t>n}function Yt(e,t){let n=Number(e)+t*24*60*60*1e3;return Date.now()>n}function Xt(e){return Number(e)>Gt()}function Zt(e,t){return new Promise(n=>setTimeout(()=>n(t),e))}var Qt=Object.freeze({__proto__:null,delay:Zt,isCacheExpired:Yt,isTokenExpired:Jt,nowSeconds:Gt,toDateFromSeconds:qt,toSecondsFromDate:Kt,wasClockTurnedBack:Xt});function $t(e,t,n,r,i){return{credentialType:v.ID_TOKEN,homeAccountId:e,environment:t,clientId:r,secret:n,realm:i,lastUpdatedAt:Date.now().toString()}}function en(e,t,n,r,i,a,o,s,c,l,u,d,f,p,m){let h={homeAccountId:e,credentialType:v.ACCESS_TOKEN,secret:n,cachedAt:Gt().toString(),expiresOn:o.toString(),extendedExpiresOn:s.toString(),environment:t,clientId:r,realm:i,target:a,tokenType:u||w.BEARER,lastUpdatedAt:Date.now().toString()};if(d&&(h.userAssertionHash=d),l&&(h.refreshOn=l.toString()),p&&(h.requestedClaims=p,h.requestedClaimsHash=m),h.tokenType?.toLowerCase()!==w.BEARER.toLowerCase())switch(h.credentialType=v.ACCESS_TOKEN_WITH_AUTH_SCHEME,h.tokenType){case w.POP:let e=He(n,c);if(!e?.cnf?.kid)throw q(Oe);h.keyId=e.cnf.kid;break;case w.SSH:h.keyId=f}return h}function tn(e,t,n,r,i,a,o){let s={credentialType:v.REFRESH_TOKEN,homeAccountId:e,environment:t,clientId:r,secret:n,lastUpdatedAt:Date.now().toString()};return a&&(s.userAssertionHash=a),i&&(s.familyId=i),o&&(s.expiresOn=o.toString()),s}function $(e){return e.hasOwnProperty(`homeAccountId`)&&e.hasOwnProperty(`environment`)&&e.hasOwnProperty(`credentialType`)&&e.hasOwnProperty(`clientId`)&&e.hasOwnProperty(`secret`)}function nn(e){return e?$(e)&&e.hasOwnProperty(`realm`)&&e.hasOwnProperty(`target`)&&(e.credentialType===v.ACCESS_TOKEN||e.credentialType===v.ACCESS_TOKEN_WITH_AUTH_SCHEME):!1}function rn(e){return e?$(e)&&e.hasOwnProperty(`realm`)&&e.credentialType===v.ID_TOKEN:!1}function an(e){return e?$(e)&&e.credentialType===v.REFRESH_TOKEN:!1}function on(e,t){let n=e.indexOf(C.CACHE_KEY)===0,r=!0;return t&&(r=t.hasOwnProperty(`failedRequests`)&&t.hasOwnProperty(`errors`)&&t.hasOwnProperty(`cacheHits`)),n&&r}function sn(e,t){let n=!1;e&&(n=e.indexOf(T.THROTTLING_PREFIX)===0);let r=!0;return t&&(r=t.hasOwnProperty(`throttleTime`)),n&&r}function cn({environment:e,clientId:t}){return[b,e,t].join(_.CACHE_KEY_SEPARATOR).toLowerCase()}function ln(e,t){return t?e.indexOf(b)===0&&t.hasOwnProperty(`clientId`)&&t.hasOwnProperty(`environment`):!1}function un(e,t){return t?e.indexOf(x.CACHE_KEY)===0&&t.hasOwnProperty(`aliases`)&&t.hasOwnProperty(`preferred_cache`)&&t.hasOwnProperty(`preferred_network`)&&t.hasOwnProperty(`canonical_authority`)&&t.hasOwnProperty(`authorization_endpoint`)&&t.hasOwnProperty(`token_endpoint`)&&t.hasOwnProperty(`issuer`)&&t.hasOwnProperty(`aliasesFromNetwork`)&&t.hasOwnProperty(`endpointsFromNetwork`)&&t.hasOwnProperty(`expiresAt`)&&t.hasOwnProperty(`jwks_uri`):!1}function dn(){return Gt()+x.REFRESH_TIME_SECONDS}function fn(e,t,n){e.authorization_endpoint=t.authorization_endpoint,e.token_endpoint=t.token_endpoint,e.end_session_endpoint=t.end_session_endpoint,e.issuer=t.issuer,e.endpointsFromNetwork=n,e.jwks_uri=t.jwks_uri}function pn(e,t,n){e.aliases=t.aliases,e.preferred_cache=t.preferred_cache,e.preferred_network=t.preferred_network,e.aliasesFromNetwork=n}function mn(e){return e.expiresAt<=Gt()}var hn=Object.freeze({__proto__:null,createAccessTokenEntity:en,createIdTokenEntity:$t,createRefreshTokenEntity:tn,generateAppMetadataKey:cn,generateAuthorityMetadataExpiresAt:dn,isAccessTokenEntity:nn,isAppMetadataEntity:ln,isAuthorityMetadataEntity:un,isAuthorityMetadataExpired:mn,isCredentialEntity:$,isIdTokenEntity:rn,isRefreshTokenEntity:an,isServerTelemetryEntity:on,isThrottlingEntity:sn,updateAuthorityEndpointMetadata:fn,updateCloudDiscoveryMetadata:pn}),gn=class e{constructor(e,t,n,r,i,a,o,s){this.canonicalAuthority=e,this._canonicalAuthority.validateAsUri(),this.networkInterface=t,this.cacheManager=n,this.authorityOptions=r,this.regionDiscoveryMetadata={region_used:void 0,region_source:void 0,region_outcome:void 0},this.logger=i,this.performanceClient=o,this.correlationId=a,this.managedIdentity=s||!1,this.regionDiscovery=new Wt(t,this.logger,this.performanceClient,this.correlationId)}getAuthorityType(e){if(e.HostNameAndPort.endsWith(t.CIAM_AUTH_URL))return Y.Ciam;let n=e.PathSegments;if(n.length)switch(n[0].toLowerCase()){case t.ADFS:return Y.Adfs;case t.DSTS:return Y.Dsts}return Y.Default}get authorityType(){return this.getAuthorityType(this.canonicalAuthorityUrlComponents)}get protocolMode(){return this.authorityOptions.protocolMode}get options(){return this.authorityOptions}get canonicalAuthority(){return this._canonicalAuthority.urlString}set canonicalAuthority(e){this._canonicalAuthority=new Dt(e),this._canonicalAuthority.validateAsUri(),this._canonicalAuthorityUrlComponents=null}get canonicalAuthorityUrlComponents(){return this._canonicalAuthorityUrlComponents||=this._canonicalAuthority.getUrlComponents(),this._canonicalAuthorityUrlComponents}get hostnameAndPort(){return this.canonicalAuthorityUrlComponents.HostNameAndPort.toLowerCase()}get tenant(){return this.canonicalAuthorityUrlComponents.PathSegments[0]}get authorizationEndpoint(){if(this.discoveryComplete())return this.replacePath(this.metadata.authorization_endpoint);throw q(H)}get tokenEndpoint(){if(this.discoveryComplete())return this.replacePath(this.metadata.token_endpoint);throw q(H)}get deviceCodeEndpoint(){if(this.discoveryComplete())return this.replacePath(this.metadata.token_endpoint.replace(`/token`,`/devicecode`));throw q(H)}get endSessionEndpoint(){if(this.discoveryComplete()){if(!this.metadata.end_session_endpoint)throw q(je);return this.replacePath(this.metadata.end_session_endpoint)}else throw q(H)}get selfSignedJwtAudience(){if(this.discoveryComplete())return this.replacePath(this.metadata.issuer);throw q(H)}get jwksUri(){if(this.discoveryComplete())return this.replacePath(this.metadata.jwks_uri);throw q(H)}canReplaceTenant(t){return t.PathSegments.length===1&&!e.reservedTenantDomains.has(t.PathSegments[0])&&this.getAuthorityType(t)===Y.Default&&this.protocolMode!==It.OIDC}replaceTenant(e){return e.replace(/{tenant}|{tenantid}/g,this.tenant)}replacePath(e){let t=e,n=new Dt(this.metadata.canonical_authority).getUrlComponents(),r=n.PathSegments;return this.canonicalAuthorityUrlComponents.PathSegments.forEach((e,i)=>{let a=r[i];if(i===0&&this.canReplaceTenant(n)){let e=new Dt(this.metadata.authorization_endpoint).getUrlComponents().PathSegments[0];a!==e&&(this.logger.verbose(`Replacing tenant domain name ${a} with id ${e}`),a=e)}e!==a&&(t=t.replace(`/${a}/`,`/${e}/`))}),this.replaceTenant(t)}get defaultOpenIdConfigurationEndpoint(){let e=this.hostnameAndPort;return this.canonicalAuthority.endsWith(`v2.0/`)||this.authorityType===Y.Adfs||this.protocolMode===It.OIDC&&!this.isAliasOfKnownMicrosoftAuthority(e)?`${this.canonicalAuthority}.well-known/openid-configuration`:`${this.canonicalAuthority}v2.0/.well-known/openid-configuration`}discoveryComplete(){return!!this.metadata}async resolveEndpointsAsync(){this.performanceClient?.addQueueMeasurement(Z.AuthorityResolveEndpointsAsync,this.correlationId);let e=this.getCurrentMetadataEntity(),t=await Ut(this.updateCloudDiscoveryMetadata.bind(this),Z.AuthorityUpdateCloudDiscoveryMetadata,this.logger,this.performanceClient,this.correlationId)(e);this.canonicalAuthority=this.canonicalAuthority.replace(this.hostnameAndPort,e.preferred_network);let n=await Ut(this.updateEndpointMetadata.bind(this),Z.AuthorityUpdateEndpointMetadata,this.logger,this.performanceClient,this.correlationId)(e);this.updateCachedMetadata(e,t,{source:n}),this.performanceClient?.addFields({cloudDiscoverySource:t,authorityEndpointSource:n},this.correlationId)}getCurrentMetadataEntity(){let e=this.cacheManager.getAuthorityMetadataByAlias(this.hostnameAndPort);return e||={aliases:[],preferred_cache:this.hostnameAndPort,preferred_network:this.hostnameAndPort,canonical_authority:this.canonicalAuthority,authorization_endpoint:``,token_endpoint:``,end_session_endpoint:``,issuer:``,aliasesFromNetwork:!1,endpointsFromNetwork:!1,expiresAt:dn(),jwks_uri:``},e}updateCachedMetadata(e,t,n){t!==S.CACHE&&n?.source!==S.CACHE&&(e.expiresAt=dn(),e.canonical_authority=this.canonicalAuthority);let r=this.cacheManager.generateAuthorityMetadataCacheKey(e.preferred_cache);this.cacheManager.setAuthorityMetadata(r,e),this.metadata=e}async updateEndpointMetadata(e){this.performanceClient?.addQueueMeasurement(Z.AuthorityUpdateEndpointMetadata,this.correlationId);let t=this.updateEndpointMetadataFromLocalSources(e);if(t)return t.source===S.HARDCODED_VALUES&&this.authorityOptions.azureRegionConfiguration?.azureRegion&&t.metadata&&(fn(e,await Ut(this.updateMetadataWithRegionalInformation.bind(this),Z.AuthorityUpdateMetadataWithRegionalInformation,this.logger,this.performanceClient,this.correlationId)(t.metadata),!1),e.canonical_authority=this.canonicalAuthority),t.source;let n=await Ut(this.getEndpointMetadataFromNetwork.bind(this),Z.AuthorityGetEndpointMetadataFromNetwork,this.logger,this.performanceClient,this.correlationId)();if(n)return this.authorityOptions.azureRegionConfiguration?.azureRegion&&(n=await Ut(this.updateMetadataWithRegionalInformation.bind(this),Z.AuthorityUpdateMetadataWithRegionalInformation,this.logger,this.performanceClient,this.correlationId)(n)),fn(e,n,!0),S.NETWORK;throw q(re,this.defaultOpenIdConfigurationEndpoint)}updateEndpointMetadataFromLocalSources(e){this.logger.verbose(`Attempting to get endpoint metadata from authority configuration`);let t=this.getEndpointMetadataFromConfig();if(t)return this.logger.verbose(`Found endpoint metadata in authority configuration`),fn(e,t,!1),{source:S.CONFIG};if(this.logger.verbose(`Did not find endpoint metadata in the config... Attempting to get endpoint metadata from the hardcoded values.`),this.authorityOptions.skipAuthorityMetadataCache)this.logger.verbose(`Skipping hardcoded metadata cache since skipAuthorityMetadataCache is set to true. Attempting to get endpoint metadata from the network metadata cache.`);else{let t=this.getEndpointMetadataFromHardcodedValues();if(t)return fn(e,t,!1),{source:S.HARDCODED_VALUES,metadata:t};this.logger.verbose(`Did not find endpoint metadata in hardcoded values... Attempting to get endpoint metadata from the network metadata cache.`)}let n=mn(e);return this.isAuthoritySameType(e)&&e.endpointsFromNetwork&&!n?(this.logger.verbose(`Found endpoint metadata in the cache.`),{source:S.CACHE}):(n&&this.logger.verbose(`The metadata entity is expired.`),null)}isAuthoritySameType(e){return new Dt(e.canonical_authority).getUrlComponents().PathSegments.length===this.canonicalAuthorityUrlComponents.PathSegments.length}getEndpointMetadataFromConfig(){if(this.authorityOptions.authorityMetadata)try{return JSON.parse(this.authorityOptions.authorityMetadata)}catch{throw yt(at)}return null}async getEndpointMetadataFromNetwork(){this.performanceClient?.addQueueMeasurement(Z.AuthorityGetEndpointMetadataFromNetwork,this.correlationId);let e={},t=this.defaultOpenIdConfigurationEndpoint;this.logger.verbose(`Authority.getEndpointMetadataFromNetwork: attempting to retrieve OAuth endpoints from ${t}`);try{let n=await this.networkInterface.sendGetRequestAsync(t,e);return Ke(n.body)?n.body:(this.logger.verbose(`Authority.getEndpointMetadataFromNetwork: could not parse response as OpenID configuration`),null)}catch(e){return this.logger.verbose(`Authority.getEndpointMetadataFromNetwork: ${e}`),null}}getEndpointMetadataFromHardcodedValues(){return this.hostnameAndPort in kt?kt[this.hostnameAndPort]:null}async updateMetadataWithRegionalInformation(n){this.performanceClient?.addQueueMeasurement(Z.AuthorityUpdateMetadataWithRegionalInformation,this.correlationId);let r=this.authorityOptions.azureRegionConfiguration?.azureRegion;if(r){if(r!==t.AZURE_REGION_AUTO_DISCOVER_FLAG)return this.regionDiscoveryMetadata.region_outcome=k.CONFIGURED_NO_AUTO_DETECTION,this.regionDiscoveryMetadata.region_used=r,e.replaceWithRegionalInformation(n,r);let i=await Ut(this.regionDiscovery.detectRegion.bind(this.regionDiscovery),Z.RegionDiscoveryDetectRegion,this.logger,this.performanceClient,this.correlationId)(this.authorityOptions.azureRegionConfiguration?.environmentRegion,this.regionDiscoveryMetadata);if(i)return this.regionDiscoveryMetadata.region_outcome=k.AUTO_DETECTION_REQUESTED_SUCCESSFUL,this.regionDiscoveryMetadata.region_used=i,e.replaceWithRegionalInformation(n,i);this.regionDiscoveryMetadata.region_outcome=k.AUTO_DETECTION_REQUESTED_FAILED}return n}async updateCloudDiscoveryMetadata(e){this.performanceClient?.addQueueMeasurement(Z.AuthorityUpdateCloudDiscoveryMetadata,this.correlationId);let t=this.updateCloudDiscoveryMetadataFromLocalSources(e);if(t)return t;let n=await Ut(this.getCloudDiscoveryMetadataFromNetwork.bind(this),Z.AuthorityGetCloudDiscoveryMetadataFromNetwork,this.logger,this.performanceClient,this.correlationId)();if(n)return pn(e,n,!0),S.NETWORK;throw yt(ot)}updateCloudDiscoveryMetadataFromLocalSources(e){this.logger.verbose(`Attempting to get cloud discovery metadata from authority configuration`),this.logger.verbosePii(`Known Authorities: ${this.authorityOptions.knownAuthorities||t.NOT_APPLICABLE}`),this.logger.verbosePii(`Authority Metadata: ${this.authorityOptions.authorityMetadata||t.NOT_APPLICABLE}`),this.logger.verbosePii(`Canonical Authority: ${e.canonical_authority||t.NOT_APPLICABLE}`);let n=this.getCloudDiscoveryMetadataFromConfig();if(n)return this.logger.verbose(`Found cloud discovery metadata in authority configuration`),pn(e,n,!1),S.CONFIG;if(this.logger.verbose(`Did not find cloud discovery metadata in the config... Attempting to get cloud discovery metadata from the hardcoded values.`),this.options.skipAuthorityMetadataCache)this.logger.verbose(`Skipping hardcoded cloud discovery metadata cache since skipAuthorityMetadataCache is set to true. Attempting to get cloud discovery metadata from the network metadata cache.`);else{let t=Pt(this.hostnameAndPort);if(t)return this.logger.verbose(`Found cloud discovery metadata from hardcoded values.`),pn(e,t,!1),S.HARDCODED_VALUES;this.logger.verbose(`Did not find cloud discovery metadata in hardcoded values... Attempting to get cloud discovery metadata from the network metadata cache.`)}let r=mn(e);return this.isAuthoritySameType(e)&&e.aliasesFromNetwork&&!r?(this.logger.verbose(`Found cloud discovery metadata in the cache.`),S.CACHE):(r&&this.logger.verbose(`The metadata entity is expired.`),null)}getCloudDiscoveryMetadataFromConfig(){if(this.authorityType===Y.Ciam)return this.logger.verbose(`CIAM authorities do not support cloud discovery metadata, generate the aliases from authority host.`),e.createCloudDiscoveryMetadataFromHost(this.hostnameAndPort);if(this.authorityOptions.cloudDiscoveryMetadata){this.logger.verbose(`The cloud discovery metadata has been provided as a network response, in the config.`);try{this.logger.verbose(`Attempting to parse the cloud discovery metadata.`);let e=Ft(JSON.parse(this.authorityOptions.cloudDiscoveryMetadata).metadata,this.hostnameAndPort);if(this.logger.verbose(`Parsed the cloud discovery metadata.`),e)return this.logger.verbose(`There is returnable metadata attached to the parsed cloud discovery metadata.`),e;this.logger.verbose(`There is no metadata attached to the parsed cloud discovery metadata.`)}catch{throw this.logger.verbose(`Unable to parse the cloud discovery metadata. Throwing Invalid Cloud Discovery Metadata Error.`),yt(it)}}return this.isInKnownAuthorities()?(this.logger.verbose(`The host is included in knownAuthorities. Creating new cloud discovery metadata from the host.`),e.createCloudDiscoveryMetadataFromHost(this.hostnameAndPort)):null}async getCloudDiscoveryMetadataFromNetwork(){this.performanceClient?.addQueueMeasurement(Z.AuthorityGetCloudDiscoveryMetadataFromNetwork,this.correlationId);let n=`${t.AAD_INSTANCE_DISCOVERY_ENDPT}${this.canonicalAuthority}oauth2/v2.0/authorize`,r={},i=null;try{let e=await this.networkInterface.sendGetRequestAsync(n,r),a,o;if(Rt(e.body))a=e.body,o=a.metadata,this.logger.verbosePii(`tenant_discovery_endpoint is: ${a.tenant_discovery_endpoint}`);else if(zt(e.body)){if(this.logger.warning(`A CloudInstanceDiscoveryErrorResponse was returned. The cloud instance discovery network request's status code is: ${e.status}`),a=e.body,a.error===t.INVALID_INSTANCE)return this.logger.error(`The CloudInstanceDiscoveryErrorResponse error is invalid_instance.`),null;this.logger.warning(`The CloudInstanceDiscoveryErrorResponse error is ${a.error}`),this.logger.warning(`The CloudInstanceDiscoveryErrorResponse error description is ${a.error_description}`),this.logger.warning(`Setting the value of the CloudInstanceDiscoveryMetadata (returned from the network) to []`),o=[]}else return this.logger.error(`AAD did not return a CloudInstanceDiscoveryResponse or CloudInstanceDiscoveryErrorResponse`),null;this.logger.verbose(`Attempting to find a match between the developer's authority and the CloudInstanceDiscoveryMetadata returned from the network request.`),i=Ft(o,this.hostnameAndPort)}catch(e){if(e instanceof L)this.logger.error(`There was a network error while attempting to get the cloud discovery instance metadata.\nError: ${e.errorCode}\nError Description: ${e.errorMessage}`);else{let t=e;this.logger.error(`A non-MSALJS error was thrown while attempting to get the cloud instance discovery metadata.\nError: ${t.name}\nError Description: ${t.message}`)}return null}return i||=(this.logger.warning(`The developer's authority was not found within the CloudInstanceDiscoveryMetadata returned from the network request.`),this.logger.verbose(`Creating custom Authority for custom domain scenario.`),e.createCloudDiscoveryMetadataFromHost(this.hostnameAndPort)),i}isInKnownAuthorities(){return this.authorityOptions.knownAuthorities.filter(e=>e&&Dt.getDomainFromUrl(e).toLowerCase()===this.hostnameAndPort).length>0}static generateAuthority(e,n){let r;if(n&&n.azureCloudInstance!==Lt.None){let e=n.tenant?n.tenant:t.DEFAULT_COMMON_TENANT;r=`${n.azureCloudInstance}/${e}/`}return r||e}static createCloudDiscoveryMetadataFromHost(e){return{preferred_network:e,preferred_cache:e,aliases:[e]}}getPreferredCache(){if(this.managedIdentity)return t.DEFAULT_AUTHORITY_HOST;if(this.discoveryComplete())return this.metadata.preferred_cache;throw q(H)}isAlias(e){return this.metadata.aliases.indexOf(e)>-1}isAliasOfKnownMicrosoftAuthority(e){return jt.has(e)}static isPublicCloudAuthority(e){return t.KNOWN_PUBLIC_CLOUDS.indexOf(e)>=0}static buildRegionalAuthorityString(e,n,r){let i=new Dt(e);i.validateAsUri();let a=i.getUrlComponents(),o=`${n}.${a.HostNameAndPort}`;this.isPublicCloudAuthority(a.HostNameAndPort)&&(o=`${n}.${t.REGIONAL_AUTH_PUBLIC_CLOUD_SUFFIX}`);let s=Dt.constructAuthorityUriFromObject({...i.getUrlComponents(),HostNameAndPort:o}).urlString;return r?`${s}?${r}`:s}static replaceWithRegionalInformation(t,n){let r={...t};return r.authorization_endpoint=e.buildRegionalAuthorityString(r.authorization_endpoint,n),r.token_endpoint=e.buildRegionalAuthorityString(r.token_endpoint,n),r.end_session_endpoint&&=e.buildRegionalAuthorityString(r.end_session_endpoint,n),r}static transformCIAMAuthority(e){let n=e,r=new Dt(e).getUrlComponents();if(r.PathSegments.length===0&&r.HostNameAndPort.endsWith(t.CIAM_AUTH_URL)){let e=r.HostNameAndPort.split(`.`)[0];n=`${n}${e}${t.AAD_TENANT_DOMAIN_SUFFIX}`}return n}};gn.reservedTenantDomains=new Set([`{tenant}`,`{tenantid}`,c.COMMON,c.CONSUMERS,c.ORGANIZATIONS]);function _n(e){let t=new Dt(e).getUrlComponents().PathSegments.slice(-1)[0]?.toLowerCase();switch(t){case c.COMMON:case c.ORGANIZATIONS:case c.CONSUMERS:return;default:return t}}function vn(e){return e.endsWith(t.FORWARD_SLASH)?e:`${e}${t.FORWARD_SLASH}`}function yn(e){let t=e.cloudDiscoveryMetadata,n;if(t)try{n=JSON.parse(t)}catch{throw yt(it)}return{canonicalAuthority:e.authority?vn(e.authority):void 0,knownAuthorities:e.knownAuthorities,cloudDiscoveryMetadata:n}}async function bn(e,t,n,r,i,a,o){o?.addQueueMeasurement(Z.AuthorityFactoryCreateDiscoveredInstance,a);let s=new gn(gn.transformCIAMAuthority(vn(e)),t,n,r,i,a,o);try{return await Ut(s.resolveEndpointsAsync.bind(s),Z.AuthorityResolveEndpointsAsync,i,o,a)(),s}catch{throw q(H)}}var xn=Object.freeze({__proto__:null,createDiscoveredInstance:bn});let Sn=`client_id`,Cn=`redirect_uri`,wn=`response_type`,Tn=`response_mode`,En=`grant_type`,Dn=`claims`,On=`scope`,kn=`refresh_token`,An=`state`,jn=`nonce`,Mn=`prompt`,Nn=`code`,Pn=`code_challenge`,Fn=`code_challenge_method`,In=`code_verifier`,Ln=`client-request-id`,Rn=`x-client-SKU`,zn=`x-client-VER`,Bn=`x-client-OS`,Vn=`x-client-CPU`,Hn=`x-client-current-telemetry`,Un=`x-client-last-telemetry`,Wn=`x-ms-lib-capability`,Gn=`x-app-name`,Kn=`x-app-ver`,qn=`post_logout_redirect_uri`,Jn=`id_token_hint`,Yn=`device_code`,Xn=`client_secret`,Zn=`client_assertion`,Qn=`client_assertion_type`,$n=`token_type`,er=`req_cnf`,tr=`assertion`,nr=`requested_token_use`,rr=`return_spa_code`,ir=`nativebroker`,ar=`logout_hint`,or=`login_hint`,sr=`domain_hint`,cr=`brk_client_id`,lr=`brk_redirect_uri`,ur=`instance_aware`,dr=`ear_jwk`,fr=`ear_jwe_crypto`;var pr=Object.freeze({__proto__:null,ACCESS_TOKEN:`access_token`,BROKER_CLIENT_ID:cr,BROKER_REDIRECT_URI:lr,CCS_HEADER:`X-AnchorMailbox`,CLAIMS:Dn,CLIENT_ASSERTION:Zn,CLIENT_ASSERTION_TYPE:Qn,CLIENT_ID:Sn,CLIENT_INFO:`client_info`,CLIENT_REQUEST_ID:Ln,CLIENT_SECRET:Xn,CODE:Nn,CODE_CHALLENGE:Pn,CODE_CHALLENGE_METHOD:Fn,CODE_VERIFIER:In,DEVICE_CODE:Yn,DOMAIN_HINT:sr,EAR_JWE_CRYPTO:fr,EAR_JWK:dr,ERROR:`error`,ERROR_DESCRIPTION:`error_description`,EXPIRES_IN:`expires_in`,FOCI:`foci`,GRANT_TYPE:En,ID_TOKEN:`id_token`,ID_TOKEN_HINT:Jn,INSTANCE_AWARE:ur,LOGIN_HINT:or,LOGOUT_HINT:ar,NATIVE_BROKER:ir,NONCE:jn,OBO_ASSERTION:tr,ON_BEHALF_OF:`on_behalf_of`,POST_LOGOUT_URI:qn,PROMPT:Mn,REDIRECT_URI:Cn,REFRESH_TOKEN:kn,REFRESH_TOKEN_EXPIRES_IN:`refresh_token_expires_in`,REQUESTED_TOKEN_USE:nr,REQ_CNF:er,RESPONSE_MODE:Tn,RESPONSE_TYPE:wn,RETURN_SPA_CODE:rr,SCOPE:On,SESSION_STATE:`session_state`,SID:`sid`,STATE:An,TOKEN_TYPE:$n,X_APP_NAME:Gn,X_APP_VER:Kn,X_CLIENT_CPU:Vn,X_CLIENT_CURR_TELEM:Hn,X_CLIENT_EXTRA_SKU:`x-client-xtra-sku`,X_CLIENT_LAST_TELEM:Un,X_CLIENT_OS:Bn,X_CLIENT_SKU:Rn,X_CLIENT_VER:zn,X_MS_LIB_CAPABILITY:Wn});let mr={createNewGuid:()=>{throw q(Ie)},base64Decode:()=>{throw q(Ie)},base64Encode:()=>{throw q(Ie)},base64UrlEncode:()=>{throw q(Ie)},encodeKid:()=>{throw q(Ie)},async getPublicKeyThumbprint(){throw q(Ie)},async removeTokenBindingKey(){throw q(Ie)},async clearKeystore(){throw q(Ie)},async signJwt(){throw q(Ie)},async hashString(){throw q(Ie)}};e.LogLevel=void 0,(function(e){e[e.Error=0]=`Error`,e[e.Warning=1]=`Warning`,e[e.Info=2]=`Info`,e[e.Verbose=3]=`Verbose`,e[e.Trace=4]=`Trace`})(e.LogLevel||={});var hr=class n{constructor(r,i,a){this.level=e.LogLevel.Info;let o=()=>{},s=r||n.createDefaultLoggerOptions();this.localCallback=s.loggerCallback||o,this.piiLoggingEnabled=s.piiLoggingEnabled||!1,this.level=typeof s.logLevel==`number`?s.logLevel:e.LogLevel.Info,this.correlationId=s.correlationId||t.EMPTY_STRING,this.packageName=i||t.EMPTY_STRING,this.packageVersion=a||t.EMPTY_STRING}static createDefaultLoggerOptions(){return{loggerCallback:()=>{},piiLoggingEnabled:!1,logLevel:e.LogLevel.Info}}clone(e,t,r){return new n({loggerCallback:this.localCallback,piiLoggingEnabled:this.piiLoggingEnabled,logLevel:this.level,correlationId:r||this.correlationId},e,t)}logMessage(t,n){if(n.logLevel>this.level||!this.piiLoggingEnabled&&n.containsPii)return;let r=`${`[${new Date().toUTCString()}] : [${n.correlationId||this.correlationId||``}]`} : ${this.packageName}@${this.packageVersion} : ${e.LogLevel[n.logLevel]} - ${t}`;this.executeCallback(n.logLevel,r,n.containsPii||!1)}executeCallback(e,t,n){this.localCallback&&this.localCallback(e,t,n)}error(n,r){this.logMessage(n,{logLevel:e.LogLevel.Error,containsPii:!1,correlationId:r||t.EMPTY_STRING})}errorPii(n,r){this.logMessage(n,{logLevel:e.LogLevel.Error,containsPii:!0,correlationId:r||t.EMPTY_STRING})}warning(n,r){this.logMessage(n,{logLevel:e.LogLevel.Warning,containsPii:!1,correlationId:r||t.EMPTY_STRING})}warningPii(n,r){this.logMessage(n,{logLevel:e.LogLevel.Warning,containsPii:!0,correlationId:r||t.EMPTY_STRING})}info(n,r){this.logMessage(n,{logLevel:e.LogLevel.Info,containsPii:!1,correlationId:r||t.EMPTY_STRING})}infoPii(n,r){this.logMessage(n,{logLevel:e.LogLevel.Info,containsPii:!0,correlationId:r||t.EMPTY_STRING})}verbose(n,r){this.logMessage(n,{logLevel:e.LogLevel.Verbose,containsPii:!1,correlationId:r||t.EMPTY_STRING})}verbosePii(n,r){this.logMessage(n,{logLevel:e.LogLevel.Verbose,containsPii:!0,correlationId:r||t.EMPTY_STRING})}trace(n,r){this.logMessage(n,{logLevel:e.LogLevel.Trace,containsPii:!1,correlationId:r||t.EMPTY_STRING})}tracePii(n,r){this.logMessage(n,{logLevel:e.LogLevel.Trace,containsPii:!0,correlationId:r||t.EMPTY_STRING})}isPiiLoggingEnabled(){return this.piiLoggingEnabled||!1}};let gr=`@azure/msal-common`,_r=`15.13.2`;var vr=class e{constructor(e){let t=e?bt.trimArrayEntries([...e]):[],n=t?bt.removeEmptyStringsFromArray(t):[];if(!n||!n.length)throw yt(Qe);this.scopes=new Set,n.forEach(e=>this.scopes.add(e))}static fromString(n){return new e((n||t.EMPTY_STRING).split(` `))}static createSearchScopes(n){let r=new e(n&&n.length>0?n:[...i]);return r.containsOnlyOIDCScopes()?r.removeScope(t.OFFLINE_ACCESS_SCOPE):r.removeOIDCScopes(),r}containsScope(t){let n=new e(this.printScopesLowerCase().split(` `));return t?n.scopes.has(t.toLowerCase()):!1}containsScopeSet(e){return!e||e.scopes.size<=0?!1:this.scopes.size>=e.scopes.size&&e.asArray().every(e=>this.containsScope(e))}containsOnlyOIDCScopes(){let e=0;return a.forEach(t=>{this.containsScope(t)&&(e+=1)}),this.scopes.size===e}appendScope(e){e&&this.scopes.add(e.trim())}appendScopes(e){try{e.forEach(e=>this.appendScope(e))}catch{throw q(pe)}}removeScope(e){if(!e)throw q(fe);this.scopes.delete(e.trim())}removeOIDCScopes(){a.forEach(e=>{this.scopes.delete(e)})}unionScopeSets(e){if(!e)throw q(me);let t=new Set;return e.scopes.forEach(e=>t.add(e.toLowerCase())),this.scopes.forEach(e=>t.add(e.toLowerCase())),t}intersectingScopeSets(e){if(!e)throw q(me);e.containsOnlyOIDCScopes()||e.removeOIDCScopes();let t=this.unionScopeSets(e),n=e.getScopeCount(),r=this.getScopeCount();return t.sizee.push(t)),e}printScopes(){return this.scopes?this.asArray().join(` `):t.EMPTY_STRING}printScopesLowerCase(){return this.printScopes().toLowerCase()}};function yr(e,t){if(!e)throw q(B);try{let n=t(e);return JSON.parse(n)}catch{throw q(z)}}function br(e){if(!e)throw q(z);let n=e.split(_.CLIENT_INFO_SEPARATOR,2);return{uid:n[0],utid:n.length<2?t.EMPTY_STRING:n[1]}}function xr(e,t){return!!e&&!!t&&e===t.split(`.`)[1]}function Sr(e,t,n,r){if(r){let{oid:t,sub:n,tid:i,name:a,tfp:o,acr:s,preferred_username:c,upn:l,login_hint:u}=r,d=i||o||s||``;return{tenantId:d,localAccountId:t||n||``,name:a,username:c||l||``,loginHint:u,isHomeTenant:xr(d,e)}}else return{tenantId:n,localAccountId:t,username:``,isHomeTenant:xr(n,e)}}function Cr(e,t,n,r){let i=e;if(t){let{isHomeTenant:n,...r}=t;i={...e,...r}}if(n){let{isHomeTenant:t,...a}=Sr(e.homeAccountId,e.localAccountId,e.tenantId,n);return i={...i,...a,idTokenClaims:n,idToken:r},i}return i}function wr(e){return e&&(e.tid||e.tfp||e.acr)||null}var Tr=class e{static getAccountInfo(e){return{homeAccountId:e.homeAccountId,environment:e.environment,tenantId:e.realm,username:e.username,localAccountId:e.localAccountId,loginHint:e.loginHint,name:e.name,nativeAccountId:e.nativeAccountId,authorityType:e.authorityType,tenantProfiles:new Map((e.tenantProfiles||[]).map(e=>[e.tenantId,e])),dataBoundary:e.dataBoundary}}isSingleTenant(){return!this.tenantProfiles}static createAccount(t,n,r){let i=new e;n.authorityType===Y.Adfs?i.authorityType=g.ADFS_ACCOUNT_TYPE:n.protocolMode===It.OIDC?i.authorityType=g.GENERIC_ACCOUNT_TYPE:i.authorityType=g.MSSTS_ACCOUNT_TYPE;let a;t.clientInfo&&r&&(a=yr(t.clientInfo,r),a.xms_tdbr&&(i.dataBoundary=a.xms_tdbr===`EU`?`EU`:`None`)),i.clientInfo=t.clientInfo,i.homeAccountId=t.homeAccountId,i.nativeAccountId=t.nativeAccountId;let o=t.environment||n&&n.getPreferredCache();if(!o)throw q(be);i.environment=o,i.realm=a?.utid||wr(t.idTokenClaims)||``,i.localAccountId=a?.uid||t.idTokenClaims?.oid||t.idTokenClaims?.sub||``;let s=t.idTokenClaims?.preferred_username||t.idTokenClaims?.upn,c=t.idTokenClaims?.emails?t.idTokenClaims.emails[0]:null;return i.username=s||c||``,i.loginHint=t.idTokenClaims?.login_hint,i.name=t.idTokenClaims?.name||``,i.cloudGraphHostName=t.cloudGraphHostName,i.msGraphHost=t.msGraphHost,t.tenantProfiles?i.tenantProfiles=t.tenantProfiles:i.tenantProfiles=[Sr(t.homeAccountId,i.localAccountId,i.realm,t.idTokenClaims)],i}static createFromAccountInfo(t,n,r){let i=new e;return i.authorityType=t.authorityType||g.GENERIC_ACCOUNT_TYPE,i.homeAccountId=t.homeAccountId,i.localAccountId=t.localAccountId,i.nativeAccountId=t.nativeAccountId,i.realm=t.tenantId,i.environment=t.environment,i.username=t.username,i.name=t.name,i.loginHint=t.loginHint,i.cloudGraphHostName=n,i.msGraphHost=r,i.tenantProfiles=Array.from(t.tenantProfiles?.values()||[]),i.dataBoundary=t.dataBoundary,i}static generateHomeAccountId(e,t,n,r,i){if(!(t===Y.Adfs||t===Y.Dsts)){if(e)try{let t=yr(e,r.base64Decode);if(t.uid&&t.utid)return`${t.uid}.${t.utid}`}catch{}n.warning(`No client info in response`)}return i?.sub||``}static isAccountEntity(e){return e?e.hasOwnProperty(`homeAccountId`)&&e.hasOwnProperty(`environment`)&&e.hasOwnProperty(`realm`)&&e.hasOwnProperty(`localAccountId`)&&e.hasOwnProperty(`username`)&&e.hasOwnProperty(`authorityType`):!1}static accountInfoIsEqual(e,t,n){if(!e||!t)return!1;let r=!0;if(n){let n=e.idTokenClaims||{},i=t.idTokenClaims||{};r=n.iat===i.iat&&n.nonce===i.nonce}return e.homeAccountId===t.homeAccountId&&e.localAccountId===t.localAccountId&&e.username===t.username&&e.tenantId===t.tenantId&&e.loginHint===t.loginHint&&e.environment===t.environment&&e.nativeAccountId===t.nativeAccountId&&r}};let Er=`cache_quota_exceeded`,Dr=`cache_error_unknown`;var Or=Object.freeze({__proto__:null,cacheErrorUnknown:Dr,cacheQuotaExceeded:Er});let kr={[Er]:`Exceeded cache storage capacity.`,[Dr]:`Unexpected error occurred when using cache storage.`};var Ar=class e extends L{constructor(t,n){let r=n||(kr[t]?kr[t]:kr[Dr]);super(`${t}: ${r}`),Object.setPrototypeOf(this,e.prototype),this.name=`CacheError`,this.errorCode=t,this.errorMessage=r}};function jr(e){return e instanceof Error?e.name===`QuotaExceededError`||e.name===`NS_ERROR_DOM_QUOTA_REACHED`||e.message.includes(`exceeded the quota`)?new Ar(Er):new Ar(e.name,e.message):new Ar(Dr)}var Mr=class{constructor(e,t,n,r,i){this.clientId=e,this.cryptoImpl=t,this.commonLogger=n.clone(gr,_r),this.staticAuthorityOptions=i,this.performanceClient=r}getAllAccounts(e,t){return this.buildTenantProfiles(this.getAccountsFilteredBy(e,t),t,e)}getAccountInfoFilteredBy(e,t){if(Object.keys(e).length===0||Object.values(e).every(e=>!e))return this.commonLogger.warning(`getAccountInfoFilteredBy: Account filter is empty or invalid, returning null`),null;let n=this.getAllAccounts(e,t);return n.length>1?n.sort(e=>e.idTokenClaims?-1:1)[0]:n.length===1?n[0]:null}getBaseAccountInfo(e,t){let n=this.getAccountsFilteredBy(e,t);return n.length>0?Tr.getAccountInfo(n[0]):null}buildTenantProfiles(e,t,n){return e.flatMap(e=>this.getTenantProfilesFromAccountEntity(e,t,n?.tenantId,n))}getTenantedAccountInfoByFilter(e,t,n,r,i){let a=null,o;if(i&&!this.tenantProfileMatchesFilter(n,i))return null;let s=this.getIdToken(e,r,t,n.tenantId);return s&&(o=He(s.secret,this.cryptoImpl.base64Decode),!this.idTokenClaimsMatchTenantProfileFilter(o,i))?null:(a=Cr(e,n,o,s?.secret),a)}getTenantProfilesFromAccountEntity(e,t,n,r){let i=Tr.getAccountInfo(e),a=i.tenantProfiles||new Map,o=this.getTokenKeys();if(n){let e=a.get(n);if(e)a=new Map([[n,e]]);else return[]}let s=[];return a.forEach(e=>{let n=this.getTenantedAccountInfoByFilter(i,o,e,t,r);n&&s.push(n)}),s}tenantProfileMatchesFilter(e,t){return!(t.localAccountId&&!this.matchLocalAccountIdFromTenantProfile(e,t.localAccountId)||t.name&&e.name!==t.name||t.isHomeTenant!==void 0&&e.isHomeTenant!==t.isHomeTenant)}idTokenClaimsMatchTenantProfileFilter(e,t){return!(t&&(t.localAccountId&&!this.matchLocalAccountIdFromTokenClaims(e,t.localAccountId)||t.loginHint&&!this.matchLoginHintFromTokenClaims(e,t.loginHint)||t.username&&!this.matchUsername(e.preferred_username,t.username)||t.name&&!this.matchName(e,t.name)||t.sid&&!this.matchSid(e,t.sid)))}async saveCacheRecord(e,t,n,r){if(!e)throw q(ye);try{e.account&&await this.setAccount(e.account,t,n),e.idToken&&r?.idToken!==!1&&await this.setIdTokenCredential(e.idToken,t,n),e.accessToken&&r?.accessToken!==!1&&await this.saveAccessToken(e.accessToken,t,n),e.refreshToken&&r?.refreshToken!==!1&&await this.setRefreshTokenCredential(e.refreshToken,t,n),e.appMetadata&&this.setAppMetadata(e.appMetadata,t)}catch(e){throw this.commonLogger?.error(`CacheManager.saveCacheRecord: failed`),e instanceof L?e:jr(e)}}async saveAccessToken(e,t,n){let r={clientId:e.clientId,credentialType:e.credentialType,environment:e.environment,homeAccountId:e.homeAccountId,realm:e.realm,tokenType:e.tokenType,requestedClaimsHash:e.requestedClaimsHash},i=this.getTokenKeys(),a=vr.fromString(e.target);i.accessToken.forEach(e=>{if(!this.accessTokenKeyMatchesFilter(e,r,!1))return;let n=this.getAccessTokenCredential(e,t);n&&this.credentialMatchesFilter(n,r)&&vr.fromString(n.target).intersectingScopeSets(a)&&this.removeAccessToken(e,t)}),await this.setAccessTokenCredential(e,t,n)}getAccountsFilteredBy(e,t){let n=this.getAccountKeys(),r=[];return n.forEach(n=>{let i=this.getAccount(n,t);if(!i||e.homeAccountId&&!this.matchHomeAccountId(i,e.homeAccountId)||e.username&&!this.matchUsername(i.username,e.username)||e.environment&&!this.matchEnvironment(i,e.environment)||e.realm&&!this.matchRealm(i,e.realm)||e.nativeAccountId&&!this.matchNativeAccountId(i,e.nativeAccountId)||e.authorityType&&!this.matchAuthorityType(i,e.authorityType))return;let a={localAccountId:e?.localAccountId,name:e?.name},o=i.tenantProfiles?.filter(e=>this.tenantProfileMatchesFilter(e,a));o&&o.length===0||r.push(i)}),r}credentialMatchesFilter(e,t){return!(t.clientId&&!this.matchClientId(e,t.clientId)||t.userAssertionHash&&!this.matchUserAssertionHash(e,t.userAssertionHash)||typeof t.homeAccountId==`string`&&!this.matchHomeAccountId(e,t.homeAccountId)||t.environment&&!this.matchEnvironment(e,t.environment)||t.realm&&!this.matchRealm(e,t.realm)||t.credentialType&&!this.matchCredentialType(e,t.credentialType)||t.familyId&&!this.matchFamilyId(e,t.familyId)||t.target&&!this.matchTarget(e,t.target)||(t.requestedClaimsHash||e.requestedClaimsHash)&&e.requestedClaimsHash!==t.requestedClaimsHash||e.credentialType===v.ACCESS_TOKEN_WITH_AUTH_SCHEME&&(t.tokenType&&!this.matchTokenType(e,t.tokenType)||t.tokenType===w.SSH&&t.keyId&&!this.matchKeyId(e,t.keyId)))}getAppMetadataFilteredBy(e){let t=this.getKeys(),n={};return t.forEach(t=>{if(!this.isAppMetadata(t))return;let r=this.getAppMetadata(t);r&&(e.environment&&!this.matchEnvironment(r,e.environment)||e.clientId&&!this.matchClientId(r,e.clientId)||(n[t]=r))}),n}getAuthorityMetadataByAlias(e){let t=this.getAuthorityMetadataKeys(),n=null;return t.forEach(t=>{if(!this.isAuthorityMetadata(t)||t.indexOf(this.clientId)===-1)return;let r=this.getAuthorityMetadata(t);r&&r.aliases.indexOf(e)!==-1&&(n=r)}),n}removeAllAccounts(e){this.getAllAccounts({},e).forEach(t=>{this.removeAccount(t,e)})}removeAccount(e,t){this.removeAccountContext(e,t),this.getAccountKeys().filter(t=>t.includes(e.homeAccountId)&&t.includes(e.environment)).forEach(e=>{this.removeItem(e,t),this.performanceClient.incrementFields({accountsRemoved:1},t)})}removeAccountContext(e,t){let n=this.getTokenKeys(),r=t=>t.includes(e.homeAccountId)&&t.includes(e.environment);n.idToken.filter(r).forEach(e=>{this.removeIdToken(e,t)}),n.accessToken.filter(r).forEach(e=>{this.removeAccessToken(e,t)}),n.refreshToken.filter(r).forEach(e=>{this.removeRefreshToken(e,t)})}removeAccessToken(e,t){let n=this.getAccessTokenCredential(e,t);if(this.removeItem(e,t),this.performanceClient.incrementFields({accessTokensRemoved:1},t),!n||n.credentialType.toLowerCase()!==v.ACCESS_TOKEN_WITH_AUTH_SCHEME.toLowerCase()||n.tokenType!==w.POP)return;let r=n.keyId;r&&this.cryptoImpl.removeTokenBindingKey(r).catch(()=>{this.commonLogger.error(`Failed to remove token binding key ${r}`,t),this.performanceClient?.incrementFields({removeTokenBindingKeyFailure:1},t)})}removeAppMetadata(e){return this.getKeys().forEach(t=>{this.isAppMetadata(t)&&this.removeItem(t,e)}),!0}getIdToken(e,t,n,r,i){this.commonLogger.trace(`CacheManager - getIdToken called`);let a={homeAccountId:e.homeAccountId,environment:e.environment,credentialType:v.ID_TOKEN,clientId:this.clientId,realm:r},o=this.getIdTokensByFilter(a,t,n),s=o.size;if(s<1)return this.commonLogger.info(`CacheManager:getIdToken - No token found`),null;if(s>1){let n=o;if(!r){let t=new Map;o.forEach((n,r)=>{n.realm===e.tenantId&&t.set(r,n)});let r=t.size;if(r<1)return this.commonLogger.info(`CacheManager:getIdToken - Multiple ID tokens found for account but none match account entity tenant id, returning first result`),o.values().next().value;if(r===1)return this.commonLogger.info(`CacheManager:getIdToken - Multiple ID tokens found for account, defaulting to home tenant profile`),t.values().next().value;n=t}return this.commonLogger.info(`CacheManager:getIdToken - Multiple matching ID tokens found, clearing them`),n.forEach((e,n)=>{this.removeIdToken(n,t)}),i&&t&&i.addFields({multiMatchedID:o.size},t),null}return this.commonLogger.info(`CacheManager:getIdToken - Returning ID token`),o.values().next().value}getIdTokensByFilter(e,t,n){let r=n&&n.idToken||this.getTokenKeys().idToken,i=new Map;return r.forEach(n=>{if(!this.idTokenKeyMatchesFilter(n,{clientId:this.clientId,...e}))return;let r=this.getIdTokenCredential(n,t);r&&this.credentialMatchesFilter(r,e)&&i.set(n,r)}),i}idTokenKeyMatchesFilter(e,t){let n=e.toLowerCase();return!(t.clientId&&n.indexOf(t.clientId.toLowerCase())===-1||t.homeAccountId&&n.indexOf(t.homeAccountId.toLowerCase())===-1)}removeIdToken(e,t){this.removeItem(e,t)}removeRefreshToken(e,t){this.removeItem(e,t)}getAccessToken(e,t,n,r){let i=t.correlationId;this.commonLogger.trace(`CacheManager - getAccessToken called`,i);let a=vr.createSearchScopes(t.scopes),o=t.authenticationScheme||w.BEARER,s=o&&o.toLowerCase()!==w.BEARER.toLowerCase()?v.ACCESS_TOKEN_WITH_AUTH_SCHEME:v.ACCESS_TOKEN,c={homeAccountId:e.homeAccountId,environment:e.environment,credentialType:s,clientId:this.clientId,realm:r||e.tenantId,target:a,tokenType:o,keyId:t.sshKid,requestedClaimsHash:t.requestedClaimsHash},l=n&&n.accessToken||this.getTokenKeys().accessToken,u=[];l.forEach(e=>{if(this.accessTokenKeyMatchesFilter(e,c,!0)){let t=this.getAccessTokenCredential(e,i);t&&this.credentialMatchesFilter(t,c)&&u.push(t)}});let d=u.length;return d<1?(this.commonLogger.info(`CacheManager:getAccessToken - No token found`,i),null):d>1?(this.commonLogger.info(`CacheManager:getAccessToken - Multiple access tokens found, clearing them`,i),u.forEach(e=>{this.removeAccessToken(this.generateCredentialKey(e),i)}),this.performanceClient.addFields({multiMatchedAT:u.length},i),null):(this.commonLogger.info(`CacheManager:getAccessToken - Returning access token`,i),u[0])}accessTokenKeyMatchesFilter(e,t,n){let r=e.toLowerCase();if(t.clientId&&r.indexOf(t.clientId.toLowerCase())===-1||t.homeAccountId&&r.indexOf(t.homeAccountId.toLowerCase())===-1||t.realm&&r.indexOf(t.realm.toLowerCase())===-1||t.requestedClaimsHash&&r.indexOf(t.requestedClaimsHash.toLowerCase())===-1)return!1;if(t.target){let e=t.target.asArray();for(let t=0;t{if(!this.accessTokenKeyMatchesFilter(n,e,!0))return;let i=this.getAccessTokenCredential(n,t);i&&this.credentialMatchesFilter(i,e)&&r.push(i)}),r}getRefreshToken(e,t,n,r,i){this.commonLogger.trace(`CacheManager - getRefreshToken called`);let a=t?`1`:void 0,o={homeAccountId:e.homeAccountId,environment:e.environment,credentialType:v.REFRESH_TOKEN,clientId:this.clientId,familyId:a},s=r&&r.refreshToken||this.getTokenKeys().refreshToken,c=[];s.forEach(e=>{if(this.refreshTokenKeyMatchesFilter(e,o)){let t=this.getRefreshTokenCredential(e,n);t&&this.credentialMatchesFilter(t,o)&&c.push(t)}});let l=c.length;return l<1?(this.commonLogger.info(`CacheManager:getRefreshToken - No refresh token found.`),null):(l>1&&i&&n&&i.addFields({multiMatchedRT:l},n),this.commonLogger.info(`CacheManager:getRefreshToken - returning refresh token`),c[0])}refreshTokenKeyMatchesFilter(e,t){let n=e.toLowerCase();return!(t.familyId&&n.indexOf(t.familyId.toLowerCase())===-1||!t.familyId&&t.clientId&&n.indexOf(t.clientId.toLowerCase())===-1||t.homeAccountId&&n.indexOf(t.homeAccountId.toLowerCase())===-1)}readAppMetadataFromCache(e){let t={environment:e,clientId:this.clientId},n=this.getAppMetadataFilteredBy(t),r=Object.keys(n).map(e=>n[e]),i=r.length;if(i<1)return null;if(i>1)throw q(ue);return r[0]}isAppMetadataFOCI(e){let t=this.readAppMetadataFromCache(e);return!!(t&&t.familyId===`1`)}matchHomeAccountId(e,t){return typeof e.homeAccountId==`string`&&t===e.homeAccountId}matchLocalAccountIdFromTokenClaims(e,t){return t===(e.oid||e.sub)}matchLocalAccountIdFromTenantProfile(e,t){return e.localAccountId===t}matchName(e,t){return t.toLowerCase()===e.name?.toLowerCase()}matchUsername(e,t){return!!(e&&typeof e==`string`&&t?.toLowerCase()===e.toLowerCase())}matchUserAssertionHash(e,t){return!!(e.userAssertionHash&&t===e.userAssertionHash)}matchEnvironment(e,t){if(this.staticAuthorityOptions){let n=Mt(this.staticAuthorityOptions,this.commonLogger);if(n.includes(t)&&n.includes(e.environment))return!0}let n=this.getAuthorityMetadataByAlias(t);return!!(n&&n.aliases.indexOf(e.environment)>-1)}matchCredentialType(e,t){return e.credentialType&&t.toLowerCase()===e.credentialType.toLowerCase()}matchClientId(e,t){return!!(e.clientId&&t===e.clientId)}matchFamilyId(e,t){return!!(e.familyId&&t===e.familyId)}matchRealm(e,t){return e.realm?.toLowerCase()===t.toLowerCase()}matchNativeAccountId(e,t){return!!(e.nativeAccountId&&t===e.nativeAccountId)}matchLoginHintFromTokenClaims(e,t){return e.login_hint===t||e.preferred_username===t||e.upn===t}matchSid(e,t){return e.sid===t}matchAuthorityType(e,t){return!!(e.authorityType&&t.toLowerCase()===e.authorityType.toLowerCase())}matchTarget(e,t){return e.credentialType!==v.ACCESS_TOKEN&&e.credentialType!==v.ACCESS_TOKEN_WITH_AUTH_SCHEME||!e.target?!1:vr.fromString(e.target).containsScopeSet(t)}matchTokenType(e,t){return!!(e.tokenType&&e.tokenType===t)}matchKeyId(e,t){return!!(e.keyId&&e.keyId===t)}isAppMetadata(e){return e.indexOf(b)!==-1}isAuthorityMetadata(e){return e.indexOf(x.CACHE_KEY)!==-1}generateAuthorityMetadataCacheKey(e){return`${x.CACHE_KEY}-${this.clientId}-${e}`}static toObject(e,t){for(let n in t)e[n]=t[n];return e}},Nr=class extends Mr{async setAccount(){throw q(Ie)}getAccount(){throw q(Ie)}async setIdTokenCredential(){throw q(Ie)}getIdTokenCredential(){throw q(Ie)}async setAccessTokenCredential(){throw q(Ie)}getAccessTokenCredential(){throw q(Ie)}async setRefreshTokenCredential(){throw q(Ie)}getRefreshTokenCredential(){throw q(Ie)}setAppMetadata(){throw q(Ie)}getAppMetadata(){throw q(Ie)}setServerTelemetry(){throw q(Ie)}getServerTelemetry(){throw q(Ie)}setAuthorityMetadata(){throw q(Ie)}getAuthorityMetadata(){throw q(Ie)}getAuthorityMetadataKeys(){throw q(Ie)}setThrottlingCache(){throw q(Ie)}getThrottlingCache(){throw q(Ie)}removeItem(){throw q(Ie)}getKeys(){throw q(Ie)}getAccountKeys(){throw q(Ie)}getTokenKeys(){throw q(Ie)}generateCredentialKey(){throw q(Ie)}generateAccountKey(){throw q(Ie)}},Pr=class{startMeasurement(){}endMeasurement(){}flushMeasurement(){return null}},Fr=class{generateId(){return`callback-id`}startMeasurement(e,t){return{end:()=>null,discard:()=>{},add:()=>{},increment:()=>{},event:{eventId:this.generateId(),status:Q.InProgress,authority:``,libraryName:``,libraryVersion:``,clientId:``,name:e,startTimeMs:Date.now(),correlationId:t||``},measurement:new Pr}}startPerformanceMeasurement(){return new Pr}calculateQueuedTime(){return 0}addQueueMeasurement(){}setPreQueueTime(){}endMeasurement(){return null}discardMeasurements(){}removePerformanceCallback(){return!0}addPerformanceCallback(){return``}emitEvents(){}addFields(){}incrementFields(){}cacheEventByCorrelationId(){}};let Ir={tokenRenewalOffsetSeconds:300,preventCorsPreflight:!1},Lr={loggerCallback:()=>{},piiLoggingEnabled:!1,logLevel:e.LogLevel.Info,correlationId:t.EMPTY_STRING},Rr={claimsBasedCachingEnabled:!1},zr={async sendGetRequestAsync(){throw q(Ie)},async sendPostRequestAsync(){throw q(Ie)}},Br={sku:t.SKU,version:_r,cpu:t.EMPTY_STRING,os:t.EMPTY_STRING},Vr={clientSecret:t.EMPTY_STRING,clientAssertion:void 0},Hr={azureCloudInstance:Lt.None,tenant:`${t.DEFAULT_COMMON_TENANT}`},Ur={application:{appName:``,appVersion:``}};function Wr({authOptions:e,systemOptions:t,loggerOptions:n,cacheOptions:r,storageInterface:i,networkInterface:a,cryptoInterface:o,clientCredentials:s,libraryInfo:c,telemetry:l,serverTelemetryManager:u,persistencePlugin:d,serializableCache:f}){let p={...Lr,...n};return{authOptions:Gr(e),systemOptions:{...Ir,...t},loggerOptions:p,cacheOptions:{...Rr,...r},storageInterface:i||new Nr(e.clientId,mr,new hr(p),new Fr),networkInterface:a||zr,cryptoInterface:o||mr,clientCredentials:s||Vr,libraryInfo:{...Br,...c},telemetry:{...Ur,...l},serverTelemetryManager:u||null,persistencePlugin:d||null,serializableCache:f||null}}function Gr(e){return{clientCapabilities:[],azureCloudOptions:Hr,skipAuthorityMetadataCache:!1,instanceAware:!1,encodeExtraQueryParams:!1,...e}}function Kr(e){return e.authOptions.authority.options.protocolMode===It.OIDC}let qr={HOME_ACCOUNT_ID:`home_account_id`,UPN:`UPN`};function Jr(e,t,n){if(!t)return;let r=e.get(Sn);r&&e.has(cr)&&n?.addFields({embeddedClientId:r,embeddedRedirectUri:e.get(Cn)},t)}function Yr(e,t){e.set(wn,t)}function Xr(e,t){e.set(Tn,t||m.QUERY)}function Zr(e){e.set(ir,`1`)}function Qr(e,t,n=!0,r=i){n&&!r.includes(`openid`)&&!t.includes(`openid`)&&r.push(`openid`);let a=new vr(n?[...t||[],...r]:t||[]);e.set(On,a.printScopes())}function $r(e,t){e.set(Sn,t)}function ei(e,t){e.set(Cn,t)}function ti(e,t){e.set(qn,t)}function ni(e,t){e.set(Jn,t)}function ri(e,t){e.set(sr,t)}function ii(e,t){e.set(or,t)}function ai(e,t){e.set(o.CCS_HEADER,`UPN:${t}`)}function oi(e,t){e.set(o.CCS_HEADER,`Oid:${t.uid}@${t.utid}`)}function si(e,t){e.set(`sid`,t)}function ci(e,t,n){let r=ki(t,n);try{JSON.parse(r)}catch{throw yt($e)}e.set(Dn,r)}function li(e,t){e.set(Ln,t)}function ui(e,t){e.set(Rn,t.sku),e.set(zn,t.version),t.os&&e.set(Bn,t.os),t.cpu&&e.set(Vn,t.cpu)}function di(e,t){t?.appName&&e.set(Gn,t.appName),t?.appVersion&&e.set(Kn,t.appVersion)}function fi(e,t){e.set(Mn,t)}function pi(e,t){t&&e.set(An,t)}function mi(e,t){e.set(jn,t)}function hi(e,t,n){if(t&&n)e.set(Pn,t),e.set(Fn,n);else throw yt(rt)}function gi(e,t){e.set(Nn,t)}function _i(e,t){e.set(Yn,t)}function vi(e,t){e.set(kn,t)}function yi(e,t){e.set(In,t)}function bi(e,t){e.set(Xn,t)}function xi(e,t){t&&e.set(Zn,t)}function Si(e,t){t&&e.set(Qn,t)}function Ci(e,t){e.set(tr,t)}function wi(e,t){e.set(nr,t)}function Ti(e,t){e.set(En,t)}function Ei(e){e.set(`client_info`,`1`)}function Di(e){e.has(ur)||e.set(ur,`true`)}function Oi(e,t){Object.entries(t).forEach(([t,n])=>{!e.has(t)&&n&&e.set(t,n)})}function ki(e,t){let n;if(!e)n={};else try{n=JSON.parse(e)}catch{throw yt($e)}return t&&t.length>0&&(n.hasOwnProperty(l.ACCESS_TOKEN)||(n[l.ACCESS_TOKEN]={}),n[l.ACCESS_TOKEN][l.XMS_CC]={values:t}),JSON.stringify(n)}function Ai(e,t){e.set(D.username,t)}function ji(e,t){e.set(D.password,t)}function Mi(e,t){t&&(e.set($n,w.POP),e.set(er,t))}function Ni(e,t){t&&(e.set($n,w.SSH),e.set(er,t))}function Pi(e,t){e.set(Hn,t.generateCurrentRequestHeaderValue()),e.set(Un,t.generateLastRequestHeaderValue())}function Fi(e){e.set(Wn,T.X_MS_LIB_CAPABILITY_VALUE)}function Ii(e,t){e.set(ar,t)}function Li(e,t,n){e.has(cr)||e.set(cr,t),e.has(lr)||e.set(lr,n)}function Ri(e,t){e.set(dr,encodeURIComponent(t)),e.set(fr,`eyJhbGciOiJkaXIiLCJlbmMiOiJBMjU2R0NNIn0`)}function zi(e,t){Object.entries(t).forEach(([t,n])=>{n&&e.set(t,n)})}var Bi=Object.freeze({__proto__:null,addApplicationTelemetry:di,addAuthorizationCode:gi,addBrokerParameters:Li,addCcsOid:oi,addCcsUpn:ai,addClaims:ci,addClientAssertion:xi,addClientAssertionType:Si,addClientCapabilitiesToClaims:ki,addClientId:$r,addClientInfo:Ei,addClientSecret:bi,addCodeChallengeParams:hi,addCodeVerifier:yi,addCorrelationId:li,addDeviceCode:_i,addDomainHint:ri,addEARParameters:Ri,addExtraQueryParameters:Oi,addGrantType:Ti,addIdTokenHint:ni,addInstanceAware:Di,addLibraryInfo:ui,addLoginHint:ii,addLogoutHint:Ii,addNativeBroker:Zr,addNonce:mi,addOboAssertion:Ci,addPassword:ji,addPopToken:Mi,addPostBodyParameters:zi,addPostLogoutRedirectUri:ti,addPrompt:fi,addRedirectUri:ei,addRefreshToken:vi,addRequestTokenUse:wi,addResponseMode:Xr,addResponseType:Yr,addScopes:Qr,addServerTelemetry:Pi,addSid:si,addSshJwk:Ni,addState:pi,addThrottling:Fi,addUsername:Ai,instrumentBrokerParams:Jr}),Vi=class e extends L{constructor(t,n,r,i,a){super(t,n,r),this.name=`ServerError`,this.errorNo=i,this.status=a,Object.setPrototypeOf(this,e.prototype)}};function Hi(e,t,n){return{clientId:e,authority:t.authority,scopes:t.scopes,homeAccountIdentifier:n,claims:t.claims,authenticationScheme:t.authenticationScheme,resourceRequestMethod:t.resourceRequestMethod,resourceRequestUri:t.resourceRequestUri,shrClaims:t.shrClaims,sshKid:t.sshKid,embeddedClientId:t.embeddedClientId||t.tokenBodyParameters?.clientId}}var Ui=class e{static generateThrottlingStorageKey(e){return`${T.THROTTLING_PREFIX}.${JSON.stringify(e)}`}static preProcess(n,r,i){let a=e.generateThrottlingStorageKey(r),o=n.getThrottlingCache(a);if(o){if(o.throttleTime=500&&e.status<600}static checkResponseForRetryAfter(e){return e.headers?e.headers.hasOwnProperty(o.RETRY_AFTER)&&(e.status<200||e.status>=300):!1}static calculateThrottleTime(e){let t=e<=0?0:e,n=Date.now()/1e3;return Math.floor(Math.min(n+(t||T.DEFAULT_THROTTLE_TIME_SECONDS),n+T.DEFAULT_MAX_THROTTLE_TIME_SECONDS)*1e3)}static removeThrottle(e,t,n,r){let i=Hi(t,n,r),a=this.generateThrottlingStorageKey(i);e.removeItem(a,n.correlationId)}},Wi=class e extends L{constructor(t,n,r){super(t.errorCode,t.errorMessage,t.subError),Object.setPrototypeOf(this,e.prototype),this.name=`NetworkError`,this.error=t,this.httpStatus=n,this.responseHeaders=r}};function Gi(e,t,n,r){return e.errorMessage=`${e.errorMessage}, additionalErrorInfo: error.name:${r?.name}, error.message:${r?.message}`,new Wi(e,t,n)}var Ki=class{constructor(e,t){this.config=Wr(e),this.logger=new hr(this.config.loggerOptions,gr,_r),this.cryptoUtils=this.config.cryptoInterface,this.cacheManager=this.config.storageInterface,this.networkClient=this.config.networkInterface,this.serverTelemetryManager=this.config.serverTelemetryManager,this.authority=this.config.authOptions.authority,this.performanceClient=t}createTokenRequestHeaders(e){let n={};if(n[o.CONTENT_TYPE]=t.URL_FORM_CONTENT_TYPE,!this.config.systemOptions.preventCorsPreflight&&e)switch(e.type){case qr.HOME_ACCOUNT_ID:try{let t=br(e.credential);n[o.CCS_HEADER]=`Oid:${t.uid}@${t.utid}`}catch(e){this.logger.verbose(`Could not parse home account ID for CCS Header: `+e)}break;case qr.UPN:n[o.CCS_HEADER]=`UPN: ${e.credential}`;break}return n}async executePostToTokenEndpoint(e,t,n,r,i,a){a&&this.performanceClient?.addQueueMeasurement(a,i);let o=await this.sendPostRequest(r,e,{body:t,headers:n},i);return this.config.serverTelemetryManager&&o.status<500&&o.status!==429&&this.config.serverTelemetryManager.clearTelemetryCache(),o}async sendPostRequest(e,t,n,r){Ui.preProcess(this.cacheManager,e,r);let i;try{i=await Ut(this.networkClient.sendPostRequestAsync.bind(this.networkClient),Z.NetworkClientSendPostRequestAsync,this.logger,this.performanceClient,r)(t,n);let e=i.headers||{};this.performanceClient?.addFields({refreshTokenSize:i.body.refresh_token?.length||0,httpVerToken:e[o.X_MS_HTTP_VERSION]||``,requestId:e[o.X_MS_REQUEST_ID]||``},r)}catch(e){if(e instanceof Wi){let t=e.responseHeaders;throw t&&this.performanceClient?.addFields({httpVerToken:t[o.X_MS_HTTP_VERSION]||``,requestId:t[o.X_MS_REQUEST_ID]||``,contentTypeHeader:t[o.CONTENT_TYPE]||void 0,contentLengthHeader:t[o.CONTENT_LENGTH]||void 0,httpStatus:e.httpStatus},r),e.error}throw e instanceof L?e:q(ne)}return Ui.postProcess(this.cacheManager,e,i,r),i}async updateAuthority(e,t){this.performanceClient?.addQueueMeasurement(Z.UpdateTokenEndpointAuthority,t),this.authority=await bn(`https://${e}/${this.authority.tenant}/`,this.networkClient,this.cacheManager,this.authority.options,this.logger,t,this.performanceClient)}createTokenQueryParameters(e){let t=new Map;return e.embeddedClientId&&Li(t,this.config.authOptions.clientId,this.config.authOptions.redirectUri),e.tokenQueryParameters&&Oi(t,e.tokenQueryParameters),li(t,e.correlationId),Jr(t,e.correlationId,this.performanceClient),wt(t)}};let qi=`no_tokens_found`,Ji=`native_account_unavailable`,Yi=`refresh_token_expired`,Xi=`ux_not_allowed`,Zi=`interaction_required`,Qi=`consent_required`,$i=`login_required`,ea=`bad_token`;var ta=Object.freeze({__proto__:null,badToken:ea,consentRequired:Qi,interactionRequired:Zi,loginRequired:$i,nativeAccountUnavailable:Ji,noTokensFound:qi,refreshTokenExpired:Yi,uxNotAllowed:Xi});let na=[Zi,Qi,$i,ea,Xi],ra=[`message_only`,`additional_action`,`basic_action`,`user_password_expired`,`consent_required`,`bad_token`],ia={[qi]:`No refresh token found in the cache. Please sign-in.`,[Ji]:`The requested account is not available in the native broker. It may have been deleted or logged out. Please sign-in again using an interactive API.`,[Yi]:`Refresh token has expired.`,[ea]:`Identity provider returned bad_token due to an expired or invalid refresh token. Please invoke an interactive API to resolve.`,[Xi]:"`canShowUI` flag in Edge was set to false. User interaction required on web page. Please invoke an interactive API to resolve."},aa={noTokensFoundError:{code:qi,desc:ia[qi]},native_account_unavailable:{code:Ji,desc:ia[Ji]},bad_token:{code:ea,desc:ia[ea]}};var oa=class e extends L{constructor(n,r,i,a,o,s,c,l){super(n,r,i),Object.setPrototypeOf(this,e.prototype),this.timestamp=a||t.EMPTY_STRING,this.traceId=o||t.EMPTY_STRING,this.correlationId=s||t.EMPTY_STRING,this.claims=c||t.EMPTY_STRING,this.name=`InteractionRequiredAuthError`,this.errorNo=l}};function sa(e,t,n){let r=!!e&&na.indexOf(e)>-1,i=!!n&&ra.indexOf(n)>-1,a=!!t&&na.some(e=>t.indexOf(e)>-1);return r||a||i}function ca(e){return new oa(e,ia[e])}var la=class e{static setRequestState(n,r,i){let a=e.generateLibraryState(n,i);return r?`${a}${t.RESOURCE_DELIM}${r}`:a}static generateLibraryState(e,t){if(!e)throw q(Se);let n={id:e.createNewGuid()};t&&(n.meta=t);let r=JSON.stringify(n);return e.base64Encode(r)}static parseRequestState(e,n){if(!e)throw q(Se);if(!n)throw q(ie);try{let r=n.split(t.RESOURCE_DELIM),i=r[0],a=r.length>1?r.slice(1).join(t.RESOURCE_DELIM):t.EMPTY_STRING,o=e.base64Decode(i),s=JSON.parse(o);return{userRequestState:a||t.EMPTY_STRING,libraryState:s}}catch{throw q(ie)}}};let ua={SW:`sw`};var da=class{constructor(e,t){this.cryptoUtils=e,this.performanceClient=t}async generateCnf(e,t){this.performanceClient?.addQueueMeasurement(Z.PopTokenGenerateCnf,e.correlationId);let n=await Ut(this.generateKid.bind(this),Z.PopTokenGenerateCnf,t,this.performanceClient,e.correlationId)(e),r=this.cryptoUtils.base64UrlEncode(JSON.stringify(n));return{kid:n.kid,reqCnfString:r}}async generateKid(e){return this.performanceClient?.addQueueMeasurement(Z.PopTokenGenerateKid,e.correlationId),{kid:await this.cryptoUtils.getPublicKeyThumbprint(e),xms_ksl:ua.SW}}async signPopToken(e,t,n){return this.signPayload(e,t,n)}async signPayload(e,t,n,r){let{resourceRequestMethod:i,resourceRequestUri:a,shrClaims:o,shrNonce:s,shrOptions:c}=n,l=(a?new Dt(a):void 0)?.getUrlComponents();return this.cryptoUtils.signJwt({at:e,ts:Gt(),m:i?.toUpperCase(),u:l?.HostNameAndPort,nonce:s||this.cryptoUtils.createNewGuid(),p:l?.AbsolutePath,q:l?.QueryString?[[],l.QueryString]:void 0,client_claims:o||void 0,...r},t,c,n.correlationId)}},fa=class{constructor(e,t){this.cache=e,this.hasChanged=t}get cacheHasChanged(){return this.hasChanged}get tokenCache(){return this.cache}},pa=class e{constructor(e,t,n,r,i,a,o){this.clientId=e,this.cacheStorage=t,this.cryptoObj=n,this.logger=r,this.serializableCache=i,this.persistencePlugin=a,this.performanceClient=o}validateTokenResponse(e,r){if(e.error||e.error_description||e.suberror){let i=`Error(s): ${e.error_codes||t.NOT_AVAILABLE} - Timestamp: ${e.timestamp||t.NOT_AVAILABLE} - Description: ${e.error_description||t.NOT_AVAILABLE} - Correlation ID: ${e.correlation_id||t.NOT_AVAILABLE} - Trace ID: ${e.trace_id||t.NOT_AVAILABLE}`,a=e.error_codes?.length?e.error_codes[0]:void 0,o=new Vi(e.error,i,e.suberror,a,e.status);if(r&&e.status&&e.status>=n.SERVER_ERROR_RANGE_START&&e.status<=n.SERVER_ERROR_RANGE_END){this.logger.warning(`executeTokenRequest:validateTokenResponse - AAD is currently unavailable and the access token is unable to be refreshed.\n${o}`);return}else if(r&&e.status&&e.status>=n.CLIENT_ERROR_RANGE_START&&e.status<=n.CLIENT_ERROR_RANGE_END){this.logger.warning(`executeTokenRequest:validateTokenResponse - AAD is currently available but is unable to refresh the access token.\n${o}`);return}throw sa(e.error,e.error_description,e.suberror)?new oa(e.error,e.error_description,e.suberror,e.timestamp||t.EMPTY_STRING,e.trace_id||t.EMPTY_STRING,e.correlation_id||t.EMPTY_STRING,e.claims||t.EMPTY_STRING,a):o}}async handleServerTokenResponse(n,r,i,a,o,s,c,l,u){this.performanceClient?.addQueueMeasurement(Z.HandleServerTokenResponse,n.correlation_id);let d;if(n.id_token){if(d=He(n.id_token||t.EMPTY_STRING,this.cryptoObj.base64Decode),o&&o.nonce&&d.nonce!==o.nonce)throw q(G);if(a.maxAge||a.maxAge===0){let e=d.auth_time;if(!e)throw q(oe);We(e,a.maxAge)}}this.homeAccountIdentifier=Tr.generateHomeAccountId(n.client_info||t.EMPTY_STRING,r.authorityType,this.logger,this.cryptoObj,d);let f;o&&o.state&&(f=la.parseRequestState(this.cryptoObj,o.state)),n.key_id=n.key_id||a.sshKid||void 0;let p=this.generateCacheRecord(n,r,i,a,d,s,o),m;try{if(this.persistencePlugin&&this.serializableCache&&(this.logger.verbose(`Persistence enabled, calling beforeCacheAccess`),m=new fa(this.serializableCache,!0),await this.persistencePlugin.beforeCacheAccess(m)),c&&!l&&p.account){let t=this.cacheStorage.generateAccountKey(Tr.getAccountInfo(p.account));if(!this.cacheStorage.getAccount(t,a.correlationId))return this.logger.warning(`Account used to refresh tokens not in persistence, refreshed tokens will not be stored in the cache`),await e.generateAuthenticationResult(this.cryptoObj,r,p,!1,a,d,f,void 0,u)}await this.cacheStorage.saveCacheRecord(p,a.correlationId,Ue(d||{}),a.storeInCache)}finally{this.persistencePlugin&&this.serializableCache&&m&&(this.logger.verbose(`Persistence enabled, calling afterCacheAccess`),await this.persistencePlugin.afterCacheAccess(m))}return e.generateAuthenticationResult(this.cryptoObj,r,p,!1,a,d,f,n,u)}generateCacheRecord(e,t,n,r,i,a,o){let s=t.getPreferredCache();if(!s)throw q(be);let c=wr(i),l,u;e.id_token&&i&&(l=$t(this.homeAccountIdentifier,s,e.id_token,this.clientId,c||``),u=ma(this.cacheStorage,t,this.homeAccountIdentifier,this.cryptoObj.base64Decode,r.correlationId,i,e.client_info,s,c,o,void 0,this.logger));let d=null;if(e.access_token){let i=e.scope?vr.fromString(e.scope):new vr(r.scopes||[]),o=(typeof e.expires_in==`string`?parseInt(e.expires_in,10):e.expires_in)||0,l=(typeof e.ext_expires_in==`string`?parseInt(e.ext_expires_in,10):e.ext_expires_in)||0,u=(typeof e.refresh_in==`string`?parseInt(e.refresh_in,10):e.refresh_in)||void 0,f=n+o,p=f+l,m=u&&u>0?n+u:void 0;d=en(this.homeAccountIdentifier,s,e.access_token,this.clientId,c||t.tenant||``,i.printScopes(),f,p,this.cryptoObj.base64Decode,m,e.token_type,a,e.key_id,r.claims,r.requestedClaimsHash)}let f=null;if(e.refresh_token){let t;e.refresh_token_expires_in&&(t=n+(typeof e.refresh_token_expires_in==`string`?parseInt(e.refresh_token_expires_in,10):e.refresh_token_expires_in)),f=tn(this.homeAccountIdentifier,s,e.refresh_token,this.clientId,e.foci,a,t)}let p=null;return e.foci&&(p={clientId:this.clientId,environment:s,familyId:e.foci}),{account:u,idToken:l,accessToken:d,refreshToken:f,appMetadata:p}}static async generateAuthenticationResult(e,n,r,i,a,o,s,c,l){let u=t.EMPTY_STRING,d=[],f=null,p,m,h=t.EMPTY_STRING;if(r.accessToken){if(r.accessToken.tokenType===w.POP&&!a.popKid){let t=new da(e),{secret:n,keyId:i}=r.accessToken;if(!i)throw q(Me);u=await t.signPopToken(n,i,a)}else u=r.accessToken.secret;d=vr.fromString(r.accessToken.target).asArray(),f=qt(r.accessToken.expiresOn),p=qt(r.accessToken.extendedExpiresOn),r.accessToken.refreshOn&&(m=qt(r.accessToken.refreshOn))}r.appMetadata&&(h=r.appMetadata.familyId===`1`?`1`:``);let g=o?.oid||o?.sub||``,_=o?.tid||``;c?.spa_accountid&&r.account&&(r.account.nativeAccountId=c?.spa_accountid);let v=r.account?Cr(Tr.getAccountInfo(r.account),void 0,o,r.idToken?.secret):null;return{authority:n.canonicalAuthority,uniqueId:g,tenantId:_,scopes:d,account:v,idToken:r?.idToken?.secret||``,idTokenClaims:o||{},accessToken:u,fromCache:i,expiresOn:f,extExpiresOn:p,refreshOn:m,correlationId:a.correlationId,requestId:l||t.EMPTY_STRING,familyId:h,tokenType:r.accessToken?.tokenType||t.EMPTY_STRING,state:s?s.userRequestState:t.EMPTY_STRING,cloudGraphHostName:r.account?.cloudGraphHostName||t.EMPTY_STRING,msGraphHost:r.account?.msGraphHost||t.EMPTY_STRING,code:c?.spa_code,fromNativeBroker:!1}}};function ma(e,t,n,r,i,a,o,s,c,l,u,d){d?.verbose(`setCachedAccount called`);let f=e.getAccountKeys().find(e=>e.startsWith(n)),p=null;f&&(p=e.getAccount(f,i));let m=p||Tr.createAccount({homeAccountId:n,idTokenClaims:a,clientInfo:o,environment:s,cloudGraphHostName:l?.cloud_graph_host_name,msGraphHost:l?.msgraph_host,nativeAccountId:u},t,r),h=m.tenantProfiles||[],g=c||m.realm;if(g&&!h.find(e=>e.tenantId===g)){let e=Sr(n,m.localAccountId,g,a);h.push(e)}return m.tenantProfiles=h,m}async function ha(e,t,n){return typeof e==`string`?e:e({clientId:t,tokenEndpoint:n})}var ga=Object.freeze({__proto__:null,getClientAssertion:ha}),_a=class extends Ki{constructor(e,t){super(e,t),this.includeRedirectUri=!0,this.oidcDefaultScopes=this.config.authOptions.authority.options.OIDCOptions?.defaultScopes}async acquireToken(e,t){if(this.performanceClient?.addQueueMeasurement(Z.AuthClientAcquireToken,e.correlationId),!e.code)throw q(de);let n=Gt(),r=await Ut(this.executeTokenRequest.bind(this),Z.AuthClientExecuteTokenRequest,this.logger,this.performanceClient,e.correlationId)(this.authority,e),i=r.headers?.[o.X_MS_REQUEST_ID],a=new pa(this.config.authOptions.clientId,this.cacheManager,this.cryptoUtils,this.logger,this.config.serializableCache,this.config.persistencePlugin,this.performanceClient);return a.validateTokenResponse(r.body),Ut(a.handleServerTokenResponse.bind(a),Z.HandleServerTokenResponse,this.logger,this.performanceClient,e.correlationId)(r.body,this.authority,n,e,t,void 0,void 0,void 0,i)}getLogoutUri(e){if(!e)throw yt(tt);let t=this.createLogoutUrlQueryString(e);return Dt.appendQueryString(this.authority.endSessionEndpoint,t)}async executeTokenRequest(e,t){this.performanceClient?.addQueueMeasurement(Z.AuthClientExecuteTokenRequest,t.correlationId);let n=this.createTokenQueryParameters(t),r=Dt.appendQueryString(e.tokenEndpoint,n),i=await Ut(this.createTokenRequestBody.bind(this),Z.AuthClientCreateTokenRequestBody,this.logger,this.performanceClient,t.correlationId)(t),a;if(t.clientInfo)try{let e=yr(t.clientInfo,this.cryptoUtils.base64Decode);a={credential:`${e.uid}${_.CLIENT_INFO_SEPARATOR}${e.utid}`,type:qr.HOME_ACCOUNT_ID}}catch(e){this.logger.verbose(`Could not parse client info for CCS Header: `+e)}let o=this.createTokenRequestHeaders(a||t.ccsCredential),s=Hi(this.config.authOptions.clientId,t);return Ut(this.executePostToTokenEndpoint.bind(this),Z.AuthorizationCodeClientExecutePostToTokenEndpoint,this.logger,this.performanceClient,t.correlationId)(r,i,o,s,t.correlationId,Z.AuthorizationCodeClientExecutePostToTokenEndpoint)}async createTokenRequestBody(e){this.performanceClient?.addQueueMeasurement(Z.AuthClientCreateTokenRequestBody,e.correlationId);let t=new Map;if($r(t,e.embeddedClientId||e.tokenBodyParameters?.[Sn]||this.config.authOptions.clientId),this.includeRedirectUri)ei(t,e.redirectUri);else if(!e.redirectUri)throw yt(qe);if(Qr(t,e.scopes,!0,this.oidcDefaultScopes),gi(t,e.code),ui(t,this.config.libraryInfo),di(t,this.config.telemetry.application),Fi(t),this.serverTelemetryManager&&!Kr(this.config)&&Pi(t,this.serverTelemetryManager),e.codeVerifier&&yi(t,e.codeVerifier),this.config.clientCredentials.clientSecret&&bi(t,this.config.clientCredentials.clientSecret),this.config.clientCredentials.clientAssertion){let n=this.config.clientCredentials.clientAssertion;xi(t,await ha(n.assertion,this.config.authOptions.clientId,e.resourceRequestUri)),Si(t,n.assertionType)}if(Ti(t,h.AUTHORIZATION_CODE_GRANT),Ei(t),e.authenticationScheme===w.POP){let n=new da(this.cryptoUtils,this.performanceClient),r;r=e.popKid?this.cryptoUtils.encodeKid(e.popKid):(await Ut(n.generateCnf.bind(n),Z.PopTokenGenerateCnf,this.logger,this.performanceClient,e.correlationId)(e,this.logger)).reqCnfString,Mi(t,r)}else if(e.authenticationScheme===w.SSH)if(e.sshJwk)Ni(t,e.sshJwk);else throw yt(st);(!bt.isEmptyObj(e.claims)||this.config.authOptions.clientCapabilities&&this.config.authOptions.clientCapabilities.length>0)&&ci(t,e.claims,this.config.authOptions.clientCapabilities);let n;if(e.clientInfo)try{let t=yr(e.clientInfo,this.cryptoUtils.base64Decode);n={credential:`${t.uid}${_.CLIENT_INFO_SEPARATOR}${t.utid}`,type:qr.HOME_ACCOUNT_ID}}catch(e){this.logger.verbose(`Could not parse client info for CCS Header: `+e)}else n=e.ccsCredential;if(this.config.systemOptions.preventCorsPreflight&&n)switch(n.type){case qr.HOME_ACCOUNT_ID:try{oi(t,br(n.credential))}catch(e){this.logger.verbose(`Could not parse home account ID for CCS Header: `+e)}break;case qr.UPN:ai(t,n.credential);break}return e.embeddedClientId&&Li(t,this.config.authOptions.clientId,this.config.authOptions.redirectUri),e.tokenBodyParameters&&Oi(t,e.tokenBodyParameters),e.enableSpaAuthorizationCode&&(!e.tokenBodyParameters||!e.tokenBodyParameters[rr])&&Oi(t,{[rr]:`1`}),Jr(t,e.correlationId,this.performanceClient),wt(t)}createLogoutUrlQueryString(e){let t=new Map;return e.postLogoutRedirectUri&&ti(t,e.postLogoutRedirectUri),e.correlationId&&li(t,e.correlationId),e.idTokenHint&&ni(t,e.idTokenHint),e.state&&pi(t,e.state),e.logoutHint&&Ii(t,e.logoutHint),e.extraQueryParameters&&Oi(t,e.extraQueryParameters),this.config.authOptions.instanceAware&&Di(t),wt(t,this.config.authOptions.encodeExtraQueryParams,e.extraQueryParameters)}},va=class extends Ki{constructor(e,t){super(e,t)}async acquireToken(e){this.performanceClient?.addQueueMeasurement(Z.RefreshTokenClientAcquireToken,e.correlationId);let t=Gt(),n=await Ut(this.executeTokenRequest.bind(this),Z.RefreshTokenClientExecuteTokenRequest,this.logger,this.performanceClient,e.correlationId)(e,this.authority),r=n.headers?.[o.X_MS_REQUEST_ID],i=new pa(this.config.authOptions.clientId,this.cacheManager,this.cryptoUtils,this.logger,this.config.serializableCache,this.config.persistencePlugin);return i.validateTokenResponse(n.body),Ut(i.handleServerTokenResponse.bind(i),Z.HandleServerTokenResponse,this.logger,this.performanceClient,e.correlationId)(n.body,this.authority,t,e,void 0,void 0,!0,e.forceCache,r)}async acquireTokenByRefreshToken(e){if(!e)throw yt(et);if(this.performanceClient?.addQueueMeasurement(Z.RefreshTokenClientAcquireTokenByRefreshToken,e.correlationId),!e.account)throw q(ve);if(this.cacheManager.isAppMetadataFOCI(e.account.environment))try{return await Ut(this.acquireTokenWithCachedRefreshToken.bind(this),Z.RefreshTokenClientAcquireTokenWithCachedRefreshToken,this.logger,this.performanceClient,e.correlationId)(e,!0)}catch(t){let n=t instanceof oa&&t.errorCode===qi,r=t instanceof Vi&&t.errorCode===E.INVALID_GRANT_ERROR&&t.subError===E.CLIENT_MISMATCH_ERROR;if(n||r)return Ut(this.acquireTokenWithCachedRefreshToken.bind(this),Z.RefreshTokenClientAcquireTokenWithCachedRefreshToken,this.logger,this.performanceClient,e.correlationId)(e,!1);throw t}return Ut(this.acquireTokenWithCachedRefreshToken.bind(this),Z.RefreshTokenClientAcquireTokenWithCachedRefreshToken,this.logger,this.performanceClient,e.correlationId)(e,!1)}async acquireTokenWithCachedRefreshToken(e,t){this.performanceClient?.addQueueMeasurement(Z.RefreshTokenClientAcquireTokenWithCachedRefreshToken,e.correlationId);let n=Ht(this.cacheManager.getRefreshToken.bind(this.cacheManager),Z.CacheManagerGetRefreshToken,this.logger,this.performanceClient,e.correlationId)(e.account,t,e.correlationId,void 0,this.performanceClient);if(!n)throw ca(qi);if(n.expiresOn&&Jt(n.expiresOn,e.refreshTokenExpirationOffsetSeconds||300))throw this.performanceClient?.addFields({rtExpiresOnMs:Number(n.expiresOn)},e.correlationId),ca(Yi);let r={...e,refreshToken:n.secret,authenticationScheme:e.authenticationScheme||w.BEARER,ccsCredential:{credential:e.account.homeAccountId,type:qr.HOME_ACCOUNT_ID}};try{return await Ut(this.acquireToken.bind(this),Z.RefreshTokenClientAcquireToken,this.logger,this.performanceClient,e.correlationId)(r)}catch(t){if(t instanceof oa&&(this.performanceClient?.addFields({rtExpiresOnMs:Number(n.expiresOn)},e.correlationId),t.subError===ea)){this.logger.verbose(`acquireTokenWithRefreshToken: bad refresh token, removing from cache`);let t=this.cacheManager.generateCredentialKey(n);this.cacheManager.removeRefreshToken(t,e.correlationId)}throw t}}async executeTokenRequest(e,t){this.performanceClient?.addQueueMeasurement(Z.RefreshTokenClientExecuteTokenRequest,e.correlationId);let n=this.createTokenQueryParameters(e),r=Dt.appendQueryString(t.tokenEndpoint,n),i=await Ut(this.createTokenRequestBody.bind(this),Z.RefreshTokenClientCreateTokenRequestBody,this.logger,this.performanceClient,e.correlationId)(e),a=this.createTokenRequestHeaders(e.ccsCredential),o=Hi(this.config.authOptions.clientId,e);return Ut(this.executePostToTokenEndpoint.bind(this),Z.RefreshTokenClientExecutePostToTokenEndpoint,this.logger,this.performanceClient,e.correlationId)(r,i,a,o,e.correlationId,Z.RefreshTokenClientExecutePostToTokenEndpoint)}async createTokenRequestBody(e){this.performanceClient?.addQueueMeasurement(Z.RefreshTokenClientCreateTokenRequestBody,e.correlationId);let t=new Map;if($r(t,e.embeddedClientId||e.tokenBodyParameters?.[Sn]||this.config.authOptions.clientId),e.redirectUri&&ei(t,e.redirectUri),Qr(t,e.scopes,!0,this.config.authOptions.authority.options.OIDCOptions?.defaultScopes),Ti(t,h.REFRESH_TOKEN_GRANT),Ei(t),ui(t,this.config.libraryInfo),di(t,this.config.telemetry.application),Fi(t),this.serverTelemetryManager&&!Kr(this.config)&&Pi(t,this.serverTelemetryManager),vi(t,e.refreshToken),this.config.clientCredentials.clientSecret&&bi(t,this.config.clientCredentials.clientSecret),this.config.clientCredentials.clientAssertion){let n=this.config.clientCredentials.clientAssertion;xi(t,await ha(n.assertion,this.config.authOptions.clientId,e.resourceRequestUri)),Si(t,n.assertionType)}if(e.authenticationScheme===w.POP){let n=new da(this.cryptoUtils,this.performanceClient),r;r=e.popKid?this.cryptoUtils.encodeKid(e.popKid):(await Ut(n.generateCnf.bind(n),Z.PopTokenGenerateCnf,this.logger,this.performanceClient,e.correlationId)(e,this.logger)).reqCnfString,Mi(t,r)}else if(e.authenticationScheme===w.SSH)if(e.sshJwk)Ni(t,e.sshJwk);else throw yt(st);if((!bt.isEmptyObj(e.claims)||this.config.authOptions.clientCapabilities&&this.config.authOptions.clientCapabilities.length>0)&&ci(t,e.claims,this.config.authOptions.clientCapabilities),this.config.systemOptions.preventCorsPreflight&&e.ccsCredential)switch(e.ccsCredential.type){case qr.HOME_ACCOUNT_ID:try{oi(t,br(e.ccsCredential.credential))}catch(e){this.logger.verbose(`Could not parse home account ID for CCS Header: `+e)}break;case qr.UPN:ai(t,e.ccsCredential.credential);break}return e.embeddedClientId&&Li(t,this.config.authOptions.clientId,this.config.authOptions.redirectUri),e.tokenBodyParameters&&Oi(t,e.tokenBodyParameters),Jr(t,e.correlationId,this.performanceClient),wt(t)}},ya=class extends Ki{constructor(e,t){super(e,t)}async acquireCachedToken(e){this.performanceClient?.addQueueMeasurement(Z.SilentFlowClientAcquireCachedToken,e.correlationId);let t=A.NOT_APPLICABLE;if(e.forceRefresh||!this.config.cacheOptions.claimsBasedCachingEnabled&&!bt.isEmptyObj(e.claims))throw this.setCacheOutcome(A.FORCE_REFRESH_OR_CLAIMS,e.correlationId),q(Ee);if(!e.account)throw q(ve);let n=e.account.tenantId||_n(e.authority),r=this.cacheManager.getTokenKeys(),i=this.cacheManager.getAccessToken(e.account,e,r,n);if(i){if(Xt(i.cachedAt)||Jt(i.expiresOn,this.config.systemOptions.tokenRenewalOffsetSeconds))throw this.setCacheOutcome(A.CACHED_ACCESS_TOKEN_EXPIRED,e.correlationId),q(Ee);i.refreshOn&&Jt(i.refreshOn,0)&&(t=A.PROACTIVELY_REFRESHED)}else throw this.setCacheOutcome(A.NO_CACHED_ACCESS_TOKEN,e.correlationId),q(Ee);let a=e.authority||this.authority.getPreferredCache(),o={account:this.cacheManager.getAccount(this.cacheManager.generateAccountKey(e.account),e.correlationId),accessToken:i,idToken:this.cacheManager.getIdToken(e.account,e.correlationId,r,n,this.performanceClient),refreshToken:null,appMetadata:this.cacheManager.readAppMetadataFromCache(a)};return this.setCacheOutcome(t,e.correlationId),this.config.serverTelemetryManager&&this.config.serverTelemetryManager.incrementCacheHits(),[await Ut(this.generateResultFromCacheRecord.bind(this),Z.SilentFlowClientGenerateResultFromCacheRecord,this.logger,this.performanceClient,e.correlationId)(o,e),t]}setCacheOutcome(e,t){this.serverTelemetryManager?.setCacheOutcome(e),this.performanceClient?.addFields({cacheOutcome:e},t),e!==A.NOT_APPLICABLE&&this.logger.info(`Token refresh is required due to cache outcome: ${e}`)}async generateResultFromCacheRecord(e,t){this.performanceClient?.addQueueMeasurement(Z.SilentFlowClientGenerateResultFromCacheRecord,t.correlationId);let n;if(e.idToken&&(n=He(e.idToken.secret,this.config.cryptoInterface.base64Decode)),t.maxAge||t.maxAge===0){let e=n?.auth_time;if(!e)throw q(oe);We(e,t.maxAge)}return pa.generateAuthenticationResult(this.cryptoUtils,this.authority,e,!0,t,n)}};let ba={sendGetRequestAsync:()=>Promise.reject(q(Ie)),sendPostRequestAsync:()=>Promise.reject(q(Ie))};function xa(e,t,n,r){let i=t.correlationId,a=new Map;if($r(a,t.embeddedClientId||t.extraQueryParameters?.[Sn]||e.clientId),Qr(a,[...t.scopes||[],...t.extraScopesToConsent||[]],!0,e.authority.options.OIDCOptions?.defaultScopes),ei(a,t.redirectUri),li(a,i),Xr(a,t.responseMode),Ei(a),t.prompt&&(fi(a,t.prompt),r?.addFields({prompt:t.prompt},i)),t.domainHint&&(ri(a,t.domainHint),r?.addFields({domainHintFromRequest:!0},i)),t.prompt!==u.SELECT_ACCOUNT)if(t.sid&&t.prompt===u.NONE)n.verbose(`createAuthCodeUrlQueryString: Prompt is none, adding sid from request`),si(a,t.sid),r?.addFields({sidFromRequest:!0},i);else if(t.account){let e=Ea(t.account),o=Da(t.account);if(o&&t.domainHint&&(n.warning(`AuthorizationCodeClient.createAuthCodeUrlQueryString: "domainHint" param is set, skipping opaque "login_hint" claim. Please consider not passing domainHint`),o=null),o){n.verbose(`createAuthCodeUrlQueryString: login_hint claim present on account`),ii(a,o),r?.addFields({loginHintFromClaim:!0},i);try{oi(a,br(t.account.homeAccountId))}catch{n.verbose(`createAuthCodeUrlQueryString: Could not parse home account ID for CCS Header`)}}else if(e&&t.prompt===u.NONE){n.verbose(`createAuthCodeUrlQueryString: Prompt is none, adding sid from account`),si(a,e),r?.addFields({sidFromClaim:!0},i);try{oi(a,br(t.account.homeAccountId))}catch{n.verbose(`createAuthCodeUrlQueryString: Could not parse home account ID for CCS Header`)}}else if(t.loginHint)n.verbose(`createAuthCodeUrlQueryString: Adding login_hint from request`),ii(a,t.loginHint),ai(a,t.loginHint),r?.addFields({loginHintFromRequest:!0},i);else if(t.account.username){n.verbose(`createAuthCodeUrlQueryString: Adding login_hint from account`),ii(a,t.account.username),r?.addFields({loginHintFromUpn:!0},i);try{oi(a,br(t.account.homeAccountId))}catch{n.verbose(`createAuthCodeUrlQueryString: Could not parse home account ID for CCS Header`)}}}else t.loginHint&&(n.verbose(`createAuthCodeUrlQueryString: No account, adding login_hint from request`),ii(a,t.loginHint),ai(a,t.loginHint),r?.addFields({loginHintFromRequest:!0},i));else n.verbose(`createAuthCodeUrlQueryString: Prompt is select_account, ignoring account hints`);return t.nonce&&mi(a,t.nonce),t.state&&pi(a,t.state),(t.claims||e.clientCapabilities&&e.clientCapabilities.length>0)&&ci(a,t.claims,e.clientCapabilities),t.embeddedClientId&&Li(a,e.clientId,e.redirectUri),e.instanceAware&&(!t.extraQueryParameters||!Object.keys(t.extraQueryParameters).includes(ur))&&Di(a),a}function Sa(e,t,n,r){let i=wt(t,n,r);return Dt.appendQueryString(e.authorizationEndpoint,i)}function Ca(e,t){if(wa(e,t),!e.code)throw q(ke);return e}function wa(e,t){if(!e.state||!t)throw e.state?q(ae,`Cached State`):q(ae,`Server State`);let n,r;try{n=decodeURIComponent(e.state)}catch{throw q(ie,e.state)}try{r=decodeURIComponent(t)}catch{throw q(ie,e.state)}if(n!==r)throw q(W);if(e.error||e.error_description||e.suberror){let t=Ta(e);throw sa(e.error,e.error_description,e.suberror)?new oa(e.error||``,e.error_description,e.suberror,e.timestamp||``,e.trace_id||``,e.correlation_id||``,e.claims||``,t):new Vi(e.error||``,e.error_description,e.suberror,t)}}function Ta(e){let t=e.error_uri?.lastIndexOf(`code=`);return t&&t>=0?e.error_uri?.substring(t+5):void 0}function Ea(e){return e.idTokenClaims?.sid||null}function Da(e){return e.loginHint||e.idTokenClaims?.login_hint||null}var Oa=Object.freeze({__proto__:null,getAuthorizationCodePayload:Ca,getAuthorizeUrl:Sa,getStandardAuthorizeRequestParameters:xa,validateAuthorizationResponse:wa}),ka=class{constructor(e){this.headers=e}getShrNonce(){let e=this.headers[o.AuthenticationInfo];if(e){let t=this.parseChallenges(e);if(t.nextnonce)return t.nextnonce;throw yt(lt)}let t=this.headers[o.WWWAuthenticate];if(t){let e=this.parseChallenges(t);if(e.nonce)return e.nonce;throw yt(lt)}throw yt(X)}parseChallenges(e){let n=e.indexOf(` `),r=e.substr(n+1).split(`,`),i={};return r.forEach(e=>{let[n,r]=e.split(`=`);i[n]=unescape(r.replace(/['"]+/g,t.EMPTY_STRING))}),i}};function Aa(e){if(e===0)return`UNTAG`;let t=`abcdefghijklmnopqrstuvwxyz0123456789****************************`,n=`*****`;return n=[t[e>>24&63],t[e>>18&63],t[e>>12&63],t[e>>6&63],t[e>>0&63]].join(``),n}var ja=class e extends L{constructor(t,n,r,i){let a=Aa(i),o=n?`${n} (Error Code: ${r}, Tag: ${a})`:`(Error Code: ${r}, Tag: ${a})`;super(t,o),this.name=`PlatformBrokerError`,this.statusCode=r,this.tag=a,Object.setPrototypeOf(this,e.prototype)}};function Ma(e){let{skus:t,libraryName:n,libraryVersion:r,extensionName:i,extensionVersion:a}=e,o=new Map([[0,[n,r]],[2,[i,a]]]),s=[];if(t?.length){if(s=t.split(`,`),s.length<4)return t}else s=Array.from({length:4},()=>`|`);return o.forEach((e,t)=>{e.length===2&&e[0]?.length&&e[1]?.length&&Na({skuArr:s,index:t,skuName:e[0],skuVersion:e[1]})}),s.join(`,`)}function Na(e){let{skuArr:t,index:n,skuName:r,skuVersion:i}=e;n>=t.length||(t[n]=[r,i].join(`|`))}var Pa=class e{constructor(e,n){this.cacheOutcome=A.NOT_APPLICABLE,this.cacheManager=n,this.apiId=e.apiId,this.correlationId=e.correlationId,this.wrapperSKU=e.wrapperSKU||t.EMPTY_STRING,this.wrapperVer=e.wrapperVer||t.EMPTY_STRING,this.telemetryCacheKey=C.CACHE_KEY+_.CACHE_KEY_SEPARATOR+e.clientId}generateCurrentRequestHeaderValue(){let e=`${this.apiId}${C.VALUE_SEPARATOR}${this.cacheOutcome}`,t=[this.wrapperSKU,this.wrapperVer],n=this.getNativeBrokerErrorCode();n?.length&&t.push(`broker_error=${n}`);let r=t.join(C.VALUE_SEPARATOR),i=[e,this.getRegionDiscoveryFields()].join(C.VALUE_SEPARATOR);return[C.SCHEMA_VERSION,i,r].join(C.CATEGORY_SEPARATOR)}generateLastRequestHeaderValue(){let t=this.getLastRequests(),n=e.maxErrorsToSend(t),r=t.failedRequests.slice(0,2*n).join(C.VALUE_SEPARATOR),i=t.errors.slice(0,n).join(C.VALUE_SEPARATOR),a=t.errors.length,o=[a,n=C.MAX_CACHED_ERRORS&&(t.failedRequests.shift(),t.failedRequests.shift(),t.errors.shift()),t.failedRequests.push(this.apiId,this.correlationId),e instanceof Error&&e&&e.toString()?e instanceof L?e.subError?t.errors.push(e.subError):e.errorCode?t.errors.push(e.errorCode):t.errors.push(e.toString()):t.errors.push(e.toString()):t.errors.push(C.UNKNOWN_ERROR),this.cacheManager.setServerTelemetry(this.telemetryCacheKey,t,this.correlationId)}incrementCacheHits(){let e=this.getLastRequests();return e.cacheHits+=1,this.cacheManager.setServerTelemetry(this.telemetryCacheKey,e,this.correlationId),e.cacheHits}getLastRequests(){return this.cacheManager.getServerTelemetry(this.telemetryCacheKey)||{failedRequests:[],errors:[],cacheHits:0}}clearTelemetryCache(){let t=this.getLastRequests(),n=e.maxErrorsToSend(t);if(n===t.errors.length)this.cacheManager.removeItem(this.telemetryCacheKey,this.correlationId);else{let e={failedRequests:t.failedRequests.slice(n*2),errors:t.errors.slice(n),cacheHits:0};this.cacheManager.setServerTelemetry(this.telemetryCacheKey,e,this.correlationId)}}static maxErrorsToSend(e){let n,r=0,i=0,a=e.errors.length;for(n=0;n{var t=Vc();let n=`missing_kid_error`,r=`missing_alg_error`,i={[n]:`The JOSE Header for the requested JWT, JWS or JWK object requires a keyId to be configured as the 'kid' header claim. No 'kid' value was provided.`,[r]:`The JOSE Header for the requested JWT, JWS or JWK object requires an algorithm to be specified as the 'alg' header claim. No 'alg' value was provided.`};var a=class e extends t.AuthError{constructor(t,n){super(t,n),this.name=`JoseHeaderError`,Object.setPrototypeOf(this,e.prototype)}};function o(e){return new a(e,i[e])}var s=class e{constructor(e){this.typ=e.typ,this.alg=e.alg,this.kid=e.kid}static getShrHeaderString(i){if(!i.kid)throw o(n);if(!i.alg)throw o(r);let a=new e({typ:i.typ||t.JsonWebTokenTypes.Pop,kid:i.kid,alg:i.alg});return JSON.stringify(a)}};function c(e,t,n){n&&n.push({name:t.get(e.name)||e.name})}function l(e,n,r,i){if(!r?.length)return;let a=e=>e.length?e[e.length-1]:void 0,o=n.get(e.name)||e.name;if(a(r)?.name!==o)return;let s=r?.pop();if(!s)return;let c=i instanceof t.AuthError?i.errorCode:i instanceof Error?i.name:void 0,l=i instanceof t.AuthError?i.subError:void 0;c&&s.childErr!==c&&(s.err=c,l&&(s.subErr=l)),delete s.name,delete s.childErr;let u={...s,dur:e.durationMs};e.success||(u.fail=1);let d=a(r);if(!d)return{[o]:u};c&&(d.childErr=c);let f;return f=d[o]?`${o}_${Object.keys(d).filter(e=>e.startsWith(o)).length+1}`:o,d[f]=u,d}function u(e,n,r,i=5){if(e instanceof Error){if(e instanceof t.AuthError){r.errorCode=e.errorCode,r.subErrorCode=e.subError,(e instanceof t.ServerError||e instanceof t.InteractionRequiredAuthError)&&(r.serverErrorNo=e.errorNo);return}else if(e instanceof t.CacheError){r.errorCode=e.errorCode;return}else if(r.errorStack?.length){n.trace(`PerformanceClient.addErrorStack: Stack already exist`,r.correlationId);return}else if(!e.stack?.length){n.trace(`PerformanceClient.addErrorStack: Input stack is empty`,r.correlationId);return}}else{n.trace(`PerformanceClient.addErrorStack: Input error is not instance of Error`,r.correlationId);return}e.stack&&(r.errorStack=d(e.stack,i)),r.errorName=e.name}function d(e,t){if(t<0)return[];let n=e.split(` +`)||[],r=[],i=n[0];i.startsWith(`TypeError: Cannot read property`)||i.startsWith(`TypeError: Cannot read properties of`)||i.startsWith(`TypeError: Cannot set property`)||i.startsWith(`TypeError: Cannot set properties of`)||i.endsWith(`is not a function`)?r.push(f(i)):(i.startsWith(`SyntaxError`)||i.startsWith(`TypeError`))&&r.push(f(i.replace(/['].*[']|["].*["]/g,``)));for(let e=1;e=t);e++){let t=n[e];r.push(f(t))}return r}function f(e){let t=e.lastIndexOf(` `)+1;if(t<1)return e;let n=e.substring(t),r=n.lastIndexOf(`/`);return r=r<0?n.lastIndexOf(`\\`):r,r>=0?(e.substring(0,t)+`(`+n.substring(r+1)+(n.charAt(n.length-1)===`)`?``:`)`)).trimStart():e.trimStart()}function p(e){let t=e?.idTokenClaims;if(t?.tfp||t?.acr)return`B2C`;if(t?.tid){if(t?.tid===`9188040d-6c67-4c5b-b112-36a304b66dad`)return`MSA`}else return;return`AAD`}var m=class{constructor(e,n,r,i,a,o,s,c){this.authority=n,this.libraryName=i,this.libraryVersion=a,this.applicationTelemetry=o,this.clientId=e,this.logger=r,this.callbacks=new Map,this.eventsByCorrelationId=new Map,this.eventStack=new Map,this.queueMeasurements=new Map,this.preQueueTimeByCorrelationId=new Map,this.intFields=s||new Set;for(let e of t.IntFields)this.intFields.add(e);this.abbreviations=c||new Map;for(let[e,n]of t.PerformanceEventAbbreviations)this.abbreviations.set(e,n)}startPerformanceMeasurement(e,t){return{}}getPreQueueTime(e,t){let n=this.preQueueTimeByCorrelationId.get(t);if(n){if(n.name!==e){this.logger.trace(`PerformanceClient.getPreQueueTime: no pre-queue time found for ${e}, unable to add queue measurement`);return}}else{this.logger.trace(`PerformanceClient.getPreQueueTime: no pre-queue times found for correlationId: ${t}, unable to add queue measurement`);return}return n.time}calculateQueuedTime(e,t){return e<1?(this.logger.trace(`PerformanceClient: preQueueTime should be a positive integer and not ${e}`),0):t<1?(this.logger.trace(`PerformanceClient: currentTime should be a positive integer and not ${t}`),0):tthis.endMeasurement({...i,...e},t,n),discard:()=>this.discardMeasurements(i.correlationId),add:e=>this.addFields(e,i.correlationId),increment:e=>this.incrementFields(e,i.correlationId),event:i,measurement:new t.StubPerformanceMeasurement}}endMeasurement(e,n,r){let i=this.eventsByCorrelationId.get(e.correlationId);if(!i)return this.logger.trace(`PerformanceClient: Measurement not found for ${e.eventId}`,e.correlationId),null;let a=e.eventId===i.eventId,o={totalQueueTime:0,totalQueueCount:0,manuallyCompletedCount:0};e.durationMs=Math.round(e.durationMs||this.getDurationMs(e.startTimeMs));let s=JSON.stringify(l(e,this.abbreviations,this.eventStack.get(i.correlationId),n));if(a?(o=this.getQueueInfo(e.correlationId),this.discardMeasurements(i.correlationId)):i.incompleteSubMeasurements?.delete(e.eventId),this.logger.trace(`PerformanceClient: Performance measurement ended for ${e.name}: ${e.durationMs} ms`,e.correlationId),n&&u(n,this.logger,i),!a)return i[e.name+`DurationMs`]=Math.floor(e.durationMs),{...i};a&&!n&&(i.errorCode||i.subErrorCode)&&(this.logger.trace(`PerformanceClient: Remove error and sub-error codes for root event ${e.name} as intermediate error was successfully handled`,e.correlationId),i.errorCode=void 0,i.subErrorCode=void 0);let c={...i,...e},d=0;return c.incompleteSubMeasurements?.forEach(t=>{this.logger.trace(`PerformanceClient: Incomplete submeasurement ${t.name} found for ${e.name}`,c.correlationId),d++}),c.incompleteSubMeasurements=void 0,c={...c,queuedTimeMs:o.totalQueueTime,queuedCount:o.totalQueueCount,queuedManuallyCompletedCount:o.manuallyCompletedCount,status:t.PerformanceEventStatus.Completed,incompleteSubsCount:d,context:s},r&&(c.accountType=p(r),c.dataBoundary=r.dataBoundary),this.truncateIntegralFields(c),this.emitEvents([c],e.correlationId),c}addFields(e,t){this.logger.trace(`PerformanceClient: Updating static fields`);let n=this.eventsByCorrelationId.get(t);n?this.eventsByCorrelationId.set(t,{...n,...e}):this.logger.trace(`PerformanceClient: Event not found for`,t)}incrementFields(e,t){this.logger.trace(`PerformanceClient: Updating counters`);let n=this.eventsByCorrelationId.get(t);if(n)for(let t in e){if(!n.hasOwnProperty(t))n[t]=0;else if(isNaN(Number(n[t])))return;n[t]+=e[t]}else this.logger.trace(`PerformanceClient: Event not found for`,t)}cacheEventByCorrelationId(e){let t=this.eventsByCorrelationId.get(e.correlationId);t?(this.logger.trace(`PerformanceClient: Performance measurement for ${e.name} added/updated`,e.correlationId),t.incompleteSubMeasurements=t.incompleteSubMeasurements||new Map,t.incompleteSubMeasurements.set(e.eventId,{name:e.name,startTimeMs:e.startTimeMs})):(this.logger.trace(`PerformanceClient: Performance measurement for ${e.name} started`,e.correlationId),this.eventsByCorrelationId.set(e.correlationId,{...e}),this.eventStack.set(e.correlationId,[]))}getQueueInfo(e){let t=this.queueMeasurements.get(e);t||this.logger.trace(`PerformanceClient: no queue measurements found for for correlationId: ${e}`);let n=0,r=0,i=0;return t?.forEach(e=>{n+=e.queueTime,r++,i+=e.manuallyCompleted?1:0}),{totalQueueTime:n,totalQueueCount:r,manuallyCompletedCount:i}}discardMeasurements(e){this.logger.trace(`PerformanceClient: Performance measurements discarded`,e),this.eventsByCorrelationId.delete(e),this.logger.trace(`PerformanceClient: QueueMeasurements discarded`,e),this.queueMeasurements.delete(e),this.logger.trace(`PerformanceClient: Pre-queue times discarded`,e),this.preQueueTimeByCorrelationId.delete(e),this.logger.trace(`PerformanceClient: Event stack discarded`,e),this.eventStack.delete(e)}addPerformanceCallback(e){for(let[t,n]of this.callbacks)if(n.toString()===e.toString())return this.logger.warning(`PerformanceClient: Performance callback is already registered with id: ${t}`),t;let t=this.generateId();return this.callbacks.set(t,e),this.logger.verbose(`PerformanceClient: Performance callback registered with id: ${t}`),t}removePerformanceCallback(e){let t=this.callbacks.delete(e);return t?this.logger.verbose(`PerformanceClient: Performance callback ${e} removed.`):this.logger.verbose(`PerformanceClient: Performance callback ${e} not removed.`),t}emitEvents(e,t){this.logger.verbose(`PerformanceClient: Emitting performance events`,t),this.callbacks.forEach((n,r)=>{this.logger.trace(`PerformanceClient: Emitting event to callback ${r}`,t),n.apply(null,[e])})}truncateIntegralFields(e){this.intFields.forEach(t=>{t in e&&typeof e[t]==`number`&&(e[t]=Math.floor(e[t]))})}getDurationMs(e){let t=Date.now()-e;return t<0?t:0}};e.AADAuthorityConstants=t.AADAuthorityConstants,e.AADServerParamKeys=t.AADServerParamKeys,e.AccountEntity=t.AccountEntity,e.AuthError=t.AuthError,e.AuthErrorCodes=t.AuthErrorCodes,e.AuthErrorMessage=t.AuthErrorMessage,e.AuthToken=t.AuthToken,e.AuthenticationHeaderParser=t.AuthenticationHeaderParser,e.AuthenticationScheme=t.AuthenticationScheme,e.Authority=t.Authority,e.AuthorityFactory=t.AuthorityFactory,e.AuthorityType=t.AuthorityType,e.AuthorizationCodeClient=t.AuthorizationCodeClient,e.AuthorizeProtocol=t.Authorize,e.AzureCloudInstance=t.AzureCloudInstance,e.BaseClient=t.BaseClient,e.CacheAccountType=t.CacheAccountType,e.CacheError=t.CacheError,e.CacheErrorCodes=t.CacheErrorCodes,e.CacheHelpers=t.CacheHelpers,e.CacheManager=t.CacheManager,e.CacheOutcome=t.CacheOutcome,e.CacheType=t.CacheType,e.CcsCredentialType=t.CcsCredentialType,e.ClaimsRequestKeys=t.ClaimsRequestKeys,e.ClientAuthError=t.ClientAuthError,e.ClientAuthErrorCodes=t.ClientAuthErrorCodes,e.ClientAuthErrorMessage=t.ClientAuthErrorMessage,e.ClientConfigurationError=t.ClientConfigurationError,e.ClientConfigurationErrorCodes=t.ClientConfigurationErrorCodes,e.ClientConfigurationErrorMessage=t.ClientConfigurationErrorMessage,e.CodeChallengeMethodValues=t.CodeChallengeMethodValues,e.Constants=t.Constants,e.CredentialType=t.CredentialType,e.DEFAULT_CRYPTO_IMPLEMENTATION=t.DEFAULT_CRYPTO_IMPLEMENTATION,e.DEFAULT_SYSTEM_OPTIONS=t.DEFAULT_SYSTEM_OPTIONS,e.DEFAULT_TOKEN_RENEWAL_OFFSET_SEC=t.DEFAULT_TOKEN_RENEWAL_OFFSET_SEC,e.DefaultStorageClass=t.DefaultStorageClass,e.EncodingTypes=t.EncodingTypes,e.Errors=t.Errors,e.GrantType=t.GrantType,e.HeaderNames=t.HeaderNames,e.HttpMethod=t.HttpMethod,e.HttpStatus=t.HttpStatus,e.IntFields=t.IntFields,e.InteractionRequiredAuthError=t.InteractionRequiredAuthError,e.InteractionRequiredAuthErrorCodes=t.InteractionRequiredAuthErrorCodes,e.InteractionRequiredAuthErrorMessage=t.InteractionRequiredAuthErrorMessage,e.JsonWebTokenTypes=t.JsonWebTokenTypes,Object.defineProperty(e,`LogLevel`,{enumerable:!0,get:function(){return t.LogLevel}}),e.Logger=t.Logger,e.NetworkError=t.NetworkError,e.OAuthResponseType=t.OAuthResponseType,e.OIDC_DEFAULT_SCOPES=t.OIDC_DEFAULT_SCOPES,e.ONE_DAY_IN_MS=t.ONE_DAY_IN_MS,e.PasswordGrantConstants=t.PasswordGrantConstants,e.PerformanceEventStatus=t.PerformanceEventStatus,e.PerformanceEvents=t.PerformanceEvents,e.PersistentCacheKeys=t.PersistentCacheKeys,e.PlatformBrokerError=t.PlatformBrokerError,e.PopTokenGenerator=t.PopTokenGenerator,e.PromptValue=t.PromptValue,e.ProtocolMode=t.ProtocolMode,e.ProtocolUtils=t.ProtocolUtils,e.RefreshTokenClient=t.RefreshTokenClient,e.RequestParameterBuilder=t.RequestParameterBuilder,e.ResponseHandler=t.ResponseHandler,e.ResponseMode=t.ResponseMode,e.ScopeSet=t.ScopeSet,e.ServerError=t.ServerError,e.ServerResponseType=t.ServerResponseType,e.ServerTelemetryManager=t.ServerTelemetryManager,e.SilentFlowClient=t.SilentFlowClient,e.StringUtils=t.StringUtils,e.StubPerformanceClient=t.StubPerformanceClient,e.StubbedNetworkModule=t.StubbedNetworkModule,e.THE_FAMILY_ID=t.THE_FAMILY_ID,e.ThrottlingConstants=t.ThrottlingConstants,e.ThrottlingUtils=t.ThrottlingUtils,e.TimeUtils=t.TimeUtils,e.UrlString=t.UrlString,e.UrlUtils=t.UrlUtils,e.buildAccountToCache=t.buildAccountToCache,e.buildClientInfo=t.buildClientInfo,e.buildClientInfoFromHomeAccountId=t.buildClientInfoFromHomeAccountId,e.buildStaticAuthorityOptions=t.buildStaticAuthorityOptions,e.buildTenantProfile=t.buildTenantProfile,e.createAuthError=t.createAuthError,e.createCacheError=t.createCacheError,e.createClientAuthError=t.createClientAuthError,e.createClientConfigurationError=t.createClientConfigurationError,e.createInteractionRequiredAuthError=t.createInteractionRequiredAuthError,e.createNetworkError=t.createNetworkError,e.formatAuthorityUri=t.formatAuthorityUri,e.getRequestThumbprint=t.getRequestThumbprint,e.getTenantIdFromIdTokenClaims=t.getTenantIdFromIdTokenClaims,e.invoke=t.invoke,e.invokeAsync=t.invokeAsync,e.tenantIdMatchesHomeTenant=t.tenantIdMatchesHomeTenant,e.updateAccountTenantProfileData=t.updateAccountTenantProfileData,e.version=t.version,e.JoseHeader=s,e.PerformanceClient=m})),Uc=b((e=>{var t=Vc(),n=Hc();e.AADAuthorityConstants=t.AADAuthorityConstants,e.AADServerParamKeys=t.AADServerParamKeys,e.AccountEntity=t.AccountEntity,e.AuthError=t.AuthError,e.AuthErrorCodes=t.AuthErrorCodes,e.AuthErrorMessage=t.AuthErrorMessage,e.AuthToken=t.AuthToken,e.AuthenticationHeaderParser=t.AuthenticationHeaderParser,e.AuthenticationScheme=t.AuthenticationScheme,e.Authority=t.Authority,e.AuthorityFactory=t.AuthorityFactory,e.AuthorityType=t.AuthorityType,e.AuthorizationCodeClient=t.AuthorizationCodeClient,e.AuthorizeProtocol=t.Authorize,e.AzureCloudInstance=t.AzureCloudInstance,e.BaseClient=t.BaseClient,e.CacheAccountType=t.CacheAccountType,e.CacheError=t.CacheError,e.CacheErrorCodes=t.CacheErrorCodes,e.CacheHelpers=t.CacheHelpers,e.CacheManager=t.CacheManager,e.CacheOutcome=t.CacheOutcome,e.CacheType=t.CacheType,e.CcsCredentialType=t.CcsCredentialType,e.ClaimsRequestKeys=t.ClaimsRequestKeys,e.ClientAssertionUtils=t.ClientAssertionUtils,e.ClientAuthError=t.ClientAuthError,e.ClientAuthErrorCodes=t.ClientAuthErrorCodes,e.ClientAuthErrorMessage=t.ClientAuthErrorMessage,e.ClientConfigurationError=t.ClientConfigurationError,e.ClientConfigurationErrorCodes=t.ClientConfigurationErrorCodes,e.ClientConfigurationErrorMessage=t.ClientConfigurationErrorMessage,e.CodeChallengeMethodValues=t.CodeChallengeMethodValues,e.Constants=t.Constants,e.CredentialType=t.CredentialType,e.DEFAULT_CRYPTO_IMPLEMENTATION=t.DEFAULT_CRYPTO_IMPLEMENTATION,e.DEFAULT_SYSTEM_OPTIONS=t.DEFAULT_SYSTEM_OPTIONS,e.DEFAULT_TOKEN_RENEWAL_OFFSET_SEC=t.DEFAULT_TOKEN_RENEWAL_OFFSET_SEC,e.DefaultStorageClass=t.DefaultStorageClass,e.EncodingTypes=t.EncodingTypes,e.Errors=t.Errors,e.GrantType=t.GrantType,e.HeaderNames=t.HeaderNames,e.HttpMethod=t.HttpMethod,e.HttpStatus=t.HttpStatus,e.IntFields=t.IntFields,e.InteractionRequiredAuthError=t.InteractionRequiredAuthError,e.InteractionRequiredAuthErrorCodes=t.InteractionRequiredAuthErrorCodes,e.InteractionRequiredAuthErrorMessage=t.InteractionRequiredAuthErrorMessage,e.JsonWebTokenTypes=t.JsonWebTokenTypes,Object.defineProperty(e,`LogLevel`,{enumerable:!0,get:function(){return t.LogLevel}}),e.Logger=t.Logger,e.NetworkError=t.NetworkError,e.OAuthResponseType=t.OAuthResponseType,e.OIDC_DEFAULT_SCOPES=t.OIDC_DEFAULT_SCOPES,e.ONE_DAY_IN_MS=t.ONE_DAY_IN_MS,e.PasswordGrantConstants=t.PasswordGrantConstants,e.PerformanceEventStatus=t.PerformanceEventStatus,e.PerformanceEvents=t.PerformanceEvents,e.PersistentCacheKeys=t.PersistentCacheKeys,e.PlatformBrokerError=t.PlatformBrokerError,e.PopTokenGenerator=t.PopTokenGenerator,e.PromptValue=t.PromptValue,e.ProtocolMode=t.ProtocolMode,e.ProtocolUtils=t.ProtocolUtils,e.RefreshTokenClient=t.RefreshTokenClient,e.RequestParameterBuilder=t.RequestParameterBuilder,e.ResponseHandler=t.ResponseHandler,e.ResponseMode=t.ResponseMode,e.ScopeSet=t.ScopeSet,e.ServerError=t.ServerError,e.ServerResponseType=t.ServerResponseType,e.ServerTelemetryManager=t.ServerTelemetryManager,e.SilentFlowClient=t.SilentFlowClient,e.StringUtils=t.StringUtils,e.StubPerformanceClient=t.StubPerformanceClient,e.StubbedNetworkModule=t.StubbedNetworkModule,e.THE_FAMILY_ID=t.THE_FAMILY_ID,e.ThrottlingConstants=t.ThrottlingConstants,e.ThrottlingUtils=t.ThrottlingUtils,e.TimeUtils=t.TimeUtils,e.TokenCacheContext=t.TokenCacheContext,e.UrlString=t.UrlString,e.UrlUtils=t.UrlUtils,e.buildAccountToCache=t.buildAccountToCache,e.buildClientInfo=t.buildClientInfo,e.buildClientInfoFromHomeAccountId=t.buildClientInfoFromHomeAccountId,e.buildStaticAuthorityOptions=t.buildStaticAuthorityOptions,e.buildTenantProfile=t.buildTenantProfile,e.createAuthError=t.createAuthError,e.createCacheError=t.createCacheError,e.createClientAuthError=t.createClientAuthError,e.createClientConfigurationError=t.createClientConfigurationError,e.createInteractionRequiredAuthError=t.createInteractionRequiredAuthError,e.createNetworkError=t.createNetworkError,e.formatAuthorityUri=t.formatAuthorityUri,e.getClientAssertion=t.getClientAssertion,e.getRequestThumbprint=t.getRequestThumbprint,e.getTenantIdFromIdTokenClaims=t.getTenantIdFromIdTokenClaims,e.invoke=t.invoke,e.invokeAsync=t.invokeAsync,e.tenantIdMatchesHomeTenant=t.tenantIdMatchesHomeTenant,e.updateAccountTenantProfileData=t.updateAccountTenantProfileData,e.version=t.version,e.JoseHeader=n.JoseHeader,e.PerformanceClient=n.PerformanceClient})),Wc=b(((e,t)=>{ +/*! safe-buffer. MIT License. Feross Aboukhadijeh */ +var n=T(`buffer`),r=n.Buffer;function i(e,t){for(var n in e)t[n]=e[n]}r.from&&r.alloc&&r.allocUnsafe&&r.allocUnsafeSlow?t.exports=n:(i(n,e),e.Buffer=a);function a(e,t,n){return r(e,t,n)}a.prototype=Object.create(r.prototype),i(r,a),a.from=function(e,t,n){if(typeof e==`number`)throw TypeError(`Argument must not be a number`);return r(e,t,n)},a.alloc=function(e,t,n){if(typeof e!=`number`)throw TypeError(`Argument must be a number`);var i=r(e);return t===void 0?i.fill(0):typeof n==`string`?i.fill(t,n):i.fill(t),i},a.allocUnsafe=function(e){if(typeof e!=`number`)throw TypeError(`Argument must be a number`);return r(e)},a.allocUnsafeSlow=function(e){if(typeof e!=`number`)throw TypeError(`Argument must be a number`);return n.SlowBuffer(e)}})),Gc=b(((e,t)=>{var n=Wc().Buffer,r=T(`stream`),i=T(`util`);function a(e){if(this.buffer=null,this.writable=!0,this.readable=!0,!e)return this.buffer=n.alloc(0),this;if(typeof e.pipe==`function`)return this.buffer=n.alloc(0),e.pipe(this),this;if(e.length||typeof e==`object`)return this.buffer=e,this.writable=!1,process.nextTick(function(){this.emit(`end`,e),this.readable=!1,this.emit(`close`)}.bind(this)),this;throw TypeError(`Unexpected data type (`+typeof e+`)`)}i.inherits(a,r),a.prototype.write=function(e){this.buffer=n.concat([this.buffer,n.from(e)]),this.emit(`data`,e)},a.prototype.end=function(e){e&&this.write(e),this.emit(`end`,e),this.emit(`close`),this.writable=!1,this.readable=!1},t.exports=a})),Kc=b(((e,t)=>{function n(e){return(e/8|0)+(e%8==0?0:1)}var r={ES256:n(256),ES384:n(384),ES512:n(521)};function i(e){var t=r[e];if(t)return t;throw Error(`Unknown algorithm "`+e+`"`)}t.exports=i})),qc=b(((e,t)=>{var n=Wc().Buffer,r=Kc(),i=128,a=0,o=32,s=16,c=2,l=s|o|a<<6,u=c|a<<6;function d(e){return e.replace(/=/g,``).replace(/\+/g,`-`).replace(/\//g,`_`)}function f(e){if(n.isBuffer(e))return e;if(typeof e==`string`)return n.from(e,`base64`);throw TypeError(`ECDSA signature must be a Base64 string or a Buffer`)}function p(e,t){e=f(e);var a=r(t),o=a+1,s=e.length,c=0;if(e[c++]!==l)throw Error(`Could not find expected "seq"`);var p=e[c++];if(p===(i|1)&&(p=e[c++]),s-c=i&&--r,r}function h(e,t){e=f(e);var a=r(t),o=e.length;if(o!==a*2)throw TypeError(`"`+t+`" signatures must be "`+a*2+`" bytes, saw "`+o+`"`);var s=m(e,0,a),c=m(e,a,e.length),d=a-s,p=a-c,h=2+d+1+1+p,g=h{var n=T(`buffer`).Buffer,r=T(`buffer`).SlowBuffer;t.exports=i;function i(e,t){if(!n.isBuffer(e)||!n.isBuffer(t)||e.length!==t.length)return!1;for(var r=0,i=0;i{var n=Wc().Buffer,r=T(`crypto`),i=qc(),a=T(`util`),o=`"%s" is not a valid algorithm. + Supported algorithms are: + "HS256", "HS384", "HS512", "RS256", "RS384", "RS512", "PS256", "PS384", "PS512", "ES256", "ES384", "ES512" and "none".`,s=`secret must be a string or buffer`,c=`key must be a string or a buffer`,l=`key must be a string, a buffer or an object`,u=typeof r.createPublicKey==`function`;u&&(c+=` or a KeyObject`,s+=`or a KeyObject`);function d(e){if(!n.isBuffer(e)&&typeof e!=`string`&&(!u||typeof e!=`object`||typeof e.type!=`string`||typeof e.asymmetricKeyType!=`string`||typeof e.export!=`function`))throw g(c)}function f(e){if(!n.isBuffer(e)&&typeof e!=`string`&&typeof e!=`object`)throw g(l)}function p(e){if(!n.isBuffer(e)){if(typeof e==`string`)return e;if(!u||typeof e!=`object`||e.type!==`secret`||typeof e.export!=`function`)throw g(s)}}function m(e){return e.replace(/=/g,``).replace(/\+/g,`-`).replace(/\//g,`_`)}function h(e){e=e.toString();var t=4-e.length%4;if(t!==4)for(var n=0;n{var n=T(`buffer`).Buffer;t.exports=function(e){return typeof e==`string`?e:typeof e==`number`||n.isBuffer(e)?e.toString():JSON.stringify(e)}})),Zc=b(((e,t)=>{var n=Wc().Buffer,r=Gc(),i=Yc(),a=T(`stream`),o=Xc(),s=T(`util`);function c(e,t){return n.from(e,t).toString(`base64`).replace(/=/g,``).replace(/\+/g,`-`).replace(/\//g,`_`)}function l(e,t,n){n||=`utf8`;var r=c(o(e),`binary`),i=c(o(t),n);return s.format(`%s.%s`,r,i)}function u(e){var t=e.header,n=e.payload,r=e.secret||e.privateKey,a=e.encoding,o=i(t.alg),c=l(t,n,a),u=o.sign(c,r);return s.format(`%s.%s`,c,u)}function d(e){var t=new r(e.secret||e.privateKey||e.key);this.readable=!0,this.header=e.header,this.encoding=e.encoding,this.secret=this.privateKey=this.key=t,this.payload=new r(e.payload),this.secret.once(`close`,function(){!this.payload.writable&&this.readable&&this.sign()}.bind(this)),this.payload.once(`close`,function(){!this.secret.writable&&this.readable&&this.sign()}.bind(this))}s.inherits(d,a),d.prototype.sign=function(){try{var e=u({header:this.header,payload:this.payload.buffer,secret:this.secret.buffer,encoding:this.encoding});return this.emit(`done`,e),this.emit(`data`,e),this.emit(`end`),this.readable=!1,e}catch(e){this.readable=!1,this.emit(`error`,e),this.emit(`close`)}},d.sign=u,t.exports=d})),Qc=b(((e,t)=>{var n=Wc().Buffer,r=Gc(),i=Yc(),a=T(`stream`),o=Xc(),s=T(`util`),c=/^[a-zA-Z0-9\-_]+?\.[a-zA-Z0-9\-_]+?\.([a-zA-Z0-9\-_]+)?$/;function l(e){return Object.prototype.toString.call(e)===`[object Object]`}function u(e){if(l(e))return e;try{return JSON.parse(e)}catch{return}}function d(e){var t=e.split(`.`,1)[0];return u(n.from(t,`base64`).toString(`binary`))}function f(e){return e.split(`.`,2).join(`.`)}function p(e){return e.split(`.`)[2]}function m(e,t){t||=`utf8`;var r=e.split(`.`)[1];return n.from(r,`base64`).toString(t)}function h(e){return c.test(e)&&!!d(e)}function g(e,t,n){if(!t){var r=Error(`Missing algorithm parameter for jws.verify`);throw r.code=`MISSING_ALGORITHM`,r}e=o(e);var a=p(e),s=f(e);return i(t).verify(s,a,n)}function _(e,t){if(t||={},e=o(e),!h(e))return null;var n=d(e);if(!n)return null;var r=m(e);return(n.typ===`JWT`||t.json)&&(r=JSON.parse(r,t.encoding)),{header:n,payload:r,signature:p(e)}}function v(e){e||={};var t=new r(e.secret||e.publicKey||e.key);this.readable=!0,this.algorithm=e.algorithm,this.encoding=e.encoding,this.secret=this.publicKey=this.key=t,this.signature=new r(e.signature),this.secret.once(`close`,function(){!this.signature.writable&&this.readable&&this.verify()}.bind(this)),this.signature.once(`close`,function(){!this.secret.writable&&this.readable&&this.verify()}.bind(this))}s.inherits(v,a),v.prototype.verify=function(){try{var e=g(this.signature.buffer,this.algorithm,this.key.buffer),t=_(this.signature.buffer,this.encoding);return this.emit(`done`,e,t),this.emit(`data`,e),this.emit(`end`),this.readable=!1,e}catch(e){this.readable=!1,this.emit(`error`,e),this.emit(`close`)}},v.decode=_,v.isValid=h,v.verify=g,t.exports=v})),$c=b((e=>{var t=Zc(),n=Qc();e.ALGORITHMS=[`HS256`,`HS384`,`HS512`,`RS256`,`RS384`,`RS512`,`PS256`,`PS384`,`PS512`,`ES256`,`ES384`,`ES512`],e.sign=t.sign,e.verify=n.verify,e.decode=n.decode,e.isValid=n.isValid,e.createSign=function(e){return new t(e)},e.createVerify=function(e){return new n(e)}})),el=b(((e,t)=>{var n=$c();t.exports=function(e,t){t||={};var r=n.decode(e,t);if(!r)return null;var i=r.payload;if(typeof i==`string`)try{var a=JSON.parse(i);typeof a==`object`&&a&&(i=a)}catch{}return t.complete===!0?{header:r.header,payload:i,signature:r.signature}:i}})),tl=b(((e,t)=>{var n=function(e,t){Error.call(this,e),Error.captureStackTrace&&Error.captureStackTrace(this,this.constructor),this.name=`JsonWebTokenError`,this.message=e,t&&(this.inner=t)};n.prototype=Object.create(Error.prototype),n.prototype.constructor=n,t.exports=n})),nl=b(((e,t)=>{var n=tl(),r=function(e,t){n.call(this,e),this.name=`NotBeforeError`,this.date=t};r.prototype=Object.create(n.prototype),r.prototype.constructor=r,t.exports=r})),rl=b(((e,t)=>{var n=tl(),r=function(e,t){n.call(this,e),this.name=`TokenExpiredError`,this.expiredAt=t};r.prototype=Object.create(n.prototype),r.prototype.constructor=r,t.exports=r})),il=b(((e,t)=>{var n=sa();t.exports=function(e,t){var r=t||Math.floor(Date.now()/1e3);if(typeof e==`string`){var i=n(e);return i===void 0?void 0:Math.floor(r+i/1e3)}else if(typeof e==`number`)return r+e;else return}})),al=b(((e,t)=>{t.exports={MAX_LENGTH:256,MAX_SAFE_COMPONENT_LENGTH:16,MAX_SAFE_BUILD_LENGTH:250,MAX_SAFE_INTEGER:2**53-1||9007199254740991,RELEASE_TYPES:[`major`,`premajor`,`minor`,`preminor`,`patch`,`prepatch`,`prerelease`],SEMVER_SPEC_VERSION:`2.0.0`,FLAG_INCLUDE_PRERELEASE:1,FLAG_LOOSE:2}})),ol=b(((e,t)=>{t.exports=typeof process==`object`&&process.env&&process.env.NODE_DEBUG&&/\bsemver\b/i.test(process.env.NODE_DEBUG)?(...e)=>console.error(`SEMVER`,...e):()=>{}})),sl=b(((e,t)=>{let{MAX_SAFE_COMPONENT_LENGTH:n,MAX_SAFE_BUILD_LENGTH:r,MAX_LENGTH:i}=al(),a=ol();e=t.exports={};let o=e.re=[],s=e.safeRe=[],c=e.src=[],l=e.safeSrc=[],u=e.t={},d=0,f=`[a-zA-Z0-9-]`,p=[[`\\s`,1],[`\\d`,i],[f,r]],m=e=>{for(let[t,n]of p)e=e.split(`${t}*`).join(`${t}{0,${n}}`).split(`${t}+`).join(`${t}{1,${n}}`);return e},h=(e,t,n)=>{let r=m(t),i=d++;a(e,i,t),u[e]=i,c[i]=t,l[i]=r,o[i]=new RegExp(t,n?`g`:void 0),s[i]=new RegExp(r,n?`g`:void 0)};h(`NUMERICIDENTIFIER`,`0|[1-9]\\d*`),h(`NUMERICIDENTIFIERLOOSE`,`\\d+`),h(`NONNUMERICIDENTIFIER`,`\\d*[a-zA-Z-]${f}*`),h(`MAINVERSION`,`(${c[u.NUMERICIDENTIFIER]})\\.(${c[u.NUMERICIDENTIFIER]})\\.(${c[u.NUMERICIDENTIFIER]})`),h(`MAINVERSIONLOOSE`,`(${c[u.NUMERICIDENTIFIERLOOSE]})\\.(${c[u.NUMERICIDENTIFIERLOOSE]})\\.(${c[u.NUMERICIDENTIFIERLOOSE]})`),h(`PRERELEASEIDENTIFIER`,`(?:${c[u.NONNUMERICIDENTIFIER]}|${c[u.NUMERICIDENTIFIER]})`),h(`PRERELEASEIDENTIFIERLOOSE`,`(?:${c[u.NONNUMERICIDENTIFIER]}|${c[u.NUMERICIDENTIFIERLOOSE]})`),h(`PRERELEASE`,`(?:-(${c[u.PRERELEASEIDENTIFIER]}(?:\\.${c[u.PRERELEASEIDENTIFIER]})*))`),h(`PRERELEASELOOSE`,`(?:-?(${c[u.PRERELEASEIDENTIFIERLOOSE]}(?:\\.${c[u.PRERELEASEIDENTIFIERLOOSE]})*))`),h(`BUILDIDENTIFIER`,`${f}+`),h(`BUILD`,`(?:\\+(${c[u.BUILDIDENTIFIER]}(?:\\.${c[u.BUILDIDENTIFIER]})*))`),h(`FULLPLAIN`,`v?${c[u.MAINVERSION]}${c[u.PRERELEASE]}?${c[u.BUILD]}?`),h(`FULL`,`^${c[u.FULLPLAIN]}$`),h(`LOOSEPLAIN`,`[v=\\s]*${c[u.MAINVERSIONLOOSE]}${c[u.PRERELEASELOOSE]}?${c[u.BUILD]}?`),h(`LOOSE`,`^${c[u.LOOSEPLAIN]}$`),h(`GTLT`,`((?:<|>)?=?)`),h(`XRANGEIDENTIFIERLOOSE`,`${c[u.NUMERICIDENTIFIERLOOSE]}|x|X|\\*`),h(`XRANGEIDENTIFIER`,`${c[u.NUMERICIDENTIFIER]}|x|X|\\*`),h(`XRANGEPLAIN`,`[v=\\s]*(${c[u.XRANGEIDENTIFIER]})(?:\\.(${c[u.XRANGEIDENTIFIER]})(?:\\.(${c[u.XRANGEIDENTIFIER]})(?:${c[u.PRERELEASE]})?${c[u.BUILD]}?)?)?`),h(`XRANGEPLAINLOOSE`,`[v=\\s]*(${c[u.XRANGEIDENTIFIERLOOSE]})(?:\\.(${c[u.XRANGEIDENTIFIERLOOSE]})(?:\\.(${c[u.XRANGEIDENTIFIERLOOSE]})(?:${c[u.PRERELEASELOOSE]})?${c[u.BUILD]}?)?)?`),h(`XRANGE`,`^${c[u.GTLT]}\\s*${c[u.XRANGEPLAIN]}$`),h(`XRANGELOOSE`,`^${c[u.GTLT]}\\s*${c[u.XRANGEPLAINLOOSE]}$`),h(`COERCEPLAIN`,`(^|[^\\d])(\\d{1,${n}})(?:\\.(\\d{1,${n}}))?(?:\\.(\\d{1,${n}}))?`),h(`COERCE`,`${c[u.COERCEPLAIN]}(?:$|[^\\d])`),h(`COERCEFULL`,c[u.COERCEPLAIN]+`(?:${c[u.PRERELEASE]})?(?:${c[u.BUILD]})?(?:$|[^\\d])`),h(`COERCERTL`,c[u.COERCE],!0),h(`COERCERTLFULL`,c[u.COERCEFULL],!0),h(`LONETILDE`,`(?:~>?)`),h(`TILDETRIM`,`(\\s*)${c[u.LONETILDE]}\\s+`,!0),e.tildeTrimReplace=`$1~`,h(`TILDE`,`^${c[u.LONETILDE]}${c[u.XRANGEPLAIN]}$`),h(`TILDELOOSE`,`^${c[u.LONETILDE]}${c[u.XRANGEPLAINLOOSE]}$`),h(`LONECARET`,`(?:\\^)`),h(`CARETTRIM`,`(\\s*)${c[u.LONECARET]}\\s+`,!0),e.caretTrimReplace=`$1^`,h(`CARET`,`^${c[u.LONECARET]}${c[u.XRANGEPLAIN]}$`),h(`CARETLOOSE`,`^${c[u.LONECARET]}${c[u.XRANGEPLAINLOOSE]}$`),h(`COMPARATORLOOSE`,`^${c[u.GTLT]}\\s*(${c[u.LOOSEPLAIN]})$|^$`),h(`COMPARATOR`,`^${c[u.GTLT]}\\s*(${c[u.FULLPLAIN]})$|^$`),h(`COMPARATORTRIM`,`(\\s*)${c[u.GTLT]}\\s*(${c[u.LOOSEPLAIN]}|${c[u.XRANGEPLAIN]})`,!0),e.comparatorTrimReplace=`$1$2$3`,h(`HYPHENRANGE`,`^\\s*(${c[u.XRANGEPLAIN]})\\s+-\\s+(${c[u.XRANGEPLAIN]})\\s*$`),h(`HYPHENRANGELOOSE`,`^\\s*(${c[u.XRANGEPLAINLOOSE]})\\s+-\\s+(${c[u.XRANGEPLAINLOOSE]})\\s*$`),h(`STAR`,`(<|>)?=?\\s*\\*`),h(`GTE0`,`^\\s*>=\\s*0\\.0\\.0\\s*$`),h(`GTE0PRE`,`^\\s*>=\\s*0\\.0\\.0-0\\s*$`)})),cl=b(((e,t)=>{let n=Object.freeze({loose:!0}),r=Object.freeze({});t.exports=e=>e?typeof e==`object`?e:n:r})),ll=b(((e,t)=>{let n=/^[0-9]+$/,r=(e,t)=>{if(typeof e==`number`&&typeof t==`number`)return e===t?0:er(t,e)}})),ul=b(((e,t)=>{let n=ol(),{MAX_LENGTH:r,MAX_SAFE_INTEGER:i}=al(),{safeRe:a,t:o}=sl(),s=cl(),{compareIdentifiers:c}=ll();t.exports=class e{constructor(t,c){if(c=s(c),t instanceof e){if(t.loose===!!c.loose&&t.includePrerelease===!!c.includePrerelease)return t;t=t.version}else if(typeof t!=`string`)throw TypeError(`Invalid version. Must be a string. Got type "${typeof t}".`);if(t.length>r)throw TypeError(`version is longer than ${r} characters`);n(`SemVer`,t,c),this.options=c,this.loose=!!c.loose,this.includePrerelease=!!c.includePrerelease;let l=t.trim().match(c.loose?a[o.LOOSE]:a[o.FULL]);if(!l)throw TypeError(`Invalid Version: ${t}`);if(this.raw=t,this.major=+l[1],this.minor=+l[2],this.patch=+l[3],this.major>i||this.major<0)throw TypeError(`Invalid major version`);if(this.minor>i||this.minor<0)throw TypeError(`Invalid minor version`);if(this.patch>i||this.patch<0)throw TypeError(`Invalid patch version`);l[4]?this.prerelease=l[4].split(`.`).map(e=>{if(/^[0-9]+$/.test(e)){let t=+e;if(t>=0&&tt.major?1:this.minort.minor?1:this.patcht.patch?1:0}comparePre(t){if(t instanceof e||(t=new e(t,this.options)),this.prerelease.length&&!t.prerelease.length)return-1;if(!this.prerelease.length&&t.prerelease.length)return 1;if(!this.prerelease.length&&!t.prerelease.length)return 0;let r=0;do{let e=this.prerelease[r],i=t.prerelease[r];if(n(`prerelease compare`,r,e,i),e===void 0&&i===void 0)return 0;if(i===void 0)return 1;if(e===void 0)return-1;if(e===i)continue;return c(e,i)}while(++r)}compareBuild(t){t instanceof e||(t=new e(t,this.options));let r=0;do{let e=this.build[r],i=t.build[r];if(n(`build compare`,r,e,i),e===void 0&&i===void 0)return 0;if(i===void 0)return 1;if(e===void 0)return-1;if(e===i)continue;return c(e,i)}while(++r)}inc(e,t,n){if(e.startsWith(`pre`)){if(!t&&n===!1)throw Error(`invalid increment argument: identifier is empty`);if(t){let e=`-${t}`.match(this.options.loose?a[o.PRERELEASELOOSE]:a[o.PRERELEASE]);if(!e||e[1]!==t)throw Error(`invalid identifier: ${t}`)}}switch(e){case`premajor`:this.prerelease.length=0,this.patch=0,this.minor=0,this.major++,this.inc(`pre`,t,n);break;case`preminor`:this.prerelease.length=0,this.patch=0,this.minor++,this.inc(`pre`,t,n);break;case`prepatch`:this.prerelease.length=0,this.inc(`patch`,t,n),this.inc(`pre`,t,n);break;case`prerelease`:this.prerelease.length===0&&this.inc(`patch`,t,n),this.inc(`pre`,t,n);break;case`release`:if(this.prerelease.length===0)throw Error(`version ${this.raw} is not a prerelease`);this.prerelease.length=0;break;case`major`:(this.minor!==0||this.patch!==0||this.prerelease.length===0)&&this.major++,this.minor=0,this.patch=0,this.prerelease=[];break;case`minor`:(this.patch!==0||this.prerelease.length===0)&&this.minor++,this.patch=0,this.prerelease=[];break;case`patch`:this.prerelease.length===0&&this.patch++,this.prerelease=[];break;case`pre`:{let e=Number(n)?1:0;if(this.prerelease.length===0)this.prerelease=[e];else{let r=this.prerelease.length;for(;--r>=0;)typeof this.prerelease[r]==`number`&&(this.prerelease[r]++,r=-2);if(r===-1){if(t===this.prerelease.join(`.`)&&n===!1)throw Error(`invalid increment argument: identifier already exists`);this.prerelease.push(e)}}if(t){let r=[t,e];n===!1&&(r=[t]),c(this.prerelease[0],t)===0?isNaN(this.prerelease[1])&&(this.prerelease=r):this.prerelease=r}break}default:throw Error(`invalid increment argument: ${e}`)}return this.raw=this.format(),this.build.length&&(this.raw+=`+${this.build.join(`.`)}`),this}}})),dl=b(((e,t)=>{let n=ul();t.exports=(e,t,r=!1)=>{if(e instanceof n)return e;try{return new n(e,t)}catch(e){if(!r)return null;throw e}}})),fl=b(((e,t)=>{let n=dl();t.exports=(e,t)=>{let r=n(e,t);return r?r.version:null}})),pl=b(((e,t)=>{let n=dl();t.exports=(e,t)=>{let r=n(e.trim().replace(/^[=v]+/,``),t);return r?r.version:null}})),ml=b(((e,t)=>{let n=ul();t.exports=(e,t,r,i,a)=>{typeof r==`string`&&(a=i,i=r,r=void 0);try{return new n(e instanceof n?e.version:e,r).inc(t,i,a).version}catch{return null}}})),hl=b(((e,t)=>{let n=dl();t.exports=(e,t)=>{let r=n(e,null,!0),i=n(t,null,!0),a=r.compare(i);if(a===0)return null;let o=a>0,s=o?r:i,c=o?i:r,l=!!s.prerelease.length;if(c.prerelease.length&&!l){if(!c.patch&&!c.minor)return`major`;if(c.compareMain(s)===0)return c.minor&&!c.patch?`minor`:`patch`}let u=l?`pre`:``;return r.major===i.major?r.minor===i.minor?r.patch===i.patch?`prerelease`:u+`patch`:u+`minor`:u+`major`}})),gl=b(((e,t)=>{let n=ul();t.exports=(e,t)=>new n(e,t).major})),_l=b(((e,t)=>{let n=ul();t.exports=(e,t)=>new n(e,t).minor})),vl=b(((e,t)=>{let n=ul();t.exports=(e,t)=>new n(e,t).patch})),yl=b(((e,t)=>{let n=dl();t.exports=(e,t)=>{let r=n(e,t);return r&&r.prerelease.length?r.prerelease:null}})),bl=b(((e,t)=>{let n=ul();t.exports=(e,t,r)=>new n(e,r).compare(new n(t,r))})),xl=b(((e,t)=>{let n=bl();t.exports=(e,t,r)=>n(t,e,r)})),Sl=b(((e,t)=>{let n=bl();t.exports=(e,t)=>n(e,t,!0)})),Cl=b(((e,t)=>{let n=ul();t.exports=(e,t,r)=>{let i=new n(e,r),a=new n(t,r);return i.compare(a)||i.compareBuild(a)}})),wl=b(((e,t)=>{let n=Cl();t.exports=(e,t)=>e.sort((e,r)=>n(e,r,t))})),Tl=b(((e,t)=>{let n=Cl();t.exports=(e,t)=>e.sort((e,r)=>n(r,e,t))})),El=b(((e,t)=>{let n=bl();t.exports=(e,t,r)=>n(e,t,r)>0})),Dl=b(((e,t)=>{let n=bl();t.exports=(e,t,r)=>n(e,t,r)<0})),Ol=b(((e,t)=>{let n=bl();t.exports=(e,t,r)=>n(e,t,r)===0})),kl=b(((e,t)=>{let n=bl();t.exports=(e,t,r)=>n(e,t,r)!==0})),Al=b(((e,t)=>{let n=bl();t.exports=(e,t,r)=>n(e,t,r)>=0})),jl=b(((e,t)=>{let n=bl();t.exports=(e,t,r)=>n(e,t,r)<=0})),Ml=b(((e,t)=>{let n=Ol(),r=kl(),i=El(),a=Al(),o=Dl(),s=jl();t.exports=(e,t,c,l)=>{switch(t){case`===`:return typeof e==`object`&&(e=e.version),typeof c==`object`&&(c=c.version),e===c;case`!==`:return typeof e==`object`&&(e=e.version),typeof c==`object`&&(c=c.version),e!==c;case``:case`=`:case`==`:return n(e,c,l);case`!=`:return r(e,c,l);case`>`:return i(e,c,l);case`>=`:return a(e,c,l);case`<`:return o(e,c,l);case`<=`:return s(e,c,l);default:throw TypeError(`Invalid operator: ${t}`)}}})),Nl=b(((e,t)=>{let n=ul(),r=dl(),{safeRe:i,t:a}=sl();t.exports=(e,t)=>{if(e instanceof n)return e;if(typeof e==`number`&&(e=String(e)),typeof e!=`string`)return null;t||={};let o=null;if(!t.rtl)o=e.match(t.includePrerelease?i[a.COERCEFULL]:i[a.COERCE]);else{let n=t.includePrerelease?i[a.COERCERTLFULL]:i[a.COERCERTL],r;for(;(r=n.exec(e))&&(!o||o.index+o[0].length!==e.length);)(!o||r.index+r[0].length!==o.index+o[0].length)&&(o=r),n.lastIndex=r.index+r[1].length+r[2].length;n.lastIndex=-1}if(o===null)return null;let s=o[2];return r(`${s}.${o[3]||`0`}.${o[4]||`0`}${t.includePrerelease&&o[5]?`-${o[5]}`:``}${t.includePrerelease&&o[6]?`+${o[6]}`:``}`,t)}})),Pl=b(((e,t)=>{t.exports=class{constructor(){this.max=1e3,this.map=new Map}get(e){let t=this.map.get(e);if(t!==void 0)return this.map.delete(e),this.map.set(e,t),t}delete(e){return this.map.delete(e)}set(e,t){if(!this.delete(e)&&t!==void 0){if(this.map.size>=this.max){let e=this.map.keys().next().value;this.delete(e)}this.map.set(e,t)}return this}}})),Fl=b(((e,t)=>{let n=/\s+/g;t.exports=class e{constructor(t,r){if(r=i(r),t instanceof e)return t.loose===!!r.loose&&t.includePrerelease===!!r.includePrerelease?t:new e(t.raw,r);if(t instanceof a)return this.raw=t.value,this.set=[[t]],this.formatted=void 0,this;if(this.options=r,this.loose=!!r.loose,this.includePrerelease=!!r.includePrerelease,this.raw=t.trim().replace(n,` `),this.set=this.raw.split(`||`).map(e=>this.parseRange(e.trim())).filter(e=>e.length),!this.set.length)throw TypeError(`Invalid SemVer Range: ${this.raw}`);if(this.set.length>1){let e=this.set[0];if(this.set=this.set.filter(e=>!h(e[0])),this.set.length===0)this.set=[e];else if(this.set.length>1){for(let e of this.set)if(e.length===1&&g(e[0])){this.set=[e];break}}}this.formatted=void 0}get range(){if(this.formatted===void 0){this.formatted=``;for(let e=0;e0&&(this.formatted+=`||`);let t=this.set[e];for(let e=0;e0&&(this.formatted+=` `),this.formatted+=t[e].toString().trim()}}return this.formatted}format(){return this.range}toString(){return this.range}parseRange(e){let t=((this.options.includePrerelease&&p)|(this.options.loose&&m))+`:`+e,n=r.get(t);if(n)return n;let i=this.options.loose,s=i?c[l.HYPHENRANGELOOSE]:c[l.HYPHENRANGE];e=e.replace(s,O(this.options.includePrerelease)),o(`hyphen replace`,e),e=e.replace(c[l.COMPARATORTRIM],u),o(`comparator trim`,e),e=e.replace(c[l.TILDETRIM],d),o(`tilde trim`,e),e=e.replace(c[l.CARETTRIM],f),o(`caret trim`,e);let g=e.split(` `).map(e=>v(e,this.options)).join(` `).split(/\s+/).map(e=>D(e,this.options));i&&(g=g.filter(e=>(o(`loose invalid filter`,e,this.options),!!e.match(c[l.COMPARATORLOOSE])))),o(`range list`,g);let _=new Map,y=g.map(e=>new a(e,this.options));for(let e of y){if(h(e))return[e];_.set(e.value,e)}_.size>1&&_.has(``)&&_.delete(``);let b=[..._.values()];return r.set(t,b),b}intersects(t,n){if(!(t instanceof e))throw TypeError(`a Range is required`);return this.set.some(e=>_(e,n)&&t.set.some(t=>_(t,n)&&e.every(e=>t.every(t=>e.intersects(t,n)))))}test(e){if(!e)return!1;if(typeof e==`string`)try{e=new s(e,this.options)}catch{return!1}for(let t=0;te.value===`<0.0.0-0`,g=e=>e.value===``,_=(e,t)=>{let n=!0,r=e.slice(),i=r.pop();for(;n&&r.length;)n=r.every(e=>i.intersects(e,t)),i=r.pop();return n},v=(e,t)=>(e=e.replace(c[l.BUILD],``),o(`comp`,e,t),e=S(e,t),o(`caret`,e),e=b(e,t),o(`tildes`,e),e=w(e,t),o(`xrange`,e),e=E(e,t),o(`stars`,e),e),y=e=>!e||e.toLowerCase()===`x`||e===`*`,b=(e,t)=>e.trim().split(/\s+/).map(e=>x(e,t)).join(` `),x=(e,t)=>{let n=t.loose?c[l.TILDELOOSE]:c[l.TILDE];return e.replace(n,(t,n,r,i,a)=>{o(`tilde`,e,t,n,r,i,a);let s;return y(n)?s=``:y(r)?s=`>=${n}.0.0 <${+n+1}.0.0-0`:y(i)?s=`>=${n}.${r}.0 <${n}.${+r+1}.0-0`:a?(o(`replaceTilde pr`,a),s=`>=${n}.${r}.${i}-${a} <${n}.${+r+1}.0-0`):s=`>=${n}.${r}.${i} <${n}.${+r+1}.0-0`,o(`tilde return`,s),s})},S=(e,t)=>e.trim().split(/\s+/).map(e=>C(e,t)).join(` `),C=(e,t)=>{o(`caret`,e,t);let n=t.loose?c[l.CARETLOOSE]:c[l.CARET],r=t.includePrerelease?`-0`:``;return e.replace(n,(t,n,i,a,s)=>{o(`caret`,e,t,n,i,a,s);let c;return y(n)?c=``:y(i)?c=`>=${n}.0.0${r} <${+n+1}.0.0-0`:y(a)?c=n===`0`?`>=${n}.${i}.0${r} <${n}.${+i+1}.0-0`:`>=${n}.${i}.0${r} <${+n+1}.0.0-0`:s?(o(`replaceCaret pr`,s),c=n===`0`?i===`0`?`>=${n}.${i}.${a}-${s} <${n}.${i}.${+a+1}-0`:`>=${n}.${i}.${a}-${s} <${n}.${+i+1}.0-0`:`>=${n}.${i}.${a}-${s} <${+n+1}.0.0-0`):(o(`no pr`),c=n===`0`?i===`0`?`>=${n}.${i}.${a}${r} <${n}.${i}.${+a+1}-0`:`>=${n}.${i}.${a}${r} <${n}.${+i+1}.0-0`:`>=${n}.${i}.${a} <${+n+1}.0.0-0`),o(`caret return`,c),c})},w=(e,t)=>(o(`replaceXRanges`,e,t),e.split(/\s+/).map(e=>T(e,t)).join(` `)),T=(e,t)=>{e=e.trim();let n=t.loose?c[l.XRANGELOOSE]:c[l.XRANGE];return e.replace(n,(n,r,i,a,s,c)=>{o(`xRange`,e,n,r,i,a,s,c);let l=y(i),u=l||y(a),d=u||y(s),f=d;return r===`=`&&f&&(r=``),c=t.includePrerelease?`-0`:``,l?n=r===`>`||r===`<`?`<0.0.0-0`:`*`:r&&f?(u&&(a=0),s=0,r===`>`?(r=`>=`,u?(i=+i+1,a=0,s=0):(a=+a+1,s=0)):r===`<=`&&(r=`<`,u?i=+i+1:a=+a+1),r===`<`&&(c=`-0`),n=`${r+i}.${a}.${s}${c}`):u?n=`>=${i}.0.0${c} <${+i+1}.0.0-0`:d&&(n=`>=${i}.${a}.0${c} <${i}.${+a+1}.0-0`),o(`xRange return`,n),n})},E=(e,t)=>(o(`replaceStars`,e,t),e.trim().replace(c[l.STAR],``)),D=(e,t)=>(o(`replaceGTE0`,e,t),e.trim().replace(c[t.includePrerelease?l.GTE0PRE:l.GTE0],``)),O=e=>(t,n,r,i,a,o,s,c,l,u,d,f)=>(n=y(r)?``:y(i)?`>=${r}.0.0${e?`-0`:``}`:y(a)?`>=${r}.${i}.0${e?`-0`:``}`:o?`>=${n}`:`>=${n}${e?`-0`:``}`,c=y(l)?``:y(u)?`<${+l+1}.0.0-0`:y(d)?`<${l}.${+u+1}.0-0`:f?`<=${l}.${u}.${d}-${f}`:e?`<${l}.${u}.${+d+1}-0`:`<=${c}`,`${n} ${c}`.trim()),k=(e,t,n)=>{for(let n=0;n0){let r=e[n].semver;if(r.major===t.major&&r.minor===t.minor&&r.patch===t.patch)return!0}return!1}return!0}})),Il=b(((e,t)=>{let n=Symbol(`SemVer ANY`);t.exports=class e{static get ANY(){return n}constructor(t,i){if(i=r(i),t instanceof e){if(t.loose===!!i.loose)return t;t=t.value}t=t.trim().split(/\s+/).join(` `),s(`comparator`,t,i),this.options=i,this.loose=!!i.loose,this.parse(t),this.semver===n?this.value=``:this.value=this.operator+this.semver.version,s(`comp`,this)}parse(e){let t=this.options.loose?i[a.COMPARATORLOOSE]:i[a.COMPARATOR],r=e.match(t);if(!r)throw TypeError(`Invalid comparator: ${e}`);this.operator=r[1]===void 0?``:r[1],this.operator===`=`&&(this.operator=``),r[2]?this.semver=new c(r[2],this.options.loose):this.semver=n}toString(){return this.value}test(e){if(s(`Comparator.test`,e,this.options.loose),this.semver===n||e===n)return!0;if(typeof e==`string`)try{e=new c(e,this.options)}catch{return!1}return o(e,this.operator,this.semver,this.options)}intersects(t,n){if(!(t instanceof e))throw TypeError(`a Comparator is required`);return this.operator===``?this.value===``?!0:new l(t.value,n).test(this.value):t.operator===``?t.value===``?!0:new l(this.value,n).test(t.semver):(n=r(n),n.includePrerelease&&(this.value===`<0.0.0-0`||t.value===`<0.0.0-0`)||!n.includePrerelease&&(this.value.startsWith(`<0.0.0`)||t.value.startsWith(`<0.0.0`))?!1:!!(this.operator.startsWith(`>`)&&t.operator.startsWith(`>`)||this.operator.startsWith(`<`)&&t.operator.startsWith(`<`)||this.semver.version===t.semver.version&&this.operator.includes(`=`)&&t.operator.includes(`=`)||o(this.semver,`<`,t.semver,n)&&this.operator.startsWith(`>`)&&t.operator.startsWith(`<`)||o(this.semver,`>`,t.semver,n)&&this.operator.startsWith(`<`)&&t.operator.startsWith(`>`)))}};let r=cl(),{safeRe:i,t:a}=sl(),o=Ml(),s=ol(),c=ul(),l=Fl()})),Ll=b(((e,t)=>{let n=Fl();t.exports=(e,t,r)=>{try{t=new n(t,r)}catch{return!1}return t.test(e)}})),Rl=b(((e,t)=>{let n=Fl();t.exports=(e,t)=>new n(e,t).set.map(e=>e.map(e=>e.value).join(` `).trim().split(` `))})),zl=b(((e,t)=>{let n=ul(),r=Fl();t.exports=(e,t,i)=>{let a=null,o=null,s=null;try{s=new r(t,i)}catch{return null}return e.forEach(e=>{s.test(e)&&(!a||o.compare(e)===-1)&&(a=e,o=new n(a,i))}),a}})),Bl=b(((e,t)=>{let n=ul(),r=Fl();t.exports=(e,t,i)=>{let a=null,o=null,s=null;try{s=new r(t,i)}catch{return null}return e.forEach(e=>{s.test(e)&&(!a||o.compare(e)===1)&&(a=e,o=new n(a,i))}),a}})),Vl=b(((e,t)=>{let n=ul(),r=Fl(),i=El();t.exports=(e,t)=>{e=new r(e,t);let a=new n(`0.0.0`);if(e.test(a)||(a=new n(`0.0.0-0`),e.test(a)))return a;a=null;for(let t=0;t{let t=new n(e.semver.version);switch(e.operator){case`>`:t.prerelease.length===0?t.patch++:t.prerelease.push(0),t.raw=t.format();case``:case`>=`:(!o||i(t,o))&&(o=t);break;case`<`:case`<=`:break;default:throw Error(`Unexpected operation: ${e.operator}`)}}),o&&(!a||i(a,o))&&(a=o)}return a&&e.test(a)?a:null}})),Hl=b(((e,t)=>{let n=Fl();t.exports=(e,t)=>{try{return new n(e,t).range||`*`}catch{return null}}})),Ul=b(((e,t)=>{let n=ul(),r=Il(),{ANY:i}=r,a=Fl(),o=Ll(),s=El(),c=Dl(),l=jl(),u=Al();t.exports=(e,t,d,f)=>{e=new n(e,f),t=new a(t,f);let p,m,h,g,_;switch(d){case`>`:p=s,m=l,h=c,g=`>`,_=`>=`;break;case`<`:p=c,m=u,h=s,g=`<`,_=`<=`;break;default:throw TypeError(`Must provide a hilo val of "<" or ">"`)}if(o(e,t,f))return!1;for(let n=0;n{e.semver===i&&(e=new r(`>=0.0.0`)),o||=e,s||=e,p(e.semver,o.semver,f)?o=e:h(e.semver,s.semver,f)&&(s=e)}),o.operator===g||o.operator===_||(!s.operator||s.operator===g)&&m(e,s.semver)||s.operator===_&&h(e,s.semver))return!1}return!0}})),Wl=b(((e,t)=>{let n=Ul();t.exports=(e,t,r)=>n(e,t,`>`,r)})),Gl=b(((e,t)=>{let n=Ul();t.exports=(e,t,r)=>n(e,t,`<`,r)})),Kl=b(((e,t)=>{let n=Fl();t.exports=(e,t,r)=>(e=new n(e,r),t=new n(t,r),e.intersects(t,r))})),ql=b(((e,t)=>{let n=Ll(),r=bl();t.exports=(e,t,i)=>{let a=[],o=null,s=null,c=e.sort((e,t)=>r(e,t,i));for(let e of c)n(e,t,i)?(s=e,o||=e):(s&&a.push([o,s]),s=null,o=null);o&&a.push([o,null]);let l=[];for(let[e,t]of a)e===t?l.push(e):!t&&e===c[0]?l.push(`*`):t?e===c[0]?l.push(`<=${t}`):l.push(`${e} - ${t}`):l.push(`>=${e}`);let u=l.join(` || `),d=typeof t.raw==`string`?t.raw:String(t);return u.length{let n=Fl(),r=Il(),{ANY:i}=r,a=Ll(),o=bl(),s=(e,t,r={})=>{if(e===t)return!0;e=new n(e,r),t=new n(t,r);let i=!1;OUTER:for(let n of e.set){for(let e of t.set){let t=u(n,e,r);if(i||=t!==null,t)continue OUTER}if(i)return!1}return!0},c=[new r(`>=0.0.0-0`)],l=[new r(`>=0.0.0`)],u=(e,t,n)=>{if(e===t)return!0;if(e.length===1&&e[0].semver===i){if(t.length===1&&t[0].semver===i)return!0;e=n.includePrerelease?c:l}if(t.length===1&&t[0].semver===i){if(n.includePrerelease)return!0;t=l}let r=new Set,s,u;for(let t of e)t.operator===`>`||t.operator===`>=`?s=d(s,t,n):t.operator===`<`||t.operator===`<=`?u=f(u,t,n):r.add(t.semver);if(r.size>1)return null;let p;if(s&&u&&(p=o(s.semver,u.semver,n),p>0||p===0&&(s.operator!==`>=`||u.operator!==`<=`)))return null;for(let e of r){if(s&&!a(e,String(s),n)||u&&!a(e,String(u),n))return null;for(let r of t)if(!a(e,String(r),n))return!1;return!0}let m,h,g,_,v=u&&!n.includePrerelease&&u.semver.prerelease.length?u.semver:!1,y=s&&!n.includePrerelease&&s.semver.prerelease.length?s.semver:!1;v&&v.prerelease.length===1&&u.operator===`<`&&v.prerelease[0]===0&&(v=!1);for(let e of t){if(_=_||e.operator===`>`||e.operator===`>=`,g=g||e.operator===`<`||e.operator===`<=`,s){if(y&&e.semver.prerelease&&e.semver.prerelease.length&&e.semver.major===y.major&&e.semver.minor===y.minor&&e.semver.patch===y.patch&&(y=!1),e.operator===`>`||e.operator===`>=`){if(m=d(s,e,n),m===e&&m!==s)return!1}else if(s.operator===`>=`&&!a(s.semver,String(e),n))return!1}if(u){if(v&&e.semver.prerelease&&e.semver.prerelease.length&&e.semver.major===v.major&&e.semver.minor===v.minor&&e.semver.patch===v.patch&&(v=!1),e.operator===`<`||e.operator===`<=`){if(h=f(u,e,n),h===e&&h!==u)return!1}else if(u.operator===`<=`&&!a(u.semver,String(e),n))return!1}if(!e.operator&&(u||s)&&p!==0)return!1}return!(s&&g&&!u&&p!==0||u&&_&&!s&&p!==0||y||v)},d=(e,t,n)=>{if(!e)return t;let r=o(e.semver,t.semver,n);return r>0?e:r<0||t.operator===`>`&&e.operator===`>=`?t:e},f=(e,t,n)=>{if(!e)return t;let r=o(e.semver,t.semver,n);return r<0?e:r>0||t.operator===`<`&&e.operator===`<=`?t:e};t.exports=s})),Yl=b(((e,t)=>{let n=sl(),r=al(),i=ul(),a=ll();t.exports={parse:dl(),valid:fl(),clean:pl(),inc:ml(),diff:hl(),major:gl(),minor:_l(),patch:vl(),prerelease:yl(),compare:bl(),rcompare:xl(),compareLoose:Sl(),compareBuild:Cl(),sort:wl(),rsort:Tl(),gt:El(),lt:Dl(),eq:Ol(),neq:kl(),gte:Al(),lte:jl(),cmp:Ml(),coerce:Nl(),Comparator:Il(),Range:Fl(),satisfies:Ll(),toComparators:Rl(),maxSatisfying:zl(),minSatisfying:Bl(),minVersion:Vl(),validRange:Hl(),outside:Ul(),gtr:Wl(),ltr:Gl(),intersects:Kl(),simplifyRange:ql(),subset:Jl(),SemVer:i,re:n.re,src:n.src,tokens:n.t,SEMVER_SPEC_VERSION:r.SEMVER_SPEC_VERSION,RELEASE_TYPES:r.RELEASE_TYPES,compareIdentifiers:a.compareIdentifiers,rcompareIdentifiers:a.rcompareIdentifiers}})),Xl=b(((e,t)=>{t.exports=Yl().satisfies(process.version,`>=15.7.0`)})),Zl=b(((e,t)=>{t.exports=Yl().satisfies(process.version,`>=16.9.0`)})),Ql=b(((e,t)=>{let n=Xl(),r=Zl(),i={ec:[`ES256`,`ES384`,`ES512`],rsa:[`RS256`,`PS256`,`RS384`,`PS384`,`RS512`,`PS512`],"rsa-pss":[`PS256`,`PS384`,`PS512`]},a={ES256:`prime256v1`,ES384:`secp384r1`,ES512:`secp521r1`};t.exports=function(e,t){if(!e||!t)return;let o=t.asymmetricKeyType;if(!o)return;let s=i[o];if(!s)throw Error(`Unknown key type "${o}".`);if(!s.includes(e))throw Error(`"alg" parameter for "${o}" key type must be one of: ${s.join(`, `)}.`);if(n)switch(o){case`ec`:let n=t.asymmetricKeyDetails.namedCurve,i=a[e];if(n!==i)throw Error(`"alg" parameter "${e}" requires curve "${i}".`);break;case`rsa-pss`:if(r){let n=parseInt(e.slice(-3),10),{hashAlgorithm:r,mgf1HashAlgorithm:i,saltLength:a}=t.asymmetricKeyDetails;if(r!==`sha${n}`||i!==r)throw Error(`Invalid key for this operation, its RSA-PSS parameters do not meet the requirements of "alg" ${e}.`);if(a!==void 0&&a>n>>3)throw Error(`Invalid key for this operation, its RSA-PSS parameter saltLength does not meet the requirements of "alg" ${e}.`)}break}}})),$l=b(((e,t)=>{t.exports=Yl().satisfies(process.version,`^6.12.0 || >=8.0.0`)})),eu=b(((e,t)=>{let n=tl(),r=nl(),i=rl(),a=el(),o=il(),s=Ql(),c=$l(),l=$c(),{KeyObject:u,createSecretKey:d,createPublicKey:f}=T(`crypto`),p=[`RS256`,`RS384`,`RS512`],m=[`ES256`,`ES384`,`ES512`],h=[`RS256`,`RS384`,`RS512`],g=[`HS256`,`HS384`,`HS512`];c&&(p.splice(p.length,0,`PS256`,`PS384`,`PS512`),h.splice(h.length,0,`PS256`,`PS384`,`PS512`)),t.exports=function(e,t,c,_){typeof c==`function`&&!_&&(_=c,c={}),c||={},c=Object.assign({},c);let v;if(v=_||function(e,t){if(e)throw e;return t},c.clockTimestamp&&typeof c.clockTimestamp!=`number`)return v(new n(`clockTimestamp must be a number`));if(c.nonce!==void 0&&(typeof c.nonce!=`string`||c.nonce.trim()===``))return v(new n(`nonce must be a non-empty string`));if(c.allowInvalidAsymmetricKeyTypes!==void 0&&typeof c.allowInvalidAsymmetricKeyTypes!=`boolean`)return v(new n(`allowInvalidAsymmetricKeyTypes must be a boolean`));let y=c.clockTimestamp||Math.floor(Date.now()/1e3);if(!e)return v(new n(`jwt must be provided`));if(typeof e!=`string`)return v(new n(`jwt must be a string`));let b=e.split(`.`);if(b.length!==3)return v(new n(`jwt malformed`));let x;try{x=a(e,{complete:!0})}catch(e){return v(e)}if(!x)return v(new n(`invalid token`));let S=x.header,C;if(typeof t==`function`){if(!_)return v(new n(`verify must be called asynchronous if secret or public key is provided as a callback`));C=t}else C=function(e,n){return n(null,t)};return C(S,function(t,a){if(t)return v(new n(`error in secret or public key callback: `+t.message));let _=b[2].trim()!==``;if(!_&&a)return v(new n(`jwt signature is required`));if(_&&!a)return v(new n(`secret or public key must be provided`));if(!_&&!c.algorithms)return v(new n(`please specify "none" in "algorithms" to verify unsigned tokens`));if(a!=null&&!(a instanceof u))try{a=f(a)}catch{try{a=d(typeof a==`string`?Buffer.from(a):a)}catch{return v(new n(`secretOrPublicKey is not valid key material`))}}if(c.algorithms||(a.type===`secret`?c.algorithms=g:[`rsa`,`rsa-pss`].includes(a.asymmetricKeyType)?c.algorithms=h:a.asymmetricKeyType===`ec`?c.algorithms=m:c.algorithms=p),c.algorithms.indexOf(x.header.alg)===-1)return v(new n(`invalid algorithm`));if(S.alg.startsWith(`HS`)&&a.type!==`secret`)return v(new n(`secretOrPublicKey must be a symmetric key when using ${S.alg}`));if(/^(?:RS|PS|ES)/.test(S.alg)&&a.type!==`public`)return v(new n(`secretOrPublicKey must be an asymmetric key when using ${S.alg}`));if(!c.allowInvalidAsymmetricKeyTypes)try{s(S.alg,a)}catch(e){return v(e)}let C;try{C=l.verify(e,x.header.alg,a)}catch(e){return v(e)}if(!C)return v(new n(`invalid signature`));let w=x.payload;if(w.nbf!==void 0&&!c.ignoreNotBefore){if(typeof w.nbf!=`number`)return v(new n(`invalid nbf value`));if(w.nbf>y+(c.clockTolerance||0))return v(new r(`jwt not active`,new Date(w.nbf*1e3)))}if(w.exp!==void 0&&!c.ignoreExpiration){if(typeof w.exp!=`number`)return v(new n(`invalid exp value`));if(y>=w.exp+(c.clockTolerance||0))return v(new i(`jwt expired`,new Date(w.exp*1e3)))}if(c.audience){let e=Array.isArray(c.audience)?c.audience:[c.audience];if(!(Array.isArray(w.aud)?w.aud:[w.aud]).some(function(t){return e.some(function(e){return e instanceof RegExp?e.test(t):e===t})}))return v(new n(`jwt audience invalid. expected: `+e.join(` or `)))}if(c.issuer&&(typeof c.issuer==`string`&&w.iss!==c.issuer||Array.isArray(c.issuer)&&c.issuer.indexOf(w.iss)===-1))return v(new n(`jwt issuer invalid. expected: `+c.issuer));if(c.subject&&w.sub!==c.subject)return v(new n(`jwt subject invalid. expected: `+c.subject));if(c.jwtid&&w.jti!==c.jwtid)return v(new n(`jwt jwtid invalid. expected: `+c.jwtid));if(c.nonce&&w.nonce!==c.nonce)return v(new n(`jwt nonce invalid. expected: `+c.nonce));if(c.maxAge){if(typeof w.iat!=`number`)return v(new n(`iat required when maxAge is specified`));let e=o(c.maxAge,w.iat);if(e===void 0)return v(new n(`"maxAge" should be a number of seconds or string representing a timespan eg: "1d", "20h", 60`));if(y>=e+(c.clockTolerance||0))return v(new i(`maxAge exceeded`,new Date(e*1e3)))}if(c.complete===!0){let e=x.signature;return v(null,{header:S,payload:w,signature:e})}return v(null,w)})}})),tu=b(((e,t)=>{var n=1/0,r=9007199254740991,i=17976931348623157e292,a=NaN,o=`[object Arguments]`,s=`[object Function]`,c=`[object GeneratorFunction]`,l=`[object String]`,u=`[object Symbol]`,d=/^\s+|\s+$/g,f=/^[-+]0x[0-9a-f]+$/i,p=/^0b[01]+$/i,m=/^0o[0-7]+$/i,h=/^(?:0|[1-9]\d*)$/,g=parseInt;function _(e,t){for(var n=-1,r=e?e.length:0,i=Array(r);++n-1&&e%1==0&&e-1:!!i&&y(e,t,n)>-1}function P(e){return L(e)&&T.call(e,`callee`)&&(!D.call(e,`callee`)||E.call(e)==o)}var F=Array.isArray;function I(e){return e!=null&&z(e.length)&&!R(e)}function L(e){return V(e)&&I(e)}function R(e){var t=B(e)?E.call(e):``;return t==s||t==c}function z(e){return typeof e==`number`&&e>-1&&e%1==0&&e<=r}function B(e){var t=typeof e;return!!e&&(t==`object`||t==`function`)}function V(e){return!!e&&typeof e==`object`}function te(e){return typeof e==`string`||!F(e)&&V(e)&&E.call(e)==l}function H(e){return typeof e==`symbol`||V(e)&&E.call(e)==u}function ne(e){return e?(e=U(e),e===n||e===-n?(e<0?-1:1)*i:e===e?e:0):e===0?e:0}function re(e){var t=ne(e),n=t%1;return t===t?n?t-n:t:0}function U(e){if(typeof e==`number`)return e;if(H(e))return a;if(B(e)){var t=typeof e.valueOf==`function`?e.valueOf():e;e=B(t)?t+``:t}if(typeof e!=`string`)return e===0?e:+e;e=e.replace(d,``);var n=p.test(e);return n||m.test(e)?g(e.slice(2),n?2:8):f.test(e)?a:+e}function ie(e){return I(e)?A(e):j(e)}function W(e){return e?S(e,ie(e)):[]}t.exports=ee})),nu=b(((e,t)=>{var n=`[object Boolean]`,r=Object.prototype.toString;function i(e){return e===!0||e===!1||a(e)&&r.call(e)==n}function a(e){return!!e&&typeof e==`object`}t.exports=i})),ru=b(((e,t)=>{var n=1/0,r=17976931348623157e292,i=NaN,a=`[object Symbol]`,o=/^\s+|\s+$/g,s=/^[-+]0x[0-9a-f]+$/i,c=/^0b[01]+$/i,l=/^0o[0-7]+$/i,u=parseInt,d=Object.prototype.toString;function f(e){return typeof e==`number`&&e==_(e)}function p(e){var t=typeof e;return!!e&&(t==`object`||t==`function`)}function m(e){return!!e&&typeof e==`object`}function h(e){return typeof e==`symbol`||m(e)&&d.call(e)==a}function g(e){return e?(e=v(e),e===n||e===-n?(e<0?-1:1)*r:e===e?e:0):e===0?e:0}function _(e){var t=g(e),n=t%1;return t===t?n?t-n:t:0}function v(e){if(typeof e==`number`)return e;if(h(e))return i;if(p(e)){var t=typeof e.valueOf==`function`?e.valueOf():e;e=p(t)?t+``:t}if(typeof e!=`string`)return e===0?e:+e;e=e.replace(o,``);var n=c.test(e);return n||l.test(e)?u(e.slice(2),n?2:8):s.test(e)?i:+e}t.exports=f})),iu=b(((e,t)=>{var n=`[object Number]`,r=Object.prototype.toString;function i(e){return!!e&&typeof e==`object`}function a(e){return typeof e==`number`||i(e)&&r.call(e)==n}t.exports=a})),au=b(((e,t)=>{var n=`[object Object]`;function r(e){var t=!1;if(e!=null&&typeof e.toString!=`function`)try{t=!!(e+``)}catch{}return t}function i(e,t){return function(n){return e(t(n))}}var a=Function.prototype,o=Object.prototype,s=a.toString,c=o.hasOwnProperty,l=s.call(Object),u=o.toString,d=i(Object.getPrototypeOf,Object);function f(e){return!!e&&typeof e==`object`}function p(e){if(!f(e)||u.call(e)!=n||r(e))return!1;var t=d(e);if(t===null)return!0;var i=c.call(t,`constructor`)&&t.constructor;return typeof i==`function`&&i instanceof i&&s.call(i)==l}t.exports=p})),ou=b(((e,t)=>{var n=`[object String]`,r=Object.prototype.toString,i=Array.isArray;function a(e){return!!e&&typeof e==`object`}function o(e){return typeof e==`string`||!i(e)&&a(e)&&r.call(e)==n}t.exports=o})),su=b(((e,t)=>{var n=`Expected a function`,r=1/0,i=17976931348623157e292,a=NaN,o=`[object Symbol]`,s=/^\s+|\s+$/g,c=/^[-+]0x[0-9a-f]+$/i,l=/^0b[01]+$/i,u=/^0o[0-7]+$/i,d=parseInt,f=Object.prototype.toString;function p(e,t){var r;if(typeof t!=`function`)throw TypeError(n);return e=y(e),function(){return--e>0&&(r=t.apply(this,arguments)),e<=1&&(t=void 0),r}}function m(e){return p(2,e)}function h(e){var t=typeof e;return!!e&&(t==`object`||t==`function`)}function g(e){return!!e&&typeof e==`object`}function _(e){return typeof e==`symbol`||g(e)&&f.call(e)==o}function v(e){return e?(e=b(e),e===r||e===-r?(e<0?-1:1)*i:e===e?e:0):e===0?e:0}function y(e){var t=v(e),n=t%1;return t===t?n?t-n:t:0}function b(e){if(typeof e==`number`)return e;if(_(e))return a;if(h(e)){var t=typeof e.valueOf==`function`?e.valueOf():e;e=h(t)?t+``:t}if(typeof e!=`string`)return e===0?e:+e;e=e.replace(s,``);var n=l.test(e);return n||u.test(e)?d(e.slice(2),n?2:8):c.test(e)?a:+e}t.exports=m})),cu=b(((e,t)=>{let n=il(),r=$l(),i=Ql(),a=$c(),o=tu(),s=nu(),c=ru(),l=iu(),u=au(),d=ou(),f=su(),{KeyObject:p,createSecretKey:m,createPrivateKey:h}=T(`crypto`),g=[`RS256`,`RS384`,`RS512`,`ES256`,`ES384`,`ES512`,`HS256`,`HS384`,`HS512`,`none`];r&&g.splice(3,0,`PS256`,`PS384`,`PS512`);let _={expiresIn:{isValid:function(e){return c(e)||d(e)&&e},message:`"expiresIn" should be a number of seconds or string representing a timespan`},notBefore:{isValid:function(e){return c(e)||d(e)&&e},message:`"notBefore" should be a number of seconds or string representing a timespan`},audience:{isValid:function(e){return d(e)||Array.isArray(e)},message:`"audience" must be a string or array`},algorithm:{isValid:o.bind(null,g),message:`"algorithm" must be a valid string enum value`},header:{isValid:u,message:`"header" must be an object`},encoding:{isValid:d,message:`"encoding" must be a string`},issuer:{isValid:d,message:`"issuer" must be a string`},subject:{isValid:d,message:`"subject" must be a string`},jwtid:{isValid:d,message:`"jwtid" must be a string`},noTimestamp:{isValid:s,message:`"noTimestamp" must be a boolean`},keyid:{isValid:d,message:`"keyid" must be a string`},mutatePayload:{isValid:s,message:`"mutatePayload" must be a boolean`},allowInsecureKeySizes:{isValid:s,message:`"allowInsecureKeySizes" must be a boolean`},allowInvalidAsymmetricKeyTypes:{isValid:s,message:`"allowInvalidAsymmetricKeyTypes" must be a boolean`}},v={iat:{isValid:l,message:`"iat" should be a number of seconds`},exp:{isValid:l,message:`"exp" should be a number of seconds`},nbf:{isValid:l,message:`"nbf" should be a number of seconds`}};function y(e,t,n,r){if(!u(n))throw Error(`Expected "`+r+`" to be a plain object.`);Object.keys(n).forEach(function(i){let a=e[i];if(!a){if(!t)throw Error(`"`+i+`" is not allowed in "`+r+`"`);return}if(!a.isValid(n[i]))throw Error(a.message)})}function b(e){return y(_,!1,e,`options`)}function x(e){return y(v,!0,e,`payload`)}let S={audience:`aud`,issuer:`iss`,subject:`sub`,jwtid:`jti`},C=[`expiresIn`,`notBefore`,`noTimestamp`,`audience`,`issuer`,`subject`,`jwtid`];t.exports=function(e,t,r,o){typeof r==`function`?(o=r,r={}):r||={};let s=typeof e==`object`&&!Buffer.isBuffer(e),c=Object.assign({alg:r.algorithm||`HS256`,typ:s?`JWT`:void 0,kid:r.keyid},r.header);function l(e){if(o)return o(e);throw e}if(!t&&r.algorithm!==`none`)return l(Error(`secretOrPrivateKey must have a value`));if(t!=null&&!(t instanceof p))try{t=h(t)}catch{try{t=m(typeof t==`string`?Buffer.from(t):t)}catch{return l(Error(`secretOrPrivateKey is not valid key material`))}}if(c.alg.startsWith(`HS`)&&t.type!==`secret`)return l(Error(`secretOrPrivateKey must be a symmetric key when using ${c.alg}`));if(/^(?:RS|PS|ES)/.test(c.alg)){if(t.type!==`private`)return l(Error(`secretOrPrivateKey must be an asymmetric key when using ${c.alg}`));if(!r.allowInsecureKeySizes&&!c.alg.startsWith(`ES`)&&t.asymmetricKeyDetails!==void 0&&t.asymmetricKeyDetails.modulusLength<2048)return l(Error(`secretOrPrivateKey has a minimum key size of 2048 bits for ${c.alg}`))}if(e===void 0)return l(Error(`payload is required`));if(s){try{x(e)}catch(e){return l(e)}r.mutatePayload||(e=Object.assign({},e))}else{let t=C.filter(function(e){return r[e]!==void 0});if(t.length>0)return l(Error(`invalid `+t.join(`,`)+` option for `+typeof e+` payload`))}if(e.exp!==void 0&&r.expiresIn!==void 0)return l(Error(`Bad "options.expiresIn" option the payload already has an "exp" property.`));if(e.nbf!==void 0&&r.notBefore!==void 0)return l(Error(`Bad "options.notBefore" option the payload already has an "nbf" property.`));try{b(r)}catch(e){return l(e)}if(!r.allowInvalidAsymmetricKeyTypes)try{i(c.alg,t)}catch(e){return l(e)}let u=e.iat||Math.floor(Date.now()/1e3);if(r.noTimestamp?delete e.iat:s&&(e.iat=u),r.notBefore!==void 0){try{e.nbf=n(r.notBefore,u)}catch(e){return l(e)}if(e.nbf===void 0)return l(Error(`"notBefore" should be a number of seconds or string representing a timespan eg: "1d", "20h", 60`))}if(r.expiresIn!==void 0&&typeof e==`object`){try{e.exp=n(r.expiresIn,u)}catch(e){return l(e)}if(e.exp===void 0)return l(Error(`"expiresIn" should be a number of seconds or string representing a timespan eg: "1d", "20h", 60`))}Object.keys(S).forEach(function(t){let n=S[t];if(r[t]!==void 0){if(e[n]!==void 0)return l(Error(`Bad "options.`+t+`" option. The payload already has an "`+n+`" property.`));e[n]=r[t]}});let d=r.encoding||`utf8`;if(typeof o==`function`)o&&=f(o),a.createSign({header:c,privateKey:t,payload:e,encoding:d}).once(`error`,o).once(`done`,function(e){if(!r.allowInsecureKeySizes&&/^(?:RS|PS)/.test(c.alg)&&e.length<256)return o(Error(`secretOrPrivateKey has a minimum key size of 2048 bits for ${c.alg}`));o(null,e)});else{let n=a.sign({header:c,payload:e,secret:t,encoding:d});if(!r.allowInsecureKeySizes&&/^(?:RS|PS)/.test(c.alg)&&n.length<256)throw Error(`secretOrPrivateKey has a minimum key size of 2048 bits for ${c.alg}`);return n}}})),lu=b(((e,t)=>{t.exports={decode:el(),verify:eu(),sign:cu(),JsonWebTokenError:tl(),NotBeforeError:nl(),TokenExpiredError:rl()}})),uu=b((e=>{var t=T(`http`),n=T(`https`),r=(Bc(),w(zc)),i=T(`crypto`),a=Uc(),o=lu(),s=T(`fs`),c=T(`path`),l=class{static serializeJSONBlob(e){return JSON.stringify(e)}static serializeAccounts(e){let t={};return Object.keys(e).map(function(n){let r=e[n];t[n]={home_account_id:r.homeAccountId,environment:r.environment,realm:r.realm,local_account_id:r.localAccountId,username:r.username,authority_type:r.authorityType,name:r.name,client_info:r.clientInfo,last_modification_time:r.lastModificationTime,last_modification_app:r.lastModificationApp,tenantProfiles:r.tenantProfiles?.map(e=>JSON.stringify(e))}}),t}static serializeIdTokens(e){let t={};return Object.keys(e).map(function(n){let r=e[n];t[n]={home_account_id:r.homeAccountId,environment:r.environment,credential_type:r.credentialType,client_id:r.clientId,secret:r.secret,realm:r.realm}}),t}static serializeAccessTokens(e){let t={};return Object.keys(e).map(function(n){let r=e[n];t[n]={home_account_id:r.homeAccountId,environment:r.environment,credential_type:r.credentialType,client_id:r.clientId,secret:r.secret,realm:r.realm,target:r.target,cached_at:r.cachedAt,expires_on:r.expiresOn,extended_expires_on:r.extendedExpiresOn,refresh_on:r.refreshOn,key_id:r.keyId,token_type:r.tokenType,requestedClaims:r.requestedClaims,requestedClaimsHash:r.requestedClaimsHash,userAssertionHash:r.userAssertionHash}}),t}static serializeRefreshTokens(e){let t={};return Object.keys(e).map(function(n){let r=e[n];t[n]={home_account_id:r.homeAccountId,environment:r.environment,credential_type:r.credentialType,client_id:r.clientId,secret:r.secret,family_id:r.familyId,target:r.target,realm:r.realm}}),t}static serializeAppMetadata(e){let t={};return Object.keys(e).map(function(n){let r=e[n];t[n]={client_id:r.clientId,environment:r.environment,family_id:r.familyId}}),t}static serializeAllCache(e){return{Account:this.serializeAccounts(e.accounts),IdToken:this.serializeIdTokens(e.idTokens),AccessToken:this.serializeAccessTokens(e.accessTokens),RefreshToken:this.serializeRefreshTokens(e.refreshTokens),AppMetadata:this.serializeAppMetadata(e.appMetadata)}}}; +/*! @azure/msal-common v15.13.2 2025-11-19 */ +let u={LIBRARY_NAME:`MSAL.JS`,SKU:`msal.js.common`,DEFAULT_AUTHORITY:`https://login.microsoftonline.com/common/`,DEFAULT_AUTHORITY_HOST:`login.microsoftonline.com`,DEFAULT_COMMON_TENANT:`common`,ADFS:`adfs`,DSTS:`dstsv2`,AAD_INSTANCE_DISCOVERY_ENDPT:`https://login.microsoftonline.com/common/discovery/instance?api-version=1.1&authorization_endpoint=`,CIAM_AUTH_URL:`.ciamlogin.com`,AAD_TENANT_DOMAIN_SUFFIX:`.onmicrosoft.com`,RESOURCE_DELIM:`|`,NO_ACCOUNT:`NO_ACCOUNT`,CLAIMS:`claims`,CONSUMER_UTID:`9188040d-6c67-4c5b-b112-36a304b66dad`,OPENID_SCOPE:`openid`,PROFILE_SCOPE:`profile`,OFFLINE_ACCESS_SCOPE:`offline_access`,EMAIL_SCOPE:`email`,CODE_GRANT_TYPE:`authorization_code`,RT_GRANT_TYPE:`refresh_token`,S256_CODE_CHALLENGE_METHOD:`S256`,URL_FORM_CONTENT_TYPE:`application/x-www-form-urlencoded;charset=utf-8`,AUTHORIZATION_PENDING:`authorization_pending`,NOT_DEFINED:`not_defined`,EMPTY_STRING:``,NOT_APPLICABLE:`N/A`,NOT_AVAILABLE:`Not Available`,FORWARD_SLASH:`/`,IMDS_ENDPOINT:`http://169.254.169.254/metadata/instance/compute/location`,IMDS_VERSION:`2020-06-01`,IMDS_TIMEOUT:2e3,AZURE_REGION_AUTO_DISCOVER_FLAG:`TryAutoDetect`,REGIONAL_AUTH_PUBLIC_CLOUD_SUFFIX:`login.microsoft.com`,KNOWN_PUBLIC_CLOUDS:[`login.microsoftonline.com`,`login.windows.net`,`login.microsoft.com`,`sts.windows.net`],SHR_NONCE_VALIDITY:240,INVALID_INSTANCE:`invalid_instance`},d={SUCCESS:200,SUCCESS_RANGE_START:200,SUCCESS_RANGE_END:299,REDIRECT:302,CLIENT_ERROR:400,CLIENT_ERROR_RANGE_START:400,BAD_REQUEST:400,UNAUTHORIZED:401,NOT_FOUND:404,REQUEST_TIMEOUT:408,GONE:410,TOO_MANY_REQUESTS:429,CLIENT_ERROR_RANGE_END:499,SERVER_ERROR:500,SERVER_ERROR_RANGE_START:500,SERVICE_UNAVAILABLE:503,GATEWAY_TIMEOUT:504,SERVER_ERROR_RANGE_END:599,MULTI_SIDED_ERROR:600},f=[u.OPENID_SCOPE,u.PROFILE_SCOPE,u.OFFLINE_ACCESS_SCOPE],p=[...f,u.EMAIL_SCOPE],m={CONTENT_TYPE:`Content-Type`,CONTENT_LENGTH:`Content-Length`,RETRY_AFTER:`Retry-After`,CCS_HEADER:`X-AnchorMailbox`,WWWAuthenticate:`WWW-Authenticate`,AuthenticationInfo:`Authentication-Info`,X_MS_REQUEST_ID:`x-ms-request-id`,X_MS_HTTP_VERSION:`x-ms-httpver`},h={COMMON:`common`,ORGANIZATIONS:`organizations`,CONSUMERS:`consumers`},g={ACCESS_TOKEN:`access_token`,XMS_CC:`xms_cc`},_={LOGIN:`login`,SELECT_ACCOUNT:`select_account`,CONSENT:`consent`,NONE:`none`,CREATE:`create`,NO_SESSION:`no_session`},v={PLAIN:`plain`,S256:`S256`},y={CODE:`code`,IDTOKEN_TOKEN:`id_token token`},b={QUERY:`query`,FRAGMENT:`fragment`,FORM_POST:`form_post`},x={AUTHORIZATION_CODE_GRANT:`authorization_code`,CLIENT_CREDENTIALS_GRANT:`client_credentials`,RESOURCE_OWNER_PASSWORD_GRANT:`password`,REFRESH_TOKEN_GRANT:`refresh_token`,DEVICE_CODE_GRANT:`device_code`,JWT_BEARER:`urn:ietf:params:oauth:grant-type:jwt-bearer`},S={MSSTS_ACCOUNT_TYPE:`MSSTS`,ADFS_ACCOUNT_TYPE:`ADFS`,GENERIC_ACCOUNT_TYPE:`Generic`},C={CACHE_KEY_SEPARATOR:`-`,CLIENT_INFO_SEPARATOR:`.`},E={ID_TOKEN:`IdToken`,ACCESS_TOKEN:`AccessToken`,ACCESS_TOKEN_WITH_AUTH_SCHEME:`AccessToken_With_AuthScheme`,REFRESH_TOKEN:`RefreshToken`},D=`appmetadata`,O={CACHE_KEY:`authority-metadata`,REFRESH_TIME_SECONDS:3600*24},k={CONFIG:`config`,CACHE:`cache`,NETWORK:`network`,HARDCODED_VALUES:`hardcoded_values`},A={SCHEMA_VERSION:5,MAX_LAST_HEADER_BYTES:330,MAX_CACHED_ERRORS:50,CACHE_KEY:`server-telemetry`,CATEGORY_SEPARATOR:`|`,VALUE_SEPARATOR:`,`,OVERFLOW_TRUE:`1`,OVERFLOW_FALSE:`0`,UNKNOWN_ERROR:`unknown_error`},j={BEARER:`Bearer`,POP:`pop`,SSH:`ssh-cert`},M={DEFAULT_THROTTLE_TIME_SECONDS:60,DEFAULT_MAX_THROTTLE_TIME_SECONDS:3600,THROTTLING_PREFIX:`throttling`,X_MS_LIB_CAPABILITY_VALUE:`retry-after, h429`},N={INVALID_GRANT_ERROR:`invalid_grant`,CLIENT_MISMATCH_ERROR:`client_mismatch`},ee={username:`username`,password:`password`},P={FAILED_AUTO_DETECTION:`1`,INTERNAL_CACHE:`2`,ENVIRONMENT_VARIABLE:`3`,IMDS:`4`},F={CONFIGURED_NO_AUTO_DETECTION:`2`,AUTO_DETECTION_REQUESTED_SUCCESSFUL:`4`,AUTO_DETECTION_REQUESTED_FAILED:`5`},I={NOT_APPLICABLE:`0`,FORCE_REFRESH_OR_CLAIMS:`1`,NO_CACHED_ACCESS_TOKEN:`2`,CACHED_ACCESS_TOKEN_EXPIRED:`3`,PROACTIVELY_REFRESHED:`4`},L={BASE64:`base64`,HEX:`hex`,UTF8:`utf-8`},R=`unexpected_error`,z=`post_request_failed`;var B=Object.freeze({__proto__:null,postRequestFailed:z,unexpectedError:R}); +/*! @azure/msal-common v15.13.2 2025-11-19 */ +let V={[R]:`Unexpected error in authentication.`,[z]:`Post request failed from the network, could be a 4xx/5xx or a network unavailability. Please check the exact error code for details.`},te={unexpectedError:{code:R,desc:V[R]},postRequestFailed:{code:z,desc:V[z]}};var H=class e extends Error{constructor(t,n,r){let i=n?`${t}: ${n}`:t;super(i),Object.setPrototypeOf(this,e.prototype),this.errorCode=t||u.EMPTY_STRING,this.errorMessage=n||u.EMPTY_STRING,this.subError=r||u.EMPTY_STRING,this.name=`AuthError`}setCorrelationId(e){this.correlationId=e}};function ne(e,t){return new H(e,t?`${V[e]} ${t}`:V[e])} +/*! @azure/msal-common v15.13.2 2025-11-19 */ +let re=`client_info_decoding_error`,U=`client_info_empty_error`,ie=`token_parsing_error`,W=`null_or_empty_token`,ae=`endpoints_resolution_error`,G=`network_error`,oe=`openid_config_error`,se=`hash_not_deserialized`,ce=`invalid_state`,le=`state_mismatch`,ue=`state_not_found`,de=`nonce_mismatch`,fe=`auth_time_not_found`,pe=`max_age_transpired`,me=`multiple_matching_tokens`,he=`multiple_matching_accounts`,ge=`multiple_matching_appMetadata`,_e=`request_cannot_be_made`,ve=`cannot_remove_empty_scope`,ye=`cannot_append_scopeset`,be=`empty_input_scopeset`,xe=`device_code_polling_cancelled`,Se=`device_code_expired`,Ce=`device_code_unknown_error`,we=`no_account_in_silent_request`,Te=`invalid_cache_record`,Ee=`invalid_cache_environment`,De=`no_account_found`,Oe=`no_crypto_object`,ke=`unexpected_credential_type`,Ae=`invalid_assertion`,je=`invalid_client_credential`,Me=`token_refresh_required`,Ne=`user_timeout_reached`,Pe=`token_claims_cnf_required_for_signedjwt`,Fe=`authorization_code_missing_from_server_response`,Ie=`binding_key_not_removed`,Le=`end_session_endpoint_not_supported`,Re=`key_id_missing`,ze=`no_network_connectivity`,K=`user_canceled`,Be=`missing_tenant_id_error`,Ve=`method_not_implemented`,q=`nested_app_auth_bridge_disabled`,He=`platform_broker_error`;var Ue=Object.freeze({__proto__:null,authTimeNotFound:fe,authorizationCodeMissingFromServerResponse:Fe,bindingKeyNotRemoved:Ie,cannotAppendScopeSet:ye,cannotRemoveEmptyScope:ve,clientInfoDecodingError:re,clientInfoEmptyError:U,deviceCodeExpired:Se,deviceCodePollingCancelled:xe,deviceCodeUnknownError:Ce,emptyInputScopeSet:be,endSessionEndpointNotSupported:Le,endpointResolutionError:ae,hashNotDeserialized:se,invalidAssertion:Ae,invalidCacheEnvironment:Ee,invalidCacheRecord:Te,invalidClientCredential:je,invalidState:ce,keyIdMissing:Re,maxAgeTranspired:pe,methodNotImplemented:Ve,missingTenantIdError:Be,multipleMatchingAccounts:he,multipleMatchingAppMetadata:ge,multipleMatchingTokens:me,nestedAppAuthBridgeDisabled:q,networkError:G,noAccountFound:De,noAccountInSilentRequest:we,noCryptoObject:Oe,noNetworkConnectivity:ze,nonceMismatch:de,nullOrEmptyToken:W,openIdConfigError:oe,platformBrokerError:He,requestCannotBeMade:_e,stateMismatch:le,stateNotFound:ue,tokenClaimsCnfRequiredForSignedJwt:Pe,tokenParsingError:ie,tokenRefreshRequired:Me,unexpectedCredentialType:ke,userCanceled:K,userTimeoutReached:Ne}); +/*! @azure/msal-common v15.13.2 2025-11-19 */ +let J={[re]:`The client info could not be parsed/decoded correctly`,[U]:`The client info was empty`,[ie]:`Token cannot be parsed`,[W]:`The token is null or empty`,[ae]:`Endpoints cannot be resolved`,[G]:`Network request failed`,[oe]:`Could not retrieve endpoints. Check your authority and verify the .well-known/openid-configuration endpoint returns the required endpoints.`,[se]:`The hash parameters could not be deserialized`,[ce]:`State was not the expected format`,[le]:`State mismatch error`,[ue]:`State not found`,[de]:`Nonce mismatch error`,[fe]:`Max Age was requested and the ID token is missing the auth_time variable. auth_time is an optional claim and is not enabled by default - it must be enabled. See https://aka.ms/msaljs/optional-claims for more information.`,[pe]:`Max Age is set to 0, or too much time has elapsed since the last end-user authentication.`,[me]:`The cache contains multiple tokens satisfying the requirements. Call AcquireToken again providing more requirements such as authority or account.`,[he]:`The cache contains multiple accounts satisfying the given parameters. Please pass more info to obtain the correct account`,[ge]:`The cache contains multiple appMetadata satisfying the given parameters. Please pass more info to obtain the correct appMetadata`,[_e]:`Token request cannot be made without authorization code or refresh token.`,[ve]:`Cannot remove null or empty scope from ScopeSet`,[ye]:`Cannot append ScopeSet`,[be]:`Empty input ScopeSet cannot be processed`,[xe]:`Caller has cancelled token endpoint polling during device code flow by setting DeviceCodeRequest.cancel = true.`,[Se]:`Device code is expired.`,[Ce]:`Device code stopped polling for unknown reasons.`,[we]:`Please pass an account object, silent flow is not supported without account information`,[Te]:`Cache record object was null or undefined.`,[Ee]:`Invalid environment when attempting to create cache entry`,[De]:`No account found in cache for given key.`,[Oe]:`No crypto object detected.`,[ke]:`Unexpected credential type.`,[Ae]:`Client assertion must meet requirements described in https://tools.ietf.org/html/rfc7515`,[je]:`Client credential (secret, certificate, or assertion) must not be empty when creating a confidential client. An application should at most have one credential`,[Me]:`Cannot return token from cache because it must be refreshed. This may be due to one of the following reasons: forceRefresh parameter is set to true, claims have been requested, there is no cached access token or it is expired.`,[Ne]:`User defined timeout for device code polling reached`,[Pe]:`Cannot generate a POP jwt if the token_claims are not populated`,[Fe]:`Server response does not contain an authorization code to proceed`,[Ie]:`Could not remove the credential's binding key from storage.`,[Le]:`The provided authority does not support logout`,[Re]:`A keyId value is missing from the requested bound token's cache record and is required to match the token to it's stored binding key.`,[ze]:`No network connectivity. Check your internet connection.`,[K]:`User cancelled the flow.`,[Be]:`A tenant id - not common, organizations, or consumers - must be specified when using the client_credentials flow.`,[Ve]:`This method has not been implemented`,[q]:`The nested app auth bridge is disabled`,[He]:`An error occurred in the native broker. See the platformBrokerError property for details.`},We={clientInfoDecodingError:{code:re,desc:J[re]},clientInfoEmptyError:{code:U,desc:J[U]},tokenParsingError:{code:ie,desc:J[ie]},nullOrEmptyToken:{code:W,desc:J[W]},endpointResolutionError:{code:ae,desc:J[ae]},networkError:{code:G,desc:J[G]},unableToGetOpenidConfigError:{code:oe,desc:J[oe]},hashNotDeserialized:{code:se,desc:J[se]},invalidStateError:{code:ce,desc:J[ce]},stateMismatchError:{code:le,desc:J[le]},stateNotFoundError:{code:ue,desc:J[ue]},nonceMismatchError:{code:de,desc:J[de]},authTimeNotFoundError:{code:fe,desc:J[fe]},maxAgeTranspired:{code:pe,desc:J[pe]},multipleMatchingTokens:{code:me,desc:J[me]},multipleMatchingAccounts:{code:he,desc:J[he]},multipleMatchingAppMetadata:{code:ge,desc:J[ge]},tokenRequestCannotBeMade:{code:_e,desc:J[_e]},removeEmptyScopeError:{code:ve,desc:J[ve]},appendScopeSetError:{code:ye,desc:J[ye]},emptyInputScopeSetError:{code:be,desc:J[be]},DeviceCodePollingCancelled:{code:xe,desc:J[xe]},DeviceCodeExpired:{code:Se,desc:J[Se]},DeviceCodeUnknownError:{code:Ce,desc:J[Ce]},NoAccountInSilentRequest:{code:we,desc:J[we]},invalidCacheRecord:{code:Te,desc:J[Te]},invalidCacheEnvironment:{code:Ee,desc:J[Ee]},noAccountFound:{code:De,desc:J[De]},noCryptoObj:{code:Oe,desc:J[Oe]},unexpectedCredentialType:{code:ke,desc:J[ke]},invalidAssertion:{code:Ae,desc:J[Ae]},invalidClientCredential:{code:je,desc:J[je]},tokenRefreshRequired:{code:Me,desc:J[Me]},userTimeoutReached:{code:Ne,desc:J[Ne]},tokenClaimsRequired:{code:Pe,desc:J[Pe]},noAuthorizationCodeFromServer:{code:Fe,desc:J[Fe]},bindingKeyNotRemovedError:{code:Ie,desc:J[Ie]},logoutNotSupported:{code:Le,desc:J[Le]},keyIdMissing:{code:Re,desc:J[Re]},noNetworkConnectivity:{code:ze,desc:J[ze]},userCanceledError:{code:K,desc:J[K]},missingTenantIdError:{code:Be,desc:J[Be]},nestedAppAuthBridgeDisabled:{code:q,desc:J[q]},platformBrokerError:{code:He,desc:J[He]}};var Ge=class e extends H{constructor(t,n){super(t,n?`${J[t]}: ${n}`:J[t]),this.name=`ClientAuthError`,Object.setPrototypeOf(this,e.prototype)}};function Y(e,t){return new Ge(e,t)} +/*! @azure/msal-common v15.13.2 2025-11-19 */ +let Ke={createNewGuid:()=>{throw Y(Ve)},base64Decode:()=>{throw Y(Ve)},base64Encode:()=>{throw Y(Ve)},base64UrlEncode:()=>{throw Y(Ve)},encodeKid:()=>{throw Y(Ve)},async getPublicKeyThumbprint(){throw Y(Ve)},async removeTokenBindingKey(){throw Y(Ve)},async clearKeystore(){throw Y(Ve)},async signJwt(){throw Y(Ve)},async hashString(){throw Y(Ve)}};e.LogLevel=void 0,(function(e){e[e.Error=0]=`Error`,e[e.Warning=1]=`Warning`,e[e.Info=2]=`Info`,e[e.Verbose=3]=`Verbose`,e[e.Trace=4]=`Trace`})(e.LogLevel||={});var qe=class t{constructor(n,r,i){this.level=e.LogLevel.Info;let a=()=>{},o=n||t.createDefaultLoggerOptions();this.localCallback=o.loggerCallback||a,this.piiLoggingEnabled=o.piiLoggingEnabled||!1,this.level=typeof o.logLevel==`number`?o.logLevel:e.LogLevel.Info,this.correlationId=o.correlationId||u.EMPTY_STRING,this.packageName=r||u.EMPTY_STRING,this.packageVersion=i||u.EMPTY_STRING}static createDefaultLoggerOptions(){return{loggerCallback:()=>{},piiLoggingEnabled:!1,logLevel:e.LogLevel.Info}}clone(e,n,r){return new t({loggerCallback:this.localCallback,piiLoggingEnabled:this.piiLoggingEnabled,logLevel:this.level,correlationId:r||this.correlationId},e,n)}logMessage(t,n){if(n.logLevel>this.level||!this.piiLoggingEnabled&&n.containsPii)return;let r=`${`[${new Date().toUTCString()}] : [${n.correlationId||this.correlationId||``}]`} : ${this.packageName}@${this.packageVersion} : ${e.LogLevel[n.logLevel]} - ${t}`;this.executeCallback(n.logLevel,r,n.containsPii||!1)}executeCallback(e,t,n){this.localCallback&&this.localCallback(e,t,n)}error(t,n){this.logMessage(t,{logLevel:e.LogLevel.Error,containsPii:!1,correlationId:n||u.EMPTY_STRING})}errorPii(t,n){this.logMessage(t,{logLevel:e.LogLevel.Error,containsPii:!0,correlationId:n||u.EMPTY_STRING})}warning(t,n){this.logMessage(t,{logLevel:e.LogLevel.Warning,containsPii:!1,correlationId:n||u.EMPTY_STRING})}warningPii(t,n){this.logMessage(t,{logLevel:e.LogLevel.Warning,containsPii:!0,correlationId:n||u.EMPTY_STRING})}info(t,n){this.logMessage(t,{logLevel:e.LogLevel.Info,containsPii:!1,correlationId:n||u.EMPTY_STRING})}infoPii(t,n){this.logMessage(t,{logLevel:e.LogLevel.Info,containsPii:!0,correlationId:n||u.EMPTY_STRING})}verbose(t,n){this.logMessage(t,{logLevel:e.LogLevel.Verbose,containsPii:!1,correlationId:n||u.EMPTY_STRING})}verbosePii(t,n){this.logMessage(t,{logLevel:e.LogLevel.Verbose,containsPii:!0,correlationId:n||u.EMPTY_STRING})}trace(t,n){this.logMessage(t,{logLevel:e.LogLevel.Trace,containsPii:!1,correlationId:n||u.EMPTY_STRING})}tracePii(t,n){this.logMessage(t,{logLevel:e.LogLevel.Trace,containsPii:!0,correlationId:n||u.EMPTY_STRING})}isPiiLoggingEnabled(){return this.piiLoggingEnabled||!1}}; +/*! @azure/msal-common v15.13.2 2025-11-19 */ +let Je=`@azure/msal-common`,Ye=`15.13.2`,Xe={None:`none`,AzurePublic:`https://login.microsoftonline.com`,AzurePpe:`https://login.windows-ppe.net`,AzureChina:`https://login.chinacloudapi.cn`,AzureGermany:`https://login.microsoftonline.de`,AzureUsGovernment:`https://login.microsoftonline.us`},Ze=`redirect_uri_empty`,Qe=`claims_request_parsing_error`,$e=`authority_uri_insecure`,et=`url_parse_error`,tt=`empty_url_error`,nt=`empty_input_scopes_error`,rt=`invalid_claims`,it=`token_request_empty`,at=`logout_request_empty`,ot=`invalid_code_challenge_method`,st=`pkce_params_missing`,ct=`invalid_cloud_discovery_metadata`,X=`invalid_authority_metadata`,lt=`untrusted_authority`,ut=`missing_ssh_jwk`,dt=`missing_ssh_kid`,ft=`missing_nonce_authentication_header`,pt=`invalid_authentication_header`,mt=`cannot_set_OIDCOptions`,ht=`cannot_allow_platform_broker`,gt=`authority_mismatch`,_t=`invalid_request_method_for_EAR`,vt=`invalid_authorize_post_body_parameters`;var yt=Object.freeze({__proto__:null,authorityMismatch:gt,authorityUriInsecure:$e,cannotAllowPlatformBroker:ht,cannotSetOIDCOptions:mt,claimsRequestParsingError:Qe,emptyInputScopesError:nt,invalidAuthenticationHeader:pt,invalidAuthorityMetadata:X,invalidAuthorizePostBodyParameters:vt,invalidClaims:rt,invalidCloudDiscoveryMetadata:ct,invalidCodeChallengeMethod:ot,invalidRequestMethodForEAR:_t,logoutRequestEmpty:at,missingNonceAuthenticationHeader:ft,missingSshJwk:ut,missingSshKid:dt,pkceParamsMissing:st,redirectUriEmpty:Ze,tokenRequestEmpty:it,untrustedAuthority:lt,urlEmptyError:tt,urlParseError:et}); +/*! @azure/msal-common v15.13.2 2025-11-19 */ +let bt={[Ze]:`A redirect URI is required for all calls, and none has been set.`,[Qe]:`Could not parse the given claims request object.`,[$e]:`Authority URIs must use https. Please see here for valid authority configuration options: https://docs.microsoft.com/en-us/azure/active-directory/develop/msal-js-initializing-client-applications#configuration-options`,[et]:`URL could not be parsed into appropriate segments.`,[tt]:`URL was empty or null.`,[nt]:`Scopes cannot be passed as null, undefined or empty array because they are required to obtain an access token.`,[rt]:`Given claims parameter must be a stringified JSON object.`,[it]:`Token request was empty and not found in cache.`,[at]:`The logout request was null or undefined.`,[ot]:`code_challenge_method passed is invalid. Valid values are "plain" and "S256".`,[st]:`Both params: code_challenge and code_challenge_method are to be passed if to be sent in the request`,[ct]:`Invalid cloudDiscoveryMetadata provided. Must be a stringified JSON object containing tenant_discovery_endpoint and metadata fields`,[X]:`Invalid authorityMetadata provided. Must by a stringified JSON object containing authorization_endpoint, token_endpoint, issuer fields.`,[lt]:`The provided authority is not a trusted authority. Please include this authority in the knownAuthorities config parameter.`,[ut]:`Missing sshJwk in SSH certificate request. A stringified JSON Web Key is required when using the SSH authentication scheme.`,[dt]:`Missing sshKid in SSH certificate request. A string that uniquely identifies the public SSH key is required when using the SSH authentication scheme.`,[ft]:`Unable to find an authentication header containing server nonce. Either the Authentication-Info or WWW-Authenticate headers must be present in order to obtain a server nonce.`,[pt]:`Invalid authentication header provided`,[mt]:`Cannot set OIDCOptions parameter. Please change the protocol mode to OIDC or use a non-Microsoft authority.`,[ht]:`Cannot set allowPlatformBroker parameter to true when not in AAD protocol mode.`,[gt]:`Authority mismatch error. Authority provided in login request or PublicClientApplication config does not match the environment of the provided account. Please use a matching account or make an interactive request to login to this authority.`,[vt]:`Invalid authorize post body parameters provided. If you are using authorizePostBodyParameters, the request method must be POST. Please check the request method and parameters.`,[_t]:`Invalid request method for EAR protocol mode. The request method cannot be GET when using EAR protocol mode. Please change the request method to POST.`},xt={redirectUriNotSet:{code:Ze,desc:bt[Ze]},claimsRequestParsingError:{code:Qe,desc:bt[Qe]},authorityUriInsecure:{code:$e,desc:bt[$e]},urlParseError:{code:et,desc:bt[et]},urlEmptyError:{code:tt,desc:bt[tt]},emptyScopesError:{code:nt,desc:bt[nt]},invalidClaimsRequest:{code:rt,desc:bt[rt]},tokenRequestEmptyError:{code:it,desc:bt[it]},logoutRequestEmptyError:{code:at,desc:bt[at]},invalidCodeChallengeMethod:{code:ot,desc:bt[ot]},invalidCodeChallengeParams:{code:st,desc:bt[st]},invalidCloudDiscoveryMetadata:{code:ct,desc:bt[ct]},invalidAuthorityMetadata:{code:X,desc:bt[X]},untrustedAuthority:{code:lt,desc:bt[lt]},missingSshJwk:{code:ut,desc:bt[ut]},missingSshKid:{code:dt,desc:bt[dt]},missingNonceAuthenticationHeader:{code:ft,desc:bt[ft]},invalidAuthenticationHeader:{code:pt,desc:bt[pt]},cannotSetOIDCOptions:{code:mt,desc:bt[mt]},cannotAllowPlatformBroker:{code:ht,desc:bt[ht]},authorityMismatch:{code:gt,desc:bt[gt]},invalidAuthorizePostBodyParameters:{code:vt,desc:bt[vt]},invalidRequestMethodForEAR:{code:_t,desc:bt[_t]}};var St=class e extends H{constructor(t){super(t,bt[t]),this.name=`ClientConfigurationError`,Object.setPrototypeOf(this,e.prototype)}};function Ct(e){return new St(e)} +/*! @azure/msal-common v15.13.2 2025-11-19 */ +var wt=class{static isEmptyObj(e){if(e)try{let t=JSON.parse(e);return Object.keys(t).length===0}catch{}return!0}static startsWith(e,t){return e.indexOf(t)===0}static endsWith(e,t){return e.length>=t.length&&e.lastIndexOf(t)===e.length-t.length}static queryStringToObject(e){let t={},n=e.split(`&`),r=e=>decodeURIComponent(e.replace(/\+/g,` `));return n.forEach(e=>{if(e.trim()){let[n,i]=e.split(/=(.+)/g,2);n&&i&&(t[r(n)]=r(i))}}),t}static trimArrayEntries(e){return e.map(e=>e.trim())}static removeEmptyStringsFromArray(e){return e.filter(e=>!!e)}static jsonParseHelper(e){try{return JSON.parse(e)}catch{return null}}static matchPattern(e,t){return new RegExp(e.replace(/\\/g,`\\\\`).replace(/\*/g,`[^ ]*`).replace(/\?/g,`\\?`)).test(t)}},Tt=class e{constructor(e){let t=e?wt.trimArrayEntries([...e]):[],n=t?wt.removeEmptyStringsFromArray(t):[];if(!n||!n.length)throw Ct(nt);this.scopes=new Set,n.forEach(e=>this.scopes.add(e))}static fromString(t){return new e((t||u.EMPTY_STRING).split(` `))}static createSearchScopes(t){let n=new e(t&&t.length>0?t:[...f]);return n.containsOnlyOIDCScopes()?n.removeScope(u.OFFLINE_ACCESS_SCOPE):n.removeOIDCScopes(),n}containsScope(t){let n=new e(this.printScopesLowerCase().split(` `));return t?n.scopes.has(t.toLowerCase()):!1}containsScopeSet(e){return!e||e.scopes.size<=0?!1:this.scopes.size>=e.scopes.size&&e.asArray().every(e=>this.containsScope(e))}containsOnlyOIDCScopes(){let e=0;return p.forEach(t=>{this.containsScope(t)&&(e+=1)}),this.scopes.size===e}appendScope(e){e&&this.scopes.add(e.trim())}appendScopes(e){try{e.forEach(e=>this.appendScope(e))}catch{throw Y(ye)}}removeScope(e){if(!e)throw Y(ve);this.scopes.delete(e.trim())}removeOIDCScopes(){p.forEach(e=>{this.scopes.delete(e)})}unionScopeSets(e){if(!e)throw Y(be);let t=new Set;return e.scopes.forEach(e=>t.add(e.toLowerCase())),this.scopes.forEach(e=>t.add(e.toLowerCase())),t}intersectingScopeSets(e){if(!e)throw Y(be);e.containsOnlyOIDCScopes()||e.removeOIDCScopes();let t=this.unionScopeSets(e),n=e.getScopeCount(),r=this.getScopeCount();return t.sizee.push(t)),e}printScopes(){return this.scopes?this.asArray().join(` `):u.EMPTY_STRING}printScopesLowerCase(){return this.printScopes().toLowerCase()}}; +/*! @azure/msal-common v15.13.2 2025-11-19 */ +function Et(e,t){if(!e)throw Y(U);try{let n=t(e);return JSON.parse(n)}catch{throw Y(re)}}function Dt(e){if(!e)throw Y(re);let t=e.split(C.CLIENT_INFO_SEPARATOR,2);return{uid:t[0],utid:t.length<2?u.EMPTY_STRING:t[1]}} +/*! @azure/msal-common v15.13.2 2025-11-19 */ +function Ot(e,t){return!!e&&!!t&&e===t.split(`.`)[1]}function kt(e,t,n,r){if(r){let{oid:t,sub:n,tid:i,name:a,tfp:o,acr:s,preferred_username:c,upn:l,login_hint:u}=r,d=i||o||s||``;return{tenantId:d,localAccountId:t||n||``,name:a,username:c||l||``,loginHint:u,isHomeTenant:Ot(d,e)}}else return{tenantId:n,localAccountId:t,username:``,isHomeTenant:Ot(n,e)}}function At(e,t,n,r){let i=e;if(t){let{isHomeTenant:n,...r}=t;i={...e,...r}}if(n){let{isHomeTenant:t,...a}=kt(e.homeAccountId,e.localAccountId,e.tenantId,n);return i={...i,...a,idTokenClaims:n,idToken:r},i}return i} +/*! @azure/msal-common v15.13.2 2025-11-19 */ +let jt={Default:0,Adfs:1,Dsts:2,Ciam:3}; +/*! @azure/msal-common v15.13.2 2025-11-19 */ +function Mt(e){return e&&(e.tid||e.tfp||e.acr)||null} +/*! @azure/msal-common v15.13.2 2025-11-19 */ +let Nt={AAD:`AAD`,OIDC:`OIDC`,EAR:`EAR`}; +/*! @azure/msal-common v15.13.2 2025-11-19 */ +var Pt=class e{static getAccountInfo(e){return{homeAccountId:e.homeAccountId,environment:e.environment,tenantId:e.realm,username:e.username,localAccountId:e.localAccountId,loginHint:e.loginHint,name:e.name,nativeAccountId:e.nativeAccountId,authorityType:e.authorityType,tenantProfiles:new Map((e.tenantProfiles||[]).map(e=>[e.tenantId,e])),dataBoundary:e.dataBoundary}}isSingleTenant(){return!this.tenantProfiles}static createAccount(t,n,r){let i=new e;n.authorityType===jt.Adfs?i.authorityType=S.ADFS_ACCOUNT_TYPE:n.protocolMode===Nt.OIDC?i.authorityType=S.GENERIC_ACCOUNT_TYPE:i.authorityType=S.MSSTS_ACCOUNT_TYPE;let a;t.clientInfo&&r&&(a=Et(t.clientInfo,r),a.xms_tdbr&&(i.dataBoundary=a.xms_tdbr===`EU`?`EU`:`None`)),i.clientInfo=t.clientInfo,i.homeAccountId=t.homeAccountId,i.nativeAccountId=t.nativeAccountId;let o=t.environment||n&&n.getPreferredCache();if(!o)throw Y(Ee);i.environment=o,i.realm=a?.utid||Mt(t.idTokenClaims)||``,i.localAccountId=a?.uid||t.idTokenClaims?.oid||t.idTokenClaims?.sub||``;let s=t.idTokenClaims?.preferred_username||t.idTokenClaims?.upn,c=t.idTokenClaims?.emails?t.idTokenClaims.emails[0]:null;return i.username=s||c||``,i.loginHint=t.idTokenClaims?.login_hint,i.name=t.idTokenClaims?.name||``,i.cloudGraphHostName=t.cloudGraphHostName,i.msGraphHost=t.msGraphHost,t.tenantProfiles?i.tenantProfiles=t.tenantProfiles:i.tenantProfiles=[kt(t.homeAccountId,i.localAccountId,i.realm,t.idTokenClaims)],i}static createFromAccountInfo(t,n,r){let i=new e;return i.authorityType=t.authorityType||S.GENERIC_ACCOUNT_TYPE,i.homeAccountId=t.homeAccountId,i.localAccountId=t.localAccountId,i.nativeAccountId=t.nativeAccountId,i.realm=t.tenantId,i.environment=t.environment,i.username=t.username,i.name=t.name,i.loginHint=t.loginHint,i.cloudGraphHostName=n,i.msGraphHost=r,i.tenantProfiles=Array.from(t.tenantProfiles?.values()||[]),i.dataBoundary=t.dataBoundary,i}static generateHomeAccountId(e,t,n,r,i){if(!(t===jt.Adfs||t===jt.Dsts)){if(e)try{let t=Et(e,r.base64Decode);if(t.uid&&t.utid)return`${t.uid}.${t.utid}`}catch{}n.warning(`No client info in response`)}return i?.sub||``}static isAccountEntity(e){return e?e.hasOwnProperty(`homeAccountId`)&&e.hasOwnProperty(`environment`)&&e.hasOwnProperty(`realm`)&&e.hasOwnProperty(`localAccountId`)&&e.hasOwnProperty(`username`)&&e.hasOwnProperty(`authorityType`):!1}static accountInfoIsEqual(e,t,n){if(!e||!t)return!1;let r=!0;if(n){let n=e.idTokenClaims||{},i=t.idTokenClaims||{};r=n.iat===i.iat&&n.nonce===i.nonce}return e.homeAccountId===t.homeAccountId&&e.localAccountId===t.localAccountId&&e.username===t.username&&e.tenantId===t.tenantId&&e.loginHint===t.loginHint&&e.environment===t.environment&&e.nativeAccountId===t.nativeAccountId&&r}}; +/*! @azure/msal-common v15.13.2 2025-11-19 */ +function Ft(e,t){let n=Lt(e);try{let e=t(n);return JSON.parse(e)}catch{throw Y(ie)}}function It(e){if(!e.signin_state)return!1;let t=[`kmsi`,`dvc_dmjd`];return e.signin_state.some(e=>t.includes(e.trim().toLowerCase()))}function Lt(e){if(!e)throw Y(W);let t=/^([^\.\s]*)\.([^\.\s]+)\.([^\.\s]*)$/.exec(e);if(!t||t.length<4)throw Y(ie);return t[2]}function Rt(e,t){if(t===0||Date.now()-3e5>e+t)throw Y(pe)} +/*! @azure/msal-common v15.13.2 2025-11-19 */ +function zt(e){return e.startsWith(`#/`)?e.substring(2):e.startsWith(`#`)||e.startsWith(`?`)?e.substring(1):e}function Z(e){if(!e||e.indexOf(`=`)<0)return null;try{let t=zt(e),n=Object.fromEntries(new URLSearchParams(t));if(n.code||n.ear_jwe||n.error||n.error_description||n.state)return n}catch{throw Y(se)}return null}function Bt(e,t=!0,n){let r=[];return e.forEach((e,i)=>{!t&&n&&i in n?r.push(`${i}=${e}`):r.push(`${i}=${encodeURIComponent(e)}`)}),r.join(`&`)} +/*! @azure/msal-common v15.13.2 2025-11-19 */ +var Q=class e{get urlString(){return this._urlString}constructor(t){if(this._urlString=t,!this._urlString)throw Ct(tt);t.includes(`#`)||(this._urlString=e.canonicalizeUri(t))}static canonicalizeUri(e){if(e){let t=e.toLowerCase();return wt.endsWith(t,`?`)?t=t.slice(0,-1):wt.endsWith(t,`?/`)&&(t=t.slice(0,-2)),wt.endsWith(t,`/`)||(t+=`/`),t}return e}validateAsUri(){let e;try{e=this.getUrlComponents()}catch{throw Ct(et)}if(!e.HostNameAndPort||!e.PathSegments)throw Ct(et);if(!e.Protocol||e.Protocol.toLowerCase()!==`https:`)throw Ct($e)}static appendQueryString(e,t){return t?e.indexOf(`?`)<0?`${e}?${t}`:`${e}&${t}`:e}static removeHashFromUrl(t){return e.canonicalizeUri(t.split(`#`)[0])}replaceTenantPath(t){let n=this.getUrlComponents(),r=n.PathSegments;return t&&r.length!==0&&(r[0]===h.COMMON||r[0]===h.ORGANIZATIONS)&&(r[0]=t),e.constructAuthorityUriFromObject(n)}getUrlComponents(){let e=RegExp(`^(([^:/?#]+):)?(//([^/?#]*))?([^?#]*)(\\?([^#]*))?(#(.*))?`),t=this.urlString.match(e);if(!t)throw Ct(et);let n={Protocol:t[1],HostNameAndPort:t[4],AbsolutePath:t[5],QueryString:t[7]},r=n.AbsolutePath.split(`/`);return r=r.filter(e=>e&&e.length>0),n.PathSegments=r,n.QueryString&&n.QueryString.endsWith(`/`)&&(n.QueryString=n.QueryString.substring(0,n.QueryString.length-1)),n}static getDomainFromUrl(e){let t=RegExp(`^([^:/?#]+://)?([^/?#]*)`),n=e.match(t);if(!n)throw Ct(et);return n[2]}static getAbsoluteUrl(t,n){if(t[0]===u.FORWARD_SLASH){let r=new e(n).getUrlComponents();return r.Protocol+`//`+r.HostNameAndPort+t}return t}static constructAuthorityUriFromObject(t){return new e(t.Protocol+`//`+t.HostNameAndPort+`/`+t.PathSegments.join(`/`))}static hashContainsKnownProperties(e){return!!Z(e)}}; +/*! @azure/msal-common v15.13.2 2025-11-19 */ +let Vt={endpointMetadata:{"login.microsoftonline.com":{token_endpoint:`https://login.microsoftonline.com/{tenantid}/oauth2/v2.0/token`,jwks_uri:`https://login.microsoftonline.com/{tenantid}/discovery/v2.0/keys`,issuer:`https://login.microsoftonline.com/{tenantid}/v2.0`,authorization_endpoint:`https://login.microsoftonline.com/{tenantid}/oauth2/v2.0/authorize`,end_session_endpoint:`https://login.microsoftonline.com/{tenantid}/oauth2/v2.0/logout`},"login.chinacloudapi.cn":{token_endpoint:`https://login.chinacloudapi.cn/{tenantid}/oauth2/v2.0/token`,jwks_uri:`https://login.chinacloudapi.cn/{tenantid}/discovery/v2.0/keys`,issuer:`https://login.partner.microsoftonline.cn/{tenantid}/v2.0`,authorization_endpoint:`https://login.chinacloudapi.cn/{tenantid}/oauth2/v2.0/authorize`,end_session_endpoint:`https://login.chinacloudapi.cn/{tenantid}/oauth2/v2.0/logout`},"login.microsoftonline.us":{token_endpoint:`https://login.microsoftonline.us/{tenantid}/oauth2/v2.0/token`,jwks_uri:`https://login.microsoftonline.us/{tenantid}/discovery/v2.0/keys`,issuer:`https://login.microsoftonline.us/{tenantid}/v2.0`,authorization_endpoint:`https://login.microsoftonline.us/{tenantid}/oauth2/v2.0/authorize`,end_session_endpoint:`https://login.microsoftonline.us/{tenantid}/oauth2/v2.0/logout`}},instanceDiscoveryMetadata:{metadata:[{preferred_network:`login.microsoftonline.com`,preferred_cache:`login.windows.net`,aliases:[`login.microsoftonline.com`,`login.windows.net`,`login.microsoft.com`,`sts.windows.net`]},{preferred_network:`login.partner.microsoftonline.cn`,preferred_cache:`login.partner.microsoftonline.cn`,aliases:[`login.partner.microsoftonline.cn`,`login.chinacloudapi.cn`]},{preferred_network:`login.microsoftonline.de`,preferred_cache:`login.microsoftonline.de`,aliases:[`login.microsoftonline.de`]},{preferred_network:`login.microsoftonline.us`,preferred_cache:`login.microsoftonline.us`,aliases:[`login.microsoftonline.us`,`login.usgovcloudapi.net`]},{preferred_network:`login-us.microsoftonline.com`,preferred_cache:`login-us.microsoftonline.com`,aliases:[`login-us.microsoftonline.com`]}]}},Ht=Vt.endpointMetadata,Ut=Vt.instanceDiscoveryMetadata,Wt=new Set;Ut.metadata.forEach(e=>{e.aliases.forEach(e=>{Wt.add(e)})});function Gt(e,t){let n,r=e.canonicalAuthority;if(r){let i=new Q(r).getUrlComponents().HostNameAndPort;n=Kt(i,e.cloudDiscoveryMetadata?.metadata,k.CONFIG,t)||Kt(i,Ut.metadata,k.HARDCODED_VALUES,t)||e.knownAuthorities}return n||[]}function Kt(e,t,n,r){if(r?.trace(`getAliasesFromMetadata called with source: ${n}`),e&&t){let i=Jt(t,e);if(i)return r?.trace(`getAliasesFromMetadata: found cloud discovery metadata in ${n}, returning aliases`),i.aliases;r?.trace(`getAliasesFromMetadata: did not find cloud discovery metadata in ${n}`)}return null}function qt(e){return Jt(Ut.metadata,e)}function Jt(e,t){for(let n=0;n!e))return this.commonLogger.warning(`getAccountInfoFilteredBy: Account filter is empty or invalid, returning null`),null;let n=this.getAllAccounts(e,t);return n.length>1?n.sort(e=>e.idTokenClaims?-1:1)[0]:n.length===1?n[0]:null}getBaseAccountInfo(e,t){let n=this.getAccountsFilteredBy(e,t);return n.length>0?Pt.getAccountInfo(n[0]):null}buildTenantProfiles(e,t,n){return e.flatMap(e=>this.getTenantProfilesFromAccountEntity(e,t,n?.tenantId,n))}getTenantedAccountInfoByFilter(e,t,n,r,i){let a=null,o;if(i&&!this.tenantProfileMatchesFilter(n,i))return null;let s=this.getIdToken(e,r,t,n.tenantId);return s&&(o=Ft(s.secret,this.cryptoImpl.base64Decode),!this.idTokenClaimsMatchTenantProfileFilter(o,i))?null:(a=At(e,n,o,s?.secret),a)}getTenantProfilesFromAccountEntity(e,t,n,r){let i=Pt.getAccountInfo(e),a=i.tenantProfiles||new Map,o=this.getTokenKeys();if(n){let e=a.get(n);if(e)a=new Map([[n,e]]);else return[]}let s=[];return a.forEach(e=>{let n=this.getTenantedAccountInfoByFilter(i,o,e,t,r);n&&s.push(n)}),s}tenantProfileMatchesFilter(e,t){return!(t.localAccountId&&!this.matchLocalAccountIdFromTenantProfile(e,t.localAccountId)||t.name&&e.name!==t.name||t.isHomeTenant!==void 0&&e.isHomeTenant!==t.isHomeTenant)}idTokenClaimsMatchTenantProfileFilter(e,t){return!(t&&(t.localAccountId&&!this.matchLocalAccountIdFromTokenClaims(e,t.localAccountId)||t.loginHint&&!this.matchLoginHintFromTokenClaims(e,t.loginHint)||t.username&&!this.matchUsername(e.preferred_username,t.username)||t.name&&!this.matchName(e,t.name)||t.sid&&!this.matchSid(e,t.sid)))}async saveCacheRecord(e,t,n,r){if(!e)throw Y(Te);try{e.account&&await this.setAccount(e.account,t,n),e.idToken&&r?.idToken!==!1&&await this.setIdTokenCredential(e.idToken,t,n),e.accessToken&&r?.accessToken!==!1&&await this.saveAccessToken(e.accessToken,t,n),e.refreshToken&&r?.refreshToken!==!1&&await this.setRefreshTokenCredential(e.refreshToken,t,n),e.appMetadata&&this.setAppMetadata(e.appMetadata,t)}catch(e){throw this.commonLogger?.error(`CacheManager.saveCacheRecord: failed`),e instanceof H?e:$t(e)}}async saveAccessToken(e,t,n){let r={clientId:e.clientId,credentialType:e.credentialType,environment:e.environment,homeAccountId:e.homeAccountId,realm:e.realm,tokenType:e.tokenType,requestedClaimsHash:e.requestedClaimsHash},i=this.getTokenKeys(),a=Tt.fromString(e.target);i.accessToken.forEach(e=>{if(!this.accessTokenKeyMatchesFilter(e,r,!1))return;let n=this.getAccessTokenCredential(e,t);n&&this.credentialMatchesFilter(n,r)&&Tt.fromString(n.target).intersectingScopeSets(a)&&this.removeAccessToken(e,t)}),await this.setAccessTokenCredential(e,t,n)}getAccountsFilteredBy(e,t){let n=this.getAccountKeys(),r=[];return n.forEach(n=>{let i=this.getAccount(n,t);if(!i||e.homeAccountId&&!this.matchHomeAccountId(i,e.homeAccountId)||e.username&&!this.matchUsername(i.username,e.username)||e.environment&&!this.matchEnvironment(i,e.environment)||e.realm&&!this.matchRealm(i,e.realm)||e.nativeAccountId&&!this.matchNativeAccountId(i,e.nativeAccountId)||e.authorityType&&!this.matchAuthorityType(i,e.authorityType))return;let a={localAccountId:e?.localAccountId,name:e?.name},o=i.tenantProfiles?.filter(e=>this.tenantProfileMatchesFilter(e,a));o&&o.length===0||r.push(i)}),r}credentialMatchesFilter(e,t){return!(t.clientId&&!this.matchClientId(e,t.clientId)||t.userAssertionHash&&!this.matchUserAssertionHash(e,t.userAssertionHash)||typeof t.homeAccountId==`string`&&!this.matchHomeAccountId(e,t.homeAccountId)||t.environment&&!this.matchEnvironment(e,t.environment)||t.realm&&!this.matchRealm(e,t.realm)||t.credentialType&&!this.matchCredentialType(e,t.credentialType)||t.familyId&&!this.matchFamilyId(e,t.familyId)||t.target&&!this.matchTarget(e,t.target)||(t.requestedClaimsHash||e.requestedClaimsHash)&&e.requestedClaimsHash!==t.requestedClaimsHash||e.credentialType===E.ACCESS_TOKEN_WITH_AUTH_SCHEME&&(t.tokenType&&!this.matchTokenType(e,t.tokenType)||t.tokenType===j.SSH&&t.keyId&&!this.matchKeyId(e,t.keyId)))}getAppMetadataFilteredBy(e){let t=this.getKeys(),n={};return t.forEach(t=>{if(!this.isAppMetadata(t))return;let r=this.getAppMetadata(t);r&&(e.environment&&!this.matchEnvironment(r,e.environment)||e.clientId&&!this.matchClientId(r,e.clientId)||(n[t]=r))}),n}getAuthorityMetadataByAlias(e){let t=this.getAuthorityMetadataKeys(),n=null;return t.forEach(t=>{if(!this.isAuthorityMetadata(t)||t.indexOf(this.clientId)===-1)return;let r=this.getAuthorityMetadata(t);r&&r.aliases.indexOf(e)!==-1&&(n=r)}),n}removeAllAccounts(e){this.getAllAccounts({},e).forEach(t=>{this.removeAccount(t,e)})}removeAccount(e,t){this.removeAccountContext(e,t),this.getAccountKeys().filter(t=>t.includes(e.homeAccountId)&&t.includes(e.environment)).forEach(e=>{this.removeItem(e,t),this.performanceClient.incrementFields({accountsRemoved:1},t)})}removeAccountContext(e,t){let n=this.getTokenKeys(),r=t=>t.includes(e.homeAccountId)&&t.includes(e.environment);n.idToken.filter(r).forEach(e=>{this.removeIdToken(e,t)}),n.accessToken.filter(r).forEach(e=>{this.removeAccessToken(e,t)}),n.refreshToken.filter(r).forEach(e=>{this.removeRefreshToken(e,t)})}removeAccessToken(e,t){let n=this.getAccessTokenCredential(e,t);if(this.removeItem(e,t),this.performanceClient.incrementFields({accessTokensRemoved:1},t),!n||n.credentialType.toLowerCase()!==E.ACCESS_TOKEN_WITH_AUTH_SCHEME.toLowerCase()||n.tokenType!==j.POP)return;let r=n.keyId;r&&this.cryptoImpl.removeTokenBindingKey(r).catch(()=>{this.commonLogger.error(`Failed to remove token binding key ${r}`,t),this.performanceClient?.incrementFields({removeTokenBindingKeyFailure:1},t)})}removeAppMetadata(e){return this.getKeys().forEach(t=>{this.isAppMetadata(t)&&this.removeItem(t,e)}),!0}getIdToken(e,t,n,r,i){this.commonLogger.trace(`CacheManager - getIdToken called`);let a={homeAccountId:e.homeAccountId,environment:e.environment,credentialType:E.ID_TOKEN,clientId:this.clientId,realm:r},o=this.getIdTokensByFilter(a,t,n),s=o.size;if(s<1)return this.commonLogger.info(`CacheManager:getIdToken - No token found`),null;if(s>1){let n=o;if(!r){let t=new Map;o.forEach((n,r)=>{n.realm===e.tenantId&&t.set(r,n)});let r=t.size;if(r<1)return this.commonLogger.info(`CacheManager:getIdToken - Multiple ID tokens found for account but none match account entity tenant id, returning first result`),o.values().next().value;if(r===1)return this.commonLogger.info(`CacheManager:getIdToken - Multiple ID tokens found for account, defaulting to home tenant profile`),t.values().next().value;n=t}return this.commonLogger.info(`CacheManager:getIdToken - Multiple matching ID tokens found, clearing them`),n.forEach((e,n)=>{this.removeIdToken(n,t)}),i&&t&&i.addFields({multiMatchedID:o.size},t),null}return this.commonLogger.info(`CacheManager:getIdToken - Returning ID token`),o.values().next().value}getIdTokensByFilter(e,t,n){let r=n&&n.idToken||this.getTokenKeys().idToken,i=new Map;return r.forEach(n=>{if(!this.idTokenKeyMatchesFilter(n,{clientId:this.clientId,...e}))return;let r=this.getIdTokenCredential(n,t);r&&this.credentialMatchesFilter(r,e)&&i.set(n,r)}),i}idTokenKeyMatchesFilter(e,t){let n=e.toLowerCase();return!(t.clientId&&n.indexOf(t.clientId.toLowerCase())===-1||t.homeAccountId&&n.indexOf(t.homeAccountId.toLowerCase())===-1)}removeIdToken(e,t){this.removeItem(e,t)}removeRefreshToken(e,t){this.removeItem(e,t)}getAccessToken(e,t,n,r){let i=t.correlationId;this.commonLogger.trace(`CacheManager - getAccessToken called`,i);let a=Tt.createSearchScopes(t.scopes),o=t.authenticationScheme||j.BEARER,s=o.toLowerCase()===j.BEARER.toLowerCase()?E.ACCESS_TOKEN:E.ACCESS_TOKEN_WITH_AUTH_SCHEME,c={homeAccountId:e.homeAccountId,environment:e.environment,credentialType:s,clientId:this.clientId,realm:r||e.tenantId,target:a,tokenType:o,keyId:t.sshKid,requestedClaimsHash:t.requestedClaimsHash},l=n&&n.accessToken||this.getTokenKeys().accessToken,u=[];l.forEach(e=>{if(this.accessTokenKeyMatchesFilter(e,c,!0)){let t=this.getAccessTokenCredential(e,i);t&&this.credentialMatchesFilter(t,c)&&u.push(t)}});let d=u.length;return d<1?(this.commonLogger.info(`CacheManager:getAccessToken - No token found`,i),null):d>1?(this.commonLogger.info(`CacheManager:getAccessToken - Multiple access tokens found, clearing them`,i),u.forEach(e=>{this.removeAccessToken(this.generateCredentialKey(e),i)}),this.performanceClient.addFields({multiMatchedAT:u.length},i),null):(this.commonLogger.info(`CacheManager:getAccessToken - Returning access token`,i),u[0])}accessTokenKeyMatchesFilter(e,t,n){let r=e.toLowerCase();if(t.clientId&&r.indexOf(t.clientId.toLowerCase())===-1||t.homeAccountId&&r.indexOf(t.homeAccountId.toLowerCase())===-1||t.realm&&r.indexOf(t.realm.toLowerCase())===-1||t.requestedClaimsHash&&r.indexOf(t.requestedClaimsHash.toLowerCase())===-1)return!1;if(t.target){let e=t.target.asArray();for(let t=0;t{if(!this.accessTokenKeyMatchesFilter(n,e,!0))return;let i=this.getAccessTokenCredential(n,t);i&&this.credentialMatchesFilter(i,e)&&r.push(i)}),r}getRefreshToken(e,t,n,r,i){this.commonLogger.trace(`CacheManager - getRefreshToken called`);let a=t?`1`:void 0,o={homeAccountId:e.homeAccountId,environment:e.environment,credentialType:E.REFRESH_TOKEN,clientId:this.clientId,familyId:a},s=r&&r.refreshToken||this.getTokenKeys().refreshToken,c=[];s.forEach(e=>{if(this.refreshTokenKeyMatchesFilter(e,o)){let t=this.getRefreshTokenCredential(e,n);t&&this.credentialMatchesFilter(t,o)&&c.push(t)}});let l=c.length;return l<1?(this.commonLogger.info(`CacheManager:getRefreshToken - No refresh token found.`),null):(l>1&&i&&n&&i.addFields({multiMatchedRT:l},n),this.commonLogger.info(`CacheManager:getRefreshToken - returning refresh token`),c[0])}refreshTokenKeyMatchesFilter(e,t){let n=e.toLowerCase();return!(t.familyId&&n.indexOf(t.familyId.toLowerCase())===-1||!t.familyId&&t.clientId&&n.indexOf(t.clientId.toLowerCase())===-1||t.homeAccountId&&n.indexOf(t.homeAccountId.toLowerCase())===-1)}readAppMetadataFromCache(e){let t={environment:e,clientId:this.clientId},n=this.getAppMetadataFilteredBy(t),r=Object.keys(n).map(e=>n[e]),i=r.length;if(i<1)return null;if(i>1)throw Y(ge);return r[0]}isAppMetadataFOCI(e){let t=this.readAppMetadataFromCache(e);return!!(t&&t.familyId===`1`)}matchHomeAccountId(e,t){return typeof e.homeAccountId==`string`&&t===e.homeAccountId}matchLocalAccountIdFromTokenClaims(e,t){return t===(e.oid||e.sub)}matchLocalAccountIdFromTenantProfile(e,t){return e.localAccountId===t}matchName(e,t){return t.toLowerCase()===e.name?.toLowerCase()}matchUsername(e,t){return!!(e&&typeof e==`string`&&t?.toLowerCase()===e.toLowerCase())}matchUserAssertionHash(e,t){return!!(e.userAssertionHash&&t===e.userAssertionHash)}matchEnvironment(e,t){if(this.staticAuthorityOptions){let n=Gt(this.staticAuthorityOptions,this.commonLogger);if(n.includes(t)&&n.includes(e.environment))return!0}let n=this.getAuthorityMetadataByAlias(t);return!!(n&&n.aliases.indexOf(e.environment)>-1)}matchCredentialType(e,t){return e.credentialType&&t.toLowerCase()===e.credentialType.toLowerCase()}matchClientId(e,t){return!!(e.clientId&&t===e.clientId)}matchFamilyId(e,t){return!!(e.familyId&&t===e.familyId)}matchRealm(e,t){return e.realm?.toLowerCase()===t.toLowerCase()}matchNativeAccountId(e,t){return!!(e.nativeAccountId&&t===e.nativeAccountId)}matchLoginHintFromTokenClaims(e,t){return e.login_hint===t||e.preferred_username===t||e.upn===t}matchSid(e,t){return e.sid===t}matchAuthorityType(e,t){return!!(e.authorityType&&t.toLowerCase()===e.authorityType.toLowerCase())}matchTarget(e,t){return e.credentialType!==E.ACCESS_TOKEN&&e.credentialType!==E.ACCESS_TOKEN_WITH_AUTH_SCHEME||!e.target?!1:Tt.fromString(e.target).containsScopeSet(t)}matchTokenType(e,t){return!!(e.tokenType&&e.tokenType===t)}matchKeyId(e,t){return!!(e.keyId&&e.keyId===t)}isAppMetadata(e){return e.indexOf(D)!==-1}isAuthorityMetadata(e){return e.indexOf(O.CACHE_KEY)!==-1}generateAuthorityMetadataCacheKey(e){return`${O.CACHE_KEY}-${this.clientId}-${e}`}static toObject(e,t){for(let n in t)e[n]=t[n];return e}},tn=class extends en{async setAccount(){throw Y(Ve)}getAccount(){throw Y(Ve)}async setIdTokenCredential(){throw Y(Ve)}getIdTokenCredential(){throw Y(Ve)}async setAccessTokenCredential(){throw Y(Ve)}getAccessTokenCredential(){throw Y(Ve)}async setRefreshTokenCredential(){throw Y(Ve)}getRefreshTokenCredential(){throw Y(Ve)}setAppMetadata(){throw Y(Ve)}getAppMetadata(){throw Y(Ve)}setServerTelemetry(){throw Y(Ve)}getServerTelemetry(){throw Y(Ve)}setAuthorityMetadata(){throw Y(Ve)}getAuthorityMetadata(){throw Y(Ve)}getAuthorityMetadataKeys(){throw Y(Ve)}setThrottlingCache(){throw Y(Ve)}getThrottlingCache(){throw Y(Ve)}removeItem(){throw Y(Ve)}getKeys(){throw Y(Ve)}getAccountKeys(){throw Y(Ve)}getTokenKeys(){throw Y(Ve)}generateCredentialKey(){throw Y(Ve)}generateAccountKey(){throw Y(Ve)}}; +/*! @azure/msal-common v15.13.2 2025-11-19 */ +let $={AcquireTokenByCode:`acquireTokenByCode`,AcquireTokenByRefreshToken:`acquireTokenByRefreshToken`,AcquireTokenSilent:`acquireTokenSilent`,AcquireTokenSilentAsync:`acquireTokenSilentAsync`,AcquireTokenPopup:`acquireTokenPopup`,AcquireTokenPreRedirect:`acquireTokenPreRedirect`,AcquireTokenRedirect:`acquireTokenRedirect`,CryptoOptsGetPublicKeyThumbprint:`cryptoOptsGetPublicKeyThumbprint`,CryptoOptsSignJwt:`cryptoOptsSignJwt`,SilentCacheClientAcquireToken:`silentCacheClientAcquireToken`,SilentIframeClientAcquireToken:`silentIframeClientAcquireToken`,AwaitConcurrentIframe:`awaitConcurrentIframe`,SilentRefreshClientAcquireToken:`silentRefreshClientAcquireToken`,SsoSilent:`ssoSilent`,StandardInteractionClientGetDiscoveredAuthority:`standardInteractionClientGetDiscoveredAuthority`,FetchAccountIdWithNativeBroker:`fetchAccountIdWithNativeBroker`,NativeInteractionClientAcquireToken:`nativeInteractionClientAcquireToken`,BaseClientCreateTokenRequestHeaders:`baseClientCreateTokenRequestHeaders`,NetworkClientSendPostRequestAsync:`networkClientSendPostRequestAsync`,RefreshTokenClientExecutePostToTokenEndpoint:`refreshTokenClientExecutePostToTokenEndpoint`,AuthorizationCodeClientExecutePostToTokenEndpoint:`authorizationCodeClientExecutePostToTokenEndpoint`,BrokerHandhshake:`brokerHandshake`,AcquireTokenByRefreshTokenInBroker:`acquireTokenByRefreshTokenInBroker`,AcquireTokenByBroker:`acquireTokenByBroker`,RefreshTokenClientExecuteTokenRequest:`refreshTokenClientExecuteTokenRequest`,RefreshTokenClientAcquireToken:`refreshTokenClientAcquireToken`,RefreshTokenClientAcquireTokenWithCachedRefreshToken:`refreshTokenClientAcquireTokenWithCachedRefreshToken`,RefreshTokenClientAcquireTokenByRefreshToken:`refreshTokenClientAcquireTokenByRefreshToken`,RefreshTokenClientCreateTokenRequestBody:`refreshTokenClientCreateTokenRequestBody`,AcquireTokenFromCache:`acquireTokenFromCache`,SilentFlowClientAcquireCachedToken:`silentFlowClientAcquireCachedToken`,SilentFlowClientGenerateResultFromCacheRecord:`silentFlowClientGenerateResultFromCacheRecord`,AcquireTokenBySilentIframe:`acquireTokenBySilentIframe`,InitializeBaseRequest:`initializeBaseRequest`,InitializeSilentRequest:`initializeSilentRequest`,InitializeClientApplication:`initializeClientApplication`,InitializeCache:`initializeCache`,SilentIframeClientTokenHelper:`silentIframeClientTokenHelper`,SilentHandlerInitiateAuthRequest:`silentHandlerInitiateAuthRequest`,SilentHandlerMonitorIframeForHash:`silentHandlerMonitorIframeForHash`,SilentHandlerLoadFrame:`silentHandlerLoadFrame`,SilentHandlerLoadFrameSync:`silentHandlerLoadFrameSync`,StandardInteractionClientCreateAuthCodeClient:`standardInteractionClientCreateAuthCodeClient`,StandardInteractionClientGetClientConfiguration:`standardInteractionClientGetClientConfiguration`,StandardInteractionClientInitializeAuthorizationRequest:`standardInteractionClientInitializeAuthorizationRequest`,GetAuthCodeUrl:`getAuthCodeUrl`,GetStandardParams:`getStandardParams`,HandleCodeResponseFromServer:`handleCodeResponseFromServer`,HandleCodeResponse:`handleCodeResponse`,HandleResponseEar:`handleResponseEar`,HandleResponsePlatformBroker:`handleResponsePlatformBroker`,HandleResponseCode:`handleResponseCode`,UpdateTokenEndpointAuthority:`updateTokenEndpointAuthority`,AuthClientAcquireToken:`authClientAcquireToken`,AuthClientExecuteTokenRequest:`authClientExecuteTokenRequest`,AuthClientCreateTokenRequestBody:`authClientCreateTokenRequestBody`,PopTokenGenerateCnf:`popTokenGenerateCnf`,PopTokenGenerateKid:`popTokenGenerateKid`,HandleServerTokenResponse:`handleServerTokenResponse`,DeserializeResponse:`deserializeResponse`,AuthorityFactoryCreateDiscoveredInstance:`authorityFactoryCreateDiscoveredInstance`,AuthorityResolveEndpointsAsync:`authorityResolveEndpointsAsync`,AuthorityResolveEndpointsFromLocalSources:`authorityResolveEndpointsFromLocalSources`,AuthorityGetCloudDiscoveryMetadataFromNetwork:`authorityGetCloudDiscoveryMetadataFromNetwork`,AuthorityUpdateCloudDiscoveryMetadata:`authorityUpdateCloudDiscoveryMetadata`,AuthorityGetEndpointMetadataFromNetwork:`authorityGetEndpointMetadataFromNetwork`,AuthorityUpdateEndpointMetadata:`authorityUpdateEndpointMetadata`,AuthorityUpdateMetadataWithRegionalInformation:`authorityUpdateMetadataWithRegionalInformation`,RegionDiscoveryDetectRegion:`regionDiscoveryDetectRegion`,RegionDiscoveryGetRegionFromIMDS:`regionDiscoveryGetRegionFromIMDS`,RegionDiscoveryGetCurrentVersion:`regionDiscoveryGetCurrentVersion`,AcquireTokenByCodeAsync:`acquireTokenByCodeAsync`,GetEndpointMetadataFromNetwork:`getEndpointMetadataFromNetwork`,GetCloudDiscoveryMetadataFromNetworkMeasurement:`getCloudDiscoveryMetadataFromNetworkMeasurement`,HandleRedirectPromiseMeasurement:`handleRedirectPromise`,HandleNativeRedirectPromiseMeasurement:`handleNativeRedirectPromise`,UpdateCloudDiscoveryMetadataMeasurement:`updateCloudDiscoveryMetadataMeasurement`,UsernamePasswordClientAcquireToken:`usernamePasswordClientAcquireToken`,NativeMessageHandlerHandshake:`nativeMessageHandlerHandshake`,NativeGenerateAuthResult:`nativeGenerateAuthResult`,RemoveHiddenIframe:`removeHiddenIframe`,ClearTokensAndKeysWithClaims:`clearTokensAndKeysWithClaims`,CacheManagerGetRefreshToken:`cacheManagerGetRefreshToken`,ImportExistingCache:`importExistingCache`,SetUserData:`setUserData`,LocalStorageUpdated:`localStorageUpdated`,GeneratePkceCodes:`generatePkceCodes`,GenerateCodeVerifier:`generateCodeVerifier`,GenerateCodeChallengeFromVerifier:`generateCodeChallengeFromVerifier`,Sha256Digest:`sha256Digest`,GetRandomValues:`getRandomValues`,GenerateHKDF:`generateHKDF`,GenerateBaseKey:`generateBaseKey`,Base64Decode:`base64Decode`,UrlEncodeArr:`urlEncodeArr`,Encrypt:`encrypt`,Decrypt:`decrypt`,GenerateEarKey:`generateEarKey`,DecryptEarResponse:`decryptEarResponse`},nn={InProgress:1}; +/*! @azure/msal-common v15.13.2 2025-11-19 */ +var rn=class{startMeasurement(){}endMeasurement(){}flushMeasurement(){return null}},an=class{generateId(){return`callback-id`}startMeasurement(e,t){return{end:()=>null,discard:()=>{},add:()=>{},increment:()=>{},event:{eventId:this.generateId(),status:nn.InProgress,authority:``,libraryName:``,libraryVersion:``,clientId:``,name:e,startTimeMs:Date.now(),correlationId:t||``},measurement:new rn}}startPerformanceMeasurement(){return new rn}calculateQueuedTime(){return 0}addQueueMeasurement(){}setPreQueueTime(){}endMeasurement(){return null}discardMeasurements(){}removePerformanceCallback(){return!0}addPerformanceCallback(){return``}emitEvents(){}addFields(){}incrementFields(){}cacheEventByCorrelationId(){}}; +/*! @azure/msal-common v15.13.2 2025-11-19 */ +let on={tokenRenewalOffsetSeconds:300,preventCorsPreflight:!1},sn={loggerCallback:()=>{},piiLoggingEnabled:!1,logLevel:e.LogLevel.Info,correlationId:u.EMPTY_STRING},cn={claimsBasedCachingEnabled:!1},ln={async sendGetRequestAsync(){throw Y(Ve)},async sendPostRequestAsync(){throw Y(Ve)}},un={sku:u.SKU,version:Ye,cpu:u.EMPTY_STRING,os:u.EMPTY_STRING},dn={clientSecret:u.EMPTY_STRING,clientAssertion:void 0},fn={azureCloudInstance:Xe.None,tenant:`${u.DEFAULT_COMMON_TENANT}`},pn={application:{appName:``,appVersion:``}};function mn({authOptions:e,systemOptions:t,loggerOptions:n,cacheOptions:r,storageInterface:i,networkInterface:a,cryptoInterface:o,clientCredentials:s,libraryInfo:c,telemetry:l,serverTelemetryManager:u,persistencePlugin:d,serializableCache:f}){let p={...sn,...n};return{authOptions:hn(e),systemOptions:{...on,...t},loggerOptions:p,cacheOptions:{...cn,...r},storageInterface:i||new tn(e.clientId,Ke,new qe(p),new an),networkInterface:a||ln,cryptoInterface:o||Ke,clientCredentials:s||dn,libraryInfo:{...un,...c},telemetry:{...pn,...l},serverTelemetryManager:u||null,persistencePlugin:d||null,serializableCache:f||null}}function hn(e){return{clientCapabilities:[],azureCloudOptions:fn,skipAuthorityMetadataCache:!1,instanceAware:!1,encodeExtraQueryParams:!1,...e}}function gn(e){return e.authOptions.authority.options.protocolMode===Nt.OIDC} +/*! @azure/msal-common v15.13.2 2025-11-19 */ +let _n={HOME_ACCOUNT_ID:`home_account_id`,UPN:`UPN`},vn=`client_id`,yn=`redirect_uri`,bn=`token_type`,xn=`req_cnf`,Sn=`return_spa_code`,Cn=`x-client-xtra-sku`,wn=`brk_client_id`,Tn=`brk_redirect_uri`,En=`instance_aware`; +/*! @azure/msal-common v15.13.2 2025-11-19 */ +function Dn(e,t,n){if(!t)return;let r=e.get(vn);r&&e.has(wn)&&n?.addFields({embeddedClientId:r,embeddedRedirectUri:e.get(yn)},t)}function On(e,t){e.set(`response_type`,t)}function kn(e,t){e.set(`response_mode`,t||b.QUERY)}function An(e,t,n=!0,r=f){n&&!r.includes(`openid`)&&!t.includes(`openid`)&&r.push(`openid`);let i=new Tt(n?[...t||[],...r]:t||[]);e.set(`scope`,i.printScopes())}function jn(e,t){e.set(vn,t)}function Mn(e,t){e.set(yn,t)}function Nn(e,t){e.set(`post_logout_redirect_uri`,t)}function Pn(e,t){e.set(`id_token_hint`,t)}function Fn(e,t){e.set(`domain_hint`,t)}function In(e,t){e.set(`login_hint`,t)}function Ln(e,t){e.set(m.CCS_HEADER,`UPN:${t}`)}function Rn(e,t){e.set(m.CCS_HEADER,`Oid:${t.uid}@${t.utid}`)}function zn(e,t){e.set(`sid`,t)}function Bn(e,t,n){let r=sr(t,n);try{JSON.parse(r)}catch{throw Ct(rt)}e.set(`claims`,r)}function Vn(e,t){e.set(`client-request-id`,t)}function Hn(e,t){e.set(`x-client-SKU`,t.sku),e.set(`x-client-VER`,t.version),t.os&&e.set(`x-client-OS`,t.os),t.cpu&&e.set(`x-client-CPU`,t.cpu)}function Un(e,t){t?.appName&&e.set(`x-app-name`,t.appName),t?.appVersion&&e.set(`x-app-ver`,t.appVersion)}function Wn(e,t){e.set(`prompt`,t)}function Gn(e,t){t&&e.set(`state`,t)}function Kn(e,t){e.set(`nonce`,t)}function qn(e,t,n){if(t&&n)e.set(`code_challenge`,t),e.set(`code_challenge_method`,n);else throw Ct(st)}function Jn(e,t){e.set(`code`,t)}function Yn(e,t){e.set(`device_code`,t)}function Xn(e,t){e.set(`refresh_token`,t)}function Zn(e,t){e.set(`code_verifier`,t)}function Qn(e,t){e.set(`client_secret`,t)}function $n(e,t){t&&e.set(`client_assertion`,t)}function er(e,t){t&&e.set(`client_assertion_type`,t)}function tr(e,t){e.set(`assertion`,t)}function nr(e,t){e.set(`requested_token_use`,t)}function rr(e,t){e.set(`grant_type`,t)}function ir(e){e.set(`client_info`,`1`)}function ar(e){e.has(En)||e.set(En,`true`)}function or(e,t){Object.entries(t).forEach(([t,n])=>{!e.has(t)&&n&&e.set(t,n)})}function sr(e,t){let n;if(!e)n={};else try{n=JSON.parse(e)}catch{throw Ct(rt)}return t&&t.length>0&&(n.hasOwnProperty(g.ACCESS_TOKEN)||(n[g.ACCESS_TOKEN]={}),n[g.ACCESS_TOKEN][g.XMS_CC]={values:t}),JSON.stringify(n)}function cr(e,t){e.set(ee.username,t)}function lr(e,t){e.set(ee.password,t)}function ur(e,t){t&&(e.set(bn,j.POP),e.set(xn,t))}function dr(e,t){t&&(e.set(bn,j.SSH),e.set(xn,t))}function fr(e,t){e.set(`x-client-current-telemetry`,t.generateCurrentRequestHeaderValue()),e.set(`x-client-last-telemetry`,t.generateLastRequestHeaderValue())}function pr(e){e.set(`x-ms-lib-capability`,M.X_MS_LIB_CAPABILITY_VALUE)}function mr(e,t){e.set(`logout_hint`,t)}function hr(e,t,n){e.has(wn)||e.set(wn,t),e.has(Tn)||e.set(Tn,n)} +/*! @azure/msal-common v15.13.2 2025-11-19 */ +function gr(e){return e.hasOwnProperty(`authorization_endpoint`)&&e.hasOwnProperty(`token_endpoint`)&&e.hasOwnProperty(`issuer`)&&e.hasOwnProperty(`jwks_uri`)} +/*! @azure/msal-common v15.13.2 2025-11-19 */ +function _r(e){return e.hasOwnProperty(`tenant_discovery_endpoint`)&&e.hasOwnProperty(`metadata`)} +/*! @azure/msal-common v15.13.2 2025-11-19 */ +function vr(e){return e.hasOwnProperty(`error`)&&e.hasOwnProperty(`error_description`)} +/*! @azure/msal-common v15.13.2 2025-11-19 */ +let yr=(e,t,n,r,i)=>(...a)=>{n.trace(`Executing function ${t}`);let o=r?.startMeasurement(t,i);if(i){let e=t+`CallCount`;r?.incrementFields({[e]:1},i)}try{let r=e(...a);return o?.end({success:!0}),n.trace(`Returning result from ${t}`),r}catch(e){n.trace(`Error occurred in ${t}`);try{n.trace(JSON.stringify(e))}catch{n.trace(`Unable to print error message.`)}throw o?.end({success:!1},e),e}},br=(e,t,n,r,i)=>(...a)=>{n.trace(`Executing function ${t}`);let o=r?.startMeasurement(t,i);if(i){let e=t+`CallCount`;r?.incrementFields({[e]:1},i)}return r?.setPreQueueTime(t,i),e(...a).then(e=>(n.trace(`Returning result from ${t}`),o?.end({success:!0}),e)).catch(e=>{n.trace(`Error occurred in ${t}`);try{n.trace(JSON.stringify(e))}catch{n.trace(`Unable to print error message.`)}throw o?.end({success:!1},e),e})}; +/*! @azure/msal-common v15.13.2 2025-11-19 */ +var xr=class e{constructor(e,t,n,r){this.networkInterface=e,this.logger=t,this.performanceClient=n,this.correlationId=r}async detectRegion(t,n){this.performanceClient?.addQueueMeasurement($.RegionDiscoveryDetectRegion,this.correlationId);let r=t;if(r)n.region_source=P.ENVIRONMENT_VARIABLE;else{let t=e.IMDS_OPTIONS;try{let e=await br(this.getRegionFromIMDS.bind(this),$.RegionDiscoveryGetRegionFromIMDS,this.logger,this.performanceClient,this.correlationId)(u.IMDS_VERSION,t);if(e.status===d.SUCCESS&&(r=e.body,n.region_source=P.IMDS),e.status===d.BAD_REQUEST){let e=await br(this.getCurrentVersion.bind(this),$.RegionDiscoveryGetCurrentVersion,this.logger,this.performanceClient,this.correlationId)(t);if(!e)return n.region_source=P.FAILED_AUTO_DETECTION,null;let i=await br(this.getRegionFromIMDS.bind(this),$.RegionDiscoveryGetRegionFromIMDS,this.logger,this.performanceClient,this.correlationId)(e,t);i.status===d.SUCCESS&&(r=i.body,n.region_source=P.IMDS)}}catch{return n.region_source=P.FAILED_AUTO_DETECTION,null}}return r||(n.region_source=P.FAILED_AUTO_DETECTION),r||null}async getRegionFromIMDS(e,t){return this.performanceClient?.addQueueMeasurement($.RegionDiscoveryGetRegionFromIMDS,this.correlationId),this.networkInterface.sendGetRequestAsync(`${u.IMDS_ENDPOINT}?api-version=${e}&format=text`,t,u.IMDS_TIMEOUT)}async getCurrentVersion(e){this.performanceClient?.addQueueMeasurement($.RegionDiscoveryGetCurrentVersion,this.correlationId);try{let t=await this.networkInterface.sendGetRequestAsync(`${u.IMDS_ENDPOINT}?format=json`,e);return t.status===d.BAD_REQUEST&&t.body&&t.body[`newest-versions`]&&t.body[`newest-versions`].length>0?t.body[`newest-versions`][0]:null}catch{return null}}};xr.IMDS_OPTIONS={headers:{Metadata:`true`}}; +/*! @azure/msal-common v15.13.2 2025-11-19 */ +function Sr(){return Math.round(new Date().getTime()/1e3)}function Cr(e){return e?new Date(Number(e)*1e3):new Date}function wr(e,t){let n=Number(e)||0;return Sr()+t>n}function Tr(e){return Number(e)>Sr()}function Er(e,t){return new Promise(n=>setTimeout(()=>n(t),e))} +/*! @azure/msal-common v15.13.2 2025-11-19 */ +function Dr(e,t,n,r,i){return{credentialType:E.ID_TOKEN,homeAccountId:e,environment:t,clientId:r,secret:n,realm:i,lastUpdatedAt:Date.now().toString()}}function Or(e,t,n,r,i,a,o,s,c,l,u,d,f,p,m){let h={homeAccountId:e,credentialType:E.ACCESS_TOKEN,secret:n,cachedAt:Sr().toString(),expiresOn:o.toString(),extendedExpiresOn:s.toString(),environment:t,clientId:r,realm:i,target:a,tokenType:u||j.BEARER,lastUpdatedAt:Date.now().toString()};if(d&&(h.userAssertionHash=d),l&&(h.refreshOn=l.toString()),p&&(h.requestedClaims=p,h.requestedClaimsHash=m),h.tokenType?.toLowerCase()!==j.BEARER.toLowerCase())switch(h.credentialType=E.ACCESS_TOKEN_WITH_AUTH_SCHEME,h.tokenType){case j.POP:let e=Ft(n,c);if(!e?.cnf?.kid)throw Y(Pe);h.keyId=e.cnf.kid;break;case j.SSH:h.keyId=f}return h}function kr(e,t,n,r,i,a,o){let s={credentialType:E.REFRESH_TOKEN,homeAccountId:e,environment:t,clientId:r,secret:n,lastUpdatedAt:Date.now().toString()};return a&&(s.userAssertionHash=a),i&&(s.familyId=i),o&&(s.expiresOn=o.toString()),s}function Ar(e){return e.hasOwnProperty(`homeAccountId`)&&e.hasOwnProperty(`environment`)&&e.hasOwnProperty(`credentialType`)&&e.hasOwnProperty(`clientId`)&&e.hasOwnProperty(`secret`)}function jr(e){return e?Ar(e)&&e.hasOwnProperty(`realm`)&&e.hasOwnProperty(`target`)&&(e.credentialType===E.ACCESS_TOKEN||e.credentialType===E.ACCESS_TOKEN_WITH_AUTH_SCHEME):!1}function Mr(e){return e?Ar(e)&&e.hasOwnProperty(`realm`)&&e.credentialType===E.ID_TOKEN:!1}function Nr(e){return e?Ar(e)&&e.credentialType===E.REFRESH_TOKEN:!1}function Pr(e,t){let n=e.indexOf(A.CACHE_KEY)===0,r=!0;return t&&(r=t.hasOwnProperty(`failedRequests`)&&t.hasOwnProperty(`errors`)&&t.hasOwnProperty(`cacheHits`)),n&&r}function Fr(e,t){let n=!1;e&&(n=e.indexOf(M.THROTTLING_PREFIX)===0);let r=!0;return t&&(r=t.hasOwnProperty(`throttleTime`)),n&&r}function Ir({environment:e,clientId:t}){return[D,e,t].join(C.CACHE_KEY_SEPARATOR).toLowerCase()}function Lr(e,t){return t?e.indexOf(D)===0&&t.hasOwnProperty(`clientId`)&&t.hasOwnProperty(`environment`):!1}function Rr(e,t){return t?e.indexOf(O.CACHE_KEY)===0&&t.hasOwnProperty(`aliases`)&&t.hasOwnProperty(`preferred_cache`)&&t.hasOwnProperty(`preferred_network`)&&t.hasOwnProperty(`canonical_authority`)&&t.hasOwnProperty(`authorization_endpoint`)&&t.hasOwnProperty(`token_endpoint`)&&t.hasOwnProperty(`issuer`)&&t.hasOwnProperty(`aliasesFromNetwork`)&&t.hasOwnProperty(`endpointsFromNetwork`)&&t.hasOwnProperty(`expiresAt`)&&t.hasOwnProperty(`jwks_uri`):!1}function zr(){return Sr()+O.REFRESH_TIME_SECONDS}function Br(e,t,n){e.authorization_endpoint=t.authorization_endpoint,e.token_endpoint=t.token_endpoint,e.end_session_endpoint=t.end_session_endpoint,e.issuer=t.issuer,e.endpointsFromNetwork=n,e.jwks_uri=t.jwks_uri}function Vr(e,t,n){e.aliases=t.aliases,e.preferred_cache=t.preferred_cache,e.preferred_network=t.preferred_network,e.aliasesFromNetwork=n}function Hr(e){return e.expiresAt<=Sr()} +/*! @azure/msal-common v15.13.2 2025-11-19 */ +var Ur=class e{constructor(e,t,n,r,i,a,o,s){this.canonicalAuthority=e,this._canonicalAuthority.validateAsUri(),this.networkInterface=t,this.cacheManager=n,this.authorityOptions=r,this.regionDiscoveryMetadata={region_used:void 0,region_source:void 0,region_outcome:void 0},this.logger=i,this.performanceClient=o,this.correlationId=a,this.managedIdentity=s||!1,this.regionDiscovery=new xr(t,this.logger,this.performanceClient,this.correlationId)}getAuthorityType(e){if(e.HostNameAndPort.endsWith(u.CIAM_AUTH_URL))return jt.Ciam;let t=e.PathSegments;if(t.length)switch(t[0].toLowerCase()){case u.ADFS:return jt.Adfs;case u.DSTS:return jt.Dsts}return jt.Default}get authorityType(){return this.getAuthorityType(this.canonicalAuthorityUrlComponents)}get protocolMode(){return this.authorityOptions.protocolMode}get options(){return this.authorityOptions}get canonicalAuthority(){return this._canonicalAuthority.urlString}set canonicalAuthority(e){this._canonicalAuthority=new Q(e),this._canonicalAuthority.validateAsUri(),this._canonicalAuthorityUrlComponents=null}get canonicalAuthorityUrlComponents(){return this._canonicalAuthorityUrlComponents||=this._canonicalAuthority.getUrlComponents(),this._canonicalAuthorityUrlComponents}get hostnameAndPort(){return this.canonicalAuthorityUrlComponents.HostNameAndPort.toLowerCase()}get tenant(){return this.canonicalAuthorityUrlComponents.PathSegments[0]}get authorizationEndpoint(){if(this.discoveryComplete())return this.replacePath(this.metadata.authorization_endpoint);throw Y(ae)}get tokenEndpoint(){if(this.discoveryComplete())return this.replacePath(this.metadata.token_endpoint);throw Y(ae)}get deviceCodeEndpoint(){if(this.discoveryComplete())return this.replacePath(this.metadata.token_endpoint.replace(`/token`,`/devicecode`));throw Y(ae)}get endSessionEndpoint(){if(this.discoveryComplete()){if(!this.metadata.end_session_endpoint)throw Y(Le);return this.replacePath(this.metadata.end_session_endpoint)}else throw Y(ae)}get selfSignedJwtAudience(){if(this.discoveryComplete())return this.replacePath(this.metadata.issuer);throw Y(ae)}get jwksUri(){if(this.discoveryComplete())return this.replacePath(this.metadata.jwks_uri);throw Y(ae)}canReplaceTenant(t){return t.PathSegments.length===1&&!e.reservedTenantDomains.has(t.PathSegments[0])&&this.getAuthorityType(t)===jt.Default&&this.protocolMode!==Nt.OIDC}replaceTenant(e){return e.replace(/{tenant}|{tenantid}/g,this.tenant)}replacePath(e){let t=e,n=new Q(this.metadata.canonical_authority).getUrlComponents(),r=n.PathSegments;return this.canonicalAuthorityUrlComponents.PathSegments.forEach((e,i)=>{let a=r[i];if(i===0&&this.canReplaceTenant(n)){let e=new Q(this.metadata.authorization_endpoint).getUrlComponents().PathSegments[0];a!==e&&(this.logger.verbose(`Replacing tenant domain name ${a} with id ${e}`),a=e)}e!==a&&(t=t.replace(`/${a}/`,`/${e}/`))}),this.replaceTenant(t)}get defaultOpenIdConfigurationEndpoint(){let e=this.hostnameAndPort;return this.canonicalAuthority.endsWith(`v2.0/`)||this.authorityType===jt.Adfs||this.protocolMode===Nt.OIDC&&!this.isAliasOfKnownMicrosoftAuthority(e)?`${this.canonicalAuthority}.well-known/openid-configuration`:`${this.canonicalAuthority}v2.0/.well-known/openid-configuration`}discoveryComplete(){return!!this.metadata}async resolveEndpointsAsync(){this.performanceClient?.addQueueMeasurement($.AuthorityResolveEndpointsAsync,this.correlationId);let e=this.getCurrentMetadataEntity(),t=await br(this.updateCloudDiscoveryMetadata.bind(this),$.AuthorityUpdateCloudDiscoveryMetadata,this.logger,this.performanceClient,this.correlationId)(e);this.canonicalAuthority=this.canonicalAuthority.replace(this.hostnameAndPort,e.preferred_network);let n=await br(this.updateEndpointMetadata.bind(this),$.AuthorityUpdateEndpointMetadata,this.logger,this.performanceClient,this.correlationId)(e);this.updateCachedMetadata(e,t,{source:n}),this.performanceClient?.addFields({cloudDiscoverySource:t,authorityEndpointSource:n},this.correlationId)}getCurrentMetadataEntity(){let e=this.cacheManager.getAuthorityMetadataByAlias(this.hostnameAndPort);return e||={aliases:[],preferred_cache:this.hostnameAndPort,preferred_network:this.hostnameAndPort,canonical_authority:this.canonicalAuthority,authorization_endpoint:``,token_endpoint:``,end_session_endpoint:``,issuer:``,aliasesFromNetwork:!1,endpointsFromNetwork:!1,expiresAt:zr(),jwks_uri:``},e}updateCachedMetadata(e,t,n){t!==k.CACHE&&n?.source!==k.CACHE&&(e.expiresAt=zr(),e.canonical_authority=this.canonicalAuthority);let r=this.cacheManager.generateAuthorityMetadataCacheKey(e.preferred_cache);this.cacheManager.setAuthorityMetadata(r,e),this.metadata=e}async updateEndpointMetadata(e){this.performanceClient?.addQueueMeasurement($.AuthorityUpdateEndpointMetadata,this.correlationId);let t=this.updateEndpointMetadataFromLocalSources(e);if(t)return t.source===k.HARDCODED_VALUES&&this.authorityOptions.azureRegionConfiguration?.azureRegion&&t.metadata&&(Br(e,await br(this.updateMetadataWithRegionalInformation.bind(this),$.AuthorityUpdateMetadataWithRegionalInformation,this.logger,this.performanceClient,this.correlationId)(t.metadata),!1),e.canonical_authority=this.canonicalAuthority),t.source;let n=await br(this.getEndpointMetadataFromNetwork.bind(this),$.AuthorityGetEndpointMetadataFromNetwork,this.logger,this.performanceClient,this.correlationId)();if(n)return this.authorityOptions.azureRegionConfiguration?.azureRegion&&(n=await br(this.updateMetadataWithRegionalInformation.bind(this),$.AuthorityUpdateMetadataWithRegionalInformation,this.logger,this.performanceClient,this.correlationId)(n)),Br(e,n,!0),k.NETWORK;throw Y(oe,this.defaultOpenIdConfigurationEndpoint)}updateEndpointMetadataFromLocalSources(e){this.logger.verbose(`Attempting to get endpoint metadata from authority configuration`);let t=this.getEndpointMetadataFromConfig();if(t)return this.logger.verbose(`Found endpoint metadata in authority configuration`),Br(e,t,!1),{source:k.CONFIG};if(this.logger.verbose(`Did not find endpoint metadata in the config... Attempting to get endpoint metadata from the hardcoded values.`),this.authorityOptions.skipAuthorityMetadataCache)this.logger.verbose(`Skipping hardcoded metadata cache since skipAuthorityMetadataCache is set to true. Attempting to get endpoint metadata from the network metadata cache.`);else{let t=this.getEndpointMetadataFromHardcodedValues();if(t)return Br(e,t,!1),{source:k.HARDCODED_VALUES,metadata:t};this.logger.verbose(`Did not find endpoint metadata in hardcoded values... Attempting to get endpoint metadata from the network metadata cache.`)}let n=Hr(e);return this.isAuthoritySameType(e)&&e.endpointsFromNetwork&&!n?(this.logger.verbose(`Found endpoint metadata in the cache.`),{source:k.CACHE}):(n&&this.logger.verbose(`The metadata entity is expired.`),null)}isAuthoritySameType(e){return new Q(e.canonical_authority).getUrlComponents().PathSegments.length===this.canonicalAuthorityUrlComponents.PathSegments.length}getEndpointMetadataFromConfig(){if(this.authorityOptions.authorityMetadata)try{return JSON.parse(this.authorityOptions.authorityMetadata)}catch{throw Ct(X)}return null}async getEndpointMetadataFromNetwork(){this.performanceClient?.addQueueMeasurement($.AuthorityGetEndpointMetadataFromNetwork,this.correlationId);let e={},t=this.defaultOpenIdConfigurationEndpoint;this.logger.verbose(`Authority.getEndpointMetadataFromNetwork: attempting to retrieve OAuth endpoints from ${t}`);try{let n=await this.networkInterface.sendGetRequestAsync(t,e);return gr(n.body)?n.body:(this.logger.verbose(`Authority.getEndpointMetadataFromNetwork: could not parse response as OpenID configuration`),null)}catch(e){return this.logger.verbose(`Authority.getEndpointMetadataFromNetwork: ${e}`),null}}getEndpointMetadataFromHardcodedValues(){return this.hostnameAndPort in Ht?Ht[this.hostnameAndPort]:null}async updateMetadataWithRegionalInformation(t){this.performanceClient?.addQueueMeasurement($.AuthorityUpdateMetadataWithRegionalInformation,this.correlationId);let n=this.authorityOptions.azureRegionConfiguration?.azureRegion;if(n){if(n!==u.AZURE_REGION_AUTO_DISCOVER_FLAG)return this.regionDiscoveryMetadata.region_outcome=F.CONFIGURED_NO_AUTO_DETECTION,this.regionDiscoveryMetadata.region_used=n,e.replaceWithRegionalInformation(t,n);let r=await br(this.regionDiscovery.detectRegion.bind(this.regionDiscovery),$.RegionDiscoveryDetectRegion,this.logger,this.performanceClient,this.correlationId)(this.authorityOptions.azureRegionConfiguration?.environmentRegion,this.regionDiscoveryMetadata);if(r)return this.regionDiscoveryMetadata.region_outcome=F.AUTO_DETECTION_REQUESTED_SUCCESSFUL,this.regionDiscoveryMetadata.region_used=r,e.replaceWithRegionalInformation(t,r);this.regionDiscoveryMetadata.region_outcome=F.AUTO_DETECTION_REQUESTED_FAILED}return t}async updateCloudDiscoveryMetadata(e){this.performanceClient?.addQueueMeasurement($.AuthorityUpdateCloudDiscoveryMetadata,this.correlationId);let t=this.updateCloudDiscoveryMetadataFromLocalSources(e);if(t)return t;let n=await br(this.getCloudDiscoveryMetadataFromNetwork.bind(this),$.AuthorityGetCloudDiscoveryMetadataFromNetwork,this.logger,this.performanceClient,this.correlationId)();if(n)return Vr(e,n,!0),k.NETWORK;throw Ct(lt)}updateCloudDiscoveryMetadataFromLocalSources(e){this.logger.verbose(`Attempting to get cloud discovery metadata from authority configuration`),this.logger.verbosePii(`Known Authorities: ${this.authorityOptions.knownAuthorities||u.NOT_APPLICABLE}`),this.logger.verbosePii(`Authority Metadata: ${this.authorityOptions.authorityMetadata||u.NOT_APPLICABLE}`),this.logger.verbosePii(`Canonical Authority: ${e.canonical_authority||u.NOT_APPLICABLE}`);let t=this.getCloudDiscoveryMetadataFromConfig();if(t)return this.logger.verbose(`Found cloud discovery metadata in authority configuration`),Vr(e,t,!1),k.CONFIG;if(this.logger.verbose(`Did not find cloud discovery metadata in the config... Attempting to get cloud discovery metadata from the hardcoded values.`),this.options.skipAuthorityMetadataCache)this.logger.verbose(`Skipping hardcoded cloud discovery metadata cache since skipAuthorityMetadataCache is set to true. Attempting to get cloud discovery metadata from the network metadata cache.`);else{let t=qt(this.hostnameAndPort);if(t)return this.logger.verbose(`Found cloud discovery metadata from hardcoded values.`),Vr(e,t,!1),k.HARDCODED_VALUES;this.logger.verbose(`Did not find cloud discovery metadata in hardcoded values... Attempting to get cloud discovery metadata from the network metadata cache.`)}let n=Hr(e);return this.isAuthoritySameType(e)&&e.aliasesFromNetwork&&!n?(this.logger.verbose(`Found cloud discovery metadata in the cache.`),k.CACHE):(n&&this.logger.verbose(`The metadata entity is expired.`),null)}getCloudDiscoveryMetadataFromConfig(){if(this.authorityType===jt.Ciam)return this.logger.verbose(`CIAM authorities do not support cloud discovery metadata, generate the aliases from authority host.`),e.createCloudDiscoveryMetadataFromHost(this.hostnameAndPort);if(this.authorityOptions.cloudDiscoveryMetadata){this.logger.verbose(`The cloud discovery metadata has been provided as a network response, in the config.`);try{this.logger.verbose(`Attempting to parse the cloud discovery metadata.`);let e=Jt(JSON.parse(this.authorityOptions.cloudDiscoveryMetadata).metadata,this.hostnameAndPort);if(this.logger.verbose(`Parsed the cloud discovery metadata.`),e)return this.logger.verbose(`There is returnable metadata attached to the parsed cloud discovery metadata.`),e;this.logger.verbose(`There is no metadata attached to the parsed cloud discovery metadata.`)}catch{throw this.logger.verbose(`Unable to parse the cloud discovery metadata. Throwing Invalid Cloud Discovery Metadata Error.`),Ct(ct)}}return this.isInKnownAuthorities()?(this.logger.verbose(`The host is included in knownAuthorities. Creating new cloud discovery metadata from the host.`),e.createCloudDiscoveryMetadataFromHost(this.hostnameAndPort)):null}async getCloudDiscoveryMetadataFromNetwork(){this.performanceClient?.addQueueMeasurement($.AuthorityGetCloudDiscoveryMetadataFromNetwork,this.correlationId);let t=`${u.AAD_INSTANCE_DISCOVERY_ENDPT}${this.canonicalAuthority}oauth2/v2.0/authorize`,n={},r=null;try{let e=await this.networkInterface.sendGetRequestAsync(t,n),i,a;if(_r(e.body))i=e.body,a=i.metadata,this.logger.verbosePii(`tenant_discovery_endpoint is: ${i.tenant_discovery_endpoint}`);else if(vr(e.body)){if(this.logger.warning(`A CloudInstanceDiscoveryErrorResponse was returned. The cloud instance discovery network request's status code is: ${e.status}`),i=e.body,i.error===u.INVALID_INSTANCE)return this.logger.error(`The CloudInstanceDiscoveryErrorResponse error is invalid_instance.`),null;this.logger.warning(`The CloudInstanceDiscoveryErrorResponse error is ${i.error}`),this.logger.warning(`The CloudInstanceDiscoveryErrorResponse error description is ${i.error_description}`),this.logger.warning(`Setting the value of the CloudInstanceDiscoveryMetadata (returned from the network) to []`),a=[]}else return this.logger.error(`AAD did not return a CloudInstanceDiscoveryResponse or CloudInstanceDiscoveryErrorResponse`),null;this.logger.verbose(`Attempting to find a match between the developer's authority and the CloudInstanceDiscoveryMetadata returned from the network request.`),r=Jt(a,this.hostnameAndPort)}catch(e){if(e instanceof H)this.logger.error(`There was a network error while attempting to get the cloud discovery instance metadata.\nError: ${e.errorCode}\nError Description: ${e.errorMessage}`);else{let t=e;this.logger.error(`A non-MSALJS error was thrown while attempting to get the cloud instance discovery metadata.\nError: ${t.name}\nError Description: ${t.message}`)}return null}return r||=(this.logger.warning(`The developer's authority was not found within the CloudInstanceDiscoveryMetadata returned from the network request.`),this.logger.verbose(`Creating custom Authority for custom domain scenario.`),e.createCloudDiscoveryMetadataFromHost(this.hostnameAndPort)),r}isInKnownAuthorities(){return this.authorityOptions.knownAuthorities.filter(e=>e&&Q.getDomainFromUrl(e).toLowerCase()===this.hostnameAndPort).length>0}static generateAuthority(e,t){let n;if(t&&t.azureCloudInstance!==Xe.None){let e=t.tenant?t.tenant:u.DEFAULT_COMMON_TENANT;n=`${t.azureCloudInstance}/${e}/`}return n||e}static createCloudDiscoveryMetadataFromHost(e){return{preferred_network:e,preferred_cache:e,aliases:[e]}}getPreferredCache(){if(this.managedIdentity)return u.DEFAULT_AUTHORITY_HOST;if(this.discoveryComplete())return this.metadata.preferred_cache;throw Y(ae)}isAlias(e){return this.metadata.aliases.indexOf(e)>-1}isAliasOfKnownMicrosoftAuthority(e){return Wt.has(e)}static isPublicCloudAuthority(e){return u.KNOWN_PUBLIC_CLOUDS.indexOf(e)>=0}static buildRegionalAuthorityString(e,t,n){let r=new Q(e);r.validateAsUri();let i=r.getUrlComponents(),a=`${t}.${i.HostNameAndPort}`;this.isPublicCloudAuthority(i.HostNameAndPort)&&(a=`${t}.${u.REGIONAL_AUTH_PUBLIC_CLOUD_SUFFIX}`);let o=Q.constructAuthorityUriFromObject({...r.getUrlComponents(),HostNameAndPort:a}).urlString;return n?`${o}?${n}`:o}static replaceWithRegionalInformation(t,n){let r={...t};return r.authorization_endpoint=e.buildRegionalAuthorityString(r.authorization_endpoint,n),r.token_endpoint=e.buildRegionalAuthorityString(r.token_endpoint,n),r.end_session_endpoint&&=e.buildRegionalAuthorityString(r.end_session_endpoint,n),r}static transformCIAMAuthority(e){let t=e,n=new Q(e).getUrlComponents();if(n.PathSegments.length===0&&n.HostNameAndPort.endsWith(u.CIAM_AUTH_URL)){let e=n.HostNameAndPort.split(`.`)[0];t=`${t}${e}${u.AAD_TENANT_DOMAIN_SUFFIX}`}return t}};Ur.reservedTenantDomains=new Set([`{tenant}`,`{tenantid}`,h.COMMON,h.CONSUMERS,h.ORGANIZATIONS]);function Wr(e){let t=new Q(e).getUrlComponents().PathSegments.slice(-1)[0]?.toLowerCase();switch(t){case h.COMMON:case h.ORGANIZATIONS:case h.CONSUMERS:return;default:return t}}function Gr(e){return e.endsWith(u.FORWARD_SLASH)?e:`${e}${u.FORWARD_SLASH}`}function Kr(e){let t=e.cloudDiscoveryMetadata,n;if(t)try{n=JSON.parse(t)}catch{throw Ct(ct)}return{canonicalAuthority:e.authority?Gr(e.authority):void 0,knownAuthorities:e.knownAuthorities,cloudDiscoveryMetadata:n}} +/*! @azure/msal-common v15.13.2 2025-11-19 */ +async function qr(e,t,n,r,i,a,o){o?.addQueueMeasurement($.AuthorityFactoryCreateDiscoveredInstance,a);let s=new Ur(Ur.transformCIAMAuthority(Gr(e)),t,n,r,i,a,o);try{return await br(s.resolveEndpointsAsync.bind(s),$.AuthorityResolveEndpointsAsync,i,o,a)(),s}catch{throw Y(ae)}} +/*! @azure/msal-common v15.13.2 2025-11-19 */ +var Jr=class e extends H{constructor(t,n,r,i,a){super(t,n,r),this.name=`ServerError`,this.errorNo=i,this.status=a,Object.setPrototypeOf(this,e.prototype)}}; +/*! @azure/msal-common v15.13.2 2025-11-19 */ +function Yr(e,t,n){return{clientId:e,authority:t.authority,scopes:t.scopes,homeAccountIdentifier:n,claims:t.claims,authenticationScheme:t.authenticationScheme,resourceRequestMethod:t.resourceRequestMethod,resourceRequestUri:t.resourceRequestUri,shrClaims:t.shrClaims,sshKid:t.sshKid,embeddedClientId:t.embeddedClientId||t.tokenBodyParameters?.clientId}} +/*! @azure/msal-common v15.13.2 2025-11-19 */ +var Xr=class e{static generateThrottlingStorageKey(e){return`${M.THROTTLING_PREFIX}.${JSON.stringify(e)}`}static preProcess(t,n,r){let i=e.generateThrottlingStorageKey(n),a=t.getThrottlingCache(i);if(a){if(a.throttleTime=500&&e.status<600}static checkResponseForRetryAfter(e){return e.headers?e.headers.hasOwnProperty(m.RETRY_AFTER)&&(e.status<200||e.status>=300):!1}static calculateThrottleTime(e){let t=e<=0?0:e,n=Date.now()/1e3;return Math.floor(Math.min(n+(t||M.DEFAULT_THROTTLE_TIME_SECONDS),n+M.DEFAULT_MAX_THROTTLE_TIME_SECONDS)*1e3)}static removeThrottle(e,t,n,r){let i=Yr(t,n,r),a=this.generateThrottlingStorageKey(i);e.removeItem(a,n.correlationId)}},Zr=class e extends H{constructor(t,n,r){super(t.errorCode,t.errorMessage,t.subError),Object.setPrototypeOf(this,e.prototype),this.name=`NetworkError`,this.error=t,this.httpStatus=n,this.responseHeaders=r}},Qr=class{constructor(e,t){this.config=mn(e),this.logger=new qe(this.config.loggerOptions,Je,Ye),this.cryptoUtils=this.config.cryptoInterface,this.cacheManager=this.config.storageInterface,this.networkClient=this.config.networkInterface,this.serverTelemetryManager=this.config.serverTelemetryManager,this.authority=this.config.authOptions.authority,this.performanceClient=t}createTokenRequestHeaders(e){let t={};if(t[m.CONTENT_TYPE]=u.URL_FORM_CONTENT_TYPE,!this.config.systemOptions.preventCorsPreflight&&e)switch(e.type){case _n.HOME_ACCOUNT_ID:try{let n=Dt(e.credential);t[m.CCS_HEADER]=`Oid:${n.uid}@${n.utid}`}catch(e){this.logger.verbose(`Could not parse home account ID for CCS Header: `+e)}break;case _n.UPN:t[m.CCS_HEADER]=`UPN: ${e.credential}`;break}return t}async executePostToTokenEndpoint(e,t,n,r,i,a){a&&this.performanceClient?.addQueueMeasurement(a,i);let o=await this.sendPostRequest(r,e,{body:t,headers:n},i);return this.config.serverTelemetryManager&&o.status<500&&o.status!==429&&this.config.serverTelemetryManager.clearTelemetryCache(),o}async sendPostRequest(e,t,n,r){Xr.preProcess(this.cacheManager,e,r);let i;try{i=await br(this.networkClient.sendPostRequestAsync.bind(this.networkClient),$.NetworkClientSendPostRequestAsync,this.logger,this.performanceClient,r)(t,n);let e=i.headers||{};this.performanceClient?.addFields({refreshTokenSize:i.body.refresh_token?.length||0,httpVerToken:e[m.X_MS_HTTP_VERSION]||``,requestId:e[m.X_MS_REQUEST_ID]||``},r)}catch(e){if(e instanceof Zr){let t=e.responseHeaders;throw t&&this.performanceClient?.addFields({httpVerToken:t[m.X_MS_HTTP_VERSION]||``,requestId:t[m.X_MS_REQUEST_ID]||``,contentTypeHeader:t[m.CONTENT_TYPE]||void 0,contentLengthHeader:t[m.CONTENT_LENGTH]||void 0,httpStatus:e.httpStatus},r),e.error}throw e instanceof H?e:Y(G)}return Xr.postProcess(this.cacheManager,e,i,r),i}async updateAuthority(e,t){this.performanceClient?.addQueueMeasurement($.UpdateTokenEndpointAuthority,t),this.authority=await qr(`https://${e}/${this.authority.tenant}/`,this.networkClient,this.cacheManager,this.authority.options,this.logger,t,this.performanceClient)}createTokenQueryParameters(e){let t=new Map;return e.embeddedClientId&&hr(t,this.config.authOptions.clientId,this.config.authOptions.redirectUri),e.tokenQueryParameters&&or(t,e.tokenQueryParameters),Vn(t,e.correlationId),Dn(t,e.correlationId,this.performanceClient),Bt(t)}}; +/*! @azure/msal-common v15.13.2 2025-11-19 */ +let $r=`no_tokens_found`,ei=`native_account_unavailable`,ti=`refresh_token_expired`,ni=`ux_not_allowed`,ri=`interaction_required`,ii=`consent_required`,ai=`login_required`,oi=`bad_token`;var si=Object.freeze({__proto__:null,badToken:oi,consentRequired:ii,interactionRequired:ri,loginRequired:ai,nativeAccountUnavailable:ei,noTokensFound:$r,refreshTokenExpired:ti,uxNotAllowed:ni}); +/*! @azure/msal-common v15.13.2 2025-11-19 */ +let ci=[ri,ii,ai,oi,ni],li=[`message_only`,`additional_action`,`basic_action`,`user_password_expired`,`consent_required`,`bad_token`],ui={[$r]:`No refresh token found in the cache. Please sign-in.`,[ei]:`The requested account is not available in the native broker. It may have been deleted or logged out. Please sign-in again using an interactive API.`,[ti]:`Refresh token has expired.`,[oi]:`Identity provider returned bad_token due to an expired or invalid refresh token. Please invoke an interactive API to resolve.`,[ni]:"`canShowUI` flag in Edge was set to false. User interaction required on web page. Please invoke an interactive API to resolve."},di={noTokensFoundError:{code:$r,desc:ui[$r]},native_account_unavailable:{code:ei,desc:ui[ei]},bad_token:{code:oi,desc:ui[oi]}};var fi=class e extends H{constructor(t,n,r,i,a,o,s,c){super(t,n,r),Object.setPrototypeOf(this,e.prototype),this.timestamp=i||u.EMPTY_STRING,this.traceId=a||u.EMPTY_STRING,this.correlationId=o||u.EMPTY_STRING,this.claims=s||u.EMPTY_STRING,this.name=`InteractionRequiredAuthError`,this.errorNo=c}};function pi(e,t,n){let r=!!e&&ci.indexOf(e)>-1,i=!!n&&li.indexOf(n)>-1,a=!!t&&ci.some(e=>t.indexOf(e)>-1);return r||a||i}function mi(e){return new fi(e,ui[e])} +/*! @azure/msal-common v15.13.2 2025-11-19 */ +var hi=class e{static setRequestState(t,n,r){let i=e.generateLibraryState(t,r);return n?`${i}${u.RESOURCE_DELIM}${n}`:i}static generateLibraryState(e,t){if(!e)throw Y(Oe);let n={id:e.createNewGuid()};t&&(n.meta=t);let r=JSON.stringify(n);return e.base64Encode(r)}static parseRequestState(e,t){if(!e)throw Y(Oe);if(!t)throw Y(ce);try{let n=t.split(u.RESOURCE_DELIM),r=n[0],i=n.length>1?n.slice(1).join(u.RESOURCE_DELIM):u.EMPTY_STRING,a=e.base64Decode(r),o=JSON.parse(a);return{userRequestState:i||u.EMPTY_STRING,libraryState:o}}catch{throw Y(ce)}}}; +/*! @azure/msal-common v15.13.2 2025-11-19 */ +let gi={SW:`sw`};var _i=class{constructor(e,t){this.cryptoUtils=e,this.performanceClient=t}async generateCnf(e,t){this.performanceClient?.addQueueMeasurement($.PopTokenGenerateCnf,e.correlationId);let n=await br(this.generateKid.bind(this),$.PopTokenGenerateCnf,t,this.performanceClient,e.correlationId)(e),r=this.cryptoUtils.base64UrlEncode(JSON.stringify(n));return{kid:n.kid,reqCnfString:r}}async generateKid(e){return this.performanceClient?.addQueueMeasurement($.PopTokenGenerateKid,e.correlationId),{kid:await this.cryptoUtils.getPublicKeyThumbprint(e),xms_ksl:gi.SW}}async signPopToken(e,t,n){return this.signPayload(e,t,n)}async signPayload(e,t,n,r){let{resourceRequestMethod:i,resourceRequestUri:a,shrClaims:o,shrNonce:s,shrOptions:c}=n,l=(a?new Q(a):void 0)?.getUrlComponents();return this.cryptoUtils.signJwt({at:e,ts:Sr(),m:i?.toUpperCase(),u:l?.HostNameAndPort,nonce:s||this.cryptoUtils.createNewGuid(),p:l?.AbsolutePath,q:l?.QueryString?[[],l.QueryString]:void 0,client_claims:o||void 0,...r},t,c,n.correlationId)}},vi=class{constructor(e,t){this.cache=e,this.hasChanged=t}get cacheHasChanged(){return this.hasChanged}get tokenCache(){return this.cache}},yi=class e{constructor(e,t,n,r,i,a,o){this.clientId=e,this.cacheStorage=t,this.cryptoObj=n,this.logger=r,this.serializableCache=i,this.persistencePlugin=a,this.performanceClient=o}validateTokenResponse(e,t){if(e.error||e.error_description||e.suberror){let n=`Error(s): ${e.error_codes||u.NOT_AVAILABLE} - Timestamp: ${e.timestamp||u.NOT_AVAILABLE} - Description: ${e.error_description||u.NOT_AVAILABLE} - Correlation ID: ${e.correlation_id||u.NOT_AVAILABLE} - Trace ID: ${e.trace_id||u.NOT_AVAILABLE}`,r=e.error_codes?.length?e.error_codes[0]:void 0,i=new Jr(e.error,n,e.suberror,r,e.status);if(t&&e.status&&e.status>=d.SERVER_ERROR_RANGE_START&&e.status<=d.SERVER_ERROR_RANGE_END){this.logger.warning(`executeTokenRequest:validateTokenResponse - AAD is currently unavailable and the access token is unable to be refreshed.\n${i}`);return}else if(t&&e.status&&e.status>=d.CLIENT_ERROR_RANGE_START&&e.status<=d.CLIENT_ERROR_RANGE_END){this.logger.warning(`executeTokenRequest:validateTokenResponse - AAD is currently available but is unable to refresh the access token.\n${i}`);return}throw pi(e.error,e.error_description,e.suberror)?new fi(e.error,e.error_description,e.suberror,e.timestamp||u.EMPTY_STRING,e.trace_id||u.EMPTY_STRING,e.correlation_id||u.EMPTY_STRING,e.claims||u.EMPTY_STRING,r):i}}async handleServerTokenResponse(t,n,r,i,a,o,s,c,l){this.performanceClient?.addQueueMeasurement($.HandleServerTokenResponse,t.correlation_id);let d;if(t.id_token){if(d=Ft(t.id_token||u.EMPTY_STRING,this.cryptoObj.base64Decode),a&&a.nonce&&d.nonce!==a.nonce)throw Y(de);if(i.maxAge||i.maxAge===0){let e=d.auth_time;if(!e)throw Y(fe);Rt(e,i.maxAge)}}this.homeAccountIdentifier=Pt.generateHomeAccountId(t.client_info||u.EMPTY_STRING,n.authorityType,this.logger,this.cryptoObj,d);let f;a&&a.state&&(f=hi.parseRequestState(this.cryptoObj,a.state)),t.key_id=t.key_id||i.sshKid||void 0;let p=this.generateCacheRecord(t,n,r,i,d,o,a),m;try{if(this.persistencePlugin&&this.serializableCache&&(this.logger.verbose(`Persistence enabled, calling beforeCacheAccess`),m=new vi(this.serializableCache,!0),await this.persistencePlugin.beforeCacheAccess(m)),s&&!c&&p.account){let t=this.cacheStorage.generateAccountKey(Pt.getAccountInfo(p.account));if(!this.cacheStorage.getAccount(t,i.correlationId))return this.logger.warning(`Account used to refresh tokens not in persistence, refreshed tokens will not be stored in the cache`),await e.generateAuthenticationResult(this.cryptoObj,n,p,!1,i,d,f,void 0,l)}await this.cacheStorage.saveCacheRecord(p,i.correlationId,It(d||{}),i.storeInCache)}finally{this.persistencePlugin&&this.serializableCache&&m&&(this.logger.verbose(`Persistence enabled, calling afterCacheAccess`),await this.persistencePlugin.afterCacheAccess(m))}return e.generateAuthenticationResult(this.cryptoObj,n,p,!1,i,d,f,t,l)}generateCacheRecord(e,t,n,r,i,a,o){let s=t.getPreferredCache();if(!s)throw Y(Ee);let c=Mt(i),l,u;e.id_token&&i&&(l=Dr(this.homeAccountIdentifier,s,e.id_token,this.clientId,c||``),u=bi(this.cacheStorage,t,this.homeAccountIdentifier,this.cryptoObj.base64Decode,r.correlationId,i,e.client_info,s,c,o,void 0,this.logger));let d=null;if(e.access_token){let i=e.scope?Tt.fromString(e.scope):new Tt(r.scopes||[]),o=(typeof e.expires_in==`string`?parseInt(e.expires_in,10):e.expires_in)||0,l=(typeof e.ext_expires_in==`string`?parseInt(e.ext_expires_in,10):e.ext_expires_in)||0,u=(typeof e.refresh_in==`string`?parseInt(e.refresh_in,10):e.refresh_in)||void 0,f=n+o,p=f+l,m=u&&u>0?n+u:void 0;d=Or(this.homeAccountIdentifier,s,e.access_token,this.clientId,c||t.tenant||``,i.printScopes(),f,p,this.cryptoObj.base64Decode,m,e.token_type,a,e.key_id,r.claims,r.requestedClaimsHash)}let f=null;if(e.refresh_token){let t;e.refresh_token_expires_in&&(t=n+(typeof e.refresh_token_expires_in==`string`?parseInt(e.refresh_token_expires_in,10):e.refresh_token_expires_in)),f=kr(this.homeAccountIdentifier,s,e.refresh_token,this.clientId,e.foci,a,t)}let p=null;return e.foci&&(p={clientId:this.clientId,environment:s,familyId:e.foci}),{account:u,idToken:l,accessToken:d,refreshToken:f,appMetadata:p}}static async generateAuthenticationResult(e,t,n,r,i,a,o,s,c){let l=u.EMPTY_STRING,d=[],f=null,p,m,h=u.EMPTY_STRING;if(n.accessToken){if(n.accessToken.tokenType===j.POP&&!i.popKid){let t=new _i(e),{secret:r,keyId:a}=n.accessToken;if(!a)throw Y(Re);l=await t.signPopToken(r,a,i)}else l=n.accessToken.secret;d=Tt.fromString(n.accessToken.target).asArray(),f=Cr(n.accessToken.expiresOn),p=Cr(n.accessToken.extendedExpiresOn),n.accessToken.refreshOn&&(m=Cr(n.accessToken.refreshOn))}n.appMetadata&&(h=n.appMetadata.familyId===`1`?`1`:``);let g=a?.oid||a?.sub||``,_=a?.tid||``;s?.spa_accountid&&n.account&&(n.account.nativeAccountId=s?.spa_accountid);let v=n.account?At(Pt.getAccountInfo(n.account),void 0,a,n.idToken?.secret):null;return{authority:t.canonicalAuthority,uniqueId:g,tenantId:_,scopes:d,account:v,idToken:n?.idToken?.secret||``,idTokenClaims:a||{},accessToken:l,fromCache:r,expiresOn:f,extExpiresOn:p,refreshOn:m,correlationId:i.correlationId,requestId:c||u.EMPTY_STRING,familyId:h,tokenType:n.accessToken?.tokenType||u.EMPTY_STRING,state:o?o.userRequestState:u.EMPTY_STRING,cloudGraphHostName:n.account?.cloudGraphHostName||u.EMPTY_STRING,msGraphHost:n.account?.msGraphHost||u.EMPTY_STRING,code:s?.spa_code,fromNativeBroker:!1}}};function bi(e,t,n,r,i,a,o,s,c,l,u,d){d?.verbose(`setCachedAccount called`);let f=e.getAccountKeys().find(e=>e.startsWith(n)),p=null;f&&(p=e.getAccount(f,i));let m=p||Pt.createAccount({homeAccountId:n,idTokenClaims:a,clientInfo:o,environment:s,cloudGraphHostName:l?.cloud_graph_host_name,msGraphHost:l?.msgraph_host,nativeAccountId:u},t,r),h=m.tenantProfiles||[],g=c||m.realm;if(g&&!h.find(e=>e.tenantId===g)){let e=kt(n,m.localAccountId,g,a);h.push(e)}return m.tenantProfiles=h,m} +/*! @azure/msal-common v15.13.2 2025-11-19 */ +async function xi(e,t,n){return typeof e==`string`?e:e({clientId:t,tokenEndpoint:n})} +/*! @azure/msal-common v15.13.2 2025-11-19 */ +var Si=class extends Qr{constructor(e,t){super(e,t),this.includeRedirectUri=!0,this.oidcDefaultScopes=this.config.authOptions.authority.options.OIDCOptions?.defaultScopes}async acquireToken(e,t){if(this.performanceClient?.addQueueMeasurement($.AuthClientAcquireToken,e.correlationId),!e.code)throw Y(_e);let n=Sr(),r=await br(this.executeTokenRequest.bind(this),$.AuthClientExecuteTokenRequest,this.logger,this.performanceClient,e.correlationId)(this.authority,e),i=r.headers?.[m.X_MS_REQUEST_ID],a=new yi(this.config.authOptions.clientId,this.cacheManager,this.cryptoUtils,this.logger,this.config.serializableCache,this.config.persistencePlugin,this.performanceClient);return a.validateTokenResponse(r.body),br(a.handleServerTokenResponse.bind(a),$.HandleServerTokenResponse,this.logger,this.performanceClient,e.correlationId)(r.body,this.authority,n,e,t,void 0,void 0,void 0,i)}getLogoutUri(e){if(!e)throw Ct(at);let t=this.createLogoutUrlQueryString(e);return Q.appendQueryString(this.authority.endSessionEndpoint,t)}async executeTokenRequest(e,t){this.performanceClient?.addQueueMeasurement($.AuthClientExecuteTokenRequest,t.correlationId);let n=this.createTokenQueryParameters(t),r=Q.appendQueryString(e.tokenEndpoint,n),i=await br(this.createTokenRequestBody.bind(this),$.AuthClientCreateTokenRequestBody,this.logger,this.performanceClient,t.correlationId)(t),a;if(t.clientInfo)try{let e=Et(t.clientInfo,this.cryptoUtils.base64Decode);a={credential:`${e.uid}${C.CLIENT_INFO_SEPARATOR}${e.utid}`,type:_n.HOME_ACCOUNT_ID}}catch(e){this.logger.verbose(`Could not parse client info for CCS Header: `+e)}let o=this.createTokenRequestHeaders(a||t.ccsCredential),s=Yr(this.config.authOptions.clientId,t);return br(this.executePostToTokenEndpoint.bind(this),$.AuthorizationCodeClientExecutePostToTokenEndpoint,this.logger,this.performanceClient,t.correlationId)(r,i,o,s,t.correlationId,$.AuthorizationCodeClientExecutePostToTokenEndpoint)}async createTokenRequestBody(e){this.performanceClient?.addQueueMeasurement($.AuthClientCreateTokenRequestBody,e.correlationId);let t=new Map;if(jn(t,e.embeddedClientId||e.tokenBodyParameters?.[vn]||this.config.authOptions.clientId),this.includeRedirectUri)Mn(t,e.redirectUri);else if(!e.redirectUri)throw Ct(Ze);if(An(t,e.scopes,!0,this.oidcDefaultScopes),Jn(t,e.code),Hn(t,this.config.libraryInfo),Un(t,this.config.telemetry.application),pr(t),this.serverTelemetryManager&&!gn(this.config)&&fr(t,this.serverTelemetryManager),e.codeVerifier&&Zn(t,e.codeVerifier),this.config.clientCredentials.clientSecret&&Qn(t,this.config.clientCredentials.clientSecret),this.config.clientCredentials.clientAssertion){let n=this.config.clientCredentials.clientAssertion;$n(t,await xi(n.assertion,this.config.authOptions.clientId,e.resourceRequestUri)),er(t,n.assertionType)}if(rr(t,x.AUTHORIZATION_CODE_GRANT),ir(t),e.authenticationScheme===j.POP){let n=new _i(this.cryptoUtils,this.performanceClient),r;r=e.popKid?this.cryptoUtils.encodeKid(e.popKid):(await br(n.generateCnf.bind(n),$.PopTokenGenerateCnf,this.logger,this.performanceClient,e.correlationId)(e,this.logger)).reqCnfString,ur(t,r)}else if(e.authenticationScheme===j.SSH)if(e.sshJwk)dr(t,e.sshJwk);else throw Ct(ut);(!wt.isEmptyObj(e.claims)||this.config.authOptions.clientCapabilities&&this.config.authOptions.clientCapabilities.length>0)&&Bn(t,e.claims,this.config.authOptions.clientCapabilities);let n;if(e.clientInfo)try{let t=Et(e.clientInfo,this.cryptoUtils.base64Decode);n={credential:`${t.uid}${C.CLIENT_INFO_SEPARATOR}${t.utid}`,type:_n.HOME_ACCOUNT_ID}}catch(e){this.logger.verbose(`Could not parse client info for CCS Header: `+e)}else n=e.ccsCredential;if(this.config.systemOptions.preventCorsPreflight&&n)switch(n.type){case _n.HOME_ACCOUNT_ID:try{Rn(t,Dt(n.credential))}catch(e){this.logger.verbose(`Could not parse home account ID for CCS Header: `+e)}break;case _n.UPN:Ln(t,n.credential);break}return e.embeddedClientId&&hr(t,this.config.authOptions.clientId,this.config.authOptions.redirectUri),e.tokenBodyParameters&&or(t,e.tokenBodyParameters),e.enableSpaAuthorizationCode&&(!e.tokenBodyParameters||!e.tokenBodyParameters[Sn])&&or(t,{[Sn]:`1`}),Dn(t,e.correlationId,this.performanceClient),Bt(t)}createLogoutUrlQueryString(e){let t=new Map;return e.postLogoutRedirectUri&&Nn(t,e.postLogoutRedirectUri),e.correlationId&&Vn(t,e.correlationId),e.idTokenHint&&Pn(t,e.idTokenHint),e.state&&Gn(t,e.state),e.logoutHint&&mr(t,e.logoutHint),e.extraQueryParameters&&or(t,e.extraQueryParameters),this.config.authOptions.instanceAware&&ar(t),Bt(t,this.config.authOptions.encodeExtraQueryParams,e.extraQueryParameters)}},Ci=class extends Qr{constructor(e,t){super(e,t)}async acquireToken(e){this.performanceClient?.addQueueMeasurement($.RefreshTokenClientAcquireToken,e.correlationId);let t=Sr(),n=await br(this.executeTokenRequest.bind(this),$.RefreshTokenClientExecuteTokenRequest,this.logger,this.performanceClient,e.correlationId)(e,this.authority),r=n.headers?.[m.X_MS_REQUEST_ID],i=new yi(this.config.authOptions.clientId,this.cacheManager,this.cryptoUtils,this.logger,this.config.serializableCache,this.config.persistencePlugin);return i.validateTokenResponse(n.body),br(i.handleServerTokenResponse.bind(i),$.HandleServerTokenResponse,this.logger,this.performanceClient,e.correlationId)(n.body,this.authority,t,e,void 0,void 0,!0,e.forceCache,r)}async acquireTokenByRefreshToken(e){if(!e)throw Ct(it);if(this.performanceClient?.addQueueMeasurement($.RefreshTokenClientAcquireTokenByRefreshToken,e.correlationId),!e.account)throw Y(we);if(this.cacheManager.isAppMetadataFOCI(e.account.environment))try{return await br(this.acquireTokenWithCachedRefreshToken.bind(this),$.RefreshTokenClientAcquireTokenWithCachedRefreshToken,this.logger,this.performanceClient,e.correlationId)(e,!0)}catch(t){let n=t instanceof fi&&t.errorCode===$r,r=t instanceof Jr&&t.errorCode===N.INVALID_GRANT_ERROR&&t.subError===N.CLIENT_MISMATCH_ERROR;if(n||r)return br(this.acquireTokenWithCachedRefreshToken.bind(this),$.RefreshTokenClientAcquireTokenWithCachedRefreshToken,this.logger,this.performanceClient,e.correlationId)(e,!1);throw t}return br(this.acquireTokenWithCachedRefreshToken.bind(this),$.RefreshTokenClientAcquireTokenWithCachedRefreshToken,this.logger,this.performanceClient,e.correlationId)(e,!1)}async acquireTokenWithCachedRefreshToken(e,t){this.performanceClient?.addQueueMeasurement($.RefreshTokenClientAcquireTokenWithCachedRefreshToken,e.correlationId);let n=yr(this.cacheManager.getRefreshToken.bind(this.cacheManager),$.CacheManagerGetRefreshToken,this.logger,this.performanceClient,e.correlationId)(e.account,t,e.correlationId,void 0,this.performanceClient);if(!n)throw mi($r);if(n.expiresOn&&wr(n.expiresOn,e.refreshTokenExpirationOffsetSeconds||300))throw this.performanceClient?.addFields({rtExpiresOnMs:Number(n.expiresOn)},e.correlationId),mi(ti);let r={...e,refreshToken:n.secret,authenticationScheme:e.authenticationScheme||j.BEARER,ccsCredential:{credential:e.account.homeAccountId,type:_n.HOME_ACCOUNT_ID}};try{return await br(this.acquireToken.bind(this),$.RefreshTokenClientAcquireToken,this.logger,this.performanceClient,e.correlationId)(r)}catch(t){if(t instanceof fi&&(this.performanceClient?.addFields({rtExpiresOnMs:Number(n.expiresOn)},e.correlationId),t.subError===oi)){this.logger.verbose(`acquireTokenWithRefreshToken: bad refresh token, removing from cache`);let t=this.cacheManager.generateCredentialKey(n);this.cacheManager.removeRefreshToken(t,e.correlationId)}throw t}}async executeTokenRequest(e,t){this.performanceClient?.addQueueMeasurement($.RefreshTokenClientExecuteTokenRequest,e.correlationId);let n=this.createTokenQueryParameters(e),r=Q.appendQueryString(t.tokenEndpoint,n),i=await br(this.createTokenRequestBody.bind(this),$.RefreshTokenClientCreateTokenRequestBody,this.logger,this.performanceClient,e.correlationId)(e),a=this.createTokenRequestHeaders(e.ccsCredential),o=Yr(this.config.authOptions.clientId,e);return br(this.executePostToTokenEndpoint.bind(this),$.RefreshTokenClientExecutePostToTokenEndpoint,this.logger,this.performanceClient,e.correlationId)(r,i,a,o,e.correlationId,$.RefreshTokenClientExecutePostToTokenEndpoint)}async createTokenRequestBody(e){this.performanceClient?.addQueueMeasurement($.RefreshTokenClientCreateTokenRequestBody,e.correlationId);let t=new Map;if(jn(t,e.embeddedClientId||e.tokenBodyParameters?.[vn]||this.config.authOptions.clientId),e.redirectUri&&Mn(t,e.redirectUri),An(t,e.scopes,!0,this.config.authOptions.authority.options.OIDCOptions?.defaultScopes),rr(t,x.REFRESH_TOKEN_GRANT),ir(t),Hn(t,this.config.libraryInfo),Un(t,this.config.telemetry.application),pr(t),this.serverTelemetryManager&&!gn(this.config)&&fr(t,this.serverTelemetryManager),Xn(t,e.refreshToken),this.config.clientCredentials.clientSecret&&Qn(t,this.config.clientCredentials.clientSecret),this.config.clientCredentials.clientAssertion){let n=this.config.clientCredentials.clientAssertion;$n(t,await xi(n.assertion,this.config.authOptions.clientId,e.resourceRequestUri)),er(t,n.assertionType)}if(e.authenticationScheme===j.POP){let n=new _i(this.cryptoUtils,this.performanceClient),r;r=e.popKid?this.cryptoUtils.encodeKid(e.popKid):(await br(n.generateCnf.bind(n),$.PopTokenGenerateCnf,this.logger,this.performanceClient,e.correlationId)(e,this.logger)).reqCnfString,ur(t,r)}else if(e.authenticationScheme===j.SSH)if(e.sshJwk)dr(t,e.sshJwk);else throw Ct(ut);if((!wt.isEmptyObj(e.claims)||this.config.authOptions.clientCapabilities&&this.config.authOptions.clientCapabilities.length>0)&&Bn(t,e.claims,this.config.authOptions.clientCapabilities),this.config.systemOptions.preventCorsPreflight&&e.ccsCredential)switch(e.ccsCredential.type){case _n.HOME_ACCOUNT_ID:try{Rn(t,Dt(e.ccsCredential.credential))}catch(e){this.logger.verbose(`Could not parse home account ID for CCS Header: `+e)}break;case _n.UPN:Ln(t,e.ccsCredential.credential);break}return e.embeddedClientId&&hr(t,this.config.authOptions.clientId,this.config.authOptions.redirectUri),e.tokenBodyParameters&&or(t,e.tokenBodyParameters),Dn(t,e.correlationId,this.performanceClient),Bt(t)}},wi=class extends Qr{constructor(e,t){super(e,t)}async acquireCachedToken(e){this.performanceClient?.addQueueMeasurement($.SilentFlowClientAcquireCachedToken,e.correlationId);let t=I.NOT_APPLICABLE;if(e.forceRefresh||!this.config.cacheOptions.claimsBasedCachingEnabled&&!wt.isEmptyObj(e.claims))throw this.setCacheOutcome(I.FORCE_REFRESH_OR_CLAIMS,e.correlationId),Y(Me);if(!e.account)throw Y(we);let n=e.account.tenantId||Wr(e.authority),r=this.cacheManager.getTokenKeys(),i=this.cacheManager.getAccessToken(e.account,e,r,n);if(i){if(Tr(i.cachedAt)||wr(i.expiresOn,this.config.systemOptions.tokenRenewalOffsetSeconds))throw this.setCacheOutcome(I.CACHED_ACCESS_TOKEN_EXPIRED,e.correlationId),Y(Me);i.refreshOn&&wr(i.refreshOn,0)&&(t=I.PROACTIVELY_REFRESHED)}else throw this.setCacheOutcome(I.NO_CACHED_ACCESS_TOKEN,e.correlationId),Y(Me);let a=e.authority||this.authority.getPreferredCache(),o={account:this.cacheManager.getAccount(this.cacheManager.generateAccountKey(e.account),e.correlationId),accessToken:i,idToken:this.cacheManager.getIdToken(e.account,e.correlationId,r,n,this.performanceClient),refreshToken:null,appMetadata:this.cacheManager.readAppMetadataFromCache(a)};return this.setCacheOutcome(t,e.correlationId),this.config.serverTelemetryManager&&this.config.serverTelemetryManager.incrementCacheHits(),[await br(this.generateResultFromCacheRecord.bind(this),$.SilentFlowClientGenerateResultFromCacheRecord,this.logger,this.performanceClient,e.correlationId)(o,e),t]}setCacheOutcome(e,t){this.serverTelemetryManager?.setCacheOutcome(e),this.performanceClient?.addFields({cacheOutcome:e},t),e!==I.NOT_APPLICABLE&&this.logger.info(`Token refresh is required due to cache outcome: ${e}`)}async generateResultFromCacheRecord(e,t){this.performanceClient?.addQueueMeasurement($.SilentFlowClientGenerateResultFromCacheRecord,t.correlationId);let n;if(e.idToken&&(n=Ft(e.idToken.secret,this.config.cryptoInterface.base64Decode)),t.maxAge||t.maxAge===0){let e=n?.auth_time;if(!e)throw Y(fe);Rt(e,t.maxAge)}return yi.generateAuthenticationResult(this.cryptoUtils,this.authority,e,!0,t,n)}}; +/*! @azure/msal-common v15.13.2 2025-11-19 */ +function Ti(e,t,n,r){let i=t.correlationId,a=new Map;if(jn(a,t.embeddedClientId||t.extraQueryParameters?.[vn]||e.clientId),An(a,[...t.scopes||[],...t.extraScopesToConsent||[]],!0,e.authority.options.OIDCOptions?.defaultScopes),Mn(a,t.redirectUri),Vn(a,i),kn(a,t.responseMode),ir(a),t.prompt&&Wn(a,t.prompt),t.domainHint&&Fn(a,t.domainHint),t.prompt!==_.SELECT_ACCOUNT)if(t.sid&&t.prompt===_.NONE)n.verbose(`createAuthCodeUrlQueryString: Prompt is none, adding sid from request`),zn(a,t.sid);else if(t.account){let e=Di(t.account),r=Oi(t.account);if(r&&t.domainHint&&(n.warning(`AuthorizationCodeClient.createAuthCodeUrlQueryString: "domainHint" param is set, skipping opaque "login_hint" claim. Please consider not passing domainHint`),r=null),r){n.verbose(`createAuthCodeUrlQueryString: login_hint claim present on account`),In(a,r);try{Rn(a,Dt(t.account.homeAccountId))}catch{n.verbose(`createAuthCodeUrlQueryString: Could not parse home account ID for CCS Header`)}}else if(e&&t.prompt===_.NONE){n.verbose(`createAuthCodeUrlQueryString: Prompt is none, adding sid from account`),zn(a,e);try{Rn(a,Dt(t.account.homeAccountId))}catch{n.verbose(`createAuthCodeUrlQueryString: Could not parse home account ID for CCS Header`)}}else if(t.loginHint)n.verbose(`createAuthCodeUrlQueryString: Adding login_hint from request`),In(a,t.loginHint),Ln(a,t.loginHint);else if(t.account.username){n.verbose(`createAuthCodeUrlQueryString: Adding login_hint from account`),In(a,t.account.username);try{Rn(a,Dt(t.account.homeAccountId))}catch{n.verbose(`createAuthCodeUrlQueryString: Could not parse home account ID for CCS Header`)}}}else t.loginHint&&(n.verbose(`createAuthCodeUrlQueryString: No account, adding login_hint from request`),In(a,t.loginHint),Ln(a,t.loginHint));else n.verbose(`createAuthCodeUrlQueryString: Prompt is select_account, ignoring account hints`);return t.nonce&&Kn(a,t.nonce),t.state&&Gn(a,t.state),(t.claims||e.clientCapabilities&&e.clientCapabilities.length>0)&&Bn(a,t.claims,e.clientCapabilities),t.embeddedClientId&&hr(a,e.clientId,e.redirectUri),e.instanceAware&&(!t.extraQueryParameters||!Object.keys(t.extraQueryParameters).includes(En))&&ar(a),a}function Ei(e,t,n,r){let i=Bt(t,n,r);return Q.appendQueryString(e.authorizationEndpoint,i)}function Di(e){return e.idTokenClaims?.sid||null}function Oi(e){return e.loginHint||e.idTokenClaims?.login_hint||null}function ki(e){let{skus:t,libraryName:n,libraryVersion:r,extensionName:i,extensionVersion:a}=e,o=new Map([[0,[n,r]],[2,[i,a]]]),s=[];if(t?.length){if(s=t.split(`,`),s.length<4)return t}else s=Array.from({length:4},()=>`|`);return o.forEach((e,t)=>{e.length===2&&e[0]?.length&&e[1]?.length&&Ai({skuArr:s,index:t,skuName:e[0],skuVersion:e[1]})}),s.join(`,`)}function Ai(e){let{skuArr:t,index:n,skuName:r,skuVersion:i}=e;n>=t.length||(t[n]=[r,i].join(`|`))}var ji=class e{constructor(e,t){this.cacheOutcome=I.NOT_APPLICABLE,this.cacheManager=t,this.apiId=e.apiId,this.correlationId=e.correlationId,this.wrapperSKU=e.wrapperSKU||u.EMPTY_STRING,this.wrapperVer=e.wrapperVer||u.EMPTY_STRING,this.telemetryCacheKey=A.CACHE_KEY+C.CACHE_KEY_SEPARATOR+e.clientId}generateCurrentRequestHeaderValue(){let e=`${this.apiId}${A.VALUE_SEPARATOR}${this.cacheOutcome}`,t=[this.wrapperSKU,this.wrapperVer],n=this.getNativeBrokerErrorCode();n?.length&&t.push(`broker_error=${n}`);let r=t.join(A.VALUE_SEPARATOR),i=[e,this.getRegionDiscoveryFields()].join(A.VALUE_SEPARATOR);return[A.SCHEMA_VERSION,i,r].join(A.CATEGORY_SEPARATOR)}generateLastRequestHeaderValue(){let t=this.getLastRequests(),n=e.maxErrorsToSend(t),r=t.failedRequests.slice(0,2*n).join(A.VALUE_SEPARATOR),i=t.errors.slice(0,n).join(A.VALUE_SEPARATOR),a=t.errors.length,o=[a,n=A.MAX_CACHED_ERRORS&&(t.failedRequests.shift(),t.failedRequests.shift(),t.errors.shift()),t.failedRequests.push(this.apiId,this.correlationId),e instanceof Error&&e&&e.toString()?e instanceof H?e.subError?t.errors.push(e.subError):e.errorCode?t.errors.push(e.errorCode):t.errors.push(e.toString()):t.errors.push(e.toString()):t.errors.push(A.UNKNOWN_ERROR),this.cacheManager.setServerTelemetry(this.telemetryCacheKey,t,this.correlationId)}incrementCacheHits(){let e=this.getLastRequests();return e.cacheHits+=1,this.cacheManager.setServerTelemetry(this.telemetryCacheKey,e,this.correlationId),e.cacheHits}getLastRequests(){return this.cacheManager.getServerTelemetry(this.telemetryCacheKey)||{failedRequests:[],errors:[],cacheHits:0}}clearTelemetryCache(){let t=this.getLastRequests(),n=e.maxErrorsToSend(t);if(n===t.errors.length)this.cacheManager.removeItem(this.telemetryCacheKey,this.correlationId);else{let e={failedRequests:t.failedRequests.slice(n*2),errors:t.errors.slice(n),cacheHits:0};this.cacheManager.setServerTelemetry(this.telemetryCacheKey,e,this.correlationId)}}static maxErrorsToSend(e){let t,n=0,r=0,i=e.errors.length;for(t=0;tJSON.parse(e)),lastUpdatedAt:Date.now().toString()},a=new Pt;en.toObject(a,i),t[n]=a}),t}static deserializeIdTokens(e){let t={};return e&&Object.keys(e).map(function(n){let r=e[n];t[n]={homeAccountId:r.home_account_id,environment:r.environment,credentialType:r.credential_type,clientId:r.client_id,secret:r.secret,realm:r.realm,lastUpdatedAt:Date.now().toString()}}),t}static deserializeAccessTokens(e){let t={};return e&&Object.keys(e).map(function(n){let r=e[n];t[n]={homeAccountId:r.home_account_id,environment:r.environment,credentialType:r.credential_type,clientId:r.client_id,secret:r.secret,realm:r.realm,target:r.target,cachedAt:r.cached_at,expiresOn:r.expires_on,extendedExpiresOn:r.extended_expires_on,refreshOn:r.refresh_on,keyId:r.key_id,tokenType:r.token_type,requestedClaims:r.requestedClaims,requestedClaimsHash:r.requestedClaimsHash,userAssertionHash:r.userAssertionHash,lastUpdatedAt:Date.now().toString()}}),t}static deserializeRefreshTokens(e){let t={};return e&&Object.keys(e).map(function(n){let r=e[n];t[n]={homeAccountId:r.home_account_id,environment:r.environment,credentialType:r.credential_type,clientId:r.client_id,secret:r.secret,familyId:r.family_id,target:r.target,realm:r.realm,lastUpdatedAt:Date.now().toString()}}),t}static deserializeAppMetadata(e){let t={};return e&&Object.keys(e).map(function(n){let r=e[n];t[n]={clientId:r.client_id,environment:r.environment,familyId:r.family_id}}),t}static deserializeAllCache(e){return{accounts:e.Account?this.deserializeAccounts(e.Account):{},idTokens:e.IdToken?this.deserializeIdTokens(e.IdToken):{},accessTokens:e.AccessToken?this.deserializeAccessTokens(e.AccessToken):{},refreshTokens:e.RefreshToken?this.deserializeRefreshTokens(e.RefreshToken):{},appMetadata:e.AppMetadata?this.deserializeAppMetadata(e.AppMetadata):{}}}},Ni=Object.freeze({__proto__:null,Deserializer:Mi,Serializer:l});let Pi=`https://login.microsoftonline.com/managed_identity/`,Fi={AUTHORIZATION_HEADER_NAME:`Authorization`,METADATA_HEADER_NAME:`Metadata`,APP_SERVICE_SECRET_HEADER_NAME:`X-IDENTITY-HEADER`,ML_AND_SF_SECRET_HEADER_NAME:`secret`},Ii={API_VERSION:`api-version`,RESOURCE:`resource`,SHA256_TOKEN_TO_REFRESH:`token_sha256_to_refresh`,XMS_CC:`xms_cc`},Li={AZURE_POD_IDENTITY_AUTHORITY_HOST:`AZURE_POD_IDENTITY_AUTHORITY_HOST`,DEFAULT_IDENTITY_CLIENT_ID:`DEFAULT_IDENTITY_CLIENT_ID`,IDENTITY_ENDPOINT:`IDENTITY_ENDPOINT`,IDENTITY_HEADER:`IDENTITY_HEADER`,IDENTITY_SERVER_THUMBPRINT:`IDENTITY_SERVER_THUMBPRINT`,IMDS_ENDPOINT:`IMDS_ENDPOINT`,MSI_ENDPOINT:`MSI_ENDPOINT`,MSI_SECRET:`MSI_SECRET`},Ri={APP_SERVICE:`AppService`,AZURE_ARC:`AzureArc`,CLOUD_SHELL:`CloudShell`,DEFAULT_TO_IMDS:`DefaultToImds`,IMDS:`Imds`,MACHINE_LEARNING:`MachineLearning`,SERVICE_FABRIC:`ServiceFabric`},zi={SYSTEM_ASSIGNED:`system-assigned`,USER_ASSIGNED_CLIENT_ID:`user-assigned-client-id`,USER_ASSIGNED_RESOURCE_ID:`user-assigned-resource-id`,USER_ASSIGNED_OBJECT_ID:`user-assigned-object-id`},Bi={GET:`get`,POST:`post`},Vi={SUCCESS_RANGE_START:d.SUCCESS_RANGE_START,SUCCESS_RANGE_END:d.SUCCESS_RANGE_END,SERVER_ERROR:d.SERVER_ERROR},Hi={SHA256:`sha256`},Ui={CV_CHARSET:`ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-._~`},Wi={KEY_SEPARATOR:`-`},Gi={MSAL_SKU:`msal.js.node`,JWT_BEARER_ASSERTION_TYPE:`urn:ietf:params:oauth:client-assertion-type:jwt-bearer`,AUTHORIZATION_PENDING:`authorization_pending`,HTTP_PROTOCOL:`http://`,LOCALHOST:`localhost`},Ki={acquireTokenSilent:62,acquireTokenByUsernamePassword:371,acquireTokenByDeviceCode:671,acquireTokenByClientCredential:771,acquireTokenByCode:871,acquireTokenByRefreshToken:872},qi={RSA_256:`RS256`,PSS_256:`PS256`,X5T_256:`x5t#S256`,X5T:`x5t`,X5C:`x5c`,AUDIENCE:`aud`,EXPIRATION_TIME:`exp`,ISSUER:`iss`,SUBJECT:`sub`,NOT_BEFORE:`nbf`,JWT_ID:`jti`},Ji={INTERVAL_MS:100,TIMEOUT_MS:5e3};var Yi=class{static getNetworkResponse(e,t,n){return{headers:e,body:t,status:n}}static urlToHttpOptions(e){let t={protocol:e.protocol,hostname:e.hostname&&e.hostname.startsWith(`[`)?e.hostname.slice(1,-1):e.hostname,hash:e.hash,search:e.search,pathname:e.pathname,path:`${e.pathname||``}${e.search||``}`,href:e.href};return e.port!==``&&(t.port=Number(e.port)),(e.username||e.password)&&(t.auth=`${decodeURIComponent(e.username)}:${decodeURIComponent(e.password)}`),t}};let Xi=`@azure/msal-node`,Zi=`3.8.3`;var Qi=class{constructor(e,r,i){this.networkRequestViaProxy=(e,n,r,i)=>{let a=new URL(n),o=new URL(this.proxyUrl),s=r?.headers||{},c={host:o.hostname,port:o.port,method:`CONNECT`,path:a.hostname,headers:s};this.customAgentOptions&&Object.keys(this.customAgentOptions).length&&(c.agent=new t.Agent(this.customAgentOptions));let l=``;if(e===Bi.POST){let e=r?.body||``;l=`Content-Type: application/x-www-form-urlencoded\r +Content-Length: ${e.length}\r\n\r\n${e}`}else i&&(c.timeout=i);let u=`${e.toUpperCase()} ${a.href} HTTP/1.1\r\nHost: ${a.host}\r\nConnection: close\r +`+l+`\r +`;return new Promise((r,a)=>{let o=t.request(c);i&&o.on(`timeout`,()=>{this.logUrlWithPiiAwareness(`Request timeout after ${i}ms for URL`,n),o.destroy(),a(Error(`Request time out after ${i}ms`))}),o.end(),o.on(`connect`,(e,t)=>{let n=e?.statusCode||Vi.SERVER_ERROR;(nVi.SUCCESS_RANGE_END)&&(o.destroy(),t.destroy(),a(Error(`Error connecting to proxy. Http status code: ${e.statusCode}. Http status message: ${e?.statusMessage||`Unknown`}`))),t.write(u);let i=[];t.on(`data`,e=>{i.push(e)}),t.on(`end`,()=>{let e=Buffer.concat([...i]).toString().split(`\r +`),t=parseInt(e[0].split(` `)[1]),n=e[0].split(` `).slice(2).join(` `),a=e[e.length-1],s=e.slice(1,e.length-2),c=new Map;s.forEach(e=>{let t=e.split(new RegExp(/:\s(.*)/s)),n=t[0],r=t[1];try{let e=JSON.parse(r);e&&typeof e==`object`&&(r=e)}catch{}c.set(n,r)});let l=Object.fromEntries(c),u=Yi.getNetworkResponse(l,this.parseBody(t,n,l,a),t);this.shouldDestroyRequest(t,u)&&o.destroy(),r(u)}),t.on(`error`,e=>{o.destroy(),t.destroy(),a(Error(e.toString()))})}),o.on(`error`,t=>{this.logger.error(`HttpClient - Proxy request error: ${t.toString()}`,``),this.logUrlWithPiiAwareness(`Destination URL`,n),this.logUrlWithPiiAwareness(`Proxy URL`,this.proxyUrl),this.logger.error(`HttpClient - Method: ${e}`,``),this.logger.errorPii(`HttpClient - Headers: ${JSON.stringify(s)}`,``),o.destroy(),a(Error(t.toString()))})})},this.networkRequestViaHttps=(e,r,i,a)=>{let o=e===Bi.POST,s=i?.body||``,c=new URL(r),l=i?.headers||{},u={method:e,headers:l,...Yi.urlToHttpOptions(c)};return this.customAgentOptions&&Object.keys(this.customAgentOptions).length&&(u.agent=new n.Agent(this.customAgentOptions)),o?u.headers={...u.headers,"Content-Length":s.length}:a&&(u.timeout=a),new Promise((i,c)=>{let d;d=u.protocol===`http:`?t.request(u):n.request(u),o&&d.write(s),a&&d.on(`timeout`,()=>{this.logUrlWithPiiAwareness(`HTTPS request timeout after ${a}ms for URL`,r),d.destroy(),c(Error(`Request time out after ${a}ms`))}),d.end(),d.on(`response`,e=>{let t=e.headers,n=e.statusCode,r=e.statusMessage,a=[];e.on(`data`,e=>{a.push(e)}),e.on(`end`,()=>{let e=Buffer.concat([...a]).toString(),o=t,s=Yi.getNetworkResponse(o,this.parseBody(n,r,o,e),n);this.shouldDestroyRequest(n,s)&&d.destroy(),i(s)})}),d.on(`error`,t=>{this.logger.error(`HttpClient - HTTPS request error: ${t.toString()}`,``),this.logUrlWithPiiAwareness(`URL`,r),this.logger.error(`HttpClient - Method: ${e}`,``),this.logger.errorPii(`HttpClient - Headers: ${JSON.stringify(l)}`,``),d.destroy(),c(Error(t.toString()))})})},this.parseBody=(e,t,n,r)=>{let i;try{i=JSON.parse(r)}catch{let r,a;e>=d.CLIENT_ERROR_RANGE_START&&e<=d.CLIENT_ERROR_RANGE_END?(r=`client_error`,a=`A client`):e>=d.SERVER_ERROR_RANGE_START&&e<=d.SERVER_ERROR_RANGE_END?(r=`server_error`,a=`A server`):(r=`unknown_error`,a=`An unknown`),i={error:r,error_description:`${a} error occured.\nHttp status code: ${e}\nHttp status message: ${t||`Unknown`}\nHeaders: ${JSON.stringify(n)}`}}return i},this.logUrlWithPiiAwareness=(e,t)=>{if(this.isPiiEnabled)this.logger.errorPii(`HttpClient - ${e}: ${t}`,``);else{let n;try{let e=new URL(t);n=`${e.protocol}//${e.host}${e.pathname}`}catch{n=t.split(`?`)[0]||`unknown`}this.logger.error(`HttpClient - ${e}: ${n} [Enable PII logging to see additional details]`,``)}},this.shouldDestroyRequest=(e,t)=>(ed.SUCCESS_RANGE_END)&&!(t.body&&typeof t.body==`object`&&`error`in t.body&&t.body.error===Gi.AUTHORIZATION_PENDING),this.proxyUrl=e||``,this.customAgentOptions=r||{},this.logger=new qe(i||{},Xi,Zi),this.isPiiEnabled=this.logger.isPiiLoggingEnabled()}async sendGetRequestAsync(e,t,n){return this.proxyUrl?this.networkRequestViaProxy(Bi.GET,e,t,n):this.networkRequestViaHttps(Bi.GET,e,t,n)}async sendPostRequestAsync(e,t){return this.proxyUrl?this.networkRequestViaProxy(Bi.POST,e,t):this.networkRequestViaHttps(Bi.POST,e,t)}};let $i=`invalid_file_extension`,ea=`invalid_file_path`,ta=`invalid_managed_identity_id_type`,na=`invalid_secret`,ra=`platform_not_supported`,ia=`unable_to_create_azure_arc`,aa=`unable_to_create_cloud_shell`,oa=`unable_to_create_source`,sa=`unable_to_read_secret_file`,ca=`www_authenticate_header_missing`,la=`www_authenticate_header_unsupported_format`,ua={[Li.AZURE_POD_IDENTITY_AUTHORITY_HOST]:`azure_pod_identity_authority_host_url_malformed`,[Li.IDENTITY_ENDPOINT]:`identity_endpoint_url_malformed`,[Li.IMDS_ENDPOINT]:`imds_endpoint_url_malformed`,[Li.MSI_ENDPOINT]:`msi_endpoint_url_malformed`},da={[$i]:`The file path in the WWW-Authenticate header does not contain a .key file.`,[ea]:`The file path in the WWW-Authenticate header is not in a valid Windows or Linux Format.`,[ta]:`More than one ManagedIdentityIdType was provided.`,[na]:`The secret in the file on the file path in the WWW-Authenticate header is greater than 4096 bytes.`,[ra]:`The platform is not supported by Azure Arc. Azure Arc only supports Windows and Linux.`,missing_client_id:`A ManagedIdentityId id was not provided.`,[ua.AZURE_POD_IDENTITY_AUTHORITY_HOST]:`The Managed Identity's '${Li.AZURE_POD_IDENTITY_AUTHORITY_HOST}' environment variable is malformed.`,[ua.IDENTITY_ENDPOINT]:`The Managed Identity's '${Li.IDENTITY_ENDPOINT}' environment variable is malformed.`,[ua.IMDS_ENDPOINT]:`The Managed Identity's '${Li.IMDS_ENDPOINT}' environment variable is malformed.`,[ua.MSI_ENDPOINT]:`The Managed Identity's '${Li.MSI_ENDPOINT}' environment variable is malformed.`,network_unavailable:`Authentication unavailable. The request to the managed identity endpoint timed out.`,[ia]:`Azure Arc Managed Identities can only be system assigned.`,[aa]:`Cloud Shell Managed Identities can only be system assigned.`,[oa]:`Unable to create a Managed Identity source based on environment variables.`,[sa]:`Unable to read the secret file.`,user_assigned_not_available_at_runtime:`Service Fabric user assigned managed identity ClientId or ResourceId is not configurable at runtime.`,[ca]:`A 401 response was received form the Azure Arc Managed Identity, but the www-authenticate header is missing.`,[la]:`A 401 response was received form the Azure Arc Managed Identity, but the www-authenticate header is in an unsupported format.`};var fa=class e extends H{constructor(t){super(t,da[t]),this.name=`ManagedIdentityError`,Object.setPrototypeOf(this,e.prototype)}};function pa(e){return new fa(e)}var ma=class{get id(){return this._id}set id(e){this._id=e}get idType(){return this._idType}set idType(e){this._idType=e}constructor(e){let t=e?.userAssignedClientId,n=e?.userAssignedResourceId,r=e?.userAssignedObjectId;if(t){if(n||r)throw pa(ta);this.id=t,this.idType=zi.USER_ASSIGNED_CLIENT_ID}else if(n){if(t||r)throw pa(ta);this.id=n,this.idType=zi.USER_ASSIGNED_RESOURCE_ID}else if(r){if(t||n)throw pa(ta);this.id=r,this.idType=zi.USER_ASSIGNED_OBJECT_ID}else this.id=`system_assigned_managed_identity`,this.idType=zi.SYSTEM_ASSIGNED}};let ha={invalidLoopbackAddressType:{code:`invalid_loopback_server_address_type`,desc:`Loopback server address is not type string. This is unexpected.`},unableToLoadRedirectUri:{code:`unable_to_load_redirectUrl`,desc:`Loopback server callback was invoked without a url. This is unexpected.`},noAuthCodeInResponse:{code:`no_auth_code_in_response`,desc:`No auth code found in the server response. Please check your network trace to determine what happened.`},noLoopbackServerExists:{code:`no_loopback_server_exists`,desc:`No loopback server exists yet.`},loopbackServerAlreadyExists:{code:`loopback_server_already_exists`,desc:`Loopback server already exists. Cannot create another.`},loopbackServerTimeout:{code:`loopback_server_timeout`,desc:`Timed out waiting for auth code listener to be registered.`},stateNotFoundError:{code:`state_not_found`,desc:`State not found. Please verify that the request originated from msal.`},thumbprintMissing:{code:`thumbprint_missing_from_client_certificate`,desc:`Client certificate does not contain a SHA-1 or SHA-256 thumbprint.`},redirectUriNotSupported:{code:`redirect_uri_not_supported`,desc:`RedirectUri is not supported in this scenario. Please remove redirectUri from the request.`}};var ga=class e extends H{constructor(e,t){super(e,t),this.name=`NodeAuthError`}static createInvalidLoopbackAddressTypeError(){return new e(ha.invalidLoopbackAddressType.code,`${ha.invalidLoopbackAddressType.desc}`)}static createUnableToLoadRedirectUrlError(){return new e(ha.unableToLoadRedirectUri.code,`${ha.unableToLoadRedirectUri.desc}`)}static createNoAuthCodeInResponseError(){return new e(ha.noAuthCodeInResponse.code,`${ha.noAuthCodeInResponse.desc}`)}static createNoLoopbackServerExistsError(){return new e(ha.noLoopbackServerExists.code,`${ha.noLoopbackServerExists.desc}`)}static createLoopbackServerAlreadyExistsError(){return new e(ha.loopbackServerAlreadyExists.code,`${ha.loopbackServerAlreadyExists.desc}`)}static createLoopbackServerTimeoutError(){return new e(ha.loopbackServerTimeout.code,`${ha.loopbackServerTimeout.desc}`)}static createStateNotFoundError(){return new e(ha.stateNotFoundError.code,ha.stateNotFoundError.desc)}static createThumbprintMissingError(){return new e(ha.thumbprintMissing.code,ha.thumbprintMissing.desc)}static createRedirectUriNotSupportedError(){return new e(ha.redirectUriNotSupported.code,ha.redirectUriNotSupported.desc)}};let _a={clientId:u.EMPTY_STRING,authority:u.DEFAULT_AUTHORITY,clientSecret:u.EMPTY_STRING,clientAssertion:u.EMPTY_STRING,clientCertificate:{thumbprint:u.EMPTY_STRING,thumbprintSha256:u.EMPTY_STRING,privateKey:u.EMPTY_STRING,x5c:u.EMPTY_STRING},knownAuthorities:[],cloudDiscoveryMetadata:u.EMPTY_STRING,authorityMetadata:u.EMPTY_STRING,clientCapabilities:[],protocolMode:Nt.AAD,azureCloudOptions:{azureCloudInstance:Xe.None,tenant:u.EMPTY_STRING},skipAuthorityMetadataCache:!1,encodeExtraQueryParams:!1},va={claimsBasedCachingEnabled:!1},ya={loggerCallback:()=>{},piiLoggingEnabled:!1,logLevel:e.LogLevel.Info},ba={loggerOptions:ya,networkClient:new Qi,proxyUrl:u.EMPTY_STRING,customAgentOptions:{},disableInternalRetries:!1},xa={application:{appName:u.EMPTY_STRING,appVersion:u.EMPTY_STRING}};function Sa({auth:e,broker:t,cache:n,system:r,telemetry:i}){let a={...ba,networkClient:new Qi(r?.proxyUrl,r?.customAgentOptions),loggerOptions:r?.loggerOptions||ya,disableInternalRetries:r?.disableInternalRetries||!1};if(e.clientCertificate&&!e.clientCertificate.thumbprint&&!e.clientCertificate.thumbprintSha256)throw ga.createStateNotFoundError();return{auth:{..._a,...e},broker:{...t},cache:{...va,...n},system:{...a,...r},telemetry:{...xa,...i}}}function Ca({clientCapabilities:e,managedIdentityIdParams:t,system:n}){let r=new ma(t),i=n?.loggerOptions||ya,a;return a=n?.networkClient?n.networkClient:new Qi(n?.proxyUrl,n?.customAgentOptions),{clientCapabilities:e||[],managedIdentityId:r,system:{loggerOptions:i,networkClient:a},disableInternalRetries:n?.disableInternalRetries||!1}}var wa=class{generateGuid(){return r.v4()}isGuid(e){return/^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i.test(e)}},Ta=class e{static base64Encode(e,t){return Buffer.from(e,t).toString(L.BASE64)}static base64EncodeUrl(t,n){return e.base64Encode(t,n).replace(/=/g,u.EMPTY_STRING).replace(/\+/g,`-`).replace(/\//g,`_`)}static base64Decode(e){return Buffer.from(e,L.BASE64).toString(`utf8`)}static base64DecodeUrl(t){let n=t.replace(/-/g,`+`).replace(/_/g,`/`);for(;n.length%4;)n+=`=`;return e.base64Decode(n)}},Ea=class{sha256(e){return i.createHash(Hi.SHA256).update(e).digest()}},Da=class{constructor(){this.hashUtils=new Ea}async generatePkceCodes(){let e=this.generateCodeVerifier();return{verifier:e,challenge:this.generateCodeChallengeFromVerifier(e)}}generateCodeVerifier(){let e=[],t=256-256%Ui.CV_CHARSET.length;for(;e.length<=32;){let n=i.randomBytes(1)[0];if(n>=t)continue;let r=n%Ui.CV_CHARSET.length;e.push(Ui.CV_CHARSET[r])}let n=e.join(u.EMPTY_STRING);return Ta.base64EncodeUrl(n)}generateCodeChallengeFromVerifier(e){return Ta.base64EncodeUrl(this.hashUtils.sha256(e).toString(L.BASE64),L.BASE64)}},Oa=class{constructor(){this.pkceGenerator=new Da,this.guidGenerator=new wa,this.hashUtils=new Ea}base64UrlEncode(){throw Error(`Method not implemented.`)}encodeKid(){throw Error(`Method not implemented.`)}createNewGuid(){return this.guidGenerator.generateGuid()}base64Encode(e){return Ta.base64Encode(e)}base64Decode(e){return Ta.base64Decode(e)}generatePkceCodes(){return this.pkceGenerator.generatePkceCodes()}getPublicKeyThumbprint(){throw Error(`Method not implemented.`)}removeTokenBindingKey(){throw Error(`Method not implemented.`)}clearKeystore(){throw Error(`Method not implemented.`)}signJwt(){throw Error(`Method not implemented.`)}async hashString(e){return Ta.base64EncodeUrl(this.hashUtils.sha256(e).toString(L.BASE64),L.BASE64)}};function ka(e){let t=e.credentialType===E.REFRESH_TOKEN&&e.familyId||e.clientId,n=e.tokenType&&e.tokenType.toLowerCase()!==j.BEARER.toLowerCase()?e.tokenType.toLowerCase():``;return[e.homeAccountId,e.environment,e.credentialType,t,e.realm||``,e.target||``,e.requestedClaimsHash||``,n].join(Wi.KEY_SEPARATOR).toLowerCase()}function Aa(e){let t=e.homeAccountId.split(`.`)[1];return[e.homeAccountId,e.environment,t||e.tenantId||``].join(Wi.KEY_SEPARATOR).toLowerCase()}var ja=class extends en{constructor(e,t,n,r){super(t,n,e,new a.StubPerformanceClient,r),this.cache={},this.changeEmitters=[],this.logger=e}registerChangeEmitter(e){this.changeEmitters.push(e)}emitChange(){this.changeEmitters.forEach(e=>e.call(null))}cacheToInMemoryCache(e){let t={accounts:{},idTokens:{},accessTokens:{},refreshTokens:{},appMetadata:{}};for(let n in e){let r=e[n];if(typeof r==`object`)if(r instanceof Pt)t.accounts[n]=r;else if(Mr(r))t.idTokens[n]=r;else if(jr(r))t.accessTokens[n]=r;else if(Nr(r))t.refreshTokens[n]=r;else if(Lr(n,r))t.appMetadata[n]=r;else continue}return t}inMemoryCacheToCache(e){let t=this.getCache();return t={...t,...e.accounts,...e.idTokens,...e.accessTokens,...e.refreshTokens,...e.appMetadata},t}getInMemoryCache(){return this.logger.trace(`Getting in-memory cache`),this.cacheToInMemoryCache(this.getCache())}setInMemoryCache(e){this.logger.trace(`Setting in-memory cache`);let t=this.inMemoryCacheToCache(e);this.setCache(t),this.emitChange()}getCache(){return this.logger.trace(`Getting cache key-value store`),this.cache}setCache(e){this.logger.trace(`Setting cache key value store`),this.cache=e,this.emitChange()}getItem(e){return this.logger.tracePii(`Item key: ${e}`),this.getCache()[e]}setItem(e,t){this.logger.tracePii(`Item key: ${e}`);let n=this.getCache();n[e]=t,this.setCache(n)}generateCredentialKey(e){return ka(e)}generateAccountKey(e){return Aa(e)}getAccountKeys(){let e=this.getInMemoryCache();return Object.keys(e.accounts)}getTokenKeys(){let e=this.getInMemoryCache();return{idToken:Object.keys(e.idTokens),accessToken:Object.keys(e.accessTokens),refreshToken:Object.keys(e.refreshTokens)}}getAccount(e){return this.getItem(e)?Object.assign(new Pt,this.getItem(e)):null}async setAccount(e){let t=this.generateAccountKey(Pt.getAccountInfo(e));this.setItem(t,e)}getIdTokenCredential(e){let t=this.getItem(e);return Mr(t)?t:null}async setIdTokenCredential(e){let t=this.generateCredentialKey(e);this.setItem(t,e)}getAccessTokenCredential(e){let t=this.getItem(e);return jr(t)?t:null}async setAccessTokenCredential(e){let t=this.generateCredentialKey(e);this.setItem(t,e)}getRefreshTokenCredential(e){let t=this.getItem(e);return Nr(t)?t:null}async setRefreshTokenCredential(e){let t=this.generateCredentialKey(e);this.setItem(t,e)}getAppMetadata(e){let t=this.getItem(e);return Lr(e,t)?t:null}setAppMetadata(e){let t=Ir(e);this.setItem(t,e)}getServerTelemetry(e){let t=this.getItem(e);return t&&Pr(e,t)?t:null}setServerTelemetry(e,t){this.setItem(e,t)}getAuthorityMetadata(e){let t=this.getItem(e);return t&&Rr(e,t)?t:null}getAuthorityMetadataKeys(){return this.getKeys().filter(e=>this.isAuthorityMetadata(e))}setAuthorityMetadata(e,t){this.setItem(e,t)}getThrottlingCache(e){let t=this.getItem(e);return t&&Fr(e,t)?t:null}setThrottlingCache(e,t){this.setItem(e,t)}removeItem(e){this.logger.tracePii(`Item key: ${e}`);let t=!1,n=this.getCache();return n[e]&&(delete n[e],t=!0),t&&(this.setCache(n),this.emitChange()),t}removeOutdatedAccount(e){this.removeItem(e)}containsKey(e){return this.getKeys().includes(e)}getKeys(){this.logger.trace(`Retrieving all cache keys`);let e=this.getCache();return[...Object.keys(e)]}clear(){this.logger.trace(`Clearing cache entries created by MSAL`),this.getKeys().forEach(e=>{this.removeItem(e)}),this.emitChange()}static generateInMemoryCache(e){return Mi.deserializeAllCache(Mi.deserializeJSONBlob(e))}static generateJsonCache(e){return l.serializeAllCache(e)}updateCredentialCacheKey(e,t){let n=this.generateCredentialKey(t);if(e!==n){let r=this.getItem(e);if(r)return this.removeItem(e),this.setItem(n,r),this.logger.verbose(`Updated an outdated ${t.credentialType} cache key`),n;this.logger.error(`Attempted to update an outdated ${t.credentialType} cache key but no item matching the outdated key was found in storage`)}return e}};let Ma={Account:{},IdToken:{},AccessToken:{},RefreshToken:{},AppMetadata:{}};var Na=class{constructor(e,t,n){this.cacheHasChanged=!1,this.storage=e,this.storage.registerChangeEmitter(this.handleChangeEvent.bind(this)),n&&(this.persistence=n),this.logger=t}hasChanged(){return this.cacheHasChanged}serialize(){this.logger.trace(`Serializing in-memory cache`);let e=l.serializeAllCache(this.storage.getInMemoryCache());return this.cacheSnapshot?(this.logger.trace(`Reading cache snapshot from disk`),e=this.mergeState(JSON.parse(this.cacheSnapshot),e)):this.logger.trace(`No cache snapshot to merge`),this.cacheHasChanged=!1,JSON.stringify(e)}deserialize(e){if(this.logger.trace(`Deserializing JSON to in-memory cache`),this.cacheSnapshot=e,this.cacheSnapshot){this.logger.trace(`Reading cache snapshot from disk`);let e=Mi.deserializeAllCache(this.overlayDefaults(JSON.parse(this.cacheSnapshot)));this.storage.setInMemoryCache(e)}else this.logger.trace(`No cache snapshot to deserialize`)}getKVStore(){return this.storage.getCache()}getCacheSnapshot(){let e=ja.generateInMemoryCache(this.cacheSnapshot);return this.storage.inMemoryCacheToCache(e)}async getAllAccounts(e=new Oa().createNewGuid()){this.logger.trace(`getAllAccounts called`);let t;try{return this.persistence&&(t=new vi(this,!1),await this.persistence.beforeCacheAccess(t)),this.storage.getAllAccounts({},e)}finally{this.persistence&&t&&await this.persistence.afterCacheAccess(t)}}async getAccountByHomeId(e){let t=await this.getAllAccounts();return e&&t&&t.length&&t.filter(t=>t.homeAccountId===e)[0]||null}async getAccountByLocalId(e){let t=await this.getAllAccounts();return e&&t&&t.length&&t.filter(t=>t.localAccountId===e)[0]||null}async removeAccount(e,t){this.logger.trace(`removeAccount called`);let n;try{this.persistence&&(n=new vi(this,!0),await this.persistence.beforeCacheAccess(n)),this.storage.removeAccount(e,t||new wa().generateGuid())}finally{this.persistence&&n&&await this.persistence.afterCacheAccess(n)}}async overwriteCache(){if(!this.persistence){this.logger.info(`No persistence layer specified, cache cannot be overwritten`);return}this.logger.info(`Overwriting in-memory cache with persistent cache`),this.storage.clear();let e=new vi(this,!1);await this.persistence.beforeCacheAccess(e);let t=this.getCacheSnapshot();this.storage.setCache(t),await this.persistence.afterCacheAccess(e)}handleChangeEvent(){this.cacheHasChanged=!0}mergeState(e,t){this.logger.trace(`Merging in-memory cache with cache snapshot`);let n=this.mergeRemovals(e,t);return this.mergeUpdates(n,t)}mergeUpdates(e,t){return Object.keys(t).forEach(n=>{let r=t[n];if(!e.hasOwnProperty(n))r!==null&&(e[n]=r);else{let t=r!==null,i=typeof r==`object`,a=!Array.isArray(r),o=e[n]!==void 0&&e[n]!==null;t&&i&&a&&o?this.mergeUpdates(e[n],r):e[n]=r}}),e}mergeRemovals(e,t){this.logger.trace(`Remove updated entries in cache`);let n=e.Account?this.mergeRemovalsDict(e.Account,t.Account):e.Account,r=e.AccessToken?this.mergeRemovalsDict(e.AccessToken,t.AccessToken):e.AccessToken,i=e.RefreshToken?this.mergeRemovalsDict(e.RefreshToken,t.RefreshToken):e.RefreshToken,a=e.IdToken?this.mergeRemovalsDict(e.IdToken,t.IdToken):e.IdToken,o=e.AppMetadata?this.mergeRemovalsDict(e.AppMetadata,t.AppMetadata):e.AppMetadata;return{...e,Account:n,AccessToken:r,RefreshToken:i,IdToken:a,AppMetadata:o}}mergeRemovalsDict(e,t){let n={...e};return Object.keys(e).forEach(e=>{(!t||!t.hasOwnProperty(e))&&delete n[e]}),n}overlayDefaults(e){return this.logger.trace(`Overlaying input cache with the default cache`),{Account:{...Ma.Account,...e.Account},IdToken:{...Ma.IdToken,...e.IdToken},AccessToken:{...Ma.AccessToken,...e.AccessToken},RefreshToken:{...Ma.RefreshToken,...e.RefreshToken},AppMetadata:{...Ma.AppMetadata,...e.AppMetadata}}}},Pa=class e{static fromAssertion(t){let n=new e;return n.jwt=t,n}static fromCertificate(t,n,r){let i=new e;return i.privateKey=n,i.thumbprint=t,i.useSha256=!1,r&&(i.publicCertificate=this.parseCertificate(r)),i}static fromCertificateWithSha256Thumbprint(t,n,r){let i=new e;return i.privateKey=n,i.thumbprint=t,i.useSha256=!0,r&&(i.publicCertificate=this.parseCertificate(r)),i}getJwt(e,t,n){if(this.privateKey&&this.thumbprint)return this.jwt&&!this.isExpired()&&t===this.issuer&&n===this.jwtAudience?this.jwt:this.createJwt(e,t,n);if(this.jwt)return this.jwt;throw Y(Ae)}createJwt(e,t,n){this.issuer=t,this.jwtAudience=n;let r=Sr();this.expirationTime=r+600;let i={alg:this.useSha256?qi.PSS_256:qi.RSA_256},a=this.useSha256?qi.X5T_256:qi.X5T;Object.assign(i,{[a]:Ta.base64EncodeUrl(this.thumbprint,L.HEX)}),this.publicCertificate&&Object.assign(i,{[qi.X5C]:this.publicCertificate});let s={[qi.AUDIENCE]:this.jwtAudience,[qi.EXPIRATION_TIME]:this.expirationTime,[qi.ISSUER]:this.issuer,[qi.SUBJECT]:this.issuer,[qi.NOT_BEFORE]:r,[qi.JWT_ID]:e.createNewGuid()};return this.jwt=o.sign(s,this.privateKey,{header:i}),this.jwt}isExpired(){return this.expirationTime0)&&Bn(t,e.claims,this.config.authOptions.clientCapabilities),this.config.systemOptions.preventCorsPreflight&&e.username&&Ln(t,e.username),Bt(t)}};function Ia(e,t,n,r){let i=Ti({...e.auth,authority:t,redirectUri:n.redirectUri||``},n,r);return Hn(i,{sku:Gi.MSAL_SKU,version:Zi,cpu:process.arch||``,os:process.platform||``}),e.auth.protocolMode!==Nt.OIDC&&Un(i,e.telemetry.application),On(i,y.CODE),n.codeChallenge&&n.codeChallengeMethod&&qn(i,n.codeChallenge,n.codeChallengeMethod),or(i,n.extraQueryParameters||{}),Ei(t,i,e.auth.encodeExtraQueryParams,n.extraQueryParameters)}var La=class{constructor(e){this.config=Sa(e),this.cryptoProvider=new Oa,this.logger=new qe(this.config.system.loggerOptions,Xi,Zi),this.storage=new ja(this.logger,this.config.auth.clientId,this.cryptoProvider,Kr(this.config.auth)),this.tokenCache=new Na(this.storage,this.logger,this.config.cache.cachePlugin)}async getAuthCodeUrl(e){this.logger.info(`getAuthCodeUrl called`,e.correlationId);let t={...e,...await this.initializeBaseRequest(e),responseMode:e.responseMode||b.QUERY,authenticationScheme:j.BEARER,state:e.state||``,nonce:e.nonce||``},n=await this.createAuthority(t.authority,t.correlationId,void 0,e.azureCloudOptions);return Ia(this.config,n,t,this.logger)}async acquireTokenByCode(e,t){this.logger.info(`acquireTokenByCode called`),e.state&&t&&(this.logger.info(`acquireTokenByCode - validating state`),this.validateState(e.state,t.state||``),t={...t,state:``});let n={...e,...await this.initializeBaseRequest(e),authenticationScheme:j.BEARER},r=this.initializeServerTelemetryManager(Ki.acquireTokenByCode,n.correlationId);try{let i=await this.createAuthority(n.authority,n.correlationId,void 0,e.azureCloudOptions),a=new Si(await this.buildOauthClientConfiguration(i,n.correlationId,n.redirectUri,r));return this.logger.verbose(`Auth code client created`,n.correlationId),await a.acquireToken(n,t)}catch(e){throw e instanceof H&&e.setCorrelationId(n.correlationId),r.cacheFailedRequest(e),e}}async acquireTokenByRefreshToken(e){this.logger.info(`acquireTokenByRefreshToken called`,e.correlationId);let t={...e,...await this.initializeBaseRequest(e),authenticationScheme:j.BEARER},n=this.initializeServerTelemetryManager(Ki.acquireTokenByRefreshToken,t.correlationId);try{let r=await this.createAuthority(t.authority,t.correlationId,void 0,e.azureCloudOptions),i=new Ci(await this.buildOauthClientConfiguration(r,t.correlationId,t.redirectUri||``,n));return this.logger.verbose(`Refresh token client created`,t.correlationId),await i.acquireToken(t)}catch(e){throw e instanceof H&&e.setCorrelationId(t.correlationId),n.cacheFailedRequest(e),e}}async acquireTokenSilent(e){let t={...e,...await this.initializeBaseRequest(e),forceRefresh:e.forceRefresh||!1},n=this.initializeServerTelemetryManager(Ki.acquireTokenSilent,t.correlationId,t.forceRefresh);try{let r=await this.createAuthority(t.authority,t.correlationId,void 0,e.azureCloudOptions),i=await this.buildOauthClientConfiguration(r,t.correlationId,t.redirectUri||``,n),a=new wi(i);this.logger.verbose(`Silent flow client created`,t.correlationId);try{return await this.tokenCache.overwriteCache(),await this.acquireCachedTokenSilent(t,a,i)}catch(e){if(e instanceof Ge&&e.errorCode===Me)return new Ci(i).acquireTokenByRefreshToken(t);throw e}}catch(e){throw e instanceof H&&e.setCorrelationId(t.correlationId),n.cacheFailedRequest(e),e}}async acquireCachedTokenSilent(e,t,n){let[r,i]=await t.acquireCachedToken({...e,scopes:e.scopes?.length?e.scopes:[...f]});if(i===I.PROACTIVELY_REFRESHED){this.logger.info(`ClientApplication:acquireCachedTokenSilent - Cached access token's refreshOn property has been exceeded'. It's not expired, but must be refreshed.`);let t=new Ci(n);try{await t.acquireTokenByRefreshToken(e)}catch{}}return r}async acquireTokenByUsernamePassword(e){this.logger.info(`acquireTokenByUsernamePassword called`,e.correlationId);let t={...e,...await this.initializeBaseRequest(e)},n=this.initializeServerTelemetryManager(Ki.acquireTokenByUsernamePassword,t.correlationId);try{let r=await this.createAuthority(t.authority,t.correlationId,void 0,e.azureCloudOptions),i=new Fa(await this.buildOauthClientConfiguration(r,t.correlationId,``,n));return this.logger.verbose(`Username password client created`,t.correlationId),await i.acquireToken(t)}catch(e){throw e instanceof H&&e.setCorrelationId(t.correlationId),n.cacheFailedRequest(e),e}}getTokenCache(){return this.logger.info(`getTokenCache called`),this.tokenCache}validateState(e,t){if(!e)throw ga.createStateNotFoundError();if(e!==t)throw Y(le)}getLogger(){return this.logger}setLogger(e){this.logger=e}async buildOauthClientConfiguration(e,t,n,r){return this.logger.verbose(`buildOauthClientConfiguration called`,t),this.logger.info(`Building oauth client configuration with the following authority: ${e.tokenEndpoint}.`,t),r?.updateRegionDiscoveryMetadata(e.regionDiscoveryMetadata),{authOptions:{clientId:this.config.auth.clientId,authority:e,clientCapabilities:this.config.auth.clientCapabilities,redirectUri:n},loggerOptions:{logLevel:this.config.system.loggerOptions.logLevel,loggerCallback:this.config.system.loggerOptions.loggerCallback,piiLoggingEnabled:this.config.system.loggerOptions.piiLoggingEnabled,correlationId:t},cacheOptions:{claimsBasedCachingEnabled:this.config.cache.claimsBasedCachingEnabled},cryptoInterface:this.cryptoProvider,networkInterface:this.config.system.networkClient,storageInterface:this.storage,serverTelemetryManager:r,clientCredentials:{clientSecret:this.clientSecret,clientAssertion:await this.getClientAssertion(e)},libraryInfo:{sku:Gi.MSAL_SKU,version:Zi,cpu:process.arch||u.EMPTY_STRING,os:process.platform||u.EMPTY_STRING},telemetry:this.config.telemetry,persistencePlugin:this.config.cache.cachePlugin,serializableCache:this.tokenCache}}async getClientAssertion(e){return this.developerProvidedClientAssertion&&(this.clientAssertion=Pa.fromAssertion(await xi(this.developerProvidedClientAssertion,this.config.auth.clientId,e.tokenEndpoint))),this.clientAssertion&&{assertion:this.clientAssertion.getJwt(this.cryptoProvider,this.config.auth.clientId,e.tokenEndpoint),assertionType:Gi.JWT_BEARER_ASSERTION_TYPE}}async initializeBaseRequest(e){return this.logger.verbose(`initializeRequestScopes called`,e.correlationId),e.authenticationScheme&&e.authenticationScheme===j.POP&&this.logger.verbose(`Authentication Scheme 'pop' is not supported yet, setting Authentication Scheme to 'Bearer' for request`,e.correlationId),e.authenticationScheme=j.BEARER,this.config.cache.claimsBasedCachingEnabled&&e.claims&&!wt.isEmptyObj(e.claims)&&(e.requestedClaimsHash=await this.cryptoProvider.hashString(e.claims)),{...e,scopes:[...e&&e.scopes||[],...f],correlationId:e&&e.correlationId||this.cryptoProvider.createNewGuid(),authority:e.authority||this.config.auth.authority}}initializeServerTelemetryManager(e,t,n){return new ji({clientId:this.config.auth.clientId,correlationId:t,apiId:e,forceRefresh:n||!1},this.storage)}async createAuthority(e,t,n,r){this.logger.verbose(`createAuthority called`,t);let i=Ur.generateAuthority(e,r||this.config.auth.azureCloudOptions),a={protocolMode:this.config.auth.protocolMode,knownAuthorities:this.config.auth.knownAuthorities,cloudDiscoveryMetadata:this.config.auth.cloudDiscoveryMetadata,authorityMetadata:this.config.auth.authorityMetadata,azureRegionConfiguration:n,skipAuthorityMetadataCache:this.config.auth.skipAuthorityMetadataCache};return qr(i,this.config.system.networkClient,this.storage,a,this.logger,t)}clearCache(){this.storage.clear()}},Ra=class{async listenForAuthCode(e,n){if(this.server)throw ga.createLoopbackServerAlreadyExistsError();return new Promise((r,i)=>{this.server=t.createServer((t,a)=>{let o=t.url;if(o){if(o===u.FORWARD_SLASH){a.end(e||`Auth code was successfully acquired. You can close this window now.`);return}}else{a.end(n||`Error occurred loading redirectUrl`),i(ga.createUnableToLoadRedirectUrlError());return}let s=this.getRedirectUri(),c=Z(new URL(o,s).search)||{};c.code&&(a.writeHead(d.REDIRECT,{location:s}),a.end()),c.error&&a.end(n||`Error occurred: ${c.error}`),r(c)}),this.server.listen(0,`127.0.0.1`)})}getRedirectUri(){if(!this.server||!this.server.listening)throw ga.createNoLoopbackServerExistsError();let e=this.server.address();if(!e||typeof e==`string`||!e.port)throw this.closeServer(),ga.createInvalidLoopbackAddressTypeError();let t=e&&e.port;return`${Gi.HTTP_PROTOCOL}${Gi.LOCALHOST}:${t}`}closeServer(){this.server&&=(this.server.close(),typeof this.server.closeAllConnections==`function`&&this.server.closeAllConnections(),this.server.unref(),void 0)}},za=class extends Qr{constructor(e){super(e)}async acquireToken(e){let t=await this.getDeviceCode(e);e.deviceCodeCallback(t);let n=Sr(),r=await this.acquireTokenWithDeviceCode(e,t),i=new yi(this.config.authOptions.clientId,this.cacheManager,this.cryptoUtils,this.logger,this.config.serializableCache,this.config.persistencePlugin);return i.validateTokenResponse(r),i.handleServerTokenResponse(r,this.authority,n,e)}async getDeviceCode(e){let t=this.createExtraQueryParameters(e),n=Q.appendQueryString(this.authority.deviceCodeEndpoint,t),r=this.createQueryString(e),i=this.createTokenRequestHeaders(),a={clientId:this.config.authOptions.clientId,authority:e.authority,scopes:e.scopes,claims:e.claims,authenticationScheme:e.authenticationScheme,resourceRequestMethod:e.resourceRequestMethod,resourceRequestUri:e.resourceRequestUri,shrClaims:e.shrClaims,sshKid:e.sshKid};return this.executePostRequestToDeviceCodeEndpoint(n,r,i,a,e.correlationId)}createExtraQueryParameters(e){let t=new Map;return e.extraQueryParameters&&or(t,e.extraQueryParameters),Bt(t)}async executePostRequestToDeviceCodeEndpoint(e,t,n,r,i){let{body:{user_code:a,device_code:o,verification_uri:s,expires_in:c,interval:l,message:u}}=await this.sendPostRequest(r,e,{body:t,headers:n},i);return{userCode:a,deviceCode:o,verificationUri:s,expiresIn:c,interval:l,message:u}}createQueryString(e){let t=new Map;return An(t,e.scopes),jn(t,this.config.authOptions.clientId),e.extraQueryParameters&&or(t,e.extraQueryParameters),(e.claims||this.config.authOptions.clientCapabilities&&this.config.authOptions.clientCapabilities.length>0)&&Bn(t,e.claims,this.config.authOptions.clientCapabilities),Bt(t)}continuePolling(e,t,n){if(n)throw this.logger.error(`Token request cancelled by setting DeviceCodeRequest.cancel = true`),Y(xe);if(t&&tt)throw this.logger.error(`User defined timeout for device code polling reached. The timeout was set for ${t}`),Y(Ne);if(Sr()>e)throw t&&this.logger.verbose(`User specified timeout ignored as the device code has expired before the timeout elapsed. The user specified timeout was set for ${t}`),this.logger.error(`Device code expired. Expiration time of device code was ${e}`),Y(Se);return!0}async acquireTokenWithDeviceCode(e,t){let n=this.createTokenQueryParameters(e),r=Q.appendQueryString(this.authority.tokenEndpoint,n),i=this.createTokenRequestBody(e,t),a=this.createTokenRequestHeaders(),o=e.timeout?Sr()+e.timeout:void 0,s=Sr()+t.expiresIn,c=t.interval*1e3;for(;this.continuePolling(s,o,e.cancel);){let t={clientId:this.config.authOptions.clientId,authority:e.authority,scopes:e.scopes,claims:e.claims,authenticationScheme:e.authenticationScheme,resourceRequestMethod:e.resourceRequestMethod,resourceRequestUri:e.resourceRequestUri,shrClaims:e.shrClaims,sshKid:e.sshKid},n=await this.executePostToTokenEndpoint(r,i,a,t,e.correlationId);if(n.body&&n.body.error)if(n.body.error===u.AUTHORIZATION_PENDING)this.logger.info(`Authorization pending. Continue polling.`),await Er(c);else throw this.logger.info(`Unexpected error in polling from the server`),ne(z,n.body.error);else return this.logger.verbose(`Authorization completed successfully. Polling stopped.`),n.body}throw this.logger.error(`Polling stopped for unknown reasons.`),Y(Ce)}createTokenRequestBody(e,t){let n=new Map;return An(n,e.scopes),jn(n,this.config.authOptions.clientId),rr(n,x.DEVICE_CODE_GRANT),Yn(n,t.deviceCode),Vn(n,e.correlationId||this.config.cryptoInterface.createNewGuid()),ir(n),Hn(n,this.config.libraryInfo),Un(n,this.config.telemetry.application),pr(n),this.serverTelemetryManager&&fr(n,this.serverTelemetryManager),(!wt.isEmptyObj(e.claims)||this.config.authOptions.clientCapabilities&&this.config.authOptions.clientCapabilities.length>0)&&Bn(n,e.claims,this.config.authOptions.clientCapabilities),Bt(n)}},Ba=class extends La{constructor(e){super(e),this.config.broker.nativeBrokerPlugin&&(this.config.broker.nativeBrokerPlugin.isBrokerAvailable?(this.nativeBrokerPlugin=this.config.broker.nativeBrokerPlugin,this.nativeBrokerPlugin.setLogger(this.config.system.loggerOptions)):this.logger.warning(`NativeBroker implementation was provided but the broker is unavailable.`)),this.skus=ji.makeExtraSkuString({libraryName:Gi.MSAL_SKU,libraryVersion:Zi})}async acquireTokenByDeviceCode(e){this.logger.info(`acquireTokenByDeviceCode called`,e.correlationId);let t=Object.assign(e,await this.initializeBaseRequest(e)),n=this.initializeServerTelemetryManager(Ki.acquireTokenByDeviceCode,t.correlationId);try{let r=await this.createAuthority(t.authority,t.correlationId,void 0,e.azureCloudOptions),i=new za(await this.buildOauthClientConfiguration(r,t.correlationId,``,n));return this.logger.verbose(`Device code client created`,t.correlationId),await i.acquireToken(t)}catch(e){throw e instanceof H&&e.setCorrelationId(t.correlationId),n.cacheFailedRequest(e),e}}async acquireTokenInteractive(e){let t=e.correlationId||this.cryptoProvider.createNewGuid();this.logger.trace(`acquireTokenInteractive called`,t);let{openBrowser:n,successTemplate:r,errorTemplate:i,windowHandle:a,loopbackClient:o,...s}=e;if(this.nativeBrokerPlugin){let n={...s,clientId:this.config.auth.clientId,scopes:e.scopes||f,redirectUri:e.redirectUri||``,authority:e.authority||this.config.auth.authority,correlationId:t,extraParameters:{...s.extraQueryParameters,...s.tokenQueryParameters,[Cn]:this.skus},accountId:s.account?.nativeAccountId};return this.nativeBrokerPlugin.acquireTokenInteractive(n,a)}if(e.redirectUri){if(!this.config.broker.nativeBrokerPlugin)throw ga.createRedirectUriNotSupportedError();e.redirectUri=``}let{verifier:c,challenge:l}=await this.cryptoProvider.generatePkceCodes(),d=o||new Ra,p={},m=null;try{let a=d.listenForAuthCode(r,i).then(e=>{p=e}).catch(e=>{m=e}),o=await this.waitForRedirectUri(d),h={...s,correlationId:t,scopes:e.scopes||f,redirectUri:o,responseMode:b.QUERY,codeChallenge:l,codeChallengeMethod:v.S256};if(await n(await this.getAuthCodeUrl(h)),await a,m)throw m;if(p.error)throw new Jr(p.error,p.error_description,p.suberror);if(!p.code)throw ga.createNoAuthCodeInResponseError();let g=p.client_info,_={code:p.code,codeVerifier:c,clientInfo:g||u.EMPTY_STRING,...h};return await this.acquireTokenByCode(_)}finally{d.closeServer()}}async acquireTokenSilent(e){let t=e.correlationId||this.cryptoProvider.createNewGuid();if(this.logger.trace(`acquireTokenSilent called`,t),this.nativeBrokerPlugin){let n={...e,clientId:this.config.auth.clientId,scopes:e.scopes||f,redirectUri:e.redirectUri||``,authority:e.authority||this.config.auth.authority,correlationId:t,extraParameters:{...e.tokenQueryParameters,[Cn]:this.skus},accountId:e.account.nativeAccountId,forceRefresh:e.forceRefresh||!1};return this.nativeBrokerPlugin.acquireTokenSilent(n)}if(e.redirectUri){if(!this.config.broker.nativeBrokerPlugin)throw ga.createRedirectUriNotSupportedError();e.redirectUri=``}return super.acquireTokenSilent(e)}async signOut(e){if(this.nativeBrokerPlugin&&e.account.nativeAccountId){let t={clientId:this.config.auth.clientId,accountId:e.account.nativeAccountId,correlationId:e.correlationId||this.cryptoProvider.createNewGuid()};await this.nativeBrokerPlugin.signOut(t)}await this.getTokenCache().removeAccount(e.account,e.correlationId)}async getAllAccounts(){if(this.nativeBrokerPlugin){let e=this.cryptoProvider.createNewGuid();return this.nativeBrokerPlugin.getAllAccounts(this.config.auth.clientId,e)}return this.getTokenCache().getAllAccounts()}async waitForRedirectUri(e){return new Promise((t,n)=>{let r=0,i=setInterval(()=>{if(Ji.TIMEOUT_MS/Ji.INTERVAL_MS1)throw Y(me);return o[0]}async executeTokenRequest(e,t,n){let r,i;if(this.appTokenProvider){this.logger.info(`Using appTokenProvider extensibility.`);let t={correlationId:e.correlationId,tenantId:this.config.authOptions.authority.tenant,scopes:e.scopes,claims:e.claims};i=Sr();let n=await this.appTokenProvider(t);r={access_token:n.accessToken,expires_in:n.expiresInSeconds,refresh_in:n.refreshInSeconds,token_type:j.BEARER}}else{let n=this.createTokenQueryParameters(e),a=Q.appendQueryString(t.tokenEndpoint,n),o=await this.createTokenRequestBody(e),s=this.createTokenRequestHeaders(),c={clientId:this.config.authOptions.clientId,authority:e.authority,scopes:e.scopes,claims:e.claims,authenticationScheme:e.authenticationScheme,resourceRequestMethod:e.resourceRequestMethod,resourceRequestUri:e.resourceRequestUri,shrClaims:e.shrClaims,sshKid:e.sshKid};this.logger.info(`Sending token request to endpoint: `+t.tokenEndpoint),i=Sr();let l=await this.executePostToTokenEndpoint(a,o,s,c,e.correlationId);r=l.body,r.status=l.status}let a=new yi(this.config.authOptions.clientId,this.cacheManager,this.cryptoUtils,this.logger,this.config.serializableCache,this.config.persistencePlugin);return a.validateTokenResponse(r,n),await a.handleServerTokenResponse(r,this.authority,i,e)}async createTokenRequestBody(e){let t=new Map;jn(t,this.config.authOptions.clientId),An(t,e.scopes,!1),rr(t,x.CLIENT_CREDENTIALS_GRANT),Hn(t,this.config.libraryInfo),Un(t,this.config.telemetry.application),pr(t),this.serverTelemetryManager&&fr(t,this.serverTelemetryManager),Vn(t,e.correlationId||this.config.cryptoInterface.createNewGuid()),this.config.clientCredentials.clientSecret&&Qn(t,this.config.clientCredentials.clientSecret);let n=e.clientAssertion||this.config.clientCredentials.clientAssertion;return n&&($n(t,await xi(n.assertion,this.config.authOptions.clientId,e.resourceRequestUri)),er(t,n.assertionType)),(!wt.isEmptyObj(e.claims)||this.config.authOptions.clientCapabilities&&this.config.authOptions.clientCapabilities.length>0)&&Bn(t,e.claims,this.config.authOptions.clientCapabilities),Bt(t)}},Ha=class extends Qr{constructor(e){super(e)}async acquireToken(e){if(this.scopeSet=new Tt(e.scopes||[]),this.userAssertionHash=await this.cryptoUtils.hashString(e.oboAssertion),e.skipCache||e.claims)return this.executeTokenRequest(e,this.authority,this.userAssertionHash);try{return await this.getCachedAuthenticationResult(e)}catch{return await this.executeTokenRequest(e,this.authority,this.userAssertionHash)}}async getCachedAuthenticationResult(e){let t=this.readAccessTokenFromCacheForOBO(this.config.authOptions.clientId,e);if(t){if(wr(t.expiresOn,this.config.systemOptions.tokenRenewalOffsetSeconds))throw this.serverTelemetryManager?.setCacheOutcome(I.CACHED_ACCESS_TOKEN_EXPIRED),this.logger.info(`OnbehalfofFlow:getCachedAuthenticationResult - Cached access token is expired or will expire within ${this.config.systemOptions.tokenRenewalOffsetSeconds} seconds.`),Y(Me)}else throw this.serverTelemetryManager?.setCacheOutcome(I.NO_CACHED_ACCESS_TOKEN),this.logger.info(`SilentFlowClient:acquireCachedToken - No access token found in cache for the given properties.`),Y(Me);let n=this.readIdTokenFromCacheForOBO(t.homeAccountId,e.correlationId),r,i=null;if(n){r=Ft(n.secret,Ta.base64Decode);let t=r.oid||r.sub,a={homeAccountId:n.homeAccountId,environment:n.environment,tenantId:n.realm,username:u.EMPTY_STRING,localAccountId:t||u.EMPTY_STRING};i=this.cacheManager.getAccount(this.cacheManager.generateAccountKey(a),e.correlationId)}return this.config.serverTelemetryManager&&this.config.serverTelemetryManager.incrementCacheHits(),yi.generateAuthenticationResult(this.cryptoUtils,this.authority,{account:i,accessToken:t,idToken:n,refreshToken:null,appMetadata:null},!0,e,r)}readIdTokenFromCacheForOBO(e,t){let n={homeAccountId:e,environment:this.authority.canonicalAuthorityUrlComponents.HostNameAndPort,credentialType:E.ID_TOKEN,clientId:this.config.authOptions.clientId,realm:this.authority.tenant},r=this.cacheManager.getIdTokensByFilter(n,t);return Object.values(r).length<1?null:Object.values(r)[0]}readAccessTokenFromCacheForOBO(e,t){let n=t.authenticationScheme||j.BEARER,r={credentialType:n.toLowerCase()===j.BEARER.toLowerCase()?E.ACCESS_TOKEN:E.ACCESS_TOKEN_WITH_AUTH_SCHEME,clientId:e,target:Tt.createSearchScopes(this.scopeSet.asArray()),tokenType:n,keyId:t.sshKid,requestedClaimsHash:t.requestedClaimsHash,userAssertionHash:this.userAssertionHash},i=this.cacheManager.getAccessTokensByFilter(r,t.correlationId),a=i.length;if(a<1)return null;if(a>1)throw Y(me);return i[0]}async executeTokenRequest(e,t,n){let r=this.createTokenQueryParameters(e),i=Q.appendQueryString(t.tokenEndpoint,r),a=await this.createTokenRequestBody(e),o=this.createTokenRequestHeaders(),s={clientId:this.config.authOptions.clientId,authority:e.authority,scopes:e.scopes,claims:e.claims,authenticationScheme:e.authenticationScheme,resourceRequestMethod:e.resourceRequestMethod,resourceRequestUri:e.resourceRequestUri,shrClaims:e.shrClaims,sshKid:e.sshKid},c=Sr(),l=await this.executePostToTokenEndpoint(i,a,o,s,e.correlationId),u=new yi(this.config.authOptions.clientId,this.cacheManager,this.cryptoUtils,this.logger,this.config.serializableCache,this.config.persistencePlugin);return u.validateTokenResponse(l.body),await u.handleServerTokenResponse(l.body,this.authority,c,e,void 0,n)}async createTokenRequestBody(e){let t=new Map;jn(t,this.config.authOptions.clientId),An(t,e.scopes),rr(t,x.JWT_BEARER),ir(t),Hn(t,this.config.libraryInfo),Un(t,this.config.telemetry.application),pr(t),this.serverTelemetryManager&&fr(t,this.serverTelemetryManager),Vn(t,e.correlationId||this.config.cryptoInterface.createNewGuid()),nr(t,`on_behalf_of`),tr(t,e.oboAssertion),this.config.clientCredentials.clientSecret&&Qn(t,this.config.clientCredentials.clientSecret);let n=this.config.clientCredentials.clientAssertion;return n&&($n(t,await xi(n.assertion,this.config.authOptions.clientId,e.resourceRequestUri)),er(t,n.assertionType)),(e.claims||this.config.authOptions.clientCapabilities&&this.config.authOptions.clientCapabilities.length>0)&&Bn(t,e.claims,this.config.authOptions.clientCapabilities),Bt(t)}},Ua=class extends La{constructor(e){super(e);let t=!!this.config.auth.clientSecret,n=!!this.config.auth.clientAssertion,r=(!!this.config.auth.clientCertificate?.thumbprint||!!this.config.auth.clientCertificate?.thumbprintSha256)&&!!this.config.auth.clientCertificate?.privateKey;if(!this.appTokenProvider){if(t&&n||n&&r||t&&r)throw Y(je);if(this.config.auth.clientSecret){this.clientSecret=this.config.auth.clientSecret;return}if(this.config.auth.clientAssertion){this.developerProvidedClientAssertion=this.config.auth.clientAssertion;return}if(r)this.clientAssertion=this.config.auth.clientCertificate.thumbprintSha256?Pa.fromCertificateWithSha256Thumbprint(this.config.auth.clientCertificate.thumbprintSha256,this.config.auth.clientCertificate.privateKey,this.config.auth.clientCertificate.x5c):Pa.fromCertificate(this.config.auth.clientCertificate.thumbprint,this.config.auth.clientCertificate.privateKey,this.config.auth.clientCertificate.x5c);else throw Y(je);this.appTokenProvider=void 0}}SetAppTokenProvider(e){this.appTokenProvider=e}async acquireTokenByClientCredential(e){this.logger.info(`acquireTokenByClientCredential called`,e.correlationId);let t;e.clientAssertion&&(t={assertion:await xi(e.clientAssertion,this.config.auth.clientId),assertionType:Gi.JWT_BEARER_ASSERTION_TYPE});let n=await this.initializeBaseRequest(e),r={...n,scopes:n.scopes.filter(e=>!f.includes(e))},i={...e,...r,clientAssertion:t},a=new Q(i.authority).getUrlComponents().PathSegments[0];if(Object.values(h).includes(a))throw Y(Be);let o=process.env.MSAL_FORCE_REGION,s;i.azureRegion!==`DisableMsalForceRegion`&&(s=!i.azureRegion&&o?o:i.azureRegion);let c={azureRegion:s,environmentRegion:process.env.REGION_NAME},l=this.initializeServerTelemetryManager(Ki.acquireTokenByClientCredential,i.correlationId,i.skipCache);try{let t=await this.createAuthority(i.authority,i.correlationId,c,e.azureCloudOptions),n=new Va(await this.buildOauthClientConfiguration(t,i.correlationId,``,l),this.appTokenProvider);return this.logger.verbose(`Client credential client created`,i.correlationId),await n.acquireToken(i)}catch(e){throw e instanceof H&&e.setCorrelationId(i.correlationId),l.cacheFailedRequest(e),e}}async acquireTokenOnBehalfOf(e){this.logger.info(`acquireTokenOnBehalfOf called`,e.correlationId);let t={...e,...await this.initializeBaseRequest(e)};try{let n=await this.createAuthority(t.authority,t.correlationId,void 0,e.azureCloudOptions),r=new Ha(await this.buildOauthClientConfiguration(n,t.correlationId,``,void 0));return this.logger.verbose(`On behalf of client created`,t.correlationId),await r.acquireToken(t)}catch(e){throw e instanceof H&&e.setCorrelationId(t.correlationId),e}}};function Wa(e){if(typeof e!=`string`)return!1;let t=new Date(e);return!isNaN(t.getTime())&&t.toISOString()===e}var Ga=class{constructor(e,t,n){this.httpClientNoRetries=e,this.retryPolicy=t,this.logger=n}async sendNetworkRequestAsyncHelper(e,t,n){return e===Bi.GET?this.httpClientNoRetries.sendGetRequestAsync(t,n):this.httpClientNoRetries.sendPostRequestAsync(t,n)}async sendNetworkRequestAsync(e,t,n){let r=await this.sendNetworkRequestAsyncHelper(e,t,n);`isNewRequest`in this.retryPolicy&&(this.retryPolicy.isNewRequest=!0);let i=0;for(;await this.retryPolicy.pauseForRetry(r.status,i,this.logger,r.headers[m.RETRY_AFTER]);)r=await this.sendNetworkRequestAsyncHelper(e,t,n),i++;return r}async sendGetRequestAsync(e,t){return this.sendNetworkRequestAsync(Bi.GET,e,t)}async sendPostRequestAsync(e,t){return this.sendNetworkRequestAsync(Bi.POST,e,t)}};let Ka={MANAGED_IDENTITY_CLIENT_ID_2017:`clientid`,MANAGED_IDENTITY_CLIENT_ID:`client_id`,MANAGED_IDENTITY_OBJECT_ID:`object_id`,MANAGED_IDENTITY_RESOURCE_ID_IMDS:`msi_res_id`,MANAGED_IDENTITY_RESOURCE_ID_NON_IMDS:`mi_res_id`};var qa=class{constructor(e,t,n,r,i){this.logger=e,this.nodeStorage=t,this.networkClient=n,this.cryptoProvider=r,this.disableInternalRetries=i}async getServerTokenResponseAsync(e,t,n,r){return this.getServerTokenResponse(e)}getServerTokenResponse(e){let t,n;return e.body.expires_on&&(Wa(e.body.expires_on)&&(e.body.expires_on=new Date(e.body.expires_on).getTime()/1e3),n=e.body.expires_on-Sr(),n>2*3600&&(t=n/2)),{status:e.status,access_token:e.body.access_token,expires_in:n,scope:e.body.resource,token_type:e.body.token_type,refresh_in:t,correlation_id:e.body.correlation_id||e.body.correlationId,error:typeof e.body.error==`string`?e.body.error:e.body.error?.code,error_description:e.body.message||(typeof e.body.error==`string`?e.body.error_description:e.body.error?.message),error_codes:e.body.error_codes,timestamp:e.body.timestamp,trace_id:e.body.trace_id}}async acquireTokenWithManagedIdentity(e,t,n,r){let i=this.createRequest(e.resource,t);if(e.revokedTokenSha256Hash&&(this.logger.info(`[Managed Identity] The following claims are present in the request: ${e.claims}`),i.queryParameters[Ii.SHA256_TOKEN_TO_REFRESH]=e.revokedTokenSha256Hash),e.clientCapabilities?.length){let t=e.clientCapabilities.toString();this.logger.info(`[Managed Identity] The following client capabilities are present in the request: ${t}`),i.queryParameters[Ii.XMS_CC]=t}let a=i.headers;a[m.CONTENT_TYPE]=u.URL_FORM_CONTENT_TYPE;let o={headers:a};Object.keys(i.bodyParameters).length&&(o.body=i.computeParametersBodyString());let s=this.disableInternalRetries?this.networkClient:new Ga(this.networkClient,i.retryPolicy,this.logger),c=Sr(),l;try{l=i.httpMethod===Bi.POST?await s.sendPostRequestAsync(i.computeUri(),o):await s.sendGetRequestAsync(i.computeUri(),o)}catch(e){throw e instanceof H?e:Y(G)}let d=new yi(t.id,this.nodeStorage,this.cryptoProvider,this.logger,null,null),f=await this.getServerTokenResponseAsync(l,s,i,o);return d.validateTokenResponse(f,r),d.handleServerTokenResponse(f,n,c,e)}getManagedIdentityUserAssignedIdQueryParameterKey(e,t,n){switch(e){case zi.USER_ASSIGNED_CLIENT_ID:return this.logger.info(`[Managed Identity] [API version ${n?`2017+`:`2019+`}] Adding user assigned client id to the request.`),n?Ka.MANAGED_IDENTITY_CLIENT_ID_2017:Ka.MANAGED_IDENTITY_CLIENT_ID;case zi.USER_ASSIGNED_RESOURCE_ID:return this.logger.info(`[Managed Identity] Adding user assigned resource id to the request.`),t?Ka.MANAGED_IDENTITY_RESOURCE_ID_IMDS:Ka.MANAGED_IDENTITY_RESOURCE_ID_NON_IMDS;case zi.USER_ASSIGNED_OBJECT_ID:return this.logger.info(`[Managed Identity] Adding user assigned object id to the request.`),Ka.MANAGED_IDENTITY_OBJECT_ID;default:throw pa(ta)}}};qa.getValidatedEnvVariableUrlString=(e,t,n,r)=>{try{return new Q(t).urlString}catch{throw r.info(`[Managed Identity] ${n} managed identity is unavailable because the '${e}' environment variable is malformed.`),pa(ua[e])}};var Ja=class{calculateDelay(e,t){if(!e)return t;let n=Math.round(parseFloat(e)*1e3);return isNaN(n)&&(n=new Date(e).valueOf()-new Date().valueOf()),Math.max(t,n)}};let Ya=[a.HttpStatus.NOT_FOUND,a.HttpStatus.REQUEST_TIMEOUT,a.HttpStatus.TOO_MANY_REQUESTS,a.HttpStatus.SERVER_ERROR,a.HttpStatus.SERVICE_UNAVAILABLE,a.HttpStatus.GATEWAY_TIMEOUT];var Xa=class e{constructor(){this.linearRetryStrategy=new Ja}static get DEFAULT_MANAGED_IDENTITY_RETRY_DELAY_MS(){return 1e3}async pauseForRetry(t,n,r,i){if(Ya.includes(t)&&n<3){let t=this.linearRetryStrategy.calculateDelay(i,e.DEFAULT_MANAGED_IDENTITY_RETRY_DELAY_MS);return r.verbose(`Retrying request in ${t}ms (retry attempt: ${n+1})`),await new Promise(e=>setTimeout(e,t)),!0}return!1}},Za=class{constructor(e,t,n){this.httpMethod=e,this._baseEndpoint=t,this.headers={},this.bodyParameters={},this.queryParameters={},this.retryPolicy=n||new Xa}computeUri(){let e=new Map;this.queryParameters&&or(e,this.queryParameters);let t=Bt(e);return Q.appendQueryString(this._baseEndpoint,t)}computeParametersBodyString(){let e=new Map;return this.bodyParameters&&or(e,this.bodyParameters),Bt(e)}},Qa=class e extends qa{constructor(e,t,n,r,i,a,o){super(e,t,n,r,i),this.identityEndpoint=a,this.identityHeader=o}static getEnvironmentVariables(){return[process.env[Li.IDENTITY_ENDPOINT],process.env[Li.IDENTITY_HEADER]]}static tryCreate(t,n,r,i,a){let[o,s]=e.getEnvironmentVariables();if(!o||!s)return t.info(`[Managed Identity] ${Ri.APP_SERVICE} managed identity is unavailable because one or both of the '${Li.IDENTITY_HEADER}' and '${Li.IDENTITY_ENDPOINT}' environment variables are not defined.`),null;let c=e.getValidatedEnvVariableUrlString(Li.IDENTITY_ENDPOINT,o,Ri.APP_SERVICE,t);return t.info(`[Managed Identity] Environment variables validation passed for ${Ri.APP_SERVICE} managed identity. Endpoint URI: ${c}. Creating ${Ri.APP_SERVICE} managed identity.`),new e(t,n,r,i,a,o,s)}createRequest(e,t){let n=new Za(Bi.GET,this.identityEndpoint);return n.headers[Fi.APP_SERVICE_SECRET_HEADER_NAME]=this.identityHeader,n.queryParameters[Ii.API_VERSION]=`2019-08-01`,n.queryParameters[Ii.RESOURCE]=e,t.idType!==zi.SYSTEM_ASSIGNED&&(n.queryParameters[this.getManagedIdentityUserAssignedIdQueryParameterKey(t.idType)]=t.id),n}};let $a=`http://127.0.0.1:40342/metadata/identity/oauth2/token`,eo=`N/A: himds executable exists`,to={win32:`${process.env.ProgramData}\\AzureConnectedMachineAgent\\Tokens\\`,linux:`/var/opt/azcmagent/tokens/`},no={win32:`${process.env.ProgramFiles}\\AzureConnectedMachineAgent\\himds.exe`,linux:`/opt/azcmagent/bin/himds`};var ro=class e extends qa{constructor(e,t,n,r,i,a){super(e,t,n,r,i),this.identityEndpoint=a}static getEnvironmentVariables(){let e=process.env[Li.IDENTITY_ENDPOINT],t=process.env[Li.IMDS_ENDPOINT];if(!e||!t){let n=no[process.platform];try{s.accessSync(n,s.constants.F_OK|s.constants.R_OK),e=$a,t=eo}catch{}}return[e,t]}static tryCreate(t,n,r,i,a,o){let[s,c]=e.getEnvironmentVariables();if(!s||!c)return t.info(`[Managed Identity] ${Ri.AZURE_ARC} managed identity is unavailable through environment variables because one or both of '${Li.IDENTITY_ENDPOINT}' and '${Li.IMDS_ENDPOINT}' are not defined. ${Ri.AZURE_ARC} managed identity is also unavailable through file detection.`),null;if(c===eo)t.info(`[Managed Identity] ${Ri.AZURE_ARC} managed identity is available through file detection. Defaulting to known ${Ri.AZURE_ARC} endpoint: ${$a}. Creating ${Ri.AZURE_ARC} managed identity.`);else{let n=e.getValidatedEnvVariableUrlString(Li.IDENTITY_ENDPOINT,s,Ri.AZURE_ARC,t);n.endsWith(`/`)&&n.slice(0,-1),e.getValidatedEnvVariableUrlString(Li.IMDS_ENDPOINT,c,Ri.AZURE_ARC,t),t.info(`[Managed Identity] Environment variables validation passed for ${Ri.AZURE_ARC} managed identity. Endpoint URI: ${n}. Creating ${Ri.AZURE_ARC} managed identity.`)}if(o.idType!==zi.SYSTEM_ASSIGNED)throw pa(ia);return new e(t,n,r,i,a,s)}createRequest(e){let t=new Za(Bi.GET,this.identityEndpoint.replace(`localhost`,`127.0.0.1`));return t.headers[Fi.METADATA_HEADER_NAME]=`true`,t.queryParameters[Ii.API_VERSION]=`2019-11-01`,t.queryParameters[Ii.RESOURCE]=e,t}async getServerTokenResponseAsync(e,t,n,r){let i;if(e.status===d.UNAUTHORIZED){let a=e.headers[`www-authenticate`];if(!a)throw pa(ca);if(!a.includes(`Basic realm=`))throw pa(la);let o=a.split(`Basic realm=`)[1];if(!to.hasOwnProperty(process.platform))throw pa(ra);let l=to[process.platform],u=c.basename(o);if(!u.endsWith(`.key`))throw pa($i);if(l+u!==o)throw pa(ea);let d;try{d=await s.statSync(o).size}catch{throw pa(sa)}if(d>4096)throw pa(na);let f;try{f=s.readFileSync(o,L.UTF8)}catch{throw pa(sa)}let p=`Basic ${f}`;this.logger.info(`[Managed Identity] Adding authorization header to the request.`),n.headers[Fi.AUTHORIZATION_HEADER_NAME]=p;try{i=await t.sendGetRequestAsync(n.computeUri(),r)}catch(e){throw e instanceof H?e:Y(G)}}return this.getServerTokenResponse(i||e)}},io=class e extends qa{constructor(e,t,n,r,i,a){super(e,t,n,r,i),this.msiEndpoint=a}static getEnvironmentVariables(){return[process.env[Li.MSI_ENDPOINT]]}static tryCreate(t,n,r,i,a,o){let[s]=e.getEnvironmentVariables();if(!s)return t.info(`[Managed Identity] ${Ri.CLOUD_SHELL} managed identity is unavailable because the '${Li.MSI_ENDPOINT} environment variable is not defined.`),null;let c=e.getValidatedEnvVariableUrlString(Li.MSI_ENDPOINT,s,Ri.CLOUD_SHELL,t);if(t.info(`[Managed Identity] Environment variable validation passed for ${Ri.CLOUD_SHELL} managed identity. Endpoint URI: ${c}. Creating ${Ri.CLOUD_SHELL} managed identity.`),o.idType!==zi.SYSTEM_ASSIGNED)throw pa(aa);return new e(t,n,r,i,a,s)}createRequest(e){let t=new Za(Bi.POST,this.msiEndpoint);return t.headers[Fi.METADATA_HEADER_NAME]=`true`,t.bodyParameters[Ii.RESOURCE]=e,t}},ao=class{constructor(e,t,n){this.minExponentialBackoff=e,this.maxExponentialBackoff=t,this.exponentialDeltaBackoff=n}calculateDelay(e){return e===0?this.minExponentialBackoff:Math.min(2**(e-1)*this.exponentialDeltaBackoff,this.maxExponentialBackoff)}};let oo=[a.HttpStatus.NOT_FOUND,a.HttpStatus.REQUEST_TIMEOUT,a.HttpStatus.GONE,a.HttpStatus.TOO_MANY_REQUESTS];var so=class e{constructor(){this.exponentialRetryStrategy=new ao(e.MIN_EXPONENTIAL_BACKOFF_MS,e.MAX_EXPONENTIAL_BACKOFF_MS,e.EXPONENTIAL_DELTA_BACKOFF_MS)}static get MIN_EXPONENTIAL_BACKOFF_MS(){return 1e3}static get MAX_EXPONENTIAL_BACKOFF_MS(){return 4e3}static get EXPONENTIAL_DELTA_BACKOFF_MS(){return 2e3}static get HTTP_STATUS_GONE_RETRY_AFTER_MS(){return 1e4}set isNewRequest(e){this._isNewRequest=e}async pauseForRetry(t,n,r){if(this._isNewRequest&&(this._isNewRequest=!1,this.maxRetries=t===a.HttpStatus.GONE?7:3),(oo.includes(t)||t>=a.HttpStatus.SERVER_ERROR_RANGE_START&&t<=a.HttpStatus.SERVER_ERROR_RANGE_END&&nsetTimeout(e,i)),!0}return!1}};let co=`/metadata/identity/oauth2/token`,lo=`http://169.254.169.254${co}`;var uo=class e extends qa{constructor(e,t,n,r,i,a){super(e,t,n,r,i),this.identityEndpoint=a}static tryCreate(t,n,r,i,a){let o;return process.env[Li.AZURE_POD_IDENTITY_AUTHORITY_HOST]?(t.info(`[Managed Identity] Environment variable ${Li.AZURE_POD_IDENTITY_AUTHORITY_HOST} for ${Ri.IMDS} returned endpoint: ${process.env[Li.AZURE_POD_IDENTITY_AUTHORITY_HOST]}`),o=e.getValidatedEnvVariableUrlString(Li.AZURE_POD_IDENTITY_AUTHORITY_HOST,`${process.env[Li.AZURE_POD_IDENTITY_AUTHORITY_HOST]}${co}`,Ri.IMDS,t)):(t.info(`[Managed Identity] Unable to find ${Li.AZURE_POD_IDENTITY_AUTHORITY_HOST} environment variable for ${Ri.IMDS}, using the default endpoint.`),o=lo),new e(t,n,r,i,a,o)}createRequest(e,t){let n=new Za(Bi.GET,this.identityEndpoint);return n.headers[Fi.METADATA_HEADER_NAME]=`true`,n.queryParameters[Ii.API_VERSION]=`2018-02-01`,n.queryParameters[Ii.RESOURCE]=e,t.idType!==zi.SYSTEM_ASSIGNED&&(n.queryParameters[this.getManagedIdentityUserAssignedIdQueryParameterKey(t.idType,!0)]=t.id),n.retryPolicy=new so,n}},fo=class e extends qa{constructor(e,t,n,r,i,a,o){super(e,t,n,r,i),this.identityEndpoint=a,this.identityHeader=o}static getEnvironmentVariables(){return[process.env[Li.IDENTITY_ENDPOINT],process.env[Li.IDENTITY_HEADER],process.env[Li.IDENTITY_SERVER_THUMBPRINT]]}static tryCreate(t,n,r,i,a,o){let[s,c,l]=e.getEnvironmentVariables();if(!s||!c||!l)return t.info(`[Managed Identity] ${Ri.SERVICE_FABRIC} managed identity is unavailable because one or all of the '${Li.IDENTITY_HEADER}', '${Li.IDENTITY_ENDPOINT}' or '${Li.IDENTITY_SERVER_THUMBPRINT}' environment variables are not defined.`),null;let u=e.getValidatedEnvVariableUrlString(Li.IDENTITY_ENDPOINT,s,Ri.SERVICE_FABRIC,t);return t.info(`[Managed Identity] Environment variables validation passed for ${Ri.SERVICE_FABRIC} managed identity. Endpoint URI: ${u}. Creating ${Ri.SERVICE_FABRIC} managed identity.`),o.idType!==zi.SYSTEM_ASSIGNED&&t.warning(`[Managed Identity] ${Ri.SERVICE_FABRIC} user assigned managed identity is configured in the cluster, not during runtime. See also: https://learn.microsoft.com/en-us/azure/service-fabric/configure-existing-cluster-enable-managed-identity-token-service.`),new e(t,n,r,i,a,s,c)}createRequest(e,t){let n=new Za(Bi.GET,this.identityEndpoint);return n.headers[Fi.ML_AND_SF_SECRET_HEADER_NAME]=this.identityHeader,n.queryParameters[Ii.API_VERSION]=`2019-07-01-preview`,n.queryParameters[Ii.RESOURCE]=e,t.idType!==zi.SYSTEM_ASSIGNED&&(n.queryParameters[this.getManagedIdentityUserAssignedIdQueryParameterKey(t.idType)]=t.id),n}};let po=`Only client id is supported for user-assigned managed identity in ${Ri.MACHINE_LEARNING}.`;var mo=class e extends qa{constructor(e,t,n,r,i,a,o){super(e,t,n,r,i),this.msiEndpoint=a,this.secret=o}static getEnvironmentVariables(){return[process.env[Li.MSI_ENDPOINT],process.env[Li.MSI_SECRET]]}static tryCreate(t,n,r,i,a){let[o,s]=e.getEnvironmentVariables();if(!o||!s)return t.info(`[Managed Identity] ${Ri.MACHINE_LEARNING} managed identity is unavailable because one or both of the '${Li.MSI_ENDPOINT}' and '${Li.MSI_SECRET}' environment variables are not defined.`),null;let c=e.getValidatedEnvVariableUrlString(Li.MSI_ENDPOINT,o,Ri.MACHINE_LEARNING,t);return t.info(`[Managed Identity] Environment variables validation passed for ${Ri.MACHINE_LEARNING} managed identity. Endpoint URI: ${c}. Creating ${Ri.MACHINE_LEARNING} managed identity.`),new e(t,n,r,i,a,o,s)}createRequest(e,t){let n=new Za(Bi.GET,this.msiEndpoint);if(n.headers[Fi.METADATA_HEADER_NAME]=`true`,n.headers[Fi.ML_AND_SF_SECRET_HEADER_NAME]=this.secret,n.queryParameters[Ii.API_VERSION]=`2017-09-01`,n.queryParameters[Ii.RESOURCE]=e,t.idType===zi.SYSTEM_ASSIGNED)n.queryParameters[Ka.MANAGED_IDENTITY_CLIENT_ID_2017]=process.env[Li.DEFAULT_IDENTITY_CLIENT_ID];else if(t.idType===zi.USER_ASSIGNED_CLIENT_ID)n.queryParameters[this.getManagedIdentityUserAssignedIdQueryParameterKey(t.idType,!1,!0)]=t.id;else throw Error(po);return n}},ho=class e{constructor(e,t,n,r,i){this.logger=e,this.nodeStorage=t,this.networkClient=n,this.cryptoProvider=r,this.disableInternalRetries=i}async sendManagedIdentityTokenRequest(t,n,r,i){return e.identitySource||=this.selectManagedIdentitySource(this.logger,this.nodeStorage,this.networkClient,this.cryptoProvider,this.disableInternalRetries,n),e.identitySource.acquireTokenWithManagedIdentity(t,n,r,i)}allEnvironmentVariablesAreDefined(e){return Object.values(e).every(e=>e!==void 0)}getManagedIdentitySource(){return e.sourceName=this.allEnvironmentVariablesAreDefined(fo.getEnvironmentVariables())?Ri.SERVICE_FABRIC:this.allEnvironmentVariablesAreDefined(Qa.getEnvironmentVariables())?Ri.APP_SERVICE:this.allEnvironmentVariablesAreDefined(mo.getEnvironmentVariables())?Ri.MACHINE_LEARNING:this.allEnvironmentVariablesAreDefined(io.getEnvironmentVariables())?Ri.CLOUD_SHELL:this.allEnvironmentVariablesAreDefined(ro.getEnvironmentVariables())?Ri.AZURE_ARC:Ri.DEFAULT_TO_IMDS,e.sourceName}selectManagedIdentitySource(e,t,n,r,i,a){let o=fo.tryCreate(e,t,n,r,i,a)||Qa.tryCreate(e,t,n,r,i)||mo.tryCreate(e,t,n,r,i)||io.tryCreate(e,t,n,r,i,a)||ro.tryCreate(e,t,n,r,i,a)||uo.tryCreate(e,t,n,r,i);if(!o)throw pa(oa);return o}};let go=[Ri.SERVICE_FABRIC];var _o=class e{constructor(t){this.config=Ca(t||{}),this.logger=new qe(this.config.system.loggerOptions,Xi,Zi);let n={canonicalAuthority:u.DEFAULT_AUTHORITY};e.nodeStorage||=new ja(this.logger,this.config.managedIdentityId.id,Ke,n),this.networkClient=this.config.system.networkClient,this.cryptoProvider=new Oa;let r={protocolMode:Nt.AAD,knownAuthorities:[Pi],cloudDiscoveryMetadata:``,authorityMetadata:``};this.fakeAuthority=new Ur(Pi,this.networkClient,e.nodeStorage,r,this.logger,this.cryptoProvider.createNewGuid(),void 0,!0),this.fakeClientCredentialClient=new Va({authOptions:{clientId:this.config.managedIdentityId.id,authority:this.fakeAuthority}}),this.managedIdentityClient=new ho(this.logger,e.nodeStorage,this.networkClient,this.cryptoProvider,this.config.disableInternalRetries),this.hashUtils=new Ea}async acquireToken(t){if(!t.resource)throw Ct(tt);let n={forceRefresh:t.forceRefresh,resource:t.resource.replace(`/.default`,``),scopes:[t.resource.replace(`/.default`,``)],authority:this.fakeAuthority.canonicalAuthority,correlationId:this.cryptoProvider.createNewGuid(),claims:t.claims,clientCapabilities:this.config.clientCapabilities};if(n.forceRefresh)return this.acquireTokenFromManagedIdentity(n,this.config.managedIdentityId,this.fakeAuthority);let[r,i]=await this.fakeClientCredentialClient.getCachedAuthenticationResult(n,this.config,this.cryptoProvider,this.fakeAuthority,e.nodeStorage);if(n.claims){let e=this.managedIdentityClient.getManagedIdentitySource();return r&&go.includes(e)&&(n.revokedTokenSha256Hash=this.hashUtils.sha256(r.accessToken).toString(L.HEX)),this.acquireTokenFromManagedIdentity(n,this.config.managedIdentityId,this.fakeAuthority)}return r?(i===I.PROACTIVELY_REFRESHED&&(this.logger.info(`ClientCredentialClient:getCachedAuthenticationResult - Cached access token's refreshOn property has been exceeded'. It's not expired, but must be refreshed.`),await this.acquireTokenFromManagedIdentity(n,this.config.managedIdentityId,this.fakeAuthority,!0)),r):this.acquireTokenFromManagedIdentity(n,this.config.managedIdentityId,this.fakeAuthority)}async acquireTokenFromManagedIdentity(e,t,n,r){return this.managedIdentityClient.sendManagedIdentityTokenRequest(e,t,n,r)}getManagedIdentitySource(){return ho.sourceName||this.managedIdentityClient.getManagedIdentitySource()}},vo=class{constructor(e,t){this.client=e,this.partitionManager=t}async beforeCacheAccess(e){let t=await this.partitionManager.getKey(),n=await this.client.get(t);e.tokenCache.deserialize(n)}async afterCacheAccess(e){if(e.cacheHasChanged){let t=e.tokenCache.getKVStore(),n=Object.values(t).filter(e=>Pt.isAccountEntity(e)),r;if(n.length>0){let e=n[0];r=await this.partitionManager.extractKey(e)}else r=await this.partitionManager.getKey();await this.client.set(r,e.tokenCache.serialize())}}};e.AuthError=H,e.AuthErrorCodes=B,e.AuthErrorMessage=te,e.AzureCloudInstance=Xe,e.ClientApplication=La,e.ClientAssertion=Pa,e.ClientAuthError=Ge,e.ClientAuthErrorCodes=Ue,e.ClientAuthErrorMessage=We,e.ClientConfigurationError=St,e.ClientConfigurationErrorCodes=yt,e.ClientConfigurationErrorMessage=xt,e.ClientCredentialClient=Va,e.ConfidentialClientApplication=Ua,e.CryptoProvider=Oa,e.DeviceCodeClient=za,e.DistributedCachePlugin=vo,e.InteractionRequiredAuthError=fi,e.InteractionRequiredAuthErrorCodes=si,e.InteractionRequiredAuthErrorMessage=di,e.Logger=qe,e.ManagedIdentityApplication=_o,e.ManagedIdentitySourceNames=Ri,e.OnBehalfOfClient=Ha,e.PromptValue=_,e.ProtocolMode=Nt,e.PublicClientApplication=Ba,e.ResponseMode=b,e.ServerError=Jr,e.TokenCache=Na,e.TokenCacheContext=vi,e.UsernamePasswordClient=Fa,e.internals=Ni,e.version=Zi})),du=b((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.msalCommon=void 0,e.msalCommon=(yi(),w(Fr)).__importStar(uu())})),fu=b((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.defaultLoggerCallback=void 0,e.ensureValidMsalToken=c,e.getAuthorityHost=l,e.getAuthority=u,e.getKnownAuthorities=d,e.getMSALLogLevel=f,e.randomUUID=p,e.handleMsalError=m,e.publicToMsal=h,e.msalToPublic=g,e.serializeAuthenticationRecord=_,e.deserializeAuthenticationRecord=v;let t=Vs(),n=Hs(),r=Rs(),i=uo(),a=ao(),o=du(),s=(0,n.credentialLogger)(`IdentityUtils`);function c(e,n,r){let i=n=>(s.getToken.info(n),new t.AuthenticationRequiredError({scopes:Array.isArray(e)?e:[e],getTokenOptions:r,message:n}));if(!n)throw i(`No response`);if(!n.expiresOn)throw i(`Response had no "expiresOn" property.`);if(!n.accessToken)throw i(`Response had no "accessToken" property.`)}function l(e){let t=e?.authorityHost;return!t&&i.isNodeLike&&(t=process.env.AZURE_AUTHORITY_HOST),t??r.DefaultAuthorityHost}function u(e,t){return t||=r.DefaultAuthorityHost,RegExp(`${e}/?$`).test(t)?t:t.endsWith(`/`)?t+e:`${t}/${e}`}function d(e,t,n){return e===`adfs`&&t||n?[t]:[]}e.defaultLoggerCallback=(e,t=i.isNode?`Node`:`Browser`)=>(n,r,i)=>{if(!i)switch(n){case o.msalCommon.LogLevel.Error:e.info(`MSAL ${t} V2 error: ${r}`);return;case o.msalCommon.LogLevel.Info:e.info(`MSAL ${t} V2 info message: ${r}`);return;case o.msalCommon.LogLevel.Verbose:e.info(`MSAL ${t} V2 verbose message: ${r}`);return;case o.msalCommon.LogLevel.Warning:e.info(`MSAL ${t} V2 warning: ${r}`);return}};function f(e){switch(e){case`error`:return o.msalCommon.LogLevel.Error;case`info`:return o.msalCommon.LogLevel.Info;case`verbose`:return o.msalCommon.LogLevel.Verbose;case`warning`:return o.msalCommon.LogLevel.Warning;default:return o.msalCommon.LogLevel.Info}}function p(){return(0,i.randomUUID)()}function m(e,r,i){if(r.name===`AuthError`||r.name===`ClientAuthError`||r.name===`BrowserAuthError`){let i=r;switch(i.errorCode){case`endpoints_resolution_error`:return s.info((0,n.formatError)(e,r.message)),new t.CredentialUnavailableError(r.message);case`device_code_polling_cancelled`:return new a.AbortError(`The authentication has been aborted by the caller.`);case`consent_required`:case`interaction_required`:case`login_required`:s.info((0,n.formatError)(e,`Authentication returned errorCode ${i.errorCode}`));break;default:s.info((0,n.formatError)(e,`Failed to acquire token: ${r.message}`));break}}return r.name===`ClientConfigurationError`||r.name===`BrowserConfigurationAuthError`||r.name===`AbortError`||r.name===`AuthenticationError`?r:r.name===`NativeAuthError`?(s.info((0,n.formatError)(e,`Error from the native broker: ${r.message} with status code: ${r.statusCode}`)),r):new t.AuthenticationRequiredError({scopes:e,getTokenOptions:i,message:r.message})}function h(e){return{localAccountId:e.homeAccountId,environment:e.authority,username:e.username,homeAccountId:e.homeAccountId,tenantId:e.tenantId}}function g(e,t){return{authority:t.environment??r.DefaultAuthority,homeAccountId:t.homeAccountId,tenantId:t.tenantId||r.DefaultTenantId,username:t.username,clientId:e,version:`1.0`}}function _(e){return JSON.stringify(e)}function v(e){let t=JSON.parse(e);if(t.version&&t.version!==`1.0`)throw Error(`Unsupported AuthenticationRecord version`);return t}})),pu=b((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.getIdentityTokenEndpointSuffix=t;function t(e){return e===`adfs`?`oauth2/token`:`oauth2/v2.0/token`}})),mu=b((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.serviceFabricErrorMessage=void 0,e.mapScopesToResource=n,e.parseExpirationTimestamp=r,e.parseRefreshTimestamp=i;let t=`/.default`;e.serviceFabricErrorMessage="Specifying a `clientId` or `resourceId` is not supported by the Service Fabric managed identity environment. The managed identity configuration is determined by the Service Fabric cluster resource configuration. See https://aka.ms/servicefabricmi for more information";function n(e){let n=``;if(Array.isArray(e)){if(e.length!==1)return;n=e[0]}else typeof e==`string`&&(n=e);return n.endsWith(t)?n.substr(0,n.lastIndexOf(t)):n}function r(e){if(typeof e.expires_on==`number`)return e.expires_on*1e3;if(typeof e.expires_on==`string`){let t=+e.expires_on;if(!isNaN(t))return t*1e3;let n=Date.parse(e.expires_on);if(!isNaN(n))return n}if(typeof e.expires_in==`number`)return Date.now()+e.expires_in*1e3;throw Error(`Failed to parse token expiration from body. expires_in="${e.expires_in}", expires_on="${e.expires_on}"`)}function i(e){if(e.refresh_on){if(typeof e.refresh_on==`number`)return e.refresh_on*1e3;if(typeof e.refresh_on==`string`){let t=+e.refresh_on;if(!isNaN(t))return t*1e3;let n=Date.parse(e.refresh_on);if(!isNaN(n))return n}throw Error(`Failed to parse refresh_on from body. refresh_on="${e.refresh_on}"`)}else return}})),hu=b((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.IdentityClient=void 0,e.getIdentityClientAuthorityHost=d;let t=ts(),n=uo(),r=Ho(),i=Vs(),a=pu(),o=Rs(),s=Us(),c=Hs(),l=mu(),u=`noCorrelationId`;function d(e){let t=e?.authorityHost;return n.isNode&&(t??=process.env.AZURE_AUTHORITY_HOST),t??o.DefaultAuthorityHost}e.IdentityClient=class extends t.ServiceClient{constructor(e){let t=`azsdk-js-identity/${o.SDK_VERSION}`,n=e?.userAgentOptions?.userAgentPrefix?`${e.userAgentOptions.userAgentPrefix} ${t}`:`${t}`,r=d(e);if(!r.startsWith(`https:`))throw Error(`The authorityHost address must use the 'https' protocol.`);super({requestContentType:`application/json; charset=utf-8`,retryOptions:{maxRetries:3},...e,userAgentOptions:{userAgentPrefix:n},baseUri:r}),this.allowInsecureConnection=!1,this.authorityHost=r,this.abortControllers=new Map,this.allowLoggingAccountIdentifiers=e?.loggingOptions?.allowLoggingAccountIdentifiers,this.tokenCredentialOptions={...e},e?.allowInsecureConnection&&(this.allowInsecureConnection=e.allowInsecureConnection)}async sendTokenRequest(e){c.logger.info(`IdentityClient: sending token request to [${e.url}]`);let t=await this.sendRequest(e);if(t.bodyAsText&&(t.status===200||t.status===201)){let n=JSON.parse(t.bodyAsText);if(!n.access_token)return null;this.logIdentifiers(t);let r={accessToken:{token:n.access_token,expiresOnTimestamp:(0,l.parseExpirationTimestamp)(n),refreshAfterTimestamp:(0,l.parseRefreshTimestamp)(n),tokenType:`Bearer`},refreshToken:n.refresh_token};return c.logger.info(`IdentityClient: [${e.url}] token acquired, expires on ${r.accessToken.expiresOnTimestamp}`),r}else{let e=new i.AuthenticationError(t.status,t.bodyAsText);throw c.logger.warning(`IdentityClient: authentication error. HTTP status: ${t.status}, ${e.errorResponse.errorDescription}`),e}}async refreshAccessToken(e,t,n,o,l,u={}){if(o===void 0)return null;c.logger.info(`IdentityClient: refreshing access token with client ID: ${t}, scopes: ${n} started`);let d={grant_type:`refresh_token`,client_id:t,refresh_token:o,scope:n};l!==void 0&&(d.client_secret=l);let f=new URLSearchParams(d);return s.tracingClient.withSpan(`IdentityClient.refreshAccessToken`,u,async n=>{try{let i=(0,a.getIdentityTokenEndpointSuffix)(e),o=(0,r.createPipelineRequest)({url:`${this.authorityHost}/${e}/${i}`,method:`POST`,body:f.toString(),abortSignal:u.abortSignal,headers:(0,r.createHttpHeaders)({Accept:`application/json`,"Content-Type":`application/x-www-form-urlencoded`}),tracingOptions:n.tracingOptions}),s=await this.sendTokenRequest(o);return c.logger.info(`IdentityClient: refreshed token for client ID: ${t}`),s}catch(e){if(e.name===i.AuthenticationErrorName&&e.errorResponse.error===`interaction_required`)return c.logger.info(`IdentityClient: interaction required for client ID: ${t}`),null;throw c.logger.warning(`IdentityClient: failed refreshing token for client ID: ${t}: ${e}`),e}})}generateAbortSignal(e){let t=new AbortController,n=this.abortControllers.get(e)||[];n.push(t),this.abortControllers.set(e,n);let r=t.signal.onabort;return t.signal.onabort=(...n)=>{this.abortControllers.set(e,void 0),r&&r.apply(t.signal,n)},t.signal}abortRequests(e){let t=e||u,n=[...this.abortControllers.get(t)||[],...this.abortControllers.get(u)||[]];if(n.length){for(let e of n)e.abort();this.abortControllers.set(t,void 0)}}getCorrelationId(e){let t=e?.body?.split(`&`).map(e=>e.split(`=`)).find(([e])=>e===`client-request-id`);return t&&t.length&&t[1]||u}async sendGetRequestAsync(e,t){let n=(0,r.createPipelineRequest)({url:e,method:`GET`,body:t?.body,allowInsecureConnection:this.allowInsecureConnection,headers:(0,r.createHttpHeaders)(t?.headers),abortSignal:this.generateAbortSignal(u)}),i=await this.sendRequest(n);return this.logIdentifiers(i),{body:i.bodyAsText?JSON.parse(i.bodyAsText):void 0,headers:i.headers.toJSON(),status:i.status}}async sendPostRequestAsync(e,t){let n=(0,r.createPipelineRequest)({url:e,method:`POST`,body:t?.body,headers:(0,r.createHttpHeaders)(t?.headers),allowInsecureConnection:this.allowInsecureConnection,abortSignal:this.generateAbortSignal(this.getCorrelationId(t))}),i=await this.sendRequest(n);return this.logIdentifiers(i),{body:i.bodyAsText?JSON.parse(i.bodyAsText):void 0,headers:i.headers.toJSON(),status:i.status}}getTokenCredentialOptions(){return this.tokenCredentialOptions}logIdentifiers(e){if(!(!this.allowLoggingAccountIdentifiers||!e.bodyAsText))try{let t=(e.parsedBody||JSON.parse(e.bodyAsText)).access_token;if(!t)return;let n=t.split(`.`)[1],{appid:r,upn:i,tid:a,oid:o}=JSON.parse(Buffer.from(n,`base64`).toString(`utf8`));c.logger.info(`[Authenticated account] Client ID: ${r}. Tenant ID: ${a}. User Principal Name: ${i||`No User Principal Name available`}. Object ID (user): ${o}`)}catch(e){c.logger.warning(`allowLoggingAccountIdentifiers was set, but we couldn't log the account information. Error:`,e.message)}}}})),gu=b((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.RegionalAuthority=void 0,e.calculateRegionalAuthority=n;var t;(function(e){e.AutoDiscoverRegion=`AutoDiscoverRegion`,e.USWest=`westus`,e.USWest2=`westus2`,e.USCentral=`centralus`,e.USEast=`eastus`,e.USEast2=`eastus2`,e.USNorthCentral=`northcentralus`,e.USSouthCentral=`southcentralus`,e.USWestCentral=`westcentralus`,e.CanadaCentral=`canadacentral`,e.CanadaEast=`canadaeast`,e.BrazilSouth=`brazilsouth`,e.EuropeNorth=`northeurope`,e.EuropeWest=`westeurope`,e.UKSouth=`uksouth`,e.UKWest=`ukwest`,e.FranceCentral=`francecentral`,e.FranceSouth=`francesouth`,e.SwitzerlandNorth=`switzerlandnorth`,e.SwitzerlandWest=`switzerlandwest`,e.GermanyNorth=`germanynorth`,e.GermanyWestCentral=`germanywestcentral`,e.NorwayWest=`norwaywest`,e.NorwayEast=`norwayeast`,e.AsiaEast=`eastasia`,e.AsiaSouthEast=`southeastasia`,e.JapanEast=`japaneast`,e.JapanWest=`japanwest`,e.AustraliaEast=`australiaeast`,e.AustraliaSouthEast=`australiasoutheast`,e.AustraliaCentral=`australiacentral`,e.AustraliaCentral2=`australiacentral2`,e.IndiaCentral=`centralindia`,e.IndiaSouth=`southindia`,e.IndiaWest=`westindia`,e.KoreaSouth=`koreasouth`,e.KoreaCentral=`koreacentral`,e.UAECentral=`uaecentral`,e.UAENorth=`uaenorth`,e.SouthAfricaNorth=`southafricanorth`,e.SouthAfricaWest=`southafricawest`,e.ChinaNorth=`chinanorth`,e.ChinaEast=`chinaeast`,e.ChinaNorth2=`chinanorth2`,e.ChinaEast2=`chinaeast2`,e.GermanyCentral=`germanycentral`,e.GermanyNorthEast=`germanynortheast`,e.GovernmentUSVirginia=`usgovvirginia`,e.GovernmentUSIowa=`usgoviowa`,e.GovernmentUSArizona=`usgovarizona`,e.GovernmentUSTexas=`usgovtexas`,e.GovernmentUSDodEast=`usdodeast`,e.GovernmentUSDodCentral=`usdodcentral`})(t||(e.RegionalAuthority=t={}));function n(e){let n=e;return n===void 0&&globalThis.process?.env?.AZURE_REGIONAL_AUTHORITY_NAME!==void 0&&(n=process.env.AZURE_REGIONAL_AUTHORITY_NAME),n===t.AutoDiscoverRegion?`AUTO_DISCOVER`:n}})),_u=b((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.processMultiTenantRequest=r;let t=Vs();function n(e){return`The current credential is not configured to acquire tokens for tenant ${e}. To enable acquiring tokens for this tenant add it to the AdditionallyAllowedTenants on the credential options, or add "*" to AdditionallyAllowedTenants to allow acquiring tokens for any tenant.`}function r(e,r,i=[],a){let o;if(o=process.env.AZURE_IDENTITY_DISABLE_MULTITENANTAUTH||e===`adfs`?e:r?.tenantId??e,e&&o!==e&&!i.includes(`*`)&&!i.some(e=>e.localeCompare(o)===0)){let e=n(o);throw a?.info(e),new t.CredentialUnavailableError(e)}return o}})),vu=b((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.processMultiTenantRequest=void 0,e.checkTenantId=i,e.resolveTenantId=a,e.resolveAdditionallyAllowedTenantIds=o;let t=Rs(),n=Hs();var r=_u();Object.defineProperty(e,`processMultiTenantRequest`,{enumerable:!0,get:function(){return r.processMultiTenantRequest}});function i(e,t){if(!t.match(/^[0-9a-zA-Z-.]+$/)){let t=Error(`Invalid tenant id provided. You can locate your tenant id by following the instructions listed here: https://learn.microsoft.com/partner-center/find-ids-and-domain-names.`);throw e.info((0,n.formatError)(``,t)),t}}function a(e,n,r){return n?(i(e,n),n):(r||=t.DeveloperSignOnClientId,r===t.DeveloperSignOnClientId?`organizations`:`common`)}function o(e){return!e||e.length===0?[]:e.includes(`*`)?t.ALL_TENANTS:e}}));function yu(){try{return f.statSync(`/.dockerenv`),!0}catch{return!1}}function bu(){try{return f.readFileSync(`/proc/self/cgroup`,`utf8`).includes(`docker`)}catch{return!1}}function xu(){return Su===void 0&&(Su=yu()||bu()),Su}var Su,Cu=y((()=>{}));function wu(){return Tu===void 0&&(Tu=Eu()||xu()),Tu}var Tu,Eu,Du=y((()=>{Cu(),Eu=()=>{try{return f.statSync(`/run/.containerenv`),!0}catch{return!1}}})),Ou,ku,Au=y((()=>{Du(),Ou=()=>{if(i.platform!==`linux`)return!1;if(r.release().toLowerCase().includes(`microsoft`))return!wu();try{return f.readFileSync(`/proc/version`,`utf8`).toLowerCase().includes(`microsoft`)?!wu():!1}catch{return!1}},ku=i.env.__IS_WSL_TEST__?Ou:Ou()})),ju,Mu,Nu,Pu=y((()=>{Au(),ju=(()=>{let e=`/mnt/`,t;return async function(){if(t)return t;let n=`/etc/wsl.conf`,r=!1;try{await u.access(n,d.F_OK),r=!0}catch{}if(!r)return e;let i=await u.readFile(n,{encoding:`utf8`}),a=/(?.*)/g.exec(i);return a?(t=a.groups.mountPoint.trim(),t=t.endsWith(`/`)?t:`${t}/`,t):e}})(),Mu=async()=>`${await ju()}c/Windows/System32/WindowsPowerShell/v1.0/powershell.exe`,Nu=async()=>ku?Mu():`${i.env.SYSTEMROOT||i.env.windir||String.raw`C:\Windows`}\\System32\\WindowsPowerShell\\v1.0\\powershell.exe`}));function Fu(e,t,n){let r=n=>Object.defineProperty(e,t,{value:n,enumerable:!0,writable:!0});return Object.defineProperty(e,t,{configurable:!0,enumerable:!0,get(){let e=n();return r(e),e},set(e){r(e)}}),e}var Iu=y((()=>{}));async function Lu(){if(i.platform!==`darwin`)throw Error(`macOS only`);let{stdout:e}=await Ru(`defaults`,[`read`,`com.apple.LaunchServices/com.apple.launchservices.secure`,`LSHandlers`]),t=/LSHandlerRoleAll = "(?!-)(?[^"]+?)";\s+?LSHandlerURLScheme = (?:http|https);/.exec(e)?.groups.id??`com.apple.Safari`;return t===`com.apple.safari`?`com.apple.Safari`:t}var Ru,zu=y((()=>{Ru=n(l)}));async function Bu(e,{humanReadableOutput:t=!0,signal:n}={}){if(i.platform!==`darwin`)throw Error(`macOS only`);let r=t?[]:[`-ss`],a={};n&&(a.signal=n);let{stdout:o}=await Vu(`osascript`,[`-e`,e,r],a);return o.trim()}var Vu,Hu=y((()=>{Vu=n(l)}));async function Uu(e){return Bu(`tell application "Finder" to set app_path to application file id "${e}" as string\ntell application "System Events" to get value of property list item "CFBundleName" of property list file (app_path & ":Contents:Info.plist")`)}var Wu=y((()=>{Hu()}));async function Gu(e=Ku){let{stdout:t}=await e(`reg`,[`QUERY`,` HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\Shell\\Associations\\UrlAssociations\\http\\UserChoice`,`/v`,`ProgId`]),n=/ProgId\s*REG_SZ\s*(?\S+)/.exec(t);if(!n)throw new Ju(`Cannot find Windows browser in stdout: ${JSON.stringify(t)}`);let{id:r}=n.groups,i=qu[r];if(!i)throw new Ju(`Unknown browser ID: ${r}`);return i}var Ku,qu,Ju,Yu=y((()=>{Ku=n(l),qu={MSEdgeHTM:{name:`Edge`,id:`com.microsoft.edge`},MSEdgeBHTML:{name:`Edge Beta`,id:`com.microsoft.edge.beta`},MSEdgeDHTML:{name:`Edge Dev`,id:`com.microsoft.edge.dev`},AppXq0fevzme2pys62n3e0fbqa7peapykr8v:{name:`Edge`,id:`com.microsoft.edge.old`},ChromeHTML:{name:`Chrome`,id:`com.google.chrome`},ChromeBHTML:{name:`Chrome Beta`,id:`com.google.chrome.beta`},ChromeDHTML:{name:`Chrome Dev`,id:`com.google.chrome.dev`},ChromiumHTM:{name:`Chromium`,id:`org.chromium.Chromium`},BraveHTML:{name:`Brave`,id:`com.brave.Browser`},BraveBHTML:{name:`Brave Beta`,id:`com.brave.Browser.beta`},BraveDHTML:{name:`Brave Dev`,id:`com.brave.Browser.dev`},BraveSSHTM:{name:`Brave Nightly`,id:`com.brave.Browser.nightly`},FirefoxURL:{name:`Firefox`,id:`org.mozilla.firefox`},OperaStable:{name:`Opera`,id:`com.operasoftware.Opera`},VivaldiHTM:{name:`Vivaldi`,id:`com.vivaldi.Vivaldi`},"IE.HTTP":{name:`Internet Explorer`,id:`com.microsoft.ie`}},new Map(Object.entries(qu)),Ju=class extends Error{}}));async function Xu(){if(i.platform===`darwin`){let e=await Lu();return{name:await Uu(e),id:e}}if(i.platform===`linux`){let{stdout:e}=await Zu(`xdg-mime`,[`query`,`default`,`x-scheme-handler/http`]),t=e.trim();return{name:Qu(t.replace(/.desktop$/,``).replace(`-`,` `)),id:t}}if(i.platform===`win32`)return Gu();throw Error(`Only macOS, Linux, and Windows are supported`)}var Zu,Qu,$u=y((()=>{zu(),Wu(),Yu(),Zu=n(l),Qu=e=>e.toLowerCase().replaceAll(/(?:^|\s|-)\S/g,e=>e.toUpperCase())})),ed=x({apps:()=>pd,default:()=>md,openApp:()=>fd});async function td(){let e=await Nu(),t=String.raw`(Get-ItemProperty -Path "HKCU:\Software\Microsoft\Windows\Shell\Associations\UrlAssociations\http\UserChoice").ProgId`,{stdout:n}=await id(e,[`-NoProfile`,`-NonInteractive`,`-ExecutionPolicy`,`Bypass`,`-EncodedCommand`,a.from(t,`utf16le`).toString(`base64`)],{encoding:`utf8`}),r=n.trim(),i={ChromeHTML:`com.google.chrome`,BraveHTML:`com.brave.Browser`,MSEdgeHTM:`com.microsoft.edge`,FirefoxURL:`org.mozilla.firefox`};return i[r]?{id:i[r]}:{}}function nd(e){if(typeof e==`string`||Array.isArray(e))return e;let{[cd]:t}=e;if(!t)throw Error(`${cd} is not supported`);return t}function rd({[sd]:e},{wsl:t}){if(t&&ku)return nd(t);if(!e)throw Error(`${sd} is not supported`);return nd(e)}var id,ad,od,sd,cd,ld,ud,dd,fd,pd,md,hd=y((()=>{Pu(),Iu(),$u(),Du(),id=n(c.execFile),ad=o.dirname(s(import.meta.url)),od=o.join(ad,`xdg-open`),{platform:sd,arch:cd}=i,ld=async(e,t)=>{let n;for(let r of e)try{return await t(r)}catch(e){n=e}throw n},ud=async e=>{if(e={wait:!1,background:!1,newInstance:!1,allowNonzeroExitCode:!1,...e},Array.isArray(e.app))return ld(e.app,t=>ud({...e,app:t}));let{name:t,arguments:n=[]}=e.app??{};if(n=[...n],Array.isArray(t))return ld(t,t=>ud({...e,app:{name:t,arguments:n}}));if(t===`browser`||t===`browserPrivate`){let r={"com.google.chrome":`chrome`,"google-chrome.desktop":`chrome`,"com.brave.Browser":`brave`,"org.mozilla.firefox":`firefox`,"firefox.desktop":`firefox`,"com.microsoft.msedge":`edge`,"com.microsoft.edge":`edge`,"com.microsoft.edgemac":`edge`,"microsoft-edge.desktop":`edge`},i={chrome:`--incognito`,brave:`--incognito`,firefox:`--private-window`,edge:`--inPrivate`},a=ku?await td():await Xu();if(a.id in r){let o=r[a.id];return t===`browserPrivate`&&n.push(i[o]),ud({...e,app:{name:pd[o],arguments:n}})}throw Error(`${a.name} is not supported as a default browser`)}let r,o=[],s={};if(sd===`darwin`)r=`open`,e.wait&&o.push(`--wait-apps`),e.background&&o.push(`--background`),e.newInstance&&o.push(`--new`),t&&o.push(`-a`,t);else if(sd===`win32`||ku&&!wu()&&!t){r=await Nu(),o.push(`-NoProfile`,`-NonInteractive`,`-ExecutionPolicy`,`Bypass`,`-EncodedCommand`),ku||(s.windowsVerbatimArguments=!0);let i=[`Start`];e.wait&&i.push(`-Wait`),t?(i.push(`"\`"${t}\`""`),e.target&&n.push(e.target)):e.target&&i.push(`"${e.target}"`),n.length>0&&(n=n.map(e=>`"\`"${e}\`""`),i.push(`-ArgumentList`,n.join(`,`))),e.target=a.from(i.join(` `),`utf16le`).toString(`base64`)}else{if(t)r=t;else{let e=!ad||ad===`/`,t=!1;try{await u.access(od,d.X_OK),t=!0}catch{}r=i.versions.electron??(sd===`android`||e||!t)?`xdg-open`:od}n.length>0&&o.push(...n),e.wait||(s.stdio=`ignore`,s.detached=!0)}sd===`darwin`&&n.length>0&&o.push(`--args`,...n),e.target&&o.push(e.target);let l=c.spawn(r,o,s);return e.wait?new Promise((t,n)=>{l.once(`error`,n),l.once(`close`,r=>{if(!e.allowNonzeroExitCode&&r>0){n(Error(`Exited with code ${r}`));return}t(l)})}):(l.unref(),l)},dd=(e,t)=>{if(typeof e!=`string`)throw TypeError("Expected a `target`");return ud({...t,target:e})},fd=(e,t)=>{if(typeof e!=`string`&&!Array.isArray(e))throw TypeError("Expected a valid `name`");let{arguments:n=[]}=t??{};if(n!=null&&!Array.isArray(n))throw TypeError("Expected `appArguments` as Array type");return ud({...t,app:{name:e,arguments:n}})},pd={},Fu(pd,`chrome`,()=>rd({darwin:`google chrome`,win32:`chrome`,linux:[`google-chrome`,`google-chrome-stable`,`chromium`]},{wsl:{ia32:`/mnt/c/Program Files (x86)/Google/Chrome/Application/chrome.exe`,x64:[`/mnt/c/Program Files/Google/Chrome/Application/chrome.exe`,`/mnt/c/Program Files (x86)/Google/Chrome/Application/chrome.exe`]}})),Fu(pd,`brave`,()=>rd({darwin:`brave browser`,win32:`brave`,linux:[`brave-browser`,`brave`]},{wsl:{ia32:`/mnt/c/Program Files (x86)/BraveSoftware/Brave-Browser/Application/brave.exe`,x64:[`/mnt/c/Program Files/BraveSoftware/Brave-Browser/Application/brave.exe`,`/mnt/c/Program Files (x86)/BraveSoftware/Brave-Browser/Application/brave.exe`]}})),Fu(pd,`firefox`,()=>rd({darwin:`firefox`,win32:String.raw`C:\Program Files\Mozilla Firefox\firefox.exe`,linux:`firefox`},{wsl:`/mnt/c/Program Files/Mozilla Firefox/firefox.exe`})),Fu(pd,`edge`,()=>rd({darwin:`microsoft edge`,win32:`msedge`,linux:[`microsoft-edge`,`microsoft-edge-dev`]},{wsl:`/mnt/c/Program Files (x86)/Microsoft/Edge/Application/msedge.exe`})),Fu(pd,`browser`,()=>`browser`),Fu(pd,`browserPrivate`,()=>`browserPrivate`),md=dd})),gd=b((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.generateMsalConfiguration=d,e.createMsalClient=f;let t=(yi(),w(Fr)).__importStar(uu()),n=Hs(),r=zs(),i=fu(),a=Vs(),o=hu(),s=gu(),c=Ua(),l=vu(),u=(0,n.credentialLogger)(`MsalClient`);function d(e,t,n={}){let r=(0,l.resolveTenantId)(n.logger??u,t,e),a=(0,i.getAuthority)(r,(0,i.getAuthorityHost)(n)),s=new o.IdentityClient({...n.tokenCredentialOptions,authorityHost:a,loggingOptions:n.loggingOptions});return{auth:{clientId:e,authority:a,knownAuthorities:(0,i.getKnownAuthorities)(r,a,n.disableInstanceDiscovery)},system:{networkClient:s,loggerOptions:{loggerCallback:(0,i.defaultLoggerCallback)(n.logger??u),logLevel:(0,i.getMSALLogLevel)((0,c.getLogLevel)()),piiLoggingEnabled:n.loggingOptions?.enableUnsafeSupportLogging}}}}function f(e,o,c={}){let l={msalConfig:d(e,o,c),cachedAccount:c.authenticationRecord?(0,i.publicToMsal)(c.authenticationRecord):null,pluginConfiguration:r.msalPlugins.generatePluginConfiguration(c),logger:c.logger??u},f=new Map;async function p(e={}){let n=e.enableCae?`CAE`:`default`,r=f.get(n);if(r)return l.logger.getToken.info(`Existing PublicClientApplication found in cache, returning it.`),r;l.logger.getToken.info(`Creating new PublicClientApplication with CAE ${e.enableCae?`enabled`:`disabled`}.`);let i=e.enableCae?l.pluginConfiguration.cache.cachePluginCae:l.pluginConfiguration.cache.cachePlugin;return l.msalConfig.auth.clientCapabilities=e.enableCae?[`cp1`]:void 0,r=new t.PublicClientApplication({...l.msalConfig,broker:{nativeBrokerPlugin:l.pluginConfiguration.broker.nativeBrokerPlugin},cache:{cachePlugin:await i}}),f.set(n,r),r}let m=new Map;async function h(e={}){let n=e.enableCae?`CAE`:`default`,r=m.get(n);if(r)return l.logger.getToken.info(`Existing ConfidentialClientApplication found in cache, returning it.`),r;l.logger.getToken.info(`Creating new ConfidentialClientApplication with CAE ${e.enableCae?`enabled`:`disabled`}.`);let i=e.enableCae?l.pluginConfiguration.cache.cachePluginCae:l.pluginConfiguration.cache.cachePlugin;return l.msalConfig.auth.clientCapabilities=e.enableCae?[`cp1`]:void 0,r=new t.ConfidentialClientApplication({...l.msalConfig,broker:{nativeBrokerPlugin:l.pluginConfiguration.broker.nativeBrokerPlugin},cache:{cachePlugin:await i}}),m.set(n,r),r}async function g(e,t,n={}){if(l.cachedAccount===null)throw l.logger.getToken.info(`No cached account found in local state.`),new a.AuthenticationRequiredError({scopes:t});n.claims&&(l.cachedClaims=n.claims);let r={account:l.cachedAccount,scopes:t,claims:l.cachedClaims};l.pluginConfiguration.broker.isEnabled&&(r.tokenQueryParameters||={},l.pluginConfiguration.broker.enableMsaPassthrough&&(r.tokenQueryParameters.msal_request_type=`consumer_passthrough`)),n.proofOfPossessionOptions&&(r.shrNonce=n.proofOfPossessionOptions.nonce,r.authenticationScheme=`pop`,r.resourceRequestMethod=n.proofOfPossessionOptions.resourceRequestMethod,r.resourceRequestUri=n.proofOfPossessionOptions.resourceRequestUrl),l.logger.getToken.info(`Attempting to acquire token silently`);try{return await e.acquireTokenSilent(r)}catch(e){throw(0,i.handleMsalError)(t,e,n)}}function _(e){return e?.tenantId?(0,i.getAuthority)(e.tenantId,(0,i.getAuthorityHost)(c)):l.msalConfig.auth.authority}async function v(e,t,r,o){let s=null;try{s=await g(e,t,r)}catch(e){if(e.name!==`AuthenticationRequiredError`)throw e;if(r.disableAutomaticAuthentication)throw new a.AuthenticationRequiredError({scopes:t,getTokenOptions:r,message:`Automatic authentication has been disabled. You may call the authentication() method.`})}if(s===null)try{s=await o()}catch(e){throw(0,i.handleMsalError)(t,e,r)}return(0,i.ensureValidMsalToken)(t,s,r),l.cachedAccount=s?.account??null,l.logger.getToken.info((0,n.formatSuccess)(t)),{token:s.accessToken,expiresOnTimestamp:s.expiresOn.getTime(),refreshAfterTimestamp:s.refreshOn?.getTime(),tokenType:s.tokenType}}async function y(e,t,r={}){l.logger.getToken.info(`Attempting to acquire token using client secret`),l.msalConfig.auth.clientSecret=t;let a=await h(r);try{let t=await a.acquireTokenByClientCredential({scopes:e,authority:_(r),azureRegion:(0,s.calculateRegionalAuthority)(),claims:r?.claims});return(0,i.ensureValidMsalToken)(e,t,r),l.logger.getToken.info((0,n.formatSuccess)(e)),{token:t.accessToken,expiresOnTimestamp:t.expiresOn.getTime(),refreshAfterTimestamp:t.refreshOn?.getTime(),tokenType:t.tokenType}}catch(t){throw(0,i.handleMsalError)(e,t,r)}}async function b(e,t,r={}){l.logger.getToken.info(`Attempting to acquire token using client assertion`),l.msalConfig.auth.clientAssertion=t;let a=await h(r);try{let o=await a.acquireTokenByClientCredential({scopes:e,authority:_(r),azureRegion:(0,s.calculateRegionalAuthority)(),claims:r?.claims,clientAssertion:t});return(0,i.ensureValidMsalToken)(e,o,r),l.logger.getToken.info((0,n.formatSuccess)(e)),{token:o.accessToken,expiresOnTimestamp:o.expiresOn.getTime(),refreshAfterTimestamp:o.refreshOn?.getTime(),tokenType:o.tokenType}}catch(t){throw(0,i.handleMsalError)(e,t,r)}}async function x(e,t,r={}){l.logger.getToken.info(`Attempting to acquire token using client certificate`),l.msalConfig.auth.clientCertificate=t;let a=await h(r);try{let t=await a.acquireTokenByClientCredential({scopes:e,authority:_(r),azureRegion:(0,s.calculateRegionalAuthority)(),claims:r?.claims});return(0,i.ensureValidMsalToken)(e,t,r),l.logger.getToken.info((0,n.formatSuccess)(e)),{token:t.accessToken,expiresOnTimestamp:t.expiresOn.getTime(),refreshAfterTimestamp:t.refreshOn?.getTime(),tokenType:t.tokenType}}catch(t){throw(0,i.handleMsalError)(e,t,r)}}async function S(e,t,n={}){l.logger.getToken.info(`Attempting to acquire token using device code`);let r=await p(n);return v(r,e,n,()=>{let i={scopes:e,cancel:n?.abortSignal?.aborted??!1,deviceCodeCallback:t,authority:_(n),claims:n?.claims},a=r.acquireTokenByDeviceCode(i);return n.abortSignal&&n.abortSignal.addEventListener(`abort`,()=>{i.cancel=!0}),a})}async function C(e,t,n,r={}){l.logger.getToken.info(`Attempting to acquire token using username and password`);let i=await p(r);return v(i,e,r,()=>{let a={scopes:e,username:t,password:n,authority:_(r),claims:r?.claims};return i.acquireTokenByUsernamePassword(a)})}function w(){if(l.cachedAccount)return(0,i.msalToPublic)(e,l.cachedAccount)}async function T(e,t,n,r,i={}){l.logger.getToken.info(`Attempting to acquire token using authorization code`);let a;return r?(l.msalConfig.auth.clientSecret=r,a=await h(i)):a=await p(i),v(a,e,i,()=>a.acquireTokenByCode({scopes:e,redirectUri:t,code:n,authority:_(i),claims:i?.claims}))}async function E(e,t,r,a={}){u.getToken.info(`Attempting to acquire token on behalf of another user`),typeof r==`string`?(u.getToken.info(`Using client secret for on behalf of flow`),l.msalConfig.auth.clientSecret=r):typeof r==`function`?(u.getToken.info(`Using client assertion callback for on behalf of flow`),l.msalConfig.auth.clientAssertion=r):(u.getToken.info(`Using client certificate for on behalf of flow`),l.msalConfig.auth.clientCertificate=r);let o=await h(a);try{let r=await o.acquireTokenOnBehalfOf({scopes:e,authority:_(a),claims:a.claims,oboAssertion:t});return(0,i.ensureValidMsalToken)(e,r,a),u.getToken.info((0,n.formatSuccess)(e)),{token:r.accessToken,expiresOnTimestamp:r.expiresOn.getTime(),refreshAfterTimestamp:r.refreshOn?.getTime(),tokenType:r.tokenType}}catch(t){throw(0,i.handleMsalError)(e,t,a)}}function D(e,t){return{openBrowser:async e=>{await(await Promise.resolve().then(()=>(hd(),ed))).default(e,{newInstance:!0})},scopes:e,authority:_(t),claims:t?.claims,loginHint:t?.loginHint,errorTemplate:t?.browserCustomizationOptions?.errorMessage,successTemplate:t?.browserCustomizationOptions?.successMessage,prompt:t?.loginHint?`login`:`select_account`}}async function O(e,t,n={}){u.verbose(`Authentication will resume through the broker`);let r=await p(n),i=D(e,n);l.pluginConfiguration.broker.parentWindowHandle?i.windowHandle=Buffer.from(l.pluginConfiguration.broker.parentWindowHandle):u.warning(`Parent window handle is not specified for the broker. This may cause unexpected behavior. Please provide the parentWindowHandle.`),l.pluginConfiguration.broker.enableMsaPassthrough&&((i.tokenQueryParameters??={}).msal_request_type=`consumer_passthrough`),t?(i.prompt=`none`,u.verbose(`Attempting broker authentication using the default broker account`)):u.verbose(`Attempting broker authentication without the default broker account`),n.proofOfPossessionOptions&&(i.shrNonce=n.proofOfPossessionOptions.nonce,i.authenticationScheme=`pop`,i.resourceRequestMethod=n.proofOfPossessionOptions.resourceRequestMethod,i.resourceRequestUri=n.proofOfPossessionOptions.resourceRequestUrl);try{return await r.acquireTokenInteractive(i)}catch(r){if(u.verbose(`Failed to authenticate through the broker: ${r.message}`),n.disableAutomaticAuthentication)throw new a.AuthenticationRequiredError({scopes:e,getTokenOptions:n,message:`Cannot silently authenticate with default broker account.`});if(t)return O(e,!1,n);throw r}}async function k(e,t,r={}){u.getToken.info(`Attempting to acquire token using brokered authentication with useDefaultBrokerAccount: ${t}`);let a=await O(e,t,r);return(0,i.ensureValidMsalToken)(e,a,r),l.cachedAccount=a?.account??null,l.logger.getToken.info((0,n.formatSuccess)(e)),{token:a.accessToken,expiresOnTimestamp:a.expiresOn.getTime(),refreshAfterTimestamp:a.refreshOn?.getTime(),tokenType:a.tokenType}}async function A(e,t={}){u.getToken.info(`Attempting to acquire token interactively`);let n=await p(t);return v(n,e,t,async()=>{let r=D(e,t);return l.pluginConfiguration.broker.isEnabled?O(e,l.pluginConfiguration.broker.useDefaultBrokerAccount??!1,t):(t.proofOfPossessionOptions&&(r.shrNonce=t.proofOfPossessionOptions.nonce,r.authenticationScheme=`pop`,r.resourceRequestMethod=t.proofOfPossessionOptions.resourceRequestMethod,r.resourceRequestUri=t.proofOfPossessionOptions.resourceRequestUrl),n.acquireTokenInteractive(r))})}return{getActiveAccount:w,getBrokeredToken:k,getTokenByClientSecret:y,getTokenByClientAssertion:b,getTokenByClientCertificate:x,getTokenByDeviceCode:S,getTokenByUsernamePassword:C,getTokenByAuthorizationCode:T,getTokenOnBehalfOf:E,getTokenByInteractiveRequest:A}}})),_d=b((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.ClientCertificateCredential=void 0,e.parseCertificate=l;let t=gd(),n=T(`node:crypto`),r=vu(),i=Hs(),a=T(`node:fs/promises`),o=Us(),s=`ClientCertificateCredential`,c=(0,i.credentialLogger)(s);e.ClientCertificateCredential=class{constructor(e,n,i,a={}){if(!e||!n)throw Error(`${s}: tenantId and clientId are required parameters.`);this.tenantId=e,this.additionallyAllowedTenantIds=(0,r.resolveAdditionallyAllowedTenantIds)(a?.additionallyAllowedTenants),this.sendCertificateChain=a.sendCertificateChain,this.certificateConfiguration={...typeof i==`string`?{certificatePath:i}:i};let o=this.certificateConfiguration.certificate,l=this.certificateConfiguration.certificatePath;if(!this.certificateConfiguration||!(o||l))throw Error(`${s}: Provide either a PEM certificate in string form, or the path to that certificate in the filesystem. To troubleshoot, visit https://aka.ms/azsdk/js/identity/serviceprincipalauthentication/troubleshoot.`);if(o&&l)throw Error(`${s}: To avoid unexpected behaviors, providing both the contents of a PEM certificate and the path to a PEM certificate is forbidden. To troubleshoot, visit https://aka.ms/azsdk/js/identity/serviceprincipalauthentication/troubleshoot.`);this.msalClient=(0,t.createMsalClient)(n,e,{...a,logger:c,tokenCredentialOptions:a})}async getToken(e,t={}){return o.tracingClient.withSpan(`${s}.getToken`,t,async t=>{t.tenantId=(0,r.processMultiTenantRequest)(this.tenantId,t,this.additionallyAllowedTenantIds,c);let n=Array.isArray(e)?e:[e],i=await this.buildClientCertificate();return this.msalClient.getTokenByClientCertificate(n,i,t)})}async buildClientCertificate(){let e=await l(this.certificateConfiguration,this.sendCertificateChain??!1),t;return t=this.certificateConfiguration.certificatePassword===void 0?e.certificateContents:(0,n.createPrivateKey)({key:e.certificateContents,passphrase:this.certificateConfiguration.certificatePassword,format:`pem`}).export({format:`pem`,type:`pkcs8`}).toString(),{thumbprint:e.thumbprint,thumbprintSha256:e.thumbprintSha256,privateKey:t,x5c:e.x5c}}};async function l(e,t){let r=e.certificate,i=e.certificatePath,o=r||await(0,a.readFile)(i,`utf8`),s=t?o:void 0,c=/(-+BEGIN CERTIFICATE-+)(\n\r?|\r\n?)([A-Za-z0-9+/\n\r]+=*)(\n\r?|\r\n?)(-+END CERTIFICATE-+)/g,l=[],u;do u=c.exec(o),u&&l.push(u[3]);while(u);if(l.length===0)throw Error(`The file at the specified path does not contain a PEM-encoded certificate.`);let d=(0,n.createHash)(`sha1`).update(Buffer.from(l[0],`base64`)).digest(`hex`).toUpperCase();return{certificateContents:o,thumbprintSha256:(0,n.createHash)(`sha256`).update(Buffer.from(l[0],`base64`)).digest(`hex`).toUpperCase(),thumbprint:d,x5c:s}}})),vd=b((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.ensureScopes=n,e.ensureValidScopeForDevTimeCreds=r,e.getScopeResource=i;let t=Hs();function n(e){return Array.isArray(e)?e:[e]}function r(e,n){if(!e.match(/^[0-9a-zA-Z-_.:/]+$/)){let r=Error(`Invalid scope was specified by the user or calling client`);throw n.getToken.info((0,t.formatError)(e,r)),r}}function i(e){return e.replace(/\/.default$/,``)}})),yd=b((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.ClientSecretCredential=void 0;let t=gd(),n=vu(),r=Vs(),i=Hs(),a=vd(),o=Us(),s=(0,i.credentialLogger)(`ClientSecretCredential`);e.ClientSecretCredential=class{constructor(e,i,a,o={}){if(!e)throw new r.CredentialUnavailableError(`ClientSecretCredential: tenantId is a required parameter. To troubleshoot, visit https://aka.ms/azsdk/js/identity/serviceprincipalauthentication/troubleshoot.`);if(!i)throw new r.CredentialUnavailableError(`ClientSecretCredential: clientId is a required parameter. To troubleshoot, visit https://aka.ms/azsdk/js/identity/serviceprincipalauthentication/troubleshoot.`);if(!a)throw new r.CredentialUnavailableError(`ClientSecretCredential: clientSecret is a required parameter. To troubleshoot, visit https://aka.ms/azsdk/js/identity/serviceprincipalauthentication/troubleshoot.`);this.clientSecret=a,this.tenantId=e,this.additionallyAllowedTenantIds=(0,n.resolveAdditionallyAllowedTenantIds)(o?.additionallyAllowedTenants),this.msalClient=(0,t.createMsalClient)(i,e,{...o,logger:s,tokenCredentialOptions:o})}async getToken(e,t={}){return o.tracingClient.withSpan(`${this.constructor.name}.getToken`,t,async t=>{t.tenantId=(0,n.processMultiTenantRequest)(this.tenantId,t,this.additionallyAllowedTenantIds,s);let r=(0,a.ensureScopes)(e);return this.msalClient.getTokenByClientSecret(r,this.clientSecret,t)})}}})),bd=b((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.UsernamePasswordCredential=void 0;let t=gd(),n=vu(),r=Vs(),i=Hs(),a=vd(),o=Us(),s=(0,i.credentialLogger)(`UsernamePasswordCredential`);e.UsernamePasswordCredential=class{constructor(e,i,a,o,s={}){if(!e)throw new r.CredentialUnavailableError(`UsernamePasswordCredential: tenantId is a required parameter. To troubleshoot, visit https://aka.ms/azsdk/js/identity/usernamepasswordcredential/troubleshoot.`);if(!i)throw new r.CredentialUnavailableError(`UsernamePasswordCredential: clientId is a required parameter. To troubleshoot, visit https://aka.ms/azsdk/js/identity/usernamepasswordcredential/troubleshoot.`);if(!a)throw new r.CredentialUnavailableError(`UsernamePasswordCredential: username is a required parameter. To troubleshoot, visit https://aka.ms/azsdk/js/identity/usernamepasswordcredential/troubleshoot.`);if(!o)throw new r.CredentialUnavailableError(`UsernamePasswordCredential: password is a required parameter. To troubleshoot, visit https://aka.ms/azsdk/js/identity/usernamepasswordcredential/troubleshoot.`);this.tenantId=e,this.additionallyAllowedTenantIds=(0,n.resolveAdditionallyAllowedTenantIds)(s?.additionallyAllowedTenants),this.username=a,this.password=o,this.msalClient=(0,t.createMsalClient)(i,this.tenantId,{...s,tokenCredentialOptions:s??{}})}async getToken(e,t={}){return o.tracingClient.withSpan(`${this.constructor.name}.getToken`,t,async t=>{t.tenantId=(0,n.processMultiTenantRequest)(this.tenantId,t,this.additionallyAllowedTenantIds,s);let r=(0,a.ensureScopes)(e);return this.msalClient.getTokenByUsernamePassword(r,this.username,this.password,t)})}}})),xd=b((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.EnvironmentCredential=e.AllSupportedEnvironmentVariables=void 0,e.getSendCertificateChain=d;let t=Vs(),n=Hs(),r=_d(),i=yd(),a=bd(),o=vu(),s=Us();e.AllSupportedEnvironmentVariables=[`AZURE_TENANT_ID`,`AZURE_CLIENT_ID`,`AZURE_CLIENT_SECRET`,`AZURE_CLIENT_CERTIFICATE_PATH`,`AZURE_CLIENT_CERTIFICATE_PASSWORD`,`AZURE_USERNAME`,`AZURE_PASSWORD`,`AZURE_ADDITIONALLY_ALLOWED_TENANTS`,`AZURE_CLIENT_SEND_CERTIFICATE_CHAIN`];function c(){return(process.env.AZURE_ADDITIONALLY_ALLOWED_TENANTS??``).split(`;`)}let l=`EnvironmentCredential`,u=(0,n.credentialLogger)(l);function d(){let e=(process.env.AZURE_CLIENT_SEND_CERTIFICATE_CHAIN??``).toLowerCase(),t=e===`true`||e===`1`;return u.verbose(`AZURE_CLIENT_SEND_CERTIFICATE_CHAIN: ${process.env.AZURE_CLIENT_SEND_CERTIFICATE_CHAIN}; sendCertificateChain: ${t}`),t}e.EnvironmentCredential=class{constructor(t){this._credential=void 0;let s=(0,n.processEnvVars)(e.AllSupportedEnvironmentVariables).assigned.join(`, `);u.info(`Found the following environment variables: ${s}`);let l=process.env.AZURE_TENANT_ID,f=process.env.AZURE_CLIENT_ID,p=process.env.AZURE_CLIENT_SECRET,m=c(),h=d(),g={...t,additionallyAllowedTenantIds:m,sendCertificateChain:h};if(l&&(0,o.checkTenantId)(u,l),l&&f&&p){u.info(`Invoking ClientSecretCredential with tenant ID: ${l}, clientId: ${f} and clientSecret: [REDACTED]`),this._credential=new i.ClientSecretCredential(l,f,p,g);return}let _=process.env.AZURE_CLIENT_CERTIFICATE_PATH,v=process.env.AZURE_CLIENT_CERTIFICATE_PASSWORD;if(l&&f&&_){u.info(`Invoking ClientCertificateCredential with tenant ID: ${l}, clientId: ${f} and certificatePath: ${_}`),this._credential=new r.ClientCertificateCredential(l,f,{certificatePath:_,certificatePassword:v},g);return}let y=process.env.AZURE_USERNAME,b=process.env.AZURE_PASSWORD;l&&f&&y&&b&&(u.info(`Invoking UsernamePasswordCredential with tenant ID: ${l}, clientId: ${f} and username: ${y}`),u.warning(`Environment is configured to use username and password authentication. This authentication method is deprecated, as it doesn't support multifactor authentication (MFA). Use a more secure credential. For more details, see https://aka.ms/azsdk/identity/mfa.`),this._credential=new a.UsernamePasswordCredential(l,f,y,b,g))}async getToken(e,r={}){return s.tracingClient.withSpan(`${l}.getToken`,r,async r=>{if(this._credential)try{let t=await this._credential.getToken(e,r);return u.getToken.info((0,n.formatSuccess)(e)),t}catch(r){let i=new t.AuthenticationError(400,{error:`${l} authentication failed. To troubleshoot, visit https://aka.ms/azsdk/js/identity/environmentcredential/troubleshoot.`,error_description:r.message.toString().split(`More details:`).join(``)});throw u.getToken.info((0,n.formatError)(e,i)),i}throw new t.CredentialUnavailableError(`${l} is unavailable. No underlying credential could be used. To troubleshoot, visit https://aka.ms/azsdk/js/identity/environmentcredential/troubleshoot.`)})}}})),Sd=b((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.imdsRetryPolicy=r;let t=Ho(),n=uo();function r(e){return(0,t.retryPolicy)([{name:`imdsRetryPolicy`,retry:({retryCount:t,response:r})=>{if(r?.status!==404&&r?.status!==410)return{skipStrategy:!0};let i=r?.status===410?Math.max(3e3,e.startDelayInMs):e.startDelayInMs;return(0,n.calculateRetryDelay)(t,{retryDelayInMs:i,maxRetryDelayInMs:64e3})}}],{maxRetries:e.maxRetries})}})),Cd=b((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.imdsMsi=void 0;let t=Ho(),n=uo(),r=Hs(),i=mu(),a=Us(),o=`ManagedIdentityCredential - IMDS`,s=(0,r.credentialLogger)(o);function c(e){if(!(0,i.mapScopesToResource)(e))throw Error(`${o}: Multiple scopes are not supported.`);return{url:`${new URL(`/metadata/identity/oauth2/token`,process.env.AZURE_POD_IDENTITY_AUTHORITY_HOST??`http://169.254.169.254`)}`,method:`GET`,headers:(0,t.createHttpHeaders)({Accept:`application/json`})}}e.imdsMsi={name:`imdsMsi`,async isAvailable(e){let{scopes:r,identityClient:l,getTokenOptions:u}=e,d=(0,i.mapScopesToResource)(r);if(!d)return s.info(`${o}: Unavailable. Multiple scopes are not supported.`),!1;if(process.env.AZURE_POD_IDENTITY_AUTHORITY_HOST)return!0;if(!l)throw Error(`Missing IdentityClient`);let f=c(d);return a.tracingClient.withSpan(`ManagedIdentityCredential-pingImdsEndpoint`,u??{},async e=>{f.tracingOptions=e.tracingOptions;let r=(0,t.createPipelineRequest)(f);r.timeout=e.requestOptions?.timeout||1e3,r.allowInsecureConnection=!0;let i;try{s.info(`${o}: Pinging the Azure IMDS endpoint`),i=await l.sendRequest(r)}catch(e){return(0,n.isError)(e)&&s.verbose(`${o}: Caught error ${e.name}: ${e.message}`),s.info(`${o}: The Azure IMDS endpoint is unavailable`),!1}return i.status===403&&i.bodyAsText?.includes(`unreachable`)?(s.info(`${o}: The Azure IMDS endpoint is unavailable`),s.info(`${o}: ${i.bodyAsText}`),!1):(s.info(`${o}: The Azure IMDS endpoint is available`),!0)})}}})),wd=b((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.ClientAssertionCredential=void 0;let t=gd(),n=vu(),r=Vs(),i=Hs(),a=Us(),o=(0,i.credentialLogger)(`ClientAssertionCredential`);e.ClientAssertionCredential=class{constructor(e,i,a,s={}){if(!e)throw new r.CredentialUnavailableError(`ClientAssertionCredential: tenantId is a required parameter.`);if(!i)throw new r.CredentialUnavailableError(`ClientAssertionCredential: clientId is a required parameter.`);if(!a)throw new r.CredentialUnavailableError(`ClientAssertionCredential: clientAssertion is a required parameter.`);this.tenantId=e,this.additionallyAllowedTenantIds=(0,n.resolveAdditionallyAllowedTenantIds)(s?.additionallyAllowedTenants),this.options=s,this.getAssertion=a,this.msalClient=(0,t.createMsalClient)(i,e,{...s,logger:o,tokenCredentialOptions:this.options})}async getToken(e,t={}){return a.tracingClient.withSpan(`${this.constructor.name}.getToken`,t,async t=>{t.tenantId=(0,n.processMultiTenantRequest)(this.tenantId,t,this.additionallyAllowedTenantIds,o);let r=Array.isArray(e)?e:[e];return this.msalClient.getTokenByClientAssertion(r,this.getAssertion,t)})}}})),Td=b((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.WorkloadIdentityCredential=e.SupportedWorkloadEnvironmentVariables=void 0;let t=Hs(),n=wd(),r=Vs(),i=vu(),a=T(`node:fs/promises`),o=`WorkloadIdentityCredential`;e.SupportedWorkloadEnvironmentVariables=[`AZURE_TENANT_ID`,`AZURE_CLIENT_ID`,`AZURE_FEDERATED_TOKEN_FILE`];let s=(0,t.credentialLogger)(o);e.WorkloadIdentityCredential=class{constructor(a){this.azureFederatedTokenFileContent=void 0,this.cacheDate=void 0;let c=(0,t.processEnvVars)(e.SupportedWorkloadEnvironmentVariables).assigned.join(`, `);s.info(`Found the following environment variables: ${c}`);let l=a??{},u=l.tenantId||process.env.AZURE_TENANT_ID,d=l.clientId||process.env.AZURE_CLIENT_ID;if(this.federatedTokenFilePath=l.tokenFilePath||process.env.AZURE_FEDERATED_TOKEN_FILE,u&&(0,i.checkTenantId)(s,u),!d)throw new r.CredentialUnavailableError(`${o}: is unavailable. clientId is a required parameter. In DefaultAzureCredential and ManagedIdentityCredential, this can be provided as an environment variable - "AZURE_CLIENT_ID". + See the troubleshooting guide for more information: https://aka.ms/azsdk/js/identity/workloadidentitycredential/troubleshoot`);if(!u)throw new r.CredentialUnavailableError(`${o}: is unavailable. tenantId is a required parameter. In DefaultAzureCredential and ManagedIdentityCredential, this can be provided as an environment variable - "AZURE_TENANT_ID". + See the troubleshooting guide for more information: https://aka.ms/azsdk/js/identity/workloadidentitycredential/troubleshoot`);if(!this.federatedTokenFilePath)throw new r.CredentialUnavailableError(`${o}: is unavailable. federatedTokenFilePath is a required parameter. In DefaultAzureCredential and ManagedIdentityCredential, this can be provided as an environment variable - "AZURE_FEDERATED_TOKEN_FILE". + See the troubleshooting guide for more information: https://aka.ms/azsdk/js/identity/workloadidentitycredential/troubleshoot`);s.info(`Invoking ClientAssertionCredential with tenant ID: ${u}, clientId: ${l.clientId} and federated token path: [REDACTED]`),this.client=new n.ClientAssertionCredential(u,d,this.readFileContents.bind(this),a)}async getToken(e,t){if(!this.client){let e=`${o}: is unavailable. tenantId, clientId, and federatedTokenFilePath are required parameters. + In DefaultAzureCredential and ManagedIdentityCredential, these can be provided as environment variables - + "AZURE_TENANT_ID", + "AZURE_CLIENT_ID", + "AZURE_FEDERATED_TOKEN_FILE". See the troubleshooting guide for more information: https://aka.ms/azsdk/js/identity/workloadidentitycredential/troubleshoot`;throw s.info(e),new r.CredentialUnavailableError(e)}return s.info(`Invoking getToken() of Client Assertion Credential`),this.client.getToken(e,t)}async readFileContents(){if(this.cacheDate!==void 0&&Date.now()-this.cacheDate>=1e3*60*5&&(this.azureFederatedTokenFileContent=void 0),!this.federatedTokenFilePath)throw new r.CredentialUnavailableError(`${o}: is unavailable. Invalid file path provided ${this.federatedTokenFilePath}.`);if(!this.azureFederatedTokenFileContent){let e=(await(0,a.readFile)(this.federatedTokenFilePath,`utf8`)).trim();if(e)this.azureFederatedTokenFileContent=e,this.cacheDate=Date.now();else throw new r.CredentialUnavailableError(`${o}: is unavailable. No content on the file ${this.federatedTokenFilePath}.`)}return this.azureFederatedTokenFileContent}}})),Ed=b((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.tokenExchangeMsi=void 0;let t=Td(),n=Hs(),r=`ManagedIdentityCredential - Token Exchange`,i=(0,n.credentialLogger)(r);e.tokenExchangeMsi={name:`tokenExchangeMsi`,async isAvailable(e){let t=process.env,n=!!((e||t.AZURE_CLIENT_ID)&&t.AZURE_TENANT_ID&&process.env.AZURE_FEDERATED_TOKEN_FILE);return n||i.info(`${r}: Unavailable. The environment variables needed are: AZURE_CLIENT_ID (or the client ID sent through the parameters), AZURE_TENANT_ID and AZURE_FEDERATED_TOKEN_FILE`),n},async getToken(e,n={}){let{scopes:r,clientId:i}=e;return new t.WorkloadIdentityCredential({clientId:i,tenantId:process.env.AZURE_TENANT_ID,tokenFilePath:process.env.AZURE_FEDERATED_TOKEN_FILE,disableInstanceDiscovery:!0}).getToken(r,n)}}})),Dd=b((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.ManagedIdentityCredential=void 0;let t=Ua(),n=uu(),r=hu(),i=Vs(),a=fu(),o=Sd(),s=Hs(),c=Us(),l=Cd(),u=Ed(),d=mu(),f=(0,s.credentialLogger)(`ManagedIdentityCredential`);e.ManagedIdentityCredential=class{constructor(e,s){this.msiRetryConfig={maxRetries:5,startDelayInMs:800,intervalIncrement:2};let c;typeof e==`string`?(this.clientId=e,c=s??{}):(this.clientId=e?.clientId,c=e??{}),this.resourceId=c?.resourceId,this.objectId=c?.objectId,this.sendProbeRequest=c?.sendProbeRequest??!1;let l=[{key:`clientId`,value:this.clientId},{key:`resourceId`,value:this.resourceId},{key:`objectId`,value:this.objectId}].filter(e=>e.value);if(l.length>1)throw Error(`ManagedIdentityCredential: only one of 'clientId', 'resourceId', or 'objectId' can be provided. Received values: ${JSON.stringify({clientId:this.clientId,resourceId:this.resourceId,objectId:this.objectId})}`);c.allowInsecureConnection=!0,c.retryOptions?.maxRetries!==void 0&&(this.msiRetryConfig.maxRetries=c.retryOptions.maxRetries),this.identityClient=new r.IdentityClient({...c,additionalPolicies:[{policy:(0,o.imdsRetryPolicy)(this.msiRetryConfig),position:`perCall`}]}),this.managedIdentityApp=new n.ManagedIdentityApplication({managedIdentityIdParams:{userAssignedClientId:this.clientId,userAssignedResourceId:this.resourceId,userAssignedObjectId:this.objectId},system:{disableInternalRetries:!0,networkClient:this.identityClient,loggerOptions:{logLevel:(0,a.getMSALLogLevel)((0,t.getLogLevel)()),piiLoggingEnabled:c.loggingOptions?.enableUnsafeSupportLogging,loggerCallback:(0,a.defaultLoggerCallback)(f)}}}),this.isAvailableIdentityClient=new r.IdentityClient({...c,retryOptions:{maxRetries:0}});let u=this.managedIdentityApp.getManagedIdentitySource();if(u===`CloudShell`&&(this.clientId||this.resourceId||this.objectId))throw f.warning(`CloudShell MSI detected with user-provided IDs - throwing. Received values: ${JSON.stringify({clientId:this.clientId,resourceId:this.resourceId,objectId:this.objectId})}.`),new i.CredentialUnavailableError(`ManagedIdentityCredential: Specifying a user-assigned managed identity is not supported for CloudShell at runtime. When using Managed Identity in CloudShell, omit the clientId, resourceId, and objectId parameters.`);if(u===`ServiceFabric`&&(this.clientId||this.resourceId||this.objectId))throw f.warning(`Service Fabric detected with user-provided IDs - throwing. Received values: ${JSON.stringify({clientId:this.clientId,resourceId:this.resourceId,objectId:this.objectId})}.`),new i.CredentialUnavailableError(`ManagedIdentityCredential: ${d.serviceFabricErrorMessage}`);if(f.info(`Using ${u} managed identity.`),l.length===1){let{key:e,value:t}=l[0];f.info(`${u} with ${e}: ${t}`)}}async getToken(e,t={}){f.getToken.info(`Using the MSAL provider for Managed Identity.`);let n=(0,d.mapScopesToResource)(e);if(!n)throw new i.CredentialUnavailableError(`ManagedIdentityCredential: Multiple scopes are not supported. Scopes: ${JSON.stringify(e)}`);return c.tracingClient.withSpan(`ManagedIdentityCredential.getToken`,t,async()=>{try{let r=await u.tokenExchangeMsi.isAvailable(this.clientId),a=this.managedIdentityApp.getManagedIdentitySource(),o=a===`DefaultToImds`||a===`Imds`;if(f.getToken.info(`MSAL Identity source: ${a}`),r){f.getToken.info(`Using the token exchange managed identity.`);let t=await u.tokenExchangeMsi.getToken({scopes:e,clientId:this.clientId,identityClient:this.identityClient,retryConfig:this.msiRetryConfig,resourceId:this.resourceId});if(t===null)throw new i.CredentialUnavailableError(`Attempted to use the token exchange managed identity, but received a null response.`);return t}else if(o&&this.sendProbeRequest&&(f.getToken.info(`Using the IMDS endpoint to probe for availability.`),!await l.imdsMsi.isAvailable({scopes:e,clientId:this.clientId,getTokenOptions:t,identityClient:this.isAvailableIdentityClient,resourceId:this.resourceId})))throw new i.CredentialUnavailableError(`Attempted to use the IMDS endpoint, but it is not available.`);f.getToken.info(`Calling into MSAL for managed identity token.`);let c=await this.managedIdentityApp.acquireToken({resource:n});return this.ensureValidMsalToken(e,c,t),f.getToken.info((0,s.formatSuccess)(e)),{expiresOnTimestamp:c.expiresOn.getTime(),token:c.accessToken,refreshAfterTimestamp:c.refreshOn?.getTime(),tokenType:`Bearer`}}catch(t){throw f.getToken.error((0,s.formatError)(e,t)),t.name===`AuthenticationRequiredError`?t:p(t)?new i.CredentialUnavailableError(`ManagedIdentityCredential: Network unreachable. Message: ${t.message}`,{cause:t}):new i.CredentialUnavailableError(`ManagedIdentityCredential: Authentication failed. Message ${t.message}`,{cause:t})}})}ensureValidMsalToken(e,t,n){let r=t=>(f.getToken.info(t),new i.AuthenticationRequiredError({scopes:Array.isArray(e)?e:[e],getTokenOptions:n,message:t}));if(!t)throw r(`No response.`);if(!t.expiresOn)throw r(`Response had no "expiresOn" property.`);if(!t.accessToken)throw r(`Response had no "accessToken" property.`)}};function p(e){return!!(e.errorCode===`network_error`||e.code===`ENETUNREACH`||e.code===`EHOSTUNREACH`||(e.statusCode===403||e.code===403)&&e.message.includes(`unreachable`))}})),Od=b((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.AzureDeveloperCliCredential=e.developerCliCredentialInternals=e.azureDeveloperCliPublicErrorMessages=void 0;let t=(yi(),w(Fr)),n=Hs(),r=Vs(),i=t.__importDefault(T(`child_process`)),a=vu(),o=Us(),s=vd(),c=(0,n.credentialLogger)(`AzureDeveloperCliCredential`);e.azureDeveloperCliPublicErrorMessages={notInstalled:`Azure Developer CLI couldn't be found. To mitigate this issue, see the troubleshooting guidelines at https://aka.ms/azsdk/js/identity/azdevclicredential/troubleshoot.`,login:`Please run 'azd auth login' from a command prompt to authenticate before using this credential. For more information, see the troubleshooting guidelines at https://aka.ms/azsdk/js/identity/azdevclicredential/troubleshoot.`,unknown:`Unknown error while trying to retrieve the access token`,claim:`This credential doesn't support claims challenges. To authenticate with the required claims, please run the following command:`},e.developerCliCredentialInternals={getSafeWorkingDir(){if(process.platform===`win32`){let e=process.env.SystemRoot||process.env.SYSTEMROOT;return e||=(c.getToken.warning(`The SystemRoot environment variable is not set. This may cause issues when using the Azure Developer CLI credential.`),`C:\\Windows`),e}else return`/bin`},async getAzdAccessToken(t,n,r,a){let o=[];n&&(o=[`--tenant-id`,n]);let s=[];return a&&(s=[`--claims`,btoa(a)]),new Promise((n,a)=>{try{let a=[`azd`,...[`auth`,`token`,`--output`,`json`,`--no-prompt`,...t.reduce((e,t)=>e.concat(`--scope`,t),[]),...o,...s]].join(` `);i.default.exec(a,{cwd:e.developerCliCredentialInternals.getSafeWorkingDir(),timeout:r},(e,t,r)=>{n({stdout:t,stderr:r,error:e})})}catch(e){a(e)}})}},e.AzureDeveloperCliCredential=class{constructor(e){e?.tenantId&&((0,a.checkTenantId)(c,e?.tenantId),this.tenantId=e?.tenantId),this.additionallyAllowedTenantIds=(0,a.resolveAdditionallyAllowedTenantIds)(e?.additionallyAllowedTenants),this.timeout=e?.processTimeoutInMs}async getToken(t,i={}){let l=(0,a.processMultiTenantRequest)(this.tenantId,i,this.additionallyAllowedTenantIds);l&&(0,a.checkTenantId)(c,l);let u;return u=typeof t==`string`?[t]:t,c.getToken.info(`Using the scopes ${t}`),o.tracingClient.withSpan(`${this.constructor.name}.getToken`,i,async()=>{try{u.forEach(e=>{(0,s.ensureValidScopeForDevTimeCreds)(e,c)});let a=await e.developerCliCredentialInternals.getAzdAccessToken(u,l,this.timeout,i.claims),o=a.stderr?.match(`must use multi-factor authentication`)||a.stderr?.match(`reauthentication required`),d=a.stderr?.match("not logged in, run `azd login` to login")||a.stderr?.match("not logged in, run `azd auth login` to login");if(a.stderr?.match(`azd:(.*)not found`)||a.stderr?.startsWith(`'azd' is not recognized`)||a.error&&a.error.code===`ENOENT`){let i=new r.CredentialUnavailableError(e.azureDeveloperCliPublicErrorMessages.notInstalled);throw c.getToken.info((0,n.formatError)(t,i)),i}if(d){let i=new r.CredentialUnavailableError(e.azureDeveloperCliPublicErrorMessages.login);throw c.getToken.info((0,n.formatError)(t,i)),i}if(o){let i=`azd auth login ${u.reduce((e,t)=>e.concat(`--scope`,t),[]).join(` `)}`,a=new r.CredentialUnavailableError(`${e.azureDeveloperCliPublicErrorMessages.claim} ${i}`);throw c.getToken.info((0,n.formatError)(t,a)),a}try{let e=JSON.parse(a.stdout);return c.getToken.info((0,n.formatSuccess)(t)),{token:e.token,expiresOnTimestamp:new Date(e.expiresOn).getTime(),tokenType:`Bearer`}}catch(e){throw a.stderr?new r.CredentialUnavailableError(a.stderr):e}}catch(i){let a=i.name===`CredentialUnavailableError`?i:new r.CredentialUnavailableError(i.message||e.azureDeveloperCliPublicErrorMessages.unknown);throw c.getToken.info((0,n.formatError)(t,a)),a}})}}})),kd=b((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.checkSubscription=n;let t=Hs();function n(e,n){if(!n.match(/^[0-9a-zA-Z-._ ]+$/)){let r=Error(`Subscription '${n}' contains invalid characters. If this is the name of a subscription, use its ID instead. You can locate your subscription by following the instructions listed here: https://learn.microsoft.com/azure/azure-portal/get-subscription-tenant-id`);throw e.info((0,t.formatError)(``,r)),r}}})),Ad=b((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.AzureCliCredential=e.cliCredentialInternals=e.azureCliPublicErrorMessages=void 0;let t=(yi(),w(Fr)),n=vu(),r=Hs(),i=vd(),a=Vs(),o=t.__importDefault(T(`child_process`)),s=Us(),c=kd(),l=(0,r.credentialLogger)(`AzureCliCredential`);e.azureCliPublicErrorMessages={claim:`This credential doesn't support claims challenges. To authenticate with the required claims, please run the following command:`,notInstalled:`Azure CLI could not be found. Please visit https://aka.ms/azure-cli for installation instructions and then, once installed, authenticate to your Azure account using 'az login'.`,login:`Please run 'az login' from a command prompt to authenticate before using this credential.`,unknown:`Unknown error while trying to retrieve the access token`,unexpectedResponse:`Unexpected response from Azure CLI when getting token. Expected "expiresOn" to be a RFC3339 date string. Got:`},e.cliCredentialInternals={getSafeWorkingDir(){if(process.platform===`win32`){let e=process.env.SystemRoot||process.env.SYSTEMROOT;return e||=(l.getToken.warning(`The SystemRoot environment variable is not set. This may cause issues when using the Azure CLI credential.`),`C:\\Windows`),e}else return`/bin`},async getAzureCliAccessToken(t,n,r,i){let a=[],s=[];return n&&(a=[`--tenant`,n]),r&&(s=[`--subscription`,`"${r}"`]),new Promise((n,r)=>{try{let r=[`az`,...[`account`,`get-access-token`,`--output`,`json`,`--resource`,t,...a,...s]].join(` `);o.default.exec(r,{cwd:e.cliCredentialInternals.getSafeWorkingDir(),timeout:i},(e,t,r)=>{n({stdout:t,stderr:r,error:e})})}catch(e){r(e)}})}},e.AzureCliCredential=class{constructor(e){e?.tenantId&&((0,n.checkTenantId)(l,e?.tenantId),this.tenantId=e?.tenantId),e?.subscription&&((0,c.checkSubscription)(l,e?.subscription),this.subscription=e?.subscription),this.additionallyAllowedTenantIds=(0,n.resolveAdditionallyAllowedTenantIds)(e?.additionallyAllowedTenants),this.timeout=e?.processTimeoutInMs}async getToken(t,o={}){let u=typeof t==`string`?t:t[0],d=o.claims;if(d&&d.trim()){let t=`az login --claims-challenge ${btoa(d)} --scope ${u}`,n=o.tenantId;n&&(t+=` --tenant ${n}`);let i=new a.CredentialUnavailableError(`${e.azureCliPublicErrorMessages.claim} ${t}`);throw l.getToken.info((0,r.formatError)(u,i)),i}let f=(0,n.processMultiTenantRequest)(this.tenantId,o,this.additionallyAllowedTenantIds);return f&&(0,n.checkTenantId)(l,f),this.subscription&&(0,c.checkSubscription)(l,this.subscription),l.getToken.info(`Using the scope ${u}`),s.tracingClient.withSpan(`${this.constructor.name}.getToken`,o,async()=>{try{(0,i.ensureValidScopeForDevTimeCreds)(u,l);let n=(0,i.getScopeResource)(u),o=await e.cliCredentialInternals.getAzureCliAccessToken(n,f,this.subscription,this.timeout),s=o.stderr?.match(`(.*)az login --scope(.*)`),c=o.stderr?.match(`(.*)az login(.*)`)&&!s;if(o.stderr?.match(`az:(.*)not found`)||o.stderr?.startsWith(`'az' is not recognized`)){let n=new a.CredentialUnavailableError(e.azureCliPublicErrorMessages.notInstalled);throw l.getToken.info((0,r.formatError)(t,n)),n}if(c){let n=new a.CredentialUnavailableError(e.azureCliPublicErrorMessages.login);throw l.getToken.info((0,r.formatError)(t,n)),n}try{let e=o.stdout,n=this.parseRawResponse(e);return l.getToken.info((0,r.formatSuccess)(t)),n}catch(e){throw o.stderr?new a.CredentialUnavailableError(o.stderr):e}}catch(n){let i=n.name===`CredentialUnavailableError`?n:new a.CredentialUnavailableError(n.message||e.azureCliPublicErrorMessages.unknown);throw l.getToken.info((0,r.formatError)(t,i)),i}})}parseRawResponse(t){let n=JSON.parse(t),r=n.accessToken,i=Number.parseInt(n.expires_on,10)*1e3;if(!isNaN(i))return l.getToken.info(`expires_on is available and is valid, using it`),{token:r,expiresOnTimestamp:i,tokenType:`Bearer`};if(i=new Date(n.expiresOn).getTime(),isNaN(i))throw new a.CredentialUnavailableError(`${e.azureCliPublicErrorMessages.unexpectedResponse} "${n.expiresOn}"`);return{token:r,expiresOnTimestamp:i,tokenType:`Bearer`}}}})),jd=b((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.processUtils=void 0;let t=(yi(),w(Fr)).__importDefault(T(`node:child_process`));e.processUtils={execFile(e,n,r){return new Promise((i,a)=>{t.default.execFile(e,n,r,(e,t,n)=>{Buffer.isBuffer(t)&&(t=t.toString(`utf8`)),Buffer.isBuffer(n)&&(n=n.toString(`utf8`)),n||e?a(n?Error(n):e):i(t)})})}}})),Md=b((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.AzurePowerShellCredential=e.commandStack=e.powerShellPublicErrorMessages=e.powerShellErrors=void 0,e.formatCommand=l,e.parseJsonToken=p;let t=vu(),n=Hs(),r=vd(),i=Vs(),a=jd(),o=Us(),s=(0,n.credentialLogger)(`AzurePowerShellCredential`),c=process.platform===`win32`;function l(e){return c?`${e}.exe`:e}async function u(e,t){let n=[];for(let r of e){let[e,...i]=r,o=await a.processUtils.execFile(e,i,{encoding:`utf8`,timeout:t});n.push(o)}return n}e.powerShellErrors={login:`Run Connect-AzAccount to login`,installed:`The specified module 'Az.Accounts' with version '2.2.0' was not loaded because no valid module file was found in any module directory`},e.powerShellPublicErrorMessages={login:`Please run 'Connect-AzAccount' from PowerShell to authenticate before using this credential.`,installed:`The 'Az.Account' module >= 2.2.0 is not installed. Install the Azure Az PowerShell module with: "Install-Module -Name Az -Scope CurrentUser -Repository PSGallery -Force".`,claim:`This credential doesn't support claims challenges. To authenticate with the required claims, please run the following command:`,troubleshoot:`To troubleshoot, visit https://aka.ms/azsdk/js/identity/powershellcredential/troubleshoot.`};let d=t=>t.message.match(`(.*)${e.powerShellErrors.login}(.*)`),f=t=>t.message.match(e.powerShellErrors.installed);e.commandStack=[l(`pwsh`)],c&&e.commandStack.push(l(`powershell`)),e.AzurePowerShellCredential=class{constructor(e){e?.tenantId&&((0,t.checkTenantId)(s,e?.tenantId),this.tenantId=e?.tenantId),this.additionallyAllowedTenantIds=(0,t.resolveAdditionallyAllowedTenantIds)(e?.additionallyAllowedTenants),this.timeout=e?.processTimeoutInMs}async getAzurePowerShellAccessToken(t,n,r){for(let i of[...e.commandStack]){try{await u([[i,`/?`]],r)}catch{e.commandStack.shift();continue}let a=(await u([[i,`-NoProfile`,`-NonInteractive`,`-Command`,` + $tenantId = "${n??``}" + $m = Import-Module Az.Accounts -MinimumVersion 2.2.0 -PassThru + $useSecureString = $m.Version -ge [version]'2.17.0' -and $m.Version -lt [version]'5.0.0' + + $params = @{ + ResourceUrl = "${t}" + } + + if ($tenantId.Length -gt 0) { + $params["TenantId"] = $tenantId + } + + if ($useSecureString) { + $params["AsSecureString"] = $true + } + + $token = Get-AzAccessToken @params + + $result = New-Object -TypeName PSObject + $result | Add-Member -MemberType NoteProperty -Name ExpiresOn -Value $token.ExpiresOn + + if ($token.Token -is [System.Security.SecureString]) { + if ($PSVersionTable.PSVersion.Major -lt 7) { + $ssPtr = [System.Runtime.InteropServices.Marshal]::SecureStringToBSTR($token.Token) + try { + $result | Add-Member -MemberType NoteProperty -Name Token -Value ([System.Runtime.InteropServices.Marshal]::PtrToStringBSTR($ssPtr)) + } + finally { + [System.Runtime.InteropServices.Marshal]::ZeroFreeBSTR($ssPtr) + } + } + else { + $result | Add-Member -MemberType NoteProperty -Name Token -Value ($token.Token | ConvertFrom-SecureString -AsPlainText) + } + } + else { + $result | Add-Member -MemberType NoteProperty -Name Token -Value $token.Token + } + + Write-Output (ConvertTo-Json $result) + `]]))[0];return p(a)}throw Error(`Unable to execute PowerShell. Ensure that it is installed in your system`)}async getToken(a,c={}){return o.tracingClient.withSpan(`${this.constructor.name}.getToken`,c,async()=>{let o=typeof a==`string`?a:a[0],l=c.claims;if(l&&l.trim()){let t=`Connect-AzAccount -ClaimsChallenge ${btoa(l)}`,r=c.tenantId;r&&(t+=` -Tenant ${r}`);let a=new i.CredentialUnavailableError(`${e.powerShellPublicErrorMessages.claim} ${t}`);throw s.getToken.info((0,n.formatError)(o,a)),a}let u=(0,t.processMultiTenantRequest)(this.tenantId,c,this.additionallyAllowedTenantIds);u&&(0,t.checkTenantId)(s,u);try{(0,r.ensureValidScopeForDevTimeCreds)(o,s),s.getToken.info(`Using the scope ${o}`);let e=(0,r.getScopeResource)(o),t=await this.getAzurePowerShellAccessToken(e,u,this.timeout);return s.getToken.info((0,n.formatSuccess)(a)),{token:t.Token,expiresOnTimestamp:new Date(t.ExpiresOn).getTime(),tokenType:`Bearer`}}catch(t){if(f(t)){let t=new i.CredentialUnavailableError(e.powerShellPublicErrorMessages.installed);throw s.getToken.info((0,n.formatError)(o,t)),t}else if(d(t)){let t=new i.CredentialUnavailableError(e.powerShellPublicErrorMessages.login);throw s.getToken.info((0,n.formatError)(o,t)),t}let r=new i.CredentialUnavailableError(`${t}. ${e.powerShellPublicErrorMessages.troubleshoot}`);throw s.getToken.info((0,n.formatError)(o,r)),r}})}};async function p(e){let t=e.match(/{[^{}]*}/g),n=e;if(t)try{for(let e of t)try{let t=JSON.parse(e);if(t?.Token)return n=n.replace(e,``),n&&s.getToken.warning(n),t}catch{continue}}catch{throw Error(`Unable to parse the output of PowerShell. Received output: ${e}`)}throw Error(`No access token found in the output. Received output: ${e}`)}})),Nd=b((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.VisualStudioCodeCredential=void 0;let t=Hs(),n=vu(),r=Vs(),i=vu(),a=gd(),o=vd(),s=zs(),c=fu(),l=T(`node:fs/promises`),u=(0,t.credentialLogger)(`VisualStudioCodeCredential`),d={adfs:`The VisualStudioCodeCredential does not support authentication with ADFS tenants.`};function f(e){let t=d[e];if(t)throw new r.CredentialUnavailableError(t)}e.VisualStudioCodeCredential=class{constructor(e){this.options=e||{},e&&e.tenantId?((0,i.checkTenantId)(u,e.tenantId),this.tenantId=e.tenantId):this.tenantId=`common`,this.additionallyAllowedTenantIds=(0,n.resolveAdditionallyAllowedTenantIds)(e?.additionallyAllowedTenants),f(this.tenantId)}async prepare(e){let t=(0,n.processMultiTenantRequest)(this.tenantId,this.options,this.additionallyAllowedTenantIds,u)||this.tenantId;if(!(0,s.hasVSCodePlugin)()||!s.vsCodeAuthRecordPath)throw new r.CredentialUnavailableError(`Visual Studio Code Authentication is not available. Ensure you have have Azure Resources Extension installed in VS Code, signed into Azure via VS Code, installed the @azure/identity-vscode package, and properly configured the extension.`);let i=await this.loadAuthRecord(s.vsCodeAuthRecordPath,e);this.msalClient=(0,a.createMsalClient)(`aebc6443-996d-45c2-90f0-388ff96faa56`,t,{...this.options,isVSCodeCredential:!0,brokerOptions:{enabled:!0,parentWindowHandle:new Uint8Array,useDefaultBrokerAccount:!0},authenticationRecord:i})}prepareOnce(e){return this.preparePromise||=this.prepare(e),this.preparePromise}async getToken(e,t){let n=(0,o.ensureScopes)(e);if(await this.prepareOnce(n),!this.msalClient)throw new r.CredentialUnavailableError(`Visual Studio Code Authentication failed to initialize. Ensure you have have Azure Resources Extension installed in VS Code, signed into Azure via VS Code, installed the @azure/identity-vscode package, and properly configured the extension.`);return this.msalClient.getTokenByInteractiveRequest(n,{...t,disableAutomaticAuthentication:!0})}async loadAuthRecord(e,n){try{let t=await(0,l.readFile)(e,{encoding:`utf8`});return(0,c.deserializeAuthenticationRecord)(t)}catch(e){throw u.getToken.info((0,t.formatError)(n,e)),new r.CredentialUnavailableError(`Cannot load authentication record in Visual Studio Code. Ensure you have have Azure Resources Extension installed in VS Code, signed into Azure via VS Code, installed the @azure/identity-vscode package, and properly configured the extension.`)}}}})),Pd=b((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.BrokerCredential=void 0;let t=vu(),n=Hs(),r=vd(),i=Us(),a=gd(),o=Rs(),s=Vs(),c=(0,n.credentialLogger)(`BrokerCredential`);e.BrokerCredential=class{constructor(e){this.brokerTenantId=(0,t.resolveTenantId)(c,e.tenantId),this.brokerAdditionallyAllowedTenantIds=(0,t.resolveAdditionallyAllowedTenantIds)(e?.additionallyAllowedTenants);let n={...e,tokenCredentialOptions:e,logger:c,brokerOptions:{enabled:!0,parentWindowHandle:new Uint8Array,useDefaultBrokerAccount:!0}};this.brokerMsalClient=(0,a.createMsalClient)(o.DeveloperSignOnClientId,this.brokerTenantId,n)}async getToken(e,a={}){return i.tracingClient.withSpan(`${this.constructor.name}.getToken`,a,async i=>{i.tenantId=(0,t.processMultiTenantRequest)(this.brokerTenantId,i,this.brokerAdditionallyAllowedTenantIds,c);let a=(0,r.ensureScopes)(e);try{return this.brokerMsalClient.getBrokeredToken(a,!0,{...i,disableAutomaticAuthentication:!0})}catch(e){throw c.getToken.info((0,n.formatError)(a,e)),new s.CredentialUnavailableError(`Failed to acquire token using broker authentication`,{cause:e})}})}}})),Fd=b((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.createDefaultBrokerCredential=l,e.createDefaultVisualStudioCodeCredential=u,e.createDefaultManagedIdentityCredential=d,e.createDefaultWorkloadIdentityCredential=f,e.createDefaultAzureDeveloperCliCredential=p,e.createDefaultAzureCliCredential=m,e.createDefaultAzurePowershellCredential=h,e.createDefaultEnvironmentCredential=g;let t=xd(),n=Dd(),r=Td(),i=Od(),a=Ad(),o=Md(),s=Nd(),c=Pd();function l(e={}){return new c.BrokerCredential(e)}function u(e={}){return new s.VisualStudioCodeCredential(e)}function d(e={}){e.retryOptions??={maxRetries:5,retryDelayInMs:800},e.sendProbeRequest??=!0;let t=e?.managedIdentityClientId??process.env.AZURE_CLIENT_ID,r=e?.workloadIdentityClientId??t,i=e?.managedIdentityResourceId,a=process.env.AZURE_FEDERATED_TOKEN_FILE,o=e?.tenantId??process.env.AZURE_TENANT_ID;if(i){let t={...e,resourceId:i};return new n.ManagedIdentityCredential(t)}if(a&&r){let t={...e,tenantId:o};return new n.ManagedIdentityCredential(r,t)}if(t){let r={...e,clientId:t};return new n.ManagedIdentityCredential(r)}return new n.ManagedIdentityCredential(e)}function f(e){let t=e?.managedIdentityClientId??process.env.AZURE_CLIENT_ID,n=e?.workloadIdentityClientId??t,i=process.env.AZURE_FEDERATED_TOKEN_FILE,a=e?.tenantId??process.env.AZURE_TENANT_ID;if(i&&n){let t={...e,tenantId:a,clientId:n,tokenFilePath:i};return new r.WorkloadIdentityCredential(t)}if(a){let t={...e,tenantId:a};return new r.WorkloadIdentityCredential(t)}return new r.WorkloadIdentityCredential(e)}function p(e={}){return new i.AzureDeveloperCliCredential(e)}function m(e={}){return new a.AzureCliCredential(e)}function h(e={}){return new o.AzurePowerShellCredential(e)}function g(e={}){return new t.EnvironmentCredential(e)}})),Id=b((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.DefaultAzureCredential=e.UnavailableDefaultCredential=void 0;let t=Ws(),n=Hs(),r=Fd(),i=(0,n.credentialLogger)(`DefaultAzureCredential`);var a=class{constructor(e,t){this.credentialName=e,this.credentialUnavailableErrorMessage=t}getToken(){return i.getToken.info(`Skipping ${this.credentialName}, reason: ${this.credentialUnavailableErrorMessage}`),Promise.resolve(null)}};e.UnavailableDefaultCredential=a,e.DefaultAzureCredential=class extends t.ChainedTokenCredential{constructor(e){o(e);let t=process.env.AZURE_TOKEN_CREDENTIALS?process.env.AZURE_TOKEN_CREDENTIALS.trim().toLowerCase():void 0,n=[r.createDefaultVisualStudioCodeCredential,r.createDefaultAzureCliCredential,r.createDefaultAzurePowershellCredential,r.createDefaultAzureDeveloperCliCredential,r.createDefaultBrokerCredential],s=[r.createDefaultEnvironmentCredential,r.createDefaultWorkloadIdentityCredential,r.createDefaultManagedIdentityCredential],c=[];if(t)switch(t){case`dev`:c=n;break;case`prod`:c=s;break;case`environmentcredential`:c=[r.createDefaultEnvironmentCredential];break;case`workloadidentitycredential`:c=[r.createDefaultWorkloadIdentityCredential];break;case`managedidentitycredential`:c=[()=>(0,r.createDefaultManagedIdentityCredential)({sendProbeRequest:!1})];break;case`visualstudiocodecredential`:c=[r.createDefaultVisualStudioCodeCredential];break;case`azureclicredential`:c=[r.createDefaultAzureCliCredential];break;case`azurepowershellcredential`:c=[r.createDefaultAzurePowershellCredential];break;case`azuredeveloperclicredential`:c=[r.createDefaultAzureDeveloperCliCredential];break;default:{let e=`Invalid value for AZURE_TOKEN_CREDENTIALS = ${process.env.AZURE_TOKEN_CREDENTIALS}. Valid values are 'prod' or 'dev' or any of these credentials - EnvironmentCredential, WorkloadIdentityCredential, ManagedIdentityCredential, VisualStudioCodeCredential, AzureCliCredential, AzurePowerShellCredential, AzureDeveloperCliCredential.`;throw i.warning(e),Error(e)}}else c=[...s,...n];let l=c.map(t=>{try{return t(e??{})}catch(e){return i.warning(`Skipped ${t.name} because of an error creating the credential: ${e}`),new a(t.name,e.message)}});super(...l)}};function o(e){if(e?.requiredEnvVars){let t=(Array.isArray(e.requiredEnvVars)?e.requiredEnvVars:[e.requiredEnvVars]).filter(e=>!process.env[e]);if(t.length>0){let e=`Required environment ${t.length===1?`variable`:`variables`} '${t.join(`, `)}' for DefaultAzureCredential ${t.length===1?`is`:`are`} not set or empty.`;throw i.warning(e),Error(e)}}}})),Ld=b((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.InteractiveBrowserCredential=void 0;let t=vu(),n=Hs(),r=vd(),i=Us(),a=gd(),o=Rs(),s=(0,n.credentialLogger)(`InteractiveBrowserCredential`);e.InteractiveBrowserCredential=class{constructor(e){this.tenantId=(0,t.resolveTenantId)(s,e.tenantId,e.clientId),this.additionallyAllowedTenantIds=(0,t.resolveAdditionallyAllowedTenantIds)(e?.additionallyAllowedTenants);let n={...e,tokenCredentialOptions:e,logger:s},r=e;if(this.browserCustomizationOptions=r.browserCustomizationOptions,this.loginHint=r.loginHint,r?.brokerOptions?.enabled)if(r?.brokerOptions?.parentWindowHandle)n.brokerOptions={enabled:!0,parentWindowHandle:r.brokerOptions.parentWindowHandle,legacyEnableMsaPassthrough:r.brokerOptions?.legacyEnableMsaPassthrough,useDefaultBrokerAccount:r.brokerOptions?.useDefaultBrokerAccount};else throw Error("In order to do WAM authentication, `parentWindowHandle` under `brokerOptions` is a required parameter");this.msalClient=(0,a.createMsalClient)(e.clientId??o.DeveloperSignOnClientId,this.tenantId,n),this.disableAutomaticAuthentication=e?.disableAutomaticAuthentication}async getToken(e,n={}){return i.tracingClient.withSpan(`${this.constructor.name}.getToken`,n,async n=>{n.tenantId=(0,t.processMultiTenantRequest)(this.tenantId,n,this.additionallyAllowedTenantIds,s);let i=(0,r.ensureScopes)(e);return this.msalClient.getTokenByInteractiveRequest(i,{...n,disableAutomaticAuthentication:this.disableAutomaticAuthentication,browserCustomizationOptions:this.browserCustomizationOptions,loginHint:this.loginHint})})}async authenticate(e,t={}){return i.tracingClient.withSpan(`${this.constructor.name}.authenticate`,t,async t=>{let n=(0,r.ensureScopes)(e);return await this.msalClient.getTokenByInteractiveRequest(n,{...t,disableAutomaticAuthentication:!1,browserCustomizationOptions:this.browserCustomizationOptions,loginHint:this.loginHint}),this.msalClient.getActiveAccount()})}}})),Rd=b((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.DeviceCodeCredential=void 0,e.defaultDeviceCodePromptCallback=c;let t=vu(),n=Hs(),r=vd(),i=Us(),a=gd(),o=Rs(),s=(0,n.credentialLogger)(`DeviceCodeCredential`);function c(e){console.log(e.message)}e.DeviceCodeCredential=class{constructor(e){this.tenantId=e?.tenantId,this.additionallyAllowedTenantIds=(0,t.resolveAdditionallyAllowedTenantIds)(e?.additionallyAllowedTenants);let n=e?.clientId??o.DeveloperSignOnClientId,r=(0,t.resolveTenantId)(s,e?.tenantId,n);this.userPromptCallback=e?.userPromptCallback??c,this.msalClient=(0,a.createMsalClient)(n,r,{...e,logger:s,tokenCredentialOptions:e||{}}),this.disableAutomaticAuthentication=e?.disableAutomaticAuthentication}async getToken(e,n={}){return i.tracingClient.withSpan(`${this.constructor.name}.getToken`,n,async n=>{n.tenantId=(0,t.processMultiTenantRequest)(this.tenantId,n,this.additionallyAllowedTenantIds,s);let i=(0,r.ensureScopes)(e);return this.msalClient.getTokenByDeviceCode(i,this.userPromptCallback,{...n,disableAutomaticAuthentication:this.disableAutomaticAuthentication})})}async authenticate(e,t={}){return i.tracingClient.withSpan(`${this.constructor.name}.authenticate`,t,async t=>{let n=Array.isArray(e)?e:[e];return await this.msalClient.getTokenByDeviceCode(n,this.userPromptCallback,{...t,disableAutomaticAuthentication:!1}),this.msalClient.getActiveAccount()})}}})),zd=b((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.AzurePipelinesCredential=void 0,e.handleOidcResponse=l;let t=Vs(),n=Ho(),r=wd(),i=hu(),a=vu(),o=Hs(),s=`AzurePipelinesCredential`,c=(0,o.credentialLogger)(s);e.AzurePipelinesCredential=class{constructor(e,n,o,l,u={}){if(!n)throw new t.CredentialUnavailableError(`${s}: is unavailable. clientId is a required parameter.`);if(!e)throw new t.CredentialUnavailableError(`${s}: is unavailable. tenantId is a required parameter.`);if(!o)throw new t.CredentialUnavailableError(`${s}: is unavailable. serviceConnectionId is a required parameter.`);if(!l)throw new t.CredentialUnavailableError(`${s}: is unavailable. systemAccessToken is a required parameter.`);if(u.loggingOptions={...u?.loggingOptions,additionalAllowedHeaderNames:[...u.loggingOptions?.additionalAllowedHeaderNames??[],`x-vss-e2eid`,`x-msedge-ref`]},this.identityClient=new i.IdentityClient(u),(0,a.checkTenantId)(c,e),c.info(`Invoking AzurePipelinesCredential with tenant ID: ${e}, client ID: ${n}, and service connection ID: ${o}`),!process.env.SYSTEM_OIDCREQUESTURI)throw new t.CredentialUnavailableError(`${s}: is unavailable. Ensure that you're running this task in an Azure Pipeline, so that following missing system variable(s) can be defined- "SYSTEM_OIDCREQUESTURI"`);let d=`${process.env.SYSTEM_OIDCREQUESTURI}?api-version=7.1&serviceConnectionId=${o}`;c.info(`Invoking ClientAssertionCredential with tenant ID: ${e}, client ID: ${n} and service connection ID: ${o}`),this.clientAssertionCredential=new r.ClientAssertionCredential(e,n,this.requestOidcToken.bind(this,d,l),u)}async getToken(e,n){if(!this.clientAssertionCredential){let e=`${s}: is unavailable. To use Federation Identity in Azure Pipelines, the following parameters are required - + tenantId, + clientId, + serviceConnectionId, + systemAccessToken, + "SYSTEM_OIDCREQUESTURI". + See the troubleshooting guide for more information: https://aka.ms/azsdk/js/identity/azurepipelinescredential/troubleshoot`;throw c.error(e),new t.CredentialUnavailableError(e)}return c.info(`Invoking getToken() of Client Assertion Credential`),this.clientAssertionCredential.getToken(e,n)}async requestOidcToken(e,t){c.info(`Requesting OIDC token from Azure Pipelines...`),c.info(e);let r=(0,n.createPipelineRequest)({url:e,method:`POST`,headers:(0,n.createHttpHeaders)({"Content-Type":`application/json`,Authorization:`Bearer ${t}`,"X-TFS-FedAuthRedirect":`Suppress`})});return l(await this.identityClient.sendRequest(r))}};function l(e){let n=e.bodyAsText;if(!n)throw c.error(`${s}: Authentication Failed. Received null token from OIDC request. Response status- ${e.status}. Complete response - ${JSON.stringify(e)}`),new t.AuthenticationError(e.status,{error:`${s}: Authentication Failed. Received null token from OIDC request.`,error_description:`${JSON.stringify(e)}. See the troubleshooting guide for more information: https://aka.ms/azsdk/js/identity/azurepipelinescredential/troubleshoot`});try{let r=JSON.parse(n);if(r?.oidcToken)return r.oidcToken;{let r=`${s}: Authentication Failed. oidcToken field not detected in the response.`,i=``;throw e.status!==200&&(i=`Response body = ${n}. Response Headers ["x-vss-e2eid"] = ${e.headers.get(`x-vss-e2eid`)} and ["x-msedge-ref"] = ${e.headers.get(`x-msedge-ref`)}. See the troubleshooting guide for more information: https://aka.ms/azsdk/js/identity/azurepipelinescredential/troubleshoot`),c.error(r),c.error(i),new t.AuthenticationError(e.status,{error:r,error_description:i})}}catch(r){let i=`${s}: Authentication Failed. oidcToken field not detected in the response.`;throw c.error(`Response from service = ${n}, Response Headers ["x-vss-e2eid"] = ${e.headers.get(`x-vss-e2eid`)} + and ["x-msedge-ref"] = ${e.headers.get(`x-msedge-ref`)}, error message = ${r.message}`),c.error(i),new t.AuthenticationError(e.status,{error:i,error_description:`Response = ${n}. Response headers ["x-vss-e2eid"] = ${e.headers.get(`x-vss-e2eid`)} and ["x-msedge-ref"] = ${e.headers.get(`x-msedge-ref`)}. See the troubleshooting guide for more information: https://aka.ms/azsdk/js/identity/azurepipelinescredential/troubleshoot`})}}})),Bd=b((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.AuthorizationCodeCredential=void 0;let t=vu(),n=vu(),r=Hs(),i=vd(),a=Us(),o=gd(),s=(0,r.credentialLogger)(`AuthorizationCodeCredential`);e.AuthorizationCodeCredential=class{constructor(e,r,i,a,c,l){(0,n.checkTenantId)(s,e),this.clientSecret=i,typeof c==`string`?(this.authorizationCode=a,this.redirectUri=c):(this.authorizationCode=i,this.redirectUri=a,this.clientSecret=void 0,l=c),this.tenantId=e,this.additionallyAllowedTenantIds=(0,t.resolveAdditionallyAllowedTenantIds)(l?.additionallyAllowedTenants),this.msalClient=(0,o.createMsalClient)(r,e,{...l,logger:s,tokenCredentialOptions:l??{}})}async getToken(e,n={}){return a.tracingClient.withSpan(`${this.constructor.name}.getToken`,n,async n=>{n.tenantId=(0,t.processMultiTenantRequest)(this.tenantId,n,this.additionallyAllowedTenantIds);let r=(0,i.ensureScopes)(e);return this.msalClient.getTokenByAuthorizationCode(r,this.redirectUri,this.authorizationCode,this.clientSecret,{...n,disableAutomaticAuthentication:this.disableAutomaticAuthentication})})}}})),Vd=b((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.OnBehalfOfCredential=void 0;let t=gd(),n=Hs(),r=vu(),i=Vs(),a=T(`node:crypto`),o=vd(),s=T(`node:fs/promises`),c=Us(),l=`OnBehalfOfCredential`,u=(0,n.credentialLogger)(l);e.OnBehalfOfCredential=class{constructor(e){let{clientSecret:n}=e,{certificatePath:a,sendCertificateChain:o}=e,{getAssertion:s}=e,{tenantId:c,clientId:d,userAssertionToken:f,additionallyAllowedTenants:p}=e;if(!c)throw new i.CredentialUnavailableError(`${l}: tenantId is a required parameter. To troubleshoot, visit https://aka.ms/azsdk/js/identity/serviceprincipalauthentication/troubleshoot.`);if(!d)throw new i.CredentialUnavailableError(`${l}: clientId is a required parameter. To troubleshoot, visit https://aka.ms/azsdk/js/identity/serviceprincipalauthentication/troubleshoot.`);if(!n&&!a&&!s)throw new i.CredentialUnavailableError(`${l}: You must provide one of clientSecret, certificatePath, or a getAssertion callback but none were provided. To troubleshoot, visit https://aka.ms/azsdk/js/identity/serviceprincipalauthentication/troubleshoot.`);if(!f)throw new i.CredentialUnavailableError(`${l}: userAssertionToken is a required parameter. To troubleshoot, visit https://aka.ms/azsdk/js/identity/serviceprincipalauthentication/troubleshoot.`);this.certificatePath=a,this.clientSecret=n,this.userAssertionToken=f,this.sendCertificateChain=o,this.clientAssertion=s,this.tenantId=c,this.additionallyAllowedTenantIds=(0,r.resolveAdditionallyAllowedTenantIds)(p),this.msalClient=(0,t.createMsalClient)(d,this.tenantId,{...e,logger:u,tokenCredentialOptions:e})}async getToken(e,t={}){return c.tracingClient.withSpan(`${l}.getToken`,t,async n=>{n.tenantId=(0,r.processMultiTenantRequest)(this.tenantId,n,this.additionallyAllowedTenantIds,u);let i=(0,o.ensureScopes)(e);if(this.certificatePath){let e=await this.buildClientCertificate(this.certificatePath);return this.msalClient.getTokenOnBehalfOf(i,this.userAssertionToken,e,n)}else if(this.clientSecret)return this.msalClient.getTokenOnBehalfOf(i,this.userAssertionToken,this.clientSecret,t);else if(this.clientAssertion)return this.msalClient.getTokenOnBehalfOf(i,this.userAssertionToken,this.clientAssertion,t);else throw Error(`Expected either clientSecret or certificatePath or clientAssertion to be defined.`)})}async buildClientCertificate(e){try{let t=await this.parseCertificate({certificatePath:e},this.sendCertificateChain);return{thumbprint:t.thumbprint,thumbprintSha256:t.thumbprintSha256,privateKey:t.certificateContents,x5c:t.x5c}}catch(e){throw u.info((0,n.formatError)(``,e)),e}}async parseCertificate(e,t){let n=e.certificatePath,r=await(0,s.readFile)(n,`utf8`),i=t?r:void 0,o=/(-+BEGIN CERTIFICATE-+)(\n\r?|\r\n?)([A-Za-z0-9+/\n\r]+=*)(\n\r?|\r\n?)(-+END CERTIFICATE-+)/g,c=[],l;do l=o.exec(r),l&&c.push(l[3]);while(l);if(c.length===0)throw Error(`The file at the specified path does not contain a PEM-encoded certificate.`);let u=(0,a.createHash)(`sha1`).update(Buffer.from(c[0],`base64`)).digest(`hex`).toUpperCase();return{certificateContents:r,thumbprintSha256:(0,a.createHash)(`sha256`).update(Buffer.from(c[0],`base64`)).digest(`hex`).toUpperCase(),thumbprint:u,x5c:i}}}})),Hd=b((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.getBearerTokenProvider=n;let t=Ho();function n(e,n,r){let{abortSignal:i,tracingOptions:a}=r||{},o=(0,t.createEmptyPipeline)();o.addPolicy((0,t.bearerTokenAuthenticationPolicy)({credential:e,scopes:n}));async function s(){let e=(await o.sendRequest({sendRequest:e=>Promise.resolve({request:e,status:200,headers:e.headers})},(0,t.createPipelineRequest)({url:`https://example.com`,abortSignal:i,tracingOptions:a}))).headers.get(`authorization`)?.split(` `)[1];if(!e)throw Error(`Failed to get access token`);return e}return s}})),Ud=b((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.getBearerTokenProvider=e.AzureAuthorityHosts=e.logger=e.WorkloadIdentityCredential=e.OnBehalfOfCredential=e.VisualStudioCodeCredential=e.UsernamePasswordCredential=e.AzurePowerShellCredential=e.AuthorizationCodeCredential=e.AzurePipelinesCredential=e.DeviceCodeCredential=e.ManagedIdentityCredential=e.InteractiveBrowserCredential=e.AzureDeveloperCliCredential=e.AzureCliCredential=e.ClientAssertionCredential=e.ClientCertificateCredential=e.EnvironmentCredential=e.DefaultAzureCredential=e.ClientSecretCredential=e.ChainedTokenCredential=e.deserializeAuthenticationRecord=e.serializeAuthenticationRecord=e.AuthenticationRequiredError=e.CredentialUnavailableErrorName=e.CredentialUnavailableError=e.AggregateAuthenticationErrorName=e.AuthenticationErrorName=e.AggregateAuthenticationError=e.AuthenticationError=void 0,e.getDefaultAzureCredential=T,(yi(),w(Fr)).__exportStar(Bs(),e);let t=Id();var n=Vs();Object.defineProperty(e,`AuthenticationError`,{enumerable:!0,get:function(){return n.AuthenticationError}}),Object.defineProperty(e,`AggregateAuthenticationError`,{enumerable:!0,get:function(){return n.AggregateAuthenticationError}}),Object.defineProperty(e,`AuthenticationErrorName`,{enumerable:!0,get:function(){return n.AuthenticationErrorName}}),Object.defineProperty(e,`AggregateAuthenticationErrorName`,{enumerable:!0,get:function(){return n.AggregateAuthenticationErrorName}}),Object.defineProperty(e,`CredentialUnavailableError`,{enumerable:!0,get:function(){return n.CredentialUnavailableError}}),Object.defineProperty(e,`CredentialUnavailableErrorName`,{enumerable:!0,get:function(){return n.CredentialUnavailableErrorName}}),Object.defineProperty(e,`AuthenticationRequiredError`,{enumerable:!0,get:function(){return n.AuthenticationRequiredError}});var r=fu();Object.defineProperty(e,`serializeAuthenticationRecord`,{enumerable:!0,get:function(){return r.serializeAuthenticationRecord}}),Object.defineProperty(e,`deserializeAuthenticationRecord`,{enumerable:!0,get:function(){return r.deserializeAuthenticationRecord}});var i=Ws();Object.defineProperty(e,`ChainedTokenCredential`,{enumerable:!0,get:function(){return i.ChainedTokenCredential}});var a=yd();Object.defineProperty(e,`ClientSecretCredential`,{enumerable:!0,get:function(){return a.ClientSecretCredential}});var o=Id();Object.defineProperty(e,`DefaultAzureCredential`,{enumerable:!0,get:function(){return o.DefaultAzureCredential}});var s=xd();Object.defineProperty(e,`EnvironmentCredential`,{enumerable:!0,get:function(){return s.EnvironmentCredential}});var c=_d();Object.defineProperty(e,`ClientCertificateCredential`,{enumerable:!0,get:function(){return c.ClientCertificateCredential}});var l=wd();Object.defineProperty(e,`ClientAssertionCredential`,{enumerable:!0,get:function(){return l.ClientAssertionCredential}});var u=Ad();Object.defineProperty(e,`AzureCliCredential`,{enumerable:!0,get:function(){return u.AzureCliCredential}});var d=Od();Object.defineProperty(e,`AzureDeveloperCliCredential`,{enumerable:!0,get:function(){return d.AzureDeveloperCliCredential}});var f=Ld();Object.defineProperty(e,`InteractiveBrowserCredential`,{enumerable:!0,get:function(){return f.InteractiveBrowserCredential}});var p=Dd();Object.defineProperty(e,`ManagedIdentityCredential`,{enumerable:!0,get:function(){return p.ManagedIdentityCredential}});var m=Rd();Object.defineProperty(e,`DeviceCodeCredential`,{enumerable:!0,get:function(){return m.DeviceCodeCredential}});var h=zd();Object.defineProperty(e,`AzurePipelinesCredential`,{enumerable:!0,get:function(){return h.AzurePipelinesCredential}});var g=Bd();Object.defineProperty(e,`AuthorizationCodeCredential`,{enumerable:!0,get:function(){return g.AuthorizationCodeCredential}});var _=Md();Object.defineProperty(e,`AzurePowerShellCredential`,{enumerable:!0,get:function(){return _.AzurePowerShellCredential}});var v=bd();Object.defineProperty(e,`UsernamePasswordCredential`,{enumerable:!0,get:function(){return v.UsernamePasswordCredential}});var y=Nd();Object.defineProperty(e,`VisualStudioCodeCredential`,{enumerable:!0,get:function(){return y.VisualStudioCodeCredential}});var b=Vd();Object.defineProperty(e,`OnBehalfOfCredential`,{enumerable:!0,get:function(){return b.OnBehalfOfCredential}});var x=Td();Object.defineProperty(e,`WorkloadIdentityCredential`,{enumerable:!0,get:function(){return x.WorkloadIdentityCredential}});var S=Hs();Object.defineProperty(e,`logger`,{enumerable:!0,get:function(){return S.logger}});var C=Rs();Object.defineProperty(e,`AzureAuthorityHosts`,{enumerable:!0,get:function(){return C.AzureAuthorityHosts}});function T(){return new t.DefaultAzureCredential}var E=Hd();Object.defineProperty(e,`getBearerTokenProvider`,{enumerable:!0,get:function(){return E.getBearerTokenProvider}})})),Wd=b((e=>{var t=Object.create,n=Object.defineProperty,r=Object.getOwnPropertyDescriptor,i=Object.getOwnPropertyNames,a=Object.getPrototypeOf,o=Object.prototype.hasOwnProperty,s=(e,t,a,s)=>{if(t&&typeof t==`object`||typeof t==`function`)for(var c=i(t),l=0,u=c.length,d;lt[e]).bind(null,d),enumerable:!(s=r(t,d))||s.enumerable});return e},c=(e,r,i)=>(i=e==null?{}:t(a(e)),s(r||!e||!e.__esModule?n(i,`default`,{value:e,enumerable:!0}):i,e));let l=rr();l=c(l);let u=T(`fs/promises`);u=c(u);let d=T(`path`);d=c(d);let f=T(`os`);f=c(f);let p=Pr(),m=Is(),h=Ls(),g=Ud(),_=T(`node:util`);async function v(e){let t=await u.mkdtemp(d.join(f.tmpdir(),`bicep-`));return await p.Bicep.install(t,e)}async function y(e,t,n,r){let i=await w(await v(r),t=>t.compileParams({path:e,parameterOverrides:n??{}}),t);if(D(i.diagnostics,t),!i.success)throw`Failed to compile Bicep parameters file: ${e}`;return{parameters:i.parameters,template:i.template,templateSpecId:i.templateSpecId}}async function b(e,t,n){let r=await w(await v(n),t=>t.compile({path:e}),t);if(D(r.diagnostics,t),!r.success)throw`Failed to compile Bicep file: ${e}`;return{template:r.contents}}async function x(e){let{parametersFile:t,parameters:n}=e,r=t?JSON.parse(await u.readFile(t,`utf8`)):{parameters:{}};for(let[e,t]of Object.entries(n??{}))r.parameters[e]={value:t};return JSON.stringify(r)}async function S(e,t){let{parametersFile:n,templateFile:r}=e;if(n&&d.extname(n).toLowerCase()===`.bicepparam`)return C(await y(n,t,e.parameters,e.bicepVersion));if(n&&d.extname(n).toLowerCase()!==`.json`)throw Error(`Unsupported parameters file type: ${n}`);let i=await x(e);if(r&&d.extname(r).toLowerCase()===`.bicep`){let{template:n}=await b(r,t,e.bicepVersion);return C({template:n,parameters:i})}if(r&&d.extname(r).toLowerCase()!==`.json`)throw Error(`Unsupported template file type: ${r}`);if(!r)throw Error(`Template file is required`);return C({template:await u.readFile(r,`utf8`),parameters:i})}function C(e){let{parameters:t,template:n,templateSpecId:r}=e;return{parametersContents:t?JSON.parse(t):void 0,templateContents:n?JSON.parse(n):void 0,templateSpecId:r}}async function w(e,t,n){let r=await p.Bicep.initialize(e);try{let i=await r.version();return n.logInfo(`Installed Bicep version ${i} to ${e}`),await t(r)}finally{r.dispose()}}function E(e){return d.resolve(e)}function D(e,t){for(let n of e){let e=`${n.source}(${n.range.start.line+1},${n.range.start.char+1}) : ${n.level} ${n.code}: ${n.message}`;n.level===`Error`&&t.logError(e),n.level===`Warning`&&t.logWarning(e),n.level===`Info`&&t.logInfo(e)}}function O(e,t){return B(e,t,void 0,!0)}function k(e,t){return B(e,t,void 0,!1)}function A(e,t,n){return B(e,n,t,!0)}function j(e,t,n){return B(e,n,t,!1)}function M(e,t){let n=k(e,t);if(n)return E(n)}function N(e,t){let n=k(e,t);if(!n)return!1;if(n.toLowerCase()===`true`)return!0;if(n.toLowerCase()===`false`)return!1;throw Error(`Action input '${e}' must be a boolean value`)}function ee(e,t){let n=k(e,t);return n?z(n):void 0}function P(e,t,n){let r=ee(e,n);if(!r)return;let i=t;for(let n of r)if(i.indexOf(n)===-1)throw Error(`Action input '${e}' must be one of the following values: '${t.join(`', '`)}'`);return r}function F(e,t){let n=k(e,t);if(!n)return;let r=L(n)??R(n);if(typeof r!=`object`)throw Error(`Action input '${e}' must be a valid JSON or YAML object`);return r}function I(e,t){let n=F(e,t);if(n)return Object.keys(n).forEach(t=>{if(typeof n[t]!=`string`)throw Error(`Action input '${e}' must be a valid JSON or YAML object containing only string values`)}),n}function L(e){try{return JSON.parse(e)}catch{return}}function R(e){try{return l.parse(e)}catch{return}}function z(e){return e.split(`,`).map(e=>e.trim()).filter(e=>e.length>0)}function B(e,t,n,r=!0){let i=t.getInput(e)?.trim();if(!i){if(r)throw Error(`Action input '${e}' is required but not provided`);return}if(n&&!n.includes(i))throw Error(`Action input '${e}' must be one of the following values: '${n.join(`', '`)}'`);return i}function V(e,t){let n=A(t.type,[`deployment`,`deploymentStack`],e),r=k(t.name,e),i=k(t.location,e),a=M(t.templateFile,e),o=M(t.paramtersFile,e),s=F(t.parameters,e),c=k(t.bicepVersion,e),l=k(t.description,e),u=I(t.tags,e),d=ee(t.maskedOutputs,e),f=j(t.environment,[`azureCloud`,`azureChinaCloud`,`azureGermanCloud`,`azureUSGovernment`],e)??`azureCloud`;switch(n){case`deployment`:return{type:n,name:r,location:i,templateFile:a,parametersFile:o,parameters:s,bicepVersion:c,tags:u,maskedOutputs:d,environment:f,operation:A(t.operation,[`create`,`validate`,`whatIf`],e),scope:te(e,t),whatIf:{excludeChangeTypes:P(t.whatIfExcludeChangeTypes,[`create`,`delete`,`modify`,`deploy`,`noChange`,`ignore`,`unsupported`],e)},validationLevel:j(t.validationLevel,[`provider`,`template`,`providerNoRbac`],e)};case`deploymentStack`:return{type:n,name:r,location:i,templateFile:a,parametersFile:o,parameters:s,bicepVersion:c,description:l,tags:u,maskedOutputs:d,environment:f,operation:A(t.operation,[`create`,`validate`,`delete`],e),scope:H(e,t),actionOnUnManage:{resources:A(t.actionOnUnmanageResources,[`delete`,`detach`],e),resourceGroups:j(t.actionOnUnmanageResourceGroups,[`delete`,`detach`],e),managementGroups:j(t.actionOnUnmanageManagementGroups,[`delete`,`detach`],e)},bypassStackOutOfSyncError:N(t.bypasStackOutOfSyncError,e),denySettings:{mode:A(t.denySettingsMode,[`denyDelete`,`denyWriteAndDelete`,`none`],e),excludedActions:ee(t.denySettingsExcludedActions,e),excludedPrincipals:ee(t.denySettingsExcludedPrincipals,e),applyToChildScopes:N(t.denySettingsApplyToChildScopes,e)}}}}function te(e,t){let n=A(t.scope,[`tenant`,`managementGroup`,`subscription`,`resourceGroup`],e),r=k(t.tenantId,e);switch(n){case`tenant`:return{type:n,tenantId:r};case`managementGroup`:return{type:n,tenantId:r,managementGroup:O(t.managementGroupId,e)};case`subscription`:return{type:n,tenantId:r,subscriptionId:O(t.subscriptionId,e)};case`resourceGroup`:return{type:n,tenantId:r,subscriptionId:O(t.subscriptionId,e),resourceGroup:O(t.resourceGroupName,e)}}}function H(e,t){let n=A(t.scope,[`managementGroup`,`subscription`,`resourceGroup`],e),r=k(t.tenantId,e);switch(n){case`managementGroup`:return{type:n,tenantId:r,managementGroup:O(t.managementGroupId,e)};case`subscription`:return{type:n,tenantId:r,subscriptionId:O(t.subscriptionId,e)};case`resourceGroup`:return{type:n,tenantId:r,subscriptionId:O(t.subscriptionId,e),resourceGroup:O(t.resourceGroupName,e)}}}let ne=`gh-azure-bicep-deploy`,re=`00000000-0000-0000-0000-000000000000`,U={azureCloud:`https://management.azure.com`,azureChinaCloud:`https://management.chinacloudapi.cn`,azureGermanCloud:`https://management.microsoftazure.de`,azureUSGovernment:`https://management.usgovcloudapi.net`};function ie(e,t,n,r){return new m.ResourceManagementClient(G(r),n??re,{userAgentOptions:{userAgentPrefix:ne},additionalPolicies:[ae(t)],apiVersion:`2024-03-01`,endpoint:U[e.environment]})}function W(e,t,n,r){return new h.DeploymentStacksClient(G(r),n??re,{userAgentOptions:{userAgentPrefix:ne},additionalPolicies:[ae(t)],endpoint:U[e.environment]})}function ae(e){return{position:`perCall`,policy:{name:`debugLoggingPolicy`,async sendRequest(t,n){if(e.isDebugEnabled()&&(e.debug(`Request: ${t.method} ${t.url}`),t.body)){let n=JSON.parse(t.body.toString());e.debug(`Body: ${JSON.stringify(n,null,2)}`)}let r=await n(t);if(e.isDebugEnabled()){if(e.debug(`Response: ${r.status}`),r.bodyAsText){let t=JSON.parse(r.bodyAsText);e.debug(`Body: ${JSON.stringify(t,null,2)}`)}let t=r.headers.get(`x-ms-correlation-request-id`);e.debug(`CorrelationId: ${t}`);let n=r.headers.get(`x-ms-request-id`);e.debug(`ActivityId: ${n}`)}return r}}}}function G(e){return new g.ChainedTokenCredential(new g.EnvironmentCredential,new g.AzureCliCredential({tenantId:e}),new g.AzurePowerShellCredential({tenantId:e}))}function oe(e){return typeof e==`object`&&!!e&&!Array.isArray(e)&&!(e instanceof RegExp)&&!(e instanceof Date)}function se(e){if(oe(e)){let t=typeof e.name==`string`,n=typeof e.message==`string`;return t&&n}return!1}let ce=_.inspect.custom,le=`REDACTED`,ue=`x-ms-client-request-id.x-ms-return-client-request-id.x-ms-useragent.x-ms-correlation-request-id.x-ms-request-id.client-request-id.ms-cv.return-client-request-id.traceparent.Access-Control-Allow-Credentials.Access-Control-Allow-Headers.Access-Control-Allow-Methods.Access-Control-Allow-Origin.Access-Control-Expose-Headers.Access-Control-Max-Age.Access-Control-Request-Headers.Access-Control-Request-Method.Origin.Accept.Accept-Encoding.Cache-Control.Connection.Content-Length.Content-Type.Date.ETag.Expires.If-Match.If-Modified-Since.If-None-Match.If-Unmodified-Since.Last-Modified.Pragma.Request-Id.Retry-After.Server.Transfer-Encoding.User-Agent.WWW-Authenticate`.split(`.`),de=[`api-version`],fe=new class{constructor({additionalAllowedHeaderNames:e=[],additionalAllowedQueryParameters:t=[]}={}){e=ue.concat(e),t=de.concat(t),this.allowedHeaderNames=new Set(e.map(e=>e.toLowerCase())),this.allowedQueryParameters=new Set(t.map(e=>e.toLowerCase()))}sanitize(e){let t=new Set;return JSON.stringify(e,(e,n)=>{if(n instanceof Error)return{...n,name:n.name,message:n.message};if(e===`headers`)return this.sanitizeHeaders(n);if(e===`url`)return this.sanitizeUrl(n);if(e===`query`)return this.sanitizeQuery(n);if(e!==`body`&&e!==`response`&&e!==`operationSpec`){if(Array.isArray(n)||oe(n)){if(t.has(n))return`[Circular]`;t.add(n)}return n}},2)}sanitizeUrl(e){if(typeof e!=`string`||e===null||e===``)return e;let t=new URL(e);if(!t.search)return e;for(let[e]of t.searchParams)this.allowedQueryParameters.has(e.toLowerCase())||t.searchParams.set(e,le);return t.toString()}sanitizeHeaders(e){let t={};for(let n of Object.keys(e))this.allowedHeaderNames.has(n.toLowerCase())?t[n]=e[n]:t[n]=le;return t}sanitizeQuery(e){if(typeof e!=`object`||!e)return e;let t={};for(let n of Object.keys(e))this.allowedQueryParameters.has(n.toLowerCase())?t[n]=e[n]:t[n]=le;return t}};var pe=class e extends Error{constructor(t,n={}){super(t),this.name=`RestError`,this.code=n.code,this.statusCode=n.statusCode,Object.defineProperty(this,`request`,{value:n.request,enumerable:!1}),Object.defineProperty(this,`response`,{value:n.response,enumerable:!1});let r=this.request?.agent?{maxFreeSockets:this.request.agent.maxFreeSockets,maxSockets:this.request.agent.maxSockets}:void 0;Object.defineProperty(this,ce,{value:()=>`RestError: ${this.message} \n ${fe.sanitize({...this,request:{...this.request,agent:r},response:this.response})}`,enumerable:!1}),Object.setPrototypeOf(this,e.prototype)}};pe.REQUEST_SEND_ERROR=`REQUEST_SEND_ERROR`,pe.PARSE_ERROR=`PARSE_ERROR`;function me(e){return e instanceof pe?!0:se(e)&&e.name===`RestError`}function he(e){return me(e)}let ge=`azure-bicep-deploy`;function _e(e,t,n){let{tenantId:r}=t;return ie(e,n,`subscriptionId`in t?t.subscriptionId:void 0,r)}function ve(e,t,n){let{tenantId:r}=t;return W(e,n,`subscriptionId`in t?t.subscriptionId:void 0,r)}function ye(){return{onResponse:(e,t)=>{if(t&&t.error&&t.error.code&&t.error.message)throw new be(t,e)}}}var be=class{constructor(e,t){this.details=e,this.response=t}};function xe(e){if(!e.location)throw Error(`Location is required`);return e.location}function Se(e,t){if(e.length!==0){t.logInfo(`Diagnostics returned by the API`);for(let n of e){let e=`[${n.level}] ${n.code}: ${n.message}`;switch(n.level.toLowerCase()){case`error`:t.logError(e);break;case`warning`:t.logWarning(e);break;default:t.logInfo(e);break}}}}function Ce(e,t){let n=we(t);if(n&&n!==e.scope.type)throw Error(`The target scope ${n} does not match the deployment scope ${e.scope.type}.`)}function we(e){let t=e.templateContents??{},n=t.metadata?._generator?.name,r=t.$schema;if(!n)return;let i=/https:\/\/schema\.management\.azure\.com\/schemas\/[0-9a-zA-Z-]+\/([a-zA-Z]+)Template\.json#?/.exec(r);switch(i?i[1].toLowerCase():null){case`tenantdeployment`:return`tenant`;case`managementgroupdeployment`:return`managementGroup`;case`subscriptiondeployment`:return`subscription`;case`deployment`:return`resourceGroup`;default:throw Error(`Failed to determine deployment scope from Bicep file.`)}}async function Te(e,t,n){try{return await e()}catch(e){if(he(e)){let r=e.response?.headers.get(`x-ms-correlation-request-id`);n.logError(`Request failed. CorrelationId: ${r}`);let{error:i}=e.details;if(i){t(i);return}}if(e instanceof be){let r=e.response?.headers.get(`x-ms-correlation-request-id`);n.logError(`Request failed. CorrelationId: ${r}`);let{error:i}=e.details;if(i){t(i);return}}throw e}}async function Ee(e,t,n){let r=e.name??ge,i=e.scope,a=_e(e,i,n),o=ke(e,t);switch(i.type){case`resourceGroup`:return await a.deployments.beginCreateOrUpdateAndWait(i.resourceGroup,r,o,ye());case`subscription`:return await a.deployments.beginCreateOrUpdateAtSubscriptionScopeAndWait(r,{...o,location:xe(e)},ye());case`managementGroup`:return await a.deployments.beginCreateOrUpdateAtManagementGroupScopeAndWait(i.managementGroup,r,{...o,location:xe(e)},ye());case`tenant`:return await a.deployments.beginCreateOrUpdateAtTenantScopeAndWait(r,{...o,location:xe(e)},ye())}}async function De(e,t,n){let r=e.name??ge,i=e.scope,a=_e(e,i,n),o=ke(e,t);switch(i.type){case`resourceGroup`:return await a.deployments.beginValidateAndWait(i.resourceGroup,r,o);case`subscription`:return await a.deployments.beginValidateAtSubscriptionScopeAndWait(r,{...o,location:xe(e)});case`managementGroup`:return await a.deployments.beginValidateAtManagementGroupScopeAndWait(i.managementGroup,r,{...o,location:xe(e)});case`tenant`:await a.deployments.beginValidateAtTenantScopeAndWait(r,{...o,location:xe(e)})}}async function Oe(e,t,n){let r=e.name??ge,i=e.scope,a=_e(e,i,n),o=ke(e,t);switch(i.type){case`resourceGroup`:return await a.deployments.beginWhatIfAndWait(i.resourceGroup,r,o);case`subscription`:return await a.deployments.beginWhatIfAtSubscriptionScopeAndWait(r,{...o,location:xe(e)});case`managementGroup`:return await a.deployments.beginWhatIfAtManagementGroupScopeAndWait(i.managementGroup,r,{...o,location:xe(e)});case`tenant`:return await a.deployments.beginWhatIfAtTenantScopeAndWait(r,{...o,location:xe(e)})}}function ke(e,t){let{templateContents:n,templateSpecId:r,parametersContents:i}=t;return{location:e.location,properties:{mode:`Incremental`,template:n,templateLink:r?{id:r}:void 0,parameters:i.parameters,expressionEvaluationOptions:{scope:`inner`},validationLevel:e.validationLevel},tags:e.tags}}async function Ae(e,t,n){let r=e.name??ge,i=e.scope,a=ve(e,i,n),o=Ne(e,t);switch(i.type){case`resourceGroup`:return await a.deploymentStacks.beginCreateOrUpdateAtResourceGroupAndWait(i.resourceGroup,r,o,ye());case`subscription`:return await a.deploymentStacks.beginCreateOrUpdateAtSubscriptionAndWait(r,{...o,location:xe(e)},ye());case`managementGroup`:return await a.deploymentStacks.beginCreateOrUpdateAtManagementGroupAndWait(i.managementGroup,r,{...o,location:xe(e)},ye())}}async function je(e,t,n){let r=e.name??ge,i=e.scope,a=ve(e,i,n),o=Ne(e,t);switch(i.type){case`resourceGroup`:return await a.deploymentStacks.beginValidateStackAtResourceGroupAndWait(i.resourceGroup,r,o);case`subscription`:return await a.deploymentStacks.beginValidateStackAtSubscriptionAndWait(r,{...o,location:xe(e)});case`managementGroup`:return await a.deploymentStacks.beginValidateStackAtManagementGroupAndWait(i.managementGroup,r,{...o,location:xe(e)})}}async function Me(e,t){let n=e.name??ge,r=e.scope,i=ve(e,r,t),a=Pe(e);switch(r.type){case`resourceGroup`:return await i.deploymentStacks.beginDeleteAtResourceGroupAndWait(r.resourceGroup,n,a);case`subscription`:return await i.deploymentStacks.beginDeleteAtSubscriptionAndWait(n,a);case`managementGroup`:return await i.deploymentStacks.beginDeleteAtManagementGroupAndWait(r.managementGroup,n,a)}}function Ne(e,t){let{templateContents:n,templateSpecId:r,parametersContents:i}=t;return{properties:{template:n,templateLink:r?{id:r}:void 0,parameters:i.parameters,description:e.description,actionOnUnmanage:e.actionOnUnManage,denySettings:e.denySettings,bypassStackOutOfSyncError:e.bypassStackOutOfSyncError},tags:e.tags}}function Pe(e){return{unmanageActionResources:e.actionOnUnManage.resources,unmanageActionResourceGroups:e.actionOnUnManage.resourceGroups,unmanageActionManagementGroups:e.actionOnUnManage.managementGroups,bypassStackOutOfSyncError:e.bypassStackOutOfSyncError}}let Fe=function(e){return e.Reset=`\x1B[0m`,e.Red=`\x1B[31m`,e.Green=`\x1B[32m`,e.Yellow=`\x1B[33m`,e.Blue=`\x1B[34m`,e.Magenta=`\x1B[35m`,e.Cyan=`\x1B[36m`,e.White=`\x1B[37m`,e}({}),Ie={"\x1B[0m":`Reset`,"\x1B[31m":`Red`,"\x1B[32m":`Green`,"\x1B[33m":`Yellow`,"\x1B[34m":`Blue`,"\x1B[35m":`Magenta`,"\x1B[36m":`Cyan`,"\x1B[37m":`White`};function Le(e,t){return e.split(` +`).map(e=>`${t}${e}${Fe.Reset}`).join(` +`)}function Re(e){for(let t in Ie)e=e.replaceAll(t,``);return e}function ze(e,t){switch(e){case`off`:return``;case`ansii`:return t;case`debug`:return`<${Ie[t].toUpperCase()}>`}return t}var K=class{constructor(e){this.colorMode=e,this.colorStack=[],this.buffer=``}append(e,t){return t&&this.pushColor(t),this.buffer+=e,t&&this.popColor(),this}appendLine(e=``){return this.append(e+` +`)}withColorScope(e,t){this.pushColor(e),t(),this.popColor()}pushColor(e){this.colorStack.push(e),this.buffer+=ze(this.colorMode,e)}popColor(){this.colorStack.pop();let e=this.colorStack[this.colorStack.length-1]??Fe.Reset;this.buffer+=ze(this.colorMode,e)}build(){return this.buffer}},Be=function(e){return e.WhiteSpace=` `,e.Quote=`"`,e.Colon=`:`,e.LeftSquareBracket=`[`,e.RightSquareBracket=`]`,e.Dot=`.`,e.Equal=`=`,e.Asterisk=`*`,e.Plus=`+`,e.Minus=`-`,e.Tilde=`~`,e.ExclamationPoint=`!`,e.Cross=`x`,e}(Be||{});let Ve={Create:Fe.Green,Delete:Fe.Red,Modify:Fe.Magenta,Deploy:Fe.Blue,NoChange:Fe.Reset,Ignore:Fe.White,Unsupported:Fe.White},q={Create:Fe.Green,Delete:Fe.Red,Modify:Fe.Magenta,Array:Fe.Magenta,NoEffect:Fe.White},He={Create:Be.Plus,Delete:Be.Minus,Modify:Be.Tilde,Deploy:Be.ExclamationPoint,NoChange:Be.Equal,Ignore:Be.Asterisk,Unsupported:Be.Cross},Ue={Create:Be.Plus,Delete:Be.Minus,Modify:Be.Tilde,Array:Be.Tilde,NoEffect:Be.Cross},J={Delete:0,Create:1,Deploy:2,Modify:3,NoChange:4,Unsupported:5,Ignore:6},We={Delete:0,Create:1,Modify:2,Array:2,NoEffect:3},Ge={Array:`Modify`,Create:`Create`,Delete:`Delete`,Modify:`Modify`,NoEffect:`NoChange`};function Y(e,t){let n=new K(t);return vt(n,e),n.build()}function Ke(e,t){let n=new K(t);return qe(n),Je(n,e.changes??[]),Ze(n,e.changes??[]),Ye(n,e.changes??[]),n.build()}function qe(e){e.appendLine(`Note: The result may contain false positive predictions (noise). +You can help us improve the accuracy of the result by opening an issue here: https://aka.ms/WhatIfIssues`),e.appendLine()}function Je(e,t){if(!t.length)return;let n=new Set;function r(e){if(e.length)for(let t of e){let e=t.propertyChangeType;n.add(Ge[e]),r(t.children??[])}}for(let e of t)n.add(e.changeType),r(e.delta??[]);let i=Array.from(n).sort((e,t)=>J[e]-J[t]);e.append(`Resource and property changes are indicated with `),e.appendLine(i.length===1?`this symbol:`:`these symbols:`);for(let t of i){let n=He[t],r=Ve[t];Tt(e),e.append(n,r).append(Be.WhiteSpace),e.appendLine(t.charAt(0).toUpperCase()+t.slice(1))}}function Ye(e,t){if(e.appendLine().append(`Resource changes: `),!t.length){e.append(`no change.`);return}let n=Nt(Mt(t.sort((e,t)=>J[e.changeType]-J[t.changeType]),e=>e.changeType)).map(([e,t])=>({key:e,count:t.length})).filter(e=>e.count>0).map(e=>Xe(e.key,e.count));e.append(n.join(`, `)).append(`.`)}function Xe(e,t){switch(e){case`Create`:return`${t} to create`;case`Delete`:return`${t} to delete`;case`Deploy`:return`${t} to deploy`;case`Modify`:return`${t} to modify`;case`Ignore`:return`${t} to ignore`;case`NoChange`:return`${t} no change`;case`Unsupported`:return`${t} unsupported`;default:throw Error(`Invalid ChangeType: ${e}`)}}function Ze(e,t){if(!t.length)return;let n=new Set(t.map(mt)).size,r=Mt(t.sort((e,t)=>mt(e).localeCompare(mt(t))),mt);e.appendLine(),e.appendLine(`The deployment will update the following ${n===1?`scope:`:`scopes:`}`);for(let[,t]of Nt(r))Qe(e,pt(t[0]),t)}function Qe(e,t,n){e.appendLine().appendLine(`Scope: ${t}`);let r=n.sort((e,t)=>J[e.changeType]-J[t.changeType]),i=Mt(r,e=>e.changeType);for(let[t,n]of Nt(i))e.withColorScope(Ve[t],()=>{for(let t of n)$e(e,t,t===r[r.length-1])})}function $e(e,t,n){let r=t.changeType,i=ht(t),a=ft(t);if(e.appendLine(),et(e,r,i,a),r===`Create`&&t.after)vt(e,t.after,void 0,void 0,2);else if(r===`Delete`&&t.before)vt(e,t.before,void 0,void 0,2);else if(t.delta){let n=t.delta;e.withColorScope(Fe.Reset,()=>{e.appendLine(),rt(e,jt(n))})}else n&&e.appendLine()}function et(e,t,n,r){Ct(e,n,0,1,e=>tt(e,t),e=>nt(e,r))}function tt(e,t){let n=He[t];e.append(n).append(Be.WhiteSpace)}function nt(e,t){t&&e.withColorScope(Fe.Reset,()=>{e.append(Be.WhiteSpace),e.append(Be.LeftSquareBracket),e.append(t),e.append(Be.RightSquareBracket)})}function rt(e,t,n=2){let r=gt(t);for(let i of t)it(e,i,r,n),e.appendLine()}function it(e,t,n,r){let i=t.propertyChangeType,a=t.before,o=t.after,s=t.children||[];switch(i){case`Create`:at(e,t,t.after,n,r),ct(e,o,r+1);break;case`Delete`:at(e,t,t.before,n,r),X(e,a,r+1);break;case`Modify`:at(e,t,t.before,n,r),ut(e,a,o,s,r+1);break;case`Array`:at(e,t,t.children,n,r),dt(e,t,s,r+1);break;case`NoEffect`:at(e,t,t.after,n,r),st(e,o,r+1);break;default:throw Error(`Unknown property change type: ${i}.`)}}function at(e,t,n,r,i){if(!t.path)return;let a=t.path,o=t.propertyChangeType,s=r-a.length+1;kt(n)?s=1:(At(n)||o===`Modify`&&t.children)&&(s=0),Ct(e,a,s,i,e=>ot(e,o),wt)}function ot(e,t){let n=Ue[t],r=q[t];e.append(n,r).append(Be.WhiteSpace)}function st(e,t,n){e.withColorScope(q.NoEffect,()=>{vt(e,t,void 0,void 0,n)})}function ct(e,t,n){e.withColorScope(q.Create,()=>{vt(e,t,void 0,void 0,n)})}function X(e,t,n){e.withColorScope(q.Delete,()=>{vt(e,t,void 0,void 0,n)})}function lt(e){if(typeof e!=`object`||!e||Object.keys(e).length===0)return e;let t=``,n=e,r=Object.keys(n);for(let i=0;i0?(e.appendLine().appendLine(),rt(e,jt(r),i)):(X(e,t,i),At(t)?(e.appendLine(),Tt(e,i)):e.append(Be.WhiteSpace),e.append(`=>`),At(n)||e.append(Be.WhiteSpace),ct(e,n,i),!Ot(t)&&Ot(n)&&e.appendLine())}function dt(e,t,n,r){if(t.path||(--r,Tt(e,r)),!n||n.length===0){e.appendLine(`[]`);return}e.append(Be.LeftSquareBracket).appendLine(),rt(e,jt(n),r),Tt(e,r),e.append(Be.RightSquareBracket)}function ft(e){if(e.before)return e.before.apiVersion;if(e.after)return e.after.apiVersion}function pt(e){if(!e.resourceId)throw Error(`Extensible resource what-if is not currently supported by this Action. Please raise an issue: https://github.com/Azure/bicep-deploy/issues.`);let[t]=Pt(e.resourceId);return t}function mt(e){return pt(e).toUpperCase()}function ht(e){if(!e.resourceId)throw Error(`Extensible resource what-if is not currently supported by this Action. Please raise an issue: https://github.com/Azure/bicep-deploy/issues.`);let[,t]=Pt(e.resourceId);return t}function gt(e){if(!e||e.length===0)return 0;let t=e.filter(_t).map(e=>e.path.length);return Math.max(...t,0)}function _t(e){let t=e.propertyChangeType;return t===`Create`?Ot(e.after):t===`Delete`||t===`Modify`?Ot(e.before):!e.children}function vt(e,t,n=``,r=0,i=0){if(t=lt(t),Ot(t)){let a=r-n.length+1;St(e,n,a>0?a:0,i),yt(e,t)}else if(kt(t))St(e,n,1,i),bt(e,t,i);else if(At(t))xt(e,t,n,r,i);else throw Error(`Invalid JSON value: ${t}`)}function yt(e,t){t===null?e.append(`null`):typeof t==`boolean`?e.append(String(t).toLowerCase()):typeof t==`string`?e.append(Be.Quote).append(t).append(Be.Quote):Array.isArray(t)&&t.length===0?e.append(`[]`):typeof t==`object`?e.append(`{}`):e.append(String(t))}function bt(e,t,n){e.append(Be.LeftSquareBracket,Fe.Reset).appendLine();let r=Et(t);t.forEach((t,i)=>{let a=String(i);At(t)?(St(e,a,0,n+1),xt(e,t,void 0,void 0,n+1)):vt(e,t,a,r,n+1),e.appendLine()}),Tt(e,n),e.append(Be.RightSquareBracket,Fe.Reset)}function xt(e,t,n=``,r=0,i=0){let a=!n;n||(e.appendLine().appendLine(),r=Dt(t),i+=1);for(let[o,s]of Nt(t))vt(e,s,a?o:`${n}${Be.Dot}${o}`,r,i),At(s)||e.appendLine()}function St(e,t,n,r){Ct(e,t,n,r,void 0,wt)}function Ct(e,t,n,r,i,a){t&&(Tt(e,r),i&&i(e),e.append(t),a&&a(e),e.append(` `.repeat(n)))}function wt(e){e.append(Be.Colon,Fe.Reset)}function Tt(e,t=1){e.append(` `.repeat(2*t))}function Et(e){let t=0;return e.forEach((e,n)=>{Ot(e)&&(t=n)}),String(t).length}function Dt(e){let t=0;for(let[n,r]of Nt(e)){if(kt(r))continue;let e=At(r)?n.length+1+Dt(r):n.length;t=Math.max(t,e)}return t}function Ot(e){return e==null||typeof e==`boolean`||typeof e==`number`||typeof e==`string`||Array.isArray(e)&&e.length===0||typeof e==`object`&&e&&Object.keys(e).length===0}function kt(e){return Array.isArray(e)&&e.length>0}function At(e){return typeof e==`object`&&!!e&&Object.keys(e).length>0}function jt(e){return e.slice().sort((e,t)=>We[e.propertyChangeType]-We[t.propertyChangeType]||e.path.localeCompare(t.path))}function Mt(e,t){return e.reduce((e,n)=>{let r=t(n);return(e[r]=e[r]||[]).push(n),e},{})}function Nt(e){return Object.entries(e)}function Pt(e){let t=e.lastIndexOf(`/providers/`);if(t===-1){let t=[...e.matchAll(/^(\/subscriptions\/[^/]+)\/(resourceGroups\/[^/]+)$/gi)];return t[0]?[t[0][1],t[0][2]]:[`/`,e.substring(1)]}return[e.substring(0,t),e.substring(t+11)]}function Ft(e,t,n){if(n)for(let r of Object.keys(n)){let i=n[r];t.setOutput(r,i.value),e.maskedOutputs&&e.maskedOutputs.some(e=>e.toLowerCase()===r.toLowerCase())&&t.setSecret(i.value)}}async function It(e,t,n,r){try{switch(Ce(e,t),e.type){case`deployment`:switch(e.operation){case`create`:await Te(async()=>{Ft(e,r,(await Ee(e,t,n))?.properties?.outputs)},e=>{n.logError(JSON.stringify(e,null,2)),r.setFailed(`Create failed`)},n);break;case`validate`:await Te(async()=>{Se((await De(e,t,n))?.properties?.diagnostics??[],n)},e=>{n.logError(JSON.stringify(e,null,2)),r.setFailed(`Validation failed`)},n);break;case`whatIf`:{let r=await Oe(e,t,n),i=Ke(r,`ansii`);n.logInfoRaw(i),Se(r.diagnostics??[],n);break}}break;case`deploymentStack`:switch(e.operation){case`create`:await Te(async()=>{Ft(e,r,(await Ae(e,t,n))?.properties?.outputs)},e=>{n.logError(JSON.stringify(e,null,2)),r.setFailed(`Create failed`)},n);break;case`validate`:await Te(()=>je(e,t,n),e=>{n.logError(JSON.stringify(e,null,2)),r.setFailed(`Validation failed`)},n);break;case`delete`:await Me(e,n);break}break}}catch(e){if(he(e)&&e.response?.bodyAsText){let t=e.response.headers.get(`x-ms-correlation-request-id`);n.logError(`Request failed. CorrelationId: ${t}`);let r=JSON.parse(e.response.bodyAsText);n.logError(JSON.stringify(r,null,2))}throw r.setFailed(`Operation failed`),e}}e.Color=Fe,e.ColorStringBuilder=K,e.CustomPollingError=be,e.colorize=Le,e.defaultName=ge,e.deploymentCreate=Ee,e.deploymentValidate=De,e.deploymentWhatIf=Oe,e.execute=It,e.formatJson=Y,e.formatWhatIfOperationResult=Ke,e.getColorString=ze,e.getCreateOperationOptions=ye,e.getDeploymentClient=_e,e.getJsonParameters=x,e.getOptionalBooleanInput=N,e.getOptionalDictionaryInput=F,e.getOptionalEnumArrayInput=P,e.getOptionalEnumInput=j,e.getOptionalFilePath=M,e.getOptionalStringArrayInput=ee,e.getOptionalStringDictionaryInput=I,e.getOptionalStringInput=k,e.getRequiredEnumInput=A,e.getRequiredStringInput=O,e.getStacksClient=ve,e.getTemplateAndParameters=S,e.logDiagnostics=Se,e.parse=C,e.parseConfig=V,e.removeColors=Re,e.requireLocation=xe,e.resolvePath=E,e.setOutputs=Ft,e.stackCreate=Ae,e.stackDelete=Me,e.stackValidate=je,e.tryWithErrorHandling=Te,e.validateFileScope=Ce})),Gd,Kd,qd,Jd,Yd=y((()=>{Gd=C(Bt()),Kd=class{constructor(){this.getInput=e=>Gd.getInput(e)}},qd=class{constructor(){this.setOutput=(e,t)=>Gd.setOutput(e,t),this.setFailed=e=>Gd.setFailed(e),this.setSecret=e=>Gd.setSecret(e)}},Jd=class{constructor(){this.type=`type`,this.name=`name`,this.location=`location`,this.templateFile=`template-file`,this.paramtersFile=`parameters-file`,this.parameters=`parameters`,this.bicepVersion=`bicep-version`,this.description=`description`,this.tags=`tags`,this.maskedOutputs=`masked-outputs`,this.environment=`environment`,this.operation=`operation`,this.whatIfExcludeChangeTypes=`what-if-exclude-change-types`,this.validationLevel=`validation-level`,this.actionOnUnmanageResources=`action-on-unmanage-resources`,this.actionOnUnmanageResourceGroups=`action-on-unmanage-resourcegroups`,this.actionOnUnmanageManagementGroups=`action-on-unmanage-managementgroups`,this.bypasStackOutOfSyncError=`bypass-stack-out-of-sync-error`,this.denySettingsMode=`deny-settings-mode`,this.denySettingsExcludedActions=`deny-settings-excluded-actions`,this.denySettingsExcludedPrincipals=`deny-settings-excluded-principals`,this.denySettingsApplyToChildScopes=`deny-settings-apply-to-child-scopes`,this.scope=`scope`,this.tenantId=`tenant-id`,this.managementGroupId=`management-group-id`,this.subscriptionId=`subscription-id`,this.resourceGroupName=`resource-group-name`}}})),Xd,Zd,Qd,$d,ef,tf=y((()=>{Xd=C(Bt()),Zd=Wd(),Qd=e=>Xd.warning(e),$d=e=>Xd.error(e),ef=class{constructor(){this.isDebugEnabled=()=>Xd.isDebug(),this.debug=e=>Xd.debug(e),this.logInfoRaw=e=>Xd.info(e),this.logInfo=e=>this.logInfoRaw((0,Zd.colorize)(e,Zd.Color.Blue)),this.logWarning=e=>Qd((0,Zd.colorize)(e,Zd.Color.Yellow)),this.logError=e=>$d((0,Zd.colorize)(e,Zd.Color.Red))}}}));async function nf(){try{let e=(0,af.parseConfig)(new Kd,new Jd),t=new ef,n=new qd;t.logInfo(`Action config: ${JSON.stringify(e,null,2)}`),await(0,af.execute)(e,await(0,af.getTemplateAndParameters)(e,t),t,n)}catch(e){let t=e instanceof Error?e.message:`${e}`;rf.setFailed(t)}}var rf,af,of=y((()=>{rf=C(Bt()),af=Wd(),Yd(),tf()})),sf=b((()=>{of(),nf()}));export default sf();export{}; +//# sourceMappingURL=index.mjs.map \ No newline at end of file diff --git a/dist/index.mjs.map b/dist/index.mjs.map new file mode 100644 index 0000000..93f62cc --- /dev/null +++ b/dist/index.mjs.map @@ -0,0 +1 @@ +{"version":3,"file":"index.mjs","names":["__createBinding","k","m","o","__setModuleDefault","v","__importStar","os","utils_1","name","s","__createBinding","k","m","o","__setModuleDefault","v","__importStar","crypto","fs","os","utils_1","getProxyUrl","_a","x","tls","http","https","events","util","self","options","i","req","onError","error","socket","keys","j","k","debug","UndiciError","ConnectTimeoutError","HeadersTimeoutError","HeadersOverflowError","BodyTimeoutError","ResponseStatusCodeError","InvalidArgumentError","InvalidReturnValueError","RequestAbortedError","InformationalError","RequestContentLengthMismatchError","ResponseContentLengthMismatchError","ClientDestroyedError","ClientClosedError","SocketError","NotSupportedError","BalancedPoolMissingUpstreamError","HTTPParserError","ResponseExceededMaxSizeError","RequestRetryError","headerNameLowerCasedRecord","i","assert","stream","net","nodeMajor","nodeMinor","v","nop","isBlobLike","Blob","buildURL","stringify","parseURL","InvalidArgumentError","path","parseOrigin","idx","kDestroyed","destroy","err","m","parseHeaders","i","x","n","buffer","upgrade","isDisturbed","kBodyUsed","isErrored","isReadable","ReadableStream","ReadableStreamFrom","throwIfAborted","addAbortListener","toUSVString","parseRangeHeader","kEnumerableProperty","delay","EventEmitter","inherits","i","r","inherits","ReadableStream","PartStream","getLimit","name","EventEmitter","inherits","getLimit","StreamSearch","HeaderParser","self","r","m","h","i","WritableStream","inherits","Dicer","self","r","i","decodeText","decodeText","parseParams","p","i","basename","path","i","Dicer","parseParams","decodeText","getLimit","RE_CHARSET","i","self","contentType","finished","buffer","r","Readable","Decoder","i","p","i","p","Busboy","corsSafeListedMethodsSet","nullBodyStatus","redirectStatusSet","badPortsSet","referrerPolicy","requestRedirect","safeMethodsSet","requestMode","requestCredentials","requestCache","requestBodyHeader","requestDuplex","forbiddenMethodsSet","subresourceSet","DOMException","structuredClone","getGlobalOrigin","assert","crypto","responseLocationURL","redirectStatusSet","isValidHeaderValue","requestCurrentURL","request","requestBadPort","urlIsHttpHttpsScheme","isErrorLike","isValidReasonPhrase","i","c","isValidHTTPToken","isValidHeaderName","setRequestReferrerPolicyOnRedirect","crossOriginResourcePolicyCheck","corsCheck","TAOCheck","appendFetchMetadata","appendRequestOriginHeader","urlHasHttpsScheme","sameOrigin","coarsenedSharedCurrentTime","performance","createOpaqueTimingInfo","makePolicyContainer","clonePolicyContainer","determineRequestsReferrer","globalOrigin","getGlobalOrigin","bytesMatch","tryUpgradeRequestToAPotentiallyTrustworthyURL","A","B","createDeferredPromise","isAborted","isCancelled","normalizeMethodRecord","normalizeMethod","serializeJavascriptValueToJSONString","makeIterator","name","values","kind","fullyReadBody","e","readAllBytes","ReadableStream","isReadableStreamLike","stream","isomorphicDecode","readableStreamClose","isomorphicEncode","isUint8Array","urlIsLocal","hasOwn","webidl","plural","context","V","I","x","r","n","seq","O","types","keys","i","toUSVString","T","assert","encoder","dataURLProcessor","URLSerializer","collectASequenceOfCodePointsFast","parseMIMEType","i","binary","atob","serializeAMimeType","name","NativeFile","File","Blob","webidl","n","t","d","parseMIMEType","serializeAMimeType","kState","FileLike","kEnumerableProperty","V","isBlobLike","types","s","isFileLike","UndiciFile","NativeFile","File","FormData","webidl","kState","isBlobLike","name","toUSVString","entry","makeIterator","Blob","util","assert","crypto","ReadableStream","File","textEncoder","extractBody","stream","isBlobLike","readableStreamClose","isArrayBuffer","name","chunk","ReadableStreamFrom","isErrored","safelyExtractBody","cloneBody","consumeBody","kBodyUsed","DOMException","serializeAMimeType","Blob","kState","contentType","FormData","webidl","mixinBody","createDeferredPromise","error","e","fullyReadBody","buffer","parseMIMEType","assert","util","channels","extractBody","diagnosticsChannel","Request","path","InvalidArgumentError","upgrade","i","keys","contentType","abort","resume","error","kHTTP1BuildRequest","kHTTP2BuildRequest","request","kHTTP2CopyHeaders","NotSupportedError","Dispatcher","Dispatcher","DispatcherBase","kInterceptors","i","InvalidArgumentError","ClientDestroyedError","kClose","err","kDestroy","kDispatch","net","assert","util","tls","buildConnector","InvalidArgumentError","connect","session","onConnectTimeout","utils_1","i","c","util","assert","EE","kBody","RedirectHandler","InvalidArgumentError","abort","error","resume","path","i","name","RedirectHandler","createRedirectInterceptor","assert","net","http","util","Request","DispatcherBase","buildConnector","kClosedResolve","channels","diagnosticsChannel","Client","InvalidArgumentError","connect","tls","kInterceptors","createRedirectInterceptor","kUrl","kNeedDrain","kMaxRedirections","kQueue","kPending","kRunning","kSize","kConnected","kBusy","kDispatch","request","resume","kClose","kDestroy","i","kError","kClient","SocketError","constants","e","p","at","upgrade","Parser","exports","onSocketError","onSocketClose","parser","socket","bodyLength","RequestAbortedError","path","stream","headers","pipeline","finished","buffer","err","kSize","FixedQueue","PoolStats","kConnected","kFree","kPending","kQueued","kRunning","kSize","DispatcherBase","kClients","kNeedDrain","kOnDrain","kOnConnect","kOnDisconnect","kOnConnectionError","kGetDispatcher","kAddClient","kRemoveClient","PoolBase","c","kConnected","kRunning","kSize","kClose","kDestroy","kDispatch","kUrl","Client","util","buildConnector","kOptions","kFactory","defaultFactory","Pool","PoolBase","InvalidArgumentError","connect","tls","kInterceptors","kUrl","kClients","kGetDispatcher","dispatcher","kNeedDrain","kAddClient","Pool","kFactory","kOptions","b","a","defaultFactory","BalancedPool","InvalidArgumentError","kInterceptors","kClients","pool","p","kConnected","DispatcherBase","Pool","Client","util","createRedirectInterceptor","kFactory","kOptions","defaultFactory","Agent","InvalidArgumentError","connect","kInterceptors","kClients","FinalizationRegistry","WeakRef","kClose","kDestroy","assert","util","Blob","Readable","resume","abort","contentType","RequestAbortedError","InvalidArgumentError","self","stream","consume","toUSVString","assert","getResolveErrorBodyCallback","contentType","kSignal","self","RequestAbortedError","addSignal","removeSignal","Readable","util","AsyncResource","InvalidArgumentError","RequestAbortedError","abort","context","contentType","getResolveErrorBodyCallback","util","AsyncResource","InvalidArgumentError","RequestAbortedError","abort","context","contentType","PassThrough","InvalidReturnValueError","res","callback","resume","util","assert","Readable","resume","RequestAbortedError","AsyncResource","InvalidArgumentError","req","abort","context","body","pipeline","PassThrough","util","assert","AsyncResource","InvalidArgumentError","RequestAbortedError","abort","SocketError","util","InvalidArgumentError","RequestAbortedError","abort","context","MockNotMatchedError","UndiciError","matchValue","i","clone","mockDispatch","path","getResponseData","buildURL","addMockDispatch","buildKey","x","STATUS_CODES","kDispatches","error","delay","resume","buildMockDispatch","kMockAgent","kOrigin","kOriginalDispatch","kGetNetConnect","buildMockOptions","mockDispatch","InvalidArgumentError","MockInterceptor","kDispatches","statusCode","data","responseOptions","error","Client","Symbols","MockClient","InvalidArgumentError","kMockAgent","kOrigin","kDispatches","kConnected","kOriginalDispatch","kOriginalClose","buildMockDispatch","kClose","MockInterceptor","promisify","Pool","MockPool","InvalidArgumentError","kDispatches","kClose","promisify","Pluralizer","plural","keys","PendingInterceptorsFormatter","path","Agent","MockClient","MockPool","Dispatcher","MockAgent","InvalidArgumentError","kAgent","Agent","Pool","buildConnector","InvalidArgumentError","ProxyAgent","URL","connect","opts","i","assert","RetryHandler","abort","resume","isDisturbed","err","Agent","getGlobalDispatcher","setGlobalDispatcher","InvalidArgumentError","DecoratorHandler","util","assert","i","j","fill","webidl","keys","isValidHeaderName","name","kGuard","kHeadersList","HeadersList","init","exists","Headers","kConstruct","a","b","kEnumerableProperty","V","util","assert","ReadableStream","Response","kState","makeNetworkError","kRealm","kHeaders","kHeadersList","kGuard","init","webidl","extractBody","getGlobalOrigin","redirectStatusSet","isomorphicEncode","URLSerializer","makeResponse","Headers","kConstruct","cloneResponse","kEnumerableProperty","filterResponse","cloneBody","HeadersList","isErrorLike","p","makeAppropriateNetworkError","isCancelled","isAborted","DOMException","nullBodyStatus","FormData","V","isBlobLike","types","util","assert","TransformStream","abort","Request","kConstruct","webidl","init","kRealm","getGlobalOrigin","makePolicyContainer","request","makeRequest","kState","window","sameOrigin","ac","kHeaders","Headers","kHeadersList","kGuard","contentType","URLSerializer","kEnumerableProperty","V","zlib","assert","ReadableStream","error","DOMException","fetch","p","createDeferredPromise","Request","init","e","request","kState","Response","kRealm","kHeaders","kHeadersList","kGuard","fetching","getGlobalDispatcher","urlIsHttpHttpsScheme","globalThis","isBlobLike","serializeAMimeType","failure","makeRequest","stream","abort","Headers","n","x","keys","Readable","resume","decoders","STATUS_CODES","kState","ProgressEvent","webidl","getEncoding","staticPropertyDescriptors","readOperation","kState","DOMException","kResult","kError","kAborted","types","error","fireAProgressEvent","e","btoa","type","decode","a","b","c","kState","webidl","staticPropertyDescriptors","kEnumerableProperty","assert","urlEquals","URLSerializer","A","B","values","assert","Cache","kConstruct","webidl","request","p","r","Request","Response","kHeadersList","fetching","getGlobalDispatcher","fieldValues","e","cache","kEnumerableProperty","webidl","request","cache","kEnumerableProperty","maxAttributeValueSize","maxNameValuePairSize","isCTLExcludingHtab","name","path","stringify","parseSetCookie","name","Headers","name","webidl","stringify","uid","staticPropertyDescriptors","states","opcodes","maxUnsigned16Bit","parserStates","emptyBuffer","MessageEvent","webidl","CloseEvent","ErrorEvent","kEnumerableProperty","isEstablished","kReadyState","states","isClosing","fireEvent","e","websocketMessageReceived","opcodes","kBinaryType","kWebSocketURL","isValidSubprotocol","isValidStatusCode","failWebsocketConnection","kController","kResponse","diagnosticsChannel","channels","crypto","establishWebSocketConnection","request","Headers","getGlobalDispatcher","kByteParser","kSentClose","kReceivedClose","kReadyState","states","error","crypto","WebsocketFrameSend","bodyLength","buffer","i","ByteParser","buffer","opcodes","kSentClose","body","WebsocketFrameSend","kResponse","kReadyState","states","n","emptyBuffer","e","DOMException","p","buffer","parser","V","getGlobalDispatcher","errors","Agent","util","path","fetch","setGlobalOrigin","getGlobalOrigin","CacheStorage","kConstruct","deleteCookie","getCookies","getSetCookies","setCookie","parseMIMEType","serializeAMimeType","WebSocket","__createBinding","k","m","o","__setModuleDefault","v","__importStar","__awaiter","P","e","http","https","Headers","HttpClient","stream","info","req","defaultPort","ms","a","c","__awaiter","P","e","__awaiter","P","e","_a","error","__awaiter","P","e","os_1","_a","__createBinding","k","m","o","__setModuleDefault","v","__importStar","path","__createBinding","k","o","m","__setModuleDefault","v","__importStar","__awaiter","P","e","_a","fs","path","p","__createBinding","k","o","m","__setModuleDefault","v","__importStar","__awaiter","P","e","assert_1","path","ioUtil","p","__createBinding","k","o","m","__setModuleDefault","v","__importStar","__awaiter","P","e","os","path","a","s","n","x","i","cp","error","c","__createBinding","k","o","m","__setModuleDefault","v","__importStar","__awaiter","P","e","exec","_a","__createBinding","k","m","o","__setModuleDefault","v","__importStar","__awaiter","P","e","__importDefault","os_1","version","name","_a","__createBinding","k","m","o","__setModuleDefault","v","__importStar","__awaiter","P","e","os","path","name","x","enabled","debug","error","MAP","SCALAR","isScalar","isCollection","identity","BREAK","SKIP","REMOVE","visit","path","i","pt","identity","visit","tags","name","version","error","identity","visit","anchors","i","name","error","applyReviver","i","v1","k","identity","toJS","v","i","res","applyReviver","identity","toJS","res","anchors","visit","identity","Node","toJS","Alias","src","c","identity","Node","toJS","Scalar","Alias","identity","Scalar","tags","t","createNode","map","schema","node","createNode","identity","v","i","path","k","a","Collection","schema","it","n","stringifyComment","foldFlowLines","i","j","end","Scalar","isBlock","i","json","tags","stringifyString","t","anchors","identity","stringifyComment","stringifyString","tags","t","name","anchors$1","stringify","o","identity","Scalar","stringify","stringifyComment","stringifyPair","node_process","debug","warning","identity","Scalar","merge","it","map","value","log","merge","stringify","identity","toJS","addPairToJSMap","map","createNode","addPairToJSMap","identity","Pair","schema","identity","stringify","stringifyComment","stringifyCollection","i","comment","str","stringifyCollection","Collection","identity","Pair","Scalar","k","it","YAMLMap","schema","map","i","identity","YAMLMap","map","schema","createNode","Collection","identity","Scalar","toJS","YAMLSeq","schema","it","seq","i","identity","YAMLSeq","seq","schema","stringifyString","string","Scalar","Scalar","boolTag","stringifyNumber","n","i","d","Scalar","stringifyNumber","floatNaN","floatExp","float","stringifyNumber","intIdentify","intResolve","intStringify","intOct","int","intHex","map","_null","seq","string","bool","float","int","schema","Scalar","map","seq","intIdentify","schema","Scalar","stringifyString","binary","src","buffer","i","s","n","o","identity","Pair","Scalar","YAMLSeq","seq","i","pairs","schema","it","keys","identity","toJS","YAMLMap","YAMLSeq","pairs","_","map","pairs$1","schema","omap","seq","onError","Scalar","Scalar","stringifyNumber","float","f","stringifyNumber","sign","n","int","identity","Pair","YAMLMap","schema","_","set","map","sign","n","res","p","timestamp","d","map","_null","seq","string","binary","bool","float","int","merge","omap","pairs","set","timestamp","schema","map","seq","string","tags","keys","identity","string","a","b","Schema","schema","merge","identity","stringify","stringifyDocument","Alias","identity","Pair","Schema","directives","Document","version","path","name","v","k","json","res","s","name","error","src","resolveProps","st","it","utilContainsNewline","identity","a","b","Pair","YAMLMap","resolveProps","utilContainsNewline","utilFlowIndentCheck","utilMapIncludes","resolveBlockMap","map","composeNode","onError","composeEmptyNode","YAMLSeq","resolveProps","resolveBlockSeq","seq","composeNode","onError","composeEmptyNode","resolveEnd","identity","Pair","YAMLMap","YAMLSeq","resolveEnd","resolveProps","resolveFlowCollection","isMap","i","st","composeNode","onError","composeEmptyNode","map","ce","ee","name","identity","Scalar","YAMLMap","YAMLSeq","CN","onError","composeCollection","t","kt","Scalar","resolveBlockScalar","onError","i","value","end","error","n","m","Scalar","resolveEnd","resolveFlowScalar","onError","re","i","identity","Scalar","resolveBlockScalar","resolveFlowScalar","composeScalar","onError","error","schema","kt","tag","directives","before","i","st","Alias","identity","resolveEnd","composeNode","onError","before","re","Document","resolveEnd","composeDoc","directives","onError","re","node_process","Document","errors","identity","src","i","warning","it","error","errors","onError","context","he","st","stringify","cst","st","visit","cst","path","i","cst","i","n","dt","s","ch","cst","lexer","i","it","n","error","st","map","start","fs","seq","composer","Document","errors","log","identity","lineCounter","parser","parseOptions","parser$1","composer$1","parse","src","warning","stringify","conversions","x","V","c","i","S","n","U","d","a","b","keys","i","impl","punycode","s","countSymbols","string","i","error","e","l","at","c","buffer","string","i","R","n","number","path","res","e","usm","v","URL","i","V","Stream","http","https","Blob","a","i","buffer","e","isBlob","error","ct","name","abort","map","init","pairs","k","INTERNAL","values","contentType","URL","request","AbortError","URL$1","isDomainOrSubdomain","isSameProtocol","abortAndFinalize","req","s","stream","__importDefault","path_1","promises_1","platform","arch","version","downloadUrl","buffer","isRequest","Touch","LRUCache","func","ral_1","Event","context","i","e","ral_1","Is","events_1","is","CancellationToken","context","cancellation_1","request","buffer","ral_1","ral_1","Is","events_1","semaphore_1","is","error","info","ral_1","Is","events_1","CRLF","is","error","buffer","buffer","i","result","ral_1","messages_1","linkedMap_1","events_1","cancellation_1","is","Trace","toString","TraceFormat","createMessageConnection","logger","version","isClosed","error","startTime","i","p","r","events_1","util_1","api_1","buffer","stream","error","ms","__createBinding","k","m","o","__exportStar","p","exports","path","os","crypto_1","net_1","process","error","generateRandomPipeName","isReadableStream","logger","__importDefault","os_1","child_process_1","minimumVersion","version","process","x","error","__importDefault","version","minimumVersion","e","platform","arch","request","__createBinding","k","m","o","__exportStar","p","exports","b","d","t","p","s","e","i","c","r","accept","f","_","context","x","name","P","y","g","n","v","__exportStar","m","o","error","k","a","j","l","q","resume","__importStar","__importDefault","env","path","__assign","__createBinding","__setModuleDefault","getContinuationToken","setContinuationToken","pageMap","_a","uuid","k","interfaces_js_1","utils_js_1","i","buffer","d","n","serializer","result","k","v","name","AbortError","log","tslib_1","node_os_1","node_util_1","node_process_1","log_js_1","debug","setLogLevel","getLogLevel","createClientLogger","enabledNamespaces","logger","context","createHttpHeaders","name","map","randomUUID","createPipelineRequest","httpHeaders_js_1","uuidUtils_js_1","createEmptyPipeline","req","request","isObject","isError","object_js_1","e","object_js_1","n","p","k","isRestError","error_js_1","e","uint8ArrayToString","stringToUint8Array","logger_js_1","tslib_1","AbortError_js_1","httpHeaders_js_1","restError_js_1","log_js_1","sanitizer_js_1","isReadableStream","stream","e","request","bodyLength","req","buffer","createDefaultHttpClient","logPolicy","log_js_1","sanitizer_js_1","logger","request","redirectPolicy","request","getHeaderName","setPlatformSpecificData","tslib_1","node_os_1","node_process_1","getUserAgentHeaderName","getUserAgentValue","userAgentPlatform_js_1","constants_js_1","getUserAgentString","userAgentPolicy","userAgent_js_1","UserAgentHeaderName","request","decompressResponsePolicy","request","getRandomIntegerInclusive","calculateRetryDelay","random_js_1","delay","AbortError_js_1","StandardAbortMessage","helpers_js_1","diff","delay_js_1","throttlingRetryStrategy_js_1","DEFAULT_CLIENT_MAX_RETRY_INTERVAL","retryPolicy","AbortError_js_1","logger_js_1","constants_js_1","retryPolicyLogger","logger","request","e","defaultRetryPolicy","exponentialRetryStrategy_js_1","throttlingRetryStrategy_js_1","retryPolicy_js_1","constants_js_1","formDataPolicy","bytesEncoding_js_1","checkEnvironment_js_1","httpHeaders_js_1","request","contentType","values","s","m","h","d","w","y","parse","n","ms","name","coerce","disable","enable","enabled","destroy","env","i","debug","self","extend","v","name","formatArgs","save","load","useColors","m","c","error","r","v","os","tty","sign","version","stream","util","supportsColor","error","k","name","useColors","c","keys","i","v","__createBinding","k","m","o","__setModuleDefault","v","__importStar","http","https","stream","req","__createBinding","k","m","o","__setModuleDefault","v","__importStar","p","exports","net","http","l","name","req","__importDefault","debug","b","__createBinding","k","m","o","__setModuleDefault","v","__importStar","__importDefault","net","tls","debug_1","agent_base_1","url_1","debug","omit","name","connect","req","s","keys","k","m","o","v","debug","req","name","keys","getDefaultProxySettings","proxyPolicy","log_js_1","name","request","agentPolicy","req","tlsPolicy","req","isNodeReadableStream","x","typeGuards_js_1","stream","x","multipartPolicy","bytesEncoding_js_1","typeGuards_js_1","uuidUtils_js_1","x","request","contentType","createPipelineFromOptions","logPolicy_js_1","pipeline_js_1","redirectPolicy_js_1","userAgentPolicy_js_1","decompressResponsePolicy_js_1","defaultRetryPolicy_js_1","formDataPolicy_js_1","checkEnvironment_js_1","proxyPolicy_js_1","agentPolicy_js_1","tlsPolicy_js_1","multipartPolicy_js_1","pipeline","req","log_js_1","request","warning","checkInsecureConnection_js_1","request","x","bytesEncoding_js_1","checkInsecureConnection_js_1","request","x","checkInsecureConnection_js_1","request","x","request","x","createDefaultPipeline","defaultHttpClient_js_1","createPipelineFromOptions_js_1","cachedHttpClient","pipeline","restError_js_1","httpHeaders_js_1","bytesEncoding_js_1","typeGuards_js_1","x","contentType","restError_js_1","httpHeaders_js_1","pipelineRequest_js_1","clientHelpers_js_1","typeGuards_js_1","request","pipeline","stream","e","error","contentType","replaceAll","x","appendQueryParams","p","urlHelpers_js_1","checkEnvironment_js_1","pipeline","path","allowInsecureConnection","restError_js_1","httpHeaders_js_1","tslib_1","AbortError_js_1","logger_js_1","httpHeaders_js_1","pipelineRequest_js_1","pipeline_js_1","restError_js_1","bytesEncoding_js_1","defaultHttpClient_js_1","ts_http_runtime_1","logger_js_1","logger_1","exponentialRetryPolicy","exponentialRetryStrategy_js_1","retryPolicy_js_1","constants_js_1","systemErrorRetryPolicy","retryPolicy_js_1","constants_js_1","throttlingRetryPolicy","retryPolicy_js_1","constants_js_1","agentPolicy_js_1","decompressResponsePolicy_js_1","defaultRetryPolicy_js_1","exponentialRetryPolicy_js_1","retryPolicy_js_1","systemErrorRetryPolicy_js_1","throttlingRetryPolicy_js_1","formDataPolicy_js_1","logPolicy_js_1","multipartPolicy_js_1","proxyPolicy_js_1","redirectPolicy_js_1","tlsPolicy_js_1","userAgentPolicy_js_1","log_js_1","policies_1","policies_1","tslib_1","constants_js_1","userAgent_js_1","request","computeSha256Hmac","computeSha256Hash","node_crypto_1","delay_js_1","error_js_1","p","abort_controller_1","x","delay","calculateRetryDelay","createAbortablePromise_js_1","util_1","util_1","e","isObject","randomUUID","e","core_util_1","x","s","stream","name","policies_1","file_js_1","request","policies_1","policies_1","policies_1","policies_1","request","policies_1","policies_1","context","tracingContext_js_1","state_js_1","instrumenter_js_1","name","context","ts_http_runtime_1","e","core_tracing_1","constants_js_1","log_js_1","core_util_1","restError_js_1","request","e","error","wrapAbortSignal_js_1","request","logPolicy_js_1","pipeline_js_1","redirectPolicy_js_1","userAgentPolicy_js_1","multipartPolicy_js_1","decompressResponsePolicy_js_1","defaultRetryPolicy_js_1","formDataPolicy_js_1","core_util_1","proxyPolicy_js_1","setClientRequestIdPolicy_js_1","agentPolicy_js_1","tlsPolicy_js_1","tracingPolicy_js_1","pipeline","ts_http_runtime_1","request","ts_http_runtime_1","policies_1","policies_1","policies_1","logger_1","constants_js_1","core_util_1","refreshTimeout","tokenCycler_js_1","log_js_1","restError_js_1","request","e","logger","error","x","request","log_js_1","request","logger","pipeline_js_1","i","request","info","interfaces_js_1","core_rest_pipeline_1","serializer_js_1","operationHelpers_js_1","request","parse","error","contentType","serializer_js_1","interfaces_js_1","operationHelpers_js_1","serializer_js_1","interfaceHelpers_js_1","request","isStream","error","deserializationPolicy_js_1","core_rest_pipeline_1","serializationPolicy_js_1","pipeline","core_rest_pipeline_1","operationHelpers_js_1","interfaceHelpers_js_1","path","pairs","name","logger_1","core_rest_pipeline_1","pipeline_js_1","utils_js_1","log_js_1","request","contentType","error","x","a","b","logger","Constants","x","a","b","request","tslib_1","pagingHelper_js_1","coreClient","Mappers","Parameters","_a","_e","listOperationSpec","listNextOperationSpec","serializer","logger_1","logger_js_1","constants_js_1","e","isOperationError","error","init","getOperationStatus","getResourceLocation","getOperationLocation","operation_js_1","logger_js_1","_a","error","e","operation_js_1","constants_js_1","core_util_1","createStateProxy","error","getStatusFromInitialResponse","h","s","operation_js_1","poller_js_1","operation_js_1","error","_a","error","c","constants_js_1","poller_js_1","tslib_1","createLroSpec","tslib_1","tslib_1","pagingHelper_js_1","coreClient","Mappers","Parameters","core_lro_1","lroImpl_js_1","_a","_e","resourceGroupName","deleteAtScopeOperationSpec","createOrUpdateAtScopeOperationSpec","getAtScopeOperationSpec","listAtScopeOperationSpec","getAtTenantScopeOperationSpec","listAtTenantScopeOperationSpec","getAtManagementGroupScopeOperationSpec","listAtManagementGroupScopeOperationSpec","getAtSubscriptionScopeOperationSpec","listAtSubscriptionScopeOperationSpec","deleteOperationSpec","checkExistenceOperationSpec","createOrUpdateOperationSpec","getOperationSpec","exportTemplateOperationSpec","listByResourceGroupOperationSpec","listAtScopeNextOperationSpec","listAtTenantScopeNextOperationSpec","listAtManagementGroupScopeNextOperationSpec","listAtSubscriptionScopeNextOperationSpec","listByResourceGroupNextOperationSpec","serializer","tslib_1","pagingHelper_js_1","coreClient","Mappers","Parameters","_a","_e","listOperationSpec","listAtTenantScopeOperationSpec","getOperationSpec","getAtTenantScopeOperationSpec","listNextOperationSpec","listAtTenantScopeNextOperationSpec","serializer","tslib_1","coreClient","Mappers","Parameters","listOperationSpec","serializer","tslib_1","pagingHelper_js_1","coreClient","Mappers","Parameters","core_lro_1","lroImpl_js_1","resourceGroupName","_a","_e","listOperationSpec","checkExistenceOperationSpec","deleteOperationSpec","apiVersion","createOrUpdateOperationSpec","updateOperationSpec","getOperationSpec","listNextOperationSpec","serializer","tslib_1","pagingHelper_js_1","coreClient","Mappers","Parameters","core_lro_1","lroImpl_js_1","_a","_e","createOrUpdateOperationSpec","deleteOperationSpec","resourceGroupName","getOperationSpec","listOperationSpec","listNextOperationSpec","serializer","tslib_1","pagingHelper_js_1","coreClient","Mappers","Parameters","_a","_e","listOperationSpec","getAtScopeOperationSpec","listNextOperationSpec","serializer","tslib_1","pagingHelper_js_1","coreClient","Mappers","_a","_e","resourceGroupName","serializer","tslib_1","tslib_1","coreClient","coreRestPipeline","index_js_1","_a","subscriptionId","apiVersion","request","tslib_1","tslib_1","n","e","k","d","_a","resourceGroupName","_e","managementGroupId","deploymentStackName","deploymentStack","subscriptionId","apiVersion","request","constants_js_1","path","credentialName","msalPlugins_js_1","e","errors","logger_1","credentialName","error","info","warning","log","constants_js_1","errors_js_1","logging_js_1","tracing_js_1","errors","i","validate","uuid","REGEX","uuid","validate","i","i","b","dt","n","stringify","parse","validate","uuid","v","i","parse","version","stringify","name","URL","crypto","v35","md5","i","stringify","crypto","v35","sha1","version","validate","uuid","Constants","HttpStatus","HttpMethod","OIDC_DEFAULT_SCOPES","OIDC_SCOPES","HeaderNames","AADAuthorityConstants","ClaimsRequestKeys","PromptValue","CodeChallengeMethodValues","OAuthResponseType","ResponseMode","GrantType","CacheAccountType","Separators","CredentialType","APP_METADATA","THE_FAMILY_ID","AUTHORITY_METADATA_CONSTANTS","AuthorityMetadataSource","SERVER_TELEM_CONSTANTS","AuthenticationScheme","ThrottlingConstants","Errors","PasswordGrantConstants","RegionDiscoverySources","RegionDiscoveryOutcomes","CacheOutcome","DEFAULT_TOKEN_RENEWAL_OFFSET_SEC","EncodingTypes","unexpectedError","postRequestFailed","AuthErrorCodes","AuthErrorMessages","AuthErrorMessage","AuthError","createAuthError","clientInfoDecodingError","clientInfoEmptyError","tokenParsingError","nullOrEmptyToken","endpointResolutionError","networkError","openIdConfigError","hashNotDeserialized","invalidState","stateMismatch","stateNotFound","nonceMismatch","authTimeNotFound","maxAgeTranspired","multipleMatchingTokens","multipleMatchingAccounts","multipleMatchingAppMetadata","requestCannotBeMade","cannotRemoveEmptyScope","cannotAppendScopeSet","emptyInputScopeSet","deviceCodePollingCancelled","deviceCodeExpired","deviceCodeUnknownError","noAccountInSilentRequest","invalidCacheRecord","invalidCacheEnvironment","noAccountFound","noCryptoObject","unexpectedCredentialType","invalidAssertion","invalidClientCredential","tokenRefreshRequired","userTimeoutReached","tokenClaimsCnfRequiredForSignedJwt","authorizationCodeMissingFromServerResponse","bindingKeyNotRemoved","endSessionEndpointNotSupported","keyIdMissing","noNetworkConnectivity","userCanceled","missingTenantIdError","methodNotImplemented","nestedAppAuthBridgeDisabled","platformBrokerError","ClientAuthErrorCodes","ClientAuthErrorMessages","ClientAuthErrorMessage","ClientAuthError","createClientAuthError","extractTokenClaims","getJWSPayload","isKmsi","checkMaxAge","AuthorityType","isOpenIdConfigResponse","redirectUriEmpty","claimsRequestParsingError","authorityUriInsecure","urlParseError","urlEmptyError","emptyInputScopesError","invalidClaims","tokenRequestEmpty","logoutRequestEmpty","invalidCodeChallengeMethod","pkceParamsMissing","invalidCloudDiscoveryMetadata","invalidAuthorityMetadata","untrustedAuthority","missingSshJwk","missingSshKid","missingNonceAuthenticationHeader","invalidAuthenticationHeader","cannotSetOIDCOptions","cannotAllowPlatformBroker","authorityMismatch","invalidRequestMethodForEAR","invalidAuthorizePostBodyParameters","ClientConfigurationErrorCodes","ClientConfigurationErrorMessages","ClientConfigurationErrorMessage","ClientConfigurationError","createClientConfigurationError","StringUtils","e","decode","s","stripLeadingHashOrQuery","getDeserializedResponse","mapToQueryString","UrlString","rawMetdataJSON","EndpointMetadata","InstanceDiscoveryMetadata","InstanceDiscoveryMetadataAliases","getAliasesFromStaticSources","getAliasesFromMetadata","logger","getCloudDiscoveryMetadataFromNetworkResponse","getCloudDiscoveryMetadataFromHardcodedValues","i","ProtocolMode","AzureCloudInstance","isCloudInstanceDiscoveryResponse","isCloudInstanceDiscoveryErrorResponse","PerformanceEvents","PerformanceEventStatus","invoke","invokeAsync","RegionDiscovery","version","nowSeconds","toDateFromSeconds","isTokenExpired","wasClockTurnedBack","delay","t","createIdTokenEntity","createAccessTokenEntity","tokenType","createRefreshTokenEntity","isCredentialEntity","isAccessTokenEntity","isIdTokenEntity","isRefreshTokenEntity","isServerTelemetryEntity","isThrottlingEntity","generateAppMetadataKey","isAppMetadataEntity","isAuthorityMetadataEntity","generateAuthorityMetadataExpiresAt","updateAuthorityEndpointMetadata","updateCloudDiscoveryMetadata","isAuthorityMetadataExpired","Authority","error","getTenantFromAuthorityString","formatAuthorityUri","buildStaticAuthorityOptions","createDiscoveredInstance","CLIENT_ID","REDIRECT_URI","RESPONSE_TYPE","RESPONSE_MODE","GRANT_TYPE","CLAIMS","SCOPE","REFRESH_TOKEN","STATE","NONCE","PROMPT","CLIENT_INFO","CODE","CODE_CHALLENGE","CODE_CHALLENGE_METHOD","CODE_VERIFIER","CLIENT_REQUEST_ID","X_CLIENT_SKU","X_CLIENT_VER","X_CLIENT_OS","X_CLIENT_CPU","X_CLIENT_CURR_TELEM","X_CLIENT_LAST_TELEM","X_MS_LIB_CAPABILITY","X_APP_NAME","X_APP_VER","POST_LOGOUT_URI","ID_TOKEN_HINT","DEVICE_CODE","CLIENT_SECRET","CLIENT_ASSERTION","CLIENT_ASSERTION_TYPE","TOKEN_TYPE","REQ_CNF","OBO_ASSERTION","REQUESTED_TOKEN_USE","ON_BEHALF_OF","RETURN_SPA_CODE","LOGOUT_HINT","SID","LOGIN_HINT","DOMAIN_HINT","X_CLIENT_EXTRA_SKU","BROKER_CLIENT_ID","BROKER_REDIRECT_URI","INSTANCE_AWARE","DEFAULT_CRYPTO_IMPLEMENTATION","Logger","defaultLoggerCallback","log","name","ScopeSet","array","buildClientInfo","buildClientInfoFromHomeAccountId","tenantIdMatchesHomeTenant","buildTenantProfile","tenantId","updateAccountTenantProfileData","getTenantIdFromIdTokenClaims","AccountEntity","env","cacheQuotaExceeded","cacheErrorUnknown","CacheErrorMessages","CacheError","createCacheError","CacheManager","request","json","DefaultStorageClass","StubPerformanceMeasurement","StubPerformanceClient","DEFAULT_SYSTEM_OPTIONS","DEFAULT_LOGGER_IMPLEMENTATION","DEFAULT_CACHE_OPTIONS","DEFAULT_NETWORK_IMPLEMENTATION","DEFAULT_LIBRARY_INFO","DEFAULT_CLIENT_CREDENTIALS","DEFAULT_AZURE_CLOUD_OPTIONS","DEFAULT_TELEMETRY_OPTIONS","buildClientConfiguration","buildAuthOptions","isOidcProtocolMode","CcsCredentialType","instrumentBrokerParams","addResponseType","addResponseMode","addScopes","addClientId","addRedirectUri","addPostLogoutRedirectUri","addIdTokenHint","addDomainHint","addLoginHint","addCcsUpn","addCcsOid","addSid","addClaims","addClientCapabilitiesToClaims","addCorrelationId","addLibraryInfo","addApplicationTelemetry","addPrompt","addState","addNonce","addCodeChallengeParams","addAuthorizationCode","addDeviceCode","addRefreshToken","addCodeVerifier","addClientSecret","addClientAssertion","addClientAssertionType","addOboAssertion","addRequestTokenUse","addGrantType","addClientInfo","addInstanceAware","addExtraQueryParameters","addUsername","addPassword","addPopToken","addSshJwk","addServerTelemetry","addThrottling","addLogoutHint","addBrokerParameters","ServerError","getRequestThumbprint","ThrottlingUtils","NetworkError","BaseClient","noTokensFound","nativeAccountUnavailable","refreshTokenExpired","uxNotAllowed","interactionRequired","consentRequired","loginRequired","badToken","InteractionRequiredAuthErrorCodes","InteractionRequiredServerErrorMessage","InteractionRequiredAuthSubErrorMessage","InteractionRequiredAuthErrorMessages","InteractionRequiredAuthErrorMessage","InteractionRequiredAuthError","timestamp","isInteractionRequiredError","createInteractionRequiredAuthError","ProtocolUtils","KeyLocation","PopTokenGenerator","TokenCacheContext","ResponseHandler","buildAccountToCache","uid","getClientAssertion","AuthorizationCodeClient","DEFAULT_REFRESH_TOKEN_EXPIRATION_OFFSET_SECONDS","RefreshTokenClient","SilentFlowClient","getStandardAuthorizeRequestParameters","extractAccountSid","extractLoginHint","getAuthorizeUrl","skuGroupSeparator","skuValueSeparator","makeExtraSkuString","setSku","ServerTelemetryManager","errors","indexNode","stack","error","context","logger","events","Buffer","src","fill","Buffer","Stream","util","DataStream","write","getParamBytesForAlg","Buffer","base64","o","Buffer","a","b","c","i","Buffer","crypto","util","base64","base64url","i","sign","timingSafeEqual","a","b","jwa","Buffer","toString","Buffer","DataStream","jwa","Stream","toString","util","string","SignStream","sign","e","Buffer","isObject","e","string","VerifyStream","valid","jws","jwt","e","JsonWebTokenError","error","JsonWebTokenError","NotBeforeError","JsonWebTokenError","TokenExpiredError","timestamp","MAX_LENGTH","MAX_SAFE_INTEGER","MAX_SAFE_COMPONENT_LENGTH","MAX_SAFE_BUILD_LENGTH","debug","debug","re","t","R","MAX_LENGTH","name","parseOptions","compareIdentifiers","a","b","debug","re","parseOptions","SemVer","version","m","t","MAX_SAFE_INTEGER","i","a","b","prerelease","SemVer","parse","version","parse","valid","v","version","parse","clean","s","version","SemVer","inc","version","parse","diff","v1","SemVer","major","a","SemVer","minor","a","SemVer","patch","a","parse","prerelease","version","SemVer","compare","a","b","compare","rcompare","b","a","compare","compareLoose","a","b","SemVer","compareBuild","a","b","compareBuild","sort","a","b","compareBuild","rsort","b","a","compare","gt","a","b","compare","lt","a","b","compare","eq","a","b","compare","neq","a","b","compare","gte","a","b","compare","lte","a","b","eq","neq","gt","gte","lt","lte","cmp","a","b","SemVer","parse","re","coerce","version","t","major","Range","parseOptions","Comparator","r","c","i","k","re","t","version","SemVer","debug","_","M","m","p","z","set","ANY","Comparator","r","re","t","m","SemVer","version","cmp","Range","Range","satisfies","version","Range","toComparators","c","SemVer","Range","maxSatisfying","v","SemVer","Range","minSatisfying","v","SemVer","Range","gt","minVersion","i","Range","validRange","SemVer","Comparator","Range","satisfies","gt","lt","lte","gte","outside","version","i","ANY","outside","gtr","version","outside","ltr","version","Range","intersects","satisfies","compare","set","v","a","b","version","Range","Comparator","satisfies","compare","subset","gt","lt","c","eq","a","b","constants","gt","lt","semver","semver","timespan","validateAsymmetricKey","PS_SUPPORTED","jws","secretOrPublicKey","KeyObject","_","createSecretKey","e","valid","INFINITY","MAX_INTEGER","NAN","stringTag","symbolTag","reTrim","reIsBadHex","reIsBinary","reIsOctal","freeParseInt","array","n","overArg","func","objectProto","hasOwnProperty","objectToString","isArray","includes","toInteger","isString","isObjectLike","isObject","isSymbol","toFinite","toNumber","objectToString","isBoolean","isObjectLike","INFINITY","MAX_INTEGER","NAN","symbolTag","reTrim","reIsBadHex","reIsBinary","reIsOctal","freeParseInt","objectToString","isInteger","toInteger","isObject","isObjectLike","isSymbol","toFinite","toNumber","objectToString","isObjectLike","isNumber","e","func","objectToString","isObjectLike","isPlainObject","objectToString","isObjectLike","isString","func","n","once","schema","failure","_","error","timestamp","crypto","msalCommon","fs","path","defaultLoggerCallback","log","e","decode","s","array","tenantId","name","env","logger","i","request","tokenType","json","version","t","error","timestamp","uid","errors","proxyUrl","headers","body","cache","buffer","func","req","r","retryPolicy","errors_js_1","logging_js_1","constants_js_1","core_util_1","logger","error","platform","core_util_1","core_rest_pipeline_1","errors_js_1","constants_js_1","tracing_js_1","logging_js_1","utils_js_1","request","error","e","errors_js_1","t","constants_js_1","logging_js_1","error","logger","fs","process","fs","fsConstants","isWsl","process","process","execFileAsync","process","execFileAsync","defaultBrowser","execFileAsync","process","windows","string","x","execFile","Buffer","binary","isWsl","process","array","error","fsConstants","name","logging_js_1","msalPlugins_js_1","utils_js_1","errors_js_1","identityClient_js_1","logger_1","tenantIdUtils_js_1","e","msalClient_js_1","node_crypto_1","tenantIdUtils_js_1","logging_js_1","promises_1","tracing_js_1","credentialName","logger","logging_js_1","error","msalClient_js_1","tenantIdUtils_js_1","errors_js_1","logging_js_1","scopeUtils_js_1","tracing_js_1","logger","msalClient_js_1","tenantIdUtils_js_1","errors_js_1","logging_js_1","scopeUtils_js_1","tracing_js_1","logger","errors_js_1","logging_js_1","clientCertificateCredential_js_1","clientSecretCredential_js_1","usernamePasswordCredential_js_1","tenantIdUtils_js_1","tracing_js_1","credentialName","logger","core_rest_pipeline_1","core_util_1","core_rest_pipeline_1","logging_js_1","utils_js_1","tracing_js_1","msiName","logger","request","msalClient_js_1","tenantIdUtils_js_1","errors_js_1","logging_js_1","tracing_js_1","logger","logging_js_1","clientAssertionCredential_js_1","errors_js_1","tenantIdUtils_js_1","promises_1","credentialName","logger","workloadIdentityCredential_js_1","logging_js_1","logger","env","identityClient_js_1","errors_js_1","utils_js_1","logging_js_1","tracing_js_1","logger","tslib_1","logging_js_1","errors_js_1","child_process_1","tenantIdUtils_js_1","tracing_js_1","scopeUtils_js_1","logger","error","e","logging_js_1","error","tenantIdUtils_js_1","logging_js_1","scopeUtils_js_1","errors_js_1","tracing_js_1","logger","error","isLoginError","e","error","tenantIdUtils_js_1","logging_js_1","scopeUtils_js_1","errors_js_1","tracing_js_1","logger","e","error","logging_js_1","tenantIdUtils_js_1","errors_js_1","tenantIdUtils_js_2","msalClient_js_1","scopeUtils_js_1","utils_js_1","promises_1","logger","error","tenantIdUtils_js_1","logging_js_1","scopeUtils_js_1","tracing_js_1","msalClient_js_1","constants_js_1","errors_js_1","logger","e","environmentCredential_js_1","index_js_1","workloadIdentityCredential_js_1","azureDeveloperCliCredential_js_1","azureCliCredential_js_1","azurePowerShellCredential_js_1","visualStudioCodeCredential_js_1","chainedTokenCredential_js_1","logging_js_1","logger","credentialName","tenantIdUtils_js_1","logging_js_1","scopeUtils_js_1","tracing_js_1","msalClient_js_1","constants_js_1","logger","tenantIdUtils_js_1","logging_js_1","scopeUtils_js_1","tracing_js_1","msalClient_js_1","constants_js_1","logger","errors_js_1","core_rest_pipeline_1","clientAssertionCredential_js_1","tenantIdUtils_js_1","logging_js_1","credentialName","logger","request","e","tenantIdUtils_js_1","logging_js_1","scopeUtils_js_1","tracing_js_1","msalClient_js_1","logger","logging_js_1","errors_js_1","error","pipeline","request","i","c","l","u","d","e","o","s","n","r","a","t","f","core","name","core","Color","logger","error"],"sources":["../node_modules/@actions/core/lib/utils.js","../node_modules/@actions/core/lib/command.js","../node_modules/@actions/core/lib/file-command.js","../node_modules/@actions/http-client/lib/proxy.js","../node_modules/tunnel/lib/tunnel.js","../node_modules/tunnel/index.js","../node_modules/undici/lib/core/symbols.js","../node_modules/undici/lib/core/errors.js","../node_modules/undici/lib/core/constants.js","../node_modules/undici/lib/core/util.js","../node_modules/undici/lib/timers.js","../node_modules/@fastify/busboy/deps/streamsearch/sbmh.js","../node_modules/@fastify/busboy/deps/dicer/lib/PartStream.js","../node_modules/@fastify/busboy/lib/utils/getLimit.js","../node_modules/@fastify/busboy/deps/dicer/lib/HeaderParser.js","../node_modules/@fastify/busboy/deps/dicer/lib/Dicer.js","../node_modules/@fastify/busboy/lib/utils/decodeText.js","../node_modules/@fastify/busboy/lib/utils/parseParams.js","../node_modules/@fastify/busboy/lib/utils/basename.js","../node_modules/@fastify/busboy/lib/types/multipart.js","../node_modules/@fastify/busboy/lib/utils/Decoder.js","../node_modules/@fastify/busboy/lib/types/urlencoded.js","../node_modules/@fastify/busboy/lib/main.js","../node_modules/undici/lib/fetch/constants.js","../node_modules/undici/lib/fetch/global.js","../node_modules/undici/lib/fetch/util.js","../node_modules/undici/lib/fetch/symbols.js","../node_modules/undici/lib/fetch/webidl.js","../node_modules/undici/lib/fetch/dataURL.js","../node_modules/undici/lib/fetch/file.js","../node_modules/undici/lib/fetch/formdata.js","../node_modules/undici/lib/fetch/body.js","../node_modules/undici/lib/core/request.js","../node_modules/undici/lib/dispatcher.js","../node_modules/undici/lib/dispatcher-base.js","../node_modules/undici/lib/core/connect.js","../node_modules/undici/lib/llhttp/utils.js","../node_modules/undici/lib/llhttp/constants.js","../node_modules/undici/lib/handler/RedirectHandler.js","../node_modules/undici/lib/interceptor/redirectInterceptor.js","../node_modules/undici/lib/llhttp/llhttp-wasm.js","../node_modules/undici/lib/llhttp/llhttp_simd-wasm.js","../node_modules/undici/lib/client.js","../node_modules/undici/lib/node/fixed-queue.js","../node_modules/undici/lib/pool-stats.js","../node_modules/undici/lib/pool-base.js","../node_modules/undici/lib/pool.js","../node_modules/undici/lib/balanced-pool.js","../node_modules/undici/lib/compat/dispatcher-weakref.js","../node_modules/undici/lib/agent.js","../node_modules/undici/lib/api/readable.js","../node_modules/undici/lib/api/util.js","../node_modules/undici/lib/api/abort-signal.js","../node_modules/undici/lib/api/api-request.js","../node_modules/undici/lib/api/api-stream.js","../node_modules/undici/lib/api/api-pipeline.js","../node_modules/undici/lib/api/api-upgrade.js","../node_modules/undici/lib/api/api-connect.js","../node_modules/undici/lib/api/index.js","../node_modules/undici/lib/mock/mock-errors.js","../node_modules/undici/lib/mock/mock-symbols.js","../node_modules/undici/lib/mock/mock-utils.js","../node_modules/undici/lib/mock/mock-interceptor.js","../node_modules/undici/lib/mock/mock-client.js","../node_modules/undici/lib/mock/mock-pool.js","../node_modules/undici/lib/mock/pluralizer.js","../node_modules/undici/lib/mock/pending-interceptors-formatter.js","../node_modules/undici/lib/mock/mock-agent.js","../node_modules/undici/lib/proxy-agent.js","../node_modules/undici/lib/handler/RetryHandler.js","../node_modules/undici/lib/global.js","../node_modules/undici/lib/handler/DecoratorHandler.js","../node_modules/undici/lib/fetch/headers.js","../node_modules/undici/lib/fetch/response.js","../node_modules/undici/lib/fetch/request.js","../node_modules/undici/lib/fetch/index.js","../node_modules/undici/lib/fileapi/symbols.js","../node_modules/undici/lib/fileapi/progressevent.js","../node_modules/undici/lib/fileapi/encoding.js","../node_modules/undici/lib/fileapi/util.js","../node_modules/undici/lib/fileapi/filereader.js","../node_modules/undici/lib/cache/symbols.js","../node_modules/undici/lib/cache/util.js","../node_modules/undici/lib/cache/cache.js","../node_modules/undici/lib/cache/cachestorage.js","../node_modules/undici/lib/cookies/constants.js","../node_modules/undici/lib/cookies/util.js","../node_modules/undici/lib/cookies/parse.js","../node_modules/undici/lib/cookies/index.js","../node_modules/undici/lib/websocket/constants.js","../node_modules/undici/lib/websocket/symbols.js","../node_modules/undici/lib/websocket/events.js","../node_modules/undici/lib/websocket/util.js","../node_modules/undici/lib/websocket/connection.js","../node_modules/undici/lib/websocket/frame.js","../node_modules/undici/lib/websocket/receiver.js","../node_modules/undici/lib/websocket/websocket.js","../node_modules/undici/index.js","../node_modules/@actions/http-client/lib/index.js","../node_modules/@actions/http-client/lib/auth.js","../node_modules/@actions/core/lib/oidc-utils.js","../node_modules/@actions/core/lib/summary.js","../node_modules/@actions/core/lib/path-utils.js","../node_modules/@actions/io/lib/io-util.js","../node_modules/@actions/io/lib/io.js","../node_modules/@actions/exec/lib/toolrunner.js","../node_modules/@actions/exec/lib/exec.js","../node_modules/@actions/core/lib/platform.js","../node_modules/@actions/core/lib/core.js","../node_modules/yaml/dist/nodes/identity.js","../node_modules/yaml/dist/visit.js","../node_modules/yaml/dist/doc/directives.js","../node_modules/yaml/dist/doc/anchors.js","../node_modules/yaml/dist/doc/applyReviver.js","../node_modules/yaml/dist/nodes/toJS.js","../node_modules/yaml/dist/nodes/Node.js","../node_modules/yaml/dist/nodes/Alias.js","../node_modules/yaml/dist/nodes/Scalar.js","../node_modules/yaml/dist/doc/createNode.js","../node_modules/yaml/dist/nodes/Collection.js","../node_modules/yaml/dist/stringify/stringifyComment.js","../node_modules/yaml/dist/stringify/foldFlowLines.js","../node_modules/yaml/dist/stringify/stringifyString.js","../node_modules/yaml/dist/stringify/stringify.js","../node_modules/yaml/dist/stringify/stringifyPair.js","../node_modules/yaml/dist/log.js","../node_modules/yaml/dist/schema/yaml-1.1/merge.js","../node_modules/yaml/dist/nodes/addPairToJSMap.js","../node_modules/yaml/dist/nodes/Pair.js","../node_modules/yaml/dist/stringify/stringifyCollection.js","../node_modules/yaml/dist/nodes/YAMLMap.js","../node_modules/yaml/dist/schema/common/map.js","../node_modules/yaml/dist/nodes/YAMLSeq.js","../node_modules/yaml/dist/schema/common/seq.js","../node_modules/yaml/dist/schema/common/string.js","../node_modules/yaml/dist/schema/common/null.js","../node_modules/yaml/dist/schema/core/bool.js","../node_modules/yaml/dist/stringify/stringifyNumber.js","../node_modules/yaml/dist/schema/core/float.js","../node_modules/yaml/dist/schema/core/int.js","../node_modules/yaml/dist/schema/core/schema.js","../node_modules/yaml/dist/schema/json/schema.js","../node_modules/yaml/dist/schema/yaml-1.1/binary.js","../node_modules/yaml/dist/schema/yaml-1.1/pairs.js","../node_modules/yaml/dist/schema/yaml-1.1/omap.js","../node_modules/yaml/dist/schema/yaml-1.1/bool.js","../node_modules/yaml/dist/schema/yaml-1.1/float.js","../node_modules/yaml/dist/schema/yaml-1.1/int.js","../node_modules/yaml/dist/schema/yaml-1.1/set.js","../node_modules/yaml/dist/schema/yaml-1.1/timestamp.js","../node_modules/yaml/dist/schema/yaml-1.1/schema.js","../node_modules/yaml/dist/schema/tags.js","../node_modules/yaml/dist/schema/Schema.js","../node_modules/yaml/dist/stringify/stringifyDocument.js","../node_modules/yaml/dist/doc/Document.js","../node_modules/yaml/dist/errors.js","../node_modules/yaml/dist/compose/resolve-props.js","../node_modules/yaml/dist/compose/util-contains-newline.js","../node_modules/yaml/dist/compose/util-flow-indent-check.js","../node_modules/yaml/dist/compose/util-map-includes.js","../node_modules/yaml/dist/compose/resolve-block-map.js","../node_modules/yaml/dist/compose/resolve-block-seq.js","../node_modules/yaml/dist/compose/resolve-end.js","../node_modules/yaml/dist/compose/resolve-flow-collection.js","../node_modules/yaml/dist/compose/compose-collection.js","../node_modules/yaml/dist/compose/resolve-block-scalar.js","../node_modules/yaml/dist/compose/resolve-flow-scalar.js","../node_modules/yaml/dist/compose/compose-scalar.js","../node_modules/yaml/dist/compose/util-empty-scalar-position.js","../node_modules/yaml/dist/compose/compose-node.js","../node_modules/yaml/dist/compose/compose-doc.js","../node_modules/yaml/dist/compose/composer.js","../node_modules/yaml/dist/parse/cst-scalar.js","../node_modules/yaml/dist/parse/cst-stringify.js","../node_modules/yaml/dist/parse/cst-visit.js","../node_modules/yaml/dist/parse/cst.js","../node_modules/yaml/dist/parse/lexer.js","../node_modules/yaml/dist/parse/line-counter.js","../node_modules/yaml/dist/parse/parser.js","../node_modules/yaml/dist/public-api.js","../node_modules/yaml/dist/index.js","../node_modules/webidl-conversions/lib/index.js","../node_modules/whatwg-url/lib/utils.js","../node_modules/tr46/lib/mappingTable.json","../node_modules/tr46/index.js","../node_modules/whatwg-url/lib/url-state-machine.js","../node_modules/whatwg-url/lib/URL-impl.js","../node_modules/whatwg-url/lib/URL.js","../node_modules/whatwg-url/lib/public-api.js","../node_modules/node-fetch/lib/index.js","../node_modules/bicep-node/dist/utils/install.js","../node_modules/vscode-jsonrpc/lib/common/is.js","../node_modules/vscode-jsonrpc/lib/common/messages.js","../node_modules/vscode-jsonrpc/lib/common/linkedMap.js","../node_modules/vscode-jsonrpc/lib/common/disposable.js","../node_modules/vscode-jsonrpc/lib/common/ral.js","../node_modules/vscode-jsonrpc/lib/common/events.js","../node_modules/vscode-jsonrpc/lib/common/cancellation.js","../node_modules/vscode-jsonrpc/lib/common/sharedArrayCancellation.js","../node_modules/vscode-jsonrpc/lib/common/semaphore.js","../node_modules/vscode-jsonrpc/lib/common/messageReader.js","../node_modules/vscode-jsonrpc/lib/common/messageWriter.js","../node_modules/vscode-jsonrpc/lib/common/messageBuffer.js","../node_modules/vscode-jsonrpc/lib/common/connection.js","../node_modules/vscode-jsonrpc/lib/common/api.js","../node_modules/vscode-jsonrpc/lib/node/ril.js","../node_modules/vscode-jsonrpc/lib/node/main.js","../node_modules/vscode-jsonrpc/node.js","../node_modules/bicep-node/dist/utils/jsonrpc.js","../node_modules/bicep-node/dist/utils/bicep.js","../node_modules/bicep-node/dist/utils/types.js","../node_modules/bicep-node/dist/index.js","../node_modules/tslib/tslib.es6.mjs","../node_modules/@azure/arm-resources/dist/commonjs/pagingHelper.js","../node_modules/@azure/arm-resources/dist/commonjs/models/index.js","../node_modules/@azure/core-client/dist/commonjs/base64.js","../node_modules/@azure/core-client/dist/commonjs/interfaces.js","../node_modules/@azure/core-client/dist/commonjs/utils.js","../node_modules/@azure/core-client/dist/commonjs/serializer.js","../node_modules/@typespec/ts-http-runtime/dist/commonjs/abort-controller/AbortError.js","../node_modules/@typespec/ts-http-runtime/dist/commonjs/logger/log.js","../node_modules/@typespec/ts-http-runtime/dist/commonjs/logger/debug.js","../node_modules/@typespec/ts-http-runtime/dist/commonjs/logger/logger.js","../node_modules/@typespec/ts-http-runtime/dist/commonjs/httpHeaders.js","../node_modules/@typespec/ts-http-runtime/dist/commonjs/auth/schemes.js","../node_modules/@typespec/ts-http-runtime/dist/commonjs/auth/oauth2Flows.js","../node_modules/@typespec/ts-http-runtime/dist/commonjs/util/uuidUtils.js","../node_modules/@typespec/ts-http-runtime/dist/commonjs/pipelineRequest.js","../node_modules/@typespec/ts-http-runtime/dist/commonjs/pipeline.js","../node_modules/@typespec/ts-http-runtime/dist/commonjs/util/object.js","../node_modules/@typespec/ts-http-runtime/dist/commonjs/util/error.js","../node_modules/@typespec/ts-http-runtime/dist/commonjs/util/inspect.js","../node_modules/@typespec/ts-http-runtime/dist/commonjs/util/sanitizer.js","../node_modules/@typespec/ts-http-runtime/dist/commonjs/restError.js","../node_modules/@typespec/ts-http-runtime/dist/commonjs/util/bytesEncoding.js","../node_modules/@typespec/ts-http-runtime/dist/commonjs/log.js","../node_modules/@typespec/ts-http-runtime/dist/commonjs/nodeHttpClient.js","../node_modules/@typespec/ts-http-runtime/dist/commonjs/defaultHttpClient.js","../node_modules/@typespec/ts-http-runtime/dist/commonjs/policies/logPolicy.js","../node_modules/@typespec/ts-http-runtime/dist/commonjs/policies/redirectPolicy.js","../node_modules/@typespec/ts-http-runtime/dist/commonjs/util/userAgentPlatform.js","../node_modules/@typespec/ts-http-runtime/dist/commonjs/constants.js","../node_modules/@typespec/ts-http-runtime/dist/commonjs/util/userAgent.js","../node_modules/@typespec/ts-http-runtime/dist/commonjs/policies/userAgentPolicy.js","../node_modules/@typespec/ts-http-runtime/dist/commonjs/policies/decompressResponsePolicy.js","../node_modules/@typespec/ts-http-runtime/dist/commonjs/util/random.js","../node_modules/@typespec/ts-http-runtime/dist/commonjs/util/delay.js","../node_modules/@typespec/ts-http-runtime/dist/commonjs/util/helpers.js","../node_modules/@typespec/ts-http-runtime/dist/commonjs/retryStrategies/throttlingRetryStrategy.js","../node_modules/@typespec/ts-http-runtime/dist/commonjs/retryStrategies/exponentialRetryStrategy.js","../node_modules/@typespec/ts-http-runtime/dist/commonjs/policies/retryPolicy.js","../node_modules/@typespec/ts-http-runtime/dist/commonjs/policies/defaultRetryPolicy.js","../node_modules/@typespec/ts-http-runtime/dist/commonjs/util/checkEnvironment.js","../node_modules/@typespec/ts-http-runtime/dist/commonjs/policies/formDataPolicy.js","../node_modules/ms/index.js","../node_modules/debug/src/common.js","../node_modules/debug/src/browser.js","../node_modules/has-flag/index.js","../node_modules/supports-color/index.js","../node_modules/debug/src/node.js","../node_modules/debug/src/index.js","../node_modules/agent-base/dist/helpers.js","../node_modules/agent-base/dist/index.js","../node_modules/https-proxy-agent/dist/parse-proxy-response.js","../node_modules/https-proxy-agent/dist/index.js","../node_modules/http-proxy-agent/dist/index.js","../node_modules/@typespec/ts-http-runtime/dist/commonjs/policies/proxyPolicy.js","../node_modules/@typespec/ts-http-runtime/dist/commonjs/policies/agentPolicy.js","../node_modules/@typespec/ts-http-runtime/dist/commonjs/policies/tlsPolicy.js","../node_modules/@typespec/ts-http-runtime/dist/commonjs/util/typeGuards.js","../node_modules/@typespec/ts-http-runtime/dist/commonjs/util/concat.js","../node_modules/@typespec/ts-http-runtime/dist/commonjs/policies/multipartPolicy.js","../node_modules/@typespec/ts-http-runtime/dist/commonjs/createPipelineFromOptions.js","../node_modules/@typespec/ts-http-runtime/dist/commonjs/client/apiVersionPolicy.js","../node_modules/@typespec/ts-http-runtime/dist/commonjs/auth/credentials.js","../node_modules/@typespec/ts-http-runtime/dist/commonjs/policies/auth/checkInsecureConnection.js","../node_modules/@typespec/ts-http-runtime/dist/commonjs/policies/auth/apiKeyAuthenticationPolicy.js","../node_modules/@typespec/ts-http-runtime/dist/commonjs/policies/auth/basicAuthenticationPolicy.js","../node_modules/@typespec/ts-http-runtime/dist/commonjs/policies/auth/bearerAuthenticationPolicy.js","../node_modules/@typespec/ts-http-runtime/dist/commonjs/policies/auth/oauth2AuthenticationPolicy.js","../node_modules/@typespec/ts-http-runtime/dist/commonjs/client/clientHelpers.js","../node_modules/@typespec/ts-http-runtime/dist/commonjs/client/multipart.js","../node_modules/@typespec/ts-http-runtime/dist/commonjs/client/sendRequest.js","../node_modules/@typespec/ts-http-runtime/dist/commonjs/client/urlHelpers.js","../node_modules/@typespec/ts-http-runtime/dist/commonjs/client/getClient.js","../node_modules/@typespec/ts-http-runtime/dist/commonjs/client/operationOptionHelpers.js","../node_modules/@typespec/ts-http-runtime/dist/commonjs/client/restError.js","../node_modules/@typespec/ts-http-runtime/dist/commonjs/index.js","../node_modules/@azure/core-rest-pipeline/dist/commonjs/pipeline.js","../node_modules/@typespec/ts-http-runtime/dist/commonjs/logger/internal.js","../node_modules/@azure/logger/dist/commonjs/index.js","../node_modules/@azure/core-rest-pipeline/dist/commonjs/log.js","../node_modules/@typespec/ts-http-runtime/dist/commonjs/policies/exponentialRetryPolicy.js","../node_modules/@typespec/ts-http-runtime/dist/commonjs/policies/systemErrorRetryPolicy.js","../node_modules/@typespec/ts-http-runtime/dist/commonjs/policies/throttlingRetryPolicy.js","../node_modules/@typespec/ts-http-runtime/dist/commonjs/policies/internal.js","../node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/logPolicy.js","../node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/redirectPolicy.js","../node_modules/@azure/core-rest-pipeline/dist/commonjs/util/userAgentPlatform.js","../node_modules/@azure/core-rest-pipeline/dist/commonjs/constants.js","../node_modules/@azure/core-rest-pipeline/dist/commonjs/util/userAgent.js","../node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/userAgentPolicy.js","../node_modules/@typespec/ts-http-runtime/dist/commonjs/util/sha256.js","../node_modules/@typespec/ts-http-runtime/dist/commonjs/util/internal.js","../node_modules/@azure/core-util/dist/commonjs/aborterUtils.js","../node_modules/@azure/abort-controller/dist/commonjs/AbortError.js","../node_modules/@azure/abort-controller/dist/commonjs/index.js","../node_modules/@azure/core-util/dist/commonjs/createAbortablePromise.js","../node_modules/@azure/core-util/dist/commonjs/delay.js","../node_modules/@azure/core-util/dist/commonjs/error.js","../node_modules/@azure/core-util/dist/commonjs/typeGuards.js","../node_modules/@azure/core-util/dist/commonjs/index.js","../node_modules/@azure/core-rest-pipeline/dist/commonjs/util/file.js","../node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/multipartPolicy.js","../node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/decompressResponsePolicy.js","../node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/defaultRetryPolicy.js","../node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/formDataPolicy.js","../node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/proxyPolicy.js","../node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/setClientRequestIdPolicy.js","../node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/agentPolicy.js","../node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/tlsPolicy.js","../node_modules/@azure/core-tracing/dist/commonjs/tracingContext.js","../node_modules/@azure/core-tracing/dist/commonjs/state.js","../node_modules/@azure/core-tracing/dist/commonjs/instrumenter.js","../node_modules/@azure/core-tracing/dist/commonjs/tracingClient.js","../node_modules/@azure/core-tracing/dist/commonjs/index.js","../node_modules/@azure/core-rest-pipeline/dist/commonjs/restError.js","../node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/tracingPolicy.js","../node_modules/@azure/core-rest-pipeline/dist/commonjs/util/wrapAbortSignal.js","../node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/wrapAbortSignalLikePolicy.js","../node_modules/@azure/core-rest-pipeline/dist/commonjs/createPipelineFromOptions.js","../node_modules/@azure/core-rest-pipeline/dist/commonjs/defaultHttpClient.js","../node_modules/@azure/core-rest-pipeline/dist/commonjs/httpHeaders.js","../node_modules/@azure/core-rest-pipeline/dist/commonjs/pipelineRequest.js","../node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/exponentialRetryPolicy.js","../node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/systemErrorRetryPolicy.js","../node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/throttlingRetryPolicy.js","../node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/retryPolicy.js","../node_modules/@azure/core-rest-pipeline/dist/commonjs/util/tokenCycler.js","../node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/bearerTokenAuthenticationPolicy.js","../node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/ndJsonPolicy.js","../node_modules/@azure/core-rest-pipeline/dist/commonjs/policies/auxiliaryAuthenticationHeaderPolicy.js","../node_modules/@azure/core-rest-pipeline/dist/commonjs/index.js","../node_modules/@azure/core-client/dist/commonjs/state.js","../node_modules/@azure/core-client/dist/commonjs/operationHelpers.js","../node_modules/@azure/core-client/dist/commonjs/deserializationPolicy.js","../node_modules/@azure/core-client/dist/commonjs/interfaceHelpers.js","../node_modules/@azure/core-client/dist/commonjs/serializationPolicy.js","../node_modules/@azure/core-client/dist/commonjs/pipeline.js","../node_modules/@azure/core-client/dist/commonjs/httpClientCache.js","../node_modules/@azure/core-client/dist/commonjs/urlHelpers.js","../node_modules/@azure/core-client/dist/commonjs/log.js","../node_modules/@azure/core-client/dist/commonjs/serviceClient.js","../node_modules/@azure/core-client/dist/commonjs/authorizeRequestOnClaimChallenge.js","../node_modules/@azure/core-client/dist/commonjs/authorizeRequestOnTenantChallenge.js","../node_modules/@azure/core-client/dist/commonjs/index.js","../node_modules/@azure/arm-resources/dist/commonjs/models/mappers.js","../node_modules/@azure/arm-resources/dist/commonjs/models/parameters.js","../node_modules/@azure/arm-resources/dist/commonjs/operations/operations.js","../node_modules/@azure/core-lro/dist/commonjs/logger.js","../node_modules/@azure/core-lro/dist/commonjs/poller/constants.js","../node_modules/@azure/core-lro/dist/commonjs/poller/operation.js","../node_modules/@azure/core-lro/dist/commonjs/http/operation.js","../node_modules/@azure/core-lro/dist/commonjs/poller/poller.js","../node_modules/@azure/core-lro/dist/commonjs/http/poller.js","../node_modules/@azure/core-lro/dist/commonjs/legacy/lroEngine/operation.js","../node_modules/@azure/core-lro/dist/commonjs/legacy/poller.js","../node_modules/@azure/core-lro/dist/commonjs/legacy/lroEngine/lroEngine.js","../node_modules/@azure/core-lro/dist/commonjs/legacy/lroEngine/index.js","../node_modules/@azure/core-lro/dist/commonjs/legacy/pollOperation.js","../node_modules/@azure/core-lro/dist/commonjs/index.js","../node_modules/@azure/arm-resources/dist/commonjs/lroImpl.js","../node_modules/@azure/arm-resources/dist/commonjs/operations/deployments.js","../node_modules/@azure/arm-resources/dist/commonjs/operations/providers.js","../node_modules/@azure/arm-resources/dist/commonjs/operations/providerResourceTypes.js","../node_modules/@azure/arm-resources/dist/commonjs/operations/resources.js","../node_modules/@azure/arm-resources/dist/commonjs/operations/resourceGroups.js","../node_modules/@azure/arm-resources/dist/commonjs/operations/tagsOperations.js","../node_modules/@azure/arm-resources/dist/commonjs/operations/deploymentOperations.js","../node_modules/@azure/arm-resources/dist/commonjs/operations/index.js","../node_modules/@azure/arm-resources/dist/commonjs/resourceManagementClient.js","../node_modules/@azure/arm-resources/dist/commonjs/operationsInterfaces/operations.js","../node_modules/@azure/arm-resources/dist/commonjs/operationsInterfaces/deployments.js","../node_modules/@azure/arm-resources/dist/commonjs/operationsInterfaces/providers.js","../node_modules/@azure/arm-resources/dist/commonjs/operationsInterfaces/providerResourceTypes.js","../node_modules/@azure/arm-resources/dist/commonjs/operationsInterfaces/resources.js","../node_modules/@azure/arm-resources/dist/commonjs/operationsInterfaces/resourceGroups.js","../node_modules/@azure/arm-resources/dist/commonjs/operationsInterfaces/tagsOperations.js","../node_modules/@azure/arm-resources/dist/commonjs/operationsInterfaces/deploymentOperations.js","../node_modules/@azure/arm-resources/dist/commonjs/operationsInterfaces/index.js","../node_modules/@azure/arm-resources/dist/commonjs/index.js","../node_modules/@azure/arm-resourcesdeploymentstacks/dist/index.js","../node_modules/@azure/identity/dist/commonjs/constants.js","../node_modules/@azure/identity/dist/commonjs/msal/nodeFlows/msalPlugins.js","../node_modules/@azure/identity/dist/commonjs/plugins/consumer.js","../node_modules/@azure/identity/dist/commonjs/errors.js","../node_modules/@azure/identity/dist/commonjs/util/logging.js","../node_modules/@azure/identity/dist/commonjs/util/tracing.js","../node_modules/@azure/identity/dist/commonjs/credentials/chainedTokenCredential.js","../node_modules/uuid/dist/esm-node/rng.js","../node_modules/uuid/dist/esm-node/regex.js","../node_modules/uuid/dist/esm-node/validate.js","../node_modules/uuid/dist/esm-node/stringify.js","../node_modules/uuid/dist/esm-node/v1.js","../node_modules/uuid/dist/esm-node/parse.js","../node_modules/uuid/dist/esm-node/v35.js","../node_modules/uuid/dist/esm-node/md5.js","../node_modules/uuid/dist/esm-node/v3.js","../node_modules/uuid/dist/esm-node/v4.js","../node_modules/uuid/dist/esm-node/sha1.js","../node_modules/uuid/dist/esm-node/v5.js","../node_modules/uuid/dist/esm-node/nil.js","../node_modules/uuid/dist/esm-node/version.js","../node_modules/uuid/dist/esm-node/index.js","../node_modules/@azure/msal-common/lib/index-node-BF0Vz18w.js","../node_modules/@azure/msal-common/lib/index-browser.cjs","../node_modules/@azure/msal-common/lib/index.cjs","../node_modules/safe-buffer/index.js","../node_modules/jws/lib/data-stream.js","../node_modules/ecdsa-sig-formatter/src/param-bytes-for-alg.js","../node_modules/ecdsa-sig-formatter/src/ecdsa-sig-formatter.js","../node_modules/buffer-equal-constant-time/index.js","../node_modules/jwa/index.js","../node_modules/jws/lib/tostring.js","../node_modules/jws/lib/sign-stream.js","../node_modules/jws/lib/verify-stream.js","../node_modules/jws/index.js","../node_modules/jsonwebtoken/decode.js","../node_modules/jsonwebtoken/lib/JsonWebTokenError.js","../node_modules/jsonwebtoken/lib/NotBeforeError.js","../node_modules/jsonwebtoken/lib/TokenExpiredError.js","../node_modules/jsonwebtoken/lib/timespan.js","../node_modules/semver/internal/constants.js","../node_modules/semver/internal/debug.js","../node_modules/semver/internal/re.js","../node_modules/semver/internal/parse-options.js","../node_modules/semver/internal/identifiers.js","../node_modules/semver/classes/semver.js","../node_modules/semver/functions/parse.js","../node_modules/semver/functions/valid.js","../node_modules/semver/functions/clean.js","../node_modules/semver/functions/inc.js","../node_modules/semver/functions/diff.js","../node_modules/semver/functions/major.js","../node_modules/semver/functions/minor.js","../node_modules/semver/functions/patch.js","../node_modules/semver/functions/prerelease.js","../node_modules/semver/functions/compare.js","../node_modules/semver/functions/rcompare.js","../node_modules/semver/functions/compare-loose.js","../node_modules/semver/functions/compare-build.js","../node_modules/semver/functions/sort.js","../node_modules/semver/functions/rsort.js","../node_modules/semver/functions/gt.js","../node_modules/semver/functions/lt.js","../node_modules/semver/functions/eq.js","../node_modules/semver/functions/neq.js","../node_modules/semver/functions/gte.js","../node_modules/semver/functions/lte.js","../node_modules/semver/functions/cmp.js","../node_modules/semver/functions/coerce.js","../node_modules/semver/internal/lrucache.js","../node_modules/semver/classes/range.js","../node_modules/semver/classes/comparator.js","../node_modules/semver/functions/satisfies.js","../node_modules/semver/ranges/to-comparators.js","../node_modules/semver/ranges/max-satisfying.js","../node_modules/semver/ranges/min-satisfying.js","../node_modules/semver/ranges/min-version.js","../node_modules/semver/ranges/valid.js","../node_modules/semver/ranges/outside.js","../node_modules/semver/ranges/gtr.js","../node_modules/semver/ranges/ltr.js","../node_modules/semver/ranges/intersects.js","../node_modules/semver/ranges/simplify.js","../node_modules/semver/ranges/subset.js","../node_modules/semver/index.js","../node_modules/jsonwebtoken/lib/asymmetricKeyDetailsSupported.js","../node_modules/jsonwebtoken/lib/rsaPssKeyDetailsSupported.js","../node_modules/jsonwebtoken/lib/validateAsymmetricKey.js","../node_modules/jsonwebtoken/lib/psSupported.js","../node_modules/jsonwebtoken/verify.js","../node_modules/lodash.includes/index.js","../node_modules/lodash.isboolean/index.js","../node_modules/lodash.isinteger/index.js","../node_modules/lodash.isnumber/index.js","../node_modules/lodash.isplainobject/index.js","../node_modules/lodash.isstring/index.js","../node_modules/lodash.once/index.js","../node_modules/jsonwebtoken/sign.js","../node_modules/jsonwebtoken/index.js","../node_modules/@azure/msal-node/lib/msal-node.cjs","../node_modules/@azure/identity/dist/commonjs/msal/msal.js","../node_modules/@azure/identity/dist/commonjs/msal/utils.js","../node_modules/@azure/identity/dist/commonjs/util/identityTokenEndpoint.js","../node_modules/@azure/identity/dist/commonjs/credentials/managedIdentityCredential/utils.js","../node_modules/@azure/identity/dist/commonjs/client/identityClient.js","../node_modules/@azure/identity/dist/commonjs/regionalAuthority.js","../node_modules/@azure/identity/dist/commonjs/util/processMultiTenantRequest.js","../node_modules/@azure/identity/dist/commonjs/util/tenantIdUtils.js","../node_modules/is-docker/index.js","../node_modules/is-inside-container/index.js","../node_modules/is-wsl/index.js","../node_modules/wsl-utils/index.js","../node_modules/define-lazy-prop/index.js","../node_modules/default-browser-id/index.js","../node_modules/run-applescript/index.js","../node_modules/bundle-name/index.js","../node_modules/default-browser/windows.js","../node_modules/default-browser/index.js","../node_modules/open/index.js","../node_modules/@azure/identity/dist/commonjs/msal/nodeFlows/msalClient.js","../node_modules/@azure/identity/dist/commonjs/credentials/clientCertificateCredential.js","../node_modules/@azure/identity/dist/commonjs/util/scopeUtils.js","../node_modules/@azure/identity/dist/commonjs/credentials/clientSecretCredential.js","../node_modules/@azure/identity/dist/commonjs/credentials/usernamePasswordCredential.js","../node_modules/@azure/identity/dist/commonjs/credentials/environmentCredential.js","../node_modules/@azure/identity/dist/commonjs/credentials/managedIdentityCredential/imdsRetryPolicy.js","../node_modules/@azure/identity/dist/commonjs/credentials/managedIdentityCredential/imdsMsi.js","../node_modules/@azure/identity/dist/commonjs/credentials/clientAssertionCredential.js","../node_modules/@azure/identity/dist/commonjs/credentials/workloadIdentityCredential.js","../node_modules/@azure/identity/dist/commonjs/credentials/managedIdentityCredential/tokenExchangeMsi.js","../node_modules/@azure/identity/dist/commonjs/credentials/managedIdentityCredential/index.js","../node_modules/@azure/identity/dist/commonjs/credentials/azureDeveloperCliCredential.js","../node_modules/@azure/identity/dist/commonjs/util/subscriptionUtils.js","../node_modules/@azure/identity/dist/commonjs/credentials/azureCliCredential.js","../node_modules/@azure/identity/dist/commonjs/util/processUtils.js","../node_modules/@azure/identity/dist/commonjs/credentials/azurePowerShellCredential.js","../node_modules/@azure/identity/dist/commonjs/credentials/visualStudioCodeCredential.js","../node_modules/@azure/identity/dist/commonjs/credentials/brokerCredential.js","../node_modules/@azure/identity/dist/commonjs/credentials/defaultAzureCredentialFunctions.js","../node_modules/@azure/identity/dist/commonjs/credentials/defaultAzureCredential.js","../node_modules/@azure/identity/dist/commonjs/credentials/interactiveBrowserCredential.js","../node_modules/@azure/identity/dist/commonjs/credentials/deviceCodeCredential.js","../node_modules/@azure/identity/dist/commonjs/credentials/azurePipelinesCredential.js","../node_modules/@azure/identity/dist/commonjs/credentials/authorizationCodeCredential.js","../node_modules/@azure/identity/dist/commonjs/credentials/onBehalfOfCredential.js","../node_modules/@azure/identity/dist/commonjs/tokenProvider.js","../node_modules/@azure/identity/dist/commonjs/index.js","../packages/bicep-deploy-common/dist/index.cjs","../src/actionIO.ts","../src/logging.ts","../src/main.ts","../src/index.ts"],"sourcesContent":["\"use strict\";\n// We use any as a valid input type\n/* eslint-disable @typescript-eslint/no-explicit-any */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.toCommandProperties = exports.toCommandValue = void 0;\n/**\n * Sanitizes an input into a string so it can be passed into issueCommand safely\n * @param input input to sanitize into a string\n */\nfunction toCommandValue(input) {\n if (input === null || input === undefined) {\n return '';\n }\n else if (typeof input === 'string' || input instanceof String) {\n return input;\n }\n return JSON.stringify(input);\n}\nexports.toCommandValue = toCommandValue;\n/**\n *\n * @param annotationProperties\n * @returns The command properties to send with the actual annotation command\n * See IssueCommandProperties: https://github.com/actions/runner/blob/main/src/Runner.Worker/ActionCommandManager.cs#L646\n */\nfunction toCommandProperties(annotationProperties) {\n if (!Object.keys(annotationProperties).length) {\n return {};\n }\n return {\n title: annotationProperties.title,\n file: annotationProperties.file,\n line: annotationProperties.startLine,\n endLine: annotationProperties.endLine,\n col: annotationProperties.startColumn,\n endColumn: annotationProperties.endColumn\n };\n}\nexports.toCommandProperties = toCommandProperties;\n//# sourceMappingURL=utils.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.issue = exports.issueCommand = void 0;\nconst os = __importStar(require(\"os\"));\nconst utils_1 = require(\"./utils\");\n/**\n * Commands\n *\n * Command Format:\n * ::name key=value,key=value::message\n *\n * Examples:\n * ::warning::This is the message\n * ::set-env name=MY_VAR::some value\n */\nfunction issueCommand(command, properties, message) {\n const cmd = new Command(command, properties, message);\n process.stdout.write(cmd.toString() + os.EOL);\n}\nexports.issueCommand = issueCommand;\nfunction issue(name, message = '') {\n issueCommand(name, {}, message);\n}\nexports.issue = issue;\nconst CMD_STRING = '::';\nclass Command {\n constructor(command, properties, message) {\n if (!command) {\n command = 'missing.command';\n }\n this.command = command;\n this.properties = properties;\n this.message = message;\n }\n toString() {\n let cmdStr = CMD_STRING + this.command;\n if (this.properties && Object.keys(this.properties).length > 0) {\n cmdStr += ' ';\n let first = true;\n for (const key in this.properties) {\n if (this.properties.hasOwnProperty(key)) {\n const val = this.properties[key];\n if (val) {\n if (first) {\n first = false;\n }\n else {\n cmdStr += ',';\n }\n cmdStr += `${key}=${escapeProperty(val)}`;\n }\n }\n }\n }\n cmdStr += `${CMD_STRING}${escapeData(this.message)}`;\n return cmdStr;\n }\n}\nfunction escapeData(s) {\n return (0, utils_1.toCommandValue)(s)\n .replace(/%/g, '%25')\n .replace(/\\r/g, '%0D')\n .replace(/\\n/g, '%0A');\n}\nfunction escapeProperty(s) {\n return (0, utils_1.toCommandValue)(s)\n .replace(/%/g, '%25')\n .replace(/\\r/g, '%0D')\n .replace(/\\n/g, '%0A')\n .replace(/:/g, '%3A')\n .replace(/,/g, '%2C');\n}\n//# sourceMappingURL=command.js.map","\"use strict\";\n// For internal use, subject to change.\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.prepareKeyValueMessage = exports.issueFileCommand = void 0;\n// We use any as a valid input type\n/* eslint-disable @typescript-eslint/no-explicit-any */\nconst crypto = __importStar(require(\"crypto\"));\nconst fs = __importStar(require(\"fs\"));\nconst os = __importStar(require(\"os\"));\nconst utils_1 = require(\"./utils\");\nfunction issueFileCommand(command, message) {\n const filePath = process.env[`GITHUB_${command}`];\n if (!filePath) {\n throw new Error(`Unable to find environment variable for file command ${command}`);\n }\n if (!fs.existsSync(filePath)) {\n throw new Error(`Missing file at path: ${filePath}`);\n }\n fs.appendFileSync(filePath, `${(0, utils_1.toCommandValue)(message)}${os.EOL}`, {\n encoding: 'utf8'\n });\n}\nexports.issueFileCommand = issueFileCommand;\nfunction prepareKeyValueMessage(key, value) {\n const delimiter = `ghadelimiter_${crypto.randomUUID()}`;\n const convertedValue = (0, utils_1.toCommandValue)(value);\n // These should realistically never happen, but just in case someone finds a\n // way to exploit uuid generation let's not allow keys or values that contain\n // the delimiter.\n if (key.includes(delimiter)) {\n throw new Error(`Unexpected input: name should not contain the delimiter \"${delimiter}\"`);\n }\n if (convertedValue.includes(delimiter)) {\n throw new Error(`Unexpected input: value should not contain the delimiter \"${delimiter}\"`);\n }\n return `${key}<<${delimiter}${os.EOL}${convertedValue}${os.EOL}${delimiter}`;\n}\nexports.prepareKeyValueMessage = prepareKeyValueMessage;\n//# sourceMappingURL=file-command.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.checkBypass = exports.getProxyUrl = void 0;\nfunction getProxyUrl(reqUrl) {\n const usingSsl = reqUrl.protocol === 'https:';\n if (checkBypass(reqUrl)) {\n return undefined;\n }\n const proxyVar = (() => {\n if (usingSsl) {\n return process.env['https_proxy'] || process.env['HTTPS_PROXY'];\n }\n else {\n return process.env['http_proxy'] || process.env['HTTP_PROXY'];\n }\n })();\n if (proxyVar) {\n try {\n return new DecodedURL(proxyVar);\n }\n catch (_a) {\n if (!proxyVar.startsWith('http://') && !proxyVar.startsWith('https://'))\n return new DecodedURL(`http://${proxyVar}`);\n }\n }\n else {\n return undefined;\n }\n}\nexports.getProxyUrl = getProxyUrl;\nfunction checkBypass(reqUrl) {\n if (!reqUrl.hostname) {\n return false;\n }\n const reqHost = reqUrl.hostname;\n if (isLoopbackAddress(reqHost)) {\n return true;\n }\n const noProxy = process.env['no_proxy'] || process.env['NO_PROXY'] || '';\n if (!noProxy) {\n return false;\n }\n // Determine the request port\n let reqPort;\n if (reqUrl.port) {\n reqPort = Number(reqUrl.port);\n }\n else if (reqUrl.protocol === 'http:') {\n reqPort = 80;\n }\n else if (reqUrl.protocol === 'https:') {\n reqPort = 443;\n }\n // Format the request hostname and hostname with port\n const upperReqHosts = [reqUrl.hostname.toUpperCase()];\n if (typeof reqPort === 'number') {\n upperReqHosts.push(`${upperReqHosts[0]}:${reqPort}`);\n }\n // Compare request host against noproxy\n for (const upperNoProxyItem of noProxy\n .split(',')\n .map(x => x.trim().toUpperCase())\n .filter(x => x)) {\n if (upperNoProxyItem === '*' ||\n upperReqHosts.some(x => x === upperNoProxyItem ||\n x.endsWith(`.${upperNoProxyItem}`) ||\n (upperNoProxyItem.startsWith('.') &&\n x.endsWith(`${upperNoProxyItem}`)))) {\n return true;\n }\n }\n return false;\n}\nexports.checkBypass = checkBypass;\nfunction isLoopbackAddress(host) {\n const hostLower = host.toLowerCase();\n return (hostLower === 'localhost' ||\n hostLower.startsWith('127.') ||\n hostLower.startsWith('[::1]') ||\n hostLower.startsWith('[0:0:0:0:0:0:0:1]'));\n}\nclass DecodedURL extends URL {\n constructor(url, base) {\n super(url, base);\n this._decodedUsername = decodeURIComponent(super.username);\n this._decodedPassword = decodeURIComponent(super.password);\n }\n get username() {\n return this._decodedUsername;\n }\n get password() {\n return this._decodedPassword;\n }\n}\n//# sourceMappingURL=proxy.js.map","'use strict';\n\nvar net = require('net');\nvar tls = require('tls');\nvar http = require('http');\nvar https = require('https');\nvar events = require('events');\nvar assert = require('assert');\nvar util = require('util');\n\n\nexports.httpOverHttp = httpOverHttp;\nexports.httpsOverHttp = httpsOverHttp;\nexports.httpOverHttps = httpOverHttps;\nexports.httpsOverHttps = httpsOverHttps;\n\n\nfunction httpOverHttp(options) {\n var agent = new TunnelingAgent(options);\n agent.request = http.request;\n return agent;\n}\n\nfunction httpsOverHttp(options) {\n var agent = new TunnelingAgent(options);\n agent.request = http.request;\n agent.createSocket = createSecureSocket;\n agent.defaultPort = 443;\n return agent;\n}\n\nfunction httpOverHttps(options) {\n var agent = new TunnelingAgent(options);\n agent.request = https.request;\n return agent;\n}\n\nfunction httpsOverHttps(options) {\n var agent = new TunnelingAgent(options);\n agent.request = https.request;\n agent.createSocket = createSecureSocket;\n agent.defaultPort = 443;\n return agent;\n}\n\n\nfunction TunnelingAgent(options) {\n var self = this;\n self.options = options || {};\n self.proxyOptions = self.options.proxy || {};\n self.maxSockets = self.options.maxSockets || http.Agent.defaultMaxSockets;\n self.requests = [];\n self.sockets = [];\n\n self.on('free', function onFree(socket, host, port, localAddress) {\n var options = toOptions(host, port, localAddress);\n for (var i = 0, len = self.requests.length; i < len; ++i) {\n var pending = self.requests[i];\n if (pending.host === options.host && pending.port === options.port) {\n // Detect the request to connect same origin server,\n // reuse the connection.\n self.requests.splice(i, 1);\n pending.request.onSocket(socket);\n return;\n }\n }\n socket.destroy();\n self.removeSocket(socket);\n });\n}\nutil.inherits(TunnelingAgent, events.EventEmitter);\n\nTunnelingAgent.prototype.addRequest = function addRequest(req, host, port, localAddress) {\n var self = this;\n var options = mergeOptions({request: req}, self.options, toOptions(host, port, localAddress));\n\n if (self.sockets.length >= this.maxSockets) {\n // We are over limit so we'll add it to the queue.\n self.requests.push(options);\n return;\n }\n\n // If we are under maxSockets create a new one.\n self.createSocket(options, function(socket) {\n socket.on('free', onFree);\n socket.on('close', onCloseOrRemove);\n socket.on('agentRemove', onCloseOrRemove);\n req.onSocket(socket);\n\n function onFree() {\n self.emit('free', socket, options);\n }\n\n function onCloseOrRemove(err) {\n self.removeSocket(socket);\n socket.removeListener('free', onFree);\n socket.removeListener('close', onCloseOrRemove);\n socket.removeListener('agentRemove', onCloseOrRemove);\n }\n });\n};\n\nTunnelingAgent.prototype.createSocket = function createSocket(options, cb) {\n var self = this;\n var placeholder = {};\n self.sockets.push(placeholder);\n\n var connectOptions = mergeOptions({}, self.proxyOptions, {\n method: 'CONNECT',\n path: options.host + ':' + options.port,\n agent: false,\n headers: {\n host: options.host + ':' + options.port\n }\n });\n if (options.localAddress) {\n connectOptions.localAddress = options.localAddress;\n }\n if (connectOptions.proxyAuth) {\n connectOptions.headers = connectOptions.headers || {};\n connectOptions.headers['Proxy-Authorization'] = 'Basic ' +\n new Buffer(connectOptions.proxyAuth).toString('base64');\n }\n\n debug('making CONNECT request');\n var connectReq = self.request(connectOptions);\n connectReq.useChunkedEncodingByDefault = false; // for v0.6\n connectReq.once('response', onResponse); // for v0.6\n connectReq.once('upgrade', onUpgrade); // for v0.6\n connectReq.once('connect', onConnect); // for v0.7 or later\n connectReq.once('error', onError);\n connectReq.end();\n\n function onResponse(res) {\n // Very hacky. This is necessary to avoid http-parser leaks.\n res.upgrade = true;\n }\n\n function onUpgrade(res, socket, head) {\n // Hacky.\n process.nextTick(function() {\n onConnect(res, socket, head);\n });\n }\n\n function onConnect(res, socket, head) {\n connectReq.removeAllListeners();\n socket.removeAllListeners();\n\n if (res.statusCode !== 200) {\n debug('tunneling socket could not be established, statusCode=%d',\n res.statusCode);\n socket.destroy();\n var error = new Error('tunneling socket could not be established, ' +\n 'statusCode=' + res.statusCode);\n error.code = 'ECONNRESET';\n options.request.emit('error', error);\n self.removeSocket(placeholder);\n return;\n }\n if (head.length > 0) {\n debug('got illegal response body from proxy');\n socket.destroy();\n var error = new Error('got illegal response body from proxy');\n error.code = 'ECONNRESET';\n options.request.emit('error', error);\n self.removeSocket(placeholder);\n return;\n }\n debug('tunneling connection has established');\n self.sockets[self.sockets.indexOf(placeholder)] = socket;\n return cb(socket);\n }\n\n function onError(cause) {\n connectReq.removeAllListeners();\n\n debug('tunneling socket could not be established, cause=%s\\n',\n cause.message, cause.stack);\n var error = new Error('tunneling socket could not be established, ' +\n 'cause=' + cause.message);\n error.code = 'ECONNRESET';\n options.request.emit('error', error);\n self.removeSocket(placeholder);\n }\n};\n\nTunnelingAgent.prototype.removeSocket = function removeSocket(socket) {\n var pos = this.sockets.indexOf(socket)\n if (pos === -1) {\n return;\n }\n this.sockets.splice(pos, 1);\n\n var pending = this.requests.shift();\n if (pending) {\n // If we have pending requests and a socket gets closed a new one\n // needs to be created to take over in the pool for the one that closed.\n this.createSocket(pending, function(socket) {\n pending.request.onSocket(socket);\n });\n }\n};\n\nfunction createSecureSocket(options, cb) {\n var self = this;\n TunnelingAgent.prototype.createSocket.call(self, options, function(socket) {\n var hostHeader = options.request.getHeader('host');\n var tlsOptions = mergeOptions({}, self.options, {\n socket: socket,\n servername: hostHeader ? hostHeader.replace(/:.*$/, '') : options.host\n });\n\n // 0 is dummy port for v0.6\n var secureSocket = tls.connect(0, tlsOptions);\n self.sockets[self.sockets.indexOf(socket)] = secureSocket;\n cb(secureSocket);\n });\n}\n\n\nfunction toOptions(host, port, localAddress) {\n if (typeof host === 'string') { // since v0.10\n return {\n host: host,\n port: port,\n localAddress: localAddress\n };\n }\n return host; // for v0.11 or later\n}\n\nfunction mergeOptions(target) {\n for (var i = 1, len = arguments.length; i < len; ++i) {\n var overrides = arguments[i];\n if (typeof overrides === 'object') {\n var keys = Object.keys(overrides);\n for (var j = 0, keyLen = keys.length; j < keyLen; ++j) {\n var k = keys[j];\n if (overrides[k] !== undefined) {\n target[k] = overrides[k];\n }\n }\n }\n }\n return target;\n}\n\n\nvar debug;\nif (process.env.NODE_DEBUG && /\\btunnel\\b/.test(process.env.NODE_DEBUG)) {\n debug = function() {\n var args = Array.prototype.slice.call(arguments);\n if (typeof args[0] === 'string') {\n args[0] = 'TUNNEL: ' + args[0];\n } else {\n args.unshift('TUNNEL:');\n }\n console.error.apply(console, args);\n }\n} else {\n debug = function() {};\n}\nexports.debug = debug; // for test\n","module.exports = require('./lib/tunnel');\n","module.exports = {\n kClose: Symbol('close'),\n kDestroy: Symbol('destroy'),\n kDispatch: Symbol('dispatch'),\n kUrl: Symbol('url'),\n kWriting: Symbol('writing'),\n kResuming: Symbol('resuming'),\n kQueue: Symbol('queue'),\n kConnect: Symbol('connect'),\n kConnecting: Symbol('connecting'),\n kHeadersList: Symbol('headers list'),\n kKeepAliveDefaultTimeout: Symbol('default keep alive timeout'),\n kKeepAliveMaxTimeout: Symbol('max keep alive timeout'),\n kKeepAliveTimeoutThreshold: Symbol('keep alive timeout threshold'),\n kKeepAliveTimeoutValue: Symbol('keep alive timeout'),\n kKeepAlive: Symbol('keep alive'),\n kHeadersTimeout: Symbol('headers timeout'),\n kBodyTimeout: Symbol('body timeout'),\n kServerName: Symbol('server name'),\n kLocalAddress: Symbol('local address'),\n kHost: Symbol('host'),\n kNoRef: Symbol('no ref'),\n kBodyUsed: Symbol('used'),\n kRunning: Symbol('running'),\n kBlocking: Symbol('blocking'),\n kPending: Symbol('pending'),\n kSize: Symbol('size'),\n kBusy: Symbol('busy'),\n kQueued: Symbol('queued'),\n kFree: Symbol('free'),\n kConnected: Symbol('connected'),\n kClosed: Symbol('closed'),\n kNeedDrain: Symbol('need drain'),\n kReset: Symbol('reset'),\n kDestroyed: Symbol.for('nodejs.stream.destroyed'),\n kMaxHeadersSize: Symbol('max headers size'),\n kRunningIdx: Symbol('running index'),\n kPendingIdx: Symbol('pending index'),\n kError: Symbol('error'),\n kClients: Symbol('clients'),\n kClient: Symbol('client'),\n kParser: Symbol('parser'),\n kOnDestroyed: Symbol('destroy callbacks'),\n kPipelining: Symbol('pipelining'),\n kSocket: Symbol('socket'),\n kHostHeader: Symbol('host header'),\n kConnector: Symbol('connector'),\n kStrictContentLength: Symbol('strict content length'),\n kMaxRedirections: Symbol('maxRedirections'),\n kMaxRequests: Symbol('maxRequestsPerClient'),\n kProxy: Symbol('proxy agent options'),\n kCounter: Symbol('socket request counter'),\n kInterceptors: Symbol('dispatch interceptors'),\n kMaxResponseSize: Symbol('max response size'),\n kHTTP2Session: Symbol('http2Session'),\n kHTTP2SessionState: Symbol('http2Session state'),\n kHTTP2BuildRequest: Symbol('http2 build request'),\n kHTTP1BuildRequest: Symbol('http1 build request'),\n kHTTP2CopyHeaders: Symbol('http2 copy headers'),\n kHTTPConnVersion: Symbol('http connection version'),\n kRetryHandlerDefaultRetry: Symbol('retry agent default retry'),\n kConstruct: Symbol('constructable')\n}\n","'use strict'\n\nclass UndiciError extends Error {\n constructor (message) {\n super(message)\n this.name = 'UndiciError'\n this.code = 'UND_ERR'\n }\n}\n\nclass ConnectTimeoutError extends UndiciError {\n constructor (message) {\n super(message)\n Error.captureStackTrace(this, ConnectTimeoutError)\n this.name = 'ConnectTimeoutError'\n this.message = message || 'Connect Timeout Error'\n this.code = 'UND_ERR_CONNECT_TIMEOUT'\n }\n}\n\nclass HeadersTimeoutError extends UndiciError {\n constructor (message) {\n super(message)\n Error.captureStackTrace(this, HeadersTimeoutError)\n this.name = 'HeadersTimeoutError'\n this.message = message || 'Headers Timeout Error'\n this.code = 'UND_ERR_HEADERS_TIMEOUT'\n }\n}\n\nclass HeadersOverflowError extends UndiciError {\n constructor (message) {\n super(message)\n Error.captureStackTrace(this, HeadersOverflowError)\n this.name = 'HeadersOverflowError'\n this.message = message || 'Headers Overflow Error'\n this.code = 'UND_ERR_HEADERS_OVERFLOW'\n }\n}\n\nclass BodyTimeoutError extends UndiciError {\n constructor (message) {\n super(message)\n Error.captureStackTrace(this, BodyTimeoutError)\n this.name = 'BodyTimeoutError'\n this.message = message || 'Body Timeout Error'\n this.code = 'UND_ERR_BODY_TIMEOUT'\n }\n}\n\nclass ResponseStatusCodeError extends UndiciError {\n constructor (message, statusCode, headers, body) {\n super(message)\n Error.captureStackTrace(this, ResponseStatusCodeError)\n this.name = 'ResponseStatusCodeError'\n this.message = message || 'Response Status Code Error'\n this.code = 'UND_ERR_RESPONSE_STATUS_CODE'\n this.body = body\n this.status = statusCode\n this.statusCode = statusCode\n this.headers = headers\n }\n}\n\nclass InvalidArgumentError extends UndiciError {\n constructor (message) {\n super(message)\n Error.captureStackTrace(this, InvalidArgumentError)\n this.name = 'InvalidArgumentError'\n this.message = message || 'Invalid Argument Error'\n this.code = 'UND_ERR_INVALID_ARG'\n }\n}\n\nclass InvalidReturnValueError extends UndiciError {\n constructor (message) {\n super(message)\n Error.captureStackTrace(this, InvalidReturnValueError)\n this.name = 'InvalidReturnValueError'\n this.message = message || 'Invalid Return Value Error'\n this.code = 'UND_ERR_INVALID_RETURN_VALUE'\n }\n}\n\nclass RequestAbortedError extends UndiciError {\n constructor (message) {\n super(message)\n Error.captureStackTrace(this, RequestAbortedError)\n this.name = 'AbortError'\n this.message = message || 'Request aborted'\n this.code = 'UND_ERR_ABORTED'\n }\n}\n\nclass InformationalError extends UndiciError {\n constructor (message) {\n super(message)\n Error.captureStackTrace(this, InformationalError)\n this.name = 'InformationalError'\n this.message = message || 'Request information'\n this.code = 'UND_ERR_INFO'\n }\n}\n\nclass RequestContentLengthMismatchError extends UndiciError {\n constructor (message) {\n super(message)\n Error.captureStackTrace(this, RequestContentLengthMismatchError)\n this.name = 'RequestContentLengthMismatchError'\n this.message = message || 'Request body length does not match content-length header'\n this.code = 'UND_ERR_REQ_CONTENT_LENGTH_MISMATCH'\n }\n}\n\nclass ResponseContentLengthMismatchError extends UndiciError {\n constructor (message) {\n super(message)\n Error.captureStackTrace(this, ResponseContentLengthMismatchError)\n this.name = 'ResponseContentLengthMismatchError'\n this.message = message || 'Response body length does not match content-length header'\n this.code = 'UND_ERR_RES_CONTENT_LENGTH_MISMATCH'\n }\n}\n\nclass ClientDestroyedError extends UndiciError {\n constructor (message) {\n super(message)\n Error.captureStackTrace(this, ClientDestroyedError)\n this.name = 'ClientDestroyedError'\n this.message = message || 'The client is destroyed'\n this.code = 'UND_ERR_DESTROYED'\n }\n}\n\nclass ClientClosedError extends UndiciError {\n constructor (message) {\n super(message)\n Error.captureStackTrace(this, ClientClosedError)\n this.name = 'ClientClosedError'\n this.message = message || 'The client is closed'\n this.code = 'UND_ERR_CLOSED'\n }\n}\n\nclass SocketError extends UndiciError {\n constructor (message, socket) {\n super(message)\n Error.captureStackTrace(this, SocketError)\n this.name = 'SocketError'\n this.message = message || 'Socket error'\n this.code = 'UND_ERR_SOCKET'\n this.socket = socket\n }\n}\n\nclass NotSupportedError extends UndiciError {\n constructor (message) {\n super(message)\n Error.captureStackTrace(this, NotSupportedError)\n this.name = 'NotSupportedError'\n this.message = message || 'Not supported error'\n this.code = 'UND_ERR_NOT_SUPPORTED'\n }\n}\n\nclass BalancedPoolMissingUpstreamError extends UndiciError {\n constructor (message) {\n super(message)\n Error.captureStackTrace(this, NotSupportedError)\n this.name = 'MissingUpstreamError'\n this.message = message || 'No upstream has been added to the BalancedPool'\n this.code = 'UND_ERR_BPL_MISSING_UPSTREAM'\n }\n}\n\nclass HTTPParserError extends Error {\n constructor (message, code, data) {\n super(message)\n Error.captureStackTrace(this, HTTPParserError)\n this.name = 'HTTPParserError'\n this.code = code ? `HPE_${code}` : undefined\n this.data = data ? data.toString() : undefined\n }\n}\n\nclass ResponseExceededMaxSizeError extends UndiciError {\n constructor (message) {\n super(message)\n Error.captureStackTrace(this, ResponseExceededMaxSizeError)\n this.name = 'ResponseExceededMaxSizeError'\n this.message = message || 'Response content exceeded max size'\n this.code = 'UND_ERR_RES_EXCEEDED_MAX_SIZE'\n }\n}\n\nclass RequestRetryError extends UndiciError {\n constructor (message, code, { headers, data }) {\n super(message)\n Error.captureStackTrace(this, RequestRetryError)\n this.name = 'RequestRetryError'\n this.message = message || 'Request retry error'\n this.code = 'UND_ERR_REQ_RETRY'\n this.statusCode = code\n this.data = data\n this.headers = headers\n }\n}\n\nmodule.exports = {\n HTTPParserError,\n UndiciError,\n HeadersTimeoutError,\n HeadersOverflowError,\n BodyTimeoutError,\n RequestContentLengthMismatchError,\n ConnectTimeoutError,\n ResponseStatusCodeError,\n InvalidArgumentError,\n InvalidReturnValueError,\n RequestAbortedError,\n ClientDestroyedError,\n ClientClosedError,\n InformationalError,\n SocketError,\n NotSupportedError,\n ResponseContentLengthMismatchError,\n BalancedPoolMissingUpstreamError,\n ResponseExceededMaxSizeError,\n RequestRetryError\n}\n","'use strict'\n\n/** @type {Record} */\nconst headerNameLowerCasedRecord = {}\n\n// https://developer.mozilla.org/docs/Web/HTTP/Headers\nconst wellknownHeaderNames = [\n 'Accept',\n 'Accept-Encoding',\n 'Accept-Language',\n 'Accept-Ranges',\n 'Access-Control-Allow-Credentials',\n 'Access-Control-Allow-Headers',\n 'Access-Control-Allow-Methods',\n 'Access-Control-Allow-Origin',\n 'Access-Control-Expose-Headers',\n 'Access-Control-Max-Age',\n 'Access-Control-Request-Headers',\n 'Access-Control-Request-Method',\n 'Age',\n 'Allow',\n 'Alt-Svc',\n 'Alt-Used',\n 'Authorization',\n 'Cache-Control',\n 'Clear-Site-Data',\n 'Connection',\n 'Content-Disposition',\n 'Content-Encoding',\n 'Content-Language',\n 'Content-Length',\n 'Content-Location',\n 'Content-Range',\n 'Content-Security-Policy',\n 'Content-Security-Policy-Report-Only',\n 'Content-Type',\n 'Cookie',\n 'Cross-Origin-Embedder-Policy',\n 'Cross-Origin-Opener-Policy',\n 'Cross-Origin-Resource-Policy',\n 'Date',\n 'Device-Memory',\n 'Downlink',\n 'ECT',\n 'ETag',\n 'Expect',\n 'Expect-CT',\n 'Expires',\n 'Forwarded',\n 'From',\n 'Host',\n 'If-Match',\n 'If-Modified-Since',\n 'If-None-Match',\n 'If-Range',\n 'If-Unmodified-Since',\n 'Keep-Alive',\n 'Last-Modified',\n 'Link',\n 'Location',\n 'Max-Forwards',\n 'Origin',\n 'Permissions-Policy',\n 'Pragma',\n 'Proxy-Authenticate',\n 'Proxy-Authorization',\n 'RTT',\n 'Range',\n 'Referer',\n 'Referrer-Policy',\n 'Refresh',\n 'Retry-After',\n 'Sec-WebSocket-Accept',\n 'Sec-WebSocket-Extensions',\n 'Sec-WebSocket-Key',\n 'Sec-WebSocket-Protocol',\n 'Sec-WebSocket-Version',\n 'Server',\n 'Server-Timing',\n 'Service-Worker-Allowed',\n 'Service-Worker-Navigation-Preload',\n 'Set-Cookie',\n 'SourceMap',\n 'Strict-Transport-Security',\n 'Supports-Loading-Mode',\n 'TE',\n 'Timing-Allow-Origin',\n 'Trailer',\n 'Transfer-Encoding',\n 'Upgrade',\n 'Upgrade-Insecure-Requests',\n 'User-Agent',\n 'Vary',\n 'Via',\n 'WWW-Authenticate',\n 'X-Content-Type-Options',\n 'X-DNS-Prefetch-Control',\n 'X-Frame-Options',\n 'X-Permitted-Cross-Domain-Policies',\n 'X-Powered-By',\n 'X-Requested-With',\n 'X-XSS-Protection'\n]\n\nfor (let i = 0; i < wellknownHeaderNames.length; ++i) {\n const key = wellknownHeaderNames[i]\n const lowerCasedKey = key.toLowerCase()\n headerNameLowerCasedRecord[key] = headerNameLowerCasedRecord[lowerCasedKey] =\n lowerCasedKey\n}\n\n// Note: object prototypes should not be able to be referenced. e.g. `Object#hasOwnProperty`.\nObject.setPrototypeOf(headerNameLowerCasedRecord, null)\n\nmodule.exports = {\n wellknownHeaderNames,\n headerNameLowerCasedRecord\n}\n","'use strict'\n\nconst assert = require('assert')\nconst { kDestroyed, kBodyUsed } = require('./symbols')\nconst { IncomingMessage } = require('http')\nconst stream = require('stream')\nconst net = require('net')\nconst { InvalidArgumentError } = require('./errors')\nconst { Blob } = require('buffer')\nconst nodeUtil = require('util')\nconst { stringify } = require('querystring')\nconst { headerNameLowerCasedRecord } = require('./constants')\n\nconst [nodeMajor, nodeMinor] = process.versions.node.split('.').map(v => Number(v))\n\nfunction nop () {}\n\nfunction isStream (obj) {\n return obj && typeof obj === 'object' && typeof obj.pipe === 'function' && typeof obj.on === 'function'\n}\n\n// based on https://github.com/node-fetch/fetch-blob/blob/8ab587d34080de94140b54f07168451e7d0b655e/index.js#L229-L241 (MIT License)\nfunction isBlobLike (object) {\n return (Blob && object instanceof Blob) || (\n object &&\n typeof object === 'object' &&\n (typeof object.stream === 'function' ||\n typeof object.arrayBuffer === 'function') &&\n /^(Blob|File)$/.test(object[Symbol.toStringTag])\n )\n}\n\nfunction buildURL (url, queryParams) {\n if (url.includes('?') || url.includes('#')) {\n throw new Error('Query params cannot be passed when url already contains \"?\" or \"#\".')\n }\n\n const stringified = stringify(queryParams)\n\n if (stringified) {\n url += '?' + stringified\n }\n\n return url\n}\n\nfunction parseURL (url) {\n if (typeof url === 'string') {\n url = new URL(url)\n\n if (!/^https?:/.test(url.origin || url.protocol)) {\n throw new InvalidArgumentError('Invalid URL protocol: the URL must start with `http:` or `https:`.')\n }\n\n return url\n }\n\n if (!url || typeof url !== 'object') {\n throw new InvalidArgumentError('Invalid URL: The URL argument must be a non-null object.')\n }\n\n if (!/^https?:/.test(url.origin || url.protocol)) {\n throw new InvalidArgumentError('Invalid URL protocol: the URL must start with `http:` or `https:`.')\n }\n\n if (!(url instanceof URL)) {\n if (url.port != null && url.port !== '' && !Number.isFinite(parseInt(url.port))) {\n throw new InvalidArgumentError('Invalid URL: port must be a valid integer or a string representation of an integer.')\n }\n\n if (url.path != null && typeof url.path !== 'string') {\n throw new InvalidArgumentError('Invalid URL path: the path must be a string or null/undefined.')\n }\n\n if (url.pathname != null && typeof url.pathname !== 'string') {\n throw new InvalidArgumentError('Invalid URL pathname: the pathname must be a string or null/undefined.')\n }\n\n if (url.hostname != null && typeof url.hostname !== 'string') {\n throw new InvalidArgumentError('Invalid URL hostname: the hostname must be a string or null/undefined.')\n }\n\n if (url.origin != null && typeof url.origin !== 'string') {\n throw new InvalidArgumentError('Invalid URL origin: the origin must be a string or null/undefined.')\n }\n\n const port = url.port != null\n ? url.port\n : (url.protocol === 'https:' ? 443 : 80)\n let origin = url.origin != null\n ? url.origin\n : `${url.protocol}//${url.hostname}:${port}`\n let path = url.path != null\n ? url.path\n : `${url.pathname || ''}${url.search || ''}`\n\n if (origin.endsWith('/')) {\n origin = origin.substring(0, origin.length - 1)\n }\n\n if (path && !path.startsWith('/')) {\n path = `/${path}`\n }\n // new URL(path, origin) is unsafe when `path` contains an absolute URL\n // From https://developer.mozilla.org/en-US/docs/Web/API/URL/URL:\n // If first parameter is a relative URL, second param is required, and will be used as the base URL.\n // If first parameter is an absolute URL, a given second param will be ignored.\n url = new URL(origin + path)\n }\n\n return url\n}\n\nfunction parseOrigin (url) {\n url = parseURL(url)\n\n if (url.pathname !== '/' || url.search || url.hash) {\n throw new InvalidArgumentError('invalid url')\n }\n\n return url\n}\n\nfunction getHostname (host) {\n if (host[0] === '[') {\n const idx = host.indexOf(']')\n\n assert(idx !== -1)\n return host.substring(1, idx)\n }\n\n const idx = host.indexOf(':')\n if (idx === -1) return host\n\n return host.substring(0, idx)\n}\n\n// IP addresses are not valid server names per RFC6066\n// > Currently, the only server names supported are DNS hostnames\nfunction getServerName (host) {\n if (!host) {\n return null\n }\n\n assert.strictEqual(typeof host, 'string')\n\n const servername = getHostname(host)\n if (net.isIP(servername)) {\n return ''\n }\n\n return servername\n}\n\nfunction deepClone (obj) {\n return JSON.parse(JSON.stringify(obj))\n}\n\nfunction isAsyncIterable (obj) {\n return !!(obj != null && typeof obj[Symbol.asyncIterator] === 'function')\n}\n\nfunction isIterable (obj) {\n return !!(obj != null && (typeof obj[Symbol.iterator] === 'function' || typeof obj[Symbol.asyncIterator] === 'function'))\n}\n\nfunction bodyLength (body) {\n if (body == null) {\n return 0\n } else if (isStream(body)) {\n const state = body._readableState\n return state && state.objectMode === false && state.ended === true && Number.isFinite(state.length)\n ? state.length\n : null\n } else if (isBlobLike(body)) {\n return body.size != null ? body.size : null\n } else if (isBuffer(body)) {\n return body.byteLength\n }\n\n return null\n}\n\nfunction isDestroyed (stream) {\n return !stream || !!(stream.destroyed || stream[kDestroyed])\n}\n\nfunction isReadableAborted (stream) {\n const state = stream && stream._readableState\n return isDestroyed(stream) && state && !state.endEmitted\n}\n\nfunction destroy (stream, err) {\n if (stream == null || !isStream(stream) || isDestroyed(stream)) {\n return\n }\n\n if (typeof stream.destroy === 'function') {\n if (Object.getPrototypeOf(stream).constructor === IncomingMessage) {\n // See: https://github.com/nodejs/node/pull/38505/files\n stream.socket = null\n }\n\n stream.destroy(err)\n } else if (err) {\n process.nextTick((stream, err) => {\n stream.emit('error', err)\n }, stream, err)\n }\n\n if (stream.destroyed !== true) {\n stream[kDestroyed] = true\n }\n}\n\nconst KEEPALIVE_TIMEOUT_EXPR = /timeout=(\\d+)/\nfunction parseKeepAliveTimeout (val) {\n const m = val.toString().match(KEEPALIVE_TIMEOUT_EXPR)\n return m ? parseInt(m[1], 10) * 1000 : null\n}\n\n/**\n * Retrieves a header name and returns its lowercase value.\n * @param {string | Buffer} value Header name\n * @returns {string}\n */\nfunction headerNameToString (value) {\n return headerNameLowerCasedRecord[value] || value.toLowerCase()\n}\n\nfunction parseHeaders (headers, obj = {}) {\n // For H2 support\n if (!Array.isArray(headers)) return headers\n\n for (let i = 0; i < headers.length; i += 2) {\n const key = headers[i].toString().toLowerCase()\n let val = obj[key]\n\n if (!val) {\n if (Array.isArray(headers[i + 1])) {\n obj[key] = headers[i + 1].map(x => x.toString('utf8'))\n } else {\n obj[key] = headers[i + 1].toString('utf8')\n }\n } else {\n if (!Array.isArray(val)) {\n val = [val]\n obj[key] = val\n }\n val.push(headers[i + 1].toString('utf8'))\n }\n }\n\n // See https://github.com/nodejs/node/pull/46528\n if ('content-length' in obj && 'content-disposition' in obj) {\n obj['content-disposition'] = Buffer.from(obj['content-disposition']).toString('latin1')\n }\n\n return obj\n}\n\nfunction parseRawHeaders (headers) {\n const ret = []\n let hasContentLength = false\n let contentDispositionIdx = -1\n\n for (let n = 0; n < headers.length; n += 2) {\n const key = headers[n + 0].toString()\n const val = headers[n + 1].toString('utf8')\n\n if (key.length === 14 && (key === 'content-length' || key.toLowerCase() === 'content-length')) {\n ret.push(key, val)\n hasContentLength = true\n } else if (key.length === 19 && (key === 'content-disposition' || key.toLowerCase() === 'content-disposition')) {\n contentDispositionIdx = ret.push(key, val) - 1\n } else {\n ret.push(key, val)\n }\n }\n\n // See https://github.com/nodejs/node/pull/46528\n if (hasContentLength && contentDispositionIdx !== -1) {\n ret[contentDispositionIdx] = Buffer.from(ret[contentDispositionIdx]).toString('latin1')\n }\n\n return ret\n}\n\nfunction isBuffer (buffer) {\n // See, https://github.com/mcollina/undici/pull/319\n return buffer instanceof Uint8Array || Buffer.isBuffer(buffer)\n}\n\nfunction validateHandler (handler, method, upgrade) {\n if (!handler || typeof handler !== 'object') {\n throw new InvalidArgumentError('handler must be an object')\n }\n\n if (typeof handler.onConnect !== 'function') {\n throw new InvalidArgumentError('invalid onConnect method')\n }\n\n if (typeof handler.onError !== 'function') {\n throw new InvalidArgumentError('invalid onError method')\n }\n\n if (typeof handler.onBodySent !== 'function' && handler.onBodySent !== undefined) {\n throw new InvalidArgumentError('invalid onBodySent method')\n }\n\n if (upgrade || method === 'CONNECT') {\n if (typeof handler.onUpgrade !== 'function') {\n throw new InvalidArgumentError('invalid onUpgrade method')\n }\n } else {\n if (typeof handler.onHeaders !== 'function') {\n throw new InvalidArgumentError('invalid onHeaders method')\n }\n\n if (typeof handler.onData !== 'function') {\n throw new InvalidArgumentError('invalid onData method')\n }\n\n if (typeof handler.onComplete !== 'function') {\n throw new InvalidArgumentError('invalid onComplete method')\n }\n }\n}\n\n// A body is disturbed if it has been read from and it cannot\n// be re-used without losing state or data.\nfunction isDisturbed (body) {\n return !!(body && (\n stream.isDisturbed\n ? stream.isDisturbed(body) || body[kBodyUsed] // TODO (fix): Why is body[kBodyUsed] needed?\n : body[kBodyUsed] ||\n body.readableDidRead ||\n (body._readableState && body._readableState.dataEmitted) ||\n isReadableAborted(body)\n ))\n}\n\nfunction isErrored (body) {\n return !!(body && (\n stream.isErrored\n ? stream.isErrored(body)\n : /state: 'errored'/.test(nodeUtil.inspect(body)\n )))\n}\n\nfunction isReadable (body) {\n return !!(body && (\n stream.isReadable\n ? stream.isReadable(body)\n : /state: 'readable'/.test(nodeUtil.inspect(body)\n )))\n}\n\nfunction getSocketInfo (socket) {\n return {\n localAddress: socket.localAddress,\n localPort: socket.localPort,\n remoteAddress: socket.remoteAddress,\n remotePort: socket.remotePort,\n remoteFamily: socket.remoteFamily,\n timeout: socket.timeout,\n bytesWritten: socket.bytesWritten,\n bytesRead: socket.bytesRead\n }\n}\n\nasync function * convertIterableToBuffer (iterable) {\n for await (const chunk of iterable) {\n yield Buffer.isBuffer(chunk) ? chunk : Buffer.from(chunk)\n }\n}\n\nlet ReadableStream\nfunction ReadableStreamFrom (iterable) {\n if (!ReadableStream) {\n ReadableStream = require('stream/web').ReadableStream\n }\n\n if (ReadableStream.from) {\n return ReadableStream.from(convertIterableToBuffer(iterable))\n }\n\n let iterator\n return new ReadableStream(\n {\n async start () {\n iterator = iterable[Symbol.asyncIterator]()\n },\n async pull (controller) {\n const { done, value } = await iterator.next()\n if (done) {\n queueMicrotask(() => {\n controller.close()\n })\n } else {\n const buf = Buffer.isBuffer(value) ? value : Buffer.from(value)\n controller.enqueue(new Uint8Array(buf))\n }\n return controller.desiredSize > 0\n },\n async cancel (reason) {\n await iterator.return()\n }\n },\n 0\n )\n}\n\n// The chunk should be a FormData instance and contains\n// all the required methods.\nfunction isFormDataLike (object) {\n return (\n object &&\n typeof object === 'object' &&\n typeof object.append === 'function' &&\n typeof object.delete === 'function' &&\n typeof object.get === 'function' &&\n typeof object.getAll === 'function' &&\n typeof object.has === 'function' &&\n typeof object.set === 'function' &&\n object[Symbol.toStringTag] === 'FormData'\n )\n}\n\nfunction throwIfAborted (signal) {\n if (!signal) { return }\n if (typeof signal.throwIfAborted === 'function') {\n signal.throwIfAborted()\n } else {\n if (signal.aborted) {\n // DOMException not available < v17.0.0\n const err = new Error('The operation was aborted')\n err.name = 'AbortError'\n throw err\n }\n }\n}\n\nfunction addAbortListener (signal, listener) {\n if ('addEventListener' in signal) {\n signal.addEventListener('abort', listener, { once: true })\n return () => signal.removeEventListener('abort', listener)\n }\n signal.addListener('abort', listener)\n return () => signal.removeListener('abort', listener)\n}\n\nconst hasToWellFormed = !!String.prototype.toWellFormed\n\n/**\n * @param {string} val\n */\nfunction toUSVString (val) {\n if (hasToWellFormed) {\n return `${val}`.toWellFormed()\n } else if (nodeUtil.toUSVString) {\n return nodeUtil.toUSVString(val)\n }\n\n return `${val}`\n}\n\n// Parsed accordingly to RFC 9110\n// https://www.rfc-editor.org/rfc/rfc9110#field.content-range\nfunction parseRangeHeader (range) {\n if (range == null || range === '') return { start: 0, end: null, size: null }\n\n const m = range ? range.match(/^bytes (\\d+)-(\\d+)\\/(\\d+)?$/) : null\n return m\n ? {\n start: parseInt(m[1]),\n end: m[2] ? parseInt(m[2]) : null,\n size: m[3] ? parseInt(m[3]) : null\n }\n : null\n}\n\nconst kEnumerableProperty = Object.create(null)\nkEnumerableProperty.enumerable = true\n\nmodule.exports = {\n kEnumerableProperty,\n nop,\n isDisturbed,\n isErrored,\n isReadable,\n toUSVString,\n isReadableAborted,\n isBlobLike,\n parseOrigin,\n parseURL,\n getServerName,\n isStream,\n isIterable,\n isAsyncIterable,\n isDestroyed,\n headerNameToString,\n parseRawHeaders,\n parseHeaders,\n parseKeepAliveTimeout,\n destroy,\n bodyLength,\n deepClone,\n ReadableStreamFrom,\n isBuffer,\n validateHandler,\n getSocketInfo,\n isFormDataLike,\n buildURL,\n throwIfAborted,\n addAbortListener,\n parseRangeHeader,\n nodeMajor,\n nodeMinor,\n nodeHasAutoSelectFamily: nodeMajor > 18 || (nodeMajor === 18 && nodeMinor >= 13),\n safeHTTPMethods: ['GET', 'HEAD', 'OPTIONS', 'TRACE']\n}\n","'use strict'\n\nlet fastNow = Date.now()\nlet fastNowTimeout\n\nconst fastTimers = []\n\nfunction onTimeout () {\n fastNow = Date.now()\n\n let len = fastTimers.length\n let idx = 0\n while (idx < len) {\n const timer = fastTimers[idx]\n\n if (timer.state === 0) {\n timer.state = fastNow + timer.delay\n } else if (timer.state > 0 && fastNow >= timer.state) {\n timer.state = -1\n timer.callback(timer.opaque)\n }\n\n if (timer.state === -1) {\n timer.state = -2\n if (idx !== len - 1) {\n fastTimers[idx] = fastTimers.pop()\n } else {\n fastTimers.pop()\n }\n len -= 1\n } else {\n idx += 1\n }\n }\n\n if (fastTimers.length > 0) {\n refreshTimeout()\n }\n}\n\nfunction refreshTimeout () {\n if (fastNowTimeout && fastNowTimeout.refresh) {\n fastNowTimeout.refresh()\n } else {\n clearTimeout(fastNowTimeout)\n fastNowTimeout = setTimeout(onTimeout, 1e3)\n if (fastNowTimeout.unref) {\n fastNowTimeout.unref()\n }\n }\n}\n\nclass Timeout {\n constructor (callback, delay, opaque) {\n this.callback = callback\n this.delay = delay\n this.opaque = opaque\n\n // -2 not in timer list\n // -1 in timer list but inactive\n // 0 in timer list waiting for time\n // > 0 in timer list waiting for time to expire\n this.state = -2\n\n this.refresh()\n }\n\n refresh () {\n if (this.state === -2) {\n fastTimers.push(this)\n if (!fastNowTimeout || fastTimers.length === 1) {\n refreshTimeout()\n }\n }\n\n this.state = 0\n }\n\n clear () {\n this.state = -1\n }\n}\n\nmodule.exports = {\n setTimeout (callback, delay, opaque) {\n return delay < 1e3\n ? setTimeout(callback, delay, opaque)\n : new Timeout(callback, delay, opaque)\n },\n clearTimeout (timeout) {\n if (timeout instanceof Timeout) {\n timeout.clear()\n } else {\n clearTimeout(timeout)\n }\n }\n}\n","'use strict'\n\n/**\n * Copyright Brian White. All rights reserved.\n *\n * @see https://github.com/mscdex/streamsearch\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n *\n * Based heavily on the Streaming Boyer-Moore-Horspool C++ implementation\n * by Hongli Lai at: https://github.com/FooBarWidget/boyer-moore-horspool\n */\nconst EventEmitter = require('node:events').EventEmitter\nconst inherits = require('node:util').inherits\n\nfunction SBMH (needle) {\n if (typeof needle === 'string') {\n needle = Buffer.from(needle)\n }\n\n if (!Buffer.isBuffer(needle)) {\n throw new TypeError('The needle has to be a String or a Buffer.')\n }\n\n const needleLength = needle.length\n\n if (needleLength === 0) {\n throw new Error('The needle cannot be an empty String/Buffer.')\n }\n\n if (needleLength > 256) {\n throw new Error('The needle cannot have a length bigger than 256.')\n }\n\n this.maxMatches = Infinity\n this.matches = 0\n\n this._occ = new Array(256)\n .fill(needleLength) // Initialize occurrence table.\n this._lookbehind_size = 0\n this._needle = needle\n this._bufpos = 0\n\n this._lookbehind = Buffer.alloc(needleLength)\n\n // Populate occurrence table with analysis of the needle,\n // ignoring last letter.\n for (var i = 0; i < needleLength - 1; ++i) { // eslint-disable-line no-var\n this._occ[needle[i]] = needleLength - 1 - i\n }\n}\ninherits(SBMH, EventEmitter)\n\nSBMH.prototype.reset = function () {\n this._lookbehind_size = 0\n this.matches = 0\n this._bufpos = 0\n}\n\nSBMH.prototype.push = function (chunk, pos) {\n if (!Buffer.isBuffer(chunk)) {\n chunk = Buffer.from(chunk, 'binary')\n }\n const chlen = chunk.length\n this._bufpos = pos || 0\n let r\n while (r !== chlen && this.matches < this.maxMatches) { r = this._sbmh_feed(chunk) }\n return r\n}\n\nSBMH.prototype._sbmh_feed = function (data) {\n const len = data.length\n const needle = this._needle\n const needleLength = needle.length\n const lastNeedleChar = needle[needleLength - 1]\n\n // Positive: points to a position in `data`\n // pos == 3 points to data[3]\n // Negative: points to a position in the lookbehind buffer\n // pos == -2 points to lookbehind[lookbehind_size - 2]\n let pos = -this._lookbehind_size\n let ch\n\n if (pos < 0) {\n // Lookbehind buffer is not empty. Perform Boyer-Moore-Horspool\n // search with character lookup code that considers both the\n // lookbehind buffer and the current round's haystack data.\n //\n // Loop until\n // there is a match.\n // or until\n // we've moved past the position that requires the\n // lookbehind buffer. In this case we switch to the\n // optimized loop.\n // or until\n // the character to look at lies outside the haystack.\n while (pos < 0 && pos <= len - needleLength) {\n ch = this._sbmh_lookup_char(data, pos + needleLength - 1)\n\n if (\n ch === lastNeedleChar &&\n this._sbmh_memcmp(data, pos, needleLength - 1)\n ) {\n this._lookbehind_size = 0\n ++this.matches\n this.emit('info', true)\n\n return (this._bufpos = pos + needleLength)\n }\n pos += this._occ[ch]\n }\n\n // No match.\n\n if (pos < 0) {\n // There's too few data for Boyer-Moore-Horspool to run,\n // so let's use a different algorithm to skip as much as\n // we can.\n // Forward pos until\n // the trailing part of lookbehind + data\n // looks like the beginning of the needle\n // or until\n // pos == 0\n while (pos < 0 && !this._sbmh_memcmp(data, pos, len - pos)) { ++pos }\n }\n\n if (pos >= 0) {\n // Discard lookbehind buffer.\n this.emit('info', false, this._lookbehind, 0, this._lookbehind_size)\n this._lookbehind_size = 0\n } else {\n // Cut off part of the lookbehind buffer that has\n // been processed and append the entire haystack\n // into it.\n const bytesToCutOff = this._lookbehind_size + pos\n if (bytesToCutOff > 0) {\n // The cut off data is guaranteed not to contain the needle.\n this.emit('info', false, this._lookbehind, 0, bytesToCutOff)\n }\n\n this._lookbehind.copy(this._lookbehind, 0, bytesToCutOff,\n this._lookbehind_size - bytesToCutOff)\n this._lookbehind_size -= bytesToCutOff\n\n data.copy(this._lookbehind, this._lookbehind_size)\n this._lookbehind_size += len\n\n this._bufpos = len\n return len\n }\n }\n\n pos += (pos >= 0) * this._bufpos\n\n // Lookbehind buffer is now empty. We only need to check if the\n // needle is in the haystack.\n if (data.indexOf(needle, pos) !== -1) {\n pos = data.indexOf(needle, pos)\n ++this.matches\n if (pos > 0) { this.emit('info', true, data, this._bufpos, pos) } else { this.emit('info', true) }\n\n return (this._bufpos = pos + needleLength)\n } else {\n pos = len - needleLength\n }\n\n // There was no match. If there's trailing haystack data that we cannot\n // match yet using the Boyer-Moore-Horspool algorithm (because the trailing\n // data is less than the needle size) then match using a modified\n // algorithm that starts matching from the beginning instead of the end.\n // Whatever trailing data is left after running this algorithm is added to\n // the lookbehind buffer.\n while (\n pos < len &&\n (\n data[pos] !== needle[0] ||\n (\n (Buffer.compare(\n data.subarray(pos, pos + len - pos),\n needle.subarray(0, len - pos)\n ) !== 0)\n )\n )\n ) {\n ++pos\n }\n if (pos < len) {\n data.copy(this._lookbehind, 0, pos, pos + (len - pos))\n this._lookbehind_size = len - pos\n }\n\n // Everything until pos is guaranteed not to contain needle data.\n if (pos > 0) { this.emit('info', false, data, this._bufpos, pos < len ? pos : len) }\n\n this._bufpos = len\n return len\n}\n\nSBMH.prototype._sbmh_lookup_char = function (data, pos) {\n return (pos < 0)\n ? this._lookbehind[this._lookbehind_size + pos]\n : data[pos]\n}\n\nSBMH.prototype._sbmh_memcmp = function (data, pos, len) {\n for (var i = 0; i < len; ++i) { // eslint-disable-line no-var\n if (this._sbmh_lookup_char(data, pos + i) !== this._needle[i]) { return false }\n }\n return true\n}\n\nmodule.exports = SBMH\n","'use strict'\n\nconst inherits = require('node:util').inherits\nconst ReadableStream = require('node:stream').Readable\n\nfunction PartStream (opts) {\n ReadableStream.call(this, opts)\n}\ninherits(PartStream, ReadableStream)\n\nPartStream.prototype._read = function (n) {}\n\nmodule.exports = PartStream\n","'use strict'\n\nmodule.exports = function getLimit (limits, name, defaultLimit) {\n if (\n !limits ||\n limits[name] === undefined ||\n limits[name] === null\n ) { return defaultLimit }\n\n if (\n typeof limits[name] !== 'number' ||\n isNaN(limits[name])\n ) { throw new TypeError('Limit ' + name + ' is not a valid number') }\n\n return limits[name]\n}\n","'use strict'\n\nconst EventEmitter = require('node:events').EventEmitter\nconst inherits = require('node:util').inherits\nconst getLimit = require('../../../lib/utils/getLimit')\n\nconst StreamSearch = require('../../streamsearch/sbmh')\n\nconst B_DCRLF = Buffer.from('\\r\\n\\r\\n')\nconst RE_CRLF = /\\r\\n/g\nconst RE_HDR = /^([^:]+):[ \\t]?([\\x00-\\xFF]+)?$/ // eslint-disable-line no-control-regex\n\nfunction HeaderParser (cfg) {\n EventEmitter.call(this)\n\n cfg = cfg || {}\n const self = this\n this.nread = 0\n this.maxed = false\n this.npairs = 0\n this.maxHeaderPairs = getLimit(cfg, 'maxHeaderPairs', 2000)\n this.maxHeaderSize = getLimit(cfg, 'maxHeaderSize', 80 * 1024)\n this.buffer = ''\n this.header = {}\n this.finished = false\n this.ss = new StreamSearch(B_DCRLF)\n this.ss.on('info', function (isMatch, data, start, end) {\n if (data && !self.maxed) {\n if (self.nread + end - start >= self.maxHeaderSize) {\n end = self.maxHeaderSize - self.nread + start\n self.nread = self.maxHeaderSize\n self.maxed = true\n } else { self.nread += (end - start) }\n\n self.buffer += data.toString('binary', start, end)\n }\n if (isMatch) { self._finish() }\n })\n}\ninherits(HeaderParser, EventEmitter)\n\nHeaderParser.prototype.push = function (data) {\n const r = this.ss.push(data)\n if (this.finished) { return r }\n}\n\nHeaderParser.prototype.reset = function () {\n this.finished = false\n this.buffer = ''\n this.header = {}\n this.ss.reset()\n}\n\nHeaderParser.prototype._finish = function () {\n if (this.buffer) { this._parseHeader() }\n this.ss.matches = this.ss.maxMatches\n const header = this.header\n this.header = {}\n this.buffer = ''\n this.finished = true\n this.nread = this.npairs = 0\n this.maxed = false\n this.emit('header', header)\n}\n\nHeaderParser.prototype._parseHeader = function () {\n if (this.npairs === this.maxHeaderPairs) { return }\n\n const lines = this.buffer.split(RE_CRLF)\n const len = lines.length\n let m, h\n\n for (var i = 0; i < len; ++i) { // eslint-disable-line no-var\n if (lines[i].length === 0) { continue }\n if (lines[i][0] === '\\t' || lines[i][0] === ' ') {\n // folded header content\n // RFC2822 says to just remove the CRLF and not the whitespace following\n // it, so we follow the RFC and include the leading whitespace ...\n if (h) {\n this.header[h][this.header[h].length - 1] += lines[i]\n continue\n }\n }\n\n const posColon = lines[i].indexOf(':')\n if (\n posColon === -1 ||\n posColon === 0\n ) {\n return\n }\n m = RE_HDR.exec(lines[i])\n h = m[1].toLowerCase()\n this.header[h] = this.header[h] || []\n this.header[h].push((m[2] || ''))\n if (++this.npairs === this.maxHeaderPairs) { break }\n }\n}\n\nmodule.exports = HeaderParser\n","'use strict'\n\nconst WritableStream = require('node:stream').Writable\nconst inherits = require('node:util').inherits\n\nconst StreamSearch = require('../../streamsearch/sbmh')\n\nconst PartStream = require('./PartStream')\nconst HeaderParser = require('./HeaderParser')\n\nconst DASH = 45\nconst B_ONEDASH = Buffer.from('-')\nconst B_CRLF = Buffer.from('\\r\\n')\nconst EMPTY_FN = function () {}\n\nfunction Dicer (cfg) {\n if (!(this instanceof Dicer)) { return new Dicer(cfg) }\n WritableStream.call(this, cfg)\n\n if (!cfg || (!cfg.headerFirst && typeof cfg.boundary !== 'string')) { throw new TypeError('Boundary required') }\n\n if (typeof cfg.boundary === 'string') { this.setBoundary(cfg.boundary) } else { this._bparser = undefined }\n\n this._headerFirst = cfg.headerFirst\n\n this._dashes = 0\n this._parts = 0\n this._finished = false\n this._realFinish = false\n this._isPreamble = true\n this._justMatched = false\n this._firstWrite = true\n this._inHeader = true\n this._part = undefined\n this._cb = undefined\n this._ignoreData = false\n this._partOpts = { highWaterMark: cfg.partHwm }\n this._pause = false\n\n const self = this\n this._hparser = new HeaderParser(cfg)\n this._hparser.on('header', function (header) {\n self._inHeader = false\n self._part.emit('header', header)\n })\n}\ninherits(Dicer, WritableStream)\n\nDicer.prototype.emit = function (ev) {\n if (ev === 'finish' && !this._realFinish) {\n if (!this._finished) {\n const self = this\n process.nextTick(function () {\n self.emit('error', new Error('Unexpected end of multipart data'))\n if (self._part && !self._ignoreData) {\n const type = (self._isPreamble ? 'Preamble' : 'Part')\n self._part.emit('error', new Error(type + ' terminated early due to unexpected end of multipart data'))\n self._part.push(null)\n process.nextTick(function () {\n self._realFinish = true\n self.emit('finish')\n self._realFinish = false\n })\n return\n }\n self._realFinish = true\n self.emit('finish')\n self._realFinish = false\n })\n }\n } else { WritableStream.prototype.emit.apply(this, arguments) }\n}\n\nDicer.prototype._write = function (data, encoding, cb) {\n // ignore unexpected data (e.g. extra trailer data after finished)\n if (!this._hparser && !this._bparser) { return cb() }\n\n if (this._headerFirst && this._isPreamble) {\n if (!this._part) {\n this._part = new PartStream(this._partOpts)\n if (this.listenerCount('preamble') !== 0) { this.emit('preamble', this._part) } else { this._ignore() }\n }\n const r = this._hparser.push(data)\n if (!this._inHeader && r !== undefined && r < data.length) { data = data.slice(r) } else { return cb() }\n }\n\n // allows for \"easier\" testing\n if (this._firstWrite) {\n this._bparser.push(B_CRLF)\n this._firstWrite = false\n }\n\n this._bparser.push(data)\n\n if (this._pause) { this._cb = cb } else { cb() }\n}\n\nDicer.prototype.reset = function () {\n this._part = undefined\n this._bparser = undefined\n this._hparser = undefined\n}\n\nDicer.prototype.setBoundary = function (boundary) {\n const self = this\n this._bparser = new StreamSearch('\\r\\n--' + boundary)\n this._bparser.on('info', function (isMatch, data, start, end) {\n self._oninfo(isMatch, data, start, end)\n })\n}\n\nDicer.prototype._ignore = function () {\n if (this._part && !this._ignoreData) {\n this._ignoreData = true\n this._part.on('error', EMPTY_FN)\n // we must perform some kind of read on the stream even though we are\n // ignoring the data, otherwise node's Readable stream will not emit 'end'\n // after pushing null to the stream\n this._part.resume()\n }\n}\n\nDicer.prototype._oninfo = function (isMatch, data, start, end) {\n let buf; const self = this; let i = 0; let r; let shouldWriteMore = true\n\n if (!this._part && this._justMatched && data) {\n while (this._dashes < 2 && (start + i) < end) {\n if (data[start + i] === DASH) {\n ++i\n ++this._dashes\n } else {\n if (this._dashes) { buf = B_ONEDASH }\n this._dashes = 0\n break\n }\n }\n if (this._dashes === 2) {\n if ((start + i) < end && this.listenerCount('trailer') !== 0) { this.emit('trailer', data.slice(start + i, end)) }\n this.reset()\n this._finished = true\n // no more parts will be added\n if (self._parts === 0) {\n self._realFinish = true\n self.emit('finish')\n self._realFinish = false\n }\n }\n if (this._dashes) { return }\n }\n if (this._justMatched) { this._justMatched = false }\n if (!this._part) {\n this._part = new PartStream(this._partOpts)\n this._part._read = function (n) {\n self._unpause()\n }\n if (this._isPreamble && this.listenerCount('preamble') !== 0) {\n this.emit('preamble', this._part)\n } else if (this._isPreamble !== true && this.listenerCount('part') !== 0) {\n this.emit('part', this._part)\n } else {\n this._ignore()\n }\n if (!this._isPreamble) { this._inHeader = true }\n }\n if (data && start < end && !this._ignoreData) {\n if (this._isPreamble || !this._inHeader) {\n if (buf) { shouldWriteMore = this._part.push(buf) }\n shouldWriteMore = this._part.push(data.slice(start, end))\n if (!shouldWriteMore) { this._pause = true }\n } else if (!this._isPreamble && this._inHeader) {\n if (buf) { this._hparser.push(buf) }\n r = this._hparser.push(data.slice(start, end))\n if (!this._inHeader && r !== undefined && r < end) { this._oninfo(false, data, start + r, end) }\n }\n }\n if (isMatch) {\n this._hparser.reset()\n if (this._isPreamble) { this._isPreamble = false } else {\n if (start !== end) {\n ++this._parts\n this._part.on('end', function () {\n if (--self._parts === 0) {\n if (self._finished) {\n self._realFinish = true\n self.emit('finish')\n self._realFinish = false\n } else {\n self._unpause()\n }\n }\n })\n }\n }\n this._part.push(null)\n this._part = undefined\n this._ignoreData = false\n this._justMatched = true\n this._dashes = 0\n }\n}\n\nDicer.prototype._unpause = function () {\n if (!this._pause) { return }\n\n this._pause = false\n if (this._cb) {\n const cb = this._cb\n this._cb = undefined\n cb()\n }\n}\n\nmodule.exports = Dicer\n","'use strict'\n\n// Node has always utf-8\nconst utf8Decoder = new TextDecoder('utf-8')\nconst textDecoders = new Map([\n ['utf-8', utf8Decoder],\n ['utf8', utf8Decoder]\n])\n\nfunction getDecoder (charset) {\n let lc\n while (true) {\n switch (charset) {\n case 'utf-8':\n case 'utf8':\n return decoders.utf8\n case 'latin1':\n case 'ascii': // TODO: Make these a separate, strict decoder?\n case 'us-ascii':\n case 'iso-8859-1':\n case 'iso8859-1':\n case 'iso88591':\n case 'iso_8859-1':\n case 'windows-1252':\n case 'iso_8859-1:1987':\n case 'cp1252':\n case 'x-cp1252':\n return decoders.latin1\n case 'utf16le':\n case 'utf-16le':\n case 'ucs2':\n case 'ucs-2':\n return decoders.utf16le\n case 'base64':\n return decoders.base64\n default:\n if (lc === undefined) {\n lc = true\n charset = charset.toLowerCase()\n continue\n }\n return decoders.other.bind(charset)\n }\n }\n}\n\nconst decoders = {\n utf8: (data, sourceEncoding) => {\n if (data.length === 0) {\n return ''\n }\n if (typeof data === 'string') {\n data = Buffer.from(data, sourceEncoding)\n }\n return data.utf8Slice(0, data.length)\n },\n\n latin1: (data, sourceEncoding) => {\n if (data.length === 0) {\n return ''\n }\n if (typeof data === 'string') {\n return data\n }\n return data.latin1Slice(0, data.length)\n },\n\n utf16le: (data, sourceEncoding) => {\n if (data.length === 0) {\n return ''\n }\n if (typeof data === 'string') {\n data = Buffer.from(data, sourceEncoding)\n }\n return data.ucs2Slice(0, data.length)\n },\n\n base64: (data, sourceEncoding) => {\n if (data.length === 0) {\n return ''\n }\n if (typeof data === 'string') {\n data = Buffer.from(data, sourceEncoding)\n }\n return data.base64Slice(0, data.length)\n },\n\n other: (data, sourceEncoding) => {\n if (data.length === 0) {\n return ''\n }\n if (typeof data === 'string') {\n data = Buffer.from(data, sourceEncoding)\n }\n\n if (textDecoders.has(this.toString())) {\n try {\n return textDecoders.get(this).decode(data)\n } catch {}\n }\n return typeof data === 'string'\n ? data\n : data.toString()\n }\n}\n\nfunction decodeText (text, sourceEncoding, destEncoding) {\n if (text) {\n return getDecoder(destEncoding)(text, sourceEncoding)\n }\n return text\n}\n\nmodule.exports = decodeText\n","/* eslint-disable object-property-newline */\n'use strict'\n\nconst decodeText = require('./decodeText')\n\nconst RE_ENCODED = /%[a-fA-F0-9][a-fA-F0-9]/g\n\nconst EncodedLookup = {\n '%00': '\\x00', '%01': '\\x01', '%02': '\\x02', '%03': '\\x03', '%04': '\\x04',\n '%05': '\\x05', '%06': '\\x06', '%07': '\\x07', '%08': '\\x08', '%09': '\\x09',\n '%0a': '\\x0a', '%0A': '\\x0a', '%0b': '\\x0b', '%0B': '\\x0b', '%0c': '\\x0c',\n '%0C': '\\x0c', '%0d': '\\x0d', '%0D': '\\x0d', '%0e': '\\x0e', '%0E': '\\x0e',\n '%0f': '\\x0f', '%0F': '\\x0f', '%10': '\\x10', '%11': '\\x11', '%12': '\\x12',\n '%13': '\\x13', '%14': '\\x14', '%15': '\\x15', '%16': '\\x16', '%17': '\\x17',\n '%18': '\\x18', '%19': '\\x19', '%1a': '\\x1a', '%1A': '\\x1a', '%1b': '\\x1b',\n '%1B': '\\x1b', '%1c': '\\x1c', '%1C': '\\x1c', '%1d': '\\x1d', '%1D': '\\x1d',\n '%1e': '\\x1e', '%1E': '\\x1e', '%1f': '\\x1f', '%1F': '\\x1f', '%20': '\\x20',\n '%21': '\\x21', '%22': '\\x22', '%23': '\\x23', '%24': '\\x24', '%25': '\\x25',\n '%26': '\\x26', '%27': '\\x27', '%28': '\\x28', '%29': '\\x29', '%2a': '\\x2a',\n '%2A': '\\x2a', '%2b': '\\x2b', '%2B': '\\x2b', '%2c': '\\x2c', '%2C': '\\x2c',\n '%2d': '\\x2d', '%2D': '\\x2d', '%2e': '\\x2e', '%2E': '\\x2e', '%2f': '\\x2f',\n '%2F': '\\x2f', '%30': '\\x30', '%31': '\\x31', '%32': '\\x32', '%33': '\\x33',\n '%34': '\\x34', '%35': '\\x35', '%36': '\\x36', '%37': '\\x37', '%38': '\\x38',\n '%39': '\\x39', '%3a': '\\x3a', '%3A': '\\x3a', '%3b': '\\x3b', '%3B': '\\x3b',\n '%3c': '\\x3c', '%3C': '\\x3c', '%3d': '\\x3d', '%3D': '\\x3d', '%3e': '\\x3e',\n '%3E': '\\x3e', '%3f': '\\x3f', '%3F': '\\x3f', '%40': '\\x40', '%41': '\\x41',\n '%42': '\\x42', '%43': '\\x43', '%44': '\\x44', '%45': '\\x45', '%46': '\\x46',\n '%47': '\\x47', '%48': '\\x48', '%49': '\\x49', '%4a': '\\x4a', '%4A': '\\x4a',\n '%4b': '\\x4b', '%4B': '\\x4b', '%4c': '\\x4c', '%4C': '\\x4c', '%4d': '\\x4d',\n '%4D': '\\x4d', '%4e': '\\x4e', '%4E': '\\x4e', '%4f': '\\x4f', '%4F': '\\x4f',\n '%50': '\\x50', '%51': '\\x51', '%52': '\\x52', '%53': '\\x53', '%54': '\\x54',\n '%55': '\\x55', '%56': '\\x56', '%57': '\\x57', '%58': '\\x58', '%59': '\\x59',\n '%5a': '\\x5a', '%5A': '\\x5a', '%5b': '\\x5b', '%5B': '\\x5b', '%5c': '\\x5c',\n '%5C': '\\x5c', '%5d': '\\x5d', '%5D': '\\x5d', '%5e': '\\x5e', '%5E': '\\x5e',\n '%5f': '\\x5f', '%5F': '\\x5f', '%60': '\\x60', '%61': '\\x61', '%62': '\\x62',\n '%63': '\\x63', '%64': '\\x64', '%65': '\\x65', '%66': '\\x66', '%67': '\\x67',\n '%68': '\\x68', '%69': '\\x69', '%6a': '\\x6a', '%6A': '\\x6a', '%6b': '\\x6b',\n '%6B': '\\x6b', '%6c': '\\x6c', '%6C': '\\x6c', '%6d': '\\x6d', '%6D': '\\x6d',\n '%6e': '\\x6e', '%6E': '\\x6e', '%6f': '\\x6f', '%6F': '\\x6f', '%70': '\\x70',\n '%71': '\\x71', '%72': '\\x72', '%73': '\\x73', '%74': '\\x74', '%75': '\\x75',\n '%76': '\\x76', '%77': '\\x77', '%78': '\\x78', '%79': '\\x79', '%7a': '\\x7a',\n '%7A': '\\x7a', '%7b': '\\x7b', '%7B': '\\x7b', '%7c': '\\x7c', '%7C': '\\x7c',\n '%7d': '\\x7d', '%7D': '\\x7d', '%7e': '\\x7e', '%7E': '\\x7e', '%7f': '\\x7f',\n '%7F': '\\x7f', '%80': '\\x80', '%81': '\\x81', '%82': '\\x82', '%83': '\\x83',\n '%84': '\\x84', '%85': '\\x85', '%86': '\\x86', '%87': '\\x87', '%88': '\\x88',\n '%89': '\\x89', '%8a': '\\x8a', '%8A': '\\x8a', '%8b': '\\x8b', '%8B': '\\x8b',\n '%8c': '\\x8c', '%8C': '\\x8c', '%8d': '\\x8d', '%8D': '\\x8d', '%8e': '\\x8e',\n '%8E': '\\x8e', '%8f': '\\x8f', '%8F': '\\x8f', '%90': '\\x90', '%91': '\\x91',\n '%92': '\\x92', '%93': '\\x93', '%94': '\\x94', '%95': '\\x95', '%96': '\\x96',\n '%97': '\\x97', '%98': '\\x98', '%99': '\\x99', '%9a': '\\x9a', '%9A': '\\x9a',\n '%9b': '\\x9b', '%9B': '\\x9b', '%9c': '\\x9c', '%9C': '\\x9c', '%9d': '\\x9d',\n '%9D': '\\x9d', '%9e': '\\x9e', '%9E': '\\x9e', '%9f': '\\x9f', '%9F': '\\x9f',\n '%a0': '\\xa0', '%A0': '\\xa0', '%a1': '\\xa1', '%A1': '\\xa1', '%a2': '\\xa2',\n '%A2': '\\xa2', '%a3': '\\xa3', '%A3': '\\xa3', '%a4': '\\xa4', '%A4': '\\xa4',\n '%a5': '\\xa5', '%A5': '\\xa5', '%a6': '\\xa6', '%A6': '\\xa6', '%a7': '\\xa7',\n '%A7': '\\xa7', '%a8': '\\xa8', '%A8': '\\xa8', '%a9': '\\xa9', '%A9': '\\xa9',\n '%aa': '\\xaa', '%Aa': '\\xaa', '%aA': '\\xaa', '%AA': '\\xaa', '%ab': '\\xab',\n '%Ab': '\\xab', '%aB': '\\xab', '%AB': '\\xab', '%ac': '\\xac', '%Ac': '\\xac',\n '%aC': '\\xac', '%AC': '\\xac', '%ad': '\\xad', '%Ad': '\\xad', '%aD': '\\xad',\n '%AD': '\\xad', '%ae': '\\xae', '%Ae': '\\xae', '%aE': '\\xae', '%AE': '\\xae',\n '%af': '\\xaf', '%Af': '\\xaf', '%aF': '\\xaf', '%AF': '\\xaf', '%b0': '\\xb0',\n '%B0': '\\xb0', '%b1': '\\xb1', '%B1': '\\xb1', '%b2': '\\xb2', '%B2': '\\xb2',\n '%b3': '\\xb3', '%B3': '\\xb3', '%b4': '\\xb4', '%B4': '\\xb4', '%b5': '\\xb5',\n '%B5': '\\xb5', '%b6': '\\xb6', '%B6': '\\xb6', '%b7': '\\xb7', '%B7': '\\xb7',\n '%b8': '\\xb8', '%B8': '\\xb8', '%b9': '\\xb9', '%B9': '\\xb9', '%ba': '\\xba',\n '%Ba': '\\xba', '%bA': '\\xba', '%BA': '\\xba', '%bb': '\\xbb', '%Bb': '\\xbb',\n '%bB': '\\xbb', '%BB': '\\xbb', '%bc': '\\xbc', '%Bc': '\\xbc', '%bC': '\\xbc',\n '%BC': '\\xbc', '%bd': '\\xbd', '%Bd': '\\xbd', '%bD': '\\xbd', '%BD': '\\xbd',\n '%be': '\\xbe', '%Be': '\\xbe', '%bE': '\\xbe', '%BE': '\\xbe', '%bf': '\\xbf',\n '%Bf': '\\xbf', '%bF': '\\xbf', '%BF': '\\xbf', '%c0': '\\xc0', '%C0': '\\xc0',\n '%c1': '\\xc1', '%C1': '\\xc1', '%c2': '\\xc2', '%C2': '\\xc2', '%c3': '\\xc3',\n '%C3': '\\xc3', '%c4': '\\xc4', '%C4': '\\xc4', '%c5': '\\xc5', '%C5': '\\xc5',\n '%c6': '\\xc6', '%C6': '\\xc6', '%c7': '\\xc7', '%C7': '\\xc7', '%c8': '\\xc8',\n '%C8': '\\xc8', '%c9': '\\xc9', '%C9': '\\xc9', '%ca': '\\xca', '%Ca': '\\xca',\n '%cA': '\\xca', '%CA': '\\xca', '%cb': '\\xcb', '%Cb': '\\xcb', '%cB': '\\xcb',\n '%CB': '\\xcb', '%cc': '\\xcc', '%Cc': '\\xcc', '%cC': '\\xcc', '%CC': '\\xcc',\n '%cd': '\\xcd', '%Cd': '\\xcd', '%cD': '\\xcd', '%CD': '\\xcd', '%ce': '\\xce',\n '%Ce': '\\xce', '%cE': '\\xce', '%CE': '\\xce', '%cf': '\\xcf', '%Cf': '\\xcf',\n '%cF': '\\xcf', '%CF': '\\xcf', '%d0': '\\xd0', '%D0': '\\xd0', '%d1': '\\xd1',\n '%D1': '\\xd1', '%d2': '\\xd2', '%D2': '\\xd2', '%d3': '\\xd3', '%D3': '\\xd3',\n '%d4': '\\xd4', '%D4': '\\xd4', '%d5': '\\xd5', '%D5': '\\xd5', '%d6': '\\xd6',\n '%D6': '\\xd6', '%d7': '\\xd7', '%D7': '\\xd7', '%d8': '\\xd8', '%D8': '\\xd8',\n '%d9': '\\xd9', '%D9': '\\xd9', '%da': '\\xda', '%Da': '\\xda', '%dA': '\\xda',\n '%DA': '\\xda', '%db': '\\xdb', '%Db': '\\xdb', '%dB': '\\xdb', '%DB': '\\xdb',\n '%dc': '\\xdc', '%Dc': '\\xdc', '%dC': '\\xdc', '%DC': '\\xdc', '%dd': '\\xdd',\n '%Dd': '\\xdd', '%dD': '\\xdd', '%DD': '\\xdd', '%de': '\\xde', '%De': '\\xde',\n '%dE': '\\xde', '%DE': '\\xde', '%df': '\\xdf', '%Df': '\\xdf', '%dF': '\\xdf',\n '%DF': '\\xdf', '%e0': '\\xe0', '%E0': '\\xe0', '%e1': '\\xe1', '%E1': '\\xe1',\n '%e2': '\\xe2', '%E2': '\\xe2', '%e3': '\\xe3', '%E3': '\\xe3', '%e4': '\\xe4',\n '%E4': '\\xe4', '%e5': '\\xe5', '%E5': '\\xe5', '%e6': '\\xe6', '%E6': '\\xe6',\n '%e7': '\\xe7', '%E7': '\\xe7', '%e8': '\\xe8', '%E8': '\\xe8', '%e9': '\\xe9',\n '%E9': '\\xe9', '%ea': '\\xea', '%Ea': '\\xea', '%eA': '\\xea', '%EA': '\\xea',\n '%eb': '\\xeb', '%Eb': '\\xeb', '%eB': '\\xeb', '%EB': '\\xeb', '%ec': '\\xec',\n '%Ec': '\\xec', '%eC': '\\xec', '%EC': '\\xec', '%ed': '\\xed', '%Ed': '\\xed',\n '%eD': '\\xed', '%ED': '\\xed', '%ee': '\\xee', '%Ee': '\\xee', '%eE': '\\xee',\n '%EE': '\\xee', '%ef': '\\xef', '%Ef': '\\xef', '%eF': '\\xef', '%EF': '\\xef',\n '%f0': '\\xf0', '%F0': '\\xf0', '%f1': '\\xf1', '%F1': '\\xf1', '%f2': '\\xf2',\n '%F2': '\\xf2', '%f3': '\\xf3', '%F3': '\\xf3', '%f4': '\\xf4', '%F4': '\\xf4',\n '%f5': '\\xf5', '%F5': '\\xf5', '%f6': '\\xf6', '%F6': '\\xf6', '%f7': '\\xf7',\n '%F7': '\\xf7', '%f8': '\\xf8', '%F8': '\\xf8', '%f9': '\\xf9', '%F9': '\\xf9',\n '%fa': '\\xfa', '%Fa': '\\xfa', '%fA': '\\xfa', '%FA': '\\xfa', '%fb': '\\xfb',\n '%Fb': '\\xfb', '%fB': '\\xfb', '%FB': '\\xfb', '%fc': '\\xfc', '%Fc': '\\xfc',\n '%fC': '\\xfc', '%FC': '\\xfc', '%fd': '\\xfd', '%Fd': '\\xfd', '%fD': '\\xfd',\n '%FD': '\\xfd', '%fe': '\\xfe', '%Fe': '\\xfe', '%fE': '\\xfe', '%FE': '\\xfe',\n '%ff': '\\xff', '%Ff': '\\xff', '%fF': '\\xff', '%FF': '\\xff'\n}\n\nfunction encodedReplacer (match) {\n return EncodedLookup[match]\n}\n\nconst STATE_KEY = 0\nconst STATE_VALUE = 1\nconst STATE_CHARSET = 2\nconst STATE_LANG = 3\n\nfunction parseParams (str) {\n const res = []\n let state = STATE_KEY\n let charset = ''\n let inquote = false\n let escaping = false\n let p = 0\n let tmp = ''\n const len = str.length\n\n for (var i = 0; i < len; ++i) { // eslint-disable-line no-var\n const char = str[i]\n if (char === '\\\\' && inquote) {\n if (escaping) { escaping = false } else {\n escaping = true\n continue\n }\n } else if (char === '\"') {\n if (!escaping) {\n if (inquote) {\n inquote = false\n state = STATE_KEY\n } else { inquote = true }\n continue\n } else { escaping = false }\n } else {\n if (escaping && inquote) { tmp += '\\\\' }\n escaping = false\n if ((state === STATE_CHARSET || state === STATE_LANG) && char === \"'\") {\n if (state === STATE_CHARSET) {\n state = STATE_LANG\n charset = tmp.substring(1)\n } else { state = STATE_VALUE }\n tmp = ''\n continue\n } else if (state === STATE_KEY &&\n (char === '*' || char === '=') &&\n res.length) {\n state = char === '*'\n ? STATE_CHARSET\n : STATE_VALUE\n res[p] = [tmp, undefined]\n tmp = ''\n continue\n } else if (!inquote && char === ';') {\n state = STATE_KEY\n if (charset) {\n if (tmp.length) {\n tmp = decodeText(tmp.replace(RE_ENCODED, encodedReplacer),\n 'binary',\n charset)\n }\n charset = ''\n } else if (tmp.length) {\n tmp = decodeText(tmp, 'binary', 'utf8')\n }\n if (res[p] === undefined) { res[p] = tmp } else { res[p][1] = tmp }\n tmp = ''\n ++p\n continue\n } else if (!inquote && (char === ' ' || char === '\\t')) { continue }\n }\n tmp += char\n }\n if (charset && tmp.length) {\n tmp = decodeText(tmp.replace(RE_ENCODED, encodedReplacer),\n 'binary',\n charset)\n } else if (tmp) {\n tmp = decodeText(tmp, 'binary', 'utf8')\n }\n\n if (res[p] === undefined) {\n if (tmp) { res[p] = tmp }\n } else { res[p][1] = tmp }\n\n return res\n}\n\nmodule.exports = parseParams\n","'use strict'\n\nmodule.exports = function basename (path) {\n if (typeof path !== 'string') { return '' }\n for (var i = path.length - 1; i >= 0; --i) { // eslint-disable-line no-var\n switch (path.charCodeAt(i)) {\n case 0x2F: // '/'\n case 0x5C: // '\\'\n path = path.slice(i + 1)\n return (path === '..' || path === '.' ? '' : path)\n }\n }\n return (path === '..' || path === '.' ? '' : path)\n}\n","'use strict'\n\n// TODO:\n// * support 1 nested multipart level\n// (see second multipart example here:\n// http://www.w3.org/TR/html401/interact/forms.html#didx-multipartform-data)\n// * support limits.fieldNameSize\n// -- this will require modifications to utils.parseParams\n\nconst { Readable } = require('node:stream')\nconst { inherits } = require('node:util')\n\nconst Dicer = require('../../deps/dicer/lib/Dicer')\n\nconst parseParams = require('../utils/parseParams')\nconst decodeText = require('../utils/decodeText')\nconst basename = require('../utils/basename')\nconst getLimit = require('../utils/getLimit')\n\nconst RE_BOUNDARY = /^boundary$/i\nconst RE_FIELD = /^form-data$/i\nconst RE_CHARSET = /^charset$/i\nconst RE_FILENAME = /^filename$/i\nconst RE_NAME = /^name$/i\n\nMultipart.detect = /^multipart\\/form-data/i\nfunction Multipart (boy, cfg) {\n let i\n let len\n const self = this\n let boundary\n const limits = cfg.limits\n const isPartAFile = cfg.isPartAFile || ((fieldName, contentType, fileName) => (contentType === 'application/octet-stream' || fileName !== undefined))\n const parsedConType = cfg.parsedConType || []\n const defCharset = cfg.defCharset || 'utf8'\n const preservePath = cfg.preservePath\n const fileOpts = { highWaterMark: cfg.fileHwm }\n\n for (i = 0, len = parsedConType.length; i < len; ++i) {\n if (Array.isArray(parsedConType[i]) &&\n RE_BOUNDARY.test(parsedConType[i][0])) {\n boundary = parsedConType[i][1]\n break\n }\n }\n\n function checkFinished () {\n if (nends === 0 && finished && !boy._done) {\n finished = false\n self.end()\n }\n }\n\n if (typeof boundary !== 'string') { throw new Error('Multipart: Boundary not found') }\n\n const fieldSizeLimit = getLimit(limits, 'fieldSize', 1 * 1024 * 1024)\n const fileSizeLimit = getLimit(limits, 'fileSize', Infinity)\n const filesLimit = getLimit(limits, 'files', Infinity)\n const fieldsLimit = getLimit(limits, 'fields', Infinity)\n const partsLimit = getLimit(limits, 'parts', Infinity)\n const headerPairsLimit = getLimit(limits, 'headerPairs', 2000)\n const headerSizeLimit = getLimit(limits, 'headerSize', 80 * 1024)\n\n let nfiles = 0\n let nfields = 0\n let nends = 0\n let curFile\n let curField\n let finished = false\n\n this._needDrain = false\n this._pause = false\n this._cb = undefined\n this._nparts = 0\n this._boy = boy\n\n const parserCfg = {\n boundary,\n maxHeaderPairs: headerPairsLimit,\n maxHeaderSize: headerSizeLimit,\n partHwm: fileOpts.highWaterMark,\n highWaterMark: cfg.highWaterMark\n }\n\n this.parser = new Dicer(parserCfg)\n this.parser.on('drain', function () {\n self._needDrain = false\n if (self._cb && !self._pause) {\n const cb = self._cb\n self._cb = undefined\n cb()\n }\n }).on('part', function onPart (part) {\n if (++self._nparts > partsLimit) {\n self.parser.removeListener('part', onPart)\n self.parser.on('part', skipPart)\n boy.hitPartsLimit = true\n boy.emit('partsLimit')\n return skipPart(part)\n }\n\n // hack because streams2 _always_ doesn't emit 'end' until nextTick, so let\n // us emit 'end' early since we know the part has ended if we are already\n // seeing the next part\n if (curField) {\n const field = curField\n field.emit('end')\n field.removeAllListeners('end')\n }\n\n part.on('header', function (header) {\n let contype\n let fieldname\n let parsed\n let charset\n let encoding\n let filename\n let nsize = 0\n\n if (header['content-type']) {\n parsed = parseParams(header['content-type'][0])\n if (parsed[0]) {\n contype = parsed[0].toLowerCase()\n for (i = 0, len = parsed.length; i < len; ++i) {\n if (RE_CHARSET.test(parsed[i][0])) {\n charset = parsed[i][1].toLowerCase()\n break\n }\n }\n }\n }\n\n if (contype === undefined) { contype = 'text/plain' }\n if (charset === undefined) { charset = defCharset }\n\n if (header['content-disposition']) {\n parsed = parseParams(header['content-disposition'][0])\n if (!RE_FIELD.test(parsed[0])) { return skipPart(part) }\n for (i = 0, len = parsed.length; i < len; ++i) {\n if (RE_NAME.test(parsed[i][0])) {\n fieldname = parsed[i][1]\n } else if (RE_FILENAME.test(parsed[i][0])) {\n filename = parsed[i][1]\n if (!preservePath) { filename = basename(filename) }\n }\n }\n } else { return skipPart(part) }\n\n if (header['content-transfer-encoding']) { encoding = header['content-transfer-encoding'][0].toLowerCase() } else { encoding = '7bit' }\n\n let onData,\n onEnd\n\n if (isPartAFile(fieldname, contype, filename)) {\n // file/binary field\n if (nfiles === filesLimit) {\n if (!boy.hitFilesLimit) {\n boy.hitFilesLimit = true\n boy.emit('filesLimit')\n }\n return skipPart(part)\n }\n\n ++nfiles\n\n if (boy.listenerCount('file') === 0) {\n self.parser._ignore()\n return\n }\n\n ++nends\n const file = new FileStream(fileOpts)\n curFile = file\n file.on('end', function () {\n --nends\n self._pause = false\n checkFinished()\n if (self._cb && !self._needDrain) {\n const cb = self._cb\n self._cb = undefined\n cb()\n }\n })\n file._read = function (n) {\n if (!self._pause) { return }\n self._pause = false\n if (self._cb && !self._needDrain) {\n const cb = self._cb\n self._cb = undefined\n cb()\n }\n }\n boy.emit('file', fieldname, file, filename, encoding, contype)\n\n onData = function (data) {\n if ((nsize += data.length) > fileSizeLimit) {\n const extralen = fileSizeLimit - nsize + data.length\n if (extralen > 0) { file.push(data.slice(0, extralen)) }\n file.truncated = true\n file.bytesRead = fileSizeLimit\n part.removeAllListeners('data')\n file.emit('limit')\n return\n } else if (!file.push(data)) { self._pause = true }\n\n file.bytesRead = nsize\n }\n\n onEnd = function () {\n curFile = undefined\n file.push(null)\n }\n } else {\n // non-file field\n if (nfields === fieldsLimit) {\n if (!boy.hitFieldsLimit) {\n boy.hitFieldsLimit = true\n boy.emit('fieldsLimit')\n }\n return skipPart(part)\n }\n\n ++nfields\n ++nends\n let buffer = ''\n let truncated = false\n curField = part\n\n onData = function (data) {\n if ((nsize += data.length) > fieldSizeLimit) {\n const extralen = (fieldSizeLimit - (nsize - data.length))\n buffer += data.toString('binary', 0, extralen)\n truncated = true\n part.removeAllListeners('data')\n } else { buffer += data.toString('binary') }\n }\n\n onEnd = function () {\n curField = undefined\n if (buffer.length) { buffer = decodeText(buffer, 'binary', charset) }\n boy.emit('field', fieldname, buffer, false, truncated, encoding, contype)\n --nends\n checkFinished()\n }\n }\n\n /* As of node@2efe4ab761666 (v0.10.29+/v0.11.14+), busboy had become\n broken. Streams2/streams3 is a huge black box of confusion, but\n somehow overriding the sync state seems to fix things again (and still\n seems to work for previous node versions).\n */\n part._readableState.sync = false\n\n part.on('data', onData)\n part.on('end', onEnd)\n }).on('error', function (err) {\n if (curFile) { curFile.emit('error', err) }\n })\n }).on('error', function (err) {\n boy.emit('error', err)\n }).on('finish', function () {\n finished = true\n checkFinished()\n })\n}\n\nMultipart.prototype.write = function (chunk, cb) {\n const r = this.parser.write(chunk)\n if (r && !this._pause) {\n cb()\n } else {\n this._needDrain = !r\n this._cb = cb\n }\n}\n\nMultipart.prototype.end = function () {\n const self = this\n\n if (self.parser.writable) {\n self.parser.end()\n } else if (!self._boy._done) {\n process.nextTick(function () {\n self._boy._done = true\n self._boy.emit('finish')\n })\n }\n}\n\nfunction skipPart (part) {\n part.resume()\n}\n\nfunction FileStream (opts) {\n Readable.call(this, opts)\n\n this.bytesRead = 0\n\n this.truncated = false\n}\n\ninherits(FileStream, Readable)\n\nFileStream.prototype._read = function (n) {}\n\nmodule.exports = Multipart\n","'use strict'\n\nconst RE_PLUS = /\\+/g\n\nconst HEX = [\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0,\n 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0\n]\n\nfunction Decoder () {\n this.buffer = undefined\n}\nDecoder.prototype.write = function (str) {\n // Replace '+' with ' ' before decoding\n str = str.replace(RE_PLUS, ' ')\n let res = ''\n let i = 0; let p = 0; const len = str.length\n for (; i < len; ++i) {\n if (this.buffer !== undefined) {\n if (!HEX[str.charCodeAt(i)]) {\n res += '%' + this.buffer\n this.buffer = undefined\n --i // retry character\n } else {\n this.buffer += str[i]\n ++p\n if (this.buffer.length === 2) {\n res += String.fromCharCode(parseInt(this.buffer, 16))\n this.buffer = undefined\n }\n }\n } else if (str[i] === '%') {\n if (i > p) {\n res += str.substring(p, i)\n p = i\n }\n this.buffer = ''\n ++p\n }\n }\n if (p < len && this.buffer === undefined) { res += str.substring(p) }\n return res\n}\nDecoder.prototype.reset = function () {\n this.buffer = undefined\n}\n\nmodule.exports = Decoder\n","'use strict'\n\nconst Decoder = require('../utils/Decoder')\nconst decodeText = require('../utils/decodeText')\nconst getLimit = require('../utils/getLimit')\n\nconst RE_CHARSET = /^charset$/i\n\nUrlEncoded.detect = /^application\\/x-www-form-urlencoded/i\nfunction UrlEncoded (boy, cfg) {\n const limits = cfg.limits\n const parsedConType = cfg.parsedConType\n this.boy = boy\n\n this.fieldSizeLimit = getLimit(limits, 'fieldSize', 1 * 1024 * 1024)\n this.fieldNameSizeLimit = getLimit(limits, 'fieldNameSize', 100)\n this.fieldsLimit = getLimit(limits, 'fields', Infinity)\n\n let charset\n for (var i = 0, len = parsedConType.length; i < len; ++i) { // eslint-disable-line no-var\n if (Array.isArray(parsedConType[i]) &&\n RE_CHARSET.test(parsedConType[i][0])) {\n charset = parsedConType[i][1].toLowerCase()\n break\n }\n }\n\n if (charset === undefined) { charset = cfg.defCharset || 'utf8' }\n\n this.decoder = new Decoder()\n this.charset = charset\n this._fields = 0\n this._state = 'key'\n this._checkingBytes = true\n this._bytesKey = 0\n this._bytesVal = 0\n this._key = ''\n this._val = ''\n this._keyTrunc = false\n this._valTrunc = false\n this._hitLimit = false\n}\n\nUrlEncoded.prototype.write = function (data, cb) {\n if (this._fields === this.fieldsLimit) {\n if (!this.boy.hitFieldsLimit) {\n this.boy.hitFieldsLimit = true\n this.boy.emit('fieldsLimit')\n }\n return cb()\n }\n\n let idxeq; let idxamp; let i; let p = 0; const len = data.length\n\n while (p < len) {\n if (this._state === 'key') {\n idxeq = idxamp = undefined\n for (i = p; i < len; ++i) {\n if (!this._checkingBytes) { ++p }\n if (data[i] === 0x3D/* = */) {\n idxeq = i\n break\n } else if (data[i] === 0x26/* & */) {\n idxamp = i\n break\n }\n if (this._checkingBytes && this._bytesKey === this.fieldNameSizeLimit) {\n this._hitLimit = true\n break\n } else if (this._checkingBytes) { ++this._bytesKey }\n }\n\n if (idxeq !== undefined) {\n // key with assignment\n if (idxeq > p) { this._key += this.decoder.write(data.toString('binary', p, idxeq)) }\n this._state = 'val'\n\n this._hitLimit = false\n this._checkingBytes = true\n this._val = ''\n this._bytesVal = 0\n this._valTrunc = false\n this.decoder.reset()\n\n p = idxeq + 1\n } else if (idxamp !== undefined) {\n // key with no assignment\n ++this._fields\n let key; const keyTrunc = this._keyTrunc\n if (idxamp > p) { key = (this._key += this.decoder.write(data.toString('binary', p, idxamp))) } else { key = this._key }\n\n this._hitLimit = false\n this._checkingBytes = true\n this._key = ''\n this._bytesKey = 0\n this._keyTrunc = false\n this.decoder.reset()\n\n if (key.length) {\n this.boy.emit('field', decodeText(key, 'binary', this.charset),\n '',\n keyTrunc,\n false)\n }\n\n p = idxamp + 1\n if (this._fields === this.fieldsLimit) { return cb() }\n } else if (this._hitLimit) {\n // we may not have hit the actual limit if there are encoded bytes...\n if (i > p) { this._key += this.decoder.write(data.toString('binary', p, i)) }\n p = i\n if ((this._bytesKey = this._key.length) === this.fieldNameSizeLimit) {\n // yep, we actually did hit the limit\n this._checkingBytes = false\n this._keyTrunc = true\n }\n } else {\n if (p < len) { this._key += this.decoder.write(data.toString('binary', p)) }\n p = len\n }\n } else {\n idxamp = undefined\n for (i = p; i < len; ++i) {\n if (!this._checkingBytes) { ++p }\n if (data[i] === 0x26/* & */) {\n idxamp = i\n break\n }\n if (this._checkingBytes && this._bytesVal === this.fieldSizeLimit) {\n this._hitLimit = true\n break\n } else if (this._checkingBytes) { ++this._bytesVal }\n }\n\n if (idxamp !== undefined) {\n ++this._fields\n if (idxamp > p) { this._val += this.decoder.write(data.toString('binary', p, idxamp)) }\n this.boy.emit('field', decodeText(this._key, 'binary', this.charset),\n decodeText(this._val, 'binary', this.charset),\n this._keyTrunc,\n this._valTrunc)\n this._state = 'key'\n\n this._hitLimit = false\n this._checkingBytes = true\n this._key = ''\n this._bytesKey = 0\n this._keyTrunc = false\n this.decoder.reset()\n\n p = idxamp + 1\n if (this._fields === this.fieldsLimit) { return cb() }\n } else if (this._hitLimit) {\n // we may not have hit the actual limit if there are encoded bytes...\n if (i > p) { this._val += this.decoder.write(data.toString('binary', p, i)) }\n p = i\n if ((this._val === '' && this.fieldSizeLimit === 0) ||\n (this._bytesVal = this._val.length) === this.fieldSizeLimit) {\n // yep, we actually did hit the limit\n this._checkingBytes = false\n this._valTrunc = true\n }\n } else {\n if (p < len) { this._val += this.decoder.write(data.toString('binary', p)) }\n p = len\n }\n }\n }\n cb()\n}\n\nUrlEncoded.prototype.end = function () {\n if (this.boy._done) { return }\n\n if (this._state === 'key' && this._key.length > 0) {\n this.boy.emit('field', decodeText(this._key, 'binary', this.charset),\n '',\n this._keyTrunc,\n false)\n } else if (this._state === 'val') {\n this.boy.emit('field', decodeText(this._key, 'binary', this.charset),\n decodeText(this._val, 'binary', this.charset),\n this._keyTrunc,\n this._valTrunc)\n }\n this.boy._done = true\n this.boy.emit('finish')\n}\n\nmodule.exports = UrlEncoded\n","'use strict'\n\nconst WritableStream = require('node:stream').Writable\nconst { inherits } = require('node:util')\nconst Dicer = require('../deps/dicer/lib/Dicer')\n\nconst MultipartParser = require('./types/multipart')\nconst UrlencodedParser = require('./types/urlencoded')\nconst parseParams = require('./utils/parseParams')\n\nfunction Busboy (opts) {\n if (!(this instanceof Busboy)) { return new Busboy(opts) }\n\n if (typeof opts !== 'object') {\n throw new TypeError('Busboy expected an options-Object.')\n }\n if (typeof opts.headers !== 'object') {\n throw new TypeError('Busboy expected an options-Object with headers-attribute.')\n }\n if (typeof opts.headers['content-type'] !== 'string') {\n throw new TypeError('Missing Content-Type-header.')\n }\n\n const {\n headers,\n ...streamOptions\n } = opts\n\n this.opts = {\n autoDestroy: false,\n ...streamOptions\n }\n WritableStream.call(this, this.opts)\n\n this._done = false\n this._parser = this.getParserByHeaders(headers)\n this._finished = false\n}\ninherits(Busboy, WritableStream)\n\nBusboy.prototype.emit = function (ev) {\n if (ev === 'finish') {\n if (!this._done) {\n this._parser?.end()\n return\n } else if (this._finished) {\n return\n }\n this._finished = true\n }\n WritableStream.prototype.emit.apply(this, arguments)\n}\n\nBusboy.prototype.getParserByHeaders = function (headers) {\n const parsed = parseParams(headers['content-type'])\n\n const cfg = {\n defCharset: this.opts.defCharset,\n fileHwm: this.opts.fileHwm,\n headers,\n highWaterMark: this.opts.highWaterMark,\n isPartAFile: this.opts.isPartAFile,\n limits: this.opts.limits,\n parsedConType: parsed,\n preservePath: this.opts.preservePath\n }\n\n if (MultipartParser.detect.test(parsed[0])) {\n return new MultipartParser(this, cfg)\n }\n if (UrlencodedParser.detect.test(parsed[0])) {\n return new UrlencodedParser(this, cfg)\n }\n throw new Error('Unsupported Content-Type.')\n}\n\nBusboy.prototype._write = function (chunk, encoding, cb) {\n this._parser.write(chunk, cb)\n}\n\nmodule.exports = Busboy\nmodule.exports.default = Busboy\nmodule.exports.Busboy = Busboy\n\nmodule.exports.Dicer = Dicer\n","'use strict'\n\nconst { MessageChannel, receiveMessageOnPort } = require('worker_threads')\n\nconst corsSafeListedMethods = ['GET', 'HEAD', 'POST']\nconst corsSafeListedMethodsSet = new Set(corsSafeListedMethods)\n\nconst nullBodyStatus = [101, 204, 205, 304]\n\nconst redirectStatus = [301, 302, 303, 307, 308]\nconst redirectStatusSet = new Set(redirectStatus)\n\n// https://fetch.spec.whatwg.org/#block-bad-port\nconst badPorts = [\n '1', '7', '9', '11', '13', '15', '17', '19', '20', '21', '22', '23', '25', '37', '42', '43', '53', '69', '77', '79',\n '87', '95', '101', '102', '103', '104', '109', '110', '111', '113', '115', '117', '119', '123', '135', '137',\n '139', '143', '161', '179', '389', '427', '465', '512', '513', '514', '515', '526', '530', '531', '532',\n '540', '548', '554', '556', '563', '587', '601', '636', '989', '990', '993', '995', '1719', '1720', '1723',\n '2049', '3659', '4045', '5060', '5061', '6000', '6566', '6665', '6666', '6667', '6668', '6669', '6697',\n '10080'\n]\n\nconst badPortsSet = new Set(badPorts)\n\n// https://w3c.github.io/webappsec-referrer-policy/#referrer-policies\nconst referrerPolicy = [\n '',\n 'no-referrer',\n 'no-referrer-when-downgrade',\n 'same-origin',\n 'origin',\n 'strict-origin',\n 'origin-when-cross-origin',\n 'strict-origin-when-cross-origin',\n 'unsafe-url'\n]\nconst referrerPolicySet = new Set(referrerPolicy)\n\nconst requestRedirect = ['follow', 'manual', 'error']\n\nconst safeMethods = ['GET', 'HEAD', 'OPTIONS', 'TRACE']\nconst safeMethodsSet = new Set(safeMethods)\n\nconst requestMode = ['navigate', 'same-origin', 'no-cors', 'cors']\n\nconst requestCredentials = ['omit', 'same-origin', 'include']\n\nconst requestCache = [\n 'default',\n 'no-store',\n 'reload',\n 'no-cache',\n 'force-cache',\n 'only-if-cached'\n]\n\n// https://fetch.spec.whatwg.org/#request-body-header-name\nconst requestBodyHeader = [\n 'content-encoding',\n 'content-language',\n 'content-location',\n 'content-type',\n // See https://github.com/nodejs/undici/issues/2021\n // 'Content-Length' is a forbidden header name, which is typically\n // removed in the Headers implementation. However, undici doesn't\n // filter out headers, so we add it here.\n 'content-length'\n]\n\n// https://fetch.spec.whatwg.org/#enumdef-requestduplex\nconst requestDuplex = [\n 'half'\n]\n\n// http://fetch.spec.whatwg.org/#forbidden-method\nconst forbiddenMethods = ['CONNECT', 'TRACE', 'TRACK']\nconst forbiddenMethodsSet = new Set(forbiddenMethods)\n\nconst subresource = [\n 'audio',\n 'audioworklet',\n 'font',\n 'image',\n 'manifest',\n 'paintworklet',\n 'script',\n 'style',\n 'track',\n 'video',\n 'xslt',\n ''\n]\nconst subresourceSet = new Set(subresource)\n\n/** @type {globalThis['DOMException']} */\nconst DOMException = globalThis.DOMException ?? (() => {\n // DOMException was only made a global in Node v17.0.0,\n // but fetch supports >= v16.8.\n try {\n atob('~')\n } catch (err) {\n return Object.getPrototypeOf(err).constructor\n }\n})()\n\nlet channel\n\n/** @type {globalThis['structuredClone']} */\nconst structuredClone =\n globalThis.structuredClone ??\n // https://github.com/nodejs/node/blob/b27ae24dcc4251bad726d9d84baf678d1f707fed/lib/internal/structured_clone.js\n // structuredClone was added in v17.0.0, but fetch supports v16.8\n function structuredClone (value, options = undefined) {\n if (arguments.length === 0) {\n throw new TypeError('missing argument')\n }\n\n if (!channel) {\n channel = new MessageChannel()\n }\n channel.port1.unref()\n channel.port2.unref()\n channel.port1.postMessage(value, options?.transfer)\n return receiveMessageOnPort(channel.port2).message\n }\n\nmodule.exports = {\n DOMException,\n structuredClone,\n subresource,\n forbiddenMethods,\n requestBodyHeader,\n referrerPolicy,\n requestRedirect,\n requestMode,\n requestCredentials,\n requestCache,\n redirectStatus,\n corsSafeListedMethods,\n nullBodyStatus,\n safeMethods,\n badPorts,\n requestDuplex,\n subresourceSet,\n badPortsSet,\n redirectStatusSet,\n corsSafeListedMethodsSet,\n safeMethodsSet,\n forbiddenMethodsSet,\n referrerPolicySet\n}\n","'use strict'\n\n// In case of breaking changes, increase the version\n// number to avoid conflicts.\nconst globalOrigin = Symbol.for('undici.globalOrigin.1')\n\nfunction getGlobalOrigin () {\n return globalThis[globalOrigin]\n}\n\nfunction setGlobalOrigin (newOrigin) {\n if (newOrigin === undefined) {\n Object.defineProperty(globalThis, globalOrigin, {\n value: undefined,\n writable: true,\n enumerable: false,\n configurable: false\n })\n\n return\n }\n\n const parsedURL = new URL(newOrigin)\n\n if (parsedURL.protocol !== 'http:' && parsedURL.protocol !== 'https:') {\n throw new TypeError(`Only http & https urls are allowed, received ${parsedURL.protocol}`)\n }\n\n Object.defineProperty(globalThis, globalOrigin, {\n value: parsedURL,\n writable: true,\n enumerable: false,\n configurable: false\n })\n}\n\nmodule.exports = {\n getGlobalOrigin,\n setGlobalOrigin\n}\n","'use strict'\n\nconst { redirectStatusSet, referrerPolicySet: referrerPolicyTokens, badPortsSet } = require('./constants')\nconst { getGlobalOrigin } = require('./global')\nconst { performance } = require('perf_hooks')\nconst { isBlobLike, toUSVString, ReadableStreamFrom } = require('../core/util')\nconst assert = require('assert')\nconst { isUint8Array } = require('util/types')\n\nlet supportedHashes = []\n\n// https://nodejs.org/api/crypto.html#determining-if-crypto-support-is-unavailable\n/** @type {import('crypto')|undefined} */\nlet crypto\n\ntry {\n crypto = require('crypto')\n const possibleRelevantHashes = ['sha256', 'sha384', 'sha512']\n supportedHashes = crypto.getHashes().filter((hash) => possibleRelevantHashes.includes(hash))\n/* c8 ignore next 3 */\n} catch {\n}\n\nfunction responseURL (response) {\n // https://fetch.spec.whatwg.org/#responses\n // A response has an associated URL. It is a pointer to the last URL\n // in response’s URL list and null if response’s URL list is empty.\n const urlList = response.urlList\n const length = urlList.length\n return length === 0 ? null : urlList[length - 1].toString()\n}\n\n// https://fetch.spec.whatwg.org/#concept-response-location-url\nfunction responseLocationURL (response, requestFragment) {\n // 1. If response’s status is not a redirect status, then return null.\n if (!redirectStatusSet.has(response.status)) {\n return null\n }\n\n // 2. Let location be the result of extracting header list values given\n // `Location` and response’s header list.\n let location = response.headersList.get('location')\n\n // 3. If location is a header value, then set location to the result of\n // parsing location with response’s URL.\n if (location !== null && isValidHeaderValue(location)) {\n location = new URL(location, responseURL(response))\n }\n\n // 4. If location is a URL whose fragment is null, then set location’s\n // fragment to requestFragment.\n if (location && !location.hash) {\n location.hash = requestFragment\n }\n\n // 5. Return location.\n return location\n}\n\n/** @returns {URL} */\nfunction requestCurrentURL (request) {\n return request.urlList[request.urlList.length - 1]\n}\n\nfunction requestBadPort (request) {\n // 1. Let url be request’s current URL.\n const url = requestCurrentURL(request)\n\n // 2. If url’s scheme is an HTTP(S) scheme and url’s port is a bad port,\n // then return blocked.\n if (urlIsHttpHttpsScheme(url) && badPortsSet.has(url.port)) {\n return 'blocked'\n }\n\n // 3. Return allowed.\n return 'allowed'\n}\n\nfunction isErrorLike (object) {\n return object instanceof Error || (\n object?.constructor?.name === 'Error' ||\n object?.constructor?.name === 'DOMException'\n )\n}\n\n// Check whether |statusText| is a ByteString and\n// matches the Reason-Phrase token production.\n// RFC 2616: https://tools.ietf.org/html/rfc2616\n// RFC 7230: https://tools.ietf.org/html/rfc7230\n// \"reason-phrase = *( HTAB / SP / VCHAR / obs-text )\"\n// https://github.com/chromium/chromium/blob/94.0.4604.1/third_party/blink/renderer/core/fetch/response.cc#L116\nfunction isValidReasonPhrase (statusText) {\n for (let i = 0; i < statusText.length; ++i) {\n const c = statusText.charCodeAt(i)\n if (\n !(\n (\n c === 0x09 || // HTAB\n (c >= 0x20 && c <= 0x7e) || // SP / VCHAR\n (c >= 0x80 && c <= 0xff)\n ) // obs-text\n )\n ) {\n return false\n }\n }\n return true\n}\n\n/**\n * @see https://tools.ietf.org/html/rfc7230#section-3.2.6\n * @param {number} c\n */\nfunction isTokenCharCode (c) {\n switch (c) {\n case 0x22:\n case 0x28:\n case 0x29:\n case 0x2c:\n case 0x2f:\n case 0x3a:\n case 0x3b:\n case 0x3c:\n case 0x3d:\n case 0x3e:\n case 0x3f:\n case 0x40:\n case 0x5b:\n case 0x5c:\n case 0x5d:\n case 0x7b:\n case 0x7d:\n // DQUOTE and \"(),/:;<=>?@[\\]{}\"\n return false\n default:\n // VCHAR %x21-7E\n return c >= 0x21 && c <= 0x7e\n }\n}\n\n/**\n * @param {string} characters\n */\nfunction isValidHTTPToken (characters) {\n if (characters.length === 0) {\n return false\n }\n for (let i = 0; i < characters.length; ++i) {\n if (!isTokenCharCode(characters.charCodeAt(i))) {\n return false\n }\n }\n return true\n}\n\n/**\n * @see https://fetch.spec.whatwg.org/#header-name\n * @param {string} potentialValue\n */\nfunction isValidHeaderName (potentialValue) {\n return isValidHTTPToken(potentialValue)\n}\n\n/**\n * @see https://fetch.spec.whatwg.org/#header-value\n * @param {string} potentialValue\n */\nfunction isValidHeaderValue (potentialValue) {\n // - Has no leading or trailing HTTP tab or space bytes.\n // - Contains no 0x00 (NUL) or HTTP newline bytes.\n if (\n potentialValue.startsWith('\\t') ||\n potentialValue.startsWith(' ') ||\n potentialValue.endsWith('\\t') ||\n potentialValue.endsWith(' ')\n ) {\n return false\n }\n\n if (\n potentialValue.includes('\\0') ||\n potentialValue.includes('\\r') ||\n potentialValue.includes('\\n')\n ) {\n return false\n }\n\n return true\n}\n\n// https://w3c.github.io/webappsec-referrer-policy/#set-requests-referrer-policy-on-redirect\nfunction setRequestReferrerPolicyOnRedirect (request, actualResponse) {\n // Given a request request and a response actualResponse, this algorithm\n // updates request’s referrer policy according to the Referrer-Policy\n // header (if any) in actualResponse.\n\n // 1. Let policy be the result of executing § 8.1 Parse a referrer policy\n // from a Referrer-Policy header on actualResponse.\n\n // 8.1 Parse a referrer policy from a Referrer-Policy header\n // 1. Let policy-tokens be the result of extracting header list values given `Referrer-Policy` and response’s header list.\n const { headersList } = actualResponse\n // 2. Let policy be the empty string.\n // 3. For each token in policy-tokens, if token is a referrer policy and token is not the empty string, then set policy to token.\n // 4. Return policy.\n const policyHeader = (headersList.get('referrer-policy') ?? '').split(',')\n\n // Note: As the referrer-policy can contain multiple policies\n // separated by comma, we need to loop through all of them\n // and pick the first valid one.\n // Ref: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Referrer-Policy#specify_a_fallback_policy\n let policy = ''\n if (policyHeader.length > 0) {\n // The right-most policy takes precedence.\n // The left-most policy is the fallback.\n for (let i = policyHeader.length; i !== 0; i--) {\n const token = policyHeader[i - 1].trim()\n if (referrerPolicyTokens.has(token)) {\n policy = token\n break\n }\n }\n }\n\n // 2. If policy is not the empty string, then set request’s referrer policy to policy.\n if (policy !== '') {\n request.referrerPolicy = policy\n }\n}\n\n// https://fetch.spec.whatwg.org/#cross-origin-resource-policy-check\nfunction crossOriginResourcePolicyCheck () {\n // TODO\n return 'allowed'\n}\n\n// https://fetch.spec.whatwg.org/#concept-cors-check\nfunction corsCheck () {\n // TODO\n return 'success'\n}\n\n// https://fetch.spec.whatwg.org/#concept-tao-check\nfunction TAOCheck () {\n // TODO\n return 'success'\n}\n\nfunction appendFetchMetadata (httpRequest) {\n // https://w3c.github.io/webappsec-fetch-metadata/#sec-fetch-dest-header\n // TODO\n\n // https://w3c.github.io/webappsec-fetch-metadata/#sec-fetch-mode-header\n\n // 1. Assert: r’s url is a potentially trustworthy URL.\n // TODO\n\n // 2. Let header be a Structured Header whose value is a token.\n let header = null\n\n // 3. Set header’s value to r’s mode.\n header = httpRequest.mode\n\n // 4. Set a structured field value `Sec-Fetch-Mode`/header in r’s header list.\n httpRequest.headersList.set('sec-fetch-mode', header)\n\n // https://w3c.github.io/webappsec-fetch-metadata/#sec-fetch-site-header\n // TODO\n\n // https://w3c.github.io/webappsec-fetch-metadata/#sec-fetch-user-header\n // TODO\n}\n\n// https://fetch.spec.whatwg.org/#append-a-request-origin-header\nfunction appendRequestOriginHeader (request) {\n // 1. Let serializedOrigin be the result of byte-serializing a request origin with request.\n let serializedOrigin = request.origin\n\n // 2. If request’s response tainting is \"cors\" or request’s mode is \"websocket\", then append (`Origin`, serializedOrigin) to request’s header list.\n if (request.responseTainting === 'cors' || request.mode === 'websocket') {\n if (serializedOrigin) {\n request.headersList.append('origin', serializedOrigin)\n }\n\n // 3. Otherwise, if request’s method is neither `GET` nor `HEAD`, then:\n } else if (request.method !== 'GET' && request.method !== 'HEAD') {\n // 1. Switch on request’s referrer policy:\n switch (request.referrerPolicy) {\n case 'no-referrer':\n // Set serializedOrigin to `null`.\n serializedOrigin = null\n break\n case 'no-referrer-when-downgrade':\n case 'strict-origin':\n case 'strict-origin-when-cross-origin':\n // If request’s origin is a tuple origin, its scheme is \"https\", and request’s current URL’s scheme is not \"https\", then set serializedOrigin to `null`.\n if (request.origin && urlHasHttpsScheme(request.origin) && !urlHasHttpsScheme(requestCurrentURL(request))) {\n serializedOrigin = null\n }\n break\n case 'same-origin':\n // If request’s origin is not same origin with request’s current URL’s origin, then set serializedOrigin to `null`.\n if (!sameOrigin(request, requestCurrentURL(request))) {\n serializedOrigin = null\n }\n break\n default:\n // Do nothing.\n }\n\n if (serializedOrigin) {\n // 2. Append (`Origin`, serializedOrigin) to request’s header list.\n request.headersList.append('origin', serializedOrigin)\n }\n }\n}\n\nfunction coarsenedSharedCurrentTime (crossOriginIsolatedCapability) {\n // TODO\n return performance.now()\n}\n\n// https://fetch.spec.whatwg.org/#create-an-opaque-timing-info\nfunction createOpaqueTimingInfo (timingInfo) {\n return {\n startTime: timingInfo.startTime ?? 0,\n redirectStartTime: 0,\n redirectEndTime: 0,\n postRedirectStartTime: timingInfo.startTime ?? 0,\n finalServiceWorkerStartTime: 0,\n finalNetworkResponseStartTime: 0,\n finalNetworkRequestStartTime: 0,\n endTime: 0,\n encodedBodySize: 0,\n decodedBodySize: 0,\n finalConnectionTimingInfo: null\n }\n}\n\n// https://html.spec.whatwg.org/multipage/origin.html#policy-container\nfunction makePolicyContainer () {\n // Note: the fetch spec doesn't make use of embedder policy or CSP list\n return {\n referrerPolicy: 'strict-origin-when-cross-origin'\n }\n}\n\n// https://html.spec.whatwg.org/multipage/origin.html#clone-a-policy-container\nfunction clonePolicyContainer (policyContainer) {\n return {\n referrerPolicy: policyContainer.referrerPolicy\n }\n}\n\n// https://w3c.github.io/webappsec-referrer-policy/#determine-requests-referrer\nfunction determineRequestsReferrer (request) {\n // 1. Let policy be request's referrer policy.\n const policy = request.referrerPolicy\n\n // Note: policy cannot (shouldn't) be null or an empty string.\n assert(policy)\n\n // 2. Let environment be request’s client.\n\n let referrerSource = null\n\n // 3. Switch on request’s referrer:\n if (request.referrer === 'client') {\n // Note: node isn't a browser and doesn't implement document/iframes,\n // so we bypass this step and replace it with our own.\n\n const globalOrigin = getGlobalOrigin()\n\n if (!globalOrigin || globalOrigin.origin === 'null') {\n return 'no-referrer'\n }\n\n // note: we need to clone it as it's mutated\n referrerSource = new URL(globalOrigin)\n } else if (request.referrer instanceof URL) {\n // Let referrerSource be request’s referrer.\n referrerSource = request.referrer\n }\n\n // 4. Let request’s referrerURL be the result of stripping referrerSource for\n // use as a referrer.\n let referrerURL = stripURLForReferrer(referrerSource)\n\n // 5. Let referrerOrigin be the result of stripping referrerSource for use as\n // a referrer, with the origin-only flag set to true.\n const referrerOrigin = stripURLForReferrer(referrerSource, true)\n\n // 6. If the result of serializing referrerURL is a string whose length is\n // greater than 4096, set referrerURL to referrerOrigin.\n if (referrerURL.toString().length > 4096) {\n referrerURL = referrerOrigin\n }\n\n const areSameOrigin = sameOrigin(request, referrerURL)\n const isNonPotentiallyTrustWorthy = isURLPotentiallyTrustworthy(referrerURL) &&\n !isURLPotentiallyTrustworthy(request.url)\n\n // 8. Execute the switch statements corresponding to the value of policy:\n switch (policy) {\n case 'origin': return referrerOrigin != null ? referrerOrigin : stripURLForReferrer(referrerSource, true)\n case 'unsafe-url': return referrerURL\n case 'same-origin':\n return areSameOrigin ? referrerOrigin : 'no-referrer'\n case 'origin-when-cross-origin':\n return areSameOrigin ? referrerURL : referrerOrigin\n case 'strict-origin-when-cross-origin': {\n const currentURL = requestCurrentURL(request)\n\n // 1. If the origin of referrerURL and the origin of request’s current\n // URL are the same, then return referrerURL.\n if (sameOrigin(referrerURL, currentURL)) {\n return referrerURL\n }\n\n // 2. If referrerURL is a potentially trustworthy URL and request’s\n // current URL is not a potentially trustworthy URL, then return no\n // referrer.\n if (isURLPotentiallyTrustworthy(referrerURL) && !isURLPotentiallyTrustworthy(currentURL)) {\n return 'no-referrer'\n }\n\n // 3. Return referrerOrigin.\n return referrerOrigin\n }\n case 'strict-origin': // eslint-disable-line\n /**\n * 1. If referrerURL is a potentially trustworthy URL and\n * request’s current URL is not a potentially trustworthy URL,\n * then return no referrer.\n * 2. Return referrerOrigin\n */\n case 'no-referrer-when-downgrade': // eslint-disable-line\n /**\n * 1. If referrerURL is a potentially trustworthy URL and\n * request’s current URL is not a potentially trustworthy URL,\n * then return no referrer.\n * 2. Return referrerOrigin\n */\n\n default: // eslint-disable-line\n return isNonPotentiallyTrustWorthy ? 'no-referrer' : referrerOrigin\n }\n}\n\n/**\n * @see https://w3c.github.io/webappsec-referrer-policy/#strip-url\n * @param {URL} url\n * @param {boolean|undefined} originOnly\n */\nfunction stripURLForReferrer (url, originOnly) {\n // 1. Assert: url is a URL.\n assert(url instanceof URL)\n\n // 2. If url’s scheme is a local scheme, then return no referrer.\n if (url.protocol === 'file:' || url.protocol === 'about:' || url.protocol === 'blank:') {\n return 'no-referrer'\n }\n\n // 3. Set url’s username to the empty string.\n url.username = ''\n\n // 4. Set url’s password to the empty string.\n url.password = ''\n\n // 5. Set url’s fragment to null.\n url.hash = ''\n\n // 6. If the origin-only flag is true, then:\n if (originOnly) {\n // 1. Set url’s path to « the empty string ».\n url.pathname = ''\n\n // 2. Set url’s query to null.\n url.search = ''\n }\n\n // 7. Return url.\n return url\n}\n\nfunction isURLPotentiallyTrustworthy (url) {\n if (!(url instanceof URL)) {\n return false\n }\n\n // If child of about, return true\n if (url.href === 'about:blank' || url.href === 'about:srcdoc') {\n return true\n }\n\n // If scheme is data, return true\n if (url.protocol === 'data:') return true\n\n // If file, return true\n if (url.protocol === 'file:') return true\n\n return isOriginPotentiallyTrustworthy(url.origin)\n\n function isOriginPotentiallyTrustworthy (origin) {\n // If origin is explicitly null, return false\n if (origin == null || origin === 'null') return false\n\n const originAsURL = new URL(origin)\n\n // If secure, return true\n if (originAsURL.protocol === 'https:' || originAsURL.protocol === 'wss:') {\n return true\n }\n\n // If localhost or variants, return true\n if (/^127(?:\\.[0-9]+){0,2}\\.[0-9]+$|^\\[(?:0*:)*?:?0*1\\]$/.test(originAsURL.hostname) ||\n (originAsURL.hostname === 'localhost' || originAsURL.hostname.includes('localhost.')) ||\n (originAsURL.hostname.endsWith('.localhost'))) {\n return true\n }\n\n // If any other, return false\n return false\n }\n}\n\n/**\n * @see https://w3c.github.io/webappsec-subresource-integrity/#does-response-match-metadatalist\n * @param {Uint8Array} bytes\n * @param {string} metadataList\n */\nfunction bytesMatch (bytes, metadataList) {\n // If node is not built with OpenSSL support, we cannot check\n // a request's integrity, so allow it by default (the spec will\n // allow requests if an invalid hash is given, as precedence).\n /* istanbul ignore if: only if node is built with --without-ssl */\n if (crypto === undefined) {\n return true\n }\n\n // 1. Let parsedMetadata be the result of parsing metadataList.\n const parsedMetadata = parseMetadata(metadataList)\n\n // 2. If parsedMetadata is no metadata, return true.\n if (parsedMetadata === 'no metadata') {\n return true\n }\n\n // 3. If response is not eligible for integrity validation, return false.\n // TODO\n\n // 4. If parsedMetadata is the empty set, return true.\n if (parsedMetadata.length === 0) {\n return true\n }\n\n // 5. Let metadata be the result of getting the strongest\n // metadata from parsedMetadata.\n const strongest = getStrongestMetadata(parsedMetadata)\n const metadata = filterMetadataListByAlgorithm(parsedMetadata, strongest)\n\n // 6. For each item in metadata:\n for (const item of metadata) {\n // 1. Let algorithm be the alg component of item.\n const algorithm = item.algo\n\n // 2. Let expectedValue be the val component of item.\n const expectedValue = item.hash\n\n // See https://github.com/web-platform-tests/wpt/commit/e4c5cc7a5e48093220528dfdd1c4012dc3837a0e\n // \"be liberal with padding\". This is annoying, and it's not even in the spec.\n\n // 3. Let actualValue be the result of applying algorithm to bytes.\n let actualValue = crypto.createHash(algorithm).update(bytes).digest('base64')\n\n if (actualValue[actualValue.length - 1] === '=') {\n if (actualValue[actualValue.length - 2] === '=') {\n actualValue = actualValue.slice(0, -2)\n } else {\n actualValue = actualValue.slice(0, -1)\n }\n }\n\n // 4. If actualValue is a case-sensitive match for expectedValue,\n // return true.\n if (compareBase64Mixed(actualValue, expectedValue)) {\n return true\n }\n }\n\n // 7. Return false.\n return false\n}\n\n// https://w3c.github.io/webappsec-subresource-integrity/#grammardef-hash-with-options\n// https://www.w3.org/TR/CSP2/#source-list-syntax\n// https://www.rfc-editor.org/rfc/rfc5234#appendix-B.1\nconst parseHashWithOptions = /(?sha256|sha384|sha512)-((?[A-Za-z0-9+/]+|[A-Za-z0-9_-]+)={0,2}(?:\\s|$)( +[!-~]*)?)?/i\n\n/**\n * @see https://w3c.github.io/webappsec-subresource-integrity/#parse-metadata\n * @param {string} metadata\n */\nfunction parseMetadata (metadata) {\n // 1. Let result be the empty set.\n /** @type {{ algo: string, hash: string }[]} */\n const result = []\n\n // 2. Let empty be equal to true.\n let empty = true\n\n // 3. For each token returned by splitting metadata on spaces:\n for (const token of metadata.split(' ')) {\n // 1. Set empty to false.\n empty = false\n\n // 2. Parse token as a hash-with-options.\n const parsedToken = parseHashWithOptions.exec(token)\n\n // 3. If token does not parse, continue to the next token.\n if (\n parsedToken === null ||\n parsedToken.groups === undefined ||\n parsedToken.groups.algo === undefined\n ) {\n // Note: Chromium blocks the request at this point, but Firefox\n // gives a warning that an invalid integrity was given. The\n // correct behavior is to ignore these, and subsequently not\n // check the integrity of the resource.\n continue\n }\n\n // 4. Let algorithm be the hash-algo component of token.\n const algorithm = parsedToken.groups.algo.toLowerCase()\n\n // 5. If algorithm is a hash function recognized by the user\n // agent, add the parsed token to result.\n if (supportedHashes.includes(algorithm)) {\n result.push(parsedToken.groups)\n }\n }\n\n // 4. Return no metadata if empty is true, otherwise return result.\n if (empty === true) {\n return 'no metadata'\n }\n\n return result\n}\n\n/**\n * @param {{ algo: 'sha256' | 'sha384' | 'sha512' }[]} metadataList\n */\nfunction getStrongestMetadata (metadataList) {\n // Let algorithm be the algo component of the first item in metadataList.\n // Can be sha256\n let algorithm = metadataList[0].algo\n // If the algorithm is sha512, then it is the strongest\n // and we can return immediately\n if (algorithm[3] === '5') {\n return algorithm\n }\n\n for (let i = 1; i < metadataList.length; ++i) {\n const metadata = metadataList[i]\n // If the algorithm is sha512, then it is the strongest\n // and we can break the loop immediately\n if (metadata.algo[3] === '5') {\n algorithm = 'sha512'\n break\n // If the algorithm is sha384, then a potential sha256 or sha384 is ignored\n } else if (algorithm[3] === '3') {\n continue\n // algorithm is sha256, check if algorithm is sha384 and if so, set it as\n // the strongest\n } else if (metadata.algo[3] === '3') {\n algorithm = 'sha384'\n }\n }\n return algorithm\n}\n\nfunction filterMetadataListByAlgorithm (metadataList, algorithm) {\n if (metadataList.length === 1) {\n return metadataList\n }\n\n let pos = 0\n for (let i = 0; i < metadataList.length; ++i) {\n if (metadataList[i].algo === algorithm) {\n metadataList[pos++] = metadataList[i]\n }\n }\n\n metadataList.length = pos\n\n return metadataList\n}\n\n/**\n * Compares two base64 strings, allowing for base64url\n * in the second string.\n *\n* @param {string} actualValue always base64\n * @param {string} expectedValue base64 or base64url\n * @returns {boolean}\n */\nfunction compareBase64Mixed (actualValue, expectedValue) {\n if (actualValue.length !== expectedValue.length) {\n return false\n }\n for (let i = 0; i < actualValue.length; ++i) {\n if (actualValue[i] !== expectedValue[i]) {\n if (\n (actualValue[i] === '+' && expectedValue[i] === '-') ||\n (actualValue[i] === '/' && expectedValue[i] === '_')\n ) {\n continue\n }\n return false\n }\n }\n\n return true\n}\n\n// https://w3c.github.io/webappsec-upgrade-insecure-requests/#upgrade-request\nfunction tryUpgradeRequestToAPotentiallyTrustworthyURL (request) {\n // TODO\n}\n\n/**\n * @link {https://html.spec.whatwg.org/multipage/origin.html#same-origin}\n * @param {URL} A\n * @param {URL} B\n */\nfunction sameOrigin (A, B) {\n // 1. If A and B are the same opaque origin, then return true.\n if (A.origin === B.origin && A.origin === 'null') {\n return true\n }\n\n // 2. If A and B are both tuple origins and their schemes,\n // hosts, and port are identical, then return true.\n if (A.protocol === B.protocol && A.hostname === B.hostname && A.port === B.port) {\n return true\n }\n\n // 3. Return false.\n return false\n}\n\nfunction createDeferredPromise () {\n let res\n let rej\n const promise = new Promise((resolve, reject) => {\n res = resolve\n rej = reject\n })\n\n return { promise, resolve: res, reject: rej }\n}\n\nfunction isAborted (fetchParams) {\n return fetchParams.controller.state === 'aborted'\n}\n\nfunction isCancelled (fetchParams) {\n return fetchParams.controller.state === 'aborted' ||\n fetchParams.controller.state === 'terminated'\n}\n\nconst normalizeMethodRecord = {\n delete: 'DELETE',\n DELETE: 'DELETE',\n get: 'GET',\n GET: 'GET',\n head: 'HEAD',\n HEAD: 'HEAD',\n options: 'OPTIONS',\n OPTIONS: 'OPTIONS',\n post: 'POST',\n POST: 'POST',\n put: 'PUT',\n PUT: 'PUT'\n}\n\n// Note: object prototypes should not be able to be referenced. e.g. `Object#hasOwnProperty`.\nObject.setPrototypeOf(normalizeMethodRecord, null)\n\n/**\n * @see https://fetch.spec.whatwg.org/#concept-method-normalize\n * @param {string} method\n */\nfunction normalizeMethod (method) {\n return normalizeMethodRecord[method.toLowerCase()] ?? method\n}\n\n// https://infra.spec.whatwg.org/#serialize-a-javascript-value-to-a-json-string\nfunction serializeJavascriptValueToJSONString (value) {\n // 1. Let result be ? Call(%JSON.stringify%, undefined, « value »).\n const result = JSON.stringify(value)\n\n // 2. If result is undefined, then throw a TypeError.\n if (result === undefined) {\n throw new TypeError('Value is not JSON serializable')\n }\n\n // 3. Assert: result is a string.\n assert(typeof result === 'string')\n\n // 4. Return result.\n return result\n}\n\n// https://tc39.es/ecma262/#sec-%25iteratorprototype%25-object\nconst esIteratorPrototype = Object.getPrototypeOf(Object.getPrototypeOf([][Symbol.iterator]()))\n\n/**\n * @see https://webidl.spec.whatwg.org/#dfn-iterator-prototype-object\n * @param {() => unknown[]} iterator\n * @param {string} name name of the instance\n * @param {'key'|'value'|'key+value'} kind\n */\nfunction makeIterator (iterator, name, kind) {\n const object = {\n index: 0,\n kind,\n target: iterator\n }\n\n const i = {\n next () {\n // 1. Let interface be the interface for which the iterator prototype object exists.\n\n // 2. Let thisValue be the this value.\n\n // 3. Let object be ? ToObject(thisValue).\n\n // 4. If object is a platform object, then perform a security\n // check, passing:\n\n // 5. If object is not a default iterator object for interface,\n // then throw a TypeError.\n if (Object.getPrototypeOf(this) !== i) {\n throw new TypeError(\n `'next' called on an object that does not implement interface ${name} Iterator.`\n )\n }\n\n // 6. Let index be object’s index.\n // 7. Let kind be object’s kind.\n // 8. Let values be object’s target's value pairs to iterate over.\n const { index, kind, target } = object\n const values = target()\n\n // 9. Let len be the length of values.\n const len = values.length\n\n // 10. If index is greater than or equal to len, then return\n // CreateIterResultObject(undefined, true).\n if (index >= len) {\n return { value: undefined, done: true }\n }\n\n // 11. Let pair be the entry in values at index index.\n const pair = values[index]\n\n // 12. Set object’s index to index + 1.\n object.index = index + 1\n\n // 13. Return the iterator result for pair and kind.\n return iteratorResult(pair, kind)\n },\n // The class string of an iterator prototype object for a given interface is the\n // result of concatenating the identifier of the interface and the string \" Iterator\".\n [Symbol.toStringTag]: `${name} Iterator`\n }\n\n // The [[Prototype]] internal slot of an iterator prototype object must be %IteratorPrototype%.\n Object.setPrototypeOf(i, esIteratorPrototype)\n // esIteratorPrototype needs to be the prototype of i\n // which is the prototype of an empty object. Yes, it's confusing.\n return Object.setPrototypeOf({}, i)\n}\n\n// https://webidl.spec.whatwg.org/#iterator-result\nfunction iteratorResult (pair, kind) {\n let result\n\n // 1. Let result be a value determined by the value of kind:\n switch (kind) {\n case 'key': {\n // 1. Let idlKey be pair’s key.\n // 2. Let key be the result of converting idlKey to an\n // ECMAScript value.\n // 3. result is key.\n result = pair[0]\n break\n }\n case 'value': {\n // 1. Let idlValue be pair’s value.\n // 2. Let value be the result of converting idlValue to\n // an ECMAScript value.\n // 3. result is value.\n result = pair[1]\n break\n }\n case 'key+value': {\n // 1. Let idlKey be pair’s key.\n // 2. Let idlValue be pair’s value.\n // 3. Let key be the result of converting idlKey to an\n // ECMAScript value.\n // 4. Let value be the result of converting idlValue to\n // an ECMAScript value.\n // 5. Let array be ! ArrayCreate(2).\n // 6. Call ! CreateDataProperty(array, \"0\", key).\n // 7. Call ! CreateDataProperty(array, \"1\", value).\n // 8. result is array.\n result = pair\n break\n }\n }\n\n // 2. Return CreateIterResultObject(result, false).\n return { value: result, done: false }\n}\n\n/**\n * @see https://fetch.spec.whatwg.org/#body-fully-read\n */\nasync function fullyReadBody (body, processBody, processBodyError) {\n // 1. If taskDestination is null, then set taskDestination to\n // the result of starting a new parallel queue.\n\n // 2. Let successSteps given a byte sequence bytes be to queue a\n // fetch task to run processBody given bytes, with taskDestination.\n const successSteps = processBody\n\n // 3. Let errorSteps be to queue a fetch task to run processBodyError,\n // with taskDestination.\n const errorSteps = processBodyError\n\n // 4. Let reader be the result of getting a reader for body’s stream.\n // If that threw an exception, then run errorSteps with that\n // exception and return.\n let reader\n\n try {\n reader = body.stream.getReader()\n } catch (e) {\n errorSteps(e)\n return\n }\n\n // 5. Read all bytes from reader, given successSteps and errorSteps.\n try {\n const result = await readAllBytes(reader)\n successSteps(result)\n } catch (e) {\n errorSteps(e)\n }\n}\n\n/** @type {ReadableStream} */\nlet ReadableStream = globalThis.ReadableStream\n\nfunction isReadableStreamLike (stream) {\n if (!ReadableStream) {\n ReadableStream = require('stream/web').ReadableStream\n }\n\n return stream instanceof ReadableStream || (\n stream[Symbol.toStringTag] === 'ReadableStream' &&\n typeof stream.tee === 'function'\n )\n}\n\nconst MAXIMUM_ARGUMENT_LENGTH = 65535\n\n/**\n * @see https://infra.spec.whatwg.org/#isomorphic-decode\n * @param {number[]|Uint8Array} input\n */\nfunction isomorphicDecode (input) {\n // 1. To isomorphic decode a byte sequence input, return a string whose code point\n // length is equal to input’s length and whose code points have the same values\n // as the values of input’s bytes, in the same order.\n\n if (input.length < MAXIMUM_ARGUMENT_LENGTH) {\n return String.fromCharCode(...input)\n }\n\n return input.reduce((previous, current) => previous + String.fromCharCode(current), '')\n}\n\n/**\n * @param {ReadableStreamController} controller\n */\nfunction readableStreamClose (controller) {\n try {\n controller.close()\n } catch (err) {\n // TODO: add comment explaining why this error occurs.\n if (!err.message.includes('Controller is already closed')) {\n throw err\n }\n }\n}\n\n/**\n * @see https://infra.spec.whatwg.org/#isomorphic-encode\n * @param {string} input\n */\nfunction isomorphicEncode (input) {\n // 1. Assert: input contains no code points greater than U+00FF.\n for (let i = 0; i < input.length; i++) {\n assert(input.charCodeAt(i) <= 0xFF)\n }\n\n // 2. Return a byte sequence whose length is equal to input’s code\n // point length and whose bytes have the same values as the\n // values of input’s code points, in the same order\n return input\n}\n\n/**\n * @see https://streams.spec.whatwg.org/#readablestreamdefaultreader-read-all-bytes\n * @see https://streams.spec.whatwg.org/#read-loop\n * @param {ReadableStreamDefaultReader} reader\n */\nasync function readAllBytes (reader) {\n const bytes = []\n let byteLength = 0\n\n while (true) {\n const { done, value: chunk } = await reader.read()\n\n if (done) {\n // 1. Call successSteps with bytes.\n return Buffer.concat(bytes, byteLength)\n }\n\n // 1. If chunk is not a Uint8Array object, call failureSteps\n // with a TypeError and abort these steps.\n if (!isUint8Array(chunk)) {\n throw new TypeError('Received non-Uint8Array chunk')\n }\n\n // 2. Append the bytes represented by chunk to bytes.\n bytes.push(chunk)\n byteLength += chunk.length\n\n // 3. Read-loop given reader, bytes, successSteps, and failureSteps.\n }\n}\n\n/**\n * @see https://fetch.spec.whatwg.org/#is-local\n * @param {URL} url\n */\nfunction urlIsLocal (url) {\n assert('protocol' in url) // ensure it's a url object\n\n const protocol = url.protocol\n\n return protocol === 'about:' || protocol === 'blob:' || protocol === 'data:'\n}\n\n/**\n * @param {string|URL} url\n */\nfunction urlHasHttpsScheme (url) {\n if (typeof url === 'string') {\n return url.startsWith('https:')\n }\n\n return url.protocol === 'https:'\n}\n\n/**\n * @see https://fetch.spec.whatwg.org/#http-scheme\n * @param {URL} url\n */\nfunction urlIsHttpHttpsScheme (url) {\n assert('protocol' in url) // ensure it's a url object\n\n const protocol = url.protocol\n\n return protocol === 'http:' || protocol === 'https:'\n}\n\n/**\n * Fetch supports node >= 16.8.0, but Object.hasOwn was added in v16.9.0.\n */\nconst hasOwn = Object.hasOwn || ((dict, key) => Object.prototype.hasOwnProperty.call(dict, key))\n\nmodule.exports = {\n isAborted,\n isCancelled,\n createDeferredPromise,\n ReadableStreamFrom,\n toUSVString,\n tryUpgradeRequestToAPotentiallyTrustworthyURL,\n coarsenedSharedCurrentTime,\n determineRequestsReferrer,\n makePolicyContainer,\n clonePolicyContainer,\n appendFetchMetadata,\n appendRequestOriginHeader,\n TAOCheck,\n corsCheck,\n crossOriginResourcePolicyCheck,\n createOpaqueTimingInfo,\n setRequestReferrerPolicyOnRedirect,\n isValidHTTPToken,\n requestBadPort,\n requestCurrentURL,\n responseURL,\n responseLocationURL,\n isBlobLike,\n isURLPotentiallyTrustworthy,\n isValidReasonPhrase,\n sameOrigin,\n normalizeMethod,\n serializeJavascriptValueToJSONString,\n makeIterator,\n isValidHeaderName,\n isValidHeaderValue,\n hasOwn,\n isErrorLike,\n fullyReadBody,\n bytesMatch,\n isReadableStreamLike,\n readableStreamClose,\n isomorphicEncode,\n isomorphicDecode,\n urlIsLocal,\n urlHasHttpsScheme,\n urlIsHttpHttpsScheme,\n readAllBytes,\n normalizeMethodRecord,\n parseMetadata\n}\n","'use strict'\n\nmodule.exports = {\n kUrl: Symbol('url'),\n kHeaders: Symbol('headers'),\n kSignal: Symbol('signal'),\n kState: Symbol('state'),\n kGuard: Symbol('guard'),\n kRealm: Symbol('realm')\n}\n","'use strict'\n\nconst { types } = require('util')\nconst { hasOwn, toUSVString } = require('./util')\n\n/** @type {import('../../types/webidl').Webidl} */\nconst webidl = {}\nwebidl.converters = {}\nwebidl.util = {}\nwebidl.errors = {}\n\nwebidl.errors.exception = function (message) {\n return new TypeError(`${message.header}: ${message.message}`)\n}\n\nwebidl.errors.conversionFailed = function (context) {\n const plural = context.types.length === 1 ? '' : ' one of'\n const message =\n `${context.argument} could not be converted to` +\n `${plural}: ${context.types.join(', ')}.`\n\n return webidl.errors.exception({\n header: context.prefix,\n message\n })\n}\n\nwebidl.errors.invalidArgument = function (context) {\n return webidl.errors.exception({\n header: context.prefix,\n message: `\"${context.value}\" is an invalid ${context.type}.`\n })\n}\n\n// https://webidl.spec.whatwg.org/#implements\nwebidl.brandCheck = function (V, I, opts = undefined) {\n if (opts?.strict !== false && !(V instanceof I)) {\n throw new TypeError('Illegal invocation')\n } else {\n return V?.[Symbol.toStringTag] === I.prototype[Symbol.toStringTag]\n }\n}\n\nwebidl.argumentLengthCheck = function ({ length }, min, ctx) {\n if (length < min) {\n throw webidl.errors.exception({\n message: `${min} argument${min !== 1 ? 's' : ''} required, ` +\n `but${length ? ' only' : ''} ${length} found.`,\n ...ctx\n })\n }\n}\n\nwebidl.illegalConstructor = function () {\n throw webidl.errors.exception({\n header: 'TypeError',\n message: 'Illegal constructor'\n })\n}\n\n// https://tc39.es/ecma262/#sec-ecmascript-data-types-and-values\nwebidl.util.Type = function (V) {\n switch (typeof V) {\n case 'undefined': return 'Undefined'\n case 'boolean': return 'Boolean'\n case 'string': return 'String'\n case 'symbol': return 'Symbol'\n case 'number': return 'Number'\n case 'bigint': return 'BigInt'\n case 'function':\n case 'object': {\n if (V === null) {\n return 'Null'\n }\n\n return 'Object'\n }\n }\n}\n\n// https://webidl.spec.whatwg.org/#abstract-opdef-converttoint\nwebidl.util.ConvertToInt = function (V, bitLength, signedness, opts = {}) {\n let upperBound\n let lowerBound\n\n // 1. If bitLength is 64, then:\n if (bitLength === 64) {\n // 1. Let upperBound be 2^53 − 1.\n upperBound = Math.pow(2, 53) - 1\n\n // 2. If signedness is \"unsigned\", then let lowerBound be 0.\n if (signedness === 'unsigned') {\n lowerBound = 0\n } else {\n // 3. Otherwise let lowerBound be −2^53 + 1.\n lowerBound = Math.pow(-2, 53) + 1\n }\n } else if (signedness === 'unsigned') {\n // 2. Otherwise, if signedness is \"unsigned\", then:\n\n // 1. Let lowerBound be 0.\n lowerBound = 0\n\n // 2. Let upperBound be 2^bitLength − 1.\n upperBound = Math.pow(2, bitLength) - 1\n } else {\n // 3. Otherwise:\n\n // 1. Let lowerBound be -2^bitLength − 1.\n lowerBound = Math.pow(-2, bitLength) - 1\n\n // 2. Let upperBound be 2^bitLength − 1 − 1.\n upperBound = Math.pow(2, bitLength - 1) - 1\n }\n\n // 4. Let x be ? ToNumber(V).\n let x = Number(V)\n\n // 5. If x is −0, then set x to +0.\n if (x === 0) {\n x = 0\n }\n\n // 6. If the conversion is to an IDL type associated\n // with the [EnforceRange] extended attribute, then:\n if (opts.enforceRange === true) {\n // 1. If x is NaN, +∞, or −∞, then throw a TypeError.\n if (\n Number.isNaN(x) ||\n x === Number.POSITIVE_INFINITY ||\n x === Number.NEGATIVE_INFINITY\n ) {\n throw webidl.errors.exception({\n header: 'Integer conversion',\n message: `Could not convert ${V} to an integer.`\n })\n }\n\n // 2. Set x to IntegerPart(x).\n x = webidl.util.IntegerPart(x)\n\n // 3. If x < lowerBound or x > upperBound, then\n // throw a TypeError.\n if (x < lowerBound || x > upperBound) {\n throw webidl.errors.exception({\n header: 'Integer conversion',\n message: `Value must be between ${lowerBound}-${upperBound}, got ${x}.`\n })\n }\n\n // 4. Return x.\n return x\n }\n\n // 7. If x is not NaN and the conversion is to an IDL\n // type associated with the [Clamp] extended\n // attribute, then:\n if (!Number.isNaN(x) && opts.clamp === true) {\n // 1. Set x to min(max(x, lowerBound), upperBound).\n x = Math.min(Math.max(x, lowerBound), upperBound)\n\n // 2. Round x to the nearest integer, choosing the\n // even integer if it lies halfway between two,\n // and choosing +0 rather than −0.\n if (Math.floor(x) % 2 === 0) {\n x = Math.floor(x)\n } else {\n x = Math.ceil(x)\n }\n\n // 3. Return x.\n return x\n }\n\n // 8. If x is NaN, +0, +∞, or −∞, then return +0.\n if (\n Number.isNaN(x) ||\n (x === 0 && Object.is(0, x)) ||\n x === Number.POSITIVE_INFINITY ||\n x === Number.NEGATIVE_INFINITY\n ) {\n return 0\n }\n\n // 9. Set x to IntegerPart(x).\n x = webidl.util.IntegerPart(x)\n\n // 10. Set x to x modulo 2^bitLength.\n x = x % Math.pow(2, bitLength)\n\n // 11. If signedness is \"signed\" and x ≥ 2^bitLength − 1,\n // then return x − 2^bitLength.\n if (signedness === 'signed' && x >= Math.pow(2, bitLength) - 1) {\n return x - Math.pow(2, bitLength)\n }\n\n // 12. Otherwise, return x.\n return x\n}\n\n// https://webidl.spec.whatwg.org/#abstract-opdef-integerpart\nwebidl.util.IntegerPart = function (n) {\n // 1. Let r be floor(abs(n)).\n const r = Math.floor(Math.abs(n))\n\n // 2. If n < 0, then return -1 × r.\n if (n < 0) {\n return -1 * r\n }\n\n // 3. Otherwise, return r.\n return r\n}\n\n// https://webidl.spec.whatwg.org/#es-sequence\nwebidl.sequenceConverter = function (converter) {\n return (V) => {\n // 1. If Type(V) is not Object, throw a TypeError.\n if (webidl.util.Type(V) !== 'Object') {\n throw webidl.errors.exception({\n header: 'Sequence',\n message: `Value of type ${webidl.util.Type(V)} is not an Object.`\n })\n }\n\n // 2. Let method be ? GetMethod(V, @@iterator).\n /** @type {Generator} */\n const method = V?.[Symbol.iterator]?.()\n const seq = []\n\n // 3. If method is undefined, throw a TypeError.\n if (\n method === undefined ||\n typeof method.next !== 'function'\n ) {\n throw webidl.errors.exception({\n header: 'Sequence',\n message: 'Object is not an iterator.'\n })\n }\n\n // https://webidl.spec.whatwg.org/#create-sequence-from-iterable\n while (true) {\n const { done, value } = method.next()\n\n if (done) {\n break\n }\n\n seq.push(converter(value))\n }\n\n return seq\n }\n}\n\n// https://webidl.spec.whatwg.org/#es-to-record\nwebidl.recordConverter = function (keyConverter, valueConverter) {\n return (O) => {\n // 1. If Type(O) is not Object, throw a TypeError.\n if (webidl.util.Type(O) !== 'Object') {\n throw webidl.errors.exception({\n header: 'Record',\n message: `Value of type ${webidl.util.Type(O)} is not an Object.`\n })\n }\n\n // 2. Let result be a new empty instance of record.\n const result = {}\n\n if (!types.isProxy(O)) {\n // Object.keys only returns enumerable properties\n const keys = Object.keys(O)\n\n for (const key of keys) {\n // 1. Let typedKey be key converted to an IDL value of type K.\n const typedKey = keyConverter(key)\n\n // 2. Let value be ? Get(O, key).\n // 3. Let typedValue be value converted to an IDL value of type V.\n const typedValue = valueConverter(O[key])\n\n // 4. Set result[typedKey] to typedValue.\n result[typedKey] = typedValue\n }\n\n // 5. Return result.\n return result\n }\n\n // 3. Let keys be ? O.[[OwnPropertyKeys]]().\n const keys = Reflect.ownKeys(O)\n\n // 4. For each key of keys.\n for (const key of keys) {\n // 1. Let desc be ? O.[[GetOwnProperty]](key).\n const desc = Reflect.getOwnPropertyDescriptor(O, key)\n\n // 2. If desc is not undefined and desc.[[Enumerable]] is true:\n if (desc?.enumerable) {\n // 1. Let typedKey be key converted to an IDL value of type K.\n const typedKey = keyConverter(key)\n\n // 2. Let value be ? Get(O, key).\n // 3. Let typedValue be value converted to an IDL value of type V.\n const typedValue = valueConverter(O[key])\n\n // 4. Set result[typedKey] to typedValue.\n result[typedKey] = typedValue\n }\n }\n\n // 5. Return result.\n return result\n }\n}\n\nwebidl.interfaceConverter = function (i) {\n return (V, opts = {}) => {\n if (opts.strict !== false && !(V instanceof i)) {\n throw webidl.errors.exception({\n header: i.name,\n message: `Expected ${V} to be an instance of ${i.name}.`\n })\n }\n\n return V\n }\n}\n\nwebidl.dictionaryConverter = function (converters) {\n return (dictionary) => {\n const type = webidl.util.Type(dictionary)\n const dict = {}\n\n if (type === 'Null' || type === 'Undefined') {\n return dict\n } else if (type !== 'Object') {\n throw webidl.errors.exception({\n header: 'Dictionary',\n message: `Expected ${dictionary} to be one of: Null, Undefined, Object.`\n })\n }\n\n for (const options of converters) {\n const { key, defaultValue, required, converter } = options\n\n if (required === true) {\n if (!hasOwn(dictionary, key)) {\n throw webidl.errors.exception({\n header: 'Dictionary',\n message: `Missing required key \"${key}\".`\n })\n }\n }\n\n let value = dictionary[key]\n const hasDefault = hasOwn(options, 'defaultValue')\n\n // Only use defaultValue if value is undefined and\n // a defaultValue options was provided.\n if (hasDefault && value !== null) {\n value = value ?? defaultValue\n }\n\n // A key can be optional and have no default value.\n // When this happens, do not perform a conversion,\n // and do not assign the key a value.\n if (required || hasDefault || value !== undefined) {\n value = converter(value)\n\n if (\n options.allowedValues &&\n !options.allowedValues.includes(value)\n ) {\n throw webidl.errors.exception({\n header: 'Dictionary',\n message: `${value} is not an accepted type. Expected one of ${options.allowedValues.join(', ')}.`\n })\n }\n\n dict[key] = value\n }\n }\n\n return dict\n }\n}\n\nwebidl.nullableConverter = function (converter) {\n return (V) => {\n if (V === null) {\n return V\n }\n\n return converter(V)\n }\n}\n\n// https://webidl.spec.whatwg.org/#es-DOMString\nwebidl.converters.DOMString = function (V, opts = {}) {\n // 1. If V is null and the conversion is to an IDL type\n // associated with the [LegacyNullToEmptyString]\n // extended attribute, then return the DOMString value\n // that represents the empty string.\n if (V === null && opts.legacyNullToEmptyString) {\n return ''\n }\n\n // 2. Let x be ? ToString(V).\n if (typeof V === 'symbol') {\n throw new TypeError('Could not convert argument of type symbol to string.')\n }\n\n // 3. Return the IDL DOMString value that represents the\n // same sequence of code units as the one the\n // ECMAScript String value x represents.\n return String(V)\n}\n\n// https://webidl.spec.whatwg.org/#es-ByteString\nwebidl.converters.ByteString = function (V) {\n // 1. Let x be ? ToString(V).\n // Note: DOMString converter perform ? ToString(V)\n const x = webidl.converters.DOMString(V)\n\n // 2. If the value of any element of x is greater than\n // 255, then throw a TypeError.\n for (let index = 0; index < x.length; index++) {\n if (x.charCodeAt(index) > 255) {\n throw new TypeError(\n 'Cannot convert argument to a ByteString because the character at ' +\n `index ${index} has a value of ${x.charCodeAt(index)} which is greater than 255.`\n )\n }\n }\n\n // 3. Return an IDL ByteString value whose length is the\n // length of x, and where the value of each element is\n // the value of the corresponding element of x.\n return x\n}\n\n// https://webidl.spec.whatwg.org/#es-USVString\nwebidl.converters.USVString = toUSVString\n\n// https://webidl.spec.whatwg.org/#es-boolean\nwebidl.converters.boolean = function (V) {\n // 1. Let x be the result of computing ToBoolean(V).\n const x = Boolean(V)\n\n // 2. Return the IDL boolean value that is the one that represents\n // the same truth value as the ECMAScript Boolean value x.\n return x\n}\n\n// https://webidl.spec.whatwg.org/#es-any\nwebidl.converters.any = function (V) {\n return V\n}\n\n// https://webidl.spec.whatwg.org/#es-long-long\nwebidl.converters['long long'] = function (V) {\n // 1. Let x be ? ConvertToInt(V, 64, \"signed\").\n const x = webidl.util.ConvertToInt(V, 64, 'signed')\n\n // 2. Return the IDL long long value that represents\n // the same numeric value as x.\n return x\n}\n\n// https://webidl.spec.whatwg.org/#es-unsigned-long-long\nwebidl.converters['unsigned long long'] = function (V) {\n // 1. Let x be ? ConvertToInt(V, 64, \"unsigned\").\n const x = webidl.util.ConvertToInt(V, 64, 'unsigned')\n\n // 2. Return the IDL unsigned long long value that\n // represents the same numeric value as x.\n return x\n}\n\n// https://webidl.spec.whatwg.org/#es-unsigned-long\nwebidl.converters['unsigned long'] = function (V) {\n // 1. Let x be ? ConvertToInt(V, 32, \"unsigned\").\n const x = webidl.util.ConvertToInt(V, 32, 'unsigned')\n\n // 2. Return the IDL unsigned long value that\n // represents the same numeric value as x.\n return x\n}\n\n// https://webidl.spec.whatwg.org/#es-unsigned-short\nwebidl.converters['unsigned short'] = function (V, opts) {\n // 1. Let x be ? ConvertToInt(V, 16, \"unsigned\").\n const x = webidl.util.ConvertToInt(V, 16, 'unsigned', opts)\n\n // 2. Return the IDL unsigned short value that represents\n // the same numeric value as x.\n return x\n}\n\n// https://webidl.spec.whatwg.org/#idl-ArrayBuffer\nwebidl.converters.ArrayBuffer = function (V, opts = {}) {\n // 1. If Type(V) is not Object, or V does not have an\n // [[ArrayBufferData]] internal slot, then throw a\n // TypeError.\n // see: https://tc39.es/ecma262/#sec-properties-of-the-arraybuffer-instances\n // see: https://tc39.es/ecma262/#sec-properties-of-the-sharedarraybuffer-instances\n if (\n webidl.util.Type(V) !== 'Object' ||\n !types.isAnyArrayBuffer(V)\n ) {\n throw webidl.errors.conversionFailed({\n prefix: `${V}`,\n argument: `${V}`,\n types: ['ArrayBuffer']\n })\n }\n\n // 2. If the conversion is not to an IDL type associated\n // with the [AllowShared] extended attribute, and\n // IsSharedArrayBuffer(V) is true, then throw a\n // TypeError.\n if (opts.allowShared === false && types.isSharedArrayBuffer(V)) {\n throw webidl.errors.exception({\n header: 'ArrayBuffer',\n message: 'SharedArrayBuffer is not allowed.'\n })\n }\n\n // 3. If the conversion is not to an IDL type associated\n // with the [AllowResizable] extended attribute, and\n // IsResizableArrayBuffer(V) is true, then throw a\n // TypeError.\n // Note: resizable ArrayBuffers are currently a proposal.\n\n // 4. Return the IDL ArrayBuffer value that is a\n // reference to the same object as V.\n return V\n}\n\nwebidl.converters.TypedArray = function (V, T, opts = {}) {\n // 1. Let T be the IDL type V is being converted to.\n\n // 2. If Type(V) is not Object, or V does not have a\n // [[TypedArrayName]] internal slot with a value\n // equal to T’s name, then throw a TypeError.\n if (\n webidl.util.Type(V) !== 'Object' ||\n !types.isTypedArray(V) ||\n V.constructor.name !== T.name\n ) {\n throw webidl.errors.conversionFailed({\n prefix: `${T.name}`,\n argument: `${V}`,\n types: [T.name]\n })\n }\n\n // 3. If the conversion is not to an IDL type associated\n // with the [AllowShared] extended attribute, and\n // IsSharedArrayBuffer(V.[[ViewedArrayBuffer]]) is\n // true, then throw a TypeError.\n if (opts.allowShared === false && types.isSharedArrayBuffer(V.buffer)) {\n throw webidl.errors.exception({\n header: 'ArrayBuffer',\n message: 'SharedArrayBuffer is not allowed.'\n })\n }\n\n // 4. If the conversion is not to an IDL type associated\n // with the [AllowResizable] extended attribute, and\n // IsResizableArrayBuffer(V.[[ViewedArrayBuffer]]) is\n // true, then throw a TypeError.\n // Note: resizable array buffers are currently a proposal\n\n // 5. Return the IDL value of type T that is a reference\n // to the same object as V.\n return V\n}\n\nwebidl.converters.DataView = function (V, opts = {}) {\n // 1. If Type(V) is not Object, or V does not have a\n // [[DataView]] internal slot, then throw a TypeError.\n if (webidl.util.Type(V) !== 'Object' || !types.isDataView(V)) {\n throw webidl.errors.exception({\n header: 'DataView',\n message: 'Object is not a DataView.'\n })\n }\n\n // 2. If the conversion is not to an IDL type associated\n // with the [AllowShared] extended attribute, and\n // IsSharedArrayBuffer(V.[[ViewedArrayBuffer]]) is true,\n // then throw a TypeError.\n if (opts.allowShared === false && types.isSharedArrayBuffer(V.buffer)) {\n throw webidl.errors.exception({\n header: 'ArrayBuffer',\n message: 'SharedArrayBuffer is not allowed.'\n })\n }\n\n // 3. If the conversion is not to an IDL type associated\n // with the [AllowResizable] extended attribute, and\n // IsResizableArrayBuffer(V.[[ViewedArrayBuffer]]) is\n // true, then throw a TypeError.\n // Note: resizable ArrayBuffers are currently a proposal\n\n // 4. Return the IDL DataView value that is a reference\n // to the same object as V.\n return V\n}\n\n// https://webidl.spec.whatwg.org/#BufferSource\nwebidl.converters.BufferSource = function (V, opts = {}) {\n if (types.isAnyArrayBuffer(V)) {\n return webidl.converters.ArrayBuffer(V, opts)\n }\n\n if (types.isTypedArray(V)) {\n return webidl.converters.TypedArray(V, V.constructor)\n }\n\n if (types.isDataView(V)) {\n return webidl.converters.DataView(V, opts)\n }\n\n throw new TypeError(`Could not convert ${V} to a BufferSource.`)\n}\n\nwebidl.converters['sequence'] = webidl.sequenceConverter(\n webidl.converters.ByteString\n)\n\nwebidl.converters['sequence>'] = webidl.sequenceConverter(\n webidl.converters['sequence']\n)\n\nwebidl.converters['record'] = webidl.recordConverter(\n webidl.converters.ByteString,\n webidl.converters.ByteString\n)\n\nmodule.exports = {\n webidl\n}\n","const assert = require('assert')\nconst { atob } = require('buffer')\nconst { isomorphicDecode } = require('./util')\n\nconst encoder = new TextEncoder()\n\n/**\n * @see https://mimesniff.spec.whatwg.org/#http-token-code-point\n */\nconst HTTP_TOKEN_CODEPOINTS = /^[!#$%&'*+-.^_|~A-Za-z0-9]+$/\nconst HTTP_WHITESPACE_REGEX = /(\\u000A|\\u000D|\\u0009|\\u0020)/ // eslint-disable-line\n/**\n * @see https://mimesniff.spec.whatwg.org/#http-quoted-string-token-code-point\n */\nconst HTTP_QUOTED_STRING_TOKENS = /[\\u0009|\\u0020-\\u007E|\\u0080-\\u00FF]/ // eslint-disable-line\n\n// https://fetch.spec.whatwg.org/#data-url-processor\n/** @param {URL} dataURL */\nfunction dataURLProcessor (dataURL) {\n // 1. Assert: dataURL’s scheme is \"data\".\n assert(dataURL.protocol === 'data:')\n\n // 2. Let input be the result of running the URL\n // serializer on dataURL with exclude fragment\n // set to true.\n let input = URLSerializer(dataURL, true)\n\n // 3. Remove the leading \"data:\" string from input.\n input = input.slice(5)\n\n // 4. Let position point at the start of input.\n const position = { position: 0 }\n\n // 5. Let mimeType be the result of collecting a\n // sequence of code points that are not equal\n // to U+002C (,), given position.\n let mimeType = collectASequenceOfCodePointsFast(\n ',',\n input,\n position\n )\n\n // 6. Strip leading and trailing ASCII whitespace\n // from mimeType.\n // Undici implementation note: we need to store the\n // length because if the mimetype has spaces removed,\n // the wrong amount will be sliced from the input in\n // step #9\n const mimeTypeLength = mimeType.length\n mimeType = removeASCIIWhitespace(mimeType, true, true)\n\n // 7. If position is past the end of input, then\n // return failure\n if (position.position >= input.length) {\n return 'failure'\n }\n\n // 8. Advance position by 1.\n position.position++\n\n // 9. Let encodedBody be the remainder of input.\n const encodedBody = input.slice(mimeTypeLength + 1)\n\n // 10. Let body be the percent-decoding of encodedBody.\n let body = stringPercentDecode(encodedBody)\n\n // 11. If mimeType ends with U+003B (;), followed by\n // zero or more U+0020 SPACE, followed by an ASCII\n // case-insensitive match for \"base64\", then:\n if (/;(\\u0020){0,}base64$/i.test(mimeType)) {\n // 1. Let stringBody be the isomorphic decode of body.\n const stringBody = isomorphicDecode(body)\n\n // 2. Set body to the forgiving-base64 decode of\n // stringBody.\n body = forgivingBase64(stringBody)\n\n // 3. If body is failure, then return failure.\n if (body === 'failure') {\n return 'failure'\n }\n\n // 4. Remove the last 6 code points from mimeType.\n mimeType = mimeType.slice(0, -6)\n\n // 5. Remove trailing U+0020 SPACE code points from mimeType,\n // if any.\n mimeType = mimeType.replace(/(\\u0020)+$/, '')\n\n // 6. Remove the last U+003B (;) code point from mimeType.\n mimeType = mimeType.slice(0, -1)\n }\n\n // 12. If mimeType starts with U+003B (;), then prepend\n // \"text/plain\" to mimeType.\n if (mimeType.startsWith(';')) {\n mimeType = 'text/plain' + mimeType\n }\n\n // 13. Let mimeTypeRecord be the result of parsing\n // mimeType.\n let mimeTypeRecord = parseMIMEType(mimeType)\n\n // 14. If mimeTypeRecord is failure, then set\n // mimeTypeRecord to text/plain;charset=US-ASCII.\n if (mimeTypeRecord === 'failure') {\n mimeTypeRecord = parseMIMEType('text/plain;charset=US-ASCII')\n }\n\n // 15. Return a new data: URL struct whose MIME\n // type is mimeTypeRecord and body is body.\n // https://fetch.spec.whatwg.org/#data-url-struct\n return { mimeType: mimeTypeRecord, body }\n}\n\n// https://url.spec.whatwg.org/#concept-url-serializer\n/**\n * @param {URL} url\n * @param {boolean} excludeFragment\n */\nfunction URLSerializer (url, excludeFragment = false) {\n if (!excludeFragment) {\n return url.href\n }\n\n const href = url.href\n const hashLength = url.hash.length\n\n return hashLength === 0 ? href : href.substring(0, href.length - hashLength)\n}\n\n// https://infra.spec.whatwg.org/#collect-a-sequence-of-code-points\n/**\n * @param {(char: string) => boolean} condition\n * @param {string} input\n * @param {{ position: number }} position\n */\nfunction collectASequenceOfCodePoints (condition, input, position) {\n // 1. Let result be the empty string.\n let result = ''\n\n // 2. While position doesn’t point past the end of input and the\n // code point at position within input meets the condition condition:\n while (position.position < input.length && condition(input[position.position])) {\n // 1. Append that code point to the end of result.\n result += input[position.position]\n\n // 2. Advance position by 1.\n position.position++\n }\n\n // 3. Return result.\n return result\n}\n\n/**\n * A faster collectASequenceOfCodePoints that only works when comparing a single character.\n * @param {string} char\n * @param {string} input\n * @param {{ position: number }} position\n */\nfunction collectASequenceOfCodePointsFast (char, input, position) {\n const idx = input.indexOf(char, position.position)\n const start = position.position\n\n if (idx === -1) {\n position.position = input.length\n return input.slice(start)\n }\n\n position.position = idx\n return input.slice(start, position.position)\n}\n\n// https://url.spec.whatwg.org/#string-percent-decode\n/** @param {string} input */\nfunction stringPercentDecode (input) {\n // 1. Let bytes be the UTF-8 encoding of input.\n const bytes = encoder.encode(input)\n\n // 2. Return the percent-decoding of bytes.\n return percentDecode(bytes)\n}\n\n// https://url.spec.whatwg.org/#percent-decode\n/** @param {Uint8Array} input */\nfunction percentDecode (input) {\n // 1. Let output be an empty byte sequence.\n /** @type {number[]} */\n const output = []\n\n // 2. For each byte byte in input:\n for (let i = 0; i < input.length; i++) {\n const byte = input[i]\n\n // 1. If byte is not 0x25 (%), then append byte to output.\n if (byte !== 0x25) {\n output.push(byte)\n\n // 2. Otherwise, if byte is 0x25 (%) and the next two bytes\n // after byte in input are not in the ranges\n // 0x30 (0) to 0x39 (9), 0x41 (A) to 0x46 (F),\n // and 0x61 (a) to 0x66 (f), all inclusive, append byte\n // to output.\n } else if (\n byte === 0x25 &&\n !/^[0-9A-Fa-f]{2}$/i.test(String.fromCharCode(input[i + 1], input[i + 2]))\n ) {\n output.push(0x25)\n\n // 3. Otherwise:\n } else {\n // 1. Let bytePoint be the two bytes after byte in input,\n // decoded, and then interpreted as hexadecimal number.\n const nextTwoBytes = String.fromCharCode(input[i + 1], input[i + 2])\n const bytePoint = Number.parseInt(nextTwoBytes, 16)\n\n // 2. Append a byte whose value is bytePoint to output.\n output.push(bytePoint)\n\n // 3. Skip the next two bytes in input.\n i += 2\n }\n }\n\n // 3. Return output.\n return Uint8Array.from(output)\n}\n\n// https://mimesniff.spec.whatwg.org/#parse-a-mime-type\n/** @param {string} input */\nfunction parseMIMEType (input) {\n // 1. Remove any leading and trailing HTTP whitespace\n // from input.\n input = removeHTTPWhitespace(input, true, true)\n\n // 2. Let position be a position variable for input,\n // initially pointing at the start of input.\n const position = { position: 0 }\n\n // 3. Let type be the result of collecting a sequence\n // of code points that are not U+002F (/) from\n // input, given position.\n const type = collectASequenceOfCodePointsFast(\n '/',\n input,\n position\n )\n\n // 4. If type is the empty string or does not solely\n // contain HTTP token code points, then return failure.\n // https://mimesniff.spec.whatwg.org/#http-token-code-point\n if (type.length === 0 || !HTTP_TOKEN_CODEPOINTS.test(type)) {\n return 'failure'\n }\n\n // 5. If position is past the end of input, then return\n // failure\n if (position.position > input.length) {\n return 'failure'\n }\n\n // 6. Advance position by 1. (This skips past U+002F (/).)\n position.position++\n\n // 7. Let subtype be the result of collecting a sequence of\n // code points that are not U+003B (;) from input, given\n // position.\n let subtype = collectASequenceOfCodePointsFast(\n ';',\n input,\n position\n )\n\n // 8. Remove any trailing HTTP whitespace from subtype.\n subtype = removeHTTPWhitespace(subtype, false, true)\n\n // 9. If subtype is the empty string or does not solely\n // contain HTTP token code points, then return failure.\n if (subtype.length === 0 || !HTTP_TOKEN_CODEPOINTS.test(subtype)) {\n return 'failure'\n }\n\n const typeLowercase = type.toLowerCase()\n const subtypeLowercase = subtype.toLowerCase()\n\n // 10. Let mimeType be a new MIME type record whose type\n // is type, in ASCII lowercase, and subtype is subtype,\n // in ASCII lowercase.\n // https://mimesniff.spec.whatwg.org/#mime-type\n const mimeType = {\n type: typeLowercase,\n subtype: subtypeLowercase,\n /** @type {Map} */\n parameters: new Map(),\n // https://mimesniff.spec.whatwg.org/#mime-type-essence\n essence: `${typeLowercase}/${subtypeLowercase}`\n }\n\n // 11. While position is not past the end of input:\n while (position.position < input.length) {\n // 1. Advance position by 1. (This skips past U+003B (;).)\n position.position++\n\n // 2. Collect a sequence of code points that are HTTP\n // whitespace from input given position.\n collectASequenceOfCodePoints(\n // https://fetch.spec.whatwg.org/#http-whitespace\n char => HTTP_WHITESPACE_REGEX.test(char),\n input,\n position\n )\n\n // 3. Let parameterName be the result of collecting a\n // sequence of code points that are not U+003B (;)\n // or U+003D (=) from input, given position.\n let parameterName = collectASequenceOfCodePoints(\n (char) => char !== ';' && char !== '=',\n input,\n position\n )\n\n // 4. Set parameterName to parameterName, in ASCII\n // lowercase.\n parameterName = parameterName.toLowerCase()\n\n // 5. If position is not past the end of input, then:\n if (position.position < input.length) {\n // 1. If the code point at position within input is\n // U+003B (;), then continue.\n if (input[position.position] === ';') {\n continue\n }\n\n // 2. Advance position by 1. (This skips past U+003D (=).)\n position.position++\n }\n\n // 6. If position is past the end of input, then break.\n if (position.position > input.length) {\n break\n }\n\n // 7. Let parameterValue be null.\n let parameterValue = null\n\n // 8. If the code point at position within input is\n // U+0022 (\"), then:\n if (input[position.position] === '\"') {\n // 1. Set parameterValue to the result of collecting\n // an HTTP quoted string from input, given position\n // and the extract-value flag.\n parameterValue = collectAnHTTPQuotedString(input, position, true)\n\n // 2. Collect a sequence of code points that are not\n // U+003B (;) from input, given position.\n collectASequenceOfCodePointsFast(\n ';',\n input,\n position\n )\n\n // 9. Otherwise:\n } else {\n // 1. Set parameterValue to the result of collecting\n // a sequence of code points that are not U+003B (;)\n // from input, given position.\n parameterValue = collectASequenceOfCodePointsFast(\n ';',\n input,\n position\n )\n\n // 2. Remove any trailing HTTP whitespace from parameterValue.\n parameterValue = removeHTTPWhitespace(parameterValue, false, true)\n\n // 3. If parameterValue is the empty string, then continue.\n if (parameterValue.length === 0) {\n continue\n }\n }\n\n // 10. If all of the following are true\n // - parameterName is not the empty string\n // - parameterName solely contains HTTP token code points\n // - parameterValue solely contains HTTP quoted-string token code points\n // - mimeType’s parameters[parameterName] does not exist\n // then set mimeType’s parameters[parameterName] to parameterValue.\n if (\n parameterName.length !== 0 &&\n HTTP_TOKEN_CODEPOINTS.test(parameterName) &&\n (parameterValue.length === 0 || HTTP_QUOTED_STRING_TOKENS.test(parameterValue)) &&\n !mimeType.parameters.has(parameterName)\n ) {\n mimeType.parameters.set(parameterName, parameterValue)\n }\n }\n\n // 12. Return mimeType.\n return mimeType\n}\n\n// https://infra.spec.whatwg.org/#forgiving-base64-decode\n/** @param {string} data */\nfunction forgivingBase64 (data) {\n // 1. Remove all ASCII whitespace from data.\n data = data.replace(/[\\u0009\\u000A\\u000C\\u000D\\u0020]/g, '') // eslint-disable-line\n\n // 2. If data’s code point length divides by 4 leaving\n // no remainder, then:\n if (data.length % 4 === 0) {\n // 1. If data ends with one or two U+003D (=) code points,\n // then remove them from data.\n data = data.replace(/=?=$/, '')\n }\n\n // 3. If data’s code point length divides by 4 leaving\n // a remainder of 1, then return failure.\n if (data.length % 4 === 1) {\n return 'failure'\n }\n\n // 4. If data contains a code point that is not one of\n // U+002B (+)\n // U+002F (/)\n // ASCII alphanumeric\n // then return failure.\n if (/[^+/0-9A-Za-z]/.test(data)) {\n return 'failure'\n }\n\n const binary = atob(data)\n const bytes = new Uint8Array(binary.length)\n\n for (let byte = 0; byte < binary.length; byte++) {\n bytes[byte] = binary.charCodeAt(byte)\n }\n\n return bytes\n}\n\n// https://fetch.spec.whatwg.org/#collect-an-http-quoted-string\n// tests: https://fetch.spec.whatwg.org/#example-http-quoted-string\n/**\n * @param {string} input\n * @param {{ position: number }} position\n * @param {boolean?} extractValue\n */\nfunction collectAnHTTPQuotedString (input, position, extractValue) {\n // 1. Let positionStart be position.\n const positionStart = position.position\n\n // 2. Let value be the empty string.\n let value = ''\n\n // 3. Assert: the code point at position within input\n // is U+0022 (\").\n assert(input[position.position] === '\"')\n\n // 4. Advance position by 1.\n position.position++\n\n // 5. While true:\n while (true) {\n // 1. Append the result of collecting a sequence of code points\n // that are not U+0022 (\") or U+005C (\\) from input, given\n // position, to value.\n value += collectASequenceOfCodePoints(\n (char) => char !== '\"' && char !== '\\\\',\n input,\n position\n )\n\n // 2. If position is past the end of input, then break.\n if (position.position >= input.length) {\n break\n }\n\n // 3. Let quoteOrBackslash be the code point at position within\n // input.\n const quoteOrBackslash = input[position.position]\n\n // 4. Advance position by 1.\n position.position++\n\n // 5. If quoteOrBackslash is U+005C (\\), then:\n if (quoteOrBackslash === '\\\\') {\n // 1. If position is past the end of input, then append\n // U+005C (\\) to value and break.\n if (position.position >= input.length) {\n value += '\\\\'\n break\n }\n\n // 2. Append the code point at position within input to value.\n value += input[position.position]\n\n // 3. Advance position by 1.\n position.position++\n\n // 6. Otherwise:\n } else {\n // 1. Assert: quoteOrBackslash is U+0022 (\").\n assert(quoteOrBackslash === '\"')\n\n // 2. Break.\n break\n }\n }\n\n // 6. If the extract-value flag is set, then return value.\n if (extractValue) {\n return value\n }\n\n // 7. Return the code points from positionStart to position,\n // inclusive, within input.\n return input.slice(positionStart, position.position)\n}\n\n/**\n * @see https://mimesniff.spec.whatwg.org/#serialize-a-mime-type\n */\nfunction serializeAMimeType (mimeType) {\n assert(mimeType !== 'failure')\n const { parameters, essence } = mimeType\n\n // 1. Let serialization be the concatenation of mimeType’s\n // type, U+002F (/), and mimeType’s subtype.\n let serialization = essence\n\n // 2. For each name → value of mimeType’s parameters:\n for (let [name, value] of parameters.entries()) {\n // 1. Append U+003B (;) to serialization.\n serialization += ';'\n\n // 2. Append name to serialization.\n serialization += name\n\n // 3. Append U+003D (=) to serialization.\n serialization += '='\n\n // 4. If value does not solely contain HTTP token code\n // points or value is the empty string, then:\n if (!HTTP_TOKEN_CODEPOINTS.test(value)) {\n // 1. Precede each occurence of U+0022 (\") or\n // U+005C (\\) in value with U+005C (\\).\n value = value.replace(/(\\\\|\")/g, '\\\\$1')\n\n // 2. Prepend U+0022 (\") to value.\n value = '\"' + value\n\n // 3. Append U+0022 (\") to value.\n value += '\"'\n }\n\n // 5. Append value to serialization.\n serialization += value\n }\n\n // 3. Return serialization.\n return serialization\n}\n\n/**\n * @see https://fetch.spec.whatwg.org/#http-whitespace\n * @param {string} char\n */\nfunction isHTTPWhiteSpace (char) {\n return char === '\\r' || char === '\\n' || char === '\\t' || char === ' '\n}\n\n/**\n * @see https://fetch.spec.whatwg.org/#http-whitespace\n * @param {string} str\n */\nfunction removeHTTPWhitespace (str, leading = true, trailing = true) {\n let lead = 0\n let trail = str.length - 1\n\n if (leading) {\n for (; lead < str.length && isHTTPWhiteSpace(str[lead]); lead++);\n }\n\n if (trailing) {\n for (; trail > 0 && isHTTPWhiteSpace(str[trail]); trail--);\n }\n\n return str.slice(lead, trail + 1)\n}\n\n/**\n * @see https://infra.spec.whatwg.org/#ascii-whitespace\n * @param {string} char\n */\nfunction isASCIIWhitespace (char) {\n return char === '\\r' || char === '\\n' || char === '\\t' || char === '\\f' || char === ' '\n}\n\n/**\n * @see https://infra.spec.whatwg.org/#strip-leading-and-trailing-ascii-whitespace\n */\nfunction removeASCIIWhitespace (str, leading = true, trailing = true) {\n let lead = 0\n let trail = str.length - 1\n\n if (leading) {\n for (; lead < str.length && isASCIIWhitespace(str[lead]); lead++);\n }\n\n if (trailing) {\n for (; trail > 0 && isASCIIWhitespace(str[trail]); trail--);\n }\n\n return str.slice(lead, trail + 1)\n}\n\nmodule.exports = {\n dataURLProcessor,\n URLSerializer,\n collectASequenceOfCodePoints,\n collectASequenceOfCodePointsFast,\n stringPercentDecode,\n parseMIMEType,\n collectAnHTTPQuotedString,\n serializeAMimeType\n}\n","'use strict'\n\nconst { Blob, File: NativeFile } = require('buffer')\nconst { types } = require('util')\nconst { kState } = require('./symbols')\nconst { isBlobLike } = require('./util')\nconst { webidl } = require('./webidl')\nconst { parseMIMEType, serializeAMimeType } = require('./dataURL')\nconst { kEnumerableProperty } = require('../core/util')\nconst encoder = new TextEncoder()\n\nclass File extends Blob {\n constructor (fileBits, fileName, options = {}) {\n // The File constructor is invoked with two or three parameters, depending\n // on whether the optional dictionary parameter is used. When the File()\n // constructor is invoked, user agents must run the following steps:\n webidl.argumentLengthCheck(arguments, 2, { header: 'File constructor' })\n\n fileBits = webidl.converters['sequence'](fileBits)\n fileName = webidl.converters.USVString(fileName)\n options = webidl.converters.FilePropertyBag(options)\n\n // 1. Let bytes be the result of processing blob parts given fileBits and\n // options.\n // Note: Blob handles this for us\n\n // 2. Let n be the fileName argument to the constructor.\n const n = fileName\n\n // 3. Process FilePropertyBag dictionary argument by running the following\n // substeps:\n\n // 1. If the type member is provided and is not the empty string, let t\n // be set to the type dictionary member. If t contains any characters\n // outside the range U+0020 to U+007E, then set t to the empty string\n // and return from these substeps.\n // 2. Convert every character in t to ASCII lowercase.\n let t = options.type\n let d\n\n // eslint-disable-next-line no-labels\n substep: {\n if (t) {\n t = parseMIMEType(t)\n\n if (t === 'failure') {\n t = ''\n // eslint-disable-next-line no-labels\n break substep\n }\n\n t = serializeAMimeType(t).toLowerCase()\n }\n\n // 3. If the lastModified member is provided, let d be set to the\n // lastModified dictionary member. If it is not provided, set d to the\n // current date and time represented as the number of milliseconds since\n // the Unix Epoch (which is the equivalent of Date.now() [ECMA-262]).\n d = options.lastModified\n }\n\n // 4. Return a new File object F such that:\n // F refers to the bytes byte sequence.\n // F.size is set to the number of total bytes in bytes.\n // F.name is set to n.\n // F.type is set to t.\n // F.lastModified is set to d.\n\n super(processBlobParts(fileBits, options), { type: t })\n this[kState] = {\n name: n,\n lastModified: d,\n type: t\n }\n }\n\n get name () {\n webidl.brandCheck(this, File)\n\n return this[kState].name\n }\n\n get lastModified () {\n webidl.brandCheck(this, File)\n\n return this[kState].lastModified\n }\n\n get type () {\n webidl.brandCheck(this, File)\n\n return this[kState].type\n }\n}\n\nclass FileLike {\n constructor (blobLike, fileName, options = {}) {\n // TODO: argument idl type check\n\n // The File constructor is invoked with two or three parameters, depending\n // on whether the optional dictionary parameter is used. When the File()\n // constructor is invoked, user agents must run the following steps:\n\n // 1. Let bytes be the result of processing blob parts given fileBits and\n // options.\n\n // 2. Let n be the fileName argument to the constructor.\n const n = fileName\n\n // 3. Process FilePropertyBag dictionary argument by running the following\n // substeps:\n\n // 1. If the type member is provided and is not the empty string, let t\n // be set to the type dictionary member. If t contains any characters\n // outside the range U+0020 to U+007E, then set t to the empty string\n // and return from these substeps.\n // TODO\n const t = options.type\n\n // 2. Convert every character in t to ASCII lowercase.\n // TODO\n\n // 3. If the lastModified member is provided, let d be set to the\n // lastModified dictionary member. If it is not provided, set d to the\n // current date and time represented as the number of milliseconds since\n // the Unix Epoch (which is the equivalent of Date.now() [ECMA-262]).\n const d = options.lastModified ?? Date.now()\n\n // 4. Return a new File object F such that:\n // F refers to the bytes byte sequence.\n // F.size is set to the number of total bytes in bytes.\n // F.name is set to n.\n // F.type is set to t.\n // F.lastModified is set to d.\n\n this[kState] = {\n blobLike,\n name: n,\n type: t,\n lastModified: d\n }\n }\n\n stream (...args) {\n webidl.brandCheck(this, FileLike)\n\n return this[kState].blobLike.stream(...args)\n }\n\n arrayBuffer (...args) {\n webidl.brandCheck(this, FileLike)\n\n return this[kState].blobLike.arrayBuffer(...args)\n }\n\n slice (...args) {\n webidl.brandCheck(this, FileLike)\n\n return this[kState].blobLike.slice(...args)\n }\n\n text (...args) {\n webidl.brandCheck(this, FileLike)\n\n return this[kState].blobLike.text(...args)\n }\n\n get size () {\n webidl.brandCheck(this, FileLike)\n\n return this[kState].blobLike.size\n }\n\n get type () {\n webidl.brandCheck(this, FileLike)\n\n return this[kState].blobLike.type\n }\n\n get name () {\n webidl.brandCheck(this, FileLike)\n\n return this[kState].name\n }\n\n get lastModified () {\n webidl.brandCheck(this, FileLike)\n\n return this[kState].lastModified\n }\n\n get [Symbol.toStringTag] () {\n return 'File'\n }\n}\n\nObject.defineProperties(File.prototype, {\n [Symbol.toStringTag]: {\n value: 'File',\n configurable: true\n },\n name: kEnumerableProperty,\n lastModified: kEnumerableProperty\n})\n\nwebidl.converters.Blob = webidl.interfaceConverter(Blob)\n\nwebidl.converters.BlobPart = function (V, opts) {\n if (webidl.util.Type(V) === 'Object') {\n if (isBlobLike(V)) {\n return webidl.converters.Blob(V, { strict: false })\n }\n\n if (\n ArrayBuffer.isView(V) ||\n types.isAnyArrayBuffer(V)\n ) {\n return webidl.converters.BufferSource(V, opts)\n }\n }\n\n return webidl.converters.USVString(V, opts)\n}\n\nwebidl.converters['sequence'] = webidl.sequenceConverter(\n webidl.converters.BlobPart\n)\n\n// https://www.w3.org/TR/FileAPI/#dfn-FilePropertyBag\nwebidl.converters.FilePropertyBag = webidl.dictionaryConverter([\n {\n key: 'lastModified',\n converter: webidl.converters['long long'],\n get defaultValue () {\n return Date.now()\n }\n },\n {\n key: 'type',\n converter: webidl.converters.DOMString,\n defaultValue: ''\n },\n {\n key: 'endings',\n converter: (value) => {\n value = webidl.converters.DOMString(value)\n value = value.toLowerCase()\n\n if (value !== 'native') {\n value = 'transparent'\n }\n\n return value\n },\n defaultValue: 'transparent'\n }\n])\n\n/**\n * @see https://www.w3.org/TR/FileAPI/#process-blob-parts\n * @param {(NodeJS.TypedArray|Blob|string)[]} parts\n * @param {{ type: string, endings: string }} options\n */\nfunction processBlobParts (parts, options) {\n // 1. Let bytes be an empty sequence of bytes.\n /** @type {NodeJS.TypedArray[]} */\n const bytes = []\n\n // 2. For each element in parts:\n for (const element of parts) {\n // 1. If element is a USVString, run the following substeps:\n if (typeof element === 'string') {\n // 1. Let s be element.\n let s = element\n\n // 2. If the endings member of options is \"native\", set s\n // to the result of converting line endings to native\n // of element.\n if (options.endings === 'native') {\n s = convertLineEndingsNative(s)\n }\n\n // 3. Append the result of UTF-8 encoding s to bytes.\n bytes.push(encoder.encode(s))\n } else if (\n types.isAnyArrayBuffer(element) ||\n types.isTypedArray(element)\n ) {\n // 2. If element is a BufferSource, get a copy of the\n // bytes held by the buffer source, and append those\n // bytes to bytes.\n if (!element.buffer) { // ArrayBuffer\n bytes.push(new Uint8Array(element))\n } else {\n bytes.push(\n new Uint8Array(element.buffer, element.byteOffset, element.byteLength)\n )\n }\n } else if (isBlobLike(element)) {\n // 3. If element is a Blob, append the bytes it represents\n // to bytes.\n bytes.push(element)\n }\n }\n\n // 3. Return bytes.\n return bytes\n}\n\n/**\n * @see https://www.w3.org/TR/FileAPI/#convert-line-endings-to-native\n * @param {string} s\n */\nfunction convertLineEndingsNative (s) {\n // 1. Let native line ending be be the code point U+000A LF.\n let nativeLineEnding = '\\n'\n\n // 2. If the underlying platform’s conventions are to\n // represent newlines as a carriage return and line feed\n // sequence, set native line ending to the code point\n // U+000D CR followed by the code point U+000A LF.\n if (process.platform === 'win32') {\n nativeLineEnding = '\\r\\n'\n }\n\n return s.replace(/\\r?\\n/g, nativeLineEnding)\n}\n\n// If this function is moved to ./util.js, some tools (such as\n// rollup) will warn about circular dependencies. See:\n// https://github.com/nodejs/undici/issues/1629\nfunction isFileLike (object) {\n return (\n (NativeFile && object instanceof NativeFile) ||\n object instanceof File || (\n object &&\n (typeof object.stream === 'function' ||\n typeof object.arrayBuffer === 'function') &&\n object[Symbol.toStringTag] === 'File'\n )\n )\n}\n\nmodule.exports = { File, FileLike, isFileLike }\n","'use strict'\n\nconst { isBlobLike, toUSVString, makeIterator } = require('./util')\nconst { kState } = require('./symbols')\nconst { File: UndiciFile, FileLike, isFileLike } = require('./file')\nconst { webidl } = require('./webidl')\nconst { Blob, File: NativeFile } = require('buffer')\n\n/** @type {globalThis['File']} */\nconst File = NativeFile ?? UndiciFile\n\n// https://xhr.spec.whatwg.org/#formdata\nclass FormData {\n constructor (form) {\n if (form !== undefined) {\n throw webidl.errors.conversionFailed({\n prefix: 'FormData constructor',\n argument: 'Argument 1',\n types: ['undefined']\n })\n }\n\n this[kState] = []\n }\n\n append (name, value, filename = undefined) {\n webidl.brandCheck(this, FormData)\n\n webidl.argumentLengthCheck(arguments, 2, { header: 'FormData.append' })\n\n if (arguments.length === 3 && !isBlobLike(value)) {\n throw new TypeError(\n \"Failed to execute 'append' on 'FormData': parameter 2 is not of type 'Blob'\"\n )\n }\n\n // 1. Let value be value if given; otherwise blobValue.\n\n name = webidl.converters.USVString(name)\n value = isBlobLike(value)\n ? webidl.converters.Blob(value, { strict: false })\n : webidl.converters.USVString(value)\n filename = arguments.length === 3\n ? webidl.converters.USVString(filename)\n : undefined\n\n // 2. Let entry be the result of creating an entry with\n // name, value, and filename if given.\n const entry = makeEntry(name, value, filename)\n\n // 3. Append entry to this’s entry list.\n this[kState].push(entry)\n }\n\n delete (name) {\n webidl.brandCheck(this, FormData)\n\n webidl.argumentLengthCheck(arguments, 1, { header: 'FormData.delete' })\n\n name = webidl.converters.USVString(name)\n\n // The delete(name) method steps are to remove all entries whose name\n // is name from this’s entry list.\n this[kState] = this[kState].filter(entry => entry.name !== name)\n }\n\n get (name) {\n webidl.brandCheck(this, FormData)\n\n webidl.argumentLengthCheck(arguments, 1, { header: 'FormData.get' })\n\n name = webidl.converters.USVString(name)\n\n // 1. If there is no entry whose name is name in this’s entry list,\n // then return null.\n const idx = this[kState].findIndex((entry) => entry.name === name)\n if (idx === -1) {\n return null\n }\n\n // 2. Return the value of the first entry whose name is name from\n // this’s entry list.\n return this[kState][idx].value\n }\n\n getAll (name) {\n webidl.brandCheck(this, FormData)\n\n webidl.argumentLengthCheck(arguments, 1, { header: 'FormData.getAll' })\n\n name = webidl.converters.USVString(name)\n\n // 1. If there is no entry whose name is name in this’s entry list,\n // then return the empty list.\n // 2. Return the values of all entries whose name is name, in order,\n // from this’s entry list.\n return this[kState]\n .filter((entry) => entry.name === name)\n .map((entry) => entry.value)\n }\n\n has (name) {\n webidl.brandCheck(this, FormData)\n\n webidl.argumentLengthCheck(arguments, 1, { header: 'FormData.has' })\n\n name = webidl.converters.USVString(name)\n\n // The has(name) method steps are to return true if there is an entry\n // whose name is name in this’s entry list; otherwise false.\n return this[kState].findIndex((entry) => entry.name === name) !== -1\n }\n\n set (name, value, filename = undefined) {\n webidl.brandCheck(this, FormData)\n\n webidl.argumentLengthCheck(arguments, 2, { header: 'FormData.set' })\n\n if (arguments.length === 3 && !isBlobLike(value)) {\n throw new TypeError(\n \"Failed to execute 'set' on 'FormData': parameter 2 is not of type 'Blob'\"\n )\n }\n\n // The set(name, value) and set(name, blobValue, filename) method steps\n // are:\n\n // 1. Let value be value if given; otherwise blobValue.\n\n name = webidl.converters.USVString(name)\n value = isBlobLike(value)\n ? webidl.converters.Blob(value, { strict: false })\n : webidl.converters.USVString(value)\n filename = arguments.length === 3\n ? toUSVString(filename)\n : undefined\n\n // 2. Let entry be the result of creating an entry with name, value, and\n // filename if given.\n const entry = makeEntry(name, value, filename)\n\n // 3. If there are entries in this’s entry list whose name is name, then\n // replace the first such entry with entry and remove the others.\n const idx = this[kState].findIndex((entry) => entry.name === name)\n if (idx !== -1) {\n this[kState] = [\n ...this[kState].slice(0, idx),\n entry,\n ...this[kState].slice(idx + 1).filter((entry) => entry.name !== name)\n ]\n } else {\n // 4. Otherwise, append entry to this’s entry list.\n this[kState].push(entry)\n }\n }\n\n entries () {\n webidl.brandCheck(this, FormData)\n\n return makeIterator(\n () => this[kState].map(pair => [pair.name, pair.value]),\n 'FormData',\n 'key+value'\n )\n }\n\n keys () {\n webidl.brandCheck(this, FormData)\n\n return makeIterator(\n () => this[kState].map(pair => [pair.name, pair.value]),\n 'FormData',\n 'key'\n )\n }\n\n values () {\n webidl.brandCheck(this, FormData)\n\n return makeIterator(\n () => this[kState].map(pair => [pair.name, pair.value]),\n 'FormData',\n 'value'\n )\n }\n\n /**\n * @param {(value: string, key: string, self: FormData) => void} callbackFn\n * @param {unknown} thisArg\n */\n forEach (callbackFn, thisArg = globalThis) {\n webidl.brandCheck(this, FormData)\n\n webidl.argumentLengthCheck(arguments, 1, { header: 'FormData.forEach' })\n\n if (typeof callbackFn !== 'function') {\n throw new TypeError(\n \"Failed to execute 'forEach' on 'FormData': parameter 1 is not of type 'Function'.\"\n )\n }\n\n for (const [key, value] of this) {\n callbackFn.apply(thisArg, [value, key, this])\n }\n }\n}\n\nFormData.prototype[Symbol.iterator] = FormData.prototype.entries\n\nObject.defineProperties(FormData.prototype, {\n [Symbol.toStringTag]: {\n value: 'FormData',\n configurable: true\n }\n})\n\n/**\n * @see https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#create-an-entry\n * @param {string} name\n * @param {string|Blob} value\n * @param {?string} filename\n * @returns\n */\nfunction makeEntry (name, value, filename) {\n // 1. Set name to the result of converting name into a scalar value string.\n // \"To convert a string into a scalar value string, replace any surrogates\n // with U+FFFD.\"\n // see: https://nodejs.org/dist/latest-v18.x/docs/api/buffer.html#buftostringencoding-start-end\n name = Buffer.from(name).toString('utf8')\n\n // 2. If value is a string, then set value to the result of converting\n // value into a scalar value string.\n if (typeof value === 'string') {\n value = Buffer.from(value).toString('utf8')\n } else {\n // 3. Otherwise:\n\n // 1. If value is not a File object, then set value to a new File object,\n // representing the same bytes, whose name attribute value is \"blob\"\n if (!isFileLike(value)) {\n value = value instanceof Blob\n ? new File([value], 'blob', { type: value.type })\n : new FileLike(value, 'blob', { type: value.type })\n }\n\n // 2. If filename is given, then set value to a new File object,\n // representing the same bytes, whose name attribute is filename.\n if (filename !== undefined) {\n /** @type {FilePropertyBag} */\n const options = {\n type: value.type,\n lastModified: value.lastModified\n }\n\n value = (NativeFile && value instanceof NativeFile) || value instanceof UndiciFile\n ? new File([value], filename, options)\n : new FileLike(value, filename, options)\n }\n }\n\n // 4. Return an entry whose name is name and whose value is value.\n return { name, value }\n}\n\nmodule.exports = { FormData }\n","'use strict'\n\nconst Busboy = require('@fastify/busboy')\nconst util = require('../core/util')\nconst {\n ReadableStreamFrom,\n isBlobLike,\n isReadableStreamLike,\n readableStreamClose,\n createDeferredPromise,\n fullyReadBody\n} = require('./util')\nconst { FormData } = require('./formdata')\nconst { kState } = require('./symbols')\nconst { webidl } = require('./webidl')\nconst { DOMException, structuredClone } = require('./constants')\nconst { Blob, File: NativeFile } = require('buffer')\nconst { kBodyUsed } = require('../core/symbols')\nconst assert = require('assert')\nconst { isErrored } = require('../core/util')\nconst { isUint8Array, isArrayBuffer } = require('util/types')\nconst { File: UndiciFile } = require('./file')\nconst { parseMIMEType, serializeAMimeType } = require('./dataURL')\n\nlet random\ntry {\n const crypto = require('node:crypto')\n random = (max) => crypto.randomInt(0, max)\n} catch {\n random = (max) => Math.floor(Math.random(max))\n}\n\nlet ReadableStream = globalThis.ReadableStream\n\n/** @type {globalThis['File']} */\nconst File = NativeFile ?? UndiciFile\nconst textEncoder = new TextEncoder()\nconst textDecoder = new TextDecoder()\n\n// https://fetch.spec.whatwg.org/#concept-bodyinit-extract\nfunction extractBody (object, keepalive = false) {\n if (!ReadableStream) {\n ReadableStream = require('stream/web').ReadableStream\n }\n\n // 1. Let stream be null.\n let stream = null\n\n // 2. If object is a ReadableStream object, then set stream to object.\n if (object instanceof ReadableStream) {\n stream = object\n } else if (isBlobLike(object)) {\n // 3. Otherwise, if object is a Blob object, set stream to the\n // result of running object’s get stream.\n stream = object.stream()\n } else {\n // 4. Otherwise, set stream to a new ReadableStream object, and set\n // up stream.\n stream = new ReadableStream({\n async pull (controller) {\n controller.enqueue(\n typeof source === 'string' ? textEncoder.encode(source) : source\n )\n queueMicrotask(() => readableStreamClose(controller))\n },\n start () {},\n type: undefined\n })\n }\n\n // 5. Assert: stream is a ReadableStream object.\n assert(isReadableStreamLike(stream))\n\n // 6. Let action be null.\n let action = null\n\n // 7. Let source be null.\n let source = null\n\n // 8. Let length be null.\n let length = null\n\n // 9. Let type be null.\n let type = null\n\n // 10. Switch on object:\n if (typeof object === 'string') {\n // Set source to the UTF-8 encoding of object.\n // Note: setting source to a Uint8Array here breaks some mocking assumptions.\n source = object\n\n // Set type to `text/plain;charset=UTF-8`.\n type = 'text/plain;charset=UTF-8'\n } else if (object instanceof URLSearchParams) {\n // URLSearchParams\n\n // spec says to run application/x-www-form-urlencoded on body.list\n // this is implemented in Node.js as apart of an URLSearchParams instance toString method\n // See: https://github.com/nodejs/node/blob/e46c680bf2b211bbd52cf959ca17ee98c7f657f5/lib/internal/url.js#L490\n // and https://github.com/nodejs/node/blob/e46c680bf2b211bbd52cf959ca17ee98c7f657f5/lib/internal/url.js#L1100\n\n // Set source to the result of running the application/x-www-form-urlencoded serializer with object’s list.\n source = object.toString()\n\n // Set type to `application/x-www-form-urlencoded;charset=UTF-8`.\n type = 'application/x-www-form-urlencoded;charset=UTF-8'\n } else if (isArrayBuffer(object)) {\n // BufferSource/ArrayBuffer\n\n // Set source to a copy of the bytes held by object.\n source = new Uint8Array(object.slice())\n } else if (ArrayBuffer.isView(object)) {\n // BufferSource/ArrayBufferView\n\n // Set source to a copy of the bytes held by object.\n source = new Uint8Array(object.buffer.slice(object.byteOffset, object.byteOffset + object.byteLength))\n } else if (util.isFormDataLike(object)) {\n const boundary = `----formdata-undici-0${`${random(1e11)}`.padStart(11, '0')}`\n const prefix = `--${boundary}\\r\\nContent-Disposition: form-data`\n\n /*! formdata-polyfill. MIT License. Jimmy Wärting */\n const escape = (str) =>\n str.replace(/\\n/g, '%0A').replace(/\\r/g, '%0D').replace(/\"/g, '%22')\n const normalizeLinefeeds = (value) => value.replace(/\\r?\\n|\\r/g, '\\r\\n')\n\n // Set action to this step: run the multipart/form-data\n // encoding algorithm, with object’s entry list and UTF-8.\n // - This ensures that the body is immutable and can't be changed afterwords\n // - That the content-length is calculated in advance.\n // - And that all parts are pre-encoded and ready to be sent.\n\n const blobParts = []\n const rn = new Uint8Array([13, 10]) // '\\r\\n'\n length = 0\n let hasUnknownSizeValue = false\n\n for (const [name, value] of object) {\n if (typeof value === 'string') {\n const chunk = textEncoder.encode(prefix +\n `; name=\"${escape(normalizeLinefeeds(name))}\"` +\n `\\r\\n\\r\\n${normalizeLinefeeds(value)}\\r\\n`)\n blobParts.push(chunk)\n length += chunk.byteLength\n } else {\n const chunk = textEncoder.encode(`${prefix}; name=\"${escape(normalizeLinefeeds(name))}\"` +\n (value.name ? `; filename=\"${escape(value.name)}\"` : '') + '\\r\\n' +\n `Content-Type: ${\n value.type || 'application/octet-stream'\n }\\r\\n\\r\\n`)\n blobParts.push(chunk, value, rn)\n if (typeof value.size === 'number') {\n length += chunk.byteLength + value.size + rn.byteLength\n } else {\n hasUnknownSizeValue = true\n }\n }\n }\n\n const chunk = textEncoder.encode(`--${boundary}--`)\n blobParts.push(chunk)\n length += chunk.byteLength\n if (hasUnknownSizeValue) {\n length = null\n }\n\n // Set source to object.\n source = object\n\n action = async function * () {\n for (const part of blobParts) {\n if (part.stream) {\n yield * part.stream()\n } else {\n yield part\n }\n }\n }\n\n // Set type to `multipart/form-data; boundary=`,\n // followed by the multipart/form-data boundary string generated\n // by the multipart/form-data encoding algorithm.\n type = 'multipart/form-data; boundary=' + boundary\n } else if (isBlobLike(object)) {\n // Blob\n\n // Set source to object.\n source = object\n\n // Set length to object’s size.\n length = object.size\n\n // If object’s type attribute is not the empty byte sequence, set\n // type to its value.\n if (object.type) {\n type = object.type\n }\n } else if (typeof object[Symbol.asyncIterator] === 'function') {\n // If keepalive is true, then throw a TypeError.\n if (keepalive) {\n throw new TypeError('keepalive')\n }\n\n // If object is disturbed or locked, then throw a TypeError.\n if (util.isDisturbed(object) || object.locked) {\n throw new TypeError(\n 'Response body object should not be disturbed or locked'\n )\n }\n\n stream =\n object instanceof ReadableStream ? object : ReadableStreamFrom(object)\n }\n\n // 11. If source is a byte sequence, then set action to a\n // step that returns source and length to source’s length.\n if (typeof source === 'string' || util.isBuffer(source)) {\n length = Buffer.byteLength(source)\n }\n\n // 12. If action is non-null, then run these steps in in parallel:\n if (action != null) {\n // Run action.\n let iterator\n stream = new ReadableStream({\n async start () {\n iterator = action(object)[Symbol.asyncIterator]()\n },\n async pull (controller) {\n const { value, done } = await iterator.next()\n if (done) {\n // When running action is done, close stream.\n queueMicrotask(() => {\n controller.close()\n })\n } else {\n // Whenever one or more bytes are available and stream is not errored,\n // enqueue a Uint8Array wrapping an ArrayBuffer containing the available\n // bytes into stream.\n if (!isErrored(stream)) {\n controller.enqueue(new Uint8Array(value))\n }\n }\n return controller.desiredSize > 0\n },\n async cancel (reason) {\n await iterator.return()\n },\n type: undefined\n })\n }\n\n // 13. Let body be a body whose stream is stream, source is source,\n // and length is length.\n const body = { stream, source, length }\n\n // 14. Return (body, type).\n return [body, type]\n}\n\n// https://fetch.spec.whatwg.org/#bodyinit-safely-extract\nfunction safelyExtractBody (object, keepalive = false) {\n if (!ReadableStream) {\n // istanbul ignore next\n ReadableStream = require('stream/web').ReadableStream\n }\n\n // To safely extract a body and a `Content-Type` value from\n // a byte sequence or BodyInit object object, run these steps:\n\n // 1. If object is a ReadableStream object, then:\n if (object instanceof ReadableStream) {\n // Assert: object is neither disturbed nor locked.\n // istanbul ignore next\n assert(!util.isDisturbed(object), 'The body has already been consumed.')\n // istanbul ignore next\n assert(!object.locked, 'The stream is locked.')\n }\n\n // 2. Return the results of extracting object.\n return extractBody(object, keepalive)\n}\n\nfunction cloneBody (body) {\n // To clone a body body, run these steps:\n\n // https://fetch.spec.whatwg.org/#concept-body-clone\n\n // 1. Let « out1, out2 » be the result of teeing body’s stream.\n const [out1, out2] = body.stream.tee()\n const out2Clone = structuredClone(out2, { transfer: [out2] })\n // This, for whatever reasons, unrefs out2Clone which allows\n // the process to exit by itself.\n const [, finalClone] = out2Clone.tee()\n\n // 2. Set body’s stream to out1.\n body.stream = out1\n\n // 3. Return a body whose stream is out2 and other members are copied from body.\n return {\n stream: finalClone,\n length: body.length,\n source: body.source\n }\n}\n\nasync function * consumeBody (body) {\n if (body) {\n if (isUint8Array(body)) {\n yield body\n } else {\n const stream = body.stream\n\n if (util.isDisturbed(stream)) {\n throw new TypeError('The body has already been consumed.')\n }\n\n if (stream.locked) {\n throw new TypeError('The stream is locked.')\n }\n\n // Compat.\n stream[kBodyUsed] = true\n\n yield * stream\n }\n }\n}\n\nfunction throwIfAborted (state) {\n if (state.aborted) {\n throw new DOMException('The operation was aborted.', 'AbortError')\n }\n}\n\nfunction bodyMixinMethods (instance) {\n const methods = {\n blob () {\n // The blob() method steps are to return the result of\n // running consume body with this and the following step\n // given a byte sequence bytes: return a Blob whose\n // contents are bytes and whose type attribute is this’s\n // MIME type.\n return specConsumeBody(this, (bytes) => {\n let mimeType = bodyMimeType(this)\n\n if (mimeType === 'failure') {\n mimeType = ''\n } else if (mimeType) {\n mimeType = serializeAMimeType(mimeType)\n }\n\n // Return a Blob whose contents are bytes and type attribute\n // is mimeType.\n return new Blob([bytes], { type: mimeType })\n }, instance)\n },\n\n arrayBuffer () {\n // The arrayBuffer() method steps are to return the result\n // of running consume body with this and the following step\n // given a byte sequence bytes: return a new ArrayBuffer\n // whose contents are bytes.\n return specConsumeBody(this, (bytes) => {\n return new Uint8Array(bytes).buffer\n }, instance)\n },\n\n text () {\n // The text() method steps are to return the result of running\n // consume body with this and UTF-8 decode.\n return specConsumeBody(this, utf8DecodeBytes, instance)\n },\n\n json () {\n // The json() method steps are to return the result of running\n // consume body with this and parse JSON from bytes.\n return specConsumeBody(this, parseJSONFromBytes, instance)\n },\n\n async formData () {\n webidl.brandCheck(this, instance)\n\n throwIfAborted(this[kState])\n\n const contentType = this.headers.get('Content-Type')\n\n // If mimeType’s essence is \"multipart/form-data\", then:\n if (/multipart\\/form-data/.test(contentType)) {\n const headers = {}\n for (const [key, value] of this.headers) headers[key.toLowerCase()] = value\n\n const responseFormData = new FormData()\n\n let busboy\n\n try {\n busboy = new Busboy({\n headers,\n preservePath: true\n })\n } catch (err) {\n throw new DOMException(`${err}`, 'AbortError')\n }\n\n busboy.on('field', (name, value) => {\n responseFormData.append(name, value)\n })\n busboy.on('file', (name, value, filename, encoding, mimeType) => {\n const chunks = []\n\n if (encoding === 'base64' || encoding.toLowerCase() === 'base64') {\n let base64chunk = ''\n\n value.on('data', (chunk) => {\n base64chunk += chunk.toString().replace(/[\\r\\n]/gm, '')\n\n const end = base64chunk.length - base64chunk.length % 4\n chunks.push(Buffer.from(base64chunk.slice(0, end), 'base64'))\n\n base64chunk = base64chunk.slice(end)\n })\n value.on('end', () => {\n chunks.push(Buffer.from(base64chunk, 'base64'))\n responseFormData.append(name, new File(chunks, filename, { type: mimeType }))\n })\n } else {\n value.on('data', (chunk) => {\n chunks.push(chunk)\n })\n value.on('end', () => {\n responseFormData.append(name, new File(chunks, filename, { type: mimeType }))\n })\n }\n })\n\n const busboyResolve = new Promise((resolve, reject) => {\n busboy.on('finish', resolve)\n busboy.on('error', (err) => reject(new TypeError(err)))\n })\n\n if (this.body !== null) for await (const chunk of consumeBody(this[kState].body)) busboy.write(chunk)\n busboy.end()\n await busboyResolve\n\n return responseFormData\n } else if (/application\\/x-www-form-urlencoded/.test(contentType)) {\n // Otherwise, if mimeType’s essence is \"application/x-www-form-urlencoded\", then:\n\n // 1. Let entries be the result of parsing bytes.\n let entries\n try {\n let text = ''\n // application/x-www-form-urlencoded parser will keep the BOM.\n // https://url.spec.whatwg.org/#concept-urlencoded-parser\n // Note that streaming decoder is stateful and cannot be reused\n const streamingDecoder = new TextDecoder('utf-8', { ignoreBOM: true })\n\n for await (const chunk of consumeBody(this[kState].body)) {\n if (!isUint8Array(chunk)) {\n throw new TypeError('Expected Uint8Array chunk')\n }\n text += streamingDecoder.decode(chunk, { stream: true })\n }\n text += streamingDecoder.decode()\n entries = new URLSearchParams(text)\n } catch (err) {\n // istanbul ignore next: Unclear when new URLSearchParams can fail on a string.\n // 2. If entries is failure, then throw a TypeError.\n throw Object.assign(new TypeError(), { cause: err })\n }\n\n // 3. Return a new FormData object whose entries are entries.\n const formData = new FormData()\n for (const [name, value] of entries) {\n formData.append(name, value)\n }\n return formData\n } else {\n // Wait a tick before checking if the request has been aborted.\n // Otherwise, a TypeError can be thrown when an AbortError should.\n await Promise.resolve()\n\n throwIfAborted(this[kState])\n\n // Otherwise, throw a TypeError.\n throw webidl.errors.exception({\n header: `${instance.name}.formData`,\n message: 'Could not parse content as FormData.'\n })\n }\n }\n }\n\n return methods\n}\n\nfunction mixinBody (prototype) {\n Object.assign(prototype.prototype, bodyMixinMethods(prototype))\n}\n\n/**\n * @see https://fetch.spec.whatwg.org/#concept-body-consume-body\n * @param {Response|Request} object\n * @param {(value: unknown) => unknown} convertBytesToJSValue\n * @param {Response|Request} instance\n */\nasync function specConsumeBody (object, convertBytesToJSValue, instance) {\n webidl.brandCheck(object, instance)\n\n throwIfAborted(object[kState])\n\n // 1. If object is unusable, then return a promise rejected\n // with a TypeError.\n if (bodyUnusable(object[kState].body)) {\n throw new TypeError('Body is unusable')\n }\n\n // 2. Let promise be a new promise.\n const promise = createDeferredPromise()\n\n // 3. Let errorSteps given error be to reject promise with error.\n const errorSteps = (error) => promise.reject(error)\n\n // 4. Let successSteps given a byte sequence data be to resolve\n // promise with the result of running convertBytesToJSValue\n // with data. If that threw an exception, then run errorSteps\n // with that exception.\n const successSteps = (data) => {\n try {\n promise.resolve(convertBytesToJSValue(data))\n } catch (e) {\n errorSteps(e)\n }\n }\n\n // 5. If object’s body is null, then run successSteps with an\n // empty byte sequence.\n if (object[kState].body == null) {\n successSteps(new Uint8Array())\n return promise.promise\n }\n\n // 6. Otherwise, fully read object’s body given successSteps,\n // errorSteps, and object’s relevant global object.\n await fullyReadBody(object[kState].body, successSteps, errorSteps)\n\n // 7. Return promise.\n return promise.promise\n}\n\n// https://fetch.spec.whatwg.org/#body-unusable\nfunction bodyUnusable (body) {\n // An object including the Body interface mixin is\n // said to be unusable if its body is non-null and\n // its body’s stream is disturbed or locked.\n return body != null && (body.stream.locked || util.isDisturbed(body.stream))\n}\n\n/**\n * @see https://encoding.spec.whatwg.org/#utf-8-decode\n * @param {Buffer} buffer\n */\nfunction utf8DecodeBytes (buffer) {\n if (buffer.length === 0) {\n return ''\n }\n\n // 1. Let buffer be the result of peeking three bytes from\n // ioQueue, converted to a byte sequence.\n\n // 2. If buffer is 0xEF 0xBB 0xBF, then read three\n // bytes from ioQueue. (Do nothing with those bytes.)\n if (buffer[0] === 0xEF && buffer[1] === 0xBB && buffer[2] === 0xBF) {\n buffer = buffer.subarray(3)\n }\n\n // 3. Process a queue with an instance of UTF-8’s\n // decoder, ioQueue, output, and \"replacement\".\n const output = textDecoder.decode(buffer)\n\n // 4. Return output.\n return output\n}\n\n/**\n * @see https://infra.spec.whatwg.org/#parse-json-bytes-to-a-javascript-value\n * @param {Uint8Array} bytes\n */\nfunction parseJSONFromBytes (bytes) {\n return JSON.parse(utf8DecodeBytes(bytes))\n}\n\n/**\n * @see https://fetch.spec.whatwg.org/#concept-body-mime-type\n * @param {import('./response').Response|import('./request').Request} object\n */\nfunction bodyMimeType (object) {\n const { headersList } = object[kState]\n const contentType = headersList.get('content-type')\n\n if (contentType === null) {\n return 'failure'\n }\n\n return parseMIMEType(contentType)\n}\n\nmodule.exports = {\n extractBody,\n safelyExtractBody,\n cloneBody,\n mixinBody\n}\n","'use strict'\n\nconst {\n InvalidArgumentError,\n NotSupportedError\n} = require('./errors')\nconst assert = require('assert')\nconst { kHTTP2BuildRequest, kHTTP2CopyHeaders, kHTTP1BuildRequest } = require('./symbols')\nconst util = require('./util')\n\n// tokenRegExp and headerCharRegex have been lifted from\n// https://github.com/nodejs/node/blob/main/lib/_http_common.js\n\n/**\n * Verifies that the given val is a valid HTTP token\n * per the rules defined in RFC 7230\n * See https://tools.ietf.org/html/rfc7230#section-3.2.6\n */\nconst tokenRegExp = /^[\\^_`a-zA-Z\\-0-9!#$%&'*+.|~]+$/\n\n/**\n * Matches if val contains an invalid field-vchar\n * field-value = *( field-content / obs-fold )\n * field-content = field-vchar [ 1*( SP / HTAB ) field-vchar ]\n * field-vchar = VCHAR / obs-text\n */\nconst headerCharRegex = /[^\\t\\x20-\\x7e\\x80-\\xff]/\n\n// Verifies that a given path is valid does not contain control chars \\x00 to \\x20\nconst invalidPathRegex = /[^\\u0021-\\u00ff]/\n\nconst kHandler = Symbol('handler')\n\nconst channels = {}\n\nlet extractBody\n\ntry {\n const diagnosticsChannel = require('diagnostics_channel')\n channels.create = diagnosticsChannel.channel('undici:request:create')\n channels.bodySent = diagnosticsChannel.channel('undici:request:bodySent')\n channels.headers = diagnosticsChannel.channel('undici:request:headers')\n channels.trailers = diagnosticsChannel.channel('undici:request:trailers')\n channels.error = diagnosticsChannel.channel('undici:request:error')\n} catch {\n channels.create = { hasSubscribers: false }\n channels.bodySent = { hasSubscribers: false }\n channels.headers = { hasSubscribers: false }\n channels.trailers = { hasSubscribers: false }\n channels.error = { hasSubscribers: false }\n}\n\nclass Request {\n constructor (origin, {\n path,\n method,\n body,\n headers,\n query,\n idempotent,\n blocking,\n upgrade,\n headersTimeout,\n bodyTimeout,\n reset,\n throwOnError,\n expectContinue\n }, handler) {\n if (typeof path !== 'string') {\n throw new InvalidArgumentError('path must be a string')\n } else if (\n path[0] !== '/' &&\n !(path.startsWith('http://') || path.startsWith('https://')) &&\n method !== 'CONNECT'\n ) {\n throw new InvalidArgumentError('path must be an absolute URL or start with a slash')\n } else if (invalidPathRegex.exec(path) !== null) {\n throw new InvalidArgumentError('invalid request path')\n }\n\n if (typeof method !== 'string') {\n throw new InvalidArgumentError('method must be a string')\n } else if (tokenRegExp.exec(method) === null) {\n throw new InvalidArgumentError('invalid request method')\n }\n\n if (upgrade && typeof upgrade !== 'string') {\n throw new InvalidArgumentError('upgrade must be a string')\n }\n\n if (headersTimeout != null && (!Number.isFinite(headersTimeout) || headersTimeout < 0)) {\n throw new InvalidArgumentError('invalid headersTimeout')\n }\n\n if (bodyTimeout != null && (!Number.isFinite(bodyTimeout) || bodyTimeout < 0)) {\n throw new InvalidArgumentError('invalid bodyTimeout')\n }\n\n if (reset != null && typeof reset !== 'boolean') {\n throw new InvalidArgumentError('invalid reset')\n }\n\n if (expectContinue != null && typeof expectContinue !== 'boolean') {\n throw new InvalidArgumentError('invalid expectContinue')\n }\n\n this.headersTimeout = headersTimeout\n\n this.bodyTimeout = bodyTimeout\n\n this.throwOnError = throwOnError === true\n\n this.method = method\n\n this.abort = null\n\n if (body == null) {\n this.body = null\n } else if (util.isStream(body)) {\n this.body = body\n\n const rState = this.body._readableState\n if (!rState || !rState.autoDestroy) {\n this.endHandler = function autoDestroy () {\n util.destroy(this)\n }\n this.body.on('end', this.endHandler)\n }\n\n this.errorHandler = err => {\n if (this.abort) {\n this.abort(err)\n } else {\n this.error = err\n }\n }\n this.body.on('error', this.errorHandler)\n } else if (util.isBuffer(body)) {\n this.body = body.byteLength ? body : null\n } else if (ArrayBuffer.isView(body)) {\n this.body = body.buffer.byteLength ? Buffer.from(body.buffer, body.byteOffset, body.byteLength) : null\n } else if (body instanceof ArrayBuffer) {\n this.body = body.byteLength ? Buffer.from(body) : null\n } else if (typeof body === 'string') {\n this.body = body.length ? Buffer.from(body) : null\n } else if (util.isFormDataLike(body) || util.isIterable(body) || util.isBlobLike(body)) {\n this.body = body\n } else {\n throw new InvalidArgumentError('body must be a string, a Buffer, a Readable stream, an iterable, or an async iterable')\n }\n\n this.completed = false\n\n this.aborted = false\n\n this.upgrade = upgrade || null\n\n this.path = query ? util.buildURL(path, query) : path\n\n this.origin = origin\n\n this.idempotent = idempotent == null\n ? method === 'HEAD' || method === 'GET'\n : idempotent\n\n this.blocking = blocking == null ? false : blocking\n\n this.reset = reset == null ? null : reset\n\n this.host = null\n\n this.contentLength = null\n\n this.contentType = null\n\n this.headers = ''\n\n // Only for H2\n this.expectContinue = expectContinue != null ? expectContinue : false\n\n if (Array.isArray(headers)) {\n if (headers.length % 2 !== 0) {\n throw new InvalidArgumentError('headers array must be even')\n }\n for (let i = 0; i < headers.length; i += 2) {\n processHeader(this, headers[i], headers[i + 1])\n }\n } else if (headers && typeof headers === 'object') {\n const keys = Object.keys(headers)\n for (let i = 0; i < keys.length; i++) {\n const key = keys[i]\n processHeader(this, key, headers[key])\n }\n } else if (headers != null) {\n throw new InvalidArgumentError('headers must be an object or an array')\n }\n\n if (util.isFormDataLike(this.body)) {\n if (util.nodeMajor < 16 || (util.nodeMajor === 16 && util.nodeMinor < 8)) {\n throw new InvalidArgumentError('Form-Data bodies are only supported in node v16.8 and newer.')\n }\n\n if (!extractBody) {\n extractBody = require('../fetch/body.js').extractBody\n }\n\n const [bodyStream, contentType] = extractBody(body)\n if (this.contentType == null) {\n this.contentType = contentType\n this.headers += `content-type: ${contentType}\\r\\n`\n }\n this.body = bodyStream.stream\n this.contentLength = bodyStream.length\n } else if (util.isBlobLike(body) && this.contentType == null && body.type) {\n this.contentType = body.type\n this.headers += `content-type: ${body.type}\\r\\n`\n }\n\n util.validateHandler(handler, method, upgrade)\n\n this.servername = util.getServerName(this.host)\n\n this[kHandler] = handler\n\n if (channels.create.hasSubscribers) {\n channels.create.publish({ request: this })\n }\n }\n\n onBodySent (chunk) {\n if (this[kHandler].onBodySent) {\n try {\n return this[kHandler].onBodySent(chunk)\n } catch (err) {\n this.abort(err)\n }\n }\n }\n\n onRequestSent () {\n if (channels.bodySent.hasSubscribers) {\n channels.bodySent.publish({ request: this })\n }\n\n if (this[kHandler].onRequestSent) {\n try {\n return this[kHandler].onRequestSent()\n } catch (err) {\n this.abort(err)\n }\n }\n }\n\n onConnect (abort) {\n assert(!this.aborted)\n assert(!this.completed)\n\n if (this.error) {\n abort(this.error)\n } else {\n this.abort = abort\n return this[kHandler].onConnect(abort)\n }\n }\n\n onHeaders (statusCode, headers, resume, statusText) {\n assert(!this.aborted)\n assert(!this.completed)\n\n if (channels.headers.hasSubscribers) {\n channels.headers.publish({ request: this, response: { statusCode, headers, statusText } })\n }\n\n try {\n return this[kHandler].onHeaders(statusCode, headers, resume, statusText)\n } catch (err) {\n this.abort(err)\n }\n }\n\n onData (chunk) {\n assert(!this.aborted)\n assert(!this.completed)\n\n try {\n return this[kHandler].onData(chunk)\n } catch (err) {\n this.abort(err)\n return false\n }\n }\n\n onUpgrade (statusCode, headers, socket) {\n assert(!this.aborted)\n assert(!this.completed)\n\n return this[kHandler].onUpgrade(statusCode, headers, socket)\n }\n\n onComplete (trailers) {\n this.onFinally()\n\n assert(!this.aborted)\n\n this.completed = true\n if (channels.trailers.hasSubscribers) {\n channels.trailers.publish({ request: this, trailers })\n }\n\n try {\n return this[kHandler].onComplete(trailers)\n } catch (err) {\n // TODO (fix): This might be a bad idea?\n this.onError(err)\n }\n }\n\n onError (error) {\n this.onFinally()\n\n if (channels.error.hasSubscribers) {\n channels.error.publish({ request: this, error })\n }\n\n if (this.aborted) {\n return\n }\n this.aborted = true\n\n return this[kHandler].onError(error)\n }\n\n onFinally () {\n if (this.errorHandler) {\n this.body.off('error', this.errorHandler)\n this.errorHandler = null\n }\n\n if (this.endHandler) {\n this.body.off('end', this.endHandler)\n this.endHandler = null\n }\n }\n\n // TODO: adjust to support H2\n addHeader (key, value) {\n processHeader(this, key, value)\n return this\n }\n\n static [kHTTP1BuildRequest] (origin, opts, handler) {\n // TODO: Migrate header parsing here, to make Requests\n // HTTP agnostic\n return new Request(origin, opts, handler)\n }\n\n static [kHTTP2BuildRequest] (origin, opts, handler) {\n const headers = opts.headers\n opts = { ...opts, headers: null }\n\n const request = new Request(origin, opts, handler)\n\n request.headers = {}\n\n if (Array.isArray(headers)) {\n if (headers.length % 2 !== 0) {\n throw new InvalidArgumentError('headers array must be even')\n }\n for (let i = 0; i < headers.length; i += 2) {\n processHeader(request, headers[i], headers[i + 1], true)\n }\n } else if (headers && typeof headers === 'object') {\n const keys = Object.keys(headers)\n for (let i = 0; i < keys.length; i++) {\n const key = keys[i]\n processHeader(request, key, headers[key], true)\n }\n } else if (headers != null) {\n throw new InvalidArgumentError('headers must be an object or an array')\n }\n\n return request\n }\n\n static [kHTTP2CopyHeaders] (raw) {\n const rawHeaders = raw.split('\\r\\n')\n const headers = {}\n\n for (const header of rawHeaders) {\n const [key, value] = header.split(': ')\n\n if (value == null || value.length === 0) continue\n\n if (headers[key]) headers[key] += `,${value}`\n else headers[key] = value\n }\n\n return headers\n }\n}\n\nfunction processHeaderValue (key, val, skipAppend) {\n if (val && typeof val === 'object') {\n throw new InvalidArgumentError(`invalid ${key} header`)\n }\n\n val = val != null ? `${val}` : ''\n\n if (headerCharRegex.exec(val) !== null) {\n throw new InvalidArgumentError(`invalid ${key} header`)\n }\n\n return skipAppend ? val : `${key}: ${val}\\r\\n`\n}\n\nfunction processHeader (request, key, val, skipAppend = false) {\n if (val && (typeof val === 'object' && !Array.isArray(val))) {\n throw new InvalidArgumentError(`invalid ${key} header`)\n } else if (val === undefined) {\n return\n }\n\n if (\n request.host === null &&\n key.length === 4 &&\n key.toLowerCase() === 'host'\n ) {\n if (headerCharRegex.exec(val) !== null) {\n throw new InvalidArgumentError(`invalid ${key} header`)\n }\n // Consumed by Client\n request.host = val\n } else if (\n request.contentLength === null &&\n key.length === 14 &&\n key.toLowerCase() === 'content-length'\n ) {\n request.contentLength = parseInt(val, 10)\n if (!Number.isFinite(request.contentLength)) {\n throw new InvalidArgumentError('invalid content-length header')\n }\n } else if (\n request.contentType === null &&\n key.length === 12 &&\n key.toLowerCase() === 'content-type'\n ) {\n request.contentType = val\n if (skipAppend) request.headers[key] = processHeaderValue(key, val, skipAppend)\n else request.headers += processHeaderValue(key, val)\n } else if (\n key.length === 17 &&\n key.toLowerCase() === 'transfer-encoding'\n ) {\n throw new InvalidArgumentError('invalid transfer-encoding header')\n } else if (\n key.length === 10 &&\n key.toLowerCase() === 'connection'\n ) {\n const value = typeof val === 'string' ? val.toLowerCase() : null\n if (value !== 'close' && value !== 'keep-alive') {\n throw new InvalidArgumentError('invalid connection header')\n } else if (value === 'close') {\n request.reset = true\n }\n } else if (\n key.length === 10 &&\n key.toLowerCase() === 'keep-alive'\n ) {\n throw new InvalidArgumentError('invalid keep-alive header')\n } else if (\n key.length === 7 &&\n key.toLowerCase() === 'upgrade'\n ) {\n throw new InvalidArgumentError('invalid upgrade header')\n } else if (\n key.length === 6 &&\n key.toLowerCase() === 'expect'\n ) {\n throw new NotSupportedError('expect header not supported')\n } else if (tokenRegExp.exec(key) === null) {\n throw new InvalidArgumentError('invalid header key')\n } else {\n if (Array.isArray(val)) {\n for (let i = 0; i < val.length; i++) {\n if (skipAppend) {\n if (request.headers[key]) request.headers[key] += `,${processHeaderValue(key, val[i], skipAppend)}`\n else request.headers[key] = processHeaderValue(key, val[i], skipAppend)\n } else {\n request.headers += processHeaderValue(key, val[i])\n }\n }\n } else {\n if (skipAppend) request.headers[key] = processHeaderValue(key, val, skipAppend)\n else request.headers += processHeaderValue(key, val)\n }\n }\n}\n\nmodule.exports = Request\n","'use strict'\n\nconst EventEmitter = require('events')\n\nclass Dispatcher extends EventEmitter {\n dispatch () {\n throw new Error('not implemented')\n }\n\n close () {\n throw new Error('not implemented')\n }\n\n destroy () {\n throw new Error('not implemented')\n }\n}\n\nmodule.exports = Dispatcher\n","'use strict'\n\nconst Dispatcher = require('./dispatcher')\nconst {\n ClientDestroyedError,\n ClientClosedError,\n InvalidArgumentError\n} = require('./core/errors')\nconst { kDestroy, kClose, kDispatch, kInterceptors } = require('./core/symbols')\n\nconst kDestroyed = Symbol('destroyed')\nconst kClosed = Symbol('closed')\nconst kOnDestroyed = Symbol('onDestroyed')\nconst kOnClosed = Symbol('onClosed')\nconst kInterceptedDispatch = Symbol('Intercepted Dispatch')\n\nclass DispatcherBase extends Dispatcher {\n constructor () {\n super()\n\n this[kDestroyed] = false\n this[kOnDestroyed] = null\n this[kClosed] = false\n this[kOnClosed] = []\n }\n\n get destroyed () {\n return this[kDestroyed]\n }\n\n get closed () {\n return this[kClosed]\n }\n\n get interceptors () {\n return this[kInterceptors]\n }\n\n set interceptors (newInterceptors) {\n if (newInterceptors) {\n for (let i = newInterceptors.length - 1; i >= 0; i--) {\n const interceptor = this[kInterceptors][i]\n if (typeof interceptor !== 'function') {\n throw new InvalidArgumentError('interceptor must be an function')\n }\n }\n }\n\n this[kInterceptors] = newInterceptors\n }\n\n close (callback) {\n if (callback === undefined) {\n return new Promise((resolve, reject) => {\n this.close((err, data) => {\n return err ? reject(err) : resolve(data)\n })\n })\n }\n\n if (typeof callback !== 'function') {\n throw new InvalidArgumentError('invalid callback')\n }\n\n if (this[kDestroyed]) {\n queueMicrotask(() => callback(new ClientDestroyedError(), null))\n return\n }\n\n if (this[kClosed]) {\n if (this[kOnClosed]) {\n this[kOnClosed].push(callback)\n } else {\n queueMicrotask(() => callback(null, null))\n }\n return\n }\n\n this[kClosed] = true\n this[kOnClosed].push(callback)\n\n const onClosed = () => {\n const callbacks = this[kOnClosed]\n this[kOnClosed] = null\n for (let i = 0; i < callbacks.length; i++) {\n callbacks[i](null, null)\n }\n }\n\n // Should not error.\n this[kClose]()\n .then(() => this.destroy())\n .then(() => {\n queueMicrotask(onClosed)\n })\n }\n\n destroy (err, callback) {\n if (typeof err === 'function') {\n callback = err\n err = null\n }\n\n if (callback === undefined) {\n return new Promise((resolve, reject) => {\n this.destroy(err, (err, data) => {\n return err ? /* istanbul ignore next: should never error */ reject(err) : resolve(data)\n })\n })\n }\n\n if (typeof callback !== 'function') {\n throw new InvalidArgumentError('invalid callback')\n }\n\n if (this[kDestroyed]) {\n if (this[kOnDestroyed]) {\n this[kOnDestroyed].push(callback)\n } else {\n queueMicrotask(() => callback(null, null))\n }\n return\n }\n\n if (!err) {\n err = new ClientDestroyedError()\n }\n\n this[kDestroyed] = true\n this[kOnDestroyed] = this[kOnDestroyed] || []\n this[kOnDestroyed].push(callback)\n\n const onDestroyed = () => {\n const callbacks = this[kOnDestroyed]\n this[kOnDestroyed] = null\n for (let i = 0; i < callbacks.length; i++) {\n callbacks[i](null, null)\n }\n }\n\n // Should not error.\n this[kDestroy](err).then(() => {\n queueMicrotask(onDestroyed)\n })\n }\n\n [kInterceptedDispatch] (opts, handler) {\n if (!this[kInterceptors] || this[kInterceptors].length === 0) {\n this[kInterceptedDispatch] = this[kDispatch]\n return this[kDispatch](opts, handler)\n }\n\n let dispatch = this[kDispatch].bind(this)\n for (let i = this[kInterceptors].length - 1; i >= 0; i--) {\n dispatch = this[kInterceptors][i](dispatch)\n }\n this[kInterceptedDispatch] = dispatch\n return dispatch(opts, handler)\n }\n\n dispatch (opts, handler) {\n if (!handler || typeof handler !== 'object') {\n throw new InvalidArgumentError('handler must be an object')\n }\n\n try {\n if (!opts || typeof opts !== 'object') {\n throw new InvalidArgumentError('opts must be an object.')\n }\n\n if (this[kDestroyed] || this[kOnDestroyed]) {\n throw new ClientDestroyedError()\n }\n\n if (this[kClosed]) {\n throw new ClientClosedError()\n }\n\n return this[kInterceptedDispatch](opts, handler)\n } catch (err) {\n if (typeof handler.onError !== 'function') {\n throw new InvalidArgumentError('invalid onError method')\n }\n\n handler.onError(err)\n\n return false\n }\n }\n}\n\nmodule.exports = DispatcherBase\n","'use strict'\n\nconst net = require('net')\nconst assert = require('assert')\nconst util = require('./util')\nconst { InvalidArgumentError, ConnectTimeoutError } = require('./errors')\n\nlet tls // include tls conditionally since it is not always available\n\n// TODO: session re-use does not wait for the first\n// connection to resolve the session and might therefore\n// resolve the same servername multiple times even when\n// re-use is enabled.\n\nlet SessionCache\n// FIXME: remove workaround when the Node bug is fixed\n// https://github.com/nodejs/node/issues/49344#issuecomment-1741776308\nif (global.FinalizationRegistry && !process.env.NODE_V8_COVERAGE) {\n SessionCache = class WeakSessionCache {\n constructor (maxCachedSessions) {\n this._maxCachedSessions = maxCachedSessions\n this._sessionCache = new Map()\n this._sessionRegistry = new global.FinalizationRegistry((key) => {\n if (this._sessionCache.size < this._maxCachedSessions) {\n return\n }\n\n const ref = this._sessionCache.get(key)\n if (ref !== undefined && ref.deref() === undefined) {\n this._sessionCache.delete(key)\n }\n })\n }\n\n get (sessionKey) {\n const ref = this._sessionCache.get(sessionKey)\n return ref ? ref.deref() : null\n }\n\n set (sessionKey, session) {\n if (this._maxCachedSessions === 0) {\n return\n }\n\n this._sessionCache.set(sessionKey, new WeakRef(session))\n this._sessionRegistry.register(session, sessionKey)\n }\n }\n} else {\n SessionCache = class SimpleSessionCache {\n constructor (maxCachedSessions) {\n this._maxCachedSessions = maxCachedSessions\n this._sessionCache = new Map()\n }\n\n get (sessionKey) {\n return this._sessionCache.get(sessionKey)\n }\n\n set (sessionKey, session) {\n if (this._maxCachedSessions === 0) {\n return\n }\n\n if (this._sessionCache.size >= this._maxCachedSessions) {\n // remove the oldest session\n const { value: oldestKey } = this._sessionCache.keys().next()\n this._sessionCache.delete(oldestKey)\n }\n\n this._sessionCache.set(sessionKey, session)\n }\n }\n}\n\nfunction buildConnector ({ allowH2, maxCachedSessions, socketPath, timeout, ...opts }) {\n if (maxCachedSessions != null && (!Number.isInteger(maxCachedSessions) || maxCachedSessions < 0)) {\n throw new InvalidArgumentError('maxCachedSessions must be a positive integer or zero')\n }\n\n const options = { path: socketPath, ...opts }\n const sessionCache = new SessionCache(maxCachedSessions == null ? 100 : maxCachedSessions)\n timeout = timeout == null ? 10e3 : timeout\n allowH2 = allowH2 != null ? allowH2 : false\n return function connect ({ hostname, host, protocol, port, servername, localAddress, httpSocket }, callback) {\n let socket\n if (protocol === 'https:') {\n if (!tls) {\n tls = require('tls')\n }\n servername = servername || options.servername || util.getServerName(host) || null\n\n const sessionKey = servername || hostname\n const session = sessionCache.get(sessionKey) || null\n\n assert(sessionKey)\n\n socket = tls.connect({\n highWaterMark: 16384, // TLS in node can't have bigger HWM anyway...\n ...options,\n servername,\n session,\n localAddress,\n // TODO(HTTP/2): Add support for h2c\n ALPNProtocols: allowH2 ? ['http/1.1', 'h2'] : ['http/1.1'],\n socket: httpSocket, // upgrade socket connection\n port: port || 443,\n host: hostname\n })\n\n socket\n .on('session', function (session) {\n // TODO (fix): Can a session become invalid once established? Don't think so?\n sessionCache.set(sessionKey, session)\n })\n } else {\n assert(!httpSocket, 'httpSocket can only be sent on TLS update')\n socket = net.connect({\n highWaterMark: 64 * 1024, // Same as nodejs fs streams.\n ...options,\n localAddress,\n port: port || 80,\n host: hostname\n })\n }\n\n // Set TCP keep alive options on the socket here instead of in connect() for the case of assigning the socket\n if (options.keepAlive == null || options.keepAlive) {\n const keepAliveInitialDelay = options.keepAliveInitialDelay === undefined ? 60e3 : options.keepAliveInitialDelay\n socket.setKeepAlive(true, keepAliveInitialDelay)\n }\n\n const cancelTimeout = setupTimeout(() => onConnectTimeout(socket), timeout)\n\n socket\n .setNoDelay(true)\n .once(protocol === 'https:' ? 'secureConnect' : 'connect', function () {\n cancelTimeout()\n\n if (callback) {\n const cb = callback\n callback = null\n cb(null, this)\n }\n })\n .on('error', function (err) {\n cancelTimeout()\n\n if (callback) {\n const cb = callback\n callback = null\n cb(err)\n }\n })\n\n return socket\n }\n}\n\nfunction setupTimeout (onConnectTimeout, timeout) {\n if (!timeout) {\n return () => {}\n }\n\n let s1 = null\n let s2 = null\n const timeoutId = setTimeout(() => {\n // setImmediate is added to make sure that we priotorise socket error events over timeouts\n s1 = setImmediate(() => {\n if (process.platform === 'win32') {\n // Windows needs an extra setImmediate probably due to implementation differences in the socket logic\n s2 = setImmediate(() => onConnectTimeout())\n } else {\n onConnectTimeout()\n }\n })\n }, timeout)\n return () => {\n clearTimeout(timeoutId)\n clearImmediate(s1)\n clearImmediate(s2)\n }\n}\n\nfunction onConnectTimeout (socket) {\n util.destroy(socket, new ConnectTimeoutError())\n}\n\nmodule.exports = buildConnector\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.enumToMap = void 0;\nfunction enumToMap(obj) {\n const res = {};\n Object.keys(obj).forEach((key) => {\n const value = obj[key];\n if (typeof value === 'number') {\n res[key] = value;\n }\n });\n return res;\n}\nexports.enumToMap = enumToMap;\n//# sourceMappingURL=utils.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.SPECIAL_HEADERS = exports.HEADER_STATE = exports.MINOR = exports.MAJOR = exports.CONNECTION_TOKEN_CHARS = exports.HEADER_CHARS = exports.TOKEN = exports.STRICT_TOKEN = exports.HEX = exports.URL_CHAR = exports.STRICT_URL_CHAR = exports.USERINFO_CHARS = exports.MARK = exports.ALPHANUM = exports.NUM = exports.HEX_MAP = exports.NUM_MAP = exports.ALPHA = exports.FINISH = exports.H_METHOD_MAP = exports.METHOD_MAP = exports.METHODS_RTSP = exports.METHODS_ICE = exports.METHODS_HTTP = exports.METHODS = exports.LENIENT_FLAGS = exports.FLAGS = exports.TYPE = exports.ERROR = void 0;\nconst utils_1 = require(\"./utils\");\n// C headers\nvar ERROR;\n(function (ERROR) {\n ERROR[ERROR[\"OK\"] = 0] = \"OK\";\n ERROR[ERROR[\"INTERNAL\"] = 1] = \"INTERNAL\";\n ERROR[ERROR[\"STRICT\"] = 2] = \"STRICT\";\n ERROR[ERROR[\"LF_EXPECTED\"] = 3] = \"LF_EXPECTED\";\n ERROR[ERROR[\"UNEXPECTED_CONTENT_LENGTH\"] = 4] = \"UNEXPECTED_CONTENT_LENGTH\";\n ERROR[ERROR[\"CLOSED_CONNECTION\"] = 5] = \"CLOSED_CONNECTION\";\n ERROR[ERROR[\"INVALID_METHOD\"] = 6] = \"INVALID_METHOD\";\n ERROR[ERROR[\"INVALID_URL\"] = 7] = \"INVALID_URL\";\n ERROR[ERROR[\"INVALID_CONSTANT\"] = 8] = \"INVALID_CONSTANT\";\n ERROR[ERROR[\"INVALID_VERSION\"] = 9] = \"INVALID_VERSION\";\n ERROR[ERROR[\"INVALID_HEADER_TOKEN\"] = 10] = \"INVALID_HEADER_TOKEN\";\n ERROR[ERROR[\"INVALID_CONTENT_LENGTH\"] = 11] = \"INVALID_CONTENT_LENGTH\";\n ERROR[ERROR[\"INVALID_CHUNK_SIZE\"] = 12] = \"INVALID_CHUNK_SIZE\";\n ERROR[ERROR[\"INVALID_STATUS\"] = 13] = \"INVALID_STATUS\";\n ERROR[ERROR[\"INVALID_EOF_STATE\"] = 14] = \"INVALID_EOF_STATE\";\n ERROR[ERROR[\"INVALID_TRANSFER_ENCODING\"] = 15] = \"INVALID_TRANSFER_ENCODING\";\n ERROR[ERROR[\"CB_MESSAGE_BEGIN\"] = 16] = \"CB_MESSAGE_BEGIN\";\n ERROR[ERROR[\"CB_HEADERS_COMPLETE\"] = 17] = \"CB_HEADERS_COMPLETE\";\n ERROR[ERROR[\"CB_MESSAGE_COMPLETE\"] = 18] = \"CB_MESSAGE_COMPLETE\";\n ERROR[ERROR[\"CB_CHUNK_HEADER\"] = 19] = \"CB_CHUNK_HEADER\";\n ERROR[ERROR[\"CB_CHUNK_COMPLETE\"] = 20] = \"CB_CHUNK_COMPLETE\";\n ERROR[ERROR[\"PAUSED\"] = 21] = \"PAUSED\";\n ERROR[ERROR[\"PAUSED_UPGRADE\"] = 22] = \"PAUSED_UPGRADE\";\n ERROR[ERROR[\"PAUSED_H2_UPGRADE\"] = 23] = \"PAUSED_H2_UPGRADE\";\n ERROR[ERROR[\"USER\"] = 24] = \"USER\";\n})(ERROR = exports.ERROR || (exports.ERROR = {}));\nvar TYPE;\n(function (TYPE) {\n TYPE[TYPE[\"BOTH\"] = 0] = \"BOTH\";\n TYPE[TYPE[\"REQUEST\"] = 1] = \"REQUEST\";\n TYPE[TYPE[\"RESPONSE\"] = 2] = \"RESPONSE\";\n})(TYPE = exports.TYPE || (exports.TYPE = {}));\nvar FLAGS;\n(function (FLAGS) {\n FLAGS[FLAGS[\"CONNECTION_KEEP_ALIVE\"] = 1] = \"CONNECTION_KEEP_ALIVE\";\n FLAGS[FLAGS[\"CONNECTION_CLOSE\"] = 2] = \"CONNECTION_CLOSE\";\n FLAGS[FLAGS[\"CONNECTION_UPGRADE\"] = 4] = \"CONNECTION_UPGRADE\";\n FLAGS[FLAGS[\"CHUNKED\"] = 8] = \"CHUNKED\";\n FLAGS[FLAGS[\"UPGRADE\"] = 16] = \"UPGRADE\";\n FLAGS[FLAGS[\"CONTENT_LENGTH\"] = 32] = \"CONTENT_LENGTH\";\n FLAGS[FLAGS[\"SKIPBODY\"] = 64] = \"SKIPBODY\";\n FLAGS[FLAGS[\"TRAILING\"] = 128] = \"TRAILING\";\n // 1 << 8 is unused\n FLAGS[FLAGS[\"TRANSFER_ENCODING\"] = 512] = \"TRANSFER_ENCODING\";\n})(FLAGS = exports.FLAGS || (exports.FLAGS = {}));\nvar LENIENT_FLAGS;\n(function (LENIENT_FLAGS) {\n LENIENT_FLAGS[LENIENT_FLAGS[\"HEADERS\"] = 1] = \"HEADERS\";\n LENIENT_FLAGS[LENIENT_FLAGS[\"CHUNKED_LENGTH\"] = 2] = \"CHUNKED_LENGTH\";\n LENIENT_FLAGS[LENIENT_FLAGS[\"KEEP_ALIVE\"] = 4] = \"KEEP_ALIVE\";\n})(LENIENT_FLAGS = exports.LENIENT_FLAGS || (exports.LENIENT_FLAGS = {}));\nvar METHODS;\n(function (METHODS) {\n METHODS[METHODS[\"DELETE\"] = 0] = \"DELETE\";\n METHODS[METHODS[\"GET\"] = 1] = \"GET\";\n METHODS[METHODS[\"HEAD\"] = 2] = \"HEAD\";\n METHODS[METHODS[\"POST\"] = 3] = \"POST\";\n METHODS[METHODS[\"PUT\"] = 4] = \"PUT\";\n /* pathological */\n METHODS[METHODS[\"CONNECT\"] = 5] = \"CONNECT\";\n METHODS[METHODS[\"OPTIONS\"] = 6] = \"OPTIONS\";\n METHODS[METHODS[\"TRACE\"] = 7] = \"TRACE\";\n /* WebDAV */\n METHODS[METHODS[\"COPY\"] = 8] = \"COPY\";\n METHODS[METHODS[\"LOCK\"] = 9] = \"LOCK\";\n METHODS[METHODS[\"MKCOL\"] = 10] = \"MKCOL\";\n METHODS[METHODS[\"MOVE\"] = 11] = \"MOVE\";\n METHODS[METHODS[\"PROPFIND\"] = 12] = \"PROPFIND\";\n METHODS[METHODS[\"PROPPATCH\"] = 13] = \"PROPPATCH\";\n METHODS[METHODS[\"SEARCH\"] = 14] = \"SEARCH\";\n METHODS[METHODS[\"UNLOCK\"] = 15] = \"UNLOCK\";\n METHODS[METHODS[\"BIND\"] = 16] = \"BIND\";\n METHODS[METHODS[\"REBIND\"] = 17] = \"REBIND\";\n METHODS[METHODS[\"UNBIND\"] = 18] = \"UNBIND\";\n METHODS[METHODS[\"ACL\"] = 19] = \"ACL\";\n /* subversion */\n METHODS[METHODS[\"REPORT\"] = 20] = \"REPORT\";\n METHODS[METHODS[\"MKACTIVITY\"] = 21] = \"MKACTIVITY\";\n METHODS[METHODS[\"CHECKOUT\"] = 22] = \"CHECKOUT\";\n METHODS[METHODS[\"MERGE\"] = 23] = \"MERGE\";\n /* upnp */\n METHODS[METHODS[\"M-SEARCH\"] = 24] = \"M-SEARCH\";\n METHODS[METHODS[\"NOTIFY\"] = 25] = \"NOTIFY\";\n METHODS[METHODS[\"SUBSCRIBE\"] = 26] = \"SUBSCRIBE\";\n METHODS[METHODS[\"UNSUBSCRIBE\"] = 27] = \"UNSUBSCRIBE\";\n /* RFC-5789 */\n METHODS[METHODS[\"PATCH\"] = 28] = \"PATCH\";\n METHODS[METHODS[\"PURGE\"] = 29] = \"PURGE\";\n /* CalDAV */\n METHODS[METHODS[\"MKCALENDAR\"] = 30] = \"MKCALENDAR\";\n /* RFC-2068, section 19.6.1.2 */\n METHODS[METHODS[\"LINK\"] = 31] = \"LINK\";\n METHODS[METHODS[\"UNLINK\"] = 32] = \"UNLINK\";\n /* icecast */\n METHODS[METHODS[\"SOURCE\"] = 33] = \"SOURCE\";\n /* RFC-7540, section 11.6 */\n METHODS[METHODS[\"PRI\"] = 34] = \"PRI\";\n /* RFC-2326 RTSP */\n METHODS[METHODS[\"DESCRIBE\"] = 35] = \"DESCRIBE\";\n METHODS[METHODS[\"ANNOUNCE\"] = 36] = \"ANNOUNCE\";\n METHODS[METHODS[\"SETUP\"] = 37] = \"SETUP\";\n METHODS[METHODS[\"PLAY\"] = 38] = \"PLAY\";\n METHODS[METHODS[\"PAUSE\"] = 39] = \"PAUSE\";\n METHODS[METHODS[\"TEARDOWN\"] = 40] = \"TEARDOWN\";\n METHODS[METHODS[\"GET_PARAMETER\"] = 41] = \"GET_PARAMETER\";\n METHODS[METHODS[\"SET_PARAMETER\"] = 42] = \"SET_PARAMETER\";\n METHODS[METHODS[\"REDIRECT\"] = 43] = \"REDIRECT\";\n METHODS[METHODS[\"RECORD\"] = 44] = \"RECORD\";\n /* RAOP */\n METHODS[METHODS[\"FLUSH\"] = 45] = \"FLUSH\";\n})(METHODS = exports.METHODS || (exports.METHODS = {}));\nexports.METHODS_HTTP = [\n METHODS.DELETE,\n METHODS.GET,\n METHODS.HEAD,\n METHODS.POST,\n METHODS.PUT,\n METHODS.CONNECT,\n METHODS.OPTIONS,\n METHODS.TRACE,\n METHODS.COPY,\n METHODS.LOCK,\n METHODS.MKCOL,\n METHODS.MOVE,\n METHODS.PROPFIND,\n METHODS.PROPPATCH,\n METHODS.SEARCH,\n METHODS.UNLOCK,\n METHODS.BIND,\n METHODS.REBIND,\n METHODS.UNBIND,\n METHODS.ACL,\n METHODS.REPORT,\n METHODS.MKACTIVITY,\n METHODS.CHECKOUT,\n METHODS.MERGE,\n METHODS['M-SEARCH'],\n METHODS.NOTIFY,\n METHODS.SUBSCRIBE,\n METHODS.UNSUBSCRIBE,\n METHODS.PATCH,\n METHODS.PURGE,\n METHODS.MKCALENDAR,\n METHODS.LINK,\n METHODS.UNLINK,\n METHODS.PRI,\n // TODO(indutny): should we allow it with HTTP?\n METHODS.SOURCE,\n];\nexports.METHODS_ICE = [\n METHODS.SOURCE,\n];\nexports.METHODS_RTSP = [\n METHODS.OPTIONS,\n METHODS.DESCRIBE,\n METHODS.ANNOUNCE,\n METHODS.SETUP,\n METHODS.PLAY,\n METHODS.PAUSE,\n METHODS.TEARDOWN,\n METHODS.GET_PARAMETER,\n METHODS.SET_PARAMETER,\n METHODS.REDIRECT,\n METHODS.RECORD,\n METHODS.FLUSH,\n // For AirPlay\n METHODS.GET,\n METHODS.POST,\n];\nexports.METHOD_MAP = utils_1.enumToMap(METHODS);\nexports.H_METHOD_MAP = {};\nObject.keys(exports.METHOD_MAP).forEach((key) => {\n if (/^H/.test(key)) {\n exports.H_METHOD_MAP[key] = exports.METHOD_MAP[key];\n }\n});\nvar FINISH;\n(function (FINISH) {\n FINISH[FINISH[\"SAFE\"] = 0] = \"SAFE\";\n FINISH[FINISH[\"SAFE_WITH_CB\"] = 1] = \"SAFE_WITH_CB\";\n FINISH[FINISH[\"UNSAFE\"] = 2] = \"UNSAFE\";\n})(FINISH = exports.FINISH || (exports.FINISH = {}));\nexports.ALPHA = [];\nfor (let i = 'A'.charCodeAt(0); i <= 'Z'.charCodeAt(0); i++) {\n // Upper case\n exports.ALPHA.push(String.fromCharCode(i));\n // Lower case\n exports.ALPHA.push(String.fromCharCode(i + 0x20));\n}\nexports.NUM_MAP = {\n 0: 0, 1: 1, 2: 2, 3: 3, 4: 4,\n 5: 5, 6: 6, 7: 7, 8: 8, 9: 9,\n};\nexports.HEX_MAP = {\n 0: 0, 1: 1, 2: 2, 3: 3, 4: 4,\n 5: 5, 6: 6, 7: 7, 8: 8, 9: 9,\n A: 0XA, B: 0XB, C: 0XC, D: 0XD, E: 0XE, F: 0XF,\n a: 0xa, b: 0xb, c: 0xc, d: 0xd, e: 0xe, f: 0xf,\n};\nexports.NUM = [\n '0', '1', '2', '3', '4', '5', '6', '7', '8', '9',\n];\nexports.ALPHANUM = exports.ALPHA.concat(exports.NUM);\nexports.MARK = ['-', '_', '.', '!', '~', '*', '\\'', '(', ')'];\nexports.USERINFO_CHARS = exports.ALPHANUM\n .concat(exports.MARK)\n .concat(['%', ';', ':', '&', '=', '+', '$', ',']);\n// TODO(indutny): use RFC\nexports.STRICT_URL_CHAR = [\n '!', '\"', '$', '%', '&', '\\'',\n '(', ')', '*', '+', ',', '-', '.', '/',\n ':', ';', '<', '=', '>',\n '@', '[', '\\\\', ']', '^', '_',\n '`',\n '{', '|', '}', '~',\n].concat(exports.ALPHANUM);\nexports.URL_CHAR = exports.STRICT_URL_CHAR\n .concat(['\\t', '\\f']);\n// All characters with 0x80 bit set to 1\nfor (let i = 0x80; i <= 0xff; i++) {\n exports.URL_CHAR.push(i);\n}\nexports.HEX = exports.NUM.concat(['a', 'b', 'c', 'd', 'e', 'f', 'A', 'B', 'C', 'D', 'E', 'F']);\n/* Tokens as defined by rfc 2616. Also lowercases them.\n * token = 1*\n * separators = \"(\" | \")\" | \"<\" | \">\" | \"@\"\n * | \",\" | \";\" | \":\" | \"\\\" | <\">\n * | \"/\" | \"[\" | \"]\" | \"?\" | \"=\"\n * | \"{\" | \"}\" | SP | HT\n */\nexports.STRICT_TOKEN = [\n '!', '#', '$', '%', '&', '\\'',\n '*', '+', '-', '.',\n '^', '_', '`',\n '|', '~',\n].concat(exports.ALPHANUM);\nexports.TOKEN = exports.STRICT_TOKEN.concat([' ']);\n/*\n * Verify that a char is a valid visible (printable) US-ASCII\n * character or %x80-FF\n */\nexports.HEADER_CHARS = ['\\t'];\nfor (let i = 32; i <= 255; i++) {\n if (i !== 127) {\n exports.HEADER_CHARS.push(i);\n }\n}\n// ',' = \\x44\nexports.CONNECTION_TOKEN_CHARS = exports.HEADER_CHARS.filter((c) => c !== 44);\nexports.MAJOR = exports.NUM_MAP;\nexports.MINOR = exports.MAJOR;\nvar HEADER_STATE;\n(function (HEADER_STATE) {\n HEADER_STATE[HEADER_STATE[\"GENERAL\"] = 0] = \"GENERAL\";\n HEADER_STATE[HEADER_STATE[\"CONNECTION\"] = 1] = \"CONNECTION\";\n HEADER_STATE[HEADER_STATE[\"CONTENT_LENGTH\"] = 2] = \"CONTENT_LENGTH\";\n HEADER_STATE[HEADER_STATE[\"TRANSFER_ENCODING\"] = 3] = \"TRANSFER_ENCODING\";\n HEADER_STATE[HEADER_STATE[\"UPGRADE\"] = 4] = \"UPGRADE\";\n HEADER_STATE[HEADER_STATE[\"CONNECTION_KEEP_ALIVE\"] = 5] = \"CONNECTION_KEEP_ALIVE\";\n HEADER_STATE[HEADER_STATE[\"CONNECTION_CLOSE\"] = 6] = \"CONNECTION_CLOSE\";\n HEADER_STATE[HEADER_STATE[\"CONNECTION_UPGRADE\"] = 7] = \"CONNECTION_UPGRADE\";\n HEADER_STATE[HEADER_STATE[\"TRANSFER_ENCODING_CHUNKED\"] = 8] = \"TRANSFER_ENCODING_CHUNKED\";\n})(HEADER_STATE = exports.HEADER_STATE || (exports.HEADER_STATE = {}));\nexports.SPECIAL_HEADERS = {\n 'connection': HEADER_STATE.CONNECTION,\n 'content-length': HEADER_STATE.CONTENT_LENGTH,\n 'proxy-connection': HEADER_STATE.CONNECTION,\n 'transfer-encoding': HEADER_STATE.TRANSFER_ENCODING,\n 'upgrade': HEADER_STATE.UPGRADE,\n};\n//# sourceMappingURL=constants.js.map","'use strict'\n\nconst util = require('../core/util')\nconst { kBodyUsed } = require('../core/symbols')\nconst assert = require('assert')\nconst { InvalidArgumentError } = require('../core/errors')\nconst EE = require('events')\n\nconst redirectableStatusCodes = [300, 301, 302, 303, 307, 308]\n\nconst kBody = Symbol('body')\n\nclass BodyAsyncIterable {\n constructor (body) {\n this[kBody] = body\n this[kBodyUsed] = false\n }\n\n async * [Symbol.asyncIterator] () {\n assert(!this[kBodyUsed], 'disturbed')\n this[kBodyUsed] = true\n yield * this[kBody]\n }\n}\n\nclass RedirectHandler {\n constructor (dispatch, maxRedirections, opts, handler) {\n if (maxRedirections != null && (!Number.isInteger(maxRedirections) || maxRedirections < 0)) {\n throw new InvalidArgumentError('maxRedirections must be a positive number')\n }\n\n util.validateHandler(handler, opts.method, opts.upgrade)\n\n this.dispatch = dispatch\n this.location = null\n this.abort = null\n this.opts = { ...opts, maxRedirections: 0 } // opts must be a copy\n this.maxRedirections = maxRedirections\n this.handler = handler\n this.history = []\n\n if (util.isStream(this.opts.body)) {\n // TODO (fix): Provide some way for the user to cache the file to e.g. /tmp\n // so that it can be dispatched again?\n // TODO (fix): Do we need 100-expect support to provide a way to do this properly?\n if (util.bodyLength(this.opts.body) === 0) {\n this.opts.body\n .on('data', function () {\n assert(false)\n })\n }\n\n if (typeof this.opts.body.readableDidRead !== 'boolean') {\n this.opts.body[kBodyUsed] = false\n EE.prototype.on.call(this.opts.body, 'data', function () {\n this[kBodyUsed] = true\n })\n }\n } else if (this.opts.body && typeof this.opts.body.pipeTo === 'function') {\n // TODO (fix): We can't access ReadableStream internal state\n // to determine whether or not it has been disturbed. This is just\n // a workaround.\n this.opts.body = new BodyAsyncIterable(this.opts.body)\n } else if (\n this.opts.body &&\n typeof this.opts.body !== 'string' &&\n !ArrayBuffer.isView(this.opts.body) &&\n util.isIterable(this.opts.body)\n ) {\n // TODO: Should we allow re-using iterable if !this.opts.idempotent\n // or through some other flag?\n this.opts.body = new BodyAsyncIterable(this.opts.body)\n }\n }\n\n onConnect (abort) {\n this.abort = abort\n this.handler.onConnect(abort, { history: this.history })\n }\n\n onUpgrade (statusCode, headers, socket) {\n this.handler.onUpgrade(statusCode, headers, socket)\n }\n\n onError (error) {\n this.handler.onError(error)\n }\n\n onHeaders (statusCode, headers, resume, statusText) {\n this.location = this.history.length >= this.maxRedirections || util.isDisturbed(this.opts.body)\n ? null\n : parseLocation(statusCode, headers)\n\n if (this.opts.origin) {\n this.history.push(new URL(this.opts.path, this.opts.origin))\n }\n\n if (!this.location) {\n return this.handler.onHeaders(statusCode, headers, resume, statusText)\n }\n\n const { origin, pathname, search } = util.parseURL(new URL(this.location, this.opts.origin && new URL(this.opts.path, this.opts.origin)))\n const path = search ? `${pathname}${search}` : pathname\n\n // Remove headers referring to the original URL.\n // By default it is Host only, unless it's a 303 (see below), which removes also all Content-* headers.\n // https://tools.ietf.org/html/rfc7231#section-6.4\n this.opts.headers = cleanRequestHeaders(this.opts.headers, statusCode === 303, this.opts.origin !== origin)\n this.opts.path = path\n this.opts.origin = origin\n this.opts.maxRedirections = 0\n this.opts.query = null\n\n // https://tools.ietf.org/html/rfc7231#section-6.4.4\n // In case of HTTP 303, always replace method to be either HEAD or GET\n if (statusCode === 303 && this.opts.method !== 'HEAD') {\n this.opts.method = 'GET'\n this.opts.body = null\n }\n }\n\n onData (chunk) {\n if (this.location) {\n /*\n https://tools.ietf.org/html/rfc7231#section-6.4\n\n TLDR: undici always ignores 3xx response bodies.\n\n Redirection is used to serve the requested resource from another URL, so it is assumes that\n no body is generated (and thus can be ignored). Even though generating a body is not prohibited.\n\n For status 301, 302, 303, 307 and 308 (the latter from RFC 7238), the specs mention that the body usually\n (which means it's optional and not mandated) contain just an hyperlink to the value of\n the Location response header, so the body can be ignored safely.\n\n For status 300, which is \"Multiple Choices\", the spec mentions both generating a Location\n response header AND a response body with the other possible location to follow.\n Since the spec explicitily chooses not to specify a format for such body and leave it to\n servers and browsers implementors, we ignore the body as there is no specified way to eventually parse it.\n */\n } else {\n return this.handler.onData(chunk)\n }\n }\n\n onComplete (trailers) {\n if (this.location) {\n /*\n https://tools.ietf.org/html/rfc7231#section-6.4\n\n TLDR: undici always ignores 3xx response trailers as they are not expected in case of redirections\n and neither are useful if present.\n\n See comment on onData method above for more detailed informations.\n */\n\n this.location = null\n this.abort = null\n\n this.dispatch(this.opts, this)\n } else {\n this.handler.onComplete(trailers)\n }\n }\n\n onBodySent (chunk) {\n if (this.handler.onBodySent) {\n this.handler.onBodySent(chunk)\n }\n }\n}\n\nfunction parseLocation (statusCode, headers) {\n if (redirectableStatusCodes.indexOf(statusCode) === -1) {\n return null\n }\n\n for (let i = 0; i < headers.length; i += 2) {\n if (headers[i].toString().toLowerCase() === 'location') {\n return headers[i + 1]\n }\n }\n}\n\n// https://tools.ietf.org/html/rfc7231#section-6.4.4\nfunction shouldRemoveHeader (header, removeContent, unknownOrigin) {\n if (header.length === 4) {\n return util.headerNameToString(header) === 'host'\n }\n if (removeContent && util.headerNameToString(header).startsWith('content-')) {\n return true\n }\n if (unknownOrigin && (header.length === 13 || header.length === 6 || header.length === 19)) {\n const name = util.headerNameToString(header)\n return name === 'authorization' || name === 'cookie' || name === 'proxy-authorization'\n }\n return false\n}\n\n// https://tools.ietf.org/html/rfc7231#section-6.4\nfunction cleanRequestHeaders (headers, removeContent, unknownOrigin) {\n const ret = []\n if (Array.isArray(headers)) {\n for (let i = 0; i < headers.length; i += 2) {\n if (!shouldRemoveHeader(headers[i], removeContent, unknownOrigin)) {\n ret.push(headers[i], headers[i + 1])\n }\n }\n } else if (headers && typeof headers === 'object') {\n for (const key of Object.keys(headers)) {\n if (!shouldRemoveHeader(key, removeContent, unknownOrigin)) {\n ret.push(key, headers[key])\n }\n }\n } else {\n assert(headers == null, 'headers must be an object or an array')\n }\n return ret\n}\n\nmodule.exports = RedirectHandler\n","'use strict'\n\nconst RedirectHandler = require('../handler/RedirectHandler')\n\nfunction createRedirectInterceptor ({ maxRedirections: defaultMaxRedirections }) {\n return (dispatch) => {\n return function Intercept (opts, handler) {\n const { maxRedirections = defaultMaxRedirections } = opts\n\n if (!maxRedirections) {\n return dispatch(opts, handler)\n }\n\n const redirectHandler = new RedirectHandler(dispatch, maxRedirections, opts, handler)\n opts = { ...opts, maxRedirections: 0 } // Stop sub dispatcher from also redirecting.\n return dispatch(opts, redirectHandler)\n }\n }\n}\n\nmodule.exports = createRedirectInterceptor\n","module.exports = 'AGFzbQEAAAABMAhgAX8Bf2ADf39/AX9gBH9/f38Bf2AAAGADf39/AGABfwBgAn9/AGAGf39/f39/AALLAQgDZW52GHdhc21fb25faGVhZGVyc19jb21wbGV0ZQACA2VudhV3YXNtX29uX21lc3NhZ2VfYmVnaW4AAANlbnYLd2FzbV9vbl91cmwAAQNlbnYOd2FzbV9vbl9zdGF0dXMAAQNlbnYUd2FzbV9vbl9oZWFkZXJfZmllbGQAAQNlbnYUd2FzbV9vbl9oZWFkZXJfdmFsdWUAAQNlbnYMd2FzbV9vbl9ib2R5AAEDZW52GHdhc21fb25fbWVzc2FnZV9jb21wbGV0ZQAAA0ZFAwMEAAAFAAAAAAAABQEFAAUFBQAABgAAAAAGBgYGAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAAABAQcAAAUFAwABBAUBcAESEgUDAQACBggBfwFBgNQECwfRBSIGbWVtb3J5AgALX2luaXRpYWxpemUACRlfX2luZGlyZWN0X2Z1bmN0aW9uX3RhYmxlAQALbGxodHRwX2luaXQAChhsbGh0dHBfc2hvdWxkX2tlZXBfYWxpdmUAQQxsbGh0dHBfYWxsb2MADAZtYWxsb2MARgtsbGh0dHBfZnJlZQANBGZyZWUASA9sbGh0dHBfZ2V0X3R5cGUADhVsbGh0dHBfZ2V0X2h0dHBfbWFqb3IADxVsbGh0dHBfZ2V0X2h0dHBfbWlub3IAEBFsbGh0dHBfZ2V0X21ldGhvZAARFmxsaHR0cF9nZXRfc3RhdHVzX2NvZGUAEhJsbGh0dHBfZ2V0X3VwZ3JhZGUAEwxsbGh0dHBfcmVzZXQAFA5sbGh0dHBfZXhlY3V0ZQAVFGxsaHR0cF9zZXR0aW5nc19pbml0ABYNbGxodHRwX2ZpbmlzaAAXDGxsaHR0cF9wYXVzZQAYDWxsaHR0cF9yZXN1bWUAGRtsbGh0dHBfcmVzdW1lX2FmdGVyX3VwZ3JhZGUAGhBsbGh0dHBfZ2V0X2Vycm5vABsXbGxodHRwX2dldF9lcnJvcl9yZWFzb24AHBdsbGh0dHBfc2V0X2Vycm9yX3JlYXNvbgAdFGxsaHR0cF9nZXRfZXJyb3JfcG9zAB4RbGxodHRwX2Vycm5vX25hbWUAHxJsbGh0dHBfbWV0aG9kX25hbWUAIBJs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ADcDACAAQShqQgA3AwAgAEEgakIANwMAIABBEGpCADcDACAAQQhqQgA3AwAgAEHdATYCHEEAC3sBAX8CQCAAKAIMIgMNAAJAIAAoAgRFDQAgACABNgIECwJAIAAgASACEMSAgIAAIgMNACAAKAIMDwsgACADNgIcQQAhAyAAKAIEIgFFDQAgACABIAIgACgCCBGBgICAAAAiAUUNACAAIAI2AhQgACABNgIMIAEhAwsgAwvk8wEDDn8DfgR/I4CAgIAAQRBrIgMkgICAgAAgASEEIAEhBSABIQYgASEHIAEhCCABIQkgASEKIAEhCyABIQwgASENIAEhDiABIQ8CQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgACgCHCIQQX9qDt0B2gEB2QECAwQFBgcICQoLDA0O2AEPENcBERLWARMUFRYXGBkaG+AB3wEcHR7VAR8gISIjJCXUASYnKCkqKyzTAdIBLS7RAdABLzAxMjM0NTY3ODk6Ozw9Pj9AQUJDREVG2wFHSElKzwHOAUvNAUzMAU1OT1BRUlNUVVZXWFlaW1xdXl9gYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXp7fH1+f4ABgQGCAYMBhAGFAYYBhwGIAYkB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QAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAC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FCAAIBA2AgxBACEQDLIBCyAAKAIEIRAgAEEANgIEAkAgACAQIAEQp4CAgAAiEA0AIAEhAQxNCyAAQdMANgIcIAAgATYCFCAAIBA2AgxBACEQDLEBCyAAKAIEIRAgAEEANgIEAkAgACAQIAEQp4CAgAAiEA0AIAEhAQxRCyAAQeUANgIcIAAgATYCFCAAIBA2AgxBACEQDLABCyAAQQA2AhwgACABNgIUIABBxoqAgAA2AhAgAEEHNgIMQQAhEAyvAQsgACgCBCEQIABBADYCBAJAIAAgECABEKeAgIAAIhANACABIQEMSQsgAEHSADYCHCAAIAE2AhQgACAQNgIMQQAhEAyuAQsgACgCBCEQIABBADYCBAJAIAAgECABEKeAgIAAIhANACABIQEMSQsgAEHTADYCHCAAIAE2AhQgACAQNgIMQQAhEAytAQsgACgCBCEQIABBADYCBAJAIAAgECABEKeAgIAAIhANACABIQEMTQsgAEHlADYCHCAAIAE2AhQgACAQNgIMQQAhEAysAQsgAEEANgIcIAAgATYCFCAAQdyIgIAANgIQIABBBzYCDEEAIRAMqwELIBBBP0cNASABQQFqIQELQQUhEAyQAQtBACEQIABBADYCHCAAIAE2AhQgAEH9koCAADYCECAAQQc2AgwMqAELIAAoAgQhECAAQQA2AgQCQCAAIBAgARCngICAACIQDQAgASEBDEILIABB0gA2AhwgACABNgIUIAAgEDYCDEEAIRAMpwELIAAoAgQhECAAQQA2AgQCQCAAIBAgARCngICAACIQDQAgASEBDEILIABB0wA2AhwgACABNgIUIAAgEDYCDEEAIRAMpgELIAAoAgQhECAAQQA2AgQCQCAAIBAgARCngICAACIQDQAgASEBDEYLIABB5QA2AhwgACABNgIUIAAgEDYCDEEAIRAMpQELIAAoAgQhASAAQQA2AgQCQCAAIAEgFBCngICAACIBDQAgFCEBDD8LIABB0gA2AhwgACAUNgIUIAAgATYCDEEAIRAMpAELIAAoAgQhASAAQQA2AgQCQCAAIAEgFBCngICAACIBDQAgFCEBDD8LIABB0wA2AhwgACAUNgIUIAAgATYCDEEAIRAMowELIAAoAgQhASAAQQA2AgQCQCAAIAEgFBCngICAACIBDQAgFCEBDEMLIABB5QA2AhwgACAUNgIUIAAgATYCDEEAIRAMogELIABBADYCHCAAIBQ2AhQgAEHDj4CAADYCECAAQQc2AgxBACEQDKEBCyAAQQA2AhwgACABNgIUIABBw4+AgAA2AhAgAEEHNgIMQQAhEAygAQtBACEQIABBADYCHCAAIBQ2AhQgAEGMnICAADYCECAAQQc2AgwMnwELIABBADYCHCAAIBQ2AhQgAEGMnICAADYCECAAQQc2AgxBACEQDJ4BCyAAQQA2AhwgACAUNgIUIABB/pGAgAA2AhAgAEEHNgIMQQAhEAydAQsgAEEANgIcIAAgATYCFCAAQY6bgIAANgIQIABBBjYCDEEAIRAMnAELIBBBFUYNVyAAQQA2AhwgACABNgIUIABBzI6AgAA2AhAgAEEgNgIMQQAhEAybAQsgAEEANgIAIBBBAWohAUEkIRALIAAgEDoAKSAAKAIEIRAgAEEANgIEIAAgECABEKuAgIAAIhANVCABIQEMPgsgAEEANgIAC0EAIRAgAEEANgIcIAAgBDYCFCAAQfGbgIAANgIQIABBBjYCDAyXAQsgAUEVRg1QIABBADYCHCAAIAU2AhQgAEHwjICAADYCECAAQRs2AgxBACEQDJYBCyAAKAIEIQUgAEEANgIEIAAgBSAQEKmAgIAAIgUNASAQQQFqIQULQa0BIRAMewsgAEHBATYCHCAAIAU2AgwgACAQQQFqNgIUQQAhEAyTAQsgACgCBCEGIABBADYCBCAAIAYgEBCpgICAACIGDQEgEEEBaiEGC0GuASEQDHgLIABBwgE2AhwgACAGNgIMIAAgEEEBajYCFEEAIRAMkAELIABBADYCHCAAIAc2AhQgAEGXi4CAADYCECAAQQ02AgxBACEQDI8BCyAAQQA2AhwgACAINgIUIABB45CAgAA2AhAgAEEJNgIMQQAhEAyOAQsgAEEANgIcIAAgCDYCFCAAQZSNgIAANgIQIABBITYCDEEAIRAMjQELQQEhFkEAIRdBACEUQQEhEAsgACAQOgArIAlBAWohCAJAAkAgAC0ALUEQcQ0AAkACQAJAIAAtACoOAwEAAgQLIBZFDQMMAgsgFA0BDAILIBdFDQELIAAoAgQhECAAQQA2AgQgACAQIAgQrYCAgAAiEEUNPSAAQckBNgIcIAAgCDYCFCAAIBA2AgxBACEQDIwBCyAAKAIEIQQgAEEANgIEIAAgBCAIEK2AgIAAIgRFDXYgAEHKATYCHCAAIAg2AhQgACAENgIMQQAhEAyLAQsgACgCBCEEIABBADYCBCAAIAQgCRCtgICAACIERQ10IABBywE2AhwgACAJNgIUIAAgBDYCDEEAIRAMigELIAAoAgQhBCAAQQA2AgQgACAEIAoQrYCAgAAiBEUNciAAQc0BNgIcIAAgCjYCFCAAIAQ2AgxBACEQDIkBCwJAIAstAABBUGoiEEH/AXFBCk8NACAAIBA6ACogC0EBaiEKQbYBIRAMcAsgACgCBCEEIABBADYCBCAAIAQgCxCtgICAACIERQ1wIABBzwE2AhwgACALNgIUIAAgBDYCDEEAIRAMiAELIABBADYCHCAAIAQ2AhQgAEGQs4CAADYCECAAQQg2AgwgAEEANgIAQQAhEAyHAQsgAUEVRg0/IABBADYCHCAAIAw2AhQgAEHMjoCAADYCECAAQSA2AgxBACEQDIYBCyAAQYEEOwEoIAAoAgQhECAAQgA3AwAgACAQIAxBAWoiDBCrgICAACIQRQ04IABB0wE2AhwgACAMNgIUIAAgEDYCDEEAIRAMhQELIABBADYCAAtBACEQIABBADYCHCAAIAQ2AhQgAEHYm4CAADYCECAAQQg2AgwMgwELIAAoAgQhECAAQgA3AwAgACAQIAtBAWoiCxCrgICAACIQDQFBxgEhEAxpCyAAQQI6ACgMVQsgAEHVATYCHCAAIAs2AhQgACAQNgIMQQAhEAyAAQsgEEEVRg03IABBADYCHCAAIAQ2AhQgAEGkjICAADYCECAAQRA2AgxBACEQDH8LIAAtADRBAUcNNCAAIAQgAhC8gICAACIQRQ00IBBBFUcNNSAAQdwBNgIcIAAgBDYCFCAAQdWWgIAANgIQIABBFTYCDEEAIRAMfgtBACEQIABBADYCHCAAQa+LgIAANgIQIABBAjYCDCAAIBRBAWo2AhQMfQtBACEQDGMLQQIhEAxiC0ENIRAMYQtBDyEQDGALQSUhEAxfC0ETIRAMXgtBFSEQDF0LQRYhEAxcC0EXIRAMWwtBGCEQDFoLQRkhEAxZC0EaIRAMWAtBGyEQDFcLQRwhEAxWC0EdIRAMVQtBHyEQDFQLQSEhEAxTC0EjIRAMUgtBxgAhEAxRC0EuIRAMUAtBLyEQDE8LQTshEAxOC0E9IRAMTQtByAAhEAxMC0HJACEQDEsLQcsAIRAMSgtBzAAhEAxJC0HOACEQDEgLQdEAIRAMRwtB1QAhEAxGC0HYACEQDEULQdkAIRAMRAtB2wAhEAxDC0HkACEQDEILQeUAIRAMQQtB8QAhEAxAC0H0ACEQDD8LQY0BIRAMPgtBlwEhEAw9C0GpASEQDDwLQawBIRAMOwtBwAEhEAw6C0G5ASEQDDkLQa8BIRAMOAtBsQEhEAw3C0GyASEQDDYLQbQBIRAMNQtBtQEhEAw0C0G6ASEQDDMLQb0BIRAMMgtBvwEhEAwxC0HBASEQDDALIABBADYCHCAAIAQ2AhQgAEHpi4CAADYCECAAQR82AgxBACEQDEgLIABB2wE2AhwgACAENgIUIABB+paAgAA2AhAgAEEVNgIMQQAhEAxHCyAAQfgANgIcIAAgDDYCFCAAQcqYgIAANgIQIABBFTYCDEEAIRAMRgsgAEHRADYCHCAAIAU2AhQgAEGwl4CAADYCECAAQRU2AgxBACEQDEULIABB+QA2AhwgACABNgIUIAAgEDYCDEEAIRAMRAsgAEH4ADYCHCAAIAE2AhQgAEHKmICAADYCECAAQRU2AgxBACEQDEMLIABB5AA2AhwgACABNgIUIABB45eAgAA2AhAgAEEVNgIMQQAhEAxCCyAAQdcANgIcIAAgATYCFCAAQcmXgIAANgIQIABBFTYCDEEAIRAMQQsgAEEANgIcIAAgATYCFCAAQbmNgIAANgIQIABBGjYCDEEAIRAMQAsgAEHCADYCHCAAIAE2AhQgAEHjmICAADYCECAAQRU2AgxBACEQDD8LIABBADYCBCAAIA8gDxCxgICAACIERQ0BIABBOjYCHCAAIAQ2AgwgACAPQQFqNgIUQQAhEAw+CyAAKAIEIQQgAEEANgIEAkAgACAEIAEQsYCAgAAiBEUNACAAQTs2AhwgACAENgIMIAAgAUEBajYCFEEAIRAMPgsgAUEBaiEBDC0LIA9BAWohAQwtCyAAQQA2AhwgACAPNgIUIABB5JKAgAA2AhAgAEEENgIMQQAhEAw7CyAAQTY2AhwgACAENgIUIAAgAjYCDEEAIRAMOgsgAEEuNgIcIAAgDjYCFCAAIAQ2AgxBACEQDDkLIABB0AA2AhwgACABNgIUIABBkZiAgAA2AhAgAEEVNgIMQQAhEAw4CyANQQFqIQEMLAsgAEEVNgIcIAAgATYCFCAAQYKZgIAANgIQIABBFTYCDEEAIRAMNgsgAEEbNgIcIAAgATYCFCAAQZGXgIAANgIQIABBFTYCDEEAIRAMNQsgAEEPNgIcIAAgATYCFCAAQZGXgIAANgIQIABBFTYCDEEAIRAMNAsgAEELNgIcIAAgATYCFCAAQZGXgIAANgIQIABBFTYCDEEAIRAMMwsgAEEaNgIcIAAgATYCFCAAQYKZgIAANgIQIABBFTYCDEEAIRAMMgsgAEELNgIcIAAgATYCFCAAQYKZgIAANgIQIABBFTYCDEEAIRAMMQsgAEEKNgIcIAAgATYCFCAAQeSWgIAANgIQIABBFTYCDEEAIRAMMAsgAEEeNgIcIAAgATYCFCAAQfmXgIAANgIQIABBFTYCDEEAIRAMLwsgAEEANgIcIAAgEDYCFCAAQdqNgIAANgIQIABBFDYCDEEAIRAMLgsgAEEENgIcIAAgATYCFCAAQbCYgIAANgIQIABBFTYCDEEAIRAMLQsgAEEANgIAIAtBAWohCwtBuAEhEAwSCyAAQQA2AgAgEEEBaiEBQfUAIRAMEQsgASEBAkAgAC0AKUEFRw0AQeMAIRAMEQtB4gAhEAwQC0EAIRAgAEEANgIcIABB5JGAgAA2AhAgAEEHNgIMIAAgFEEBajYCFAwoCyAAQQA2AgAgF0EBaiEBQcAAIRAMDgtBASEBCyAAIAE6ACwgAEEANgIAIBdBAWohAQtBKCEQDAsLIAEhAQtBOCEQDAkLAkAgASIPIAJGDQADQAJAIA8tAABBgL6AgABqLQAAIgFBAUYNACABQQJHDQMgD0EBaiEBDAQLIA9BAWoiDyACRw0AC0E+IRAMIgtBPiEQDCELIABBADoALCAPIQEMAQtBCyEQDAYLQTohEAwFCyABQQFqIQFBLSEQDAQLIAAgAToALCAAQQA2AgAgFkEBaiEBQQwhEAwDCyAAQQA2AgAgF0EBaiEBQQohEAwCCyAAQQA2AgALIABBADoALCANIQFBCSEQDAALC0EAIRAgAEEANgIcIAAgCzYCFCAAQc2QgIAANgIQIABBCTYCDAwXC0EAIRAgAEEANgIcIAAgCjYCFCAAQemKgIAANgIQIABBCTYCDAwWC0EAIRAgAEEANgIcIAAgCTYCFCAAQbeQgIAANgIQIABBCTYCDAwVC0EAIRAgAEEANgIcIAAgCDYCFCAAQZyRgIAANgIQIABBCTYCDAwUC0EAIRAgAEEANgIcIAAgATYCFCAAQc2QgIAANgIQIABBCTYCDAwTC0EAIRAgAEEANgIcIAAgATYCFCAAQemKgIAANgIQIABBCTYCDAwSC0EAIRAgAEEANgIcIAAgATYCFCAAQbeQgIAANgIQIABBCTYCDAwRC0EAIRAgAEEANgIcIAAgATYCFCAAQZyRgIAANgIQIABBCTYCDAwQC0EAIRAgAEEANgIcIAAgATYCFCAAQZeVgIAANgIQIABBDzYCDAwPC0EAIRAgAEEANgIcIAAgATYCFCAAQZeVgIAANgIQIABBDzYCDAwOC0EAIRAgAEEANgIcIAAgATYCFCAAQcCSgIAANgIQIABBCzYCDAwNC0EAIRAgAEEANgIcIAAgATYCFCAAQZWJgIAANgIQIABBCzYCDAwMC0EAIRAgAEEANgIcIAAgATYCFCAAQeGPgIAANgIQIABBCjYCDAwLC0EAIRAgAEEANgIcIAAgATYCFCAAQfuPgIAANgIQIABBCjYCDAwKC0EAIRAgAEEANgIcIAAgATYCFCAAQfGZgIAANgIQIABBAjYCDAwJC0EAIRAgAEEANgIcIAAgATYCFCAAQcSUgIAANgIQIABBAjYCDAwIC0EAIRAgAEEANgIcIAAgATYCFCAAQfKVgIAANgIQIABBAjYCDAwHCyAAQQI2AhwgACABNgIUIABBnJqAgAA2AhAgAEEWNgIMQQAhEAwGC0EBIRAMBQtB1AAhECABIgQgAkYNBCADQQhqIAAgBCACQdjCgIAAQQoQxYCAgAAgAygCDCEEIAMoAggOAwEEAgALEMqAgIAAAAsgAEEANgIcIABBtZqAgAA2AhAgAEEXNgIMIAAgBEEBajYCFEEAIRAMAgsgAEEANgIcIAAgBDYCFCAAQcqagIAANgIQIABBCTYCDEEAIRAMAQsCQCABIgQgAkcNAEEiIRAMAQsgAEGJgICAADYCCCAAIAQ2AgRBISEQCyADQRBqJICAgIAAIBALrwEBAn8gASgCACEGAkACQCACIANGDQAgBCAGaiEEIAYgA2ogAmshByACIAZBf3MgBWoiBmohBQNAAkAgAi0AACAELQAARg0AQQIhBAwDCwJAIAYNAEEAIQQgBSECDAMLIAZBf2ohBiAEQQFqIQQgAkEBaiICIANHDQALIAchBiADIQILIABBATYCACABIAY2AgAgACACNgIEDwsgAUEANgIAIAAgBDYCACAAIAI2AgQLCgAgABDHgICAAAvyNgELfyOAgICAAEEQayIBJICAgIAAAkBBACgCoNCAgAANAEEAEMuAgIAAQYDUhIAAayICQdkASQ0AQQAhAwJAQQAoAuDTgIAAIgQNAEEAQn83AuzTgIAAQQBCgICEgICAwAA3AuTTgIAAQQAgAUEIakFwcUHYqtWqBXMiBDYC4NOAgABBAEEANgL004CAAEEAQQA2AsTTgIAAC0EAIAI2AszTgIAAQQBBgNSEgAA2AsjTgIAAQQBBgNSEgAA2ApjQgIAAQQAgBDYCrNCAgABBAEF/NgKo0ICAAANAIANBxNCAgABqIANBuNCAgABqIgQ2AgAgBCADQbDQgIAAaiIFNgIAIANBvNCAgABqIAU2AgAgA0HM0ICAAGogA0HA0ICAAGoiBTYCACAFIAQ2AgAgA0HU0ICAAGogA0HI0ICAAGoiBDYCACAEIAU2AgAgA0HQ0ICAAGogBDYCACADQSBqIgNBgAJHDQALQYDUhIAAQXhBgNSEgABrQQ9xQQBBgNSEgABBCGpBD3EbIgNqIgRBBGogAkFIaiIFIANrIgNBAXI2AgBBAEEAKALw04CAADYCpNCAgABBACADNgKU0ICAAEEAIAQ2AqDQgIAAQYDUhIAAIAVqQTg2AgQLAkACQAJAAkACQAJAAkACQAJAAkACQAJAIABB7AFLDQACQEEAKAKI0ICAACIGQRAgAEETakFwcSAAQQtJGyICQQN2IgR2IgNBA3FFDQACQAJAIANBAXEgBHJBAXMiBUEDdCIEQbDQgIAAaiIDIARBuNCAgABqKAIAIgQoAggiAkcNAEEAIAZBfiAFd3E2AojQgIAADAELIAMgAjYCCCACIAM2AgwLIARBCGohAyAEIAVBA3QiBUEDcjYCBCAEIAVqIgQgBCgCBEEBcjYCBAwMCyACQQAoApDQgIAAIgdNDQECQCADRQ0AAkACQCADIAR0QQIgBHQiA0EAIANrcnEiA0EAIANrcUF/aiIDIANBDHZBEHEiA3YiBEEFdkEIcSIFIANyIAQgBXYiA0ECdkEEcSIEciADIAR2IgNBAXZBAnEiBHIgAyAEdiIDQQF2QQFxIgRyIAMgBHZqIgRBA3QiA0Gw0ICAAGoiBSADQbjQgIAAaigCACIDKAIIIgBHDQBBACAGQX4gBHdxIgY2AojQgIAADAELIAUgADYCCCAAIAU2AgwLIAMgAkEDcjYCBCADIARBA3QiBGogBCACayIFNgIAIAMgAmoiACAFQQFyNgIEAkAgB0UNACAHQXhxQbDQgIAAaiECQQAoApzQgIAAIQQCQAJAIAZBASAHQQN2dCIIcQ0AQQAgBiAIcjYCiNCAgAAgAiEIDAELIAIoAgghCAsgCCAENgIMIAIgBDYCCCAEIAI2AgwgBCAINgIICyADQQhqIQNBACAANgKc0ICAAEEAIAU2ApDQgIAADAwLQQAoAozQgIAAIglFDQEgCUEAIAlrcUF/aiIDIANBDHZBEHEiA3YiBEEFdkEIcSIFIANyIAQgBXYiA0ECdkEEcSIEciADIAR2IgNBAXZBAnEiBHIgAyAEdiIDQQF2QQFxIgRyIAMgBHZqQQJ0QbjSgIAAaigCACIAKAIEQXhxIAJrIQQgACEFAkADQAJAIAUoAhAiAw0AIAVBFGooAgAiA0UNAgsgAygCBEF4cSACayIFIAQgBSAESSIFGyEEIAMgACAFGyEAIAMhBQwACwsgACgCGCEKAkAgACgCDCIIIABGDQAgACgCCCIDQQAoApjQgIAASRogCCADNgIIIAMgCDYCDAwLCwJAIABBFGoiBSgCACIDDQAgACgCECIDRQ0DIABBEGohBQsDQCAFIQsgAyIIQRRqIgUoAgAiAw0AIAhBEGohBSAIKAIQIgMNAAsgC0EANgIADAoLQX8hAiAAQb9/Sw0AIABBE2oiA0FwcSECQQAoAozQgIAAIgdFDQBBACELAkAgAkGAAkkNAEEfIQsgAkH///8HSw0AIANBCHYiAyADQYD+P2pBEHZBCHEiA3QiBCAEQYDgH2pBEHZBBHEiBHQiBSAFQYCAD2pBEHZBAnEiBXRBD3YgAyAEciAFcmsiA0EBdCACIANBFWp2QQFxckEcaiELC0EAIAJrIQQCQAJAAkACQCALQQJ0QbjSgIAAaigCACIFDQBBACEDQQAhCAwBC0EAIQMgAkEAQRkgC0EBdmsgC0EfRht0IQBBACEIA0ACQCAFKAIEQXhxIAJrIgYgBE8NACAGIQQgBSEIIAYNAEEAIQQgBSEIIAUhAwwDCyADIAVBFGooAgAiBiAGIAUgAEEddkEEcWpBEGooAgAiBUYbIAMgBhshAyAAQQF0IQAgBQ0ACwsCQCADIAhyDQBBACEIQQIgC3QiA0EAIANrciAHcSIDRQ0DIANBACADa3FBf2oiAyADQQx2QRBxIgN2IgVBBXZBCHEiACADciAFIAB2IgNBAnZBBHEiBXIgAyAFdiIDQQF2QQJxIgVyIAMgBXYiA0EBdkEBcSIFciADIAV2akECdEG40oCAAGooAgAhAwsgA0UNAQsDQCADKAIEQXhxIAJrIgYgBEkhAAJAIAMoAhAiBQ0AIANBFGooAgAhBQsgBiAEIAAbIQQgAyAIIAAbIQggBSEDIAUNAAsLIAhFDQAgBEEAKAKQ0ICAACACa08NACAIKAIYIQsCQCAIKAIMIgAgCEYNACAIKAIIIgNBACgCmNCAgABJGiAAIAM2AgggAyAANgIMDAkLAkAgCEEUaiIFKAIAIgMNACAIKAIQIgNFDQMgCEEQaiEFCwNAIAUhBiADIgBBFGoiBSgCACIDDQAgAEEQaiEFIAAoAhAiAw0ACyAGQQA2AgAMCAsCQEEAKAKQ0ICAACIDIAJJDQBBACgCnNCAgAAhBAJAAkAgAyACayIFQRBJDQAgBCACaiIAIAVBAXI2AgRBACAFNgKQ0ICAAEEAIAA2ApzQgIAAIAQgA2ogBTYCACAEIAJBA3I2AgQMAQsgBCADQQNyNgIEIAQgA2oiAyADKAIEQQFyNgIEQQBBADYCnNCAgABBAEEANgKQ0ICAAAsgBEEIaiEDDAoLAkBBACgClNCAgAAiACACTQ0AQQAoAqDQgIAAIgMgAmoiBCAAIAJrIgVBAXI2AgRBACAFNgKU0ICAAEEAIAQ2AqDQgIAAIAMgAkEDcjYCBCADQQhqIQMMCgsCQAJAQQAoAuDTgIAARQ0AQQAoAujTgIAAIQQMAQtBAEJ/NwLs04CAAEEAQoCAhICAgMAANwLk04CAAEEAIAFBDGpBcHFB2KrVqgVzNgLg04CAAEEAQQA2AvTTgIAAQQBBADYCxNOAgABBgIAEIQQLQQAhAwJAIAQgAkHHAGoiB2oiBkEAIARrIgtxIgggAksNAEEAQTA2AvjTgIAADAoLAkBBACgCwNOAgAAiA0UNAAJAQQAoArjTgIAAIgQgCGoiBSAETQ0AIAUgA00NAQtBACEDQQBBMDYC+NOAgAAMCgtBAC0AxNOAgABBBHENBAJAAkACQEEAKAKg0ICAACIERQ0AQcjTgIAAIQMDQAJAIAMoAgAiBSAESw0AIAUgAygCBGogBEsNAwsgAygCCCIDDQALC0EAEMuAgIAAIgBBf0YNBSAIIQYCQEEAKALk04CAACIDQX9qIgQgAHFFDQAgCCAAayAEIABqQQAgA2txaiEGCyAGIAJNDQUgBkH+////B0sNBQJAQQAoAsDTgIAAIgNFDQBBACgCuNOAgAAiBCAGaiIFIARNDQYgBSADSw0GCyAGEMuAgIAAIgMgAEcNAQwHCyAGIABrIAtxIgZB/v///wdLDQQgBhDLgICAACIAIAMoAgAgAygCBGpGDQMgACEDCwJAIANBf0YNACACQcgAaiAGTQ0AAkAgByAGa0EAKALo04CAACIEakEAIARrcSIEQf7///8HTQ0AIAMhAAwHCwJAIAQQy4CAgABBf0YNACAEIAZqIQYgAyEADAcLQQAgBmsQy4CAgAAaDAQLIAMhACADQX9HDQUMAwtBACEIDAcLQQAhAAwFCyAAQX9HDQILQQBBACgCxNOAgABBBHI2AsTTgIAACyAIQf7///8HSw0BIAgQy4CAgAAhAEEAEMuAgIAAIQMgAEF/Rg0BIANBf0YNASAAIANPDQEgAyAAayIGIAJBOGpNDQELQQBBACgCuNOAgAAgBmoiAzYCuNOAgAACQCADQQAoArzTgIAATQ0AQQAgAzYCvNOAgAALAkACQAJAAkBBACgCoNCAgAAiBEUNAEHI04CAACEDA0AgACADKAIAIgUgAygCBCIIakYNAiADKAIIIgMNAAwDCwsCQAJAQQAoApjQgIAAIgNFDQAgACADTw0BC0EAIAA2ApjQgIAAC0EAIQNBACAGNgLM04CAAEEAIAA2AsjTgIAAQQBBfzYCqNCAgABBAEEAKALg04CAADYCrNCAgABBAEEANgLU04CAAANAIANBxNCAgABqIANBuNCAgABqIgQ2AgAgBCADQbDQgIAAaiIFNgIAIANBvNCAgABqIAU2AgAgA0HM0ICAAGogA0HA0ICAAGoiBTYCACAFIAQ2AgAgA0HU0ICAAGogA0HI0ICAAGoiBDYCACAEIAU2AgAgA0HQ0ICAAGogBDYCACADQSBqIgNBgAJHDQALIABBeCAAa0EPcUEAIABBCGpBD3EbIgNqIgQgBkFIaiIFIANrIgNBAXI2AgRBAEEAKALw04CAADYCpNCAgABBACADNgKU0ICAAEEAIAQ2AqDQgIAAIAAgBWpBODYCBAwCCyADLQAMQQhxDQAgBCAFSQ0AIAQgAE8NACAEQXggBGtBD3FBACAEQQhqQQ9xGyIFaiIAQQAoApTQgIAAIAZqIgsgBWsiBUEBcjYCBCADIAggBmo2AgRBAEEAKALw04CAADYCpNCAgABBACAFNgKU0ICAAEEAIAA2AqDQgIAAIAQgC2pBODYCBAwBCwJAIABBACgCmNCAgAAiCE8NAEEAIAA2ApjQgIAAIAAhCAsgACAGaiEFQcjTgIAAIQMCQAJAAkACQAJAAkACQANAIAMoAgAgBUYNASADKAIIIgMNAAwCCwsgAy0ADEEIcUUNAQtByNOAgAAhAwNAAkAgAygCACIFIARLDQAgBSADKAIEaiIFIARLDQMLIAMoAgghAwwACwsgAyAANgIAIAMgAygCBCAGajYCBCAAQXggAGtBD3FBACAAQQhqQQ9xG2oiCyACQQNyNgIEIAVBeCAFa0EPcUEAIAVBCGpBD3EbaiIGIAsgAmoiAmshAwJAIAYgBEcNAEEAIAI2AqDQgIAAQQBBACgClNCAgAAgA2oiAzYClNCAgAAgAiADQQFyNgIEDAMLAkAgBkEAKAKc0ICAAEcNAEEAIAI2ApzQgIAAQQBBACgCkNCAgAAgA2oiAzYCkNCAgAAgAiADQQFyNgIEIAIgA2ogAzYCAAwDCwJAIAYoAgQiBEEDcUEBRw0AIARBeHEhBwJAAkAgBEH/AUsNACAGKAIIIgUgBEEDdiIIQQN0QbDQgIAAaiIARhoCQCAGKAIMIgQgBUcNAEEAQQAoAojQgIAAQX4gCHdxNgKI0ICAAAwCCyAEIABGGiAEIAU2AgggBSAENgIMDAELIAYoAhghCQJAAkAgBigCDCIAIAZGDQAgBigCCCIEIAhJGiAAIAQ2AgggBCAANgIMDAELAkAgBkEUaiIEKAIAIgUNACAGQRBqIgQoAgAiBQ0AQQAhAAwBCwNAIAQhCCAFIgBBFGoiBCgCACIFDQAgAEEQaiEEIAAoAhAiBQ0ACyAIQQA2AgALIAlFDQACQAJAIAYgBigCHCIFQQJ0QbjSgIAAaiIEKAIARw0AIAQgADYCACAADQFBAEEAKAKM0ICAAEF+IAV3cTYCjNCAgAAMAgsgCUEQQRQgCSgCECAGRhtqIAA2AgAgAEUNAQsgACAJNgIYAkAgBigCECIERQ0AIAAgBDYCECAEIAA2AhgLIAYoAhQiBEUNACAAQRRqIAQ2AgAgBCAANgIYCyAHIANqIQMgBiAHaiIGKAIEIQQLIAYgBEF+cTYCBCACIANqIAM2AgAgAiADQQFyNgIEAkAgA0H/AUsNACADQXhxQbDQgIAAaiEEAkACQEEAKAKI0ICAACIFQQEgA0EDdnQiA3ENAEEAIAUgA3I2AojQgIAAIAQhAwwBCyAEKAIIIQMLIAMgAjYCDCAEIAI2AgggAiAENgIMIAIgAzYCCAwDC0EfIQQCQCADQf///wdLDQAgA0EIdiIEIARBgP4/akEQdkEIcSIEdCIFIAVBgOAfakEQdkEEcSIFdCIAIABBgIAPakEQdkECcSIAdEEPdiAEIAVyIAByayIEQQF0IAMgBEEVanZBAXFyQRxqIQQLIAIgBDYCHCACQgA3AhAgBEECdEG40oCAAGohBQJAQQAoAozQgIAAIgBBASAEdCIIcQ0AIAUgAjYCAEEAIAAgCHI2AozQgIAAIAIgBTYCGCACIAI2AgggAiACNgIMDAMLIANBAEEZIARBAXZrIARBH0YbdCEEIAUoAgAhAANAIAAiBSgCBEF4cSADRg0CIARBHXYhACAEQQF0IQQgBSAAQQRxakEQaiIIKAIAIgANAAsgCCACNgIAIAIgBTYCGCACIAI2AgwgAiACNgIIDAILIABBeCAAa0EPcUEAIABBCGpBD3EbIgNqIgsgBkFIaiIIIANrIgNBAXI2AgQgACAIakE4NgIEIAQgBUE3IAVrQQ9xQQAgBUFJakEPcRtqQUFqIgggCCAEQRBqSRsiCEEjNgIEQQBBACgC8NOAgAA2AqTQgIAAQQAgAzYClNCAgABBACALNgKg0ICAACAIQRBqQQApAtDTgIAANwIAIAhBACkCyNOAgAA3AghBACAIQQhqNgLQ04CAAEEAIAY2AszTgIAAQQAgADYCyNOAgABBAEEANgLU04CAACAIQSRqIQMDQCADQQc2AgAgA0EEaiIDIAVJDQALIAggBEYNAyAIIAgoAgRBfnE2AgQgCCAIIARrIgA2AgAgBCAAQQFyNgIEAkAgAEH/AUsNACAAQXhxQbDQgIAAaiEDAkACQEEAKAKI0ICAACIFQQEgAEEDdnQiAHENAEEAIAUgAHI2AojQgIAAIAMhBQwBCyADKAIIIQULIAUgBDYCDCADIAQ2AgggBCADNgIMIAQgBTYCCAwEC0EfIQMCQCAAQf///wdLDQAgAEEIdiIDIANBgP4/akEQdkEIcSIDdCIFIAVBgOAfakEQdkEEcSIFdCIIIAhBgIAPakEQdkECcSIIdEEPdiADIAVyIAhyayIDQQF0IAAgA0EVanZBAXFyQRxqIQMLIAQgAzYCHCAEQgA3AhAgA0ECdEG40oCAAGohBQJAQQAoAozQgIAAIghBASADdCIGcQ0AIAUgBDYCAEEAIAggBnI2AozQgIAAIAQgBTYCGCAEIAQ2AgggBCAENgIMDAQLIABBAEEZIANBAXZrIANBH0YbdCEDIAUoAgAhCANAIAgiBSgCBEF4cSAARg0DIANBHXYhCCADQQF0IQMgBSAIQQRxakEQaiIGKAIAIggNAAsgBiAENgIAIAQgBTYCGCAEIAQ2AgwgBCAENgIIDAMLIAUoAggiAyACNgIMIAUgAjYCCCACQQA2AhggAiAFNgIMIAIgAzYCCAsgC0EIaiEDDAULIAUoAggiAyAENgIMIAUgBDYCCCAEQQA2AhggBCAFNgIMIAQgAzYCCAtBACgClNCAgAAiAyACTQ0AQQAoAqDQgIAAIgQgAmoiBSADIAJrIgNBAXI2AgRBACADNgKU0ICAAEEAIAU2AqDQgIAAIAQgAkEDcjYCBCAEQQhqIQMMAwtBACEDQQBBMDYC+NOAgAAMAgsCQCALRQ0AAkACQCAIIAgoAhwiBUECdEG40oCAAGoiAygCAEcNACADIAA2AgAgAA0BQQAgB0F+IAV3cSIHNgKM0ICAAAwCCyALQRBBFCALKAIQIAhGG2ogADYCACAARQ0BCyAAIAs2AhgCQCAIKAIQIgNFDQAgACADNgIQIAMgADYCGAsgCEEUaigCACIDRQ0AIABBFGogAzYCACADIAA2AhgLAkACQCAEQQ9LDQAgCCAEIAJqIgNBA3I2AgQgCCADaiIDIAMoAgRBAXI2AgQMAQsgCCACaiIAIARBAXI2AgQgCCACQQNyNgIEIAAgBGogBDYCAAJAIARB/wFLDQAgBEF4cUGw0ICAAGohAwJAAkBBACgCiNCAgAAiBUEBIARBA3Z0IgRxDQBBACAFIARyNgKI0ICAACADIQQMAQsgAygCCCEECyAEIAA2AgwgAyAANgIIIAAgAzYCDCAAIAQ2AggMAQtBHyEDAkAgBEH///8HSw0AIARBCHYiAyADQYD+P2pBEHZBCHEiA3QiBSAFQYDgH2pBEHZBBHEiBXQiAiACQYCAD2pBEHZBAnEiAnRBD3YgAyAFciACcmsiA0EBdCAEIANBFWp2QQFxckEcaiEDCyAAIAM2AhwgAEIANwIQIANBAnRBuNKAgABqIQUCQCAHQQEgA3QiAnENACAFIAA2AgBBACAHIAJyNgKM0ICAACAAIAU2AhggACAANgIIIAAgADYCDAwBCyAEQQBBGSADQQF2ayADQR9GG3QhAyAFKAIAIQICQANAIAIiBSgCBEF4cSAERg0BIANBHXYhAiADQQF0IQMgBSACQQRxakEQaiIGKAIAIgINAAsgBiAANgIAIAAgBTYCGCAAIAA2AgwgACAANgIIDAELIAUoAggiAyAANgIMIAUgADYCCCAAQQA2AhggACAFNgIMIAAgAzYCCAsgCEEIaiEDDAELAkAgCkUNAAJAAkAgACAAKAIcIgVBAnRBuNKAgABqIgMoAgBHDQAgAyAINgIAIAgNAUEAIAlBfiAFd3E2AozQgIAADAILIApBEEEUIAooAhAgAEYbaiAINgIAIAhFDQELIAggCjYCGAJAIAAoAhAiA0UNACAIIAM2AhAgAyAINgIYCyAAQRRqKAIAIgNFDQAgCEEUaiADNgIAIAMgCDYCGAsCQAJAIARBD0sNACAAIAQgAmoiA0EDcjYCBCAAIANqIgMgAygCBEEBcjYCBAwBCyAAIAJqIgUgBEEBcjYCBCAAIAJBA3I2AgQgBSAEaiAENgIAAkAgB0UNACAHQXhxQbDQgIAAaiECQQAoApzQgIAAIQMCQAJAQQEgB0EDdnQiCCAGcQ0AQQAgCCAGcjYCiNCAgAAgAiEIDAELIAIoAgghCAsgCCADNgIMIAIgAzYCCCADIAI2AgwgAyAINgIIC0EAIAU2ApzQgIAAQQAgBDYCkNCAgAALIABBCGohAwsgAUEQaiSAgICAACADCwoAIAAQyYCAgAAL4g0BB38CQCAARQ0AIABBeGoiASAAQXxqKAIAIgJBeHEiAGohAwJAIAJBAXENACACQQNxRQ0BIAEgASgCACICayIBQQAoApjQgIAAIgRJDQEgAiAAaiEAAkAgAUEAKAKc0ICAAEYNAAJAIAJB/wFLDQAgASgCCCIEIAJBA3YiBUEDdEGw0ICAAGoiBkYaAkAgASgCDCICIARHDQBBAEEAKAKI0ICAAEF+IAV3cTYCiNCAgAAMAwsgAiAGRhogAiAENgIIIAQgAjYCDAwCCyABKAIYIQcCQAJAIAEoAgwiBiABRg0AIAEoAggiAiAESRogBiACNgIIIAIgBjYCDAwBCwJAIAFBFGoiAigCACIEDQAgAUEQaiICKAIAIgQNAEEAIQYMAQsDQCACIQUgBCIGQRRqIgIoAgAiBA0AIAZBEGohAiAGKAIQIgQNAAsgBUEANgIACyAHRQ0BAkACQCABIAEoAhwiBEECdEG40oCAAGoiAigCAEcNACACIAY2AgAgBg0BQQBBACgCjNCAgABBfiAEd3E2AozQgIAADAMLIAdBEEEUIAcoAhAgAUYbaiAGNgIAIAZFDQILIAYgBzYCGAJAIAEoAhAiAkUNACAGIAI2AhAgAiAGNgIYCyABKAIUIgJFDQEgBkEUaiACNgIAIAIgBjYCGAwBCyADKAIEIgJBA3FBA0cNACADIAJBfnE2AgRBACAANgKQ0ICAACABIABqIAA2AgAgASAAQQFyNgIEDwsgASADTw0AIAMoAgQiAkEBcUUNAAJAAkAgAkECcQ0AAkAgA0EAKAKg0ICAAEcNAEEAIAE2AqDQgIAAQQBBACgClNCAgAAgAGoiADYClNCAgAAgASAAQQFyNgIEIAFBACgCnNCAgABHDQNBAEEANgKQ0ICAAEEAQQA2ApzQgIAADwsCQCADQQAoApzQgIAARw0AQQAgATYCnNCAgABBAEEAKAKQ0ICAACAAaiIANgKQ0ICAACABIABBAXI2AgQgASAAaiAANgIADwsgAkF4cSAAaiEAAkACQCACQf8BSw0AIAMoAggiBCACQQN2IgVBA3RBsNCAgABqIgZGGgJAIAMoAgwiAiAERw0AQQBBACgCiNCAgABBfiAFd3E2AojQgIAADAILIAIgBkYaIAIgBDYCCCAEIAI2AgwMAQsgAygCGCEHAkACQCADKAIMIgYgA0YNACADKAIIIgJBACgCmNCAgABJGiAGIAI2AgggAiAGNgIMDAELAkAgA0EUaiICKAIAIgQNACADQRBqIgIoAgAiBA0AQQAhBgwBCwNAIAIhBSAEIgZBFGoiAigCACIEDQAgBkEQaiECIAYoAhAiBA0ACyAFQQA2AgALIAdFDQACQAJAIAMgAygCHCIEQQJ0QbjSgIAAaiICKAIARw0AIAIgBjYCACAGDQFBAEEAKAKM0ICAAEF+IAR3cTYCjNCAgAAMAgsgB0EQQRQgBygCECADRhtqIAY2AgAgBkUNAQsgBiAHNgIYAkAgAygCECICRQ0AIAYgAjYCECACIAY2AhgLIAMoAhQiAkUNACAGQRRqIAI2AgAgAiAGNgIYCyABIABqIAA2AgAgASAAQQFyNgIEIAFBACgCnNCAgABHDQFBACAANgKQ0ICAAA8LIAMgAkF+cTYCBCABIABqIAA2AgAgASAAQQFyNgIECwJAIABB/wFLDQAgAEF4cUGw0ICAAGohAgJAAkBBACgCiNCAgAAiBEEBIABBA3Z0IgBxDQBBACAEIAByNgKI0ICAACACIQAMAQsgAigCCCEACyAAIAE2AgwgAiABNgIIIAEgAjYCDCABIAA2AggPC0EfIQICQCAAQf///wdLDQAgAEEIdiICIAJBgP4/akEQdkEIcSICdCIEIARBgOAfakEQdkEEcSIEdCIGIAZBgIAPakEQdkECcSIGdEEPdiACIARyIAZyayICQQF0IAAgAkEVanZBAXFyQRxqIQILIAEgAjYCHCABQgA3AhAgAkECdEG40oCAAGohBAJAAkBBACgCjNCAgAAiBkEBIAJ0IgNxDQAgBCABNgIAQQAgBiADcjYCjNCAgAAgASAENgIYIAEgATYCCCABIAE2AgwMAQsgAEEAQRkgAkEBdmsgAkEfRht0IQIgBCgCACEGAkADQCAGIgQoAgRBeHEgAEYNASACQR12IQYgAkEBdCECIAQgBkEEcWpBEGoiAygCACIGDQALIAMgATYCACABIAQ2AhggASABNgIMIAEgATYCCAwBCyAEKAIIIgAgATYCDCAEIAE2AgggAUEANgIYIAEgBDYCDCABIAA2AggLQQBBACgCqNCAgABBf2oiAUF/IAEbNgKo0ICAAAsLBAAAAAtOAAJAIAANAD8AQRB0DwsCQCAAQf//A3ENACAAQX9MDQACQCAAQRB2QAAiAEF/Rw0AQQBBMDYC+NOAgABBfw8LIABBEHQPCxDKgICAAAAL8gICA38BfgJAIAJFDQAgACABOgAAIAIgAGoiA0F/aiABOgAAIAJBA0kNACAAIAE6AAIgACABOgABIANBfWogAToAACADQX5qIAE6AAAgAkEHSQ0AIAAgAToAAyADQXxqIAE6AAAgAkEJSQ0AIABBACAAa0EDcSIEaiIDIAFB/wFxQYGChAhsIgE2AgAgAyACIARrQXxxIgRqIgJBfGogATYCACAEQQlJDQAgAyABNgIIIAMgATYCBCACQXhqIAE2AgAgAkF0aiABNgIAIARBGUkNACADIAE2AhggAyABNgIUIAMgATYCECADIAE2AgwgAkFwaiABNgIAIAJBbGogATYCACACQWhqIAE2AgAgAkFkaiABNgIAIAQgA0EEcUEYciIFayICQSBJDQAgAa1CgYCAgBB+IQYgAyAFaiEBA0AgASAGNwMYIAEgBjcDECABIAY3AwggASAGNwMAIAFBIGohASACQWBqIgJBH0sNAAsLIAALC45IAQBBgAgLhkgBAAAAAgAAAAMAAAAAAAAAAAAAAAQAAAAFAAAAAAAAAAAAAAAGAAAABwAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEludmFsaWQgY2hhciBpbiB1cmwgcXVlcnkAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9ib2R5AENvbnRlbnQtTGVuZ3RoIG92ZXJmbG93AENodW5rIHNpemUgb3ZlcmZsb3cAUmVzcG9uc2Ugb3ZlcmZsb3cASW52YWxpZCBtZXRob2QgZm9yIEhUVFAveC54IHJlcXVlc3QASW52YWxpZCBtZXRob2QgZm9yIFJUU1AveC54IHJlcXVlc3QARXhwZWN0ZWQgU09VUkNFIG1ldGhvZCBmb3IgSUNFL3gueCByZXF1ZXN0AEludmFsaWQgY2hhciBpbiB1cmwgZnJhZ21lbnQgc3RhcnQARXhwZWN0ZWQgZG90AFNwYW4gY2FsbGJhY2sgZXJyb3IgaW4gb25fc3RhdHVzAEludmFsaWQgcmVzcG9uc2Ugc3RhdHVzAEludmFsaWQgY2hhcmFjdGVyIGluIGNodW5rIGV4dGVuc2lvbnMAVXNlciBjYWxsYmFjayBlcnJvcgBgb25fcmVzZXRgIGNhbGxiYWNrIGVycm9yAGBvbl9jaHVua19oZWFkZXJgIGNhbGxiYWNrIGVycm9yAGBvbl9tZXNzYWdlX2JlZ2luYCBjYWxsYmFjayBlcnJvcgBgb25fY2h1bmtfZXh0ZW5zaW9uX3ZhbHVlYCBjYWxsYmFjayBlcnJvcgBgb25fc3RhdHVzX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fdmVyc2lvbl9jb21wbGV0ZWAgY2FsbGJhY2sgZXJyb3IAYG9uX3VybF9jb21wbGV0ZWAgY2FsbGJhY2sgZXJyb3IAYG9uX2NodW5rX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25faGVhZGVyX3ZhbHVlX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fbWVzc2FnZV9jb21wbGV0ZWAgY2FsbGJhY2sgZXJyb3IAYG9uX21ldGhvZF9jb21wbGV0ZWAgY2FsbGJhY2sgZXJyb3IAYG9uX2hlYWRlcl9maWVsZF9jb21wbGV0ZWAgY2FsbGJhY2sgZXJyb3IAYG9uX2NodW5rX2V4dGVuc2lvbl9uYW1lYCBjYWxsYmFjayBlcnJvcgBVbmV4cGVjdGVkIGNoYXIgaW4gdXJsIHNlcnZlcgBJbnZhbGlkIGhlYWRlciB2YWx1ZSBjaGFyAEludmFsaWQgaGVhZGVyIGZpZWxkIGNoYXIAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl92ZXJzaW9uAEludmFsaWQgbWlub3IgdmVyc2lvbgBJbnZhbGlkIG1ham9yIHZlcnNpb24ARXhwZWN0ZWQgc3BhY2UgYWZ0ZXIgdmVyc2lvbgBFeHBlY3RlZCBDUkxGIGFmdGVyIHZlcnNpb24ASW52YWxpZCBIVFRQIHZlcnNpb24ASW52YWxpZCBoZWFkZXIgdG9rZW4AU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl91cmwASW52YWxpZCBjaGFyYWN0ZXJzIGluIHVybABVbmV4cGVjdGVkIHN0YXJ0IGNoYXIgaW4gdXJsAERvdWJsZSBAIGluIHVybABFbXB0eSBDb250ZW50LUxlbmd0aABJbnZhbGlkIGNoYXJhY3RlciBpbiBDb250ZW50LUxlbmd0aABEdXBsaWNhdGUgQ29udGVudC1MZW5ndGgASW52YWxpZCBjaGFyIGluIHVybCBwYXRoAENvbnRlbnQtTGVuZ3RoIGNhbid0IGJlIHByZXNlbnQgd2l0aCBUcmFuc2Zlci1FbmNvZGluZwBJbnZhbGlkIGNoYXJhY3RlciBpbiBjaHVuayBzaXplAFNwYW4gY2FsbGJhY2sgZXJyb3IgaW4gb25faGVhZGVyX3ZhbHVlAFNwYW4gY2FsbGJhY2sgZXJyb3IgaW4gb25fY2h1bmtfZXh0ZW5zaW9uX3ZhbHVlAEludmFsaWQgY2hhcmFjdGVyIGluIGNodW5rIGV4dGVuc2lvbnMgdmFsdWUATWlzc2luZyBleHBlY3RlZCBMRiBhZnRlciBoZWFkZXIgdmFsdWUASW52YWxpZCBgVHJhbnNmZXItRW5jb2RpbmdgIGhlYWRlciB2YWx1ZQBJbnZhbGlkIGNoYXJhY3RlciBpbiBjaHVuayBleHRlbnNpb25zIHF1b3RlIHZhbHVlAEludmFsaWQgY2hhcmFjdGVyIGluIGNodW5rIGV4dGVuc2lvbnMgcXVvdGVkIHZhbHVlAFBhdXNlZCBieSBvbl9oZWFkZXJzX2NvbXBsZXRlAEludmFsaWQgRU9GIHN0YXRlAG9uX3Jlc2V0IHBhdXNlAG9uX2NodW5rX2hlYWRlciBwYXVzZQBvbl9tZXNzYWdlX2JlZ2luIHBhdXNlAG9uX2NodW5rX2V4dGVuc2lvbl92YWx1ZSBwYXVzZQBvbl9zdGF0dXNfY29tcGxldGUgcGF1c2UAb25fdmVyc2lvbl9jb21wbGV0ZSBwYXVzZQBvbl91cmxfY29tcGxldGUgcGF1c2UAb25fY2h1bmtfY29tcGxldGUgcGF1c2UAb25faGVhZGVyX3ZhbHVlX2NvbXBsZXRlIHBhdXNlAG9uX21lc3NhZ2VfY29tcGxldGUgcGF1c2UAb25fbWV0aG9kX2NvbXBsZXRlIHBhdXNlAG9uX2hlYWRlcl9maWVsZF9jb21wbGV0ZSBwYXVzZQBvbl9jaHVua19leHRlbnNpb25fbmFtZSBwYXVzZQBVbmV4cGVjdGVkIHNwYWNlIGFmdGVyIHN0YXJ0IGxpbmUAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9jaHVua19leHRlbnNpb25fbmFtZQBJbnZhbGlkIGNoYXJhY3RlciBpbiBjaHVuayBleHRlbnNpb25zIG5hbWUAUGF1c2Ugb24gQ09OTkVDVC9VcGdyYWRlAFBhdXNlIG9uIFBSSS9VcGdyYWRlAEV4cGVjdGVkIEhUVFAvMiBDb25uZWN0aW9uIFByZWZhY2UAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9tZXRob2QARXhwZWN0ZWQgc3BhY2UgYWZ0ZXIgbWV0aG9kAFNwYW4gY2FsbGJhY2sgZXJyb3IgaW4gb25faGVhZGVyX2ZpZWxkAFBhdXNlZABJbnZhbGlkIHdvcmQgZW5jb3VudGVyZWQASW52YWxpZCBtZXRob2QgZW5jb3VudGVyZWQAVW5leHBlY3RlZCBjaGFyIGluIHVybCBzY2hlbWEAUmVxdWVzdCBoYXMgaW52YWxpZCBgVHJhbnNmZXItRW5jb2RpbmdgAFNXSVRDSF9QUk9YWQBVU0VfUFJPWFkATUtBQ1RJVklUWQBVTlBST0NFU1NBQkxFX0VOVElUWQBDT1BZAE1PVkVEX1BFUk1BTkVOVExZAFRPT19FQVJMWQBOT1RJRlkARkFJTEVEX0RFUEVOREVOQ1kAQkFEX0dBVEVXQVkAUExBWQBQVVQAQ0hFQ0tPVVQAR0FURVdBWV9USU1FT1VUAFJFUVVFU1RfVElNRU9VVABORVRXT1JLX0NPTk5FQ1RfVElNRU9VVABDT05ORUNUSU9OX1RJTUVPVVQATE9HSU5fVElNRU9VVABORVRXT1JLX1JFQURfVElNRU9VVABQT1NUAE1JU0RJUkVDVEVEX1JFUVVFU1QAQ0xJRU5UX0NMT1NFRF9SRVFVRVNUAENMSUVOVF9DTE9TRURfTE9BRF9CQUxBTkNFRF9SRVFVRVNUAEJBRF9SRVFVRVNUAEhUVFBfUkVRVUVTVF9TRU5UX1RPX0hUVFBTX1BPUlQAUkVQT1JUAElNX0FfVEVBUE9UAFJFU0VUX0NPTlRFTlQATk9fQ09OVEVOVABQQVJUSUFMX0NPTlRFTlQASFBFX0lOVkFMSURfQ09OU1RBTlQASFBFX0NCX1JFU0VUAEdFVABIUEVfU1RSSUNUAENPTkZMSUNUAFRFTVBPUkFSWV9SRURJUkVDVABQRVJNQU5FTlRfUkVESVJFQ1QAQ09OTkVDVABNVUxUSV9TVEFUVVMASFBFX0lOVkFMSURfU1RBVFVTAFRPT19NQU5ZX1JFUVVFU1RTAEVBUkxZX0hJTlRTAFVOQVZBSUxBQkxFX0ZPUl9MRUdBTF9SRUFTT05TAE9QVElPTlMAU1dJVENISU5HX1BST1RPQ09MUwBWQVJJQU5UX0FMU09fTkVHT1RJQVRFUwBNVUxUSVBMRV9DSE9JQ0VTAElOVEVSTkFMX1NFUlZFUl9FUlJPUgBXRUJfU0VSVkVSX1VOS05PV05fRVJST1IAUkFJTEdVTl9FUlJPUgBJREVOVElUWV9QUk9WSURFUl9BVVRIRU5USUNBVElPTl9FUlJPUgBTU0xfQ0VSVElGSUNBVEVfRVJST1IASU5WQUxJRF9YX0ZPUldBUkRFRF9GT1IAU0VUX1BBUkFNRVRFUgBHRVRfUEFSQU1FVEVSAEhQRV9VU0VSAFNFRV9PVEhFUgBIUEVfQ0JfQ0hVTktfSEVBREVSAE1LQ0FMRU5EQVIAU0VUVVAAV0VCX1NFUlZFUl9JU19ET1dOAFRFQVJET1dOAEhQRV9DTE9TRURfQ09OTkVDVElPTgBIRVVSSVNUSUNfRVhQSVJBVElPTgBESVNDT05ORUNURURfT1BFUkFUSU9OAE5PTl9BVVRIT1JJVEFUSVZFX0lORk9STUFUSU9OAEhQRV9JTlZBTElEX1ZFUlNJT04ASFBFX0NCX01FU1NBR0VfQkVHSU4AU0lURV9JU19GUk9aRU4ASFBFX0lOVkFMSURfSEVBREVSX1RPS0VOAElOVkFMSURfVE9LRU4ARk9SQklEREVOAEVOSEFOQ0VfWU9VUl9DQUxNAEhQRV9JTlZBTElEX1VSTABCTE9DS0VEX0JZX1BBUkVOVEFMX0NPTlRST0wATUtDT0wAQUNMAEhQRV9JTlRFUk5BTABSRVFVRVNUX0hFQURFUl9GSUVMRFNfVE9PX0xBUkdFX1VOT0ZGSUNJQUwASFBFX09LAFVOTElOSwBVTkxPQ0sAUFJJAFJFVFJZX1dJVEgASFBFX0lOVkFMSURfQ09OVEVOVF9MRU5HVEgASFBFX1VORVhQRUNURURfQ09OVEVOVF9MRU5HVEgARkxVU0gAUFJPUFBBVENIAE0tU0VBUkNIAFVSSV9UT09fTE9ORwBQUk9DRVNTSU5HAE1JU0NFTExBTkVPVVNfUEVSU0lTVEVOVF9XQVJOSU5HAE1JU0NFTExBTkVPVVNfV0FSTklORwBIUEVfSU5WQUxJRF9UUkFOU0ZFUl9FTkNPRElORwBFeHBlY3RlZCBDUkxGAEhQRV9JTlZBTElEX0NIVU5LX1NJWkUATU9WRQBDT05USU5VRQBIUEVfQ0JfU1RBVFVTX0NPTVBMRVRFAEhQRV9DQl9IRUFERVJTX0NPTVBMRVRFAEhQRV9DQl9WRVJTSU9OX0NPTVBMRVRFAEhQRV9DQl9VUkxfQ09NUExFVEUASFBFX0NCX0NIVU5LX0NPTVBMRVRFAEhQRV9DQl9IRUFERVJfVkFMVUVfQ09NUExFVEUASFBFX0NCX0NIVU5LX0VYVEVOU0lPTl9WQUxVRV9DT01QTEVURQBIUEVfQ0JfQ0hVTktfRVhURU5TSU9OX05BTUVfQ09NUExFVEUASFBFX0NCX01FU1NBR0VfQ09NUExFVEUASFBFX0NCX01FVEhPRF9DT01QTEVURQBIUEVfQ0JfSEVBREVSX0ZJRUxEX0NPTVBMRVRFAERFTEVURQBIUEVfSU5WQUxJRF9FT0ZfU1RBVEUASU5WQUxJRF9TU0xfQ0VSVElGSUNBVEUAUEFVU0UATk9fUkVTUE9OU0UAVU5TVVBQT1JURURfTUVESUFfVFlQRQBHT05FAE5PVF9BQ0NFUFRBQkxFAFNFUlZJQ0VfVU5BVkFJTEFCTEUAUkFOR0VfTk9UX1NBVElTRklBQkxFAE9SSUdJTl9JU19VTlJFQUNIQUJMRQBSRVNQT05TRV9JU19TVEFMRQBQVVJHRQBNRVJHRQBSRVFVRVNUX0hFQURFUl9GSUVMRFNfVE9PX0xBUkdFAFJFUVVFU1RfSEVBREVSX1RPT19MQVJHRQBQQVlMT0FEX1RPT19MQVJHRQBJTlNVRkZJQ0lFTlRfU1RPUkFHRQBIUEVfUEFVU0VEX1VQR1JBREUASFBFX1BBVVNFRF9IMl9VUEdSQURFAFNPVVJDRQBBTk5PVU5DRQBUUkFDRQBIUEVfVU5FWFBFQ1RFRF9TUEFDRQBERVNDUklCRQBVTlNVQlNDUklCRQBSRUNPUkQASFBFX0lOVkFMSURfTUVUSE9EAE5PVF9GT1VORABQUk9QRklORABVTkJJTkQAUkVCSU5EAFVOQVVUSE9SSVpFRABNRVRIT0RfTk9UX0FMTE9XRUQASFRUUF9WRVJTSU9OX05PVF9TVVBQT1JURUQAQUxSRUFEWV9SRVBPUlRFRABBQ0NFUFRFRABOT1RfSU1QTEVNRU5URUQATE9PUF9ERVRFQ1RFRABIUEVfQ1JfRVhQRUNURUQASFBFX0xGX0VYUEVDVEVEAENSRUFURUQASU1fVVNFRABIUEVfUEFVU0VEAFRJTUVPVVRfT0NDVVJFRABQQVlNRU5UX1JFUVVJUkVEAFBSRUNPTkRJVElPTl9SRVFVSVJFRABQUk9YWV9BVVRIRU5USUNBVElPTl9SRVFVSVJFRABORVRXT1JLX0FVVEhFTlRJQ0FUSU9OX1JFUVVJUkVEAExFTkdUSF9SRVFVSVJFRABTU0xfQ0VSVElGSUNBVEVfUkVRVUlSRUQAVVBHUkFERV9SRVFVSVJFRABQQUdFX0VYUElSRUQAUFJFQ09ORElUSU9OX0ZBSUxFRABFWFBFQ1RBVElPTl9GQUlMRUQAUkVWQUxJREFUSU9OX0ZBSUxFRABTU0xfSEFORFNIQUtFX0ZBSUxFRABMT0NLRUQAVFJBTlNGT1JNQVRJT05fQVBQTElFRABOT1RfTU9ESUZJRUQATk9UX0VYVEVOREVEAEJBTkRXSURUSF9MSU1JVF9FWENFRURFRABTSVRFX0lTX09WRVJMT0FERUQASEVBRABFeHBlY3RlZCBIVFRQLwAAXhMAACYTAAAwEAAA8BcAAJ0TAAAVEgAAORcAAPASAAAKEAAAdRIAAK0SAACCEwAATxQAAH8QAACgFQAAIxQAAIkSAACLFAAATRUAANQRAADPFAAAEBgAAMkWAADcFgAAwREAAOAXAAC7FAAAdBQAAHwVAADlFAAACBcAAB8QAABlFQAAoxQAACgVAAACFQAAmRUAACwQAACLGQAATw8AANQOAABqEAAAzhAAAAIXAACJDgAAbhMAABwTAABmFAAAVhcAAMETAADNEwAAbBMAAGgXAABmFwAAXxcAACITAADODwAAaQ4AANgOAABjFgAAyxMAAKoOAAAoFwAAJhcAAMUTAABdFgAA6BEAAGcTAABlEwAA8hYAAHMTAAAdFwAA+RYAAPMRAADPDgAAzhUAAAwSAACzEQAApREAAGEQAAAyFwAAuxMAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQIBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAIDAgICAgIAAAICAAICAAICAgICAgICAgIABAAAAAAAAgICAgICAgICAgICAgICAgICAgICAgICAgIAAAACAgICAgICAgICAgICAgICAgICAgICAgICAgICAgACAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAACAAICAgICAAACAgACAgACAgICAgICAgICAAMABAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAAgACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbG9zZWVlcC1hbGl2ZQAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQIBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBY2h1bmtlZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEAAQEBAQEAAAEBAAEBAAEBAQEBAQEBAQEAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABlY3Rpb25lbnQtbGVuZ3Rob25yb3h5LWNvbm5lY3Rpb24AAAAAAAAAAAAAAAAAAAByYW5zZmVyLWVuY29kaW5ncGdyYWRlDQoNCg0KU00NCg0KVFRQL0NFL1RTUC8AAAAAAAAAAAAAAAABAgABAwAAAAAAAAAAAAAAAAAAAAAAAAQBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAQIAAQMAAAAAAAAAAAAAAAAAAAAAAAAEAQEFAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAEAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAQAAAgAAAAAAAAAAAAAAAAAAAAAAAAMEAAAEBAQEBAQEBAQEBAUEBAQEBAQEBAQEBAQABAAGBwQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEAAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAEAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAADAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwAAAAAAAAMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAABAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAIAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAAAAAAAADAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABOT1VOQ0VFQ0tPVVRORUNURVRFQ1JJQkVMVVNIRVRFQURTRUFSQ0hSR0VDVElWSVRZTEVOREFSVkVPVElGWVBUSU9OU0NIU0VBWVNUQVRDSEdFT1JESVJFQ1RPUlRSQ0hQQVJBTUVURVJVUkNFQlNDUklCRUFSRE9XTkFDRUlORE5LQ0tVQlNDUklCRUhUVFAvQURUUC8='\n","module.exports = 'AGFzbQEAAAABMAhgAX8Bf2ADf39/AX9gBH9/f38Bf2AAAGADf39/AGABfwBgAn9/AGAGf39/f39/AALLAQgDZW52GHdhc21fb25faGVhZGVyc19jb21wbGV0ZQACA2VudhV3YXNtX29uX21lc3NhZ2VfYmVnaW4AAANlbnYLd2FzbV9vbl91cmwAAQNlbnYOd2FzbV9vbl9zdGF0dXMAAQNlbnYUd2FzbV9vbl9oZWFkZXJfZmllbGQAAQNlbnYUd2FzbV9vbl9oZWFkZXJfdmFsdWUAAQNlbnYMd2FzbV9vbl9ib2R5AAEDZW52GHdhc21fb25fbWVzc2FnZV9jb21wbGV0ZQAAA0ZFAwMEAAAFAAAAAAAABQEFAAUFBQAABgAAAAAGBgYGAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAAABAQcAAAUFAwABBAUBcAESEgUDAQACBggBfwFBgNQECwfRBSIGbWVtb3J5AgALX2luaXRpYWxpemUACRlfX2luZGlyZWN0X2Z1bmN0aW9uX3RhYmxlAQALbGxodHRwX2luaXQAChhsbGh0dHBfc2hvdWxkX2tlZXBfYWxpdmUAQQxsbGh0dHBfYWxsb2MADAZtYWxsb2MARgtsbGh0dHBfZnJlZQANBGZyZWUASA9sbGh0dHBfZ2V0X3R5cGUADhVsbGh0dHBfZ2V0X2h0dHBfbWFqb3IADxVsbGh0dHBfZ2V0X2h0dHBfbWlub3IAEBFsbGh0dHBfZ2V0X21ldGhvZAARFmxsaHR0cF9nZXRfc3RhdHVzX2NvZGUAEhJsbGh0dHBfZ2V0X3VwZ3JhZGUAEwxsbGh0dHBfcmVzZXQAFA5sbGh0dHBfZXhlY3V0ZQAVFGxsaHR0cF9zZXR0aW5nc19pbml0ABYNbGxodHRwX2ZpbmlzaAAXDGxsaHR0cF9wYXVzZQAYDWxsaHR0cF9yZXN1bWUAGRtsbGh0dHBfcmVzdW1lX2FmdGVyX3VwZ3JhZGUAGhBsbGh0dHBfZ2V0X2Vycm5vABsXbGxodHRwX2dldF9lcnJvcl9yZWFzb24AHBdsbGh0dHBfc2V0X2Vycm9yX3JlYXNvbgAdFGxsaHR0cF9nZXRfZXJyb3JfcG9zAB4RbGxodHRwX2Vycm5vX25hbWUAHxJsbGh0dHBfbWV0aG9kX25hbWUAIBJs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IAH9CwMAIABBMGogAf0LAwAgAEEgaiAB/QsDACAAQd0BNgIcQQALewEBfwJAIAAoAgwiAw0AAkAgACgCBEUNACAAIAE2AgQLAkAgACABIAIQxICAgAAiAw0AIAAoAgwPCyAAIAM2AhxBACEDIAAoAgQiAUUNACAAIAEgAiAAKAIIEYGAgIAAACIBRQ0AIAAgAjYCFCAAIAE2AgwgASEDCyADC+TzAQMOfwN+BH8jgICAgABBEGsiAySAgICAACABIQQgASEFIAEhBiABIQcgASEIIAEhCSABIQogASELIAEhDCABIQ0gASEOIAEhDwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCAAKAIcIhBBf2oO3QHaAQHZAQIDBAUGBwgJCgsMDQ7YAQ8Q1wEREtYBExQVFhcYGRob4AHfARwdHtUBHyAhIiMkJdQBJicoKSorLNMB0gEtLtEB0AEvMDEyMzQ1Njc4OTo7PD0+P0BBQkNERUbbAUdISUrPAc4BS80BTMwBTU5PUFFSU1RVVldYWVpbXF1eX2BhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ent8fX5/gAGBAYIBgwGEAYUBhgGHAYgBiQGKAYsBjAGNAY4BjwGQAZEB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QAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIBAOxwEAAQID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YWNrIGVycm9yAGBvbl9jaHVua19leHRlbnNpb25fdmFsdWVgIGNhbGxiYWNrIGVycm9yAGBvbl9zdGF0dXNfY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl92ZXJzaW9uX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fdXJsX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fY2h1bmtfY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl9oZWFkZXJfdmFsdWVfY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl9tZXNzYWdlX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fbWV0aG9kX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25faGVhZGVyX2ZpZWxkX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fY2h1bmtfZXh0ZW5zaW9uX25hbWVgIGNhbGxiYWNrIGVycm9yAFVuZXhwZWN0ZWQgY2hhciBpbiB1cmwgc2VydmVyAEludmFsaWQgaGVhZGVyIHZhbHVlIGNoYXIASW52YWxpZCBoZWFkZXIgZmllbGQgY2hhcgBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX3ZlcnNpb24ASW52YWxpZCBtaW5vciB2ZXJzaW9uAEludmFsaWQgbWFqb3IgdmVyc2lvbgBFeHBlY3RlZCBzcGFjZSBhZnRlciB2ZXJzaW9uAEV4cGVjdGVkIENSTEYgYWZ0ZXIgdmVyc2lvbgBJbnZhbGlkIEhUVFAgdmVyc2lvbgBJbnZhbGlkIGhlYWRlciB0b2tlbgBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX3VybABJbnZhbGlkIGNoYXJhY3RlcnMgaW4gdXJsAFVuZXhwZWN0ZWQgc3RhcnQgY2hhciBpbiB1cmwARG91YmxlIEAgaW4gdXJsAEVtcHR5IENvbnRlbnQtTGVuZ3RoAEludmFsaWQgY2hhcmFjdGVyIGluIENvbnRlbnQtTGVuZ3RoAER1cGxpY2F0ZSBDb250ZW50LUxlbmd0aABJbnZhbGlkIGNoYXIgaW4gdXJsIHBhdGgAQ29udGVudC1MZW5ndGggY2FuJ3QgYmUgcHJlc2VudCB3aXRoIFRyYW5zZmVyLUVuY29kaW5nAEludmFsaWQgY2hhcmFjdGVyIGluIGNodW5rIHNpemUAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9oZWFkZXJfdmFsdWUAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9jaHVua19leHRlbnNpb25fdmFsdWUASW52YWxpZCBjaGFyYWN0ZXIgaW4gY2h1bmsgZXh0ZW5zaW9ucyB2YWx1ZQBNaXNzaW5nIGV4cGVjdGVkIExGIGFmdGVyIGhlYWRlciB2YWx1ZQBJbnZhbGlkIGBUcmFuc2Zlci1FbmNvZGluZ2AgaGVhZGVyIHZhbHVlAEludmFsaWQgY2hhcmFjdGVyIGluIGNodW5rIGV4dGVuc2lvbnMgcXVvdGUgdmFsdWUASW52YWxpZCBjaGFyYWN0ZXIgaW4gY2h1bmsgZXh0ZW5zaW9ucyBxdW90ZWQgdmFsdWUAUGF1c2VkIGJ5IG9uX2hlYWRlcnNfY29tcGxldGUASW52YWxpZCBFT0Ygc3RhdGUAb25fcmVzZXQgcGF1c2UAb25fY2h1bmtfaGVhZGVyIHBhdXNlAG9uX21lc3NhZ2VfYmVnaW4gcGF1c2UAb25fY2h1bmtfZXh0ZW5zaW9uX3ZhbHVlIHBhdXNlAG9uX3N0YXR1c19jb21wbGV0ZSBwYXVzZQBvbl92ZXJzaW9uX2NvbXBsZXRlIHBhdXNlAG9uX3VybF9jb21wbGV0ZSBwYXVzZQBvbl9jaHVua19jb21wbGV0ZSBwYXVzZQBvbl9oZWFkZXJfdmFsdWVfY29tcGxldGUgcGF1c2UAb25fbWVzc2FnZV9jb21wbGV0ZSBwYXVzZQBvbl9tZXRob2RfY29tcGxldGUgcGF1c2UAb25faGVhZGVyX2ZpZWxkX2NvbXBsZXRlIHBhdXNlAG9uX2NodW5rX2V4dGVuc2lvbl9uYW1lIHBhdXNlAFVuZXhwZWN0ZWQgc3BhY2UgYWZ0ZXIgc3RhcnQgbGluZQBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX2NodW5rX2V4dGVuc2lvbl9uYW1lAEludmFsaWQgY2hhcmFjdGVyIGluIGNodW5rIGV4dGVuc2lvbnMgbmFtZQBQYXVzZSBvbiBDT05ORUNUL1VwZ3JhZGUAUGF1c2Ugb24gUFJJL1VwZ3JhZGUARXhwZWN0ZWQgSFRUUC8yIENvbm5lY3Rpb24gUHJlZmFjZQBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX21ldGhvZABFeHBlY3RlZCBzcGFjZSBhZnRlciBtZXRob2QAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9oZWFkZXJfZmllbGQAUGF1c2VkAEludmFsaWQgd29yZCBlbmNvdW50ZXJlZABJbnZhbGlkIG1ldGhvZCBlbmNvdW50ZXJlZABVbmV4cGVjdGVkIGNoYXIgaW4gdXJsIHNjaGVtYQBSZXF1ZXN0IGhhcyBpbnZhbGlkIGBUcmFuc2Zlci1FbmNvZGluZ2AAU1dJVENIX1BST1hZAFVTRV9QUk9YWQBNS0FDVElWSVRZAFVOUFJPQ0VTU0FCTEVfRU5USVRZAENPUFkATU9WRURfUEVSTUFORU5UTFkAVE9PX0VBUkxZAE5PVElGWQBGQUlMRURfREVQRU5ERU5DWQBCQURfR0FURVdBWQBQTEFZAFBVVABDSEVDS09VVABHQVRFV0FZX1RJTUVPVVQAUkVRVUVTVF9USU1FT1VUAE5FVFdPUktfQ09OTkVDVF9USU1FT1VUAENPTk5FQ1RJT05fVElNRU9VVABMT0dJTl9USU1FT1VUAE5FVFdPUktfUkVBRF9USU1FT1VUAFBPU1QATUlTRElSRUNURURfUkVRVUVTVABDTElFTlRfQ0xPU0VEX1JFUVVFU1QAQ0xJRU5UX0NMT1NFRF9MT0FEX0JBTEFOQ0VEX1JFUVVFU1QAQkFEX1JFUVVFU1QASFRUUF9SRVFVRVNUX1NFTlRfVE9fSFRUUFNfUE9SVABSRVBPUlQASU1fQV9URUFQT1QAUkVTRVRfQ09OVEVOVABOT19DT05URU5UAFBBUlRJQUxfQ09OVEVOVABIUEVfSU5WQUxJRF9DT05TVEFOVABIUEVfQ0JfUkVTRVQAR0VUAEhQRV9TVFJJQ1QAQ09ORkxJQ1QAVEVNUE9SQVJZX1JFRElSRUNUAFBFUk1BTkVOVF9SRURJUkVDVABDT05ORUNUAE1VTFRJX1NUQVRVUwBIUEVfSU5WQUxJRF9TVEFUVVMAVE9PX01BTllfUkVRVUVTVFMARUFSTFlfSElOVFMAVU5BVkFJTEFCTEVfRk9SX0xFR0FMX1JFQVNPTlMAT1BUSU9OUwBTV0lUQ0hJTkdfUFJPVE9DT0xTAFZBUklBTlRfQUxTT19ORUdPVElBVEVTAE1VTFRJUExFX0NIT0lDRVMASU5URVJOQUxfU0VSVkVSX0VSUk9SAFdFQl9TRVJWRVJfVU5LTk9XTl9FUlJPUgBSQUlMR1VOX0VSUk9SAElERU5USVRZX1BST1ZJREVSX0FVVEhFTlRJQ0FUSU9OX0VSUk9SAFNTTF9DRVJUSUZJQ0FURV9FUlJPUgBJTlZBTElEX1hfRk9SV0FSREVEX0ZPUgBTRVRfUEFSQU1FVEVSAEdFVF9QQVJBTUVURVIASFBFX1VTRVIAU0VFX09USEVSAEhQRV9DQl9DSFVOS19IRUFERVIATUtDQUxFTkRBUgBTRVRVUABXRUJfU0VSVkVSX0lTX0RPV04AVEVBUkRPV04ASFBFX0NMT1NFRF9DT05ORUNUSU9OAEhFVVJJU1RJQ19FWFBJUkFUSU9OAERJU0NPTk5FQ1RFRF9PUEVSQVRJT04ATk9OX0FVVEhPUklUQVRJVkVfSU5GT1JNQVRJT04ASFBFX0lOVkFMSURfVkVSU0lPTgBIUEVfQ0JfTUVTU0FHRV9CRUdJTgBTSVRFX0lTX0ZST1pFTgBIUEVfSU5WQUxJRF9IRUFERVJfVE9LRU4ASU5WQUxJRF9UT0tFTgBGT1JCSURERU4ARU5IQU5DRV9ZT1VSX0NBTE0ASFBFX0lOVkFMSURfVVJMAEJMT0NLRURfQllfUEFSRU5UQUxfQ09OVFJPTABNS0NPTABBQ0wASFBFX0lOVEVSTkFMAFJFUVVFU1RfSEVBREVSX0ZJRUxEU19UT09fTEFSR0VfVU5PRkZJQ0lBTABIUEVfT0sAVU5MSU5LAFVOTE9DSwBQUkkAUkVUUllfV0lUSABIUEVfSU5WQUxJRF9DT05URU5UX0xFTkdUSABIUEVfVU5FWFBFQ1RFRF9DT05URU5UX0xFTkdUSABGTFVTSABQUk9QUEFUQ0gATS1TRUFSQ0gAVVJJX1RPT19MT05HAFBST0NFU1NJTkcATUlTQ0VMTEFORU9VU19QRVJTSVNURU5UX1dBUk5JTkcATUlTQ0VMTEFORU9VU19XQVJOSU5HAEhQRV9JTlZBTElEX1RSQU5TRkVSX0VOQ09ESU5HAEV4cGVjdGVkIENSTEYASFBFX0lOVkFMSURfQ0hVTktfU0laRQBNT1ZFAENPTlRJTlVFAEhQRV9DQl9TVEFUVVNfQ09NUExFVEUASFBFX0NCX0hFQURFUlNfQ09NUExFVEUASFBFX0NCX1ZFUlNJT05fQ09NUExFVEUASFBFX0NCX1VSTF9DT01QTEVURQBIUEVfQ0JfQ0hVTktfQ09NUExFVEUASFBFX0NCX0hFQURFUl9WQUxVRV9DT01QTEVURQBIUEVfQ0JfQ0hVTktfRVhURU5TSU9OX1ZBTFVFX0NPTVBMRVRFAEhQRV9DQl9DSFVOS19FWFRFTlNJT05fTkFNRV9DT01QTEVURQBIUEVfQ0JfTUVTU0FHRV9DT01QTEVURQBIUEVfQ0JfTUVUSE9EX0NPTVBMRVRFAEhQRV9DQl9IRUFERVJfRklFTERfQ09NUExFVEUAREVMRVRFAEhQRV9JTlZBTElEX0VPRl9TVEFURQBJTlZBTElEX1NTTF9DRVJUSUZJQ0FURQBQQVVTRQBOT19SRVNQT05TRQBVTlNVUFBPUlRFRF9NRURJQV9UWVBFAEdPTkUATk9UX0FDQ0VQVEFCTEUAU0VSVklDRV9VTkFWQUlMQUJMRQBSQU5HRV9OT1RfU0FUSVNGSUFCTEUAT1JJR0lOX0lTX1VOUkVBQ0hBQkxFAFJFU1BPTlNFX0lTX1NUQUxFAFBVUkdFAE1FUkdFAFJFUVVFU1RfSEVBREVSX0ZJRUxEU19UT09fTEFSR0UAUkVRVUVTVF9IRUFERVJfVE9PX0xBUkdFAFBBWUxPQURfVE9PX0xBUkdFAElOU1VGRklDSUVOVF9TVE9SQUdFAEhQRV9QQVVTRURfVVBHUkFERQBIUEVfUEFVU0VEX0gyX1VQR1JBREUAU09VUkNFAEFOTk9VTkNFAFRSQUNFAEhQRV9VTkVYUEVDVEVEX1NQQUNFAERFU0NSSUJFAFVOU1VCU0NSSUJFAFJFQ09SRABIUEVfSU5WQUxJRF9NRVRIT0QATk9UX0ZPVU5EAFBST1BGSU5EAFVOQklORABSRUJJTkQAVU5BVVRIT1JJWkVEAE1FVEhPRF9OT1RfQUxMT1dFRABIVFRQX1ZFUlNJT05fTk9UX1NVUFBPUlRFRABBTFJFQURZX1JFUE9SVEVEAEFDQ0VQVEVEAE5PVF9JTVBMRU1FTlRFRABMT09QX0RFVEVDVEVEAEhQRV9DUl9FWFBFQ1RFRABIUEVfTEZfRVhQRUNURUQAQ1JFQVRFRABJTV9VU0VEAEhQRV9QQVVTRUQAVElNRU9VVF9PQ0NVUkVEAFBBWU1FTlRfUkVRVUlSRUQAUFJFQ09ORElUSU9OX1JFUVVJUkVEAFBST1hZX0FVVEhFTlRJQ0FUSU9OX1JFUVVJUkVEAE5FVFdPUktfQVVUSEVOVElDQVRJT05fUkVRVUlSRUQATEVOR1RIX1JFUVVJUkVEAFNTTF9DRVJUSUZJQ0FURV9SRVFVSVJFRABVUEdSQURFX1JFUVVJUkVEAFBBR0VfRVhQSVJFRABQUkVDT05ESVRJT05fRkFJTEVEAEVYUEVDVEFUSU9OX0ZBSUxFRABSRVZBTElEQVRJT05fRkFJTEVEAFNTTF9IQU5EU0hBS0VfRkFJTEVEAExPQ0tFRABUUkFOU0ZPUk1BVElPTl9BUFBMSUVEAE5PVF9NT0RJRklFRABOT1RfRVhURU5ERUQAQkFORFdJRFRIX0xJTUlUX0VYQ0VFREVEAFNJVEVfSVNfT1ZFUkxPQURFRABIRUFEAEV4cGVjdGVkIEhUVFAvAABeEwAAJhMAADAQAADwFwAAnRMAABUSAAA5FwAA8BIAAAoQAAB1EgAArRIAAIITAABPFAAAfxAAAKAVAAAjFAAAiRIAAIsUAABNFQAA1BEAAM8UAAAQGAAAyRYAANwWAADBEQAA4BcAALsUAAB0FAAAfBUAAOUUAAAIFwAAHxAAAGUVAACjFAAAKBUAAAIVAACZFQAALBAAAIsZAABPDwAA1A4AAGoQAADOEAAAAhcAAIkOAABuEwAAHBMAAGYUAABWFwAAwRMAAM0TAABsEwAAaBcAAGYXAABfFwAAIhMAAM4PAABpDgAA2A4AAGMWAADLEwAAqg4AACgXAAAmFwAAxRMAAF0WAADoEQAAZxMAAGUTAADyFgAAcxMAAB0XAAD5FgAA8xEAAM8OAADOFQAADBIAALMRAAClEQAAYRAAADIXAAC7EwAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAgMCAgICAgAAAgIAAgIAAgICAgICAgICAgAEAAAAAAACAgICAgICAgICAgICAgICAgICAgICAgICAgAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAIAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAIAAgICAgIAAAICAAICAAICAgICAgICAgIAAwAEAAAAAgICAgICAgICAgICAgICAgICAgICAgICAgIAAAACAgICAgICAgICAgICAgICAgICAgICAgICAgICAgACAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABsb3NlZWVwLWFsaXZlAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQFjaHVua2VkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQABAQEBAQAAAQEAAQEAAQEBAQEBAQEBAQAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGVjdGlvbmVudC1sZW5ndGhvbnJveHktY29ubmVjdGlvbgAAAAAAAAAAAAAAAAAAAHJhbnNmZXItZW5jb2RpbmdwZ3JhZGUNCg0KDQpTTQ0KDQpUVFAvQ0UvVFNQLwAAAAAAAAAAAAAAAAECAAEDAAAAAAAAAAAAAAAAAAAAAAAABAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAABAgABAwAAAAAAAAAAAAAAAAAAAAAAAAQBAQUBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAQAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAABAAACAAAAAAAAAAAAAAAAAAAAAAAAAwQAAAQEBAQEBAQEBAQEBQQEBAQEBAQEBAQEBAAEAAYHBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQABAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAQAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAAAAAAAAAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAEAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAgAAAAACAAAAAAAAAAAAAAAAAAAAAAADAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwAAAAAAAAMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAE5PVU5DRUVDS09VVE5FQ1RFVEVDUklCRUxVU0hFVEVBRFNFQVJDSFJHRUNUSVZJVFlMRU5EQVJWRU9USUZZUFRJT05TQ0hTRUFZU1RBVENIR0VPUkRJUkVDVE9SVFJDSFBBUkFNRVRFUlVSQ0VCU0NSSUJFQVJET1dOQUNFSU5ETktDS1VCU0NSSUJFSFRUUC9BRFRQLw=='\n","// @ts-check\n\n'use strict'\n\n/* global WebAssembly */\n\nconst assert = require('assert')\nconst net = require('net')\nconst http = require('http')\nconst { pipeline } = require('stream')\nconst util = require('./core/util')\nconst timers = require('./timers')\nconst Request = require('./core/request')\nconst DispatcherBase = require('./dispatcher-base')\nconst {\n RequestContentLengthMismatchError,\n ResponseContentLengthMismatchError,\n InvalidArgumentError,\n RequestAbortedError,\n HeadersTimeoutError,\n HeadersOverflowError,\n SocketError,\n InformationalError,\n BodyTimeoutError,\n HTTPParserError,\n ResponseExceededMaxSizeError,\n ClientDestroyedError\n} = require('./core/errors')\nconst buildConnector = require('./core/connect')\nconst {\n kUrl,\n kReset,\n kServerName,\n kClient,\n kBusy,\n kParser,\n kConnect,\n kBlocking,\n kResuming,\n kRunning,\n kPending,\n kSize,\n kWriting,\n kQueue,\n kConnected,\n kConnecting,\n kNeedDrain,\n kNoRef,\n kKeepAliveDefaultTimeout,\n kHostHeader,\n kPendingIdx,\n kRunningIdx,\n kError,\n kPipelining,\n kSocket,\n kKeepAliveTimeoutValue,\n kMaxHeadersSize,\n kKeepAliveMaxTimeout,\n kKeepAliveTimeoutThreshold,\n kHeadersTimeout,\n kBodyTimeout,\n kStrictContentLength,\n kConnector,\n kMaxRedirections,\n kMaxRequests,\n kCounter,\n kClose,\n kDestroy,\n kDispatch,\n kInterceptors,\n kLocalAddress,\n kMaxResponseSize,\n kHTTPConnVersion,\n // HTTP2\n kHost,\n kHTTP2Session,\n kHTTP2SessionState,\n kHTTP2BuildRequest,\n kHTTP2CopyHeaders,\n kHTTP1BuildRequest\n} = require('./core/symbols')\n\n/** @type {import('http2')} */\nlet http2\ntry {\n http2 = require('http2')\n} catch {\n // @ts-ignore\n http2 = { constants: {} }\n}\n\nconst {\n constants: {\n HTTP2_HEADER_AUTHORITY,\n HTTP2_HEADER_METHOD,\n HTTP2_HEADER_PATH,\n HTTP2_HEADER_SCHEME,\n HTTP2_HEADER_CONTENT_LENGTH,\n HTTP2_HEADER_EXPECT,\n HTTP2_HEADER_STATUS\n }\n} = http2\n\n// Experimental\nlet h2ExperimentalWarned = false\n\nconst FastBuffer = Buffer[Symbol.species]\n\nconst kClosedResolve = Symbol('kClosedResolve')\n\nconst channels = {}\n\ntry {\n const diagnosticsChannel = require('diagnostics_channel')\n channels.sendHeaders = diagnosticsChannel.channel('undici:client:sendHeaders')\n channels.beforeConnect = diagnosticsChannel.channel('undici:client:beforeConnect')\n channels.connectError = diagnosticsChannel.channel('undici:client:connectError')\n channels.connected = diagnosticsChannel.channel('undici:client:connected')\n} catch {\n channels.sendHeaders = { hasSubscribers: false }\n channels.beforeConnect = { hasSubscribers: false }\n channels.connectError = { hasSubscribers: false }\n channels.connected = { hasSubscribers: false }\n}\n\n/**\n * @type {import('../types/client').default}\n */\nclass Client extends DispatcherBase {\n /**\n *\n * @param {string|URL} url\n * @param {import('../types/client').Client.Options} options\n */\n constructor (url, {\n interceptors,\n maxHeaderSize,\n headersTimeout,\n socketTimeout,\n requestTimeout,\n connectTimeout,\n bodyTimeout,\n idleTimeout,\n keepAlive,\n keepAliveTimeout,\n maxKeepAliveTimeout,\n keepAliveMaxTimeout,\n keepAliveTimeoutThreshold,\n socketPath,\n pipelining,\n tls,\n strictContentLength,\n maxCachedSessions,\n maxRedirections,\n connect,\n maxRequestsPerClient,\n localAddress,\n maxResponseSize,\n autoSelectFamily,\n autoSelectFamilyAttemptTimeout,\n // h2\n allowH2,\n maxConcurrentStreams\n } = {}) {\n super()\n\n if (keepAlive !== undefined) {\n throw new InvalidArgumentError('unsupported keepAlive, use pipelining=0 instead')\n }\n\n if (socketTimeout !== undefined) {\n throw new InvalidArgumentError('unsupported socketTimeout, use headersTimeout & bodyTimeout instead')\n }\n\n if (requestTimeout !== undefined) {\n throw new InvalidArgumentError('unsupported requestTimeout, use headersTimeout & bodyTimeout instead')\n }\n\n if (idleTimeout !== undefined) {\n throw new InvalidArgumentError('unsupported idleTimeout, use keepAliveTimeout instead')\n }\n\n if (maxKeepAliveTimeout !== undefined) {\n throw new InvalidArgumentError('unsupported maxKeepAliveTimeout, use keepAliveMaxTimeout instead')\n }\n\n if (maxHeaderSize != null && !Number.isFinite(maxHeaderSize)) {\n throw new InvalidArgumentError('invalid maxHeaderSize')\n }\n\n if (socketPath != null && typeof socketPath !== 'string') {\n throw new InvalidArgumentError('invalid socketPath')\n }\n\n if (connectTimeout != null && (!Number.isFinite(connectTimeout) || connectTimeout < 0)) {\n throw new InvalidArgumentError('invalid connectTimeout')\n }\n\n if (keepAliveTimeout != null && (!Number.isFinite(keepAliveTimeout) || keepAliveTimeout <= 0)) {\n throw new InvalidArgumentError('invalid keepAliveTimeout')\n }\n\n if (keepAliveMaxTimeout != null && (!Number.isFinite(keepAliveMaxTimeout) || keepAliveMaxTimeout <= 0)) {\n throw new InvalidArgumentError('invalid keepAliveMaxTimeout')\n }\n\n if (keepAliveTimeoutThreshold != null && !Number.isFinite(keepAliveTimeoutThreshold)) {\n throw new InvalidArgumentError('invalid keepAliveTimeoutThreshold')\n }\n\n if (headersTimeout != null && (!Number.isInteger(headersTimeout) || headersTimeout < 0)) {\n throw new InvalidArgumentError('headersTimeout must be a positive integer or zero')\n }\n\n if (bodyTimeout != null && (!Number.isInteger(bodyTimeout) || bodyTimeout < 0)) {\n throw new InvalidArgumentError('bodyTimeout must be a positive integer or zero')\n }\n\n if (connect != null && typeof connect !== 'function' && typeof connect !== 'object') {\n throw new InvalidArgumentError('connect must be a function or an object')\n }\n\n if (maxRedirections != null && (!Number.isInteger(maxRedirections) || maxRedirections < 0)) {\n throw new InvalidArgumentError('maxRedirections must be a positive number')\n }\n\n if (maxRequestsPerClient != null && (!Number.isInteger(maxRequestsPerClient) || maxRequestsPerClient < 0)) {\n throw new InvalidArgumentError('maxRequestsPerClient must be a positive number')\n }\n\n if (localAddress != null && (typeof localAddress !== 'string' || net.isIP(localAddress) === 0)) {\n throw new InvalidArgumentError('localAddress must be valid string IP address')\n }\n\n if (maxResponseSize != null && (!Number.isInteger(maxResponseSize) || maxResponseSize < -1)) {\n throw new InvalidArgumentError('maxResponseSize must be a positive number')\n }\n\n if (\n autoSelectFamilyAttemptTimeout != null &&\n (!Number.isInteger(autoSelectFamilyAttemptTimeout) || autoSelectFamilyAttemptTimeout < -1)\n ) {\n throw new InvalidArgumentError('autoSelectFamilyAttemptTimeout must be a positive number')\n }\n\n // h2\n if (allowH2 != null && typeof allowH2 !== 'boolean') {\n throw new InvalidArgumentError('allowH2 must be a valid boolean value')\n }\n\n if (maxConcurrentStreams != null && (typeof maxConcurrentStreams !== 'number' || maxConcurrentStreams < 1)) {\n throw new InvalidArgumentError('maxConcurrentStreams must be a possitive integer, greater than 0')\n }\n\n if (typeof connect !== 'function') {\n connect = buildConnector({\n ...tls,\n maxCachedSessions,\n allowH2,\n socketPath,\n timeout: connectTimeout,\n ...(util.nodeHasAutoSelectFamily && autoSelectFamily ? { autoSelectFamily, autoSelectFamilyAttemptTimeout } : undefined),\n ...connect\n })\n }\n\n this[kInterceptors] = interceptors && interceptors.Client && Array.isArray(interceptors.Client)\n ? interceptors.Client\n : [createRedirectInterceptor({ maxRedirections })]\n this[kUrl] = util.parseOrigin(url)\n this[kConnector] = connect\n this[kSocket] = null\n this[kPipelining] = pipelining != null ? pipelining : 1\n this[kMaxHeadersSize] = maxHeaderSize || http.maxHeaderSize\n this[kKeepAliveDefaultTimeout] = keepAliveTimeout == null ? 4e3 : keepAliveTimeout\n this[kKeepAliveMaxTimeout] = keepAliveMaxTimeout == null ? 600e3 : keepAliveMaxTimeout\n this[kKeepAliveTimeoutThreshold] = keepAliveTimeoutThreshold == null ? 1e3 : keepAliveTimeoutThreshold\n this[kKeepAliveTimeoutValue] = this[kKeepAliveDefaultTimeout]\n this[kServerName] = null\n this[kLocalAddress] = localAddress != null ? localAddress : null\n this[kResuming] = 0 // 0, idle, 1, scheduled, 2 resuming\n this[kNeedDrain] = 0 // 0, idle, 1, scheduled, 2 resuming\n this[kHostHeader] = `host: ${this[kUrl].hostname}${this[kUrl].port ? `:${this[kUrl].port}` : ''}\\r\\n`\n this[kBodyTimeout] = bodyTimeout != null ? bodyTimeout : 300e3\n this[kHeadersTimeout] = headersTimeout != null ? headersTimeout : 300e3\n this[kStrictContentLength] = strictContentLength == null ? true : strictContentLength\n this[kMaxRedirections] = maxRedirections\n this[kMaxRequests] = maxRequestsPerClient\n this[kClosedResolve] = null\n this[kMaxResponseSize] = maxResponseSize > -1 ? maxResponseSize : -1\n this[kHTTPConnVersion] = 'h1'\n\n // HTTP/2\n this[kHTTP2Session] = null\n this[kHTTP2SessionState] = !allowH2\n ? null\n : {\n // streams: null, // Fixed queue of streams - For future support of `push`\n openStreams: 0, // Keep track of them to decide wether or not unref the session\n maxConcurrentStreams: maxConcurrentStreams != null ? maxConcurrentStreams : 100 // Max peerConcurrentStreams for a Node h2 server\n }\n this[kHost] = `${this[kUrl].hostname}${this[kUrl].port ? `:${this[kUrl].port}` : ''}`\n\n // kQueue is built up of 3 sections separated by\n // the kRunningIdx and kPendingIdx indices.\n // | complete | running | pending |\n // ^ kRunningIdx ^ kPendingIdx ^ kQueue.length\n // kRunningIdx points to the first running element.\n // kPendingIdx points to the first pending element.\n // This implements a fast queue with an amortized\n // time of O(1).\n\n this[kQueue] = []\n this[kRunningIdx] = 0\n this[kPendingIdx] = 0\n }\n\n get pipelining () {\n return this[kPipelining]\n }\n\n set pipelining (value) {\n this[kPipelining] = value\n resume(this, true)\n }\n\n get [kPending] () {\n return this[kQueue].length - this[kPendingIdx]\n }\n\n get [kRunning] () {\n return this[kPendingIdx] - this[kRunningIdx]\n }\n\n get [kSize] () {\n return this[kQueue].length - this[kRunningIdx]\n }\n\n get [kConnected] () {\n return !!this[kSocket] && !this[kConnecting] && !this[kSocket].destroyed\n }\n\n get [kBusy] () {\n const socket = this[kSocket]\n return (\n (socket && (socket[kReset] || socket[kWriting] || socket[kBlocking])) ||\n (this[kSize] >= (this[kPipelining] || 1)) ||\n this[kPending] > 0\n )\n }\n\n /* istanbul ignore: only used for test */\n [kConnect] (cb) {\n connect(this)\n this.once('connect', cb)\n }\n\n [kDispatch] (opts, handler) {\n const origin = opts.origin || this[kUrl].origin\n\n const request = this[kHTTPConnVersion] === 'h2'\n ? Request[kHTTP2BuildRequest](origin, opts, handler)\n : Request[kHTTP1BuildRequest](origin, opts, handler)\n\n this[kQueue].push(request)\n if (this[kResuming]) {\n // Do nothing.\n } else if (util.bodyLength(request.body) == null && util.isIterable(request.body)) {\n // Wait a tick in case stream/iterator is ended in the same tick.\n this[kResuming] = 1\n process.nextTick(resume, this)\n } else {\n resume(this, true)\n }\n\n if (this[kResuming] && this[kNeedDrain] !== 2 && this[kBusy]) {\n this[kNeedDrain] = 2\n }\n\n return this[kNeedDrain] < 2\n }\n\n async [kClose] () {\n // TODO: for H2 we need to gracefully flush the remaining enqueued\n // request and close each stream.\n return new Promise((resolve) => {\n if (!this[kSize]) {\n resolve(null)\n } else {\n this[kClosedResolve] = resolve\n }\n })\n }\n\n async [kDestroy] (err) {\n return new Promise((resolve) => {\n const requests = this[kQueue].splice(this[kPendingIdx])\n for (let i = 0; i < requests.length; i++) {\n const request = requests[i]\n errorRequest(this, request, err)\n }\n\n const callback = () => {\n if (this[kClosedResolve]) {\n // TODO (fix): Should we error here with ClientDestroyedError?\n this[kClosedResolve]()\n this[kClosedResolve] = null\n }\n resolve()\n }\n\n if (this[kHTTP2Session] != null) {\n util.destroy(this[kHTTP2Session], err)\n this[kHTTP2Session] = null\n this[kHTTP2SessionState] = null\n }\n\n if (!this[kSocket]) {\n queueMicrotask(callback)\n } else {\n util.destroy(this[kSocket].on('close', callback), err)\n }\n\n resume(this)\n })\n }\n}\n\nfunction onHttp2SessionError (err) {\n assert(err.code !== 'ERR_TLS_CERT_ALTNAME_INVALID')\n\n this[kSocket][kError] = err\n\n onError(this[kClient], err)\n}\n\nfunction onHttp2FrameError (type, code, id) {\n const err = new InformationalError(`HTTP/2: \"frameError\" received - type ${type}, code ${code}`)\n\n if (id === 0) {\n this[kSocket][kError] = err\n onError(this[kClient], err)\n }\n}\n\nfunction onHttp2SessionEnd () {\n util.destroy(this, new SocketError('other side closed'))\n util.destroy(this[kSocket], new SocketError('other side closed'))\n}\n\nfunction onHTTP2GoAway (code) {\n const client = this[kClient]\n const err = new InformationalError(`HTTP/2: \"GOAWAY\" frame received with code ${code}`)\n client[kSocket] = null\n client[kHTTP2Session] = null\n\n if (client.destroyed) {\n assert(this[kPending] === 0)\n\n // Fail entire queue.\n const requests = client[kQueue].splice(client[kRunningIdx])\n for (let i = 0; i < requests.length; i++) {\n const request = requests[i]\n errorRequest(this, request, err)\n }\n } else if (client[kRunning] > 0) {\n // Fail head of pipeline.\n const request = client[kQueue][client[kRunningIdx]]\n client[kQueue][client[kRunningIdx]++] = null\n\n errorRequest(client, request, err)\n }\n\n client[kPendingIdx] = client[kRunningIdx]\n\n assert(client[kRunning] === 0)\n\n client.emit('disconnect',\n client[kUrl],\n [client],\n err\n )\n\n resume(client)\n}\n\nconst constants = require('./llhttp/constants')\nconst createRedirectInterceptor = require('./interceptor/redirectInterceptor')\nconst EMPTY_BUF = Buffer.alloc(0)\n\nasync function lazyllhttp () {\n const llhttpWasmData = process.env.JEST_WORKER_ID ? require('./llhttp/llhttp-wasm.js') : undefined\n\n let mod\n try {\n mod = await WebAssembly.compile(Buffer.from(require('./llhttp/llhttp_simd-wasm.js'), 'base64'))\n } catch (e) {\n /* istanbul ignore next */\n\n // We could check if the error was caused by the simd option not\n // being enabled, but the occurring of this other error\n // * https://github.com/emscripten-core/emscripten/issues/11495\n // got me to remove that check to avoid breaking Node 12.\n mod = await WebAssembly.compile(Buffer.from(llhttpWasmData || require('./llhttp/llhttp-wasm.js'), 'base64'))\n }\n\n return await WebAssembly.instantiate(mod, {\n env: {\n /* eslint-disable camelcase */\n\n wasm_on_url: (p, at, len) => {\n /* istanbul ignore next */\n return 0\n },\n wasm_on_status: (p, at, len) => {\n assert.strictEqual(currentParser.ptr, p)\n const start = at - currentBufferPtr + currentBufferRef.byteOffset\n return currentParser.onStatus(new FastBuffer(currentBufferRef.buffer, start, len)) || 0\n },\n wasm_on_message_begin: (p) => {\n assert.strictEqual(currentParser.ptr, p)\n return currentParser.onMessageBegin() || 0\n },\n wasm_on_header_field: (p, at, len) => {\n assert.strictEqual(currentParser.ptr, p)\n const start = at - currentBufferPtr + currentBufferRef.byteOffset\n return currentParser.onHeaderField(new FastBuffer(currentBufferRef.buffer, start, len)) || 0\n },\n wasm_on_header_value: (p, at, len) => {\n assert.strictEqual(currentParser.ptr, p)\n const start = at - currentBufferPtr + currentBufferRef.byteOffset\n return currentParser.onHeaderValue(new FastBuffer(currentBufferRef.buffer, start, len)) || 0\n },\n wasm_on_headers_complete: (p, statusCode, upgrade, shouldKeepAlive) => {\n assert.strictEqual(currentParser.ptr, p)\n return currentParser.onHeadersComplete(statusCode, Boolean(upgrade), Boolean(shouldKeepAlive)) || 0\n },\n wasm_on_body: (p, at, len) => {\n assert.strictEqual(currentParser.ptr, p)\n const start = at - currentBufferPtr + currentBufferRef.byteOffset\n return currentParser.onBody(new FastBuffer(currentBufferRef.buffer, start, len)) || 0\n },\n wasm_on_message_complete: (p) => {\n assert.strictEqual(currentParser.ptr, p)\n return currentParser.onMessageComplete() || 0\n }\n\n /* eslint-enable camelcase */\n }\n })\n}\n\nlet llhttpInstance = null\nlet llhttpPromise = lazyllhttp()\nllhttpPromise.catch()\n\nlet currentParser = null\nlet currentBufferRef = null\nlet currentBufferSize = 0\nlet currentBufferPtr = null\n\nconst TIMEOUT_HEADERS = 1\nconst TIMEOUT_BODY = 2\nconst TIMEOUT_IDLE = 3\n\nclass Parser {\n constructor (client, socket, { exports }) {\n assert(Number.isFinite(client[kMaxHeadersSize]) && client[kMaxHeadersSize] > 0)\n\n this.llhttp = exports\n this.ptr = this.llhttp.llhttp_alloc(constants.TYPE.RESPONSE)\n this.client = client\n this.socket = socket\n this.timeout = null\n this.timeoutValue = null\n this.timeoutType = null\n this.statusCode = null\n this.statusText = ''\n this.upgrade = false\n this.headers = []\n this.headersSize = 0\n this.headersMaxSize = client[kMaxHeadersSize]\n this.shouldKeepAlive = false\n this.paused = false\n this.resume = this.resume.bind(this)\n\n this.bytesRead = 0\n\n this.keepAlive = ''\n this.contentLength = ''\n this.connection = ''\n this.maxResponseSize = client[kMaxResponseSize]\n }\n\n setTimeout (value, type) {\n this.timeoutType = type\n if (value !== this.timeoutValue) {\n timers.clearTimeout(this.timeout)\n if (value) {\n this.timeout = timers.setTimeout(onParserTimeout, value, this)\n // istanbul ignore else: only for jest\n if (this.timeout.unref) {\n this.timeout.unref()\n }\n } else {\n this.timeout = null\n }\n this.timeoutValue = value\n } else if (this.timeout) {\n // istanbul ignore else: only for jest\n if (this.timeout.refresh) {\n this.timeout.refresh()\n }\n }\n }\n\n resume () {\n if (this.socket.destroyed || !this.paused) {\n return\n }\n\n assert(this.ptr != null)\n assert(currentParser == null)\n\n this.llhttp.llhttp_resume(this.ptr)\n\n assert(this.timeoutType === TIMEOUT_BODY)\n if (this.timeout) {\n // istanbul ignore else: only for jest\n if (this.timeout.refresh) {\n this.timeout.refresh()\n }\n }\n\n this.paused = false\n this.execute(this.socket.read() || EMPTY_BUF) // Flush parser.\n this.readMore()\n }\n\n readMore () {\n while (!this.paused && this.ptr) {\n const chunk = this.socket.read()\n if (chunk === null) {\n break\n }\n this.execute(chunk)\n }\n }\n\n execute (data) {\n assert(this.ptr != null)\n assert(currentParser == null)\n assert(!this.paused)\n\n const { socket, llhttp } = this\n\n if (data.length > currentBufferSize) {\n if (currentBufferPtr) {\n llhttp.free(currentBufferPtr)\n }\n currentBufferSize = Math.ceil(data.length / 4096) * 4096\n currentBufferPtr = llhttp.malloc(currentBufferSize)\n }\n\n new Uint8Array(llhttp.memory.buffer, currentBufferPtr, currentBufferSize).set(data)\n\n // Call `execute` on the wasm parser.\n // We pass the `llhttp_parser` pointer address, the pointer address of buffer view data,\n // and finally the length of bytes to parse.\n // The return value is an error code or `constants.ERROR.OK`.\n try {\n let ret\n\n try {\n currentBufferRef = data\n currentParser = this\n ret = llhttp.llhttp_execute(this.ptr, currentBufferPtr, data.length)\n /* eslint-disable-next-line no-useless-catch */\n } catch (err) {\n /* istanbul ignore next: difficult to make a test case for */\n throw err\n } finally {\n currentParser = null\n currentBufferRef = null\n }\n\n const offset = llhttp.llhttp_get_error_pos(this.ptr) - currentBufferPtr\n\n if (ret === constants.ERROR.PAUSED_UPGRADE) {\n this.onUpgrade(data.slice(offset))\n } else if (ret === constants.ERROR.PAUSED) {\n this.paused = true\n socket.unshift(data.slice(offset))\n } else if (ret !== constants.ERROR.OK) {\n const ptr = llhttp.llhttp_get_error_reason(this.ptr)\n let message = ''\n /* istanbul ignore else: difficult to make a test case for */\n if (ptr) {\n const len = new Uint8Array(llhttp.memory.buffer, ptr).indexOf(0)\n message =\n 'Response does not match the HTTP/1.1 protocol (' +\n Buffer.from(llhttp.memory.buffer, ptr, len).toString() +\n ')'\n }\n throw new HTTPParserError(message, constants.ERROR[ret], data.slice(offset))\n }\n } catch (err) {\n util.destroy(socket, err)\n }\n }\n\n destroy () {\n assert(this.ptr != null)\n assert(currentParser == null)\n\n this.llhttp.llhttp_free(this.ptr)\n this.ptr = null\n\n timers.clearTimeout(this.timeout)\n this.timeout = null\n this.timeoutValue = null\n this.timeoutType = null\n\n this.paused = false\n }\n\n onStatus (buf) {\n this.statusText = buf.toString()\n }\n\n onMessageBegin () {\n const { socket, client } = this\n\n /* istanbul ignore next: difficult to make a test case for */\n if (socket.destroyed) {\n return -1\n }\n\n const request = client[kQueue][client[kRunningIdx]]\n if (!request) {\n return -1\n }\n }\n\n onHeaderField (buf) {\n const len = this.headers.length\n\n if ((len & 1) === 0) {\n this.headers.push(buf)\n } else {\n this.headers[len - 1] = Buffer.concat([this.headers[len - 1], buf])\n }\n\n this.trackHeader(buf.length)\n }\n\n onHeaderValue (buf) {\n let len = this.headers.length\n\n if ((len & 1) === 1) {\n this.headers.push(buf)\n len += 1\n } else {\n this.headers[len - 1] = Buffer.concat([this.headers[len - 1], buf])\n }\n\n const key = this.headers[len - 2]\n if (key.length === 10 && key.toString().toLowerCase() === 'keep-alive') {\n this.keepAlive += buf.toString()\n } else if (key.length === 10 && key.toString().toLowerCase() === 'connection') {\n this.connection += buf.toString()\n } else if (key.length === 14 && key.toString().toLowerCase() === 'content-length') {\n this.contentLength += buf.toString()\n }\n\n this.trackHeader(buf.length)\n }\n\n trackHeader (len) {\n this.headersSize += len\n if (this.headersSize >= this.headersMaxSize) {\n util.destroy(this.socket, new HeadersOverflowError())\n }\n }\n\n onUpgrade (head) {\n const { upgrade, client, socket, headers, statusCode } = this\n\n assert(upgrade)\n\n const request = client[kQueue][client[kRunningIdx]]\n assert(request)\n\n assert(!socket.destroyed)\n assert(socket === client[kSocket])\n assert(!this.paused)\n assert(request.upgrade || request.method === 'CONNECT')\n\n this.statusCode = null\n this.statusText = ''\n this.shouldKeepAlive = null\n\n assert(this.headers.length % 2 === 0)\n this.headers = []\n this.headersSize = 0\n\n socket.unshift(head)\n\n socket[kParser].destroy()\n socket[kParser] = null\n\n socket[kClient] = null\n socket[kError] = null\n socket\n .removeListener('error', onSocketError)\n .removeListener('readable', onSocketReadable)\n .removeListener('end', onSocketEnd)\n .removeListener('close', onSocketClose)\n\n client[kSocket] = null\n client[kQueue][client[kRunningIdx]++] = null\n client.emit('disconnect', client[kUrl], [client], new InformationalError('upgrade'))\n\n try {\n request.onUpgrade(statusCode, headers, socket)\n } catch (err) {\n util.destroy(socket, err)\n }\n\n resume(client)\n }\n\n onHeadersComplete (statusCode, upgrade, shouldKeepAlive) {\n const { client, socket, headers, statusText } = this\n\n /* istanbul ignore next: difficult to make a test case for */\n if (socket.destroyed) {\n return -1\n }\n\n const request = client[kQueue][client[kRunningIdx]]\n\n /* istanbul ignore next: difficult to make a test case for */\n if (!request) {\n return -1\n }\n\n assert(!this.upgrade)\n assert(this.statusCode < 200)\n\n if (statusCode === 100) {\n util.destroy(socket, new SocketError('bad response', util.getSocketInfo(socket)))\n return -1\n }\n\n /* this can only happen if server is misbehaving */\n if (upgrade && !request.upgrade) {\n util.destroy(socket, new SocketError('bad upgrade', util.getSocketInfo(socket)))\n return -1\n }\n\n assert.strictEqual(this.timeoutType, TIMEOUT_HEADERS)\n\n this.statusCode = statusCode\n this.shouldKeepAlive = (\n shouldKeepAlive ||\n // Override llhttp value which does not allow keepAlive for HEAD.\n (request.method === 'HEAD' && !socket[kReset] && this.connection.toLowerCase() === 'keep-alive')\n )\n\n if (this.statusCode >= 200) {\n const bodyTimeout = request.bodyTimeout != null\n ? request.bodyTimeout\n : client[kBodyTimeout]\n this.setTimeout(bodyTimeout, TIMEOUT_BODY)\n } else if (this.timeout) {\n // istanbul ignore else: only for jest\n if (this.timeout.refresh) {\n this.timeout.refresh()\n }\n }\n\n if (request.method === 'CONNECT') {\n assert(client[kRunning] === 1)\n this.upgrade = true\n return 2\n }\n\n if (upgrade) {\n assert(client[kRunning] === 1)\n this.upgrade = true\n return 2\n }\n\n assert(this.headers.length % 2 === 0)\n this.headers = []\n this.headersSize = 0\n\n if (this.shouldKeepAlive && client[kPipelining]) {\n const keepAliveTimeout = this.keepAlive ? util.parseKeepAliveTimeout(this.keepAlive) : null\n\n if (keepAliveTimeout != null) {\n const timeout = Math.min(\n keepAliveTimeout - client[kKeepAliveTimeoutThreshold],\n client[kKeepAliveMaxTimeout]\n )\n if (timeout <= 0) {\n socket[kReset] = true\n } else {\n client[kKeepAliveTimeoutValue] = timeout\n }\n } else {\n client[kKeepAliveTimeoutValue] = client[kKeepAliveDefaultTimeout]\n }\n } else {\n // Stop more requests from being dispatched.\n socket[kReset] = true\n }\n\n const pause = request.onHeaders(statusCode, headers, this.resume, statusText) === false\n\n if (request.aborted) {\n return -1\n }\n\n if (request.method === 'HEAD') {\n return 1\n }\n\n if (statusCode < 200) {\n return 1\n }\n\n if (socket[kBlocking]) {\n socket[kBlocking] = false\n resume(client)\n }\n\n return pause ? constants.ERROR.PAUSED : 0\n }\n\n onBody (buf) {\n const { client, socket, statusCode, maxResponseSize } = this\n\n if (socket.destroyed) {\n return -1\n }\n\n const request = client[kQueue][client[kRunningIdx]]\n assert(request)\n\n assert.strictEqual(this.timeoutType, TIMEOUT_BODY)\n if (this.timeout) {\n // istanbul ignore else: only for jest\n if (this.timeout.refresh) {\n this.timeout.refresh()\n }\n }\n\n assert(statusCode >= 200)\n\n if (maxResponseSize > -1 && this.bytesRead + buf.length > maxResponseSize) {\n util.destroy(socket, new ResponseExceededMaxSizeError())\n return -1\n }\n\n this.bytesRead += buf.length\n\n if (request.onData(buf) === false) {\n return constants.ERROR.PAUSED\n }\n }\n\n onMessageComplete () {\n const { client, socket, statusCode, upgrade, headers, contentLength, bytesRead, shouldKeepAlive } = this\n\n if (socket.destroyed && (!statusCode || shouldKeepAlive)) {\n return -1\n }\n\n if (upgrade) {\n return\n }\n\n const request = client[kQueue][client[kRunningIdx]]\n assert(request)\n\n assert(statusCode >= 100)\n\n this.statusCode = null\n this.statusText = ''\n this.bytesRead = 0\n this.contentLength = ''\n this.keepAlive = ''\n this.connection = ''\n\n assert(this.headers.length % 2 === 0)\n this.headers = []\n this.headersSize = 0\n\n if (statusCode < 200) {\n return\n }\n\n /* istanbul ignore next: should be handled by llhttp? */\n if (request.method !== 'HEAD' && contentLength && bytesRead !== parseInt(contentLength, 10)) {\n util.destroy(socket, new ResponseContentLengthMismatchError())\n return -1\n }\n\n request.onComplete(headers)\n\n client[kQueue][client[kRunningIdx]++] = null\n\n if (socket[kWriting]) {\n assert.strictEqual(client[kRunning], 0)\n // Response completed before request.\n util.destroy(socket, new InformationalError('reset'))\n return constants.ERROR.PAUSED\n } else if (!shouldKeepAlive) {\n util.destroy(socket, new InformationalError('reset'))\n return constants.ERROR.PAUSED\n } else if (socket[kReset] && client[kRunning] === 0) {\n // Destroy socket once all requests have completed.\n // The request at the tail of the pipeline is the one\n // that requested reset and no further requests should\n // have been queued since then.\n util.destroy(socket, new InformationalError('reset'))\n return constants.ERROR.PAUSED\n } else if (client[kPipelining] === 1) {\n // We must wait a full event loop cycle to reuse this socket to make sure\n // that non-spec compliant servers are not closing the connection even if they\n // said they won't.\n setImmediate(resume, client)\n } else {\n resume(client)\n }\n }\n}\n\nfunction onParserTimeout (parser) {\n const { socket, timeoutType, client } = parser\n\n /* istanbul ignore else */\n if (timeoutType === TIMEOUT_HEADERS) {\n if (!socket[kWriting] || socket.writableNeedDrain || client[kRunning] > 1) {\n assert(!parser.paused, 'cannot be paused while waiting for headers')\n util.destroy(socket, new HeadersTimeoutError())\n }\n } else if (timeoutType === TIMEOUT_BODY) {\n if (!parser.paused) {\n util.destroy(socket, new BodyTimeoutError())\n }\n } else if (timeoutType === TIMEOUT_IDLE) {\n assert(client[kRunning] === 0 && client[kKeepAliveTimeoutValue])\n util.destroy(socket, new InformationalError('socket idle timeout'))\n }\n}\n\nfunction onSocketReadable () {\n const { [kParser]: parser } = this\n if (parser) {\n parser.readMore()\n }\n}\n\nfunction onSocketError (err) {\n const { [kClient]: client, [kParser]: parser } = this\n\n assert(err.code !== 'ERR_TLS_CERT_ALTNAME_INVALID')\n\n if (client[kHTTPConnVersion] !== 'h2') {\n // On Mac OS, we get an ECONNRESET even if there is a full body to be forwarded\n // to the user.\n if (err.code === 'ECONNRESET' && parser.statusCode && !parser.shouldKeepAlive) {\n // We treat all incoming data so for as a valid response.\n parser.onMessageComplete()\n return\n }\n }\n\n this[kError] = err\n\n onError(this[kClient], err)\n}\n\nfunction onError (client, err) {\n if (\n client[kRunning] === 0 &&\n err.code !== 'UND_ERR_INFO' &&\n err.code !== 'UND_ERR_SOCKET'\n ) {\n // Error is not caused by running request and not a recoverable\n // socket error.\n\n assert(client[kPendingIdx] === client[kRunningIdx])\n\n const requests = client[kQueue].splice(client[kRunningIdx])\n for (let i = 0; i < requests.length; i++) {\n const request = requests[i]\n errorRequest(client, request, err)\n }\n assert(client[kSize] === 0)\n }\n}\n\nfunction onSocketEnd () {\n const { [kParser]: parser, [kClient]: client } = this\n\n if (client[kHTTPConnVersion] !== 'h2') {\n if (parser.statusCode && !parser.shouldKeepAlive) {\n // We treat all incoming data so far as a valid response.\n parser.onMessageComplete()\n return\n }\n }\n\n util.destroy(this, new SocketError('other side closed', util.getSocketInfo(this)))\n}\n\nfunction onSocketClose () {\n const { [kClient]: client, [kParser]: parser } = this\n\n if (client[kHTTPConnVersion] === 'h1' && parser) {\n if (!this[kError] && parser.statusCode && !parser.shouldKeepAlive) {\n // We treat all incoming data so far as a valid response.\n parser.onMessageComplete()\n }\n\n this[kParser].destroy()\n this[kParser] = null\n }\n\n const err = this[kError] || new SocketError('closed', util.getSocketInfo(this))\n\n client[kSocket] = null\n\n if (client.destroyed) {\n assert(client[kPending] === 0)\n\n // Fail entire queue.\n const requests = client[kQueue].splice(client[kRunningIdx])\n for (let i = 0; i < requests.length; i++) {\n const request = requests[i]\n errorRequest(client, request, err)\n }\n } else if (client[kRunning] > 0 && err.code !== 'UND_ERR_INFO') {\n // Fail head of pipeline.\n const request = client[kQueue][client[kRunningIdx]]\n client[kQueue][client[kRunningIdx]++] = null\n\n errorRequest(client, request, err)\n }\n\n client[kPendingIdx] = client[kRunningIdx]\n\n assert(client[kRunning] === 0)\n\n client.emit('disconnect', client[kUrl], [client], err)\n\n resume(client)\n}\n\nasync function connect (client) {\n assert(!client[kConnecting])\n assert(!client[kSocket])\n\n let { host, hostname, protocol, port } = client[kUrl]\n\n // Resolve ipv6\n if (hostname[0] === '[') {\n const idx = hostname.indexOf(']')\n\n assert(idx !== -1)\n const ip = hostname.substring(1, idx)\n\n assert(net.isIP(ip))\n hostname = ip\n }\n\n client[kConnecting] = true\n\n if (channels.beforeConnect.hasSubscribers) {\n channels.beforeConnect.publish({\n connectParams: {\n host,\n hostname,\n protocol,\n port,\n servername: client[kServerName],\n localAddress: client[kLocalAddress]\n },\n connector: client[kConnector]\n })\n }\n\n try {\n const socket = await new Promise((resolve, reject) => {\n client[kConnector]({\n host,\n hostname,\n protocol,\n port,\n servername: client[kServerName],\n localAddress: client[kLocalAddress]\n }, (err, socket) => {\n if (err) {\n reject(err)\n } else {\n resolve(socket)\n }\n })\n })\n\n if (client.destroyed) {\n util.destroy(socket.on('error', () => {}), new ClientDestroyedError())\n return\n }\n\n client[kConnecting] = false\n\n assert(socket)\n\n const isH2 = socket.alpnProtocol === 'h2'\n if (isH2) {\n if (!h2ExperimentalWarned) {\n h2ExperimentalWarned = true\n process.emitWarning('H2 support is experimental, expect them to change at any time.', {\n code: 'UNDICI-H2'\n })\n }\n\n const session = http2.connect(client[kUrl], {\n createConnection: () => socket,\n peerMaxConcurrentStreams: client[kHTTP2SessionState].maxConcurrentStreams\n })\n\n client[kHTTPConnVersion] = 'h2'\n session[kClient] = client\n session[kSocket] = socket\n session.on('error', onHttp2SessionError)\n session.on('frameError', onHttp2FrameError)\n session.on('end', onHttp2SessionEnd)\n session.on('goaway', onHTTP2GoAway)\n session.on('close', onSocketClose)\n session.unref()\n\n client[kHTTP2Session] = session\n socket[kHTTP2Session] = session\n } else {\n if (!llhttpInstance) {\n llhttpInstance = await llhttpPromise\n llhttpPromise = null\n }\n\n socket[kNoRef] = false\n socket[kWriting] = false\n socket[kReset] = false\n socket[kBlocking] = false\n socket[kParser] = new Parser(client, socket, llhttpInstance)\n }\n\n socket[kCounter] = 0\n socket[kMaxRequests] = client[kMaxRequests]\n socket[kClient] = client\n socket[kError] = null\n\n socket\n .on('error', onSocketError)\n .on('readable', onSocketReadable)\n .on('end', onSocketEnd)\n .on('close', onSocketClose)\n\n client[kSocket] = socket\n\n if (channels.connected.hasSubscribers) {\n channels.connected.publish({\n connectParams: {\n host,\n hostname,\n protocol,\n port,\n servername: client[kServerName],\n localAddress: client[kLocalAddress]\n },\n connector: client[kConnector],\n socket\n })\n }\n client.emit('connect', client[kUrl], [client])\n } catch (err) {\n if (client.destroyed) {\n return\n }\n\n client[kConnecting] = false\n\n if (channels.connectError.hasSubscribers) {\n channels.connectError.publish({\n connectParams: {\n host,\n hostname,\n protocol,\n port,\n servername: client[kServerName],\n localAddress: client[kLocalAddress]\n },\n connector: client[kConnector],\n error: err\n })\n }\n\n if (err.code === 'ERR_TLS_CERT_ALTNAME_INVALID') {\n assert(client[kRunning] === 0)\n while (client[kPending] > 0 && client[kQueue][client[kPendingIdx]].servername === client[kServerName]) {\n const request = client[kQueue][client[kPendingIdx]++]\n errorRequest(client, request, err)\n }\n } else {\n onError(client, err)\n }\n\n client.emit('connectionError', client[kUrl], [client], err)\n }\n\n resume(client)\n}\n\nfunction emitDrain (client) {\n client[kNeedDrain] = 0\n client.emit('drain', client[kUrl], [client])\n}\n\nfunction resume (client, sync) {\n if (client[kResuming] === 2) {\n return\n }\n\n client[kResuming] = 2\n\n _resume(client, sync)\n client[kResuming] = 0\n\n if (client[kRunningIdx] > 256) {\n client[kQueue].splice(0, client[kRunningIdx])\n client[kPendingIdx] -= client[kRunningIdx]\n client[kRunningIdx] = 0\n }\n}\n\nfunction _resume (client, sync) {\n while (true) {\n if (client.destroyed) {\n assert(client[kPending] === 0)\n return\n }\n\n if (client[kClosedResolve] && !client[kSize]) {\n client[kClosedResolve]()\n client[kClosedResolve] = null\n return\n }\n\n const socket = client[kSocket]\n\n if (socket && !socket.destroyed && socket.alpnProtocol !== 'h2') {\n if (client[kSize] === 0) {\n if (!socket[kNoRef] && socket.unref) {\n socket.unref()\n socket[kNoRef] = true\n }\n } else if (socket[kNoRef] && socket.ref) {\n socket.ref()\n socket[kNoRef] = false\n }\n\n if (client[kSize] === 0) {\n if (socket[kParser].timeoutType !== TIMEOUT_IDLE) {\n socket[kParser].setTimeout(client[kKeepAliveTimeoutValue], TIMEOUT_IDLE)\n }\n } else if (client[kRunning] > 0 && socket[kParser].statusCode < 200) {\n if (socket[kParser].timeoutType !== TIMEOUT_HEADERS) {\n const request = client[kQueue][client[kRunningIdx]]\n const headersTimeout = request.headersTimeout != null\n ? request.headersTimeout\n : client[kHeadersTimeout]\n socket[kParser].setTimeout(headersTimeout, TIMEOUT_HEADERS)\n }\n }\n }\n\n if (client[kBusy]) {\n client[kNeedDrain] = 2\n } else if (client[kNeedDrain] === 2) {\n if (sync) {\n client[kNeedDrain] = 1\n process.nextTick(emitDrain, client)\n } else {\n emitDrain(client)\n }\n continue\n }\n\n if (client[kPending] === 0) {\n return\n }\n\n if (client[kRunning] >= (client[kPipelining] || 1)) {\n return\n }\n\n const request = client[kQueue][client[kPendingIdx]]\n\n if (client[kUrl].protocol === 'https:' && client[kServerName] !== request.servername) {\n if (client[kRunning] > 0) {\n return\n }\n\n client[kServerName] = request.servername\n\n if (socket && socket.servername !== request.servername) {\n util.destroy(socket, new InformationalError('servername changed'))\n return\n }\n }\n\n if (client[kConnecting]) {\n return\n }\n\n if (!socket && !client[kHTTP2Session]) {\n connect(client)\n return\n }\n\n if (socket.destroyed || socket[kWriting] || socket[kReset] || socket[kBlocking]) {\n return\n }\n\n if (client[kRunning] > 0 && !request.idempotent) {\n // Non-idempotent request cannot be retried.\n // Ensure that no other requests are inflight and\n // could cause failure.\n return\n }\n\n if (client[kRunning] > 0 && (request.upgrade || request.method === 'CONNECT')) {\n // Don't dispatch an upgrade until all preceding requests have completed.\n // A misbehaving server might upgrade the connection before all pipelined\n // request has completed.\n return\n }\n\n if (client[kRunning] > 0 && util.bodyLength(request.body) !== 0 &&\n (util.isStream(request.body) || util.isAsyncIterable(request.body))) {\n // Request with stream or iterator body can error while other requests\n // are inflight and indirectly error those as well.\n // Ensure this doesn't happen by waiting for inflight\n // to complete before dispatching.\n\n // Request with stream or iterator body cannot be retried.\n // Ensure that no other requests are inflight and\n // could cause failure.\n return\n }\n\n if (!request.aborted && write(client, request)) {\n client[kPendingIdx]++\n } else {\n client[kQueue].splice(client[kPendingIdx], 1)\n }\n }\n}\n\n// https://www.rfc-editor.org/rfc/rfc7230#section-3.3.2\nfunction shouldSendContentLength (method) {\n return method !== 'GET' && method !== 'HEAD' && method !== 'OPTIONS' && method !== 'TRACE' && method !== 'CONNECT'\n}\n\nfunction write (client, request) {\n if (client[kHTTPConnVersion] === 'h2') {\n writeH2(client, client[kHTTP2Session], request)\n return\n }\n\n const { body, method, path, host, upgrade, headers, blocking, reset } = request\n\n // https://tools.ietf.org/html/rfc7231#section-4.3.1\n // https://tools.ietf.org/html/rfc7231#section-4.3.2\n // https://tools.ietf.org/html/rfc7231#section-4.3.5\n\n // Sending a payload body on a request that does not\n // expect it can cause undefined behavior on some\n // servers and corrupt connection state. Do not\n // re-use the connection for further requests.\n\n const expectsPayload = (\n method === 'PUT' ||\n method === 'POST' ||\n method === 'PATCH'\n )\n\n if (body && typeof body.read === 'function') {\n // Try to read EOF in order to get length.\n body.read(0)\n }\n\n const bodyLength = util.bodyLength(body)\n\n let contentLength = bodyLength\n\n if (contentLength === null) {\n contentLength = request.contentLength\n }\n\n if (contentLength === 0 && !expectsPayload) {\n // https://tools.ietf.org/html/rfc7230#section-3.3.2\n // A user agent SHOULD NOT send a Content-Length header field when\n // the request message does not contain a payload body and the method\n // semantics do not anticipate such a body.\n\n contentLength = null\n }\n\n // https://github.com/nodejs/undici/issues/2046\n // A user agent may send a Content-Length header with 0 value, this should be allowed.\n if (shouldSendContentLength(method) && contentLength > 0 && request.contentLength !== null && request.contentLength !== contentLength) {\n if (client[kStrictContentLength]) {\n errorRequest(client, request, new RequestContentLengthMismatchError())\n return false\n }\n\n process.emitWarning(new RequestContentLengthMismatchError())\n }\n\n const socket = client[kSocket]\n\n try {\n request.onConnect((err) => {\n if (request.aborted || request.completed) {\n return\n }\n\n errorRequest(client, request, err || new RequestAbortedError())\n\n util.destroy(socket, new InformationalError('aborted'))\n })\n } catch (err) {\n errorRequest(client, request, err)\n }\n\n if (request.aborted) {\n return false\n }\n\n if (method === 'HEAD') {\n // https://github.com/mcollina/undici/issues/258\n // Close after a HEAD request to interop with misbehaving servers\n // that may send a body in the response.\n\n socket[kReset] = true\n }\n\n if (upgrade || method === 'CONNECT') {\n // On CONNECT or upgrade, block pipeline from dispatching further\n // requests on this connection.\n\n socket[kReset] = true\n }\n\n if (reset != null) {\n socket[kReset] = reset\n }\n\n if (client[kMaxRequests] && socket[kCounter]++ >= client[kMaxRequests]) {\n socket[kReset] = true\n }\n\n if (blocking) {\n socket[kBlocking] = true\n }\n\n let header = `${method} ${path} HTTP/1.1\\r\\n`\n\n if (typeof host === 'string') {\n header += `host: ${host}\\r\\n`\n } else {\n header += client[kHostHeader]\n }\n\n if (upgrade) {\n header += `connection: upgrade\\r\\nupgrade: ${upgrade}\\r\\n`\n } else if (client[kPipelining] && !socket[kReset]) {\n header += 'connection: keep-alive\\r\\n'\n } else {\n header += 'connection: close\\r\\n'\n }\n\n if (headers) {\n header += headers\n }\n\n if (channels.sendHeaders.hasSubscribers) {\n channels.sendHeaders.publish({ request, headers: header, socket })\n }\n\n /* istanbul ignore else: assertion */\n if (!body || bodyLength === 0) {\n if (contentLength === 0) {\n socket.write(`${header}content-length: 0\\r\\n\\r\\n`, 'latin1')\n } else {\n assert(contentLength === null, 'no body must not have content length')\n socket.write(`${header}\\r\\n`, 'latin1')\n }\n request.onRequestSent()\n } else if (util.isBuffer(body)) {\n assert(contentLength === body.byteLength, 'buffer body must have content length')\n\n socket.cork()\n socket.write(`${header}content-length: ${contentLength}\\r\\n\\r\\n`, 'latin1')\n socket.write(body)\n socket.uncork()\n request.onBodySent(body)\n request.onRequestSent()\n if (!expectsPayload) {\n socket[kReset] = true\n }\n } else if (util.isBlobLike(body)) {\n if (typeof body.stream === 'function') {\n writeIterable({ body: body.stream(), client, request, socket, contentLength, header, expectsPayload })\n } else {\n writeBlob({ body, client, request, socket, contentLength, header, expectsPayload })\n }\n } else if (util.isStream(body)) {\n writeStream({ body, client, request, socket, contentLength, header, expectsPayload })\n } else if (util.isIterable(body)) {\n writeIterable({ body, client, request, socket, contentLength, header, expectsPayload })\n } else {\n assert(false)\n }\n\n return true\n}\n\nfunction writeH2 (client, session, request) {\n const { body, method, path, host, upgrade, expectContinue, signal, headers: reqHeaders } = request\n\n let headers\n if (typeof reqHeaders === 'string') headers = Request[kHTTP2CopyHeaders](reqHeaders.trim())\n else headers = reqHeaders\n\n if (upgrade) {\n errorRequest(client, request, new Error('Upgrade not supported for H2'))\n return false\n }\n\n try {\n // TODO(HTTP/2): Should we call onConnect immediately or on stream ready event?\n request.onConnect((err) => {\n if (request.aborted || request.completed) {\n return\n }\n\n errorRequest(client, request, err || new RequestAbortedError())\n })\n } catch (err) {\n errorRequest(client, request, err)\n }\n\n if (request.aborted) {\n return false\n }\n\n /** @type {import('node:http2').ClientHttp2Stream} */\n let stream\n const h2State = client[kHTTP2SessionState]\n\n headers[HTTP2_HEADER_AUTHORITY] = host || client[kHost]\n headers[HTTP2_HEADER_METHOD] = method\n\n if (method === 'CONNECT') {\n session.ref()\n // we are already connected, streams are pending, first request\n // will create a new stream. We trigger a request to create the stream and wait until\n // `ready` event is triggered\n // We disabled endStream to allow the user to write to the stream\n stream = session.request(headers, { endStream: false, signal })\n\n if (stream.id && !stream.pending) {\n request.onUpgrade(null, null, stream)\n ++h2State.openStreams\n } else {\n stream.once('ready', () => {\n request.onUpgrade(null, null, stream)\n ++h2State.openStreams\n })\n }\n\n stream.once('close', () => {\n h2State.openStreams -= 1\n // TODO(HTTP/2): unref only if current streams count is 0\n if (h2State.openStreams === 0) session.unref()\n })\n\n return true\n }\n\n // https://tools.ietf.org/html/rfc7540#section-8.3\n // :path and :scheme headers must be omited when sending CONNECT\n\n headers[HTTP2_HEADER_PATH] = path\n headers[HTTP2_HEADER_SCHEME] = 'https'\n\n // https://tools.ietf.org/html/rfc7231#section-4.3.1\n // https://tools.ietf.org/html/rfc7231#section-4.3.2\n // https://tools.ietf.org/html/rfc7231#section-4.3.5\n\n // Sending a payload body on a request that does not\n // expect it can cause undefined behavior on some\n // servers and corrupt connection state. Do not\n // re-use the connection for further requests.\n\n const expectsPayload = (\n method === 'PUT' ||\n method === 'POST' ||\n method === 'PATCH'\n )\n\n if (body && typeof body.read === 'function') {\n // Try to read EOF in order to get length.\n body.read(0)\n }\n\n let contentLength = util.bodyLength(body)\n\n if (contentLength == null) {\n contentLength = request.contentLength\n }\n\n if (contentLength === 0 || !expectsPayload) {\n // https://tools.ietf.org/html/rfc7230#section-3.3.2\n // A user agent SHOULD NOT send a Content-Length header field when\n // the request message does not contain a payload body and the method\n // semantics do not anticipate such a body.\n\n contentLength = null\n }\n\n // https://github.com/nodejs/undici/issues/2046\n // A user agent may send a Content-Length header with 0 value, this should be allowed.\n if (shouldSendContentLength(method) && contentLength > 0 && request.contentLength != null && request.contentLength !== contentLength) {\n if (client[kStrictContentLength]) {\n errorRequest(client, request, new RequestContentLengthMismatchError())\n return false\n }\n\n process.emitWarning(new RequestContentLengthMismatchError())\n }\n\n if (contentLength != null) {\n assert(body, 'no body must not have content length')\n headers[HTTP2_HEADER_CONTENT_LENGTH] = `${contentLength}`\n }\n\n session.ref()\n\n const shouldEndStream = method === 'GET' || method === 'HEAD'\n if (expectContinue) {\n headers[HTTP2_HEADER_EXPECT] = '100-continue'\n stream = session.request(headers, { endStream: shouldEndStream, signal })\n\n stream.once('continue', writeBodyH2)\n } else {\n stream = session.request(headers, {\n endStream: shouldEndStream,\n signal\n })\n writeBodyH2()\n }\n\n // Increment counter as we have new several streams open\n ++h2State.openStreams\n\n stream.once('response', headers => {\n const { [HTTP2_HEADER_STATUS]: statusCode, ...realHeaders } = headers\n\n if (request.onHeaders(Number(statusCode), realHeaders, stream.resume.bind(stream), '') === false) {\n stream.pause()\n }\n })\n\n stream.once('end', () => {\n request.onComplete([])\n })\n\n stream.on('data', (chunk) => {\n if (request.onData(chunk) === false) {\n stream.pause()\n }\n })\n\n stream.once('close', () => {\n h2State.openStreams -= 1\n // TODO(HTTP/2): unref only if current streams count is 0\n if (h2State.openStreams === 0) {\n session.unref()\n }\n })\n\n stream.once('error', function (err) {\n if (client[kHTTP2Session] && !client[kHTTP2Session].destroyed && !this.closed && !this.destroyed) {\n h2State.streams -= 1\n util.destroy(stream, err)\n }\n })\n\n stream.once('frameError', (type, code) => {\n const err = new InformationalError(`HTTP/2: \"frameError\" received - type ${type}, code ${code}`)\n errorRequest(client, request, err)\n\n if (client[kHTTP2Session] && !client[kHTTP2Session].destroyed && !this.closed && !this.destroyed) {\n h2State.streams -= 1\n util.destroy(stream, err)\n }\n })\n\n // stream.on('aborted', () => {\n // // TODO(HTTP/2): Support aborted\n // })\n\n // stream.on('timeout', () => {\n // // TODO(HTTP/2): Support timeout\n // })\n\n // stream.on('push', headers => {\n // // TODO(HTTP/2): Suppor push\n // })\n\n // stream.on('trailers', headers => {\n // // TODO(HTTP/2): Support trailers\n // })\n\n return true\n\n function writeBodyH2 () {\n /* istanbul ignore else: assertion */\n if (!body) {\n request.onRequestSent()\n } else if (util.isBuffer(body)) {\n assert(contentLength === body.byteLength, 'buffer body must have content length')\n stream.cork()\n stream.write(body)\n stream.uncork()\n stream.end()\n request.onBodySent(body)\n request.onRequestSent()\n } else if (util.isBlobLike(body)) {\n if (typeof body.stream === 'function') {\n writeIterable({\n client,\n request,\n contentLength,\n h2stream: stream,\n expectsPayload,\n body: body.stream(),\n socket: client[kSocket],\n header: ''\n })\n } else {\n writeBlob({\n body,\n client,\n request,\n contentLength,\n expectsPayload,\n h2stream: stream,\n header: '',\n socket: client[kSocket]\n })\n }\n } else if (util.isStream(body)) {\n writeStream({\n body,\n client,\n request,\n contentLength,\n expectsPayload,\n socket: client[kSocket],\n h2stream: stream,\n header: ''\n })\n } else if (util.isIterable(body)) {\n writeIterable({\n body,\n client,\n request,\n contentLength,\n expectsPayload,\n header: '',\n h2stream: stream,\n socket: client[kSocket]\n })\n } else {\n assert(false)\n }\n }\n}\n\nfunction writeStream ({ h2stream, body, client, request, socket, contentLength, header, expectsPayload }) {\n assert(contentLength !== 0 || client[kRunning] === 0, 'stream body cannot be pipelined')\n\n if (client[kHTTPConnVersion] === 'h2') {\n // For HTTP/2, is enough to pipe the stream\n const pipe = pipeline(\n body,\n h2stream,\n (err) => {\n if (err) {\n util.destroy(body, err)\n util.destroy(h2stream, err)\n } else {\n request.onRequestSent()\n }\n }\n )\n\n pipe.on('data', onPipeData)\n pipe.once('end', () => {\n pipe.removeListener('data', onPipeData)\n util.destroy(pipe)\n })\n\n function onPipeData (chunk) {\n request.onBodySent(chunk)\n }\n\n return\n }\n\n let finished = false\n\n const writer = new AsyncWriter({ socket, request, contentLength, client, expectsPayload, header })\n\n const onData = function (chunk) {\n if (finished) {\n return\n }\n\n try {\n if (!writer.write(chunk) && this.pause) {\n this.pause()\n }\n } catch (err) {\n util.destroy(this, err)\n }\n }\n const onDrain = function () {\n if (finished) {\n return\n }\n\n if (body.resume) {\n body.resume()\n }\n }\n const onAbort = function () {\n if (finished) {\n return\n }\n const err = new RequestAbortedError()\n queueMicrotask(() => onFinished(err))\n }\n const onFinished = function (err) {\n if (finished) {\n return\n }\n\n finished = true\n\n assert(socket.destroyed || (socket[kWriting] && client[kRunning] <= 1))\n\n socket\n .off('drain', onDrain)\n .off('error', onFinished)\n\n body\n .removeListener('data', onData)\n .removeListener('end', onFinished)\n .removeListener('error', onFinished)\n .removeListener('close', onAbort)\n\n if (!err) {\n try {\n writer.end()\n } catch (er) {\n err = er\n }\n }\n\n writer.destroy(err)\n\n if (err && (err.code !== 'UND_ERR_INFO' || err.message !== 'reset')) {\n util.destroy(body, err)\n } else {\n util.destroy(body)\n }\n }\n\n body\n .on('data', onData)\n .on('end', onFinished)\n .on('error', onFinished)\n .on('close', onAbort)\n\n if (body.resume) {\n body.resume()\n }\n\n socket\n .on('drain', onDrain)\n .on('error', onFinished)\n}\n\nasync function writeBlob ({ h2stream, body, client, request, socket, contentLength, header, expectsPayload }) {\n assert(contentLength === body.size, 'blob body must have content length')\n\n const isH2 = client[kHTTPConnVersion] === 'h2'\n try {\n if (contentLength != null && contentLength !== body.size) {\n throw new RequestContentLengthMismatchError()\n }\n\n const buffer = Buffer.from(await body.arrayBuffer())\n\n if (isH2) {\n h2stream.cork()\n h2stream.write(buffer)\n h2stream.uncork()\n } else {\n socket.cork()\n socket.write(`${header}content-length: ${contentLength}\\r\\n\\r\\n`, 'latin1')\n socket.write(buffer)\n socket.uncork()\n }\n\n request.onBodySent(buffer)\n request.onRequestSent()\n\n if (!expectsPayload) {\n socket[kReset] = true\n }\n\n resume(client)\n } catch (err) {\n util.destroy(isH2 ? h2stream : socket, err)\n }\n}\n\nasync function writeIterable ({ h2stream, body, client, request, socket, contentLength, header, expectsPayload }) {\n assert(contentLength !== 0 || client[kRunning] === 0, 'iterator body cannot be pipelined')\n\n let callback = null\n function onDrain () {\n if (callback) {\n const cb = callback\n callback = null\n cb()\n }\n }\n\n const waitForDrain = () => new Promise((resolve, reject) => {\n assert(callback === null)\n\n if (socket[kError]) {\n reject(socket[kError])\n } else {\n callback = resolve\n }\n })\n\n if (client[kHTTPConnVersion] === 'h2') {\n h2stream\n .on('close', onDrain)\n .on('drain', onDrain)\n\n try {\n // It's up to the user to somehow abort the async iterable.\n for await (const chunk of body) {\n if (socket[kError]) {\n throw socket[kError]\n }\n\n const res = h2stream.write(chunk)\n request.onBodySent(chunk)\n if (!res) {\n await waitForDrain()\n }\n }\n } catch (err) {\n h2stream.destroy(err)\n } finally {\n request.onRequestSent()\n h2stream.end()\n h2stream\n .off('close', onDrain)\n .off('drain', onDrain)\n }\n\n return\n }\n\n socket\n .on('close', onDrain)\n .on('drain', onDrain)\n\n const writer = new AsyncWriter({ socket, request, contentLength, client, expectsPayload, header })\n try {\n // It's up to the user to somehow abort the async iterable.\n for await (const chunk of body) {\n if (socket[kError]) {\n throw socket[kError]\n }\n\n if (!writer.write(chunk)) {\n await waitForDrain()\n }\n }\n\n writer.end()\n } catch (err) {\n writer.destroy(err)\n } finally {\n socket\n .off('close', onDrain)\n .off('drain', onDrain)\n }\n}\n\nclass AsyncWriter {\n constructor ({ socket, request, contentLength, client, expectsPayload, header }) {\n this.socket = socket\n this.request = request\n this.contentLength = contentLength\n this.client = client\n this.bytesWritten = 0\n this.expectsPayload = expectsPayload\n this.header = header\n\n socket[kWriting] = true\n }\n\n write (chunk) {\n const { socket, request, contentLength, client, bytesWritten, expectsPayload, header } = this\n\n if (socket[kError]) {\n throw socket[kError]\n }\n\n if (socket.destroyed) {\n return false\n }\n\n const len = Buffer.byteLength(chunk)\n if (!len) {\n return true\n }\n\n // We should defer writing chunks.\n if (contentLength !== null && bytesWritten + len > contentLength) {\n if (client[kStrictContentLength]) {\n throw new RequestContentLengthMismatchError()\n }\n\n process.emitWarning(new RequestContentLengthMismatchError())\n }\n\n socket.cork()\n\n if (bytesWritten === 0) {\n if (!expectsPayload) {\n socket[kReset] = true\n }\n\n if (contentLength === null) {\n socket.write(`${header}transfer-encoding: chunked\\r\\n`, 'latin1')\n } else {\n socket.write(`${header}content-length: ${contentLength}\\r\\n\\r\\n`, 'latin1')\n }\n }\n\n if (contentLength === null) {\n socket.write(`\\r\\n${len.toString(16)}\\r\\n`, 'latin1')\n }\n\n this.bytesWritten += len\n\n const ret = socket.write(chunk)\n\n socket.uncork()\n\n request.onBodySent(chunk)\n\n if (!ret) {\n if (socket[kParser].timeout && socket[kParser].timeoutType === TIMEOUT_HEADERS) {\n // istanbul ignore else: only for jest\n if (socket[kParser].timeout.refresh) {\n socket[kParser].timeout.refresh()\n }\n }\n }\n\n return ret\n }\n\n end () {\n const { socket, contentLength, client, bytesWritten, expectsPayload, header, request } = this\n request.onRequestSent()\n\n socket[kWriting] = false\n\n if (socket[kError]) {\n throw socket[kError]\n }\n\n if (socket.destroyed) {\n return\n }\n\n if (bytesWritten === 0) {\n if (expectsPayload) {\n // https://tools.ietf.org/html/rfc7230#section-3.3.2\n // A user agent SHOULD send a Content-Length in a request message when\n // no Transfer-Encoding is sent and the request method defines a meaning\n // for an enclosed payload body.\n\n socket.write(`${header}content-length: 0\\r\\n\\r\\n`, 'latin1')\n } else {\n socket.write(`${header}\\r\\n`, 'latin1')\n }\n } else if (contentLength === null) {\n socket.write('\\r\\n0\\r\\n\\r\\n', 'latin1')\n }\n\n if (contentLength !== null && bytesWritten !== contentLength) {\n if (client[kStrictContentLength]) {\n throw new RequestContentLengthMismatchError()\n } else {\n process.emitWarning(new RequestContentLengthMismatchError())\n }\n }\n\n if (socket[kParser].timeout && socket[kParser].timeoutType === TIMEOUT_HEADERS) {\n // istanbul ignore else: only for jest\n if (socket[kParser].timeout.refresh) {\n socket[kParser].timeout.refresh()\n }\n }\n\n resume(client)\n }\n\n destroy (err) {\n const { socket, client } = this\n\n socket[kWriting] = false\n\n if (err) {\n assert(client[kRunning] <= 1, 'pipeline should only contain this request')\n util.destroy(socket, err)\n }\n }\n}\n\nfunction errorRequest (client, request, err) {\n try {\n request.onError(err)\n assert(request.aborted)\n } catch (err) {\n client.emit('error', err)\n }\n}\n\nmodule.exports = Client\n","/* eslint-disable */\n\n'use strict'\n\n// Extracted from node/lib/internal/fixed_queue.js\n\n// Currently optimal queue size, tested on V8 6.0 - 6.6. Must be power of two.\nconst kSize = 2048;\nconst kMask = kSize - 1;\n\n// The FixedQueue is implemented as a singly-linked list of fixed-size\n// circular buffers. It looks something like this:\n//\n// head tail\n// | |\n// v v\n// +-----------+ <-----\\ +-----------+ <------\\ +-----------+\n// | [null] | \\----- | next | \\------- | next |\n// +-----------+ +-----------+ +-----------+\n// | item | <-- bottom | item | <-- bottom | [empty] |\n// | item | | item | | [empty] |\n// | item | | item | | [empty] |\n// | item | | item | | [empty] |\n// | item | | item | bottom --> | item |\n// | item | | item | | item |\n// | ... | | ... | | ... |\n// | item | | item | | item |\n// | item | | item | | item |\n// | [empty] | <-- top | item | | item |\n// | [empty] | | item | | item |\n// | [empty] | | [empty] | <-- top top --> | [empty] |\n// +-----------+ +-----------+ +-----------+\n//\n// Or, if there is only one circular buffer, it looks something\n// like either of these:\n//\n// head tail head tail\n// | | | |\n// v v v v\n// +-----------+ +-----------+\n// | [null] | | [null] |\n// +-----------+ +-----------+\n// | [empty] | | item |\n// | [empty] | | item |\n// | item | <-- bottom top --> | [empty] |\n// | item | | [empty] |\n// | [empty] | <-- top bottom --> | item |\n// | [empty] | | item |\n// +-----------+ +-----------+\n//\n// Adding a value means moving `top` forward by one, removing means\n// moving `bottom` forward by one. After reaching the end, the queue\n// wraps around.\n//\n// When `top === bottom` the current queue is empty and when\n// `top + 1 === bottom` it's full. This wastes a single space of storage\n// but allows much quicker checks.\n\nclass FixedCircularBuffer {\n constructor() {\n this.bottom = 0;\n this.top = 0;\n this.list = new Array(kSize);\n this.next = null;\n }\n\n isEmpty() {\n return this.top === this.bottom;\n }\n\n isFull() {\n return ((this.top + 1) & kMask) === this.bottom;\n }\n\n push(data) {\n this.list[this.top] = data;\n this.top = (this.top + 1) & kMask;\n }\n\n shift() {\n const nextItem = this.list[this.bottom];\n if (nextItem === undefined)\n return null;\n this.list[this.bottom] = undefined;\n this.bottom = (this.bottom + 1) & kMask;\n return nextItem;\n }\n}\n\nmodule.exports = class FixedQueue {\n constructor() {\n this.head = this.tail = new FixedCircularBuffer();\n }\n\n isEmpty() {\n return this.head.isEmpty();\n }\n\n push(data) {\n if (this.head.isFull()) {\n // Head is full: Creates a new queue, sets the old queue's `.next` to it,\n // and sets it as the new main queue.\n this.head = this.head.next = new FixedCircularBuffer();\n }\n this.head.push(data);\n }\n\n shift() {\n const tail = this.tail;\n const next = tail.shift();\n if (tail.isEmpty() && tail.next !== null) {\n // If there is another queue, it forms the new tail.\n this.tail = tail.next;\n }\n return next;\n }\n};\n","const { kFree, kConnected, kPending, kQueued, kRunning, kSize } = require('./core/symbols')\nconst kPool = Symbol('pool')\n\nclass PoolStats {\n constructor (pool) {\n this[kPool] = pool\n }\n\n get connected () {\n return this[kPool][kConnected]\n }\n\n get free () {\n return this[kPool][kFree]\n }\n\n get pending () {\n return this[kPool][kPending]\n }\n\n get queued () {\n return this[kPool][kQueued]\n }\n\n get running () {\n return this[kPool][kRunning]\n }\n\n get size () {\n return this[kPool][kSize]\n }\n}\n\nmodule.exports = PoolStats\n","'use strict'\n\nconst DispatcherBase = require('./dispatcher-base')\nconst FixedQueue = require('./node/fixed-queue')\nconst { kConnected, kSize, kRunning, kPending, kQueued, kBusy, kFree, kUrl, kClose, kDestroy, kDispatch } = require('./core/symbols')\nconst PoolStats = require('./pool-stats')\n\nconst kClients = Symbol('clients')\nconst kNeedDrain = Symbol('needDrain')\nconst kQueue = Symbol('queue')\nconst kClosedResolve = Symbol('closed resolve')\nconst kOnDrain = Symbol('onDrain')\nconst kOnConnect = Symbol('onConnect')\nconst kOnDisconnect = Symbol('onDisconnect')\nconst kOnConnectionError = Symbol('onConnectionError')\nconst kGetDispatcher = Symbol('get dispatcher')\nconst kAddClient = Symbol('add client')\nconst kRemoveClient = Symbol('remove client')\nconst kStats = Symbol('stats')\n\nclass PoolBase extends DispatcherBase {\n constructor () {\n super()\n\n this[kQueue] = new FixedQueue()\n this[kClients] = []\n this[kQueued] = 0\n\n const pool = this\n\n this[kOnDrain] = function onDrain (origin, targets) {\n const queue = pool[kQueue]\n\n let needDrain = false\n\n while (!needDrain) {\n const item = queue.shift()\n if (!item) {\n break\n }\n pool[kQueued]--\n needDrain = !this.dispatch(item.opts, item.handler)\n }\n\n this[kNeedDrain] = needDrain\n\n if (!this[kNeedDrain] && pool[kNeedDrain]) {\n pool[kNeedDrain] = false\n pool.emit('drain', origin, [pool, ...targets])\n }\n\n if (pool[kClosedResolve] && queue.isEmpty()) {\n Promise\n .all(pool[kClients].map(c => c.close()))\n .then(pool[kClosedResolve])\n }\n }\n\n this[kOnConnect] = (origin, targets) => {\n pool.emit('connect', origin, [pool, ...targets])\n }\n\n this[kOnDisconnect] = (origin, targets, err) => {\n pool.emit('disconnect', origin, [pool, ...targets], err)\n }\n\n this[kOnConnectionError] = (origin, targets, err) => {\n pool.emit('connectionError', origin, [pool, ...targets], err)\n }\n\n this[kStats] = new PoolStats(this)\n }\n\n get [kBusy] () {\n return this[kNeedDrain]\n }\n\n get [kConnected] () {\n return this[kClients].filter(client => client[kConnected]).length\n }\n\n get [kFree] () {\n return this[kClients].filter(client => client[kConnected] && !client[kNeedDrain]).length\n }\n\n get [kPending] () {\n let ret = this[kQueued]\n for (const { [kPending]: pending } of this[kClients]) {\n ret += pending\n }\n return ret\n }\n\n get [kRunning] () {\n let ret = 0\n for (const { [kRunning]: running } of this[kClients]) {\n ret += running\n }\n return ret\n }\n\n get [kSize] () {\n let ret = this[kQueued]\n for (const { [kSize]: size } of this[kClients]) {\n ret += size\n }\n return ret\n }\n\n get stats () {\n return this[kStats]\n }\n\n async [kClose] () {\n if (this[kQueue].isEmpty()) {\n return Promise.all(this[kClients].map(c => c.close()))\n } else {\n return new Promise((resolve) => {\n this[kClosedResolve] = resolve\n })\n }\n }\n\n async [kDestroy] (err) {\n while (true) {\n const item = this[kQueue].shift()\n if (!item) {\n break\n }\n item.handler.onError(err)\n }\n\n return Promise.all(this[kClients].map(c => c.destroy(err)))\n }\n\n [kDispatch] (opts, handler) {\n const dispatcher = this[kGetDispatcher]()\n\n if (!dispatcher) {\n this[kNeedDrain] = true\n this[kQueue].push({ opts, handler })\n this[kQueued]++\n } else if (!dispatcher.dispatch(opts, handler)) {\n dispatcher[kNeedDrain] = true\n this[kNeedDrain] = !this[kGetDispatcher]()\n }\n\n return !this[kNeedDrain]\n }\n\n [kAddClient] (client) {\n client\n .on('drain', this[kOnDrain])\n .on('connect', this[kOnConnect])\n .on('disconnect', this[kOnDisconnect])\n .on('connectionError', this[kOnConnectionError])\n\n this[kClients].push(client)\n\n if (this[kNeedDrain]) {\n process.nextTick(() => {\n if (this[kNeedDrain]) {\n this[kOnDrain](client[kUrl], [this, client])\n }\n })\n }\n\n return this\n }\n\n [kRemoveClient] (client) {\n client.close(() => {\n const idx = this[kClients].indexOf(client)\n if (idx !== -1) {\n this[kClients].splice(idx, 1)\n }\n })\n\n this[kNeedDrain] = this[kClients].some(dispatcher => (\n !dispatcher[kNeedDrain] &&\n dispatcher.closed !== true &&\n dispatcher.destroyed !== true\n ))\n }\n}\n\nmodule.exports = {\n PoolBase,\n kClients,\n kNeedDrain,\n kAddClient,\n kRemoveClient,\n kGetDispatcher\n}\n","'use strict'\n\nconst {\n PoolBase,\n kClients,\n kNeedDrain,\n kAddClient,\n kGetDispatcher\n} = require('./pool-base')\nconst Client = require('./client')\nconst {\n InvalidArgumentError\n} = require('./core/errors')\nconst util = require('./core/util')\nconst { kUrl, kInterceptors } = require('./core/symbols')\nconst buildConnector = require('./core/connect')\n\nconst kOptions = Symbol('options')\nconst kConnections = Symbol('connections')\nconst kFactory = Symbol('factory')\n\nfunction defaultFactory (origin, opts) {\n return new Client(origin, opts)\n}\n\nclass Pool extends PoolBase {\n constructor (origin, {\n connections,\n factory = defaultFactory,\n connect,\n connectTimeout,\n tls,\n maxCachedSessions,\n socketPath,\n autoSelectFamily,\n autoSelectFamilyAttemptTimeout,\n allowH2,\n ...options\n } = {}) {\n super()\n\n if (connections != null && (!Number.isFinite(connections) || connections < 0)) {\n throw new InvalidArgumentError('invalid connections')\n }\n\n if (typeof factory !== 'function') {\n throw new InvalidArgumentError('factory must be a function.')\n }\n\n if (connect != null && typeof connect !== 'function' && typeof connect !== 'object') {\n throw new InvalidArgumentError('connect must be a function or an object')\n }\n\n if (typeof connect !== 'function') {\n connect = buildConnector({\n ...tls,\n maxCachedSessions,\n allowH2,\n socketPath,\n timeout: connectTimeout,\n ...(util.nodeHasAutoSelectFamily && autoSelectFamily ? { autoSelectFamily, autoSelectFamilyAttemptTimeout } : undefined),\n ...connect\n })\n }\n\n this[kInterceptors] = options.interceptors && options.interceptors.Pool && Array.isArray(options.interceptors.Pool)\n ? options.interceptors.Pool\n : []\n this[kConnections] = connections || null\n this[kUrl] = util.parseOrigin(origin)\n this[kOptions] = { ...util.deepClone(options), connect, allowH2 }\n this[kOptions].interceptors = options.interceptors\n ? { ...options.interceptors }\n : undefined\n this[kFactory] = factory\n\n this.on('connectionError', (origin, targets, error) => {\n // If a connection error occurs, we remove the client from the pool,\n // and emit a connectionError event. They will not be re-used.\n // Fixes https://github.com/nodejs/undici/issues/3895\n for (const target of targets) {\n // Do not use kRemoveClient here, as it will close the client,\n // but the client cannot be closed in this state.\n const idx = this[kClients].indexOf(target)\n if (idx !== -1) {\n this[kClients].splice(idx, 1)\n }\n }\n })\n }\n\n [kGetDispatcher] () {\n let dispatcher = this[kClients].find(dispatcher => !dispatcher[kNeedDrain])\n\n if (dispatcher) {\n return dispatcher\n }\n\n if (!this[kConnections] || this[kClients].length < this[kConnections]) {\n dispatcher = this[kFactory](this[kUrl], this[kOptions])\n this[kAddClient](dispatcher)\n }\n\n return dispatcher\n }\n}\n\nmodule.exports = Pool\n","'use strict'\n\nconst {\n BalancedPoolMissingUpstreamError,\n InvalidArgumentError\n} = require('./core/errors')\nconst {\n PoolBase,\n kClients,\n kNeedDrain,\n kAddClient,\n kRemoveClient,\n kGetDispatcher\n} = require('./pool-base')\nconst Pool = require('./pool')\nconst { kUrl, kInterceptors } = require('./core/symbols')\nconst { parseOrigin } = require('./core/util')\nconst kFactory = Symbol('factory')\n\nconst kOptions = Symbol('options')\nconst kGreatestCommonDivisor = Symbol('kGreatestCommonDivisor')\nconst kCurrentWeight = Symbol('kCurrentWeight')\nconst kIndex = Symbol('kIndex')\nconst kWeight = Symbol('kWeight')\nconst kMaxWeightPerServer = Symbol('kMaxWeightPerServer')\nconst kErrorPenalty = Symbol('kErrorPenalty')\n\nfunction getGreatestCommonDivisor (a, b) {\n if (b === 0) return a\n return getGreatestCommonDivisor(b, a % b)\n}\n\nfunction defaultFactory (origin, opts) {\n return new Pool(origin, opts)\n}\n\nclass BalancedPool extends PoolBase {\n constructor (upstreams = [], { factory = defaultFactory, ...opts } = {}) {\n super()\n\n this[kOptions] = opts\n this[kIndex] = -1\n this[kCurrentWeight] = 0\n\n this[kMaxWeightPerServer] = this[kOptions].maxWeightPerServer || 100\n this[kErrorPenalty] = this[kOptions].errorPenalty || 15\n\n if (!Array.isArray(upstreams)) {\n upstreams = [upstreams]\n }\n\n if (typeof factory !== 'function') {\n throw new InvalidArgumentError('factory must be a function.')\n }\n\n this[kInterceptors] = opts.interceptors && opts.interceptors.BalancedPool && Array.isArray(opts.interceptors.BalancedPool)\n ? opts.interceptors.BalancedPool\n : []\n this[kFactory] = factory\n\n for (const upstream of upstreams) {\n this.addUpstream(upstream)\n }\n this._updateBalancedPoolStats()\n }\n\n addUpstream (upstream) {\n const upstreamOrigin = parseOrigin(upstream).origin\n\n if (this[kClients].find((pool) => (\n pool[kUrl].origin === upstreamOrigin &&\n pool.closed !== true &&\n pool.destroyed !== true\n ))) {\n return this\n }\n const pool = this[kFactory](upstreamOrigin, Object.assign({}, this[kOptions]))\n\n this[kAddClient](pool)\n pool.on('connect', () => {\n pool[kWeight] = Math.min(this[kMaxWeightPerServer], pool[kWeight] + this[kErrorPenalty])\n })\n\n pool.on('connectionError', () => {\n pool[kWeight] = Math.max(1, pool[kWeight] - this[kErrorPenalty])\n this._updateBalancedPoolStats()\n })\n\n pool.on('disconnect', (...args) => {\n const err = args[2]\n if (err && err.code === 'UND_ERR_SOCKET') {\n // decrease the weight of the pool.\n pool[kWeight] = Math.max(1, pool[kWeight] - this[kErrorPenalty])\n this._updateBalancedPoolStats()\n }\n })\n\n for (const client of this[kClients]) {\n client[kWeight] = this[kMaxWeightPerServer]\n }\n\n this._updateBalancedPoolStats()\n\n return this\n }\n\n _updateBalancedPoolStats () {\n this[kGreatestCommonDivisor] = this[kClients].map(p => p[kWeight]).reduce(getGreatestCommonDivisor, 0)\n }\n\n removeUpstream (upstream) {\n const upstreamOrigin = parseOrigin(upstream).origin\n\n const pool = this[kClients].find((pool) => (\n pool[kUrl].origin === upstreamOrigin &&\n pool.closed !== true &&\n pool.destroyed !== true\n ))\n\n if (pool) {\n this[kRemoveClient](pool)\n }\n\n return this\n }\n\n get upstreams () {\n return this[kClients]\n .filter(dispatcher => dispatcher.closed !== true && dispatcher.destroyed !== true)\n .map((p) => p[kUrl].origin)\n }\n\n [kGetDispatcher] () {\n // We validate that pools is greater than 0,\n // otherwise we would have to wait until an upstream\n // is added, which might never happen.\n if (this[kClients].length === 0) {\n throw new BalancedPoolMissingUpstreamError()\n }\n\n const dispatcher = this[kClients].find(dispatcher => (\n !dispatcher[kNeedDrain] &&\n dispatcher.closed !== true &&\n dispatcher.destroyed !== true\n ))\n\n if (!dispatcher) {\n return\n }\n\n const allClientsBusy = this[kClients].map(pool => pool[kNeedDrain]).reduce((a, b) => a && b, true)\n\n if (allClientsBusy) {\n return\n }\n\n let counter = 0\n\n let maxWeightIndex = this[kClients].findIndex(pool => !pool[kNeedDrain])\n\n while (counter++ < this[kClients].length) {\n this[kIndex] = (this[kIndex] + 1) % this[kClients].length\n const pool = this[kClients][this[kIndex]]\n\n // find pool index with the largest weight\n if (pool[kWeight] > this[kClients][maxWeightIndex][kWeight] && !pool[kNeedDrain]) {\n maxWeightIndex = this[kIndex]\n }\n\n // decrease the current weight every `this[kClients].length`.\n if (this[kIndex] === 0) {\n // Set the current weight to the next lower weight.\n this[kCurrentWeight] = this[kCurrentWeight] - this[kGreatestCommonDivisor]\n\n if (this[kCurrentWeight] <= 0) {\n this[kCurrentWeight] = this[kMaxWeightPerServer]\n }\n }\n if (pool[kWeight] >= this[kCurrentWeight] && (!pool[kNeedDrain])) {\n return pool\n }\n }\n\n this[kCurrentWeight] = this[kClients][maxWeightIndex][kWeight]\n this[kIndex] = maxWeightIndex\n return this[kClients][maxWeightIndex]\n }\n}\n\nmodule.exports = BalancedPool\n","'use strict'\n\n/* istanbul ignore file: only for Node 12 */\n\nconst { kConnected, kSize } = require('../core/symbols')\n\nclass CompatWeakRef {\n constructor (value) {\n this.value = value\n }\n\n deref () {\n return this.value[kConnected] === 0 && this.value[kSize] === 0\n ? undefined\n : this.value\n }\n}\n\nclass CompatFinalizer {\n constructor (finalizer) {\n this.finalizer = finalizer\n }\n\n register (dispatcher, key) {\n if (dispatcher.on) {\n dispatcher.on('disconnect', () => {\n if (dispatcher[kConnected] === 0 && dispatcher[kSize] === 0) {\n this.finalizer(key)\n }\n })\n }\n }\n}\n\nmodule.exports = function () {\n // FIXME: remove workaround when the Node bug is fixed\n // https://github.com/nodejs/node/issues/49344#issuecomment-1741776308\n if (process.env.NODE_V8_COVERAGE) {\n return {\n WeakRef: CompatWeakRef,\n FinalizationRegistry: CompatFinalizer\n }\n }\n return {\n WeakRef: global.WeakRef || CompatWeakRef,\n FinalizationRegistry: global.FinalizationRegistry || CompatFinalizer\n }\n}\n","'use strict'\n\nconst { InvalidArgumentError } = require('./core/errors')\nconst { kClients, kRunning, kClose, kDestroy, kDispatch, kInterceptors } = require('./core/symbols')\nconst DispatcherBase = require('./dispatcher-base')\nconst Pool = require('./pool')\nconst Client = require('./client')\nconst util = require('./core/util')\nconst createRedirectInterceptor = require('./interceptor/redirectInterceptor')\nconst { WeakRef, FinalizationRegistry } = require('./compat/dispatcher-weakref')()\n\nconst kOnConnect = Symbol('onConnect')\nconst kOnDisconnect = Symbol('onDisconnect')\nconst kOnConnectionError = Symbol('onConnectionError')\nconst kMaxRedirections = Symbol('maxRedirections')\nconst kOnDrain = Symbol('onDrain')\nconst kFactory = Symbol('factory')\nconst kFinalizer = Symbol('finalizer')\nconst kOptions = Symbol('options')\n\nfunction defaultFactory (origin, opts) {\n return opts && opts.connections === 1\n ? new Client(origin, opts)\n : new Pool(origin, opts)\n}\n\nclass Agent extends DispatcherBase {\n constructor ({ factory = defaultFactory, maxRedirections = 0, connect, ...options } = {}) {\n super()\n\n if (typeof factory !== 'function') {\n throw new InvalidArgumentError('factory must be a function.')\n }\n\n if (connect != null && typeof connect !== 'function' && typeof connect !== 'object') {\n throw new InvalidArgumentError('connect must be a function or an object')\n }\n\n if (!Number.isInteger(maxRedirections) || maxRedirections < 0) {\n throw new InvalidArgumentError('maxRedirections must be a positive number')\n }\n\n if (connect && typeof connect !== 'function') {\n connect = { ...connect }\n }\n\n this[kInterceptors] = options.interceptors && options.interceptors.Agent && Array.isArray(options.interceptors.Agent)\n ? options.interceptors.Agent\n : [createRedirectInterceptor({ maxRedirections })]\n\n this[kOptions] = { ...util.deepClone(options), connect }\n this[kOptions].interceptors = options.interceptors\n ? { ...options.interceptors }\n : undefined\n this[kMaxRedirections] = maxRedirections\n this[kFactory] = factory\n this[kClients] = new Map()\n this[kFinalizer] = new FinalizationRegistry(/* istanbul ignore next: gc is undeterministic */ key => {\n const ref = this[kClients].get(key)\n if (ref !== undefined && ref.deref() === undefined) {\n this[kClients].delete(key)\n }\n })\n\n const agent = this\n\n this[kOnDrain] = (origin, targets) => {\n agent.emit('drain', origin, [agent, ...targets])\n }\n\n this[kOnConnect] = (origin, targets) => {\n agent.emit('connect', origin, [agent, ...targets])\n }\n\n this[kOnDisconnect] = (origin, targets, err) => {\n agent.emit('disconnect', origin, [agent, ...targets], err)\n }\n\n this[kOnConnectionError] = (origin, targets, err) => {\n agent.emit('connectionError', origin, [agent, ...targets], err)\n }\n }\n\n get [kRunning] () {\n let ret = 0\n for (const ref of this[kClients].values()) {\n const client = ref.deref()\n /* istanbul ignore next: gc is undeterministic */\n if (client) {\n ret += client[kRunning]\n }\n }\n return ret\n }\n\n [kDispatch] (opts, handler) {\n let key\n if (opts.origin && (typeof opts.origin === 'string' || opts.origin instanceof URL)) {\n key = String(opts.origin)\n } else {\n throw new InvalidArgumentError('opts.origin must be a non-empty string or URL.')\n }\n\n const ref = this[kClients].get(key)\n\n let dispatcher = ref ? ref.deref() : null\n if (!dispatcher) {\n dispatcher = this[kFactory](opts.origin, this[kOptions])\n .on('drain', this[kOnDrain])\n .on('connect', this[kOnConnect])\n .on('disconnect', this[kOnDisconnect])\n .on('connectionError', this[kOnConnectionError])\n\n this[kClients].set(key, new WeakRef(dispatcher))\n this[kFinalizer].register(dispatcher, key)\n }\n\n return dispatcher.dispatch(opts, handler)\n }\n\n async [kClose] () {\n const closePromises = []\n for (const ref of this[kClients].values()) {\n const client = ref.deref()\n /* istanbul ignore else: gc is undeterministic */\n if (client) {\n closePromises.push(client.close())\n }\n }\n\n await Promise.all(closePromises)\n }\n\n async [kDestroy] (err) {\n const destroyPromises = []\n for (const ref of this[kClients].values()) {\n const client = ref.deref()\n /* istanbul ignore else: gc is undeterministic */\n if (client) {\n destroyPromises.push(client.destroy(err))\n }\n }\n\n await Promise.all(destroyPromises)\n }\n}\n\nmodule.exports = Agent\n","// Ported from https://github.com/nodejs/undici/pull/907\n\n'use strict'\n\nconst assert = require('assert')\nconst { Readable } = require('stream')\nconst { RequestAbortedError, NotSupportedError, InvalidArgumentError } = require('../core/errors')\nconst util = require('../core/util')\nconst { ReadableStreamFrom, toUSVString } = require('../core/util')\n\nlet Blob\n\nconst kConsume = Symbol('kConsume')\nconst kReading = Symbol('kReading')\nconst kBody = Symbol('kBody')\nconst kAbort = Symbol('abort')\nconst kContentType = Symbol('kContentType')\n\nconst noop = () => {}\n\nmodule.exports = class BodyReadable extends Readable {\n constructor ({\n resume,\n abort,\n contentType = '',\n highWaterMark = 64 * 1024 // Same as nodejs fs streams.\n }) {\n super({\n autoDestroy: true,\n read: resume,\n highWaterMark\n })\n\n this._readableState.dataEmitted = false\n\n this[kAbort] = abort\n this[kConsume] = null\n this[kBody] = null\n this[kContentType] = contentType\n\n // Is stream being consumed through Readable API?\n // This is an optimization so that we avoid checking\n // for 'data' and 'readable' listeners in the hot path\n // inside push().\n this[kReading] = false\n }\n\n destroy (err) {\n if (this.destroyed) {\n // Node < 16\n return this\n }\n\n if (!err && !this._readableState.endEmitted) {\n err = new RequestAbortedError()\n }\n\n if (err) {\n this[kAbort]()\n }\n\n return super.destroy(err)\n }\n\n emit (ev, ...args) {\n if (ev === 'data') {\n // Node < 16.7\n this._readableState.dataEmitted = true\n } else if (ev === 'error') {\n // Node < 16\n this._readableState.errorEmitted = true\n }\n return super.emit(ev, ...args)\n }\n\n on (ev, ...args) {\n if (ev === 'data' || ev === 'readable') {\n this[kReading] = true\n }\n return super.on(ev, ...args)\n }\n\n addListener (ev, ...args) {\n return this.on(ev, ...args)\n }\n\n off (ev, ...args) {\n const ret = super.off(ev, ...args)\n if (ev === 'data' || ev === 'readable') {\n this[kReading] = (\n this.listenerCount('data') > 0 ||\n this.listenerCount('readable') > 0\n )\n }\n return ret\n }\n\n removeListener (ev, ...args) {\n return this.off(ev, ...args)\n }\n\n push (chunk) {\n if (this[kConsume] && chunk !== null && this.readableLength === 0) {\n consumePush(this[kConsume], chunk)\n return this[kReading] ? super.push(chunk) : true\n }\n return super.push(chunk)\n }\n\n // https://fetch.spec.whatwg.org/#dom-body-text\n async text () {\n return consume(this, 'text')\n }\n\n // https://fetch.spec.whatwg.org/#dom-body-json\n async json () {\n return consume(this, 'json')\n }\n\n // https://fetch.spec.whatwg.org/#dom-body-blob\n async blob () {\n return consume(this, 'blob')\n }\n\n // https://fetch.spec.whatwg.org/#dom-body-arraybuffer\n async arrayBuffer () {\n return consume(this, 'arrayBuffer')\n }\n\n // https://fetch.spec.whatwg.org/#dom-body-formdata\n async formData () {\n // TODO: Implement.\n throw new NotSupportedError()\n }\n\n // https://fetch.spec.whatwg.org/#dom-body-bodyused\n get bodyUsed () {\n return util.isDisturbed(this)\n }\n\n // https://fetch.spec.whatwg.org/#dom-body-body\n get body () {\n if (!this[kBody]) {\n this[kBody] = ReadableStreamFrom(this)\n if (this[kConsume]) {\n // TODO: Is this the best way to force a lock?\n this[kBody].getReader() // Ensure stream is locked.\n assert(this[kBody].locked)\n }\n }\n return this[kBody]\n }\n\n dump (opts) {\n let limit = opts && Number.isFinite(opts.limit) ? opts.limit : 262144\n const signal = opts && opts.signal\n\n if (signal) {\n try {\n if (typeof signal !== 'object' || !('aborted' in signal)) {\n throw new InvalidArgumentError('signal must be an AbortSignal')\n }\n util.throwIfAborted(signal)\n } catch (err) {\n return Promise.reject(err)\n }\n }\n\n if (this.closed) {\n return Promise.resolve(null)\n }\n\n return new Promise((resolve, reject) => {\n const signalListenerCleanup = signal\n ? util.addAbortListener(signal, () => {\n this.destroy()\n })\n : noop\n\n this\n .on('close', function () {\n signalListenerCleanup()\n if (signal && signal.aborted) {\n reject(signal.reason || Object.assign(new Error('The operation was aborted'), { name: 'AbortError' }))\n } else {\n resolve(null)\n }\n })\n .on('error', noop)\n .on('data', function (chunk) {\n limit -= chunk.length\n if (limit <= 0) {\n this.destroy()\n }\n })\n .resume()\n })\n }\n}\n\n// https://streams.spec.whatwg.org/#readablestream-locked\nfunction isLocked (self) {\n // Consume is an implicit lock.\n return (self[kBody] && self[kBody].locked === true) || self[kConsume]\n}\n\n// https://fetch.spec.whatwg.org/#body-unusable\nfunction isUnusable (self) {\n return util.isDisturbed(self) || isLocked(self)\n}\n\nasync function consume (stream, type) {\n if (isUnusable(stream)) {\n throw new TypeError('unusable')\n }\n\n assert(!stream[kConsume])\n\n return new Promise((resolve, reject) => {\n stream[kConsume] = {\n type,\n stream,\n resolve,\n reject,\n length: 0,\n body: []\n }\n\n stream\n .on('error', function (err) {\n consumeFinish(this[kConsume], err)\n })\n .on('close', function () {\n if (this[kConsume].body !== null) {\n consumeFinish(this[kConsume], new RequestAbortedError())\n }\n })\n\n process.nextTick(consumeStart, stream[kConsume])\n })\n}\n\nfunction consumeStart (consume) {\n if (consume.body === null) {\n return\n }\n\n const { _readableState: state } = consume.stream\n\n for (const chunk of state.buffer) {\n consumePush(consume, chunk)\n }\n\n if (state.endEmitted) {\n consumeEnd(this[kConsume])\n } else {\n consume.stream.on('end', function () {\n consumeEnd(this[kConsume])\n })\n }\n\n consume.stream.resume()\n\n while (consume.stream.read() != null) {\n // Loop\n }\n}\n\nfunction consumeEnd (consume) {\n const { type, body, resolve, stream, length } = consume\n\n try {\n if (type === 'text') {\n resolve(toUSVString(Buffer.concat(body)))\n } else if (type === 'json') {\n resolve(JSON.parse(Buffer.concat(body)))\n } else if (type === 'arrayBuffer') {\n const dst = new Uint8Array(length)\n\n let pos = 0\n for (const buf of body) {\n dst.set(buf, pos)\n pos += buf.byteLength\n }\n\n resolve(dst.buffer)\n } else if (type === 'blob') {\n if (!Blob) {\n Blob = require('buffer').Blob\n }\n resolve(new Blob(body, { type: stream[kContentType] }))\n }\n\n consumeFinish(consume)\n } catch (err) {\n stream.destroy(err)\n }\n}\n\nfunction consumePush (consume, chunk) {\n consume.length += chunk.length\n consume.body.push(chunk)\n}\n\nfunction consumeFinish (consume, err) {\n if (consume.body === null) {\n return\n }\n\n if (err) {\n consume.reject(err)\n } else {\n consume.resolve()\n }\n\n consume.type = null\n consume.stream = null\n consume.resolve = null\n consume.reject = null\n consume.length = 0\n consume.body = null\n}\n","const assert = require('assert')\nconst {\n ResponseStatusCodeError\n} = require('../core/errors')\nconst { toUSVString } = require('../core/util')\n\nasync function getResolveErrorBodyCallback ({ callback, body, contentType, statusCode, statusMessage, headers }) {\n assert(body)\n\n let chunks = []\n let limit = 0\n\n for await (const chunk of body) {\n chunks.push(chunk)\n limit += chunk.length\n if (limit > 128 * 1024) {\n chunks = null\n break\n }\n }\n\n if (statusCode === 204 || !contentType || !chunks) {\n process.nextTick(callback, new ResponseStatusCodeError(`Response status code ${statusCode}${statusMessage ? `: ${statusMessage}` : ''}`, statusCode, headers))\n return\n }\n\n try {\n if (contentType.startsWith('application/json')) {\n const payload = JSON.parse(toUSVString(Buffer.concat(chunks)))\n process.nextTick(callback, new ResponseStatusCodeError(`Response status code ${statusCode}${statusMessage ? `: ${statusMessage}` : ''}`, statusCode, headers, payload))\n return\n }\n\n if (contentType.startsWith('text/')) {\n const payload = toUSVString(Buffer.concat(chunks))\n process.nextTick(callback, new ResponseStatusCodeError(`Response status code ${statusCode}${statusMessage ? `: ${statusMessage}` : ''}`, statusCode, headers, payload))\n return\n }\n } catch (err) {\n // Process in a fallback if error\n }\n\n process.nextTick(callback, new ResponseStatusCodeError(`Response status code ${statusCode}${statusMessage ? `: ${statusMessage}` : ''}`, statusCode, headers))\n}\n\nmodule.exports = { getResolveErrorBodyCallback }\n","const { addAbortListener } = require('../core/util')\nconst { RequestAbortedError } = require('../core/errors')\n\nconst kListener = Symbol('kListener')\nconst kSignal = Symbol('kSignal')\n\nfunction abort (self) {\n if (self.abort) {\n self.abort()\n } else {\n self.onError(new RequestAbortedError())\n }\n}\n\nfunction addSignal (self, signal) {\n self[kSignal] = null\n self[kListener] = null\n\n if (!signal) {\n return\n }\n\n if (signal.aborted) {\n abort(self)\n return\n }\n\n self[kSignal] = signal\n self[kListener] = () => {\n abort(self)\n }\n\n addAbortListener(self[kSignal], self[kListener])\n}\n\nfunction removeSignal (self) {\n if (!self[kSignal]) {\n return\n }\n\n if ('removeEventListener' in self[kSignal]) {\n self[kSignal].removeEventListener('abort', self[kListener])\n } else {\n self[kSignal].removeListener('abort', self[kListener])\n }\n\n self[kSignal] = null\n self[kListener] = null\n}\n\nmodule.exports = {\n addSignal,\n removeSignal\n}\n","'use strict'\n\nconst Readable = require('./readable')\nconst {\n InvalidArgumentError,\n RequestAbortedError\n} = require('../core/errors')\nconst util = require('../core/util')\nconst { getResolveErrorBodyCallback } = require('./util')\nconst { AsyncResource } = require('async_hooks')\nconst { addSignal, removeSignal } = require('./abort-signal')\n\nclass RequestHandler extends AsyncResource {\n constructor (opts, callback) {\n if (!opts || typeof opts !== 'object') {\n throw new InvalidArgumentError('invalid opts')\n }\n\n const { signal, method, opaque, body, onInfo, responseHeaders, throwOnError, highWaterMark } = opts\n\n try {\n if (typeof callback !== 'function') {\n throw new InvalidArgumentError('invalid callback')\n }\n\n if (highWaterMark && (typeof highWaterMark !== 'number' || highWaterMark < 0)) {\n throw new InvalidArgumentError('invalid highWaterMark')\n }\n\n if (signal && typeof signal.on !== 'function' && typeof signal.addEventListener !== 'function') {\n throw new InvalidArgumentError('signal must be an EventEmitter or EventTarget')\n }\n\n if (method === 'CONNECT') {\n throw new InvalidArgumentError('invalid method')\n }\n\n if (onInfo && typeof onInfo !== 'function') {\n throw new InvalidArgumentError('invalid onInfo callback')\n }\n\n super('UNDICI_REQUEST')\n } catch (err) {\n if (util.isStream(body)) {\n util.destroy(body.on('error', util.nop), err)\n }\n throw err\n }\n\n this.responseHeaders = responseHeaders || null\n this.opaque = opaque || null\n this.callback = callback\n this.res = null\n this.abort = null\n this.body = body\n this.trailers = {}\n this.context = null\n this.onInfo = onInfo || null\n this.throwOnError = throwOnError\n this.highWaterMark = highWaterMark\n\n if (util.isStream(body)) {\n body.on('error', (err) => {\n this.onError(err)\n })\n }\n\n addSignal(this, signal)\n }\n\n onConnect (abort, context) {\n if (!this.callback) {\n throw new RequestAbortedError()\n }\n\n this.abort = abort\n this.context = context\n }\n\n onHeaders (statusCode, rawHeaders, resume, statusMessage) {\n const { callback, opaque, abort, context, responseHeaders, highWaterMark } = this\n\n const headers = responseHeaders === 'raw' ? util.parseRawHeaders(rawHeaders) : util.parseHeaders(rawHeaders)\n\n if (statusCode < 200) {\n if (this.onInfo) {\n this.onInfo({ statusCode, headers })\n }\n return\n }\n\n const parsedHeaders = responseHeaders === 'raw' ? util.parseHeaders(rawHeaders) : headers\n const contentType = parsedHeaders['content-type']\n const body = new Readable({ resume, abort, contentType, highWaterMark })\n\n this.callback = null\n this.res = body\n if (callback !== null) {\n if (this.throwOnError && statusCode >= 400) {\n this.runInAsyncScope(getResolveErrorBodyCallback, null,\n { callback, body, contentType, statusCode, statusMessage, headers }\n )\n } else {\n this.runInAsyncScope(callback, null, null, {\n statusCode,\n headers,\n trailers: this.trailers,\n opaque,\n body,\n context\n })\n }\n }\n }\n\n onData (chunk) {\n const { res } = this\n return res.push(chunk)\n }\n\n onComplete (trailers) {\n const { res } = this\n\n removeSignal(this)\n\n util.parseHeaders(trailers, this.trailers)\n\n res.push(null)\n }\n\n onError (err) {\n const { res, callback, body, opaque } = this\n\n removeSignal(this)\n\n if (callback) {\n // TODO: Does this need queueMicrotask?\n this.callback = null\n queueMicrotask(() => {\n this.runInAsyncScope(callback, null, err, { opaque })\n })\n }\n\n if (res) {\n this.res = null\n // Ensure all queued handlers are invoked before destroying res.\n queueMicrotask(() => {\n util.destroy(res, err)\n })\n }\n\n if (body) {\n this.body = null\n util.destroy(body, err)\n }\n }\n}\n\nfunction request (opts, callback) {\n if (callback === undefined) {\n return new Promise((resolve, reject) => {\n request.call(this, opts, (err, data) => {\n return err ? reject(err) : resolve(data)\n })\n })\n }\n\n try {\n this.dispatch(opts, new RequestHandler(opts, callback))\n } catch (err) {\n if (typeof callback !== 'function') {\n throw err\n }\n const opaque = opts && opts.opaque\n queueMicrotask(() => callback(err, { opaque }))\n }\n}\n\nmodule.exports = request\nmodule.exports.RequestHandler = RequestHandler\n","'use strict'\n\nconst { finished, PassThrough } = require('stream')\nconst {\n InvalidArgumentError,\n InvalidReturnValueError,\n RequestAbortedError\n} = require('../core/errors')\nconst util = require('../core/util')\nconst { getResolveErrorBodyCallback } = require('./util')\nconst { AsyncResource } = require('async_hooks')\nconst { addSignal, removeSignal } = require('./abort-signal')\n\nclass StreamHandler extends AsyncResource {\n constructor (opts, factory, callback) {\n if (!opts || typeof opts !== 'object') {\n throw new InvalidArgumentError('invalid opts')\n }\n\n const { signal, method, opaque, body, onInfo, responseHeaders, throwOnError } = opts\n\n try {\n if (typeof callback !== 'function') {\n throw new InvalidArgumentError('invalid callback')\n }\n\n if (typeof factory !== 'function') {\n throw new InvalidArgumentError('invalid factory')\n }\n\n if (signal && typeof signal.on !== 'function' && typeof signal.addEventListener !== 'function') {\n throw new InvalidArgumentError('signal must be an EventEmitter or EventTarget')\n }\n\n if (method === 'CONNECT') {\n throw new InvalidArgumentError('invalid method')\n }\n\n if (onInfo && typeof onInfo !== 'function') {\n throw new InvalidArgumentError('invalid onInfo callback')\n }\n\n super('UNDICI_STREAM')\n } catch (err) {\n if (util.isStream(body)) {\n util.destroy(body.on('error', util.nop), err)\n }\n throw err\n }\n\n this.responseHeaders = responseHeaders || null\n this.opaque = opaque || null\n this.factory = factory\n this.callback = callback\n this.res = null\n this.abort = null\n this.context = null\n this.trailers = null\n this.body = body\n this.onInfo = onInfo || null\n this.throwOnError = throwOnError || false\n\n if (util.isStream(body)) {\n body.on('error', (err) => {\n this.onError(err)\n })\n }\n\n addSignal(this, signal)\n }\n\n onConnect (abort, context) {\n if (!this.callback) {\n throw new RequestAbortedError()\n }\n\n this.abort = abort\n this.context = context\n }\n\n onHeaders (statusCode, rawHeaders, resume, statusMessage) {\n const { factory, opaque, context, callback, responseHeaders } = this\n\n const headers = responseHeaders === 'raw' ? util.parseRawHeaders(rawHeaders) : util.parseHeaders(rawHeaders)\n\n if (statusCode < 200) {\n if (this.onInfo) {\n this.onInfo({ statusCode, headers })\n }\n return\n }\n\n this.factory = null\n\n let res\n\n if (this.throwOnError && statusCode >= 400) {\n const parsedHeaders = responseHeaders === 'raw' ? util.parseHeaders(rawHeaders) : headers\n const contentType = parsedHeaders['content-type']\n res = new PassThrough()\n\n this.callback = null\n this.runInAsyncScope(getResolveErrorBodyCallback, null,\n { callback, body: res, contentType, statusCode, statusMessage, headers }\n )\n } else {\n if (factory === null) {\n return\n }\n\n res = this.runInAsyncScope(factory, null, {\n statusCode,\n headers,\n opaque,\n context\n })\n\n if (\n !res ||\n typeof res.write !== 'function' ||\n typeof res.end !== 'function' ||\n typeof res.on !== 'function'\n ) {\n throw new InvalidReturnValueError('expected Writable')\n }\n\n // TODO: Avoid finished. It registers an unnecessary amount of listeners.\n finished(res, { readable: false }, (err) => {\n const { callback, res, opaque, trailers, abort } = this\n\n this.res = null\n if (err || !res.readable) {\n util.destroy(res, err)\n }\n\n this.callback = null\n this.runInAsyncScope(callback, null, err || null, { opaque, trailers })\n\n if (err) {\n abort()\n }\n })\n }\n\n res.on('drain', resume)\n\n this.res = res\n\n const needDrain = res.writableNeedDrain !== undefined\n ? res.writableNeedDrain\n : res._writableState && res._writableState.needDrain\n\n return needDrain !== true\n }\n\n onData (chunk) {\n const { res } = this\n\n return res ? res.write(chunk) : true\n }\n\n onComplete (trailers) {\n const { res } = this\n\n removeSignal(this)\n\n if (!res) {\n return\n }\n\n this.trailers = util.parseHeaders(trailers)\n\n res.end()\n }\n\n onError (err) {\n const { res, callback, opaque, body } = this\n\n removeSignal(this)\n\n this.factory = null\n\n if (res) {\n this.res = null\n util.destroy(res, err)\n } else if (callback) {\n this.callback = null\n queueMicrotask(() => {\n this.runInAsyncScope(callback, null, err, { opaque })\n })\n }\n\n if (body) {\n this.body = null\n util.destroy(body, err)\n }\n }\n}\n\nfunction stream (opts, factory, callback) {\n if (callback === undefined) {\n return new Promise((resolve, reject) => {\n stream.call(this, opts, factory, (err, data) => {\n return err ? reject(err) : resolve(data)\n })\n })\n }\n\n try {\n this.dispatch(opts, new StreamHandler(opts, factory, callback))\n } catch (err) {\n if (typeof callback !== 'function') {\n throw err\n }\n const opaque = opts && opts.opaque\n queueMicrotask(() => callback(err, { opaque }))\n }\n}\n\nmodule.exports = stream\n","'use strict'\n\nconst {\n Readable,\n Duplex,\n PassThrough\n} = require('stream')\nconst {\n InvalidArgumentError,\n InvalidReturnValueError,\n RequestAbortedError\n} = require('../core/errors')\nconst util = require('../core/util')\nconst { AsyncResource } = require('async_hooks')\nconst { addSignal, removeSignal } = require('./abort-signal')\nconst assert = require('assert')\n\nconst kResume = Symbol('resume')\n\nclass PipelineRequest extends Readable {\n constructor () {\n super({ autoDestroy: true })\n\n this[kResume] = null\n }\n\n _read () {\n const { [kResume]: resume } = this\n\n if (resume) {\n this[kResume] = null\n resume()\n }\n }\n\n _destroy (err, callback) {\n this._read()\n\n callback(err)\n }\n}\n\nclass PipelineResponse extends Readable {\n constructor (resume) {\n super({ autoDestroy: true })\n this[kResume] = resume\n }\n\n _read () {\n this[kResume]()\n }\n\n _destroy (err, callback) {\n if (!err && !this._readableState.endEmitted) {\n err = new RequestAbortedError()\n }\n\n callback(err)\n }\n}\n\nclass PipelineHandler extends AsyncResource {\n constructor (opts, handler) {\n if (!opts || typeof opts !== 'object') {\n throw new InvalidArgumentError('invalid opts')\n }\n\n if (typeof handler !== 'function') {\n throw new InvalidArgumentError('invalid handler')\n }\n\n const { signal, method, opaque, onInfo, responseHeaders } = opts\n\n if (signal && typeof signal.on !== 'function' && typeof signal.addEventListener !== 'function') {\n throw new InvalidArgumentError('signal must be an EventEmitter or EventTarget')\n }\n\n if (method === 'CONNECT') {\n throw new InvalidArgumentError('invalid method')\n }\n\n if (onInfo && typeof onInfo !== 'function') {\n throw new InvalidArgumentError('invalid onInfo callback')\n }\n\n super('UNDICI_PIPELINE')\n\n this.opaque = opaque || null\n this.responseHeaders = responseHeaders || null\n this.handler = handler\n this.abort = null\n this.context = null\n this.onInfo = onInfo || null\n\n this.req = new PipelineRequest().on('error', util.nop)\n\n this.ret = new Duplex({\n readableObjectMode: opts.objectMode,\n autoDestroy: true,\n read: () => {\n const { body } = this\n\n if (body && body.resume) {\n body.resume()\n }\n },\n write: (chunk, encoding, callback) => {\n const { req } = this\n\n if (req.push(chunk, encoding) || req._readableState.destroyed) {\n callback()\n } else {\n req[kResume] = callback\n }\n },\n destroy: (err, callback) => {\n const { body, req, res, ret, abort } = this\n\n if (!err && !ret._readableState.endEmitted) {\n err = new RequestAbortedError()\n }\n\n if (abort && err) {\n abort()\n }\n\n util.destroy(body, err)\n util.destroy(req, err)\n util.destroy(res, err)\n\n removeSignal(this)\n\n callback(err)\n }\n }).on('prefinish', () => {\n const { req } = this\n\n // Node < 15 does not call _final in same tick.\n req.push(null)\n })\n\n this.res = null\n\n addSignal(this, signal)\n }\n\n onConnect (abort, context) {\n const { ret, res } = this\n\n assert(!res, 'pipeline cannot be retried')\n\n if (ret.destroyed) {\n throw new RequestAbortedError()\n }\n\n this.abort = abort\n this.context = context\n }\n\n onHeaders (statusCode, rawHeaders, resume) {\n const { opaque, handler, context } = this\n\n if (statusCode < 200) {\n if (this.onInfo) {\n const headers = this.responseHeaders === 'raw' ? util.parseRawHeaders(rawHeaders) : util.parseHeaders(rawHeaders)\n this.onInfo({ statusCode, headers })\n }\n return\n }\n\n this.res = new PipelineResponse(resume)\n\n let body\n try {\n this.handler = null\n const headers = this.responseHeaders === 'raw' ? util.parseRawHeaders(rawHeaders) : util.parseHeaders(rawHeaders)\n body = this.runInAsyncScope(handler, null, {\n statusCode,\n headers,\n opaque,\n body: this.res,\n context\n })\n } catch (err) {\n this.res.on('error', util.nop)\n throw err\n }\n\n if (!body || typeof body.on !== 'function') {\n throw new InvalidReturnValueError('expected Readable')\n }\n\n body\n .on('data', (chunk) => {\n const { ret, body } = this\n\n if (!ret.push(chunk) && body.pause) {\n body.pause()\n }\n })\n .on('error', (err) => {\n const { ret } = this\n\n util.destroy(ret, err)\n })\n .on('end', () => {\n const { ret } = this\n\n ret.push(null)\n })\n .on('close', () => {\n const { ret } = this\n\n if (!ret._readableState.ended) {\n util.destroy(ret, new RequestAbortedError())\n }\n })\n\n this.body = body\n }\n\n onData (chunk) {\n const { res } = this\n return res.push(chunk)\n }\n\n onComplete (trailers) {\n const { res } = this\n res.push(null)\n }\n\n onError (err) {\n const { ret } = this\n this.handler = null\n util.destroy(ret, err)\n }\n}\n\nfunction pipeline (opts, handler) {\n try {\n const pipelineHandler = new PipelineHandler(opts, handler)\n this.dispatch({ ...opts, body: pipelineHandler.req }, pipelineHandler)\n return pipelineHandler.ret\n } catch (err) {\n return new PassThrough().destroy(err)\n }\n}\n\nmodule.exports = pipeline\n","'use strict'\n\nconst { InvalidArgumentError, RequestAbortedError, SocketError } = require('../core/errors')\nconst { AsyncResource } = require('async_hooks')\nconst util = require('../core/util')\nconst { addSignal, removeSignal } = require('./abort-signal')\nconst assert = require('assert')\n\nclass UpgradeHandler extends AsyncResource {\n constructor (opts, callback) {\n if (!opts || typeof opts !== 'object') {\n throw new InvalidArgumentError('invalid opts')\n }\n\n if (typeof callback !== 'function') {\n throw new InvalidArgumentError('invalid callback')\n }\n\n const { signal, opaque, responseHeaders } = opts\n\n if (signal && typeof signal.on !== 'function' && typeof signal.addEventListener !== 'function') {\n throw new InvalidArgumentError('signal must be an EventEmitter or EventTarget')\n }\n\n super('UNDICI_UPGRADE')\n\n this.responseHeaders = responseHeaders || null\n this.opaque = opaque || null\n this.callback = callback\n this.abort = null\n this.context = null\n\n addSignal(this, signal)\n }\n\n onConnect (abort, context) {\n if (!this.callback) {\n throw new RequestAbortedError()\n }\n\n this.abort = abort\n this.context = null\n }\n\n onHeaders () {\n throw new SocketError('bad upgrade', null)\n }\n\n onUpgrade (statusCode, rawHeaders, socket) {\n const { callback, opaque, context } = this\n\n assert.strictEqual(statusCode, 101)\n\n removeSignal(this)\n\n this.callback = null\n const headers = this.responseHeaders === 'raw' ? util.parseRawHeaders(rawHeaders) : util.parseHeaders(rawHeaders)\n this.runInAsyncScope(callback, null, null, {\n headers,\n socket,\n opaque,\n context\n })\n }\n\n onError (err) {\n const { callback, opaque } = this\n\n removeSignal(this)\n\n if (callback) {\n this.callback = null\n queueMicrotask(() => {\n this.runInAsyncScope(callback, null, err, { opaque })\n })\n }\n }\n}\n\nfunction upgrade (opts, callback) {\n if (callback === undefined) {\n return new Promise((resolve, reject) => {\n upgrade.call(this, opts, (err, data) => {\n return err ? reject(err) : resolve(data)\n })\n })\n }\n\n try {\n const upgradeHandler = new UpgradeHandler(opts, callback)\n this.dispatch({\n ...opts,\n method: opts.method || 'GET',\n upgrade: opts.protocol || 'Websocket'\n }, upgradeHandler)\n } catch (err) {\n if (typeof callback !== 'function') {\n throw err\n }\n const opaque = opts && opts.opaque\n queueMicrotask(() => callback(err, { opaque }))\n }\n}\n\nmodule.exports = upgrade\n","'use strict'\n\nconst { AsyncResource } = require('async_hooks')\nconst { InvalidArgumentError, RequestAbortedError, SocketError } = require('../core/errors')\nconst util = require('../core/util')\nconst { addSignal, removeSignal } = require('./abort-signal')\n\nclass ConnectHandler extends AsyncResource {\n constructor (opts, callback) {\n if (!opts || typeof opts !== 'object') {\n throw new InvalidArgumentError('invalid opts')\n }\n\n if (typeof callback !== 'function') {\n throw new InvalidArgumentError('invalid callback')\n }\n\n const { signal, opaque, responseHeaders } = opts\n\n if (signal && typeof signal.on !== 'function' && typeof signal.addEventListener !== 'function') {\n throw new InvalidArgumentError('signal must be an EventEmitter or EventTarget')\n }\n\n super('UNDICI_CONNECT')\n\n this.opaque = opaque || null\n this.responseHeaders = responseHeaders || null\n this.callback = callback\n this.abort = null\n\n addSignal(this, signal)\n }\n\n onConnect (abort, context) {\n if (!this.callback) {\n throw new RequestAbortedError()\n }\n\n this.abort = abort\n this.context = context\n }\n\n onHeaders () {\n throw new SocketError('bad connect', null)\n }\n\n onUpgrade (statusCode, rawHeaders, socket) {\n const { callback, opaque, context } = this\n\n removeSignal(this)\n\n this.callback = null\n\n let headers = rawHeaders\n // Indicates is an HTTP2Session\n if (headers != null) {\n headers = this.responseHeaders === 'raw' ? util.parseRawHeaders(rawHeaders) : util.parseHeaders(rawHeaders)\n }\n\n this.runInAsyncScope(callback, null, null, {\n statusCode,\n headers,\n socket,\n opaque,\n context\n })\n }\n\n onError (err) {\n const { callback, opaque } = this\n\n removeSignal(this)\n\n if (callback) {\n this.callback = null\n queueMicrotask(() => {\n this.runInAsyncScope(callback, null, err, { opaque })\n })\n }\n }\n}\n\nfunction connect (opts, callback) {\n if (callback === undefined) {\n return new Promise((resolve, reject) => {\n connect.call(this, opts, (err, data) => {\n return err ? reject(err) : resolve(data)\n })\n })\n }\n\n try {\n const connectHandler = new ConnectHandler(opts, callback)\n this.dispatch({ ...opts, method: 'CONNECT' }, connectHandler)\n } catch (err) {\n if (typeof callback !== 'function') {\n throw err\n }\n const opaque = opts && opts.opaque\n queueMicrotask(() => callback(err, { opaque }))\n }\n}\n\nmodule.exports = connect\n","'use strict'\n\nmodule.exports.request = require('./api-request')\nmodule.exports.stream = require('./api-stream')\nmodule.exports.pipeline = require('./api-pipeline')\nmodule.exports.upgrade = require('./api-upgrade')\nmodule.exports.connect = require('./api-connect')\n","'use strict'\n\nconst { UndiciError } = require('../core/errors')\n\nclass MockNotMatchedError extends UndiciError {\n constructor (message) {\n super(message)\n Error.captureStackTrace(this, MockNotMatchedError)\n this.name = 'MockNotMatchedError'\n this.message = message || 'The request does not match any registered mock dispatches'\n this.code = 'UND_MOCK_ERR_MOCK_NOT_MATCHED'\n }\n}\n\nmodule.exports = {\n MockNotMatchedError\n}\n","'use strict'\n\nmodule.exports = {\n kAgent: Symbol('agent'),\n kOptions: Symbol('options'),\n kFactory: Symbol('factory'),\n kDispatches: Symbol('dispatches'),\n kDispatchKey: Symbol('dispatch key'),\n kDefaultHeaders: Symbol('default headers'),\n kDefaultTrailers: Symbol('default trailers'),\n kContentLength: Symbol('content length'),\n kMockAgent: Symbol('mock agent'),\n kMockAgentSet: Symbol('mock agent set'),\n kMockAgentGet: Symbol('mock agent get'),\n kMockDispatch: Symbol('mock dispatch'),\n kClose: Symbol('close'),\n kOriginalClose: Symbol('original agent close'),\n kOrigin: Symbol('origin'),\n kIsMockActive: Symbol('is mock active'),\n kNetConnect: Symbol('net connect'),\n kGetNetConnect: Symbol('get net connect'),\n kConnected: Symbol('connected')\n}\n","'use strict'\n\nconst { MockNotMatchedError } = require('./mock-errors')\nconst {\n kDispatches,\n kMockAgent,\n kOriginalDispatch,\n kOrigin,\n kGetNetConnect\n} = require('./mock-symbols')\nconst { buildURL, nop } = require('../core/util')\nconst { STATUS_CODES } = require('http')\nconst {\n types: {\n isPromise\n }\n} = require('util')\n\nfunction matchValue (match, value) {\n if (typeof match === 'string') {\n return match === value\n }\n if (match instanceof RegExp) {\n return match.test(value)\n }\n if (typeof match === 'function') {\n return match(value) === true\n }\n return false\n}\n\nfunction lowerCaseEntries (headers) {\n return Object.fromEntries(\n Object.entries(headers).map(([headerName, headerValue]) => {\n return [headerName.toLocaleLowerCase(), headerValue]\n })\n )\n}\n\n/**\n * @param {import('../../index').Headers|string[]|Record} headers\n * @param {string} key\n */\nfunction getHeaderByName (headers, key) {\n if (Array.isArray(headers)) {\n for (let i = 0; i < headers.length; i += 2) {\n if (headers[i].toLocaleLowerCase() === key.toLocaleLowerCase()) {\n return headers[i + 1]\n }\n }\n\n return undefined\n } else if (typeof headers.get === 'function') {\n return headers.get(key)\n } else {\n return lowerCaseEntries(headers)[key.toLocaleLowerCase()]\n }\n}\n\n/** @param {string[]} headers */\nfunction buildHeadersFromArray (headers) { // fetch HeadersList\n const clone = headers.slice()\n const entries = []\n for (let index = 0; index < clone.length; index += 2) {\n entries.push([clone[index], clone[index + 1]])\n }\n return Object.fromEntries(entries)\n}\n\nfunction matchHeaders (mockDispatch, headers) {\n if (typeof mockDispatch.headers === 'function') {\n if (Array.isArray(headers)) { // fetch HeadersList\n headers = buildHeadersFromArray(headers)\n }\n return mockDispatch.headers(headers ? lowerCaseEntries(headers) : {})\n }\n if (typeof mockDispatch.headers === 'undefined') {\n return true\n }\n if (typeof headers !== 'object' || typeof mockDispatch.headers !== 'object') {\n return false\n }\n\n for (const [matchHeaderName, matchHeaderValue] of Object.entries(mockDispatch.headers)) {\n const headerValue = getHeaderByName(headers, matchHeaderName)\n\n if (!matchValue(matchHeaderValue, headerValue)) {\n return false\n }\n }\n return true\n}\n\nfunction safeUrl (path) {\n if (typeof path !== 'string') {\n return path\n }\n\n const pathSegments = path.split('?')\n\n if (pathSegments.length !== 2) {\n return path\n }\n\n const qp = new URLSearchParams(pathSegments.pop())\n qp.sort()\n return [...pathSegments, qp.toString()].join('?')\n}\n\nfunction matchKey (mockDispatch, { path, method, body, headers }) {\n const pathMatch = matchValue(mockDispatch.path, path)\n const methodMatch = matchValue(mockDispatch.method, method)\n const bodyMatch = typeof mockDispatch.body !== 'undefined' ? matchValue(mockDispatch.body, body) : true\n const headersMatch = matchHeaders(mockDispatch, headers)\n return pathMatch && methodMatch && bodyMatch && headersMatch\n}\n\nfunction getResponseData (data) {\n if (Buffer.isBuffer(data)) {\n return data\n } else if (typeof data === 'object') {\n return JSON.stringify(data)\n } else {\n return data.toString()\n }\n}\n\nfunction getMockDispatch (mockDispatches, key) {\n const basePath = key.query ? buildURL(key.path, key.query) : key.path\n const resolvedPath = typeof basePath === 'string' ? safeUrl(basePath) : basePath\n\n // Match path\n let matchedMockDispatches = mockDispatches.filter(({ consumed }) => !consumed).filter(({ path }) => matchValue(safeUrl(path), resolvedPath))\n if (matchedMockDispatches.length === 0) {\n throw new MockNotMatchedError(`Mock dispatch not matched for path '${resolvedPath}'`)\n }\n\n // Match method\n matchedMockDispatches = matchedMockDispatches.filter(({ method }) => matchValue(method, key.method))\n if (matchedMockDispatches.length === 0) {\n throw new MockNotMatchedError(`Mock dispatch not matched for method '${key.method}'`)\n }\n\n // Match body\n matchedMockDispatches = matchedMockDispatches.filter(({ body }) => typeof body !== 'undefined' ? matchValue(body, key.body) : true)\n if (matchedMockDispatches.length === 0) {\n throw new MockNotMatchedError(`Mock dispatch not matched for body '${key.body}'`)\n }\n\n // Match headers\n matchedMockDispatches = matchedMockDispatches.filter((mockDispatch) => matchHeaders(mockDispatch, key.headers))\n if (matchedMockDispatches.length === 0) {\n throw new MockNotMatchedError(`Mock dispatch not matched for headers '${typeof key.headers === 'object' ? JSON.stringify(key.headers) : key.headers}'`)\n }\n\n return matchedMockDispatches[0]\n}\n\nfunction addMockDispatch (mockDispatches, key, data) {\n const baseData = { timesInvoked: 0, times: 1, persist: false, consumed: false }\n const replyData = typeof data === 'function' ? { callback: data } : { ...data }\n const newMockDispatch = { ...baseData, ...key, pending: true, data: { error: null, ...replyData } }\n mockDispatches.push(newMockDispatch)\n return newMockDispatch\n}\n\nfunction deleteMockDispatch (mockDispatches, key) {\n const index = mockDispatches.findIndex(dispatch => {\n if (!dispatch.consumed) {\n return false\n }\n return matchKey(dispatch, key)\n })\n if (index !== -1) {\n mockDispatches.splice(index, 1)\n }\n}\n\nfunction buildKey (opts) {\n const { path, method, body, headers, query } = opts\n return {\n path,\n method,\n body,\n headers,\n query\n }\n}\n\nfunction generateKeyValues (data) {\n return Object.entries(data).reduce((keyValuePairs, [key, value]) => [\n ...keyValuePairs,\n Buffer.from(`${key}`),\n Array.isArray(value) ? value.map(x => Buffer.from(`${x}`)) : Buffer.from(`${value}`)\n ], [])\n}\n\n/**\n * @see https://developer.mozilla.org/en-US/docs/Web/HTTP/Status\n * @param {number} statusCode\n */\nfunction getStatusText (statusCode) {\n return STATUS_CODES[statusCode] || 'unknown'\n}\n\nasync function getResponse (body) {\n const buffers = []\n for await (const data of body) {\n buffers.push(data)\n }\n return Buffer.concat(buffers).toString('utf8')\n}\n\n/**\n * Mock dispatch function used to simulate undici dispatches\n */\nfunction mockDispatch (opts, handler) {\n // Get mock dispatch from built key\n const key = buildKey(opts)\n const mockDispatch = getMockDispatch(this[kDispatches], key)\n\n mockDispatch.timesInvoked++\n\n // Here's where we resolve a callback if a callback is present for the dispatch data.\n if (mockDispatch.data.callback) {\n mockDispatch.data = { ...mockDispatch.data, ...mockDispatch.data.callback(opts) }\n }\n\n // Parse mockDispatch data\n const { data: { statusCode, data, headers, trailers, error }, delay, persist } = mockDispatch\n const { timesInvoked, times } = mockDispatch\n\n // If it's used up and not persistent, mark as consumed\n mockDispatch.consumed = !persist && timesInvoked >= times\n mockDispatch.pending = timesInvoked < times\n\n // If specified, trigger dispatch error\n if (error !== null) {\n deleteMockDispatch(this[kDispatches], key)\n handler.onError(error)\n return true\n }\n\n // Handle the request with a delay if necessary\n if (typeof delay === 'number' && delay > 0) {\n setTimeout(() => {\n handleReply(this[kDispatches])\n }, delay)\n } else {\n handleReply(this[kDispatches])\n }\n\n function handleReply (mockDispatches, _data = data) {\n // fetch's HeadersList is a 1D string array\n const optsHeaders = Array.isArray(opts.headers)\n ? buildHeadersFromArray(opts.headers)\n : opts.headers\n const body = typeof _data === 'function'\n ? _data({ ...opts, headers: optsHeaders })\n : _data\n\n // util.types.isPromise is likely needed for jest.\n if (isPromise(body)) {\n // If handleReply is asynchronous, throwing an error\n // in the callback will reject the promise, rather than\n // synchronously throw the error, which breaks some tests.\n // Rather, we wait for the callback to resolve if it is a\n // promise, and then re-run handleReply with the new body.\n body.then((newData) => handleReply(mockDispatches, newData))\n return\n }\n\n const responseData = getResponseData(body)\n const responseHeaders = generateKeyValues(headers)\n const responseTrailers = generateKeyValues(trailers)\n\n handler.abort = nop\n handler.onHeaders(statusCode, responseHeaders, resume, getStatusText(statusCode))\n handler.onData(Buffer.from(responseData))\n handler.onComplete(responseTrailers)\n deleteMockDispatch(mockDispatches, key)\n }\n\n function resume () {}\n\n return true\n}\n\nfunction buildMockDispatch () {\n const agent = this[kMockAgent]\n const origin = this[kOrigin]\n const originalDispatch = this[kOriginalDispatch]\n\n return function dispatch (opts, handler) {\n if (agent.isMockActive) {\n try {\n mockDispatch.call(this, opts, handler)\n } catch (error) {\n if (error instanceof MockNotMatchedError) {\n const netConnect = agent[kGetNetConnect]()\n if (netConnect === false) {\n throw new MockNotMatchedError(`${error.message}: subsequent request to origin ${origin} was not allowed (net.connect disabled)`)\n }\n if (checkNetConnect(netConnect, origin)) {\n originalDispatch.call(this, opts, handler)\n } else {\n throw new MockNotMatchedError(`${error.message}: subsequent request to origin ${origin} was not allowed (net.connect is not enabled for this origin)`)\n }\n } else {\n throw error\n }\n }\n } else {\n originalDispatch.call(this, opts, handler)\n }\n }\n}\n\nfunction checkNetConnect (netConnect, origin) {\n const url = new URL(origin)\n if (netConnect === true) {\n return true\n } else if (Array.isArray(netConnect) && netConnect.some((matcher) => matchValue(matcher, url.host))) {\n return true\n }\n return false\n}\n\nfunction buildMockOptions (opts) {\n if (opts) {\n const { agent, ...mockOptions } = opts\n return mockOptions\n }\n}\n\nmodule.exports = {\n getResponseData,\n getMockDispatch,\n addMockDispatch,\n deleteMockDispatch,\n buildKey,\n generateKeyValues,\n matchValue,\n getResponse,\n getStatusText,\n mockDispatch,\n buildMockDispatch,\n checkNetConnect,\n buildMockOptions,\n getHeaderByName\n}\n","'use strict'\n\nconst { getResponseData, buildKey, addMockDispatch } = require('./mock-utils')\nconst {\n kDispatches,\n kDispatchKey,\n kDefaultHeaders,\n kDefaultTrailers,\n kContentLength,\n kMockDispatch\n} = require('./mock-symbols')\nconst { InvalidArgumentError } = require('../core/errors')\nconst { buildURL } = require('../core/util')\n\n/**\n * Defines the scope API for an interceptor reply\n */\nclass MockScope {\n constructor (mockDispatch) {\n this[kMockDispatch] = mockDispatch\n }\n\n /**\n * Delay a reply by a set amount in ms.\n */\n delay (waitInMs) {\n if (typeof waitInMs !== 'number' || !Number.isInteger(waitInMs) || waitInMs <= 0) {\n throw new InvalidArgumentError('waitInMs must be a valid integer > 0')\n }\n\n this[kMockDispatch].delay = waitInMs\n return this\n }\n\n /**\n * For a defined reply, never mark as consumed.\n */\n persist () {\n this[kMockDispatch].persist = true\n return this\n }\n\n /**\n * Allow one to define a reply for a set amount of matching requests.\n */\n times (repeatTimes) {\n if (typeof repeatTimes !== 'number' || !Number.isInteger(repeatTimes) || repeatTimes <= 0) {\n throw new InvalidArgumentError('repeatTimes must be a valid integer > 0')\n }\n\n this[kMockDispatch].times = repeatTimes\n return this\n }\n}\n\n/**\n * Defines an interceptor for a Mock\n */\nclass MockInterceptor {\n constructor (opts, mockDispatches) {\n if (typeof opts !== 'object') {\n throw new InvalidArgumentError('opts must be an object')\n }\n if (typeof opts.path === 'undefined') {\n throw new InvalidArgumentError('opts.path must be defined')\n }\n if (typeof opts.method === 'undefined') {\n opts.method = 'GET'\n }\n // See https://github.com/nodejs/undici/issues/1245\n // As per RFC 3986, clients are not supposed to send URI\n // fragments to servers when they retrieve a document,\n if (typeof opts.path === 'string') {\n if (opts.query) {\n opts.path = buildURL(opts.path, opts.query)\n } else {\n // Matches https://github.com/nodejs/undici/blob/main/lib/fetch/index.js#L1811\n const parsedURL = new URL(opts.path, 'data://')\n opts.path = parsedURL.pathname + parsedURL.search\n }\n }\n if (typeof opts.method === 'string') {\n opts.method = opts.method.toUpperCase()\n }\n\n this[kDispatchKey] = buildKey(opts)\n this[kDispatches] = mockDispatches\n this[kDefaultHeaders] = {}\n this[kDefaultTrailers] = {}\n this[kContentLength] = false\n }\n\n createMockScopeDispatchData (statusCode, data, responseOptions = {}) {\n const responseData = getResponseData(data)\n const contentLength = this[kContentLength] ? { 'content-length': responseData.length } : {}\n const headers = { ...this[kDefaultHeaders], ...contentLength, ...responseOptions.headers }\n const trailers = { ...this[kDefaultTrailers], ...responseOptions.trailers }\n\n return { statusCode, data, headers, trailers }\n }\n\n validateReplyParameters (statusCode, data, responseOptions) {\n if (typeof statusCode === 'undefined') {\n throw new InvalidArgumentError('statusCode must be defined')\n }\n if (typeof data === 'undefined') {\n throw new InvalidArgumentError('data must be defined')\n }\n if (typeof responseOptions !== 'object') {\n throw new InvalidArgumentError('responseOptions must be an object')\n }\n }\n\n /**\n * Mock an undici request with a defined reply.\n */\n reply (replyData) {\n // Values of reply aren't available right now as they\n // can only be available when the reply callback is invoked.\n if (typeof replyData === 'function') {\n // We'll first wrap the provided callback in another function,\n // this function will properly resolve the data from the callback\n // when invoked.\n const wrappedDefaultsCallback = (opts) => {\n // Our reply options callback contains the parameter for statusCode, data and options.\n const resolvedData = replyData(opts)\n\n // Check if it is in the right format\n if (typeof resolvedData !== 'object') {\n throw new InvalidArgumentError('reply options callback must return an object')\n }\n\n const { statusCode, data = '', responseOptions = {} } = resolvedData\n this.validateReplyParameters(statusCode, data, responseOptions)\n // Since the values can be obtained immediately we return them\n // from this higher order function that will be resolved later.\n return {\n ...this.createMockScopeDispatchData(statusCode, data, responseOptions)\n }\n }\n\n // Add usual dispatch data, but this time set the data parameter to function that will eventually provide data.\n const newMockDispatch = addMockDispatch(this[kDispatches], this[kDispatchKey], wrappedDefaultsCallback)\n return new MockScope(newMockDispatch)\n }\n\n // We can have either one or three parameters, if we get here,\n // we should have 1-3 parameters. So we spread the arguments of\n // this function to obtain the parameters, since replyData will always\n // just be the statusCode.\n const [statusCode, data = '', responseOptions = {}] = [...arguments]\n this.validateReplyParameters(statusCode, data, responseOptions)\n\n // Send in-already provided data like usual\n const dispatchData = this.createMockScopeDispatchData(statusCode, data, responseOptions)\n const newMockDispatch = addMockDispatch(this[kDispatches], this[kDispatchKey], dispatchData)\n return new MockScope(newMockDispatch)\n }\n\n /**\n * Mock an undici request with a defined error.\n */\n replyWithError (error) {\n if (typeof error === 'undefined') {\n throw new InvalidArgumentError('error must be defined')\n }\n\n const newMockDispatch = addMockDispatch(this[kDispatches], this[kDispatchKey], { error })\n return new MockScope(newMockDispatch)\n }\n\n /**\n * Set default reply headers on the interceptor for subsequent replies\n */\n defaultReplyHeaders (headers) {\n if (typeof headers === 'undefined') {\n throw new InvalidArgumentError('headers must be defined')\n }\n\n this[kDefaultHeaders] = headers\n return this\n }\n\n /**\n * Set default reply trailers on the interceptor for subsequent replies\n */\n defaultReplyTrailers (trailers) {\n if (typeof trailers === 'undefined') {\n throw new InvalidArgumentError('trailers must be defined')\n }\n\n this[kDefaultTrailers] = trailers\n return this\n }\n\n /**\n * Set reply content length header for replies on the interceptor\n */\n replyContentLength () {\n this[kContentLength] = true\n return this\n }\n}\n\nmodule.exports.MockInterceptor = MockInterceptor\nmodule.exports.MockScope = MockScope\n","'use strict'\n\nconst { promisify } = require('util')\nconst Client = require('../client')\nconst { buildMockDispatch } = require('./mock-utils')\nconst {\n kDispatches,\n kMockAgent,\n kClose,\n kOriginalClose,\n kOrigin,\n kOriginalDispatch,\n kConnected\n} = require('./mock-symbols')\nconst { MockInterceptor } = require('./mock-interceptor')\nconst Symbols = require('../core/symbols')\nconst { InvalidArgumentError } = require('../core/errors')\n\n/**\n * MockClient provides an API that extends the Client to influence the mockDispatches.\n */\nclass MockClient extends Client {\n constructor (origin, opts) {\n super(origin, opts)\n\n if (!opts || !opts.agent || typeof opts.agent.dispatch !== 'function') {\n throw new InvalidArgumentError('Argument opts.agent must implement Agent')\n }\n\n this[kMockAgent] = opts.agent\n this[kOrigin] = origin\n this[kDispatches] = []\n this[kConnected] = 1\n this[kOriginalDispatch] = this.dispatch\n this[kOriginalClose] = this.close.bind(this)\n\n this.dispatch = buildMockDispatch.call(this)\n this.close = this[kClose]\n }\n\n get [Symbols.kConnected] () {\n return this[kConnected]\n }\n\n /**\n * Sets up the base interceptor for mocking replies from undici.\n */\n intercept (opts) {\n return new MockInterceptor(opts, this[kDispatches])\n }\n\n async [kClose] () {\n await promisify(this[kOriginalClose])()\n this[kConnected] = 0\n this[kMockAgent][Symbols.kClients].delete(this[kOrigin])\n }\n}\n\nmodule.exports = MockClient\n","'use strict'\n\nconst { promisify } = require('util')\nconst Pool = require('../pool')\nconst { buildMockDispatch } = require('./mock-utils')\nconst {\n kDispatches,\n kMockAgent,\n kClose,\n kOriginalClose,\n kOrigin,\n kOriginalDispatch,\n kConnected\n} = require('./mock-symbols')\nconst { MockInterceptor } = require('./mock-interceptor')\nconst Symbols = require('../core/symbols')\nconst { InvalidArgumentError } = require('../core/errors')\n\n/**\n * MockPool provides an API that extends the Pool to influence the mockDispatches.\n */\nclass MockPool extends Pool {\n constructor (origin, opts) {\n super(origin, opts)\n\n if (!opts || !opts.agent || typeof opts.agent.dispatch !== 'function') {\n throw new InvalidArgumentError('Argument opts.agent must implement Agent')\n }\n\n this[kMockAgent] = opts.agent\n this[kOrigin] = origin\n this[kDispatches] = []\n this[kConnected] = 1\n this[kOriginalDispatch] = this.dispatch\n this[kOriginalClose] = this.close.bind(this)\n\n this.dispatch = buildMockDispatch.call(this)\n this.close = this[kClose]\n }\n\n get [Symbols.kConnected] () {\n return this[kConnected]\n }\n\n /**\n * Sets up the base interceptor for mocking replies from undici.\n */\n intercept (opts) {\n return new MockInterceptor(opts, this[kDispatches])\n }\n\n async [kClose] () {\n await promisify(this[kOriginalClose])()\n this[kConnected] = 0\n this[kMockAgent][Symbols.kClients].delete(this[kOrigin])\n }\n}\n\nmodule.exports = MockPool\n","'use strict'\n\nconst singulars = {\n pronoun: 'it',\n is: 'is',\n was: 'was',\n this: 'this'\n}\n\nconst plurals = {\n pronoun: 'they',\n is: 'are',\n was: 'were',\n this: 'these'\n}\n\nmodule.exports = class Pluralizer {\n constructor (singular, plural) {\n this.singular = singular\n this.plural = plural\n }\n\n pluralize (count) {\n const one = count === 1\n const keys = one ? singulars : plurals\n const noun = one ? this.singular : this.plural\n return { ...keys, count, noun }\n }\n}\n","'use strict'\n\nconst { Transform } = require('stream')\nconst { Console } = require('console')\n\n/**\n * Gets the output of `console.table(…)` as a string.\n */\nmodule.exports = class PendingInterceptorsFormatter {\n constructor ({ disableColors } = {}) {\n this.transform = new Transform({\n transform (chunk, _enc, cb) {\n cb(null, chunk)\n }\n })\n\n this.logger = new Console({\n stdout: this.transform,\n inspectOptions: {\n colors: !disableColors && !process.env.CI\n }\n })\n }\n\n format (pendingInterceptors) {\n const withPrettyHeaders = pendingInterceptors.map(\n ({ method, path, data: { statusCode }, persist, times, timesInvoked, origin }) => ({\n Method: method,\n Origin: origin,\n Path: path,\n 'Status code': statusCode,\n Persistent: persist ? '✅' : '❌',\n Invocations: timesInvoked,\n Remaining: persist ? Infinity : times - timesInvoked\n }))\n\n this.logger.table(withPrettyHeaders)\n return this.transform.read().toString()\n }\n}\n","'use strict'\n\nconst { kClients } = require('../core/symbols')\nconst Agent = require('../agent')\nconst {\n kAgent,\n kMockAgentSet,\n kMockAgentGet,\n kDispatches,\n kIsMockActive,\n kNetConnect,\n kGetNetConnect,\n kOptions,\n kFactory\n} = require('./mock-symbols')\nconst MockClient = require('./mock-client')\nconst MockPool = require('./mock-pool')\nconst { matchValue, buildMockOptions } = require('./mock-utils')\nconst { InvalidArgumentError, UndiciError } = require('../core/errors')\nconst Dispatcher = require('../dispatcher')\nconst Pluralizer = require('./pluralizer')\nconst PendingInterceptorsFormatter = require('./pending-interceptors-formatter')\n\nclass FakeWeakRef {\n constructor (value) {\n this.value = value\n }\n\n deref () {\n return this.value\n }\n}\n\nclass MockAgent extends Dispatcher {\n constructor (opts) {\n super(opts)\n\n this[kNetConnect] = true\n this[kIsMockActive] = true\n\n // Instantiate Agent and encapsulate\n if ((opts && opts.agent && typeof opts.agent.dispatch !== 'function')) {\n throw new InvalidArgumentError('Argument opts.agent must implement Agent')\n }\n const agent = opts && opts.agent ? opts.agent : new Agent(opts)\n this[kAgent] = agent\n\n this[kClients] = agent[kClients]\n this[kOptions] = buildMockOptions(opts)\n }\n\n get (origin) {\n let dispatcher = this[kMockAgentGet](origin)\n\n if (!dispatcher) {\n dispatcher = this[kFactory](origin)\n this[kMockAgentSet](origin, dispatcher)\n }\n return dispatcher\n }\n\n dispatch (opts, handler) {\n // Call MockAgent.get to perform additional setup before dispatching as normal\n this.get(opts.origin)\n return this[kAgent].dispatch(opts, handler)\n }\n\n async close () {\n await this[kAgent].close()\n this[kClients].clear()\n }\n\n deactivate () {\n this[kIsMockActive] = false\n }\n\n activate () {\n this[kIsMockActive] = true\n }\n\n enableNetConnect (matcher) {\n if (typeof matcher === 'string' || typeof matcher === 'function' || matcher instanceof RegExp) {\n if (Array.isArray(this[kNetConnect])) {\n this[kNetConnect].push(matcher)\n } else {\n this[kNetConnect] = [matcher]\n }\n } else if (typeof matcher === 'undefined') {\n this[kNetConnect] = true\n } else {\n throw new InvalidArgumentError('Unsupported matcher. Must be one of String|Function|RegExp.')\n }\n }\n\n disableNetConnect () {\n this[kNetConnect] = false\n }\n\n // This is required to bypass issues caused by using global symbols - see:\n // https://github.com/nodejs/undici/issues/1447\n get isMockActive () {\n return this[kIsMockActive]\n }\n\n [kMockAgentSet] (origin, dispatcher) {\n this[kClients].set(origin, new FakeWeakRef(dispatcher))\n }\n\n [kFactory] (origin) {\n const mockOptions = Object.assign({ agent: this }, this[kOptions])\n return this[kOptions] && this[kOptions].connections === 1\n ? new MockClient(origin, mockOptions)\n : new MockPool(origin, mockOptions)\n }\n\n [kMockAgentGet] (origin) {\n // First check if we can immediately find it\n const ref = this[kClients].get(origin)\n if (ref) {\n return ref.deref()\n }\n\n // If the origin is not a string create a dummy parent pool and return to user\n if (typeof origin !== 'string') {\n const dispatcher = this[kFactory]('http://localhost:9999')\n this[kMockAgentSet](origin, dispatcher)\n return dispatcher\n }\n\n // If we match, create a pool and assign the same dispatches\n for (const [keyMatcher, nonExplicitRef] of Array.from(this[kClients])) {\n const nonExplicitDispatcher = nonExplicitRef.deref()\n if (nonExplicitDispatcher && typeof keyMatcher !== 'string' && matchValue(keyMatcher, origin)) {\n const dispatcher = this[kFactory](origin)\n this[kMockAgentSet](origin, dispatcher)\n dispatcher[kDispatches] = nonExplicitDispatcher[kDispatches]\n return dispatcher\n }\n }\n }\n\n [kGetNetConnect] () {\n return this[kNetConnect]\n }\n\n pendingInterceptors () {\n const mockAgentClients = this[kClients]\n\n return Array.from(mockAgentClients.entries())\n .flatMap(([origin, scope]) => scope.deref()[kDispatches].map(dispatch => ({ ...dispatch, origin })))\n .filter(({ pending }) => pending)\n }\n\n assertNoPendingInterceptors ({ pendingInterceptorsFormatter = new PendingInterceptorsFormatter() } = {}) {\n const pending = this.pendingInterceptors()\n\n if (pending.length === 0) {\n return\n }\n\n const pluralizer = new Pluralizer('interceptor', 'interceptors').pluralize(pending.length)\n\n throw new UndiciError(`\n${pluralizer.count} ${pluralizer.noun} ${pluralizer.is} pending:\n\n${pendingInterceptorsFormatter.format(pending)}\n`.trim())\n }\n}\n\nmodule.exports = MockAgent\n","'use strict'\n\nconst { kProxy, kClose, kDestroy, kInterceptors } = require('./core/symbols')\nconst { URL } = require('url')\nconst Agent = require('./agent')\nconst Pool = require('./pool')\nconst DispatcherBase = require('./dispatcher-base')\nconst { InvalidArgumentError, RequestAbortedError } = require('./core/errors')\nconst buildConnector = require('./core/connect')\n\nconst kAgent = Symbol('proxy agent')\nconst kClient = Symbol('proxy client')\nconst kProxyHeaders = Symbol('proxy headers')\nconst kRequestTls = Symbol('request tls settings')\nconst kProxyTls = Symbol('proxy tls settings')\nconst kConnectEndpoint = Symbol('connect endpoint function')\n\nfunction defaultProtocolPort (protocol) {\n return protocol === 'https:' ? 443 : 80\n}\n\nfunction buildProxyOptions (opts) {\n if (typeof opts === 'string') {\n opts = { uri: opts }\n }\n\n if (!opts || !opts.uri) {\n throw new InvalidArgumentError('Proxy opts.uri is mandatory')\n }\n\n return {\n uri: opts.uri,\n protocol: opts.protocol || 'https'\n }\n}\n\nfunction defaultFactory (origin, opts) {\n return new Pool(origin, opts)\n}\n\nclass ProxyAgent extends DispatcherBase {\n constructor (opts) {\n super(opts)\n this[kProxy] = buildProxyOptions(opts)\n this[kAgent] = new Agent(opts)\n this[kInterceptors] = opts.interceptors && opts.interceptors.ProxyAgent && Array.isArray(opts.interceptors.ProxyAgent)\n ? opts.interceptors.ProxyAgent\n : []\n\n if (typeof opts === 'string') {\n opts = { uri: opts }\n }\n\n if (!opts || !opts.uri) {\n throw new InvalidArgumentError('Proxy opts.uri is mandatory')\n }\n\n const { clientFactory = defaultFactory } = opts\n\n if (typeof clientFactory !== 'function') {\n throw new InvalidArgumentError('Proxy opts.clientFactory must be a function.')\n }\n\n this[kRequestTls] = opts.requestTls\n this[kProxyTls] = opts.proxyTls\n this[kProxyHeaders] = opts.headers || {}\n\n const resolvedUrl = new URL(opts.uri)\n const { origin, port, host, username, password } = resolvedUrl\n\n if (opts.auth && opts.token) {\n throw new InvalidArgumentError('opts.auth cannot be used in combination with opts.token')\n } else if (opts.auth) {\n /* @deprecated in favour of opts.token */\n this[kProxyHeaders]['proxy-authorization'] = `Basic ${opts.auth}`\n } else if (opts.token) {\n this[kProxyHeaders]['proxy-authorization'] = opts.token\n } else if (username && password) {\n this[kProxyHeaders]['proxy-authorization'] = `Basic ${Buffer.from(`${decodeURIComponent(username)}:${decodeURIComponent(password)}`).toString('base64')}`\n }\n\n const connect = buildConnector({ ...opts.proxyTls })\n this[kConnectEndpoint] = buildConnector({ ...opts.requestTls })\n this[kClient] = clientFactory(resolvedUrl, { connect })\n this[kAgent] = new Agent({\n ...opts,\n connect: async (opts, callback) => {\n let requestedHost = opts.host\n if (!opts.port) {\n requestedHost += `:${defaultProtocolPort(opts.protocol)}`\n }\n try {\n const { socket, statusCode } = await this[kClient].connect({\n origin,\n port,\n path: requestedHost,\n signal: opts.signal,\n headers: {\n ...this[kProxyHeaders],\n host\n }\n })\n if (statusCode !== 200) {\n socket.on('error', () => {}).destroy()\n callback(new RequestAbortedError(`Proxy response (${statusCode}) !== 200 when HTTP Tunneling`))\n }\n if (opts.protocol !== 'https:') {\n callback(null, socket)\n return\n }\n let servername\n if (this[kRequestTls]) {\n servername = this[kRequestTls].servername\n } else {\n servername = opts.servername\n }\n this[kConnectEndpoint]({ ...opts, servername, httpSocket: socket }, callback)\n } catch (err) {\n callback(err)\n }\n }\n })\n }\n\n dispatch (opts, handler) {\n const { host } = new URL(opts.origin)\n const headers = buildHeaders(opts.headers)\n throwIfProxyAuthIsSent(headers)\n return this[kAgent].dispatch(\n {\n ...opts,\n headers: {\n ...headers,\n host\n }\n },\n handler\n )\n }\n\n async [kClose] () {\n await this[kAgent].close()\n await this[kClient].close()\n }\n\n async [kDestroy] () {\n await this[kAgent].destroy()\n await this[kClient].destroy()\n }\n}\n\n/**\n * @param {string[] | Record} headers\n * @returns {Record}\n */\nfunction buildHeaders (headers) {\n // When using undici.fetch, the headers list is stored\n // as an array.\n if (Array.isArray(headers)) {\n /** @type {Record} */\n const headersPair = {}\n\n for (let i = 0; i < headers.length; i += 2) {\n headersPair[headers[i]] = headers[i + 1]\n }\n\n return headersPair\n }\n\n return headers\n}\n\n/**\n * @param {Record} headers\n *\n * Previous versions of ProxyAgent suggests the Proxy-Authorization in request headers\n * Nevertheless, it was changed and to avoid a security vulnerability by end users\n * this check was created.\n * It should be removed in the next major version for performance reasons\n */\nfunction throwIfProxyAuthIsSent (headers) {\n const existProxyAuth = headers && Object.keys(headers)\n .find((key) => key.toLowerCase() === 'proxy-authorization')\n if (existProxyAuth) {\n throw new InvalidArgumentError('Proxy-Authorization should be sent in ProxyAgent constructor')\n }\n}\n\nmodule.exports = ProxyAgent\n","const assert = require('assert')\n\nconst { kRetryHandlerDefaultRetry } = require('../core/symbols')\nconst { RequestRetryError } = require('../core/errors')\nconst { isDisturbed, parseHeaders, parseRangeHeader } = require('../core/util')\n\nfunction calculateRetryAfterHeader (retryAfter) {\n const current = Date.now()\n const diff = new Date(retryAfter).getTime() - current\n\n return diff\n}\n\nclass RetryHandler {\n constructor (opts, handlers) {\n const { retryOptions, ...dispatchOpts } = opts\n const {\n // Retry scoped\n retry: retryFn,\n maxRetries,\n maxTimeout,\n minTimeout,\n timeoutFactor,\n // Response scoped\n methods,\n errorCodes,\n retryAfter,\n statusCodes\n } = retryOptions ?? {}\n\n this.dispatch = handlers.dispatch\n this.handler = handlers.handler\n this.opts = dispatchOpts\n this.abort = null\n this.aborted = false\n this.retryOpts = {\n retry: retryFn ?? RetryHandler[kRetryHandlerDefaultRetry],\n retryAfter: retryAfter ?? true,\n maxTimeout: maxTimeout ?? 30 * 1000, // 30s,\n timeout: minTimeout ?? 500, // .5s\n timeoutFactor: timeoutFactor ?? 2,\n maxRetries: maxRetries ?? 5,\n // What errors we should retry\n methods: methods ?? ['GET', 'HEAD', 'OPTIONS', 'PUT', 'DELETE', 'TRACE'],\n // Indicates which errors to retry\n statusCodes: statusCodes ?? [500, 502, 503, 504, 429],\n // List of errors to retry\n errorCodes: errorCodes ?? [\n 'ECONNRESET',\n 'ECONNREFUSED',\n 'ENOTFOUND',\n 'ENETDOWN',\n 'ENETUNREACH',\n 'EHOSTDOWN',\n 'EHOSTUNREACH',\n 'EPIPE'\n ]\n }\n\n this.retryCount = 0\n this.start = 0\n this.end = null\n this.etag = null\n this.resume = null\n\n // Handle possible onConnect duplication\n this.handler.onConnect(reason => {\n this.aborted = true\n if (this.abort) {\n this.abort(reason)\n } else {\n this.reason = reason\n }\n })\n }\n\n onRequestSent () {\n if (this.handler.onRequestSent) {\n this.handler.onRequestSent()\n }\n }\n\n onUpgrade (statusCode, headers, socket) {\n if (this.handler.onUpgrade) {\n this.handler.onUpgrade(statusCode, headers, socket)\n }\n }\n\n onConnect (abort) {\n if (this.aborted) {\n abort(this.reason)\n } else {\n this.abort = abort\n }\n }\n\n onBodySent (chunk) {\n if (this.handler.onBodySent) return this.handler.onBodySent(chunk)\n }\n\n static [kRetryHandlerDefaultRetry] (err, { state, opts }, cb) {\n const { statusCode, code, headers } = err\n const { method, retryOptions } = opts\n const {\n maxRetries,\n timeout,\n maxTimeout,\n timeoutFactor,\n statusCodes,\n errorCodes,\n methods\n } = retryOptions\n let { counter, currentTimeout } = state\n\n currentTimeout =\n currentTimeout != null && currentTimeout > 0 ? currentTimeout : timeout\n\n // Any code that is not a Undici's originated and allowed to retry\n if (\n code &&\n code !== 'UND_ERR_REQ_RETRY' &&\n code !== 'UND_ERR_SOCKET' &&\n !errorCodes.includes(code)\n ) {\n cb(err)\n return\n }\n\n // If a set of method are provided and the current method is not in the list\n if (Array.isArray(methods) && !methods.includes(method)) {\n cb(err)\n return\n }\n\n // If a set of status code are provided and the current status code is not in the list\n if (\n statusCode != null &&\n Array.isArray(statusCodes) &&\n !statusCodes.includes(statusCode)\n ) {\n cb(err)\n return\n }\n\n // If we reached the max number of retries\n if (counter > maxRetries) {\n cb(err)\n return\n }\n\n let retryAfterHeader = headers != null && headers['retry-after']\n if (retryAfterHeader) {\n retryAfterHeader = Number(retryAfterHeader)\n retryAfterHeader = isNaN(retryAfterHeader)\n ? calculateRetryAfterHeader(retryAfterHeader)\n : retryAfterHeader * 1e3 // Retry-After is in seconds\n }\n\n const retryTimeout =\n retryAfterHeader > 0\n ? Math.min(retryAfterHeader, maxTimeout)\n : Math.min(currentTimeout * timeoutFactor ** counter, maxTimeout)\n\n state.currentTimeout = retryTimeout\n\n setTimeout(() => cb(null), retryTimeout)\n }\n\n onHeaders (statusCode, rawHeaders, resume, statusMessage) {\n const headers = parseHeaders(rawHeaders)\n\n this.retryCount += 1\n\n if (statusCode >= 300) {\n this.abort(\n new RequestRetryError('Request failed', statusCode, {\n headers,\n count: this.retryCount\n })\n )\n return false\n }\n\n // Checkpoint for resume from where we left it\n if (this.resume != null) {\n this.resume = null\n\n if (statusCode !== 206) {\n return true\n }\n\n const contentRange = parseRangeHeader(headers['content-range'])\n // If no content range\n if (!contentRange) {\n this.abort(\n new RequestRetryError('Content-Range mismatch', statusCode, {\n headers,\n count: this.retryCount\n })\n )\n return false\n }\n\n // Let's start with a weak etag check\n if (this.etag != null && this.etag !== headers.etag) {\n this.abort(\n new RequestRetryError('ETag mismatch', statusCode, {\n headers,\n count: this.retryCount\n })\n )\n return false\n }\n\n const { start, size, end = size } = contentRange\n\n assert(this.start === start, 'content-range mismatch')\n assert(this.end == null || this.end === end, 'content-range mismatch')\n\n this.resume = resume\n return true\n }\n\n if (this.end == null) {\n if (statusCode === 206) {\n // First time we receive 206\n const range = parseRangeHeader(headers['content-range'])\n\n if (range == null) {\n return this.handler.onHeaders(\n statusCode,\n rawHeaders,\n resume,\n statusMessage\n )\n }\n\n const { start, size, end = size } = range\n\n assert(\n start != null && Number.isFinite(start) && this.start !== start,\n 'content-range mismatch'\n )\n assert(Number.isFinite(start))\n assert(\n end != null && Number.isFinite(end) && this.end !== end,\n 'invalid content-length'\n )\n\n this.start = start\n this.end = end\n }\n\n // We make our best to checkpoint the body for further range headers\n if (this.end == null) {\n const contentLength = headers['content-length']\n this.end = contentLength != null ? Number(contentLength) : null\n }\n\n assert(Number.isFinite(this.start))\n assert(\n this.end == null || Number.isFinite(this.end),\n 'invalid content-length'\n )\n\n this.resume = resume\n this.etag = headers.etag != null ? headers.etag : null\n\n return this.handler.onHeaders(\n statusCode,\n rawHeaders,\n resume,\n statusMessage\n )\n }\n\n const err = new RequestRetryError('Request failed', statusCode, {\n headers,\n count: this.retryCount\n })\n\n this.abort(err)\n\n return false\n }\n\n onData (chunk) {\n this.start += chunk.length\n\n return this.handler.onData(chunk)\n }\n\n onComplete (rawTrailers) {\n this.retryCount = 0\n return this.handler.onComplete(rawTrailers)\n }\n\n onError (err) {\n if (this.aborted || isDisturbed(this.opts.body)) {\n return this.handler.onError(err)\n }\n\n this.retryOpts.retry(\n err,\n {\n state: { counter: this.retryCount++, currentTimeout: this.retryAfter },\n opts: { retryOptions: this.retryOpts, ...this.opts }\n },\n onRetry.bind(this)\n )\n\n function onRetry (err) {\n if (err != null || this.aborted || isDisturbed(this.opts.body)) {\n return this.handler.onError(err)\n }\n\n if (this.start !== 0) {\n this.opts = {\n ...this.opts,\n headers: {\n ...this.opts.headers,\n range: `bytes=${this.start}-${this.end ?? ''}`\n }\n }\n }\n\n try {\n this.dispatch(this.opts, this)\n } catch (err) {\n this.handler.onError(err)\n }\n }\n }\n}\n\nmodule.exports = RetryHandler\n","'use strict'\n\n// We include a version number for the Dispatcher API. In case of breaking changes,\n// this version number must be increased to avoid conflicts.\nconst globalDispatcher = Symbol.for('undici.globalDispatcher.1')\nconst { InvalidArgumentError } = require('./core/errors')\nconst Agent = require('./agent')\n\nif (getGlobalDispatcher() === undefined) {\n setGlobalDispatcher(new Agent())\n}\n\nfunction setGlobalDispatcher (agent) {\n if (!agent || typeof agent.dispatch !== 'function') {\n throw new InvalidArgumentError('Argument agent must implement Agent')\n }\n Object.defineProperty(globalThis, globalDispatcher, {\n value: agent,\n writable: true,\n enumerable: false,\n configurable: false\n })\n}\n\nfunction getGlobalDispatcher () {\n return globalThis[globalDispatcher]\n}\n\nmodule.exports = {\n setGlobalDispatcher,\n getGlobalDispatcher\n}\n","'use strict'\n\nmodule.exports = class DecoratorHandler {\n constructor (handler) {\n this.handler = handler\n }\n\n onConnect (...args) {\n return this.handler.onConnect(...args)\n }\n\n onError (...args) {\n return this.handler.onError(...args)\n }\n\n onUpgrade (...args) {\n return this.handler.onUpgrade(...args)\n }\n\n onHeaders (...args) {\n return this.handler.onHeaders(...args)\n }\n\n onData (...args) {\n return this.handler.onData(...args)\n }\n\n onComplete (...args) {\n return this.handler.onComplete(...args)\n }\n\n onBodySent (...args) {\n return this.handler.onBodySent(...args)\n }\n}\n","// https://github.com/Ethan-Arrowood/undici-fetch\n\n'use strict'\n\nconst { kHeadersList, kConstruct } = require('../core/symbols')\nconst { kGuard } = require('./symbols')\nconst { kEnumerableProperty } = require('../core/util')\nconst {\n makeIterator,\n isValidHeaderName,\n isValidHeaderValue\n} = require('./util')\nconst util = require('util')\nconst { webidl } = require('./webidl')\nconst assert = require('assert')\n\nconst kHeadersMap = Symbol('headers map')\nconst kHeadersSortedMap = Symbol('headers map sorted')\n\n/**\n * @param {number} code\n */\nfunction isHTTPWhiteSpaceCharCode (code) {\n return code === 0x00a || code === 0x00d || code === 0x009 || code === 0x020\n}\n\n/**\n * @see https://fetch.spec.whatwg.org/#concept-header-value-normalize\n * @param {string} potentialValue\n */\nfunction headerValueNormalize (potentialValue) {\n // To normalize a byte sequence potentialValue, remove\n // any leading and trailing HTTP whitespace bytes from\n // potentialValue.\n let i = 0; let j = potentialValue.length\n\n while (j > i && isHTTPWhiteSpaceCharCode(potentialValue.charCodeAt(j - 1))) --j\n while (j > i && isHTTPWhiteSpaceCharCode(potentialValue.charCodeAt(i))) ++i\n\n return i === 0 && j === potentialValue.length ? potentialValue : potentialValue.substring(i, j)\n}\n\nfunction fill (headers, object) {\n // To fill a Headers object headers with a given object object, run these steps:\n\n // 1. If object is a sequence, then for each header in object:\n // Note: webidl conversion to array has already been done.\n if (Array.isArray(object)) {\n for (let i = 0; i < object.length; ++i) {\n const header = object[i]\n // 1. If header does not contain exactly two items, then throw a TypeError.\n if (header.length !== 2) {\n throw webidl.errors.exception({\n header: 'Headers constructor',\n message: `expected name/value pair to be length 2, found ${header.length}.`\n })\n }\n\n // 2. Append (header’s first item, header’s second item) to headers.\n appendHeader(headers, header[0], header[1])\n }\n } else if (typeof object === 'object' && object !== null) {\n // Note: null should throw\n\n // 2. Otherwise, object is a record, then for each key → value in object,\n // append (key, value) to headers\n const keys = Object.keys(object)\n for (let i = 0; i < keys.length; ++i) {\n appendHeader(headers, keys[i], object[keys[i]])\n }\n } else {\n throw webidl.errors.conversionFailed({\n prefix: 'Headers constructor',\n argument: 'Argument 1',\n types: ['sequence>', 'record']\n })\n }\n}\n\n/**\n * @see https://fetch.spec.whatwg.org/#concept-headers-append\n */\nfunction appendHeader (headers, name, value) {\n // 1. Normalize value.\n value = headerValueNormalize(value)\n\n // 2. If name is not a header name or value is not a\n // header value, then throw a TypeError.\n if (!isValidHeaderName(name)) {\n throw webidl.errors.invalidArgument({\n prefix: 'Headers.append',\n value: name,\n type: 'header name'\n })\n } else if (!isValidHeaderValue(value)) {\n throw webidl.errors.invalidArgument({\n prefix: 'Headers.append',\n value,\n type: 'header value'\n })\n }\n\n // 3. If headers’s guard is \"immutable\", then throw a TypeError.\n // 4. Otherwise, if headers’s guard is \"request\" and name is a\n // forbidden header name, return.\n // Note: undici does not implement forbidden header names\n if (headers[kGuard] === 'immutable') {\n throw new TypeError('immutable')\n } else if (headers[kGuard] === 'request-no-cors') {\n // 5. Otherwise, if headers’s guard is \"request-no-cors\":\n // TODO\n }\n\n // 6. Otherwise, if headers’s guard is \"response\" and name is a\n // forbidden response-header name, return.\n\n // 7. Append (name, value) to headers’s header list.\n return headers[kHeadersList].append(name, value)\n\n // 8. If headers’s guard is \"request-no-cors\", then remove\n // privileged no-CORS request headers from headers\n}\n\nclass HeadersList {\n /** @type {[string, string][]|null} */\n cookies = null\n\n constructor (init) {\n if (init instanceof HeadersList) {\n this[kHeadersMap] = new Map(init[kHeadersMap])\n this[kHeadersSortedMap] = init[kHeadersSortedMap]\n this.cookies = init.cookies === null ? null : [...init.cookies]\n } else {\n this[kHeadersMap] = new Map(init)\n this[kHeadersSortedMap] = null\n }\n }\n\n // https://fetch.spec.whatwg.org/#header-list-contains\n contains (name) {\n // A header list list contains a header name name if list\n // contains a header whose name is a byte-case-insensitive\n // match for name.\n name = name.toLowerCase()\n\n return this[kHeadersMap].has(name)\n }\n\n clear () {\n this[kHeadersMap].clear()\n this[kHeadersSortedMap] = null\n this.cookies = null\n }\n\n // https://fetch.spec.whatwg.org/#concept-header-list-append\n append (name, value) {\n this[kHeadersSortedMap] = null\n\n // 1. If list contains name, then set name to the first such\n // header’s name.\n const lowercaseName = name.toLowerCase()\n const exists = this[kHeadersMap].get(lowercaseName)\n\n // 2. Append (name, value) to list.\n if (exists) {\n const delimiter = lowercaseName === 'cookie' ? '; ' : ', '\n this[kHeadersMap].set(lowercaseName, {\n name: exists.name,\n value: `${exists.value}${delimiter}${value}`\n })\n } else {\n this[kHeadersMap].set(lowercaseName, { name, value })\n }\n\n if (lowercaseName === 'set-cookie') {\n this.cookies ??= []\n this.cookies.push(value)\n }\n }\n\n // https://fetch.spec.whatwg.org/#concept-header-list-set\n set (name, value) {\n this[kHeadersSortedMap] = null\n const lowercaseName = name.toLowerCase()\n\n if (lowercaseName === 'set-cookie') {\n this.cookies = [value]\n }\n\n // 1. If list contains name, then set the value of\n // the first such header to value and remove the\n // others.\n // 2. Otherwise, append header (name, value) to list.\n this[kHeadersMap].set(lowercaseName, { name, value })\n }\n\n // https://fetch.spec.whatwg.org/#concept-header-list-delete\n delete (name) {\n this[kHeadersSortedMap] = null\n\n name = name.toLowerCase()\n\n if (name === 'set-cookie') {\n this.cookies = null\n }\n\n this[kHeadersMap].delete(name)\n }\n\n // https://fetch.spec.whatwg.org/#concept-header-list-get\n get (name) {\n const value = this[kHeadersMap].get(name.toLowerCase())\n\n // 1. If list does not contain name, then return null.\n // 2. Return the values of all headers in list whose name\n // is a byte-case-insensitive match for name,\n // separated from each other by 0x2C 0x20, in order.\n return value === undefined ? null : value.value\n }\n\n * [Symbol.iterator] () {\n // use the lowercased name\n for (const [name, { value }] of this[kHeadersMap]) {\n yield [name, value]\n }\n }\n\n get entries () {\n const headers = {}\n\n if (this[kHeadersMap].size) {\n for (const { name, value } of this[kHeadersMap].values()) {\n headers[name] = value\n }\n }\n\n return headers\n }\n}\n\n// https://fetch.spec.whatwg.org/#headers-class\nclass Headers {\n constructor (init = undefined) {\n if (init === kConstruct) {\n return\n }\n this[kHeadersList] = new HeadersList()\n\n // The new Headers(init) constructor steps are:\n\n // 1. Set this’s guard to \"none\".\n this[kGuard] = 'none'\n\n // 2. If init is given, then fill this with init.\n if (init !== undefined) {\n init = webidl.converters.HeadersInit(init)\n fill(this, init)\n }\n }\n\n // https://fetch.spec.whatwg.org/#dom-headers-append\n append (name, value) {\n webidl.brandCheck(this, Headers)\n\n webidl.argumentLengthCheck(arguments, 2, { header: 'Headers.append' })\n\n name = webidl.converters.ByteString(name)\n value = webidl.converters.ByteString(value)\n\n return appendHeader(this, name, value)\n }\n\n // https://fetch.spec.whatwg.org/#dom-headers-delete\n delete (name) {\n webidl.brandCheck(this, Headers)\n\n webidl.argumentLengthCheck(arguments, 1, { header: 'Headers.delete' })\n\n name = webidl.converters.ByteString(name)\n\n // 1. If name is not a header name, then throw a TypeError.\n if (!isValidHeaderName(name)) {\n throw webidl.errors.invalidArgument({\n prefix: 'Headers.delete',\n value: name,\n type: 'header name'\n })\n }\n\n // 2. If this’s guard is \"immutable\", then throw a TypeError.\n // 3. Otherwise, if this’s guard is \"request\" and name is a\n // forbidden header name, return.\n // 4. Otherwise, if this’s guard is \"request-no-cors\", name\n // is not a no-CORS-safelisted request-header name, and\n // name is not a privileged no-CORS request-header name,\n // return.\n // 5. Otherwise, if this’s guard is \"response\" and name is\n // a forbidden response-header name, return.\n // Note: undici does not implement forbidden header names\n if (this[kGuard] === 'immutable') {\n throw new TypeError('immutable')\n } else if (this[kGuard] === 'request-no-cors') {\n // TODO\n }\n\n // 6. If this’s header list does not contain name, then\n // return.\n if (!this[kHeadersList].contains(name)) {\n return\n }\n\n // 7. Delete name from this’s header list.\n // 8. If this’s guard is \"request-no-cors\", then remove\n // privileged no-CORS request headers from this.\n this[kHeadersList].delete(name)\n }\n\n // https://fetch.spec.whatwg.org/#dom-headers-get\n get (name) {\n webidl.brandCheck(this, Headers)\n\n webidl.argumentLengthCheck(arguments, 1, { header: 'Headers.get' })\n\n name = webidl.converters.ByteString(name)\n\n // 1. If name is not a header name, then throw a TypeError.\n if (!isValidHeaderName(name)) {\n throw webidl.errors.invalidArgument({\n prefix: 'Headers.get',\n value: name,\n type: 'header name'\n })\n }\n\n // 2. Return the result of getting name from this’s header\n // list.\n return this[kHeadersList].get(name)\n }\n\n // https://fetch.spec.whatwg.org/#dom-headers-has\n has (name) {\n webidl.brandCheck(this, Headers)\n\n webidl.argumentLengthCheck(arguments, 1, { header: 'Headers.has' })\n\n name = webidl.converters.ByteString(name)\n\n // 1. If name is not a header name, then throw a TypeError.\n if (!isValidHeaderName(name)) {\n throw webidl.errors.invalidArgument({\n prefix: 'Headers.has',\n value: name,\n type: 'header name'\n })\n }\n\n // 2. Return true if this’s header list contains name;\n // otherwise false.\n return this[kHeadersList].contains(name)\n }\n\n // https://fetch.spec.whatwg.org/#dom-headers-set\n set (name, value) {\n webidl.brandCheck(this, Headers)\n\n webidl.argumentLengthCheck(arguments, 2, { header: 'Headers.set' })\n\n name = webidl.converters.ByteString(name)\n value = webidl.converters.ByteString(value)\n\n // 1. Normalize value.\n value = headerValueNormalize(value)\n\n // 2. If name is not a header name or value is not a\n // header value, then throw a TypeError.\n if (!isValidHeaderName(name)) {\n throw webidl.errors.invalidArgument({\n prefix: 'Headers.set',\n value: name,\n type: 'header name'\n })\n } else if (!isValidHeaderValue(value)) {\n throw webidl.errors.invalidArgument({\n prefix: 'Headers.set',\n value,\n type: 'header value'\n })\n }\n\n // 3. If this’s guard is \"immutable\", then throw a TypeError.\n // 4. Otherwise, if this’s guard is \"request\" and name is a\n // forbidden header name, return.\n // 5. Otherwise, if this’s guard is \"request-no-cors\" and\n // name/value is not a no-CORS-safelisted request-header,\n // return.\n // 6. Otherwise, if this’s guard is \"response\" and name is a\n // forbidden response-header name, return.\n // Note: undici does not implement forbidden header names\n if (this[kGuard] === 'immutable') {\n throw new TypeError('immutable')\n } else if (this[kGuard] === 'request-no-cors') {\n // TODO\n }\n\n // 7. Set (name, value) in this’s header list.\n // 8. If this’s guard is \"request-no-cors\", then remove\n // privileged no-CORS request headers from this\n this[kHeadersList].set(name, value)\n }\n\n // https://fetch.spec.whatwg.org/#dom-headers-getsetcookie\n getSetCookie () {\n webidl.brandCheck(this, Headers)\n\n // 1. If this’s header list does not contain `Set-Cookie`, then return « ».\n // 2. Return the values of all headers in this’s header list whose name is\n // a byte-case-insensitive match for `Set-Cookie`, in order.\n\n const list = this[kHeadersList].cookies\n\n if (list) {\n return [...list]\n }\n\n return []\n }\n\n // https://fetch.spec.whatwg.org/#concept-header-list-sort-and-combine\n get [kHeadersSortedMap] () {\n if (this[kHeadersList][kHeadersSortedMap]) {\n return this[kHeadersList][kHeadersSortedMap]\n }\n\n // 1. Let headers be an empty list of headers with the key being the name\n // and value the value.\n const headers = []\n\n // 2. Let names be the result of convert header names to a sorted-lowercase\n // set with all the names of the headers in list.\n const names = [...this[kHeadersList]].sort((a, b) => a[0] < b[0] ? -1 : 1)\n const cookies = this[kHeadersList].cookies\n\n // 3. For each name of names:\n for (let i = 0; i < names.length; ++i) {\n const [name, value] = names[i]\n // 1. If name is `set-cookie`, then:\n if (name === 'set-cookie') {\n // 1. Let values be a list of all values of headers in list whose name\n // is a byte-case-insensitive match for name, in order.\n\n // 2. For each value of values:\n // 1. Append (name, value) to headers.\n for (let j = 0; j < cookies.length; ++j) {\n headers.push([name, cookies[j]])\n }\n } else {\n // 2. Otherwise:\n\n // 1. Let value be the result of getting name from list.\n\n // 2. Assert: value is non-null.\n assert(value !== null)\n\n // 3. Append (name, value) to headers.\n headers.push([name, value])\n }\n }\n\n this[kHeadersList][kHeadersSortedMap] = headers\n\n // 4. Return headers.\n return headers\n }\n\n keys () {\n webidl.brandCheck(this, Headers)\n\n if (this[kGuard] === 'immutable') {\n const value = this[kHeadersSortedMap]\n return makeIterator(() => value, 'Headers',\n 'key')\n }\n\n return makeIterator(\n () => [...this[kHeadersSortedMap].values()],\n 'Headers',\n 'key'\n )\n }\n\n values () {\n webidl.brandCheck(this, Headers)\n\n if (this[kGuard] === 'immutable') {\n const value = this[kHeadersSortedMap]\n return makeIterator(() => value, 'Headers',\n 'value')\n }\n\n return makeIterator(\n () => [...this[kHeadersSortedMap].values()],\n 'Headers',\n 'value'\n )\n }\n\n entries () {\n webidl.brandCheck(this, Headers)\n\n if (this[kGuard] === 'immutable') {\n const value = this[kHeadersSortedMap]\n return makeIterator(() => value, 'Headers',\n 'key+value')\n }\n\n return makeIterator(\n () => [...this[kHeadersSortedMap].values()],\n 'Headers',\n 'key+value'\n )\n }\n\n /**\n * @param {(value: string, key: string, self: Headers) => void} callbackFn\n * @param {unknown} thisArg\n */\n forEach (callbackFn, thisArg = globalThis) {\n webidl.brandCheck(this, Headers)\n\n webidl.argumentLengthCheck(arguments, 1, { header: 'Headers.forEach' })\n\n if (typeof callbackFn !== 'function') {\n throw new TypeError(\n \"Failed to execute 'forEach' on 'Headers': parameter 1 is not of type 'Function'.\"\n )\n }\n\n for (const [key, value] of this) {\n callbackFn.apply(thisArg, [value, key, this])\n }\n }\n\n [Symbol.for('nodejs.util.inspect.custom')] () {\n webidl.brandCheck(this, Headers)\n\n return this[kHeadersList]\n }\n}\n\nHeaders.prototype[Symbol.iterator] = Headers.prototype.entries\n\nObject.defineProperties(Headers.prototype, {\n append: kEnumerableProperty,\n delete: kEnumerableProperty,\n get: kEnumerableProperty,\n has: kEnumerableProperty,\n set: kEnumerableProperty,\n getSetCookie: kEnumerableProperty,\n keys: kEnumerableProperty,\n values: kEnumerableProperty,\n entries: kEnumerableProperty,\n forEach: kEnumerableProperty,\n [Symbol.iterator]: { enumerable: false },\n [Symbol.toStringTag]: {\n value: 'Headers',\n configurable: true\n },\n [util.inspect.custom]: {\n enumerable: false\n }\n})\n\nwebidl.converters.HeadersInit = function (V) {\n if (webidl.util.Type(V) === 'Object') {\n if (V[Symbol.iterator]) {\n return webidl.converters['sequence>'](V)\n }\n\n return webidl.converters['record'](V)\n }\n\n throw webidl.errors.conversionFailed({\n prefix: 'Headers constructor',\n argument: 'Argument 1',\n types: ['sequence>', 'record']\n })\n}\n\nmodule.exports = {\n fill,\n Headers,\n HeadersList\n}\n","'use strict'\n\nconst { Headers, HeadersList, fill } = require('./headers')\nconst { extractBody, cloneBody, mixinBody } = require('./body')\nconst util = require('../core/util')\nconst { kEnumerableProperty } = util\nconst {\n isValidReasonPhrase,\n isCancelled,\n isAborted,\n isBlobLike,\n serializeJavascriptValueToJSONString,\n isErrorLike,\n isomorphicEncode\n} = require('./util')\nconst {\n redirectStatusSet,\n nullBodyStatus,\n DOMException\n} = require('./constants')\nconst { kState, kHeaders, kGuard, kRealm } = require('./symbols')\nconst { webidl } = require('./webidl')\nconst { FormData } = require('./formdata')\nconst { getGlobalOrigin } = require('./global')\nconst { URLSerializer } = require('./dataURL')\nconst { kHeadersList, kConstruct } = require('../core/symbols')\nconst assert = require('assert')\nconst { types } = require('util')\n\nconst ReadableStream = globalThis.ReadableStream || require('stream/web').ReadableStream\nconst textEncoder = new TextEncoder('utf-8')\n\n// https://fetch.spec.whatwg.org/#response-class\nclass Response {\n // Creates network error Response.\n static error () {\n // TODO\n const relevantRealm = { settingsObject: {} }\n\n // The static error() method steps are to return the result of creating a\n // Response object, given a new network error, \"immutable\", and this’s\n // relevant Realm.\n const responseObject = new Response()\n responseObject[kState] = makeNetworkError()\n responseObject[kRealm] = relevantRealm\n responseObject[kHeaders][kHeadersList] = responseObject[kState].headersList\n responseObject[kHeaders][kGuard] = 'immutable'\n responseObject[kHeaders][kRealm] = relevantRealm\n return responseObject\n }\n\n // https://fetch.spec.whatwg.org/#dom-response-json\n static json (data, init = {}) {\n webidl.argumentLengthCheck(arguments, 1, { header: 'Response.json' })\n\n if (init !== null) {\n init = webidl.converters.ResponseInit(init)\n }\n\n // 1. Let bytes the result of running serialize a JavaScript value to JSON bytes on data.\n const bytes = textEncoder.encode(\n serializeJavascriptValueToJSONString(data)\n )\n\n // 2. Let body be the result of extracting bytes.\n const body = extractBody(bytes)\n\n // 3. Let responseObject be the result of creating a Response object, given a new response,\n // \"response\", and this’s relevant Realm.\n const relevantRealm = { settingsObject: {} }\n const responseObject = new Response()\n responseObject[kRealm] = relevantRealm\n responseObject[kHeaders][kGuard] = 'response'\n responseObject[kHeaders][kRealm] = relevantRealm\n\n // 4. Perform initialize a response given responseObject, init, and (body, \"application/json\").\n initializeResponse(responseObject, init, { body: body[0], type: 'application/json' })\n\n // 5. Return responseObject.\n return responseObject\n }\n\n // Creates a redirect Response that redirects to url with status status.\n static redirect (url, status = 302) {\n const relevantRealm = { settingsObject: {} }\n\n webidl.argumentLengthCheck(arguments, 1, { header: 'Response.redirect' })\n\n url = webidl.converters.USVString(url)\n status = webidl.converters['unsigned short'](status)\n\n // 1. Let parsedURL be the result of parsing url with current settings\n // object’s API base URL.\n // 2. If parsedURL is failure, then throw a TypeError.\n // TODO: base-URL?\n let parsedURL\n try {\n parsedURL = new URL(url, getGlobalOrigin())\n } catch (err) {\n throw Object.assign(new TypeError('Failed to parse URL from ' + url), {\n cause: err\n })\n }\n\n // 3. If status is not a redirect status, then throw a RangeError.\n if (!redirectStatusSet.has(status)) {\n throw new RangeError('Invalid status code ' + status)\n }\n\n // 4. Let responseObject be the result of creating a Response object,\n // given a new response, \"immutable\", and this’s relevant Realm.\n const responseObject = new Response()\n responseObject[kRealm] = relevantRealm\n responseObject[kHeaders][kGuard] = 'immutable'\n responseObject[kHeaders][kRealm] = relevantRealm\n\n // 5. Set responseObject’s response’s status to status.\n responseObject[kState].status = status\n\n // 6. Let value be parsedURL, serialized and isomorphic encoded.\n const value = isomorphicEncode(URLSerializer(parsedURL))\n\n // 7. Append `Location`/value to responseObject’s response’s header list.\n responseObject[kState].headersList.append('location', value)\n\n // 8. Return responseObject.\n return responseObject\n }\n\n // https://fetch.spec.whatwg.org/#dom-response\n constructor (body = null, init = {}) {\n if (body !== null) {\n body = webidl.converters.BodyInit(body)\n }\n\n init = webidl.converters.ResponseInit(init)\n\n // TODO\n this[kRealm] = { settingsObject: {} }\n\n // 1. Set this’s response to a new response.\n this[kState] = makeResponse({})\n\n // 2. Set this’s headers to a new Headers object with this’s relevant\n // Realm, whose header list is this’s response’s header list and guard\n // is \"response\".\n this[kHeaders] = new Headers(kConstruct)\n this[kHeaders][kGuard] = 'response'\n this[kHeaders][kHeadersList] = this[kState].headersList\n this[kHeaders][kRealm] = this[kRealm]\n\n // 3. Let bodyWithType be null.\n let bodyWithType = null\n\n // 4. If body is non-null, then set bodyWithType to the result of extracting body.\n if (body != null) {\n const [extractedBody, type] = extractBody(body)\n bodyWithType = { body: extractedBody, type }\n }\n\n // 5. Perform initialize a response given this, init, and bodyWithType.\n initializeResponse(this, init, bodyWithType)\n }\n\n // Returns response’s type, e.g., \"cors\".\n get type () {\n webidl.brandCheck(this, Response)\n\n // The type getter steps are to return this’s response’s type.\n return this[kState].type\n }\n\n // Returns response’s URL, if it has one; otherwise the empty string.\n get url () {\n webidl.brandCheck(this, Response)\n\n const urlList = this[kState].urlList\n\n // The url getter steps are to return the empty string if this’s\n // response’s URL is null; otherwise this’s response’s URL,\n // serialized with exclude fragment set to true.\n const url = urlList[urlList.length - 1] ?? null\n\n if (url === null) {\n return ''\n }\n\n return URLSerializer(url, true)\n }\n\n // Returns whether response was obtained through a redirect.\n get redirected () {\n webidl.brandCheck(this, Response)\n\n // The redirected getter steps are to return true if this’s response’s URL\n // list has more than one item; otherwise false.\n return this[kState].urlList.length > 1\n }\n\n // Returns response’s status.\n get status () {\n webidl.brandCheck(this, Response)\n\n // The status getter steps are to return this’s response’s status.\n return this[kState].status\n }\n\n // Returns whether response’s status is an ok status.\n get ok () {\n webidl.brandCheck(this, Response)\n\n // The ok getter steps are to return true if this’s response’s status is an\n // ok status; otherwise false.\n return this[kState].status >= 200 && this[kState].status <= 299\n }\n\n // Returns response’s status message.\n get statusText () {\n webidl.brandCheck(this, Response)\n\n // The statusText getter steps are to return this’s response’s status\n // message.\n return this[kState].statusText\n }\n\n // Returns response’s headers as Headers.\n get headers () {\n webidl.brandCheck(this, Response)\n\n // The headers getter steps are to return this’s headers.\n return this[kHeaders]\n }\n\n get body () {\n webidl.brandCheck(this, Response)\n\n return this[kState].body ? this[kState].body.stream : null\n }\n\n get bodyUsed () {\n webidl.brandCheck(this, Response)\n\n return !!this[kState].body && util.isDisturbed(this[kState].body.stream)\n }\n\n // Returns a clone of response.\n clone () {\n webidl.brandCheck(this, Response)\n\n // 1. If this is unusable, then throw a TypeError.\n if (this.bodyUsed || (this.body && this.body.locked)) {\n throw webidl.errors.exception({\n header: 'Response.clone',\n message: 'Body has already been consumed.'\n })\n }\n\n // 2. Let clonedResponse be the result of cloning this’s response.\n const clonedResponse = cloneResponse(this[kState])\n\n // 3. Return the result of creating a Response object, given\n // clonedResponse, this’s headers’s guard, and this’s relevant Realm.\n const clonedResponseObject = new Response()\n clonedResponseObject[kState] = clonedResponse\n clonedResponseObject[kRealm] = this[kRealm]\n clonedResponseObject[kHeaders][kHeadersList] = clonedResponse.headersList\n clonedResponseObject[kHeaders][kGuard] = this[kHeaders][kGuard]\n clonedResponseObject[kHeaders][kRealm] = this[kHeaders][kRealm]\n\n return clonedResponseObject\n }\n}\n\nmixinBody(Response)\n\nObject.defineProperties(Response.prototype, {\n type: kEnumerableProperty,\n url: kEnumerableProperty,\n status: kEnumerableProperty,\n ok: kEnumerableProperty,\n redirected: kEnumerableProperty,\n statusText: kEnumerableProperty,\n headers: kEnumerableProperty,\n clone: kEnumerableProperty,\n body: kEnumerableProperty,\n bodyUsed: kEnumerableProperty,\n [Symbol.toStringTag]: {\n value: 'Response',\n configurable: true\n }\n})\n\nObject.defineProperties(Response, {\n json: kEnumerableProperty,\n redirect: kEnumerableProperty,\n error: kEnumerableProperty\n})\n\n// https://fetch.spec.whatwg.org/#concept-response-clone\nfunction cloneResponse (response) {\n // To clone a response response, run these steps:\n\n // 1. If response is a filtered response, then return a new identical\n // filtered response whose internal response is a clone of response’s\n // internal response.\n if (response.internalResponse) {\n return filterResponse(\n cloneResponse(response.internalResponse),\n response.type\n )\n }\n\n // 2. Let newResponse be a copy of response, except for its body.\n const newResponse = makeResponse({ ...response, body: null })\n\n // 3. If response’s body is non-null, then set newResponse’s body to the\n // result of cloning response’s body.\n if (response.body != null) {\n newResponse.body = cloneBody(response.body)\n }\n\n // 4. Return newResponse.\n return newResponse\n}\n\nfunction makeResponse (init) {\n return {\n aborted: false,\n rangeRequested: false,\n timingAllowPassed: false,\n requestIncludesCredentials: false,\n type: 'default',\n status: 200,\n timingInfo: null,\n cacheState: '',\n statusText: '',\n ...init,\n headersList: init.headersList\n ? new HeadersList(init.headersList)\n : new HeadersList(),\n urlList: init.urlList ? [...init.urlList] : []\n }\n}\n\nfunction makeNetworkError (reason) {\n const isError = isErrorLike(reason)\n return makeResponse({\n type: 'error',\n status: 0,\n error: isError\n ? reason\n : new Error(reason ? String(reason) : reason),\n aborted: reason && reason.name === 'AbortError'\n })\n}\n\nfunction makeFilteredResponse (response, state) {\n state = {\n internalResponse: response,\n ...state\n }\n\n return new Proxy(response, {\n get (target, p) {\n return p in state ? state[p] : target[p]\n },\n set (target, p, value) {\n assert(!(p in state))\n target[p] = value\n return true\n }\n })\n}\n\n// https://fetch.spec.whatwg.org/#concept-filtered-response\nfunction filterResponse (response, type) {\n // Set response to the following filtered response with response as its\n // internal response, depending on request’s response tainting:\n if (type === 'basic') {\n // A basic filtered response is a filtered response whose type is \"basic\"\n // and header list excludes any headers in internal response’s header list\n // whose name is a forbidden response-header name.\n\n // Note: undici does not implement forbidden response-header names\n return makeFilteredResponse(response, {\n type: 'basic',\n headersList: response.headersList\n })\n } else if (type === 'cors') {\n // A CORS filtered response is a filtered response whose type is \"cors\"\n // and header list excludes any headers in internal response’s header\n // list whose name is not a CORS-safelisted response-header name, given\n // internal response’s CORS-exposed header-name list.\n\n // Note: undici does not implement CORS-safelisted response-header names\n return makeFilteredResponse(response, {\n type: 'cors',\n headersList: response.headersList\n })\n } else if (type === 'opaque') {\n // An opaque filtered response is a filtered response whose type is\n // \"opaque\", URL list is the empty list, status is 0, status message\n // is the empty byte sequence, header list is empty, and body is null.\n\n return makeFilteredResponse(response, {\n type: 'opaque',\n urlList: Object.freeze([]),\n status: 0,\n statusText: '',\n body: null\n })\n } else if (type === 'opaqueredirect') {\n // An opaque-redirect filtered response is a filtered response whose type\n // is \"opaqueredirect\", status is 0, status message is the empty byte\n // sequence, header list is empty, and body is null.\n\n return makeFilteredResponse(response, {\n type: 'opaqueredirect',\n status: 0,\n statusText: '',\n headersList: [],\n body: null\n })\n } else {\n assert(false)\n }\n}\n\n// https://fetch.spec.whatwg.org/#appropriate-network-error\nfunction makeAppropriateNetworkError (fetchParams, err = null) {\n // 1. Assert: fetchParams is canceled.\n assert(isCancelled(fetchParams))\n\n // 2. Return an aborted network error if fetchParams is aborted;\n // otherwise return a network error.\n return isAborted(fetchParams)\n ? makeNetworkError(Object.assign(new DOMException('The operation was aborted.', 'AbortError'), { cause: err }))\n : makeNetworkError(Object.assign(new DOMException('Request was cancelled.'), { cause: err }))\n}\n\n// https://whatpr.org/fetch/1392.html#initialize-a-response\nfunction initializeResponse (response, init, body) {\n // 1. If init[\"status\"] is not in the range 200 to 599, inclusive, then\n // throw a RangeError.\n if (init.status !== null && (init.status < 200 || init.status > 599)) {\n throw new RangeError('init[\"status\"] must be in the range of 200 to 599, inclusive.')\n }\n\n // 2. If init[\"statusText\"] does not match the reason-phrase token production,\n // then throw a TypeError.\n if ('statusText' in init && init.statusText != null) {\n // See, https://datatracker.ietf.org/doc/html/rfc7230#section-3.1.2:\n // reason-phrase = *( HTAB / SP / VCHAR / obs-text )\n if (!isValidReasonPhrase(String(init.statusText))) {\n throw new TypeError('Invalid statusText')\n }\n }\n\n // 3. Set response’s response’s status to init[\"status\"].\n if ('status' in init && init.status != null) {\n response[kState].status = init.status\n }\n\n // 4. Set response’s response’s status message to init[\"statusText\"].\n if ('statusText' in init && init.statusText != null) {\n response[kState].statusText = init.statusText\n }\n\n // 5. If init[\"headers\"] exists, then fill response’s headers with init[\"headers\"].\n if ('headers' in init && init.headers != null) {\n fill(response[kHeaders], init.headers)\n }\n\n // 6. If body was given, then:\n if (body) {\n // 1. If response's status is a null body status, then throw a TypeError.\n if (nullBodyStatus.includes(response.status)) {\n throw webidl.errors.exception({\n header: 'Response constructor',\n message: 'Invalid response status code ' + response.status\n })\n }\n\n // 2. Set response's body to body's body.\n response[kState].body = body.body\n\n // 3. If body's type is non-null and response's header list does not contain\n // `Content-Type`, then append (`Content-Type`, body's type) to response's header list.\n if (body.type != null && !response[kState].headersList.contains('Content-Type')) {\n response[kState].headersList.append('content-type', body.type)\n }\n }\n}\n\nwebidl.converters.ReadableStream = webidl.interfaceConverter(\n ReadableStream\n)\n\nwebidl.converters.FormData = webidl.interfaceConverter(\n FormData\n)\n\nwebidl.converters.URLSearchParams = webidl.interfaceConverter(\n URLSearchParams\n)\n\n// https://fetch.spec.whatwg.org/#typedefdef-xmlhttprequestbodyinit\nwebidl.converters.XMLHttpRequestBodyInit = function (V) {\n if (typeof V === 'string') {\n return webidl.converters.USVString(V)\n }\n\n if (isBlobLike(V)) {\n return webidl.converters.Blob(V, { strict: false })\n }\n\n if (types.isArrayBuffer(V) || types.isTypedArray(V) || types.isDataView(V)) {\n return webidl.converters.BufferSource(V)\n }\n\n if (util.isFormDataLike(V)) {\n return webidl.converters.FormData(V, { strict: false })\n }\n\n if (V instanceof URLSearchParams) {\n return webidl.converters.URLSearchParams(V)\n }\n\n return webidl.converters.DOMString(V)\n}\n\n// https://fetch.spec.whatwg.org/#bodyinit\nwebidl.converters.BodyInit = function (V) {\n if (V instanceof ReadableStream) {\n return webidl.converters.ReadableStream(V)\n }\n\n // Note: the spec doesn't include async iterables,\n // this is an undici extension.\n if (V?.[Symbol.asyncIterator]) {\n return V\n }\n\n return webidl.converters.XMLHttpRequestBodyInit(V)\n}\n\nwebidl.converters.ResponseInit = webidl.dictionaryConverter([\n {\n key: 'status',\n converter: webidl.converters['unsigned short'],\n defaultValue: 200\n },\n {\n key: 'statusText',\n converter: webidl.converters.ByteString,\n defaultValue: ''\n },\n {\n key: 'headers',\n converter: webidl.converters.HeadersInit\n }\n])\n\nmodule.exports = {\n makeNetworkError,\n makeResponse,\n makeAppropriateNetworkError,\n filterResponse,\n Response,\n cloneResponse\n}\n","/* globals AbortController */\n\n'use strict'\n\nconst { extractBody, mixinBody, cloneBody } = require('./body')\nconst { Headers, fill: fillHeaders, HeadersList } = require('./headers')\nconst { FinalizationRegistry } = require('../compat/dispatcher-weakref')()\nconst util = require('../core/util')\nconst {\n isValidHTTPToken,\n sameOrigin,\n normalizeMethod,\n makePolicyContainer,\n normalizeMethodRecord\n} = require('./util')\nconst {\n forbiddenMethodsSet,\n corsSafeListedMethodsSet,\n referrerPolicy,\n requestRedirect,\n requestMode,\n requestCredentials,\n requestCache,\n requestDuplex\n} = require('./constants')\nconst { kEnumerableProperty } = util\nconst { kHeaders, kSignal, kState, kGuard, kRealm } = require('./symbols')\nconst { webidl } = require('./webidl')\nconst { getGlobalOrigin } = require('./global')\nconst { URLSerializer } = require('./dataURL')\nconst { kHeadersList, kConstruct } = require('../core/symbols')\nconst assert = require('assert')\nconst { getMaxListeners, setMaxListeners, getEventListeners, defaultMaxListeners } = require('events')\n\nlet TransformStream = globalThis.TransformStream\n\nconst kAbortController = Symbol('abortController')\n\nconst requestFinalizer = new FinalizationRegistry(({ signal, abort }) => {\n signal.removeEventListener('abort', abort)\n})\n\n// https://fetch.spec.whatwg.org/#request-class\nclass Request {\n // https://fetch.spec.whatwg.org/#dom-request\n constructor (input, init = {}) {\n if (input === kConstruct) {\n return\n }\n\n webidl.argumentLengthCheck(arguments, 1, { header: 'Request constructor' })\n\n input = webidl.converters.RequestInfo(input)\n init = webidl.converters.RequestInit(init)\n\n // https://html.spec.whatwg.org/multipage/webappapis.html#environment-settings-object\n this[kRealm] = {\n settingsObject: {\n baseUrl: getGlobalOrigin(),\n get origin () {\n return this.baseUrl?.origin\n },\n policyContainer: makePolicyContainer()\n }\n }\n\n // 1. Let request be null.\n let request = null\n\n // 2. Let fallbackMode be null.\n let fallbackMode = null\n\n // 3. Let baseURL be this’s relevant settings object’s API base URL.\n const baseUrl = this[kRealm].settingsObject.baseUrl\n\n // 4. Let signal be null.\n let signal = null\n\n // 5. If input is a string, then:\n if (typeof input === 'string') {\n // 1. Let parsedURL be the result of parsing input with baseURL.\n // 2. If parsedURL is failure, then throw a TypeError.\n let parsedURL\n try {\n parsedURL = new URL(input, baseUrl)\n } catch (err) {\n throw new TypeError('Failed to parse URL from ' + input, { cause: err })\n }\n\n // 3. If parsedURL includes credentials, then throw a TypeError.\n if (parsedURL.username || parsedURL.password) {\n throw new TypeError(\n 'Request cannot be constructed from a URL that includes credentials: ' +\n input\n )\n }\n\n // 4. Set request to a new request whose URL is parsedURL.\n request = makeRequest({ urlList: [parsedURL] })\n\n // 5. Set fallbackMode to \"cors\".\n fallbackMode = 'cors'\n } else {\n // 6. Otherwise:\n\n // 7. Assert: input is a Request object.\n assert(input instanceof Request)\n\n // 8. Set request to input’s request.\n request = input[kState]\n\n // 9. Set signal to input’s signal.\n signal = input[kSignal]\n }\n\n // 7. Let origin be this’s relevant settings object’s origin.\n const origin = this[kRealm].settingsObject.origin\n\n // 8. Let window be \"client\".\n let window = 'client'\n\n // 9. If request’s window is an environment settings object and its origin\n // is same origin with origin, then set window to request’s window.\n if (\n request.window?.constructor?.name === 'EnvironmentSettingsObject' &&\n sameOrigin(request.window, origin)\n ) {\n window = request.window\n }\n\n // 10. If init[\"window\"] exists and is non-null, then throw a TypeError.\n if (init.window != null) {\n throw new TypeError(`'window' option '${window}' must be null`)\n }\n\n // 11. If init[\"window\"] exists, then set window to \"no-window\".\n if ('window' in init) {\n window = 'no-window'\n }\n\n // 12. Set request to a new request with the following properties:\n request = makeRequest({\n // URL request’s URL.\n // undici implementation note: this is set as the first item in request's urlList in makeRequest\n // method request’s method.\n method: request.method,\n // header list A copy of request’s header list.\n // undici implementation note: headersList is cloned in makeRequest\n headersList: request.headersList,\n // unsafe-request flag Set.\n unsafeRequest: request.unsafeRequest,\n // client This’s relevant settings object.\n client: this[kRealm].settingsObject,\n // window window.\n window,\n // priority request’s priority.\n priority: request.priority,\n // origin request’s origin. The propagation of the origin is only significant for navigation requests\n // being handled by a service worker. In this scenario a request can have an origin that is different\n // from the current client.\n origin: request.origin,\n // referrer request’s referrer.\n referrer: request.referrer,\n // referrer policy request’s referrer policy.\n referrerPolicy: request.referrerPolicy,\n // mode request’s mode.\n mode: request.mode,\n // credentials mode request’s credentials mode.\n credentials: request.credentials,\n // cache mode request’s cache mode.\n cache: request.cache,\n // redirect mode request’s redirect mode.\n redirect: request.redirect,\n // integrity metadata request’s integrity metadata.\n integrity: request.integrity,\n // keepalive request’s keepalive.\n keepalive: request.keepalive,\n // reload-navigation flag request’s reload-navigation flag.\n reloadNavigation: request.reloadNavigation,\n // history-navigation flag request’s history-navigation flag.\n historyNavigation: request.historyNavigation,\n // URL list A clone of request’s URL list.\n urlList: [...request.urlList]\n })\n\n const initHasKey = Object.keys(init).length !== 0\n\n // 13. If init is not empty, then:\n if (initHasKey) {\n // 1. If request’s mode is \"navigate\", then set it to \"same-origin\".\n if (request.mode === 'navigate') {\n request.mode = 'same-origin'\n }\n\n // 2. Unset request’s reload-navigation flag.\n request.reloadNavigation = false\n\n // 3. Unset request’s history-navigation flag.\n request.historyNavigation = false\n\n // 4. Set request’s origin to \"client\".\n request.origin = 'client'\n\n // 5. Set request’s referrer to \"client\"\n request.referrer = 'client'\n\n // 6. Set request’s referrer policy to the empty string.\n request.referrerPolicy = ''\n\n // 7. Set request’s URL to request’s current URL.\n request.url = request.urlList[request.urlList.length - 1]\n\n // 8. Set request’s URL list to « request’s URL ».\n request.urlList = [request.url]\n }\n\n // 14. If init[\"referrer\"] exists, then:\n if (init.referrer !== undefined) {\n // 1. Let referrer be init[\"referrer\"].\n const referrer = init.referrer\n\n // 2. If referrer is the empty string, then set request’s referrer to \"no-referrer\".\n if (referrer === '') {\n request.referrer = 'no-referrer'\n } else {\n // 1. Let parsedReferrer be the result of parsing referrer with\n // baseURL.\n // 2. If parsedReferrer is failure, then throw a TypeError.\n let parsedReferrer\n try {\n parsedReferrer = new URL(referrer, baseUrl)\n } catch (err) {\n throw new TypeError(`Referrer \"${referrer}\" is not a valid URL.`, { cause: err })\n }\n\n // 3. If one of the following is true\n // - parsedReferrer’s scheme is \"about\" and path is the string \"client\"\n // - parsedReferrer’s origin is not same origin with origin\n // then set request’s referrer to \"client\".\n if (\n (parsedReferrer.protocol === 'about:' && parsedReferrer.hostname === 'client') ||\n (origin && !sameOrigin(parsedReferrer, this[kRealm].settingsObject.baseUrl))\n ) {\n request.referrer = 'client'\n } else {\n // 4. Otherwise, set request’s referrer to parsedReferrer.\n request.referrer = parsedReferrer\n }\n }\n }\n\n // 15. If init[\"referrerPolicy\"] exists, then set request’s referrer policy\n // to it.\n if (init.referrerPolicy !== undefined) {\n request.referrerPolicy = init.referrerPolicy\n }\n\n // 16. Let mode be init[\"mode\"] if it exists, and fallbackMode otherwise.\n let mode\n if (init.mode !== undefined) {\n mode = init.mode\n } else {\n mode = fallbackMode\n }\n\n // 17. If mode is \"navigate\", then throw a TypeError.\n if (mode === 'navigate') {\n throw webidl.errors.exception({\n header: 'Request constructor',\n message: 'invalid request mode navigate.'\n })\n }\n\n // 18. If mode is non-null, set request’s mode to mode.\n if (mode != null) {\n request.mode = mode\n }\n\n // 19. If init[\"credentials\"] exists, then set request’s credentials mode\n // to it.\n if (init.credentials !== undefined) {\n request.credentials = init.credentials\n }\n\n // 18. If init[\"cache\"] exists, then set request’s cache mode to it.\n if (init.cache !== undefined) {\n request.cache = init.cache\n }\n\n // 21. If request’s cache mode is \"only-if-cached\" and request’s mode is\n // not \"same-origin\", then throw a TypeError.\n if (request.cache === 'only-if-cached' && request.mode !== 'same-origin') {\n throw new TypeError(\n \"'only-if-cached' can be set only with 'same-origin' mode\"\n )\n }\n\n // 22. If init[\"redirect\"] exists, then set request’s redirect mode to it.\n if (init.redirect !== undefined) {\n request.redirect = init.redirect\n }\n\n // 23. If init[\"integrity\"] exists, then set request’s integrity metadata to it.\n if (init.integrity != null) {\n request.integrity = String(init.integrity)\n }\n\n // 24. If init[\"keepalive\"] exists, then set request’s keepalive to it.\n if (init.keepalive !== undefined) {\n request.keepalive = Boolean(init.keepalive)\n }\n\n // 25. If init[\"method\"] exists, then:\n if (init.method !== undefined) {\n // 1. Let method be init[\"method\"].\n let method = init.method\n\n // 2. If method is not a method or method is a forbidden method, then\n // throw a TypeError.\n if (!isValidHTTPToken(method)) {\n throw new TypeError(`'${method}' is not a valid HTTP method.`)\n }\n\n if (forbiddenMethodsSet.has(method.toUpperCase())) {\n throw new TypeError(`'${method}' HTTP method is unsupported.`)\n }\n\n // 3. Normalize method.\n method = normalizeMethodRecord[method] ?? normalizeMethod(method)\n\n // 4. Set request’s method to method.\n request.method = method\n }\n\n // 26. If init[\"signal\"] exists, then set signal to it.\n if (init.signal !== undefined) {\n signal = init.signal\n }\n\n // 27. Set this’s request to request.\n this[kState] = request\n\n // 28. Set this’s signal to a new AbortSignal object with this’s relevant\n // Realm.\n // TODO: could this be simplified with AbortSignal.any\n // (https://dom.spec.whatwg.org/#dom-abortsignal-any)\n const ac = new AbortController()\n this[kSignal] = ac.signal\n this[kSignal][kRealm] = this[kRealm]\n\n // 29. If signal is not null, then make this’s signal follow signal.\n if (signal != null) {\n if (\n !signal ||\n typeof signal.aborted !== 'boolean' ||\n typeof signal.addEventListener !== 'function'\n ) {\n throw new TypeError(\n \"Failed to construct 'Request': member signal is not of type AbortSignal.\"\n )\n }\n\n if (signal.aborted) {\n ac.abort(signal.reason)\n } else {\n // Keep a strong ref to ac while request object\n // is alive. This is needed to prevent AbortController\n // from being prematurely garbage collected.\n // See, https://github.com/nodejs/undici/issues/1926.\n this[kAbortController] = ac\n\n const acRef = new WeakRef(ac)\n const abort = function () {\n const ac = acRef.deref()\n if (ac !== undefined) {\n ac.abort(this.reason)\n }\n }\n\n // Third-party AbortControllers may not work with these.\n // See, https://github.com/nodejs/undici/pull/1910#issuecomment-1464495619.\n try {\n // If the max amount of listeners is equal to the default, increase it\n // This is only available in node >= v19.9.0\n if (typeof getMaxListeners === 'function' && getMaxListeners(signal) === defaultMaxListeners) {\n setMaxListeners(100, signal)\n } else if (getEventListeners(signal, 'abort').length >= defaultMaxListeners) {\n setMaxListeners(100, signal)\n }\n } catch {}\n\n util.addAbortListener(signal, abort)\n requestFinalizer.register(ac, { signal, abort })\n }\n }\n\n // 30. Set this’s headers to a new Headers object with this’s relevant\n // Realm, whose header list is request’s header list and guard is\n // \"request\".\n this[kHeaders] = new Headers(kConstruct)\n this[kHeaders][kHeadersList] = request.headersList\n this[kHeaders][kGuard] = 'request'\n this[kHeaders][kRealm] = this[kRealm]\n\n // 31. If this’s request’s mode is \"no-cors\", then:\n if (mode === 'no-cors') {\n // 1. If this’s request’s method is not a CORS-safelisted method,\n // then throw a TypeError.\n if (!corsSafeListedMethodsSet.has(request.method)) {\n throw new TypeError(\n `'${request.method} is unsupported in no-cors mode.`\n )\n }\n\n // 2. Set this’s headers’s guard to \"request-no-cors\".\n this[kHeaders][kGuard] = 'request-no-cors'\n }\n\n // 32. If init is not empty, then:\n if (initHasKey) {\n /** @type {HeadersList} */\n const headersList = this[kHeaders][kHeadersList]\n // 1. Let headers be a copy of this’s headers and its associated header\n // list.\n // 2. If init[\"headers\"] exists, then set headers to init[\"headers\"].\n const headers = init.headers !== undefined ? init.headers : new HeadersList(headersList)\n\n // 3. Empty this’s headers’s header list.\n headersList.clear()\n\n // 4. If headers is a Headers object, then for each header in its header\n // list, append header’s name/header’s value to this’s headers.\n if (headers instanceof HeadersList) {\n for (const [key, val] of headers) {\n headersList.append(key, val)\n }\n // Note: Copy the `set-cookie` meta-data.\n headersList.cookies = headers.cookies\n } else {\n // 5. Otherwise, fill this’s headers with headers.\n fillHeaders(this[kHeaders], headers)\n }\n }\n\n // 33. Let inputBody be input’s request’s body if input is a Request\n // object; otherwise null.\n const inputBody = input instanceof Request ? input[kState].body : null\n\n // 34. If either init[\"body\"] exists and is non-null or inputBody is\n // non-null, and request’s method is `GET` or `HEAD`, then throw a\n // TypeError.\n if (\n (init.body != null || inputBody != null) &&\n (request.method === 'GET' || request.method === 'HEAD')\n ) {\n throw new TypeError('Request with GET/HEAD method cannot have body.')\n }\n\n // 35. Let initBody be null.\n let initBody = null\n\n // 36. If init[\"body\"] exists and is non-null, then:\n if (init.body != null) {\n // 1. Let Content-Type be null.\n // 2. Set initBody and Content-Type to the result of extracting\n // init[\"body\"], with keepalive set to request’s keepalive.\n const [extractedBody, contentType] = extractBody(\n init.body,\n request.keepalive\n )\n initBody = extractedBody\n\n // 3, If Content-Type is non-null and this’s headers’s header list does\n // not contain `Content-Type`, then append `Content-Type`/Content-Type to\n // this’s headers.\n if (contentType && !this[kHeaders][kHeadersList].contains('content-type')) {\n this[kHeaders].append('content-type', contentType)\n }\n }\n\n // 37. Let inputOrInitBody be initBody if it is non-null; otherwise\n // inputBody.\n const inputOrInitBody = initBody ?? inputBody\n\n // 38. If inputOrInitBody is non-null and inputOrInitBody’s source is\n // null, then:\n if (inputOrInitBody != null && inputOrInitBody.source == null) {\n // 1. If initBody is non-null and init[\"duplex\"] does not exist,\n // then throw a TypeError.\n if (initBody != null && init.duplex == null) {\n throw new TypeError('RequestInit: duplex option is required when sending a body.')\n }\n\n // 2. If this’s request’s mode is neither \"same-origin\" nor \"cors\",\n // then throw a TypeError.\n if (request.mode !== 'same-origin' && request.mode !== 'cors') {\n throw new TypeError(\n 'If request is made from ReadableStream, mode should be \"same-origin\" or \"cors\"'\n )\n }\n\n // 3. Set this’s request’s use-CORS-preflight flag.\n request.useCORSPreflightFlag = true\n }\n\n // 39. Let finalBody be inputOrInitBody.\n let finalBody = inputOrInitBody\n\n // 40. If initBody is null and inputBody is non-null, then:\n if (initBody == null && inputBody != null) {\n // 1. If input is unusable, then throw a TypeError.\n if (util.isDisturbed(inputBody.stream) || inputBody.stream.locked) {\n throw new TypeError(\n 'Cannot construct a Request with a Request object that has already been used.'\n )\n }\n\n // 2. Set finalBody to the result of creating a proxy for inputBody.\n if (!TransformStream) {\n TransformStream = require('stream/web').TransformStream\n }\n\n // https://streams.spec.whatwg.org/#readablestream-create-a-proxy\n const identityTransform = new TransformStream()\n inputBody.stream.pipeThrough(identityTransform)\n finalBody = {\n source: inputBody.source,\n length: inputBody.length,\n stream: identityTransform.readable\n }\n }\n\n // 41. Set this’s request’s body to finalBody.\n this[kState].body = finalBody\n }\n\n // Returns request’s HTTP method, which is \"GET\" by default.\n get method () {\n webidl.brandCheck(this, Request)\n\n // The method getter steps are to return this’s request’s method.\n return this[kState].method\n }\n\n // Returns the URL of request as a string.\n get url () {\n webidl.brandCheck(this, Request)\n\n // The url getter steps are to return this’s request’s URL, serialized.\n return URLSerializer(this[kState].url)\n }\n\n // Returns a Headers object consisting of the headers associated with request.\n // Note that headers added in the network layer by the user agent will not\n // be accounted for in this object, e.g., the \"Host\" header.\n get headers () {\n webidl.brandCheck(this, Request)\n\n // The headers getter steps are to return this’s headers.\n return this[kHeaders]\n }\n\n // Returns the kind of resource requested by request, e.g., \"document\"\n // or \"script\".\n get destination () {\n webidl.brandCheck(this, Request)\n\n // The destination getter are to return this’s request’s destination.\n return this[kState].destination\n }\n\n // Returns the referrer of request. Its value can be a same-origin URL if\n // explicitly set in init, the empty string to indicate no referrer, and\n // \"about:client\" when defaulting to the global’s default. This is used\n // during fetching to determine the value of the `Referer` header of the\n // request being made.\n get referrer () {\n webidl.brandCheck(this, Request)\n\n // 1. If this’s request’s referrer is \"no-referrer\", then return the\n // empty string.\n if (this[kState].referrer === 'no-referrer') {\n return ''\n }\n\n // 2. If this’s request’s referrer is \"client\", then return\n // \"about:client\".\n if (this[kState].referrer === 'client') {\n return 'about:client'\n }\n\n // Return this’s request’s referrer, serialized.\n return this[kState].referrer.toString()\n }\n\n // Returns the referrer policy associated with request.\n // This is used during fetching to compute the value of the request’s\n // referrer.\n get referrerPolicy () {\n webidl.brandCheck(this, Request)\n\n // The referrerPolicy getter steps are to return this’s request’s referrer policy.\n return this[kState].referrerPolicy\n }\n\n // Returns the mode associated with request, which is a string indicating\n // whether the request will use CORS, or will be restricted to same-origin\n // URLs.\n get mode () {\n webidl.brandCheck(this, Request)\n\n // The mode getter steps are to return this’s request’s mode.\n return this[kState].mode\n }\n\n // Returns the credentials mode associated with request,\n // which is a string indicating whether credentials will be sent with the\n // request always, never, or only when sent to a same-origin URL.\n get credentials () {\n // The credentials getter steps are to return this’s request’s credentials mode.\n return this[kState].credentials\n }\n\n // Returns the cache mode associated with request,\n // which is a string indicating how the request will\n // interact with the browser’s cache when fetching.\n get cache () {\n webidl.brandCheck(this, Request)\n\n // The cache getter steps are to return this’s request’s cache mode.\n return this[kState].cache\n }\n\n // Returns the redirect mode associated with request,\n // which is a string indicating how redirects for the\n // request will be handled during fetching. A request\n // will follow redirects by default.\n get redirect () {\n webidl.brandCheck(this, Request)\n\n // The redirect getter steps are to return this’s request’s redirect mode.\n return this[kState].redirect\n }\n\n // Returns request’s subresource integrity metadata, which is a\n // cryptographic hash of the resource being fetched. Its value\n // consists of multiple hashes separated by whitespace. [SRI]\n get integrity () {\n webidl.brandCheck(this, Request)\n\n // The integrity getter steps are to return this’s request’s integrity\n // metadata.\n return this[kState].integrity\n }\n\n // Returns a boolean indicating whether or not request can outlive the\n // global in which it was created.\n get keepalive () {\n webidl.brandCheck(this, Request)\n\n // The keepalive getter steps are to return this’s request’s keepalive.\n return this[kState].keepalive\n }\n\n // Returns a boolean indicating whether or not request is for a reload\n // navigation.\n get isReloadNavigation () {\n webidl.brandCheck(this, Request)\n\n // The isReloadNavigation getter steps are to return true if this’s\n // request’s reload-navigation flag is set; otherwise false.\n return this[kState].reloadNavigation\n }\n\n // Returns a boolean indicating whether or not request is for a history\n // navigation (a.k.a. back-foward navigation).\n get isHistoryNavigation () {\n webidl.brandCheck(this, Request)\n\n // The isHistoryNavigation getter steps are to return true if this’s request’s\n // history-navigation flag is set; otherwise false.\n return this[kState].historyNavigation\n }\n\n // Returns the signal associated with request, which is an AbortSignal\n // object indicating whether or not request has been aborted, and its\n // abort event handler.\n get signal () {\n webidl.brandCheck(this, Request)\n\n // The signal getter steps are to return this’s signal.\n return this[kSignal]\n }\n\n get body () {\n webidl.brandCheck(this, Request)\n\n return this[kState].body ? this[kState].body.stream : null\n }\n\n get bodyUsed () {\n webidl.brandCheck(this, Request)\n\n return !!this[kState].body && util.isDisturbed(this[kState].body.stream)\n }\n\n get duplex () {\n webidl.brandCheck(this, Request)\n\n return 'half'\n }\n\n // Returns a clone of request.\n clone () {\n webidl.brandCheck(this, Request)\n\n // 1. If this is unusable, then throw a TypeError.\n if (this.bodyUsed || this.body?.locked) {\n throw new TypeError('unusable')\n }\n\n // 2. Let clonedRequest be the result of cloning this’s request.\n const clonedRequest = cloneRequest(this[kState])\n\n // 3. Let clonedRequestObject be the result of creating a Request object,\n // given clonedRequest, this’s headers’s guard, and this’s relevant Realm.\n const clonedRequestObject = new Request(kConstruct)\n clonedRequestObject[kState] = clonedRequest\n clonedRequestObject[kRealm] = this[kRealm]\n clonedRequestObject[kHeaders] = new Headers(kConstruct)\n clonedRequestObject[kHeaders][kHeadersList] = clonedRequest.headersList\n clonedRequestObject[kHeaders][kGuard] = this[kHeaders][kGuard]\n clonedRequestObject[kHeaders][kRealm] = this[kHeaders][kRealm]\n\n // 4. Make clonedRequestObject’s signal follow this’s signal.\n const ac = new AbortController()\n if (this.signal.aborted) {\n ac.abort(this.signal.reason)\n } else {\n util.addAbortListener(\n this.signal,\n () => {\n ac.abort(this.signal.reason)\n }\n )\n }\n clonedRequestObject[kSignal] = ac.signal\n\n // 4. Return clonedRequestObject.\n return clonedRequestObject\n }\n}\n\nmixinBody(Request)\n\nfunction makeRequest (init) {\n // https://fetch.spec.whatwg.org/#requests\n const request = {\n method: 'GET',\n localURLsOnly: false,\n unsafeRequest: false,\n body: null,\n client: null,\n reservedClient: null,\n replacesClientId: '',\n window: 'client',\n keepalive: false,\n serviceWorkers: 'all',\n initiator: '',\n destination: '',\n priority: null,\n origin: 'client',\n policyContainer: 'client',\n referrer: 'client',\n referrerPolicy: '',\n mode: 'no-cors',\n useCORSPreflightFlag: false,\n credentials: 'same-origin',\n useCredentials: false,\n cache: 'default',\n redirect: 'follow',\n integrity: '',\n cryptoGraphicsNonceMetadata: '',\n parserMetadata: '',\n reloadNavigation: false,\n historyNavigation: false,\n userActivation: false,\n taintedOrigin: false,\n redirectCount: 0,\n responseTainting: 'basic',\n preventNoCacheCacheControlHeaderModification: false,\n done: false,\n timingAllowFailed: false,\n ...init,\n headersList: init.headersList\n ? new HeadersList(init.headersList)\n : new HeadersList()\n }\n request.url = request.urlList[0]\n return request\n}\n\n// https://fetch.spec.whatwg.org/#concept-request-clone\nfunction cloneRequest (request) {\n // To clone a request request, run these steps:\n\n // 1. Let newRequest be a copy of request, except for its body.\n const newRequest = makeRequest({ ...request, body: null })\n\n // 2. If request’s body is non-null, set newRequest’s body to the\n // result of cloning request’s body.\n if (request.body != null) {\n newRequest.body = cloneBody(request.body)\n }\n\n // 3. Return newRequest.\n return newRequest\n}\n\nObject.defineProperties(Request.prototype, {\n method: kEnumerableProperty,\n url: kEnumerableProperty,\n headers: kEnumerableProperty,\n redirect: kEnumerableProperty,\n clone: kEnumerableProperty,\n signal: kEnumerableProperty,\n duplex: kEnumerableProperty,\n destination: kEnumerableProperty,\n body: kEnumerableProperty,\n bodyUsed: kEnumerableProperty,\n isHistoryNavigation: kEnumerableProperty,\n isReloadNavigation: kEnumerableProperty,\n keepalive: kEnumerableProperty,\n integrity: kEnumerableProperty,\n cache: kEnumerableProperty,\n credentials: kEnumerableProperty,\n attribute: kEnumerableProperty,\n referrerPolicy: kEnumerableProperty,\n referrer: kEnumerableProperty,\n mode: kEnumerableProperty,\n [Symbol.toStringTag]: {\n value: 'Request',\n configurable: true\n }\n})\n\nwebidl.converters.Request = webidl.interfaceConverter(\n Request\n)\n\n// https://fetch.spec.whatwg.org/#requestinfo\nwebidl.converters.RequestInfo = function (V) {\n if (typeof V === 'string') {\n return webidl.converters.USVString(V)\n }\n\n if (V instanceof Request) {\n return webidl.converters.Request(V)\n }\n\n return webidl.converters.USVString(V)\n}\n\nwebidl.converters.AbortSignal = webidl.interfaceConverter(\n AbortSignal\n)\n\n// https://fetch.spec.whatwg.org/#requestinit\nwebidl.converters.RequestInit = webidl.dictionaryConverter([\n {\n key: 'method',\n converter: webidl.converters.ByteString\n },\n {\n key: 'headers',\n converter: webidl.converters.HeadersInit\n },\n {\n key: 'body',\n converter: webidl.nullableConverter(\n webidl.converters.BodyInit\n )\n },\n {\n key: 'referrer',\n converter: webidl.converters.USVString\n },\n {\n key: 'referrerPolicy',\n converter: webidl.converters.DOMString,\n // https://w3c.github.io/webappsec-referrer-policy/#referrer-policy\n allowedValues: referrerPolicy\n },\n {\n key: 'mode',\n converter: webidl.converters.DOMString,\n // https://fetch.spec.whatwg.org/#concept-request-mode\n allowedValues: requestMode\n },\n {\n key: 'credentials',\n converter: webidl.converters.DOMString,\n // https://fetch.spec.whatwg.org/#requestcredentials\n allowedValues: requestCredentials\n },\n {\n key: 'cache',\n converter: webidl.converters.DOMString,\n // https://fetch.spec.whatwg.org/#requestcache\n allowedValues: requestCache\n },\n {\n key: 'redirect',\n converter: webidl.converters.DOMString,\n // https://fetch.spec.whatwg.org/#requestredirect\n allowedValues: requestRedirect\n },\n {\n key: 'integrity',\n converter: webidl.converters.DOMString\n },\n {\n key: 'keepalive',\n converter: webidl.converters.boolean\n },\n {\n key: 'signal',\n converter: webidl.nullableConverter(\n (signal) => webidl.converters.AbortSignal(\n signal,\n { strict: false }\n )\n )\n },\n {\n key: 'window',\n converter: webidl.converters.any\n },\n {\n key: 'duplex',\n converter: webidl.converters.DOMString,\n allowedValues: requestDuplex\n }\n])\n\nmodule.exports = { Request, makeRequest }\n","// https://github.com/Ethan-Arrowood/undici-fetch\n\n'use strict'\n\nconst {\n Response,\n makeNetworkError,\n makeAppropriateNetworkError,\n filterResponse,\n makeResponse\n} = require('./response')\nconst { Headers } = require('./headers')\nconst { Request, makeRequest } = require('./request')\nconst zlib = require('zlib')\nconst {\n bytesMatch,\n makePolicyContainer,\n clonePolicyContainer,\n requestBadPort,\n TAOCheck,\n appendRequestOriginHeader,\n responseLocationURL,\n requestCurrentURL,\n setRequestReferrerPolicyOnRedirect,\n tryUpgradeRequestToAPotentiallyTrustworthyURL,\n createOpaqueTimingInfo,\n appendFetchMetadata,\n corsCheck,\n crossOriginResourcePolicyCheck,\n determineRequestsReferrer,\n coarsenedSharedCurrentTime,\n createDeferredPromise,\n isBlobLike,\n sameOrigin,\n isCancelled,\n isAborted,\n isErrorLike,\n fullyReadBody,\n readableStreamClose,\n isomorphicEncode,\n urlIsLocal,\n urlIsHttpHttpsScheme,\n urlHasHttpsScheme\n} = require('./util')\nconst { kState, kHeaders, kGuard, kRealm } = require('./symbols')\nconst assert = require('assert')\nconst { safelyExtractBody } = require('./body')\nconst {\n redirectStatusSet,\n nullBodyStatus,\n safeMethodsSet,\n requestBodyHeader,\n subresourceSet,\n DOMException\n} = require('./constants')\nconst { kHeadersList } = require('../core/symbols')\nconst EE = require('events')\nconst { Readable, pipeline } = require('stream')\nconst { addAbortListener, isErrored, isReadable, nodeMajor, nodeMinor } = require('../core/util')\nconst { dataURLProcessor, serializeAMimeType } = require('./dataURL')\nconst { TransformStream } = require('stream/web')\nconst { getGlobalDispatcher } = require('../global')\nconst { webidl } = require('./webidl')\nconst { STATUS_CODES } = require('http')\nconst GET_OR_HEAD = ['GET', 'HEAD']\n\n/** @type {import('buffer').resolveObjectURL} */\nlet resolveObjectURL\nlet ReadableStream = globalThis.ReadableStream\n\nclass Fetch extends EE {\n constructor (dispatcher) {\n super()\n\n this.dispatcher = dispatcher\n this.connection = null\n this.dump = false\n this.state = 'ongoing'\n // 2 terminated listeners get added per request,\n // but only 1 gets removed. If there are 20 redirects,\n // 21 listeners will be added.\n // See https://github.com/nodejs/undici/issues/1711\n // TODO (fix): Find and fix root cause for leaked listener.\n this.setMaxListeners(21)\n }\n\n terminate (reason) {\n if (this.state !== 'ongoing') {\n return\n }\n\n this.state = 'terminated'\n this.connection?.destroy(reason)\n this.emit('terminated', reason)\n }\n\n // https://fetch.spec.whatwg.org/#fetch-controller-abort\n abort (error) {\n if (this.state !== 'ongoing') {\n return\n }\n\n // 1. Set controller’s state to \"aborted\".\n this.state = 'aborted'\n\n // 2. Let fallbackError be an \"AbortError\" DOMException.\n // 3. Set error to fallbackError if it is not given.\n if (!error) {\n error = new DOMException('The operation was aborted.', 'AbortError')\n }\n\n // 4. Let serializedError be StructuredSerialize(error).\n // If that threw an exception, catch it, and let\n // serializedError be StructuredSerialize(fallbackError).\n\n // 5. Set controller’s serialized abort reason to serializedError.\n this.serializedAbortReason = error\n\n this.connection?.destroy(error)\n this.emit('terminated', error)\n }\n}\n\n// https://fetch.spec.whatwg.org/#fetch-method\nfunction fetch (input, init = {}) {\n webidl.argumentLengthCheck(arguments, 1, { header: 'globalThis.fetch' })\n\n // 1. Let p be a new promise.\n const p = createDeferredPromise()\n\n // 2. Let requestObject be the result of invoking the initial value of\n // Request as constructor with input and init as arguments. If this throws\n // an exception, reject p with it and return p.\n let requestObject\n\n try {\n requestObject = new Request(input, init)\n } catch (e) {\n p.reject(e)\n return p.promise\n }\n\n // 3. Let request be requestObject’s request.\n const request = requestObject[kState]\n\n // 4. If requestObject’s signal’s aborted flag is set, then:\n if (requestObject.signal.aborted) {\n // 1. Abort the fetch() call with p, request, null, and\n // requestObject’s signal’s abort reason.\n abortFetch(p, request, null, requestObject.signal.reason)\n\n // 2. Return p.\n return p.promise\n }\n\n // 5. Let globalObject be request’s client’s global object.\n const globalObject = request.client.globalObject\n\n // 6. If globalObject is a ServiceWorkerGlobalScope object, then set\n // request’s service-workers mode to \"none\".\n if (globalObject?.constructor?.name === 'ServiceWorkerGlobalScope') {\n request.serviceWorkers = 'none'\n }\n\n // 7. Let responseObject be null.\n let responseObject = null\n\n // 8. Let relevantRealm be this’s relevant Realm.\n const relevantRealm = null\n\n // 9. Let locallyAborted be false.\n let locallyAborted = false\n\n // 10. Let controller be null.\n let controller = null\n\n // 11. Add the following abort steps to requestObject’s signal:\n addAbortListener(\n requestObject.signal,\n () => {\n // 1. Set locallyAborted to true.\n locallyAborted = true\n\n // 2. Assert: controller is non-null.\n assert(controller != null)\n\n // 3. Abort controller with requestObject’s signal’s abort reason.\n controller.abort(requestObject.signal.reason)\n\n // 4. Abort the fetch() call with p, request, responseObject,\n // and requestObject’s signal’s abort reason.\n abortFetch(p, request, responseObject, requestObject.signal.reason)\n }\n )\n\n // 12. Let handleFetchDone given response response be to finalize and\n // report timing with response, globalObject, and \"fetch\".\n const handleFetchDone = (response) =>\n finalizeAndReportTiming(response, 'fetch')\n\n // 13. Set controller to the result of calling fetch given request,\n // with processResponseEndOfBody set to handleFetchDone, and processResponse\n // given response being these substeps:\n\n const processResponse = (response) => {\n // 1. If locallyAborted is true, terminate these substeps.\n if (locallyAborted) {\n return Promise.resolve()\n }\n\n // 2. If response’s aborted flag is set, then:\n if (response.aborted) {\n // 1. Let deserializedError be the result of deserialize a serialized\n // abort reason given controller’s serialized abort reason and\n // relevantRealm.\n\n // 2. Abort the fetch() call with p, request, responseObject, and\n // deserializedError.\n\n abortFetch(p, request, responseObject, controller.serializedAbortReason)\n return Promise.resolve()\n }\n\n // 3. If response is a network error, then reject p with a TypeError\n // and terminate these substeps.\n if (response.type === 'error') {\n p.reject(\n Object.assign(new TypeError('fetch failed'), { cause: response.error })\n )\n return Promise.resolve()\n }\n\n // 4. Set responseObject to the result of creating a Response object,\n // given response, \"immutable\", and relevantRealm.\n responseObject = new Response()\n responseObject[kState] = response\n responseObject[kRealm] = relevantRealm\n responseObject[kHeaders][kHeadersList] = response.headersList\n responseObject[kHeaders][kGuard] = 'immutable'\n responseObject[kHeaders][kRealm] = relevantRealm\n\n // 5. Resolve p with responseObject.\n p.resolve(responseObject)\n }\n\n controller = fetching({\n request,\n processResponseEndOfBody: handleFetchDone,\n processResponse,\n dispatcher: init.dispatcher ?? getGlobalDispatcher() // undici\n })\n\n // 14. Return p.\n return p.promise\n}\n\n// https://fetch.spec.whatwg.org/#finalize-and-report-timing\nfunction finalizeAndReportTiming (response, initiatorType = 'other') {\n // 1. If response is an aborted network error, then return.\n if (response.type === 'error' && response.aborted) {\n return\n }\n\n // 2. If response’s URL list is null or empty, then return.\n if (!response.urlList?.length) {\n return\n }\n\n // 3. Let originalURL be response’s URL list[0].\n const originalURL = response.urlList[0]\n\n // 4. Let timingInfo be response’s timing info.\n let timingInfo = response.timingInfo\n\n // 5. Let cacheState be response’s cache state.\n let cacheState = response.cacheState\n\n // 6. If originalURL’s scheme is not an HTTP(S) scheme, then return.\n if (!urlIsHttpHttpsScheme(originalURL)) {\n return\n }\n\n // 7. If timingInfo is null, then return.\n if (timingInfo === null) {\n return\n }\n\n // 8. If response’s timing allow passed flag is not set, then:\n if (!response.timingAllowPassed) {\n // 1. Set timingInfo to a the result of creating an opaque timing info for timingInfo.\n timingInfo = createOpaqueTimingInfo({\n startTime: timingInfo.startTime\n })\n\n // 2. Set cacheState to the empty string.\n cacheState = ''\n }\n\n // 9. Set timingInfo’s end time to the coarsened shared current time\n // given global’s relevant settings object’s cross-origin isolated\n // capability.\n // TODO: given global’s relevant settings object’s cross-origin isolated\n // capability?\n timingInfo.endTime = coarsenedSharedCurrentTime()\n\n // 10. Set response’s timing info to timingInfo.\n response.timingInfo = timingInfo\n\n // 11. Mark resource timing for timingInfo, originalURL, initiatorType,\n // global, and cacheState.\n markResourceTiming(\n timingInfo,\n originalURL,\n initiatorType,\n globalThis,\n cacheState\n )\n}\n\n// https://w3c.github.io/resource-timing/#dfn-mark-resource-timing\nfunction markResourceTiming (timingInfo, originalURL, initiatorType, globalThis, cacheState) {\n if (nodeMajor > 18 || (nodeMajor === 18 && nodeMinor >= 2)) {\n performance.markResourceTiming(timingInfo, originalURL.href, initiatorType, globalThis, cacheState)\n }\n}\n\n// https://fetch.spec.whatwg.org/#abort-fetch\nfunction abortFetch (p, request, responseObject, error) {\n // Note: AbortSignal.reason was added in node v17.2.0\n // which would give us an undefined error to reject with.\n // Remove this once node v16 is no longer supported.\n if (!error) {\n error = new DOMException('The operation was aborted.', 'AbortError')\n }\n\n // 1. Reject promise with error.\n p.reject(error)\n\n // 2. If request’s body is not null and is readable, then cancel request’s\n // body with error.\n if (request.body != null && isReadable(request.body?.stream)) {\n request.body.stream.cancel(error).catch((err) => {\n if (err.code === 'ERR_INVALID_STATE') {\n // Node bug?\n return\n }\n throw err\n })\n }\n\n // 3. If responseObject is null, then return.\n if (responseObject == null) {\n return\n }\n\n // 4. Let response be responseObject’s response.\n const response = responseObject[kState]\n\n // 5. If response’s body is not null and is readable, then error response’s\n // body with error.\n if (response.body != null && isReadable(response.body?.stream)) {\n response.body.stream.cancel(error).catch((err) => {\n if (err.code === 'ERR_INVALID_STATE') {\n // Node bug?\n return\n }\n throw err\n })\n }\n}\n\n// https://fetch.spec.whatwg.org/#fetching\nfunction fetching ({\n request,\n processRequestBodyChunkLength,\n processRequestEndOfBody,\n processResponse,\n processResponseEndOfBody,\n processResponseConsumeBody,\n useParallelQueue = false,\n dispatcher // undici\n}) {\n // 1. Let taskDestination be null.\n let taskDestination = null\n\n // 2. Let crossOriginIsolatedCapability be false.\n let crossOriginIsolatedCapability = false\n\n // 3. If request’s client is non-null, then:\n if (request.client != null) {\n // 1. Set taskDestination to request’s client’s global object.\n taskDestination = request.client.globalObject\n\n // 2. Set crossOriginIsolatedCapability to request’s client’s cross-origin\n // isolated capability.\n crossOriginIsolatedCapability =\n request.client.crossOriginIsolatedCapability\n }\n\n // 4. If useParallelQueue is true, then set taskDestination to the result of\n // starting a new parallel queue.\n // TODO\n\n // 5. Let timingInfo be a new fetch timing info whose start time and\n // post-redirect start time are the coarsened shared current time given\n // crossOriginIsolatedCapability.\n const currenTime = coarsenedSharedCurrentTime(crossOriginIsolatedCapability)\n const timingInfo = createOpaqueTimingInfo({\n startTime: currenTime\n })\n\n // 6. Let fetchParams be a new fetch params whose\n // request is request,\n // timing info is timingInfo,\n // process request body chunk length is processRequestBodyChunkLength,\n // process request end-of-body is processRequestEndOfBody,\n // process response is processResponse,\n // process response consume body is processResponseConsumeBody,\n // process response end-of-body is processResponseEndOfBody,\n // task destination is taskDestination,\n // and cross-origin isolated capability is crossOriginIsolatedCapability.\n const fetchParams = {\n controller: new Fetch(dispatcher),\n request,\n timingInfo,\n processRequestBodyChunkLength,\n processRequestEndOfBody,\n processResponse,\n processResponseConsumeBody,\n processResponseEndOfBody,\n taskDestination,\n crossOriginIsolatedCapability\n }\n\n // 7. If request’s body is a byte sequence, then set request’s body to\n // request’s body as a body.\n // NOTE: Since fetching is only called from fetch, body should already be\n // extracted.\n assert(!request.body || request.body.stream)\n\n // 8. If request’s window is \"client\", then set request’s window to request’s\n // client, if request’s client’s global object is a Window object; otherwise\n // \"no-window\".\n if (request.window === 'client') {\n // TODO: What if request.client is null?\n request.window =\n request.client?.globalObject?.constructor?.name === 'Window'\n ? request.client\n : 'no-window'\n }\n\n // 9. If request’s origin is \"client\", then set request’s origin to request’s\n // client’s origin.\n if (request.origin === 'client') {\n // TODO: What if request.client is null?\n request.origin = request.client?.origin\n }\n\n // 10. If all of the following conditions are true:\n // TODO\n\n // 11. If request’s policy container is \"client\", then:\n if (request.policyContainer === 'client') {\n // 1. If request’s client is non-null, then set request’s policy\n // container to a clone of request’s client’s policy container. [HTML]\n if (request.client != null) {\n request.policyContainer = clonePolicyContainer(\n request.client.policyContainer\n )\n } else {\n // 2. Otherwise, set request’s policy container to a new policy\n // container.\n request.policyContainer = makePolicyContainer()\n }\n }\n\n // 12. If request’s header list does not contain `Accept`, then:\n if (!request.headersList.contains('accept')) {\n // 1. Let value be `*/*`.\n const value = '*/*'\n\n // 2. A user agent should set value to the first matching statement, if\n // any, switching on request’s destination:\n // \"document\"\n // \"frame\"\n // \"iframe\"\n // `text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8`\n // \"image\"\n // `image/png,image/svg+xml,image/*;q=0.8,*/*;q=0.5`\n // \"style\"\n // `text/css,*/*;q=0.1`\n // TODO\n\n // 3. Append `Accept`/value to request’s header list.\n request.headersList.append('accept', value)\n }\n\n // 13. If request’s header list does not contain `Accept-Language`, then\n // user agents should append `Accept-Language`/an appropriate value to\n // request’s header list.\n if (!request.headersList.contains('accept-language')) {\n request.headersList.append('accept-language', '*')\n }\n\n // 14. If request’s priority is null, then use request’s initiator and\n // destination appropriately in setting request’s priority to a\n // user-agent-defined object.\n if (request.priority === null) {\n // TODO\n }\n\n // 15. If request is a subresource request, then:\n if (subresourceSet.has(request.destination)) {\n // TODO\n }\n\n // 16. Run main fetch given fetchParams.\n mainFetch(fetchParams)\n .catch(err => {\n fetchParams.controller.terminate(err)\n })\n\n // 17. Return fetchParam's controller\n return fetchParams.controller\n}\n\n// https://fetch.spec.whatwg.org/#concept-main-fetch\nasync function mainFetch (fetchParams, recursive = false) {\n // 1. Let request be fetchParams’s request.\n const request = fetchParams.request\n\n // 2. Let response be null.\n let response = null\n\n // 3. If request’s local-URLs-only flag is set and request’s current URL is\n // not local, then set response to a network error.\n if (request.localURLsOnly && !urlIsLocal(requestCurrentURL(request))) {\n response = makeNetworkError('local URLs only')\n }\n\n // 4. Run report Content Security Policy violations for request.\n // TODO\n\n // 5. Upgrade request to a potentially trustworthy URL, if appropriate.\n tryUpgradeRequestToAPotentiallyTrustworthyURL(request)\n\n // 6. If should request be blocked due to a bad port, should fetching request\n // be blocked as mixed content, or should request be blocked by Content\n // Security Policy returns blocked, then set response to a network error.\n if (requestBadPort(request) === 'blocked') {\n response = makeNetworkError('bad port')\n }\n // TODO: should fetching request be blocked as mixed content?\n // TODO: should request be blocked by Content Security Policy?\n\n // 7. If request’s referrer policy is the empty string, then set request’s\n // referrer policy to request’s policy container’s referrer policy.\n if (request.referrerPolicy === '') {\n request.referrerPolicy = request.policyContainer.referrerPolicy\n }\n\n // 8. If request’s referrer is not \"no-referrer\", then set request’s\n // referrer to the result of invoking determine request’s referrer.\n if (request.referrer !== 'no-referrer') {\n request.referrer = determineRequestsReferrer(request)\n }\n\n // 9. Set request’s current URL’s scheme to \"https\" if all of the following\n // conditions are true:\n // - request’s current URL’s scheme is \"http\"\n // - request’s current URL’s host is a domain\n // - Matching request’s current URL’s host per Known HSTS Host Domain Name\n // Matching results in either a superdomain match with an asserted\n // includeSubDomains directive or a congruent match (with or without an\n // asserted includeSubDomains directive). [HSTS]\n // TODO\n\n // 10. If recursive is false, then run the remaining steps in parallel.\n // TODO\n\n // 11. If response is null, then set response to the result of running\n // the steps corresponding to the first matching statement:\n if (response === null) {\n response = await (async () => {\n const currentURL = requestCurrentURL(request)\n\n if (\n // - request’s current URL’s origin is same origin with request’s origin,\n // and request’s response tainting is \"basic\"\n (sameOrigin(currentURL, request.url) && request.responseTainting === 'basic') ||\n // request’s current URL’s scheme is \"data\"\n (currentURL.protocol === 'data:') ||\n // - request’s mode is \"navigate\" or \"websocket\"\n (request.mode === 'navigate' || request.mode === 'websocket')\n ) {\n // 1. Set request’s response tainting to \"basic\".\n request.responseTainting = 'basic'\n\n // 2. Return the result of running scheme fetch given fetchParams.\n return await schemeFetch(fetchParams)\n }\n\n // request’s mode is \"same-origin\"\n if (request.mode === 'same-origin') {\n // 1. Return a network error.\n return makeNetworkError('request mode cannot be \"same-origin\"')\n }\n\n // request’s mode is \"no-cors\"\n if (request.mode === 'no-cors') {\n // 1. If request’s redirect mode is not \"follow\", then return a network\n // error.\n if (request.redirect !== 'follow') {\n return makeNetworkError(\n 'redirect mode cannot be \"follow\" for \"no-cors\" request'\n )\n }\n\n // 2. Set request’s response tainting to \"opaque\".\n request.responseTainting = 'opaque'\n\n // 3. Return the result of running scheme fetch given fetchParams.\n return await schemeFetch(fetchParams)\n }\n\n // request’s current URL’s scheme is not an HTTP(S) scheme\n if (!urlIsHttpHttpsScheme(requestCurrentURL(request))) {\n // Return a network error.\n return makeNetworkError('URL scheme must be a HTTP(S) scheme')\n }\n\n // - request’s use-CORS-preflight flag is set\n // - request’s unsafe-request flag is set and either request’s method is\n // not a CORS-safelisted method or CORS-unsafe request-header names with\n // request’s header list is not empty\n // 1. Set request’s response tainting to \"cors\".\n // 2. Let corsWithPreflightResponse be the result of running HTTP fetch\n // given fetchParams and true.\n // 3. If corsWithPreflightResponse is a network error, then clear cache\n // entries using request.\n // 4. Return corsWithPreflightResponse.\n // TODO\n\n // Otherwise\n // 1. Set request’s response tainting to \"cors\".\n request.responseTainting = 'cors'\n\n // 2. Return the result of running HTTP fetch given fetchParams.\n return await httpFetch(fetchParams)\n })()\n }\n\n // 12. If recursive is true, then return response.\n if (recursive) {\n return response\n }\n\n // 13. If response is not a network error and response is not a filtered\n // response, then:\n if (response.status !== 0 && !response.internalResponse) {\n // If request’s response tainting is \"cors\", then:\n if (request.responseTainting === 'cors') {\n // 1. Let headerNames be the result of extracting header list values\n // given `Access-Control-Expose-Headers` and response’s header list.\n // TODO\n // 2. If request’s credentials mode is not \"include\" and headerNames\n // contains `*`, then set response’s CORS-exposed header-name list to\n // all unique header names in response’s header list.\n // TODO\n // 3. Otherwise, if headerNames is not null or failure, then set\n // response’s CORS-exposed header-name list to headerNames.\n // TODO\n }\n\n // Set response to the following filtered response with response as its\n // internal response, depending on request’s response tainting:\n if (request.responseTainting === 'basic') {\n response = filterResponse(response, 'basic')\n } else if (request.responseTainting === 'cors') {\n response = filterResponse(response, 'cors')\n } else if (request.responseTainting === 'opaque') {\n response = filterResponse(response, 'opaque')\n } else {\n assert(false)\n }\n }\n\n // 14. Let internalResponse be response, if response is a network error,\n // and response’s internal response otherwise.\n let internalResponse =\n response.status === 0 ? response : response.internalResponse\n\n // 15. If internalResponse’s URL list is empty, then set it to a clone of\n // request’s URL list.\n if (internalResponse.urlList.length === 0) {\n internalResponse.urlList.push(...request.urlList)\n }\n\n // 16. If request’s timing allow failed flag is unset, then set\n // internalResponse’s timing allow passed flag.\n if (!request.timingAllowFailed) {\n response.timingAllowPassed = true\n }\n\n // 17. If response is not a network error and any of the following returns\n // blocked\n // - should internalResponse to request be blocked as mixed content\n // - should internalResponse to request be blocked by Content Security Policy\n // - should internalResponse to request be blocked due to its MIME type\n // - should internalResponse to request be blocked due to nosniff\n // TODO\n\n // 18. If response’s type is \"opaque\", internalResponse’s status is 206,\n // internalResponse’s range-requested flag is set, and request’s header\n // list does not contain `Range`, then set response and internalResponse\n // to a network error.\n if (\n response.type === 'opaque' &&\n internalResponse.status === 206 &&\n internalResponse.rangeRequested &&\n !request.headers.contains('range')\n ) {\n response = internalResponse = makeNetworkError()\n }\n\n // 19. If response is not a network error and either request’s method is\n // `HEAD` or `CONNECT`, or internalResponse’s status is a null body status,\n // set internalResponse’s body to null and disregard any enqueuing toward\n // it (if any).\n if (\n response.status !== 0 &&\n (request.method === 'HEAD' ||\n request.method === 'CONNECT' ||\n nullBodyStatus.includes(internalResponse.status))\n ) {\n internalResponse.body = null\n fetchParams.controller.dump = true\n }\n\n // 20. If request’s integrity metadata is not the empty string, then:\n if (request.integrity) {\n // 1. Let processBodyError be this step: run fetch finale given fetchParams\n // and a network error.\n const processBodyError = (reason) =>\n fetchFinale(fetchParams, makeNetworkError(reason))\n\n // 2. If request’s response tainting is \"opaque\", or response’s body is null,\n // then run processBodyError and abort these steps.\n if (request.responseTainting === 'opaque' || response.body == null) {\n processBodyError(response.error)\n return\n }\n\n // 3. Let processBody given bytes be these steps:\n const processBody = (bytes) => {\n // 1. If bytes do not match request’s integrity metadata,\n // then run processBodyError and abort these steps. [SRI]\n if (!bytesMatch(bytes, request.integrity)) {\n processBodyError('integrity mismatch')\n return\n }\n\n // 2. Set response’s body to bytes as a body.\n response.body = safelyExtractBody(bytes)[0]\n\n // 3. Run fetch finale given fetchParams and response.\n fetchFinale(fetchParams, response)\n }\n\n // 4. Fully read response’s body given processBody and processBodyError.\n await fullyReadBody(response.body, processBody, processBodyError)\n } else {\n // 21. Otherwise, run fetch finale given fetchParams and response.\n fetchFinale(fetchParams, response)\n }\n}\n\n// https://fetch.spec.whatwg.org/#concept-scheme-fetch\n// given a fetch params fetchParams\nfunction schemeFetch (fetchParams) {\n // Note: since the connection is destroyed on redirect, which sets fetchParams to a\n // cancelled state, we do not want this condition to trigger *unless* there have been\n // no redirects. See https://github.com/nodejs/undici/issues/1776\n // 1. If fetchParams is canceled, then return the appropriate network error for fetchParams.\n if (isCancelled(fetchParams) && fetchParams.request.redirectCount === 0) {\n return Promise.resolve(makeAppropriateNetworkError(fetchParams))\n }\n\n // 2. Let request be fetchParams’s request.\n const { request } = fetchParams\n\n const { protocol: scheme } = requestCurrentURL(request)\n\n // 3. Switch on request’s current URL’s scheme and run the associated steps:\n switch (scheme) {\n case 'about:': {\n // If request’s current URL’s path is the string \"blank\", then return a new response\n // whose status message is `OK`, header list is « (`Content-Type`, `text/html;charset=utf-8`) »,\n // and body is the empty byte sequence as a body.\n\n // Otherwise, return a network error.\n return Promise.resolve(makeNetworkError('about scheme is not supported'))\n }\n case 'blob:': {\n if (!resolveObjectURL) {\n resolveObjectURL = require('buffer').resolveObjectURL\n }\n\n // 1. Let blobURLEntry be request’s current URL’s blob URL entry.\n const blobURLEntry = requestCurrentURL(request)\n\n // https://github.com/web-platform-tests/wpt/blob/7b0ebaccc62b566a1965396e5be7bb2bc06f841f/FileAPI/url/resources/fetch-tests.js#L52-L56\n // Buffer.resolveObjectURL does not ignore URL queries.\n if (blobURLEntry.search.length !== 0) {\n return Promise.resolve(makeNetworkError('NetworkError when attempting to fetch resource.'))\n }\n\n const blobURLEntryObject = resolveObjectURL(blobURLEntry.toString())\n\n // 2. If request’s method is not `GET`, blobURLEntry is null, or blobURLEntry’s\n // object is not a Blob object, then return a network error.\n if (request.method !== 'GET' || !isBlobLike(blobURLEntryObject)) {\n return Promise.resolve(makeNetworkError('invalid method'))\n }\n\n // 3. Let bodyWithType be the result of safely extracting blobURLEntry’s object.\n const bodyWithType = safelyExtractBody(blobURLEntryObject)\n\n // 4. Let body be bodyWithType’s body.\n const body = bodyWithType[0]\n\n // 5. Let length be body’s length, serialized and isomorphic encoded.\n const length = isomorphicEncode(`${body.length}`)\n\n // 6. Let type be bodyWithType’s type if it is non-null; otherwise the empty byte sequence.\n const type = bodyWithType[1] ?? ''\n\n // 7. Return a new response whose status message is `OK`, header list is\n // « (`Content-Length`, length), (`Content-Type`, type) », and body is body.\n const response = makeResponse({\n statusText: 'OK',\n headersList: [\n ['content-length', { name: 'Content-Length', value: length }],\n ['content-type', { name: 'Content-Type', value: type }]\n ]\n })\n\n response.body = body\n\n return Promise.resolve(response)\n }\n case 'data:': {\n // 1. Let dataURLStruct be the result of running the\n // data: URL processor on request’s current URL.\n const currentURL = requestCurrentURL(request)\n const dataURLStruct = dataURLProcessor(currentURL)\n\n // 2. If dataURLStruct is failure, then return a\n // network error.\n if (dataURLStruct === 'failure') {\n return Promise.resolve(makeNetworkError('failed to fetch the data URL'))\n }\n\n // 3. Let mimeType be dataURLStruct’s MIME type, serialized.\n const mimeType = serializeAMimeType(dataURLStruct.mimeType)\n\n // 4. Return a response whose status message is `OK`,\n // header list is « (`Content-Type`, mimeType) »,\n // and body is dataURLStruct’s body as a body.\n return Promise.resolve(makeResponse({\n statusText: 'OK',\n headersList: [\n ['content-type', { name: 'Content-Type', value: mimeType }]\n ],\n body: safelyExtractBody(dataURLStruct.body)[0]\n }))\n }\n case 'file:': {\n // For now, unfortunate as it is, file URLs are left as an exercise for the reader.\n // When in doubt, return a network error.\n return Promise.resolve(makeNetworkError('not implemented... yet...'))\n }\n case 'http:':\n case 'https:': {\n // Return the result of running HTTP fetch given fetchParams.\n\n return httpFetch(fetchParams)\n .catch((err) => makeNetworkError(err))\n }\n default: {\n return Promise.resolve(makeNetworkError('unknown scheme'))\n }\n }\n}\n\n// https://fetch.spec.whatwg.org/#finalize-response\nfunction finalizeResponse (fetchParams, response) {\n // 1. Set fetchParams’s request’s done flag.\n fetchParams.request.done = true\n\n // 2, If fetchParams’s process response done is not null, then queue a fetch\n // task to run fetchParams’s process response done given response, with\n // fetchParams’s task destination.\n if (fetchParams.processResponseDone != null) {\n queueMicrotask(() => fetchParams.processResponseDone(response))\n }\n}\n\n// https://fetch.spec.whatwg.org/#fetch-finale\nfunction fetchFinale (fetchParams, response) {\n // 1. If response is a network error, then:\n if (response.type === 'error') {\n // 1. Set response’s URL list to « fetchParams’s request’s URL list[0] ».\n response.urlList = [fetchParams.request.urlList[0]]\n\n // 2. Set response’s timing info to the result of creating an opaque timing\n // info for fetchParams’s timing info.\n response.timingInfo = createOpaqueTimingInfo({\n startTime: fetchParams.timingInfo.startTime\n })\n }\n\n // 2. Let processResponseEndOfBody be the following steps:\n const processResponseEndOfBody = () => {\n // 1. Set fetchParams’s request’s done flag.\n fetchParams.request.done = true\n\n // If fetchParams’s process response end-of-body is not null,\n // then queue a fetch task to run fetchParams’s process response\n // end-of-body given response with fetchParams’s task destination.\n if (fetchParams.processResponseEndOfBody != null) {\n queueMicrotask(() => fetchParams.processResponseEndOfBody(response))\n }\n }\n\n // 3. If fetchParams’s process response is non-null, then queue a fetch task\n // to run fetchParams’s process response given response, with fetchParams’s\n // task destination.\n if (fetchParams.processResponse != null) {\n queueMicrotask(() => fetchParams.processResponse(response))\n }\n\n // 4. If response’s body is null, then run processResponseEndOfBody.\n if (response.body == null) {\n processResponseEndOfBody()\n } else {\n // 5. Otherwise:\n\n // 1. Let transformStream be a new a TransformStream.\n\n // 2. Let identityTransformAlgorithm be an algorithm which, given chunk,\n // enqueues chunk in transformStream.\n const identityTransformAlgorithm = (chunk, controller) => {\n controller.enqueue(chunk)\n }\n\n // 3. Set up transformStream with transformAlgorithm set to identityTransformAlgorithm\n // and flushAlgorithm set to processResponseEndOfBody.\n const transformStream = new TransformStream({\n start () {},\n transform: identityTransformAlgorithm,\n flush: processResponseEndOfBody\n }, {\n size () {\n return 1\n }\n }, {\n size () {\n return 1\n }\n })\n\n // 4. Set response’s body to the result of piping response’s body through transformStream.\n response.body = { stream: response.body.stream.pipeThrough(transformStream) }\n }\n\n // 6. If fetchParams’s process response consume body is non-null, then:\n if (fetchParams.processResponseConsumeBody != null) {\n // 1. Let processBody given nullOrBytes be this step: run fetchParams’s\n // process response consume body given response and nullOrBytes.\n const processBody = (nullOrBytes) => fetchParams.processResponseConsumeBody(response, nullOrBytes)\n\n // 2. Let processBodyError be this step: run fetchParams’s process\n // response consume body given response and failure.\n const processBodyError = (failure) => fetchParams.processResponseConsumeBody(response, failure)\n\n // 3. If response’s body is null, then queue a fetch task to run processBody\n // given null, with fetchParams’s task destination.\n if (response.body == null) {\n queueMicrotask(() => processBody(null))\n } else {\n // 4. Otherwise, fully read response’s body given processBody, processBodyError,\n // and fetchParams’s task destination.\n return fullyReadBody(response.body, processBody, processBodyError)\n }\n return Promise.resolve()\n }\n}\n\n// https://fetch.spec.whatwg.org/#http-fetch\nasync function httpFetch (fetchParams) {\n // 1. Let request be fetchParams’s request.\n const request = fetchParams.request\n\n // 2. Let response be null.\n let response = null\n\n // 3. Let actualResponse be null.\n let actualResponse = null\n\n // 4. Let timingInfo be fetchParams’s timing info.\n const timingInfo = fetchParams.timingInfo\n\n // 5. If request’s service-workers mode is \"all\", then:\n if (request.serviceWorkers === 'all') {\n // TODO\n }\n\n // 6. If response is null, then:\n if (response === null) {\n // 1. If makeCORSPreflight is true and one of these conditions is true:\n // TODO\n\n // 2. If request’s redirect mode is \"follow\", then set request’s\n // service-workers mode to \"none\".\n if (request.redirect === 'follow') {\n request.serviceWorkers = 'none'\n }\n\n // 3. Set response and actualResponse to the result of running\n // HTTP-network-or-cache fetch given fetchParams.\n actualResponse = response = await httpNetworkOrCacheFetch(fetchParams)\n\n // 4. If request’s response tainting is \"cors\" and a CORS check\n // for request and response returns failure, then return a network error.\n if (\n request.responseTainting === 'cors' &&\n corsCheck(request, response) === 'failure'\n ) {\n return makeNetworkError('cors failure')\n }\n\n // 5. If the TAO check for request and response returns failure, then set\n // request’s timing allow failed flag.\n if (TAOCheck(request, response) === 'failure') {\n request.timingAllowFailed = true\n }\n }\n\n // 7. If either request’s response tainting or response’s type\n // is \"opaque\", and the cross-origin resource policy check with\n // request’s origin, request’s client, request’s destination,\n // and actualResponse returns blocked, then return a network error.\n if (\n (request.responseTainting === 'opaque' || response.type === 'opaque') &&\n crossOriginResourcePolicyCheck(\n request.origin,\n request.client,\n request.destination,\n actualResponse\n ) === 'blocked'\n ) {\n return makeNetworkError('blocked')\n }\n\n // 8. If actualResponse’s status is a redirect status, then:\n if (redirectStatusSet.has(actualResponse.status)) {\n // 1. If actualResponse’s status is not 303, request’s body is not null,\n // and the connection uses HTTP/2, then user agents may, and are even\n // encouraged to, transmit an RST_STREAM frame.\n // See, https://github.com/whatwg/fetch/issues/1288\n if (request.redirect !== 'manual') {\n fetchParams.controller.connection.destroy()\n }\n\n // 2. Switch on request’s redirect mode:\n if (request.redirect === 'error') {\n // Set response to a network error.\n response = makeNetworkError('unexpected redirect')\n } else if (request.redirect === 'manual') {\n // Set response to an opaque-redirect filtered response whose internal\n // response is actualResponse.\n // NOTE(spec): On the web this would return an `opaqueredirect` response,\n // but that doesn't make sense server side.\n // See https://github.com/nodejs/undici/issues/1193.\n response = actualResponse\n } else if (request.redirect === 'follow') {\n // Set response to the result of running HTTP-redirect fetch given\n // fetchParams and response.\n response = await httpRedirectFetch(fetchParams, response)\n } else {\n assert(false)\n }\n }\n\n // 9. Set response’s timing info to timingInfo.\n response.timingInfo = timingInfo\n\n // 10. Return response.\n return response\n}\n\n// https://fetch.spec.whatwg.org/#http-redirect-fetch\nfunction httpRedirectFetch (fetchParams, response) {\n // 1. Let request be fetchParams’s request.\n const request = fetchParams.request\n\n // 2. Let actualResponse be response, if response is not a filtered response,\n // and response’s internal response otherwise.\n const actualResponse = response.internalResponse\n ? response.internalResponse\n : response\n\n // 3. Let locationURL be actualResponse’s location URL given request’s current\n // URL’s fragment.\n let locationURL\n\n try {\n locationURL = responseLocationURL(\n actualResponse,\n requestCurrentURL(request).hash\n )\n\n // 4. If locationURL is null, then return response.\n if (locationURL == null) {\n return response\n }\n } catch (err) {\n // 5. If locationURL is failure, then return a network error.\n return Promise.resolve(makeNetworkError(err))\n }\n\n // 6. If locationURL’s scheme is not an HTTP(S) scheme, then return a network\n // error.\n if (!urlIsHttpHttpsScheme(locationURL)) {\n return Promise.resolve(makeNetworkError('URL scheme must be a HTTP(S) scheme'))\n }\n\n // 7. If request’s redirect count is 20, then return a network error.\n if (request.redirectCount === 20) {\n return Promise.resolve(makeNetworkError('redirect count exceeded'))\n }\n\n // 8. Increase request’s redirect count by 1.\n request.redirectCount += 1\n\n // 9. If request’s mode is \"cors\", locationURL includes credentials, and\n // request’s origin is not same origin with locationURL’s origin, then return\n // a network error.\n if (\n request.mode === 'cors' &&\n (locationURL.username || locationURL.password) &&\n !sameOrigin(request, locationURL)\n ) {\n return Promise.resolve(makeNetworkError('cross origin not allowed for request mode \"cors\"'))\n }\n\n // 10. If request’s response tainting is \"cors\" and locationURL includes\n // credentials, then return a network error.\n if (\n request.responseTainting === 'cors' &&\n (locationURL.username || locationURL.password)\n ) {\n return Promise.resolve(makeNetworkError(\n 'URL cannot contain credentials for request mode \"cors\"'\n ))\n }\n\n // 11. If actualResponse’s status is not 303, request’s body is non-null,\n // and request’s body’s source is null, then return a network error.\n if (\n actualResponse.status !== 303 &&\n request.body != null &&\n request.body.source == null\n ) {\n return Promise.resolve(makeNetworkError())\n }\n\n // 12. If one of the following is true\n // - actualResponse’s status is 301 or 302 and request’s method is `POST`\n // - actualResponse’s status is 303 and request’s method is not `GET` or `HEAD`\n if (\n ([301, 302].includes(actualResponse.status) && request.method === 'POST') ||\n (actualResponse.status === 303 &&\n !GET_OR_HEAD.includes(request.method))\n ) {\n // then:\n // 1. Set request’s method to `GET` and request’s body to null.\n request.method = 'GET'\n request.body = null\n\n // 2. For each headerName of request-body-header name, delete headerName from\n // request’s header list.\n for (const headerName of requestBodyHeader) {\n request.headersList.delete(headerName)\n }\n }\n\n // 13. If request’s current URL’s origin is not same origin with locationURL’s\n // origin, then for each headerName of CORS non-wildcard request-header name,\n // delete headerName from request’s header list.\n if (!sameOrigin(requestCurrentURL(request), locationURL)) {\n // https://fetch.spec.whatwg.org/#cors-non-wildcard-request-header-name\n request.headersList.delete('authorization')\n\n // https://fetch.spec.whatwg.org/#authentication-entries\n request.headersList.delete('proxy-authorization', true)\n\n // \"Cookie\" and \"Host\" are forbidden request-headers, which undici doesn't implement.\n request.headersList.delete('cookie')\n request.headersList.delete('host')\n }\n\n // 14. If request’s body is non-null, then set request’s body to the first return\n // value of safely extracting request’s body’s source.\n if (request.body != null) {\n assert(request.body.source != null)\n request.body = safelyExtractBody(request.body.source)[0]\n }\n\n // 15. Let timingInfo be fetchParams’s timing info.\n const timingInfo = fetchParams.timingInfo\n\n // 16. Set timingInfo’s redirect end time and post-redirect start time to the\n // coarsened shared current time given fetchParams’s cross-origin isolated\n // capability.\n timingInfo.redirectEndTime = timingInfo.postRedirectStartTime =\n coarsenedSharedCurrentTime(fetchParams.crossOriginIsolatedCapability)\n\n // 17. If timingInfo’s redirect start time is 0, then set timingInfo’s\n // redirect start time to timingInfo’s start time.\n if (timingInfo.redirectStartTime === 0) {\n timingInfo.redirectStartTime = timingInfo.startTime\n }\n\n // 18. Append locationURL to request’s URL list.\n request.urlList.push(locationURL)\n\n // 19. Invoke set request’s referrer policy on redirect on request and\n // actualResponse.\n setRequestReferrerPolicyOnRedirect(request, actualResponse)\n\n // 20. Return the result of running main fetch given fetchParams and true.\n return mainFetch(fetchParams, true)\n}\n\n// https://fetch.spec.whatwg.org/#http-network-or-cache-fetch\nasync function httpNetworkOrCacheFetch (\n fetchParams,\n isAuthenticationFetch = false,\n isNewConnectionFetch = false\n) {\n // 1. Let request be fetchParams’s request.\n const request = fetchParams.request\n\n // 2. Let httpFetchParams be null.\n let httpFetchParams = null\n\n // 3. Let httpRequest be null.\n let httpRequest = null\n\n // 4. Let response be null.\n let response = null\n\n // 5. Let storedResponse be null.\n // TODO: cache\n\n // 6. Let httpCache be null.\n const httpCache = null\n\n // 7. Let the revalidatingFlag be unset.\n const revalidatingFlag = false\n\n // 8. Run these steps, but abort when the ongoing fetch is terminated:\n\n // 1. If request’s window is \"no-window\" and request’s redirect mode is\n // \"error\", then set httpFetchParams to fetchParams and httpRequest to\n // request.\n if (request.window === 'no-window' && request.redirect === 'error') {\n httpFetchParams = fetchParams\n httpRequest = request\n } else {\n // Otherwise:\n\n // 1. Set httpRequest to a clone of request.\n httpRequest = makeRequest(request)\n\n // 2. Set httpFetchParams to a copy of fetchParams.\n httpFetchParams = { ...fetchParams }\n\n // 3. Set httpFetchParams’s request to httpRequest.\n httpFetchParams.request = httpRequest\n }\n\n // 3. Let includeCredentials be true if one of\n const includeCredentials =\n request.credentials === 'include' ||\n (request.credentials === 'same-origin' &&\n request.responseTainting === 'basic')\n\n // 4. Let contentLength be httpRequest’s body’s length, if httpRequest’s\n // body is non-null; otherwise null.\n const contentLength = httpRequest.body ? httpRequest.body.length : null\n\n // 5. Let contentLengthHeaderValue be null.\n let contentLengthHeaderValue = null\n\n // 6. If httpRequest’s body is null and httpRequest’s method is `POST` or\n // `PUT`, then set contentLengthHeaderValue to `0`.\n if (\n httpRequest.body == null &&\n ['POST', 'PUT'].includes(httpRequest.method)\n ) {\n contentLengthHeaderValue = '0'\n }\n\n // 7. If contentLength is non-null, then set contentLengthHeaderValue to\n // contentLength, serialized and isomorphic encoded.\n if (contentLength != null) {\n contentLengthHeaderValue = isomorphicEncode(`${contentLength}`)\n }\n\n // 8. If contentLengthHeaderValue is non-null, then append\n // `Content-Length`/contentLengthHeaderValue to httpRequest’s header\n // list.\n if (contentLengthHeaderValue != null) {\n httpRequest.headersList.append('content-length', contentLengthHeaderValue)\n }\n\n // 9. If contentLengthHeaderValue is non-null, then append (`Content-Length`,\n // contentLengthHeaderValue) to httpRequest’s header list.\n\n // 10. If contentLength is non-null and httpRequest’s keepalive is true,\n // then:\n if (contentLength != null && httpRequest.keepalive) {\n // NOTE: keepalive is a noop outside of browser context.\n }\n\n // 11. If httpRequest’s referrer is a URL, then append\n // `Referer`/httpRequest’s referrer, serialized and isomorphic encoded,\n // to httpRequest’s header list.\n if (httpRequest.referrer instanceof URL) {\n httpRequest.headersList.append('referer', isomorphicEncode(httpRequest.referrer.href))\n }\n\n // 12. Append a request `Origin` header for httpRequest.\n appendRequestOriginHeader(httpRequest)\n\n // 13. Append the Fetch metadata headers for httpRequest. [FETCH-METADATA]\n appendFetchMetadata(httpRequest)\n\n // 14. If httpRequest’s header list does not contain `User-Agent`, then\n // user agents should append `User-Agent`/default `User-Agent` value to\n // httpRequest’s header list.\n if (!httpRequest.headersList.contains('user-agent')) {\n httpRequest.headersList.append('user-agent', typeof esbuildDetection === 'undefined' ? 'undici' : 'node')\n }\n\n // 15. If httpRequest’s cache mode is \"default\" and httpRequest’s header\n // list contains `If-Modified-Since`, `If-None-Match`,\n // `If-Unmodified-Since`, `If-Match`, or `If-Range`, then set\n // httpRequest’s cache mode to \"no-store\".\n if (\n httpRequest.cache === 'default' &&\n (httpRequest.headersList.contains('if-modified-since') ||\n httpRequest.headersList.contains('if-none-match') ||\n httpRequest.headersList.contains('if-unmodified-since') ||\n httpRequest.headersList.contains('if-match') ||\n httpRequest.headersList.contains('if-range'))\n ) {\n httpRequest.cache = 'no-store'\n }\n\n // 16. If httpRequest’s cache mode is \"no-cache\", httpRequest’s prevent\n // no-cache cache-control header modification flag is unset, and\n // httpRequest’s header list does not contain `Cache-Control`, then append\n // `Cache-Control`/`max-age=0` to httpRequest’s header list.\n if (\n httpRequest.cache === 'no-cache' &&\n !httpRequest.preventNoCacheCacheControlHeaderModification &&\n !httpRequest.headersList.contains('cache-control')\n ) {\n httpRequest.headersList.append('cache-control', 'max-age=0')\n }\n\n // 17. If httpRequest’s cache mode is \"no-store\" or \"reload\", then:\n if (httpRequest.cache === 'no-store' || httpRequest.cache === 'reload') {\n // 1. If httpRequest’s header list does not contain `Pragma`, then append\n // `Pragma`/`no-cache` to httpRequest’s header list.\n if (!httpRequest.headersList.contains('pragma')) {\n httpRequest.headersList.append('pragma', 'no-cache')\n }\n\n // 2. If httpRequest’s header list does not contain `Cache-Control`,\n // then append `Cache-Control`/`no-cache` to httpRequest’s header list.\n if (!httpRequest.headersList.contains('cache-control')) {\n httpRequest.headersList.append('cache-control', 'no-cache')\n }\n }\n\n // 18. If httpRequest’s header list contains `Range`, then append\n // `Accept-Encoding`/`identity` to httpRequest’s header list.\n if (httpRequest.headersList.contains('range')) {\n httpRequest.headersList.append('accept-encoding', 'identity')\n }\n\n // 19. Modify httpRequest’s header list per HTTP. Do not append a given\n // header if httpRequest’s header list contains that header’s name.\n // TODO: https://github.com/whatwg/fetch/issues/1285#issuecomment-896560129\n if (!httpRequest.headersList.contains('accept-encoding')) {\n if (urlHasHttpsScheme(requestCurrentURL(httpRequest))) {\n httpRequest.headersList.append('accept-encoding', 'br, gzip, deflate')\n } else {\n httpRequest.headersList.append('accept-encoding', 'gzip, deflate')\n }\n }\n\n httpRequest.headersList.delete('host')\n\n // 20. If includeCredentials is true, then:\n if (includeCredentials) {\n // 1. If the user agent is not configured to block cookies for httpRequest\n // (see section 7 of [COOKIES]), then:\n // TODO: credentials\n // 2. If httpRequest’s header list does not contain `Authorization`, then:\n // TODO: credentials\n }\n\n // 21. If there’s a proxy-authentication entry, use it as appropriate.\n // TODO: proxy-authentication\n\n // 22. Set httpCache to the result of determining the HTTP cache\n // partition, given httpRequest.\n // TODO: cache\n\n // 23. If httpCache is null, then set httpRequest’s cache mode to\n // \"no-store\".\n if (httpCache == null) {\n httpRequest.cache = 'no-store'\n }\n\n // 24. If httpRequest’s cache mode is neither \"no-store\" nor \"reload\",\n // then:\n if (httpRequest.mode !== 'no-store' && httpRequest.mode !== 'reload') {\n // TODO: cache\n }\n\n // 9. If aborted, then return the appropriate network error for fetchParams.\n // TODO\n\n // 10. If response is null, then:\n if (response == null) {\n // 1. If httpRequest’s cache mode is \"only-if-cached\", then return a\n // network error.\n if (httpRequest.mode === 'only-if-cached') {\n return makeNetworkError('only if cached')\n }\n\n // 2. Let forwardResponse be the result of running HTTP-network fetch\n // given httpFetchParams, includeCredentials, and isNewConnectionFetch.\n const forwardResponse = await httpNetworkFetch(\n httpFetchParams,\n includeCredentials,\n isNewConnectionFetch\n )\n\n // 3. If httpRequest’s method is unsafe and forwardResponse’s status is\n // in the range 200 to 399, inclusive, invalidate appropriate stored\n // responses in httpCache, as per the \"Invalidation\" chapter of HTTP\n // Caching, and set storedResponse to null. [HTTP-CACHING]\n if (\n !safeMethodsSet.has(httpRequest.method) &&\n forwardResponse.status >= 200 &&\n forwardResponse.status <= 399\n ) {\n // TODO: cache\n }\n\n // 4. If the revalidatingFlag is set and forwardResponse’s status is 304,\n // then:\n if (revalidatingFlag && forwardResponse.status === 304) {\n // TODO: cache\n }\n\n // 5. If response is null, then:\n if (response == null) {\n // 1. Set response to forwardResponse.\n response = forwardResponse\n\n // 2. Store httpRequest and forwardResponse in httpCache, as per the\n // \"Storing Responses in Caches\" chapter of HTTP Caching. [HTTP-CACHING]\n // TODO: cache\n }\n }\n\n // 11. Set response’s URL list to a clone of httpRequest’s URL list.\n response.urlList = [...httpRequest.urlList]\n\n // 12. If httpRequest’s header list contains `Range`, then set response’s\n // range-requested flag.\n if (httpRequest.headersList.contains('range')) {\n response.rangeRequested = true\n }\n\n // 13. Set response’s request-includes-credentials to includeCredentials.\n response.requestIncludesCredentials = includeCredentials\n\n // 14. If response’s status is 401, httpRequest’s response tainting is not\n // \"cors\", includeCredentials is true, and request’s window is an environment\n // settings object, then:\n // TODO\n\n // 15. If response’s status is 407, then:\n if (response.status === 407) {\n // 1. If request’s window is \"no-window\", then return a network error.\n if (request.window === 'no-window') {\n return makeNetworkError()\n }\n\n // 2. ???\n\n // 3. If fetchParams is canceled, then return the appropriate network error for fetchParams.\n if (isCancelled(fetchParams)) {\n return makeAppropriateNetworkError(fetchParams)\n }\n\n // 4. Prompt the end user as appropriate in request’s window and store\n // the result as a proxy-authentication entry. [HTTP-AUTH]\n // TODO: Invoke some kind of callback?\n\n // 5. Set response to the result of running HTTP-network-or-cache fetch given\n // fetchParams.\n // TODO\n return makeNetworkError('proxy authentication required')\n }\n\n // 16. If all of the following are true\n if (\n // response’s status is 421\n response.status === 421 &&\n // isNewConnectionFetch is false\n !isNewConnectionFetch &&\n // request’s body is null, or request’s body is non-null and request’s body’s source is non-null\n (request.body == null || request.body.source != null)\n ) {\n // then:\n\n // 1. If fetchParams is canceled, then return the appropriate network error for fetchParams.\n if (isCancelled(fetchParams)) {\n return makeAppropriateNetworkError(fetchParams)\n }\n\n // 2. Set response to the result of running HTTP-network-or-cache\n // fetch given fetchParams, isAuthenticationFetch, and true.\n\n // TODO (spec): The spec doesn't specify this but we need to cancel\n // the active response before we can start a new one.\n // https://github.com/whatwg/fetch/issues/1293\n fetchParams.controller.connection.destroy()\n\n response = await httpNetworkOrCacheFetch(\n fetchParams,\n isAuthenticationFetch,\n true\n )\n }\n\n // 17. If isAuthenticationFetch is true, then create an authentication entry\n if (isAuthenticationFetch) {\n // TODO\n }\n\n // 18. Return response.\n return response\n}\n\n// https://fetch.spec.whatwg.org/#http-network-fetch\nasync function httpNetworkFetch (\n fetchParams,\n includeCredentials = false,\n forceNewConnection = false\n) {\n assert(!fetchParams.controller.connection || fetchParams.controller.connection.destroyed)\n\n fetchParams.controller.connection = {\n abort: null,\n destroyed: false,\n destroy (err) {\n if (!this.destroyed) {\n this.destroyed = true\n this.abort?.(err ?? new DOMException('The operation was aborted.', 'AbortError'))\n }\n }\n }\n\n // 1. Let request be fetchParams’s request.\n const request = fetchParams.request\n\n // 2. Let response be null.\n let response = null\n\n // 3. Let timingInfo be fetchParams’s timing info.\n const timingInfo = fetchParams.timingInfo\n\n // 4. Let httpCache be the result of determining the HTTP cache partition,\n // given request.\n // TODO: cache\n const httpCache = null\n\n // 5. If httpCache is null, then set request’s cache mode to \"no-store\".\n if (httpCache == null) {\n request.cache = 'no-store'\n }\n\n // 6. Let networkPartitionKey be the result of determining the network\n // partition key given request.\n // TODO\n\n // 7. Let newConnection be \"yes\" if forceNewConnection is true; otherwise\n // \"no\".\n const newConnection = forceNewConnection ? 'yes' : 'no' // eslint-disable-line no-unused-vars\n\n // 8. Switch on request’s mode:\n if (request.mode === 'websocket') {\n // Let connection be the result of obtaining a WebSocket connection,\n // given request’s current URL.\n // TODO\n } else {\n // Let connection be the result of obtaining a connection, given\n // networkPartitionKey, request’s current URL’s origin,\n // includeCredentials, and forceNewConnection.\n // TODO\n }\n\n // 9. Run these steps, but abort when the ongoing fetch is terminated:\n\n // 1. If connection is failure, then return a network error.\n\n // 2. Set timingInfo’s final connection timing info to the result of\n // calling clamp and coarsen connection timing info with connection’s\n // timing info, timingInfo’s post-redirect start time, and fetchParams’s\n // cross-origin isolated capability.\n\n // 3. If connection is not an HTTP/2 connection, request’s body is non-null,\n // and request’s body’s source is null, then append (`Transfer-Encoding`,\n // `chunked`) to request’s header list.\n\n // 4. Set timingInfo’s final network-request start time to the coarsened\n // shared current time given fetchParams’s cross-origin isolated\n // capability.\n\n // 5. Set response to the result of making an HTTP request over connection\n // using request with the following caveats:\n\n // - Follow the relevant requirements from HTTP. [HTTP] [HTTP-SEMANTICS]\n // [HTTP-COND] [HTTP-CACHING] [HTTP-AUTH]\n\n // - If request’s body is non-null, and request’s body’s source is null,\n // then the user agent may have a buffer of up to 64 kibibytes and store\n // a part of request’s body in that buffer. If the user agent reads from\n // request’s body beyond that buffer’s size and the user agent needs to\n // resend request, then instead return a network error.\n\n // - Set timingInfo’s final network-response start time to the coarsened\n // shared current time given fetchParams’s cross-origin isolated capability,\n // immediately after the user agent’s HTTP parser receives the first byte\n // of the response (e.g., frame header bytes for HTTP/2 or response status\n // line for HTTP/1.x).\n\n // - Wait until all the headers are transmitted.\n\n // - Any responses whose status is in the range 100 to 199, inclusive,\n // and is not 101, are to be ignored, except for the purposes of setting\n // timingInfo’s final network-response start time above.\n\n // - If request’s header list contains `Transfer-Encoding`/`chunked` and\n // response is transferred via HTTP/1.0 or older, then return a network\n // error.\n\n // - If the HTTP request results in a TLS client certificate dialog, then:\n\n // 1. If request’s window is an environment settings object, make the\n // dialog available in request’s window.\n\n // 2. Otherwise, return a network error.\n\n // To transmit request’s body body, run these steps:\n let requestBody = null\n // 1. If body is null and fetchParams’s process request end-of-body is\n // non-null, then queue a fetch task given fetchParams’s process request\n // end-of-body and fetchParams’s task destination.\n if (request.body == null && fetchParams.processRequestEndOfBody) {\n queueMicrotask(() => fetchParams.processRequestEndOfBody())\n } else if (request.body != null) {\n // 2. Otherwise, if body is non-null:\n\n // 1. Let processBodyChunk given bytes be these steps:\n const processBodyChunk = async function * (bytes) {\n // 1. If the ongoing fetch is terminated, then abort these steps.\n if (isCancelled(fetchParams)) {\n return\n }\n\n // 2. Run this step in parallel: transmit bytes.\n yield bytes\n\n // 3. If fetchParams’s process request body is non-null, then run\n // fetchParams’s process request body given bytes’s length.\n fetchParams.processRequestBodyChunkLength?.(bytes.byteLength)\n }\n\n // 2. Let processEndOfBody be these steps:\n const processEndOfBody = () => {\n // 1. If fetchParams is canceled, then abort these steps.\n if (isCancelled(fetchParams)) {\n return\n }\n\n // 2. If fetchParams’s process request end-of-body is non-null,\n // then run fetchParams’s process request end-of-body.\n if (fetchParams.processRequestEndOfBody) {\n fetchParams.processRequestEndOfBody()\n }\n }\n\n // 3. Let processBodyError given e be these steps:\n const processBodyError = (e) => {\n // 1. If fetchParams is canceled, then abort these steps.\n if (isCancelled(fetchParams)) {\n return\n }\n\n // 2. If e is an \"AbortError\" DOMException, then abort fetchParams’s controller.\n if (e.name === 'AbortError') {\n fetchParams.controller.abort()\n } else {\n fetchParams.controller.terminate(e)\n }\n }\n\n // 4. Incrementally read request’s body given processBodyChunk, processEndOfBody,\n // processBodyError, and fetchParams’s task destination.\n requestBody = (async function * () {\n try {\n for await (const bytes of request.body.stream) {\n yield * processBodyChunk(bytes)\n }\n processEndOfBody()\n } catch (err) {\n processBodyError(err)\n }\n })()\n }\n\n try {\n // socket is only provided for websockets\n const { body, status, statusText, headersList, socket } = await dispatch({ body: requestBody })\n\n if (socket) {\n response = makeResponse({ status, statusText, headersList, socket })\n } else {\n const iterator = body[Symbol.asyncIterator]()\n fetchParams.controller.next = () => iterator.next()\n\n response = makeResponse({ status, statusText, headersList })\n }\n } catch (err) {\n // 10. If aborted, then:\n if (err.name === 'AbortError') {\n // 1. If connection uses HTTP/2, then transmit an RST_STREAM frame.\n fetchParams.controller.connection.destroy()\n\n // 2. Return the appropriate network error for fetchParams.\n return makeAppropriateNetworkError(fetchParams, err)\n }\n\n return makeNetworkError(err)\n }\n\n // 11. Let pullAlgorithm be an action that resumes the ongoing fetch\n // if it is suspended.\n const pullAlgorithm = () => {\n fetchParams.controller.resume()\n }\n\n // 12. Let cancelAlgorithm be an algorithm that aborts fetchParams’s\n // controller with reason, given reason.\n const cancelAlgorithm = (reason) => {\n fetchParams.controller.abort(reason)\n }\n\n // 13. Let highWaterMark be a non-negative, non-NaN number, chosen by\n // the user agent.\n // TODO\n\n // 14. Let sizeAlgorithm be an algorithm that accepts a chunk object\n // and returns a non-negative, non-NaN, non-infinite number, chosen by the user agent.\n // TODO\n\n // 15. Let stream be a new ReadableStream.\n // 16. Set up stream with pullAlgorithm set to pullAlgorithm,\n // cancelAlgorithm set to cancelAlgorithm, highWaterMark set to\n // highWaterMark, and sizeAlgorithm set to sizeAlgorithm.\n if (!ReadableStream) {\n ReadableStream = require('stream/web').ReadableStream\n }\n\n const stream = new ReadableStream(\n {\n async start (controller) {\n fetchParams.controller.controller = controller\n },\n async pull (controller) {\n await pullAlgorithm(controller)\n },\n async cancel (reason) {\n await cancelAlgorithm(reason)\n }\n },\n {\n highWaterMark: 0,\n size () {\n return 1\n }\n }\n )\n\n // 17. Run these steps, but abort when the ongoing fetch is terminated:\n\n // 1. Set response’s body to a new body whose stream is stream.\n response.body = { stream }\n\n // 2. If response is not a network error and request’s cache mode is\n // not \"no-store\", then update response in httpCache for request.\n // TODO\n\n // 3. If includeCredentials is true and the user agent is not configured\n // to block cookies for request (see section 7 of [COOKIES]), then run the\n // \"set-cookie-string\" parsing algorithm (see section 5.2 of [COOKIES]) on\n // the value of each header whose name is a byte-case-insensitive match for\n // `Set-Cookie` in response’s header list, if any, and request’s current URL.\n // TODO\n\n // 18. If aborted, then:\n // TODO\n\n // 19. Run these steps in parallel:\n\n // 1. Run these steps, but abort when fetchParams is canceled:\n fetchParams.controller.on('terminated', onAborted)\n fetchParams.controller.resume = async () => {\n // 1. While true\n while (true) {\n // 1-3. See onData...\n\n // 4. Set bytes to the result of handling content codings given\n // codings and bytes.\n let bytes\n let isFailure\n try {\n const { done, value } = await fetchParams.controller.next()\n\n if (isAborted(fetchParams)) {\n break\n }\n\n bytes = done ? undefined : value\n } catch (err) {\n if (fetchParams.controller.ended && !timingInfo.encodedBodySize) {\n // zlib doesn't like empty streams.\n bytes = undefined\n } else {\n bytes = err\n\n // err may be propagated from the result of calling readablestream.cancel,\n // which might not be an error. https://github.com/nodejs/undici/issues/2009\n isFailure = true\n }\n }\n\n if (bytes === undefined) {\n // 2. Otherwise, if the bytes transmission for response’s message\n // body is done normally and stream is readable, then close\n // stream, finalize response for fetchParams and response, and\n // abort these in-parallel steps.\n readableStreamClose(fetchParams.controller.controller)\n\n finalizeResponse(fetchParams, response)\n\n return\n }\n\n // 5. Increase timingInfo’s decoded body size by bytes’s length.\n timingInfo.decodedBodySize += bytes?.byteLength ?? 0\n\n // 6. If bytes is failure, then terminate fetchParams’s controller.\n if (isFailure) {\n fetchParams.controller.terminate(bytes)\n return\n }\n\n // 7. Enqueue a Uint8Array wrapping an ArrayBuffer containing bytes\n // into stream.\n fetchParams.controller.controller.enqueue(new Uint8Array(bytes))\n\n // 8. If stream is errored, then terminate the ongoing fetch.\n if (isErrored(stream)) {\n fetchParams.controller.terminate()\n return\n }\n\n // 9. If stream doesn’t need more data ask the user agent to suspend\n // the ongoing fetch.\n if (!fetchParams.controller.controller.desiredSize) {\n return\n }\n }\n }\n\n // 2. If aborted, then:\n function onAborted (reason) {\n // 2. If fetchParams is aborted, then:\n if (isAborted(fetchParams)) {\n // 1. Set response’s aborted flag.\n response.aborted = true\n\n // 2. If stream is readable, then error stream with the result of\n // deserialize a serialized abort reason given fetchParams’s\n // controller’s serialized abort reason and an\n // implementation-defined realm.\n if (isReadable(stream)) {\n fetchParams.controller.controller.error(\n fetchParams.controller.serializedAbortReason\n )\n }\n } else {\n // 3. Otherwise, if stream is readable, error stream with a TypeError.\n if (isReadable(stream)) {\n fetchParams.controller.controller.error(new TypeError('terminated', {\n cause: isErrorLike(reason) ? reason : undefined\n }))\n }\n }\n\n // 4. If connection uses HTTP/2, then transmit an RST_STREAM frame.\n // 5. Otherwise, the user agent should close connection unless it would be bad for performance to do so.\n fetchParams.controller.connection.destroy()\n }\n\n // 20. Return response.\n return response\n\n async function dispatch ({ body }) {\n const url = requestCurrentURL(request)\n /** @type {import('../..').Agent} */\n const agent = fetchParams.controller.dispatcher\n\n return new Promise((resolve, reject) => agent.dispatch(\n {\n path: url.pathname + url.search,\n origin: url.origin,\n method: request.method,\n body: fetchParams.controller.dispatcher.isMockActive ? request.body && (request.body.source || request.body.stream) : body,\n headers: request.headersList.entries,\n maxRedirections: 0,\n upgrade: request.mode === 'websocket' ? 'websocket' : undefined\n },\n {\n body: null,\n abort: null,\n\n onConnect (abort) {\n // TODO (fix): Do we need connection here?\n const { connection } = fetchParams.controller\n\n if (connection.destroyed) {\n abort(new DOMException('The operation was aborted.', 'AbortError'))\n } else {\n fetchParams.controller.on('terminated', abort)\n this.abort = connection.abort = abort\n }\n },\n\n onHeaders (status, headersList, resume, statusText) {\n if (status < 200) {\n return\n }\n\n let codings = []\n let location = ''\n\n const headers = new Headers()\n\n // For H2, the headers are a plain JS object\n // We distinguish between them and iterate accordingly\n if (Array.isArray(headersList)) {\n for (let n = 0; n < headersList.length; n += 2) {\n const key = headersList[n + 0].toString('latin1')\n const val = headersList[n + 1].toString('latin1')\n if (key.toLowerCase() === 'content-encoding') {\n // https://www.rfc-editor.org/rfc/rfc7231#section-3.1.2.1\n // \"All content-coding values are case-insensitive...\"\n codings = val.toLowerCase().split(',').map((x) => x.trim())\n } else if (key.toLowerCase() === 'location') {\n location = val\n }\n\n headers[kHeadersList].append(key, val)\n }\n } else {\n const keys = Object.keys(headersList)\n for (const key of keys) {\n const val = headersList[key]\n if (key.toLowerCase() === 'content-encoding') {\n // https://www.rfc-editor.org/rfc/rfc7231#section-3.1.2.1\n // \"All content-coding values are case-insensitive...\"\n codings = val.toLowerCase().split(',').map((x) => x.trim()).reverse()\n } else if (key.toLowerCase() === 'location') {\n location = val\n }\n\n headers[kHeadersList].append(key, val)\n }\n }\n\n this.body = new Readable({ read: resume })\n\n const decoders = []\n\n const willFollow = request.redirect === 'follow' &&\n location &&\n redirectStatusSet.has(status)\n\n // https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Encoding\n if (request.method !== 'HEAD' && request.method !== 'CONNECT' && !nullBodyStatus.includes(status) && !willFollow) {\n for (const coding of codings) {\n // https://www.rfc-editor.org/rfc/rfc9112.html#section-7.2\n if (coding === 'x-gzip' || coding === 'gzip') {\n decoders.push(zlib.createGunzip({\n // Be less strict when decoding compressed responses, since sometimes\n // servers send slightly invalid responses that are still accepted\n // by common browsers.\n // Always using Z_SYNC_FLUSH is what cURL does.\n flush: zlib.constants.Z_SYNC_FLUSH,\n finishFlush: zlib.constants.Z_SYNC_FLUSH\n }))\n } else if (coding === 'deflate') {\n decoders.push(zlib.createInflate())\n } else if (coding === 'br') {\n decoders.push(zlib.createBrotliDecompress())\n } else {\n decoders.length = 0\n break\n }\n }\n }\n\n resolve({\n status,\n statusText,\n headersList: headers[kHeadersList],\n body: decoders.length\n ? pipeline(this.body, ...decoders, () => { })\n : this.body.on('error', () => {})\n })\n\n return true\n },\n\n onData (chunk) {\n if (fetchParams.controller.dump) {\n return\n }\n\n // 1. If one or more bytes have been transmitted from response’s\n // message body, then:\n\n // 1. Let bytes be the transmitted bytes.\n const bytes = chunk\n\n // 2. Let codings be the result of extracting header list values\n // given `Content-Encoding` and response’s header list.\n // See pullAlgorithm.\n\n // 3. Increase timingInfo’s encoded body size by bytes’s length.\n timingInfo.encodedBodySize += bytes.byteLength\n\n // 4. See pullAlgorithm...\n\n return this.body.push(bytes)\n },\n\n onComplete () {\n if (this.abort) {\n fetchParams.controller.off('terminated', this.abort)\n }\n\n fetchParams.controller.ended = true\n\n this.body.push(null)\n },\n\n onError (error) {\n if (this.abort) {\n fetchParams.controller.off('terminated', this.abort)\n }\n\n this.body?.destroy(error)\n\n fetchParams.controller.terminate(error)\n\n reject(error)\n },\n\n onUpgrade (status, headersList, socket) {\n if (status !== 101) {\n return\n }\n\n const headers = new Headers()\n\n for (let n = 0; n < headersList.length; n += 2) {\n const key = headersList[n + 0].toString('latin1')\n const val = headersList[n + 1].toString('latin1')\n\n headers[kHeadersList].append(key, val)\n }\n\n resolve({\n status,\n statusText: STATUS_CODES[status],\n headersList: headers[kHeadersList],\n socket\n })\n\n return true\n }\n }\n ))\n }\n}\n\nmodule.exports = {\n fetch,\n Fetch,\n fetching,\n finalizeAndReportTiming\n}\n","'use strict'\n\nmodule.exports = {\n kState: Symbol('FileReader state'),\n kResult: Symbol('FileReader result'),\n kError: Symbol('FileReader error'),\n kLastProgressEventFired: Symbol('FileReader last progress event fired timestamp'),\n kEvents: Symbol('FileReader events'),\n kAborted: Symbol('FileReader aborted')\n}\n","'use strict'\n\nconst { webidl } = require('../fetch/webidl')\n\nconst kState = Symbol('ProgressEvent state')\n\n/**\n * @see https://xhr.spec.whatwg.org/#progressevent\n */\nclass ProgressEvent extends Event {\n constructor (type, eventInitDict = {}) {\n type = webidl.converters.DOMString(type)\n eventInitDict = webidl.converters.ProgressEventInit(eventInitDict ?? {})\n\n super(type, eventInitDict)\n\n this[kState] = {\n lengthComputable: eventInitDict.lengthComputable,\n loaded: eventInitDict.loaded,\n total: eventInitDict.total\n }\n }\n\n get lengthComputable () {\n webidl.brandCheck(this, ProgressEvent)\n\n return this[kState].lengthComputable\n }\n\n get loaded () {\n webidl.brandCheck(this, ProgressEvent)\n\n return this[kState].loaded\n }\n\n get total () {\n webidl.brandCheck(this, ProgressEvent)\n\n return this[kState].total\n }\n}\n\nwebidl.converters.ProgressEventInit = webidl.dictionaryConverter([\n {\n key: 'lengthComputable',\n converter: webidl.converters.boolean,\n defaultValue: false\n },\n {\n key: 'loaded',\n converter: webidl.converters['unsigned long long'],\n defaultValue: 0\n },\n {\n key: 'total',\n converter: webidl.converters['unsigned long long'],\n defaultValue: 0\n },\n {\n key: 'bubbles',\n converter: webidl.converters.boolean,\n defaultValue: false\n },\n {\n key: 'cancelable',\n converter: webidl.converters.boolean,\n defaultValue: false\n },\n {\n key: 'composed',\n converter: webidl.converters.boolean,\n defaultValue: false\n }\n])\n\nmodule.exports = {\n ProgressEvent\n}\n","'use strict'\n\n/**\n * @see https://encoding.spec.whatwg.org/#concept-encoding-get\n * @param {string|undefined} label\n */\nfunction getEncoding (label) {\n if (!label) {\n return 'failure'\n }\n\n // 1. Remove any leading and trailing ASCII whitespace from label.\n // 2. If label is an ASCII case-insensitive match for any of the\n // labels listed in the table below, then return the\n // corresponding encoding; otherwise return failure.\n switch (label.trim().toLowerCase()) {\n case 'unicode-1-1-utf-8':\n case 'unicode11utf8':\n case 'unicode20utf8':\n case 'utf-8':\n case 'utf8':\n case 'x-unicode20utf8':\n return 'UTF-8'\n case '866':\n case 'cp866':\n case 'csibm866':\n case 'ibm866':\n return 'IBM866'\n case 'csisolatin2':\n case 'iso-8859-2':\n case 'iso-ir-101':\n case 'iso8859-2':\n case 'iso88592':\n case 'iso_8859-2':\n case 'iso_8859-2:1987':\n case 'l2':\n case 'latin2':\n return 'ISO-8859-2'\n case 'csisolatin3':\n case 'iso-8859-3':\n case 'iso-ir-109':\n case 'iso8859-3':\n case 'iso88593':\n case 'iso_8859-3':\n case 'iso_8859-3:1988':\n case 'l3':\n case 'latin3':\n return 'ISO-8859-3'\n case 'csisolatin4':\n case 'iso-8859-4':\n case 'iso-ir-110':\n case 'iso8859-4':\n case 'iso88594':\n case 'iso_8859-4':\n case 'iso_8859-4:1988':\n case 'l4':\n case 'latin4':\n return 'ISO-8859-4'\n case 'csisolatincyrillic':\n case 'cyrillic':\n case 'iso-8859-5':\n case 'iso-ir-144':\n case 'iso8859-5':\n case 'iso88595':\n case 'iso_8859-5':\n case 'iso_8859-5:1988':\n return 'ISO-8859-5'\n case 'arabic':\n case 'asmo-708':\n case 'csiso88596e':\n case 'csiso88596i':\n case 'csisolatinarabic':\n case 'ecma-114':\n case 'iso-8859-6':\n case 'iso-8859-6-e':\n case 'iso-8859-6-i':\n case 'iso-ir-127':\n case 'iso8859-6':\n case 'iso88596':\n case 'iso_8859-6':\n case 'iso_8859-6:1987':\n return 'ISO-8859-6'\n case 'csisolatingreek':\n case 'ecma-118':\n case 'elot_928':\n case 'greek':\n case 'greek8':\n case 'iso-8859-7':\n case 'iso-ir-126':\n case 'iso8859-7':\n case 'iso88597':\n case 'iso_8859-7':\n case 'iso_8859-7:1987':\n case 'sun_eu_greek':\n return 'ISO-8859-7'\n case 'csiso88598e':\n case 'csisolatinhebrew':\n case 'hebrew':\n case 'iso-8859-8':\n case 'iso-8859-8-e':\n case 'iso-ir-138':\n case 'iso8859-8':\n case 'iso88598':\n case 'iso_8859-8':\n case 'iso_8859-8:1988':\n case 'visual':\n return 'ISO-8859-8'\n case 'csiso88598i':\n case 'iso-8859-8-i':\n case 'logical':\n return 'ISO-8859-8-I'\n case 'csisolatin6':\n case 'iso-8859-10':\n case 'iso-ir-157':\n case 'iso8859-10':\n case 'iso885910':\n case 'l6':\n case 'latin6':\n return 'ISO-8859-10'\n case 'iso-8859-13':\n case 'iso8859-13':\n case 'iso885913':\n return 'ISO-8859-13'\n case 'iso-8859-14':\n case 'iso8859-14':\n case 'iso885914':\n return 'ISO-8859-14'\n case 'csisolatin9':\n case 'iso-8859-15':\n case 'iso8859-15':\n case 'iso885915':\n case 'iso_8859-15':\n case 'l9':\n return 'ISO-8859-15'\n case 'iso-8859-16':\n return 'ISO-8859-16'\n case 'cskoi8r':\n case 'koi':\n case 'koi8':\n case 'koi8-r':\n case 'koi8_r':\n return 'KOI8-R'\n case 'koi8-ru':\n case 'koi8-u':\n return 'KOI8-U'\n case 'csmacintosh':\n case 'mac':\n case 'macintosh':\n case 'x-mac-roman':\n return 'macintosh'\n case 'iso-8859-11':\n case 'iso8859-11':\n case 'iso885911':\n case 'tis-620':\n case 'windows-874':\n return 'windows-874'\n case 'cp1250':\n case 'windows-1250':\n case 'x-cp1250':\n return 'windows-1250'\n case 'cp1251':\n case 'windows-1251':\n case 'x-cp1251':\n return 'windows-1251'\n case 'ansi_x3.4-1968':\n case 'ascii':\n case 'cp1252':\n case 'cp819':\n case 'csisolatin1':\n case 'ibm819':\n case 'iso-8859-1':\n case 'iso-ir-100':\n case 'iso8859-1':\n case 'iso88591':\n case 'iso_8859-1':\n case 'iso_8859-1:1987':\n case 'l1':\n case 'latin1':\n case 'us-ascii':\n case 'windows-1252':\n case 'x-cp1252':\n return 'windows-1252'\n case 'cp1253':\n case 'windows-1253':\n case 'x-cp1253':\n return 'windows-1253'\n case 'cp1254':\n case 'csisolatin5':\n case 'iso-8859-9':\n case 'iso-ir-148':\n case 'iso8859-9':\n case 'iso88599':\n case 'iso_8859-9':\n case 'iso_8859-9:1989':\n case 'l5':\n case 'latin5':\n case 'windows-1254':\n case 'x-cp1254':\n return 'windows-1254'\n case 'cp1255':\n case 'windows-1255':\n case 'x-cp1255':\n return 'windows-1255'\n case 'cp1256':\n case 'windows-1256':\n case 'x-cp1256':\n return 'windows-1256'\n case 'cp1257':\n case 'windows-1257':\n case 'x-cp1257':\n return 'windows-1257'\n case 'cp1258':\n case 'windows-1258':\n case 'x-cp1258':\n return 'windows-1258'\n case 'x-mac-cyrillic':\n case 'x-mac-ukrainian':\n return 'x-mac-cyrillic'\n case 'chinese':\n case 'csgb2312':\n case 'csiso58gb231280':\n case 'gb2312':\n case 'gb_2312':\n case 'gb_2312-80':\n case 'gbk':\n case 'iso-ir-58':\n case 'x-gbk':\n return 'GBK'\n case 'gb18030':\n return 'gb18030'\n case 'big5':\n case 'big5-hkscs':\n case 'cn-big5':\n case 'csbig5':\n case 'x-x-big5':\n return 'Big5'\n case 'cseucpkdfmtjapanese':\n case 'euc-jp':\n case 'x-euc-jp':\n return 'EUC-JP'\n case 'csiso2022jp':\n case 'iso-2022-jp':\n return 'ISO-2022-JP'\n case 'csshiftjis':\n case 'ms932':\n case 'ms_kanji':\n case 'shift-jis':\n case 'shift_jis':\n case 'sjis':\n case 'windows-31j':\n case 'x-sjis':\n return 'Shift_JIS'\n case 'cseuckr':\n case 'csksc56011987':\n case 'euc-kr':\n case 'iso-ir-149':\n case 'korean':\n case 'ks_c_5601-1987':\n case 'ks_c_5601-1989':\n case 'ksc5601':\n case 'ksc_5601':\n case 'windows-949':\n return 'EUC-KR'\n case 'csiso2022kr':\n case 'hz-gb-2312':\n case 'iso-2022-cn':\n case 'iso-2022-cn-ext':\n case 'iso-2022-kr':\n case 'replacement':\n return 'replacement'\n case 'unicodefffe':\n case 'utf-16be':\n return 'UTF-16BE'\n case 'csunicode':\n case 'iso-10646-ucs-2':\n case 'ucs-2':\n case 'unicode':\n case 'unicodefeff':\n case 'utf-16':\n case 'utf-16le':\n return 'UTF-16LE'\n case 'x-user-defined':\n return 'x-user-defined'\n default: return 'failure'\n }\n}\n\nmodule.exports = {\n getEncoding\n}\n","'use strict'\n\nconst {\n kState,\n kError,\n kResult,\n kAborted,\n kLastProgressEventFired\n} = require('./symbols')\nconst { ProgressEvent } = require('./progressevent')\nconst { getEncoding } = require('./encoding')\nconst { DOMException } = require('../fetch/constants')\nconst { serializeAMimeType, parseMIMEType } = require('../fetch/dataURL')\nconst { types } = require('util')\nconst { StringDecoder } = require('string_decoder')\nconst { btoa } = require('buffer')\n\n/** @type {PropertyDescriptor} */\nconst staticPropertyDescriptors = {\n enumerable: true,\n writable: false,\n configurable: false\n}\n\n/**\n * @see https://w3c.github.io/FileAPI/#readOperation\n * @param {import('./filereader').FileReader} fr\n * @param {import('buffer').Blob} blob\n * @param {string} type\n * @param {string?} encodingName\n */\nfunction readOperation (fr, blob, type, encodingName) {\n // 1. If fr’s state is \"loading\", throw an InvalidStateError\n // DOMException.\n if (fr[kState] === 'loading') {\n throw new DOMException('Invalid state', 'InvalidStateError')\n }\n\n // 2. Set fr’s state to \"loading\".\n fr[kState] = 'loading'\n\n // 3. Set fr’s result to null.\n fr[kResult] = null\n\n // 4. Set fr’s error to null.\n fr[kError] = null\n\n // 5. Let stream be the result of calling get stream on blob.\n /** @type {import('stream/web').ReadableStream} */\n const stream = blob.stream()\n\n // 6. Let reader be the result of getting a reader from stream.\n const reader = stream.getReader()\n\n // 7. Let bytes be an empty byte sequence.\n /** @type {Uint8Array[]} */\n const bytes = []\n\n // 8. Let chunkPromise be the result of reading a chunk from\n // stream with reader.\n let chunkPromise = reader.read()\n\n // 9. Let isFirstChunk be true.\n let isFirstChunk = true\n\n // 10. In parallel, while true:\n // Note: \"In parallel\" just means non-blocking\n // Note 2: readOperation itself cannot be async as double\n // reading the body would then reject the promise, instead\n // of throwing an error.\n ;(async () => {\n while (!fr[kAborted]) {\n // 1. Wait for chunkPromise to be fulfilled or rejected.\n try {\n const { done, value } = await chunkPromise\n\n // 2. If chunkPromise is fulfilled, and isFirstChunk is\n // true, queue a task to fire a progress event called\n // loadstart at fr.\n if (isFirstChunk && !fr[kAborted]) {\n queueMicrotask(() => {\n fireAProgressEvent('loadstart', fr)\n })\n }\n\n // 3. Set isFirstChunk to false.\n isFirstChunk = false\n\n // 4. If chunkPromise is fulfilled with an object whose\n // done property is false and whose value property is\n // a Uint8Array object, run these steps:\n if (!done && types.isUint8Array(value)) {\n // 1. Let bs be the byte sequence represented by the\n // Uint8Array object.\n\n // 2. Append bs to bytes.\n bytes.push(value)\n\n // 3. If roughly 50ms have passed since these steps\n // were last invoked, queue a task to fire a\n // progress event called progress at fr.\n if (\n (\n fr[kLastProgressEventFired] === undefined ||\n Date.now() - fr[kLastProgressEventFired] >= 50\n ) &&\n !fr[kAborted]\n ) {\n fr[kLastProgressEventFired] = Date.now()\n queueMicrotask(() => {\n fireAProgressEvent('progress', fr)\n })\n }\n\n // 4. Set chunkPromise to the result of reading a\n // chunk from stream with reader.\n chunkPromise = reader.read()\n } else if (done) {\n // 5. Otherwise, if chunkPromise is fulfilled with an\n // object whose done property is true, queue a task\n // to run the following steps and abort this algorithm:\n queueMicrotask(() => {\n // 1. Set fr’s state to \"done\".\n fr[kState] = 'done'\n\n // 2. Let result be the result of package data given\n // bytes, type, blob’s type, and encodingName.\n try {\n const result = packageData(bytes, type, blob.type, encodingName)\n\n // 4. Else:\n\n if (fr[kAborted]) {\n return\n }\n\n // 1. Set fr’s result to result.\n fr[kResult] = result\n\n // 2. Fire a progress event called load at the fr.\n fireAProgressEvent('load', fr)\n } catch (error) {\n // 3. If package data threw an exception error:\n\n // 1. Set fr’s error to error.\n fr[kError] = error\n\n // 2. Fire a progress event called error at fr.\n fireAProgressEvent('error', fr)\n }\n\n // 5. If fr’s state is not \"loading\", fire a progress\n // event called loadend at the fr.\n if (fr[kState] !== 'loading') {\n fireAProgressEvent('loadend', fr)\n }\n })\n\n break\n }\n } catch (error) {\n if (fr[kAborted]) {\n return\n }\n\n // 6. Otherwise, if chunkPromise is rejected with an\n // error error, queue a task to run the following\n // steps and abort this algorithm:\n queueMicrotask(() => {\n // 1. Set fr’s state to \"done\".\n fr[kState] = 'done'\n\n // 2. Set fr’s error to error.\n fr[kError] = error\n\n // 3. Fire a progress event called error at fr.\n fireAProgressEvent('error', fr)\n\n // 4. If fr’s state is not \"loading\", fire a progress\n // event called loadend at fr.\n if (fr[kState] !== 'loading') {\n fireAProgressEvent('loadend', fr)\n }\n })\n\n break\n }\n }\n })()\n}\n\n/**\n * @see https://w3c.github.io/FileAPI/#fire-a-progress-event\n * @see https://dom.spec.whatwg.org/#concept-event-fire\n * @param {string} e The name of the event\n * @param {import('./filereader').FileReader} reader\n */\nfunction fireAProgressEvent (e, reader) {\n // The progress event e does not bubble. e.bubbles must be false\n // The progress event e is NOT cancelable. e.cancelable must be false\n const event = new ProgressEvent(e, {\n bubbles: false,\n cancelable: false\n })\n\n reader.dispatchEvent(event)\n}\n\n/**\n * @see https://w3c.github.io/FileAPI/#blob-package-data\n * @param {Uint8Array[]} bytes\n * @param {string} type\n * @param {string?} mimeType\n * @param {string?} encodingName\n */\nfunction packageData (bytes, type, mimeType, encodingName) {\n // 1. A Blob has an associated package data algorithm, given\n // bytes, a type, a optional mimeType, and a optional\n // encodingName, which switches on type and runs the\n // associated steps:\n\n switch (type) {\n case 'DataURL': {\n // 1. Return bytes as a DataURL [RFC2397] subject to\n // the considerations below:\n // * Use mimeType as part of the Data URL if it is\n // available in keeping with the Data URL\n // specification [RFC2397].\n // * If mimeType is not available return a Data URL\n // without a media-type. [RFC2397].\n\n // https://datatracker.ietf.org/doc/html/rfc2397#section-3\n // dataurl := \"data:\" [ mediatype ] [ \";base64\" ] \",\" data\n // mediatype := [ type \"/\" subtype ] *( \";\" parameter )\n // data := *urlchar\n // parameter := attribute \"=\" value\n let dataURL = 'data:'\n\n const parsed = parseMIMEType(mimeType || 'application/octet-stream')\n\n if (parsed !== 'failure') {\n dataURL += serializeAMimeType(parsed)\n }\n\n dataURL += ';base64,'\n\n const decoder = new StringDecoder('latin1')\n\n for (const chunk of bytes) {\n dataURL += btoa(decoder.write(chunk))\n }\n\n dataURL += btoa(decoder.end())\n\n return dataURL\n }\n case 'Text': {\n // 1. Let encoding be failure\n let encoding = 'failure'\n\n // 2. If the encodingName is present, set encoding to the\n // result of getting an encoding from encodingName.\n if (encodingName) {\n encoding = getEncoding(encodingName)\n }\n\n // 3. If encoding is failure, and mimeType is present:\n if (encoding === 'failure' && mimeType) {\n // 1. Let type be the result of parse a MIME type\n // given mimeType.\n const type = parseMIMEType(mimeType)\n\n // 2. If type is not failure, set encoding to the result\n // of getting an encoding from type’s parameters[\"charset\"].\n if (type !== 'failure') {\n encoding = getEncoding(type.parameters.get('charset'))\n }\n }\n\n // 4. If encoding is failure, then set encoding to UTF-8.\n if (encoding === 'failure') {\n encoding = 'UTF-8'\n }\n\n // 5. Decode bytes using fallback encoding encoding, and\n // return the result.\n return decode(bytes, encoding)\n }\n case 'ArrayBuffer': {\n // Return a new ArrayBuffer whose contents are bytes.\n const sequence = combineByteSequences(bytes)\n\n return sequence.buffer\n }\n case 'BinaryString': {\n // Return bytes as a binary string, in which every byte\n // is represented by a code unit of equal value [0..255].\n let binaryString = ''\n\n const decoder = new StringDecoder('latin1')\n\n for (const chunk of bytes) {\n binaryString += decoder.write(chunk)\n }\n\n binaryString += decoder.end()\n\n return binaryString\n }\n }\n}\n\n/**\n * @see https://encoding.spec.whatwg.org/#decode\n * @param {Uint8Array[]} ioQueue\n * @param {string} encoding\n */\nfunction decode (ioQueue, encoding) {\n const bytes = combineByteSequences(ioQueue)\n\n // 1. Let BOMEncoding be the result of BOM sniffing ioQueue.\n const BOMEncoding = BOMSniffing(bytes)\n\n let slice = 0\n\n // 2. If BOMEncoding is non-null:\n if (BOMEncoding !== null) {\n // 1. Set encoding to BOMEncoding.\n encoding = BOMEncoding\n\n // 2. Read three bytes from ioQueue, if BOMEncoding is\n // UTF-8; otherwise read two bytes.\n // (Do nothing with those bytes.)\n slice = BOMEncoding === 'UTF-8' ? 3 : 2\n }\n\n // 3. Process a queue with an instance of encoding’s\n // decoder, ioQueue, output, and \"replacement\".\n\n // 4. Return output.\n\n const sliced = bytes.slice(slice)\n return new TextDecoder(encoding).decode(sliced)\n}\n\n/**\n * @see https://encoding.spec.whatwg.org/#bom-sniff\n * @param {Uint8Array} ioQueue\n */\nfunction BOMSniffing (ioQueue) {\n // 1. Let BOM be the result of peeking 3 bytes from ioQueue,\n // converted to a byte sequence.\n const [a, b, c] = ioQueue\n\n // 2. For each of the rows in the table below, starting with\n // the first one and going down, if BOM starts with the\n // bytes given in the first column, then return the\n // encoding given in the cell in the second column of that\n // row. Otherwise, return null.\n if (a === 0xEF && b === 0xBB && c === 0xBF) {\n return 'UTF-8'\n } else if (a === 0xFE && b === 0xFF) {\n return 'UTF-16BE'\n } else if (a === 0xFF && b === 0xFE) {\n return 'UTF-16LE'\n }\n\n return null\n}\n\n/**\n * @param {Uint8Array[]} sequences\n */\nfunction combineByteSequences (sequences) {\n const size = sequences.reduce((a, b) => {\n return a + b.byteLength\n }, 0)\n\n let offset = 0\n\n return sequences.reduce((a, b) => {\n a.set(b, offset)\n offset += b.byteLength\n return a\n }, new Uint8Array(size))\n}\n\nmodule.exports = {\n staticPropertyDescriptors,\n readOperation,\n fireAProgressEvent\n}\n","'use strict'\n\nconst {\n staticPropertyDescriptors,\n readOperation,\n fireAProgressEvent\n} = require('./util')\nconst {\n kState,\n kError,\n kResult,\n kEvents,\n kAborted\n} = require('./symbols')\nconst { webidl } = require('../fetch/webidl')\nconst { kEnumerableProperty } = require('../core/util')\n\nclass FileReader extends EventTarget {\n constructor () {\n super()\n\n this[kState] = 'empty'\n this[kResult] = null\n this[kError] = null\n this[kEvents] = {\n loadend: null,\n error: null,\n abort: null,\n load: null,\n progress: null,\n loadstart: null\n }\n }\n\n /**\n * @see https://w3c.github.io/FileAPI/#dfn-readAsArrayBuffer\n * @param {import('buffer').Blob} blob\n */\n readAsArrayBuffer (blob) {\n webidl.brandCheck(this, FileReader)\n\n webidl.argumentLengthCheck(arguments, 1, { header: 'FileReader.readAsArrayBuffer' })\n\n blob = webidl.converters.Blob(blob, { strict: false })\n\n // The readAsArrayBuffer(blob) method, when invoked,\n // must initiate a read operation for blob with ArrayBuffer.\n readOperation(this, blob, 'ArrayBuffer')\n }\n\n /**\n * @see https://w3c.github.io/FileAPI/#readAsBinaryString\n * @param {import('buffer').Blob} blob\n */\n readAsBinaryString (blob) {\n webidl.brandCheck(this, FileReader)\n\n webidl.argumentLengthCheck(arguments, 1, { header: 'FileReader.readAsBinaryString' })\n\n blob = webidl.converters.Blob(blob, { strict: false })\n\n // The readAsBinaryString(blob) method, when invoked,\n // must initiate a read operation for blob with BinaryString.\n readOperation(this, blob, 'BinaryString')\n }\n\n /**\n * @see https://w3c.github.io/FileAPI/#readAsDataText\n * @param {import('buffer').Blob} blob\n * @param {string?} encoding\n */\n readAsText (blob, encoding = undefined) {\n webidl.brandCheck(this, FileReader)\n\n webidl.argumentLengthCheck(arguments, 1, { header: 'FileReader.readAsText' })\n\n blob = webidl.converters.Blob(blob, { strict: false })\n\n if (encoding !== undefined) {\n encoding = webidl.converters.DOMString(encoding)\n }\n\n // The readAsText(blob, encoding) method, when invoked,\n // must initiate a read operation for blob with Text and encoding.\n readOperation(this, blob, 'Text', encoding)\n }\n\n /**\n * @see https://w3c.github.io/FileAPI/#dfn-readAsDataURL\n * @param {import('buffer').Blob} blob\n */\n readAsDataURL (blob) {\n webidl.brandCheck(this, FileReader)\n\n webidl.argumentLengthCheck(arguments, 1, { header: 'FileReader.readAsDataURL' })\n\n blob = webidl.converters.Blob(blob, { strict: false })\n\n // The readAsDataURL(blob) method, when invoked, must\n // initiate a read operation for blob with DataURL.\n readOperation(this, blob, 'DataURL')\n }\n\n /**\n * @see https://w3c.github.io/FileAPI/#dfn-abort\n */\n abort () {\n // 1. If this's state is \"empty\" or if this's state is\n // \"done\" set this's result to null and terminate\n // this algorithm.\n if (this[kState] === 'empty' || this[kState] === 'done') {\n this[kResult] = null\n return\n }\n\n // 2. If this's state is \"loading\" set this's state to\n // \"done\" and set this's result to null.\n if (this[kState] === 'loading') {\n this[kState] = 'done'\n this[kResult] = null\n }\n\n // 3. If there are any tasks from this on the file reading\n // task source in an affiliated task queue, then remove\n // those tasks from that task queue.\n this[kAborted] = true\n\n // 4. Terminate the algorithm for the read method being processed.\n // TODO\n\n // 5. Fire a progress event called abort at this.\n fireAProgressEvent('abort', this)\n\n // 6. If this's state is not \"loading\", fire a progress\n // event called loadend at this.\n if (this[kState] !== 'loading') {\n fireAProgressEvent('loadend', this)\n }\n }\n\n /**\n * @see https://w3c.github.io/FileAPI/#dom-filereader-readystate\n */\n get readyState () {\n webidl.brandCheck(this, FileReader)\n\n switch (this[kState]) {\n case 'empty': return this.EMPTY\n case 'loading': return this.LOADING\n case 'done': return this.DONE\n }\n }\n\n /**\n * @see https://w3c.github.io/FileAPI/#dom-filereader-result\n */\n get result () {\n webidl.brandCheck(this, FileReader)\n\n // The result attribute’s getter, when invoked, must return\n // this's result.\n return this[kResult]\n }\n\n /**\n * @see https://w3c.github.io/FileAPI/#dom-filereader-error\n */\n get error () {\n webidl.brandCheck(this, FileReader)\n\n // The error attribute’s getter, when invoked, must return\n // this's error.\n return this[kError]\n }\n\n get onloadend () {\n webidl.brandCheck(this, FileReader)\n\n return this[kEvents].loadend\n }\n\n set onloadend (fn) {\n webidl.brandCheck(this, FileReader)\n\n if (this[kEvents].loadend) {\n this.removeEventListener('loadend', this[kEvents].loadend)\n }\n\n if (typeof fn === 'function') {\n this[kEvents].loadend = fn\n this.addEventListener('loadend', fn)\n } else {\n this[kEvents].loadend = null\n }\n }\n\n get onerror () {\n webidl.brandCheck(this, FileReader)\n\n return this[kEvents].error\n }\n\n set onerror (fn) {\n webidl.brandCheck(this, FileReader)\n\n if (this[kEvents].error) {\n this.removeEventListener('error', this[kEvents].error)\n }\n\n if (typeof fn === 'function') {\n this[kEvents].error = fn\n this.addEventListener('error', fn)\n } else {\n this[kEvents].error = null\n }\n }\n\n get onloadstart () {\n webidl.brandCheck(this, FileReader)\n\n return this[kEvents].loadstart\n }\n\n set onloadstart (fn) {\n webidl.brandCheck(this, FileReader)\n\n if (this[kEvents].loadstart) {\n this.removeEventListener('loadstart', this[kEvents].loadstart)\n }\n\n if (typeof fn === 'function') {\n this[kEvents].loadstart = fn\n this.addEventListener('loadstart', fn)\n } else {\n this[kEvents].loadstart = null\n }\n }\n\n get onprogress () {\n webidl.brandCheck(this, FileReader)\n\n return this[kEvents].progress\n }\n\n set onprogress (fn) {\n webidl.brandCheck(this, FileReader)\n\n if (this[kEvents].progress) {\n this.removeEventListener('progress', this[kEvents].progress)\n }\n\n if (typeof fn === 'function') {\n this[kEvents].progress = fn\n this.addEventListener('progress', fn)\n } else {\n this[kEvents].progress = null\n }\n }\n\n get onload () {\n webidl.brandCheck(this, FileReader)\n\n return this[kEvents].load\n }\n\n set onload (fn) {\n webidl.brandCheck(this, FileReader)\n\n if (this[kEvents].load) {\n this.removeEventListener('load', this[kEvents].load)\n }\n\n if (typeof fn === 'function') {\n this[kEvents].load = fn\n this.addEventListener('load', fn)\n } else {\n this[kEvents].load = null\n }\n }\n\n get onabort () {\n webidl.brandCheck(this, FileReader)\n\n return this[kEvents].abort\n }\n\n set onabort (fn) {\n webidl.brandCheck(this, FileReader)\n\n if (this[kEvents].abort) {\n this.removeEventListener('abort', this[kEvents].abort)\n }\n\n if (typeof fn === 'function') {\n this[kEvents].abort = fn\n this.addEventListener('abort', fn)\n } else {\n this[kEvents].abort = null\n }\n }\n}\n\n// https://w3c.github.io/FileAPI/#dom-filereader-empty\nFileReader.EMPTY = FileReader.prototype.EMPTY = 0\n// https://w3c.github.io/FileAPI/#dom-filereader-loading\nFileReader.LOADING = FileReader.prototype.LOADING = 1\n// https://w3c.github.io/FileAPI/#dom-filereader-done\nFileReader.DONE = FileReader.prototype.DONE = 2\n\nObject.defineProperties(FileReader.prototype, {\n EMPTY: staticPropertyDescriptors,\n LOADING: staticPropertyDescriptors,\n DONE: staticPropertyDescriptors,\n readAsArrayBuffer: kEnumerableProperty,\n readAsBinaryString: kEnumerableProperty,\n readAsText: kEnumerableProperty,\n readAsDataURL: kEnumerableProperty,\n abort: kEnumerableProperty,\n readyState: kEnumerableProperty,\n result: kEnumerableProperty,\n error: kEnumerableProperty,\n onloadstart: kEnumerableProperty,\n onprogress: kEnumerableProperty,\n onload: kEnumerableProperty,\n onabort: kEnumerableProperty,\n onerror: kEnumerableProperty,\n onloadend: kEnumerableProperty,\n [Symbol.toStringTag]: {\n value: 'FileReader',\n writable: false,\n enumerable: false,\n configurable: true\n }\n})\n\nObject.defineProperties(FileReader, {\n EMPTY: staticPropertyDescriptors,\n LOADING: staticPropertyDescriptors,\n DONE: staticPropertyDescriptors\n})\n\nmodule.exports = {\n FileReader\n}\n","'use strict'\n\nmodule.exports = {\n kConstruct: require('../core/symbols').kConstruct\n}\n","'use strict'\n\nconst assert = require('assert')\nconst { URLSerializer } = require('../fetch/dataURL')\nconst { isValidHeaderName } = require('../fetch/util')\n\n/**\n * @see https://url.spec.whatwg.org/#concept-url-equals\n * @param {URL} A\n * @param {URL} B\n * @param {boolean | undefined} excludeFragment\n * @returns {boolean}\n */\nfunction urlEquals (A, B, excludeFragment = false) {\n const serializedA = URLSerializer(A, excludeFragment)\n\n const serializedB = URLSerializer(B, excludeFragment)\n\n return serializedA === serializedB\n}\n\n/**\n * @see https://github.com/chromium/chromium/blob/694d20d134cb553d8d89e5500b9148012b1ba299/content/browser/cache_storage/cache_storage_cache.cc#L260-L262\n * @param {string} header\n */\nfunction fieldValues (header) {\n assert(header !== null)\n\n const values = []\n\n for (let value of header.split(',')) {\n value = value.trim()\n\n if (!value.length) {\n continue\n } else if (!isValidHeaderName(value)) {\n continue\n }\n\n values.push(value)\n }\n\n return values\n}\n\nmodule.exports = {\n urlEquals,\n fieldValues\n}\n","'use strict'\n\nconst { kConstruct } = require('./symbols')\nconst { urlEquals, fieldValues: getFieldValues } = require('./util')\nconst { kEnumerableProperty, isDisturbed } = require('../core/util')\nconst { kHeadersList } = require('../core/symbols')\nconst { webidl } = require('../fetch/webidl')\nconst { Response, cloneResponse } = require('../fetch/response')\nconst { Request } = require('../fetch/request')\nconst { kState, kHeaders, kGuard, kRealm } = require('../fetch/symbols')\nconst { fetching } = require('../fetch/index')\nconst { urlIsHttpHttpsScheme, createDeferredPromise, readAllBytes } = require('../fetch/util')\nconst assert = require('assert')\nconst { getGlobalDispatcher } = require('../global')\n\n/**\n * @see https://w3c.github.io/ServiceWorker/#dfn-cache-batch-operation\n * @typedef {Object} CacheBatchOperation\n * @property {'delete' | 'put'} type\n * @property {any} request\n * @property {any} response\n * @property {import('../../types/cache').CacheQueryOptions} options\n */\n\n/**\n * @see https://w3c.github.io/ServiceWorker/#dfn-request-response-list\n * @typedef {[any, any][]} requestResponseList\n */\n\nclass Cache {\n /**\n * @see https://w3c.github.io/ServiceWorker/#dfn-relevant-request-response-list\n * @type {requestResponseList}\n */\n #relevantRequestResponseList\n\n constructor () {\n if (arguments[0] !== kConstruct) {\n webidl.illegalConstructor()\n }\n\n this.#relevantRequestResponseList = arguments[1]\n }\n\n async match (request, options = {}) {\n webidl.brandCheck(this, Cache)\n webidl.argumentLengthCheck(arguments, 1, { header: 'Cache.match' })\n\n request = webidl.converters.RequestInfo(request)\n options = webidl.converters.CacheQueryOptions(options)\n\n const p = await this.matchAll(request, options)\n\n if (p.length === 0) {\n return\n }\n\n return p[0]\n }\n\n async matchAll (request = undefined, options = {}) {\n webidl.brandCheck(this, Cache)\n\n if (request !== undefined) request = webidl.converters.RequestInfo(request)\n options = webidl.converters.CacheQueryOptions(options)\n\n // 1.\n let r = null\n\n // 2.\n if (request !== undefined) {\n if (request instanceof Request) {\n // 2.1.1\n r = request[kState]\n\n // 2.1.2\n if (r.method !== 'GET' && !options.ignoreMethod) {\n return []\n }\n } else if (typeof request === 'string') {\n // 2.2.1\n r = new Request(request)[kState]\n }\n }\n\n // 5.\n // 5.1\n const responses = []\n\n // 5.2\n if (request === undefined) {\n // 5.2.1\n for (const requestResponse of this.#relevantRequestResponseList) {\n responses.push(requestResponse[1])\n }\n } else { // 5.3\n // 5.3.1\n const requestResponses = this.#queryCache(r, options)\n\n // 5.3.2\n for (const requestResponse of requestResponses) {\n responses.push(requestResponse[1])\n }\n }\n\n // 5.4\n // We don't implement CORs so we don't need to loop over the responses, yay!\n\n // 5.5.1\n const responseList = []\n\n // 5.5.2\n for (const response of responses) {\n // 5.5.2.1\n const responseObject = new Response(response.body?.source ?? null)\n const body = responseObject[kState].body\n responseObject[kState] = response\n responseObject[kState].body = body\n responseObject[kHeaders][kHeadersList] = response.headersList\n responseObject[kHeaders][kGuard] = 'immutable'\n\n responseList.push(responseObject)\n }\n\n // 6.\n return Object.freeze(responseList)\n }\n\n async add (request) {\n webidl.brandCheck(this, Cache)\n webidl.argumentLengthCheck(arguments, 1, { header: 'Cache.add' })\n\n request = webidl.converters.RequestInfo(request)\n\n // 1.\n const requests = [request]\n\n // 2.\n const responseArrayPromise = this.addAll(requests)\n\n // 3.\n return await responseArrayPromise\n }\n\n async addAll (requests) {\n webidl.brandCheck(this, Cache)\n webidl.argumentLengthCheck(arguments, 1, { header: 'Cache.addAll' })\n\n requests = webidl.converters['sequence'](requests)\n\n // 1.\n const responsePromises = []\n\n // 2.\n const requestList = []\n\n // 3.\n for (const request of requests) {\n if (typeof request === 'string') {\n continue\n }\n\n // 3.1\n const r = request[kState]\n\n // 3.2\n if (!urlIsHttpHttpsScheme(r.url) || r.method !== 'GET') {\n throw webidl.errors.exception({\n header: 'Cache.addAll',\n message: 'Expected http/s scheme when method is not GET.'\n })\n }\n }\n\n // 4.\n /** @type {ReturnType[]} */\n const fetchControllers = []\n\n // 5.\n for (const request of requests) {\n // 5.1\n const r = new Request(request)[kState]\n\n // 5.2\n if (!urlIsHttpHttpsScheme(r.url)) {\n throw webidl.errors.exception({\n header: 'Cache.addAll',\n message: 'Expected http/s scheme.'\n })\n }\n\n // 5.4\n r.initiator = 'fetch'\n r.destination = 'subresource'\n\n // 5.5\n requestList.push(r)\n\n // 5.6\n const responsePromise = createDeferredPromise()\n\n // 5.7\n fetchControllers.push(fetching({\n request: r,\n dispatcher: getGlobalDispatcher(),\n processResponse (response) {\n // 1.\n if (response.type === 'error' || response.status === 206 || response.status < 200 || response.status > 299) {\n responsePromise.reject(webidl.errors.exception({\n header: 'Cache.addAll',\n message: 'Received an invalid status code or the request failed.'\n }))\n } else if (response.headersList.contains('vary')) { // 2.\n // 2.1\n const fieldValues = getFieldValues(response.headersList.get('vary'))\n\n // 2.2\n for (const fieldValue of fieldValues) {\n // 2.2.1\n if (fieldValue === '*') {\n responsePromise.reject(webidl.errors.exception({\n header: 'Cache.addAll',\n message: 'invalid vary field value'\n }))\n\n for (const controller of fetchControllers) {\n controller.abort()\n }\n\n return\n }\n }\n }\n },\n processResponseEndOfBody (response) {\n // 1.\n if (response.aborted) {\n responsePromise.reject(new DOMException('aborted', 'AbortError'))\n return\n }\n\n // 2.\n responsePromise.resolve(response)\n }\n }))\n\n // 5.8\n responsePromises.push(responsePromise.promise)\n }\n\n // 6.\n const p = Promise.all(responsePromises)\n\n // 7.\n const responses = await p\n\n // 7.1\n const operations = []\n\n // 7.2\n let index = 0\n\n // 7.3\n for (const response of responses) {\n // 7.3.1\n /** @type {CacheBatchOperation} */\n const operation = {\n type: 'put', // 7.3.2\n request: requestList[index], // 7.3.3\n response // 7.3.4\n }\n\n operations.push(operation) // 7.3.5\n\n index++ // 7.3.6\n }\n\n // 7.5\n const cacheJobPromise = createDeferredPromise()\n\n // 7.6.1\n let errorData = null\n\n // 7.6.2\n try {\n this.#batchCacheOperations(operations)\n } catch (e) {\n errorData = e\n }\n\n // 7.6.3\n queueMicrotask(() => {\n // 7.6.3.1\n if (errorData === null) {\n cacheJobPromise.resolve(undefined)\n } else {\n // 7.6.3.2\n cacheJobPromise.reject(errorData)\n }\n })\n\n // 7.7\n return cacheJobPromise.promise\n }\n\n async put (request, response) {\n webidl.brandCheck(this, Cache)\n webidl.argumentLengthCheck(arguments, 2, { header: 'Cache.put' })\n\n request = webidl.converters.RequestInfo(request)\n response = webidl.converters.Response(response)\n\n // 1.\n let innerRequest = null\n\n // 2.\n if (request instanceof Request) {\n innerRequest = request[kState]\n } else { // 3.\n innerRequest = new Request(request)[kState]\n }\n\n // 4.\n if (!urlIsHttpHttpsScheme(innerRequest.url) || innerRequest.method !== 'GET') {\n throw webidl.errors.exception({\n header: 'Cache.put',\n message: 'Expected an http/s scheme when method is not GET'\n })\n }\n\n // 5.\n const innerResponse = response[kState]\n\n // 6.\n if (innerResponse.status === 206) {\n throw webidl.errors.exception({\n header: 'Cache.put',\n message: 'Got 206 status'\n })\n }\n\n // 7.\n if (innerResponse.headersList.contains('vary')) {\n // 7.1.\n const fieldValues = getFieldValues(innerResponse.headersList.get('vary'))\n\n // 7.2.\n for (const fieldValue of fieldValues) {\n // 7.2.1\n if (fieldValue === '*') {\n throw webidl.errors.exception({\n header: 'Cache.put',\n message: 'Got * vary field value'\n })\n }\n }\n }\n\n // 8.\n if (innerResponse.body && (isDisturbed(innerResponse.body.stream) || innerResponse.body.stream.locked)) {\n throw webidl.errors.exception({\n header: 'Cache.put',\n message: 'Response body is locked or disturbed'\n })\n }\n\n // 9.\n const clonedResponse = cloneResponse(innerResponse)\n\n // 10.\n const bodyReadPromise = createDeferredPromise()\n\n // 11.\n if (innerResponse.body != null) {\n // 11.1\n const stream = innerResponse.body.stream\n\n // 11.2\n const reader = stream.getReader()\n\n // 11.3\n readAllBytes(reader).then(bodyReadPromise.resolve, bodyReadPromise.reject)\n } else {\n bodyReadPromise.resolve(undefined)\n }\n\n // 12.\n /** @type {CacheBatchOperation[]} */\n const operations = []\n\n // 13.\n /** @type {CacheBatchOperation} */\n const operation = {\n type: 'put', // 14.\n request: innerRequest, // 15.\n response: clonedResponse // 16.\n }\n\n // 17.\n operations.push(operation)\n\n // 19.\n const bytes = await bodyReadPromise.promise\n\n if (clonedResponse.body != null) {\n clonedResponse.body.source = bytes\n }\n\n // 19.1\n const cacheJobPromise = createDeferredPromise()\n\n // 19.2.1\n let errorData = null\n\n // 19.2.2\n try {\n this.#batchCacheOperations(operations)\n } catch (e) {\n errorData = e\n }\n\n // 19.2.3\n queueMicrotask(() => {\n // 19.2.3.1\n if (errorData === null) {\n cacheJobPromise.resolve()\n } else { // 19.2.3.2\n cacheJobPromise.reject(errorData)\n }\n })\n\n return cacheJobPromise.promise\n }\n\n async delete (request, options = {}) {\n webidl.brandCheck(this, Cache)\n webidl.argumentLengthCheck(arguments, 1, { header: 'Cache.delete' })\n\n request = webidl.converters.RequestInfo(request)\n options = webidl.converters.CacheQueryOptions(options)\n\n /**\n * @type {Request}\n */\n let r = null\n\n if (request instanceof Request) {\n r = request[kState]\n\n if (r.method !== 'GET' && !options.ignoreMethod) {\n return false\n }\n } else {\n assert(typeof request === 'string')\n\n r = new Request(request)[kState]\n }\n\n /** @type {CacheBatchOperation[]} */\n const operations = []\n\n /** @type {CacheBatchOperation} */\n const operation = {\n type: 'delete',\n request: r,\n options\n }\n\n operations.push(operation)\n\n const cacheJobPromise = createDeferredPromise()\n\n let errorData = null\n let requestResponses\n\n try {\n requestResponses = this.#batchCacheOperations(operations)\n } catch (e) {\n errorData = e\n }\n\n queueMicrotask(() => {\n if (errorData === null) {\n cacheJobPromise.resolve(!!requestResponses?.length)\n } else {\n cacheJobPromise.reject(errorData)\n }\n })\n\n return cacheJobPromise.promise\n }\n\n /**\n * @see https://w3c.github.io/ServiceWorker/#dom-cache-keys\n * @param {any} request\n * @param {import('../../types/cache').CacheQueryOptions} options\n * @returns {readonly Request[]}\n */\n async keys (request = undefined, options = {}) {\n webidl.brandCheck(this, Cache)\n\n if (request !== undefined) request = webidl.converters.RequestInfo(request)\n options = webidl.converters.CacheQueryOptions(options)\n\n // 1.\n let r = null\n\n // 2.\n if (request !== undefined) {\n // 2.1\n if (request instanceof Request) {\n // 2.1.1\n r = request[kState]\n\n // 2.1.2\n if (r.method !== 'GET' && !options.ignoreMethod) {\n return []\n }\n } else if (typeof request === 'string') { // 2.2\n r = new Request(request)[kState]\n }\n }\n\n // 4.\n const promise = createDeferredPromise()\n\n // 5.\n // 5.1\n const requests = []\n\n // 5.2\n if (request === undefined) {\n // 5.2.1\n for (const requestResponse of this.#relevantRequestResponseList) {\n // 5.2.1.1\n requests.push(requestResponse[0])\n }\n } else { // 5.3\n // 5.3.1\n const requestResponses = this.#queryCache(r, options)\n\n // 5.3.2\n for (const requestResponse of requestResponses) {\n // 5.3.2.1\n requests.push(requestResponse[0])\n }\n }\n\n // 5.4\n queueMicrotask(() => {\n // 5.4.1\n const requestList = []\n\n // 5.4.2\n for (const request of requests) {\n const requestObject = new Request('https://a')\n requestObject[kState] = request\n requestObject[kHeaders][kHeadersList] = request.headersList\n requestObject[kHeaders][kGuard] = 'immutable'\n requestObject[kRealm] = request.client\n\n // 5.4.2.1\n requestList.push(requestObject)\n }\n\n // 5.4.3\n promise.resolve(Object.freeze(requestList))\n })\n\n return promise.promise\n }\n\n /**\n * @see https://w3c.github.io/ServiceWorker/#batch-cache-operations-algorithm\n * @param {CacheBatchOperation[]} operations\n * @returns {requestResponseList}\n */\n #batchCacheOperations (operations) {\n // 1.\n const cache = this.#relevantRequestResponseList\n\n // 2.\n const backupCache = [...cache]\n\n // 3.\n const addedItems = []\n\n // 4.1\n const resultList = []\n\n try {\n // 4.2\n for (const operation of operations) {\n // 4.2.1\n if (operation.type !== 'delete' && operation.type !== 'put') {\n throw webidl.errors.exception({\n header: 'Cache.#batchCacheOperations',\n message: 'operation type does not match \"delete\" or \"put\"'\n })\n }\n\n // 4.2.2\n if (operation.type === 'delete' && operation.response != null) {\n throw webidl.errors.exception({\n header: 'Cache.#batchCacheOperations',\n message: 'delete operation should not have an associated response'\n })\n }\n\n // 4.2.3\n if (this.#queryCache(operation.request, operation.options, addedItems).length) {\n throw new DOMException('???', 'InvalidStateError')\n }\n\n // 4.2.4\n let requestResponses\n\n // 4.2.5\n if (operation.type === 'delete') {\n // 4.2.5.1\n requestResponses = this.#queryCache(operation.request, operation.options)\n\n // TODO: the spec is wrong, this is needed to pass WPTs\n if (requestResponses.length === 0) {\n return []\n }\n\n // 4.2.5.2\n for (const requestResponse of requestResponses) {\n const idx = cache.indexOf(requestResponse)\n assert(idx !== -1)\n\n // 4.2.5.2.1\n cache.splice(idx, 1)\n }\n } else if (operation.type === 'put') { // 4.2.6\n // 4.2.6.1\n if (operation.response == null) {\n throw webidl.errors.exception({\n header: 'Cache.#batchCacheOperations',\n message: 'put operation should have an associated response'\n })\n }\n\n // 4.2.6.2\n const r = operation.request\n\n // 4.2.6.3\n if (!urlIsHttpHttpsScheme(r.url)) {\n throw webidl.errors.exception({\n header: 'Cache.#batchCacheOperations',\n message: 'expected http or https scheme'\n })\n }\n\n // 4.2.6.4\n if (r.method !== 'GET') {\n throw webidl.errors.exception({\n header: 'Cache.#batchCacheOperations',\n message: 'not get method'\n })\n }\n\n // 4.2.6.5\n if (operation.options != null) {\n throw webidl.errors.exception({\n header: 'Cache.#batchCacheOperations',\n message: 'options must not be defined'\n })\n }\n\n // 4.2.6.6\n requestResponses = this.#queryCache(operation.request)\n\n // 4.2.6.7\n for (const requestResponse of requestResponses) {\n const idx = cache.indexOf(requestResponse)\n assert(idx !== -1)\n\n // 4.2.6.7.1\n cache.splice(idx, 1)\n }\n\n // 4.2.6.8\n cache.push([operation.request, operation.response])\n\n // 4.2.6.10\n addedItems.push([operation.request, operation.response])\n }\n\n // 4.2.7\n resultList.push([operation.request, operation.response])\n }\n\n // 4.3\n return resultList\n } catch (e) { // 5.\n // 5.1\n this.#relevantRequestResponseList.length = 0\n\n // 5.2\n this.#relevantRequestResponseList = backupCache\n\n // 5.3\n throw e\n }\n }\n\n /**\n * @see https://w3c.github.io/ServiceWorker/#query-cache\n * @param {any} requestQuery\n * @param {import('../../types/cache').CacheQueryOptions} options\n * @param {requestResponseList} targetStorage\n * @returns {requestResponseList}\n */\n #queryCache (requestQuery, options, targetStorage) {\n /** @type {requestResponseList} */\n const resultList = []\n\n const storage = targetStorage ?? this.#relevantRequestResponseList\n\n for (const requestResponse of storage) {\n const [cachedRequest, cachedResponse] = requestResponse\n if (this.#requestMatchesCachedItem(requestQuery, cachedRequest, cachedResponse, options)) {\n resultList.push(requestResponse)\n }\n }\n\n return resultList\n }\n\n /**\n * @see https://w3c.github.io/ServiceWorker/#request-matches-cached-item-algorithm\n * @param {any} requestQuery\n * @param {any} request\n * @param {any | null} response\n * @param {import('../../types/cache').CacheQueryOptions | undefined} options\n * @returns {boolean}\n */\n #requestMatchesCachedItem (requestQuery, request, response = null, options) {\n // if (options?.ignoreMethod === false && request.method === 'GET') {\n // return false\n // }\n\n const queryURL = new URL(requestQuery.url)\n\n const cachedURL = new URL(request.url)\n\n if (options?.ignoreSearch) {\n cachedURL.search = ''\n\n queryURL.search = ''\n }\n\n if (!urlEquals(queryURL, cachedURL, true)) {\n return false\n }\n\n if (\n response == null ||\n options?.ignoreVary ||\n !response.headersList.contains('vary')\n ) {\n return true\n }\n\n const fieldValues = getFieldValues(response.headersList.get('vary'))\n\n for (const fieldValue of fieldValues) {\n if (fieldValue === '*') {\n return false\n }\n\n const requestValue = request.headersList.get(fieldValue)\n const queryValue = requestQuery.headersList.get(fieldValue)\n\n // If one has the header and the other doesn't, or one has\n // a different value than the other, return false\n if (requestValue !== queryValue) {\n return false\n }\n }\n\n return true\n }\n}\n\nObject.defineProperties(Cache.prototype, {\n [Symbol.toStringTag]: {\n value: 'Cache',\n configurable: true\n },\n match: kEnumerableProperty,\n matchAll: kEnumerableProperty,\n add: kEnumerableProperty,\n addAll: kEnumerableProperty,\n put: kEnumerableProperty,\n delete: kEnumerableProperty,\n keys: kEnumerableProperty\n})\n\nconst cacheQueryOptionConverters = [\n {\n key: 'ignoreSearch',\n converter: webidl.converters.boolean,\n defaultValue: false\n },\n {\n key: 'ignoreMethod',\n converter: webidl.converters.boolean,\n defaultValue: false\n },\n {\n key: 'ignoreVary',\n converter: webidl.converters.boolean,\n defaultValue: false\n }\n]\n\nwebidl.converters.CacheQueryOptions = webidl.dictionaryConverter(cacheQueryOptionConverters)\n\nwebidl.converters.MultiCacheQueryOptions = webidl.dictionaryConverter([\n ...cacheQueryOptionConverters,\n {\n key: 'cacheName',\n converter: webidl.converters.DOMString\n }\n])\n\nwebidl.converters.Response = webidl.interfaceConverter(Response)\n\nwebidl.converters['sequence'] = webidl.sequenceConverter(\n webidl.converters.RequestInfo\n)\n\nmodule.exports = {\n Cache\n}\n","'use strict'\n\nconst { kConstruct } = require('./symbols')\nconst { Cache } = require('./cache')\nconst { webidl } = require('../fetch/webidl')\nconst { kEnumerableProperty } = require('../core/util')\n\nclass CacheStorage {\n /**\n * @see https://w3c.github.io/ServiceWorker/#dfn-relevant-name-to-cache-map\n * @type {Map}\n */\n async has (cacheName) {\n webidl.brandCheck(this, CacheStorage)\n webidl.argumentLengthCheck(arguments, 1, { header: 'CacheStorage.has' })\n\n cacheName = webidl.converters.DOMString(cacheName)\n\n // 2.1.1\n // 2.2\n return this.#caches.has(cacheName)\n }\n\n /**\n * @see https://w3c.github.io/ServiceWorker/#dom-cachestorage-open\n * @param {string} cacheName\n * @returns {Promise}\n */\n async open (cacheName) {\n webidl.brandCheck(this, CacheStorage)\n webidl.argumentLengthCheck(arguments, 1, { header: 'CacheStorage.open' })\n\n cacheName = webidl.converters.DOMString(cacheName)\n\n // 2.1\n if (this.#caches.has(cacheName)) {\n // await caches.open('v1') !== await caches.open('v1')\n\n // 2.1.1\n const cache = this.#caches.get(cacheName)\n\n // 2.1.1.1\n return new Cache(kConstruct, cache)\n }\n\n // 2.2\n const cache = []\n\n // 2.3\n this.#caches.set(cacheName, cache)\n\n // 2.4\n return new Cache(kConstruct, cache)\n }\n\n /**\n * @see https://w3c.github.io/ServiceWorker/#cache-storage-delete\n * @param {string} cacheName\n * @returns {Promise}\n */\n async delete (cacheName) {\n webidl.brandCheck(this, CacheStorage)\n webidl.argumentLengthCheck(arguments, 1, { header: 'CacheStorage.delete' })\n\n cacheName = webidl.converters.DOMString(cacheName)\n\n return this.#caches.delete(cacheName)\n }\n\n /**\n * @see https://w3c.github.io/ServiceWorker/#cache-storage-keys\n * @returns {string[]}\n */\n async keys () {\n webidl.brandCheck(this, CacheStorage)\n\n // 2.1\n const keys = this.#caches.keys()\n\n // 2.2\n return [...keys]\n }\n}\n\nObject.defineProperties(CacheStorage.prototype, {\n [Symbol.toStringTag]: {\n value: 'CacheStorage',\n configurable: true\n },\n match: kEnumerableProperty,\n has: kEnumerableProperty,\n open: kEnumerableProperty,\n delete: kEnumerableProperty,\n keys: kEnumerableProperty\n})\n\nmodule.exports = {\n CacheStorage\n}\n","'use strict'\n\n// https://wicg.github.io/cookie-store/#cookie-maximum-attribute-value-size\nconst maxAttributeValueSize = 1024\n\n// https://wicg.github.io/cookie-store/#cookie-maximum-name-value-pair-size\nconst maxNameValuePairSize = 4096\n\nmodule.exports = {\n maxAttributeValueSize,\n maxNameValuePairSize\n}\n","'use strict'\n\n/**\n * @param {string} value\n * @returns {boolean}\n */\nfunction isCTLExcludingHtab (value) {\n if (value.length === 0) {\n return false\n }\n\n for (const char of value) {\n const code = char.charCodeAt(0)\n\n if (\n (code >= 0x00 || code <= 0x08) ||\n (code >= 0x0A || code <= 0x1F) ||\n code === 0x7F\n ) {\n return false\n }\n }\n}\n\n/**\n CHAR = \n token = 1*\n separators = \"(\" | \")\" | \"<\" | \">\" | \"@\"\n | \",\" | \";\" | \":\" | \"\\\" | <\">\n | \"/\" | \"[\" | \"]\" | \"?\" | \"=\"\n | \"{\" | \"}\" | SP | HT\n * @param {string} name\n */\nfunction validateCookieName (name) {\n for (const char of name) {\n const code = char.charCodeAt(0)\n\n if (\n (code <= 0x20 || code > 0x7F) ||\n char === '(' ||\n char === ')' ||\n char === '>' ||\n char === '<' ||\n char === '@' ||\n char === ',' ||\n char === ';' ||\n char === ':' ||\n char === '\\\\' ||\n char === '\"' ||\n char === '/' ||\n char === '[' ||\n char === ']' ||\n char === '?' ||\n char === '=' ||\n char === '{' ||\n char === '}'\n ) {\n throw new Error('Invalid cookie name')\n }\n }\n}\n\n/**\n cookie-value = *cookie-octet / ( DQUOTE *cookie-octet DQUOTE )\n cookie-octet = %x21 / %x23-2B / %x2D-3A / %x3C-5B / %x5D-7E\n ; US-ASCII characters excluding CTLs,\n ; whitespace DQUOTE, comma, semicolon,\n ; and backslash\n * @param {string} value\n */\nfunction validateCookieValue (value) {\n for (const char of value) {\n const code = char.charCodeAt(0)\n\n if (\n code < 0x21 || // exclude CTLs (0-31)\n code === 0x22 ||\n code === 0x2C ||\n code === 0x3B ||\n code === 0x5C ||\n code > 0x7E // non-ascii\n ) {\n throw new Error('Invalid header value')\n }\n }\n}\n\n/**\n * path-value = \n * @param {string} path\n */\nfunction validateCookiePath (path) {\n for (const char of path) {\n const code = char.charCodeAt(0)\n\n if (code < 0x21 || char === ';') {\n throw new Error('Invalid cookie path')\n }\n }\n}\n\n/**\n * I have no idea why these values aren't allowed to be honest,\n * but Deno tests these. - Khafra\n * @param {string} domain\n */\nfunction validateCookieDomain (domain) {\n if (\n domain.startsWith('-') ||\n domain.endsWith('.') ||\n domain.endsWith('-')\n ) {\n throw new Error('Invalid cookie domain')\n }\n}\n\n/**\n * @see https://www.rfc-editor.org/rfc/rfc7231#section-7.1.1.1\n * @param {number|Date} date\n IMF-fixdate = day-name \",\" SP date1 SP time-of-day SP GMT\n ; fixed length/zone/capitalization subset of the format\n ; see Section 3.3 of [RFC5322]\n\n day-name = %x4D.6F.6E ; \"Mon\", case-sensitive\n / %x54.75.65 ; \"Tue\", case-sensitive\n / %x57.65.64 ; \"Wed\", case-sensitive\n / %x54.68.75 ; \"Thu\", case-sensitive\n / %x46.72.69 ; \"Fri\", case-sensitive\n / %x53.61.74 ; \"Sat\", case-sensitive\n / %x53.75.6E ; \"Sun\", case-sensitive\n date1 = day SP month SP year\n ; e.g., 02 Jun 1982\n\n day = 2DIGIT\n month = %x4A.61.6E ; \"Jan\", case-sensitive\n / %x46.65.62 ; \"Feb\", case-sensitive\n / %x4D.61.72 ; \"Mar\", case-sensitive\n / %x41.70.72 ; \"Apr\", case-sensitive\n / %x4D.61.79 ; \"May\", case-sensitive\n / %x4A.75.6E ; \"Jun\", case-sensitive\n / %x4A.75.6C ; \"Jul\", case-sensitive\n / %x41.75.67 ; \"Aug\", case-sensitive\n / %x53.65.70 ; \"Sep\", case-sensitive\n / %x4F.63.74 ; \"Oct\", case-sensitive\n / %x4E.6F.76 ; \"Nov\", case-sensitive\n / %x44.65.63 ; \"Dec\", case-sensitive\n year = 4DIGIT\n\n GMT = %x47.4D.54 ; \"GMT\", case-sensitive\n\n time-of-day = hour \":\" minute \":\" second\n ; 00:00:00 - 23:59:60 (leap second)\n\n hour = 2DIGIT\n minute = 2DIGIT\n second = 2DIGIT\n */\nfunction toIMFDate (date) {\n if (typeof date === 'number') {\n date = new Date(date)\n }\n\n const days = [\n 'Sun', 'Mon', 'Tue', 'Wed',\n 'Thu', 'Fri', 'Sat'\n ]\n\n const months = [\n 'Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun',\n 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'\n ]\n\n const dayName = days[date.getUTCDay()]\n const day = date.getUTCDate().toString().padStart(2, '0')\n const month = months[date.getUTCMonth()]\n const year = date.getUTCFullYear()\n const hour = date.getUTCHours().toString().padStart(2, '0')\n const minute = date.getUTCMinutes().toString().padStart(2, '0')\n const second = date.getUTCSeconds().toString().padStart(2, '0')\n\n return `${dayName}, ${day} ${month} ${year} ${hour}:${minute}:${second} GMT`\n}\n\n/**\n max-age-av = \"Max-Age=\" non-zero-digit *DIGIT\n ; In practice, both expires-av and max-age-av\n ; are limited to dates representable by the\n ; user agent.\n * @param {number} maxAge\n */\nfunction validateCookieMaxAge (maxAge) {\n if (maxAge < 0) {\n throw new Error('Invalid cookie max-age')\n }\n}\n\n/**\n * @see https://www.rfc-editor.org/rfc/rfc6265#section-4.1.1\n * @param {import('./index').Cookie} cookie\n */\nfunction stringify (cookie) {\n if (cookie.name.length === 0) {\n return null\n }\n\n validateCookieName(cookie.name)\n validateCookieValue(cookie.value)\n\n const out = [`${cookie.name}=${cookie.value}`]\n\n // https://datatracker.ietf.org/doc/html/draft-ietf-httpbis-cookie-prefixes-00#section-3.1\n // https://datatracker.ietf.org/doc/html/draft-ietf-httpbis-cookie-prefixes-00#section-3.2\n if (cookie.name.startsWith('__Secure-')) {\n cookie.secure = true\n }\n\n if (cookie.name.startsWith('__Host-')) {\n cookie.secure = true\n cookie.domain = null\n cookie.path = '/'\n }\n\n if (cookie.secure) {\n out.push('Secure')\n }\n\n if (cookie.httpOnly) {\n out.push('HttpOnly')\n }\n\n if (typeof cookie.maxAge === 'number') {\n validateCookieMaxAge(cookie.maxAge)\n out.push(`Max-Age=${cookie.maxAge}`)\n }\n\n if (cookie.domain) {\n validateCookieDomain(cookie.domain)\n out.push(`Domain=${cookie.domain}`)\n }\n\n if (cookie.path) {\n validateCookiePath(cookie.path)\n out.push(`Path=${cookie.path}`)\n }\n\n if (cookie.expires && cookie.expires.toString() !== 'Invalid Date') {\n out.push(`Expires=${toIMFDate(cookie.expires)}`)\n }\n\n if (cookie.sameSite) {\n out.push(`SameSite=${cookie.sameSite}`)\n }\n\n for (const part of cookie.unparsed) {\n if (!part.includes('=')) {\n throw new Error('Invalid unparsed')\n }\n\n const [key, ...value] = part.split('=')\n\n out.push(`${key.trim()}=${value.join('=')}`)\n }\n\n return out.join('; ')\n}\n\nmodule.exports = {\n isCTLExcludingHtab,\n validateCookieName,\n validateCookiePath,\n validateCookieValue,\n toIMFDate,\n stringify\n}\n","'use strict'\n\nconst { maxNameValuePairSize, maxAttributeValueSize } = require('./constants')\nconst { isCTLExcludingHtab } = require('./util')\nconst { collectASequenceOfCodePointsFast } = require('../fetch/dataURL')\nconst assert = require('assert')\n\n/**\n * @description Parses the field-value attributes of a set-cookie header string.\n * @see https://datatracker.ietf.org/doc/html/draft-ietf-httpbis-rfc6265bis#section-5.4\n * @param {string} header\n * @returns if the header is invalid, null will be returned\n */\nfunction parseSetCookie (header) {\n // 1. If the set-cookie-string contains a %x00-08 / %x0A-1F / %x7F\n // character (CTL characters excluding HTAB): Abort these steps and\n // ignore the set-cookie-string entirely.\n if (isCTLExcludingHtab(header)) {\n return null\n }\n\n let nameValuePair = ''\n let unparsedAttributes = ''\n let name = ''\n let value = ''\n\n // 2. If the set-cookie-string contains a %x3B (\";\") character:\n if (header.includes(';')) {\n // 1. The name-value-pair string consists of the characters up to,\n // but not including, the first %x3B (\";\"), and the unparsed-\n // attributes consist of the remainder of the set-cookie-string\n // (including the %x3B (\";\") in question).\n const position = { position: 0 }\n\n nameValuePair = collectASequenceOfCodePointsFast(';', header, position)\n unparsedAttributes = header.slice(position.position)\n } else {\n // Otherwise:\n\n // 1. The name-value-pair string consists of all the characters\n // contained in the set-cookie-string, and the unparsed-\n // attributes is the empty string.\n nameValuePair = header\n }\n\n // 3. If the name-value-pair string lacks a %x3D (\"=\") character, then\n // the name string is empty, and the value string is the value of\n // name-value-pair.\n if (!nameValuePair.includes('=')) {\n value = nameValuePair\n } else {\n // Otherwise, the name string consists of the characters up to, but\n // not including, the first %x3D (\"=\") character, and the (possibly\n // empty) value string consists of the characters after the first\n // %x3D (\"=\") character.\n const position = { position: 0 }\n name = collectASequenceOfCodePointsFast(\n '=',\n nameValuePair,\n position\n )\n value = nameValuePair.slice(position.position + 1)\n }\n\n // 4. Remove any leading or trailing WSP characters from the name\n // string and the value string.\n name = name.trim()\n value = value.trim()\n\n // 5. If the sum of the lengths of the name string and the value string\n // is more than 4096 octets, abort these steps and ignore the set-\n // cookie-string entirely.\n if (name.length + value.length > maxNameValuePairSize) {\n return null\n }\n\n // 6. The cookie-name is the name string, and the cookie-value is the\n // value string.\n return {\n name, value, ...parseUnparsedAttributes(unparsedAttributes)\n }\n}\n\n/**\n * Parses the remaining attributes of a set-cookie header\n * @see https://datatracker.ietf.org/doc/html/draft-ietf-httpbis-rfc6265bis#section-5.4\n * @param {string} unparsedAttributes\n * @param {[Object.]={}} cookieAttributeList\n */\nfunction parseUnparsedAttributes (unparsedAttributes, cookieAttributeList = {}) {\n // 1. If the unparsed-attributes string is empty, skip the rest of\n // these steps.\n if (unparsedAttributes.length === 0) {\n return cookieAttributeList\n }\n\n // 2. Discard the first character of the unparsed-attributes (which\n // will be a %x3B (\";\") character).\n assert(unparsedAttributes[0] === ';')\n unparsedAttributes = unparsedAttributes.slice(1)\n\n let cookieAv = ''\n\n // 3. If the remaining unparsed-attributes contains a %x3B (\";\")\n // character:\n if (unparsedAttributes.includes(';')) {\n // 1. Consume the characters of the unparsed-attributes up to, but\n // not including, the first %x3B (\";\") character.\n cookieAv = collectASequenceOfCodePointsFast(\n ';',\n unparsedAttributes,\n { position: 0 }\n )\n unparsedAttributes = unparsedAttributes.slice(cookieAv.length)\n } else {\n // Otherwise:\n\n // 1. Consume the remainder of the unparsed-attributes.\n cookieAv = unparsedAttributes\n unparsedAttributes = ''\n }\n\n // Let the cookie-av string be the characters consumed in this step.\n\n let attributeName = ''\n let attributeValue = ''\n\n // 4. If the cookie-av string contains a %x3D (\"=\") character:\n if (cookieAv.includes('=')) {\n // 1. The (possibly empty) attribute-name string consists of the\n // characters up to, but not including, the first %x3D (\"=\")\n // character, and the (possibly empty) attribute-value string\n // consists of the characters after the first %x3D (\"=\")\n // character.\n const position = { position: 0 }\n\n attributeName = collectASequenceOfCodePointsFast(\n '=',\n cookieAv,\n position\n )\n attributeValue = cookieAv.slice(position.position + 1)\n } else {\n // Otherwise:\n\n // 1. The attribute-name string consists of the entire cookie-av\n // string, and the attribute-value string is empty.\n attributeName = cookieAv\n }\n\n // 5. Remove any leading or trailing WSP characters from the attribute-\n // name string and the attribute-value string.\n attributeName = attributeName.trim()\n attributeValue = attributeValue.trim()\n\n // 6. If the attribute-value is longer than 1024 octets, ignore the\n // cookie-av string and return to Step 1 of this algorithm.\n if (attributeValue.length > maxAttributeValueSize) {\n return parseUnparsedAttributes(unparsedAttributes, cookieAttributeList)\n }\n\n // 7. Process the attribute-name and attribute-value according to the\n // requirements in the following subsections. (Notice that\n // attributes with unrecognized attribute-names are ignored.)\n const attributeNameLowercase = attributeName.toLowerCase()\n\n // https://datatracker.ietf.org/doc/html/draft-ietf-httpbis-rfc6265bis#section-5.4.1\n // If the attribute-name case-insensitively matches the string\n // \"Expires\", the user agent MUST process the cookie-av as follows.\n if (attributeNameLowercase === 'expires') {\n // 1. Let the expiry-time be the result of parsing the attribute-value\n // as cookie-date (see Section 5.1.1).\n const expiryTime = new Date(attributeValue)\n\n // 2. If the attribute-value failed to parse as a cookie date, ignore\n // the cookie-av.\n\n cookieAttributeList.expires = expiryTime\n } else if (attributeNameLowercase === 'max-age') {\n // https://datatracker.ietf.org/doc/html/draft-ietf-httpbis-rfc6265bis#section-5.4.2\n // If the attribute-name case-insensitively matches the string \"Max-\n // Age\", the user agent MUST process the cookie-av as follows.\n\n // 1. If the first character of the attribute-value is not a DIGIT or a\n // \"-\" character, ignore the cookie-av.\n const charCode = attributeValue.charCodeAt(0)\n\n if ((charCode < 48 || charCode > 57) && attributeValue[0] !== '-') {\n return parseUnparsedAttributes(unparsedAttributes, cookieAttributeList)\n }\n\n // 2. If the remainder of attribute-value contains a non-DIGIT\n // character, ignore the cookie-av.\n if (!/^\\d+$/.test(attributeValue)) {\n return parseUnparsedAttributes(unparsedAttributes, cookieAttributeList)\n }\n\n // 3. Let delta-seconds be the attribute-value converted to an integer.\n const deltaSeconds = Number(attributeValue)\n\n // 4. Let cookie-age-limit be the maximum age of the cookie (which\n // SHOULD be 400 days or less, see Section 4.1.2.2).\n\n // 5. Set delta-seconds to the smaller of its present value and cookie-\n // age-limit.\n // deltaSeconds = Math.min(deltaSeconds * 1000, maxExpiresMs)\n\n // 6. If delta-seconds is less than or equal to zero (0), let expiry-\n // time be the earliest representable date and time. Otherwise, let\n // the expiry-time be the current date and time plus delta-seconds\n // seconds.\n // const expiryTime = deltaSeconds <= 0 ? Date.now() : Date.now() + deltaSeconds\n\n // 7. Append an attribute to the cookie-attribute-list with an\n // attribute-name of Max-Age and an attribute-value of expiry-time.\n cookieAttributeList.maxAge = deltaSeconds\n } else if (attributeNameLowercase === 'domain') {\n // https://datatracker.ietf.org/doc/html/draft-ietf-httpbis-rfc6265bis#section-5.4.3\n // If the attribute-name case-insensitively matches the string \"Domain\",\n // the user agent MUST process the cookie-av as follows.\n\n // 1. Let cookie-domain be the attribute-value.\n let cookieDomain = attributeValue\n\n // 2. If cookie-domain starts with %x2E (\".\"), let cookie-domain be\n // cookie-domain without its leading %x2E (\".\").\n if (cookieDomain[0] === '.') {\n cookieDomain = cookieDomain.slice(1)\n }\n\n // 3. Convert the cookie-domain to lower case.\n cookieDomain = cookieDomain.toLowerCase()\n\n // 4. Append an attribute to the cookie-attribute-list with an\n // attribute-name of Domain and an attribute-value of cookie-domain.\n cookieAttributeList.domain = cookieDomain\n } else if (attributeNameLowercase === 'path') {\n // https://datatracker.ietf.org/doc/html/draft-ietf-httpbis-rfc6265bis#section-5.4.4\n // If the attribute-name case-insensitively matches the string \"Path\",\n // the user agent MUST process the cookie-av as follows.\n\n // 1. If the attribute-value is empty or if the first character of the\n // attribute-value is not %x2F (\"/\"):\n let cookiePath = ''\n if (attributeValue.length === 0 || attributeValue[0] !== '/') {\n // 1. Let cookie-path be the default-path.\n cookiePath = '/'\n } else {\n // Otherwise:\n\n // 1. Let cookie-path be the attribute-value.\n cookiePath = attributeValue\n }\n\n // 2. Append an attribute to the cookie-attribute-list with an\n // attribute-name of Path and an attribute-value of cookie-path.\n cookieAttributeList.path = cookiePath\n } else if (attributeNameLowercase === 'secure') {\n // https://datatracker.ietf.org/doc/html/draft-ietf-httpbis-rfc6265bis#section-5.4.5\n // If the attribute-name case-insensitively matches the string \"Secure\",\n // the user agent MUST append an attribute to the cookie-attribute-list\n // with an attribute-name of Secure and an empty attribute-value.\n\n cookieAttributeList.secure = true\n } else if (attributeNameLowercase === 'httponly') {\n // https://datatracker.ietf.org/doc/html/draft-ietf-httpbis-rfc6265bis#section-5.4.6\n // If the attribute-name case-insensitively matches the string\n // \"HttpOnly\", the user agent MUST append an attribute to the cookie-\n // attribute-list with an attribute-name of HttpOnly and an empty\n // attribute-value.\n\n cookieAttributeList.httpOnly = true\n } else if (attributeNameLowercase === 'samesite') {\n // https://datatracker.ietf.org/doc/html/draft-ietf-httpbis-rfc6265bis#section-5.4.7\n // If the attribute-name case-insensitively matches the string\n // \"SameSite\", the user agent MUST process the cookie-av as follows:\n\n // 1. Let enforcement be \"Default\".\n let enforcement = 'Default'\n\n const attributeValueLowercase = attributeValue.toLowerCase()\n // 2. If cookie-av's attribute-value is a case-insensitive match for\n // \"None\", set enforcement to \"None\".\n if (attributeValueLowercase.includes('none')) {\n enforcement = 'None'\n }\n\n // 3. If cookie-av's attribute-value is a case-insensitive match for\n // \"Strict\", set enforcement to \"Strict\".\n if (attributeValueLowercase.includes('strict')) {\n enforcement = 'Strict'\n }\n\n // 4. If cookie-av's attribute-value is a case-insensitive match for\n // \"Lax\", set enforcement to \"Lax\".\n if (attributeValueLowercase.includes('lax')) {\n enforcement = 'Lax'\n }\n\n // 5. Append an attribute to the cookie-attribute-list with an\n // attribute-name of \"SameSite\" and an attribute-value of\n // enforcement.\n cookieAttributeList.sameSite = enforcement\n } else {\n cookieAttributeList.unparsed ??= []\n\n cookieAttributeList.unparsed.push(`${attributeName}=${attributeValue}`)\n }\n\n // 8. Return to Step 1 of this algorithm.\n return parseUnparsedAttributes(unparsedAttributes, cookieAttributeList)\n}\n\nmodule.exports = {\n parseSetCookie,\n parseUnparsedAttributes\n}\n","'use strict'\n\nconst { parseSetCookie } = require('./parse')\nconst { stringify } = require('./util')\nconst { webidl } = require('../fetch/webidl')\nconst { Headers } = require('../fetch/headers')\n\n/**\n * @typedef {Object} Cookie\n * @property {string} name\n * @property {string} value\n * @property {Date|number|undefined} expires\n * @property {number|undefined} maxAge\n * @property {string|undefined} domain\n * @property {string|undefined} path\n * @property {boolean|undefined} secure\n * @property {boolean|undefined} httpOnly\n * @property {'Strict'|'Lax'|'None'} sameSite\n * @property {string[]} unparsed\n */\n\n/**\n * @param {Headers} headers\n * @returns {Record}\n */\nfunction getCookies (headers) {\n webidl.argumentLengthCheck(arguments, 1, { header: 'getCookies' })\n\n webidl.brandCheck(headers, Headers, { strict: false })\n\n const cookie = headers.get('cookie')\n const out = {}\n\n if (!cookie) {\n return out\n }\n\n for (const piece of cookie.split(';')) {\n const [name, ...value] = piece.split('=')\n\n out[name.trim()] = value.join('=')\n }\n\n return out\n}\n\n/**\n * @param {Headers} headers\n * @param {string} name\n * @param {{ path?: string, domain?: string }|undefined} attributes\n * @returns {void}\n */\nfunction deleteCookie (headers, name, attributes) {\n webidl.argumentLengthCheck(arguments, 2, { header: 'deleteCookie' })\n\n webidl.brandCheck(headers, Headers, { strict: false })\n\n name = webidl.converters.DOMString(name)\n attributes = webidl.converters.DeleteCookieAttributes(attributes)\n\n // Matches behavior of\n // https://github.com/denoland/deno_std/blob/63827b16330b82489a04614027c33b7904e08be5/http/cookie.ts#L278\n setCookie(headers, {\n name,\n value: '',\n expires: new Date(0),\n ...attributes\n })\n}\n\n/**\n * @param {Headers} headers\n * @returns {Cookie[]}\n */\nfunction getSetCookies (headers) {\n webidl.argumentLengthCheck(arguments, 1, { header: 'getSetCookies' })\n\n webidl.brandCheck(headers, Headers, { strict: false })\n\n const cookies = headers.getSetCookie()\n\n if (!cookies) {\n return []\n }\n\n return cookies.map((pair) => parseSetCookie(pair))\n}\n\n/**\n * @param {Headers} headers\n * @param {Cookie} cookie\n * @returns {void}\n */\nfunction setCookie (headers, cookie) {\n webidl.argumentLengthCheck(arguments, 2, { header: 'setCookie' })\n\n webidl.brandCheck(headers, Headers, { strict: false })\n\n cookie = webidl.converters.Cookie(cookie)\n\n const str = stringify(cookie)\n\n if (str) {\n headers.append('Set-Cookie', stringify(cookie))\n }\n}\n\nwebidl.converters.DeleteCookieAttributes = webidl.dictionaryConverter([\n {\n converter: webidl.nullableConverter(webidl.converters.DOMString),\n key: 'path',\n defaultValue: null\n },\n {\n converter: webidl.nullableConverter(webidl.converters.DOMString),\n key: 'domain',\n defaultValue: null\n }\n])\n\nwebidl.converters.Cookie = webidl.dictionaryConverter([\n {\n converter: webidl.converters.DOMString,\n key: 'name'\n },\n {\n converter: webidl.converters.DOMString,\n key: 'value'\n },\n {\n converter: webidl.nullableConverter((value) => {\n if (typeof value === 'number') {\n return webidl.converters['unsigned long long'](value)\n }\n\n return new Date(value)\n }),\n key: 'expires',\n defaultValue: null\n },\n {\n converter: webidl.nullableConverter(webidl.converters['long long']),\n key: 'maxAge',\n defaultValue: null\n },\n {\n converter: webidl.nullableConverter(webidl.converters.DOMString),\n key: 'domain',\n defaultValue: null\n },\n {\n converter: webidl.nullableConverter(webidl.converters.DOMString),\n key: 'path',\n defaultValue: null\n },\n {\n converter: webidl.nullableConverter(webidl.converters.boolean),\n key: 'secure',\n defaultValue: null\n },\n {\n converter: webidl.nullableConverter(webidl.converters.boolean),\n key: 'httpOnly',\n defaultValue: null\n },\n {\n converter: webidl.converters.USVString,\n key: 'sameSite',\n allowedValues: ['Strict', 'Lax', 'None']\n },\n {\n converter: webidl.sequenceConverter(webidl.converters.DOMString),\n key: 'unparsed',\n defaultValue: []\n }\n])\n\nmodule.exports = {\n getCookies,\n deleteCookie,\n getSetCookies,\n setCookie\n}\n","'use strict'\n\n// This is a Globally Unique Identifier unique used\n// to validate that the endpoint accepts websocket\n// connections.\n// See https://www.rfc-editor.org/rfc/rfc6455.html#section-1.3\nconst uid = '258EAFA5-E914-47DA-95CA-C5AB0DC85B11'\n\n/** @type {PropertyDescriptor} */\nconst staticPropertyDescriptors = {\n enumerable: true,\n writable: false,\n configurable: false\n}\n\nconst states = {\n CONNECTING: 0,\n OPEN: 1,\n CLOSING: 2,\n CLOSED: 3\n}\n\nconst opcodes = {\n CONTINUATION: 0x0,\n TEXT: 0x1,\n BINARY: 0x2,\n CLOSE: 0x8,\n PING: 0x9,\n PONG: 0xA\n}\n\nconst maxUnsigned16Bit = 2 ** 16 - 1 // 65535\n\nconst parserStates = {\n INFO: 0,\n PAYLOADLENGTH_16: 2,\n PAYLOADLENGTH_64: 3,\n READ_DATA: 4\n}\n\nconst emptyBuffer = Buffer.allocUnsafe(0)\n\nmodule.exports = {\n uid,\n staticPropertyDescriptors,\n states,\n opcodes,\n maxUnsigned16Bit,\n parserStates,\n emptyBuffer\n}\n","'use strict'\n\nmodule.exports = {\n kWebSocketURL: Symbol('url'),\n kReadyState: Symbol('ready state'),\n kController: Symbol('controller'),\n kResponse: Symbol('response'),\n kBinaryType: Symbol('binary type'),\n kSentClose: Symbol('sent close'),\n kReceivedClose: Symbol('received close'),\n kByteParser: Symbol('byte parser')\n}\n","'use strict'\n\nconst { webidl } = require('../fetch/webidl')\nconst { kEnumerableProperty } = require('../core/util')\nconst { MessagePort } = require('worker_threads')\n\n/**\n * @see https://html.spec.whatwg.org/multipage/comms.html#messageevent\n */\nclass MessageEvent extends Event {\n #eventInit\n\n constructor (type, eventInitDict = {}) {\n webidl.argumentLengthCheck(arguments, 1, { header: 'MessageEvent constructor' })\n\n type = webidl.converters.DOMString(type)\n eventInitDict = webidl.converters.MessageEventInit(eventInitDict)\n\n super(type, eventInitDict)\n\n this.#eventInit = eventInitDict\n }\n\n get data () {\n webidl.brandCheck(this, MessageEvent)\n\n return this.#eventInit.data\n }\n\n get origin () {\n webidl.brandCheck(this, MessageEvent)\n\n return this.#eventInit.origin\n }\n\n get lastEventId () {\n webidl.brandCheck(this, MessageEvent)\n\n return this.#eventInit.lastEventId\n }\n\n get source () {\n webidl.brandCheck(this, MessageEvent)\n\n return this.#eventInit.source\n }\n\n get ports () {\n webidl.brandCheck(this, MessageEvent)\n\n if (!Object.isFrozen(this.#eventInit.ports)) {\n Object.freeze(this.#eventInit.ports)\n }\n\n return this.#eventInit.ports\n }\n\n initMessageEvent (\n type,\n bubbles = false,\n cancelable = false,\n data = null,\n origin = '',\n lastEventId = '',\n source = null,\n ports = []\n ) {\n webidl.brandCheck(this, MessageEvent)\n\n webidl.argumentLengthCheck(arguments, 1, { header: 'MessageEvent.initMessageEvent' })\n\n return new MessageEvent(type, {\n bubbles, cancelable, data, origin, lastEventId, source, ports\n })\n }\n}\n\n/**\n * @see https://websockets.spec.whatwg.org/#the-closeevent-interface\n */\nclass CloseEvent extends Event {\n #eventInit\n\n constructor (type, eventInitDict = {}) {\n webidl.argumentLengthCheck(arguments, 1, { header: 'CloseEvent constructor' })\n\n type = webidl.converters.DOMString(type)\n eventInitDict = webidl.converters.CloseEventInit(eventInitDict)\n\n super(type, eventInitDict)\n\n this.#eventInit = eventInitDict\n }\n\n get wasClean () {\n webidl.brandCheck(this, CloseEvent)\n\n return this.#eventInit.wasClean\n }\n\n get code () {\n webidl.brandCheck(this, CloseEvent)\n\n return this.#eventInit.code\n }\n\n get reason () {\n webidl.brandCheck(this, CloseEvent)\n\n return this.#eventInit.reason\n }\n}\n\n// https://html.spec.whatwg.org/multipage/webappapis.html#the-errorevent-interface\nclass ErrorEvent extends Event {\n #eventInit\n\n constructor (type, eventInitDict) {\n webidl.argumentLengthCheck(arguments, 1, { header: 'ErrorEvent constructor' })\n\n super(type, eventInitDict)\n\n type = webidl.converters.DOMString(type)\n eventInitDict = webidl.converters.ErrorEventInit(eventInitDict ?? {})\n\n this.#eventInit = eventInitDict\n }\n\n get message () {\n webidl.brandCheck(this, ErrorEvent)\n\n return this.#eventInit.message\n }\n\n get filename () {\n webidl.brandCheck(this, ErrorEvent)\n\n return this.#eventInit.filename\n }\n\n get lineno () {\n webidl.brandCheck(this, ErrorEvent)\n\n return this.#eventInit.lineno\n }\n\n get colno () {\n webidl.brandCheck(this, ErrorEvent)\n\n return this.#eventInit.colno\n }\n\n get error () {\n webidl.brandCheck(this, ErrorEvent)\n\n return this.#eventInit.error\n }\n}\n\nObject.defineProperties(MessageEvent.prototype, {\n [Symbol.toStringTag]: {\n value: 'MessageEvent',\n configurable: true\n },\n data: kEnumerableProperty,\n origin: kEnumerableProperty,\n lastEventId: kEnumerableProperty,\n source: kEnumerableProperty,\n ports: kEnumerableProperty,\n initMessageEvent: kEnumerableProperty\n})\n\nObject.defineProperties(CloseEvent.prototype, {\n [Symbol.toStringTag]: {\n value: 'CloseEvent',\n configurable: true\n },\n reason: kEnumerableProperty,\n code: kEnumerableProperty,\n wasClean: kEnumerableProperty\n})\n\nObject.defineProperties(ErrorEvent.prototype, {\n [Symbol.toStringTag]: {\n value: 'ErrorEvent',\n configurable: true\n },\n message: kEnumerableProperty,\n filename: kEnumerableProperty,\n lineno: kEnumerableProperty,\n colno: kEnumerableProperty,\n error: kEnumerableProperty\n})\n\nwebidl.converters.MessagePort = webidl.interfaceConverter(MessagePort)\n\nwebidl.converters['sequence'] = webidl.sequenceConverter(\n webidl.converters.MessagePort\n)\n\nconst eventInit = [\n {\n key: 'bubbles',\n converter: webidl.converters.boolean,\n defaultValue: false\n },\n {\n key: 'cancelable',\n converter: webidl.converters.boolean,\n defaultValue: false\n },\n {\n key: 'composed',\n converter: webidl.converters.boolean,\n defaultValue: false\n }\n]\n\nwebidl.converters.MessageEventInit = webidl.dictionaryConverter([\n ...eventInit,\n {\n key: 'data',\n converter: webidl.converters.any,\n defaultValue: null\n },\n {\n key: 'origin',\n converter: webidl.converters.USVString,\n defaultValue: ''\n },\n {\n key: 'lastEventId',\n converter: webidl.converters.DOMString,\n defaultValue: ''\n },\n {\n key: 'source',\n // Node doesn't implement WindowProxy or ServiceWorker, so the only\n // valid value for source is a MessagePort.\n converter: webidl.nullableConverter(webidl.converters.MessagePort),\n defaultValue: null\n },\n {\n key: 'ports',\n converter: webidl.converters['sequence'],\n get defaultValue () {\n return []\n }\n }\n])\n\nwebidl.converters.CloseEventInit = webidl.dictionaryConverter([\n ...eventInit,\n {\n key: 'wasClean',\n converter: webidl.converters.boolean,\n defaultValue: false\n },\n {\n key: 'code',\n converter: webidl.converters['unsigned short'],\n defaultValue: 0\n },\n {\n key: 'reason',\n converter: webidl.converters.USVString,\n defaultValue: ''\n }\n])\n\nwebidl.converters.ErrorEventInit = webidl.dictionaryConverter([\n ...eventInit,\n {\n key: 'message',\n converter: webidl.converters.DOMString,\n defaultValue: ''\n },\n {\n key: 'filename',\n converter: webidl.converters.USVString,\n defaultValue: ''\n },\n {\n key: 'lineno',\n converter: webidl.converters['unsigned long'],\n defaultValue: 0\n },\n {\n key: 'colno',\n converter: webidl.converters['unsigned long'],\n defaultValue: 0\n },\n {\n key: 'error',\n converter: webidl.converters.any\n }\n])\n\nmodule.exports = {\n MessageEvent,\n CloseEvent,\n ErrorEvent\n}\n","'use strict'\n\nconst { kReadyState, kController, kResponse, kBinaryType, kWebSocketURL } = require('./symbols')\nconst { states, opcodes } = require('./constants')\nconst { MessageEvent, ErrorEvent } = require('./events')\n\n/* globals Blob */\n\n/**\n * @param {import('./websocket').WebSocket} ws\n */\nfunction isEstablished (ws) {\n // If the server's response is validated as provided for above, it is\n // said that _The WebSocket Connection is Established_ and that the\n // WebSocket Connection is in the OPEN state.\n return ws[kReadyState] === states.OPEN\n}\n\n/**\n * @param {import('./websocket').WebSocket} ws\n */\nfunction isClosing (ws) {\n // Upon either sending or receiving a Close control frame, it is said\n // that _The WebSocket Closing Handshake is Started_ and that the\n // WebSocket connection is in the CLOSING state.\n return ws[kReadyState] === states.CLOSING\n}\n\n/**\n * @param {import('./websocket').WebSocket} ws\n */\nfunction isClosed (ws) {\n return ws[kReadyState] === states.CLOSED\n}\n\n/**\n * @see https://dom.spec.whatwg.org/#concept-event-fire\n * @param {string} e\n * @param {EventTarget} target\n * @param {EventInit | undefined} eventInitDict\n */\nfunction fireEvent (e, target, eventConstructor = Event, eventInitDict) {\n // 1. If eventConstructor is not given, then let eventConstructor be Event.\n\n // 2. Let event be the result of creating an event given eventConstructor,\n // in the relevant realm of target.\n // 3. Initialize event’s type attribute to e.\n const event = new eventConstructor(e, eventInitDict) // eslint-disable-line new-cap\n\n // 4. Initialize any other IDL attributes of event as described in the\n // invocation of this algorithm.\n\n // 5. Return the result of dispatching event at target, with legacy target\n // override flag set if set.\n target.dispatchEvent(event)\n}\n\n/**\n * @see https://websockets.spec.whatwg.org/#feedback-from-the-protocol\n * @param {import('./websocket').WebSocket} ws\n * @param {number} type Opcode\n * @param {Buffer} data application data\n */\nfunction websocketMessageReceived (ws, type, data) {\n // 1. If ready state is not OPEN (1), then return.\n if (ws[kReadyState] !== states.OPEN) {\n return\n }\n\n // 2. Let dataForEvent be determined by switching on type and binary type:\n let dataForEvent\n\n if (type === opcodes.TEXT) {\n // -> type indicates that the data is Text\n // a new DOMString containing data\n try {\n dataForEvent = new TextDecoder('utf-8', { fatal: true }).decode(data)\n } catch {\n failWebsocketConnection(ws, 'Received invalid UTF-8 in text frame.')\n return\n }\n } else if (type === opcodes.BINARY) {\n if (ws[kBinaryType] === 'blob') {\n // -> type indicates that the data is Binary and binary type is \"blob\"\n // a new Blob object, created in the relevant Realm of the WebSocket\n // object, that represents data as its raw data\n dataForEvent = new Blob([data])\n } else {\n // -> type indicates that the data is Binary and binary type is \"arraybuffer\"\n // a new ArrayBuffer object, created in the relevant Realm of the\n // WebSocket object, whose contents are data\n dataForEvent = new Uint8Array(data).buffer\n }\n }\n\n // 3. Fire an event named message at the WebSocket object, using MessageEvent,\n // with the origin attribute initialized to the serialization of the WebSocket\n // object’s url's origin, and the data attribute initialized to dataForEvent.\n fireEvent('message', ws, MessageEvent, {\n origin: ws[kWebSocketURL].origin,\n data: dataForEvent\n })\n}\n\n/**\n * @see https://datatracker.ietf.org/doc/html/rfc6455\n * @see https://datatracker.ietf.org/doc/html/rfc2616\n * @see https://bugs.chromium.org/p/chromium/issues/detail?id=398407\n * @param {string} protocol\n */\nfunction isValidSubprotocol (protocol) {\n // If present, this value indicates one\n // or more comma-separated subprotocol the client wishes to speak,\n // ordered by preference. The elements that comprise this value\n // MUST be non-empty strings with characters in the range U+0021 to\n // U+007E not including separator characters as defined in\n // [RFC2616] and MUST all be unique strings.\n if (protocol.length === 0) {\n return false\n }\n\n for (const char of protocol) {\n const code = char.charCodeAt(0)\n\n if (\n code < 0x21 ||\n code > 0x7E ||\n char === '(' ||\n char === ')' ||\n char === '<' ||\n char === '>' ||\n char === '@' ||\n char === ',' ||\n char === ';' ||\n char === ':' ||\n char === '\\\\' ||\n char === '\"' ||\n char === '/' ||\n char === '[' ||\n char === ']' ||\n char === '?' ||\n char === '=' ||\n char === '{' ||\n char === '}' ||\n code === 32 || // SP\n code === 9 // HT\n ) {\n return false\n }\n }\n\n return true\n}\n\n/**\n * @see https://datatracker.ietf.org/doc/html/rfc6455#section-7-4\n * @param {number} code\n */\nfunction isValidStatusCode (code) {\n if (code >= 1000 && code < 1015) {\n return (\n code !== 1004 && // reserved\n code !== 1005 && // \"MUST NOT be set as a status code\"\n code !== 1006 // \"MUST NOT be set as a status code\"\n )\n }\n\n return code >= 3000 && code <= 4999\n}\n\n/**\n * @param {import('./websocket').WebSocket} ws\n * @param {string|undefined} reason\n */\nfunction failWebsocketConnection (ws, reason) {\n const { [kController]: controller, [kResponse]: response } = ws\n\n controller.abort()\n\n if (response?.socket && !response.socket.destroyed) {\n response.socket.destroy()\n }\n\n if (reason) {\n fireEvent('error', ws, ErrorEvent, {\n error: new Error(reason)\n })\n }\n}\n\nmodule.exports = {\n isEstablished,\n isClosing,\n isClosed,\n fireEvent,\n isValidSubprotocol,\n isValidStatusCode,\n failWebsocketConnection,\n websocketMessageReceived\n}\n","'use strict'\n\nconst diagnosticsChannel = require('diagnostics_channel')\nconst { uid, states } = require('./constants')\nconst {\n kReadyState,\n kSentClose,\n kByteParser,\n kReceivedClose\n} = require('./symbols')\nconst { fireEvent, failWebsocketConnection } = require('./util')\nconst { CloseEvent } = require('./events')\nconst { makeRequest } = require('../fetch/request')\nconst { fetching } = require('../fetch/index')\nconst { Headers } = require('../fetch/headers')\nconst { getGlobalDispatcher } = require('../global')\nconst { kHeadersList } = require('../core/symbols')\n\nconst channels = {}\nchannels.open = diagnosticsChannel.channel('undici:websocket:open')\nchannels.close = diagnosticsChannel.channel('undici:websocket:close')\nchannels.socketError = diagnosticsChannel.channel('undici:websocket:socket_error')\n\n/** @type {import('crypto')} */\nlet crypto\ntry {\n crypto = require('crypto')\n} catch {\n\n}\n\n/**\n * @see https://websockets.spec.whatwg.org/#concept-websocket-establish\n * @param {URL} url\n * @param {string|string[]} protocols\n * @param {import('./websocket').WebSocket} ws\n * @param {(response: any) => void} onEstablish\n * @param {Partial} options\n */\nfunction establishWebSocketConnection (url, protocols, ws, onEstablish, options) {\n // 1. Let requestURL be a copy of url, with its scheme set to \"http\", if url’s\n // scheme is \"ws\", and to \"https\" otherwise.\n const requestURL = url\n\n requestURL.protocol = url.protocol === 'ws:' ? 'http:' : 'https:'\n\n // 2. Let request be a new request, whose URL is requestURL, client is client,\n // service-workers mode is \"none\", referrer is \"no-referrer\", mode is\n // \"websocket\", credentials mode is \"include\", cache mode is \"no-store\" ,\n // and redirect mode is \"error\".\n const request = makeRequest({\n urlList: [requestURL],\n serviceWorkers: 'none',\n referrer: 'no-referrer',\n mode: 'websocket',\n credentials: 'include',\n cache: 'no-store',\n redirect: 'error'\n })\n\n // Note: undici extension, allow setting custom headers.\n if (options.headers) {\n const headersList = new Headers(options.headers)[kHeadersList]\n\n request.headersList = headersList\n }\n\n // 3. Append (`Upgrade`, `websocket`) to request’s header list.\n // 4. Append (`Connection`, `Upgrade`) to request’s header list.\n // Note: both of these are handled by undici currently.\n // https://github.com/nodejs/undici/blob/68c269c4144c446f3f1220951338daef4a6b5ec4/lib/client.js#L1397\n\n // 5. Let keyValue be a nonce consisting of a randomly selected\n // 16-byte value that has been forgiving-base64-encoded and\n // isomorphic encoded.\n const keyValue = crypto.randomBytes(16).toString('base64')\n\n // 6. Append (`Sec-WebSocket-Key`, keyValue) to request’s\n // header list.\n request.headersList.append('sec-websocket-key', keyValue)\n\n // 7. Append (`Sec-WebSocket-Version`, `13`) to request’s\n // header list.\n request.headersList.append('sec-websocket-version', '13')\n\n // 8. For each protocol in protocols, combine\n // (`Sec-WebSocket-Protocol`, protocol) in request’s header\n // list.\n for (const protocol of protocols) {\n request.headersList.append('sec-websocket-protocol', protocol)\n }\n\n // 9. Let permessageDeflate be a user-agent defined\n // \"permessage-deflate\" extension header value.\n // https://github.com/mozilla/gecko-dev/blob/ce78234f5e653a5d3916813ff990f053510227bc/netwerk/protocol/websocket/WebSocketChannel.cpp#L2673\n // TODO: enable once permessage-deflate is supported\n const permessageDeflate = '' // 'permessage-deflate; 15'\n\n // 10. Append (`Sec-WebSocket-Extensions`, permessageDeflate) to\n // request’s header list.\n // request.headersList.append('sec-websocket-extensions', permessageDeflate)\n\n // 11. Fetch request with useParallelQueue set to true, and\n // processResponse given response being these steps:\n const controller = fetching({\n request,\n useParallelQueue: true,\n dispatcher: options.dispatcher ?? getGlobalDispatcher(),\n processResponse (response) {\n // 1. If response is a network error or its status is not 101,\n // fail the WebSocket connection.\n if (response.type === 'error' || response.status !== 101) {\n failWebsocketConnection(ws, 'Received network error or non-101 status code.')\n return\n }\n\n // 2. If protocols is not the empty list and extracting header\n // list values given `Sec-WebSocket-Protocol` and response’s\n // header list results in null, failure, or the empty byte\n // sequence, then fail the WebSocket connection.\n if (protocols.length !== 0 && !response.headersList.get('Sec-WebSocket-Protocol')) {\n failWebsocketConnection(ws, 'Server did not respond with sent protocols.')\n return\n }\n\n // 3. Follow the requirements stated step 2 to step 6, inclusive,\n // of the last set of steps in section 4.1 of The WebSocket\n // Protocol to validate response. This either results in fail\n // the WebSocket connection or the WebSocket connection is\n // established.\n\n // 2. If the response lacks an |Upgrade| header field or the |Upgrade|\n // header field contains a value that is not an ASCII case-\n // insensitive match for the value \"websocket\", the client MUST\n // _Fail the WebSocket Connection_.\n if (response.headersList.get('Upgrade')?.toLowerCase() !== 'websocket') {\n failWebsocketConnection(ws, 'Server did not set Upgrade header to \"websocket\".')\n return\n }\n\n // 3. If the response lacks a |Connection| header field or the\n // |Connection| header field doesn't contain a token that is an\n // ASCII case-insensitive match for the value \"Upgrade\", the client\n // MUST _Fail the WebSocket Connection_.\n if (response.headersList.get('Connection')?.toLowerCase() !== 'upgrade') {\n failWebsocketConnection(ws, 'Server did not set Connection header to \"upgrade\".')\n return\n }\n\n // 4. If the response lacks a |Sec-WebSocket-Accept| header field or\n // the |Sec-WebSocket-Accept| contains a value other than the\n // base64-encoded SHA-1 of the concatenation of the |Sec-WebSocket-\n // Key| (as a string, not base64-decoded) with the string \"258EAFA5-\n // E914-47DA-95CA-C5AB0DC85B11\" but ignoring any leading and\n // trailing whitespace, the client MUST _Fail the WebSocket\n // Connection_.\n const secWSAccept = response.headersList.get('Sec-WebSocket-Accept')\n const digest = crypto.createHash('sha1').update(keyValue + uid).digest('base64')\n if (secWSAccept !== digest) {\n failWebsocketConnection(ws, 'Incorrect hash received in Sec-WebSocket-Accept header.')\n return\n }\n\n // 5. If the response includes a |Sec-WebSocket-Extensions| header\n // field and this header field indicates the use of an extension\n // that was not present in the client's handshake (the server has\n // indicated an extension not requested by the client), the client\n // MUST _Fail the WebSocket Connection_. (The parsing of this\n // header field to determine which extensions are requested is\n // discussed in Section 9.1.)\n const secExtension = response.headersList.get('Sec-WebSocket-Extensions')\n\n if (secExtension !== null && secExtension !== permessageDeflate) {\n failWebsocketConnection(ws, 'Received different permessage-deflate than the one set.')\n return\n }\n\n // 6. If the response includes a |Sec-WebSocket-Protocol| header field\n // and this header field indicates the use of a subprotocol that was\n // not present in the client's handshake (the server has indicated a\n // subprotocol not requested by the client), the client MUST _Fail\n // the WebSocket Connection_.\n const secProtocol = response.headersList.get('Sec-WebSocket-Protocol')\n\n if (secProtocol !== null && secProtocol !== request.headersList.get('Sec-WebSocket-Protocol')) {\n failWebsocketConnection(ws, 'Protocol was not set in the opening handshake.')\n return\n }\n\n response.socket.on('data', onSocketData)\n response.socket.on('close', onSocketClose)\n response.socket.on('error', onSocketError)\n\n if (channels.open.hasSubscribers) {\n channels.open.publish({\n address: response.socket.address(),\n protocol: secProtocol,\n extensions: secExtension\n })\n }\n\n onEstablish(response)\n }\n })\n\n return controller\n}\n\n/**\n * @param {Buffer} chunk\n */\nfunction onSocketData (chunk) {\n if (!this.ws[kByteParser].write(chunk)) {\n this.pause()\n }\n}\n\n/**\n * @see https://websockets.spec.whatwg.org/#feedback-from-the-protocol\n * @see https://datatracker.ietf.org/doc/html/rfc6455#section-7.1.4\n */\nfunction onSocketClose () {\n const { ws } = this\n\n // If the TCP connection was closed after the\n // WebSocket closing handshake was completed, the WebSocket connection\n // is said to have been closed _cleanly_.\n const wasClean = ws[kSentClose] && ws[kReceivedClose]\n\n let code = 1005\n let reason = ''\n\n const result = ws[kByteParser].closingInfo\n\n if (result) {\n code = result.code ?? 1005\n reason = result.reason\n } else if (!ws[kSentClose]) {\n // If _The WebSocket\n // Connection is Closed_ and no Close control frame was received by the\n // endpoint (such as could occur if the underlying transport connection\n // is lost), _The WebSocket Connection Close Code_ is considered to be\n // 1006.\n code = 1006\n }\n\n // 1. Change the ready state to CLOSED (3).\n ws[kReadyState] = states.CLOSED\n\n // 2. If the user agent was required to fail the WebSocket\n // connection, or if the WebSocket connection was closed\n // after being flagged as full, fire an event named error\n // at the WebSocket object.\n // TODO\n\n // 3. Fire an event named close at the WebSocket object,\n // using CloseEvent, with the wasClean attribute\n // initialized to true if the connection closed cleanly\n // and false otherwise, the code attribute initialized to\n // the WebSocket connection close code, and the reason\n // attribute initialized to the result of applying UTF-8\n // decode without BOM to the WebSocket connection close\n // reason.\n fireEvent('close', ws, CloseEvent, {\n wasClean, code, reason\n })\n\n if (channels.close.hasSubscribers) {\n channels.close.publish({\n websocket: ws,\n code,\n reason\n })\n }\n}\n\nfunction onSocketError (error) {\n const { ws } = this\n\n ws[kReadyState] = states.CLOSING\n\n if (channels.socketError.hasSubscribers) {\n channels.socketError.publish(error)\n }\n\n this.destroy()\n}\n\nmodule.exports = {\n establishWebSocketConnection\n}\n","'use strict'\n\nconst { maxUnsigned16Bit } = require('./constants')\n\n/** @type {import('crypto')} */\nlet crypto\ntry {\n crypto = require('crypto')\n} catch {\n\n}\n\nclass WebsocketFrameSend {\n /**\n * @param {Buffer|undefined} data\n */\n constructor (data) {\n this.frameData = data\n this.maskKey = crypto.randomBytes(4)\n }\n\n createFrame (opcode) {\n const bodyLength = this.frameData?.byteLength ?? 0\n\n /** @type {number} */\n let payloadLength = bodyLength // 0-125\n let offset = 6\n\n if (bodyLength > maxUnsigned16Bit) {\n offset += 8 // payload length is next 8 bytes\n payloadLength = 127\n } else if (bodyLength > 125) {\n offset += 2 // payload length is next 2 bytes\n payloadLength = 126\n }\n\n const buffer = Buffer.allocUnsafe(bodyLength + offset)\n\n // Clear first 2 bytes, everything else is overwritten\n buffer[0] = buffer[1] = 0\n buffer[0] |= 0x80 // FIN\n buffer[0] = (buffer[0] & 0xF0) + opcode // opcode\n\n /*! ws. MIT License. Einar Otto Stangvik */\n buffer[offset - 4] = this.maskKey[0]\n buffer[offset - 3] = this.maskKey[1]\n buffer[offset - 2] = this.maskKey[2]\n buffer[offset - 1] = this.maskKey[3]\n\n buffer[1] = payloadLength\n\n if (payloadLength === 126) {\n buffer.writeUInt16BE(bodyLength, 2)\n } else if (payloadLength === 127) {\n // Clear extended payload length\n buffer[2] = buffer[3] = 0\n buffer.writeUIntBE(bodyLength, 4, 6)\n }\n\n buffer[1] |= 0x80 // MASK\n\n // mask body\n for (let i = 0; i < bodyLength; i++) {\n buffer[offset + i] = this.frameData[i] ^ this.maskKey[i % 4]\n }\n\n return buffer\n }\n}\n\nmodule.exports = {\n WebsocketFrameSend\n}\n","'use strict'\n\nconst { Writable } = require('stream')\nconst diagnosticsChannel = require('diagnostics_channel')\nconst { parserStates, opcodes, states, emptyBuffer } = require('./constants')\nconst { kReadyState, kSentClose, kResponse, kReceivedClose } = require('./symbols')\nconst { isValidStatusCode, failWebsocketConnection, websocketMessageReceived } = require('./util')\nconst { WebsocketFrameSend } = require('./frame')\n\n// This code was influenced by ws released under the MIT license.\n// Copyright (c) 2011 Einar Otto Stangvik \n// Copyright (c) 2013 Arnout Kazemier and contributors\n// Copyright (c) 2016 Luigi Pinca and contributors\n\nconst channels = {}\nchannels.ping = diagnosticsChannel.channel('undici:websocket:ping')\nchannels.pong = diagnosticsChannel.channel('undici:websocket:pong')\n\nclass ByteParser extends Writable {\n #buffers = []\n #byteOffset = 0\n\n #state = parserStates.INFO\n\n #info = {}\n #fragments = []\n\n constructor (ws) {\n super()\n\n this.ws = ws\n }\n\n /**\n * @param {Buffer} chunk\n * @param {() => void} callback\n */\n _write (chunk, _, callback) {\n this.#buffers.push(chunk)\n this.#byteOffset += chunk.length\n\n this.run(callback)\n }\n\n /**\n * Runs whenever a new chunk is received.\n * Callback is called whenever there are no more chunks buffering,\n * or not enough bytes are buffered to parse.\n */\n run (callback) {\n while (true) {\n if (this.#state === parserStates.INFO) {\n // If there aren't enough bytes to parse the payload length, etc.\n if (this.#byteOffset < 2) {\n return callback()\n }\n\n const buffer = this.consume(2)\n\n this.#info.fin = (buffer[0] & 0x80) !== 0\n this.#info.opcode = buffer[0] & 0x0F\n\n // If we receive a fragmented message, we use the type of the first\n // frame to parse the full message as binary/text, when it's terminated\n this.#info.originalOpcode ??= this.#info.opcode\n\n this.#info.fragmented = !this.#info.fin && this.#info.opcode !== opcodes.CONTINUATION\n\n if (this.#info.fragmented && this.#info.opcode !== opcodes.BINARY && this.#info.opcode !== opcodes.TEXT) {\n // Only text and binary frames can be fragmented\n failWebsocketConnection(this.ws, 'Invalid frame type was fragmented.')\n return\n }\n\n const payloadLength = buffer[1] & 0x7F\n\n if (payloadLength <= 125) {\n this.#info.payloadLength = payloadLength\n this.#state = parserStates.READ_DATA\n } else if (payloadLength === 126) {\n this.#state = parserStates.PAYLOADLENGTH_16\n } else if (payloadLength === 127) {\n this.#state = parserStates.PAYLOADLENGTH_64\n }\n\n if (this.#info.fragmented && payloadLength > 125) {\n // A fragmented frame can't be fragmented itself\n failWebsocketConnection(this.ws, 'Fragmented frame exceeded 125 bytes.')\n return\n } else if (\n (this.#info.opcode === opcodes.PING ||\n this.#info.opcode === opcodes.PONG ||\n this.#info.opcode === opcodes.CLOSE) &&\n payloadLength > 125\n ) {\n // Control frames can have a payload length of 125 bytes MAX\n failWebsocketConnection(this.ws, 'Payload length for control frame exceeded 125 bytes.')\n return\n } else if (this.#info.opcode === opcodes.CLOSE) {\n if (payloadLength === 1) {\n failWebsocketConnection(this.ws, 'Received close frame with a 1-byte body.')\n return\n }\n\n const body = this.consume(payloadLength)\n\n this.#info.closeInfo = this.parseCloseBody(false, body)\n\n if (!this.ws[kSentClose]) {\n // If an endpoint receives a Close frame and did not previously send a\n // Close frame, the endpoint MUST send a Close frame in response. (When\n // sending a Close frame in response, the endpoint typically echos the\n // status code it received.)\n const body = Buffer.allocUnsafe(2)\n body.writeUInt16BE(this.#info.closeInfo.code, 0)\n const closeFrame = new WebsocketFrameSend(body)\n\n this.ws[kResponse].socket.write(\n closeFrame.createFrame(opcodes.CLOSE),\n (err) => {\n if (!err) {\n this.ws[kSentClose] = true\n }\n }\n )\n }\n\n // Upon either sending or receiving a Close control frame, it is said\n // that _The WebSocket Closing Handshake is Started_ and that the\n // WebSocket connection is in the CLOSING state.\n this.ws[kReadyState] = states.CLOSING\n this.ws[kReceivedClose] = true\n\n this.end()\n\n return\n } else if (this.#info.opcode === opcodes.PING) {\n // Upon receipt of a Ping frame, an endpoint MUST send a Pong frame in\n // response, unless it already received a Close frame.\n // A Pong frame sent in response to a Ping frame must have identical\n // \"Application data\"\n\n const body = this.consume(payloadLength)\n\n if (!this.ws[kReceivedClose]) {\n const frame = new WebsocketFrameSend(body)\n\n this.ws[kResponse].socket.write(frame.createFrame(opcodes.PONG))\n\n if (channels.ping.hasSubscribers) {\n channels.ping.publish({\n payload: body\n })\n }\n }\n\n this.#state = parserStates.INFO\n\n if (this.#byteOffset > 0) {\n continue\n } else {\n callback()\n return\n }\n } else if (this.#info.opcode === opcodes.PONG) {\n // A Pong frame MAY be sent unsolicited. This serves as a\n // unidirectional heartbeat. A response to an unsolicited Pong frame is\n // not expected.\n\n const body = this.consume(payloadLength)\n\n if (channels.pong.hasSubscribers) {\n channels.pong.publish({\n payload: body\n })\n }\n\n if (this.#byteOffset > 0) {\n continue\n } else {\n callback()\n return\n }\n }\n } else if (this.#state === parserStates.PAYLOADLENGTH_16) {\n if (this.#byteOffset < 2) {\n return callback()\n }\n\n const buffer = this.consume(2)\n\n this.#info.payloadLength = buffer.readUInt16BE(0)\n this.#state = parserStates.READ_DATA\n } else if (this.#state === parserStates.PAYLOADLENGTH_64) {\n if (this.#byteOffset < 8) {\n return callback()\n }\n\n const buffer = this.consume(8)\n const upper = buffer.readUInt32BE(0)\n\n // 2^31 is the maxinimum bytes an arraybuffer can contain\n // on 32-bit systems. Although, on 64-bit systems, this is\n // 2^53-1 bytes.\n // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Errors/Invalid_array_length\n // https://source.chromium.org/chromium/chromium/src/+/main:v8/src/common/globals.h;drc=1946212ac0100668f14eb9e2843bdd846e510a1e;bpv=1;bpt=1;l=1275\n // https://source.chromium.org/chromium/chromium/src/+/main:v8/src/objects/js-array-buffer.h;l=34;drc=1946212ac0100668f14eb9e2843bdd846e510a1e\n if (upper > 2 ** 31 - 1) {\n failWebsocketConnection(this.ws, 'Received payload length > 2^31 bytes.')\n return\n }\n\n const lower = buffer.readUInt32BE(4)\n\n this.#info.payloadLength = (upper << 8) + lower\n this.#state = parserStates.READ_DATA\n } else if (this.#state === parserStates.READ_DATA) {\n if (this.#byteOffset < this.#info.payloadLength) {\n // If there is still more data in this chunk that needs to be read\n return callback()\n } else if (this.#byteOffset >= this.#info.payloadLength) {\n // If the server sent multiple frames in a single chunk\n\n const body = this.consume(this.#info.payloadLength)\n\n this.#fragments.push(body)\n\n // If the frame is unfragmented, or a fragmented frame was terminated,\n // a message was received\n if (!this.#info.fragmented || (this.#info.fin && this.#info.opcode === opcodes.CONTINUATION)) {\n const fullMessage = Buffer.concat(this.#fragments)\n\n websocketMessageReceived(this.ws, this.#info.originalOpcode, fullMessage)\n\n this.#info = {}\n this.#fragments.length = 0\n }\n\n this.#state = parserStates.INFO\n }\n }\n\n if (this.#byteOffset > 0) {\n continue\n } else {\n callback()\n break\n }\n }\n }\n\n /**\n * Take n bytes from the buffered Buffers\n * @param {number} n\n * @returns {Buffer|null}\n */\n consume (n) {\n if (n > this.#byteOffset) {\n return null\n } else if (n === 0) {\n return emptyBuffer\n }\n\n if (this.#buffers[0].length === n) {\n this.#byteOffset -= this.#buffers[0].length\n return this.#buffers.shift()\n }\n\n const buffer = Buffer.allocUnsafe(n)\n let offset = 0\n\n while (offset !== n) {\n const next = this.#buffers[0]\n const { length } = next\n\n if (length + offset === n) {\n buffer.set(this.#buffers.shift(), offset)\n break\n } else if (length + offset > n) {\n buffer.set(next.subarray(0, n - offset), offset)\n this.#buffers[0] = next.subarray(n - offset)\n break\n } else {\n buffer.set(this.#buffers.shift(), offset)\n offset += next.length\n }\n }\n\n this.#byteOffset -= n\n\n return buffer\n }\n\n parseCloseBody (onlyCode, data) {\n // https://datatracker.ietf.org/doc/html/rfc6455#section-7.1.5\n /** @type {number|undefined} */\n let code\n\n if (data.length >= 2) {\n // _The WebSocket Connection Close Code_ is\n // defined as the status code (Section 7.4) contained in the first Close\n // control frame received by the application\n code = data.readUInt16BE(0)\n }\n\n if (onlyCode) {\n if (!isValidStatusCode(code)) {\n return null\n }\n\n return { code }\n }\n\n // https://datatracker.ietf.org/doc/html/rfc6455#section-7.1.6\n /** @type {Buffer} */\n let reason = data.subarray(2)\n\n // Remove BOM\n if (reason[0] === 0xEF && reason[1] === 0xBB && reason[2] === 0xBF) {\n reason = reason.subarray(3)\n }\n\n if (code !== undefined && !isValidStatusCode(code)) {\n return null\n }\n\n try {\n // TODO: optimize this\n reason = new TextDecoder('utf-8', { fatal: true }).decode(reason)\n } catch {\n return null\n }\n\n return { code, reason }\n }\n\n get closingInfo () {\n return this.#info.closeInfo\n }\n}\n\nmodule.exports = {\n ByteParser\n}\n","'use strict'\n\nconst { webidl } = require('../fetch/webidl')\nconst { DOMException } = require('../fetch/constants')\nconst { URLSerializer } = require('../fetch/dataURL')\nconst { getGlobalOrigin } = require('../fetch/global')\nconst { staticPropertyDescriptors, states, opcodes, emptyBuffer } = require('./constants')\nconst {\n kWebSocketURL,\n kReadyState,\n kController,\n kBinaryType,\n kResponse,\n kSentClose,\n kByteParser\n} = require('./symbols')\nconst { isEstablished, isClosing, isValidSubprotocol, failWebsocketConnection, fireEvent } = require('./util')\nconst { establishWebSocketConnection } = require('./connection')\nconst { WebsocketFrameSend } = require('./frame')\nconst { ByteParser } = require('./receiver')\nconst { kEnumerableProperty, isBlobLike } = require('../core/util')\nconst { getGlobalDispatcher } = require('../global')\nconst { types } = require('util')\n\nlet experimentalWarned = false\n\n// https://websockets.spec.whatwg.org/#interface-definition\nclass WebSocket extends EventTarget {\n #events = {\n open: null,\n error: null,\n close: null,\n message: null\n }\n\n #bufferedAmount = 0\n #protocol = ''\n #extensions = ''\n\n /**\n * @param {string} url\n * @param {string|string[]} protocols\n */\n constructor (url, protocols = []) {\n super()\n\n webidl.argumentLengthCheck(arguments, 1, { header: 'WebSocket constructor' })\n\n if (!experimentalWarned) {\n experimentalWarned = true\n process.emitWarning('WebSockets are experimental, expect them to change at any time.', {\n code: 'UNDICI-WS'\n })\n }\n\n const options = webidl.converters['DOMString or sequence or WebSocketInit'](protocols)\n\n url = webidl.converters.USVString(url)\n protocols = options.protocols\n\n // 1. Let baseURL be this's relevant settings object's API base URL.\n const baseURL = getGlobalOrigin()\n\n // 1. Let urlRecord be the result of applying the URL parser to url with baseURL.\n let urlRecord\n\n try {\n urlRecord = new URL(url, baseURL)\n } catch (e) {\n // 3. If urlRecord is failure, then throw a \"SyntaxError\" DOMException.\n throw new DOMException(e, 'SyntaxError')\n }\n\n // 4. If urlRecord’s scheme is \"http\", then set urlRecord’s scheme to \"ws\".\n if (urlRecord.protocol === 'http:') {\n urlRecord.protocol = 'ws:'\n } else if (urlRecord.protocol === 'https:') {\n // 5. Otherwise, if urlRecord’s scheme is \"https\", set urlRecord’s scheme to \"wss\".\n urlRecord.protocol = 'wss:'\n }\n\n // 6. If urlRecord’s scheme is not \"ws\" or \"wss\", then throw a \"SyntaxError\" DOMException.\n if (urlRecord.protocol !== 'ws:' && urlRecord.protocol !== 'wss:') {\n throw new DOMException(\n `Expected a ws: or wss: protocol, got ${urlRecord.protocol}`,\n 'SyntaxError'\n )\n }\n\n // 7. If urlRecord’s fragment is non-null, then throw a \"SyntaxError\"\n // DOMException.\n if (urlRecord.hash || urlRecord.href.endsWith('#')) {\n throw new DOMException('Got fragment', 'SyntaxError')\n }\n\n // 8. If protocols is a string, set protocols to a sequence consisting\n // of just that string.\n if (typeof protocols === 'string') {\n protocols = [protocols]\n }\n\n // 9. If any of the values in protocols occur more than once or otherwise\n // fail to match the requirements for elements that comprise the value\n // of `Sec-WebSocket-Protocol` fields as defined by The WebSocket\n // protocol, then throw a \"SyntaxError\" DOMException.\n if (protocols.length !== new Set(protocols.map(p => p.toLowerCase())).size) {\n throw new DOMException('Invalid Sec-WebSocket-Protocol value', 'SyntaxError')\n }\n\n if (protocols.length > 0 && !protocols.every(p => isValidSubprotocol(p))) {\n throw new DOMException('Invalid Sec-WebSocket-Protocol value', 'SyntaxError')\n }\n\n // 10. Set this's url to urlRecord.\n this[kWebSocketURL] = new URL(urlRecord.href)\n\n // 11. Let client be this's relevant settings object.\n\n // 12. Run this step in parallel:\n\n // 1. Establish a WebSocket connection given urlRecord, protocols,\n // and client.\n this[kController] = establishWebSocketConnection(\n urlRecord,\n protocols,\n this,\n (response) => this.#onConnectionEstablished(response),\n options\n )\n\n // Each WebSocket object has an associated ready state, which is a\n // number representing the state of the connection. Initially it must\n // be CONNECTING (0).\n this[kReadyState] = WebSocket.CONNECTING\n\n // The extensions attribute must initially return the empty string.\n\n // The protocol attribute must initially return the empty string.\n\n // Each WebSocket object has an associated binary type, which is a\n // BinaryType. Initially it must be \"blob\".\n this[kBinaryType] = 'blob'\n }\n\n /**\n * @see https://websockets.spec.whatwg.org/#dom-websocket-close\n * @param {number|undefined} code\n * @param {string|undefined} reason\n */\n close (code = undefined, reason = undefined) {\n webidl.brandCheck(this, WebSocket)\n\n if (code !== undefined) {\n code = webidl.converters['unsigned short'](code, { clamp: true })\n }\n\n if (reason !== undefined) {\n reason = webidl.converters.USVString(reason)\n }\n\n // 1. If code is present, but is neither an integer equal to 1000 nor an\n // integer in the range 3000 to 4999, inclusive, throw an\n // \"InvalidAccessError\" DOMException.\n if (code !== undefined) {\n if (code !== 1000 && (code < 3000 || code > 4999)) {\n throw new DOMException('invalid code', 'InvalidAccessError')\n }\n }\n\n let reasonByteLength = 0\n\n // 2. If reason is present, then run these substeps:\n if (reason !== undefined) {\n // 1. Let reasonBytes be the result of encoding reason.\n // 2. If reasonBytes is longer than 123 bytes, then throw a\n // \"SyntaxError\" DOMException.\n reasonByteLength = Buffer.byteLength(reason)\n\n if (reasonByteLength > 123) {\n throw new DOMException(\n `Reason must be less than 123 bytes; received ${reasonByteLength}`,\n 'SyntaxError'\n )\n }\n }\n\n // 3. Run the first matching steps from the following list:\n if (this[kReadyState] === WebSocket.CLOSING || this[kReadyState] === WebSocket.CLOSED) {\n // If this's ready state is CLOSING (2) or CLOSED (3)\n // Do nothing.\n } else if (!isEstablished(this)) {\n // If the WebSocket connection is not yet established\n // Fail the WebSocket connection and set this's ready state\n // to CLOSING (2).\n failWebsocketConnection(this, 'Connection was closed before it was established.')\n this[kReadyState] = WebSocket.CLOSING\n } else if (!isClosing(this)) {\n // If the WebSocket closing handshake has not yet been started\n // Start the WebSocket closing handshake and set this's ready\n // state to CLOSING (2).\n // - If neither code nor reason is present, the WebSocket Close\n // message must not have a body.\n // - If code is present, then the status code to use in the\n // WebSocket Close message must be the integer given by code.\n // - If reason is also present, then reasonBytes must be\n // provided in the Close message after the status code.\n\n const frame = new WebsocketFrameSend()\n\n // If neither code nor reason is present, the WebSocket Close\n // message must not have a body.\n\n // If code is present, then the status code to use in the\n // WebSocket Close message must be the integer given by code.\n if (code !== undefined && reason === undefined) {\n frame.frameData = Buffer.allocUnsafe(2)\n frame.frameData.writeUInt16BE(code, 0)\n } else if (code !== undefined && reason !== undefined) {\n // If reason is also present, then reasonBytes must be\n // provided in the Close message after the status code.\n frame.frameData = Buffer.allocUnsafe(2 + reasonByteLength)\n frame.frameData.writeUInt16BE(code, 0)\n // the body MAY contain UTF-8-encoded data with value /reason/\n frame.frameData.write(reason, 2, 'utf-8')\n } else {\n frame.frameData = emptyBuffer\n }\n\n /** @type {import('stream').Duplex} */\n const socket = this[kResponse].socket\n\n socket.write(frame.createFrame(opcodes.CLOSE), (err) => {\n if (!err) {\n this[kSentClose] = true\n }\n })\n\n // Upon either sending or receiving a Close control frame, it is said\n // that _The WebSocket Closing Handshake is Started_ and that the\n // WebSocket connection is in the CLOSING state.\n this[kReadyState] = states.CLOSING\n } else {\n // Otherwise\n // Set this's ready state to CLOSING (2).\n this[kReadyState] = WebSocket.CLOSING\n }\n }\n\n /**\n * @see https://websockets.spec.whatwg.org/#dom-websocket-send\n * @param {NodeJS.TypedArray|ArrayBuffer|Blob|string} data\n */\n send (data) {\n webidl.brandCheck(this, WebSocket)\n\n webidl.argumentLengthCheck(arguments, 1, { header: 'WebSocket.send' })\n\n data = webidl.converters.WebSocketSendData(data)\n\n // 1. If this's ready state is CONNECTING, then throw an\n // \"InvalidStateError\" DOMException.\n if (this[kReadyState] === WebSocket.CONNECTING) {\n throw new DOMException('Sent before connected.', 'InvalidStateError')\n }\n\n // 2. Run the appropriate set of steps from the following list:\n // https://datatracker.ietf.org/doc/html/rfc6455#section-6.1\n // https://datatracker.ietf.org/doc/html/rfc6455#section-5.2\n\n if (!isEstablished(this) || isClosing(this)) {\n return\n }\n\n /** @type {import('stream').Duplex} */\n const socket = this[kResponse].socket\n\n // If data is a string\n if (typeof data === 'string') {\n // If the WebSocket connection is established and the WebSocket\n // closing handshake has not yet started, then the user agent\n // must send a WebSocket Message comprised of the data argument\n // using a text frame opcode; if the data cannot be sent, e.g.\n // because it would need to be buffered but the buffer is full,\n // the user agent must flag the WebSocket as full and then close\n // the WebSocket connection. Any invocation of this method with a\n // string argument that does not throw an exception must increase\n // the bufferedAmount attribute by the number of bytes needed to\n // express the argument as UTF-8.\n\n const value = Buffer.from(data)\n const frame = new WebsocketFrameSend(value)\n const buffer = frame.createFrame(opcodes.TEXT)\n\n this.#bufferedAmount += value.byteLength\n socket.write(buffer, () => {\n this.#bufferedAmount -= value.byteLength\n })\n } else if (types.isArrayBuffer(data)) {\n // If the WebSocket connection is established, and the WebSocket\n // closing handshake has not yet started, then the user agent must\n // send a WebSocket Message comprised of data using a binary frame\n // opcode; if the data cannot be sent, e.g. because it would need\n // to be buffered but the buffer is full, the user agent must flag\n // the WebSocket as full and then close the WebSocket connection.\n // The data to be sent is the data stored in the buffer described\n // by the ArrayBuffer object. Any invocation of this method with an\n // ArrayBuffer argument that does not throw an exception must\n // increase the bufferedAmount attribute by the length of the\n // ArrayBuffer in bytes.\n\n const value = Buffer.from(data)\n const frame = new WebsocketFrameSend(value)\n const buffer = frame.createFrame(opcodes.BINARY)\n\n this.#bufferedAmount += value.byteLength\n socket.write(buffer, () => {\n this.#bufferedAmount -= value.byteLength\n })\n } else if (ArrayBuffer.isView(data)) {\n // If the WebSocket connection is established, and the WebSocket\n // closing handshake has not yet started, then the user agent must\n // send a WebSocket Message comprised of data using a binary frame\n // opcode; if the data cannot be sent, e.g. because it would need to\n // be buffered but the buffer is full, the user agent must flag the\n // WebSocket as full and then close the WebSocket connection. The\n // data to be sent is the data stored in the section of the buffer\n // described by the ArrayBuffer object that data references. Any\n // invocation of this method with this kind of argument that does\n // not throw an exception must increase the bufferedAmount attribute\n // by the length of data’s buffer in bytes.\n\n const ab = Buffer.from(data, data.byteOffset, data.byteLength)\n\n const frame = new WebsocketFrameSend(ab)\n const buffer = frame.createFrame(opcodes.BINARY)\n\n this.#bufferedAmount += ab.byteLength\n socket.write(buffer, () => {\n this.#bufferedAmount -= ab.byteLength\n })\n } else if (isBlobLike(data)) {\n // If the WebSocket connection is established, and the WebSocket\n // closing handshake has not yet started, then the user agent must\n // send a WebSocket Message comprised of data using a binary frame\n // opcode; if the data cannot be sent, e.g. because it would need to\n // be buffered but the buffer is full, the user agent must flag the\n // WebSocket as full and then close the WebSocket connection. The data\n // to be sent is the raw data represented by the Blob object. Any\n // invocation of this method with a Blob argument that does not throw\n // an exception must increase the bufferedAmount attribute by the size\n // of the Blob object’s raw data, in bytes.\n\n const frame = new WebsocketFrameSend()\n\n data.arrayBuffer().then((ab) => {\n const value = Buffer.from(ab)\n frame.frameData = value\n const buffer = frame.createFrame(opcodes.BINARY)\n\n this.#bufferedAmount += value.byteLength\n socket.write(buffer, () => {\n this.#bufferedAmount -= value.byteLength\n })\n })\n }\n }\n\n get readyState () {\n webidl.brandCheck(this, WebSocket)\n\n // The readyState getter steps are to return this's ready state.\n return this[kReadyState]\n }\n\n get bufferedAmount () {\n webidl.brandCheck(this, WebSocket)\n\n return this.#bufferedAmount\n }\n\n get url () {\n webidl.brandCheck(this, WebSocket)\n\n // The url getter steps are to return this's url, serialized.\n return URLSerializer(this[kWebSocketURL])\n }\n\n get extensions () {\n webidl.brandCheck(this, WebSocket)\n\n return this.#extensions\n }\n\n get protocol () {\n webidl.brandCheck(this, WebSocket)\n\n return this.#protocol\n }\n\n get onopen () {\n webidl.brandCheck(this, WebSocket)\n\n return this.#events.open\n }\n\n set onopen (fn) {\n webidl.brandCheck(this, WebSocket)\n\n if (this.#events.open) {\n this.removeEventListener('open', this.#events.open)\n }\n\n if (typeof fn === 'function') {\n this.#events.open = fn\n this.addEventListener('open', fn)\n } else {\n this.#events.open = null\n }\n }\n\n get onerror () {\n webidl.brandCheck(this, WebSocket)\n\n return this.#events.error\n }\n\n set onerror (fn) {\n webidl.brandCheck(this, WebSocket)\n\n if (this.#events.error) {\n this.removeEventListener('error', this.#events.error)\n }\n\n if (typeof fn === 'function') {\n this.#events.error = fn\n this.addEventListener('error', fn)\n } else {\n this.#events.error = null\n }\n }\n\n get onclose () {\n webidl.brandCheck(this, WebSocket)\n\n return this.#events.close\n }\n\n set onclose (fn) {\n webidl.brandCheck(this, WebSocket)\n\n if (this.#events.close) {\n this.removeEventListener('close', this.#events.close)\n }\n\n if (typeof fn === 'function') {\n this.#events.close = fn\n this.addEventListener('close', fn)\n } else {\n this.#events.close = null\n }\n }\n\n get onmessage () {\n webidl.brandCheck(this, WebSocket)\n\n return this.#events.message\n }\n\n set onmessage (fn) {\n webidl.brandCheck(this, WebSocket)\n\n if (this.#events.message) {\n this.removeEventListener('message', this.#events.message)\n }\n\n if (typeof fn === 'function') {\n this.#events.message = fn\n this.addEventListener('message', fn)\n } else {\n this.#events.message = null\n }\n }\n\n get binaryType () {\n webidl.brandCheck(this, WebSocket)\n\n return this[kBinaryType]\n }\n\n set binaryType (type) {\n webidl.brandCheck(this, WebSocket)\n\n if (type !== 'blob' && type !== 'arraybuffer') {\n this[kBinaryType] = 'blob'\n } else {\n this[kBinaryType] = type\n }\n }\n\n /**\n * @see https://websockets.spec.whatwg.org/#feedback-from-the-protocol\n */\n #onConnectionEstablished (response) {\n // processResponse is called when the \"response’s header list has been received and initialized.\"\n // once this happens, the connection is open\n this[kResponse] = response\n\n const parser = new ByteParser(this)\n parser.on('drain', function onParserDrain () {\n this.ws[kResponse].socket.resume()\n })\n\n response.socket.ws = this\n this[kByteParser] = parser\n\n // 1. Change the ready state to OPEN (1).\n this[kReadyState] = states.OPEN\n\n // 2. Change the extensions attribute’s value to the extensions in use, if\n // it is not the null value.\n // https://datatracker.ietf.org/doc/html/rfc6455#section-9.1\n const extensions = response.headersList.get('sec-websocket-extensions')\n\n if (extensions !== null) {\n this.#extensions = extensions\n }\n\n // 3. Change the protocol attribute’s value to the subprotocol in use, if\n // it is not the null value.\n // https://datatracker.ietf.org/doc/html/rfc6455#section-1.9\n const protocol = response.headersList.get('sec-websocket-protocol')\n\n if (protocol !== null) {\n this.#protocol = protocol\n }\n\n // 4. Fire an event named open at the WebSocket object.\n fireEvent('open', this)\n }\n}\n\n// https://websockets.spec.whatwg.org/#dom-websocket-connecting\nWebSocket.CONNECTING = WebSocket.prototype.CONNECTING = states.CONNECTING\n// https://websockets.spec.whatwg.org/#dom-websocket-open\nWebSocket.OPEN = WebSocket.prototype.OPEN = states.OPEN\n// https://websockets.spec.whatwg.org/#dom-websocket-closing\nWebSocket.CLOSING = WebSocket.prototype.CLOSING = states.CLOSING\n// https://websockets.spec.whatwg.org/#dom-websocket-closed\nWebSocket.CLOSED = WebSocket.prototype.CLOSED = states.CLOSED\n\nObject.defineProperties(WebSocket.prototype, {\n CONNECTING: staticPropertyDescriptors,\n OPEN: staticPropertyDescriptors,\n CLOSING: staticPropertyDescriptors,\n CLOSED: staticPropertyDescriptors,\n url: kEnumerableProperty,\n readyState: kEnumerableProperty,\n bufferedAmount: kEnumerableProperty,\n onopen: kEnumerableProperty,\n onerror: kEnumerableProperty,\n onclose: kEnumerableProperty,\n close: kEnumerableProperty,\n onmessage: kEnumerableProperty,\n binaryType: kEnumerableProperty,\n send: kEnumerableProperty,\n extensions: kEnumerableProperty,\n protocol: kEnumerableProperty,\n [Symbol.toStringTag]: {\n value: 'WebSocket',\n writable: false,\n enumerable: false,\n configurable: true\n }\n})\n\nObject.defineProperties(WebSocket, {\n CONNECTING: staticPropertyDescriptors,\n OPEN: staticPropertyDescriptors,\n CLOSING: staticPropertyDescriptors,\n CLOSED: staticPropertyDescriptors\n})\n\nwebidl.converters['sequence'] = webidl.sequenceConverter(\n webidl.converters.DOMString\n)\n\nwebidl.converters['DOMString or sequence'] = function (V) {\n if (webidl.util.Type(V) === 'Object' && Symbol.iterator in V) {\n return webidl.converters['sequence'](V)\n }\n\n return webidl.converters.DOMString(V)\n}\n\n// This implements the propsal made in https://github.com/whatwg/websockets/issues/42\nwebidl.converters.WebSocketInit = webidl.dictionaryConverter([\n {\n key: 'protocols',\n converter: webidl.converters['DOMString or sequence'],\n get defaultValue () {\n return []\n }\n },\n {\n key: 'dispatcher',\n converter: (V) => V,\n get defaultValue () {\n return getGlobalDispatcher()\n }\n },\n {\n key: 'headers',\n converter: webidl.nullableConverter(webidl.converters.HeadersInit)\n }\n])\n\nwebidl.converters['DOMString or sequence or WebSocketInit'] = function (V) {\n if (webidl.util.Type(V) === 'Object' && !(Symbol.iterator in V)) {\n return webidl.converters.WebSocketInit(V)\n }\n\n return { protocols: webidl.converters['DOMString or sequence'](V) }\n}\n\nwebidl.converters.WebSocketSendData = function (V) {\n if (webidl.util.Type(V) === 'Object') {\n if (isBlobLike(V)) {\n return webidl.converters.Blob(V, { strict: false })\n }\n\n if (ArrayBuffer.isView(V) || types.isAnyArrayBuffer(V)) {\n return webidl.converters.BufferSource(V)\n }\n }\n\n return webidl.converters.USVString(V)\n}\n\nmodule.exports = {\n WebSocket\n}\n","'use strict'\n\nconst Client = require('./lib/client')\nconst Dispatcher = require('./lib/dispatcher')\nconst errors = require('./lib/core/errors')\nconst Pool = require('./lib/pool')\nconst BalancedPool = require('./lib/balanced-pool')\nconst Agent = require('./lib/agent')\nconst util = require('./lib/core/util')\nconst { InvalidArgumentError } = errors\nconst api = require('./lib/api')\nconst buildConnector = require('./lib/core/connect')\nconst MockClient = require('./lib/mock/mock-client')\nconst MockAgent = require('./lib/mock/mock-agent')\nconst MockPool = require('./lib/mock/mock-pool')\nconst mockErrors = require('./lib/mock/mock-errors')\nconst ProxyAgent = require('./lib/proxy-agent')\nconst RetryHandler = require('./lib/handler/RetryHandler')\nconst { getGlobalDispatcher, setGlobalDispatcher } = require('./lib/global')\nconst DecoratorHandler = require('./lib/handler/DecoratorHandler')\nconst RedirectHandler = require('./lib/handler/RedirectHandler')\nconst createRedirectInterceptor = require('./lib/interceptor/redirectInterceptor')\n\nlet hasCrypto\ntry {\n require('crypto')\n hasCrypto = true\n} catch {\n hasCrypto = false\n}\n\nObject.assign(Dispatcher.prototype, api)\n\nmodule.exports.Dispatcher = Dispatcher\nmodule.exports.Client = Client\nmodule.exports.Pool = Pool\nmodule.exports.BalancedPool = BalancedPool\nmodule.exports.Agent = Agent\nmodule.exports.ProxyAgent = ProxyAgent\nmodule.exports.RetryHandler = RetryHandler\n\nmodule.exports.DecoratorHandler = DecoratorHandler\nmodule.exports.RedirectHandler = RedirectHandler\nmodule.exports.createRedirectInterceptor = createRedirectInterceptor\n\nmodule.exports.buildConnector = buildConnector\nmodule.exports.errors = errors\n\nfunction makeDispatcher (fn) {\n return (url, opts, handler) => {\n if (typeof opts === 'function') {\n handler = opts\n opts = null\n }\n\n if (!url || (typeof url !== 'string' && typeof url !== 'object' && !(url instanceof URL))) {\n throw new InvalidArgumentError('invalid url')\n }\n\n if (opts != null && typeof opts !== 'object') {\n throw new InvalidArgumentError('invalid opts')\n }\n\n if (opts && opts.path != null) {\n if (typeof opts.path !== 'string') {\n throw new InvalidArgumentError('invalid opts.path')\n }\n\n let path = opts.path\n if (!opts.path.startsWith('/')) {\n path = `/${path}`\n }\n\n url = new URL(util.parseOrigin(url).origin + path)\n } else {\n if (!opts) {\n opts = typeof url === 'object' ? url : {}\n }\n\n url = util.parseURL(url)\n }\n\n const { agent, dispatcher = getGlobalDispatcher() } = opts\n\n if (agent) {\n throw new InvalidArgumentError('unsupported opts.agent. Did you mean opts.client?')\n }\n\n return fn.call(dispatcher, {\n ...opts,\n origin: url.origin,\n path: url.search ? `${url.pathname}${url.search}` : url.pathname,\n method: opts.method || (opts.body ? 'PUT' : 'GET')\n }, handler)\n }\n}\n\nmodule.exports.setGlobalDispatcher = setGlobalDispatcher\nmodule.exports.getGlobalDispatcher = getGlobalDispatcher\n\nif (util.nodeMajor > 16 || (util.nodeMajor === 16 && util.nodeMinor >= 8)) {\n let fetchImpl = null\n module.exports.fetch = async function fetch (resource) {\n if (!fetchImpl) {\n fetchImpl = require('./lib/fetch').fetch\n }\n\n try {\n return await fetchImpl(...arguments)\n } catch (err) {\n if (typeof err === 'object') {\n Error.captureStackTrace(err, this)\n }\n\n throw err\n }\n }\n module.exports.Headers = require('./lib/fetch/headers').Headers\n module.exports.Response = require('./lib/fetch/response').Response\n module.exports.Request = require('./lib/fetch/request').Request\n module.exports.FormData = require('./lib/fetch/formdata').FormData\n module.exports.File = require('./lib/fetch/file').File\n module.exports.FileReader = require('./lib/fileapi/filereader').FileReader\n\n const { setGlobalOrigin, getGlobalOrigin } = require('./lib/fetch/global')\n\n module.exports.setGlobalOrigin = setGlobalOrigin\n module.exports.getGlobalOrigin = getGlobalOrigin\n\n const { CacheStorage } = require('./lib/cache/cachestorage')\n const { kConstruct } = require('./lib/cache/symbols')\n\n // Cache & CacheStorage are tightly coupled with fetch. Even if it may run\n // in an older version of Node, it doesn't have any use without fetch.\n module.exports.caches = new CacheStorage(kConstruct)\n}\n\nif (util.nodeMajor >= 16) {\n const { deleteCookie, getCookies, getSetCookies, setCookie } = require('./lib/cookies')\n\n module.exports.deleteCookie = deleteCookie\n module.exports.getCookies = getCookies\n module.exports.getSetCookies = getSetCookies\n module.exports.setCookie = setCookie\n\n const { parseMIMEType, serializeAMimeType } = require('./lib/fetch/dataURL')\n\n module.exports.parseMIMEType = parseMIMEType\n module.exports.serializeAMimeType = serializeAMimeType\n}\n\nif (util.nodeMajor >= 18 && hasCrypto) {\n const { WebSocket } = require('./lib/websocket/websocket')\n\n module.exports.WebSocket = WebSocket\n}\n\nmodule.exports.request = makeDispatcher(api.request)\nmodule.exports.stream = makeDispatcher(api.stream)\nmodule.exports.pipeline = makeDispatcher(api.pipeline)\nmodule.exports.connect = makeDispatcher(api.connect)\nmodule.exports.upgrade = makeDispatcher(api.upgrade)\n\nmodule.exports.MockClient = MockClient\nmodule.exports.MockPool = MockPool\nmodule.exports.MockAgent = MockAgent\nmodule.exports.mockErrors = mockErrors\n","\"use strict\";\n/* eslint-disable @typescript-eslint/no-explicit-any */\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.HttpClient = exports.isHttps = exports.HttpClientResponse = exports.HttpClientError = exports.getProxyUrl = exports.MediaTypes = exports.Headers = exports.HttpCodes = void 0;\nconst http = __importStar(require(\"http\"));\nconst https = __importStar(require(\"https\"));\nconst pm = __importStar(require(\"./proxy\"));\nconst tunnel = __importStar(require(\"tunnel\"));\nconst undici_1 = require(\"undici\");\nvar HttpCodes;\n(function (HttpCodes) {\n HttpCodes[HttpCodes[\"OK\"] = 200] = \"OK\";\n HttpCodes[HttpCodes[\"MultipleChoices\"] = 300] = \"MultipleChoices\";\n HttpCodes[HttpCodes[\"MovedPermanently\"] = 301] = \"MovedPermanently\";\n HttpCodes[HttpCodes[\"ResourceMoved\"] = 302] = \"ResourceMoved\";\n HttpCodes[HttpCodes[\"SeeOther\"] = 303] = \"SeeOther\";\n HttpCodes[HttpCodes[\"NotModified\"] = 304] = \"NotModified\";\n HttpCodes[HttpCodes[\"UseProxy\"] = 305] = \"UseProxy\";\n HttpCodes[HttpCodes[\"SwitchProxy\"] = 306] = \"SwitchProxy\";\n HttpCodes[HttpCodes[\"TemporaryRedirect\"] = 307] = \"TemporaryRedirect\";\n HttpCodes[HttpCodes[\"PermanentRedirect\"] = 308] = \"PermanentRedirect\";\n HttpCodes[HttpCodes[\"BadRequest\"] = 400] = \"BadRequest\";\n HttpCodes[HttpCodes[\"Unauthorized\"] = 401] = \"Unauthorized\";\n HttpCodes[HttpCodes[\"PaymentRequired\"] = 402] = \"PaymentRequired\";\n HttpCodes[HttpCodes[\"Forbidden\"] = 403] = \"Forbidden\";\n HttpCodes[HttpCodes[\"NotFound\"] = 404] = \"NotFound\";\n HttpCodes[HttpCodes[\"MethodNotAllowed\"] = 405] = \"MethodNotAllowed\";\n HttpCodes[HttpCodes[\"NotAcceptable\"] = 406] = \"NotAcceptable\";\n HttpCodes[HttpCodes[\"ProxyAuthenticationRequired\"] = 407] = \"ProxyAuthenticationRequired\";\n HttpCodes[HttpCodes[\"RequestTimeout\"] = 408] = \"RequestTimeout\";\n HttpCodes[HttpCodes[\"Conflict\"] = 409] = \"Conflict\";\n HttpCodes[HttpCodes[\"Gone\"] = 410] = \"Gone\";\n HttpCodes[HttpCodes[\"TooManyRequests\"] = 429] = \"TooManyRequests\";\n HttpCodes[HttpCodes[\"InternalServerError\"] = 500] = \"InternalServerError\";\n HttpCodes[HttpCodes[\"NotImplemented\"] = 501] = \"NotImplemented\";\n HttpCodes[HttpCodes[\"BadGateway\"] = 502] = \"BadGateway\";\n HttpCodes[HttpCodes[\"ServiceUnavailable\"] = 503] = \"ServiceUnavailable\";\n HttpCodes[HttpCodes[\"GatewayTimeout\"] = 504] = \"GatewayTimeout\";\n})(HttpCodes || (exports.HttpCodes = HttpCodes = {}));\nvar Headers;\n(function (Headers) {\n Headers[\"Accept\"] = \"accept\";\n Headers[\"ContentType\"] = \"content-type\";\n})(Headers || (exports.Headers = Headers = {}));\nvar MediaTypes;\n(function (MediaTypes) {\n MediaTypes[\"ApplicationJson\"] = \"application/json\";\n})(MediaTypes || (exports.MediaTypes = MediaTypes = {}));\n/**\n * Returns the proxy URL, depending upon the supplied url and proxy environment variables.\n * @param serverUrl The server URL where the request will be sent. For example, https://api.github.com\n */\nfunction getProxyUrl(serverUrl) {\n const proxyUrl = pm.getProxyUrl(new URL(serverUrl));\n return proxyUrl ? proxyUrl.href : '';\n}\nexports.getProxyUrl = getProxyUrl;\nconst HttpRedirectCodes = [\n HttpCodes.MovedPermanently,\n HttpCodes.ResourceMoved,\n HttpCodes.SeeOther,\n HttpCodes.TemporaryRedirect,\n HttpCodes.PermanentRedirect\n];\nconst HttpResponseRetryCodes = [\n HttpCodes.BadGateway,\n HttpCodes.ServiceUnavailable,\n HttpCodes.GatewayTimeout\n];\nconst RetryableHttpVerbs = ['OPTIONS', 'GET', 'DELETE', 'HEAD'];\nconst ExponentialBackoffCeiling = 10;\nconst ExponentialBackoffTimeSlice = 5;\nclass HttpClientError extends Error {\n constructor(message, statusCode) {\n super(message);\n this.name = 'HttpClientError';\n this.statusCode = statusCode;\n Object.setPrototypeOf(this, HttpClientError.prototype);\n }\n}\nexports.HttpClientError = HttpClientError;\nclass HttpClientResponse {\n constructor(message) {\n this.message = message;\n }\n readBody() {\n return __awaiter(this, void 0, void 0, function* () {\n return new Promise((resolve) => __awaiter(this, void 0, void 0, function* () {\n let output = Buffer.alloc(0);\n this.message.on('data', (chunk) => {\n output = Buffer.concat([output, chunk]);\n });\n this.message.on('end', () => {\n resolve(output.toString());\n });\n }));\n });\n }\n readBodyBuffer() {\n return __awaiter(this, void 0, void 0, function* () {\n return new Promise((resolve) => __awaiter(this, void 0, void 0, function* () {\n const chunks = [];\n this.message.on('data', (chunk) => {\n chunks.push(chunk);\n });\n this.message.on('end', () => {\n resolve(Buffer.concat(chunks));\n });\n }));\n });\n }\n}\nexports.HttpClientResponse = HttpClientResponse;\nfunction isHttps(requestUrl) {\n const parsedUrl = new URL(requestUrl);\n return parsedUrl.protocol === 'https:';\n}\nexports.isHttps = isHttps;\nclass HttpClient {\n constructor(userAgent, handlers, requestOptions) {\n this._ignoreSslError = false;\n this._allowRedirects = true;\n this._allowRedirectDowngrade = false;\n this._maxRedirects = 50;\n this._allowRetries = false;\n this._maxRetries = 1;\n this._keepAlive = false;\n this._disposed = false;\n this.userAgent = userAgent;\n this.handlers = handlers || [];\n this.requestOptions = requestOptions;\n if (requestOptions) {\n if (requestOptions.ignoreSslError != null) {\n this._ignoreSslError = requestOptions.ignoreSslError;\n }\n this._socketTimeout = requestOptions.socketTimeout;\n if (requestOptions.allowRedirects != null) {\n this._allowRedirects = requestOptions.allowRedirects;\n }\n if (requestOptions.allowRedirectDowngrade != null) {\n this._allowRedirectDowngrade = requestOptions.allowRedirectDowngrade;\n }\n if (requestOptions.maxRedirects != null) {\n this._maxRedirects = Math.max(requestOptions.maxRedirects, 0);\n }\n if (requestOptions.keepAlive != null) {\n this._keepAlive = requestOptions.keepAlive;\n }\n if (requestOptions.allowRetries != null) {\n this._allowRetries = requestOptions.allowRetries;\n }\n if (requestOptions.maxRetries != null) {\n this._maxRetries = requestOptions.maxRetries;\n }\n }\n }\n options(requestUrl, additionalHeaders) {\n return __awaiter(this, void 0, void 0, function* () {\n return this.request('OPTIONS', requestUrl, null, additionalHeaders || {});\n });\n }\n get(requestUrl, additionalHeaders) {\n return __awaiter(this, void 0, void 0, function* () {\n return this.request('GET', requestUrl, null, additionalHeaders || {});\n });\n }\n del(requestUrl, additionalHeaders) {\n return __awaiter(this, void 0, void 0, function* () {\n return this.request('DELETE', requestUrl, null, additionalHeaders || {});\n });\n }\n post(requestUrl, data, additionalHeaders) {\n return __awaiter(this, void 0, void 0, function* () {\n return this.request('POST', requestUrl, data, additionalHeaders || {});\n });\n }\n patch(requestUrl, data, additionalHeaders) {\n return __awaiter(this, void 0, void 0, function* () {\n return this.request('PATCH', requestUrl, data, additionalHeaders || {});\n });\n }\n put(requestUrl, data, additionalHeaders) {\n return __awaiter(this, void 0, void 0, function* () {\n return this.request('PUT', requestUrl, data, additionalHeaders || {});\n });\n }\n head(requestUrl, additionalHeaders) {\n return __awaiter(this, void 0, void 0, function* () {\n return this.request('HEAD', requestUrl, null, additionalHeaders || {});\n });\n }\n sendStream(verb, requestUrl, stream, additionalHeaders) {\n return __awaiter(this, void 0, void 0, function* () {\n return this.request(verb, requestUrl, stream, additionalHeaders);\n });\n }\n /**\n * Gets a typed object from an endpoint\n * Be aware that not found returns a null. Other errors (4xx, 5xx) reject the promise\n */\n getJson(requestUrl, additionalHeaders = {}) {\n return __awaiter(this, void 0, void 0, function* () {\n additionalHeaders[Headers.Accept] = this._getExistingOrDefaultHeader(additionalHeaders, Headers.Accept, MediaTypes.ApplicationJson);\n const res = yield this.get(requestUrl, additionalHeaders);\n return this._processResponse(res, this.requestOptions);\n });\n }\n postJson(requestUrl, obj, additionalHeaders = {}) {\n return __awaiter(this, void 0, void 0, function* () {\n const data = JSON.stringify(obj, null, 2);\n additionalHeaders[Headers.Accept] = this._getExistingOrDefaultHeader(additionalHeaders, Headers.Accept, MediaTypes.ApplicationJson);\n additionalHeaders[Headers.ContentType] = this._getExistingOrDefaultHeader(additionalHeaders, Headers.ContentType, MediaTypes.ApplicationJson);\n const res = yield this.post(requestUrl, data, additionalHeaders);\n return this._processResponse(res, this.requestOptions);\n });\n }\n putJson(requestUrl, obj, additionalHeaders = {}) {\n return __awaiter(this, void 0, void 0, function* () {\n const data = JSON.stringify(obj, null, 2);\n additionalHeaders[Headers.Accept] = this._getExistingOrDefaultHeader(additionalHeaders, Headers.Accept, MediaTypes.ApplicationJson);\n additionalHeaders[Headers.ContentType] = this._getExistingOrDefaultHeader(additionalHeaders, Headers.ContentType, MediaTypes.ApplicationJson);\n const res = yield this.put(requestUrl, data, additionalHeaders);\n return this._processResponse(res, this.requestOptions);\n });\n }\n patchJson(requestUrl, obj, additionalHeaders = {}) {\n return __awaiter(this, void 0, void 0, function* () {\n const data = JSON.stringify(obj, null, 2);\n additionalHeaders[Headers.Accept] = this._getExistingOrDefaultHeader(additionalHeaders, Headers.Accept, MediaTypes.ApplicationJson);\n additionalHeaders[Headers.ContentType] = this._getExistingOrDefaultHeader(additionalHeaders, Headers.ContentType, MediaTypes.ApplicationJson);\n const res = yield this.patch(requestUrl, data, additionalHeaders);\n return this._processResponse(res, this.requestOptions);\n });\n }\n /**\n * Makes a raw http request.\n * All other methods such as get, post, patch, and request ultimately call this.\n * Prefer get, del, post and patch\n */\n request(verb, requestUrl, data, headers) {\n return __awaiter(this, void 0, void 0, function* () {\n if (this._disposed) {\n throw new Error('Client has already been disposed.');\n }\n const parsedUrl = new URL(requestUrl);\n let info = this._prepareRequest(verb, parsedUrl, headers);\n // Only perform retries on reads since writes may not be idempotent.\n const maxTries = this._allowRetries && RetryableHttpVerbs.includes(verb)\n ? this._maxRetries + 1\n : 1;\n let numTries = 0;\n let response;\n do {\n response = yield this.requestRaw(info, data);\n // Check if it's an authentication challenge\n if (response &&\n response.message &&\n response.message.statusCode === HttpCodes.Unauthorized) {\n let authenticationHandler;\n for (const handler of this.handlers) {\n if (handler.canHandleAuthentication(response)) {\n authenticationHandler = handler;\n break;\n }\n }\n if (authenticationHandler) {\n return authenticationHandler.handleAuthentication(this, info, data);\n }\n else {\n // We have received an unauthorized response but have no handlers to handle it.\n // Let the response return to the caller.\n return response;\n }\n }\n let redirectsRemaining = this._maxRedirects;\n while (response.message.statusCode &&\n HttpRedirectCodes.includes(response.message.statusCode) &&\n this._allowRedirects &&\n redirectsRemaining > 0) {\n const redirectUrl = response.message.headers['location'];\n if (!redirectUrl) {\n // if there's no location to redirect to, we won't\n break;\n }\n const parsedRedirectUrl = new URL(redirectUrl);\n if (parsedUrl.protocol === 'https:' &&\n parsedUrl.protocol !== parsedRedirectUrl.protocol &&\n !this._allowRedirectDowngrade) {\n throw new Error('Redirect from HTTPS to HTTP protocol. This downgrade is not allowed for security reasons. If you want to allow this behavior, set the allowRedirectDowngrade option to true.');\n }\n // we need to finish reading the response before reassigning response\n // which will leak the open socket.\n yield response.readBody();\n // strip authorization header if redirected to a different hostname\n if (parsedRedirectUrl.hostname !== parsedUrl.hostname) {\n for (const header in headers) {\n // header names are case insensitive\n if (header.toLowerCase() === 'authorization') {\n delete headers[header];\n }\n }\n }\n // let's make the request with the new redirectUrl\n info = this._prepareRequest(verb, parsedRedirectUrl, headers);\n response = yield this.requestRaw(info, data);\n redirectsRemaining--;\n }\n if (!response.message.statusCode ||\n !HttpResponseRetryCodes.includes(response.message.statusCode)) {\n // If not a retry code, return immediately instead of retrying\n return response;\n }\n numTries += 1;\n if (numTries < maxTries) {\n yield response.readBody();\n yield this._performExponentialBackoff(numTries);\n }\n } while (numTries < maxTries);\n return response;\n });\n }\n /**\n * Needs to be called if keepAlive is set to true in request options.\n */\n dispose() {\n if (this._agent) {\n this._agent.destroy();\n }\n this._disposed = true;\n }\n /**\n * Raw request.\n * @param info\n * @param data\n */\n requestRaw(info, data) {\n return __awaiter(this, void 0, void 0, function* () {\n return new Promise((resolve, reject) => {\n function callbackForResult(err, res) {\n if (err) {\n reject(err);\n }\n else if (!res) {\n // If `err` is not passed, then `res` must be passed.\n reject(new Error('Unknown error'));\n }\n else {\n resolve(res);\n }\n }\n this.requestRawWithCallback(info, data, callbackForResult);\n });\n });\n }\n /**\n * Raw request with callback.\n * @param info\n * @param data\n * @param onResult\n */\n requestRawWithCallback(info, data, onResult) {\n if (typeof data === 'string') {\n if (!info.options.headers) {\n info.options.headers = {};\n }\n info.options.headers['Content-Length'] = Buffer.byteLength(data, 'utf8');\n }\n let callbackCalled = false;\n function handleResult(err, res) {\n if (!callbackCalled) {\n callbackCalled = true;\n onResult(err, res);\n }\n }\n const req = info.httpModule.request(info.options, (msg) => {\n const res = new HttpClientResponse(msg);\n handleResult(undefined, res);\n });\n let socket;\n req.on('socket', sock => {\n socket = sock;\n });\n // If we ever get disconnected, we want the socket to timeout eventually\n req.setTimeout(this._socketTimeout || 3 * 60000, () => {\n if (socket) {\n socket.end();\n }\n handleResult(new Error(`Request timeout: ${info.options.path}`));\n });\n req.on('error', function (err) {\n // err has statusCode property\n // res should have headers\n handleResult(err);\n });\n if (data && typeof data === 'string') {\n req.write(data, 'utf8');\n }\n if (data && typeof data !== 'string') {\n data.on('close', function () {\n req.end();\n });\n data.pipe(req);\n }\n else {\n req.end();\n }\n }\n /**\n * Gets an http agent. This function is useful when you need an http agent that handles\n * routing through a proxy server - depending upon the url and proxy environment variables.\n * @param serverUrl The server URL where the request will be sent. For example, https://api.github.com\n */\n getAgent(serverUrl) {\n const parsedUrl = new URL(serverUrl);\n return this._getAgent(parsedUrl);\n }\n getAgentDispatcher(serverUrl) {\n const parsedUrl = new URL(serverUrl);\n const proxyUrl = pm.getProxyUrl(parsedUrl);\n const useProxy = proxyUrl && proxyUrl.hostname;\n if (!useProxy) {\n return;\n }\n return this._getProxyAgentDispatcher(parsedUrl, proxyUrl);\n }\n _prepareRequest(method, requestUrl, headers) {\n const info = {};\n info.parsedUrl = requestUrl;\n const usingSsl = info.parsedUrl.protocol === 'https:';\n info.httpModule = usingSsl ? https : http;\n const defaultPort = usingSsl ? 443 : 80;\n info.options = {};\n info.options.host = info.parsedUrl.hostname;\n info.options.port = info.parsedUrl.port\n ? parseInt(info.parsedUrl.port)\n : defaultPort;\n info.options.path =\n (info.parsedUrl.pathname || '') + (info.parsedUrl.search || '');\n info.options.method = method;\n info.options.headers = this._mergeHeaders(headers);\n if (this.userAgent != null) {\n info.options.headers['user-agent'] = this.userAgent;\n }\n info.options.agent = this._getAgent(info.parsedUrl);\n // gives handlers an opportunity to participate\n if (this.handlers) {\n for (const handler of this.handlers) {\n handler.prepareRequest(info.options);\n }\n }\n return info;\n }\n _mergeHeaders(headers) {\n if (this.requestOptions && this.requestOptions.headers) {\n return Object.assign({}, lowercaseKeys(this.requestOptions.headers), lowercaseKeys(headers || {}));\n }\n return lowercaseKeys(headers || {});\n }\n _getExistingOrDefaultHeader(additionalHeaders, header, _default) {\n let clientHeader;\n if (this.requestOptions && this.requestOptions.headers) {\n clientHeader = lowercaseKeys(this.requestOptions.headers)[header];\n }\n return additionalHeaders[header] || clientHeader || _default;\n }\n _getAgent(parsedUrl) {\n let agent;\n const proxyUrl = pm.getProxyUrl(parsedUrl);\n const useProxy = proxyUrl && proxyUrl.hostname;\n if (this._keepAlive && useProxy) {\n agent = this._proxyAgent;\n }\n if (!useProxy) {\n agent = this._agent;\n }\n // if agent is already assigned use that agent.\n if (agent) {\n return agent;\n }\n const usingSsl = parsedUrl.protocol === 'https:';\n let maxSockets = 100;\n if (this.requestOptions) {\n maxSockets = this.requestOptions.maxSockets || http.globalAgent.maxSockets;\n }\n // This is `useProxy` again, but we need to check `proxyURl` directly for TypeScripts's flow analysis.\n if (proxyUrl && proxyUrl.hostname) {\n const agentOptions = {\n maxSockets,\n keepAlive: this._keepAlive,\n proxy: Object.assign(Object.assign({}, ((proxyUrl.username || proxyUrl.password) && {\n proxyAuth: `${proxyUrl.username}:${proxyUrl.password}`\n })), { host: proxyUrl.hostname, port: proxyUrl.port })\n };\n let tunnelAgent;\n const overHttps = proxyUrl.protocol === 'https:';\n if (usingSsl) {\n tunnelAgent = overHttps ? tunnel.httpsOverHttps : tunnel.httpsOverHttp;\n }\n else {\n tunnelAgent = overHttps ? tunnel.httpOverHttps : tunnel.httpOverHttp;\n }\n agent = tunnelAgent(agentOptions);\n this._proxyAgent = agent;\n }\n // if tunneling agent isn't assigned create a new agent\n if (!agent) {\n const options = { keepAlive: this._keepAlive, maxSockets };\n agent = usingSsl ? new https.Agent(options) : new http.Agent(options);\n this._agent = agent;\n }\n if (usingSsl && this._ignoreSslError) {\n // we don't want to set NODE_TLS_REJECT_UNAUTHORIZED=0 since that will affect request for entire process\n // http.RequestOptions doesn't expose a way to modify RequestOptions.agent.options\n // we have to cast it to any and change it directly\n agent.options = Object.assign(agent.options || {}, {\n rejectUnauthorized: false\n });\n }\n return agent;\n }\n _getProxyAgentDispatcher(parsedUrl, proxyUrl) {\n let proxyAgent;\n if (this._keepAlive) {\n proxyAgent = this._proxyAgentDispatcher;\n }\n // if agent is already assigned use that agent.\n if (proxyAgent) {\n return proxyAgent;\n }\n const usingSsl = parsedUrl.protocol === 'https:';\n proxyAgent = new undici_1.ProxyAgent(Object.assign({ uri: proxyUrl.href, pipelining: !this._keepAlive ? 0 : 1 }, ((proxyUrl.username || proxyUrl.password) && {\n token: `Basic ${Buffer.from(`${proxyUrl.username}:${proxyUrl.password}`).toString('base64')}`\n })));\n this._proxyAgentDispatcher = proxyAgent;\n if (usingSsl && this._ignoreSslError) {\n // we don't want to set NODE_TLS_REJECT_UNAUTHORIZED=0 since that will affect request for entire process\n // http.RequestOptions doesn't expose a way to modify RequestOptions.agent.options\n // we have to cast it to any and change it directly\n proxyAgent.options = Object.assign(proxyAgent.options.requestTls || {}, {\n rejectUnauthorized: false\n });\n }\n return proxyAgent;\n }\n _performExponentialBackoff(retryNumber) {\n return __awaiter(this, void 0, void 0, function* () {\n retryNumber = Math.min(ExponentialBackoffCeiling, retryNumber);\n const ms = ExponentialBackoffTimeSlice * Math.pow(2, retryNumber);\n return new Promise(resolve => setTimeout(() => resolve(), ms));\n });\n }\n _processResponse(res, options) {\n return __awaiter(this, void 0, void 0, function* () {\n return new Promise((resolve, reject) => __awaiter(this, void 0, void 0, function* () {\n const statusCode = res.message.statusCode || 0;\n const response = {\n statusCode,\n result: null,\n headers: {}\n };\n // not found leads to null obj returned\n if (statusCode === HttpCodes.NotFound) {\n resolve(response);\n }\n // get the result from the body\n function dateTimeDeserializer(key, value) {\n if (typeof value === 'string') {\n const a = new Date(value);\n if (!isNaN(a.valueOf())) {\n return a;\n }\n }\n return value;\n }\n let obj;\n let contents;\n try {\n contents = yield res.readBody();\n if (contents && contents.length > 0) {\n if (options && options.deserializeDates) {\n obj = JSON.parse(contents, dateTimeDeserializer);\n }\n else {\n obj = JSON.parse(contents);\n }\n response.result = obj;\n }\n response.headers = res.message.headers;\n }\n catch (err) {\n // Invalid resource (contents not json); leaving result obj null\n }\n // note that 3xx redirects are handled by the http layer.\n if (statusCode > 299) {\n let msg;\n // if exception/error in body, attempt to get better error\n if (obj && obj.message) {\n msg = obj.message;\n }\n else if (contents && contents.length > 0) {\n // it may be the case that the exception is in the body message as string\n msg = contents;\n }\n else {\n msg = `Failed request: (${statusCode})`;\n }\n const err = new HttpClientError(msg, statusCode);\n err.result = response.result;\n reject(err);\n }\n else {\n resolve(response);\n }\n }));\n });\n }\n}\nexports.HttpClient = HttpClient;\nconst lowercaseKeys = (obj) => Object.keys(obj).reduce((c, k) => ((c[k.toLowerCase()] = obj[k]), c), {});\n//# sourceMappingURL=index.js.map","\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.PersonalAccessTokenCredentialHandler = exports.BearerCredentialHandler = exports.BasicCredentialHandler = void 0;\nclass BasicCredentialHandler {\n constructor(username, password) {\n this.username = username;\n this.password = password;\n }\n prepareRequest(options) {\n if (!options.headers) {\n throw Error('The request has no headers');\n }\n options.headers['Authorization'] = `Basic ${Buffer.from(`${this.username}:${this.password}`).toString('base64')}`;\n }\n // This handler cannot handle 401\n canHandleAuthentication() {\n return false;\n }\n handleAuthentication() {\n return __awaiter(this, void 0, void 0, function* () {\n throw new Error('not implemented');\n });\n }\n}\nexports.BasicCredentialHandler = BasicCredentialHandler;\nclass BearerCredentialHandler {\n constructor(token) {\n this.token = token;\n }\n // currently implements pre-authorization\n // TODO: support preAuth = false where it hooks on 401\n prepareRequest(options) {\n if (!options.headers) {\n throw Error('The request has no headers');\n }\n options.headers['Authorization'] = `Bearer ${this.token}`;\n }\n // This handler cannot handle 401\n canHandleAuthentication() {\n return false;\n }\n handleAuthentication() {\n return __awaiter(this, void 0, void 0, function* () {\n throw new Error('not implemented');\n });\n }\n}\nexports.BearerCredentialHandler = BearerCredentialHandler;\nclass PersonalAccessTokenCredentialHandler {\n constructor(token) {\n this.token = token;\n }\n // currently implements pre-authorization\n // TODO: support preAuth = false where it hooks on 401\n prepareRequest(options) {\n if (!options.headers) {\n throw Error('The request has no headers');\n }\n options.headers['Authorization'] = `Basic ${Buffer.from(`PAT:${this.token}`).toString('base64')}`;\n }\n // This handler cannot handle 401\n canHandleAuthentication() {\n return false;\n }\n handleAuthentication() {\n return __awaiter(this, void 0, void 0, function* () {\n throw new Error('not implemented');\n });\n }\n}\nexports.PersonalAccessTokenCredentialHandler = PersonalAccessTokenCredentialHandler;\n//# sourceMappingURL=auth.js.map","\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.OidcClient = void 0;\nconst http_client_1 = require(\"@actions/http-client\");\nconst auth_1 = require(\"@actions/http-client/lib/auth\");\nconst core_1 = require(\"./core\");\nclass OidcClient {\n static createHttpClient(allowRetry = true, maxRetry = 10) {\n const requestOptions = {\n allowRetries: allowRetry,\n maxRetries: maxRetry\n };\n return new http_client_1.HttpClient('actions/oidc-client', [new auth_1.BearerCredentialHandler(OidcClient.getRequestToken())], requestOptions);\n }\n static getRequestToken() {\n const token = process.env['ACTIONS_ID_TOKEN_REQUEST_TOKEN'];\n if (!token) {\n throw new Error('Unable to get ACTIONS_ID_TOKEN_REQUEST_TOKEN env variable');\n }\n return token;\n }\n static getIDTokenUrl() {\n const runtimeUrl = process.env['ACTIONS_ID_TOKEN_REQUEST_URL'];\n if (!runtimeUrl) {\n throw new Error('Unable to get ACTIONS_ID_TOKEN_REQUEST_URL env variable');\n }\n return runtimeUrl;\n }\n static getCall(id_token_url) {\n var _a;\n return __awaiter(this, void 0, void 0, function* () {\n const httpclient = OidcClient.createHttpClient();\n const res = yield httpclient\n .getJson(id_token_url)\n .catch(error => {\n throw new Error(`Failed to get ID Token. \\n \n Error Code : ${error.statusCode}\\n \n Error Message: ${error.message}`);\n });\n const id_token = (_a = res.result) === null || _a === void 0 ? void 0 : _a.value;\n if (!id_token) {\n throw new Error('Response json body do not have ID Token field');\n }\n return id_token;\n });\n }\n static getIDToken(audience) {\n return __awaiter(this, void 0, void 0, function* () {\n try {\n // New ID Token is requested from action service\n let id_token_url = OidcClient.getIDTokenUrl();\n if (audience) {\n const encodedAudience = encodeURIComponent(audience);\n id_token_url = `${id_token_url}&audience=${encodedAudience}`;\n }\n (0, core_1.debug)(`ID token url is ${id_token_url}`);\n const id_token = yield OidcClient.getCall(id_token_url);\n (0, core_1.setSecret)(id_token);\n return id_token;\n }\n catch (error) {\n throw new Error(`Error message: ${error.message}`);\n }\n });\n }\n}\nexports.OidcClient = OidcClient;\n//# sourceMappingURL=oidc-utils.js.map","\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.summary = exports.markdownSummary = exports.SUMMARY_DOCS_URL = exports.SUMMARY_ENV_VAR = void 0;\nconst os_1 = require(\"os\");\nconst fs_1 = require(\"fs\");\nconst { access, appendFile, writeFile } = fs_1.promises;\nexports.SUMMARY_ENV_VAR = 'GITHUB_STEP_SUMMARY';\nexports.SUMMARY_DOCS_URL = 'https://docs.github.com/actions/using-workflows/workflow-commands-for-github-actions#adding-a-job-summary';\nclass Summary {\n constructor() {\n this._buffer = '';\n }\n /**\n * Finds the summary file path from the environment, rejects if env var is not found or file does not exist\n * Also checks r/w permissions.\n *\n * @returns step summary file path\n */\n filePath() {\n return __awaiter(this, void 0, void 0, function* () {\n if (this._filePath) {\n return this._filePath;\n }\n const pathFromEnv = process.env[exports.SUMMARY_ENV_VAR];\n if (!pathFromEnv) {\n throw new Error(`Unable to find environment variable for $${exports.SUMMARY_ENV_VAR}. Check if your runtime environment supports job summaries.`);\n }\n try {\n yield access(pathFromEnv, fs_1.constants.R_OK | fs_1.constants.W_OK);\n }\n catch (_a) {\n throw new Error(`Unable to access summary file: '${pathFromEnv}'. Check if the file has correct read/write permissions.`);\n }\n this._filePath = pathFromEnv;\n return this._filePath;\n });\n }\n /**\n * Wraps content in an HTML tag, adding any HTML attributes\n *\n * @param {string} tag HTML tag to wrap\n * @param {string | null} content content within the tag\n * @param {[attribute: string]: string} attrs key-value list of HTML attributes to add\n *\n * @returns {string} content wrapped in HTML element\n */\n wrap(tag, content, attrs = {}) {\n const htmlAttrs = Object.entries(attrs)\n .map(([key, value]) => ` ${key}=\"${value}\"`)\n .join('');\n if (!content) {\n return `<${tag}${htmlAttrs}>`;\n }\n return `<${tag}${htmlAttrs}>${content}`;\n }\n /**\n * Writes text in the buffer to the summary buffer file and empties buffer. Will append by default.\n *\n * @param {SummaryWriteOptions} [options] (optional) options for write operation\n *\n * @returns {Promise} summary instance\n */\n write(options) {\n return __awaiter(this, void 0, void 0, function* () {\n const overwrite = !!(options === null || options === void 0 ? void 0 : options.overwrite);\n const filePath = yield this.filePath();\n const writeFunc = overwrite ? writeFile : appendFile;\n yield writeFunc(filePath, this._buffer, { encoding: 'utf8' });\n return this.emptyBuffer();\n });\n }\n /**\n * Clears the summary buffer and wipes the summary file\n *\n * @returns {Summary} summary instance\n */\n clear() {\n return __awaiter(this, void 0, void 0, function* () {\n return this.emptyBuffer().write({ overwrite: true });\n });\n }\n /**\n * Returns the current summary buffer as a string\n *\n * @returns {string} string of summary buffer\n */\n stringify() {\n return this._buffer;\n }\n /**\n * If the summary buffer is empty\n *\n * @returns {boolen} true if the buffer is empty\n */\n isEmptyBuffer() {\n return this._buffer.length === 0;\n }\n /**\n * Resets the summary buffer without writing to summary file\n *\n * @returns {Summary} summary instance\n */\n emptyBuffer() {\n this._buffer = '';\n return this;\n }\n /**\n * Adds raw text to the summary buffer\n *\n * @param {string} text content to add\n * @param {boolean} [addEOL=false] (optional) append an EOL to the raw text (default: false)\n *\n * @returns {Summary} summary instance\n */\n addRaw(text, addEOL = false) {\n this._buffer += text;\n return addEOL ? this.addEOL() : this;\n }\n /**\n * Adds the operating system-specific end-of-line marker to the buffer\n *\n * @returns {Summary} summary instance\n */\n addEOL() {\n return this.addRaw(os_1.EOL);\n }\n /**\n * Adds an HTML codeblock to the summary buffer\n *\n * @param {string} code content to render within fenced code block\n * @param {string} lang (optional) language to syntax highlight code\n *\n * @returns {Summary} summary instance\n */\n addCodeBlock(code, lang) {\n const attrs = Object.assign({}, (lang && { lang }));\n const element = this.wrap('pre', this.wrap('code', code), attrs);\n return this.addRaw(element).addEOL();\n }\n /**\n * Adds an HTML list to the summary buffer\n *\n * @param {string[]} items list of items to render\n * @param {boolean} [ordered=false] (optional) if the rendered list should be ordered or not (default: false)\n *\n * @returns {Summary} summary instance\n */\n addList(items, ordered = false) {\n const tag = ordered ? 'ol' : 'ul';\n const listItems = items.map(item => this.wrap('li', item)).join('');\n const element = this.wrap(tag, listItems);\n return this.addRaw(element).addEOL();\n }\n /**\n * Adds an HTML table to the summary buffer\n *\n * @param {SummaryTableCell[]} rows table rows\n *\n * @returns {Summary} summary instance\n */\n addTable(rows) {\n const tableBody = rows\n .map(row => {\n const cells = row\n .map(cell => {\n if (typeof cell === 'string') {\n return this.wrap('td', cell);\n }\n const { header, data, colspan, rowspan } = cell;\n const tag = header ? 'th' : 'td';\n const attrs = Object.assign(Object.assign({}, (colspan && { colspan })), (rowspan && { rowspan }));\n return this.wrap(tag, data, attrs);\n })\n .join('');\n return this.wrap('tr', cells);\n })\n .join('');\n const element = this.wrap('table', tableBody);\n return this.addRaw(element).addEOL();\n }\n /**\n * Adds a collapsable HTML details element to the summary buffer\n *\n * @param {string} label text for the closed state\n * @param {string} content collapsable content\n *\n * @returns {Summary} summary instance\n */\n addDetails(label, content) {\n const element = this.wrap('details', this.wrap('summary', label) + content);\n return this.addRaw(element).addEOL();\n }\n /**\n * Adds an HTML image tag to the summary buffer\n *\n * @param {string} src path to the image you to embed\n * @param {string} alt text description of the image\n * @param {SummaryImageOptions} options (optional) addition image attributes\n *\n * @returns {Summary} summary instance\n */\n addImage(src, alt, options) {\n const { width, height } = options || {};\n const attrs = Object.assign(Object.assign({}, (width && { width })), (height && { height }));\n const element = this.wrap('img', null, Object.assign({ src, alt }, attrs));\n return this.addRaw(element).addEOL();\n }\n /**\n * Adds an HTML section heading element\n *\n * @param {string} text heading text\n * @param {number | string} [level=1] (optional) the heading level, default: 1\n *\n * @returns {Summary} summary instance\n */\n addHeading(text, level) {\n const tag = `h${level}`;\n const allowedTag = ['h1', 'h2', 'h3', 'h4', 'h5', 'h6'].includes(tag)\n ? tag\n : 'h1';\n const element = this.wrap(allowedTag, text);\n return this.addRaw(element).addEOL();\n }\n /**\n * Adds an HTML thematic break (
) to the summary buffer\n *\n * @returns {Summary} summary instance\n */\n addSeparator() {\n const element = this.wrap('hr', null);\n return this.addRaw(element).addEOL();\n }\n /**\n * Adds an HTML line break (
) to the summary buffer\n *\n * @returns {Summary} summary instance\n */\n addBreak() {\n const element = this.wrap('br', null);\n return this.addRaw(element).addEOL();\n }\n /**\n * Adds an HTML blockquote to the summary buffer\n *\n * @param {string} text quote text\n * @param {string} cite (optional) citation url\n *\n * @returns {Summary} summary instance\n */\n addQuote(text, cite) {\n const attrs = Object.assign({}, (cite && { cite }));\n const element = this.wrap('blockquote', text, attrs);\n return this.addRaw(element).addEOL();\n }\n /**\n * Adds an HTML anchor tag to the summary buffer\n *\n * @param {string} text link text/content\n * @param {string} href hyperlink\n *\n * @returns {Summary} summary instance\n */\n addLink(text, href) {\n const element = this.wrap('a', text, { href });\n return this.addRaw(element).addEOL();\n }\n}\nconst _summary = new Summary();\n/**\n * @deprecated use `core.summary`\n */\nexports.markdownSummary = _summary;\nexports.summary = _summary;\n//# sourceMappingURL=summary.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.toPlatformPath = exports.toWin32Path = exports.toPosixPath = void 0;\nconst path = __importStar(require(\"path\"));\n/**\n * toPosixPath converts the given path to the posix form. On Windows, \\\\ will be\n * replaced with /.\n *\n * @param pth. Path to transform.\n * @return string Posix path.\n */\nfunction toPosixPath(pth) {\n return pth.replace(/[\\\\]/g, '/');\n}\nexports.toPosixPath = toPosixPath;\n/**\n * toWin32Path converts the given path to the win32 form. On Linux, / will be\n * replaced with \\\\.\n *\n * @param pth. Path to transform.\n * @return string Win32 path.\n */\nfunction toWin32Path(pth) {\n return pth.replace(/[/]/g, '\\\\');\n}\nexports.toWin32Path = toWin32Path;\n/**\n * toPlatformPath converts the given path to a platform-specific path. It does\n * this by replacing instances of / and \\ with the platform-specific path\n * separator.\n *\n * @param pth The path to platformize.\n * @return string The platform-specific path.\n */\nfunction toPlatformPath(pth) {\n return pth.replace(/[/\\\\]/g, path.sep);\n}\nexports.toPlatformPath = toPlatformPath;\n//# sourceMappingURL=path-utils.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar _a;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getCmdPath = exports.tryGetExecutablePath = exports.isRooted = exports.isDirectory = exports.exists = exports.READONLY = exports.UV_FS_O_EXLOCK = exports.IS_WINDOWS = exports.unlink = exports.symlink = exports.stat = exports.rmdir = exports.rm = exports.rename = exports.readlink = exports.readdir = exports.open = exports.mkdir = exports.lstat = exports.copyFile = exports.chmod = void 0;\nconst fs = __importStar(require(\"fs\"));\nconst path = __importStar(require(\"path\"));\n_a = fs.promises\n// export const {open} = 'fs'\n, exports.chmod = _a.chmod, exports.copyFile = _a.copyFile, exports.lstat = _a.lstat, exports.mkdir = _a.mkdir, exports.open = _a.open, exports.readdir = _a.readdir, exports.readlink = _a.readlink, exports.rename = _a.rename, exports.rm = _a.rm, exports.rmdir = _a.rmdir, exports.stat = _a.stat, exports.symlink = _a.symlink, exports.unlink = _a.unlink;\n// export const {open} = 'fs'\nexports.IS_WINDOWS = process.platform === 'win32';\n// See https://github.com/nodejs/node/blob/d0153aee367422d0858105abec186da4dff0a0c5/deps/uv/include/uv/win.h#L691\nexports.UV_FS_O_EXLOCK = 0x10000000;\nexports.READONLY = fs.constants.O_RDONLY;\nfunction exists(fsPath) {\n return __awaiter(this, void 0, void 0, function* () {\n try {\n yield exports.stat(fsPath);\n }\n catch (err) {\n if (err.code === 'ENOENT') {\n return false;\n }\n throw err;\n }\n return true;\n });\n}\nexports.exists = exists;\nfunction isDirectory(fsPath, useStat = false) {\n return __awaiter(this, void 0, void 0, function* () {\n const stats = useStat ? yield exports.stat(fsPath) : yield exports.lstat(fsPath);\n return stats.isDirectory();\n });\n}\nexports.isDirectory = isDirectory;\n/**\n * On OSX/Linux, true if path starts with '/'. On Windows, true for paths like:\n * \\, \\hello, \\\\hello\\share, C:, and C:\\hello (and corresponding alternate separator cases).\n */\nfunction isRooted(p) {\n p = normalizeSeparators(p);\n if (!p) {\n throw new Error('isRooted() parameter \"p\" cannot be empty');\n }\n if (exports.IS_WINDOWS) {\n return (p.startsWith('\\\\') || /^[A-Z]:/i.test(p) // e.g. \\ or \\hello or \\\\hello\n ); // e.g. C: or C:\\hello\n }\n return p.startsWith('/');\n}\nexports.isRooted = isRooted;\n/**\n * Best effort attempt to determine whether a file exists and is executable.\n * @param filePath file path to check\n * @param extensions additional file extensions to try\n * @return if file exists and is executable, returns the file path. otherwise empty string.\n */\nfunction tryGetExecutablePath(filePath, extensions) {\n return __awaiter(this, void 0, void 0, function* () {\n let stats = undefined;\n try {\n // test file exists\n stats = yield exports.stat(filePath);\n }\n catch (err) {\n if (err.code !== 'ENOENT') {\n // eslint-disable-next-line no-console\n console.log(`Unexpected error attempting to determine if executable file exists '${filePath}': ${err}`);\n }\n }\n if (stats && stats.isFile()) {\n if (exports.IS_WINDOWS) {\n // on Windows, test for valid extension\n const upperExt = path.extname(filePath).toUpperCase();\n if (extensions.some(validExt => validExt.toUpperCase() === upperExt)) {\n return filePath;\n }\n }\n else {\n if (isUnixExecutable(stats)) {\n return filePath;\n }\n }\n }\n // try each extension\n const originalFilePath = filePath;\n for (const extension of extensions) {\n filePath = originalFilePath + extension;\n stats = undefined;\n try {\n stats = yield exports.stat(filePath);\n }\n catch (err) {\n if (err.code !== 'ENOENT') {\n // eslint-disable-next-line no-console\n console.log(`Unexpected error attempting to determine if executable file exists '${filePath}': ${err}`);\n }\n }\n if (stats && stats.isFile()) {\n if (exports.IS_WINDOWS) {\n // preserve the case of the actual file (since an extension was appended)\n try {\n const directory = path.dirname(filePath);\n const upperName = path.basename(filePath).toUpperCase();\n for (const actualName of yield exports.readdir(directory)) {\n if (upperName === actualName.toUpperCase()) {\n filePath = path.join(directory, actualName);\n break;\n }\n }\n }\n catch (err) {\n // eslint-disable-next-line no-console\n console.log(`Unexpected error attempting to determine the actual case of the file '${filePath}': ${err}`);\n }\n return filePath;\n }\n else {\n if (isUnixExecutable(stats)) {\n return filePath;\n }\n }\n }\n }\n return '';\n });\n}\nexports.tryGetExecutablePath = tryGetExecutablePath;\nfunction normalizeSeparators(p) {\n p = p || '';\n if (exports.IS_WINDOWS) {\n // convert slashes on Windows\n p = p.replace(/\\//g, '\\\\');\n // remove redundant slashes\n return p.replace(/\\\\\\\\+/g, '\\\\');\n }\n // remove redundant slashes\n return p.replace(/\\/\\/+/g, '/');\n}\n// on Mac/Linux, test the execute bit\n// R W X R W X R W X\n// 256 128 64 32 16 8 4 2 1\nfunction isUnixExecutable(stats) {\n return ((stats.mode & 1) > 0 ||\n ((stats.mode & 8) > 0 && stats.gid === process.getgid()) ||\n ((stats.mode & 64) > 0 && stats.uid === process.getuid()));\n}\n// Get the path of cmd.exe in windows\nfunction getCmdPath() {\n var _a;\n return (_a = process.env['COMSPEC']) !== null && _a !== void 0 ? _a : `cmd.exe`;\n}\nexports.getCmdPath = getCmdPath;\n//# sourceMappingURL=io-util.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.findInPath = exports.which = exports.mkdirP = exports.rmRF = exports.mv = exports.cp = void 0;\nconst assert_1 = require(\"assert\");\nconst path = __importStar(require(\"path\"));\nconst ioUtil = __importStar(require(\"./io-util\"));\n/**\n * Copies a file or folder.\n * Based off of shelljs - https://github.com/shelljs/shelljs/blob/9237f66c52e5daa40458f94f9565e18e8132f5a6/src/cp.js\n *\n * @param source source path\n * @param dest destination path\n * @param options optional. See CopyOptions.\n */\nfunction cp(source, dest, options = {}) {\n return __awaiter(this, void 0, void 0, function* () {\n const { force, recursive, copySourceDirectory } = readCopyOptions(options);\n const destStat = (yield ioUtil.exists(dest)) ? yield ioUtil.stat(dest) : null;\n // Dest is an existing file, but not forcing\n if (destStat && destStat.isFile() && !force) {\n return;\n }\n // If dest is an existing directory, should copy inside.\n const newDest = destStat && destStat.isDirectory() && copySourceDirectory\n ? path.join(dest, path.basename(source))\n : dest;\n if (!(yield ioUtil.exists(source))) {\n throw new Error(`no such file or directory: ${source}`);\n }\n const sourceStat = yield ioUtil.stat(source);\n if (sourceStat.isDirectory()) {\n if (!recursive) {\n throw new Error(`Failed to copy. ${source} is a directory, but tried to copy without recursive flag.`);\n }\n else {\n yield cpDirRecursive(source, newDest, 0, force);\n }\n }\n else {\n if (path.relative(source, newDest) === '') {\n // a file cannot be copied to itself\n throw new Error(`'${newDest}' and '${source}' are the same file`);\n }\n yield copyFile(source, newDest, force);\n }\n });\n}\nexports.cp = cp;\n/**\n * Moves a path.\n *\n * @param source source path\n * @param dest destination path\n * @param options optional. See MoveOptions.\n */\nfunction mv(source, dest, options = {}) {\n return __awaiter(this, void 0, void 0, function* () {\n if (yield ioUtil.exists(dest)) {\n let destExists = true;\n if (yield ioUtil.isDirectory(dest)) {\n // If dest is directory copy src into dest\n dest = path.join(dest, path.basename(source));\n destExists = yield ioUtil.exists(dest);\n }\n if (destExists) {\n if (options.force == null || options.force) {\n yield rmRF(dest);\n }\n else {\n throw new Error('Destination already exists');\n }\n }\n }\n yield mkdirP(path.dirname(dest));\n yield ioUtil.rename(source, dest);\n });\n}\nexports.mv = mv;\n/**\n * Remove a path recursively with force\n *\n * @param inputPath path to remove\n */\nfunction rmRF(inputPath) {\n return __awaiter(this, void 0, void 0, function* () {\n if (ioUtil.IS_WINDOWS) {\n // Check for invalid characters\n // https://docs.microsoft.com/en-us/windows/win32/fileio/naming-a-file\n if (/[*\"<>|]/.test(inputPath)) {\n throw new Error('File path must not contain `*`, `\"`, `<`, `>` or `|` on Windows');\n }\n }\n try {\n // note if path does not exist, error is silent\n yield ioUtil.rm(inputPath, {\n force: true,\n maxRetries: 3,\n recursive: true,\n retryDelay: 300\n });\n }\n catch (err) {\n throw new Error(`File was unable to be removed ${err}`);\n }\n });\n}\nexports.rmRF = rmRF;\n/**\n * Make a directory. Creates the full path with folders in between\n * Will throw if it fails\n *\n * @param fsPath path to create\n * @returns Promise\n */\nfunction mkdirP(fsPath) {\n return __awaiter(this, void 0, void 0, function* () {\n assert_1.ok(fsPath, 'a path argument must be provided');\n yield ioUtil.mkdir(fsPath, { recursive: true });\n });\n}\nexports.mkdirP = mkdirP;\n/**\n * Returns path of a tool had the tool actually been invoked. Resolves via paths.\n * If you check and the tool does not exist, it will throw.\n *\n * @param tool name of the tool\n * @param check whether to check if tool exists\n * @returns Promise path to tool\n */\nfunction which(tool, check) {\n return __awaiter(this, void 0, void 0, function* () {\n if (!tool) {\n throw new Error(\"parameter 'tool' is required\");\n }\n // recursive when check=true\n if (check) {\n const result = yield which(tool, false);\n if (!result) {\n if (ioUtil.IS_WINDOWS) {\n throw new Error(`Unable to locate executable file: ${tool}. Please verify either the file path exists or the file can be found within a directory specified by the PATH environment variable. Also verify the file has a valid extension for an executable file.`);\n }\n else {\n throw new Error(`Unable to locate executable file: ${tool}. Please verify either the file path exists or the file can be found within a directory specified by the PATH environment variable. Also check the file mode to verify the file is executable.`);\n }\n }\n return result;\n }\n const matches = yield findInPath(tool);\n if (matches && matches.length > 0) {\n return matches[0];\n }\n return '';\n });\n}\nexports.which = which;\n/**\n * Returns a list of all occurrences of the given tool on the system path.\n *\n * @returns Promise the paths of the tool\n */\nfunction findInPath(tool) {\n return __awaiter(this, void 0, void 0, function* () {\n if (!tool) {\n throw new Error(\"parameter 'tool' is required\");\n }\n // build the list of extensions to try\n const extensions = [];\n if (ioUtil.IS_WINDOWS && process.env['PATHEXT']) {\n for (const extension of process.env['PATHEXT'].split(path.delimiter)) {\n if (extension) {\n extensions.push(extension);\n }\n }\n }\n // if it's rooted, return it if exists. otherwise return empty.\n if (ioUtil.isRooted(tool)) {\n const filePath = yield ioUtil.tryGetExecutablePath(tool, extensions);\n if (filePath) {\n return [filePath];\n }\n return [];\n }\n // if any path separators, return empty\n if (tool.includes(path.sep)) {\n return [];\n }\n // build the list of directories\n //\n // Note, technically \"where\" checks the current directory on Windows. From a toolkit perspective,\n // it feels like we should not do this. Checking the current directory seems like more of a use\n // case of a shell, and the which() function exposed by the toolkit should strive for consistency\n // across platforms.\n const directories = [];\n if (process.env.PATH) {\n for (const p of process.env.PATH.split(path.delimiter)) {\n if (p) {\n directories.push(p);\n }\n }\n }\n // find all matches\n const matches = [];\n for (const directory of directories) {\n const filePath = yield ioUtil.tryGetExecutablePath(path.join(directory, tool), extensions);\n if (filePath) {\n matches.push(filePath);\n }\n }\n return matches;\n });\n}\nexports.findInPath = findInPath;\nfunction readCopyOptions(options) {\n const force = options.force == null ? true : options.force;\n const recursive = Boolean(options.recursive);\n const copySourceDirectory = options.copySourceDirectory == null\n ? true\n : Boolean(options.copySourceDirectory);\n return { force, recursive, copySourceDirectory };\n}\nfunction cpDirRecursive(sourceDir, destDir, currentDepth, force) {\n return __awaiter(this, void 0, void 0, function* () {\n // Ensure there is not a run away recursive copy\n if (currentDepth >= 255)\n return;\n currentDepth++;\n yield mkdirP(destDir);\n const files = yield ioUtil.readdir(sourceDir);\n for (const fileName of files) {\n const srcFile = `${sourceDir}/${fileName}`;\n const destFile = `${destDir}/${fileName}`;\n const srcFileStat = yield ioUtil.lstat(srcFile);\n if (srcFileStat.isDirectory()) {\n // Recurse\n yield cpDirRecursive(srcFile, destFile, currentDepth, force);\n }\n else {\n yield copyFile(srcFile, destFile, force);\n }\n }\n // Change the mode for the newly created directory\n yield ioUtil.chmod(destDir, (yield ioUtil.stat(sourceDir)).mode);\n });\n}\n// Buffered file copy\nfunction copyFile(srcFile, destFile, force) {\n return __awaiter(this, void 0, void 0, function* () {\n if ((yield ioUtil.lstat(srcFile)).isSymbolicLink()) {\n // unlink/re-link it\n try {\n yield ioUtil.lstat(destFile);\n yield ioUtil.unlink(destFile);\n }\n catch (e) {\n // Try to override file permission\n if (e.code === 'EPERM') {\n yield ioUtil.chmod(destFile, '0666');\n yield ioUtil.unlink(destFile);\n }\n // other errors = it doesn't exist, no work to do\n }\n // Copy over symlink\n const symlinkFull = yield ioUtil.readlink(srcFile);\n yield ioUtil.symlink(symlinkFull, destFile, ioUtil.IS_WINDOWS ? 'junction' : null);\n }\n else if (!(yield ioUtil.exists(destFile)) || force) {\n yield ioUtil.copyFile(srcFile, destFile);\n }\n });\n}\n//# sourceMappingURL=io.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.argStringToArray = exports.ToolRunner = void 0;\nconst os = __importStar(require(\"os\"));\nconst events = __importStar(require(\"events\"));\nconst child = __importStar(require(\"child_process\"));\nconst path = __importStar(require(\"path\"));\nconst io = __importStar(require(\"@actions/io\"));\nconst ioUtil = __importStar(require(\"@actions/io/lib/io-util\"));\nconst timers_1 = require(\"timers\");\n/* eslint-disable @typescript-eslint/unbound-method */\nconst IS_WINDOWS = process.platform === 'win32';\n/*\n * Class for running command line tools. Handles quoting and arg parsing in a platform agnostic way.\n */\nclass ToolRunner extends events.EventEmitter {\n constructor(toolPath, args, options) {\n super();\n if (!toolPath) {\n throw new Error(\"Parameter 'toolPath' cannot be null or empty.\");\n }\n this.toolPath = toolPath;\n this.args = args || [];\n this.options = options || {};\n }\n _debug(message) {\n if (this.options.listeners && this.options.listeners.debug) {\n this.options.listeners.debug(message);\n }\n }\n _getCommandString(options, noPrefix) {\n const toolPath = this._getSpawnFileName();\n const args = this._getSpawnArgs(options);\n let cmd = noPrefix ? '' : '[command]'; // omit prefix when piped to a second tool\n if (IS_WINDOWS) {\n // Windows + cmd file\n if (this._isCmdFile()) {\n cmd += toolPath;\n for (const a of args) {\n cmd += ` ${a}`;\n }\n }\n // Windows + verbatim\n else if (options.windowsVerbatimArguments) {\n cmd += `\"${toolPath}\"`;\n for (const a of args) {\n cmd += ` ${a}`;\n }\n }\n // Windows (regular)\n else {\n cmd += this._windowsQuoteCmdArg(toolPath);\n for (const a of args) {\n cmd += ` ${this._windowsQuoteCmdArg(a)}`;\n }\n }\n }\n else {\n // OSX/Linux - this can likely be improved with some form of quoting.\n // creating processes on Unix is fundamentally different than Windows.\n // on Unix, execvp() takes an arg array.\n cmd += toolPath;\n for (const a of args) {\n cmd += ` ${a}`;\n }\n }\n return cmd;\n }\n _processLineBuffer(data, strBuffer, onLine) {\n try {\n let s = strBuffer + data.toString();\n let n = s.indexOf(os.EOL);\n while (n > -1) {\n const line = s.substring(0, n);\n onLine(line);\n // the rest of the string ...\n s = s.substring(n + os.EOL.length);\n n = s.indexOf(os.EOL);\n }\n return s;\n }\n catch (err) {\n // streaming lines to console is best effort. Don't fail a build.\n this._debug(`error processing line. Failed with error ${err}`);\n return '';\n }\n }\n _getSpawnFileName() {\n if (IS_WINDOWS) {\n if (this._isCmdFile()) {\n return process.env['COMSPEC'] || 'cmd.exe';\n }\n }\n return this.toolPath;\n }\n _getSpawnArgs(options) {\n if (IS_WINDOWS) {\n if (this._isCmdFile()) {\n let argline = `/D /S /C \"${this._windowsQuoteCmdArg(this.toolPath)}`;\n for (const a of this.args) {\n argline += ' ';\n argline += options.windowsVerbatimArguments\n ? a\n : this._windowsQuoteCmdArg(a);\n }\n argline += '\"';\n return [argline];\n }\n }\n return this.args;\n }\n _endsWith(str, end) {\n return str.endsWith(end);\n }\n _isCmdFile() {\n const upperToolPath = this.toolPath.toUpperCase();\n return (this._endsWith(upperToolPath, '.CMD') ||\n this._endsWith(upperToolPath, '.BAT'));\n }\n _windowsQuoteCmdArg(arg) {\n // for .exe, apply the normal quoting rules that libuv applies\n if (!this._isCmdFile()) {\n return this._uvQuoteCmdArg(arg);\n }\n // otherwise apply quoting rules specific to the cmd.exe command line parser.\n // the libuv rules are generic and are not designed specifically for cmd.exe\n // command line parser.\n //\n // for a detailed description of the cmd.exe command line parser, refer to\n // http://stackoverflow.com/questions/4094699/how-does-the-windows-command-interpreter-cmd-exe-parse-scripts/7970912#7970912\n // need quotes for empty arg\n if (!arg) {\n return '\"\"';\n }\n // determine whether the arg needs to be quoted\n const cmdSpecialChars = [\n ' ',\n '\\t',\n '&',\n '(',\n ')',\n '[',\n ']',\n '{',\n '}',\n '^',\n '=',\n ';',\n '!',\n \"'\",\n '+',\n ',',\n '`',\n '~',\n '|',\n '<',\n '>',\n '\"'\n ];\n let needsQuotes = false;\n for (const char of arg) {\n if (cmdSpecialChars.some(x => x === char)) {\n needsQuotes = true;\n break;\n }\n }\n // short-circuit if quotes not needed\n if (!needsQuotes) {\n return arg;\n }\n // the following quoting rules are very similar to the rules that by libuv applies.\n //\n // 1) wrap the string in quotes\n //\n // 2) double-up quotes - i.e. \" => \"\"\n //\n // this is different from the libuv quoting rules. libuv replaces \" with \\\", which unfortunately\n // doesn't work well with a cmd.exe command line.\n //\n // note, replacing \" with \"\" also works well if the arg is passed to a downstream .NET console app.\n // for example, the command line:\n // foo.exe \"myarg:\"\"my val\"\"\"\n // is parsed by a .NET console app into an arg array:\n // [ \"myarg:\\\"my val\\\"\" ]\n // which is the same end result when applying libuv quoting rules. although the actual\n // command line from libuv quoting rules would look like:\n // foo.exe \"myarg:\\\"my val\\\"\"\n //\n // 3) double-up slashes that precede a quote,\n // e.g. hello \\world => \"hello \\world\"\n // hello\\\"world => \"hello\\\\\"\"world\"\n // hello\\\\\"world => \"hello\\\\\\\\\"\"world\"\n // hello world\\ => \"hello world\\\\\"\n //\n // technically this is not required for a cmd.exe command line, or the batch argument parser.\n // the reasons for including this as a .cmd quoting rule are:\n //\n // a) this is optimized for the scenario where the argument is passed from the .cmd file to an\n // external program. many programs (e.g. .NET console apps) rely on the slash-doubling rule.\n //\n // b) it's what we've been doing previously (by deferring to node default behavior) and we\n // haven't heard any complaints about that aspect.\n //\n // note, a weakness of the quoting rules chosen here, is that % is not escaped. in fact, % cannot be\n // escaped when used on the command line directly - even though within a .cmd file % can be escaped\n // by using %%.\n //\n // the saving grace is, on the command line, %var% is left as-is if var is not defined. this contrasts\n // the line parsing rules within a .cmd file, where if var is not defined it is replaced with nothing.\n //\n // one option that was explored was replacing % with ^% - i.e. %var% => ^%var^%. this hack would\n // often work, since it is unlikely that var^ would exist, and the ^ character is removed when the\n // variable is used. the problem, however, is that ^ is not removed when %* is used to pass the args\n // to an external program.\n //\n // an unexplored potential solution for the % escaping problem, is to create a wrapper .cmd file.\n // % can be escaped within a .cmd file.\n let reverse = '\"';\n let quoteHit = true;\n for (let i = arg.length; i > 0; i--) {\n // walk the string in reverse\n reverse += arg[i - 1];\n if (quoteHit && arg[i - 1] === '\\\\') {\n reverse += '\\\\'; // double the slash\n }\n else if (arg[i - 1] === '\"') {\n quoteHit = true;\n reverse += '\"'; // double the quote\n }\n else {\n quoteHit = false;\n }\n }\n reverse += '\"';\n return reverse\n .split('')\n .reverse()\n .join('');\n }\n _uvQuoteCmdArg(arg) {\n // Tool runner wraps child_process.spawn() and needs to apply the same quoting as\n // Node in certain cases where the undocumented spawn option windowsVerbatimArguments\n // is used.\n //\n // Since this function is a port of quote_cmd_arg from Node 4.x (technically, lib UV,\n // see https://github.com/nodejs/node/blob/v4.x/deps/uv/src/win/process.c for details),\n // pasting copyright notice from Node within this function:\n //\n // Copyright Joyent, Inc. and other Node contributors. All rights reserved.\n //\n // Permission is hereby granted, free of charge, to any person obtaining a copy\n // of this software and associated documentation files (the \"Software\"), to\n // deal in the Software without restriction, including without limitation the\n // rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n // sell copies of the Software, and to permit persons to whom the Software is\n // furnished to do so, subject to the following conditions:\n //\n // The above copyright notice and this permission notice shall be included in\n // all copies or substantial portions of the Software.\n //\n // THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n // FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n // IN THE SOFTWARE.\n if (!arg) {\n // Need double quotation for empty argument\n return '\"\"';\n }\n if (!arg.includes(' ') && !arg.includes('\\t') && !arg.includes('\"')) {\n // No quotation needed\n return arg;\n }\n if (!arg.includes('\"') && !arg.includes('\\\\')) {\n // No embedded double quotes or backslashes, so I can just wrap\n // quote marks around the whole thing.\n return `\"${arg}\"`;\n }\n // Expected input/output:\n // input : hello\"world\n // output: \"hello\\\"world\"\n // input : hello\"\"world\n // output: \"hello\\\"\\\"world\"\n // input : hello\\world\n // output: hello\\world\n // input : hello\\\\world\n // output: hello\\\\world\n // input : hello\\\"world\n // output: \"hello\\\\\\\"world\"\n // input : hello\\\\\"world\n // output: \"hello\\\\\\\\\\\"world\"\n // input : hello world\\\n // output: \"hello world\\\\\" - note the comment in libuv actually reads \"hello world\\\"\n // but it appears the comment is wrong, it should be \"hello world\\\\\"\n let reverse = '\"';\n let quoteHit = true;\n for (let i = arg.length; i > 0; i--) {\n // walk the string in reverse\n reverse += arg[i - 1];\n if (quoteHit && arg[i - 1] === '\\\\') {\n reverse += '\\\\';\n }\n else if (arg[i - 1] === '\"') {\n quoteHit = true;\n reverse += '\\\\';\n }\n else {\n quoteHit = false;\n }\n }\n reverse += '\"';\n return reverse\n .split('')\n .reverse()\n .join('');\n }\n _cloneExecOptions(options) {\n options = options || {};\n const result = {\n cwd: options.cwd || process.cwd(),\n env: options.env || process.env,\n silent: options.silent || false,\n windowsVerbatimArguments: options.windowsVerbatimArguments || false,\n failOnStdErr: options.failOnStdErr || false,\n ignoreReturnCode: options.ignoreReturnCode || false,\n delay: options.delay || 10000\n };\n result.outStream = options.outStream || process.stdout;\n result.errStream = options.errStream || process.stderr;\n return result;\n }\n _getSpawnOptions(options, toolPath) {\n options = options || {};\n const result = {};\n result.cwd = options.cwd;\n result.env = options.env;\n result['windowsVerbatimArguments'] =\n options.windowsVerbatimArguments || this._isCmdFile();\n if (options.windowsVerbatimArguments) {\n result.argv0 = `\"${toolPath}\"`;\n }\n return result;\n }\n /**\n * Exec a tool.\n * Output will be streamed to the live console.\n * Returns promise with return code\n *\n * @param tool path to tool to exec\n * @param options optional exec options. See ExecOptions\n * @returns number\n */\n exec() {\n return __awaiter(this, void 0, void 0, function* () {\n // root the tool path if it is unrooted and contains relative pathing\n if (!ioUtil.isRooted(this.toolPath) &&\n (this.toolPath.includes('/') ||\n (IS_WINDOWS && this.toolPath.includes('\\\\')))) {\n // prefer options.cwd if it is specified, however options.cwd may also need to be rooted\n this.toolPath = path.resolve(process.cwd(), this.options.cwd || process.cwd(), this.toolPath);\n }\n // if the tool is only a file name, then resolve it from the PATH\n // otherwise verify it exists (add extension on Windows if necessary)\n this.toolPath = yield io.which(this.toolPath, true);\n return new Promise((resolve, reject) => __awaiter(this, void 0, void 0, function* () {\n this._debug(`exec tool: ${this.toolPath}`);\n this._debug('arguments:');\n for (const arg of this.args) {\n this._debug(` ${arg}`);\n }\n const optionsNonNull = this._cloneExecOptions(this.options);\n if (!optionsNonNull.silent && optionsNonNull.outStream) {\n optionsNonNull.outStream.write(this._getCommandString(optionsNonNull) + os.EOL);\n }\n const state = new ExecState(optionsNonNull, this.toolPath);\n state.on('debug', (message) => {\n this._debug(message);\n });\n if (this.options.cwd && !(yield ioUtil.exists(this.options.cwd))) {\n return reject(new Error(`The cwd: ${this.options.cwd} does not exist!`));\n }\n const fileName = this._getSpawnFileName();\n const cp = child.spawn(fileName, this._getSpawnArgs(optionsNonNull), this._getSpawnOptions(this.options, fileName));\n let stdbuffer = '';\n if (cp.stdout) {\n cp.stdout.on('data', (data) => {\n if (this.options.listeners && this.options.listeners.stdout) {\n this.options.listeners.stdout(data);\n }\n if (!optionsNonNull.silent && optionsNonNull.outStream) {\n optionsNonNull.outStream.write(data);\n }\n stdbuffer = this._processLineBuffer(data, stdbuffer, (line) => {\n if (this.options.listeners && this.options.listeners.stdline) {\n this.options.listeners.stdline(line);\n }\n });\n });\n }\n let errbuffer = '';\n if (cp.stderr) {\n cp.stderr.on('data', (data) => {\n state.processStderr = true;\n if (this.options.listeners && this.options.listeners.stderr) {\n this.options.listeners.stderr(data);\n }\n if (!optionsNonNull.silent &&\n optionsNonNull.errStream &&\n optionsNonNull.outStream) {\n const s = optionsNonNull.failOnStdErr\n ? optionsNonNull.errStream\n : optionsNonNull.outStream;\n s.write(data);\n }\n errbuffer = this._processLineBuffer(data, errbuffer, (line) => {\n if (this.options.listeners && this.options.listeners.errline) {\n this.options.listeners.errline(line);\n }\n });\n });\n }\n cp.on('error', (err) => {\n state.processError = err.message;\n state.processExited = true;\n state.processClosed = true;\n state.CheckComplete();\n });\n cp.on('exit', (code) => {\n state.processExitCode = code;\n state.processExited = true;\n this._debug(`Exit code ${code} received from tool '${this.toolPath}'`);\n state.CheckComplete();\n });\n cp.on('close', (code) => {\n state.processExitCode = code;\n state.processExited = true;\n state.processClosed = true;\n this._debug(`STDIO streams have closed for tool '${this.toolPath}'`);\n state.CheckComplete();\n });\n state.on('done', (error, exitCode) => {\n if (stdbuffer.length > 0) {\n this.emit('stdline', stdbuffer);\n }\n if (errbuffer.length > 0) {\n this.emit('errline', errbuffer);\n }\n cp.removeAllListeners();\n if (error) {\n reject(error);\n }\n else {\n resolve(exitCode);\n }\n });\n if (this.options.input) {\n if (!cp.stdin) {\n throw new Error('child process missing stdin');\n }\n cp.stdin.end(this.options.input);\n }\n }));\n });\n }\n}\nexports.ToolRunner = ToolRunner;\n/**\n * Convert an arg string to an array of args. Handles escaping\n *\n * @param argString string of arguments\n * @returns string[] array of arguments\n */\nfunction argStringToArray(argString) {\n const args = [];\n let inQuotes = false;\n let escaped = false;\n let arg = '';\n function append(c) {\n // we only escape double quotes.\n if (escaped && c !== '\"') {\n arg += '\\\\';\n }\n arg += c;\n escaped = false;\n }\n for (let i = 0; i < argString.length; i++) {\n const c = argString.charAt(i);\n if (c === '\"') {\n if (!escaped) {\n inQuotes = !inQuotes;\n }\n else {\n append(c);\n }\n continue;\n }\n if (c === '\\\\' && escaped) {\n append(c);\n continue;\n }\n if (c === '\\\\' && inQuotes) {\n escaped = true;\n continue;\n }\n if (c === ' ' && !inQuotes) {\n if (arg.length > 0) {\n args.push(arg);\n arg = '';\n }\n continue;\n }\n append(c);\n }\n if (arg.length > 0) {\n args.push(arg.trim());\n }\n return args;\n}\nexports.argStringToArray = argStringToArray;\nclass ExecState extends events.EventEmitter {\n constructor(options, toolPath) {\n super();\n this.processClosed = false; // tracks whether the process has exited and stdio is closed\n this.processError = '';\n this.processExitCode = 0;\n this.processExited = false; // tracks whether the process has exited\n this.processStderr = false; // tracks whether stderr was written to\n this.delay = 10000; // 10 seconds\n this.done = false;\n this.timeout = null;\n if (!toolPath) {\n throw new Error('toolPath must not be empty');\n }\n this.options = options;\n this.toolPath = toolPath;\n if (options.delay) {\n this.delay = options.delay;\n }\n }\n CheckComplete() {\n if (this.done) {\n return;\n }\n if (this.processClosed) {\n this._setResult();\n }\n else if (this.processExited) {\n this.timeout = timers_1.setTimeout(ExecState.HandleTimeout, this.delay, this);\n }\n }\n _debug(message) {\n this.emit('debug', message);\n }\n _setResult() {\n // determine whether there is an error\n let error;\n if (this.processExited) {\n if (this.processError) {\n error = new Error(`There was an error when attempting to execute the process '${this.toolPath}'. This may indicate the process failed to start. Error: ${this.processError}`);\n }\n else if (this.processExitCode !== 0 && !this.options.ignoreReturnCode) {\n error = new Error(`The process '${this.toolPath}' failed with exit code ${this.processExitCode}`);\n }\n else if (this.processStderr && this.options.failOnStdErr) {\n error = new Error(`The process '${this.toolPath}' failed because one or more lines were written to the STDERR stream`);\n }\n }\n // clear the timeout\n if (this.timeout) {\n clearTimeout(this.timeout);\n this.timeout = null;\n }\n this.done = true;\n this.emit('done', error, this.processExitCode);\n }\n static HandleTimeout(state) {\n if (state.done) {\n return;\n }\n if (!state.processClosed && state.processExited) {\n const message = `The STDIO streams did not close within ${state.delay /\n 1000} seconds of the exit event from process '${state.toolPath}'. This may indicate a child process inherited the STDIO streams and has not yet exited.`;\n state._debug(message);\n }\n state._setResult();\n }\n}\n//# sourceMappingURL=toolrunner.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getExecOutput = exports.exec = void 0;\nconst string_decoder_1 = require(\"string_decoder\");\nconst tr = __importStar(require(\"./toolrunner\"));\n/**\n * Exec a command.\n * Output will be streamed to the live console.\n * Returns promise with return code\n *\n * @param commandLine command to execute (can include additional args). Must be correctly escaped.\n * @param args optional arguments for tool. Escaping is handled by the lib.\n * @param options optional exec options. See ExecOptions\n * @returns Promise exit code\n */\nfunction exec(commandLine, args, options) {\n return __awaiter(this, void 0, void 0, function* () {\n const commandArgs = tr.argStringToArray(commandLine);\n if (commandArgs.length === 0) {\n throw new Error(`Parameter 'commandLine' cannot be null or empty.`);\n }\n // Path to tool to execute should be first arg\n const toolPath = commandArgs[0];\n args = commandArgs.slice(1).concat(args || []);\n const runner = new tr.ToolRunner(toolPath, args, options);\n return runner.exec();\n });\n}\nexports.exec = exec;\n/**\n * Exec a command and get the output.\n * Output will be streamed to the live console.\n * Returns promise with the exit code and collected stdout and stderr\n *\n * @param commandLine command to execute (can include additional args). Must be correctly escaped.\n * @param args optional arguments for tool. Escaping is handled by the lib.\n * @param options optional exec options. See ExecOptions\n * @returns Promise exit code, stdout, and stderr\n */\nfunction getExecOutput(commandLine, args, options) {\n var _a, _b;\n return __awaiter(this, void 0, void 0, function* () {\n let stdout = '';\n let stderr = '';\n //Using string decoder covers the case where a mult-byte character is split\n const stdoutDecoder = new string_decoder_1.StringDecoder('utf8');\n const stderrDecoder = new string_decoder_1.StringDecoder('utf8');\n const originalStdoutListener = (_a = options === null || options === void 0 ? void 0 : options.listeners) === null || _a === void 0 ? void 0 : _a.stdout;\n const originalStdErrListener = (_b = options === null || options === void 0 ? void 0 : options.listeners) === null || _b === void 0 ? void 0 : _b.stderr;\n const stdErrListener = (data) => {\n stderr += stderrDecoder.write(data);\n if (originalStdErrListener) {\n originalStdErrListener(data);\n }\n };\n const stdOutListener = (data) => {\n stdout += stdoutDecoder.write(data);\n if (originalStdoutListener) {\n originalStdoutListener(data);\n }\n };\n const listeners = Object.assign(Object.assign({}, options === null || options === void 0 ? void 0 : options.listeners), { stdout: stdOutListener, stderr: stdErrListener });\n const exitCode = yield exec(commandLine, args, Object.assign(Object.assign({}, options), { listeners }));\n //flush any remaining characters\n stdout += stdoutDecoder.end();\n stderr += stderrDecoder.end();\n return {\n exitCode,\n stdout,\n stderr\n };\n });\n}\nexports.getExecOutput = getExecOutput;\n//# sourceMappingURL=exec.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getDetails = exports.isLinux = exports.isMacOS = exports.isWindows = exports.arch = exports.platform = void 0;\nconst os_1 = __importDefault(require(\"os\"));\nconst exec = __importStar(require(\"@actions/exec\"));\nconst getWindowsInfo = () => __awaiter(void 0, void 0, void 0, function* () {\n const { stdout: version } = yield exec.getExecOutput('powershell -command \"(Get-CimInstance -ClassName Win32_OperatingSystem).Version\"', undefined, {\n silent: true\n });\n const { stdout: name } = yield exec.getExecOutput('powershell -command \"(Get-CimInstance -ClassName Win32_OperatingSystem).Caption\"', undefined, {\n silent: true\n });\n return {\n name: name.trim(),\n version: version.trim()\n };\n});\nconst getMacOsInfo = () => __awaiter(void 0, void 0, void 0, function* () {\n var _a, _b, _c, _d;\n const { stdout } = yield exec.getExecOutput('sw_vers', undefined, {\n silent: true\n });\n const version = (_b = (_a = stdout.match(/ProductVersion:\\s*(.+)/)) === null || _a === void 0 ? void 0 : _a[1]) !== null && _b !== void 0 ? _b : '';\n const name = (_d = (_c = stdout.match(/ProductName:\\s*(.+)/)) === null || _c === void 0 ? void 0 : _c[1]) !== null && _d !== void 0 ? _d : '';\n return {\n name,\n version\n };\n});\nconst getLinuxInfo = () => __awaiter(void 0, void 0, void 0, function* () {\n const { stdout } = yield exec.getExecOutput('lsb_release', ['-i', '-r', '-s'], {\n silent: true\n });\n const [name, version] = stdout.trim().split('\\n');\n return {\n name,\n version\n };\n});\nexports.platform = os_1.default.platform();\nexports.arch = os_1.default.arch();\nexports.isWindows = exports.platform === 'win32';\nexports.isMacOS = exports.platform === 'darwin';\nexports.isLinux = exports.platform === 'linux';\nfunction getDetails() {\n return __awaiter(this, void 0, void 0, function* () {\n return Object.assign(Object.assign({}, (yield (exports.isWindows\n ? getWindowsInfo()\n : exports.isMacOS\n ? getMacOsInfo()\n : getLinuxInfo()))), { platform: exports.platform,\n arch: exports.arch,\n isWindows: exports.isWindows,\n isMacOS: exports.isMacOS,\n isLinux: exports.isLinux });\n });\n}\nexports.getDetails = getDetails;\n//# sourceMappingURL=platform.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.platform = exports.toPlatformPath = exports.toWin32Path = exports.toPosixPath = exports.markdownSummary = exports.summary = exports.getIDToken = exports.getState = exports.saveState = exports.group = exports.endGroup = exports.startGroup = exports.info = exports.notice = exports.warning = exports.error = exports.debug = exports.isDebug = exports.setFailed = exports.setCommandEcho = exports.setOutput = exports.getBooleanInput = exports.getMultilineInput = exports.getInput = exports.addPath = exports.setSecret = exports.exportVariable = exports.ExitCode = void 0;\nconst command_1 = require(\"./command\");\nconst file_command_1 = require(\"./file-command\");\nconst utils_1 = require(\"./utils\");\nconst os = __importStar(require(\"os\"));\nconst path = __importStar(require(\"path\"));\nconst oidc_utils_1 = require(\"./oidc-utils\");\n/**\n * The code to exit an action\n */\nvar ExitCode;\n(function (ExitCode) {\n /**\n * A code indicating that the action was successful\n */\n ExitCode[ExitCode[\"Success\"] = 0] = \"Success\";\n /**\n * A code indicating that the action was a failure\n */\n ExitCode[ExitCode[\"Failure\"] = 1] = \"Failure\";\n})(ExitCode || (exports.ExitCode = ExitCode = {}));\n//-----------------------------------------------------------------------\n// Variables\n//-----------------------------------------------------------------------\n/**\n * Sets env variable for this action and future actions in the job\n * @param name the name of the variable to set\n * @param val the value of the variable. Non-string values will be converted to a string via JSON.stringify\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction exportVariable(name, val) {\n const convertedVal = (0, utils_1.toCommandValue)(val);\n process.env[name] = convertedVal;\n const filePath = process.env['GITHUB_ENV'] || '';\n if (filePath) {\n return (0, file_command_1.issueFileCommand)('ENV', (0, file_command_1.prepareKeyValueMessage)(name, val));\n }\n (0, command_1.issueCommand)('set-env', { name }, convertedVal);\n}\nexports.exportVariable = exportVariable;\n/**\n * Registers a secret which will get masked from logs\n * @param secret value of the secret\n */\nfunction setSecret(secret) {\n (0, command_1.issueCommand)('add-mask', {}, secret);\n}\nexports.setSecret = setSecret;\n/**\n * Prepends inputPath to the PATH (for this action and future actions)\n * @param inputPath\n */\nfunction addPath(inputPath) {\n const filePath = process.env['GITHUB_PATH'] || '';\n if (filePath) {\n (0, file_command_1.issueFileCommand)('PATH', inputPath);\n }\n else {\n (0, command_1.issueCommand)('add-path', {}, inputPath);\n }\n process.env['PATH'] = `${inputPath}${path.delimiter}${process.env['PATH']}`;\n}\nexports.addPath = addPath;\n/**\n * Gets the value of an input.\n * Unless trimWhitespace is set to false in InputOptions, the value is also trimmed.\n * Returns an empty string if the value is not defined.\n *\n * @param name name of the input to get\n * @param options optional. See InputOptions.\n * @returns string\n */\nfunction getInput(name, options) {\n const val = process.env[`INPUT_${name.replace(/ /g, '_').toUpperCase()}`] || '';\n if (options && options.required && !val) {\n throw new Error(`Input required and not supplied: ${name}`);\n }\n if (options && options.trimWhitespace === false) {\n return val;\n }\n return val.trim();\n}\nexports.getInput = getInput;\n/**\n * Gets the values of an multiline input. Each value is also trimmed.\n *\n * @param name name of the input to get\n * @param options optional. See InputOptions.\n * @returns string[]\n *\n */\nfunction getMultilineInput(name, options) {\n const inputs = getInput(name, options)\n .split('\\n')\n .filter(x => x !== '');\n if (options && options.trimWhitespace === false) {\n return inputs;\n }\n return inputs.map(input => input.trim());\n}\nexports.getMultilineInput = getMultilineInput;\n/**\n * Gets the input value of the boolean type in the YAML 1.2 \"core schema\" specification.\n * Support boolean input list: `true | True | TRUE | false | False | FALSE` .\n * The return value is also in boolean type.\n * ref: https://yaml.org/spec/1.2/spec.html#id2804923\n *\n * @param name name of the input to get\n * @param options optional. See InputOptions.\n * @returns boolean\n */\nfunction getBooleanInput(name, options) {\n const trueValue = ['true', 'True', 'TRUE'];\n const falseValue = ['false', 'False', 'FALSE'];\n const val = getInput(name, options);\n if (trueValue.includes(val))\n return true;\n if (falseValue.includes(val))\n return false;\n throw new TypeError(`Input does not meet YAML 1.2 \"Core Schema\" specification: ${name}\\n` +\n `Support boolean input list: \\`true | True | TRUE | false | False | FALSE\\``);\n}\nexports.getBooleanInput = getBooleanInput;\n/**\n * Sets the value of an output.\n *\n * @param name name of the output to set\n * @param value value to store. Non-string values will be converted to a string via JSON.stringify\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction setOutput(name, value) {\n const filePath = process.env['GITHUB_OUTPUT'] || '';\n if (filePath) {\n return (0, file_command_1.issueFileCommand)('OUTPUT', (0, file_command_1.prepareKeyValueMessage)(name, value));\n }\n process.stdout.write(os.EOL);\n (0, command_1.issueCommand)('set-output', { name }, (0, utils_1.toCommandValue)(value));\n}\nexports.setOutput = setOutput;\n/**\n * Enables or disables the echoing of commands into stdout for the rest of the step.\n * Echoing is disabled by default if ACTIONS_STEP_DEBUG is not set.\n *\n */\nfunction setCommandEcho(enabled) {\n (0, command_1.issue)('echo', enabled ? 'on' : 'off');\n}\nexports.setCommandEcho = setCommandEcho;\n//-----------------------------------------------------------------------\n// Results\n//-----------------------------------------------------------------------\n/**\n * Sets the action status to failed.\n * When the action exits it will be with an exit code of 1\n * @param message add error issue message\n */\nfunction setFailed(message) {\n process.exitCode = ExitCode.Failure;\n error(message);\n}\nexports.setFailed = setFailed;\n//-----------------------------------------------------------------------\n// Logging Commands\n//-----------------------------------------------------------------------\n/**\n * Gets whether Actions Step Debug is on or not\n */\nfunction isDebug() {\n return process.env['RUNNER_DEBUG'] === '1';\n}\nexports.isDebug = isDebug;\n/**\n * Writes debug message to user log\n * @param message debug message\n */\nfunction debug(message) {\n (0, command_1.issueCommand)('debug', {}, message);\n}\nexports.debug = debug;\n/**\n * Adds an error issue\n * @param message error issue message. Errors will be converted to string via toString()\n * @param properties optional properties to add to the annotation.\n */\nfunction error(message, properties = {}) {\n (0, command_1.issueCommand)('error', (0, utils_1.toCommandProperties)(properties), message instanceof Error ? message.toString() : message);\n}\nexports.error = error;\n/**\n * Adds a warning issue\n * @param message warning issue message. Errors will be converted to string via toString()\n * @param properties optional properties to add to the annotation.\n */\nfunction warning(message, properties = {}) {\n (0, command_1.issueCommand)('warning', (0, utils_1.toCommandProperties)(properties), message instanceof Error ? message.toString() : message);\n}\nexports.warning = warning;\n/**\n * Adds a notice issue\n * @param message notice issue message. Errors will be converted to string via toString()\n * @param properties optional properties to add to the annotation.\n */\nfunction notice(message, properties = {}) {\n (0, command_1.issueCommand)('notice', (0, utils_1.toCommandProperties)(properties), message instanceof Error ? message.toString() : message);\n}\nexports.notice = notice;\n/**\n * Writes info to log with console.log.\n * @param message info message\n */\nfunction info(message) {\n process.stdout.write(message + os.EOL);\n}\nexports.info = info;\n/**\n * Begin an output group.\n *\n * Output until the next `groupEnd` will be foldable in this group\n *\n * @param name The name of the output group\n */\nfunction startGroup(name) {\n (0, command_1.issue)('group', name);\n}\nexports.startGroup = startGroup;\n/**\n * End an output group.\n */\nfunction endGroup() {\n (0, command_1.issue)('endgroup');\n}\nexports.endGroup = endGroup;\n/**\n * Wrap an asynchronous function call in a group.\n *\n * Returns the same type as the function itself.\n *\n * @param name The name of the group\n * @param fn The function to wrap in the group\n */\nfunction group(name, fn) {\n return __awaiter(this, void 0, void 0, function* () {\n startGroup(name);\n let result;\n try {\n result = yield fn();\n }\n finally {\n endGroup();\n }\n return result;\n });\n}\nexports.group = group;\n//-----------------------------------------------------------------------\n// Wrapper action state\n//-----------------------------------------------------------------------\n/**\n * Saves state for current action, the state can only be retrieved by this action's post job execution.\n *\n * @param name name of the state to store\n * @param value value to store. Non-string values will be converted to a string via JSON.stringify\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction saveState(name, value) {\n const filePath = process.env['GITHUB_STATE'] || '';\n if (filePath) {\n return (0, file_command_1.issueFileCommand)('STATE', (0, file_command_1.prepareKeyValueMessage)(name, value));\n }\n (0, command_1.issueCommand)('save-state', { name }, (0, utils_1.toCommandValue)(value));\n}\nexports.saveState = saveState;\n/**\n * Gets the value of an state set by this action's main execution.\n *\n * @param name name of the state to get\n * @returns string\n */\nfunction getState(name) {\n return process.env[`STATE_${name}`] || '';\n}\nexports.getState = getState;\nfunction getIDToken(aud) {\n return __awaiter(this, void 0, void 0, function* () {\n return yield oidc_utils_1.OidcClient.getIDToken(aud);\n });\n}\nexports.getIDToken = getIDToken;\n/**\n * Summary exports\n */\nvar summary_1 = require(\"./summary\");\nObject.defineProperty(exports, \"summary\", { enumerable: true, get: function () { return summary_1.summary; } });\n/**\n * @deprecated use core.summary\n */\nvar summary_2 = require(\"./summary\");\nObject.defineProperty(exports, \"markdownSummary\", { enumerable: true, get: function () { return summary_2.markdownSummary; } });\n/**\n * Path exports\n */\nvar path_utils_1 = require(\"./path-utils\");\nObject.defineProperty(exports, \"toPosixPath\", { enumerable: true, get: function () { return path_utils_1.toPosixPath; } });\nObject.defineProperty(exports, \"toWin32Path\", { enumerable: true, get: function () { return path_utils_1.toWin32Path; } });\nObject.defineProperty(exports, \"toPlatformPath\", { enumerable: true, get: function () { return path_utils_1.toPlatformPath; } });\n/**\n * Platform utilities exports\n */\nexports.platform = __importStar(require(\"./platform\"));\n//# sourceMappingURL=core.js.map","'use strict';\n\nconst ALIAS = Symbol.for('yaml.alias');\nconst DOC = Symbol.for('yaml.document');\nconst MAP = Symbol.for('yaml.map');\nconst PAIR = Symbol.for('yaml.pair');\nconst SCALAR = Symbol.for('yaml.scalar');\nconst SEQ = Symbol.for('yaml.seq');\nconst NODE_TYPE = Symbol.for('yaml.node.type');\nconst isAlias = (node) => !!node && typeof node === 'object' && node[NODE_TYPE] === ALIAS;\nconst isDocument = (node) => !!node && typeof node === 'object' && node[NODE_TYPE] === DOC;\nconst isMap = (node) => !!node && typeof node === 'object' && node[NODE_TYPE] === MAP;\nconst isPair = (node) => !!node && typeof node === 'object' && node[NODE_TYPE] === PAIR;\nconst isScalar = (node) => !!node && typeof node === 'object' && node[NODE_TYPE] === SCALAR;\nconst isSeq = (node) => !!node && typeof node === 'object' && node[NODE_TYPE] === SEQ;\nfunction isCollection(node) {\n if (node && typeof node === 'object')\n switch (node[NODE_TYPE]) {\n case MAP:\n case SEQ:\n return true;\n }\n return false;\n}\nfunction isNode(node) {\n if (node && typeof node === 'object')\n switch (node[NODE_TYPE]) {\n case ALIAS:\n case MAP:\n case SCALAR:\n case SEQ:\n return true;\n }\n return false;\n}\nconst hasAnchor = (node) => (isScalar(node) || isCollection(node)) && !!node.anchor;\n\nexports.ALIAS = ALIAS;\nexports.DOC = DOC;\nexports.MAP = MAP;\nexports.NODE_TYPE = NODE_TYPE;\nexports.PAIR = PAIR;\nexports.SCALAR = SCALAR;\nexports.SEQ = SEQ;\nexports.hasAnchor = hasAnchor;\nexports.isAlias = isAlias;\nexports.isCollection = isCollection;\nexports.isDocument = isDocument;\nexports.isMap = isMap;\nexports.isNode = isNode;\nexports.isPair = isPair;\nexports.isScalar = isScalar;\nexports.isSeq = isSeq;\n","'use strict';\n\nvar identity = require('./nodes/identity.js');\n\nconst BREAK = Symbol('break visit');\nconst SKIP = Symbol('skip children');\nconst REMOVE = Symbol('remove node');\n/**\n * Apply a visitor to an AST node or document.\n *\n * Walks through the tree (depth-first) starting from `node`, calling a\n * `visitor` function with three arguments:\n * - `key`: For sequence values and map `Pair`, the node's index in the\n * collection. Within a `Pair`, `'key'` or `'value'`, correspondingly.\n * `null` for the root node.\n * - `node`: The current node.\n * - `path`: The ancestry of the current node.\n *\n * The return value of the visitor may be used to control the traversal:\n * - `undefined` (default): Do nothing and continue\n * - `visit.SKIP`: Do not visit the children of this node, continue with next\n * sibling\n * - `visit.BREAK`: Terminate traversal completely\n * - `visit.REMOVE`: Remove the current node, then continue with the next one\n * - `Node`: Replace the current node, then continue by visiting it\n * - `number`: While iterating the items of a sequence or map, set the index\n * of the next step. This is useful especially if the index of the current\n * node has changed.\n *\n * If `visitor` is a single function, it will be called with all values\n * encountered in the tree, including e.g. `null` values. Alternatively,\n * separate visitor functions may be defined for each `Map`, `Pair`, `Seq`,\n * `Alias` and `Scalar` node. To define the same visitor function for more than\n * one node type, use the `Collection` (map and seq), `Value` (map, seq & scalar)\n * and `Node` (alias, map, seq & scalar) targets. Of all these, only the most\n * specific defined one will be used for each node.\n */\nfunction visit(node, visitor) {\n const visitor_ = initVisitor(visitor);\n if (identity.isDocument(node)) {\n const cd = visit_(null, node.contents, visitor_, Object.freeze([node]));\n if (cd === REMOVE)\n node.contents = null;\n }\n else\n visit_(null, node, visitor_, Object.freeze([]));\n}\n// Without the `as symbol` casts, TS declares these in the `visit`\n// namespace using `var`, but then complains about that because\n// `unique symbol` must be `const`.\n/** Terminate visit traversal completely */\nvisit.BREAK = BREAK;\n/** Do not visit the children of the current node */\nvisit.SKIP = SKIP;\n/** Remove the current node */\nvisit.REMOVE = REMOVE;\nfunction visit_(key, node, visitor, path) {\n const ctrl = callVisitor(key, node, visitor, path);\n if (identity.isNode(ctrl) || identity.isPair(ctrl)) {\n replaceNode(key, path, ctrl);\n return visit_(key, ctrl, visitor, path);\n }\n if (typeof ctrl !== 'symbol') {\n if (identity.isCollection(node)) {\n path = Object.freeze(path.concat(node));\n for (let i = 0; i < node.items.length; ++i) {\n const ci = visit_(i, node.items[i], visitor, path);\n if (typeof ci === 'number')\n i = ci - 1;\n else if (ci === BREAK)\n return BREAK;\n else if (ci === REMOVE) {\n node.items.splice(i, 1);\n i -= 1;\n }\n }\n }\n else if (identity.isPair(node)) {\n path = Object.freeze(path.concat(node));\n const ck = visit_('key', node.key, visitor, path);\n if (ck === BREAK)\n return BREAK;\n else if (ck === REMOVE)\n node.key = null;\n const cv = visit_('value', node.value, visitor, path);\n if (cv === BREAK)\n return BREAK;\n else if (cv === REMOVE)\n node.value = null;\n }\n }\n return ctrl;\n}\n/**\n * Apply an async visitor to an AST node or document.\n *\n * Walks through the tree (depth-first) starting from `node`, calling a\n * `visitor` function with three arguments:\n * - `key`: For sequence values and map `Pair`, the node's index in the\n * collection. Within a `Pair`, `'key'` or `'value'`, correspondingly.\n * `null` for the root node.\n * - `node`: The current node.\n * - `path`: The ancestry of the current node.\n *\n * The return value of the visitor may be used to control the traversal:\n * - `Promise`: Must resolve to one of the following values\n * - `undefined` (default): Do nothing and continue\n * - `visit.SKIP`: Do not visit the children of this node, continue with next\n * sibling\n * - `visit.BREAK`: Terminate traversal completely\n * - `visit.REMOVE`: Remove the current node, then continue with the next one\n * - `Node`: Replace the current node, then continue by visiting it\n * - `number`: While iterating the items of a sequence or map, set the index\n * of the next step. This is useful especially if the index of the current\n * node has changed.\n *\n * If `visitor` is a single function, it will be called with all values\n * encountered in the tree, including e.g. `null` values. Alternatively,\n * separate visitor functions may be defined for each `Map`, `Pair`, `Seq`,\n * `Alias` and `Scalar` node. To define the same visitor function for more than\n * one node type, use the `Collection` (map and seq), `Value` (map, seq & scalar)\n * and `Node` (alias, map, seq & scalar) targets. Of all these, only the most\n * specific defined one will be used for each node.\n */\nasync function visitAsync(node, visitor) {\n const visitor_ = initVisitor(visitor);\n if (identity.isDocument(node)) {\n const cd = await visitAsync_(null, node.contents, visitor_, Object.freeze([node]));\n if (cd === REMOVE)\n node.contents = null;\n }\n else\n await visitAsync_(null, node, visitor_, Object.freeze([]));\n}\n// Without the `as symbol` casts, TS declares these in the `visit`\n// namespace using `var`, but then complains about that because\n// `unique symbol` must be `const`.\n/** Terminate visit traversal completely */\nvisitAsync.BREAK = BREAK;\n/** Do not visit the children of the current node */\nvisitAsync.SKIP = SKIP;\n/** Remove the current node */\nvisitAsync.REMOVE = REMOVE;\nasync function visitAsync_(key, node, visitor, path) {\n const ctrl = await callVisitor(key, node, visitor, path);\n if (identity.isNode(ctrl) || identity.isPair(ctrl)) {\n replaceNode(key, path, ctrl);\n return visitAsync_(key, ctrl, visitor, path);\n }\n if (typeof ctrl !== 'symbol') {\n if (identity.isCollection(node)) {\n path = Object.freeze(path.concat(node));\n for (let i = 0; i < node.items.length; ++i) {\n const ci = await visitAsync_(i, node.items[i], visitor, path);\n if (typeof ci === 'number')\n i = ci - 1;\n else if (ci === BREAK)\n return BREAK;\n else if (ci === REMOVE) {\n node.items.splice(i, 1);\n i -= 1;\n }\n }\n }\n else if (identity.isPair(node)) {\n path = Object.freeze(path.concat(node));\n const ck = await visitAsync_('key', node.key, visitor, path);\n if (ck === BREAK)\n return BREAK;\n else if (ck === REMOVE)\n node.key = null;\n const cv = await visitAsync_('value', node.value, visitor, path);\n if (cv === BREAK)\n return BREAK;\n else if (cv === REMOVE)\n node.value = null;\n }\n }\n return ctrl;\n}\nfunction initVisitor(visitor) {\n if (typeof visitor === 'object' &&\n (visitor.Collection || visitor.Node || visitor.Value)) {\n return Object.assign({\n Alias: visitor.Node,\n Map: visitor.Node,\n Scalar: visitor.Node,\n Seq: visitor.Node\n }, visitor.Value && {\n Map: visitor.Value,\n Scalar: visitor.Value,\n Seq: visitor.Value\n }, visitor.Collection && {\n Map: visitor.Collection,\n Seq: visitor.Collection\n }, visitor);\n }\n return visitor;\n}\nfunction callVisitor(key, node, visitor, path) {\n if (typeof visitor === 'function')\n return visitor(key, node, path);\n if (identity.isMap(node))\n return visitor.Map?.(key, node, path);\n if (identity.isSeq(node))\n return visitor.Seq?.(key, node, path);\n if (identity.isPair(node))\n return visitor.Pair?.(key, node, path);\n if (identity.isScalar(node))\n return visitor.Scalar?.(key, node, path);\n if (identity.isAlias(node))\n return visitor.Alias?.(key, node, path);\n return undefined;\n}\nfunction replaceNode(key, path, node) {\n const parent = path[path.length - 1];\n if (identity.isCollection(parent)) {\n parent.items[key] = node;\n }\n else if (identity.isPair(parent)) {\n if (key === 'key')\n parent.key = node;\n else\n parent.value = node;\n }\n else if (identity.isDocument(parent)) {\n parent.contents = node;\n }\n else {\n const pt = identity.isAlias(parent) ? 'alias' : 'scalar';\n throw new Error(`Cannot replace node with ${pt} parent`);\n }\n}\n\nexports.visit = visit;\nexports.visitAsync = visitAsync;\n","'use strict';\n\nvar identity = require('../nodes/identity.js');\nvar visit = require('../visit.js');\n\nconst escapeChars = {\n '!': '%21',\n ',': '%2C',\n '[': '%5B',\n ']': '%5D',\n '{': '%7B',\n '}': '%7D'\n};\nconst escapeTagName = (tn) => tn.replace(/[!,[\\]{}]/g, ch => escapeChars[ch]);\nclass Directives {\n constructor(yaml, tags) {\n /**\n * The directives-end/doc-start marker `---`. If `null`, a marker may still be\n * included in the document's stringified representation.\n */\n this.docStart = null;\n /** The doc-end marker `...`. */\n this.docEnd = false;\n this.yaml = Object.assign({}, Directives.defaultYaml, yaml);\n this.tags = Object.assign({}, Directives.defaultTags, tags);\n }\n clone() {\n const copy = new Directives(this.yaml, this.tags);\n copy.docStart = this.docStart;\n return copy;\n }\n /**\n * During parsing, get a Directives instance for the current document and\n * update the stream state according to the current version's spec.\n */\n atDocument() {\n const res = new Directives(this.yaml, this.tags);\n switch (this.yaml.version) {\n case '1.1':\n this.atNextDocument = true;\n break;\n case '1.2':\n this.atNextDocument = false;\n this.yaml = {\n explicit: Directives.defaultYaml.explicit,\n version: '1.2'\n };\n this.tags = Object.assign({}, Directives.defaultTags);\n break;\n }\n return res;\n }\n /**\n * @param onError - May be called even if the action was successful\n * @returns `true` on success\n */\n add(line, onError) {\n if (this.atNextDocument) {\n this.yaml = { explicit: Directives.defaultYaml.explicit, version: '1.1' };\n this.tags = Object.assign({}, Directives.defaultTags);\n this.atNextDocument = false;\n }\n const parts = line.trim().split(/[ \\t]+/);\n const name = parts.shift();\n switch (name) {\n case '%TAG': {\n if (parts.length !== 2) {\n onError(0, '%TAG directive should contain exactly two parts');\n if (parts.length < 2)\n return false;\n }\n const [handle, prefix] = parts;\n this.tags[handle] = prefix;\n return true;\n }\n case '%YAML': {\n this.yaml.explicit = true;\n if (parts.length !== 1) {\n onError(0, '%YAML directive should contain exactly one part');\n return false;\n }\n const [version] = parts;\n if (version === '1.1' || version === '1.2') {\n this.yaml.version = version;\n return true;\n }\n else {\n const isValid = /^\\d+\\.\\d+$/.test(version);\n onError(6, `Unsupported YAML version ${version}`, isValid);\n return false;\n }\n }\n default:\n onError(0, `Unknown directive ${name}`, true);\n return false;\n }\n }\n /**\n * Resolves a tag, matching handles to those defined in %TAG directives.\n *\n * @returns Resolved tag, which may also be the non-specific tag `'!'` or a\n * `'!local'` tag, or `null` if unresolvable.\n */\n tagName(source, onError) {\n if (source === '!')\n return '!'; // non-specific tag\n if (source[0] !== '!') {\n onError(`Not a valid tag: ${source}`);\n return null;\n }\n if (source[1] === '<') {\n const verbatim = source.slice(2, -1);\n if (verbatim === '!' || verbatim === '!!') {\n onError(`Verbatim tags aren't resolved, so ${source} is invalid.`);\n return null;\n }\n if (source[source.length - 1] !== '>')\n onError('Verbatim tags must end with a >');\n return verbatim;\n }\n const [, handle, suffix] = source.match(/^(.*!)([^!]*)$/s);\n if (!suffix)\n onError(`The ${source} tag has no suffix`);\n const prefix = this.tags[handle];\n if (prefix) {\n try {\n return prefix + decodeURIComponent(suffix);\n }\n catch (error) {\n onError(String(error));\n return null;\n }\n }\n if (handle === '!')\n return source; // local tag\n onError(`Could not resolve tag: ${source}`);\n return null;\n }\n /**\n * Given a fully resolved tag, returns its printable string form,\n * taking into account current tag prefixes and defaults.\n */\n tagString(tag) {\n for (const [handle, prefix] of Object.entries(this.tags)) {\n if (tag.startsWith(prefix))\n return handle + escapeTagName(tag.substring(prefix.length));\n }\n return tag[0] === '!' ? tag : `!<${tag}>`;\n }\n toString(doc) {\n const lines = this.yaml.explicit\n ? [`%YAML ${this.yaml.version || '1.2'}`]\n : [];\n const tagEntries = Object.entries(this.tags);\n let tagNames;\n if (doc && tagEntries.length > 0 && identity.isNode(doc.contents)) {\n const tags = {};\n visit.visit(doc.contents, (_key, node) => {\n if (identity.isNode(node) && node.tag)\n tags[node.tag] = true;\n });\n tagNames = Object.keys(tags);\n }\n else\n tagNames = [];\n for (const [handle, prefix] of tagEntries) {\n if (handle === '!!' && prefix === 'tag:yaml.org,2002:')\n continue;\n if (!doc || tagNames.some(tn => tn.startsWith(prefix)))\n lines.push(`%TAG ${handle} ${prefix}`);\n }\n return lines.join('\\n');\n }\n}\nDirectives.defaultYaml = { explicit: false, version: '1.2' };\nDirectives.defaultTags = { '!!': 'tag:yaml.org,2002:' };\n\nexports.Directives = Directives;\n","'use strict';\n\nvar identity = require('../nodes/identity.js');\nvar visit = require('../visit.js');\n\n/**\n * Verify that the input string is a valid anchor.\n *\n * Will throw on errors.\n */\nfunction anchorIsValid(anchor) {\n if (/[\\x00-\\x19\\s,[\\]{}]/.test(anchor)) {\n const sa = JSON.stringify(anchor);\n const msg = `Anchor must not contain whitespace or control characters: ${sa}`;\n throw new Error(msg);\n }\n return true;\n}\nfunction anchorNames(root) {\n const anchors = new Set();\n visit.visit(root, {\n Value(_key, node) {\n if (node.anchor)\n anchors.add(node.anchor);\n }\n });\n return anchors;\n}\n/** Find a new anchor name with the given `prefix` and a one-indexed suffix. */\nfunction findNewAnchor(prefix, exclude) {\n for (let i = 1; true; ++i) {\n const name = `${prefix}${i}`;\n if (!exclude.has(name))\n return name;\n }\n}\nfunction createNodeAnchors(doc, prefix) {\n const aliasObjects = [];\n const sourceObjects = new Map();\n let prevAnchors = null;\n return {\n onAnchor: (source) => {\n aliasObjects.push(source);\n prevAnchors ?? (prevAnchors = anchorNames(doc));\n const anchor = findNewAnchor(prefix, prevAnchors);\n prevAnchors.add(anchor);\n return anchor;\n },\n /**\n * With circular references, the source node is only resolved after all\n * of its child nodes are. This is why anchors are set only after all of\n * the nodes have been created.\n */\n setAnchors: () => {\n for (const source of aliasObjects) {\n const ref = sourceObjects.get(source);\n if (typeof ref === 'object' &&\n ref.anchor &&\n (identity.isScalar(ref.node) || identity.isCollection(ref.node))) {\n ref.node.anchor = ref.anchor;\n }\n else {\n const error = new Error('Failed to resolve repeated object (this should not happen)');\n error.source = source;\n throw error;\n }\n }\n },\n sourceObjects\n };\n}\n\nexports.anchorIsValid = anchorIsValid;\nexports.anchorNames = anchorNames;\nexports.createNodeAnchors = createNodeAnchors;\nexports.findNewAnchor = findNewAnchor;\n","'use strict';\n\n/**\n * Applies the JSON.parse reviver algorithm as defined in the ECMA-262 spec,\n * in section 24.5.1.1 \"Runtime Semantics: InternalizeJSONProperty\" of the\n * 2021 edition: https://tc39.es/ecma262/#sec-json.parse\n *\n * Includes extensions for handling Map and Set objects.\n */\nfunction applyReviver(reviver, obj, key, val) {\n if (val && typeof val === 'object') {\n if (Array.isArray(val)) {\n for (let i = 0, len = val.length; i < len; ++i) {\n const v0 = val[i];\n const v1 = applyReviver(reviver, val, String(i), v0);\n // eslint-disable-next-line @typescript-eslint/no-array-delete\n if (v1 === undefined)\n delete val[i];\n else if (v1 !== v0)\n val[i] = v1;\n }\n }\n else if (val instanceof Map) {\n for (const k of Array.from(val.keys())) {\n const v0 = val.get(k);\n const v1 = applyReviver(reviver, val, k, v0);\n if (v1 === undefined)\n val.delete(k);\n else if (v1 !== v0)\n val.set(k, v1);\n }\n }\n else if (val instanceof Set) {\n for (const v0 of Array.from(val)) {\n const v1 = applyReviver(reviver, val, v0, v0);\n if (v1 === undefined)\n val.delete(v0);\n else if (v1 !== v0) {\n val.delete(v0);\n val.add(v1);\n }\n }\n }\n else {\n for (const [k, v0] of Object.entries(val)) {\n const v1 = applyReviver(reviver, val, k, v0);\n if (v1 === undefined)\n delete val[k];\n else if (v1 !== v0)\n val[k] = v1;\n }\n }\n }\n return reviver.call(obj, key, val);\n}\n\nexports.applyReviver = applyReviver;\n","'use strict';\n\nvar identity = require('./identity.js');\n\n/**\n * Recursively convert any node or its contents to native JavaScript\n *\n * @param value - The input value\n * @param arg - If `value` defines a `toJSON()` method, use this\n * as its first argument\n * @param ctx - Conversion context, originally set in Document#toJS(). If\n * `{ keep: true }` is not set, output should be suitable for JSON\n * stringification.\n */\nfunction toJS(value, arg, ctx) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n if (Array.isArray(value))\n return value.map((v, i) => toJS(v, String(i), ctx));\n if (value && typeof value.toJSON === 'function') {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-call\n if (!ctx || !identity.hasAnchor(value))\n return value.toJSON(arg, ctx);\n const data = { aliasCount: 0, count: 1, res: undefined };\n ctx.anchors.set(value, data);\n ctx.onCreate = res => {\n data.res = res;\n delete ctx.onCreate;\n };\n const res = value.toJSON(arg, ctx);\n if (ctx.onCreate)\n ctx.onCreate(res);\n return res;\n }\n if (typeof value === 'bigint' && !ctx?.keep)\n return Number(value);\n return value;\n}\n\nexports.toJS = toJS;\n","'use strict';\n\nvar applyReviver = require('../doc/applyReviver.js');\nvar identity = require('./identity.js');\nvar toJS = require('./toJS.js');\n\nclass NodeBase {\n constructor(type) {\n Object.defineProperty(this, identity.NODE_TYPE, { value: type });\n }\n /** Create a copy of this node. */\n clone() {\n const copy = Object.create(Object.getPrototypeOf(this), Object.getOwnPropertyDescriptors(this));\n if (this.range)\n copy.range = this.range.slice();\n return copy;\n }\n /** A plain JavaScript representation of this node. */\n toJS(doc, { mapAsMap, maxAliasCount, onAnchor, reviver } = {}) {\n if (!identity.isDocument(doc))\n throw new TypeError('A document argument is required');\n const ctx = {\n anchors: new Map(),\n doc,\n keep: true,\n mapAsMap: mapAsMap === true,\n mapKeyWarned: false,\n maxAliasCount: typeof maxAliasCount === 'number' ? maxAliasCount : 100\n };\n const res = toJS.toJS(this, '', ctx);\n if (typeof onAnchor === 'function')\n for (const { count, res } of ctx.anchors.values())\n onAnchor(res, count);\n return typeof reviver === 'function'\n ? applyReviver.applyReviver(reviver, { '': res }, '', res)\n : res;\n }\n}\n\nexports.NodeBase = NodeBase;\n","'use strict';\n\nvar anchors = require('../doc/anchors.js');\nvar visit = require('../visit.js');\nvar identity = require('./identity.js');\nvar Node = require('./Node.js');\nvar toJS = require('./toJS.js');\n\nclass Alias extends Node.NodeBase {\n constructor(source) {\n super(identity.ALIAS);\n this.source = source;\n Object.defineProperty(this, 'tag', {\n set() {\n throw new Error('Alias nodes cannot have tags');\n }\n });\n }\n /**\n * Resolve the value of this alias within `doc`, finding the last\n * instance of the `source` anchor before this node.\n */\n resolve(doc, ctx) {\n let nodes;\n if (ctx?.aliasResolveCache) {\n nodes = ctx.aliasResolveCache;\n }\n else {\n nodes = [];\n visit.visit(doc, {\n Node: (_key, node) => {\n if (identity.isAlias(node) || identity.hasAnchor(node))\n nodes.push(node);\n }\n });\n if (ctx)\n ctx.aliasResolveCache = nodes;\n }\n let found = undefined;\n for (const node of nodes) {\n if (node === this)\n break;\n if (node.anchor === this.source)\n found = node;\n }\n return found;\n }\n toJSON(_arg, ctx) {\n if (!ctx)\n return { source: this.source };\n const { anchors, doc, maxAliasCount } = ctx;\n const source = this.resolve(doc, ctx);\n if (!source) {\n const msg = `Unresolved alias (the anchor must be set before the alias): ${this.source}`;\n throw new ReferenceError(msg);\n }\n let data = anchors.get(source);\n if (!data) {\n // Resolve anchors for Node.prototype.toJS()\n toJS.toJS(source, null, ctx);\n data = anchors.get(source);\n }\n /* istanbul ignore if */\n if (!data || data.res === undefined) {\n const msg = 'This should not happen: Alias anchor was not resolved?';\n throw new ReferenceError(msg);\n }\n if (maxAliasCount >= 0) {\n data.count += 1;\n if (data.aliasCount === 0)\n data.aliasCount = getAliasCount(doc, source, anchors);\n if (data.count * data.aliasCount > maxAliasCount) {\n const msg = 'Excessive alias count indicates a resource exhaustion attack';\n throw new ReferenceError(msg);\n }\n }\n return data.res;\n }\n toString(ctx, _onComment, _onChompKeep) {\n const src = `*${this.source}`;\n if (ctx) {\n anchors.anchorIsValid(this.source);\n if (ctx.options.verifyAliasOrder && !ctx.anchors.has(this.source)) {\n const msg = `Unresolved alias (the anchor must be set before the alias): ${this.source}`;\n throw new Error(msg);\n }\n if (ctx.implicitKey)\n return `${src} `;\n }\n return src;\n }\n}\nfunction getAliasCount(doc, node, anchors) {\n if (identity.isAlias(node)) {\n const source = node.resolve(doc);\n const anchor = anchors && source && anchors.get(source);\n return anchor ? anchor.count * anchor.aliasCount : 0;\n }\n else if (identity.isCollection(node)) {\n let count = 0;\n for (const item of node.items) {\n const c = getAliasCount(doc, item, anchors);\n if (c > count)\n count = c;\n }\n return count;\n }\n else if (identity.isPair(node)) {\n const kc = getAliasCount(doc, node.key, anchors);\n const vc = getAliasCount(doc, node.value, anchors);\n return Math.max(kc, vc);\n }\n return 1;\n}\n\nexports.Alias = Alias;\n","'use strict';\n\nvar identity = require('./identity.js');\nvar Node = require('./Node.js');\nvar toJS = require('./toJS.js');\n\nconst isScalarValue = (value) => !value || (typeof value !== 'function' && typeof value !== 'object');\nclass Scalar extends Node.NodeBase {\n constructor(value) {\n super(identity.SCALAR);\n this.value = value;\n }\n toJSON(arg, ctx) {\n return ctx?.keep ? this.value : toJS.toJS(this.value, arg, ctx);\n }\n toString() {\n return String(this.value);\n }\n}\nScalar.BLOCK_FOLDED = 'BLOCK_FOLDED';\nScalar.BLOCK_LITERAL = 'BLOCK_LITERAL';\nScalar.PLAIN = 'PLAIN';\nScalar.QUOTE_DOUBLE = 'QUOTE_DOUBLE';\nScalar.QUOTE_SINGLE = 'QUOTE_SINGLE';\n\nexports.Scalar = Scalar;\nexports.isScalarValue = isScalarValue;\n","'use strict';\n\nvar Alias = require('../nodes/Alias.js');\nvar identity = require('../nodes/identity.js');\nvar Scalar = require('../nodes/Scalar.js');\n\nconst defaultTagPrefix = 'tag:yaml.org,2002:';\nfunction findTagObject(value, tagName, tags) {\n if (tagName) {\n const match = tags.filter(t => t.tag === tagName);\n const tagObj = match.find(t => !t.format) ?? match[0];\n if (!tagObj)\n throw new Error(`Tag ${tagName} not found`);\n return tagObj;\n }\n return tags.find(t => t.identify?.(value) && !t.format);\n}\nfunction createNode(value, tagName, ctx) {\n if (identity.isDocument(value))\n value = value.contents;\n if (identity.isNode(value))\n return value;\n if (identity.isPair(value)) {\n const map = ctx.schema[identity.MAP].createNode?.(ctx.schema, null, ctx);\n map.items.push(value);\n return map;\n }\n if (value instanceof String ||\n value instanceof Number ||\n value instanceof Boolean ||\n (typeof BigInt !== 'undefined' && value instanceof BigInt) // not supported everywhere\n ) {\n // https://tc39.es/ecma262/#sec-serializejsonproperty\n value = value.valueOf();\n }\n const { aliasDuplicateObjects, onAnchor, onTagObj, schema, sourceObjects } = ctx;\n // Detect duplicate references to the same object & use Alias nodes for all\n // after first. The `ref` wrapper allows for circular references to resolve.\n let ref = undefined;\n if (aliasDuplicateObjects && value && typeof value === 'object') {\n ref = sourceObjects.get(value);\n if (ref) {\n ref.anchor ?? (ref.anchor = onAnchor(value));\n return new Alias.Alias(ref.anchor);\n }\n else {\n ref = { anchor: null, node: null };\n sourceObjects.set(value, ref);\n }\n }\n if (tagName?.startsWith('!!'))\n tagName = defaultTagPrefix + tagName.slice(2);\n let tagObj = findTagObject(value, tagName, schema.tags);\n if (!tagObj) {\n if (value && typeof value.toJSON === 'function') {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-call\n value = value.toJSON();\n }\n if (!value || typeof value !== 'object') {\n const node = new Scalar.Scalar(value);\n if (ref)\n ref.node = node;\n return node;\n }\n tagObj =\n value instanceof Map\n ? schema[identity.MAP]\n : Symbol.iterator in Object(value)\n ? schema[identity.SEQ]\n : schema[identity.MAP];\n }\n if (onTagObj) {\n onTagObj(tagObj);\n delete ctx.onTagObj;\n }\n const node = tagObj?.createNode\n ? tagObj.createNode(ctx.schema, value, ctx)\n : typeof tagObj?.nodeClass?.from === 'function'\n ? tagObj.nodeClass.from(ctx.schema, value, ctx)\n : new Scalar.Scalar(value);\n if (tagName)\n node.tag = tagName;\n else if (!tagObj.default)\n node.tag = tagObj.tag;\n if (ref)\n ref.node = node;\n return node;\n}\n\nexports.createNode = createNode;\n","'use strict';\n\nvar createNode = require('../doc/createNode.js');\nvar identity = require('./identity.js');\nvar Node = require('./Node.js');\n\nfunction collectionFromPath(schema, path, value) {\n let v = value;\n for (let i = path.length - 1; i >= 0; --i) {\n const k = path[i];\n if (typeof k === 'number' && Number.isInteger(k) && k >= 0) {\n const a = [];\n a[k] = v;\n v = a;\n }\n else {\n v = new Map([[k, v]]);\n }\n }\n return createNode.createNode(v, undefined, {\n aliasDuplicateObjects: false,\n keepUndefined: false,\n onAnchor: () => {\n throw new Error('This should not happen, please report a bug.');\n },\n schema,\n sourceObjects: new Map()\n });\n}\n// Type guard is intentionally a little wrong so as to be more useful,\n// as it does not cover untypable empty non-string iterables (e.g. []).\nconst isEmptyPath = (path) => path == null ||\n (typeof path === 'object' && !!path[Symbol.iterator]().next().done);\nclass Collection extends Node.NodeBase {\n constructor(type, schema) {\n super(type);\n Object.defineProperty(this, 'schema', {\n value: schema,\n configurable: true,\n enumerable: false,\n writable: true\n });\n }\n /**\n * Create a copy of this collection.\n *\n * @param schema - If defined, overwrites the original's schema\n */\n clone(schema) {\n const copy = Object.create(Object.getPrototypeOf(this), Object.getOwnPropertyDescriptors(this));\n if (schema)\n copy.schema = schema;\n copy.items = copy.items.map(it => identity.isNode(it) || identity.isPair(it) ? it.clone(schema) : it);\n if (this.range)\n copy.range = this.range.slice();\n return copy;\n }\n /**\n * Adds a value to the collection. For `!!map` and `!!omap` the value must\n * be a Pair instance or a `{ key, value }` object, which may not have a key\n * that already exists in the map.\n */\n addIn(path, value) {\n if (isEmptyPath(path))\n this.add(value);\n else {\n const [key, ...rest] = path;\n const node = this.get(key, true);\n if (identity.isCollection(node))\n node.addIn(rest, value);\n else if (node === undefined && this.schema)\n this.set(key, collectionFromPath(this.schema, rest, value));\n else\n throw new Error(`Expected YAML collection at ${key}. Remaining path: ${rest}`);\n }\n }\n /**\n * Removes a value from the collection.\n * @returns `true` if the item was found and removed.\n */\n deleteIn(path) {\n const [key, ...rest] = path;\n if (rest.length === 0)\n return this.delete(key);\n const node = this.get(key, true);\n if (identity.isCollection(node))\n return node.deleteIn(rest);\n else\n throw new Error(`Expected YAML collection at ${key}. Remaining path: ${rest}`);\n }\n /**\n * Returns item at `key`, or `undefined` if not found. By default unwraps\n * scalar values from their surrounding node; to disable set `keepScalar` to\n * `true` (collections are always returned intact).\n */\n getIn(path, keepScalar) {\n const [key, ...rest] = path;\n const node = this.get(key, true);\n if (rest.length === 0)\n return !keepScalar && identity.isScalar(node) ? node.value : node;\n else\n return identity.isCollection(node) ? node.getIn(rest, keepScalar) : undefined;\n }\n hasAllNullValues(allowScalar) {\n return this.items.every(node => {\n if (!identity.isPair(node))\n return false;\n const n = node.value;\n return (n == null ||\n (allowScalar &&\n identity.isScalar(n) &&\n n.value == null &&\n !n.commentBefore &&\n !n.comment &&\n !n.tag));\n });\n }\n /**\n * Checks if the collection includes a value with the key `key`.\n */\n hasIn(path) {\n const [key, ...rest] = path;\n if (rest.length === 0)\n return this.has(key);\n const node = this.get(key, true);\n return identity.isCollection(node) ? node.hasIn(rest) : false;\n }\n /**\n * Sets a value in this collection. For `!!set`, `value` needs to be a\n * boolean to add/remove the item from the set.\n */\n setIn(path, value) {\n const [key, ...rest] = path;\n if (rest.length === 0) {\n this.set(key, value);\n }\n else {\n const node = this.get(key, true);\n if (identity.isCollection(node))\n node.setIn(rest, value);\n else if (node === undefined && this.schema)\n this.set(key, collectionFromPath(this.schema, rest, value));\n else\n throw new Error(`Expected YAML collection at ${key}. Remaining path: ${rest}`);\n }\n }\n}\n\nexports.Collection = Collection;\nexports.collectionFromPath = collectionFromPath;\nexports.isEmptyPath = isEmptyPath;\n","'use strict';\n\n/**\n * Stringifies a comment.\n *\n * Empty comment lines are left empty,\n * lines consisting of a single space are replaced by `#`,\n * and all other lines are prefixed with a `#`.\n */\nconst stringifyComment = (str) => str.replace(/^(?!$)(?: $)?/gm, '#');\nfunction indentComment(comment, indent) {\n if (/^\\n+$/.test(comment))\n return comment.substring(1);\n return indent ? comment.replace(/^(?! *$)/gm, indent) : comment;\n}\nconst lineComment = (str, indent, comment) => str.endsWith('\\n')\n ? indentComment(comment, indent)\n : comment.includes('\\n')\n ? '\\n' + indentComment(comment, indent)\n : (str.endsWith(' ') ? '' : ' ') + comment;\n\nexports.indentComment = indentComment;\nexports.lineComment = lineComment;\nexports.stringifyComment = stringifyComment;\n","'use strict';\n\nconst FOLD_FLOW = 'flow';\nconst FOLD_BLOCK = 'block';\nconst FOLD_QUOTED = 'quoted';\n/**\n * Tries to keep input at up to `lineWidth` characters, splitting only on spaces\n * not followed by newlines or spaces unless `mode` is `'quoted'`. Lines are\n * terminated with `\\n` and started with `indent`.\n */\nfunction foldFlowLines(text, indent, mode = 'flow', { indentAtStart, lineWidth = 80, minContentWidth = 20, onFold, onOverflow } = {}) {\n if (!lineWidth || lineWidth < 0)\n return text;\n if (lineWidth < minContentWidth)\n minContentWidth = 0;\n const endStep = Math.max(1 + minContentWidth, 1 + lineWidth - indent.length);\n if (text.length <= endStep)\n return text;\n const folds = [];\n const escapedFolds = {};\n let end = lineWidth - indent.length;\n if (typeof indentAtStart === 'number') {\n if (indentAtStart > lineWidth - Math.max(2, minContentWidth))\n folds.push(0);\n else\n end = lineWidth - indentAtStart;\n }\n let split = undefined;\n let prev = undefined;\n let overflow = false;\n let i = -1;\n let escStart = -1;\n let escEnd = -1;\n if (mode === FOLD_BLOCK) {\n i = consumeMoreIndentedLines(text, i, indent.length);\n if (i !== -1)\n end = i + endStep;\n }\n for (let ch; (ch = text[(i += 1)]);) {\n if (mode === FOLD_QUOTED && ch === '\\\\') {\n escStart = i;\n switch (text[i + 1]) {\n case 'x':\n i += 3;\n break;\n case 'u':\n i += 5;\n break;\n case 'U':\n i += 9;\n break;\n default:\n i += 1;\n }\n escEnd = i;\n }\n if (ch === '\\n') {\n if (mode === FOLD_BLOCK)\n i = consumeMoreIndentedLines(text, i, indent.length);\n end = i + indent.length + endStep;\n split = undefined;\n }\n else {\n if (ch === ' ' &&\n prev &&\n prev !== ' ' &&\n prev !== '\\n' &&\n prev !== '\\t') {\n // space surrounded by non-space can be replaced with newline + indent\n const next = text[i + 1];\n if (next && next !== ' ' && next !== '\\n' && next !== '\\t')\n split = i;\n }\n if (i >= end) {\n if (split) {\n folds.push(split);\n end = split + endStep;\n split = undefined;\n }\n else if (mode === FOLD_QUOTED) {\n // white-space collected at end may stretch past lineWidth\n while (prev === ' ' || prev === '\\t') {\n prev = ch;\n ch = text[(i += 1)];\n overflow = true;\n }\n // Account for newline escape, but don't break preceding escape\n const j = i > escEnd + 1 ? i - 2 : escStart - 1;\n // Bail out if lineWidth & minContentWidth are shorter than an escape string\n if (escapedFolds[j])\n return text;\n folds.push(j);\n escapedFolds[j] = true;\n end = j + endStep;\n split = undefined;\n }\n else {\n overflow = true;\n }\n }\n }\n prev = ch;\n }\n if (overflow && onOverflow)\n onOverflow();\n if (folds.length === 0)\n return text;\n if (onFold)\n onFold();\n let res = text.slice(0, folds[0]);\n for (let i = 0; i < folds.length; ++i) {\n const fold = folds[i];\n const end = folds[i + 1] || text.length;\n if (fold === 0)\n res = `\\n${indent}${text.slice(0, end)}`;\n else {\n if (mode === FOLD_QUOTED && escapedFolds[fold])\n res += `${text[fold]}\\\\`;\n res += `\\n${indent}${text.slice(fold + 1, end)}`;\n }\n }\n return res;\n}\n/**\n * Presumes `i + 1` is at the start of a line\n * @returns index of last newline in more-indented block\n */\nfunction consumeMoreIndentedLines(text, i, indent) {\n let end = i;\n let start = i + 1;\n let ch = text[start];\n while (ch === ' ' || ch === '\\t') {\n if (i < start + indent) {\n ch = text[++i];\n }\n else {\n do {\n ch = text[++i];\n } while (ch && ch !== '\\n');\n end = i;\n start = i + 1;\n ch = text[start];\n }\n }\n return end;\n}\n\nexports.FOLD_BLOCK = FOLD_BLOCK;\nexports.FOLD_FLOW = FOLD_FLOW;\nexports.FOLD_QUOTED = FOLD_QUOTED;\nexports.foldFlowLines = foldFlowLines;\n","'use strict';\n\nvar Scalar = require('../nodes/Scalar.js');\nvar foldFlowLines = require('./foldFlowLines.js');\n\nconst getFoldOptions = (ctx, isBlock) => ({\n indentAtStart: isBlock ? ctx.indent.length : ctx.indentAtStart,\n lineWidth: ctx.options.lineWidth,\n minContentWidth: ctx.options.minContentWidth\n});\n// Also checks for lines starting with %, as parsing the output as YAML 1.1 will\n// presume that's starting a new document.\nconst containsDocumentMarker = (str) => /^(%|---|\\.\\.\\.)/m.test(str);\nfunction lineLengthOverLimit(str, lineWidth, indentLength) {\n if (!lineWidth || lineWidth < 0)\n return false;\n const limit = lineWidth - indentLength;\n const strLen = str.length;\n if (strLen <= limit)\n return false;\n for (let i = 0, start = 0; i < strLen; ++i) {\n if (str[i] === '\\n') {\n if (i - start > limit)\n return true;\n start = i + 1;\n if (strLen - start <= limit)\n return false;\n }\n }\n return true;\n}\nfunction doubleQuotedString(value, ctx) {\n const json = JSON.stringify(value);\n if (ctx.options.doubleQuotedAsJSON)\n return json;\n const { implicitKey } = ctx;\n const minMultiLineLength = ctx.options.doubleQuotedMinMultiLineLength;\n const indent = ctx.indent || (containsDocumentMarker(value) ? ' ' : '');\n let str = '';\n let start = 0;\n for (let i = 0, ch = json[i]; ch; ch = json[++i]) {\n if (ch === ' ' && json[i + 1] === '\\\\' && json[i + 2] === 'n') {\n // space before newline needs to be escaped to not be folded\n str += json.slice(start, i) + '\\\\ ';\n i += 1;\n start = i;\n ch = '\\\\';\n }\n if (ch === '\\\\')\n switch (json[i + 1]) {\n case 'u':\n {\n str += json.slice(start, i);\n const code = json.substr(i + 2, 4);\n switch (code) {\n case '0000':\n str += '\\\\0';\n break;\n case '0007':\n str += '\\\\a';\n break;\n case '000b':\n str += '\\\\v';\n break;\n case '001b':\n str += '\\\\e';\n break;\n case '0085':\n str += '\\\\N';\n break;\n case '00a0':\n str += '\\\\_';\n break;\n case '2028':\n str += '\\\\L';\n break;\n case '2029':\n str += '\\\\P';\n break;\n default:\n if (code.substr(0, 2) === '00')\n str += '\\\\x' + code.substr(2);\n else\n str += json.substr(i, 6);\n }\n i += 5;\n start = i + 1;\n }\n break;\n case 'n':\n if (implicitKey ||\n json[i + 2] === '\"' ||\n json.length < minMultiLineLength) {\n i += 1;\n }\n else {\n // folding will eat first newline\n str += json.slice(start, i) + '\\n\\n';\n while (json[i + 2] === '\\\\' &&\n json[i + 3] === 'n' &&\n json[i + 4] !== '\"') {\n str += '\\n';\n i += 2;\n }\n str += indent;\n // space after newline needs to be escaped to not be folded\n if (json[i + 2] === ' ')\n str += '\\\\';\n i += 1;\n start = i + 1;\n }\n break;\n default:\n i += 1;\n }\n }\n str = start ? str + json.slice(start) : json;\n return implicitKey\n ? str\n : foldFlowLines.foldFlowLines(str, indent, foldFlowLines.FOLD_QUOTED, getFoldOptions(ctx, false));\n}\nfunction singleQuotedString(value, ctx) {\n if (ctx.options.singleQuote === false ||\n (ctx.implicitKey && value.includes('\\n')) ||\n /[ \\t]\\n|\\n[ \\t]/.test(value) // single quoted string can't have leading or trailing whitespace around newline\n )\n return doubleQuotedString(value, ctx);\n const indent = ctx.indent || (containsDocumentMarker(value) ? ' ' : '');\n const res = \"'\" + value.replace(/'/g, \"''\").replace(/\\n+/g, `$&\\n${indent}`) + \"'\";\n return ctx.implicitKey\n ? res\n : foldFlowLines.foldFlowLines(res, indent, foldFlowLines.FOLD_FLOW, getFoldOptions(ctx, false));\n}\nfunction quotedString(value, ctx) {\n const { singleQuote } = ctx.options;\n let qs;\n if (singleQuote === false)\n qs = doubleQuotedString;\n else {\n const hasDouble = value.includes('\"');\n const hasSingle = value.includes(\"'\");\n if (hasDouble && !hasSingle)\n qs = singleQuotedString;\n else if (hasSingle && !hasDouble)\n qs = doubleQuotedString;\n else\n qs = singleQuote ? singleQuotedString : doubleQuotedString;\n }\n return qs(value, ctx);\n}\n// The negative lookbehind avoids a polynomial search,\n// but isn't supported yet on Safari: https://caniuse.com/js-regexp-lookbehind\nlet blockEndNewlines;\ntry {\n blockEndNewlines = new RegExp('(^|(?\\n';\n // determine chomping from whitespace at value end\n let chomp;\n let endStart;\n for (endStart = value.length; endStart > 0; --endStart) {\n const ch = value[endStart - 1];\n if (ch !== '\\n' && ch !== '\\t' && ch !== ' ')\n break;\n }\n let end = value.substring(endStart);\n const endNlPos = end.indexOf('\\n');\n if (endNlPos === -1) {\n chomp = '-'; // strip\n }\n else if (value === end || endNlPos !== end.length - 1) {\n chomp = '+'; // keep\n if (onChompKeep)\n onChompKeep();\n }\n else {\n chomp = ''; // clip\n }\n if (end) {\n value = value.slice(0, -end.length);\n if (end[end.length - 1] === '\\n')\n end = end.slice(0, -1);\n end = end.replace(blockEndNewlines, `$&${indent}`);\n }\n // determine indent indicator from whitespace at value start\n let startWithSpace = false;\n let startEnd;\n let startNlPos = -1;\n for (startEnd = 0; startEnd < value.length; ++startEnd) {\n const ch = value[startEnd];\n if (ch === ' ')\n startWithSpace = true;\n else if (ch === '\\n')\n startNlPos = startEnd;\n else\n break;\n }\n let start = value.substring(0, startNlPos < startEnd ? startNlPos + 1 : startEnd);\n if (start) {\n value = value.substring(start.length);\n start = start.replace(/\\n+/g, `$&${indent}`);\n }\n const indentSize = indent ? '2' : '1'; // root is at -1\n // Leading | or > is added later\n let header = (startWithSpace ? indentSize : '') + chomp;\n if (comment) {\n header += ' ' + commentString(comment.replace(/ ?[\\r\\n]+/g, ' '));\n if (onComment)\n onComment();\n }\n if (!literal) {\n const foldedValue = value\n .replace(/\\n+/g, '\\n$&')\n .replace(/(?:^|\\n)([\\t ].*)(?:([\\n\\t ]*)\\n(?![\\n\\t ]))?/g, '$1$2') // more-indented lines aren't folded\n // ^ more-ind. ^ empty ^ capture next empty lines only at end of indent\n .replace(/\\n+/g, `$&${indent}`);\n let literalFallback = false;\n const foldOptions = getFoldOptions(ctx, true);\n if (blockQuote !== 'folded' && type !== Scalar.Scalar.BLOCK_FOLDED) {\n foldOptions.onOverflow = () => {\n literalFallback = true;\n };\n }\n const body = foldFlowLines.foldFlowLines(`${start}${foldedValue}${end}`, indent, foldFlowLines.FOLD_BLOCK, foldOptions);\n if (!literalFallback)\n return `>${header}\\n${indent}${body}`;\n }\n value = value.replace(/\\n+/g, `$&${indent}`);\n return `|${header}\\n${indent}${start}${value}${end}`;\n}\nfunction plainString(item, ctx, onComment, onChompKeep) {\n const { type, value } = item;\n const { actualString, implicitKey, indent, indentStep, inFlow } = ctx;\n if ((implicitKey && value.includes('\\n')) ||\n (inFlow && /[[\\]{},]/.test(value))) {\n return quotedString(value, ctx);\n }\n if (/^[\\n\\t ,[\\]{}#&*!|>'\"%@`]|^[?-]$|^[?-][ \\t]|[\\n:][ \\t]|[ \\t]\\n|[\\n\\t ]#|[\\n\\t :]$/.test(value)) {\n // not allowed:\n // - '-' or '?'\n // - start with an indicator character (except [?:-]) or /[?-] /\n // - '\\n ', ': ' or ' \\n' anywhere\n // - '#' not preceded by a non-space char\n // - end with ' ' or ':'\n return implicitKey || inFlow || !value.includes('\\n')\n ? quotedString(value, ctx)\n : blockString(item, ctx, onComment, onChompKeep);\n }\n if (!implicitKey &&\n !inFlow &&\n type !== Scalar.Scalar.PLAIN &&\n value.includes('\\n')) {\n // Where allowed & type not set explicitly, prefer block style for multiline strings\n return blockString(item, ctx, onComment, onChompKeep);\n }\n if (containsDocumentMarker(value)) {\n if (indent === '') {\n ctx.forceBlockIndent = true;\n return blockString(item, ctx, onComment, onChompKeep);\n }\n else if (implicitKey && indent === indentStep) {\n return quotedString(value, ctx);\n }\n }\n const str = value.replace(/\\n+/g, `$&\\n${indent}`);\n // Verify that output will be parsed as a string, as e.g. plain numbers and\n // booleans get parsed with those types in v1.2 (e.g. '42', 'true' & '0.9e-3'),\n // and others in v1.1.\n if (actualString) {\n const test = (tag) => tag.default && tag.tag !== 'tag:yaml.org,2002:str' && tag.test?.test(str);\n const { compat, tags } = ctx.doc.schema;\n if (tags.some(test) || compat?.some(test))\n return quotedString(value, ctx);\n }\n return implicitKey\n ? str\n : foldFlowLines.foldFlowLines(str, indent, foldFlowLines.FOLD_FLOW, getFoldOptions(ctx, false));\n}\nfunction stringifyString(item, ctx, onComment, onChompKeep) {\n const { implicitKey, inFlow } = ctx;\n const ss = typeof item.value === 'string'\n ? item\n : Object.assign({}, item, { value: String(item.value) });\n let { type } = item;\n if (type !== Scalar.Scalar.QUOTE_DOUBLE) {\n // force double quotes on control characters & unpaired surrogates\n if (/[\\x00-\\x08\\x0b-\\x1f\\x7f-\\x9f\\u{D800}-\\u{DFFF}]/u.test(ss.value))\n type = Scalar.Scalar.QUOTE_DOUBLE;\n }\n const _stringify = (_type) => {\n switch (_type) {\n case Scalar.Scalar.BLOCK_FOLDED:\n case Scalar.Scalar.BLOCK_LITERAL:\n return implicitKey || inFlow\n ? quotedString(ss.value, ctx) // blocks are not valid inside flow containers\n : blockString(ss, ctx, onComment, onChompKeep);\n case Scalar.Scalar.QUOTE_DOUBLE:\n return doubleQuotedString(ss.value, ctx);\n case Scalar.Scalar.QUOTE_SINGLE:\n return singleQuotedString(ss.value, ctx);\n case Scalar.Scalar.PLAIN:\n return plainString(ss, ctx, onComment, onChompKeep);\n default:\n return null;\n }\n };\n let res = _stringify(type);\n if (res === null) {\n const { defaultKeyType, defaultStringType } = ctx.options;\n const t = (implicitKey && defaultKeyType) || defaultStringType;\n res = _stringify(t);\n if (res === null)\n throw new Error(`Unsupported default string type ${t}`);\n }\n return res;\n}\n\nexports.stringifyString = stringifyString;\n","'use strict';\n\nvar anchors = require('../doc/anchors.js');\nvar identity = require('../nodes/identity.js');\nvar stringifyComment = require('./stringifyComment.js');\nvar stringifyString = require('./stringifyString.js');\n\nfunction createStringifyContext(doc, options) {\n const opt = Object.assign({\n blockQuote: true,\n commentString: stringifyComment.stringifyComment,\n defaultKeyType: null,\n defaultStringType: 'PLAIN',\n directives: null,\n doubleQuotedAsJSON: false,\n doubleQuotedMinMultiLineLength: 40,\n falseStr: 'false',\n flowCollectionPadding: true,\n indentSeq: true,\n lineWidth: 80,\n minContentWidth: 20,\n nullStr: 'null',\n simpleKeys: false,\n singleQuote: null,\n trueStr: 'true',\n verifyAliasOrder: true\n }, doc.schema.toStringOptions, options);\n let inFlow;\n switch (opt.collectionStyle) {\n case 'block':\n inFlow = false;\n break;\n case 'flow':\n inFlow = true;\n break;\n default:\n inFlow = null;\n }\n return {\n anchors: new Set(),\n doc,\n flowCollectionPadding: opt.flowCollectionPadding ? ' ' : '',\n indent: '',\n indentStep: typeof opt.indent === 'number' ? ' '.repeat(opt.indent) : ' ',\n inFlow,\n options: opt\n };\n}\nfunction getTagObject(tags, item) {\n if (item.tag) {\n const match = tags.filter(t => t.tag === item.tag);\n if (match.length > 0)\n return match.find(t => t.format === item.format) ?? match[0];\n }\n let tagObj = undefined;\n let obj;\n if (identity.isScalar(item)) {\n obj = item.value;\n let match = tags.filter(t => t.identify?.(obj));\n if (match.length > 1) {\n const testMatch = match.filter(t => t.test);\n if (testMatch.length > 0)\n match = testMatch;\n }\n tagObj =\n match.find(t => t.format === item.format) ?? match.find(t => !t.format);\n }\n else {\n obj = item;\n tagObj = tags.find(t => t.nodeClass && obj instanceof t.nodeClass);\n }\n if (!tagObj) {\n const name = obj?.constructor?.name ?? (obj === null ? 'null' : typeof obj);\n throw new Error(`Tag not resolved for ${name} value`);\n }\n return tagObj;\n}\n// needs to be called before value stringifier to allow for circular anchor refs\nfunction stringifyProps(node, tagObj, { anchors: anchors$1, doc }) {\n if (!doc.directives)\n return '';\n const props = [];\n const anchor = (identity.isScalar(node) || identity.isCollection(node)) && node.anchor;\n if (anchor && anchors.anchorIsValid(anchor)) {\n anchors$1.add(anchor);\n props.push(`&${anchor}`);\n }\n const tag = node.tag ?? (tagObj.default ? null : tagObj.tag);\n if (tag)\n props.push(doc.directives.tagString(tag));\n return props.join(' ');\n}\nfunction stringify(item, ctx, onComment, onChompKeep) {\n if (identity.isPair(item))\n return item.toString(ctx, onComment, onChompKeep);\n if (identity.isAlias(item)) {\n if (ctx.doc.directives)\n return item.toString(ctx);\n if (ctx.resolvedAliases?.has(item)) {\n throw new TypeError(`Cannot stringify circular structure without alias nodes`);\n }\n else {\n if (ctx.resolvedAliases)\n ctx.resolvedAliases.add(item);\n else\n ctx.resolvedAliases = new Set([item]);\n item = item.resolve(ctx.doc);\n }\n }\n let tagObj = undefined;\n const node = identity.isNode(item)\n ? item\n : ctx.doc.createNode(item, { onTagObj: o => (tagObj = o) });\n tagObj ?? (tagObj = getTagObject(ctx.doc.schema.tags, node));\n const props = stringifyProps(node, tagObj, ctx);\n if (props.length > 0)\n ctx.indentAtStart = (ctx.indentAtStart ?? 0) + props.length + 1;\n const str = typeof tagObj.stringify === 'function'\n ? tagObj.stringify(node, ctx, onComment, onChompKeep)\n : identity.isScalar(node)\n ? stringifyString.stringifyString(node, ctx, onComment, onChompKeep)\n : node.toString(ctx, onComment, onChompKeep);\n if (!props)\n return str;\n return identity.isScalar(node) || str[0] === '{' || str[0] === '['\n ? `${props} ${str}`\n : `${props}\\n${ctx.indent}${str}`;\n}\n\nexports.createStringifyContext = createStringifyContext;\nexports.stringify = stringify;\n","'use strict';\n\nvar identity = require('../nodes/identity.js');\nvar Scalar = require('../nodes/Scalar.js');\nvar stringify = require('./stringify.js');\nvar stringifyComment = require('./stringifyComment.js');\n\nfunction stringifyPair({ key, value }, ctx, onComment, onChompKeep) {\n const { allNullValues, doc, indent, indentStep, options: { commentString, indentSeq, simpleKeys } } = ctx;\n let keyComment = (identity.isNode(key) && key.comment) || null;\n if (simpleKeys) {\n if (keyComment) {\n throw new Error('With simple keys, key nodes cannot have comments');\n }\n if (identity.isCollection(key) || (!identity.isNode(key) && typeof key === 'object')) {\n const msg = 'With simple keys, collection cannot be used as a key value';\n throw new Error(msg);\n }\n }\n let explicitKey = !simpleKeys &&\n (!key ||\n (keyComment && value == null && !ctx.inFlow) ||\n identity.isCollection(key) ||\n (identity.isScalar(key)\n ? key.type === Scalar.Scalar.BLOCK_FOLDED || key.type === Scalar.Scalar.BLOCK_LITERAL\n : typeof key === 'object'));\n ctx = Object.assign({}, ctx, {\n allNullValues: false,\n implicitKey: !explicitKey && (simpleKeys || !allNullValues),\n indent: indent + indentStep\n });\n let keyCommentDone = false;\n let chompKeep = false;\n let str = stringify.stringify(key, ctx, () => (keyCommentDone = true), () => (chompKeep = true));\n if (!explicitKey && !ctx.inFlow && str.length > 1024) {\n if (simpleKeys)\n throw new Error('With simple keys, single line scalar must not span more than 1024 characters');\n explicitKey = true;\n }\n if (ctx.inFlow) {\n if (allNullValues || value == null) {\n if (keyCommentDone && onComment)\n onComment();\n return str === '' ? '?' : explicitKey ? `? ${str}` : str;\n }\n }\n else if ((allNullValues && !simpleKeys) || (value == null && explicitKey)) {\n str = `? ${str}`;\n if (keyComment && !keyCommentDone) {\n str += stringifyComment.lineComment(str, ctx.indent, commentString(keyComment));\n }\n else if (chompKeep && onChompKeep)\n onChompKeep();\n return str;\n }\n if (keyCommentDone)\n keyComment = null;\n if (explicitKey) {\n if (keyComment)\n str += stringifyComment.lineComment(str, ctx.indent, commentString(keyComment));\n str = `? ${str}\\n${indent}:`;\n }\n else {\n str = `${str}:`;\n if (keyComment)\n str += stringifyComment.lineComment(str, ctx.indent, commentString(keyComment));\n }\n let vsb, vcb, valueComment;\n if (identity.isNode(value)) {\n vsb = !!value.spaceBefore;\n vcb = value.commentBefore;\n valueComment = value.comment;\n }\n else {\n vsb = false;\n vcb = null;\n valueComment = null;\n if (value && typeof value === 'object')\n value = doc.createNode(value);\n }\n ctx.implicitKey = false;\n if (!explicitKey && !keyComment && identity.isScalar(value))\n ctx.indentAtStart = str.length + 1;\n chompKeep = false;\n if (!indentSeq &&\n indentStep.length >= 2 &&\n !ctx.inFlow &&\n !explicitKey &&\n identity.isSeq(value) &&\n !value.flow &&\n !value.tag &&\n !value.anchor) {\n // If indentSeq === false, consider '- ' as part of indentation where possible\n ctx.indent = ctx.indent.substring(2);\n }\n let valueCommentDone = false;\n const valueStr = stringify.stringify(value, ctx, () => (valueCommentDone = true), () => (chompKeep = true));\n let ws = ' ';\n if (keyComment || vsb || vcb) {\n ws = vsb ? '\\n' : '';\n if (vcb) {\n const cs = commentString(vcb);\n ws += `\\n${stringifyComment.indentComment(cs, ctx.indent)}`;\n }\n if (valueStr === '' && !ctx.inFlow) {\n if (ws === '\\n')\n ws = '\\n\\n';\n }\n else {\n ws += `\\n${ctx.indent}`;\n }\n }\n else if (!explicitKey && identity.isCollection(value)) {\n const vs0 = valueStr[0];\n const nl0 = valueStr.indexOf('\\n');\n const hasNewline = nl0 !== -1;\n const flow = ctx.inFlow ?? value.flow ?? value.items.length === 0;\n if (hasNewline || !flow) {\n let hasPropsLine = false;\n if (hasNewline && (vs0 === '&' || vs0 === '!')) {\n let sp0 = valueStr.indexOf(' ');\n if (vs0 === '&' &&\n sp0 !== -1 &&\n sp0 < nl0 &&\n valueStr[sp0 + 1] === '!') {\n sp0 = valueStr.indexOf(' ', sp0 + 1);\n }\n if (sp0 === -1 || nl0 < sp0)\n hasPropsLine = true;\n }\n if (!hasPropsLine)\n ws = `\\n${ctx.indent}`;\n }\n }\n else if (valueStr === '' || valueStr[0] === '\\n') {\n ws = '';\n }\n str += ws + valueStr;\n if (ctx.inFlow) {\n if (valueCommentDone && onComment)\n onComment();\n }\n else if (valueComment && !valueCommentDone) {\n str += stringifyComment.lineComment(str, ctx.indent, commentString(valueComment));\n }\n else if (chompKeep && onChompKeep) {\n onChompKeep();\n }\n return str;\n}\n\nexports.stringifyPair = stringifyPair;\n","'use strict';\n\nvar node_process = require('process');\n\nfunction debug(logLevel, ...messages) {\n if (logLevel === 'debug')\n console.log(...messages);\n}\nfunction warn(logLevel, warning) {\n if (logLevel === 'debug' || logLevel === 'warn') {\n if (typeof node_process.emitWarning === 'function')\n node_process.emitWarning(warning);\n else\n console.warn(warning);\n }\n}\n\nexports.debug = debug;\nexports.warn = warn;\n","'use strict';\n\nvar identity = require('../../nodes/identity.js');\nvar Scalar = require('../../nodes/Scalar.js');\n\n// If the value associated with a merge key is a single mapping node, each of\n// its key/value pairs is inserted into the current mapping, unless the key\n// already exists in it. If the value associated with the merge key is a\n// sequence, then this sequence is expected to contain mapping nodes and each\n// of these nodes is merged in turn according to its order in the sequence.\n// Keys in mapping nodes earlier in the sequence override keys specified in\n// later mapping nodes. -- http://yaml.org/type/merge.html\nconst MERGE_KEY = '<<';\nconst merge = {\n identify: value => value === MERGE_KEY ||\n (typeof value === 'symbol' && value.description === MERGE_KEY),\n default: 'key',\n tag: 'tag:yaml.org,2002:merge',\n test: /^<<$/,\n resolve: () => Object.assign(new Scalar.Scalar(Symbol(MERGE_KEY)), {\n addToJSMap: addMergeToJSMap\n }),\n stringify: () => MERGE_KEY\n};\nconst isMergeKey = (ctx, key) => (merge.identify(key) ||\n (identity.isScalar(key) &&\n (!key.type || key.type === Scalar.Scalar.PLAIN) &&\n merge.identify(key.value))) &&\n ctx?.doc.schema.tags.some(tag => tag.tag === merge.tag && tag.default);\nfunction addMergeToJSMap(ctx, map, value) {\n value = ctx && identity.isAlias(value) ? value.resolve(ctx.doc) : value;\n if (identity.isSeq(value))\n for (const it of value.items)\n mergeValue(ctx, map, it);\n else if (Array.isArray(value))\n for (const it of value)\n mergeValue(ctx, map, it);\n else\n mergeValue(ctx, map, value);\n}\nfunction mergeValue(ctx, map, value) {\n const source = ctx && identity.isAlias(value) ? value.resolve(ctx.doc) : value;\n if (!identity.isMap(source))\n throw new Error('Merge sources must be maps or map aliases');\n const srcMap = source.toJSON(null, ctx, Map);\n for (const [key, value] of srcMap) {\n if (map instanceof Map) {\n if (!map.has(key))\n map.set(key, value);\n }\n else if (map instanceof Set) {\n map.add(key);\n }\n else if (!Object.prototype.hasOwnProperty.call(map, key)) {\n Object.defineProperty(map, key, {\n value,\n writable: true,\n enumerable: true,\n configurable: true\n });\n }\n }\n return map;\n}\n\nexports.addMergeToJSMap = addMergeToJSMap;\nexports.isMergeKey = isMergeKey;\nexports.merge = merge;\n","'use strict';\n\nvar log = require('../log.js');\nvar merge = require('../schema/yaml-1.1/merge.js');\nvar stringify = require('../stringify/stringify.js');\nvar identity = require('./identity.js');\nvar toJS = require('./toJS.js');\n\nfunction addPairToJSMap(ctx, map, { key, value }) {\n if (identity.isNode(key) && key.addToJSMap)\n key.addToJSMap(ctx, map, value);\n // TODO: Should drop this special case for bare << handling\n else if (merge.isMergeKey(ctx, key))\n merge.addMergeToJSMap(ctx, map, value);\n else {\n const jsKey = toJS.toJS(key, '', ctx);\n if (map instanceof Map) {\n map.set(jsKey, toJS.toJS(value, jsKey, ctx));\n }\n else if (map instanceof Set) {\n map.add(jsKey);\n }\n else {\n const stringKey = stringifyKey(key, jsKey, ctx);\n const jsValue = toJS.toJS(value, stringKey, ctx);\n if (stringKey in map)\n Object.defineProperty(map, stringKey, {\n value: jsValue,\n writable: true,\n enumerable: true,\n configurable: true\n });\n else\n map[stringKey] = jsValue;\n }\n }\n return map;\n}\nfunction stringifyKey(key, jsKey, ctx) {\n if (jsKey === null)\n return '';\n // eslint-disable-next-line @typescript-eslint/no-base-to-string\n if (typeof jsKey !== 'object')\n return String(jsKey);\n if (identity.isNode(key) && ctx?.doc) {\n const strCtx = stringify.createStringifyContext(ctx.doc, {});\n strCtx.anchors = new Set();\n for (const node of ctx.anchors.keys())\n strCtx.anchors.add(node.anchor);\n strCtx.inFlow = true;\n strCtx.inStringifyKey = true;\n const strKey = key.toString(strCtx);\n if (!ctx.mapKeyWarned) {\n let jsonStr = JSON.stringify(strKey);\n if (jsonStr.length > 40)\n jsonStr = jsonStr.substring(0, 36) + '...\"';\n log.warn(ctx.doc.options.logLevel, `Keys with collection values will be stringified due to JS Object restrictions: ${jsonStr}. Set mapAsMap: true to use object keys.`);\n ctx.mapKeyWarned = true;\n }\n return strKey;\n }\n return JSON.stringify(jsKey);\n}\n\nexports.addPairToJSMap = addPairToJSMap;\n","'use strict';\n\nvar createNode = require('../doc/createNode.js');\nvar stringifyPair = require('../stringify/stringifyPair.js');\nvar addPairToJSMap = require('./addPairToJSMap.js');\nvar identity = require('./identity.js');\n\nfunction createPair(key, value, ctx) {\n const k = createNode.createNode(key, undefined, ctx);\n const v = createNode.createNode(value, undefined, ctx);\n return new Pair(k, v);\n}\nclass Pair {\n constructor(key, value = null) {\n Object.defineProperty(this, identity.NODE_TYPE, { value: identity.PAIR });\n this.key = key;\n this.value = value;\n }\n clone(schema) {\n let { key, value } = this;\n if (identity.isNode(key))\n key = key.clone(schema);\n if (identity.isNode(value))\n value = value.clone(schema);\n return new Pair(key, value);\n }\n toJSON(_, ctx) {\n const pair = ctx?.mapAsMap ? new Map() : {};\n return addPairToJSMap.addPairToJSMap(ctx, pair, this);\n }\n toString(ctx, onComment, onChompKeep) {\n return ctx?.doc\n ? stringifyPair.stringifyPair(this, ctx, onComment, onChompKeep)\n : JSON.stringify(this);\n }\n}\n\nexports.Pair = Pair;\nexports.createPair = createPair;\n","'use strict';\n\nvar identity = require('../nodes/identity.js');\nvar stringify = require('./stringify.js');\nvar stringifyComment = require('./stringifyComment.js');\n\nfunction stringifyCollection(collection, ctx, options) {\n const flow = ctx.inFlow ?? collection.flow;\n const stringify = flow ? stringifyFlowCollection : stringifyBlockCollection;\n return stringify(collection, ctx, options);\n}\nfunction stringifyBlockCollection({ comment, items }, ctx, { blockItemPrefix, flowChars, itemIndent, onChompKeep, onComment }) {\n const { indent, options: { commentString } } = ctx;\n const itemCtx = Object.assign({}, ctx, { indent: itemIndent, type: null });\n let chompKeep = false; // flag for the preceding node's status\n const lines = [];\n for (let i = 0; i < items.length; ++i) {\n const item = items[i];\n let comment = null;\n if (identity.isNode(item)) {\n if (!chompKeep && item.spaceBefore)\n lines.push('');\n addCommentBefore(ctx, lines, item.commentBefore, chompKeep);\n if (item.comment)\n comment = item.comment;\n }\n else if (identity.isPair(item)) {\n const ik = identity.isNode(item.key) ? item.key : null;\n if (ik) {\n if (!chompKeep && ik.spaceBefore)\n lines.push('');\n addCommentBefore(ctx, lines, ik.commentBefore, chompKeep);\n }\n }\n chompKeep = false;\n let str = stringify.stringify(item, itemCtx, () => (comment = null), () => (chompKeep = true));\n if (comment)\n str += stringifyComment.lineComment(str, itemIndent, commentString(comment));\n if (chompKeep && comment)\n chompKeep = false;\n lines.push(blockItemPrefix + str);\n }\n let str;\n if (lines.length === 0) {\n str = flowChars.start + flowChars.end;\n }\n else {\n str = lines[0];\n for (let i = 1; i < lines.length; ++i) {\n const line = lines[i];\n str += line ? `\\n${indent}${line}` : '\\n';\n }\n }\n if (comment) {\n str += '\\n' + stringifyComment.indentComment(commentString(comment), indent);\n if (onComment)\n onComment();\n }\n else if (chompKeep && onChompKeep)\n onChompKeep();\n return str;\n}\nfunction stringifyFlowCollection({ items }, ctx, { flowChars, itemIndent }) {\n const { indent, indentStep, flowCollectionPadding: fcPadding, options: { commentString } } = ctx;\n itemIndent += indentStep;\n const itemCtx = Object.assign({}, ctx, {\n indent: itemIndent,\n inFlow: true,\n type: null\n });\n let reqNewline = false;\n let linesAtValue = 0;\n const lines = [];\n for (let i = 0; i < items.length; ++i) {\n const item = items[i];\n let comment = null;\n if (identity.isNode(item)) {\n if (item.spaceBefore)\n lines.push('');\n addCommentBefore(ctx, lines, item.commentBefore, false);\n if (item.comment)\n comment = item.comment;\n }\n else if (identity.isPair(item)) {\n const ik = identity.isNode(item.key) ? item.key : null;\n if (ik) {\n if (ik.spaceBefore)\n lines.push('');\n addCommentBefore(ctx, lines, ik.commentBefore, false);\n if (ik.comment)\n reqNewline = true;\n }\n const iv = identity.isNode(item.value) ? item.value : null;\n if (iv) {\n if (iv.comment)\n comment = iv.comment;\n if (iv.commentBefore)\n reqNewline = true;\n }\n else if (item.value == null && ik?.comment) {\n comment = ik.comment;\n }\n }\n if (comment)\n reqNewline = true;\n let str = stringify.stringify(item, itemCtx, () => (comment = null));\n if (i < items.length - 1)\n str += ',';\n if (comment)\n str += stringifyComment.lineComment(str, itemIndent, commentString(comment));\n if (!reqNewline && (lines.length > linesAtValue || str.includes('\\n')))\n reqNewline = true;\n lines.push(str);\n linesAtValue = lines.length;\n }\n const { start, end } = flowChars;\n if (lines.length === 0) {\n return start + end;\n }\n else {\n if (!reqNewline) {\n const len = lines.reduce((sum, line) => sum + line.length + 2, 2);\n reqNewline = ctx.options.lineWidth > 0 && len > ctx.options.lineWidth;\n }\n if (reqNewline) {\n let str = start;\n for (const line of lines)\n str += line ? `\\n${indentStep}${indent}${line}` : '\\n';\n return `${str}\\n${indent}${end}`;\n }\n else {\n return `${start}${fcPadding}${lines.join(' ')}${fcPadding}${end}`;\n }\n }\n}\nfunction addCommentBefore({ indent, options: { commentString } }, lines, comment, chompKeep) {\n if (comment && chompKeep)\n comment = comment.replace(/^\\n+/, '');\n if (comment) {\n const ic = stringifyComment.indentComment(commentString(comment), indent);\n lines.push(ic.trimStart()); // Avoid double indent on first line\n }\n}\n\nexports.stringifyCollection = stringifyCollection;\n","'use strict';\n\nvar stringifyCollection = require('../stringify/stringifyCollection.js');\nvar addPairToJSMap = require('./addPairToJSMap.js');\nvar Collection = require('./Collection.js');\nvar identity = require('./identity.js');\nvar Pair = require('./Pair.js');\nvar Scalar = require('./Scalar.js');\n\nfunction findPair(items, key) {\n const k = identity.isScalar(key) ? key.value : key;\n for (const it of items) {\n if (identity.isPair(it)) {\n if (it.key === key || it.key === k)\n return it;\n if (identity.isScalar(it.key) && it.key.value === k)\n return it;\n }\n }\n return undefined;\n}\nclass YAMLMap extends Collection.Collection {\n static get tagName() {\n return 'tag:yaml.org,2002:map';\n }\n constructor(schema) {\n super(identity.MAP, schema);\n this.items = [];\n }\n /**\n * A generic collection parsing method that can be extended\n * to other node classes that inherit from YAMLMap\n */\n static from(schema, obj, ctx) {\n const { keepUndefined, replacer } = ctx;\n const map = new this(schema);\n const add = (key, value) => {\n if (typeof replacer === 'function')\n value = replacer.call(obj, key, value);\n else if (Array.isArray(replacer) && !replacer.includes(key))\n return;\n if (value !== undefined || keepUndefined)\n map.items.push(Pair.createPair(key, value, ctx));\n };\n if (obj instanceof Map) {\n for (const [key, value] of obj)\n add(key, value);\n }\n else if (obj && typeof obj === 'object') {\n for (const key of Object.keys(obj))\n add(key, obj[key]);\n }\n if (typeof schema.sortMapEntries === 'function') {\n map.items.sort(schema.sortMapEntries);\n }\n return map;\n }\n /**\n * Adds a value to the collection.\n *\n * @param overwrite - If not set `true`, using a key that is already in the\n * collection will throw. Otherwise, overwrites the previous value.\n */\n add(pair, overwrite) {\n let _pair;\n if (identity.isPair(pair))\n _pair = pair;\n else if (!pair || typeof pair !== 'object' || !('key' in pair)) {\n // In TypeScript, this never happens.\n _pair = new Pair.Pair(pair, pair?.value);\n }\n else\n _pair = new Pair.Pair(pair.key, pair.value);\n const prev = findPair(this.items, _pair.key);\n const sortEntries = this.schema?.sortMapEntries;\n if (prev) {\n if (!overwrite)\n throw new Error(`Key ${_pair.key} already set`);\n // For scalars, keep the old node & its comments and anchors\n if (identity.isScalar(prev.value) && Scalar.isScalarValue(_pair.value))\n prev.value.value = _pair.value;\n else\n prev.value = _pair.value;\n }\n else if (sortEntries) {\n const i = this.items.findIndex(item => sortEntries(_pair, item) < 0);\n if (i === -1)\n this.items.push(_pair);\n else\n this.items.splice(i, 0, _pair);\n }\n else {\n this.items.push(_pair);\n }\n }\n delete(key) {\n const it = findPair(this.items, key);\n if (!it)\n return false;\n const del = this.items.splice(this.items.indexOf(it), 1);\n return del.length > 0;\n }\n get(key, keepScalar) {\n const it = findPair(this.items, key);\n const node = it?.value;\n return (!keepScalar && identity.isScalar(node) ? node.value : node) ?? undefined;\n }\n has(key) {\n return !!findPair(this.items, key);\n }\n set(key, value) {\n this.add(new Pair.Pair(key, value), true);\n }\n /**\n * @param ctx - Conversion context, originally set in Document#toJS()\n * @param {Class} Type - If set, forces the returned collection type\n * @returns Instance of Type, Map, or Object\n */\n toJSON(_, ctx, Type) {\n const map = Type ? new Type() : ctx?.mapAsMap ? new Map() : {};\n if (ctx?.onCreate)\n ctx.onCreate(map);\n for (const item of this.items)\n addPairToJSMap.addPairToJSMap(ctx, map, item);\n return map;\n }\n toString(ctx, onComment, onChompKeep) {\n if (!ctx)\n return JSON.stringify(this);\n for (const item of this.items) {\n if (!identity.isPair(item))\n throw new Error(`Map items must all be pairs; found ${JSON.stringify(item)} instead`);\n }\n if (!ctx.allNullValues && this.hasAllNullValues(false))\n ctx = Object.assign({}, ctx, { allNullValues: true });\n return stringifyCollection.stringifyCollection(this, ctx, {\n blockItemPrefix: '',\n flowChars: { start: '{', end: '}' },\n itemIndent: ctx.indent || '',\n onChompKeep,\n onComment\n });\n }\n}\n\nexports.YAMLMap = YAMLMap;\nexports.findPair = findPair;\n","'use strict';\n\nvar identity = require('../../nodes/identity.js');\nvar YAMLMap = require('../../nodes/YAMLMap.js');\n\nconst map = {\n collection: 'map',\n default: true,\n nodeClass: YAMLMap.YAMLMap,\n tag: 'tag:yaml.org,2002:map',\n resolve(map, onError) {\n if (!identity.isMap(map))\n onError('Expected a mapping for this tag');\n return map;\n },\n createNode: (schema, obj, ctx) => YAMLMap.YAMLMap.from(schema, obj, ctx)\n};\n\nexports.map = map;\n","'use strict';\n\nvar createNode = require('../doc/createNode.js');\nvar stringifyCollection = require('../stringify/stringifyCollection.js');\nvar Collection = require('./Collection.js');\nvar identity = require('./identity.js');\nvar Scalar = require('./Scalar.js');\nvar toJS = require('./toJS.js');\n\nclass YAMLSeq extends Collection.Collection {\n static get tagName() {\n return 'tag:yaml.org,2002:seq';\n }\n constructor(schema) {\n super(identity.SEQ, schema);\n this.items = [];\n }\n add(value) {\n this.items.push(value);\n }\n /**\n * Removes a value from the collection.\n *\n * `key` must contain a representation of an integer for this to succeed.\n * It may be wrapped in a `Scalar`.\n *\n * @returns `true` if the item was found and removed.\n */\n delete(key) {\n const idx = asItemIndex(key);\n if (typeof idx !== 'number')\n return false;\n const del = this.items.splice(idx, 1);\n return del.length > 0;\n }\n get(key, keepScalar) {\n const idx = asItemIndex(key);\n if (typeof idx !== 'number')\n return undefined;\n const it = this.items[idx];\n return !keepScalar && identity.isScalar(it) ? it.value : it;\n }\n /**\n * Checks if the collection includes a value with the key `key`.\n *\n * `key` must contain a representation of an integer for this to succeed.\n * It may be wrapped in a `Scalar`.\n */\n has(key) {\n const idx = asItemIndex(key);\n return typeof idx === 'number' && idx < this.items.length;\n }\n /**\n * Sets a value in this collection. For `!!set`, `value` needs to be a\n * boolean to add/remove the item from the set.\n *\n * If `key` does not contain a representation of an integer, this will throw.\n * It may be wrapped in a `Scalar`.\n */\n set(key, value) {\n const idx = asItemIndex(key);\n if (typeof idx !== 'number')\n throw new Error(`Expected a valid index, not ${key}.`);\n const prev = this.items[idx];\n if (identity.isScalar(prev) && Scalar.isScalarValue(value))\n prev.value = value;\n else\n this.items[idx] = value;\n }\n toJSON(_, ctx) {\n const seq = [];\n if (ctx?.onCreate)\n ctx.onCreate(seq);\n let i = 0;\n for (const item of this.items)\n seq.push(toJS.toJS(item, String(i++), ctx));\n return seq;\n }\n toString(ctx, onComment, onChompKeep) {\n if (!ctx)\n return JSON.stringify(this);\n return stringifyCollection.stringifyCollection(this, ctx, {\n blockItemPrefix: '- ',\n flowChars: { start: '[', end: ']' },\n itemIndent: (ctx.indent || '') + ' ',\n onChompKeep,\n onComment\n });\n }\n static from(schema, obj, ctx) {\n const { replacer } = ctx;\n const seq = new this(schema);\n if (obj && Symbol.iterator in Object(obj)) {\n let i = 0;\n for (let it of obj) {\n if (typeof replacer === 'function') {\n const key = obj instanceof Set ? it : String(i++);\n it = replacer.call(obj, key, it);\n }\n seq.items.push(createNode.createNode(it, undefined, ctx));\n }\n }\n return seq;\n }\n}\nfunction asItemIndex(key) {\n let idx = identity.isScalar(key) ? key.value : key;\n if (idx && typeof idx === 'string')\n idx = Number(idx);\n return typeof idx === 'number' && Number.isInteger(idx) && idx >= 0\n ? idx\n : null;\n}\n\nexports.YAMLSeq = YAMLSeq;\n","'use strict';\n\nvar identity = require('../../nodes/identity.js');\nvar YAMLSeq = require('../../nodes/YAMLSeq.js');\n\nconst seq = {\n collection: 'seq',\n default: true,\n nodeClass: YAMLSeq.YAMLSeq,\n tag: 'tag:yaml.org,2002:seq',\n resolve(seq, onError) {\n if (!identity.isSeq(seq))\n onError('Expected a sequence for this tag');\n return seq;\n },\n createNode: (schema, obj, ctx) => YAMLSeq.YAMLSeq.from(schema, obj, ctx)\n};\n\nexports.seq = seq;\n","'use strict';\n\nvar stringifyString = require('../../stringify/stringifyString.js');\n\nconst string = {\n identify: value => typeof value === 'string',\n default: true,\n tag: 'tag:yaml.org,2002:str',\n resolve: str => str,\n stringify(item, ctx, onComment, onChompKeep) {\n ctx = Object.assign({ actualString: true }, ctx);\n return stringifyString.stringifyString(item, ctx, onComment, onChompKeep);\n }\n};\n\nexports.string = string;\n","'use strict';\n\nvar Scalar = require('../../nodes/Scalar.js');\n\nconst nullTag = {\n identify: value => value == null,\n createNode: () => new Scalar.Scalar(null),\n default: true,\n tag: 'tag:yaml.org,2002:null',\n test: /^(?:~|[Nn]ull|NULL)?$/,\n resolve: () => new Scalar.Scalar(null),\n stringify: ({ source }, ctx) => typeof source === 'string' && nullTag.test.test(source)\n ? source\n : ctx.options.nullStr\n};\n\nexports.nullTag = nullTag;\n","'use strict';\n\nvar Scalar = require('../../nodes/Scalar.js');\n\nconst boolTag = {\n identify: value => typeof value === 'boolean',\n default: true,\n tag: 'tag:yaml.org,2002:bool',\n test: /^(?:[Tt]rue|TRUE|[Ff]alse|FALSE)$/,\n resolve: str => new Scalar.Scalar(str[0] === 't' || str[0] === 'T'),\n stringify({ source, value }, ctx) {\n if (source && boolTag.test.test(source)) {\n const sv = source[0] === 't' || source[0] === 'T';\n if (value === sv)\n return source;\n }\n return value ? ctx.options.trueStr : ctx.options.falseStr;\n }\n};\n\nexports.boolTag = boolTag;\n","'use strict';\n\nfunction stringifyNumber({ format, minFractionDigits, tag, value }) {\n if (typeof value === 'bigint')\n return String(value);\n const num = typeof value === 'number' ? value : Number(value);\n if (!isFinite(num))\n return isNaN(num) ? '.nan' : num < 0 ? '-.inf' : '.inf';\n let n = JSON.stringify(value);\n if (!format &&\n minFractionDigits &&\n (!tag || tag === 'tag:yaml.org,2002:float') &&\n /^\\d/.test(n)) {\n let i = n.indexOf('.');\n if (i < 0) {\n i = n.length;\n n += '.';\n }\n let d = minFractionDigits - (n.length - i - 1);\n while (d-- > 0)\n n += '0';\n }\n return n;\n}\n\nexports.stringifyNumber = stringifyNumber;\n","'use strict';\n\nvar Scalar = require('../../nodes/Scalar.js');\nvar stringifyNumber = require('../../stringify/stringifyNumber.js');\n\nconst floatNaN = {\n identify: value => typeof value === 'number',\n default: true,\n tag: 'tag:yaml.org,2002:float',\n test: /^(?:[-+]?\\.(?:inf|Inf|INF)|\\.nan|\\.NaN|\\.NAN)$/,\n resolve: str => str.slice(-3).toLowerCase() === 'nan'\n ? NaN\n : str[0] === '-'\n ? Number.NEGATIVE_INFINITY\n : Number.POSITIVE_INFINITY,\n stringify: stringifyNumber.stringifyNumber\n};\nconst floatExp = {\n identify: value => typeof value === 'number',\n default: true,\n tag: 'tag:yaml.org,2002:float',\n format: 'EXP',\n test: /^[-+]?(?:\\.[0-9]+|[0-9]+(?:\\.[0-9]*)?)[eE][-+]?[0-9]+$/,\n resolve: str => parseFloat(str),\n stringify(node) {\n const num = Number(node.value);\n return isFinite(num) ? num.toExponential() : stringifyNumber.stringifyNumber(node);\n }\n};\nconst float = {\n identify: value => typeof value === 'number',\n default: true,\n tag: 'tag:yaml.org,2002:float',\n test: /^[-+]?(?:\\.[0-9]+|[0-9]+\\.[0-9]*)$/,\n resolve(str) {\n const node = new Scalar.Scalar(parseFloat(str));\n const dot = str.indexOf('.');\n if (dot !== -1 && str[str.length - 1] === '0')\n node.minFractionDigits = str.length - dot - 1;\n return node;\n },\n stringify: stringifyNumber.stringifyNumber\n};\n\nexports.float = float;\nexports.floatExp = floatExp;\nexports.floatNaN = floatNaN;\n","'use strict';\n\nvar stringifyNumber = require('../../stringify/stringifyNumber.js');\n\nconst intIdentify = (value) => typeof value === 'bigint' || Number.isInteger(value);\nconst intResolve = (str, offset, radix, { intAsBigInt }) => (intAsBigInt ? BigInt(str) : parseInt(str.substring(offset), radix));\nfunction intStringify(node, radix, prefix) {\n const { value } = node;\n if (intIdentify(value) && value >= 0)\n return prefix + value.toString(radix);\n return stringifyNumber.stringifyNumber(node);\n}\nconst intOct = {\n identify: value => intIdentify(value) && value >= 0,\n default: true,\n tag: 'tag:yaml.org,2002:int',\n format: 'OCT',\n test: /^0o[0-7]+$/,\n resolve: (str, _onError, opt) => intResolve(str, 2, 8, opt),\n stringify: node => intStringify(node, 8, '0o')\n};\nconst int = {\n identify: intIdentify,\n default: true,\n tag: 'tag:yaml.org,2002:int',\n test: /^[-+]?[0-9]+$/,\n resolve: (str, _onError, opt) => intResolve(str, 0, 10, opt),\n stringify: stringifyNumber.stringifyNumber\n};\nconst intHex = {\n identify: value => intIdentify(value) && value >= 0,\n default: true,\n tag: 'tag:yaml.org,2002:int',\n format: 'HEX',\n test: /^0x[0-9a-fA-F]+$/,\n resolve: (str, _onError, opt) => intResolve(str, 2, 16, opt),\n stringify: node => intStringify(node, 16, '0x')\n};\n\nexports.int = int;\nexports.intHex = intHex;\nexports.intOct = intOct;\n","'use strict';\n\nvar map = require('../common/map.js');\nvar _null = require('../common/null.js');\nvar seq = require('../common/seq.js');\nvar string = require('../common/string.js');\nvar bool = require('./bool.js');\nvar float = require('./float.js');\nvar int = require('./int.js');\n\nconst schema = [\n map.map,\n seq.seq,\n string.string,\n _null.nullTag,\n bool.boolTag,\n int.intOct,\n int.int,\n int.intHex,\n float.floatNaN,\n float.floatExp,\n float.float\n];\n\nexports.schema = schema;\n","'use strict';\n\nvar Scalar = require('../../nodes/Scalar.js');\nvar map = require('../common/map.js');\nvar seq = require('../common/seq.js');\n\nfunction intIdentify(value) {\n return typeof value === 'bigint' || Number.isInteger(value);\n}\nconst stringifyJSON = ({ value }) => JSON.stringify(value);\nconst jsonScalars = [\n {\n identify: value => typeof value === 'string',\n default: true,\n tag: 'tag:yaml.org,2002:str',\n resolve: str => str,\n stringify: stringifyJSON\n },\n {\n identify: value => value == null,\n createNode: () => new Scalar.Scalar(null),\n default: true,\n tag: 'tag:yaml.org,2002:null',\n test: /^null$/,\n resolve: () => null,\n stringify: stringifyJSON\n },\n {\n identify: value => typeof value === 'boolean',\n default: true,\n tag: 'tag:yaml.org,2002:bool',\n test: /^true$|^false$/,\n resolve: str => str === 'true',\n stringify: stringifyJSON\n },\n {\n identify: intIdentify,\n default: true,\n tag: 'tag:yaml.org,2002:int',\n test: /^-?(?:0|[1-9][0-9]*)$/,\n resolve: (str, _onError, { intAsBigInt }) => intAsBigInt ? BigInt(str) : parseInt(str, 10),\n stringify: ({ value }) => intIdentify(value) ? value.toString() : JSON.stringify(value)\n },\n {\n identify: value => typeof value === 'number',\n default: true,\n tag: 'tag:yaml.org,2002:float',\n test: /^-?(?:0|[1-9][0-9]*)(?:\\.[0-9]*)?(?:[eE][-+]?[0-9]+)?$/,\n resolve: str => parseFloat(str),\n stringify: stringifyJSON\n }\n];\nconst jsonError = {\n default: true,\n tag: '',\n test: /^/,\n resolve(str, onError) {\n onError(`Unresolved plain scalar ${JSON.stringify(str)}`);\n return str;\n }\n};\nconst schema = [map.map, seq.seq].concat(jsonScalars, jsonError);\n\nexports.schema = schema;\n","'use strict';\n\nvar node_buffer = require('buffer');\nvar Scalar = require('../../nodes/Scalar.js');\nvar stringifyString = require('../../stringify/stringifyString.js');\n\nconst binary = {\n identify: value => value instanceof Uint8Array, // Buffer inherits from Uint8Array\n default: false,\n tag: 'tag:yaml.org,2002:binary',\n /**\n * Returns a Buffer in node and an Uint8Array in browsers\n *\n * To use the resulting buffer as an image, you'll want to do something like:\n *\n * const blob = new Blob([buffer], { type: 'image/jpeg' })\n * document.querySelector('#photo').src = URL.createObjectURL(blob)\n */\n resolve(src, onError) {\n if (typeof node_buffer.Buffer === 'function') {\n return node_buffer.Buffer.from(src, 'base64');\n }\n else if (typeof atob === 'function') {\n // On IE 11, atob() can't handle newlines\n const str = atob(src.replace(/[\\n\\r]/g, ''));\n const buffer = new Uint8Array(str.length);\n for (let i = 0; i < str.length; ++i)\n buffer[i] = str.charCodeAt(i);\n return buffer;\n }\n else {\n onError('This environment does not support reading binary tags; either Buffer or atob is required');\n return src;\n }\n },\n stringify({ comment, type, value }, ctx, onComment, onChompKeep) {\n if (!value)\n return '';\n const buf = value; // checked earlier by binary.identify()\n let str;\n if (typeof node_buffer.Buffer === 'function') {\n str =\n buf instanceof node_buffer.Buffer\n ? buf.toString('base64')\n : node_buffer.Buffer.from(buf.buffer).toString('base64');\n }\n else if (typeof btoa === 'function') {\n let s = '';\n for (let i = 0; i < buf.length; ++i)\n s += String.fromCharCode(buf[i]);\n str = btoa(s);\n }\n else {\n throw new Error('This environment does not support writing binary tags; either Buffer or btoa is required');\n }\n type ?? (type = Scalar.Scalar.BLOCK_LITERAL);\n if (type !== Scalar.Scalar.QUOTE_DOUBLE) {\n const lineWidth = Math.max(ctx.options.lineWidth - ctx.indent.length, ctx.options.minContentWidth);\n const n = Math.ceil(str.length / lineWidth);\n const lines = new Array(n);\n for (let i = 0, o = 0; i < n; ++i, o += lineWidth) {\n lines[i] = str.substr(o, lineWidth);\n }\n str = lines.join(type === Scalar.Scalar.BLOCK_LITERAL ? '\\n' : ' ');\n }\n return stringifyString.stringifyString({ comment, type, value: str }, ctx, onComment, onChompKeep);\n }\n};\n\nexports.binary = binary;\n","'use strict';\n\nvar identity = require('../../nodes/identity.js');\nvar Pair = require('../../nodes/Pair.js');\nvar Scalar = require('../../nodes/Scalar.js');\nvar YAMLSeq = require('../../nodes/YAMLSeq.js');\n\nfunction resolvePairs(seq, onError) {\n if (identity.isSeq(seq)) {\n for (let i = 0; i < seq.items.length; ++i) {\n let item = seq.items[i];\n if (identity.isPair(item))\n continue;\n else if (identity.isMap(item)) {\n if (item.items.length > 1)\n onError('Each pair must have its own sequence indicator');\n const pair = item.items[0] || new Pair.Pair(new Scalar.Scalar(null));\n if (item.commentBefore)\n pair.key.commentBefore = pair.key.commentBefore\n ? `${item.commentBefore}\\n${pair.key.commentBefore}`\n : item.commentBefore;\n if (item.comment) {\n const cn = pair.value ?? pair.key;\n cn.comment = cn.comment\n ? `${item.comment}\\n${cn.comment}`\n : item.comment;\n }\n item = pair;\n }\n seq.items[i] = identity.isPair(item) ? item : new Pair.Pair(item);\n }\n }\n else\n onError('Expected a sequence for this tag');\n return seq;\n}\nfunction createPairs(schema, iterable, ctx) {\n const { replacer } = ctx;\n const pairs = new YAMLSeq.YAMLSeq(schema);\n pairs.tag = 'tag:yaml.org,2002:pairs';\n let i = 0;\n if (iterable && Symbol.iterator in Object(iterable))\n for (let it of iterable) {\n if (typeof replacer === 'function')\n it = replacer.call(iterable, String(i++), it);\n let key, value;\n if (Array.isArray(it)) {\n if (it.length === 2) {\n key = it[0];\n value = it[1];\n }\n else\n throw new TypeError(`Expected [key, value] tuple: ${it}`);\n }\n else if (it && it instanceof Object) {\n const keys = Object.keys(it);\n if (keys.length === 1) {\n key = keys[0];\n value = it[key];\n }\n else {\n throw new TypeError(`Expected tuple with one key, not ${keys.length} keys`);\n }\n }\n else {\n key = it;\n }\n pairs.items.push(Pair.createPair(key, value, ctx));\n }\n return pairs;\n}\nconst pairs = {\n collection: 'seq',\n default: false,\n tag: 'tag:yaml.org,2002:pairs',\n resolve: resolvePairs,\n createNode: createPairs\n};\n\nexports.createPairs = createPairs;\nexports.pairs = pairs;\nexports.resolvePairs = resolvePairs;\n","'use strict';\n\nvar identity = require('../../nodes/identity.js');\nvar toJS = require('../../nodes/toJS.js');\nvar YAMLMap = require('../../nodes/YAMLMap.js');\nvar YAMLSeq = require('../../nodes/YAMLSeq.js');\nvar pairs = require('./pairs.js');\n\nclass YAMLOMap extends YAMLSeq.YAMLSeq {\n constructor() {\n super();\n this.add = YAMLMap.YAMLMap.prototype.add.bind(this);\n this.delete = YAMLMap.YAMLMap.prototype.delete.bind(this);\n this.get = YAMLMap.YAMLMap.prototype.get.bind(this);\n this.has = YAMLMap.YAMLMap.prototype.has.bind(this);\n this.set = YAMLMap.YAMLMap.prototype.set.bind(this);\n this.tag = YAMLOMap.tag;\n }\n /**\n * If `ctx` is given, the return type is actually `Map`,\n * but TypeScript won't allow widening the signature of a child method.\n */\n toJSON(_, ctx) {\n if (!ctx)\n return super.toJSON(_);\n const map = new Map();\n if (ctx?.onCreate)\n ctx.onCreate(map);\n for (const pair of this.items) {\n let key, value;\n if (identity.isPair(pair)) {\n key = toJS.toJS(pair.key, '', ctx);\n value = toJS.toJS(pair.value, key, ctx);\n }\n else {\n key = toJS.toJS(pair, '', ctx);\n }\n if (map.has(key))\n throw new Error('Ordered maps must not include duplicate keys');\n map.set(key, value);\n }\n return map;\n }\n static from(schema, iterable, ctx) {\n const pairs$1 = pairs.createPairs(schema, iterable, ctx);\n const omap = new this();\n omap.items = pairs$1.items;\n return omap;\n }\n}\nYAMLOMap.tag = 'tag:yaml.org,2002:omap';\nconst omap = {\n collection: 'seq',\n identify: value => value instanceof Map,\n nodeClass: YAMLOMap,\n default: false,\n tag: 'tag:yaml.org,2002:omap',\n resolve(seq, onError) {\n const pairs$1 = pairs.resolvePairs(seq, onError);\n const seenKeys = [];\n for (const { key } of pairs$1.items) {\n if (identity.isScalar(key)) {\n if (seenKeys.includes(key.value)) {\n onError(`Ordered maps must not include duplicate keys: ${key.value}`);\n }\n else {\n seenKeys.push(key.value);\n }\n }\n }\n return Object.assign(new YAMLOMap(), pairs$1);\n },\n createNode: (schema, iterable, ctx) => YAMLOMap.from(schema, iterable, ctx)\n};\n\nexports.YAMLOMap = YAMLOMap;\nexports.omap = omap;\n","'use strict';\n\nvar Scalar = require('../../nodes/Scalar.js');\n\nfunction boolStringify({ value, source }, ctx) {\n const boolObj = value ? trueTag : falseTag;\n if (source && boolObj.test.test(source))\n return source;\n return value ? ctx.options.trueStr : ctx.options.falseStr;\n}\nconst trueTag = {\n identify: value => value === true,\n default: true,\n tag: 'tag:yaml.org,2002:bool',\n test: /^(?:Y|y|[Yy]es|YES|[Tt]rue|TRUE|[Oo]n|ON)$/,\n resolve: () => new Scalar.Scalar(true),\n stringify: boolStringify\n};\nconst falseTag = {\n identify: value => value === false,\n default: true,\n tag: 'tag:yaml.org,2002:bool',\n test: /^(?:N|n|[Nn]o|NO|[Ff]alse|FALSE|[Oo]ff|OFF)$/,\n resolve: () => new Scalar.Scalar(false),\n stringify: boolStringify\n};\n\nexports.falseTag = falseTag;\nexports.trueTag = trueTag;\n","'use strict';\n\nvar Scalar = require('../../nodes/Scalar.js');\nvar stringifyNumber = require('../../stringify/stringifyNumber.js');\n\nconst floatNaN = {\n identify: value => typeof value === 'number',\n default: true,\n tag: 'tag:yaml.org,2002:float',\n test: /^(?:[-+]?\\.(?:inf|Inf|INF)|\\.nan|\\.NaN|\\.NAN)$/,\n resolve: (str) => str.slice(-3).toLowerCase() === 'nan'\n ? NaN\n : str[0] === '-'\n ? Number.NEGATIVE_INFINITY\n : Number.POSITIVE_INFINITY,\n stringify: stringifyNumber.stringifyNumber\n};\nconst floatExp = {\n identify: value => typeof value === 'number',\n default: true,\n tag: 'tag:yaml.org,2002:float',\n format: 'EXP',\n test: /^[-+]?(?:[0-9][0-9_]*)?(?:\\.[0-9_]*)?[eE][-+]?[0-9]+$/,\n resolve: (str) => parseFloat(str.replace(/_/g, '')),\n stringify(node) {\n const num = Number(node.value);\n return isFinite(num) ? num.toExponential() : stringifyNumber.stringifyNumber(node);\n }\n};\nconst float = {\n identify: value => typeof value === 'number',\n default: true,\n tag: 'tag:yaml.org,2002:float',\n test: /^[-+]?(?:[0-9][0-9_]*)?\\.[0-9_]*$/,\n resolve(str) {\n const node = new Scalar.Scalar(parseFloat(str.replace(/_/g, '')));\n const dot = str.indexOf('.');\n if (dot !== -1) {\n const f = str.substring(dot + 1).replace(/_/g, '');\n if (f[f.length - 1] === '0')\n node.minFractionDigits = f.length;\n }\n return node;\n },\n stringify: stringifyNumber.stringifyNumber\n};\n\nexports.float = float;\nexports.floatExp = floatExp;\nexports.floatNaN = floatNaN;\n","'use strict';\n\nvar stringifyNumber = require('../../stringify/stringifyNumber.js');\n\nconst intIdentify = (value) => typeof value === 'bigint' || Number.isInteger(value);\nfunction intResolve(str, offset, radix, { intAsBigInt }) {\n const sign = str[0];\n if (sign === '-' || sign === '+')\n offset += 1;\n str = str.substring(offset).replace(/_/g, '');\n if (intAsBigInt) {\n switch (radix) {\n case 2:\n str = `0b${str}`;\n break;\n case 8:\n str = `0o${str}`;\n break;\n case 16:\n str = `0x${str}`;\n break;\n }\n const n = BigInt(str);\n return sign === '-' ? BigInt(-1) * n : n;\n }\n const n = parseInt(str, radix);\n return sign === '-' ? -1 * n : n;\n}\nfunction intStringify(node, radix, prefix) {\n const { value } = node;\n if (intIdentify(value)) {\n const str = value.toString(radix);\n return value < 0 ? '-' + prefix + str.substr(1) : prefix + str;\n }\n return stringifyNumber.stringifyNumber(node);\n}\nconst intBin = {\n identify: intIdentify,\n default: true,\n tag: 'tag:yaml.org,2002:int',\n format: 'BIN',\n test: /^[-+]?0b[0-1_]+$/,\n resolve: (str, _onError, opt) => intResolve(str, 2, 2, opt),\n stringify: node => intStringify(node, 2, '0b')\n};\nconst intOct = {\n identify: intIdentify,\n default: true,\n tag: 'tag:yaml.org,2002:int',\n format: 'OCT',\n test: /^[-+]?0[0-7_]+$/,\n resolve: (str, _onError, opt) => intResolve(str, 1, 8, opt),\n stringify: node => intStringify(node, 8, '0')\n};\nconst int = {\n identify: intIdentify,\n default: true,\n tag: 'tag:yaml.org,2002:int',\n test: /^[-+]?[0-9][0-9_]*$/,\n resolve: (str, _onError, opt) => intResolve(str, 0, 10, opt),\n stringify: stringifyNumber.stringifyNumber\n};\nconst intHex = {\n identify: intIdentify,\n default: true,\n tag: 'tag:yaml.org,2002:int',\n format: 'HEX',\n test: /^[-+]?0x[0-9a-fA-F_]+$/,\n resolve: (str, _onError, opt) => intResolve(str, 2, 16, opt),\n stringify: node => intStringify(node, 16, '0x')\n};\n\nexports.int = int;\nexports.intBin = intBin;\nexports.intHex = intHex;\nexports.intOct = intOct;\n","'use strict';\n\nvar identity = require('../../nodes/identity.js');\nvar Pair = require('../../nodes/Pair.js');\nvar YAMLMap = require('../../nodes/YAMLMap.js');\n\nclass YAMLSet extends YAMLMap.YAMLMap {\n constructor(schema) {\n super(schema);\n this.tag = YAMLSet.tag;\n }\n add(key) {\n let pair;\n if (identity.isPair(key))\n pair = key;\n else if (key &&\n typeof key === 'object' &&\n 'key' in key &&\n 'value' in key &&\n key.value === null)\n pair = new Pair.Pair(key.key, null);\n else\n pair = new Pair.Pair(key, null);\n const prev = YAMLMap.findPair(this.items, pair.key);\n if (!prev)\n this.items.push(pair);\n }\n /**\n * If `keepPair` is `true`, returns the Pair matching `key`.\n * Otherwise, returns the value of that Pair's key.\n */\n get(key, keepPair) {\n const pair = YAMLMap.findPair(this.items, key);\n return !keepPair && identity.isPair(pair)\n ? identity.isScalar(pair.key)\n ? pair.key.value\n : pair.key\n : pair;\n }\n set(key, value) {\n if (typeof value !== 'boolean')\n throw new Error(`Expected boolean value for set(key, value) in a YAML set, not ${typeof value}`);\n const prev = YAMLMap.findPair(this.items, key);\n if (prev && !value) {\n this.items.splice(this.items.indexOf(prev), 1);\n }\n else if (!prev && value) {\n this.items.push(new Pair.Pair(key));\n }\n }\n toJSON(_, ctx) {\n return super.toJSON(_, ctx, Set);\n }\n toString(ctx, onComment, onChompKeep) {\n if (!ctx)\n return JSON.stringify(this);\n if (this.hasAllNullValues(true))\n return super.toString(Object.assign({}, ctx, { allNullValues: true }), onComment, onChompKeep);\n else\n throw new Error('Set items must all have null values');\n }\n static from(schema, iterable, ctx) {\n const { replacer } = ctx;\n const set = new this(schema);\n if (iterable && Symbol.iterator in Object(iterable))\n for (let value of iterable) {\n if (typeof replacer === 'function')\n value = replacer.call(iterable, value, value);\n set.items.push(Pair.createPair(value, null, ctx));\n }\n return set;\n }\n}\nYAMLSet.tag = 'tag:yaml.org,2002:set';\nconst set = {\n collection: 'map',\n identify: value => value instanceof Set,\n nodeClass: YAMLSet,\n default: false,\n tag: 'tag:yaml.org,2002:set',\n createNode: (schema, iterable, ctx) => YAMLSet.from(schema, iterable, ctx),\n resolve(map, onError) {\n if (identity.isMap(map)) {\n if (map.hasAllNullValues(true))\n return Object.assign(new YAMLSet(), map);\n else\n onError('Set items must all have null values');\n }\n else\n onError('Expected a mapping for this tag');\n return map;\n }\n};\n\nexports.YAMLSet = YAMLSet;\nexports.set = set;\n","'use strict';\n\nvar stringifyNumber = require('../../stringify/stringifyNumber.js');\n\n/** Internal types handle bigint as number, because TS can't figure it out. */\nfunction parseSexagesimal(str, asBigInt) {\n const sign = str[0];\n const parts = sign === '-' || sign === '+' ? str.substring(1) : str;\n const num = (n) => asBigInt ? BigInt(n) : Number(n);\n const res = parts\n .replace(/_/g, '')\n .split(':')\n .reduce((res, p) => res * num(60) + num(p), num(0));\n return (sign === '-' ? num(-1) * res : res);\n}\n/**\n * hhhh:mm:ss.sss\n *\n * Internal types handle bigint as number, because TS can't figure it out.\n */\nfunction stringifySexagesimal(node) {\n let { value } = node;\n let num = (n) => n;\n if (typeof value === 'bigint')\n num = n => BigInt(n);\n else if (isNaN(value) || !isFinite(value))\n return stringifyNumber.stringifyNumber(node);\n let sign = '';\n if (value < 0) {\n sign = '-';\n value *= num(-1);\n }\n const _60 = num(60);\n const parts = [value % _60]; // seconds, including ms\n if (value < 60) {\n parts.unshift(0); // at least one : is required\n }\n else {\n value = (value - parts[0]) / _60;\n parts.unshift(value % _60); // minutes\n if (value >= 60) {\n value = (value - parts[0]) / _60;\n parts.unshift(value); // hours\n }\n }\n return (sign +\n parts\n .map(n => String(n).padStart(2, '0'))\n .join(':')\n .replace(/000000\\d*$/, '') // % 60 may introduce error\n );\n}\nconst intTime = {\n identify: value => typeof value === 'bigint' || Number.isInteger(value),\n default: true,\n tag: 'tag:yaml.org,2002:int',\n format: 'TIME',\n test: /^[-+]?[0-9][0-9_]*(?::[0-5]?[0-9])+$/,\n resolve: (str, _onError, { intAsBigInt }) => parseSexagesimal(str, intAsBigInt),\n stringify: stringifySexagesimal\n};\nconst floatTime = {\n identify: value => typeof value === 'number',\n default: true,\n tag: 'tag:yaml.org,2002:float',\n format: 'TIME',\n test: /^[-+]?[0-9][0-9_]*(?::[0-5]?[0-9])+\\.[0-9_]*$/,\n resolve: str => parseSexagesimal(str, false),\n stringify: stringifySexagesimal\n};\nconst timestamp = {\n identify: value => value instanceof Date,\n default: true,\n tag: 'tag:yaml.org,2002:timestamp',\n // If the time zone is omitted, the timestamp is assumed to be specified in UTC. The time part\n // may be omitted altogether, resulting in a date format. In such a case, the time part is\n // assumed to be 00:00:00Z (start of day, UTC).\n test: RegExp('^([0-9]{4})-([0-9]{1,2})-([0-9]{1,2})' + // YYYY-Mm-Dd\n '(?:' + // time is optional\n '(?:t|T|[ \\\\t]+)' + // t | T | whitespace\n '([0-9]{1,2}):([0-9]{1,2}):([0-9]{1,2}(\\\\.[0-9]+)?)' + // Hh:Mm:Ss(.ss)?\n '(?:[ \\\\t]*(Z|[-+][012]?[0-9](?::[0-9]{2})?))?' + // Z | +5 | -03:30\n ')?$'),\n resolve(str) {\n const match = str.match(timestamp.test);\n if (!match)\n throw new Error('!!timestamp expects a date, starting with yyyy-mm-dd');\n const [, year, month, day, hour, minute, second] = match.map(Number);\n const millisec = match[7] ? Number((match[7] + '00').substr(1, 3)) : 0;\n let date = Date.UTC(year, month - 1, day, hour || 0, minute || 0, second || 0, millisec);\n const tz = match[8];\n if (tz && tz !== 'Z') {\n let d = parseSexagesimal(tz, false);\n if (Math.abs(d) < 30)\n d *= 60;\n date -= 60000 * d;\n }\n return new Date(date);\n },\n stringify: ({ value }) => value?.toISOString().replace(/(T00:00:00)?\\.000Z$/, '') ?? ''\n};\n\nexports.floatTime = floatTime;\nexports.intTime = intTime;\nexports.timestamp = timestamp;\n","'use strict';\n\nvar map = require('../common/map.js');\nvar _null = require('../common/null.js');\nvar seq = require('../common/seq.js');\nvar string = require('../common/string.js');\nvar binary = require('./binary.js');\nvar bool = require('./bool.js');\nvar float = require('./float.js');\nvar int = require('./int.js');\nvar merge = require('./merge.js');\nvar omap = require('./omap.js');\nvar pairs = require('./pairs.js');\nvar set = require('./set.js');\nvar timestamp = require('./timestamp.js');\n\nconst schema = [\n map.map,\n seq.seq,\n string.string,\n _null.nullTag,\n bool.trueTag,\n bool.falseTag,\n int.intBin,\n int.intOct,\n int.int,\n int.intHex,\n float.floatNaN,\n float.floatExp,\n float.float,\n binary.binary,\n merge.merge,\n omap.omap,\n pairs.pairs,\n set.set,\n timestamp.intTime,\n timestamp.floatTime,\n timestamp.timestamp\n];\n\nexports.schema = schema;\n","'use strict';\n\nvar map = require('./common/map.js');\nvar _null = require('./common/null.js');\nvar seq = require('./common/seq.js');\nvar string = require('./common/string.js');\nvar bool = require('./core/bool.js');\nvar float = require('./core/float.js');\nvar int = require('./core/int.js');\nvar schema = require('./core/schema.js');\nvar schema$1 = require('./json/schema.js');\nvar binary = require('./yaml-1.1/binary.js');\nvar merge = require('./yaml-1.1/merge.js');\nvar omap = require('./yaml-1.1/omap.js');\nvar pairs = require('./yaml-1.1/pairs.js');\nvar schema$2 = require('./yaml-1.1/schema.js');\nvar set = require('./yaml-1.1/set.js');\nvar timestamp = require('./yaml-1.1/timestamp.js');\n\nconst schemas = new Map([\n ['core', schema.schema],\n ['failsafe', [map.map, seq.seq, string.string]],\n ['json', schema$1.schema],\n ['yaml11', schema$2.schema],\n ['yaml-1.1', schema$2.schema]\n]);\nconst tagsByName = {\n binary: binary.binary,\n bool: bool.boolTag,\n float: float.float,\n floatExp: float.floatExp,\n floatNaN: float.floatNaN,\n floatTime: timestamp.floatTime,\n int: int.int,\n intHex: int.intHex,\n intOct: int.intOct,\n intTime: timestamp.intTime,\n map: map.map,\n merge: merge.merge,\n null: _null.nullTag,\n omap: omap.omap,\n pairs: pairs.pairs,\n seq: seq.seq,\n set: set.set,\n timestamp: timestamp.timestamp\n};\nconst coreKnownTags = {\n 'tag:yaml.org,2002:binary': binary.binary,\n 'tag:yaml.org,2002:merge': merge.merge,\n 'tag:yaml.org,2002:omap': omap.omap,\n 'tag:yaml.org,2002:pairs': pairs.pairs,\n 'tag:yaml.org,2002:set': set.set,\n 'tag:yaml.org,2002:timestamp': timestamp.timestamp\n};\nfunction getTags(customTags, schemaName, addMergeTag) {\n const schemaTags = schemas.get(schemaName);\n if (schemaTags && !customTags) {\n return addMergeTag && !schemaTags.includes(merge.merge)\n ? schemaTags.concat(merge.merge)\n : schemaTags.slice();\n }\n let tags = schemaTags;\n if (!tags) {\n if (Array.isArray(customTags))\n tags = [];\n else {\n const keys = Array.from(schemas.keys())\n .filter(key => key !== 'yaml11')\n .map(key => JSON.stringify(key))\n .join(', ');\n throw new Error(`Unknown schema \"${schemaName}\"; use one of ${keys} or define customTags array`);\n }\n }\n if (Array.isArray(customTags)) {\n for (const tag of customTags)\n tags = tags.concat(tag);\n }\n else if (typeof customTags === 'function') {\n tags = customTags(tags.slice());\n }\n if (addMergeTag)\n tags = tags.concat(merge.merge);\n return tags.reduce((tags, tag) => {\n const tagObj = typeof tag === 'string' ? tagsByName[tag] : tag;\n if (!tagObj) {\n const tagName = JSON.stringify(tag);\n const keys = Object.keys(tagsByName)\n .map(key => JSON.stringify(key))\n .join(', ');\n throw new Error(`Unknown custom tag ${tagName}; use one of ${keys}`);\n }\n if (!tags.includes(tagObj))\n tags.push(tagObj);\n return tags;\n }, []);\n}\n\nexports.coreKnownTags = coreKnownTags;\nexports.getTags = getTags;\n","'use strict';\n\nvar identity = require('../nodes/identity.js');\nvar map = require('./common/map.js');\nvar seq = require('./common/seq.js');\nvar string = require('./common/string.js');\nvar tags = require('./tags.js');\n\nconst sortMapEntriesByKey = (a, b) => a.key < b.key ? -1 : a.key > b.key ? 1 : 0;\nclass Schema {\n constructor({ compat, customTags, merge, resolveKnownTags, schema, sortMapEntries, toStringDefaults }) {\n this.compat = Array.isArray(compat)\n ? tags.getTags(compat, 'compat')\n : compat\n ? tags.getTags(null, compat)\n : null;\n this.name = (typeof schema === 'string' && schema) || 'core';\n this.knownTags = resolveKnownTags ? tags.coreKnownTags : {};\n this.tags = tags.getTags(customTags, this.name, merge);\n this.toStringOptions = toStringDefaults ?? null;\n Object.defineProperty(this, identity.MAP, { value: map.map });\n Object.defineProperty(this, identity.SCALAR, { value: string.string });\n Object.defineProperty(this, identity.SEQ, { value: seq.seq });\n // Used by createMap()\n this.sortMapEntries =\n typeof sortMapEntries === 'function'\n ? sortMapEntries\n : sortMapEntries === true\n ? sortMapEntriesByKey\n : null;\n }\n clone() {\n const copy = Object.create(Schema.prototype, Object.getOwnPropertyDescriptors(this));\n copy.tags = this.tags.slice();\n return copy;\n }\n}\n\nexports.Schema = Schema;\n","'use strict';\n\nvar identity = require('../nodes/identity.js');\nvar stringify = require('./stringify.js');\nvar stringifyComment = require('./stringifyComment.js');\n\nfunction stringifyDocument(doc, options) {\n const lines = [];\n let hasDirectives = options.directives === true;\n if (options.directives !== false && doc.directives) {\n const dir = doc.directives.toString(doc);\n if (dir) {\n lines.push(dir);\n hasDirectives = true;\n }\n else if (doc.directives.docStart)\n hasDirectives = true;\n }\n if (hasDirectives)\n lines.push('---');\n const ctx = stringify.createStringifyContext(doc, options);\n const { commentString } = ctx.options;\n if (doc.commentBefore) {\n if (lines.length !== 1)\n lines.unshift('');\n const cs = commentString(doc.commentBefore);\n lines.unshift(stringifyComment.indentComment(cs, ''));\n }\n let chompKeep = false;\n let contentComment = null;\n if (doc.contents) {\n if (identity.isNode(doc.contents)) {\n if (doc.contents.spaceBefore && hasDirectives)\n lines.push('');\n if (doc.contents.commentBefore) {\n const cs = commentString(doc.contents.commentBefore);\n lines.push(stringifyComment.indentComment(cs, ''));\n }\n // top-level block scalars need to be indented if followed by a comment\n ctx.forceBlockIndent = !!doc.comment;\n contentComment = doc.contents.comment;\n }\n const onChompKeep = contentComment ? undefined : () => (chompKeep = true);\n let body = stringify.stringify(doc.contents, ctx, () => (contentComment = null), onChompKeep);\n if (contentComment)\n body += stringifyComment.lineComment(body, '', commentString(contentComment));\n if ((body[0] === '|' || body[0] === '>') &&\n lines[lines.length - 1] === '---') {\n // Top-level block scalars with a preceding doc marker ought to use the\n // same line for their header.\n lines[lines.length - 1] = `--- ${body}`;\n }\n else\n lines.push(body);\n }\n else {\n lines.push(stringify.stringify(doc.contents, ctx));\n }\n if (doc.directives?.docEnd) {\n if (doc.comment) {\n const cs = commentString(doc.comment);\n if (cs.includes('\\n')) {\n lines.push('...');\n lines.push(stringifyComment.indentComment(cs, ''));\n }\n else {\n lines.push(`... ${cs}`);\n }\n }\n else {\n lines.push('...');\n }\n }\n else {\n let dc = doc.comment;\n if (dc && chompKeep)\n dc = dc.replace(/^\\n+/, '');\n if (dc) {\n if ((!chompKeep || contentComment) && lines[lines.length - 1] !== '')\n lines.push('');\n lines.push(stringifyComment.indentComment(commentString(dc), ''));\n }\n }\n return lines.join('\\n') + '\\n';\n}\n\nexports.stringifyDocument = stringifyDocument;\n","'use strict';\n\nvar Alias = require('../nodes/Alias.js');\nvar Collection = require('../nodes/Collection.js');\nvar identity = require('../nodes/identity.js');\nvar Pair = require('../nodes/Pair.js');\nvar toJS = require('../nodes/toJS.js');\nvar Schema = require('../schema/Schema.js');\nvar stringifyDocument = require('../stringify/stringifyDocument.js');\nvar anchors = require('./anchors.js');\nvar applyReviver = require('./applyReviver.js');\nvar createNode = require('./createNode.js');\nvar directives = require('./directives.js');\n\nclass Document {\n constructor(value, replacer, options) {\n /** A comment before this Document */\n this.commentBefore = null;\n /** A comment immediately after this Document */\n this.comment = null;\n /** Errors encountered during parsing. */\n this.errors = [];\n /** Warnings encountered during parsing. */\n this.warnings = [];\n Object.defineProperty(this, identity.NODE_TYPE, { value: identity.DOC });\n let _replacer = null;\n if (typeof replacer === 'function' || Array.isArray(replacer)) {\n _replacer = replacer;\n }\n else if (options === undefined && replacer) {\n options = replacer;\n replacer = undefined;\n }\n const opt = Object.assign({\n intAsBigInt: false,\n keepSourceTokens: false,\n logLevel: 'warn',\n prettyErrors: true,\n strict: true,\n stringKeys: false,\n uniqueKeys: true,\n version: '1.2'\n }, options);\n this.options = opt;\n let { version } = opt;\n if (options?._directives) {\n this.directives = options._directives.atDocument();\n if (this.directives.yaml.explicit)\n version = this.directives.yaml.version;\n }\n else\n this.directives = new directives.Directives({ version });\n this.setSchema(version, options);\n // @ts-expect-error We can't really know that this matches Contents.\n this.contents =\n value === undefined ? null : this.createNode(value, _replacer, options);\n }\n /**\n * Create a deep copy of this Document and its contents.\n *\n * Custom Node values that inherit from `Object` still refer to their original instances.\n */\n clone() {\n const copy = Object.create(Document.prototype, {\n [identity.NODE_TYPE]: { value: identity.DOC }\n });\n copy.commentBefore = this.commentBefore;\n copy.comment = this.comment;\n copy.errors = this.errors.slice();\n copy.warnings = this.warnings.slice();\n copy.options = Object.assign({}, this.options);\n if (this.directives)\n copy.directives = this.directives.clone();\n copy.schema = this.schema.clone();\n // @ts-expect-error We can't really know that this matches Contents.\n copy.contents = identity.isNode(this.contents)\n ? this.contents.clone(copy.schema)\n : this.contents;\n if (this.range)\n copy.range = this.range.slice();\n return copy;\n }\n /** Adds a value to the document. */\n add(value) {\n if (assertCollection(this.contents))\n this.contents.add(value);\n }\n /** Adds a value to the document. */\n addIn(path, value) {\n if (assertCollection(this.contents))\n this.contents.addIn(path, value);\n }\n /**\n * Create a new `Alias` node, ensuring that the target `node` has the required anchor.\n *\n * If `node` already has an anchor, `name` is ignored.\n * Otherwise, the `node.anchor` value will be set to `name`,\n * or if an anchor with that name is already present in the document,\n * `name` will be used as a prefix for a new unique anchor.\n * If `name` is undefined, the generated anchor will use 'a' as a prefix.\n */\n createAlias(node, name) {\n if (!node.anchor) {\n const prev = anchors.anchorNames(this);\n node.anchor =\n // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing\n !name || prev.has(name) ? anchors.findNewAnchor(name || 'a', prev) : name;\n }\n return new Alias.Alias(node.anchor);\n }\n createNode(value, replacer, options) {\n let _replacer = undefined;\n if (typeof replacer === 'function') {\n value = replacer.call({ '': value }, '', value);\n _replacer = replacer;\n }\n else if (Array.isArray(replacer)) {\n const keyToStr = (v) => typeof v === 'number' || v instanceof String || v instanceof Number;\n const asStr = replacer.filter(keyToStr).map(String);\n if (asStr.length > 0)\n replacer = replacer.concat(asStr);\n _replacer = replacer;\n }\n else if (options === undefined && replacer) {\n options = replacer;\n replacer = undefined;\n }\n const { aliasDuplicateObjects, anchorPrefix, flow, keepUndefined, onTagObj, tag } = options ?? {};\n const { onAnchor, setAnchors, sourceObjects } = anchors.createNodeAnchors(this, \n // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing\n anchorPrefix || 'a');\n const ctx = {\n aliasDuplicateObjects: aliasDuplicateObjects ?? true,\n keepUndefined: keepUndefined ?? false,\n onAnchor,\n onTagObj,\n replacer: _replacer,\n schema: this.schema,\n sourceObjects\n };\n const node = createNode.createNode(value, tag, ctx);\n if (flow && identity.isCollection(node))\n node.flow = true;\n setAnchors();\n return node;\n }\n /**\n * Convert a key and a value into a `Pair` using the current schema,\n * recursively wrapping all values as `Scalar` or `Collection` nodes.\n */\n createPair(key, value, options = {}) {\n const k = this.createNode(key, null, options);\n const v = this.createNode(value, null, options);\n return new Pair.Pair(k, v);\n }\n /**\n * Removes a value from the document.\n * @returns `true` if the item was found and removed.\n */\n delete(key) {\n return assertCollection(this.contents) ? this.contents.delete(key) : false;\n }\n /**\n * Removes a value from the document.\n * @returns `true` if the item was found and removed.\n */\n deleteIn(path) {\n if (Collection.isEmptyPath(path)) {\n if (this.contents == null)\n return false;\n // @ts-expect-error Presumed impossible if Strict extends false\n this.contents = null;\n return true;\n }\n return assertCollection(this.contents)\n ? this.contents.deleteIn(path)\n : false;\n }\n /**\n * Returns item at `key`, or `undefined` if not found. By default unwraps\n * scalar values from their surrounding node; to disable set `keepScalar` to\n * `true` (collections are always returned intact).\n */\n get(key, keepScalar) {\n return identity.isCollection(this.contents)\n ? this.contents.get(key, keepScalar)\n : undefined;\n }\n /**\n * Returns item at `path`, or `undefined` if not found. By default unwraps\n * scalar values from their surrounding node; to disable set `keepScalar` to\n * `true` (collections are always returned intact).\n */\n getIn(path, keepScalar) {\n if (Collection.isEmptyPath(path))\n return !keepScalar && identity.isScalar(this.contents)\n ? this.contents.value\n : this.contents;\n return identity.isCollection(this.contents)\n ? this.contents.getIn(path, keepScalar)\n : undefined;\n }\n /**\n * Checks if the document includes a value with the key `key`.\n */\n has(key) {\n return identity.isCollection(this.contents) ? this.contents.has(key) : false;\n }\n /**\n * Checks if the document includes a value at `path`.\n */\n hasIn(path) {\n if (Collection.isEmptyPath(path))\n return this.contents !== undefined;\n return identity.isCollection(this.contents) ? this.contents.hasIn(path) : false;\n }\n /**\n * Sets a value in this document. For `!!set`, `value` needs to be a\n * boolean to add/remove the item from the set.\n */\n set(key, value) {\n if (this.contents == null) {\n // @ts-expect-error We can't really know that this matches Contents.\n this.contents = Collection.collectionFromPath(this.schema, [key], value);\n }\n else if (assertCollection(this.contents)) {\n this.contents.set(key, value);\n }\n }\n /**\n * Sets a value in this document. For `!!set`, `value` needs to be a\n * boolean to add/remove the item from the set.\n */\n setIn(path, value) {\n if (Collection.isEmptyPath(path)) {\n // @ts-expect-error We can't really know that this matches Contents.\n this.contents = value;\n }\n else if (this.contents == null) {\n // @ts-expect-error We can't really know that this matches Contents.\n this.contents = Collection.collectionFromPath(this.schema, Array.from(path), value);\n }\n else if (assertCollection(this.contents)) {\n this.contents.setIn(path, value);\n }\n }\n /**\n * Change the YAML version and schema used by the document.\n * A `null` version disables support for directives, explicit tags, anchors, and aliases.\n * It also requires the `schema` option to be given as a `Schema` instance value.\n *\n * Overrides all previously set schema options.\n */\n setSchema(version, options = {}) {\n if (typeof version === 'number')\n version = String(version);\n let opt;\n switch (version) {\n case '1.1':\n if (this.directives)\n this.directives.yaml.version = '1.1';\n else\n this.directives = new directives.Directives({ version: '1.1' });\n opt = { resolveKnownTags: false, schema: 'yaml-1.1' };\n break;\n case '1.2':\n case 'next':\n if (this.directives)\n this.directives.yaml.version = version;\n else\n this.directives = new directives.Directives({ version });\n opt = { resolveKnownTags: true, schema: 'core' };\n break;\n case null:\n if (this.directives)\n delete this.directives;\n opt = null;\n break;\n default: {\n const sv = JSON.stringify(version);\n throw new Error(`Expected '1.1', '1.2' or null as first argument, but found: ${sv}`);\n }\n }\n // Not using `instanceof Schema` to allow for duck typing\n if (options.schema instanceof Object)\n this.schema = options.schema;\n else if (opt)\n this.schema = new Schema.Schema(Object.assign(opt, options));\n else\n throw new Error(`With a null YAML version, the { schema: Schema } option is required`);\n }\n // json & jsonArg are only used from toJSON()\n toJS({ json, jsonArg, mapAsMap, maxAliasCount, onAnchor, reviver } = {}) {\n const ctx = {\n anchors: new Map(),\n doc: this,\n keep: !json,\n mapAsMap: mapAsMap === true,\n mapKeyWarned: false,\n maxAliasCount: typeof maxAliasCount === 'number' ? maxAliasCount : 100\n };\n const res = toJS.toJS(this.contents, jsonArg ?? '', ctx);\n if (typeof onAnchor === 'function')\n for (const { count, res } of ctx.anchors.values())\n onAnchor(res, count);\n return typeof reviver === 'function'\n ? applyReviver.applyReviver(reviver, { '': res }, '', res)\n : res;\n }\n /**\n * A JSON representation of the document `contents`.\n *\n * @param jsonArg Used by `JSON.stringify` to indicate the array index or\n * property name.\n */\n toJSON(jsonArg, onAnchor) {\n return this.toJS({ json: true, jsonArg, mapAsMap: false, onAnchor });\n }\n /** A YAML representation of the document. */\n toString(options = {}) {\n if (this.errors.length > 0)\n throw new Error('Document with errors cannot be stringified');\n if ('indent' in options &&\n (!Number.isInteger(options.indent) || Number(options.indent) <= 0)) {\n const s = JSON.stringify(options.indent);\n throw new Error(`\"indent\" option must be a positive integer, not ${s}`);\n }\n return stringifyDocument.stringifyDocument(this, options);\n }\n}\nfunction assertCollection(contents) {\n if (identity.isCollection(contents))\n return true;\n throw new Error('Expected a YAML collection as document contents');\n}\n\nexports.Document = Document;\n","'use strict';\n\nclass YAMLError extends Error {\n constructor(name, pos, code, message) {\n super();\n this.name = name;\n this.code = code;\n this.message = message;\n this.pos = pos;\n }\n}\nclass YAMLParseError extends YAMLError {\n constructor(pos, code, message) {\n super('YAMLParseError', pos, code, message);\n }\n}\nclass YAMLWarning extends YAMLError {\n constructor(pos, code, message) {\n super('YAMLWarning', pos, code, message);\n }\n}\nconst prettifyError = (src, lc) => (error) => {\n if (error.pos[0] === -1)\n return;\n error.linePos = error.pos.map(pos => lc.linePos(pos));\n const { line, col } = error.linePos[0];\n error.message += ` at line ${line}, column ${col}`;\n let ci = col - 1;\n let lineStr = src\n .substring(lc.lineStarts[line - 1], lc.lineStarts[line])\n .replace(/[\\n\\r]+$/, '');\n // Trim to max 80 chars, keeping col position near the middle\n if (ci >= 60 && lineStr.length > 80) {\n const trimStart = Math.min(ci - 39, lineStr.length - 79);\n lineStr = '…' + lineStr.substring(trimStart);\n ci -= trimStart - 1;\n }\n if (lineStr.length > 80)\n lineStr = lineStr.substring(0, 79) + '…';\n // Include previous line in context if pointing at line start\n if (line > 1 && /^ *$/.test(lineStr.substring(0, ci))) {\n // Regexp won't match if start is trimmed\n let prev = src.substring(lc.lineStarts[line - 2], lc.lineStarts[line - 1]);\n if (prev.length > 80)\n prev = prev.substring(0, 79) + '…\\n';\n lineStr = prev + lineStr;\n }\n if (/[^ ]/.test(lineStr)) {\n let count = 1;\n const end = error.linePos[1];\n if (end && end.line === line && end.col > col) {\n count = Math.max(1, Math.min(end.col - col, 80 - ci));\n }\n const pointer = ' '.repeat(ci) + '^'.repeat(count);\n error.message += `:\\n\\n${lineStr}\\n${pointer}\\n`;\n }\n};\n\nexports.YAMLError = YAMLError;\nexports.YAMLParseError = YAMLParseError;\nexports.YAMLWarning = YAMLWarning;\nexports.prettifyError = prettifyError;\n","'use strict';\n\nfunction resolveProps(tokens, { flow, indicator, next, offset, onError, parentIndent, startOnNewline }) {\n let spaceBefore = false;\n let atNewline = startOnNewline;\n let hasSpace = startOnNewline;\n let comment = '';\n let commentSep = '';\n let hasNewline = false;\n let reqSpace = false;\n let tab = null;\n let anchor = null;\n let tag = null;\n let newlineAfterProp = null;\n let comma = null;\n let found = null;\n let start = null;\n for (const token of tokens) {\n if (reqSpace) {\n if (token.type !== 'space' &&\n token.type !== 'newline' &&\n token.type !== 'comma')\n onError(token.offset, 'MISSING_CHAR', 'Tags and anchors must be separated from the next token by white space');\n reqSpace = false;\n }\n if (tab) {\n if (atNewline && token.type !== 'comment' && token.type !== 'newline') {\n onError(tab, 'TAB_AS_INDENT', 'Tabs are not allowed as indentation');\n }\n tab = null;\n }\n switch (token.type) {\n case 'space':\n // At the doc level, tabs at line start may be parsed\n // as leading white space rather than indentation.\n // In a flow collection, only the parser handles indent.\n if (!flow &&\n (indicator !== 'doc-start' || next?.type !== 'flow-collection') &&\n token.source.includes('\\t')) {\n tab = token;\n }\n hasSpace = true;\n break;\n case 'comment': {\n if (!hasSpace)\n onError(token, 'MISSING_CHAR', 'Comments must be separated from other tokens by white space characters');\n const cb = token.source.substring(1) || ' ';\n if (!comment)\n comment = cb;\n else\n comment += commentSep + cb;\n commentSep = '';\n atNewline = false;\n break;\n }\n case 'newline':\n if (atNewline) {\n if (comment)\n comment += token.source;\n else if (!found || indicator !== 'seq-item-ind')\n spaceBefore = true;\n }\n else\n commentSep += token.source;\n atNewline = true;\n hasNewline = true;\n if (anchor || tag)\n newlineAfterProp = token;\n hasSpace = true;\n break;\n case 'anchor':\n if (anchor)\n onError(token, 'MULTIPLE_ANCHORS', 'A node can have at most one anchor');\n if (token.source.endsWith(':'))\n onError(token.offset + token.source.length - 1, 'BAD_ALIAS', 'Anchor ending in : is ambiguous', true);\n anchor = token;\n start ?? (start = token.offset);\n atNewline = false;\n hasSpace = false;\n reqSpace = true;\n break;\n case 'tag': {\n if (tag)\n onError(token, 'MULTIPLE_TAGS', 'A node can have at most one tag');\n tag = token;\n start ?? (start = token.offset);\n atNewline = false;\n hasSpace = false;\n reqSpace = true;\n break;\n }\n case indicator:\n // Could here handle preceding comments differently\n if (anchor || tag)\n onError(token, 'BAD_PROP_ORDER', `Anchors and tags must be after the ${token.source} indicator`);\n if (found)\n onError(token, 'UNEXPECTED_TOKEN', `Unexpected ${token.source} in ${flow ?? 'collection'}`);\n found = token;\n atNewline =\n indicator === 'seq-item-ind' || indicator === 'explicit-key-ind';\n hasSpace = false;\n break;\n case 'comma':\n if (flow) {\n if (comma)\n onError(token, 'UNEXPECTED_TOKEN', `Unexpected , in ${flow}`);\n comma = token;\n atNewline = false;\n hasSpace = false;\n break;\n }\n // else fallthrough\n default:\n onError(token, 'UNEXPECTED_TOKEN', `Unexpected ${token.type} token`);\n atNewline = false;\n hasSpace = false;\n }\n }\n const last = tokens[tokens.length - 1];\n const end = last ? last.offset + last.source.length : offset;\n if (reqSpace &&\n next &&\n next.type !== 'space' &&\n next.type !== 'newline' &&\n next.type !== 'comma' &&\n (next.type !== 'scalar' || next.source !== '')) {\n onError(next.offset, 'MISSING_CHAR', 'Tags and anchors must be separated from the next token by white space');\n }\n if (tab &&\n ((atNewline && tab.indent <= parentIndent) ||\n next?.type === 'block-map' ||\n next?.type === 'block-seq'))\n onError(tab, 'TAB_AS_INDENT', 'Tabs are not allowed as indentation');\n return {\n comma,\n found,\n spaceBefore,\n comment,\n hasNewline,\n anchor,\n tag,\n newlineAfterProp,\n end,\n start: start ?? end\n };\n}\n\nexports.resolveProps = resolveProps;\n","'use strict';\n\nfunction containsNewline(key) {\n if (!key)\n return null;\n switch (key.type) {\n case 'alias':\n case 'scalar':\n case 'double-quoted-scalar':\n case 'single-quoted-scalar':\n if (key.source.includes('\\n'))\n return true;\n if (key.end)\n for (const st of key.end)\n if (st.type === 'newline')\n return true;\n return false;\n case 'flow-collection':\n for (const it of key.items) {\n for (const st of it.start)\n if (st.type === 'newline')\n return true;\n if (it.sep)\n for (const st of it.sep)\n if (st.type === 'newline')\n return true;\n if (containsNewline(it.key) || containsNewline(it.value))\n return true;\n }\n return false;\n default:\n return true;\n }\n}\n\nexports.containsNewline = containsNewline;\n","'use strict';\n\nvar utilContainsNewline = require('./util-contains-newline.js');\n\nfunction flowIndentCheck(indent, fc, onError) {\n if (fc?.type === 'flow-collection') {\n const end = fc.end[0];\n if (end.indent === indent &&\n (end.source === ']' || end.source === '}') &&\n utilContainsNewline.containsNewline(fc)) {\n const msg = 'Flow end indicator should be more indented than parent';\n onError(end, 'BAD_INDENT', msg, true);\n }\n }\n}\n\nexports.flowIndentCheck = flowIndentCheck;\n","'use strict';\n\nvar identity = require('../nodes/identity.js');\n\nfunction mapIncludes(ctx, items, search) {\n const { uniqueKeys } = ctx.options;\n if (uniqueKeys === false)\n return false;\n const isEqual = typeof uniqueKeys === 'function'\n ? uniqueKeys\n : (a, b) => a === b || (identity.isScalar(a) && identity.isScalar(b) && a.value === b.value);\n return items.some(pair => isEqual(pair.key, search));\n}\n\nexports.mapIncludes = mapIncludes;\n","'use strict';\n\nvar Pair = require('../nodes/Pair.js');\nvar YAMLMap = require('../nodes/YAMLMap.js');\nvar resolveProps = require('./resolve-props.js');\nvar utilContainsNewline = require('./util-contains-newline.js');\nvar utilFlowIndentCheck = require('./util-flow-indent-check.js');\nvar utilMapIncludes = require('./util-map-includes.js');\n\nconst startColMsg = 'All mapping items must start at the same column';\nfunction resolveBlockMap({ composeNode, composeEmptyNode }, ctx, bm, onError, tag) {\n const NodeClass = tag?.nodeClass ?? YAMLMap.YAMLMap;\n const map = new NodeClass(ctx.schema);\n if (ctx.atRoot)\n ctx.atRoot = false;\n let offset = bm.offset;\n let commentEnd = null;\n for (const collItem of bm.items) {\n const { start, key, sep, value } = collItem;\n // key properties\n const keyProps = resolveProps.resolveProps(start, {\n indicator: 'explicit-key-ind',\n next: key ?? sep?.[0],\n offset,\n onError,\n parentIndent: bm.indent,\n startOnNewline: true\n });\n const implicitKey = !keyProps.found;\n if (implicitKey) {\n if (key) {\n if (key.type === 'block-seq')\n onError(offset, 'BLOCK_AS_IMPLICIT_KEY', 'A block sequence may not be used as an implicit map key');\n else if ('indent' in key && key.indent !== bm.indent)\n onError(offset, 'BAD_INDENT', startColMsg);\n }\n if (!keyProps.anchor && !keyProps.tag && !sep) {\n commentEnd = keyProps.end;\n if (keyProps.comment) {\n if (map.comment)\n map.comment += '\\n' + keyProps.comment;\n else\n map.comment = keyProps.comment;\n }\n continue;\n }\n if (keyProps.newlineAfterProp || utilContainsNewline.containsNewline(key)) {\n onError(key ?? start[start.length - 1], 'MULTILINE_IMPLICIT_KEY', 'Implicit keys need to be on a single line');\n }\n }\n else if (keyProps.found?.indent !== bm.indent) {\n onError(offset, 'BAD_INDENT', startColMsg);\n }\n // key value\n ctx.atKey = true;\n const keyStart = keyProps.end;\n const keyNode = key\n ? composeNode(ctx, key, keyProps, onError)\n : composeEmptyNode(ctx, keyStart, start, null, keyProps, onError);\n if (ctx.schema.compat)\n utilFlowIndentCheck.flowIndentCheck(bm.indent, key, onError);\n ctx.atKey = false;\n if (utilMapIncludes.mapIncludes(ctx, map.items, keyNode))\n onError(keyStart, 'DUPLICATE_KEY', 'Map keys must be unique');\n // value properties\n const valueProps = resolveProps.resolveProps(sep ?? [], {\n indicator: 'map-value-ind',\n next: value,\n offset: keyNode.range[2],\n onError,\n parentIndent: bm.indent,\n startOnNewline: !key || key.type === 'block-scalar'\n });\n offset = valueProps.end;\n if (valueProps.found) {\n if (implicitKey) {\n if (value?.type === 'block-map' && !valueProps.hasNewline)\n onError(offset, 'BLOCK_AS_IMPLICIT_KEY', 'Nested mappings are not allowed in compact mappings');\n if (ctx.options.strict &&\n keyProps.start < valueProps.found.offset - 1024)\n onError(keyNode.range, 'KEY_OVER_1024_CHARS', 'The : indicator must be at most 1024 chars after the start of an implicit block mapping key');\n }\n // value value\n const valueNode = value\n ? composeNode(ctx, value, valueProps, onError)\n : composeEmptyNode(ctx, offset, sep, null, valueProps, onError);\n if (ctx.schema.compat)\n utilFlowIndentCheck.flowIndentCheck(bm.indent, value, onError);\n offset = valueNode.range[2];\n const pair = new Pair.Pair(keyNode, valueNode);\n if (ctx.options.keepSourceTokens)\n pair.srcToken = collItem;\n map.items.push(pair);\n }\n else {\n // key with no value\n if (implicitKey)\n onError(keyNode.range, 'MISSING_CHAR', 'Implicit map keys need to be followed by map values');\n if (valueProps.comment) {\n if (keyNode.comment)\n keyNode.comment += '\\n' + valueProps.comment;\n else\n keyNode.comment = valueProps.comment;\n }\n const pair = new Pair.Pair(keyNode);\n if (ctx.options.keepSourceTokens)\n pair.srcToken = collItem;\n map.items.push(pair);\n }\n }\n if (commentEnd && commentEnd < offset)\n onError(commentEnd, 'IMPOSSIBLE', 'Map comment with trailing content');\n map.range = [bm.offset, offset, commentEnd ?? offset];\n return map;\n}\n\nexports.resolveBlockMap = resolveBlockMap;\n","'use strict';\n\nvar YAMLSeq = require('../nodes/YAMLSeq.js');\nvar resolveProps = require('./resolve-props.js');\nvar utilFlowIndentCheck = require('./util-flow-indent-check.js');\n\nfunction resolveBlockSeq({ composeNode, composeEmptyNode }, ctx, bs, onError, tag) {\n const NodeClass = tag?.nodeClass ?? YAMLSeq.YAMLSeq;\n const seq = new NodeClass(ctx.schema);\n if (ctx.atRoot)\n ctx.atRoot = false;\n if (ctx.atKey)\n ctx.atKey = false;\n let offset = bs.offset;\n let commentEnd = null;\n for (const { start, value } of bs.items) {\n const props = resolveProps.resolveProps(start, {\n indicator: 'seq-item-ind',\n next: value,\n offset,\n onError,\n parentIndent: bs.indent,\n startOnNewline: true\n });\n if (!props.found) {\n if (props.anchor || props.tag || value) {\n if (value && value.type === 'block-seq')\n onError(props.end, 'BAD_INDENT', 'All sequence items must start at the same column');\n else\n onError(offset, 'MISSING_CHAR', 'Sequence item without - indicator');\n }\n else {\n commentEnd = props.end;\n if (props.comment)\n seq.comment = props.comment;\n continue;\n }\n }\n const node = value\n ? composeNode(ctx, value, props, onError)\n : composeEmptyNode(ctx, props.end, start, null, props, onError);\n if (ctx.schema.compat)\n utilFlowIndentCheck.flowIndentCheck(bs.indent, value, onError);\n offset = node.range[2];\n seq.items.push(node);\n }\n seq.range = [bs.offset, offset, commentEnd ?? offset];\n return seq;\n}\n\nexports.resolveBlockSeq = resolveBlockSeq;\n","'use strict';\n\nfunction resolveEnd(end, offset, reqSpace, onError) {\n let comment = '';\n if (end) {\n let hasSpace = false;\n let sep = '';\n for (const token of end) {\n const { source, type } = token;\n switch (type) {\n case 'space':\n hasSpace = true;\n break;\n case 'comment': {\n if (reqSpace && !hasSpace)\n onError(token, 'MISSING_CHAR', 'Comments must be separated from other tokens by white space characters');\n const cb = source.substring(1) || ' ';\n if (!comment)\n comment = cb;\n else\n comment += sep + cb;\n sep = '';\n break;\n }\n case 'newline':\n if (comment)\n sep += source;\n hasSpace = true;\n break;\n default:\n onError(token, 'UNEXPECTED_TOKEN', `Unexpected ${type} at node end`);\n }\n offset += source.length;\n }\n }\n return { comment, offset };\n}\n\nexports.resolveEnd = resolveEnd;\n","'use strict';\n\nvar identity = require('../nodes/identity.js');\nvar Pair = require('../nodes/Pair.js');\nvar YAMLMap = require('../nodes/YAMLMap.js');\nvar YAMLSeq = require('../nodes/YAMLSeq.js');\nvar resolveEnd = require('./resolve-end.js');\nvar resolveProps = require('./resolve-props.js');\nvar utilContainsNewline = require('./util-contains-newline.js');\nvar utilMapIncludes = require('./util-map-includes.js');\n\nconst blockMsg = 'Block collections are not allowed within flow collections';\nconst isBlock = (token) => token && (token.type === 'block-map' || token.type === 'block-seq');\nfunction resolveFlowCollection({ composeNode, composeEmptyNode }, ctx, fc, onError, tag) {\n const isMap = fc.start.source === '{';\n const fcName = isMap ? 'flow map' : 'flow sequence';\n const NodeClass = (tag?.nodeClass ?? (isMap ? YAMLMap.YAMLMap : YAMLSeq.YAMLSeq));\n const coll = new NodeClass(ctx.schema);\n coll.flow = true;\n const atRoot = ctx.atRoot;\n if (atRoot)\n ctx.atRoot = false;\n if (ctx.atKey)\n ctx.atKey = false;\n let offset = fc.offset + fc.start.source.length;\n for (let i = 0; i < fc.items.length; ++i) {\n const collItem = fc.items[i];\n const { start, key, sep, value } = collItem;\n const props = resolveProps.resolveProps(start, {\n flow: fcName,\n indicator: 'explicit-key-ind',\n next: key ?? sep?.[0],\n offset,\n onError,\n parentIndent: fc.indent,\n startOnNewline: false\n });\n if (!props.found) {\n if (!props.anchor && !props.tag && !sep && !value) {\n if (i === 0 && props.comma)\n onError(props.comma, 'UNEXPECTED_TOKEN', `Unexpected , in ${fcName}`);\n else if (i < fc.items.length - 1)\n onError(props.start, 'UNEXPECTED_TOKEN', `Unexpected empty item in ${fcName}`);\n if (props.comment) {\n if (coll.comment)\n coll.comment += '\\n' + props.comment;\n else\n coll.comment = props.comment;\n }\n offset = props.end;\n continue;\n }\n if (!isMap && ctx.options.strict && utilContainsNewline.containsNewline(key))\n onError(key, // checked by containsNewline()\n 'MULTILINE_IMPLICIT_KEY', 'Implicit keys of flow sequence pairs need to be on a single line');\n }\n if (i === 0) {\n if (props.comma)\n onError(props.comma, 'UNEXPECTED_TOKEN', `Unexpected , in ${fcName}`);\n }\n else {\n if (!props.comma)\n onError(props.start, 'MISSING_CHAR', `Missing , between ${fcName} items`);\n if (props.comment) {\n let prevItemComment = '';\n loop: for (const st of start) {\n switch (st.type) {\n case 'comma':\n case 'space':\n break;\n case 'comment':\n prevItemComment = st.source.substring(1);\n break loop;\n default:\n break loop;\n }\n }\n if (prevItemComment) {\n let prev = coll.items[coll.items.length - 1];\n if (identity.isPair(prev))\n prev = prev.value ?? prev.key;\n if (prev.comment)\n prev.comment += '\\n' + prevItemComment;\n else\n prev.comment = prevItemComment;\n props.comment = props.comment.substring(prevItemComment.length + 1);\n }\n }\n }\n if (!isMap && !sep && !props.found) {\n // item is a value in a seq\n // → key & sep are empty, start does not include ? or :\n const valueNode = value\n ? composeNode(ctx, value, props, onError)\n : composeEmptyNode(ctx, props.end, sep, null, props, onError);\n coll.items.push(valueNode);\n offset = valueNode.range[2];\n if (isBlock(value))\n onError(valueNode.range, 'BLOCK_IN_FLOW', blockMsg);\n }\n else {\n // item is a key+value pair\n // key value\n ctx.atKey = true;\n const keyStart = props.end;\n const keyNode = key\n ? composeNode(ctx, key, props, onError)\n : composeEmptyNode(ctx, keyStart, start, null, props, onError);\n if (isBlock(key))\n onError(keyNode.range, 'BLOCK_IN_FLOW', blockMsg);\n ctx.atKey = false;\n // value properties\n const valueProps = resolveProps.resolveProps(sep ?? [], {\n flow: fcName,\n indicator: 'map-value-ind',\n next: value,\n offset: keyNode.range[2],\n onError,\n parentIndent: fc.indent,\n startOnNewline: false\n });\n if (valueProps.found) {\n if (!isMap && !props.found && ctx.options.strict) {\n if (sep)\n for (const st of sep) {\n if (st === valueProps.found)\n break;\n if (st.type === 'newline') {\n onError(st, 'MULTILINE_IMPLICIT_KEY', 'Implicit keys of flow sequence pairs need to be on a single line');\n break;\n }\n }\n if (props.start < valueProps.found.offset - 1024)\n onError(valueProps.found, 'KEY_OVER_1024_CHARS', 'The : indicator must be at most 1024 chars after the start of an implicit flow sequence key');\n }\n }\n else if (value) {\n if ('source' in value && value.source && value.source[0] === ':')\n onError(value, 'MISSING_CHAR', `Missing space after : in ${fcName}`);\n else\n onError(valueProps.start, 'MISSING_CHAR', `Missing , or : between ${fcName} items`);\n }\n // value value\n const valueNode = value\n ? composeNode(ctx, value, valueProps, onError)\n : valueProps.found\n ? composeEmptyNode(ctx, valueProps.end, sep, null, valueProps, onError)\n : null;\n if (valueNode) {\n if (isBlock(value))\n onError(valueNode.range, 'BLOCK_IN_FLOW', blockMsg);\n }\n else if (valueProps.comment) {\n if (keyNode.comment)\n keyNode.comment += '\\n' + valueProps.comment;\n else\n keyNode.comment = valueProps.comment;\n }\n const pair = new Pair.Pair(keyNode, valueNode);\n if (ctx.options.keepSourceTokens)\n pair.srcToken = collItem;\n if (isMap) {\n const map = coll;\n if (utilMapIncludes.mapIncludes(ctx, map.items, keyNode))\n onError(keyStart, 'DUPLICATE_KEY', 'Map keys must be unique');\n map.items.push(pair);\n }\n else {\n const map = new YAMLMap.YAMLMap(ctx.schema);\n map.flow = true;\n map.items.push(pair);\n const endRange = (valueNode ?? keyNode).range;\n map.range = [keyNode.range[0], endRange[1], endRange[2]];\n coll.items.push(map);\n }\n offset = valueNode ? valueNode.range[2] : valueProps.end;\n }\n }\n const expectedEnd = isMap ? '}' : ']';\n const [ce, ...ee] = fc.end;\n let cePos = offset;\n if (ce && ce.source === expectedEnd)\n cePos = ce.offset + ce.source.length;\n else {\n const name = fcName[0].toUpperCase() + fcName.substring(1);\n const msg = atRoot\n ? `${name} must end with a ${expectedEnd}`\n : `${name} in block collection must be sufficiently indented and end with a ${expectedEnd}`;\n onError(offset, atRoot ? 'MISSING_CHAR' : 'BAD_INDENT', msg);\n if (ce && ce.source.length !== 1)\n ee.unshift(ce);\n }\n if (ee.length > 0) {\n const end = resolveEnd.resolveEnd(ee, cePos, ctx.options.strict, onError);\n if (end.comment) {\n if (coll.comment)\n coll.comment += '\\n' + end.comment;\n else\n coll.comment = end.comment;\n }\n coll.range = [fc.offset, cePos, end.offset];\n }\n else {\n coll.range = [fc.offset, cePos, cePos];\n }\n return coll;\n}\n\nexports.resolveFlowCollection = resolveFlowCollection;\n","'use strict';\n\nvar identity = require('../nodes/identity.js');\nvar Scalar = require('../nodes/Scalar.js');\nvar YAMLMap = require('../nodes/YAMLMap.js');\nvar YAMLSeq = require('../nodes/YAMLSeq.js');\nvar resolveBlockMap = require('./resolve-block-map.js');\nvar resolveBlockSeq = require('./resolve-block-seq.js');\nvar resolveFlowCollection = require('./resolve-flow-collection.js');\n\nfunction resolveCollection(CN, ctx, token, onError, tagName, tag) {\n const coll = token.type === 'block-map'\n ? resolveBlockMap.resolveBlockMap(CN, ctx, token, onError, tag)\n : token.type === 'block-seq'\n ? resolveBlockSeq.resolveBlockSeq(CN, ctx, token, onError, tag)\n : resolveFlowCollection.resolveFlowCollection(CN, ctx, token, onError, tag);\n const Coll = coll.constructor;\n // If we got a tagName matching the class, or the tag name is '!',\n // then use the tagName from the node class used to create it.\n if (tagName === '!' || tagName === Coll.tagName) {\n coll.tag = Coll.tagName;\n return coll;\n }\n if (tagName)\n coll.tag = tagName;\n return coll;\n}\nfunction composeCollection(CN, ctx, token, props, onError) {\n const tagToken = props.tag;\n const tagName = !tagToken\n ? null\n : ctx.directives.tagName(tagToken.source, msg => onError(tagToken, 'TAG_RESOLVE_FAILED', msg));\n if (token.type === 'block-seq') {\n const { anchor, newlineAfterProp: nl } = props;\n const lastProp = anchor && tagToken\n ? anchor.offset > tagToken.offset\n ? anchor\n : tagToken\n : (anchor ?? tagToken);\n if (lastProp && (!nl || nl.offset < lastProp.offset)) {\n const message = 'Missing newline after block sequence props';\n onError(lastProp, 'MISSING_CHAR', message);\n }\n }\n const expType = token.type === 'block-map'\n ? 'map'\n : token.type === 'block-seq'\n ? 'seq'\n : token.start.source === '{'\n ? 'map'\n : 'seq';\n // shortcut: check if it's a generic YAMLMap or YAMLSeq\n // before jumping into the custom tag logic.\n if (!tagToken ||\n !tagName ||\n tagName === '!' ||\n (tagName === YAMLMap.YAMLMap.tagName && expType === 'map') ||\n (tagName === YAMLSeq.YAMLSeq.tagName && expType === 'seq')) {\n return resolveCollection(CN, ctx, token, onError, tagName);\n }\n let tag = ctx.schema.tags.find(t => t.tag === tagName && t.collection === expType);\n if (!tag) {\n const kt = ctx.schema.knownTags[tagName];\n if (kt && kt.collection === expType) {\n ctx.schema.tags.push(Object.assign({}, kt, { default: false }));\n tag = kt;\n }\n else {\n if (kt) {\n onError(tagToken, 'BAD_COLLECTION_TYPE', `${kt.tag} used for ${expType} collection, but expects ${kt.collection ?? 'scalar'}`, true);\n }\n else {\n onError(tagToken, 'TAG_RESOLVE_FAILED', `Unresolved tag: ${tagName}`, true);\n }\n return resolveCollection(CN, ctx, token, onError, tagName);\n }\n }\n const coll = resolveCollection(CN, ctx, token, onError, tagName, tag);\n const res = tag.resolve?.(coll, msg => onError(tagToken, 'TAG_RESOLVE_FAILED', msg), ctx.options) ?? coll;\n const node = identity.isNode(res)\n ? res\n : new Scalar.Scalar(res);\n node.range = coll.range;\n node.tag = tagName;\n if (tag?.format)\n node.format = tag.format;\n return node;\n}\n\nexports.composeCollection = composeCollection;\n","'use strict';\n\nvar Scalar = require('../nodes/Scalar.js');\n\nfunction resolveBlockScalar(ctx, scalar, onError) {\n const start = scalar.offset;\n const header = parseBlockScalarHeader(scalar, ctx.options.strict, onError);\n if (!header)\n return { value: '', type: null, comment: '', range: [start, start, start] };\n const type = header.mode === '>' ? Scalar.Scalar.BLOCK_FOLDED : Scalar.Scalar.BLOCK_LITERAL;\n const lines = scalar.source ? splitLines(scalar.source) : [];\n // determine the end of content & start of chomping\n let chompStart = lines.length;\n for (let i = lines.length - 1; i >= 0; --i) {\n const content = lines[i][1];\n if (content === '' || content === '\\r')\n chompStart = i;\n else\n break;\n }\n // shortcut for empty contents\n if (chompStart === 0) {\n const value = header.chomp === '+' && lines.length > 0\n ? '\\n'.repeat(Math.max(1, lines.length - 1))\n : '';\n let end = start + header.length;\n if (scalar.source)\n end += scalar.source.length;\n return { value, type, comment: header.comment, range: [start, end, end] };\n }\n // find the indentation level to trim from start\n let trimIndent = scalar.indent + header.indent;\n let offset = scalar.offset + header.length;\n let contentStart = 0;\n for (let i = 0; i < chompStart; ++i) {\n const [indent, content] = lines[i];\n if (content === '' || content === '\\r') {\n if (header.indent === 0 && indent.length > trimIndent)\n trimIndent = indent.length;\n }\n else {\n if (indent.length < trimIndent) {\n const message = 'Block scalars with more-indented leading empty lines must use an explicit indentation indicator';\n onError(offset + indent.length, 'MISSING_CHAR', message);\n }\n if (header.indent === 0)\n trimIndent = indent.length;\n contentStart = i;\n if (trimIndent === 0 && !ctx.atRoot) {\n const message = 'Block scalar values in collections must be indented';\n onError(offset, 'BAD_INDENT', message);\n }\n break;\n }\n offset += indent.length + content.length + 1;\n }\n // include trailing more-indented empty lines in content\n for (let i = lines.length - 1; i >= chompStart; --i) {\n if (lines[i][0].length > trimIndent)\n chompStart = i + 1;\n }\n let value = '';\n let sep = '';\n let prevMoreIndented = false;\n // leading whitespace is kept intact\n for (let i = 0; i < contentStart; ++i)\n value += lines[i][0].slice(trimIndent) + '\\n';\n for (let i = contentStart; i < chompStart; ++i) {\n let [indent, content] = lines[i];\n offset += indent.length + content.length + 1;\n const crlf = content[content.length - 1] === '\\r';\n if (crlf)\n content = content.slice(0, -1);\n /* istanbul ignore if already caught in lexer */\n if (content && indent.length < trimIndent) {\n const src = header.indent\n ? 'explicit indentation indicator'\n : 'first line';\n const message = `Block scalar lines must not be less indented than their ${src}`;\n onError(offset - content.length - (crlf ? 2 : 1), 'BAD_INDENT', message);\n indent = '';\n }\n if (type === Scalar.Scalar.BLOCK_LITERAL) {\n value += sep + indent.slice(trimIndent) + content;\n sep = '\\n';\n }\n else if (indent.length > trimIndent || content[0] === '\\t') {\n // more-indented content within a folded block\n if (sep === ' ')\n sep = '\\n';\n else if (!prevMoreIndented && sep === '\\n')\n sep = '\\n\\n';\n value += sep + indent.slice(trimIndent) + content;\n sep = '\\n';\n prevMoreIndented = true;\n }\n else if (content === '') {\n // empty line\n if (sep === '\\n')\n value += '\\n';\n else\n sep = '\\n';\n }\n else {\n value += sep + content;\n sep = ' ';\n prevMoreIndented = false;\n }\n }\n switch (header.chomp) {\n case '-':\n break;\n case '+':\n for (let i = chompStart; i < lines.length; ++i)\n value += '\\n' + lines[i][0].slice(trimIndent);\n if (value[value.length - 1] !== '\\n')\n value += '\\n';\n break;\n default:\n value += '\\n';\n }\n const end = start + header.length + scalar.source.length;\n return { value, type, comment: header.comment, range: [start, end, end] };\n}\nfunction parseBlockScalarHeader({ offset, props }, strict, onError) {\n /* istanbul ignore if should not happen */\n if (props[0].type !== 'block-scalar-header') {\n onError(props[0], 'IMPOSSIBLE', 'Block scalar header not found');\n return null;\n }\n const { source } = props[0];\n const mode = source[0];\n let indent = 0;\n let chomp = '';\n let error = -1;\n for (let i = 1; i < source.length; ++i) {\n const ch = source[i];\n if (!chomp && (ch === '-' || ch === '+'))\n chomp = ch;\n else {\n const n = Number(ch);\n if (!indent && n)\n indent = n;\n else if (error === -1)\n error = offset + i;\n }\n }\n if (error !== -1)\n onError(error, 'UNEXPECTED_TOKEN', `Block scalar header includes extra characters: ${source}`);\n let hasSpace = false;\n let comment = '';\n let length = source.length;\n for (let i = 1; i < props.length; ++i) {\n const token = props[i];\n switch (token.type) {\n case 'space':\n hasSpace = true;\n // fallthrough\n case 'newline':\n length += token.source.length;\n break;\n case 'comment':\n if (strict && !hasSpace) {\n const message = 'Comments must be separated from other tokens by white space characters';\n onError(token, 'MISSING_CHAR', message);\n }\n length += token.source.length;\n comment = token.source.substring(1);\n break;\n case 'error':\n onError(token, 'UNEXPECTED_TOKEN', token.message);\n length += token.source.length;\n break;\n /* istanbul ignore next should not happen */\n default: {\n const message = `Unexpected token in block scalar header: ${token.type}`;\n onError(token, 'UNEXPECTED_TOKEN', message);\n const ts = token.source;\n if (ts && typeof ts === 'string')\n length += ts.length;\n }\n }\n }\n return { mode, indent, chomp, comment, length };\n}\n/** @returns Array of lines split up as `[indent, content]` */\nfunction splitLines(source) {\n const split = source.split(/\\n( *)/);\n const first = split[0];\n const m = first.match(/^( *)/);\n const line0 = m?.[1]\n ? [m[1], first.slice(m[1].length)]\n : ['', first];\n const lines = [line0];\n for (let i = 1; i < split.length; i += 2)\n lines.push([split[i], split[i + 1]]);\n return lines;\n}\n\nexports.resolveBlockScalar = resolveBlockScalar;\n","'use strict';\n\nvar Scalar = require('../nodes/Scalar.js');\nvar resolveEnd = require('./resolve-end.js');\n\nfunction resolveFlowScalar(scalar, strict, onError) {\n const { offset, type, source, end } = scalar;\n let _type;\n let value;\n const _onError = (rel, code, msg) => onError(offset + rel, code, msg);\n switch (type) {\n case 'scalar':\n _type = Scalar.Scalar.PLAIN;\n value = plainValue(source, _onError);\n break;\n case 'single-quoted-scalar':\n _type = Scalar.Scalar.QUOTE_SINGLE;\n value = singleQuotedValue(source, _onError);\n break;\n case 'double-quoted-scalar':\n _type = Scalar.Scalar.QUOTE_DOUBLE;\n value = doubleQuotedValue(source, _onError);\n break;\n /* istanbul ignore next should not happen */\n default:\n onError(scalar, 'UNEXPECTED_TOKEN', `Expected a flow scalar value, but found: ${type}`);\n return {\n value: '',\n type: null,\n comment: '',\n range: [offset, offset + source.length, offset + source.length]\n };\n }\n const valueEnd = offset + source.length;\n const re = resolveEnd.resolveEnd(end, valueEnd, strict, onError);\n return {\n value,\n type: _type,\n comment: re.comment,\n range: [offset, valueEnd, re.offset]\n };\n}\nfunction plainValue(source, onError) {\n let badChar = '';\n switch (source[0]) {\n /* istanbul ignore next should not happen */\n case '\\t':\n badChar = 'a tab character';\n break;\n case ',':\n badChar = 'flow indicator character ,';\n break;\n case '%':\n badChar = 'directive indicator character %';\n break;\n case '|':\n case '>': {\n badChar = `block scalar indicator ${source[0]}`;\n break;\n }\n case '@':\n case '`': {\n badChar = `reserved character ${source[0]}`;\n break;\n }\n }\n if (badChar)\n onError(0, 'BAD_SCALAR_START', `Plain value cannot start with ${badChar}`);\n return foldLines(source);\n}\nfunction singleQuotedValue(source, onError) {\n if (source[source.length - 1] !== \"'\" || source.length === 1)\n onError(source.length, 'MISSING_CHAR', \"Missing closing 'quote\");\n return foldLines(source.slice(1, -1)).replace(/''/g, \"'\");\n}\nfunction foldLines(source) {\n /**\n * The negative lookbehind here and in the `re` RegExp is to\n * prevent causing a polynomial search time in certain cases.\n *\n * The try-catch is for Safari, which doesn't support this yet:\n * https://caniuse.com/js-regexp-lookbehind\n */\n let first, line;\n try {\n first = new RegExp('(.*?)(? wsStart ? source.slice(wsStart, i + 1) : ch;\n }\n else {\n res += ch;\n }\n }\n if (source[source.length - 1] !== '\"' || source.length === 1)\n onError(source.length, 'MISSING_CHAR', 'Missing closing \"quote');\n return res;\n}\n/**\n * Fold a single newline into a space, multiple newlines to N - 1 newlines.\n * Presumes `source[offset] === '\\n'`\n */\nfunction foldNewline(source, offset) {\n let fold = '';\n let ch = source[offset + 1];\n while (ch === ' ' || ch === '\\t' || ch === '\\n' || ch === '\\r') {\n if (ch === '\\r' && source[offset + 2] !== '\\n')\n break;\n if (ch === '\\n')\n fold += '\\n';\n offset += 1;\n ch = source[offset + 1];\n }\n if (!fold)\n fold = ' ';\n return { fold, offset };\n}\nconst escapeCodes = {\n '0': '\\0', // null character\n a: '\\x07', // bell character\n b: '\\b', // backspace\n e: '\\x1b', // escape character\n f: '\\f', // form feed\n n: '\\n', // line feed\n r: '\\r', // carriage return\n t: '\\t', // horizontal tab\n v: '\\v', // vertical tab\n N: '\\u0085', // Unicode next line\n _: '\\u00a0', // Unicode non-breaking space\n L: '\\u2028', // Unicode line separator\n P: '\\u2029', // Unicode paragraph separator\n ' ': ' ',\n '\"': '\"',\n '/': '/',\n '\\\\': '\\\\',\n '\\t': '\\t'\n};\nfunction parseCharCode(source, offset, length, onError) {\n const cc = source.substr(offset, length);\n const ok = cc.length === length && /^[0-9a-fA-F]+$/.test(cc);\n const code = ok ? parseInt(cc, 16) : NaN;\n if (isNaN(code)) {\n const raw = source.substr(offset - 2, length + 2);\n onError(offset - 2, 'BAD_DQ_ESCAPE', `Invalid escape sequence ${raw}`);\n return raw;\n }\n return String.fromCodePoint(code);\n}\n\nexports.resolveFlowScalar = resolveFlowScalar;\n","'use strict';\n\nvar identity = require('../nodes/identity.js');\nvar Scalar = require('../nodes/Scalar.js');\nvar resolveBlockScalar = require('./resolve-block-scalar.js');\nvar resolveFlowScalar = require('./resolve-flow-scalar.js');\n\nfunction composeScalar(ctx, token, tagToken, onError) {\n const { value, type, comment, range } = token.type === 'block-scalar'\n ? resolveBlockScalar.resolveBlockScalar(ctx, token, onError)\n : resolveFlowScalar.resolveFlowScalar(token, ctx.options.strict, onError);\n const tagName = tagToken\n ? ctx.directives.tagName(tagToken.source, msg => onError(tagToken, 'TAG_RESOLVE_FAILED', msg))\n : null;\n let tag;\n if (ctx.options.stringKeys && ctx.atKey) {\n tag = ctx.schema[identity.SCALAR];\n }\n else if (tagName)\n tag = findScalarTagByName(ctx.schema, value, tagName, tagToken, onError);\n else if (token.type === 'scalar')\n tag = findScalarTagByTest(ctx, value, token, onError);\n else\n tag = ctx.schema[identity.SCALAR];\n let scalar;\n try {\n const res = tag.resolve(value, msg => onError(tagToken ?? token, 'TAG_RESOLVE_FAILED', msg), ctx.options);\n scalar = identity.isScalar(res) ? res : new Scalar.Scalar(res);\n }\n catch (error) {\n const msg = error instanceof Error ? error.message : String(error);\n onError(tagToken ?? token, 'TAG_RESOLVE_FAILED', msg);\n scalar = new Scalar.Scalar(value);\n }\n scalar.range = range;\n scalar.source = value;\n if (type)\n scalar.type = type;\n if (tagName)\n scalar.tag = tagName;\n if (tag.format)\n scalar.format = tag.format;\n if (comment)\n scalar.comment = comment;\n return scalar;\n}\nfunction findScalarTagByName(schema, value, tagName, tagToken, onError) {\n if (tagName === '!')\n return schema[identity.SCALAR]; // non-specific tag\n const matchWithTest = [];\n for (const tag of schema.tags) {\n if (!tag.collection && tag.tag === tagName) {\n if (tag.default && tag.test)\n matchWithTest.push(tag);\n else\n return tag;\n }\n }\n for (const tag of matchWithTest)\n if (tag.test?.test(value))\n return tag;\n const kt = schema.knownTags[tagName];\n if (kt && !kt.collection) {\n // Ensure that the known tag is available for stringifying,\n // but does not get used by default.\n schema.tags.push(Object.assign({}, kt, { default: false, test: undefined }));\n return kt;\n }\n onError(tagToken, 'TAG_RESOLVE_FAILED', `Unresolved tag: ${tagName}`, tagName !== 'tag:yaml.org,2002:str');\n return schema[identity.SCALAR];\n}\nfunction findScalarTagByTest({ atKey, directives, schema }, value, token, onError) {\n const tag = schema.tags.find(tag => (tag.default === true || (atKey && tag.default === 'key')) &&\n tag.test?.test(value)) || schema[identity.SCALAR];\n if (schema.compat) {\n const compat = schema.compat.find(tag => tag.default && tag.test?.test(value)) ??\n schema[identity.SCALAR];\n if (tag.tag !== compat.tag) {\n const ts = directives.tagString(tag.tag);\n const cs = directives.tagString(compat.tag);\n const msg = `Value may be parsed as either ${ts} or ${cs}`;\n onError(token, 'TAG_RESOLVE_FAILED', msg, true);\n }\n }\n return tag;\n}\n\nexports.composeScalar = composeScalar;\n","'use strict';\n\nfunction emptyScalarPosition(offset, before, pos) {\n if (before) {\n pos ?? (pos = before.length);\n for (let i = pos - 1; i >= 0; --i) {\n let st = before[i];\n switch (st.type) {\n case 'space':\n case 'comment':\n case 'newline':\n offset -= st.source.length;\n continue;\n }\n // Technically, an empty scalar is immediately after the last non-empty\n // node, but it's more useful to place it after any whitespace.\n st = before[++i];\n while (st?.type === 'space') {\n offset += st.source.length;\n st = before[++i];\n }\n break;\n }\n }\n return offset;\n}\n\nexports.emptyScalarPosition = emptyScalarPosition;\n","'use strict';\n\nvar Alias = require('../nodes/Alias.js');\nvar identity = require('../nodes/identity.js');\nvar composeCollection = require('./compose-collection.js');\nvar composeScalar = require('./compose-scalar.js');\nvar resolveEnd = require('./resolve-end.js');\nvar utilEmptyScalarPosition = require('./util-empty-scalar-position.js');\n\nconst CN = { composeNode, composeEmptyNode };\nfunction composeNode(ctx, token, props, onError) {\n const atKey = ctx.atKey;\n const { spaceBefore, comment, anchor, tag } = props;\n let node;\n let isSrcToken = true;\n switch (token.type) {\n case 'alias':\n node = composeAlias(ctx, token, onError);\n if (anchor || tag)\n onError(token, 'ALIAS_PROPS', 'An alias node must not specify any properties');\n break;\n case 'scalar':\n case 'single-quoted-scalar':\n case 'double-quoted-scalar':\n case 'block-scalar':\n node = composeScalar.composeScalar(ctx, token, tag, onError);\n if (anchor)\n node.anchor = anchor.source.substring(1);\n break;\n case 'block-map':\n case 'block-seq':\n case 'flow-collection':\n node = composeCollection.composeCollection(CN, ctx, token, props, onError);\n if (anchor)\n node.anchor = anchor.source.substring(1);\n break;\n default: {\n const message = token.type === 'error'\n ? token.message\n : `Unsupported token (type: ${token.type})`;\n onError(token, 'UNEXPECTED_TOKEN', message);\n node = composeEmptyNode(ctx, token.offset, undefined, null, props, onError);\n isSrcToken = false;\n }\n }\n if (anchor && node.anchor === '')\n onError(anchor, 'BAD_ALIAS', 'Anchor cannot be an empty string');\n if (atKey &&\n ctx.options.stringKeys &&\n (!identity.isScalar(node) ||\n typeof node.value !== 'string' ||\n (node.tag && node.tag !== 'tag:yaml.org,2002:str'))) {\n const msg = 'With stringKeys, all keys must be strings';\n onError(tag ?? token, 'NON_STRING_KEY', msg);\n }\n if (spaceBefore)\n node.spaceBefore = true;\n if (comment) {\n if (token.type === 'scalar' && token.source === '')\n node.comment = comment;\n else\n node.commentBefore = comment;\n }\n // @ts-expect-error Type checking misses meaning of isSrcToken\n if (ctx.options.keepSourceTokens && isSrcToken)\n node.srcToken = token;\n return node;\n}\nfunction composeEmptyNode(ctx, offset, before, pos, { spaceBefore, comment, anchor, tag, end }, onError) {\n const token = {\n type: 'scalar',\n offset: utilEmptyScalarPosition.emptyScalarPosition(offset, before, pos),\n indent: -1,\n source: ''\n };\n const node = composeScalar.composeScalar(ctx, token, tag, onError);\n if (anchor) {\n node.anchor = anchor.source.substring(1);\n if (node.anchor === '')\n onError(anchor, 'BAD_ALIAS', 'Anchor cannot be an empty string');\n }\n if (spaceBefore)\n node.spaceBefore = true;\n if (comment) {\n node.comment = comment;\n node.range[2] = end;\n }\n return node;\n}\nfunction composeAlias({ options }, { offset, source, end }, onError) {\n const alias = new Alias.Alias(source.substring(1));\n if (alias.source === '')\n onError(offset, 'BAD_ALIAS', 'Alias cannot be an empty string');\n if (alias.source.endsWith(':'))\n onError(offset + source.length - 1, 'BAD_ALIAS', 'Alias ending in : is ambiguous', true);\n const valueEnd = offset + source.length;\n const re = resolveEnd.resolveEnd(end, valueEnd, options.strict, onError);\n alias.range = [offset, valueEnd, re.offset];\n if (re.comment)\n alias.comment = re.comment;\n return alias;\n}\n\nexports.composeEmptyNode = composeEmptyNode;\nexports.composeNode = composeNode;\n","'use strict';\n\nvar Document = require('../doc/Document.js');\nvar composeNode = require('./compose-node.js');\nvar resolveEnd = require('./resolve-end.js');\nvar resolveProps = require('./resolve-props.js');\n\nfunction composeDoc(options, directives, { offset, start, value, end }, onError) {\n const opts = Object.assign({ _directives: directives }, options);\n const doc = new Document.Document(undefined, opts);\n const ctx = {\n atKey: false,\n atRoot: true,\n directives: doc.directives,\n options: doc.options,\n schema: doc.schema\n };\n const props = resolveProps.resolveProps(start, {\n indicator: 'doc-start',\n next: value ?? end?.[0],\n offset,\n onError,\n parentIndent: 0,\n startOnNewline: true\n });\n if (props.found) {\n doc.directives.docStart = true;\n if (value &&\n (value.type === 'block-map' || value.type === 'block-seq') &&\n !props.hasNewline)\n onError(props.end, 'MISSING_CHAR', 'Block collection cannot start on same line with directives-end marker');\n }\n // @ts-expect-error If Contents is set, let's trust the user\n doc.contents = value\n ? composeNode.composeNode(ctx, value, props, onError)\n : composeNode.composeEmptyNode(ctx, props.end, start, null, props, onError);\n const contentEnd = doc.contents.range[2];\n const re = resolveEnd.resolveEnd(end, contentEnd, false, onError);\n if (re.comment)\n doc.comment = re.comment;\n doc.range = [offset, contentEnd, re.offset];\n return doc;\n}\n\nexports.composeDoc = composeDoc;\n","'use strict';\n\nvar node_process = require('process');\nvar directives = require('../doc/directives.js');\nvar Document = require('../doc/Document.js');\nvar errors = require('../errors.js');\nvar identity = require('../nodes/identity.js');\nvar composeDoc = require('./compose-doc.js');\nvar resolveEnd = require('./resolve-end.js');\n\nfunction getErrorPos(src) {\n if (typeof src === 'number')\n return [src, src + 1];\n if (Array.isArray(src))\n return src.length === 2 ? src : [src[0], src[1]];\n const { offset, source } = src;\n return [offset, offset + (typeof source === 'string' ? source.length : 1)];\n}\nfunction parsePrelude(prelude) {\n let comment = '';\n let atComment = false;\n let afterEmptyLine = false;\n for (let i = 0; i < prelude.length; ++i) {\n const source = prelude[i];\n switch (source[0]) {\n case '#':\n comment +=\n (comment === '' ? '' : afterEmptyLine ? '\\n\\n' : '\\n') +\n (source.substring(1) || ' ');\n atComment = true;\n afterEmptyLine = false;\n break;\n case '%':\n if (prelude[i + 1]?.[0] !== '#')\n i += 1;\n atComment = false;\n break;\n default:\n // This may be wrong after doc-end, but in that case it doesn't matter\n if (!atComment)\n afterEmptyLine = true;\n atComment = false;\n }\n }\n return { comment, afterEmptyLine };\n}\n/**\n * Compose a stream of CST nodes into a stream of YAML Documents.\n *\n * ```ts\n * import { Composer, Parser } from 'yaml'\n *\n * const src: string = ...\n * const tokens = new Parser().parse(src)\n * const docs = new Composer().compose(tokens)\n * ```\n */\nclass Composer {\n constructor(options = {}) {\n this.doc = null;\n this.atDirectives = false;\n this.prelude = [];\n this.errors = [];\n this.warnings = [];\n this.onError = (source, code, message, warning) => {\n const pos = getErrorPos(source);\n if (warning)\n this.warnings.push(new errors.YAMLWarning(pos, code, message));\n else\n this.errors.push(new errors.YAMLParseError(pos, code, message));\n };\n // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing\n this.directives = new directives.Directives({ version: options.version || '1.2' });\n this.options = options;\n }\n decorate(doc, afterDoc) {\n const { comment, afterEmptyLine } = parsePrelude(this.prelude);\n //console.log({ dc: doc.comment, prelude, comment })\n if (comment) {\n const dc = doc.contents;\n if (afterDoc) {\n doc.comment = doc.comment ? `${doc.comment}\\n${comment}` : comment;\n }\n else if (afterEmptyLine || doc.directives.docStart || !dc) {\n doc.commentBefore = comment;\n }\n else if (identity.isCollection(dc) && !dc.flow && dc.items.length > 0) {\n let it = dc.items[0];\n if (identity.isPair(it))\n it = it.key;\n const cb = it.commentBefore;\n it.commentBefore = cb ? `${comment}\\n${cb}` : comment;\n }\n else {\n const cb = dc.commentBefore;\n dc.commentBefore = cb ? `${comment}\\n${cb}` : comment;\n }\n }\n if (afterDoc) {\n Array.prototype.push.apply(doc.errors, this.errors);\n Array.prototype.push.apply(doc.warnings, this.warnings);\n }\n else {\n doc.errors = this.errors;\n doc.warnings = this.warnings;\n }\n this.prelude = [];\n this.errors = [];\n this.warnings = [];\n }\n /**\n * Current stream status information.\n *\n * Mostly useful at the end of input for an empty stream.\n */\n streamInfo() {\n return {\n comment: parsePrelude(this.prelude).comment,\n directives: this.directives,\n errors: this.errors,\n warnings: this.warnings\n };\n }\n /**\n * Compose tokens into documents.\n *\n * @param forceDoc - If the stream contains no document, still emit a final document including any comments and directives that would be applied to a subsequent document.\n * @param endOffset - Should be set if `forceDoc` is also set, to set the document range end and to indicate errors correctly.\n */\n *compose(tokens, forceDoc = false, endOffset = -1) {\n for (const token of tokens)\n yield* this.next(token);\n yield* this.end(forceDoc, endOffset);\n }\n /** Advance the composer by one CST token. */\n *next(token) {\n if (node_process.env.LOG_STREAM)\n console.dir(token, { depth: null });\n switch (token.type) {\n case 'directive':\n this.directives.add(token.source, (offset, message, warning) => {\n const pos = getErrorPos(token);\n pos[0] += offset;\n this.onError(pos, 'BAD_DIRECTIVE', message, warning);\n });\n this.prelude.push(token.source);\n this.atDirectives = true;\n break;\n case 'document': {\n const doc = composeDoc.composeDoc(this.options, this.directives, token, this.onError);\n if (this.atDirectives && !doc.directives.docStart)\n this.onError(token, 'MISSING_CHAR', 'Missing directives-end/doc-start indicator line');\n this.decorate(doc, false);\n if (this.doc)\n yield this.doc;\n this.doc = doc;\n this.atDirectives = false;\n break;\n }\n case 'byte-order-mark':\n case 'space':\n break;\n case 'comment':\n case 'newline':\n this.prelude.push(token.source);\n break;\n case 'error': {\n const msg = token.source\n ? `${token.message}: ${JSON.stringify(token.source)}`\n : token.message;\n const error = new errors.YAMLParseError(getErrorPos(token), 'UNEXPECTED_TOKEN', msg);\n if (this.atDirectives || !this.doc)\n this.errors.push(error);\n else\n this.doc.errors.push(error);\n break;\n }\n case 'doc-end': {\n if (!this.doc) {\n const msg = 'Unexpected doc-end without preceding document';\n this.errors.push(new errors.YAMLParseError(getErrorPos(token), 'UNEXPECTED_TOKEN', msg));\n break;\n }\n this.doc.directives.docEnd = true;\n const end = resolveEnd.resolveEnd(token.end, token.offset + token.source.length, this.doc.options.strict, this.onError);\n this.decorate(this.doc, true);\n if (end.comment) {\n const dc = this.doc.comment;\n this.doc.comment = dc ? `${dc}\\n${end.comment}` : end.comment;\n }\n this.doc.range[2] = end.offset;\n break;\n }\n default:\n this.errors.push(new errors.YAMLParseError(getErrorPos(token), 'UNEXPECTED_TOKEN', `Unsupported token ${token.type}`));\n }\n }\n /**\n * Call at end of input to yield any remaining document.\n *\n * @param forceDoc - If the stream contains no document, still emit a final document including any comments and directives that would be applied to a subsequent document.\n * @param endOffset - Should be set if `forceDoc` is also set, to set the document range end and to indicate errors correctly.\n */\n *end(forceDoc = false, endOffset = -1) {\n if (this.doc) {\n this.decorate(this.doc, true);\n yield this.doc;\n this.doc = null;\n }\n else if (forceDoc) {\n const opts = Object.assign({ _directives: this.directives }, this.options);\n const doc = new Document.Document(undefined, opts);\n if (this.atDirectives)\n this.onError(endOffset, 'MISSING_CHAR', 'Missing directives-end indicator line');\n doc.range = [0, endOffset, endOffset];\n this.decorate(doc, false);\n yield doc;\n }\n }\n}\n\nexports.Composer = Composer;\n","'use strict';\n\nvar resolveBlockScalar = require('../compose/resolve-block-scalar.js');\nvar resolveFlowScalar = require('../compose/resolve-flow-scalar.js');\nvar errors = require('../errors.js');\nvar stringifyString = require('../stringify/stringifyString.js');\n\nfunction resolveAsScalar(token, strict = true, onError) {\n if (token) {\n const _onError = (pos, code, message) => {\n const offset = typeof pos === 'number' ? pos : Array.isArray(pos) ? pos[0] : pos.offset;\n if (onError)\n onError(offset, code, message);\n else\n throw new errors.YAMLParseError([offset, offset + 1], code, message);\n };\n switch (token.type) {\n case 'scalar':\n case 'single-quoted-scalar':\n case 'double-quoted-scalar':\n return resolveFlowScalar.resolveFlowScalar(token, strict, _onError);\n case 'block-scalar':\n return resolveBlockScalar.resolveBlockScalar({ options: { strict } }, token, _onError);\n }\n }\n return null;\n}\n/**\n * Create a new scalar token with `value`\n *\n * Values that represent an actual string but may be parsed as a different type should use a `type` other than `'PLAIN'`,\n * as this function does not support any schema operations and won't check for such conflicts.\n *\n * @param value The string representation of the value, which will have its content properly indented.\n * @param context.end Comments and whitespace after the end of the value, or after the block scalar header. If undefined, a newline will be added.\n * @param context.implicitKey Being within an implicit key may affect the resolved type of the token's value.\n * @param context.indent The indent level of the token.\n * @param context.inFlow Is this scalar within a flow collection? This may affect the resolved type of the token's value.\n * @param context.offset The offset position of the token.\n * @param context.type The preferred type of the scalar token. If undefined, the previous type of the `token` will be used, defaulting to `'PLAIN'`.\n */\nfunction createScalarToken(value, context) {\n const { implicitKey = false, indent, inFlow = false, offset = -1, type = 'PLAIN' } = context;\n const source = stringifyString.stringifyString({ type, value }, {\n implicitKey,\n indent: indent > 0 ? ' '.repeat(indent) : '',\n inFlow,\n options: { blockQuote: true, lineWidth: -1 }\n });\n const end = context.end ?? [\n { type: 'newline', offset: -1, indent, source: '\\n' }\n ];\n switch (source[0]) {\n case '|':\n case '>': {\n const he = source.indexOf('\\n');\n const head = source.substring(0, he);\n const body = source.substring(he + 1) + '\\n';\n const props = [\n { type: 'block-scalar-header', offset, indent, source: head }\n ];\n if (!addEndtoBlockProps(props, end))\n props.push({ type: 'newline', offset: -1, indent, source: '\\n' });\n return { type: 'block-scalar', offset, indent, props, source: body };\n }\n case '\"':\n return { type: 'double-quoted-scalar', offset, indent, source, end };\n case \"'\":\n return { type: 'single-quoted-scalar', offset, indent, source, end };\n default:\n return { type: 'scalar', offset, indent, source, end };\n }\n}\n/**\n * Set the value of `token` to the given string `value`, overwriting any previous contents and type that it may have.\n *\n * Best efforts are made to retain any comments previously associated with the `token`,\n * though all contents within a collection's `items` will be overwritten.\n *\n * Values that represent an actual string but may be parsed as a different type should use a `type` other than `'PLAIN'`,\n * as this function does not support any schema operations and won't check for such conflicts.\n *\n * @param token Any token. If it does not include an `indent` value, the value will be stringified as if it were an implicit key.\n * @param value The string representation of the value, which will have its content properly indented.\n * @param context.afterKey In most cases, values after a key should have an additional level of indentation.\n * @param context.implicitKey Being within an implicit key may affect the resolved type of the token's value.\n * @param context.inFlow Being within a flow collection may affect the resolved type of the token's value.\n * @param context.type The preferred type of the scalar token. If undefined, the previous type of the `token` will be used, defaulting to `'PLAIN'`.\n */\nfunction setScalarValue(token, value, context = {}) {\n let { afterKey = false, implicitKey = false, inFlow = false, type } = context;\n let indent = 'indent' in token ? token.indent : null;\n if (afterKey && typeof indent === 'number')\n indent += 2;\n if (!type)\n switch (token.type) {\n case 'single-quoted-scalar':\n type = 'QUOTE_SINGLE';\n break;\n case 'double-quoted-scalar':\n type = 'QUOTE_DOUBLE';\n break;\n case 'block-scalar': {\n const header = token.props[0];\n if (header.type !== 'block-scalar-header')\n throw new Error('Invalid block scalar header');\n type = header.source[0] === '>' ? 'BLOCK_FOLDED' : 'BLOCK_LITERAL';\n break;\n }\n default:\n type = 'PLAIN';\n }\n const source = stringifyString.stringifyString({ type, value }, {\n implicitKey: implicitKey || indent === null,\n indent: indent !== null && indent > 0 ? ' '.repeat(indent) : '',\n inFlow,\n options: { blockQuote: true, lineWidth: -1 }\n });\n switch (source[0]) {\n case '|':\n case '>':\n setBlockScalarValue(token, source);\n break;\n case '\"':\n setFlowScalarValue(token, source, 'double-quoted-scalar');\n break;\n case \"'\":\n setFlowScalarValue(token, source, 'single-quoted-scalar');\n break;\n default:\n setFlowScalarValue(token, source, 'scalar');\n }\n}\nfunction setBlockScalarValue(token, source) {\n const he = source.indexOf('\\n');\n const head = source.substring(0, he);\n const body = source.substring(he + 1) + '\\n';\n if (token.type === 'block-scalar') {\n const header = token.props[0];\n if (header.type !== 'block-scalar-header')\n throw new Error('Invalid block scalar header');\n header.source = head;\n token.source = body;\n }\n else {\n const { offset } = token;\n const indent = 'indent' in token ? token.indent : -1;\n const props = [\n { type: 'block-scalar-header', offset, indent, source: head }\n ];\n if (!addEndtoBlockProps(props, 'end' in token ? token.end : undefined))\n props.push({ type: 'newline', offset: -1, indent, source: '\\n' });\n for (const key of Object.keys(token))\n if (key !== 'type' && key !== 'offset')\n delete token[key];\n Object.assign(token, { type: 'block-scalar', indent, props, source: body });\n }\n}\n/** @returns `true` if last token is a newline */\nfunction addEndtoBlockProps(props, end) {\n if (end)\n for (const st of end)\n switch (st.type) {\n case 'space':\n case 'comment':\n props.push(st);\n break;\n case 'newline':\n props.push(st);\n return true;\n }\n return false;\n}\nfunction setFlowScalarValue(token, source, type) {\n switch (token.type) {\n case 'scalar':\n case 'double-quoted-scalar':\n case 'single-quoted-scalar':\n token.type = type;\n token.source = source;\n break;\n case 'block-scalar': {\n const end = token.props.slice(1);\n let oa = source.length;\n if (token.props[0].type === 'block-scalar-header')\n oa -= token.props[0].source.length;\n for (const tok of end)\n tok.offset += oa;\n delete token.props;\n Object.assign(token, { type, source, end });\n break;\n }\n case 'block-map':\n case 'block-seq': {\n const offset = token.offset + source.length;\n const nl = { type: 'newline', offset, indent: token.indent, source: '\\n' };\n delete token.items;\n Object.assign(token, { type, source, end: [nl] });\n break;\n }\n default: {\n const indent = 'indent' in token ? token.indent : -1;\n const end = 'end' in token && Array.isArray(token.end)\n ? token.end.filter(st => st.type === 'space' ||\n st.type === 'comment' ||\n st.type === 'newline')\n : [];\n for (const key of Object.keys(token))\n if (key !== 'type' && key !== 'offset')\n delete token[key];\n Object.assign(token, { type, indent, source, end });\n }\n }\n}\n\nexports.createScalarToken = createScalarToken;\nexports.resolveAsScalar = resolveAsScalar;\nexports.setScalarValue = setScalarValue;\n","'use strict';\n\n/**\n * Stringify a CST document, token, or collection item\n *\n * Fair warning: This applies no validation whatsoever, and\n * simply concatenates the sources in their logical order.\n */\nconst stringify = (cst) => 'type' in cst ? stringifyToken(cst) : stringifyItem(cst);\nfunction stringifyToken(token) {\n switch (token.type) {\n case 'block-scalar': {\n let res = '';\n for (const tok of token.props)\n res += stringifyToken(tok);\n return res + token.source;\n }\n case 'block-map':\n case 'block-seq': {\n let res = '';\n for (const item of token.items)\n res += stringifyItem(item);\n return res;\n }\n case 'flow-collection': {\n let res = token.start.source;\n for (const item of token.items)\n res += stringifyItem(item);\n for (const st of token.end)\n res += st.source;\n return res;\n }\n case 'document': {\n let res = stringifyItem(token);\n if (token.end)\n for (const st of token.end)\n res += st.source;\n return res;\n }\n default: {\n let res = token.source;\n if ('end' in token && token.end)\n for (const st of token.end)\n res += st.source;\n return res;\n }\n }\n}\nfunction stringifyItem({ start, key, sep, value }) {\n let res = '';\n for (const st of start)\n res += st.source;\n if (key)\n res += stringifyToken(key);\n if (sep)\n for (const st of sep)\n res += st.source;\n if (value)\n res += stringifyToken(value);\n return res;\n}\n\nexports.stringify = stringify;\n","'use strict';\n\nconst BREAK = Symbol('break visit');\nconst SKIP = Symbol('skip children');\nconst REMOVE = Symbol('remove item');\n/**\n * Apply a visitor to a CST document or item.\n *\n * Walks through the tree (depth-first) starting from the root, calling a\n * `visitor` function with two arguments when entering each item:\n * - `item`: The current item, which included the following members:\n * - `start: SourceToken[]` – Source tokens before the key or value,\n * possibly including its anchor or tag.\n * - `key?: Token | null` – Set for pair values. May then be `null`, if\n * the key before the `:` separator is empty.\n * - `sep?: SourceToken[]` – Source tokens between the key and the value,\n * which should include the `:` map value indicator if `value` is set.\n * - `value?: Token` – The value of a sequence item, or of a map pair.\n * - `path`: The steps from the root to the current node, as an array of\n * `['key' | 'value', number]` tuples.\n *\n * The return value of the visitor may be used to control the traversal:\n * - `undefined` (default): Do nothing and continue\n * - `visit.SKIP`: Do not visit the children of this token, continue with\n * next sibling\n * - `visit.BREAK`: Terminate traversal completely\n * - `visit.REMOVE`: Remove the current item, then continue with the next one\n * - `number`: Set the index of the next step. This is useful especially if\n * the index of the current token has changed.\n * - `function`: Define the next visitor for this item. After the original\n * visitor is called on item entry, next visitors are called after handling\n * a non-empty `key` and when exiting the item.\n */\nfunction visit(cst, visitor) {\n if ('type' in cst && cst.type === 'document')\n cst = { start: cst.start, value: cst.value };\n _visit(Object.freeze([]), cst, visitor);\n}\n// Without the `as symbol` casts, TS declares these in the `visit`\n// namespace using `var`, but then complains about that because\n// `unique symbol` must be `const`.\n/** Terminate visit traversal completely */\nvisit.BREAK = BREAK;\n/** Do not visit the children of the current item */\nvisit.SKIP = SKIP;\n/** Remove the current item */\nvisit.REMOVE = REMOVE;\n/** Find the item at `path` from `cst` as the root */\nvisit.itemAtPath = (cst, path) => {\n let item = cst;\n for (const [field, index] of path) {\n const tok = item?.[field];\n if (tok && 'items' in tok) {\n item = tok.items[index];\n }\n else\n return undefined;\n }\n return item;\n};\n/**\n * Get the immediate parent collection of the item at `path` from `cst` as the root.\n *\n * Throws an error if the collection is not found, which should never happen if the item itself exists.\n */\nvisit.parentCollection = (cst, path) => {\n const parent = visit.itemAtPath(cst, path.slice(0, -1));\n const field = path[path.length - 1][0];\n const coll = parent?.[field];\n if (coll && 'items' in coll)\n return coll;\n throw new Error('Parent collection not found');\n};\nfunction _visit(path, item, visitor) {\n let ctrl = visitor(item, path);\n if (typeof ctrl === 'symbol')\n return ctrl;\n for (const field of ['key', 'value']) {\n const token = item[field];\n if (token && 'items' in token) {\n for (let i = 0; i < token.items.length; ++i) {\n const ci = _visit(Object.freeze(path.concat([[field, i]])), token.items[i], visitor);\n if (typeof ci === 'number')\n i = ci - 1;\n else if (ci === BREAK)\n return BREAK;\n else if (ci === REMOVE) {\n token.items.splice(i, 1);\n i -= 1;\n }\n }\n if (typeof ctrl === 'function' && field === 'key')\n ctrl = ctrl(item, path);\n }\n }\n return typeof ctrl === 'function' ? ctrl(item, path) : ctrl;\n}\n\nexports.visit = visit;\n","'use strict';\n\nvar cstScalar = require('./cst-scalar.js');\nvar cstStringify = require('./cst-stringify.js');\nvar cstVisit = require('./cst-visit.js');\n\n/** The byte order mark */\nconst BOM = '\\u{FEFF}';\n/** Start of doc-mode */\nconst DOCUMENT = '\\x02'; // C0: Start of Text\n/** Unexpected end of flow-mode */\nconst FLOW_END = '\\x18'; // C0: Cancel\n/** Next token is a scalar value */\nconst SCALAR = '\\x1f'; // C0: Unit Separator\n/** @returns `true` if `token` is a flow or block collection */\nconst isCollection = (token) => !!token && 'items' in token;\n/** @returns `true` if `token` is a flow or block scalar; not an alias */\nconst isScalar = (token) => !!token &&\n (token.type === 'scalar' ||\n token.type === 'single-quoted-scalar' ||\n token.type === 'double-quoted-scalar' ||\n token.type === 'block-scalar');\n/* istanbul ignore next */\n/** Get a printable representation of a lexer token */\nfunction prettyToken(token) {\n switch (token) {\n case BOM:\n return '';\n case DOCUMENT:\n return '';\n case FLOW_END:\n return '';\n case SCALAR:\n return '';\n default:\n return JSON.stringify(token);\n }\n}\n/** Identify the type of a lexer token. May return `null` for unknown tokens. */\nfunction tokenType(source) {\n switch (source) {\n case BOM:\n return 'byte-order-mark';\n case DOCUMENT:\n return 'doc-mode';\n case FLOW_END:\n return 'flow-error-end';\n case SCALAR:\n return 'scalar';\n case '---':\n return 'doc-start';\n case '...':\n return 'doc-end';\n case '':\n case '\\n':\n case '\\r\\n':\n return 'newline';\n case '-':\n return 'seq-item-ind';\n case '?':\n return 'explicit-key-ind';\n case ':':\n return 'map-value-ind';\n case '{':\n return 'flow-map-start';\n case '}':\n return 'flow-map-end';\n case '[':\n return 'flow-seq-start';\n case ']':\n return 'flow-seq-end';\n case ',':\n return 'comma';\n }\n switch (source[0]) {\n case ' ':\n case '\\t':\n return 'space';\n case '#':\n return 'comment';\n case '%':\n return 'directive-line';\n case '*':\n return 'alias';\n case '&':\n return 'anchor';\n case '!':\n return 'tag';\n case \"'\":\n return 'single-quoted-scalar';\n case '\"':\n return 'double-quoted-scalar';\n case '|':\n case '>':\n return 'block-scalar-header';\n }\n return null;\n}\n\nexports.createScalarToken = cstScalar.createScalarToken;\nexports.resolveAsScalar = cstScalar.resolveAsScalar;\nexports.setScalarValue = cstScalar.setScalarValue;\nexports.stringify = cstStringify.stringify;\nexports.visit = cstVisit.visit;\nexports.BOM = BOM;\nexports.DOCUMENT = DOCUMENT;\nexports.FLOW_END = FLOW_END;\nexports.SCALAR = SCALAR;\nexports.isCollection = isCollection;\nexports.isScalar = isScalar;\nexports.prettyToken = prettyToken;\nexports.tokenType = tokenType;\n","'use strict';\n\nvar cst = require('./cst.js');\n\n/*\nSTART -> stream\n\nstream\n directive -> line-end -> stream\n indent + line-end -> stream\n [else] -> line-start\n\nline-end\n comment -> line-end\n newline -> .\n input-end -> END\n\nline-start\n doc-start -> doc\n doc-end -> stream\n [else] -> indent -> block-start\n\nblock-start\n seq-item-start -> block-start\n explicit-key-start -> block-start\n map-value-start -> block-start\n [else] -> doc\n\ndoc\n line-end -> line-start\n spaces -> doc\n anchor -> doc\n tag -> doc\n flow-start -> flow -> doc\n flow-end -> error -> doc\n seq-item-start -> error -> doc\n explicit-key-start -> error -> doc\n map-value-start -> doc\n alias -> doc\n quote-start -> quoted-scalar -> doc\n block-scalar-header -> line-end -> block-scalar(min) -> line-start\n [else] -> plain-scalar(false, min) -> doc\n\nflow\n line-end -> flow\n spaces -> flow\n anchor -> flow\n tag -> flow\n flow-start -> flow -> flow\n flow-end -> .\n seq-item-start -> error -> flow\n explicit-key-start -> flow\n map-value-start -> flow\n alias -> flow\n quote-start -> quoted-scalar -> flow\n comma -> flow\n [else] -> plain-scalar(true, 0) -> flow\n\nquoted-scalar\n quote-end -> .\n [else] -> quoted-scalar\n\nblock-scalar(min)\n newline + peek(indent < min) -> .\n [else] -> block-scalar(min)\n\nplain-scalar(is-flow, min)\n scalar-end(is-flow) -> .\n peek(newline + (indent < min)) -> .\n [else] -> plain-scalar(min)\n*/\nfunction isEmpty(ch) {\n switch (ch) {\n case undefined:\n case ' ':\n case '\\n':\n case '\\r':\n case '\\t':\n return true;\n default:\n return false;\n }\n}\nconst hexDigits = new Set('0123456789ABCDEFabcdef');\nconst tagChars = new Set(\"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-#;/?:@&=+$_.!~*'()\");\nconst flowIndicatorChars = new Set(',[]{}');\nconst invalidAnchorChars = new Set(' ,[]{}\\n\\r\\t');\nconst isNotAnchorChar = (ch) => !ch || invalidAnchorChars.has(ch);\n/**\n * Splits an input string into lexical tokens, i.e. smaller strings that are\n * easily identifiable by `tokens.tokenType()`.\n *\n * Lexing starts always in a \"stream\" context. Incomplete input may be buffered\n * until a complete token can be emitted.\n *\n * In addition to slices of the original input, the following control characters\n * may also be emitted:\n *\n * - `\\x02` (Start of Text): A document starts with the next token\n * - `\\x18` (Cancel): Unexpected end of flow-mode (indicates an error)\n * - `\\x1f` (Unit Separator): Next token is a scalar value\n * - `\\u{FEFF}` (Byte order mark): Emitted separately outside documents\n */\nclass Lexer {\n constructor() {\n /**\n * Flag indicating whether the end of the current buffer marks the end of\n * all input\n */\n this.atEnd = false;\n /**\n * Explicit indent set in block scalar header, as an offset from the current\n * minimum indent, so e.g. set to 1 from a header `|2+`. Set to -1 if not\n * explicitly set.\n */\n this.blockScalarIndent = -1;\n /**\n * Block scalars that include a + (keep) chomping indicator in their header\n * include trailing empty lines, which are otherwise excluded from the\n * scalar's contents.\n */\n this.blockScalarKeep = false;\n /** Current input */\n this.buffer = '';\n /**\n * Flag noting whether the map value indicator : can immediately follow this\n * node within a flow context.\n */\n this.flowKey = false;\n /** Count of surrounding flow collection levels. */\n this.flowLevel = 0;\n /**\n * Minimum level of indentation required for next lines to be parsed as a\n * part of the current scalar value.\n */\n this.indentNext = 0;\n /** Indentation level of the current line. */\n this.indentValue = 0;\n /** Position of the next \\n character. */\n this.lineEndPos = null;\n /** Stores the state of the lexer if reaching the end of incpomplete input */\n this.next = null;\n /** A pointer to `buffer`; the current position of the lexer. */\n this.pos = 0;\n }\n /**\n * Generate YAML tokens from the `source` string. If `incomplete`,\n * a part of the last line may be left as a buffer for the next call.\n *\n * @returns A generator of lexical tokens\n */\n *lex(source, incomplete = false) {\n if (source) {\n if (typeof source !== 'string')\n throw TypeError('source is not a string');\n this.buffer = this.buffer ? this.buffer + source : source;\n this.lineEndPos = null;\n }\n this.atEnd = !incomplete;\n let next = this.next ?? 'stream';\n while (next && (incomplete || this.hasChars(1)))\n next = yield* this.parseNext(next);\n }\n atLineEnd() {\n let i = this.pos;\n let ch = this.buffer[i];\n while (ch === ' ' || ch === '\\t')\n ch = this.buffer[++i];\n if (!ch || ch === '#' || ch === '\\n')\n return true;\n if (ch === '\\r')\n return this.buffer[i + 1] === '\\n';\n return false;\n }\n charAt(n) {\n return this.buffer[this.pos + n];\n }\n continueScalar(offset) {\n let ch = this.buffer[offset];\n if (this.indentNext > 0) {\n let indent = 0;\n while (ch === ' ')\n ch = this.buffer[++indent + offset];\n if (ch === '\\r') {\n const next = this.buffer[indent + offset + 1];\n if (next === '\\n' || (!next && !this.atEnd))\n return offset + indent + 1;\n }\n return ch === '\\n' || indent >= this.indentNext || (!ch && !this.atEnd)\n ? offset + indent\n : -1;\n }\n if (ch === '-' || ch === '.') {\n const dt = this.buffer.substr(offset, 3);\n if ((dt === '---' || dt === '...') && isEmpty(this.buffer[offset + 3]))\n return -1;\n }\n return offset;\n }\n getLine() {\n let end = this.lineEndPos;\n if (typeof end !== 'number' || (end !== -1 && end < this.pos)) {\n end = this.buffer.indexOf('\\n', this.pos);\n this.lineEndPos = end;\n }\n if (end === -1)\n return this.atEnd ? this.buffer.substring(this.pos) : null;\n if (this.buffer[end - 1] === '\\r')\n end -= 1;\n return this.buffer.substring(this.pos, end);\n }\n hasChars(n) {\n return this.pos + n <= this.buffer.length;\n }\n setNext(state) {\n this.buffer = this.buffer.substring(this.pos);\n this.pos = 0;\n this.lineEndPos = null;\n this.next = state;\n return null;\n }\n peek(n) {\n return this.buffer.substr(this.pos, n);\n }\n *parseNext(next) {\n switch (next) {\n case 'stream':\n return yield* this.parseStream();\n case 'line-start':\n return yield* this.parseLineStart();\n case 'block-start':\n return yield* this.parseBlockStart();\n case 'doc':\n return yield* this.parseDocument();\n case 'flow':\n return yield* this.parseFlowCollection();\n case 'quoted-scalar':\n return yield* this.parseQuotedScalar();\n case 'block-scalar':\n return yield* this.parseBlockScalar();\n case 'plain-scalar':\n return yield* this.parsePlainScalar();\n }\n }\n *parseStream() {\n let line = this.getLine();\n if (line === null)\n return this.setNext('stream');\n if (line[0] === cst.BOM) {\n yield* this.pushCount(1);\n line = line.substring(1);\n }\n if (line[0] === '%') {\n let dirEnd = line.length;\n let cs = line.indexOf('#');\n while (cs !== -1) {\n const ch = line[cs - 1];\n if (ch === ' ' || ch === '\\t') {\n dirEnd = cs - 1;\n break;\n }\n else {\n cs = line.indexOf('#', cs + 1);\n }\n }\n while (true) {\n const ch = line[dirEnd - 1];\n if (ch === ' ' || ch === '\\t')\n dirEnd -= 1;\n else\n break;\n }\n const n = (yield* this.pushCount(dirEnd)) + (yield* this.pushSpaces(true));\n yield* this.pushCount(line.length - n); // possible comment\n this.pushNewline();\n return 'stream';\n }\n if (this.atLineEnd()) {\n const sp = yield* this.pushSpaces(true);\n yield* this.pushCount(line.length - sp);\n yield* this.pushNewline();\n return 'stream';\n }\n yield cst.DOCUMENT;\n return yield* this.parseLineStart();\n }\n *parseLineStart() {\n const ch = this.charAt(0);\n if (!ch && !this.atEnd)\n return this.setNext('line-start');\n if (ch === '-' || ch === '.') {\n if (!this.atEnd && !this.hasChars(4))\n return this.setNext('line-start');\n const s = this.peek(3);\n if ((s === '---' || s === '...') && isEmpty(this.charAt(3))) {\n yield* this.pushCount(3);\n this.indentValue = 0;\n this.indentNext = 0;\n return s === '---' ? 'doc' : 'stream';\n }\n }\n this.indentValue = yield* this.pushSpaces(false);\n if (this.indentNext > this.indentValue && !isEmpty(this.charAt(1)))\n this.indentNext = this.indentValue;\n return yield* this.parseBlockStart();\n }\n *parseBlockStart() {\n const [ch0, ch1] = this.peek(2);\n if (!ch1 && !this.atEnd)\n return this.setNext('block-start');\n if ((ch0 === '-' || ch0 === '?' || ch0 === ':') && isEmpty(ch1)) {\n const n = (yield* this.pushCount(1)) + (yield* this.pushSpaces(true));\n this.indentNext = this.indentValue + 1;\n this.indentValue += n;\n return yield* this.parseBlockStart();\n }\n return 'doc';\n }\n *parseDocument() {\n yield* this.pushSpaces(true);\n const line = this.getLine();\n if (line === null)\n return this.setNext('doc');\n let n = yield* this.pushIndicators();\n switch (line[n]) {\n case '#':\n yield* this.pushCount(line.length - n);\n // fallthrough\n case undefined:\n yield* this.pushNewline();\n return yield* this.parseLineStart();\n case '{':\n case '[':\n yield* this.pushCount(1);\n this.flowKey = false;\n this.flowLevel = 1;\n return 'flow';\n case '}':\n case ']':\n // this is an error\n yield* this.pushCount(1);\n return 'doc';\n case '*':\n yield* this.pushUntil(isNotAnchorChar);\n return 'doc';\n case '\"':\n case \"'\":\n return yield* this.parseQuotedScalar();\n case '|':\n case '>':\n n += yield* this.parseBlockScalarHeader();\n n += yield* this.pushSpaces(true);\n yield* this.pushCount(line.length - n);\n yield* this.pushNewline();\n return yield* this.parseBlockScalar();\n default:\n return yield* this.parsePlainScalar();\n }\n }\n *parseFlowCollection() {\n let nl, sp;\n let indent = -1;\n do {\n nl = yield* this.pushNewline();\n if (nl > 0) {\n sp = yield* this.pushSpaces(false);\n this.indentValue = indent = sp;\n }\n else {\n sp = 0;\n }\n sp += yield* this.pushSpaces(true);\n } while (nl + sp > 0);\n const line = this.getLine();\n if (line === null)\n return this.setNext('flow');\n if ((indent !== -1 && indent < this.indentNext && line[0] !== '#') ||\n (indent === 0 &&\n (line.startsWith('---') || line.startsWith('...')) &&\n isEmpty(line[3]))) {\n // Allowing for the terminal ] or } at the same (rather than greater)\n // indent level as the initial [ or { is technically invalid, but\n // failing here would be surprising to users.\n const atFlowEndMarker = indent === this.indentNext - 1 &&\n this.flowLevel === 1 &&\n (line[0] === ']' || line[0] === '}');\n if (!atFlowEndMarker) {\n // this is an error\n this.flowLevel = 0;\n yield cst.FLOW_END;\n return yield* this.parseLineStart();\n }\n }\n let n = 0;\n while (line[n] === ',') {\n n += yield* this.pushCount(1);\n n += yield* this.pushSpaces(true);\n this.flowKey = false;\n }\n n += yield* this.pushIndicators();\n switch (line[n]) {\n case undefined:\n return 'flow';\n case '#':\n yield* this.pushCount(line.length - n);\n return 'flow';\n case '{':\n case '[':\n yield* this.pushCount(1);\n this.flowKey = false;\n this.flowLevel += 1;\n return 'flow';\n case '}':\n case ']':\n yield* this.pushCount(1);\n this.flowKey = true;\n this.flowLevel -= 1;\n return this.flowLevel ? 'flow' : 'doc';\n case '*':\n yield* this.pushUntil(isNotAnchorChar);\n return 'flow';\n case '\"':\n case \"'\":\n this.flowKey = true;\n return yield* this.parseQuotedScalar();\n case ':': {\n const next = this.charAt(1);\n if (this.flowKey || isEmpty(next) || next === ',') {\n this.flowKey = false;\n yield* this.pushCount(1);\n yield* this.pushSpaces(true);\n return 'flow';\n }\n }\n // fallthrough\n default:\n this.flowKey = false;\n return yield* this.parsePlainScalar();\n }\n }\n *parseQuotedScalar() {\n const quote = this.charAt(0);\n let end = this.buffer.indexOf(quote, this.pos + 1);\n if (quote === \"'\") {\n while (end !== -1 && this.buffer[end + 1] === \"'\")\n end = this.buffer.indexOf(\"'\", end + 2);\n }\n else {\n // double-quote\n while (end !== -1) {\n let n = 0;\n while (this.buffer[end - 1 - n] === '\\\\')\n n += 1;\n if (n % 2 === 0)\n break;\n end = this.buffer.indexOf('\"', end + 1);\n }\n }\n // Only looking for newlines within the quotes\n const qb = this.buffer.substring(0, end);\n let nl = qb.indexOf('\\n', this.pos);\n if (nl !== -1) {\n while (nl !== -1) {\n const cs = this.continueScalar(nl + 1);\n if (cs === -1)\n break;\n nl = qb.indexOf('\\n', cs);\n }\n if (nl !== -1) {\n // this is an error caused by an unexpected unindent\n end = nl - (qb[nl - 1] === '\\r' ? 2 : 1);\n }\n }\n if (end === -1) {\n if (!this.atEnd)\n return this.setNext('quoted-scalar');\n end = this.buffer.length;\n }\n yield* this.pushToIndex(end + 1, false);\n return this.flowLevel ? 'flow' : 'doc';\n }\n *parseBlockScalarHeader() {\n this.blockScalarIndent = -1;\n this.blockScalarKeep = false;\n let i = this.pos;\n while (true) {\n const ch = this.buffer[++i];\n if (ch === '+')\n this.blockScalarKeep = true;\n else if (ch > '0' && ch <= '9')\n this.blockScalarIndent = Number(ch) - 1;\n else if (ch !== '-')\n break;\n }\n return yield* this.pushUntil(ch => isEmpty(ch) || ch === '#');\n }\n *parseBlockScalar() {\n let nl = this.pos - 1; // may be -1 if this.pos === 0\n let indent = 0;\n let ch;\n loop: for (let i = this.pos; (ch = this.buffer[i]); ++i) {\n switch (ch) {\n case ' ':\n indent += 1;\n break;\n case '\\n':\n nl = i;\n indent = 0;\n break;\n case '\\r': {\n const next = this.buffer[i + 1];\n if (!next && !this.atEnd)\n return this.setNext('block-scalar');\n if (next === '\\n')\n break;\n } // fallthrough\n default:\n break loop;\n }\n }\n if (!ch && !this.atEnd)\n return this.setNext('block-scalar');\n if (indent >= this.indentNext) {\n if (this.blockScalarIndent === -1)\n this.indentNext = indent;\n else {\n this.indentNext =\n this.blockScalarIndent + (this.indentNext === 0 ? 1 : this.indentNext);\n }\n do {\n const cs = this.continueScalar(nl + 1);\n if (cs === -1)\n break;\n nl = this.buffer.indexOf('\\n', cs);\n } while (nl !== -1);\n if (nl === -1) {\n if (!this.atEnd)\n return this.setNext('block-scalar');\n nl = this.buffer.length;\n }\n }\n // Trailing insufficiently indented tabs are invalid.\n // To catch that during parsing, we include them in the block scalar value.\n let i = nl + 1;\n ch = this.buffer[i];\n while (ch === ' ')\n ch = this.buffer[++i];\n if (ch === '\\t') {\n while (ch === '\\t' || ch === ' ' || ch === '\\r' || ch === '\\n')\n ch = this.buffer[++i];\n nl = i - 1;\n }\n else if (!this.blockScalarKeep) {\n do {\n let i = nl - 1;\n let ch = this.buffer[i];\n if (ch === '\\r')\n ch = this.buffer[--i];\n const lastChar = i; // Drop the line if last char not more indented\n while (ch === ' ')\n ch = this.buffer[--i];\n if (ch === '\\n' && i >= this.pos && i + 1 + indent > lastChar)\n nl = i;\n else\n break;\n } while (true);\n }\n yield cst.SCALAR;\n yield* this.pushToIndex(nl + 1, true);\n return yield* this.parseLineStart();\n }\n *parsePlainScalar() {\n const inFlow = this.flowLevel > 0;\n let end = this.pos - 1;\n let i = this.pos - 1;\n let ch;\n while ((ch = this.buffer[++i])) {\n if (ch === ':') {\n const next = this.buffer[i + 1];\n if (isEmpty(next) || (inFlow && flowIndicatorChars.has(next)))\n break;\n end = i;\n }\n else if (isEmpty(ch)) {\n let next = this.buffer[i + 1];\n if (ch === '\\r') {\n if (next === '\\n') {\n i += 1;\n ch = '\\n';\n next = this.buffer[i + 1];\n }\n else\n end = i;\n }\n if (next === '#' || (inFlow && flowIndicatorChars.has(next)))\n break;\n if (ch === '\\n') {\n const cs = this.continueScalar(i + 1);\n if (cs === -1)\n break;\n i = Math.max(i, cs - 2); // to advance, but still account for ' #'\n }\n }\n else {\n if (inFlow && flowIndicatorChars.has(ch))\n break;\n end = i;\n }\n }\n if (!ch && !this.atEnd)\n return this.setNext('plain-scalar');\n yield cst.SCALAR;\n yield* this.pushToIndex(end + 1, true);\n return inFlow ? 'flow' : 'doc';\n }\n *pushCount(n) {\n if (n > 0) {\n yield this.buffer.substr(this.pos, n);\n this.pos += n;\n return n;\n }\n return 0;\n }\n *pushToIndex(i, allowEmpty) {\n const s = this.buffer.slice(this.pos, i);\n if (s) {\n yield s;\n this.pos += s.length;\n return s.length;\n }\n else if (allowEmpty)\n yield '';\n return 0;\n }\n *pushIndicators() {\n switch (this.charAt(0)) {\n case '!':\n return ((yield* this.pushTag()) +\n (yield* this.pushSpaces(true)) +\n (yield* this.pushIndicators()));\n case '&':\n return ((yield* this.pushUntil(isNotAnchorChar)) +\n (yield* this.pushSpaces(true)) +\n (yield* this.pushIndicators()));\n case '-': // this is an error\n case '?': // this is an error outside flow collections\n case ':': {\n const inFlow = this.flowLevel > 0;\n const ch1 = this.charAt(1);\n if (isEmpty(ch1) || (inFlow && flowIndicatorChars.has(ch1))) {\n if (!inFlow)\n this.indentNext = this.indentValue + 1;\n else if (this.flowKey)\n this.flowKey = false;\n return ((yield* this.pushCount(1)) +\n (yield* this.pushSpaces(true)) +\n (yield* this.pushIndicators()));\n }\n }\n }\n return 0;\n }\n *pushTag() {\n if (this.charAt(1) === '<') {\n let i = this.pos + 2;\n let ch = this.buffer[i];\n while (!isEmpty(ch) && ch !== '>')\n ch = this.buffer[++i];\n return yield* this.pushToIndex(ch === '>' ? i + 1 : i, false);\n }\n else {\n let i = this.pos + 1;\n let ch = this.buffer[i];\n while (ch) {\n if (tagChars.has(ch))\n ch = this.buffer[++i];\n else if (ch === '%' &&\n hexDigits.has(this.buffer[i + 1]) &&\n hexDigits.has(this.buffer[i + 2])) {\n ch = this.buffer[(i += 3)];\n }\n else\n break;\n }\n return yield* this.pushToIndex(i, false);\n }\n }\n *pushNewline() {\n const ch = this.buffer[this.pos];\n if (ch === '\\n')\n return yield* this.pushCount(1);\n else if (ch === '\\r' && this.charAt(1) === '\\n')\n return yield* this.pushCount(2);\n else\n return 0;\n }\n *pushSpaces(allowTabs) {\n let i = this.pos - 1;\n let ch;\n do {\n ch = this.buffer[++i];\n } while (ch === ' ' || (allowTabs && ch === '\\t'));\n const n = i - this.pos;\n if (n > 0) {\n yield this.buffer.substr(this.pos, n);\n this.pos = i;\n }\n return n;\n }\n *pushUntil(test) {\n let i = this.pos;\n let ch = this.buffer[i];\n while (!test(ch))\n ch = this.buffer[++i];\n return yield* this.pushToIndex(i, false);\n }\n}\n\nexports.Lexer = Lexer;\n","'use strict';\n\n/**\n * Tracks newlines during parsing in order to provide an efficient API for\n * determining the one-indexed `{ line, col }` position for any offset\n * within the input.\n */\nclass LineCounter {\n constructor() {\n this.lineStarts = [];\n /**\n * Should be called in ascending order. Otherwise, call\n * `lineCounter.lineStarts.sort()` before calling `linePos()`.\n */\n this.addNewLine = (offset) => this.lineStarts.push(offset);\n /**\n * Performs a binary search and returns the 1-indexed { line, col }\n * position of `offset`. If `line === 0`, `addNewLine` has never been\n * called or `offset` is before the first known newline.\n */\n this.linePos = (offset) => {\n let low = 0;\n let high = this.lineStarts.length;\n while (low < high) {\n const mid = (low + high) >> 1; // Math.floor((low + high) / 2)\n if (this.lineStarts[mid] < offset)\n low = mid + 1;\n else\n high = mid;\n }\n if (this.lineStarts[low] === offset)\n return { line: low + 1, col: 1 };\n if (low === 0)\n return { line: 0, col: offset };\n const start = this.lineStarts[low - 1];\n return { line: low, col: offset - start + 1 };\n };\n }\n}\n\nexports.LineCounter = LineCounter;\n","'use strict';\n\nvar node_process = require('process');\nvar cst = require('./cst.js');\nvar lexer = require('./lexer.js');\n\nfunction includesToken(list, type) {\n for (let i = 0; i < list.length; ++i)\n if (list[i].type === type)\n return true;\n return false;\n}\nfunction findNonEmptyIndex(list) {\n for (let i = 0; i < list.length; ++i) {\n switch (list[i].type) {\n case 'space':\n case 'comment':\n case 'newline':\n break;\n default:\n return i;\n }\n }\n return -1;\n}\nfunction isFlowToken(token) {\n switch (token?.type) {\n case 'alias':\n case 'scalar':\n case 'single-quoted-scalar':\n case 'double-quoted-scalar':\n case 'flow-collection':\n return true;\n default:\n return false;\n }\n}\nfunction getPrevProps(parent) {\n switch (parent.type) {\n case 'document':\n return parent.start;\n case 'block-map': {\n const it = parent.items[parent.items.length - 1];\n return it.sep ?? it.start;\n }\n case 'block-seq':\n return parent.items[parent.items.length - 1].start;\n /* istanbul ignore next should not happen */\n default:\n return [];\n }\n}\n/** Note: May modify input array */\nfunction getFirstKeyStartProps(prev) {\n if (prev.length === 0)\n return [];\n let i = prev.length;\n loop: while (--i >= 0) {\n switch (prev[i].type) {\n case 'doc-start':\n case 'explicit-key-ind':\n case 'map-value-ind':\n case 'seq-item-ind':\n case 'newline':\n break loop;\n }\n }\n while (prev[++i]?.type === 'space') {\n /* loop */\n }\n return prev.splice(i, prev.length);\n}\nfunction fixFlowSeqItems(fc) {\n if (fc.start.type === 'flow-seq-start') {\n for (const it of fc.items) {\n if (it.sep &&\n !it.value &&\n !includesToken(it.start, 'explicit-key-ind') &&\n !includesToken(it.sep, 'map-value-ind')) {\n if (it.key)\n it.value = it.key;\n delete it.key;\n if (isFlowToken(it.value)) {\n if (it.value.end)\n Array.prototype.push.apply(it.value.end, it.sep);\n else\n it.value.end = it.sep;\n }\n else\n Array.prototype.push.apply(it.start, it.sep);\n delete it.sep;\n }\n }\n }\n}\n/**\n * A YAML concrete syntax tree (CST) parser\n *\n * ```ts\n * const src: string = ...\n * for (const token of new Parser().parse(src)) {\n * // token: Token\n * }\n * ```\n *\n * To use the parser with a user-provided lexer:\n *\n * ```ts\n * function* parse(source: string, lexer: Lexer) {\n * const parser = new Parser()\n * for (const lexeme of lexer.lex(source))\n * yield* parser.next(lexeme)\n * yield* parser.end()\n * }\n *\n * const src: string = ...\n * const lexer = new Lexer()\n * for (const token of parse(src, lexer)) {\n * // token: Token\n * }\n * ```\n */\nclass Parser {\n /**\n * @param onNewLine - If defined, called separately with the start position of\n * each new line (in `parse()`, including the start of input).\n */\n constructor(onNewLine) {\n /** If true, space and sequence indicators count as indentation */\n this.atNewLine = true;\n /** If true, next token is a scalar value */\n this.atScalar = false;\n /** Current indentation level */\n this.indent = 0;\n /** Current offset since the start of parsing */\n this.offset = 0;\n /** On the same line with a block map key */\n this.onKeyLine = false;\n /** Top indicates the node that's currently being built */\n this.stack = [];\n /** The source of the current token, set in parse() */\n this.source = '';\n /** The type of the current token, set in parse() */\n this.type = '';\n // Must be defined after `next()`\n this.lexer = new lexer.Lexer();\n this.onNewLine = onNewLine;\n }\n /**\n * Parse `source` as a YAML stream.\n * If `incomplete`, a part of the last line may be left as a buffer for the next call.\n *\n * Errors are not thrown, but yielded as `{ type: 'error', message }` tokens.\n *\n * @returns A generator of tokens representing each directive, document, and other structure.\n */\n *parse(source, incomplete = false) {\n if (this.onNewLine && this.offset === 0)\n this.onNewLine(0);\n for (const lexeme of this.lexer.lex(source, incomplete))\n yield* this.next(lexeme);\n if (!incomplete)\n yield* this.end();\n }\n /**\n * Advance the parser by the `source` of one lexical token.\n */\n *next(source) {\n this.source = source;\n if (node_process.env.LOG_TOKENS)\n console.log('|', cst.prettyToken(source));\n if (this.atScalar) {\n this.atScalar = false;\n yield* this.step();\n this.offset += source.length;\n return;\n }\n const type = cst.tokenType(source);\n if (!type) {\n const message = `Not a YAML token: ${source}`;\n yield* this.pop({ type: 'error', offset: this.offset, message, source });\n this.offset += source.length;\n }\n else if (type === 'scalar') {\n this.atNewLine = false;\n this.atScalar = true;\n this.type = 'scalar';\n }\n else {\n this.type = type;\n yield* this.step();\n switch (type) {\n case 'newline':\n this.atNewLine = true;\n this.indent = 0;\n if (this.onNewLine)\n this.onNewLine(this.offset + source.length);\n break;\n case 'space':\n if (this.atNewLine && source[0] === ' ')\n this.indent += source.length;\n break;\n case 'explicit-key-ind':\n case 'map-value-ind':\n case 'seq-item-ind':\n if (this.atNewLine)\n this.indent += source.length;\n break;\n case 'doc-mode':\n case 'flow-error-end':\n return;\n default:\n this.atNewLine = false;\n }\n this.offset += source.length;\n }\n }\n /** Call at end of input to push out any remaining constructions */\n *end() {\n while (this.stack.length > 0)\n yield* this.pop();\n }\n get sourceToken() {\n const st = {\n type: this.type,\n offset: this.offset,\n indent: this.indent,\n source: this.source\n };\n return st;\n }\n *step() {\n const top = this.peek(1);\n if (this.type === 'doc-end' && (!top || top.type !== 'doc-end')) {\n while (this.stack.length > 0)\n yield* this.pop();\n this.stack.push({\n type: 'doc-end',\n offset: this.offset,\n source: this.source\n });\n return;\n }\n if (!top)\n return yield* this.stream();\n switch (top.type) {\n case 'document':\n return yield* this.document(top);\n case 'alias':\n case 'scalar':\n case 'single-quoted-scalar':\n case 'double-quoted-scalar':\n return yield* this.scalar(top);\n case 'block-scalar':\n return yield* this.blockScalar(top);\n case 'block-map':\n return yield* this.blockMap(top);\n case 'block-seq':\n return yield* this.blockSequence(top);\n case 'flow-collection':\n return yield* this.flowCollection(top);\n case 'doc-end':\n return yield* this.documentEnd(top);\n }\n /* istanbul ignore next should not happen */\n yield* this.pop();\n }\n peek(n) {\n return this.stack[this.stack.length - n];\n }\n *pop(error) {\n const token = error ?? this.stack.pop();\n /* istanbul ignore if should not happen */\n if (!token) {\n const message = 'Tried to pop an empty stack';\n yield { type: 'error', offset: this.offset, source: '', message };\n }\n else if (this.stack.length === 0) {\n yield token;\n }\n else {\n const top = this.peek(1);\n if (token.type === 'block-scalar') {\n // Block scalars use their parent rather than header indent\n token.indent = 'indent' in top ? top.indent : 0;\n }\n else if (token.type === 'flow-collection' && top.type === 'document') {\n // Ignore all indent for top-level flow collections\n token.indent = 0;\n }\n if (token.type === 'flow-collection')\n fixFlowSeqItems(token);\n switch (top.type) {\n case 'document':\n top.value = token;\n break;\n case 'block-scalar':\n top.props.push(token); // error\n break;\n case 'block-map': {\n const it = top.items[top.items.length - 1];\n if (it.value) {\n top.items.push({ start: [], key: token, sep: [] });\n this.onKeyLine = true;\n return;\n }\n else if (it.sep) {\n it.value = token;\n }\n else {\n Object.assign(it, { key: token, sep: [] });\n this.onKeyLine = !it.explicitKey;\n return;\n }\n break;\n }\n case 'block-seq': {\n const it = top.items[top.items.length - 1];\n if (it.value)\n top.items.push({ start: [], value: token });\n else\n it.value = token;\n break;\n }\n case 'flow-collection': {\n const it = top.items[top.items.length - 1];\n if (!it || it.value)\n top.items.push({ start: [], key: token, sep: [] });\n else if (it.sep)\n it.value = token;\n else\n Object.assign(it, { key: token, sep: [] });\n return;\n }\n /* istanbul ignore next should not happen */\n default:\n yield* this.pop();\n yield* this.pop(token);\n }\n if ((top.type === 'document' ||\n top.type === 'block-map' ||\n top.type === 'block-seq') &&\n (token.type === 'block-map' || token.type === 'block-seq')) {\n const last = token.items[token.items.length - 1];\n if (last &&\n !last.sep &&\n !last.value &&\n last.start.length > 0 &&\n findNonEmptyIndex(last.start) === -1 &&\n (token.indent === 0 ||\n last.start.every(st => st.type !== 'comment' || st.indent < token.indent))) {\n if (top.type === 'document')\n top.end = last.start;\n else\n top.items.push({ start: last.start });\n token.items.splice(-1, 1);\n }\n }\n }\n }\n *stream() {\n switch (this.type) {\n case 'directive-line':\n yield { type: 'directive', offset: this.offset, source: this.source };\n return;\n case 'byte-order-mark':\n case 'space':\n case 'comment':\n case 'newline':\n yield this.sourceToken;\n return;\n case 'doc-mode':\n case 'doc-start': {\n const doc = {\n type: 'document',\n offset: this.offset,\n start: []\n };\n if (this.type === 'doc-start')\n doc.start.push(this.sourceToken);\n this.stack.push(doc);\n return;\n }\n }\n yield {\n type: 'error',\n offset: this.offset,\n message: `Unexpected ${this.type} token in YAML stream`,\n source: this.source\n };\n }\n *document(doc) {\n if (doc.value)\n return yield* this.lineEnd(doc);\n switch (this.type) {\n case 'doc-start': {\n if (findNonEmptyIndex(doc.start) !== -1) {\n yield* this.pop();\n yield* this.step();\n }\n else\n doc.start.push(this.sourceToken);\n return;\n }\n case 'anchor':\n case 'tag':\n case 'space':\n case 'comment':\n case 'newline':\n doc.start.push(this.sourceToken);\n return;\n }\n const bv = this.startBlockValue(doc);\n if (bv)\n this.stack.push(bv);\n else {\n yield {\n type: 'error',\n offset: this.offset,\n message: `Unexpected ${this.type} token in YAML document`,\n source: this.source\n };\n }\n }\n *scalar(scalar) {\n if (this.type === 'map-value-ind') {\n const prev = getPrevProps(this.peek(2));\n const start = getFirstKeyStartProps(prev);\n let sep;\n if (scalar.end) {\n sep = scalar.end;\n sep.push(this.sourceToken);\n delete scalar.end;\n }\n else\n sep = [this.sourceToken];\n const map = {\n type: 'block-map',\n offset: scalar.offset,\n indent: scalar.indent,\n items: [{ start, key: scalar, sep }]\n };\n this.onKeyLine = true;\n this.stack[this.stack.length - 1] = map;\n }\n else\n yield* this.lineEnd(scalar);\n }\n *blockScalar(scalar) {\n switch (this.type) {\n case 'space':\n case 'comment':\n case 'newline':\n scalar.props.push(this.sourceToken);\n return;\n case 'scalar':\n scalar.source = this.source;\n // block-scalar source includes trailing newline\n this.atNewLine = true;\n this.indent = 0;\n if (this.onNewLine) {\n let nl = this.source.indexOf('\\n') + 1;\n while (nl !== 0) {\n this.onNewLine(this.offset + nl);\n nl = this.source.indexOf('\\n', nl) + 1;\n }\n }\n yield* this.pop();\n break;\n /* istanbul ignore next should not happen */\n default:\n yield* this.pop();\n yield* this.step();\n }\n }\n *blockMap(map) {\n const it = map.items[map.items.length - 1];\n // it.sep is true-ish if pair already has key or : separator\n switch (this.type) {\n case 'newline':\n this.onKeyLine = false;\n if (it.value) {\n const end = 'end' in it.value ? it.value.end : undefined;\n const last = Array.isArray(end) ? end[end.length - 1] : undefined;\n if (last?.type === 'comment')\n end?.push(this.sourceToken);\n else\n map.items.push({ start: [this.sourceToken] });\n }\n else if (it.sep) {\n it.sep.push(this.sourceToken);\n }\n else {\n it.start.push(this.sourceToken);\n }\n return;\n case 'space':\n case 'comment':\n if (it.value) {\n map.items.push({ start: [this.sourceToken] });\n }\n else if (it.sep) {\n it.sep.push(this.sourceToken);\n }\n else {\n if (this.atIndentedComment(it.start, map.indent)) {\n const prev = map.items[map.items.length - 2];\n const end = prev?.value?.end;\n if (Array.isArray(end)) {\n Array.prototype.push.apply(end, it.start);\n end.push(this.sourceToken);\n map.items.pop();\n return;\n }\n }\n it.start.push(this.sourceToken);\n }\n return;\n }\n if (this.indent >= map.indent) {\n const atMapIndent = !this.onKeyLine && this.indent === map.indent;\n const atNextItem = atMapIndent &&\n (it.sep || it.explicitKey) &&\n this.type !== 'seq-item-ind';\n // For empty nodes, assign newline-separated not indented empty tokens to following node\n let start = [];\n if (atNextItem && it.sep && !it.value) {\n const nl = [];\n for (let i = 0; i < it.sep.length; ++i) {\n const st = it.sep[i];\n switch (st.type) {\n case 'newline':\n nl.push(i);\n break;\n case 'space':\n break;\n case 'comment':\n if (st.indent > map.indent)\n nl.length = 0;\n break;\n default:\n nl.length = 0;\n }\n }\n if (nl.length >= 2)\n start = it.sep.splice(nl[1]);\n }\n switch (this.type) {\n case 'anchor':\n case 'tag':\n if (atNextItem || it.value) {\n start.push(this.sourceToken);\n map.items.push({ start });\n this.onKeyLine = true;\n }\n else if (it.sep) {\n it.sep.push(this.sourceToken);\n }\n else {\n it.start.push(this.sourceToken);\n }\n return;\n case 'explicit-key-ind':\n if (!it.sep && !it.explicitKey) {\n it.start.push(this.sourceToken);\n it.explicitKey = true;\n }\n else if (atNextItem || it.value) {\n start.push(this.sourceToken);\n map.items.push({ start, explicitKey: true });\n }\n else {\n this.stack.push({\n type: 'block-map',\n offset: this.offset,\n indent: this.indent,\n items: [{ start: [this.sourceToken], explicitKey: true }]\n });\n }\n this.onKeyLine = true;\n return;\n case 'map-value-ind':\n if (it.explicitKey) {\n if (!it.sep) {\n if (includesToken(it.start, 'newline')) {\n Object.assign(it, { key: null, sep: [this.sourceToken] });\n }\n else {\n const start = getFirstKeyStartProps(it.start);\n this.stack.push({\n type: 'block-map',\n offset: this.offset,\n indent: this.indent,\n items: [{ start, key: null, sep: [this.sourceToken] }]\n });\n }\n }\n else if (it.value) {\n map.items.push({ start: [], key: null, sep: [this.sourceToken] });\n }\n else if (includesToken(it.sep, 'map-value-ind')) {\n this.stack.push({\n type: 'block-map',\n offset: this.offset,\n indent: this.indent,\n items: [{ start, key: null, sep: [this.sourceToken] }]\n });\n }\n else if (isFlowToken(it.key) &&\n !includesToken(it.sep, 'newline')) {\n const start = getFirstKeyStartProps(it.start);\n const key = it.key;\n const sep = it.sep;\n sep.push(this.sourceToken);\n // @ts-expect-error type guard is wrong here\n delete it.key;\n // @ts-expect-error type guard is wrong here\n delete it.sep;\n this.stack.push({\n type: 'block-map',\n offset: this.offset,\n indent: this.indent,\n items: [{ start, key, sep }]\n });\n }\n else if (start.length > 0) {\n // Not actually at next item\n it.sep = it.sep.concat(start, this.sourceToken);\n }\n else {\n it.sep.push(this.sourceToken);\n }\n }\n else {\n if (!it.sep) {\n Object.assign(it, { key: null, sep: [this.sourceToken] });\n }\n else if (it.value || atNextItem) {\n map.items.push({ start, key: null, sep: [this.sourceToken] });\n }\n else if (includesToken(it.sep, 'map-value-ind')) {\n this.stack.push({\n type: 'block-map',\n offset: this.offset,\n indent: this.indent,\n items: [{ start: [], key: null, sep: [this.sourceToken] }]\n });\n }\n else {\n it.sep.push(this.sourceToken);\n }\n }\n this.onKeyLine = true;\n return;\n case 'alias':\n case 'scalar':\n case 'single-quoted-scalar':\n case 'double-quoted-scalar': {\n const fs = this.flowScalar(this.type);\n if (atNextItem || it.value) {\n map.items.push({ start, key: fs, sep: [] });\n this.onKeyLine = true;\n }\n else if (it.sep) {\n this.stack.push(fs);\n }\n else {\n Object.assign(it, { key: fs, sep: [] });\n this.onKeyLine = true;\n }\n return;\n }\n default: {\n const bv = this.startBlockValue(map);\n if (bv) {\n if (bv.type === 'block-seq') {\n if (!it.explicitKey &&\n it.sep &&\n !includesToken(it.sep, 'newline')) {\n yield* this.pop({\n type: 'error',\n offset: this.offset,\n message: 'Unexpected block-seq-ind on same line with key',\n source: this.source\n });\n return;\n }\n }\n else if (atMapIndent) {\n map.items.push({ start });\n }\n this.stack.push(bv);\n return;\n }\n }\n }\n }\n yield* this.pop();\n yield* this.step();\n }\n *blockSequence(seq) {\n const it = seq.items[seq.items.length - 1];\n switch (this.type) {\n case 'newline':\n if (it.value) {\n const end = 'end' in it.value ? it.value.end : undefined;\n const last = Array.isArray(end) ? end[end.length - 1] : undefined;\n if (last?.type === 'comment')\n end?.push(this.sourceToken);\n else\n seq.items.push({ start: [this.sourceToken] });\n }\n else\n it.start.push(this.sourceToken);\n return;\n case 'space':\n case 'comment':\n if (it.value)\n seq.items.push({ start: [this.sourceToken] });\n else {\n if (this.atIndentedComment(it.start, seq.indent)) {\n const prev = seq.items[seq.items.length - 2];\n const end = prev?.value?.end;\n if (Array.isArray(end)) {\n Array.prototype.push.apply(end, it.start);\n end.push(this.sourceToken);\n seq.items.pop();\n return;\n }\n }\n it.start.push(this.sourceToken);\n }\n return;\n case 'anchor':\n case 'tag':\n if (it.value || this.indent <= seq.indent)\n break;\n it.start.push(this.sourceToken);\n return;\n case 'seq-item-ind':\n if (this.indent !== seq.indent)\n break;\n if (it.value || includesToken(it.start, 'seq-item-ind'))\n seq.items.push({ start: [this.sourceToken] });\n else\n it.start.push(this.sourceToken);\n return;\n }\n if (this.indent > seq.indent) {\n const bv = this.startBlockValue(seq);\n if (bv) {\n this.stack.push(bv);\n return;\n }\n }\n yield* this.pop();\n yield* this.step();\n }\n *flowCollection(fc) {\n const it = fc.items[fc.items.length - 1];\n if (this.type === 'flow-error-end') {\n let top;\n do {\n yield* this.pop();\n top = this.peek(1);\n } while (top && top.type === 'flow-collection');\n }\n else if (fc.end.length === 0) {\n switch (this.type) {\n case 'comma':\n case 'explicit-key-ind':\n if (!it || it.sep)\n fc.items.push({ start: [this.sourceToken] });\n else\n it.start.push(this.sourceToken);\n return;\n case 'map-value-ind':\n if (!it || it.value)\n fc.items.push({ start: [], key: null, sep: [this.sourceToken] });\n else if (it.sep)\n it.sep.push(this.sourceToken);\n else\n Object.assign(it, { key: null, sep: [this.sourceToken] });\n return;\n case 'space':\n case 'comment':\n case 'newline':\n case 'anchor':\n case 'tag':\n if (!it || it.value)\n fc.items.push({ start: [this.sourceToken] });\n else if (it.sep)\n it.sep.push(this.sourceToken);\n else\n it.start.push(this.sourceToken);\n return;\n case 'alias':\n case 'scalar':\n case 'single-quoted-scalar':\n case 'double-quoted-scalar': {\n const fs = this.flowScalar(this.type);\n if (!it || it.value)\n fc.items.push({ start: [], key: fs, sep: [] });\n else if (it.sep)\n this.stack.push(fs);\n else\n Object.assign(it, { key: fs, sep: [] });\n return;\n }\n case 'flow-map-end':\n case 'flow-seq-end':\n fc.end.push(this.sourceToken);\n return;\n }\n const bv = this.startBlockValue(fc);\n /* istanbul ignore else should not happen */\n if (bv)\n this.stack.push(bv);\n else {\n yield* this.pop();\n yield* this.step();\n }\n }\n else {\n const parent = this.peek(2);\n if (parent.type === 'block-map' &&\n ((this.type === 'map-value-ind' && parent.indent === fc.indent) ||\n (this.type === 'newline' &&\n !parent.items[parent.items.length - 1].sep))) {\n yield* this.pop();\n yield* this.step();\n }\n else if (this.type === 'map-value-ind' &&\n parent.type !== 'flow-collection') {\n const prev = getPrevProps(parent);\n const start = getFirstKeyStartProps(prev);\n fixFlowSeqItems(fc);\n const sep = fc.end.splice(1, fc.end.length);\n sep.push(this.sourceToken);\n const map = {\n type: 'block-map',\n offset: fc.offset,\n indent: fc.indent,\n items: [{ start, key: fc, sep }]\n };\n this.onKeyLine = true;\n this.stack[this.stack.length - 1] = map;\n }\n else {\n yield* this.lineEnd(fc);\n }\n }\n }\n flowScalar(type) {\n if (this.onNewLine) {\n let nl = this.source.indexOf('\\n') + 1;\n while (nl !== 0) {\n this.onNewLine(this.offset + nl);\n nl = this.source.indexOf('\\n', nl) + 1;\n }\n }\n return {\n type,\n offset: this.offset,\n indent: this.indent,\n source: this.source\n };\n }\n startBlockValue(parent) {\n switch (this.type) {\n case 'alias':\n case 'scalar':\n case 'single-quoted-scalar':\n case 'double-quoted-scalar':\n return this.flowScalar(this.type);\n case 'block-scalar-header':\n return {\n type: 'block-scalar',\n offset: this.offset,\n indent: this.indent,\n props: [this.sourceToken],\n source: ''\n };\n case 'flow-map-start':\n case 'flow-seq-start':\n return {\n type: 'flow-collection',\n offset: this.offset,\n indent: this.indent,\n start: this.sourceToken,\n items: [],\n end: []\n };\n case 'seq-item-ind':\n return {\n type: 'block-seq',\n offset: this.offset,\n indent: this.indent,\n items: [{ start: [this.sourceToken] }]\n };\n case 'explicit-key-ind': {\n this.onKeyLine = true;\n const prev = getPrevProps(parent);\n const start = getFirstKeyStartProps(prev);\n start.push(this.sourceToken);\n return {\n type: 'block-map',\n offset: this.offset,\n indent: this.indent,\n items: [{ start, explicitKey: true }]\n };\n }\n case 'map-value-ind': {\n this.onKeyLine = true;\n const prev = getPrevProps(parent);\n const start = getFirstKeyStartProps(prev);\n return {\n type: 'block-map',\n offset: this.offset,\n indent: this.indent,\n items: [{ start, key: null, sep: [this.sourceToken] }]\n };\n }\n }\n return null;\n }\n atIndentedComment(start, indent) {\n if (this.type !== 'comment')\n return false;\n if (this.indent <= indent)\n return false;\n return start.every(st => st.type === 'newline' || st.type === 'space');\n }\n *documentEnd(docEnd) {\n if (this.type !== 'doc-mode') {\n if (docEnd.end)\n docEnd.end.push(this.sourceToken);\n else\n docEnd.end = [this.sourceToken];\n if (this.type === 'newline')\n yield* this.pop();\n }\n }\n *lineEnd(token) {\n switch (this.type) {\n case 'comma':\n case 'doc-start':\n case 'doc-end':\n case 'flow-seq-end':\n case 'flow-map-end':\n case 'map-value-ind':\n yield* this.pop();\n yield* this.step();\n break;\n case 'newline':\n this.onKeyLine = false;\n // fallthrough\n case 'space':\n case 'comment':\n default:\n // all other values are errors\n if (token.end)\n token.end.push(this.sourceToken);\n else\n token.end = [this.sourceToken];\n if (this.type === 'newline')\n yield* this.pop();\n }\n }\n}\n\nexports.Parser = Parser;\n","'use strict';\n\nvar composer = require('./compose/composer.js');\nvar Document = require('./doc/Document.js');\nvar errors = require('./errors.js');\nvar log = require('./log.js');\nvar identity = require('./nodes/identity.js');\nvar lineCounter = require('./parse/line-counter.js');\nvar parser = require('./parse/parser.js');\n\nfunction parseOptions(options) {\n const prettyErrors = options.prettyErrors !== false;\n const lineCounter$1 = options.lineCounter || (prettyErrors && new lineCounter.LineCounter()) || null;\n return { lineCounter: lineCounter$1, prettyErrors };\n}\n/**\n * Parse the input as a stream of YAML documents.\n *\n * Documents should be separated from each other by `...` or `---` marker lines.\n *\n * @returns If an empty `docs` array is returned, it will be of type\n * EmptyStream and contain additional stream information. In\n * TypeScript, you should use `'empty' in docs` as a type guard for it.\n */\nfunction parseAllDocuments(source, options = {}) {\n const { lineCounter, prettyErrors } = parseOptions(options);\n const parser$1 = new parser.Parser(lineCounter?.addNewLine);\n const composer$1 = new composer.Composer(options);\n const docs = Array.from(composer$1.compose(parser$1.parse(source)));\n if (prettyErrors && lineCounter)\n for (const doc of docs) {\n doc.errors.forEach(errors.prettifyError(source, lineCounter));\n doc.warnings.forEach(errors.prettifyError(source, lineCounter));\n }\n if (docs.length > 0)\n return docs;\n return Object.assign([], { empty: true }, composer$1.streamInfo());\n}\n/** Parse an input string into a single YAML.Document */\nfunction parseDocument(source, options = {}) {\n const { lineCounter, prettyErrors } = parseOptions(options);\n const parser$1 = new parser.Parser(lineCounter?.addNewLine);\n const composer$1 = new composer.Composer(options);\n // `doc` is always set by compose.end(true) at the very latest\n let doc = null;\n for (const _doc of composer$1.compose(parser$1.parse(source), true, source.length)) {\n if (!doc)\n doc = _doc;\n else if (doc.options.logLevel !== 'silent') {\n doc.errors.push(new errors.YAMLParseError(_doc.range.slice(0, 2), 'MULTIPLE_DOCS', 'Source contains multiple documents; please use YAML.parseAllDocuments()'));\n break;\n }\n }\n if (prettyErrors && lineCounter) {\n doc.errors.forEach(errors.prettifyError(source, lineCounter));\n doc.warnings.forEach(errors.prettifyError(source, lineCounter));\n }\n return doc;\n}\nfunction parse(src, reviver, options) {\n let _reviver = undefined;\n if (typeof reviver === 'function') {\n _reviver = reviver;\n }\n else if (options === undefined && reviver && typeof reviver === 'object') {\n options = reviver;\n }\n const doc = parseDocument(src, options);\n if (!doc)\n return null;\n doc.warnings.forEach(warning => log.warn(doc.options.logLevel, warning));\n if (doc.errors.length > 0) {\n if (doc.options.logLevel !== 'silent')\n throw doc.errors[0];\n else\n doc.errors = [];\n }\n return doc.toJS(Object.assign({ reviver: _reviver }, options));\n}\nfunction stringify(value, replacer, options) {\n let _replacer = null;\n if (typeof replacer === 'function' || Array.isArray(replacer)) {\n _replacer = replacer;\n }\n else if (options === undefined && replacer) {\n options = replacer;\n }\n if (typeof options === 'string')\n options = options.length;\n if (typeof options === 'number') {\n const indent = Math.round(options);\n options = indent < 1 ? undefined : indent > 8 ? { indent: 8 } : { indent };\n }\n if (value === undefined) {\n const { keepUndefined } = options ?? replacer ?? {};\n if (!keepUndefined)\n return undefined;\n }\n if (identity.isDocument(value) && !_replacer)\n return value.toString(options);\n return new Document.Document(value, _replacer, options).toString(options);\n}\n\nexports.parse = parse;\nexports.parseAllDocuments = parseAllDocuments;\nexports.parseDocument = parseDocument;\nexports.stringify = stringify;\n","'use strict';\n\nvar composer = require('./compose/composer.js');\nvar Document = require('./doc/Document.js');\nvar Schema = require('./schema/Schema.js');\nvar errors = require('./errors.js');\nvar Alias = require('./nodes/Alias.js');\nvar identity = require('./nodes/identity.js');\nvar Pair = require('./nodes/Pair.js');\nvar Scalar = require('./nodes/Scalar.js');\nvar YAMLMap = require('./nodes/YAMLMap.js');\nvar YAMLSeq = require('./nodes/YAMLSeq.js');\nvar cst = require('./parse/cst.js');\nvar lexer = require('./parse/lexer.js');\nvar lineCounter = require('./parse/line-counter.js');\nvar parser = require('./parse/parser.js');\nvar publicApi = require('./public-api.js');\nvar visit = require('./visit.js');\n\n\n\nexports.Composer = composer.Composer;\nexports.Document = Document.Document;\nexports.Schema = Schema.Schema;\nexports.YAMLError = errors.YAMLError;\nexports.YAMLParseError = errors.YAMLParseError;\nexports.YAMLWarning = errors.YAMLWarning;\nexports.Alias = Alias.Alias;\nexports.isAlias = identity.isAlias;\nexports.isCollection = identity.isCollection;\nexports.isDocument = identity.isDocument;\nexports.isMap = identity.isMap;\nexports.isNode = identity.isNode;\nexports.isPair = identity.isPair;\nexports.isScalar = identity.isScalar;\nexports.isSeq = identity.isSeq;\nexports.Pair = Pair.Pair;\nexports.Scalar = Scalar.Scalar;\nexports.YAMLMap = YAMLMap.YAMLMap;\nexports.YAMLSeq = YAMLSeq.YAMLSeq;\nexports.CST = cst;\nexports.Lexer = lexer.Lexer;\nexports.LineCounter = lineCounter.LineCounter;\nexports.Parser = parser.Parser;\nexports.parse = publicApi.parse;\nexports.parseAllDocuments = publicApi.parseAllDocuments;\nexports.parseDocument = publicApi.parseDocument;\nexports.stringify = publicApi.stringify;\nexports.visit = visit.visit;\nexports.visitAsync = visit.visitAsync;\n","\"use strict\";\n\nvar conversions = {};\nmodule.exports = conversions;\n\nfunction sign(x) {\n return x < 0 ? -1 : 1;\n}\n\nfunction evenRound(x) {\n // Round x to the nearest integer, choosing the even integer if it lies halfway between two.\n if ((x % 1) === 0.5 && (x & 1) === 0) { // [even number].5; round down (i.e. floor)\n return Math.floor(x);\n } else {\n return Math.round(x);\n }\n}\n\nfunction createNumberConversion(bitLength, typeOpts) {\n if (!typeOpts.unsigned) {\n --bitLength;\n }\n const lowerBound = typeOpts.unsigned ? 0 : -Math.pow(2, bitLength);\n const upperBound = Math.pow(2, bitLength) - 1;\n\n const moduloVal = typeOpts.moduloBitLength ? Math.pow(2, typeOpts.moduloBitLength) : Math.pow(2, bitLength);\n const moduloBound = typeOpts.moduloBitLength ? Math.pow(2, typeOpts.moduloBitLength - 1) : Math.pow(2, bitLength - 1);\n\n return function(V, opts) {\n if (!opts) opts = {};\n\n let x = +V;\n\n if (opts.enforceRange) {\n if (!Number.isFinite(x)) {\n throw new TypeError(\"Argument is not a finite number\");\n }\n\n x = sign(x) * Math.floor(Math.abs(x));\n if (x < lowerBound || x > upperBound) {\n throw new TypeError(\"Argument is not in byte range\");\n }\n\n return x;\n }\n\n if (!isNaN(x) && opts.clamp) {\n x = evenRound(x);\n\n if (x < lowerBound) x = lowerBound;\n if (x > upperBound) x = upperBound;\n return x;\n }\n\n if (!Number.isFinite(x) || x === 0) {\n return 0;\n }\n\n x = sign(x) * Math.floor(Math.abs(x));\n x = x % moduloVal;\n\n if (!typeOpts.unsigned && x >= moduloBound) {\n return x - moduloVal;\n } else if (typeOpts.unsigned) {\n if (x < 0) {\n x += moduloVal;\n } else if (x === -0) { // don't return negative zero\n return 0;\n }\n }\n\n return x;\n }\n}\n\nconversions[\"void\"] = function () {\n return undefined;\n};\n\nconversions[\"boolean\"] = function (val) {\n return !!val;\n};\n\nconversions[\"byte\"] = createNumberConversion(8, { unsigned: false });\nconversions[\"octet\"] = createNumberConversion(8, { unsigned: true });\n\nconversions[\"short\"] = createNumberConversion(16, { unsigned: false });\nconversions[\"unsigned short\"] = createNumberConversion(16, { unsigned: true });\n\nconversions[\"long\"] = createNumberConversion(32, { unsigned: false });\nconversions[\"unsigned long\"] = createNumberConversion(32, { unsigned: true });\n\nconversions[\"long long\"] = createNumberConversion(32, { unsigned: false, moduloBitLength: 64 });\nconversions[\"unsigned long long\"] = createNumberConversion(32, { unsigned: true, moduloBitLength: 64 });\n\nconversions[\"double\"] = function (V) {\n const x = +V;\n\n if (!Number.isFinite(x)) {\n throw new TypeError(\"Argument is not a finite floating-point value\");\n }\n\n return x;\n};\n\nconversions[\"unrestricted double\"] = function (V) {\n const x = +V;\n\n if (isNaN(x)) {\n throw new TypeError(\"Argument is NaN\");\n }\n\n return x;\n};\n\n// not quite valid, but good enough for JS\nconversions[\"float\"] = conversions[\"double\"];\nconversions[\"unrestricted float\"] = conversions[\"unrestricted double\"];\n\nconversions[\"DOMString\"] = function (V, opts) {\n if (!opts) opts = {};\n\n if (opts.treatNullAsEmptyString && V === null) {\n return \"\";\n }\n\n return String(V);\n};\n\nconversions[\"ByteString\"] = function (V, opts) {\n const x = String(V);\n let c = undefined;\n for (let i = 0; (c = x.codePointAt(i)) !== undefined; ++i) {\n if (c > 255) {\n throw new TypeError(\"Argument is not a valid bytestring\");\n }\n }\n\n return x;\n};\n\nconversions[\"USVString\"] = function (V) {\n const S = String(V);\n const n = S.length;\n const U = [];\n for (let i = 0; i < n; ++i) {\n const c = S.charCodeAt(i);\n if (c < 0xD800 || c > 0xDFFF) {\n U.push(String.fromCodePoint(c));\n } else if (0xDC00 <= c && c <= 0xDFFF) {\n U.push(String.fromCodePoint(0xFFFD));\n } else {\n if (i === n - 1) {\n U.push(String.fromCodePoint(0xFFFD));\n } else {\n const d = S.charCodeAt(i + 1);\n if (0xDC00 <= d && d <= 0xDFFF) {\n const a = c & 0x3FF;\n const b = d & 0x3FF;\n U.push(String.fromCodePoint((2 << 15) + (2 << 9) * a + b));\n ++i;\n } else {\n U.push(String.fromCodePoint(0xFFFD));\n }\n }\n }\n }\n\n return U.join('');\n};\n\nconversions[\"Date\"] = function (V, opts) {\n if (!(V instanceof Date)) {\n throw new TypeError(\"Argument is not a Date object\");\n }\n if (isNaN(V)) {\n return undefined;\n }\n\n return V;\n};\n\nconversions[\"RegExp\"] = function (V, opts) {\n if (!(V instanceof RegExp)) {\n V = new RegExp(V);\n }\n\n return V;\n};\n","\"use strict\";\n\nmodule.exports.mixin = function mixin(target, source) {\n const keys = Object.getOwnPropertyNames(source);\n for (let i = 0; i < keys.length; ++i) {\n Object.defineProperty(target, keys[i], Object.getOwnPropertyDescriptor(source, keys[i]));\n }\n};\n\nmodule.exports.wrapperSymbol = Symbol(\"wrapper\");\nmodule.exports.implSymbol = Symbol(\"impl\");\n\nmodule.exports.wrapperForImpl = function (impl) {\n return impl[module.exports.wrapperSymbol];\n};\n\nmodule.exports.implForWrapper = function (wrapper) {\n return wrapper[module.exports.implSymbol];\n};\n\n","[[[0,44],\"disallowed_STD3_valid\"],[[45,46],\"valid\"],[[47,47],\"disallowed_STD3_valid\"],[[48,57],\"valid\"],[[58,64],\"disallowed_STD3_valid\"],[[65,65],\"mapped\",[97]],[[66,66],\"mapped\",[98]],[[67,67],\"mapped\",[99]],[[68,68],\"mapped\",[100]],[[69,69],\"mapped\",[101]],[[70,70],\"mapped\",[102]],[[71,71],\"mapped\",[103]],[[72,72],\"mapped\",[104]],[[73,73],\"mapped\",[105]],[[74,74],\"mapped\",[106]],[[75,75],\"mapped\",[107]],[[76,76],\"mapped\",[108]],[[77,77],\"mapped\",[109]],[[78,78],\"mapped\",[110]],[[79,79],\"mapped\",[111]],[[80,80],\"mapped\",[112]],[[81,81],\"mapped\",[113]],[[82,82],\"mapped\",[114]],[[83,83],\"mapped\",[115]],[[84,84],\"mapped\",[116]],[[85,85],\"mapped\",[117]],[[86,86],\"mapped\",[118]],[[87,87],\"mapped\",[119]],[[88,88],\"mapped\",[120]],[[89,89],\"mapped\",[121]],[[90,90],\"mapped\",[122]],[[91,96],\"disallowed_STD3_valid\"],[[97,122],\"valid\"],[[123,127],\"disallowed_STD3_valid\"],[[128,159],\"disallowed\"],[[160,160],\"disallowed_STD3_mapped\",[32]],[[161,167],\"valid\",[],\"NV8\"],[[168,168],\"disallowed_STD3_mapped\",[32,776]],[[169,169],\"valid\",[],\"NV8\"],[[170,170],\"mapped\",[97]],[[171,172],\"valid\",[],\"NV8\"],[[173,173],\"ignored\"],[[174,174],\"valid\",[],\"NV8\"],[[175,175],\"disallowed_STD3_mapped\",[32,772]],[[176,177],\"valid\",[],\"NV8\"],[[178,178],\"mapped\",[50]],[[179,179],\"mapped\",[51]],[[180,180],\"disallowed_STD3_mapped\",[32,769]],[[181,181],\"mapped\",[956]],[[182,182],\"valid\",[],\"NV8\"],[[183,183],\"valid\"],[[184,184],\"disallowed_STD3_mapped\",[32,807]],[[185,185],\"mapped\",[49]],[[186,186],\"mapped\",[111]],[[187,187],\"valid\",[],\"NV8\"],[[188,188],\"mapped\",[49,8260,52]],[[189,189],\"mapped\",[49,8260,50]],[[190,190],\"mapped\",[51,8260,52]],[[191,191],\"valid\",[],\"NV8\"],[[192,192],\"mapped\",[224]],[[193,193],\"mapped\",[225]],[[194,194],\"mapped\",[226]],[[195,195],\"mapped\",[227]],[[196,196],\"mapped\",[228]],[[197,197],\"mapped\",[229]],[[198,198],\"mapped\",[230]],[[199,199],\"mapped\",[231]],[[200,200],\"mapped\",[232]],[[201,201],\"mapped\",[233]],[[202,202],\"mapped\",[234]],[[203,203],\"mapped\",[235]],[[204,204],\"mapped\",[236]],[[205,205],\"mapped\",[237]],[[206,206],\"mapped\",[238]],[[207,207],\"mapped\",[239]],[[208,208],\"mapped\",[240]],[[209,209],\"mapped\",[241]],[[210,210],\"mapped\",[242]],[[211,211],\"mapped\",[243]],[[212,212],\"mapped\",[244]],[[213,213],\"mapped\",[245]],[[214,214],\"mapped\",[246]],[[215,215],\"valid\",[],\"NV8\"],[[216,216],\"mapped\",[248]],[[217,217],\"mapped\",[249]],[[218,218],\"mapped\",[250]],[[219,219],\"mapped\",[251]],[[220,220],\"mapped\",[252]],[[221,221],\"mapped\",[253]],[[222,222],\"mapped\",[254]],[[223,223],\"deviation\",[115,115]],[[224,246],\"valid\"],[[247,247],\"valid\",[],\"NV8\"],[[248,255],\"valid\"],[[256,256],\"mapped\",[257]],[[257,257],\"valid\"],[[258,258],\"mapped\",[259]],[[259,259],\"valid\"],[[260,260],\"mapped\",[261]],[[261,261],\"valid\"],[[262,262],\"mapped\",[263]],[[263,263],\"valid\"],[[264,264],\"mapped\",[265]],[[265,265],\"valid\"],[[266,266],\"mapped\",[267]],[[267,267],\"valid\"],[[268,268],\"mapped\",[269]],[[269,269],\"valid\"],[[270,270],\"mapped\",[271]],[[271,271],\"valid\"],[[272,272],\"mapped\",[273]],[[273,273],\"valid\"],[[274,274],\"mapped\",[275]],[[275,275],\"valid\"],[[276,276],\"mapped\",[277]],[[277,277],\"valid\"],[[278,278],\"mapped\",[279]],[[279,279],\"valid\"],[[280,280],\"mapped\",[281]],[[281,281],\"valid\"],[[282,282],\"mapped\",[283]],[[283,283],\"valid\"],[[284,284],\"mapped\",[285]],[[285,285],\"valid\"],[[286,286],\"mapped\",[287]],[[287,287],\"valid\"],[[288,288],\"mapped\",[289]],[[289,289],\"valid\"],[[290,290],\"mapped\",[291]],[[291,291],\"valid\"],[[292,292],\"mapped\",[293]],[[293,293],\"valid\"],[[294,294],\"mapped\",[295]],[[295,295],\"valid\"],[[296,296],\"mapped\",[297]],[[297,297],\"valid\"],[[298,298],\"mapped\",[299]],[[299,299],\"valid\"],[[300,300],\"mapped\",[301]],[[301,301],\"valid\"],[[302,302],\"mapped\",[303]],[[303,303],\"valid\"],[[304,304],\"mapped\",[105,775]],[[305,305],\"valid\"],[[306,307],\"mapped\",[105,106]],[[308,308],\"mapped\",[309]],[[309,309],\"valid\"],[[310,310],\"mapped\",[311]],[[311,312],\"valid\"],[[313,313],\"mapped\",[314]],[[314,314],\"valid\"],[[315,315],\"mapped\",[316]],[[316,316],\"valid\"],[[317,317],\"mapped\",[318]],[[318,318],\"valid\"],[[319,320],\"mapped\",[108,183]],[[321,321],\"mapped\",[322]],[[322,322],\"valid\"],[[323,323],\"mapped\",[324]],[[324,324],\"valid\"],[[325,325],\"mapped\",[326]],[[326,326],\"valid\"],[[327,327],\"mapped\",[328]],[[328,328],\"valid\"],[[329,329],\"mapped\",[700,110]],[[330,330],\"mapped\",[331]],[[331,331],\"valid\"],[[332,332],\"mapped\",[333]],[[333,333],\"valid\"],[[334,334],\"mapped\",[335]],[[335,335],\"valid\"],[[336,336],\"mapped\",[337]],[[337,337],\"valid\"],[[338,338],\"mapped\",[339]],[[339,339],\"valid\"],[[340,340],\"mapped\",[341]],[[341,341],\"valid\"],[[342,342],\"mapped\",[343]],[[343,343],\"valid\"],[[344,344],\"mapped\",[345]],[[345,345],\"valid\"],[[346,346],\"mapped\",[347]],[[347,347],\"valid\"],[[348,348],\"mapped\",[349]],[[349,349],\"valid\"],[[350,350],\"mapped\",[351]],[[351,351],\"valid\"],[[352,352],\"mapped\",[353]],[[353,353],\"valid\"],[[354,354],\"mapped\",[355]],[[355,355],\"valid\"],[[356,356],\"mapped\",[357]],[[357,357],\"valid\"],[[358,358],\"mapped\",[359]],[[359,359],\"valid\"],[[360,360],\"mapped\",[361]],[[361,361],\"valid\"],[[362,362],\"mapped\",[363]],[[363,363],\"valid\"],[[364,364],\"mapped\",[365]],[[365,365],\"valid\"],[[366,366],\"mapped\",[367]],[[367,367],\"valid\"],[[368,368],\"mapped\",[369]],[[369,369],\"valid\"],[[370,370],\"mapped\",[371]],[[371,371],\"valid\"],[[372,372],\"mapped\",[373]],[[373,373],\"valid\"],[[374,374],\"mapped\",[375]],[[375,375],\"valid\"],[[376,376],\"mapped\",[255]],[[377,377],\"mapped\",[378]],[[378,378],\"valid\"],[[379,379],\"mapped\",[380]],[[380,380],\"valid\"],[[381,381],\"mapped\",[382]],[[382,382],\"valid\"],[[383,383],\"mapped\",[115]],[[384,384],\"valid\"],[[385,385],\"mapped\",[595]],[[386,386],\"mapped\",[387]],[[387,387],\"valid\"],[[388,388],\"mapped\",[389]],[[389,389],\"valid\"],[[390,390],\"mapped\",[596]],[[391,391],\"mapped\",[392]],[[392,392],\"valid\"],[[393,393],\"mapped\",[598]],[[394,394],\"mapped\",[599]],[[395,395],\"mapped\",[396]],[[396,397],\"valid\"],[[398,398],\"mapped\",[477]],[[399,399],\"mapped\",[601]],[[400,400],\"mapped\",[603]],[[401,401],\"mapped\",[402]],[[402,402],\"valid\"],[[403,403],\"mapped\",[608]],[[404,404],\"mapped\",[611]],[[405,405],\"valid\"],[[406,406],\"mapped\",[617]],[[407,407],\"mapped\",[616]],[[408,408],\"mapped\",[409]],[[409,411],\"valid\"],[[412,412],\"mapped\",[623]],[[413,413],\"mapped\",[626]],[[414,414],\"valid\"],[[415,415],\"mapped\",[629]],[[416,416],\"mapped\",[417]],[[417,417],\"valid\"],[[418,418],\"mapped\",[419]],[[419,419],\"valid\"],[[420,420],\"mapped\",[421]],[[421,421],\"valid\"],[[422,422],\"mapped\",[640]],[[423,423],\"mapped\",[424]],[[424,424],\"valid\"],[[425,425],\"mapped\",[643]],[[426,427],\"valid\"],[[428,428],\"mapped\",[429]],[[429,429],\"valid\"],[[430,430],\"mapped\",[648]],[[431,431],\"mapped\",[432]],[[432,432],\"valid\"],[[433,433],\"mapped\",[650]],[[434,434],\"mapped\",[651]],[[435,435],\"mapped\",[436]],[[436,436],\"valid\"],[[437,437],\"mapped\",[438]],[[438,438],\"valid\"],[[439,439],\"mapped\",[658]],[[440,440],\"mapped\",[441]],[[441,443],\"valid\"],[[444,444],\"mapped\",[445]],[[445,451],\"valid\"],[[452,454],\"mapped\",[100,382]],[[455,457],\"mapped\",[108,106]],[[458,460],\"mapped\",[110,106]],[[461,461],\"mapped\",[462]],[[462,462],\"valid\"],[[463,463],\"mapped\",[464]],[[464,464],\"valid\"],[[465,465],\"mapped\",[466]],[[466,466],\"valid\"],[[467,467],\"mapped\",[468]],[[468,468],\"valid\"],[[469,469],\"mapped\",[470]],[[470,470],\"valid\"],[[471,471],\"mapped\",[472]],[[472,472],\"valid\"],[[473,473],\"mapped\",[474]],[[474,474],\"valid\"],[[475,475],\"mapped\",[476]],[[476,477],\"valid\"],[[478,478],\"mapped\",[479]],[[479,479],\"valid\"],[[480,480],\"mapped\",[481]],[[481,481],\"valid\"],[[482,482],\"mapped\",[483]],[[483,483],\"valid\"],[[484,484],\"mapped\",[485]],[[485,485],\"valid\"],[[486,486],\"mapped\",[487]],[[487,487],\"valid\"],[[488,488],\"mapped\",[489]],[[489,489],\"valid\"],[[490,490],\"mapped\",[491]],[[491,491],\"valid\"],[[492,492],\"mapped\",[493]],[[493,493],\"valid\"],[[494,494],\"mapped\",[495]],[[495,496],\"valid\"],[[497,499],\"mapped\",[100,122]],[[500,500],\"mapped\",[501]],[[501,501],\"valid\"],[[502,502],\"mapped\",[405]],[[503,503],\"mapped\",[447]],[[504,504],\"mapped\",[505]],[[505,505],\"valid\"],[[506,506],\"mapped\",[507]],[[507,507],\"valid\"],[[508,508],\"mapped\",[509]],[[509,509],\"valid\"],[[510,510],\"mapped\",[511]],[[511,511],\"valid\"],[[512,512],\"mapped\",[513]],[[513,513],\"valid\"],[[514,514],\"mapped\",[515]],[[515,515],\"valid\"],[[516,516],\"mapped\",[517]],[[517,517],\"valid\"],[[518,518],\"mapped\",[519]],[[519,519],\"valid\"],[[520,520],\"mapped\",[521]],[[521,521],\"valid\"],[[522,522],\"mapped\",[523]],[[523,523],\"valid\"],[[524,524],\"mapped\",[525]],[[525,525],\"valid\"],[[526,526],\"mapped\",[527]],[[527,527],\"valid\"],[[528,528],\"mapped\",[529]],[[529,529],\"valid\"],[[530,530],\"mapped\",[531]],[[531,531],\"valid\"],[[532,532],\"mapped\",[533]],[[533,533],\"valid\"],[[534,534],\"mapped\",[535]],[[535,535],\"valid\"],[[536,536],\"mapped\",[537]],[[537,537],\"valid\"],[[538,538],\"mapped\",[539]],[[539,539],\"valid\"],[[540,540],\"mapped\",[541]],[[541,541],\"valid\"],[[542,542],\"mapped\",[543]],[[543,543],\"valid\"],[[544,544],\"mapped\",[414]],[[545,545],\"valid\"],[[546,546],\"mapped\",[547]],[[547,547],\"valid\"],[[548,548],\"mapped\",[549]],[[549,549],\"valid\"],[[550,550],\"mapped\",[551]],[[551,551],\"valid\"],[[552,552],\"mapped\",[553]],[[553,553],\"valid\"],[[554,554],\"mapped\",[555]],[[555,555],\"valid\"],[[556,556],\"mapped\",[557]],[[557,557],\"valid\"],[[558,558],\"mapped\",[559]],[[559,559],\"valid\"],[[560,560],\"mapped\",[561]],[[561,561],\"valid\"],[[562,562],\"mapped\",[563]],[[563,563],\"valid\"],[[564,566],\"valid\"],[[567,569],\"valid\"],[[570,570],\"mapped\",[11365]],[[571,571],\"mapped\",[572]],[[572,572],\"valid\"],[[573,573],\"mapped\",[410]],[[574,574],\"mapped\",[11366]],[[575,576],\"valid\"],[[577,577],\"mapped\",[578]],[[578,578],\"valid\"],[[579,579],\"mapped\",[384]],[[580,580],\"mapped\",[649]],[[581,581],\"mapped\",[652]],[[582,582],\"mapped\",[583]],[[583,583],\"valid\"],[[584,584],\"mapped\",[585]],[[585,585],\"valid\"],[[586,586],\"mapped\",[587]],[[587,587],\"valid\"],[[588,588],\"mapped\",[589]],[[589,589],\"valid\"],[[590,590],\"mapped\",[591]],[[591,591],\"valid\"],[[592,680],\"valid\"],[[681,685],\"valid\"],[[686,687],\"valid\"],[[688,688],\"mapped\",[104]],[[689,689],\"mapped\",[614]],[[690,690],\"mapped\",[106]],[[691,691],\"mapped\",[114]],[[692,692],\"mapped\",[633]],[[693,693],\"mapped\",[635]],[[694,694],\"mapped\",[641]],[[695,695],\"mapped\",[119]],[[696,696],\"mapped\",[121]],[[697,705],\"valid\"],[[706,709],\"valid\",[],\"NV8\"],[[710,721],\"valid\"],[[722,727],\"valid\",[],\"NV8\"],[[728,728],\"disallowed_STD3_mapped\",[32,774]],[[729,729],\"disallowed_STD3_mapped\",[32,775]],[[730,730],\"disallowed_STD3_mapped\",[32,778]],[[731,731],\"disallowed_STD3_mapped\",[32,808]],[[732,732],\"disallowed_STD3_mapped\",[32,771]],[[733,733],\"disallowed_STD3_mapped\",[32,779]],[[734,734],\"valid\",[],\"NV8\"],[[735,735],\"valid\",[],\"NV8\"],[[736,736],\"mapped\",[611]],[[737,737],\"mapped\",[108]],[[738,738],\"mapped\",[115]],[[739,739],\"mapped\",[120]],[[740,740],\"mapped\",[661]],[[741,745],\"valid\",[],\"NV8\"],[[746,747],\"valid\",[],\"NV8\"],[[748,748],\"valid\"],[[749,749],\"valid\",[],\"NV8\"],[[750,750],\"valid\"],[[751,767],\"valid\",[],\"NV8\"],[[768,831],\"valid\"],[[832,832],\"mapped\",[768]],[[833,833],\"mapped\",[769]],[[834,834],\"valid\"],[[835,835],\"mapped\",[787]],[[836,836],\"mapped\",[776,769]],[[837,837],\"mapped\",[953]],[[838,846],\"valid\"],[[847,847],\"ignored\"],[[848,855],\"valid\"],[[856,860],\"valid\"],[[861,863],\"valid\"],[[864,865],\"valid\"],[[866,866],\"valid\"],[[867,879],\"valid\"],[[880,880],\"mapped\",[881]],[[881,881],\"valid\"],[[882,882],\"mapped\",[883]],[[883,883],\"valid\"],[[884,884],\"mapped\",[697]],[[885,885],\"valid\"],[[886,886],\"mapped\",[887]],[[887,887],\"valid\"],[[888,889],\"disallowed\"],[[890,890],\"disallowed_STD3_mapped\",[32,953]],[[891,893],\"valid\"],[[894,894],\"disallowed_STD3_mapped\",[59]],[[895,895],\"mapped\",[1011]],[[896,899],\"disallowed\"],[[900,900],\"disallowed_STD3_mapped\",[32,769]],[[901,901],\"disallowed_STD3_mapped\",[32,776,769]],[[902,902],\"mapped\",[940]],[[903,903],\"mapped\",[183]],[[904,904],\"mapped\",[941]],[[905,905],\"mapped\",[942]],[[906,906],\"mapped\",[943]],[[907,907],\"disallowed\"],[[908,908],\"mapped\",[972]],[[909,909],\"disallowed\"],[[910,910],\"mapped\",[973]],[[911,911],\"mapped\",[974]],[[912,912],\"valid\"],[[913,913],\"mapped\",[945]],[[914,914],\"mapped\",[946]],[[915,915],\"mapped\",[947]],[[916,916],\"mapped\",[948]],[[917,917],\"mapped\",[949]],[[918,918],\"mapped\",[950]],[[919,919],\"mapped\",[951]],[[920,920],\"mapped\",[952]],[[921,921],\"mapped\",[953]],[[922,922],\"mapped\",[954]],[[923,923],\"mapped\",[955]],[[924,924],\"mapped\",[956]],[[925,925],\"mapped\",[957]],[[926,926],\"mapped\",[958]],[[927,927],\"mapped\",[959]],[[928,928],\"mapped\",[960]],[[929,929],\"mapped\",[961]],[[930,930],\"disallowed\"],[[931,931],\"mapped\",[963]],[[932,932],\"mapped\",[964]],[[933,933],\"mapped\",[965]],[[934,934],\"mapped\",[966]],[[935,935],\"mapped\",[967]],[[936,936],\"mapped\",[968]],[[937,937],\"mapped\",[969]],[[938,938],\"mapped\",[970]],[[939,939],\"mapped\",[971]],[[940,961],\"valid\"],[[962,962],\"deviation\",[963]],[[963,974],\"valid\"],[[975,975],\"mapped\",[983]],[[976,976],\"mapped\",[946]],[[977,977],\"mapped\",[952]],[[978,978],\"mapped\",[965]],[[979,979],\"mapped\",[973]],[[980,980],\"mapped\",[971]],[[981,981],\"mapped\",[966]],[[982,982],\"mapped\",[960]],[[983,983],\"valid\"],[[984,984],\"mapped\",[985]],[[985,985],\"valid\"],[[986,986],\"mapped\",[987]],[[987,987],\"valid\"],[[988,988],\"mapped\",[989]],[[989,989],\"valid\"],[[990,990],\"mapped\",[991]],[[991,991],\"valid\"],[[992,992],\"mapped\",[993]],[[993,993],\"valid\"],[[994,994],\"mapped\",[995]],[[995,995],\"valid\"],[[996,996],\"mapped\",[997]],[[997,997],\"valid\"],[[998,998],\"mapped\",[999]],[[999,999],\"valid\"],[[1000,1000],\"mapped\",[1001]],[[1001,1001],\"valid\"],[[1002,1002],\"mapped\",[1003]],[[1003,1003],\"valid\"],[[1004,1004],\"mapped\",[1005]],[[1005,1005],\"valid\"],[[1006,1006],\"mapped\",[1007]],[[1007,1007],\"valid\"],[[1008,1008],\"mapped\",[954]],[[1009,1009],\"mapped\",[961]],[[1010,1010],\"mapped\",[963]],[[1011,1011],\"valid\"],[[1012,1012],\"mapped\",[952]],[[1013,1013],\"mapped\",[949]],[[1014,1014],\"valid\",[],\"NV8\"],[[1015,1015],\"mapped\",[1016]],[[1016,1016],\"valid\"],[[1017,1017],\"mapped\",[963]],[[1018,1018],\"mapped\",[1019]],[[1019,1019],\"valid\"],[[1020,1020],\"valid\"],[[1021,1021],\"mapped\",[891]],[[1022,1022],\"mapped\",[892]],[[1023,1023],\"mapped\",[893]],[[1024,1024],\"mapped\",[1104]],[[1025,1025],\"mapped\",[1105]],[[1026,1026],\"mapped\",[1106]],[[1027,1027],\"mapped\",[1107]],[[1028,1028],\"mapped\",[1108]],[[1029,1029],\"mapped\",[1109]],[[1030,1030],\"mapped\",[1110]],[[1031,1031],\"mapped\",[1111]],[[1032,1032],\"mapped\",[1112]],[[1033,1033],\"mapped\",[1113]],[[1034,1034],\"mapped\",[1114]],[[1035,1035],\"mapped\",[1115]],[[1036,1036],\"mapped\",[1116]],[[1037,1037],\"mapped\",[1117]],[[1038,1038],\"mapped\",[1118]],[[1039,1039],\"mapped\",[1119]],[[1040,1040],\"mapped\",[1072]],[[1041,1041],\"mapped\",[1073]],[[1042,1042],\"mapped\",[1074]],[[1043,1043],\"mapped\",[1075]],[[1044,1044],\"mapped\",[1076]],[[1045,1045],\"mapped\",[1077]],[[1046,1046],\"mapped\",[1078]],[[1047,1047],\"mapped\",[1079]],[[1048,1048],\"mapped\",[1080]],[[1049,1049],\"mapped\",[1081]],[[1050,1050],\"mapped\",[1082]],[[1051,1051],\"mapped\",[1083]],[[1052,1052],\"mapped\",[1084]],[[1053,1053],\"mapped\",[1085]],[[1054,1054],\"mapped\",[1086]],[[1055,1055],\"mapped\",[1087]],[[1056,1056],\"mapped\",[1088]],[[1057,1057],\"mapped\",[1089]],[[1058,1058],\"mapped\",[1090]],[[1059,1059],\"mapped\",[1091]],[[1060,1060],\"mapped\",[1092]],[[1061,1061],\"mapped\",[1093]],[[1062,1062],\"mapped\",[1094]],[[1063,1063],\"mapped\",[1095]],[[1064,1064],\"mapped\",[1096]],[[1065,1065],\"mapped\",[1097]],[[1066,1066],\"mapped\",[1098]],[[1067,1067],\"mapped\",[1099]],[[1068,1068],\"mapped\",[1100]],[[1069,1069],\"mapped\",[1101]],[[1070,1070],\"mapped\",[1102]],[[1071,1071],\"mapped\",[1103]],[[1072,1103],\"valid\"],[[1104,1104],\"valid\"],[[1105,1116],\"valid\"],[[1117,1117],\"valid\"],[[1118,1119],\"valid\"],[[1120,1120],\"mapped\",[1121]],[[1121,1121],\"valid\"],[[1122,1122],\"mapped\",[1123]],[[1123,1123],\"valid\"],[[1124,1124],\"mapped\",[1125]],[[1125,1125],\"valid\"],[[1126,1126],\"mapped\",[1127]],[[1127,1127],\"valid\"],[[1128,1128],\"mapped\",[1129]],[[1129,1129],\"valid\"],[[1130,1130],\"mapped\",[1131]],[[1131,1131],\"valid\"],[[1132,1132],\"mapped\",[1133]],[[1133,1133],\"valid\"],[[1134,1134],\"mapped\",[1135]],[[1135,1135],\"valid\"],[[1136,1136],\"mapped\",[1137]],[[1137,1137],\"valid\"],[[1138,1138],\"mapped\",[1139]],[[1139,1139],\"valid\"],[[1140,1140],\"mapped\",[1141]],[[1141,1141],\"valid\"],[[1142,1142],\"mapped\",[1143]],[[1143,1143],\"valid\"],[[1144,1144],\"mapped\",[1145]],[[1145,1145],\"valid\"],[[1146,1146],\"mapped\",[1147]],[[1147,1147],\"valid\"],[[1148,1148],\"mapped\",[1149]],[[1149,1149],\"valid\"],[[1150,1150],\"mapped\",[1151]],[[1151,1151],\"valid\"],[[1152,1152],\"mapped\",[1153]],[[1153,1153],\"valid\"],[[1154,1154],\"valid\",[],\"NV8\"],[[1155,1158],\"valid\"],[[1159,1159],\"valid\"],[[1160,1161],\"valid\",[],\"NV8\"],[[1162,1162],\"mapped\",[1163]],[[1163,1163],\"valid\"],[[1164,1164],\"mapped\",[1165]],[[1165,1165],\"valid\"],[[1166,1166],\"mapped\",[1167]],[[1167,1167],\"valid\"],[[1168,1168],\"mapped\",[1169]],[[1169,1169],\"valid\"],[[1170,1170],\"mapped\",[1171]],[[1171,1171],\"valid\"],[[1172,1172],\"mapped\",[1173]],[[1173,1173],\"valid\"],[[1174,1174],\"mapped\",[1175]],[[1175,1175],\"valid\"],[[1176,1176],\"mapped\",[1177]],[[1177,1177],\"valid\"],[[1178,1178],\"mapped\",[1179]],[[1179,1179],\"valid\"],[[1180,1180],\"mapped\",[1181]],[[1181,1181],\"valid\"],[[1182,1182],\"mapped\",[1183]],[[1183,1183],\"valid\"],[[1184,1184],\"mapped\",[1185]],[[1185,1185],\"valid\"],[[1186,1186],\"mapped\",[1187]],[[1187,1187],\"valid\"],[[1188,1188],\"mapped\",[1189]],[[1189,1189],\"valid\"],[[1190,1190],\"mapped\",[1191]],[[1191,1191],\"valid\"],[[1192,1192],\"mapped\",[1193]],[[1193,1193],\"valid\"],[[1194,1194],\"mapped\",[1195]],[[1195,1195],\"valid\"],[[1196,1196],\"mapped\",[1197]],[[1197,1197],\"valid\"],[[1198,1198],\"mapped\",[1199]],[[1199,1199],\"valid\"],[[1200,1200],\"mapped\",[1201]],[[1201,1201],\"valid\"],[[1202,1202],\"mapped\",[1203]],[[1203,1203],\"valid\"],[[1204,1204],\"mapped\",[1205]],[[1205,1205],\"valid\"],[[1206,1206],\"mapped\",[1207]],[[1207,1207],\"valid\"],[[1208,1208],\"mapped\",[1209]],[[1209,1209],\"valid\"],[[1210,1210],\"mapped\",[1211]],[[1211,1211],\"valid\"],[[1212,1212],\"mapped\",[1213]],[[1213,1213],\"valid\"],[[1214,1214],\"mapped\",[1215]],[[1215,1215],\"valid\"],[[1216,1216],\"disallowed\"],[[1217,1217],\"mapped\",[1218]],[[1218,1218],\"valid\"],[[1219,1219],\"mapped\",[1220]],[[1220,1220],\"valid\"],[[1221,1221],\"mapped\",[1222]],[[1222,1222],\"valid\"],[[1223,1223],\"mapped\",[1224]],[[1224,1224],\"valid\"],[[1225,1225],\"mapped\",[1226]],[[1226,1226],\"valid\"],[[1227,1227],\"mapped\",[1228]],[[1228,1228],\"valid\"],[[1229,1229],\"mapped\",[1230]],[[1230,1230],\"valid\"],[[1231,1231],\"valid\"],[[1232,1232],\"mapped\",[1233]],[[1233,1233],\"valid\"],[[1234,1234],\"mapped\",[1235]],[[1235,1235],\"valid\"],[[1236,1236],\"mapped\",[1237]],[[1237,1237],\"valid\"],[[1238,1238],\"mapped\",[1239]],[[1239,1239],\"valid\"],[[1240,1240],\"mapped\",[1241]],[[1241,1241],\"valid\"],[[1242,1242],\"mapped\",[1243]],[[1243,1243],\"valid\"],[[1244,1244],\"mapped\",[1245]],[[1245,1245],\"valid\"],[[1246,1246],\"mapped\",[1247]],[[1247,1247],\"valid\"],[[1248,1248],\"mapped\",[1249]],[[1249,1249],\"valid\"],[[1250,1250],\"mapped\",[1251]],[[1251,1251],\"valid\"],[[1252,1252],\"mapped\",[1253]],[[1253,1253],\"valid\"],[[1254,1254],\"mapped\",[1255]],[[1255,1255],\"valid\"],[[1256,1256],\"mapped\",[1257]],[[1257,1257],\"valid\"],[[1258,1258],\"mapped\",[1259]],[[1259,1259],\"valid\"],[[1260,1260],\"mapped\",[1261]],[[1261,1261],\"valid\"],[[1262,1262],\"mapped\",[1263]],[[1263,1263],\"valid\"],[[1264,1264],\"mapped\",[1265]],[[1265,1265],\"valid\"],[[1266,1266],\"mapped\",[1267]],[[1267,1267],\"valid\"],[[1268,1268],\"mapped\",[1269]],[[1269,1269],\"valid\"],[[1270,1270],\"mapped\",[1271]],[[1271,1271],\"valid\"],[[1272,1272],\"mapped\",[1273]],[[1273,1273],\"valid\"],[[1274,1274],\"mapped\",[1275]],[[1275,1275],\"valid\"],[[1276,1276],\"mapped\",[1277]],[[1277,1277],\"valid\"],[[1278,1278],\"mapped\",[1279]],[[1279,1279],\"valid\"],[[1280,1280],\"mapped\",[1281]],[[1281,1281],\"valid\"],[[1282,1282],\"mapped\",[1283]],[[1283,1283],\"valid\"],[[1284,1284],\"mapped\",[1285]],[[1285,1285],\"valid\"],[[1286,1286],\"mapped\",[1287]],[[1287,1287],\"valid\"],[[1288,1288],\"mapped\",[1289]],[[1289,1289],\"valid\"],[[1290,1290],\"mapped\",[1291]],[[1291,1291],\"valid\"],[[1292,1292],\"mapped\",[1293]],[[1293,1293],\"valid\"],[[1294,1294],\"mapped\",[1295]],[[1295,1295],\"valid\"],[[1296,1296],\"mapped\",[1297]],[[1297,1297],\"valid\"],[[1298,1298],\"mapped\",[1299]],[[1299,1299],\"valid\"],[[1300,1300],\"mapped\",[1301]],[[1301,1301],\"valid\"],[[1302,1302],\"mapped\",[1303]],[[1303,1303],\"valid\"],[[1304,1304],\"mapped\",[1305]],[[1305,1305],\"valid\"],[[1306,1306],\"mapped\",[1307]],[[1307,1307],\"valid\"],[[1308,1308],\"mapped\",[1309]],[[1309,1309],\"valid\"],[[1310,1310],\"mapped\",[1311]],[[1311,1311],\"valid\"],[[1312,1312],\"mapped\",[1313]],[[1313,1313],\"valid\"],[[1314,1314],\"mapped\",[1315]],[[1315,1315],\"valid\"],[[1316,1316],\"mapped\",[1317]],[[1317,1317],\"valid\"],[[1318,1318],\"mapped\",[1319]],[[1319,1319],\"valid\"],[[1320,1320],\"mapped\",[1321]],[[1321,1321],\"valid\"],[[1322,1322],\"mapped\",[1323]],[[1323,1323],\"valid\"],[[1324,1324],\"mapped\",[1325]],[[1325,1325],\"valid\"],[[1326,1326],\"mapped\",[1327]],[[1327,1327],\"valid\"],[[1328,1328],\"disallowed\"],[[1329,1329],\"mapped\",[1377]],[[1330,1330],\"mapped\",[1378]],[[1331,1331],\"mapped\",[1379]],[[1332,1332],\"mapped\",[1380]],[[1333,1333],\"mapped\",[1381]],[[1334,1334],\"mapped\",[1382]],[[1335,1335],\"mapped\",[1383]],[[1336,1336],\"mapped\",[1384]],[[1337,1337],\"mapped\",[1385]],[[1338,1338],\"mapped\",[1386]],[[1339,1339],\"mapped\",[1387]],[[1340,1340],\"mapped\",[1388]],[[1341,1341],\"mapped\",[1389]],[[1342,1342],\"mapped\",[1390]],[[1343,1343],\"mapped\",[1391]],[[1344,1344],\"mapped\",[1392]],[[1345,1345],\"mapped\",[1393]],[[1346,1346],\"mapped\",[1394]],[[1347,1347],\"mapped\",[1395]],[[1348,1348],\"mapped\",[1396]],[[1349,1349],\"mapped\",[1397]],[[1350,1350],\"mapped\",[1398]],[[1351,1351],\"mapped\",[1399]],[[1352,1352],\"mapped\",[1400]],[[1353,1353],\"mapped\",[1401]],[[1354,1354],\"mapped\",[1402]],[[1355,1355],\"mapped\",[1403]],[[1356,1356],\"mapped\",[1404]],[[1357,1357],\"mapped\",[1405]],[[1358,1358],\"mapped\",[1406]],[[1359,1359],\"mapped\",[1407]],[[1360,1360],\"mapped\",[1408]],[[1361,1361],\"mapped\",[1409]],[[1362,1362],\"mapped\",[1410]],[[1363,1363],\"mapped\",[1411]],[[1364,1364],\"mapped\",[1412]],[[1365,1365],\"mapped\",[1413]],[[1366,1366],\"mapped\",[1414]],[[1367,1368],\"disallowed\"],[[1369,1369],\"valid\"],[[1370,1375],\"valid\",[],\"NV8\"],[[1376,1376],\"disallowed\"],[[1377,1414],\"valid\"],[[1415,1415],\"mapped\",[1381,1410]],[[1416,1416],\"disallowed\"],[[1417,1417],\"valid\",[],\"NV8\"],[[1418,1418],\"valid\",[],\"NV8\"],[[1419,1420],\"disallowed\"],[[1421,1422],\"valid\",[],\"NV8\"],[[1423,1423],\"valid\",[],\"NV8\"],[[1424,1424],\"disallowed\"],[[1425,1441],\"valid\"],[[1442,1442],\"valid\"],[[1443,1455],\"valid\"],[[1456,1465],\"valid\"],[[1466,1466],\"valid\"],[[1467,1469],\"valid\"],[[1470,1470],\"valid\",[],\"NV8\"],[[1471,1471],\"valid\"],[[1472,1472],\"valid\",[],\"NV8\"],[[1473,1474],\"valid\"],[[1475,1475],\"valid\",[],\"NV8\"],[[1476,1476],\"valid\"],[[1477,1477],\"valid\"],[[1478,1478],\"valid\",[],\"NV8\"],[[1479,1479],\"valid\"],[[1480,1487],\"disallowed\"],[[1488,1514],\"valid\"],[[1515,1519],\"disallowed\"],[[1520,1524],\"valid\"],[[1525,1535],\"disallowed\"],[[1536,1539],\"disallowed\"],[[1540,1540],\"disallowed\"],[[1541,1541],\"disallowed\"],[[1542,1546],\"valid\",[],\"NV8\"],[[1547,1547],\"valid\",[],\"NV8\"],[[1548,1548],\"valid\",[],\"NV8\"],[[1549,1551],\"valid\",[],\"NV8\"],[[1552,1557],\"valid\"],[[1558,1562],\"valid\"],[[1563,1563],\"valid\",[],\"NV8\"],[[1564,1564],\"disallowed\"],[[1565,1565],\"disallowed\"],[[1566,1566],\"valid\",[],\"NV8\"],[[1567,1567],\"valid\",[],\"NV8\"],[[1568,1568],\"valid\"],[[1569,1594],\"valid\"],[[1595,1599],\"valid\"],[[1600,1600],\"valid\",[],\"NV8\"],[[1601,1618],\"valid\"],[[1619,1621],\"valid\"],[[1622,1624],\"valid\"],[[1625,1630],\"valid\"],[[1631,1631],\"valid\"],[[1632,1641],\"valid\"],[[1642,1645],\"valid\",[],\"NV8\"],[[1646,1647],\"valid\"],[[1648,1652],\"valid\"],[[1653,1653],\"mapped\",[1575,1652]],[[1654,1654],\"mapped\",[1608,1652]],[[1655,1655],\"mapped\",[1735,1652]],[[1656,1656],\"mapped\",[1610,1652]],[[1657,1719],\"valid\"],[[1720,1721],\"valid\"],[[1722,1726],\"valid\"],[[1727,1727],\"valid\"],[[1728,1742],\"valid\"],[[1743,1743],\"valid\"],[[1744,1747],\"valid\"],[[1748,1748],\"valid\",[],\"NV8\"],[[1749,1756],\"valid\"],[[1757,1757],\"disallowed\"],[[1758,1758],\"valid\",[],\"NV8\"],[[1759,1768],\"valid\"],[[1769,1769],\"valid\",[],\"NV8\"],[[1770,1773],\"valid\"],[[1774,1775],\"valid\"],[[1776,1785],\"valid\"],[[1786,1790],\"valid\"],[[1791,1791],\"valid\"],[[1792,1805],\"valid\",[],\"NV8\"],[[1806,1806],\"disallowed\"],[[1807,1807],\"disallowed\"],[[1808,1836],\"valid\"],[[1837,1839],\"valid\"],[[1840,1866],\"valid\"],[[1867,1868],\"disallowed\"],[[1869,1871],\"valid\"],[[1872,1901],\"valid\"],[[1902,1919],\"valid\"],[[1920,1968],\"valid\"],[[1969,1969],\"valid\"],[[1970,1983],\"disallowed\"],[[1984,2037],\"valid\"],[[2038,2042],\"valid\",[],\"NV8\"],[[2043,2047],\"disallowed\"],[[2048,2093],\"valid\"],[[2094,2095],\"disallowed\"],[[2096,2110],\"valid\",[],\"NV8\"],[[2111,2111],\"disallowed\"],[[2112,2139],\"valid\"],[[2140,2141],\"disallowed\"],[[2142,2142],\"valid\",[],\"NV8\"],[[2143,2207],\"disallowed\"],[[2208,2208],\"valid\"],[[2209,2209],\"valid\"],[[2210,2220],\"valid\"],[[2221,2226],\"valid\"],[[2227,2228],\"valid\"],[[2229,2274],\"disallowed\"],[[2275,2275],\"valid\"],[[2276,2302],\"valid\"],[[2303,2303],\"valid\"],[[2304,2304],\"valid\"],[[2305,2307],\"valid\"],[[2308,2308],\"valid\"],[[2309,2361],\"valid\"],[[2362,2363],\"valid\"],[[2364,2381],\"valid\"],[[2382,2382],\"valid\"],[[2383,2383],\"valid\"],[[2384,2388],\"valid\"],[[2389,2389],\"valid\"],[[2390,2391],\"valid\"],[[2392,2392],\"mapped\",[2325,2364]],[[2393,2393],\"mapped\",[2326,2364]],[[2394,2394],\"mapped\",[2327,2364]],[[2395,2395],\"mapped\",[2332,2364]],[[2396,2396],\"mapped\",[2337,2364]],[[2397,2397],\"mapped\",[2338,2364]],[[2398,2398],\"mapped\",[2347,2364]],[[2399,2399],\"mapped\",[2351,2364]],[[2400,2403],\"valid\"],[[2404,2405],\"valid\",[],\"NV8\"],[[2406,2415],\"valid\"],[[2416,2416],\"valid\",[],\"NV8\"],[[2417,2418],\"valid\"],[[2419,2423],\"valid\"],[[2424,2424],\"valid\"],[[2425,2426],\"valid\"],[[2427,2428],\"valid\"],[[2429,2429],\"valid\"],[[2430,2431],\"valid\"],[[2432,2432],\"valid\"],[[2433,2435],\"valid\"],[[2436,2436],\"disallowed\"],[[2437,2444],\"valid\"],[[2445,2446],\"disallowed\"],[[2447,2448],\"valid\"],[[2449,2450],\"disallowed\"],[[2451,2472],\"valid\"],[[2473,2473],\"disallowed\"],[[2474,2480],\"valid\"],[[2481,2481],\"disallowed\"],[[2482,2482],\"valid\"],[[2483,2485],\"disallowed\"],[[2486,2489],\"valid\"],[[2490,2491],\"disallowed\"],[[2492,2492],\"valid\"],[[2493,2493],\"valid\"],[[2494,2500],\"valid\"],[[2501,2502],\"disallowed\"],[[2503,2504],\"valid\"],[[2505,2506],\"disallowed\"],[[2507,2509],\"valid\"],[[2510,2510],\"valid\"],[[2511,2518],\"disallowed\"],[[2519,2519],\"valid\"],[[2520,2523],\"disallowed\"],[[2524,2524],\"mapped\",[2465,2492]],[[2525,2525],\"mapped\",[2466,2492]],[[2526,2526],\"disallowed\"],[[2527,2527],\"mapped\",[2479,2492]],[[2528,2531],\"valid\"],[[2532,2533],\"disallowed\"],[[2534,2545],\"valid\"],[[2546,2554],\"valid\",[],\"NV8\"],[[2555,2555],\"valid\",[],\"NV8\"],[[2556,2560],\"disallowed\"],[[2561,2561],\"valid\"],[[2562,2562],\"valid\"],[[2563,2563],\"valid\"],[[2564,2564],\"disallowed\"],[[2565,2570],\"valid\"],[[2571,2574],\"disallowed\"],[[2575,2576],\"valid\"],[[2577,2578],\"disallowed\"],[[2579,2600],\"valid\"],[[2601,2601],\"disallowed\"],[[2602,2608],\"valid\"],[[2609,2609],\"disallowed\"],[[2610,2610],\"valid\"],[[2611,2611],\"mapped\",[2610,2620]],[[2612,2612],\"disallowed\"],[[2613,2613],\"valid\"],[[2614,2614],\"mapped\",[2616,2620]],[[2615,2615],\"disallowed\"],[[2616,2617],\"valid\"],[[2618,2619],\"disallowed\"],[[2620,2620],\"valid\"],[[2621,2621],\"disallowed\"],[[2622,2626],\"valid\"],[[2627,2630],\"disallowed\"],[[2631,2632],\"valid\"],[[2633,2634],\"disallowed\"],[[2635,2637],\"valid\"],[[2638,2640],\"disallowed\"],[[2641,2641],\"valid\"],[[2642,2648],\"disallowed\"],[[2649,2649],\"mapped\",[2582,2620]],[[2650,2650],\"mapped\",[2583,2620]],[[2651,2651],\"mapped\",[2588,2620]],[[2652,2652],\"valid\"],[[2653,2653],\"disallowed\"],[[2654,2654],\"mapped\",[2603,2620]],[[2655,2661],\"disallowed\"],[[2662,2676],\"valid\"],[[2677,2677],\"valid\"],[[2678,2688],\"disallowed\"],[[2689,2691],\"valid\"],[[2692,2692],\"disallowed\"],[[2693,2699],\"valid\"],[[2700,2700],\"valid\"],[[2701,2701],\"valid\"],[[2702,2702],\"disallowed\"],[[2703,2705],\"valid\"],[[2706,2706],\"disallowed\"],[[2707,2728],\"valid\"],[[2729,2729],\"disallowed\"],[[2730,2736],\"valid\"],[[2737,2737],\"disallowed\"],[[2738,2739],\"valid\"],[[2740,2740],\"disallowed\"],[[2741,2745],\"valid\"],[[2746,2747],\"disallowed\"],[[2748,2757],\"valid\"],[[2758,2758],\"disallowed\"],[[2759,2761],\"valid\"],[[2762,2762],\"disallowed\"],[[2763,2765],\"valid\"],[[2766,2767],\"disallowed\"],[[2768,2768],\"valid\"],[[2769,2783],\"disallowed\"],[[2784,2784],\"valid\"],[[2785,2787],\"valid\"],[[2788,2789],\"disallowed\"],[[2790,2799],\"valid\"],[[2800,2800],\"valid\",[],\"NV8\"],[[2801,2801],\"valid\",[],\"NV8\"],[[2802,2808],\"disallowed\"],[[2809,2809],\"valid\"],[[2810,2816],\"disallowed\"],[[2817,2819],\"valid\"],[[2820,2820],\"disallowed\"],[[2821,2828],\"valid\"],[[2829,2830],\"disallowed\"],[[2831,2832],\"valid\"],[[2833,2834],\"disallowed\"],[[2835,2856],\"valid\"],[[2857,2857],\"disallowed\"],[[2858,2864],\"valid\"],[[2865,2865],\"disallowed\"],[[2866,2867],\"valid\"],[[2868,2868],\"disallowed\"],[[2869,2869],\"valid\"],[[2870,2873],\"valid\"],[[2874,2875],\"disallowed\"],[[2876,2883],\"valid\"],[[2884,2884],\"valid\"],[[2885,2886],\"disallowed\"],[[2887,2888],\"valid\"],[[2889,2890],\"disallowed\"],[[2891,2893],\"valid\"],[[2894,2901],\"disallowed\"],[[2902,2903],\"valid\"],[[2904,2907],\"disallowed\"],[[2908,2908],\"mapped\",[2849,2876]],[[2909,2909],\"mapped\",[2850,2876]],[[2910,2910],\"disallowed\"],[[2911,2913],\"valid\"],[[2914,2915],\"valid\"],[[2916,2917],\"disallowed\"],[[2918,2927],\"valid\"],[[2928,2928],\"valid\",[],\"NV8\"],[[2929,2929],\"valid\"],[[2930,2935],\"valid\",[],\"NV8\"],[[2936,2945],\"disallowed\"],[[2946,2947],\"valid\"],[[2948,2948],\"disallowed\"],[[2949,2954],\"valid\"],[[2955,2957],\"disallowed\"],[[2958,2960],\"valid\"],[[2961,2961],\"disallowed\"],[[2962,2965],\"valid\"],[[2966,2968],\"disallowed\"],[[2969,2970],\"valid\"],[[2971,2971],\"disallowed\"],[[2972,2972],\"valid\"],[[2973,2973],\"disallowed\"],[[2974,2975],\"valid\"],[[2976,2978],\"disallowed\"],[[2979,2980],\"valid\"],[[2981,2983],\"disallowed\"],[[2984,2986],\"valid\"],[[2987,2989],\"disallowed\"],[[2990,2997],\"valid\"],[[2998,2998],\"valid\"],[[2999,3001],\"valid\"],[[3002,3005],\"disallowed\"],[[3006,3010],\"valid\"],[[3011,3013],\"disallowed\"],[[3014,3016],\"valid\"],[[3017,3017],\"disallowed\"],[[3018,3021],\"valid\"],[[3022,3023],\"disallowed\"],[[3024,3024],\"valid\"],[[3025,3030],\"disallowed\"],[[3031,3031],\"valid\"],[[3032,3045],\"disallowed\"],[[3046,3046],\"valid\"],[[3047,3055],\"valid\"],[[3056,3058],\"valid\",[],\"NV8\"],[[3059,3066],\"valid\",[],\"NV8\"],[[3067,3071],\"disallowed\"],[[3072,3072],\"valid\"],[[3073,3075],\"valid\"],[[3076,3076],\"disallowed\"],[[3077,3084],\"valid\"],[[3085,3085],\"disallowed\"],[[3086,3088],\"valid\"],[[3089,3089],\"disallowed\"],[[3090,3112],\"valid\"],[[3113,3113],\"disallowed\"],[[3114,3123],\"valid\"],[[3124,3124],\"valid\"],[[3125,3129],\"valid\"],[[3130,3132],\"disallowed\"],[[3133,3133],\"valid\"],[[3134,3140],\"valid\"],[[3141,3141],\"disallowed\"],[[3142,3144],\"valid\"],[[3145,3145],\"disallowed\"],[[3146,3149],\"valid\"],[[3150,3156],\"disallowed\"],[[3157,3158],\"valid\"],[[3159,3159],\"disallowed\"],[[3160,3161],\"valid\"],[[3162,3162],\"valid\"],[[3163,3167],\"disallowed\"],[[3168,3169],\"valid\"],[[3170,3171],\"valid\"],[[3172,3173],\"disallowed\"],[[3174,3183],\"valid\"],[[3184,3191],\"disallowed\"],[[3192,3199],\"valid\",[],\"NV8\"],[[3200,3200],\"disallowed\"],[[3201,3201],\"valid\"],[[3202,3203],\"valid\"],[[3204,3204],\"disallowed\"],[[3205,3212],\"valid\"],[[3213,3213],\"disallowed\"],[[3214,3216],\"valid\"],[[3217,3217],\"disallowed\"],[[3218,3240],\"valid\"],[[3241,3241],\"disallowed\"],[[3242,3251],\"valid\"],[[3252,3252],\"disallowed\"],[[3253,3257],\"valid\"],[[3258,3259],\"disallowed\"],[[3260,3261],\"valid\"],[[3262,3268],\"valid\"],[[3269,3269],\"disallowed\"],[[3270,3272],\"valid\"],[[3273,3273],\"disallowed\"],[[3274,3277],\"valid\"],[[3278,3284],\"disallowed\"],[[3285,3286],\"valid\"],[[3287,3293],\"disallowed\"],[[3294,3294],\"valid\"],[[3295,3295],\"disallowed\"],[[3296,3297],\"valid\"],[[3298,3299],\"valid\"],[[3300,3301],\"disallowed\"],[[3302,3311],\"valid\"],[[3312,3312],\"disallowed\"],[[3313,3314],\"valid\"],[[3315,3328],\"disallowed\"],[[3329,3329],\"valid\"],[[3330,3331],\"valid\"],[[3332,3332],\"disallowed\"],[[3333,3340],\"valid\"],[[3341,3341],\"disallowed\"],[[3342,3344],\"valid\"],[[3345,3345],\"disallowed\"],[[3346,3368],\"valid\"],[[3369,3369],\"valid\"],[[3370,3385],\"valid\"],[[3386,3386],\"valid\"],[[3387,3388],\"disallowed\"],[[3389,3389],\"valid\"],[[3390,3395],\"valid\"],[[3396,3396],\"valid\"],[[3397,3397],\"disallowed\"],[[3398,3400],\"valid\"],[[3401,3401],\"disallowed\"],[[3402,3405],\"valid\"],[[3406,3406],\"valid\"],[[3407,3414],\"disallowed\"],[[3415,3415],\"valid\"],[[3416,3422],\"disallowed\"],[[3423,3423],\"valid\"],[[3424,3425],\"valid\"],[[3426,3427],\"valid\"],[[3428,3429],\"disallowed\"],[[3430,3439],\"valid\"],[[3440,3445],\"valid\",[],\"NV8\"],[[3446,3448],\"disallowed\"],[[3449,3449],\"valid\",[],\"NV8\"],[[3450,3455],\"valid\"],[[3456,3457],\"disallowed\"],[[3458,3459],\"valid\"],[[3460,3460],\"disallowed\"],[[3461,3478],\"valid\"],[[3479,3481],\"disallowed\"],[[3482,3505],\"valid\"],[[3506,3506],\"disallowed\"],[[3507,3515],\"valid\"],[[3516,3516],\"disallowed\"],[[3517,3517],\"valid\"],[[3518,3519],\"disallowed\"],[[3520,3526],\"valid\"],[[3527,3529],\"disallowed\"],[[3530,3530],\"valid\"],[[3531,3534],\"disallowed\"],[[3535,3540],\"valid\"],[[3541,3541],\"disallowed\"],[[3542,3542],\"valid\"],[[3543,3543],\"disallowed\"],[[3544,3551],\"valid\"],[[3552,3557],\"disallowed\"],[[3558,3567],\"valid\"],[[3568,3569],\"disallowed\"],[[3570,3571],\"valid\"],[[3572,3572],\"valid\",[],\"NV8\"],[[3573,3584],\"disallowed\"],[[3585,3634],\"valid\"],[[3635,3635],\"mapped\",[3661,3634]],[[3636,3642],\"valid\"],[[3643,3646],\"disallowed\"],[[3647,3647],\"valid\",[],\"NV8\"],[[3648,3662],\"valid\"],[[3663,3663],\"valid\",[],\"NV8\"],[[3664,3673],\"valid\"],[[3674,3675],\"valid\",[],\"NV8\"],[[3676,3712],\"disallowed\"],[[3713,3714],\"valid\"],[[3715,3715],\"disallowed\"],[[3716,3716],\"valid\"],[[3717,3718],\"disallowed\"],[[3719,3720],\"valid\"],[[3721,3721],\"disallowed\"],[[3722,3722],\"valid\"],[[3723,3724],\"disallowed\"],[[3725,3725],\"valid\"],[[3726,3731],\"disallowed\"],[[3732,3735],\"valid\"],[[3736,3736],\"disallowed\"],[[3737,3743],\"valid\"],[[3744,3744],\"disallowed\"],[[3745,3747],\"valid\"],[[3748,3748],\"disallowed\"],[[3749,3749],\"valid\"],[[3750,3750],\"disallowed\"],[[3751,3751],\"valid\"],[[3752,3753],\"disallowed\"],[[3754,3755],\"valid\"],[[3756,3756],\"disallowed\"],[[3757,3762],\"valid\"],[[3763,3763],\"mapped\",[3789,3762]],[[3764,3769],\"valid\"],[[3770,3770],\"disallowed\"],[[3771,3773],\"valid\"],[[3774,3775],\"disallowed\"],[[3776,3780],\"valid\"],[[3781,3781],\"disallowed\"],[[3782,3782],\"valid\"],[[3783,3783],\"disallowed\"],[[3784,3789],\"valid\"],[[3790,3791],\"disallowed\"],[[3792,3801],\"valid\"],[[3802,3803],\"disallowed\"],[[3804,3804],\"mapped\",[3755,3737]],[[3805,3805],\"mapped\",[3755,3745]],[[3806,3807],\"valid\"],[[3808,3839],\"disallowed\"],[[3840,3840],\"valid\"],[[3841,3850],\"valid\",[],\"NV8\"],[[3851,3851],\"valid\"],[[3852,3852],\"mapped\",[3851]],[[3853,3863],\"valid\",[],\"NV8\"],[[3864,3865],\"valid\"],[[3866,3871],\"valid\",[],\"NV8\"],[[3872,3881],\"valid\"],[[3882,3892],\"valid\",[],\"NV8\"],[[3893,3893],\"valid\"],[[3894,3894],\"valid\",[],\"NV8\"],[[3895,3895],\"valid\"],[[3896,3896],\"valid\",[],\"NV8\"],[[3897,3897],\"valid\"],[[3898,3901],\"valid\",[],\"NV8\"],[[3902,3906],\"valid\"],[[3907,3907],\"mapped\",[3906,4023]],[[3908,3911],\"valid\"],[[3912,3912],\"disallowed\"],[[3913,3916],\"valid\"],[[3917,3917],\"mapped\",[3916,4023]],[[3918,3921],\"valid\"],[[3922,3922],\"mapped\",[3921,4023]],[[3923,3926],\"valid\"],[[3927,3927],\"mapped\",[3926,4023]],[[3928,3931],\"valid\"],[[3932,3932],\"mapped\",[3931,4023]],[[3933,3944],\"valid\"],[[3945,3945],\"mapped\",[3904,4021]],[[3946,3946],\"valid\"],[[3947,3948],\"valid\"],[[3949,3952],\"disallowed\"],[[3953,3954],\"valid\"],[[3955,3955],\"mapped\",[3953,3954]],[[3956,3956],\"valid\"],[[3957,3957],\"mapped\",[3953,3956]],[[3958,3958],\"mapped\",[4018,3968]],[[3959,3959],\"mapped\",[4018,3953,3968]],[[3960,3960],\"mapped\",[4019,3968]],[[3961,3961],\"mapped\",[4019,3953,3968]],[[3962,3968],\"valid\"],[[3969,3969],\"mapped\",[3953,3968]],[[3970,3972],\"valid\"],[[3973,3973],\"valid\",[],\"NV8\"],[[3974,3979],\"valid\"],[[3980,3983],\"valid\"],[[3984,3986],\"valid\"],[[3987,3987],\"mapped\",[3986,4023]],[[3988,3989],\"valid\"],[[3990,3990],\"valid\"],[[3991,3991],\"valid\"],[[3992,3992],\"disallowed\"],[[3993,3996],\"valid\"],[[3997,3997],\"mapped\",[3996,4023]],[[3998,4001],\"valid\"],[[4002,4002],\"mapped\",[4001,4023]],[[4003,4006],\"valid\"],[[4007,4007],\"mapped\",[4006,4023]],[[4008,4011],\"valid\"],[[4012,4012],\"mapped\",[4011,4023]],[[4013,4013],\"valid\"],[[4014,4016],\"valid\"],[[4017,4023],\"valid\"],[[4024,4024],\"valid\"],[[4025,4025],\"mapped\",[3984,4021]],[[4026,4028],\"valid\"],[[4029,4029],\"disallowed\"],[[4030,4037],\"valid\",[],\"NV8\"],[[4038,4038],\"valid\"],[[4039,4044],\"valid\",[],\"NV8\"],[[4045,4045],\"disallowed\"],[[4046,4046],\"valid\",[],\"NV8\"],[[4047,4047],\"valid\",[],\"NV8\"],[[4048,4049],\"valid\",[],\"NV8\"],[[4050,4052],\"valid\",[],\"NV8\"],[[4053,4056],\"valid\",[],\"NV8\"],[[4057,4058],\"valid\",[],\"NV8\"],[[4059,4095],\"disallowed\"],[[4096,4129],\"valid\"],[[4130,4130],\"valid\"],[[4131,4135],\"valid\"],[[4136,4136],\"valid\"],[[4137,4138],\"valid\"],[[4139,4139],\"valid\"],[[4140,4146],\"valid\"],[[4147,4149],\"valid\"],[[4150,4153],\"valid\"],[[4154,4159],\"valid\"],[[4160,4169],\"valid\"],[[4170,4175],\"valid\",[],\"NV8\"],[[4176,4185],\"valid\"],[[4186,4249],\"valid\"],[[4250,4253],\"valid\"],[[4254,4255],\"valid\",[],\"NV8\"],[[4256,4293],\"disallowed\"],[[4294,4294],\"disallowed\"],[[4295,4295],\"mapped\",[11559]],[[4296,4300],\"disallowed\"],[[4301,4301],\"mapped\",[11565]],[[4302,4303],\"disallowed\"],[[4304,4342],\"valid\"],[[4343,4344],\"valid\"],[[4345,4346],\"valid\"],[[4347,4347],\"valid\",[],\"NV8\"],[[4348,4348],\"mapped\",[4316]],[[4349,4351],\"valid\"],[[4352,4441],\"valid\",[],\"NV8\"],[[4442,4446],\"valid\",[],\"NV8\"],[[4447,4448],\"disallowed\"],[[4449,4514],\"valid\",[],\"NV8\"],[[4515,4519],\"valid\",[],\"NV8\"],[[4520,4601],\"valid\",[],\"NV8\"],[[4602,4607],\"valid\",[],\"NV8\"],[[4608,4614],\"valid\"],[[4615,4615],\"valid\"],[[4616,4678],\"valid\"],[[4679,4679],\"valid\"],[[4680,4680],\"valid\"],[[4681,4681],\"disallowed\"],[[4682,4685],\"valid\"],[[4686,4687],\"disallowed\"],[[4688,4694],\"valid\"],[[4695,4695],\"disallowed\"],[[4696,4696],\"valid\"],[[4697,4697],\"disallowed\"],[[4698,4701],\"valid\"],[[4702,4703],\"disallowed\"],[[4704,4742],\"valid\"],[[4743,4743],\"valid\"],[[4744,4744],\"valid\"],[[4745,4745],\"disallowed\"],[[4746,4749],\"valid\"],[[4750,4751],\"disallowed\"],[[4752,4782],\"valid\"],[[4783,4783],\"valid\"],[[4784,4784],\"valid\"],[[4785,4785],\"disallowed\"],[[4786,4789],\"valid\"],[[4790,4791],\"disallowed\"],[[4792,4798],\"valid\"],[[4799,4799],\"disallowed\"],[[4800,4800],\"valid\"],[[4801,4801],\"disallowed\"],[[4802,4805],\"valid\"],[[4806,4807],\"disallowed\"],[[4808,4814],\"valid\"],[[4815,4815],\"valid\"],[[4816,4822],\"valid\"],[[4823,4823],\"disallowed\"],[[4824,4846],\"valid\"],[[4847,4847],\"valid\"],[[4848,4878],\"valid\"],[[4879,4879],\"valid\"],[[4880,4880],\"valid\"],[[4881,4881],\"disallowed\"],[[4882,4885],\"valid\"],[[4886,4887],\"disallowed\"],[[4888,4894],\"valid\"],[[4895,4895],\"valid\"],[[4896,4934],\"valid\"],[[4935,4935],\"valid\"],[[4936,4954],\"valid\"],[[4955,4956],\"disallowed\"],[[4957,4958],\"valid\"],[[4959,4959],\"valid\"],[[4960,4960],\"valid\",[],\"NV8\"],[[4961,4988],\"valid\",[],\"NV8\"],[[4989,4991],\"disallowed\"],[[4992,5007],\"valid\"],[[5008,5017],\"valid\",[],\"NV8\"],[[5018,5023],\"disallowed\"],[[5024,5108],\"valid\"],[[5109,5109],\"valid\"],[[5110,5111],\"disallowed\"],[[5112,5112],\"mapped\",[5104]],[[5113,5113],\"mapped\",[5105]],[[5114,5114],\"mapped\",[5106]],[[5115,5115],\"mapped\",[5107]],[[5116,5116],\"mapped\",[5108]],[[5117,5117],\"mapped\",[5109]],[[5118,5119],\"disallowed\"],[[5120,5120],\"valid\",[],\"NV8\"],[[5121,5740],\"valid\"],[[5741,5742],\"valid\",[],\"NV8\"],[[5743,5750],\"valid\"],[[5751,5759],\"valid\"],[[5760,5760],\"disallowed\"],[[5761,5786],\"valid\"],[[5787,5788],\"valid\",[],\"NV8\"],[[5789,5791],\"disallowed\"],[[5792,5866],\"valid\"],[[5867,5872],\"valid\",[],\"NV8\"],[[5873,5880],\"valid\"],[[5881,5887],\"disallowed\"],[[5888,5900],\"valid\"],[[5901,5901],\"disallowed\"],[[5902,5908],\"valid\"],[[5909,5919],\"disallowed\"],[[5920,5940],\"valid\"],[[5941,5942],\"valid\",[],\"NV8\"],[[5943,5951],\"disallowed\"],[[5952,5971],\"valid\"],[[5972,5983],\"disallowed\"],[[5984,5996],\"valid\"],[[5997,5997],\"disallowed\"],[[5998,6000],\"valid\"],[[6001,6001],\"disallowed\"],[[6002,6003],\"valid\"],[[6004,6015],\"disallowed\"],[[6016,6067],\"valid\"],[[6068,6069],\"disallowed\"],[[6070,6099],\"valid\"],[[6100,6102],\"valid\",[],\"NV8\"],[[6103,6103],\"valid\"],[[6104,6107],\"valid\",[],\"NV8\"],[[6108,6108],\"valid\"],[[6109,6109],\"valid\"],[[6110,6111],\"disallowed\"],[[6112,6121],\"valid\"],[[6122,6127],\"disallowed\"],[[6128,6137],\"valid\",[],\"NV8\"],[[6138,6143],\"disallowed\"],[[6144,6149],\"valid\",[],\"NV8\"],[[6150,6150],\"disallowed\"],[[6151,6154],\"valid\",[],\"NV8\"],[[6155,6157],\"ignored\"],[[6158,6158],\"disallowed\"],[[6159,6159],\"disallowed\"],[[6160,6169],\"valid\"],[[6170,6175],\"disallowed\"],[[6176,6263],\"valid\"],[[6264,6271],\"disallowed\"],[[6272,6313],\"valid\"],[[6314,6314],\"valid\"],[[6315,6319],\"disallowed\"],[[6320,6389],\"valid\"],[[6390,6399],\"disallowed\"],[[6400,6428],\"valid\"],[[6429,6430],\"valid\"],[[6431,6431],\"disallowed\"],[[6432,6443],\"valid\"],[[6444,6447],\"disallowed\"],[[6448,6459],\"valid\"],[[6460,6463],\"disallowed\"],[[6464,6464],\"valid\",[],\"NV8\"],[[6465,6467],\"disallowed\"],[[6468,6469],\"valid\",[],\"NV8\"],[[6470,6509],\"valid\"],[[6510,6511],\"disallowed\"],[[6512,6516],\"valid\"],[[6517,6527],\"disallowed\"],[[6528,6569],\"valid\"],[[6570,6571],\"valid\"],[[6572,6575],\"disallowed\"],[[6576,6601],\"valid\"],[[6602,6607],\"disallowed\"],[[6608,6617],\"valid\"],[[6618,6618],\"valid\",[],\"XV8\"],[[6619,6621],\"disallowed\"],[[6622,6623],\"valid\",[],\"NV8\"],[[6624,6655],\"valid\",[],\"NV8\"],[[6656,6683],\"valid\"],[[6684,6685],\"disallowed\"],[[6686,6687],\"valid\",[],\"NV8\"],[[6688,6750],\"valid\"],[[6751,6751],\"disallowed\"],[[6752,6780],\"valid\"],[[6781,6782],\"disallowed\"],[[6783,6793],\"valid\"],[[6794,6799],\"disallowed\"],[[6800,6809],\"valid\"],[[6810,6815],\"disallowed\"],[[6816,6822],\"valid\",[],\"NV8\"],[[6823,6823],\"valid\"],[[6824,6829],\"valid\",[],\"NV8\"],[[6830,6831],\"disallowed\"],[[6832,6845],\"valid\"],[[6846,6846],\"valid\",[],\"NV8\"],[[6847,6911],\"disallowed\"],[[6912,6987],\"valid\"],[[6988,6991],\"disallowed\"],[[6992,7001],\"valid\"],[[7002,7018],\"valid\",[],\"NV8\"],[[7019,7027],\"valid\"],[[7028,7036],\"valid\",[],\"NV8\"],[[7037,7039],\"disallowed\"],[[7040,7082],\"valid\"],[[7083,7085],\"valid\"],[[7086,7097],\"valid\"],[[7098,7103],\"valid\"],[[7104,7155],\"valid\"],[[7156,7163],\"disallowed\"],[[7164,7167],\"valid\",[],\"NV8\"],[[7168,7223],\"valid\"],[[7224,7226],\"disallowed\"],[[7227,7231],\"valid\",[],\"NV8\"],[[7232,7241],\"valid\"],[[7242,7244],\"disallowed\"],[[7245,7293],\"valid\"],[[7294,7295],\"valid\",[],\"NV8\"],[[7296,7359],\"disallowed\"],[[7360,7367],\"valid\",[],\"NV8\"],[[7368,7375],\"disallowed\"],[[7376,7378],\"valid\"],[[7379,7379],\"valid\",[],\"NV8\"],[[7380,7410],\"valid\"],[[7411,7414],\"valid\"],[[7415,7415],\"disallowed\"],[[7416,7417],\"valid\"],[[7418,7423],\"disallowed\"],[[7424,7467],\"valid\"],[[7468,7468],\"mapped\",[97]],[[7469,7469],\"mapped\",[230]],[[7470,7470],\"mapped\",[98]],[[7471,7471],\"valid\"],[[7472,7472],\"mapped\",[100]],[[7473,7473],\"mapped\",[101]],[[7474,7474],\"mapped\",[477]],[[7475,7475],\"mapped\",[103]],[[7476,7476],\"mapped\",[104]],[[7477,7477],\"mapped\",[105]],[[7478,7478],\"mapped\",[106]],[[7479,7479],\"mapped\",[107]],[[7480,7480],\"mapped\",[108]],[[7481,7481],\"mapped\",[109]],[[7482,7482],\"mapped\",[110]],[[7483,7483],\"valid\"],[[7484,7484],\"mapped\",[111]],[[7485,7485],\"mapped\",[547]],[[7486,7486],\"mapped\",[112]],[[7487,7487],\"mapped\",[114]],[[7488,7488],\"mapped\",[116]],[[7489,7489],\"mapped\",[117]],[[7490,7490],\"mapped\",[119]],[[7491,7491],\"mapped\",[97]],[[7492,7492],\"mapped\",[592]],[[7493,7493],\"mapped\",[593]],[[7494,7494],\"mapped\",[7426]],[[7495,7495],\"mapped\",[98]],[[7496,7496],\"mapped\",[100]],[[7497,7497],\"mapped\",[101]],[[7498,7498],\"mapped\",[601]],[[7499,7499],\"mapped\",[603]],[[7500,7500],\"mapped\",[604]],[[7501,7501],\"mapped\",[103]],[[7502,7502],\"valid\"],[[7503,7503],\"mapped\",[107]],[[7504,7504],\"mapped\",[109]],[[7505,7505],\"mapped\",[331]],[[7506,7506],\"mapped\",[111]],[[7507,7507],\"mapped\",[596]],[[7508,7508],\"mapped\",[7446]],[[7509,7509],\"mapped\",[7447]],[[7510,7510],\"mapped\",[112]],[[7511,7511],\"mapped\",[116]],[[7512,7512],\"mapped\",[117]],[[7513,7513],\"mapped\",[7453]],[[7514,7514],\"mapped\",[623]],[[7515,7515],\"mapped\",[118]],[[7516,7516],\"mapped\",[7461]],[[7517,7517],\"mapped\",[946]],[[7518,7518],\"mapped\",[947]],[[7519,7519],\"mapped\",[948]],[[7520,7520],\"mapped\",[966]],[[7521,7521],\"mapped\",[967]],[[7522,7522],\"mapped\",[105]],[[7523,7523],\"mapped\",[114]],[[7524,7524],\"mapped\",[117]],[[7525,7525],\"mapped\",[118]],[[7526,7526],\"mapped\",[946]],[[7527,7527],\"mapped\",[947]],[[7528,7528],\"mapped\",[961]],[[7529,7529],\"mapped\",[966]],[[7530,7530],\"mapped\",[967]],[[7531,7531],\"valid\"],[[7532,7543],\"valid\"],[[7544,7544],\"mapped\",[1085]],[[7545,7578],\"valid\"],[[7579,7579],\"mapped\",[594]],[[7580,7580],\"mapped\",[99]],[[7581,7581],\"mapped\",[597]],[[7582,7582],\"mapped\",[240]],[[7583,7583],\"mapped\",[604]],[[7584,7584],\"mapped\",[102]],[[7585,7585],\"mapped\",[607]],[[7586,7586],\"mapped\",[609]],[[7587,7587],\"mapped\",[613]],[[7588,7588],\"mapped\",[616]],[[7589,7589],\"mapped\",[617]],[[7590,7590],\"mapped\",[618]],[[7591,7591],\"mapped\",[7547]],[[7592,7592],\"mapped\",[669]],[[7593,7593],\"mapped\",[621]],[[7594,7594],\"mapped\",[7557]],[[7595,7595],\"mapped\",[671]],[[7596,7596],\"mapped\",[625]],[[7597,7597],\"mapped\",[624]],[[7598,7598],\"mapped\",[626]],[[7599,7599],\"mapped\",[627]],[[7600,7600],\"mapped\",[628]],[[7601,7601],\"mapped\",[629]],[[7602,7602],\"mapped\",[632]],[[7603,7603],\"mapped\",[642]],[[7604,7604],\"mapped\",[643]],[[7605,7605],\"mapped\",[427]],[[7606,7606],\"mapped\",[649]],[[7607,7607],\"mapped\",[650]],[[7608,7608],\"mapped\",[7452]],[[7609,7609],\"mapped\",[651]],[[7610,7610],\"mapped\",[652]],[[7611,7611],\"mapped\",[122]],[[7612,7612],\"mapped\",[656]],[[7613,7613],\"mapped\",[657]],[[7614,7614],\"mapped\",[658]],[[7615,7615],\"mapped\",[952]],[[7616,7619],\"valid\"],[[7620,7626],\"valid\"],[[7627,7654],\"valid\"],[[7655,7669],\"valid\"],[[7670,7675],\"disallowed\"],[[7676,7676],\"valid\"],[[7677,7677],\"valid\"],[[7678,7679],\"valid\"],[[7680,7680],\"mapped\",[7681]],[[7681,7681],\"valid\"],[[7682,7682],\"mapped\",[7683]],[[7683,7683],\"valid\"],[[7684,7684],\"mapped\",[7685]],[[7685,7685],\"valid\"],[[7686,7686],\"mapped\",[7687]],[[7687,7687],\"valid\"],[[7688,7688],\"mapped\",[7689]],[[7689,7689],\"valid\"],[[7690,7690],\"mapped\",[7691]],[[7691,7691],\"valid\"],[[7692,7692],\"mapped\",[7693]],[[7693,7693],\"valid\"],[[7694,7694],\"mapped\",[7695]],[[7695,7695],\"valid\"],[[7696,7696],\"mapped\",[7697]],[[7697,7697],\"valid\"],[[7698,7698],\"mapped\",[7699]],[[7699,7699],\"valid\"],[[7700,7700],\"mapped\",[7701]],[[7701,7701],\"valid\"],[[7702,7702],\"mapped\",[7703]],[[7703,7703],\"valid\"],[[7704,7704],\"mapped\",[7705]],[[7705,7705],\"valid\"],[[7706,7706],\"mapped\",[7707]],[[7707,7707],\"valid\"],[[7708,7708],\"mapped\",[7709]],[[7709,7709],\"valid\"],[[7710,7710],\"mapped\",[7711]],[[7711,7711],\"valid\"],[[7712,7712],\"mapped\",[7713]],[[7713,7713],\"valid\"],[[7714,7714],\"mapped\",[7715]],[[7715,7715],\"valid\"],[[7716,7716],\"mapped\",[7717]],[[7717,7717],\"valid\"],[[7718,7718],\"mapped\",[7719]],[[7719,7719],\"valid\"],[[7720,7720],\"mapped\",[7721]],[[7721,7721],\"valid\"],[[7722,7722],\"mapped\",[7723]],[[7723,7723],\"valid\"],[[7724,7724],\"mapped\",[7725]],[[7725,7725],\"valid\"],[[7726,7726],\"mapped\",[7727]],[[7727,7727],\"valid\"],[[7728,7728],\"mapped\",[7729]],[[7729,7729],\"valid\"],[[7730,7730],\"mapped\",[7731]],[[7731,7731],\"valid\"],[[7732,7732],\"mapped\",[7733]],[[7733,7733],\"valid\"],[[7734,7734],\"mapped\",[7735]],[[7735,7735],\"valid\"],[[7736,7736],\"mapped\",[7737]],[[7737,7737],\"valid\"],[[7738,7738],\"mapped\",[7739]],[[7739,7739],\"valid\"],[[7740,7740],\"mapped\",[7741]],[[7741,7741],\"valid\"],[[7742,7742],\"mapped\",[7743]],[[7743,7743],\"valid\"],[[7744,7744],\"mapped\",[7745]],[[7745,7745],\"valid\"],[[7746,7746],\"mapped\",[7747]],[[7747,7747],\"valid\"],[[7748,7748],\"mapped\",[7749]],[[7749,7749],\"valid\"],[[7750,7750],\"mapped\",[7751]],[[7751,7751],\"valid\"],[[7752,7752],\"mapped\",[7753]],[[7753,7753],\"valid\"],[[7754,7754],\"mapped\",[7755]],[[7755,7755],\"valid\"],[[7756,7756],\"mapped\",[7757]],[[7757,7757],\"valid\"],[[7758,7758],\"mapped\",[7759]],[[7759,7759],\"valid\"],[[7760,7760],\"mapped\",[7761]],[[7761,7761],\"valid\"],[[7762,7762],\"mapped\",[7763]],[[7763,7763],\"valid\"],[[7764,7764],\"mapped\",[7765]],[[7765,7765],\"valid\"],[[7766,7766],\"mapped\",[7767]],[[7767,7767],\"valid\"],[[7768,7768],\"mapped\",[7769]],[[7769,7769],\"valid\"],[[7770,7770],\"mapped\",[7771]],[[7771,7771],\"valid\"],[[7772,7772],\"mapped\",[7773]],[[7773,7773],\"valid\"],[[7774,7774],\"mapped\",[7775]],[[7775,7775],\"valid\"],[[7776,7776],\"mapped\",[7777]],[[7777,7777],\"valid\"],[[7778,7778],\"mapped\",[7779]],[[7779,7779],\"valid\"],[[7780,7780],\"mapped\",[7781]],[[7781,7781],\"valid\"],[[7782,7782],\"mapped\",[7783]],[[7783,7783],\"valid\"],[[7784,7784],\"mapped\",[7785]],[[7785,7785],\"valid\"],[[7786,7786],\"mapped\",[7787]],[[7787,7787],\"valid\"],[[7788,7788],\"mapped\",[7789]],[[7789,7789],\"valid\"],[[7790,7790],\"mapped\",[7791]],[[7791,7791],\"valid\"],[[7792,7792],\"mapped\",[7793]],[[7793,7793],\"valid\"],[[7794,7794],\"mapped\",[7795]],[[7795,7795],\"valid\"],[[7796,7796],\"mapped\",[7797]],[[7797,7797],\"valid\"],[[7798,7798],\"mapped\",[7799]],[[7799,7799],\"valid\"],[[7800,7800],\"mapped\",[7801]],[[7801,7801],\"valid\"],[[7802,7802],\"mapped\",[7803]],[[7803,7803],\"valid\"],[[7804,7804],\"mapped\",[7805]],[[7805,7805],\"valid\"],[[7806,7806],\"mapped\",[7807]],[[7807,7807],\"valid\"],[[7808,7808],\"mapped\",[7809]],[[7809,7809],\"valid\"],[[7810,7810],\"mapped\",[7811]],[[7811,7811],\"valid\"],[[7812,7812],\"mapped\",[7813]],[[7813,7813],\"valid\"],[[7814,7814],\"mapped\",[7815]],[[7815,7815],\"valid\"],[[7816,7816],\"mapped\",[7817]],[[7817,7817],\"valid\"],[[7818,7818],\"mapped\",[7819]],[[7819,7819],\"valid\"],[[7820,7820],\"mapped\",[7821]],[[7821,7821],\"valid\"],[[7822,7822],\"mapped\",[7823]],[[7823,7823],\"valid\"],[[7824,7824],\"mapped\",[7825]],[[7825,7825],\"valid\"],[[7826,7826],\"mapped\",[7827]],[[7827,7827],\"valid\"],[[7828,7828],\"mapped\",[7829]],[[7829,7833],\"valid\"],[[7834,7834],\"mapped\",[97,702]],[[7835,7835],\"mapped\",[7777]],[[7836,7837],\"valid\"],[[7838,7838],\"mapped\",[115,115]],[[7839,7839],\"valid\"],[[7840,7840],\"mapped\",[7841]],[[7841,7841],\"valid\"],[[7842,7842],\"mapped\",[7843]],[[7843,7843],\"valid\"],[[7844,7844],\"mapped\",[7845]],[[7845,7845],\"valid\"],[[7846,7846],\"mapped\",[7847]],[[7847,7847],\"valid\"],[[7848,7848],\"mapped\",[7849]],[[7849,7849],\"valid\"],[[7850,7850],\"mapped\",[7851]],[[7851,7851],\"valid\"],[[7852,7852],\"mapped\",[7853]],[[7853,7853],\"valid\"],[[7854,7854],\"mapped\",[7855]],[[7855,7855],\"valid\"],[[7856,7856],\"mapped\",[7857]],[[7857,7857],\"valid\"],[[7858,7858],\"mapped\",[7859]],[[7859,7859],\"valid\"],[[7860,7860],\"mapped\",[7861]],[[7861,7861],\"valid\"],[[7862,7862],\"mapped\",[7863]],[[7863,7863],\"valid\"],[[7864,7864],\"mapped\",[7865]],[[7865,7865],\"valid\"],[[7866,7866],\"mapped\",[7867]],[[7867,7867],\"valid\"],[[7868,7868],\"mapped\",[7869]],[[7869,7869],\"valid\"],[[7870,7870],\"mapped\",[7871]],[[7871,7871],\"valid\"],[[7872,7872],\"mapped\",[7873]],[[7873,7873],\"valid\"],[[7874,7874],\"mapped\",[7875]],[[7875,7875],\"valid\"],[[7876,7876],\"mapped\",[7877]],[[7877,7877],\"valid\"],[[7878,7878],\"mapped\",[7879]],[[7879,7879],\"valid\"],[[7880,7880],\"mapped\",[7881]],[[7881,7881],\"valid\"],[[7882,7882],\"mapped\",[7883]],[[7883,7883],\"valid\"],[[7884,7884],\"mapped\",[7885]],[[7885,7885],\"valid\"],[[7886,7886],\"mapped\",[7887]],[[7887,7887],\"valid\"],[[7888,7888],\"mapped\",[7889]],[[7889,7889],\"valid\"],[[7890,7890],\"mapped\",[7891]],[[7891,7891],\"valid\"],[[7892,7892],\"mapped\",[7893]],[[7893,7893],\"valid\"],[[7894,7894],\"mapped\",[7895]],[[7895,7895],\"valid\"],[[7896,7896],\"mapped\",[7897]],[[7897,7897],\"valid\"],[[7898,7898],\"mapped\",[7899]],[[7899,7899],\"valid\"],[[7900,7900],\"mapped\",[7901]],[[7901,7901],\"valid\"],[[7902,7902],\"mapped\",[7903]],[[7903,7903],\"valid\"],[[7904,7904],\"mapped\",[7905]],[[7905,7905],\"valid\"],[[7906,7906],\"mapped\",[7907]],[[7907,7907],\"valid\"],[[7908,7908],\"mapped\",[7909]],[[7909,7909],\"valid\"],[[7910,7910],\"mapped\",[7911]],[[7911,7911],\"valid\"],[[7912,7912],\"mapped\",[7913]],[[7913,7913],\"valid\"],[[7914,7914],\"mapped\",[7915]],[[7915,7915],\"valid\"],[[7916,7916],\"mapped\",[7917]],[[7917,7917],\"valid\"],[[7918,7918],\"mapped\",[7919]],[[7919,7919],\"valid\"],[[7920,7920],\"mapped\",[7921]],[[7921,7921],\"valid\"],[[7922,7922],\"mapped\",[7923]],[[7923,7923],\"valid\"],[[7924,7924],\"mapped\",[7925]],[[7925,7925],\"valid\"],[[7926,7926],\"mapped\",[7927]],[[7927,7927],\"valid\"],[[7928,7928],\"mapped\",[7929]],[[7929,7929],\"valid\"],[[7930,7930],\"mapped\",[7931]],[[7931,7931],\"valid\"],[[7932,7932],\"mapped\",[7933]],[[7933,7933],\"valid\"],[[7934,7934],\"mapped\",[7935]],[[7935,7935],\"valid\"],[[7936,7943],\"valid\"],[[7944,7944],\"mapped\",[7936]],[[7945,7945],\"mapped\",[7937]],[[7946,7946],\"mapped\",[7938]],[[7947,7947],\"mapped\",[7939]],[[7948,7948],\"mapped\",[7940]],[[7949,7949],\"mapped\",[7941]],[[7950,7950],\"mapped\",[7942]],[[7951,7951],\"mapped\",[7943]],[[7952,7957],\"valid\"],[[7958,7959],\"disallowed\"],[[7960,7960],\"mapped\",[7952]],[[7961,7961],\"mapped\",[7953]],[[7962,7962],\"mapped\",[7954]],[[7963,7963],\"mapped\",[7955]],[[7964,7964],\"mapped\",[7956]],[[7965,7965],\"mapped\",[7957]],[[7966,7967],\"disallowed\"],[[7968,7975],\"valid\"],[[7976,7976],\"mapped\",[7968]],[[7977,7977],\"mapped\",[7969]],[[7978,7978],\"mapped\",[7970]],[[7979,7979],\"mapped\",[7971]],[[7980,7980],\"mapped\",[7972]],[[7981,7981],\"mapped\",[7973]],[[7982,7982],\"mapped\",[7974]],[[7983,7983],\"mapped\",[7975]],[[7984,7991],\"valid\"],[[7992,7992],\"mapped\",[7984]],[[7993,7993],\"mapped\",[7985]],[[7994,7994],\"mapped\",[7986]],[[7995,7995],\"mapped\",[7987]],[[7996,7996],\"mapped\",[7988]],[[7997,7997],\"mapped\",[7989]],[[7998,7998],\"mapped\",[7990]],[[7999,7999],\"mapped\",[7991]],[[8000,8005],\"valid\"],[[8006,8007],\"disallowed\"],[[8008,8008],\"mapped\",[8000]],[[8009,8009],\"mapped\",[8001]],[[8010,8010],\"mapped\",[8002]],[[8011,8011],\"mapped\",[8003]],[[8012,8012],\"mapped\",[8004]],[[8013,8013],\"mapped\",[8005]],[[8014,8015],\"disallowed\"],[[8016,8023],\"valid\"],[[8024,8024],\"disallowed\"],[[8025,8025],\"mapped\",[8017]],[[8026,8026],\"disallowed\"],[[8027,8027],\"mapped\",[8019]],[[8028,8028],\"disallowed\"],[[8029,8029],\"mapped\",[8021]],[[8030,8030],\"disallowed\"],[[8031,8031],\"mapped\",[8023]],[[8032,8039],\"valid\"],[[8040,8040],\"mapped\",[8032]],[[8041,8041],\"mapped\",[8033]],[[8042,8042],\"mapped\",[8034]],[[8043,8043],\"mapped\",[8035]],[[8044,8044],\"mapped\",[8036]],[[8045,8045],\"mapped\",[8037]],[[8046,8046],\"mapped\",[8038]],[[8047,8047],\"mapped\",[8039]],[[8048,8048],\"valid\"],[[8049,8049],\"mapped\",[940]],[[8050,8050],\"valid\"],[[8051,8051],\"mapped\",[941]],[[8052,8052],\"valid\"],[[8053,8053],\"mapped\",[942]],[[8054,8054],\"valid\"],[[8055,8055],\"mapped\",[943]],[[8056,8056],\"valid\"],[[8057,8057],\"mapped\",[972]],[[8058,8058],\"valid\"],[[8059,8059],\"mapped\",[973]],[[8060,8060],\"valid\"],[[8061,8061],\"mapped\",[974]],[[8062,8063],\"disallowed\"],[[8064,8064],\"mapped\",[7936,953]],[[8065,8065],\"mapped\",[7937,953]],[[8066,8066],\"mapped\",[7938,953]],[[8067,8067],\"mapped\",[7939,953]],[[8068,8068],\"mapped\",[7940,953]],[[8069,8069],\"mapped\",[7941,953]],[[8070,8070],\"mapped\",[7942,953]],[[8071,8071],\"mapped\",[7943,953]],[[8072,8072],\"mapped\",[7936,953]],[[8073,8073],\"mapped\",[7937,953]],[[8074,8074],\"mapped\",[7938,953]],[[8075,8075],\"mapped\",[7939,953]],[[8076,8076],\"mapped\",[7940,953]],[[8077,8077],\"mapped\",[7941,953]],[[8078,8078],\"mapped\",[7942,953]],[[8079,8079],\"mapped\",[7943,953]],[[8080,8080],\"mapped\",[7968,953]],[[8081,8081],\"mapped\",[7969,953]],[[8082,8082],\"mapped\",[7970,953]],[[8083,8083],\"mapped\",[7971,953]],[[8084,8084],\"mapped\",[7972,953]],[[8085,8085],\"mapped\",[7973,953]],[[8086,8086],\"mapped\",[7974,953]],[[8087,8087],\"mapped\",[7975,953]],[[8088,8088],\"mapped\",[7968,953]],[[8089,8089],\"mapped\",[7969,953]],[[8090,8090],\"mapped\",[7970,953]],[[8091,8091],\"mapped\",[7971,953]],[[8092,8092],\"mapped\",[7972,953]],[[8093,8093],\"mapped\",[7973,953]],[[8094,8094],\"mapped\",[7974,953]],[[8095,8095],\"mapped\",[7975,953]],[[8096,8096],\"mapped\",[8032,953]],[[8097,8097],\"mapped\",[8033,953]],[[8098,8098],\"mapped\",[8034,953]],[[8099,8099],\"mapped\",[8035,953]],[[8100,8100],\"mapped\",[8036,953]],[[8101,8101],\"mapped\",[8037,953]],[[8102,8102],\"mapped\",[8038,953]],[[8103,8103],\"mapped\",[8039,953]],[[8104,8104],\"mapped\",[8032,953]],[[8105,8105],\"mapped\",[8033,953]],[[8106,8106],\"mapped\",[8034,953]],[[8107,8107],\"mapped\",[8035,953]],[[8108,8108],\"mapped\",[8036,953]],[[8109,8109],\"mapped\",[8037,953]],[[8110,8110],\"mapped\",[8038,953]],[[8111,8111],\"mapped\",[8039,953]],[[8112,8113],\"valid\"],[[8114,8114],\"mapped\",[8048,953]],[[8115,8115],\"mapped\",[945,953]],[[8116,8116],\"mapped\",[940,953]],[[8117,8117],\"disallowed\"],[[8118,8118],\"valid\"],[[8119,8119],\"mapped\",[8118,953]],[[8120,8120],\"mapped\",[8112]],[[8121,8121],\"mapped\",[8113]],[[8122,8122],\"mapped\",[8048]],[[8123,8123],\"mapped\",[940]],[[8124,8124],\"mapped\",[945,953]],[[8125,8125],\"disallowed_STD3_mapped\",[32,787]],[[8126,8126],\"mapped\",[953]],[[8127,8127],\"disallowed_STD3_mapped\",[32,787]],[[8128,8128],\"disallowed_STD3_mapped\",[32,834]],[[8129,8129],\"disallowed_STD3_mapped\",[32,776,834]],[[8130,8130],\"mapped\",[8052,953]],[[8131,8131],\"mapped\",[951,953]],[[8132,8132],\"mapped\",[942,953]],[[8133,8133],\"disallowed\"],[[8134,8134],\"valid\"],[[8135,8135],\"mapped\",[8134,953]],[[8136,8136],\"mapped\",[8050]],[[8137,8137],\"mapped\",[941]],[[8138,8138],\"mapped\",[8052]],[[8139,8139],\"mapped\",[942]],[[8140,8140],\"mapped\",[951,953]],[[8141,8141],\"disallowed_STD3_mapped\",[32,787,768]],[[8142,8142],\"disallowed_STD3_mapped\",[32,787,769]],[[8143,8143],\"disallowed_STD3_mapped\",[32,787,834]],[[8144,8146],\"valid\"],[[8147,8147],\"mapped\",[912]],[[8148,8149],\"disallowed\"],[[8150,8151],\"valid\"],[[8152,8152],\"mapped\",[8144]],[[8153,8153],\"mapped\",[8145]],[[8154,8154],\"mapped\",[8054]],[[8155,8155],\"mapped\",[943]],[[8156,8156],\"disallowed\"],[[8157,8157],\"disallowed_STD3_mapped\",[32,788,768]],[[8158,8158],\"disallowed_STD3_mapped\",[32,788,769]],[[8159,8159],\"disallowed_STD3_mapped\",[32,788,834]],[[8160,8162],\"valid\"],[[8163,8163],\"mapped\",[944]],[[8164,8167],\"valid\"],[[8168,8168],\"mapped\",[8160]],[[8169,8169],\"mapped\",[8161]],[[8170,8170],\"mapped\",[8058]],[[8171,8171],\"mapped\",[973]],[[8172,8172],\"mapped\",[8165]],[[8173,8173],\"disallowed_STD3_mapped\",[32,776,768]],[[8174,8174],\"disallowed_STD3_mapped\",[32,776,769]],[[8175,8175],\"disallowed_STD3_mapped\",[96]],[[8176,8177],\"disallowed\"],[[8178,8178],\"mapped\",[8060,953]],[[8179,8179],\"mapped\",[969,953]],[[8180,8180],\"mapped\",[974,953]],[[8181,8181],\"disallowed\"],[[8182,8182],\"valid\"],[[8183,8183],\"mapped\",[8182,953]],[[8184,8184],\"mapped\",[8056]],[[8185,8185],\"mapped\",[972]],[[8186,8186],\"mapped\",[8060]],[[8187,8187],\"mapped\",[974]],[[8188,8188],\"mapped\",[969,953]],[[8189,8189],\"disallowed_STD3_mapped\",[32,769]],[[8190,8190],\"disallowed_STD3_mapped\",[32,788]],[[8191,8191],\"disallowed\"],[[8192,8202],\"disallowed_STD3_mapped\",[32]],[[8203,8203],\"ignored\"],[[8204,8205],\"deviation\",[]],[[8206,8207],\"disallowed\"],[[8208,8208],\"valid\",[],\"NV8\"],[[8209,8209],\"mapped\",[8208]],[[8210,8214],\"valid\",[],\"NV8\"],[[8215,8215],\"disallowed_STD3_mapped\",[32,819]],[[8216,8227],\"valid\",[],\"NV8\"],[[8228,8230],\"disallowed\"],[[8231,8231],\"valid\",[],\"NV8\"],[[8232,8238],\"disallowed\"],[[8239,8239],\"disallowed_STD3_mapped\",[32]],[[8240,8242],\"valid\",[],\"NV8\"],[[8243,8243],\"mapped\",[8242,8242]],[[8244,8244],\"mapped\",[8242,8242,8242]],[[8245,8245],\"valid\",[],\"NV8\"],[[8246,8246],\"mapped\",[8245,8245]],[[8247,8247],\"mapped\",[8245,8245,8245]],[[8248,8251],\"valid\",[],\"NV8\"],[[8252,8252],\"disallowed_STD3_mapped\",[33,33]],[[8253,8253],\"valid\",[],\"NV8\"],[[8254,8254],\"disallowed_STD3_mapped\",[32,773]],[[8255,8262],\"valid\",[],\"NV8\"],[[8263,8263],\"disallowed_STD3_mapped\",[63,63]],[[8264,8264],\"disallowed_STD3_mapped\",[63,33]],[[8265,8265],\"disallowed_STD3_mapped\",[33,63]],[[8266,8269],\"valid\",[],\"NV8\"],[[8270,8274],\"valid\",[],\"NV8\"],[[8275,8276],\"valid\",[],\"NV8\"],[[8277,8278],\"valid\",[],\"NV8\"],[[8279,8279],\"mapped\",[8242,8242,8242,8242]],[[8280,8286],\"valid\",[],\"NV8\"],[[8287,8287],\"disallowed_STD3_mapped\",[32]],[[8288,8288],\"ignored\"],[[8289,8291],\"disallowed\"],[[8292,8292],\"ignored\"],[[8293,8293],\"disallowed\"],[[8294,8297],\"disallowed\"],[[8298,8303],\"disallowed\"],[[8304,8304],\"mapped\",[48]],[[8305,8305],\"mapped\",[105]],[[8306,8307],\"disallowed\"],[[8308,8308],\"mapped\",[52]],[[8309,8309],\"mapped\",[53]],[[8310,8310],\"mapped\",[54]],[[8311,8311],\"mapped\",[55]],[[8312,8312],\"mapped\",[56]],[[8313,8313],\"mapped\",[57]],[[8314,8314],\"disallowed_STD3_mapped\",[43]],[[8315,8315],\"mapped\",[8722]],[[8316,8316],\"disallowed_STD3_mapped\",[61]],[[8317,8317],\"disallowed_STD3_mapped\",[40]],[[8318,8318],\"disallowed_STD3_mapped\",[41]],[[8319,8319],\"mapped\",[110]],[[8320,8320],\"mapped\",[48]],[[8321,8321],\"mapped\",[49]],[[8322,8322],\"mapped\",[50]],[[8323,8323],\"mapped\",[51]],[[8324,8324],\"mapped\",[52]],[[8325,8325],\"mapped\",[53]],[[8326,8326],\"mapped\",[54]],[[8327,8327],\"mapped\",[55]],[[8328,8328],\"mapped\",[56]],[[8329,8329],\"mapped\",[57]],[[8330,8330],\"disallowed_STD3_mapped\",[43]],[[8331,8331],\"mapped\",[8722]],[[8332,8332],\"disallowed_STD3_mapped\",[61]],[[8333,8333],\"disallowed_STD3_mapped\",[40]],[[8334,8334],\"disallowed_STD3_mapped\",[41]],[[8335,8335],\"disallowed\"],[[8336,8336],\"mapped\",[97]],[[8337,8337],\"mapped\",[101]],[[8338,8338],\"mapped\",[111]],[[8339,8339],\"mapped\",[120]],[[8340,8340],\"mapped\",[601]],[[8341,8341],\"mapped\",[104]],[[8342,8342],\"mapped\",[107]],[[8343,8343],\"mapped\",[108]],[[8344,8344],\"mapped\",[109]],[[8345,8345],\"mapped\",[110]],[[8346,8346],\"mapped\",[112]],[[8347,8347],\"mapped\",[115]],[[8348,8348],\"mapped\",[116]],[[8349,8351],\"disallowed\"],[[8352,8359],\"valid\",[],\"NV8\"],[[8360,8360],\"mapped\",[114,115]],[[8361,8362],\"valid\",[],\"NV8\"],[[8363,8363],\"valid\",[],\"NV8\"],[[8364,8364],\"valid\",[],\"NV8\"],[[8365,8367],\"valid\",[],\"NV8\"],[[8368,8369],\"valid\",[],\"NV8\"],[[8370,8373],\"valid\",[],\"NV8\"],[[8374,8376],\"valid\",[],\"NV8\"],[[8377,8377],\"valid\",[],\"NV8\"],[[8378,8378],\"valid\",[],\"NV8\"],[[8379,8381],\"valid\",[],\"NV8\"],[[8382,8382],\"valid\",[],\"NV8\"],[[8383,8399],\"disallowed\"],[[8400,8417],\"valid\",[],\"NV8\"],[[8418,8419],\"valid\",[],\"NV8\"],[[8420,8426],\"valid\",[],\"NV8\"],[[8427,8427],\"valid\",[],\"NV8\"],[[8428,8431],\"valid\",[],\"NV8\"],[[8432,8432],\"valid\",[],\"NV8\"],[[8433,8447],\"disallowed\"],[[8448,8448],\"disallowed_STD3_mapped\",[97,47,99]],[[8449,8449],\"disallowed_STD3_mapped\",[97,47,115]],[[8450,8450],\"mapped\",[99]],[[8451,8451],\"mapped\",[176,99]],[[8452,8452],\"valid\",[],\"NV8\"],[[8453,8453],\"disallowed_STD3_mapped\",[99,47,111]],[[8454,8454],\"disallowed_STD3_mapped\",[99,47,117]],[[8455,8455],\"mapped\",[603]],[[8456,8456],\"valid\",[],\"NV8\"],[[8457,8457],\"mapped\",[176,102]],[[8458,8458],\"mapped\",[103]],[[8459,8462],\"mapped\",[104]],[[8463,8463],\"mapped\",[295]],[[8464,8465],\"mapped\",[105]],[[8466,8467],\"mapped\",[108]],[[8468,8468],\"valid\",[],\"NV8\"],[[8469,8469],\"mapped\",[110]],[[8470,8470],\"mapped\",[110,111]],[[8471,8472],\"valid\",[],\"NV8\"],[[8473,8473],\"mapped\",[112]],[[8474,8474],\"mapped\",[113]],[[8475,8477],\"mapped\",[114]],[[8478,8479],\"valid\",[],\"NV8\"],[[8480,8480],\"mapped\",[115,109]],[[8481,8481],\"mapped\",[116,101,108]],[[8482,8482],\"mapped\",[116,109]],[[8483,8483],\"valid\",[],\"NV8\"],[[8484,8484],\"mapped\",[122]],[[8485,8485],\"valid\",[],\"NV8\"],[[8486,8486],\"mapped\",[969]],[[8487,8487],\"valid\",[],\"NV8\"],[[8488,8488],\"mapped\",[122]],[[8489,8489],\"valid\",[],\"NV8\"],[[8490,8490],\"mapped\",[107]],[[8491,8491],\"mapped\",[229]],[[8492,8492],\"mapped\",[98]],[[8493,8493],\"mapped\",[99]],[[8494,8494],\"valid\",[],\"NV8\"],[[8495,8496],\"mapped\",[101]],[[8497,8497],\"mapped\",[102]],[[8498,8498],\"disallowed\"],[[8499,8499],\"mapped\",[109]],[[8500,8500],\"mapped\",[111]],[[8501,8501],\"mapped\",[1488]],[[8502,8502],\"mapped\",[1489]],[[8503,8503],\"mapped\",[1490]],[[8504,8504],\"mapped\",[1491]],[[8505,8505],\"mapped\",[105]],[[8506,8506],\"valid\",[],\"NV8\"],[[8507,8507],\"mapped\",[102,97,120]],[[8508,8508],\"mapped\",[960]],[[8509,8510],\"mapped\",[947]],[[8511,8511],\"mapped\",[960]],[[8512,8512],\"mapped\",[8721]],[[8513,8516],\"valid\",[],\"NV8\"],[[8517,8518],\"mapped\",[100]],[[8519,8519],\"mapped\",[101]],[[8520,8520],\"mapped\",[105]],[[8521,8521],\"mapped\",[106]],[[8522,8523],\"valid\",[],\"NV8\"],[[8524,8524],\"valid\",[],\"NV8\"],[[8525,8525],\"valid\",[],\"NV8\"],[[8526,8526],\"valid\"],[[8527,8527],\"valid\",[],\"NV8\"],[[8528,8528],\"mapped\",[49,8260,55]],[[8529,8529],\"mapped\",[49,8260,57]],[[8530,8530],\"mapped\",[49,8260,49,48]],[[8531,8531],\"mapped\",[49,8260,51]],[[8532,8532],\"mapped\",[50,8260,51]],[[8533,8533],\"mapped\",[49,8260,53]],[[8534,8534],\"mapped\",[50,8260,53]],[[8535,8535],\"mapped\",[51,8260,53]],[[8536,8536],\"mapped\",[52,8260,53]],[[8537,8537],\"mapped\",[49,8260,54]],[[8538,8538],\"mapped\",[53,8260,54]],[[8539,8539],\"mapped\",[49,8260,56]],[[8540,8540],\"mapped\",[51,8260,56]],[[8541,8541],\"mapped\",[53,8260,56]],[[8542,8542],\"mapped\",[55,8260,56]],[[8543,8543],\"mapped\",[49,8260]],[[8544,8544],\"mapped\",[105]],[[8545,8545],\"mapped\",[105,105]],[[8546,8546],\"mapped\",[105,105,105]],[[8547,8547],\"mapped\",[105,118]],[[8548,8548],\"mapped\",[118]],[[8549,8549],\"mapped\",[118,105]],[[8550,8550],\"mapped\",[118,105,105]],[[8551,8551],\"mapped\",[118,105,105,105]],[[8552,8552],\"mapped\",[105,120]],[[8553,8553],\"mapped\",[120]],[[8554,8554],\"mapped\",[120,105]],[[8555,8555],\"mapped\",[120,105,105]],[[8556,8556],\"mapped\",[108]],[[8557,8557],\"mapped\",[99]],[[8558,8558],\"mapped\",[100]],[[8559,8559],\"mapped\",[109]],[[8560,8560],\"mapped\",[105]],[[8561,8561],\"mapped\",[105,105]],[[8562,8562],\"mapped\",[105,105,105]],[[8563,8563],\"mapped\",[105,118]],[[8564,8564],\"mapped\",[118]],[[8565,8565],\"mapped\",[118,105]],[[8566,8566],\"mapped\",[118,105,105]],[[8567,8567],\"mapped\",[118,105,105,105]],[[8568,8568],\"mapped\",[105,120]],[[8569,8569],\"mapped\",[120]],[[8570,8570],\"mapped\",[120,105]],[[8571,8571],\"mapped\",[120,105,105]],[[8572,8572],\"mapped\",[108]],[[8573,8573],\"mapped\",[99]],[[8574,8574],\"mapped\",[100]],[[8575,8575],\"mapped\",[109]],[[8576,8578],\"valid\",[],\"NV8\"],[[8579,8579],\"disallowed\"],[[8580,8580],\"valid\"],[[8581,8584],\"valid\",[],\"NV8\"],[[8585,8585],\"mapped\",[48,8260,51]],[[8586,8587],\"valid\",[],\"NV8\"],[[8588,8591],\"disallowed\"],[[8592,8682],\"valid\",[],\"NV8\"],[[8683,8691],\"valid\",[],\"NV8\"],[[8692,8703],\"valid\",[],\"NV8\"],[[8704,8747],\"valid\",[],\"NV8\"],[[8748,8748],\"mapped\",[8747,8747]],[[8749,8749],\"mapped\",[8747,8747,8747]],[[8750,8750],\"valid\",[],\"NV8\"],[[8751,8751],\"mapped\",[8750,8750]],[[8752,8752],\"mapped\",[8750,8750,8750]],[[8753,8799],\"valid\",[],\"NV8\"],[[8800,8800],\"disallowed_STD3_valid\"],[[8801,8813],\"valid\",[],\"NV8\"],[[8814,8815],\"disallowed_STD3_valid\"],[[8816,8945],\"valid\",[],\"NV8\"],[[8946,8959],\"valid\",[],\"NV8\"],[[8960,8960],\"valid\",[],\"NV8\"],[[8961,8961],\"valid\",[],\"NV8\"],[[8962,9000],\"valid\",[],\"NV8\"],[[9001,9001],\"mapped\",[12296]],[[9002,9002],\"mapped\",[12297]],[[9003,9082],\"valid\",[],\"NV8\"],[[9083,9083],\"valid\",[],\"NV8\"],[[9084,9084],\"valid\",[],\"NV8\"],[[9085,9114],\"valid\",[],\"NV8\"],[[9115,9166],\"valid\",[],\"NV8\"],[[9167,9168],\"valid\",[],\"NV8\"],[[9169,9179],\"valid\",[],\"NV8\"],[[9180,9191],\"valid\",[],\"NV8\"],[[9192,9192],\"valid\",[],\"NV8\"],[[9193,9203],\"valid\",[],\"NV8\"],[[9204,9210],\"valid\",[],\"NV8\"],[[9211,9215],\"disallowed\"],[[9216,9252],\"valid\",[],\"NV8\"],[[9253,9254],\"valid\",[],\"NV8\"],[[9255,9279],\"disallowed\"],[[9280,9290],\"valid\",[],\"NV8\"],[[9291,9311],\"disallowed\"],[[9312,9312],\"mapped\",[49]],[[9313,9313],\"mapped\",[50]],[[9314,9314],\"mapped\",[51]],[[9315,9315],\"mapped\",[52]],[[9316,9316],\"mapped\",[53]],[[9317,9317],\"mapped\",[54]],[[9318,9318],\"mapped\",[55]],[[9319,9319],\"mapped\",[56]],[[9320,9320],\"mapped\",[57]],[[9321,9321],\"mapped\",[49,48]],[[9322,9322],\"mapped\",[49,49]],[[9323,9323],\"mapped\",[49,50]],[[9324,9324],\"mapped\",[49,51]],[[9325,9325],\"mapped\",[49,52]],[[9326,9326],\"mapped\",[49,53]],[[9327,9327],\"mapped\",[49,54]],[[9328,9328],\"mapped\",[49,55]],[[9329,9329],\"mapped\",[49,56]],[[9330,9330],\"mapped\",[49,57]],[[9331,9331],\"mapped\",[50,48]],[[9332,9332],\"disallowed_STD3_mapped\",[40,49,41]],[[9333,9333],\"disallowed_STD3_mapped\",[40,50,41]],[[9334,9334],\"disallowed_STD3_mapped\",[40,51,41]],[[9335,9335],\"disallowed_STD3_mapped\",[40,52,41]],[[9336,9336],\"disallowed_STD3_mapped\",[40,53,41]],[[9337,9337],\"disallowed_STD3_mapped\",[40,54,41]],[[9338,9338],\"disallowed_STD3_mapped\",[40,55,41]],[[9339,9339],\"disallowed_STD3_mapped\",[40,56,41]],[[9340,9340],\"disallowed_STD3_mapped\",[40,57,41]],[[9341,9341],\"disallowed_STD3_mapped\",[40,49,48,41]],[[9342,9342],\"disallowed_STD3_mapped\",[40,49,49,41]],[[9343,9343],\"disallowed_STD3_mapped\",[40,49,50,41]],[[9344,9344],\"disallowed_STD3_mapped\",[40,49,51,41]],[[9345,9345],\"disallowed_STD3_mapped\",[40,49,52,41]],[[9346,9346],\"disallowed_STD3_mapped\",[40,49,53,41]],[[9347,9347],\"disallowed_STD3_mapped\",[40,49,54,41]],[[9348,9348],\"disallowed_STD3_mapped\",[40,49,55,41]],[[9349,9349],\"disallowed_STD3_mapped\",[40,49,56,41]],[[9350,9350],\"disallowed_STD3_mapped\",[40,49,57,41]],[[9351,9351],\"disallowed_STD3_mapped\",[40,50,48,41]],[[9352,9371],\"disallowed\"],[[9372,9372],\"disallowed_STD3_mapped\",[40,97,41]],[[9373,9373],\"disallowed_STD3_mapped\",[40,98,41]],[[9374,9374],\"disallowed_STD3_mapped\",[40,99,41]],[[9375,9375],\"disallowed_STD3_mapped\",[40,100,41]],[[9376,9376],\"disallowed_STD3_mapped\",[40,101,41]],[[9377,9377],\"disallowed_STD3_mapped\",[40,102,41]],[[9378,9378],\"disallowed_STD3_mapped\",[40,103,41]],[[9379,9379],\"disallowed_STD3_mapped\",[40,104,41]],[[9380,9380],\"disallowed_STD3_mapped\",[40,105,41]],[[9381,9381],\"disallowed_STD3_mapped\",[40,106,41]],[[9382,9382],\"disallowed_STD3_mapped\",[40,107,41]],[[9383,9383],\"disallowed_STD3_mapped\",[40,108,41]],[[9384,9384],\"disallowed_STD3_mapped\",[40,109,41]],[[9385,9385],\"disallowed_STD3_mapped\",[40,110,41]],[[9386,9386],\"disallowed_STD3_mapped\",[40,111,41]],[[9387,9387],\"disallowed_STD3_mapped\",[40,112,41]],[[9388,9388],\"disallowed_STD3_mapped\",[40,113,41]],[[9389,9389],\"disallowed_STD3_mapped\",[40,114,41]],[[9390,9390],\"disallowed_STD3_mapped\",[40,115,41]],[[9391,9391],\"disallowed_STD3_mapped\",[40,116,41]],[[9392,9392],\"disallowed_STD3_mapped\",[40,117,41]],[[9393,9393],\"disallowed_STD3_mapped\",[40,118,41]],[[9394,9394],\"disallowed_STD3_mapped\",[40,119,41]],[[9395,9395],\"disallowed_STD3_mapped\",[40,120,41]],[[9396,9396],\"disallowed_STD3_mapped\",[40,121,41]],[[9397,9397],\"disallowed_STD3_mapped\",[40,122,41]],[[9398,9398],\"mapped\",[97]],[[9399,9399],\"mapped\",[98]],[[9400,9400],\"mapped\",[99]],[[9401,9401],\"mapped\",[100]],[[9402,9402],\"mapped\",[101]],[[9403,9403],\"mapped\",[102]],[[9404,9404],\"mapped\",[103]],[[9405,9405],\"mapped\",[104]],[[9406,9406],\"mapped\",[105]],[[9407,9407],\"mapped\",[106]],[[9408,9408],\"mapped\",[107]],[[9409,9409],\"mapped\",[108]],[[9410,9410],\"mapped\",[109]],[[9411,9411],\"mapped\",[110]],[[9412,9412],\"mapped\",[111]],[[9413,9413],\"mapped\",[112]],[[9414,9414],\"mapped\",[113]],[[9415,9415],\"mapped\",[114]],[[9416,9416],\"mapped\",[115]],[[9417,9417],\"mapped\",[116]],[[9418,9418],\"mapped\",[117]],[[9419,9419],\"mapped\",[118]],[[9420,9420],\"mapped\",[119]],[[9421,9421],\"mapped\",[120]],[[9422,9422],\"mapped\",[121]],[[9423,9423],\"mapped\",[122]],[[9424,9424],\"mapped\",[97]],[[9425,9425],\"mapped\",[98]],[[9426,9426],\"mapped\",[99]],[[9427,9427],\"mapped\",[100]],[[9428,9428],\"mapped\",[101]],[[9429,9429],\"mapped\",[102]],[[9430,9430],\"mapped\",[103]],[[9431,9431],\"mapped\",[104]],[[9432,9432],\"mapped\",[105]],[[9433,9433],\"mapped\",[106]],[[9434,9434],\"mapped\",[107]],[[9435,9435],\"mapped\",[108]],[[9436,9436],\"mapped\",[109]],[[9437,9437],\"mapped\",[110]],[[9438,9438],\"mapped\",[111]],[[9439,9439],\"mapped\",[112]],[[9440,9440],\"mapped\",[113]],[[9441,9441],\"mapped\",[114]],[[9442,9442],\"mapped\",[115]],[[9443,9443],\"mapped\",[116]],[[9444,9444],\"mapped\",[117]],[[9445,9445],\"mapped\",[118]],[[9446,9446],\"mapped\",[119]],[[9447,9447],\"mapped\",[120]],[[9448,9448],\"mapped\",[121]],[[9449,9449],\"mapped\",[122]],[[9450,9450],\"mapped\",[48]],[[9451,9470],\"valid\",[],\"NV8\"],[[9471,9471],\"valid\",[],\"NV8\"],[[9472,9621],\"valid\",[],\"NV8\"],[[9622,9631],\"valid\",[],\"NV8\"],[[9632,9711],\"valid\",[],\"NV8\"],[[9712,9719],\"valid\",[],\"NV8\"],[[9720,9727],\"valid\",[],\"NV8\"],[[9728,9747],\"valid\",[],\"NV8\"],[[9748,9749],\"valid\",[],\"NV8\"],[[9750,9751],\"valid\",[],\"NV8\"],[[9752,9752],\"valid\",[],\"NV8\"],[[9753,9753],\"valid\",[],\"NV8\"],[[9754,9839],\"valid\",[],\"NV8\"],[[9840,9841],\"valid\",[],\"NV8\"],[[9842,9853],\"valid\",[],\"NV8\"],[[9854,9855],\"valid\",[],\"NV8\"],[[9856,9865],\"valid\",[],\"NV8\"],[[9866,9873],\"valid\",[],\"NV8\"],[[9874,9884],\"valid\",[],\"NV8\"],[[9885,9885],\"valid\",[],\"NV8\"],[[9886,9887],\"valid\",[],\"NV8\"],[[9888,9889],\"valid\",[],\"NV8\"],[[9890,9905],\"valid\",[],\"NV8\"],[[9906,9906],\"valid\",[],\"NV8\"],[[9907,9916],\"valid\",[],\"NV8\"],[[9917,9919],\"valid\",[],\"NV8\"],[[9920,9923],\"valid\",[],\"NV8\"],[[9924,9933],\"valid\",[],\"NV8\"],[[9934,9934],\"valid\",[],\"NV8\"],[[9935,9953],\"valid\",[],\"NV8\"],[[9954,9954],\"valid\",[],\"NV8\"],[[9955,9955],\"valid\",[],\"NV8\"],[[9956,9959],\"valid\",[],\"NV8\"],[[9960,9983],\"valid\",[],\"NV8\"],[[9984,9984],\"valid\",[],\"NV8\"],[[9985,9988],\"valid\",[],\"NV8\"],[[9989,9989],\"valid\",[],\"NV8\"],[[9990,9993],\"valid\",[],\"NV8\"],[[9994,9995],\"valid\",[],\"NV8\"],[[9996,10023],\"valid\",[],\"NV8\"],[[10024,10024],\"valid\",[],\"NV8\"],[[10025,10059],\"valid\",[],\"NV8\"],[[10060,10060],\"valid\",[],\"NV8\"],[[10061,10061],\"valid\",[],\"NV8\"],[[10062,10062],\"valid\",[],\"NV8\"],[[10063,10066],\"valid\",[],\"NV8\"],[[10067,10069],\"valid\",[],\"NV8\"],[[10070,10070],\"valid\",[],\"NV8\"],[[10071,10071],\"valid\",[],\"NV8\"],[[10072,10078],\"valid\",[],\"NV8\"],[[10079,10080],\"valid\",[],\"NV8\"],[[10081,10087],\"valid\",[],\"NV8\"],[[10088,10101],\"valid\",[],\"NV8\"],[[10102,10132],\"valid\",[],\"NV8\"],[[10133,10135],\"valid\",[],\"NV8\"],[[10136,10159],\"valid\",[],\"NV8\"],[[10160,10160],\"valid\",[],\"NV8\"],[[10161,10174],\"valid\",[],\"NV8\"],[[10175,10175],\"valid\",[],\"NV8\"],[[10176,10182],\"valid\",[],\"NV8\"],[[10183,10186],\"valid\",[],\"NV8\"],[[10187,10187],\"valid\",[],\"NV8\"],[[10188,10188],\"valid\",[],\"NV8\"],[[10189,10189],\"valid\",[],\"NV8\"],[[10190,10191],\"valid\",[],\"NV8\"],[[10192,10219],\"valid\",[],\"NV8\"],[[10220,10223],\"valid\",[],\"NV8\"],[[10224,10239],\"valid\",[],\"NV8\"],[[10240,10495],\"valid\",[],\"NV8\"],[[10496,10763],\"valid\",[],\"NV8\"],[[10764,10764],\"mapped\",[8747,8747,8747,8747]],[[10765,10867],\"valid\",[],\"NV8\"],[[10868,10868],\"disallowed_STD3_mapped\",[58,58,61]],[[10869,10869],\"disallowed_STD3_mapped\",[61,61]],[[10870,10870],\"disallowed_STD3_mapped\",[61,61,61]],[[10871,10971],\"valid\",[],\"NV8\"],[[10972,10972],\"mapped\",[10973,824]],[[10973,11007],\"valid\",[],\"NV8\"],[[11008,11021],\"valid\",[],\"NV8\"],[[11022,11027],\"valid\",[],\"NV8\"],[[11028,11034],\"valid\",[],\"NV8\"],[[11035,11039],\"valid\",[],\"NV8\"],[[11040,11043],\"valid\",[],\"NV8\"],[[11044,11084],\"valid\",[],\"NV8\"],[[11085,11087],\"valid\",[],\"NV8\"],[[11088,11092],\"valid\",[],\"NV8\"],[[11093,11097],\"valid\",[],\"NV8\"],[[11098,11123],\"valid\",[],\"NV8\"],[[11124,11125],\"disallowed\"],[[11126,11157],\"valid\",[],\"NV8\"],[[11158,11159],\"disallowed\"],[[11160,11193],\"valid\",[],\"NV8\"],[[11194,11196],\"disallowed\"],[[11197,11208],\"valid\",[],\"NV8\"],[[11209,11209],\"disallowed\"],[[11210,11217],\"valid\",[],\"NV8\"],[[11218,11243],\"disallowed\"],[[11244,11247],\"valid\",[],\"NV8\"],[[11248,11263],\"disallowed\"],[[11264,11264],\"mapped\",[11312]],[[11265,11265],\"mapped\",[11313]],[[11266,11266],\"mapped\",[11314]],[[11267,11267],\"mapped\",[11315]],[[11268,11268],\"mapped\",[11316]],[[11269,11269],\"mapped\",[11317]],[[11270,11270],\"mapped\",[11318]],[[11271,11271],\"mapped\",[11319]],[[11272,11272],\"mapped\",[11320]],[[11273,11273],\"mapped\",[11321]],[[11274,11274],\"mapped\",[11322]],[[11275,11275],\"mapped\",[11323]],[[11276,11276],\"mapped\",[11324]],[[11277,11277],\"mapped\",[11325]],[[11278,11278],\"mapped\",[11326]],[[11279,11279],\"mapped\",[11327]],[[11280,11280],\"mapped\",[11328]],[[11281,11281],\"mapped\",[11329]],[[11282,11282],\"mapped\",[11330]],[[11283,11283],\"mapped\",[11331]],[[11284,11284],\"mapped\",[11332]],[[11285,11285],\"mapped\",[11333]],[[11286,11286],\"mapped\",[11334]],[[11287,11287],\"mapped\",[11335]],[[11288,11288],\"mapped\",[11336]],[[11289,11289],\"mapped\",[11337]],[[11290,11290],\"mapped\",[11338]],[[11291,11291],\"mapped\",[11339]],[[11292,11292],\"mapped\",[11340]],[[11293,11293],\"mapped\",[11341]],[[11294,11294],\"mapped\",[11342]],[[11295,11295],\"mapped\",[11343]],[[11296,11296],\"mapped\",[11344]],[[11297,11297],\"mapped\",[11345]],[[11298,11298],\"mapped\",[11346]],[[11299,11299],\"mapped\",[11347]],[[11300,11300],\"mapped\",[11348]],[[11301,11301],\"mapped\",[11349]],[[11302,11302],\"mapped\",[11350]],[[11303,11303],\"mapped\",[11351]],[[11304,11304],\"mapped\",[11352]],[[11305,11305],\"mapped\",[11353]],[[11306,11306],\"mapped\",[11354]],[[11307,11307],\"mapped\",[11355]],[[11308,11308],\"mapped\",[11356]],[[11309,11309],\"mapped\",[11357]],[[11310,11310],\"mapped\",[11358]],[[11311,11311],\"disallowed\"],[[11312,11358],\"valid\"],[[11359,11359],\"disallowed\"],[[11360,11360],\"mapped\",[11361]],[[11361,11361],\"valid\"],[[11362,11362],\"mapped\",[619]],[[11363,11363],\"mapped\",[7549]],[[11364,11364],\"mapped\",[637]],[[11365,11366],\"valid\"],[[11367,11367],\"mapped\",[11368]],[[11368,11368],\"valid\"],[[11369,11369],\"mapped\",[11370]],[[11370,11370],\"valid\"],[[11371,11371],\"mapped\",[11372]],[[11372,11372],\"valid\"],[[11373,11373],\"mapped\",[593]],[[11374,11374],\"mapped\",[625]],[[11375,11375],\"mapped\",[592]],[[11376,11376],\"mapped\",[594]],[[11377,11377],\"valid\"],[[11378,11378],\"mapped\",[11379]],[[11379,11379],\"valid\"],[[11380,11380],\"valid\"],[[11381,11381],\"mapped\",[11382]],[[11382,11383],\"valid\"],[[11384,11387],\"valid\"],[[11388,11388],\"mapped\",[106]],[[11389,11389],\"mapped\",[118]],[[11390,11390],\"mapped\",[575]],[[11391,11391],\"mapped\",[576]],[[11392,11392],\"mapped\",[11393]],[[11393,11393],\"valid\"],[[11394,11394],\"mapped\",[11395]],[[11395,11395],\"valid\"],[[11396,11396],\"mapped\",[11397]],[[11397,11397],\"valid\"],[[11398,11398],\"mapped\",[11399]],[[11399,11399],\"valid\"],[[11400,11400],\"mapped\",[11401]],[[11401,11401],\"valid\"],[[11402,11402],\"mapped\",[11403]],[[11403,11403],\"valid\"],[[11404,11404],\"mapped\",[11405]],[[11405,11405],\"valid\"],[[11406,11406],\"mapped\",[11407]],[[11407,11407],\"valid\"],[[11408,11408],\"mapped\",[11409]],[[11409,11409],\"valid\"],[[11410,11410],\"mapped\",[11411]],[[11411,11411],\"valid\"],[[11412,11412],\"mapped\",[11413]],[[11413,11413],\"valid\"],[[11414,11414],\"mapped\",[11415]],[[11415,11415],\"valid\"],[[11416,11416],\"mapped\",[11417]],[[11417,11417],\"valid\"],[[11418,11418],\"mapped\",[11419]],[[11419,11419],\"valid\"],[[11420,11420],\"mapped\",[11421]],[[11421,11421],\"valid\"],[[11422,11422],\"mapped\",[11423]],[[11423,11423],\"valid\"],[[11424,11424],\"mapped\",[11425]],[[11425,11425],\"valid\"],[[11426,11426],\"mapped\",[11427]],[[11427,11427],\"valid\"],[[11428,11428],\"mapped\",[11429]],[[11429,11429],\"valid\"],[[11430,11430],\"mapped\",[11431]],[[11431,11431],\"valid\"],[[11432,11432],\"mapped\",[11433]],[[11433,11433],\"valid\"],[[11434,11434],\"mapped\",[11435]],[[11435,11435],\"valid\"],[[11436,11436],\"mapped\",[11437]],[[11437,11437],\"valid\"],[[11438,11438],\"mapped\",[11439]],[[11439,11439],\"valid\"],[[11440,11440],\"mapped\",[11441]],[[11441,11441],\"valid\"],[[11442,11442],\"mapped\",[11443]],[[11443,11443],\"valid\"],[[11444,11444],\"mapped\",[11445]],[[11445,11445],\"valid\"],[[11446,11446],\"mapped\",[11447]],[[11447,11447],\"valid\"],[[11448,11448],\"mapped\",[11449]],[[11449,11449],\"valid\"],[[11450,11450],\"mapped\",[11451]],[[11451,11451],\"valid\"],[[11452,11452],\"mapped\",[11453]],[[11453,11453],\"valid\"],[[11454,11454],\"mapped\",[11455]],[[11455,11455],\"valid\"],[[11456,11456],\"mapped\",[11457]],[[11457,11457],\"valid\"],[[11458,11458],\"mapped\",[11459]],[[11459,11459],\"valid\"],[[11460,11460],\"mapped\",[11461]],[[11461,11461],\"valid\"],[[11462,11462],\"mapped\",[11463]],[[11463,11463],\"valid\"],[[11464,11464],\"mapped\",[11465]],[[11465,11465],\"valid\"],[[11466,11466],\"mapped\",[11467]],[[11467,11467],\"valid\"],[[11468,11468],\"mapped\",[11469]],[[11469,11469],\"valid\"],[[11470,11470],\"mapped\",[11471]],[[11471,11471],\"valid\"],[[11472,11472],\"mapped\",[11473]],[[11473,11473],\"valid\"],[[11474,11474],\"mapped\",[11475]],[[11475,11475],\"valid\"],[[11476,11476],\"mapped\",[11477]],[[11477,11477],\"valid\"],[[11478,11478],\"mapped\",[11479]],[[11479,11479],\"valid\"],[[11480,11480],\"mapped\",[11481]],[[11481,11481],\"valid\"],[[11482,11482],\"mapped\",[11483]],[[11483,11483],\"valid\"],[[11484,11484],\"mapped\",[11485]],[[11485,11485],\"valid\"],[[11486,11486],\"mapped\",[11487]],[[11487,11487],\"valid\"],[[11488,11488],\"mapped\",[11489]],[[11489,11489],\"valid\"],[[11490,11490],\"mapped\",[11491]],[[11491,11492],\"valid\"],[[11493,11498],\"valid\",[],\"NV8\"],[[11499,11499],\"mapped\",[11500]],[[11500,11500],\"valid\"],[[11501,11501],\"mapped\",[11502]],[[11502,11505],\"valid\"],[[11506,11506],\"mapped\",[11507]],[[11507,11507],\"valid\"],[[11508,11512],\"disallowed\"],[[11513,11519],\"valid\",[],\"NV8\"],[[11520,11557],\"valid\"],[[11558,11558],\"disallowed\"],[[11559,11559],\"valid\"],[[11560,11564],\"disallowed\"],[[11565,11565],\"valid\"],[[11566,11567],\"disallowed\"],[[11568,11621],\"valid\"],[[11622,11623],\"valid\"],[[11624,11630],\"disallowed\"],[[11631,11631],\"mapped\",[11617]],[[11632,11632],\"valid\",[],\"NV8\"],[[11633,11646],\"disallowed\"],[[11647,11647],\"valid\"],[[11648,11670],\"valid\"],[[11671,11679],\"disallowed\"],[[11680,11686],\"valid\"],[[11687,11687],\"disallowed\"],[[11688,11694],\"valid\"],[[11695,11695],\"disallowed\"],[[11696,11702],\"valid\"],[[11703,11703],\"disallowed\"],[[11704,11710],\"valid\"],[[11711,11711],\"disallowed\"],[[11712,11718],\"valid\"],[[11719,11719],\"disallowed\"],[[11720,11726],\"valid\"],[[11727,11727],\"disallowed\"],[[11728,11734],\"valid\"],[[11735,11735],\"disallowed\"],[[11736,11742],\"valid\"],[[11743,11743],\"disallowed\"],[[11744,11775],\"valid\"],[[11776,11799],\"valid\",[],\"NV8\"],[[11800,11803],\"valid\",[],\"NV8\"],[[11804,11805],\"valid\",[],\"NV8\"],[[11806,11822],\"valid\",[],\"NV8\"],[[11823,11823],\"valid\"],[[11824,11824],\"valid\",[],\"NV8\"],[[11825,11825],\"valid\",[],\"NV8\"],[[11826,11835],\"valid\",[],\"NV8\"],[[11836,11842],\"valid\",[],\"NV8\"],[[11843,11903],\"disallowed\"],[[11904,11929],\"valid\",[],\"NV8\"],[[11930,11930],\"disallowed\"],[[11931,11934],\"valid\",[],\"NV8\"],[[11935,11935],\"mapped\",[27597]],[[11936,12018],\"valid\",[],\"NV8\"],[[12019,12019],\"mapped\",[40863]],[[12020,12031],\"disallowed\"],[[12032,12032],\"mapped\",[19968]],[[12033,12033],\"mapped\",[20008]],[[12034,12034],\"mapped\",[20022]],[[12035,12035],\"mapped\",[20031]],[[12036,12036],\"mapped\",[20057]],[[12037,12037],\"mapped\",[20101]],[[12038,12038],\"mapped\",[20108]],[[12039,12039],\"mapped\",[20128]],[[12040,12040],\"mapped\",[20154]],[[12041,12041],\"mapped\",[20799]],[[12042,12042],\"mapped\",[20837]],[[12043,12043],\"mapped\",[20843]],[[12044,12044],\"mapped\",[20866]],[[12045,12045],\"mapped\",[20886]],[[12046,12046],\"mapped\",[20907]],[[12047,12047],\"mapped\",[20960]],[[12048,12048],\"mapped\",[20981]],[[12049,12049],\"mapped\",[20992]],[[12050,12050],\"mapped\",[21147]],[[12051,12051],\"mapped\",[21241]],[[12052,12052],\"mapped\",[21269]],[[12053,12053],\"mapped\",[21274]],[[12054,12054],\"mapped\",[21304]],[[12055,12055],\"mapped\",[21313]],[[12056,12056],\"mapped\",[21340]],[[12057,12057],\"mapped\",[21353]],[[12058,12058],\"mapped\",[21378]],[[12059,12059],\"mapped\",[21430]],[[12060,12060],\"mapped\",[21448]],[[12061,12061],\"mapped\",[21475]],[[12062,12062],\"mapped\",[22231]],[[12063,12063],\"mapped\",[22303]],[[12064,12064],\"mapped\",[22763]],[[12065,12065],\"mapped\",[22786]],[[12066,12066],\"mapped\",[22794]],[[12067,12067],\"mapped\",[22805]],[[12068,12068],\"mapped\",[22823]],[[12069,12069],\"mapped\",[22899]],[[12070,12070],\"mapped\",[23376]],[[12071,12071],\"mapped\",[23424]],[[12072,12072],\"mapped\",[23544]],[[12073,12073],\"mapped\",[23567]],[[12074,12074],\"mapped\",[23586]],[[12075,12075],\"mapped\",[23608]],[[12076,12076],\"mapped\",[23662]],[[12077,12077],\"mapped\",[23665]],[[12078,12078],\"mapped\",[24027]],[[12079,12079],\"mapped\",[24037]],[[12080,12080],\"mapped\",[24049]],[[12081,12081],\"mapped\",[24062]],[[12082,12082],\"mapped\",[24178]],[[12083,12083],\"mapped\",[24186]],[[12084,12084],\"mapped\",[24191]],[[12085,12085],\"mapped\",[24308]],[[12086,12086],\"mapped\",[24318]],[[12087,12087],\"mapped\",[24331]],[[12088,12088],\"mapped\",[24339]],[[12089,12089],\"mapped\",[24400]],[[12090,12090],\"mapped\",[24417]],[[12091,12091],\"mapped\",[24435]],[[12092,12092],\"mapped\",[24515]],[[12093,12093],\"mapped\",[25096]],[[12094,12094],\"mapped\",[25142]],[[12095,12095],\"mapped\",[25163]],[[12096,12096],\"mapped\",[25903]],[[12097,12097],\"mapped\",[25908]],[[12098,12098],\"mapped\",[25991]],[[12099,12099],\"mapped\",[26007]],[[12100,12100],\"mapped\",[26020]],[[12101,12101],\"mapped\",[26041]],[[12102,12102],\"mapped\",[26080]],[[12103,12103],\"mapped\",[26085]],[[12104,12104],\"mapped\",[26352]],[[12105,12105],\"mapped\",[26376]],[[12106,12106],\"mapped\",[26408]],[[12107,12107],\"mapped\",[27424]],[[12108,12108],\"mapped\",[27490]],[[12109,12109],\"mapped\",[27513]],[[12110,12110],\"mapped\",[27571]],[[12111,12111],\"mapped\",[27595]],[[12112,12112],\"mapped\",[27604]],[[12113,12113],\"mapped\",[27611]],[[12114,12114],\"mapped\",[27663]],[[12115,12115],\"mapped\",[27668]],[[12116,12116],\"mapped\",[27700]],[[12117,12117],\"mapped\",[28779]],[[12118,12118],\"mapped\",[29226]],[[12119,12119],\"mapped\",[29238]],[[12120,12120],\"mapped\",[29243]],[[12121,12121],\"mapped\",[29247]],[[12122,12122],\"mapped\",[29255]],[[12123,12123],\"mapped\",[29273]],[[12124,12124],\"mapped\",[29275]],[[12125,12125],\"mapped\",[29356]],[[12126,12126],\"mapped\",[29572]],[[12127,12127],\"mapped\",[29577]],[[12128,12128],\"mapped\",[29916]],[[12129,12129],\"mapped\",[29926]],[[12130,12130],\"mapped\",[29976]],[[12131,12131],\"mapped\",[29983]],[[12132,12132],\"mapped\",[29992]],[[12133,12133],\"mapped\",[30000]],[[12134,12134],\"mapped\",[30091]],[[12135,12135],\"mapped\",[30098]],[[12136,12136],\"mapped\",[30326]],[[12137,12137],\"mapped\",[30333]],[[12138,12138],\"mapped\",[30382]],[[12139,12139],\"mapped\",[30399]],[[12140,12140],\"mapped\",[30446]],[[12141,12141],\"mapped\",[30683]],[[12142,12142],\"mapped\",[30690]],[[12143,12143],\"mapped\",[30707]],[[12144,12144],\"mapped\",[31034]],[[12145,12145],\"mapped\",[31160]],[[12146,12146],\"mapped\",[31166]],[[12147,12147],\"mapped\",[31348]],[[12148,12148],\"mapped\",[31435]],[[12149,12149],\"mapped\",[31481]],[[12150,12150],\"mapped\",[31859]],[[12151,12151],\"mapped\",[31992]],[[12152,12152],\"mapped\",[32566]],[[12153,12153],\"mapped\",[32593]],[[12154,12154],\"mapped\",[32650]],[[12155,12155],\"mapped\",[32701]],[[12156,12156],\"mapped\",[32769]],[[12157,12157],\"mapped\",[32780]],[[12158,12158],\"mapped\",[32786]],[[12159,12159],\"mapped\",[32819]],[[12160,12160],\"mapped\",[32895]],[[12161,12161],\"mapped\",[32905]],[[12162,12162],\"mapped\",[33251]],[[12163,12163],\"mapped\",[33258]],[[12164,12164],\"mapped\",[33267]],[[12165,12165],\"mapped\",[33276]],[[12166,12166],\"mapped\",[33292]],[[12167,12167],\"mapped\",[33307]],[[12168,12168],\"mapped\",[33311]],[[12169,12169],\"mapped\",[33390]],[[12170,12170],\"mapped\",[33394]],[[12171,12171],\"mapped\",[33400]],[[12172,12172],\"mapped\",[34381]],[[12173,12173],\"mapped\",[34411]],[[12174,12174],\"mapped\",[34880]],[[12175,12175],\"mapped\",[34892]],[[12176,12176],\"mapped\",[34915]],[[12177,12177],\"mapped\",[35198]],[[12178,12178],\"mapped\",[35211]],[[12179,12179],\"mapped\",[35282]],[[12180,12180],\"mapped\",[35328]],[[12181,12181],\"mapped\",[35895]],[[12182,12182],\"mapped\",[35910]],[[12183,12183],\"mapped\",[35925]],[[12184,12184],\"mapped\",[35960]],[[12185,12185],\"mapped\",[35997]],[[12186,12186],\"mapped\",[36196]],[[12187,12187],\"mapped\",[36208]],[[12188,12188],\"mapped\",[36275]],[[12189,12189],\"mapped\",[36523]],[[12190,12190],\"mapped\",[36554]],[[12191,12191],\"mapped\",[36763]],[[12192,12192],\"mapped\",[36784]],[[12193,12193],\"mapped\",[36789]],[[12194,12194],\"mapped\",[37009]],[[12195,12195],\"mapped\",[37193]],[[12196,12196],\"mapped\",[37318]],[[12197,12197],\"mapped\",[37324]],[[12198,12198],\"mapped\",[37329]],[[12199,12199],\"mapped\",[38263]],[[12200,12200],\"mapped\",[38272]],[[12201,12201],\"mapped\",[38428]],[[12202,12202],\"mapped\",[38582]],[[12203,12203],\"mapped\",[38585]],[[12204,12204],\"mapped\",[38632]],[[12205,12205],\"mapped\",[38737]],[[12206,12206],\"mapped\",[38750]],[[12207,12207],\"mapped\",[38754]],[[12208,12208],\"mapped\",[38761]],[[12209,12209],\"mapped\",[38859]],[[12210,12210],\"mapped\",[38893]],[[12211,12211],\"mapped\",[38899]],[[12212,12212],\"mapped\",[38913]],[[12213,12213],\"mapped\",[39080]],[[12214,12214],\"mapped\",[39131]],[[12215,12215],\"mapped\",[39135]],[[12216,12216],\"mapped\",[39318]],[[12217,12217],\"mapped\",[39321]],[[12218,12218],\"mapped\",[39340]],[[12219,12219],\"mapped\",[39592]],[[12220,12220],\"mapped\",[39640]],[[12221,12221],\"mapped\",[39647]],[[12222,12222],\"mapped\",[39717]],[[12223,12223],\"mapped\",[39727]],[[12224,12224],\"mapped\",[39730]],[[12225,12225],\"mapped\",[39740]],[[12226,12226],\"mapped\",[39770]],[[12227,12227],\"mapped\",[40165]],[[12228,12228],\"mapped\",[40565]],[[12229,12229],\"mapped\",[40575]],[[12230,12230],\"mapped\",[40613]],[[12231,12231],\"mapped\",[40635]],[[12232,12232],\"mapped\",[40643]],[[12233,12233],\"mapped\",[40653]],[[12234,12234],\"mapped\",[40657]],[[12235,12235],\"mapped\",[40697]],[[12236,12236],\"mapped\",[40701]],[[12237,12237],\"mapped\",[40718]],[[12238,12238],\"mapped\",[40723]],[[12239,12239],\"mapped\",[40736]],[[12240,12240],\"mapped\",[40763]],[[12241,12241],\"mapped\",[40778]],[[12242,12242],\"mapped\",[40786]],[[12243,12243],\"mapped\",[40845]],[[12244,12244],\"mapped\",[40860]],[[12245,12245],\"mapped\",[40864]],[[12246,12271],\"disallowed\"],[[12272,12283],\"disallowed\"],[[12284,12287],\"disallowed\"],[[12288,12288],\"disallowed_STD3_mapped\",[32]],[[12289,12289],\"valid\",[],\"NV8\"],[[12290,12290],\"mapped\",[46]],[[12291,12292],\"valid\",[],\"NV8\"],[[12293,12295],\"valid\"],[[12296,12329],\"valid\",[],\"NV8\"],[[12330,12333],\"valid\"],[[12334,12341],\"valid\",[],\"NV8\"],[[12342,12342],\"mapped\",[12306]],[[12343,12343],\"valid\",[],\"NV8\"],[[12344,12344],\"mapped\",[21313]],[[12345,12345],\"mapped\",[21316]],[[12346,12346],\"mapped\",[21317]],[[12347,12347],\"valid\",[],\"NV8\"],[[12348,12348],\"valid\"],[[12349,12349],\"valid\",[],\"NV8\"],[[12350,12350],\"valid\",[],\"NV8\"],[[12351,12351],\"valid\",[],\"NV8\"],[[12352,12352],\"disallowed\"],[[12353,12436],\"valid\"],[[12437,12438],\"valid\"],[[12439,12440],\"disallowed\"],[[12441,12442],\"valid\"],[[12443,12443],\"disallowed_STD3_mapped\",[32,12441]],[[12444,12444],\"disallowed_STD3_mapped\",[32,12442]],[[12445,12446],\"valid\"],[[12447,12447],\"mapped\",[12424,12426]],[[12448,12448],\"valid\",[],\"NV8\"],[[12449,12542],\"valid\"],[[12543,12543],\"mapped\",[12467,12488]],[[12544,12548],\"disallowed\"],[[12549,12588],\"valid\"],[[12589,12589],\"valid\"],[[12590,12592],\"disallowed\"],[[12593,12593],\"mapped\",[4352]],[[12594,12594],\"mapped\",[4353]],[[12595,12595],\"mapped\",[4522]],[[12596,12596],\"mapped\",[4354]],[[12597,12597],\"mapped\",[4524]],[[12598,12598],\"mapped\",[4525]],[[12599,12599],\"mapped\",[4355]],[[12600,12600],\"mapped\",[4356]],[[12601,12601],\"mapped\",[4357]],[[12602,12602],\"mapped\",[4528]],[[12603,12603],\"mapped\",[4529]],[[12604,12604],\"mapped\",[4530]],[[12605,12605],\"mapped\",[4531]],[[12606,12606],\"mapped\",[4532]],[[12607,12607],\"mapped\",[4533]],[[12608,12608],\"mapped\",[4378]],[[12609,12609],\"mapped\",[4358]],[[12610,12610],\"mapped\",[4359]],[[12611,12611],\"mapped\",[4360]],[[12612,12612],\"mapped\",[4385]],[[12613,12613],\"mapped\",[4361]],[[12614,12614],\"mapped\",[4362]],[[12615,12615],\"mapped\",[4363]],[[12616,12616],\"mapped\",[4364]],[[12617,12617],\"mapped\",[4365]],[[12618,12618],\"mapped\",[4366]],[[12619,12619],\"mapped\",[4367]],[[12620,12620],\"mapped\",[4368]],[[12621,12621],\"mapped\",[4369]],[[12622,12622],\"mapped\",[4370]],[[12623,12623],\"mapped\",[4449]],[[12624,12624],\"mapped\",[4450]],[[12625,12625],\"mapped\",[4451]],[[12626,12626],\"mapped\",[4452]],[[12627,12627],\"mapped\",[4453]],[[12628,12628],\"mapped\",[4454]],[[12629,12629],\"mapped\",[4455]],[[12630,12630],\"mapped\",[4456]],[[12631,12631],\"mapped\",[4457]],[[12632,12632],\"mapped\",[4458]],[[12633,12633],\"mapped\",[4459]],[[12634,12634],\"mapped\",[4460]],[[12635,12635],\"mapped\",[4461]],[[12636,12636],\"mapped\",[4462]],[[12637,12637],\"mapped\",[4463]],[[12638,12638],\"mapped\",[4464]],[[12639,12639],\"mapped\",[4465]],[[12640,12640],\"mapped\",[4466]],[[12641,12641],\"mapped\",[4467]],[[12642,12642],\"mapped\",[4468]],[[12643,12643],\"mapped\",[4469]],[[12644,12644],\"disallowed\"],[[12645,12645],\"mapped\",[4372]],[[12646,12646],\"mapped\",[4373]],[[12647,12647],\"mapped\",[4551]],[[12648,12648],\"mapped\",[4552]],[[12649,12649],\"mapped\",[4556]],[[12650,12650],\"mapped\",[4558]],[[12651,12651],\"mapped\",[4563]],[[12652,12652],\"mapped\",[4567]],[[12653,12653],\"mapped\",[4569]],[[12654,12654],\"mapped\",[4380]],[[12655,12655],\"mapped\",[4573]],[[12656,12656],\"mapped\",[4575]],[[12657,12657],\"mapped\",[4381]],[[12658,12658],\"mapped\",[4382]],[[12659,12659],\"mapped\",[4384]],[[12660,12660],\"mapped\",[4386]],[[12661,12661],\"mapped\",[4387]],[[12662,12662],\"mapped\",[4391]],[[12663,12663],\"mapped\",[4393]],[[12664,12664],\"mapped\",[4395]],[[12665,12665],\"mapped\",[4396]],[[12666,12666],\"mapped\",[4397]],[[12667,12667],\"mapped\",[4398]],[[12668,12668],\"mapped\",[4399]],[[12669,12669],\"mapped\",[4402]],[[12670,12670],\"mapped\",[4406]],[[12671,12671],\"mapped\",[4416]],[[12672,12672],\"mapped\",[4423]],[[12673,12673],\"mapped\",[4428]],[[12674,12674],\"mapped\",[4593]],[[12675,12675],\"mapped\",[4594]],[[12676,12676],\"mapped\",[4439]],[[12677,12677],\"mapped\",[4440]],[[12678,12678],\"mapped\",[4441]],[[12679,12679],\"mapped\",[4484]],[[12680,12680],\"mapped\",[4485]],[[12681,12681],\"mapped\",[4488]],[[12682,12682],\"mapped\",[4497]],[[12683,12683],\"mapped\",[4498]],[[12684,12684],\"mapped\",[4500]],[[12685,12685],\"mapped\",[4510]],[[12686,12686],\"mapped\",[4513]],[[12687,12687],\"disallowed\"],[[12688,12689],\"valid\",[],\"NV8\"],[[12690,12690],\"mapped\",[19968]],[[12691,12691],\"mapped\",[20108]],[[12692,12692],\"mapped\",[19977]],[[12693,12693],\"mapped\",[22235]],[[12694,12694],\"mapped\",[19978]],[[12695,12695],\"mapped\",[20013]],[[12696,12696],\"mapped\",[19979]],[[12697,12697],\"mapped\",[30002]],[[12698,12698],\"mapped\",[20057]],[[12699,12699],\"mapped\",[19993]],[[12700,12700],\"mapped\",[19969]],[[12701,12701],\"mapped\",[22825]],[[12702,12702],\"mapped\",[22320]],[[12703,12703],\"mapped\",[20154]],[[12704,12727],\"valid\"],[[12728,12730],\"valid\"],[[12731,12735],\"disallowed\"],[[12736,12751],\"valid\",[],\"NV8\"],[[12752,12771],\"valid\",[],\"NV8\"],[[12772,12783],\"disallowed\"],[[12784,12799],\"valid\"],[[12800,12800],\"disallowed_STD3_mapped\",[40,4352,41]],[[12801,12801],\"disallowed_STD3_mapped\",[40,4354,41]],[[12802,12802],\"disallowed_STD3_mapped\",[40,4355,41]],[[12803,12803],\"disallowed_STD3_mapped\",[40,4357,41]],[[12804,12804],\"disallowed_STD3_mapped\",[40,4358,41]],[[12805,12805],\"disallowed_STD3_mapped\",[40,4359,41]],[[12806,12806],\"disallowed_STD3_mapped\",[40,4361,41]],[[12807,12807],\"disallowed_STD3_mapped\",[40,4363,41]],[[12808,12808],\"disallowed_STD3_mapped\",[40,4364,41]],[[12809,12809],\"disallowed_STD3_mapped\",[40,4366,41]],[[12810,12810],\"disallowed_STD3_mapped\",[40,4367,41]],[[12811,12811],\"disallowed_STD3_mapped\",[40,4368,41]],[[12812,12812],\"disallowed_STD3_mapped\",[40,4369,41]],[[12813,12813],\"disallowed_STD3_mapped\",[40,4370,41]],[[12814,12814],\"disallowed_STD3_mapped\",[40,44032,41]],[[12815,12815],\"disallowed_STD3_mapped\",[40,45208,41]],[[12816,12816],\"disallowed_STD3_mapped\",[40,45796,41]],[[12817,12817],\"disallowed_STD3_mapped\",[40,46972,41]],[[12818,12818],\"disallowed_STD3_mapped\",[40,47560,41]],[[12819,12819],\"disallowed_STD3_mapped\",[40,48148,41]],[[12820,12820],\"disallowed_STD3_mapped\",[40,49324,41]],[[12821,12821],\"disallowed_STD3_mapped\",[40,50500,41]],[[12822,12822],\"disallowed_STD3_mapped\",[40,51088,41]],[[12823,12823],\"disallowed_STD3_mapped\",[40,52264,41]],[[12824,12824],\"disallowed_STD3_mapped\",[40,52852,41]],[[12825,12825],\"disallowed_STD3_mapped\",[40,53440,41]],[[12826,12826],\"disallowed_STD3_mapped\",[40,54028,41]],[[12827,12827],\"disallowed_STD3_mapped\",[40,54616,41]],[[12828,12828],\"disallowed_STD3_mapped\",[40,51452,41]],[[12829,12829],\"disallowed_STD3_mapped\",[40,50724,51204,41]],[[12830,12830],\"disallowed_STD3_mapped\",[40,50724,54980,41]],[[12831,12831],\"disallowed\"],[[12832,12832],\"disallowed_STD3_mapped\",[40,19968,41]],[[12833,12833],\"disallowed_STD3_mapped\",[40,20108,41]],[[12834,12834],\"disallowed_STD3_mapped\",[40,19977,41]],[[12835,12835],\"disallowed_STD3_mapped\",[40,22235,41]],[[12836,12836],\"disallowed_STD3_mapped\",[40,20116,41]],[[12837,12837],\"disallowed_STD3_mapped\",[40,20845,41]],[[12838,12838],\"disallowed_STD3_mapped\",[40,19971,41]],[[12839,12839],\"disallowed_STD3_mapped\",[40,20843,41]],[[12840,12840],\"disallowed_STD3_mapped\",[40,20061,41]],[[12841,12841],\"disallowed_STD3_mapped\",[40,21313,41]],[[12842,12842],\"disallowed_STD3_mapped\",[40,26376,41]],[[12843,12843],\"disallowed_STD3_mapped\",[40,28779,41]],[[12844,12844],\"disallowed_STD3_mapped\",[40,27700,41]],[[12845,12845],\"disallowed_STD3_mapped\",[40,26408,41]],[[12846,12846],\"disallowed_STD3_mapped\",[40,37329,41]],[[12847,12847],\"disallowed_STD3_mapped\",[40,22303,41]],[[12848,12848],\"disallowed_STD3_mapped\",[40,26085,41]],[[12849,12849],\"disallowed_STD3_mapped\",[40,26666,41]],[[12850,12850],\"disallowed_STD3_mapped\",[40,26377,41]],[[12851,12851],\"disallowed_STD3_mapped\",[40,31038,41]],[[12852,12852],\"disallowed_STD3_mapped\",[40,21517,41]],[[12853,12853],\"disallowed_STD3_mapped\",[40,29305,41]],[[12854,12854],\"disallowed_STD3_mapped\",[40,36001,41]],[[12855,12855],\"disallowed_STD3_mapped\",[40,31069,41]],[[12856,12856],\"disallowed_STD3_mapped\",[40,21172,41]],[[12857,12857],\"disallowed_STD3_mapped\",[40,20195,41]],[[12858,12858],\"disallowed_STD3_mapped\",[40,21628,41]],[[12859,12859],\"disallowed_STD3_mapped\",[40,23398,41]],[[12860,12860],\"disallowed_STD3_mapped\",[40,30435,41]],[[12861,12861],\"disallowed_STD3_mapped\",[40,20225,41]],[[12862,12862],\"disallowed_STD3_mapped\",[40,36039,41]],[[12863,12863],\"disallowed_STD3_mapped\",[40,21332,41]],[[12864,12864],\"disallowed_STD3_mapped\",[40,31085,41]],[[12865,12865],\"disallowed_STD3_mapped\",[40,20241,41]],[[12866,12866],\"disallowed_STD3_mapped\",[40,33258,41]],[[12867,12867],\"disallowed_STD3_mapped\",[40,33267,41]],[[12868,12868],\"mapped\",[21839]],[[12869,12869],\"mapped\",[24188]],[[12870,12870],\"mapped\",[25991]],[[12871,12871],\"mapped\",[31631]],[[12872,12879],\"valid\",[],\"NV8\"],[[12880,12880],\"mapped\",[112,116,101]],[[12881,12881],\"mapped\",[50,49]],[[12882,12882],\"mapped\",[50,50]],[[12883,12883],\"mapped\",[50,51]],[[12884,12884],\"mapped\",[50,52]],[[12885,12885],\"mapped\",[50,53]],[[12886,12886],\"mapped\",[50,54]],[[12887,12887],\"mapped\",[50,55]],[[12888,12888],\"mapped\",[50,56]],[[12889,12889],\"mapped\",[50,57]],[[12890,12890],\"mapped\",[51,48]],[[12891,12891],\"mapped\",[51,49]],[[12892,12892],\"mapped\",[51,50]],[[12893,12893],\"mapped\",[51,51]],[[12894,12894],\"mapped\",[51,52]],[[12895,12895],\"mapped\",[51,53]],[[12896,12896],\"mapped\",[4352]],[[12897,12897],\"mapped\",[4354]],[[12898,12898],\"mapped\",[4355]],[[12899,12899],\"mapped\",[4357]],[[12900,12900],\"mapped\",[4358]],[[12901,12901],\"mapped\",[4359]],[[12902,12902],\"mapped\",[4361]],[[12903,12903],\"mapped\",[4363]],[[12904,12904],\"mapped\",[4364]],[[12905,12905],\"mapped\",[4366]],[[12906,12906],\"mapped\",[4367]],[[12907,12907],\"mapped\",[4368]],[[12908,12908],\"mapped\",[4369]],[[12909,12909],\"mapped\",[4370]],[[12910,12910],\"mapped\",[44032]],[[12911,12911],\"mapped\",[45208]],[[12912,12912],\"mapped\",[45796]],[[12913,12913],\"mapped\",[46972]],[[12914,12914],\"mapped\",[47560]],[[12915,12915],\"mapped\",[48148]],[[12916,12916],\"mapped\",[49324]],[[12917,12917],\"mapped\",[50500]],[[12918,12918],\"mapped\",[51088]],[[12919,12919],\"mapped\",[52264]],[[12920,12920],\"mapped\",[52852]],[[12921,12921],\"mapped\",[53440]],[[12922,12922],\"mapped\",[54028]],[[12923,12923],\"mapped\",[54616]],[[12924,12924],\"mapped\",[52280,44256]],[[12925,12925],\"mapped\",[51452,51032]],[[12926,12926],\"mapped\",[50864]],[[12927,12927],\"valid\",[],\"NV8\"],[[12928,12928],\"mapped\",[19968]],[[12929,12929],\"mapped\",[20108]],[[12930,12930],\"mapped\",[19977]],[[12931,12931],\"mapped\",[22235]],[[12932,12932],\"mapped\",[20116]],[[12933,12933],\"mapped\",[20845]],[[12934,12934],\"mapped\",[19971]],[[12935,12935],\"mapped\",[20843]],[[12936,12936],\"mapped\",[20061]],[[12937,12937],\"mapped\",[21313]],[[12938,12938],\"mapped\",[26376]],[[12939,12939],\"mapped\",[28779]],[[12940,12940],\"mapped\",[27700]],[[12941,12941],\"mapped\",[26408]],[[12942,12942],\"mapped\",[37329]],[[12943,12943],\"mapped\",[22303]],[[12944,12944],\"mapped\",[26085]],[[12945,12945],\"mapped\",[26666]],[[12946,12946],\"mapped\",[26377]],[[12947,12947],\"mapped\",[31038]],[[12948,12948],\"mapped\",[21517]],[[12949,12949],\"mapped\",[29305]],[[12950,12950],\"mapped\",[36001]],[[12951,12951],\"mapped\",[31069]],[[12952,12952],\"mapped\",[21172]],[[12953,12953],\"mapped\",[31192]],[[12954,12954],\"mapped\",[30007]],[[12955,12955],\"mapped\",[22899]],[[12956,12956],\"mapped\",[36969]],[[12957,12957],\"mapped\",[20778]],[[12958,12958],\"mapped\",[21360]],[[12959,12959],\"mapped\",[27880]],[[12960,12960],\"mapped\",[38917]],[[12961,12961],\"mapped\",[20241]],[[12962,12962],\"mapped\",[20889]],[[12963,12963],\"mapped\",[27491]],[[12964,12964],\"mapped\",[19978]],[[12965,12965],\"mapped\",[20013]],[[12966,12966],\"mapped\",[19979]],[[12967,12967],\"mapped\",[24038]],[[12968,12968],\"mapped\",[21491]],[[12969,12969],\"mapped\",[21307]],[[12970,12970],\"mapped\",[23447]],[[12971,12971],\"mapped\",[23398]],[[12972,12972],\"mapped\",[30435]],[[12973,12973],\"mapped\",[20225]],[[12974,12974],\"mapped\",[36039]],[[12975,12975],\"mapped\",[21332]],[[12976,12976],\"mapped\",[22812]],[[12977,12977],\"mapped\",[51,54]],[[12978,12978],\"mapped\",[51,55]],[[12979,12979],\"mapped\",[51,56]],[[12980,12980],\"mapped\",[51,57]],[[12981,12981],\"mapped\",[52,48]],[[12982,12982],\"mapped\",[52,49]],[[12983,12983],\"mapped\",[52,50]],[[12984,12984],\"mapped\",[52,51]],[[12985,12985],\"mapped\",[52,52]],[[12986,12986],\"mapped\",[52,53]],[[12987,12987],\"mapped\",[52,54]],[[12988,12988],\"mapped\",[52,55]],[[12989,12989],\"mapped\",[52,56]],[[12990,12990],\"mapped\",[52,57]],[[12991,12991],\"mapped\",[53,48]],[[12992,12992],\"mapped\",[49,26376]],[[12993,12993],\"mapped\",[50,26376]],[[12994,12994],\"mapped\",[51,26376]],[[12995,12995],\"mapped\",[52,26376]],[[12996,12996],\"mapped\",[53,26376]],[[12997,12997],\"mapped\",[54,26376]],[[12998,12998],\"mapped\",[55,26376]],[[12999,12999],\"mapped\",[56,26376]],[[13000,13000],\"mapped\",[57,26376]],[[13001,13001],\"mapped\",[49,48,26376]],[[13002,13002],\"mapped\",[49,49,26376]],[[13003,13003],\"mapped\",[49,50,26376]],[[13004,13004],\"mapped\",[104,103]],[[13005,13005],\"mapped\",[101,114,103]],[[13006,13006],\"mapped\",[101,118]],[[13007,13007],\"mapped\",[108,116,100]],[[13008,13008],\"mapped\",[12450]],[[13009,13009],\"mapped\",[12452]],[[13010,13010],\"mapped\",[12454]],[[13011,13011],\"mapped\",[12456]],[[13012,13012],\"mapped\",[12458]],[[13013,13013],\"mapped\",[12459]],[[13014,13014],\"mapped\",[12461]],[[13015,13015],\"mapped\",[12463]],[[13016,13016],\"mapped\",[12465]],[[13017,13017],\"mapped\",[12467]],[[13018,13018],\"mapped\",[12469]],[[13019,13019],\"mapped\",[12471]],[[13020,13020],\"mapped\",[12473]],[[13021,13021],\"mapped\",[12475]],[[13022,13022],\"mapped\",[12477]],[[13023,13023],\"mapped\",[12479]],[[13024,13024],\"mapped\",[12481]],[[13025,13025],\"mapped\",[12484]],[[13026,13026],\"mapped\",[12486]],[[13027,13027],\"mapped\",[12488]],[[13028,13028],\"mapped\",[12490]],[[13029,13029],\"mapped\",[12491]],[[13030,13030],\"mapped\",[12492]],[[13031,13031],\"mapped\",[12493]],[[13032,13032],\"mapped\",[12494]],[[13033,13033],\"mapped\",[12495]],[[13034,13034],\"mapped\",[12498]],[[13035,13035],\"mapped\",[12501]],[[13036,13036],\"mapped\",[12504]],[[13037,13037],\"mapped\",[12507]],[[13038,13038],\"mapped\",[12510]],[[13039,13039],\"mapped\",[12511]],[[13040,13040],\"mapped\",[12512]],[[13041,13041],\"mapped\",[12513]],[[13042,13042],\"mapped\",[12514]],[[13043,13043],\"mapped\",[12516]],[[13044,13044],\"mapped\",[12518]],[[13045,13045],\"mapped\",[12520]],[[13046,13046],\"mapped\",[12521]],[[13047,13047],\"mapped\",[12522]],[[13048,13048],\"mapped\",[12523]],[[13049,13049],\"mapped\",[12524]],[[13050,13050],\"mapped\",[12525]],[[13051,13051],\"mapped\",[12527]],[[13052,13052],\"mapped\",[12528]],[[13053,13053],\"mapped\",[12529]],[[13054,13054],\"mapped\",[12530]],[[13055,13055],\"disallowed\"],[[13056,13056],\"mapped\",[12450,12497,12540,12488]],[[13057,13057],\"mapped\",[12450,12523,12501,12449]],[[13058,13058],\"mapped\",[12450,12531,12506,12450]],[[13059,13059],\"mapped\",[12450,12540,12523]],[[13060,13060],\"mapped\",[12452,12491,12531,12464]],[[13061,13061],\"mapped\",[12452,12531,12481]],[[13062,13062],\"mapped\",[12454,12457,12531]],[[13063,13063],\"mapped\",[12456,12473,12463,12540,12489]],[[13064,13064],\"mapped\",[12456,12540,12459,12540]],[[13065,13065],\"mapped\",[12458,12531,12473]],[[13066,13066],\"mapped\",[12458,12540,12512]],[[13067,13067],\"mapped\",[12459,12452,12522]],[[13068,13068],\"mapped\",[12459,12521,12483,12488]],[[13069,13069],\"mapped\",[12459,12525,12522,12540]],[[13070,13070],\"mapped\",[12460,12525,12531]],[[13071,13071],\"mapped\",[12460,12531,12510]],[[13072,13072],\"mapped\",[12462,12460]],[[13073,13073],\"mapped\",[12462,12491,12540]],[[13074,13074],\"mapped\",[12461,12517,12522,12540]],[[13075,13075],\"mapped\",[12462,12523,12480,12540]],[[13076,13076],\"mapped\",[12461,12525]],[[13077,13077],\"mapped\",[12461,12525,12464,12521,12512]],[[13078,13078],\"mapped\",[12461,12525,12513,12540,12488,12523]],[[13079,13079],\"mapped\",[12461,12525,12527,12483,12488]],[[13080,13080],\"mapped\",[12464,12521,12512]],[[13081,13081],\"mapped\",[12464,12521,12512,12488,12531]],[[13082,13082],\"mapped\",[12463,12523,12476,12452,12525]],[[13083,13083],\"mapped\",[12463,12525,12540,12493]],[[13084,13084],\"mapped\",[12465,12540,12473]],[[13085,13085],\"mapped\",[12467,12523,12490]],[[13086,13086],\"mapped\",[12467,12540,12509]],[[13087,13087],\"mapped\",[12469,12452,12463,12523]],[[13088,13088],\"mapped\",[12469,12531,12481,12540,12512]],[[13089,13089],\"mapped\",[12471,12522,12531,12464]],[[13090,13090],\"mapped\",[12475,12531,12481]],[[13091,13091],\"mapped\",[12475,12531,12488]],[[13092,13092],\"mapped\",[12480,12540,12473]],[[13093,13093],\"mapped\",[12487,12471]],[[13094,13094],\"mapped\",[12489,12523]],[[13095,13095],\"mapped\",[12488,12531]],[[13096,13096],\"mapped\",[12490,12494]],[[13097,13097],\"mapped\",[12494,12483,12488]],[[13098,13098],\"mapped\",[12495,12452,12484]],[[13099,13099],\"mapped\",[12497,12540,12475,12531,12488]],[[13100,13100],\"mapped\",[12497,12540,12484]],[[13101,13101],\"mapped\",[12496,12540,12524,12523]],[[13102,13102],\"mapped\",[12500,12450,12473,12488,12523]],[[13103,13103],\"mapped\",[12500,12463,12523]],[[13104,13104],\"mapped\",[12500,12467]],[[13105,13105],\"mapped\",[12499,12523]],[[13106,13106],\"mapped\",[12501,12449,12521,12483,12489]],[[13107,13107],\"mapped\",[12501,12451,12540,12488]],[[13108,13108],\"mapped\",[12502,12483,12471,12455,12523]],[[13109,13109],\"mapped\",[12501,12521,12531]],[[13110,13110],\"mapped\",[12504,12463,12479,12540,12523]],[[13111,13111],\"mapped\",[12506,12477]],[[13112,13112],\"mapped\",[12506,12491,12498]],[[13113,13113],\"mapped\",[12504,12523,12484]],[[13114,13114],\"mapped\",[12506,12531,12473]],[[13115,13115],\"mapped\",[12506,12540,12472]],[[13116,13116],\"mapped\",[12505,12540,12479]],[[13117,13117],\"mapped\",[12509,12452,12531,12488]],[[13118,13118],\"mapped\",[12508,12523,12488]],[[13119,13119],\"mapped\",[12507,12531]],[[13120,13120],\"mapped\",[12509,12531,12489]],[[13121,13121],\"mapped\",[12507,12540,12523]],[[13122,13122],\"mapped\",[12507,12540,12531]],[[13123,13123],\"mapped\",[12510,12452,12463,12525]],[[13124,13124],\"mapped\",[12510,12452,12523]],[[13125,13125],\"mapped\",[12510,12483,12495]],[[13126,13126],\"mapped\",[12510,12523,12463]],[[13127,13127],\"mapped\",[12510,12531,12471,12519,12531]],[[13128,13128],\"mapped\",[12511,12463,12525,12531]],[[13129,13129],\"mapped\",[12511,12522]],[[13130,13130],\"mapped\",[12511,12522,12496,12540,12523]],[[13131,13131],\"mapped\",[12513,12460]],[[13132,13132],\"mapped\",[12513,12460,12488,12531]],[[13133,13133],\"mapped\",[12513,12540,12488,12523]],[[13134,13134],\"mapped\",[12516,12540,12489]],[[13135,13135],\"mapped\",[12516,12540,12523]],[[13136,13136],\"mapped\",[12518,12450,12531]],[[13137,13137],\"mapped\",[12522,12483,12488,12523]],[[13138,13138],\"mapped\",[12522,12521]],[[13139,13139],\"mapped\",[12523,12500,12540]],[[13140,13140],\"mapped\",[12523,12540,12502,12523]],[[13141,13141],\"mapped\",[12524,12512]],[[13142,13142],\"mapped\",[12524,12531,12488,12466,12531]],[[13143,13143],\"mapped\",[12527,12483,12488]],[[13144,13144],\"mapped\",[48,28857]],[[13145,13145],\"mapped\",[49,28857]],[[13146,13146],\"mapped\",[50,28857]],[[13147,13147],\"mapped\",[51,28857]],[[13148,13148],\"mapped\",[52,28857]],[[13149,13149],\"mapped\",[53,28857]],[[13150,13150],\"mapped\",[54,28857]],[[13151,13151],\"mapped\",[55,28857]],[[13152,13152],\"mapped\",[56,28857]],[[13153,13153],\"mapped\",[57,28857]],[[13154,13154],\"mapped\",[49,48,28857]],[[13155,13155],\"mapped\",[49,49,28857]],[[13156,13156],\"mapped\",[49,50,28857]],[[13157,13157],\"mapped\",[49,51,28857]],[[13158,13158],\"mapped\",[49,52,28857]],[[13159,13159],\"mapped\",[49,53,28857]],[[13160,13160],\"mapped\",[49,54,28857]],[[13161,13161],\"mapped\",[49,55,28857]],[[13162,13162],\"mapped\",[49,56,28857]],[[13163,13163],\"mapped\",[49,57,28857]],[[13164,13164],\"mapped\",[50,48,28857]],[[13165,13165],\"mapped\",[50,49,28857]],[[13166,13166],\"mapped\",[50,50,28857]],[[13167,13167],\"mapped\",[50,51,28857]],[[13168,13168],\"mapped\",[50,52,28857]],[[13169,13169],\"mapped\",[104,112,97]],[[13170,13170],\"mapped\",[100,97]],[[13171,13171],\"mapped\",[97,117]],[[13172,13172],\"mapped\",[98,97,114]],[[13173,13173],\"mapped\",[111,118]],[[13174,13174],\"mapped\",[112,99]],[[13175,13175],\"mapped\",[100,109]],[[13176,13176],\"mapped\",[100,109,50]],[[13177,13177],\"mapped\",[100,109,51]],[[13178,13178],\"mapped\",[105,117]],[[13179,13179],\"mapped\",[24179,25104]],[[13180,13180],\"mapped\",[26157,21644]],[[13181,13181],\"mapped\",[22823,27491]],[[13182,13182],\"mapped\",[26126,27835]],[[13183,13183],\"mapped\",[26666,24335,20250,31038]],[[13184,13184],\"mapped\",[112,97]],[[13185,13185],\"mapped\",[110,97]],[[13186,13186],\"mapped\",[956,97]],[[13187,13187],\"mapped\",[109,97]],[[13188,13188],\"mapped\",[107,97]],[[13189,13189],\"mapped\",[107,98]],[[13190,13190],\"mapped\",[109,98]],[[13191,13191],\"mapped\",[103,98]],[[13192,13192],\"mapped\",[99,97,108]],[[13193,13193],\"mapped\",[107,99,97,108]],[[13194,13194],\"mapped\",[112,102]],[[13195,13195],\"mapped\",[110,102]],[[13196,13196],\"mapped\",[956,102]],[[13197,13197],\"mapped\",[956,103]],[[13198,13198],\"mapped\",[109,103]],[[13199,13199],\"mapped\",[107,103]],[[13200,13200],\"mapped\",[104,122]],[[13201,13201],\"mapped\",[107,104,122]],[[13202,13202],\"mapped\",[109,104,122]],[[13203,13203],\"mapped\",[103,104,122]],[[13204,13204],\"mapped\",[116,104,122]],[[13205,13205],\"mapped\",[956,108]],[[13206,13206],\"mapped\",[109,108]],[[13207,13207],\"mapped\",[100,108]],[[13208,13208],\"mapped\",[107,108]],[[13209,13209],\"mapped\",[102,109]],[[13210,13210],\"mapped\",[110,109]],[[13211,13211],\"mapped\",[956,109]],[[13212,13212],\"mapped\",[109,109]],[[13213,13213],\"mapped\",[99,109]],[[13214,13214],\"mapped\",[107,109]],[[13215,13215],\"mapped\",[109,109,50]],[[13216,13216],\"mapped\",[99,109,50]],[[13217,13217],\"mapped\",[109,50]],[[13218,13218],\"mapped\",[107,109,50]],[[13219,13219],\"mapped\",[109,109,51]],[[13220,13220],\"mapped\",[99,109,51]],[[13221,13221],\"mapped\",[109,51]],[[13222,13222],\"mapped\",[107,109,51]],[[13223,13223],\"mapped\",[109,8725,115]],[[13224,13224],\"mapped\",[109,8725,115,50]],[[13225,13225],\"mapped\",[112,97]],[[13226,13226],\"mapped\",[107,112,97]],[[13227,13227],\"mapped\",[109,112,97]],[[13228,13228],\"mapped\",[103,112,97]],[[13229,13229],\"mapped\",[114,97,100]],[[13230,13230],\"mapped\",[114,97,100,8725,115]],[[13231,13231],\"mapped\",[114,97,100,8725,115,50]],[[13232,13232],\"mapped\",[112,115]],[[13233,13233],\"mapped\",[110,115]],[[13234,13234],\"mapped\",[956,115]],[[13235,13235],\"mapped\",[109,115]],[[13236,13236],\"mapped\",[112,118]],[[13237,13237],\"mapped\",[110,118]],[[13238,13238],\"mapped\",[956,118]],[[13239,13239],\"mapped\",[109,118]],[[13240,13240],\"mapped\",[107,118]],[[13241,13241],\"mapped\",[109,118]],[[13242,13242],\"mapped\",[112,119]],[[13243,13243],\"mapped\",[110,119]],[[13244,13244],\"mapped\",[956,119]],[[13245,13245],\"mapped\",[109,119]],[[13246,13246],\"mapped\",[107,119]],[[13247,13247],\"mapped\",[109,119]],[[13248,13248],\"mapped\",[107,969]],[[13249,13249],\"mapped\",[109,969]],[[13250,13250],\"disallowed\"],[[13251,13251],\"mapped\",[98,113]],[[13252,13252],\"mapped\",[99,99]],[[13253,13253],\"mapped\",[99,100]],[[13254,13254],\"mapped\",[99,8725,107,103]],[[13255,13255],\"disallowed\"],[[13256,13256],\"mapped\",[100,98]],[[13257,13257],\"mapped\",[103,121]],[[13258,13258],\"mapped\",[104,97]],[[13259,13259],\"mapped\",[104,112]],[[13260,13260],\"mapped\",[105,110]],[[13261,13261],\"mapped\",[107,107]],[[13262,13262],\"mapped\",[107,109]],[[13263,13263],\"mapped\",[107,116]],[[13264,13264],\"mapped\",[108,109]],[[13265,13265],\"mapped\",[108,110]],[[13266,13266],\"mapped\",[108,111,103]],[[13267,13267],\"mapped\",[108,120]],[[13268,13268],\"mapped\",[109,98]],[[13269,13269],\"mapped\",[109,105,108]],[[13270,13270],\"mapped\",[109,111,108]],[[13271,13271],\"mapped\",[112,104]],[[13272,13272],\"disallowed\"],[[13273,13273],\"mapped\",[112,112,109]],[[13274,13274],\"mapped\",[112,114]],[[13275,13275],\"mapped\",[115,114]],[[13276,13276],\"mapped\",[115,118]],[[13277,13277],\"mapped\",[119,98]],[[13278,13278],\"mapped\",[118,8725,109]],[[13279,13279],\"mapped\",[97,8725,109]],[[13280,13280],\"mapped\",[49,26085]],[[13281,13281],\"mapped\",[50,26085]],[[13282,13282],\"mapped\",[51,26085]],[[13283,13283],\"mapped\",[52,26085]],[[13284,13284],\"mapped\",[53,26085]],[[13285,13285],\"mapped\",[54,26085]],[[13286,13286],\"mapped\",[55,26085]],[[13287,13287],\"mapped\",[56,26085]],[[13288,13288],\"mapped\",[57,26085]],[[13289,13289],\"mapped\",[49,48,26085]],[[13290,13290],\"mapped\",[49,49,26085]],[[13291,13291],\"mapped\",[49,50,26085]],[[13292,13292],\"mapped\",[49,51,26085]],[[13293,13293],\"mapped\",[49,52,26085]],[[13294,13294],\"mapped\",[49,53,26085]],[[13295,13295],\"mapped\",[49,54,26085]],[[13296,13296],\"mapped\",[49,55,26085]],[[13297,13297],\"mapped\",[49,56,26085]],[[13298,13298],\"mapped\",[49,57,26085]],[[13299,13299],\"mapped\",[50,48,26085]],[[13300,13300],\"mapped\",[50,49,26085]],[[13301,13301],\"mapped\",[50,50,26085]],[[13302,13302],\"mapped\",[50,51,26085]],[[13303,13303],\"mapped\",[50,52,26085]],[[13304,13304],\"mapped\",[50,53,26085]],[[13305,13305],\"mapped\",[50,54,26085]],[[13306,13306],\"mapped\",[50,55,26085]],[[13307,13307],\"mapped\",[50,56,26085]],[[13308,13308],\"mapped\",[50,57,26085]],[[13309,13309],\"mapped\",[51,48,26085]],[[13310,13310],\"mapped\",[51,49,26085]],[[13311,13311],\"mapped\",[103,97,108]],[[13312,19893],\"valid\"],[[19894,19903],\"disallowed\"],[[19904,19967],\"valid\",[],\"NV8\"],[[19968,40869],\"valid\"],[[40870,40891],\"valid\"],[[40892,40899],\"valid\"],[[40900,40907],\"valid\"],[[40908,40908],\"valid\"],[[40909,40917],\"valid\"],[[40918,40959],\"disallowed\"],[[40960,42124],\"valid\"],[[42125,42127],\"disallowed\"],[[42128,42145],\"valid\",[],\"NV8\"],[[42146,42147],\"valid\",[],\"NV8\"],[[42148,42163],\"valid\",[],\"NV8\"],[[42164,42164],\"valid\",[],\"NV8\"],[[42165,42176],\"valid\",[],\"NV8\"],[[42177,42177],\"valid\",[],\"NV8\"],[[42178,42180],\"valid\",[],\"NV8\"],[[42181,42181],\"valid\",[],\"NV8\"],[[42182,42182],\"valid\",[],\"NV8\"],[[42183,42191],\"disallowed\"],[[42192,42237],\"valid\"],[[42238,42239],\"valid\",[],\"NV8\"],[[42240,42508],\"valid\"],[[42509,42511],\"valid\",[],\"NV8\"],[[42512,42539],\"valid\"],[[42540,42559],\"disallowed\"],[[42560,42560],\"mapped\",[42561]],[[42561,42561],\"valid\"],[[42562,42562],\"mapped\",[42563]],[[42563,42563],\"valid\"],[[42564,42564],\"mapped\",[42565]],[[42565,42565],\"valid\"],[[42566,42566],\"mapped\",[42567]],[[42567,42567],\"valid\"],[[42568,42568],\"mapped\",[42569]],[[42569,42569],\"valid\"],[[42570,42570],\"mapped\",[42571]],[[42571,42571],\"valid\"],[[42572,42572],\"mapped\",[42573]],[[42573,42573],\"valid\"],[[42574,42574],\"mapped\",[42575]],[[42575,42575],\"valid\"],[[42576,42576],\"mapped\",[42577]],[[42577,42577],\"valid\"],[[42578,42578],\"mapped\",[42579]],[[42579,42579],\"valid\"],[[42580,42580],\"mapped\",[42581]],[[42581,42581],\"valid\"],[[42582,42582],\"mapped\",[42583]],[[42583,42583],\"valid\"],[[42584,42584],\"mapped\",[42585]],[[42585,42585],\"valid\"],[[42586,42586],\"mapped\",[42587]],[[42587,42587],\"valid\"],[[42588,42588],\"mapped\",[42589]],[[42589,42589],\"valid\"],[[42590,42590],\"mapped\",[42591]],[[42591,42591],\"valid\"],[[42592,42592],\"mapped\",[42593]],[[42593,42593],\"valid\"],[[42594,42594],\"mapped\",[42595]],[[42595,42595],\"valid\"],[[42596,42596],\"mapped\",[42597]],[[42597,42597],\"valid\"],[[42598,42598],\"mapped\",[42599]],[[42599,42599],\"valid\"],[[42600,42600],\"mapped\",[42601]],[[42601,42601],\"valid\"],[[42602,42602],\"mapped\",[42603]],[[42603,42603],\"valid\"],[[42604,42604],\"mapped\",[42605]],[[42605,42607],\"valid\"],[[42608,42611],\"valid\",[],\"NV8\"],[[42612,42619],\"valid\"],[[42620,42621],\"valid\"],[[42622,42622],\"valid\",[],\"NV8\"],[[42623,42623],\"valid\"],[[42624,42624],\"mapped\",[42625]],[[42625,42625],\"valid\"],[[42626,42626],\"mapped\",[42627]],[[42627,42627],\"valid\"],[[42628,42628],\"mapped\",[42629]],[[42629,42629],\"valid\"],[[42630,42630],\"mapped\",[42631]],[[42631,42631],\"valid\"],[[42632,42632],\"mapped\",[42633]],[[42633,42633],\"valid\"],[[42634,42634],\"mapped\",[42635]],[[42635,42635],\"valid\"],[[42636,42636],\"mapped\",[42637]],[[42637,42637],\"valid\"],[[42638,42638],\"mapped\",[42639]],[[42639,42639],\"valid\"],[[42640,42640],\"mapped\",[42641]],[[42641,42641],\"valid\"],[[42642,42642],\"mapped\",[42643]],[[42643,42643],\"valid\"],[[42644,42644],\"mapped\",[42645]],[[42645,42645],\"valid\"],[[42646,42646],\"mapped\",[42647]],[[42647,42647],\"valid\"],[[42648,42648],\"mapped\",[42649]],[[42649,42649],\"valid\"],[[42650,42650],\"mapped\",[42651]],[[42651,42651],\"valid\"],[[42652,42652],\"mapped\",[1098]],[[42653,42653],\"mapped\",[1100]],[[42654,42654],\"valid\"],[[42655,42655],\"valid\"],[[42656,42725],\"valid\"],[[42726,42735],\"valid\",[],\"NV8\"],[[42736,42737],\"valid\"],[[42738,42743],\"valid\",[],\"NV8\"],[[42744,42751],\"disallowed\"],[[42752,42774],\"valid\",[],\"NV8\"],[[42775,42778],\"valid\"],[[42779,42783],\"valid\"],[[42784,42785],\"valid\",[],\"NV8\"],[[42786,42786],\"mapped\",[42787]],[[42787,42787],\"valid\"],[[42788,42788],\"mapped\",[42789]],[[42789,42789],\"valid\"],[[42790,42790],\"mapped\",[42791]],[[42791,42791],\"valid\"],[[42792,42792],\"mapped\",[42793]],[[42793,42793],\"valid\"],[[42794,42794],\"mapped\",[42795]],[[42795,42795],\"valid\"],[[42796,42796],\"mapped\",[42797]],[[42797,42797],\"valid\"],[[42798,42798],\"mapped\",[42799]],[[42799,42801],\"valid\"],[[42802,42802],\"mapped\",[42803]],[[42803,42803],\"valid\"],[[42804,42804],\"mapped\",[42805]],[[42805,42805],\"valid\"],[[42806,42806],\"mapped\",[42807]],[[42807,42807],\"valid\"],[[42808,42808],\"mapped\",[42809]],[[42809,42809],\"valid\"],[[42810,42810],\"mapped\",[42811]],[[42811,42811],\"valid\"],[[42812,42812],\"mapped\",[42813]],[[42813,42813],\"valid\"],[[42814,42814],\"mapped\",[42815]],[[42815,42815],\"valid\"],[[42816,42816],\"mapped\",[42817]],[[42817,42817],\"valid\"],[[42818,42818],\"mapped\",[42819]],[[42819,42819],\"valid\"],[[42820,42820],\"mapped\",[42821]],[[42821,42821],\"valid\"],[[42822,42822],\"mapped\",[42823]],[[42823,42823],\"valid\"],[[42824,42824],\"mapped\",[42825]],[[42825,42825],\"valid\"],[[42826,42826],\"mapped\",[42827]],[[42827,42827],\"valid\"],[[42828,42828],\"mapped\",[42829]],[[42829,42829],\"valid\"],[[42830,42830],\"mapped\",[42831]],[[42831,42831],\"valid\"],[[42832,42832],\"mapped\",[42833]],[[42833,42833],\"valid\"],[[42834,42834],\"mapped\",[42835]],[[42835,42835],\"valid\"],[[42836,42836],\"mapped\",[42837]],[[42837,42837],\"valid\"],[[42838,42838],\"mapped\",[42839]],[[42839,42839],\"valid\"],[[42840,42840],\"mapped\",[42841]],[[42841,42841],\"valid\"],[[42842,42842],\"mapped\",[42843]],[[42843,42843],\"valid\"],[[42844,42844],\"mapped\",[42845]],[[42845,42845],\"valid\"],[[42846,42846],\"mapped\",[42847]],[[42847,42847],\"valid\"],[[42848,42848],\"mapped\",[42849]],[[42849,42849],\"valid\"],[[42850,42850],\"mapped\",[42851]],[[42851,42851],\"valid\"],[[42852,42852],\"mapped\",[42853]],[[42853,42853],\"valid\"],[[42854,42854],\"mapped\",[42855]],[[42855,42855],\"valid\"],[[42856,42856],\"mapped\",[42857]],[[42857,42857],\"valid\"],[[42858,42858],\"mapped\",[42859]],[[42859,42859],\"valid\"],[[42860,42860],\"mapped\",[42861]],[[42861,42861],\"valid\"],[[42862,42862],\"mapped\",[42863]],[[42863,42863],\"valid\"],[[42864,42864],\"mapped\",[42863]],[[42865,42872],\"valid\"],[[42873,42873],\"mapped\",[42874]],[[42874,42874],\"valid\"],[[42875,42875],\"mapped\",[42876]],[[42876,42876],\"valid\"],[[42877,42877],\"mapped\",[7545]],[[42878,42878],\"mapped\",[42879]],[[42879,42879],\"valid\"],[[42880,42880],\"mapped\",[42881]],[[42881,42881],\"valid\"],[[42882,42882],\"mapped\",[42883]],[[42883,42883],\"valid\"],[[42884,42884],\"mapped\",[42885]],[[42885,42885],\"valid\"],[[42886,42886],\"mapped\",[42887]],[[42887,42888],\"valid\"],[[42889,42890],\"valid\",[],\"NV8\"],[[42891,42891],\"mapped\",[42892]],[[42892,42892],\"valid\"],[[42893,42893],\"mapped\",[613]],[[42894,42894],\"valid\"],[[42895,42895],\"valid\"],[[42896,42896],\"mapped\",[42897]],[[42897,42897],\"valid\"],[[42898,42898],\"mapped\",[42899]],[[42899,42899],\"valid\"],[[42900,42901],\"valid\"],[[42902,42902],\"mapped\",[42903]],[[42903,42903],\"valid\"],[[42904,42904],\"mapped\",[42905]],[[42905,42905],\"valid\"],[[42906,42906],\"mapped\",[42907]],[[42907,42907],\"valid\"],[[42908,42908],\"mapped\",[42909]],[[42909,42909],\"valid\"],[[42910,42910],\"mapped\",[42911]],[[42911,42911],\"valid\"],[[42912,42912],\"mapped\",[42913]],[[42913,42913],\"valid\"],[[42914,42914],\"mapped\",[42915]],[[42915,42915],\"valid\"],[[42916,42916],\"mapped\",[42917]],[[42917,42917],\"valid\"],[[42918,42918],\"mapped\",[42919]],[[42919,42919],\"valid\"],[[42920,42920],\"mapped\",[42921]],[[42921,42921],\"valid\"],[[42922,42922],\"mapped\",[614]],[[42923,42923],\"mapped\",[604]],[[42924,42924],\"mapped\",[609]],[[42925,42925],\"mapped\",[620]],[[42926,42927],\"disallowed\"],[[42928,42928],\"mapped\",[670]],[[42929,42929],\"mapped\",[647]],[[42930,42930],\"mapped\",[669]],[[42931,42931],\"mapped\",[43859]],[[42932,42932],\"mapped\",[42933]],[[42933,42933],\"valid\"],[[42934,42934],\"mapped\",[42935]],[[42935,42935],\"valid\"],[[42936,42998],\"disallowed\"],[[42999,42999],\"valid\"],[[43000,43000],\"mapped\",[295]],[[43001,43001],\"mapped\",[339]],[[43002,43002],\"valid\"],[[43003,43007],\"valid\"],[[43008,43047],\"valid\"],[[43048,43051],\"valid\",[],\"NV8\"],[[43052,43055],\"disallowed\"],[[43056,43065],\"valid\",[],\"NV8\"],[[43066,43071],\"disallowed\"],[[43072,43123],\"valid\"],[[43124,43127],\"valid\",[],\"NV8\"],[[43128,43135],\"disallowed\"],[[43136,43204],\"valid\"],[[43205,43213],\"disallowed\"],[[43214,43215],\"valid\",[],\"NV8\"],[[43216,43225],\"valid\"],[[43226,43231],\"disallowed\"],[[43232,43255],\"valid\"],[[43256,43258],\"valid\",[],\"NV8\"],[[43259,43259],\"valid\"],[[43260,43260],\"valid\",[],\"NV8\"],[[43261,43261],\"valid\"],[[43262,43263],\"disallowed\"],[[43264,43309],\"valid\"],[[43310,43311],\"valid\",[],\"NV8\"],[[43312,43347],\"valid\"],[[43348,43358],\"disallowed\"],[[43359,43359],\"valid\",[],\"NV8\"],[[43360,43388],\"valid\",[],\"NV8\"],[[43389,43391],\"disallowed\"],[[43392,43456],\"valid\"],[[43457,43469],\"valid\",[],\"NV8\"],[[43470,43470],\"disallowed\"],[[43471,43481],\"valid\"],[[43482,43485],\"disallowed\"],[[43486,43487],\"valid\",[],\"NV8\"],[[43488,43518],\"valid\"],[[43519,43519],\"disallowed\"],[[43520,43574],\"valid\"],[[43575,43583],\"disallowed\"],[[43584,43597],\"valid\"],[[43598,43599],\"disallowed\"],[[43600,43609],\"valid\"],[[43610,43611],\"disallowed\"],[[43612,43615],\"valid\",[],\"NV8\"],[[43616,43638],\"valid\"],[[43639,43641],\"valid\",[],\"NV8\"],[[43642,43643],\"valid\"],[[43644,43647],\"valid\"],[[43648,43714],\"valid\"],[[43715,43738],\"disallowed\"],[[43739,43741],\"valid\"],[[43742,43743],\"valid\",[],\"NV8\"],[[43744,43759],\"valid\"],[[43760,43761],\"valid\",[],\"NV8\"],[[43762,43766],\"valid\"],[[43767,43776],\"disallowed\"],[[43777,43782],\"valid\"],[[43783,43784],\"disallowed\"],[[43785,43790],\"valid\"],[[43791,43792],\"disallowed\"],[[43793,43798],\"valid\"],[[43799,43807],\"disallowed\"],[[43808,43814],\"valid\"],[[43815,43815],\"disallowed\"],[[43816,43822],\"valid\"],[[43823,43823],\"disallowed\"],[[43824,43866],\"valid\"],[[43867,43867],\"valid\",[],\"NV8\"],[[43868,43868],\"mapped\",[42791]],[[43869,43869],\"mapped\",[43831]],[[43870,43870],\"mapped\",[619]],[[43871,43871],\"mapped\",[43858]],[[43872,43875],\"valid\"],[[43876,43877],\"valid\"],[[43878,43887],\"disallowed\"],[[43888,43888],\"mapped\",[5024]],[[43889,43889],\"mapped\",[5025]],[[43890,43890],\"mapped\",[5026]],[[43891,43891],\"mapped\",[5027]],[[43892,43892],\"mapped\",[5028]],[[43893,43893],\"mapped\",[5029]],[[43894,43894],\"mapped\",[5030]],[[43895,43895],\"mapped\",[5031]],[[43896,43896],\"mapped\",[5032]],[[43897,43897],\"mapped\",[5033]],[[43898,43898],\"mapped\",[5034]],[[43899,43899],\"mapped\",[5035]],[[43900,43900],\"mapped\",[5036]],[[43901,43901],\"mapped\",[5037]],[[43902,43902],\"mapped\",[5038]],[[43903,43903],\"mapped\",[5039]],[[43904,43904],\"mapped\",[5040]],[[43905,43905],\"mapped\",[5041]],[[43906,43906],\"mapped\",[5042]],[[43907,43907],\"mapped\",[5043]],[[43908,43908],\"mapped\",[5044]],[[43909,43909],\"mapped\",[5045]],[[43910,43910],\"mapped\",[5046]],[[43911,43911],\"mapped\",[5047]],[[43912,43912],\"mapped\",[5048]],[[43913,43913],\"mapped\",[5049]],[[43914,43914],\"mapped\",[5050]],[[43915,43915],\"mapped\",[5051]],[[43916,43916],\"mapped\",[5052]],[[43917,43917],\"mapped\",[5053]],[[43918,43918],\"mapped\",[5054]],[[43919,43919],\"mapped\",[5055]],[[43920,43920],\"mapped\",[5056]],[[43921,43921],\"mapped\",[5057]],[[43922,43922],\"mapped\",[5058]],[[43923,43923],\"mapped\",[5059]],[[43924,43924],\"mapped\",[5060]],[[43925,43925],\"mapped\",[5061]],[[43926,43926],\"mapped\",[5062]],[[43927,43927],\"mapped\",[5063]],[[43928,43928],\"mapped\",[5064]],[[43929,43929],\"mapped\",[5065]],[[43930,43930],\"mapped\",[5066]],[[43931,43931],\"mapped\",[5067]],[[43932,43932],\"mapped\",[5068]],[[43933,43933],\"mapped\",[5069]],[[43934,43934],\"mapped\",[5070]],[[43935,43935],\"mapped\",[5071]],[[43936,43936],\"mapped\",[5072]],[[43937,43937],\"mapped\",[5073]],[[43938,43938],\"mapped\",[5074]],[[43939,43939],\"mapped\",[5075]],[[43940,43940],\"mapped\",[5076]],[[43941,43941],\"mapped\",[5077]],[[43942,43942],\"mapped\",[5078]],[[43943,43943],\"mapped\",[5079]],[[43944,43944],\"mapped\",[5080]],[[43945,43945],\"mapped\",[5081]],[[43946,43946],\"mapped\",[5082]],[[43947,43947],\"mapped\",[5083]],[[43948,43948],\"mapped\",[5084]],[[43949,43949],\"mapped\",[5085]],[[43950,43950],\"mapped\",[5086]],[[43951,43951],\"mapped\",[5087]],[[43952,43952],\"mapped\",[5088]],[[43953,43953],\"mapped\",[5089]],[[43954,43954],\"mapped\",[5090]],[[43955,43955],\"mapped\",[5091]],[[43956,43956],\"mapped\",[5092]],[[43957,43957],\"mapped\",[5093]],[[43958,43958],\"mapped\",[5094]],[[43959,43959],\"mapped\",[5095]],[[43960,43960],\"mapped\",[5096]],[[43961,43961],\"mapped\",[5097]],[[43962,43962],\"mapped\",[5098]],[[43963,43963],\"mapped\",[5099]],[[43964,43964],\"mapped\",[5100]],[[43965,43965],\"mapped\",[5101]],[[43966,43966],\"mapped\",[5102]],[[43967,43967],\"mapped\",[5103]],[[43968,44010],\"valid\"],[[44011,44011],\"valid\",[],\"NV8\"],[[44012,44013],\"valid\"],[[44014,44015],\"disallowed\"],[[44016,44025],\"valid\"],[[44026,44031],\"disallowed\"],[[44032,55203],\"valid\"],[[55204,55215],\"disallowed\"],[[55216,55238],\"valid\",[],\"NV8\"],[[55239,55242],\"disallowed\"],[[55243,55291],\"valid\",[],\"NV8\"],[[55292,55295],\"disallowed\"],[[55296,57343],\"disallowed\"],[[57344,63743],\"disallowed\"],[[63744,63744],\"mapped\",[35912]],[[63745,63745],\"mapped\",[26356]],[[63746,63746],\"mapped\",[36554]],[[63747,63747],\"mapped\",[36040]],[[63748,63748],\"mapped\",[28369]],[[63749,63749],\"mapped\",[20018]],[[63750,63750],\"mapped\",[21477]],[[63751,63752],\"mapped\",[40860]],[[63753,63753],\"mapped\",[22865]],[[63754,63754],\"mapped\",[37329]],[[63755,63755],\"mapped\",[21895]],[[63756,63756],\"mapped\",[22856]],[[63757,63757],\"mapped\",[25078]],[[63758,63758],\"mapped\",[30313]],[[63759,63759],\"mapped\",[32645]],[[63760,63760],\"mapped\",[34367]],[[63761,63761],\"mapped\",[34746]],[[63762,63762],\"mapped\",[35064]],[[63763,63763],\"mapped\",[37007]],[[63764,63764],\"mapped\",[27138]],[[63765,63765],\"mapped\",[27931]],[[63766,63766],\"mapped\",[28889]],[[63767,63767],\"mapped\",[29662]],[[63768,63768],\"mapped\",[33853]],[[63769,63769],\"mapped\",[37226]],[[63770,63770],\"mapped\",[39409]],[[63771,63771],\"mapped\",[20098]],[[63772,63772],\"mapped\",[21365]],[[63773,63773],\"mapped\",[27396]],[[63774,63774],\"mapped\",[29211]],[[63775,63775],\"mapped\",[34349]],[[63776,63776],\"mapped\",[40478]],[[63777,63777],\"mapped\",[23888]],[[63778,63778],\"mapped\",[28651]],[[63779,63779],\"mapped\",[34253]],[[63780,63780],\"mapped\",[35172]],[[63781,63781],\"mapped\",[25289]],[[63782,63782],\"mapped\",[33240]],[[63783,63783],\"mapped\",[34847]],[[63784,63784],\"mapped\",[24266]],[[63785,63785],\"mapped\",[26391]],[[63786,63786],\"mapped\",[28010]],[[63787,63787],\"mapped\",[29436]],[[63788,63788],\"mapped\",[37070]],[[63789,63789],\"mapped\",[20358]],[[63790,63790],\"mapped\",[20919]],[[63791,63791],\"mapped\",[21214]],[[63792,63792],\"mapped\",[25796]],[[63793,63793],\"mapped\",[27347]],[[63794,63794],\"mapped\",[29200]],[[63795,63795],\"mapped\",[30439]],[[63796,63796],\"mapped\",[32769]],[[63797,63797],\"mapped\",[34310]],[[63798,63798],\"mapped\",[34396]],[[63799,63799],\"mapped\",[36335]],[[63800,63800],\"mapped\",[38706]],[[63801,63801],\"mapped\",[39791]],[[63802,63802],\"mapped\",[40442]],[[63803,63803],\"mapped\",[30860]],[[63804,63804],\"mapped\",[31103]],[[63805,63805],\"mapped\",[32160]],[[63806,63806],\"mapped\",[33737]],[[63807,63807],\"mapped\",[37636]],[[63808,63808],\"mapped\",[40575]],[[63809,63809],\"mapped\",[35542]],[[63810,63810],\"mapped\",[22751]],[[63811,63811],\"mapped\",[24324]],[[63812,63812],\"mapped\",[31840]],[[63813,63813],\"mapped\",[32894]],[[63814,63814],\"mapped\",[29282]],[[63815,63815],\"mapped\",[30922]],[[63816,63816],\"mapped\",[36034]],[[63817,63817],\"mapped\",[38647]],[[63818,63818],\"mapped\",[22744]],[[63819,63819],\"mapped\",[23650]],[[63820,63820],\"mapped\",[27155]],[[63821,63821],\"mapped\",[28122]],[[63822,63822],\"mapped\",[28431]],[[63823,63823],\"mapped\",[32047]],[[63824,63824],\"mapped\",[32311]],[[63825,63825],\"mapped\",[38475]],[[63826,63826],\"mapped\",[21202]],[[63827,63827],\"mapped\",[32907]],[[63828,63828],\"mapped\",[20956]],[[63829,63829],\"mapped\",[20940]],[[63830,63830],\"mapped\",[31260]],[[63831,63831],\"mapped\",[32190]],[[63832,63832],\"mapped\",[33777]],[[63833,63833],\"mapped\",[38517]],[[63834,63834],\"mapped\",[35712]],[[63835,63835],\"mapped\",[25295]],[[63836,63836],\"mapped\",[27138]],[[63837,63837],\"mapped\",[35582]],[[63838,63838],\"mapped\",[20025]],[[63839,63839],\"mapped\",[23527]],[[63840,63840],\"mapped\",[24594]],[[63841,63841],\"mapped\",[29575]],[[63842,63842],\"mapped\",[30064]],[[63843,63843],\"mapped\",[21271]],[[63844,63844],\"mapped\",[30971]],[[63845,63845],\"mapped\",[20415]],[[63846,63846],\"mapped\",[24489]],[[63847,63847],\"mapped\",[19981]],[[63848,63848],\"mapped\",[27852]],[[63849,63849],\"mapped\",[25976]],[[63850,63850],\"mapped\",[32034]],[[63851,63851],\"mapped\",[21443]],[[63852,63852],\"mapped\",[22622]],[[63853,63853],\"mapped\",[30465]],[[63854,63854],\"mapped\",[33865]],[[63855,63855],\"mapped\",[35498]],[[63856,63856],\"mapped\",[27578]],[[63857,63857],\"mapped\",[36784]],[[63858,63858],\"mapped\",[27784]],[[63859,63859],\"mapped\",[25342]],[[63860,63860],\"mapped\",[33509]],[[63861,63861],\"mapped\",[25504]],[[63862,63862],\"mapped\",[30053]],[[63863,63863],\"mapped\",[20142]],[[63864,63864],\"mapped\",[20841]],[[63865,63865],\"mapped\",[20937]],[[63866,63866],\"mapped\",[26753]],[[63867,63867],\"mapped\",[31975]],[[63868,63868],\"mapped\",[33391]],[[63869,63869],\"mapped\",[35538]],[[63870,63870],\"mapped\",[37327]],[[63871,63871],\"mapped\",[21237]],[[63872,63872],\"mapped\",[21570]],[[63873,63873],\"mapped\",[22899]],[[63874,63874],\"mapped\",[24300]],[[63875,63875],\"mapped\",[26053]],[[63876,63876],\"mapped\",[28670]],[[63877,63877],\"mapped\",[31018]],[[63878,63878],\"mapped\",[38317]],[[63879,63879],\"mapped\",[39530]],[[63880,63880],\"mapped\",[40599]],[[63881,63881],\"mapped\",[40654]],[[63882,63882],\"mapped\",[21147]],[[63883,63883],\"mapped\",[26310]],[[63884,63884],\"mapped\",[27511]],[[63885,63885],\"mapped\",[36706]],[[63886,63886],\"mapped\",[24180]],[[63887,63887],\"mapped\",[24976]],[[63888,63888],\"mapped\",[25088]],[[63889,63889],\"mapped\",[25754]],[[63890,63890],\"mapped\",[28451]],[[63891,63891],\"mapped\",[29001]],[[63892,63892],\"mapped\",[29833]],[[63893,63893],\"mapped\",[31178]],[[63894,63894],\"mapped\",[32244]],[[63895,63895],\"mapped\",[32879]],[[63896,63896],\"mapped\",[36646]],[[63897,63897],\"mapped\",[34030]],[[63898,63898],\"mapped\",[36899]],[[63899,63899],\"mapped\",[37706]],[[63900,63900],\"mapped\",[21015]],[[63901,63901],\"mapped\",[21155]],[[63902,63902],\"mapped\",[21693]],[[63903,63903],\"mapped\",[28872]],[[63904,63904],\"mapped\",[35010]],[[63905,63905],\"mapped\",[35498]],[[63906,63906],\"mapped\",[24265]],[[63907,63907],\"mapped\",[24565]],[[63908,63908],\"mapped\",[25467]],[[63909,63909],\"mapped\",[27566]],[[63910,63910],\"mapped\",[31806]],[[63911,63911],\"mapped\",[29557]],[[63912,63912],\"mapped\",[20196]],[[63913,63913],\"mapped\",[22265]],[[63914,63914],\"mapped\",[23527]],[[63915,63915],\"mapped\",[23994]],[[63916,63916],\"mapped\",[24604]],[[63917,63917],\"mapped\",[29618]],[[63918,63918],\"mapped\",[29801]],[[63919,63919],\"mapped\",[32666]],[[63920,63920],\"mapped\",[32838]],[[63921,63921],\"mapped\",[37428]],[[63922,63922],\"mapped\",[38646]],[[63923,63923],\"mapped\",[38728]],[[63924,63924],\"mapped\",[38936]],[[63925,63925],\"mapped\",[20363]],[[63926,63926],\"mapped\",[31150]],[[63927,63927],\"mapped\",[37300]],[[63928,63928],\"mapped\",[38584]],[[63929,63929],\"mapped\",[24801]],[[63930,63930],\"mapped\",[20102]],[[63931,63931],\"mapped\",[20698]],[[63932,63932],\"mapped\",[23534]],[[63933,63933],\"mapped\",[23615]],[[63934,63934],\"mapped\",[26009]],[[63935,63935],\"mapped\",[27138]],[[63936,63936],\"mapped\",[29134]],[[63937,63937],\"mapped\",[30274]],[[63938,63938],\"mapped\",[34044]],[[63939,63939],\"mapped\",[36988]],[[63940,63940],\"mapped\",[40845]],[[63941,63941],\"mapped\",[26248]],[[63942,63942],\"mapped\",[38446]],[[63943,63943],\"mapped\",[21129]],[[63944,63944],\"mapped\",[26491]],[[63945,63945],\"mapped\",[26611]],[[63946,63946],\"mapped\",[27969]],[[63947,63947],\"mapped\",[28316]],[[63948,63948],\"mapped\",[29705]],[[63949,63949],\"mapped\",[30041]],[[63950,63950],\"mapped\",[30827]],[[63951,63951],\"mapped\",[32016]],[[63952,63952],\"mapped\",[39006]],[[63953,63953],\"mapped\",[20845]],[[63954,63954],\"mapped\",[25134]],[[63955,63955],\"mapped\",[38520]],[[63956,63956],\"mapped\",[20523]],[[63957,63957],\"mapped\",[23833]],[[63958,63958],\"mapped\",[28138]],[[63959,63959],\"mapped\",[36650]],[[63960,63960],\"mapped\",[24459]],[[63961,63961],\"mapped\",[24900]],[[63962,63962],\"mapped\",[26647]],[[63963,63963],\"mapped\",[29575]],[[63964,63964],\"mapped\",[38534]],[[63965,63965],\"mapped\",[21033]],[[63966,63966],\"mapped\",[21519]],[[63967,63967],\"mapped\",[23653]],[[63968,63968],\"mapped\",[26131]],[[63969,63969],\"mapped\",[26446]],[[63970,63970],\"mapped\",[26792]],[[63971,63971],\"mapped\",[27877]],[[63972,63972],\"mapped\",[29702]],[[63973,63973],\"mapped\",[30178]],[[63974,63974],\"mapped\",[32633]],[[63975,63975],\"mapped\",[35023]],[[63976,63976],\"mapped\",[35041]],[[63977,63977],\"mapped\",[37324]],[[63978,63978],\"mapped\",[38626]],[[63979,63979],\"mapped\",[21311]],[[63980,63980],\"mapped\",[28346]],[[63981,63981],\"mapped\",[21533]],[[63982,63982],\"mapped\",[29136]],[[63983,63983],\"mapped\",[29848]],[[63984,63984],\"mapped\",[34298]],[[63985,63985],\"mapped\",[38563]],[[63986,63986],\"mapped\",[40023]],[[63987,63987],\"mapped\",[40607]],[[63988,63988],\"mapped\",[26519]],[[63989,63989],\"mapped\",[28107]],[[63990,63990],\"mapped\",[33256]],[[63991,63991],\"mapped\",[31435]],[[63992,63992],\"mapped\",[31520]],[[63993,63993],\"mapped\",[31890]],[[63994,63994],\"mapped\",[29376]],[[63995,63995],\"mapped\",[28825]],[[63996,63996],\"mapped\",[35672]],[[63997,63997],\"mapped\",[20160]],[[63998,63998],\"mapped\",[33590]],[[63999,63999],\"mapped\",[21050]],[[64000,64000],\"mapped\",[20999]],[[64001,64001],\"mapped\",[24230]],[[64002,64002],\"mapped\",[25299]],[[64003,64003],\"mapped\",[31958]],[[64004,64004],\"mapped\",[23429]],[[64005,64005],\"mapped\",[27934]],[[64006,64006],\"mapped\",[26292]],[[64007,64007],\"mapped\",[36667]],[[64008,64008],\"mapped\",[34892]],[[64009,64009],\"mapped\",[38477]],[[64010,64010],\"mapped\",[35211]],[[64011,64011],\"mapped\",[24275]],[[64012,64012],\"mapped\",[20800]],[[64013,64013],\"mapped\",[21952]],[[64014,64015],\"valid\"],[[64016,64016],\"mapped\",[22618]],[[64017,64017],\"valid\"],[[64018,64018],\"mapped\",[26228]],[[64019,64020],\"valid\"],[[64021,64021],\"mapped\",[20958]],[[64022,64022],\"mapped\",[29482]],[[64023,64023],\"mapped\",[30410]],[[64024,64024],\"mapped\",[31036]],[[64025,64025],\"mapped\",[31070]],[[64026,64026],\"mapped\",[31077]],[[64027,64027],\"mapped\",[31119]],[[64028,64028],\"mapped\",[38742]],[[64029,64029],\"mapped\",[31934]],[[64030,64030],\"mapped\",[32701]],[[64031,64031],\"valid\"],[[64032,64032],\"mapped\",[34322]],[[64033,64033],\"valid\"],[[64034,64034],\"mapped\",[35576]],[[64035,64036],\"valid\"],[[64037,64037],\"mapped\",[36920]],[[64038,64038],\"mapped\",[37117]],[[64039,64041],\"valid\"],[[64042,64042],\"mapped\",[39151]],[[64043,64043],\"mapped\",[39164]],[[64044,64044],\"mapped\",[39208]],[[64045,64045],\"mapped\",[40372]],[[64046,64046],\"mapped\",[37086]],[[64047,64047],\"mapped\",[38583]],[[64048,64048],\"mapped\",[20398]],[[64049,64049],\"mapped\",[20711]],[[64050,64050],\"mapped\",[20813]],[[64051,64051],\"mapped\",[21193]],[[64052,64052],\"mapped\",[21220]],[[64053,64053],\"mapped\",[21329]],[[64054,64054],\"mapped\",[21917]],[[64055,64055],\"mapped\",[22022]],[[64056,64056],\"mapped\",[22120]],[[64057,64057],\"mapped\",[22592]],[[64058,64058],\"mapped\",[22696]],[[64059,64059],\"mapped\",[23652]],[[64060,64060],\"mapped\",[23662]],[[64061,64061],\"mapped\",[24724]],[[64062,64062],\"mapped\",[24936]],[[64063,64063],\"mapped\",[24974]],[[64064,64064],\"mapped\",[25074]],[[64065,64065],\"mapped\",[25935]],[[64066,64066],\"mapped\",[26082]],[[64067,64067],\"mapped\",[26257]],[[64068,64068],\"mapped\",[26757]],[[64069,64069],\"mapped\",[28023]],[[64070,64070],\"mapped\",[28186]],[[64071,64071],\"mapped\",[28450]],[[64072,64072],\"mapped\",[29038]],[[64073,64073],\"mapped\",[29227]],[[64074,64074],\"mapped\",[29730]],[[64075,64075],\"mapped\",[30865]],[[64076,64076],\"mapped\",[31038]],[[64077,64077],\"mapped\",[31049]],[[64078,64078],\"mapped\",[31048]],[[64079,64079],\"mapped\",[31056]],[[64080,64080],\"mapped\",[31062]],[[64081,64081],\"mapped\",[31069]],[[64082,64082],\"mapped\",[31117]],[[64083,64083],\"mapped\",[31118]],[[64084,64084],\"mapped\",[31296]],[[64085,64085],\"mapped\",[31361]],[[64086,64086],\"mapped\",[31680]],[[64087,64087],\"mapped\",[32244]],[[64088,64088],\"mapped\",[32265]],[[64089,64089],\"mapped\",[32321]],[[64090,64090],\"mapped\",[32626]],[[64091,64091],\"mapped\",[32773]],[[64092,64092],\"mapped\",[33261]],[[64093,64094],\"mapped\",[33401]],[[64095,64095],\"mapped\",[33879]],[[64096,64096],\"mapped\",[35088]],[[64097,64097],\"mapped\",[35222]],[[64098,64098],\"mapped\",[35585]],[[64099,64099],\"mapped\",[35641]],[[64100,64100],\"mapped\",[36051]],[[64101,64101],\"mapped\",[36104]],[[64102,64102],\"mapped\",[36790]],[[64103,64103],\"mapped\",[36920]],[[64104,64104],\"mapped\",[38627]],[[64105,64105],\"mapped\",[38911]],[[64106,64106],\"mapped\",[38971]],[[64107,64107],\"mapped\",[24693]],[[64108,64108],\"mapped\",[148206]],[[64109,64109],\"mapped\",[33304]],[[64110,64111],\"disallowed\"],[[64112,64112],\"mapped\",[20006]],[[64113,64113],\"mapped\",[20917]],[[64114,64114],\"mapped\",[20840]],[[64115,64115],\"mapped\",[20352]],[[64116,64116],\"mapped\",[20805]],[[64117,64117],\"mapped\",[20864]],[[64118,64118],\"mapped\",[21191]],[[64119,64119],\"mapped\",[21242]],[[64120,64120],\"mapped\",[21917]],[[64121,64121],\"mapped\",[21845]],[[64122,64122],\"mapped\",[21913]],[[64123,64123],\"mapped\",[21986]],[[64124,64124],\"mapped\",[22618]],[[64125,64125],\"mapped\",[22707]],[[64126,64126],\"mapped\",[22852]],[[64127,64127],\"mapped\",[22868]],[[64128,64128],\"mapped\",[23138]],[[64129,64129],\"mapped\",[23336]],[[64130,64130],\"mapped\",[24274]],[[64131,64131],\"mapped\",[24281]],[[64132,64132],\"mapped\",[24425]],[[64133,64133],\"mapped\",[24493]],[[64134,64134],\"mapped\",[24792]],[[64135,64135],\"mapped\",[24910]],[[64136,64136],\"mapped\",[24840]],[[64137,64137],\"mapped\",[24974]],[[64138,64138],\"mapped\",[24928]],[[64139,64139],\"mapped\",[25074]],[[64140,64140],\"mapped\",[25140]],[[64141,64141],\"mapped\",[25540]],[[64142,64142],\"mapped\",[25628]],[[64143,64143],\"mapped\",[25682]],[[64144,64144],\"mapped\",[25942]],[[64145,64145],\"mapped\",[26228]],[[64146,64146],\"mapped\",[26391]],[[64147,64147],\"mapped\",[26395]],[[64148,64148],\"mapped\",[26454]],[[64149,64149],\"mapped\",[27513]],[[64150,64150],\"mapped\",[27578]],[[64151,64151],\"mapped\",[27969]],[[64152,64152],\"mapped\",[28379]],[[64153,64153],\"mapped\",[28363]],[[64154,64154],\"mapped\",[28450]],[[64155,64155],\"mapped\",[28702]],[[64156,64156],\"mapped\",[29038]],[[64157,64157],\"mapped\",[30631]],[[64158,64158],\"mapped\",[29237]],[[64159,64159],\"mapped\",[29359]],[[64160,64160],\"mapped\",[29482]],[[64161,64161],\"mapped\",[29809]],[[64162,64162],\"mapped\",[29958]],[[64163,64163],\"mapped\",[30011]],[[64164,64164],\"mapped\",[30237]],[[64165,64165],\"mapped\",[30239]],[[64166,64166],\"mapped\",[30410]],[[64167,64167],\"mapped\",[30427]],[[64168,64168],\"mapped\",[30452]],[[64169,64169],\"mapped\",[30538]],[[64170,64170],\"mapped\",[30528]],[[64171,64171],\"mapped\",[30924]],[[64172,64172],\"mapped\",[31409]],[[64173,64173],\"mapped\",[31680]],[[64174,64174],\"mapped\",[31867]],[[64175,64175],\"mapped\",[32091]],[[64176,64176],\"mapped\",[32244]],[[64177,64177],\"mapped\",[32574]],[[64178,64178],\"mapped\",[32773]],[[64179,64179],\"mapped\",[33618]],[[64180,64180],\"mapped\",[33775]],[[64181,64181],\"mapped\",[34681]],[[64182,64182],\"mapped\",[35137]],[[64183,64183],\"mapped\",[35206]],[[64184,64184],\"mapped\",[35222]],[[64185,64185],\"mapped\",[35519]],[[64186,64186],\"mapped\",[35576]],[[64187,64187],\"mapped\",[35531]],[[64188,64188],\"mapped\",[35585]],[[64189,64189],\"mapped\",[35582]],[[64190,64190],\"mapped\",[35565]],[[64191,64191],\"mapped\",[35641]],[[64192,64192],\"mapped\",[35722]],[[64193,64193],\"mapped\",[36104]],[[64194,64194],\"mapped\",[36664]],[[64195,64195],\"mapped\",[36978]],[[64196,64196],\"mapped\",[37273]],[[64197,64197],\"mapped\",[37494]],[[64198,64198],\"mapped\",[38524]],[[64199,64199],\"mapped\",[38627]],[[64200,64200],\"mapped\",[38742]],[[64201,64201],\"mapped\",[38875]],[[64202,64202],\"mapped\",[38911]],[[64203,64203],\"mapped\",[38923]],[[64204,64204],\"mapped\",[38971]],[[64205,64205],\"mapped\",[39698]],[[64206,64206],\"mapped\",[40860]],[[64207,64207],\"mapped\",[141386]],[[64208,64208],\"mapped\",[141380]],[[64209,64209],\"mapped\",[144341]],[[64210,64210],\"mapped\",[15261]],[[64211,64211],\"mapped\",[16408]],[[64212,64212],\"mapped\",[16441]],[[64213,64213],\"mapped\",[152137]],[[64214,64214],\"mapped\",[154832]],[[64215,64215],\"mapped\",[163539]],[[64216,64216],\"mapped\",[40771]],[[64217,64217],\"mapped\",[40846]],[[64218,64255],\"disallowed\"],[[64256,64256],\"mapped\",[102,102]],[[64257,64257],\"mapped\",[102,105]],[[64258,64258],\"mapped\",[102,108]],[[64259,64259],\"mapped\",[102,102,105]],[[64260,64260],\"mapped\",[102,102,108]],[[64261,64262],\"mapped\",[115,116]],[[64263,64274],\"disallowed\"],[[64275,64275],\"mapped\",[1396,1398]],[[64276,64276],\"mapped\",[1396,1381]],[[64277,64277],\"mapped\",[1396,1387]],[[64278,64278],\"mapped\",[1406,1398]],[[64279,64279],\"mapped\",[1396,1389]],[[64280,64284],\"disallowed\"],[[64285,64285],\"mapped\",[1497,1460]],[[64286,64286],\"valid\"],[[64287,64287],\"mapped\",[1522,1463]],[[64288,64288],\"mapped\",[1506]],[[64289,64289],\"mapped\",[1488]],[[64290,64290],\"mapped\",[1491]],[[64291,64291],\"mapped\",[1492]],[[64292,64292],\"mapped\",[1499]],[[64293,64293],\"mapped\",[1500]],[[64294,64294],\"mapped\",[1501]],[[64295,64295],\"mapped\",[1512]],[[64296,64296],\"mapped\",[1514]],[[64297,64297],\"disallowed_STD3_mapped\",[43]],[[64298,64298],\"mapped\",[1513,1473]],[[64299,64299],\"mapped\",[1513,1474]],[[64300,64300],\"mapped\",[1513,1468,1473]],[[64301,64301],\"mapped\",[1513,1468,1474]],[[64302,64302],\"mapped\",[1488,1463]],[[64303,64303],\"mapped\",[1488,1464]],[[64304,64304],\"mapped\",[1488,1468]],[[64305,64305],\"mapped\",[1489,1468]],[[64306,64306],\"mapped\",[1490,1468]],[[64307,64307],\"mapped\",[1491,1468]],[[64308,64308],\"mapped\",[1492,1468]],[[64309,64309],\"mapped\",[1493,1468]],[[64310,64310],\"mapped\",[1494,1468]],[[64311,64311],\"disallowed\"],[[64312,64312],\"mapped\",[1496,1468]],[[64313,64313],\"mapped\",[1497,1468]],[[64314,64314],\"mapped\",[1498,1468]],[[64315,64315],\"mapped\",[1499,1468]],[[64316,64316],\"mapped\",[1500,1468]],[[64317,64317],\"disallowed\"],[[64318,64318],\"mapped\",[1502,1468]],[[64319,64319],\"disallowed\"],[[64320,64320],\"mapped\",[1504,1468]],[[64321,64321],\"mapped\",[1505,1468]],[[64322,64322],\"disallowed\"],[[64323,64323],\"mapped\",[1507,1468]],[[64324,64324],\"mapped\",[1508,1468]],[[64325,64325],\"disallowed\"],[[64326,64326],\"mapped\",[1510,1468]],[[64327,64327],\"mapped\",[1511,1468]],[[64328,64328],\"mapped\",[1512,1468]],[[64329,64329],\"mapped\",[1513,1468]],[[64330,64330],\"mapped\",[1514,1468]],[[64331,64331],\"mapped\",[1493,1465]],[[64332,64332],\"mapped\",[1489,1471]],[[64333,64333],\"mapped\",[1499,1471]],[[64334,64334],\"mapped\",[1508,1471]],[[64335,64335],\"mapped\",[1488,1500]],[[64336,64337],\"mapped\",[1649]],[[64338,64341],\"mapped\",[1659]],[[64342,64345],\"mapped\",[1662]],[[64346,64349],\"mapped\",[1664]],[[64350,64353],\"mapped\",[1658]],[[64354,64357],\"mapped\",[1663]],[[64358,64361],\"mapped\",[1657]],[[64362,64365],\"mapped\",[1700]],[[64366,64369],\"mapped\",[1702]],[[64370,64373],\"mapped\",[1668]],[[64374,64377],\"mapped\",[1667]],[[64378,64381],\"mapped\",[1670]],[[64382,64385],\"mapped\",[1671]],[[64386,64387],\"mapped\",[1677]],[[64388,64389],\"mapped\",[1676]],[[64390,64391],\"mapped\",[1678]],[[64392,64393],\"mapped\",[1672]],[[64394,64395],\"mapped\",[1688]],[[64396,64397],\"mapped\",[1681]],[[64398,64401],\"mapped\",[1705]],[[64402,64405],\"mapped\",[1711]],[[64406,64409],\"mapped\",[1715]],[[64410,64413],\"mapped\",[1713]],[[64414,64415],\"mapped\",[1722]],[[64416,64419],\"mapped\",[1723]],[[64420,64421],\"mapped\",[1728]],[[64422,64425],\"mapped\",[1729]],[[64426,64429],\"mapped\",[1726]],[[64430,64431],\"mapped\",[1746]],[[64432,64433],\"mapped\",[1747]],[[64434,64449],\"valid\",[],\"NV8\"],[[64450,64466],\"disallowed\"],[[64467,64470],\"mapped\",[1709]],[[64471,64472],\"mapped\",[1735]],[[64473,64474],\"mapped\",[1734]],[[64475,64476],\"mapped\",[1736]],[[64477,64477],\"mapped\",[1735,1652]],[[64478,64479],\"mapped\",[1739]],[[64480,64481],\"mapped\",[1733]],[[64482,64483],\"mapped\",[1737]],[[64484,64487],\"mapped\",[1744]],[[64488,64489],\"mapped\",[1609]],[[64490,64491],\"mapped\",[1574,1575]],[[64492,64493],\"mapped\",[1574,1749]],[[64494,64495],\"mapped\",[1574,1608]],[[64496,64497],\"mapped\",[1574,1735]],[[64498,64499],\"mapped\",[1574,1734]],[[64500,64501],\"mapped\",[1574,1736]],[[64502,64504],\"mapped\",[1574,1744]],[[64505,64507],\"mapped\",[1574,1609]],[[64508,64511],\"mapped\",[1740]],[[64512,64512],\"mapped\",[1574,1580]],[[64513,64513],\"mapped\",[1574,1581]],[[64514,64514],\"mapped\",[1574,1605]],[[64515,64515],\"mapped\",[1574,1609]],[[64516,64516],\"mapped\",[1574,1610]],[[64517,64517],\"mapped\",[1576,1580]],[[64518,64518],\"mapped\",[1576,1581]],[[64519,64519],\"mapped\",[1576,1582]],[[64520,64520],\"mapped\",[1576,1605]],[[64521,64521],\"mapped\",[1576,1609]],[[64522,64522],\"mapped\",[1576,1610]],[[64523,64523],\"mapped\",[1578,1580]],[[64524,64524],\"mapped\",[1578,1581]],[[64525,64525],\"mapped\",[1578,1582]],[[64526,64526],\"mapped\",[1578,1605]],[[64527,64527],\"mapped\",[1578,1609]],[[64528,64528],\"mapped\",[1578,1610]],[[64529,64529],\"mapped\",[1579,1580]],[[64530,64530],\"mapped\",[1579,1605]],[[64531,64531],\"mapped\",[1579,1609]],[[64532,64532],\"mapped\",[1579,1610]],[[64533,64533],\"mapped\",[1580,1581]],[[64534,64534],\"mapped\",[1580,1605]],[[64535,64535],\"mapped\",[1581,1580]],[[64536,64536],\"mapped\",[1581,1605]],[[64537,64537],\"mapped\",[1582,1580]],[[64538,64538],\"mapped\",[1582,1581]],[[64539,64539],\"mapped\",[1582,1605]],[[64540,64540],\"mapped\",[1587,1580]],[[64541,64541],\"mapped\",[1587,1581]],[[64542,64542],\"mapped\",[1587,1582]],[[64543,64543],\"mapped\",[1587,1605]],[[64544,64544],\"mapped\",[1589,1581]],[[64545,64545],\"mapped\",[1589,1605]],[[64546,64546],\"mapped\",[1590,1580]],[[64547,64547],\"mapped\",[1590,1581]],[[64548,64548],\"mapped\",[1590,1582]],[[64549,64549],\"mapped\",[1590,1605]],[[64550,64550],\"mapped\",[1591,1581]],[[64551,64551],\"mapped\",[1591,1605]],[[64552,64552],\"mapped\",[1592,1605]],[[64553,64553],\"mapped\",[1593,1580]],[[64554,64554],\"mapped\",[1593,1605]],[[64555,64555],\"mapped\",[1594,1580]],[[64556,64556],\"mapped\",[1594,1605]],[[64557,64557],\"mapped\",[1601,1580]],[[64558,64558],\"mapped\",[1601,1581]],[[64559,64559],\"mapped\",[1601,1582]],[[64560,64560],\"mapped\",[1601,1605]],[[64561,64561],\"mapped\",[1601,1609]],[[64562,64562],\"mapped\",[1601,1610]],[[64563,64563],\"mapped\",[1602,1581]],[[64564,64564],\"mapped\",[1602,1605]],[[64565,64565],\"mapped\",[1602,1609]],[[64566,64566],\"mapped\",[1602,1610]],[[64567,64567],\"mapped\",[1603,1575]],[[64568,64568],\"mapped\",[1603,1580]],[[64569,64569],\"mapped\",[1603,1581]],[[64570,64570],\"mapped\",[1603,1582]],[[64571,64571],\"mapped\",[1603,1604]],[[64572,64572],\"mapped\",[1603,1605]],[[64573,64573],\"mapped\",[1603,1609]],[[64574,64574],\"mapped\",[1603,1610]],[[64575,64575],\"mapped\",[1604,1580]],[[64576,64576],\"mapped\",[1604,1581]],[[64577,64577],\"mapped\",[1604,1582]],[[64578,64578],\"mapped\",[1604,1605]],[[64579,64579],\"mapped\",[1604,1609]],[[64580,64580],\"mapped\",[1604,1610]],[[64581,64581],\"mapped\",[1605,1580]],[[64582,64582],\"mapped\",[1605,1581]],[[64583,64583],\"mapped\",[1605,1582]],[[64584,64584],\"mapped\",[1605,1605]],[[64585,64585],\"mapped\",[1605,1609]],[[64586,64586],\"mapped\",[1605,1610]],[[64587,64587],\"mapped\",[1606,1580]],[[64588,64588],\"mapped\",[1606,1581]],[[64589,64589],\"mapped\",[1606,1582]],[[64590,64590],\"mapped\",[1606,1605]],[[64591,64591],\"mapped\",[1606,1609]],[[64592,64592],\"mapped\",[1606,1610]],[[64593,64593],\"mapped\",[1607,1580]],[[64594,64594],\"mapped\",[1607,1605]],[[64595,64595],\"mapped\",[1607,1609]],[[64596,64596],\"mapped\",[1607,1610]],[[64597,64597],\"mapped\",[1610,1580]],[[64598,64598],\"mapped\",[1610,1581]],[[64599,64599],\"mapped\",[1610,1582]],[[64600,64600],\"mapped\",[1610,1605]],[[64601,64601],\"mapped\",[1610,1609]],[[64602,64602],\"mapped\",[1610,1610]],[[64603,64603],\"mapped\",[1584,1648]],[[64604,64604],\"mapped\",[1585,1648]],[[64605,64605],\"mapped\",[1609,1648]],[[64606,64606],\"disallowed_STD3_mapped\",[32,1612,1617]],[[64607,64607],\"disallowed_STD3_mapped\",[32,1613,1617]],[[64608,64608],\"disallowed_STD3_mapped\",[32,1614,1617]],[[64609,64609],\"disallowed_STD3_mapped\",[32,1615,1617]],[[64610,64610],\"disallowed_STD3_mapped\",[32,1616,1617]],[[64611,64611],\"disallowed_STD3_mapped\",[32,1617,1648]],[[64612,64612],\"mapped\",[1574,1585]],[[64613,64613],\"mapped\",[1574,1586]],[[64614,64614],\"mapped\",[1574,1605]],[[64615,64615],\"mapped\",[1574,1606]],[[64616,64616],\"mapped\",[1574,1609]],[[64617,64617],\"mapped\",[1574,1610]],[[64618,64618],\"mapped\",[1576,1585]],[[64619,64619],\"mapped\",[1576,1586]],[[64620,64620],\"mapped\",[1576,1605]],[[64621,64621],\"mapped\",[1576,1606]],[[64622,64622],\"mapped\",[1576,1609]],[[64623,64623],\"mapped\",[1576,1610]],[[64624,64624],\"mapped\",[1578,1585]],[[64625,64625],\"mapped\",[1578,1586]],[[64626,64626],\"mapped\",[1578,1605]],[[64627,64627],\"mapped\",[1578,1606]],[[64628,64628],\"mapped\",[1578,1609]],[[64629,64629],\"mapped\",[1578,1610]],[[64630,64630],\"mapped\",[1579,1585]],[[64631,64631],\"mapped\",[1579,1586]],[[64632,64632],\"mapped\",[1579,1605]],[[64633,64633],\"mapped\",[1579,1606]],[[64634,64634],\"mapped\",[1579,1609]],[[64635,64635],\"mapped\",[1579,1610]],[[64636,64636],\"mapped\",[1601,1609]],[[64637,64637],\"mapped\",[1601,1610]],[[64638,64638],\"mapped\",[1602,1609]],[[64639,64639],\"mapped\",[1602,1610]],[[64640,64640],\"mapped\",[1603,1575]],[[64641,64641],\"mapped\",[1603,1604]],[[64642,64642],\"mapped\",[1603,1605]],[[64643,64643],\"mapped\",[1603,1609]],[[64644,64644],\"mapped\",[1603,1610]],[[64645,64645],\"mapped\",[1604,1605]],[[64646,64646],\"mapped\",[1604,1609]],[[64647,64647],\"mapped\",[1604,1610]],[[64648,64648],\"mapped\",[1605,1575]],[[64649,64649],\"mapped\",[1605,1605]],[[64650,64650],\"mapped\",[1606,1585]],[[64651,64651],\"mapped\",[1606,1586]],[[64652,64652],\"mapped\",[1606,1605]],[[64653,64653],\"mapped\",[1606,1606]],[[64654,64654],\"mapped\",[1606,1609]],[[64655,64655],\"mapped\",[1606,1610]],[[64656,64656],\"mapped\",[1609,1648]],[[64657,64657],\"mapped\",[1610,1585]],[[64658,64658],\"mapped\",[1610,1586]],[[64659,64659],\"mapped\",[1610,1605]],[[64660,64660],\"mapped\",[1610,1606]],[[64661,64661],\"mapped\",[1610,1609]],[[64662,64662],\"mapped\",[1610,1610]],[[64663,64663],\"mapped\",[1574,1580]],[[64664,64664],\"mapped\",[1574,1581]],[[64665,64665],\"mapped\",[1574,1582]],[[64666,64666],\"mapped\",[1574,1605]],[[64667,64667],\"mapped\",[1574,1607]],[[64668,64668],\"mapped\",[1576,1580]],[[64669,64669],\"mapped\",[1576,1581]],[[64670,64670],\"mapped\",[1576,1582]],[[64671,64671],\"mapped\",[1576,1605]],[[64672,64672],\"mapped\",[1576,1607]],[[64673,64673],\"mapped\",[1578,1580]],[[64674,64674],\"mapped\",[1578,1581]],[[64675,64675],\"mapped\",[1578,1582]],[[64676,64676],\"mapped\",[1578,1605]],[[64677,64677],\"mapped\",[1578,1607]],[[64678,64678],\"mapped\",[1579,1605]],[[64679,64679],\"mapped\",[1580,1581]],[[64680,64680],\"mapped\",[1580,1605]],[[64681,64681],\"mapped\",[1581,1580]],[[64682,64682],\"mapped\",[1581,1605]],[[64683,64683],\"mapped\",[1582,1580]],[[64684,64684],\"mapped\",[1582,1605]],[[64685,64685],\"mapped\",[1587,1580]],[[64686,64686],\"mapped\",[1587,1581]],[[64687,64687],\"mapped\",[1587,1582]],[[64688,64688],\"mapped\",[1587,1605]],[[64689,64689],\"mapped\",[1589,1581]],[[64690,64690],\"mapped\",[1589,1582]],[[64691,64691],\"mapped\",[1589,1605]],[[64692,64692],\"mapped\",[1590,1580]],[[64693,64693],\"mapped\",[1590,1581]],[[64694,64694],\"mapped\",[1590,1582]],[[64695,64695],\"mapped\",[1590,1605]],[[64696,64696],\"mapped\",[1591,1581]],[[64697,64697],\"mapped\",[1592,1605]],[[64698,64698],\"mapped\",[1593,1580]],[[64699,64699],\"mapped\",[1593,1605]],[[64700,64700],\"mapped\",[1594,1580]],[[64701,64701],\"mapped\",[1594,1605]],[[64702,64702],\"mapped\",[1601,1580]],[[64703,64703],\"mapped\",[1601,1581]],[[64704,64704],\"mapped\",[1601,1582]],[[64705,64705],\"mapped\",[1601,1605]],[[64706,64706],\"mapped\",[1602,1581]],[[64707,64707],\"mapped\",[1602,1605]],[[64708,64708],\"mapped\",[1603,1580]],[[64709,64709],\"mapped\",[1603,1581]],[[64710,64710],\"mapped\",[1603,1582]],[[64711,64711],\"mapped\",[1603,1604]],[[64712,64712],\"mapped\",[1603,1605]],[[64713,64713],\"mapped\",[1604,1580]],[[64714,64714],\"mapped\",[1604,1581]],[[64715,64715],\"mapped\",[1604,1582]],[[64716,64716],\"mapped\",[1604,1605]],[[64717,64717],\"mapped\",[1604,1607]],[[64718,64718],\"mapped\",[1605,1580]],[[64719,64719],\"mapped\",[1605,1581]],[[64720,64720],\"mapped\",[1605,1582]],[[64721,64721],\"mapped\",[1605,1605]],[[64722,64722],\"mapped\",[1606,1580]],[[64723,64723],\"mapped\",[1606,1581]],[[64724,64724],\"mapped\",[1606,1582]],[[64725,64725],\"mapped\",[1606,1605]],[[64726,64726],\"mapped\",[1606,1607]],[[64727,64727],\"mapped\",[1607,1580]],[[64728,64728],\"mapped\",[1607,1605]],[[64729,64729],\"mapped\",[1607,1648]],[[64730,64730],\"mapped\",[1610,1580]],[[64731,64731],\"mapped\",[1610,1581]],[[64732,64732],\"mapped\",[1610,1582]],[[64733,64733],\"mapped\",[1610,1605]],[[64734,64734],\"mapped\",[1610,1607]],[[64735,64735],\"mapped\",[1574,1605]],[[64736,64736],\"mapped\",[1574,1607]],[[64737,64737],\"mapped\",[1576,1605]],[[64738,64738],\"mapped\",[1576,1607]],[[64739,64739],\"mapped\",[1578,1605]],[[64740,64740],\"mapped\",[1578,1607]],[[64741,64741],\"mapped\",[1579,1605]],[[64742,64742],\"mapped\",[1579,1607]],[[64743,64743],\"mapped\",[1587,1605]],[[64744,64744],\"mapped\",[1587,1607]],[[64745,64745],\"mapped\",[1588,1605]],[[64746,64746],\"mapped\",[1588,1607]],[[64747,64747],\"mapped\",[1603,1604]],[[64748,64748],\"mapped\",[1603,1605]],[[64749,64749],\"mapped\",[1604,1605]],[[64750,64750],\"mapped\",[1606,1605]],[[64751,64751],\"mapped\",[1606,1607]],[[64752,64752],\"mapped\",[1610,1605]],[[64753,64753],\"mapped\",[1610,1607]],[[64754,64754],\"mapped\",[1600,1614,1617]],[[64755,64755],\"mapped\",[1600,1615,1617]],[[64756,64756],\"mapped\",[1600,1616,1617]],[[64757,64757],\"mapped\",[1591,1609]],[[64758,64758],\"mapped\",[1591,1610]],[[64759,64759],\"mapped\",[1593,1609]],[[64760,64760],\"mapped\",[1593,1610]],[[64761,64761],\"mapped\",[1594,1609]],[[64762,64762],\"mapped\",[1594,1610]],[[64763,64763],\"mapped\",[1587,1609]],[[64764,64764],\"mapped\",[1587,1610]],[[64765,64765],\"mapped\",[1588,1609]],[[64766,64766],\"mapped\",[1588,1610]],[[64767,64767],\"mapped\",[1581,1609]],[[64768,64768],\"mapped\",[1581,1610]],[[64769,64769],\"mapped\",[1580,1609]],[[64770,64770],\"mapped\",[1580,1610]],[[64771,64771],\"mapped\",[1582,1609]],[[64772,64772],\"mapped\",[1582,1610]],[[64773,64773],\"mapped\",[1589,1609]],[[64774,64774],\"mapped\",[1589,1610]],[[64775,64775],\"mapped\",[1590,1609]],[[64776,64776],\"mapped\",[1590,1610]],[[64777,64777],\"mapped\",[1588,1580]],[[64778,64778],\"mapped\",[1588,1581]],[[64779,64779],\"mapped\",[1588,1582]],[[64780,64780],\"mapped\",[1588,1605]],[[64781,64781],\"mapped\",[1588,1585]],[[64782,64782],\"mapped\",[1587,1585]],[[64783,64783],\"mapped\",[1589,1585]],[[64784,64784],\"mapped\",[1590,1585]],[[64785,64785],\"mapped\",[1591,1609]],[[64786,64786],\"mapped\",[1591,1610]],[[64787,64787],\"mapped\",[1593,1609]],[[64788,64788],\"mapped\",[1593,1610]],[[64789,64789],\"mapped\",[1594,1609]],[[64790,64790],\"mapped\",[1594,1610]],[[64791,64791],\"mapped\",[1587,1609]],[[64792,64792],\"mapped\",[1587,1610]],[[64793,64793],\"mapped\",[1588,1609]],[[64794,64794],\"mapped\",[1588,1610]],[[64795,64795],\"mapped\",[1581,1609]],[[64796,64796],\"mapped\",[1581,1610]],[[64797,64797],\"mapped\",[1580,1609]],[[64798,64798],\"mapped\",[1580,1610]],[[64799,64799],\"mapped\",[1582,1609]],[[64800,64800],\"mapped\",[1582,1610]],[[64801,64801],\"mapped\",[1589,1609]],[[64802,64802],\"mapped\",[1589,1610]],[[64803,64803],\"mapped\",[1590,1609]],[[64804,64804],\"mapped\",[1590,1610]],[[64805,64805],\"mapped\",[1588,1580]],[[64806,64806],\"mapped\",[1588,1581]],[[64807,64807],\"mapped\",[1588,1582]],[[64808,64808],\"mapped\",[1588,1605]],[[64809,64809],\"mapped\",[1588,1585]],[[64810,64810],\"mapped\",[1587,1585]],[[64811,64811],\"mapped\",[1589,1585]],[[64812,64812],\"mapped\",[1590,1585]],[[64813,64813],\"mapped\",[1588,1580]],[[64814,64814],\"mapped\",[1588,1581]],[[64815,64815],\"mapped\",[1588,1582]],[[64816,64816],\"mapped\",[1588,1605]],[[64817,64817],\"mapped\",[1587,1607]],[[64818,64818],\"mapped\",[1588,1607]],[[64819,64819],\"mapped\",[1591,1605]],[[64820,64820],\"mapped\",[1587,1580]],[[64821,64821],\"mapped\",[1587,1581]],[[64822,64822],\"mapped\",[1587,1582]],[[64823,64823],\"mapped\",[1588,1580]],[[64824,64824],\"mapped\",[1588,1581]],[[64825,64825],\"mapped\",[1588,1582]],[[64826,64826],\"mapped\",[1591,1605]],[[64827,64827],\"mapped\",[1592,1605]],[[64828,64829],\"mapped\",[1575,1611]],[[64830,64831],\"valid\",[],\"NV8\"],[[64832,64847],\"disallowed\"],[[64848,64848],\"mapped\",[1578,1580,1605]],[[64849,64850],\"mapped\",[1578,1581,1580]],[[64851,64851],\"mapped\",[1578,1581,1605]],[[64852,64852],\"mapped\",[1578,1582,1605]],[[64853,64853],\"mapped\",[1578,1605,1580]],[[64854,64854],\"mapped\",[1578,1605,1581]],[[64855,64855],\"mapped\",[1578,1605,1582]],[[64856,64857],\"mapped\",[1580,1605,1581]],[[64858,64858],\"mapped\",[1581,1605,1610]],[[64859,64859],\"mapped\",[1581,1605,1609]],[[64860,64860],\"mapped\",[1587,1581,1580]],[[64861,64861],\"mapped\",[1587,1580,1581]],[[64862,64862],\"mapped\",[1587,1580,1609]],[[64863,64864],\"mapped\",[1587,1605,1581]],[[64865,64865],\"mapped\",[1587,1605,1580]],[[64866,64867],\"mapped\",[1587,1605,1605]],[[64868,64869],\"mapped\",[1589,1581,1581]],[[64870,64870],\"mapped\",[1589,1605,1605]],[[64871,64872],\"mapped\",[1588,1581,1605]],[[64873,64873],\"mapped\",[1588,1580,1610]],[[64874,64875],\"mapped\",[1588,1605,1582]],[[64876,64877],\"mapped\",[1588,1605,1605]],[[64878,64878],\"mapped\",[1590,1581,1609]],[[64879,64880],\"mapped\",[1590,1582,1605]],[[64881,64882],\"mapped\",[1591,1605,1581]],[[64883,64883],\"mapped\",[1591,1605,1605]],[[64884,64884],\"mapped\",[1591,1605,1610]],[[64885,64885],\"mapped\",[1593,1580,1605]],[[64886,64887],\"mapped\",[1593,1605,1605]],[[64888,64888],\"mapped\",[1593,1605,1609]],[[64889,64889],\"mapped\",[1594,1605,1605]],[[64890,64890],\"mapped\",[1594,1605,1610]],[[64891,64891],\"mapped\",[1594,1605,1609]],[[64892,64893],\"mapped\",[1601,1582,1605]],[[64894,64894],\"mapped\",[1602,1605,1581]],[[64895,64895],\"mapped\",[1602,1605,1605]],[[64896,64896],\"mapped\",[1604,1581,1605]],[[64897,64897],\"mapped\",[1604,1581,1610]],[[64898,64898],\"mapped\",[1604,1581,1609]],[[64899,64900],\"mapped\",[1604,1580,1580]],[[64901,64902],\"mapped\",[1604,1582,1605]],[[64903,64904],\"mapped\",[1604,1605,1581]],[[64905,64905],\"mapped\",[1605,1581,1580]],[[64906,64906],\"mapped\",[1605,1581,1605]],[[64907,64907],\"mapped\",[1605,1581,1610]],[[64908,64908],\"mapped\",[1605,1580,1581]],[[64909,64909],\"mapped\",[1605,1580,1605]],[[64910,64910],\"mapped\",[1605,1582,1580]],[[64911,64911],\"mapped\",[1605,1582,1605]],[[64912,64913],\"disallowed\"],[[64914,64914],\"mapped\",[1605,1580,1582]],[[64915,64915],\"mapped\",[1607,1605,1580]],[[64916,64916],\"mapped\",[1607,1605,1605]],[[64917,64917],\"mapped\",[1606,1581,1605]],[[64918,64918],\"mapped\",[1606,1581,1609]],[[64919,64920],\"mapped\",[1606,1580,1605]],[[64921,64921],\"mapped\",[1606,1580,1609]],[[64922,64922],\"mapped\",[1606,1605,1610]],[[64923,64923],\"mapped\",[1606,1605,1609]],[[64924,64925],\"mapped\",[1610,1605,1605]],[[64926,64926],\"mapped\",[1576,1582,1610]],[[64927,64927],\"mapped\",[1578,1580,1610]],[[64928,64928],\"mapped\",[1578,1580,1609]],[[64929,64929],\"mapped\",[1578,1582,1610]],[[64930,64930],\"mapped\",[1578,1582,1609]],[[64931,64931],\"mapped\",[1578,1605,1610]],[[64932,64932],\"mapped\",[1578,1605,1609]],[[64933,64933],\"mapped\",[1580,1605,1610]],[[64934,64934],\"mapped\",[1580,1581,1609]],[[64935,64935],\"mapped\",[1580,1605,1609]],[[64936,64936],\"mapped\",[1587,1582,1609]],[[64937,64937],\"mapped\",[1589,1581,1610]],[[64938,64938],\"mapped\",[1588,1581,1610]],[[64939,64939],\"mapped\",[1590,1581,1610]],[[64940,64940],\"mapped\",[1604,1580,1610]],[[64941,64941],\"mapped\",[1604,1605,1610]],[[64942,64942],\"mapped\",[1610,1581,1610]],[[64943,64943],\"mapped\",[1610,1580,1610]],[[64944,64944],\"mapped\",[1610,1605,1610]],[[64945,64945],\"mapped\",[1605,1605,1610]],[[64946,64946],\"mapped\",[1602,1605,1610]],[[64947,64947],\"mapped\",[1606,1581,1610]],[[64948,64948],\"mapped\",[1602,1605,1581]],[[64949,64949],\"mapped\",[1604,1581,1605]],[[64950,64950],\"mapped\",[1593,1605,1610]],[[64951,64951],\"mapped\",[1603,1605,1610]],[[64952,64952],\"mapped\",[1606,1580,1581]],[[64953,64953],\"mapped\",[1605,1582,1610]],[[64954,64954],\"mapped\",[1604,1580,1605]],[[64955,64955],\"mapped\",[1603,1605,1605]],[[64956,64956],\"mapped\",[1604,1580,1605]],[[64957,64957],\"mapped\",[1606,1580,1581]],[[64958,64958],\"mapped\",[1580,1581,1610]],[[64959,64959],\"mapped\",[1581,1580,1610]],[[64960,64960],\"mapped\",[1605,1580,1610]],[[64961,64961],\"mapped\",[1601,1605,1610]],[[64962,64962],\"mapped\",[1576,1581,1610]],[[64963,64963],\"mapped\",[1603,1605,1605]],[[64964,64964],\"mapped\",[1593,1580,1605]],[[64965,64965],\"mapped\",[1589,1605,1605]],[[64966,64966],\"mapped\",[1587,1582,1610]],[[64967,64967],\"mapped\",[1606,1580,1610]],[[64968,64975],\"disallowed\"],[[64976,65007],\"disallowed\"],[[65008,65008],\"mapped\",[1589,1604,1746]],[[65009,65009],\"mapped\",[1602,1604,1746]],[[65010,65010],\"mapped\",[1575,1604,1604,1607]],[[65011,65011],\"mapped\",[1575,1603,1576,1585]],[[65012,65012],\"mapped\",[1605,1581,1605,1583]],[[65013,65013],\"mapped\",[1589,1604,1593,1605]],[[65014,65014],\"mapped\",[1585,1587,1608,1604]],[[65015,65015],\"mapped\",[1593,1604,1610,1607]],[[65016,65016],\"mapped\",[1608,1587,1604,1605]],[[65017,65017],\"mapped\",[1589,1604,1609]],[[65018,65018],\"disallowed_STD3_mapped\",[1589,1604,1609,32,1575,1604,1604,1607,32,1593,1604,1610,1607,32,1608,1587,1604,1605]],[[65019,65019],\"disallowed_STD3_mapped\",[1580,1604,32,1580,1604,1575,1604,1607]],[[65020,65020],\"mapped\",[1585,1740,1575,1604]],[[65021,65021],\"valid\",[],\"NV8\"],[[65022,65023],\"disallowed\"],[[65024,65039],\"ignored\"],[[65040,65040],\"disallowed_STD3_mapped\",[44]],[[65041,65041],\"mapped\",[12289]],[[65042,65042],\"disallowed\"],[[65043,65043],\"disallowed_STD3_mapped\",[58]],[[65044,65044],\"disallowed_STD3_mapped\",[59]],[[65045,65045],\"disallowed_STD3_mapped\",[33]],[[65046,65046],\"disallowed_STD3_mapped\",[63]],[[65047,65047],\"mapped\",[12310]],[[65048,65048],\"mapped\",[12311]],[[65049,65049],\"disallowed\"],[[65050,65055],\"disallowed\"],[[65056,65059],\"valid\"],[[65060,65062],\"valid\"],[[65063,65069],\"valid\"],[[65070,65071],\"valid\"],[[65072,65072],\"disallowed\"],[[65073,65073],\"mapped\",[8212]],[[65074,65074],\"mapped\",[8211]],[[65075,65076],\"disallowed_STD3_mapped\",[95]],[[65077,65077],\"disallowed_STD3_mapped\",[40]],[[65078,65078],\"disallowed_STD3_mapped\",[41]],[[65079,65079],\"disallowed_STD3_mapped\",[123]],[[65080,65080],\"disallowed_STD3_mapped\",[125]],[[65081,65081],\"mapped\",[12308]],[[65082,65082],\"mapped\",[12309]],[[65083,65083],\"mapped\",[12304]],[[65084,65084],\"mapped\",[12305]],[[65085,65085],\"mapped\",[12298]],[[65086,65086],\"mapped\",[12299]],[[65087,65087],\"mapped\",[12296]],[[65088,65088],\"mapped\",[12297]],[[65089,65089],\"mapped\",[12300]],[[65090,65090],\"mapped\",[12301]],[[65091,65091],\"mapped\",[12302]],[[65092,65092],\"mapped\",[12303]],[[65093,65094],\"valid\",[],\"NV8\"],[[65095,65095],\"disallowed_STD3_mapped\",[91]],[[65096,65096],\"disallowed_STD3_mapped\",[93]],[[65097,65100],\"disallowed_STD3_mapped\",[32,773]],[[65101,65103],\"disallowed_STD3_mapped\",[95]],[[65104,65104],\"disallowed_STD3_mapped\",[44]],[[65105,65105],\"mapped\",[12289]],[[65106,65106],\"disallowed\"],[[65107,65107],\"disallowed\"],[[65108,65108],\"disallowed_STD3_mapped\",[59]],[[65109,65109],\"disallowed_STD3_mapped\",[58]],[[65110,65110],\"disallowed_STD3_mapped\",[63]],[[65111,65111],\"disallowed_STD3_mapped\",[33]],[[65112,65112],\"mapped\",[8212]],[[65113,65113],\"disallowed_STD3_mapped\",[40]],[[65114,65114],\"disallowed_STD3_mapped\",[41]],[[65115,65115],\"disallowed_STD3_mapped\",[123]],[[65116,65116],\"disallowed_STD3_mapped\",[125]],[[65117,65117],\"mapped\",[12308]],[[65118,65118],\"mapped\",[12309]],[[65119,65119],\"disallowed_STD3_mapped\",[35]],[[65120,65120],\"disallowed_STD3_mapped\",[38]],[[65121,65121],\"disallowed_STD3_mapped\",[42]],[[65122,65122],\"disallowed_STD3_mapped\",[43]],[[65123,65123],\"mapped\",[45]],[[65124,65124],\"disallowed_STD3_mapped\",[60]],[[65125,65125],\"disallowed_STD3_mapped\",[62]],[[65126,65126],\"disallowed_STD3_mapped\",[61]],[[65127,65127],\"disallowed\"],[[65128,65128],\"disallowed_STD3_mapped\",[92]],[[65129,65129],\"disallowed_STD3_mapped\",[36]],[[65130,65130],\"disallowed_STD3_mapped\",[37]],[[65131,65131],\"disallowed_STD3_mapped\",[64]],[[65132,65135],\"disallowed\"],[[65136,65136],\"disallowed_STD3_mapped\",[32,1611]],[[65137,65137],\"mapped\",[1600,1611]],[[65138,65138],\"disallowed_STD3_mapped\",[32,1612]],[[65139,65139],\"valid\"],[[65140,65140],\"disallowed_STD3_mapped\",[32,1613]],[[65141,65141],\"disallowed\"],[[65142,65142],\"disallowed_STD3_mapped\",[32,1614]],[[65143,65143],\"mapped\",[1600,1614]],[[65144,65144],\"disallowed_STD3_mapped\",[32,1615]],[[65145,65145],\"mapped\",[1600,1615]],[[65146,65146],\"disallowed_STD3_mapped\",[32,1616]],[[65147,65147],\"mapped\",[1600,1616]],[[65148,65148],\"disallowed_STD3_mapped\",[32,1617]],[[65149,65149],\"mapped\",[1600,1617]],[[65150,65150],\"disallowed_STD3_mapped\",[32,1618]],[[65151,65151],\"mapped\",[1600,1618]],[[65152,65152],\"mapped\",[1569]],[[65153,65154],\"mapped\",[1570]],[[65155,65156],\"mapped\",[1571]],[[65157,65158],\"mapped\",[1572]],[[65159,65160],\"mapped\",[1573]],[[65161,65164],\"mapped\",[1574]],[[65165,65166],\"mapped\",[1575]],[[65167,65170],\"mapped\",[1576]],[[65171,65172],\"mapped\",[1577]],[[65173,65176],\"mapped\",[1578]],[[65177,65180],\"mapped\",[1579]],[[65181,65184],\"mapped\",[1580]],[[65185,65188],\"mapped\",[1581]],[[65189,65192],\"mapped\",[1582]],[[65193,65194],\"mapped\",[1583]],[[65195,65196],\"mapped\",[1584]],[[65197,65198],\"mapped\",[1585]],[[65199,65200],\"mapped\",[1586]],[[65201,65204],\"mapped\",[1587]],[[65205,65208],\"mapped\",[1588]],[[65209,65212],\"mapped\",[1589]],[[65213,65216],\"mapped\",[1590]],[[65217,65220],\"mapped\",[1591]],[[65221,65224],\"mapped\",[1592]],[[65225,65228],\"mapped\",[1593]],[[65229,65232],\"mapped\",[1594]],[[65233,65236],\"mapped\",[1601]],[[65237,65240],\"mapped\",[1602]],[[65241,65244],\"mapped\",[1603]],[[65245,65248],\"mapped\",[1604]],[[65249,65252],\"mapped\",[1605]],[[65253,65256],\"mapped\",[1606]],[[65257,65260],\"mapped\",[1607]],[[65261,65262],\"mapped\",[1608]],[[65263,65264],\"mapped\",[1609]],[[65265,65268],\"mapped\",[1610]],[[65269,65270],\"mapped\",[1604,1570]],[[65271,65272],\"mapped\",[1604,1571]],[[65273,65274],\"mapped\",[1604,1573]],[[65275,65276],\"mapped\",[1604,1575]],[[65277,65278],\"disallowed\"],[[65279,65279],\"ignored\"],[[65280,65280],\"disallowed\"],[[65281,65281],\"disallowed_STD3_mapped\",[33]],[[65282,65282],\"disallowed_STD3_mapped\",[34]],[[65283,65283],\"disallowed_STD3_mapped\",[35]],[[65284,65284],\"disallowed_STD3_mapped\",[36]],[[65285,65285],\"disallowed_STD3_mapped\",[37]],[[65286,65286],\"disallowed_STD3_mapped\",[38]],[[65287,65287],\"disallowed_STD3_mapped\",[39]],[[65288,65288],\"disallowed_STD3_mapped\",[40]],[[65289,65289],\"disallowed_STD3_mapped\",[41]],[[65290,65290],\"disallowed_STD3_mapped\",[42]],[[65291,65291],\"disallowed_STD3_mapped\",[43]],[[65292,65292],\"disallowed_STD3_mapped\",[44]],[[65293,65293],\"mapped\",[45]],[[65294,65294],\"mapped\",[46]],[[65295,65295],\"disallowed_STD3_mapped\",[47]],[[65296,65296],\"mapped\",[48]],[[65297,65297],\"mapped\",[49]],[[65298,65298],\"mapped\",[50]],[[65299,65299],\"mapped\",[51]],[[65300,65300],\"mapped\",[52]],[[65301,65301],\"mapped\",[53]],[[65302,65302],\"mapped\",[54]],[[65303,65303],\"mapped\",[55]],[[65304,65304],\"mapped\",[56]],[[65305,65305],\"mapped\",[57]],[[65306,65306],\"disallowed_STD3_mapped\",[58]],[[65307,65307],\"disallowed_STD3_mapped\",[59]],[[65308,65308],\"disallowed_STD3_mapped\",[60]],[[65309,65309],\"disallowed_STD3_mapped\",[61]],[[65310,65310],\"disallowed_STD3_mapped\",[62]],[[65311,65311],\"disallowed_STD3_mapped\",[63]],[[65312,65312],\"disallowed_STD3_mapped\",[64]],[[65313,65313],\"mapped\",[97]],[[65314,65314],\"mapped\",[98]],[[65315,65315],\"mapped\",[99]],[[65316,65316],\"mapped\",[100]],[[65317,65317],\"mapped\",[101]],[[65318,65318],\"mapped\",[102]],[[65319,65319],\"mapped\",[103]],[[65320,65320],\"mapped\",[104]],[[65321,65321],\"mapped\",[105]],[[65322,65322],\"mapped\",[106]],[[65323,65323],\"mapped\",[107]],[[65324,65324],\"mapped\",[108]],[[65325,65325],\"mapped\",[109]],[[65326,65326],\"mapped\",[110]],[[65327,65327],\"mapped\",[111]],[[65328,65328],\"mapped\",[112]],[[65329,65329],\"mapped\",[113]],[[65330,65330],\"mapped\",[114]],[[65331,65331],\"mapped\",[115]],[[65332,65332],\"mapped\",[116]],[[65333,65333],\"mapped\",[117]],[[65334,65334],\"mapped\",[118]],[[65335,65335],\"mapped\",[119]],[[65336,65336],\"mapped\",[120]],[[65337,65337],\"mapped\",[121]],[[65338,65338],\"mapped\",[122]],[[65339,65339],\"disallowed_STD3_mapped\",[91]],[[65340,65340],\"disallowed_STD3_mapped\",[92]],[[65341,65341],\"disallowed_STD3_mapped\",[93]],[[65342,65342],\"disallowed_STD3_mapped\",[94]],[[65343,65343],\"disallowed_STD3_mapped\",[95]],[[65344,65344],\"disallowed_STD3_mapped\",[96]],[[65345,65345],\"mapped\",[97]],[[65346,65346],\"mapped\",[98]],[[65347,65347],\"mapped\",[99]],[[65348,65348],\"mapped\",[100]],[[65349,65349],\"mapped\",[101]],[[65350,65350],\"mapped\",[102]],[[65351,65351],\"mapped\",[103]],[[65352,65352],\"mapped\",[104]],[[65353,65353],\"mapped\",[105]],[[65354,65354],\"mapped\",[106]],[[65355,65355],\"mapped\",[107]],[[65356,65356],\"mapped\",[108]],[[65357,65357],\"mapped\",[109]],[[65358,65358],\"mapped\",[110]],[[65359,65359],\"mapped\",[111]],[[65360,65360],\"mapped\",[112]],[[65361,65361],\"mapped\",[113]],[[65362,65362],\"mapped\",[114]],[[65363,65363],\"mapped\",[115]],[[65364,65364],\"mapped\",[116]],[[65365,65365],\"mapped\",[117]],[[65366,65366],\"mapped\",[118]],[[65367,65367],\"mapped\",[119]],[[65368,65368],\"mapped\",[120]],[[65369,65369],\"mapped\",[121]],[[65370,65370],\"mapped\",[122]],[[65371,65371],\"disallowed_STD3_mapped\",[123]],[[65372,65372],\"disallowed_STD3_mapped\",[124]],[[65373,65373],\"disallowed_STD3_mapped\",[125]],[[65374,65374],\"disallowed_STD3_mapped\",[126]],[[65375,65375],\"mapped\",[10629]],[[65376,65376],\"mapped\",[10630]],[[65377,65377],\"mapped\",[46]],[[65378,65378],\"mapped\",[12300]],[[65379,65379],\"mapped\",[12301]],[[65380,65380],\"mapped\",[12289]],[[65381,65381],\"mapped\",[12539]],[[65382,65382],\"mapped\",[12530]],[[65383,65383],\"mapped\",[12449]],[[65384,65384],\"mapped\",[12451]],[[65385,65385],\"mapped\",[12453]],[[65386,65386],\"mapped\",[12455]],[[65387,65387],\"mapped\",[12457]],[[65388,65388],\"mapped\",[12515]],[[65389,65389],\"mapped\",[12517]],[[65390,65390],\"mapped\",[12519]],[[65391,65391],\"mapped\",[12483]],[[65392,65392],\"mapped\",[12540]],[[65393,65393],\"mapped\",[12450]],[[65394,65394],\"mapped\",[12452]],[[65395,65395],\"mapped\",[12454]],[[65396,65396],\"mapped\",[12456]],[[65397,65397],\"mapped\",[12458]],[[65398,65398],\"mapped\",[12459]],[[65399,65399],\"mapped\",[12461]],[[65400,65400],\"mapped\",[12463]],[[65401,65401],\"mapped\",[12465]],[[65402,65402],\"mapped\",[12467]],[[65403,65403],\"mapped\",[12469]],[[65404,65404],\"mapped\",[12471]],[[65405,65405],\"mapped\",[12473]],[[65406,65406],\"mapped\",[12475]],[[65407,65407],\"mapped\",[12477]],[[65408,65408],\"mapped\",[12479]],[[65409,65409],\"mapped\",[12481]],[[65410,65410],\"mapped\",[12484]],[[65411,65411],\"mapped\",[12486]],[[65412,65412],\"mapped\",[12488]],[[65413,65413],\"mapped\",[12490]],[[65414,65414],\"mapped\",[12491]],[[65415,65415],\"mapped\",[12492]],[[65416,65416],\"mapped\",[12493]],[[65417,65417],\"mapped\",[12494]],[[65418,65418],\"mapped\",[12495]],[[65419,65419],\"mapped\",[12498]],[[65420,65420],\"mapped\",[12501]],[[65421,65421],\"mapped\",[12504]],[[65422,65422],\"mapped\",[12507]],[[65423,65423],\"mapped\",[12510]],[[65424,65424],\"mapped\",[12511]],[[65425,65425],\"mapped\",[12512]],[[65426,65426],\"mapped\",[12513]],[[65427,65427],\"mapped\",[12514]],[[65428,65428],\"mapped\",[12516]],[[65429,65429],\"mapped\",[12518]],[[65430,65430],\"mapped\",[12520]],[[65431,65431],\"mapped\",[12521]],[[65432,65432],\"mapped\",[12522]],[[65433,65433],\"mapped\",[12523]],[[65434,65434],\"mapped\",[12524]],[[65435,65435],\"mapped\",[12525]],[[65436,65436],\"mapped\",[12527]],[[65437,65437],\"mapped\",[12531]],[[65438,65438],\"mapped\",[12441]],[[65439,65439],\"mapped\",[12442]],[[65440,65440],\"disallowed\"],[[65441,65441],\"mapped\",[4352]],[[65442,65442],\"mapped\",[4353]],[[65443,65443],\"mapped\",[4522]],[[65444,65444],\"mapped\",[4354]],[[65445,65445],\"mapped\",[4524]],[[65446,65446],\"mapped\",[4525]],[[65447,65447],\"mapped\",[4355]],[[65448,65448],\"mapped\",[4356]],[[65449,65449],\"mapped\",[4357]],[[65450,65450],\"mapped\",[4528]],[[65451,65451],\"mapped\",[4529]],[[65452,65452],\"mapped\",[4530]],[[65453,65453],\"mapped\",[4531]],[[65454,65454],\"mapped\",[4532]],[[65455,65455],\"mapped\",[4533]],[[65456,65456],\"mapped\",[4378]],[[65457,65457],\"mapped\",[4358]],[[65458,65458],\"mapped\",[4359]],[[65459,65459],\"mapped\",[4360]],[[65460,65460],\"mapped\",[4385]],[[65461,65461],\"mapped\",[4361]],[[65462,65462],\"mapped\",[4362]],[[65463,65463],\"mapped\",[4363]],[[65464,65464],\"mapped\",[4364]],[[65465,65465],\"mapped\",[4365]],[[65466,65466],\"mapped\",[4366]],[[65467,65467],\"mapped\",[4367]],[[65468,65468],\"mapped\",[4368]],[[65469,65469],\"mapped\",[4369]],[[65470,65470],\"mapped\",[4370]],[[65471,65473],\"disallowed\"],[[65474,65474],\"mapped\",[4449]],[[65475,65475],\"mapped\",[4450]],[[65476,65476],\"mapped\",[4451]],[[65477,65477],\"mapped\",[4452]],[[65478,65478],\"mapped\",[4453]],[[65479,65479],\"mapped\",[4454]],[[65480,65481],\"disallowed\"],[[65482,65482],\"mapped\",[4455]],[[65483,65483],\"mapped\",[4456]],[[65484,65484],\"mapped\",[4457]],[[65485,65485],\"mapped\",[4458]],[[65486,65486],\"mapped\",[4459]],[[65487,65487],\"mapped\",[4460]],[[65488,65489],\"disallowed\"],[[65490,65490],\"mapped\",[4461]],[[65491,65491],\"mapped\",[4462]],[[65492,65492],\"mapped\",[4463]],[[65493,65493],\"mapped\",[4464]],[[65494,65494],\"mapped\",[4465]],[[65495,65495],\"mapped\",[4466]],[[65496,65497],\"disallowed\"],[[65498,65498],\"mapped\",[4467]],[[65499,65499],\"mapped\",[4468]],[[65500,65500],\"mapped\",[4469]],[[65501,65503],\"disallowed\"],[[65504,65504],\"mapped\",[162]],[[65505,65505],\"mapped\",[163]],[[65506,65506],\"mapped\",[172]],[[65507,65507],\"disallowed_STD3_mapped\",[32,772]],[[65508,65508],\"mapped\",[166]],[[65509,65509],\"mapped\",[165]],[[65510,65510],\"mapped\",[8361]],[[65511,65511],\"disallowed\"],[[65512,65512],\"mapped\",[9474]],[[65513,65513],\"mapped\",[8592]],[[65514,65514],\"mapped\",[8593]],[[65515,65515],\"mapped\",[8594]],[[65516,65516],\"mapped\",[8595]],[[65517,65517],\"mapped\",[9632]],[[65518,65518],\"mapped\",[9675]],[[65519,65528],\"disallowed\"],[[65529,65531],\"disallowed\"],[[65532,65532],\"disallowed\"],[[65533,65533],\"disallowed\"],[[65534,65535],\"disallowed\"],[[65536,65547],\"valid\"],[[65548,65548],\"disallowed\"],[[65549,65574],\"valid\"],[[65575,65575],\"disallowed\"],[[65576,65594],\"valid\"],[[65595,65595],\"disallowed\"],[[65596,65597],\"valid\"],[[65598,65598],\"disallowed\"],[[65599,65613],\"valid\"],[[65614,65615],\"disallowed\"],[[65616,65629],\"valid\"],[[65630,65663],\"disallowed\"],[[65664,65786],\"valid\"],[[65787,65791],\"disallowed\"],[[65792,65794],\"valid\",[],\"NV8\"],[[65795,65798],\"disallowed\"],[[65799,65843],\"valid\",[],\"NV8\"],[[65844,65846],\"disallowed\"],[[65847,65855],\"valid\",[],\"NV8\"],[[65856,65930],\"valid\",[],\"NV8\"],[[65931,65932],\"valid\",[],\"NV8\"],[[65933,65935],\"disallowed\"],[[65936,65947],\"valid\",[],\"NV8\"],[[65948,65951],\"disallowed\"],[[65952,65952],\"valid\",[],\"NV8\"],[[65953,65999],\"disallowed\"],[[66000,66044],\"valid\",[],\"NV8\"],[[66045,66045],\"valid\"],[[66046,66175],\"disallowed\"],[[66176,66204],\"valid\"],[[66205,66207],\"disallowed\"],[[66208,66256],\"valid\"],[[66257,66271],\"disallowed\"],[[66272,66272],\"valid\"],[[66273,66299],\"valid\",[],\"NV8\"],[[66300,66303],\"disallowed\"],[[66304,66334],\"valid\"],[[66335,66335],\"valid\"],[[66336,66339],\"valid\",[],\"NV8\"],[[66340,66351],\"disallowed\"],[[66352,66368],\"valid\"],[[66369,66369],\"valid\",[],\"NV8\"],[[66370,66377],\"valid\"],[[66378,66378],\"valid\",[],\"NV8\"],[[66379,66383],\"disallowed\"],[[66384,66426],\"valid\"],[[66427,66431],\"disallowed\"],[[66432,66461],\"valid\"],[[66462,66462],\"disallowed\"],[[66463,66463],\"valid\",[],\"NV8\"],[[66464,66499],\"valid\"],[[66500,66503],\"disallowed\"],[[66504,66511],\"valid\"],[[66512,66517],\"valid\",[],\"NV8\"],[[66518,66559],\"disallowed\"],[[66560,66560],\"mapped\",[66600]],[[66561,66561],\"mapped\",[66601]],[[66562,66562],\"mapped\",[66602]],[[66563,66563],\"mapped\",[66603]],[[66564,66564],\"mapped\",[66604]],[[66565,66565],\"mapped\",[66605]],[[66566,66566],\"mapped\",[66606]],[[66567,66567],\"mapped\",[66607]],[[66568,66568],\"mapped\",[66608]],[[66569,66569],\"mapped\",[66609]],[[66570,66570],\"mapped\",[66610]],[[66571,66571],\"mapped\",[66611]],[[66572,66572],\"mapped\",[66612]],[[66573,66573],\"mapped\",[66613]],[[66574,66574],\"mapped\",[66614]],[[66575,66575],\"mapped\",[66615]],[[66576,66576],\"mapped\",[66616]],[[66577,66577],\"mapped\",[66617]],[[66578,66578],\"mapped\",[66618]],[[66579,66579],\"mapped\",[66619]],[[66580,66580],\"mapped\",[66620]],[[66581,66581],\"mapped\",[66621]],[[66582,66582],\"mapped\",[66622]],[[66583,66583],\"mapped\",[66623]],[[66584,66584],\"mapped\",[66624]],[[66585,66585],\"mapped\",[66625]],[[66586,66586],\"mapped\",[66626]],[[66587,66587],\"mapped\",[66627]],[[66588,66588],\"mapped\",[66628]],[[66589,66589],\"mapped\",[66629]],[[66590,66590],\"mapped\",[66630]],[[66591,66591],\"mapped\",[66631]],[[66592,66592],\"mapped\",[66632]],[[66593,66593],\"mapped\",[66633]],[[66594,66594],\"mapped\",[66634]],[[66595,66595],\"mapped\",[66635]],[[66596,66596],\"mapped\",[66636]],[[66597,66597],\"mapped\",[66637]],[[66598,66598],\"mapped\",[66638]],[[66599,66599],\"mapped\",[66639]],[[66600,66637],\"valid\"],[[66638,66717],\"valid\"],[[66718,66719],\"disallowed\"],[[66720,66729],\"valid\"],[[66730,66815],\"disallowed\"],[[66816,66855],\"valid\"],[[66856,66863],\"disallowed\"],[[66864,66915],\"valid\"],[[66916,66926],\"disallowed\"],[[66927,66927],\"valid\",[],\"NV8\"],[[66928,67071],\"disallowed\"],[[67072,67382],\"valid\"],[[67383,67391],\"disallowed\"],[[67392,67413],\"valid\"],[[67414,67423],\"disallowed\"],[[67424,67431],\"valid\"],[[67432,67583],\"disallowed\"],[[67584,67589],\"valid\"],[[67590,67591],\"disallowed\"],[[67592,67592],\"valid\"],[[67593,67593],\"disallowed\"],[[67594,67637],\"valid\"],[[67638,67638],\"disallowed\"],[[67639,67640],\"valid\"],[[67641,67643],\"disallowed\"],[[67644,67644],\"valid\"],[[67645,67646],\"disallowed\"],[[67647,67647],\"valid\"],[[67648,67669],\"valid\"],[[67670,67670],\"disallowed\"],[[67671,67679],\"valid\",[],\"NV8\"],[[67680,67702],\"valid\"],[[67703,67711],\"valid\",[],\"NV8\"],[[67712,67742],\"valid\"],[[67743,67750],\"disallowed\"],[[67751,67759],\"valid\",[],\"NV8\"],[[67760,67807],\"disallowed\"],[[67808,67826],\"valid\"],[[67827,67827],\"disallowed\"],[[67828,67829],\"valid\"],[[67830,67834],\"disallowed\"],[[67835,67839],\"valid\",[],\"NV8\"],[[67840,67861],\"valid\"],[[67862,67865],\"valid\",[],\"NV8\"],[[67866,67867],\"valid\",[],\"NV8\"],[[67868,67870],\"disallowed\"],[[67871,67871],\"valid\",[],\"NV8\"],[[67872,67897],\"valid\"],[[67898,67902],\"disallowed\"],[[67903,67903],\"valid\",[],\"NV8\"],[[67904,67967],\"disallowed\"],[[67968,68023],\"valid\"],[[68024,68027],\"disallowed\"],[[68028,68029],\"valid\",[],\"NV8\"],[[68030,68031],\"valid\"],[[68032,68047],\"valid\",[],\"NV8\"],[[68048,68049],\"disallowed\"],[[68050,68095],\"valid\",[],\"NV8\"],[[68096,68099],\"valid\"],[[68100,68100],\"disallowed\"],[[68101,68102],\"valid\"],[[68103,68107],\"disallowed\"],[[68108,68115],\"valid\"],[[68116,68116],\"disallowed\"],[[68117,68119],\"valid\"],[[68120,68120],\"disallowed\"],[[68121,68147],\"valid\"],[[68148,68151],\"disallowed\"],[[68152,68154],\"valid\"],[[68155,68158],\"disallowed\"],[[68159,68159],\"valid\"],[[68160,68167],\"valid\",[],\"NV8\"],[[68168,68175],\"disallowed\"],[[68176,68184],\"valid\",[],\"NV8\"],[[68185,68191],\"disallowed\"],[[68192,68220],\"valid\"],[[68221,68223],\"valid\",[],\"NV8\"],[[68224,68252],\"valid\"],[[68253,68255],\"valid\",[],\"NV8\"],[[68256,68287],\"disallowed\"],[[68288,68295],\"valid\"],[[68296,68296],\"valid\",[],\"NV8\"],[[68297,68326],\"valid\"],[[68327,68330],\"disallowed\"],[[68331,68342],\"valid\",[],\"NV8\"],[[68343,68351],\"disallowed\"],[[68352,68405],\"valid\"],[[68406,68408],\"disallowed\"],[[68409,68415],\"valid\",[],\"NV8\"],[[68416,68437],\"valid\"],[[68438,68439],\"disallowed\"],[[68440,68447],\"valid\",[],\"NV8\"],[[68448,68466],\"valid\"],[[68467,68471],\"disallowed\"],[[68472,68479],\"valid\",[],\"NV8\"],[[68480,68497],\"valid\"],[[68498,68504],\"disallowed\"],[[68505,68508],\"valid\",[],\"NV8\"],[[68509,68520],\"disallowed\"],[[68521,68527],\"valid\",[],\"NV8\"],[[68528,68607],\"disallowed\"],[[68608,68680],\"valid\"],[[68681,68735],\"disallowed\"],[[68736,68736],\"mapped\",[68800]],[[68737,68737],\"mapped\",[68801]],[[68738,68738],\"mapped\",[68802]],[[68739,68739],\"mapped\",[68803]],[[68740,68740],\"mapped\",[68804]],[[68741,68741],\"mapped\",[68805]],[[68742,68742],\"mapped\",[68806]],[[68743,68743],\"mapped\",[68807]],[[68744,68744],\"mapped\",[68808]],[[68745,68745],\"mapped\",[68809]],[[68746,68746],\"mapped\",[68810]],[[68747,68747],\"mapped\",[68811]],[[68748,68748],\"mapped\",[68812]],[[68749,68749],\"mapped\",[68813]],[[68750,68750],\"mapped\",[68814]],[[68751,68751],\"mapped\",[68815]],[[68752,68752],\"mapped\",[68816]],[[68753,68753],\"mapped\",[68817]],[[68754,68754],\"mapped\",[68818]],[[68755,68755],\"mapped\",[68819]],[[68756,68756],\"mapped\",[68820]],[[68757,68757],\"mapped\",[68821]],[[68758,68758],\"mapped\",[68822]],[[68759,68759],\"mapped\",[68823]],[[68760,68760],\"mapped\",[68824]],[[68761,68761],\"mapped\",[68825]],[[68762,68762],\"mapped\",[68826]],[[68763,68763],\"mapped\",[68827]],[[68764,68764],\"mapped\",[68828]],[[68765,68765],\"mapped\",[68829]],[[68766,68766],\"mapped\",[68830]],[[68767,68767],\"mapped\",[68831]],[[68768,68768],\"mapped\",[68832]],[[68769,68769],\"mapped\",[68833]],[[68770,68770],\"mapped\",[68834]],[[68771,68771],\"mapped\",[68835]],[[68772,68772],\"mapped\",[68836]],[[68773,68773],\"mapped\",[68837]],[[68774,68774],\"mapped\",[68838]],[[68775,68775],\"mapped\",[68839]],[[68776,68776],\"mapped\",[68840]],[[68777,68777],\"mapped\",[68841]],[[68778,68778],\"mapped\",[68842]],[[68779,68779],\"mapped\",[68843]],[[68780,68780],\"mapped\",[68844]],[[68781,68781],\"mapped\",[68845]],[[68782,68782],\"mapped\",[68846]],[[68783,68783],\"mapped\",[68847]],[[68784,68784],\"mapped\",[68848]],[[68785,68785],\"mapped\",[68849]],[[68786,68786],\"mapped\",[68850]],[[68787,68799],\"disallowed\"],[[68800,68850],\"valid\"],[[68851,68857],\"disallowed\"],[[68858,68863],\"valid\",[],\"NV8\"],[[68864,69215],\"disallowed\"],[[69216,69246],\"valid\",[],\"NV8\"],[[69247,69631],\"disallowed\"],[[69632,69702],\"valid\"],[[69703,69709],\"valid\",[],\"NV8\"],[[69710,69713],\"disallowed\"],[[69714,69733],\"valid\",[],\"NV8\"],[[69734,69743],\"valid\"],[[69744,69758],\"disallowed\"],[[69759,69759],\"valid\"],[[69760,69818],\"valid\"],[[69819,69820],\"valid\",[],\"NV8\"],[[69821,69821],\"disallowed\"],[[69822,69825],\"valid\",[],\"NV8\"],[[69826,69839],\"disallowed\"],[[69840,69864],\"valid\"],[[69865,69871],\"disallowed\"],[[69872,69881],\"valid\"],[[69882,69887],\"disallowed\"],[[69888,69940],\"valid\"],[[69941,69941],\"disallowed\"],[[69942,69951],\"valid\"],[[69952,69955],\"valid\",[],\"NV8\"],[[69956,69967],\"disallowed\"],[[69968,70003],\"valid\"],[[70004,70005],\"valid\",[],\"NV8\"],[[70006,70006],\"valid\"],[[70007,70015],\"disallowed\"],[[70016,70084],\"valid\"],[[70085,70088],\"valid\",[],\"NV8\"],[[70089,70089],\"valid\",[],\"NV8\"],[[70090,70092],\"valid\"],[[70093,70093],\"valid\",[],\"NV8\"],[[70094,70095],\"disallowed\"],[[70096,70105],\"valid\"],[[70106,70106],\"valid\"],[[70107,70107],\"valid\",[],\"NV8\"],[[70108,70108],\"valid\"],[[70109,70111],\"valid\",[],\"NV8\"],[[70112,70112],\"disallowed\"],[[70113,70132],\"valid\",[],\"NV8\"],[[70133,70143],\"disallowed\"],[[70144,70161],\"valid\"],[[70162,70162],\"disallowed\"],[[70163,70199],\"valid\"],[[70200,70205],\"valid\",[],\"NV8\"],[[70206,70271],\"disallowed\"],[[70272,70278],\"valid\"],[[70279,70279],\"disallowed\"],[[70280,70280],\"valid\"],[[70281,70281],\"disallowed\"],[[70282,70285],\"valid\"],[[70286,70286],\"disallowed\"],[[70287,70301],\"valid\"],[[70302,70302],\"disallowed\"],[[70303,70312],\"valid\"],[[70313,70313],\"valid\",[],\"NV8\"],[[70314,70319],\"disallowed\"],[[70320,70378],\"valid\"],[[70379,70383],\"disallowed\"],[[70384,70393],\"valid\"],[[70394,70399],\"disallowed\"],[[70400,70400],\"valid\"],[[70401,70403],\"valid\"],[[70404,70404],\"disallowed\"],[[70405,70412],\"valid\"],[[70413,70414],\"disallowed\"],[[70415,70416],\"valid\"],[[70417,70418],\"disallowed\"],[[70419,70440],\"valid\"],[[70441,70441],\"disallowed\"],[[70442,70448],\"valid\"],[[70449,70449],\"disallowed\"],[[70450,70451],\"valid\"],[[70452,70452],\"disallowed\"],[[70453,70457],\"valid\"],[[70458,70459],\"disallowed\"],[[70460,70468],\"valid\"],[[70469,70470],\"disallowed\"],[[70471,70472],\"valid\"],[[70473,70474],\"disallowed\"],[[70475,70477],\"valid\"],[[70478,70479],\"disallowed\"],[[70480,70480],\"valid\"],[[70481,70486],\"disallowed\"],[[70487,70487],\"valid\"],[[70488,70492],\"disallowed\"],[[70493,70499],\"valid\"],[[70500,70501],\"disallowed\"],[[70502,70508],\"valid\"],[[70509,70511],\"disallowed\"],[[70512,70516],\"valid\"],[[70517,70783],\"disallowed\"],[[70784,70853],\"valid\"],[[70854,70854],\"valid\",[],\"NV8\"],[[70855,70855],\"valid\"],[[70856,70863],\"disallowed\"],[[70864,70873],\"valid\"],[[70874,71039],\"disallowed\"],[[71040,71093],\"valid\"],[[71094,71095],\"disallowed\"],[[71096,71104],\"valid\"],[[71105,71113],\"valid\",[],\"NV8\"],[[71114,71127],\"valid\",[],\"NV8\"],[[71128,71133],\"valid\"],[[71134,71167],\"disallowed\"],[[71168,71232],\"valid\"],[[71233,71235],\"valid\",[],\"NV8\"],[[71236,71236],\"valid\"],[[71237,71247],\"disallowed\"],[[71248,71257],\"valid\"],[[71258,71295],\"disallowed\"],[[71296,71351],\"valid\"],[[71352,71359],\"disallowed\"],[[71360,71369],\"valid\"],[[71370,71423],\"disallowed\"],[[71424,71449],\"valid\"],[[71450,71452],\"disallowed\"],[[71453,71467],\"valid\"],[[71468,71471],\"disallowed\"],[[71472,71481],\"valid\"],[[71482,71487],\"valid\",[],\"NV8\"],[[71488,71839],\"disallowed\"],[[71840,71840],\"mapped\",[71872]],[[71841,71841],\"mapped\",[71873]],[[71842,71842],\"mapped\",[71874]],[[71843,71843],\"mapped\",[71875]],[[71844,71844],\"mapped\",[71876]],[[71845,71845],\"mapped\",[71877]],[[71846,71846],\"mapped\",[71878]],[[71847,71847],\"mapped\",[71879]],[[71848,71848],\"mapped\",[71880]],[[71849,71849],\"mapped\",[71881]],[[71850,71850],\"mapped\",[71882]],[[71851,71851],\"mapped\",[71883]],[[71852,71852],\"mapped\",[71884]],[[71853,71853],\"mapped\",[71885]],[[71854,71854],\"mapped\",[71886]],[[71855,71855],\"mapped\",[71887]],[[71856,71856],\"mapped\",[71888]],[[71857,71857],\"mapped\",[71889]],[[71858,71858],\"mapped\",[71890]],[[71859,71859],\"mapped\",[71891]],[[71860,71860],\"mapped\",[71892]],[[71861,71861],\"mapped\",[71893]],[[71862,71862],\"mapped\",[71894]],[[71863,71863],\"mapped\",[71895]],[[71864,71864],\"mapped\",[71896]],[[71865,71865],\"mapped\",[71897]],[[71866,71866],\"mapped\",[71898]],[[71867,71867],\"mapped\",[71899]],[[71868,71868],\"mapped\",[71900]],[[71869,71869],\"mapped\",[71901]],[[71870,71870],\"mapped\",[71902]],[[71871,71871],\"mapped\",[71903]],[[71872,71913],\"valid\"],[[71914,71922],\"valid\",[],\"NV8\"],[[71923,71934],\"disallowed\"],[[71935,71935],\"valid\"],[[71936,72383],\"disallowed\"],[[72384,72440],\"valid\"],[[72441,73727],\"disallowed\"],[[73728,74606],\"valid\"],[[74607,74648],\"valid\"],[[74649,74649],\"valid\"],[[74650,74751],\"disallowed\"],[[74752,74850],\"valid\",[],\"NV8\"],[[74851,74862],\"valid\",[],\"NV8\"],[[74863,74863],\"disallowed\"],[[74864,74867],\"valid\",[],\"NV8\"],[[74868,74868],\"valid\",[],\"NV8\"],[[74869,74879],\"disallowed\"],[[74880,75075],\"valid\"],[[75076,77823],\"disallowed\"],[[77824,78894],\"valid\"],[[78895,82943],\"disallowed\"],[[82944,83526],\"valid\"],[[83527,92159],\"disallowed\"],[[92160,92728],\"valid\"],[[92729,92735],\"disallowed\"],[[92736,92766],\"valid\"],[[92767,92767],\"disallowed\"],[[92768,92777],\"valid\"],[[92778,92781],\"disallowed\"],[[92782,92783],\"valid\",[],\"NV8\"],[[92784,92879],\"disallowed\"],[[92880,92909],\"valid\"],[[92910,92911],\"disallowed\"],[[92912,92916],\"valid\"],[[92917,92917],\"valid\",[],\"NV8\"],[[92918,92927],\"disallowed\"],[[92928,92982],\"valid\"],[[92983,92991],\"valid\",[],\"NV8\"],[[92992,92995],\"valid\"],[[92996,92997],\"valid\",[],\"NV8\"],[[92998,93007],\"disallowed\"],[[93008,93017],\"valid\"],[[93018,93018],\"disallowed\"],[[93019,93025],\"valid\",[],\"NV8\"],[[93026,93026],\"disallowed\"],[[93027,93047],\"valid\"],[[93048,93052],\"disallowed\"],[[93053,93071],\"valid\"],[[93072,93951],\"disallowed\"],[[93952,94020],\"valid\"],[[94021,94031],\"disallowed\"],[[94032,94078],\"valid\"],[[94079,94094],\"disallowed\"],[[94095,94111],\"valid\"],[[94112,110591],\"disallowed\"],[[110592,110593],\"valid\"],[[110594,113663],\"disallowed\"],[[113664,113770],\"valid\"],[[113771,113775],\"disallowed\"],[[113776,113788],\"valid\"],[[113789,113791],\"disallowed\"],[[113792,113800],\"valid\"],[[113801,113807],\"disallowed\"],[[113808,113817],\"valid\"],[[113818,113819],\"disallowed\"],[[113820,113820],\"valid\",[],\"NV8\"],[[113821,113822],\"valid\"],[[113823,113823],\"valid\",[],\"NV8\"],[[113824,113827],\"ignored\"],[[113828,118783],\"disallowed\"],[[118784,119029],\"valid\",[],\"NV8\"],[[119030,119039],\"disallowed\"],[[119040,119078],\"valid\",[],\"NV8\"],[[119079,119080],\"disallowed\"],[[119081,119081],\"valid\",[],\"NV8\"],[[119082,119133],\"valid\",[],\"NV8\"],[[119134,119134],\"mapped\",[119127,119141]],[[119135,119135],\"mapped\",[119128,119141]],[[119136,119136],\"mapped\",[119128,119141,119150]],[[119137,119137],\"mapped\",[119128,119141,119151]],[[119138,119138],\"mapped\",[119128,119141,119152]],[[119139,119139],\"mapped\",[119128,119141,119153]],[[119140,119140],\"mapped\",[119128,119141,119154]],[[119141,119154],\"valid\",[],\"NV8\"],[[119155,119162],\"disallowed\"],[[119163,119226],\"valid\",[],\"NV8\"],[[119227,119227],\"mapped\",[119225,119141]],[[119228,119228],\"mapped\",[119226,119141]],[[119229,119229],\"mapped\",[119225,119141,119150]],[[119230,119230],\"mapped\",[119226,119141,119150]],[[119231,119231],\"mapped\",[119225,119141,119151]],[[119232,119232],\"mapped\",[119226,119141,119151]],[[119233,119261],\"valid\",[],\"NV8\"],[[119262,119272],\"valid\",[],\"NV8\"],[[119273,119295],\"disallowed\"],[[119296,119365],\"valid\",[],\"NV8\"],[[119366,119551],\"disallowed\"],[[119552,119638],\"valid\",[],\"NV8\"],[[119639,119647],\"disallowed\"],[[119648,119665],\"valid\",[],\"NV8\"],[[119666,119807],\"disallowed\"],[[119808,119808],\"mapped\",[97]],[[119809,119809],\"mapped\",[98]],[[119810,119810],\"mapped\",[99]],[[119811,119811],\"mapped\",[100]],[[119812,119812],\"mapped\",[101]],[[119813,119813],\"mapped\",[102]],[[119814,119814],\"mapped\",[103]],[[119815,119815],\"mapped\",[104]],[[119816,119816],\"mapped\",[105]],[[119817,119817],\"mapped\",[106]],[[119818,119818],\"mapped\",[107]],[[119819,119819],\"mapped\",[108]],[[119820,119820],\"mapped\",[109]],[[119821,119821],\"mapped\",[110]],[[119822,119822],\"mapped\",[111]],[[119823,119823],\"mapped\",[112]],[[119824,119824],\"mapped\",[113]],[[119825,119825],\"mapped\",[114]],[[119826,119826],\"mapped\",[115]],[[119827,119827],\"mapped\",[116]],[[119828,119828],\"mapped\",[117]],[[119829,119829],\"mapped\",[118]],[[119830,119830],\"mapped\",[119]],[[119831,119831],\"mapped\",[120]],[[119832,119832],\"mapped\",[121]],[[119833,119833],\"mapped\",[122]],[[119834,119834],\"mapped\",[97]],[[119835,119835],\"mapped\",[98]],[[119836,119836],\"mapped\",[99]],[[119837,119837],\"mapped\",[100]],[[119838,119838],\"mapped\",[101]],[[119839,119839],\"mapped\",[102]],[[119840,119840],\"mapped\",[103]],[[119841,119841],\"mapped\",[104]],[[119842,119842],\"mapped\",[105]],[[119843,119843],\"mapped\",[106]],[[119844,119844],\"mapped\",[107]],[[119845,119845],\"mapped\",[108]],[[119846,119846],\"mapped\",[109]],[[119847,119847],\"mapped\",[110]],[[119848,119848],\"mapped\",[111]],[[119849,119849],\"mapped\",[112]],[[119850,119850],\"mapped\",[113]],[[119851,119851],\"mapped\",[114]],[[119852,119852],\"mapped\",[115]],[[119853,119853],\"mapped\",[116]],[[119854,119854],\"mapped\",[117]],[[119855,119855],\"mapped\",[118]],[[119856,119856],\"mapped\",[119]],[[119857,119857],\"mapped\",[120]],[[119858,119858],\"mapped\",[121]],[[119859,119859],\"mapped\",[122]],[[119860,119860],\"mapped\",[97]],[[119861,119861],\"mapped\",[98]],[[119862,119862],\"mapped\",[99]],[[119863,119863],\"mapped\",[100]],[[119864,119864],\"mapped\",[101]],[[119865,119865],\"mapped\",[102]],[[119866,119866],\"mapped\",[103]],[[119867,119867],\"mapped\",[104]],[[119868,119868],\"mapped\",[105]],[[119869,119869],\"mapped\",[106]],[[119870,119870],\"mapped\",[107]],[[119871,119871],\"mapped\",[108]],[[119872,119872],\"mapped\",[109]],[[119873,119873],\"mapped\",[110]],[[119874,119874],\"mapped\",[111]],[[119875,119875],\"mapped\",[112]],[[119876,119876],\"mapped\",[113]],[[119877,119877],\"mapped\",[114]],[[119878,119878],\"mapped\",[115]],[[119879,119879],\"mapped\",[116]],[[119880,119880],\"mapped\",[117]],[[119881,119881],\"mapped\",[118]],[[119882,119882],\"mapped\",[119]],[[119883,119883],\"mapped\",[120]],[[119884,119884],\"mapped\",[121]],[[119885,119885],\"mapped\",[122]],[[119886,119886],\"mapped\",[97]],[[119887,119887],\"mapped\",[98]],[[119888,119888],\"mapped\",[99]],[[119889,119889],\"mapped\",[100]],[[119890,119890],\"mapped\",[101]],[[119891,119891],\"mapped\",[102]],[[119892,119892],\"mapped\",[103]],[[119893,119893],\"disallowed\"],[[119894,119894],\"mapped\",[105]],[[119895,119895],\"mapped\",[106]],[[119896,119896],\"mapped\",[107]],[[119897,119897],\"mapped\",[108]],[[119898,119898],\"mapped\",[109]],[[119899,119899],\"mapped\",[110]],[[119900,119900],\"mapped\",[111]],[[119901,119901],\"mapped\",[112]],[[119902,119902],\"mapped\",[113]],[[119903,119903],\"mapped\",[114]],[[119904,119904],\"mapped\",[115]],[[119905,119905],\"mapped\",[116]],[[119906,119906],\"mapped\",[117]],[[119907,119907],\"mapped\",[118]],[[119908,119908],\"mapped\",[119]],[[119909,119909],\"mapped\",[120]],[[119910,119910],\"mapped\",[121]],[[119911,119911],\"mapped\",[122]],[[119912,119912],\"mapped\",[97]],[[119913,119913],\"mapped\",[98]],[[119914,119914],\"mapped\",[99]],[[119915,119915],\"mapped\",[100]],[[119916,119916],\"mapped\",[101]],[[119917,119917],\"mapped\",[102]],[[119918,119918],\"mapped\",[103]],[[119919,119919],\"mapped\",[104]],[[119920,119920],\"mapped\",[105]],[[119921,119921],\"mapped\",[106]],[[119922,119922],\"mapped\",[107]],[[119923,119923],\"mapped\",[108]],[[119924,119924],\"mapped\",[109]],[[119925,119925],\"mapped\",[110]],[[119926,119926],\"mapped\",[111]],[[119927,119927],\"mapped\",[112]],[[119928,119928],\"mapped\",[113]],[[119929,119929],\"mapped\",[114]],[[119930,119930],\"mapped\",[115]],[[119931,119931],\"mapped\",[116]],[[119932,119932],\"mapped\",[117]],[[119933,119933],\"mapped\",[118]],[[119934,119934],\"mapped\",[119]],[[119935,119935],\"mapped\",[120]],[[119936,119936],\"mapped\",[121]],[[119937,119937],\"mapped\",[122]],[[119938,119938],\"mapped\",[97]],[[119939,119939],\"mapped\",[98]],[[119940,119940],\"mapped\",[99]],[[119941,119941],\"mapped\",[100]],[[119942,119942],\"mapped\",[101]],[[119943,119943],\"mapped\",[102]],[[119944,119944],\"mapped\",[103]],[[119945,119945],\"mapped\",[104]],[[119946,119946],\"mapped\",[105]],[[119947,119947],\"mapped\",[106]],[[119948,119948],\"mapped\",[107]],[[119949,119949],\"mapped\",[108]],[[119950,119950],\"mapped\",[109]],[[119951,119951],\"mapped\",[110]],[[119952,119952],\"mapped\",[111]],[[119953,119953],\"mapped\",[112]],[[119954,119954],\"mapped\",[113]],[[119955,119955],\"mapped\",[114]],[[119956,119956],\"mapped\",[115]],[[119957,119957],\"mapped\",[116]],[[119958,119958],\"mapped\",[117]],[[119959,119959],\"mapped\",[118]],[[119960,119960],\"mapped\",[119]],[[119961,119961],\"mapped\",[120]],[[119962,119962],\"mapped\",[121]],[[119963,119963],\"mapped\",[122]],[[119964,119964],\"mapped\",[97]],[[119965,119965],\"disallowed\"],[[119966,119966],\"mapped\",[99]],[[119967,119967],\"mapped\",[100]],[[119968,119969],\"disallowed\"],[[119970,119970],\"mapped\",[103]],[[119971,119972],\"disallowed\"],[[119973,119973],\"mapped\",[106]],[[119974,119974],\"mapped\",[107]],[[119975,119976],\"disallowed\"],[[119977,119977],\"mapped\",[110]],[[119978,119978],\"mapped\",[111]],[[119979,119979],\"mapped\",[112]],[[119980,119980],\"mapped\",[113]],[[119981,119981],\"disallowed\"],[[119982,119982],\"mapped\",[115]],[[119983,119983],\"mapped\",[116]],[[119984,119984],\"mapped\",[117]],[[119985,119985],\"mapped\",[118]],[[119986,119986],\"mapped\",[119]],[[119987,119987],\"mapped\",[120]],[[119988,119988],\"mapped\",[121]],[[119989,119989],\"mapped\",[122]],[[119990,119990],\"mapped\",[97]],[[119991,119991],\"mapped\",[98]],[[119992,119992],\"mapped\",[99]],[[119993,119993],\"mapped\",[100]],[[119994,119994],\"disallowed\"],[[119995,119995],\"mapped\",[102]],[[119996,119996],\"disallowed\"],[[119997,119997],\"mapped\",[104]],[[119998,119998],\"mapped\",[105]],[[119999,119999],\"mapped\",[106]],[[120000,120000],\"mapped\",[107]],[[120001,120001],\"mapped\",[108]],[[120002,120002],\"mapped\",[109]],[[120003,120003],\"mapped\",[110]],[[120004,120004],\"disallowed\"],[[120005,120005],\"mapped\",[112]],[[120006,120006],\"mapped\",[113]],[[120007,120007],\"mapped\",[114]],[[120008,120008],\"mapped\",[115]],[[120009,120009],\"mapped\",[116]],[[120010,120010],\"mapped\",[117]],[[120011,120011],\"mapped\",[118]],[[120012,120012],\"mapped\",[119]],[[120013,120013],\"mapped\",[120]],[[120014,120014],\"mapped\",[121]],[[120015,120015],\"mapped\",[122]],[[120016,120016],\"mapped\",[97]],[[120017,120017],\"mapped\",[98]],[[120018,120018],\"mapped\",[99]],[[120019,120019],\"mapped\",[100]],[[120020,120020],\"mapped\",[101]],[[120021,120021],\"mapped\",[102]],[[120022,120022],\"mapped\",[103]],[[120023,120023],\"mapped\",[104]],[[120024,120024],\"mapped\",[105]],[[120025,120025],\"mapped\",[106]],[[120026,120026],\"mapped\",[107]],[[120027,120027],\"mapped\",[108]],[[120028,120028],\"mapped\",[109]],[[120029,120029],\"mapped\",[110]],[[120030,120030],\"mapped\",[111]],[[120031,120031],\"mapped\",[112]],[[120032,120032],\"mapped\",[113]],[[120033,120033],\"mapped\",[114]],[[120034,120034],\"mapped\",[115]],[[120035,120035],\"mapped\",[116]],[[120036,120036],\"mapped\",[117]],[[120037,120037],\"mapped\",[118]],[[120038,120038],\"mapped\",[119]],[[120039,120039],\"mapped\",[120]],[[120040,120040],\"mapped\",[121]],[[120041,120041],\"mapped\",[122]],[[120042,120042],\"mapped\",[97]],[[120043,120043],\"mapped\",[98]],[[120044,120044],\"mapped\",[99]],[[120045,120045],\"mapped\",[100]],[[120046,120046],\"mapped\",[101]],[[120047,120047],\"mapped\",[102]],[[120048,120048],\"mapped\",[103]],[[120049,120049],\"mapped\",[104]],[[120050,120050],\"mapped\",[105]],[[120051,120051],\"mapped\",[106]],[[120052,120052],\"mapped\",[107]],[[120053,120053],\"mapped\",[108]],[[120054,120054],\"mapped\",[109]],[[120055,120055],\"mapped\",[110]],[[120056,120056],\"mapped\",[111]],[[120057,120057],\"mapped\",[112]],[[120058,120058],\"mapped\",[113]],[[120059,120059],\"mapped\",[114]],[[120060,120060],\"mapped\",[115]],[[120061,120061],\"mapped\",[116]],[[120062,120062],\"mapped\",[117]],[[120063,120063],\"mapped\",[118]],[[120064,120064],\"mapped\",[119]],[[120065,120065],\"mapped\",[120]],[[120066,120066],\"mapped\",[121]],[[120067,120067],\"mapped\",[122]],[[120068,120068],\"mapped\",[97]],[[120069,120069],\"mapped\",[98]],[[120070,120070],\"disallowed\"],[[120071,120071],\"mapped\",[100]],[[120072,120072],\"mapped\",[101]],[[120073,120073],\"mapped\",[102]],[[120074,120074],\"mapped\",[103]],[[120075,120076],\"disallowed\"],[[120077,120077],\"mapped\",[106]],[[120078,120078],\"mapped\",[107]],[[120079,120079],\"mapped\",[108]],[[120080,120080],\"mapped\",[109]],[[120081,120081],\"mapped\",[110]],[[120082,120082],\"mapped\",[111]],[[120083,120083],\"mapped\",[112]],[[120084,120084],\"mapped\",[113]],[[120085,120085],\"disallowed\"],[[120086,120086],\"mapped\",[115]],[[120087,120087],\"mapped\",[116]],[[120088,120088],\"mapped\",[117]],[[120089,120089],\"mapped\",[118]],[[120090,120090],\"mapped\",[119]],[[120091,120091],\"mapped\",[120]],[[120092,120092],\"mapped\",[121]],[[120093,120093],\"disallowed\"],[[120094,120094],\"mapped\",[97]],[[120095,120095],\"mapped\",[98]],[[120096,120096],\"mapped\",[99]],[[120097,120097],\"mapped\",[100]],[[120098,120098],\"mapped\",[101]],[[120099,120099],\"mapped\",[102]],[[120100,120100],\"mapped\",[103]],[[120101,120101],\"mapped\",[104]],[[120102,120102],\"mapped\",[105]],[[120103,120103],\"mapped\",[106]],[[120104,120104],\"mapped\",[107]],[[120105,120105],\"mapped\",[108]],[[120106,120106],\"mapped\",[109]],[[120107,120107],\"mapped\",[110]],[[120108,120108],\"mapped\",[111]],[[120109,120109],\"mapped\",[112]],[[120110,120110],\"mapped\",[113]],[[120111,120111],\"mapped\",[114]],[[120112,120112],\"mapped\",[115]],[[120113,120113],\"mapped\",[116]],[[120114,120114],\"mapped\",[117]],[[120115,120115],\"mapped\",[118]],[[120116,120116],\"mapped\",[119]],[[120117,120117],\"mapped\",[120]],[[120118,120118],\"mapped\",[121]],[[120119,120119],\"mapped\",[122]],[[120120,120120],\"mapped\",[97]],[[120121,120121],\"mapped\",[98]],[[120122,120122],\"disallowed\"],[[120123,120123],\"mapped\",[100]],[[120124,120124],\"mapped\",[101]],[[120125,120125],\"mapped\",[102]],[[120126,120126],\"mapped\",[103]],[[120127,120127],\"disallowed\"],[[120128,120128],\"mapped\",[105]],[[120129,120129],\"mapped\",[106]],[[120130,120130],\"mapped\",[107]],[[120131,120131],\"mapped\",[108]],[[120132,120132],\"mapped\",[109]],[[120133,120133],\"disallowed\"],[[120134,120134],\"mapped\",[111]],[[120135,120137],\"disallowed\"],[[120138,120138],\"mapped\",[115]],[[120139,120139],\"mapped\",[116]],[[120140,120140],\"mapped\",[117]],[[120141,120141],\"mapped\",[118]],[[120142,120142],\"mapped\",[119]],[[120143,120143],\"mapped\",[120]],[[120144,120144],\"mapped\",[121]],[[120145,120145],\"disallowed\"],[[120146,120146],\"mapped\",[97]],[[120147,120147],\"mapped\",[98]],[[120148,120148],\"mapped\",[99]],[[120149,120149],\"mapped\",[100]],[[120150,120150],\"mapped\",[101]],[[120151,120151],\"mapped\",[102]],[[120152,120152],\"mapped\",[103]],[[120153,120153],\"mapped\",[104]],[[120154,120154],\"mapped\",[105]],[[120155,120155],\"mapped\",[106]],[[120156,120156],\"mapped\",[107]],[[120157,120157],\"mapped\",[108]],[[120158,120158],\"mapped\",[109]],[[120159,120159],\"mapped\",[110]],[[120160,120160],\"mapped\",[111]],[[120161,120161],\"mapped\",[112]],[[120162,120162],\"mapped\",[113]],[[120163,120163],\"mapped\",[114]],[[120164,120164],\"mapped\",[115]],[[120165,120165],\"mapped\",[116]],[[120166,120166],\"mapped\",[117]],[[120167,120167],\"mapped\",[118]],[[120168,120168],\"mapped\",[119]],[[120169,120169],\"mapped\",[120]],[[120170,120170],\"mapped\",[121]],[[120171,120171],\"mapped\",[122]],[[120172,120172],\"mapped\",[97]],[[120173,120173],\"mapped\",[98]],[[120174,120174],\"mapped\",[99]],[[120175,120175],\"mapped\",[100]],[[120176,120176],\"mapped\",[101]],[[120177,120177],\"mapped\",[102]],[[120178,120178],\"mapped\",[103]],[[120179,120179],\"mapped\",[104]],[[120180,120180],\"mapped\",[105]],[[120181,120181],\"mapped\",[106]],[[120182,120182],\"mapped\",[107]],[[120183,120183],\"mapped\",[108]],[[120184,120184],\"mapped\",[109]],[[120185,120185],\"mapped\",[110]],[[120186,120186],\"mapped\",[111]],[[120187,120187],\"mapped\",[112]],[[120188,120188],\"mapped\",[113]],[[120189,120189],\"mapped\",[114]],[[120190,120190],\"mapped\",[115]],[[120191,120191],\"mapped\",[116]],[[120192,120192],\"mapped\",[117]],[[120193,120193],\"mapped\",[118]],[[120194,120194],\"mapped\",[119]],[[120195,120195],\"mapped\",[120]],[[120196,120196],\"mapped\",[121]],[[120197,120197],\"mapped\",[122]],[[120198,120198],\"mapped\",[97]],[[120199,120199],\"mapped\",[98]],[[120200,120200],\"mapped\",[99]],[[120201,120201],\"mapped\",[100]],[[120202,120202],\"mapped\",[101]],[[120203,120203],\"mapped\",[102]],[[120204,120204],\"mapped\",[103]],[[120205,120205],\"mapped\",[104]],[[120206,120206],\"mapped\",[105]],[[120207,120207],\"mapped\",[106]],[[120208,120208],\"mapped\",[107]],[[120209,120209],\"mapped\",[108]],[[120210,120210],\"mapped\",[109]],[[120211,120211],\"mapped\",[110]],[[120212,120212],\"mapped\",[111]],[[120213,120213],\"mapped\",[112]],[[120214,120214],\"mapped\",[113]],[[120215,120215],\"mapped\",[114]],[[120216,120216],\"mapped\",[115]],[[120217,120217],\"mapped\",[116]],[[120218,120218],\"mapped\",[117]],[[120219,120219],\"mapped\",[118]],[[120220,120220],\"mapped\",[119]],[[120221,120221],\"mapped\",[120]],[[120222,120222],\"mapped\",[121]],[[120223,120223],\"mapped\",[122]],[[120224,120224],\"mapped\",[97]],[[120225,120225],\"mapped\",[98]],[[120226,120226],\"mapped\",[99]],[[120227,120227],\"mapped\",[100]],[[120228,120228],\"mapped\",[101]],[[120229,120229],\"mapped\",[102]],[[120230,120230],\"mapped\",[103]],[[120231,120231],\"mapped\",[104]],[[120232,120232],\"mapped\",[105]],[[120233,120233],\"mapped\",[106]],[[120234,120234],\"mapped\",[107]],[[120235,120235],\"mapped\",[108]],[[120236,120236],\"mapped\",[109]],[[120237,120237],\"mapped\",[110]],[[120238,120238],\"mapped\",[111]],[[120239,120239],\"mapped\",[112]],[[120240,120240],\"mapped\",[113]],[[120241,120241],\"mapped\",[114]],[[120242,120242],\"mapped\",[115]],[[120243,120243],\"mapped\",[116]],[[120244,120244],\"mapped\",[117]],[[120245,120245],\"mapped\",[118]],[[120246,120246],\"mapped\",[119]],[[120247,120247],\"mapped\",[120]],[[120248,120248],\"mapped\",[121]],[[120249,120249],\"mapped\",[122]],[[120250,120250],\"mapped\",[97]],[[120251,120251],\"mapped\",[98]],[[120252,120252],\"mapped\",[99]],[[120253,120253],\"mapped\",[100]],[[120254,120254],\"mapped\",[101]],[[120255,120255],\"mapped\",[102]],[[120256,120256],\"mapped\",[103]],[[120257,120257],\"mapped\",[104]],[[120258,120258],\"mapped\",[105]],[[120259,120259],\"mapped\",[106]],[[120260,120260],\"mapped\",[107]],[[120261,120261],\"mapped\",[108]],[[120262,120262],\"mapped\",[109]],[[120263,120263],\"mapped\",[110]],[[120264,120264],\"mapped\",[111]],[[120265,120265],\"mapped\",[112]],[[120266,120266],\"mapped\",[113]],[[120267,120267],\"mapped\",[114]],[[120268,120268],\"mapped\",[115]],[[120269,120269],\"mapped\",[116]],[[120270,120270],\"mapped\",[117]],[[120271,120271],\"mapped\",[118]],[[120272,120272],\"mapped\",[119]],[[120273,120273],\"mapped\",[120]],[[120274,120274],\"mapped\",[121]],[[120275,120275],\"mapped\",[122]],[[120276,120276],\"mapped\",[97]],[[120277,120277],\"mapped\",[98]],[[120278,120278],\"mapped\",[99]],[[120279,120279],\"mapped\",[100]],[[120280,120280],\"mapped\",[101]],[[120281,120281],\"mapped\",[102]],[[120282,120282],\"mapped\",[103]],[[120283,120283],\"mapped\",[104]],[[120284,120284],\"mapped\",[105]],[[120285,120285],\"mapped\",[106]],[[120286,120286],\"mapped\",[107]],[[120287,120287],\"mapped\",[108]],[[120288,120288],\"mapped\",[109]],[[120289,120289],\"mapped\",[110]],[[120290,120290],\"mapped\",[111]],[[120291,120291],\"mapped\",[112]],[[120292,120292],\"mapped\",[113]],[[120293,120293],\"mapped\",[114]],[[120294,120294],\"mapped\",[115]],[[120295,120295],\"mapped\",[116]],[[120296,120296],\"mapped\",[117]],[[120297,120297],\"mapped\",[118]],[[120298,120298],\"mapped\",[119]],[[120299,120299],\"mapped\",[120]],[[120300,120300],\"mapped\",[121]],[[120301,120301],\"mapped\",[122]],[[120302,120302],\"mapped\",[97]],[[120303,120303],\"mapped\",[98]],[[120304,120304],\"mapped\",[99]],[[120305,120305],\"mapped\",[100]],[[120306,120306],\"mapped\",[101]],[[120307,120307],\"mapped\",[102]],[[120308,120308],\"mapped\",[103]],[[120309,120309],\"mapped\",[104]],[[120310,120310],\"mapped\",[105]],[[120311,120311],\"mapped\",[106]],[[120312,120312],\"mapped\",[107]],[[120313,120313],\"mapped\",[108]],[[120314,120314],\"mapped\",[109]],[[120315,120315],\"mapped\",[110]],[[120316,120316],\"mapped\",[111]],[[120317,120317],\"mapped\",[112]],[[120318,120318],\"mapped\",[113]],[[120319,120319],\"mapped\",[114]],[[120320,120320],\"mapped\",[115]],[[120321,120321],\"mapped\",[116]],[[120322,120322],\"mapped\",[117]],[[120323,120323],\"mapped\",[118]],[[120324,120324],\"mapped\",[119]],[[120325,120325],\"mapped\",[120]],[[120326,120326],\"mapped\",[121]],[[120327,120327],\"mapped\",[122]],[[120328,120328],\"mapped\",[97]],[[120329,120329],\"mapped\",[98]],[[120330,120330],\"mapped\",[99]],[[120331,120331],\"mapped\",[100]],[[120332,120332],\"mapped\",[101]],[[120333,120333],\"mapped\",[102]],[[120334,120334],\"mapped\",[103]],[[120335,120335],\"mapped\",[104]],[[120336,120336],\"mapped\",[105]],[[120337,120337],\"mapped\",[106]],[[120338,120338],\"mapped\",[107]],[[120339,120339],\"mapped\",[108]],[[120340,120340],\"mapped\",[109]],[[120341,120341],\"mapped\",[110]],[[120342,120342],\"mapped\",[111]],[[120343,120343],\"mapped\",[112]],[[120344,120344],\"mapped\",[113]],[[120345,120345],\"mapped\",[114]],[[120346,120346],\"mapped\",[115]],[[120347,120347],\"mapped\",[116]],[[120348,120348],\"mapped\",[117]],[[120349,120349],\"mapped\",[118]],[[120350,120350],\"mapped\",[119]],[[120351,120351],\"mapped\",[120]],[[120352,120352],\"mapped\",[121]],[[120353,120353],\"mapped\",[122]],[[120354,120354],\"mapped\",[97]],[[120355,120355],\"mapped\",[98]],[[120356,120356],\"mapped\",[99]],[[120357,120357],\"mapped\",[100]],[[120358,120358],\"mapped\",[101]],[[120359,120359],\"mapped\",[102]],[[120360,120360],\"mapped\",[103]],[[120361,120361],\"mapped\",[104]],[[120362,120362],\"mapped\",[105]],[[120363,120363],\"mapped\",[106]],[[120364,120364],\"mapped\",[107]],[[120365,120365],\"mapped\",[108]],[[120366,120366],\"mapped\",[109]],[[120367,120367],\"mapped\",[110]],[[120368,120368],\"mapped\",[111]],[[120369,120369],\"mapped\",[112]],[[120370,120370],\"mapped\",[113]],[[120371,120371],\"mapped\",[114]],[[120372,120372],\"mapped\",[115]],[[120373,120373],\"mapped\",[116]],[[120374,120374],\"mapped\",[117]],[[120375,120375],\"mapped\",[118]],[[120376,120376],\"mapped\",[119]],[[120377,120377],\"mapped\",[120]],[[120378,120378],\"mapped\",[121]],[[120379,120379],\"mapped\",[122]],[[120380,120380],\"mapped\",[97]],[[120381,120381],\"mapped\",[98]],[[120382,120382],\"mapped\",[99]],[[120383,120383],\"mapped\",[100]],[[120384,120384],\"mapped\",[101]],[[120385,120385],\"mapped\",[102]],[[120386,120386],\"mapped\",[103]],[[120387,120387],\"mapped\",[104]],[[120388,120388],\"mapped\",[105]],[[120389,120389],\"mapped\",[106]],[[120390,120390],\"mapped\",[107]],[[120391,120391],\"mapped\",[108]],[[120392,120392],\"mapped\",[109]],[[120393,120393],\"mapped\",[110]],[[120394,120394],\"mapped\",[111]],[[120395,120395],\"mapped\",[112]],[[120396,120396],\"mapped\",[113]],[[120397,120397],\"mapped\",[114]],[[120398,120398],\"mapped\",[115]],[[120399,120399],\"mapped\",[116]],[[120400,120400],\"mapped\",[117]],[[120401,120401],\"mapped\",[118]],[[120402,120402],\"mapped\",[119]],[[120403,120403],\"mapped\",[120]],[[120404,120404],\"mapped\",[121]],[[120405,120405],\"mapped\",[122]],[[120406,120406],\"mapped\",[97]],[[120407,120407],\"mapped\",[98]],[[120408,120408],\"mapped\",[99]],[[120409,120409],\"mapped\",[100]],[[120410,120410],\"mapped\",[101]],[[120411,120411],\"mapped\",[102]],[[120412,120412],\"mapped\",[103]],[[120413,120413],\"mapped\",[104]],[[120414,120414],\"mapped\",[105]],[[120415,120415],\"mapped\",[106]],[[120416,120416],\"mapped\",[107]],[[120417,120417],\"mapped\",[108]],[[120418,120418],\"mapped\",[109]],[[120419,120419],\"mapped\",[110]],[[120420,120420],\"mapped\",[111]],[[120421,120421],\"mapped\",[112]],[[120422,120422],\"mapped\",[113]],[[120423,120423],\"mapped\",[114]],[[120424,120424],\"mapped\",[115]],[[120425,120425],\"mapped\",[116]],[[120426,120426],\"mapped\",[117]],[[120427,120427],\"mapped\",[118]],[[120428,120428],\"mapped\",[119]],[[120429,120429],\"mapped\",[120]],[[120430,120430],\"mapped\",[121]],[[120431,120431],\"mapped\",[122]],[[120432,120432],\"mapped\",[97]],[[120433,120433],\"mapped\",[98]],[[120434,120434],\"mapped\",[99]],[[120435,120435],\"mapped\",[100]],[[120436,120436],\"mapped\",[101]],[[120437,120437],\"mapped\",[102]],[[120438,120438],\"mapped\",[103]],[[120439,120439],\"mapped\",[104]],[[120440,120440],\"mapped\",[105]],[[120441,120441],\"mapped\",[106]],[[120442,120442],\"mapped\",[107]],[[120443,120443],\"mapped\",[108]],[[120444,120444],\"mapped\",[109]],[[120445,120445],\"mapped\",[110]],[[120446,120446],\"mapped\",[111]],[[120447,120447],\"mapped\",[112]],[[120448,120448],\"mapped\",[113]],[[120449,120449],\"mapped\",[114]],[[120450,120450],\"mapped\",[115]],[[120451,120451],\"mapped\",[116]],[[120452,120452],\"mapped\",[117]],[[120453,120453],\"mapped\",[118]],[[120454,120454],\"mapped\",[119]],[[120455,120455],\"mapped\",[120]],[[120456,120456],\"mapped\",[121]],[[120457,120457],\"mapped\",[122]],[[120458,120458],\"mapped\",[97]],[[120459,120459],\"mapped\",[98]],[[120460,120460],\"mapped\",[99]],[[120461,120461],\"mapped\",[100]],[[120462,120462],\"mapped\",[101]],[[120463,120463],\"mapped\",[102]],[[120464,120464],\"mapped\",[103]],[[120465,120465],\"mapped\",[104]],[[120466,120466],\"mapped\",[105]],[[120467,120467],\"mapped\",[106]],[[120468,120468],\"mapped\",[107]],[[120469,120469],\"mapped\",[108]],[[120470,120470],\"mapped\",[109]],[[120471,120471],\"mapped\",[110]],[[120472,120472],\"mapped\",[111]],[[120473,120473],\"mapped\",[112]],[[120474,120474],\"mapped\",[113]],[[120475,120475],\"mapped\",[114]],[[120476,120476],\"mapped\",[115]],[[120477,120477],\"mapped\",[116]],[[120478,120478],\"mapped\",[117]],[[120479,120479],\"mapped\",[118]],[[120480,120480],\"mapped\",[119]],[[120481,120481],\"mapped\",[120]],[[120482,120482],\"mapped\",[121]],[[120483,120483],\"mapped\",[122]],[[120484,120484],\"mapped\",[305]],[[120485,120485],\"mapped\",[567]],[[120486,120487],\"disallowed\"],[[120488,120488],\"mapped\",[945]],[[120489,120489],\"mapped\",[946]],[[120490,120490],\"mapped\",[947]],[[120491,120491],\"mapped\",[948]],[[120492,120492],\"mapped\",[949]],[[120493,120493],\"mapped\",[950]],[[120494,120494],\"mapped\",[951]],[[120495,120495],\"mapped\",[952]],[[120496,120496],\"mapped\",[953]],[[120497,120497],\"mapped\",[954]],[[120498,120498],\"mapped\",[955]],[[120499,120499],\"mapped\",[956]],[[120500,120500],\"mapped\",[957]],[[120501,120501],\"mapped\",[958]],[[120502,120502],\"mapped\",[959]],[[120503,120503],\"mapped\",[960]],[[120504,120504],\"mapped\",[961]],[[120505,120505],\"mapped\",[952]],[[120506,120506],\"mapped\",[963]],[[120507,120507],\"mapped\",[964]],[[120508,120508],\"mapped\",[965]],[[120509,120509],\"mapped\",[966]],[[120510,120510],\"mapped\",[967]],[[120511,120511],\"mapped\",[968]],[[120512,120512],\"mapped\",[969]],[[120513,120513],\"mapped\",[8711]],[[120514,120514],\"mapped\",[945]],[[120515,120515],\"mapped\",[946]],[[120516,120516],\"mapped\",[947]],[[120517,120517],\"mapped\",[948]],[[120518,120518],\"mapped\",[949]],[[120519,120519],\"mapped\",[950]],[[120520,120520],\"mapped\",[951]],[[120521,120521],\"mapped\",[952]],[[120522,120522],\"mapped\",[953]],[[120523,120523],\"mapped\",[954]],[[120524,120524],\"mapped\",[955]],[[120525,120525],\"mapped\",[956]],[[120526,120526],\"mapped\",[957]],[[120527,120527],\"mapped\",[958]],[[120528,120528],\"mapped\",[959]],[[120529,120529],\"mapped\",[960]],[[120530,120530],\"mapped\",[961]],[[120531,120532],\"mapped\",[963]],[[120533,120533],\"mapped\",[964]],[[120534,120534],\"mapped\",[965]],[[120535,120535],\"mapped\",[966]],[[120536,120536],\"mapped\",[967]],[[120537,120537],\"mapped\",[968]],[[120538,120538],\"mapped\",[969]],[[120539,120539],\"mapped\",[8706]],[[120540,120540],\"mapped\",[949]],[[120541,120541],\"mapped\",[952]],[[120542,120542],\"mapped\",[954]],[[120543,120543],\"mapped\",[966]],[[120544,120544],\"mapped\",[961]],[[120545,120545],\"mapped\",[960]],[[120546,120546],\"mapped\",[945]],[[120547,120547],\"mapped\",[946]],[[120548,120548],\"mapped\",[947]],[[120549,120549],\"mapped\",[948]],[[120550,120550],\"mapped\",[949]],[[120551,120551],\"mapped\",[950]],[[120552,120552],\"mapped\",[951]],[[120553,120553],\"mapped\",[952]],[[120554,120554],\"mapped\",[953]],[[120555,120555],\"mapped\",[954]],[[120556,120556],\"mapped\",[955]],[[120557,120557],\"mapped\",[956]],[[120558,120558],\"mapped\",[957]],[[120559,120559],\"mapped\",[958]],[[120560,120560],\"mapped\",[959]],[[120561,120561],\"mapped\",[960]],[[120562,120562],\"mapped\",[961]],[[120563,120563],\"mapped\",[952]],[[120564,120564],\"mapped\",[963]],[[120565,120565],\"mapped\",[964]],[[120566,120566],\"mapped\",[965]],[[120567,120567],\"mapped\",[966]],[[120568,120568],\"mapped\",[967]],[[120569,120569],\"mapped\",[968]],[[120570,120570],\"mapped\",[969]],[[120571,120571],\"mapped\",[8711]],[[120572,120572],\"mapped\",[945]],[[120573,120573],\"mapped\",[946]],[[120574,120574],\"mapped\",[947]],[[120575,120575],\"mapped\",[948]],[[120576,120576],\"mapped\",[949]],[[120577,120577],\"mapped\",[950]],[[120578,120578],\"mapped\",[951]],[[120579,120579],\"mapped\",[952]],[[120580,120580],\"mapped\",[953]],[[120581,120581],\"mapped\",[954]],[[120582,120582],\"mapped\",[955]],[[120583,120583],\"mapped\",[956]],[[120584,120584],\"mapped\",[957]],[[120585,120585],\"mapped\",[958]],[[120586,120586],\"mapped\",[959]],[[120587,120587],\"mapped\",[960]],[[120588,120588],\"mapped\",[961]],[[120589,120590],\"mapped\",[963]],[[120591,120591],\"mapped\",[964]],[[120592,120592],\"mapped\",[965]],[[120593,120593],\"mapped\",[966]],[[120594,120594],\"mapped\",[967]],[[120595,120595],\"mapped\",[968]],[[120596,120596],\"mapped\",[969]],[[120597,120597],\"mapped\",[8706]],[[120598,120598],\"mapped\",[949]],[[120599,120599],\"mapped\",[952]],[[120600,120600],\"mapped\",[954]],[[120601,120601],\"mapped\",[966]],[[120602,120602],\"mapped\",[961]],[[120603,120603],\"mapped\",[960]],[[120604,120604],\"mapped\",[945]],[[120605,120605],\"mapped\",[946]],[[120606,120606],\"mapped\",[947]],[[120607,120607],\"mapped\",[948]],[[120608,120608],\"mapped\",[949]],[[120609,120609],\"mapped\",[950]],[[120610,120610],\"mapped\",[951]],[[120611,120611],\"mapped\",[952]],[[120612,120612],\"mapped\",[953]],[[120613,120613],\"mapped\",[954]],[[120614,120614],\"mapped\",[955]],[[120615,120615],\"mapped\",[956]],[[120616,120616],\"mapped\",[957]],[[120617,120617],\"mapped\",[958]],[[120618,120618],\"mapped\",[959]],[[120619,120619],\"mapped\",[960]],[[120620,120620],\"mapped\",[961]],[[120621,120621],\"mapped\",[952]],[[120622,120622],\"mapped\",[963]],[[120623,120623],\"mapped\",[964]],[[120624,120624],\"mapped\",[965]],[[120625,120625],\"mapped\",[966]],[[120626,120626],\"mapped\",[967]],[[120627,120627],\"mapped\",[968]],[[120628,120628],\"mapped\",[969]],[[120629,120629],\"mapped\",[8711]],[[120630,120630],\"mapped\",[945]],[[120631,120631],\"mapped\",[946]],[[120632,120632],\"mapped\",[947]],[[120633,120633],\"mapped\",[948]],[[120634,120634],\"mapped\",[949]],[[120635,120635],\"mapped\",[950]],[[120636,120636],\"mapped\",[951]],[[120637,120637],\"mapped\",[952]],[[120638,120638],\"mapped\",[953]],[[120639,120639],\"mapped\",[954]],[[120640,120640],\"mapped\",[955]],[[120641,120641],\"mapped\",[956]],[[120642,120642],\"mapped\",[957]],[[120643,120643],\"mapped\",[958]],[[120644,120644],\"mapped\",[959]],[[120645,120645],\"mapped\",[960]],[[120646,120646],\"mapped\",[961]],[[120647,120648],\"mapped\",[963]],[[120649,120649],\"mapped\",[964]],[[120650,120650],\"mapped\",[965]],[[120651,120651],\"mapped\",[966]],[[120652,120652],\"mapped\",[967]],[[120653,120653],\"mapped\",[968]],[[120654,120654],\"mapped\",[969]],[[120655,120655],\"mapped\",[8706]],[[120656,120656],\"mapped\",[949]],[[120657,120657],\"mapped\",[952]],[[120658,120658],\"mapped\",[954]],[[120659,120659],\"mapped\",[966]],[[120660,120660],\"mapped\",[961]],[[120661,120661],\"mapped\",[960]],[[120662,120662],\"mapped\",[945]],[[120663,120663],\"mapped\",[946]],[[120664,120664],\"mapped\",[947]],[[120665,120665],\"mapped\",[948]],[[120666,120666],\"mapped\",[949]],[[120667,120667],\"mapped\",[950]],[[120668,120668],\"mapped\",[951]],[[120669,120669],\"mapped\",[952]],[[120670,120670],\"mapped\",[953]],[[120671,120671],\"mapped\",[954]],[[120672,120672],\"mapped\",[955]],[[120673,120673],\"mapped\",[956]],[[120674,120674],\"mapped\",[957]],[[120675,120675],\"mapped\",[958]],[[120676,120676],\"mapped\",[959]],[[120677,120677],\"mapped\",[960]],[[120678,120678],\"mapped\",[961]],[[120679,120679],\"mapped\",[952]],[[120680,120680],\"mapped\",[963]],[[120681,120681],\"mapped\",[964]],[[120682,120682],\"mapped\",[965]],[[120683,120683],\"mapped\",[966]],[[120684,120684],\"mapped\",[967]],[[120685,120685],\"mapped\",[968]],[[120686,120686],\"mapped\",[969]],[[120687,120687],\"mapped\",[8711]],[[120688,120688],\"mapped\",[945]],[[120689,120689],\"mapped\",[946]],[[120690,120690],\"mapped\",[947]],[[120691,120691],\"mapped\",[948]],[[120692,120692],\"mapped\",[949]],[[120693,120693],\"mapped\",[950]],[[120694,120694],\"mapped\",[951]],[[120695,120695],\"mapped\",[952]],[[120696,120696],\"mapped\",[953]],[[120697,120697],\"mapped\",[954]],[[120698,120698],\"mapped\",[955]],[[120699,120699],\"mapped\",[956]],[[120700,120700],\"mapped\",[957]],[[120701,120701],\"mapped\",[958]],[[120702,120702],\"mapped\",[959]],[[120703,120703],\"mapped\",[960]],[[120704,120704],\"mapped\",[961]],[[120705,120706],\"mapped\",[963]],[[120707,120707],\"mapped\",[964]],[[120708,120708],\"mapped\",[965]],[[120709,120709],\"mapped\",[966]],[[120710,120710],\"mapped\",[967]],[[120711,120711],\"mapped\",[968]],[[120712,120712],\"mapped\",[969]],[[120713,120713],\"mapped\",[8706]],[[120714,120714],\"mapped\",[949]],[[120715,120715],\"mapped\",[952]],[[120716,120716],\"mapped\",[954]],[[120717,120717],\"mapped\",[966]],[[120718,120718],\"mapped\",[961]],[[120719,120719],\"mapped\",[960]],[[120720,120720],\"mapped\",[945]],[[120721,120721],\"mapped\",[946]],[[120722,120722],\"mapped\",[947]],[[120723,120723],\"mapped\",[948]],[[120724,120724],\"mapped\",[949]],[[120725,120725],\"mapped\",[950]],[[120726,120726],\"mapped\",[951]],[[120727,120727],\"mapped\",[952]],[[120728,120728],\"mapped\",[953]],[[120729,120729],\"mapped\",[954]],[[120730,120730],\"mapped\",[955]],[[120731,120731],\"mapped\",[956]],[[120732,120732],\"mapped\",[957]],[[120733,120733],\"mapped\",[958]],[[120734,120734],\"mapped\",[959]],[[120735,120735],\"mapped\",[960]],[[120736,120736],\"mapped\",[961]],[[120737,120737],\"mapped\",[952]],[[120738,120738],\"mapped\",[963]],[[120739,120739],\"mapped\",[964]],[[120740,120740],\"mapped\",[965]],[[120741,120741],\"mapped\",[966]],[[120742,120742],\"mapped\",[967]],[[120743,120743],\"mapped\",[968]],[[120744,120744],\"mapped\",[969]],[[120745,120745],\"mapped\",[8711]],[[120746,120746],\"mapped\",[945]],[[120747,120747],\"mapped\",[946]],[[120748,120748],\"mapped\",[947]],[[120749,120749],\"mapped\",[948]],[[120750,120750],\"mapped\",[949]],[[120751,120751],\"mapped\",[950]],[[120752,120752],\"mapped\",[951]],[[120753,120753],\"mapped\",[952]],[[120754,120754],\"mapped\",[953]],[[120755,120755],\"mapped\",[954]],[[120756,120756],\"mapped\",[955]],[[120757,120757],\"mapped\",[956]],[[120758,120758],\"mapped\",[957]],[[120759,120759],\"mapped\",[958]],[[120760,120760],\"mapped\",[959]],[[120761,120761],\"mapped\",[960]],[[120762,120762],\"mapped\",[961]],[[120763,120764],\"mapped\",[963]],[[120765,120765],\"mapped\",[964]],[[120766,120766],\"mapped\",[965]],[[120767,120767],\"mapped\",[966]],[[120768,120768],\"mapped\",[967]],[[120769,120769],\"mapped\",[968]],[[120770,120770],\"mapped\",[969]],[[120771,120771],\"mapped\",[8706]],[[120772,120772],\"mapped\",[949]],[[120773,120773],\"mapped\",[952]],[[120774,120774],\"mapped\",[954]],[[120775,120775],\"mapped\",[966]],[[120776,120776],\"mapped\",[961]],[[120777,120777],\"mapped\",[960]],[[120778,120779],\"mapped\",[989]],[[120780,120781],\"disallowed\"],[[120782,120782],\"mapped\",[48]],[[120783,120783],\"mapped\",[49]],[[120784,120784],\"mapped\",[50]],[[120785,120785],\"mapped\",[51]],[[120786,120786],\"mapped\",[52]],[[120787,120787],\"mapped\",[53]],[[120788,120788],\"mapped\",[54]],[[120789,120789],\"mapped\",[55]],[[120790,120790],\"mapped\",[56]],[[120791,120791],\"mapped\",[57]],[[120792,120792],\"mapped\",[48]],[[120793,120793],\"mapped\",[49]],[[120794,120794],\"mapped\",[50]],[[120795,120795],\"mapped\",[51]],[[120796,120796],\"mapped\",[52]],[[120797,120797],\"mapped\",[53]],[[120798,120798],\"mapped\",[54]],[[120799,120799],\"mapped\",[55]],[[120800,120800],\"mapped\",[56]],[[120801,120801],\"mapped\",[57]],[[120802,120802],\"mapped\",[48]],[[120803,120803],\"mapped\",[49]],[[120804,120804],\"mapped\",[50]],[[120805,120805],\"mapped\",[51]],[[120806,120806],\"mapped\",[52]],[[120807,120807],\"mapped\",[53]],[[120808,120808],\"mapped\",[54]],[[120809,120809],\"mapped\",[55]],[[120810,120810],\"mapped\",[56]],[[120811,120811],\"mapped\",[57]],[[120812,120812],\"mapped\",[48]],[[120813,120813],\"mapped\",[49]],[[120814,120814],\"mapped\",[50]],[[120815,120815],\"mapped\",[51]],[[120816,120816],\"mapped\",[52]],[[120817,120817],\"mapped\",[53]],[[120818,120818],\"mapped\",[54]],[[120819,120819],\"mapped\",[55]],[[120820,120820],\"mapped\",[56]],[[120821,120821],\"mapped\",[57]],[[120822,120822],\"mapped\",[48]],[[120823,120823],\"mapped\",[49]],[[120824,120824],\"mapped\",[50]],[[120825,120825],\"mapped\",[51]],[[120826,120826],\"mapped\",[52]],[[120827,120827],\"mapped\",[53]],[[120828,120828],\"mapped\",[54]],[[120829,120829],\"mapped\",[55]],[[120830,120830],\"mapped\",[56]],[[120831,120831],\"mapped\",[57]],[[120832,121343],\"valid\",[],\"NV8\"],[[121344,121398],\"valid\"],[[121399,121402],\"valid\",[],\"NV8\"],[[121403,121452],\"valid\"],[[121453,121460],\"valid\",[],\"NV8\"],[[121461,121461],\"valid\"],[[121462,121475],\"valid\",[],\"NV8\"],[[121476,121476],\"valid\"],[[121477,121483],\"valid\",[],\"NV8\"],[[121484,121498],\"disallowed\"],[[121499,121503],\"valid\"],[[121504,121504],\"disallowed\"],[[121505,121519],\"valid\"],[[121520,124927],\"disallowed\"],[[124928,125124],\"valid\"],[[125125,125126],\"disallowed\"],[[125127,125135],\"valid\",[],\"NV8\"],[[125136,125142],\"valid\"],[[125143,126463],\"disallowed\"],[[126464,126464],\"mapped\",[1575]],[[126465,126465],\"mapped\",[1576]],[[126466,126466],\"mapped\",[1580]],[[126467,126467],\"mapped\",[1583]],[[126468,126468],\"disallowed\"],[[126469,126469],\"mapped\",[1608]],[[126470,126470],\"mapped\",[1586]],[[126471,126471],\"mapped\",[1581]],[[126472,126472],\"mapped\",[1591]],[[126473,126473],\"mapped\",[1610]],[[126474,126474],\"mapped\",[1603]],[[126475,126475],\"mapped\",[1604]],[[126476,126476],\"mapped\",[1605]],[[126477,126477],\"mapped\",[1606]],[[126478,126478],\"mapped\",[1587]],[[126479,126479],\"mapped\",[1593]],[[126480,126480],\"mapped\",[1601]],[[126481,126481],\"mapped\",[1589]],[[126482,126482],\"mapped\",[1602]],[[126483,126483],\"mapped\",[1585]],[[126484,126484],\"mapped\",[1588]],[[126485,126485],\"mapped\",[1578]],[[126486,126486],\"mapped\",[1579]],[[126487,126487],\"mapped\",[1582]],[[126488,126488],\"mapped\",[1584]],[[126489,126489],\"mapped\",[1590]],[[126490,126490],\"mapped\",[1592]],[[126491,126491],\"mapped\",[1594]],[[126492,126492],\"mapped\",[1646]],[[126493,126493],\"mapped\",[1722]],[[126494,126494],\"mapped\",[1697]],[[126495,126495],\"mapped\",[1647]],[[126496,126496],\"disallowed\"],[[126497,126497],\"mapped\",[1576]],[[126498,126498],\"mapped\",[1580]],[[126499,126499],\"disallowed\"],[[126500,126500],\"mapped\",[1607]],[[126501,126502],\"disallowed\"],[[126503,126503],\"mapped\",[1581]],[[126504,126504],\"disallowed\"],[[126505,126505],\"mapped\",[1610]],[[126506,126506],\"mapped\",[1603]],[[126507,126507],\"mapped\",[1604]],[[126508,126508],\"mapped\",[1605]],[[126509,126509],\"mapped\",[1606]],[[126510,126510],\"mapped\",[1587]],[[126511,126511],\"mapped\",[1593]],[[126512,126512],\"mapped\",[1601]],[[126513,126513],\"mapped\",[1589]],[[126514,126514],\"mapped\",[1602]],[[126515,126515],\"disallowed\"],[[126516,126516],\"mapped\",[1588]],[[126517,126517],\"mapped\",[1578]],[[126518,126518],\"mapped\",[1579]],[[126519,126519],\"mapped\",[1582]],[[126520,126520],\"disallowed\"],[[126521,126521],\"mapped\",[1590]],[[126522,126522],\"disallowed\"],[[126523,126523],\"mapped\",[1594]],[[126524,126529],\"disallowed\"],[[126530,126530],\"mapped\",[1580]],[[126531,126534],\"disallowed\"],[[126535,126535],\"mapped\",[1581]],[[126536,126536],\"disallowed\"],[[126537,126537],\"mapped\",[1610]],[[126538,126538],\"disallowed\"],[[126539,126539],\"mapped\",[1604]],[[126540,126540],\"disallowed\"],[[126541,126541],\"mapped\",[1606]],[[126542,126542],\"mapped\",[1587]],[[126543,126543],\"mapped\",[1593]],[[126544,126544],\"disallowed\"],[[126545,126545],\"mapped\",[1589]],[[126546,126546],\"mapped\",[1602]],[[126547,126547],\"disallowed\"],[[126548,126548],\"mapped\",[1588]],[[126549,126550],\"disallowed\"],[[126551,126551],\"mapped\",[1582]],[[126552,126552],\"disallowed\"],[[126553,126553],\"mapped\",[1590]],[[126554,126554],\"disallowed\"],[[126555,126555],\"mapped\",[1594]],[[126556,126556],\"disallowed\"],[[126557,126557],\"mapped\",[1722]],[[126558,126558],\"disallowed\"],[[126559,126559],\"mapped\",[1647]],[[126560,126560],\"disallowed\"],[[126561,126561],\"mapped\",[1576]],[[126562,126562],\"mapped\",[1580]],[[126563,126563],\"disallowed\"],[[126564,126564],\"mapped\",[1607]],[[126565,126566],\"disallowed\"],[[126567,126567],\"mapped\",[1581]],[[126568,126568],\"mapped\",[1591]],[[126569,126569],\"mapped\",[1610]],[[126570,126570],\"mapped\",[1603]],[[126571,126571],\"disallowed\"],[[126572,126572],\"mapped\",[1605]],[[126573,126573],\"mapped\",[1606]],[[126574,126574],\"mapped\",[1587]],[[126575,126575],\"mapped\",[1593]],[[126576,126576],\"mapped\",[1601]],[[126577,126577],\"mapped\",[1589]],[[126578,126578],\"mapped\",[1602]],[[126579,126579],\"disallowed\"],[[126580,126580],\"mapped\",[1588]],[[126581,126581],\"mapped\",[1578]],[[126582,126582],\"mapped\",[1579]],[[126583,126583],\"mapped\",[1582]],[[126584,126584],\"disallowed\"],[[126585,126585],\"mapped\",[1590]],[[126586,126586],\"mapped\",[1592]],[[126587,126587],\"mapped\",[1594]],[[126588,126588],\"mapped\",[1646]],[[126589,126589],\"disallowed\"],[[126590,126590],\"mapped\",[1697]],[[126591,126591],\"disallowed\"],[[126592,126592],\"mapped\",[1575]],[[126593,126593],\"mapped\",[1576]],[[126594,126594],\"mapped\",[1580]],[[126595,126595],\"mapped\",[1583]],[[126596,126596],\"mapped\",[1607]],[[126597,126597],\"mapped\",[1608]],[[126598,126598],\"mapped\",[1586]],[[126599,126599],\"mapped\",[1581]],[[126600,126600],\"mapped\",[1591]],[[126601,126601],\"mapped\",[1610]],[[126602,126602],\"disallowed\"],[[126603,126603],\"mapped\",[1604]],[[126604,126604],\"mapped\",[1605]],[[126605,126605],\"mapped\",[1606]],[[126606,126606],\"mapped\",[1587]],[[126607,126607],\"mapped\",[1593]],[[126608,126608],\"mapped\",[1601]],[[126609,126609],\"mapped\",[1589]],[[126610,126610],\"mapped\",[1602]],[[126611,126611],\"mapped\",[1585]],[[126612,126612],\"mapped\",[1588]],[[126613,126613],\"mapped\",[1578]],[[126614,126614],\"mapped\",[1579]],[[126615,126615],\"mapped\",[1582]],[[126616,126616],\"mapped\",[1584]],[[126617,126617],\"mapped\",[1590]],[[126618,126618],\"mapped\",[1592]],[[126619,126619],\"mapped\",[1594]],[[126620,126624],\"disallowed\"],[[126625,126625],\"mapped\",[1576]],[[126626,126626],\"mapped\",[1580]],[[126627,126627],\"mapped\",[1583]],[[126628,126628],\"disallowed\"],[[126629,126629],\"mapped\",[1608]],[[126630,126630],\"mapped\",[1586]],[[126631,126631],\"mapped\",[1581]],[[126632,126632],\"mapped\",[1591]],[[126633,126633],\"mapped\",[1610]],[[126634,126634],\"disallowed\"],[[126635,126635],\"mapped\",[1604]],[[126636,126636],\"mapped\",[1605]],[[126637,126637],\"mapped\",[1606]],[[126638,126638],\"mapped\",[1587]],[[126639,126639],\"mapped\",[1593]],[[126640,126640],\"mapped\",[1601]],[[126641,126641],\"mapped\",[1589]],[[126642,126642],\"mapped\",[1602]],[[126643,126643],\"mapped\",[1585]],[[126644,126644],\"mapped\",[1588]],[[126645,126645],\"mapped\",[1578]],[[126646,126646],\"mapped\",[1579]],[[126647,126647],\"mapped\",[1582]],[[126648,126648],\"mapped\",[1584]],[[126649,126649],\"mapped\",[1590]],[[126650,126650],\"mapped\",[1592]],[[126651,126651],\"mapped\",[1594]],[[126652,126703],\"disallowed\"],[[126704,126705],\"valid\",[],\"NV8\"],[[126706,126975],\"disallowed\"],[[126976,127019],\"valid\",[],\"NV8\"],[[127020,127023],\"disallowed\"],[[127024,127123],\"valid\",[],\"NV8\"],[[127124,127135],\"disallowed\"],[[127136,127150],\"valid\",[],\"NV8\"],[[127151,127152],\"disallowed\"],[[127153,127166],\"valid\",[],\"NV8\"],[[127167,127167],\"valid\",[],\"NV8\"],[[127168,127168],\"disallowed\"],[[127169,127183],\"valid\",[],\"NV8\"],[[127184,127184],\"disallowed\"],[[127185,127199],\"valid\",[],\"NV8\"],[[127200,127221],\"valid\",[],\"NV8\"],[[127222,127231],\"disallowed\"],[[127232,127232],\"disallowed\"],[[127233,127233],\"disallowed_STD3_mapped\",[48,44]],[[127234,127234],\"disallowed_STD3_mapped\",[49,44]],[[127235,127235],\"disallowed_STD3_mapped\",[50,44]],[[127236,127236],\"disallowed_STD3_mapped\",[51,44]],[[127237,127237],\"disallowed_STD3_mapped\",[52,44]],[[127238,127238],\"disallowed_STD3_mapped\",[53,44]],[[127239,127239],\"disallowed_STD3_mapped\",[54,44]],[[127240,127240],\"disallowed_STD3_mapped\",[55,44]],[[127241,127241],\"disallowed_STD3_mapped\",[56,44]],[[127242,127242],\"disallowed_STD3_mapped\",[57,44]],[[127243,127244],\"valid\",[],\"NV8\"],[[127245,127247],\"disallowed\"],[[127248,127248],\"disallowed_STD3_mapped\",[40,97,41]],[[127249,127249],\"disallowed_STD3_mapped\",[40,98,41]],[[127250,127250],\"disallowed_STD3_mapped\",[40,99,41]],[[127251,127251],\"disallowed_STD3_mapped\",[40,100,41]],[[127252,127252],\"disallowed_STD3_mapped\",[40,101,41]],[[127253,127253],\"disallowed_STD3_mapped\",[40,102,41]],[[127254,127254],\"disallowed_STD3_mapped\",[40,103,41]],[[127255,127255],\"disallowed_STD3_mapped\",[40,104,41]],[[127256,127256],\"disallowed_STD3_mapped\",[40,105,41]],[[127257,127257],\"disallowed_STD3_mapped\",[40,106,41]],[[127258,127258],\"disallowed_STD3_mapped\",[40,107,41]],[[127259,127259],\"disallowed_STD3_mapped\",[40,108,41]],[[127260,127260],\"disallowed_STD3_mapped\",[40,109,41]],[[127261,127261],\"disallowed_STD3_mapped\",[40,110,41]],[[127262,127262],\"disallowed_STD3_mapped\",[40,111,41]],[[127263,127263],\"disallowed_STD3_mapped\",[40,112,41]],[[127264,127264],\"disallowed_STD3_mapped\",[40,113,41]],[[127265,127265],\"disallowed_STD3_mapped\",[40,114,41]],[[127266,127266],\"disallowed_STD3_mapped\",[40,115,41]],[[127267,127267],\"disallowed_STD3_mapped\",[40,116,41]],[[127268,127268],\"disallowed_STD3_mapped\",[40,117,41]],[[127269,127269],\"disallowed_STD3_mapped\",[40,118,41]],[[127270,127270],\"disallowed_STD3_mapped\",[40,119,41]],[[127271,127271],\"disallowed_STD3_mapped\",[40,120,41]],[[127272,127272],\"disallowed_STD3_mapped\",[40,121,41]],[[127273,127273],\"disallowed_STD3_mapped\",[40,122,41]],[[127274,127274],\"mapped\",[12308,115,12309]],[[127275,127275],\"mapped\",[99]],[[127276,127276],\"mapped\",[114]],[[127277,127277],\"mapped\",[99,100]],[[127278,127278],\"mapped\",[119,122]],[[127279,127279],\"disallowed\"],[[127280,127280],\"mapped\",[97]],[[127281,127281],\"mapped\",[98]],[[127282,127282],\"mapped\",[99]],[[127283,127283],\"mapped\",[100]],[[127284,127284],\"mapped\",[101]],[[127285,127285],\"mapped\",[102]],[[127286,127286],\"mapped\",[103]],[[127287,127287],\"mapped\",[104]],[[127288,127288],\"mapped\",[105]],[[127289,127289],\"mapped\",[106]],[[127290,127290],\"mapped\",[107]],[[127291,127291],\"mapped\",[108]],[[127292,127292],\"mapped\",[109]],[[127293,127293],\"mapped\",[110]],[[127294,127294],\"mapped\",[111]],[[127295,127295],\"mapped\",[112]],[[127296,127296],\"mapped\",[113]],[[127297,127297],\"mapped\",[114]],[[127298,127298],\"mapped\",[115]],[[127299,127299],\"mapped\",[116]],[[127300,127300],\"mapped\",[117]],[[127301,127301],\"mapped\",[118]],[[127302,127302],\"mapped\",[119]],[[127303,127303],\"mapped\",[120]],[[127304,127304],\"mapped\",[121]],[[127305,127305],\"mapped\",[122]],[[127306,127306],\"mapped\",[104,118]],[[127307,127307],\"mapped\",[109,118]],[[127308,127308],\"mapped\",[115,100]],[[127309,127309],\"mapped\",[115,115]],[[127310,127310],\"mapped\",[112,112,118]],[[127311,127311],\"mapped\",[119,99]],[[127312,127318],\"valid\",[],\"NV8\"],[[127319,127319],\"valid\",[],\"NV8\"],[[127320,127326],\"valid\",[],\"NV8\"],[[127327,127327],\"valid\",[],\"NV8\"],[[127328,127337],\"valid\",[],\"NV8\"],[[127338,127338],\"mapped\",[109,99]],[[127339,127339],\"mapped\",[109,100]],[[127340,127343],\"disallowed\"],[[127344,127352],\"valid\",[],\"NV8\"],[[127353,127353],\"valid\",[],\"NV8\"],[[127354,127354],\"valid\",[],\"NV8\"],[[127355,127356],\"valid\",[],\"NV8\"],[[127357,127358],\"valid\",[],\"NV8\"],[[127359,127359],\"valid\",[],\"NV8\"],[[127360,127369],\"valid\",[],\"NV8\"],[[127370,127373],\"valid\",[],\"NV8\"],[[127374,127375],\"valid\",[],\"NV8\"],[[127376,127376],\"mapped\",[100,106]],[[127377,127386],\"valid\",[],\"NV8\"],[[127387,127461],\"disallowed\"],[[127462,127487],\"valid\",[],\"NV8\"],[[127488,127488],\"mapped\",[12411,12363]],[[127489,127489],\"mapped\",[12467,12467]],[[127490,127490],\"mapped\",[12469]],[[127491,127503],\"disallowed\"],[[127504,127504],\"mapped\",[25163]],[[127505,127505],\"mapped\",[23383]],[[127506,127506],\"mapped\",[21452]],[[127507,127507],\"mapped\",[12487]],[[127508,127508],\"mapped\",[20108]],[[127509,127509],\"mapped\",[22810]],[[127510,127510],\"mapped\",[35299]],[[127511,127511],\"mapped\",[22825]],[[127512,127512],\"mapped\",[20132]],[[127513,127513],\"mapped\",[26144]],[[127514,127514],\"mapped\",[28961]],[[127515,127515],\"mapped\",[26009]],[[127516,127516],\"mapped\",[21069]],[[127517,127517],\"mapped\",[24460]],[[127518,127518],\"mapped\",[20877]],[[127519,127519],\"mapped\",[26032]],[[127520,127520],\"mapped\",[21021]],[[127521,127521],\"mapped\",[32066]],[[127522,127522],\"mapped\",[29983]],[[127523,127523],\"mapped\",[36009]],[[127524,127524],\"mapped\",[22768]],[[127525,127525],\"mapped\",[21561]],[[127526,127526],\"mapped\",[28436]],[[127527,127527],\"mapped\",[25237]],[[127528,127528],\"mapped\",[25429]],[[127529,127529],\"mapped\",[19968]],[[127530,127530],\"mapped\",[19977]],[[127531,127531],\"mapped\",[36938]],[[127532,127532],\"mapped\",[24038]],[[127533,127533],\"mapped\",[20013]],[[127534,127534],\"mapped\",[21491]],[[127535,127535],\"mapped\",[25351]],[[127536,127536],\"mapped\",[36208]],[[127537,127537],\"mapped\",[25171]],[[127538,127538],\"mapped\",[31105]],[[127539,127539],\"mapped\",[31354]],[[127540,127540],\"mapped\",[21512]],[[127541,127541],\"mapped\",[28288]],[[127542,127542],\"mapped\",[26377]],[[127543,127543],\"mapped\",[26376]],[[127544,127544],\"mapped\",[30003]],[[127545,127545],\"mapped\",[21106]],[[127546,127546],\"mapped\",[21942]],[[127547,127551],\"disallowed\"],[[127552,127552],\"mapped\",[12308,26412,12309]],[[127553,127553],\"mapped\",[12308,19977,12309]],[[127554,127554],\"mapped\",[12308,20108,12309]],[[127555,127555],\"mapped\",[12308,23433,12309]],[[127556,127556],\"mapped\",[12308,28857,12309]],[[127557,127557],\"mapped\",[12308,25171,12309]],[[127558,127558],\"mapped\",[12308,30423,12309]],[[127559,127559],\"mapped\",[12308,21213,12309]],[[127560,127560],\"mapped\",[12308,25943,12309]],[[127561,127567],\"disallowed\"],[[127568,127568],\"mapped\",[24471]],[[127569,127569],\"mapped\",[21487]],[[127570,127743],\"disallowed\"],[[127744,127776],\"valid\",[],\"NV8\"],[[127777,127788],\"valid\",[],\"NV8\"],[[127789,127791],\"valid\",[],\"NV8\"],[[127792,127797],\"valid\",[],\"NV8\"],[[127798,127798],\"valid\",[],\"NV8\"],[[127799,127868],\"valid\",[],\"NV8\"],[[127869,127869],\"valid\",[],\"NV8\"],[[127870,127871],\"valid\",[],\"NV8\"],[[127872,127891],\"valid\",[],\"NV8\"],[[127892,127903],\"valid\",[],\"NV8\"],[[127904,127940],\"valid\",[],\"NV8\"],[[127941,127941],\"valid\",[],\"NV8\"],[[127942,127946],\"valid\",[],\"NV8\"],[[127947,127950],\"valid\",[],\"NV8\"],[[127951,127955],\"valid\",[],\"NV8\"],[[127956,127967],\"valid\",[],\"NV8\"],[[127968,127984],\"valid\",[],\"NV8\"],[[127985,127991],\"valid\",[],\"NV8\"],[[127992,127999],\"valid\",[],\"NV8\"],[[128000,128062],\"valid\",[],\"NV8\"],[[128063,128063],\"valid\",[],\"NV8\"],[[128064,128064],\"valid\",[],\"NV8\"],[[128065,128065],\"valid\",[],\"NV8\"],[[128066,128247],\"valid\",[],\"NV8\"],[[128248,128248],\"valid\",[],\"NV8\"],[[128249,128252],\"valid\",[],\"NV8\"],[[128253,128254],\"valid\",[],\"NV8\"],[[128255,128255],\"valid\",[],\"NV8\"],[[128256,128317],\"valid\",[],\"NV8\"],[[128318,128319],\"valid\",[],\"NV8\"],[[128320,128323],\"valid\",[],\"NV8\"],[[128324,128330],\"valid\",[],\"NV8\"],[[128331,128335],\"valid\",[],\"NV8\"],[[128336,128359],\"valid\",[],\"NV8\"],[[128360,128377],\"valid\",[],\"NV8\"],[[128378,128378],\"disallowed\"],[[128379,128419],\"valid\",[],\"NV8\"],[[128420,128420],\"disallowed\"],[[128421,128506],\"valid\",[],\"NV8\"],[[128507,128511],\"valid\",[],\"NV8\"],[[128512,128512],\"valid\",[],\"NV8\"],[[128513,128528],\"valid\",[],\"NV8\"],[[128529,128529],\"valid\",[],\"NV8\"],[[128530,128532],\"valid\",[],\"NV8\"],[[128533,128533],\"valid\",[],\"NV8\"],[[128534,128534],\"valid\",[],\"NV8\"],[[128535,128535],\"valid\",[],\"NV8\"],[[128536,128536],\"valid\",[],\"NV8\"],[[128537,128537],\"valid\",[],\"NV8\"],[[128538,128538],\"valid\",[],\"NV8\"],[[128539,128539],\"valid\",[],\"NV8\"],[[128540,128542],\"valid\",[],\"NV8\"],[[128543,128543],\"valid\",[],\"NV8\"],[[128544,128549],\"valid\",[],\"NV8\"],[[128550,128551],\"valid\",[],\"NV8\"],[[128552,128555],\"valid\",[],\"NV8\"],[[128556,128556],\"valid\",[],\"NV8\"],[[128557,128557],\"valid\",[],\"NV8\"],[[128558,128559],\"valid\",[],\"NV8\"],[[128560,128563],\"valid\",[],\"NV8\"],[[128564,128564],\"valid\",[],\"NV8\"],[[128565,128576],\"valid\",[],\"NV8\"],[[128577,128578],\"valid\",[],\"NV8\"],[[128579,128580],\"valid\",[],\"NV8\"],[[128581,128591],\"valid\",[],\"NV8\"],[[128592,128639],\"valid\",[],\"NV8\"],[[128640,128709],\"valid\",[],\"NV8\"],[[128710,128719],\"valid\",[],\"NV8\"],[[128720,128720],\"valid\",[],\"NV8\"],[[128721,128735],\"disallowed\"],[[128736,128748],\"valid\",[],\"NV8\"],[[128749,128751],\"disallowed\"],[[128752,128755],\"valid\",[],\"NV8\"],[[128756,128767],\"disallowed\"],[[128768,128883],\"valid\",[],\"NV8\"],[[128884,128895],\"disallowed\"],[[128896,128980],\"valid\",[],\"NV8\"],[[128981,129023],\"disallowed\"],[[129024,129035],\"valid\",[],\"NV8\"],[[129036,129039],\"disallowed\"],[[129040,129095],\"valid\",[],\"NV8\"],[[129096,129103],\"disallowed\"],[[129104,129113],\"valid\",[],\"NV8\"],[[129114,129119],\"disallowed\"],[[129120,129159],\"valid\",[],\"NV8\"],[[129160,129167],\"disallowed\"],[[129168,129197],\"valid\",[],\"NV8\"],[[129198,129295],\"disallowed\"],[[129296,129304],\"valid\",[],\"NV8\"],[[129305,129407],\"disallowed\"],[[129408,129412],\"valid\",[],\"NV8\"],[[129413,129471],\"disallowed\"],[[129472,129472],\"valid\",[],\"NV8\"],[[129473,131069],\"disallowed\"],[[131070,131071],\"disallowed\"],[[131072,173782],\"valid\"],[[173783,173823],\"disallowed\"],[[173824,177972],\"valid\"],[[177973,177983],\"disallowed\"],[[177984,178205],\"valid\"],[[178206,178207],\"disallowed\"],[[178208,183969],\"valid\"],[[183970,194559],\"disallowed\"],[[194560,194560],\"mapped\",[20029]],[[194561,194561],\"mapped\",[20024]],[[194562,194562],\"mapped\",[20033]],[[194563,194563],\"mapped\",[131362]],[[194564,194564],\"mapped\",[20320]],[[194565,194565],\"mapped\",[20398]],[[194566,194566],\"mapped\",[20411]],[[194567,194567],\"mapped\",[20482]],[[194568,194568],\"mapped\",[20602]],[[194569,194569],\"mapped\",[20633]],[[194570,194570],\"mapped\",[20711]],[[194571,194571],\"mapped\",[20687]],[[194572,194572],\"mapped\",[13470]],[[194573,194573],\"mapped\",[132666]],[[194574,194574],\"mapped\",[20813]],[[194575,194575],\"mapped\",[20820]],[[194576,194576],\"mapped\",[20836]],[[194577,194577],\"mapped\",[20855]],[[194578,194578],\"mapped\",[132380]],[[194579,194579],\"mapped\",[13497]],[[194580,194580],\"mapped\",[20839]],[[194581,194581],\"mapped\",[20877]],[[194582,194582],\"mapped\",[132427]],[[194583,194583],\"mapped\",[20887]],[[194584,194584],\"mapped\",[20900]],[[194585,194585],\"mapped\",[20172]],[[194586,194586],\"mapped\",[20908]],[[194587,194587],\"mapped\",[20917]],[[194588,194588],\"mapped\",[168415]],[[194589,194589],\"mapped\",[20981]],[[194590,194590],\"mapped\",[20995]],[[194591,194591],\"mapped\",[13535]],[[194592,194592],\"mapped\",[21051]],[[194593,194593],\"mapped\",[21062]],[[194594,194594],\"mapped\",[21106]],[[194595,194595],\"mapped\",[21111]],[[194596,194596],\"mapped\",[13589]],[[194597,194597],\"mapped\",[21191]],[[194598,194598],\"mapped\",[21193]],[[194599,194599],\"mapped\",[21220]],[[194600,194600],\"mapped\",[21242]],[[194601,194601],\"mapped\",[21253]],[[194602,194602],\"mapped\",[21254]],[[194603,194603],\"mapped\",[21271]],[[194604,194604],\"mapped\",[21321]],[[194605,194605],\"mapped\",[21329]],[[194606,194606],\"mapped\",[21338]],[[194607,194607],\"mapped\",[21363]],[[194608,194608],\"mapped\",[21373]],[[194609,194611],\"mapped\",[21375]],[[194612,194612],\"mapped\",[133676]],[[194613,194613],\"mapped\",[28784]],[[194614,194614],\"mapped\",[21450]],[[194615,194615],\"mapped\",[21471]],[[194616,194616],\"mapped\",[133987]],[[194617,194617],\"mapped\",[21483]],[[194618,194618],\"mapped\",[21489]],[[194619,194619],\"mapped\",[21510]],[[194620,194620],\"mapped\",[21662]],[[194621,194621],\"mapped\",[21560]],[[194622,194622],\"mapped\",[21576]],[[194623,194623],\"mapped\",[21608]],[[194624,194624],\"mapped\",[21666]],[[194625,194625],\"mapped\",[21750]],[[194626,194626],\"mapped\",[21776]],[[194627,194627],\"mapped\",[21843]],[[194628,194628],\"mapped\",[21859]],[[194629,194630],\"mapped\",[21892]],[[194631,194631],\"mapped\",[21913]],[[194632,194632],\"mapped\",[21931]],[[194633,194633],\"mapped\",[21939]],[[194634,194634],\"mapped\",[21954]],[[194635,194635],\"mapped\",[22294]],[[194636,194636],\"mapped\",[22022]],[[194637,194637],\"mapped\",[22295]],[[194638,194638],\"mapped\",[22097]],[[194639,194639],\"mapped\",[22132]],[[194640,194640],\"mapped\",[20999]],[[194641,194641],\"mapped\",[22766]],[[194642,194642],\"mapped\",[22478]],[[194643,194643],\"mapped\",[22516]],[[194644,194644],\"mapped\",[22541]],[[194645,194645],\"mapped\",[22411]],[[194646,194646],\"mapped\",[22578]],[[194647,194647],\"mapped\",[22577]],[[194648,194648],\"mapped\",[22700]],[[194649,194649],\"mapped\",[136420]],[[194650,194650],\"mapped\",[22770]],[[194651,194651],\"mapped\",[22775]],[[194652,194652],\"mapped\",[22790]],[[194653,194653],\"mapped\",[22810]],[[194654,194654],\"mapped\",[22818]],[[194655,194655],\"mapped\",[22882]],[[194656,194656],\"mapped\",[136872]],[[194657,194657],\"mapped\",[136938]],[[194658,194658],\"mapped\",[23020]],[[194659,194659],\"mapped\",[23067]],[[194660,194660],\"mapped\",[23079]],[[194661,194661],\"mapped\",[23000]],[[194662,194662],\"mapped\",[23142]],[[194663,194663],\"mapped\",[14062]],[[194664,194664],\"disallowed\"],[[194665,194665],\"mapped\",[23304]],[[194666,194667],\"mapped\",[23358]],[[194668,194668],\"mapped\",[137672]],[[194669,194669],\"mapped\",[23491]],[[194670,194670],\"mapped\",[23512]],[[194671,194671],\"mapped\",[23527]],[[194672,194672],\"mapped\",[23539]],[[194673,194673],\"mapped\",[138008]],[[194674,194674],\"mapped\",[23551]],[[194675,194675],\"mapped\",[23558]],[[194676,194676],\"disallowed\"],[[194677,194677],\"mapped\",[23586]],[[194678,194678],\"mapped\",[14209]],[[194679,194679],\"mapped\",[23648]],[[194680,194680],\"mapped\",[23662]],[[194681,194681],\"mapped\",[23744]],[[194682,194682],\"mapped\",[23693]],[[194683,194683],\"mapped\",[138724]],[[194684,194684],\"mapped\",[23875]],[[194685,194685],\"mapped\",[138726]],[[194686,194686],\"mapped\",[23918]],[[194687,194687],\"mapped\",[23915]],[[194688,194688],\"mapped\",[23932]],[[194689,194689],\"mapped\",[24033]],[[194690,194690],\"mapped\",[24034]],[[194691,194691],\"mapped\",[14383]],[[194692,194692],\"mapped\",[24061]],[[194693,194693],\"mapped\",[24104]],[[194694,194694],\"mapped\",[24125]],[[194695,194695],\"mapped\",[24169]],[[194696,194696],\"mapped\",[14434]],[[194697,194697],\"mapped\",[139651]],[[194698,194698],\"mapped\",[14460]],[[194699,194699],\"mapped\",[24240]],[[194700,194700],\"mapped\",[24243]],[[194701,194701],\"mapped\",[24246]],[[194702,194702],\"mapped\",[24266]],[[194703,194703],\"mapped\",[172946]],[[194704,194704],\"mapped\",[24318]],[[194705,194706],\"mapped\",[140081]],[[194707,194707],\"mapped\",[33281]],[[194708,194709],\"mapped\",[24354]],[[194710,194710],\"mapped\",[14535]],[[194711,194711],\"mapped\",[144056]],[[194712,194712],\"mapped\",[156122]],[[194713,194713],\"mapped\",[24418]],[[194714,194714],\"mapped\",[24427]],[[194715,194715],\"mapped\",[14563]],[[194716,194716],\"mapped\",[24474]],[[194717,194717],\"mapped\",[24525]],[[194718,194718],\"mapped\",[24535]],[[194719,194719],\"mapped\",[24569]],[[194720,194720],\"mapped\",[24705]],[[194721,194721],\"mapped\",[14650]],[[194722,194722],\"mapped\",[14620]],[[194723,194723],\"mapped\",[24724]],[[194724,194724],\"mapped\",[141012]],[[194725,194725],\"mapped\",[24775]],[[194726,194726],\"mapped\",[24904]],[[194727,194727],\"mapped\",[24908]],[[194728,194728],\"mapped\",[24910]],[[194729,194729],\"mapped\",[24908]],[[194730,194730],\"mapped\",[24954]],[[194731,194731],\"mapped\",[24974]],[[194732,194732],\"mapped\",[25010]],[[194733,194733],\"mapped\",[24996]],[[194734,194734],\"mapped\",[25007]],[[194735,194735],\"mapped\",[25054]],[[194736,194736],\"mapped\",[25074]],[[194737,194737],\"mapped\",[25078]],[[194738,194738],\"mapped\",[25104]],[[194739,194739],\"mapped\",[25115]],[[194740,194740],\"mapped\",[25181]],[[194741,194741],\"mapped\",[25265]],[[194742,194742],\"mapped\",[25300]],[[194743,194743],\"mapped\",[25424]],[[194744,194744],\"mapped\",[142092]],[[194745,194745],\"mapped\",[25405]],[[194746,194746],\"mapped\",[25340]],[[194747,194747],\"mapped\",[25448]],[[194748,194748],\"mapped\",[25475]],[[194749,194749],\"mapped\",[25572]],[[194750,194750],\"mapped\",[142321]],[[194751,194751],\"mapped\",[25634]],[[194752,194752],\"mapped\",[25541]],[[194753,194753],\"mapped\",[25513]],[[194754,194754],\"mapped\",[14894]],[[194755,194755],\"mapped\",[25705]],[[194756,194756],\"mapped\",[25726]],[[194757,194757],\"mapped\",[25757]],[[194758,194758],\"mapped\",[25719]],[[194759,194759],\"mapped\",[14956]],[[194760,194760],\"mapped\",[25935]],[[194761,194761],\"mapped\",[25964]],[[194762,194762],\"mapped\",[143370]],[[194763,194763],\"mapped\",[26083]],[[194764,194764],\"mapped\",[26360]],[[194765,194765],\"mapped\",[26185]],[[194766,194766],\"mapped\",[15129]],[[194767,194767],\"mapped\",[26257]],[[194768,194768],\"mapped\",[15112]],[[194769,194769],\"mapped\",[15076]],[[194770,194770],\"mapped\",[20882]],[[194771,194771],\"mapped\",[20885]],[[194772,194772],\"mapped\",[26368]],[[194773,194773],\"mapped\",[26268]],[[194774,194774],\"mapped\",[32941]],[[194775,194775],\"mapped\",[17369]],[[194776,194776],\"mapped\",[26391]],[[194777,194777],\"mapped\",[26395]],[[194778,194778],\"mapped\",[26401]],[[194779,194779],\"mapped\",[26462]],[[194780,194780],\"mapped\",[26451]],[[194781,194781],\"mapped\",[144323]],[[194782,194782],\"mapped\",[15177]],[[194783,194783],\"mapped\",[26618]],[[194784,194784],\"mapped\",[26501]],[[194785,194785],\"mapped\",[26706]],[[194786,194786],\"mapped\",[26757]],[[194787,194787],\"mapped\",[144493]],[[194788,194788],\"mapped\",[26766]],[[194789,194789],\"mapped\",[26655]],[[194790,194790],\"mapped\",[26900]],[[194791,194791],\"mapped\",[15261]],[[194792,194792],\"mapped\",[26946]],[[194793,194793],\"mapped\",[27043]],[[194794,194794],\"mapped\",[27114]],[[194795,194795],\"mapped\",[27304]],[[194796,194796],\"mapped\",[145059]],[[194797,194797],\"mapped\",[27355]],[[194798,194798],\"mapped\",[15384]],[[194799,194799],\"mapped\",[27425]],[[194800,194800],\"mapped\",[145575]],[[194801,194801],\"mapped\",[27476]],[[194802,194802],\"mapped\",[15438]],[[194803,194803],\"mapped\",[27506]],[[194804,194804],\"mapped\",[27551]],[[194805,194805],\"mapped\",[27578]],[[194806,194806],\"mapped\",[27579]],[[194807,194807],\"mapped\",[146061]],[[194808,194808],\"mapped\",[138507]],[[194809,194809],\"mapped\",[146170]],[[194810,194810],\"mapped\",[27726]],[[194811,194811],\"mapped\",[146620]],[[194812,194812],\"mapped\",[27839]],[[194813,194813],\"mapped\",[27853]],[[194814,194814],\"mapped\",[27751]],[[194815,194815],\"mapped\",[27926]],[[194816,194816],\"mapped\",[27966]],[[194817,194817],\"mapped\",[28023]],[[194818,194818],\"mapped\",[27969]],[[194819,194819],\"mapped\",[28009]],[[194820,194820],\"mapped\",[28024]],[[194821,194821],\"mapped\",[28037]],[[194822,194822],\"mapped\",[146718]],[[194823,194823],\"mapped\",[27956]],[[194824,194824],\"mapped\",[28207]],[[194825,194825],\"mapped\",[28270]],[[194826,194826],\"mapped\",[15667]],[[194827,194827],\"mapped\",[28363]],[[194828,194828],\"mapped\",[28359]],[[194829,194829],\"mapped\",[147153]],[[194830,194830],\"mapped\",[28153]],[[194831,194831],\"mapped\",[28526]],[[194832,194832],\"mapped\",[147294]],[[194833,194833],\"mapped\",[147342]],[[194834,194834],\"mapped\",[28614]],[[194835,194835],\"mapped\",[28729]],[[194836,194836],\"mapped\",[28702]],[[194837,194837],\"mapped\",[28699]],[[194838,194838],\"mapped\",[15766]],[[194839,194839],\"mapped\",[28746]],[[194840,194840],\"mapped\",[28797]],[[194841,194841],\"mapped\",[28791]],[[194842,194842],\"mapped\",[28845]],[[194843,194843],\"mapped\",[132389]],[[194844,194844],\"mapped\",[28997]],[[194845,194845],\"mapped\",[148067]],[[194846,194846],\"mapped\",[29084]],[[194847,194847],\"disallowed\"],[[194848,194848],\"mapped\",[29224]],[[194849,194849],\"mapped\",[29237]],[[194850,194850],\"mapped\",[29264]],[[194851,194851],\"mapped\",[149000]],[[194852,194852],\"mapped\",[29312]],[[194853,194853],\"mapped\",[29333]],[[194854,194854],\"mapped\",[149301]],[[194855,194855],\"mapped\",[149524]],[[194856,194856],\"mapped\",[29562]],[[194857,194857],\"mapped\",[29579]],[[194858,194858],\"mapped\",[16044]],[[194859,194859],\"mapped\",[29605]],[[194860,194861],\"mapped\",[16056]],[[194862,194862],\"mapped\",[29767]],[[194863,194863],\"mapped\",[29788]],[[194864,194864],\"mapped\",[29809]],[[194865,194865],\"mapped\",[29829]],[[194866,194866],\"mapped\",[29898]],[[194867,194867],\"mapped\",[16155]],[[194868,194868],\"mapped\",[29988]],[[194869,194869],\"mapped\",[150582]],[[194870,194870],\"mapped\",[30014]],[[194871,194871],\"mapped\",[150674]],[[194872,194872],\"mapped\",[30064]],[[194873,194873],\"mapped\",[139679]],[[194874,194874],\"mapped\",[30224]],[[194875,194875],\"mapped\",[151457]],[[194876,194876],\"mapped\",[151480]],[[194877,194877],\"mapped\",[151620]],[[194878,194878],\"mapped\",[16380]],[[194879,194879],\"mapped\",[16392]],[[194880,194880],\"mapped\",[30452]],[[194881,194881],\"mapped\",[151795]],[[194882,194882],\"mapped\",[151794]],[[194883,194883],\"mapped\",[151833]],[[194884,194884],\"mapped\",[151859]],[[194885,194885],\"mapped\",[30494]],[[194886,194887],\"mapped\",[30495]],[[194888,194888],\"mapped\",[30538]],[[194889,194889],\"mapped\",[16441]],[[194890,194890],\"mapped\",[30603]],[[194891,194891],\"mapped\",[16454]],[[194892,194892],\"mapped\",[16534]],[[194893,194893],\"mapped\",[152605]],[[194894,194894],\"mapped\",[30798]],[[194895,194895],\"mapped\",[30860]],[[194896,194896],\"mapped\",[30924]],[[194897,194897],\"mapped\",[16611]],[[194898,194898],\"mapped\",[153126]],[[194899,194899],\"mapped\",[31062]],[[194900,194900],\"mapped\",[153242]],[[194901,194901],\"mapped\",[153285]],[[194902,194902],\"mapped\",[31119]],[[194903,194903],\"mapped\",[31211]],[[194904,194904],\"mapped\",[16687]],[[194905,194905],\"mapped\",[31296]],[[194906,194906],\"mapped\",[31306]],[[194907,194907],\"mapped\",[31311]],[[194908,194908],\"mapped\",[153980]],[[194909,194910],\"mapped\",[154279]],[[194911,194911],\"disallowed\"],[[194912,194912],\"mapped\",[16898]],[[194913,194913],\"mapped\",[154539]],[[194914,194914],\"mapped\",[31686]],[[194915,194915],\"mapped\",[31689]],[[194916,194916],\"mapped\",[16935]],[[194917,194917],\"mapped\",[154752]],[[194918,194918],\"mapped\",[31954]],[[194919,194919],\"mapped\",[17056]],[[194920,194920],\"mapped\",[31976]],[[194921,194921],\"mapped\",[31971]],[[194922,194922],\"mapped\",[32000]],[[194923,194923],\"mapped\",[155526]],[[194924,194924],\"mapped\",[32099]],[[194925,194925],\"mapped\",[17153]],[[194926,194926],\"mapped\",[32199]],[[194927,194927],\"mapped\",[32258]],[[194928,194928],\"mapped\",[32325]],[[194929,194929],\"mapped\",[17204]],[[194930,194930],\"mapped\",[156200]],[[194931,194931],\"mapped\",[156231]],[[194932,194932],\"mapped\",[17241]],[[194933,194933],\"mapped\",[156377]],[[194934,194934],\"mapped\",[32634]],[[194935,194935],\"mapped\",[156478]],[[194936,194936],\"mapped\",[32661]],[[194937,194937],\"mapped\",[32762]],[[194938,194938],\"mapped\",[32773]],[[194939,194939],\"mapped\",[156890]],[[194940,194940],\"mapped\",[156963]],[[194941,194941],\"mapped\",[32864]],[[194942,194942],\"mapped\",[157096]],[[194943,194943],\"mapped\",[32880]],[[194944,194944],\"mapped\",[144223]],[[194945,194945],\"mapped\",[17365]],[[194946,194946],\"mapped\",[32946]],[[194947,194947],\"mapped\",[33027]],[[194948,194948],\"mapped\",[17419]],[[194949,194949],\"mapped\",[33086]],[[194950,194950],\"mapped\",[23221]],[[194951,194951],\"mapped\",[157607]],[[194952,194952],\"mapped\",[157621]],[[194953,194953],\"mapped\",[144275]],[[194954,194954],\"mapped\",[144284]],[[194955,194955],\"mapped\",[33281]],[[194956,194956],\"mapped\",[33284]],[[194957,194957],\"mapped\",[36766]],[[194958,194958],\"mapped\",[17515]],[[194959,194959],\"mapped\",[33425]],[[194960,194960],\"mapped\",[33419]],[[194961,194961],\"mapped\",[33437]],[[194962,194962],\"mapped\",[21171]],[[194963,194963],\"mapped\",[33457]],[[194964,194964],\"mapped\",[33459]],[[194965,194965],\"mapped\",[33469]],[[194966,194966],\"mapped\",[33510]],[[194967,194967],\"mapped\",[158524]],[[194968,194968],\"mapped\",[33509]],[[194969,194969],\"mapped\",[33565]],[[194970,194970],\"mapped\",[33635]],[[194971,194971],\"mapped\",[33709]],[[194972,194972],\"mapped\",[33571]],[[194973,194973],\"mapped\",[33725]],[[194974,194974],\"mapped\",[33767]],[[194975,194975],\"mapped\",[33879]],[[194976,194976],\"mapped\",[33619]],[[194977,194977],\"mapped\",[33738]],[[194978,194978],\"mapped\",[33740]],[[194979,194979],\"mapped\",[33756]],[[194980,194980],\"mapped\",[158774]],[[194981,194981],\"mapped\",[159083]],[[194982,194982],\"mapped\",[158933]],[[194983,194983],\"mapped\",[17707]],[[194984,194984],\"mapped\",[34033]],[[194985,194985],\"mapped\",[34035]],[[194986,194986],\"mapped\",[34070]],[[194987,194987],\"mapped\",[160714]],[[194988,194988],\"mapped\",[34148]],[[194989,194989],\"mapped\",[159532]],[[194990,194990],\"mapped\",[17757]],[[194991,194991],\"mapped\",[17761]],[[194992,194992],\"mapped\",[159665]],[[194993,194993],\"mapped\",[159954]],[[194994,194994],\"mapped\",[17771]],[[194995,194995],\"mapped\",[34384]],[[194996,194996],\"mapped\",[34396]],[[194997,194997],\"mapped\",[34407]],[[194998,194998],\"mapped\",[34409]],[[194999,194999],\"mapped\",[34473]],[[195000,195000],\"mapped\",[34440]],[[195001,195001],\"mapped\",[34574]],[[195002,195002],\"mapped\",[34530]],[[195003,195003],\"mapped\",[34681]],[[195004,195004],\"mapped\",[34600]],[[195005,195005],\"mapped\",[34667]],[[195006,195006],\"mapped\",[34694]],[[195007,195007],\"disallowed\"],[[195008,195008],\"mapped\",[34785]],[[195009,195009],\"mapped\",[34817]],[[195010,195010],\"mapped\",[17913]],[[195011,195011],\"mapped\",[34912]],[[195012,195012],\"mapped\",[34915]],[[195013,195013],\"mapped\",[161383]],[[195014,195014],\"mapped\",[35031]],[[195015,195015],\"mapped\",[35038]],[[195016,195016],\"mapped\",[17973]],[[195017,195017],\"mapped\",[35066]],[[195018,195018],\"mapped\",[13499]],[[195019,195019],\"mapped\",[161966]],[[195020,195020],\"mapped\",[162150]],[[195021,195021],\"mapped\",[18110]],[[195022,195022],\"mapped\",[18119]],[[195023,195023],\"mapped\",[35488]],[[195024,195024],\"mapped\",[35565]],[[195025,195025],\"mapped\",[35722]],[[195026,195026],\"mapped\",[35925]],[[195027,195027],\"mapped\",[162984]],[[195028,195028],\"mapped\",[36011]],[[195029,195029],\"mapped\",[36033]],[[195030,195030],\"mapped\",[36123]],[[195031,195031],\"mapped\",[36215]],[[195032,195032],\"mapped\",[163631]],[[195033,195033],\"mapped\",[133124]],[[195034,195034],\"mapped\",[36299]],[[195035,195035],\"mapped\",[36284]],[[195036,195036],\"mapped\",[36336]],[[195037,195037],\"mapped\",[133342]],[[195038,195038],\"mapped\",[36564]],[[195039,195039],\"mapped\",[36664]],[[195040,195040],\"mapped\",[165330]],[[195041,195041],\"mapped\",[165357]],[[195042,195042],\"mapped\",[37012]],[[195043,195043],\"mapped\",[37105]],[[195044,195044],\"mapped\",[37137]],[[195045,195045],\"mapped\",[165678]],[[195046,195046],\"mapped\",[37147]],[[195047,195047],\"mapped\",[37432]],[[195048,195048],\"mapped\",[37591]],[[195049,195049],\"mapped\",[37592]],[[195050,195050],\"mapped\",[37500]],[[195051,195051],\"mapped\",[37881]],[[195052,195052],\"mapped\",[37909]],[[195053,195053],\"mapped\",[166906]],[[195054,195054],\"mapped\",[38283]],[[195055,195055],\"mapped\",[18837]],[[195056,195056],\"mapped\",[38327]],[[195057,195057],\"mapped\",[167287]],[[195058,195058],\"mapped\",[18918]],[[195059,195059],\"mapped\",[38595]],[[195060,195060],\"mapped\",[23986]],[[195061,195061],\"mapped\",[38691]],[[195062,195062],\"mapped\",[168261]],[[195063,195063],\"mapped\",[168474]],[[195064,195064],\"mapped\",[19054]],[[195065,195065],\"mapped\",[19062]],[[195066,195066],\"mapped\",[38880]],[[195067,195067],\"mapped\",[168970]],[[195068,195068],\"mapped\",[19122]],[[195069,195069],\"mapped\",[169110]],[[195070,195071],\"mapped\",[38923]],[[195072,195072],\"mapped\",[38953]],[[195073,195073],\"mapped\",[169398]],[[195074,195074],\"mapped\",[39138]],[[195075,195075],\"mapped\",[19251]],[[195076,195076],\"mapped\",[39209]],[[195077,195077],\"mapped\",[39335]],[[195078,195078],\"mapped\",[39362]],[[195079,195079],\"mapped\",[39422]],[[195080,195080],\"mapped\",[19406]],[[195081,195081],\"mapped\",[170800]],[[195082,195082],\"mapped\",[39698]],[[195083,195083],\"mapped\",[40000]],[[195084,195084],\"mapped\",[40189]],[[195085,195085],\"mapped\",[19662]],[[195086,195086],\"mapped\",[19693]],[[195087,195087],\"mapped\",[40295]],[[195088,195088],\"mapped\",[172238]],[[195089,195089],\"mapped\",[19704]],[[195090,195090],\"mapped\",[172293]],[[195091,195091],\"mapped\",[172558]],[[195092,195092],\"mapped\",[172689]],[[195093,195093],\"mapped\",[40635]],[[195094,195094],\"mapped\",[19798]],[[195095,195095],\"mapped\",[40697]],[[195096,195096],\"mapped\",[40702]],[[195097,195097],\"mapped\",[40709]],[[195098,195098],\"mapped\",[40719]],[[195099,195099],\"mapped\",[40726]],[[195100,195100],\"mapped\",[40763]],[[195101,195101],\"mapped\",[173568]],[[195102,196605],\"disallowed\"],[[196606,196607],\"disallowed\"],[[196608,262141],\"disallowed\"],[[262142,262143],\"disallowed\"],[[262144,327677],\"disallowed\"],[[327678,327679],\"disallowed\"],[[327680,393213],\"disallowed\"],[[393214,393215],\"disallowed\"],[[393216,458749],\"disallowed\"],[[458750,458751],\"disallowed\"],[[458752,524285],\"disallowed\"],[[524286,524287],\"disallowed\"],[[524288,589821],\"disallowed\"],[[589822,589823],\"disallowed\"],[[589824,655357],\"disallowed\"],[[655358,655359],\"disallowed\"],[[655360,720893],\"disallowed\"],[[720894,720895],\"disallowed\"],[[720896,786429],\"disallowed\"],[[786430,786431],\"disallowed\"],[[786432,851965],\"disallowed\"],[[851966,851967],\"disallowed\"],[[851968,917501],\"disallowed\"],[[917502,917503],\"disallowed\"],[[917504,917504],\"disallowed\"],[[917505,917505],\"disallowed\"],[[917506,917535],\"disallowed\"],[[917536,917631],\"disallowed\"],[[917632,917759],\"disallowed\"],[[917760,917999],\"ignored\"],[[918000,983037],\"disallowed\"],[[983038,983039],\"disallowed\"],[[983040,1048573],\"disallowed\"],[[1048574,1048575],\"disallowed\"],[[1048576,1114109],\"disallowed\"],[[1114110,1114111],\"disallowed\"]]","\"use strict\";\n\nvar punycode = require(\"punycode\");\nvar mappingTable = require(\"./lib/mappingTable.json\");\n\nvar PROCESSING_OPTIONS = {\n TRANSITIONAL: 0,\n NONTRANSITIONAL: 1\n};\n\nfunction normalize(str) { // fix bug in v8\n return str.split('\\u0000').map(function (s) { return s.normalize('NFC'); }).join('\\u0000');\n}\n\nfunction findStatus(val) {\n var start = 0;\n var end = mappingTable.length - 1;\n\n while (start <= end) {\n var mid = Math.floor((start + end) / 2);\n\n var target = mappingTable[mid];\n if (target[0][0] <= val && target[0][1] >= val) {\n return target;\n } else if (target[0][0] > val) {\n end = mid - 1;\n } else {\n start = mid + 1;\n }\n }\n\n return null;\n}\n\nvar regexAstralSymbols = /[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]/g;\n\nfunction countSymbols(string) {\n return string\n // replace every surrogate pair with a BMP symbol\n .replace(regexAstralSymbols, '_')\n // then get the length\n .length;\n}\n\nfunction mapChars(domain_name, useSTD3, processing_option) {\n var hasError = false;\n var processed = \"\";\n\n var len = countSymbols(domain_name);\n for (var i = 0; i < len; ++i) {\n var codePoint = domain_name.codePointAt(i);\n var status = findStatus(codePoint);\n\n switch (status[1]) {\n case \"disallowed\":\n hasError = true;\n processed += String.fromCodePoint(codePoint);\n break;\n case \"ignored\":\n break;\n case \"mapped\":\n processed += String.fromCodePoint.apply(String, status[2]);\n break;\n case \"deviation\":\n if (processing_option === PROCESSING_OPTIONS.TRANSITIONAL) {\n processed += String.fromCodePoint.apply(String, status[2]);\n } else {\n processed += String.fromCodePoint(codePoint);\n }\n break;\n case \"valid\":\n processed += String.fromCodePoint(codePoint);\n break;\n case \"disallowed_STD3_mapped\":\n if (useSTD3) {\n hasError = true;\n processed += String.fromCodePoint(codePoint);\n } else {\n processed += String.fromCodePoint.apply(String, status[2]);\n }\n break;\n case \"disallowed_STD3_valid\":\n if (useSTD3) {\n hasError = true;\n }\n\n processed += String.fromCodePoint(codePoint);\n break;\n }\n }\n\n return {\n string: processed,\n error: hasError\n };\n}\n\nvar combiningMarksRegex = /[\\u0300-\\u036F\\u0483-\\u0489\\u0591-\\u05BD\\u05BF\\u05C1\\u05C2\\u05C4\\u05C5\\u05C7\\u0610-\\u061A\\u064B-\\u065F\\u0670\\u06D6-\\u06DC\\u06DF-\\u06E4\\u06E7\\u06E8\\u06EA-\\u06ED\\u0711\\u0730-\\u074A\\u07A6-\\u07B0\\u07EB-\\u07F3\\u0816-\\u0819\\u081B-\\u0823\\u0825-\\u0827\\u0829-\\u082D\\u0859-\\u085B\\u08E4-\\u0903\\u093A-\\u093C\\u093E-\\u094F\\u0951-\\u0957\\u0962\\u0963\\u0981-\\u0983\\u09BC\\u09BE-\\u09C4\\u09C7\\u09C8\\u09CB-\\u09CD\\u09D7\\u09E2\\u09E3\\u0A01-\\u0A03\\u0A3C\\u0A3E-\\u0A42\\u0A47\\u0A48\\u0A4B-\\u0A4D\\u0A51\\u0A70\\u0A71\\u0A75\\u0A81-\\u0A83\\u0ABC\\u0ABE-\\u0AC5\\u0AC7-\\u0AC9\\u0ACB-\\u0ACD\\u0AE2\\u0AE3\\u0B01-\\u0B03\\u0B3C\\u0B3E-\\u0B44\\u0B47\\u0B48\\u0B4B-\\u0B4D\\u0B56\\u0B57\\u0B62\\u0B63\\u0B82\\u0BBE-\\u0BC2\\u0BC6-\\u0BC8\\u0BCA-\\u0BCD\\u0BD7\\u0C00-\\u0C03\\u0C3E-\\u0C44\\u0C46-\\u0C48\\u0C4A-\\u0C4D\\u0C55\\u0C56\\u0C62\\u0C63\\u0C81-\\u0C83\\u0CBC\\u0CBE-\\u0CC4\\u0CC6-\\u0CC8\\u0CCA-\\u0CCD\\u0CD5\\u0CD6\\u0CE2\\u0CE3\\u0D01-\\u0D03\\u0D3E-\\u0D44\\u0D46-\\u0D48\\u0D4A-\\u0D4D\\u0D57\\u0D62\\u0D63\\u0D82\\u0D83\\u0DCA\\u0DCF-\\u0DD4\\u0DD6\\u0DD8-\\u0DDF\\u0DF2\\u0DF3\\u0E31\\u0E34-\\u0E3A\\u0E47-\\u0E4E\\u0EB1\\u0EB4-\\u0EB9\\u0EBB\\u0EBC\\u0EC8-\\u0ECD\\u0F18\\u0F19\\u0F35\\u0F37\\u0F39\\u0F3E\\u0F3F\\u0F71-\\u0F84\\u0F86\\u0F87\\u0F8D-\\u0F97\\u0F99-\\u0FBC\\u0FC6\\u102B-\\u103E\\u1056-\\u1059\\u105E-\\u1060\\u1062-\\u1064\\u1067-\\u106D\\u1071-\\u1074\\u1082-\\u108D\\u108F\\u109A-\\u109D\\u135D-\\u135F\\u1712-\\u1714\\u1732-\\u1734\\u1752\\u1753\\u1772\\u1773\\u17B4-\\u17D3\\u17DD\\u180B-\\u180D\\u18A9\\u1920-\\u192B\\u1930-\\u193B\\u19B0-\\u19C0\\u19C8\\u19C9\\u1A17-\\u1A1B\\u1A55-\\u1A5E\\u1A60-\\u1A7C\\u1A7F\\u1AB0-\\u1ABE\\u1B00-\\u1B04\\u1B34-\\u1B44\\u1B6B-\\u1B73\\u1B80-\\u1B82\\u1BA1-\\u1BAD\\u1BE6-\\u1BF3\\u1C24-\\u1C37\\u1CD0-\\u1CD2\\u1CD4-\\u1CE8\\u1CED\\u1CF2-\\u1CF4\\u1CF8\\u1CF9\\u1DC0-\\u1DF5\\u1DFC-\\u1DFF\\u20D0-\\u20F0\\u2CEF-\\u2CF1\\u2D7F\\u2DE0-\\u2DFF\\u302A-\\u302F\\u3099\\u309A\\uA66F-\\uA672\\uA674-\\uA67D\\uA69F\\uA6F0\\uA6F1\\uA802\\uA806\\uA80B\\uA823-\\uA827\\uA880\\uA881\\uA8B4-\\uA8C4\\uA8E0-\\uA8F1\\uA926-\\uA92D\\uA947-\\uA953\\uA980-\\uA983\\uA9B3-\\uA9C0\\uA9E5\\uAA29-\\uAA36\\uAA43\\uAA4C\\uAA4D\\uAA7B-\\uAA7D\\uAAB0\\uAAB2-\\uAAB4\\uAAB7\\uAAB8\\uAABE\\uAABF\\uAAC1\\uAAEB-\\uAAEF\\uAAF5\\uAAF6\\uABE3-\\uABEA\\uABEC\\uABED\\uFB1E\\uFE00-\\uFE0F\\uFE20-\\uFE2D]|\\uD800[\\uDDFD\\uDEE0\\uDF76-\\uDF7A]|\\uD802[\\uDE01-\\uDE03\\uDE05\\uDE06\\uDE0C-\\uDE0F\\uDE38-\\uDE3A\\uDE3F\\uDEE5\\uDEE6]|\\uD804[\\uDC00-\\uDC02\\uDC38-\\uDC46\\uDC7F-\\uDC82\\uDCB0-\\uDCBA\\uDD00-\\uDD02\\uDD27-\\uDD34\\uDD73\\uDD80-\\uDD82\\uDDB3-\\uDDC0\\uDE2C-\\uDE37\\uDEDF-\\uDEEA\\uDF01-\\uDF03\\uDF3C\\uDF3E-\\uDF44\\uDF47\\uDF48\\uDF4B-\\uDF4D\\uDF57\\uDF62\\uDF63\\uDF66-\\uDF6C\\uDF70-\\uDF74]|\\uD805[\\uDCB0-\\uDCC3\\uDDAF-\\uDDB5\\uDDB8-\\uDDC0\\uDE30-\\uDE40\\uDEAB-\\uDEB7]|\\uD81A[\\uDEF0-\\uDEF4\\uDF30-\\uDF36]|\\uD81B[\\uDF51-\\uDF7E\\uDF8F-\\uDF92]|\\uD82F[\\uDC9D\\uDC9E]|\\uD834[\\uDD65-\\uDD69\\uDD6D-\\uDD72\\uDD7B-\\uDD82\\uDD85-\\uDD8B\\uDDAA-\\uDDAD\\uDE42-\\uDE44]|\\uD83A[\\uDCD0-\\uDCD6]|\\uDB40[\\uDD00-\\uDDEF]/;\n\nfunction validateLabel(label, processing_option) {\n if (label.substr(0, 4) === \"xn--\") {\n label = punycode.toUnicode(label);\n processing_option = PROCESSING_OPTIONS.NONTRANSITIONAL;\n }\n\n var error = false;\n\n if (normalize(label) !== label ||\n (label[3] === \"-\" && label[4] === \"-\") ||\n label[0] === \"-\" || label[label.length - 1] === \"-\" ||\n label.indexOf(\".\") !== -1 ||\n label.search(combiningMarksRegex) === 0) {\n error = true;\n }\n\n var len = countSymbols(label);\n for (var i = 0; i < len; ++i) {\n var status = findStatus(label.codePointAt(i));\n if ((processing === PROCESSING_OPTIONS.TRANSITIONAL && status[1] !== \"valid\") ||\n (processing === PROCESSING_OPTIONS.NONTRANSITIONAL &&\n status[1] !== \"valid\" && status[1] !== \"deviation\")) {\n error = true;\n break;\n }\n }\n\n return {\n label: label,\n error: error\n };\n}\n\nfunction processing(domain_name, useSTD3, processing_option) {\n var result = mapChars(domain_name, useSTD3, processing_option);\n result.string = normalize(result.string);\n\n var labels = result.string.split(\".\");\n for (var i = 0; i < labels.length; ++i) {\n try {\n var validation = validateLabel(labels[i]);\n labels[i] = validation.label;\n result.error = result.error || validation.error;\n } catch(e) {\n result.error = true;\n }\n }\n\n return {\n string: labels.join(\".\"),\n error: result.error\n };\n}\n\nmodule.exports.toASCII = function(domain_name, useSTD3, processing_option, verifyDnsLength) {\n var result = processing(domain_name, useSTD3, processing_option);\n var labels = result.string.split(\".\");\n labels = labels.map(function(l) {\n try {\n return punycode.toASCII(l);\n } catch(e) {\n result.error = true;\n return l;\n }\n });\n\n if (verifyDnsLength) {\n var total = labels.slice(0, labels.length - 1).join(\".\").length;\n if (total.length > 253 || total.length === 0) {\n result.error = true;\n }\n\n for (var i=0; i < labels.length; ++i) {\n if (labels.length > 63 || labels.length === 0) {\n result.error = true;\n break;\n }\n }\n }\n\n if (result.error) return null;\n return labels.join(\".\");\n};\n\nmodule.exports.toUnicode = function(domain_name, useSTD3) {\n var result = processing(domain_name, useSTD3, PROCESSING_OPTIONS.NONTRANSITIONAL);\n\n return {\n domain: result.string,\n error: result.error\n };\n};\n\nmodule.exports.PROCESSING_OPTIONS = PROCESSING_OPTIONS;\n","\"use strict\";\r\nconst punycode = require(\"punycode\");\r\nconst tr46 = require(\"tr46\");\r\n\r\nconst specialSchemes = {\r\n ftp: 21,\r\n file: null,\r\n gopher: 70,\r\n http: 80,\r\n https: 443,\r\n ws: 80,\r\n wss: 443\r\n};\r\n\r\nconst failure = Symbol(\"failure\");\r\n\r\nfunction countSymbols(str) {\r\n return punycode.ucs2.decode(str).length;\r\n}\r\n\r\nfunction at(input, idx) {\r\n const c = input[idx];\r\n return isNaN(c) ? undefined : String.fromCodePoint(c);\r\n}\r\n\r\nfunction isASCIIDigit(c) {\r\n return c >= 0x30 && c <= 0x39;\r\n}\r\n\r\nfunction isASCIIAlpha(c) {\r\n return (c >= 0x41 && c <= 0x5A) || (c >= 0x61 && c <= 0x7A);\r\n}\r\n\r\nfunction isASCIIAlphanumeric(c) {\r\n return isASCIIAlpha(c) || isASCIIDigit(c);\r\n}\r\n\r\nfunction isASCIIHex(c) {\r\n return isASCIIDigit(c) || (c >= 0x41 && c <= 0x46) || (c >= 0x61 && c <= 0x66);\r\n}\r\n\r\nfunction isSingleDot(buffer) {\r\n return buffer === \".\" || buffer.toLowerCase() === \"%2e\";\r\n}\r\n\r\nfunction isDoubleDot(buffer) {\r\n buffer = buffer.toLowerCase();\r\n return buffer === \"..\" || buffer === \"%2e.\" || buffer === \".%2e\" || buffer === \"%2e%2e\";\r\n}\r\n\r\nfunction isWindowsDriveLetterCodePoints(cp1, cp2) {\r\n return isASCIIAlpha(cp1) && (cp2 === 58 || cp2 === 124);\r\n}\r\n\r\nfunction isWindowsDriveLetterString(string) {\r\n return string.length === 2 && isASCIIAlpha(string.codePointAt(0)) && (string[1] === \":\" || string[1] === \"|\");\r\n}\r\n\r\nfunction isNormalizedWindowsDriveLetterString(string) {\r\n return string.length === 2 && isASCIIAlpha(string.codePointAt(0)) && string[1] === \":\";\r\n}\r\n\r\nfunction containsForbiddenHostCodePoint(string) {\r\n return string.search(/\\u0000|\\u0009|\\u000A|\\u000D|\\u0020|#|%|\\/|:|\\?|@|\\[|\\\\|\\]/) !== -1;\r\n}\r\n\r\nfunction containsForbiddenHostCodePointExcludingPercent(string) {\r\n return string.search(/\\u0000|\\u0009|\\u000A|\\u000D|\\u0020|#|\\/|:|\\?|@|\\[|\\\\|\\]/) !== -1;\r\n}\r\n\r\nfunction isSpecialScheme(scheme) {\r\n return specialSchemes[scheme] !== undefined;\r\n}\r\n\r\nfunction isSpecial(url) {\r\n return isSpecialScheme(url.scheme);\r\n}\r\n\r\nfunction defaultPort(scheme) {\r\n return specialSchemes[scheme];\r\n}\r\n\r\nfunction percentEncode(c) {\r\n let hex = c.toString(16).toUpperCase();\r\n if (hex.length === 1) {\r\n hex = \"0\" + hex;\r\n }\r\n\r\n return \"%\" + hex;\r\n}\r\n\r\nfunction utf8PercentEncode(c) {\r\n const buf = new Buffer(c);\r\n\r\n let str = \"\";\r\n\r\n for (let i = 0; i < buf.length; ++i) {\r\n str += percentEncode(buf[i]);\r\n }\r\n\r\n return str;\r\n}\r\n\r\nfunction utf8PercentDecode(str) {\r\n const input = new Buffer(str);\r\n const output = [];\r\n for (let i = 0; i < input.length; ++i) {\r\n if (input[i] !== 37) {\r\n output.push(input[i]);\r\n } else if (input[i] === 37 && isASCIIHex(input[i + 1]) && isASCIIHex(input[i + 2])) {\r\n output.push(parseInt(input.slice(i + 1, i + 3).toString(), 16));\r\n i += 2;\r\n } else {\r\n output.push(input[i]);\r\n }\r\n }\r\n return new Buffer(output).toString();\r\n}\r\n\r\nfunction isC0ControlPercentEncode(c) {\r\n return c <= 0x1F || c > 0x7E;\r\n}\r\n\r\nconst extraPathPercentEncodeSet = new Set([32, 34, 35, 60, 62, 63, 96, 123, 125]);\r\nfunction isPathPercentEncode(c) {\r\n return isC0ControlPercentEncode(c) || extraPathPercentEncodeSet.has(c);\r\n}\r\n\r\nconst extraUserinfoPercentEncodeSet =\r\n new Set([47, 58, 59, 61, 64, 91, 92, 93, 94, 124]);\r\nfunction isUserinfoPercentEncode(c) {\r\n return isPathPercentEncode(c) || extraUserinfoPercentEncodeSet.has(c);\r\n}\r\n\r\nfunction percentEncodeChar(c, encodeSetPredicate) {\r\n const cStr = String.fromCodePoint(c);\r\n\r\n if (encodeSetPredicate(c)) {\r\n return utf8PercentEncode(cStr);\r\n }\r\n\r\n return cStr;\r\n}\r\n\r\nfunction parseIPv4Number(input) {\r\n let R = 10;\r\n\r\n if (input.length >= 2 && input.charAt(0) === \"0\" && input.charAt(1).toLowerCase() === \"x\") {\r\n input = input.substring(2);\r\n R = 16;\r\n } else if (input.length >= 2 && input.charAt(0) === \"0\") {\r\n input = input.substring(1);\r\n R = 8;\r\n }\r\n\r\n if (input === \"\") {\r\n return 0;\r\n }\r\n\r\n const regex = R === 10 ? /[^0-9]/ : (R === 16 ? /[^0-9A-Fa-f]/ : /[^0-7]/);\r\n if (regex.test(input)) {\r\n return failure;\r\n }\r\n\r\n return parseInt(input, R);\r\n}\r\n\r\nfunction parseIPv4(input) {\r\n const parts = input.split(\".\");\r\n if (parts[parts.length - 1] === \"\") {\r\n if (parts.length > 1) {\r\n parts.pop();\r\n }\r\n }\r\n\r\n if (parts.length > 4) {\r\n return input;\r\n }\r\n\r\n const numbers = [];\r\n for (const part of parts) {\r\n if (part === \"\") {\r\n return input;\r\n }\r\n const n = parseIPv4Number(part);\r\n if (n === failure) {\r\n return input;\r\n }\r\n\r\n numbers.push(n);\r\n }\r\n\r\n for (let i = 0; i < numbers.length - 1; ++i) {\r\n if (numbers[i] > 255) {\r\n return failure;\r\n }\r\n }\r\n if (numbers[numbers.length - 1] >= Math.pow(256, 5 - numbers.length)) {\r\n return failure;\r\n }\r\n\r\n let ipv4 = numbers.pop();\r\n let counter = 0;\r\n\r\n for (const n of numbers) {\r\n ipv4 += n * Math.pow(256, 3 - counter);\r\n ++counter;\r\n }\r\n\r\n return ipv4;\r\n}\r\n\r\nfunction serializeIPv4(address) {\r\n let output = \"\";\r\n let n = address;\r\n\r\n for (let i = 1; i <= 4; ++i) {\r\n output = String(n % 256) + output;\r\n if (i !== 4) {\r\n output = \".\" + output;\r\n }\r\n n = Math.floor(n / 256);\r\n }\r\n\r\n return output;\r\n}\r\n\r\nfunction parseIPv6(input) {\r\n const address = [0, 0, 0, 0, 0, 0, 0, 0];\r\n let pieceIndex = 0;\r\n let compress = null;\r\n let pointer = 0;\r\n\r\n input = punycode.ucs2.decode(input);\r\n\r\n if (input[pointer] === 58) {\r\n if (input[pointer + 1] !== 58) {\r\n return failure;\r\n }\r\n\r\n pointer += 2;\r\n ++pieceIndex;\r\n compress = pieceIndex;\r\n }\r\n\r\n while (pointer < input.length) {\r\n if (pieceIndex === 8) {\r\n return failure;\r\n }\r\n\r\n if (input[pointer] === 58) {\r\n if (compress !== null) {\r\n return failure;\r\n }\r\n ++pointer;\r\n ++pieceIndex;\r\n compress = pieceIndex;\r\n continue;\r\n }\r\n\r\n let value = 0;\r\n let length = 0;\r\n\r\n while (length < 4 && isASCIIHex(input[pointer])) {\r\n value = value * 0x10 + parseInt(at(input, pointer), 16);\r\n ++pointer;\r\n ++length;\r\n }\r\n\r\n if (input[pointer] === 46) {\r\n if (length === 0) {\r\n return failure;\r\n }\r\n\r\n pointer -= length;\r\n\r\n if (pieceIndex > 6) {\r\n return failure;\r\n }\r\n\r\n let numbersSeen = 0;\r\n\r\n while (input[pointer] !== undefined) {\r\n let ipv4Piece = null;\r\n\r\n if (numbersSeen > 0) {\r\n if (input[pointer] === 46 && numbersSeen < 4) {\r\n ++pointer;\r\n } else {\r\n return failure;\r\n }\r\n }\r\n\r\n if (!isASCIIDigit(input[pointer])) {\r\n return failure;\r\n }\r\n\r\n while (isASCIIDigit(input[pointer])) {\r\n const number = parseInt(at(input, pointer));\r\n if (ipv4Piece === null) {\r\n ipv4Piece = number;\r\n } else if (ipv4Piece === 0) {\r\n return failure;\r\n } else {\r\n ipv4Piece = ipv4Piece * 10 + number;\r\n }\r\n if (ipv4Piece > 255) {\r\n return failure;\r\n }\r\n ++pointer;\r\n }\r\n\r\n address[pieceIndex] = address[pieceIndex] * 0x100 + ipv4Piece;\r\n\r\n ++numbersSeen;\r\n\r\n if (numbersSeen === 2 || numbersSeen === 4) {\r\n ++pieceIndex;\r\n }\r\n }\r\n\r\n if (numbersSeen !== 4) {\r\n return failure;\r\n }\r\n\r\n break;\r\n } else if (input[pointer] === 58) {\r\n ++pointer;\r\n if (input[pointer] === undefined) {\r\n return failure;\r\n }\r\n } else if (input[pointer] !== undefined) {\r\n return failure;\r\n }\r\n\r\n address[pieceIndex] = value;\r\n ++pieceIndex;\r\n }\r\n\r\n if (compress !== null) {\r\n let swaps = pieceIndex - compress;\r\n pieceIndex = 7;\r\n while (pieceIndex !== 0 && swaps > 0) {\r\n const temp = address[compress + swaps - 1];\r\n address[compress + swaps - 1] = address[pieceIndex];\r\n address[pieceIndex] = temp;\r\n --pieceIndex;\r\n --swaps;\r\n }\r\n } else if (compress === null && pieceIndex !== 8) {\r\n return failure;\r\n }\r\n\r\n return address;\r\n}\r\n\r\nfunction serializeIPv6(address) {\r\n let output = \"\";\r\n const seqResult = findLongestZeroSequence(address);\r\n const compress = seqResult.idx;\r\n let ignore0 = false;\r\n\r\n for (let pieceIndex = 0; pieceIndex <= 7; ++pieceIndex) {\r\n if (ignore0 && address[pieceIndex] === 0) {\r\n continue;\r\n } else if (ignore0) {\r\n ignore0 = false;\r\n }\r\n\r\n if (compress === pieceIndex) {\r\n const separator = pieceIndex === 0 ? \"::\" : \":\";\r\n output += separator;\r\n ignore0 = true;\r\n continue;\r\n }\r\n\r\n output += address[pieceIndex].toString(16);\r\n\r\n if (pieceIndex !== 7) {\r\n output += \":\";\r\n }\r\n }\r\n\r\n return output;\r\n}\r\n\r\nfunction parseHost(input, isSpecialArg) {\r\n if (input[0] === \"[\") {\r\n if (input[input.length - 1] !== \"]\") {\r\n return failure;\r\n }\r\n\r\n return parseIPv6(input.substring(1, input.length - 1));\r\n }\r\n\r\n if (!isSpecialArg) {\r\n return parseOpaqueHost(input);\r\n }\r\n\r\n const domain = utf8PercentDecode(input);\r\n const asciiDomain = tr46.toASCII(domain, false, tr46.PROCESSING_OPTIONS.NONTRANSITIONAL, false);\r\n if (asciiDomain === null) {\r\n return failure;\r\n }\r\n\r\n if (containsForbiddenHostCodePoint(asciiDomain)) {\r\n return failure;\r\n }\r\n\r\n const ipv4Host = parseIPv4(asciiDomain);\r\n if (typeof ipv4Host === \"number\" || ipv4Host === failure) {\r\n return ipv4Host;\r\n }\r\n\r\n return asciiDomain;\r\n}\r\n\r\nfunction parseOpaqueHost(input) {\r\n if (containsForbiddenHostCodePointExcludingPercent(input)) {\r\n return failure;\r\n }\r\n\r\n let output = \"\";\r\n const decoded = punycode.ucs2.decode(input);\r\n for (let i = 0; i < decoded.length; ++i) {\r\n output += percentEncodeChar(decoded[i], isC0ControlPercentEncode);\r\n }\r\n return output;\r\n}\r\n\r\nfunction findLongestZeroSequence(arr) {\r\n let maxIdx = null;\r\n let maxLen = 1; // only find elements > 1\r\n let currStart = null;\r\n let currLen = 0;\r\n\r\n for (let i = 0; i < arr.length; ++i) {\r\n if (arr[i] !== 0) {\r\n if (currLen > maxLen) {\r\n maxIdx = currStart;\r\n maxLen = currLen;\r\n }\r\n\r\n currStart = null;\r\n currLen = 0;\r\n } else {\r\n if (currStart === null) {\r\n currStart = i;\r\n }\r\n ++currLen;\r\n }\r\n }\r\n\r\n // if trailing zeros\r\n if (currLen > maxLen) {\r\n maxIdx = currStart;\r\n maxLen = currLen;\r\n }\r\n\r\n return {\r\n idx: maxIdx,\r\n len: maxLen\r\n };\r\n}\r\n\r\nfunction serializeHost(host) {\r\n if (typeof host === \"number\") {\r\n return serializeIPv4(host);\r\n }\r\n\r\n // IPv6 serializer\r\n if (host instanceof Array) {\r\n return \"[\" + serializeIPv6(host) + \"]\";\r\n }\r\n\r\n return host;\r\n}\r\n\r\nfunction trimControlChars(url) {\r\n return url.replace(/^[\\u0000-\\u001F\\u0020]+|[\\u0000-\\u001F\\u0020]+$/g, \"\");\r\n}\r\n\r\nfunction trimTabAndNewline(url) {\r\n return url.replace(/\\u0009|\\u000A|\\u000D/g, \"\");\r\n}\r\n\r\nfunction shortenPath(url) {\r\n const path = url.path;\r\n if (path.length === 0) {\r\n return;\r\n }\r\n if (url.scheme === \"file\" && path.length === 1 && isNormalizedWindowsDriveLetter(path[0])) {\r\n return;\r\n }\r\n\r\n path.pop();\r\n}\r\n\r\nfunction includesCredentials(url) {\r\n return url.username !== \"\" || url.password !== \"\";\r\n}\r\n\r\nfunction cannotHaveAUsernamePasswordPort(url) {\r\n return url.host === null || url.host === \"\" || url.cannotBeABaseURL || url.scheme === \"file\";\r\n}\r\n\r\nfunction isNormalizedWindowsDriveLetter(string) {\r\n return /^[A-Za-z]:$/.test(string);\r\n}\r\n\r\nfunction URLStateMachine(input, base, encodingOverride, url, stateOverride) {\r\n this.pointer = 0;\r\n this.input = input;\r\n this.base = base || null;\r\n this.encodingOverride = encodingOverride || \"utf-8\";\r\n this.stateOverride = stateOverride;\r\n this.url = url;\r\n this.failure = false;\r\n this.parseError = false;\r\n\r\n if (!this.url) {\r\n this.url = {\r\n scheme: \"\",\r\n username: \"\",\r\n password: \"\",\r\n host: null,\r\n port: null,\r\n path: [],\r\n query: null,\r\n fragment: null,\r\n\r\n cannotBeABaseURL: false\r\n };\r\n\r\n const res = trimControlChars(this.input);\r\n if (res !== this.input) {\r\n this.parseError = true;\r\n }\r\n this.input = res;\r\n }\r\n\r\n const res = trimTabAndNewline(this.input);\r\n if (res !== this.input) {\r\n this.parseError = true;\r\n }\r\n this.input = res;\r\n\r\n this.state = stateOverride || \"scheme start\";\r\n\r\n this.buffer = \"\";\r\n this.atFlag = false;\r\n this.arrFlag = false;\r\n this.passwordTokenSeenFlag = false;\r\n\r\n this.input = punycode.ucs2.decode(this.input);\r\n\r\n for (; this.pointer <= this.input.length; ++this.pointer) {\r\n const c = this.input[this.pointer];\r\n const cStr = isNaN(c) ? undefined : String.fromCodePoint(c);\r\n\r\n // exec state machine\r\n const ret = this[\"parse \" + this.state](c, cStr);\r\n if (!ret) {\r\n break; // terminate algorithm\r\n } else if (ret === failure) {\r\n this.failure = true;\r\n break;\r\n }\r\n }\r\n}\r\n\r\nURLStateMachine.prototype[\"parse scheme start\"] = function parseSchemeStart(c, cStr) {\r\n if (isASCIIAlpha(c)) {\r\n this.buffer += cStr.toLowerCase();\r\n this.state = \"scheme\";\r\n } else if (!this.stateOverride) {\r\n this.state = \"no scheme\";\r\n --this.pointer;\r\n } else {\r\n this.parseError = true;\r\n return failure;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse scheme\"] = function parseScheme(c, cStr) {\r\n if (isASCIIAlphanumeric(c) || c === 43 || c === 45 || c === 46) {\r\n this.buffer += cStr.toLowerCase();\r\n } else if (c === 58) {\r\n if (this.stateOverride) {\r\n if (isSpecial(this.url) && !isSpecialScheme(this.buffer)) {\r\n return false;\r\n }\r\n\r\n if (!isSpecial(this.url) && isSpecialScheme(this.buffer)) {\r\n return false;\r\n }\r\n\r\n if ((includesCredentials(this.url) || this.url.port !== null) && this.buffer === \"file\") {\r\n return false;\r\n }\r\n\r\n if (this.url.scheme === \"file\" && (this.url.host === \"\" || this.url.host === null)) {\r\n return false;\r\n }\r\n }\r\n this.url.scheme = this.buffer;\r\n this.buffer = \"\";\r\n if (this.stateOverride) {\r\n return false;\r\n }\r\n if (this.url.scheme === \"file\") {\r\n if (this.input[this.pointer + 1] !== 47 || this.input[this.pointer + 2] !== 47) {\r\n this.parseError = true;\r\n }\r\n this.state = \"file\";\r\n } else if (isSpecial(this.url) && this.base !== null && this.base.scheme === this.url.scheme) {\r\n this.state = \"special relative or authority\";\r\n } else if (isSpecial(this.url)) {\r\n this.state = \"special authority slashes\";\r\n } else if (this.input[this.pointer + 1] === 47) {\r\n this.state = \"path or authority\";\r\n ++this.pointer;\r\n } else {\r\n this.url.cannotBeABaseURL = true;\r\n this.url.path.push(\"\");\r\n this.state = \"cannot-be-a-base-URL path\";\r\n }\r\n } else if (!this.stateOverride) {\r\n this.buffer = \"\";\r\n this.state = \"no scheme\";\r\n this.pointer = -1;\r\n } else {\r\n this.parseError = true;\r\n return failure;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse no scheme\"] = function parseNoScheme(c) {\r\n if (this.base === null || (this.base.cannotBeABaseURL && c !== 35)) {\r\n return failure;\r\n } else if (this.base.cannotBeABaseURL && c === 35) {\r\n this.url.scheme = this.base.scheme;\r\n this.url.path = this.base.path.slice();\r\n this.url.query = this.base.query;\r\n this.url.fragment = \"\";\r\n this.url.cannotBeABaseURL = true;\r\n this.state = \"fragment\";\r\n } else if (this.base.scheme === \"file\") {\r\n this.state = \"file\";\r\n --this.pointer;\r\n } else {\r\n this.state = \"relative\";\r\n --this.pointer;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse special relative or authority\"] = function parseSpecialRelativeOrAuthority(c) {\r\n if (c === 47 && this.input[this.pointer + 1] === 47) {\r\n this.state = \"special authority ignore slashes\";\r\n ++this.pointer;\r\n } else {\r\n this.parseError = true;\r\n this.state = \"relative\";\r\n --this.pointer;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse path or authority\"] = function parsePathOrAuthority(c) {\r\n if (c === 47) {\r\n this.state = \"authority\";\r\n } else {\r\n this.state = \"path\";\r\n --this.pointer;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse relative\"] = function parseRelative(c) {\r\n this.url.scheme = this.base.scheme;\r\n if (isNaN(c)) {\r\n this.url.username = this.base.username;\r\n this.url.password = this.base.password;\r\n this.url.host = this.base.host;\r\n this.url.port = this.base.port;\r\n this.url.path = this.base.path.slice();\r\n this.url.query = this.base.query;\r\n } else if (c === 47) {\r\n this.state = \"relative slash\";\r\n } else if (c === 63) {\r\n this.url.username = this.base.username;\r\n this.url.password = this.base.password;\r\n this.url.host = this.base.host;\r\n this.url.port = this.base.port;\r\n this.url.path = this.base.path.slice();\r\n this.url.query = \"\";\r\n this.state = \"query\";\r\n } else if (c === 35) {\r\n this.url.username = this.base.username;\r\n this.url.password = this.base.password;\r\n this.url.host = this.base.host;\r\n this.url.port = this.base.port;\r\n this.url.path = this.base.path.slice();\r\n this.url.query = this.base.query;\r\n this.url.fragment = \"\";\r\n this.state = \"fragment\";\r\n } else if (isSpecial(this.url) && c === 92) {\r\n this.parseError = true;\r\n this.state = \"relative slash\";\r\n } else {\r\n this.url.username = this.base.username;\r\n this.url.password = this.base.password;\r\n this.url.host = this.base.host;\r\n this.url.port = this.base.port;\r\n this.url.path = this.base.path.slice(0, this.base.path.length - 1);\r\n\r\n this.state = \"path\";\r\n --this.pointer;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse relative slash\"] = function parseRelativeSlash(c) {\r\n if (isSpecial(this.url) && (c === 47 || c === 92)) {\r\n if (c === 92) {\r\n this.parseError = true;\r\n }\r\n this.state = \"special authority ignore slashes\";\r\n } else if (c === 47) {\r\n this.state = \"authority\";\r\n } else {\r\n this.url.username = this.base.username;\r\n this.url.password = this.base.password;\r\n this.url.host = this.base.host;\r\n this.url.port = this.base.port;\r\n this.state = \"path\";\r\n --this.pointer;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse special authority slashes\"] = function parseSpecialAuthoritySlashes(c) {\r\n if (c === 47 && this.input[this.pointer + 1] === 47) {\r\n this.state = \"special authority ignore slashes\";\r\n ++this.pointer;\r\n } else {\r\n this.parseError = true;\r\n this.state = \"special authority ignore slashes\";\r\n --this.pointer;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse special authority ignore slashes\"] = function parseSpecialAuthorityIgnoreSlashes(c) {\r\n if (c !== 47 && c !== 92) {\r\n this.state = \"authority\";\r\n --this.pointer;\r\n } else {\r\n this.parseError = true;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse authority\"] = function parseAuthority(c, cStr) {\r\n if (c === 64) {\r\n this.parseError = true;\r\n if (this.atFlag) {\r\n this.buffer = \"%40\" + this.buffer;\r\n }\r\n this.atFlag = true;\r\n\r\n // careful, this is based on buffer and has its own pointer (this.pointer != pointer) and inner chars\r\n const len = countSymbols(this.buffer);\r\n for (let pointer = 0; pointer < len; ++pointer) {\r\n const codePoint = this.buffer.codePointAt(pointer);\r\n\r\n if (codePoint === 58 && !this.passwordTokenSeenFlag) {\r\n this.passwordTokenSeenFlag = true;\r\n continue;\r\n }\r\n const encodedCodePoints = percentEncodeChar(codePoint, isUserinfoPercentEncode);\r\n if (this.passwordTokenSeenFlag) {\r\n this.url.password += encodedCodePoints;\r\n } else {\r\n this.url.username += encodedCodePoints;\r\n }\r\n }\r\n this.buffer = \"\";\r\n } else if (isNaN(c) || c === 47 || c === 63 || c === 35 ||\r\n (isSpecial(this.url) && c === 92)) {\r\n if (this.atFlag && this.buffer === \"\") {\r\n this.parseError = true;\r\n return failure;\r\n }\r\n this.pointer -= countSymbols(this.buffer) + 1;\r\n this.buffer = \"\";\r\n this.state = \"host\";\r\n } else {\r\n this.buffer += cStr;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse hostname\"] =\r\nURLStateMachine.prototype[\"parse host\"] = function parseHostName(c, cStr) {\r\n if (this.stateOverride && this.url.scheme === \"file\") {\r\n --this.pointer;\r\n this.state = \"file host\";\r\n } else if (c === 58 && !this.arrFlag) {\r\n if (this.buffer === \"\") {\r\n this.parseError = true;\r\n return failure;\r\n }\r\n\r\n const host = parseHost(this.buffer, isSpecial(this.url));\r\n if (host === failure) {\r\n return failure;\r\n }\r\n\r\n this.url.host = host;\r\n this.buffer = \"\";\r\n this.state = \"port\";\r\n if (this.stateOverride === \"hostname\") {\r\n return false;\r\n }\r\n } else if (isNaN(c) || c === 47 || c === 63 || c === 35 ||\r\n (isSpecial(this.url) && c === 92)) {\r\n --this.pointer;\r\n if (isSpecial(this.url) && this.buffer === \"\") {\r\n this.parseError = true;\r\n return failure;\r\n } else if (this.stateOverride && this.buffer === \"\" &&\r\n (includesCredentials(this.url) || this.url.port !== null)) {\r\n this.parseError = true;\r\n return false;\r\n }\r\n\r\n const host = parseHost(this.buffer, isSpecial(this.url));\r\n if (host === failure) {\r\n return failure;\r\n }\r\n\r\n this.url.host = host;\r\n this.buffer = \"\";\r\n this.state = \"path start\";\r\n if (this.stateOverride) {\r\n return false;\r\n }\r\n } else {\r\n if (c === 91) {\r\n this.arrFlag = true;\r\n } else if (c === 93) {\r\n this.arrFlag = false;\r\n }\r\n this.buffer += cStr;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse port\"] = function parsePort(c, cStr) {\r\n if (isASCIIDigit(c)) {\r\n this.buffer += cStr;\r\n } else if (isNaN(c) || c === 47 || c === 63 || c === 35 ||\r\n (isSpecial(this.url) && c === 92) ||\r\n this.stateOverride) {\r\n if (this.buffer !== \"\") {\r\n const port = parseInt(this.buffer);\r\n if (port > Math.pow(2, 16) - 1) {\r\n this.parseError = true;\r\n return failure;\r\n }\r\n this.url.port = port === defaultPort(this.url.scheme) ? null : port;\r\n this.buffer = \"\";\r\n }\r\n if (this.stateOverride) {\r\n return false;\r\n }\r\n this.state = \"path start\";\r\n --this.pointer;\r\n } else {\r\n this.parseError = true;\r\n return failure;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nconst fileOtherwiseCodePoints = new Set([47, 92, 63, 35]);\r\n\r\nURLStateMachine.prototype[\"parse file\"] = function parseFile(c) {\r\n this.url.scheme = \"file\";\r\n\r\n if (c === 47 || c === 92) {\r\n if (c === 92) {\r\n this.parseError = true;\r\n }\r\n this.state = \"file slash\";\r\n } else if (this.base !== null && this.base.scheme === \"file\") {\r\n if (isNaN(c)) {\r\n this.url.host = this.base.host;\r\n this.url.path = this.base.path.slice();\r\n this.url.query = this.base.query;\r\n } else if (c === 63) {\r\n this.url.host = this.base.host;\r\n this.url.path = this.base.path.slice();\r\n this.url.query = \"\";\r\n this.state = \"query\";\r\n } else if (c === 35) {\r\n this.url.host = this.base.host;\r\n this.url.path = this.base.path.slice();\r\n this.url.query = this.base.query;\r\n this.url.fragment = \"\";\r\n this.state = \"fragment\";\r\n } else {\r\n if (this.input.length - this.pointer - 1 === 0 || // remaining consists of 0 code points\r\n !isWindowsDriveLetterCodePoints(c, this.input[this.pointer + 1]) ||\r\n (this.input.length - this.pointer - 1 >= 2 && // remaining has at least 2 code points\r\n !fileOtherwiseCodePoints.has(this.input[this.pointer + 2]))) {\r\n this.url.host = this.base.host;\r\n this.url.path = this.base.path.slice();\r\n shortenPath(this.url);\r\n } else {\r\n this.parseError = true;\r\n }\r\n\r\n this.state = \"path\";\r\n --this.pointer;\r\n }\r\n } else {\r\n this.state = \"path\";\r\n --this.pointer;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse file slash\"] = function parseFileSlash(c) {\r\n if (c === 47 || c === 92) {\r\n if (c === 92) {\r\n this.parseError = true;\r\n }\r\n this.state = \"file host\";\r\n } else {\r\n if (this.base !== null && this.base.scheme === \"file\") {\r\n if (isNormalizedWindowsDriveLetterString(this.base.path[0])) {\r\n this.url.path.push(this.base.path[0]);\r\n } else {\r\n this.url.host = this.base.host;\r\n }\r\n }\r\n this.state = \"path\";\r\n --this.pointer;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse file host\"] = function parseFileHost(c, cStr) {\r\n if (isNaN(c) || c === 47 || c === 92 || c === 63 || c === 35) {\r\n --this.pointer;\r\n if (!this.stateOverride && isWindowsDriveLetterString(this.buffer)) {\r\n this.parseError = true;\r\n this.state = \"path\";\r\n } else if (this.buffer === \"\") {\r\n this.url.host = \"\";\r\n if (this.stateOverride) {\r\n return false;\r\n }\r\n this.state = \"path start\";\r\n } else {\r\n let host = parseHost(this.buffer, isSpecial(this.url));\r\n if (host === failure) {\r\n return failure;\r\n }\r\n if (host === \"localhost\") {\r\n host = \"\";\r\n }\r\n this.url.host = host;\r\n\r\n if (this.stateOverride) {\r\n return false;\r\n }\r\n\r\n this.buffer = \"\";\r\n this.state = \"path start\";\r\n }\r\n } else {\r\n this.buffer += cStr;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse path start\"] = function parsePathStart(c) {\r\n if (isSpecial(this.url)) {\r\n if (c === 92) {\r\n this.parseError = true;\r\n }\r\n this.state = \"path\";\r\n\r\n if (c !== 47 && c !== 92) {\r\n --this.pointer;\r\n }\r\n } else if (!this.stateOverride && c === 63) {\r\n this.url.query = \"\";\r\n this.state = \"query\";\r\n } else if (!this.stateOverride && c === 35) {\r\n this.url.fragment = \"\";\r\n this.state = \"fragment\";\r\n } else if (c !== undefined) {\r\n this.state = \"path\";\r\n if (c !== 47) {\r\n --this.pointer;\r\n }\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse path\"] = function parsePath(c) {\r\n if (isNaN(c) || c === 47 || (isSpecial(this.url) && c === 92) ||\r\n (!this.stateOverride && (c === 63 || c === 35))) {\r\n if (isSpecial(this.url) && c === 92) {\r\n this.parseError = true;\r\n }\r\n\r\n if (isDoubleDot(this.buffer)) {\r\n shortenPath(this.url);\r\n if (c !== 47 && !(isSpecial(this.url) && c === 92)) {\r\n this.url.path.push(\"\");\r\n }\r\n } else if (isSingleDot(this.buffer) && c !== 47 &&\r\n !(isSpecial(this.url) && c === 92)) {\r\n this.url.path.push(\"\");\r\n } else if (!isSingleDot(this.buffer)) {\r\n if (this.url.scheme === \"file\" && this.url.path.length === 0 && isWindowsDriveLetterString(this.buffer)) {\r\n if (this.url.host !== \"\" && this.url.host !== null) {\r\n this.parseError = true;\r\n this.url.host = \"\";\r\n }\r\n this.buffer = this.buffer[0] + \":\";\r\n }\r\n this.url.path.push(this.buffer);\r\n }\r\n this.buffer = \"\";\r\n if (this.url.scheme === \"file\" && (c === undefined || c === 63 || c === 35)) {\r\n while (this.url.path.length > 1 && this.url.path[0] === \"\") {\r\n this.parseError = true;\r\n this.url.path.shift();\r\n }\r\n }\r\n if (c === 63) {\r\n this.url.query = \"\";\r\n this.state = \"query\";\r\n }\r\n if (c === 35) {\r\n this.url.fragment = \"\";\r\n this.state = \"fragment\";\r\n }\r\n } else {\r\n // TODO: If c is not a URL code point and not \"%\", parse error.\r\n\r\n if (c === 37 &&\r\n (!isASCIIHex(this.input[this.pointer + 1]) ||\r\n !isASCIIHex(this.input[this.pointer + 2]))) {\r\n this.parseError = true;\r\n }\r\n\r\n this.buffer += percentEncodeChar(c, isPathPercentEncode);\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse cannot-be-a-base-URL path\"] = function parseCannotBeABaseURLPath(c) {\r\n if (c === 63) {\r\n this.url.query = \"\";\r\n this.state = \"query\";\r\n } else if (c === 35) {\r\n this.url.fragment = \"\";\r\n this.state = \"fragment\";\r\n } else {\r\n // TODO: Add: not a URL code point\r\n if (!isNaN(c) && c !== 37) {\r\n this.parseError = true;\r\n }\r\n\r\n if (c === 37 &&\r\n (!isASCIIHex(this.input[this.pointer + 1]) ||\r\n !isASCIIHex(this.input[this.pointer + 2]))) {\r\n this.parseError = true;\r\n }\r\n\r\n if (!isNaN(c)) {\r\n this.url.path[0] = this.url.path[0] + percentEncodeChar(c, isC0ControlPercentEncode);\r\n }\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse query\"] = function parseQuery(c, cStr) {\r\n if (isNaN(c) || (!this.stateOverride && c === 35)) {\r\n if (!isSpecial(this.url) || this.url.scheme === \"ws\" || this.url.scheme === \"wss\") {\r\n this.encodingOverride = \"utf-8\";\r\n }\r\n\r\n const buffer = new Buffer(this.buffer); // TODO: Use encoding override instead\r\n for (let i = 0; i < buffer.length; ++i) {\r\n if (buffer[i] < 0x21 || buffer[i] > 0x7E || buffer[i] === 0x22 || buffer[i] === 0x23 ||\r\n buffer[i] === 0x3C || buffer[i] === 0x3E) {\r\n this.url.query += percentEncode(buffer[i]);\r\n } else {\r\n this.url.query += String.fromCodePoint(buffer[i]);\r\n }\r\n }\r\n\r\n this.buffer = \"\";\r\n if (c === 35) {\r\n this.url.fragment = \"\";\r\n this.state = \"fragment\";\r\n }\r\n } else {\r\n // TODO: If c is not a URL code point and not \"%\", parse error.\r\n if (c === 37 &&\r\n (!isASCIIHex(this.input[this.pointer + 1]) ||\r\n !isASCIIHex(this.input[this.pointer + 2]))) {\r\n this.parseError = true;\r\n }\r\n\r\n this.buffer += cStr;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse fragment\"] = function parseFragment(c) {\r\n if (isNaN(c)) { // do nothing\r\n } else if (c === 0x0) {\r\n this.parseError = true;\r\n } else {\r\n // TODO: If c is not a URL code point and not \"%\", parse error.\r\n if (c === 37 &&\r\n (!isASCIIHex(this.input[this.pointer + 1]) ||\r\n !isASCIIHex(this.input[this.pointer + 2]))) {\r\n this.parseError = true;\r\n }\r\n\r\n this.url.fragment += percentEncodeChar(c, isC0ControlPercentEncode);\r\n }\r\n\r\n return true;\r\n};\r\n\r\nfunction serializeURL(url, excludeFragment) {\r\n let output = url.scheme + \":\";\r\n if (url.host !== null) {\r\n output += \"//\";\r\n\r\n if (url.username !== \"\" || url.password !== \"\") {\r\n output += url.username;\r\n if (url.password !== \"\") {\r\n output += \":\" + url.password;\r\n }\r\n output += \"@\";\r\n }\r\n\r\n output += serializeHost(url.host);\r\n\r\n if (url.port !== null) {\r\n output += \":\" + url.port;\r\n }\r\n } else if (url.host === null && url.scheme === \"file\") {\r\n output += \"//\";\r\n }\r\n\r\n if (url.cannotBeABaseURL) {\r\n output += url.path[0];\r\n } else {\r\n for (const string of url.path) {\r\n output += \"/\" + string;\r\n }\r\n }\r\n\r\n if (url.query !== null) {\r\n output += \"?\" + url.query;\r\n }\r\n\r\n if (!excludeFragment && url.fragment !== null) {\r\n output += \"#\" + url.fragment;\r\n }\r\n\r\n return output;\r\n}\r\n\r\nfunction serializeOrigin(tuple) {\r\n let result = tuple.scheme + \"://\";\r\n result += serializeHost(tuple.host);\r\n\r\n if (tuple.port !== null) {\r\n result += \":\" + tuple.port;\r\n }\r\n\r\n return result;\r\n}\r\n\r\nmodule.exports.serializeURL = serializeURL;\r\n\r\nmodule.exports.serializeURLOrigin = function (url) {\r\n // https://url.spec.whatwg.org/#concept-url-origin\r\n switch (url.scheme) {\r\n case \"blob\":\r\n try {\r\n return module.exports.serializeURLOrigin(module.exports.parseURL(url.path[0]));\r\n } catch (e) {\r\n // serializing an opaque origin returns \"null\"\r\n return \"null\";\r\n }\r\n case \"ftp\":\r\n case \"gopher\":\r\n case \"http\":\r\n case \"https\":\r\n case \"ws\":\r\n case \"wss\":\r\n return serializeOrigin({\r\n scheme: url.scheme,\r\n host: url.host,\r\n port: url.port\r\n });\r\n case \"file\":\r\n // spec says \"exercise to the reader\", chrome says \"file://\"\r\n return \"file://\";\r\n default:\r\n // serializing an opaque origin returns \"null\"\r\n return \"null\";\r\n }\r\n};\r\n\r\nmodule.exports.basicURLParse = function (input, options) {\r\n if (options === undefined) {\r\n options = {};\r\n }\r\n\r\n const usm = new URLStateMachine(input, options.baseURL, options.encodingOverride, options.url, options.stateOverride);\r\n if (usm.failure) {\r\n return \"failure\";\r\n }\r\n\r\n return usm.url;\r\n};\r\n\r\nmodule.exports.setTheUsername = function (url, username) {\r\n url.username = \"\";\r\n const decoded = punycode.ucs2.decode(username);\r\n for (let i = 0; i < decoded.length; ++i) {\r\n url.username += percentEncodeChar(decoded[i], isUserinfoPercentEncode);\r\n }\r\n};\r\n\r\nmodule.exports.setThePassword = function (url, password) {\r\n url.password = \"\";\r\n const decoded = punycode.ucs2.decode(password);\r\n for (let i = 0; i < decoded.length; ++i) {\r\n url.password += percentEncodeChar(decoded[i], isUserinfoPercentEncode);\r\n }\r\n};\r\n\r\nmodule.exports.serializeHost = serializeHost;\r\n\r\nmodule.exports.cannotHaveAUsernamePasswordPort = cannotHaveAUsernamePasswordPort;\r\n\r\nmodule.exports.serializeInteger = function (integer) {\r\n return String(integer);\r\n};\r\n\r\nmodule.exports.parseURL = function (input, options) {\r\n if (options === undefined) {\r\n options = {};\r\n }\r\n\r\n // We don't handle blobs, so this just delegates:\r\n return module.exports.basicURLParse(input, { baseURL: options.baseURL, encodingOverride: options.encodingOverride });\r\n};\r\n","\"use strict\";\nconst usm = require(\"./url-state-machine\");\n\nexports.implementation = class URLImpl {\n constructor(constructorArgs) {\n const url = constructorArgs[0];\n const base = constructorArgs[1];\n\n let parsedBase = null;\n if (base !== undefined) {\n parsedBase = usm.basicURLParse(base);\n if (parsedBase === \"failure\") {\n throw new TypeError(\"Invalid base URL\");\n }\n }\n\n const parsedURL = usm.basicURLParse(url, { baseURL: parsedBase });\n if (parsedURL === \"failure\") {\n throw new TypeError(\"Invalid URL\");\n }\n\n this._url = parsedURL;\n\n // TODO: query stuff\n }\n\n get href() {\n return usm.serializeURL(this._url);\n }\n\n set href(v) {\n const parsedURL = usm.basicURLParse(v);\n if (parsedURL === \"failure\") {\n throw new TypeError(\"Invalid URL\");\n }\n\n this._url = parsedURL;\n }\n\n get origin() {\n return usm.serializeURLOrigin(this._url);\n }\n\n get protocol() {\n return this._url.scheme + \":\";\n }\n\n set protocol(v) {\n usm.basicURLParse(v + \":\", { url: this._url, stateOverride: \"scheme start\" });\n }\n\n get username() {\n return this._url.username;\n }\n\n set username(v) {\n if (usm.cannotHaveAUsernamePasswordPort(this._url)) {\n return;\n }\n\n usm.setTheUsername(this._url, v);\n }\n\n get password() {\n return this._url.password;\n }\n\n set password(v) {\n if (usm.cannotHaveAUsernamePasswordPort(this._url)) {\n return;\n }\n\n usm.setThePassword(this._url, v);\n }\n\n get host() {\n const url = this._url;\n\n if (url.host === null) {\n return \"\";\n }\n\n if (url.port === null) {\n return usm.serializeHost(url.host);\n }\n\n return usm.serializeHost(url.host) + \":\" + usm.serializeInteger(url.port);\n }\n\n set host(v) {\n if (this._url.cannotBeABaseURL) {\n return;\n }\n\n usm.basicURLParse(v, { url: this._url, stateOverride: \"host\" });\n }\n\n get hostname() {\n if (this._url.host === null) {\n return \"\";\n }\n\n return usm.serializeHost(this._url.host);\n }\n\n set hostname(v) {\n if (this._url.cannotBeABaseURL) {\n return;\n }\n\n usm.basicURLParse(v, { url: this._url, stateOverride: \"hostname\" });\n }\n\n get port() {\n if (this._url.port === null) {\n return \"\";\n }\n\n return usm.serializeInteger(this._url.port);\n }\n\n set port(v) {\n if (usm.cannotHaveAUsernamePasswordPort(this._url)) {\n return;\n }\n\n if (v === \"\") {\n this._url.port = null;\n } else {\n usm.basicURLParse(v, { url: this._url, stateOverride: \"port\" });\n }\n }\n\n get pathname() {\n if (this._url.cannotBeABaseURL) {\n return this._url.path[0];\n }\n\n if (this._url.path.length === 0) {\n return \"\";\n }\n\n return \"/\" + this._url.path.join(\"/\");\n }\n\n set pathname(v) {\n if (this._url.cannotBeABaseURL) {\n return;\n }\n\n this._url.path = [];\n usm.basicURLParse(v, { url: this._url, stateOverride: \"path start\" });\n }\n\n get search() {\n if (this._url.query === null || this._url.query === \"\") {\n return \"\";\n }\n\n return \"?\" + this._url.query;\n }\n\n set search(v) {\n // TODO: query stuff\n\n const url = this._url;\n\n if (v === \"\") {\n url.query = null;\n return;\n }\n\n const input = v[0] === \"?\" ? v.substring(1) : v;\n url.query = \"\";\n usm.basicURLParse(input, { url, stateOverride: \"query\" });\n }\n\n get hash() {\n if (this._url.fragment === null || this._url.fragment === \"\") {\n return \"\";\n }\n\n return \"#\" + this._url.fragment;\n }\n\n set hash(v) {\n if (v === \"\") {\n this._url.fragment = null;\n return;\n }\n\n const input = v[0] === \"#\" ? v.substring(1) : v;\n this._url.fragment = \"\";\n usm.basicURLParse(input, { url: this._url, stateOverride: \"fragment\" });\n }\n\n toJSON() {\n return this.href;\n }\n};\n","\"use strict\";\n\nconst conversions = require(\"webidl-conversions\");\nconst utils = require(\"./utils.js\");\nconst Impl = require(\".//URL-impl.js\");\n\nconst impl = utils.implSymbol;\n\nfunction URL(url) {\n if (!this || this[impl] || !(this instanceof URL)) {\n throw new TypeError(\"Failed to construct 'URL': Please use the 'new' operator, this DOM object constructor cannot be called as a function.\");\n }\n if (arguments.length < 1) {\n throw new TypeError(\"Failed to construct 'URL': 1 argument required, but only \" + arguments.length + \" present.\");\n }\n const args = [];\n for (let i = 0; i < arguments.length && i < 2; ++i) {\n args[i] = arguments[i];\n }\n args[0] = conversions[\"USVString\"](args[0]);\n if (args[1] !== undefined) {\n args[1] = conversions[\"USVString\"](args[1]);\n }\n\n module.exports.setup(this, args);\n}\n\nURL.prototype.toJSON = function toJSON() {\n if (!this || !module.exports.is(this)) {\n throw new TypeError(\"Illegal invocation\");\n }\n const args = [];\n for (let i = 0; i < arguments.length && i < 0; ++i) {\n args[i] = arguments[i];\n }\n return this[impl].toJSON.apply(this[impl], args);\n};\nObject.defineProperty(URL.prototype, \"href\", {\n get() {\n return this[impl].href;\n },\n set(V) {\n V = conversions[\"USVString\"](V);\n this[impl].href = V;\n },\n enumerable: true,\n configurable: true\n});\n\nURL.prototype.toString = function () {\n if (!this || !module.exports.is(this)) {\n throw new TypeError(\"Illegal invocation\");\n }\n return this.href;\n};\n\nObject.defineProperty(URL.prototype, \"origin\", {\n get() {\n return this[impl].origin;\n },\n enumerable: true,\n configurable: true\n});\n\nObject.defineProperty(URL.prototype, \"protocol\", {\n get() {\n return this[impl].protocol;\n },\n set(V) {\n V = conversions[\"USVString\"](V);\n this[impl].protocol = V;\n },\n enumerable: true,\n configurable: true\n});\n\nObject.defineProperty(URL.prototype, \"username\", {\n get() {\n return this[impl].username;\n },\n set(V) {\n V = conversions[\"USVString\"](V);\n this[impl].username = V;\n },\n enumerable: true,\n configurable: true\n});\n\nObject.defineProperty(URL.prototype, \"password\", {\n get() {\n return this[impl].password;\n },\n set(V) {\n V = conversions[\"USVString\"](V);\n this[impl].password = V;\n },\n enumerable: true,\n configurable: true\n});\n\nObject.defineProperty(URL.prototype, \"host\", {\n get() {\n return this[impl].host;\n },\n set(V) {\n V = conversions[\"USVString\"](V);\n this[impl].host = V;\n },\n enumerable: true,\n configurable: true\n});\n\nObject.defineProperty(URL.prototype, \"hostname\", {\n get() {\n return this[impl].hostname;\n },\n set(V) {\n V = conversions[\"USVString\"](V);\n this[impl].hostname = V;\n },\n enumerable: true,\n configurable: true\n});\n\nObject.defineProperty(URL.prototype, \"port\", {\n get() {\n return this[impl].port;\n },\n set(V) {\n V = conversions[\"USVString\"](V);\n this[impl].port = V;\n },\n enumerable: true,\n configurable: true\n});\n\nObject.defineProperty(URL.prototype, \"pathname\", {\n get() {\n return this[impl].pathname;\n },\n set(V) {\n V = conversions[\"USVString\"](V);\n this[impl].pathname = V;\n },\n enumerable: true,\n configurable: true\n});\n\nObject.defineProperty(URL.prototype, \"search\", {\n get() {\n return this[impl].search;\n },\n set(V) {\n V = conversions[\"USVString\"](V);\n this[impl].search = V;\n },\n enumerable: true,\n configurable: true\n});\n\nObject.defineProperty(URL.prototype, \"hash\", {\n get() {\n return this[impl].hash;\n },\n set(V) {\n V = conversions[\"USVString\"](V);\n this[impl].hash = V;\n },\n enumerable: true,\n configurable: true\n});\n\n\nmodule.exports = {\n is(obj) {\n return !!obj && obj[impl] instanceof Impl.implementation;\n },\n create(constructorArgs, privateData) {\n let obj = Object.create(URL.prototype);\n this.setup(obj, constructorArgs, privateData);\n return obj;\n },\n setup(obj, constructorArgs, privateData) {\n if (!privateData) privateData = {};\n privateData.wrapper = obj;\n\n obj[impl] = new Impl.implementation(constructorArgs, privateData);\n obj[impl][utils.wrapperSymbol] = obj;\n },\n interface: URL,\n expose: {\n Window: { URL: URL },\n Worker: { URL: URL }\n }\n};\n\n","\"use strict\";\n\nexports.URL = require(\"./URL\").interface;\nexports.serializeURL = require(\"./url-state-machine\").serializeURL;\nexports.serializeURLOrigin = require(\"./url-state-machine\").serializeURLOrigin;\nexports.basicURLParse = require(\"./url-state-machine\").basicURLParse;\nexports.setTheUsername = require(\"./url-state-machine\").setTheUsername;\nexports.setThePassword = require(\"./url-state-machine\").setThePassword;\nexports.serializeHost = require(\"./url-state-machine\").serializeHost;\nexports.serializeInteger = require(\"./url-state-machine\").serializeInteger;\nexports.parseURL = require(\"./url-state-machine\").parseURL;\n","'use strict';\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\nfunction _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; }\n\nvar Stream = _interopDefault(require('stream'));\nvar http = _interopDefault(require('http'));\nvar Url = _interopDefault(require('url'));\nvar whatwgUrl = _interopDefault(require('whatwg-url'));\nvar https = _interopDefault(require('https'));\nvar zlib = _interopDefault(require('zlib'));\n\n// Based on https://github.com/tmpvar/jsdom/blob/aa85b2abf07766ff7bf5c1f6daafb3726f2f2db5/lib/jsdom/living/blob.js\n\n// fix for \"Readable\" isn't a named export issue\nconst Readable = Stream.Readable;\n\nconst BUFFER = Symbol('buffer');\nconst TYPE = Symbol('type');\n\nclass Blob {\n\tconstructor() {\n\t\tthis[TYPE] = '';\n\n\t\tconst blobParts = arguments[0];\n\t\tconst options = arguments[1];\n\n\t\tconst buffers = [];\n\t\tlet size = 0;\n\n\t\tif (blobParts) {\n\t\t\tconst a = blobParts;\n\t\t\tconst length = Number(a.length);\n\t\t\tfor (let i = 0; i < length; i++) {\n\t\t\t\tconst element = a[i];\n\t\t\t\tlet buffer;\n\t\t\t\tif (element instanceof Buffer) {\n\t\t\t\t\tbuffer = element;\n\t\t\t\t} else if (ArrayBuffer.isView(element)) {\n\t\t\t\t\tbuffer = Buffer.from(element.buffer, element.byteOffset, element.byteLength);\n\t\t\t\t} else if (element instanceof ArrayBuffer) {\n\t\t\t\t\tbuffer = Buffer.from(element);\n\t\t\t\t} else if (element instanceof Blob) {\n\t\t\t\t\tbuffer = element[BUFFER];\n\t\t\t\t} else {\n\t\t\t\t\tbuffer = Buffer.from(typeof element === 'string' ? element : String(element));\n\t\t\t\t}\n\t\t\t\tsize += buffer.length;\n\t\t\t\tbuffers.push(buffer);\n\t\t\t}\n\t\t}\n\n\t\tthis[BUFFER] = Buffer.concat(buffers);\n\n\t\tlet type = options && options.type !== undefined && String(options.type).toLowerCase();\n\t\tif (type && !/[^\\u0020-\\u007E]/.test(type)) {\n\t\t\tthis[TYPE] = type;\n\t\t}\n\t}\n\tget size() {\n\t\treturn this[BUFFER].length;\n\t}\n\tget type() {\n\t\treturn this[TYPE];\n\t}\n\ttext() {\n\t\treturn Promise.resolve(this[BUFFER].toString());\n\t}\n\tarrayBuffer() {\n\t\tconst buf = this[BUFFER];\n\t\tconst ab = buf.buffer.slice(buf.byteOffset, buf.byteOffset + buf.byteLength);\n\t\treturn Promise.resolve(ab);\n\t}\n\tstream() {\n\t\tconst readable = new Readable();\n\t\treadable._read = function () {};\n\t\treadable.push(this[BUFFER]);\n\t\treadable.push(null);\n\t\treturn readable;\n\t}\n\ttoString() {\n\t\treturn '[object Blob]';\n\t}\n\tslice() {\n\t\tconst size = this.size;\n\n\t\tconst start = arguments[0];\n\t\tconst end = arguments[1];\n\t\tlet relativeStart, relativeEnd;\n\t\tif (start === undefined) {\n\t\t\trelativeStart = 0;\n\t\t} else if (start < 0) {\n\t\t\trelativeStart = Math.max(size + start, 0);\n\t\t} else {\n\t\t\trelativeStart = Math.min(start, size);\n\t\t}\n\t\tif (end === undefined) {\n\t\t\trelativeEnd = size;\n\t\t} else if (end < 0) {\n\t\t\trelativeEnd = Math.max(size + end, 0);\n\t\t} else {\n\t\t\trelativeEnd = Math.min(end, size);\n\t\t}\n\t\tconst span = Math.max(relativeEnd - relativeStart, 0);\n\n\t\tconst buffer = this[BUFFER];\n\t\tconst slicedBuffer = buffer.slice(relativeStart, relativeStart + span);\n\t\tconst blob = new Blob([], { type: arguments[2] });\n\t\tblob[BUFFER] = slicedBuffer;\n\t\treturn blob;\n\t}\n}\n\nObject.defineProperties(Blob.prototype, {\n\tsize: { enumerable: true },\n\ttype: { enumerable: true },\n\tslice: { enumerable: true }\n});\n\nObject.defineProperty(Blob.prototype, Symbol.toStringTag, {\n\tvalue: 'Blob',\n\twritable: false,\n\tenumerable: false,\n\tconfigurable: true\n});\n\n/**\n * fetch-error.js\n *\n * FetchError interface for operational errors\n */\n\n/**\n * Create FetchError instance\n *\n * @param String message Error message for human\n * @param String type Error type for machine\n * @param String systemError For Node.js system error\n * @return FetchError\n */\nfunction FetchError(message, type, systemError) {\n Error.call(this, message);\n\n this.message = message;\n this.type = type;\n\n // when err.type is `system`, err.code contains system error code\n if (systemError) {\n this.code = this.errno = systemError.code;\n }\n\n // hide custom error implementation details from end-users\n Error.captureStackTrace(this, this.constructor);\n}\n\nFetchError.prototype = Object.create(Error.prototype);\nFetchError.prototype.constructor = FetchError;\nFetchError.prototype.name = 'FetchError';\n\nlet convert;\ntry {\n\tconvert = require('encoding').convert;\n} catch (e) {}\n\nconst INTERNALS = Symbol('Body internals');\n\n// fix an issue where \"PassThrough\" isn't a named export for node <10\nconst PassThrough = Stream.PassThrough;\n\n/**\n * Body mixin\n *\n * Ref: https://fetch.spec.whatwg.org/#body\n *\n * @param Stream body Readable stream\n * @param Object opts Response options\n * @return Void\n */\nfunction Body(body) {\n\tvar _this = this;\n\n\tvar _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},\n\t _ref$size = _ref.size;\n\n\tlet size = _ref$size === undefined ? 0 : _ref$size;\n\tvar _ref$timeout = _ref.timeout;\n\tlet timeout = _ref$timeout === undefined ? 0 : _ref$timeout;\n\n\tif (body == null) {\n\t\t// body is undefined or null\n\t\tbody = null;\n\t} else if (isURLSearchParams(body)) {\n\t\t// body is a URLSearchParams\n\t\tbody = Buffer.from(body.toString());\n\t} else if (isBlob(body)) ; else if (Buffer.isBuffer(body)) ; else if (Object.prototype.toString.call(body) === '[object ArrayBuffer]') {\n\t\t// body is ArrayBuffer\n\t\tbody = Buffer.from(body);\n\t} else if (ArrayBuffer.isView(body)) {\n\t\t// body is ArrayBufferView\n\t\tbody = Buffer.from(body.buffer, body.byteOffset, body.byteLength);\n\t} else if (body instanceof Stream) ; else {\n\t\t// none of the above\n\t\t// coerce to string then buffer\n\t\tbody = Buffer.from(String(body));\n\t}\n\tthis[INTERNALS] = {\n\t\tbody,\n\t\tdisturbed: false,\n\t\terror: null\n\t};\n\tthis.size = size;\n\tthis.timeout = timeout;\n\n\tif (body instanceof Stream) {\n\t\tbody.on('error', function (err) {\n\t\t\tconst error = err.name === 'AbortError' ? err : new FetchError(`Invalid response body while trying to fetch ${_this.url}: ${err.message}`, 'system', err);\n\t\t\t_this[INTERNALS].error = error;\n\t\t});\n\t}\n}\n\nBody.prototype = {\n\tget body() {\n\t\treturn this[INTERNALS].body;\n\t},\n\n\tget bodyUsed() {\n\t\treturn this[INTERNALS].disturbed;\n\t},\n\n\t/**\n * Decode response as ArrayBuffer\n *\n * @return Promise\n */\n\tarrayBuffer() {\n\t\treturn consumeBody.call(this).then(function (buf) {\n\t\t\treturn buf.buffer.slice(buf.byteOffset, buf.byteOffset + buf.byteLength);\n\t\t});\n\t},\n\n\t/**\n * Return raw response as Blob\n *\n * @return Promise\n */\n\tblob() {\n\t\tlet ct = this.headers && this.headers.get('content-type') || '';\n\t\treturn consumeBody.call(this).then(function (buf) {\n\t\t\treturn Object.assign(\n\t\t\t// Prevent copying\n\t\t\tnew Blob([], {\n\t\t\t\ttype: ct.toLowerCase()\n\t\t\t}), {\n\t\t\t\t[BUFFER]: buf\n\t\t\t});\n\t\t});\n\t},\n\n\t/**\n * Decode response as json\n *\n * @return Promise\n */\n\tjson() {\n\t\tvar _this2 = this;\n\n\t\treturn consumeBody.call(this).then(function (buffer) {\n\t\t\ttry {\n\t\t\t\treturn JSON.parse(buffer.toString());\n\t\t\t} catch (err) {\n\t\t\t\treturn Body.Promise.reject(new FetchError(`invalid json response body at ${_this2.url} reason: ${err.message}`, 'invalid-json'));\n\t\t\t}\n\t\t});\n\t},\n\n\t/**\n * Decode response as text\n *\n * @return Promise\n */\n\ttext() {\n\t\treturn consumeBody.call(this).then(function (buffer) {\n\t\t\treturn buffer.toString();\n\t\t});\n\t},\n\n\t/**\n * Decode response as buffer (non-spec api)\n *\n * @return Promise\n */\n\tbuffer() {\n\t\treturn consumeBody.call(this);\n\t},\n\n\t/**\n * Decode response as text, while automatically detecting the encoding and\n * trying to decode to UTF-8 (non-spec api)\n *\n * @return Promise\n */\n\ttextConverted() {\n\t\tvar _this3 = this;\n\n\t\treturn consumeBody.call(this).then(function (buffer) {\n\t\t\treturn convertBody(buffer, _this3.headers);\n\t\t});\n\t}\n};\n\n// In browsers, all properties are enumerable.\nObject.defineProperties(Body.prototype, {\n\tbody: { enumerable: true },\n\tbodyUsed: { enumerable: true },\n\tarrayBuffer: { enumerable: true },\n\tblob: { enumerable: true },\n\tjson: { enumerable: true },\n\ttext: { enumerable: true }\n});\n\nBody.mixIn = function (proto) {\n\tfor (const name of Object.getOwnPropertyNames(Body.prototype)) {\n\t\t// istanbul ignore else: future proof\n\t\tif (!(name in proto)) {\n\t\t\tconst desc = Object.getOwnPropertyDescriptor(Body.prototype, name);\n\t\t\tObject.defineProperty(proto, name, desc);\n\t\t}\n\t}\n};\n\n/**\n * Consume and convert an entire Body to a Buffer.\n *\n * Ref: https://fetch.spec.whatwg.org/#concept-body-consume-body\n *\n * @return Promise\n */\nfunction consumeBody() {\n\tvar _this4 = this;\n\n\tif (this[INTERNALS].disturbed) {\n\t\treturn Body.Promise.reject(new TypeError(`body used already for: ${this.url}`));\n\t}\n\n\tthis[INTERNALS].disturbed = true;\n\n\tif (this[INTERNALS].error) {\n\t\treturn Body.Promise.reject(this[INTERNALS].error);\n\t}\n\n\tlet body = this.body;\n\n\t// body is null\n\tif (body === null) {\n\t\treturn Body.Promise.resolve(Buffer.alloc(0));\n\t}\n\n\t// body is blob\n\tif (isBlob(body)) {\n\t\tbody = body.stream();\n\t}\n\n\t// body is buffer\n\tif (Buffer.isBuffer(body)) {\n\t\treturn Body.Promise.resolve(body);\n\t}\n\n\t// istanbul ignore if: should never happen\n\tif (!(body instanceof Stream)) {\n\t\treturn Body.Promise.resolve(Buffer.alloc(0));\n\t}\n\n\t// body is stream\n\t// get ready to actually consume the body\n\tlet accum = [];\n\tlet accumBytes = 0;\n\tlet abort = false;\n\n\treturn new Body.Promise(function (resolve, reject) {\n\t\tlet resTimeout;\n\n\t\t// allow timeout on slow response body\n\t\tif (_this4.timeout) {\n\t\t\tresTimeout = setTimeout(function () {\n\t\t\t\tabort = true;\n\t\t\t\treject(new FetchError(`Response timeout while trying to fetch ${_this4.url} (over ${_this4.timeout}ms)`, 'body-timeout'));\n\t\t\t}, _this4.timeout);\n\t\t}\n\n\t\t// handle stream errors\n\t\tbody.on('error', function (err) {\n\t\t\tif (err.name === 'AbortError') {\n\t\t\t\t// if the request was aborted, reject with this Error\n\t\t\t\tabort = true;\n\t\t\t\treject(err);\n\t\t\t} else {\n\t\t\t\t// other errors, such as incorrect content-encoding\n\t\t\t\treject(new FetchError(`Invalid response body while trying to fetch ${_this4.url}: ${err.message}`, 'system', err));\n\t\t\t}\n\t\t});\n\n\t\tbody.on('data', function (chunk) {\n\t\t\tif (abort || chunk === null) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (_this4.size && accumBytes + chunk.length > _this4.size) {\n\t\t\t\tabort = true;\n\t\t\t\treject(new FetchError(`content size at ${_this4.url} over limit: ${_this4.size}`, 'max-size'));\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\taccumBytes += chunk.length;\n\t\t\taccum.push(chunk);\n\t\t});\n\n\t\tbody.on('end', function () {\n\t\t\tif (abort) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tclearTimeout(resTimeout);\n\n\t\t\ttry {\n\t\t\t\tresolve(Buffer.concat(accum, accumBytes));\n\t\t\t} catch (err) {\n\t\t\t\t// handle streams that have accumulated too much data (issue #414)\n\t\t\t\treject(new FetchError(`Could not create Buffer from response body for ${_this4.url}: ${err.message}`, 'system', err));\n\t\t\t}\n\t\t});\n\t});\n}\n\n/**\n * Detect buffer encoding and convert to target encoding\n * ref: http://www.w3.org/TR/2011/WD-html5-20110113/parsing.html#determining-the-character-encoding\n *\n * @param Buffer buffer Incoming buffer\n * @param String encoding Target encoding\n * @return String\n */\nfunction convertBody(buffer, headers) {\n\tif (typeof convert !== 'function') {\n\t\tthrow new Error('The package `encoding` must be installed to use the textConverted() function');\n\t}\n\n\tconst ct = headers.get('content-type');\n\tlet charset = 'utf-8';\n\tlet res, str;\n\n\t// header\n\tif (ct) {\n\t\tres = /charset=([^;]*)/i.exec(ct);\n\t}\n\n\t// no charset in content type, peek at response body for at most 1024 bytes\n\tstr = buffer.slice(0, 1024).toString();\n\n\t// html5\n\tif (!res && str) {\n\t\tres = / 0 && arguments[0] !== undefined ? arguments[0] : undefined;\n\n\t\tthis[MAP] = Object.create(null);\n\n\t\tif (init instanceof Headers) {\n\t\t\tconst rawHeaders = init.raw();\n\t\t\tconst headerNames = Object.keys(rawHeaders);\n\n\t\t\tfor (const headerName of headerNames) {\n\t\t\t\tfor (const value of rawHeaders[headerName]) {\n\t\t\t\t\tthis.append(headerName, value);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn;\n\t\t}\n\n\t\t// We don't worry about converting prop to ByteString here as append()\n\t\t// will handle it.\n\t\tif (init == null) ; else if (typeof init === 'object') {\n\t\t\tconst method = init[Symbol.iterator];\n\t\t\tif (method != null) {\n\t\t\t\tif (typeof method !== 'function') {\n\t\t\t\t\tthrow new TypeError('Header pairs must be iterable');\n\t\t\t\t}\n\n\t\t\t\t// sequence>\n\t\t\t\t// Note: per spec we have to first exhaust the lists then process them\n\t\t\t\tconst pairs = [];\n\t\t\t\tfor (const pair of init) {\n\t\t\t\t\tif (typeof pair !== 'object' || typeof pair[Symbol.iterator] !== 'function') {\n\t\t\t\t\t\tthrow new TypeError('Each header pair must be iterable');\n\t\t\t\t\t}\n\t\t\t\t\tpairs.push(Array.from(pair));\n\t\t\t\t}\n\n\t\t\t\tfor (const pair of pairs) {\n\t\t\t\t\tif (pair.length !== 2) {\n\t\t\t\t\t\tthrow new TypeError('Each header pair must be a name/value tuple');\n\t\t\t\t\t}\n\t\t\t\t\tthis.append(pair[0], pair[1]);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// record\n\t\t\t\tfor (const key of Object.keys(init)) {\n\t\t\t\t\tconst value = init[key];\n\t\t\t\t\tthis.append(key, value);\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tthrow new TypeError('Provided initializer must be an object');\n\t\t}\n\t}\n\n\t/**\n * Return combined header value given name\n *\n * @param String name Header name\n * @return Mixed\n */\n\tget(name) {\n\t\tname = `${name}`;\n\t\tvalidateName(name);\n\t\tconst key = find(this[MAP], name);\n\t\tif (key === undefined) {\n\t\t\treturn null;\n\t\t}\n\n\t\treturn this[MAP][key].join(', ');\n\t}\n\n\t/**\n * Iterate over all headers\n *\n * @param Function callback Executed for each item with parameters (value, name, thisArg)\n * @param Boolean thisArg `this` context for callback function\n * @return Void\n */\n\tforEach(callback) {\n\t\tlet thisArg = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : undefined;\n\n\t\tlet pairs = getHeaders(this);\n\t\tlet i = 0;\n\t\twhile (i < pairs.length) {\n\t\t\tvar _pairs$i = pairs[i];\n\t\t\tconst name = _pairs$i[0],\n\t\t\t value = _pairs$i[1];\n\n\t\t\tcallback.call(thisArg, value, name, this);\n\t\t\tpairs = getHeaders(this);\n\t\t\ti++;\n\t\t}\n\t}\n\n\t/**\n * Overwrite header values given name\n *\n * @param String name Header name\n * @param String value Header value\n * @return Void\n */\n\tset(name, value) {\n\t\tname = `${name}`;\n\t\tvalue = `${value}`;\n\t\tvalidateName(name);\n\t\tvalidateValue(value);\n\t\tconst key = find(this[MAP], name);\n\t\tthis[MAP][key !== undefined ? key : name] = [value];\n\t}\n\n\t/**\n * Append a value onto existing header\n *\n * @param String name Header name\n * @param String value Header value\n * @return Void\n */\n\tappend(name, value) {\n\t\tname = `${name}`;\n\t\tvalue = `${value}`;\n\t\tvalidateName(name);\n\t\tvalidateValue(value);\n\t\tconst key = find(this[MAP], name);\n\t\tif (key !== undefined) {\n\t\t\tthis[MAP][key].push(value);\n\t\t} else {\n\t\t\tthis[MAP][name] = [value];\n\t\t}\n\t}\n\n\t/**\n * Check for header name existence\n *\n * @param String name Header name\n * @return Boolean\n */\n\thas(name) {\n\t\tname = `${name}`;\n\t\tvalidateName(name);\n\t\treturn find(this[MAP], name) !== undefined;\n\t}\n\n\t/**\n * Delete all header values given name\n *\n * @param String name Header name\n * @return Void\n */\n\tdelete(name) {\n\t\tname = `${name}`;\n\t\tvalidateName(name);\n\t\tconst key = find(this[MAP], name);\n\t\tif (key !== undefined) {\n\t\t\tdelete this[MAP][key];\n\t\t}\n\t}\n\n\t/**\n * Return raw headers (non-spec api)\n *\n * @return Object\n */\n\traw() {\n\t\treturn this[MAP];\n\t}\n\n\t/**\n * Get an iterator on keys.\n *\n * @return Iterator\n */\n\tkeys() {\n\t\treturn createHeadersIterator(this, 'key');\n\t}\n\n\t/**\n * Get an iterator on values.\n *\n * @return Iterator\n */\n\tvalues() {\n\t\treturn createHeadersIterator(this, 'value');\n\t}\n\n\t/**\n * Get an iterator on entries.\n *\n * This is the default iterator of the Headers object.\n *\n * @return Iterator\n */\n\t[Symbol.iterator]() {\n\t\treturn createHeadersIterator(this, 'key+value');\n\t}\n}\nHeaders.prototype.entries = Headers.prototype[Symbol.iterator];\n\nObject.defineProperty(Headers.prototype, Symbol.toStringTag, {\n\tvalue: 'Headers',\n\twritable: false,\n\tenumerable: false,\n\tconfigurable: true\n});\n\nObject.defineProperties(Headers.prototype, {\n\tget: { enumerable: true },\n\tforEach: { enumerable: true },\n\tset: { enumerable: true },\n\tappend: { enumerable: true },\n\thas: { enumerable: true },\n\tdelete: { enumerable: true },\n\tkeys: { enumerable: true },\n\tvalues: { enumerable: true },\n\tentries: { enumerable: true }\n});\n\nfunction getHeaders(headers) {\n\tlet kind = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'key+value';\n\n\tconst keys = Object.keys(headers[MAP]).sort();\n\treturn keys.map(kind === 'key' ? function (k) {\n\t\treturn k.toLowerCase();\n\t} : kind === 'value' ? function (k) {\n\t\treturn headers[MAP][k].join(', ');\n\t} : function (k) {\n\t\treturn [k.toLowerCase(), headers[MAP][k].join(', ')];\n\t});\n}\n\nconst INTERNAL = Symbol('internal');\n\nfunction createHeadersIterator(target, kind) {\n\tconst iterator = Object.create(HeadersIteratorPrototype);\n\titerator[INTERNAL] = {\n\t\ttarget,\n\t\tkind,\n\t\tindex: 0\n\t};\n\treturn iterator;\n}\n\nconst HeadersIteratorPrototype = Object.setPrototypeOf({\n\tnext() {\n\t\t// istanbul ignore if\n\t\tif (!this || Object.getPrototypeOf(this) !== HeadersIteratorPrototype) {\n\t\t\tthrow new TypeError('Value of `this` is not a HeadersIterator');\n\t\t}\n\n\t\tvar _INTERNAL = this[INTERNAL];\n\t\tconst target = _INTERNAL.target,\n\t\t kind = _INTERNAL.kind,\n\t\t index = _INTERNAL.index;\n\n\t\tconst values = getHeaders(target, kind);\n\t\tconst len = values.length;\n\t\tif (index >= len) {\n\t\t\treturn {\n\t\t\t\tvalue: undefined,\n\t\t\t\tdone: true\n\t\t\t};\n\t\t}\n\n\t\tthis[INTERNAL].index = index + 1;\n\n\t\treturn {\n\t\t\tvalue: values[index],\n\t\t\tdone: false\n\t\t};\n\t}\n}, Object.getPrototypeOf(Object.getPrototypeOf([][Symbol.iterator]())));\n\nObject.defineProperty(HeadersIteratorPrototype, Symbol.toStringTag, {\n\tvalue: 'HeadersIterator',\n\twritable: false,\n\tenumerable: false,\n\tconfigurable: true\n});\n\n/**\n * Export the Headers object in a form that Node.js can consume.\n *\n * @param Headers headers\n * @return Object\n */\nfunction exportNodeCompatibleHeaders(headers) {\n\tconst obj = Object.assign({ __proto__: null }, headers[MAP]);\n\n\t// http.request() only supports string as Host header. This hack makes\n\t// specifying custom Host header possible.\n\tconst hostHeaderKey = find(headers[MAP], 'Host');\n\tif (hostHeaderKey !== undefined) {\n\t\tobj[hostHeaderKey] = obj[hostHeaderKey][0];\n\t}\n\n\treturn obj;\n}\n\n/**\n * Create a Headers object from an object of headers, ignoring those that do\n * not conform to HTTP grammar productions.\n *\n * @param Object obj Object of headers\n * @return Headers\n */\nfunction createHeadersLenient(obj) {\n\tconst headers = new Headers();\n\tfor (const name of Object.keys(obj)) {\n\t\tif (invalidTokenRegex.test(name)) {\n\t\t\tcontinue;\n\t\t}\n\t\tif (Array.isArray(obj[name])) {\n\t\t\tfor (const val of obj[name]) {\n\t\t\t\tif (invalidHeaderCharRegex.test(val)) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tif (headers[MAP][name] === undefined) {\n\t\t\t\t\theaders[MAP][name] = [val];\n\t\t\t\t} else {\n\t\t\t\t\theaders[MAP][name].push(val);\n\t\t\t\t}\n\t\t\t}\n\t\t} else if (!invalidHeaderCharRegex.test(obj[name])) {\n\t\t\theaders[MAP][name] = [obj[name]];\n\t\t}\n\t}\n\treturn headers;\n}\n\nconst INTERNALS$1 = Symbol('Response internals');\n\n// fix an issue where \"STATUS_CODES\" aren't a named export for node <10\nconst STATUS_CODES = http.STATUS_CODES;\n\n/**\n * Response class\n *\n * @param Stream body Readable stream\n * @param Object opts Response options\n * @return Void\n */\nclass Response {\n\tconstructor() {\n\t\tlet body = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;\n\t\tlet opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n\t\tBody.call(this, body, opts);\n\n\t\tconst status = opts.status || 200;\n\t\tconst headers = new Headers(opts.headers);\n\n\t\tif (body != null && !headers.has('Content-Type')) {\n\t\t\tconst contentType = extractContentType(body);\n\t\t\tif (contentType) {\n\t\t\t\theaders.append('Content-Type', contentType);\n\t\t\t}\n\t\t}\n\n\t\tthis[INTERNALS$1] = {\n\t\t\turl: opts.url,\n\t\t\tstatus,\n\t\t\tstatusText: opts.statusText || STATUS_CODES[status],\n\t\t\theaders,\n\t\t\tcounter: opts.counter\n\t\t};\n\t}\n\n\tget url() {\n\t\treturn this[INTERNALS$1].url || '';\n\t}\n\n\tget status() {\n\t\treturn this[INTERNALS$1].status;\n\t}\n\n\t/**\n * Convenience property representing if the request ended normally\n */\n\tget ok() {\n\t\treturn this[INTERNALS$1].status >= 200 && this[INTERNALS$1].status < 300;\n\t}\n\n\tget redirected() {\n\t\treturn this[INTERNALS$1].counter > 0;\n\t}\n\n\tget statusText() {\n\t\treturn this[INTERNALS$1].statusText;\n\t}\n\n\tget headers() {\n\t\treturn this[INTERNALS$1].headers;\n\t}\n\n\t/**\n * Clone this response\n *\n * @return Response\n */\n\tclone() {\n\t\treturn new Response(clone(this), {\n\t\t\turl: this.url,\n\t\t\tstatus: this.status,\n\t\t\tstatusText: this.statusText,\n\t\t\theaders: this.headers,\n\t\t\tok: this.ok,\n\t\t\tredirected: this.redirected\n\t\t});\n\t}\n}\n\nBody.mixIn(Response.prototype);\n\nObject.defineProperties(Response.prototype, {\n\turl: { enumerable: true },\n\tstatus: { enumerable: true },\n\tok: { enumerable: true },\n\tredirected: { enumerable: true },\n\tstatusText: { enumerable: true },\n\theaders: { enumerable: true },\n\tclone: { enumerable: true }\n});\n\nObject.defineProperty(Response.prototype, Symbol.toStringTag, {\n\tvalue: 'Response',\n\twritable: false,\n\tenumerable: false,\n\tconfigurable: true\n});\n\nconst INTERNALS$2 = Symbol('Request internals');\nconst URL = Url.URL || whatwgUrl.URL;\n\n// fix an issue where \"format\", \"parse\" aren't a named export for node <10\nconst parse_url = Url.parse;\nconst format_url = Url.format;\n\n/**\n * Wrapper around `new URL` to handle arbitrary URLs\n *\n * @param {string} urlStr\n * @return {void}\n */\nfunction parseURL(urlStr) {\n\t/*\n \tCheck whether the URL is absolute or not\n \t\tScheme: https://tools.ietf.org/html/rfc3986#section-3.1\n \tAbsolute URL: https://tools.ietf.org/html/rfc3986#section-4.3\n */\n\tif (/^[a-zA-Z][a-zA-Z\\d+\\-.]*:/.exec(urlStr)) {\n\t\turlStr = new URL(urlStr).toString();\n\t}\n\n\t// Fallback to old implementation for arbitrary URLs\n\treturn parse_url(urlStr);\n}\n\nconst streamDestructionSupported = 'destroy' in Stream.Readable.prototype;\n\n/**\n * Check if a value is an instance of Request.\n *\n * @param Mixed input\n * @return Boolean\n */\nfunction isRequest(input) {\n\treturn typeof input === 'object' && typeof input[INTERNALS$2] === 'object';\n}\n\nfunction isAbortSignal(signal) {\n\tconst proto = signal && typeof signal === 'object' && Object.getPrototypeOf(signal);\n\treturn !!(proto && proto.constructor.name === 'AbortSignal');\n}\n\n/**\n * Request class\n *\n * @param Mixed input Url or Request instance\n * @param Object init Custom options\n * @return Void\n */\nclass Request {\n\tconstructor(input) {\n\t\tlet init = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n\t\tlet parsedURL;\n\n\t\t// normalize input\n\t\tif (!isRequest(input)) {\n\t\t\tif (input && input.href) {\n\t\t\t\t// in order to support Node.js' Url objects; though WHATWG's URL objects\n\t\t\t\t// will fall into this branch also (since their `toString()` will return\n\t\t\t\t// `href` property anyway)\n\t\t\t\tparsedURL = parseURL(input.href);\n\t\t\t} else {\n\t\t\t\t// coerce input to a string before attempting to parse\n\t\t\t\tparsedURL = parseURL(`${input}`);\n\t\t\t}\n\t\t\tinput = {};\n\t\t} else {\n\t\t\tparsedURL = parseURL(input.url);\n\t\t}\n\n\t\tlet method = init.method || input.method || 'GET';\n\t\tmethod = method.toUpperCase();\n\n\t\tif ((init.body != null || isRequest(input) && input.body !== null) && (method === 'GET' || method === 'HEAD')) {\n\t\t\tthrow new TypeError('Request with GET/HEAD method cannot have body');\n\t\t}\n\n\t\tlet inputBody = init.body != null ? init.body : isRequest(input) && input.body !== null ? clone(input) : null;\n\n\t\tBody.call(this, inputBody, {\n\t\t\ttimeout: init.timeout || input.timeout || 0,\n\t\t\tsize: init.size || input.size || 0\n\t\t});\n\n\t\tconst headers = new Headers(init.headers || input.headers || {});\n\n\t\tif (inputBody != null && !headers.has('Content-Type')) {\n\t\t\tconst contentType = extractContentType(inputBody);\n\t\t\tif (contentType) {\n\t\t\t\theaders.append('Content-Type', contentType);\n\t\t\t}\n\t\t}\n\n\t\tlet signal = isRequest(input) ? input.signal : null;\n\t\tif ('signal' in init) signal = init.signal;\n\n\t\tif (signal != null && !isAbortSignal(signal)) {\n\t\t\tthrow new TypeError('Expected signal to be an instanceof AbortSignal');\n\t\t}\n\n\t\tthis[INTERNALS$2] = {\n\t\t\tmethod,\n\t\t\tredirect: init.redirect || input.redirect || 'follow',\n\t\t\theaders,\n\t\t\tparsedURL,\n\t\t\tsignal\n\t\t};\n\n\t\t// node-fetch-only options\n\t\tthis.follow = init.follow !== undefined ? init.follow : input.follow !== undefined ? input.follow : 20;\n\t\tthis.compress = init.compress !== undefined ? init.compress : input.compress !== undefined ? input.compress : true;\n\t\tthis.counter = init.counter || input.counter || 0;\n\t\tthis.agent = init.agent || input.agent;\n\t}\n\n\tget method() {\n\t\treturn this[INTERNALS$2].method;\n\t}\n\n\tget url() {\n\t\treturn format_url(this[INTERNALS$2].parsedURL);\n\t}\n\n\tget headers() {\n\t\treturn this[INTERNALS$2].headers;\n\t}\n\n\tget redirect() {\n\t\treturn this[INTERNALS$2].redirect;\n\t}\n\n\tget signal() {\n\t\treturn this[INTERNALS$2].signal;\n\t}\n\n\t/**\n * Clone this request\n *\n * @return Request\n */\n\tclone() {\n\t\treturn new Request(this);\n\t}\n}\n\nBody.mixIn(Request.prototype);\n\nObject.defineProperty(Request.prototype, Symbol.toStringTag, {\n\tvalue: 'Request',\n\twritable: false,\n\tenumerable: false,\n\tconfigurable: true\n});\n\nObject.defineProperties(Request.prototype, {\n\tmethod: { enumerable: true },\n\turl: { enumerable: true },\n\theaders: { enumerable: true },\n\tredirect: { enumerable: true },\n\tclone: { enumerable: true },\n\tsignal: { enumerable: true }\n});\n\n/**\n * Convert a Request to Node.js http request options.\n *\n * @param Request A Request instance\n * @return Object The options object to be passed to http.request\n */\nfunction getNodeRequestOptions(request) {\n\tconst parsedURL = request[INTERNALS$2].parsedURL;\n\tconst headers = new Headers(request[INTERNALS$2].headers);\n\n\t// fetch step 1.3\n\tif (!headers.has('Accept')) {\n\t\theaders.set('Accept', '*/*');\n\t}\n\n\t// Basic fetch\n\tif (!parsedURL.protocol || !parsedURL.hostname) {\n\t\tthrow new TypeError('Only absolute URLs are supported');\n\t}\n\n\tif (!/^https?:$/.test(parsedURL.protocol)) {\n\t\tthrow new TypeError('Only HTTP(S) protocols are supported');\n\t}\n\n\tif (request.signal && request.body instanceof Stream.Readable && !streamDestructionSupported) {\n\t\tthrow new Error('Cancellation of streamed requests with AbortSignal is not supported in node < 8');\n\t}\n\n\t// HTTP-network-or-cache fetch steps 2.4-2.7\n\tlet contentLengthValue = null;\n\tif (request.body == null && /^(POST|PUT)$/i.test(request.method)) {\n\t\tcontentLengthValue = '0';\n\t}\n\tif (request.body != null) {\n\t\tconst totalBytes = getTotalBytes(request);\n\t\tif (typeof totalBytes === 'number') {\n\t\t\tcontentLengthValue = String(totalBytes);\n\t\t}\n\t}\n\tif (contentLengthValue) {\n\t\theaders.set('Content-Length', contentLengthValue);\n\t}\n\n\t// HTTP-network-or-cache fetch step 2.11\n\tif (!headers.has('User-Agent')) {\n\t\theaders.set('User-Agent', 'node-fetch/1.0 (+https://github.com/bitinn/node-fetch)');\n\t}\n\n\t// HTTP-network-or-cache fetch step 2.15\n\tif (request.compress && !headers.has('Accept-Encoding')) {\n\t\theaders.set('Accept-Encoding', 'gzip,deflate');\n\t}\n\n\tlet agent = request.agent;\n\tif (typeof agent === 'function') {\n\t\tagent = agent(parsedURL);\n\t}\n\n\t// HTTP-network fetch step 4.2\n\t// chunked encoding is handled by Node.js\n\n\treturn Object.assign({}, parsedURL, {\n\t\tmethod: request.method,\n\t\theaders: exportNodeCompatibleHeaders(headers),\n\t\tagent\n\t});\n}\n\n/**\n * abort-error.js\n *\n * AbortError interface for cancelled requests\n */\n\n/**\n * Create AbortError instance\n *\n * @param String message Error message for human\n * @return AbortError\n */\nfunction AbortError(message) {\n Error.call(this, message);\n\n this.type = 'aborted';\n this.message = message;\n\n // hide custom error implementation details from end-users\n Error.captureStackTrace(this, this.constructor);\n}\n\nAbortError.prototype = Object.create(Error.prototype);\nAbortError.prototype.constructor = AbortError;\nAbortError.prototype.name = 'AbortError';\n\nconst URL$1 = Url.URL || whatwgUrl.URL;\n\n// fix an issue where \"PassThrough\", \"resolve\" aren't a named export for node <10\nconst PassThrough$1 = Stream.PassThrough;\n\nconst isDomainOrSubdomain = function isDomainOrSubdomain(destination, original) {\n\tconst orig = new URL$1(original).hostname;\n\tconst dest = new URL$1(destination).hostname;\n\n\treturn orig === dest || orig[orig.length - dest.length - 1] === '.' && orig.endsWith(dest);\n};\n\n/**\n * isSameProtocol reports whether the two provided URLs use the same protocol.\n *\n * Both domains must already be in canonical form.\n * @param {string|URL} original\n * @param {string|URL} destination\n */\nconst isSameProtocol = function isSameProtocol(destination, original) {\n\tconst orig = new URL$1(original).protocol;\n\tconst dest = new URL$1(destination).protocol;\n\n\treturn orig === dest;\n};\n\n/**\n * Fetch function\n *\n * @param Mixed url Absolute url or Request instance\n * @param Object opts Fetch options\n * @return Promise\n */\nfunction fetch(url, opts) {\n\n\t// allow custom promise\n\tif (!fetch.Promise) {\n\t\tthrow new Error('native promise missing, set fetch.Promise to your favorite alternative');\n\t}\n\n\tBody.Promise = fetch.Promise;\n\n\t// wrap http.request into fetch\n\treturn new fetch.Promise(function (resolve, reject) {\n\t\t// build request object\n\t\tconst request = new Request(url, opts);\n\t\tconst options = getNodeRequestOptions(request);\n\n\t\tconst send = (options.protocol === 'https:' ? https : http).request;\n\t\tconst signal = request.signal;\n\n\t\tlet response = null;\n\n\t\tconst abort = function abort() {\n\t\t\tlet error = new AbortError('The user aborted a request.');\n\t\t\treject(error);\n\t\t\tif (request.body && request.body instanceof Stream.Readable) {\n\t\t\t\tdestroyStream(request.body, error);\n\t\t\t}\n\t\t\tif (!response || !response.body) return;\n\t\t\tresponse.body.emit('error', error);\n\t\t};\n\n\t\tif (signal && signal.aborted) {\n\t\t\tabort();\n\t\t\treturn;\n\t\t}\n\n\t\tconst abortAndFinalize = function abortAndFinalize() {\n\t\t\tabort();\n\t\t\tfinalize();\n\t\t};\n\n\t\t// send request\n\t\tconst req = send(options);\n\t\tlet reqTimeout;\n\n\t\tif (signal) {\n\t\t\tsignal.addEventListener('abort', abortAndFinalize);\n\t\t}\n\n\t\tfunction finalize() {\n\t\t\treq.abort();\n\t\t\tif (signal) signal.removeEventListener('abort', abortAndFinalize);\n\t\t\tclearTimeout(reqTimeout);\n\t\t}\n\n\t\tif (request.timeout) {\n\t\t\treq.once('socket', function (socket) {\n\t\t\t\treqTimeout = setTimeout(function () {\n\t\t\t\t\treject(new FetchError(`network timeout at: ${request.url}`, 'request-timeout'));\n\t\t\t\t\tfinalize();\n\t\t\t\t}, request.timeout);\n\t\t\t});\n\t\t}\n\n\t\treq.on('error', function (err) {\n\t\t\treject(new FetchError(`request to ${request.url} failed, reason: ${err.message}`, 'system', err));\n\n\t\t\tif (response && response.body) {\n\t\t\t\tdestroyStream(response.body, err);\n\t\t\t}\n\n\t\t\tfinalize();\n\t\t});\n\n\t\tfixResponseChunkedTransferBadEnding(req, function (err) {\n\t\t\tif (signal && signal.aborted) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (response && response.body) {\n\t\t\t\tdestroyStream(response.body, err);\n\t\t\t}\n\t\t});\n\n\t\t/* c8 ignore next 18 */\n\t\tif (parseInt(process.version.substring(1)) < 14) {\n\t\t\t// Before Node.js 14, pipeline() does not fully support async iterators and does not always\n\t\t\t// properly handle when the socket close/end events are out of order.\n\t\t\treq.on('socket', function (s) {\n\t\t\t\ts.addListener('close', function (hadError) {\n\t\t\t\t\t// if a data listener is still present we didn't end cleanly\n\t\t\t\t\tconst hasDataListener = s.listenerCount('data') > 0;\n\n\t\t\t\t\t// if end happened before close but the socket didn't emit an error, do it now\n\t\t\t\t\tif (response && hasDataListener && !hadError && !(signal && signal.aborted)) {\n\t\t\t\t\t\tconst err = new Error('Premature close');\n\t\t\t\t\t\terr.code = 'ERR_STREAM_PREMATURE_CLOSE';\n\t\t\t\t\t\tresponse.body.emit('error', err);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t});\n\t\t}\n\n\t\treq.on('response', function (res) {\n\t\t\tclearTimeout(reqTimeout);\n\n\t\t\tconst headers = createHeadersLenient(res.headers);\n\n\t\t\t// HTTP fetch step 5\n\t\t\tif (fetch.isRedirect(res.statusCode)) {\n\t\t\t\t// HTTP fetch step 5.2\n\t\t\t\tconst location = headers.get('Location');\n\n\t\t\t\t// HTTP fetch step 5.3\n\t\t\t\tlet locationURL = null;\n\t\t\t\ttry {\n\t\t\t\t\tlocationURL = location === null ? null : new URL$1(location, request.url).toString();\n\t\t\t\t} catch (err) {\n\t\t\t\t\t// error here can only be invalid URL in Location: header\n\t\t\t\t\t// do not throw when options.redirect == manual\n\t\t\t\t\t// let the user extract the errorneous redirect URL\n\t\t\t\t\tif (request.redirect !== 'manual') {\n\t\t\t\t\t\treject(new FetchError(`uri requested responds with an invalid redirect URL: ${location}`, 'invalid-redirect'));\n\t\t\t\t\t\tfinalize();\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// HTTP fetch step 5.5\n\t\t\t\tswitch (request.redirect) {\n\t\t\t\t\tcase 'error':\n\t\t\t\t\t\treject(new FetchError(`uri requested responds with a redirect, redirect mode is set to error: ${request.url}`, 'no-redirect'));\n\t\t\t\t\t\tfinalize();\n\t\t\t\t\t\treturn;\n\t\t\t\t\tcase 'manual':\n\t\t\t\t\t\t// node-fetch-specific step: make manual redirect a bit easier to use by setting the Location header value to the resolved URL.\n\t\t\t\t\t\tif (locationURL !== null) {\n\t\t\t\t\t\t\t// handle corrupted header\n\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\theaders.set('Location', locationURL);\n\t\t\t\t\t\t\t} catch (err) {\n\t\t\t\t\t\t\t\t// istanbul ignore next: nodejs server prevent invalid response headers, we can't test this through normal request\n\t\t\t\t\t\t\t\treject(err);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'follow':\n\t\t\t\t\t\t// HTTP-redirect fetch step 2\n\t\t\t\t\t\tif (locationURL === null) {\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// HTTP-redirect fetch step 5\n\t\t\t\t\t\tif (request.counter >= request.follow) {\n\t\t\t\t\t\t\treject(new FetchError(`maximum redirect reached at: ${request.url}`, 'max-redirect'));\n\t\t\t\t\t\t\tfinalize();\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// HTTP-redirect fetch step 6 (counter increment)\n\t\t\t\t\t\t// Create a new Request object.\n\t\t\t\t\t\tconst requestOpts = {\n\t\t\t\t\t\t\theaders: new Headers(request.headers),\n\t\t\t\t\t\t\tfollow: request.follow,\n\t\t\t\t\t\t\tcounter: request.counter + 1,\n\t\t\t\t\t\t\tagent: request.agent,\n\t\t\t\t\t\t\tcompress: request.compress,\n\t\t\t\t\t\t\tmethod: request.method,\n\t\t\t\t\t\t\tbody: request.body,\n\t\t\t\t\t\t\tsignal: request.signal,\n\t\t\t\t\t\t\ttimeout: request.timeout,\n\t\t\t\t\t\t\tsize: request.size\n\t\t\t\t\t\t};\n\n\t\t\t\t\t\tif (!isDomainOrSubdomain(request.url, locationURL) || !isSameProtocol(request.url, locationURL)) {\n\t\t\t\t\t\t\tfor (const name of ['authorization', 'www-authenticate', 'cookie', 'cookie2']) {\n\t\t\t\t\t\t\t\trequestOpts.headers.delete(name);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// HTTP-redirect fetch step 9\n\t\t\t\t\t\tif (res.statusCode !== 303 && request.body && getTotalBytes(request) === null) {\n\t\t\t\t\t\t\treject(new FetchError('Cannot follow redirect with body being a readable stream', 'unsupported-redirect'));\n\t\t\t\t\t\t\tfinalize();\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// HTTP-redirect fetch step 11\n\t\t\t\t\t\tif (res.statusCode === 303 || (res.statusCode === 301 || res.statusCode === 302) && request.method === 'POST') {\n\t\t\t\t\t\t\trequestOpts.method = 'GET';\n\t\t\t\t\t\t\trequestOpts.body = undefined;\n\t\t\t\t\t\t\trequestOpts.headers.delete('content-length');\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// HTTP-redirect fetch step 15\n\t\t\t\t\t\tresolve(fetch(new Request(locationURL, requestOpts)));\n\t\t\t\t\t\tfinalize();\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// prepare response\n\t\t\tres.once('end', function () {\n\t\t\t\tif (signal) signal.removeEventListener('abort', abortAndFinalize);\n\t\t\t});\n\t\t\tlet body = res.pipe(new PassThrough$1());\n\n\t\t\tconst response_options = {\n\t\t\t\turl: request.url,\n\t\t\t\tstatus: res.statusCode,\n\t\t\t\tstatusText: res.statusMessage,\n\t\t\t\theaders: headers,\n\t\t\t\tsize: request.size,\n\t\t\t\ttimeout: request.timeout,\n\t\t\t\tcounter: request.counter\n\t\t\t};\n\n\t\t\t// HTTP-network fetch step 12.1.1.3\n\t\t\tconst codings = headers.get('Content-Encoding');\n\n\t\t\t// HTTP-network fetch step 12.1.1.4: handle content codings\n\n\t\t\t// in following scenarios we ignore compression support\n\t\t\t// 1. compression support is disabled\n\t\t\t// 2. HEAD request\n\t\t\t// 3. no Content-Encoding header\n\t\t\t// 4. no content response (204)\n\t\t\t// 5. content not modified response (304)\n\t\t\tif (!request.compress || request.method === 'HEAD' || codings === null || res.statusCode === 204 || res.statusCode === 304) {\n\t\t\t\tresponse = new Response(body, response_options);\n\t\t\t\tresolve(response);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// For Node v6+\n\t\t\t// Be less strict when decoding compressed responses, since sometimes\n\t\t\t// servers send slightly invalid responses that are still accepted\n\t\t\t// by common browsers.\n\t\t\t// Always using Z_SYNC_FLUSH is what cURL does.\n\t\t\tconst zlibOptions = {\n\t\t\t\tflush: zlib.Z_SYNC_FLUSH,\n\t\t\t\tfinishFlush: zlib.Z_SYNC_FLUSH\n\t\t\t};\n\n\t\t\t// for gzip\n\t\t\tif (codings == 'gzip' || codings == 'x-gzip') {\n\t\t\t\tbody = body.pipe(zlib.createGunzip(zlibOptions));\n\t\t\t\tresponse = new Response(body, response_options);\n\t\t\t\tresolve(response);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// for deflate\n\t\t\tif (codings == 'deflate' || codings == 'x-deflate') {\n\t\t\t\t// handle the infamous raw deflate response from old servers\n\t\t\t\t// a hack for old IIS and Apache servers\n\t\t\t\tconst raw = res.pipe(new PassThrough$1());\n\t\t\t\traw.once('data', function (chunk) {\n\t\t\t\t\t// see http://stackoverflow.com/questions/37519828\n\t\t\t\t\tif ((chunk[0] & 0x0F) === 0x08) {\n\t\t\t\t\t\tbody = body.pipe(zlib.createInflate());\n\t\t\t\t\t} else {\n\t\t\t\t\t\tbody = body.pipe(zlib.createInflateRaw());\n\t\t\t\t\t}\n\t\t\t\t\tresponse = new Response(body, response_options);\n\t\t\t\t\tresolve(response);\n\t\t\t\t});\n\t\t\t\traw.on('end', function () {\n\t\t\t\t\t// some old IIS servers return zero-length OK deflate responses, so 'data' is never emitted.\n\t\t\t\t\tif (!response) {\n\t\t\t\t\t\tresponse = new Response(body, response_options);\n\t\t\t\t\t\tresolve(response);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// for br\n\t\t\tif (codings == 'br' && typeof zlib.createBrotliDecompress === 'function') {\n\t\t\t\tbody = body.pipe(zlib.createBrotliDecompress());\n\t\t\t\tresponse = new Response(body, response_options);\n\t\t\t\tresolve(response);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// otherwise, use response as-is\n\t\t\tresponse = new Response(body, response_options);\n\t\t\tresolve(response);\n\t\t});\n\n\t\twriteToStream(req, request);\n\t});\n}\nfunction fixResponseChunkedTransferBadEnding(request, errorCallback) {\n\tlet socket;\n\n\trequest.on('socket', function (s) {\n\t\tsocket = s;\n\t});\n\n\trequest.on('response', function (response) {\n\t\tconst headers = response.headers;\n\n\t\tif (headers['transfer-encoding'] === 'chunked' && !headers['content-length']) {\n\t\t\tresponse.once('close', function (hadError) {\n\t\t\t\t// tests for socket presence, as in some situations the\n\t\t\t\t// the 'socket' event is not triggered for the request\n\t\t\t\t// (happens in deno), avoids `TypeError`\n\t\t\t\t// if a data listener is still present we didn't end cleanly\n\t\t\t\tconst hasDataListener = socket && socket.listenerCount('data') > 0;\n\n\t\t\t\tif (hasDataListener && !hadError) {\n\t\t\t\t\tconst err = new Error('Premature close');\n\t\t\t\t\terr.code = 'ERR_STREAM_PREMATURE_CLOSE';\n\t\t\t\t\terrorCallback(err);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t});\n}\n\nfunction destroyStream(stream, err) {\n\tif (stream.destroy) {\n\t\tstream.destroy(err);\n\t} else {\n\t\t// node < 8\n\t\tstream.emit('error', err);\n\t\tstream.end();\n\t}\n}\n\n/**\n * Redirect code matching\n *\n * @param Number code Status code\n * @return Boolean\n */\nfetch.isRedirect = function (code) {\n\treturn code === 301 || code === 302 || code === 303 || code === 307 || code === 308;\n};\n\n// expose Promise\nfetch.Promise = global.Promise;\n\nmodule.exports = exports = fetch;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.default = exports;\nexports.Headers = Headers;\nexports.Request = Request;\nexports.Response = Response;\nexports.FetchError = FetchError;\nexports.AbortError = AbortError;\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.installBicepCliWithArch = exports.getBicepCliDownloadUrl = void 0;\nconst path_1 = __importDefault(require(\"path\"));\nconst promises_1 = __importDefault(require(\"fs/promises\"));\nconst node_fetch_1 = __importDefault(require(\"node-fetch\"));\nconst downloadBaseUrl = 'https://downloads.bicep.azure.com';\nconst latestReleaseUrl = `${downloadBaseUrl}/releases/latest`;\nconst downloadUrl = (tag, artifact) => `${downloadBaseUrl}/${tag}/${artifact}`;\nasync function getLatestRelease() {\n const response = await (0, node_fetch_1.default)(latestReleaseUrl);\n if (!response.ok) {\n throw `Failed to find latest release of Bicep CLI. Status code: ${response.status}`;\n }\n const body = await response.json();\n return body['tag_name'];\n}\nfunction getDownloadUrlForTag(osPlat, osArch, tagName) {\n switch (`${osPlat}_${osArch}`.toLowerCase()) {\n case 'win32_x64': return downloadUrl(tagName, 'bicep-win-x64.exe');\n case 'win32_arm64': return downloadUrl(tagName, 'bicep-win-arm64.exe');\n case 'linux_x64': return downloadUrl(tagName, 'bicep-linux-x64');\n case 'linux_arm64': return downloadUrl(tagName, 'bicep-linux-arm64');\n case 'darwin_x64': return downloadUrl(tagName, 'bicep-osx-x64');\n case 'darwin_arm64': return downloadUrl(tagName, 'bicep-osx-arm64');\n default: throw `Bicep CLI is not available for platform ${osPlat} and architecture ${osArch}`;\n }\n}\nasync function getBicepCliDownloadUrl(platform, arch, version) {\n const tagName = version ? `v${version}` : await getLatestRelease();\n return getDownloadUrlForTag(platform, arch, tagName);\n}\nexports.getBicepCliDownloadUrl = getBicepCliDownloadUrl;\nasync function installBicepCliWithArch(basePath, platform, arch, version) {\n const targetFile = platform === 'win32' ? 'bicep.exe' : 'bicep';\n const downloadUrl = await getBicepCliDownloadUrl(platform, arch, version);\n const response = await (0, node_fetch_1.default)(downloadUrl);\n if (!response.ok) {\n throw `Failed to download Bicep CLI. Status code: ${response.status}`;\n }\n const buffer = await response.arrayBuffer();\n const toolPath = path_1.default.join(basePath, targetFile);\n await promises_1.default.writeFile(toolPath, Buffer.from(buffer));\n await promises_1.default.chmod(toolPath, 0o755);\n return toolPath;\n}\nexports.installBicepCliWithArch = installBicepCliWithArch;\n//# sourceMappingURL=install.js.map","\"use strict\";\n/* --------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n * ------------------------------------------------------------------------------------------ */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.stringArray = exports.array = exports.func = exports.error = exports.number = exports.string = exports.boolean = void 0;\nfunction boolean(value) {\n return value === true || value === false;\n}\nexports.boolean = boolean;\nfunction string(value) {\n return typeof value === 'string' || value instanceof String;\n}\nexports.string = string;\nfunction number(value) {\n return typeof value === 'number' || value instanceof Number;\n}\nexports.number = number;\nfunction error(value) {\n return value instanceof Error;\n}\nexports.error = error;\nfunction func(value) {\n return typeof value === 'function';\n}\nexports.func = func;\nfunction array(value) {\n return Array.isArray(value);\n}\nexports.array = array;\nfunction stringArray(value) {\n return array(value) && value.every(elem => string(elem));\n}\nexports.stringArray = stringArray;\n","\"use strict\";\n/* --------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n * ------------------------------------------------------------------------------------------ */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Message = exports.NotificationType9 = exports.NotificationType8 = exports.NotificationType7 = exports.NotificationType6 = exports.NotificationType5 = exports.NotificationType4 = exports.NotificationType3 = exports.NotificationType2 = exports.NotificationType1 = exports.NotificationType0 = exports.NotificationType = exports.RequestType9 = exports.RequestType8 = exports.RequestType7 = exports.RequestType6 = exports.RequestType5 = exports.RequestType4 = exports.RequestType3 = exports.RequestType2 = exports.RequestType1 = exports.RequestType = exports.RequestType0 = exports.AbstractMessageSignature = exports.ParameterStructures = exports.ResponseError = exports.ErrorCodes = void 0;\nconst is = require(\"./is\");\n/**\n * Predefined error codes.\n */\nvar ErrorCodes;\n(function (ErrorCodes) {\n // Defined by JSON RPC\n ErrorCodes.ParseError = -32700;\n ErrorCodes.InvalidRequest = -32600;\n ErrorCodes.MethodNotFound = -32601;\n ErrorCodes.InvalidParams = -32602;\n ErrorCodes.InternalError = -32603;\n /**\n * This is the start range of JSON RPC reserved error codes.\n * It doesn't denote a real error code. No application error codes should\n * be defined between the start and end range. For backwards\n * compatibility the `ServerNotInitialized` and the `UnknownErrorCode`\n * are left in the range.\n *\n * @since 3.16.0\n */\n ErrorCodes.jsonrpcReservedErrorRangeStart = -32099;\n /** @deprecated use jsonrpcReservedErrorRangeStart */\n ErrorCodes.serverErrorStart = -32099;\n /**\n * An error occurred when write a message to the transport layer.\n */\n ErrorCodes.MessageWriteError = -32099;\n /**\n * An error occurred when reading a message from the transport layer.\n */\n ErrorCodes.MessageReadError = -32098;\n /**\n * The connection got disposed or lost and all pending responses got\n * rejected.\n */\n ErrorCodes.PendingResponseRejected = -32097;\n /**\n * The connection is inactive and a use of it failed.\n */\n ErrorCodes.ConnectionInactive = -32096;\n /**\n * Error code indicating that a server received a notification or\n * request before the server has received the `initialize` request.\n */\n ErrorCodes.ServerNotInitialized = -32002;\n ErrorCodes.UnknownErrorCode = -32001;\n /**\n * This is the end range of JSON RPC reserved error codes.\n * It doesn't denote a real error code.\n *\n * @since 3.16.0\n */\n ErrorCodes.jsonrpcReservedErrorRangeEnd = -32000;\n /** @deprecated use jsonrpcReservedErrorRangeEnd */\n ErrorCodes.serverErrorEnd = -32000;\n})(ErrorCodes || (exports.ErrorCodes = ErrorCodes = {}));\n/**\n * An error object return in a response in case a request\n * has failed.\n */\nclass ResponseError extends Error {\n constructor(code, message, data) {\n super(message);\n this.code = is.number(code) ? code : ErrorCodes.UnknownErrorCode;\n this.data = data;\n Object.setPrototypeOf(this, ResponseError.prototype);\n }\n toJson() {\n const result = {\n code: this.code,\n message: this.message\n };\n if (this.data !== undefined) {\n result.data = this.data;\n }\n return result;\n }\n}\nexports.ResponseError = ResponseError;\nclass ParameterStructures {\n constructor(kind) {\n this.kind = kind;\n }\n static is(value) {\n return value === ParameterStructures.auto || value === ParameterStructures.byName || value === ParameterStructures.byPosition;\n }\n toString() {\n return this.kind;\n }\n}\nexports.ParameterStructures = ParameterStructures;\n/**\n * The parameter structure is automatically inferred on the number of parameters\n * and the parameter type in case of a single param.\n */\nParameterStructures.auto = new ParameterStructures('auto');\n/**\n * Forces `byPosition` parameter structure. This is useful if you have a single\n * parameter which has a literal type.\n */\nParameterStructures.byPosition = new ParameterStructures('byPosition');\n/**\n * Forces `byName` parameter structure. This is only useful when having a single\n * parameter. The library will report errors if used with a different number of\n * parameters.\n */\nParameterStructures.byName = new ParameterStructures('byName');\n/**\n * An abstract implementation of a MessageType.\n */\nclass AbstractMessageSignature {\n constructor(method, numberOfParams) {\n this.method = method;\n this.numberOfParams = numberOfParams;\n }\n get parameterStructures() {\n return ParameterStructures.auto;\n }\n}\nexports.AbstractMessageSignature = AbstractMessageSignature;\n/**\n * Classes to type request response pairs\n */\nclass RequestType0 extends AbstractMessageSignature {\n constructor(method) {\n super(method, 0);\n }\n}\nexports.RequestType0 = RequestType0;\nclass RequestType extends AbstractMessageSignature {\n constructor(method, _parameterStructures = ParameterStructures.auto) {\n super(method, 1);\n this._parameterStructures = _parameterStructures;\n }\n get parameterStructures() {\n return this._parameterStructures;\n }\n}\nexports.RequestType = RequestType;\nclass RequestType1 extends AbstractMessageSignature {\n constructor(method, _parameterStructures = ParameterStructures.auto) {\n super(method, 1);\n this._parameterStructures = _parameterStructures;\n }\n get parameterStructures() {\n return this._parameterStructures;\n }\n}\nexports.RequestType1 = RequestType1;\nclass RequestType2 extends AbstractMessageSignature {\n constructor(method) {\n super(method, 2);\n }\n}\nexports.RequestType2 = RequestType2;\nclass RequestType3 extends AbstractMessageSignature {\n constructor(method) {\n super(method, 3);\n }\n}\nexports.RequestType3 = RequestType3;\nclass RequestType4 extends AbstractMessageSignature {\n constructor(method) {\n super(method, 4);\n }\n}\nexports.RequestType4 = RequestType4;\nclass RequestType5 extends AbstractMessageSignature {\n constructor(method) {\n super(method, 5);\n }\n}\nexports.RequestType5 = RequestType5;\nclass RequestType6 extends AbstractMessageSignature {\n constructor(method) {\n super(method, 6);\n }\n}\nexports.RequestType6 = RequestType6;\nclass RequestType7 extends AbstractMessageSignature {\n constructor(method) {\n super(method, 7);\n }\n}\nexports.RequestType7 = RequestType7;\nclass RequestType8 extends AbstractMessageSignature {\n constructor(method) {\n super(method, 8);\n }\n}\nexports.RequestType8 = RequestType8;\nclass RequestType9 extends AbstractMessageSignature {\n constructor(method) {\n super(method, 9);\n }\n}\nexports.RequestType9 = RequestType9;\nclass NotificationType extends AbstractMessageSignature {\n constructor(method, _parameterStructures = ParameterStructures.auto) {\n super(method, 1);\n this._parameterStructures = _parameterStructures;\n }\n get parameterStructures() {\n return this._parameterStructures;\n }\n}\nexports.NotificationType = NotificationType;\nclass NotificationType0 extends AbstractMessageSignature {\n constructor(method) {\n super(method, 0);\n }\n}\nexports.NotificationType0 = NotificationType0;\nclass NotificationType1 extends AbstractMessageSignature {\n constructor(method, _parameterStructures = ParameterStructures.auto) {\n super(method, 1);\n this._parameterStructures = _parameterStructures;\n }\n get parameterStructures() {\n return this._parameterStructures;\n }\n}\nexports.NotificationType1 = NotificationType1;\nclass NotificationType2 extends AbstractMessageSignature {\n constructor(method) {\n super(method, 2);\n }\n}\nexports.NotificationType2 = NotificationType2;\nclass NotificationType3 extends AbstractMessageSignature {\n constructor(method) {\n super(method, 3);\n }\n}\nexports.NotificationType3 = NotificationType3;\nclass NotificationType4 extends AbstractMessageSignature {\n constructor(method) {\n super(method, 4);\n }\n}\nexports.NotificationType4 = NotificationType4;\nclass NotificationType5 extends AbstractMessageSignature {\n constructor(method) {\n super(method, 5);\n }\n}\nexports.NotificationType5 = NotificationType5;\nclass NotificationType6 extends AbstractMessageSignature {\n constructor(method) {\n super(method, 6);\n }\n}\nexports.NotificationType6 = NotificationType6;\nclass NotificationType7 extends AbstractMessageSignature {\n constructor(method) {\n super(method, 7);\n }\n}\nexports.NotificationType7 = NotificationType7;\nclass NotificationType8 extends AbstractMessageSignature {\n constructor(method) {\n super(method, 8);\n }\n}\nexports.NotificationType8 = NotificationType8;\nclass NotificationType9 extends AbstractMessageSignature {\n constructor(method) {\n super(method, 9);\n }\n}\nexports.NotificationType9 = NotificationType9;\nvar Message;\n(function (Message) {\n /**\n * Tests if the given message is a request message\n */\n function isRequest(message) {\n const candidate = message;\n return candidate && is.string(candidate.method) && (is.string(candidate.id) || is.number(candidate.id));\n }\n Message.isRequest = isRequest;\n /**\n * Tests if the given message is a notification message\n */\n function isNotification(message) {\n const candidate = message;\n return candidate && is.string(candidate.method) && message.id === void 0;\n }\n Message.isNotification = isNotification;\n /**\n * Tests if the given message is a response message\n */\n function isResponse(message) {\n const candidate = message;\n return candidate && (candidate.result !== void 0 || !!candidate.error) && (is.string(candidate.id) || is.number(candidate.id) || candidate.id === null);\n }\n Message.isResponse = isResponse;\n})(Message || (exports.Message = Message = {}));\n","\"use strict\";\n/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nvar _a;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.LRUCache = exports.LinkedMap = exports.Touch = void 0;\nvar Touch;\n(function (Touch) {\n Touch.None = 0;\n Touch.First = 1;\n Touch.AsOld = Touch.First;\n Touch.Last = 2;\n Touch.AsNew = Touch.Last;\n})(Touch || (exports.Touch = Touch = {}));\nclass LinkedMap {\n constructor() {\n this[_a] = 'LinkedMap';\n this._map = new Map();\n this._head = undefined;\n this._tail = undefined;\n this._size = 0;\n this._state = 0;\n }\n clear() {\n this._map.clear();\n this._head = undefined;\n this._tail = undefined;\n this._size = 0;\n this._state++;\n }\n isEmpty() {\n return !this._head && !this._tail;\n }\n get size() {\n return this._size;\n }\n get first() {\n return this._head?.value;\n }\n get last() {\n return this._tail?.value;\n }\n has(key) {\n return this._map.has(key);\n }\n get(key, touch = Touch.None) {\n const item = this._map.get(key);\n if (!item) {\n return undefined;\n }\n if (touch !== Touch.None) {\n this.touch(item, touch);\n }\n return item.value;\n }\n set(key, value, touch = Touch.None) {\n let item = this._map.get(key);\n if (item) {\n item.value = value;\n if (touch !== Touch.None) {\n this.touch(item, touch);\n }\n }\n else {\n item = { key, value, next: undefined, previous: undefined };\n switch (touch) {\n case Touch.None:\n this.addItemLast(item);\n break;\n case Touch.First:\n this.addItemFirst(item);\n break;\n case Touch.Last:\n this.addItemLast(item);\n break;\n default:\n this.addItemLast(item);\n break;\n }\n this._map.set(key, item);\n this._size++;\n }\n return this;\n }\n delete(key) {\n return !!this.remove(key);\n }\n remove(key) {\n const item = this._map.get(key);\n if (!item) {\n return undefined;\n }\n this._map.delete(key);\n this.removeItem(item);\n this._size--;\n return item.value;\n }\n shift() {\n if (!this._head && !this._tail) {\n return undefined;\n }\n if (!this._head || !this._tail) {\n throw new Error('Invalid list');\n }\n const item = this._head;\n this._map.delete(item.key);\n this.removeItem(item);\n this._size--;\n return item.value;\n }\n forEach(callbackfn, thisArg) {\n const state = this._state;\n let current = this._head;\n while (current) {\n if (thisArg) {\n callbackfn.bind(thisArg)(current.value, current.key, this);\n }\n else {\n callbackfn(current.value, current.key, this);\n }\n if (this._state !== state) {\n throw new Error(`LinkedMap got modified during iteration.`);\n }\n current = current.next;\n }\n }\n keys() {\n const state = this._state;\n let current = this._head;\n const iterator = {\n [Symbol.iterator]: () => {\n return iterator;\n },\n next: () => {\n if (this._state !== state) {\n throw new Error(`LinkedMap got modified during iteration.`);\n }\n if (current) {\n const result = { value: current.key, done: false };\n current = current.next;\n return result;\n }\n else {\n return { value: undefined, done: true };\n }\n }\n };\n return iterator;\n }\n values() {\n const state = this._state;\n let current = this._head;\n const iterator = {\n [Symbol.iterator]: () => {\n return iterator;\n },\n next: () => {\n if (this._state !== state) {\n throw new Error(`LinkedMap got modified during iteration.`);\n }\n if (current) {\n const result = { value: current.value, done: false };\n current = current.next;\n return result;\n }\n else {\n return { value: undefined, done: true };\n }\n }\n };\n return iterator;\n }\n entries() {\n const state = this._state;\n let current = this._head;\n const iterator = {\n [Symbol.iterator]: () => {\n return iterator;\n },\n next: () => {\n if (this._state !== state) {\n throw new Error(`LinkedMap got modified during iteration.`);\n }\n if (current) {\n const result = { value: [current.key, current.value], done: false };\n current = current.next;\n return result;\n }\n else {\n return { value: undefined, done: true };\n }\n }\n };\n return iterator;\n }\n [(_a = Symbol.toStringTag, Symbol.iterator)]() {\n return this.entries();\n }\n trimOld(newSize) {\n if (newSize >= this.size) {\n return;\n }\n if (newSize === 0) {\n this.clear();\n return;\n }\n let current = this._head;\n let currentSize = this.size;\n while (current && currentSize > newSize) {\n this._map.delete(current.key);\n current = current.next;\n currentSize--;\n }\n this._head = current;\n this._size = currentSize;\n if (current) {\n current.previous = undefined;\n }\n this._state++;\n }\n addItemFirst(item) {\n // First time Insert\n if (!this._head && !this._tail) {\n this._tail = item;\n }\n else if (!this._head) {\n throw new Error('Invalid list');\n }\n else {\n item.next = this._head;\n this._head.previous = item;\n }\n this._head = item;\n this._state++;\n }\n addItemLast(item) {\n // First time Insert\n if (!this._head && !this._tail) {\n this._head = item;\n }\n else if (!this._tail) {\n throw new Error('Invalid list');\n }\n else {\n item.previous = this._tail;\n this._tail.next = item;\n }\n this._tail = item;\n this._state++;\n }\n removeItem(item) {\n if (item === this._head && item === this._tail) {\n this._head = undefined;\n this._tail = undefined;\n }\n else if (item === this._head) {\n // This can only happened if size === 1 which is handle\n // by the case above.\n if (!item.next) {\n throw new Error('Invalid list');\n }\n item.next.previous = undefined;\n this._head = item.next;\n }\n else if (item === this._tail) {\n // This can only happened if size === 1 which is handle\n // by the case above.\n if (!item.previous) {\n throw new Error('Invalid list');\n }\n item.previous.next = undefined;\n this._tail = item.previous;\n }\n else {\n const next = item.next;\n const previous = item.previous;\n if (!next || !previous) {\n throw new Error('Invalid list');\n }\n next.previous = previous;\n previous.next = next;\n }\n item.next = undefined;\n item.previous = undefined;\n this._state++;\n }\n touch(item, touch) {\n if (!this._head || !this._tail) {\n throw new Error('Invalid list');\n }\n if ((touch !== Touch.First && touch !== Touch.Last)) {\n return;\n }\n if (touch === Touch.First) {\n if (item === this._head) {\n return;\n }\n const next = item.next;\n const previous = item.previous;\n // Unlink the item\n if (item === this._tail) {\n // previous must be defined since item was not head but is tail\n // So there are more than on item in the map\n previous.next = undefined;\n this._tail = previous;\n }\n else {\n // Both next and previous are not undefined since item was neither head nor tail.\n next.previous = previous;\n previous.next = next;\n }\n // Insert the node at head\n item.previous = undefined;\n item.next = this._head;\n this._head.previous = item;\n this._head = item;\n this._state++;\n }\n else if (touch === Touch.Last) {\n if (item === this._tail) {\n return;\n }\n const next = item.next;\n const previous = item.previous;\n // Unlink the item.\n if (item === this._head) {\n // next must be defined since item was not tail but is head\n // So there are more than on item in the map\n next.previous = undefined;\n this._head = next;\n }\n else {\n // Both next and previous are not undefined since item was neither head nor tail.\n next.previous = previous;\n previous.next = next;\n }\n item.next = undefined;\n item.previous = this._tail;\n this._tail.next = item;\n this._tail = item;\n this._state++;\n }\n }\n toJSON() {\n const data = [];\n this.forEach((value, key) => {\n data.push([key, value]);\n });\n return data;\n }\n fromJSON(data) {\n this.clear();\n for (const [key, value] of data) {\n this.set(key, value);\n }\n }\n}\nexports.LinkedMap = LinkedMap;\nclass LRUCache extends LinkedMap {\n constructor(limit, ratio = 1) {\n super();\n this._limit = limit;\n this._ratio = Math.min(Math.max(0, ratio), 1);\n }\n get limit() {\n return this._limit;\n }\n set limit(limit) {\n this._limit = limit;\n this.checkTrim();\n }\n get ratio() {\n return this._ratio;\n }\n set ratio(ratio) {\n this._ratio = Math.min(Math.max(0, ratio), 1);\n this.checkTrim();\n }\n get(key, touch = Touch.AsNew) {\n return super.get(key, touch);\n }\n peek(key) {\n return super.get(key, Touch.None);\n }\n set(key, value) {\n super.set(key, value, Touch.Last);\n this.checkTrim();\n return this;\n }\n checkTrim() {\n if (this.size > this._limit) {\n this.trimOld(Math.round(this._limit * this._ratio));\n }\n }\n}\nexports.LRUCache = LRUCache;\n","\"use strict\";\n/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Disposable = void 0;\nvar Disposable;\n(function (Disposable) {\n function create(func) {\n return {\n dispose: func\n };\n }\n Disposable.create = create;\n})(Disposable || (exports.Disposable = Disposable = {}));\n","\"use strict\";\n/* --------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n * ------------------------------------------------------------------------------------------ */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nlet _ral;\nfunction RAL() {\n if (_ral === undefined) {\n throw new Error(`No runtime abstraction layer installed`);\n }\n return _ral;\n}\n(function (RAL) {\n function install(ral) {\n if (ral === undefined) {\n throw new Error(`No runtime abstraction layer provided`);\n }\n _ral = ral;\n }\n RAL.install = install;\n})(RAL || (RAL = {}));\nexports.default = RAL;\n","\"use strict\";\n/* --------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n * ------------------------------------------------------------------------------------------ */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Emitter = exports.Event = void 0;\nconst ral_1 = require(\"./ral\");\nvar Event;\n(function (Event) {\n const _disposable = { dispose() { } };\n Event.None = function () { return _disposable; };\n})(Event || (exports.Event = Event = {}));\nclass CallbackList {\n add(callback, context = null, bucket) {\n if (!this._callbacks) {\n this._callbacks = [];\n this._contexts = [];\n }\n this._callbacks.push(callback);\n this._contexts.push(context);\n if (Array.isArray(bucket)) {\n bucket.push({ dispose: () => this.remove(callback, context) });\n }\n }\n remove(callback, context = null) {\n if (!this._callbacks) {\n return;\n }\n let foundCallbackWithDifferentContext = false;\n for (let i = 0, len = this._callbacks.length; i < len; i++) {\n if (this._callbacks[i] === callback) {\n if (this._contexts[i] === context) {\n // callback & context match => remove it\n this._callbacks.splice(i, 1);\n this._contexts.splice(i, 1);\n return;\n }\n else {\n foundCallbackWithDifferentContext = true;\n }\n }\n }\n if (foundCallbackWithDifferentContext) {\n throw new Error('When adding a listener with a context, you should remove it with the same context');\n }\n }\n invoke(...args) {\n if (!this._callbacks) {\n return [];\n }\n const ret = [], callbacks = this._callbacks.slice(0), contexts = this._contexts.slice(0);\n for (let i = 0, len = callbacks.length; i < len; i++) {\n try {\n ret.push(callbacks[i].apply(contexts[i], args));\n }\n catch (e) {\n // eslint-disable-next-line no-console\n (0, ral_1.default)().console.error(e);\n }\n }\n return ret;\n }\n isEmpty() {\n return !this._callbacks || this._callbacks.length === 0;\n }\n dispose() {\n this._callbacks = undefined;\n this._contexts = undefined;\n }\n}\nclass Emitter {\n constructor(_options) {\n this._options = _options;\n }\n /**\n * For the public to allow to subscribe\n * to events from this Emitter\n */\n get event() {\n if (!this._event) {\n this._event = (listener, thisArgs, disposables) => {\n if (!this._callbacks) {\n this._callbacks = new CallbackList();\n }\n if (this._options && this._options.onFirstListenerAdd && this._callbacks.isEmpty()) {\n this._options.onFirstListenerAdd(this);\n }\n this._callbacks.add(listener, thisArgs);\n const result = {\n dispose: () => {\n if (!this._callbacks) {\n // disposable is disposed after emitter is disposed.\n return;\n }\n this._callbacks.remove(listener, thisArgs);\n result.dispose = Emitter._noop;\n if (this._options && this._options.onLastListenerRemove && this._callbacks.isEmpty()) {\n this._options.onLastListenerRemove(this);\n }\n }\n };\n if (Array.isArray(disposables)) {\n disposables.push(result);\n }\n return result;\n };\n }\n return this._event;\n }\n /**\n * To be kept private to fire an event to\n * subscribers\n */\n fire(event) {\n if (this._callbacks) {\n this._callbacks.invoke.call(this._callbacks, event);\n }\n }\n dispose() {\n if (this._callbacks) {\n this._callbacks.dispose();\n this._callbacks = undefined;\n }\n }\n}\nexports.Emitter = Emitter;\nEmitter._noop = function () { };\n","\"use strict\";\n/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.CancellationTokenSource = exports.CancellationToken = void 0;\nconst ral_1 = require(\"./ral\");\nconst Is = require(\"./is\");\nconst events_1 = require(\"./events\");\nvar CancellationToken;\n(function (CancellationToken) {\n CancellationToken.None = Object.freeze({\n isCancellationRequested: false,\n onCancellationRequested: events_1.Event.None\n });\n CancellationToken.Cancelled = Object.freeze({\n isCancellationRequested: true,\n onCancellationRequested: events_1.Event.None\n });\n function is(value) {\n const candidate = value;\n return candidate && (candidate === CancellationToken.None\n || candidate === CancellationToken.Cancelled\n || (Is.boolean(candidate.isCancellationRequested) && !!candidate.onCancellationRequested));\n }\n CancellationToken.is = is;\n})(CancellationToken || (exports.CancellationToken = CancellationToken = {}));\nconst shortcutEvent = Object.freeze(function (callback, context) {\n const handle = (0, ral_1.default)().timer.setTimeout(callback.bind(context), 0);\n return { dispose() { handle.dispose(); } };\n});\nclass MutableToken {\n constructor() {\n this._isCancelled = false;\n }\n cancel() {\n if (!this._isCancelled) {\n this._isCancelled = true;\n if (this._emitter) {\n this._emitter.fire(undefined);\n this.dispose();\n }\n }\n }\n get isCancellationRequested() {\n return this._isCancelled;\n }\n get onCancellationRequested() {\n if (this._isCancelled) {\n return shortcutEvent;\n }\n if (!this._emitter) {\n this._emitter = new events_1.Emitter();\n }\n return this._emitter.event;\n }\n dispose() {\n if (this._emitter) {\n this._emitter.dispose();\n this._emitter = undefined;\n }\n }\n}\nclass CancellationTokenSource {\n get token() {\n if (!this._token) {\n // be lazy and create the token only when\n // actually needed\n this._token = new MutableToken();\n }\n return this._token;\n }\n cancel() {\n if (!this._token) {\n // save an object by returning the default\n // cancelled token when cancellation happens\n // before someone asks for the token\n this._token = CancellationToken.Cancelled;\n }\n else {\n this._token.cancel();\n }\n }\n dispose() {\n if (!this._token) {\n // ensure to initialize with an empty token if we had none\n this._token = CancellationToken.None;\n }\n else if (this._token instanceof MutableToken) {\n // actually dispose\n this._token.dispose();\n }\n }\n}\nexports.CancellationTokenSource = CancellationTokenSource;\n","\"use strict\";\n/* --------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n * ------------------------------------------------------------------------------------------ */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.SharedArrayReceiverStrategy = exports.SharedArraySenderStrategy = void 0;\nconst cancellation_1 = require(\"./cancellation\");\nvar CancellationState;\n(function (CancellationState) {\n CancellationState.Continue = 0;\n CancellationState.Cancelled = 1;\n})(CancellationState || (CancellationState = {}));\nclass SharedArraySenderStrategy {\n constructor() {\n this.buffers = new Map();\n }\n enableCancellation(request) {\n if (request.id === null) {\n return;\n }\n const buffer = new SharedArrayBuffer(4);\n const data = new Int32Array(buffer, 0, 1);\n data[0] = CancellationState.Continue;\n this.buffers.set(request.id, buffer);\n request.$cancellationData = buffer;\n }\n async sendCancellation(_conn, id) {\n const buffer = this.buffers.get(id);\n if (buffer === undefined) {\n return;\n }\n const data = new Int32Array(buffer, 0, 1);\n Atomics.store(data, 0, CancellationState.Cancelled);\n }\n cleanup(id) {\n this.buffers.delete(id);\n }\n dispose() {\n this.buffers.clear();\n }\n}\nexports.SharedArraySenderStrategy = SharedArraySenderStrategy;\nclass SharedArrayBufferCancellationToken {\n constructor(buffer) {\n this.data = new Int32Array(buffer, 0, 1);\n }\n get isCancellationRequested() {\n return Atomics.load(this.data, 0) === CancellationState.Cancelled;\n }\n get onCancellationRequested() {\n throw new Error(`Cancellation over SharedArrayBuffer doesn't support cancellation events`);\n }\n}\nclass SharedArrayBufferCancellationTokenSource {\n constructor(buffer) {\n this.token = new SharedArrayBufferCancellationToken(buffer);\n }\n cancel() {\n }\n dispose() {\n }\n}\nclass SharedArrayReceiverStrategy {\n constructor() {\n this.kind = 'request';\n }\n createCancellationTokenSource(request) {\n const buffer = request.$cancellationData;\n if (buffer === undefined) {\n return new cancellation_1.CancellationTokenSource();\n }\n return new SharedArrayBufferCancellationTokenSource(buffer);\n }\n}\nexports.SharedArrayReceiverStrategy = SharedArrayReceiverStrategy;\n","\"use strict\";\n/* --------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n * ------------------------------------------------------------------------------------------ */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Semaphore = void 0;\nconst ral_1 = require(\"./ral\");\nclass Semaphore {\n constructor(capacity = 1) {\n if (capacity <= 0) {\n throw new Error('Capacity must be greater than 0');\n }\n this._capacity = capacity;\n this._active = 0;\n this._waiting = [];\n }\n lock(thunk) {\n return new Promise((resolve, reject) => {\n this._waiting.push({ thunk, resolve, reject });\n this.runNext();\n });\n }\n get active() {\n return this._active;\n }\n runNext() {\n if (this._waiting.length === 0 || this._active === this._capacity) {\n return;\n }\n (0, ral_1.default)().timer.setImmediate(() => this.doRunNext());\n }\n doRunNext() {\n if (this._waiting.length === 0 || this._active === this._capacity) {\n return;\n }\n const next = this._waiting.shift();\n this._active++;\n if (this._active > this._capacity) {\n throw new Error(`To many thunks active`);\n }\n try {\n const result = next.thunk();\n if (result instanceof Promise) {\n result.then((value) => {\n this._active--;\n next.resolve(value);\n this.runNext();\n }, (err) => {\n this._active--;\n next.reject(err);\n this.runNext();\n });\n }\n else {\n this._active--;\n next.resolve(result);\n this.runNext();\n }\n }\n catch (err) {\n this._active--;\n next.reject(err);\n this.runNext();\n }\n }\n}\nexports.Semaphore = Semaphore;\n","\"use strict\";\n/* --------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n * ------------------------------------------------------------------------------------------ */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ReadableStreamMessageReader = exports.AbstractMessageReader = exports.MessageReader = void 0;\nconst ral_1 = require(\"./ral\");\nconst Is = require(\"./is\");\nconst events_1 = require(\"./events\");\nconst semaphore_1 = require(\"./semaphore\");\nvar MessageReader;\n(function (MessageReader) {\n function is(value) {\n let candidate = value;\n return candidate && Is.func(candidate.listen) && Is.func(candidate.dispose) &&\n Is.func(candidate.onError) && Is.func(candidate.onClose) && Is.func(candidate.onPartialMessage);\n }\n MessageReader.is = is;\n})(MessageReader || (exports.MessageReader = MessageReader = {}));\nclass AbstractMessageReader {\n constructor() {\n this.errorEmitter = new events_1.Emitter();\n this.closeEmitter = new events_1.Emitter();\n this.partialMessageEmitter = new events_1.Emitter();\n }\n dispose() {\n this.errorEmitter.dispose();\n this.closeEmitter.dispose();\n }\n get onError() {\n return this.errorEmitter.event;\n }\n fireError(error) {\n this.errorEmitter.fire(this.asError(error));\n }\n get onClose() {\n return this.closeEmitter.event;\n }\n fireClose() {\n this.closeEmitter.fire(undefined);\n }\n get onPartialMessage() {\n return this.partialMessageEmitter.event;\n }\n firePartialMessage(info) {\n this.partialMessageEmitter.fire(info);\n }\n asError(error) {\n if (error instanceof Error) {\n return error;\n }\n else {\n return new Error(`Reader received error. Reason: ${Is.string(error.message) ? error.message : 'unknown'}`);\n }\n }\n}\nexports.AbstractMessageReader = AbstractMessageReader;\nvar ResolvedMessageReaderOptions;\n(function (ResolvedMessageReaderOptions) {\n function fromOptions(options) {\n let charset;\n let result;\n let contentDecoder;\n const contentDecoders = new Map();\n let contentTypeDecoder;\n const contentTypeDecoders = new Map();\n if (options === undefined || typeof options === 'string') {\n charset = options ?? 'utf-8';\n }\n else {\n charset = options.charset ?? 'utf-8';\n if (options.contentDecoder !== undefined) {\n contentDecoder = options.contentDecoder;\n contentDecoders.set(contentDecoder.name, contentDecoder);\n }\n if (options.contentDecoders !== undefined) {\n for (const decoder of options.contentDecoders) {\n contentDecoders.set(decoder.name, decoder);\n }\n }\n if (options.contentTypeDecoder !== undefined) {\n contentTypeDecoder = options.contentTypeDecoder;\n contentTypeDecoders.set(contentTypeDecoder.name, contentTypeDecoder);\n }\n if (options.contentTypeDecoders !== undefined) {\n for (const decoder of options.contentTypeDecoders) {\n contentTypeDecoders.set(decoder.name, decoder);\n }\n }\n }\n if (contentTypeDecoder === undefined) {\n contentTypeDecoder = (0, ral_1.default)().applicationJson.decoder;\n contentTypeDecoders.set(contentTypeDecoder.name, contentTypeDecoder);\n }\n return { charset, contentDecoder, contentDecoders, contentTypeDecoder, contentTypeDecoders };\n }\n ResolvedMessageReaderOptions.fromOptions = fromOptions;\n})(ResolvedMessageReaderOptions || (ResolvedMessageReaderOptions = {}));\nclass ReadableStreamMessageReader extends AbstractMessageReader {\n constructor(readable, options) {\n super();\n this.readable = readable;\n this.options = ResolvedMessageReaderOptions.fromOptions(options);\n this.buffer = (0, ral_1.default)().messageBuffer.create(this.options.charset);\n this._partialMessageTimeout = 10000;\n this.nextMessageLength = -1;\n this.messageToken = 0;\n this.readSemaphore = new semaphore_1.Semaphore(1);\n }\n set partialMessageTimeout(timeout) {\n this._partialMessageTimeout = timeout;\n }\n get partialMessageTimeout() {\n return this._partialMessageTimeout;\n }\n listen(callback) {\n this.nextMessageLength = -1;\n this.messageToken = 0;\n this.partialMessageTimer = undefined;\n this.callback = callback;\n const result = this.readable.onData((data) => {\n this.onData(data);\n });\n this.readable.onError((error) => this.fireError(error));\n this.readable.onClose(() => this.fireClose());\n return result;\n }\n onData(data) {\n try {\n this.buffer.append(data);\n while (true) {\n if (this.nextMessageLength === -1) {\n const headers = this.buffer.tryReadHeaders(true);\n if (!headers) {\n return;\n }\n const contentLength = headers.get('content-length');\n if (!contentLength) {\n this.fireError(new Error(`Header must provide a Content-Length property.\\n${JSON.stringify(Object.fromEntries(headers))}`));\n return;\n }\n const length = parseInt(contentLength);\n if (isNaN(length)) {\n this.fireError(new Error(`Content-Length value must be a number. Got ${contentLength}`));\n return;\n }\n this.nextMessageLength = length;\n }\n const body = this.buffer.tryReadBody(this.nextMessageLength);\n if (body === undefined) {\n /** We haven't received the full message yet. */\n this.setPartialMessageTimer();\n return;\n }\n this.clearPartialMessageTimer();\n this.nextMessageLength = -1;\n // Make sure that we convert one received message after the\n // other. Otherwise it could happen that a decoding of a second\n // smaller message finished before the decoding of a first larger\n // message and then we would deliver the second message first.\n this.readSemaphore.lock(async () => {\n const bytes = this.options.contentDecoder !== undefined\n ? await this.options.contentDecoder.decode(body)\n : body;\n const message = await this.options.contentTypeDecoder.decode(bytes, this.options);\n this.callback(message);\n }).catch((error) => {\n this.fireError(error);\n });\n }\n }\n catch (error) {\n this.fireError(error);\n }\n }\n clearPartialMessageTimer() {\n if (this.partialMessageTimer) {\n this.partialMessageTimer.dispose();\n this.partialMessageTimer = undefined;\n }\n }\n setPartialMessageTimer() {\n this.clearPartialMessageTimer();\n if (this._partialMessageTimeout <= 0) {\n return;\n }\n this.partialMessageTimer = (0, ral_1.default)().timer.setTimeout((token, timeout) => {\n this.partialMessageTimer = undefined;\n if (token === this.messageToken) {\n this.firePartialMessage({ messageToken: token, waitingTime: timeout });\n this.setPartialMessageTimer();\n }\n }, this._partialMessageTimeout, this.messageToken, this._partialMessageTimeout);\n }\n}\nexports.ReadableStreamMessageReader = ReadableStreamMessageReader;\n","\"use strict\";\n/* --------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n * ------------------------------------------------------------------------------------------ */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.WriteableStreamMessageWriter = exports.AbstractMessageWriter = exports.MessageWriter = void 0;\nconst ral_1 = require(\"./ral\");\nconst Is = require(\"./is\");\nconst semaphore_1 = require(\"./semaphore\");\nconst events_1 = require(\"./events\");\nconst ContentLength = 'Content-Length: ';\nconst CRLF = '\\r\\n';\nvar MessageWriter;\n(function (MessageWriter) {\n function is(value) {\n let candidate = value;\n return candidate && Is.func(candidate.dispose) && Is.func(candidate.onClose) &&\n Is.func(candidate.onError) && Is.func(candidate.write);\n }\n MessageWriter.is = is;\n})(MessageWriter || (exports.MessageWriter = MessageWriter = {}));\nclass AbstractMessageWriter {\n constructor() {\n this.errorEmitter = new events_1.Emitter();\n this.closeEmitter = new events_1.Emitter();\n }\n dispose() {\n this.errorEmitter.dispose();\n this.closeEmitter.dispose();\n }\n get onError() {\n return this.errorEmitter.event;\n }\n fireError(error, message, count) {\n this.errorEmitter.fire([this.asError(error), message, count]);\n }\n get onClose() {\n return this.closeEmitter.event;\n }\n fireClose() {\n this.closeEmitter.fire(undefined);\n }\n asError(error) {\n if (error instanceof Error) {\n return error;\n }\n else {\n return new Error(`Writer received error. Reason: ${Is.string(error.message) ? error.message : 'unknown'}`);\n }\n }\n}\nexports.AbstractMessageWriter = AbstractMessageWriter;\nvar ResolvedMessageWriterOptions;\n(function (ResolvedMessageWriterOptions) {\n function fromOptions(options) {\n if (options === undefined || typeof options === 'string') {\n return { charset: options ?? 'utf-8', contentTypeEncoder: (0, ral_1.default)().applicationJson.encoder };\n }\n else {\n return { charset: options.charset ?? 'utf-8', contentEncoder: options.contentEncoder, contentTypeEncoder: options.contentTypeEncoder ?? (0, ral_1.default)().applicationJson.encoder };\n }\n }\n ResolvedMessageWriterOptions.fromOptions = fromOptions;\n})(ResolvedMessageWriterOptions || (ResolvedMessageWriterOptions = {}));\nclass WriteableStreamMessageWriter extends AbstractMessageWriter {\n constructor(writable, options) {\n super();\n this.writable = writable;\n this.options = ResolvedMessageWriterOptions.fromOptions(options);\n this.errorCount = 0;\n this.writeSemaphore = new semaphore_1.Semaphore(1);\n this.writable.onError((error) => this.fireError(error));\n this.writable.onClose(() => this.fireClose());\n }\n async write(msg) {\n return this.writeSemaphore.lock(async () => {\n const payload = this.options.contentTypeEncoder.encode(msg, this.options).then((buffer) => {\n if (this.options.contentEncoder !== undefined) {\n return this.options.contentEncoder.encode(buffer);\n }\n else {\n return buffer;\n }\n });\n return payload.then((buffer) => {\n const headers = [];\n headers.push(ContentLength, buffer.byteLength.toString(), CRLF);\n headers.push(CRLF);\n return this.doWrite(msg, headers, buffer);\n }, (error) => {\n this.fireError(error);\n throw error;\n });\n });\n }\n async doWrite(msg, headers, data) {\n try {\n await this.writable.write(headers.join(''), 'ascii');\n return this.writable.write(data);\n }\n catch (error) {\n this.handleError(error, msg);\n return Promise.reject(error);\n }\n }\n handleError(error, msg) {\n this.errorCount++;\n this.fireError(error, msg, this.errorCount);\n }\n end() {\n this.writable.end();\n }\n}\nexports.WriteableStreamMessageWriter = WriteableStreamMessageWriter;\n","\"use strict\";\n/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.AbstractMessageBuffer = void 0;\nconst CR = 13;\nconst LF = 10;\nconst CRLF = '\\r\\n';\nclass AbstractMessageBuffer {\n constructor(encoding = 'utf-8') {\n this._encoding = encoding;\n this._chunks = [];\n this._totalLength = 0;\n }\n get encoding() {\n return this._encoding;\n }\n append(chunk) {\n const toAppend = typeof chunk === 'string' ? this.fromString(chunk, this._encoding) : chunk;\n this._chunks.push(toAppend);\n this._totalLength += toAppend.byteLength;\n }\n tryReadHeaders(lowerCaseKeys = false) {\n if (this._chunks.length === 0) {\n return undefined;\n }\n let state = 0;\n let chunkIndex = 0;\n let offset = 0;\n let chunkBytesRead = 0;\n row: while (chunkIndex < this._chunks.length) {\n const chunk = this._chunks[chunkIndex];\n offset = 0;\n column: while (offset < chunk.length) {\n const value = chunk[offset];\n switch (value) {\n case CR:\n switch (state) {\n case 0:\n state = 1;\n break;\n case 2:\n state = 3;\n break;\n default:\n state = 0;\n }\n break;\n case LF:\n switch (state) {\n case 1:\n state = 2;\n break;\n case 3:\n state = 4;\n offset++;\n break row;\n default:\n state = 0;\n }\n break;\n default:\n state = 0;\n }\n offset++;\n }\n chunkBytesRead += chunk.byteLength;\n chunkIndex++;\n }\n if (state !== 4) {\n return undefined;\n }\n // The buffer contains the two CRLF at the end. So we will\n // have two empty lines after the split at the end as well.\n const buffer = this._read(chunkBytesRead + offset);\n const result = new Map();\n const headers = this.toString(buffer, 'ascii').split(CRLF);\n if (headers.length < 2) {\n return result;\n }\n for (let i = 0; i < headers.length - 2; i++) {\n const header = headers[i];\n const index = header.indexOf(':');\n if (index === -1) {\n throw new Error(`Message header must separate key and value using ':'\\n${header}`);\n }\n const key = header.substr(0, index);\n const value = header.substr(index + 1).trim();\n result.set(lowerCaseKeys ? key.toLowerCase() : key, value);\n }\n return result;\n }\n tryReadBody(length) {\n if (this._totalLength < length) {\n return undefined;\n }\n return this._read(length);\n }\n get numberOfBytes() {\n return this._totalLength;\n }\n _read(byteCount) {\n if (byteCount === 0) {\n return this.emptyBuffer();\n }\n if (byteCount > this._totalLength) {\n throw new Error(`Cannot read so many bytes!`);\n }\n if (this._chunks[0].byteLength === byteCount) {\n // super fast path, precisely first chunk must be returned\n const chunk = this._chunks[0];\n this._chunks.shift();\n this._totalLength -= byteCount;\n return this.asNative(chunk);\n }\n if (this._chunks[0].byteLength > byteCount) {\n // fast path, the reading is entirely within the first chunk\n const chunk = this._chunks[0];\n const result = this.asNative(chunk, byteCount);\n this._chunks[0] = chunk.slice(byteCount);\n this._totalLength -= byteCount;\n return result;\n }\n const result = this.allocNative(byteCount);\n let resultOffset = 0;\n let chunkIndex = 0;\n while (byteCount > 0) {\n const chunk = this._chunks[chunkIndex];\n if (chunk.byteLength > byteCount) {\n // this chunk will survive\n const chunkPart = chunk.slice(0, byteCount);\n result.set(chunkPart, resultOffset);\n resultOffset += byteCount;\n this._chunks[chunkIndex] = chunk.slice(byteCount);\n this._totalLength -= byteCount;\n byteCount -= byteCount;\n }\n else {\n // this chunk will be entirely read\n result.set(chunk, resultOffset);\n resultOffset += chunk.byteLength;\n this._chunks.shift();\n this._totalLength -= chunk.byteLength;\n byteCount -= chunk.byteLength;\n }\n }\n return result;\n }\n}\nexports.AbstractMessageBuffer = AbstractMessageBuffer;\n","\"use strict\";\n/* --------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n * ------------------------------------------------------------------------------------------ */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.createMessageConnection = exports.ConnectionOptions = exports.MessageStrategy = exports.CancellationStrategy = exports.CancellationSenderStrategy = exports.CancellationReceiverStrategy = exports.RequestCancellationReceiverStrategy = exports.IdCancellationReceiverStrategy = exports.ConnectionStrategy = exports.ConnectionError = exports.ConnectionErrors = exports.LogTraceNotification = exports.SetTraceNotification = exports.TraceFormat = exports.TraceValues = exports.Trace = exports.NullLogger = exports.ProgressType = exports.ProgressToken = void 0;\nconst ral_1 = require(\"./ral\");\nconst Is = require(\"./is\");\nconst messages_1 = require(\"./messages\");\nconst linkedMap_1 = require(\"./linkedMap\");\nconst events_1 = require(\"./events\");\nconst cancellation_1 = require(\"./cancellation\");\nvar CancelNotification;\n(function (CancelNotification) {\n CancelNotification.type = new messages_1.NotificationType('$/cancelRequest');\n})(CancelNotification || (CancelNotification = {}));\nvar ProgressToken;\n(function (ProgressToken) {\n function is(value) {\n return typeof value === 'string' || typeof value === 'number';\n }\n ProgressToken.is = is;\n})(ProgressToken || (exports.ProgressToken = ProgressToken = {}));\nvar ProgressNotification;\n(function (ProgressNotification) {\n ProgressNotification.type = new messages_1.NotificationType('$/progress');\n})(ProgressNotification || (ProgressNotification = {}));\nclass ProgressType {\n constructor() {\n }\n}\nexports.ProgressType = ProgressType;\nvar StarRequestHandler;\n(function (StarRequestHandler) {\n function is(value) {\n return Is.func(value);\n }\n StarRequestHandler.is = is;\n})(StarRequestHandler || (StarRequestHandler = {}));\nexports.NullLogger = Object.freeze({\n error: () => { },\n warn: () => { },\n info: () => { },\n log: () => { }\n});\nvar Trace;\n(function (Trace) {\n Trace[Trace[\"Off\"] = 0] = \"Off\";\n Trace[Trace[\"Messages\"] = 1] = \"Messages\";\n Trace[Trace[\"Compact\"] = 2] = \"Compact\";\n Trace[Trace[\"Verbose\"] = 3] = \"Verbose\";\n})(Trace || (exports.Trace = Trace = {}));\nvar TraceValues;\n(function (TraceValues) {\n /**\n * Turn tracing off.\n */\n TraceValues.Off = 'off';\n /**\n * Trace messages only.\n */\n TraceValues.Messages = 'messages';\n /**\n * Compact message tracing.\n */\n TraceValues.Compact = 'compact';\n /**\n * Verbose message tracing.\n */\n TraceValues.Verbose = 'verbose';\n})(TraceValues || (exports.TraceValues = TraceValues = {}));\n(function (Trace) {\n function fromString(value) {\n if (!Is.string(value)) {\n return Trace.Off;\n }\n value = value.toLowerCase();\n switch (value) {\n case 'off':\n return Trace.Off;\n case 'messages':\n return Trace.Messages;\n case 'compact':\n return Trace.Compact;\n case 'verbose':\n return Trace.Verbose;\n default:\n return Trace.Off;\n }\n }\n Trace.fromString = fromString;\n function toString(value) {\n switch (value) {\n case Trace.Off:\n return 'off';\n case Trace.Messages:\n return 'messages';\n case Trace.Compact:\n return 'compact';\n case Trace.Verbose:\n return 'verbose';\n default:\n return 'off';\n }\n }\n Trace.toString = toString;\n})(Trace || (exports.Trace = Trace = {}));\nvar TraceFormat;\n(function (TraceFormat) {\n TraceFormat[\"Text\"] = \"text\";\n TraceFormat[\"JSON\"] = \"json\";\n})(TraceFormat || (exports.TraceFormat = TraceFormat = {}));\n(function (TraceFormat) {\n function fromString(value) {\n if (!Is.string(value)) {\n return TraceFormat.Text;\n }\n value = value.toLowerCase();\n if (value === 'json') {\n return TraceFormat.JSON;\n }\n else {\n return TraceFormat.Text;\n }\n }\n TraceFormat.fromString = fromString;\n})(TraceFormat || (exports.TraceFormat = TraceFormat = {}));\nvar SetTraceNotification;\n(function (SetTraceNotification) {\n SetTraceNotification.type = new messages_1.NotificationType('$/setTrace');\n})(SetTraceNotification || (exports.SetTraceNotification = SetTraceNotification = {}));\nvar LogTraceNotification;\n(function (LogTraceNotification) {\n LogTraceNotification.type = new messages_1.NotificationType('$/logTrace');\n})(LogTraceNotification || (exports.LogTraceNotification = LogTraceNotification = {}));\nvar ConnectionErrors;\n(function (ConnectionErrors) {\n /**\n * The connection is closed.\n */\n ConnectionErrors[ConnectionErrors[\"Closed\"] = 1] = \"Closed\";\n /**\n * The connection got disposed.\n */\n ConnectionErrors[ConnectionErrors[\"Disposed\"] = 2] = \"Disposed\";\n /**\n * The connection is already in listening mode.\n */\n ConnectionErrors[ConnectionErrors[\"AlreadyListening\"] = 3] = \"AlreadyListening\";\n})(ConnectionErrors || (exports.ConnectionErrors = ConnectionErrors = {}));\nclass ConnectionError extends Error {\n constructor(code, message) {\n super(message);\n this.code = code;\n Object.setPrototypeOf(this, ConnectionError.prototype);\n }\n}\nexports.ConnectionError = ConnectionError;\nvar ConnectionStrategy;\n(function (ConnectionStrategy) {\n function is(value) {\n const candidate = value;\n return candidate && Is.func(candidate.cancelUndispatched);\n }\n ConnectionStrategy.is = is;\n})(ConnectionStrategy || (exports.ConnectionStrategy = ConnectionStrategy = {}));\nvar IdCancellationReceiverStrategy;\n(function (IdCancellationReceiverStrategy) {\n function is(value) {\n const candidate = value;\n return candidate && (candidate.kind === undefined || candidate.kind === 'id') && Is.func(candidate.createCancellationTokenSource) && (candidate.dispose === undefined || Is.func(candidate.dispose));\n }\n IdCancellationReceiverStrategy.is = is;\n})(IdCancellationReceiverStrategy || (exports.IdCancellationReceiverStrategy = IdCancellationReceiverStrategy = {}));\nvar RequestCancellationReceiverStrategy;\n(function (RequestCancellationReceiverStrategy) {\n function is(value) {\n const candidate = value;\n return candidate && candidate.kind === 'request' && Is.func(candidate.createCancellationTokenSource) && (candidate.dispose === undefined || Is.func(candidate.dispose));\n }\n RequestCancellationReceiverStrategy.is = is;\n})(RequestCancellationReceiverStrategy || (exports.RequestCancellationReceiverStrategy = RequestCancellationReceiverStrategy = {}));\nvar CancellationReceiverStrategy;\n(function (CancellationReceiverStrategy) {\n CancellationReceiverStrategy.Message = Object.freeze({\n createCancellationTokenSource(_) {\n return new cancellation_1.CancellationTokenSource();\n }\n });\n function is(value) {\n return IdCancellationReceiverStrategy.is(value) || RequestCancellationReceiverStrategy.is(value);\n }\n CancellationReceiverStrategy.is = is;\n})(CancellationReceiverStrategy || (exports.CancellationReceiverStrategy = CancellationReceiverStrategy = {}));\nvar CancellationSenderStrategy;\n(function (CancellationSenderStrategy) {\n CancellationSenderStrategy.Message = Object.freeze({\n sendCancellation(conn, id) {\n return conn.sendNotification(CancelNotification.type, { id });\n },\n cleanup(_) { }\n });\n function is(value) {\n const candidate = value;\n return candidate && Is.func(candidate.sendCancellation) && Is.func(candidate.cleanup);\n }\n CancellationSenderStrategy.is = is;\n})(CancellationSenderStrategy || (exports.CancellationSenderStrategy = CancellationSenderStrategy = {}));\nvar CancellationStrategy;\n(function (CancellationStrategy) {\n CancellationStrategy.Message = Object.freeze({\n receiver: CancellationReceiverStrategy.Message,\n sender: CancellationSenderStrategy.Message\n });\n function is(value) {\n const candidate = value;\n return candidate && CancellationReceiverStrategy.is(candidate.receiver) && CancellationSenderStrategy.is(candidate.sender);\n }\n CancellationStrategy.is = is;\n})(CancellationStrategy || (exports.CancellationStrategy = CancellationStrategy = {}));\nvar MessageStrategy;\n(function (MessageStrategy) {\n function is(value) {\n const candidate = value;\n return candidate && Is.func(candidate.handleMessage);\n }\n MessageStrategy.is = is;\n})(MessageStrategy || (exports.MessageStrategy = MessageStrategy = {}));\nvar ConnectionOptions;\n(function (ConnectionOptions) {\n function is(value) {\n const candidate = value;\n return candidate && (CancellationStrategy.is(candidate.cancellationStrategy) || ConnectionStrategy.is(candidate.connectionStrategy) || MessageStrategy.is(candidate.messageStrategy));\n }\n ConnectionOptions.is = is;\n})(ConnectionOptions || (exports.ConnectionOptions = ConnectionOptions = {}));\nvar ConnectionState;\n(function (ConnectionState) {\n ConnectionState[ConnectionState[\"New\"] = 1] = \"New\";\n ConnectionState[ConnectionState[\"Listening\"] = 2] = \"Listening\";\n ConnectionState[ConnectionState[\"Closed\"] = 3] = \"Closed\";\n ConnectionState[ConnectionState[\"Disposed\"] = 4] = \"Disposed\";\n})(ConnectionState || (ConnectionState = {}));\nfunction createMessageConnection(messageReader, messageWriter, _logger, options) {\n const logger = _logger !== undefined ? _logger : exports.NullLogger;\n let sequenceNumber = 0;\n let notificationSequenceNumber = 0;\n let unknownResponseSequenceNumber = 0;\n const version = '2.0';\n let starRequestHandler = undefined;\n const requestHandlers = new Map();\n let starNotificationHandler = undefined;\n const notificationHandlers = new Map();\n const progressHandlers = new Map();\n let timer;\n let messageQueue = new linkedMap_1.LinkedMap();\n let responsePromises = new Map();\n let knownCanceledRequests = new Set();\n let requestTokens = new Map();\n let trace = Trace.Off;\n let traceFormat = TraceFormat.Text;\n let tracer;\n let state = ConnectionState.New;\n const errorEmitter = new events_1.Emitter();\n const closeEmitter = new events_1.Emitter();\n const unhandledNotificationEmitter = new events_1.Emitter();\n const unhandledProgressEmitter = new events_1.Emitter();\n const disposeEmitter = new events_1.Emitter();\n const cancellationStrategy = (options && options.cancellationStrategy) ? options.cancellationStrategy : CancellationStrategy.Message;\n function createRequestQueueKey(id) {\n if (id === null) {\n throw new Error(`Can't send requests with id null since the response can't be correlated.`);\n }\n return 'req-' + id.toString();\n }\n function createResponseQueueKey(id) {\n if (id === null) {\n return 'res-unknown-' + (++unknownResponseSequenceNumber).toString();\n }\n else {\n return 'res-' + id.toString();\n }\n }\n function createNotificationQueueKey() {\n return 'not-' + (++notificationSequenceNumber).toString();\n }\n function addMessageToQueue(queue, message) {\n if (messages_1.Message.isRequest(message)) {\n queue.set(createRequestQueueKey(message.id), message);\n }\n else if (messages_1.Message.isResponse(message)) {\n queue.set(createResponseQueueKey(message.id), message);\n }\n else {\n queue.set(createNotificationQueueKey(), message);\n }\n }\n function cancelUndispatched(_message) {\n return undefined;\n }\n function isListening() {\n return state === ConnectionState.Listening;\n }\n function isClosed() {\n return state === ConnectionState.Closed;\n }\n function isDisposed() {\n return state === ConnectionState.Disposed;\n }\n function closeHandler() {\n if (state === ConnectionState.New || state === ConnectionState.Listening) {\n state = ConnectionState.Closed;\n closeEmitter.fire(undefined);\n }\n // If the connection is disposed don't sent close events.\n }\n function readErrorHandler(error) {\n errorEmitter.fire([error, undefined, undefined]);\n }\n function writeErrorHandler(data) {\n errorEmitter.fire(data);\n }\n messageReader.onClose(closeHandler);\n messageReader.onError(readErrorHandler);\n messageWriter.onClose(closeHandler);\n messageWriter.onError(writeErrorHandler);\n function triggerMessageQueue() {\n if (timer || messageQueue.size === 0) {\n return;\n }\n timer = (0, ral_1.default)().timer.setImmediate(() => {\n timer = undefined;\n processMessageQueue();\n });\n }\n function handleMessage(message) {\n if (messages_1.Message.isRequest(message)) {\n handleRequest(message);\n }\n else if (messages_1.Message.isNotification(message)) {\n handleNotification(message);\n }\n else if (messages_1.Message.isResponse(message)) {\n handleResponse(message);\n }\n else {\n handleInvalidMessage(message);\n }\n }\n function processMessageQueue() {\n if (messageQueue.size === 0) {\n return;\n }\n const message = messageQueue.shift();\n try {\n const messageStrategy = options?.messageStrategy;\n if (MessageStrategy.is(messageStrategy)) {\n messageStrategy.handleMessage(message, handleMessage);\n }\n else {\n handleMessage(message);\n }\n }\n finally {\n triggerMessageQueue();\n }\n }\n const callback = (message) => {\n try {\n // We have received a cancellation message. Check if the message is still in the queue\n // and cancel it if allowed to do so.\n if (messages_1.Message.isNotification(message) && message.method === CancelNotification.type.method) {\n const cancelId = message.params.id;\n const key = createRequestQueueKey(cancelId);\n const toCancel = messageQueue.get(key);\n if (messages_1.Message.isRequest(toCancel)) {\n const strategy = options?.connectionStrategy;\n const response = (strategy && strategy.cancelUndispatched) ? strategy.cancelUndispatched(toCancel, cancelUndispatched) : cancelUndispatched(toCancel);\n if (response && (response.error !== undefined || response.result !== undefined)) {\n messageQueue.delete(key);\n requestTokens.delete(cancelId);\n response.id = toCancel.id;\n traceSendingResponse(response, message.method, Date.now());\n messageWriter.write(response).catch(() => logger.error(`Sending response for canceled message failed.`));\n return;\n }\n }\n const cancellationToken = requestTokens.get(cancelId);\n // The request is already running. Cancel the token\n if (cancellationToken !== undefined) {\n cancellationToken.cancel();\n traceReceivedNotification(message);\n return;\n }\n else {\n // Remember the cancel but still queue the message to\n // clean up state in process message.\n knownCanceledRequests.add(cancelId);\n }\n }\n addMessageToQueue(messageQueue, message);\n }\n finally {\n triggerMessageQueue();\n }\n };\n function handleRequest(requestMessage) {\n if (isDisposed()) {\n // we return here silently since we fired an event when the\n // connection got disposed.\n return;\n }\n function reply(resultOrError, method, startTime) {\n const message = {\n jsonrpc: version,\n id: requestMessage.id\n };\n if (resultOrError instanceof messages_1.ResponseError) {\n message.error = resultOrError.toJson();\n }\n else {\n message.result = resultOrError === undefined ? null : resultOrError;\n }\n traceSendingResponse(message, method, startTime);\n messageWriter.write(message).catch(() => logger.error(`Sending response failed.`));\n }\n function replyError(error, method, startTime) {\n const message = {\n jsonrpc: version,\n id: requestMessage.id,\n error: error.toJson()\n };\n traceSendingResponse(message, method, startTime);\n messageWriter.write(message).catch(() => logger.error(`Sending response failed.`));\n }\n function replySuccess(result, method, startTime) {\n // The JSON RPC defines that a response must either have a result or an error\n // So we can't treat undefined as a valid response result.\n if (result === undefined) {\n result = null;\n }\n const message = {\n jsonrpc: version,\n id: requestMessage.id,\n result: result\n };\n traceSendingResponse(message, method, startTime);\n messageWriter.write(message).catch(() => logger.error(`Sending response failed.`));\n }\n traceReceivedRequest(requestMessage);\n const element = requestHandlers.get(requestMessage.method);\n let type;\n let requestHandler;\n if (element) {\n type = element.type;\n requestHandler = element.handler;\n }\n const startTime = Date.now();\n if (requestHandler || starRequestHandler) {\n const tokenKey = requestMessage.id ?? String(Date.now()); //\n const cancellationSource = IdCancellationReceiverStrategy.is(cancellationStrategy.receiver)\n ? cancellationStrategy.receiver.createCancellationTokenSource(tokenKey)\n : cancellationStrategy.receiver.createCancellationTokenSource(requestMessage);\n if (requestMessage.id !== null && knownCanceledRequests.has(requestMessage.id)) {\n cancellationSource.cancel();\n }\n if (requestMessage.id !== null) {\n requestTokens.set(tokenKey, cancellationSource);\n }\n try {\n let handlerResult;\n if (requestHandler) {\n if (requestMessage.params === undefined) {\n if (type !== undefined && type.numberOfParams !== 0) {\n replyError(new messages_1.ResponseError(messages_1.ErrorCodes.InvalidParams, `Request ${requestMessage.method} defines ${type.numberOfParams} params but received none.`), requestMessage.method, startTime);\n return;\n }\n handlerResult = requestHandler(cancellationSource.token);\n }\n else if (Array.isArray(requestMessage.params)) {\n if (type !== undefined && type.parameterStructures === messages_1.ParameterStructures.byName) {\n replyError(new messages_1.ResponseError(messages_1.ErrorCodes.InvalidParams, `Request ${requestMessage.method} defines parameters by name but received parameters by position`), requestMessage.method, startTime);\n return;\n }\n handlerResult = requestHandler(...requestMessage.params, cancellationSource.token);\n }\n else {\n if (type !== undefined && type.parameterStructures === messages_1.ParameterStructures.byPosition) {\n replyError(new messages_1.ResponseError(messages_1.ErrorCodes.InvalidParams, `Request ${requestMessage.method} defines parameters by position but received parameters by name`), requestMessage.method, startTime);\n return;\n }\n handlerResult = requestHandler(requestMessage.params, cancellationSource.token);\n }\n }\n else if (starRequestHandler) {\n handlerResult = starRequestHandler(requestMessage.method, requestMessage.params, cancellationSource.token);\n }\n const promise = handlerResult;\n if (!handlerResult) {\n requestTokens.delete(tokenKey);\n replySuccess(handlerResult, requestMessage.method, startTime);\n }\n else if (promise.then) {\n promise.then((resultOrError) => {\n requestTokens.delete(tokenKey);\n reply(resultOrError, requestMessage.method, startTime);\n }, error => {\n requestTokens.delete(tokenKey);\n if (error instanceof messages_1.ResponseError) {\n replyError(error, requestMessage.method, startTime);\n }\n else if (error && Is.string(error.message)) {\n replyError(new messages_1.ResponseError(messages_1.ErrorCodes.InternalError, `Request ${requestMessage.method} failed with message: ${error.message}`), requestMessage.method, startTime);\n }\n else {\n replyError(new messages_1.ResponseError(messages_1.ErrorCodes.InternalError, `Request ${requestMessage.method} failed unexpectedly without providing any details.`), requestMessage.method, startTime);\n }\n });\n }\n else {\n requestTokens.delete(tokenKey);\n reply(handlerResult, requestMessage.method, startTime);\n }\n }\n catch (error) {\n requestTokens.delete(tokenKey);\n if (error instanceof messages_1.ResponseError) {\n reply(error, requestMessage.method, startTime);\n }\n else if (error && Is.string(error.message)) {\n replyError(new messages_1.ResponseError(messages_1.ErrorCodes.InternalError, `Request ${requestMessage.method} failed with message: ${error.message}`), requestMessage.method, startTime);\n }\n else {\n replyError(new messages_1.ResponseError(messages_1.ErrorCodes.InternalError, `Request ${requestMessage.method} failed unexpectedly without providing any details.`), requestMessage.method, startTime);\n }\n }\n }\n else {\n replyError(new messages_1.ResponseError(messages_1.ErrorCodes.MethodNotFound, `Unhandled method ${requestMessage.method}`), requestMessage.method, startTime);\n }\n }\n function handleResponse(responseMessage) {\n if (isDisposed()) {\n // See handle request.\n return;\n }\n if (responseMessage.id === null) {\n if (responseMessage.error) {\n logger.error(`Received response message without id: Error is: \\n${JSON.stringify(responseMessage.error, undefined, 4)}`);\n }\n else {\n logger.error(`Received response message without id. No further error information provided.`);\n }\n }\n else {\n const key = responseMessage.id;\n const responsePromise = responsePromises.get(key);\n traceReceivedResponse(responseMessage, responsePromise);\n if (responsePromise !== undefined) {\n responsePromises.delete(key);\n try {\n if (responseMessage.error) {\n const error = responseMessage.error;\n responsePromise.reject(new messages_1.ResponseError(error.code, error.message, error.data));\n }\n else if (responseMessage.result !== undefined) {\n responsePromise.resolve(responseMessage.result);\n }\n else {\n throw new Error('Should never happen.');\n }\n }\n catch (error) {\n if (error.message) {\n logger.error(`Response handler '${responsePromise.method}' failed with message: ${error.message}`);\n }\n else {\n logger.error(`Response handler '${responsePromise.method}' failed unexpectedly.`);\n }\n }\n }\n }\n }\n function handleNotification(message) {\n if (isDisposed()) {\n // See handle request.\n return;\n }\n let type = undefined;\n let notificationHandler;\n if (message.method === CancelNotification.type.method) {\n const cancelId = message.params.id;\n knownCanceledRequests.delete(cancelId);\n traceReceivedNotification(message);\n return;\n }\n else {\n const element = notificationHandlers.get(message.method);\n if (element) {\n notificationHandler = element.handler;\n type = element.type;\n }\n }\n if (notificationHandler || starNotificationHandler) {\n try {\n traceReceivedNotification(message);\n if (notificationHandler) {\n if (message.params === undefined) {\n if (type !== undefined) {\n if (type.numberOfParams !== 0 && type.parameterStructures !== messages_1.ParameterStructures.byName) {\n logger.error(`Notification ${message.method} defines ${type.numberOfParams} params but received none.`);\n }\n }\n notificationHandler();\n }\n else if (Array.isArray(message.params)) {\n // There are JSON-RPC libraries that send progress message as positional params although\n // specified as named. So convert them if this is the case.\n const params = message.params;\n if (message.method === ProgressNotification.type.method && params.length === 2 && ProgressToken.is(params[0])) {\n notificationHandler({ token: params[0], value: params[1] });\n }\n else {\n if (type !== undefined) {\n if (type.parameterStructures === messages_1.ParameterStructures.byName) {\n logger.error(`Notification ${message.method} defines parameters by name but received parameters by position`);\n }\n if (type.numberOfParams !== message.params.length) {\n logger.error(`Notification ${message.method} defines ${type.numberOfParams} params but received ${params.length} arguments`);\n }\n }\n notificationHandler(...params);\n }\n }\n else {\n if (type !== undefined && type.parameterStructures === messages_1.ParameterStructures.byPosition) {\n logger.error(`Notification ${message.method} defines parameters by position but received parameters by name`);\n }\n notificationHandler(message.params);\n }\n }\n else if (starNotificationHandler) {\n starNotificationHandler(message.method, message.params);\n }\n }\n catch (error) {\n if (error.message) {\n logger.error(`Notification handler '${message.method}' failed with message: ${error.message}`);\n }\n else {\n logger.error(`Notification handler '${message.method}' failed unexpectedly.`);\n }\n }\n }\n else {\n unhandledNotificationEmitter.fire(message);\n }\n }\n function handleInvalidMessage(message) {\n if (!message) {\n logger.error('Received empty message.');\n return;\n }\n logger.error(`Received message which is neither a response nor a notification message:\\n${JSON.stringify(message, null, 4)}`);\n // Test whether we find an id to reject the promise\n const responseMessage = message;\n if (Is.string(responseMessage.id) || Is.number(responseMessage.id)) {\n const key = responseMessage.id;\n const responseHandler = responsePromises.get(key);\n if (responseHandler) {\n responseHandler.reject(new Error('The received response has neither a result nor an error property.'));\n }\n }\n }\n function stringifyTrace(params) {\n if (params === undefined || params === null) {\n return undefined;\n }\n switch (trace) {\n case Trace.Verbose:\n return JSON.stringify(params, null, 4);\n case Trace.Compact:\n return JSON.stringify(params);\n default:\n return undefined;\n }\n }\n function traceSendingRequest(message) {\n if (trace === Trace.Off || !tracer) {\n return;\n }\n if (traceFormat === TraceFormat.Text) {\n let data = undefined;\n if ((trace === Trace.Verbose || trace === Trace.Compact) && message.params) {\n data = `Params: ${stringifyTrace(message.params)}\\n\\n`;\n }\n tracer.log(`Sending request '${message.method} - (${message.id})'.`, data);\n }\n else {\n logLSPMessage('send-request', message);\n }\n }\n function traceSendingNotification(message) {\n if (trace === Trace.Off || !tracer) {\n return;\n }\n if (traceFormat === TraceFormat.Text) {\n let data = undefined;\n if (trace === Trace.Verbose || trace === Trace.Compact) {\n if (message.params) {\n data = `Params: ${stringifyTrace(message.params)}\\n\\n`;\n }\n else {\n data = 'No parameters provided.\\n\\n';\n }\n }\n tracer.log(`Sending notification '${message.method}'.`, data);\n }\n else {\n logLSPMessage('send-notification', message);\n }\n }\n function traceSendingResponse(message, method, startTime) {\n if (trace === Trace.Off || !tracer) {\n return;\n }\n if (traceFormat === TraceFormat.Text) {\n let data = undefined;\n if (trace === Trace.Verbose || trace === Trace.Compact) {\n if (message.error && message.error.data) {\n data = `Error data: ${stringifyTrace(message.error.data)}\\n\\n`;\n }\n else {\n if (message.result) {\n data = `Result: ${stringifyTrace(message.result)}\\n\\n`;\n }\n else if (message.error === undefined) {\n data = 'No result returned.\\n\\n';\n }\n }\n }\n tracer.log(`Sending response '${method} - (${message.id})'. Processing request took ${Date.now() - startTime}ms`, data);\n }\n else {\n logLSPMessage('send-response', message);\n }\n }\n function traceReceivedRequest(message) {\n if (trace === Trace.Off || !tracer) {\n return;\n }\n if (traceFormat === TraceFormat.Text) {\n let data = undefined;\n if ((trace === Trace.Verbose || trace === Trace.Compact) && message.params) {\n data = `Params: ${stringifyTrace(message.params)}\\n\\n`;\n }\n tracer.log(`Received request '${message.method} - (${message.id})'.`, data);\n }\n else {\n logLSPMessage('receive-request', message);\n }\n }\n function traceReceivedNotification(message) {\n if (trace === Trace.Off || !tracer || message.method === LogTraceNotification.type.method) {\n return;\n }\n if (traceFormat === TraceFormat.Text) {\n let data = undefined;\n if (trace === Trace.Verbose || trace === Trace.Compact) {\n if (message.params) {\n data = `Params: ${stringifyTrace(message.params)}\\n\\n`;\n }\n else {\n data = 'No parameters provided.\\n\\n';\n }\n }\n tracer.log(`Received notification '${message.method}'.`, data);\n }\n else {\n logLSPMessage('receive-notification', message);\n }\n }\n function traceReceivedResponse(message, responsePromise) {\n if (trace === Trace.Off || !tracer) {\n return;\n }\n if (traceFormat === TraceFormat.Text) {\n let data = undefined;\n if (trace === Trace.Verbose || trace === Trace.Compact) {\n if (message.error && message.error.data) {\n data = `Error data: ${stringifyTrace(message.error.data)}\\n\\n`;\n }\n else {\n if (message.result) {\n data = `Result: ${stringifyTrace(message.result)}\\n\\n`;\n }\n else if (message.error === undefined) {\n data = 'No result returned.\\n\\n';\n }\n }\n }\n if (responsePromise) {\n const error = message.error ? ` Request failed: ${message.error.message} (${message.error.code}).` : '';\n tracer.log(`Received response '${responsePromise.method} - (${message.id})' in ${Date.now() - responsePromise.timerStart}ms.${error}`, data);\n }\n else {\n tracer.log(`Received response ${message.id} without active response promise.`, data);\n }\n }\n else {\n logLSPMessage('receive-response', message);\n }\n }\n function logLSPMessage(type, message) {\n if (!tracer || trace === Trace.Off) {\n return;\n }\n const lspMessage = {\n isLSPMessage: true,\n type,\n message,\n timestamp: Date.now()\n };\n tracer.log(lspMessage);\n }\n function throwIfClosedOrDisposed() {\n if (isClosed()) {\n throw new ConnectionError(ConnectionErrors.Closed, 'Connection is closed.');\n }\n if (isDisposed()) {\n throw new ConnectionError(ConnectionErrors.Disposed, 'Connection is disposed.');\n }\n }\n function throwIfListening() {\n if (isListening()) {\n throw new ConnectionError(ConnectionErrors.AlreadyListening, 'Connection is already listening');\n }\n }\n function throwIfNotListening() {\n if (!isListening()) {\n throw new Error('Call listen() first.');\n }\n }\n function undefinedToNull(param) {\n if (param === undefined) {\n return null;\n }\n else {\n return param;\n }\n }\n function nullToUndefined(param) {\n if (param === null) {\n return undefined;\n }\n else {\n return param;\n }\n }\n function isNamedParam(param) {\n return param !== undefined && param !== null && !Array.isArray(param) && typeof param === 'object';\n }\n function computeSingleParam(parameterStructures, param) {\n switch (parameterStructures) {\n case messages_1.ParameterStructures.auto:\n if (isNamedParam(param)) {\n return nullToUndefined(param);\n }\n else {\n return [undefinedToNull(param)];\n }\n case messages_1.ParameterStructures.byName:\n if (!isNamedParam(param)) {\n throw new Error(`Received parameters by name but param is not an object literal.`);\n }\n return nullToUndefined(param);\n case messages_1.ParameterStructures.byPosition:\n return [undefinedToNull(param)];\n default:\n throw new Error(`Unknown parameter structure ${parameterStructures.toString()}`);\n }\n }\n function computeMessageParams(type, params) {\n let result;\n const numberOfParams = type.numberOfParams;\n switch (numberOfParams) {\n case 0:\n result = undefined;\n break;\n case 1:\n result = computeSingleParam(type.parameterStructures, params[0]);\n break;\n default:\n result = [];\n for (let i = 0; i < params.length && i < numberOfParams; i++) {\n result.push(undefinedToNull(params[i]));\n }\n if (params.length < numberOfParams) {\n for (let i = params.length; i < numberOfParams; i++) {\n result.push(null);\n }\n }\n break;\n }\n return result;\n }\n const connection = {\n sendNotification: (type, ...args) => {\n throwIfClosedOrDisposed();\n let method;\n let messageParams;\n if (Is.string(type)) {\n method = type;\n const first = args[0];\n let paramStart = 0;\n let parameterStructures = messages_1.ParameterStructures.auto;\n if (messages_1.ParameterStructures.is(first)) {\n paramStart = 1;\n parameterStructures = first;\n }\n let paramEnd = args.length;\n const numberOfParams = paramEnd - paramStart;\n switch (numberOfParams) {\n case 0:\n messageParams = undefined;\n break;\n case 1:\n messageParams = computeSingleParam(parameterStructures, args[paramStart]);\n break;\n default:\n if (parameterStructures === messages_1.ParameterStructures.byName) {\n throw new Error(`Received ${numberOfParams} parameters for 'by Name' notification parameter structure.`);\n }\n messageParams = args.slice(paramStart, paramEnd).map(value => undefinedToNull(value));\n break;\n }\n }\n else {\n const params = args;\n method = type.method;\n messageParams = computeMessageParams(type, params);\n }\n const notificationMessage = {\n jsonrpc: version,\n method: method,\n params: messageParams\n };\n traceSendingNotification(notificationMessage);\n return messageWriter.write(notificationMessage).catch((error) => {\n logger.error(`Sending notification failed.`);\n throw error;\n });\n },\n onNotification: (type, handler) => {\n throwIfClosedOrDisposed();\n let method;\n if (Is.func(type)) {\n starNotificationHandler = type;\n }\n else if (handler) {\n if (Is.string(type)) {\n method = type;\n notificationHandlers.set(type, { type: undefined, handler });\n }\n else {\n method = type.method;\n notificationHandlers.set(type.method, { type, handler });\n }\n }\n return {\n dispose: () => {\n if (method !== undefined) {\n notificationHandlers.delete(method);\n }\n else {\n starNotificationHandler = undefined;\n }\n }\n };\n },\n onProgress: (_type, token, handler) => {\n if (progressHandlers.has(token)) {\n throw new Error(`Progress handler for token ${token} already registered`);\n }\n progressHandlers.set(token, handler);\n return {\n dispose: () => {\n progressHandlers.delete(token);\n }\n };\n },\n sendProgress: (_type, token, value) => {\n // This should not await but simple return to ensure that we don't have another\n // async scheduling. Otherwise one send could overtake another send.\n return connection.sendNotification(ProgressNotification.type, { token, value });\n },\n onUnhandledProgress: unhandledProgressEmitter.event,\n sendRequest: (type, ...args) => {\n throwIfClosedOrDisposed();\n throwIfNotListening();\n let method;\n let messageParams;\n let token = undefined;\n if (Is.string(type)) {\n method = type;\n const first = args[0];\n const last = args[args.length - 1];\n let paramStart = 0;\n let parameterStructures = messages_1.ParameterStructures.auto;\n if (messages_1.ParameterStructures.is(first)) {\n paramStart = 1;\n parameterStructures = first;\n }\n let paramEnd = args.length;\n if (cancellation_1.CancellationToken.is(last)) {\n paramEnd = paramEnd - 1;\n token = last;\n }\n const numberOfParams = paramEnd - paramStart;\n switch (numberOfParams) {\n case 0:\n messageParams = undefined;\n break;\n case 1:\n messageParams = computeSingleParam(parameterStructures, args[paramStart]);\n break;\n default:\n if (parameterStructures === messages_1.ParameterStructures.byName) {\n throw new Error(`Received ${numberOfParams} parameters for 'by Name' request parameter structure.`);\n }\n messageParams = args.slice(paramStart, paramEnd).map(value => undefinedToNull(value));\n break;\n }\n }\n else {\n const params = args;\n method = type.method;\n messageParams = computeMessageParams(type, params);\n const numberOfParams = type.numberOfParams;\n token = cancellation_1.CancellationToken.is(params[numberOfParams]) ? params[numberOfParams] : undefined;\n }\n const id = sequenceNumber++;\n let disposable;\n if (token) {\n disposable = token.onCancellationRequested(() => {\n const p = cancellationStrategy.sender.sendCancellation(connection, id);\n if (p === undefined) {\n logger.log(`Received no promise from cancellation strategy when cancelling id ${id}`);\n return Promise.resolve();\n }\n else {\n return p.catch(() => {\n logger.log(`Sending cancellation messages for id ${id} failed`);\n });\n }\n });\n }\n const requestMessage = {\n jsonrpc: version,\n id: id,\n method: method,\n params: messageParams\n };\n traceSendingRequest(requestMessage);\n if (typeof cancellationStrategy.sender.enableCancellation === 'function') {\n cancellationStrategy.sender.enableCancellation(requestMessage);\n }\n return new Promise(async (resolve, reject) => {\n const resolveWithCleanup = (r) => {\n resolve(r);\n cancellationStrategy.sender.cleanup(id);\n disposable?.dispose();\n };\n const rejectWithCleanup = (r) => {\n reject(r);\n cancellationStrategy.sender.cleanup(id);\n disposable?.dispose();\n };\n const responsePromise = { method: method, timerStart: Date.now(), resolve: resolveWithCleanup, reject: rejectWithCleanup };\n try {\n responsePromises.set(id, responsePromise);\n await messageWriter.write(requestMessage);\n }\n catch (error) {\n // Writing the message failed. So we need to delete it from the response promises and\n // reject it.\n responsePromises.delete(id);\n responsePromise.reject(new messages_1.ResponseError(messages_1.ErrorCodes.MessageWriteError, error.message ? error.message : 'Unknown reason'));\n logger.error(`Sending request failed.`);\n throw error;\n }\n });\n },\n onRequest: (type, handler) => {\n throwIfClosedOrDisposed();\n let method = null;\n if (StarRequestHandler.is(type)) {\n method = undefined;\n starRequestHandler = type;\n }\n else if (Is.string(type)) {\n method = null;\n if (handler !== undefined) {\n method = type;\n requestHandlers.set(type, { handler: handler, type: undefined });\n }\n }\n else {\n if (handler !== undefined) {\n method = type.method;\n requestHandlers.set(type.method, { type, handler });\n }\n }\n return {\n dispose: () => {\n if (method === null) {\n return;\n }\n if (method !== undefined) {\n requestHandlers.delete(method);\n }\n else {\n starRequestHandler = undefined;\n }\n }\n };\n },\n hasPendingResponse: () => {\n return responsePromises.size > 0;\n },\n trace: async (_value, _tracer, sendNotificationOrTraceOptions) => {\n let _sendNotification = false;\n let _traceFormat = TraceFormat.Text;\n if (sendNotificationOrTraceOptions !== undefined) {\n if (Is.boolean(sendNotificationOrTraceOptions)) {\n _sendNotification = sendNotificationOrTraceOptions;\n }\n else {\n _sendNotification = sendNotificationOrTraceOptions.sendNotification || false;\n _traceFormat = sendNotificationOrTraceOptions.traceFormat || TraceFormat.Text;\n }\n }\n trace = _value;\n traceFormat = _traceFormat;\n if (trace === Trace.Off) {\n tracer = undefined;\n }\n else {\n tracer = _tracer;\n }\n if (_sendNotification && !isClosed() && !isDisposed()) {\n await connection.sendNotification(SetTraceNotification.type, { value: Trace.toString(_value) });\n }\n },\n onError: errorEmitter.event,\n onClose: closeEmitter.event,\n onUnhandledNotification: unhandledNotificationEmitter.event,\n onDispose: disposeEmitter.event,\n end: () => {\n messageWriter.end();\n },\n dispose: () => {\n if (isDisposed()) {\n return;\n }\n state = ConnectionState.Disposed;\n disposeEmitter.fire(undefined);\n const error = new messages_1.ResponseError(messages_1.ErrorCodes.PendingResponseRejected, 'Pending response rejected since connection got disposed');\n for (const promise of responsePromises.values()) {\n promise.reject(error);\n }\n responsePromises = new Map();\n requestTokens = new Map();\n knownCanceledRequests = new Set();\n messageQueue = new linkedMap_1.LinkedMap();\n // Test for backwards compatibility\n if (Is.func(messageWriter.dispose)) {\n messageWriter.dispose();\n }\n if (Is.func(messageReader.dispose)) {\n messageReader.dispose();\n }\n },\n listen: () => {\n throwIfClosedOrDisposed();\n throwIfListening();\n state = ConnectionState.Listening;\n messageReader.listen(callback);\n },\n inspect: () => {\n // eslint-disable-next-line no-console\n (0, ral_1.default)().console.log('inspect');\n }\n };\n connection.onNotification(LogTraceNotification.type, (params) => {\n if (trace === Trace.Off || !tracer) {\n return;\n }\n const verbose = trace === Trace.Verbose || trace === Trace.Compact;\n tracer.log(params.message, verbose ? params.verbose : undefined);\n });\n connection.onNotification(ProgressNotification.type, (params) => {\n const handler = progressHandlers.get(params.token);\n if (handler) {\n handler(params.value);\n }\n else {\n unhandledProgressEmitter.fire(params);\n }\n });\n return connection;\n}\nexports.createMessageConnection = createMessageConnection;\n","\"use strict\";\n/* --------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n * ------------------------------------------------------------------------------------------ */\n/// \nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ProgressType = exports.ProgressToken = exports.createMessageConnection = exports.NullLogger = exports.ConnectionOptions = exports.ConnectionStrategy = exports.AbstractMessageBuffer = exports.WriteableStreamMessageWriter = exports.AbstractMessageWriter = exports.MessageWriter = exports.ReadableStreamMessageReader = exports.AbstractMessageReader = exports.MessageReader = exports.SharedArrayReceiverStrategy = exports.SharedArraySenderStrategy = exports.CancellationToken = exports.CancellationTokenSource = exports.Emitter = exports.Event = exports.Disposable = exports.LRUCache = exports.Touch = exports.LinkedMap = exports.ParameterStructures = exports.NotificationType9 = exports.NotificationType8 = exports.NotificationType7 = exports.NotificationType6 = exports.NotificationType5 = exports.NotificationType4 = exports.NotificationType3 = exports.NotificationType2 = exports.NotificationType1 = exports.NotificationType0 = exports.NotificationType = exports.ErrorCodes = exports.ResponseError = exports.RequestType9 = exports.RequestType8 = exports.RequestType7 = exports.RequestType6 = exports.RequestType5 = exports.RequestType4 = exports.RequestType3 = exports.RequestType2 = exports.RequestType1 = exports.RequestType0 = exports.RequestType = exports.Message = exports.RAL = void 0;\nexports.MessageStrategy = exports.CancellationStrategy = exports.CancellationSenderStrategy = exports.CancellationReceiverStrategy = exports.ConnectionError = exports.ConnectionErrors = exports.LogTraceNotification = exports.SetTraceNotification = exports.TraceFormat = exports.TraceValues = exports.Trace = void 0;\nconst messages_1 = require(\"./messages\");\nObject.defineProperty(exports, \"Message\", { enumerable: true, get: function () { return messages_1.Message; } });\nObject.defineProperty(exports, \"RequestType\", { enumerable: true, get: function () { return messages_1.RequestType; } });\nObject.defineProperty(exports, \"RequestType0\", { enumerable: true, get: function () { return messages_1.RequestType0; } });\nObject.defineProperty(exports, \"RequestType1\", { enumerable: true, get: function () { return messages_1.RequestType1; } });\nObject.defineProperty(exports, \"RequestType2\", { enumerable: true, get: function () { return messages_1.RequestType2; } });\nObject.defineProperty(exports, \"RequestType3\", { enumerable: true, get: function () { return messages_1.RequestType3; } });\nObject.defineProperty(exports, \"RequestType4\", { enumerable: true, get: function () { return messages_1.RequestType4; } });\nObject.defineProperty(exports, \"RequestType5\", { enumerable: true, get: function () { return messages_1.RequestType5; } });\nObject.defineProperty(exports, \"RequestType6\", { enumerable: true, get: function () { return messages_1.RequestType6; } });\nObject.defineProperty(exports, \"RequestType7\", { enumerable: true, get: function () { return messages_1.RequestType7; } });\nObject.defineProperty(exports, \"RequestType8\", { enumerable: true, get: function () { return messages_1.RequestType8; } });\nObject.defineProperty(exports, \"RequestType9\", { enumerable: true, get: function () { return messages_1.RequestType9; } });\nObject.defineProperty(exports, \"ResponseError\", { enumerable: true, get: function () { return messages_1.ResponseError; } });\nObject.defineProperty(exports, \"ErrorCodes\", { enumerable: true, get: function () { return messages_1.ErrorCodes; } });\nObject.defineProperty(exports, \"NotificationType\", { enumerable: true, get: function () { return messages_1.NotificationType; } });\nObject.defineProperty(exports, \"NotificationType0\", { enumerable: true, get: function () { return messages_1.NotificationType0; } });\nObject.defineProperty(exports, \"NotificationType1\", { enumerable: true, get: function () { return messages_1.NotificationType1; } });\nObject.defineProperty(exports, \"NotificationType2\", { enumerable: true, get: function () { return messages_1.NotificationType2; } });\nObject.defineProperty(exports, \"NotificationType3\", { enumerable: true, get: function () { return messages_1.NotificationType3; } });\nObject.defineProperty(exports, \"NotificationType4\", { enumerable: true, get: function () { return messages_1.NotificationType4; } });\nObject.defineProperty(exports, \"NotificationType5\", { enumerable: true, get: function () { return messages_1.NotificationType5; } });\nObject.defineProperty(exports, \"NotificationType6\", { enumerable: true, get: function () { return messages_1.NotificationType6; } });\nObject.defineProperty(exports, \"NotificationType7\", { enumerable: true, get: function () { return messages_1.NotificationType7; } });\nObject.defineProperty(exports, \"NotificationType8\", { enumerable: true, get: function () { return messages_1.NotificationType8; } });\nObject.defineProperty(exports, \"NotificationType9\", { enumerable: true, get: function () { return messages_1.NotificationType9; } });\nObject.defineProperty(exports, \"ParameterStructures\", { enumerable: true, get: function () { return messages_1.ParameterStructures; } });\nconst linkedMap_1 = require(\"./linkedMap\");\nObject.defineProperty(exports, \"LinkedMap\", { enumerable: true, get: function () { return linkedMap_1.LinkedMap; } });\nObject.defineProperty(exports, \"LRUCache\", { enumerable: true, get: function () { return linkedMap_1.LRUCache; } });\nObject.defineProperty(exports, \"Touch\", { enumerable: true, get: function () { return linkedMap_1.Touch; } });\nconst disposable_1 = require(\"./disposable\");\nObject.defineProperty(exports, \"Disposable\", { enumerable: true, get: function () { return disposable_1.Disposable; } });\nconst events_1 = require(\"./events\");\nObject.defineProperty(exports, \"Event\", { enumerable: true, get: function () { return events_1.Event; } });\nObject.defineProperty(exports, \"Emitter\", { enumerable: true, get: function () { return events_1.Emitter; } });\nconst cancellation_1 = require(\"./cancellation\");\nObject.defineProperty(exports, \"CancellationTokenSource\", { enumerable: true, get: function () { return cancellation_1.CancellationTokenSource; } });\nObject.defineProperty(exports, \"CancellationToken\", { enumerable: true, get: function () { return cancellation_1.CancellationToken; } });\nconst sharedArrayCancellation_1 = require(\"./sharedArrayCancellation\");\nObject.defineProperty(exports, \"SharedArraySenderStrategy\", { enumerable: true, get: function () { return sharedArrayCancellation_1.SharedArraySenderStrategy; } });\nObject.defineProperty(exports, \"SharedArrayReceiverStrategy\", { enumerable: true, get: function () { return sharedArrayCancellation_1.SharedArrayReceiverStrategy; } });\nconst messageReader_1 = require(\"./messageReader\");\nObject.defineProperty(exports, \"MessageReader\", { enumerable: true, get: function () { return messageReader_1.MessageReader; } });\nObject.defineProperty(exports, \"AbstractMessageReader\", { enumerable: true, get: function () { return messageReader_1.AbstractMessageReader; } });\nObject.defineProperty(exports, \"ReadableStreamMessageReader\", { enumerable: true, get: function () { return messageReader_1.ReadableStreamMessageReader; } });\nconst messageWriter_1 = require(\"./messageWriter\");\nObject.defineProperty(exports, \"MessageWriter\", { enumerable: true, get: function () { return messageWriter_1.MessageWriter; } });\nObject.defineProperty(exports, \"AbstractMessageWriter\", { enumerable: true, get: function () { return messageWriter_1.AbstractMessageWriter; } });\nObject.defineProperty(exports, \"WriteableStreamMessageWriter\", { enumerable: true, get: function () { return messageWriter_1.WriteableStreamMessageWriter; } });\nconst messageBuffer_1 = require(\"./messageBuffer\");\nObject.defineProperty(exports, \"AbstractMessageBuffer\", { enumerable: true, get: function () { return messageBuffer_1.AbstractMessageBuffer; } });\nconst connection_1 = require(\"./connection\");\nObject.defineProperty(exports, \"ConnectionStrategy\", { enumerable: true, get: function () { return connection_1.ConnectionStrategy; } });\nObject.defineProperty(exports, \"ConnectionOptions\", { enumerable: true, get: function () { return connection_1.ConnectionOptions; } });\nObject.defineProperty(exports, \"NullLogger\", { enumerable: true, get: function () { return connection_1.NullLogger; } });\nObject.defineProperty(exports, \"createMessageConnection\", { enumerable: true, get: function () { return connection_1.createMessageConnection; } });\nObject.defineProperty(exports, \"ProgressToken\", { enumerable: true, get: function () { return connection_1.ProgressToken; } });\nObject.defineProperty(exports, \"ProgressType\", { enumerable: true, get: function () { return connection_1.ProgressType; } });\nObject.defineProperty(exports, \"Trace\", { enumerable: true, get: function () { return connection_1.Trace; } });\nObject.defineProperty(exports, \"TraceValues\", { enumerable: true, get: function () { return connection_1.TraceValues; } });\nObject.defineProperty(exports, \"TraceFormat\", { enumerable: true, get: function () { return connection_1.TraceFormat; } });\nObject.defineProperty(exports, \"SetTraceNotification\", { enumerable: true, get: function () { return connection_1.SetTraceNotification; } });\nObject.defineProperty(exports, \"LogTraceNotification\", { enumerable: true, get: function () { return connection_1.LogTraceNotification; } });\nObject.defineProperty(exports, \"ConnectionErrors\", { enumerable: true, get: function () { return connection_1.ConnectionErrors; } });\nObject.defineProperty(exports, \"ConnectionError\", { enumerable: true, get: function () { return connection_1.ConnectionError; } });\nObject.defineProperty(exports, \"CancellationReceiverStrategy\", { enumerable: true, get: function () { return connection_1.CancellationReceiverStrategy; } });\nObject.defineProperty(exports, \"CancellationSenderStrategy\", { enumerable: true, get: function () { return connection_1.CancellationSenderStrategy; } });\nObject.defineProperty(exports, \"CancellationStrategy\", { enumerable: true, get: function () { return connection_1.CancellationStrategy; } });\nObject.defineProperty(exports, \"MessageStrategy\", { enumerable: true, get: function () { return connection_1.MessageStrategy; } });\nconst ral_1 = require(\"./ral\");\nexports.RAL = ral_1.default;\n","\"use strict\";\n/* --------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n * ------------------------------------------------------------------------------------------ */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst util_1 = require(\"util\");\nconst api_1 = require(\"../common/api\");\nclass MessageBuffer extends api_1.AbstractMessageBuffer {\n constructor(encoding = 'utf-8') {\n super(encoding);\n }\n emptyBuffer() {\n return MessageBuffer.emptyBuffer;\n }\n fromString(value, encoding) {\n return Buffer.from(value, encoding);\n }\n toString(value, encoding) {\n if (value instanceof Buffer) {\n return value.toString(encoding);\n }\n else {\n return new util_1.TextDecoder(encoding).decode(value);\n }\n }\n asNative(buffer, length) {\n if (length === undefined) {\n return buffer instanceof Buffer ? buffer : Buffer.from(buffer);\n }\n else {\n return buffer instanceof Buffer ? buffer.slice(0, length) : Buffer.from(buffer, 0, length);\n }\n }\n allocNative(length) {\n return Buffer.allocUnsafe(length);\n }\n}\nMessageBuffer.emptyBuffer = Buffer.allocUnsafe(0);\nclass ReadableStreamWrapper {\n constructor(stream) {\n this.stream = stream;\n }\n onClose(listener) {\n this.stream.on('close', listener);\n return api_1.Disposable.create(() => this.stream.off('close', listener));\n }\n onError(listener) {\n this.stream.on('error', listener);\n return api_1.Disposable.create(() => this.stream.off('error', listener));\n }\n onEnd(listener) {\n this.stream.on('end', listener);\n return api_1.Disposable.create(() => this.stream.off('end', listener));\n }\n onData(listener) {\n this.stream.on('data', listener);\n return api_1.Disposable.create(() => this.stream.off('data', listener));\n }\n}\nclass WritableStreamWrapper {\n constructor(stream) {\n this.stream = stream;\n }\n onClose(listener) {\n this.stream.on('close', listener);\n return api_1.Disposable.create(() => this.stream.off('close', listener));\n }\n onError(listener) {\n this.stream.on('error', listener);\n return api_1.Disposable.create(() => this.stream.off('error', listener));\n }\n onEnd(listener) {\n this.stream.on('end', listener);\n return api_1.Disposable.create(() => this.stream.off('end', listener));\n }\n write(data, encoding) {\n return new Promise((resolve, reject) => {\n const callback = (error) => {\n if (error === undefined || error === null) {\n resolve();\n }\n else {\n reject(error);\n }\n };\n if (typeof data === 'string') {\n this.stream.write(data, encoding, callback);\n }\n else {\n this.stream.write(data, callback);\n }\n });\n }\n end() {\n this.stream.end();\n }\n}\nconst _ril = Object.freeze({\n messageBuffer: Object.freeze({\n create: (encoding) => new MessageBuffer(encoding)\n }),\n applicationJson: Object.freeze({\n encoder: Object.freeze({\n name: 'application/json',\n encode: (msg, options) => {\n try {\n return Promise.resolve(Buffer.from(JSON.stringify(msg, undefined, 0), options.charset));\n }\n catch (err) {\n return Promise.reject(err);\n }\n }\n }),\n decoder: Object.freeze({\n name: 'application/json',\n decode: (buffer, options) => {\n try {\n if (buffer instanceof Buffer) {\n return Promise.resolve(JSON.parse(buffer.toString(options.charset)));\n }\n else {\n return Promise.resolve(JSON.parse(new util_1.TextDecoder(options.charset).decode(buffer)));\n }\n }\n catch (err) {\n return Promise.reject(err);\n }\n }\n })\n }),\n stream: Object.freeze({\n asReadableStream: (stream) => new ReadableStreamWrapper(stream),\n asWritableStream: (stream) => new WritableStreamWrapper(stream)\n }),\n console: console,\n timer: Object.freeze({\n setTimeout(callback, ms, ...args) {\n const handle = setTimeout(callback, ms, ...args);\n return { dispose: () => clearTimeout(handle) };\n },\n setImmediate(callback, ...args) {\n const handle = setImmediate(callback, ...args);\n return { dispose: () => clearImmediate(handle) };\n },\n setInterval(callback, ms, ...args) {\n const handle = setInterval(callback, ms, ...args);\n return { dispose: () => clearInterval(handle) };\n }\n })\n});\nfunction RIL() {\n return _ril;\n}\n(function (RIL) {\n function install() {\n api_1.RAL.install(_ril);\n }\n RIL.install = install;\n})(RIL || (RIL = {}));\nexports.default = RIL;\n","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.createMessageConnection = exports.createServerSocketTransport = exports.createClientSocketTransport = exports.createServerPipeTransport = exports.createClientPipeTransport = exports.generateRandomPipeName = exports.StreamMessageWriter = exports.StreamMessageReader = exports.SocketMessageWriter = exports.SocketMessageReader = exports.PortMessageWriter = exports.PortMessageReader = exports.IPCMessageWriter = exports.IPCMessageReader = void 0;\n/* --------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n * ----------------------------------------------------------------------------------------- */\nconst ril_1 = require(\"./ril\");\n// Install the node runtime abstract.\nril_1.default.install();\nconst path = require(\"path\");\nconst os = require(\"os\");\nconst crypto_1 = require(\"crypto\");\nconst net_1 = require(\"net\");\nconst api_1 = require(\"../common/api\");\n__exportStar(require(\"../common/api\"), exports);\nclass IPCMessageReader extends api_1.AbstractMessageReader {\n constructor(process) {\n super();\n this.process = process;\n let eventEmitter = this.process;\n eventEmitter.on('error', (error) => this.fireError(error));\n eventEmitter.on('close', () => this.fireClose());\n }\n listen(callback) {\n this.process.on('message', callback);\n return api_1.Disposable.create(() => this.process.off('message', callback));\n }\n}\nexports.IPCMessageReader = IPCMessageReader;\nclass IPCMessageWriter extends api_1.AbstractMessageWriter {\n constructor(process) {\n super();\n this.process = process;\n this.errorCount = 0;\n const eventEmitter = this.process;\n eventEmitter.on('error', (error) => this.fireError(error));\n eventEmitter.on('close', () => this.fireClose);\n }\n write(msg) {\n try {\n if (typeof this.process.send === 'function') {\n this.process.send(msg, undefined, undefined, (error) => {\n if (error) {\n this.errorCount++;\n this.handleError(error, msg);\n }\n else {\n this.errorCount = 0;\n }\n });\n }\n return Promise.resolve();\n }\n catch (error) {\n this.handleError(error, msg);\n return Promise.reject(error);\n }\n }\n handleError(error, msg) {\n this.errorCount++;\n this.fireError(error, msg, this.errorCount);\n }\n end() {\n }\n}\nexports.IPCMessageWriter = IPCMessageWriter;\nclass PortMessageReader extends api_1.AbstractMessageReader {\n constructor(port) {\n super();\n this.onData = new api_1.Emitter;\n port.on('close', () => this.fireClose);\n port.on('error', (error) => this.fireError(error));\n port.on('message', (message) => {\n this.onData.fire(message);\n });\n }\n listen(callback) {\n return this.onData.event(callback);\n }\n}\nexports.PortMessageReader = PortMessageReader;\nclass PortMessageWriter extends api_1.AbstractMessageWriter {\n constructor(port) {\n super();\n this.port = port;\n this.errorCount = 0;\n port.on('close', () => this.fireClose());\n port.on('error', (error) => this.fireError(error));\n }\n write(msg) {\n try {\n this.port.postMessage(msg);\n return Promise.resolve();\n }\n catch (error) {\n this.handleError(error, msg);\n return Promise.reject(error);\n }\n }\n handleError(error, msg) {\n this.errorCount++;\n this.fireError(error, msg, this.errorCount);\n }\n end() {\n }\n}\nexports.PortMessageWriter = PortMessageWriter;\nclass SocketMessageReader extends api_1.ReadableStreamMessageReader {\n constructor(socket, encoding = 'utf-8') {\n super((0, ril_1.default)().stream.asReadableStream(socket), encoding);\n }\n}\nexports.SocketMessageReader = SocketMessageReader;\nclass SocketMessageWriter extends api_1.WriteableStreamMessageWriter {\n constructor(socket, options) {\n super((0, ril_1.default)().stream.asWritableStream(socket), options);\n this.socket = socket;\n }\n dispose() {\n super.dispose();\n this.socket.destroy();\n }\n}\nexports.SocketMessageWriter = SocketMessageWriter;\nclass StreamMessageReader extends api_1.ReadableStreamMessageReader {\n constructor(readable, encoding) {\n super((0, ril_1.default)().stream.asReadableStream(readable), encoding);\n }\n}\nexports.StreamMessageReader = StreamMessageReader;\nclass StreamMessageWriter extends api_1.WriteableStreamMessageWriter {\n constructor(writable, options) {\n super((0, ril_1.default)().stream.asWritableStream(writable), options);\n }\n}\nexports.StreamMessageWriter = StreamMessageWriter;\nconst XDG_RUNTIME_DIR = process.env['XDG_RUNTIME_DIR'];\nconst safeIpcPathLengths = new Map([\n ['linux', 107],\n ['darwin', 103]\n]);\nfunction generateRandomPipeName() {\n const randomSuffix = (0, crypto_1.randomBytes)(21).toString('hex');\n if (process.platform === 'win32') {\n return `\\\\\\\\.\\\\pipe\\\\vscode-jsonrpc-${randomSuffix}-sock`;\n }\n let result;\n if (XDG_RUNTIME_DIR) {\n result = path.join(XDG_RUNTIME_DIR, `vscode-ipc-${randomSuffix}.sock`);\n }\n else {\n result = path.join(os.tmpdir(), `vscode-${randomSuffix}.sock`);\n }\n const limit = safeIpcPathLengths.get(process.platform);\n if (limit !== undefined && result.length > limit) {\n (0, ril_1.default)().console.warn(`WARNING: IPC handle \"${result}\" is longer than ${limit} characters.`);\n }\n return result;\n}\nexports.generateRandomPipeName = generateRandomPipeName;\nfunction createClientPipeTransport(pipeName, encoding = 'utf-8') {\n let connectResolve;\n const connected = new Promise((resolve, _reject) => {\n connectResolve = resolve;\n });\n return new Promise((resolve, reject) => {\n let server = (0, net_1.createServer)((socket) => {\n server.close();\n connectResolve([\n new SocketMessageReader(socket, encoding),\n new SocketMessageWriter(socket, encoding)\n ]);\n });\n server.on('error', reject);\n server.listen(pipeName, () => {\n server.removeListener('error', reject);\n resolve({\n onConnected: () => { return connected; }\n });\n });\n });\n}\nexports.createClientPipeTransport = createClientPipeTransport;\nfunction createServerPipeTransport(pipeName, encoding = 'utf-8') {\n const socket = (0, net_1.createConnection)(pipeName);\n return [\n new SocketMessageReader(socket, encoding),\n new SocketMessageWriter(socket, encoding)\n ];\n}\nexports.createServerPipeTransport = createServerPipeTransport;\nfunction createClientSocketTransport(port, encoding = 'utf-8') {\n let connectResolve;\n const connected = new Promise((resolve, _reject) => {\n connectResolve = resolve;\n });\n return new Promise((resolve, reject) => {\n const server = (0, net_1.createServer)((socket) => {\n server.close();\n connectResolve([\n new SocketMessageReader(socket, encoding),\n new SocketMessageWriter(socket, encoding)\n ]);\n });\n server.on('error', reject);\n server.listen(port, '127.0.0.1', () => {\n server.removeListener('error', reject);\n resolve({\n onConnected: () => { return connected; }\n });\n });\n });\n}\nexports.createClientSocketTransport = createClientSocketTransport;\nfunction createServerSocketTransport(port, encoding = 'utf-8') {\n const socket = (0, net_1.createConnection)(port, '127.0.0.1');\n return [\n new SocketMessageReader(socket, encoding),\n new SocketMessageWriter(socket, encoding)\n ];\n}\nexports.createServerSocketTransport = createServerSocketTransport;\nfunction isReadableStream(value) {\n const candidate = value;\n return candidate.read !== undefined && candidate.addListener !== undefined;\n}\nfunction isWritableStream(value) {\n const candidate = value;\n return candidate.write !== undefined && candidate.addListener !== undefined;\n}\nfunction createMessageConnection(input, output, logger, options) {\n if (!logger) {\n logger = api_1.NullLogger;\n }\n const reader = isReadableStream(input) ? new StreamMessageReader(input) : input;\n const writer = isWritableStream(output) ? new StreamMessageWriter(output) : output;\n if (api_1.ConnectionStrategy.is(options)) {\n options = { connectionStrategy: options };\n }\n return (0, api_1.createMessageConnection)(reader, writer, logger, options);\n}\nexports.createMessageConnection = createMessageConnection;\n","/* --------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n * ----------------------------------------------------------------------------------------- */\n'use strict';\n\nmodule.exports = require('./lib/node/main');","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.openConnection = exports.hasMinimumVersion = exports.getFileReferencesRequestType = exports.getDeploymentGraphRequestType = exports.getMetadataRequestType = exports.compileParamsRequestType = exports.compileRequestType = exports.versionRequestType = void 0;\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nconst path_1 = __importDefault(require(\"path\"));\nconst os_1 = __importDefault(require(\"os\"));\nconst child_process_1 = require(\"child_process\");\nconst crypto_1 = require(\"crypto\");\nconst net_1 = require(\"net\");\nconst node_1 = require(\"vscode-jsonrpc/node\");\nexports.versionRequestType = new node_1.RequestType(\"bicep/version\");\nexports.compileRequestType = new node_1.RequestType(\"bicep/compile\");\nexports.compileParamsRequestType = new node_1.RequestType(\"bicep/compileParams\");\nexports.getMetadataRequestType = new node_1.RequestType(\"bicep/getMetadata\");\nexports.getDeploymentGraphRequestType = new node_1.RequestType(\"bicep/getDeploymentGraph\");\nexports.getFileReferencesRequestType = new node_1.RequestType(\"bicep/getFileReferences\");\nfunction hasMinimumVersion(version) {\n const minimumVersion = '0.25.3';\n const compareResult = version.localeCompare(minimumVersion, undefined, { numeric: true, sensitivity: 'base' });\n return {\n success: compareResult >= 0,\n minimumVersion\n };\n}\nexports.hasMinimumVersion = hasMinimumVersion;\nfunction tryGetVersionNumberError(bicepPath) {\n const result = (0, child_process_1.spawnSync)(bicepPath, [\"--version\"], { encoding: \"utf-8\" });\n if (result.status !== 0) {\n return `Failed to obtain valid Bicep version from '${bicepPath} --version'`;\n }\n const versionMatch = result.stdout.match(/Bicep CLI version ([^ ]+) /);\n if (!versionMatch) {\n return `Failed to obtain valid Bicep version from '${bicepPath} --version'`;\n }\n const actualVersion = versionMatch[1];\n const { success, minimumVersion } = hasMinimumVersion(actualVersion);\n if (!success) {\n return `A minimum Bicep version of ${minimumVersion} is required. Detected version ${actualVersion} from '${bicepPath} --version'`;\n }\n return;\n}\nfunction generateRandomPipeName() {\n const randomSuffix = (0, crypto_1.randomBytes)(21).toString(\"hex\");\n if (process.platform === \"win32\") {\n return `\\\\\\\\.\\\\pipe\\\\bicep-${randomSuffix}-sock`;\n }\n return path_1.default.join(os_1.default.tmpdir(), `bicep-${randomSuffix}.sock`);\n}\nfunction connectClientPipe(pipeName, process) {\n return new Promise((resolve, reject) => {\n const handleConnectionError = () => {\n server.close();\n reject();\n };\n const server = (0, net_1.createServer)(socket => {\n process.removeListener('exit', handleConnectionError);\n server.close();\n resolve([\n new node_1.SocketMessageReader(socket, 'utf-8'),\n new node_1.SocketMessageWriter(socket, 'utf-8')\n ]);\n });\n process.on('exit', handleConnectionError);\n process.on('error', handleConnectionError);\n server.on('error', handleConnectionError);\n server.listen(pipeName, () => server.removeListener('error', handleConnectionError));\n });\n}\nasync function openConnection(bicepPath) {\n const pipePath = generateRandomPipeName();\n const process = (0, child_process_1.spawn)(bicepPath, [\"jsonrpc\", \"--pipe\", pipePath]);\n let stderr = '';\n process.stderr.on(\"data\", (x) => stderr += x.toString());\n const processExitedEarly = new Promise((_, reject) => {\n process.on(\"error\", (err) => {\n reject(`Failed to invoke '${bicepPath} jsonrpc'. Error: ${err}`);\n });\n process.on(\"exit\", () => {\n const error = tryGetVersionNumberError(bicepPath);\n if (error) {\n reject(error);\n }\n else {\n reject(`Failed to invoke '${bicepPath} jsonrpc'. Error: ${stderr}`);\n }\n });\n });\n const transportConnected = connectClientPipe(pipePath, process);\n const result = await Promise.race([\n transportConnected,\n processExitedEarly,\n ]);\n const [reader, writer] = result;\n const connection = (0, node_1.createMessageConnection)(reader, writer, console);\n connection.onDispose(() => process.kill());\n process.on(\"exit\", () => connection.dispose());\n connection.listen();\n return connection;\n}\nexports.openConnection = openConnection;\n//# sourceMappingURL=jsonrpc.js.map","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Bicep = void 0;\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nconst os_1 = __importDefault(require(\"os\"));\nconst install_1 = require(\"./install\");\nconst jsonrpc_1 = require(\"./jsonrpc\");\n/**\n * Helper class to install and interact with the Bicep CLI.\n */\nclass Bicep {\n constructor(connection) {\n this.connection = connection;\n }\n /**\n * Initializes the Bicep library with a connection to the Bicep CLI.\n *\n * @param bicepPath The path to the Bicep CLI. You can point this to an existing install, or use `Bicep.install()` to obtain this path.\n * @returns A `Bicep` instance.\n */\n static async initialize(bicepPath) {\n const connection = await (0, jsonrpc_1.openConnection)(bicepPath);\n const bicep = new Bicep(connection);\n try {\n const version = await bicep.version();\n const { success, minimumVersion } = (0, jsonrpc_1.hasMinimumVersion)(version);\n if (!success) {\n throw new Error(`Bicep CLI version ${version} is not supported. Please install version ${minimumVersion} or later.`);\n }\n return bicep;\n }\n catch (e) {\n bicep.dispose();\n throw e;\n }\n }\n /**\n * Returns the Bicep CLI download URL.\n *\n * @param version The version of the Bicep CLI to download. Defaults to the latest version.\n * @param platform The platform to download for. Defaults to `os.platform()`.\n * @param arch The architecture to download for. Defaults to `os.arch()`.\n * @returns The download URL.\n */\n static async getDownloadUrl(version, platform, arch) {\n platform !== null && platform !== void 0 ? platform : (platform = os_1.default.platform());\n arch !== null && arch !== void 0 ? arch : (arch = os_1.default.arch());\n return await (0, install_1.getBicepCliDownloadUrl)(platform, arch, version);\n }\n /**\n * Downloads the Bicep CLI to the specified path.\n *\n * @param basePath The file system path to download the Bicep CLI to. This path must already exist.\n * @param version The version of the Bicep CLI to download. Defaults to the latest version.\n * @param platform The platform to download for. Defaults to `os.platform()`.\n * @param arch The architecture to download for. Defaults to `os.arch()`.\n * @returns The path to the Bicep CLI.\n */\n static async install(basePath, version, platform, arch) {\n platform !== null && platform !== void 0 ? platform : (platform = os_1.default.platform());\n arch !== null && arch !== void 0 ? arch : (arch = os_1.default.arch());\n return await (0, install_1.installBicepCliWithArch)(basePath, platform, arch, version);\n }\n /**\n * Gets the version of the Bicep CLI.\n *\n * @returns The version.\n */\n async version() {\n const response = await this.connection.sendRequest(jsonrpc_1.versionRequestType, {});\n return response.version;\n }\n /**\n * Compiles a Bicep file.\n *\n * @param request The compilation request.\n * @returns The compilation response.\n */\n async compile(request) {\n return await this.connection.sendRequest(jsonrpc_1.compileRequestType, request);\n }\n /**\n * Compiles a Bicepparam file.\n *\n * @param request The compilation request.\n * @returns The compilation response.\n */\n async compileParams(request) {\n return await this.connection.sendRequest(jsonrpc_1.compileParamsRequestType, request);\n }\n /**\n * Returns metadata for a Bicep file.\n *\n * @param request The getMetadata request.\n * @returns The getMetadata response.\n */\n async getMetadata(request) {\n return await this.connection.sendRequest(jsonrpc_1.getMetadataRequestType, request);\n }\n /**\n * Returns the deployment graph for a Bicep file.\n *\n * @param request The getDeploymentGraph request.\n * @returns The getDeploymentGraph response.\n */\n async getDeploymentGraph(request) {\n return await this.connection.sendRequest(jsonrpc_1.getDeploymentGraphRequestType, request);\n }\n /**\n * Returns file references for a Bicep file.\n *\n * @param request The getFileReferences request.\n * @returns The getFileReferences response.\n */\n async getFileReferences(request) {\n return await this.connection.sendRequest(jsonrpc_1.getFileReferencesRequestType, request);\n }\n /**\n * Disposes of the connection to the Bicep CLI. This MUST be called after usage to avoid leaving the process running.\n */\n dispose() {\n this.connection.dispose();\n }\n}\nexports.Bicep = Bicep;\n//# sourceMappingURL=bicep.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n//# sourceMappingURL=types.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./utils/bicep\"), exports);\n__exportStar(require(\"./utils/types\"), exports);\n//# sourceMappingURL=index.js.map","/******************************************************************************\nCopyright (c) Microsoft Corporation.\n\nPermission to use, copy, modify, and/or distribute this software for any\npurpose with or without fee is hereby granted.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\nPERFORMANCE OF THIS SOFTWARE.\n***************************************************************************** */\n/* global Reflect, Promise, SuppressedError, Symbol, Iterator */\n\nvar extendStatics = function(d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n};\n\nexport function __extends(d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n}\n\nexport var __assign = function() {\n __assign = Object.assign || function __assign(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n }\n return __assign.apply(this, arguments);\n}\n\nexport function __rest(s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n}\n\nexport function __decorate(decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n}\n\nexport function __param(paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n}\n\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\n var _, done = false;\n for (var i = decorators.length - 1; i >= 0; i--) {\n var context = {};\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\n if (kind === \"accessor\") {\n if (result === void 0) continue;\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\n if (_ = accept(result.get)) descriptor.get = _;\n if (_ = accept(result.set)) descriptor.set = _;\n if (_ = accept(result.init)) initializers.unshift(_);\n }\n else if (_ = accept(result)) {\n if (kind === \"field\") initializers.unshift(_);\n else descriptor[key] = _;\n }\n }\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\n done = true;\n};\n\nexport function __runInitializers(thisArg, initializers, value) {\n var useValue = arguments.length > 2;\n for (var i = 0; i < initializers.length; i++) {\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\n }\n return useValue ? value : void 0;\n};\n\nexport function __propKey(x) {\n return typeof x === \"symbol\" ? x : \"\".concat(x);\n};\n\nexport function __setFunctionName(f, name, prefix) {\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\n};\n\nexport function __metadata(metadataKey, metadataValue) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\n}\n\nexport function __awaiter(thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n}\n\nexport function __generator(thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === \"function\" ? Iterator : Object).prototype);\n return g.next = verb(0), g[\"throw\"] = verb(1), g[\"return\"] = verb(2), typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n}\n\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n});\n\nexport function __exportStar(m, o) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\n}\n\nexport function __values(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n}\n\nexport function __read(o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n}\n\n/** @deprecated */\nexport function __spread() {\n for (var ar = [], i = 0; i < arguments.length; i++)\n ar = ar.concat(__read(arguments[i]));\n return ar;\n}\n\n/** @deprecated */\nexport function __spreadArrays() {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n r[k] = a[j];\n return r;\n}\n\nexport function __spreadArray(to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n}\n\nexport function __await(v) {\n return this instanceof __await ? (this.v = v, this) : new __await(v);\n}\n\nexport function __asyncGenerator(thisArg, _arguments, generator) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\n return i = Object.create((typeof AsyncIterator === \"function\" ? AsyncIterator : Object).prototype), verb(\"next\"), verb(\"throw\"), verb(\"return\", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i;\n function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; }\n function verb(n, f) { if (g[n]) { i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } }\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\n function fulfill(value) { resume(\"next\", value); }\n function reject(value) { resume(\"throw\", value); }\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\n}\n\nexport function __asyncDelegator(o) {\n var i, p;\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\n}\n\nexport function __asyncValues(o) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var m = o[Symbol.asyncIterator], i;\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\n}\n\nexport function __makeTemplateObject(cooked, raw) {\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\n return cooked;\n};\n\nvar __setModuleDefault = Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n};\n\nvar ownKeys = function(o) {\n ownKeys = Object.getOwnPropertyNames || function (o) {\n var ar = [];\n for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;\n return ar;\n };\n return ownKeys(o);\n};\n\nexport function __importStar(mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== \"default\") __createBinding(result, mod, k[i]);\n __setModuleDefault(result, mod);\n return result;\n}\n\nexport function __importDefault(mod) {\n return (mod && mod.__esModule) ? mod : { default: mod };\n}\n\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n}\n\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n}\n\nexport function __classPrivateFieldIn(state, receiver) {\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\n}\n\nexport function __addDisposableResource(env, value, async) {\n if (value !== null && value !== void 0) {\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\n var dispose, inner;\n if (async) {\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\n dispose = value[Symbol.asyncDispose];\n }\n if (dispose === void 0) {\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\n dispose = value[Symbol.dispose];\n if (async) inner = dispose;\n }\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\n if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };\n env.stack.push({ value: value, dispose: dispose, async: async });\n }\n else if (async) {\n env.stack.push({ async: true });\n }\n return value;\n}\n\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\n var e = new Error(message);\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\n};\n\nexport function __disposeResources(env) {\n function fail(e) {\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\n env.hasError = true;\n }\n var r, s = 0;\n function next() {\n while (r = env.stack.pop()) {\n try {\n if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next);\n if (r.dispose) {\n var result = r.dispose.call(r.value);\n if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\n }\n else s |= 1;\n }\n catch (e) {\n fail(e);\n }\n }\n if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve();\n if (env.hasError) throw env.error;\n }\n return next();\n}\n\nexport function __rewriteRelativeImportExtension(path, preserveJsx) {\n if (typeof path === \"string\" && /^\\.\\.?\\//.test(path)) {\n return path.replace(/\\.(tsx)$|((?:\\.d)?)((?:\\.[^./]+?)?)\\.([cm]?)ts$/i, function (m, tsx, d, ext, cm) {\n return tsx ? preserveJsx ? \".jsx\" : \".js\" : d && (!ext || !cm) ? m : (d + ext + \".\" + cm.toLowerCase() + \"js\");\n });\n }\n return path;\n}\n\nexport default {\n __extends,\n __assign,\n __rest,\n __decorate,\n __param,\n __esDecorate,\n __runInitializers,\n __propKey,\n __setFunctionName,\n __metadata,\n __awaiter,\n __generator,\n __createBinding,\n __exportStar,\n __values,\n __read,\n __spread,\n __spreadArrays,\n __spreadArray,\n __await,\n __asyncGenerator,\n __asyncDelegator,\n __asyncValues,\n __makeTemplateObject,\n __importStar,\n __importDefault,\n __classPrivateFieldGet,\n __classPrivateFieldSet,\n __classPrivateFieldIn,\n __addDisposableResource,\n __disposeResources,\n __rewriteRelativeImportExtension,\n};\n","\"use strict\";\n/*\n * Copyright (c) Microsoft Corporation.\n * Licensed under the MIT License.\n *\n * Code generated by Microsoft (R) AutoRest Code Generator.\n * Changes may cause incorrect behavior and will be lost if the code is regenerated.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getContinuationToken = getContinuationToken;\nexports.setContinuationToken = setContinuationToken;\nconst pageMap = new WeakMap();\n/**\n * Given the last `.value` produced by the `byPage` iterator,\n * returns a continuation token that can be used to begin paging from\n * that point later.\n * @param page An object from accessing `value` on the IteratorResult from a `byPage` iterator.\n * @returns The continuation token that can be passed into byPage() during future calls.\n */\nfunction getContinuationToken(page) {\n var _a;\n if (typeof page !== \"object\" || page === null) {\n return undefined;\n }\n return (_a = pageMap.get(page)) === null || _a === void 0 ? void 0 : _a.continuationToken;\n}\nfunction setContinuationToken(page, continuationToken) {\n var _a;\n if (typeof page !== \"object\" || page === null || !continuationToken) {\n return;\n }\n const pageInfo = (_a = pageMap.get(page)) !== null && _a !== void 0 ? _a : {};\n pageInfo.continuationToken = continuationToken;\n pageMap.set(page, pageInfo);\n}\n//# sourceMappingURL=pagingHelper.js.map","\"use strict\";\n/*\n * Copyright (c) Microsoft Corporation.\n * Licensed under the MIT License.\n *\n * Code generated by Microsoft (R) AutoRest Code Generator.\n * Changes may cause incorrect behavior and will be lost if the code is regenerated.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.KnownTagsPatchOperation = exports.KnownExportTemplateOutputFormat = exports.KnownExtendedLocationType = exports.KnownLevel = exports.KnownProviderAuthorizationConsentState = exports.KnownAliasPathAttributes = exports.KnownAliasPathTokenType = exports.KnownProvisioningState = exports.KnownValidationLevel = exports.KnownExpressionEvaluationOptionsScopeType = exports.KnownExtensionConfigPropertyType = void 0;\n/** Known values of {@link ExtensionConfigPropertyType} that the service accepts. */\nvar KnownExtensionConfigPropertyType;\n(function (KnownExtensionConfigPropertyType) {\n /** Property type representing a string value. */\n KnownExtensionConfigPropertyType[\"String\"] = \"String\";\n /** Property type representing an integer value. */\n KnownExtensionConfigPropertyType[\"Int\"] = \"Int\";\n /** Property type representing a boolean value. */\n KnownExtensionConfigPropertyType[\"Bool\"] = \"Bool\";\n /** Property type representing an array value. */\n KnownExtensionConfigPropertyType[\"Array\"] = \"Array\";\n /** Property type representing an object value. */\n KnownExtensionConfigPropertyType[\"Object\"] = \"Object\";\n /** Property type representing a secure string value. */\n KnownExtensionConfigPropertyType[\"SecureString\"] = \"SecureString\";\n /** Property type representing a secure object value. */\n KnownExtensionConfigPropertyType[\"SecureObject\"] = \"SecureObject\";\n})(KnownExtensionConfigPropertyType || (exports.KnownExtensionConfigPropertyType = KnownExtensionConfigPropertyType = {}));\n/** Known values of {@link ExpressionEvaluationOptionsScopeType} that the service accepts. */\nvar KnownExpressionEvaluationOptionsScopeType;\n(function (KnownExpressionEvaluationOptionsScopeType) {\n /** NotSpecified */\n KnownExpressionEvaluationOptionsScopeType[\"NotSpecified\"] = \"NotSpecified\";\n /** Outer */\n KnownExpressionEvaluationOptionsScopeType[\"Outer\"] = \"Outer\";\n /** Inner */\n KnownExpressionEvaluationOptionsScopeType[\"Inner\"] = \"Inner\";\n})(KnownExpressionEvaluationOptionsScopeType || (exports.KnownExpressionEvaluationOptionsScopeType = KnownExpressionEvaluationOptionsScopeType = {}));\n/** Known values of {@link ValidationLevel} that the service accepts. */\nvar KnownValidationLevel;\n(function (KnownValidationLevel) {\n /** Static analysis of the template is performed. */\n KnownValidationLevel[\"Template\"] = \"Template\";\n /** Static analysis of the template is performed and resource declarations are sent to resource providers for semantic validation. Validates that the caller has RBAC write permissions on each resource. */\n KnownValidationLevel[\"Provider\"] = \"Provider\";\n /** Static analysis of the template is performed and resource declarations are sent to resource providers for semantic validation. Skips validating that the caller has RBAC write permissions on each resource. */\n KnownValidationLevel[\"ProviderNoRbac\"] = \"ProviderNoRbac\";\n})(KnownValidationLevel || (exports.KnownValidationLevel = KnownValidationLevel = {}));\n/** Known values of {@link ProvisioningState} that the service accepts. */\nvar KnownProvisioningState;\n(function (KnownProvisioningState) {\n /** NotSpecified */\n KnownProvisioningState[\"NotSpecified\"] = \"NotSpecified\";\n /** Accepted */\n KnownProvisioningState[\"Accepted\"] = \"Accepted\";\n /** Running */\n KnownProvisioningState[\"Running\"] = \"Running\";\n /** Ready */\n KnownProvisioningState[\"Ready\"] = \"Ready\";\n /** Creating */\n KnownProvisioningState[\"Creating\"] = \"Creating\";\n /** Created */\n KnownProvisioningState[\"Created\"] = \"Created\";\n /** Deleting */\n KnownProvisioningState[\"Deleting\"] = \"Deleting\";\n /** Deleted */\n KnownProvisioningState[\"Deleted\"] = \"Deleted\";\n /** Canceled */\n KnownProvisioningState[\"Canceled\"] = \"Canceled\";\n /** Failed */\n KnownProvisioningState[\"Failed\"] = \"Failed\";\n /** Succeeded */\n KnownProvisioningState[\"Succeeded\"] = \"Succeeded\";\n /** Updating */\n KnownProvisioningState[\"Updating\"] = \"Updating\";\n})(KnownProvisioningState || (exports.KnownProvisioningState = KnownProvisioningState = {}));\n/** Known values of {@link AliasPathTokenType} that the service accepts. */\nvar KnownAliasPathTokenType;\n(function (KnownAliasPathTokenType) {\n /** The token type is not specified. */\n KnownAliasPathTokenType[\"NotSpecified\"] = \"NotSpecified\";\n /** The token type can be anything. */\n KnownAliasPathTokenType[\"Any\"] = \"Any\";\n /** The token type is string. */\n KnownAliasPathTokenType[\"String\"] = \"String\";\n /** The token type is object. */\n KnownAliasPathTokenType[\"Object\"] = \"Object\";\n /** The token type is array. */\n KnownAliasPathTokenType[\"Array\"] = \"Array\";\n /** The token type is integer. */\n KnownAliasPathTokenType[\"Integer\"] = \"Integer\";\n /** The token type is number. */\n KnownAliasPathTokenType[\"Number\"] = \"Number\";\n /** The token type is boolean. */\n KnownAliasPathTokenType[\"Boolean\"] = \"Boolean\";\n})(KnownAliasPathTokenType || (exports.KnownAliasPathTokenType = KnownAliasPathTokenType = {}));\n/** Known values of {@link AliasPathAttributes} that the service accepts. */\nvar KnownAliasPathAttributes;\n(function (KnownAliasPathAttributes) {\n /** The token that the alias path is referring to has no attributes. */\n KnownAliasPathAttributes[\"None\"] = \"None\";\n /** The token that the alias path is referring to is modifiable by policies with 'modify' effect. */\n KnownAliasPathAttributes[\"Modifiable\"] = \"Modifiable\";\n})(KnownAliasPathAttributes || (exports.KnownAliasPathAttributes = KnownAliasPathAttributes = {}));\n/** Known values of {@link ProviderAuthorizationConsentState} that the service accepts. */\nvar KnownProviderAuthorizationConsentState;\n(function (KnownProviderAuthorizationConsentState) {\n /** NotSpecified */\n KnownProviderAuthorizationConsentState[\"NotSpecified\"] = \"NotSpecified\";\n /** Required */\n KnownProviderAuthorizationConsentState[\"Required\"] = \"Required\";\n /** NotRequired */\n KnownProviderAuthorizationConsentState[\"NotRequired\"] = \"NotRequired\";\n /** Consented */\n KnownProviderAuthorizationConsentState[\"Consented\"] = \"Consented\";\n})(KnownProviderAuthorizationConsentState || (exports.KnownProviderAuthorizationConsentState = KnownProviderAuthorizationConsentState = {}));\n/** Known values of {@link Level} that the service accepts. */\nvar KnownLevel;\n(function (KnownLevel) {\n /** Warning */\n KnownLevel[\"Warning\"] = \"Warning\";\n /** Info */\n KnownLevel[\"Info\"] = \"Info\";\n /** Error */\n KnownLevel[\"Error\"] = \"Error\";\n})(KnownLevel || (exports.KnownLevel = KnownLevel = {}));\n/** Known values of {@link ExtendedLocationType} that the service accepts. */\nvar KnownExtendedLocationType;\n(function (KnownExtendedLocationType) {\n /** EdgeZone */\n KnownExtendedLocationType[\"EdgeZone\"] = \"EdgeZone\";\n})(KnownExtendedLocationType || (exports.KnownExtendedLocationType = KnownExtendedLocationType = {}));\n/** Known values of {@link ExportTemplateOutputFormat} that the service accepts. */\nvar KnownExportTemplateOutputFormat;\n(function (KnownExportTemplateOutputFormat) {\n /** Json */\n KnownExportTemplateOutputFormat[\"Json\"] = \"Json\";\n /** Bicep */\n KnownExportTemplateOutputFormat[\"Bicep\"] = \"Bicep\";\n})(KnownExportTemplateOutputFormat || (exports.KnownExportTemplateOutputFormat = KnownExportTemplateOutputFormat = {}));\n/** Known values of {@link TagsPatchOperation} that the service accepts. */\nvar KnownTagsPatchOperation;\n(function (KnownTagsPatchOperation) {\n /** The 'replace' option replaces the entire set of existing tags with a new set. */\n KnownTagsPatchOperation[\"Replace\"] = \"Replace\";\n /** The 'merge' option allows adding tags with new names and updating the values of tags with existing names. */\n KnownTagsPatchOperation[\"Merge\"] = \"Merge\";\n /** The 'delete' option allows selectively deleting tags based on given names or name\\/value pairs. */\n KnownTagsPatchOperation[\"Delete\"] = \"Delete\";\n})(KnownTagsPatchOperation || (exports.KnownTagsPatchOperation = KnownTagsPatchOperation = {}));\n//# sourceMappingURL=index.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.encodeString = encodeString;\nexports.encodeByteArray = encodeByteArray;\nexports.decodeString = decodeString;\nexports.decodeStringToString = decodeStringToString;\n/**\n * Encodes a string in base64 format.\n * @param value - the string to encode\n * @internal\n */\nfunction encodeString(value) {\n return Buffer.from(value).toString(\"base64\");\n}\n/**\n * Encodes a byte array in base64 format.\n * @param value - the Uint8Aray to encode\n * @internal\n */\nfunction encodeByteArray(value) {\n const bufferValue = value instanceof Buffer ? value : Buffer.from(value.buffer);\n return bufferValue.toString(\"base64\");\n}\n/**\n * Decodes a base64 string into a byte array.\n * @param value - the base64 string to decode\n * @internal\n */\nfunction decodeString(value) {\n return Buffer.from(value, \"base64\");\n}\n/**\n * Decodes a base64 string into a string.\n * @param value - the base64 string to decode\n * @internal\n */\nfunction decodeStringToString(value) {\n return Buffer.from(value, \"base64\").toString();\n}\n//# sourceMappingURL=base64.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.XML_CHARKEY = exports.XML_ATTRKEY = void 0;\n/**\n * Default key used to access the XML attributes.\n */\nexports.XML_ATTRKEY = \"$\";\n/**\n * Default key used to access the XML value content.\n */\nexports.XML_CHARKEY = \"_\";\n//# sourceMappingURL=interfaces.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isPrimitiveBody = isPrimitiveBody;\nexports.isDuration = isDuration;\nexports.isValidUuid = isValidUuid;\nexports.flattenResponse = flattenResponse;\n/**\n * A type guard for a primitive response body.\n * @param value - Value to test\n *\n * @internal\n */\nfunction isPrimitiveBody(value, mapperTypeName) {\n return (mapperTypeName !== \"Composite\" &&\n mapperTypeName !== \"Dictionary\" &&\n (typeof value === \"string\" ||\n typeof value === \"number\" ||\n typeof value === \"boolean\" ||\n mapperTypeName?.match(/^(Date|DateTime|DateTimeRfc1123|UnixTime|ByteArray|Base64Url)$/i) !==\n null ||\n value === undefined ||\n value === null));\n}\nconst validateISODuration = /^(-|\\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/;\n/**\n * Returns true if the given string is in ISO 8601 format.\n * @param value - The value to be validated for ISO 8601 duration format.\n * @internal\n */\nfunction isDuration(value) {\n return validateISODuration.test(value);\n}\nconst validUuidRegex = /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/i;\n/**\n * Returns true if the provided uuid is valid.\n *\n * @param uuid - The uuid that needs to be validated.\n *\n * @internal\n */\nfunction isValidUuid(uuid) {\n return validUuidRegex.test(uuid);\n}\n/**\n * Maps the response as follows:\n * - wraps the response body if needed (typically if its type is primitive).\n * - returns null if the combination of the headers and the body is empty.\n * - otherwise, returns the combination of the headers and the body.\n *\n * @param responseObject - a representation of the parsed response\n * @returns the response that will be returned to the user which can be null and/or wrapped\n *\n * @internal\n */\nfunction handleNullableResponseAndWrappableBody(responseObject) {\n const combinedHeadersAndBody = {\n ...responseObject.headers,\n ...responseObject.body,\n };\n if (responseObject.hasNullableType &&\n Object.getOwnPropertyNames(combinedHeadersAndBody).length === 0) {\n return responseObject.shouldWrapBody ? { body: null } : null;\n }\n else {\n return responseObject.shouldWrapBody\n ? {\n ...responseObject.headers,\n body: responseObject.body,\n }\n : combinedHeadersAndBody;\n }\n}\n/**\n * Take a `FullOperationResponse` and turn it into a flat\n * response object to hand back to the consumer.\n * @param fullResponse - The processed response from the operation request\n * @param responseSpec - The response map from the OperationSpec\n *\n * @internal\n */\nfunction flattenResponse(fullResponse, responseSpec) {\n const parsedHeaders = fullResponse.parsedHeaders;\n // head methods never have a body, but we return a boolean set to body property\n // to indicate presence/absence of the resource\n if (fullResponse.request.method === \"HEAD\") {\n return {\n ...parsedHeaders,\n body: fullResponse.parsedBody,\n };\n }\n const bodyMapper = responseSpec && responseSpec.bodyMapper;\n const isNullable = Boolean(bodyMapper?.nullable);\n const expectedBodyTypeName = bodyMapper?.type.name;\n /** If the body is asked for, we look at the expected body type to handle it */\n if (expectedBodyTypeName === \"Stream\") {\n return {\n ...parsedHeaders,\n blobBody: fullResponse.blobBody,\n readableStreamBody: fullResponse.readableStreamBody,\n };\n }\n const modelProperties = (expectedBodyTypeName === \"Composite\" &&\n bodyMapper.type.modelProperties) ||\n {};\n const isPageableResponse = Object.keys(modelProperties).some((k) => modelProperties[k].serializedName === \"\");\n if (expectedBodyTypeName === \"Sequence\" || isPageableResponse) {\n const arrayResponse = fullResponse.parsedBody ?? [];\n for (const key of Object.keys(modelProperties)) {\n if (modelProperties[key].serializedName) {\n arrayResponse[key] = fullResponse.parsedBody?.[key];\n }\n }\n if (parsedHeaders) {\n for (const key of Object.keys(parsedHeaders)) {\n arrayResponse[key] = parsedHeaders[key];\n }\n }\n return isNullable &&\n !fullResponse.parsedBody &&\n !parsedHeaders &&\n Object.getOwnPropertyNames(modelProperties).length === 0\n ? null\n : arrayResponse;\n }\n return handleNullableResponseAndWrappableBody({\n body: fullResponse.parsedBody,\n headers: parsedHeaders,\n hasNullableType: isNullable,\n shouldWrapBody: isPrimitiveBody(fullResponse.parsedBody, expectedBodyTypeName),\n });\n}\n//# sourceMappingURL=utils.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.MapperTypeNames = void 0;\nexports.createSerializer = createSerializer;\nconst tslib_1 = require(\"tslib\");\nconst base64 = tslib_1.__importStar(require(\"./base64.js\"));\nconst interfaces_js_1 = require(\"./interfaces.js\");\nconst utils_js_1 = require(\"./utils.js\");\nclass SerializerImpl {\n modelMappers;\n isXML;\n constructor(modelMappers = {}, isXML = false) {\n this.modelMappers = modelMappers;\n this.isXML = isXML;\n }\n /**\n * @deprecated Removing the constraints validation on client side.\n */\n validateConstraints(mapper, value, objectName) {\n const failValidation = (constraintName, constraintValue) => {\n throw new Error(`\"${objectName}\" with value \"${value}\" should satisfy the constraint \"${constraintName}\": ${constraintValue}.`);\n };\n if (mapper.constraints && value !== undefined && value !== null) {\n const { ExclusiveMaximum, ExclusiveMinimum, InclusiveMaximum, InclusiveMinimum, MaxItems, MaxLength, MinItems, MinLength, MultipleOf, Pattern, UniqueItems, } = mapper.constraints;\n if (ExclusiveMaximum !== undefined && value >= ExclusiveMaximum) {\n failValidation(\"ExclusiveMaximum\", ExclusiveMaximum);\n }\n if (ExclusiveMinimum !== undefined && value <= ExclusiveMinimum) {\n failValidation(\"ExclusiveMinimum\", ExclusiveMinimum);\n }\n if (InclusiveMaximum !== undefined && value > InclusiveMaximum) {\n failValidation(\"InclusiveMaximum\", InclusiveMaximum);\n }\n if (InclusiveMinimum !== undefined && value < InclusiveMinimum) {\n failValidation(\"InclusiveMinimum\", InclusiveMinimum);\n }\n if (MaxItems !== undefined && value.length > MaxItems) {\n failValidation(\"MaxItems\", MaxItems);\n }\n if (MaxLength !== undefined && value.length > MaxLength) {\n failValidation(\"MaxLength\", MaxLength);\n }\n if (MinItems !== undefined && value.length < MinItems) {\n failValidation(\"MinItems\", MinItems);\n }\n if (MinLength !== undefined && value.length < MinLength) {\n failValidation(\"MinLength\", MinLength);\n }\n if (MultipleOf !== undefined && value % MultipleOf !== 0) {\n failValidation(\"MultipleOf\", MultipleOf);\n }\n if (Pattern) {\n const pattern = typeof Pattern === \"string\" ? new RegExp(Pattern) : Pattern;\n if (typeof value !== \"string\" || value.match(pattern) === null) {\n failValidation(\"Pattern\", Pattern);\n }\n }\n if (UniqueItems &&\n value.some((item, i, ar) => ar.indexOf(item) !== i)) {\n failValidation(\"UniqueItems\", UniqueItems);\n }\n }\n }\n /**\n * Serialize the given object based on its metadata defined in the mapper\n *\n * @param mapper - The mapper which defines the metadata of the serializable object\n *\n * @param object - A valid Javascript object to be serialized\n *\n * @param objectName - Name of the serialized object\n *\n * @param options - additional options to serialization\n *\n * @returns A valid serialized Javascript object\n */\n serialize(mapper, object, objectName, options = { xml: {} }) {\n const updatedOptions = {\n xml: {\n rootName: options.xml.rootName ?? \"\",\n includeRoot: options.xml.includeRoot ?? false,\n xmlCharKey: options.xml.xmlCharKey ?? interfaces_js_1.XML_CHARKEY,\n },\n };\n let payload = {};\n const mapperType = mapper.type.name;\n if (!objectName) {\n objectName = mapper.serializedName;\n }\n if (mapperType.match(/^Sequence$/i) !== null) {\n payload = [];\n }\n if (mapper.isConstant) {\n object = mapper.defaultValue;\n }\n // This table of allowed values should help explain\n // the mapper.required and mapper.nullable properties.\n // X means \"neither undefined or null are allowed\".\n // || required\n // || true | false\n // nullable || ==========================\n // true || null | undefined/null\n // false || X | undefined\n // undefined || X | undefined/null\n const { required, nullable } = mapper;\n if (required && nullable && object === undefined) {\n throw new Error(`${objectName} cannot be undefined.`);\n }\n if (required && !nullable && (object === undefined || object === null)) {\n throw new Error(`${objectName} cannot be null or undefined.`);\n }\n if (!required && nullable === false && object === null) {\n throw new Error(`${objectName} cannot be null.`);\n }\n if (object === undefined || object === null) {\n payload = object;\n }\n else {\n if (mapperType.match(/^any$/i) !== null) {\n payload = object;\n }\n else if (mapperType.match(/^(Number|String|Boolean|Object|Stream|Uuid)$/i) !== null) {\n payload = serializeBasicTypes(mapperType, objectName, object);\n }\n else if (mapperType.match(/^Enum$/i) !== null) {\n const enumMapper = mapper;\n payload = serializeEnumType(objectName, enumMapper.type.allowedValues, object);\n }\n else if (mapperType.match(/^(Date|DateTime|TimeSpan|DateTimeRfc1123|UnixTime)$/i) !== null) {\n payload = serializeDateTypes(mapperType, object, objectName);\n }\n else if (mapperType.match(/^ByteArray$/i) !== null) {\n payload = serializeByteArrayType(objectName, object);\n }\n else if (mapperType.match(/^Base64Url$/i) !== null) {\n payload = serializeBase64UrlType(objectName, object);\n }\n else if (mapperType.match(/^Sequence$/i) !== null) {\n payload = serializeSequenceType(this, mapper, object, objectName, Boolean(this.isXML), updatedOptions);\n }\n else if (mapperType.match(/^Dictionary$/i) !== null) {\n payload = serializeDictionaryType(this, mapper, object, objectName, Boolean(this.isXML), updatedOptions);\n }\n else if (mapperType.match(/^Composite$/i) !== null) {\n payload = serializeCompositeType(this, mapper, object, objectName, Boolean(this.isXML), updatedOptions);\n }\n }\n return payload;\n }\n /**\n * Deserialize the given object based on its metadata defined in the mapper\n *\n * @param mapper - The mapper which defines the metadata of the serializable object\n *\n * @param responseBody - A valid Javascript entity to be deserialized\n *\n * @param objectName - Name of the deserialized object\n *\n * @param options - Controls behavior of XML parser and builder.\n *\n * @returns A valid deserialized Javascript object\n */\n deserialize(mapper, responseBody, objectName, options = { xml: {} }) {\n const updatedOptions = {\n xml: {\n rootName: options.xml.rootName ?? \"\",\n includeRoot: options.xml.includeRoot ?? false,\n xmlCharKey: options.xml.xmlCharKey ?? interfaces_js_1.XML_CHARKEY,\n },\n ignoreUnknownProperties: options.ignoreUnknownProperties ?? false,\n };\n if (responseBody === undefined || responseBody === null) {\n if (this.isXML && mapper.type.name === \"Sequence\" && !mapper.xmlIsWrapped) {\n // Edge case for empty XML non-wrapped lists. xml2js can't distinguish\n // between the list being empty versus being missing,\n // so let's do the more user-friendly thing and return an empty list.\n responseBody = [];\n }\n // specifically check for undefined as default value can be a falsey value `0, \"\", false, null`\n if (mapper.defaultValue !== undefined) {\n responseBody = mapper.defaultValue;\n }\n return responseBody;\n }\n let payload;\n const mapperType = mapper.type.name;\n if (!objectName) {\n objectName = mapper.serializedName;\n }\n if (mapperType.match(/^Composite$/i) !== null) {\n payload = deserializeCompositeType(this, mapper, responseBody, objectName, updatedOptions);\n }\n else {\n if (this.isXML) {\n const xmlCharKey = updatedOptions.xml.xmlCharKey;\n /**\n * If the mapper specifies this as a non-composite type value but the responseBody contains\n * both header (\"$\" i.e., XML_ATTRKEY) and body (\"#\" i.e., XML_CHARKEY) properties,\n * then just reduce the responseBody value to the body (\"#\" i.e., XML_CHARKEY) property.\n */\n if (responseBody[interfaces_js_1.XML_ATTRKEY] !== undefined && responseBody[xmlCharKey] !== undefined) {\n responseBody = responseBody[xmlCharKey];\n }\n }\n if (mapperType.match(/^Number$/i) !== null) {\n payload = parseFloat(responseBody);\n if (isNaN(payload)) {\n payload = responseBody;\n }\n }\n else if (mapperType.match(/^Boolean$/i) !== null) {\n if (responseBody === \"true\") {\n payload = true;\n }\n else if (responseBody === \"false\") {\n payload = false;\n }\n else {\n payload = responseBody;\n }\n }\n else if (mapperType.match(/^(String|Enum|Object|Stream|Uuid|TimeSpan|any)$/i) !== null) {\n payload = responseBody;\n }\n else if (mapperType.match(/^(Date|DateTime|DateTimeRfc1123)$/i) !== null) {\n payload = new Date(responseBody);\n }\n else if (mapperType.match(/^UnixTime$/i) !== null) {\n payload = unixTimeToDate(responseBody);\n }\n else if (mapperType.match(/^ByteArray$/i) !== null) {\n payload = base64.decodeString(responseBody);\n }\n else if (mapperType.match(/^Base64Url$/i) !== null) {\n payload = base64UrlToByteArray(responseBody);\n }\n else if (mapperType.match(/^Sequence$/i) !== null) {\n payload = deserializeSequenceType(this, mapper, responseBody, objectName, updatedOptions);\n }\n else if (mapperType.match(/^Dictionary$/i) !== null) {\n payload = deserializeDictionaryType(this, mapper, responseBody, objectName, updatedOptions);\n }\n }\n if (mapper.isConstant) {\n payload = mapper.defaultValue;\n }\n return payload;\n }\n}\n/**\n * Method that creates and returns a Serializer.\n * @param modelMappers - Known models to map\n * @param isXML - If XML should be supported\n */\nfunction createSerializer(modelMappers = {}, isXML = false) {\n return new SerializerImpl(modelMappers, isXML);\n}\nfunction trimEnd(str, ch) {\n let len = str.length;\n while (len - 1 >= 0 && str[len - 1] === ch) {\n --len;\n }\n return str.substr(0, len);\n}\nfunction bufferToBase64Url(buffer) {\n if (!buffer) {\n return undefined;\n }\n if (!(buffer instanceof Uint8Array)) {\n throw new Error(`Please provide an input of type Uint8Array for converting to Base64Url.`);\n }\n // Uint8Array to Base64.\n const str = base64.encodeByteArray(buffer);\n // Base64 to Base64Url.\n return trimEnd(str, \"=\").replace(/\\+/g, \"-\").replace(/\\//g, \"_\");\n}\nfunction base64UrlToByteArray(str) {\n if (!str) {\n return undefined;\n }\n if (str && typeof str.valueOf() !== \"string\") {\n throw new Error(\"Please provide an input of type string for converting to Uint8Array\");\n }\n // Base64Url to Base64.\n str = str.replace(/-/g, \"+\").replace(/_/g, \"/\");\n // Base64 to Uint8Array.\n return base64.decodeString(str);\n}\nfunction splitSerializeName(prop) {\n const classes = [];\n let partialclass = \"\";\n if (prop) {\n const subwords = prop.split(\".\");\n for (const item of subwords) {\n if (item.charAt(item.length - 1) === \"\\\\\") {\n partialclass += item.substr(0, item.length - 1) + \".\";\n }\n else {\n partialclass += item;\n classes.push(partialclass);\n partialclass = \"\";\n }\n }\n }\n return classes;\n}\nfunction dateToUnixTime(d) {\n if (!d) {\n return undefined;\n }\n if (typeof d.valueOf() === \"string\") {\n d = new Date(d);\n }\n return Math.floor(d.getTime() / 1000);\n}\nfunction unixTimeToDate(n) {\n if (!n) {\n return undefined;\n }\n return new Date(n * 1000);\n}\nfunction serializeBasicTypes(typeName, objectName, value) {\n if (value !== null && value !== undefined) {\n if (typeName.match(/^Number$/i) !== null) {\n if (typeof value !== \"number\") {\n throw new Error(`${objectName} with value ${value} must be of type number.`);\n }\n }\n else if (typeName.match(/^String$/i) !== null) {\n if (typeof value.valueOf() !== \"string\") {\n throw new Error(`${objectName} with value \"${value}\" must be of type string.`);\n }\n }\n else if (typeName.match(/^Uuid$/i) !== null) {\n if (!(typeof value.valueOf() === \"string\" && (0, utils_js_1.isValidUuid)(value))) {\n throw new Error(`${objectName} with value \"${value}\" must be of type string and a valid uuid.`);\n }\n }\n else if (typeName.match(/^Boolean$/i) !== null) {\n if (typeof value !== \"boolean\") {\n throw new Error(`${objectName} with value ${value} must be of type boolean.`);\n }\n }\n else if (typeName.match(/^Stream$/i) !== null) {\n const objectType = typeof value;\n if (objectType !== \"string\" &&\n typeof value.pipe !== \"function\" && // NodeJS.ReadableStream\n typeof value.tee !== \"function\" && // browser ReadableStream\n !(value instanceof ArrayBuffer) &&\n !ArrayBuffer.isView(value) &&\n // File objects count as a type of Blob, so we want to use instanceof explicitly\n !((typeof Blob === \"function\" || typeof Blob === \"object\") && value instanceof Blob) &&\n objectType !== \"function\") {\n throw new Error(`${objectName} must be a string, Blob, ArrayBuffer, ArrayBufferView, ReadableStream, or () => ReadableStream.`);\n }\n }\n }\n return value;\n}\nfunction serializeEnumType(objectName, allowedValues, value) {\n if (!allowedValues) {\n throw new Error(`Please provide a set of allowedValues to validate ${objectName} as an Enum Type.`);\n }\n const isPresent = allowedValues.some((item) => {\n if (typeof item.valueOf() === \"string\") {\n return item.toLowerCase() === value.toLowerCase();\n }\n return item === value;\n });\n if (!isPresent) {\n throw new Error(`${value} is not a valid value for ${objectName}. The valid values are: ${JSON.stringify(allowedValues)}.`);\n }\n return value;\n}\nfunction serializeByteArrayType(objectName, value) {\n if (value !== undefined && value !== null) {\n if (!(value instanceof Uint8Array)) {\n throw new Error(`${objectName} must be of type Uint8Array.`);\n }\n value = base64.encodeByteArray(value);\n }\n return value;\n}\nfunction serializeBase64UrlType(objectName, value) {\n if (value !== undefined && value !== null) {\n if (!(value instanceof Uint8Array)) {\n throw new Error(`${objectName} must be of type Uint8Array.`);\n }\n value = bufferToBase64Url(value);\n }\n return value;\n}\nfunction serializeDateTypes(typeName, value, objectName) {\n if (value !== undefined && value !== null) {\n if (typeName.match(/^Date$/i) !== null) {\n if (!(value instanceof Date ||\n (typeof value.valueOf() === \"string\" && !isNaN(Date.parse(value))))) {\n throw new Error(`${objectName} must be an instanceof Date or a string in ISO8601 format.`);\n }\n value =\n value instanceof Date\n ? value.toISOString().substring(0, 10)\n : new Date(value).toISOString().substring(0, 10);\n }\n else if (typeName.match(/^DateTime$/i) !== null) {\n if (!(value instanceof Date ||\n (typeof value.valueOf() === \"string\" && !isNaN(Date.parse(value))))) {\n throw new Error(`${objectName} must be an instanceof Date or a string in ISO8601 format.`);\n }\n value = value instanceof Date ? value.toISOString() : new Date(value).toISOString();\n }\n else if (typeName.match(/^DateTimeRfc1123$/i) !== null) {\n if (!(value instanceof Date ||\n (typeof value.valueOf() === \"string\" && !isNaN(Date.parse(value))))) {\n throw new Error(`${objectName} must be an instanceof Date or a string in RFC-1123 format.`);\n }\n value = value instanceof Date ? value.toUTCString() : new Date(value).toUTCString();\n }\n else if (typeName.match(/^UnixTime$/i) !== null) {\n if (!(value instanceof Date ||\n (typeof value.valueOf() === \"string\" && !isNaN(Date.parse(value))))) {\n throw new Error(`${objectName} must be an instanceof Date or a string in RFC-1123/ISO8601 format ` +\n `for it to be serialized in UnixTime/Epoch format.`);\n }\n value = dateToUnixTime(value);\n }\n else if (typeName.match(/^TimeSpan$/i) !== null) {\n if (!(0, utils_js_1.isDuration)(value)) {\n throw new Error(`${objectName} must be a string in ISO 8601 format. Instead was \"${value}\".`);\n }\n }\n }\n return value;\n}\nfunction serializeSequenceType(serializer, mapper, object, objectName, isXml, options) {\n if (!Array.isArray(object)) {\n throw new Error(`${objectName} must be of type Array.`);\n }\n let elementType = mapper.type.element;\n if (!elementType || typeof elementType !== \"object\") {\n throw new Error(`element\" metadata for an Array must be defined in the ` +\n `mapper and it must of type \"object\" in ${objectName}.`);\n }\n // Quirk: Composite mappers referenced by `element` might\n // not have *all* properties declared (like uberParent),\n // so let's try to look up the full definition by name.\n if (elementType.type.name === \"Composite\" && elementType.type.className) {\n elementType = serializer.modelMappers[elementType.type.className] ?? elementType;\n }\n const tempArray = [];\n for (let i = 0; i < object.length; i++) {\n const serializedValue = serializer.serialize(elementType, object[i], objectName, options);\n if (isXml && elementType.xmlNamespace) {\n const xmlnsKey = elementType.xmlNamespacePrefix\n ? `xmlns:${elementType.xmlNamespacePrefix}`\n : \"xmlns\";\n if (elementType.type.name === \"Composite\") {\n tempArray[i] = { ...serializedValue };\n tempArray[i][interfaces_js_1.XML_ATTRKEY] = { [xmlnsKey]: elementType.xmlNamespace };\n }\n else {\n tempArray[i] = {};\n tempArray[i][options.xml.xmlCharKey] = serializedValue;\n tempArray[i][interfaces_js_1.XML_ATTRKEY] = { [xmlnsKey]: elementType.xmlNamespace };\n }\n }\n else {\n tempArray[i] = serializedValue;\n }\n }\n return tempArray;\n}\nfunction serializeDictionaryType(serializer, mapper, object, objectName, isXml, options) {\n if (typeof object !== \"object\") {\n throw new Error(`${objectName} must be of type object.`);\n }\n const valueType = mapper.type.value;\n if (!valueType || typeof valueType !== \"object\") {\n throw new Error(`\"value\" metadata for a Dictionary must be defined in the ` +\n `mapper and it must of type \"object\" in ${objectName}.`);\n }\n const tempDictionary = {};\n for (const key of Object.keys(object)) {\n const serializedValue = serializer.serialize(valueType, object[key], objectName, options);\n // If the element needs an XML namespace we need to add it within the $ property\n tempDictionary[key] = getXmlObjectValue(valueType, serializedValue, isXml, options);\n }\n // Add the namespace to the root element if needed\n if (isXml && mapper.xmlNamespace) {\n const xmlnsKey = mapper.xmlNamespacePrefix ? `xmlns:${mapper.xmlNamespacePrefix}` : \"xmlns\";\n const result = tempDictionary;\n result[interfaces_js_1.XML_ATTRKEY] = { [xmlnsKey]: mapper.xmlNamespace };\n return result;\n }\n return tempDictionary;\n}\n/**\n * Resolves the additionalProperties property from a referenced mapper\n * @param serializer - the serializer containing the entire set of mappers\n * @param mapper - the composite mapper to resolve\n * @param objectName - name of the object being serialized\n */\nfunction resolveAdditionalProperties(serializer, mapper, objectName) {\n const additionalProperties = mapper.type.additionalProperties;\n if (!additionalProperties && mapper.type.className) {\n const modelMapper = resolveReferencedMapper(serializer, mapper, objectName);\n return modelMapper?.type.additionalProperties;\n }\n return additionalProperties;\n}\n/**\n * Finds the mapper referenced by className\n * @param serializer - the serializer containing the entire set of mappers\n * @param mapper - the composite mapper to resolve\n * @param objectName - name of the object being serialized\n */\nfunction resolveReferencedMapper(serializer, mapper, objectName) {\n const className = mapper.type.className;\n if (!className) {\n throw new Error(`Class name for model \"${objectName}\" is not provided in the mapper \"${JSON.stringify(mapper, undefined, 2)}\".`);\n }\n return serializer.modelMappers[className];\n}\n/**\n * Resolves a composite mapper's modelProperties.\n * @param serializer - the serializer containing the entire set of mappers\n * @param mapper - the composite mapper to resolve\n */\nfunction resolveModelProperties(serializer, mapper, objectName) {\n let modelProps = mapper.type.modelProperties;\n if (!modelProps) {\n const modelMapper = resolveReferencedMapper(serializer, mapper, objectName);\n if (!modelMapper) {\n throw new Error(`mapper() cannot be null or undefined for model \"${mapper.type.className}\".`);\n }\n modelProps = modelMapper?.type.modelProperties;\n if (!modelProps) {\n throw new Error(`modelProperties cannot be null or undefined in the ` +\n `mapper \"${JSON.stringify(modelMapper)}\" of type \"${mapper.type.className}\" for object \"${objectName}\".`);\n }\n }\n return modelProps;\n}\nfunction serializeCompositeType(serializer, mapper, object, objectName, isXml, options) {\n if (getPolymorphicDiscriminatorRecursively(serializer, mapper)) {\n mapper = getPolymorphicMapper(serializer, mapper, object, \"clientName\");\n }\n if (object !== undefined && object !== null) {\n const payload = {};\n const modelProps = resolveModelProperties(serializer, mapper, objectName);\n for (const key of Object.keys(modelProps)) {\n const propertyMapper = modelProps[key];\n if (propertyMapper.readOnly) {\n continue;\n }\n let propName;\n let parentObject = payload;\n if (serializer.isXML) {\n if (propertyMapper.xmlIsWrapped) {\n propName = propertyMapper.xmlName;\n }\n else {\n propName = propertyMapper.xmlElementName || propertyMapper.xmlName;\n }\n }\n else {\n const paths = splitSerializeName(propertyMapper.serializedName);\n propName = paths.pop();\n for (const pathName of paths) {\n const childObject = parentObject[pathName];\n if ((childObject === undefined || childObject === null) &&\n ((object[key] !== undefined && object[key] !== null) ||\n propertyMapper.defaultValue !== undefined)) {\n parentObject[pathName] = {};\n }\n parentObject = parentObject[pathName];\n }\n }\n if (parentObject !== undefined && parentObject !== null) {\n if (isXml && mapper.xmlNamespace) {\n const xmlnsKey = mapper.xmlNamespacePrefix\n ? `xmlns:${mapper.xmlNamespacePrefix}`\n : \"xmlns\";\n parentObject[interfaces_js_1.XML_ATTRKEY] = {\n ...parentObject[interfaces_js_1.XML_ATTRKEY],\n [xmlnsKey]: mapper.xmlNamespace,\n };\n }\n const propertyObjectName = propertyMapper.serializedName !== \"\"\n ? objectName + \".\" + propertyMapper.serializedName\n : objectName;\n let toSerialize = object[key];\n const polymorphicDiscriminator = getPolymorphicDiscriminatorRecursively(serializer, mapper);\n if (polymorphicDiscriminator &&\n polymorphicDiscriminator.clientName === key &&\n (toSerialize === undefined || toSerialize === null)) {\n toSerialize = mapper.serializedName;\n }\n const serializedValue = serializer.serialize(propertyMapper, toSerialize, propertyObjectName, options);\n if (serializedValue !== undefined && propName !== undefined && propName !== null) {\n const value = getXmlObjectValue(propertyMapper, serializedValue, isXml, options);\n if (isXml && propertyMapper.xmlIsAttribute) {\n // XML_ATTRKEY, i.e., $ is the key attributes are kept under in xml2js.\n // This keeps things simple while preventing name collision\n // with names in user documents.\n parentObject[interfaces_js_1.XML_ATTRKEY] = parentObject[interfaces_js_1.XML_ATTRKEY] || {};\n parentObject[interfaces_js_1.XML_ATTRKEY][propName] = serializedValue;\n }\n else if (isXml && propertyMapper.xmlIsWrapped) {\n parentObject[propName] = { [propertyMapper.xmlElementName]: value };\n }\n else {\n parentObject[propName] = value;\n }\n }\n }\n }\n const additionalPropertiesMapper = resolveAdditionalProperties(serializer, mapper, objectName);\n if (additionalPropertiesMapper) {\n const propNames = Object.keys(modelProps);\n for (const clientPropName in object) {\n const isAdditionalProperty = propNames.every((pn) => pn !== clientPropName);\n if (isAdditionalProperty) {\n payload[clientPropName] = serializer.serialize(additionalPropertiesMapper, object[clientPropName], objectName + '[\"' + clientPropName + '\"]', options);\n }\n }\n }\n return payload;\n }\n return object;\n}\nfunction getXmlObjectValue(propertyMapper, serializedValue, isXml, options) {\n if (!isXml || !propertyMapper.xmlNamespace) {\n return serializedValue;\n }\n const xmlnsKey = propertyMapper.xmlNamespacePrefix\n ? `xmlns:${propertyMapper.xmlNamespacePrefix}`\n : \"xmlns\";\n const xmlNamespace = { [xmlnsKey]: propertyMapper.xmlNamespace };\n if ([\"Composite\"].includes(propertyMapper.type.name)) {\n if (serializedValue[interfaces_js_1.XML_ATTRKEY]) {\n return serializedValue;\n }\n else {\n const result = { ...serializedValue };\n result[interfaces_js_1.XML_ATTRKEY] = xmlNamespace;\n return result;\n }\n }\n const result = {};\n result[options.xml.xmlCharKey] = serializedValue;\n result[interfaces_js_1.XML_ATTRKEY] = xmlNamespace;\n return result;\n}\nfunction isSpecialXmlProperty(propertyName, options) {\n return [interfaces_js_1.XML_ATTRKEY, options.xml.xmlCharKey].includes(propertyName);\n}\nfunction deserializeCompositeType(serializer, mapper, responseBody, objectName, options) {\n const xmlCharKey = options.xml.xmlCharKey ?? interfaces_js_1.XML_CHARKEY;\n if (getPolymorphicDiscriminatorRecursively(serializer, mapper)) {\n mapper = getPolymorphicMapper(serializer, mapper, responseBody, \"serializedName\");\n }\n const modelProps = resolveModelProperties(serializer, mapper, objectName);\n let instance = {};\n const handledPropertyNames = [];\n for (const key of Object.keys(modelProps)) {\n const propertyMapper = modelProps[key];\n const paths = splitSerializeName(modelProps[key].serializedName);\n handledPropertyNames.push(paths[0]);\n const { serializedName, xmlName, xmlElementName } = propertyMapper;\n let propertyObjectName = objectName;\n if (serializedName !== \"\" && serializedName !== undefined) {\n propertyObjectName = objectName + \".\" + serializedName;\n }\n const headerCollectionPrefix = propertyMapper.headerCollectionPrefix;\n if (headerCollectionPrefix) {\n const dictionary = {};\n for (const headerKey of Object.keys(responseBody)) {\n if (headerKey.startsWith(headerCollectionPrefix)) {\n dictionary[headerKey.substring(headerCollectionPrefix.length)] = serializer.deserialize(propertyMapper.type.value, responseBody[headerKey], propertyObjectName, options);\n }\n handledPropertyNames.push(headerKey);\n }\n instance[key] = dictionary;\n }\n else if (serializer.isXML) {\n if (propertyMapper.xmlIsAttribute && responseBody[interfaces_js_1.XML_ATTRKEY]) {\n instance[key] = serializer.deserialize(propertyMapper, responseBody[interfaces_js_1.XML_ATTRKEY][xmlName], propertyObjectName, options);\n }\n else if (propertyMapper.xmlIsMsText) {\n if (responseBody[xmlCharKey] !== undefined) {\n instance[key] = responseBody[xmlCharKey];\n }\n else if (typeof responseBody === \"string\") {\n // The special case where xml parser parses \"content\" into JSON of\n // `{ name: \"content\"}` instead of `{ name: { \"_\": \"content\" }}`\n instance[key] = responseBody;\n }\n }\n else {\n const propertyName = xmlElementName || xmlName || serializedName;\n if (propertyMapper.xmlIsWrapped) {\n /* a list of wrapped by \n For the xml example below\n \n ...\n ...\n \n the responseBody has\n {\n Cors: {\n CorsRule: [{...}, {...}]\n }\n }\n xmlName is \"Cors\" and xmlElementName is\"CorsRule\".\n */\n const wrapped = responseBody[xmlName];\n const elementList = wrapped?.[xmlElementName] ?? [];\n instance[key] = serializer.deserialize(propertyMapper, elementList, propertyObjectName, options);\n handledPropertyNames.push(xmlName);\n }\n else {\n const property = responseBody[propertyName];\n instance[key] = serializer.deserialize(propertyMapper, property, propertyObjectName, options);\n handledPropertyNames.push(propertyName);\n }\n }\n }\n else {\n // deserialize the property if it is present in the provided responseBody instance\n let propertyInstance;\n let res = responseBody;\n // traversing the object step by step.\n let steps = 0;\n for (const item of paths) {\n if (!res)\n break;\n steps++;\n res = res[item];\n }\n // only accept null when reaching the last position of object otherwise it would be undefined\n if (res === null && steps < paths.length) {\n res = undefined;\n }\n propertyInstance = res;\n const polymorphicDiscriminator = mapper.type.polymorphicDiscriminator;\n // checking that the model property name (key)(ex: \"fishtype\") and the\n // clientName of the polymorphicDiscriminator {metadata} (ex: \"fishtype\")\n // instead of the serializedName of the polymorphicDiscriminator (ex: \"fish.type\")\n // is a better approach. The generator is not consistent with escaping '\\.' in the\n // serializedName of the property (ex: \"fish\\.type\") that is marked as polymorphic discriminator\n // and the serializedName of the metadata polymorphicDiscriminator (ex: \"fish.type\"). However,\n // the clientName transformation of the polymorphicDiscriminator (ex: \"fishtype\") and\n // the transformation of model property name (ex: \"fishtype\") is done consistently.\n // Hence, it is a safer bet to rely on the clientName of the polymorphicDiscriminator.\n if (polymorphicDiscriminator &&\n key === polymorphicDiscriminator.clientName &&\n (propertyInstance === undefined || propertyInstance === null)) {\n propertyInstance = mapper.serializedName;\n }\n let serializedValue;\n // paging\n if (Array.isArray(responseBody[key]) && modelProps[key].serializedName === \"\") {\n propertyInstance = responseBody[key];\n const arrayInstance = serializer.deserialize(propertyMapper, propertyInstance, propertyObjectName, options);\n // Copy over any properties that have already been added into the instance, where they do\n // not exist on the newly de-serialized array\n for (const [k, v] of Object.entries(instance)) {\n if (!Object.prototype.hasOwnProperty.call(arrayInstance, k)) {\n arrayInstance[k] = v;\n }\n }\n instance = arrayInstance;\n }\n else if (propertyInstance !== undefined || propertyMapper.defaultValue !== undefined) {\n serializedValue = serializer.deserialize(propertyMapper, propertyInstance, propertyObjectName, options);\n instance[key] = serializedValue;\n }\n }\n }\n const additionalPropertiesMapper = mapper.type.additionalProperties;\n if (additionalPropertiesMapper) {\n const isAdditionalProperty = (responsePropName) => {\n for (const clientPropName in modelProps) {\n const paths = splitSerializeName(modelProps[clientPropName].serializedName);\n if (paths[0] === responsePropName) {\n return false;\n }\n }\n return true;\n };\n for (const responsePropName in responseBody) {\n if (isAdditionalProperty(responsePropName)) {\n instance[responsePropName] = serializer.deserialize(additionalPropertiesMapper, responseBody[responsePropName], objectName + '[\"' + responsePropName + '\"]', options);\n }\n }\n }\n else if (responseBody && !options.ignoreUnknownProperties) {\n for (const key of Object.keys(responseBody)) {\n if (instance[key] === undefined &&\n !handledPropertyNames.includes(key) &&\n !isSpecialXmlProperty(key, options)) {\n instance[key] = responseBody[key];\n }\n }\n }\n return instance;\n}\nfunction deserializeDictionaryType(serializer, mapper, responseBody, objectName, options) {\n /* jshint validthis: true */\n const value = mapper.type.value;\n if (!value || typeof value !== \"object\") {\n throw new Error(`\"value\" metadata for a Dictionary must be defined in the ` +\n `mapper and it must of type \"object\" in ${objectName}`);\n }\n if (responseBody) {\n const tempDictionary = {};\n for (const key of Object.keys(responseBody)) {\n tempDictionary[key] = serializer.deserialize(value, responseBody[key], objectName, options);\n }\n return tempDictionary;\n }\n return responseBody;\n}\nfunction deserializeSequenceType(serializer, mapper, responseBody, objectName, options) {\n let element = mapper.type.element;\n if (!element || typeof element !== \"object\") {\n throw new Error(`element\" metadata for an Array must be defined in the ` +\n `mapper and it must of type \"object\" in ${objectName}`);\n }\n if (responseBody) {\n if (!Array.isArray(responseBody)) {\n // xml2js will interpret a single element array as just the element, so force it to be an array\n responseBody = [responseBody];\n }\n // Quirk: Composite mappers referenced by `element` might\n // not have *all* properties declared (like uberParent),\n // so let's try to look up the full definition by name.\n if (element.type.name === \"Composite\" && element.type.className) {\n element = serializer.modelMappers[element.type.className] ?? element;\n }\n const tempArray = [];\n for (let i = 0; i < responseBody.length; i++) {\n tempArray[i] = serializer.deserialize(element, responseBody[i], `${objectName}[${i}]`, options);\n }\n return tempArray;\n }\n return responseBody;\n}\nfunction getIndexDiscriminator(discriminators, discriminatorValue, typeName) {\n const typeNamesToCheck = [typeName];\n while (typeNamesToCheck.length) {\n const currentName = typeNamesToCheck.shift();\n const indexDiscriminator = discriminatorValue === currentName\n ? discriminatorValue\n : currentName + \".\" + discriminatorValue;\n if (Object.prototype.hasOwnProperty.call(discriminators, indexDiscriminator)) {\n return discriminators[indexDiscriminator];\n }\n else {\n for (const [name, mapper] of Object.entries(discriminators)) {\n if (name.startsWith(currentName + \".\") &&\n mapper.type.uberParent === currentName &&\n mapper.type.className) {\n typeNamesToCheck.push(mapper.type.className);\n }\n }\n }\n }\n return undefined;\n}\nfunction getPolymorphicMapper(serializer, mapper, object, polymorphicPropertyName) {\n const polymorphicDiscriminator = getPolymorphicDiscriminatorRecursively(serializer, mapper);\n if (polymorphicDiscriminator) {\n let discriminatorName = polymorphicDiscriminator[polymorphicPropertyName];\n if (discriminatorName) {\n // The serializedName might have \\\\, which we just want to ignore\n if (polymorphicPropertyName === \"serializedName\") {\n discriminatorName = discriminatorName.replace(/\\\\/gi, \"\");\n }\n const discriminatorValue = object[discriminatorName];\n const typeName = mapper.type.uberParent ?? mapper.type.className;\n if (typeof discriminatorValue === \"string\" && typeName) {\n const polymorphicMapper = getIndexDiscriminator(serializer.modelMappers.discriminators, discriminatorValue, typeName);\n if (polymorphicMapper) {\n mapper = polymorphicMapper;\n }\n }\n }\n }\n return mapper;\n}\nfunction getPolymorphicDiscriminatorRecursively(serializer, mapper) {\n return (mapper.type.polymorphicDiscriminator ||\n getPolymorphicDiscriminatorSafely(serializer, mapper.type.uberParent) ||\n getPolymorphicDiscriminatorSafely(serializer, mapper.type.className));\n}\nfunction getPolymorphicDiscriminatorSafely(serializer, typeName) {\n return (typeName &&\n serializer.modelMappers[typeName] &&\n serializer.modelMappers[typeName].type.polymorphicDiscriminator);\n}\n/**\n * Known types of Mappers\n */\nexports.MapperTypeNames = {\n Base64Url: \"Base64Url\",\n Boolean: \"Boolean\",\n ByteArray: \"ByteArray\",\n Composite: \"Composite\",\n Date: \"Date\",\n DateTime: \"DateTime\",\n DateTimeRfc1123: \"DateTimeRfc1123\",\n Dictionary: \"Dictionary\",\n Enum: \"Enum\",\n Number: \"Number\",\n Object: \"Object\",\n Sequence: \"Sequence\",\n String: \"String\",\n Stream: \"Stream\",\n TimeSpan: \"TimeSpan\",\n UnixTime: \"UnixTime\",\n};\n//# sourceMappingURL=serializer.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.AbortError = void 0;\n/**\n * This error is thrown when an asynchronous operation has been aborted.\n * Check for this error by testing the `name` that the name property of the\n * error matches `\"AbortError\"`.\n *\n * @example\n * ```ts snippet:ReadmeSampleAbortError\n * import { AbortError } from \"@typespec/ts-http-runtime\";\n *\n * async function doAsyncWork(options: { abortSignal: AbortSignal }): Promise {\n * if (options.abortSignal.aborted) {\n * throw new AbortError();\n * }\n *\n * // do async work\n * }\n *\n * const controller = new AbortController();\n * controller.abort();\n *\n * try {\n * doAsyncWork({ abortSignal: controller.signal });\n * } catch (e) {\n * if (e instanceof Error && e.name === \"AbortError\") {\n * // handle abort error here.\n * }\n * }\n * ```\n */\nclass AbortError extends Error {\n constructor(message) {\n super(message);\n this.name = \"AbortError\";\n }\n}\nexports.AbortError = AbortError;\n//# sourceMappingURL=AbortError.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.log = log;\nconst tslib_1 = require(\"tslib\");\nconst node_os_1 = require(\"node:os\");\nconst node_util_1 = tslib_1.__importDefault(require(\"node:util\"));\nconst node_process_1 = tslib_1.__importDefault(require(\"node:process\"));\nfunction log(message, ...args) {\n node_process_1.default.stderr.write(`${node_util_1.default.format(message, ...args)}${node_os_1.EOL}`);\n}\n//# sourceMappingURL=log.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst log_js_1 = require(\"./log.js\");\nconst debugEnvVariable = (typeof process !== \"undefined\" && process.env && process.env.DEBUG) || undefined;\nlet enabledString;\nlet enabledNamespaces = [];\nlet skippedNamespaces = [];\nconst debuggers = [];\nif (debugEnvVariable) {\n enable(debugEnvVariable);\n}\nconst debugObj = Object.assign((namespace) => {\n return createDebugger(namespace);\n}, {\n enable,\n enabled,\n disable,\n log: log_js_1.log,\n});\nfunction enable(namespaces) {\n enabledString = namespaces;\n enabledNamespaces = [];\n skippedNamespaces = [];\n const namespaceList = namespaces.split(\",\").map((ns) => ns.trim());\n for (const ns of namespaceList) {\n if (ns.startsWith(\"-\")) {\n skippedNamespaces.push(ns.substring(1));\n }\n else {\n enabledNamespaces.push(ns);\n }\n }\n for (const instance of debuggers) {\n instance.enabled = enabled(instance.namespace);\n }\n}\nfunction enabled(namespace) {\n if (namespace.endsWith(\"*\")) {\n return true;\n }\n for (const skipped of skippedNamespaces) {\n if (namespaceMatches(namespace, skipped)) {\n return false;\n }\n }\n for (const enabledNamespace of enabledNamespaces) {\n if (namespaceMatches(namespace, enabledNamespace)) {\n return true;\n }\n }\n return false;\n}\n/**\n * Given a namespace, check if it matches a pattern.\n * Patterns only have a single wildcard character which is *.\n * The behavior of * is that it matches zero or more other characters.\n */\nfunction namespaceMatches(namespace, patternToMatch) {\n // simple case, no pattern matching required\n if (patternToMatch.indexOf(\"*\") === -1) {\n return namespace === patternToMatch;\n }\n let pattern = patternToMatch;\n // normalize successive * if needed\n if (patternToMatch.indexOf(\"**\") !== -1) {\n const patternParts = [];\n let lastCharacter = \"\";\n for (const character of patternToMatch) {\n if (character === \"*\" && lastCharacter === \"*\") {\n continue;\n }\n else {\n lastCharacter = character;\n patternParts.push(character);\n }\n }\n pattern = patternParts.join(\"\");\n }\n let namespaceIndex = 0;\n let patternIndex = 0;\n const patternLength = pattern.length;\n const namespaceLength = namespace.length;\n let lastWildcard = -1;\n let lastWildcardNamespace = -1;\n while (namespaceIndex < namespaceLength && patternIndex < patternLength) {\n if (pattern[patternIndex] === \"*\") {\n lastWildcard = patternIndex;\n patternIndex++;\n if (patternIndex === patternLength) {\n // if wildcard is the last character, it will match the remaining namespace string\n return true;\n }\n // now we let the wildcard eat characters until we match the next literal in the pattern\n while (namespace[namespaceIndex] !== pattern[patternIndex]) {\n namespaceIndex++;\n // reached the end of the namespace without a match\n if (namespaceIndex === namespaceLength) {\n return false;\n }\n }\n // now that we have a match, let's try to continue on\n // however, it's possible we could find a later match\n // so keep a reference in case we have to backtrack\n lastWildcardNamespace = namespaceIndex;\n namespaceIndex++;\n patternIndex++;\n continue;\n }\n else if (pattern[patternIndex] === namespace[namespaceIndex]) {\n // simple case: literal pattern matches so keep going\n patternIndex++;\n namespaceIndex++;\n }\n else if (lastWildcard >= 0) {\n // special case: we don't have a literal match, but there is a previous wildcard\n // which we can backtrack to and try having the wildcard eat the match instead\n patternIndex = lastWildcard + 1;\n namespaceIndex = lastWildcardNamespace + 1;\n // we've reached the end of the namespace without a match\n if (namespaceIndex === namespaceLength) {\n return false;\n }\n // similar to the previous logic, let's keep going until we find the next literal match\n while (namespace[namespaceIndex] !== pattern[patternIndex]) {\n namespaceIndex++;\n if (namespaceIndex === namespaceLength) {\n return false;\n }\n }\n lastWildcardNamespace = namespaceIndex;\n namespaceIndex++;\n patternIndex++;\n continue;\n }\n else {\n return false;\n }\n }\n const namespaceDone = namespaceIndex === namespace.length;\n const patternDone = patternIndex === pattern.length;\n // this is to detect the case of an unneeded final wildcard\n // e.g. the pattern `ab*` should match the string `ab`\n const trailingWildCard = patternIndex === pattern.length - 1 && pattern[patternIndex] === \"*\";\n return namespaceDone && (patternDone || trailingWildCard);\n}\nfunction disable() {\n const result = enabledString || \"\";\n enable(\"\");\n return result;\n}\nfunction createDebugger(namespace) {\n const newDebugger = Object.assign(debug, {\n enabled: enabled(namespace),\n destroy,\n log: debugObj.log,\n namespace,\n extend,\n });\n function debug(...args) {\n if (!newDebugger.enabled) {\n return;\n }\n if (args.length > 0) {\n args[0] = `${namespace} ${args[0]}`;\n }\n newDebugger.log(...args);\n }\n debuggers.push(newDebugger);\n return newDebugger;\n}\nfunction destroy() {\n const index = debuggers.indexOf(this);\n if (index >= 0) {\n debuggers.splice(index, 1);\n return true;\n }\n return false;\n}\nfunction extend(namespace) {\n const newDebugger = createDebugger(`${this.namespace}:${namespace}`);\n newDebugger.log = this.log;\n return newDebugger;\n}\nexports.default = debugObj;\n//# sourceMappingURL=debug.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.TypeSpecRuntimeLogger = void 0;\nexports.createLoggerContext = createLoggerContext;\nexports.setLogLevel = setLogLevel;\nexports.getLogLevel = getLogLevel;\nexports.createClientLogger = createClientLogger;\nconst tslib_1 = require(\"tslib\");\nconst debug_js_1 = tslib_1.__importDefault(require(\"./debug.js\"));\nconst TYPESPEC_RUNTIME_LOG_LEVELS = [\"verbose\", \"info\", \"warning\", \"error\"];\nconst levelMap = {\n verbose: 400,\n info: 300,\n warning: 200,\n error: 100,\n};\nfunction patchLogMethod(parent, child) {\n child.log = (...args) => {\n parent.log(...args);\n };\n}\nfunction isTypeSpecRuntimeLogLevel(level) {\n return TYPESPEC_RUNTIME_LOG_LEVELS.includes(level);\n}\n/**\n * Creates a logger context base on the provided options.\n * @param options - The options for creating a logger context.\n * @returns The logger context.\n */\nfunction createLoggerContext(options) {\n const registeredLoggers = new Set();\n const logLevelFromEnv = (typeof process !== \"undefined\" && process.env && process.env[options.logLevelEnvVarName]) ||\n undefined;\n let logLevel;\n const clientLogger = (0, debug_js_1.default)(options.namespace);\n clientLogger.log = (...args) => {\n debug_js_1.default.log(...args);\n };\n function contextSetLogLevel(level) {\n if (level && !isTypeSpecRuntimeLogLevel(level)) {\n throw new Error(`Unknown log level '${level}'. Acceptable values: ${TYPESPEC_RUNTIME_LOG_LEVELS.join(\",\")}`);\n }\n logLevel = level;\n const enabledNamespaces = [];\n for (const logger of registeredLoggers) {\n if (shouldEnable(logger)) {\n enabledNamespaces.push(logger.namespace);\n }\n }\n debug_js_1.default.enable(enabledNamespaces.join(\",\"));\n }\n if (logLevelFromEnv) {\n // avoid calling setLogLevel because we don't want a mis-set environment variable to crash\n if (isTypeSpecRuntimeLogLevel(logLevelFromEnv)) {\n contextSetLogLevel(logLevelFromEnv);\n }\n else {\n console.error(`${options.logLevelEnvVarName} set to unknown log level '${logLevelFromEnv}'; logging is not enabled. Acceptable values: ${TYPESPEC_RUNTIME_LOG_LEVELS.join(\", \")}.`);\n }\n }\n function shouldEnable(logger) {\n return Boolean(logLevel && levelMap[logger.level] <= levelMap[logLevel]);\n }\n function createLogger(parent, level) {\n const logger = Object.assign(parent.extend(level), {\n level,\n });\n patchLogMethod(parent, logger);\n if (shouldEnable(logger)) {\n const enabledNamespaces = debug_js_1.default.disable();\n debug_js_1.default.enable(enabledNamespaces + \",\" + logger.namespace);\n }\n registeredLoggers.add(logger);\n return logger;\n }\n function contextGetLogLevel() {\n return logLevel;\n }\n function contextCreateClientLogger(namespace) {\n const clientRootLogger = clientLogger.extend(namespace);\n patchLogMethod(clientLogger, clientRootLogger);\n return {\n error: createLogger(clientRootLogger, \"error\"),\n warning: createLogger(clientRootLogger, \"warning\"),\n info: createLogger(clientRootLogger, \"info\"),\n verbose: createLogger(clientRootLogger, \"verbose\"),\n };\n }\n return {\n setLogLevel: contextSetLogLevel,\n getLogLevel: contextGetLogLevel,\n createClientLogger: contextCreateClientLogger,\n logger: clientLogger,\n };\n}\nconst context = createLoggerContext({\n logLevelEnvVarName: \"TYPESPEC_RUNTIME_LOG_LEVEL\",\n namespace: \"typeSpecRuntime\",\n});\n/**\n * Immediately enables logging at the specified log level. If no level is specified, logging is disabled.\n * @param level - The log level to enable for logging.\n * Options from most verbose to least verbose are:\n * - verbose\n * - info\n * - warning\n * - error\n */\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexports.TypeSpecRuntimeLogger = context.logger;\n/**\n * Retrieves the currently specified log level.\n */\nfunction setLogLevel(logLevel) {\n context.setLogLevel(logLevel);\n}\n/**\n * Retrieves the currently specified log level.\n */\nfunction getLogLevel() {\n return context.getLogLevel();\n}\n/**\n * Creates a logger for use by the SDKs that inherits from `TypeSpecRuntimeLogger`.\n * @param namespace - The name of the SDK package.\n * @hidden\n */\nfunction createClientLogger(namespace) {\n return context.createClientLogger(namespace);\n}\n//# sourceMappingURL=logger.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.createHttpHeaders = createHttpHeaders;\nfunction normalizeName(name) {\n return name.toLowerCase();\n}\nfunction* headerIterator(map) {\n for (const entry of map.values()) {\n yield [entry.name, entry.value];\n }\n}\nclass HttpHeadersImpl {\n _headersMap;\n constructor(rawHeaders) {\n this._headersMap = new Map();\n if (rawHeaders) {\n for (const headerName of Object.keys(rawHeaders)) {\n this.set(headerName, rawHeaders[headerName]);\n }\n }\n }\n /**\n * Set a header in this collection with the provided name and value. The name is\n * case-insensitive.\n * @param name - The name of the header to set. This value is case-insensitive.\n * @param value - The value of the header to set.\n */\n set(name, value) {\n this._headersMap.set(normalizeName(name), { name, value: String(value).trim() });\n }\n /**\n * Get the header value for the provided header name, or undefined if no header exists in this\n * collection with the provided name.\n * @param name - The name of the header. This value is case-insensitive.\n */\n get(name) {\n return this._headersMap.get(normalizeName(name))?.value;\n }\n /**\n * Get whether or not this header collection contains a header entry for the provided header name.\n * @param name - The name of the header to set. This value is case-insensitive.\n */\n has(name) {\n return this._headersMap.has(normalizeName(name));\n }\n /**\n * Remove the header with the provided headerName.\n * @param name - The name of the header to remove.\n */\n delete(name) {\n this._headersMap.delete(normalizeName(name));\n }\n /**\n * Get the JSON object representation of this HTTP header collection.\n */\n toJSON(options = {}) {\n const result = {};\n if (options.preserveCase) {\n for (const entry of this._headersMap.values()) {\n result[entry.name] = entry.value;\n }\n }\n else {\n for (const [normalizedName, entry] of this._headersMap) {\n result[normalizedName] = entry.value;\n }\n }\n return result;\n }\n /**\n * Get the string representation of this HTTP header collection.\n */\n toString() {\n return JSON.stringify(this.toJSON({ preserveCase: true }));\n }\n /**\n * Iterate over tuples of header [name, value] pairs.\n */\n [Symbol.iterator]() {\n return headerIterator(this._headersMap);\n }\n}\n/**\n * Creates an object that satisfies the `HttpHeaders` interface.\n * @param rawHeaders - A simple object representing initial headers\n */\nfunction createHttpHeaders(rawHeaders) {\n return new HttpHeadersImpl(rawHeaders);\n}\n//# sourceMappingURL=httpHeaders.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\n//# sourceMappingURL=schemes.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\n//# sourceMappingURL=oauth2Flows.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.randomUUID = randomUUID;\n/**\n * Generated Universally Unique Identifier\n *\n * @returns RFC4122 v4 UUID.\n */\nfunction randomUUID() {\n return crypto.randomUUID();\n}\n//# sourceMappingURL=uuidUtils.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.createPipelineRequest = createPipelineRequest;\nconst httpHeaders_js_1 = require(\"./httpHeaders.js\");\nconst uuidUtils_js_1 = require(\"./util/uuidUtils.js\");\nclass PipelineRequestImpl {\n url;\n method;\n headers;\n timeout;\n withCredentials;\n body;\n multipartBody;\n formData;\n streamResponseStatusCodes;\n enableBrowserStreams;\n proxySettings;\n disableKeepAlive;\n abortSignal;\n requestId;\n allowInsecureConnection;\n onUploadProgress;\n onDownloadProgress;\n requestOverrides;\n authSchemes;\n constructor(options) {\n this.url = options.url;\n this.body = options.body;\n this.headers = options.headers ?? (0, httpHeaders_js_1.createHttpHeaders)();\n this.method = options.method ?? \"GET\";\n this.timeout = options.timeout ?? 0;\n this.multipartBody = options.multipartBody;\n this.formData = options.formData;\n this.disableKeepAlive = options.disableKeepAlive ?? false;\n this.proxySettings = options.proxySettings;\n this.streamResponseStatusCodes = options.streamResponseStatusCodes;\n this.withCredentials = options.withCredentials ?? false;\n this.abortSignal = options.abortSignal;\n this.onUploadProgress = options.onUploadProgress;\n this.onDownloadProgress = options.onDownloadProgress;\n this.requestId = options.requestId || (0, uuidUtils_js_1.randomUUID)();\n this.allowInsecureConnection = options.allowInsecureConnection ?? false;\n this.enableBrowserStreams = options.enableBrowserStreams ?? false;\n this.requestOverrides = options.requestOverrides;\n this.authSchemes = options.authSchemes;\n }\n}\n/**\n * Creates a new pipeline request with the given options.\n * This method is to allow for the easy setting of default values and not required.\n * @param options - The options to create the request with.\n */\nfunction createPipelineRequest(options) {\n return new PipelineRequestImpl(options);\n}\n//# sourceMappingURL=pipelineRequest.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.createEmptyPipeline = createEmptyPipeline;\nconst ValidPhaseNames = new Set([\"Deserialize\", \"Serialize\", \"Retry\", \"Sign\"]);\n/**\n * A private implementation of Pipeline.\n * Do not export this class from the package.\n * @internal\n */\nclass HttpPipeline {\n _policies = [];\n _orderedPolicies;\n constructor(policies) {\n this._policies = policies?.slice(0) ?? [];\n this._orderedPolicies = undefined;\n }\n addPolicy(policy, options = {}) {\n if (options.phase && options.afterPhase) {\n throw new Error(\"Policies inside a phase cannot specify afterPhase.\");\n }\n if (options.phase && !ValidPhaseNames.has(options.phase)) {\n throw new Error(`Invalid phase name: ${options.phase}`);\n }\n if (options.afterPhase && !ValidPhaseNames.has(options.afterPhase)) {\n throw new Error(`Invalid afterPhase name: ${options.afterPhase}`);\n }\n this._policies.push({\n policy,\n options,\n });\n this._orderedPolicies = undefined;\n }\n removePolicy(options) {\n const removedPolicies = [];\n this._policies = this._policies.filter((policyDescriptor) => {\n if ((options.name && policyDescriptor.policy.name === options.name) ||\n (options.phase && policyDescriptor.options.phase === options.phase)) {\n removedPolicies.push(policyDescriptor.policy);\n return false;\n }\n else {\n return true;\n }\n });\n this._orderedPolicies = undefined;\n return removedPolicies;\n }\n sendRequest(httpClient, request) {\n const policies = this.getOrderedPolicies();\n const pipeline = policies.reduceRight((next, policy) => {\n return (req) => {\n return policy.sendRequest(req, next);\n };\n }, (req) => httpClient.sendRequest(req));\n return pipeline(request);\n }\n getOrderedPolicies() {\n if (!this._orderedPolicies) {\n this._orderedPolicies = this.orderPolicies();\n }\n return this._orderedPolicies;\n }\n clone() {\n return new HttpPipeline(this._policies);\n }\n static create() {\n return new HttpPipeline();\n }\n orderPolicies() {\n /**\n * The goal of this method is to reliably order pipeline policies\n * based on their declared requirements when they were added.\n *\n * Order is first determined by phase:\n *\n * 1. Serialize Phase\n * 2. Policies not in a phase\n * 3. Deserialize Phase\n * 4. Retry Phase\n * 5. Sign Phase\n *\n * Within each phase, policies are executed in the order\n * they were added unless they were specified to execute\n * before/after other policies or after a particular phase.\n *\n * To determine the final order, we will walk the policy list\n * in phase order multiple times until all dependencies are\n * satisfied.\n *\n * `afterPolicies` are the set of policies that must be\n * executed before a given policy. This requirement is\n * considered satisfied when each of the listed policies\n * have been scheduled.\n *\n * `beforePolicies` are the set of policies that must be\n * executed after a given policy. Since this dependency\n * can be expressed by converting it into a equivalent\n * `afterPolicies` declarations, they are normalized\n * into that form for simplicity.\n *\n * An `afterPhase` dependency is considered satisfied when all\n * policies in that phase have scheduled.\n *\n */\n const result = [];\n // Track all policies we know about.\n const policyMap = new Map();\n function createPhase(name) {\n return {\n name,\n policies: new Set(),\n hasRun: false,\n hasAfterPolicies: false,\n };\n }\n // Track policies for each phase.\n const serializePhase = createPhase(\"Serialize\");\n const noPhase = createPhase(\"None\");\n const deserializePhase = createPhase(\"Deserialize\");\n const retryPhase = createPhase(\"Retry\");\n const signPhase = createPhase(\"Sign\");\n // a list of phases in order\n const orderedPhases = [serializePhase, noPhase, deserializePhase, retryPhase, signPhase];\n // Small helper function to map phase name to each Phase\n function getPhase(phase) {\n if (phase === \"Retry\") {\n return retryPhase;\n }\n else if (phase === \"Serialize\") {\n return serializePhase;\n }\n else if (phase === \"Deserialize\") {\n return deserializePhase;\n }\n else if (phase === \"Sign\") {\n return signPhase;\n }\n else {\n return noPhase;\n }\n }\n // First walk each policy and create a node to track metadata.\n for (const descriptor of this._policies) {\n const policy = descriptor.policy;\n const options = descriptor.options;\n const policyName = policy.name;\n if (policyMap.has(policyName)) {\n throw new Error(\"Duplicate policy names not allowed in pipeline\");\n }\n const node = {\n policy,\n dependsOn: new Set(),\n dependants: new Set(),\n };\n if (options.afterPhase) {\n node.afterPhase = getPhase(options.afterPhase);\n node.afterPhase.hasAfterPolicies = true;\n }\n policyMap.set(policyName, node);\n const phase = getPhase(options.phase);\n phase.policies.add(node);\n }\n // Now that each policy has a node, connect dependency references.\n for (const descriptor of this._policies) {\n const { policy, options } = descriptor;\n const policyName = policy.name;\n const node = policyMap.get(policyName);\n if (!node) {\n throw new Error(`Missing node for policy ${policyName}`);\n }\n if (options.afterPolicies) {\n for (const afterPolicyName of options.afterPolicies) {\n const afterNode = policyMap.get(afterPolicyName);\n if (afterNode) {\n // Linking in both directions helps later\n // when we want to notify dependants.\n node.dependsOn.add(afterNode);\n afterNode.dependants.add(node);\n }\n }\n }\n if (options.beforePolicies) {\n for (const beforePolicyName of options.beforePolicies) {\n const beforeNode = policyMap.get(beforePolicyName);\n if (beforeNode) {\n // To execute before another node, make it\n // depend on the current node.\n beforeNode.dependsOn.add(node);\n node.dependants.add(beforeNode);\n }\n }\n }\n }\n function walkPhase(phase) {\n phase.hasRun = true;\n // Sets iterate in insertion order\n for (const node of phase.policies) {\n if (node.afterPhase && (!node.afterPhase.hasRun || node.afterPhase.policies.size)) {\n // If this node is waiting on a phase to complete,\n // we need to skip it for now.\n // Even if the phase is empty, we should wait for it\n // to be walked to avoid re-ordering policies.\n continue;\n }\n if (node.dependsOn.size === 0) {\n // If there's nothing else we're waiting for, we can\n // add this policy to the result list.\n result.push(node.policy);\n // Notify anything that depends on this policy that\n // the policy has been scheduled.\n for (const dependant of node.dependants) {\n dependant.dependsOn.delete(node);\n }\n policyMap.delete(node.policy.name);\n phase.policies.delete(node);\n }\n }\n }\n function walkPhases() {\n for (const phase of orderedPhases) {\n walkPhase(phase);\n // if the phase isn't complete\n if (phase.policies.size > 0 && phase !== noPhase) {\n if (!noPhase.hasRun) {\n // Try running noPhase to see if that unblocks this phase next tick.\n // This can happen if a phase that happens before noPhase\n // is waiting on a noPhase policy to complete.\n walkPhase(noPhase);\n }\n // Don't proceed to the next phase until this phase finishes.\n return;\n }\n if (phase.hasAfterPolicies) {\n // Run any policies unblocked by this phase\n walkPhase(noPhase);\n }\n }\n }\n // Iterate until we've put every node in the result list.\n let iteration = 0;\n while (policyMap.size > 0) {\n iteration++;\n const initialResultLength = result.length;\n // Keep walking each phase in order until we can order every node.\n walkPhases();\n // The result list *should* get at least one larger each time\n // after the first full pass.\n // Otherwise, we're going to loop forever.\n if (result.length <= initialResultLength && iteration > 1) {\n throw new Error(\"Cannot satisfy policy dependencies due to requirements cycle.\");\n }\n }\n return result;\n }\n}\n/**\n * Creates a totally empty pipeline.\n * Useful for testing or creating a custom one.\n */\nfunction createEmptyPipeline() {\n return HttpPipeline.create();\n}\n//# sourceMappingURL=pipeline.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isObject = isObject;\n/**\n * Helper to determine when an input is a generic JS object.\n * @returns true when input is an object type that is not null, Array, RegExp, or Date.\n */\nfunction isObject(input) {\n return (typeof input === \"object\" &&\n input !== null &&\n !Array.isArray(input) &&\n !(input instanceof RegExp) &&\n !(input instanceof Date));\n}\n//# sourceMappingURL=object.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isError = isError;\nconst object_js_1 = require(\"./object.js\");\n/**\n * Typeguard for an error object shape (has name and message)\n * @param e - Something caught by a catch clause.\n */\nfunction isError(e) {\n if ((0, object_js_1.isObject)(e)) {\n const hasName = typeof e.name === \"string\";\n const hasMessage = typeof e.message === \"string\";\n return hasName && hasMessage;\n }\n return false;\n}\n//# sourceMappingURL=error.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.custom = void 0;\nconst node_util_1 = require(\"node:util\");\nexports.custom = node_util_1.inspect.custom;\n//# sourceMappingURL=inspect.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Sanitizer = void 0;\nconst object_js_1 = require(\"./object.js\");\nconst RedactedString = \"REDACTED\";\n// Make sure this list is up-to-date with the one under core/logger/Readme#Keyconcepts\nconst defaultAllowedHeaderNames = [\n \"x-ms-client-request-id\",\n \"x-ms-return-client-request-id\",\n \"x-ms-useragent\",\n \"x-ms-correlation-request-id\",\n \"x-ms-request-id\",\n \"client-request-id\",\n \"ms-cv\",\n \"return-client-request-id\",\n \"traceparent\",\n \"Access-Control-Allow-Credentials\",\n \"Access-Control-Allow-Headers\",\n \"Access-Control-Allow-Methods\",\n \"Access-Control-Allow-Origin\",\n \"Access-Control-Expose-Headers\",\n \"Access-Control-Max-Age\",\n \"Access-Control-Request-Headers\",\n \"Access-Control-Request-Method\",\n \"Origin\",\n \"Accept\",\n \"Accept-Encoding\",\n \"Cache-Control\",\n \"Connection\",\n \"Content-Length\",\n \"Content-Type\",\n \"Date\",\n \"ETag\",\n \"Expires\",\n \"If-Match\",\n \"If-Modified-Since\",\n \"If-None-Match\",\n \"If-Unmodified-Since\",\n \"Last-Modified\",\n \"Pragma\",\n \"Request-Id\",\n \"Retry-After\",\n \"Server\",\n \"Transfer-Encoding\",\n \"User-Agent\",\n \"WWW-Authenticate\",\n];\nconst defaultAllowedQueryParameters = [\"api-version\"];\n/**\n * A utility class to sanitize objects for logging.\n */\nclass Sanitizer {\n allowedHeaderNames;\n allowedQueryParameters;\n constructor({ additionalAllowedHeaderNames: allowedHeaderNames = [], additionalAllowedQueryParameters: allowedQueryParameters = [], } = {}) {\n allowedHeaderNames = defaultAllowedHeaderNames.concat(allowedHeaderNames);\n allowedQueryParameters = defaultAllowedQueryParameters.concat(allowedQueryParameters);\n this.allowedHeaderNames = new Set(allowedHeaderNames.map((n) => n.toLowerCase()));\n this.allowedQueryParameters = new Set(allowedQueryParameters.map((p) => p.toLowerCase()));\n }\n /**\n * Sanitizes an object for logging.\n * @param obj - The object to sanitize\n * @returns - The sanitized object as a string\n */\n sanitize(obj) {\n const seen = new Set();\n return JSON.stringify(obj, (key, value) => {\n // Ensure Errors include their interesting non-enumerable members\n if (value instanceof Error) {\n return {\n ...value,\n name: value.name,\n message: value.message,\n };\n }\n if (key === \"headers\") {\n return this.sanitizeHeaders(value);\n }\n else if (key === \"url\") {\n return this.sanitizeUrl(value);\n }\n else if (key === \"query\") {\n return this.sanitizeQuery(value);\n }\n else if (key === \"body\") {\n // Don't log the request body\n return undefined;\n }\n else if (key === \"response\") {\n // Don't log response again\n return undefined;\n }\n else if (key === \"operationSpec\") {\n // When using sendOperationRequest, the request carries a massive\n // field with the autorest spec. No need to log it.\n return undefined;\n }\n else if (Array.isArray(value) || (0, object_js_1.isObject)(value)) {\n if (seen.has(value)) {\n return \"[Circular]\";\n }\n seen.add(value);\n }\n return value;\n }, 2);\n }\n /**\n * Sanitizes a URL for logging.\n * @param value - The URL to sanitize\n * @returns - The sanitized URL as a string\n */\n sanitizeUrl(value) {\n if (typeof value !== \"string\" || value === null || value === \"\") {\n return value;\n }\n const url = new URL(value);\n if (!url.search) {\n return value;\n }\n for (const [key] of url.searchParams) {\n if (!this.allowedQueryParameters.has(key.toLowerCase())) {\n url.searchParams.set(key, RedactedString);\n }\n }\n return url.toString();\n }\n sanitizeHeaders(obj) {\n const sanitized = {};\n for (const key of Object.keys(obj)) {\n if (this.allowedHeaderNames.has(key.toLowerCase())) {\n sanitized[key] = obj[key];\n }\n else {\n sanitized[key] = RedactedString;\n }\n }\n return sanitized;\n }\n sanitizeQuery(value) {\n if (typeof value !== \"object\" || value === null) {\n return value;\n }\n const sanitized = {};\n for (const k of Object.keys(value)) {\n if (this.allowedQueryParameters.has(k.toLowerCase())) {\n sanitized[k] = value[k];\n }\n else {\n sanitized[k] = RedactedString;\n }\n }\n return sanitized;\n }\n}\nexports.Sanitizer = Sanitizer;\n//# sourceMappingURL=sanitizer.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.RestError = void 0;\nexports.isRestError = isRestError;\nconst error_js_1 = require(\"./util/error.js\");\nconst inspect_js_1 = require(\"./util/inspect.js\");\nconst sanitizer_js_1 = require(\"./util/sanitizer.js\");\nconst errorSanitizer = new sanitizer_js_1.Sanitizer();\n/**\n * A custom error type for failed pipeline requests.\n */\nclass RestError extends Error {\n /**\n * Something went wrong when making the request.\n * This means the actual request failed for some reason,\n * such as a DNS issue or the connection being lost.\n */\n static REQUEST_SEND_ERROR = \"REQUEST_SEND_ERROR\";\n /**\n * This means that parsing the response from the server failed.\n * It may have been malformed.\n */\n static PARSE_ERROR = \"PARSE_ERROR\";\n /**\n * The code of the error itself (use statics on RestError if possible.)\n */\n code;\n /**\n * The HTTP status code of the request (if applicable.)\n */\n statusCode;\n /**\n * The request that was made.\n * This property is non-enumerable.\n */\n request;\n /**\n * The response received (if any.)\n * This property is non-enumerable.\n */\n response;\n /**\n * Bonus property set by the throw site.\n */\n details;\n constructor(message, options = {}) {\n super(message);\n this.name = \"RestError\";\n this.code = options.code;\n this.statusCode = options.statusCode;\n // The request and response may contain sensitive information in the headers or body.\n // To help prevent this sensitive information being accidentally logged, the request and response\n // properties are marked as non-enumerable here. This prevents them showing up in the output of\n // JSON.stringify and console.log.\n Object.defineProperty(this, \"request\", { value: options.request, enumerable: false });\n Object.defineProperty(this, \"response\", { value: options.response, enumerable: false });\n // Only include useful agent information in the request for logging, as the full agent object\n // may contain large binary data.\n const agent = this.request?.agent\n ? {\n maxFreeSockets: this.request.agent.maxFreeSockets,\n maxSockets: this.request.agent.maxSockets,\n }\n : undefined;\n // Logging method for util.inspect in Node\n Object.defineProperty(this, inspect_js_1.custom, {\n value: () => {\n // Extract non-enumerable properties and add them back. This is OK since in this output the request and\n // response get sanitized.\n return `RestError: ${this.message} \\n ${errorSanitizer.sanitize({\n ...this,\n request: { ...this.request, agent },\n response: this.response,\n })}`;\n },\n enumerable: false,\n });\n Object.setPrototypeOf(this, RestError.prototype);\n }\n}\nexports.RestError = RestError;\n/**\n * Typeguard for RestError\n * @param e - Something caught by a catch clause.\n */\nfunction isRestError(e) {\n if (e instanceof RestError) {\n return true;\n }\n return (0, error_js_1.isError)(e) && e.name === \"RestError\";\n}\n//# sourceMappingURL=restError.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.uint8ArrayToString = uint8ArrayToString;\nexports.stringToUint8Array = stringToUint8Array;\n/**\n * The helper that transforms bytes with specific character encoding into string\n * @param bytes - the uint8array bytes\n * @param format - the format we use to encode the byte\n * @returns a string of the encoded string\n */\nfunction uint8ArrayToString(bytes, format) {\n return Buffer.from(bytes).toString(format);\n}\n/**\n * The helper that transforms string to specific character encoded bytes array.\n * @param value - the string to be converted\n * @param format - the format we use to decode the value\n * @returns a uint8array\n */\nfunction stringToUint8Array(value, format) {\n return Buffer.from(value, format);\n}\n//# sourceMappingURL=bytesEncoding.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.logger = void 0;\nconst logger_js_1 = require(\"./logger/logger.js\");\nexports.logger = (0, logger_js_1.createClientLogger)(\"ts-http-runtime\");\n//# sourceMappingURL=log.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getBodyLength = getBodyLength;\nexports.createNodeHttpClient = createNodeHttpClient;\nconst tslib_1 = require(\"tslib\");\nconst node_http_1 = tslib_1.__importDefault(require(\"node:http\"));\nconst node_https_1 = tslib_1.__importDefault(require(\"node:https\"));\nconst node_zlib_1 = tslib_1.__importDefault(require(\"node:zlib\"));\nconst node_stream_1 = require(\"node:stream\");\nconst AbortError_js_1 = require(\"./abort-controller/AbortError.js\");\nconst httpHeaders_js_1 = require(\"./httpHeaders.js\");\nconst restError_js_1 = require(\"./restError.js\");\nconst log_js_1 = require(\"./log.js\");\nconst sanitizer_js_1 = require(\"./util/sanitizer.js\");\nconst DEFAULT_TLS_SETTINGS = {};\nfunction isReadableStream(body) {\n return body && typeof body.pipe === \"function\";\n}\nfunction isStreamComplete(stream) {\n if (stream.readable === false) {\n return Promise.resolve();\n }\n return new Promise((resolve) => {\n const handler = () => {\n resolve();\n stream.removeListener(\"close\", handler);\n stream.removeListener(\"end\", handler);\n stream.removeListener(\"error\", handler);\n };\n stream.on(\"close\", handler);\n stream.on(\"end\", handler);\n stream.on(\"error\", handler);\n });\n}\nfunction isArrayBuffer(body) {\n return body && typeof body.byteLength === \"number\";\n}\nclass ReportTransform extends node_stream_1.Transform {\n loadedBytes = 0;\n progressCallback;\n // eslint-disable-next-line @typescript-eslint/no-unsafe-function-type\n _transform(chunk, _encoding, callback) {\n this.push(chunk);\n this.loadedBytes += chunk.length;\n try {\n this.progressCallback({ loadedBytes: this.loadedBytes });\n callback();\n }\n catch (e) {\n callback(e);\n }\n }\n constructor(progressCallback) {\n super();\n this.progressCallback = progressCallback;\n }\n}\n/**\n * A HttpClient implementation that uses Node's \"https\" module to send HTTPS requests.\n * @internal\n */\nclass NodeHttpClient {\n cachedHttpAgent;\n cachedHttpsAgents = new WeakMap();\n /**\n * Makes a request over an underlying transport layer and returns the response.\n * @param request - The request to be made.\n */\n async sendRequest(request) {\n const abortController = new AbortController();\n let abortListener;\n if (request.abortSignal) {\n if (request.abortSignal.aborted) {\n throw new AbortError_js_1.AbortError(\"The operation was aborted. Request has already been canceled.\");\n }\n abortListener = (event) => {\n if (event.type === \"abort\") {\n abortController.abort();\n }\n };\n request.abortSignal.addEventListener(\"abort\", abortListener);\n }\n let timeoutId;\n if (request.timeout > 0) {\n timeoutId = setTimeout(() => {\n const sanitizer = new sanitizer_js_1.Sanitizer();\n log_js_1.logger.info(`request to '${sanitizer.sanitizeUrl(request.url)}' timed out. canceling...`);\n abortController.abort();\n }, request.timeout);\n }\n const acceptEncoding = request.headers.get(\"Accept-Encoding\");\n const shouldDecompress = acceptEncoding?.includes(\"gzip\") || acceptEncoding?.includes(\"deflate\");\n let body = typeof request.body === \"function\" ? request.body() : request.body;\n if (body && !request.headers.has(\"Content-Length\")) {\n const bodyLength = getBodyLength(body);\n if (bodyLength !== null) {\n request.headers.set(\"Content-Length\", bodyLength);\n }\n }\n let responseStream;\n try {\n if (body && request.onUploadProgress) {\n const onUploadProgress = request.onUploadProgress;\n const uploadReportStream = new ReportTransform(onUploadProgress);\n uploadReportStream.on(\"error\", (e) => {\n log_js_1.logger.error(\"Error in upload progress\", e);\n });\n if (isReadableStream(body)) {\n body.pipe(uploadReportStream);\n }\n else {\n uploadReportStream.end(body);\n }\n body = uploadReportStream;\n }\n const res = await this.makeRequest(request, abortController, body);\n if (timeoutId !== undefined) {\n clearTimeout(timeoutId);\n }\n const headers = getResponseHeaders(res);\n const status = res.statusCode ?? 0;\n const response = {\n status,\n headers,\n request,\n };\n // Responses to HEAD must not have a body.\n // If they do return a body, that body must be ignored.\n if (request.method === \"HEAD\") {\n // call resume() and not destroy() to avoid closing the socket\n // and losing keep alive\n res.resume();\n return response;\n }\n responseStream = shouldDecompress ? getDecodedResponseStream(res, headers) : res;\n const onDownloadProgress = request.onDownloadProgress;\n if (onDownloadProgress) {\n const downloadReportStream = new ReportTransform(onDownloadProgress);\n downloadReportStream.on(\"error\", (e) => {\n log_js_1.logger.error(\"Error in download progress\", e);\n });\n responseStream.pipe(downloadReportStream);\n responseStream = downloadReportStream;\n }\n if (\n // Value of POSITIVE_INFINITY in streamResponseStatusCodes is considered as any status code\n request.streamResponseStatusCodes?.has(Number.POSITIVE_INFINITY) ||\n request.streamResponseStatusCodes?.has(response.status)) {\n response.readableStreamBody = responseStream;\n }\n else {\n response.bodyAsText = await streamToText(responseStream);\n }\n return response;\n }\n finally {\n // clean up event listener\n if (request.abortSignal && abortListener) {\n let uploadStreamDone = Promise.resolve();\n if (isReadableStream(body)) {\n uploadStreamDone = isStreamComplete(body);\n }\n let downloadStreamDone = Promise.resolve();\n if (isReadableStream(responseStream)) {\n downloadStreamDone = isStreamComplete(responseStream);\n }\n Promise.all([uploadStreamDone, downloadStreamDone])\n .then(() => {\n // eslint-disable-next-line promise/always-return\n if (abortListener) {\n request.abortSignal?.removeEventListener(\"abort\", abortListener);\n }\n })\n .catch((e) => {\n log_js_1.logger.warning(\"Error when cleaning up abortListener on httpRequest\", e);\n });\n }\n }\n }\n makeRequest(request, abortController, body) {\n const url = new URL(request.url);\n const isInsecure = url.protocol !== \"https:\";\n if (isInsecure && !request.allowInsecureConnection) {\n throw new Error(`Cannot connect to ${request.url} while allowInsecureConnection is false.`);\n }\n const agent = request.agent ?? this.getOrCreateAgent(request, isInsecure);\n const options = {\n agent,\n hostname: url.hostname,\n path: `${url.pathname}${url.search}`,\n port: url.port,\n method: request.method,\n headers: request.headers.toJSON({ preserveCase: true }),\n ...request.requestOverrides,\n };\n return new Promise((resolve, reject) => {\n const req = isInsecure ? node_http_1.default.request(options, resolve) : node_https_1.default.request(options, resolve);\n req.once(\"error\", (err) => {\n reject(new restError_js_1.RestError(err.message, { code: err.code ?? restError_js_1.RestError.REQUEST_SEND_ERROR, request }));\n });\n abortController.signal.addEventListener(\"abort\", () => {\n const abortError = new AbortError_js_1.AbortError(\"The operation was aborted. Rejecting from abort signal callback while making request.\");\n req.destroy(abortError);\n reject(abortError);\n });\n if (body && isReadableStream(body)) {\n body.pipe(req);\n }\n else if (body) {\n if (typeof body === \"string\" || Buffer.isBuffer(body)) {\n req.end(body);\n }\n else if (isArrayBuffer(body)) {\n req.end(ArrayBuffer.isView(body) ? Buffer.from(body.buffer) : Buffer.from(body));\n }\n else {\n log_js_1.logger.error(\"Unrecognized body type\", body);\n reject(new restError_js_1.RestError(\"Unrecognized body type\"));\n }\n }\n else {\n // streams don't like \"undefined\" being passed as data\n req.end();\n }\n });\n }\n getOrCreateAgent(request, isInsecure) {\n const disableKeepAlive = request.disableKeepAlive;\n // Handle Insecure requests first\n if (isInsecure) {\n if (disableKeepAlive) {\n // keepAlive:false is the default so we don't need a custom Agent\n return node_http_1.default.globalAgent;\n }\n if (!this.cachedHttpAgent) {\n // If there is no cached agent create a new one and cache it.\n this.cachedHttpAgent = new node_http_1.default.Agent({ keepAlive: true });\n }\n return this.cachedHttpAgent;\n }\n else {\n if (disableKeepAlive && !request.tlsSettings) {\n // When there are no tlsSettings and keepAlive is false\n // we don't need a custom agent\n return node_https_1.default.globalAgent;\n }\n // We use the tlsSettings to index cached clients\n const tlsSettings = request.tlsSettings ?? DEFAULT_TLS_SETTINGS;\n // Get the cached agent or create a new one with the\n // provided values for keepAlive and tlsSettings\n let agent = this.cachedHttpsAgents.get(tlsSettings);\n if (agent && agent.options.keepAlive === !disableKeepAlive) {\n return agent;\n }\n log_js_1.logger.info(\"No cached TLS Agent exist, creating a new Agent\");\n agent = new node_https_1.default.Agent({\n // keepAlive is true if disableKeepAlive is false.\n keepAlive: !disableKeepAlive,\n // Since we are spreading, if no tslSettings were provided, nothing is added to the agent options.\n ...tlsSettings,\n });\n this.cachedHttpsAgents.set(tlsSettings, agent);\n return agent;\n }\n }\n}\nfunction getResponseHeaders(res) {\n const headers = (0, httpHeaders_js_1.createHttpHeaders)();\n for (const header of Object.keys(res.headers)) {\n const value = res.headers[header];\n if (Array.isArray(value)) {\n if (value.length > 0) {\n headers.set(header, value[0]);\n }\n }\n else if (value) {\n headers.set(header, value);\n }\n }\n return headers;\n}\nfunction getDecodedResponseStream(stream, headers) {\n const contentEncoding = headers.get(\"Content-Encoding\");\n if (contentEncoding === \"gzip\") {\n const unzip = node_zlib_1.default.createGunzip();\n stream.pipe(unzip);\n return unzip;\n }\n else if (contentEncoding === \"deflate\") {\n const inflate = node_zlib_1.default.createInflate();\n stream.pipe(inflate);\n return inflate;\n }\n return stream;\n}\nfunction streamToText(stream) {\n return new Promise((resolve, reject) => {\n const buffer = [];\n stream.on(\"data\", (chunk) => {\n if (Buffer.isBuffer(chunk)) {\n buffer.push(chunk);\n }\n else {\n buffer.push(Buffer.from(chunk));\n }\n });\n stream.on(\"end\", () => {\n resolve(Buffer.concat(buffer).toString(\"utf8\"));\n });\n stream.on(\"error\", (e) => {\n if (e && e?.name === \"AbortError\") {\n reject(e);\n }\n else {\n reject(new restError_js_1.RestError(`Error reading response as text: ${e.message}`, {\n code: restError_js_1.RestError.PARSE_ERROR,\n }));\n }\n });\n });\n}\n/** @internal */\nfunction getBodyLength(body) {\n if (!body) {\n return 0;\n }\n else if (Buffer.isBuffer(body)) {\n return body.length;\n }\n else if (isReadableStream(body)) {\n return null;\n }\n else if (isArrayBuffer(body)) {\n return body.byteLength;\n }\n else if (typeof body === \"string\") {\n return Buffer.from(body).length;\n }\n else {\n return null;\n }\n}\n/**\n * Create a new HttpClient instance for the NodeJS environment.\n * @internal\n */\nfunction createNodeHttpClient() {\n return new NodeHttpClient();\n}\n//# sourceMappingURL=nodeHttpClient.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.createDefaultHttpClient = createDefaultHttpClient;\nconst nodeHttpClient_js_1 = require(\"./nodeHttpClient.js\");\n/**\n * Create the correct HttpClient for the current environment.\n */\nfunction createDefaultHttpClient() {\n return (0, nodeHttpClient_js_1.createNodeHttpClient)();\n}\n//# sourceMappingURL=defaultHttpClient.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.logPolicyName = void 0;\nexports.logPolicy = logPolicy;\nconst log_js_1 = require(\"../log.js\");\nconst sanitizer_js_1 = require(\"../util/sanitizer.js\");\n/**\n * The programmatic identifier of the logPolicy.\n */\nexports.logPolicyName = \"logPolicy\";\n/**\n * A policy that logs all requests and responses.\n * @param options - Options to configure logPolicy.\n */\nfunction logPolicy(options = {}) {\n const logger = options.logger ?? log_js_1.logger.info;\n const sanitizer = new sanitizer_js_1.Sanitizer({\n additionalAllowedHeaderNames: options.additionalAllowedHeaderNames,\n additionalAllowedQueryParameters: options.additionalAllowedQueryParameters,\n });\n return {\n name: exports.logPolicyName,\n async sendRequest(request, next) {\n if (!logger.enabled) {\n return next(request);\n }\n logger(`Request: ${sanitizer.sanitize(request)}`);\n const response = await next(request);\n logger(`Response status code: ${response.status}`);\n logger(`Headers: ${sanitizer.sanitize(response.headers)}`);\n return response;\n },\n };\n}\n//# sourceMappingURL=logPolicy.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.redirectPolicyName = void 0;\nexports.redirectPolicy = redirectPolicy;\n/**\n * The programmatic identifier of the redirectPolicy.\n */\nexports.redirectPolicyName = \"redirectPolicy\";\n/**\n * Methods that are allowed to follow redirects 301 and 302\n */\nconst allowedRedirect = [\"GET\", \"HEAD\"];\n/**\n * A policy to follow Location headers from the server in order\n * to support server-side redirection.\n * In the browser, this policy is not used.\n * @param options - Options to control policy behavior.\n */\nfunction redirectPolicy(options = {}) {\n const { maxRetries = 20 } = options;\n return {\n name: exports.redirectPolicyName,\n async sendRequest(request, next) {\n const response = await next(request);\n return handleRedirect(next, response, maxRetries);\n },\n };\n}\nasync function handleRedirect(next, response, maxRetries, currentRetries = 0) {\n const { request, status, headers } = response;\n const locationHeader = headers.get(\"location\");\n if (locationHeader &&\n (status === 300 ||\n (status === 301 && allowedRedirect.includes(request.method)) ||\n (status === 302 && allowedRedirect.includes(request.method)) ||\n (status === 303 && request.method === \"POST\") ||\n status === 307) &&\n currentRetries < maxRetries) {\n const url = new URL(locationHeader, request.url);\n request.url = url.toString();\n // POST request with Status code 303 should be converted into a\n // redirected GET request if the redirect url is present in the location header\n if (status === 303) {\n request.method = \"GET\";\n request.headers.delete(\"Content-Length\");\n delete request.body;\n }\n request.headers.delete(\"Authorization\");\n const res = await next(request);\n return handleRedirect(next, res, maxRetries, currentRetries + 1);\n }\n return response;\n}\n//# sourceMappingURL=redirectPolicy.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getHeaderName = getHeaderName;\nexports.setPlatformSpecificData = setPlatformSpecificData;\nconst tslib_1 = require(\"tslib\");\nconst node_os_1 = tslib_1.__importDefault(require(\"node:os\"));\nconst node_process_1 = tslib_1.__importDefault(require(\"node:process\"));\n/**\n * @internal\n */\nfunction getHeaderName() {\n return \"User-Agent\";\n}\n/**\n * @internal\n */\nasync function setPlatformSpecificData(map) {\n if (node_process_1.default && node_process_1.default.versions) {\n const osInfo = `${node_os_1.default.type()} ${node_os_1.default.release()}; ${node_os_1.default.arch()}`;\n const versions = node_process_1.default.versions;\n if (versions.bun) {\n map.set(\"Bun\", `${versions.bun} (${osInfo})`);\n }\n else if (versions.deno) {\n map.set(\"Deno\", `${versions.deno} (${osInfo})`);\n }\n else if (versions.node) {\n map.set(\"Node\", `${versions.node} (${osInfo})`);\n }\n }\n}\n//# sourceMappingURL=userAgentPlatform.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.DEFAULT_RETRY_POLICY_COUNT = exports.SDK_VERSION = void 0;\nexports.SDK_VERSION = \"0.3.2\";\nexports.DEFAULT_RETRY_POLICY_COUNT = 3;\n//# sourceMappingURL=constants.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getUserAgentHeaderName = getUserAgentHeaderName;\nexports.getUserAgentValue = getUserAgentValue;\nconst userAgentPlatform_js_1 = require(\"./userAgentPlatform.js\");\nconst constants_js_1 = require(\"../constants.js\");\nfunction getUserAgentString(telemetryInfo) {\n const parts = [];\n for (const [key, value] of telemetryInfo) {\n const token = value ? `${key}/${value}` : key;\n parts.push(token);\n }\n return parts.join(\" \");\n}\n/**\n * @internal\n */\nfunction getUserAgentHeaderName() {\n return (0, userAgentPlatform_js_1.getHeaderName)();\n}\n/**\n * @internal\n */\nasync function getUserAgentValue(prefix) {\n const runtimeInfo = new Map();\n runtimeInfo.set(\"ts-http-runtime\", constants_js_1.SDK_VERSION);\n await (0, userAgentPlatform_js_1.setPlatformSpecificData)(runtimeInfo);\n const defaultAgent = getUserAgentString(runtimeInfo);\n const userAgentValue = prefix ? `${prefix} ${defaultAgent}` : defaultAgent;\n return userAgentValue;\n}\n//# sourceMappingURL=userAgent.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.userAgentPolicyName = void 0;\nexports.userAgentPolicy = userAgentPolicy;\nconst userAgent_js_1 = require(\"../util/userAgent.js\");\nconst UserAgentHeaderName = (0, userAgent_js_1.getUserAgentHeaderName)();\n/**\n * The programmatic identifier of the userAgentPolicy.\n */\nexports.userAgentPolicyName = \"userAgentPolicy\";\n/**\n * A policy that sets the User-Agent header (or equivalent) to reflect\n * the library version.\n * @param options - Options to customize the user agent value.\n */\nfunction userAgentPolicy(options = {}) {\n const userAgentValue = (0, userAgent_js_1.getUserAgentValue)(options.userAgentPrefix);\n return {\n name: exports.userAgentPolicyName,\n async sendRequest(request, next) {\n if (!request.headers.has(UserAgentHeaderName)) {\n request.headers.set(UserAgentHeaderName, await userAgentValue);\n }\n return next(request);\n },\n };\n}\n//# sourceMappingURL=userAgentPolicy.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.decompressResponsePolicyName = void 0;\nexports.decompressResponsePolicy = decompressResponsePolicy;\n/**\n * The programmatic identifier of the decompressResponsePolicy.\n */\nexports.decompressResponsePolicyName = \"decompressResponsePolicy\";\n/**\n * A policy to enable response decompression according to Accept-Encoding header\n * https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Accept-Encoding\n */\nfunction decompressResponsePolicy() {\n return {\n name: exports.decompressResponsePolicyName,\n async sendRequest(request, next) {\n // HEAD requests have no body\n if (request.method !== \"HEAD\") {\n request.headers.set(\"Accept-Encoding\", \"gzip,deflate\");\n }\n return next(request);\n },\n };\n}\n//# sourceMappingURL=decompressResponsePolicy.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getRandomIntegerInclusive = getRandomIntegerInclusive;\n/**\n * Returns a random integer value between a lower and upper bound,\n * inclusive of both bounds.\n * Note that this uses Math.random and isn't secure. If you need to use\n * this for any kind of security purpose, find a better source of random.\n * @param min - The smallest integer value allowed.\n * @param max - The largest integer value allowed.\n */\nfunction getRandomIntegerInclusive(min, max) {\n // Make sure inputs are integers.\n min = Math.ceil(min);\n max = Math.floor(max);\n // Pick a random offset from zero to the size of the range.\n // Since Math.random() can never return 1, we have to make the range one larger\n // in order to be inclusive of the maximum value after we take the floor.\n const offset = Math.floor(Math.random() * (max - min + 1));\n return offset + min;\n}\n//# sourceMappingURL=random.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.calculateRetryDelay = calculateRetryDelay;\nconst random_js_1 = require(\"./random.js\");\n/**\n * Calculates the delay interval for retry attempts using exponential delay with jitter.\n * @param retryAttempt - The current retry attempt number.\n * @param config - The exponential retry configuration.\n * @returns An object containing the calculated retry delay.\n */\nfunction calculateRetryDelay(retryAttempt, config) {\n // Exponentially increase the delay each time\n const exponentialDelay = config.retryDelayInMs * Math.pow(2, retryAttempt);\n // Don't let the delay exceed the maximum\n const clampedDelay = Math.min(config.maxRetryDelayInMs, exponentialDelay);\n // Allow the final value to have some \"jitter\" (within 50% of the delay size) so\n // that retries across multiple clients don't occur simultaneously.\n const retryAfterInMs = clampedDelay / 2 + (0, random_js_1.getRandomIntegerInclusive)(0, clampedDelay / 2);\n return { retryAfterInMs };\n}\n//# sourceMappingURL=delay.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.delay = delay;\nexports.parseHeaderValueAsNumber = parseHeaderValueAsNumber;\nconst AbortError_js_1 = require(\"../abort-controller/AbortError.js\");\nconst StandardAbortMessage = \"The operation was aborted.\";\n/**\n * A wrapper for setTimeout that resolves a promise after delayInMs milliseconds.\n * @param delayInMs - The number of milliseconds to be delayed.\n * @param value - The value to be resolved with after a timeout of t milliseconds.\n * @param options - The options for delay - currently abort options\n * - abortSignal - The abortSignal associated with containing operation.\n * - abortErrorMsg - The abort error message associated with containing operation.\n * @returns Resolved promise\n */\nfunction delay(delayInMs, value, options) {\n return new Promise((resolve, reject) => {\n let timer = undefined;\n let onAborted = undefined;\n const rejectOnAbort = () => {\n return reject(new AbortError_js_1.AbortError(options?.abortErrorMsg ? options?.abortErrorMsg : StandardAbortMessage));\n };\n const removeListeners = () => {\n if (options?.abortSignal && onAborted) {\n options.abortSignal.removeEventListener(\"abort\", onAborted);\n }\n };\n onAborted = () => {\n if (timer) {\n clearTimeout(timer);\n }\n removeListeners();\n return rejectOnAbort();\n };\n if (options?.abortSignal && options.abortSignal.aborted) {\n return rejectOnAbort();\n }\n timer = setTimeout(() => {\n removeListeners();\n resolve(value);\n }, delayInMs);\n if (options?.abortSignal) {\n options.abortSignal.addEventListener(\"abort\", onAborted);\n }\n });\n}\n/**\n * @internal\n * @returns the parsed value or undefined if the parsed value is invalid.\n */\nfunction parseHeaderValueAsNumber(response, headerName) {\n const value = response.headers.get(headerName);\n if (!value)\n return;\n const valueAsNum = Number(value);\n if (Number.isNaN(valueAsNum))\n return;\n return valueAsNum;\n}\n//# sourceMappingURL=helpers.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isThrottlingRetryResponse = isThrottlingRetryResponse;\nexports.throttlingRetryStrategy = throttlingRetryStrategy;\nconst helpers_js_1 = require(\"../util/helpers.js\");\n/**\n * The header that comes back from services representing\n * the amount of time (minimum) to wait to retry (in seconds or timestamp after which we can retry).\n */\nconst RetryAfterHeader = \"Retry-After\";\n/**\n * The headers that come back from services representing\n * the amount of time (minimum) to wait to retry.\n *\n * \"retry-after-ms\", \"x-ms-retry-after-ms\" : milliseconds\n * \"Retry-After\" : seconds or timestamp\n */\nconst AllRetryAfterHeaders = [\"retry-after-ms\", \"x-ms-retry-after-ms\", RetryAfterHeader];\n/**\n * A response is a throttling retry response if it has a throttling status code (429 or 503),\n * as long as one of the [ \"Retry-After\" or \"retry-after-ms\" or \"x-ms-retry-after-ms\" ] headers has a valid value.\n *\n * Returns the `retryAfterInMs` value if the response is a throttling retry response.\n * If not throttling retry response, returns `undefined`.\n *\n * @internal\n */\nfunction getRetryAfterInMs(response) {\n if (!(response && [429, 503].includes(response.status)))\n return undefined;\n try {\n // Headers: \"retry-after-ms\", \"x-ms-retry-after-ms\", \"Retry-After\"\n for (const header of AllRetryAfterHeaders) {\n const retryAfterValue = (0, helpers_js_1.parseHeaderValueAsNumber)(response, header);\n if (retryAfterValue === 0 || retryAfterValue) {\n // \"Retry-After\" header ==> seconds\n // \"retry-after-ms\", \"x-ms-retry-after-ms\" headers ==> milli-seconds\n const multiplyingFactor = header === RetryAfterHeader ? 1000 : 1;\n return retryAfterValue * multiplyingFactor; // in milli-seconds\n }\n }\n // RetryAfterHeader (\"Retry-After\") has a special case where it might be formatted as a date instead of a number of seconds\n const retryAfterHeader = response.headers.get(RetryAfterHeader);\n if (!retryAfterHeader)\n return;\n const date = Date.parse(retryAfterHeader);\n const diff = date - Date.now();\n // negative diff would mean a date in the past, so retry asap with 0 milliseconds\n return Number.isFinite(diff) ? Math.max(0, diff) : undefined;\n }\n catch {\n return undefined;\n }\n}\n/**\n * A response is a retry response if it has a throttling status code (429 or 503),\n * as long as one of the [ \"Retry-After\" or \"retry-after-ms\" or \"x-ms-retry-after-ms\" ] headers has a valid value.\n */\nfunction isThrottlingRetryResponse(response) {\n return Number.isFinite(getRetryAfterInMs(response));\n}\nfunction throttlingRetryStrategy() {\n return {\n name: \"throttlingRetryStrategy\",\n retry({ response }) {\n const retryAfterInMs = getRetryAfterInMs(response);\n if (!Number.isFinite(retryAfterInMs)) {\n return { skipStrategy: true };\n }\n return {\n retryAfterInMs,\n };\n },\n };\n}\n//# sourceMappingURL=throttlingRetryStrategy.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.exponentialRetryStrategy = exponentialRetryStrategy;\nexports.isExponentialRetryResponse = isExponentialRetryResponse;\nexports.isSystemError = isSystemError;\nconst delay_js_1 = require(\"../util/delay.js\");\nconst throttlingRetryStrategy_js_1 = require(\"./throttlingRetryStrategy.js\");\n// intervals are in milliseconds\nconst DEFAULT_CLIENT_RETRY_INTERVAL = 1000;\nconst DEFAULT_CLIENT_MAX_RETRY_INTERVAL = 1000 * 64;\n/**\n * A retry strategy that retries with an exponentially increasing delay in these two cases:\n * - When there are errors in the underlying transport layer (e.g. DNS lookup failures).\n * - Or otherwise if the outgoing request fails (408, greater or equal than 500, except for 501 and 505).\n */\nfunction exponentialRetryStrategy(options = {}) {\n const retryInterval = options.retryDelayInMs ?? DEFAULT_CLIENT_RETRY_INTERVAL;\n const maxRetryInterval = options.maxRetryDelayInMs ?? DEFAULT_CLIENT_MAX_RETRY_INTERVAL;\n return {\n name: \"exponentialRetryStrategy\",\n retry({ retryCount, response, responseError }) {\n const matchedSystemError = isSystemError(responseError);\n const ignoreSystemErrors = matchedSystemError && options.ignoreSystemErrors;\n const isExponential = isExponentialRetryResponse(response);\n const ignoreExponentialResponse = isExponential && options.ignoreHttpStatusCodes;\n const unknownResponse = response && ((0, throttlingRetryStrategy_js_1.isThrottlingRetryResponse)(response) || !isExponential);\n if (unknownResponse || ignoreExponentialResponse || ignoreSystemErrors) {\n return { skipStrategy: true };\n }\n if (responseError && !matchedSystemError && !isExponential) {\n return { errorToThrow: responseError };\n }\n return (0, delay_js_1.calculateRetryDelay)(retryCount, {\n retryDelayInMs: retryInterval,\n maxRetryDelayInMs: maxRetryInterval,\n });\n },\n };\n}\n/**\n * A response is a retry response if it has status codes:\n * - 408, or\n * - Greater or equal than 500, except for 501 and 505.\n */\nfunction isExponentialRetryResponse(response) {\n return Boolean(response &&\n response.status !== undefined &&\n (response.status >= 500 || response.status === 408) &&\n response.status !== 501 &&\n response.status !== 505);\n}\n/**\n * Determines whether an error from a pipeline response was triggered in the network layer.\n */\nfunction isSystemError(err) {\n if (!err) {\n return false;\n }\n return (err.code === \"ETIMEDOUT\" ||\n err.code === \"ESOCKETTIMEDOUT\" ||\n err.code === \"ECONNREFUSED\" ||\n err.code === \"ECONNRESET\" ||\n err.code === \"ENOENT\" ||\n err.code === \"ENOTFOUND\");\n}\n//# sourceMappingURL=exponentialRetryStrategy.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.retryPolicy = retryPolicy;\nconst helpers_js_1 = require(\"../util/helpers.js\");\nconst AbortError_js_1 = require(\"../abort-controller/AbortError.js\");\nconst logger_js_1 = require(\"../logger/logger.js\");\nconst constants_js_1 = require(\"../constants.js\");\nconst retryPolicyLogger = (0, logger_js_1.createClientLogger)(\"ts-http-runtime retryPolicy\");\n/**\n * The programmatic identifier of the retryPolicy.\n */\nconst retryPolicyName = \"retryPolicy\";\n/**\n * retryPolicy is a generic policy to enable retrying requests when certain conditions are met\n */\nfunction retryPolicy(strategies, options = { maxRetries: constants_js_1.DEFAULT_RETRY_POLICY_COUNT }) {\n const logger = options.logger || retryPolicyLogger;\n return {\n name: retryPolicyName,\n async sendRequest(request, next) {\n let response;\n let responseError;\n let retryCount = -1;\n retryRequest: while (true) {\n retryCount += 1;\n response = undefined;\n responseError = undefined;\n try {\n logger.info(`Retry ${retryCount}: Attempting to send request`, request.requestId);\n response = await next(request);\n logger.info(`Retry ${retryCount}: Received a response from request`, request.requestId);\n }\n catch (e) {\n logger.error(`Retry ${retryCount}: Received an error from request`, request.requestId);\n // RestErrors are valid targets for the retry strategies.\n // If none of the retry strategies can work with them, they will be thrown later in this policy.\n // If the received error is not a RestError, it is immediately thrown.\n responseError = e;\n if (!e || responseError.name !== \"RestError\") {\n throw e;\n }\n response = responseError.response;\n }\n if (request.abortSignal?.aborted) {\n logger.error(`Retry ${retryCount}: Request aborted.`);\n const abortError = new AbortError_js_1.AbortError();\n throw abortError;\n }\n if (retryCount >= (options.maxRetries ?? constants_js_1.DEFAULT_RETRY_POLICY_COUNT)) {\n logger.info(`Retry ${retryCount}: Maximum retries reached. Returning the last received response, or throwing the last received error.`);\n if (responseError) {\n throw responseError;\n }\n else if (response) {\n return response;\n }\n else {\n throw new Error(\"Maximum retries reached with no response or error to throw\");\n }\n }\n logger.info(`Retry ${retryCount}: Processing ${strategies.length} retry strategies.`);\n strategiesLoop: for (const strategy of strategies) {\n const strategyLogger = strategy.logger || logger;\n strategyLogger.info(`Retry ${retryCount}: Processing retry strategy ${strategy.name}.`);\n const modifiers = strategy.retry({\n retryCount,\n response,\n responseError,\n });\n if (modifiers.skipStrategy) {\n strategyLogger.info(`Retry ${retryCount}: Skipped.`);\n continue strategiesLoop;\n }\n const { errorToThrow, retryAfterInMs, redirectTo } = modifiers;\n if (errorToThrow) {\n strategyLogger.error(`Retry ${retryCount}: Retry strategy ${strategy.name} throws error:`, errorToThrow);\n throw errorToThrow;\n }\n if (retryAfterInMs || retryAfterInMs === 0) {\n strategyLogger.info(`Retry ${retryCount}: Retry strategy ${strategy.name} retries after ${retryAfterInMs}`);\n await (0, helpers_js_1.delay)(retryAfterInMs, undefined, { abortSignal: request.abortSignal });\n continue retryRequest;\n }\n if (redirectTo) {\n strategyLogger.info(`Retry ${retryCount}: Retry strategy ${strategy.name} redirects to ${redirectTo}`);\n request.url = redirectTo;\n continue retryRequest;\n }\n }\n if (responseError) {\n logger.info(`None of the retry strategies could work with the received error. Throwing it.`);\n throw responseError;\n }\n if (response) {\n logger.info(`None of the retry strategies could work with the received response. Returning it.`);\n return response;\n }\n // If all the retries skip and there's no response,\n // we're still in the retry loop, so a new request will be sent\n // until `maxRetries` is reached.\n }\n },\n };\n}\n//# sourceMappingURL=retryPolicy.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.defaultRetryPolicyName = void 0;\nexports.defaultRetryPolicy = defaultRetryPolicy;\nconst exponentialRetryStrategy_js_1 = require(\"../retryStrategies/exponentialRetryStrategy.js\");\nconst throttlingRetryStrategy_js_1 = require(\"../retryStrategies/throttlingRetryStrategy.js\");\nconst retryPolicy_js_1 = require(\"./retryPolicy.js\");\nconst constants_js_1 = require(\"../constants.js\");\n/**\n * Name of the {@link defaultRetryPolicy}\n */\nexports.defaultRetryPolicyName = \"defaultRetryPolicy\";\n/**\n * A policy that retries according to three strategies:\n * - When the server sends a 429 response with a Retry-After header.\n * - When there are errors in the underlying transport layer (e.g. DNS lookup failures).\n * - Or otherwise if the outgoing request fails, it will retry with an exponentially increasing delay.\n */\nfunction defaultRetryPolicy(options = {}) {\n return {\n name: exports.defaultRetryPolicyName,\n sendRequest: (0, retryPolicy_js_1.retryPolicy)([(0, throttlingRetryStrategy_js_1.throttlingRetryStrategy)(), (0, exponentialRetryStrategy_js_1.exponentialRetryStrategy)(options)], {\n maxRetries: options.maxRetries ?? constants_js_1.DEFAULT_RETRY_POLICY_COUNT,\n }).sendRequest,\n };\n}\n//# sourceMappingURL=defaultRetryPolicy.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isReactNative = exports.isNodeRuntime = exports.isNodeLike = exports.isBun = exports.isDeno = exports.isWebWorker = exports.isBrowser = void 0;\n/**\n * A constant that indicates whether the environment the code is running is a Web Browser.\n */\n// eslint-disable-next-line @azure/azure-sdk/ts-no-window\nexports.isBrowser = typeof window !== \"undefined\" && typeof window.document !== \"undefined\";\n/**\n * A constant that indicates whether the environment the code is running is a Web Worker.\n */\nexports.isWebWorker = typeof self === \"object\" &&\n typeof self?.importScripts === \"function\" &&\n (self.constructor?.name === \"DedicatedWorkerGlobalScope\" ||\n self.constructor?.name === \"ServiceWorkerGlobalScope\" ||\n self.constructor?.name === \"SharedWorkerGlobalScope\");\n/**\n * A constant that indicates whether the environment the code is running is Deno.\n */\nexports.isDeno = typeof Deno !== \"undefined\" &&\n typeof Deno.version !== \"undefined\" &&\n typeof Deno.version.deno !== \"undefined\";\n/**\n * A constant that indicates whether the environment the code is running is Bun.sh.\n */\nexports.isBun = typeof Bun !== \"undefined\" && typeof Bun.version !== \"undefined\";\n/**\n * A constant that indicates whether the environment the code is running is a Node.js compatible environment.\n */\nexports.isNodeLike = typeof globalThis.process !== \"undefined\" &&\n Boolean(globalThis.process.version) &&\n Boolean(globalThis.process.versions?.node);\n/**\n * A constant that indicates whether the environment the code is running is Node.JS.\n */\nexports.isNodeRuntime = exports.isNodeLike && !exports.isBun && !exports.isDeno;\n/**\n * A constant that indicates whether the environment the code is running is in React-Native.\n */\n// https://github.com/facebook/react-native/blob/main/packages/react-native/Libraries/Core/setUpNavigator.js\nexports.isReactNative = typeof navigator !== \"undefined\" && navigator?.product === \"ReactNative\";\n//# sourceMappingURL=checkEnvironment.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.formDataPolicyName = void 0;\nexports.formDataPolicy = formDataPolicy;\nconst bytesEncoding_js_1 = require(\"../util/bytesEncoding.js\");\nconst checkEnvironment_js_1 = require(\"../util/checkEnvironment.js\");\nconst httpHeaders_js_1 = require(\"../httpHeaders.js\");\n/**\n * The programmatic identifier of the formDataPolicy.\n */\nexports.formDataPolicyName = \"formDataPolicy\";\nfunction formDataToFormDataMap(formData) {\n const formDataMap = {};\n for (const [key, value] of formData.entries()) {\n formDataMap[key] ??= [];\n formDataMap[key].push(value);\n }\n return formDataMap;\n}\n/**\n * A policy that encodes FormData on the request into the body.\n */\nfunction formDataPolicy() {\n return {\n name: exports.formDataPolicyName,\n async sendRequest(request, next) {\n if (checkEnvironment_js_1.isNodeLike && typeof FormData !== \"undefined\" && request.body instanceof FormData) {\n request.formData = formDataToFormDataMap(request.body);\n request.body = undefined;\n }\n if (request.formData) {\n const contentType = request.headers.get(\"Content-Type\");\n if (contentType && contentType.indexOf(\"application/x-www-form-urlencoded\") !== -1) {\n request.body = wwwFormUrlEncode(request.formData);\n }\n else {\n await prepareFormData(request.formData, request);\n }\n request.formData = undefined;\n }\n return next(request);\n },\n };\n}\nfunction wwwFormUrlEncode(formData) {\n const urlSearchParams = new URLSearchParams();\n for (const [key, value] of Object.entries(formData)) {\n if (Array.isArray(value)) {\n for (const subValue of value) {\n urlSearchParams.append(key, subValue.toString());\n }\n }\n else {\n urlSearchParams.append(key, value.toString());\n }\n }\n return urlSearchParams.toString();\n}\nasync function prepareFormData(formData, request) {\n // validate content type (multipart/form-data)\n const contentType = request.headers.get(\"Content-Type\");\n if (contentType && !contentType.startsWith(\"multipart/form-data\")) {\n // content type is specified and is not multipart/form-data. Exit.\n return;\n }\n request.headers.set(\"Content-Type\", contentType ?? \"multipart/form-data\");\n // set body to MultipartRequestBody using content from FormDataMap\n const parts = [];\n for (const [fieldName, values] of Object.entries(formData)) {\n for (const value of Array.isArray(values) ? values : [values]) {\n if (typeof value === \"string\") {\n parts.push({\n headers: (0, httpHeaders_js_1.createHttpHeaders)({\n \"Content-Disposition\": `form-data; name=\"${fieldName}\"`,\n }),\n body: (0, bytesEncoding_js_1.stringToUint8Array)(value, \"utf-8\"),\n });\n }\n else if (value === undefined || value === null || typeof value !== \"object\") {\n throw new Error(`Unexpected value for key ${fieldName}: ${value}. Value should be serialized to string first.`);\n }\n else {\n // using || instead of ?? here since if value.name is empty we should create a file name\n const fileName = value.name || \"blob\";\n const headers = (0, httpHeaders_js_1.createHttpHeaders)();\n headers.set(\"Content-Disposition\", `form-data; name=\"${fieldName}\"; filename=\"${fileName}\"`);\n // again, || is used since an empty value.type means the content type is unset\n headers.set(\"Content-Type\", value.type || \"application/octet-stream\");\n parts.push({\n headers,\n body: value,\n });\n }\n }\n }\n request.multipartBody = { parts };\n}\n//# sourceMappingURL=formDataPolicy.js.map","/**\n * Helpers.\n */\n\nvar s = 1000;\nvar m = s * 60;\nvar h = m * 60;\nvar d = h * 24;\nvar w = d * 7;\nvar y = d * 365.25;\n\n/**\n * Parse or format the given `val`.\n *\n * Options:\n *\n * - `long` verbose formatting [false]\n *\n * @param {String|Number} val\n * @param {Object} [options]\n * @throws {Error} throw an error if val is not a non-empty string or a number\n * @return {String|Number}\n * @api public\n */\n\nmodule.exports = function (val, options) {\n options = options || {};\n var type = typeof val;\n if (type === 'string' && val.length > 0) {\n return parse(val);\n } else if (type === 'number' && isFinite(val)) {\n return options.long ? fmtLong(val) : fmtShort(val);\n }\n throw new Error(\n 'val is not a non-empty string or a valid number. val=' +\n JSON.stringify(val)\n );\n};\n\n/**\n * Parse the given `str` and return milliseconds.\n *\n * @param {String} str\n * @return {Number}\n * @api private\n */\n\nfunction parse(str) {\n str = String(str);\n if (str.length > 100) {\n return;\n }\n var match = /^(-?(?:\\d+)?\\.?\\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(\n str\n );\n if (!match) {\n return;\n }\n var n = parseFloat(match[1]);\n var type = (match[2] || 'ms').toLowerCase();\n switch (type) {\n case 'years':\n case 'year':\n case 'yrs':\n case 'yr':\n case 'y':\n return n * y;\n case 'weeks':\n case 'week':\n case 'w':\n return n * w;\n case 'days':\n case 'day':\n case 'd':\n return n * d;\n case 'hours':\n case 'hour':\n case 'hrs':\n case 'hr':\n case 'h':\n return n * h;\n case 'minutes':\n case 'minute':\n case 'mins':\n case 'min':\n case 'm':\n return n * m;\n case 'seconds':\n case 'second':\n case 'secs':\n case 'sec':\n case 's':\n return n * s;\n case 'milliseconds':\n case 'millisecond':\n case 'msecs':\n case 'msec':\n case 'ms':\n return n;\n default:\n return undefined;\n }\n}\n\n/**\n * Short format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction fmtShort(ms) {\n var msAbs = Math.abs(ms);\n if (msAbs >= d) {\n return Math.round(ms / d) + 'd';\n }\n if (msAbs >= h) {\n return Math.round(ms / h) + 'h';\n }\n if (msAbs >= m) {\n return Math.round(ms / m) + 'm';\n }\n if (msAbs >= s) {\n return Math.round(ms / s) + 's';\n }\n return ms + 'ms';\n}\n\n/**\n * Long format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction fmtLong(ms) {\n var msAbs = Math.abs(ms);\n if (msAbs >= d) {\n return plural(ms, msAbs, d, 'day');\n }\n if (msAbs >= h) {\n return plural(ms, msAbs, h, 'hour');\n }\n if (msAbs >= m) {\n return plural(ms, msAbs, m, 'minute');\n }\n if (msAbs >= s) {\n return plural(ms, msAbs, s, 'second');\n }\n return ms + ' ms';\n}\n\n/**\n * Pluralization helper.\n */\n\nfunction plural(ms, msAbs, n, name) {\n var isPlural = msAbs >= n * 1.5;\n return Math.round(ms / n) + ' ' + name + (isPlural ? 's' : '');\n}\n","\n/**\n * This is the common logic for both the Node.js and web browser\n * implementations of `debug()`.\n */\n\nfunction setup(env) {\n\tcreateDebug.debug = createDebug;\n\tcreateDebug.default = createDebug;\n\tcreateDebug.coerce = coerce;\n\tcreateDebug.disable = disable;\n\tcreateDebug.enable = enable;\n\tcreateDebug.enabled = enabled;\n\tcreateDebug.humanize = require('ms');\n\tcreateDebug.destroy = destroy;\n\n\tObject.keys(env).forEach(key => {\n\t\tcreateDebug[key] = env[key];\n\t});\n\n\t/**\n\t* The currently active debug mode names, and names to skip.\n\t*/\n\n\tcreateDebug.names = [];\n\tcreateDebug.skips = [];\n\n\t/**\n\t* Map of special \"%n\" handling functions, for the debug \"format\" argument.\n\t*\n\t* Valid key names are a single, lower or upper-case letter, i.e. \"n\" and \"N\".\n\t*/\n\tcreateDebug.formatters = {};\n\n\t/**\n\t* Selects a color for a debug namespace\n\t* @param {String} namespace The namespace string for the debug instance to be colored\n\t* @return {Number|String} An ANSI color code for the given namespace\n\t* @api private\n\t*/\n\tfunction selectColor(namespace) {\n\t\tlet hash = 0;\n\n\t\tfor (let i = 0; i < namespace.length; i++) {\n\t\t\thash = ((hash << 5) - hash) + namespace.charCodeAt(i);\n\t\t\thash |= 0; // Convert to 32bit integer\n\t\t}\n\n\t\treturn createDebug.colors[Math.abs(hash) % createDebug.colors.length];\n\t}\n\tcreateDebug.selectColor = selectColor;\n\n\t/**\n\t* Create a debugger with the given `namespace`.\n\t*\n\t* @param {String} namespace\n\t* @return {Function}\n\t* @api public\n\t*/\n\tfunction createDebug(namespace) {\n\t\tlet prevTime;\n\t\tlet enableOverride = null;\n\t\tlet namespacesCache;\n\t\tlet enabledCache;\n\n\t\tfunction debug(...args) {\n\t\t\t// Disabled?\n\t\t\tif (!debug.enabled) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst self = debug;\n\n\t\t\t// Set `diff` timestamp\n\t\t\tconst curr = Number(new Date());\n\t\t\tconst ms = curr - (prevTime || curr);\n\t\t\tself.diff = ms;\n\t\t\tself.prev = prevTime;\n\t\t\tself.curr = curr;\n\t\t\tprevTime = curr;\n\n\t\t\targs[0] = createDebug.coerce(args[0]);\n\n\t\t\tif (typeof args[0] !== 'string') {\n\t\t\t\t// Anything else let's inspect with %O\n\t\t\t\targs.unshift('%O');\n\t\t\t}\n\n\t\t\t// Apply any `formatters` transformations\n\t\t\tlet index = 0;\n\t\t\targs[0] = args[0].replace(/%([a-zA-Z%])/g, (match, format) => {\n\t\t\t\t// If we encounter an escaped % then don't increase the array index\n\t\t\t\tif (match === '%%') {\n\t\t\t\t\treturn '%';\n\t\t\t\t}\n\t\t\t\tindex++;\n\t\t\t\tconst formatter = createDebug.formatters[format];\n\t\t\t\tif (typeof formatter === 'function') {\n\t\t\t\t\tconst val = args[index];\n\t\t\t\t\tmatch = formatter.call(self, val);\n\n\t\t\t\t\t// Now we need to remove `args[index]` since it's inlined in the `format`\n\t\t\t\t\targs.splice(index, 1);\n\t\t\t\t\tindex--;\n\t\t\t\t}\n\t\t\t\treturn match;\n\t\t\t});\n\n\t\t\t// Apply env-specific formatting (colors, etc.)\n\t\t\tcreateDebug.formatArgs.call(self, args);\n\n\t\t\tconst logFn = self.log || createDebug.log;\n\t\t\tlogFn.apply(self, args);\n\t\t}\n\n\t\tdebug.namespace = namespace;\n\t\tdebug.useColors = createDebug.useColors();\n\t\tdebug.color = createDebug.selectColor(namespace);\n\t\tdebug.extend = extend;\n\t\tdebug.destroy = createDebug.destroy; // XXX Temporary. Will be removed in the next major release.\n\n\t\tObject.defineProperty(debug, 'enabled', {\n\t\t\tenumerable: true,\n\t\t\tconfigurable: false,\n\t\t\tget: () => {\n\t\t\t\tif (enableOverride !== null) {\n\t\t\t\t\treturn enableOverride;\n\t\t\t\t}\n\t\t\t\tif (namespacesCache !== createDebug.namespaces) {\n\t\t\t\t\tnamespacesCache = createDebug.namespaces;\n\t\t\t\t\tenabledCache = createDebug.enabled(namespace);\n\t\t\t\t}\n\n\t\t\t\treturn enabledCache;\n\t\t\t},\n\t\t\tset: v => {\n\t\t\t\tenableOverride = v;\n\t\t\t}\n\t\t});\n\n\t\t// Env-specific initialization logic for debug instances\n\t\tif (typeof createDebug.init === 'function') {\n\t\t\tcreateDebug.init(debug);\n\t\t}\n\n\t\treturn debug;\n\t}\n\n\tfunction extend(namespace, delimiter) {\n\t\tconst newDebug = createDebug(this.namespace + (typeof delimiter === 'undefined' ? ':' : delimiter) + namespace);\n\t\tnewDebug.log = this.log;\n\t\treturn newDebug;\n\t}\n\n\t/**\n\t* Enables a debug mode by namespaces. This can include modes\n\t* separated by a colon and wildcards.\n\t*\n\t* @param {String} namespaces\n\t* @api public\n\t*/\n\tfunction enable(namespaces) {\n\t\tcreateDebug.save(namespaces);\n\t\tcreateDebug.namespaces = namespaces;\n\n\t\tcreateDebug.names = [];\n\t\tcreateDebug.skips = [];\n\n\t\tconst split = (typeof namespaces === 'string' ? namespaces : '')\n\t\t\t.trim()\n\t\t\t.replace(/\\s+/g, ',')\n\t\t\t.split(',')\n\t\t\t.filter(Boolean);\n\n\t\tfor (const ns of split) {\n\t\t\tif (ns[0] === '-') {\n\t\t\t\tcreateDebug.skips.push(ns.slice(1));\n\t\t\t} else {\n\t\t\t\tcreateDebug.names.push(ns);\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Checks if the given string matches a namespace template, honoring\n\t * asterisks as wildcards.\n\t *\n\t * @param {String} search\n\t * @param {String} template\n\t * @return {Boolean}\n\t */\n\tfunction matchesTemplate(search, template) {\n\t\tlet searchIndex = 0;\n\t\tlet templateIndex = 0;\n\t\tlet starIndex = -1;\n\t\tlet matchIndex = 0;\n\n\t\twhile (searchIndex < search.length) {\n\t\t\tif (templateIndex < template.length && (template[templateIndex] === search[searchIndex] || template[templateIndex] === '*')) {\n\t\t\t\t// Match character or proceed with wildcard\n\t\t\t\tif (template[templateIndex] === '*') {\n\t\t\t\t\tstarIndex = templateIndex;\n\t\t\t\t\tmatchIndex = searchIndex;\n\t\t\t\t\ttemplateIndex++; // Skip the '*'\n\t\t\t\t} else {\n\t\t\t\t\tsearchIndex++;\n\t\t\t\t\ttemplateIndex++;\n\t\t\t\t}\n\t\t\t} else if (starIndex !== -1) { // eslint-disable-line no-negated-condition\n\t\t\t\t// Backtrack to the last '*' and try to match more characters\n\t\t\t\ttemplateIndex = starIndex + 1;\n\t\t\t\tmatchIndex++;\n\t\t\t\tsearchIndex = matchIndex;\n\t\t\t} else {\n\t\t\t\treturn false; // No match\n\t\t\t}\n\t\t}\n\n\t\t// Handle trailing '*' in template\n\t\twhile (templateIndex < template.length && template[templateIndex] === '*') {\n\t\t\ttemplateIndex++;\n\t\t}\n\n\t\treturn templateIndex === template.length;\n\t}\n\n\t/**\n\t* Disable debug output.\n\t*\n\t* @return {String} namespaces\n\t* @api public\n\t*/\n\tfunction disable() {\n\t\tconst namespaces = [\n\t\t\t...createDebug.names,\n\t\t\t...createDebug.skips.map(namespace => '-' + namespace)\n\t\t].join(',');\n\t\tcreateDebug.enable('');\n\t\treturn namespaces;\n\t}\n\n\t/**\n\t* Returns true if the given mode name is enabled, false otherwise.\n\t*\n\t* @param {String} name\n\t* @return {Boolean}\n\t* @api public\n\t*/\n\tfunction enabled(name) {\n\t\tfor (const skip of createDebug.skips) {\n\t\t\tif (matchesTemplate(name, skip)) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\n\t\tfor (const ns of createDebug.names) {\n\t\t\tif (matchesTemplate(name, ns)) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t}\n\n\t/**\n\t* Coerce `val`.\n\t*\n\t* @param {Mixed} val\n\t* @return {Mixed}\n\t* @api private\n\t*/\n\tfunction coerce(val) {\n\t\tif (val instanceof Error) {\n\t\t\treturn val.stack || val.message;\n\t\t}\n\t\treturn val;\n\t}\n\n\t/**\n\t* XXX DO NOT USE. This is a temporary stub function.\n\t* XXX It WILL be removed in the next major release.\n\t*/\n\tfunction destroy() {\n\t\tconsole.warn('Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.');\n\t}\n\n\tcreateDebug.enable(createDebug.load());\n\n\treturn createDebug;\n}\n\nmodule.exports = setup;\n","/* eslint-env browser */\n\n/**\n * This is the web browser implementation of `debug()`.\n */\n\nexports.formatArgs = formatArgs;\nexports.save = save;\nexports.load = load;\nexports.useColors = useColors;\nexports.storage = localstorage();\nexports.destroy = (() => {\n\tlet warned = false;\n\n\treturn () => {\n\t\tif (!warned) {\n\t\t\twarned = true;\n\t\t\tconsole.warn('Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.');\n\t\t}\n\t};\n})();\n\n/**\n * Colors.\n */\n\nexports.colors = [\n\t'#0000CC',\n\t'#0000FF',\n\t'#0033CC',\n\t'#0033FF',\n\t'#0066CC',\n\t'#0066FF',\n\t'#0099CC',\n\t'#0099FF',\n\t'#00CC00',\n\t'#00CC33',\n\t'#00CC66',\n\t'#00CC99',\n\t'#00CCCC',\n\t'#00CCFF',\n\t'#3300CC',\n\t'#3300FF',\n\t'#3333CC',\n\t'#3333FF',\n\t'#3366CC',\n\t'#3366FF',\n\t'#3399CC',\n\t'#3399FF',\n\t'#33CC00',\n\t'#33CC33',\n\t'#33CC66',\n\t'#33CC99',\n\t'#33CCCC',\n\t'#33CCFF',\n\t'#6600CC',\n\t'#6600FF',\n\t'#6633CC',\n\t'#6633FF',\n\t'#66CC00',\n\t'#66CC33',\n\t'#9900CC',\n\t'#9900FF',\n\t'#9933CC',\n\t'#9933FF',\n\t'#99CC00',\n\t'#99CC33',\n\t'#CC0000',\n\t'#CC0033',\n\t'#CC0066',\n\t'#CC0099',\n\t'#CC00CC',\n\t'#CC00FF',\n\t'#CC3300',\n\t'#CC3333',\n\t'#CC3366',\n\t'#CC3399',\n\t'#CC33CC',\n\t'#CC33FF',\n\t'#CC6600',\n\t'#CC6633',\n\t'#CC9900',\n\t'#CC9933',\n\t'#CCCC00',\n\t'#CCCC33',\n\t'#FF0000',\n\t'#FF0033',\n\t'#FF0066',\n\t'#FF0099',\n\t'#FF00CC',\n\t'#FF00FF',\n\t'#FF3300',\n\t'#FF3333',\n\t'#FF3366',\n\t'#FF3399',\n\t'#FF33CC',\n\t'#FF33FF',\n\t'#FF6600',\n\t'#FF6633',\n\t'#FF9900',\n\t'#FF9933',\n\t'#FFCC00',\n\t'#FFCC33'\n];\n\n/**\n * Currently only WebKit-based Web Inspectors, Firefox >= v31,\n * and the Firebug extension (any Firefox version) are known\n * to support \"%c\" CSS customizations.\n *\n * TODO: add a `localStorage` variable to explicitly enable/disable colors\n */\n\n// eslint-disable-next-line complexity\nfunction useColors() {\n\t// NB: In an Electron preload script, document will be defined but not fully\n\t// initialized. Since we know we're in Chrome, we'll just detect this case\n\t// explicitly\n\tif (typeof window !== 'undefined' && window.process && (window.process.type === 'renderer' || window.process.__nwjs)) {\n\t\treturn true;\n\t}\n\n\t// Internet Explorer and Edge do not support colors.\n\tif (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/(edge|trident)\\/(\\d+)/)) {\n\t\treturn false;\n\t}\n\n\tlet m;\n\n\t// Is webkit? http://stackoverflow.com/a/16459606/376773\n\t// document is undefined in react-native: https://github.com/facebook/react-native/pull/1632\n\t// eslint-disable-next-line no-return-assign\n\treturn (typeof document !== 'undefined' && document.documentElement && document.documentElement.style && document.documentElement.style.WebkitAppearance) ||\n\t\t// Is firebug? http://stackoverflow.com/a/398120/376773\n\t\t(typeof window !== 'undefined' && window.console && (window.console.firebug || (window.console.exception && window.console.table))) ||\n\t\t// Is firefox >= v31?\n\t\t// https://developer.mozilla.org/en-US/docs/Tools/Web_Console#Styling_messages\n\t\t(typeof navigator !== 'undefined' && navigator.userAgent && (m = navigator.userAgent.toLowerCase().match(/firefox\\/(\\d+)/)) && parseInt(m[1], 10) >= 31) ||\n\t\t// Double check webkit in userAgent just in case we are in a worker\n\t\t(typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/applewebkit\\/(\\d+)/));\n}\n\n/**\n * Colorize log arguments if enabled.\n *\n * @api public\n */\n\nfunction formatArgs(args) {\n\targs[0] = (this.useColors ? '%c' : '') +\n\t\tthis.namespace +\n\t\t(this.useColors ? ' %c' : ' ') +\n\t\targs[0] +\n\t\t(this.useColors ? '%c ' : ' ') +\n\t\t'+' + module.exports.humanize(this.diff);\n\n\tif (!this.useColors) {\n\t\treturn;\n\t}\n\n\tconst c = 'color: ' + this.color;\n\targs.splice(1, 0, c, 'color: inherit');\n\n\t// The final \"%c\" is somewhat tricky, because there could be other\n\t// arguments passed either before or after the %c, so we need to\n\t// figure out the correct index to insert the CSS into\n\tlet index = 0;\n\tlet lastC = 0;\n\targs[0].replace(/%[a-zA-Z%]/g, match => {\n\t\tif (match === '%%') {\n\t\t\treturn;\n\t\t}\n\t\tindex++;\n\t\tif (match === '%c') {\n\t\t\t// We only are interested in the *last* %c\n\t\t\t// (the user may have provided their own)\n\t\t\tlastC = index;\n\t\t}\n\t});\n\n\targs.splice(lastC, 0, c);\n}\n\n/**\n * Invokes `console.debug()` when available.\n * No-op when `console.debug` is not a \"function\".\n * If `console.debug` is not available, falls back\n * to `console.log`.\n *\n * @api public\n */\nexports.log = console.debug || console.log || (() => {});\n\n/**\n * Save `namespaces`.\n *\n * @param {String} namespaces\n * @api private\n */\nfunction save(namespaces) {\n\ttry {\n\t\tif (namespaces) {\n\t\t\texports.storage.setItem('debug', namespaces);\n\t\t} else {\n\t\t\texports.storage.removeItem('debug');\n\t\t}\n\t} catch (error) {\n\t\t// Swallow\n\t\t// XXX (@Qix-) should we be logging these?\n\t}\n}\n\n/**\n * Load `namespaces`.\n *\n * @return {String} returns the previously persisted debug modes\n * @api private\n */\nfunction load() {\n\tlet r;\n\ttry {\n\t\tr = exports.storage.getItem('debug') || exports.storage.getItem('DEBUG') ;\n\t} catch (error) {\n\t\t// Swallow\n\t\t// XXX (@Qix-) should we be logging these?\n\t}\n\n\t// If debug isn't set in LS, and we're in Electron, try to load $DEBUG\n\tif (!r && typeof process !== 'undefined' && 'env' in process) {\n\t\tr = process.env.DEBUG;\n\t}\n\n\treturn r;\n}\n\n/**\n * Localstorage attempts to return the localstorage.\n *\n * This is necessary because safari throws\n * when a user disables cookies/localstorage\n * and you attempt to access it.\n *\n * @return {LocalStorage}\n * @api private\n */\n\nfunction localstorage() {\n\ttry {\n\t\t// TVMLKit (Apple TV JS Runtime) does not have a window object, just localStorage in the global context\n\t\t// The Browser also has localStorage in the global context.\n\t\treturn localStorage;\n\t} catch (error) {\n\t\t// Swallow\n\t\t// XXX (@Qix-) should we be logging these?\n\t}\n}\n\nmodule.exports = require('./common')(exports);\n\nconst {formatters} = module.exports;\n\n/**\n * Map %j to `JSON.stringify()`, since no Web Inspectors do that by default.\n */\n\nformatters.j = function (v) {\n\ttry {\n\t\treturn JSON.stringify(v);\n\t} catch (error) {\n\t\treturn '[UnexpectedJSONParseError]: ' + error.message;\n\t}\n};\n","'use strict';\n\nmodule.exports = (flag, argv = process.argv) => {\n\tconst prefix = flag.startsWith('-') ? '' : (flag.length === 1 ? '-' : '--');\n\tconst position = argv.indexOf(prefix + flag);\n\tconst terminatorPosition = argv.indexOf('--');\n\treturn position !== -1 && (terminatorPosition === -1 || position < terminatorPosition);\n};\n","'use strict';\nconst os = require('os');\nconst tty = require('tty');\nconst hasFlag = require('has-flag');\n\nconst {env} = process;\n\nlet forceColor;\nif (hasFlag('no-color') ||\n\thasFlag('no-colors') ||\n\thasFlag('color=false') ||\n\thasFlag('color=never')) {\n\tforceColor = 0;\n} else if (hasFlag('color') ||\n\thasFlag('colors') ||\n\thasFlag('color=true') ||\n\thasFlag('color=always')) {\n\tforceColor = 1;\n}\n\nif ('FORCE_COLOR' in env) {\n\tif (env.FORCE_COLOR === 'true') {\n\t\tforceColor = 1;\n\t} else if (env.FORCE_COLOR === 'false') {\n\t\tforceColor = 0;\n\t} else {\n\t\tforceColor = env.FORCE_COLOR.length === 0 ? 1 : Math.min(parseInt(env.FORCE_COLOR, 10), 3);\n\t}\n}\n\nfunction translateLevel(level) {\n\tif (level === 0) {\n\t\treturn false;\n\t}\n\n\treturn {\n\t\tlevel,\n\t\thasBasic: true,\n\t\thas256: level >= 2,\n\t\thas16m: level >= 3\n\t};\n}\n\nfunction supportsColor(haveStream, streamIsTTY) {\n\tif (forceColor === 0) {\n\t\treturn 0;\n\t}\n\n\tif (hasFlag('color=16m') ||\n\t\thasFlag('color=full') ||\n\t\thasFlag('color=truecolor')) {\n\t\treturn 3;\n\t}\n\n\tif (hasFlag('color=256')) {\n\t\treturn 2;\n\t}\n\n\tif (haveStream && !streamIsTTY && forceColor === undefined) {\n\t\treturn 0;\n\t}\n\n\tconst min = forceColor || 0;\n\n\tif (env.TERM === 'dumb') {\n\t\treturn min;\n\t}\n\n\tif (process.platform === 'win32') {\n\t\t// Windows 10 build 10586 is the first Windows release that supports 256 colors.\n\t\t// Windows 10 build 14931 is the first release that supports 16m/TrueColor.\n\t\tconst osRelease = os.release().split('.');\n\t\tif (\n\t\t\tNumber(osRelease[0]) >= 10 &&\n\t\t\tNumber(osRelease[2]) >= 10586\n\t\t) {\n\t\t\treturn Number(osRelease[2]) >= 14931 ? 3 : 2;\n\t\t}\n\n\t\treturn 1;\n\t}\n\n\tif ('CI' in env) {\n\t\tif (['TRAVIS', 'CIRCLECI', 'APPVEYOR', 'GITLAB_CI', 'GITHUB_ACTIONS', 'BUILDKITE'].some(sign => sign in env) || env.CI_NAME === 'codeship') {\n\t\t\treturn 1;\n\t\t}\n\n\t\treturn min;\n\t}\n\n\tif ('TEAMCITY_VERSION' in env) {\n\t\treturn /^(9\\.(0*[1-9]\\d*)\\.|\\d{2,}\\.)/.test(env.TEAMCITY_VERSION) ? 1 : 0;\n\t}\n\n\tif (env.COLORTERM === 'truecolor') {\n\t\treturn 3;\n\t}\n\n\tif ('TERM_PROGRAM' in env) {\n\t\tconst version = parseInt((env.TERM_PROGRAM_VERSION || '').split('.')[0], 10);\n\n\t\tswitch (env.TERM_PROGRAM) {\n\t\t\tcase 'iTerm.app':\n\t\t\t\treturn version >= 3 ? 3 : 2;\n\t\t\tcase 'Apple_Terminal':\n\t\t\t\treturn 2;\n\t\t\t// No default\n\t\t}\n\t}\n\n\tif (/-256(color)?$/i.test(env.TERM)) {\n\t\treturn 2;\n\t}\n\n\tif (/^screen|^xterm|^vt100|^vt220|^rxvt|color|ansi|cygwin|linux/i.test(env.TERM)) {\n\t\treturn 1;\n\t}\n\n\tif ('COLORTERM' in env) {\n\t\treturn 1;\n\t}\n\n\treturn min;\n}\n\nfunction getSupportLevel(stream) {\n\tconst level = supportsColor(stream, stream && stream.isTTY);\n\treturn translateLevel(level);\n}\n\nmodule.exports = {\n\tsupportsColor: getSupportLevel,\n\tstdout: translateLevel(supportsColor(true, tty.isatty(1))),\n\tstderr: translateLevel(supportsColor(true, tty.isatty(2)))\n};\n","/**\n * Module dependencies.\n */\n\nconst tty = require('tty');\nconst util = require('util');\n\n/**\n * This is the Node.js implementation of `debug()`.\n */\n\nexports.init = init;\nexports.log = log;\nexports.formatArgs = formatArgs;\nexports.save = save;\nexports.load = load;\nexports.useColors = useColors;\nexports.destroy = util.deprecate(\n\t() => {},\n\t'Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.'\n);\n\n/**\n * Colors.\n */\n\nexports.colors = [6, 2, 3, 4, 5, 1];\n\ntry {\n\t// Optional dependency (as in, doesn't need to be installed, NOT like optionalDependencies in package.json)\n\t// eslint-disable-next-line import/no-extraneous-dependencies\n\tconst supportsColor = require('supports-color');\n\n\tif (supportsColor && (supportsColor.stderr || supportsColor).level >= 2) {\n\t\texports.colors = [\n\t\t\t20,\n\t\t\t21,\n\t\t\t26,\n\t\t\t27,\n\t\t\t32,\n\t\t\t33,\n\t\t\t38,\n\t\t\t39,\n\t\t\t40,\n\t\t\t41,\n\t\t\t42,\n\t\t\t43,\n\t\t\t44,\n\t\t\t45,\n\t\t\t56,\n\t\t\t57,\n\t\t\t62,\n\t\t\t63,\n\t\t\t68,\n\t\t\t69,\n\t\t\t74,\n\t\t\t75,\n\t\t\t76,\n\t\t\t77,\n\t\t\t78,\n\t\t\t79,\n\t\t\t80,\n\t\t\t81,\n\t\t\t92,\n\t\t\t93,\n\t\t\t98,\n\t\t\t99,\n\t\t\t112,\n\t\t\t113,\n\t\t\t128,\n\t\t\t129,\n\t\t\t134,\n\t\t\t135,\n\t\t\t148,\n\t\t\t149,\n\t\t\t160,\n\t\t\t161,\n\t\t\t162,\n\t\t\t163,\n\t\t\t164,\n\t\t\t165,\n\t\t\t166,\n\t\t\t167,\n\t\t\t168,\n\t\t\t169,\n\t\t\t170,\n\t\t\t171,\n\t\t\t172,\n\t\t\t173,\n\t\t\t178,\n\t\t\t179,\n\t\t\t184,\n\t\t\t185,\n\t\t\t196,\n\t\t\t197,\n\t\t\t198,\n\t\t\t199,\n\t\t\t200,\n\t\t\t201,\n\t\t\t202,\n\t\t\t203,\n\t\t\t204,\n\t\t\t205,\n\t\t\t206,\n\t\t\t207,\n\t\t\t208,\n\t\t\t209,\n\t\t\t214,\n\t\t\t215,\n\t\t\t220,\n\t\t\t221\n\t\t];\n\t}\n} catch (error) {\n\t// Swallow - we only care if `supports-color` is available; it doesn't have to be.\n}\n\n/**\n * Build up the default `inspectOpts` object from the environment variables.\n *\n * $ DEBUG_COLORS=no DEBUG_DEPTH=10 DEBUG_SHOW_HIDDEN=enabled node script.js\n */\n\nexports.inspectOpts = Object.keys(process.env).filter(key => {\n\treturn /^debug_/i.test(key);\n}).reduce((obj, key) => {\n\t// Camel-case\n\tconst prop = key\n\t\t.substring(6)\n\t\t.toLowerCase()\n\t\t.replace(/_([a-z])/g, (_, k) => {\n\t\t\treturn k.toUpperCase();\n\t\t});\n\n\t// Coerce string value into JS value\n\tlet val = process.env[key];\n\tif (/^(yes|on|true|enabled)$/i.test(val)) {\n\t\tval = true;\n\t} else if (/^(no|off|false|disabled)$/i.test(val)) {\n\t\tval = false;\n\t} else if (val === 'null') {\n\t\tval = null;\n\t} else {\n\t\tval = Number(val);\n\t}\n\n\tobj[prop] = val;\n\treturn obj;\n}, {});\n\n/**\n * Is stdout a TTY? Colored output is enabled when `true`.\n */\n\nfunction useColors() {\n\treturn 'colors' in exports.inspectOpts ?\n\t\tBoolean(exports.inspectOpts.colors) :\n\t\ttty.isatty(process.stderr.fd);\n}\n\n/**\n * Adds ANSI color escape codes if enabled.\n *\n * @api public\n */\n\nfunction formatArgs(args) {\n\tconst {namespace: name, useColors} = this;\n\n\tif (useColors) {\n\t\tconst c = this.color;\n\t\tconst colorCode = '\\u001B[3' + (c < 8 ? c : '8;5;' + c);\n\t\tconst prefix = ` ${colorCode};1m${name} \\u001B[0m`;\n\n\t\targs[0] = prefix + args[0].split('\\n').join('\\n' + prefix);\n\t\targs.push(colorCode + 'm+' + module.exports.humanize(this.diff) + '\\u001B[0m');\n\t} else {\n\t\targs[0] = getDate() + name + ' ' + args[0];\n\t}\n}\n\nfunction getDate() {\n\tif (exports.inspectOpts.hideDate) {\n\t\treturn '';\n\t}\n\treturn new Date().toISOString() + ' ';\n}\n\n/**\n * Invokes `util.formatWithOptions()` with the specified arguments and writes to stderr.\n */\n\nfunction log(...args) {\n\treturn process.stderr.write(util.formatWithOptions(exports.inspectOpts, ...args) + '\\n');\n}\n\n/**\n * Save `namespaces`.\n *\n * @param {String} namespaces\n * @api private\n */\nfunction save(namespaces) {\n\tif (namespaces) {\n\t\tprocess.env.DEBUG = namespaces;\n\t} else {\n\t\t// If you set a process.env field to null or undefined, it gets cast to the\n\t\t// string 'null' or 'undefined'. Just delete instead.\n\t\tdelete process.env.DEBUG;\n\t}\n}\n\n/**\n * Load `namespaces`.\n *\n * @return {String} returns the previously persisted debug modes\n * @api private\n */\n\nfunction load() {\n\treturn process.env.DEBUG;\n}\n\n/**\n * Init logic for `debug` instances.\n *\n * Create a new `inspectOpts` object in case `useColors` is set\n * differently for a particular `debug` instance.\n */\n\nfunction init(debug) {\n\tdebug.inspectOpts = {};\n\n\tconst keys = Object.keys(exports.inspectOpts);\n\tfor (let i = 0; i < keys.length; i++) {\n\t\tdebug.inspectOpts[keys[i]] = exports.inspectOpts[keys[i]];\n\t}\n}\n\nmodule.exports = require('./common')(exports);\n\nconst {formatters} = module.exports;\n\n/**\n * Map %o to `util.inspect()`, all on a single line.\n */\n\nformatters.o = function (v) {\n\tthis.inspectOpts.colors = this.useColors;\n\treturn util.inspect(v, this.inspectOpts)\n\t\t.split('\\n')\n\t\t.map(str => str.trim())\n\t\t.join(' ');\n};\n\n/**\n * Map %O to `util.inspect()`, allowing multiple lines if needed.\n */\n\nformatters.O = function (v) {\n\tthis.inspectOpts.colors = this.useColors;\n\treturn util.inspect(v, this.inspectOpts);\n};\n","/**\n * Detect Electron renderer / nwjs process, which is node, but we should\n * treat as a browser.\n */\n\nif (typeof process === 'undefined' || process.type === 'renderer' || process.browser === true || process.__nwjs) {\n\tmodule.exports = require('./browser.js');\n} else {\n\tmodule.exports = require('./node.js');\n}\n","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.req = exports.json = exports.toBuffer = void 0;\nconst http = __importStar(require(\"http\"));\nconst https = __importStar(require(\"https\"));\nasync function toBuffer(stream) {\n let length = 0;\n const chunks = [];\n for await (const chunk of stream) {\n length += chunk.length;\n chunks.push(chunk);\n }\n return Buffer.concat(chunks, length);\n}\nexports.toBuffer = toBuffer;\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nasync function json(stream) {\n const buf = await toBuffer(stream);\n const str = buf.toString('utf8');\n try {\n return JSON.parse(str);\n }\n catch (_err) {\n const err = _err;\n err.message += ` (input: ${str})`;\n throw err;\n }\n}\nexports.json = json;\nfunction req(url, opts = {}) {\n const href = typeof url === 'string' ? url : url.href;\n const req = (href.startsWith('https:') ? https : http).request(url, opts);\n const promise = new Promise((resolve, reject) => {\n req\n .once('response', resolve)\n .once('error', reject)\n .end();\n });\n req.then = promise.then.bind(promise);\n return req;\n}\nexports.req = req;\n//# sourceMappingURL=helpers.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Agent = void 0;\nconst net = __importStar(require(\"net\"));\nconst http = __importStar(require(\"http\"));\nconst https_1 = require(\"https\");\n__exportStar(require(\"./helpers\"), exports);\nconst INTERNAL = Symbol('AgentBaseInternalState');\nclass Agent extends http.Agent {\n constructor(opts) {\n super(opts);\n this[INTERNAL] = {};\n }\n /**\n * Determine whether this is an `http` or `https` request.\n */\n isSecureEndpoint(options) {\n if (options) {\n // First check the `secureEndpoint` property explicitly, since this\n // means that a parent `Agent` is \"passing through\" to this instance.\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (typeof options.secureEndpoint === 'boolean') {\n return options.secureEndpoint;\n }\n // If no explicit `secure` endpoint, check if `protocol` property is\n // set. This will usually be the case since using a full string URL\n // or `URL` instance should be the most common usage.\n if (typeof options.protocol === 'string') {\n return options.protocol === 'https:';\n }\n }\n // Finally, if no `protocol` property was set, then fall back to\n // checking the stack trace of the current call stack, and try to\n // detect the \"https\" module.\n const { stack } = new Error();\n if (typeof stack !== 'string')\n return false;\n return stack\n .split('\\n')\n .some((l) => l.indexOf('(https.js:') !== -1 ||\n l.indexOf('node:https:') !== -1);\n }\n // In order to support async signatures in `connect()` and Node's native\n // connection pooling in `http.Agent`, the array of sockets for each origin\n // has to be updated synchronously. This is so the length of the array is\n // accurate when `addRequest()` is next called. We achieve this by creating a\n // fake socket and adding it to `sockets[origin]` and incrementing\n // `totalSocketCount`.\n incrementSockets(name) {\n // If `maxSockets` and `maxTotalSockets` are both Infinity then there is no\n // need to create a fake socket because Node.js native connection pooling\n // will never be invoked.\n if (this.maxSockets === Infinity && this.maxTotalSockets === Infinity) {\n return null;\n }\n // All instances of `sockets` are expected TypeScript errors. The\n // alternative is to add it as a private property of this class but that\n // will break TypeScript subclassing.\n if (!this.sockets[name]) {\n // @ts-expect-error `sockets` is readonly in `@types/node`\n this.sockets[name] = [];\n }\n const fakeSocket = new net.Socket({ writable: false });\n this.sockets[name].push(fakeSocket);\n // @ts-expect-error `totalSocketCount` isn't defined in `@types/node`\n this.totalSocketCount++;\n return fakeSocket;\n }\n decrementSockets(name, socket) {\n if (!this.sockets[name] || socket === null) {\n return;\n }\n const sockets = this.sockets[name];\n const index = sockets.indexOf(socket);\n if (index !== -1) {\n sockets.splice(index, 1);\n // @ts-expect-error `totalSocketCount` isn't defined in `@types/node`\n this.totalSocketCount--;\n if (sockets.length === 0) {\n // @ts-expect-error `sockets` is readonly in `@types/node`\n delete this.sockets[name];\n }\n }\n }\n // In order to properly update the socket pool, we need to call `getName()` on\n // the core `https.Agent` if it is a secureEndpoint.\n getName(options) {\n const secureEndpoint = this.isSecureEndpoint(options);\n if (secureEndpoint) {\n // @ts-expect-error `getName()` isn't defined in `@types/node`\n return https_1.Agent.prototype.getName.call(this, options);\n }\n // @ts-expect-error `getName()` isn't defined in `@types/node`\n return super.getName(options);\n }\n createSocket(req, options, cb) {\n const connectOpts = {\n ...options,\n secureEndpoint: this.isSecureEndpoint(options),\n };\n const name = this.getName(connectOpts);\n const fakeSocket = this.incrementSockets(name);\n Promise.resolve()\n .then(() => this.connect(req, connectOpts))\n .then((socket) => {\n this.decrementSockets(name, fakeSocket);\n if (socket instanceof http.Agent) {\n try {\n // @ts-expect-error `addRequest()` isn't defined in `@types/node`\n return socket.addRequest(req, connectOpts);\n }\n catch (err) {\n return cb(err);\n }\n }\n this[INTERNAL].currentSocket = socket;\n // @ts-expect-error `createSocket()` isn't defined in `@types/node`\n super.createSocket(req, options, cb);\n }, (err) => {\n this.decrementSockets(name, fakeSocket);\n cb(err);\n });\n }\n createConnection() {\n const socket = this[INTERNAL].currentSocket;\n this[INTERNAL].currentSocket = undefined;\n if (!socket) {\n throw new Error('No socket was returned in the `connect()` function');\n }\n return socket;\n }\n get defaultPort() {\n return (this[INTERNAL].defaultPort ??\n (this.protocol === 'https:' ? 443 : 80));\n }\n set defaultPort(v) {\n if (this[INTERNAL]) {\n this[INTERNAL].defaultPort = v;\n }\n }\n get protocol() {\n return (this[INTERNAL].protocol ??\n (this.isSecureEndpoint() ? 'https:' : 'http:'));\n }\n set protocol(v) {\n if (this[INTERNAL]) {\n this[INTERNAL].protocol = v;\n }\n }\n}\nexports.Agent = Agent;\n//# sourceMappingURL=index.js.map","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.parseProxyResponse = void 0;\nconst debug_1 = __importDefault(require(\"debug\"));\nconst debug = (0, debug_1.default)('https-proxy-agent:parse-proxy-response');\nfunction parseProxyResponse(socket) {\n return new Promise((resolve, reject) => {\n // we need to buffer any HTTP traffic that happens with the proxy before we get\n // the CONNECT response, so that if the response is anything other than an \"200\"\n // response code, then we can re-play the \"data\" events on the socket once the\n // HTTP parser is hooked up...\n let buffersLength = 0;\n const buffers = [];\n function read() {\n const b = socket.read();\n if (b)\n ondata(b);\n else\n socket.once('readable', read);\n }\n function cleanup() {\n socket.removeListener('end', onend);\n socket.removeListener('error', onerror);\n socket.removeListener('readable', read);\n }\n function onend() {\n cleanup();\n debug('onend');\n reject(new Error('Proxy connection ended before receiving CONNECT response'));\n }\n function onerror(err) {\n cleanup();\n debug('onerror %o', err);\n reject(err);\n }\n function ondata(b) {\n buffers.push(b);\n buffersLength += b.length;\n const buffered = Buffer.concat(buffers, buffersLength);\n const endOfHeaders = buffered.indexOf('\\r\\n\\r\\n');\n if (endOfHeaders === -1) {\n // keep buffering\n debug('have not received end of HTTP headers yet...');\n read();\n return;\n }\n const headerParts = buffered\n .slice(0, endOfHeaders)\n .toString('ascii')\n .split('\\r\\n');\n const firstLine = headerParts.shift();\n if (!firstLine) {\n socket.destroy();\n return reject(new Error('No header received from proxy CONNECT response'));\n }\n const firstLineParts = firstLine.split(' ');\n const statusCode = +firstLineParts[1];\n const statusText = firstLineParts.slice(2).join(' ');\n const headers = {};\n for (const header of headerParts) {\n if (!header)\n continue;\n const firstColon = header.indexOf(':');\n if (firstColon === -1) {\n socket.destroy();\n return reject(new Error(`Invalid header from proxy CONNECT response: \"${header}\"`));\n }\n const key = header.slice(0, firstColon).toLowerCase();\n const value = header.slice(firstColon + 1).trimStart();\n const current = headers[key];\n if (typeof current === 'string') {\n headers[key] = [current, value];\n }\n else if (Array.isArray(current)) {\n current.push(value);\n }\n else {\n headers[key] = value;\n }\n }\n debug('got proxy server response: %o %o', firstLine, headers);\n cleanup();\n resolve({\n connect: {\n statusCode,\n statusText,\n headers,\n },\n buffered,\n });\n }\n socket.on('error', onerror);\n socket.on('end', onend);\n read();\n });\n}\nexports.parseProxyResponse = parseProxyResponse;\n//# sourceMappingURL=parse-proxy-response.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.HttpsProxyAgent = void 0;\nconst net = __importStar(require(\"net\"));\nconst tls = __importStar(require(\"tls\"));\nconst assert_1 = __importDefault(require(\"assert\"));\nconst debug_1 = __importDefault(require(\"debug\"));\nconst agent_base_1 = require(\"agent-base\");\nconst url_1 = require(\"url\");\nconst parse_proxy_response_1 = require(\"./parse-proxy-response\");\nconst debug = (0, debug_1.default)('https-proxy-agent');\nconst setServernameFromNonIpHost = (options) => {\n if (options.servername === undefined &&\n options.host &&\n !net.isIP(options.host)) {\n return {\n ...options,\n servername: options.host,\n };\n }\n return options;\n};\n/**\n * The `HttpsProxyAgent` implements an HTTP Agent subclass that connects to\n * the specified \"HTTP(s) proxy server\" in order to proxy HTTPS requests.\n *\n * Outgoing HTTP requests are first tunneled through the proxy server using the\n * `CONNECT` HTTP request method to establish a connection to the proxy server,\n * and then the proxy server connects to the destination target and issues the\n * HTTP request from the proxy server.\n *\n * `https:` requests have their socket connection upgraded to TLS once\n * the connection to the proxy server has been established.\n */\nclass HttpsProxyAgent extends agent_base_1.Agent {\n constructor(proxy, opts) {\n super(opts);\n this.options = { path: undefined };\n this.proxy = typeof proxy === 'string' ? new url_1.URL(proxy) : proxy;\n this.proxyHeaders = opts?.headers ?? {};\n debug('Creating new HttpsProxyAgent instance: %o', this.proxy.href);\n // Trim off the brackets from IPv6 addresses\n const host = (this.proxy.hostname || this.proxy.host).replace(/^\\[|\\]$/g, '');\n const port = this.proxy.port\n ? parseInt(this.proxy.port, 10)\n : this.proxy.protocol === 'https:'\n ? 443\n : 80;\n this.connectOpts = {\n // Attempt to negotiate http/1.1 for proxy servers that support http/2\n ALPNProtocols: ['http/1.1'],\n ...(opts ? omit(opts, 'headers') : null),\n host,\n port,\n };\n }\n /**\n * Called when the node-core HTTP client library is creating a\n * new HTTP request.\n */\n async connect(req, opts) {\n const { proxy } = this;\n if (!opts.host) {\n throw new TypeError('No \"host\" provided');\n }\n // Create a socket connection to the proxy server.\n let socket;\n if (proxy.protocol === 'https:') {\n debug('Creating `tls.Socket`: %o', this.connectOpts);\n socket = tls.connect(setServernameFromNonIpHost(this.connectOpts));\n }\n else {\n debug('Creating `net.Socket`: %o', this.connectOpts);\n socket = net.connect(this.connectOpts);\n }\n const headers = typeof this.proxyHeaders === 'function'\n ? this.proxyHeaders()\n : { ...this.proxyHeaders };\n const host = net.isIPv6(opts.host) ? `[${opts.host}]` : opts.host;\n let payload = `CONNECT ${host}:${opts.port} HTTP/1.1\\r\\n`;\n // Inject the `Proxy-Authorization` header if necessary.\n if (proxy.username || proxy.password) {\n const auth = `${decodeURIComponent(proxy.username)}:${decodeURIComponent(proxy.password)}`;\n headers['Proxy-Authorization'] = `Basic ${Buffer.from(auth).toString('base64')}`;\n }\n headers.Host = `${host}:${opts.port}`;\n if (!headers['Proxy-Connection']) {\n headers['Proxy-Connection'] = this.keepAlive\n ? 'Keep-Alive'\n : 'close';\n }\n for (const name of Object.keys(headers)) {\n payload += `${name}: ${headers[name]}\\r\\n`;\n }\n const proxyResponsePromise = (0, parse_proxy_response_1.parseProxyResponse)(socket);\n socket.write(`${payload}\\r\\n`);\n const { connect, buffered } = await proxyResponsePromise;\n req.emit('proxyConnect', connect);\n this.emit('proxyConnect', connect, req);\n if (connect.statusCode === 200) {\n req.once('socket', resume);\n if (opts.secureEndpoint) {\n // The proxy is connecting to a TLS server, so upgrade\n // this socket connection to a TLS connection.\n debug('Upgrading socket connection to TLS');\n return tls.connect({\n ...omit(setServernameFromNonIpHost(opts), 'host', 'path', 'port'),\n socket,\n });\n }\n return socket;\n }\n // Some other status code that's not 200... need to re-play the HTTP\n // header \"data\" events onto the socket once the HTTP machinery is\n // attached so that the node core `http` can parse and handle the\n // error status code.\n // Close the original socket, and a new \"fake\" socket is returned\n // instead, so that the proxy doesn't get the HTTP request\n // written to it (which may contain `Authorization` headers or other\n // sensitive data).\n //\n // See: https://hackerone.com/reports/541502\n socket.destroy();\n const fakeSocket = new net.Socket({ writable: false });\n fakeSocket.readable = true;\n // Need to wait for the \"socket\" event to re-play the \"data\" events.\n req.once('socket', (s) => {\n debug('Replaying proxy buffer for failed request');\n (0, assert_1.default)(s.listenerCount('data') > 0);\n // Replay the \"buffered\" Buffer onto the fake `socket`, since at\n // this point the HTTP module machinery has been hooked up for\n // the user.\n s.push(buffered);\n s.push(null);\n });\n return fakeSocket;\n }\n}\nHttpsProxyAgent.protocols = ['http', 'https'];\nexports.HttpsProxyAgent = HttpsProxyAgent;\nfunction resume(socket) {\n socket.resume();\n}\nfunction omit(obj, ...keys) {\n const ret = {};\n let key;\n for (key in obj) {\n if (!keys.includes(key)) {\n ret[key] = obj[key];\n }\n }\n return ret;\n}\n//# sourceMappingURL=index.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.HttpProxyAgent = void 0;\nconst net = __importStar(require(\"net\"));\nconst tls = __importStar(require(\"tls\"));\nconst debug_1 = __importDefault(require(\"debug\"));\nconst events_1 = require(\"events\");\nconst agent_base_1 = require(\"agent-base\");\nconst url_1 = require(\"url\");\nconst debug = (0, debug_1.default)('http-proxy-agent');\n/**\n * The `HttpProxyAgent` implements an HTTP Agent subclass that connects\n * to the specified \"HTTP proxy server\" in order to proxy HTTP requests.\n */\nclass HttpProxyAgent extends agent_base_1.Agent {\n constructor(proxy, opts) {\n super(opts);\n this.proxy = typeof proxy === 'string' ? new url_1.URL(proxy) : proxy;\n this.proxyHeaders = opts?.headers ?? {};\n debug('Creating new HttpProxyAgent instance: %o', this.proxy.href);\n // Trim off the brackets from IPv6 addresses\n const host = (this.proxy.hostname || this.proxy.host).replace(/^\\[|\\]$/g, '');\n const port = this.proxy.port\n ? parseInt(this.proxy.port, 10)\n : this.proxy.protocol === 'https:'\n ? 443\n : 80;\n this.connectOpts = {\n ...(opts ? omit(opts, 'headers') : null),\n host,\n port,\n };\n }\n addRequest(req, opts) {\n req._header = null;\n this.setRequestProps(req, opts);\n // @ts-expect-error `addRequest()` isn't defined in `@types/node`\n super.addRequest(req, opts);\n }\n setRequestProps(req, opts) {\n const { proxy } = this;\n const protocol = opts.secureEndpoint ? 'https:' : 'http:';\n const hostname = req.getHeader('host') || 'localhost';\n const base = `${protocol}//${hostname}`;\n const url = new url_1.URL(req.path, base);\n if (opts.port !== 80) {\n url.port = String(opts.port);\n }\n // Change the `http.ClientRequest` instance's \"path\" field\n // to the absolute path of the URL that will be requested.\n req.path = String(url);\n // Inject the `Proxy-Authorization` header if necessary.\n const headers = typeof this.proxyHeaders === 'function'\n ? this.proxyHeaders()\n : { ...this.proxyHeaders };\n if (proxy.username || proxy.password) {\n const auth = `${decodeURIComponent(proxy.username)}:${decodeURIComponent(proxy.password)}`;\n headers['Proxy-Authorization'] = `Basic ${Buffer.from(auth).toString('base64')}`;\n }\n if (!headers['Proxy-Connection']) {\n headers['Proxy-Connection'] = this.keepAlive\n ? 'Keep-Alive'\n : 'close';\n }\n for (const name of Object.keys(headers)) {\n const value = headers[name];\n if (value) {\n req.setHeader(name, value);\n }\n }\n }\n async connect(req, opts) {\n req._header = null;\n if (!req.path.includes('://')) {\n this.setRequestProps(req, opts);\n }\n // At this point, the http ClientRequest's internal `_header` field\n // might have already been set. If this is the case then we'll need\n // to re-generate the string since we just changed the `req.path`.\n let first;\n let endOfHeaders;\n debug('Regenerating stored HTTP header string for request');\n req._implicitHeader();\n if (req.outputData && req.outputData.length > 0) {\n debug('Patching connection write() output buffer with updated header');\n first = req.outputData[0].data;\n endOfHeaders = first.indexOf('\\r\\n\\r\\n') + 4;\n req.outputData[0].data =\n req._header + first.substring(endOfHeaders);\n debug('Output buffer: %o', req.outputData[0].data);\n }\n // Create a socket connection to the proxy server.\n let socket;\n if (this.proxy.protocol === 'https:') {\n debug('Creating `tls.Socket`: %o', this.connectOpts);\n socket = tls.connect(this.connectOpts);\n }\n else {\n debug('Creating `net.Socket`: %o', this.connectOpts);\n socket = net.connect(this.connectOpts);\n }\n // Wait for the socket's `connect` event, so that this `callback()`\n // function throws instead of the `http` request machinery. This is\n // important for i.e. `PacProxyAgent` which determines a failed proxy\n // connection via the `callback()` function throwing.\n await (0, events_1.once)(socket, 'connect');\n return socket;\n }\n}\nHttpProxyAgent.protocols = ['http', 'https'];\nexports.HttpProxyAgent = HttpProxyAgent;\nfunction omit(obj, ...keys) {\n const ret = {};\n let key;\n for (key in obj) {\n if (!keys.includes(key)) {\n ret[key] = obj[key];\n }\n }\n return ret;\n}\n//# sourceMappingURL=index.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.globalNoProxyList = exports.proxyPolicyName = void 0;\nexports.loadNoProxy = loadNoProxy;\nexports.getDefaultProxySettings = getDefaultProxySettings;\nexports.proxyPolicy = proxyPolicy;\nconst https_proxy_agent_1 = require(\"https-proxy-agent\");\nconst http_proxy_agent_1 = require(\"http-proxy-agent\");\nconst log_js_1 = require(\"../log.js\");\nconst HTTPS_PROXY = \"HTTPS_PROXY\";\nconst HTTP_PROXY = \"HTTP_PROXY\";\nconst ALL_PROXY = \"ALL_PROXY\";\nconst NO_PROXY = \"NO_PROXY\";\n/**\n * The programmatic identifier of the proxyPolicy.\n */\nexports.proxyPolicyName = \"proxyPolicy\";\n/**\n * Stores the patterns specified in NO_PROXY environment variable.\n * @internal\n */\nexports.globalNoProxyList = [];\nlet noProxyListLoaded = false;\n/** A cache of whether a host should bypass the proxy. */\nconst globalBypassedMap = new Map();\nfunction getEnvironmentValue(name) {\n if (process.env[name]) {\n return process.env[name];\n }\n else if (process.env[name.toLowerCase()]) {\n return process.env[name.toLowerCase()];\n }\n return undefined;\n}\nfunction loadEnvironmentProxyValue() {\n if (!process) {\n return undefined;\n }\n const httpsProxy = getEnvironmentValue(HTTPS_PROXY);\n const allProxy = getEnvironmentValue(ALL_PROXY);\n const httpProxy = getEnvironmentValue(HTTP_PROXY);\n return httpsProxy || allProxy || httpProxy;\n}\n/**\n * Check whether the host of a given `uri` matches any pattern in the no proxy list.\n * If there's a match, any request sent to the same host shouldn't have the proxy settings set.\n * This implementation is a port of https://github.com/Azure/azure-sdk-for-net/blob/8cca811371159e527159c7eb65602477898683e2/sdk/core/Azure.Core/src/Pipeline/Internal/HttpEnvironmentProxy.cs#L210\n */\nfunction isBypassed(uri, noProxyList, bypassedMap) {\n if (noProxyList.length === 0) {\n return false;\n }\n const host = new URL(uri).hostname;\n if (bypassedMap?.has(host)) {\n return bypassedMap.get(host);\n }\n let isBypassedFlag = false;\n for (const pattern of noProxyList) {\n if (pattern[0] === \".\") {\n // This should match either domain it self or any subdomain or host\n // .foo.com will match foo.com it self or *.foo.com\n if (host.endsWith(pattern)) {\n isBypassedFlag = true;\n }\n else {\n if (host.length === pattern.length - 1 && host === pattern.slice(1)) {\n isBypassedFlag = true;\n }\n }\n }\n else {\n if (host === pattern) {\n isBypassedFlag = true;\n }\n }\n }\n bypassedMap?.set(host, isBypassedFlag);\n return isBypassedFlag;\n}\nfunction loadNoProxy() {\n const noProxy = getEnvironmentValue(NO_PROXY);\n noProxyListLoaded = true;\n if (noProxy) {\n return noProxy\n .split(\",\")\n .map((item) => item.trim())\n .filter((item) => item.length);\n }\n return [];\n}\n/**\n * This method converts a proxy url into `ProxySettings` for use with ProxyPolicy.\n * If no argument is given, it attempts to parse a proxy URL from the environment\n * variables `HTTPS_PROXY` or `HTTP_PROXY`.\n * @param proxyUrl - The url of the proxy to use. May contain authentication information.\n * @deprecated - Internally this method is no longer necessary when setting proxy information.\n */\nfunction getDefaultProxySettings(proxyUrl) {\n if (!proxyUrl) {\n proxyUrl = loadEnvironmentProxyValue();\n if (!proxyUrl) {\n return undefined;\n }\n }\n const parsedUrl = new URL(proxyUrl);\n const schema = parsedUrl.protocol ? parsedUrl.protocol + \"//\" : \"\";\n return {\n host: schema + parsedUrl.hostname,\n port: Number.parseInt(parsedUrl.port || \"80\"),\n username: parsedUrl.username,\n password: parsedUrl.password,\n };\n}\n/**\n * This method attempts to parse a proxy URL from the environment\n * variables `HTTPS_PROXY` or `HTTP_PROXY`.\n */\nfunction getDefaultProxySettingsInternal() {\n const envProxy = loadEnvironmentProxyValue();\n return envProxy ? new URL(envProxy) : undefined;\n}\nfunction getUrlFromProxySettings(settings) {\n let parsedProxyUrl;\n try {\n parsedProxyUrl = new URL(settings.host);\n }\n catch {\n throw new Error(`Expecting a valid host string in proxy settings, but found \"${settings.host}\".`);\n }\n parsedProxyUrl.port = String(settings.port);\n if (settings.username) {\n parsedProxyUrl.username = settings.username;\n }\n if (settings.password) {\n parsedProxyUrl.password = settings.password;\n }\n return parsedProxyUrl;\n}\nfunction setProxyAgentOnRequest(request, cachedAgents, proxyUrl) {\n // Custom Agent should take precedence so if one is present\n // we should skip to avoid overwriting it.\n if (request.agent) {\n return;\n }\n const url = new URL(request.url);\n const isInsecure = url.protocol !== \"https:\";\n if (request.tlsSettings) {\n log_js_1.logger.warning(\"TLS settings are not supported in combination with custom Proxy, certificates provided to the client will be ignored.\");\n }\n const headers = request.headers.toJSON();\n if (isInsecure) {\n if (!cachedAgents.httpProxyAgent) {\n cachedAgents.httpProxyAgent = new http_proxy_agent_1.HttpProxyAgent(proxyUrl, { headers });\n }\n request.agent = cachedAgents.httpProxyAgent;\n }\n else {\n if (!cachedAgents.httpsProxyAgent) {\n cachedAgents.httpsProxyAgent = new https_proxy_agent_1.HttpsProxyAgent(proxyUrl, { headers });\n }\n request.agent = cachedAgents.httpsProxyAgent;\n }\n}\n/**\n * A policy that allows one to apply proxy settings to all requests.\n * If not passed static settings, they will be retrieved from the HTTPS_PROXY\n * or HTTP_PROXY environment variables.\n * @param proxySettings - ProxySettings to use on each request.\n * @param options - additional settings, for example, custom NO_PROXY patterns\n */\nfunction proxyPolicy(proxySettings, options) {\n if (!noProxyListLoaded) {\n exports.globalNoProxyList.push(...loadNoProxy());\n }\n const defaultProxy = proxySettings\n ? getUrlFromProxySettings(proxySettings)\n : getDefaultProxySettingsInternal();\n const cachedAgents = {};\n return {\n name: exports.proxyPolicyName,\n async sendRequest(request, next) {\n if (!request.proxySettings &&\n defaultProxy &&\n !isBypassed(request.url, options?.customNoProxyList ?? exports.globalNoProxyList, options?.customNoProxyList ? undefined : globalBypassedMap)) {\n setProxyAgentOnRequest(request, cachedAgents, defaultProxy);\n }\n else if (request.proxySettings) {\n setProxyAgentOnRequest(request, cachedAgents, getUrlFromProxySettings(request.proxySettings));\n }\n return next(request);\n },\n };\n}\n//# sourceMappingURL=proxyPolicy.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.agentPolicyName = void 0;\nexports.agentPolicy = agentPolicy;\n/**\n * Name of the Agent Policy\n */\nexports.agentPolicyName = \"agentPolicy\";\n/**\n * Gets a pipeline policy that sets http.agent\n */\nfunction agentPolicy(agent) {\n return {\n name: exports.agentPolicyName,\n sendRequest: async (req, next) => {\n // Users may define an agent on the request, honor it over the client level one\n if (!req.agent) {\n req.agent = agent;\n }\n return next(req);\n },\n };\n}\n//# sourceMappingURL=agentPolicy.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.tlsPolicyName = void 0;\nexports.tlsPolicy = tlsPolicy;\n/**\n * Name of the TLS Policy\n */\nexports.tlsPolicyName = \"tlsPolicy\";\n/**\n * Gets a pipeline policy that adds the client certificate to the HttpClient agent for authentication.\n */\nfunction tlsPolicy(tlsSettings) {\n return {\n name: exports.tlsPolicyName,\n sendRequest: async (req, next) => {\n // Users may define a request tlsSettings, honor those over the client level one\n if (!req.tlsSettings) {\n req.tlsSettings = tlsSettings;\n }\n return next(req);\n },\n };\n}\n//# sourceMappingURL=tlsPolicy.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isNodeReadableStream = isNodeReadableStream;\nexports.isWebReadableStream = isWebReadableStream;\nexports.isBinaryBody = isBinaryBody;\nexports.isReadableStream = isReadableStream;\nexports.isBlob = isBlob;\nfunction isNodeReadableStream(x) {\n return Boolean(x && typeof x[\"pipe\"] === \"function\");\n}\nfunction isWebReadableStream(x) {\n return Boolean(x &&\n typeof x.getReader === \"function\" &&\n typeof x.tee === \"function\");\n}\nfunction isBinaryBody(body) {\n return (body !== undefined &&\n (body instanceof Uint8Array ||\n isReadableStream(body) ||\n typeof body === \"function\" ||\n body instanceof Blob));\n}\nfunction isReadableStream(x) {\n return isNodeReadableStream(x) || isWebReadableStream(x);\n}\nfunction isBlob(x) {\n return typeof x.stream === \"function\";\n}\n//# sourceMappingURL=typeGuards.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.concat = concat;\nconst stream_1 = require(\"stream\");\nconst typeGuards_js_1 = require(\"./typeGuards.js\");\nasync function* streamAsyncIterator() {\n const reader = this.getReader();\n try {\n while (true) {\n const { done, value } = await reader.read();\n if (done) {\n return;\n }\n yield value;\n }\n }\n finally {\n reader.releaseLock();\n }\n}\nfunction makeAsyncIterable(webStream) {\n if (!webStream[Symbol.asyncIterator]) {\n webStream[Symbol.asyncIterator] = streamAsyncIterator.bind(webStream);\n }\n if (!webStream.values) {\n webStream.values = streamAsyncIterator.bind(webStream);\n }\n}\nfunction ensureNodeStream(stream) {\n if (stream instanceof ReadableStream) {\n makeAsyncIterable(stream);\n return stream_1.Readable.fromWeb(stream);\n }\n else {\n return stream;\n }\n}\nfunction toStream(source) {\n if (source instanceof Uint8Array) {\n return stream_1.Readable.from(Buffer.from(source));\n }\n else if ((0, typeGuards_js_1.isBlob)(source)) {\n return ensureNodeStream(source.stream());\n }\n else {\n return ensureNodeStream(source);\n }\n}\n/**\n * Utility function that concatenates a set of binary inputs into one combined output.\n *\n * @param sources - array of sources for the concatenation\n * @returns - in Node, a (() =\\> NodeJS.ReadableStream) which, when read, produces a concatenation of all the inputs.\n * In browser, returns a `Blob` representing all the concatenated inputs.\n *\n * @internal\n */\nasync function concat(sources) {\n return function () {\n const streams = sources.map((x) => (typeof x === \"function\" ? x() : x)).map(toStream);\n return stream_1.Readable.from((async function* () {\n for (const stream of streams) {\n for await (const chunk of stream) {\n yield chunk;\n }\n }\n })());\n };\n}\n//# sourceMappingURL=concat.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.multipartPolicyName = void 0;\nexports.multipartPolicy = multipartPolicy;\nconst bytesEncoding_js_1 = require(\"../util/bytesEncoding.js\");\nconst typeGuards_js_1 = require(\"../util/typeGuards.js\");\nconst uuidUtils_js_1 = require(\"../util/uuidUtils.js\");\nconst concat_js_1 = require(\"../util/concat.js\");\nfunction generateBoundary() {\n return `----AzSDKFormBoundary${(0, uuidUtils_js_1.randomUUID)()}`;\n}\nfunction encodeHeaders(headers) {\n let result = \"\";\n for (const [key, value] of headers) {\n result += `${key}: ${value}\\r\\n`;\n }\n return result;\n}\nfunction getLength(source) {\n if (source instanceof Uint8Array) {\n return source.byteLength;\n }\n else if ((0, typeGuards_js_1.isBlob)(source)) {\n // if was created using createFile then -1 means we have an unknown size\n return source.size === -1 ? undefined : source.size;\n }\n else {\n return undefined;\n }\n}\nfunction getTotalLength(sources) {\n let total = 0;\n for (const source of sources) {\n const partLength = getLength(source);\n if (partLength === undefined) {\n return undefined;\n }\n else {\n total += partLength;\n }\n }\n return total;\n}\nasync function buildRequestBody(request, parts, boundary) {\n const sources = [\n (0, bytesEncoding_js_1.stringToUint8Array)(`--${boundary}`, \"utf-8\"),\n ...parts.flatMap((part) => [\n (0, bytesEncoding_js_1.stringToUint8Array)(\"\\r\\n\", \"utf-8\"),\n (0, bytesEncoding_js_1.stringToUint8Array)(encodeHeaders(part.headers), \"utf-8\"),\n (0, bytesEncoding_js_1.stringToUint8Array)(\"\\r\\n\", \"utf-8\"),\n part.body,\n (0, bytesEncoding_js_1.stringToUint8Array)(`\\r\\n--${boundary}`, \"utf-8\"),\n ]),\n (0, bytesEncoding_js_1.stringToUint8Array)(\"--\\r\\n\\r\\n\", \"utf-8\"),\n ];\n const contentLength = getTotalLength(sources);\n if (contentLength) {\n request.headers.set(\"Content-Length\", contentLength);\n }\n request.body = await (0, concat_js_1.concat)(sources);\n}\n/**\n * Name of multipart policy\n */\nexports.multipartPolicyName = \"multipartPolicy\";\nconst maxBoundaryLength = 70;\nconst validBoundaryCharacters = new Set(`abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789'()+,-./:=?`);\nfunction assertValidBoundary(boundary) {\n if (boundary.length > maxBoundaryLength) {\n throw new Error(`Multipart boundary \"${boundary}\" exceeds maximum length of 70 characters`);\n }\n if (Array.from(boundary).some((x) => !validBoundaryCharacters.has(x))) {\n throw new Error(`Multipart boundary \"${boundary}\" contains invalid characters`);\n }\n}\n/**\n * Pipeline policy for multipart requests\n */\nfunction multipartPolicy() {\n return {\n name: exports.multipartPolicyName,\n async sendRequest(request, next) {\n if (!request.multipartBody) {\n return next(request);\n }\n if (request.body) {\n throw new Error(\"multipartBody and regular body cannot be set at the same time\");\n }\n let boundary = request.multipartBody.boundary;\n const contentTypeHeader = request.headers.get(\"Content-Type\") ?? \"multipart/mixed\";\n const parsedHeader = contentTypeHeader.match(/^(multipart\\/[^ ;]+)(?:; *boundary=(.+))?$/);\n if (!parsedHeader) {\n throw new Error(`Got multipart request body, but content-type header was not multipart: ${contentTypeHeader}`);\n }\n const [, contentType, parsedBoundary] = parsedHeader;\n if (parsedBoundary && boundary && parsedBoundary !== boundary) {\n throw new Error(`Multipart boundary was specified as ${parsedBoundary} in the header, but got ${boundary} in the request body`);\n }\n boundary ??= parsedBoundary;\n if (boundary) {\n assertValidBoundary(boundary);\n }\n else {\n boundary = generateBoundary();\n }\n request.headers.set(\"Content-Type\", `${contentType}; boundary=${boundary}`);\n await buildRequestBody(request, request.multipartBody.parts, boundary);\n request.multipartBody = undefined;\n return next(request);\n },\n };\n}\n//# sourceMappingURL=multipartPolicy.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.createPipelineFromOptions = createPipelineFromOptions;\nconst logPolicy_js_1 = require(\"./policies/logPolicy.js\");\nconst pipeline_js_1 = require(\"./pipeline.js\");\nconst redirectPolicy_js_1 = require(\"./policies/redirectPolicy.js\");\nconst userAgentPolicy_js_1 = require(\"./policies/userAgentPolicy.js\");\nconst decompressResponsePolicy_js_1 = require(\"./policies/decompressResponsePolicy.js\");\nconst defaultRetryPolicy_js_1 = require(\"./policies/defaultRetryPolicy.js\");\nconst formDataPolicy_js_1 = require(\"./policies/formDataPolicy.js\");\nconst checkEnvironment_js_1 = require(\"./util/checkEnvironment.js\");\nconst proxyPolicy_js_1 = require(\"./policies/proxyPolicy.js\");\nconst agentPolicy_js_1 = require(\"./policies/agentPolicy.js\");\nconst tlsPolicy_js_1 = require(\"./policies/tlsPolicy.js\");\nconst multipartPolicy_js_1 = require(\"./policies/multipartPolicy.js\");\n/**\n * Create a new pipeline with a default set of customizable policies.\n * @param options - Options to configure a custom pipeline.\n */\nfunction createPipelineFromOptions(options) {\n const pipeline = (0, pipeline_js_1.createEmptyPipeline)();\n if (checkEnvironment_js_1.isNodeLike) {\n if (options.agent) {\n pipeline.addPolicy((0, agentPolicy_js_1.agentPolicy)(options.agent));\n }\n if (options.tlsOptions) {\n pipeline.addPolicy((0, tlsPolicy_js_1.tlsPolicy)(options.tlsOptions));\n }\n pipeline.addPolicy((0, proxyPolicy_js_1.proxyPolicy)(options.proxyOptions));\n pipeline.addPolicy((0, decompressResponsePolicy_js_1.decompressResponsePolicy)());\n }\n pipeline.addPolicy((0, formDataPolicy_js_1.formDataPolicy)(), { beforePolicies: [multipartPolicy_js_1.multipartPolicyName] });\n pipeline.addPolicy((0, userAgentPolicy_js_1.userAgentPolicy)(options.userAgentOptions));\n // The multipart policy is added after policies with no phase, so that\n // policies can be added between it and formDataPolicy to modify\n // properties (e.g., making the boundary constant in recorded tests).\n pipeline.addPolicy((0, multipartPolicy_js_1.multipartPolicy)(), { afterPhase: \"Deserialize\" });\n pipeline.addPolicy((0, defaultRetryPolicy_js_1.defaultRetryPolicy)(options.retryOptions), { phase: \"Retry\" });\n if (checkEnvironment_js_1.isNodeLike) {\n // Both XHR and Fetch expect to handle redirects automatically,\n // so only include this policy when we're in Node.\n pipeline.addPolicy((0, redirectPolicy_js_1.redirectPolicy)(options.redirectOptions), { afterPhase: \"Retry\" });\n }\n pipeline.addPolicy((0, logPolicy_js_1.logPolicy)(options.loggingOptions), { afterPhase: \"Sign\" });\n return pipeline;\n}\n//# sourceMappingURL=createPipelineFromOptions.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.apiVersionPolicyName = void 0;\nexports.apiVersionPolicy = apiVersionPolicy;\nexports.apiVersionPolicyName = \"ApiVersionPolicy\";\n/**\n * Creates a policy that sets the apiVersion as a query parameter on every request\n * @param options - Client options\n * @returns Pipeline policy that sets the apiVersion as a query parameter on every request\n */\nfunction apiVersionPolicy(options) {\n return {\n name: exports.apiVersionPolicyName,\n sendRequest: (req, next) => {\n // Use the apiVesion defined in request url directly\n // Append one if there is no apiVesion and we have one at client options\n const url = new URL(req.url);\n if (!url.searchParams.get(\"api-version\") && options.apiVersion) {\n req.url = `${req.url}${Array.from(url.searchParams.keys()).length > 0 ? \"&\" : \"?\"}api-version=${options.apiVersion}`;\n }\n return next(req);\n },\n };\n}\n//# sourceMappingURL=apiVersionPolicy.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isOAuth2TokenCredential = isOAuth2TokenCredential;\nexports.isBearerTokenCredential = isBearerTokenCredential;\nexports.isBasicCredential = isBasicCredential;\nexports.isApiKeyCredential = isApiKeyCredential;\n/**\n * Type guard to check if a credential is an OAuth2 token credential.\n */\nfunction isOAuth2TokenCredential(credential) {\n return \"getOAuth2Token\" in credential;\n}\n/**\n * Type guard to check if a credential is a Bearer token credential.\n */\nfunction isBearerTokenCredential(credential) {\n return \"getBearerToken\" in credential;\n}\n/**\n * Type guard to check if a credential is a Basic auth credential.\n */\nfunction isBasicCredential(credential) {\n return \"username\" in credential && \"password\" in credential;\n}\n/**\n * Type guard to check if a credential is an API key credential.\n */\nfunction isApiKeyCredential(credential) {\n return \"key\" in credential;\n}\n//# sourceMappingURL=credentials.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ensureSecureConnection = ensureSecureConnection;\nconst log_js_1 = require(\"../../log.js\");\n// Ensure the warining is only emitted once\nlet insecureConnectionWarningEmmitted = false;\n/**\n * Checks if the request is allowed to be sent over an insecure connection.\n *\n * A request is allowed to be sent over an insecure connection when:\n * - The `allowInsecureConnection` option is set to `true`.\n * - The request has the `allowInsecureConnection` property set to `true`.\n * - The request is being sent to `localhost` or `127.0.0.1`\n */\nfunction allowInsecureConnection(request, options) {\n if (options.allowInsecureConnection && request.allowInsecureConnection) {\n const url = new URL(request.url);\n if (url.hostname === \"localhost\" || url.hostname === \"127.0.0.1\") {\n return true;\n }\n }\n return false;\n}\n/**\n * Logs a warning about sending a token over an insecure connection.\n *\n * This function will emit a node warning once, but log the warning every time.\n */\nfunction emitInsecureConnectionWarning() {\n const warning = \"Sending token over insecure transport. Assume any token issued is compromised.\";\n log_js_1.logger.warning(warning);\n if (typeof process?.emitWarning === \"function\" && !insecureConnectionWarningEmmitted) {\n insecureConnectionWarningEmmitted = true;\n process.emitWarning(warning);\n }\n}\n/**\n * Ensures that authentication is only allowed over HTTPS unless explicitly allowed.\n * Throws an error if the connection is not secure and not explicitly allowed.\n */\nfunction ensureSecureConnection(request, options) {\n if (!request.url.toLowerCase().startsWith(\"https://\")) {\n if (allowInsecureConnection(request, options)) {\n emitInsecureConnectionWarning();\n }\n else {\n throw new Error(\"Authentication is not permitted for non-TLS protected (non-https) URLs when allowInsecureConnection is false.\");\n }\n }\n}\n//# sourceMappingURL=checkInsecureConnection.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.apiKeyAuthenticationPolicyName = void 0;\nexports.apiKeyAuthenticationPolicy = apiKeyAuthenticationPolicy;\nconst checkInsecureConnection_js_1 = require(\"./checkInsecureConnection.js\");\n/**\n * Name of the API Key Authentication Policy\n */\nexports.apiKeyAuthenticationPolicyName = \"apiKeyAuthenticationPolicy\";\n/**\n * Gets a pipeline policy that adds API key authentication to requests\n */\nfunction apiKeyAuthenticationPolicy(options) {\n return {\n name: exports.apiKeyAuthenticationPolicyName,\n async sendRequest(request, next) {\n // Ensure allowInsecureConnection is explicitly set when sending request to non-https URLs\n (0, checkInsecureConnection_js_1.ensureSecureConnection)(request, options);\n const scheme = (request.authSchemes ?? options.authSchemes)?.find((x) => x.kind === \"apiKey\");\n // Skip adding authentication header if no API key authentication scheme is found\n if (!scheme) {\n return next(request);\n }\n if (scheme.apiKeyLocation !== \"header\") {\n throw new Error(`Unsupported API key location: ${scheme.apiKeyLocation}`);\n }\n request.headers.set(scheme.name, options.credential.key);\n return next(request);\n },\n };\n}\n//# sourceMappingURL=apiKeyAuthenticationPolicy.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.basicAuthenticationPolicyName = void 0;\nexports.basicAuthenticationPolicy = basicAuthenticationPolicy;\nconst bytesEncoding_js_1 = require(\"../../util/bytesEncoding.js\");\nconst checkInsecureConnection_js_1 = require(\"./checkInsecureConnection.js\");\n/**\n * Name of the Basic Authentication Policy\n */\nexports.basicAuthenticationPolicyName = \"bearerAuthenticationPolicy\";\n/**\n * Gets a pipeline policy that adds basic authentication to requests\n */\nfunction basicAuthenticationPolicy(options) {\n return {\n name: exports.basicAuthenticationPolicyName,\n async sendRequest(request, next) {\n // Ensure allowInsecureConnection is explicitly set when sending request to non-https URLs\n (0, checkInsecureConnection_js_1.ensureSecureConnection)(request, options);\n const scheme = (request.authSchemes ?? options.authSchemes)?.find((x) => x.kind === \"http\" && x.scheme === \"basic\");\n // Skip adding authentication header if no basic authentication scheme is found\n if (!scheme) {\n return next(request);\n }\n const { username, password } = options.credential;\n const headerValue = (0, bytesEncoding_js_1.uint8ArrayToString)((0, bytesEncoding_js_1.stringToUint8Array)(`${username}:${password}`, \"utf-8\"), \"base64\");\n request.headers.set(\"Authorization\", `Basic ${headerValue}`);\n return next(request);\n },\n };\n}\n//# sourceMappingURL=basicAuthenticationPolicy.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.bearerAuthenticationPolicyName = void 0;\nexports.bearerAuthenticationPolicy = bearerAuthenticationPolicy;\nconst checkInsecureConnection_js_1 = require(\"./checkInsecureConnection.js\");\n/**\n * Name of the Bearer Authentication Policy\n */\nexports.bearerAuthenticationPolicyName = \"bearerAuthenticationPolicy\";\n/**\n * Gets a pipeline policy that adds bearer token authentication to requests\n */\nfunction bearerAuthenticationPolicy(options) {\n return {\n name: exports.bearerAuthenticationPolicyName,\n async sendRequest(request, next) {\n // Ensure allowInsecureConnection is explicitly set when sending request to non-https URLs\n (0, checkInsecureConnection_js_1.ensureSecureConnection)(request, options);\n const scheme = (request.authSchemes ?? options.authSchemes)?.find((x) => x.kind === \"http\" && x.scheme === \"bearer\");\n // Skip adding authentication header if no bearer authentication scheme is found\n if (!scheme) {\n return next(request);\n }\n const token = await options.credential.getBearerToken({\n abortSignal: request.abortSignal,\n });\n request.headers.set(\"Authorization\", `Bearer ${token}`);\n return next(request);\n },\n };\n}\n//# sourceMappingURL=bearerAuthenticationPolicy.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.oauth2AuthenticationPolicyName = void 0;\nexports.oauth2AuthenticationPolicy = oauth2AuthenticationPolicy;\nconst checkInsecureConnection_js_1 = require(\"./checkInsecureConnection.js\");\n/**\n * Name of the OAuth2 Authentication Policy\n */\nexports.oauth2AuthenticationPolicyName = \"oauth2AuthenticationPolicy\";\n/**\n * Gets a pipeline policy that adds authorization header from OAuth2 schemes\n */\nfunction oauth2AuthenticationPolicy(options) {\n return {\n name: exports.oauth2AuthenticationPolicyName,\n async sendRequest(request, next) {\n // Ensure allowInsecureConnection is explicitly set when sending request to non-https URLs\n (0, checkInsecureConnection_js_1.ensureSecureConnection)(request, options);\n const scheme = (request.authSchemes ?? options.authSchemes)?.find((x) => x.kind === \"oauth2\");\n // Skip adding authentication header if no OAuth2 authentication scheme is found\n if (!scheme) {\n return next(request);\n }\n const token = await options.credential.getOAuth2Token(scheme.flows, {\n abortSignal: request.abortSignal,\n });\n request.headers.set(\"Authorization\", `Bearer ${token}`);\n return next(request);\n },\n };\n}\n//# sourceMappingURL=oauth2AuthenticationPolicy.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.createDefaultPipeline = createDefaultPipeline;\nexports.getCachedDefaultHttpsClient = getCachedDefaultHttpsClient;\nconst defaultHttpClient_js_1 = require(\"../defaultHttpClient.js\");\nconst createPipelineFromOptions_js_1 = require(\"../createPipelineFromOptions.js\");\nconst apiVersionPolicy_js_1 = require(\"./apiVersionPolicy.js\");\nconst credentials_js_1 = require(\"../auth/credentials.js\");\nconst apiKeyAuthenticationPolicy_js_1 = require(\"../policies/auth/apiKeyAuthenticationPolicy.js\");\nconst basicAuthenticationPolicy_js_1 = require(\"../policies/auth/basicAuthenticationPolicy.js\");\nconst bearerAuthenticationPolicy_js_1 = require(\"../policies/auth/bearerAuthenticationPolicy.js\");\nconst oauth2AuthenticationPolicy_js_1 = require(\"../policies/auth/oauth2AuthenticationPolicy.js\");\nlet cachedHttpClient;\n/**\n * Creates a default rest pipeline to re-use accross Rest Level Clients\n */\nfunction createDefaultPipeline(options = {}) {\n const pipeline = (0, createPipelineFromOptions_js_1.createPipelineFromOptions)(options);\n pipeline.addPolicy((0, apiVersionPolicy_js_1.apiVersionPolicy)(options));\n const { credential, authSchemes, allowInsecureConnection } = options;\n if (credential) {\n if ((0, credentials_js_1.isApiKeyCredential)(credential)) {\n pipeline.addPolicy((0, apiKeyAuthenticationPolicy_js_1.apiKeyAuthenticationPolicy)({ authSchemes, credential, allowInsecureConnection }));\n }\n else if ((0, credentials_js_1.isBasicCredential)(credential)) {\n pipeline.addPolicy((0, basicAuthenticationPolicy_js_1.basicAuthenticationPolicy)({ authSchemes, credential, allowInsecureConnection }));\n }\n else if ((0, credentials_js_1.isBearerTokenCredential)(credential)) {\n pipeline.addPolicy((0, bearerAuthenticationPolicy_js_1.bearerAuthenticationPolicy)({ authSchemes, credential, allowInsecureConnection }));\n }\n else if ((0, credentials_js_1.isOAuth2TokenCredential)(credential)) {\n pipeline.addPolicy((0, oauth2AuthenticationPolicy_js_1.oauth2AuthenticationPolicy)({ authSchemes, credential, allowInsecureConnection }));\n }\n }\n return pipeline;\n}\nfunction getCachedDefaultHttpsClient() {\n if (!cachedHttpClient) {\n cachedHttpClient = (0, defaultHttpClient_js_1.createDefaultHttpClient)();\n }\n return cachedHttpClient;\n}\n//# sourceMappingURL=clientHelpers.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.buildBodyPart = buildBodyPart;\nexports.buildMultipartBody = buildMultipartBody;\nconst restError_js_1 = require(\"../restError.js\");\nconst httpHeaders_js_1 = require(\"../httpHeaders.js\");\nconst bytesEncoding_js_1 = require(\"../util/bytesEncoding.js\");\nconst typeGuards_js_1 = require(\"../util/typeGuards.js\");\n/**\n * Get value of a header in the part descriptor ignoring case\n */\nfunction getHeaderValue(descriptor, headerName) {\n if (descriptor.headers) {\n const actualHeaderName = Object.keys(descriptor.headers).find((x) => x.toLowerCase() === headerName.toLowerCase());\n if (actualHeaderName) {\n return descriptor.headers[actualHeaderName];\n }\n }\n return undefined;\n}\nfunction getPartContentType(descriptor) {\n const contentTypeHeader = getHeaderValue(descriptor, \"content-type\");\n if (contentTypeHeader) {\n return contentTypeHeader;\n }\n // Special value of null means content type is to be omitted\n if (descriptor.contentType === null) {\n return undefined;\n }\n if (descriptor.contentType) {\n return descriptor.contentType;\n }\n const { body } = descriptor;\n if (body === null || body === undefined) {\n return undefined;\n }\n if (typeof body === \"string\" || typeof body === \"number\" || typeof body === \"boolean\") {\n return \"text/plain; charset=UTF-8\";\n }\n if (body instanceof Blob) {\n return body.type || \"application/octet-stream\";\n }\n if ((0, typeGuards_js_1.isBinaryBody)(body)) {\n return \"application/octet-stream\";\n }\n // arbitrary non-text object -> generic JSON content type by default. We will try to JSON.stringify the body.\n return \"application/json\";\n}\n/**\n * Enclose value in quotes and escape special characters, for use in the Content-Disposition header\n */\nfunction escapeDispositionField(value) {\n return JSON.stringify(value);\n}\nfunction getContentDisposition(descriptor) {\n const contentDispositionHeader = getHeaderValue(descriptor, \"content-disposition\");\n if (contentDispositionHeader) {\n return contentDispositionHeader;\n }\n if (descriptor.dispositionType === undefined &&\n descriptor.name === undefined &&\n descriptor.filename === undefined) {\n return undefined;\n }\n const dispositionType = descriptor.dispositionType ?? \"form-data\";\n let disposition = dispositionType;\n if (descriptor.name) {\n disposition += `; name=${escapeDispositionField(descriptor.name)}`;\n }\n let filename = undefined;\n if (descriptor.filename) {\n filename = descriptor.filename;\n }\n else if (typeof File !== \"undefined\" && descriptor.body instanceof File) {\n const filenameFromFile = descriptor.body.name;\n if (filenameFromFile !== \"\") {\n filename = filenameFromFile;\n }\n }\n if (filename) {\n disposition += `; filename=${escapeDispositionField(filename)}`;\n }\n return disposition;\n}\nfunction normalizeBody(body, contentType) {\n if (body === undefined) {\n // zero-length body\n return new Uint8Array([]);\n }\n // binary and primitives should go straight on the wire regardless of content type\n if ((0, typeGuards_js_1.isBinaryBody)(body)) {\n return body;\n }\n if (typeof body === \"string\" || typeof body === \"number\" || typeof body === \"boolean\") {\n return (0, bytesEncoding_js_1.stringToUint8Array)(String(body), \"utf-8\");\n }\n // stringify objects for JSON-ish content types e.g. application/json, application/merge-patch+json, application/vnd.oci.manifest.v1+json, application.json; charset=UTF-8\n if (contentType && /application\\/(.+\\+)?json(;.+)?/i.test(String(contentType))) {\n return (0, bytesEncoding_js_1.stringToUint8Array)(JSON.stringify(body), \"utf-8\");\n }\n throw new restError_js_1.RestError(`Unsupported body/content-type combination: ${body}, ${contentType}`);\n}\nfunction buildBodyPart(descriptor) {\n const contentType = getPartContentType(descriptor);\n const contentDisposition = getContentDisposition(descriptor);\n const headers = (0, httpHeaders_js_1.createHttpHeaders)(descriptor.headers ?? {});\n if (contentType) {\n headers.set(\"content-type\", contentType);\n }\n if (contentDisposition) {\n headers.set(\"content-disposition\", contentDisposition);\n }\n const body = normalizeBody(descriptor.body, contentType);\n return {\n headers,\n body,\n };\n}\nfunction buildMultipartBody(parts) {\n return { parts: parts.map(buildBodyPart) };\n}\n//# sourceMappingURL=multipart.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.sendRequest = sendRequest;\nconst restError_js_1 = require(\"../restError.js\");\nconst httpHeaders_js_1 = require(\"../httpHeaders.js\");\nconst pipelineRequest_js_1 = require(\"../pipelineRequest.js\");\nconst clientHelpers_js_1 = require(\"./clientHelpers.js\");\nconst typeGuards_js_1 = require(\"../util/typeGuards.js\");\nconst multipart_js_1 = require(\"./multipart.js\");\n/**\n * Helper function to send request used by the client\n * @param method - method to use to send the request\n * @param url - url to send the request to\n * @param pipeline - pipeline with the policies to run when sending the request\n * @param options - request options\n * @param customHttpClient - a custom HttpClient to use when making the request\n * @returns returns and HttpResponse\n */\nasync function sendRequest(method, url, pipeline, options = {}, customHttpClient) {\n const httpClient = customHttpClient ?? (0, clientHelpers_js_1.getCachedDefaultHttpsClient)();\n const request = buildPipelineRequest(method, url, options);\n try {\n const response = await pipeline.sendRequest(httpClient, request);\n const headers = response.headers.toJSON();\n const stream = response.readableStreamBody ?? response.browserStreamBody;\n const parsedBody = options.responseAsStream || stream !== undefined ? undefined : getResponseBody(response);\n const body = stream ?? parsedBody;\n if (options?.onResponse) {\n options.onResponse({ ...response, request, rawHeaders: headers, parsedBody });\n }\n return {\n request,\n headers,\n status: `${response.status}`,\n body,\n };\n }\n catch (e) {\n if ((0, restError_js_1.isRestError)(e) && e.response && options.onResponse) {\n const { response } = e;\n const rawHeaders = response.headers.toJSON();\n // UNBRANDED DIFFERENCE: onResponse callback does not have a second __legacyError property\n options?.onResponse({ ...response, request, rawHeaders }, e);\n }\n throw e;\n }\n}\n/**\n * Function to determine the request content type\n * @param options - request options InternalRequestParameters\n * @returns returns the content-type\n */\nfunction getRequestContentType(options = {}) {\n return (options.contentType ??\n options.headers?.[\"content-type\"] ??\n getContentType(options.body));\n}\n/**\n * Function to determine the content-type of a body\n * this is used if an explicit content-type is not provided\n * @param body - body in the request\n * @returns returns the content-type\n */\nfunction getContentType(body) {\n if (ArrayBuffer.isView(body)) {\n return \"application/octet-stream\";\n }\n if (typeof body === \"string\") {\n try {\n JSON.parse(body);\n return \"application/json\";\n }\n catch (error) {\n // If we fail to parse the body, it is not json\n return undefined;\n }\n }\n // By default return json\n return \"application/json\";\n}\nfunction buildPipelineRequest(method, url, options = {}) {\n const requestContentType = getRequestContentType(options);\n const { body, multipartBody } = getRequestBody(options.body, requestContentType);\n const hasContent = body !== undefined || multipartBody !== undefined;\n const headers = (0, httpHeaders_js_1.createHttpHeaders)({\n ...(options.headers ? options.headers : {}),\n accept: options.accept ?? options.headers?.accept ?? \"application/json\",\n ...(hasContent &&\n requestContentType && {\n \"content-type\": requestContentType,\n }),\n });\n return (0, pipelineRequest_js_1.createPipelineRequest)({\n url,\n method,\n body,\n multipartBody,\n headers,\n allowInsecureConnection: options.allowInsecureConnection,\n abortSignal: options.abortSignal,\n onUploadProgress: options.onUploadProgress,\n onDownloadProgress: options.onDownloadProgress,\n timeout: options.timeout,\n enableBrowserStreams: true,\n streamResponseStatusCodes: options.responseAsStream\n ? new Set([Number.POSITIVE_INFINITY])\n : undefined,\n });\n}\n/**\n * Prepares the body before sending the request\n */\nfunction getRequestBody(body, contentType = \"\") {\n if (body === undefined) {\n return { body: undefined };\n }\n if (typeof FormData !== \"undefined\" && body instanceof FormData) {\n return { body };\n }\n if ((0, typeGuards_js_1.isReadableStream)(body)) {\n return { body };\n }\n if (ArrayBuffer.isView(body)) {\n return { body: body instanceof Uint8Array ? body : JSON.stringify(body) };\n }\n const firstType = contentType.split(\";\")[0];\n switch (firstType) {\n case \"application/json\":\n return { body: JSON.stringify(body) };\n case \"multipart/form-data\":\n if (Array.isArray(body)) {\n return { multipartBody: (0, multipart_js_1.buildMultipartBody)(body) };\n }\n return { body: JSON.stringify(body) };\n case \"text/plain\":\n return { body: String(body) };\n default:\n if (typeof body === \"string\") {\n return { body };\n }\n return { body: JSON.stringify(body) };\n }\n}\n/**\n * Prepares the response body\n */\nfunction getResponseBody(response) {\n // Set the default response type\n const contentType = response.headers.get(\"content-type\") ?? \"\";\n const firstType = contentType.split(\";\")[0];\n const bodyToParse = response.bodyAsText ?? \"\";\n if (firstType === \"text/plain\") {\n return String(bodyToParse);\n }\n // Default to \"application/json\" and fallback to string;\n try {\n return bodyToParse ? JSON.parse(bodyToParse) : undefined;\n }\n catch (error) {\n // If we were supposed to get a JSON object and failed to\n // parse, throw a parse error\n if (firstType === \"application/json\") {\n throw createParseError(response, error);\n }\n // We are not sure how to handle the response so we return it as\n // plain text.\n return String(bodyToParse);\n }\n}\nfunction createParseError(response, err) {\n const msg = `Error \"${err}\" occurred while parsing the response body - ${response.bodyAsText}.`;\n const errCode = err.code ?? restError_js_1.RestError.PARSE_ERROR;\n return new restError_js_1.RestError(msg, {\n code: errCode,\n statusCode: response.status,\n request: response.request,\n response: response,\n });\n}\n//# sourceMappingURL=sendRequest.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.buildRequestUrl = buildRequestUrl;\nexports.buildBaseUrl = buildBaseUrl;\nexports.replaceAll = replaceAll;\nfunction isQueryParameterWithOptions(x) {\n const value = x.value;\n return (value !== undefined && value.toString !== undefined && typeof value.toString === \"function\");\n}\n/**\n * Builds the request url, filling in query and path parameters\n * @param endpoint - base url which can be a template url\n * @param routePath - path to append to the endpoint\n * @param pathParameters - values of the path parameters\n * @param options - request parameters including query parameters\n * @returns a full url with path and query parameters\n */\nfunction buildRequestUrl(endpoint, routePath, pathParameters, options = {}) {\n if (routePath.startsWith(\"https://\") || routePath.startsWith(\"http://\")) {\n return routePath;\n }\n endpoint = buildBaseUrl(endpoint, options);\n routePath = buildRoutePath(routePath, pathParameters, options);\n const requestUrl = appendQueryParams(`${endpoint}/${routePath}`, options);\n const url = new URL(requestUrl);\n return (url\n .toString()\n // Remove double forward slashes\n .replace(/([^:]\\/)\\/+/g, \"$1\"));\n}\nfunction getQueryParamValue(key, allowReserved, style, param) {\n let separator;\n if (style === \"pipeDelimited\") {\n separator = \"|\";\n }\n else if (style === \"spaceDelimited\") {\n separator = \"%20\";\n }\n else {\n separator = \",\";\n }\n let paramValues;\n if (Array.isArray(param)) {\n paramValues = param;\n }\n else if (typeof param === \"object\" && param.toString === Object.prototype.toString) {\n // If the parameter is an object without a custom toString implementation (e.g. a Date),\n // then we should deconstruct the object into an array [key1, value1, key2, value2, ...].\n paramValues = Object.entries(param).flat();\n }\n else {\n paramValues = [param];\n }\n const value = paramValues\n .map((p) => {\n if (p === null || p === undefined) {\n return \"\";\n }\n if (!p.toString || typeof p.toString !== \"function\") {\n throw new Error(`Query parameters must be able to be represented as string, ${key} can't`);\n }\n const rawValue = p.toISOString !== undefined ? p.toISOString() : p.toString();\n return allowReserved ? rawValue : encodeURIComponent(rawValue);\n })\n .join(separator);\n return `${allowReserved ? key : encodeURIComponent(key)}=${value}`;\n}\nfunction appendQueryParams(url, options = {}) {\n if (!options.queryParameters) {\n return url;\n }\n const parsedUrl = new URL(url);\n const queryParams = options.queryParameters;\n const paramStrings = [];\n for (const key of Object.keys(queryParams)) {\n const param = queryParams[key];\n if (param === undefined || param === null) {\n continue;\n }\n const hasMetadata = isQueryParameterWithOptions(param);\n const rawValue = hasMetadata ? param.value : param;\n const explode = hasMetadata ? (param.explode ?? false) : false;\n const style = hasMetadata && param.style ? param.style : \"form\";\n if (explode) {\n if (Array.isArray(rawValue)) {\n for (const item of rawValue) {\n paramStrings.push(getQueryParamValue(key, options.skipUrlEncoding ?? false, style, item));\n }\n }\n else if (typeof rawValue === \"object\") {\n // For object explode, the name of the query parameter is ignored and we use the object key instead\n for (const [actualKey, value] of Object.entries(rawValue)) {\n paramStrings.push(getQueryParamValue(actualKey, options.skipUrlEncoding ?? false, style, value));\n }\n }\n else {\n // Explode doesn't really make sense for primitives\n throw new Error(\"explode can only be set to true for objects and arrays\");\n }\n }\n else {\n paramStrings.push(getQueryParamValue(key, options.skipUrlEncoding ?? false, style, rawValue));\n }\n }\n if (parsedUrl.search !== \"\") {\n parsedUrl.search += \"&\";\n }\n parsedUrl.search += paramStrings.join(\"&\");\n return parsedUrl.toString();\n}\nfunction buildBaseUrl(endpoint, options) {\n if (!options.pathParameters) {\n return endpoint;\n }\n const pathParams = options.pathParameters;\n for (const [key, param] of Object.entries(pathParams)) {\n if (param === undefined || param === null) {\n throw new Error(`Path parameters ${key} must not be undefined or null`);\n }\n if (!param.toString || typeof param.toString !== \"function\") {\n throw new Error(`Path parameters must be able to be represented as string, ${key} can't`);\n }\n let value = param.toISOString !== undefined ? param.toISOString() : String(param);\n if (!options.skipUrlEncoding) {\n value = encodeURIComponent(param);\n }\n endpoint = replaceAll(endpoint, `{${key}}`, value) ?? \"\";\n }\n return endpoint;\n}\nfunction buildRoutePath(routePath, pathParameters, options = {}) {\n for (const pathParam of pathParameters) {\n const allowReserved = typeof pathParam === \"object\" && (pathParam.allowReserved ?? false);\n let value = typeof pathParam === \"object\" ? pathParam.value : pathParam;\n if (!options.skipUrlEncoding && !allowReserved) {\n value = encodeURIComponent(value);\n }\n routePath = routePath.replace(/\\{[\\w-]+\\}/, String(value));\n }\n return routePath;\n}\n/**\n * Replace all of the instances of searchValue in value with the provided replaceValue.\n * @param value - The value to search and replace in.\n * @param searchValue - The value to search for in the value argument.\n * @param replaceValue - The value to replace searchValue with in the value argument.\n * @returns The value where each instance of searchValue was replaced with replacedValue.\n */\nfunction replaceAll(value, searchValue, replaceValue) {\n return !value || !searchValue ? value : value.split(searchValue).join(replaceValue || \"\");\n}\n//# sourceMappingURL=urlHelpers.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getClient = getClient;\nconst clientHelpers_js_1 = require(\"./clientHelpers.js\");\nconst sendRequest_js_1 = require(\"./sendRequest.js\");\nconst urlHelpers_js_1 = require(\"./urlHelpers.js\");\nconst checkEnvironment_js_1 = require(\"../util/checkEnvironment.js\");\n/**\n * Creates a client with a default pipeline\n * @param endpoint - Base endpoint for the client\n * @param credentials - Credentials to authenticate the requests\n * @param options - Client options\n */\nfunction getClient(endpoint, clientOptions = {}) {\n const pipeline = clientOptions.pipeline ?? (0, clientHelpers_js_1.createDefaultPipeline)(clientOptions);\n if (clientOptions.additionalPolicies?.length) {\n for (const { policy, position } of clientOptions.additionalPolicies) {\n // Sign happens after Retry and is commonly needed to occur\n // before policies that intercept post-retry.\n const afterPhase = position === \"perRetry\" ? \"Sign\" : undefined;\n pipeline.addPolicy(policy, {\n afterPhase,\n });\n }\n }\n const { allowInsecureConnection, httpClient } = clientOptions;\n const endpointUrl = clientOptions.endpoint ?? endpoint;\n const client = (path, ...args) => {\n const getUrl = (requestOptions) => (0, urlHelpers_js_1.buildRequestUrl)(endpointUrl, path, args, { allowInsecureConnection, ...requestOptions });\n return {\n get: (requestOptions = {}) => {\n return buildOperation(\"GET\", getUrl(requestOptions), pipeline, requestOptions, allowInsecureConnection, httpClient);\n },\n post: (requestOptions = {}) => {\n return buildOperation(\"POST\", getUrl(requestOptions), pipeline, requestOptions, allowInsecureConnection, httpClient);\n },\n put: (requestOptions = {}) => {\n return buildOperation(\"PUT\", getUrl(requestOptions), pipeline, requestOptions, allowInsecureConnection, httpClient);\n },\n patch: (requestOptions = {}) => {\n return buildOperation(\"PATCH\", getUrl(requestOptions), pipeline, requestOptions, allowInsecureConnection, httpClient);\n },\n delete: (requestOptions = {}) => {\n return buildOperation(\"DELETE\", getUrl(requestOptions), pipeline, requestOptions, allowInsecureConnection, httpClient);\n },\n head: (requestOptions = {}) => {\n return buildOperation(\"HEAD\", getUrl(requestOptions), pipeline, requestOptions, allowInsecureConnection, httpClient);\n },\n options: (requestOptions = {}) => {\n return buildOperation(\"OPTIONS\", getUrl(requestOptions), pipeline, requestOptions, allowInsecureConnection, httpClient);\n },\n trace: (requestOptions = {}) => {\n return buildOperation(\"TRACE\", getUrl(requestOptions), pipeline, requestOptions, allowInsecureConnection, httpClient);\n },\n };\n };\n return {\n path: client,\n pathUnchecked: client,\n pipeline,\n };\n}\nfunction buildOperation(method, url, pipeline, options, allowInsecureConnection, httpClient) {\n allowInsecureConnection = options.allowInsecureConnection ?? allowInsecureConnection;\n return {\n then: function (onFulfilled, onrejected) {\n return (0, sendRequest_js_1.sendRequest)(method, url, pipeline, { ...options, allowInsecureConnection }, httpClient).then(onFulfilled, onrejected);\n },\n async asBrowserStream() {\n if (checkEnvironment_js_1.isNodeLike) {\n throw new Error(\"`asBrowserStream` is supported only in the browser environment. Use `asNodeStream` instead to obtain the response body stream. If you require a Web stream of the response in Node, consider using `Readable.toWeb` on the result of `asNodeStream`.\");\n }\n else {\n return (0, sendRequest_js_1.sendRequest)(method, url, pipeline, { ...options, allowInsecureConnection, responseAsStream: true }, httpClient);\n }\n },\n async asNodeStream() {\n if (checkEnvironment_js_1.isNodeLike) {\n return (0, sendRequest_js_1.sendRequest)(method, url, pipeline, { ...options, allowInsecureConnection, responseAsStream: true }, httpClient);\n }\n else {\n throw new Error(\"`isNodeStream` is not supported in the browser environment. Use `asBrowserStream` to obtain the response body stream.\");\n }\n },\n };\n}\n//# sourceMappingURL=getClient.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.operationOptionsToRequestParameters = operationOptionsToRequestParameters;\n/**\n * Helper function to convert OperationOptions to RequestParameters\n * @param options - the options that are used by Modular layer to send the request\n * @returns the result of the conversion in RequestParameters of RLC layer\n */\nfunction operationOptionsToRequestParameters(options) {\n return {\n allowInsecureConnection: options.requestOptions?.allowInsecureConnection,\n timeout: options.requestOptions?.timeout,\n skipUrlEncoding: options.requestOptions?.skipUrlEncoding,\n abortSignal: options.abortSignal,\n onUploadProgress: options.requestOptions?.onUploadProgress,\n onDownloadProgress: options.requestOptions?.onDownloadProgress,\n headers: { ...options.requestOptions?.headers },\n onResponse: options.onResponse,\n };\n}\n//# sourceMappingURL=operationOptionHelpers.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.createRestError = createRestError;\nconst restError_js_1 = require(\"../restError.js\");\nconst httpHeaders_js_1 = require(\"../httpHeaders.js\");\nfunction createRestError(messageOrResponse, response) {\n const resp = typeof messageOrResponse === \"string\" ? response : messageOrResponse;\n const internalError = resp.body?.error ?? resp.body;\n const message = typeof messageOrResponse === \"string\"\n ? messageOrResponse\n : (internalError?.message ?? `Unexpected status code: ${resp.status}`);\n return new restError_js_1.RestError(message, {\n statusCode: statusCodeToNumber(resp.status),\n code: internalError?.code,\n request: resp.request,\n response: toPipelineResponse(resp),\n });\n}\nfunction toPipelineResponse(response) {\n return {\n headers: (0, httpHeaders_js_1.createHttpHeaders)(response.headers),\n request: response.request,\n status: statusCodeToNumber(response.status) ?? -1,\n };\n}\nfunction statusCodeToNumber(statusCode) {\n const status = Number.parseInt(statusCode);\n return Number.isNaN(status) ? undefined : status;\n}\n//# sourceMappingURL=restError.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.createRestError = exports.operationOptionsToRequestParameters = exports.getClient = exports.createDefaultHttpClient = exports.uint8ArrayToString = exports.stringToUint8Array = exports.isRestError = exports.RestError = exports.createEmptyPipeline = exports.createPipelineRequest = exports.createHttpHeaders = exports.TypeSpecRuntimeLogger = exports.setLogLevel = exports.getLogLevel = exports.createClientLogger = exports.AbortError = void 0;\nconst tslib_1 = require(\"tslib\");\nvar AbortError_js_1 = require(\"./abort-controller/AbortError.js\");\nObject.defineProperty(exports, \"AbortError\", { enumerable: true, get: function () { return AbortError_js_1.AbortError; } });\nvar logger_js_1 = require(\"./logger/logger.js\");\nObject.defineProperty(exports, \"createClientLogger\", { enumerable: true, get: function () { return logger_js_1.createClientLogger; } });\nObject.defineProperty(exports, \"getLogLevel\", { enumerable: true, get: function () { return logger_js_1.getLogLevel; } });\nObject.defineProperty(exports, \"setLogLevel\", { enumerable: true, get: function () { return logger_js_1.setLogLevel; } });\nObject.defineProperty(exports, \"TypeSpecRuntimeLogger\", { enumerable: true, get: function () { return logger_js_1.TypeSpecRuntimeLogger; } });\nvar httpHeaders_js_1 = require(\"./httpHeaders.js\");\nObject.defineProperty(exports, \"createHttpHeaders\", { enumerable: true, get: function () { return httpHeaders_js_1.createHttpHeaders; } });\ntslib_1.__exportStar(require(\"./auth/schemes.js\"), exports);\ntslib_1.__exportStar(require(\"./auth/oauth2Flows.js\"), exports);\nvar pipelineRequest_js_1 = require(\"./pipelineRequest.js\");\nObject.defineProperty(exports, \"createPipelineRequest\", { enumerable: true, get: function () { return pipelineRequest_js_1.createPipelineRequest; } });\nvar pipeline_js_1 = require(\"./pipeline.js\");\nObject.defineProperty(exports, \"createEmptyPipeline\", { enumerable: true, get: function () { return pipeline_js_1.createEmptyPipeline; } });\nvar restError_js_1 = require(\"./restError.js\");\nObject.defineProperty(exports, \"RestError\", { enumerable: true, get: function () { return restError_js_1.RestError; } });\nObject.defineProperty(exports, \"isRestError\", { enumerable: true, get: function () { return restError_js_1.isRestError; } });\nvar bytesEncoding_js_1 = require(\"./util/bytesEncoding.js\");\nObject.defineProperty(exports, \"stringToUint8Array\", { enumerable: true, get: function () { return bytesEncoding_js_1.stringToUint8Array; } });\nObject.defineProperty(exports, \"uint8ArrayToString\", { enumerable: true, get: function () { return bytesEncoding_js_1.uint8ArrayToString; } });\nvar defaultHttpClient_js_1 = require(\"./defaultHttpClient.js\");\nObject.defineProperty(exports, \"createDefaultHttpClient\", { enumerable: true, get: function () { return defaultHttpClient_js_1.createDefaultHttpClient; } });\nvar getClient_js_1 = require(\"./client/getClient.js\");\nObject.defineProperty(exports, \"getClient\", { enumerable: true, get: function () { return getClient_js_1.getClient; } });\nvar operationOptionHelpers_js_1 = require(\"./client/operationOptionHelpers.js\");\nObject.defineProperty(exports, \"operationOptionsToRequestParameters\", { enumerable: true, get: function () { return operationOptionHelpers_js_1.operationOptionsToRequestParameters; } });\nvar restError_js_2 = require(\"./client/restError.js\");\nObject.defineProperty(exports, \"createRestError\", { enumerable: true, get: function () { return restError_js_2.createRestError; } });\n//# sourceMappingURL=index.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.createEmptyPipeline = createEmptyPipeline;\nconst ts_http_runtime_1 = require(\"@typespec/ts-http-runtime\");\n/**\n * Creates a totally empty pipeline.\n * Useful for testing or creating a custom one.\n */\nfunction createEmptyPipeline() {\n return (0, ts_http_runtime_1.createEmptyPipeline)();\n}\n//# sourceMappingURL=pipeline.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.createLoggerContext = void 0;\nvar logger_js_1 = require(\"./logger.js\");\nObject.defineProperty(exports, \"createLoggerContext\", { enumerable: true, get: function () { return logger_js_1.createLoggerContext; } });\n//# sourceMappingURL=internal.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.AzureLogger = void 0;\nexports.setLogLevel = setLogLevel;\nexports.getLogLevel = getLogLevel;\nexports.createClientLogger = createClientLogger;\nconst logger_1 = require(\"@typespec/ts-http-runtime/internal/logger\");\nconst context = (0, logger_1.createLoggerContext)({\n logLevelEnvVarName: \"AZURE_LOG_LEVEL\",\n namespace: \"azure\",\n});\n/**\n * The AzureLogger provides a mechanism for overriding where logs are output to.\n * By default, logs are sent to stderr.\n * Override the `log` method to redirect logs to another location.\n */\nexports.AzureLogger = context.logger;\n/**\n * Immediately enables logging at the specified log level. If no level is specified, logging is disabled.\n * @param level - The log level to enable for logging.\n * Options from most verbose to least verbose are:\n * - verbose\n * - info\n * - warning\n * - error\n */\nfunction setLogLevel(level) {\n context.setLogLevel(level);\n}\n/**\n * Retrieves the currently specified log level.\n */\nfunction getLogLevel() {\n return context.getLogLevel();\n}\n/**\n * Creates a logger for use by the Azure SDKs that inherits from `AzureLogger`.\n * @param namespace - The name of the SDK package.\n * @hidden\n */\nfunction createClientLogger(namespace) {\n return context.createClientLogger(namespace);\n}\n//# sourceMappingURL=index.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.logger = void 0;\nconst logger_1 = require(\"@azure/logger\");\nexports.logger = (0, logger_1.createClientLogger)(\"core-rest-pipeline\");\n//# sourceMappingURL=log.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.exponentialRetryPolicyName = void 0;\nexports.exponentialRetryPolicy = exponentialRetryPolicy;\nconst exponentialRetryStrategy_js_1 = require(\"../retryStrategies/exponentialRetryStrategy.js\");\nconst retryPolicy_js_1 = require(\"./retryPolicy.js\");\nconst constants_js_1 = require(\"../constants.js\");\n/**\n * The programmatic identifier of the exponentialRetryPolicy.\n */\nexports.exponentialRetryPolicyName = \"exponentialRetryPolicy\";\n/**\n * A policy that attempts to retry requests while introducing an exponentially increasing delay.\n * @param options - Options that configure retry logic.\n */\nfunction exponentialRetryPolicy(options = {}) {\n return (0, retryPolicy_js_1.retryPolicy)([\n (0, exponentialRetryStrategy_js_1.exponentialRetryStrategy)({\n ...options,\n ignoreSystemErrors: true,\n }),\n ], {\n maxRetries: options.maxRetries ?? constants_js_1.DEFAULT_RETRY_POLICY_COUNT,\n });\n}\n//# sourceMappingURL=exponentialRetryPolicy.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.systemErrorRetryPolicyName = void 0;\nexports.systemErrorRetryPolicy = systemErrorRetryPolicy;\nconst exponentialRetryStrategy_js_1 = require(\"../retryStrategies/exponentialRetryStrategy.js\");\nconst retryPolicy_js_1 = require(\"./retryPolicy.js\");\nconst constants_js_1 = require(\"../constants.js\");\n/**\n * Name of the {@link systemErrorRetryPolicy}\n */\nexports.systemErrorRetryPolicyName = \"systemErrorRetryPolicy\";\n/**\n * A retry policy that specifically seeks to handle errors in the\n * underlying transport layer (e.g. DNS lookup failures) rather than\n * retryable error codes from the server itself.\n * @param options - Options that customize the policy.\n */\nfunction systemErrorRetryPolicy(options = {}) {\n return {\n name: exports.systemErrorRetryPolicyName,\n sendRequest: (0, retryPolicy_js_1.retryPolicy)([\n (0, exponentialRetryStrategy_js_1.exponentialRetryStrategy)({\n ...options,\n ignoreHttpStatusCodes: true,\n }),\n ], {\n maxRetries: options.maxRetries ?? constants_js_1.DEFAULT_RETRY_POLICY_COUNT,\n }).sendRequest,\n };\n}\n//# sourceMappingURL=systemErrorRetryPolicy.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.throttlingRetryPolicyName = void 0;\nexports.throttlingRetryPolicy = throttlingRetryPolicy;\nconst throttlingRetryStrategy_js_1 = require(\"../retryStrategies/throttlingRetryStrategy.js\");\nconst retryPolicy_js_1 = require(\"./retryPolicy.js\");\nconst constants_js_1 = require(\"../constants.js\");\n/**\n * Name of the {@link throttlingRetryPolicy}\n */\nexports.throttlingRetryPolicyName = \"throttlingRetryPolicy\";\n/**\n * A policy that retries when the server sends a 429 response with a Retry-After header.\n *\n * To learn more, please refer to\n * https://learn.microsoft.com/azure/azure-resource-manager/resource-manager-request-limits,\n * https://learn.microsoft.com/azure/azure-subscription-service-limits and\n * https://learn.microsoft.com/azure/virtual-machines/troubleshooting/troubleshooting-throttling-errors\n *\n * @param options - Options that configure retry logic.\n */\nfunction throttlingRetryPolicy(options = {}) {\n return {\n name: exports.throttlingRetryPolicyName,\n sendRequest: (0, retryPolicy_js_1.retryPolicy)([(0, throttlingRetryStrategy_js_1.throttlingRetryStrategy)()], {\n maxRetries: options.maxRetries ?? constants_js_1.DEFAULT_RETRY_POLICY_COUNT,\n }).sendRequest,\n };\n}\n//# sourceMappingURL=throttlingRetryPolicy.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.userAgentPolicyName = exports.userAgentPolicy = exports.tlsPolicyName = exports.tlsPolicy = exports.redirectPolicyName = exports.redirectPolicy = exports.getDefaultProxySettings = exports.proxyPolicyName = exports.proxyPolicy = exports.multipartPolicyName = exports.multipartPolicy = exports.logPolicyName = exports.logPolicy = exports.formDataPolicyName = exports.formDataPolicy = exports.throttlingRetryPolicyName = exports.throttlingRetryPolicy = exports.systemErrorRetryPolicyName = exports.systemErrorRetryPolicy = exports.retryPolicy = exports.exponentialRetryPolicyName = exports.exponentialRetryPolicy = exports.defaultRetryPolicyName = exports.defaultRetryPolicy = exports.decompressResponsePolicyName = exports.decompressResponsePolicy = exports.agentPolicyName = exports.agentPolicy = void 0;\nvar agentPolicy_js_1 = require(\"./agentPolicy.js\");\nObject.defineProperty(exports, \"agentPolicy\", { enumerable: true, get: function () { return agentPolicy_js_1.agentPolicy; } });\nObject.defineProperty(exports, \"agentPolicyName\", { enumerable: true, get: function () { return agentPolicy_js_1.agentPolicyName; } });\nvar decompressResponsePolicy_js_1 = require(\"./decompressResponsePolicy.js\");\nObject.defineProperty(exports, \"decompressResponsePolicy\", { enumerable: true, get: function () { return decompressResponsePolicy_js_1.decompressResponsePolicy; } });\nObject.defineProperty(exports, \"decompressResponsePolicyName\", { enumerable: true, get: function () { return decompressResponsePolicy_js_1.decompressResponsePolicyName; } });\nvar defaultRetryPolicy_js_1 = require(\"./defaultRetryPolicy.js\");\nObject.defineProperty(exports, \"defaultRetryPolicy\", { enumerable: true, get: function () { return defaultRetryPolicy_js_1.defaultRetryPolicy; } });\nObject.defineProperty(exports, \"defaultRetryPolicyName\", { enumerable: true, get: function () { return defaultRetryPolicy_js_1.defaultRetryPolicyName; } });\nvar exponentialRetryPolicy_js_1 = require(\"./exponentialRetryPolicy.js\");\nObject.defineProperty(exports, \"exponentialRetryPolicy\", { enumerable: true, get: function () { return exponentialRetryPolicy_js_1.exponentialRetryPolicy; } });\nObject.defineProperty(exports, \"exponentialRetryPolicyName\", { enumerable: true, get: function () { return exponentialRetryPolicy_js_1.exponentialRetryPolicyName; } });\nvar retryPolicy_js_1 = require(\"./retryPolicy.js\");\nObject.defineProperty(exports, \"retryPolicy\", { enumerable: true, get: function () { return retryPolicy_js_1.retryPolicy; } });\nvar systemErrorRetryPolicy_js_1 = require(\"./systemErrorRetryPolicy.js\");\nObject.defineProperty(exports, \"systemErrorRetryPolicy\", { enumerable: true, get: function () { return systemErrorRetryPolicy_js_1.systemErrorRetryPolicy; } });\nObject.defineProperty(exports, \"systemErrorRetryPolicyName\", { enumerable: true, get: function () { return systemErrorRetryPolicy_js_1.systemErrorRetryPolicyName; } });\nvar throttlingRetryPolicy_js_1 = require(\"./throttlingRetryPolicy.js\");\nObject.defineProperty(exports, \"throttlingRetryPolicy\", { enumerable: true, get: function () { return throttlingRetryPolicy_js_1.throttlingRetryPolicy; } });\nObject.defineProperty(exports, \"throttlingRetryPolicyName\", { enumerable: true, get: function () { return throttlingRetryPolicy_js_1.throttlingRetryPolicyName; } });\nvar formDataPolicy_js_1 = require(\"./formDataPolicy.js\");\nObject.defineProperty(exports, \"formDataPolicy\", { enumerable: true, get: function () { return formDataPolicy_js_1.formDataPolicy; } });\nObject.defineProperty(exports, \"formDataPolicyName\", { enumerable: true, get: function () { return formDataPolicy_js_1.formDataPolicyName; } });\nvar logPolicy_js_1 = require(\"./logPolicy.js\");\nObject.defineProperty(exports, \"logPolicy\", { enumerable: true, get: function () { return logPolicy_js_1.logPolicy; } });\nObject.defineProperty(exports, \"logPolicyName\", { enumerable: true, get: function () { return logPolicy_js_1.logPolicyName; } });\nvar multipartPolicy_js_1 = require(\"./multipartPolicy.js\");\nObject.defineProperty(exports, \"multipartPolicy\", { enumerable: true, get: function () { return multipartPolicy_js_1.multipartPolicy; } });\nObject.defineProperty(exports, \"multipartPolicyName\", { enumerable: true, get: function () { return multipartPolicy_js_1.multipartPolicyName; } });\nvar proxyPolicy_js_1 = require(\"./proxyPolicy.js\");\nObject.defineProperty(exports, \"proxyPolicy\", { enumerable: true, get: function () { return proxyPolicy_js_1.proxyPolicy; } });\nObject.defineProperty(exports, \"proxyPolicyName\", { enumerable: true, get: function () { return proxyPolicy_js_1.proxyPolicyName; } });\nObject.defineProperty(exports, \"getDefaultProxySettings\", { enumerable: true, get: function () { return proxyPolicy_js_1.getDefaultProxySettings; } });\nvar redirectPolicy_js_1 = require(\"./redirectPolicy.js\");\nObject.defineProperty(exports, \"redirectPolicy\", { enumerable: true, get: function () { return redirectPolicy_js_1.redirectPolicy; } });\nObject.defineProperty(exports, \"redirectPolicyName\", { enumerable: true, get: function () { return redirectPolicy_js_1.redirectPolicyName; } });\nvar tlsPolicy_js_1 = require(\"./tlsPolicy.js\");\nObject.defineProperty(exports, \"tlsPolicy\", { enumerable: true, get: function () { return tlsPolicy_js_1.tlsPolicy; } });\nObject.defineProperty(exports, \"tlsPolicyName\", { enumerable: true, get: function () { return tlsPolicy_js_1.tlsPolicyName; } });\nvar userAgentPolicy_js_1 = require(\"./userAgentPolicy.js\");\nObject.defineProperty(exports, \"userAgentPolicy\", { enumerable: true, get: function () { return userAgentPolicy_js_1.userAgentPolicy; } });\nObject.defineProperty(exports, \"userAgentPolicyName\", { enumerable: true, get: function () { return userAgentPolicy_js_1.userAgentPolicyName; } });\n//# sourceMappingURL=internal.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.logPolicyName = void 0;\nexports.logPolicy = logPolicy;\nconst log_js_1 = require(\"../log.js\");\nconst policies_1 = require(\"@typespec/ts-http-runtime/internal/policies\");\n/**\n * The programmatic identifier of the logPolicy.\n */\nexports.logPolicyName = policies_1.logPolicyName;\n/**\n * A policy that logs all requests and responses.\n * @param options - Options to configure logPolicy.\n */\nfunction logPolicy(options = {}) {\n return (0, policies_1.logPolicy)({\n logger: log_js_1.logger.info,\n ...options,\n });\n}\n//# sourceMappingURL=logPolicy.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.redirectPolicyName = void 0;\nexports.redirectPolicy = redirectPolicy;\nconst policies_1 = require(\"@typespec/ts-http-runtime/internal/policies\");\n/**\n * The programmatic identifier of the redirectPolicy.\n */\nexports.redirectPolicyName = policies_1.redirectPolicyName;\n/**\n * A policy to follow Location headers from the server in order\n * to support server-side redirection.\n * In the browser, this policy is not used.\n * @param options - Options to control policy behavior.\n */\nfunction redirectPolicy(options = {}) {\n return (0, policies_1.redirectPolicy)(options);\n}\n//# sourceMappingURL=redirectPolicy.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getHeaderName = getHeaderName;\nexports.setPlatformSpecificData = setPlatformSpecificData;\nconst tslib_1 = require(\"tslib\");\nconst node_os_1 = tslib_1.__importDefault(require(\"node:os\"));\nconst node_process_1 = tslib_1.__importDefault(require(\"node:process\"));\n/**\n * @internal\n */\nfunction getHeaderName() {\n return \"User-Agent\";\n}\n/**\n * @internal\n */\nasync function setPlatformSpecificData(map) {\n if (node_process_1.default && node_process_1.default.versions) {\n const osInfo = `${node_os_1.default.type()} ${node_os_1.default.release()}; ${node_os_1.default.arch()}`;\n const versions = node_process_1.default.versions;\n if (versions.bun) {\n map.set(\"Bun\", `${versions.bun} (${osInfo})`);\n }\n else if (versions.deno) {\n map.set(\"Deno\", `${versions.deno} (${osInfo})`);\n }\n else if (versions.node) {\n map.set(\"Node\", `${versions.node} (${osInfo})`);\n }\n }\n}\n//# sourceMappingURL=userAgentPlatform.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.DEFAULT_RETRY_POLICY_COUNT = exports.SDK_VERSION = void 0;\nexports.SDK_VERSION = \"1.22.2\";\nexports.DEFAULT_RETRY_POLICY_COUNT = 3;\n//# sourceMappingURL=constants.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getUserAgentHeaderName = getUserAgentHeaderName;\nexports.getUserAgentValue = getUserAgentValue;\nconst userAgentPlatform_js_1 = require(\"./userAgentPlatform.js\");\nconst constants_js_1 = require(\"../constants.js\");\nfunction getUserAgentString(telemetryInfo) {\n const parts = [];\n for (const [key, value] of telemetryInfo) {\n const token = value ? `${key}/${value}` : key;\n parts.push(token);\n }\n return parts.join(\" \");\n}\n/**\n * @internal\n */\nfunction getUserAgentHeaderName() {\n return (0, userAgentPlatform_js_1.getHeaderName)();\n}\n/**\n * @internal\n */\nasync function getUserAgentValue(prefix) {\n const runtimeInfo = new Map();\n runtimeInfo.set(\"core-rest-pipeline\", constants_js_1.SDK_VERSION);\n await (0, userAgentPlatform_js_1.setPlatformSpecificData)(runtimeInfo);\n const defaultAgent = getUserAgentString(runtimeInfo);\n const userAgentValue = prefix ? `${prefix} ${defaultAgent}` : defaultAgent;\n return userAgentValue;\n}\n//# sourceMappingURL=userAgent.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.userAgentPolicyName = void 0;\nexports.userAgentPolicy = userAgentPolicy;\nconst userAgent_js_1 = require(\"../util/userAgent.js\");\nconst UserAgentHeaderName = (0, userAgent_js_1.getUserAgentHeaderName)();\n/**\n * The programmatic identifier of the userAgentPolicy.\n */\nexports.userAgentPolicyName = \"userAgentPolicy\";\n/**\n * A policy that sets the User-Agent header (or equivalent) to reflect\n * the library version.\n * @param options - Options to customize the user agent value.\n */\nfunction userAgentPolicy(options = {}) {\n const userAgentValue = (0, userAgent_js_1.getUserAgentValue)(options.userAgentPrefix);\n return {\n name: exports.userAgentPolicyName,\n async sendRequest(request, next) {\n if (!request.headers.has(UserAgentHeaderName)) {\n request.headers.set(UserAgentHeaderName, await userAgentValue);\n }\n return next(request);\n },\n };\n}\n//# sourceMappingURL=userAgentPolicy.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.computeSha256Hmac = computeSha256Hmac;\nexports.computeSha256Hash = computeSha256Hash;\nconst node_crypto_1 = require(\"node:crypto\");\n/**\n * Generates a SHA-256 HMAC signature.\n * @param key - The HMAC key represented as a base64 string, used to generate the cryptographic HMAC hash.\n * @param stringToSign - The data to be signed.\n * @param encoding - The textual encoding to use for the returned HMAC digest.\n */\nasync function computeSha256Hmac(key, stringToSign, encoding) {\n const decodedKey = Buffer.from(key, \"base64\");\n return (0, node_crypto_1.createHmac)(\"sha256\", decodedKey).update(stringToSign).digest(encoding);\n}\n/**\n * Generates a SHA-256 hash.\n * @param content - The data to be included in the hash.\n * @param encoding - The textual encoding to use for the returned hash.\n */\nasync function computeSha256Hash(content, encoding) {\n return (0, node_crypto_1.createHash)(\"sha256\").update(content).digest(encoding);\n}\n//# sourceMappingURL=sha256.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Sanitizer = exports.uint8ArrayToString = exports.stringToUint8Array = exports.isWebWorker = exports.isReactNative = exports.isDeno = exports.isNodeRuntime = exports.isNodeLike = exports.isBun = exports.isBrowser = exports.randomUUID = exports.computeSha256Hmac = exports.computeSha256Hash = exports.isError = exports.isObject = exports.getRandomIntegerInclusive = exports.calculateRetryDelay = void 0;\nvar delay_js_1 = require(\"./delay.js\");\nObject.defineProperty(exports, \"calculateRetryDelay\", { enumerable: true, get: function () { return delay_js_1.calculateRetryDelay; } });\nvar random_js_1 = require(\"./random.js\");\nObject.defineProperty(exports, \"getRandomIntegerInclusive\", { enumerable: true, get: function () { return random_js_1.getRandomIntegerInclusive; } });\nvar object_js_1 = require(\"./object.js\");\nObject.defineProperty(exports, \"isObject\", { enumerable: true, get: function () { return object_js_1.isObject; } });\nvar error_js_1 = require(\"./error.js\");\nObject.defineProperty(exports, \"isError\", { enumerable: true, get: function () { return error_js_1.isError; } });\nvar sha256_js_1 = require(\"./sha256.js\");\nObject.defineProperty(exports, \"computeSha256Hash\", { enumerable: true, get: function () { return sha256_js_1.computeSha256Hash; } });\nObject.defineProperty(exports, \"computeSha256Hmac\", { enumerable: true, get: function () { return sha256_js_1.computeSha256Hmac; } });\nvar uuidUtils_js_1 = require(\"./uuidUtils.js\");\nObject.defineProperty(exports, \"randomUUID\", { enumerable: true, get: function () { return uuidUtils_js_1.randomUUID; } });\nvar checkEnvironment_js_1 = require(\"./checkEnvironment.js\");\nObject.defineProperty(exports, \"isBrowser\", { enumerable: true, get: function () { return checkEnvironment_js_1.isBrowser; } });\nObject.defineProperty(exports, \"isBun\", { enumerable: true, get: function () { return checkEnvironment_js_1.isBun; } });\nObject.defineProperty(exports, \"isNodeLike\", { enumerable: true, get: function () { return checkEnvironment_js_1.isNodeLike; } });\nObject.defineProperty(exports, \"isNodeRuntime\", { enumerable: true, get: function () { return checkEnvironment_js_1.isNodeRuntime; } });\nObject.defineProperty(exports, \"isDeno\", { enumerable: true, get: function () { return checkEnvironment_js_1.isDeno; } });\nObject.defineProperty(exports, \"isReactNative\", { enumerable: true, get: function () { return checkEnvironment_js_1.isReactNative; } });\nObject.defineProperty(exports, \"isWebWorker\", { enumerable: true, get: function () { return checkEnvironment_js_1.isWebWorker; } });\nvar bytesEncoding_js_1 = require(\"./bytesEncoding.js\");\nObject.defineProperty(exports, \"stringToUint8Array\", { enumerable: true, get: function () { return bytesEncoding_js_1.stringToUint8Array; } });\nObject.defineProperty(exports, \"uint8ArrayToString\", { enumerable: true, get: function () { return bytesEncoding_js_1.uint8ArrayToString; } });\nvar sanitizer_js_1 = require(\"./sanitizer.js\");\nObject.defineProperty(exports, \"Sanitizer\", { enumerable: true, get: function () { return sanitizer_js_1.Sanitizer; } });\n//# sourceMappingURL=internal.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.cancelablePromiseRace = cancelablePromiseRace;\n/**\n * promise.race() wrapper that aborts rest of promises as soon as the first promise settles.\n */\nasync function cancelablePromiseRace(abortablePromiseBuilders, options) {\n const aborter = new AbortController();\n function abortHandler() {\n aborter.abort();\n }\n options?.abortSignal?.addEventListener(\"abort\", abortHandler);\n try {\n return await Promise.race(abortablePromiseBuilders.map((p) => p({ abortSignal: aborter.signal })));\n }\n finally {\n aborter.abort();\n options?.abortSignal?.removeEventListener(\"abort\", abortHandler);\n }\n}\n//# sourceMappingURL=aborterUtils.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.AbortError = void 0;\n/**\n * This error is thrown when an asynchronous operation has been aborted.\n * Check for this error by testing the `name` that the name property of the\n * error matches `\"AbortError\"`.\n *\n * @example\n * ```ts\n * const controller = new AbortController();\n * controller.abort();\n * try {\n * doAsyncWork(controller.signal)\n * } catch (e) {\n * if (e.name === 'AbortError') {\n * // handle abort error here.\n * }\n * }\n * ```\n */\nclass AbortError extends Error {\n constructor(message) {\n super(message);\n this.name = \"AbortError\";\n }\n}\nexports.AbortError = AbortError;\n//# sourceMappingURL=AbortError.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.AbortError = void 0;\nvar AbortError_js_1 = require(\"./AbortError.js\");\nObject.defineProperty(exports, \"AbortError\", { enumerable: true, get: function () { return AbortError_js_1.AbortError; } });\n//# sourceMappingURL=index.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.createAbortablePromise = createAbortablePromise;\nconst abort_controller_1 = require(\"@azure/abort-controller\");\n/**\n * Creates an abortable promise.\n * @param buildPromise - A function that takes the resolve and reject functions as parameters.\n * @param options - The options for the abortable promise.\n * @returns A promise that can be aborted.\n */\nfunction createAbortablePromise(buildPromise, options) {\n const { cleanupBeforeAbort, abortSignal, abortErrorMsg } = options ?? {};\n return new Promise((resolve, reject) => {\n function rejectOnAbort() {\n reject(new abort_controller_1.AbortError(abortErrorMsg ?? \"The operation was aborted.\"));\n }\n function removeListeners() {\n abortSignal?.removeEventListener(\"abort\", onAbort);\n }\n function onAbort() {\n cleanupBeforeAbort?.();\n removeListeners();\n rejectOnAbort();\n }\n if (abortSignal?.aborted) {\n return rejectOnAbort();\n }\n try {\n buildPromise((x) => {\n removeListeners();\n resolve(x);\n }, (x) => {\n removeListeners();\n reject(x);\n });\n }\n catch (err) {\n reject(err);\n }\n abortSignal?.addEventListener(\"abort\", onAbort);\n });\n}\n//# sourceMappingURL=createAbortablePromise.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.delay = delay;\nexports.calculateRetryDelay = calculateRetryDelay;\nconst createAbortablePromise_js_1 = require(\"./createAbortablePromise.js\");\nconst util_1 = require(\"@typespec/ts-http-runtime/internal/util\");\nconst StandardAbortMessage = \"The delay was aborted.\";\n/**\n * A wrapper for setTimeout that resolves a promise after timeInMs milliseconds.\n * @param timeInMs - The number of milliseconds to be delayed.\n * @param options - The options for delay - currently abort options\n * @returns Promise that is resolved after timeInMs\n */\nfunction delay(timeInMs, options) {\n let token;\n const { abortSignal, abortErrorMsg } = options ?? {};\n return (0, createAbortablePromise_js_1.createAbortablePromise)((resolve) => {\n token = setTimeout(resolve, timeInMs);\n }, {\n cleanupBeforeAbort: () => clearTimeout(token),\n abortSignal,\n abortErrorMsg: abortErrorMsg ?? StandardAbortMessage,\n });\n}\n/**\n * Calculates the delay interval for retry attempts using exponential delay with jitter.\n * @param retryAttempt - The current retry attempt number.\n * @param config - The exponential retry configuration.\n * @returns An object containing the calculated retry delay.\n */\nfunction calculateRetryDelay(retryAttempt, config) {\n // Exponentially increase the delay each time\n const exponentialDelay = config.retryDelayInMs * Math.pow(2, retryAttempt);\n // Don't let the delay exceed the maximum\n const clampedDelay = Math.min(config.maxRetryDelayInMs, exponentialDelay);\n // Allow the final value to have some \"jitter\" (within 50% of the delay size) so\n // that retries across multiple clients don't occur simultaneously.\n const retryAfterInMs = clampedDelay / 2 + (0, util_1.getRandomIntegerInclusive)(0, clampedDelay / 2);\n return { retryAfterInMs };\n}\n//# sourceMappingURL=delay.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getErrorMessage = getErrorMessage;\nconst util_1 = require(\"@typespec/ts-http-runtime/internal/util\");\n/**\n * Given what is thought to be an error object, return the message if possible.\n * If the message is missing, returns a stringified version of the input.\n * @param e - Something thrown from a try block\n * @returns The error message or a string of the input\n */\nfunction getErrorMessage(e) {\n if ((0, util_1.isError)(e)) {\n return e.message;\n }\n else {\n let stringified;\n try {\n if (typeof e === \"object\" && e) {\n stringified = JSON.stringify(e);\n }\n else {\n stringified = String(e);\n }\n }\n catch (err) {\n stringified = \"[unable to stringify input]\";\n }\n return `Unknown error ${stringified}`;\n }\n}\n//# sourceMappingURL=error.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isDefined = isDefined;\nexports.isObjectWithProperties = isObjectWithProperties;\nexports.objectHasProperty = objectHasProperty;\n/**\n * Helper TypeGuard that checks if something is defined or not.\n * @param thing - Anything\n */\nfunction isDefined(thing) {\n return typeof thing !== \"undefined\" && thing !== null;\n}\n/**\n * Helper TypeGuard that checks if the input is an object with the specified properties.\n * @param thing - Anything.\n * @param properties - The name of the properties that should appear in the object.\n */\nfunction isObjectWithProperties(thing, properties) {\n if (!isDefined(thing) || typeof thing !== \"object\") {\n return false;\n }\n for (const property of properties) {\n if (!objectHasProperty(thing, property)) {\n return false;\n }\n }\n return true;\n}\n/**\n * Helper TypeGuard that checks if the input is an object with the specified property.\n * @param thing - Any object.\n * @param property - The name of the property that should appear in the object.\n */\nfunction objectHasProperty(thing, property) {\n return (isDefined(thing) && typeof thing === \"object\" && property in thing);\n}\n//# sourceMappingURL=typeGuards.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isWebWorker = exports.isReactNative = exports.isNodeRuntime = exports.isNodeLike = exports.isNode = exports.isDeno = exports.isBun = exports.isBrowser = exports.objectHasProperty = exports.isObjectWithProperties = exports.isDefined = exports.getErrorMessage = exports.delay = exports.createAbortablePromise = exports.cancelablePromiseRace = void 0;\nexports.calculateRetryDelay = calculateRetryDelay;\nexports.computeSha256Hash = computeSha256Hash;\nexports.computeSha256Hmac = computeSha256Hmac;\nexports.getRandomIntegerInclusive = getRandomIntegerInclusive;\nexports.isError = isError;\nexports.isObject = isObject;\nexports.randomUUID = randomUUID;\nexports.uint8ArrayToString = uint8ArrayToString;\nexports.stringToUint8Array = stringToUint8Array;\nconst tslib_1 = require(\"tslib\");\nconst tspRuntime = tslib_1.__importStar(require(\"@typespec/ts-http-runtime/internal/util\"));\nvar aborterUtils_js_1 = require(\"./aborterUtils.js\");\nObject.defineProperty(exports, \"cancelablePromiseRace\", { enumerable: true, get: function () { return aborterUtils_js_1.cancelablePromiseRace; } });\nvar createAbortablePromise_js_1 = require(\"./createAbortablePromise.js\");\nObject.defineProperty(exports, \"createAbortablePromise\", { enumerable: true, get: function () { return createAbortablePromise_js_1.createAbortablePromise; } });\nvar delay_js_1 = require(\"./delay.js\");\nObject.defineProperty(exports, \"delay\", { enumerable: true, get: function () { return delay_js_1.delay; } });\nvar error_js_1 = require(\"./error.js\");\nObject.defineProperty(exports, \"getErrorMessage\", { enumerable: true, get: function () { return error_js_1.getErrorMessage; } });\nvar typeGuards_js_1 = require(\"./typeGuards.js\");\nObject.defineProperty(exports, \"isDefined\", { enumerable: true, get: function () { return typeGuards_js_1.isDefined; } });\nObject.defineProperty(exports, \"isObjectWithProperties\", { enumerable: true, get: function () { return typeGuards_js_1.isObjectWithProperties; } });\nObject.defineProperty(exports, \"objectHasProperty\", { enumerable: true, get: function () { return typeGuards_js_1.objectHasProperty; } });\n/**\n * Calculates the delay interval for retry attempts using exponential delay with jitter.\n *\n * @param retryAttempt - The current retry attempt number.\n *\n * @param config - The exponential retry configuration.\n *\n * @returns An object containing the calculated retry delay.\n */\nfunction calculateRetryDelay(retryAttempt, config) {\n return tspRuntime.calculateRetryDelay(retryAttempt, config);\n}\n/**\n * Generates a SHA-256 hash.\n *\n * @param content - The data to be included in the hash.\n *\n * @param encoding - The textual encoding to use for the returned hash.\n */\nfunction computeSha256Hash(content, encoding) {\n return tspRuntime.computeSha256Hash(content, encoding);\n}\n/**\n * Generates a SHA-256 HMAC signature.\n *\n * @param key - The HMAC key represented as a base64 string, used to generate the cryptographic HMAC hash.\n *\n * @param stringToSign - The data to be signed.\n *\n * @param encoding - The textual encoding to use for the returned HMAC digest.\n */\nfunction computeSha256Hmac(key, stringToSign, encoding) {\n return tspRuntime.computeSha256Hmac(key, stringToSign, encoding);\n}\n/**\n * Returns a random integer value between a lower and upper bound, inclusive of both bounds. Note that this uses Math.random and isn't secure. If you need to use this for any kind of security purpose, find a better source of random.\n *\n * @param min - The smallest integer value allowed.\n *\n * @param max - The largest integer value allowed.\n */\nfunction getRandomIntegerInclusive(min, max) {\n return tspRuntime.getRandomIntegerInclusive(min, max);\n}\n/**\n * Typeguard for an error object shape (has name and message)\n *\n * @param e - Something caught by a catch clause.\n */\nfunction isError(e) {\n return tspRuntime.isError(e);\n}\n/**\n * Helper to determine when an input is a generic JS object.\n *\n * @returns true when input is an object type that is not null, Array, RegExp, or Date.\n */\nfunction isObject(input) {\n return tspRuntime.isObject(input);\n}\n/**\n * Generated Universally Unique Identifier\n *\n * @returns RFC4122 v4 UUID.\n */\nfunction randomUUID() {\n return tspRuntime.randomUUID();\n}\n/**\n * A constant that indicates whether the environment the code is running is a Web Browser.\n */\nexports.isBrowser = tspRuntime.isBrowser;\n/**\n * A constant that indicates whether the environment the code is running is Bun.sh.\n */\nexports.isBun = tspRuntime.isBun;\n/**\n * A constant that indicates whether the environment the code is running is Deno.\n */\nexports.isDeno = tspRuntime.isDeno;\n/**\n * A constant that indicates whether the environment the code is running is a Node.js compatible environment.\n *\n * @deprecated\n *\n * Use `isNodeLike` instead.\n */\nexports.isNode = tspRuntime.isNodeLike;\n/**\n * A constant that indicates whether the environment the code is running is a Node.js compatible environment.\n */\nexports.isNodeLike = tspRuntime.isNodeLike;\n/**\n * A constant that indicates whether the environment the code is running is Node.JS.\n */\nexports.isNodeRuntime = tspRuntime.isNodeRuntime;\n/**\n * A constant that indicates whether the environment the code is running is in React-Native.\n */\nexports.isReactNative = tspRuntime.isReactNative;\n/**\n * A constant that indicates whether the environment the code is running is a Web Worker.\n */\nexports.isWebWorker = tspRuntime.isWebWorker;\n/**\n * The helper that transforms bytes with specific character encoding into string\n * @param bytes - the uint8array bytes\n * @param format - the format we use to encode the byte\n * @returns a string of the encoded string\n */\nfunction uint8ArrayToString(bytes, format) {\n return tspRuntime.uint8ArrayToString(bytes, format);\n}\n/**\n * The helper that transforms string to specific character encoded bytes array.\n * @param value - the string to be converted\n * @param format - the format we use to decode the value\n * @returns a uint8array\n */\nfunction stringToUint8Array(value, format) {\n return tspRuntime.stringToUint8Array(value, format);\n}\n//# sourceMappingURL=index.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.hasRawContent = hasRawContent;\nexports.getRawContent = getRawContent;\nexports.createFileFromStream = createFileFromStream;\nexports.createFile = createFile;\nconst core_util_1 = require(\"@azure/core-util\");\nfunction isNodeReadableStream(x) {\n return Boolean(x && typeof x[\"pipe\"] === \"function\");\n}\nconst unimplementedMethods = {\n arrayBuffer: () => {\n throw new Error(\"Not implemented\");\n },\n bytes: () => {\n throw new Error(\"Not implemented\");\n },\n slice: () => {\n throw new Error(\"Not implemented\");\n },\n text: () => {\n throw new Error(\"Not implemented\");\n },\n};\n/**\n * Private symbol used as key on objects created using createFile containing the\n * original source of the file object.\n *\n * This is used in Node to access the original Node stream without using Blob#stream, which\n * returns a web stream. This is done to avoid a couple of bugs to do with Blob#stream and\n * Readable#to/fromWeb in Node versions we support:\n * - https://github.com/nodejs/node/issues/42694 (fixed in Node 18.14)\n * - https://github.com/nodejs/node/issues/48916 (fixed in Node 20.6)\n *\n * Once these versions are no longer supported, we may be able to stop doing this.\n *\n * @internal\n */\nconst rawContent = Symbol(\"rawContent\");\n/**\n * Type guard to check if a given object is a blob-like object with a raw content property.\n */\nfunction hasRawContent(x) {\n return typeof x[rawContent] === \"function\";\n}\n/**\n * Extract the raw content from a given blob-like object. If the input was created using createFile\n * or createFileFromStream, the exact content passed into createFile/createFileFromStream will be used.\n * For true instances of Blob and File, returns the actual blob.\n *\n * @internal\n */\nfunction getRawContent(blob) {\n if (hasRawContent(blob)) {\n return blob[rawContent]();\n }\n else {\n return blob;\n }\n}\n/**\n * Create an object that implements the File interface. This object is intended to be\n * passed into RequestBodyType.formData, and is not guaranteed to work as expected in\n * other situations.\n *\n * Use this function to:\n * - Create a File object for use in RequestBodyType.formData in environments where the\n * global File object is unavailable.\n * - Create a File-like object from a readable stream without reading the stream into memory.\n *\n * @param stream - the content of the file as a callback returning a stream. When a File object made using createFile is\n * passed in a request's form data map, the stream will not be read into memory\n * and instead will be streamed when the request is made. In the event of a retry, the\n * stream needs to be read again, so this callback SHOULD return a fresh stream if possible.\n * @param name - the name of the file.\n * @param options - optional metadata about the file, e.g. file name, file size, MIME type.\n */\nfunction createFileFromStream(stream, name, options = {}) {\n return {\n ...unimplementedMethods,\n type: options.type ?? \"\",\n lastModified: options.lastModified ?? new Date().getTime(),\n webkitRelativePath: options.webkitRelativePath ?? \"\",\n size: options.size ?? -1,\n name,\n stream: () => {\n const s = stream();\n if (isNodeReadableStream(s)) {\n throw new Error(\"Not supported: a Node stream was provided as input to createFileFromStream.\");\n }\n return s;\n },\n [rawContent]: stream,\n };\n}\n/**\n * Create an object that implements the File interface. This object is intended to be\n * passed into RequestBodyType.formData, and is not guaranteed to work as expected in\n * other situations.\n *\n * Use this function create a File object for use in RequestBodyType.formData in environments where the global File object is unavailable.\n *\n * @param content - the content of the file as a Uint8Array in memory.\n * @param name - the name of the file.\n * @param options - optional metadata about the file, e.g. file name, file size, MIME type.\n */\nfunction createFile(content, name, options = {}) {\n if (core_util_1.isNodeLike) {\n return {\n ...unimplementedMethods,\n type: options.type ?? \"\",\n lastModified: options.lastModified ?? new Date().getTime(),\n webkitRelativePath: options.webkitRelativePath ?? \"\",\n size: content.byteLength,\n name,\n arrayBuffer: async () => content.buffer,\n stream: () => new Blob([toArrayBuffer(content)]).stream(),\n [rawContent]: () => content,\n };\n }\n else {\n return new File([toArrayBuffer(content)], name, options);\n }\n}\nfunction toArrayBuffer(source) {\n if (\"resize\" in source.buffer) {\n // ArrayBuffer\n return source;\n }\n // SharedArrayBuffer\n return source.map((x) => x);\n}\n//# sourceMappingURL=file.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.multipartPolicyName = void 0;\nexports.multipartPolicy = multipartPolicy;\nconst policies_1 = require(\"@typespec/ts-http-runtime/internal/policies\");\nconst file_js_1 = require(\"../util/file.js\");\n/**\n * Name of multipart policy\n */\nexports.multipartPolicyName = policies_1.multipartPolicyName;\n/**\n * Pipeline policy for multipart requests\n */\nfunction multipartPolicy() {\n const tspPolicy = (0, policies_1.multipartPolicy)();\n return {\n name: exports.multipartPolicyName,\n sendRequest: async (request, next) => {\n if (request.multipartBody) {\n for (const part of request.multipartBody.parts) {\n if ((0, file_js_1.hasRawContent)(part.body)) {\n part.body = (0, file_js_1.getRawContent)(part.body);\n }\n }\n }\n return tspPolicy.sendRequest(request, next);\n },\n };\n}\n//# sourceMappingURL=multipartPolicy.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.decompressResponsePolicyName = void 0;\nexports.decompressResponsePolicy = decompressResponsePolicy;\nconst policies_1 = require(\"@typespec/ts-http-runtime/internal/policies\");\n/**\n * The programmatic identifier of the decompressResponsePolicy.\n */\nexports.decompressResponsePolicyName = policies_1.decompressResponsePolicyName;\n/**\n * A policy to enable response decompression according to Accept-Encoding header\n * https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Accept-Encoding\n */\nfunction decompressResponsePolicy() {\n return (0, policies_1.decompressResponsePolicy)();\n}\n//# sourceMappingURL=decompressResponsePolicy.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.defaultRetryPolicyName = void 0;\nexports.defaultRetryPolicy = defaultRetryPolicy;\nconst policies_1 = require(\"@typespec/ts-http-runtime/internal/policies\");\n/**\n * Name of the {@link defaultRetryPolicy}\n */\nexports.defaultRetryPolicyName = policies_1.defaultRetryPolicyName;\n/**\n * A policy that retries according to three strategies:\n * - When the server sends a 429 response with a Retry-After header.\n * - When there are errors in the underlying transport layer (e.g. DNS lookup failures).\n * - Or otherwise if the outgoing request fails, it will retry with an exponentially increasing delay.\n */\nfunction defaultRetryPolicy(options = {}) {\n return (0, policies_1.defaultRetryPolicy)(options);\n}\n//# sourceMappingURL=defaultRetryPolicy.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.formDataPolicyName = void 0;\nexports.formDataPolicy = formDataPolicy;\nconst policies_1 = require(\"@typespec/ts-http-runtime/internal/policies\");\n/**\n * The programmatic identifier of the formDataPolicy.\n */\nexports.formDataPolicyName = policies_1.formDataPolicyName;\n/**\n * A policy that encodes FormData on the request into the body.\n */\nfunction formDataPolicy() {\n return (0, policies_1.formDataPolicy)();\n}\n//# sourceMappingURL=formDataPolicy.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.proxyPolicyName = void 0;\nexports.getDefaultProxySettings = getDefaultProxySettings;\nexports.proxyPolicy = proxyPolicy;\nconst policies_1 = require(\"@typespec/ts-http-runtime/internal/policies\");\n/**\n * The programmatic identifier of the proxyPolicy.\n */\nexports.proxyPolicyName = policies_1.proxyPolicyName;\n/**\n * This method converts a proxy url into `ProxySettings` for use with ProxyPolicy.\n * If no argument is given, it attempts to parse a proxy URL from the environment\n * variables `HTTPS_PROXY` or `HTTP_PROXY`.\n * @param proxyUrl - The url of the proxy to use. May contain authentication information.\n * @deprecated - Internally this method is no longer necessary when setting proxy information.\n */\nfunction getDefaultProxySettings(proxyUrl) {\n return (0, policies_1.getDefaultProxySettings)(proxyUrl);\n}\n/**\n * A policy that allows one to apply proxy settings to all requests.\n * If not passed static settings, they will be retrieved from the HTTPS_PROXY\n * or HTTP_PROXY environment variables.\n * @param proxySettings - ProxySettings to use on each request.\n * @param options - additional settings, for example, custom NO_PROXY patterns\n */\nfunction proxyPolicy(proxySettings, options) {\n return (0, policies_1.proxyPolicy)(proxySettings, options);\n}\n//# sourceMappingURL=proxyPolicy.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.setClientRequestIdPolicyName = void 0;\nexports.setClientRequestIdPolicy = setClientRequestIdPolicy;\n/**\n * The programmatic identifier of the setClientRequestIdPolicy.\n */\nexports.setClientRequestIdPolicyName = \"setClientRequestIdPolicy\";\n/**\n * Each PipelineRequest gets a unique id upon creation.\n * This policy passes that unique id along via an HTTP header to enable better\n * telemetry and tracing.\n * @param requestIdHeaderName - The name of the header to pass the request ID to.\n */\nfunction setClientRequestIdPolicy(requestIdHeaderName = \"x-ms-client-request-id\") {\n return {\n name: exports.setClientRequestIdPolicyName,\n async sendRequest(request, next) {\n if (!request.headers.has(requestIdHeaderName)) {\n request.headers.set(requestIdHeaderName, request.requestId);\n }\n return next(request);\n },\n };\n}\n//# sourceMappingURL=setClientRequestIdPolicy.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.agentPolicyName = void 0;\nexports.agentPolicy = agentPolicy;\nconst policies_1 = require(\"@typespec/ts-http-runtime/internal/policies\");\n/**\n * Name of the Agent Policy\n */\nexports.agentPolicyName = policies_1.agentPolicyName;\n/**\n * Gets a pipeline policy that sets http.agent\n */\nfunction agentPolicy(agent) {\n return (0, policies_1.agentPolicy)(agent);\n}\n//# sourceMappingURL=agentPolicy.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.tlsPolicyName = void 0;\nexports.tlsPolicy = tlsPolicy;\nconst policies_1 = require(\"@typespec/ts-http-runtime/internal/policies\");\n/**\n * Name of the TLS Policy\n */\nexports.tlsPolicyName = policies_1.tlsPolicyName;\n/**\n * Gets a pipeline policy that adds the client certificate to the HttpClient agent for authentication.\n */\nfunction tlsPolicy(tlsSettings) {\n return (0, policies_1.tlsPolicy)(tlsSettings);\n}\n//# sourceMappingURL=tlsPolicy.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.TracingContextImpl = exports.knownContextKeys = void 0;\nexports.createTracingContext = createTracingContext;\n/** @internal */\nexports.knownContextKeys = {\n span: Symbol.for(\"@azure/core-tracing span\"),\n namespace: Symbol.for(\"@azure/core-tracing namespace\"),\n};\n/**\n * Creates a new {@link TracingContext} with the given options.\n * @param options - A set of known keys that may be set on the context.\n * @returns A new {@link TracingContext} with the given options.\n *\n * @internal\n */\nfunction createTracingContext(options = {}) {\n let context = new TracingContextImpl(options.parentContext);\n if (options.span) {\n context = context.setValue(exports.knownContextKeys.span, options.span);\n }\n if (options.namespace) {\n context = context.setValue(exports.knownContextKeys.namespace, options.namespace);\n }\n return context;\n}\n/** @internal */\nclass TracingContextImpl {\n _contextMap;\n constructor(initialContext) {\n this._contextMap =\n initialContext instanceof TracingContextImpl\n ? new Map(initialContext._contextMap)\n : new Map();\n }\n setValue(key, value) {\n const newContext = new TracingContextImpl(this);\n newContext._contextMap.set(key, value);\n return newContext;\n }\n getValue(key) {\n return this._contextMap.get(key);\n }\n deleteValue(key) {\n const newContext = new TracingContextImpl(this);\n newContext._contextMap.delete(key);\n return newContext;\n }\n}\nexports.TracingContextImpl = TracingContextImpl;\n//# sourceMappingURL=tracingContext.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.state = void 0;\n/**\n * @internal\n *\n * Holds the singleton instrumenter, to be shared across CJS and ESM imports.\n */\nexports.state = {\n instrumenterImplementation: undefined,\n};\n//# sourceMappingURL=state-cjs.cjs.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.createDefaultTracingSpan = createDefaultTracingSpan;\nexports.createDefaultInstrumenter = createDefaultInstrumenter;\nexports.useInstrumenter = useInstrumenter;\nexports.getInstrumenter = getInstrumenter;\nconst tracingContext_js_1 = require(\"./tracingContext.js\");\nconst state_js_1 = require(\"./state.js\");\nfunction createDefaultTracingSpan() {\n return {\n end: () => {\n // noop\n },\n isRecording: () => false,\n recordException: () => {\n // noop\n },\n setAttribute: () => {\n // noop\n },\n setStatus: () => {\n // noop\n },\n addEvent: () => {\n // noop\n },\n };\n}\nfunction createDefaultInstrumenter() {\n return {\n createRequestHeaders: () => {\n return {};\n },\n parseTraceparentHeader: () => {\n return undefined;\n },\n startSpan: (_name, spanOptions) => {\n return {\n span: createDefaultTracingSpan(),\n tracingContext: (0, tracingContext_js_1.createTracingContext)({ parentContext: spanOptions.tracingContext }),\n };\n },\n withContext(_context, callback, ...callbackArgs) {\n return callback(...callbackArgs);\n },\n };\n}\n/**\n * Extends the Azure SDK with support for a given instrumenter implementation.\n *\n * @param instrumenter - The instrumenter implementation to use.\n */\nfunction useInstrumenter(instrumenter) {\n state_js_1.state.instrumenterImplementation = instrumenter;\n}\n/**\n * Gets the currently set instrumenter, a No-Op instrumenter by default.\n *\n * @returns The currently set instrumenter\n */\nfunction getInstrumenter() {\n if (!state_js_1.state.instrumenterImplementation) {\n state_js_1.state.instrumenterImplementation = createDefaultInstrumenter();\n }\n return state_js_1.state.instrumenterImplementation;\n}\n//# sourceMappingURL=instrumenter.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.createTracingClient = createTracingClient;\nconst instrumenter_js_1 = require(\"./instrumenter.js\");\nconst tracingContext_js_1 = require(\"./tracingContext.js\");\n/**\n * Creates a new tracing client.\n *\n * @param options - Options used to configure the tracing client.\n * @returns - An instance of {@link TracingClient}.\n */\nfunction createTracingClient(options) {\n const { namespace, packageName, packageVersion } = options;\n function startSpan(name, operationOptions, spanOptions) {\n const startSpanResult = (0, instrumenter_js_1.getInstrumenter)().startSpan(name, {\n ...spanOptions,\n packageName: packageName,\n packageVersion: packageVersion,\n tracingContext: operationOptions?.tracingOptions?.tracingContext,\n });\n let tracingContext = startSpanResult.tracingContext;\n const span = startSpanResult.span;\n if (!tracingContext.getValue(tracingContext_js_1.knownContextKeys.namespace)) {\n tracingContext = tracingContext.setValue(tracingContext_js_1.knownContextKeys.namespace, namespace);\n }\n span.setAttribute(\"az.namespace\", tracingContext.getValue(tracingContext_js_1.knownContextKeys.namespace));\n const updatedOptions = Object.assign({}, operationOptions, {\n tracingOptions: { ...operationOptions?.tracingOptions, tracingContext },\n });\n return {\n span,\n updatedOptions,\n };\n }\n async function withSpan(name, operationOptions, callback, spanOptions) {\n const { span, updatedOptions } = startSpan(name, operationOptions, spanOptions);\n try {\n const result = await withContext(updatedOptions.tracingOptions.tracingContext, () => Promise.resolve(callback(updatedOptions, span)));\n span.setStatus({ status: \"success\" });\n return result;\n }\n catch (err) {\n span.setStatus({ status: \"error\", error: err });\n throw err;\n }\n finally {\n span.end();\n }\n }\n function withContext(context, callback, ...callbackArgs) {\n return (0, instrumenter_js_1.getInstrumenter)().withContext(context, callback, ...callbackArgs);\n }\n /**\n * Parses a traceparent header value into a span identifier.\n *\n * @param traceparentHeader - The traceparent header to parse.\n * @returns An implementation-specific identifier for the span.\n */\n function parseTraceparentHeader(traceparentHeader) {\n return (0, instrumenter_js_1.getInstrumenter)().parseTraceparentHeader(traceparentHeader);\n }\n /**\n * Creates a set of request headers to propagate tracing information to a backend.\n *\n * @param tracingContext - The context containing the span to serialize.\n * @returns The set of headers to add to a request.\n */\n function createRequestHeaders(tracingContext) {\n return (0, instrumenter_js_1.getInstrumenter)().createRequestHeaders(tracingContext);\n }\n return {\n startSpan,\n withSpan,\n withContext,\n parseTraceparentHeader,\n createRequestHeaders,\n };\n}\n//# sourceMappingURL=tracingClient.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.createTracingClient = exports.useInstrumenter = void 0;\nvar instrumenter_js_1 = require(\"./instrumenter.js\");\nObject.defineProperty(exports, \"useInstrumenter\", { enumerable: true, get: function () { return instrumenter_js_1.useInstrumenter; } });\nvar tracingClient_js_1 = require(\"./tracingClient.js\");\nObject.defineProperty(exports, \"createTracingClient\", { enumerable: true, get: function () { return tracingClient_js_1.createTracingClient; } });\n//# sourceMappingURL=index.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.RestError = void 0;\nexports.isRestError = isRestError;\nconst ts_http_runtime_1 = require(\"@typespec/ts-http-runtime\");\n/**\n * A custom error type for failed pipeline requests.\n */\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexports.RestError = ts_http_runtime_1.RestError;\n/**\n * Typeguard for RestError\n * @param e - Something caught by a catch clause.\n */\nfunction isRestError(e) {\n return (0, ts_http_runtime_1.isRestError)(e);\n}\n//# sourceMappingURL=restError.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.tracingPolicyName = void 0;\nexports.tracingPolicy = tracingPolicy;\nconst core_tracing_1 = require(\"@azure/core-tracing\");\nconst constants_js_1 = require(\"../constants.js\");\nconst userAgent_js_1 = require(\"../util/userAgent.js\");\nconst log_js_1 = require(\"../log.js\");\nconst core_util_1 = require(\"@azure/core-util\");\nconst restError_js_1 = require(\"../restError.js\");\nconst util_1 = require(\"@typespec/ts-http-runtime/internal/util\");\n/**\n * The programmatic identifier of the tracingPolicy.\n */\nexports.tracingPolicyName = \"tracingPolicy\";\n/**\n * A simple policy to create OpenTelemetry Spans for each request made by the pipeline\n * that has SpanOptions with a parent.\n * Requests made without a parent Span will not be recorded.\n * @param options - Options to configure the telemetry logged by the tracing policy.\n */\nfunction tracingPolicy(options = {}) {\n const userAgentPromise = (0, userAgent_js_1.getUserAgentValue)(options.userAgentPrefix);\n const sanitizer = new util_1.Sanitizer({\n additionalAllowedQueryParameters: options.additionalAllowedQueryParameters,\n });\n const tracingClient = tryCreateTracingClient();\n return {\n name: exports.tracingPolicyName,\n async sendRequest(request, next) {\n if (!tracingClient) {\n return next(request);\n }\n const userAgent = await userAgentPromise;\n const spanAttributes = {\n \"http.url\": sanitizer.sanitizeUrl(request.url),\n \"http.method\": request.method,\n \"http.user_agent\": userAgent,\n requestId: request.requestId,\n };\n if (userAgent) {\n spanAttributes[\"http.user_agent\"] = userAgent;\n }\n const { span, tracingContext } = tryCreateSpan(tracingClient, request, spanAttributes) ?? {};\n if (!span || !tracingContext) {\n return next(request);\n }\n try {\n const response = await tracingClient.withContext(tracingContext, next, request);\n tryProcessResponse(span, response);\n return response;\n }\n catch (err) {\n tryProcessError(span, err);\n throw err;\n }\n },\n };\n}\nfunction tryCreateTracingClient() {\n try {\n return (0, core_tracing_1.createTracingClient)({\n namespace: \"\",\n packageName: \"@azure/core-rest-pipeline\",\n packageVersion: constants_js_1.SDK_VERSION,\n });\n }\n catch (e) {\n log_js_1.logger.warning(`Error when creating the TracingClient: ${(0, core_util_1.getErrorMessage)(e)}`);\n return undefined;\n }\n}\nfunction tryCreateSpan(tracingClient, request, spanAttributes) {\n try {\n // As per spec, we do not need to differentiate between HTTP and HTTPS in span name.\n const { span, updatedOptions } = tracingClient.startSpan(`HTTP ${request.method}`, { tracingOptions: request.tracingOptions }, {\n spanKind: \"client\",\n spanAttributes,\n });\n // If the span is not recording, don't do any more work.\n if (!span.isRecording()) {\n span.end();\n return undefined;\n }\n // set headers\n const headers = tracingClient.createRequestHeaders(updatedOptions.tracingOptions.tracingContext);\n for (const [key, value] of Object.entries(headers)) {\n request.headers.set(key, value);\n }\n return { span, tracingContext: updatedOptions.tracingOptions.tracingContext };\n }\n catch (e) {\n log_js_1.logger.warning(`Skipping creating a tracing span due to an error: ${(0, core_util_1.getErrorMessage)(e)}`);\n return undefined;\n }\n}\nfunction tryProcessError(span, error) {\n try {\n span.setStatus({\n status: \"error\",\n error: (0, core_util_1.isError)(error) ? error : undefined,\n });\n if ((0, restError_js_1.isRestError)(error) && error.statusCode) {\n span.setAttribute(\"http.status_code\", error.statusCode);\n }\n span.end();\n }\n catch (e) {\n log_js_1.logger.warning(`Skipping tracing span processing due to an error: ${(0, core_util_1.getErrorMessage)(e)}`);\n }\n}\nfunction tryProcessResponse(span, response) {\n try {\n span.setAttribute(\"http.status_code\", response.status);\n const serviceRequestId = response.headers.get(\"x-ms-request-id\");\n if (serviceRequestId) {\n span.setAttribute(\"serviceRequestId\", serviceRequestId);\n }\n // Per semantic conventions, only set the status to error if the status code is 4xx or 5xx.\n // Otherwise, the status MUST remain unset.\n // https://opentelemetry.io/docs/specs/semconv/http/http-spans/#status\n if (response.status >= 400) {\n span.setStatus({\n status: \"error\",\n });\n }\n span.end();\n }\n catch (e) {\n log_js_1.logger.warning(`Skipping tracing span processing due to an error: ${(0, core_util_1.getErrorMessage)(e)}`);\n }\n}\n//# sourceMappingURL=tracingPolicy.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.wrapAbortSignalLike = wrapAbortSignalLike;\n/**\n * Creates a native AbortSignal which reflects the state of the provided AbortSignalLike.\n * If the AbortSignalLike is already a native AbortSignal, it is returned as is.\n * @param abortSignalLike - The AbortSignalLike to wrap.\n * @returns - An object containing the native AbortSignal and an optional cleanup function. The cleanup function should be called when the AbortSignal is no longer needed.\n */\nfunction wrapAbortSignalLike(abortSignalLike) {\n if (abortSignalLike instanceof AbortSignal) {\n return { abortSignal: abortSignalLike };\n }\n if (abortSignalLike.aborted) {\n return { abortSignal: AbortSignal.abort(abortSignalLike.reason) };\n }\n const controller = new AbortController();\n let needsCleanup = true;\n function cleanup() {\n if (needsCleanup) {\n abortSignalLike.removeEventListener(\"abort\", listener);\n needsCleanup = false;\n }\n }\n function listener() {\n controller.abort(abortSignalLike.reason);\n cleanup();\n }\n abortSignalLike.addEventListener(\"abort\", listener);\n return { abortSignal: controller.signal, cleanup };\n}\n//# sourceMappingURL=wrapAbortSignal.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.wrapAbortSignalLikePolicyName = void 0;\nexports.wrapAbortSignalLikePolicy = wrapAbortSignalLikePolicy;\nconst wrapAbortSignal_js_1 = require(\"../util/wrapAbortSignal.js\");\nexports.wrapAbortSignalLikePolicyName = \"wrapAbortSignalLikePolicy\";\n/**\n * Policy that ensure that any AbortSignalLike is wrapped in a native AbortSignal for processing by the pipeline.\n * Since the ts-http-runtime expects a native AbortSignal, this policy is used to ensure that any AbortSignalLike is wrapped in a native AbortSignal.\n *\n * @returns - created policy\n */\nfunction wrapAbortSignalLikePolicy() {\n return {\n name: exports.wrapAbortSignalLikePolicyName,\n sendRequest: async (request, next) => {\n if (!request.abortSignal) {\n return next(request);\n }\n const { abortSignal, cleanup } = (0, wrapAbortSignal_js_1.wrapAbortSignalLike)(request.abortSignal);\n request.abortSignal = abortSignal;\n try {\n return await next(request);\n }\n finally {\n cleanup?.();\n }\n },\n };\n}\n//# sourceMappingURL=wrapAbortSignalLikePolicy.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.createPipelineFromOptions = createPipelineFromOptions;\nconst logPolicy_js_1 = require(\"./policies/logPolicy.js\");\nconst pipeline_js_1 = require(\"./pipeline.js\");\nconst redirectPolicy_js_1 = require(\"./policies/redirectPolicy.js\");\nconst userAgentPolicy_js_1 = require(\"./policies/userAgentPolicy.js\");\nconst multipartPolicy_js_1 = require(\"./policies/multipartPolicy.js\");\nconst decompressResponsePolicy_js_1 = require(\"./policies/decompressResponsePolicy.js\");\nconst defaultRetryPolicy_js_1 = require(\"./policies/defaultRetryPolicy.js\");\nconst formDataPolicy_js_1 = require(\"./policies/formDataPolicy.js\");\nconst core_util_1 = require(\"@azure/core-util\");\nconst proxyPolicy_js_1 = require(\"./policies/proxyPolicy.js\");\nconst setClientRequestIdPolicy_js_1 = require(\"./policies/setClientRequestIdPolicy.js\");\nconst agentPolicy_js_1 = require(\"./policies/agentPolicy.js\");\nconst tlsPolicy_js_1 = require(\"./policies/tlsPolicy.js\");\nconst tracingPolicy_js_1 = require(\"./policies/tracingPolicy.js\");\nconst wrapAbortSignalLikePolicy_js_1 = require(\"./policies/wrapAbortSignalLikePolicy.js\");\n/**\n * Create a new pipeline with a default set of customizable policies.\n * @param options - Options to configure a custom pipeline.\n */\nfunction createPipelineFromOptions(options) {\n const pipeline = (0, pipeline_js_1.createEmptyPipeline)();\n if (core_util_1.isNodeLike) {\n if (options.agent) {\n pipeline.addPolicy((0, agentPolicy_js_1.agentPolicy)(options.agent));\n }\n if (options.tlsOptions) {\n pipeline.addPolicy((0, tlsPolicy_js_1.tlsPolicy)(options.tlsOptions));\n }\n pipeline.addPolicy((0, proxyPolicy_js_1.proxyPolicy)(options.proxyOptions));\n pipeline.addPolicy((0, decompressResponsePolicy_js_1.decompressResponsePolicy)());\n }\n pipeline.addPolicy((0, wrapAbortSignalLikePolicy_js_1.wrapAbortSignalLikePolicy)());\n pipeline.addPolicy((0, formDataPolicy_js_1.formDataPolicy)(), { beforePolicies: [multipartPolicy_js_1.multipartPolicyName] });\n pipeline.addPolicy((0, userAgentPolicy_js_1.userAgentPolicy)(options.userAgentOptions));\n pipeline.addPolicy((0, setClientRequestIdPolicy_js_1.setClientRequestIdPolicy)(options.telemetryOptions?.clientRequestIdHeaderName));\n // The multipart policy is added after policies with no phase, so that\n // policies can be added between it and formDataPolicy to modify\n // properties (e.g., making the boundary constant in recorded tests).\n pipeline.addPolicy((0, multipartPolicy_js_1.multipartPolicy)(), { afterPhase: \"Deserialize\" });\n pipeline.addPolicy((0, defaultRetryPolicy_js_1.defaultRetryPolicy)(options.retryOptions), { phase: \"Retry\" });\n pipeline.addPolicy((0, tracingPolicy_js_1.tracingPolicy)({ ...options.userAgentOptions, ...options.loggingOptions }), {\n afterPhase: \"Retry\",\n });\n if (core_util_1.isNodeLike) {\n // Both XHR and Fetch expect to handle redirects automatically,\n // so only include this policy when we're in Node.\n pipeline.addPolicy((0, redirectPolicy_js_1.redirectPolicy)(options.redirectOptions), { afterPhase: \"Retry\" });\n }\n pipeline.addPolicy((0, logPolicy_js_1.logPolicy)(options.loggingOptions), { afterPhase: \"Sign\" });\n return pipeline;\n}\n//# sourceMappingURL=createPipelineFromOptions.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.createDefaultHttpClient = createDefaultHttpClient;\nconst ts_http_runtime_1 = require(\"@typespec/ts-http-runtime\");\nconst wrapAbortSignal_js_1 = require(\"./util/wrapAbortSignal.js\");\n/**\n * Create the correct HttpClient for the current environment.\n */\nfunction createDefaultHttpClient() {\n const client = (0, ts_http_runtime_1.createDefaultHttpClient)();\n return {\n async sendRequest(request) {\n // we wrap any AbortSignalLike here since the TypeSpec runtime expects a native AbortSignal.\n // 99% of the time, this should be a no-op since a native AbortSignal is passed in.\n const { abortSignal, cleanup } = request.abortSignal\n ? (0, wrapAbortSignal_js_1.wrapAbortSignalLike)(request.abortSignal)\n : {};\n try {\n request.abortSignal = abortSignal;\n return await client.sendRequest(request);\n }\n finally {\n cleanup?.();\n }\n },\n };\n}\n//# sourceMappingURL=defaultHttpClient.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.createHttpHeaders = createHttpHeaders;\nconst ts_http_runtime_1 = require(\"@typespec/ts-http-runtime\");\n/**\n * Creates an object that satisfies the `HttpHeaders` interface.\n * @param rawHeaders - A simple object representing initial headers\n */\nfunction createHttpHeaders(rawHeaders) {\n return (0, ts_http_runtime_1.createHttpHeaders)(rawHeaders);\n}\n//# sourceMappingURL=httpHeaders.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.createPipelineRequest = createPipelineRequest;\nconst ts_http_runtime_1 = require(\"@typespec/ts-http-runtime\");\n/**\n * Creates a new pipeline request with the given options.\n * This method is to allow for the easy setting of default values and not required.\n * @param options - The options to create the request with.\n */\nfunction createPipelineRequest(options) {\n // Cast required due to difference between ts-http-runtime requiring AbortSignal while core-rest-pipeline allows\n // the more generic AbortSignalLike. The wrapAbortSignalLike pipeline policy will take care of ensuring that any AbortSignalLike in the request\n // is converted into a true AbortSignal.\n return (0, ts_http_runtime_1.createPipelineRequest)(options);\n}\n//# sourceMappingURL=pipelineRequest.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.exponentialRetryPolicyName = void 0;\nexports.exponentialRetryPolicy = exponentialRetryPolicy;\nconst policies_1 = require(\"@typespec/ts-http-runtime/internal/policies\");\n/**\n * The programmatic identifier of the exponentialRetryPolicy.\n */\nexports.exponentialRetryPolicyName = policies_1.exponentialRetryPolicyName;\n/**\n * A policy that attempts to retry requests while introducing an exponentially increasing delay.\n * @param options - Options that configure retry logic.\n */\nfunction exponentialRetryPolicy(options = {}) {\n return (0, policies_1.exponentialRetryPolicy)(options);\n}\n//# sourceMappingURL=exponentialRetryPolicy.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.systemErrorRetryPolicyName = void 0;\nexports.systemErrorRetryPolicy = systemErrorRetryPolicy;\nconst policies_1 = require(\"@typespec/ts-http-runtime/internal/policies\");\n/**\n * Name of the {@link systemErrorRetryPolicy}\n */\nexports.systemErrorRetryPolicyName = policies_1.systemErrorRetryPolicyName;\n/**\n * A retry policy that specifically seeks to handle errors in the\n * underlying transport layer (e.g. DNS lookup failures) rather than\n * retryable error codes from the server itself.\n * @param options - Options that customize the policy.\n */\nfunction systemErrorRetryPolicy(options = {}) {\n return (0, policies_1.systemErrorRetryPolicy)(options);\n}\n//# sourceMappingURL=systemErrorRetryPolicy.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.throttlingRetryPolicyName = void 0;\nexports.throttlingRetryPolicy = throttlingRetryPolicy;\nconst policies_1 = require(\"@typespec/ts-http-runtime/internal/policies\");\n/**\n * Name of the {@link throttlingRetryPolicy}\n */\nexports.throttlingRetryPolicyName = policies_1.throttlingRetryPolicyName;\n/**\n * A policy that retries when the server sends a 429 response with a Retry-After header.\n *\n * To learn more, please refer to\n * https://learn.microsoft.com/azure/azure-resource-manager/resource-manager-request-limits,\n * https://learn.microsoft.com/azure/azure-subscription-service-limits and\n * https://learn.microsoft.com/azure/virtual-machines/troubleshooting/troubleshooting-throttling-errors\n *\n * @param options - Options that configure retry logic.\n */\nfunction throttlingRetryPolicy(options = {}) {\n return (0, policies_1.throttlingRetryPolicy)(options);\n}\n//# sourceMappingURL=throttlingRetryPolicy.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.retryPolicy = retryPolicy;\nconst logger_1 = require(\"@azure/logger\");\nconst constants_js_1 = require(\"../constants.js\");\nconst policies_1 = require(\"@typespec/ts-http-runtime/internal/policies\");\nconst retryPolicyLogger = (0, logger_1.createClientLogger)(\"core-rest-pipeline retryPolicy\");\n/**\n * retryPolicy is a generic policy to enable retrying requests when certain conditions are met\n */\nfunction retryPolicy(strategies, options = { maxRetries: constants_js_1.DEFAULT_RETRY_POLICY_COUNT }) {\n // Cast is required since the TSP runtime retry strategy type is slightly different\n // very deep down (using real AbortSignal vs. AbortSignalLike in RestError).\n // In practice the difference doesn't actually matter.\n return (0, policies_1.retryPolicy)(strategies, {\n logger: retryPolicyLogger,\n ...options,\n });\n}\n//# sourceMappingURL=retryPolicy.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.DEFAULT_CYCLER_OPTIONS = void 0;\nexports.createTokenCycler = createTokenCycler;\nconst core_util_1 = require(\"@azure/core-util\");\n// Default options for the cycler if none are provided\nexports.DEFAULT_CYCLER_OPTIONS = {\n forcedRefreshWindowInMs: 1000, // Force waiting for a refresh 1s before the token expires\n retryIntervalInMs: 3000, // Allow refresh attempts every 3s\n refreshWindowInMs: 1000 * 60 * 2, // Start refreshing 2m before expiry\n};\n/**\n * Converts an an unreliable access token getter (which may resolve with null)\n * into an AccessTokenGetter by retrying the unreliable getter in a regular\n * interval.\n *\n * @param getAccessToken - A function that produces a promise of an access token that may fail by returning null.\n * @param retryIntervalInMs - The time (in milliseconds) to wait between retry attempts.\n * @param refreshTimeout - The timestamp after which the refresh attempt will fail, throwing an exception.\n * @returns - A promise that, if it resolves, will resolve with an access token.\n */\nasync function beginRefresh(getAccessToken, retryIntervalInMs, refreshTimeout) {\n // This wrapper handles exceptions gracefully as long as we haven't exceeded\n // the timeout.\n async function tryGetAccessToken() {\n if (Date.now() < refreshTimeout) {\n try {\n return await getAccessToken();\n }\n catch {\n return null;\n }\n }\n else {\n const finalToken = await getAccessToken();\n // Timeout is up, so throw if it's still null\n if (finalToken === null) {\n throw new Error(\"Failed to refresh access token.\");\n }\n return finalToken;\n }\n }\n let token = await tryGetAccessToken();\n while (token === null) {\n await (0, core_util_1.delay)(retryIntervalInMs);\n token = await tryGetAccessToken();\n }\n return token;\n}\n/**\n * Creates a token cycler from a credential, scopes, and optional settings.\n *\n * A token cycler represents a way to reliably retrieve a valid access token\n * from a TokenCredential. It will handle initializing the token, refreshing it\n * when it nears expiration, and synchronizes refresh attempts to avoid\n * concurrency hazards.\n *\n * @param credential - the underlying TokenCredential that provides the access\n * token\n * @param tokenCyclerOptions - optionally override default settings for the cycler\n *\n * @returns - a function that reliably produces a valid access token\n */\nfunction createTokenCycler(credential, tokenCyclerOptions) {\n let refreshWorker = null;\n let token = null;\n let tenantId;\n const options = {\n ...exports.DEFAULT_CYCLER_OPTIONS,\n ...tokenCyclerOptions,\n };\n /**\n * This little holder defines several predicates that we use to construct\n * the rules of refreshing the token.\n */\n const cycler = {\n /**\n * Produces true if a refresh job is currently in progress.\n */\n get isRefreshing() {\n return refreshWorker !== null;\n },\n /**\n * Produces true if the cycler SHOULD refresh (we are within the refresh\n * window and not already refreshing)\n */\n get shouldRefresh() {\n if (cycler.isRefreshing) {\n return false;\n }\n if (token?.refreshAfterTimestamp && token.refreshAfterTimestamp < Date.now()) {\n return true;\n }\n return (token?.expiresOnTimestamp ?? 0) - options.refreshWindowInMs < Date.now();\n },\n /**\n * Produces true if the cycler MUST refresh (null or nearly-expired\n * token).\n */\n get mustRefresh() {\n return (token === null || token.expiresOnTimestamp - options.forcedRefreshWindowInMs < Date.now());\n },\n };\n /**\n * Starts a refresh job or returns the existing job if one is already\n * running.\n */\n function refresh(scopes, getTokenOptions) {\n if (!cycler.isRefreshing) {\n // We bind `scopes` here to avoid passing it around a lot\n const tryGetAccessToken = () => credential.getToken(scopes, getTokenOptions);\n // Take advantage of promise chaining to insert an assignment to `token`\n // before the refresh can be considered done.\n refreshWorker = beginRefresh(tryGetAccessToken, options.retryIntervalInMs, \n // If we don't have a token, then we should timeout immediately\n token?.expiresOnTimestamp ?? Date.now())\n .then((_token) => {\n refreshWorker = null;\n token = _token;\n tenantId = getTokenOptions.tenantId;\n return token;\n })\n .catch((reason) => {\n // We also should reset the refresher if we enter a failed state. All\n // existing awaiters will throw, but subsequent requests will start a\n // new retry chain.\n refreshWorker = null;\n token = null;\n tenantId = undefined;\n throw reason;\n });\n }\n return refreshWorker;\n }\n return async (scopes, tokenOptions) => {\n //\n // Simple rules:\n // - If we MUST refresh, then return the refresh task, blocking\n // the pipeline until a token is available.\n // - If we SHOULD refresh, then run refresh but don't return it\n // (we can still use the cached token).\n // - Return the token, since it's fine if we didn't return in\n // step 1.\n //\n const hasClaimChallenge = Boolean(tokenOptions.claims);\n const tenantIdChanged = tenantId !== tokenOptions.tenantId;\n if (hasClaimChallenge) {\n // If we've received a claim, we know the existing token isn't valid\n // We want to clear it so that that refresh worker won't use the old expiration time as a timeout\n token = null;\n }\n // If the tenantId passed in token options is different to the one we have\n // Or if we are in claim challenge and the token was rejected and a new access token need to be issued, we need to\n // refresh the token with the new tenantId or token.\n const mustRefresh = tenantIdChanged || hasClaimChallenge || cycler.mustRefresh;\n if (mustRefresh) {\n return refresh(scopes, tokenOptions);\n }\n if (cycler.shouldRefresh) {\n refresh(scopes, tokenOptions);\n }\n return token;\n };\n}\n//# sourceMappingURL=tokenCycler.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.bearerTokenAuthenticationPolicyName = void 0;\nexports.bearerTokenAuthenticationPolicy = bearerTokenAuthenticationPolicy;\nexports.parseChallenges = parseChallenges;\nconst tokenCycler_js_1 = require(\"../util/tokenCycler.js\");\nconst log_js_1 = require(\"../log.js\");\nconst restError_js_1 = require(\"../restError.js\");\n/**\n * The programmatic identifier of the bearerTokenAuthenticationPolicy.\n */\nexports.bearerTokenAuthenticationPolicyName = \"bearerTokenAuthenticationPolicy\";\n/**\n * Try to send the given request.\n *\n * When a response is received, returns a tuple of the response received and, if the response was received\n * inside a thrown RestError, the RestError that was thrown.\n *\n * Otherwise, if an error was thrown while sending the request that did not provide an underlying response, it\n * will be rethrown.\n */\nasync function trySendRequest(request, next) {\n try {\n return [await next(request), undefined];\n }\n catch (e) {\n if ((0, restError_js_1.isRestError)(e) && e.response) {\n return [e.response, e];\n }\n else {\n throw e;\n }\n }\n}\n/**\n * Default authorize request handler\n */\nasync function defaultAuthorizeRequest(options) {\n const { scopes, getAccessToken, request } = options;\n // Enable CAE true by default\n const getTokenOptions = {\n abortSignal: request.abortSignal,\n tracingOptions: request.tracingOptions,\n enableCae: true,\n };\n const accessToken = await getAccessToken(scopes, getTokenOptions);\n if (accessToken) {\n options.request.headers.set(\"Authorization\", `Bearer ${accessToken.token}`);\n }\n}\n/**\n * We will retrieve the challenge only if the response status code was 401,\n * and if the response contained the header \"WWW-Authenticate\" with a non-empty value.\n */\nfunction isChallengeResponse(response) {\n return response.status === 401 && response.headers.has(\"WWW-Authenticate\");\n}\n/**\n * Re-authorize the request for CAE challenge.\n * The response containing the challenge is `options.response`.\n * If this method returns true, the underlying request will be sent once again.\n */\nasync function authorizeRequestOnCaeChallenge(onChallengeOptions, caeClaims) {\n const { scopes } = onChallengeOptions;\n const accessToken = await onChallengeOptions.getAccessToken(scopes, {\n enableCae: true,\n claims: caeClaims,\n });\n if (!accessToken) {\n return false;\n }\n onChallengeOptions.request.headers.set(\"Authorization\", `${accessToken.tokenType ?? \"Bearer\"} ${accessToken.token}`);\n return true;\n}\n/**\n * A policy that can request a token from a TokenCredential implementation and\n * then apply it to the Authorization header of a request as a Bearer token.\n */\nfunction bearerTokenAuthenticationPolicy(options) {\n const { credential, scopes, challengeCallbacks } = options;\n const logger = options.logger || log_js_1.logger;\n const callbacks = {\n authorizeRequest: challengeCallbacks?.authorizeRequest?.bind(challengeCallbacks) ?? defaultAuthorizeRequest,\n authorizeRequestOnChallenge: challengeCallbacks?.authorizeRequestOnChallenge?.bind(challengeCallbacks),\n };\n // This function encapsulates the entire process of reliably retrieving the token\n // The options are left out of the public API until there's demand to configure this.\n // Remember to extend `BearerTokenAuthenticationPolicyOptions` with `TokenCyclerOptions`\n // in order to pass through the `options` object.\n const getAccessToken = credential\n ? (0, tokenCycler_js_1.createTokenCycler)(credential /* , options */)\n : () => Promise.resolve(null);\n return {\n name: exports.bearerTokenAuthenticationPolicyName,\n /**\n * If there's no challenge parameter:\n * - It will try to retrieve the token using the cache, or the credential's getToken.\n * - Then it will try the next policy with or without the retrieved token.\n *\n * It uses the challenge parameters to:\n * - Skip a first attempt to get the token from the credential if there's no cached token,\n * since it expects the token to be retrievable only after the challenge.\n * - Prepare the outgoing request if the `prepareRequest` method has been provided.\n * - Send an initial request to receive the challenge if it fails.\n * - Process a challenge if the response contains it.\n * - Retrieve a token with the challenge information, then re-send the request.\n */\n async sendRequest(request, next) {\n if (!request.url.toLowerCase().startsWith(\"https://\")) {\n throw new Error(\"Bearer token authentication is not permitted for non-TLS protected (non-https) URLs.\");\n }\n await callbacks.authorizeRequest({\n scopes: Array.isArray(scopes) ? scopes : [scopes],\n request,\n getAccessToken,\n logger,\n });\n let response;\n let error;\n let shouldSendRequest;\n [response, error] = await trySendRequest(request, next);\n if (isChallengeResponse(response)) {\n let claims = getCaeChallengeClaims(response.headers.get(\"WWW-Authenticate\"));\n // Handle CAE by default when receive CAE claim\n if (claims) {\n let parsedClaim;\n // Return the response immediately if claims is not a valid base64 encoded string\n try {\n parsedClaim = atob(claims);\n }\n catch (e) {\n logger.warning(`The WWW-Authenticate header contains \"claims\" that cannot be parsed. Unable to perform the Continuous Access Evaluation authentication flow. Unparsable claims: ${claims}`);\n return response;\n }\n shouldSendRequest = await authorizeRequestOnCaeChallenge({\n scopes: Array.isArray(scopes) ? scopes : [scopes],\n response,\n request,\n getAccessToken,\n logger,\n }, parsedClaim);\n // Send updated request and handle response for RestError\n if (shouldSendRequest) {\n [response, error] = await trySendRequest(request, next);\n }\n }\n else if (callbacks.authorizeRequestOnChallenge) {\n // Handle custom challenges when client provides custom callback\n shouldSendRequest = await callbacks.authorizeRequestOnChallenge({\n scopes: Array.isArray(scopes) ? scopes : [scopes],\n request,\n response,\n getAccessToken,\n logger,\n });\n // Send updated request and handle response for RestError\n if (shouldSendRequest) {\n [response, error] = await trySendRequest(request, next);\n }\n // If we get another CAE Claim, we will handle it by default and return whatever value we receive for this\n if (isChallengeResponse(response)) {\n claims = getCaeChallengeClaims(response.headers.get(\"WWW-Authenticate\"));\n if (claims) {\n let parsedClaim;\n try {\n parsedClaim = atob(claims);\n }\n catch (e) {\n logger.warning(`The WWW-Authenticate header contains \"claims\" that cannot be parsed. Unable to perform the Continuous Access Evaluation authentication flow. Unparsable claims: ${claims}`);\n return response;\n }\n shouldSendRequest = await authorizeRequestOnCaeChallenge({\n scopes: Array.isArray(scopes) ? scopes : [scopes],\n response,\n request,\n getAccessToken,\n logger,\n }, parsedClaim);\n // Send updated request and handle response for RestError\n if (shouldSendRequest) {\n [response, error] = await trySendRequest(request, next);\n }\n }\n }\n }\n }\n if (error) {\n throw error;\n }\n else {\n return response;\n }\n },\n };\n}\n/**\n * Converts: `Bearer a=\"b\", c=\"d\", Pop e=\"f\", g=\"h\"`.\n * Into: `[ { scheme: 'Bearer', params: { a: 'b', c: 'd' } }, { scheme: 'Pop', params: { e: 'f', g: 'h' } } ]`.\n *\n * @internal\n */\nfunction parseChallenges(challenges) {\n // Challenge regex seperates the string to individual challenges with different schemes in the format `Scheme a=\"b\", c=d`\n // The challenge regex captures parameteres with either quotes values or unquoted values\n const challengeRegex = /(\\w+)\\s+((?:\\w+=(?:\"[^\"]*\"|[^,]*),?\\s*)+)/g;\n // Parameter regex captures the claims group removed from the scheme in the format `a=\"b\"` and `c=\"d\"`\n // CAE challenge always have quoted parameters. For more reference, https://learn.microsoft.com/entra/identity-platform/claims-challenge\n const paramRegex = /(\\w+)=\"([^\"]*)\"/g;\n const parsedChallenges = [];\n let match;\n // Iterate over each challenge match\n while ((match = challengeRegex.exec(challenges)) !== null) {\n const scheme = match[1];\n const paramsString = match[2];\n const params = {};\n let paramMatch;\n // Iterate over each parameter match\n while ((paramMatch = paramRegex.exec(paramsString)) !== null) {\n params[paramMatch[1]] = paramMatch[2];\n }\n parsedChallenges.push({ scheme, params });\n }\n return parsedChallenges;\n}\n/**\n * Parse a pipeline response and look for a CAE challenge with \"Bearer\" scheme\n * Return the value in the header without parsing the challenge\n * @internal\n */\nfunction getCaeChallengeClaims(challenges) {\n if (!challenges) {\n return;\n }\n // Find all challenges present in the header\n const parsedChallenges = parseChallenges(challenges);\n return parsedChallenges.find((x) => x.scheme === \"Bearer\" && x.params.claims && x.params.error === \"insufficient_claims\")?.params.claims;\n}\n//# sourceMappingURL=bearerTokenAuthenticationPolicy.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ndJsonPolicyName = void 0;\nexports.ndJsonPolicy = ndJsonPolicy;\n/**\n * The programmatic identifier of the ndJsonPolicy.\n */\nexports.ndJsonPolicyName = \"ndJsonPolicy\";\n/**\n * ndJsonPolicy is a policy used to control keep alive settings for every request.\n */\nfunction ndJsonPolicy() {\n return {\n name: exports.ndJsonPolicyName,\n async sendRequest(request, next) {\n // There currently isn't a good way to bypass the serializer\n if (typeof request.body === \"string\" && request.body.startsWith(\"[\")) {\n const body = JSON.parse(request.body);\n if (Array.isArray(body)) {\n request.body = body.map((item) => JSON.stringify(item) + \"\\n\").join(\"\");\n }\n }\n return next(request);\n },\n };\n}\n//# sourceMappingURL=ndJsonPolicy.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.auxiliaryAuthenticationHeaderPolicyName = void 0;\nexports.auxiliaryAuthenticationHeaderPolicy = auxiliaryAuthenticationHeaderPolicy;\nconst tokenCycler_js_1 = require(\"../util/tokenCycler.js\");\nconst log_js_1 = require(\"../log.js\");\n/**\n * The programmatic identifier of the auxiliaryAuthenticationHeaderPolicy.\n */\nexports.auxiliaryAuthenticationHeaderPolicyName = \"auxiliaryAuthenticationHeaderPolicy\";\nconst AUTHORIZATION_AUXILIARY_HEADER = \"x-ms-authorization-auxiliary\";\nasync function sendAuthorizeRequest(options) {\n const { scopes, getAccessToken, request } = options;\n const getTokenOptions = {\n abortSignal: request.abortSignal,\n tracingOptions: request.tracingOptions,\n };\n return (await getAccessToken(scopes, getTokenOptions))?.token ?? \"\";\n}\n/**\n * A policy for external tokens to `x-ms-authorization-auxiliary` header.\n * This header will be used when creating a cross-tenant application we may need to handle authentication requests\n * for resources that are in different tenants.\n * You could see [ARM docs](https://learn.microsoft.com/azure/azure-resource-manager/management/authenticate-multi-tenant) for a rundown of how this feature works\n */\nfunction auxiliaryAuthenticationHeaderPolicy(options) {\n const { credentials, scopes } = options;\n const logger = options.logger || log_js_1.logger;\n const tokenCyclerMap = new WeakMap();\n return {\n name: exports.auxiliaryAuthenticationHeaderPolicyName,\n async sendRequest(request, next) {\n if (!request.url.toLowerCase().startsWith(\"https://\")) {\n throw new Error(\"Bearer token authentication for auxiliary header is not permitted for non-TLS protected (non-https) URLs.\");\n }\n if (!credentials || credentials.length === 0) {\n logger.info(`${exports.auxiliaryAuthenticationHeaderPolicyName} header will not be set due to empty credentials.`);\n return next(request);\n }\n const tokenPromises = [];\n for (const credential of credentials) {\n let getAccessToken = tokenCyclerMap.get(credential);\n if (!getAccessToken) {\n getAccessToken = (0, tokenCycler_js_1.createTokenCycler)(credential);\n tokenCyclerMap.set(credential, getAccessToken);\n }\n tokenPromises.push(sendAuthorizeRequest({\n scopes: Array.isArray(scopes) ? scopes : [scopes],\n request,\n getAccessToken,\n logger,\n }));\n }\n const auxiliaryTokens = (await Promise.all(tokenPromises)).filter((token) => Boolean(token));\n if (auxiliaryTokens.length === 0) {\n logger.warning(`None of the auxiliary tokens are valid. ${AUTHORIZATION_AUXILIARY_HEADER} header will not be set.`);\n return next(request);\n }\n request.headers.set(AUTHORIZATION_AUXILIARY_HEADER, auxiliaryTokens.map((token) => `Bearer ${token}`).join(\", \"));\n return next(request);\n },\n };\n}\n//# sourceMappingURL=auxiliaryAuthenticationHeaderPolicy.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.createFileFromStream = exports.createFile = exports.agentPolicyName = exports.agentPolicy = exports.auxiliaryAuthenticationHeaderPolicyName = exports.auxiliaryAuthenticationHeaderPolicy = exports.ndJsonPolicyName = exports.ndJsonPolicy = exports.bearerTokenAuthenticationPolicyName = exports.bearerTokenAuthenticationPolicy = exports.formDataPolicyName = exports.formDataPolicy = exports.tlsPolicyName = exports.tlsPolicy = exports.userAgentPolicyName = exports.userAgentPolicy = exports.defaultRetryPolicy = exports.tracingPolicyName = exports.tracingPolicy = exports.retryPolicy = exports.throttlingRetryPolicyName = exports.throttlingRetryPolicy = exports.systemErrorRetryPolicyName = exports.systemErrorRetryPolicy = exports.redirectPolicyName = exports.redirectPolicy = exports.getDefaultProxySettings = exports.proxyPolicyName = exports.proxyPolicy = exports.multipartPolicyName = exports.multipartPolicy = exports.logPolicyName = exports.logPolicy = exports.setClientRequestIdPolicyName = exports.setClientRequestIdPolicy = exports.exponentialRetryPolicyName = exports.exponentialRetryPolicy = exports.decompressResponsePolicyName = exports.decompressResponsePolicy = exports.isRestError = exports.RestError = exports.createPipelineRequest = exports.createHttpHeaders = exports.createDefaultHttpClient = exports.createPipelineFromOptions = exports.createEmptyPipeline = void 0;\nvar pipeline_js_1 = require(\"./pipeline.js\");\nObject.defineProperty(exports, \"createEmptyPipeline\", { enumerable: true, get: function () { return pipeline_js_1.createEmptyPipeline; } });\nvar createPipelineFromOptions_js_1 = require(\"./createPipelineFromOptions.js\");\nObject.defineProperty(exports, \"createPipelineFromOptions\", { enumerable: true, get: function () { return createPipelineFromOptions_js_1.createPipelineFromOptions; } });\nvar defaultHttpClient_js_1 = require(\"./defaultHttpClient.js\");\nObject.defineProperty(exports, \"createDefaultHttpClient\", { enumerable: true, get: function () { return defaultHttpClient_js_1.createDefaultHttpClient; } });\nvar httpHeaders_js_1 = require(\"./httpHeaders.js\");\nObject.defineProperty(exports, \"createHttpHeaders\", { enumerable: true, get: function () { return httpHeaders_js_1.createHttpHeaders; } });\nvar pipelineRequest_js_1 = require(\"./pipelineRequest.js\");\nObject.defineProperty(exports, \"createPipelineRequest\", { enumerable: true, get: function () { return pipelineRequest_js_1.createPipelineRequest; } });\nvar restError_js_1 = require(\"./restError.js\");\nObject.defineProperty(exports, \"RestError\", { enumerable: true, get: function () { return restError_js_1.RestError; } });\nObject.defineProperty(exports, \"isRestError\", { enumerable: true, get: function () { return restError_js_1.isRestError; } });\nvar decompressResponsePolicy_js_1 = require(\"./policies/decompressResponsePolicy.js\");\nObject.defineProperty(exports, \"decompressResponsePolicy\", { enumerable: true, get: function () { return decompressResponsePolicy_js_1.decompressResponsePolicy; } });\nObject.defineProperty(exports, \"decompressResponsePolicyName\", { enumerable: true, get: function () { return decompressResponsePolicy_js_1.decompressResponsePolicyName; } });\nvar exponentialRetryPolicy_js_1 = require(\"./policies/exponentialRetryPolicy.js\");\nObject.defineProperty(exports, \"exponentialRetryPolicy\", { enumerable: true, get: function () { return exponentialRetryPolicy_js_1.exponentialRetryPolicy; } });\nObject.defineProperty(exports, \"exponentialRetryPolicyName\", { enumerable: true, get: function () { return exponentialRetryPolicy_js_1.exponentialRetryPolicyName; } });\nvar setClientRequestIdPolicy_js_1 = require(\"./policies/setClientRequestIdPolicy.js\");\nObject.defineProperty(exports, \"setClientRequestIdPolicy\", { enumerable: true, get: function () { return setClientRequestIdPolicy_js_1.setClientRequestIdPolicy; } });\nObject.defineProperty(exports, \"setClientRequestIdPolicyName\", { enumerable: true, get: function () { return setClientRequestIdPolicy_js_1.setClientRequestIdPolicyName; } });\nvar logPolicy_js_1 = require(\"./policies/logPolicy.js\");\nObject.defineProperty(exports, \"logPolicy\", { enumerable: true, get: function () { return logPolicy_js_1.logPolicy; } });\nObject.defineProperty(exports, \"logPolicyName\", { enumerable: true, get: function () { return logPolicy_js_1.logPolicyName; } });\nvar multipartPolicy_js_1 = require(\"./policies/multipartPolicy.js\");\nObject.defineProperty(exports, \"multipartPolicy\", { enumerable: true, get: function () { return multipartPolicy_js_1.multipartPolicy; } });\nObject.defineProperty(exports, \"multipartPolicyName\", { enumerable: true, get: function () { return multipartPolicy_js_1.multipartPolicyName; } });\nvar proxyPolicy_js_1 = require(\"./policies/proxyPolicy.js\");\nObject.defineProperty(exports, \"proxyPolicy\", { enumerable: true, get: function () { return proxyPolicy_js_1.proxyPolicy; } });\nObject.defineProperty(exports, \"proxyPolicyName\", { enumerable: true, get: function () { return proxyPolicy_js_1.proxyPolicyName; } });\nObject.defineProperty(exports, \"getDefaultProxySettings\", { enumerable: true, get: function () { return proxyPolicy_js_1.getDefaultProxySettings; } });\nvar redirectPolicy_js_1 = require(\"./policies/redirectPolicy.js\");\nObject.defineProperty(exports, \"redirectPolicy\", { enumerable: true, get: function () { return redirectPolicy_js_1.redirectPolicy; } });\nObject.defineProperty(exports, \"redirectPolicyName\", { enumerable: true, get: function () { return redirectPolicy_js_1.redirectPolicyName; } });\nvar systemErrorRetryPolicy_js_1 = require(\"./policies/systemErrorRetryPolicy.js\");\nObject.defineProperty(exports, \"systemErrorRetryPolicy\", { enumerable: true, get: function () { return systemErrorRetryPolicy_js_1.systemErrorRetryPolicy; } });\nObject.defineProperty(exports, \"systemErrorRetryPolicyName\", { enumerable: true, get: function () { return systemErrorRetryPolicy_js_1.systemErrorRetryPolicyName; } });\nvar throttlingRetryPolicy_js_1 = require(\"./policies/throttlingRetryPolicy.js\");\nObject.defineProperty(exports, \"throttlingRetryPolicy\", { enumerable: true, get: function () { return throttlingRetryPolicy_js_1.throttlingRetryPolicy; } });\nObject.defineProperty(exports, \"throttlingRetryPolicyName\", { enumerable: true, get: function () { return throttlingRetryPolicy_js_1.throttlingRetryPolicyName; } });\nvar retryPolicy_js_1 = require(\"./policies/retryPolicy.js\");\nObject.defineProperty(exports, \"retryPolicy\", { enumerable: true, get: function () { return retryPolicy_js_1.retryPolicy; } });\nvar tracingPolicy_js_1 = require(\"./policies/tracingPolicy.js\");\nObject.defineProperty(exports, \"tracingPolicy\", { enumerable: true, get: function () { return tracingPolicy_js_1.tracingPolicy; } });\nObject.defineProperty(exports, \"tracingPolicyName\", { enumerable: true, get: function () { return tracingPolicy_js_1.tracingPolicyName; } });\nvar defaultRetryPolicy_js_1 = require(\"./policies/defaultRetryPolicy.js\");\nObject.defineProperty(exports, \"defaultRetryPolicy\", { enumerable: true, get: function () { return defaultRetryPolicy_js_1.defaultRetryPolicy; } });\nvar userAgentPolicy_js_1 = require(\"./policies/userAgentPolicy.js\");\nObject.defineProperty(exports, \"userAgentPolicy\", { enumerable: true, get: function () { return userAgentPolicy_js_1.userAgentPolicy; } });\nObject.defineProperty(exports, \"userAgentPolicyName\", { enumerable: true, get: function () { return userAgentPolicy_js_1.userAgentPolicyName; } });\nvar tlsPolicy_js_1 = require(\"./policies/tlsPolicy.js\");\nObject.defineProperty(exports, \"tlsPolicy\", { enumerable: true, get: function () { return tlsPolicy_js_1.tlsPolicy; } });\nObject.defineProperty(exports, \"tlsPolicyName\", { enumerable: true, get: function () { return tlsPolicy_js_1.tlsPolicyName; } });\nvar formDataPolicy_js_1 = require(\"./policies/formDataPolicy.js\");\nObject.defineProperty(exports, \"formDataPolicy\", { enumerable: true, get: function () { return formDataPolicy_js_1.formDataPolicy; } });\nObject.defineProperty(exports, \"formDataPolicyName\", { enumerable: true, get: function () { return formDataPolicy_js_1.formDataPolicyName; } });\nvar bearerTokenAuthenticationPolicy_js_1 = require(\"./policies/bearerTokenAuthenticationPolicy.js\");\nObject.defineProperty(exports, \"bearerTokenAuthenticationPolicy\", { enumerable: true, get: function () { return bearerTokenAuthenticationPolicy_js_1.bearerTokenAuthenticationPolicy; } });\nObject.defineProperty(exports, \"bearerTokenAuthenticationPolicyName\", { enumerable: true, get: function () { return bearerTokenAuthenticationPolicy_js_1.bearerTokenAuthenticationPolicyName; } });\nvar ndJsonPolicy_js_1 = require(\"./policies/ndJsonPolicy.js\");\nObject.defineProperty(exports, \"ndJsonPolicy\", { enumerable: true, get: function () { return ndJsonPolicy_js_1.ndJsonPolicy; } });\nObject.defineProperty(exports, \"ndJsonPolicyName\", { enumerable: true, get: function () { return ndJsonPolicy_js_1.ndJsonPolicyName; } });\nvar auxiliaryAuthenticationHeaderPolicy_js_1 = require(\"./policies/auxiliaryAuthenticationHeaderPolicy.js\");\nObject.defineProperty(exports, \"auxiliaryAuthenticationHeaderPolicy\", { enumerable: true, get: function () { return auxiliaryAuthenticationHeaderPolicy_js_1.auxiliaryAuthenticationHeaderPolicy; } });\nObject.defineProperty(exports, \"auxiliaryAuthenticationHeaderPolicyName\", { enumerable: true, get: function () { return auxiliaryAuthenticationHeaderPolicy_js_1.auxiliaryAuthenticationHeaderPolicyName; } });\nvar agentPolicy_js_1 = require(\"./policies/agentPolicy.js\");\nObject.defineProperty(exports, \"agentPolicy\", { enumerable: true, get: function () { return agentPolicy_js_1.agentPolicy; } });\nObject.defineProperty(exports, \"agentPolicyName\", { enumerable: true, get: function () { return agentPolicy_js_1.agentPolicyName; } });\nvar file_js_1 = require(\"./util/file.js\");\nObject.defineProperty(exports, \"createFile\", { enumerable: true, get: function () { return file_js_1.createFile; } });\nObject.defineProperty(exports, \"createFileFromStream\", { enumerable: true, get: function () { return file_js_1.createFileFromStream; } });\n//# sourceMappingURL=index.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.state = void 0;\n/**\n * Holds the singleton operationRequestMap, to be shared across CJS and ESM imports.\n */\nexports.state = {\n operationRequestMap: new WeakMap(),\n};\n//# sourceMappingURL=state-cjs.cjs.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getOperationArgumentValueFromParameter = getOperationArgumentValueFromParameter;\nexports.getOperationRequestInfo = getOperationRequestInfo;\nconst state_js_1 = require(\"./state.js\");\n/**\n * @internal\n * Retrieves the value to use for a given operation argument\n * @param operationArguments - The arguments passed from the generated client\n * @param parameter - The parameter description\n * @param fallbackObject - If something isn't found in the arguments bag, look here.\n * Generally used to look at the service client properties.\n */\nfunction getOperationArgumentValueFromParameter(operationArguments, parameter, fallbackObject) {\n let parameterPath = parameter.parameterPath;\n const parameterMapper = parameter.mapper;\n let value;\n if (typeof parameterPath === \"string\") {\n parameterPath = [parameterPath];\n }\n if (Array.isArray(parameterPath)) {\n if (parameterPath.length > 0) {\n if (parameterMapper.isConstant) {\n value = parameterMapper.defaultValue;\n }\n else {\n let propertySearchResult = getPropertyFromParameterPath(operationArguments, parameterPath);\n if (!propertySearchResult.propertyFound && fallbackObject) {\n propertySearchResult = getPropertyFromParameterPath(fallbackObject, parameterPath);\n }\n let useDefaultValue = false;\n if (!propertySearchResult.propertyFound) {\n useDefaultValue =\n parameterMapper.required ||\n (parameterPath[0] === \"options\" && parameterPath.length === 2);\n }\n value = useDefaultValue ? parameterMapper.defaultValue : propertySearchResult.propertyValue;\n }\n }\n }\n else {\n if (parameterMapper.required) {\n value = {};\n }\n for (const propertyName in parameterPath) {\n const propertyMapper = parameterMapper.type.modelProperties[propertyName];\n const propertyPath = parameterPath[propertyName];\n const propertyValue = getOperationArgumentValueFromParameter(operationArguments, {\n parameterPath: propertyPath,\n mapper: propertyMapper,\n }, fallbackObject);\n if (propertyValue !== undefined) {\n if (!value) {\n value = {};\n }\n value[propertyName] = propertyValue;\n }\n }\n }\n return value;\n}\nfunction getPropertyFromParameterPath(parent, parameterPath) {\n const result = { propertyFound: false };\n let i = 0;\n for (; i < parameterPath.length; ++i) {\n const parameterPathPart = parameterPath[i];\n // Make sure to check inherited properties too, so don't use hasOwnProperty().\n if (parent && parameterPathPart in parent) {\n parent = parent[parameterPathPart];\n }\n else {\n break;\n }\n }\n if (i === parameterPath.length) {\n result.propertyValue = parent;\n result.propertyFound = true;\n }\n return result;\n}\nconst originalRequestSymbol = Symbol.for(\"@azure/core-client original request\");\nfunction hasOriginalRequest(request) {\n return originalRequestSymbol in request;\n}\nfunction getOperationRequestInfo(request) {\n if (hasOriginalRequest(request)) {\n return getOperationRequestInfo(request[originalRequestSymbol]);\n }\n let info = state_js_1.state.operationRequestMap.get(request);\n if (!info) {\n info = {};\n state_js_1.state.operationRequestMap.set(request, info);\n }\n return info;\n}\n//# sourceMappingURL=operationHelpers.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.deserializationPolicyName = void 0;\nexports.deserializationPolicy = deserializationPolicy;\nconst interfaces_js_1 = require(\"./interfaces.js\");\nconst core_rest_pipeline_1 = require(\"@azure/core-rest-pipeline\");\nconst serializer_js_1 = require(\"./serializer.js\");\nconst operationHelpers_js_1 = require(\"./operationHelpers.js\");\nconst defaultJsonContentTypes = [\"application/json\", \"text/json\"];\nconst defaultXmlContentTypes = [\"application/xml\", \"application/atom+xml\"];\n/**\n * The programmatic identifier of the deserializationPolicy.\n */\nexports.deserializationPolicyName = \"deserializationPolicy\";\n/**\n * This policy handles parsing out responses according to OperationSpecs on the request.\n */\nfunction deserializationPolicy(options = {}) {\n const jsonContentTypes = options.expectedContentTypes?.json ?? defaultJsonContentTypes;\n const xmlContentTypes = options.expectedContentTypes?.xml ?? defaultXmlContentTypes;\n const parseXML = options.parseXML;\n const serializerOptions = options.serializerOptions;\n const updatedOptions = {\n xml: {\n rootName: serializerOptions?.xml.rootName ?? \"\",\n includeRoot: serializerOptions?.xml.includeRoot ?? false,\n xmlCharKey: serializerOptions?.xml.xmlCharKey ?? interfaces_js_1.XML_CHARKEY,\n },\n };\n return {\n name: exports.deserializationPolicyName,\n async sendRequest(request, next) {\n const response = await next(request);\n return deserializeResponseBody(jsonContentTypes, xmlContentTypes, response, updatedOptions, parseXML);\n },\n };\n}\nfunction getOperationResponseMap(parsedResponse) {\n let result;\n const request = parsedResponse.request;\n const operationInfo = (0, operationHelpers_js_1.getOperationRequestInfo)(request);\n const operationSpec = operationInfo?.operationSpec;\n if (operationSpec) {\n if (!operationInfo?.operationResponseGetter) {\n result = operationSpec.responses[parsedResponse.status];\n }\n else {\n result = operationInfo?.operationResponseGetter(operationSpec, parsedResponse);\n }\n }\n return result;\n}\nfunction shouldDeserializeResponse(parsedResponse) {\n const request = parsedResponse.request;\n const operationInfo = (0, operationHelpers_js_1.getOperationRequestInfo)(request);\n const shouldDeserialize = operationInfo?.shouldDeserialize;\n let result;\n if (shouldDeserialize === undefined) {\n result = true;\n }\n else if (typeof shouldDeserialize === \"boolean\") {\n result = shouldDeserialize;\n }\n else {\n result = shouldDeserialize(parsedResponse);\n }\n return result;\n}\nasync function deserializeResponseBody(jsonContentTypes, xmlContentTypes, response, options, parseXML) {\n const parsedResponse = await parse(jsonContentTypes, xmlContentTypes, response, options, parseXML);\n if (!shouldDeserializeResponse(parsedResponse)) {\n return parsedResponse;\n }\n const operationInfo = (0, operationHelpers_js_1.getOperationRequestInfo)(parsedResponse.request);\n const operationSpec = operationInfo?.operationSpec;\n if (!operationSpec || !operationSpec.responses) {\n return parsedResponse;\n }\n const responseSpec = getOperationResponseMap(parsedResponse);\n const { error, shouldReturnResponse } = handleErrorResponse(parsedResponse, operationSpec, responseSpec, options);\n if (error) {\n throw error;\n }\n else if (shouldReturnResponse) {\n return parsedResponse;\n }\n // An operation response spec does exist for current status code, so\n // use it to deserialize the response.\n if (responseSpec) {\n if (responseSpec.bodyMapper) {\n let valueToDeserialize = parsedResponse.parsedBody;\n if (operationSpec.isXML && responseSpec.bodyMapper.type.name === serializer_js_1.MapperTypeNames.Sequence) {\n valueToDeserialize =\n typeof valueToDeserialize === \"object\"\n ? valueToDeserialize[responseSpec.bodyMapper.xmlElementName]\n : [];\n }\n try {\n parsedResponse.parsedBody = operationSpec.serializer.deserialize(responseSpec.bodyMapper, valueToDeserialize, \"operationRes.parsedBody\", options);\n }\n catch (deserializeError) {\n const restError = new core_rest_pipeline_1.RestError(`Error ${deserializeError} occurred in deserializing the responseBody - ${parsedResponse.bodyAsText}`, {\n statusCode: parsedResponse.status,\n request: parsedResponse.request,\n response: parsedResponse,\n });\n throw restError;\n }\n }\n else if (operationSpec.httpMethod === \"HEAD\") {\n // head methods never have a body, but we return a boolean to indicate presence/absence of the resource\n parsedResponse.parsedBody = response.status >= 200 && response.status < 300;\n }\n if (responseSpec.headersMapper) {\n parsedResponse.parsedHeaders = operationSpec.serializer.deserialize(responseSpec.headersMapper, parsedResponse.headers.toJSON(), \"operationRes.parsedHeaders\", { xml: {}, ignoreUnknownProperties: true });\n }\n }\n return parsedResponse;\n}\nfunction isOperationSpecEmpty(operationSpec) {\n const expectedStatusCodes = Object.keys(operationSpec.responses);\n return (expectedStatusCodes.length === 0 ||\n (expectedStatusCodes.length === 1 && expectedStatusCodes[0] === \"default\"));\n}\nfunction handleErrorResponse(parsedResponse, operationSpec, responseSpec, options) {\n const isSuccessByStatus = 200 <= parsedResponse.status && parsedResponse.status < 300;\n const isExpectedStatusCode = isOperationSpecEmpty(operationSpec)\n ? isSuccessByStatus\n : !!responseSpec;\n if (isExpectedStatusCode) {\n if (responseSpec) {\n if (!responseSpec.isError) {\n return { error: null, shouldReturnResponse: false };\n }\n }\n else {\n return { error: null, shouldReturnResponse: false };\n }\n }\n const errorResponseSpec = responseSpec ?? operationSpec.responses.default;\n const initialErrorMessage = parsedResponse.request.streamResponseStatusCodes?.has(parsedResponse.status)\n ? `Unexpected status code: ${parsedResponse.status}`\n : parsedResponse.bodyAsText;\n const error = new core_rest_pipeline_1.RestError(initialErrorMessage, {\n statusCode: parsedResponse.status,\n request: parsedResponse.request,\n response: parsedResponse,\n });\n // If the item failed but there's no error spec or default spec to deserialize the error,\n // and the parsed body doesn't look like an error object,\n // we should fail so we just throw the parsed response\n if (!errorResponseSpec &&\n !(parsedResponse.parsedBody?.error?.code && parsedResponse.parsedBody?.error?.message)) {\n throw error;\n }\n const defaultBodyMapper = errorResponseSpec?.bodyMapper;\n const defaultHeadersMapper = errorResponseSpec?.headersMapper;\n try {\n // If error response has a body, try to deserialize it using default body mapper.\n // Then try to extract error code & message from it\n if (parsedResponse.parsedBody) {\n const parsedBody = parsedResponse.parsedBody;\n let deserializedError;\n if (defaultBodyMapper) {\n let valueToDeserialize = parsedBody;\n if (operationSpec.isXML && defaultBodyMapper.type.name === serializer_js_1.MapperTypeNames.Sequence) {\n valueToDeserialize = [];\n const elementName = defaultBodyMapper.xmlElementName;\n if (typeof parsedBody === \"object\" && elementName) {\n valueToDeserialize = parsedBody[elementName];\n }\n }\n deserializedError = operationSpec.serializer.deserialize(defaultBodyMapper, valueToDeserialize, \"error.response.parsedBody\", options);\n }\n const internalError = parsedBody.error || deserializedError || parsedBody;\n error.code = internalError.code;\n if (internalError.message) {\n error.message = internalError.message;\n }\n if (defaultBodyMapper) {\n error.response.parsedBody = deserializedError;\n }\n }\n // If error response has headers, try to deserialize it using default header mapper\n if (parsedResponse.headers && defaultHeadersMapper) {\n error.response.parsedHeaders =\n operationSpec.serializer.deserialize(defaultHeadersMapper, parsedResponse.headers.toJSON(), \"operationRes.parsedHeaders\");\n }\n }\n catch (defaultError) {\n error.message = `Error \"${defaultError.message}\" occurred in deserializing the responseBody - \"${parsedResponse.bodyAsText}\" for the default response.`;\n }\n return { error, shouldReturnResponse: false };\n}\nasync function parse(jsonContentTypes, xmlContentTypes, operationResponse, opts, parseXML) {\n if (!operationResponse.request.streamResponseStatusCodes?.has(operationResponse.status) &&\n operationResponse.bodyAsText) {\n const text = operationResponse.bodyAsText;\n const contentType = operationResponse.headers.get(\"Content-Type\") || \"\";\n const contentComponents = !contentType\n ? []\n : contentType.split(\";\").map((component) => component.toLowerCase());\n try {\n if (contentComponents.length === 0 ||\n contentComponents.some((component) => jsonContentTypes.indexOf(component) !== -1)) {\n operationResponse.parsedBody = JSON.parse(text);\n return operationResponse;\n }\n else if (contentComponents.some((component) => xmlContentTypes.indexOf(component) !== -1)) {\n if (!parseXML) {\n throw new Error(\"Parsing XML not supported.\");\n }\n const body = await parseXML(text, opts.xml);\n operationResponse.parsedBody = body;\n return operationResponse;\n }\n }\n catch (err) {\n const msg = `Error \"${err}\" occurred while parsing the response body - ${operationResponse.bodyAsText}.`;\n const errCode = err.code || core_rest_pipeline_1.RestError.PARSE_ERROR;\n const e = new core_rest_pipeline_1.RestError(msg, {\n code: errCode,\n statusCode: operationResponse.status,\n request: operationResponse.request,\n response: operationResponse,\n });\n throw e;\n }\n }\n return operationResponse;\n}\n//# sourceMappingURL=deserializationPolicy.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getStreamingResponseStatusCodes = getStreamingResponseStatusCodes;\nexports.getPathStringFromParameter = getPathStringFromParameter;\nconst serializer_js_1 = require(\"./serializer.js\");\n/**\n * Gets the list of status codes for streaming responses.\n * @internal\n */\nfunction getStreamingResponseStatusCodes(operationSpec) {\n const result = new Set();\n for (const statusCode in operationSpec.responses) {\n const operationResponse = operationSpec.responses[statusCode];\n if (operationResponse.bodyMapper &&\n operationResponse.bodyMapper.type.name === serializer_js_1.MapperTypeNames.Stream) {\n result.add(Number(statusCode));\n }\n }\n return result;\n}\n/**\n * Get the path to this parameter's value as a dotted string (a.b.c).\n * @param parameter - The parameter to get the path string for.\n * @returns The path to this parameter's value as a dotted string.\n * @internal\n */\nfunction getPathStringFromParameter(parameter) {\n const { parameterPath, mapper } = parameter;\n let result;\n if (typeof parameterPath === \"string\") {\n result = parameterPath;\n }\n else if (Array.isArray(parameterPath)) {\n result = parameterPath.join(\".\");\n }\n else {\n result = mapper.serializedName;\n }\n return result;\n}\n//# sourceMappingURL=interfaceHelpers.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.serializationPolicyName = void 0;\nexports.serializationPolicy = serializationPolicy;\nexports.serializeHeaders = serializeHeaders;\nexports.serializeRequestBody = serializeRequestBody;\nconst interfaces_js_1 = require(\"./interfaces.js\");\nconst operationHelpers_js_1 = require(\"./operationHelpers.js\");\nconst serializer_js_1 = require(\"./serializer.js\");\nconst interfaceHelpers_js_1 = require(\"./interfaceHelpers.js\");\n/**\n * The programmatic identifier of the serializationPolicy.\n */\nexports.serializationPolicyName = \"serializationPolicy\";\n/**\n * This policy handles assembling the request body and headers using\n * an OperationSpec and OperationArguments on the request.\n */\nfunction serializationPolicy(options = {}) {\n const stringifyXML = options.stringifyXML;\n return {\n name: exports.serializationPolicyName,\n async sendRequest(request, next) {\n const operationInfo = (0, operationHelpers_js_1.getOperationRequestInfo)(request);\n const operationSpec = operationInfo?.operationSpec;\n const operationArguments = operationInfo?.operationArguments;\n if (operationSpec && operationArguments) {\n serializeHeaders(request, operationArguments, operationSpec);\n serializeRequestBody(request, operationArguments, operationSpec, stringifyXML);\n }\n return next(request);\n },\n };\n}\n/**\n * @internal\n */\nfunction serializeHeaders(request, operationArguments, operationSpec) {\n if (operationSpec.headerParameters) {\n for (const headerParameter of operationSpec.headerParameters) {\n let headerValue = (0, operationHelpers_js_1.getOperationArgumentValueFromParameter)(operationArguments, headerParameter);\n if ((headerValue !== null && headerValue !== undefined) || headerParameter.mapper.required) {\n headerValue = operationSpec.serializer.serialize(headerParameter.mapper, headerValue, (0, interfaceHelpers_js_1.getPathStringFromParameter)(headerParameter));\n const headerCollectionPrefix = headerParameter.mapper\n .headerCollectionPrefix;\n if (headerCollectionPrefix) {\n for (const key of Object.keys(headerValue)) {\n request.headers.set(headerCollectionPrefix + key, headerValue[key]);\n }\n }\n else {\n request.headers.set(headerParameter.mapper.serializedName || (0, interfaceHelpers_js_1.getPathStringFromParameter)(headerParameter), headerValue);\n }\n }\n }\n }\n const customHeaders = operationArguments.options?.requestOptions?.customHeaders;\n if (customHeaders) {\n for (const customHeaderName of Object.keys(customHeaders)) {\n request.headers.set(customHeaderName, customHeaders[customHeaderName]);\n }\n }\n}\n/**\n * @internal\n */\nfunction serializeRequestBody(request, operationArguments, operationSpec, stringifyXML = function () {\n throw new Error(\"XML serialization unsupported!\");\n}) {\n const serializerOptions = operationArguments.options?.serializerOptions;\n const updatedOptions = {\n xml: {\n rootName: serializerOptions?.xml.rootName ?? \"\",\n includeRoot: serializerOptions?.xml.includeRoot ?? false,\n xmlCharKey: serializerOptions?.xml.xmlCharKey ?? interfaces_js_1.XML_CHARKEY,\n },\n };\n const xmlCharKey = updatedOptions.xml.xmlCharKey;\n if (operationSpec.requestBody && operationSpec.requestBody.mapper) {\n request.body = (0, operationHelpers_js_1.getOperationArgumentValueFromParameter)(operationArguments, operationSpec.requestBody);\n const bodyMapper = operationSpec.requestBody.mapper;\n const { required, serializedName, xmlName, xmlElementName, xmlNamespace, xmlNamespacePrefix, nullable, } = bodyMapper;\n const typeName = bodyMapper.type.name;\n try {\n if ((request.body !== undefined && request.body !== null) ||\n (nullable && request.body === null) ||\n required) {\n const requestBodyParameterPathString = (0, interfaceHelpers_js_1.getPathStringFromParameter)(operationSpec.requestBody);\n request.body = operationSpec.serializer.serialize(bodyMapper, request.body, requestBodyParameterPathString, updatedOptions);\n const isStream = typeName === serializer_js_1.MapperTypeNames.Stream;\n if (operationSpec.isXML) {\n const xmlnsKey = xmlNamespacePrefix ? `xmlns:${xmlNamespacePrefix}` : \"xmlns\";\n const value = getXmlValueWithNamespace(xmlNamespace, xmlnsKey, typeName, request.body, updatedOptions);\n if (typeName === serializer_js_1.MapperTypeNames.Sequence) {\n request.body = stringifyXML(prepareXMLRootList(value, xmlElementName || xmlName || serializedName, xmlnsKey, xmlNamespace), { rootName: xmlName || serializedName, xmlCharKey });\n }\n else if (!isStream) {\n request.body = stringifyXML(value, {\n rootName: xmlName || serializedName,\n xmlCharKey,\n });\n }\n }\n else if (typeName === serializer_js_1.MapperTypeNames.String &&\n (operationSpec.contentType?.match(\"text/plain\") || operationSpec.mediaType === \"text\")) {\n // the String serializer has validated that request body is a string\n // so just send the string.\n return;\n }\n else if (!isStream) {\n request.body = JSON.stringify(request.body);\n }\n }\n }\n catch (error) {\n throw new Error(`Error \"${error.message}\" occurred in serializing the payload - ${JSON.stringify(serializedName, undefined, \" \")}.`);\n }\n }\n else if (operationSpec.formDataParameters && operationSpec.formDataParameters.length > 0) {\n request.formData = {};\n for (const formDataParameter of operationSpec.formDataParameters) {\n const formDataParameterValue = (0, operationHelpers_js_1.getOperationArgumentValueFromParameter)(operationArguments, formDataParameter);\n if (formDataParameterValue !== undefined && formDataParameterValue !== null) {\n const formDataParameterPropertyName = formDataParameter.mapper.serializedName || (0, interfaceHelpers_js_1.getPathStringFromParameter)(formDataParameter);\n request.formData[formDataParameterPropertyName] = operationSpec.serializer.serialize(formDataParameter.mapper, formDataParameterValue, (0, interfaceHelpers_js_1.getPathStringFromParameter)(formDataParameter), updatedOptions);\n }\n }\n }\n}\n/**\n * Adds an xml namespace to the xml serialized object if needed, otherwise it just returns the value itself\n */\nfunction getXmlValueWithNamespace(xmlNamespace, xmlnsKey, typeName, serializedValue, options) {\n // Composite and Sequence schemas already got their root namespace set during serialization\n // We just need to add xmlns to the other schema types\n if (xmlNamespace && ![\"Composite\", \"Sequence\", \"Dictionary\"].includes(typeName)) {\n const result = {};\n result[options.xml.xmlCharKey] = serializedValue;\n result[interfaces_js_1.XML_ATTRKEY] = { [xmlnsKey]: xmlNamespace };\n return result;\n }\n return serializedValue;\n}\nfunction prepareXMLRootList(obj, elementName, xmlNamespaceKey, xmlNamespace) {\n if (!Array.isArray(obj)) {\n obj = [obj];\n }\n if (!xmlNamespaceKey || !xmlNamespace) {\n return { [elementName]: obj };\n }\n const result = { [elementName]: obj };\n result[interfaces_js_1.XML_ATTRKEY] = { [xmlNamespaceKey]: xmlNamespace };\n return result;\n}\n//# sourceMappingURL=serializationPolicy.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.createClientPipeline = createClientPipeline;\nconst deserializationPolicy_js_1 = require(\"./deserializationPolicy.js\");\nconst core_rest_pipeline_1 = require(\"@azure/core-rest-pipeline\");\nconst serializationPolicy_js_1 = require(\"./serializationPolicy.js\");\n/**\n * Creates a new Pipeline for use with a Service Client.\n * Adds in deserializationPolicy by default.\n * Also adds in bearerTokenAuthenticationPolicy if passed a TokenCredential.\n * @param options - Options to customize the created pipeline.\n */\nfunction createClientPipeline(options = {}) {\n const pipeline = (0, core_rest_pipeline_1.createPipelineFromOptions)(options ?? {});\n if (options.credentialOptions) {\n pipeline.addPolicy((0, core_rest_pipeline_1.bearerTokenAuthenticationPolicy)({\n credential: options.credentialOptions.credential,\n scopes: options.credentialOptions.credentialScopes,\n }));\n }\n pipeline.addPolicy((0, serializationPolicy_js_1.serializationPolicy)(options.serializationOptions), { phase: \"Serialize\" });\n pipeline.addPolicy((0, deserializationPolicy_js_1.deserializationPolicy)(options.deserializationOptions), {\n phase: \"Deserialize\",\n });\n return pipeline;\n}\n//# sourceMappingURL=pipeline.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getCachedDefaultHttpClient = getCachedDefaultHttpClient;\nconst core_rest_pipeline_1 = require(\"@azure/core-rest-pipeline\");\nlet cachedHttpClient;\nfunction getCachedDefaultHttpClient() {\n if (!cachedHttpClient) {\n cachedHttpClient = (0, core_rest_pipeline_1.createDefaultHttpClient)();\n }\n return cachedHttpClient;\n}\n//# sourceMappingURL=httpClientCache.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getRequestUrl = getRequestUrl;\nexports.appendQueryParams = appendQueryParams;\nconst operationHelpers_js_1 = require(\"./operationHelpers.js\");\nconst interfaceHelpers_js_1 = require(\"./interfaceHelpers.js\");\nconst CollectionFormatToDelimiterMap = {\n CSV: \",\",\n SSV: \" \",\n Multi: \"Multi\",\n TSV: \"\\t\",\n Pipes: \"|\",\n};\nfunction getRequestUrl(baseUri, operationSpec, operationArguments, fallbackObject) {\n const urlReplacements = calculateUrlReplacements(operationSpec, operationArguments, fallbackObject);\n let isAbsolutePath = false;\n let requestUrl = replaceAll(baseUri, urlReplacements);\n if (operationSpec.path) {\n let path = replaceAll(operationSpec.path, urlReplacements);\n // QUIRK: sometimes we get a path component like /{nextLink}\n // which may be a fully formed URL with a leading /. In that case, we should\n // remove the leading /\n if (operationSpec.path === \"/{nextLink}\" && path.startsWith(\"/\")) {\n path = path.substring(1);\n }\n // QUIRK: sometimes we get a path component like {nextLink}\n // which may be a fully formed URL. In that case, we should\n // ignore the baseUri.\n if (isAbsoluteUrl(path)) {\n requestUrl = path;\n isAbsolutePath = true;\n }\n else {\n requestUrl = appendPath(requestUrl, path);\n }\n }\n const { queryParams, sequenceParams } = calculateQueryParameters(operationSpec, operationArguments, fallbackObject);\n /**\n * Notice that this call sets the `noOverwrite` parameter to true if the `requestUrl`\n * is an absolute path. This ensures that existing query parameter values in `requestUrl`\n * do not get overwritten. On the other hand when `requestUrl` is not absolute path, it\n * is still being built so there is nothing to overwrite.\n */\n requestUrl = appendQueryParams(requestUrl, queryParams, sequenceParams, isAbsolutePath);\n return requestUrl;\n}\nfunction replaceAll(input, replacements) {\n let result = input;\n for (const [searchValue, replaceValue] of replacements) {\n result = result.split(searchValue).join(replaceValue);\n }\n return result;\n}\nfunction calculateUrlReplacements(operationSpec, operationArguments, fallbackObject) {\n const result = new Map();\n if (operationSpec.urlParameters?.length) {\n for (const urlParameter of operationSpec.urlParameters) {\n let urlParameterValue = (0, operationHelpers_js_1.getOperationArgumentValueFromParameter)(operationArguments, urlParameter, fallbackObject);\n const parameterPathString = (0, interfaceHelpers_js_1.getPathStringFromParameter)(urlParameter);\n urlParameterValue = operationSpec.serializer.serialize(urlParameter.mapper, urlParameterValue, parameterPathString);\n if (!urlParameter.skipEncoding) {\n urlParameterValue = encodeURIComponent(urlParameterValue);\n }\n result.set(`{${urlParameter.mapper.serializedName || parameterPathString}}`, urlParameterValue);\n }\n }\n return result;\n}\nfunction isAbsoluteUrl(url) {\n return url.includes(\"://\");\n}\nfunction appendPath(url, pathToAppend) {\n if (!pathToAppend) {\n return url;\n }\n const parsedUrl = new URL(url);\n let newPath = parsedUrl.pathname;\n if (!newPath.endsWith(\"/\")) {\n newPath = `${newPath}/`;\n }\n if (pathToAppend.startsWith(\"/\")) {\n pathToAppend = pathToAppend.substring(1);\n }\n const searchStart = pathToAppend.indexOf(\"?\");\n if (searchStart !== -1) {\n const path = pathToAppend.substring(0, searchStart);\n const search = pathToAppend.substring(searchStart + 1);\n newPath = newPath + path;\n if (search) {\n parsedUrl.search = parsedUrl.search ? `${parsedUrl.search}&${search}` : search;\n }\n }\n else {\n newPath = newPath + pathToAppend;\n }\n parsedUrl.pathname = newPath;\n return parsedUrl.toString();\n}\nfunction calculateQueryParameters(operationSpec, operationArguments, fallbackObject) {\n const result = new Map();\n const sequenceParams = new Set();\n if (operationSpec.queryParameters?.length) {\n for (const queryParameter of operationSpec.queryParameters) {\n if (queryParameter.mapper.type.name === \"Sequence\" && queryParameter.mapper.serializedName) {\n sequenceParams.add(queryParameter.mapper.serializedName);\n }\n let queryParameterValue = (0, operationHelpers_js_1.getOperationArgumentValueFromParameter)(operationArguments, queryParameter, fallbackObject);\n if ((queryParameterValue !== undefined && queryParameterValue !== null) ||\n queryParameter.mapper.required) {\n queryParameterValue = operationSpec.serializer.serialize(queryParameter.mapper, queryParameterValue, (0, interfaceHelpers_js_1.getPathStringFromParameter)(queryParameter));\n const delimiter = queryParameter.collectionFormat\n ? CollectionFormatToDelimiterMap[queryParameter.collectionFormat]\n : \"\";\n if (Array.isArray(queryParameterValue)) {\n // replace null and undefined\n queryParameterValue = queryParameterValue.map((item) => {\n if (item === null || item === undefined) {\n return \"\";\n }\n return item;\n });\n }\n if (queryParameter.collectionFormat === \"Multi\" && queryParameterValue.length === 0) {\n continue;\n }\n else if (Array.isArray(queryParameterValue) &&\n (queryParameter.collectionFormat === \"SSV\" || queryParameter.collectionFormat === \"TSV\")) {\n queryParameterValue = queryParameterValue.join(delimiter);\n }\n if (!queryParameter.skipEncoding) {\n if (Array.isArray(queryParameterValue)) {\n queryParameterValue = queryParameterValue.map((item) => {\n return encodeURIComponent(item);\n });\n }\n else {\n queryParameterValue = encodeURIComponent(queryParameterValue);\n }\n }\n // Join pipes and CSV *after* encoding, or the server will be upset.\n if (Array.isArray(queryParameterValue) &&\n (queryParameter.collectionFormat === \"CSV\" || queryParameter.collectionFormat === \"Pipes\")) {\n queryParameterValue = queryParameterValue.join(delimiter);\n }\n result.set(queryParameter.mapper.serializedName || (0, interfaceHelpers_js_1.getPathStringFromParameter)(queryParameter), queryParameterValue);\n }\n }\n }\n return {\n queryParams: result,\n sequenceParams,\n };\n}\nfunction simpleParseQueryParams(queryString) {\n const result = new Map();\n if (!queryString || queryString[0] !== \"?\") {\n return result;\n }\n // remove the leading ?\n queryString = queryString.slice(1);\n const pairs = queryString.split(\"&\");\n for (const pair of pairs) {\n const [name, value] = pair.split(\"=\", 2);\n const existingValue = result.get(name);\n if (existingValue) {\n if (Array.isArray(existingValue)) {\n existingValue.push(value);\n }\n else {\n result.set(name, [existingValue, value]);\n }\n }\n else {\n result.set(name, value);\n }\n }\n return result;\n}\n/** @internal */\nfunction appendQueryParams(url, queryParams, sequenceParams, noOverwrite = false) {\n if (queryParams.size === 0) {\n return url;\n }\n const parsedUrl = new URL(url);\n // QUIRK: parsedUrl.searchParams will have their name/value pairs decoded, which\n // can change their meaning to the server, such as in the case of a SAS signature.\n // To avoid accidentally un-encoding a query param, we parse the key/values ourselves\n const combinedParams = simpleParseQueryParams(parsedUrl.search);\n for (const [name, value] of queryParams) {\n const existingValue = combinedParams.get(name);\n if (Array.isArray(existingValue)) {\n if (Array.isArray(value)) {\n existingValue.push(...value);\n const valueSet = new Set(existingValue);\n combinedParams.set(name, Array.from(valueSet));\n }\n else {\n existingValue.push(value);\n }\n }\n else if (existingValue) {\n if (Array.isArray(value)) {\n value.unshift(existingValue);\n }\n else if (sequenceParams.has(name)) {\n combinedParams.set(name, [existingValue, value]);\n }\n if (!noOverwrite) {\n combinedParams.set(name, value);\n }\n }\n else {\n combinedParams.set(name, value);\n }\n }\n const searchPieces = [];\n for (const [name, value] of combinedParams) {\n if (typeof value === \"string\") {\n searchPieces.push(`${name}=${value}`);\n }\n else if (Array.isArray(value)) {\n // QUIRK: If we get an array of values, include multiple key/value pairs\n for (const subValue of value) {\n searchPieces.push(`${name}=${subValue}`);\n }\n }\n else {\n searchPieces.push(`${name}=${value}`);\n }\n }\n // QUIRK: we have to set search manually as searchParams will encode comma when it shouldn't.\n parsedUrl.search = searchPieces.length ? `?${searchPieces.join(\"&\")}` : \"\";\n return parsedUrl.toString();\n}\n//# sourceMappingURL=urlHelpers.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.logger = void 0;\nconst logger_1 = require(\"@azure/logger\");\nexports.logger = (0, logger_1.createClientLogger)(\"core-client\");\n//# sourceMappingURL=log.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ServiceClient = void 0;\nconst core_rest_pipeline_1 = require(\"@azure/core-rest-pipeline\");\nconst pipeline_js_1 = require(\"./pipeline.js\");\nconst utils_js_1 = require(\"./utils.js\");\nconst httpClientCache_js_1 = require(\"./httpClientCache.js\");\nconst operationHelpers_js_1 = require(\"./operationHelpers.js\");\nconst urlHelpers_js_1 = require(\"./urlHelpers.js\");\nconst interfaceHelpers_js_1 = require(\"./interfaceHelpers.js\");\nconst log_js_1 = require(\"./log.js\");\n/**\n * Initializes a new instance of the ServiceClient.\n */\nclass ServiceClient {\n /**\n * If specified, this is the base URI that requests will be made against for this ServiceClient.\n * If it is not specified, then all OperationSpecs must contain a baseUrl property.\n */\n _endpoint;\n /**\n * The default request content type for the service.\n * Used if no requestContentType is present on an OperationSpec.\n */\n _requestContentType;\n /**\n * Set to true if the request is sent over HTTP instead of HTTPS\n */\n _allowInsecureConnection;\n /**\n * The HTTP client that will be used to send requests.\n */\n _httpClient;\n /**\n * The pipeline used by this client to make requests\n */\n pipeline;\n /**\n * The ServiceClient constructor\n * @param options - The service client options that govern the behavior of the client.\n */\n constructor(options = {}) {\n this._requestContentType = options.requestContentType;\n this._endpoint = options.endpoint ?? options.baseUri;\n if (options.baseUri) {\n log_js_1.logger.warning(\"The baseUri option for SDK Clients has been deprecated, please use endpoint instead.\");\n }\n this._allowInsecureConnection = options.allowInsecureConnection;\n this._httpClient = options.httpClient || (0, httpClientCache_js_1.getCachedDefaultHttpClient)();\n this.pipeline = options.pipeline || createDefaultPipeline(options);\n if (options.additionalPolicies?.length) {\n for (const { policy, position } of options.additionalPolicies) {\n // Sign happens after Retry and is commonly needed to occur\n // before policies that intercept post-retry.\n const afterPhase = position === \"perRetry\" ? \"Sign\" : undefined;\n this.pipeline.addPolicy(policy, {\n afterPhase,\n });\n }\n }\n }\n /**\n * Send the provided httpRequest.\n */\n async sendRequest(request) {\n return this.pipeline.sendRequest(this._httpClient, request);\n }\n /**\n * Send an HTTP request that is populated using the provided OperationSpec.\n * @typeParam T - The typed result of the request, based on the OperationSpec.\n * @param operationArguments - The arguments that the HTTP request's templated values will be populated from.\n * @param operationSpec - The OperationSpec to use to populate the httpRequest.\n */\n async sendOperationRequest(operationArguments, operationSpec) {\n const endpoint = operationSpec.baseUrl || this._endpoint;\n if (!endpoint) {\n throw new Error(\"If operationSpec.baseUrl is not specified, then the ServiceClient must have a endpoint string property that contains the base URL to use.\");\n }\n // Templatized URLs sometimes reference properties on the ServiceClient child class,\n // so we have to pass `this` below in order to search these properties if they're\n // not part of OperationArguments\n const url = (0, urlHelpers_js_1.getRequestUrl)(endpoint, operationSpec, operationArguments, this);\n const request = (0, core_rest_pipeline_1.createPipelineRequest)({\n url,\n });\n request.method = operationSpec.httpMethod;\n const operationInfo = (0, operationHelpers_js_1.getOperationRequestInfo)(request);\n operationInfo.operationSpec = operationSpec;\n operationInfo.operationArguments = operationArguments;\n const contentType = operationSpec.contentType || this._requestContentType;\n if (contentType && operationSpec.requestBody) {\n request.headers.set(\"Content-Type\", contentType);\n }\n const options = operationArguments.options;\n if (options) {\n const requestOptions = options.requestOptions;\n if (requestOptions) {\n if (requestOptions.timeout) {\n request.timeout = requestOptions.timeout;\n }\n if (requestOptions.onUploadProgress) {\n request.onUploadProgress = requestOptions.onUploadProgress;\n }\n if (requestOptions.onDownloadProgress) {\n request.onDownloadProgress = requestOptions.onDownloadProgress;\n }\n if (requestOptions.shouldDeserialize !== undefined) {\n operationInfo.shouldDeserialize = requestOptions.shouldDeserialize;\n }\n if (requestOptions.allowInsecureConnection) {\n request.allowInsecureConnection = true;\n }\n }\n if (options.abortSignal) {\n request.abortSignal = options.abortSignal;\n }\n if (options.tracingOptions) {\n request.tracingOptions = options.tracingOptions;\n }\n }\n if (this._allowInsecureConnection) {\n request.allowInsecureConnection = true;\n }\n if (request.streamResponseStatusCodes === undefined) {\n request.streamResponseStatusCodes = (0, interfaceHelpers_js_1.getStreamingResponseStatusCodes)(operationSpec);\n }\n try {\n const rawResponse = await this.sendRequest(request);\n const flatResponse = (0, utils_js_1.flattenResponse)(rawResponse, operationSpec.responses[rawResponse.status]);\n if (options?.onResponse) {\n options.onResponse(rawResponse, flatResponse);\n }\n return flatResponse;\n }\n catch (error) {\n if (typeof error === \"object\" && error?.response) {\n const rawResponse = error.response;\n const flatResponse = (0, utils_js_1.flattenResponse)(rawResponse, operationSpec.responses[error.statusCode] || operationSpec.responses[\"default\"]);\n error.details = flatResponse;\n if (options?.onResponse) {\n options.onResponse(rawResponse, flatResponse, error);\n }\n }\n throw error;\n }\n }\n}\nexports.ServiceClient = ServiceClient;\nfunction createDefaultPipeline(options) {\n const credentialScopes = getCredentialScopes(options);\n const credentialOptions = options.credential && credentialScopes\n ? { credentialScopes, credential: options.credential }\n : undefined;\n return (0, pipeline_js_1.createClientPipeline)({\n ...options,\n credentialOptions,\n });\n}\nfunction getCredentialScopes(options) {\n if (options.credentialScopes) {\n return options.credentialScopes;\n }\n if (options.endpoint) {\n return `${options.endpoint}/.default`;\n }\n if (options.baseUri) {\n return `${options.baseUri}/.default`;\n }\n if (options.credential && !options.credentialScopes) {\n throw new Error(`When using credentials, the ServiceClientOptions must contain either a endpoint or a credentialScopes. Unable to create a bearerTokenAuthenticationPolicy`);\n }\n return undefined;\n}\n//# sourceMappingURL=serviceClient.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.parseCAEChallenge = parseCAEChallenge;\nexports.authorizeRequestOnClaimChallenge = authorizeRequestOnClaimChallenge;\nconst log_js_1 = require(\"./log.js\");\nconst base64_js_1 = require(\"./base64.js\");\n/**\n * Converts: `Bearer a=\"b\", c=\"d\", Bearer d=\"e\", f=\"g\"`.\n * Into: `[ { a: 'b', c: 'd' }, { d: 'e', f: 'g' } ]`.\n *\n * @internal\n */\nfunction parseCAEChallenge(challenges) {\n const bearerChallenges = `, ${challenges.trim()}`.split(\", Bearer \").filter((x) => x);\n return bearerChallenges.map((challenge) => {\n const challengeParts = `${challenge.trim()}, `.split('\", ').filter((x) => x);\n const keyValuePairs = challengeParts.map((keyValue) => (([key, value]) => ({ [key]: value }))(keyValue.trim().split('=\"')));\n // Key-value pairs to plain object:\n return keyValuePairs.reduce((a, b) => ({ ...a, ...b }), {});\n });\n}\n/**\n * This function can be used as a callback for the `bearerTokenAuthenticationPolicy` of `@azure/core-rest-pipeline`, to support CAE challenges:\n * [Continuous Access Evaluation](https://learn.microsoft.com/azure/active-directory/conditional-access/concept-continuous-access-evaluation).\n *\n * Call the `bearerTokenAuthenticationPolicy` with the following options:\n *\n * ```ts snippet:AuthorizeRequestOnClaimChallenge\n * import { bearerTokenAuthenticationPolicy } from \"@azure/core-rest-pipeline\";\n * import { authorizeRequestOnClaimChallenge } from \"@azure/core-client\";\n *\n * const policy = bearerTokenAuthenticationPolicy({\n * challengeCallbacks: {\n * authorizeRequestOnChallenge: authorizeRequestOnClaimChallenge,\n * },\n * scopes: [\"https://service/.default\"],\n * });\n * ```\n *\n * Once provided, the `bearerTokenAuthenticationPolicy` policy will internally handle Continuous Access Evaluation (CAE) challenges.\n * When it can't complete a challenge it will return the 401 (unauthorized) response from ARM.\n *\n * Example challenge with claims:\n *\n * ```\n * Bearer authorization_uri=\"https://login.windows-ppe.net/\", error=\"invalid_token\",\n * error_description=\"User session has been revoked\",\n * claims=\"eyJhY2Nlc3NfdG9rZW4iOnsibmJmIjp7ImVzc2VudGlhbCI6dHJ1ZSwgInZhbHVlIjoiMTYwMzc0MjgwMCJ9fX0=\"\n * ```\n */\nasync function authorizeRequestOnClaimChallenge(onChallengeOptions) {\n const { scopes, response } = onChallengeOptions;\n const logger = onChallengeOptions.logger || log_js_1.logger;\n const challenge = response.headers.get(\"WWW-Authenticate\");\n if (!challenge) {\n logger.info(`The WWW-Authenticate header was missing. Failed to perform the Continuous Access Evaluation authentication flow.`);\n return false;\n }\n const challenges = parseCAEChallenge(challenge) || [];\n const parsedChallenge = challenges.find((x) => x.claims);\n if (!parsedChallenge) {\n logger.info(`The WWW-Authenticate header was missing the necessary \"claims\" to perform the Continuous Access Evaluation authentication flow.`);\n return false;\n }\n const accessToken = await onChallengeOptions.getAccessToken(parsedChallenge.scope ? [parsedChallenge.scope] : scopes, {\n claims: (0, base64_js_1.decodeStringToString)(parsedChallenge.claims),\n });\n if (!accessToken) {\n return false;\n }\n onChallengeOptions.request.headers.set(\"Authorization\", `${accessToken.tokenType ?? \"Bearer\"} ${accessToken.token}`);\n return true;\n}\n//# sourceMappingURL=authorizeRequestOnClaimChallenge.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.authorizeRequestOnTenantChallenge = void 0;\n/**\n * A set of constants used internally when processing requests.\n */\nconst Constants = {\n DefaultScope: \"/.default\",\n /**\n * Defines constants for use with HTTP headers.\n */\n HeaderConstants: {\n /**\n * The Authorization header.\n */\n AUTHORIZATION: \"authorization\",\n },\n};\nfunction isUuid(text) {\n return /^[0-9a-fA-F]{8}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{12}$/.test(text);\n}\n/**\n * Defines a callback to handle auth challenge for Storage APIs.\n * This implements the bearer challenge process described here: https://learn.microsoft.com/rest/api/storageservices/authorize-with-azure-active-directory#bearer-challenge\n * Handling has specific features for storage that departs to the general AAD challenge docs.\n **/\nconst authorizeRequestOnTenantChallenge = async (challengeOptions) => {\n const requestOptions = requestToOptions(challengeOptions.request);\n const challenge = getChallenge(challengeOptions.response);\n if (challenge) {\n const challengeInfo = parseChallenge(challenge);\n const challengeScopes = buildScopes(challengeOptions, challengeInfo);\n const tenantId = extractTenantId(challengeInfo);\n if (!tenantId) {\n return false;\n }\n const accessToken = await challengeOptions.getAccessToken(challengeScopes, {\n ...requestOptions,\n tenantId,\n });\n if (!accessToken) {\n return false;\n }\n challengeOptions.request.headers.set(Constants.HeaderConstants.AUTHORIZATION, `${accessToken.tokenType ?? \"Bearer\"} ${accessToken.token}`);\n return true;\n }\n return false;\n};\nexports.authorizeRequestOnTenantChallenge = authorizeRequestOnTenantChallenge;\n/**\n * Extracts the tenant id from the challenge information\n * The tenant id is contained in the authorization_uri as the first\n * path part.\n */\nfunction extractTenantId(challengeInfo) {\n const parsedAuthUri = new URL(challengeInfo.authorization_uri);\n const pathSegments = parsedAuthUri.pathname.split(\"/\");\n const tenantId = pathSegments[1];\n if (tenantId && isUuid(tenantId)) {\n return tenantId;\n }\n return undefined;\n}\n/**\n * Builds the authentication scopes based on the information that comes in the\n * challenge information. Scopes url is present in the resource_id, if it is empty\n * we keep using the original scopes.\n */\nfunction buildScopes(challengeOptions, challengeInfo) {\n if (!challengeInfo.resource_id) {\n return challengeOptions.scopes;\n }\n const challengeScopes = new URL(challengeInfo.resource_id);\n challengeScopes.pathname = Constants.DefaultScope;\n let scope = challengeScopes.toString();\n if (scope === \"https://disk.azure.com/.default\") {\n // the extra slash is required by the service\n scope = \"https://disk.azure.com//.default\";\n }\n return [scope];\n}\n/**\n * We will retrieve the challenge only if the response status code was 401,\n * and if the response contained the header \"WWW-Authenticate\" with a non-empty value.\n */\nfunction getChallenge(response) {\n const challenge = response.headers.get(\"WWW-Authenticate\");\n if (response.status === 401 && challenge) {\n return challenge;\n }\n return;\n}\n/**\n * Converts: `Bearer a=\"b\" c=\"d\"`.\n * Into: `[ { a: 'b', c: 'd' }]`.\n *\n * @internal\n */\nfunction parseChallenge(challenge) {\n const bearerChallenge = challenge.slice(\"Bearer \".length);\n const challengeParts = `${bearerChallenge.trim()} `.split(\" \").filter((x) => x);\n const keyValuePairs = challengeParts.map((keyValue) => (([key, value]) => ({ [key]: value }))(keyValue.trim().split(\"=\")));\n // Key-value pairs to plain object:\n return keyValuePairs.reduce((a, b) => ({ ...a, ...b }), {});\n}\n/**\n * Extracts the options form a Pipeline Request for later re-use\n */\nfunction requestToOptions(request) {\n return {\n abortSignal: request.abortSignal,\n requestOptions: {\n timeout: request.timeout,\n },\n tracingOptions: request.tracingOptions,\n };\n}\n//# sourceMappingURL=authorizeRequestOnTenantChallenge.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.authorizeRequestOnTenantChallenge = exports.authorizeRequestOnClaimChallenge = exports.serializationPolicyName = exports.serializationPolicy = exports.deserializationPolicyName = exports.deserializationPolicy = exports.XML_CHARKEY = exports.XML_ATTRKEY = exports.createClientPipeline = exports.ServiceClient = exports.MapperTypeNames = exports.createSerializer = void 0;\nvar serializer_js_1 = require(\"./serializer.js\");\nObject.defineProperty(exports, \"createSerializer\", { enumerable: true, get: function () { return serializer_js_1.createSerializer; } });\nObject.defineProperty(exports, \"MapperTypeNames\", { enumerable: true, get: function () { return serializer_js_1.MapperTypeNames; } });\nvar serviceClient_js_1 = require(\"./serviceClient.js\");\nObject.defineProperty(exports, \"ServiceClient\", { enumerable: true, get: function () { return serviceClient_js_1.ServiceClient; } });\nvar pipeline_js_1 = require(\"./pipeline.js\");\nObject.defineProperty(exports, \"createClientPipeline\", { enumerable: true, get: function () { return pipeline_js_1.createClientPipeline; } });\nvar interfaces_js_1 = require(\"./interfaces.js\");\nObject.defineProperty(exports, \"XML_ATTRKEY\", { enumerable: true, get: function () { return interfaces_js_1.XML_ATTRKEY; } });\nObject.defineProperty(exports, \"XML_CHARKEY\", { enumerable: true, get: function () { return interfaces_js_1.XML_CHARKEY; } });\nvar deserializationPolicy_js_1 = require(\"./deserializationPolicy.js\");\nObject.defineProperty(exports, \"deserializationPolicy\", { enumerable: true, get: function () { return deserializationPolicy_js_1.deserializationPolicy; } });\nObject.defineProperty(exports, \"deserializationPolicyName\", { enumerable: true, get: function () { return deserializationPolicy_js_1.deserializationPolicyName; } });\nvar serializationPolicy_js_1 = require(\"./serializationPolicy.js\");\nObject.defineProperty(exports, \"serializationPolicy\", { enumerable: true, get: function () { return serializationPolicy_js_1.serializationPolicy; } });\nObject.defineProperty(exports, \"serializationPolicyName\", { enumerable: true, get: function () { return serializationPolicy_js_1.serializationPolicyName; } });\nvar authorizeRequestOnClaimChallenge_js_1 = require(\"./authorizeRequestOnClaimChallenge.js\");\nObject.defineProperty(exports, \"authorizeRequestOnClaimChallenge\", { enumerable: true, get: function () { return authorizeRequestOnClaimChallenge_js_1.authorizeRequestOnClaimChallenge; } });\nvar authorizeRequestOnTenantChallenge_js_1 = require(\"./authorizeRequestOnTenantChallenge.js\");\nObject.defineProperty(exports, \"authorizeRequestOnTenantChallenge\", { enumerable: true, get: function () { return authorizeRequestOnTenantChallenge_js_1.authorizeRequestOnTenantChallenge; } });\n//# sourceMappingURL=index.js.map","\"use strict\";\n/*\n * Copyright (c) Microsoft Corporation.\n * Licensed under the MIT License.\n *\n * Code generated by Microsoft (R) AutoRest Code Generator.\n * Changes may cause incorrect behavior and will be lost if the code is regenerated.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ProviderConsentDefinition = exports.ProviderRegistrationRequest = exports.Permission = exports.RoleDefinition = exports.ProviderPermission = exports.ProviderPermissionListResult = exports.DeploymentWhatIf = exports.WhatIfPropertyChange = exports.WhatIfChange = exports.WhatIfOperationResult = exports.DeploymentWhatIfSettings = exports.ScopedDeploymentWhatIf = exports.ScopedDeployment = exports.DeploymentListResult = exports.DeploymentExportResult = exports.DeploymentValidateResult = exports.DeploymentDiagnosticsDefinition = exports.ResourceReference = exports.OnErrorDeploymentExtended = exports.DeploymentExtensionDefinition = exports.BasicDependency = exports.Dependency = exports.ApiProfile = exports.ZoneMapping = exports.AliasPathMetadata = exports.AliasPattern = exports.AliasPath = exports.Alias = exports.ProviderExtendedLocation = exports.ProviderResourceType = exports.Provider = exports.DeploymentPropertiesExtended = exports.DeploymentExtended = exports.ExpressionEvaluationOptions = exports.OnErrorDeployment = exports.DebugSetting = exports.DeploymentExtensionConfigItem = exports.ParametersLink = exports.KeyVaultReference = exports.KeyVaultParameterReference = exports.DeploymentParameter = exports.TemplateLink = exports.DeploymentProperties = exports.Deployment = exports.ErrorAdditionalInfo = exports.ErrorResponse = exports.CloudError = exports.OperationDisplay = exports.Operation = exports.OperationListResult = void 0;\nexports.TagsDeleteAtScopeHeaders = exports.TagsUpdateAtScopeHeaders = exports.TagsCreateOrUpdateAtScopeHeaders = exports.ResourceGroupsDeleteHeaders = exports.DeploymentsWhatIfHeaders = exports.DeploymentsWhatIfAtSubscriptionScopeHeaders = exports.DeploymentsWhatIfAtManagementGroupScopeHeaders = exports.DeploymentsWhatIfAtTenantScopeHeaders = exports.GenericResourceExpanded = exports.GenericResource = exports.DeploymentWhatIfProperties = exports.SubResource = exports.ResourceProviderOperationDisplayProperties = exports.ResourceGroupFilter = exports.GenericResourceFilter = exports.DeploymentExtendedFilter = exports.TagsPatchResource = exports.Tags = exports.TagsResource = exports.TemplateHashResult = exports.DeploymentOperationsListResult = exports.HttpMessage = exports.TargetResource = exports.StatusMessage = exports.DeploymentOperationProperties = exports.DeploymentOperation = exports.TagsListResult = exports.TagDetails = exports.TagCount = exports.TagValue = exports.ResourcesMoveInfo = exports.ResourceGroupListResult = exports.ResourceGroupExportResult = exports.ExportTemplateRequest = exports.ResourceGroupPatchable = exports.ResourceGroupProperties = exports.ResourceGroup = exports.ExtendedLocation = exports.Resource = exports.IdentityUserAssignedIdentitiesValue = exports.Identity = exports.Sku = exports.Plan = exports.ResourceListResult = exports.ProviderResourceTypeListResult = exports.ProviderListResult = void 0;\nexports.OperationListResult = {\n type: {\n name: \"Composite\",\n className: \"OperationListResult\",\n modelProperties: {\n value: {\n serializedName: \"value\",\n type: {\n name: \"Sequence\",\n element: {\n type: {\n name: \"Composite\",\n className: \"Operation\",\n },\n },\n },\n },\n nextLink: {\n serializedName: \"nextLink\",\n type: {\n name: \"String\",\n },\n },\n },\n },\n};\nexports.Operation = {\n type: {\n name: \"Composite\",\n className: \"Operation\",\n modelProperties: {\n name: {\n serializedName: \"name\",\n type: {\n name: \"String\",\n },\n },\n display: {\n serializedName: \"display\",\n type: {\n name: \"Composite\",\n className: \"OperationDisplay\",\n },\n },\n },\n },\n};\nexports.OperationDisplay = {\n type: {\n name: \"Composite\",\n className: \"OperationDisplay\",\n modelProperties: {\n provider: {\n serializedName: \"provider\",\n type: {\n name: \"String\",\n },\n },\n resource: {\n serializedName: \"resource\",\n type: {\n name: \"String\",\n },\n },\n operation: {\n serializedName: \"operation\",\n type: {\n name: \"String\",\n },\n },\n description: {\n serializedName: \"description\",\n type: {\n name: \"String\",\n },\n },\n },\n },\n};\nexports.CloudError = {\n type: {\n name: \"Composite\",\n className: \"CloudError\",\n modelProperties: {\n error: {\n serializedName: \"error\",\n type: {\n name: \"Composite\",\n className: \"ErrorResponse\",\n },\n },\n },\n },\n};\nexports.ErrorResponse = {\n type: {\n name: \"Composite\",\n className: \"ErrorResponse\",\n modelProperties: {\n code: {\n serializedName: \"code\",\n readOnly: true,\n type: {\n name: \"String\",\n },\n },\n message: {\n serializedName: \"message\",\n readOnly: true,\n type: {\n name: \"String\",\n },\n },\n target: {\n serializedName: \"target\",\n readOnly: true,\n type: {\n name: \"String\",\n },\n },\n details: {\n serializedName: \"details\",\n readOnly: true,\n type: {\n name: \"Sequence\",\n element: {\n type: {\n name: \"Composite\",\n className: \"ErrorResponse\",\n },\n },\n },\n },\n additionalInfo: {\n serializedName: \"additionalInfo\",\n readOnly: true,\n type: {\n name: \"Sequence\",\n element: {\n type: {\n name: \"Composite\",\n className: \"ErrorAdditionalInfo\",\n },\n },\n },\n },\n },\n },\n};\nexports.ErrorAdditionalInfo = {\n type: {\n name: \"Composite\",\n className: \"ErrorAdditionalInfo\",\n modelProperties: {\n type: {\n serializedName: \"type\",\n readOnly: true,\n type: {\n name: \"String\",\n },\n },\n info: {\n serializedName: \"info\",\n readOnly: true,\n type: {\n name: \"Dictionary\",\n value: { type: { name: \"any\" } },\n },\n },\n },\n },\n};\nexports.Deployment = {\n type: {\n name: \"Composite\",\n className: \"Deployment\",\n modelProperties: {\n location: {\n serializedName: \"location\",\n type: {\n name: \"String\",\n },\n },\n properties: {\n serializedName: \"properties\",\n type: {\n name: \"Composite\",\n className: \"DeploymentProperties\",\n },\n },\n tags: {\n serializedName: \"tags\",\n type: {\n name: \"Dictionary\",\n value: { type: { name: \"String\" } },\n },\n },\n },\n },\n};\nexports.DeploymentProperties = {\n type: {\n name: \"Composite\",\n className: \"DeploymentProperties\",\n modelProperties: {\n template: {\n serializedName: \"template\",\n type: {\n name: \"Dictionary\",\n value: { type: { name: \"any\" } },\n },\n },\n templateLink: {\n serializedName: \"templateLink\",\n type: {\n name: \"Composite\",\n className: \"TemplateLink\",\n },\n },\n parameters: {\n serializedName: \"parameters\",\n type: {\n name: \"Dictionary\",\n value: {\n type: { name: \"Composite\", className: \"DeploymentParameter\" },\n },\n },\n },\n parametersLink: {\n serializedName: \"parametersLink\",\n type: {\n name: \"Composite\",\n className: \"ParametersLink\",\n },\n },\n extensionConfigs: {\n serializedName: \"extensionConfigs\",\n type: {\n name: \"Dictionary\",\n value: {\n type: {\n name: \"Dictionary\",\n value: {\n type: {\n name: \"Composite\",\n className: \"DeploymentExtensionConfigItem\",\n },\n },\n },\n },\n },\n },\n mode: {\n serializedName: \"mode\",\n required: true,\n type: {\n name: \"Enum\",\n allowedValues: [\"Incremental\", \"Complete\"],\n },\n },\n debugSetting: {\n serializedName: \"debugSetting\",\n type: {\n name: \"Composite\",\n className: \"DebugSetting\",\n },\n },\n onErrorDeployment: {\n serializedName: \"onErrorDeployment\",\n type: {\n name: \"Composite\",\n className: \"OnErrorDeployment\",\n },\n },\n expressionEvaluationOptions: {\n serializedName: \"expressionEvaluationOptions\",\n type: {\n name: \"Composite\",\n className: \"ExpressionEvaluationOptions\",\n },\n },\n validationLevel: {\n serializedName: \"validationLevel\",\n type: {\n name: \"String\",\n },\n },\n },\n },\n};\nexports.TemplateLink = {\n type: {\n name: \"Composite\",\n className: \"TemplateLink\",\n modelProperties: {\n uri: {\n serializedName: \"uri\",\n type: {\n name: \"String\",\n },\n },\n id: {\n serializedName: \"id\",\n type: {\n name: \"String\",\n },\n },\n relativePath: {\n serializedName: \"relativePath\",\n type: {\n name: \"String\",\n },\n },\n contentVersion: {\n serializedName: \"contentVersion\",\n type: {\n name: \"String\",\n },\n },\n queryString: {\n serializedName: \"queryString\",\n type: {\n name: \"String\",\n },\n },\n },\n },\n};\nexports.DeploymentParameter = {\n type: {\n name: \"Composite\",\n className: \"DeploymentParameter\",\n modelProperties: {\n value: {\n serializedName: \"value\",\n type: {\n name: \"any\",\n },\n },\n reference: {\n serializedName: \"reference\",\n type: {\n name: \"Composite\",\n className: \"KeyVaultParameterReference\",\n },\n },\n },\n },\n};\nexports.KeyVaultParameterReference = {\n type: {\n name: \"Composite\",\n className: \"KeyVaultParameterReference\",\n modelProperties: {\n keyVault: {\n serializedName: \"keyVault\",\n type: {\n name: \"Composite\",\n className: \"KeyVaultReference\",\n },\n },\n secretName: {\n serializedName: \"secretName\",\n required: true,\n type: {\n name: \"String\",\n },\n },\n secretVersion: {\n serializedName: \"secretVersion\",\n type: {\n name: \"String\",\n },\n },\n },\n },\n};\nexports.KeyVaultReference = {\n type: {\n name: \"Composite\",\n className: \"KeyVaultReference\",\n modelProperties: {\n id: {\n serializedName: \"id\",\n required: true,\n type: {\n name: \"String\",\n },\n },\n },\n },\n};\nexports.ParametersLink = {\n type: {\n name: \"Composite\",\n className: \"ParametersLink\",\n modelProperties: {\n uri: {\n serializedName: \"uri\",\n required: true,\n type: {\n name: \"String\",\n },\n },\n contentVersion: {\n serializedName: \"contentVersion\",\n type: {\n name: \"String\",\n },\n },\n },\n },\n};\nexports.DeploymentExtensionConfigItem = {\n type: {\n name: \"Composite\",\n className: \"DeploymentExtensionConfigItem\",\n modelProperties: {\n type: {\n serializedName: \"type\",\n readOnly: true,\n type: {\n name: \"String\",\n },\n },\n value: {\n serializedName: \"value\",\n type: {\n name: \"any\",\n },\n },\n keyVaultReference: {\n serializedName: \"keyVaultReference\",\n type: {\n name: \"Composite\",\n className: \"KeyVaultParameterReference\",\n },\n },\n },\n },\n};\nexports.DebugSetting = {\n type: {\n name: \"Composite\",\n className: \"DebugSetting\",\n modelProperties: {\n detailLevel: {\n serializedName: \"detailLevel\",\n type: {\n name: \"String\",\n },\n },\n },\n },\n};\nexports.OnErrorDeployment = {\n type: {\n name: \"Composite\",\n className: \"OnErrorDeployment\",\n modelProperties: {\n type: {\n serializedName: \"type\",\n type: {\n name: \"Enum\",\n allowedValues: [\"LastSuccessful\", \"SpecificDeployment\"],\n },\n },\n deploymentName: {\n serializedName: \"deploymentName\",\n type: {\n name: \"String\",\n },\n },\n },\n },\n};\nexports.ExpressionEvaluationOptions = {\n type: {\n name: \"Composite\",\n className: \"ExpressionEvaluationOptions\",\n modelProperties: {\n scope: {\n serializedName: \"scope\",\n type: {\n name: \"String\",\n },\n },\n },\n },\n};\nexports.DeploymentExtended = {\n type: {\n name: \"Composite\",\n className: \"DeploymentExtended\",\n modelProperties: {\n id: {\n serializedName: \"id\",\n readOnly: true,\n type: {\n name: \"String\",\n },\n },\n name: {\n serializedName: \"name\",\n readOnly: true,\n type: {\n name: \"String\",\n },\n },\n type: {\n serializedName: \"type\",\n readOnly: true,\n type: {\n name: \"String\",\n },\n },\n location: {\n serializedName: \"location\",\n type: {\n name: \"String\",\n },\n },\n properties: {\n serializedName: \"properties\",\n type: {\n name: \"Composite\",\n className: \"DeploymentPropertiesExtended\",\n },\n },\n tags: {\n serializedName: \"tags\",\n type: {\n name: \"Dictionary\",\n value: { type: { name: \"String\" } },\n },\n },\n },\n },\n};\nexports.DeploymentPropertiesExtended = {\n type: {\n name: \"Composite\",\n className: \"DeploymentPropertiesExtended\",\n modelProperties: {\n provisioningState: {\n serializedName: \"provisioningState\",\n readOnly: true,\n type: {\n name: \"String\",\n },\n },\n correlationId: {\n serializedName: \"correlationId\",\n readOnly: true,\n type: {\n name: \"String\",\n },\n },\n timestamp: {\n serializedName: \"timestamp\",\n readOnly: true,\n type: {\n name: \"DateTime\",\n },\n },\n duration: {\n serializedName: \"duration\",\n readOnly: true,\n type: {\n name: \"String\",\n },\n },\n outputs: {\n serializedName: \"outputs\",\n readOnly: true,\n type: {\n name: \"Dictionary\",\n value: { type: { name: \"any\" } },\n },\n },\n providers: {\n serializedName: \"providers\",\n readOnly: true,\n type: {\n name: \"Sequence\",\n element: {\n type: {\n name: \"Composite\",\n className: \"Provider\",\n },\n },\n },\n },\n dependencies: {\n serializedName: \"dependencies\",\n readOnly: true,\n type: {\n name: \"Sequence\",\n element: {\n type: {\n name: \"Composite\",\n className: \"Dependency\",\n },\n },\n },\n },\n templateLink: {\n serializedName: \"templateLink\",\n type: {\n name: \"Composite\",\n className: \"TemplateLink\",\n },\n },\n parameters: {\n serializedName: \"parameters\",\n readOnly: true,\n type: {\n name: \"Dictionary\",\n value: { type: { name: \"any\" } },\n },\n },\n parametersLink: {\n serializedName: \"parametersLink\",\n type: {\n name: \"Composite\",\n className: \"ParametersLink\",\n },\n },\n extensions: {\n serializedName: \"extensions\",\n readOnly: true,\n type: {\n name: \"Sequence\",\n element: {\n type: {\n name: \"Composite\",\n className: \"DeploymentExtensionDefinition\",\n },\n },\n },\n },\n mode: {\n serializedName: \"mode\",\n readOnly: true,\n type: {\n name: \"Enum\",\n allowedValues: [\"Incremental\", \"Complete\"],\n },\n },\n debugSetting: {\n serializedName: \"debugSetting\",\n type: {\n name: \"Composite\",\n className: \"DebugSetting\",\n },\n },\n onErrorDeployment: {\n serializedName: \"onErrorDeployment\",\n type: {\n name: \"Composite\",\n className: \"OnErrorDeploymentExtended\",\n },\n },\n templateHash: {\n serializedName: \"templateHash\",\n readOnly: true,\n type: {\n name: \"String\",\n },\n },\n outputResources: {\n serializedName: \"outputResources\",\n readOnly: true,\n type: {\n name: \"Sequence\",\n element: {\n type: {\n name: \"Composite\",\n className: \"ResourceReference\",\n },\n },\n },\n },\n validatedResources: {\n serializedName: \"validatedResources\",\n readOnly: true,\n type: {\n name: \"Sequence\",\n element: {\n type: {\n name: \"Composite\",\n className: \"ResourceReference\",\n },\n },\n },\n },\n error: {\n serializedName: \"error\",\n type: {\n name: \"Composite\",\n className: \"ErrorResponse\",\n },\n },\n diagnostics: {\n serializedName: \"diagnostics\",\n readOnly: true,\n type: {\n name: \"Sequence\",\n element: {\n type: {\n name: \"Composite\",\n className: \"DeploymentDiagnosticsDefinition\",\n },\n },\n },\n },\n validationLevel: {\n serializedName: \"validationLevel\",\n type: {\n name: \"String\",\n },\n },\n },\n },\n};\nexports.Provider = {\n type: {\n name: \"Composite\",\n className: \"Provider\",\n modelProperties: {\n id: {\n serializedName: \"id\",\n readOnly: true,\n type: {\n name: \"String\",\n },\n },\n namespace: {\n serializedName: \"namespace\",\n type: {\n name: \"String\",\n },\n },\n registrationState: {\n serializedName: \"registrationState\",\n readOnly: true,\n type: {\n name: \"String\",\n },\n },\n registrationPolicy: {\n serializedName: \"registrationPolicy\",\n readOnly: true,\n type: {\n name: \"String\",\n },\n },\n resourceTypes: {\n serializedName: \"resourceTypes\",\n readOnly: true,\n type: {\n name: \"Sequence\",\n element: {\n type: {\n name: \"Composite\",\n className: \"ProviderResourceType\",\n },\n },\n },\n },\n providerAuthorizationConsentState: {\n serializedName: \"providerAuthorizationConsentState\",\n type: {\n name: \"String\",\n },\n },\n },\n },\n};\nexports.ProviderResourceType = {\n type: {\n name: \"Composite\",\n className: \"ProviderResourceType\",\n modelProperties: {\n resourceType: {\n serializedName: \"resourceType\",\n type: {\n name: \"String\",\n },\n },\n locations: {\n serializedName: \"locations\",\n type: {\n name: \"Sequence\",\n element: {\n type: {\n name: \"String\",\n },\n },\n },\n },\n locationMappings: {\n serializedName: \"locationMappings\",\n type: {\n name: \"Sequence\",\n element: {\n type: {\n name: \"Composite\",\n className: \"ProviderExtendedLocation\",\n },\n },\n },\n },\n aliases: {\n serializedName: \"aliases\",\n type: {\n name: \"Sequence\",\n element: {\n type: {\n name: \"Composite\",\n className: \"Alias\",\n },\n },\n },\n },\n apiVersions: {\n serializedName: \"apiVersions\",\n type: {\n name: \"Sequence\",\n element: {\n type: {\n name: \"String\",\n },\n },\n },\n },\n defaultApiVersion: {\n serializedName: \"defaultApiVersion\",\n readOnly: true,\n type: {\n name: \"String\",\n },\n },\n zoneMappings: {\n serializedName: \"zoneMappings\",\n type: {\n name: \"Sequence\",\n element: {\n type: {\n name: \"Composite\",\n className: \"ZoneMapping\",\n },\n },\n },\n },\n apiProfiles: {\n serializedName: \"apiProfiles\",\n readOnly: true,\n type: {\n name: \"Sequence\",\n element: {\n type: {\n name: \"Composite\",\n className: \"ApiProfile\",\n },\n },\n },\n },\n capabilities: {\n serializedName: \"capabilities\",\n type: {\n name: \"String\",\n },\n },\n properties: {\n serializedName: \"properties\",\n type: {\n name: \"Dictionary\",\n value: { type: { name: \"String\" } },\n },\n },\n },\n },\n};\nexports.ProviderExtendedLocation = {\n type: {\n name: \"Composite\",\n className: \"ProviderExtendedLocation\",\n modelProperties: {\n location: {\n serializedName: \"location\",\n type: {\n name: \"String\",\n },\n },\n type: {\n serializedName: \"type\",\n type: {\n name: \"String\",\n },\n },\n extendedLocations: {\n serializedName: \"extendedLocations\",\n type: {\n name: \"Sequence\",\n element: {\n type: {\n name: \"String\",\n },\n },\n },\n },\n },\n },\n};\nexports.Alias = {\n type: {\n name: \"Composite\",\n className: \"Alias\",\n modelProperties: {\n name: {\n serializedName: \"name\",\n type: {\n name: \"String\",\n },\n },\n paths: {\n serializedName: \"paths\",\n type: {\n name: \"Sequence\",\n element: {\n type: {\n name: \"Composite\",\n className: \"AliasPath\",\n },\n },\n },\n },\n type: {\n serializedName: \"type\",\n type: {\n name: \"Enum\",\n allowedValues: [\"NotSpecified\", \"PlainText\", \"Mask\"],\n },\n },\n defaultPath: {\n serializedName: \"defaultPath\",\n type: {\n name: \"String\",\n },\n },\n defaultPattern: {\n serializedName: \"defaultPattern\",\n type: {\n name: \"Composite\",\n className: \"AliasPattern\",\n },\n },\n defaultMetadata: {\n serializedName: \"defaultMetadata\",\n type: {\n name: \"Composite\",\n className: \"AliasPathMetadata\",\n },\n },\n },\n },\n};\nexports.AliasPath = {\n type: {\n name: \"Composite\",\n className: \"AliasPath\",\n modelProperties: {\n path: {\n serializedName: \"path\",\n type: {\n name: \"String\",\n },\n },\n apiVersions: {\n serializedName: \"apiVersions\",\n type: {\n name: \"Sequence\",\n element: {\n type: {\n name: \"String\",\n },\n },\n },\n },\n pattern: {\n serializedName: \"pattern\",\n type: {\n name: \"Composite\",\n className: \"AliasPattern\",\n },\n },\n metadata: {\n serializedName: \"metadata\",\n type: {\n name: \"Composite\",\n className: \"AliasPathMetadata\",\n },\n },\n },\n },\n};\nexports.AliasPattern = {\n type: {\n name: \"Composite\",\n className: \"AliasPattern\",\n modelProperties: {\n phrase: {\n serializedName: \"phrase\",\n type: {\n name: \"String\",\n },\n },\n variable: {\n serializedName: \"variable\",\n type: {\n name: \"String\",\n },\n },\n type: {\n serializedName: \"type\",\n type: {\n name: \"Enum\",\n allowedValues: [\"NotSpecified\", \"Extract\"],\n },\n },\n },\n },\n};\nexports.AliasPathMetadata = {\n type: {\n name: \"Composite\",\n className: \"AliasPathMetadata\",\n modelProperties: {\n type: {\n serializedName: \"type\",\n readOnly: true,\n type: {\n name: \"String\",\n },\n },\n attributes: {\n serializedName: \"attributes\",\n readOnly: true,\n type: {\n name: \"String\",\n },\n },\n },\n },\n};\nexports.ZoneMapping = {\n type: {\n name: \"Composite\",\n className: \"ZoneMapping\",\n modelProperties: {\n location: {\n serializedName: \"location\",\n type: {\n name: \"String\",\n },\n },\n zones: {\n serializedName: \"zones\",\n type: {\n name: \"Sequence\",\n element: {\n type: {\n name: \"String\",\n },\n },\n },\n },\n },\n },\n};\nexports.ApiProfile = {\n type: {\n name: \"Composite\",\n className: \"ApiProfile\",\n modelProperties: {\n profileVersion: {\n serializedName: \"profileVersion\",\n readOnly: true,\n type: {\n name: \"String\",\n },\n },\n apiVersion: {\n serializedName: \"apiVersion\",\n readOnly: true,\n type: {\n name: \"String\",\n },\n },\n },\n },\n};\nexports.Dependency = {\n type: {\n name: \"Composite\",\n className: \"Dependency\",\n modelProperties: {\n dependsOn: {\n serializedName: \"dependsOn\",\n type: {\n name: \"Sequence\",\n element: {\n type: {\n name: \"Composite\",\n className: \"BasicDependency\",\n },\n },\n },\n },\n id: {\n serializedName: \"id\",\n type: {\n name: \"String\",\n },\n },\n resourceType: {\n serializedName: \"resourceType\",\n type: {\n name: \"String\",\n },\n },\n resourceName: {\n serializedName: \"resourceName\",\n type: {\n name: \"String\",\n },\n },\n },\n },\n};\nexports.BasicDependency = {\n type: {\n name: \"Composite\",\n className: \"BasicDependency\",\n modelProperties: {\n id: {\n serializedName: \"id\",\n type: {\n name: \"String\",\n },\n },\n resourceType: {\n serializedName: \"resourceType\",\n type: {\n name: \"String\",\n },\n },\n resourceName: {\n serializedName: \"resourceName\",\n type: {\n name: \"String\",\n },\n },\n },\n },\n};\nexports.DeploymentExtensionDefinition = {\n type: {\n name: \"Composite\",\n className: \"DeploymentExtensionDefinition\",\n modelProperties: {\n alias: {\n serializedName: \"alias\",\n readOnly: true,\n type: {\n name: \"String\",\n },\n },\n name: {\n serializedName: \"name\",\n readOnly: true,\n type: {\n name: \"String\",\n },\n },\n version: {\n serializedName: \"version\",\n readOnly: true,\n type: {\n name: \"String\",\n },\n },\n configId: {\n serializedName: \"configId\",\n readOnly: true,\n type: {\n name: \"String\",\n },\n },\n config: {\n serializedName: \"config\",\n readOnly: true,\n type: {\n name: \"Dictionary\",\n value: {\n type: {\n name: \"Composite\",\n className: \"DeploymentExtensionConfigItem\",\n },\n },\n },\n },\n },\n },\n};\nexports.OnErrorDeploymentExtended = {\n type: {\n name: \"Composite\",\n className: \"OnErrorDeploymentExtended\",\n modelProperties: {\n provisioningState: {\n serializedName: \"provisioningState\",\n readOnly: true,\n type: {\n name: \"String\",\n },\n },\n type: {\n serializedName: \"type\",\n type: {\n name: \"Enum\",\n allowedValues: [\"LastSuccessful\", \"SpecificDeployment\"],\n },\n },\n deploymentName: {\n serializedName: \"deploymentName\",\n type: {\n name: \"String\",\n },\n },\n },\n },\n};\nexports.ResourceReference = {\n type: {\n name: \"Composite\",\n className: \"ResourceReference\",\n modelProperties: {\n id: {\n serializedName: \"id\",\n readOnly: true,\n type: {\n name: \"String\",\n },\n },\n extension: {\n serializedName: \"extension\",\n type: {\n name: \"Composite\",\n className: \"DeploymentExtensionDefinition\",\n },\n },\n resourceType: {\n serializedName: \"resourceType\",\n readOnly: true,\n type: {\n name: \"String\",\n },\n },\n identifiers: {\n serializedName: \"identifiers\",\n readOnly: true,\n type: {\n name: \"Dictionary\",\n value: { type: { name: \"any\" } },\n },\n },\n apiVersion: {\n serializedName: \"apiVersion\",\n readOnly: true,\n type: {\n name: \"String\",\n },\n },\n },\n },\n};\nexports.DeploymentDiagnosticsDefinition = {\n type: {\n name: \"Composite\",\n className: \"DeploymentDiagnosticsDefinition\",\n modelProperties: {\n level: {\n serializedName: \"level\",\n required: true,\n readOnly: true,\n type: {\n name: \"String\",\n },\n },\n code: {\n serializedName: \"code\",\n required: true,\n readOnly: true,\n type: {\n name: \"String\",\n },\n },\n message: {\n serializedName: \"message\",\n required: true,\n readOnly: true,\n type: {\n name: \"String\",\n },\n },\n target: {\n serializedName: \"target\",\n readOnly: true,\n type: {\n name: \"String\",\n },\n },\n additionalInfo: {\n serializedName: \"additionalInfo\",\n readOnly: true,\n type: {\n name: \"Sequence\",\n element: {\n type: {\n name: \"Composite\",\n className: \"ErrorAdditionalInfo\",\n },\n },\n },\n },\n },\n },\n};\nexports.DeploymentValidateResult = {\n type: {\n name: \"Composite\",\n className: \"DeploymentValidateResult\",\n modelProperties: {\n error: {\n serializedName: \"error\",\n type: {\n name: \"Composite\",\n className: \"ErrorResponse\",\n },\n },\n id: {\n serializedName: \"id\",\n readOnly: true,\n type: {\n name: \"String\",\n },\n },\n name: {\n serializedName: \"name\",\n readOnly: true,\n type: {\n name: \"String\",\n },\n },\n type: {\n serializedName: \"type\",\n readOnly: true,\n type: {\n name: \"String\",\n },\n },\n properties: {\n serializedName: \"properties\",\n type: {\n name: \"Composite\",\n className: \"DeploymentPropertiesExtended\",\n },\n },\n },\n },\n};\nexports.DeploymentExportResult = {\n type: {\n name: \"Composite\",\n className: \"DeploymentExportResult\",\n modelProperties: {\n template: {\n serializedName: \"template\",\n type: {\n name: \"Dictionary\",\n value: { type: { name: \"any\" } },\n },\n },\n },\n },\n};\nexports.DeploymentListResult = {\n type: {\n name: \"Composite\",\n className: \"DeploymentListResult\",\n modelProperties: {\n value: {\n serializedName: \"value\",\n type: {\n name: \"Sequence\",\n element: {\n type: {\n name: \"Composite\",\n className: \"DeploymentExtended\",\n },\n },\n },\n },\n nextLink: {\n serializedName: \"nextLink\",\n readOnly: true,\n type: {\n name: \"String\",\n },\n },\n },\n },\n};\nexports.ScopedDeployment = {\n type: {\n name: \"Composite\",\n className: \"ScopedDeployment\",\n modelProperties: {\n location: {\n serializedName: \"location\",\n required: true,\n type: {\n name: \"String\",\n },\n },\n properties: {\n serializedName: \"properties\",\n type: {\n name: \"Composite\",\n className: \"DeploymentProperties\",\n },\n },\n tags: {\n serializedName: \"tags\",\n type: {\n name: \"Dictionary\",\n value: { type: { name: \"String\" } },\n },\n },\n },\n },\n};\nexports.ScopedDeploymentWhatIf = {\n type: {\n name: \"Composite\",\n className: \"ScopedDeploymentWhatIf\",\n modelProperties: {\n location: {\n serializedName: \"location\",\n required: true,\n type: {\n name: \"String\",\n },\n },\n properties: {\n serializedName: \"properties\",\n type: {\n name: \"Composite\",\n className: \"DeploymentWhatIfProperties\",\n },\n },\n },\n },\n};\nexports.DeploymentWhatIfSettings = {\n type: {\n name: \"Composite\",\n className: \"DeploymentWhatIfSettings\",\n modelProperties: {\n resultFormat: {\n serializedName: \"resultFormat\",\n type: {\n name: \"Enum\",\n allowedValues: [\"ResourceIdOnly\", \"FullResourcePayloads\"],\n },\n },\n },\n },\n};\nexports.WhatIfOperationResult = {\n type: {\n name: \"Composite\",\n className: \"WhatIfOperationResult\",\n modelProperties: {\n status: {\n serializedName: \"status\",\n type: {\n name: \"String\",\n },\n },\n error: {\n serializedName: \"error\",\n type: {\n name: \"Composite\",\n className: \"ErrorResponse\",\n },\n },\n changes: {\n serializedName: \"properties.changes\",\n type: {\n name: \"Sequence\",\n element: {\n type: {\n name: \"Composite\",\n className: \"WhatIfChange\",\n },\n },\n },\n },\n potentialChanges: {\n serializedName: \"properties.potentialChanges\",\n type: {\n name: \"Sequence\",\n element: {\n type: {\n name: \"Composite\",\n className: \"WhatIfChange\",\n },\n },\n },\n },\n diagnostics: {\n serializedName: \"properties.diagnostics\",\n readOnly: true,\n type: {\n name: \"Sequence\",\n element: {\n type: {\n name: \"Composite\",\n className: \"DeploymentDiagnosticsDefinition\",\n },\n },\n },\n },\n },\n },\n};\nexports.WhatIfChange = {\n type: {\n name: \"Composite\",\n className: \"WhatIfChange\",\n modelProperties: {\n resourceId: {\n serializedName: \"resourceId\",\n type: {\n name: \"String\",\n },\n },\n deploymentId: {\n serializedName: \"deploymentId\",\n type: {\n name: \"String\",\n },\n },\n symbolicName: {\n serializedName: \"symbolicName\",\n type: {\n name: \"String\",\n },\n },\n identifiers: {\n serializedName: \"identifiers\",\n type: {\n name: \"Dictionary\",\n value: { type: { name: \"any\" } },\n },\n },\n changeType: {\n serializedName: \"changeType\",\n required: true,\n type: {\n name: \"Enum\",\n allowedValues: [\n \"Create\",\n \"Delete\",\n \"Ignore\",\n \"Deploy\",\n \"NoChange\",\n \"Modify\",\n \"Unsupported\",\n ],\n },\n },\n unsupportedReason: {\n serializedName: \"unsupportedReason\",\n type: {\n name: \"String\",\n },\n },\n before: {\n serializedName: \"before\",\n type: {\n name: \"Dictionary\",\n value: { type: { name: \"any\" } },\n },\n },\n after: {\n serializedName: \"after\",\n type: {\n name: \"Dictionary\",\n value: { type: { name: \"any\" } },\n },\n },\n delta: {\n serializedName: \"delta\",\n type: {\n name: \"Sequence\",\n element: {\n type: {\n name: \"Composite\",\n className: \"WhatIfPropertyChange\",\n },\n },\n },\n },\n },\n },\n};\nexports.WhatIfPropertyChange = {\n type: {\n name: \"Composite\",\n className: \"WhatIfPropertyChange\",\n modelProperties: {\n path: {\n serializedName: \"path\",\n required: true,\n type: {\n name: \"String\",\n },\n },\n propertyChangeType: {\n serializedName: \"propertyChangeType\",\n required: true,\n type: {\n name: \"Enum\",\n allowedValues: [\"Create\", \"Delete\", \"Modify\", \"Array\", \"NoEffect\"],\n },\n },\n before: {\n serializedName: \"before\",\n type: {\n name: \"Dictionary\",\n value: { type: { name: \"any\" } },\n },\n },\n after: {\n serializedName: \"after\",\n type: {\n name: \"Dictionary\",\n value: { type: { name: \"any\" } },\n },\n },\n children: {\n serializedName: \"children\",\n type: {\n name: \"Sequence\",\n element: {\n type: {\n name: \"Composite\",\n className: \"WhatIfPropertyChange\",\n },\n },\n },\n },\n },\n },\n};\nexports.DeploymentWhatIf = {\n type: {\n name: \"Composite\",\n className: \"DeploymentWhatIf\",\n modelProperties: {\n location: {\n serializedName: \"location\",\n type: {\n name: \"String\",\n },\n },\n properties: {\n serializedName: \"properties\",\n type: {\n name: \"Composite\",\n className: \"DeploymentWhatIfProperties\",\n },\n },\n },\n },\n};\nexports.ProviderPermissionListResult = {\n type: {\n name: \"Composite\",\n className: \"ProviderPermissionListResult\",\n modelProperties: {\n value: {\n serializedName: \"value\",\n type: {\n name: \"Sequence\",\n element: {\n type: {\n name: \"Composite\",\n className: \"ProviderPermission\",\n },\n },\n },\n },\n nextLink: {\n serializedName: \"nextLink\",\n readOnly: true,\n type: {\n name: \"String\",\n },\n },\n },\n },\n};\nexports.ProviderPermission = {\n type: {\n name: \"Composite\",\n className: \"ProviderPermission\",\n modelProperties: {\n applicationId: {\n serializedName: \"applicationId\",\n type: {\n name: \"String\",\n },\n },\n roleDefinition: {\n serializedName: \"roleDefinition\",\n type: {\n name: \"Composite\",\n className: \"RoleDefinition\",\n },\n },\n managedByRoleDefinition: {\n serializedName: \"managedByRoleDefinition\",\n type: {\n name: \"Composite\",\n className: \"RoleDefinition\",\n },\n },\n providerAuthorizationConsentState: {\n serializedName: \"providerAuthorizationConsentState\",\n type: {\n name: \"String\",\n },\n },\n },\n },\n};\nexports.RoleDefinition = {\n type: {\n name: \"Composite\",\n className: \"RoleDefinition\",\n modelProperties: {\n id: {\n serializedName: \"id\",\n type: {\n name: \"String\",\n },\n },\n name: {\n serializedName: \"name\",\n type: {\n name: \"String\",\n },\n },\n isServiceRole: {\n serializedName: \"isServiceRole\",\n type: {\n name: \"Boolean\",\n },\n },\n permissions: {\n serializedName: \"permissions\",\n type: {\n name: \"Sequence\",\n element: {\n type: {\n name: \"Composite\",\n className: \"Permission\",\n },\n },\n },\n },\n scopes: {\n serializedName: \"scopes\",\n type: {\n name: \"Sequence\",\n element: {\n type: {\n name: \"String\",\n },\n },\n },\n },\n },\n },\n};\nexports.Permission = {\n type: {\n name: \"Composite\",\n className: \"Permission\",\n modelProperties: {\n actions: {\n serializedName: \"actions\",\n type: {\n name: \"Sequence\",\n element: {\n type: {\n name: \"String\",\n },\n },\n },\n },\n notActions: {\n serializedName: \"notActions\",\n type: {\n name: \"Sequence\",\n element: {\n type: {\n name: \"String\",\n },\n },\n },\n },\n dataActions: {\n serializedName: \"dataActions\",\n type: {\n name: \"Sequence\",\n element: {\n type: {\n name: \"String\",\n },\n },\n },\n },\n notDataActions: {\n serializedName: \"notDataActions\",\n type: {\n name: \"Sequence\",\n element: {\n type: {\n name: \"String\",\n },\n },\n },\n },\n },\n },\n};\nexports.ProviderRegistrationRequest = {\n type: {\n name: \"Composite\",\n className: \"ProviderRegistrationRequest\",\n modelProperties: {\n thirdPartyProviderConsent: {\n serializedName: \"thirdPartyProviderConsent\",\n type: {\n name: \"Composite\",\n className: \"ProviderConsentDefinition\",\n },\n },\n },\n },\n};\nexports.ProviderConsentDefinition = {\n type: {\n name: \"Composite\",\n className: \"ProviderConsentDefinition\",\n modelProperties: {\n consentToAuthorization: {\n serializedName: \"consentToAuthorization\",\n type: {\n name: \"Boolean\",\n },\n },\n },\n },\n};\nexports.ProviderListResult = {\n type: {\n name: \"Composite\",\n className: \"ProviderListResult\",\n modelProperties: {\n value: {\n serializedName: \"value\",\n type: {\n name: \"Sequence\",\n element: {\n type: {\n name: \"Composite\",\n className: \"Provider\",\n },\n },\n },\n },\n nextLink: {\n serializedName: \"nextLink\",\n readOnly: true,\n type: {\n name: \"String\",\n },\n },\n },\n },\n};\nexports.ProviderResourceTypeListResult = {\n type: {\n name: \"Composite\",\n className: \"ProviderResourceTypeListResult\",\n modelProperties: {\n value: {\n serializedName: \"value\",\n type: {\n name: \"Sequence\",\n element: {\n type: {\n name: \"Composite\",\n className: \"ProviderResourceType\",\n },\n },\n },\n },\n nextLink: {\n serializedName: \"nextLink\",\n readOnly: true,\n type: {\n name: \"String\",\n },\n },\n },\n },\n};\nexports.ResourceListResult = {\n type: {\n name: \"Composite\",\n className: \"ResourceListResult\",\n modelProperties: {\n value: {\n serializedName: \"value\",\n type: {\n name: \"Sequence\",\n element: {\n type: {\n name: \"Composite\",\n className: \"GenericResourceExpanded\",\n },\n },\n },\n },\n nextLink: {\n serializedName: \"nextLink\",\n readOnly: true,\n type: {\n name: \"String\",\n },\n },\n },\n },\n};\nexports.Plan = {\n type: {\n name: \"Composite\",\n className: \"Plan\",\n modelProperties: {\n name: {\n serializedName: \"name\",\n type: {\n name: \"String\",\n },\n },\n publisher: {\n serializedName: \"publisher\",\n type: {\n name: \"String\",\n },\n },\n product: {\n serializedName: \"product\",\n type: {\n name: \"String\",\n },\n },\n promotionCode: {\n serializedName: \"promotionCode\",\n type: {\n name: \"String\",\n },\n },\n version: {\n serializedName: \"version\",\n type: {\n name: \"String\",\n },\n },\n },\n },\n};\nexports.Sku = {\n type: {\n name: \"Composite\",\n className: \"Sku\",\n modelProperties: {\n name: {\n serializedName: \"name\",\n type: {\n name: \"String\",\n },\n },\n tier: {\n serializedName: \"tier\",\n type: {\n name: \"String\",\n },\n },\n size: {\n serializedName: \"size\",\n type: {\n name: \"String\",\n },\n },\n family: {\n serializedName: \"family\",\n type: {\n name: \"String\",\n },\n },\n model: {\n serializedName: \"model\",\n type: {\n name: \"String\",\n },\n },\n capacity: {\n serializedName: \"capacity\",\n type: {\n name: \"Number\",\n },\n },\n },\n },\n};\nexports.Identity = {\n type: {\n name: \"Composite\",\n className: \"Identity\",\n modelProperties: {\n principalId: {\n serializedName: \"principalId\",\n readOnly: true,\n type: {\n name: \"String\",\n },\n },\n tenantId: {\n serializedName: \"tenantId\",\n readOnly: true,\n type: {\n name: \"String\",\n },\n },\n type: {\n serializedName: \"type\",\n type: {\n name: \"Enum\",\n allowedValues: [\n \"SystemAssigned\",\n \"UserAssigned\",\n \"SystemAssigned, UserAssigned\",\n \"None\",\n ],\n },\n },\n userAssignedIdentities: {\n serializedName: \"userAssignedIdentities\",\n type: {\n name: \"Dictionary\",\n value: {\n type: {\n name: \"Composite\",\n className: \"IdentityUserAssignedIdentitiesValue\",\n },\n },\n },\n },\n },\n },\n};\nexports.IdentityUserAssignedIdentitiesValue = {\n type: {\n name: \"Composite\",\n className: \"IdentityUserAssignedIdentitiesValue\",\n modelProperties: {\n principalId: {\n serializedName: \"principalId\",\n readOnly: true,\n type: {\n name: \"String\",\n },\n },\n clientId: {\n serializedName: \"clientId\",\n readOnly: true,\n type: {\n name: \"String\",\n },\n },\n },\n },\n};\nexports.Resource = {\n type: {\n name: \"Composite\",\n className: \"Resource\",\n modelProperties: {\n id: {\n serializedName: \"id\",\n readOnly: true,\n type: {\n name: \"String\",\n },\n },\n name: {\n serializedName: \"name\",\n readOnly: true,\n type: {\n name: \"String\",\n },\n },\n type: {\n serializedName: \"type\",\n readOnly: true,\n type: {\n name: \"String\",\n },\n },\n location: {\n serializedName: \"location\",\n type: {\n name: \"String\",\n },\n },\n extendedLocation: {\n serializedName: \"extendedLocation\",\n type: {\n name: \"Composite\",\n className: \"ExtendedLocation\",\n },\n },\n tags: {\n serializedName: \"tags\",\n type: {\n name: \"Dictionary\",\n value: { type: { name: \"String\" } },\n },\n },\n },\n },\n};\nexports.ExtendedLocation = {\n type: {\n name: \"Composite\",\n className: \"ExtendedLocation\",\n modelProperties: {\n type: {\n serializedName: \"type\",\n type: {\n name: \"String\",\n },\n },\n name: {\n serializedName: \"name\",\n type: {\n name: \"String\",\n },\n },\n },\n },\n};\nexports.ResourceGroup = {\n type: {\n name: \"Composite\",\n className: \"ResourceGroup\",\n modelProperties: {\n id: {\n serializedName: \"id\",\n readOnly: true,\n type: {\n name: \"String\",\n },\n },\n name: {\n serializedName: \"name\",\n readOnly: true,\n type: {\n name: \"String\",\n },\n },\n type: {\n serializedName: \"type\",\n readOnly: true,\n type: {\n name: \"String\",\n },\n },\n properties: {\n serializedName: \"properties\",\n type: {\n name: \"Composite\",\n className: \"ResourceGroupProperties\",\n },\n },\n location: {\n serializedName: \"location\",\n required: true,\n type: {\n name: \"String\",\n },\n },\n managedBy: {\n serializedName: \"managedBy\",\n type: {\n name: \"String\",\n },\n },\n tags: {\n serializedName: \"tags\",\n type: {\n name: \"Dictionary\",\n value: { type: { name: \"String\" } },\n },\n },\n },\n },\n};\nexports.ResourceGroupProperties = {\n type: {\n name: \"Composite\",\n className: \"ResourceGroupProperties\",\n modelProperties: {\n provisioningState: {\n serializedName: \"provisioningState\",\n readOnly: true,\n type: {\n name: \"String\",\n },\n },\n },\n },\n};\nexports.ResourceGroupPatchable = {\n type: {\n name: \"Composite\",\n className: \"ResourceGroupPatchable\",\n modelProperties: {\n name: {\n serializedName: \"name\",\n type: {\n name: \"String\",\n },\n },\n properties: {\n serializedName: \"properties\",\n type: {\n name: \"Composite\",\n className: \"ResourceGroupProperties\",\n },\n },\n managedBy: {\n serializedName: \"managedBy\",\n type: {\n name: \"String\",\n },\n },\n tags: {\n serializedName: \"tags\",\n type: {\n name: \"Dictionary\",\n value: { type: { name: \"String\" } },\n },\n },\n },\n },\n};\nexports.ExportTemplateRequest = {\n type: {\n name: \"Composite\",\n className: \"ExportTemplateRequest\",\n modelProperties: {\n resources: {\n serializedName: \"resources\",\n type: {\n name: \"Sequence\",\n element: {\n type: {\n name: \"String\",\n },\n },\n },\n },\n options: {\n serializedName: \"options\",\n type: {\n name: \"String\",\n },\n },\n outputFormat: {\n serializedName: \"outputFormat\",\n type: {\n name: \"String\",\n },\n },\n },\n },\n};\nexports.ResourceGroupExportResult = {\n type: {\n name: \"Composite\",\n className: \"ResourceGroupExportResult\",\n modelProperties: {\n template: {\n serializedName: \"template\",\n type: {\n name: \"Dictionary\",\n value: { type: { name: \"any\" } },\n },\n },\n output: {\n serializedName: \"output\",\n type: {\n name: \"String\",\n },\n },\n error: {\n serializedName: \"error\",\n type: {\n name: \"Composite\",\n className: \"ErrorResponse\",\n },\n },\n },\n },\n};\nexports.ResourceGroupListResult = {\n type: {\n name: \"Composite\",\n className: \"ResourceGroupListResult\",\n modelProperties: {\n value: {\n serializedName: \"value\",\n type: {\n name: \"Sequence\",\n element: {\n type: {\n name: \"Composite\",\n className: \"ResourceGroup\",\n },\n },\n },\n },\n nextLink: {\n serializedName: \"nextLink\",\n readOnly: true,\n type: {\n name: \"String\",\n },\n },\n },\n },\n};\nexports.ResourcesMoveInfo = {\n type: {\n name: \"Composite\",\n className: \"ResourcesMoveInfo\",\n modelProperties: {\n resources: {\n serializedName: \"resources\",\n type: {\n name: \"Sequence\",\n element: {\n type: {\n name: \"String\",\n },\n },\n },\n },\n targetResourceGroup: {\n serializedName: \"targetResourceGroup\",\n type: {\n name: \"String\",\n },\n },\n },\n },\n};\nexports.TagValue = {\n type: {\n name: \"Composite\",\n className: \"TagValue\",\n modelProperties: {\n id: {\n serializedName: \"id\",\n readOnly: true,\n type: {\n name: \"String\",\n },\n },\n tagValue: {\n serializedName: \"tagValue\",\n type: {\n name: \"String\",\n },\n },\n count: {\n serializedName: \"count\",\n type: {\n name: \"Composite\",\n className: \"TagCount\",\n },\n },\n },\n },\n};\nexports.TagCount = {\n type: {\n name: \"Composite\",\n className: \"TagCount\",\n modelProperties: {\n type: {\n serializedName: \"type\",\n type: {\n name: \"String\",\n },\n },\n value: {\n serializedName: \"value\",\n type: {\n name: \"Number\",\n },\n },\n },\n },\n};\nexports.TagDetails = {\n type: {\n name: \"Composite\",\n className: \"TagDetails\",\n modelProperties: {\n id: {\n serializedName: \"id\",\n readOnly: true,\n type: {\n name: \"String\",\n },\n },\n tagName: {\n serializedName: \"tagName\",\n type: {\n name: \"String\",\n },\n },\n count: {\n serializedName: \"count\",\n type: {\n name: \"Composite\",\n className: \"TagCount\",\n },\n },\n values: {\n serializedName: \"values\",\n type: {\n name: \"Sequence\",\n element: {\n type: {\n name: \"Composite\",\n className: \"TagValue\",\n },\n },\n },\n },\n },\n },\n};\nexports.TagsListResult = {\n type: {\n name: \"Composite\",\n className: \"TagsListResult\",\n modelProperties: {\n value: {\n serializedName: \"value\",\n type: {\n name: \"Sequence\",\n element: {\n type: {\n name: \"Composite\",\n className: \"TagDetails\",\n },\n },\n },\n },\n nextLink: {\n serializedName: \"nextLink\",\n readOnly: true,\n type: {\n name: \"String\",\n },\n },\n },\n },\n};\nexports.DeploymentOperation = {\n type: {\n name: \"Composite\",\n className: \"DeploymentOperation\",\n modelProperties: {\n id: {\n serializedName: \"id\",\n readOnly: true,\n type: {\n name: \"String\",\n },\n },\n operationId: {\n serializedName: \"operationId\",\n readOnly: true,\n type: {\n name: \"String\",\n },\n },\n properties: {\n serializedName: \"properties\",\n type: {\n name: \"Composite\",\n className: \"DeploymentOperationProperties\",\n },\n },\n },\n },\n};\nexports.DeploymentOperationProperties = {\n type: {\n name: \"Composite\",\n className: \"DeploymentOperationProperties\",\n modelProperties: {\n provisioningOperation: {\n serializedName: \"provisioningOperation\",\n readOnly: true,\n type: {\n name: \"Enum\",\n allowedValues: [\n \"NotSpecified\",\n \"Create\",\n \"Delete\",\n \"Waiting\",\n \"AzureAsyncOperationWaiting\",\n \"ResourceCacheWaiting\",\n \"Action\",\n \"Read\",\n \"EvaluateDeploymentOutput\",\n \"DeploymentCleanup\",\n ],\n },\n },\n provisioningState: {\n serializedName: \"provisioningState\",\n readOnly: true,\n type: {\n name: \"String\",\n },\n },\n timestamp: {\n serializedName: \"timestamp\",\n readOnly: true,\n type: {\n name: \"DateTime\",\n },\n },\n duration: {\n serializedName: \"duration\",\n readOnly: true,\n type: {\n name: \"String\",\n },\n },\n serviceRequestId: {\n serializedName: \"serviceRequestId\",\n readOnly: true,\n type: {\n name: \"String\",\n },\n },\n statusCode: {\n serializedName: \"statusCode\",\n readOnly: true,\n type: {\n name: \"String\",\n },\n },\n statusMessage: {\n serializedName: \"statusMessage\",\n type: {\n name: \"Composite\",\n className: \"StatusMessage\",\n },\n },\n targetResource: {\n serializedName: \"targetResource\",\n type: {\n name: \"Composite\",\n className: \"TargetResource\",\n },\n },\n request: {\n serializedName: \"request\",\n type: {\n name: \"Composite\",\n className: \"HttpMessage\",\n },\n },\n response: {\n serializedName: \"response\",\n type: {\n name: \"Composite\",\n className: \"HttpMessage\",\n },\n },\n },\n },\n};\nexports.StatusMessage = {\n type: {\n name: \"Composite\",\n className: \"StatusMessage\",\n modelProperties: {\n status: {\n serializedName: \"status\",\n type: {\n name: \"String\",\n },\n },\n error: {\n serializedName: \"error\",\n type: {\n name: \"Composite\",\n className: \"ErrorResponse\",\n },\n },\n },\n },\n};\nexports.TargetResource = {\n type: {\n name: \"Composite\",\n className: \"TargetResource\",\n modelProperties: {\n id: {\n serializedName: \"id\",\n type: {\n name: \"String\",\n },\n },\n resourceName: {\n serializedName: \"resourceName\",\n type: {\n name: \"String\",\n },\n },\n resourceType: {\n serializedName: \"resourceType\",\n type: {\n name: \"String\",\n },\n },\n extension: {\n serializedName: \"extension\",\n type: {\n name: \"Composite\",\n className: \"DeploymentExtensionDefinition\",\n },\n },\n identifiers: {\n serializedName: \"identifiers\",\n type: {\n name: \"Dictionary\",\n value: { type: { name: \"any\" } },\n },\n },\n apiVersion: {\n serializedName: \"apiVersion\",\n type: {\n name: \"String\",\n },\n },\n symbolicName: {\n serializedName: \"symbolicName\",\n type: {\n name: \"String\",\n },\n },\n },\n },\n};\nexports.HttpMessage = {\n type: {\n name: \"Composite\",\n className: \"HttpMessage\",\n modelProperties: {\n content: {\n serializedName: \"content\",\n type: {\n name: \"Dictionary\",\n value: { type: { name: \"any\" } },\n },\n },\n },\n },\n};\nexports.DeploymentOperationsListResult = {\n type: {\n name: \"Composite\",\n className: \"DeploymentOperationsListResult\",\n modelProperties: {\n value: {\n serializedName: \"value\",\n type: {\n name: \"Sequence\",\n element: {\n type: {\n name: \"Composite\",\n className: \"DeploymentOperation\",\n },\n },\n },\n },\n nextLink: {\n serializedName: \"nextLink\",\n readOnly: true,\n type: {\n name: \"String\",\n },\n },\n },\n },\n};\nexports.TemplateHashResult = {\n type: {\n name: \"Composite\",\n className: \"TemplateHashResult\",\n modelProperties: {\n minifiedTemplate: {\n serializedName: \"minifiedTemplate\",\n type: {\n name: \"String\",\n },\n },\n templateHash: {\n serializedName: \"templateHash\",\n type: {\n name: \"String\",\n },\n },\n },\n },\n};\nexports.TagsResource = {\n type: {\n name: \"Composite\",\n className: \"TagsResource\",\n modelProperties: {\n id: {\n serializedName: \"id\",\n readOnly: true,\n type: {\n name: \"String\",\n },\n },\n name: {\n serializedName: \"name\",\n readOnly: true,\n type: {\n name: \"String\",\n },\n },\n type: {\n serializedName: \"type\",\n readOnly: true,\n type: {\n name: \"String\",\n },\n },\n properties: {\n serializedName: \"properties\",\n type: {\n name: \"Composite\",\n className: \"Tags\",\n },\n },\n },\n },\n};\nexports.Tags = {\n type: {\n name: \"Composite\",\n className: \"Tags\",\n modelProperties: {\n tags: {\n serializedName: \"tags\",\n type: {\n name: \"Dictionary\",\n value: { type: { name: \"String\" } },\n },\n },\n },\n },\n};\nexports.TagsPatchResource = {\n type: {\n name: \"Composite\",\n className: \"TagsPatchResource\",\n modelProperties: {\n operation: {\n serializedName: \"operation\",\n type: {\n name: \"String\",\n },\n },\n properties: {\n serializedName: \"properties\",\n type: {\n name: \"Composite\",\n className: \"Tags\",\n },\n },\n },\n },\n};\nexports.DeploymentExtendedFilter = {\n type: {\n name: \"Composite\",\n className: \"DeploymentExtendedFilter\",\n modelProperties: {\n provisioningState: {\n serializedName: \"provisioningState\",\n type: {\n name: \"String\",\n },\n },\n },\n },\n};\nexports.GenericResourceFilter = {\n type: {\n name: \"Composite\",\n className: \"GenericResourceFilter\",\n modelProperties: {\n resourceType: {\n serializedName: \"resourceType\",\n type: {\n name: \"String\",\n },\n },\n tagname: {\n serializedName: \"tagname\",\n type: {\n name: \"String\",\n },\n },\n tagvalue: {\n serializedName: \"tagvalue\",\n type: {\n name: \"String\",\n },\n },\n },\n },\n};\nexports.ResourceGroupFilter = {\n type: {\n name: \"Composite\",\n className: \"ResourceGroupFilter\",\n modelProperties: {\n tagName: {\n serializedName: \"tagName\",\n type: {\n name: \"String\",\n },\n },\n tagValue: {\n serializedName: \"tagValue\",\n type: {\n name: \"String\",\n },\n },\n },\n },\n};\nexports.ResourceProviderOperationDisplayProperties = {\n type: {\n name: \"Composite\",\n className: \"ResourceProviderOperationDisplayProperties\",\n modelProperties: {\n publisher: {\n serializedName: \"publisher\",\n type: {\n name: \"String\",\n },\n },\n provider: {\n serializedName: \"provider\",\n type: {\n name: \"String\",\n },\n },\n resource: {\n serializedName: \"resource\",\n type: {\n name: \"String\",\n },\n },\n operation: {\n serializedName: \"operation\",\n type: {\n name: \"String\",\n },\n },\n description: {\n serializedName: \"description\",\n type: {\n name: \"String\",\n },\n },\n },\n },\n};\nexports.SubResource = {\n type: {\n name: \"Composite\",\n className: \"SubResource\",\n modelProperties: {\n id: {\n serializedName: \"id\",\n type: {\n name: \"String\",\n },\n },\n },\n },\n};\nexports.DeploymentWhatIfProperties = {\n type: {\n name: \"Composite\",\n className: \"DeploymentWhatIfProperties\",\n modelProperties: Object.assign(Object.assign({}, exports.DeploymentProperties.type.modelProperties), { whatIfSettings: {\n serializedName: \"whatIfSettings\",\n type: {\n name: \"Composite\",\n className: \"DeploymentWhatIfSettings\",\n },\n } }),\n },\n};\nexports.GenericResource = {\n type: {\n name: \"Composite\",\n className: \"GenericResource\",\n modelProperties: Object.assign(Object.assign({}, exports.Resource.type.modelProperties), { plan: {\n serializedName: \"plan\",\n type: {\n name: \"Composite\",\n className: \"Plan\",\n },\n }, properties: {\n serializedName: \"properties\",\n type: {\n name: \"Dictionary\",\n value: { type: { name: \"any\" } },\n },\n }, kind: {\n constraints: {\n Pattern: new RegExp(\"^[-\\\\w\\\\._,\\\\(\\\\)]+$\"),\n },\n serializedName: \"kind\",\n type: {\n name: \"String\",\n },\n }, managedBy: {\n serializedName: \"managedBy\",\n type: {\n name: \"String\",\n },\n }, sku: {\n serializedName: \"sku\",\n type: {\n name: \"Composite\",\n className: \"Sku\",\n },\n }, identity: {\n serializedName: \"identity\",\n type: {\n name: \"Composite\",\n className: \"Identity\",\n },\n } }),\n },\n};\nexports.GenericResourceExpanded = {\n type: {\n name: \"Composite\",\n className: \"GenericResourceExpanded\",\n modelProperties: Object.assign(Object.assign({}, exports.GenericResource.type.modelProperties), { createdTime: {\n serializedName: \"createdTime\",\n readOnly: true,\n type: {\n name: \"DateTime\",\n },\n }, changedTime: {\n serializedName: \"changedTime\",\n readOnly: true,\n type: {\n name: \"DateTime\",\n },\n }, provisioningState: {\n serializedName: \"provisioningState\",\n readOnly: true,\n type: {\n name: \"String\",\n },\n } }),\n },\n};\nexports.DeploymentsWhatIfAtTenantScopeHeaders = {\n type: {\n name: \"Composite\",\n className: \"DeploymentsWhatIfAtTenantScopeHeaders\",\n modelProperties: {\n location: {\n serializedName: \"location\",\n type: {\n name: \"String\",\n },\n },\n retryAfter: {\n serializedName: \"retry-after\",\n type: {\n name: \"String\",\n },\n },\n },\n },\n};\nexports.DeploymentsWhatIfAtManagementGroupScopeHeaders = {\n type: {\n name: \"Composite\",\n className: \"DeploymentsWhatIfAtManagementGroupScopeHeaders\",\n modelProperties: {\n location: {\n serializedName: \"location\",\n type: {\n name: \"String\",\n },\n },\n retryAfter: {\n serializedName: \"retry-after\",\n type: {\n name: \"String\",\n },\n },\n },\n },\n};\nexports.DeploymentsWhatIfAtSubscriptionScopeHeaders = {\n type: {\n name: \"Composite\",\n className: \"DeploymentsWhatIfAtSubscriptionScopeHeaders\",\n modelProperties: {\n location: {\n serializedName: \"location\",\n type: {\n name: \"String\",\n },\n },\n retryAfter: {\n serializedName: \"retry-after\",\n type: {\n name: \"String\",\n },\n },\n },\n },\n};\nexports.DeploymentsWhatIfHeaders = {\n type: {\n name: \"Composite\",\n className: \"DeploymentsWhatIfHeaders\",\n modelProperties: {\n location: {\n serializedName: \"location\",\n type: {\n name: \"String\",\n },\n },\n retryAfter: {\n serializedName: \"retry-after\",\n type: {\n name: \"String\",\n },\n },\n },\n },\n};\nexports.ResourceGroupsDeleteHeaders = {\n type: {\n name: \"Composite\",\n className: \"ResourceGroupsDeleteHeaders\",\n modelProperties: {\n location: {\n serializedName: \"location\",\n type: {\n name: \"String\",\n },\n },\n },\n },\n};\nexports.TagsCreateOrUpdateAtScopeHeaders = {\n type: {\n name: \"Composite\",\n className: \"TagsCreateOrUpdateAtScopeHeaders\",\n modelProperties: {\n location: {\n serializedName: \"location\",\n type: {\n name: \"String\",\n },\n },\n },\n },\n};\nexports.TagsUpdateAtScopeHeaders = {\n type: {\n name: \"Composite\",\n className: \"TagsUpdateAtScopeHeaders\",\n modelProperties: {\n location: {\n serializedName: \"location\",\n type: {\n name: \"String\",\n },\n },\n },\n },\n};\nexports.TagsDeleteAtScopeHeaders = {\n type: {\n name: \"Composite\",\n className: \"TagsDeleteAtScopeHeaders\",\n modelProperties: {\n location: {\n serializedName: \"location\",\n type: {\n name: \"String\",\n },\n },\n },\n },\n};\n//# sourceMappingURL=mappers.js.map","\"use strict\";\n/*\n * Copyright (c) Microsoft Corporation.\n * Licensed under the MIT License.\n *\n * Code generated by Microsoft (R) AutoRest Code Generator.\n * Changes may cause incorrect behavior and will be lost if the code is regenerated.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.operationId = exports.parameters10 = exports.parameters9 = exports.tagValue = exports.tagName = exports.resourceGroupName1 = exports.parameters8 = exports.parameters7 = exports.forceDeletionTypes = exports.parameters6 = exports.resourceId = exports.parameters5 = exports.apiVersion1 = exports.resourceName = exports.resourceType = exports.parentResourcePath = exports.sourceResourceGroupName = exports.parameters4 = exports.expand = exports.properties = exports.resourceProviderNamespace = exports.template = exports.resourceGroupName = exports.parameters3 = exports.subscriptionId = exports.groupId = exports.parameters2 = exports.parameters1 = exports.top = exports.filter = exports.parameters = exports.contentType = exports.deploymentName = exports.scope = exports.nextLink = exports.apiVersion = exports.$host = exports.accept = void 0;\nconst mappers_js_1 = require(\"../models/mappers.js\");\nexports.accept = {\n parameterPath: \"accept\",\n mapper: {\n defaultValue: \"application/json\",\n isConstant: true,\n serializedName: \"Accept\",\n type: {\n name: \"String\",\n },\n },\n};\nexports.$host = {\n parameterPath: \"$host\",\n mapper: {\n serializedName: \"$host\",\n required: true,\n type: {\n name: \"String\",\n },\n },\n skipEncoding: true,\n};\nexports.apiVersion = {\n parameterPath: \"apiVersion\",\n mapper: {\n defaultValue: \"2025-03-01\",\n isConstant: true,\n serializedName: \"api-version\",\n type: {\n name: \"String\",\n },\n },\n};\nexports.nextLink = {\n parameterPath: \"nextLink\",\n mapper: {\n serializedName: \"nextLink\",\n required: true,\n type: {\n name: \"String\",\n },\n },\n skipEncoding: true,\n};\nexports.scope = {\n parameterPath: \"scope\",\n mapper: {\n serializedName: \"scope\",\n required: true,\n type: {\n name: \"String\",\n },\n },\n skipEncoding: true,\n};\nexports.deploymentName = {\n parameterPath: \"deploymentName\",\n mapper: {\n constraints: {\n Pattern: new RegExp(\"^[-\\\\w\\\\._\\\\(\\\\)]+$\"),\n MaxLength: 64,\n MinLength: 1,\n },\n serializedName: \"deploymentName\",\n required: true,\n type: {\n name: \"String\",\n },\n },\n};\nexports.contentType = {\n parameterPath: [\"options\", \"contentType\"],\n mapper: {\n defaultValue: \"application/json\",\n isConstant: true,\n serializedName: \"Content-Type\",\n type: {\n name: \"String\",\n },\n },\n};\nexports.parameters = {\n parameterPath: \"parameters\",\n mapper: mappers_js_1.Deployment,\n};\nexports.filter = {\n parameterPath: [\"options\", \"filter\"],\n mapper: {\n serializedName: \"$filter\",\n type: {\n name: \"String\",\n },\n },\n};\nexports.top = {\n parameterPath: [\"options\", \"top\"],\n mapper: {\n serializedName: \"$top\",\n type: {\n name: \"Number\",\n },\n },\n};\nexports.parameters1 = {\n parameterPath: \"parameters\",\n mapper: mappers_js_1.ScopedDeployment,\n};\nexports.parameters2 = {\n parameterPath: \"parameters\",\n mapper: mappers_js_1.ScopedDeploymentWhatIf,\n};\nexports.groupId = {\n parameterPath: \"groupId\",\n mapper: {\n constraints: {\n MaxLength: 90,\n MinLength: 1,\n },\n serializedName: \"groupId\",\n required: true,\n type: {\n name: \"String\",\n },\n },\n};\nexports.subscriptionId = {\n parameterPath: \"subscriptionId\",\n mapper: {\n serializedName: \"subscriptionId\",\n required: true,\n type: {\n name: \"String\",\n },\n },\n};\nexports.parameters3 = {\n parameterPath: \"parameters\",\n mapper: mappers_js_1.DeploymentWhatIf,\n};\nexports.resourceGroupName = {\n parameterPath: \"resourceGroupName\",\n mapper: {\n constraints: {\n Pattern: new RegExp(\"^[-\\\\w\\\\._\\\\(\\\\)]+$\"),\n MaxLength: 90,\n MinLength: 1,\n },\n serializedName: \"resourceGroupName\",\n required: true,\n type: {\n name: \"String\",\n },\n },\n};\nexports.template = {\n parameterPath: \"template\",\n mapper: {\n serializedName: \"template\",\n required: true,\n type: {\n name: \"Dictionary\",\n value: { type: { name: \"any\" } },\n },\n },\n};\nexports.resourceProviderNamespace = {\n parameterPath: \"resourceProviderNamespace\",\n mapper: {\n serializedName: \"resourceProviderNamespace\",\n required: true,\n type: {\n name: \"String\",\n },\n },\n};\nexports.properties = {\n parameterPath: [\"options\", \"properties\"],\n mapper: mappers_js_1.ProviderRegistrationRequest,\n};\nexports.expand = {\n parameterPath: [\"options\", \"expand\"],\n mapper: {\n serializedName: \"$expand\",\n type: {\n name: \"String\",\n },\n },\n};\nexports.parameters4 = {\n parameterPath: \"parameters\",\n mapper: mappers_js_1.ResourcesMoveInfo,\n};\nexports.sourceResourceGroupName = {\n parameterPath: \"sourceResourceGroupName\",\n mapper: {\n constraints: {\n Pattern: new RegExp(\"^[-\\\\w\\\\._\\\\(\\\\)]+$\"),\n MaxLength: 90,\n MinLength: 1,\n },\n serializedName: \"sourceResourceGroupName\",\n required: true,\n type: {\n name: \"String\",\n },\n },\n};\nexports.parentResourcePath = {\n parameterPath: \"parentResourcePath\",\n mapper: {\n serializedName: \"parentResourcePath\",\n required: true,\n type: {\n name: \"String\",\n },\n },\n skipEncoding: true,\n};\nexports.resourceType = {\n parameterPath: \"resourceType\",\n mapper: {\n serializedName: \"resourceType\",\n required: true,\n type: {\n name: \"String\",\n },\n },\n skipEncoding: true,\n};\nexports.resourceName = {\n parameterPath: \"resourceName\",\n mapper: {\n serializedName: \"resourceName\",\n required: true,\n type: {\n name: \"String\",\n },\n },\n};\nexports.apiVersion1 = {\n parameterPath: \"apiVersion\",\n mapper: {\n serializedName: \"api-version\",\n required: true,\n type: {\n name: \"String\",\n },\n },\n};\nexports.parameters5 = {\n parameterPath: \"parameters\",\n mapper: mappers_js_1.GenericResource,\n};\nexports.resourceId = {\n parameterPath: \"resourceId\",\n mapper: {\n serializedName: \"resourceId\",\n required: true,\n type: {\n name: \"String\",\n },\n },\n skipEncoding: true,\n};\nexports.parameters6 = {\n parameterPath: \"parameters\",\n mapper: mappers_js_1.ResourceGroup,\n};\nexports.forceDeletionTypes = {\n parameterPath: [\"options\", \"forceDeletionTypes\"],\n mapper: {\n serializedName: \"forceDeletionTypes\",\n type: {\n name: \"String\",\n },\n },\n};\nexports.parameters7 = {\n parameterPath: \"parameters\",\n mapper: mappers_js_1.ResourceGroupPatchable,\n};\nexports.parameters8 = {\n parameterPath: \"parameters\",\n mapper: mappers_js_1.ExportTemplateRequest,\n};\nexports.resourceGroupName1 = {\n parameterPath: \"resourceGroupName\",\n mapper: {\n constraints: {\n MaxLength: 90,\n MinLength: 1,\n },\n serializedName: \"resourceGroupName\",\n required: true,\n type: {\n name: \"String\",\n },\n },\n};\nexports.tagName = {\n parameterPath: \"tagName\",\n mapper: {\n serializedName: \"tagName\",\n required: true,\n type: {\n name: \"String\",\n },\n },\n};\nexports.tagValue = {\n parameterPath: \"tagValue\",\n mapper: {\n serializedName: \"tagValue\",\n required: true,\n type: {\n name: \"String\",\n },\n },\n};\nexports.parameters9 = {\n parameterPath: \"parameters\",\n mapper: mappers_js_1.TagsResource,\n};\nexports.parameters10 = {\n parameterPath: \"parameters\",\n mapper: mappers_js_1.TagsPatchResource,\n};\nexports.operationId = {\n parameterPath: \"operationId\",\n mapper: {\n serializedName: \"operationId\",\n required: true,\n type: {\n name: \"String\",\n },\n },\n};\n//# sourceMappingURL=parameters.js.map","\"use strict\";\n/*\n * Copyright (c) Microsoft Corporation.\n * Licensed under the MIT License.\n *\n * Code generated by Microsoft (R) AutoRest Code Generator.\n * Changes may cause incorrect behavior and will be lost if the code is regenerated.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.OperationsImpl = void 0;\nconst tslib_1 = require(\"tslib\");\nconst pagingHelper_js_1 = require(\"../pagingHelper.js\");\nconst coreClient = tslib_1.__importStar(require(\"@azure/core-client\"));\nconst Mappers = tslib_1.__importStar(require(\"../models/mappers.js\"));\nconst Parameters = tslib_1.__importStar(require(\"../models/parameters.js\"));\n/// \n/** Class containing Operations operations. */\nclass OperationsImpl {\n /**\n * Initialize a new instance of the class Operations class.\n * @param client Reference to the service client\n */\n constructor(client) {\n this.client = client;\n }\n /**\n * Lists all of the available Microsoft.Resources REST API operations.\n * @param options The options parameters.\n */\n list(options) {\n const iter = this.listPagingAll(options);\n return {\n next() {\n return iter.next();\n },\n [Symbol.asyncIterator]() {\n return this;\n },\n byPage: (settings) => {\n if (settings === null || settings === void 0 ? void 0 : settings.maxPageSize) {\n throw new Error(\"maxPageSize is not supported by this operation.\");\n }\n return this.listPagingPage(options, settings);\n },\n };\n }\n listPagingPage(options, settings) {\n return tslib_1.__asyncGenerator(this, arguments, function* listPagingPage_1() {\n let result;\n let continuationToken = settings === null || settings === void 0 ? void 0 : settings.continuationToken;\n if (!continuationToken) {\n result = yield tslib_1.__await(this._list(options));\n let page = result.value || [];\n continuationToken = result.nextLink;\n (0, pagingHelper_js_1.setContinuationToken)(page, continuationToken);\n yield yield tslib_1.__await(page);\n }\n while (continuationToken) {\n result = yield tslib_1.__await(this._listNext(continuationToken, options));\n continuationToken = result.nextLink;\n let page = result.value || [];\n (0, pagingHelper_js_1.setContinuationToken)(page, continuationToken);\n yield yield tslib_1.__await(page);\n }\n });\n }\n listPagingAll(options) {\n return tslib_1.__asyncGenerator(this, arguments, function* listPagingAll_1() {\n var _a, e_1, _b, _c;\n try {\n for (var _d = true, _e = tslib_1.__asyncValues(this.listPagingPage(options)), _f; _f = yield tslib_1.__await(_e.next()), _a = _f.done, !_a; _d = true) {\n _c = _f.value;\n _d = false;\n const page = _c;\n yield tslib_1.__await(yield* tslib_1.__asyncDelegator(tslib_1.__asyncValues(page)));\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (!_d && !_a && (_b = _e.return)) yield tslib_1.__await(_b.call(_e));\n }\n finally { if (e_1) throw e_1.error; }\n }\n });\n }\n /**\n * Lists all of the available Microsoft.Resources REST API operations.\n * @param options The options parameters.\n */\n _list(options) {\n return this.client.sendOperationRequest({ options }, listOperationSpec);\n }\n /**\n * ListNext\n * @param nextLink The nextLink from the previous successful call to the List method.\n * @param options The options parameters.\n */\n _listNext(nextLink, options) {\n return this.client.sendOperationRequest({ nextLink, options }, listNextOperationSpec);\n }\n}\nexports.OperationsImpl = OperationsImpl;\n// Operation Specifications\nconst serializer = coreClient.createSerializer(Mappers, /* isXml */ false);\nconst listOperationSpec = {\n path: \"/providers/Microsoft.Resources/operations\",\n httpMethod: \"GET\",\n responses: {\n 200: {\n bodyMapper: Mappers.OperationListResult,\n },\n default: {\n bodyMapper: Mappers.CloudError,\n },\n },\n queryParameters: [Parameters.apiVersion],\n urlParameters: [Parameters.$host],\n headerParameters: [Parameters.accept],\n serializer,\n};\nconst listNextOperationSpec = {\n path: \"{nextLink}\",\n httpMethod: \"GET\",\n responses: {\n 200: {\n bodyMapper: Mappers.OperationListResult,\n },\n default: {\n bodyMapper: Mappers.CloudError,\n },\n },\n urlParameters: [Parameters.$host, Parameters.nextLink],\n headerParameters: [Parameters.accept],\n serializer,\n};\n//# sourceMappingURL=operations.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.logger = void 0;\nconst logger_1 = require(\"@azure/logger\");\n/**\n * The `@azure/logger` configuration for this package.\n * @internal\n */\nexports.logger = (0, logger_1.createClientLogger)(\"core-lro\");\n//# sourceMappingURL=logger.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.terminalStates = exports.POLL_INTERVAL_IN_MS = void 0;\n/**\n * The default time interval to wait before sending the next polling request.\n */\nexports.POLL_INTERVAL_IN_MS = 2000;\n/**\n * The closed set of terminal states.\n */\nexports.terminalStates = [\"succeeded\", \"canceled\", \"failed\"];\n//# sourceMappingURL=constants.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.pollOperation = exports.initOperation = exports.deserializeState = void 0;\nconst logger_js_1 = require(\"../logger.js\");\nconst constants_js_1 = require(\"./constants.js\");\n/**\n * Deserializes the state\n */\nfunction deserializeState(serializedState) {\n try {\n return JSON.parse(serializedState).state;\n }\n catch (e) {\n throw new Error(`Unable to deserialize input state: ${serializedState}`);\n }\n}\nexports.deserializeState = deserializeState;\nfunction setStateError(inputs) {\n const { state, stateProxy, isOperationError } = inputs;\n return (error) => {\n if (isOperationError(error)) {\n stateProxy.setError(state, error);\n stateProxy.setFailed(state);\n }\n throw error;\n };\n}\nfunction appendReadableErrorMessage(currentMessage, innerMessage) {\n let message = currentMessage;\n if (message.slice(-1) !== \".\") {\n message = message + \".\";\n }\n return message + \" \" + innerMessage;\n}\nfunction simplifyError(err) {\n let message = err.message;\n let code = err.code;\n let curErr = err;\n while (curErr.innererror) {\n curErr = curErr.innererror;\n code = curErr.code;\n message = appendReadableErrorMessage(message, curErr.message);\n }\n return {\n code,\n message,\n };\n}\nfunction processOperationStatus(result) {\n const { state, stateProxy, status, isDone, processResult, getError, response, setErrorAsResult } = result;\n switch (status) {\n case \"succeeded\": {\n stateProxy.setSucceeded(state);\n break;\n }\n case \"failed\": {\n const err = getError === null || getError === void 0 ? void 0 : getError(response);\n let postfix = \"\";\n if (err) {\n const { code, message } = simplifyError(err);\n postfix = `. ${code}. ${message}`;\n }\n const errStr = `The long-running operation has failed${postfix}`;\n stateProxy.setError(state, new Error(errStr));\n stateProxy.setFailed(state);\n logger_js_1.logger.warning(errStr);\n break;\n }\n case \"canceled\": {\n stateProxy.setCanceled(state);\n break;\n }\n }\n if ((isDone === null || isDone === void 0 ? void 0 : isDone(response, state)) ||\n (isDone === undefined &&\n [\"succeeded\", \"canceled\"].concat(setErrorAsResult ? [] : [\"failed\"]).includes(status))) {\n stateProxy.setResult(state, buildResult({\n response,\n state,\n processResult,\n }));\n }\n}\nfunction buildResult(inputs) {\n const { processResult, response, state } = inputs;\n return processResult ? processResult(response, state) : response;\n}\n/**\n * Initiates the long-running operation.\n */\nasync function initOperation(inputs) {\n const { init, stateProxy, processResult, getOperationStatus, withOperationLocation, setErrorAsResult, } = inputs;\n const { operationLocation, resourceLocation, metadata, response } = await init();\n if (operationLocation)\n withOperationLocation === null || withOperationLocation === void 0 ? void 0 : withOperationLocation(operationLocation, false);\n const config = {\n metadata,\n operationLocation,\n resourceLocation,\n };\n logger_js_1.logger.verbose(`LRO: Operation description:`, config);\n const state = stateProxy.initState(config);\n const status = getOperationStatus({ response, state, operationLocation });\n processOperationStatus({ state, status, stateProxy, response, setErrorAsResult, processResult });\n return state;\n}\nexports.initOperation = initOperation;\nasync function pollOperationHelper(inputs) {\n const { poll, state, stateProxy, operationLocation, getOperationStatus, getResourceLocation, isOperationError, options, } = inputs;\n const response = await poll(operationLocation, options).catch(setStateError({\n state,\n stateProxy,\n isOperationError,\n }));\n const status = getOperationStatus(response, state);\n logger_js_1.logger.verbose(`LRO: Status:\\n\\tPolling from: ${state.config.operationLocation}\\n\\tOperation status: ${status}\\n\\tPolling status: ${constants_js_1.terminalStates.includes(status) ? \"Stopped\" : \"Running\"}`);\n if (status === \"succeeded\") {\n const resourceLocation = getResourceLocation(response, state);\n if (resourceLocation !== undefined) {\n return {\n response: await poll(resourceLocation).catch(setStateError({ state, stateProxy, isOperationError })),\n status,\n };\n }\n }\n return { response, status };\n}\n/** Polls the long-running operation. */\nasync function pollOperation(inputs) {\n const { poll, state, stateProxy, options, getOperationStatus, getResourceLocation, getOperationLocation, isOperationError, withOperationLocation, getPollingInterval, processResult, getError, updateState, setDelay, isDone, setErrorAsResult, } = inputs;\n const { operationLocation } = state.config;\n if (operationLocation !== undefined) {\n const { response, status } = await pollOperationHelper({\n poll,\n getOperationStatus,\n state,\n stateProxy,\n operationLocation,\n getResourceLocation,\n isOperationError,\n options,\n });\n processOperationStatus({\n status,\n response,\n state,\n stateProxy,\n isDone,\n processResult,\n getError,\n setErrorAsResult,\n });\n if (!constants_js_1.terminalStates.includes(status)) {\n const intervalInMs = getPollingInterval === null || getPollingInterval === void 0 ? void 0 : getPollingInterval(response);\n if (intervalInMs)\n setDelay(intervalInMs);\n const location = getOperationLocation === null || getOperationLocation === void 0 ? void 0 : getOperationLocation(response, state);\n if (location !== undefined) {\n const isUpdated = operationLocation !== location;\n state.config.operationLocation = location;\n withOperationLocation === null || withOperationLocation === void 0 ? void 0 : withOperationLocation(location, isUpdated);\n }\n else\n withOperationLocation === null || withOperationLocation === void 0 ? void 0 : withOperationLocation(operationLocation, false);\n }\n updateState === null || updateState === void 0 ? void 0 : updateState(state, response);\n }\n}\nexports.pollOperation = pollOperation;\n//# sourceMappingURL=operation.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.pollHttpOperation = exports.isOperationError = exports.getResourceLocation = exports.getOperationStatus = exports.getOperationLocation = exports.initHttpOperation = exports.getStatusFromInitialResponse = exports.getErrorFromResponse = exports.parseRetryAfter = exports.inferLroMode = void 0;\nconst operation_js_1 = require(\"../poller/operation.js\");\nconst logger_js_1 = require(\"../logger.js\");\nfunction getOperationLocationPollingUrl(inputs) {\n const { azureAsyncOperation, operationLocation } = inputs;\n return operationLocation !== null && operationLocation !== void 0 ? operationLocation : azureAsyncOperation;\n}\nfunction getLocationHeader(rawResponse) {\n return rawResponse.headers[\"location\"];\n}\nfunction getOperationLocationHeader(rawResponse) {\n return rawResponse.headers[\"operation-location\"];\n}\nfunction getAzureAsyncOperationHeader(rawResponse) {\n return rawResponse.headers[\"azure-asyncoperation\"];\n}\nfunction findResourceLocation(inputs) {\n var _a;\n const { location, requestMethod, requestPath, resourceLocationConfig } = inputs;\n switch (requestMethod) {\n case \"PUT\": {\n return requestPath;\n }\n case \"DELETE\": {\n return undefined;\n }\n case \"PATCH\": {\n return (_a = getDefault()) !== null && _a !== void 0 ? _a : requestPath;\n }\n default: {\n return getDefault();\n }\n }\n function getDefault() {\n switch (resourceLocationConfig) {\n case \"azure-async-operation\": {\n return undefined;\n }\n case \"original-uri\": {\n return requestPath;\n }\n case \"location\":\n default: {\n return location;\n }\n }\n }\n}\nfunction inferLroMode(inputs) {\n const { rawResponse, requestMethod, requestPath, resourceLocationConfig } = inputs;\n const operationLocation = getOperationLocationHeader(rawResponse);\n const azureAsyncOperation = getAzureAsyncOperationHeader(rawResponse);\n const pollingUrl = getOperationLocationPollingUrl({ operationLocation, azureAsyncOperation });\n const location = getLocationHeader(rawResponse);\n const normalizedRequestMethod = requestMethod === null || requestMethod === void 0 ? void 0 : requestMethod.toLocaleUpperCase();\n if (pollingUrl !== undefined) {\n return {\n mode: \"OperationLocation\",\n operationLocation: pollingUrl,\n resourceLocation: findResourceLocation({\n requestMethod: normalizedRequestMethod,\n location,\n requestPath,\n resourceLocationConfig,\n }),\n };\n }\n else if (location !== undefined) {\n return {\n mode: \"ResourceLocation\",\n operationLocation: location,\n };\n }\n else if (normalizedRequestMethod === \"PUT\" && requestPath) {\n return {\n mode: \"Body\",\n operationLocation: requestPath,\n };\n }\n else {\n return undefined;\n }\n}\nexports.inferLroMode = inferLroMode;\nfunction transformStatus(inputs) {\n const { status, statusCode } = inputs;\n if (typeof status !== \"string\" && status !== undefined) {\n throw new Error(`Polling was unsuccessful. Expected status to have a string value or no value but it has instead: ${status}. This doesn't necessarily indicate the operation has failed. Check your Azure subscription or resource status for more information.`);\n }\n switch (status === null || status === void 0 ? void 0 : status.toLocaleLowerCase()) {\n case undefined:\n return toOperationStatus(statusCode);\n case \"succeeded\":\n return \"succeeded\";\n case \"failed\":\n return \"failed\";\n case \"running\":\n case \"accepted\":\n case \"started\":\n case \"canceling\":\n case \"cancelling\":\n return \"running\";\n case \"canceled\":\n case \"cancelled\":\n return \"canceled\";\n default: {\n logger_js_1.logger.verbose(`LRO: unrecognized operation status: ${status}`);\n return status;\n }\n }\n}\nfunction getStatus(rawResponse) {\n var _a;\n const { status } = (_a = rawResponse.body) !== null && _a !== void 0 ? _a : {};\n return transformStatus({ status, statusCode: rawResponse.statusCode });\n}\nfunction getProvisioningState(rawResponse) {\n var _a, _b;\n const { properties, provisioningState } = (_a = rawResponse.body) !== null && _a !== void 0 ? _a : {};\n const status = (_b = properties === null || properties === void 0 ? void 0 : properties.provisioningState) !== null && _b !== void 0 ? _b : provisioningState;\n return transformStatus({ status, statusCode: rawResponse.statusCode });\n}\nfunction toOperationStatus(statusCode) {\n if (statusCode === 202) {\n return \"running\";\n }\n else if (statusCode < 300) {\n return \"succeeded\";\n }\n else {\n return \"failed\";\n }\n}\nfunction parseRetryAfter({ rawResponse }) {\n const retryAfter = rawResponse.headers[\"retry-after\"];\n if (retryAfter !== undefined) {\n // Retry-After header value is either in HTTP date format, or in seconds\n const retryAfterInSeconds = parseInt(retryAfter);\n return isNaN(retryAfterInSeconds)\n ? calculatePollingIntervalFromDate(new Date(retryAfter))\n : retryAfterInSeconds * 1000;\n }\n return undefined;\n}\nexports.parseRetryAfter = parseRetryAfter;\nfunction getErrorFromResponse(response) {\n const error = accessBodyProperty(response, \"error\");\n if (!error) {\n logger_js_1.logger.warning(`The long-running operation failed but there is no error property in the response's body`);\n return;\n }\n if (!error.code || !error.message) {\n logger_js_1.logger.warning(`The long-running operation failed but the error property in the response's body doesn't contain code or message`);\n return;\n }\n return error;\n}\nexports.getErrorFromResponse = getErrorFromResponse;\nfunction calculatePollingIntervalFromDate(retryAfterDate) {\n const timeNow = Math.floor(new Date().getTime());\n const retryAfterTime = retryAfterDate.getTime();\n if (timeNow < retryAfterTime) {\n return retryAfterTime - timeNow;\n }\n return undefined;\n}\nfunction getStatusFromInitialResponse(inputs) {\n const { response, state, operationLocation } = inputs;\n function helper() {\n var _a;\n const mode = (_a = state.config.metadata) === null || _a === void 0 ? void 0 : _a[\"mode\"];\n switch (mode) {\n case undefined:\n return toOperationStatus(response.rawResponse.statusCode);\n case \"Body\":\n return getOperationStatus(response, state);\n default:\n return \"running\";\n }\n }\n const status = helper();\n return status === \"running\" && operationLocation === undefined ? \"succeeded\" : status;\n}\nexports.getStatusFromInitialResponse = getStatusFromInitialResponse;\n/**\n * Initiates the long-running operation.\n */\nasync function initHttpOperation(inputs) {\n const { stateProxy, resourceLocationConfig, processResult, lro, setErrorAsResult } = inputs;\n return (0, operation_js_1.initOperation)({\n init: async () => {\n const response = await lro.sendInitialRequest();\n const config = inferLroMode({\n rawResponse: response.rawResponse,\n requestPath: lro.requestPath,\n requestMethod: lro.requestMethod,\n resourceLocationConfig,\n });\n return Object.assign({ response, operationLocation: config === null || config === void 0 ? void 0 : config.operationLocation, resourceLocation: config === null || config === void 0 ? void 0 : config.resourceLocation }, ((config === null || config === void 0 ? void 0 : config.mode) ? { metadata: { mode: config.mode } } : {}));\n },\n stateProxy,\n processResult: processResult\n ? ({ flatResponse }, state) => processResult(flatResponse, state)\n : ({ flatResponse }) => flatResponse,\n getOperationStatus: getStatusFromInitialResponse,\n setErrorAsResult,\n });\n}\nexports.initHttpOperation = initHttpOperation;\nfunction getOperationLocation({ rawResponse }, state) {\n var _a;\n const mode = (_a = state.config.metadata) === null || _a === void 0 ? void 0 : _a[\"mode\"];\n switch (mode) {\n case \"OperationLocation\": {\n return getOperationLocationPollingUrl({\n operationLocation: getOperationLocationHeader(rawResponse),\n azureAsyncOperation: getAzureAsyncOperationHeader(rawResponse),\n });\n }\n case \"ResourceLocation\": {\n return getLocationHeader(rawResponse);\n }\n case \"Body\":\n default: {\n return undefined;\n }\n }\n}\nexports.getOperationLocation = getOperationLocation;\nfunction getOperationStatus({ rawResponse }, state) {\n var _a;\n const mode = (_a = state.config.metadata) === null || _a === void 0 ? void 0 : _a[\"mode\"];\n switch (mode) {\n case \"OperationLocation\": {\n return getStatus(rawResponse);\n }\n case \"ResourceLocation\": {\n return toOperationStatus(rawResponse.statusCode);\n }\n case \"Body\": {\n return getProvisioningState(rawResponse);\n }\n default:\n throw new Error(`Internal error: Unexpected operation mode: ${mode}`);\n }\n}\nexports.getOperationStatus = getOperationStatus;\nfunction accessBodyProperty({ flatResponse, rawResponse }, prop) {\n var _a, _b;\n return (_a = flatResponse === null || flatResponse === void 0 ? void 0 : flatResponse[prop]) !== null && _a !== void 0 ? _a : (_b = rawResponse.body) === null || _b === void 0 ? void 0 : _b[prop];\n}\nfunction getResourceLocation(res, state) {\n const loc = accessBodyProperty(res, \"resourceLocation\");\n if (loc && typeof loc === \"string\") {\n state.config.resourceLocation = loc;\n }\n return state.config.resourceLocation;\n}\nexports.getResourceLocation = getResourceLocation;\nfunction isOperationError(e) {\n return e.name === \"RestError\";\n}\nexports.isOperationError = isOperationError;\n/** Polls the long-running operation. */\nasync function pollHttpOperation(inputs) {\n const { lro, stateProxy, options, processResult, updateState, setDelay, state, setErrorAsResult, } = inputs;\n return (0, operation_js_1.pollOperation)({\n state,\n stateProxy,\n setDelay,\n processResult: processResult\n ? ({ flatResponse }, inputState) => processResult(flatResponse, inputState)\n : ({ flatResponse }) => flatResponse,\n getError: getErrorFromResponse,\n updateState,\n getPollingInterval: parseRetryAfter,\n getOperationLocation,\n getOperationStatus,\n isOperationError,\n getResourceLocation,\n options,\n /**\n * The expansion here is intentional because `lro` could be an object that\n * references an inner this, so we need to preserve a reference to it.\n */\n poll: async (location, inputOptions) => lro.sendPollRequest(location, inputOptions),\n setErrorAsResult,\n });\n}\nexports.pollHttpOperation = pollHttpOperation;\n//# sourceMappingURL=operation.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.buildCreatePoller = void 0;\nconst operation_js_1 = require(\"./operation.js\");\nconst constants_js_1 = require(\"./constants.js\");\nconst core_util_1 = require(\"@azure/core-util\");\nconst createStateProxy = () => ({\n /**\n * The state at this point is created to be of type OperationState.\n * It will be updated later to be of type TState when the\n * customer-provided callback, `updateState`, is called during polling.\n */\n initState: (config) => ({ status: \"running\", config }),\n setCanceled: (state) => (state.status = \"canceled\"),\n setError: (state, error) => (state.error = error),\n setResult: (state, result) => (state.result = result),\n setRunning: (state) => (state.status = \"running\"),\n setSucceeded: (state) => (state.status = \"succeeded\"),\n setFailed: (state) => (state.status = \"failed\"),\n getError: (state) => state.error,\n getResult: (state) => state.result,\n isCanceled: (state) => state.status === \"canceled\",\n isFailed: (state) => state.status === \"failed\",\n isRunning: (state) => state.status === \"running\",\n isSucceeded: (state) => state.status === \"succeeded\",\n});\n/**\n * Returns a poller factory.\n */\nfunction buildCreatePoller(inputs) {\n const { getOperationLocation, getStatusFromInitialResponse, getStatusFromPollResponse, isOperationError, getResourceLocation, getPollingInterval, getError, resolveOnUnsuccessful, } = inputs;\n return async ({ init, poll }, options) => {\n const { processResult, updateState, withOperationLocation: withOperationLocationCallback, intervalInMs = constants_js_1.POLL_INTERVAL_IN_MS, restoreFrom, } = options || {};\n const stateProxy = createStateProxy();\n const withOperationLocation = withOperationLocationCallback\n ? (() => {\n let called = false;\n return (operationLocation, isUpdated) => {\n if (isUpdated)\n withOperationLocationCallback(operationLocation);\n else if (!called)\n withOperationLocationCallback(operationLocation);\n called = true;\n };\n })()\n : undefined;\n const state = restoreFrom\n ? (0, operation_js_1.deserializeState)(restoreFrom)\n : await (0, operation_js_1.initOperation)({\n init,\n stateProxy,\n processResult,\n getOperationStatus: getStatusFromInitialResponse,\n withOperationLocation,\n setErrorAsResult: !resolveOnUnsuccessful,\n });\n let resultPromise;\n const abortController = new AbortController();\n const handlers = new Map();\n const handleProgressEvents = async () => handlers.forEach((h) => h(state));\n const cancelErrMsg = \"Operation was canceled\";\n let currentPollIntervalInMs = intervalInMs;\n const poller = {\n getOperationState: () => state,\n getResult: () => state.result,\n isDone: () => [\"succeeded\", \"failed\", \"canceled\"].includes(state.status),\n isStopped: () => resultPromise === undefined,\n stopPolling: () => {\n abortController.abort();\n },\n toString: () => JSON.stringify({\n state,\n }),\n onProgress: (callback) => {\n const s = Symbol();\n handlers.set(s, callback);\n return () => handlers.delete(s);\n },\n pollUntilDone: (pollOptions) => (resultPromise !== null && resultPromise !== void 0 ? resultPromise : (resultPromise = (async () => {\n const { abortSignal: inputAbortSignal } = pollOptions || {};\n // In the future we can use AbortSignal.any() instead\n function abortListener() {\n abortController.abort();\n }\n const abortSignal = abortController.signal;\n if (inputAbortSignal === null || inputAbortSignal === void 0 ? void 0 : inputAbortSignal.aborted) {\n abortController.abort();\n }\n else if (!abortSignal.aborted) {\n inputAbortSignal === null || inputAbortSignal === void 0 ? void 0 : inputAbortSignal.addEventListener(\"abort\", abortListener, { once: true });\n }\n try {\n if (!poller.isDone()) {\n await poller.poll({ abortSignal });\n while (!poller.isDone()) {\n await (0, core_util_1.delay)(currentPollIntervalInMs, { abortSignal });\n await poller.poll({ abortSignal });\n }\n }\n }\n finally {\n inputAbortSignal === null || inputAbortSignal === void 0 ? void 0 : inputAbortSignal.removeEventListener(\"abort\", abortListener);\n }\n if (resolveOnUnsuccessful) {\n return poller.getResult();\n }\n else {\n switch (state.status) {\n case \"succeeded\":\n return poller.getResult();\n case \"canceled\":\n throw new Error(cancelErrMsg);\n case \"failed\":\n throw state.error;\n case \"notStarted\":\n case \"running\":\n throw new Error(`Polling completed without succeeding or failing`);\n }\n }\n })().finally(() => {\n resultPromise = undefined;\n }))),\n async poll(pollOptions) {\n if (resolveOnUnsuccessful) {\n if (poller.isDone())\n return;\n }\n else {\n switch (state.status) {\n case \"succeeded\":\n return;\n case \"canceled\":\n throw new Error(cancelErrMsg);\n case \"failed\":\n throw state.error;\n }\n }\n await (0, operation_js_1.pollOperation)({\n poll,\n state,\n stateProxy,\n getOperationLocation,\n isOperationError,\n withOperationLocation,\n getPollingInterval,\n getOperationStatus: getStatusFromPollResponse,\n getResourceLocation,\n processResult,\n getError,\n updateState,\n options: pollOptions,\n setDelay: (pollIntervalInMs) => {\n currentPollIntervalInMs = pollIntervalInMs;\n },\n setErrorAsResult: !resolveOnUnsuccessful,\n });\n await handleProgressEvents();\n if (!resolveOnUnsuccessful) {\n switch (state.status) {\n case \"canceled\":\n throw new Error(cancelErrMsg);\n case \"failed\":\n throw state.error;\n }\n }\n },\n };\n return poller;\n };\n}\nexports.buildCreatePoller = buildCreatePoller;\n//# sourceMappingURL=poller.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.createHttpPoller = void 0;\nconst operation_js_1 = require(\"./operation.js\");\nconst poller_js_1 = require(\"../poller/poller.js\");\n/**\n * Creates a poller that can be used to poll a long-running operation.\n * @param lro - Description of the long-running operation\n * @param options - options to configure the poller\n * @returns an initialized poller\n */\nasync function createHttpPoller(lro, options) {\n const { resourceLocationConfig, intervalInMs, processResult, restoreFrom, updateState, withOperationLocation, resolveOnUnsuccessful = false, } = options || {};\n return (0, poller_js_1.buildCreatePoller)({\n getStatusFromInitialResponse: operation_js_1.getStatusFromInitialResponse,\n getStatusFromPollResponse: operation_js_1.getOperationStatus,\n isOperationError: operation_js_1.isOperationError,\n getOperationLocation: operation_js_1.getOperationLocation,\n getResourceLocation: operation_js_1.getResourceLocation,\n getPollingInterval: operation_js_1.parseRetryAfter,\n getError: operation_js_1.getErrorFromResponse,\n resolveOnUnsuccessful,\n })({\n init: async () => {\n const response = await lro.sendInitialRequest();\n const config = (0, operation_js_1.inferLroMode)({\n rawResponse: response.rawResponse,\n requestPath: lro.requestPath,\n requestMethod: lro.requestMethod,\n resourceLocationConfig,\n });\n return Object.assign({ response, operationLocation: config === null || config === void 0 ? void 0 : config.operationLocation, resourceLocation: config === null || config === void 0 ? void 0 : config.resourceLocation }, ((config === null || config === void 0 ? void 0 : config.mode) ? { metadata: { mode: config.mode } } : {}));\n },\n poll: lro.sendPollRequest,\n }, {\n intervalInMs,\n withOperationLocation,\n restoreFrom,\n updateState,\n processResult: processResult\n ? ({ flatResponse }, state) => processResult(flatResponse, state)\n : ({ flatResponse }) => flatResponse,\n });\n}\nexports.createHttpPoller = createHttpPoller;\n//# sourceMappingURL=poller.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.GenericPollOperation = void 0;\nconst operation_js_1 = require(\"../../http/operation.js\");\nconst logger_js_1 = require(\"../../logger.js\");\nconst createStateProxy = () => ({\n initState: (config) => ({ config, isStarted: true }),\n setCanceled: (state) => (state.isCancelled = true),\n setError: (state, error) => (state.error = error),\n setResult: (state, result) => (state.result = result),\n setRunning: (state) => (state.isStarted = true),\n setSucceeded: (state) => (state.isCompleted = true),\n setFailed: () => {\n /** empty body */\n },\n getError: (state) => state.error,\n getResult: (state) => state.result,\n isCanceled: (state) => !!state.isCancelled,\n isFailed: (state) => !!state.error,\n isRunning: (state) => !!state.isStarted,\n isSucceeded: (state) => Boolean(state.isCompleted && !state.isCancelled && !state.error),\n});\nclass GenericPollOperation {\n constructor(state, lro, setErrorAsResult, lroResourceLocationConfig, processResult, updateState, isDone) {\n this.state = state;\n this.lro = lro;\n this.setErrorAsResult = setErrorAsResult;\n this.lroResourceLocationConfig = lroResourceLocationConfig;\n this.processResult = processResult;\n this.updateState = updateState;\n this.isDone = isDone;\n }\n setPollerConfig(pollerConfig) {\n this.pollerConfig = pollerConfig;\n }\n async update(options) {\n var _a;\n const stateProxy = createStateProxy();\n if (!this.state.isStarted) {\n this.state = Object.assign(Object.assign({}, this.state), (await (0, operation_js_1.initHttpOperation)({\n lro: this.lro,\n stateProxy,\n resourceLocationConfig: this.lroResourceLocationConfig,\n processResult: this.processResult,\n setErrorAsResult: this.setErrorAsResult,\n })));\n }\n const updateState = this.updateState;\n const isDone = this.isDone;\n if (!this.state.isCompleted && this.state.error === undefined) {\n await (0, operation_js_1.pollHttpOperation)({\n lro: this.lro,\n state: this.state,\n stateProxy,\n processResult: this.processResult,\n updateState: updateState\n ? (state, { rawResponse }) => updateState(state, rawResponse)\n : undefined,\n isDone: isDone\n ? ({ flatResponse }, state) => isDone(flatResponse, state)\n : undefined,\n options,\n setDelay: (intervalInMs) => {\n this.pollerConfig.intervalInMs = intervalInMs;\n },\n setErrorAsResult: this.setErrorAsResult,\n });\n }\n (_a = options === null || options === void 0 ? void 0 : options.fireProgress) === null || _a === void 0 ? void 0 : _a.call(options, this.state);\n return this;\n }\n async cancel() {\n logger_js_1.logger.error(\"`cancelOperation` is deprecated because it wasn't implemented\");\n return this;\n }\n /**\n * Serializes the Poller operation.\n */\n toString() {\n return JSON.stringify({\n state: this.state,\n });\n }\n}\nexports.GenericPollOperation = GenericPollOperation;\n//# sourceMappingURL=operation.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Poller = exports.PollerCancelledError = exports.PollerStoppedError = void 0;\n/**\n * When a poller is manually stopped through the `stopPolling` method,\n * the poller will be rejected with an instance of the PollerStoppedError.\n */\nclass PollerStoppedError extends Error {\n constructor(message) {\n super(message);\n this.name = \"PollerStoppedError\";\n Object.setPrototypeOf(this, PollerStoppedError.prototype);\n }\n}\nexports.PollerStoppedError = PollerStoppedError;\n/**\n * When the operation is cancelled, the poller will be rejected with an instance\n * of the PollerCancelledError.\n */\nclass PollerCancelledError extends Error {\n constructor(message) {\n super(message);\n this.name = \"PollerCancelledError\";\n Object.setPrototypeOf(this, PollerCancelledError.prototype);\n }\n}\nexports.PollerCancelledError = PollerCancelledError;\n/**\n * A class that represents the definition of a program that polls through consecutive requests\n * until it reaches a state of completion.\n *\n * A poller can be executed manually, by polling request by request by calling to the `poll()` method repeatedly, until its operation is completed.\n * It also provides a way to wait until the operation completes, by calling `pollUntilDone()` and waiting until the operation finishes.\n * Pollers can also request the cancellation of the ongoing process to whom is providing the underlying long running operation.\n *\n * ```ts\n * const poller = new MyPoller();\n *\n * // Polling just once:\n * await poller.poll();\n *\n * // We can try to cancel the request here, by calling:\n * //\n * // await poller.cancelOperation();\n * //\n *\n * // Getting the final result:\n * const result = await poller.pollUntilDone();\n * ```\n *\n * The Poller is defined by two types, a type representing the state of the poller, which\n * must include a basic set of properties from `PollOperationState`,\n * and a return type defined by `TResult`, which can be anything.\n *\n * The Poller class implements the `PollerLike` interface, which allows poller implementations to avoid having\n * to export the Poller's class directly, and instead only export the already instantiated poller with the PollerLike type.\n *\n * ```ts\n * class Client {\n * public async makePoller: PollerLike {\n * const poller = new MyPoller({});\n * // It might be preferred to return the poller after the first request is made,\n * // so that some information can be obtained right away.\n * await poller.poll();\n * return poller;\n * }\n * }\n *\n * const poller: PollerLike = myClient.makePoller();\n * ```\n *\n * A poller can be created through its constructor, then it can be polled until it's completed.\n * At any point in time, the state of the poller can be obtained without delay through the getOperationState method.\n * At any point in time, the intermediate forms of the result type can be requested without delay.\n * Once the underlying operation is marked as completed, the poller will stop and the final value will be returned.\n *\n * ```ts\n * const poller = myClient.makePoller();\n * const state: MyOperationState = poller.getOperationState();\n *\n * // The intermediate result can be obtained at any time.\n * const result: MyResult | undefined = poller.getResult();\n *\n * // The final result can only be obtained after the poller finishes.\n * const result: MyResult = await poller.pollUntilDone();\n * ```\n *\n */\n// eslint-disable-next-line no-use-before-define\nclass Poller {\n /**\n * A poller needs to be initialized by passing in at least the basic properties of the `PollOperation`.\n *\n * When writing an implementation of a Poller, this implementation needs to deal with the initialization\n * of any custom state beyond the basic definition of the poller. The basic poller assumes that the poller's\n * operation has already been defined, at least its basic properties. The code below shows how to approach\n * the definition of the constructor of a new custom poller.\n *\n * ```ts\n * export class MyPoller extends Poller {\n * constructor({\n * // Anything you might need outside of the basics\n * }) {\n * let state: MyOperationState = {\n * privateProperty: private,\n * publicProperty: public,\n * };\n *\n * const operation = {\n * state,\n * update,\n * cancel,\n * toString\n * }\n *\n * // Sending the operation to the parent's constructor.\n * super(operation);\n *\n * // You can assign more local properties here.\n * }\n * }\n * ```\n *\n * Inside of this constructor, a new promise is created. This will be used to\n * tell the user when the poller finishes (see `pollUntilDone()`). The promise's\n * resolve and reject methods are also used internally to control when to resolve\n * or reject anyone waiting for the poller to finish.\n *\n * The constructor of a custom implementation of a poller is where any serialized version of\n * a previous poller's operation should be deserialized into the operation sent to the\n * base constructor. For example:\n *\n * ```ts\n * export class MyPoller extends Poller {\n * constructor(\n * baseOperation: string | undefined\n * ) {\n * let state: MyOperationState = {};\n * if (baseOperation) {\n * state = {\n * ...JSON.parse(baseOperation).state,\n * ...state\n * };\n * }\n * const operation = {\n * state,\n * // ...\n * }\n * super(operation);\n * }\n * }\n * ```\n *\n * @param operation - Must contain the basic properties of `PollOperation`.\n */\n constructor(operation) {\n /** controls whether to throw an error if the operation failed or was canceled. */\n this.resolveOnUnsuccessful = false;\n this.stopped = true;\n this.pollProgressCallbacks = [];\n this.operation = operation;\n this.promise = new Promise((resolve, reject) => {\n this.resolve = resolve;\n this.reject = reject;\n });\n // This prevents the UnhandledPromiseRejectionWarning in node.js from being thrown.\n // The above warning would get thrown if `poller.poll` is called, it returns an error,\n // and pullUntilDone did not have a .catch or await try/catch on it's return value.\n this.promise.catch(() => {\n /* intentionally blank */\n });\n }\n /**\n * Starts a loop that will break only if the poller is done\n * or if the poller is stopped.\n */\n async startPolling(pollOptions = {}) {\n if (this.stopped) {\n this.stopped = false;\n }\n while (!this.isStopped() && !this.isDone()) {\n await this.poll(pollOptions);\n await this.delay();\n }\n }\n /**\n * pollOnce does one polling, by calling to the update method of the underlying\n * poll operation to make any relevant change effective.\n *\n * It only optionally receives an object with an abortSignal property, from \\@azure/abort-controller's AbortSignalLike.\n *\n * @param options - Optional properties passed to the operation's update method.\n */\n async pollOnce(options = {}) {\n if (!this.isDone()) {\n this.operation = await this.operation.update({\n abortSignal: options.abortSignal,\n fireProgress: this.fireProgress.bind(this),\n });\n }\n this.processUpdatedState();\n }\n /**\n * fireProgress calls the functions passed in via onProgress the method of the poller.\n *\n * It loops over all of the callbacks received from onProgress, and executes them, sending them\n * the current operation state.\n *\n * @param state - The current operation state.\n */\n fireProgress(state) {\n for (const callback of this.pollProgressCallbacks) {\n callback(state);\n }\n }\n /**\n * Invokes the underlying operation's cancel method.\n */\n async cancelOnce(options = {}) {\n this.operation = await this.operation.cancel(options);\n }\n /**\n * Returns a promise that will resolve once a single polling request finishes.\n * It does this by calling the update method of the Poller's operation.\n *\n * It only optionally receives an object with an abortSignal property, from \\@azure/abort-controller's AbortSignalLike.\n *\n * @param options - Optional properties passed to the operation's update method.\n */\n poll(options = {}) {\n if (!this.pollOncePromise) {\n this.pollOncePromise = this.pollOnce(options);\n const clearPollOncePromise = () => {\n this.pollOncePromise = undefined;\n };\n this.pollOncePromise.then(clearPollOncePromise, clearPollOncePromise).catch(this.reject);\n }\n return this.pollOncePromise;\n }\n processUpdatedState() {\n if (this.operation.state.error) {\n this.stopped = true;\n if (!this.resolveOnUnsuccessful) {\n this.reject(this.operation.state.error);\n throw this.operation.state.error;\n }\n }\n if (this.operation.state.isCancelled) {\n this.stopped = true;\n if (!this.resolveOnUnsuccessful) {\n const error = new PollerCancelledError(\"Operation was canceled\");\n this.reject(error);\n throw error;\n }\n }\n if (this.isDone() && this.resolve) {\n // If the poller has finished polling, this means we now have a result.\n // However, it can be the case that TResult is instantiated to void, so\n // we are not expecting a result anyway. To assert that we might not\n // have a result eventually after finishing polling, we cast the result\n // to TResult.\n this.resolve(this.getResult());\n }\n }\n /**\n * Returns a promise that will resolve once the underlying operation is completed.\n */\n async pollUntilDone(pollOptions = {}) {\n if (this.stopped) {\n this.startPolling(pollOptions).catch(this.reject);\n }\n // This is needed because the state could have been updated by\n // `cancelOperation`, e.g. the operation is canceled or an error occurred.\n this.processUpdatedState();\n return this.promise;\n }\n /**\n * Invokes the provided callback after each polling is completed,\n * sending the current state of the poller's operation.\n *\n * It returns a method that can be used to stop receiving updates on the given callback function.\n */\n onProgress(callback) {\n this.pollProgressCallbacks.push(callback);\n return () => {\n this.pollProgressCallbacks = this.pollProgressCallbacks.filter((c) => c !== callback);\n };\n }\n /**\n * Returns true if the poller has finished polling.\n */\n isDone() {\n const state = this.operation.state;\n return Boolean(state.isCompleted || state.isCancelled || state.error);\n }\n /**\n * Stops the poller from continuing to poll.\n */\n stopPolling() {\n if (!this.stopped) {\n this.stopped = true;\n if (this.reject) {\n this.reject(new PollerStoppedError(\"This poller is already stopped\"));\n }\n }\n }\n /**\n * Returns true if the poller is stopped.\n */\n isStopped() {\n return this.stopped;\n }\n /**\n * Attempts to cancel the underlying operation.\n *\n * It only optionally receives an object with an abortSignal property, from \\@azure/abort-controller's AbortSignalLike.\n *\n * If it's called again before it finishes, it will throw an error.\n *\n * @param options - Optional properties passed to the operation's update method.\n */\n cancelOperation(options = {}) {\n if (!this.cancelPromise) {\n this.cancelPromise = this.cancelOnce(options);\n }\n else if (options.abortSignal) {\n throw new Error(\"A cancel request is currently pending\");\n }\n return this.cancelPromise;\n }\n /**\n * Returns the state of the operation.\n *\n * Even though TState will be the same type inside any of the methods of any extension of the Poller class,\n * implementations of the pollers can customize what's shared with the public by writing their own\n * version of the `getOperationState` method, and by defining two types, one representing the internal state of the poller\n * and a public type representing a safe to share subset of the properties of the internal state.\n * Their definition of getOperationState can then return their public type.\n *\n * Example:\n *\n * ```ts\n * // Let's say we have our poller's operation state defined as:\n * interface MyOperationState extends PollOperationState {\n * privateProperty?: string;\n * publicProperty?: string;\n * }\n *\n * // To allow us to have a true separation of public and private state, we have to define another interface:\n * interface PublicState extends PollOperationState {\n * publicProperty?: string;\n * }\n *\n * // Then, we define our Poller as follows:\n * export class MyPoller extends Poller {\n * // ... More content is needed here ...\n *\n * public getOperationState(): PublicState {\n * const state: PublicState = this.operation.state;\n * return {\n * // Properties from PollOperationState\n * isStarted: state.isStarted,\n * isCompleted: state.isCompleted,\n * isCancelled: state.isCancelled,\n * error: state.error,\n * result: state.result,\n *\n * // The only other property needed by PublicState.\n * publicProperty: state.publicProperty\n * }\n * }\n * }\n * ```\n *\n * You can see this in the tests of this repository, go to the file:\n * `../test/utils/testPoller.ts`\n * and look for the getOperationState implementation.\n */\n getOperationState() {\n return this.operation.state;\n }\n /**\n * Returns the result value of the operation,\n * regardless of the state of the poller.\n * It can return undefined or an incomplete form of the final TResult value\n * depending on the implementation.\n */\n getResult() {\n const state = this.operation.state;\n return state.result;\n }\n /**\n * Returns a serialized version of the poller's operation\n * by invoking the operation's toString method.\n */\n toString() {\n return this.operation.toString();\n }\n}\nexports.Poller = Poller;\n//# sourceMappingURL=poller.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.LroEngine = void 0;\nconst operation_js_1 = require(\"./operation.js\");\nconst constants_js_1 = require(\"../../poller/constants.js\");\nconst poller_js_1 = require(\"../poller.js\");\nconst operation_js_2 = require(\"../../poller/operation.js\");\n/**\n * The LRO Engine, a class that performs polling.\n */\nclass LroEngine extends poller_js_1.Poller {\n constructor(lro, options) {\n const { intervalInMs = constants_js_1.POLL_INTERVAL_IN_MS, resumeFrom, resolveOnUnsuccessful = false, isDone, lroResourceLocationConfig, processResult, updateState, } = options || {};\n const state = resumeFrom\n ? (0, operation_js_2.deserializeState)(resumeFrom)\n : {};\n const operation = new operation_js_1.GenericPollOperation(state, lro, !resolveOnUnsuccessful, lroResourceLocationConfig, processResult, updateState, isDone);\n super(operation);\n this.resolveOnUnsuccessful = resolveOnUnsuccessful;\n this.config = { intervalInMs: intervalInMs };\n operation.setPollerConfig(this.config);\n }\n /**\n * The method used by the poller to wait before attempting to update its operation.\n */\n delay() {\n return new Promise((resolve) => setTimeout(() => resolve(), this.config.intervalInMs));\n }\n}\nexports.LroEngine = LroEngine;\n//# sourceMappingURL=lroEngine.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.LroEngine = void 0;\nvar lroEngine_js_1 = require(\"./lroEngine.js\");\nObject.defineProperty(exports, \"LroEngine\", { enumerable: true, get: function () { return lroEngine_js_1.LroEngine; } });\n//# sourceMappingURL=index.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\nObject.defineProperty(exports, \"__esModule\", { value: true });\n//# sourceMappingURL=pollOperation.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.createHttpPoller = void 0;\nconst tslib_1 = require(\"tslib\");\nvar poller_js_1 = require(\"./http/poller.js\");\nObject.defineProperty(exports, \"createHttpPoller\", { enumerable: true, get: function () { return poller_js_1.createHttpPoller; } });\n/**\n * This can be uncommented to expose the protocol-agnostic poller\n */\n// export {\n// BuildCreatePollerOptions,\n// Operation,\n// CreatePollerOptions,\n// OperationConfig,\n// RestorableOperationState,\n// } from \"./poller/models\";\n// export { buildCreatePoller } from \"./poller/poller\";\n/** legacy */\ntslib_1.__exportStar(require(\"./legacy/lroEngine/index.js\"), exports);\ntslib_1.__exportStar(require(\"./legacy/poller.js\"), exports);\ntslib_1.__exportStar(require(\"./legacy/pollOperation.js\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\n/*\n * Copyright (c) Microsoft Corporation.\n * Licensed under the MIT License.\n *\n * Code generated by Microsoft (R) AutoRest Code Generator.\n * Changes may cause incorrect behavior and will be lost if the code is regenerated.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.createLroSpec = createLroSpec;\nconst tslib_1 = require(\"tslib\");\nfunction createLroSpec(inputs) {\n const { args, spec, sendOperationFn } = inputs;\n return {\n requestMethod: spec.httpMethod,\n requestPath: spec.path,\n sendInitialRequest: () => sendOperationFn(args, spec),\n sendPollRequest: (path, options) => {\n const { requestBody } = spec, restSpec = tslib_1.__rest(spec, [\"requestBody\"]);\n return sendOperationFn(args, Object.assign(Object.assign({}, restSpec), { httpMethod: \"GET\", path, abortSignal: options === null || options === void 0 ? void 0 : options.abortSignal }));\n },\n };\n}\n//# sourceMappingURL=lroImpl.js.map","\"use strict\";\n/*\n * Copyright (c) Microsoft Corporation.\n * Licensed under the MIT License.\n *\n * Code generated by Microsoft (R) AutoRest Code Generator.\n * Changes may cause incorrect behavior and will be lost if the code is regenerated.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.DeploymentsImpl = void 0;\nconst tslib_1 = require(\"tslib\");\nconst pagingHelper_js_1 = require(\"../pagingHelper.js\");\nconst coreClient = tslib_1.__importStar(require(\"@azure/core-client\"));\nconst Mappers = tslib_1.__importStar(require(\"../models/mappers.js\"));\nconst Parameters = tslib_1.__importStar(require(\"../models/parameters.js\"));\nconst core_lro_1 = require(\"@azure/core-lro\");\nconst lroImpl_js_1 = require(\"../lroImpl.js\");\n/// \n/** Class containing Deployments operations. */\nclass DeploymentsImpl {\n /**\n * Initialize a new instance of the class Deployments class.\n * @param client Reference to the service client\n */\n constructor(client) {\n this.client = client;\n }\n /**\n * Get all the deployments at the given scope.\n * @param scope The resource scope.\n * @param options The options parameters.\n */\n listAtScope(scope, options) {\n const iter = this.listAtScopePagingAll(scope, options);\n return {\n next() {\n return iter.next();\n },\n [Symbol.asyncIterator]() {\n return this;\n },\n byPage: (settings) => {\n if (settings === null || settings === void 0 ? void 0 : settings.maxPageSize) {\n throw new Error(\"maxPageSize is not supported by this operation.\");\n }\n return this.listAtScopePagingPage(scope, options, settings);\n },\n };\n }\n listAtScopePagingPage(scope, options, settings) {\n return tslib_1.__asyncGenerator(this, arguments, function* listAtScopePagingPage_1() {\n let result;\n let continuationToken = settings === null || settings === void 0 ? void 0 : settings.continuationToken;\n if (!continuationToken) {\n result = yield tslib_1.__await(this._listAtScope(scope, options));\n let page = result.value || [];\n continuationToken = result.nextLink;\n (0, pagingHelper_js_1.setContinuationToken)(page, continuationToken);\n yield yield tslib_1.__await(page);\n }\n while (continuationToken) {\n result = yield tslib_1.__await(this._listAtScopeNext(scope, continuationToken, options));\n continuationToken = result.nextLink;\n let page = result.value || [];\n (0, pagingHelper_js_1.setContinuationToken)(page, continuationToken);\n yield yield tslib_1.__await(page);\n }\n });\n }\n listAtScopePagingAll(scope, options) {\n return tslib_1.__asyncGenerator(this, arguments, function* listAtScopePagingAll_1() {\n var _a, e_1, _b, _c;\n try {\n for (var _d = true, _e = tslib_1.__asyncValues(this.listAtScopePagingPage(scope, options)), _f; _f = yield tslib_1.__await(_e.next()), _a = _f.done, !_a; _d = true) {\n _c = _f.value;\n _d = false;\n const page = _c;\n yield tslib_1.__await(yield* tslib_1.__asyncDelegator(tslib_1.__asyncValues(page)));\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (!_d && !_a && (_b = _e.return)) yield tslib_1.__await(_b.call(_e));\n }\n finally { if (e_1) throw e_1.error; }\n }\n });\n }\n /**\n * Get all the deployments at the tenant scope.\n * @param options The options parameters.\n */\n listAtTenantScope(options) {\n const iter = this.listAtTenantScopePagingAll(options);\n return {\n next() {\n return iter.next();\n },\n [Symbol.asyncIterator]() {\n return this;\n },\n byPage: (settings) => {\n if (settings === null || settings === void 0 ? void 0 : settings.maxPageSize) {\n throw new Error(\"maxPageSize is not supported by this operation.\");\n }\n return this.listAtTenantScopePagingPage(options, settings);\n },\n };\n }\n listAtTenantScopePagingPage(options, settings) {\n return tslib_1.__asyncGenerator(this, arguments, function* listAtTenantScopePagingPage_1() {\n let result;\n let continuationToken = settings === null || settings === void 0 ? void 0 : settings.continuationToken;\n if (!continuationToken) {\n result = yield tslib_1.__await(this._listAtTenantScope(options));\n let page = result.value || [];\n continuationToken = result.nextLink;\n (0, pagingHelper_js_1.setContinuationToken)(page, continuationToken);\n yield yield tslib_1.__await(page);\n }\n while (continuationToken) {\n result = yield tslib_1.__await(this._listAtTenantScopeNext(continuationToken, options));\n continuationToken = result.nextLink;\n let page = result.value || [];\n (0, pagingHelper_js_1.setContinuationToken)(page, continuationToken);\n yield yield tslib_1.__await(page);\n }\n });\n }\n listAtTenantScopePagingAll(options) {\n return tslib_1.__asyncGenerator(this, arguments, function* listAtTenantScopePagingAll_1() {\n var _a, e_2, _b, _c;\n try {\n for (var _d = true, _e = tslib_1.__asyncValues(this.listAtTenantScopePagingPage(options)), _f; _f = yield tslib_1.__await(_e.next()), _a = _f.done, !_a; _d = true) {\n _c = _f.value;\n _d = false;\n const page = _c;\n yield tslib_1.__await(yield* tslib_1.__asyncDelegator(tslib_1.__asyncValues(page)));\n }\n }\n catch (e_2_1) { e_2 = { error: e_2_1 }; }\n finally {\n try {\n if (!_d && !_a && (_b = _e.return)) yield tslib_1.__await(_b.call(_e));\n }\n finally { if (e_2) throw e_2.error; }\n }\n });\n }\n /**\n * Get all the deployments for a management group.\n * @param groupId The management group ID.\n * @param options The options parameters.\n */\n listAtManagementGroupScope(groupId, options) {\n const iter = this.listAtManagementGroupScopePagingAll(groupId, options);\n return {\n next() {\n return iter.next();\n },\n [Symbol.asyncIterator]() {\n return this;\n },\n byPage: (settings) => {\n if (settings === null || settings === void 0 ? void 0 : settings.maxPageSize) {\n throw new Error(\"maxPageSize is not supported by this operation.\");\n }\n return this.listAtManagementGroupScopePagingPage(groupId, options, settings);\n },\n };\n }\n listAtManagementGroupScopePagingPage(groupId, options, settings) {\n return tslib_1.__asyncGenerator(this, arguments, function* listAtManagementGroupScopePagingPage_1() {\n let result;\n let continuationToken = settings === null || settings === void 0 ? void 0 : settings.continuationToken;\n if (!continuationToken) {\n result = yield tslib_1.__await(this._listAtManagementGroupScope(groupId, options));\n let page = result.value || [];\n continuationToken = result.nextLink;\n (0, pagingHelper_js_1.setContinuationToken)(page, continuationToken);\n yield yield tslib_1.__await(page);\n }\n while (continuationToken) {\n result = yield tslib_1.__await(this._listAtManagementGroupScopeNext(groupId, continuationToken, options));\n continuationToken = result.nextLink;\n let page = result.value || [];\n (0, pagingHelper_js_1.setContinuationToken)(page, continuationToken);\n yield yield tslib_1.__await(page);\n }\n });\n }\n listAtManagementGroupScopePagingAll(groupId, options) {\n return tslib_1.__asyncGenerator(this, arguments, function* listAtManagementGroupScopePagingAll_1() {\n var _a, e_3, _b, _c;\n try {\n for (var _d = true, _e = tslib_1.__asyncValues(this.listAtManagementGroupScopePagingPage(groupId, options)), _f; _f = yield tslib_1.__await(_e.next()), _a = _f.done, !_a; _d = true) {\n _c = _f.value;\n _d = false;\n const page = _c;\n yield tslib_1.__await(yield* tslib_1.__asyncDelegator(tslib_1.__asyncValues(page)));\n }\n }\n catch (e_3_1) { e_3 = { error: e_3_1 }; }\n finally {\n try {\n if (!_d && !_a && (_b = _e.return)) yield tslib_1.__await(_b.call(_e));\n }\n finally { if (e_3) throw e_3.error; }\n }\n });\n }\n /**\n * Get all the deployments for a subscription.\n * @param options The options parameters.\n */\n listAtSubscriptionScope(options) {\n const iter = this.listAtSubscriptionScopePagingAll(options);\n return {\n next() {\n return iter.next();\n },\n [Symbol.asyncIterator]() {\n return this;\n },\n byPage: (settings) => {\n if (settings === null || settings === void 0 ? void 0 : settings.maxPageSize) {\n throw new Error(\"maxPageSize is not supported by this operation.\");\n }\n return this.listAtSubscriptionScopePagingPage(options, settings);\n },\n };\n }\n listAtSubscriptionScopePagingPage(options, settings) {\n return tslib_1.__asyncGenerator(this, arguments, function* listAtSubscriptionScopePagingPage_1() {\n let result;\n let continuationToken = settings === null || settings === void 0 ? void 0 : settings.continuationToken;\n if (!continuationToken) {\n result = yield tslib_1.__await(this._listAtSubscriptionScope(options));\n let page = result.value || [];\n continuationToken = result.nextLink;\n (0, pagingHelper_js_1.setContinuationToken)(page, continuationToken);\n yield yield tslib_1.__await(page);\n }\n while (continuationToken) {\n result = yield tslib_1.__await(this._listAtSubscriptionScopeNext(continuationToken, options));\n continuationToken = result.nextLink;\n let page = result.value || [];\n (0, pagingHelper_js_1.setContinuationToken)(page, continuationToken);\n yield yield tslib_1.__await(page);\n }\n });\n }\n listAtSubscriptionScopePagingAll(options) {\n return tslib_1.__asyncGenerator(this, arguments, function* listAtSubscriptionScopePagingAll_1() {\n var _a, e_4, _b, _c;\n try {\n for (var _d = true, _e = tslib_1.__asyncValues(this.listAtSubscriptionScopePagingPage(options)), _f; _f = yield tslib_1.__await(_e.next()), _a = _f.done, !_a; _d = true) {\n _c = _f.value;\n _d = false;\n const page = _c;\n yield tslib_1.__await(yield* tslib_1.__asyncDelegator(tslib_1.__asyncValues(page)));\n }\n }\n catch (e_4_1) { e_4 = { error: e_4_1 }; }\n finally {\n try {\n if (!_d && !_a && (_b = _e.return)) yield tslib_1.__await(_b.call(_e));\n }\n finally { if (e_4) throw e_4.error; }\n }\n });\n }\n /**\n * Get all the deployments for a resource group.\n * @param resourceGroupName The name of the resource group with the deployments to get. The name is\n * case insensitive.\n * @param options The options parameters.\n */\n listByResourceGroup(resourceGroupName, options) {\n const iter = this.listByResourceGroupPagingAll(resourceGroupName, options);\n return {\n next() {\n return iter.next();\n },\n [Symbol.asyncIterator]() {\n return this;\n },\n byPage: (settings) => {\n if (settings === null || settings === void 0 ? void 0 : settings.maxPageSize) {\n throw new Error(\"maxPageSize is not supported by this operation.\");\n }\n return this.listByResourceGroupPagingPage(resourceGroupName, options, settings);\n },\n };\n }\n listByResourceGroupPagingPage(resourceGroupName, options, settings) {\n return tslib_1.__asyncGenerator(this, arguments, function* listByResourceGroupPagingPage_1() {\n let result;\n let continuationToken = settings === null || settings === void 0 ? void 0 : settings.continuationToken;\n if (!continuationToken) {\n result = yield tslib_1.__await(this._listByResourceGroup(resourceGroupName, options));\n let page = result.value || [];\n continuationToken = result.nextLink;\n (0, pagingHelper_js_1.setContinuationToken)(page, continuationToken);\n yield yield tslib_1.__await(page);\n }\n while (continuationToken) {\n result = yield tslib_1.__await(this._listByResourceGroupNext(resourceGroupName, continuationToken, options));\n continuationToken = result.nextLink;\n let page = result.value || [];\n (0, pagingHelper_js_1.setContinuationToken)(page, continuationToken);\n yield yield tslib_1.__await(page);\n }\n });\n }\n listByResourceGroupPagingAll(resourceGroupName, options) {\n return tslib_1.__asyncGenerator(this, arguments, function* listByResourceGroupPagingAll_1() {\n var _a, e_5, _b, _c;\n try {\n for (var _d = true, _e = tslib_1.__asyncValues(this.listByResourceGroupPagingPage(resourceGroupName, options)), _f; _f = yield tslib_1.__await(_e.next()), _a = _f.done, !_a; _d = true) {\n _c = _f.value;\n _d = false;\n const page = _c;\n yield tslib_1.__await(yield* tslib_1.__asyncDelegator(tslib_1.__asyncValues(page)));\n }\n }\n catch (e_5_1) { e_5 = { error: e_5_1 }; }\n finally {\n try {\n if (!_d && !_a && (_b = _e.return)) yield tslib_1.__await(_b.call(_e));\n }\n finally { if (e_5) throw e_5.error; }\n }\n });\n }\n /**\n * A template deployment that is currently running cannot be deleted. Deleting a template deployment\n * removes the associated deployment operations. This is an asynchronous operation that returns a\n * status of 202 until the template deployment is successfully deleted. The Location response header\n * contains the URI that is used to obtain the status of the process. While the process is running, a\n * call to the URI in the Location header returns a status of 202. When the process finishes, the URI\n * in the Location header returns a status of 204 on success. If the asynchronous request failed, the\n * URI in the Location header returns an error-level status code.\n * @param scope The resource scope.\n * @param deploymentName The name of the deployment.\n * @param options The options parameters.\n */\n async beginDeleteAtScope(scope, deploymentName, options) {\n const directSendOperation = async (args, spec) => {\n return this.client.sendOperationRequest(args, spec);\n };\n const sendOperationFn = async (args, spec) => {\n var _a;\n let currentRawResponse = undefined;\n const providedCallback = (_a = args.options) === null || _a === void 0 ? void 0 : _a.onResponse;\n const callback = (rawResponse, flatResponse) => {\n currentRawResponse = rawResponse;\n providedCallback === null || providedCallback === void 0 ? void 0 : providedCallback(rawResponse, flatResponse);\n };\n const updatedArgs = Object.assign(Object.assign({}, args), { options: Object.assign(Object.assign({}, args.options), { onResponse: callback }) });\n const flatResponse = await directSendOperation(updatedArgs, spec);\n return {\n flatResponse,\n rawResponse: {\n statusCode: currentRawResponse.status,\n body: currentRawResponse.parsedBody,\n headers: currentRawResponse.headers.toJSON(),\n },\n };\n };\n const lro = (0, lroImpl_js_1.createLroSpec)({\n sendOperationFn,\n args: { scope, deploymentName, options },\n spec: deleteAtScopeOperationSpec,\n });\n const poller = await (0, core_lro_1.createHttpPoller)(lro, {\n restoreFrom: options === null || options === void 0 ? void 0 : options.resumeFrom,\n intervalInMs: options === null || options === void 0 ? void 0 : options.updateIntervalInMs,\n });\n await poller.poll();\n return poller;\n }\n /**\n * A template deployment that is currently running cannot be deleted. Deleting a template deployment\n * removes the associated deployment operations. This is an asynchronous operation that returns a\n * status of 202 until the template deployment is successfully deleted. The Location response header\n * contains the URI that is used to obtain the status of the process. While the process is running, a\n * call to the URI in the Location header returns a status of 202. When the process finishes, the URI\n * in the Location header returns a status of 204 on success. If the asynchronous request failed, the\n * URI in the Location header returns an error-level status code.\n * @param scope The resource scope.\n * @param deploymentName The name of the deployment.\n * @param options The options parameters.\n */\n async beginDeleteAtScopeAndWait(scope, deploymentName, options) {\n const poller = await this.beginDeleteAtScope(scope, deploymentName, options);\n return poller.pollUntilDone();\n }\n /**\n * Checks whether the deployment exists.\n * @param scope The resource scope.\n * @param deploymentName The name of the deployment.\n * @param options The options parameters.\n */\n checkExistenceAtScope(scope, deploymentName, options) {\n return this.client.sendOperationRequest({ scope, deploymentName, options }, checkExistenceAtScopeOperationSpec);\n }\n /**\n * You can provide the template and parameters directly in the request or link to JSON files.\n * @param scope The resource scope.\n * @param deploymentName The name of the deployment.\n * @param parameters Additional parameters supplied to the operation.\n * @param options The options parameters.\n */\n async beginCreateOrUpdateAtScope(scope, deploymentName, parameters, options) {\n const directSendOperation = async (args, spec) => {\n return this.client.sendOperationRequest(args, spec);\n };\n const sendOperationFn = async (args, spec) => {\n var _a;\n let currentRawResponse = undefined;\n const providedCallback = (_a = args.options) === null || _a === void 0 ? void 0 : _a.onResponse;\n const callback = (rawResponse, flatResponse) => {\n currentRawResponse = rawResponse;\n providedCallback === null || providedCallback === void 0 ? void 0 : providedCallback(rawResponse, flatResponse);\n };\n const updatedArgs = Object.assign(Object.assign({}, args), { options: Object.assign(Object.assign({}, args.options), { onResponse: callback }) });\n const flatResponse = await directSendOperation(updatedArgs, spec);\n return {\n flatResponse,\n rawResponse: {\n statusCode: currentRawResponse.status,\n body: currentRawResponse.parsedBody,\n headers: currentRawResponse.headers.toJSON(),\n },\n };\n };\n const lro = (0, lroImpl_js_1.createLroSpec)({\n sendOperationFn,\n args: { scope, deploymentName, parameters, options },\n spec: createOrUpdateAtScopeOperationSpec,\n });\n const poller = await (0, core_lro_1.createHttpPoller)(lro, {\n restoreFrom: options === null || options === void 0 ? void 0 : options.resumeFrom,\n intervalInMs: options === null || options === void 0 ? void 0 : options.updateIntervalInMs,\n });\n await poller.poll();\n return poller;\n }\n /**\n * You can provide the template and parameters directly in the request or link to JSON files.\n * @param scope The resource scope.\n * @param deploymentName The name of the deployment.\n * @param parameters Additional parameters supplied to the operation.\n * @param options The options parameters.\n */\n async beginCreateOrUpdateAtScopeAndWait(scope, deploymentName, parameters, options) {\n const poller = await this.beginCreateOrUpdateAtScope(scope, deploymentName, parameters, options);\n return poller.pollUntilDone();\n }\n /**\n * Gets a deployment.\n * @param scope The resource scope.\n * @param deploymentName The name of the deployment.\n * @param options The options parameters.\n */\n getAtScope(scope, deploymentName, options) {\n return this.client.sendOperationRequest({ scope, deploymentName, options }, getAtScopeOperationSpec);\n }\n /**\n * You can cancel a deployment only if the provisioningState is Accepted or Running. After the\n * deployment is canceled, the provisioningState is set to Canceled. Canceling a template deployment\n * stops the currently running template deployment and leaves the resources partially deployed.\n * @param scope The resource scope.\n * @param deploymentName The name of the deployment.\n * @param options The options parameters.\n */\n cancelAtScope(scope, deploymentName, options) {\n return this.client.sendOperationRequest({ scope, deploymentName, options }, cancelAtScopeOperationSpec);\n }\n /**\n * Validates whether the specified template is syntactically correct and will be accepted by Azure\n * Resource Manager..\n * @param scope The resource scope.\n * @param deploymentName The name of the deployment.\n * @param parameters Parameters to validate.\n * @param options The options parameters.\n */\n async beginValidateAtScope(scope, deploymentName, parameters, options) {\n const directSendOperation = async (args, spec) => {\n return this.client.sendOperationRequest(args, spec);\n };\n const sendOperationFn = async (args, spec) => {\n var _a;\n let currentRawResponse = undefined;\n const providedCallback = (_a = args.options) === null || _a === void 0 ? void 0 : _a.onResponse;\n const callback = (rawResponse, flatResponse) => {\n currentRawResponse = rawResponse;\n providedCallback === null || providedCallback === void 0 ? void 0 : providedCallback(rawResponse, flatResponse);\n };\n const updatedArgs = Object.assign(Object.assign({}, args), { options: Object.assign(Object.assign({}, args.options), { onResponse: callback }) });\n const flatResponse = await directSendOperation(updatedArgs, spec);\n return {\n flatResponse,\n rawResponse: {\n statusCode: currentRawResponse.status,\n body: currentRawResponse.parsedBody,\n headers: currentRawResponse.headers.toJSON(),\n },\n };\n };\n const lro = (0, lroImpl_js_1.createLroSpec)({\n sendOperationFn,\n args: { scope, deploymentName, parameters, options },\n spec: validateAtScopeOperationSpec,\n });\n const poller = await (0, core_lro_1.createHttpPoller)(lro, {\n restoreFrom: options === null || options === void 0 ? void 0 : options.resumeFrom,\n intervalInMs: options === null || options === void 0 ? void 0 : options.updateIntervalInMs,\n });\n await poller.poll();\n return poller;\n }\n /**\n * Validates whether the specified template is syntactically correct and will be accepted by Azure\n * Resource Manager..\n * @param scope The resource scope.\n * @param deploymentName The name of the deployment.\n * @param parameters Parameters to validate.\n * @param options The options parameters.\n */\n async beginValidateAtScopeAndWait(scope, deploymentName, parameters, options) {\n const poller = await this.beginValidateAtScope(scope, deploymentName, parameters, options);\n return poller.pollUntilDone();\n }\n /**\n * Exports the template used for specified deployment.\n * @param scope The resource scope.\n * @param deploymentName The name of the deployment.\n * @param options The options parameters.\n */\n exportTemplateAtScope(scope, deploymentName, options) {\n return this.client.sendOperationRequest({ scope, deploymentName, options }, exportTemplateAtScopeOperationSpec);\n }\n /**\n * Get all the deployments at the given scope.\n * @param scope The resource scope.\n * @param options The options parameters.\n */\n _listAtScope(scope, options) {\n return this.client.sendOperationRequest({ scope, options }, listAtScopeOperationSpec);\n }\n /**\n * A template deployment that is currently running cannot be deleted. Deleting a template deployment\n * removes the associated deployment operations. This is an asynchronous operation that returns a\n * status of 202 until the template deployment is successfully deleted. The Location response header\n * contains the URI that is used to obtain the status of the process. While the process is running, a\n * call to the URI in the Location header returns a status of 202. When the process finishes, the URI\n * in the Location header returns a status of 204 on success. If the asynchronous request failed, the\n * URI in the Location header returns an error-level status code.\n * @param deploymentName The name of the deployment.\n * @param options The options parameters.\n */\n async beginDeleteAtTenantScope(deploymentName, options) {\n const directSendOperation = async (args, spec) => {\n return this.client.sendOperationRequest(args, spec);\n };\n const sendOperationFn = async (args, spec) => {\n var _a;\n let currentRawResponse = undefined;\n const providedCallback = (_a = args.options) === null || _a === void 0 ? void 0 : _a.onResponse;\n const callback = (rawResponse, flatResponse) => {\n currentRawResponse = rawResponse;\n providedCallback === null || providedCallback === void 0 ? void 0 : providedCallback(rawResponse, flatResponse);\n };\n const updatedArgs = Object.assign(Object.assign({}, args), { options: Object.assign(Object.assign({}, args.options), { onResponse: callback }) });\n const flatResponse = await directSendOperation(updatedArgs, spec);\n return {\n flatResponse,\n rawResponse: {\n statusCode: currentRawResponse.status,\n body: currentRawResponse.parsedBody,\n headers: currentRawResponse.headers.toJSON(),\n },\n };\n };\n const lro = (0, lroImpl_js_1.createLroSpec)({\n sendOperationFn,\n args: { deploymentName, options },\n spec: deleteAtTenantScopeOperationSpec,\n });\n const poller = await (0, core_lro_1.createHttpPoller)(lro, {\n restoreFrom: options === null || options === void 0 ? void 0 : options.resumeFrom,\n intervalInMs: options === null || options === void 0 ? void 0 : options.updateIntervalInMs,\n });\n await poller.poll();\n return poller;\n }\n /**\n * A template deployment that is currently running cannot be deleted. Deleting a template deployment\n * removes the associated deployment operations. This is an asynchronous operation that returns a\n * status of 202 until the template deployment is successfully deleted. The Location response header\n * contains the URI that is used to obtain the status of the process. While the process is running, a\n * call to the URI in the Location header returns a status of 202. When the process finishes, the URI\n * in the Location header returns a status of 204 on success. If the asynchronous request failed, the\n * URI in the Location header returns an error-level status code.\n * @param deploymentName The name of the deployment.\n * @param options The options parameters.\n */\n async beginDeleteAtTenantScopeAndWait(deploymentName, options) {\n const poller = await this.beginDeleteAtTenantScope(deploymentName, options);\n return poller.pollUntilDone();\n }\n /**\n * Checks whether the deployment exists.\n * @param deploymentName The name of the deployment.\n * @param options The options parameters.\n */\n checkExistenceAtTenantScope(deploymentName, options) {\n return this.client.sendOperationRequest({ deploymentName, options }, checkExistenceAtTenantScopeOperationSpec);\n }\n /**\n * You can provide the template and parameters directly in the request or link to JSON files.\n * @param deploymentName The name of the deployment.\n * @param parameters Additional parameters supplied to the operation.\n * @param options The options parameters.\n */\n async beginCreateOrUpdateAtTenantScope(deploymentName, parameters, options) {\n const directSendOperation = async (args, spec) => {\n return this.client.sendOperationRequest(args, spec);\n };\n const sendOperationFn = async (args, spec) => {\n var _a;\n let currentRawResponse = undefined;\n const providedCallback = (_a = args.options) === null || _a === void 0 ? void 0 : _a.onResponse;\n const callback = (rawResponse, flatResponse) => {\n currentRawResponse = rawResponse;\n providedCallback === null || providedCallback === void 0 ? void 0 : providedCallback(rawResponse, flatResponse);\n };\n const updatedArgs = Object.assign(Object.assign({}, args), { options: Object.assign(Object.assign({}, args.options), { onResponse: callback }) });\n const flatResponse = await directSendOperation(updatedArgs, spec);\n return {\n flatResponse,\n rawResponse: {\n statusCode: currentRawResponse.status,\n body: currentRawResponse.parsedBody,\n headers: currentRawResponse.headers.toJSON(),\n },\n };\n };\n const lro = (0, lroImpl_js_1.createLroSpec)({\n sendOperationFn,\n args: { deploymentName, parameters, options },\n spec: createOrUpdateAtTenantScopeOperationSpec,\n });\n const poller = await (0, core_lro_1.createHttpPoller)(lro, {\n restoreFrom: options === null || options === void 0 ? void 0 : options.resumeFrom,\n intervalInMs: options === null || options === void 0 ? void 0 : options.updateIntervalInMs,\n });\n await poller.poll();\n return poller;\n }\n /**\n * You can provide the template and parameters directly in the request or link to JSON files.\n * @param deploymentName The name of the deployment.\n * @param parameters Additional parameters supplied to the operation.\n * @param options The options parameters.\n */\n async beginCreateOrUpdateAtTenantScopeAndWait(deploymentName, parameters, options) {\n const poller = await this.beginCreateOrUpdateAtTenantScope(deploymentName, parameters, options);\n return poller.pollUntilDone();\n }\n /**\n * Gets a deployment.\n * @param deploymentName The name of the deployment.\n * @param options The options parameters.\n */\n getAtTenantScope(deploymentName, options) {\n return this.client.sendOperationRequest({ deploymentName, options }, getAtTenantScopeOperationSpec);\n }\n /**\n * You can cancel a deployment only if the provisioningState is Accepted or Running. After the\n * deployment is canceled, the provisioningState is set to Canceled. Canceling a template deployment\n * stops the currently running template deployment and leaves the resources partially deployed.\n * @param deploymentName The name of the deployment.\n * @param options The options parameters.\n */\n cancelAtTenantScope(deploymentName, options) {\n return this.client.sendOperationRequest({ deploymentName, options }, cancelAtTenantScopeOperationSpec);\n }\n /**\n * Validates whether the specified template is syntactically correct and will be accepted by Azure\n * Resource Manager..\n * @param deploymentName The name of the deployment.\n * @param parameters Parameters to validate.\n * @param options The options parameters.\n */\n async beginValidateAtTenantScope(deploymentName, parameters, options) {\n const directSendOperation = async (args, spec) => {\n return this.client.sendOperationRequest(args, spec);\n };\n const sendOperationFn = async (args, spec) => {\n var _a;\n let currentRawResponse = undefined;\n const providedCallback = (_a = args.options) === null || _a === void 0 ? void 0 : _a.onResponse;\n const callback = (rawResponse, flatResponse) => {\n currentRawResponse = rawResponse;\n providedCallback === null || providedCallback === void 0 ? void 0 : providedCallback(rawResponse, flatResponse);\n };\n const updatedArgs = Object.assign(Object.assign({}, args), { options: Object.assign(Object.assign({}, args.options), { onResponse: callback }) });\n const flatResponse = await directSendOperation(updatedArgs, spec);\n return {\n flatResponse,\n rawResponse: {\n statusCode: currentRawResponse.status,\n body: currentRawResponse.parsedBody,\n headers: currentRawResponse.headers.toJSON(),\n },\n };\n };\n const lro = (0, lroImpl_js_1.createLroSpec)({\n sendOperationFn,\n args: { deploymentName, parameters, options },\n spec: validateAtTenantScopeOperationSpec,\n });\n const poller = await (0, core_lro_1.createHttpPoller)(lro, {\n restoreFrom: options === null || options === void 0 ? void 0 : options.resumeFrom,\n intervalInMs: options === null || options === void 0 ? void 0 : options.updateIntervalInMs,\n });\n await poller.poll();\n return poller;\n }\n /**\n * Validates whether the specified template is syntactically correct and will be accepted by Azure\n * Resource Manager..\n * @param deploymentName The name of the deployment.\n * @param parameters Parameters to validate.\n * @param options The options parameters.\n */\n async beginValidateAtTenantScopeAndWait(deploymentName, parameters, options) {\n const poller = await this.beginValidateAtTenantScope(deploymentName, parameters, options);\n return poller.pollUntilDone();\n }\n /**\n * Returns changes that will be made by the deployment if executed at the scope of the tenant group.\n * @param deploymentName The name of the deployment.\n * @param parameters Parameters to validate.\n * @param options The options parameters.\n */\n async beginWhatIfAtTenantScope(deploymentName, parameters, options) {\n const directSendOperation = async (args, spec) => {\n return this.client.sendOperationRequest(args, spec);\n };\n const sendOperationFn = async (args, spec) => {\n var _a;\n let currentRawResponse = undefined;\n const providedCallback = (_a = args.options) === null || _a === void 0 ? void 0 : _a.onResponse;\n const callback = (rawResponse, flatResponse) => {\n currentRawResponse = rawResponse;\n providedCallback === null || providedCallback === void 0 ? void 0 : providedCallback(rawResponse, flatResponse);\n };\n const updatedArgs = Object.assign(Object.assign({}, args), { options: Object.assign(Object.assign({}, args.options), { onResponse: callback }) });\n const flatResponse = await directSendOperation(updatedArgs, spec);\n return {\n flatResponse,\n rawResponse: {\n statusCode: currentRawResponse.status,\n body: currentRawResponse.parsedBody,\n headers: currentRawResponse.headers.toJSON(),\n },\n };\n };\n const lro = (0, lroImpl_js_1.createLroSpec)({\n sendOperationFn,\n args: { deploymentName, parameters, options },\n spec: whatIfAtTenantScopeOperationSpec,\n });\n const poller = await (0, core_lro_1.createHttpPoller)(lro, {\n restoreFrom: options === null || options === void 0 ? void 0 : options.resumeFrom,\n intervalInMs: options === null || options === void 0 ? void 0 : options.updateIntervalInMs,\n resourceLocationConfig: \"location\",\n });\n await poller.poll();\n return poller;\n }\n /**\n * Returns changes that will be made by the deployment if executed at the scope of the tenant group.\n * @param deploymentName The name of the deployment.\n * @param parameters Parameters to validate.\n * @param options The options parameters.\n */\n async beginWhatIfAtTenantScopeAndWait(deploymentName, parameters, options) {\n const poller = await this.beginWhatIfAtTenantScope(deploymentName, parameters, options);\n return poller.pollUntilDone();\n }\n /**\n * Exports the template used for specified deployment.\n * @param deploymentName The name of the deployment.\n * @param options The options parameters.\n */\n exportTemplateAtTenantScope(deploymentName, options) {\n return this.client.sendOperationRequest({ deploymentName, options }, exportTemplateAtTenantScopeOperationSpec);\n }\n /**\n * Get all the deployments at the tenant scope.\n * @param options The options parameters.\n */\n _listAtTenantScope(options) {\n return this.client.sendOperationRequest({ options }, listAtTenantScopeOperationSpec);\n }\n /**\n * A template deployment that is currently running cannot be deleted. Deleting a template deployment\n * removes the associated deployment operations. This is an asynchronous operation that returns a\n * status of 202 until the template deployment is successfully deleted. The Location response header\n * contains the URI that is used to obtain the status of the process. While the process is running, a\n * call to the URI in the Location header returns a status of 202. When the process finishes, the URI\n * in the Location header returns a status of 204 on success. If the asynchronous request failed, the\n * URI in the Location header returns an error-level status code.\n * @param groupId The management group ID.\n * @param deploymentName The name of the deployment.\n * @param options The options parameters.\n */\n async beginDeleteAtManagementGroupScope(groupId, deploymentName, options) {\n const directSendOperation = async (args, spec) => {\n return this.client.sendOperationRequest(args, spec);\n };\n const sendOperationFn = async (args, spec) => {\n var _a;\n let currentRawResponse = undefined;\n const providedCallback = (_a = args.options) === null || _a === void 0 ? void 0 : _a.onResponse;\n const callback = (rawResponse, flatResponse) => {\n currentRawResponse = rawResponse;\n providedCallback === null || providedCallback === void 0 ? void 0 : providedCallback(rawResponse, flatResponse);\n };\n const updatedArgs = Object.assign(Object.assign({}, args), { options: Object.assign(Object.assign({}, args.options), { onResponse: callback }) });\n const flatResponse = await directSendOperation(updatedArgs, spec);\n return {\n flatResponse,\n rawResponse: {\n statusCode: currentRawResponse.status,\n body: currentRawResponse.parsedBody,\n headers: currentRawResponse.headers.toJSON(),\n },\n };\n };\n const lro = (0, lroImpl_js_1.createLroSpec)({\n sendOperationFn,\n args: { groupId, deploymentName, options },\n spec: deleteAtManagementGroupScopeOperationSpec,\n });\n const poller = await (0, core_lro_1.createHttpPoller)(lro, {\n restoreFrom: options === null || options === void 0 ? void 0 : options.resumeFrom,\n intervalInMs: options === null || options === void 0 ? void 0 : options.updateIntervalInMs,\n });\n await poller.poll();\n return poller;\n }\n /**\n * A template deployment that is currently running cannot be deleted. Deleting a template deployment\n * removes the associated deployment operations. This is an asynchronous operation that returns a\n * status of 202 until the template deployment is successfully deleted. The Location response header\n * contains the URI that is used to obtain the status of the process. While the process is running, a\n * call to the URI in the Location header returns a status of 202. When the process finishes, the URI\n * in the Location header returns a status of 204 on success. If the asynchronous request failed, the\n * URI in the Location header returns an error-level status code.\n * @param groupId The management group ID.\n * @param deploymentName The name of the deployment.\n * @param options The options parameters.\n */\n async beginDeleteAtManagementGroupScopeAndWait(groupId, deploymentName, options) {\n const poller = await this.beginDeleteAtManagementGroupScope(groupId, deploymentName, options);\n return poller.pollUntilDone();\n }\n /**\n * Checks whether the deployment exists.\n * @param groupId The management group ID.\n * @param deploymentName The name of the deployment.\n * @param options The options parameters.\n */\n checkExistenceAtManagementGroupScope(groupId, deploymentName, options) {\n return this.client.sendOperationRequest({ groupId, deploymentName, options }, checkExistenceAtManagementGroupScopeOperationSpec);\n }\n /**\n * You can provide the template and parameters directly in the request or link to JSON files.\n * @param groupId The management group ID.\n * @param deploymentName The name of the deployment.\n * @param parameters Additional parameters supplied to the operation.\n * @param options The options parameters.\n */\n async beginCreateOrUpdateAtManagementGroupScope(groupId, deploymentName, parameters, options) {\n const directSendOperation = async (args, spec) => {\n return this.client.sendOperationRequest(args, spec);\n };\n const sendOperationFn = async (args, spec) => {\n var _a;\n let currentRawResponse = undefined;\n const providedCallback = (_a = args.options) === null || _a === void 0 ? void 0 : _a.onResponse;\n const callback = (rawResponse, flatResponse) => {\n currentRawResponse = rawResponse;\n providedCallback === null || providedCallback === void 0 ? void 0 : providedCallback(rawResponse, flatResponse);\n };\n const updatedArgs = Object.assign(Object.assign({}, args), { options: Object.assign(Object.assign({}, args.options), { onResponse: callback }) });\n const flatResponse = await directSendOperation(updatedArgs, spec);\n return {\n flatResponse,\n rawResponse: {\n statusCode: currentRawResponse.status,\n body: currentRawResponse.parsedBody,\n headers: currentRawResponse.headers.toJSON(),\n },\n };\n };\n const lro = (0, lroImpl_js_1.createLroSpec)({\n sendOperationFn,\n args: { groupId, deploymentName, parameters, options },\n spec: createOrUpdateAtManagementGroupScopeOperationSpec,\n });\n const poller = await (0, core_lro_1.createHttpPoller)(lro, {\n restoreFrom: options === null || options === void 0 ? void 0 : options.resumeFrom,\n intervalInMs: options === null || options === void 0 ? void 0 : options.updateIntervalInMs,\n });\n await poller.poll();\n return poller;\n }\n /**\n * You can provide the template and parameters directly in the request or link to JSON files.\n * @param groupId The management group ID.\n * @param deploymentName The name of the deployment.\n * @param parameters Additional parameters supplied to the operation.\n * @param options The options parameters.\n */\n async beginCreateOrUpdateAtManagementGroupScopeAndWait(groupId, deploymentName, parameters, options) {\n const poller = await this.beginCreateOrUpdateAtManagementGroupScope(groupId, deploymentName, parameters, options);\n return poller.pollUntilDone();\n }\n /**\n * Gets a deployment.\n * @param groupId The management group ID.\n * @param deploymentName The name of the deployment.\n * @param options The options parameters.\n */\n getAtManagementGroupScope(groupId, deploymentName, options) {\n return this.client.sendOperationRequest({ groupId, deploymentName, options }, getAtManagementGroupScopeOperationSpec);\n }\n /**\n * You can cancel a deployment only if the provisioningState is Accepted or Running. After the\n * deployment is canceled, the provisioningState is set to Canceled. Canceling a template deployment\n * stops the currently running template deployment and leaves the resources partially deployed.\n * @param groupId The management group ID.\n * @param deploymentName The name of the deployment.\n * @param options The options parameters.\n */\n cancelAtManagementGroupScope(groupId, deploymentName, options) {\n return this.client.sendOperationRequest({ groupId, deploymentName, options }, cancelAtManagementGroupScopeOperationSpec);\n }\n /**\n * Validates whether the specified template is syntactically correct and will be accepted by Azure\n * Resource Manager..\n * @param groupId The management group ID.\n * @param deploymentName The name of the deployment.\n * @param parameters Parameters to validate.\n * @param options The options parameters.\n */\n async beginValidateAtManagementGroupScope(groupId, deploymentName, parameters, options) {\n const directSendOperation = async (args, spec) => {\n return this.client.sendOperationRequest(args, spec);\n };\n const sendOperationFn = async (args, spec) => {\n var _a;\n let currentRawResponse = undefined;\n const providedCallback = (_a = args.options) === null || _a === void 0 ? void 0 : _a.onResponse;\n const callback = (rawResponse, flatResponse) => {\n currentRawResponse = rawResponse;\n providedCallback === null || providedCallback === void 0 ? void 0 : providedCallback(rawResponse, flatResponse);\n };\n const updatedArgs = Object.assign(Object.assign({}, args), { options: Object.assign(Object.assign({}, args.options), { onResponse: callback }) });\n const flatResponse = await directSendOperation(updatedArgs, spec);\n return {\n flatResponse,\n rawResponse: {\n statusCode: currentRawResponse.status,\n body: currentRawResponse.parsedBody,\n headers: currentRawResponse.headers.toJSON(),\n },\n };\n };\n const lro = (0, lroImpl_js_1.createLroSpec)({\n sendOperationFn,\n args: { groupId, deploymentName, parameters, options },\n spec: validateAtManagementGroupScopeOperationSpec,\n });\n const poller = await (0, core_lro_1.createHttpPoller)(lro, {\n restoreFrom: options === null || options === void 0 ? void 0 : options.resumeFrom,\n intervalInMs: options === null || options === void 0 ? void 0 : options.updateIntervalInMs,\n });\n await poller.poll();\n return poller;\n }\n /**\n * Validates whether the specified template is syntactically correct and will be accepted by Azure\n * Resource Manager..\n * @param groupId The management group ID.\n * @param deploymentName The name of the deployment.\n * @param parameters Parameters to validate.\n * @param options The options parameters.\n */\n async beginValidateAtManagementGroupScopeAndWait(groupId, deploymentName, parameters, options) {\n const poller = await this.beginValidateAtManagementGroupScope(groupId, deploymentName, parameters, options);\n return poller.pollUntilDone();\n }\n /**\n * Returns changes that will be made by the deployment if executed at the scope of the management\n * group.\n * @param groupId The management group ID.\n * @param deploymentName The name of the deployment.\n * @param parameters Parameters to validate.\n * @param options The options parameters.\n */\n async beginWhatIfAtManagementGroupScope(groupId, deploymentName, parameters, options) {\n const directSendOperation = async (args, spec) => {\n return this.client.sendOperationRequest(args, spec);\n };\n const sendOperationFn = async (args, spec) => {\n var _a;\n let currentRawResponse = undefined;\n const providedCallback = (_a = args.options) === null || _a === void 0 ? void 0 : _a.onResponse;\n const callback = (rawResponse, flatResponse) => {\n currentRawResponse = rawResponse;\n providedCallback === null || providedCallback === void 0 ? void 0 : providedCallback(rawResponse, flatResponse);\n };\n const updatedArgs = Object.assign(Object.assign({}, args), { options: Object.assign(Object.assign({}, args.options), { onResponse: callback }) });\n const flatResponse = await directSendOperation(updatedArgs, spec);\n return {\n flatResponse,\n rawResponse: {\n statusCode: currentRawResponse.status,\n body: currentRawResponse.parsedBody,\n headers: currentRawResponse.headers.toJSON(),\n },\n };\n };\n const lro = (0, lroImpl_js_1.createLroSpec)({\n sendOperationFn,\n args: { groupId, deploymentName, parameters, options },\n spec: whatIfAtManagementGroupScopeOperationSpec,\n });\n const poller = await (0, core_lro_1.createHttpPoller)(lro, {\n restoreFrom: options === null || options === void 0 ? void 0 : options.resumeFrom,\n intervalInMs: options === null || options === void 0 ? void 0 : options.updateIntervalInMs,\n resourceLocationConfig: \"location\",\n });\n await poller.poll();\n return poller;\n }\n /**\n * Returns changes that will be made by the deployment if executed at the scope of the management\n * group.\n * @param groupId The management group ID.\n * @param deploymentName The name of the deployment.\n * @param parameters Parameters to validate.\n * @param options The options parameters.\n */\n async beginWhatIfAtManagementGroupScopeAndWait(groupId, deploymentName, parameters, options) {\n const poller = await this.beginWhatIfAtManagementGroupScope(groupId, deploymentName, parameters, options);\n return poller.pollUntilDone();\n }\n /**\n * Exports the template used for specified deployment.\n * @param groupId The management group ID.\n * @param deploymentName The name of the deployment.\n * @param options The options parameters.\n */\n exportTemplateAtManagementGroupScope(groupId, deploymentName, options) {\n return this.client.sendOperationRequest({ groupId, deploymentName, options }, exportTemplateAtManagementGroupScopeOperationSpec);\n }\n /**\n * Get all the deployments for a management group.\n * @param groupId The management group ID.\n * @param options The options parameters.\n */\n _listAtManagementGroupScope(groupId, options) {\n return this.client.sendOperationRequest({ groupId, options }, listAtManagementGroupScopeOperationSpec);\n }\n /**\n * A template deployment that is currently running cannot be deleted. Deleting a template deployment\n * removes the associated deployment operations. This is an asynchronous operation that returns a\n * status of 202 until the template deployment is successfully deleted. The Location response header\n * contains the URI that is used to obtain the status of the process. While the process is running, a\n * call to the URI in the Location header returns a status of 202. When the process finishes, the URI\n * in the Location header returns a status of 204 on success. If the asynchronous request failed, the\n * URI in the Location header returns an error-level status code.\n * @param deploymentName The name of the deployment.\n * @param options The options parameters.\n */\n async beginDeleteAtSubscriptionScope(deploymentName, options) {\n const directSendOperation = async (args, spec) => {\n return this.client.sendOperationRequest(args, spec);\n };\n const sendOperationFn = async (args, spec) => {\n var _a;\n let currentRawResponse = undefined;\n const providedCallback = (_a = args.options) === null || _a === void 0 ? void 0 : _a.onResponse;\n const callback = (rawResponse, flatResponse) => {\n currentRawResponse = rawResponse;\n providedCallback === null || providedCallback === void 0 ? void 0 : providedCallback(rawResponse, flatResponse);\n };\n const updatedArgs = Object.assign(Object.assign({}, args), { options: Object.assign(Object.assign({}, args.options), { onResponse: callback }) });\n const flatResponse = await directSendOperation(updatedArgs, spec);\n return {\n flatResponse,\n rawResponse: {\n statusCode: currentRawResponse.status,\n body: currentRawResponse.parsedBody,\n headers: currentRawResponse.headers.toJSON(),\n },\n };\n };\n const lro = (0, lroImpl_js_1.createLroSpec)({\n sendOperationFn,\n args: { deploymentName, options },\n spec: deleteAtSubscriptionScopeOperationSpec,\n });\n const poller = await (0, core_lro_1.createHttpPoller)(lro, {\n restoreFrom: options === null || options === void 0 ? void 0 : options.resumeFrom,\n intervalInMs: options === null || options === void 0 ? void 0 : options.updateIntervalInMs,\n });\n await poller.poll();\n return poller;\n }\n /**\n * A template deployment that is currently running cannot be deleted. Deleting a template deployment\n * removes the associated deployment operations. This is an asynchronous operation that returns a\n * status of 202 until the template deployment is successfully deleted. The Location response header\n * contains the URI that is used to obtain the status of the process. While the process is running, a\n * call to the URI in the Location header returns a status of 202. When the process finishes, the URI\n * in the Location header returns a status of 204 on success. If the asynchronous request failed, the\n * URI in the Location header returns an error-level status code.\n * @param deploymentName The name of the deployment.\n * @param options The options parameters.\n */\n async beginDeleteAtSubscriptionScopeAndWait(deploymentName, options) {\n const poller = await this.beginDeleteAtSubscriptionScope(deploymentName, options);\n return poller.pollUntilDone();\n }\n /**\n * Checks whether the deployment exists.\n * @param deploymentName The name of the deployment.\n * @param options The options parameters.\n */\n checkExistenceAtSubscriptionScope(deploymentName, options) {\n return this.client.sendOperationRequest({ deploymentName, options }, checkExistenceAtSubscriptionScopeOperationSpec);\n }\n /**\n * You can provide the template and parameters directly in the request or link to JSON files.\n * @param deploymentName The name of the deployment.\n * @param parameters Additional parameters supplied to the operation.\n * @param options The options parameters.\n */\n async beginCreateOrUpdateAtSubscriptionScope(deploymentName, parameters, options) {\n const directSendOperation = async (args, spec) => {\n return this.client.sendOperationRequest(args, spec);\n };\n const sendOperationFn = async (args, spec) => {\n var _a;\n let currentRawResponse = undefined;\n const providedCallback = (_a = args.options) === null || _a === void 0 ? void 0 : _a.onResponse;\n const callback = (rawResponse, flatResponse) => {\n currentRawResponse = rawResponse;\n providedCallback === null || providedCallback === void 0 ? void 0 : providedCallback(rawResponse, flatResponse);\n };\n const updatedArgs = Object.assign(Object.assign({}, args), { options: Object.assign(Object.assign({}, args.options), { onResponse: callback }) });\n const flatResponse = await directSendOperation(updatedArgs, spec);\n return {\n flatResponse,\n rawResponse: {\n statusCode: currentRawResponse.status,\n body: currentRawResponse.parsedBody,\n headers: currentRawResponse.headers.toJSON(),\n },\n };\n };\n const lro = (0, lroImpl_js_1.createLroSpec)({\n sendOperationFn,\n args: { deploymentName, parameters, options },\n spec: createOrUpdateAtSubscriptionScopeOperationSpec,\n });\n const poller = await (0, core_lro_1.createHttpPoller)(lro, {\n restoreFrom: options === null || options === void 0 ? void 0 : options.resumeFrom,\n intervalInMs: options === null || options === void 0 ? void 0 : options.updateIntervalInMs,\n });\n await poller.poll();\n return poller;\n }\n /**\n * You can provide the template and parameters directly in the request or link to JSON files.\n * @param deploymentName The name of the deployment.\n * @param parameters Additional parameters supplied to the operation.\n * @param options The options parameters.\n */\n async beginCreateOrUpdateAtSubscriptionScopeAndWait(deploymentName, parameters, options) {\n const poller = await this.beginCreateOrUpdateAtSubscriptionScope(deploymentName, parameters, options);\n return poller.pollUntilDone();\n }\n /**\n * Gets a deployment.\n * @param deploymentName The name of the deployment.\n * @param options The options parameters.\n */\n getAtSubscriptionScope(deploymentName, options) {\n return this.client.sendOperationRequest({ deploymentName, options }, getAtSubscriptionScopeOperationSpec);\n }\n /**\n * You can cancel a deployment only if the provisioningState is Accepted or Running. After the\n * deployment is canceled, the provisioningState is set to Canceled. Canceling a template deployment\n * stops the currently running template deployment and leaves the resources partially deployed.\n * @param deploymentName The name of the deployment.\n * @param options The options parameters.\n */\n cancelAtSubscriptionScope(deploymentName, options) {\n return this.client.sendOperationRequest({ deploymentName, options }, cancelAtSubscriptionScopeOperationSpec);\n }\n /**\n * Validates whether the specified template is syntactically correct and will be accepted by Azure\n * Resource Manager..\n * @param deploymentName The name of the deployment.\n * @param parameters Parameters to validate.\n * @param options The options parameters.\n */\n async beginValidateAtSubscriptionScope(deploymentName, parameters, options) {\n const directSendOperation = async (args, spec) => {\n return this.client.sendOperationRequest(args, spec);\n };\n const sendOperationFn = async (args, spec) => {\n var _a;\n let currentRawResponse = undefined;\n const providedCallback = (_a = args.options) === null || _a === void 0 ? void 0 : _a.onResponse;\n const callback = (rawResponse, flatResponse) => {\n currentRawResponse = rawResponse;\n providedCallback === null || providedCallback === void 0 ? void 0 : providedCallback(rawResponse, flatResponse);\n };\n const updatedArgs = Object.assign(Object.assign({}, args), { options: Object.assign(Object.assign({}, args.options), { onResponse: callback }) });\n const flatResponse = await directSendOperation(updatedArgs, spec);\n return {\n flatResponse,\n rawResponse: {\n statusCode: currentRawResponse.status,\n body: currentRawResponse.parsedBody,\n headers: currentRawResponse.headers.toJSON(),\n },\n };\n };\n const lro = (0, lroImpl_js_1.createLroSpec)({\n sendOperationFn,\n args: { deploymentName, parameters, options },\n spec: validateAtSubscriptionScopeOperationSpec,\n });\n const poller = await (0, core_lro_1.createHttpPoller)(lro, {\n restoreFrom: options === null || options === void 0 ? void 0 : options.resumeFrom,\n intervalInMs: options === null || options === void 0 ? void 0 : options.updateIntervalInMs,\n });\n await poller.poll();\n return poller;\n }\n /**\n * Validates whether the specified template is syntactically correct and will be accepted by Azure\n * Resource Manager..\n * @param deploymentName The name of the deployment.\n * @param parameters Parameters to validate.\n * @param options The options parameters.\n */\n async beginValidateAtSubscriptionScopeAndWait(deploymentName, parameters, options) {\n const poller = await this.beginValidateAtSubscriptionScope(deploymentName, parameters, options);\n return poller.pollUntilDone();\n }\n /**\n * Returns changes that will be made by the deployment if executed at the scope of the subscription.\n * @param deploymentName The name of the deployment.\n * @param parameters Parameters to What If.\n * @param options The options parameters.\n */\n async beginWhatIfAtSubscriptionScope(deploymentName, parameters, options) {\n const directSendOperation = async (args, spec) => {\n return this.client.sendOperationRequest(args, spec);\n };\n const sendOperationFn = async (args, spec) => {\n var _a;\n let currentRawResponse = undefined;\n const providedCallback = (_a = args.options) === null || _a === void 0 ? void 0 : _a.onResponse;\n const callback = (rawResponse, flatResponse) => {\n currentRawResponse = rawResponse;\n providedCallback === null || providedCallback === void 0 ? void 0 : providedCallback(rawResponse, flatResponse);\n };\n const updatedArgs = Object.assign(Object.assign({}, args), { options: Object.assign(Object.assign({}, args.options), { onResponse: callback }) });\n const flatResponse = await directSendOperation(updatedArgs, spec);\n return {\n flatResponse,\n rawResponse: {\n statusCode: currentRawResponse.status,\n body: currentRawResponse.parsedBody,\n headers: currentRawResponse.headers.toJSON(),\n },\n };\n };\n const lro = (0, lroImpl_js_1.createLroSpec)({\n sendOperationFn,\n args: { deploymentName, parameters, options },\n spec: whatIfAtSubscriptionScopeOperationSpec,\n });\n const poller = await (0, core_lro_1.createHttpPoller)(lro, {\n restoreFrom: options === null || options === void 0 ? void 0 : options.resumeFrom,\n intervalInMs: options === null || options === void 0 ? void 0 : options.updateIntervalInMs,\n resourceLocationConfig: \"location\",\n });\n await poller.poll();\n return poller;\n }\n /**\n * Returns changes that will be made by the deployment if executed at the scope of the subscription.\n * @param deploymentName The name of the deployment.\n * @param parameters Parameters to What If.\n * @param options The options parameters.\n */\n async beginWhatIfAtSubscriptionScopeAndWait(deploymentName, parameters, options) {\n const poller = await this.beginWhatIfAtSubscriptionScope(deploymentName, parameters, options);\n return poller.pollUntilDone();\n }\n /**\n * Exports the template used for specified deployment.\n * @param deploymentName The name of the deployment.\n * @param options The options parameters.\n */\n exportTemplateAtSubscriptionScope(deploymentName, options) {\n return this.client.sendOperationRequest({ deploymentName, options }, exportTemplateAtSubscriptionScopeOperationSpec);\n }\n /**\n * Get all the deployments for a subscription.\n * @param options The options parameters.\n */\n _listAtSubscriptionScope(options) {\n return this.client.sendOperationRequest({ options }, listAtSubscriptionScopeOperationSpec);\n }\n /**\n * A template deployment that is currently running cannot be deleted. Deleting a template deployment\n * removes the associated deployment operations. Deleting a template deployment does not affect the\n * state of the resource group. This is an asynchronous operation that returns a status of 202 until\n * the template deployment is successfully deleted. The Location response header contains the URI that\n * is used to obtain the status of the process. While the process is running, a call to the URI in the\n * Location header returns a status of 202. When the process finishes, the URI in the Location header\n * returns a status of 204 on success. If the asynchronous request failed, the URI in the Location\n * header returns an error-level status code.\n * @param resourceGroupName The name of the resource group with the deployment to delete. The name is\n * case insensitive.\n * @param deploymentName The name of the deployment.\n * @param options The options parameters.\n */\n async beginDelete(resourceGroupName, deploymentName, options) {\n const directSendOperation = async (args, spec) => {\n return this.client.sendOperationRequest(args, spec);\n };\n const sendOperationFn = async (args, spec) => {\n var _a;\n let currentRawResponse = undefined;\n const providedCallback = (_a = args.options) === null || _a === void 0 ? void 0 : _a.onResponse;\n const callback = (rawResponse, flatResponse) => {\n currentRawResponse = rawResponse;\n providedCallback === null || providedCallback === void 0 ? void 0 : providedCallback(rawResponse, flatResponse);\n };\n const updatedArgs = Object.assign(Object.assign({}, args), { options: Object.assign(Object.assign({}, args.options), { onResponse: callback }) });\n const flatResponse = await directSendOperation(updatedArgs, spec);\n return {\n flatResponse,\n rawResponse: {\n statusCode: currentRawResponse.status,\n body: currentRawResponse.parsedBody,\n headers: currentRawResponse.headers.toJSON(),\n },\n };\n };\n const lro = (0, lroImpl_js_1.createLroSpec)({\n sendOperationFn,\n args: { resourceGroupName, deploymentName, options },\n spec: deleteOperationSpec,\n });\n const poller = await (0, core_lro_1.createHttpPoller)(lro, {\n restoreFrom: options === null || options === void 0 ? void 0 : options.resumeFrom,\n intervalInMs: options === null || options === void 0 ? void 0 : options.updateIntervalInMs,\n });\n await poller.poll();\n return poller;\n }\n /**\n * A template deployment that is currently running cannot be deleted. Deleting a template deployment\n * removes the associated deployment operations. Deleting a template deployment does not affect the\n * state of the resource group. This is an asynchronous operation that returns a status of 202 until\n * the template deployment is successfully deleted. The Location response header contains the URI that\n * is used to obtain the status of the process. While the process is running, a call to the URI in the\n * Location header returns a status of 202. When the process finishes, the URI in the Location header\n * returns a status of 204 on success. If the asynchronous request failed, the URI in the Location\n * header returns an error-level status code.\n * @param resourceGroupName The name of the resource group with the deployment to delete. The name is\n * case insensitive.\n * @param deploymentName The name of the deployment.\n * @param options The options parameters.\n */\n async beginDeleteAndWait(resourceGroupName, deploymentName, options) {\n const poller = await this.beginDelete(resourceGroupName, deploymentName, options);\n return poller.pollUntilDone();\n }\n /**\n * Checks whether the deployment exists.\n * @param resourceGroupName The name of the resource group with the deployment to check. The name is\n * case insensitive.\n * @param deploymentName The name of the deployment.\n * @param options The options parameters.\n */\n checkExistence(resourceGroupName, deploymentName, options) {\n return this.client.sendOperationRequest({ resourceGroupName, deploymentName, options }, checkExistenceOperationSpec);\n }\n /**\n * You can provide the template and parameters directly in the request or link to JSON files.\n * @param resourceGroupName The name of the resource group to deploy the resources to. The name is case\n * insensitive. The resource group must already exist.\n * @param deploymentName The name of the deployment.\n * @param parameters Additional parameters supplied to the operation.\n * @param options The options parameters.\n */\n async beginCreateOrUpdate(resourceGroupName, deploymentName, parameters, options) {\n const directSendOperation = async (args, spec) => {\n return this.client.sendOperationRequest(args, spec);\n };\n const sendOperationFn = async (args, spec) => {\n var _a;\n let currentRawResponse = undefined;\n const providedCallback = (_a = args.options) === null || _a === void 0 ? void 0 : _a.onResponse;\n const callback = (rawResponse, flatResponse) => {\n currentRawResponse = rawResponse;\n providedCallback === null || providedCallback === void 0 ? void 0 : providedCallback(rawResponse, flatResponse);\n };\n const updatedArgs = Object.assign(Object.assign({}, args), { options: Object.assign(Object.assign({}, args.options), { onResponse: callback }) });\n const flatResponse = await directSendOperation(updatedArgs, spec);\n return {\n flatResponse,\n rawResponse: {\n statusCode: currentRawResponse.status,\n body: currentRawResponse.parsedBody,\n headers: currentRawResponse.headers.toJSON(),\n },\n };\n };\n const lro = (0, lroImpl_js_1.createLroSpec)({\n sendOperationFn,\n args: { resourceGroupName, deploymentName, parameters, options },\n spec: createOrUpdateOperationSpec,\n });\n const poller = await (0, core_lro_1.createHttpPoller)(lro, {\n restoreFrom: options === null || options === void 0 ? void 0 : options.resumeFrom,\n intervalInMs: options === null || options === void 0 ? void 0 : options.updateIntervalInMs,\n });\n await poller.poll();\n return poller;\n }\n /**\n * You can provide the template and parameters directly in the request or link to JSON files.\n * @param resourceGroupName The name of the resource group to deploy the resources to. The name is case\n * insensitive. The resource group must already exist.\n * @param deploymentName The name of the deployment.\n * @param parameters Additional parameters supplied to the operation.\n * @param options The options parameters.\n */\n async beginCreateOrUpdateAndWait(resourceGroupName, deploymentName, parameters, options) {\n const poller = await this.beginCreateOrUpdate(resourceGroupName, deploymentName, parameters, options);\n return poller.pollUntilDone();\n }\n /**\n * Gets a deployment.\n * @param resourceGroupName The name of the resource group. The name is case insensitive.\n * @param deploymentName The name of the deployment.\n * @param options The options parameters.\n */\n get(resourceGroupName, deploymentName, options) {\n return this.client.sendOperationRequest({ resourceGroupName, deploymentName, options }, getOperationSpec);\n }\n /**\n * You can cancel a deployment only if the provisioningState is Accepted or Running. After the\n * deployment is canceled, the provisioningState is set to Canceled. Canceling a template deployment\n * stops the currently running template deployment and leaves the resource group partially deployed.\n * @param resourceGroupName The name of the resource group. The name is case insensitive.\n * @param deploymentName The name of the deployment.\n * @param options The options parameters.\n */\n cancel(resourceGroupName, deploymentName, options) {\n return this.client.sendOperationRequest({ resourceGroupName, deploymentName, options }, cancelOperationSpec);\n }\n /**\n * Validates whether the specified template is syntactically correct and will be accepted by Azure\n * Resource Manager..\n * @param resourceGroupName The name of the resource group the template will be deployed to. The name\n * is case insensitive.\n * @param deploymentName The name of the deployment.\n * @param parameters Parameters to validate.\n * @param options The options parameters.\n */\n async beginValidate(resourceGroupName, deploymentName, parameters, options) {\n const directSendOperation = async (args, spec) => {\n return this.client.sendOperationRequest(args, spec);\n };\n const sendOperationFn = async (args, spec) => {\n var _a;\n let currentRawResponse = undefined;\n const providedCallback = (_a = args.options) === null || _a === void 0 ? void 0 : _a.onResponse;\n const callback = (rawResponse, flatResponse) => {\n currentRawResponse = rawResponse;\n providedCallback === null || providedCallback === void 0 ? void 0 : providedCallback(rawResponse, flatResponse);\n };\n const updatedArgs = Object.assign(Object.assign({}, args), { options: Object.assign(Object.assign({}, args.options), { onResponse: callback }) });\n const flatResponse = await directSendOperation(updatedArgs, spec);\n return {\n flatResponse,\n rawResponse: {\n statusCode: currentRawResponse.status,\n body: currentRawResponse.parsedBody,\n headers: currentRawResponse.headers.toJSON(),\n },\n };\n };\n const lro = (0, lroImpl_js_1.createLroSpec)({\n sendOperationFn,\n args: { resourceGroupName, deploymentName, parameters, options },\n spec: validateOperationSpec,\n });\n const poller = await (0, core_lro_1.createHttpPoller)(lro, {\n restoreFrom: options === null || options === void 0 ? void 0 : options.resumeFrom,\n intervalInMs: options === null || options === void 0 ? void 0 : options.updateIntervalInMs,\n });\n await poller.poll();\n return poller;\n }\n /**\n * Validates whether the specified template is syntactically correct and will be accepted by Azure\n * Resource Manager..\n * @param resourceGroupName The name of the resource group the template will be deployed to. The name\n * is case insensitive.\n * @param deploymentName The name of the deployment.\n * @param parameters Parameters to validate.\n * @param options The options parameters.\n */\n async beginValidateAndWait(resourceGroupName, deploymentName, parameters, options) {\n const poller = await this.beginValidate(resourceGroupName, deploymentName, parameters, options);\n return poller.pollUntilDone();\n }\n /**\n * Returns changes that will be made by the deployment if executed at the scope of the resource group.\n * @param resourceGroupName The name of the resource group the template will be deployed to. The name\n * is case insensitive.\n * @param deploymentName The name of the deployment.\n * @param parameters Parameters to validate.\n * @param options The options parameters.\n */\n async beginWhatIf(resourceGroupName, deploymentName, parameters, options) {\n const directSendOperation = async (args, spec) => {\n return this.client.sendOperationRequest(args, spec);\n };\n const sendOperationFn = async (args, spec) => {\n var _a;\n let currentRawResponse = undefined;\n const providedCallback = (_a = args.options) === null || _a === void 0 ? void 0 : _a.onResponse;\n const callback = (rawResponse, flatResponse) => {\n currentRawResponse = rawResponse;\n providedCallback === null || providedCallback === void 0 ? void 0 : providedCallback(rawResponse, flatResponse);\n };\n const updatedArgs = Object.assign(Object.assign({}, args), { options: Object.assign(Object.assign({}, args.options), { onResponse: callback }) });\n const flatResponse = await directSendOperation(updatedArgs, spec);\n return {\n flatResponse,\n rawResponse: {\n statusCode: currentRawResponse.status,\n body: currentRawResponse.parsedBody,\n headers: currentRawResponse.headers.toJSON(),\n },\n };\n };\n const lro = (0, lroImpl_js_1.createLroSpec)({\n sendOperationFn,\n args: { resourceGroupName, deploymentName, parameters, options },\n spec: whatIfOperationSpec,\n });\n const poller = await (0, core_lro_1.createHttpPoller)(lro, {\n restoreFrom: options === null || options === void 0 ? void 0 : options.resumeFrom,\n intervalInMs: options === null || options === void 0 ? void 0 : options.updateIntervalInMs,\n resourceLocationConfig: \"location\",\n });\n await poller.poll();\n return poller;\n }\n /**\n * Returns changes that will be made by the deployment if executed at the scope of the resource group.\n * @param resourceGroupName The name of the resource group the template will be deployed to. The name\n * is case insensitive.\n * @param deploymentName The name of the deployment.\n * @param parameters Parameters to validate.\n * @param options The options parameters.\n */\n async beginWhatIfAndWait(resourceGroupName, deploymentName, parameters, options) {\n const poller = await this.beginWhatIf(resourceGroupName, deploymentName, parameters, options);\n return poller.pollUntilDone();\n }\n /**\n * Exports the template used for specified deployment.\n * @param resourceGroupName The name of the resource group. The name is case insensitive.\n * @param deploymentName The name of the deployment.\n * @param options The options parameters.\n */\n exportTemplate(resourceGroupName, deploymentName, options) {\n return this.client.sendOperationRequest({ resourceGroupName, deploymentName, options }, exportTemplateOperationSpec);\n }\n /**\n * Get all the deployments for a resource group.\n * @param resourceGroupName The name of the resource group with the deployments to get. The name is\n * case insensitive.\n * @param options The options parameters.\n */\n _listByResourceGroup(resourceGroupName, options) {\n return this.client.sendOperationRequest({ resourceGroupName, options }, listByResourceGroupOperationSpec);\n }\n /**\n * Calculate the hash of the given template.\n * @param template The template provided to calculate hash.\n * @param options The options parameters.\n */\n calculateTemplateHash(template, options) {\n return this.client.sendOperationRequest({ template, options }, calculateTemplateHashOperationSpec);\n }\n /**\n * ListAtScopeNext\n * @param scope The resource scope.\n * @param nextLink The nextLink from the previous successful call to the ListAtScope method.\n * @param options The options parameters.\n */\n _listAtScopeNext(scope, nextLink, options) {\n return this.client.sendOperationRequest({ scope, nextLink, options }, listAtScopeNextOperationSpec);\n }\n /**\n * ListAtTenantScopeNext\n * @param nextLink The nextLink from the previous successful call to the ListAtTenantScope method.\n * @param options The options parameters.\n */\n _listAtTenantScopeNext(nextLink, options) {\n return this.client.sendOperationRequest({ nextLink, options }, listAtTenantScopeNextOperationSpec);\n }\n /**\n * ListAtManagementGroupScopeNext\n * @param groupId The management group ID.\n * @param nextLink The nextLink from the previous successful call to the ListAtManagementGroupScope\n * method.\n * @param options The options parameters.\n */\n _listAtManagementGroupScopeNext(groupId, nextLink, options) {\n return this.client.sendOperationRequest({ groupId, nextLink, options }, listAtManagementGroupScopeNextOperationSpec);\n }\n /**\n * ListAtSubscriptionScopeNext\n * @param nextLink The nextLink from the previous successful call to the ListAtSubscriptionScope\n * method.\n * @param options The options parameters.\n */\n _listAtSubscriptionScopeNext(nextLink, options) {\n return this.client.sendOperationRequest({ nextLink, options }, listAtSubscriptionScopeNextOperationSpec);\n }\n /**\n * ListByResourceGroupNext\n * @param resourceGroupName The name of the resource group with the deployments to get. The name is\n * case insensitive.\n * @param nextLink The nextLink from the previous successful call to the ListByResourceGroup method.\n * @param options The options parameters.\n */\n _listByResourceGroupNext(resourceGroupName, nextLink, options) {\n return this.client.sendOperationRequest({ resourceGroupName, nextLink, options }, listByResourceGroupNextOperationSpec);\n }\n}\nexports.DeploymentsImpl = DeploymentsImpl;\n// Operation Specifications\nconst serializer = coreClient.createSerializer(Mappers, /* isXml */ false);\nconst deleteAtScopeOperationSpec = {\n path: \"/{scope}/providers/Microsoft.Resources/deployments/{deploymentName}\",\n httpMethod: \"DELETE\",\n responses: {\n 200: {},\n 201: {},\n 202: {},\n 204: {},\n default: {\n bodyMapper: Mappers.CloudError,\n },\n },\n queryParameters: [Parameters.apiVersion],\n urlParameters: [\n Parameters.$host,\n Parameters.scope,\n Parameters.deploymentName,\n ],\n headerParameters: [Parameters.accept],\n serializer,\n};\nconst checkExistenceAtScopeOperationSpec = {\n path: \"/{scope}/providers/Microsoft.Resources/deployments/{deploymentName}\",\n httpMethod: \"HEAD\",\n responses: {\n 204: {},\n 404: {},\n default: {\n bodyMapper: Mappers.CloudError,\n },\n },\n queryParameters: [Parameters.apiVersion],\n urlParameters: [\n Parameters.$host,\n Parameters.scope,\n Parameters.deploymentName,\n ],\n headerParameters: [Parameters.accept],\n serializer,\n};\nconst createOrUpdateAtScopeOperationSpec = {\n path: \"/{scope}/providers/Microsoft.Resources/deployments/{deploymentName}\",\n httpMethod: \"PUT\",\n responses: {\n 200: {\n bodyMapper: Mappers.DeploymentExtended,\n },\n 201: {\n bodyMapper: Mappers.DeploymentExtended,\n },\n 202: {\n bodyMapper: Mappers.DeploymentExtended,\n },\n 204: {\n bodyMapper: Mappers.DeploymentExtended,\n },\n default: {\n bodyMapper: Mappers.CloudError,\n },\n },\n requestBody: Parameters.parameters,\n queryParameters: [Parameters.apiVersion],\n urlParameters: [\n Parameters.$host,\n Parameters.scope,\n Parameters.deploymentName,\n ],\n headerParameters: [Parameters.accept, Parameters.contentType],\n mediaType: \"json\",\n serializer,\n};\nconst getAtScopeOperationSpec = {\n path: \"/{scope}/providers/Microsoft.Resources/deployments/{deploymentName}\",\n httpMethod: \"GET\",\n responses: {\n 200: {\n bodyMapper: Mappers.DeploymentExtended,\n },\n default: {\n bodyMapper: Mappers.CloudError,\n },\n },\n queryParameters: [Parameters.apiVersion],\n urlParameters: [\n Parameters.$host,\n Parameters.scope,\n Parameters.deploymentName,\n ],\n headerParameters: [Parameters.accept],\n serializer,\n};\nconst cancelAtScopeOperationSpec = {\n path: \"/{scope}/providers/Microsoft.Resources/deployments/{deploymentName}/cancel\",\n httpMethod: \"POST\",\n responses: {\n 204: {},\n default: {\n bodyMapper: Mappers.CloudError,\n },\n },\n queryParameters: [Parameters.apiVersion],\n urlParameters: [\n Parameters.$host,\n Parameters.scope,\n Parameters.deploymentName,\n ],\n headerParameters: [Parameters.accept],\n serializer,\n};\nconst validateAtScopeOperationSpec = {\n path: \"/{scope}/providers/Microsoft.Resources/deployments/{deploymentName}/validate\",\n httpMethod: \"POST\",\n responses: {\n 200: {\n bodyMapper: Mappers.DeploymentValidateResult,\n },\n 201: {\n bodyMapper: Mappers.DeploymentValidateResult,\n },\n 202: {\n bodyMapper: Mappers.DeploymentValidateResult,\n },\n 204: {\n bodyMapper: Mappers.DeploymentValidateResult,\n },\n default: {\n bodyMapper: Mappers.CloudError,\n },\n },\n requestBody: Parameters.parameters,\n queryParameters: [Parameters.apiVersion],\n urlParameters: [\n Parameters.$host,\n Parameters.scope,\n Parameters.deploymentName,\n ],\n headerParameters: [Parameters.accept, Parameters.contentType],\n mediaType: \"json\",\n serializer,\n};\nconst exportTemplateAtScopeOperationSpec = {\n path: \"/{scope}/providers/Microsoft.Resources/deployments/{deploymentName}/exportTemplate\",\n httpMethod: \"POST\",\n responses: {\n 200: {\n bodyMapper: Mappers.DeploymentExportResult,\n },\n default: {\n bodyMapper: Mappers.CloudError,\n },\n },\n queryParameters: [Parameters.apiVersion],\n urlParameters: [\n Parameters.$host,\n Parameters.scope,\n Parameters.deploymentName,\n ],\n headerParameters: [Parameters.accept],\n serializer,\n};\nconst listAtScopeOperationSpec = {\n path: \"/{scope}/providers/Microsoft.Resources/deployments/\",\n httpMethod: \"GET\",\n responses: {\n 200: {\n bodyMapper: Mappers.DeploymentListResult,\n },\n default: {\n bodyMapper: Mappers.CloudError,\n },\n },\n queryParameters: [Parameters.apiVersion, Parameters.filter, Parameters.top],\n urlParameters: [Parameters.$host, Parameters.scope],\n headerParameters: [Parameters.accept],\n serializer,\n};\nconst deleteAtTenantScopeOperationSpec = {\n path: \"/providers/Microsoft.Resources/deployments/{deploymentName}\",\n httpMethod: \"DELETE\",\n responses: {\n 200: {},\n 201: {},\n 202: {},\n 204: {},\n default: {\n bodyMapper: Mappers.CloudError,\n },\n },\n queryParameters: [Parameters.apiVersion],\n urlParameters: [Parameters.$host, Parameters.deploymentName],\n headerParameters: [Parameters.accept],\n serializer,\n};\nconst checkExistenceAtTenantScopeOperationSpec = {\n path: \"/providers/Microsoft.Resources/deployments/{deploymentName}\",\n httpMethod: \"HEAD\",\n responses: {\n 204: {},\n 404: {},\n default: {\n bodyMapper: Mappers.CloudError,\n },\n },\n queryParameters: [Parameters.apiVersion],\n urlParameters: [Parameters.$host, Parameters.deploymentName],\n headerParameters: [Parameters.accept],\n serializer,\n};\nconst createOrUpdateAtTenantScopeOperationSpec = {\n path: \"/providers/Microsoft.Resources/deployments/{deploymentName}\",\n httpMethod: \"PUT\",\n responses: {\n 200: {\n bodyMapper: Mappers.DeploymentExtended,\n },\n 201: {\n bodyMapper: Mappers.DeploymentExtended,\n },\n 202: {\n bodyMapper: Mappers.DeploymentExtended,\n },\n 204: {\n bodyMapper: Mappers.DeploymentExtended,\n },\n default: {\n bodyMapper: Mappers.CloudError,\n },\n },\n requestBody: Parameters.parameters1,\n queryParameters: [Parameters.apiVersion],\n urlParameters: [Parameters.$host, Parameters.deploymentName],\n headerParameters: [Parameters.accept, Parameters.contentType],\n mediaType: \"json\",\n serializer,\n};\nconst getAtTenantScopeOperationSpec = {\n path: \"/providers/Microsoft.Resources/deployments/{deploymentName}\",\n httpMethod: \"GET\",\n responses: {\n 200: {\n bodyMapper: Mappers.DeploymentExtended,\n },\n default: {\n bodyMapper: Mappers.CloudError,\n },\n },\n queryParameters: [Parameters.apiVersion],\n urlParameters: [Parameters.$host, Parameters.deploymentName],\n headerParameters: [Parameters.accept],\n serializer,\n};\nconst cancelAtTenantScopeOperationSpec = {\n path: \"/providers/Microsoft.Resources/deployments/{deploymentName}/cancel\",\n httpMethod: \"POST\",\n responses: {\n 204: {},\n default: {\n bodyMapper: Mappers.CloudError,\n },\n },\n queryParameters: [Parameters.apiVersion],\n urlParameters: [Parameters.$host, Parameters.deploymentName],\n headerParameters: [Parameters.accept],\n serializer,\n};\nconst validateAtTenantScopeOperationSpec = {\n path: \"/providers/Microsoft.Resources/deployments/{deploymentName}/validate\",\n httpMethod: \"POST\",\n responses: {\n 200: {\n bodyMapper: Mappers.DeploymentValidateResult,\n },\n 201: {\n bodyMapper: Mappers.DeploymentValidateResult,\n },\n 202: {\n bodyMapper: Mappers.DeploymentValidateResult,\n },\n 204: {\n bodyMapper: Mappers.DeploymentValidateResult,\n },\n default: {\n bodyMapper: Mappers.CloudError,\n },\n },\n requestBody: Parameters.parameters1,\n queryParameters: [Parameters.apiVersion],\n urlParameters: [Parameters.$host, Parameters.deploymentName],\n headerParameters: [Parameters.accept, Parameters.contentType],\n mediaType: \"json\",\n serializer,\n};\nconst whatIfAtTenantScopeOperationSpec = {\n path: \"/providers/Microsoft.Resources/deployments/{deploymentName}/whatIf\",\n httpMethod: \"POST\",\n responses: {\n 200: {\n bodyMapper: Mappers.WhatIfOperationResult,\n },\n 201: {\n bodyMapper: Mappers.WhatIfOperationResult,\n },\n 202: {\n bodyMapper: Mappers.WhatIfOperationResult,\n },\n 204: {\n bodyMapper: Mappers.WhatIfOperationResult,\n },\n default: {\n bodyMapper: Mappers.CloudError,\n },\n },\n requestBody: Parameters.parameters2,\n queryParameters: [Parameters.apiVersion],\n urlParameters: [Parameters.$host, Parameters.deploymentName],\n headerParameters: [Parameters.accept, Parameters.contentType],\n mediaType: \"json\",\n serializer,\n};\nconst exportTemplateAtTenantScopeOperationSpec = {\n path: \"/providers/Microsoft.Resources/deployments/{deploymentName}/exportTemplate\",\n httpMethod: \"POST\",\n responses: {\n 200: {\n bodyMapper: Mappers.DeploymentExportResult,\n },\n default: {\n bodyMapper: Mappers.CloudError,\n },\n },\n queryParameters: [Parameters.apiVersion],\n urlParameters: [Parameters.$host, Parameters.deploymentName],\n headerParameters: [Parameters.accept],\n serializer,\n};\nconst listAtTenantScopeOperationSpec = {\n path: \"/providers/Microsoft.Resources/deployments/\",\n httpMethod: \"GET\",\n responses: {\n 200: {\n bodyMapper: Mappers.DeploymentListResult,\n },\n default: {\n bodyMapper: Mappers.CloudError,\n },\n },\n queryParameters: [Parameters.apiVersion, Parameters.filter, Parameters.top],\n urlParameters: [Parameters.$host],\n headerParameters: [Parameters.accept],\n serializer,\n};\nconst deleteAtManagementGroupScopeOperationSpec = {\n path: \"/providers/Microsoft.Management/managementGroups/{groupId}/providers/Microsoft.Resources/deployments/{deploymentName}\",\n httpMethod: \"DELETE\",\n responses: {\n 200: {},\n 201: {},\n 202: {},\n 204: {},\n default: {\n bodyMapper: Mappers.CloudError,\n },\n },\n queryParameters: [Parameters.apiVersion],\n urlParameters: [\n Parameters.$host,\n Parameters.deploymentName,\n Parameters.groupId,\n ],\n headerParameters: [Parameters.accept],\n serializer,\n};\nconst checkExistenceAtManagementGroupScopeOperationSpec = {\n path: \"/providers/Microsoft.Management/managementGroups/{groupId}/providers/Microsoft.Resources/deployments/{deploymentName}\",\n httpMethod: \"HEAD\",\n responses: {\n 204: {},\n 404: {},\n default: {\n bodyMapper: Mappers.CloudError,\n },\n },\n queryParameters: [Parameters.apiVersion],\n urlParameters: [\n Parameters.$host,\n Parameters.deploymentName,\n Parameters.groupId,\n ],\n headerParameters: [Parameters.accept],\n serializer,\n};\nconst createOrUpdateAtManagementGroupScopeOperationSpec = {\n path: \"/providers/Microsoft.Management/managementGroups/{groupId}/providers/Microsoft.Resources/deployments/{deploymentName}\",\n httpMethod: \"PUT\",\n responses: {\n 200: {\n bodyMapper: Mappers.DeploymentExtended,\n },\n 201: {\n bodyMapper: Mappers.DeploymentExtended,\n },\n 202: {\n bodyMapper: Mappers.DeploymentExtended,\n },\n 204: {\n bodyMapper: Mappers.DeploymentExtended,\n },\n default: {\n bodyMapper: Mappers.CloudError,\n },\n },\n requestBody: Parameters.parameters1,\n queryParameters: [Parameters.apiVersion],\n urlParameters: [\n Parameters.$host,\n Parameters.deploymentName,\n Parameters.groupId,\n ],\n headerParameters: [Parameters.accept, Parameters.contentType],\n mediaType: \"json\",\n serializer,\n};\nconst getAtManagementGroupScopeOperationSpec = {\n path: \"/providers/Microsoft.Management/managementGroups/{groupId}/providers/Microsoft.Resources/deployments/{deploymentName}\",\n httpMethod: \"GET\",\n responses: {\n 200: {\n bodyMapper: Mappers.DeploymentExtended,\n },\n default: {\n bodyMapper: Mappers.CloudError,\n },\n },\n queryParameters: [Parameters.apiVersion],\n urlParameters: [\n Parameters.$host,\n Parameters.deploymentName,\n Parameters.groupId,\n ],\n headerParameters: [Parameters.accept],\n serializer,\n};\nconst cancelAtManagementGroupScopeOperationSpec = {\n path: \"/providers/Microsoft.Management/managementGroups/{groupId}/providers/Microsoft.Resources/deployments/{deploymentName}/cancel\",\n httpMethod: \"POST\",\n responses: {\n 204: {},\n default: {\n bodyMapper: Mappers.CloudError,\n },\n },\n queryParameters: [Parameters.apiVersion],\n urlParameters: [\n Parameters.$host,\n Parameters.deploymentName,\n Parameters.groupId,\n ],\n headerParameters: [Parameters.accept],\n serializer,\n};\nconst validateAtManagementGroupScopeOperationSpec = {\n path: \"/providers/Microsoft.Management/managementGroups/{groupId}/providers/Microsoft.Resources/deployments/{deploymentName}/validate\",\n httpMethod: \"POST\",\n responses: {\n 200: {\n bodyMapper: Mappers.DeploymentValidateResult,\n },\n 201: {\n bodyMapper: Mappers.DeploymentValidateResult,\n },\n 202: {\n bodyMapper: Mappers.DeploymentValidateResult,\n },\n 204: {\n bodyMapper: Mappers.DeploymentValidateResult,\n },\n default: {\n bodyMapper: Mappers.CloudError,\n },\n },\n requestBody: Parameters.parameters1,\n queryParameters: [Parameters.apiVersion],\n urlParameters: [\n Parameters.$host,\n Parameters.deploymentName,\n Parameters.groupId,\n ],\n headerParameters: [Parameters.accept, Parameters.contentType],\n mediaType: \"json\",\n serializer,\n};\nconst whatIfAtManagementGroupScopeOperationSpec = {\n path: \"/providers/Microsoft.Management/managementGroups/{groupId}/providers/Microsoft.Resources/deployments/{deploymentName}/whatIf\",\n httpMethod: \"POST\",\n responses: {\n 200: {\n bodyMapper: Mappers.WhatIfOperationResult,\n },\n 201: {\n bodyMapper: Mappers.WhatIfOperationResult,\n },\n 202: {\n bodyMapper: Mappers.WhatIfOperationResult,\n },\n 204: {\n bodyMapper: Mappers.WhatIfOperationResult,\n },\n default: {\n bodyMapper: Mappers.CloudError,\n },\n },\n requestBody: Parameters.parameters2,\n queryParameters: [Parameters.apiVersion],\n urlParameters: [\n Parameters.$host,\n Parameters.deploymentName,\n Parameters.groupId,\n ],\n headerParameters: [Parameters.accept, Parameters.contentType],\n mediaType: \"json\",\n serializer,\n};\nconst exportTemplateAtManagementGroupScopeOperationSpec = {\n path: \"/providers/Microsoft.Management/managementGroups/{groupId}/providers/Microsoft.Resources/deployments/{deploymentName}/exportTemplate\",\n httpMethod: \"POST\",\n responses: {\n 200: {\n bodyMapper: Mappers.DeploymentExportResult,\n },\n default: {\n bodyMapper: Mappers.CloudError,\n },\n },\n queryParameters: [Parameters.apiVersion],\n urlParameters: [\n Parameters.$host,\n Parameters.deploymentName,\n Parameters.groupId,\n ],\n headerParameters: [Parameters.accept],\n serializer,\n};\nconst listAtManagementGroupScopeOperationSpec = {\n path: \"/providers/Microsoft.Management/managementGroups/{groupId}/providers/Microsoft.Resources/deployments/\",\n httpMethod: \"GET\",\n responses: {\n 200: {\n bodyMapper: Mappers.DeploymentListResult,\n },\n default: {\n bodyMapper: Mappers.CloudError,\n },\n },\n queryParameters: [Parameters.apiVersion, Parameters.filter, Parameters.top],\n urlParameters: [Parameters.$host, Parameters.groupId],\n headerParameters: [Parameters.accept],\n serializer,\n};\nconst deleteAtSubscriptionScopeOperationSpec = {\n path: \"/subscriptions/{subscriptionId}/providers/Microsoft.Resources/deployments/{deploymentName}\",\n httpMethod: \"DELETE\",\n responses: {\n 200: {},\n 201: {},\n 202: {},\n 204: {},\n default: {\n bodyMapper: Mappers.CloudError,\n },\n },\n queryParameters: [Parameters.apiVersion],\n urlParameters: [\n Parameters.$host,\n Parameters.deploymentName,\n Parameters.subscriptionId,\n ],\n headerParameters: [Parameters.accept],\n serializer,\n};\nconst checkExistenceAtSubscriptionScopeOperationSpec = {\n path: \"/subscriptions/{subscriptionId}/providers/Microsoft.Resources/deployments/{deploymentName}\",\n httpMethod: \"HEAD\",\n responses: {\n 204: {},\n 404: {},\n default: {\n bodyMapper: Mappers.CloudError,\n },\n },\n queryParameters: [Parameters.apiVersion],\n urlParameters: [\n Parameters.$host,\n Parameters.deploymentName,\n Parameters.subscriptionId,\n ],\n headerParameters: [Parameters.accept],\n serializer,\n};\nconst createOrUpdateAtSubscriptionScopeOperationSpec = {\n path: \"/subscriptions/{subscriptionId}/providers/Microsoft.Resources/deployments/{deploymentName}\",\n httpMethod: \"PUT\",\n responses: {\n 200: {\n bodyMapper: Mappers.DeploymentExtended,\n },\n 201: {\n bodyMapper: Mappers.DeploymentExtended,\n },\n 202: {\n bodyMapper: Mappers.DeploymentExtended,\n },\n 204: {\n bodyMapper: Mappers.DeploymentExtended,\n },\n default: {\n bodyMapper: Mappers.CloudError,\n },\n },\n requestBody: Parameters.parameters,\n queryParameters: [Parameters.apiVersion],\n urlParameters: [\n Parameters.$host,\n Parameters.deploymentName,\n Parameters.subscriptionId,\n ],\n headerParameters: [Parameters.accept, Parameters.contentType],\n mediaType: \"json\",\n serializer,\n};\nconst getAtSubscriptionScopeOperationSpec = {\n path: \"/subscriptions/{subscriptionId}/providers/Microsoft.Resources/deployments/{deploymentName}\",\n httpMethod: \"GET\",\n responses: {\n 200: {\n bodyMapper: Mappers.DeploymentExtended,\n },\n default: {\n bodyMapper: Mappers.CloudError,\n },\n },\n queryParameters: [Parameters.apiVersion],\n urlParameters: [\n Parameters.$host,\n Parameters.deploymentName,\n Parameters.subscriptionId,\n ],\n headerParameters: [Parameters.accept],\n serializer,\n};\nconst cancelAtSubscriptionScopeOperationSpec = {\n path: \"/subscriptions/{subscriptionId}/providers/Microsoft.Resources/deployments/{deploymentName}/cancel\",\n httpMethod: \"POST\",\n responses: {\n 204: {},\n default: {\n bodyMapper: Mappers.CloudError,\n },\n },\n queryParameters: [Parameters.apiVersion],\n urlParameters: [\n Parameters.$host,\n Parameters.deploymentName,\n Parameters.subscriptionId,\n ],\n headerParameters: [Parameters.accept],\n serializer,\n};\nconst validateAtSubscriptionScopeOperationSpec = {\n path: \"/subscriptions/{subscriptionId}/providers/Microsoft.Resources/deployments/{deploymentName}/validate\",\n httpMethod: \"POST\",\n responses: {\n 200: {\n bodyMapper: Mappers.DeploymentValidateResult,\n },\n 201: {\n bodyMapper: Mappers.DeploymentValidateResult,\n },\n 202: {\n bodyMapper: Mappers.DeploymentValidateResult,\n },\n 204: {\n bodyMapper: Mappers.DeploymentValidateResult,\n },\n default: {\n bodyMapper: Mappers.CloudError,\n },\n },\n requestBody: Parameters.parameters,\n queryParameters: [Parameters.apiVersion],\n urlParameters: [\n Parameters.$host,\n Parameters.deploymentName,\n Parameters.subscriptionId,\n ],\n headerParameters: [Parameters.accept, Parameters.contentType],\n mediaType: \"json\",\n serializer,\n};\nconst whatIfAtSubscriptionScopeOperationSpec = {\n path: \"/subscriptions/{subscriptionId}/providers/Microsoft.Resources/deployments/{deploymentName}/whatIf\",\n httpMethod: \"POST\",\n responses: {\n 200: {\n bodyMapper: Mappers.WhatIfOperationResult,\n },\n 201: {\n bodyMapper: Mappers.WhatIfOperationResult,\n },\n 202: {\n bodyMapper: Mappers.WhatIfOperationResult,\n },\n 204: {\n bodyMapper: Mappers.WhatIfOperationResult,\n },\n default: {\n bodyMapper: Mappers.CloudError,\n },\n },\n requestBody: Parameters.parameters3,\n queryParameters: [Parameters.apiVersion],\n urlParameters: [\n Parameters.$host,\n Parameters.deploymentName,\n Parameters.subscriptionId,\n ],\n headerParameters: [Parameters.accept, Parameters.contentType],\n mediaType: \"json\",\n serializer,\n};\nconst exportTemplateAtSubscriptionScopeOperationSpec = {\n path: \"/subscriptions/{subscriptionId}/providers/Microsoft.Resources/deployments/{deploymentName}/exportTemplate\",\n httpMethod: \"POST\",\n responses: {\n 200: {\n bodyMapper: Mappers.DeploymentExportResult,\n },\n default: {\n bodyMapper: Mappers.CloudError,\n },\n },\n queryParameters: [Parameters.apiVersion],\n urlParameters: [\n Parameters.$host,\n Parameters.deploymentName,\n Parameters.subscriptionId,\n ],\n headerParameters: [Parameters.accept],\n serializer,\n};\nconst listAtSubscriptionScopeOperationSpec = {\n path: \"/subscriptions/{subscriptionId}/providers/Microsoft.Resources/deployments/\",\n httpMethod: \"GET\",\n responses: {\n 200: {\n bodyMapper: Mappers.DeploymentListResult,\n },\n default: {\n bodyMapper: Mappers.CloudError,\n },\n },\n queryParameters: [Parameters.apiVersion, Parameters.filter, Parameters.top],\n urlParameters: [Parameters.$host, Parameters.subscriptionId],\n headerParameters: [Parameters.accept],\n serializer,\n};\nconst deleteOperationSpec = {\n path: \"/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.Resources/deployments/{deploymentName}\",\n httpMethod: \"DELETE\",\n responses: {\n 200: {},\n 201: {},\n 202: {},\n 204: {},\n default: {\n bodyMapper: Mappers.CloudError,\n },\n },\n queryParameters: [Parameters.apiVersion],\n urlParameters: [\n Parameters.$host,\n Parameters.deploymentName,\n Parameters.subscriptionId,\n Parameters.resourceGroupName,\n ],\n headerParameters: [Parameters.accept],\n serializer,\n};\nconst checkExistenceOperationSpec = {\n path: \"/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.Resources/deployments/{deploymentName}\",\n httpMethod: \"HEAD\",\n responses: {\n 204: {},\n 404: {},\n default: {\n bodyMapper: Mappers.CloudError,\n },\n },\n queryParameters: [Parameters.apiVersion],\n urlParameters: [\n Parameters.$host,\n Parameters.deploymentName,\n Parameters.subscriptionId,\n Parameters.resourceGroupName,\n ],\n headerParameters: [Parameters.accept],\n serializer,\n};\nconst createOrUpdateOperationSpec = {\n path: \"/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.Resources/deployments/{deploymentName}\",\n httpMethod: \"PUT\",\n responses: {\n 200: {\n bodyMapper: Mappers.DeploymentExtended,\n },\n 201: {\n bodyMapper: Mappers.DeploymentExtended,\n },\n 202: {\n bodyMapper: Mappers.DeploymentExtended,\n },\n 204: {\n bodyMapper: Mappers.DeploymentExtended,\n },\n default: {\n bodyMapper: Mappers.CloudError,\n },\n },\n requestBody: Parameters.parameters,\n queryParameters: [Parameters.apiVersion],\n urlParameters: [\n Parameters.$host,\n Parameters.deploymentName,\n Parameters.subscriptionId,\n Parameters.resourceGroupName,\n ],\n headerParameters: [Parameters.accept, Parameters.contentType],\n mediaType: \"json\",\n serializer,\n};\nconst getOperationSpec = {\n path: \"/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.Resources/deployments/{deploymentName}\",\n httpMethod: \"GET\",\n responses: {\n 200: {\n bodyMapper: Mappers.DeploymentExtended,\n },\n default: {\n bodyMapper: Mappers.CloudError,\n },\n },\n queryParameters: [Parameters.apiVersion],\n urlParameters: [\n Parameters.$host,\n Parameters.deploymentName,\n Parameters.subscriptionId,\n Parameters.resourceGroupName,\n ],\n headerParameters: [Parameters.accept],\n serializer,\n};\nconst cancelOperationSpec = {\n path: \"/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.Resources/deployments/{deploymentName}/cancel\",\n httpMethod: \"POST\",\n responses: {\n 204: {},\n default: {\n bodyMapper: Mappers.CloudError,\n },\n },\n queryParameters: [Parameters.apiVersion],\n urlParameters: [\n Parameters.$host,\n Parameters.deploymentName,\n Parameters.subscriptionId,\n Parameters.resourceGroupName,\n ],\n headerParameters: [Parameters.accept],\n serializer,\n};\nconst validateOperationSpec = {\n path: \"/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.Resources/deployments/{deploymentName}/validate\",\n httpMethod: \"POST\",\n responses: {\n 200: {\n bodyMapper: Mappers.DeploymentValidateResult,\n },\n 201: {\n bodyMapper: Mappers.DeploymentValidateResult,\n },\n 202: {\n bodyMapper: Mappers.DeploymentValidateResult,\n },\n 204: {\n bodyMapper: Mappers.DeploymentValidateResult,\n },\n default: {\n bodyMapper: Mappers.CloudError,\n },\n },\n requestBody: Parameters.parameters,\n queryParameters: [Parameters.apiVersion],\n urlParameters: [\n Parameters.$host,\n Parameters.deploymentName,\n Parameters.subscriptionId,\n Parameters.resourceGroupName,\n ],\n headerParameters: [Parameters.accept, Parameters.contentType],\n mediaType: \"json\",\n serializer,\n};\nconst whatIfOperationSpec = {\n path: \"/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.Resources/deployments/{deploymentName}/whatIf\",\n httpMethod: \"POST\",\n responses: {\n 200: {\n bodyMapper: Mappers.WhatIfOperationResult,\n },\n 201: {\n bodyMapper: Mappers.WhatIfOperationResult,\n },\n 202: {\n bodyMapper: Mappers.WhatIfOperationResult,\n },\n 204: {\n bodyMapper: Mappers.WhatIfOperationResult,\n },\n default: {\n bodyMapper: Mappers.CloudError,\n },\n },\n requestBody: Parameters.parameters3,\n queryParameters: [Parameters.apiVersion],\n urlParameters: [\n Parameters.$host,\n Parameters.deploymentName,\n Parameters.subscriptionId,\n Parameters.resourceGroupName,\n ],\n headerParameters: [Parameters.accept, Parameters.contentType],\n mediaType: \"json\",\n serializer,\n};\nconst exportTemplateOperationSpec = {\n path: \"/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.Resources/deployments/{deploymentName}/exportTemplate\",\n httpMethod: \"POST\",\n responses: {\n 200: {\n bodyMapper: Mappers.DeploymentExportResult,\n },\n default: {\n bodyMapper: Mappers.CloudError,\n },\n },\n queryParameters: [Parameters.apiVersion],\n urlParameters: [\n Parameters.$host,\n Parameters.deploymentName,\n Parameters.subscriptionId,\n Parameters.resourceGroupName,\n ],\n headerParameters: [Parameters.accept],\n serializer,\n};\nconst listByResourceGroupOperationSpec = {\n path: \"/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.Resources/deployments/\",\n httpMethod: \"GET\",\n responses: {\n 200: {\n bodyMapper: Mappers.DeploymentListResult,\n },\n default: {\n bodyMapper: Mappers.CloudError,\n },\n },\n queryParameters: [Parameters.apiVersion, Parameters.filter, Parameters.top],\n urlParameters: [\n Parameters.$host,\n Parameters.subscriptionId,\n Parameters.resourceGroupName,\n ],\n headerParameters: [Parameters.accept],\n serializer,\n};\nconst calculateTemplateHashOperationSpec = {\n path: \"/providers/Microsoft.Resources/calculateTemplateHash\",\n httpMethod: \"POST\",\n responses: {\n 200: {\n bodyMapper: Mappers.TemplateHashResult,\n },\n default: {\n bodyMapper: Mappers.CloudError,\n },\n },\n requestBody: Parameters.template,\n queryParameters: [Parameters.apiVersion],\n urlParameters: [Parameters.$host],\n headerParameters: [Parameters.accept, Parameters.contentType],\n mediaType: \"json\",\n serializer,\n};\nconst listAtScopeNextOperationSpec = {\n path: \"{nextLink}\",\n httpMethod: \"GET\",\n responses: {\n 200: {\n bodyMapper: Mappers.DeploymentListResult,\n },\n default: {\n bodyMapper: Mappers.CloudError,\n },\n },\n urlParameters: [Parameters.$host, Parameters.nextLink, Parameters.scope],\n headerParameters: [Parameters.accept],\n serializer,\n};\nconst listAtTenantScopeNextOperationSpec = {\n path: \"{nextLink}\",\n httpMethod: \"GET\",\n responses: {\n 200: {\n bodyMapper: Mappers.DeploymentListResult,\n },\n default: {\n bodyMapper: Mappers.CloudError,\n },\n },\n urlParameters: [Parameters.$host, Parameters.nextLink],\n headerParameters: [Parameters.accept],\n serializer,\n};\nconst listAtManagementGroupScopeNextOperationSpec = {\n path: \"{nextLink}\",\n httpMethod: \"GET\",\n responses: {\n 200: {\n bodyMapper: Mappers.DeploymentListResult,\n },\n default: {\n bodyMapper: Mappers.CloudError,\n },\n },\n urlParameters: [Parameters.$host, Parameters.nextLink, Parameters.groupId],\n headerParameters: [Parameters.accept],\n serializer,\n};\nconst listAtSubscriptionScopeNextOperationSpec = {\n path: \"{nextLink}\",\n httpMethod: \"GET\",\n responses: {\n 200: {\n bodyMapper: Mappers.DeploymentListResult,\n },\n default: {\n bodyMapper: Mappers.CloudError,\n },\n },\n urlParameters: [\n Parameters.$host,\n Parameters.nextLink,\n Parameters.subscriptionId,\n ],\n headerParameters: [Parameters.accept],\n serializer,\n};\nconst listByResourceGroupNextOperationSpec = {\n path: \"{nextLink}\",\n httpMethod: \"GET\",\n responses: {\n 200: {\n bodyMapper: Mappers.DeploymentListResult,\n },\n default: {\n bodyMapper: Mappers.CloudError,\n },\n },\n urlParameters: [\n Parameters.$host,\n Parameters.nextLink,\n Parameters.subscriptionId,\n Parameters.resourceGroupName,\n ],\n headerParameters: [Parameters.accept],\n serializer,\n};\n//# sourceMappingURL=deployments.js.map","\"use strict\";\n/*\n * Copyright (c) Microsoft Corporation.\n * Licensed under the MIT License.\n *\n * Code generated by Microsoft (R) AutoRest Code Generator.\n * Changes may cause incorrect behavior and will be lost if the code is regenerated.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ProvidersImpl = void 0;\nconst tslib_1 = require(\"tslib\");\nconst pagingHelper_js_1 = require(\"../pagingHelper.js\");\nconst coreClient = tslib_1.__importStar(require(\"@azure/core-client\"));\nconst Mappers = tslib_1.__importStar(require(\"../models/mappers.js\"));\nconst Parameters = tslib_1.__importStar(require(\"../models/parameters.js\"));\n/// \n/** Class containing Providers operations. */\nclass ProvidersImpl {\n /**\n * Initialize a new instance of the class Providers class.\n * @param client Reference to the service client\n */\n constructor(client) {\n this.client = client;\n }\n /**\n * Gets all resource providers for a subscription.\n * @param options The options parameters.\n */\n list(options) {\n const iter = this.listPagingAll(options);\n return {\n next() {\n return iter.next();\n },\n [Symbol.asyncIterator]() {\n return this;\n },\n byPage: (settings) => {\n if (settings === null || settings === void 0 ? void 0 : settings.maxPageSize) {\n throw new Error(\"maxPageSize is not supported by this operation.\");\n }\n return this.listPagingPage(options, settings);\n },\n };\n }\n listPagingPage(options, settings) {\n return tslib_1.__asyncGenerator(this, arguments, function* listPagingPage_1() {\n let result;\n let continuationToken = settings === null || settings === void 0 ? void 0 : settings.continuationToken;\n if (!continuationToken) {\n result = yield tslib_1.__await(this._list(options));\n let page = result.value || [];\n continuationToken = result.nextLink;\n (0, pagingHelper_js_1.setContinuationToken)(page, continuationToken);\n yield yield tslib_1.__await(page);\n }\n while (continuationToken) {\n result = yield tslib_1.__await(this._listNext(continuationToken, options));\n continuationToken = result.nextLink;\n let page = result.value || [];\n (0, pagingHelper_js_1.setContinuationToken)(page, continuationToken);\n yield yield tslib_1.__await(page);\n }\n });\n }\n listPagingAll(options) {\n return tslib_1.__asyncGenerator(this, arguments, function* listPagingAll_1() {\n var _a, e_1, _b, _c;\n try {\n for (var _d = true, _e = tslib_1.__asyncValues(this.listPagingPage(options)), _f; _f = yield tslib_1.__await(_e.next()), _a = _f.done, !_a; _d = true) {\n _c = _f.value;\n _d = false;\n const page = _c;\n yield tslib_1.__await(yield* tslib_1.__asyncDelegator(tslib_1.__asyncValues(page)));\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (!_d && !_a && (_b = _e.return)) yield tslib_1.__await(_b.call(_e));\n }\n finally { if (e_1) throw e_1.error; }\n }\n });\n }\n /**\n * Gets all resource providers for the tenant.\n * @param options The options parameters.\n */\n listAtTenantScope(options) {\n const iter = this.listAtTenantScopePagingAll(options);\n return {\n next() {\n return iter.next();\n },\n [Symbol.asyncIterator]() {\n return this;\n },\n byPage: (settings) => {\n if (settings === null || settings === void 0 ? void 0 : settings.maxPageSize) {\n throw new Error(\"maxPageSize is not supported by this operation.\");\n }\n return this.listAtTenantScopePagingPage(options, settings);\n },\n };\n }\n listAtTenantScopePagingPage(options, settings) {\n return tslib_1.__asyncGenerator(this, arguments, function* listAtTenantScopePagingPage_1() {\n let result;\n let continuationToken = settings === null || settings === void 0 ? void 0 : settings.continuationToken;\n if (!continuationToken) {\n result = yield tslib_1.__await(this._listAtTenantScope(options));\n let page = result.value || [];\n continuationToken = result.nextLink;\n (0, pagingHelper_js_1.setContinuationToken)(page, continuationToken);\n yield yield tslib_1.__await(page);\n }\n while (continuationToken) {\n result = yield tslib_1.__await(this._listAtTenantScopeNext(continuationToken, options));\n continuationToken = result.nextLink;\n let page = result.value || [];\n (0, pagingHelper_js_1.setContinuationToken)(page, continuationToken);\n yield yield tslib_1.__await(page);\n }\n });\n }\n listAtTenantScopePagingAll(options) {\n return tslib_1.__asyncGenerator(this, arguments, function* listAtTenantScopePagingAll_1() {\n var _a, e_2, _b, _c;\n try {\n for (var _d = true, _e = tslib_1.__asyncValues(this.listAtTenantScopePagingPage(options)), _f; _f = yield tslib_1.__await(_e.next()), _a = _f.done, !_a; _d = true) {\n _c = _f.value;\n _d = false;\n const page = _c;\n yield tslib_1.__await(yield* tslib_1.__asyncDelegator(tslib_1.__asyncValues(page)));\n }\n }\n catch (e_2_1) { e_2 = { error: e_2_1 }; }\n finally {\n try {\n if (!_d && !_a && (_b = _e.return)) yield tslib_1.__await(_b.call(_e));\n }\n finally { if (e_2) throw e_2.error; }\n }\n });\n }\n /**\n * Unregisters a subscription from a resource provider.\n * @param resourceProviderNamespace The namespace of the resource provider to unregister.\n * @param options The options parameters.\n */\n unregister(resourceProviderNamespace, options) {\n return this.client.sendOperationRequest({ resourceProviderNamespace, options }, unregisterOperationSpec);\n }\n /**\n * Registers a management group with a resource provider. Use this operation to register a resource\n * provider with resource types that can be deployed at the management group scope. It does not\n * recursively register subscriptions within the management group. Instead, you must register\n * subscriptions individually.\n * @param resourceProviderNamespace The namespace of the resource provider to register.\n * @param groupId The management group ID.\n * @param options The options parameters.\n */\n registerAtManagementGroupScope(resourceProviderNamespace, groupId, options) {\n return this.client.sendOperationRequest({ resourceProviderNamespace, groupId, options }, registerAtManagementGroupScopeOperationSpec);\n }\n /**\n * Get the provider permissions.\n * @param resourceProviderNamespace The namespace of the resource provider.\n * @param options The options parameters.\n */\n providerPermissions(resourceProviderNamespace, options) {\n return this.client.sendOperationRequest({ resourceProviderNamespace, options }, providerPermissionsOperationSpec);\n }\n /**\n * Registers a subscription with a resource provider.\n * @param resourceProviderNamespace The namespace of the resource provider to register.\n * @param options The options parameters.\n */\n register(resourceProviderNamespace, options) {\n return this.client.sendOperationRequest({ resourceProviderNamespace, options }, registerOperationSpec);\n }\n /**\n * Gets all resource providers for a subscription.\n * @param options The options parameters.\n */\n _list(options) {\n return this.client.sendOperationRequest({ options }, listOperationSpec);\n }\n /**\n * Gets all resource providers for the tenant.\n * @param options The options parameters.\n */\n _listAtTenantScope(options) {\n return this.client.sendOperationRequest({ options }, listAtTenantScopeOperationSpec);\n }\n /**\n * Gets the specified resource provider.\n * @param resourceProviderNamespace The namespace of the resource provider.\n * @param options The options parameters.\n */\n get(resourceProviderNamespace, options) {\n return this.client.sendOperationRequest({ resourceProviderNamespace, options }, getOperationSpec);\n }\n /**\n * Gets the specified resource provider at the tenant level.\n * @param resourceProviderNamespace The namespace of the resource provider.\n * @param options The options parameters.\n */\n getAtTenantScope(resourceProviderNamespace, options) {\n return this.client.sendOperationRequest({ resourceProviderNamespace, options }, getAtTenantScopeOperationSpec);\n }\n /**\n * ListNext\n * @param nextLink The nextLink from the previous successful call to the List method.\n * @param options The options parameters.\n */\n _listNext(nextLink, options) {\n return this.client.sendOperationRequest({ nextLink, options }, listNextOperationSpec);\n }\n /**\n * ListAtTenantScopeNext\n * @param nextLink The nextLink from the previous successful call to the ListAtTenantScope method.\n * @param options The options parameters.\n */\n _listAtTenantScopeNext(nextLink, options) {\n return this.client.sendOperationRequest({ nextLink, options }, listAtTenantScopeNextOperationSpec);\n }\n}\nexports.ProvidersImpl = ProvidersImpl;\n// Operation Specifications\nconst serializer = coreClient.createSerializer(Mappers, /* isXml */ false);\nconst unregisterOperationSpec = {\n path: \"/subscriptions/{subscriptionId}/providers/{resourceProviderNamespace}/unregister\",\n httpMethod: \"POST\",\n responses: {\n 200: {\n bodyMapper: Mappers.Provider,\n },\n default: {\n bodyMapper: Mappers.CloudError,\n },\n },\n queryParameters: [Parameters.apiVersion],\n urlParameters: [\n Parameters.$host,\n Parameters.subscriptionId,\n Parameters.resourceProviderNamespace,\n ],\n headerParameters: [Parameters.accept],\n serializer,\n};\nconst registerAtManagementGroupScopeOperationSpec = {\n path: \"/providers/Microsoft.Management/managementGroups/{groupId}/providers/{resourceProviderNamespace}/register\",\n httpMethod: \"POST\",\n responses: {\n 200: {},\n default: {\n bodyMapper: Mappers.CloudError,\n },\n },\n queryParameters: [Parameters.apiVersion],\n urlParameters: [\n Parameters.$host,\n Parameters.groupId,\n Parameters.resourceProviderNamespace,\n ],\n headerParameters: [Parameters.accept],\n serializer,\n};\nconst providerPermissionsOperationSpec = {\n path: \"/subscriptions/{subscriptionId}/providers/{resourceProviderNamespace}/providerPermissions\",\n httpMethod: \"GET\",\n responses: {\n 200: {\n bodyMapper: Mappers.ProviderPermissionListResult,\n },\n default: {\n bodyMapper: Mappers.CloudError,\n },\n },\n queryParameters: [Parameters.apiVersion],\n urlParameters: [\n Parameters.$host,\n Parameters.subscriptionId,\n Parameters.resourceProviderNamespace,\n ],\n headerParameters: [Parameters.accept],\n serializer,\n};\nconst registerOperationSpec = {\n path: \"/subscriptions/{subscriptionId}/providers/{resourceProviderNamespace}/register\",\n httpMethod: \"POST\",\n responses: {\n 200: {\n bodyMapper: Mappers.Provider,\n },\n default: {\n bodyMapper: Mappers.CloudError,\n },\n },\n requestBody: Parameters.properties,\n queryParameters: [Parameters.apiVersion],\n urlParameters: [\n Parameters.$host,\n Parameters.subscriptionId,\n Parameters.resourceProviderNamespace,\n ],\n headerParameters: [Parameters.accept, Parameters.contentType],\n mediaType: \"json\",\n serializer,\n};\nconst listOperationSpec = {\n path: \"/subscriptions/{subscriptionId}/providers\",\n httpMethod: \"GET\",\n responses: {\n 200: {\n bodyMapper: Mappers.ProviderListResult,\n },\n default: {\n bodyMapper: Mappers.CloudError,\n },\n },\n queryParameters: [Parameters.apiVersion, Parameters.expand],\n urlParameters: [Parameters.$host, Parameters.subscriptionId],\n headerParameters: [Parameters.accept],\n serializer,\n};\nconst listAtTenantScopeOperationSpec = {\n path: \"/providers\",\n httpMethod: \"GET\",\n responses: {\n 200: {\n bodyMapper: Mappers.ProviderListResult,\n },\n default: {\n bodyMapper: Mappers.CloudError,\n },\n },\n queryParameters: [Parameters.apiVersion, Parameters.expand],\n urlParameters: [Parameters.$host],\n headerParameters: [Parameters.accept],\n serializer,\n};\nconst getOperationSpec = {\n path: \"/subscriptions/{subscriptionId}/providers/{resourceProviderNamespace}\",\n httpMethod: \"GET\",\n responses: {\n 200: {\n bodyMapper: Mappers.Provider,\n },\n default: {\n bodyMapper: Mappers.CloudError,\n },\n },\n queryParameters: [Parameters.apiVersion, Parameters.expand],\n urlParameters: [\n Parameters.$host,\n Parameters.subscriptionId,\n Parameters.resourceProviderNamespace,\n ],\n headerParameters: [Parameters.accept],\n serializer,\n};\nconst getAtTenantScopeOperationSpec = {\n path: \"/providers/{resourceProviderNamespace}\",\n httpMethod: \"GET\",\n responses: {\n 200: {\n bodyMapper: Mappers.Provider,\n },\n default: {\n bodyMapper: Mappers.CloudError,\n },\n },\n queryParameters: [Parameters.apiVersion, Parameters.expand],\n urlParameters: [Parameters.$host, Parameters.resourceProviderNamespace],\n headerParameters: [Parameters.accept],\n serializer,\n};\nconst listNextOperationSpec = {\n path: \"{nextLink}\",\n httpMethod: \"GET\",\n responses: {\n 200: {\n bodyMapper: Mappers.ProviderListResult,\n },\n default: {\n bodyMapper: Mappers.CloudError,\n },\n },\n urlParameters: [\n Parameters.$host,\n Parameters.nextLink,\n Parameters.subscriptionId,\n ],\n headerParameters: [Parameters.accept],\n serializer,\n};\nconst listAtTenantScopeNextOperationSpec = {\n path: \"{nextLink}\",\n httpMethod: \"GET\",\n responses: {\n 200: {\n bodyMapper: Mappers.ProviderListResult,\n },\n default: {\n bodyMapper: Mappers.CloudError,\n },\n },\n urlParameters: [Parameters.$host, Parameters.nextLink],\n headerParameters: [Parameters.accept],\n serializer,\n};\n//# sourceMappingURL=providers.js.map","\"use strict\";\n/*\n * Copyright (c) Microsoft Corporation.\n * Licensed under the MIT License.\n *\n * Code generated by Microsoft (R) AutoRest Code Generator.\n * Changes may cause incorrect behavior and will be lost if the code is regenerated.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ProviderResourceTypesImpl = void 0;\nconst tslib_1 = require(\"tslib\");\nconst coreClient = tslib_1.__importStar(require(\"@azure/core-client\"));\nconst Mappers = tslib_1.__importStar(require(\"../models/mappers.js\"));\nconst Parameters = tslib_1.__importStar(require(\"../models/parameters.js\"));\n/** Class containing ProviderResourceTypes operations. */\nclass ProviderResourceTypesImpl {\n /**\n * Initialize a new instance of the class ProviderResourceTypes class.\n * @param client Reference to the service client\n */\n constructor(client) {\n this.client = client;\n }\n /**\n * List the resource types for a specified resource provider.\n * @param resourceProviderNamespace The namespace of the resource provider.\n * @param options The options parameters.\n */\n list(resourceProviderNamespace, options) {\n return this.client.sendOperationRequest({ resourceProviderNamespace, options }, listOperationSpec);\n }\n}\nexports.ProviderResourceTypesImpl = ProviderResourceTypesImpl;\n// Operation Specifications\nconst serializer = coreClient.createSerializer(Mappers, /* isXml */ false);\nconst listOperationSpec = {\n path: \"/subscriptions/{subscriptionId}/providers/{resourceProviderNamespace}/resourceTypes\",\n httpMethod: \"GET\",\n responses: {\n 200: {\n bodyMapper: Mappers.ProviderResourceTypeListResult,\n },\n default: {\n bodyMapper: Mappers.CloudError,\n },\n },\n queryParameters: [Parameters.apiVersion, Parameters.expand],\n urlParameters: [\n Parameters.$host,\n Parameters.subscriptionId,\n Parameters.resourceProviderNamespace,\n ],\n headerParameters: [Parameters.accept],\n serializer,\n};\n//# sourceMappingURL=providerResourceTypes.js.map","\"use strict\";\n/*\n * Copyright (c) Microsoft Corporation.\n * Licensed under the MIT License.\n *\n * Code generated by Microsoft (R) AutoRest Code Generator.\n * Changes may cause incorrect behavior and will be lost if the code is regenerated.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ResourcesImpl = void 0;\nconst tslib_1 = require(\"tslib\");\nconst pagingHelper_js_1 = require(\"../pagingHelper.js\");\nconst coreClient = tslib_1.__importStar(require(\"@azure/core-client\"));\nconst Mappers = tslib_1.__importStar(require(\"../models/mappers.js\"));\nconst Parameters = tslib_1.__importStar(require(\"../models/parameters.js\"));\nconst core_lro_1 = require(\"@azure/core-lro\");\nconst lroImpl_js_1 = require(\"../lroImpl.js\");\n/// \n/** Class containing Resources operations. */\nclass ResourcesImpl {\n /**\n * Initialize a new instance of the class Resources class.\n * @param client Reference to the service client\n */\n constructor(client) {\n this.client = client;\n }\n /**\n * Get all the resources for a resource group.\n * @param resourceGroupName The resource group with the resources to get.\n * @param options The options parameters.\n */\n listByResourceGroup(resourceGroupName, options) {\n const iter = this.listByResourceGroupPagingAll(resourceGroupName, options);\n return {\n next() {\n return iter.next();\n },\n [Symbol.asyncIterator]() {\n return this;\n },\n byPage: (settings) => {\n if (settings === null || settings === void 0 ? void 0 : settings.maxPageSize) {\n throw new Error(\"maxPageSize is not supported by this operation.\");\n }\n return this.listByResourceGroupPagingPage(resourceGroupName, options, settings);\n },\n };\n }\n listByResourceGroupPagingPage(resourceGroupName, options, settings) {\n return tslib_1.__asyncGenerator(this, arguments, function* listByResourceGroupPagingPage_1() {\n let result;\n let continuationToken = settings === null || settings === void 0 ? void 0 : settings.continuationToken;\n if (!continuationToken) {\n result = yield tslib_1.__await(this._listByResourceGroup(resourceGroupName, options));\n let page = result.value || [];\n continuationToken = result.nextLink;\n (0, pagingHelper_js_1.setContinuationToken)(page, continuationToken);\n yield yield tslib_1.__await(page);\n }\n while (continuationToken) {\n result = yield tslib_1.__await(this._listByResourceGroupNext(resourceGroupName, continuationToken, options));\n continuationToken = result.nextLink;\n let page = result.value || [];\n (0, pagingHelper_js_1.setContinuationToken)(page, continuationToken);\n yield yield tslib_1.__await(page);\n }\n });\n }\n listByResourceGroupPagingAll(resourceGroupName, options) {\n return tslib_1.__asyncGenerator(this, arguments, function* listByResourceGroupPagingAll_1() {\n var _a, e_1, _b, _c;\n try {\n for (var _d = true, _e = tslib_1.__asyncValues(this.listByResourceGroupPagingPage(resourceGroupName, options)), _f; _f = yield tslib_1.__await(_e.next()), _a = _f.done, !_a; _d = true) {\n _c = _f.value;\n _d = false;\n const page = _c;\n yield tslib_1.__await(yield* tslib_1.__asyncDelegator(tslib_1.__asyncValues(page)));\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (!_d && !_a && (_b = _e.return)) yield tslib_1.__await(_b.call(_e));\n }\n finally { if (e_1) throw e_1.error; }\n }\n });\n }\n /**\n * Get all the resources in a subscription.\n * @param options The options parameters.\n */\n list(options) {\n const iter = this.listPagingAll(options);\n return {\n next() {\n return iter.next();\n },\n [Symbol.asyncIterator]() {\n return this;\n },\n byPage: (settings) => {\n if (settings === null || settings === void 0 ? void 0 : settings.maxPageSize) {\n throw new Error(\"maxPageSize is not supported by this operation.\");\n }\n return this.listPagingPage(options, settings);\n },\n };\n }\n listPagingPage(options, settings) {\n return tslib_1.__asyncGenerator(this, arguments, function* listPagingPage_1() {\n let result;\n let continuationToken = settings === null || settings === void 0 ? void 0 : settings.continuationToken;\n if (!continuationToken) {\n result = yield tslib_1.__await(this._list(options));\n let page = result.value || [];\n continuationToken = result.nextLink;\n (0, pagingHelper_js_1.setContinuationToken)(page, continuationToken);\n yield yield tslib_1.__await(page);\n }\n while (continuationToken) {\n result = yield tslib_1.__await(this._listNext(continuationToken, options));\n continuationToken = result.nextLink;\n let page = result.value || [];\n (0, pagingHelper_js_1.setContinuationToken)(page, continuationToken);\n yield yield tslib_1.__await(page);\n }\n });\n }\n listPagingAll(options) {\n return tslib_1.__asyncGenerator(this, arguments, function* listPagingAll_1() {\n var _a, e_2, _b, _c;\n try {\n for (var _d = true, _e = tslib_1.__asyncValues(this.listPagingPage(options)), _f; _f = yield tslib_1.__await(_e.next()), _a = _f.done, !_a; _d = true) {\n _c = _f.value;\n _d = false;\n const page = _c;\n yield tslib_1.__await(yield* tslib_1.__asyncDelegator(tslib_1.__asyncValues(page)));\n }\n }\n catch (e_2_1) { e_2 = { error: e_2_1 }; }\n finally {\n try {\n if (!_d && !_a && (_b = _e.return)) yield tslib_1.__await(_b.call(_e));\n }\n finally { if (e_2) throw e_2.error; }\n }\n });\n }\n /**\n * Get all the resources for a resource group.\n * @param resourceGroupName The resource group with the resources to get.\n * @param options The options parameters.\n */\n _listByResourceGroup(resourceGroupName, options) {\n return this.client.sendOperationRequest({ resourceGroupName, options }, listByResourceGroupOperationSpec);\n }\n /**\n * The resources to be moved must be in the same source resource group in the source subscription being\n * used. The target resource group may be in a different subscription. When moving resources, both the\n * source group and the target group are locked for the duration of the operation. Write and delete\n * operations are blocked on the groups until the move completes.\n * @param sourceResourceGroupName The name of the resource group from the source subscription\n * containing the resources to be moved.\n * @param parameters Parameters for moving resources.\n * @param options The options parameters.\n */\n async beginMoveResources(sourceResourceGroupName, parameters, options) {\n const directSendOperation = async (args, spec) => {\n return this.client.sendOperationRequest(args, spec);\n };\n const sendOperationFn = async (args, spec) => {\n var _a;\n let currentRawResponse = undefined;\n const providedCallback = (_a = args.options) === null || _a === void 0 ? void 0 : _a.onResponse;\n const callback = (rawResponse, flatResponse) => {\n currentRawResponse = rawResponse;\n providedCallback === null || providedCallback === void 0 ? void 0 : providedCallback(rawResponse, flatResponse);\n };\n const updatedArgs = Object.assign(Object.assign({}, args), { options: Object.assign(Object.assign({}, args.options), { onResponse: callback }) });\n const flatResponse = await directSendOperation(updatedArgs, spec);\n return {\n flatResponse,\n rawResponse: {\n statusCode: currentRawResponse.status,\n body: currentRawResponse.parsedBody,\n headers: currentRawResponse.headers.toJSON(),\n },\n };\n };\n const lro = (0, lroImpl_js_1.createLroSpec)({\n sendOperationFn,\n args: { sourceResourceGroupName, parameters, options },\n spec: moveResourcesOperationSpec,\n });\n const poller = await (0, core_lro_1.createHttpPoller)(lro, {\n restoreFrom: options === null || options === void 0 ? void 0 : options.resumeFrom,\n intervalInMs: options === null || options === void 0 ? void 0 : options.updateIntervalInMs,\n });\n await poller.poll();\n return poller;\n }\n /**\n * The resources to be moved must be in the same source resource group in the source subscription being\n * used. The target resource group may be in a different subscription. When moving resources, both the\n * source group and the target group are locked for the duration of the operation. Write and delete\n * operations are blocked on the groups until the move completes.\n * @param sourceResourceGroupName The name of the resource group from the source subscription\n * containing the resources to be moved.\n * @param parameters Parameters for moving resources.\n * @param options The options parameters.\n */\n async beginMoveResourcesAndWait(sourceResourceGroupName, parameters, options) {\n const poller = await this.beginMoveResources(sourceResourceGroupName, parameters, options);\n return poller.pollUntilDone();\n }\n /**\n * This operation checks whether the specified resources can be moved to the target. The resources to\n * be moved must be in the same source resource group in the source subscription being used. The target\n * resource group may be in a different subscription. If validation succeeds, it returns HTTP response\n * code 204 (no content). If validation fails, it returns HTTP response code 409 (Conflict) with an\n * error message. Retrieve the URL in the Location header value to check the result of the long-running\n * operation.\n * @param sourceResourceGroupName The name of the resource group from the source subscription\n * containing the resources to be validated for move.\n * @param parameters Parameters for moving resources.\n * @param options The options parameters.\n */\n async beginValidateMoveResources(sourceResourceGroupName, parameters, options) {\n const directSendOperation = async (args, spec) => {\n return this.client.sendOperationRequest(args, spec);\n };\n const sendOperationFn = async (args, spec) => {\n var _a;\n let currentRawResponse = undefined;\n const providedCallback = (_a = args.options) === null || _a === void 0 ? void 0 : _a.onResponse;\n const callback = (rawResponse, flatResponse) => {\n currentRawResponse = rawResponse;\n providedCallback === null || providedCallback === void 0 ? void 0 : providedCallback(rawResponse, flatResponse);\n };\n const updatedArgs = Object.assign(Object.assign({}, args), { options: Object.assign(Object.assign({}, args.options), { onResponse: callback }) });\n const flatResponse = await directSendOperation(updatedArgs, spec);\n return {\n flatResponse,\n rawResponse: {\n statusCode: currentRawResponse.status,\n body: currentRawResponse.parsedBody,\n headers: currentRawResponse.headers.toJSON(),\n },\n };\n };\n const lro = (0, lroImpl_js_1.createLroSpec)({\n sendOperationFn,\n args: { sourceResourceGroupName, parameters, options },\n spec: validateMoveResourcesOperationSpec,\n });\n const poller = await (0, core_lro_1.createHttpPoller)(lro, {\n restoreFrom: options === null || options === void 0 ? void 0 : options.resumeFrom,\n intervalInMs: options === null || options === void 0 ? void 0 : options.updateIntervalInMs,\n });\n await poller.poll();\n return poller;\n }\n /**\n * This operation checks whether the specified resources can be moved to the target. The resources to\n * be moved must be in the same source resource group in the source subscription being used. The target\n * resource group may be in a different subscription. If validation succeeds, it returns HTTP response\n * code 204 (no content). If validation fails, it returns HTTP response code 409 (Conflict) with an\n * error message. Retrieve the URL in the Location header value to check the result of the long-running\n * operation.\n * @param sourceResourceGroupName The name of the resource group from the source subscription\n * containing the resources to be validated for move.\n * @param parameters Parameters for moving resources.\n * @param options The options parameters.\n */\n async beginValidateMoveResourcesAndWait(sourceResourceGroupName, parameters, options) {\n const poller = await this.beginValidateMoveResources(sourceResourceGroupName, parameters, options);\n return poller.pollUntilDone();\n }\n /**\n * Get all the resources in a subscription.\n * @param options The options parameters.\n */\n _list(options) {\n return this.client.sendOperationRequest({ options }, listOperationSpec);\n }\n /**\n * Checks whether a resource exists.\n * @param resourceGroupName The name of the resource group containing the resource to check. The name\n * is case insensitive.\n * @param resourceProviderNamespace The resource provider of the resource to check.\n * @param parentResourcePath The parent resource identity.\n * @param resourceType The resource type.\n * @param resourceName The name of the resource to check whether it exists.\n * @param apiVersion The API version to use for the operation.\n * @param options The options parameters.\n */\n checkExistence(resourceGroupName, resourceProviderNamespace, parentResourcePath, resourceType, resourceName, apiVersion, options) {\n return this.client.sendOperationRequest({\n resourceGroupName,\n resourceProviderNamespace,\n parentResourcePath,\n resourceType,\n resourceName,\n apiVersion,\n options,\n }, checkExistenceOperationSpec);\n }\n /**\n * Deletes a resource.\n * @param resourceGroupName The name of the resource group that contains the resource to delete. The\n * name is case insensitive.\n * @param resourceProviderNamespace The namespace of the resource provider.\n * @param parentResourcePath The parent resource identity.\n * @param resourceType The resource type.\n * @param resourceName The name of the resource to delete.\n * @param apiVersion The API version to use for the operation.\n * @param options The options parameters.\n */\n async beginDelete(resourceGroupName, resourceProviderNamespace, parentResourcePath, resourceType, resourceName, apiVersion, options) {\n const directSendOperation = async (args, spec) => {\n return this.client.sendOperationRequest(args, spec);\n };\n const sendOperationFn = async (args, spec) => {\n var _a;\n let currentRawResponse = undefined;\n const providedCallback = (_a = args.options) === null || _a === void 0 ? void 0 : _a.onResponse;\n const callback = (rawResponse, flatResponse) => {\n currentRawResponse = rawResponse;\n providedCallback === null || providedCallback === void 0 ? void 0 : providedCallback(rawResponse, flatResponse);\n };\n const updatedArgs = Object.assign(Object.assign({}, args), { options: Object.assign(Object.assign({}, args.options), { onResponse: callback }) });\n const flatResponse = await directSendOperation(updatedArgs, spec);\n return {\n flatResponse,\n rawResponse: {\n statusCode: currentRawResponse.status,\n body: currentRawResponse.parsedBody,\n headers: currentRawResponse.headers.toJSON(),\n },\n };\n };\n const lro = (0, lroImpl_js_1.createLroSpec)({\n sendOperationFn,\n args: {\n resourceGroupName,\n resourceProviderNamespace,\n parentResourcePath,\n resourceType,\n resourceName,\n apiVersion,\n options,\n },\n spec: deleteOperationSpec,\n });\n const poller = await (0, core_lro_1.createHttpPoller)(lro, {\n restoreFrom: options === null || options === void 0 ? void 0 : options.resumeFrom,\n intervalInMs: options === null || options === void 0 ? void 0 : options.updateIntervalInMs,\n });\n await poller.poll();\n return poller;\n }\n /**\n * Deletes a resource.\n * @param resourceGroupName The name of the resource group that contains the resource to delete. The\n * name is case insensitive.\n * @param resourceProviderNamespace The namespace of the resource provider.\n * @param parentResourcePath The parent resource identity.\n * @param resourceType The resource type.\n * @param resourceName The name of the resource to delete.\n * @param apiVersion The API version to use for the operation.\n * @param options The options parameters.\n */\n async beginDeleteAndWait(resourceGroupName, resourceProviderNamespace, parentResourcePath, resourceType, resourceName, apiVersion, options) {\n const poller = await this.beginDelete(resourceGroupName, resourceProviderNamespace, parentResourcePath, resourceType, resourceName, apiVersion, options);\n return poller.pollUntilDone();\n }\n /**\n * Creates a resource.\n * @param resourceGroupName The name of the resource group for the resource. The name is case\n * insensitive.\n * @param resourceProviderNamespace The namespace of the resource provider.\n * @param parentResourcePath The parent resource identity.\n * @param resourceType The resource type of the resource to create.\n * @param resourceName The name of the resource to create.\n * @param apiVersion The API version to use for the operation.\n * @param parameters Parameters for creating or updating the resource.\n * @param options The options parameters.\n */\n async beginCreateOrUpdate(resourceGroupName, resourceProviderNamespace, parentResourcePath, resourceType, resourceName, apiVersion, parameters, options) {\n const directSendOperation = async (args, spec) => {\n return this.client.sendOperationRequest(args, spec);\n };\n const sendOperationFn = async (args, spec) => {\n var _a;\n let currentRawResponse = undefined;\n const providedCallback = (_a = args.options) === null || _a === void 0 ? void 0 : _a.onResponse;\n const callback = (rawResponse, flatResponse) => {\n currentRawResponse = rawResponse;\n providedCallback === null || providedCallback === void 0 ? void 0 : providedCallback(rawResponse, flatResponse);\n };\n const updatedArgs = Object.assign(Object.assign({}, args), { options: Object.assign(Object.assign({}, args.options), { onResponse: callback }) });\n const flatResponse = await directSendOperation(updatedArgs, spec);\n return {\n flatResponse,\n rawResponse: {\n statusCode: currentRawResponse.status,\n body: currentRawResponse.parsedBody,\n headers: currentRawResponse.headers.toJSON(),\n },\n };\n };\n const lro = (0, lroImpl_js_1.createLroSpec)({\n sendOperationFn,\n args: {\n resourceGroupName,\n resourceProviderNamespace,\n parentResourcePath,\n resourceType,\n resourceName,\n apiVersion,\n parameters,\n options,\n },\n spec: createOrUpdateOperationSpec,\n });\n const poller = await (0, core_lro_1.createHttpPoller)(lro, {\n restoreFrom: options === null || options === void 0 ? void 0 : options.resumeFrom,\n intervalInMs: options === null || options === void 0 ? void 0 : options.updateIntervalInMs,\n });\n await poller.poll();\n return poller;\n }\n /**\n * Creates a resource.\n * @param resourceGroupName The name of the resource group for the resource. The name is case\n * insensitive.\n * @param resourceProviderNamespace The namespace of the resource provider.\n * @param parentResourcePath The parent resource identity.\n * @param resourceType The resource type of the resource to create.\n * @param resourceName The name of the resource to create.\n * @param apiVersion The API version to use for the operation.\n * @param parameters Parameters for creating or updating the resource.\n * @param options The options parameters.\n */\n async beginCreateOrUpdateAndWait(resourceGroupName, resourceProviderNamespace, parentResourcePath, resourceType, resourceName, apiVersion, parameters, options) {\n const poller = await this.beginCreateOrUpdate(resourceGroupName, resourceProviderNamespace, parentResourcePath, resourceType, resourceName, apiVersion, parameters, options);\n return poller.pollUntilDone();\n }\n /**\n * Updates a resource.\n * @param resourceGroupName The name of the resource group for the resource. The name is case\n * insensitive.\n * @param resourceProviderNamespace The namespace of the resource provider.\n * @param parentResourcePath The parent resource identity.\n * @param resourceType The resource type of the resource to update.\n * @param resourceName The name of the resource to update.\n * @param apiVersion The API version to use for the operation.\n * @param parameters Parameters for updating the resource.\n * @param options The options parameters.\n */\n async beginUpdate(resourceGroupName, resourceProviderNamespace, parentResourcePath, resourceType, resourceName, apiVersion, parameters, options) {\n const directSendOperation = async (args, spec) => {\n return this.client.sendOperationRequest(args, spec);\n };\n const sendOperationFn = async (args, spec) => {\n var _a;\n let currentRawResponse = undefined;\n const providedCallback = (_a = args.options) === null || _a === void 0 ? void 0 : _a.onResponse;\n const callback = (rawResponse, flatResponse) => {\n currentRawResponse = rawResponse;\n providedCallback === null || providedCallback === void 0 ? void 0 : providedCallback(rawResponse, flatResponse);\n };\n const updatedArgs = Object.assign(Object.assign({}, args), { options: Object.assign(Object.assign({}, args.options), { onResponse: callback }) });\n const flatResponse = await directSendOperation(updatedArgs, spec);\n return {\n flatResponse,\n rawResponse: {\n statusCode: currentRawResponse.status,\n body: currentRawResponse.parsedBody,\n headers: currentRawResponse.headers.toJSON(),\n },\n };\n };\n const lro = (0, lroImpl_js_1.createLroSpec)({\n sendOperationFn,\n args: {\n resourceGroupName,\n resourceProviderNamespace,\n parentResourcePath,\n resourceType,\n resourceName,\n apiVersion,\n parameters,\n options,\n },\n spec: updateOperationSpec,\n });\n const poller = await (0, core_lro_1.createHttpPoller)(lro, {\n restoreFrom: options === null || options === void 0 ? void 0 : options.resumeFrom,\n intervalInMs: options === null || options === void 0 ? void 0 : options.updateIntervalInMs,\n });\n await poller.poll();\n return poller;\n }\n /**\n * Updates a resource.\n * @param resourceGroupName The name of the resource group for the resource. The name is case\n * insensitive.\n * @param resourceProviderNamespace The namespace of the resource provider.\n * @param parentResourcePath The parent resource identity.\n * @param resourceType The resource type of the resource to update.\n * @param resourceName The name of the resource to update.\n * @param apiVersion The API version to use for the operation.\n * @param parameters Parameters for updating the resource.\n * @param options The options parameters.\n */\n async beginUpdateAndWait(resourceGroupName, resourceProviderNamespace, parentResourcePath, resourceType, resourceName, apiVersion, parameters, options) {\n const poller = await this.beginUpdate(resourceGroupName, resourceProviderNamespace, parentResourcePath, resourceType, resourceName, apiVersion, parameters, options);\n return poller.pollUntilDone();\n }\n /**\n * Gets a resource.\n * @param resourceGroupName The name of the resource group containing the resource to get. The name is\n * case insensitive.\n * @param resourceProviderNamespace The namespace of the resource provider.\n * @param parentResourcePath The parent resource identity.\n * @param resourceType The resource type of the resource.\n * @param resourceName The name of the resource to get.\n * @param apiVersion The API version to use for the operation.\n * @param options The options parameters.\n */\n get(resourceGroupName, resourceProviderNamespace, parentResourcePath, resourceType, resourceName, apiVersion, options) {\n return this.client.sendOperationRequest({\n resourceGroupName,\n resourceProviderNamespace,\n parentResourcePath,\n resourceType,\n resourceName,\n apiVersion,\n options,\n }, getOperationSpec);\n }\n /**\n * Checks by ID whether a resource exists. This API currently works only for a limited set of Resource\n * providers. In the event that a Resource provider does not implement this API, ARM will respond with\n * a 405. The alternative then is to use the GET API to check for the existence of the resource.\n * @param resourceId The fully qualified ID of the resource, including the resource name and resource\n * type. Use the format,\n * /subscriptions/{guid}/resourceGroups/{resource-group-name}/{resource-provider-namespace}/{resource-type}/{resource-name}\n * @param apiVersion The API version to use for the operation.\n * @param options The options parameters.\n */\n checkExistenceById(resourceId, apiVersion, options) {\n return this.client.sendOperationRequest({ resourceId, apiVersion, options }, checkExistenceByIdOperationSpec);\n }\n /**\n * Deletes a resource by ID.\n * @param resourceId The fully qualified ID of the resource, including the resource name and resource\n * type. Use the format,\n * /subscriptions/{guid}/resourceGroups/{resource-group-name}/{resource-provider-namespace}/{resource-type}/{resource-name}\n * @param apiVersion The API version to use for the operation.\n * @param options The options parameters.\n */\n async beginDeleteById(resourceId, apiVersion, options) {\n const directSendOperation = async (args, spec) => {\n return this.client.sendOperationRequest(args, spec);\n };\n const sendOperationFn = async (args, spec) => {\n var _a;\n let currentRawResponse = undefined;\n const providedCallback = (_a = args.options) === null || _a === void 0 ? void 0 : _a.onResponse;\n const callback = (rawResponse, flatResponse) => {\n currentRawResponse = rawResponse;\n providedCallback === null || providedCallback === void 0 ? void 0 : providedCallback(rawResponse, flatResponse);\n };\n const updatedArgs = Object.assign(Object.assign({}, args), { options: Object.assign(Object.assign({}, args.options), { onResponse: callback }) });\n const flatResponse = await directSendOperation(updatedArgs, spec);\n return {\n flatResponse,\n rawResponse: {\n statusCode: currentRawResponse.status,\n body: currentRawResponse.parsedBody,\n headers: currentRawResponse.headers.toJSON(),\n },\n };\n };\n const lro = (0, lroImpl_js_1.createLroSpec)({\n sendOperationFn,\n args: { resourceId, apiVersion, options },\n spec: deleteByIdOperationSpec,\n });\n const poller = await (0, core_lro_1.createHttpPoller)(lro, {\n restoreFrom: options === null || options === void 0 ? void 0 : options.resumeFrom,\n intervalInMs: options === null || options === void 0 ? void 0 : options.updateIntervalInMs,\n });\n await poller.poll();\n return poller;\n }\n /**\n * Deletes a resource by ID.\n * @param resourceId The fully qualified ID of the resource, including the resource name and resource\n * type. Use the format,\n * /subscriptions/{guid}/resourceGroups/{resource-group-name}/{resource-provider-namespace}/{resource-type}/{resource-name}\n * @param apiVersion The API version to use for the operation.\n * @param options The options parameters.\n */\n async beginDeleteByIdAndWait(resourceId, apiVersion, options) {\n const poller = await this.beginDeleteById(resourceId, apiVersion, options);\n return poller.pollUntilDone();\n }\n /**\n * Create a resource by ID.\n * @param resourceId The fully qualified ID of the resource, including the resource name and resource\n * type. Use the format,\n * /subscriptions/{guid}/resourceGroups/{resource-group-name}/{resource-provider-namespace}/{resource-type}/{resource-name}\n * @param apiVersion The API version to use for the operation.\n * @param parameters Create or update resource parameters.\n * @param options The options parameters.\n */\n async beginCreateOrUpdateById(resourceId, apiVersion, parameters, options) {\n const directSendOperation = async (args, spec) => {\n return this.client.sendOperationRequest(args, spec);\n };\n const sendOperationFn = async (args, spec) => {\n var _a;\n let currentRawResponse = undefined;\n const providedCallback = (_a = args.options) === null || _a === void 0 ? void 0 : _a.onResponse;\n const callback = (rawResponse, flatResponse) => {\n currentRawResponse = rawResponse;\n providedCallback === null || providedCallback === void 0 ? void 0 : providedCallback(rawResponse, flatResponse);\n };\n const updatedArgs = Object.assign(Object.assign({}, args), { options: Object.assign(Object.assign({}, args.options), { onResponse: callback }) });\n const flatResponse = await directSendOperation(updatedArgs, spec);\n return {\n flatResponse,\n rawResponse: {\n statusCode: currentRawResponse.status,\n body: currentRawResponse.parsedBody,\n headers: currentRawResponse.headers.toJSON(),\n },\n };\n };\n const lro = (0, lroImpl_js_1.createLroSpec)({\n sendOperationFn,\n args: { resourceId, apiVersion, parameters, options },\n spec: createOrUpdateByIdOperationSpec,\n });\n const poller = await (0, core_lro_1.createHttpPoller)(lro, {\n restoreFrom: options === null || options === void 0 ? void 0 : options.resumeFrom,\n intervalInMs: options === null || options === void 0 ? void 0 : options.updateIntervalInMs,\n });\n await poller.poll();\n return poller;\n }\n /**\n * Create a resource by ID.\n * @param resourceId The fully qualified ID of the resource, including the resource name and resource\n * type. Use the format,\n * /subscriptions/{guid}/resourceGroups/{resource-group-name}/{resource-provider-namespace}/{resource-type}/{resource-name}\n * @param apiVersion The API version to use for the operation.\n * @param parameters Create or update resource parameters.\n * @param options The options parameters.\n */\n async beginCreateOrUpdateByIdAndWait(resourceId, apiVersion, parameters, options) {\n const poller = await this.beginCreateOrUpdateById(resourceId, apiVersion, parameters, options);\n return poller.pollUntilDone();\n }\n /**\n * Updates a resource by ID.\n * @param resourceId The fully qualified ID of the resource, including the resource name and resource\n * type. Use the format,\n * /subscriptions/{guid}/resourceGroups/{resource-group-name}/{resource-provider-namespace}/{resource-type}/{resource-name}\n * @param apiVersion The API version to use for the operation.\n * @param parameters Update resource parameters.\n * @param options The options parameters.\n */\n async beginUpdateById(resourceId, apiVersion, parameters, options) {\n const directSendOperation = async (args, spec) => {\n return this.client.sendOperationRequest(args, spec);\n };\n const sendOperationFn = async (args, spec) => {\n var _a;\n let currentRawResponse = undefined;\n const providedCallback = (_a = args.options) === null || _a === void 0 ? void 0 : _a.onResponse;\n const callback = (rawResponse, flatResponse) => {\n currentRawResponse = rawResponse;\n providedCallback === null || providedCallback === void 0 ? void 0 : providedCallback(rawResponse, flatResponse);\n };\n const updatedArgs = Object.assign(Object.assign({}, args), { options: Object.assign(Object.assign({}, args.options), { onResponse: callback }) });\n const flatResponse = await directSendOperation(updatedArgs, spec);\n return {\n flatResponse,\n rawResponse: {\n statusCode: currentRawResponse.status,\n body: currentRawResponse.parsedBody,\n headers: currentRawResponse.headers.toJSON(),\n },\n };\n };\n const lro = (0, lroImpl_js_1.createLroSpec)({\n sendOperationFn,\n args: { resourceId, apiVersion, parameters, options },\n spec: updateByIdOperationSpec,\n });\n const poller = await (0, core_lro_1.createHttpPoller)(lro, {\n restoreFrom: options === null || options === void 0 ? void 0 : options.resumeFrom,\n intervalInMs: options === null || options === void 0 ? void 0 : options.updateIntervalInMs,\n });\n await poller.poll();\n return poller;\n }\n /**\n * Updates a resource by ID.\n * @param resourceId The fully qualified ID of the resource, including the resource name and resource\n * type. Use the format,\n * /subscriptions/{guid}/resourceGroups/{resource-group-name}/{resource-provider-namespace}/{resource-type}/{resource-name}\n * @param apiVersion The API version to use for the operation.\n * @param parameters Update resource parameters.\n * @param options The options parameters.\n */\n async beginUpdateByIdAndWait(resourceId, apiVersion, parameters, options) {\n const poller = await this.beginUpdateById(resourceId, apiVersion, parameters, options);\n return poller.pollUntilDone();\n }\n /**\n * Gets a resource by ID.\n * @param resourceId The fully qualified ID of the resource, including the resource name and resource\n * type. Use the format,\n * /subscriptions/{guid}/resourceGroups/{resource-group-name}/{resource-provider-namespace}/{resource-type}/{resource-name}\n * @param apiVersion The API version to use for the operation.\n * @param options The options parameters.\n */\n getById(resourceId, apiVersion, options) {\n return this.client.sendOperationRequest({ resourceId, apiVersion, options }, getByIdOperationSpec);\n }\n /**\n * ListByResourceGroupNext\n * @param resourceGroupName The resource group with the resources to get.\n * @param nextLink The nextLink from the previous successful call to the ListByResourceGroup method.\n * @param options The options parameters.\n */\n _listByResourceGroupNext(resourceGroupName, nextLink, options) {\n return this.client.sendOperationRequest({ resourceGroupName, nextLink, options }, listByResourceGroupNextOperationSpec);\n }\n /**\n * ListNext\n * @param nextLink The nextLink from the previous successful call to the List method.\n * @param options The options parameters.\n */\n _listNext(nextLink, options) {\n return this.client.sendOperationRequest({ nextLink, options }, listNextOperationSpec);\n }\n}\nexports.ResourcesImpl = ResourcesImpl;\n// Operation Specifications\nconst serializer = coreClient.createSerializer(Mappers, /* isXml */ false);\nconst listByResourceGroupOperationSpec = {\n path: \"/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/resources\",\n httpMethod: \"GET\",\n responses: {\n 200: {\n bodyMapper: Mappers.ResourceListResult,\n },\n default: {\n bodyMapper: Mappers.CloudError,\n },\n },\n queryParameters: [\n Parameters.apiVersion,\n Parameters.filter,\n Parameters.top,\n Parameters.expand,\n ],\n urlParameters: [\n Parameters.$host,\n Parameters.subscriptionId,\n Parameters.resourceGroupName,\n ],\n headerParameters: [Parameters.accept],\n serializer,\n};\nconst moveResourcesOperationSpec = {\n path: \"/subscriptions/{subscriptionId}/resourceGroups/{sourceResourceGroupName}/moveResources\",\n httpMethod: \"POST\",\n responses: {\n 200: {},\n 201: {},\n 202: {},\n 204: {},\n default: {\n bodyMapper: Mappers.CloudError,\n },\n },\n requestBody: Parameters.parameters4,\n queryParameters: [Parameters.apiVersion],\n urlParameters: [\n Parameters.$host,\n Parameters.subscriptionId,\n Parameters.sourceResourceGroupName,\n ],\n headerParameters: [Parameters.accept, Parameters.contentType],\n mediaType: \"json\",\n serializer,\n};\nconst validateMoveResourcesOperationSpec = {\n path: \"/subscriptions/{subscriptionId}/resourceGroups/{sourceResourceGroupName}/validateMoveResources\",\n httpMethod: \"POST\",\n responses: {\n 200: {},\n 201: {},\n 202: {},\n 204: {},\n default: {\n bodyMapper: Mappers.CloudError,\n },\n },\n requestBody: Parameters.parameters4,\n queryParameters: [Parameters.apiVersion],\n urlParameters: [\n Parameters.$host,\n Parameters.subscriptionId,\n Parameters.sourceResourceGroupName,\n ],\n headerParameters: [Parameters.accept, Parameters.contentType],\n mediaType: \"json\",\n serializer,\n};\nconst listOperationSpec = {\n path: \"/subscriptions/{subscriptionId}/resources\",\n httpMethod: \"GET\",\n responses: {\n 200: {\n bodyMapper: Mappers.ResourceListResult,\n },\n default: {\n bodyMapper: Mappers.CloudError,\n },\n },\n queryParameters: [\n Parameters.apiVersion,\n Parameters.filter,\n Parameters.top,\n Parameters.expand,\n ],\n urlParameters: [Parameters.$host, Parameters.subscriptionId],\n headerParameters: [Parameters.accept],\n serializer,\n};\nconst checkExistenceOperationSpec = {\n path: \"/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{parentResourcePath}/{resourceType}/{resourceName}\",\n httpMethod: \"HEAD\",\n responses: {\n 204: {},\n 404: {},\n default: {\n bodyMapper: Mappers.CloudError,\n },\n },\n queryParameters: [Parameters.apiVersion1],\n urlParameters: [\n Parameters.$host,\n Parameters.subscriptionId,\n Parameters.resourceGroupName,\n Parameters.resourceProviderNamespace,\n Parameters.parentResourcePath,\n Parameters.resourceType,\n Parameters.resourceName,\n ],\n headerParameters: [Parameters.accept],\n serializer,\n};\nconst deleteOperationSpec = {\n path: \"/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{parentResourcePath}/{resourceType}/{resourceName}\",\n httpMethod: \"DELETE\",\n responses: {\n 200: {},\n 201: {},\n 202: {},\n 204: {},\n default: {\n bodyMapper: Mappers.CloudError,\n },\n },\n queryParameters: [Parameters.apiVersion1],\n urlParameters: [\n Parameters.$host,\n Parameters.subscriptionId,\n Parameters.resourceGroupName,\n Parameters.resourceProviderNamespace,\n Parameters.parentResourcePath,\n Parameters.resourceType,\n Parameters.resourceName,\n ],\n headerParameters: [Parameters.accept],\n serializer,\n};\nconst createOrUpdateOperationSpec = {\n path: \"/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{parentResourcePath}/{resourceType}/{resourceName}\",\n httpMethod: \"PUT\",\n responses: {\n 200: {\n bodyMapper: Mappers.GenericResource,\n },\n 201: {\n bodyMapper: Mappers.GenericResource,\n },\n 202: {\n bodyMapper: Mappers.GenericResource,\n },\n 204: {\n bodyMapper: Mappers.GenericResource,\n },\n default: {\n bodyMapper: Mappers.CloudError,\n },\n },\n requestBody: Parameters.parameters5,\n queryParameters: [Parameters.apiVersion1],\n urlParameters: [\n Parameters.$host,\n Parameters.subscriptionId,\n Parameters.resourceGroupName,\n Parameters.resourceProviderNamespace,\n Parameters.parentResourcePath,\n Parameters.resourceType,\n Parameters.resourceName,\n ],\n headerParameters: [Parameters.accept, Parameters.contentType],\n mediaType: \"json\",\n serializer,\n};\nconst updateOperationSpec = {\n path: \"/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{parentResourcePath}/{resourceType}/{resourceName}\",\n httpMethod: \"PATCH\",\n responses: {\n 200: {\n bodyMapper: Mappers.GenericResource,\n },\n 201: {\n bodyMapper: Mappers.GenericResource,\n },\n 202: {\n bodyMapper: Mappers.GenericResource,\n },\n 204: {\n bodyMapper: Mappers.GenericResource,\n },\n default: {\n bodyMapper: Mappers.CloudError,\n },\n },\n requestBody: Parameters.parameters5,\n queryParameters: [Parameters.apiVersion1],\n urlParameters: [\n Parameters.$host,\n Parameters.subscriptionId,\n Parameters.resourceGroupName,\n Parameters.resourceProviderNamespace,\n Parameters.parentResourcePath,\n Parameters.resourceType,\n Parameters.resourceName,\n ],\n headerParameters: [Parameters.accept, Parameters.contentType],\n mediaType: \"json\",\n serializer,\n};\nconst getOperationSpec = {\n path: \"/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{parentResourcePath}/{resourceType}/{resourceName}\",\n httpMethod: \"GET\",\n responses: {\n 200: {\n bodyMapper: Mappers.GenericResource,\n },\n default: {\n bodyMapper: Mappers.CloudError,\n },\n },\n queryParameters: [Parameters.apiVersion1],\n urlParameters: [\n Parameters.$host,\n Parameters.subscriptionId,\n Parameters.resourceGroupName,\n Parameters.resourceProviderNamespace,\n Parameters.parentResourcePath,\n Parameters.resourceType,\n Parameters.resourceName,\n ],\n headerParameters: [Parameters.accept],\n serializer,\n};\nconst checkExistenceByIdOperationSpec = {\n path: \"/{resourceId}\",\n httpMethod: \"HEAD\",\n responses: {\n 204: {},\n 404: {},\n default: {\n bodyMapper: Mappers.CloudError,\n },\n },\n queryParameters: [Parameters.apiVersion1],\n urlParameters: [Parameters.$host, Parameters.resourceId],\n headerParameters: [Parameters.accept],\n serializer,\n};\nconst deleteByIdOperationSpec = {\n path: \"/{resourceId}\",\n httpMethod: \"DELETE\",\n responses: {\n 200: {},\n 201: {},\n 202: {},\n 204: {},\n default: {\n bodyMapper: Mappers.CloudError,\n },\n },\n queryParameters: [Parameters.apiVersion1],\n urlParameters: [Parameters.$host, Parameters.resourceId],\n headerParameters: [Parameters.accept],\n serializer,\n};\nconst createOrUpdateByIdOperationSpec = {\n path: \"/{resourceId}\",\n httpMethod: \"PUT\",\n responses: {\n 200: {\n bodyMapper: Mappers.GenericResource,\n },\n 201: {\n bodyMapper: Mappers.GenericResource,\n },\n 202: {\n bodyMapper: Mappers.GenericResource,\n },\n 204: {\n bodyMapper: Mappers.GenericResource,\n },\n default: {\n bodyMapper: Mappers.CloudError,\n },\n },\n requestBody: Parameters.parameters5,\n queryParameters: [Parameters.apiVersion1],\n urlParameters: [Parameters.$host, Parameters.resourceId],\n headerParameters: [Parameters.accept, Parameters.contentType],\n mediaType: \"json\",\n serializer,\n};\nconst updateByIdOperationSpec = {\n path: \"/{resourceId}\",\n httpMethod: \"PATCH\",\n responses: {\n 200: {\n bodyMapper: Mappers.GenericResource,\n },\n 201: {\n bodyMapper: Mappers.GenericResource,\n },\n 202: {\n bodyMapper: Mappers.GenericResource,\n },\n 204: {\n bodyMapper: Mappers.GenericResource,\n },\n default: {\n bodyMapper: Mappers.CloudError,\n },\n },\n requestBody: Parameters.parameters5,\n queryParameters: [Parameters.apiVersion1],\n urlParameters: [Parameters.$host, Parameters.resourceId],\n headerParameters: [Parameters.accept, Parameters.contentType],\n mediaType: \"json\",\n serializer,\n};\nconst getByIdOperationSpec = {\n path: \"/{resourceId}\",\n httpMethod: \"GET\",\n responses: {\n 200: {\n bodyMapper: Mappers.GenericResource,\n },\n default: {\n bodyMapper: Mappers.CloudError,\n },\n },\n queryParameters: [Parameters.apiVersion1],\n urlParameters: [Parameters.$host, Parameters.resourceId],\n headerParameters: [Parameters.accept],\n serializer,\n};\nconst listByResourceGroupNextOperationSpec = {\n path: \"{nextLink}\",\n httpMethod: \"GET\",\n responses: {\n 200: {\n bodyMapper: Mappers.ResourceListResult,\n },\n default: {\n bodyMapper: Mappers.CloudError,\n },\n },\n urlParameters: [\n Parameters.$host,\n Parameters.nextLink,\n Parameters.subscriptionId,\n Parameters.resourceGroupName,\n ],\n headerParameters: [Parameters.accept],\n serializer,\n};\nconst listNextOperationSpec = {\n path: \"{nextLink}\",\n httpMethod: \"GET\",\n responses: {\n 200: {\n bodyMapper: Mappers.ResourceListResult,\n },\n default: {\n bodyMapper: Mappers.CloudError,\n },\n },\n urlParameters: [\n Parameters.$host,\n Parameters.nextLink,\n Parameters.subscriptionId,\n ],\n headerParameters: [Parameters.accept],\n serializer,\n};\n//# sourceMappingURL=resources.js.map","\"use strict\";\n/*\n * Copyright (c) Microsoft Corporation.\n * Licensed under the MIT License.\n *\n * Code generated by Microsoft (R) AutoRest Code Generator.\n * Changes may cause incorrect behavior and will be lost if the code is regenerated.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ResourceGroupsImpl = void 0;\nconst tslib_1 = require(\"tslib\");\nconst pagingHelper_js_1 = require(\"../pagingHelper.js\");\nconst coreClient = tslib_1.__importStar(require(\"@azure/core-client\"));\nconst Mappers = tslib_1.__importStar(require(\"../models/mappers.js\"));\nconst Parameters = tslib_1.__importStar(require(\"../models/parameters.js\"));\nconst core_lro_1 = require(\"@azure/core-lro\");\nconst lroImpl_js_1 = require(\"../lroImpl.js\");\n/// \n/** Class containing ResourceGroups operations. */\nclass ResourceGroupsImpl {\n /**\n * Initialize a new instance of the class ResourceGroups class.\n * @param client Reference to the service client\n */\n constructor(client) {\n this.client = client;\n }\n /**\n * Gets all the resource groups for a subscription.\n * @param options The options parameters.\n */\n list(options) {\n const iter = this.listPagingAll(options);\n return {\n next() {\n return iter.next();\n },\n [Symbol.asyncIterator]() {\n return this;\n },\n byPage: (settings) => {\n if (settings === null || settings === void 0 ? void 0 : settings.maxPageSize) {\n throw new Error(\"maxPageSize is not supported by this operation.\");\n }\n return this.listPagingPage(options, settings);\n },\n };\n }\n listPagingPage(options, settings) {\n return tslib_1.__asyncGenerator(this, arguments, function* listPagingPage_1() {\n let result;\n let continuationToken = settings === null || settings === void 0 ? void 0 : settings.continuationToken;\n if (!continuationToken) {\n result = yield tslib_1.__await(this._list(options));\n let page = result.value || [];\n continuationToken = result.nextLink;\n (0, pagingHelper_js_1.setContinuationToken)(page, continuationToken);\n yield yield tslib_1.__await(page);\n }\n while (continuationToken) {\n result = yield tslib_1.__await(this._listNext(continuationToken, options));\n continuationToken = result.nextLink;\n let page = result.value || [];\n (0, pagingHelper_js_1.setContinuationToken)(page, continuationToken);\n yield yield tslib_1.__await(page);\n }\n });\n }\n listPagingAll(options) {\n return tslib_1.__asyncGenerator(this, arguments, function* listPagingAll_1() {\n var _a, e_1, _b, _c;\n try {\n for (var _d = true, _e = tslib_1.__asyncValues(this.listPagingPage(options)), _f; _f = yield tslib_1.__await(_e.next()), _a = _f.done, !_a; _d = true) {\n _c = _f.value;\n _d = false;\n const page = _c;\n yield tslib_1.__await(yield* tslib_1.__asyncDelegator(tslib_1.__asyncValues(page)));\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (!_d && !_a && (_b = _e.return)) yield tslib_1.__await(_b.call(_e));\n }\n finally { if (e_1) throw e_1.error; }\n }\n });\n }\n /**\n * Checks whether a resource group exists.\n * @param resourceGroupName The name of the resource group to check. The name is case insensitive.\n * @param options The options parameters.\n */\n checkExistence(resourceGroupName, options) {\n return this.client.sendOperationRequest({ resourceGroupName, options }, checkExistenceOperationSpec);\n }\n /**\n * Creates or updates a resource group.\n * @param resourceGroupName The name of the resource group to create or update. Can include\n * alphanumeric, underscore, parentheses, hyphen, period (except at end), and Unicode characters that\n * match the allowed characters.\n * @param parameters Parameters supplied to the create or update a resource group.\n * @param options The options parameters.\n */\n createOrUpdate(resourceGroupName, parameters, options) {\n return this.client.sendOperationRequest({ resourceGroupName, parameters, options }, createOrUpdateOperationSpec);\n }\n /**\n * When you delete a resource group, all of its resources are also deleted. Deleting a resource group\n * deletes all of its template deployments and currently stored operations.\n * @param resourceGroupName The name of the resource group to delete. The name is case insensitive.\n * @param options The options parameters.\n */\n async beginDelete(resourceGroupName, options) {\n const directSendOperation = async (args, spec) => {\n return this.client.sendOperationRequest(args, spec);\n };\n const sendOperationFn = async (args, spec) => {\n var _a;\n let currentRawResponse = undefined;\n const providedCallback = (_a = args.options) === null || _a === void 0 ? void 0 : _a.onResponse;\n const callback = (rawResponse, flatResponse) => {\n currentRawResponse = rawResponse;\n providedCallback === null || providedCallback === void 0 ? void 0 : providedCallback(rawResponse, flatResponse);\n };\n const updatedArgs = Object.assign(Object.assign({}, args), { options: Object.assign(Object.assign({}, args.options), { onResponse: callback }) });\n const flatResponse = await directSendOperation(updatedArgs, spec);\n return {\n flatResponse,\n rawResponse: {\n statusCode: currentRawResponse.status,\n body: currentRawResponse.parsedBody,\n headers: currentRawResponse.headers.toJSON(),\n },\n };\n };\n const lro = (0, lroImpl_js_1.createLroSpec)({\n sendOperationFn,\n args: { resourceGroupName, options },\n spec: deleteOperationSpec,\n });\n const poller = await (0, core_lro_1.createHttpPoller)(lro, {\n restoreFrom: options === null || options === void 0 ? void 0 : options.resumeFrom,\n intervalInMs: options === null || options === void 0 ? void 0 : options.updateIntervalInMs,\n });\n await poller.poll();\n return poller;\n }\n /**\n * When you delete a resource group, all of its resources are also deleted. Deleting a resource group\n * deletes all of its template deployments and currently stored operations.\n * @param resourceGroupName The name of the resource group to delete. The name is case insensitive.\n * @param options The options parameters.\n */\n async beginDeleteAndWait(resourceGroupName, options) {\n const poller = await this.beginDelete(resourceGroupName, options);\n return poller.pollUntilDone();\n }\n /**\n * Gets a resource group.\n * @param resourceGroupName The name of the resource group to get. The name is case insensitive.\n * @param options The options parameters.\n */\n get(resourceGroupName, options) {\n return this.client.sendOperationRequest({ resourceGroupName, options }, getOperationSpec);\n }\n /**\n * Resource groups can be updated through a simple PATCH operation to a group address. The format of\n * the request is the same as that for creating a resource group. If a field is unspecified, the\n * current value is retained.\n * @param resourceGroupName The name of the resource group to update. The name is case insensitive.\n * @param parameters Parameters supplied to update a resource group.\n * @param options The options parameters.\n */\n update(resourceGroupName, parameters, options) {\n return this.client.sendOperationRequest({ resourceGroupName, parameters, options }, updateOperationSpec);\n }\n /**\n * Captures the specified resource group as a template.\n * @param resourceGroupName The name of the resource group. The name is case insensitive.\n * @param parameters Parameters for exporting the template.\n * @param options The options parameters.\n */\n async beginExportTemplate(resourceGroupName, parameters, options) {\n const directSendOperation = async (args, spec) => {\n return this.client.sendOperationRequest(args, spec);\n };\n const sendOperationFn = async (args, spec) => {\n var _a;\n let currentRawResponse = undefined;\n const providedCallback = (_a = args.options) === null || _a === void 0 ? void 0 : _a.onResponse;\n const callback = (rawResponse, flatResponse) => {\n currentRawResponse = rawResponse;\n providedCallback === null || providedCallback === void 0 ? void 0 : providedCallback(rawResponse, flatResponse);\n };\n const updatedArgs = Object.assign(Object.assign({}, args), { options: Object.assign(Object.assign({}, args.options), { onResponse: callback }) });\n const flatResponse = await directSendOperation(updatedArgs, spec);\n return {\n flatResponse,\n rawResponse: {\n statusCode: currentRawResponse.status,\n body: currentRawResponse.parsedBody,\n headers: currentRawResponse.headers.toJSON(),\n },\n };\n };\n const lro = (0, lroImpl_js_1.createLroSpec)({\n sendOperationFn,\n args: { resourceGroupName, parameters, options },\n spec: exportTemplateOperationSpec,\n });\n const poller = await (0, core_lro_1.createHttpPoller)(lro, {\n restoreFrom: options === null || options === void 0 ? void 0 : options.resumeFrom,\n intervalInMs: options === null || options === void 0 ? void 0 : options.updateIntervalInMs,\n resourceLocationConfig: \"location\",\n });\n await poller.poll();\n return poller;\n }\n /**\n * Captures the specified resource group as a template.\n * @param resourceGroupName The name of the resource group. The name is case insensitive.\n * @param parameters Parameters for exporting the template.\n * @param options The options parameters.\n */\n async beginExportTemplateAndWait(resourceGroupName, parameters, options) {\n const poller = await this.beginExportTemplate(resourceGroupName, parameters, options);\n return poller.pollUntilDone();\n }\n /**\n * Gets all the resource groups for a subscription.\n * @param options The options parameters.\n */\n _list(options) {\n return this.client.sendOperationRequest({ options }, listOperationSpec);\n }\n /**\n * ListNext\n * @param nextLink The nextLink from the previous successful call to the List method.\n * @param options The options parameters.\n */\n _listNext(nextLink, options) {\n return this.client.sendOperationRequest({ nextLink, options }, listNextOperationSpec);\n }\n}\nexports.ResourceGroupsImpl = ResourceGroupsImpl;\n// Operation Specifications\nconst serializer = coreClient.createSerializer(Mappers, /* isXml */ false);\nconst checkExistenceOperationSpec = {\n path: \"/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}\",\n httpMethod: \"HEAD\",\n responses: {\n 204: {},\n 404: {},\n default: {\n bodyMapper: Mappers.CloudError,\n },\n },\n queryParameters: [Parameters.apiVersion],\n urlParameters: [\n Parameters.$host,\n Parameters.subscriptionId,\n Parameters.resourceGroupName,\n ],\n headerParameters: [Parameters.accept],\n serializer,\n};\nconst createOrUpdateOperationSpec = {\n path: \"/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}\",\n httpMethod: \"PUT\",\n responses: {\n 200: {\n bodyMapper: Mappers.ResourceGroup,\n },\n 201: {\n bodyMapper: Mappers.ResourceGroup,\n },\n default: {\n bodyMapper: Mappers.CloudError,\n },\n },\n requestBody: Parameters.parameters6,\n queryParameters: [Parameters.apiVersion],\n urlParameters: [\n Parameters.$host,\n Parameters.subscriptionId,\n Parameters.resourceGroupName,\n ],\n headerParameters: [Parameters.accept, Parameters.contentType],\n mediaType: \"json\",\n serializer,\n};\nconst deleteOperationSpec = {\n path: \"/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}\",\n httpMethod: \"DELETE\",\n responses: {\n 200: {},\n 201: {},\n 202: {},\n 204: {},\n default: {\n bodyMapper: Mappers.CloudError,\n },\n },\n queryParameters: [Parameters.apiVersion, Parameters.forceDeletionTypes],\n urlParameters: [\n Parameters.$host,\n Parameters.subscriptionId,\n Parameters.resourceGroupName,\n ],\n headerParameters: [Parameters.accept],\n serializer,\n};\nconst getOperationSpec = {\n path: \"/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}\",\n httpMethod: \"GET\",\n responses: {\n 200: {\n bodyMapper: Mappers.ResourceGroup,\n },\n default: {\n bodyMapper: Mappers.CloudError,\n },\n },\n queryParameters: [Parameters.apiVersion],\n urlParameters: [\n Parameters.$host,\n Parameters.subscriptionId,\n Parameters.resourceGroupName,\n ],\n headerParameters: [Parameters.accept],\n serializer,\n};\nconst updateOperationSpec = {\n path: \"/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}\",\n httpMethod: \"PATCH\",\n responses: {\n 200: {\n bodyMapper: Mappers.ResourceGroup,\n },\n default: {\n bodyMapper: Mappers.CloudError,\n },\n },\n requestBody: Parameters.parameters7,\n queryParameters: [Parameters.apiVersion],\n urlParameters: [\n Parameters.$host,\n Parameters.subscriptionId,\n Parameters.resourceGroupName,\n ],\n headerParameters: [Parameters.accept, Parameters.contentType],\n mediaType: \"json\",\n serializer,\n};\nconst exportTemplateOperationSpec = {\n path: \"/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/exportTemplate\",\n httpMethod: \"POST\",\n responses: {\n 200: {\n bodyMapper: Mappers.ResourceGroupExportResult,\n },\n 201: {\n bodyMapper: Mappers.ResourceGroupExportResult,\n },\n 202: {\n bodyMapper: Mappers.ResourceGroupExportResult,\n },\n 204: {\n bodyMapper: Mappers.ResourceGroupExportResult,\n },\n default: {\n bodyMapper: Mappers.CloudError,\n },\n },\n requestBody: Parameters.parameters8,\n queryParameters: [Parameters.apiVersion],\n urlParameters: [\n Parameters.$host,\n Parameters.subscriptionId,\n Parameters.resourceGroupName1,\n ],\n headerParameters: [Parameters.accept, Parameters.contentType],\n mediaType: \"json\",\n serializer,\n};\nconst listOperationSpec = {\n path: \"/subscriptions/{subscriptionId}/resourcegroups\",\n httpMethod: \"GET\",\n responses: {\n 200: {\n bodyMapper: Mappers.ResourceGroupListResult,\n },\n default: {\n bodyMapper: Mappers.CloudError,\n },\n },\n queryParameters: [Parameters.apiVersion, Parameters.filter, Parameters.top],\n urlParameters: [Parameters.$host, Parameters.subscriptionId],\n headerParameters: [Parameters.accept],\n serializer,\n};\nconst listNextOperationSpec = {\n path: \"{nextLink}\",\n httpMethod: \"GET\",\n responses: {\n 200: {\n bodyMapper: Mappers.ResourceGroupListResult,\n },\n default: {\n bodyMapper: Mappers.CloudError,\n },\n },\n urlParameters: [\n Parameters.$host,\n Parameters.nextLink,\n Parameters.subscriptionId,\n ],\n headerParameters: [Parameters.accept],\n serializer,\n};\n//# sourceMappingURL=resourceGroups.js.map","\"use strict\";\n/*\n * Copyright (c) Microsoft Corporation.\n * Licensed under the MIT License.\n *\n * Code generated by Microsoft (R) AutoRest Code Generator.\n * Changes may cause incorrect behavior and will be lost if the code is regenerated.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.TagsOperationsImpl = void 0;\nconst tslib_1 = require(\"tslib\");\nconst pagingHelper_js_1 = require(\"../pagingHelper.js\");\nconst coreClient = tslib_1.__importStar(require(\"@azure/core-client\"));\nconst Mappers = tslib_1.__importStar(require(\"../models/mappers.js\"));\nconst Parameters = tslib_1.__importStar(require(\"../models/parameters.js\"));\nconst core_lro_1 = require(\"@azure/core-lro\");\nconst lroImpl_js_1 = require(\"../lroImpl.js\");\n/// \n/** Class containing TagsOperations operations. */\nclass TagsOperationsImpl {\n /**\n * Initialize a new instance of the class TagsOperations class.\n * @param client Reference to the service client\n */\n constructor(client) {\n this.client = client;\n }\n /**\n * This operation performs a union of predefined tags, resource tags, resource group tags and\n * subscription tags, and returns a summary of usage for each tag name and value under the given\n * subscription. In case of a large number of tags, this operation may return a previously cached\n * result.\n * @param options The options parameters.\n */\n list(options) {\n const iter = this.listPagingAll(options);\n return {\n next() {\n return iter.next();\n },\n [Symbol.asyncIterator]() {\n return this;\n },\n byPage: (settings) => {\n if (settings === null || settings === void 0 ? void 0 : settings.maxPageSize) {\n throw new Error(\"maxPageSize is not supported by this operation.\");\n }\n return this.listPagingPage(options, settings);\n },\n };\n }\n listPagingPage(options, settings) {\n return tslib_1.__asyncGenerator(this, arguments, function* listPagingPage_1() {\n let result;\n let continuationToken = settings === null || settings === void 0 ? void 0 : settings.continuationToken;\n if (!continuationToken) {\n result = yield tslib_1.__await(this._list(options));\n let page = result.value || [];\n continuationToken = result.nextLink;\n (0, pagingHelper_js_1.setContinuationToken)(page, continuationToken);\n yield yield tslib_1.__await(page);\n }\n while (continuationToken) {\n result = yield tslib_1.__await(this._listNext(continuationToken, options));\n continuationToken = result.nextLink;\n let page = result.value || [];\n (0, pagingHelper_js_1.setContinuationToken)(page, continuationToken);\n yield yield tslib_1.__await(page);\n }\n });\n }\n listPagingAll(options) {\n return tslib_1.__asyncGenerator(this, arguments, function* listPagingAll_1() {\n var _a, e_1, _b, _c;\n try {\n for (var _d = true, _e = tslib_1.__asyncValues(this.listPagingPage(options)), _f; _f = yield tslib_1.__await(_e.next()), _a = _f.done, !_a; _d = true) {\n _c = _f.value;\n _d = false;\n const page = _c;\n yield tslib_1.__await(yield* tslib_1.__asyncDelegator(tslib_1.__asyncValues(page)));\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (!_d && !_a && (_b = _e.return)) yield tslib_1.__await(_b.call(_e));\n }\n finally { if (e_1) throw e_1.error; }\n }\n });\n }\n /**\n * This operation allows deleting a value from the list of predefined values for an existing predefined\n * tag name. The value being deleted must not be in use as a tag value for the given tag name for any\n * resource.\n * @param tagName The name of the tag.\n * @param tagValue The value of the tag to delete.\n * @param options The options parameters.\n */\n deleteValue(tagName, tagValue, options) {\n return this.client.sendOperationRequest({ tagName, tagValue, options }, deleteValueOperationSpec);\n }\n /**\n * This operation allows adding a value to the list of predefined values for an existing predefined tag\n * name. A tag value can have a maximum of 256 characters.\n * @param tagName The name of the tag.\n * @param tagValue The value of the tag to create.\n * @param options The options parameters.\n */\n createOrUpdateValue(tagName, tagValue, options) {\n return this.client.sendOperationRequest({ tagName, tagValue, options }, createOrUpdateValueOperationSpec);\n }\n /**\n * This operation allows adding a name to the list of predefined tag names for the given subscription.\n * A tag name can have a maximum of 512 characters and is case-insensitive. Tag names cannot have the\n * following prefixes which are reserved for Azure use: 'microsoft', 'azure', 'windows'.\n * @param tagName The name of the tag to create.\n * @param options The options parameters.\n */\n createOrUpdate(tagName, options) {\n return this.client.sendOperationRequest({ tagName, options }, createOrUpdateOperationSpec);\n }\n /**\n * This operation allows deleting a name from the list of predefined tag names for the given\n * subscription. The name being deleted must not be in use as a tag name for any resource. All\n * predefined values for the given name must have already been deleted.\n * @param tagName The name of the tag.\n * @param options The options parameters.\n */\n delete(tagName, options) {\n return this.client.sendOperationRequest({ tagName, options }, deleteOperationSpec);\n }\n /**\n * This operation performs a union of predefined tags, resource tags, resource group tags and\n * subscription tags, and returns a summary of usage for each tag name and value under the given\n * subscription. In case of a large number of tags, this operation may return a previously cached\n * result.\n * @param options The options parameters.\n */\n _list(options) {\n return this.client.sendOperationRequest({ options }, listOperationSpec);\n }\n /**\n * This operation allows adding or replacing the entire set of tags on the specified resource or\n * subscription. The specified entity can have a maximum of 50 tags.\n * @param scope The resource scope.\n * @param parameters Wrapper resource for tags API requests and responses.\n * @param options The options parameters.\n */\n async beginCreateOrUpdateAtScope(scope, parameters, options) {\n const directSendOperation = async (args, spec) => {\n return this.client.sendOperationRequest(args, spec);\n };\n const sendOperationFn = async (args, spec) => {\n var _a;\n let currentRawResponse = undefined;\n const providedCallback = (_a = args.options) === null || _a === void 0 ? void 0 : _a.onResponse;\n const callback = (rawResponse, flatResponse) => {\n currentRawResponse = rawResponse;\n providedCallback === null || providedCallback === void 0 ? void 0 : providedCallback(rawResponse, flatResponse);\n };\n const updatedArgs = Object.assign(Object.assign({}, args), { options: Object.assign(Object.assign({}, args.options), { onResponse: callback }) });\n const flatResponse = await directSendOperation(updatedArgs, spec);\n return {\n flatResponse,\n rawResponse: {\n statusCode: currentRawResponse.status,\n body: currentRawResponse.parsedBody,\n headers: currentRawResponse.headers.toJSON(),\n },\n };\n };\n const lro = (0, lroImpl_js_1.createLroSpec)({\n sendOperationFn,\n args: { scope, parameters, options },\n spec: createOrUpdateAtScopeOperationSpec,\n });\n const poller = await (0, core_lro_1.createHttpPoller)(lro, {\n restoreFrom: options === null || options === void 0 ? void 0 : options.resumeFrom,\n intervalInMs: options === null || options === void 0 ? void 0 : options.updateIntervalInMs,\n });\n await poller.poll();\n return poller;\n }\n /**\n * This operation allows adding or replacing the entire set of tags on the specified resource or\n * subscription. The specified entity can have a maximum of 50 tags.\n * @param scope The resource scope.\n * @param parameters Wrapper resource for tags API requests and responses.\n * @param options The options parameters.\n */\n async beginCreateOrUpdateAtScopeAndWait(scope, parameters, options) {\n const poller = await this.beginCreateOrUpdateAtScope(scope, parameters, options);\n return poller.pollUntilDone();\n }\n /**\n * This operation allows replacing, merging or selectively deleting tags on the specified resource or\n * subscription. The specified entity can have a maximum of 50 tags at the end of the operation. The\n * 'replace' option replaces the entire set of existing tags with a new set. The 'merge' option allows\n * adding tags with new names and updating the values of tags with existing names. The 'delete' option\n * allows selectively deleting tags based on given names or name/value pairs.\n * @param scope The resource scope.\n * @param parameters Wrapper resource for tags patch API request only.\n * @param options The options parameters.\n */\n async beginUpdateAtScope(scope, parameters, options) {\n const directSendOperation = async (args, spec) => {\n return this.client.sendOperationRequest(args, spec);\n };\n const sendOperationFn = async (args, spec) => {\n var _a;\n let currentRawResponse = undefined;\n const providedCallback = (_a = args.options) === null || _a === void 0 ? void 0 : _a.onResponse;\n const callback = (rawResponse, flatResponse) => {\n currentRawResponse = rawResponse;\n providedCallback === null || providedCallback === void 0 ? void 0 : providedCallback(rawResponse, flatResponse);\n };\n const updatedArgs = Object.assign(Object.assign({}, args), { options: Object.assign(Object.assign({}, args.options), { onResponse: callback }) });\n const flatResponse = await directSendOperation(updatedArgs, spec);\n return {\n flatResponse,\n rawResponse: {\n statusCode: currentRawResponse.status,\n body: currentRawResponse.parsedBody,\n headers: currentRawResponse.headers.toJSON(),\n },\n };\n };\n const lro = (0, lroImpl_js_1.createLroSpec)({\n sendOperationFn,\n args: { scope, parameters, options },\n spec: updateAtScopeOperationSpec,\n });\n const poller = await (0, core_lro_1.createHttpPoller)(lro, {\n restoreFrom: options === null || options === void 0 ? void 0 : options.resumeFrom,\n intervalInMs: options === null || options === void 0 ? void 0 : options.updateIntervalInMs,\n });\n await poller.poll();\n return poller;\n }\n /**\n * This operation allows replacing, merging or selectively deleting tags on the specified resource or\n * subscription. The specified entity can have a maximum of 50 tags at the end of the operation. The\n * 'replace' option replaces the entire set of existing tags with a new set. The 'merge' option allows\n * adding tags with new names and updating the values of tags with existing names. The 'delete' option\n * allows selectively deleting tags based on given names or name/value pairs.\n * @param scope The resource scope.\n * @param parameters Wrapper resource for tags patch API request only.\n * @param options The options parameters.\n */\n async beginUpdateAtScopeAndWait(scope, parameters, options) {\n const poller = await this.beginUpdateAtScope(scope, parameters, options);\n return poller.pollUntilDone();\n }\n /**\n * Gets the entire set of tags on a resource or subscription.\n * @param scope The resource scope.\n * @param options The options parameters.\n */\n getAtScope(scope, options) {\n return this.client.sendOperationRequest({ scope, options }, getAtScopeOperationSpec);\n }\n /**\n * Deletes the entire set of tags on a resource or subscription.\n * @param scope The resource scope.\n * @param options The options parameters.\n */\n async beginDeleteAtScope(scope, options) {\n const directSendOperation = async (args, spec) => {\n return this.client.sendOperationRequest(args, spec);\n };\n const sendOperationFn = async (args, spec) => {\n var _a;\n let currentRawResponse = undefined;\n const providedCallback = (_a = args.options) === null || _a === void 0 ? void 0 : _a.onResponse;\n const callback = (rawResponse, flatResponse) => {\n currentRawResponse = rawResponse;\n providedCallback === null || providedCallback === void 0 ? void 0 : providedCallback(rawResponse, flatResponse);\n };\n const updatedArgs = Object.assign(Object.assign({}, args), { options: Object.assign(Object.assign({}, args.options), { onResponse: callback }) });\n const flatResponse = await directSendOperation(updatedArgs, spec);\n return {\n flatResponse,\n rawResponse: {\n statusCode: currentRawResponse.status,\n body: currentRawResponse.parsedBody,\n headers: currentRawResponse.headers.toJSON(),\n },\n };\n };\n const lro = (0, lroImpl_js_1.createLroSpec)({\n sendOperationFn,\n args: { scope, options },\n spec: deleteAtScopeOperationSpec,\n });\n const poller = await (0, core_lro_1.createHttpPoller)(lro, {\n restoreFrom: options === null || options === void 0 ? void 0 : options.resumeFrom,\n intervalInMs: options === null || options === void 0 ? void 0 : options.updateIntervalInMs,\n });\n await poller.poll();\n return poller;\n }\n /**\n * Deletes the entire set of tags on a resource or subscription.\n * @param scope The resource scope.\n * @param options The options parameters.\n */\n async beginDeleteAtScopeAndWait(scope, options) {\n const poller = await this.beginDeleteAtScope(scope, options);\n return poller.pollUntilDone();\n }\n /**\n * ListNext\n * @param nextLink The nextLink from the previous successful call to the List method.\n * @param options The options parameters.\n */\n _listNext(nextLink, options) {\n return this.client.sendOperationRequest({ nextLink, options }, listNextOperationSpec);\n }\n}\nexports.TagsOperationsImpl = TagsOperationsImpl;\n// Operation Specifications\nconst serializer = coreClient.createSerializer(Mappers, /* isXml */ false);\nconst deleteValueOperationSpec = {\n path: \"/subscriptions/{subscriptionId}/tagNames/{tagName}/tagValues/{tagValue}\",\n httpMethod: \"DELETE\",\n responses: {\n 200: {},\n 204: {},\n default: {\n bodyMapper: Mappers.CloudError,\n },\n },\n queryParameters: [Parameters.apiVersion],\n urlParameters: [\n Parameters.$host,\n Parameters.subscriptionId,\n Parameters.tagName,\n Parameters.tagValue,\n ],\n headerParameters: [Parameters.accept],\n serializer,\n};\nconst createOrUpdateValueOperationSpec = {\n path: \"/subscriptions/{subscriptionId}/tagNames/{tagName}/tagValues/{tagValue}\",\n httpMethod: \"PUT\",\n responses: {\n 200: {\n bodyMapper: Mappers.TagValue,\n },\n 201: {\n bodyMapper: Mappers.TagValue,\n },\n default: {\n bodyMapper: Mappers.CloudError,\n },\n },\n queryParameters: [Parameters.apiVersion],\n urlParameters: [\n Parameters.$host,\n Parameters.subscriptionId,\n Parameters.tagName,\n Parameters.tagValue,\n ],\n headerParameters: [Parameters.accept],\n serializer,\n};\nconst createOrUpdateOperationSpec = {\n path: \"/subscriptions/{subscriptionId}/tagNames/{tagName}\",\n httpMethod: \"PUT\",\n responses: {\n 200: {\n bodyMapper: Mappers.TagDetails,\n },\n 201: {\n bodyMapper: Mappers.TagDetails,\n },\n default: {\n bodyMapper: Mappers.CloudError,\n },\n },\n queryParameters: [Parameters.apiVersion],\n urlParameters: [\n Parameters.$host,\n Parameters.subscriptionId,\n Parameters.tagName,\n ],\n headerParameters: [Parameters.accept],\n serializer,\n};\nconst deleteOperationSpec = {\n path: \"/subscriptions/{subscriptionId}/tagNames/{tagName}\",\n httpMethod: \"DELETE\",\n responses: {\n 200: {},\n 204: {},\n default: {\n bodyMapper: Mappers.CloudError,\n },\n },\n queryParameters: [Parameters.apiVersion],\n urlParameters: [\n Parameters.$host,\n Parameters.subscriptionId,\n Parameters.tagName,\n ],\n headerParameters: [Parameters.accept],\n serializer,\n};\nconst listOperationSpec = {\n path: \"/subscriptions/{subscriptionId}/tagNames\",\n httpMethod: \"GET\",\n responses: {\n 200: {\n bodyMapper: Mappers.TagsListResult,\n },\n default: {\n bodyMapper: Mappers.CloudError,\n },\n },\n queryParameters: [Parameters.apiVersion],\n urlParameters: [Parameters.$host, Parameters.subscriptionId],\n headerParameters: [Parameters.accept],\n serializer,\n};\nconst createOrUpdateAtScopeOperationSpec = {\n path: \"/{scope}/providers/Microsoft.Resources/tags/default\",\n httpMethod: \"PUT\",\n responses: {\n 200: {\n bodyMapper: Mappers.TagsResource,\n },\n 201: {\n bodyMapper: Mappers.TagsResource,\n },\n 202: {\n bodyMapper: Mappers.TagsResource,\n },\n 204: {\n bodyMapper: Mappers.TagsResource,\n },\n default: {\n bodyMapper: Mappers.CloudError,\n },\n },\n requestBody: Parameters.parameters9,\n queryParameters: [Parameters.apiVersion],\n urlParameters: [Parameters.$host, Parameters.scope],\n headerParameters: [Parameters.accept, Parameters.contentType],\n mediaType: \"json\",\n serializer,\n};\nconst updateAtScopeOperationSpec = {\n path: \"/{scope}/providers/Microsoft.Resources/tags/default\",\n httpMethod: \"PATCH\",\n responses: {\n 200: {\n bodyMapper: Mappers.TagsResource,\n },\n 201: {\n bodyMapper: Mappers.TagsResource,\n },\n 202: {\n bodyMapper: Mappers.TagsResource,\n },\n 204: {\n bodyMapper: Mappers.TagsResource,\n },\n default: {\n bodyMapper: Mappers.CloudError,\n },\n },\n requestBody: Parameters.parameters10,\n queryParameters: [Parameters.apiVersion],\n urlParameters: [Parameters.$host, Parameters.scope],\n headerParameters: [Parameters.accept, Parameters.contentType],\n mediaType: \"json\",\n serializer,\n};\nconst getAtScopeOperationSpec = {\n path: \"/{scope}/providers/Microsoft.Resources/tags/default\",\n httpMethod: \"GET\",\n responses: {\n 200: {\n bodyMapper: Mappers.TagsResource,\n },\n default: {\n bodyMapper: Mappers.CloudError,\n },\n },\n queryParameters: [Parameters.apiVersion],\n urlParameters: [Parameters.$host, Parameters.scope],\n headerParameters: [Parameters.accept],\n serializer,\n};\nconst deleteAtScopeOperationSpec = {\n path: \"/{scope}/providers/Microsoft.Resources/tags/default\",\n httpMethod: \"DELETE\",\n responses: {\n 200: {},\n 201: {},\n 202: {},\n 204: {},\n default: {\n bodyMapper: Mappers.CloudError,\n },\n },\n queryParameters: [Parameters.apiVersion],\n urlParameters: [Parameters.$host, Parameters.scope],\n headerParameters: [Parameters.accept],\n serializer,\n};\nconst listNextOperationSpec = {\n path: \"{nextLink}\",\n httpMethod: \"GET\",\n responses: {\n 200: {\n bodyMapper: Mappers.TagsListResult,\n },\n default: {\n bodyMapper: Mappers.CloudError,\n },\n },\n urlParameters: [\n Parameters.$host,\n Parameters.nextLink,\n Parameters.subscriptionId,\n ],\n headerParameters: [Parameters.accept],\n serializer,\n};\n//# sourceMappingURL=tagsOperations.js.map","\"use strict\";\n/*\n * Copyright (c) Microsoft Corporation.\n * Licensed under the MIT License.\n *\n * Code generated by Microsoft (R) AutoRest Code Generator.\n * Changes may cause incorrect behavior and will be lost if the code is regenerated.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.DeploymentOperationsImpl = void 0;\nconst tslib_1 = require(\"tslib\");\nconst pagingHelper_js_1 = require(\"../pagingHelper.js\");\nconst coreClient = tslib_1.__importStar(require(\"@azure/core-client\"));\nconst Mappers = tslib_1.__importStar(require(\"../models/mappers.js\"));\nconst Parameters = tslib_1.__importStar(require(\"../models/parameters.js\"));\n/// \n/** Class containing DeploymentOperations operations. */\nclass DeploymentOperationsImpl {\n /**\n * Initialize a new instance of the class DeploymentOperations class.\n * @param client Reference to the service client\n */\n constructor(client) {\n this.client = client;\n }\n /**\n * Gets all deployments operations for a deployment.\n * @param scope The resource scope.\n * @param deploymentName The name of the deployment.\n * @param options The options parameters.\n */\n listAtScope(scope, deploymentName, options) {\n const iter = this.listAtScopePagingAll(scope, deploymentName, options);\n return {\n next() {\n return iter.next();\n },\n [Symbol.asyncIterator]() {\n return this;\n },\n byPage: (settings) => {\n if (settings === null || settings === void 0 ? void 0 : settings.maxPageSize) {\n throw new Error(\"maxPageSize is not supported by this operation.\");\n }\n return this.listAtScopePagingPage(scope, deploymentName, options, settings);\n },\n };\n }\n listAtScopePagingPage(scope, deploymentName, options, settings) {\n return tslib_1.__asyncGenerator(this, arguments, function* listAtScopePagingPage_1() {\n let result;\n let continuationToken = settings === null || settings === void 0 ? void 0 : settings.continuationToken;\n if (!continuationToken) {\n result = yield tslib_1.__await(this._listAtScope(scope, deploymentName, options));\n let page = result.value || [];\n continuationToken = result.nextLink;\n (0, pagingHelper_js_1.setContinuationToken)(page, continuationToken);\n yield yield tslib_1.__await(page);\n }\n while (continuationToken) {\n result = yield tslib_1.__await(this._listAtScopeNext(scope, deploymentName, continuationToken, options));\n continuationToken = result.nextLink;\n let page = result.value || [];\n (0, pagingHelper_js_1.setContinuationToken)(page, continuationToken);\n yield yield tslib_1.__await(page);\n }\n });\n }\n listAtScopePagingAll(scope, deploymentName, options) {\n return tslib_1.__asyncGenerator(this, arguments, function* listAtScopePagingAll_1() {\n var _a, e_1, _b, _c;\n try {\n for (var _d = true, _e = tslib_1.__asyncValues(this.listAtScopePagingPage(scope, deploymentName, options)), _f; _f = yield tslib_1.__await(_e.next()), _a = _f.done, !_a; _d = true) {\n _c = _f.value;\n _d = false;\n const page = _c;\n yield tslib_1.__await(yield* tslib_1.__asyncDelegator(tslib_1.__asyncValues(page)));\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (!_d && !_a && (_b = _e.return)) yield tslib_1.__await(_b.call(_e));\n }\n finally { if (e_1) throw e_1.error; }\n }\n });\n }\n /**\n * Gets all deployments operations for a deployment.\n * @param deploymentName The name of the deployment.\n * @param options The options parameters.\n */\n listAtTenantScope(deploymentName, options) {\n const iter = this.listAtTenantScopePagingAll(deploymentName, options);\n return {\n next() {\n return iter.next();\n },\n [Symbol.asyncIterator]() {\n return this;\n },\n byPage: (settings) => {\n if (settings === null || settings === void 0 ? void 0 : settings.maxPageSize) {\n throw new Error(\"maxPageSize is not supported by this operation.\");\n }\n return this.listAtTenantScopePagingPage(deploymentName, options, settings);\n },\n };\n }\n listAtTenantScopePagingPage(deploymentName, options, settings) {\n return tslib_1.__asyncGenerator(this, arguments, function* listAtTenantScopePagingPage_1() {\n let result;\n let continuationToken = settings === null || settings === void 0 ? void 0 : settings.continuationToken;\n if (!continuationToken) {\n result = yield tslib_1.__await(this._listAtTenantScope(deploymentName, options));\n let page = result.value || [];\n continuationToken = result.nextLink;\n (0, pagingHelper_js_1.setContinuationToken)(page, continuationToken);\n yield yield tslib_1.__await(page);\n }\n while (continuationToken) {\n result = yield tslib_1.__await(this._listAtTenantScopeNext(deploymentName, continuationToken, options));\n continuationToken = result.nextLink;\n let page = result.value || [];\n (0, pagingHelper_js_1.setContinuationToken)(page, continuationToken);\n yield yield tslib_1.__await(page);\n }\n });\n }\n listAtTenantScopePagingAll(deploymentName, options) {\n return tslib_1.__asyncGenerator(this, arguments, function* listAtTenantScopePagingAll_1() {\n var _a, e_2, _b, _c;\n try {\n for (var _d = true, _e = tslib_1.__asyncValues(this.listAtTenantScopePagingPage(deploymentName, options)), _f; _f = yield tslib_1.__await(_e.next()), _a = _f.done, !_a; _d = true) {\n _c = _f.value;\n _d = false;\n const page = _c;\n yield tslib_1.__await(yield* tslib_1.__asyncDelegator(tslib_1.__asyncValues(page)));\n }\n }\n catch (e_2_1) { e_2 = { error: e_2_1 }; }\n finally {\n try {\n if (!_d && !_a && (_b = _e.return)) yield tslib_1.__await(_b.call(_e));\n }\n finally { if (e_2) throw e_2.error; }\n }\n });\n }\n /**\n * Gets all deployments operations for a deployment.\n * @param groupId The management group ID.\n * @param deploymentName The name of the deployment.\n * @param options The options parameters.\n */\n listAtManagementGroupScope(groupId, deploymentName, options) {\n const iter = this.listAtManagementGroupScopePagingAll(groupId, deploymentName, options);\n return {\n next() {\n return iter.next();\n },\n [Symbol.asyncIterator]() {\n return this;\n },\n byPage: (settings) => {\n if (settings === null || settings === void 0 ? void 0 : settings.maxPageSize) {\n throw new Error(\"maxPageSize is not supported by this operation.\");\n }\n return this.listAtManagementGroupScopePagingPage(groupId, deploymentName, options, settings);\n },\n };\n }\n listAtManagementGroupScopePagingPage(groupId, deploymentName, options, settings) {\n return tslib_1.__asyncGenerator(this, arguments, function* listAtManagementGroupScopePagingPage_1() {\n let result;\n let continuationToken = settings === null || settings === void 0 ? void 0 : settings.continuationToken;\n if (!continuationToken) {\n result = yield tslib_1.__await(this._listAtManagementGroupScope(groupId, deploymentName, options));\n let page = result.value || [];\n continuationToken = result.nextLink;\n (0, pagingHelper_js_1.setContinuationToken)(page, continuationToken);\n yield yield tslib_1.__await(page);\n }\n while (continuationToken) {\n result = yield tslib_1.__await(this._listAtManagementGroupScopeNext(groupId, deploymentName, continuationToken, options));\n continuationToken = result.nextLink;\n let page = result.value || [];\n (0, pagingHelper_js_1.setContinuationToken)(page, continuationToken);\n yield yield tslib_1.__await(page);\n }\n });\n }\n listAtManagementGroupScopePagingAll(groupId, deploymentName, options) {\n return tslib_1.__asyncGenerator(this, arguments, function* listAtManagementGroupScopePagingAll_1() {\n var _a, e_3, _b, _c;\n try {\n for (var _d = true, _e = tslib_1.__asyncValues(this.listAtManagementGroupScopePagingPage(groupId, deploymentName, options)), _f; _f = yield tslib_1.__await(_e.next()), _a = _f.done, !_a; _d = true) {\n _c = _f.value;\n _d = false;\n const page = _c;\n yield tslib_1.__await(yield* tslib_1.__asyncDelegator(tslib_1.__asyncValues(page)));\n }\n }\n catch (e_3_1) { e_3 = { error: e_3_1 }; }\n finally {\n try {\n if (!_d && !_a && (_b = _e.return)) yield tslib_1.__await(_b.call(_e));\n }\n finally { if (e_3) throw e_3.error; }\n }\n });\n }\n /**\n * Gets all deployments operations for a deployment.\n * @param deploymentName The name of the deployment.\n * @param options The options parameters.\n */\n listAtSubscriptionScope(deploymentName, options) {\n const iter = this.listAtSubscriptionScopePagingAll(deploymentName, options);\n return {\n next() {\n return iter.next();\n },\n [Symbol.asyncIterator]() {\n return this;\n },\n byPage: (settings) => {\n if (settings === null || settings === void 0 ? void 0 : settings.maxPageSize) {\n throw new Error(\"maxPageSize is not supported by this operation.\");\n }\n return this.listAtSubscriptionScopePagingPage(deploymentName, options, settings);\n },\n };\n }\n listAtSubscriptionScopePagingPage(deploymentName, options, settings) {\n return tslib_1.__asyncGenerator(this, arguments, function* listAtSubscriptionScopePagingPage_1() {\n let result;\n let continuationToken = settings === null || settings === void 0 ? void 0 : settings.continuationToken;\n if (!continuationToken) {\n result = yield tslib_1.__await(this._listAtSubscriptionScope(deploymentName, options));\n let page = result.value || [];\n continuationToken = result.nextLink;\n (0, pagingHelper_js_1.setContinuationToken)(page, continuationToken);\n yield yield tslib_1.__await(page);\n }\n while (continuationToken) {\n result = yield tslib_1.__await(this._listAtSubscriptionScopeNext(deploymentName, continuationToken, options));\n continuationToken = result.nextLink;\n let page = result.value || [];\n (0, pagingHelper_js_1.setContinuationToken)(page, continuationToken);\n yield yield tslib_1.__await(page);\n }\n });\n }\n listAtSubscriptionScopePagingAll(deploymentName, options) {\n return tslib_1.__asyncGenerator(this, arguments, function* listAtSubscriptionScopePagingAll_1() {\n var _a, e_4, _b, _c;\n try {\n for (var _d = true, _e = tslib_1.__asyncValues(this.listAtSubscriptionScopePagingPage(deploymentName, options)), _f; _f = yield tslib_1.__await(_e.next()), _a = _f.done, !_a; _d = true) {\n _c = _f.value;\n _d = false;\n const page = _c;\n yield tslib_1.__await(yield* tslib_1.__asyncDelegator(tslib_1.__asyncValues(page)));\n }\n }\n catch (e_4_1) { e_4 = { error: e_4_1 }; }\n finally {\n try {\n if (!_d && !_a && (_b = _e.return)) yield tslib_1.__await(_b.call(_e));\n }\n finally { if (e_4) throw e_4.error; }\n }\n });\n }\n /**\n * Gets all deployments operations for a deployment.\n * @param resourceGroupName The name of the resource group. The name is case insensitive.\n * @param deploymentName The name of the deployment.\n * @param options The options parameters.\n */\n list(resourceGroupName, deploymentName, options) {\n const iter = this.listPagingAll(resourceGroupName, deploymentName, options);\n return {\n next() {\n return iter.next();\n },\n [Symbol.asyncIterator]() {\n return this;\n },\n byPage: (settings) => {\n if (settings === null || settings === void 0 ? void 0 : settings.maxPageSize) {\n throw new Error(\"maxPageSize is not supported by this operation.\");\n }\n return this.listPagingPage(resourceGroupName, deploymentName, options, settings);\n },\n };\n }\n listPagingPage(resourceGroupName, deploymentName, options, settings) {\n return tslib_1.__asyncGenerator(this, arguments, function* listPagingPage_1() {\n let result;\n let continuationToken = settings === null || settings === void 0 ? void 0 : settings.continuationToken;\n if (!continuationToken) {\n result = yield tslib_1.__await(this._list(resourceGroupName, deploymentName, options));\n let page = result.value || [];\n continuationToken = result.nextLink;\n (0, pagingHelper_js_1.setContinuationToken)(page, continuationToken);\n yield yield tslib_1.__await(page);\n }\n while (continuationToken) {\n result = yield tslib_1.__await(this._listNext(resourceGroupName, deploymentName, continuationToken, options));\n continuationToken = result.nextLink;\n let page = result.value || [];\n (0, pagingHelper_js_1.setContinuationToken)(page, continuationToken);\n yield yield tslib_1.__await(page);\n }\n });\n }\n listPagingAll(resourceGroupName, deploymentName, options) {\n return tslib_1.__asyncGenerator(this, arguments, function* listPagingAll_1() {\n var _a, e_5, _b, _c;\n try {\n for (var _d = true, _e = tslib_1.__asyncValues(this.listPagingPage(resourceGroupName, deploymentName, options)), _f; _f = yield tslib_1.__await(_e.next()), _a = _f.done, !_a; _d = true) {\n _c = _f.value;\n _d = false;\n const page = _c;\n yield tslib_1.__await(yield* tslib_1.__asyncDelegator(tslib_1.__asyncValues(page)));\n }\n }\n catch (e_5_1) { e_5 = { error: e_5_1 }; }\n finally {\n try {\n if (!_d && !_a && (_b = _e.return)) yield tslib_1.__await(_b.call(_e));\n }\n finally { if (e_5) throw e_5.error; }\n }\n });\n }\n /**\n * Gets a deployments operation.\n * @param scope The resource scope.\n * @param deploymentName The name of the deployment.\n * @param operationId The ID of the operation to get.\n * @param options The options parameters.\n */\n getAtScope(scope, deploymentName, operationId, options) {\n return this.client.sendOperationRequest({ scope, deploymentName, operationId, options }, getAtScopeOperationSpec);\n }\n /**\n * Gets all deployments operations for a deployment.\n * @param scope The resource scope.\n * @param deploymentName The name of the deployment.\n * @param options The options parameters.\n */\n _listAtScope(scope, deploymentName, options) {\n return this.client.sendOperationRequest({ scope, deploymentName, options }, listAtScopeOperationSpec);\n }\n /**\n * Gets a deployments operation.\n * @param deploymentName The name of the deployment.\n * @param operationId The ID of the operation to get.\n * @param options The options parameters.\n */\n getAtTenantScope(deploymentName, operationId, options) {\n return this.client.sendOperationRequest({ deploymentName, operationId, options }, getAtTenantScopeOperationSpec);\n }\n /**\n * Gets all deployments operations for a deployment.\n * @param deploymentName The name of the deployment.\n * @param options The options parameters.\n */\n _listAtTenantScope(deploymentName, options) {\n return this.client.sendOperationRequest({ deploymentName, options }, listAtTenantScopeOperationSpec);\n }\n /**\n * Gets a deployments operation.\n * @param groupId The management group ID.\n * @param deploymentName The name of the deployment.\n * @param operationId The ID of the operation to get.\n * @param options The options parameters.\n */\n getAtManagementGroupScope(groupId, deploymentName, operationId, options) {\n return this.client.sendOperationRequest({ groupId, deploymentName, operationId, options }, getAtManagementGroupScopeOperationSpec);\n }\n /**\n * Gets all deployments operations for a deployment.\n * @param groupId The management group ID.\n * @param deploymentName The name of the deployment.\n * @param options The options parameters.\n */\n _listAtManagementGroupScope(groupId, deploymentName, options) {\n return this.client.sendOperationRequest({ groupId, deploymentName, options }, listAtManagementGroupScopeOperationSpec);\n }\n /**\n * Gets a deployments operation.\n * @param deploymentName The name of the deployment.\n * @param operationId The ID of the operation to get.\n * @param options The options parameters.\n */\n getAtSubscriptionScope(deploymentName, operationId, options) {\n return this.client.sendOperationRequest({ deploymentName, operationId, options }, getAtSubscriptionScopeOperationSpec);\n }\n /**\n * Gets all deployments operations for a deployment.\n * @param deploymentName The name of the deployment.\n * @param options The options parameters.\n */\n _listAtSubscriptionScope(deploymentName, options) {\n return this.client.sendOperationRequest({ deploymentName, options }, listAtSubscriptionScopeOperationSpec);\n }\n /**\n * Gets a deployments operation.\n * @param resourceGroupName The name of the resource group. The name is case insensitive.\n * @param deploymentName The name of the deployment.\n * @param operationId The ID of the operation to get.\n * @param options The options parameters.\n */\n get(resourceGroupName, deploymentName, operationId, options) {\n return this.client.sendOperationRequest({ resourceGroupName, deploymentName, operationId, options }, getOperationSpec);\n }\n /**\n * Gets all deployments operations for a deployment.\n * @param resourceGroupName The name of the resource group. The name is case insensitive.\n * @param deploymentName The name of the deployment.\n * @param options The options parameters.\n */\n _list(resourceGroupName, deploymentName, options) {\n return this.client.sendOperationRequest({ resourceGroupName, deploymentName, options }, listOperationSpec);\n }\n /**\n * ListAtScopeNext\n * @param scope The resource scope.\n * @param deploymentName The name of the deployment.\n * @param nextLink The nextLink from the previous successful call to the ListAtScope method.\n * @param options The options parameters.\n */\n _listAtScopeNext(scope, deploymentName, nextLink, options) {\n return this.client.sendOperationRequest({ scope, deploymentName, nextLink, options }, listAtScopeNextOperationSpec);\n }\n /**\n * ListAtTenantScopeNext\n * @param deploymentName The name of the deployment.\n * @param nextLink The nextLink from the previous successful call to the ListAtTenantScope method.\n * @param options The options parameters.\n */\n _listAtTenantScopeNext(deploymentName, nextLink, options) {\n return this.client.sendOperationRequest({ deploymentName, nextLink, options }, listAtTenantScopeNextOperationSpec);\n }\n /**\n * ListAtManagementGroupScopeNext\n * @param groupId The management group ID.\n * @param deploymentName The name of the deployment.\n * @param nextLink The nextLink from the previous successful call to the ListAtManagementGroupScope\n * method.\n * @param options The options parameters.\n */\n _listAtManagementGroupScopeNext(groupId, deploymentName, nextLink, options) {\n return this.client.sendOperationRequest({ groupId, deploymentName, nextLink, options }, listAtManagementGroupScopeNextOperationSpec);\n }\n /**\n * ListAtSubscriptionScopeNext\n * @param deploymentName The name of the deployment.\n * @param nextLink The nextLink from the previous successful call to the ListAtSubscriptionScope\n * method.\n * @param options The options parameters.\n */\n _listAtSubscriptionScopeNext(deploymentName, nextLink, options) {\n return this.client.sendOperationRequest({ deploymentName, nextLink, options }, listAtSubscriptionScopeNextOperationSpec);\n }\n /**\n * ListNext\n * @param resourceGroupName The name of the resource group. The name is case insensitive.\n * @param deploymentName The name of the deployment.\n * @param nextLink The nextLink from the previous successful call to the List method.\n * @param options The options parameters.\n */\n _listNext(resourceGroupName, deploymentName, nextLink, options) {\n return this.client.sendOperationRequest({ resourceGroupName, deploymentName, nextLink, options }, listNextOperationSpec);\n }\n}\nexports.DeploymentOperationsImpl = DeploymentOperationsImpl;\n// Operation Specifications\nconst serializer = coreClient.createSerializer(Mappers, /* isXml */ false);\nconst getAtScopeOperationSpec = {\n path: \"/{scope}/providers/Microsoft.Resources/deployments/{deploymentName}/operations/{operationId}\",\n httpMethod: \"GET\",\n responses: {\n 200: {\n bodyMapper: Mappers.DeploymentOperation,\n },\n default: {\n bodyMapper: Mappers.CloudError,\n },\n },\n queryParameters: [Parameters.apiVersion],\n urlParameters: [\n Parameters.$host,\n Parameters.scope,\n Parameters.deploymentName,\n Parameters.operationId,\n ],\n headerParameters: [Parameters.accept],\n serializer,\n};\nconst listAtScopeOperationSpec = {\n path: \"/{scope}/providers/Microsoft.Resources/deployments/{deploymentName}/operations\",\n httpMethod: \"GET\",\n responses: {\n 200: {\n bodyMapper: Mappers.DeploymentOperationsListResult,\n },\n default: {\n bodyMapper: Mappers.CloudError,\n },\n },\n queryParameters: [Parameters.apiVersion, Parameters.top],\n urlParameters: [\n Parameters.$host,\n Parameters.scope,\n Parameters.deploymentName,\n ],\n headerParameters: [Parameters.accept],\n serializer,\n};\nconst getAtTenantScopeOperationSpec = {\n path: \"/providers/Microsoft.Resources/deployments/{deploymentName}/operations/{operationId}\",\n httpMethod: \"GET\",\n responses: {\n 200: {\n bodyMapper: Mappers.DeploymentOperation,\n },\n default: {\n bodyMapper: Mappers.CloudError,\n },\n },\n queryParameters: [Parameters.apiVersion],\n urlParameters: [\n Parameters.$host,\n Parameters.deploymentName,\n Parameters.operationId,\n ],\n headerParameters: [Parameters.accept],\n serializer,\n};\nconst listAtTenantScopeOperationSpec = {\n path: \"/providers/Microsoft.Resources/deployments/{deploymentName}/operations\",\n httpMethod: \"GET\",\n responses: {\n 200: {\n bodyMapper: Mappers.DeploymentOperationsListResult,\n },\n default: {\n bodyMapper: Mappers.CloudError,\n },\n },\n queryParameters: [Parameters.apiVersion, Parameters.top],\n urlParameters: [Parameters.$host, Parameters.deploymentName],\n headerParameters: [Parameters.accept],\n serializer,\n};\nconst getAtManagementGroupScopeOperationSpec = {\n path: \"/providers/Microsoft.Management/managementGroups/{groupId}/providers/Microsoft.Resources/deployments/{deploymentName}/operations/{operationId}\",\n httpMethod: \"GET\",\n responses: {\n 200: {\n bodyMapper: Mappers.DeploymentOperation,\n },\n default: {\n bodyMapper: Mappers.CloudError,\n },\n },\n queryParameters: [Parameters.apiVersion],\n urlParameters: [\n Parameters.$host,\n Parameters.deploymentName,\n Parameters.groupId,\n Parameters.operationId,\n ],\n headerParameters: [Parameters.accept],\n serializer,\n};\nconst listAtManagementGroupScopeOperationSpec = {\n path: \"/providers/Microsoft.Management/managementGroups/{groupId}/providers/Microsoft.Resources/deployments/{deploymentName}/operations\",\n httpMethod: \"GET\",\n responses: {\n 200: {\n bodyMapper: Mappers.DeploymentOperationsListResult,\n },\n default: {\n bodyMapper: Mappers.CloudError,\n },\n },\n queryParameters: [Parameters.apiVersion, Parameters.top],\n urlParameters: [\n Parameters.$host,\n Parameters.deploymentName,\n Parameters.groupId,\n ],\n headerParameters: [Parameters.accept],\n serializer,\n};\nconst getAtSubscriptionScopeOperationSpec = {\n path: \"/subscriptions/{subscriptionId}/providers/Microsoft.Resources/deployments/{deploymentName}/operations/{operationId}\",\n httpMethod: \"GET\",\n responses: {\n 200: {\n bodyMapper: Mappers.DeploymentOperation,\n },\n default: {\n bodyMapper: Mappers.CloudError,\n },\n },\n queryParameters: [Parameters.apiVersion],\n urlParameters: [\n Parameters.$host,\n Parameters.deploymentName,\n Parameters.subscriptionId,\n Parameters.operationId,\n ],\n headerParameters: [Parameters.accept],\n serializer,\n};\nconst listAtSubscriptionScopeOperationSpec = {\n path: \"/subscriptions/{subscriptionId}/providers/Microsoft.Resources/deployments/{deploymentName}/operations\",\n httpMethod: \"GET\",\n responses: {\n 200: {\n bodyMapper: Mappers.DeploymentOperationsListResult,\n },\n default: {\n bodyMapper: Mappers.CloudError,\n },\n },\n queryParameters: [Parameters.apiVersion, Parameters.top],\n urlParameters: [\n Parameters.$host,\n Parameters.deploymentName,\n Parameters.subscriptionId,\n ],\n headerParameters: [Parameters.accept],\n serializer,\n};\nconst getOperationSpec = {\n path: \"/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/deployments/{deploymentName}/operations/{operationId}\",\n httpMethod: \"GET\",\n responses: {\n 200: {\n bodyMapper: Mappers.DeploymentOperation,\n },\n default: {\n bodyMapper: Mappers.CloudError,\n },\n },\n queryParameters: [Parameters.apiVersion],\n urlParameters: [\n Parameters.$host,\n Parameters.deploymentName,\n Parameters.subscriptionId,\n Parameters.resourceGroupName,\n Parameters.operationId,\n ],\n headerParameters: [Parameters.accept],\n serializer,\n};\nconst listOperationSpec = {\n path: \"/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/deployments/{deploymentName}/operations\",\n httpMethod: \"GET\",\n responses: {\n 200: {\n bodyMapper: Mappers.DeploymentOperationsListResult,\n },\n default: {\n bodyMapper: Mappers.CloudError,\n },\n },\n queryParameters: [Parameters.apiVersion, Parameters.top],\n urlParameters: [\n Parameters.$host,\n Parameters.deploymentName,\n Parameters.subscriptionId,\n Parameters.resourceGroupName,\n ],\n headerParameters: [Parameters.accept],\n serializer,\n};\nconst listAtScopeNextOperationSpec = {\n path: \"{nextLink}\",\n httpMethod: \"GET\",\n responses: {\n 200: {\n bodyMapper: Mappers.DeploymentOperationsListResult,\n },\n default: {\n bodyMapper: Mappers.CloudError,\n },\n },\n urlParameters: [\n Parameters.$host,\n Parameters.nextLink,\n Parameters.scope,\n Parameters.deploymentName,\n ],\n headerParameters: [Parameters.accept],\n serializer,\n};\nconst listAtTenantScopeNextOperationSpec = {\n path: \"{nextLink}\",\n httpMethod: \"GET\",\n responses: {\n 200: {\n bodyMapper: Mappers.DeploymentOperationsListResult,\n },\n default: {\n bodyMapper: Mappers.CloudError,\n },\n },\n urlParameters: [\n Parameters.$host,\n Parameters.nextLink,\n Parameters.deploymentName,\n ],\n headerParameters: [Parameters.accept],\n serializer,\n};\nconst listAtManagementGroupScopeNextOperationSpec = {\n path: \"{nextLink}\",\n httpMethod: \"GET\",\n responses: {\n 200: {\n bodyMapper: Mappers.DeploymentOperationsListResult,\n },\n default: {\n bodyMapper: Mappers.CloudError,\n },\n },\n urlParameters: [\n Parameters.$host,\n Parameters.nextLink,\n Parameters.deploymentName,\n Parameters.groupId,\n ],\n headerParameters: [Parameters.accept],\n serializer,\n};\nconst listAtSubscriptionScopeNextOperationSpec = {\n path: \"{nextLink}\",\n httpMethod: \"GET\",\n responses: {\n 200: {\n bodyMapper: Mappers.DeploymentOperationsListResult,\n },\n default: {\n bodyMapper: Mappers.CloudError,\n },\n },\n urlParameters: [\n Parameters.$host,\n Parameters.nextLink,\n Parameters.deploymentName,\n Parameters.subscriptionId,\n ],\n headerParameters: [Parameters.accept],\n serializer,\n};\nconst listNextOperationSpec = {\n path: \"{nextLink}\",\n httpMethod: \"GET\",\n responses: {\n 200: {\n bodyMapper: Mappers.DeploymentOperationsListResult,\n },\n default: {\n bodyMapper: Mappers.CloudError,\n },\n },\n urlParameters: [\n Parameters.$host,\n Parameters.nextLink,\n Parameters.deploymentName,\n Parameters.subscriptionId,\n Parameters.resourceGroupName,\n ],\n headerParameters: [Parameters.accept],\n serializer,\n};\n//# sourceMappingURL=deploymentOperations.js.map","\"use strict\";\n/*\n * Copyright (c) Microsoft Corporation.\n * Licensed under the MIT License.\n *\n * Code generated by Microsoft (R) AutoRest Code Generator.\n * Changes may cause incorrect behavior and will be lost if the code is regenerated.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst tslib_1 = require(\"tslib\");\ntslib_1.__exportStar(require(\"./operations.js\"), exports);\ntslib_1.__exportStar(require(\"./deployments.js\"), exports);\ntslib_1.__exportStar(require(\"./providers.js\"), exports);\ntslib_1.__exportStar(require(\"./providerResourceTypes.js\"), exports);\ntslib_1.__exportStar(require(\"./resources.js\"), exports);\ntslib_1.__exportStar(require(\"./resourceGroups.js\"), exports);\ntslib_1.__exportStar(require(\"./tagsOperations.js\"), exports);\ntslib_1.__exportStar(require(\"./deploymentOperations.js\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\n/*\n * Copyright (c) Microsoft Corporation.\n * Licensed under the MIT License.\n *\n * Code generated by Microsoft (R) AutoRest Code Generator.\n * Changes may cause incorrect behavior and will be lost if the code is regenerated.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ResourceManagementClient = void 0;\nconst tslib_1 = require(\"tslib\");\nconst coreClient = tslib_1.__importStar(require(\"@azure/core-client\"));\nconst coreRestPipeline = tslib_1.__importStar(require(\"@azure/core-rest-pipeline\"));\nconst index_js_1 = require(\"./operations/index.js\");\nclass ResourceManagementClient extends coreClient.ServiceClient {\n constructor(credentials, subscriptionIdOrOptions, options) {\n var _a, _b, _c;\n if (credentials === undefined) {\n throw new Error(\"'credentials' cannot be null\");\n }\n let subscriptionId;\n if (typeof subscriptionIdOrOptions === \"string\") {\n subscriptionId = subscriptionIdOrOptions;\n }\n else if (typeof subscriptionIdOrOptions === \"object\") {\n options = subscriptionIdOrOptions;\n }\n // Initializing default values for options\n if (!options) {\n options = {};\n }\n const defaults = {\n requestContentType: \"application/json; charset=utf-8\",\n credential: credentials,\n };\n const packageDetails = `azsdk-js-arm-resources/6.1.0`;\n const userAgentPrefix = options.userAgentOptions && options.userAgentOptions.userAgentPrefix\n ? `${options.userAgentOptions.userAgentPrefix} ${packageDetails}`\n : `${packageDetails}`;\n const optionsWithDefaults = Object.assign(Object.assign(Object.assign({}, defaults), options), { userAgentOptions: {\n userAgentPrefix,\n }, endpoint: (_b = (_a = options.endpoint) !== null && _a !== void 0 ? _a : options.baseUri) !== null && _b !== void 0 ? _b : \"https://management.azure.com\" });\n super(optionsWithDefaults);\n let bearerTokenAuthenticationPolicyFound = false;\n if ((options === null || options === void 0 ? void 0 : options.pipeline) && options.pipeline.getOrderedPolicies().length > 0) {\n const pipelinePolicies = options.pipeline.getOrderedPolicies();\n bearerTokenAuthenticationPolicyFound = pipelinePolicies.some((pipelinePolicy) => pipelinePolicy.name ===\n coreRestPipeline.bearerTokenAuthenticationPolicyName);\n }\n if (!options ||\n !options.pipeline ||\n options.pipeline.getOrderedPolicies().length == 0 ||\n !bearerTokenAuthenticationPolicyFound) {\n this.pipeline.removePolicy({\n name: coreRestPipeline.bearerTokenAuthenticationPolicyName,\n });\n this.pipeline.addPolicy(coreRestPipeline.bearerTokenAuthenticationPolicy({\n credential: credentials,\n scopes: (_c = optionsWithDefaults.credentialScopes) !== null && _c !== void 0 ? _c : `${optionsWithDefaults.endpoint}/.default`,\n challengeCallbacks: {\n authorizeRequestOnChallenge: coreClient.authorizeRequestOnClaimChallenge,\n },\n }));\n }\n // Parameter assignments\n this.subscriptionId = subscriptionId;\n // Assigning values to Constant parameters\n this.$host = options.$host || \"https://management.azure.com\";\n this.apiVersion = options.apiVersion || \"2025-03-01\";\n this.operations = new index_js_1.OperationsImpl(this);\n this.deployments = new index_js_1.DeploymentsImpl(this);\n this.providers = new index_js_1.ProvidersImpl(this);\n this.providerResourceTypes = new index_js_1.ProviderResourceTypesImpl(this);\n this.resources = new index_js_1.ResourcesImpl(this);\n this.resourceGroups = new index_js_1.ResourceGroupsImpl(this);\n this.tagsOperations = new index_js_1.TagsOperationsImpl(this);\n this.deploymentOperations = new index_js_1.DeploymentOperationsImpl(this);\n this.addCustomApiVersionPolicy(options.apiVersion);\n }\n /** A function that adds a policy that sets the api-version (or equivalent) to reflect the library version. */\n addCustomApiVersionPolicy(apiVersion) {\n if (!apiVersion) {\n return;\n }\n const apiVersionPolicy = {\n name: \"CustomApiVersionPolicy\",\n async sendRequest(request, next) {\n const param = request.url.split(\"?\");\n if (param.length > 1) {\n const newParams = param[1].split(\"&\").map((item) => {\n if (item.indexOf(\"api-version\") > -1) {\n return \"api-version=\" + apiVersion;\n }\n else {\n return item;\n }\n });\n request.url = param[0] + \"?\" + newParams.join(\"&\");\n }\n return next(request);\n },\n };\n this.pipeline.addPolicy(apiVersionPolicy);\n }\n}\nexports.ResourceManagementClient = ResourceManagementClient;\n//# sourceMappingURL=resourceManagementClient.js.map","\"use strict\";\n/*\n * Copyright (c) Microsoft Corporation.\n * Licensed under the MIT License.\n *\n * Code generated by Microsoft (R) AutoRest Code Generator.\n * Changes may cause incorrect behavior and will be lost if the code is regenerated.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\n//# sourceMappingURL=operations.js.map","\"use strict\";\n/*\n * Copyright (c) Microsoft Corporation.\n * Licensed under the MIT License.\n *\n * Code generated by Microsoft (R) AutoRest Code Generator.\n * Changes may cause incorrect behavior and will be lost if the code is regenerated.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\n//# sourceMappingURL=deployments.js.map","\"use strict\";\n/*\n * Copyright (c) Microsoft Corporation.\n * Licensed under the MIT License.\n *\n * Code generated by Microsoft (R) AutoRest Code Generator.\n * Changes may cause incorrect behavior and will be lost if the code is regenerated.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\n//# sourceMappingURL=providers.js.map","\"use strict\";\n/*\n * Copyright (c) Microsoft Corporation.\n * Licensed under the MIT License.\n *\n * Code generated by Microsoft (R) AutoRest Code Generator.\n * Changes may cause incorrect behavior and will be lost if the code is regenerated.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\n//# sourceMappingURL=providerResourceTypes.js.map","\"use strict\";\n/*\n * Copyright (c) Microsoft Corporation.\n * Licensed under the MIT License.\n *\n * Code generated by Microsoft (R) AutoRest Code Generator.\n * Changes may cause incorrect behavior and will be lost if the code is regenerated.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\n//# sourceMappingURL=resources.js.map","\"use strict\";\n/*\n * Copyright (c) Microsoft Corporation.\n * Licensed under the MIT License.\n *\n * Code generated by Microsoft (R) AutoRest Code Generator.\n * Changes may cause incorrect behavior and will be lost if the code is regenerated.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\n//# sourceMappingURL=resourceGroups.js.map","\"use strict\";\n/*\n * Copyright (c) Microsoft Corporation.\n * Licensed under the MIT License.\n *\n * Code generated by Microsoft (R) AutoRest Code Generator.\n * Changes may cause incorrect behavior and will be lost if the code is regenerated.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\n//# sourceMappingURL=tagsOperations.js.map","\"use strict\";\n/*\n * Copyright (c) Microsoft Corporation.\n * Licensed under the MIT License.\n *\n * Code generated by Microsoft (R) AutoRest Code Generator.\n * Changes may cause incorrect behavior and will be lost if the code is regenerated.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\n//# sourceMappingURL=deploymentOperations.js.map","\"use strict\";\n/*\n * Copyright (c) Microsoft Corporation.\n * Licensed under the MIT License.\n *\n * Code generated by Microsoft (R) AutoRest Code Generator.\n * Changes may cause incorrect behavior and will be lost if the code is regenerated.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst tslib_1 = require(\"tslib\");\ntslib_1.__exportStar(require(\"./operations.js\"), exports);\ntslib_1.__exportStar(require(\"./deployments.js\"), exports);\ntslib_1.__exportStar(require(\"./providers.js\"), exports);\ntslib_1.__exportStar(require(\"./providerResourceTypes.js\"), exports);\ntslib_1.__exportStar(require(\"./resources.js\"), exports);\ntslib_1.__exportStar(require(\"./resourceGroups.js\"), exports);\ntslib_1.__exportStar(require(\"./tagsOperations.js\"), exports);\ntslib_1.__exportStar(require(\"./deploymentOperations.js\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\n/*\n * Copyright (c) Microsoft Corporation.\n * Licensed under the MIT License.\n *\n * Code generated by Microsoft (R) AutoRest Code Generator.\n * Changes may cause incorrect behavior and will be lost if the code is regenerated.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ResourceManagementClient = exports.getContinuationToken = void 0;\nconst tslib_1 = require(\"tslib\");\n/// \nvar pagingHelper_js_1 = require(\"./pagingHelper.js\");\nObject.defineProperty(exports, \"getContinuationToken\", { enumerable: true, get: function () { return pagingHelper_js_1.getContinuationToken; } });\ntslib_1.__exportStar(require(\"./models/index.js\"), exports);\nvar resourceManagementClient_js_1 = require(\"./resourceManagementClient.js\");\nObject.defineProperty(exports, \"ResourceManagementClient\", { enumerable: true, get: function () { return resourceManagementClient_js_1.ResourceManagementClient; } });\ntslib_1.__exportStar(require(\"./operationsInterfaces/index.js\"), exports);\n//# sourceMappingURL=index.js.map","'use strict';\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\nvar tslib = require('tslib');\nvar coreClient = require('@azure/core-client');\nvar coreRestPipeline = require('@azure/core-rest-pipeline');\nvar coreLro = require('@azure/core-lro');\n\nfunction _interopNamespaceDefault(e) {\n var n = Object.create(null);\n if (e) {\n Object.keys(e).forEach(function (k) {\n if (k !== 'default') {\n var d = Object.getOwnPropertyDescriptor(e, k);\n Object.defineProperty(n, k, d.get ? d : {\n enumerable: true,\n get: function () { return e[k]; }\n });\n }\n });\n }\n n.default = e;\n return Object.freeze(n);\n}\n\nvar coreClient__namespace = /*#__PURE__*/_interopNamespaceDefault(coreClient);\nvar coreRestPipeline__namespace = /*#__PURE__*/_interopNamespaceDefault(coreRestPipeline);\n\n/*\n * Copyright (c) Microsoft Corporation.\n * Licensed under the MIT License.\n *\n * Code generated by Microsoft (R) AutoRest Code Generator.\n * Changes may cause incorrect behavior and will be lost if the code is regenerated.\n */\nconst pageMap = new WeakMap();\n/**\n * Given the last `.value` produced by the `byPage` iterator,\n * returns a continuation token that can be used to begin paging from\n * that point later.\n * @param page An object from accessing `value` on the IteratorResult from a `byPage` iterator.\n * @returns The continuation token that can be passed into byPage() during future calls.\n */\nfunction getContinuationToken(page) {\n var _a;\n if (typeof page !== \"object\" || page === null) {\n return undefined;\n }\n return (_a = pageMap.get(page)) === null || _a === void 0 ? void 0 : _a.continuationToken;\n}\nfunction setContinuationToken(page, continuationToken) {\n var _a;\n if (typeof page !== \"object\" || page === null || !continuationToken) {\n return;\n }\n const pageInfo = (_a = pageMap.get(page)) !== null && _a !== void 0 ? _a : {};\n pageInfo.continuationToken = continuationToken;\n pageMap.set(page, pageInfo);\n}\n\n/*\n * Copyright (c) Microsoft Corporation.\n * Licensed under the MIT License.\n *\n * Code generated by Microsoft (R) AutoRest Code Generator.\n * Changes may cause incorrect behavior and will be lost if the code is regenerated.\n */\n/** Known values of {@link DeploymentStacksDeleteDetachEnum} that the service accepts. */\nexports.KnownDeploymentStacksDeleteDetachEnum = void 0;\n(function (KnownDeploymentStacksDeleteDetachEnum) {\n /** Delete */\n KnownDeploymentStacksDeleteDetachEnum[\"Delete\"] = \"delete\";\n /** Detach */\n KnownDeploymentStacksDeleteDetachEnum[\"Detach\"] = \"detach\";\n})(exports.KnownDeploymentStacksDeleteDetachEnum || (exports.KnownDeploymentStacksDeleteDetachEnum = {}));\n/** Known values of {@link DenySettingsMode} that the service accepts. */\nexports.KnownDenySettingsMode = void 0;\n(function (KnownDenySettingsMode) {\n /** Authorized users are able to read and modify the resources, but cannot delete. */\n KnownDenySettingsMode[\"DenyDelete\"] = \"denyDelete\";\n /** Authorized users can read from a resource, but cannot modify or delete it. */\n KnownDenySettingsMode[\"DenyWriteAndDelete\"] = \"denyWriteAndDelete\";\n /** No denyAssignments have been applied. */\n KnownDenySettingsMode[\"None\"] = \"none\";\n})(exports.KnownDenySettingsMode || (exports.KnownDenySettingsMode = {}));\n/** Known values of {@link DeploymentStackProvisioningState} that the service accepts. */\nexports.KnownDeploymentStackProvisioningState = void 0;\n(function (KnownDeploymentStackProvisioningState) {\n /** Creating */\n KnownDeploymentStackProvisioningState[\"Creating\"] = \"creating\";\n /** Validating */\n KnownDeploymentStackProvisioningState[\"Validating\"] = \"validating\";\n /** Waiting */\n KnownDeploymentStackProvisioningState[\"Waiting\"] = \"waiting\";\n /** Deploying */\n KnownDeploymentStackProvisioningState[\"Deploying\"] = \"deploying\";\n /** Canceling */\n KnownDeploymentStackProvisioningState[\"Canceling\"] = \"canceling\";\n /** UpdatingDenyAssignments */\n KnownDeploymentStackProvisioningState[\"UpdatingDenyAssignments\"] = \"updatingDenyAssignments\";\n /** DeletingResources */\n KnownDeploymentStackProvisioningState[\"DeletingResources\"] = \"deletingResources\";\n /** Succeeded */\n KnownDeploymentStackProvisioningState[\"Succeeded\"] = \"succeeded\";\n /** Failed */\n KnownDeploymentStackProvisioningState[\"Failed\"] = \"failed\";\n /** Canceled */\n KnownDeploymentStackProvisioningState[\"Canceled\"] = \"canceled\";\n /** Deleting */\n KnownDeploymentStackProvisioningState[\"Deleting\"] = \"deleting\";\n})(exports.KnownDeploymentStackProvisioningState || (exports.KnownDeploymentStackProvisioningState = {}));\n/** Known values of {@link ResourceStatusMode} that the service accepts. */\nexports.KnownResourceStatusMode = void 0;\n(function (KnownResourceStatusMode) {\n /** This resource is managed by the deployment stack. */\n KnownResourceStatusMode[\"Managed\"] = \"managed\";\n /** Unable to remove the deny assignment on resource. */\n KnownResourceStatusMode[\"RemoveDenyFailed\"] = \"removeDenyFailed\";\n /** Unable to delete the resource from Azure. The delete will be retried on the next stack deployment, or can be deleted manually. */\n KnownResourceStatusMode[\"DeleteFailed\"] = \"deleteFailed\";\n})(exports.KnownResourceStatusMode || (exports.KnownResourceStatusMode = {}));\n/** Known values of {@link DenyStatusMode} that the service accepts. */\nexports.KnownDenyStatusMode = void 0;\n(function (KnownDenyStatusMode) {\n /** Authorized users are able to read and modify the resources, but cannot delete. */\n KnownDenyStatusMode[\"DenyDelete\"] = \"denyDelete\";\n /** Resource type does not support denyAssignments. */\n KnownDenyStatusMode[\"NotSupported\"] = \"notSupported\";\n /** denyAssignments are not supported on resources outside the scope of the deployment stack. */\n KnownDenyStatusMode[\"Inapplicable\"] = \"inapplicable\";\n /** Authorized users can only read from a resource, but cannot modify or delete it. */\n KnownDenyStatusMode[\"DenyWriteAndDelete\"] = \"denyWriteAndDelete\";\n /** Deny assignment has been removed by Azure due to a resource management change (management group move, etc.) */\n KnownDenyStatusMode[\"RemovedBySystem\"] = \"removedBySystem\";\n /** No denyAssignments have been applied. */\n KnownDenyStatusMode[\"None\"] = \"none\";\n})(exports.KnownDenyStatusMode || (exports.KnownDenyStatusMode = {}));\n/** Known values of {@link CreatedByType} that the service accepts. */\nexports.KnownCreatedByType = void 0;\n(function (KnownCreatedByType) {\n /** User */\n KnownCreatedByType[\"User\"] = \"User\";\n /** Application */\n KnownCreatedByType[\"Application\"] = \"Application\";\n /** ManagedIdentity */\n KnownCreatedByType[\"ManagedIdentity\"] = \"ManagedIdentity\";\n /** Key */\n KnownCreatedByType[\"Key\"] = \"Key\";\n})(exports.KnownCreatedByType || (exports.KnownCreatedByType = {}));\n/** Known values of {@link UnmanageActionResourceMode} that the service accepts. */\nexports.KnownUnmanageActionResourceMode = void 0;\n(function (KnownUnmanageActionResourceMode) {\n /** Delete */\n KnownUnmanageActionResourceMode[\"Delete\"] = \"delete\";\n /** Detach */\n KnownUnmanageActionResourceMode[\"Detach\"] = \"detach\";\n})(exports.KnownUnmanageActionResourceMode || (exports.KnownUnmanageActionResourceMode = {}));\n/** Known values of {@link UnmanageActionResourceGroupMode} that the service accepts. */\nexports.KnownUnmanageActionResourceGroupMode = void 0;\n(function (KnownUnmanageActionResourceGroupMode) {\n /** Delete */\n KnownUnmanageActionResourceGroupMode[\"Delete\"] = \"delete\";\n /** Detach */\n KnownUnmanageActionResourceGroupMode[\"Detach\"] = \"detach\";\n})(exports.KnownUnmanageActionResourceGroupMode || (exports.KnownUnmanageActionResourceGroupMode = {}));\n/** Known values of {@link UnmanageActionManagementGroupMode} that the service accepts. */\nexports.KnownUnmanageActionManagementGroupMode = void 0;\n(function (KnownUnmanageActionManagementGroupMode) {\n /** Delete */\n KnownUnmanageActionManagementGroupMode[\"Delete\"] = \"delete\";\n /** Detach */\n KnownUnmanageActionManagementGroupMode[\"Detach\"] = \"detach\";\n})(exports.KnownUnmanageActionManagementGroupMode || (exports.KnownUnmanageActionManagementGroupMode = {}));\n\n/*\n * Copyright (c) Microsoft Corporation.\n * Licensed under the MIT License.\n *\n * Code generated by Microsoft (R) AutoRest Code Generator.\n * Changes may cause incorrect behavior and will be lost if the code is regenerated.\n */\nconst DeploymentStackListResult = {\n type: {\n name: \"Composite\",\n className: \"DeploymentStackListResult\",\n modelProperties: {\n value: {\n serializedName: \"value\",\n type: {\n name: \"Sequence\",\n element: {\n type: {\n name: \"Composite\",\n className: \"DeploymentStack\",\n },\n },\n },\n },\n nextLink: {\n serializedName: \"nextLink\",\n readOnly: true,\n type: {\n name: \"String\",\n },\n },\n },\n },\n};\nconst DeploymentStacksTemplateLink = {\n type: {\n name: \"Composite\",\n className: \"DeploymentStacksTemplateLink\",\n modelProperties: {\n uri: {\n serializedName: \"uri\",\n type: {\n name: \"String\",\n },\n },\n id: {\n serializedName: \"id\",\n type: {\n name: \"String\",\n },\n },\n relativePath: {\n serializedName: \"relativePath\",\n type: {\n name: \"String\",\n },\n },\n queryString: {\n serializedName: \"queryString\",\n type: {\n name: \"String\",\n },\n },\n contentVersion: {\n serializedName: \"contentVersion\",\n type: {\n name: \"String\",\n },\n },\n },\n },\n};\nconst DeploymentParameter = {\n type: {\n name: \"Composite\",\n className: \"DeploymentParameter\",\n modelProperties: {\n value: {\n serializedName: \"value\",\n type: {\n name: \"any\",\n },\n },\n type: {\n serializedName: \"type\",\n type: {\n name: \"String\",\n },\n },\n reference: {\n serializedName: \"reference\",\n type: {\n name: \"Composite\",\n className: \"KeyVaultParameterReference\",\n },\n },\n },\n },\n};\nconst KeyVaultParameterReference = {\n type: {\n name: \"Composite\",\n className: \"KeyVaultParameterReference\",\n modelProperties: {\n keyVault: {\n serializedName: \"keyVault\",\n type: {\n name: \"Composite\",\n className: \"KeyVaultReference\",\n },\n },\n secretName: {\n serializedName: \"secretName\",\n required: true,\n type: {\n name: \"String\",\n },\n },\n secretVersion: {\n serializedName: \"secretVersion\",\n type: {\n name: \"String\",\n },\n },\n },\n },\n};\nconst KeyVaultReference = {\n type: {\n name: \"Composite\",\n className: \"KeyVaultReference\",\n modelProperties: {\n id: {\n serializedName: \"id\",\n required: true,\n type: {\n name: \"String\",\n },\n },\n },\n },\n};\nconst DeploymentStacksParametersLink = {\n type: {\n name: \"Composite\",\n className: \"DeploymentStacksParametersLink\",\n modelProperties: {\n uri: {\n serializedName: \"uri\",\n required: true,\n type: {\n name: \"String\",\n },\n },\n contentVersion: {\n serializedName: \"contentVersion\",\n type: {\n name: \"String\",\n },\n },\n },\n },\n};\nconst ActionOnUnmanage = {\n type: {\n name: \"Composite\",\n className: \"ActionOnUnmanage\",\n modelProperties: {\n resources: {\n serializedName: \"resources\",\n required: true,\n type: {\n name: \"String\",\n },\n },\n resourceGroups: {\n serializedName: \"resourceGroups\",\n type: {\n name: \"String\",\n },\n },\n managementGroups: {\n serializedName: \"managementGroups\",\n type: {\n name: \"String\",\n },\n },\n },\n },\n};\nconst DeploymentStacksDebugSetting = {\n type: {\n name: \"Composite\",\n className: \"DeploymentStacksDebugSetting\",\n modelProperties: {\n detailLevel: {\n serializedName: \"detailLevel\",\n type: {\n name: \"String\",\n },\n },\n },\n },\n};\nconst DenySettings = {\n type: {\n name: \"Composite\",\n className: \"DenySettings\",\n modelProperties: {\n mode: {\n serializedName: \"mode\",\n required: true,\n type: {\n name: \"String\",\n },\n },\n excludedPrincipals: {\n serializedName: \"excludedPrincipals\",\n type: {\n name: \"Sequence\",\n element: {\n type: {\n name: \"String\",\n },\n },\n },\n },\n excludedActions: {\n serializedName: \"excludedActions\",\n type: {\n name: \"Sequence\",\n element: {\n type: {\n name: \"String\",\n },\n },\n },\n },\n applyToChildScopes: {\n serializedName: \"applyToChildScopes\",\n type: {\n name: \"Boolean\",\n },\n },\n },\n },\n};\nconst ResourceReference = {\n type: {\n name: \"Composite\",\n className: \"ResourceReference\",\n modelProperties: {\n id: {\n serializedName: \"id\",\n readOnly: true,\n type: {\n name: \"String\",\n },\n },\n },\n },\n};\nconst DeploymentStacksError = {\n type: {\n name: \"Composite\",\n className: \"DeploymentStacksError\",\n modelProperties: {\n error: {\n serializedName: \"error\",\n type: {\n name: \"Composite\",\n className: \"ErrorDetail\",\n },\n },\n },\n },\n};\nconst ErrorDetail = {\n type: {\n name: \"Composite\",\n className: \"ErrorDetail\",\n modelProperties: {\n code: {\n serializedName: \"code\",\n readOnly: true,\n type: {\n name: \"String\",\n },\n },\n message: {\n serializedName: \"message\",\n readOnly: true,\n type: {\n name: \"String\",\n },\n },\n target: {\n serializedName: \"target\",\n readOnly: true,\n type: {\n name: \"String\",\n },\n },\n details: {\n serializedName: \"details\",\n readOnly: true,\n type: {\n name: \"Sequence\",\n element: {\n type: {\n name: \"Composite\",\n className: \"ErrorDetail\",\n },\n },\n },\n },\n additionalInfo: {\n serializedName: \"additionalInfo\",\n readOnly: true,\n type: {\n name: \"Sequence\",\n element: {\n type: {\n name: \"Composite\",\n className: \"ErrorAdditionalInfo\",\n },\n },\n },\n },\n },\n },\n};\nconst ErrorAdditionalInfo = {\n type: {\n name: \"Composite\",\n className: \"ErrorAdditionalInfo\",\n modelProperties: {\n type: {\n serializedName: \"type\",\n readOnly: true,\n type: {\n name: \"String\",\n },\n },\n info: {\n serializedName: \"info\",\n readOnly: true,\n type: {\n name: \"Dictionary\",\n value: { type: { name: \"any\" } },\n },\n },\n },\n },\n};\nconst AzureResourceBase = {\n type: {\n name: \"Composite\",\n className: \"AzureResourceBase\",\n modelProperties: {\n id: {\n serializedName: \"id\",\n readOnly: true,\n type: {\n name: \"String\",\n },\n },\n name: {\n serializedName: \"name\",\n readOnly: true,\n type: {\n name: \"String\",\n },\n },\n type: {\n serializedName: \"type\",\n readOnly: true,\n type: {\n name: \"String\",\n },\n },\n systemData: {\n serializedName: \"systemData\",\n type: {\n name: \"Composite\",\n className: \"SystemData\",\n },\n },\n },\n },\n};\nconst SystemData = {\n type: {\n name: \"Composite\",\n className: \"SystemData\",\n modelProperties: {\n createdBy: {\n serializedName: \"createdBy\",\n type: {\n name: \"String\",\n },\n },\n createdByType: {\n serializedName: \"createdByType\",\n type: {\n name: \"String\",\n },\n },\n createdAt: {\n serializedName: \"createdAt\",\n type: {\n name: \"DateTime\",\n },\n },\n lastModifiedBy: {\n serializedName: \"lastModifiedBy\",\n type: {\n name: \"String\",\n },\n },\n lastModifiedByType: {\n serializedName: \"lastModifiedByType\",\n type: {\n name: \"String\",\n },\n },\n lastModifiedAt: {\n serializedName: \"lastModifiedAt\",\n type: {\n name: \"DateTime\",\n },\n },\n },\n },\n};\nconst DeploymentStackTemplateDefinition = {\n type: {\n name: \"Composite\",\n className: \"DeploymentStackTemplateDefinition\",\n modelProperties: {\n template: {\n serializedName: \"template\",\n type: {\n name: \"Dictionary\",\n value: { type: { name: \"any\" } },\n },\n },\n templateLink: {\n serializedName: \"templateLink\",\n type: {\n name: \"Composite\",\n className: \"DeploymentStacksTemplateLink\",\n },\n },\n },\n },\n};\nconst DeploymentStackValidateProperties = {\n type: {\n name: \"Composite\",\n className: \"DeploymentStackValidateProperties\",\n modelProperties: {\n actionOnUnmanage: {\n serializedName: \"actionOnUnmanage\",\n type: {\n name: \"Composite\",\n className: \"ActionOnUnmanage\",\n },\n },\n correlationId: {\n serializedName: \"correlationId\",\n type: {\n name: \"String\",\n },\n },\n denySettings: {\n serializedName: \"denySettings\",\n type: {\n name: \"Composite\",\n className: \"DenySettings\",\n },\n },\n deploymentScope: {\n serializedName: \"deploymentScope\",\n type: {\n name: \"String\",\n },\n },\n description: {\n serializedName: \"description\",\n type: {\n name: \"String\",\n },\n },\n parameters: {\n serializedName: \"parameters\",\n type: {\n name: \"Dictionary\",\n value: {\n type: { name: \"Composite\", className: \"DeploymentParameter\" },\n },\n },\n },\n templateLink: {\n serializedName: \"templateLink\",\n type: {\n name: \"Composite\",\n className: \"DeploymentStacksTemplateLink\",\n },\n },\n validatedResources: {\n serializedName: \"validatedResources\",\n type: {\n name: \"Sequence\",\n element: {\n type: {\n name: \"Composite\",\n className: \"ResourceReference\",\n },\n },\n },\n },\n },\n },\n};\nconst ResourceReferenceExtended = {\n type: {\n name: \"Composite\",\n className: \"ResourceReferenceExtended\",\n modelProperties: Object.assign(Object.assign({}, ResourceReference.type.modelProperties), DeploymentStacksError.type.modelProperties),\n },\n};\nconst ManagedResourceReference = {\n type: {\n name: \"Composite\",\n className: \"ManagedResourceReference\",\n modelProperties: Object.assign(Object.assign({}, ResourceReference.type.modelProperties), { status: {\n serializedName: \"status\",\n type: {\n name: \"String\",\n },\n }, denyStatus: {\n defaultValue: \"none\",\n serializedName: \"denyStatus\",\n type: {\n name: \"String\",\n },\n } }),\n },\n};\nconst DeploymentStackProperties = {\n type: {\n name: \"Composite\",\n className: \"DeploymentStackProperties\",\n modelProperties: Object.assign(Object.assign({}, DeploymentStacksError.type.modelProperties), { template: {\n serializedName: \"template\",\n type: {\n name: \"Dictionary\",\n value: { type: { name: \"any\" } },\n },\n }, templateLink: {\n serializedName: \"templateLink\",\n type: {\n name: \"Composite\",\n className: \"DeploymentStacksTemplateLink\",\n },\n }, parameters: {\n serializedName: \"parameters\",\n type: {\n name: \"Dictionary\",\n value: {\n type: { name: \"Composite\", className: \"DeploymentParameter\" },\n },\n },\n }, parametersLink: {\n serializedName: \"parametersLink\",\n type: {\n name: \"Composite\",\n className: \"DeploymentStacksParametersLink\",\n },\n }, actionOnUnmanage: {\n serializedName: \"actionOnUnmanage\",\n type: {\n name: \"Composite\",\n className: \"ActionOnUnmanage\",\n },\n }, debugSetting: {\n serializedName: \"debugSetting\",\n type: {\n name: \"Composite\",\n className: \"DeploymentStacksDebugSetting\",\n },\n }, bypassStackOutOfSyncError: {\n serializedName: \"bypassStackOutOfSyncError\",\n type: {\n name: \"Boolean\",\n },\n }, deploymentScope: {\n serializedName: \"deploymentScope\",\n type: {\n name: \"String\",\n },\n }, description: {\n constraints: {\n MaxLength: 4096,\n },\n serializedName: \"description\",\n type: {\n name: \"String\",\n },\n }, denySettings: {\n serializedName: \"denySettings\",\n type: {\n name: \"Composite\",\n className: \"DenySettings\",\n },\n }, provisioningState: {\n serializedName: \"provisioningState\",\n readOnly: true,\n type: {\n name: \"String\",\n },\n }, correlationId: {\n serializedName: \"correlationId\",\n readOnly: true,\n type: {\n name: \"String\",\n },\n }, detachedResources: {\n serializedName: \"detachedResources\",\n readOnly: true,\n type: {\n name: \"Sequence\",\n element: {\n type: {\n name: \"Composite\",\n className: \"ResourceReference\",\n },\n },\n },\n }, deletedResources: {\n serializedName: \"deletedResources\",\n readOnly: true,\n type: {\n name: \"Sequence\",\n element: {\n type: {\n name: \"Composite\",\n className: \"ResourceReference\",\n },\n },\n },\n }, failedResources: {\n serializedName: \"failedResources\",\n readOnly: true,\n type: {\n name: \"Sequence\",\n element: {\n type: {\n name: \"Composite\",\n className: \"ResourceReferenceExtended\",\n },\n },\n },\n }, resources: {\n serializedName: \"resources\",\n readOnly: true,\n type: {\n name: \"Sequence\",\n element: {\n type: {\n name: \"Composite\",\n className: \"ManagedResourceReference\",\n },\n },\n },\n }, deploymentId: {\n serializedName: \"deploymentId\",\n readOnly: true,\n type: {\n name: \"String\",\n },\n }, outputs: {\n serializedName: \"outputs\",\n readOnly: true,\n type: {\n name: \"Dictionary\",\n value: { type: { name: \"any\" } },\n },\n }, duration: {\n serializedName: \"duration\",\n readOnly: true,\n type: {\n name: \"String\",\n },\n } }),\n },\n};\nconst DeploymentStackValidateResult = {\n type: {\n name: \"Composite\",\n className: \"DeploymentStackValidateResult\",\n modelProperties: Object.assign(Object.assign(Object.assign({}, AzureResourceBase.type.modelProperties), DeploymentStacksError.type.modelProperties), { properties: {\n serializedName: \"properties\",\n type: {\n name: \"Composite\",\n className: \"DeploymentStackValidateProperties\",\n },\n } }),\n },\n};\nconst DeploymentStack = {\n type: {\n name: \"Composite\",\n className: \"DeploymentStack\",\n modelProperties: Object.assign(Object.assign({}, AzureResourceBase.type.modelProperties), { location: {\n serializedName: \"location\",\n type: {\n name: \"String\",\n },\n }, tags: {\n serializedName: \"tags\",\n type: {\n name: \"Dictionary\",\n value: { type: { name: \"String\" } },\n },\n }, properties: {\n serializedName: \"properties\",\n type: {\n name: \"Composite\",\n className: \"DeploymentStackProperties\",\n },\n } }),\n },\n};\nconst DeploymentStacksDeleteAtResourceGroupHeaders = {\n type: {\n name: \"Composite\",\n className: \"DeploymentStacksDeleteAtResourceGroupHeaders\",\n modelProperties: {\n location: {\n serializedName: \"location\",\n type: {\n name: \"String\",\n },\n },\n },\n },\n};\nconst DeploymentStacksDeleteAtSubscriptionHeaders = {\n type: {\n name: \"Composite\",\n className: \"DeploymentStacksDeleteAtSubscriptionHeaders\",\n modelProperties: {\n location: {\n serializedName: \"location\",\n type: {\n name: \"String\",\n },\n },\n },\n },\n};\nconst DeploymentStacksDeleteAtManagementGroupHeaders = {\n type: {\n name: \"Composite\",\n className: \"DeploymentStacksDeleteAtManagementGroupHeaders\",\n modelProperties: {\n location: {\n serializedName: \"location\",\n type: {\n name: \"String\",\n },\n },\n },\n },\n};\nconst DeploymentStacksValidateStackAtResourceGroupHeaders = {\n type: {\n name: \"Composite\",\n className: \"DeploymentStacksValidateStackAtResourceGroupHeaders\",\n modelProperties: {\n location: {\n serializedName: \"location\",\n type: {\n name: \"String\",\n },\n },\n retryAfter: {\n serializedName: \"retry-after\",\n type: {\n name: \"String\",\n },\n },\n },\n },\n};\nconst DeploymentStacksValidateStackAtSubscriptionHeaders = {\n type: {\n name: \"Composite\",\n className: \"DeploymentStacksValidateStackAtSubscriptionHeaders\",\n modelProperties: {\n location: {\n serializedName: \"location\",\n type: {\n name: \"String\",\n },\n },\n retryAfter: {\n serializedName: \"retry-after\",\n type: {\n name: \"String\",\n },\n },\n },\n },\n};\nconst DeploymentStacksValidateStackAtManagementGroupHeaders = {\n type: {\n name: \"Composite\",\n className: \"DeploymentStacksValidateStackAtManagementGroupHeaders\",\n modelProperties: {\n location: {\n serializedName: \"location\",\n type: {\n name: \"String\",\n },\n },\n retryAfter: {\n serializedName: \"retry-after\",\n type: {\n name: \"String\",\n },\n },\n },\n },\n};\n\nvar Mappers = /*#__PURE__*/Object.freeze({\n __proto__: null,\n ActionOnUnmanage: ActionOnUnmanage,\n AzureResourceBase: AzureResourceBase,\n DenySettings: DenySettings,\n DeploymentParameter: DeploymentParameter,\n DeploymentStack: DeploymentStack,\n DeploymentStackListResult: DeploymentStackListResult,\n DeploymentStackProperties: DeploymentStackProperties,\n DeploymentStackTemplateDefinition: DeploymentStackTemplateDefinition,\n DeploymentStackValidateProperties: DeploymentStackValidateProperties,\n DeploymentStackValidateResult: DeploymentStackValidateResult,\n DeploymentStacksDebugSetting: DeploymentStacksDebugSetting,\n DeploymentStacksDeleteAtManagementGroupHeaders: DeploymentStacksDeleteAtManagementGroupHeaders,\n DeploymentStacksDeleteAtResourceGroupHeaders: DeploymentStacksDeleteAtResourceGroupHeaders,\n DeploymentStacksDeleteAtSubscriptionHeaders: DeploymentStacksDeleteAtSubscriptionHeaders,\n DeploymentStacksError: DeploymentStacksError,\n DeploymentStacksParametersLink: DeploymentStacksParametersLink,\n DeploymentStacksTemplateLink: DeploymentStacksTemplateLink,\n DeploymentStacksValidateStackAtManagementGroupHeaders: DeploymentStacksValidateStackAtManagementGroupHeaders,\n DeploymentStacksValidateStackAtResourceGroupHeaders: DeploymentStacksValidateStackAtResourceGroupHeaders,\n DeploymentStacksValidateStackAtSubscriptionHeaders: DeploymentStacksValidateStackAtSubscriptionHeaders,\n ErrorAdditionalInfo: ErrorAdditionalInfo,\n ErrorDetail: ErrorDetail,\n KeyVaultParameterReference: KeyVaultParameterReference,\n KeyVaultReference: KeyVaultReference,\n ManagedResourceReference: ManagedResourceReference,\n ResourceReference: ResourceReference,\n ResourceReferenceExtended: ResourceReferenceExtended,\n SystemData: SystemData\n});\n\n/*\n * Copyright (c) Microsoft Corporation.\n * Licensed under the MIT License.\n *\n * Code generated by Microsoft (R) AutoRest Code Generator.\n * Changes may cause incorrect behavior and will be lost if the code is regenerated.\n */\nconst accept = {\n parameterPath: \"accept\",\n mapper: {\n defaultValue: \"application/json\",\n isConstant: true,\n serializedName: \"Accept\",\n type: {\n name: \"String\",\n },\n },\n};\nconst $host = {\n parameterPath: \"$host\",\n mapper: {\n serializedName: \"$host\",\n required: true,\n type: {\n name: \"String\",\n },\n },\n skipEncoding: true,\n};\nconst subscriptionId = {\n parameterPath: \"subscriptionId\",\n mapper: {\n serializedName: \"subscriptionId\",\n required: true,\n type: {\n name: \"Uuid\",\n },\n },\n};\nconst resourceGroupName = {\n parameterPath: \"resourceGroupName\",\n mapper: {\n constraints: {\n MaxLength: 90,\n MinLength: 1,\n },\n serializedName: \"resourceGroupName\",\n required: true,\n type: {\n name: \"String\",\n },\n },\n};\nconst apiVersion = {\n parameterPath: \"apiVersion\",\n mapper: {\n defaultValue: \"2024-03-01\",\n isConstant: true,\n serializedName: \"api-version\",\n type: {\n name: \"String\",\n },\n },\n};\nconst managementGroupId = {\n parameterPath: \"managementGroupId\",\n mapper: {\n constraints: {\n Pattern: new RegExp(\"^[-\\\\w\\\\._\\\\(\\\\)]+$\"),\n MaxLength: 90,\n MinLength: 1,\n },\n serializedName: \"managementGroupId\",\n required: true,\n type: {\n name: \"String\",\n },\n },\n};\nconst contentType = {\n parameterPath: [\"options\", \"contentType\"],\n mapper: {\n defaultValue: \"application/json\",\n isConstant: true,\n serializedName: \"Content-Type\",\n type: {\n name: \"String\",\n },\n },\n};\nconst deploymentStack = {\n parameterPath: \"deploymentStack\",\n mapper: DeploymentStack,\n};\nconst deploymentStackName = {\n parameterPath: \"deploymentStackName\",\n mapper: {\n constraints: {\n Pattern: new RegExp(\"^[-\\\\w\\\\._\\\\(\\\\)]+$\"),\n MaxLength: 90,\n MinLength: 1,\n },\n serializedName: \"deploymentStackName\",\n required: true,\n type: {\n name: \"String\",\n },\n },\n};\nconst unmanageActionResources = {\n parameterPath: [\"options\", \"unmanageActionResources\"],\n mapper: {\n serializedName: \"unmanageAction.Resources\",\n type: {\n name: \"String\",\n },\n },\n};\nconst unmanageActionResourceGroups = {\n parameterPath: [\"options\", \"unmanageActionResourceGroups\"],\n mapper: {\n serializedName: \"unmanageAction.ResourceGroups\",\n type: {\n name: \"String\",\n },\n },\n};\nconst unmanageActionManagementGroups = {\n parameterPath: [\"options\", \"unmanageActionManagementGroups\"],\n mapper: {\n serializedName: \"unmanageAction.ManagementGroups\",\n type: {\n name: \"String\",\n },\n },\n};\nconst bypassStackOutOfSyncError = {\n parameterPath: [\"options\", \"bypassStackOutOfSyncError\"],\n mapper: {\n serializedName: \"bypassStackOutOfSyncError\",\n type: {\n name: \"Boolean\",\n },\n },\n};\nconst nextLink = {\n parameterPath: \"nextLink\",\n mapper: {\n serializedName: \"nextLink\",\n required: true,\n type: {\n name: \"String\",\n },\n },\n skipEncoding: true,\n};\n\n/*\n * Copyright (c) Microsoft Corporation.\n * Licensed under the MIT License.\n *\n * Code generated by Microsoft (R) AutoRest Code Generator.\n * Changes may cause incorrect behavior and will be lost if the code is regenerated.\n */\nfunction createLroSpec(inputs) {\n const { args, spec, sendOperationFn } = inputs;\n return {\n requestMethod: spec.httpMethod,\n requestPath: spec.path,\n sendInitialRequest: () => sendOperationFn(args, spec),\n sendPollRequest: (path, options) => {\n const restSpec = tslib.__rest(spec, [\"requestBody\"]);\n return sendOperationFn(args, Object.assign(Object.assign({}, restSpec), { httpMethod: \"GET\", path, abortSignal: options === null || options === void 0 ? void 0 : options.abortSignal }));\n },\n };\n}\n\n/*\n * Copyright (c) Microsoft Corporation.\n * Licensed under the MIT License.\n *\n * Code generated by Microsoft (R) AutoRest Code Generator.\n * Changes may cause incorrect behavior and will be lost if the code is regenerated.\n */\n/// \n/** Class containing DeploymentStacks operations. */\nclass DeploymentStacksImpl {\n /**\n * Initialize a new instance of the class DeploymentStacks class.\n * @param client Reference to the service client\n */\n constructor(client) {\n this.client = client;\n }\n /**\n * Lists all the Deployment stacks within the specified Resource Group.\n * @param resourceGroupName The name of the resource group. The name is case insensitive.\n * @param options The options parameters.\n */\n listAtResourceGroup(resourceGroupName, options) {\n const iter = this.listAtResourceGroupPagingAll(resourceGroupName, options);\n return {\n next() {\n return iter.next();\n },\n [Symbol.asyncIterator]() {\n return this;\n },\n byPage: (settings) => {\n if (settings === null || settings === void 0 ? void 0 : settings.maxPageSize) {\n throw new Error(\"maxPageSize is not supported by this operation.\");\n }\n return this.listAtResourceGroupPagingPage(resourceGroupName, options, settings);\n },\n };\n }\n listAtResourceGroupPagingPage(resourceGroupName, options, settings) {\n return tslib.__asyncGenerator(this, arguments, function* listAtResourceGroupPagingPage_1() {\n let result;\n let continuationToken = settings === null || settings === void 0 ? void 0 : settings.continuationToken;\n if (!continuationToken) {\n result = yield tslib.__await(this._listAtResourceGroup(resourceGroupName, options));\n let page = result.value || [];\n continuationToken = result.nextLink;\n setContinuationToken(page, continuationToken);\n yield yield tslib.__await(page);\n }\n while (continuationToken) {\n result = yield tslib.__await(this._listAtResourceGroupNext(resourceGroupName, continuationToken, options));\n continuationToken = result.nextLink;\n let page = result.value || [];\n setContinuationToken(page, continuationToken);\n yield yield tslib.__await(page);\n }\n });\n }\n listAtResourceGroupPagingAll(resourceGroupName, options) {\n return tslib.__asyncGenerator(this, arguments, function* listAtResourceGroupPagingAll_1() {\n var _a, e_1, _b, _c;\n try {\n for (var _d = true, _e = tslib.__asyncValues(this.listAtResourceGroupPagingPage(resourceGroupName, options)), _f; _f = yield tslib.__await(_e.next()), _a = _f.done, !_a; _d = true) {\n _c = _f.value;\n _d = false;\n const page = _c;\n yield tslib.__await(yield* tslib.__asyncDelegator(tslib.__asyncValues(page)));\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (!_d && !_a && (_b = _e.return)) yield tslib.__await(_b.call(_e));\n }\n finally { if (e_1) throw e_1.error; }\n }\n });\n }\n /**\n * Lists all the Deployment stacks within the specified Subscription.\n * @param options The options parameters.\n */\n listAtSubscription(options) {\n const iter = this.listAtSubscriptionPagingAll(options);\n return {\n next() {\n return iter.next();\n },\n [Symbol.asyncIterator]() {\n return this;\n },\n byPage: (settings) => {\n if (settings === null || settings === void 0 ? void 0 : settings.maxPageSize) {\n throw new Error(\"maxPageSize is not supported by this operation.\");\n }\n return this.listAtSubscriptionPagingPage(options, settings);\n },\n };\n }\n listAtSubscriptionPagingPage(options, settings) {\n return tslib.__asyncGenerator(this, arguments, function* listAtSubscriptionPagingPage_1() {\n let result;\n let continuationToken = settings === null || settings === void 0 ? void 0 : settings.continuationToken;\n if (!continuationToken) {\n result = yield tslib.__await(this._listAtSubscription(options));\n let page = result.value || [];\n continuationToken = result.nextLink;\n setContinuationToken(page, continuationToken);\n yield yield tslib.__await(page);\n }\n while (continuationToken) {\n result = yield tslib.__await(this._listAtSubscriptionNext(continuationToken, options));\n continuationToken = result.nextLink;\n let page = result.value || [];\n setContinuationToken(page, continuationToken);\n yield yield tslib.__await(page);\n }\n });\n }\n listAtSubscriptionPagingAll(options) {\n return tslib.__asyncGenerator(this, arguments, function* listAtSubscriptionPagingAll_1() {\n var _a, e_2, _b, _c;\n try {\n for (var _d = true, _e = tslib.__asyncValues(this.listAtSubscriptionPagingPage(options)), _f; _f = yield tslib.__await(_e.next()), _a = _f.done, !_a; _d = true) {\n _c = _f.value;\n _d = false;\n const page = _c;\n yield tslib.__await(yield* tslib.__asyncDelegator(tslib.__asyncValues(page)));\n }\n }\n catch (e_2_1) { e_2 = { error: e_2_1 }; }\n finally {\n try {\n if (!_d && !_a && (_b = _e.return)) yield tslib.__await(_b.call(_e));\n }\n finally { if (e_2) throw e_2.error; }\n }\n });\n }\n /**\n * Lists all the Deployment stacks within the specified Management Group.\n * @param managementGroupId Management Group id.\n * @param options The options parameters.\n */\n listAtManagementGroup(managementGroupId, options) {\n const iter = this.listAtManagementGroupPagingAll(managementGroupId, options);\n return {\n next() {\n return iter.next();\n },\n [Symbol.asyncIterator]() {\n return this;\n },\n byPage: (settings) => {\n if (settings === null || settings === void 0 ? void 0 : settings.maxPageSize) {\n throw new Error(\"maxPageSize is not supported by this operation.\");\n }\n return this.listAtManagementGroupPagingPage(managementGroupId, options, settings);\n },\n };\n }\n listAtManagementGroupPagingPage(managementGroupId, options, settings) {\n return tslib.__asyncGenerator(this, arguments, function* listAtManagementGroupPagingPage_1() {\n let result;\n let continuationToken = settings === null || settings === void 0 ? void 0 : settings.continuationToken;\n if (!continuationToken) {\n result = yield tslib.__await(this._listAtManagementGroup(managementGroupId, options));\n let page = result.value || [];\n continuationToken = result.nextLink;\n setContinuationToken(page, continuationToken);\n yield yield tslib.__await(page);\n }\n while (continuationToken) {\n result = yield tslib.__await(this._listAtManagementGroupNext(managementGroupId, continuationToken, options));\n continuationToken = result.nextLink;\n let page = result.value || [];\n setContinuationToken(page, continuationToken);\n yield yield tslib.__await(page);\n }\n });\n }\n listAtManagementGroupPagingAll(managementGroupId, options) {\n return tslib.__asyncGenerator(this, arguments, function* listAtManagementGroupPagingAll_1() {\n var _a, e_3, _b, _c;\n try {\n for (var _d = true, _e = tslib.__asyncValues(this.listAtManagementGroupPagingPage(managementGroupId, options)), _f; _f = yield tslib.__await(_e.next()), _a = _f.done, !_a; _d = true) {\n _c = _f.value;\n _d = false;\n const page = _c;\n yield tslib.__await(yield* tslib.__asyncDelegator(tslib.__asyncValues(page)));\n }\n }\n catch (e_3_1) { e_3 = { error: e_3_1 }; }\n finally {\n try {\n if (!_d && !_a && (_b = _e.return)) yield tslib.__await(_b.call(_e));\n }\n finally { if (e_3) throw e_3.error; }\n }\n });\n }\n /**\n * Lists all the Deployment stacks within the specified Resource Group.\n * @param resourceGroupName The name of the resource group. The name is case insensitive.\n * @param options The options parameters.\n */\n _listAtResourceGroup(resourceGroupName, options) {\n return this.client.sendOperationRequest({ resourceGroupName, options }, listAtResourceGroupOperationSpec);\n }\n /**\n * Lists all the Deployment stacks within the specified Subscription.\n * @param options The options parameters.\n */\n _listAtSubscription(options) {\n return this.client.sendOperationRequest({ options }, listAtSubscriptionOperationSpec);\n }\n /**\n * Lists all the Deployment stacks within the specified Management Group.\n * @param managementGroupId Management Group id.\n * @param options The options parameters.\n */\n _listAtManagementGroup(managementGroupId, options) {\n return this.client.sendOperationRequest({ managementGroupId, options }, listAtManagementGroupOperationSpec);\n }\n /**\n * Creates or updates a Deployment stack at Resource Group scope.\n * @param resourceGroupName The name of the resource group. The name is case insensitive.\n * @param deploymentStackName Name of the deployment stack.\n * @param deploymentStack Deployment stack supplied to the operation.\n * @param options The options parameters.\n */\n beginCreateOrUpdateAtResourceGroup(resourceGroupName, deploymentStackName, deploymentStack, options) {\n return tslib.__awaiter(this, void 0, void 0, function* () {\n const directSendOperation = (args, spec) => tslib.__awaiter(this, void 0, void 0, function* () {\n return this.client.sendOperationRequest(args, spec);\n });\n const sendOperationFn = (args, spec) => tslib.__awaiter(this, void 0, void 0, function* () {\n var _a;\n let currentRawResponse = undefined;\n const providedCallback = (_a = args.options) === null || _a === void 0 ? void 0 : _a.onResponse;\n const callback = (rawResponse, flatResponse) => {\n currentRawResponse = rawResponse;\n providedCallback === null || providedCallback === void 0 ? void 0 : providedCallback(rawResponse, flatResponse);\n };\n const updatedArgs = Object.assign(Object.assign({}, args), { options: Object.assign(Object.assign({}, args.options), { onResponse: callback }) });\n const flatResponse = yield directSendOperation(updatedArgs, spec);\n return {\n flatResponse,\n rawResponse: {\n statusCode: currentRawResponse.status,\n body: currentRawResponse.parsedBody,\n headers: currentRawResponse.headers.toJSON(),\n },\n };\n });\n const lro = createLroSpec({\n sendOperationFn,\n args: {\n resourceGroupName,\n deploymentStackName,\n deploymentStack,\n options,\n },\n spec: createOrUpdateAtResourceGroupOperationSpec,\n });\n const poller = yield coreLro.createHttpPoller(lro, {\n restoreFrom: options === null || options === void 0 ? void 0 : options.resumeFrom,\n intervalInMs: options === null || options === void 0 ? void 0 : options.updateIntervalInMs,\n resourceLocationConfig: \"azure-async-operation\",\n });\n yield poller.poll();\n return poller;\n });\n }\n /**\n * Creates or updates a Deployment stack at Resource Group scope.\n * @param resourceGroupName The name of the resource group. The name is case insensitive.\n * @param deploymentStackName Name of the deployment stack.\n * @param deploymentStack Deployment stack supplied to the operation.\n * @param options The options parameters.\n */\n beginCreateOrUpdateAtResourceGroupAndWait(resourceGroupName, deploymentStackName, deploymentStack, options) {\n return tslib.__awaiter(this, void 0, void 0, function* () {\n const poller = yield this.beginCreateOrUpdateAtResourceGroup(resourceGroupName, deploymentStackName, deploymentStack, options);\n return poller.pollUntilDone();\n });\n }\n /**\n * Gets a Deployment stack with a given name at Resource Group scope.\n * @param resourceGroupName The name of the resource group. The name is case insensitive.\n * @param deploymentStackName Name of the deployment stack.\n * @param options The options parameters.\n */\n getAtResourceGroup(resourceGroupName, deploymentStackName, options) {\n return this.client.sendOperationRequest({ resourceGroupName, deploymentStackName, options }, getAtResourceGroupOperationSpec);\n }\n /**\n * Deletes a Deployment stack by name at Resource Group scope. When operation completes, status code\n * 200 returned without content.\n * @param resourceGroupName The name of the resource group. The name is case insensitive.\n * @param deploymentStackName Name of the deployment stack.\n * @param options The options parameters.\n */\n beginDeleteAtResourceGroup(resourceGroupName, deploymentStackName, options) {\n return tslib.__awaiter(this, void 0, void 0, function* () {\n const directSendOperation = (args, spec) => tslib.__awaiter(this, void 0, void 0, function* () {\n return this.client.sendOperationRequest(args, spec);\n });\n const sendOperationFn = (args, spec) => tslib.__awaiter(this, void 0, void 0, function* () {\n var _a;\n let currentRawResponse = undefined;\n const providedCallback = (_a = args.options) === null || _a === void 0 ? void 0 : _a.onResponse;\n const callback = (rawResponse, flatResponse) => {\n currentRawResponse = rawResponse;\n providedCallback === null || providedCallback === void 0 ? void 0 : providedCallback(rawResponse, flatResponse);\n };\n const updatedArgs = Object.assign(Object.assign({}, args), { options: Object.assign(Object.assign({}, args.options), { onResponse: callback }) });\n const flatResponse = yield directSendOperation(updatedArgs, spec);\n return {\n flatResponse,\n rawResponse: {\n statusCode: currentRawResponse.status,\n body: currentRawResponse.parsedBody,\n headers: currentRawResponse.headers.toJSON(),\n },\n };\n });\n const lro = createLroSpec({\n sendOperationFn,\n args: { resourceGroupName, deploymentStackName, options },\n spec: deleteAtResourceGroupOperationSpec,\n });\n const poller = yield coreLro.createHttpPoller(lro, {\n restoreFrom: options === null || options === void 0 ? void 0 : options.resumeFrom,\n intervalInMs: options === null || options === void 0 ? void 0 : options.updateIntervalInMs,\n resourceLocationConfig: \"location\",\n });\n yield poller.poll();\n return poller;\n });\n }\n /**\n * Deletes a Deployment stack by name at Resource Group scope. When operation completes, status code\n * 200 returned without content.\n * @param resourceGroupName The name of the resource group. The name is case insensitive.\n * @param deploymentStackName Name of the deployment stack.\n * @param options The options parameters.\n */\n beginDeleteAtResourceGroupAndWait(resourceGroupName, deploymentStackName, options) {\n return tslib.__awaiter(this, void 0, void 0, function* () {\n const poller = yield this.beginDeleteAtResourceGroup(resourceGroupName, deploymentStackName, options);\n return poller.pollUntilDone();\n });\n }\n /**\n * Creates or updates a Deployment stack at Subscription scope.\n * @param deploymentStackName Name of the deployment stack.\n * @param deploymentStack Deployment stack supplied to the operation.\n * @param options The options parameters.\n */\n beginCreateOrUpdateAtSubscription(deploymentStackName, deploymentStack, options) {\n return tslib.__awaiter(this, void 0, void 0, function* () {\n const directSendOperation = (args, spec) => tslib.__awaiter(this, void 0, void 0, function* () {\n return this.client.sendOperationRequest(args, spec);\n });\n const sendOperationFn = (args, spec) => tslib.__awaiter(this, void 0, void 0, function* () {\n var _a;\n let currentRawResponse = undefined;\n const providedCallback = (_a = args.options) === null || _a === void 0 ? void 0 : _a.onResponse;\n const callback = (rawResponse, flatResponse) => {\n currentRawResponse = rawResponse;\n providedCallback === null || providedCallback === void 0 ? void 0 : providedCallback(rawResponse, flatResponse);\n };\n const updatedArgs = Object.assign(Object.assign({}, args), { options: Object.assign(Object.assign({}, args.options), { onResponse: callback }) });\n const flatResponse = yield directSendOperation(updatedArgs, spec);\n return {\n flatResponse,\n rawResponse: {\n statusCode: currentRawResponse.status,\n body: currentRawResponse.parsedBody,\n headers: currentRawResponse.headers.toJSON(),\n },\n };\n });\n const lro = createLroSpec({\n sendOperationFn,\n args: { deploymentStackName, deploymentStack, options },\n spec: createOrUpdateAtSubscriptionOperationSpec,\n });\n const poller = yield coreLro.createHttpPoller(lro, {\n restoreFrom: options === null || options === void 0 ? void 0 : options.resumeFrom,\n intervalInMs: options === null || options === void 0 ? void 0 : options.updateIntervalInMs,\n resourceLocationConfig: \"azure-async-operation\",\n });\n yield poller.poll();\n return poller;\n });\n }\n /**\n * Creates or updates a Deployment stack at Subscription scope.\n * @param deploymentStackName Name of the deployment stack.\n * @param deploymentStack Deployment stack supplied to the operation.\n * @param options The options parameters.\n */\n beginCreateOrUpdateAtSubscriptionAndWait(deploymentStackName, deploymentStack, options) {\n return tslib.__awaiter(this, void 0, void 0, function* () {\n const poller = yield this.beginCreateOrUpdateAtSubscription(deploymentStackName, deploymentStack, options);\n return poller.pollUntilDone();\n });\n }\n /**\n * Gets a Deployment stack with a given name at Subscription scope.\n * @param deploymentStackName Name of the deployment stack.\n * @param options The options parameters.\n */\n getAtSubscription(deploymentStackName, options) {\n return this.client.sendOperationRequest({ deploymentStackName, options }, getAtSubscriptionOperationSpec);\n }\n /**\n * Deletes a Deployment stack by name at Subscription scope. When operation completes, status code 200\n * returned without content.\n * @param deploymentStackName Name of the deployment stack.\n * @param options The options parameters.\n */\n beginDeleteAtSubscription(deploymentStackName, options) {\n return tslib.__awaiter(this, void 0, void 0, function* () {\n const directSendOperation = (args, spec) => tslib.__awaiter(this, void 0, void 0, function* () {\n return this.client.sendOperationRequest(args, spec);\n });\n const sendOperationFn = (args, spec) => tslib.__awaiter(this, void 0, void 0, function* () {\n var _a;\n let currentRawResponse = undefined;\n const providedCallback = (_a = args.options) === null || _a === void 0 ? void 0 : _a.onResponse;\n const callback = (rawResponse, flatResponse) => {\n currentRawResponse = rawResponse;\n providedCallback === null || providedCallback === void 0 ? void 0 : providedCallback(rawResponse, flatResponse);\n };\n const updatedArgs = Object.assign(Object.assign({}, args), { options: Object.assign(Object.assign({}, args.options), { onResponse: callback }) });\n const flatResponse = yield directSendOperation(updatedArgs, spec);\n return {\n flatResponse,\n rawResponse: {\n statusCode: currentRawResponse.status,\n body: currentRawResponse.parsedBody,\n headers: currentRawResponse.headers.toJSON(),\n },\n };\n });\n const lro = createLroSpec({\n sendOperationFn,\n args: { deploymentStackName, options },\n spec: deleteAtSubscriptionOperationSpec,\n });\n const poller = yield coreLro.createHttpPoller(lro, {\n restoreFrom: options === null || options === void 0 ? void 0 : options.resumeFrom,\n intervalInMs: options === null || options === void 0 ? void 0 : options.updateIntervalInMs,\n resourceLocationConfig: \"location\",\n });\n yield poller.poll();\n return poller;\n });\n }\n /**\n * Deletes a Deployment stack by name at Subscription scope. When operation completes, status code 200\n * returned without content.\n * @param deploymentStackName Name of the deployment stack.\n * @param options The options parameters.\n */\n beginDeleteAtSubscriptionAndWait(deploymentStackName, options) {\n return tslib.__awaiter(this, void 0, void 0, function* () {\n const poller = yield this.beginDeleteAtSubscription(deploymentStackName, options);\n return poller.pollUntilDone();\n });\n }\n /**\n * Creates or updates a Deployment stack at Management Group scope.\n * @param managementGroupId Management Group id.\n * @param deploymentStackName Name of the deployment stack.\n * @param deploymentStack Deployment stack supplied to the operation.\n * @param options The options parameters.\n */\n beginCreateOrUpdateAtManagementGroup(managementGroupId, deploymentStackName, deploymentStack, options) {\n return tslib.__awaiter(this, void 0, void 0, function* () {\n const directSendOperation = (args, spec) => tslib.__awaiter(this, void 0, void 0, function* () {\n return this.client.sendOperationRequest(args, spec);\n });\n const sendOperationFn = (args, spec) => tslib.__awaiter(this, void 0, void 0, function* () {\n var _a;\n let currentRawResponse = undefined;\n const providedCallback = (_a = args.options) === null || _a === void 0 ? void 0 : _a.onResponse;\n const callback = (rawResponse, flatResponse) => {\n currentRawResponse = rawResponse;\n providedCallback === null || providedCallback === void 0 ? void 0 : providedCallback(rawResponse, flatResponse);\n };\n const updatedArgs = Object.assign(Object.assign({}, args), { options: Object.assign(Object.assign({}, args.options), { onResponse: callback }) });\n const flatResponse = yield directSendOperation(updatedArgs, spec);\n return {\n flatResponse,\n rawResponse: {\n statusCode: currentRawResponse.status,\n body: currentRawResponse.parsedBody,\n headers: currentRawResponse.headers.toJSON(),\n },\n };\n });\n const lro = createLroSpec({\n sendOperationFn,\n args: {\n managementGroupId,\n deploymentStackName,\n deploymentStack,\n options,\n },\n spec: createOrUpdateAtManagementGroupOperationSpec,\n });\n const poller = yield coreLro.createHttpPoller(lro, {\n restoreFrom: options === null || options === void 0 ? void 0 : options.resumeFrom,\n intervalInMs: options === null || options === void 0 ? void 0 : options.updateIntervalInMs,\n resourceLocationConfig: \"azure-async-operation\",\n });\n yield poller.poll();\n return poller;\n });\n }\n /**\n * Creates or updates a Deployment stack at Management Group scope.\n * @param managementGroupId Management Group id.\n * @param deploymentStackName Name of the deployment stack.\n * @param deploymentStack Deployment stack supplied to the operation.\n * @param options The options parameters.\n */\n beginCreateOrUpdateAtManagementGroupAndWait(managementGroupId, deploymentStackName, deploymentStack, options) {\n return tslib.__awaiter(this, void 0, void 0, function* () {\n const poller = yield this.beginCreateOrUpdateAtManagementGroup(managementGroupId, deploymentStackName, deploymentStack, options);\n return poller.pollUntilDone();\n });\n }\n /**\n * Gets a Deployment stack with a given name at Management Group scope.\n * @param managementGroupId Management Group id.\n * @param deploymentStackName Name of the deployment stack.\n * @param options The options parameters.\n */\n getAtManagementGroup(managementGroupId, deploymentStackName, options) {\n return this.client.sendOperationRequest({ managementGroupId, deploymentStackName, options }, getAtManagementGroupOperationSpec);\n }\n /**\n * Deletes a Deployment stack by name at Management Group scope. When operation completes, status code\n * 200 returned without content.\n * @param managementGroupId Management Group id.\n * @param deploymentStackName Name of the deployment stack.\n * @param options The options parameters.\n */\n beginDeleteAtManagementGroup(managementGroupId, deploymentStackName, options) {\n return tslib.__awaiter(this, void 0, void 0, function* () {\n const directSendOperation = (args, spec) => tslib.__awaiter(this, void 0, void 0, function* () {\n return this.client.sendOperationRequest(args, spec);\n });\n const sendOperationFn = (args, spec) => tslib.__awaiter(this, void 0, void 0, function* () {\n var _a;\n let currentRawResponse = undefined;\n const providedCallback = (_a = args.options) === null || _a === void 0 ? void 0 : _a.onResponse;\n const callback = (rawResponse, flatResponse) => {\n currentRawResponse = rawResponse;\n providedCallback === null || providedCallback === void 0 ? void 0 : providedCallback(rawResponse, flatResponse);\n };\n const updatedArgs = Object.assign(Object.assign({}, args), { options: Object.assign(Object.assign({}, args.options), { onResponse: callback }) });\n const flatResponse = yield directSendOperation(updatedArgs, spec);\n return {\n flatResponse,\n rawResponse: {\n statusCode: currentRawResponse.status,\n body: currentRawResponse.parsedBody,\n headers: currentRawResponse.headers.toJSON(),\n },\n };\n });\n const lro = createLroSpec({\n sendOperationFn,\n args: { managementGroupId, deploymentStackName, options },\n spec: deleteAtManagementGroupOperationSpec,\n });\n const poller = yield coreLro.createHttpPoller(lro, {\n restoreFrom: options === null || options === void 0 ? void 0 : options.resumeFrom,\n intervalInMs: options === null || options === void 0 ? void 0 : options.updateIntervalInMs,\n resourceLocationConfig: \"location\",\n });\n yield poller.poll();\n return poller;\n });\n }\n /**\n * Deletes a Deployment stack by name at Management Group scope. When operation completes, status code\n * 200 returned without content.\n * @param managementGroupId Management Group id.\n * @param deploymentStackName Name of the deployment stack.\n * @param options The options parameters.\n */\n beginDeleteAtManagementGroupAndWait(managementGroupId, deploymentStackName, options) {\n return tslib.__awaiter(this, void 0, void 0, function* () {\n const poller = yield this.beginDeleteAtManagementGroup(managementGroupId, deploymentStackName, options);\n return poller.pollUntilDone();\n });\n }\n /**\n * Exports the template used to create the Deployment stack at Resource Group scope.\n * @param resourceGroupName The name of the resource group. The name is case insensitive.\n * @param deploymentStackName Name of the deployment stack.\n * @param options The options parameters.\n */\n exportTemplateAtResourceGroup(resourceGroupName, deploymentStackName, options) {\n return this.client.sendOperationRequest({ resourceGroupName, deploymentStackName, options }, exportTemplateAtResourceGroupOperationSpec);\n }\n /**\n * Exports the template used to create the Deployment stack at Subscription scope.\n * @param deploymentStackName Name of the deployment stack.\n * @param options The options parameters.\n */\n exportTemplateAtSubscription(deploymentStackName, options) {\n return this.client.sendOperationRequest({ deploymentStackName, options }, exportTemplateAtSubscriptionOperationSpec);\n }\n /**\n * Exports the template used to create the Deployment stack at Management Group scope.\n * @param managementGroupId Management Group id.\n * @param deploymentStackName Name of the deployment stack.\n * @param options The options parameters.\n */\n exportTemplateAtManagementGroup(managementGroupId, deploymentStackName, options) {\n return this.client.sendOperationRequest({ managementGroupId, deploymentStackName, options }, exportTemplateAtManagementGroupOperationSpec);\n }\n /**\n * Runs preflight validation on the Resource Group scoped Deployment stack template to verify its\n * acceptance to Azure Resource Manager.\n * @param resourceGroupName The name of the resource group. The name is case insensitive.\n * @param deploymentStackName Name of the deployment stack.\n * @param deploymentStack Deployment stack to validate.\n * @param options The options parameters.\n */\n beginValidateStackAtResourceGroup(resourceGroupName, deploymentStackName, deploymentStack, options) {\n return tslib.__awaiter(this, void 0, void 0, function* () {\n const directSendOperation = (args, spec) => tslib.__awaiter(this, void 0, void 0, function* () {\n return this.client.sendOperationRequest(args, spec);\n });\n const sendOperationFn = (args, spec) => tslib.__awaiter(this, void 0, void 0, function* () {\n var _a;\n let currentRawResponse = undefined;\n const providedCallback = (_a = args.options) === null || _a === void 0 ? void 0 : _a.onResponse;\n const callback = (rawResponse, flatResponse) => {\n currentRawResponse = rawResponse;\n providedCallback === null || providedCallback === void 0 ? void 0 : providedCallback(rawResponse, flatResponse);\n };\n const updatedArgs = Object.assign(Object.assign({}, args), { options: Object.assign(Object.assign({}, args.options), { onResponse: callback }) });\n const flatResponse = yield directSendOperation(updatedArgs, spec);\n return {\n flatResponse,\n rawResponse: {\n statusCode: currentRawResponse.status,\n body: currentRawResponse.parsedBody,\n headers: currentRawResponse.headers.toJSON(),\n },\n };\n });\n const lro = createLroSpec({\n sendOperationFn,\n args: {\n resourceGroupName,\n deploymentStackName,\n deploymentStack,\n options,\n },\n spec: validateStackAtResourceGroupOperationSpec,\n });\n const poller = yield coreLro.createHttpPoller(lro, {\n restoreFrom: options === null || options === void 0 ? void 0 : options.resumeFrom,\n intervalInMs: options === null || options === void 0 ? void 0 : options.updateIntervalInMs,\n resourceLocationConfig: \"location\",\n });\n yield poller.poll();\n return poller;\n });\n }\n /**\n * Runs preflight validation on the Resource Group scoped Deployment stack template to verify its\n * acceptance to Azure Resource Manager.\n * @param resourceGroupName The name of the resource group. The name is case insensitive.\n * @param deploymentStackName Name of the deployment stack.\n * @param deploymentStack Deployment stack to validate.\n * @param options The options parameters.\n */\n beginValidateStackAtResourceGroupAndWait(resourceGroupName, deploymentStackName, deploymentStack, options) {\n return tslib.__awaiter(this, void 0, void 0, function* () {\n const poller = yield this.beginValidateStackAtResourceGroup(resourceGroupName, deploymentStackName, deploymentStack, options);\n return poller.pollUntilDone();\n });\n }\n /**\n * Runs preflight validation on the Subscription scoped Deployment stack template to verify its\n * acceptance to Azure Resource Manager.\n * @param deploymentStackName Name of the deployment stack.\n * @param deploymentStack Deployment stack to validate.\n * @param options The options parameters.\n */\n beginValidateStackAtSubscription(deploymentStackName, deploymentStack, options) {\n return tslib.__awaiter(this, void 0, void 0, function* () {\n const directSendOperation = (args, spec) => tslib.__awaiter(this, void 0, void 0, function* () {\n return this.client.sendOperationRequest(args, spec);\n });\n const sendOperationFn = (args, spec) => tslib.__awaiter(this, void 0, void 0, function* () {\n var _a;\n let currentRawResponse = undefined;\n const providedCallback = (_a = args.options) === null || _a === void 0 ? void 0 : _a.onResponse;\n const callback = (rawResponse, flatResponse) => {\n currentRawResponse = rawResponse;\n providedCallback === null || providedCallback === void 0 ? void 0 : providedCallback(rawResponse, flatResponse);\n };\n const updatedArgs = Object.assign(Object.assign({}, args), { options: Object.assign(Object.assign({}, args.options), { onResponse: callback }) });\n const flatResponse = yield directSendOperation(updatedArgs, spec);\n return {\n flatResponse,\n rawResponse: {\n statusCode: currentRawResponse.status,\n body: currentRawResponse.parsedBody,\n headers: currentRawResponse.headers.toJSON(),\n },\n };\n });\n const lro = createLroSpec({\n sendOperationFn,\n args: { deploymentStackName, deploymentStack, options },\n spec: validateStackAtSubscriptionOperationSpec,\n });\n const poller = yield coreLro.createHttpPoller(lro, {\n restoreFrom: options === null || options === void 0 ? void 0 : options.resumeFrom,\n intervalInMs: options === null || options === void 0 ? void 0 : options.updateIntervalInMs,\n resourceLocationConfig: \"location\",\n });\n yield poller.poll();\n return poller;\n });\n }\n /**\n * Runs preflight validation on the Subscription scoped Deployment stack template to verify its\n * acceptance to Azure Resource Manager.\n * @param deploymentStackName Name of the deployment stack.\n * @param deploymentStack Deployment stack to validate.\n * @param options The options parameters.\n */\n beginValidateStackAtSubscriptionAndWait(deploymentStackName, deploymentStack, options) {\n return tslib.__awaiter(this, void 0, void 0, function* () {\n const poller = yield this.beginValidateStackAtSubscription(deploymentStackName, deploymentStack, options);\n return poller.pollUntilDone();\n });\n }\n /**\n * Runs preflight validation on the Management Group scoped Deployment stack template to verify its\n * acceptance to Azure Resource Manager.\n * @param managementGroupId Management Group id.\n * @param deploymentStackName Name of the deployment stack.\n * @param deploymentStack Deployment stack to validate.\n * @param options The options parameters.\n */\n beginValidateStackAtManagementGroup(managementGroupId, deploymentStackName, deploymentStack, options) {\n return tslib.__awaiter(this, void 0, void 0, function* () {\n const directSendOperation = (args, spec) => tslib.__awaiter(this, void 0, void 0, function* () {\n return this.client.sendOperationRequest(args, spec);\n });\n const sendOperationFn = (args, spec) => tslib.__awaiter(this, void 0, void 0, function* () {\n var _a;\n let currentRawResponse = undefined;\n const providedCallback = (_a = args.options) === null || _a === void 0 ? void 0 : _a.onResponse;\n const callback = (rawResponse, flatResponse) => {\n currentRawResponse = rawResponse;\n providedCallback === null || providedCallback === void 0 ? void 0 : providedCallback(rawResponse, flatResponse);\n };\n const updatedArgs = Object.assign(Object.assign({}, args), { options: Object.assign(Object.assign({}, args.options), { onResponse: callback }) });\n const flatResponse = yield directSendOperation(updatedArgs, spec);\n return {\n flatResponse,\n rawResponse: {\n statusCode: currentRawResponse.status,\n body: currentRawResponse.parsedBody,\n headers: currentRawResponse.headers.toJSON(),\n },\n };\n });\n const lro = createLroSpec({\n sendOperationFn,\n args: {\n managementGroupId,\n deploymentStackName,\n deploymentStack,\n options,\n },\n spec: validateStackAtManagementGroupOperationSpec,\n });\n const poller = yield coreLro.createHttpPoller(lro, {\n restoreFrom: options === null || options === void 0 ? void 0 : options.resumeFrom,\n intervalInMs: options === null || options === void 0 ? void 0 : options.updateIntervalInMs,\n resourceLocationConfig: \"location\",\n });\n yield poller.poll();\n return poller;\n });\n }\n /**\n * Runs preflight validation on the Management Group scoped Deployment stack template to verify its\n * acceptance to Azure Resource Manager.\n * @param managementGroupId Management Group id.\n * @param deploymentStackName Name of the deployment stack.\n * @param deploymentStack Deployment stack to validate.\n * @param options The options parameters.\n */\n beginValidateStackAtManagementGroupAndWait(managementGroupId, deploymentStackName, deploymentStack, options) {\n return tslib.__awaiter(this, void 0, void 0, function* () {\n const poller = yield this.beginValidateStackAtManagementGroup(managementGroupId, deploymentStackName, deploymentStack, options);\n return poller.pollUntilDone();\n });\n }\n /**\n * ListAtResourceGroupNext\n * @param resourceGroupName The name of the resource group. The name is case insensitive.\n * @param nextLink The nextLink from the previous successful call to the ListAtResourceGroup method.\n * @param options The options parameters.\n */\n _listAtResourceGroupNext(resourceGroupName, nextLink, options) {\n return this.client.sendOperationRequest({ resourceGroupName, nextLink, options }, listAtResourceGroupNextOperationSpec);\n }\n /**\n * ListAtSubscriptionNext\n * @param nextLink The nextLink from the previous successful call to the ListAtSubscription method.\n * @param options The options parameters.\n */\n _listAtSubscriptionNext(nextLink, options) {\n return this.client.sendOperationRequest({ nextLink, options }, listAtSubscriptionNextOperationSpec);\n }\n /**\n * ListAtManagementGroupNext\n * @param managementGroupId Management Group id.\n * @param nextLink The nextLink from the previous successful call to the ListAtManagementGroup method.\n * @param options The options parameters.\n */\n _listAtManagementGroupNext(managementGroupId, nextLink, options) {\n return this.client.sendOperationRequest({ managementGroupId, nextLink, options }, listAtManagementGroupNextOperationSpec);\n }\n}\n// Operation Specifications\nconst serializer = coreClient__namespace.createSerializer(Mappers, /* isXml */ false);\nconst listAtResourceGroupOperationSpec = {\n path: \"/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Resources/deploymentStacks\",\n httpMethod: \"GET\",\n responses: {\n 200: {\n bodyMapper: DeploymentStackListResult,\n },\n default: {\n bodyMapper: DeploymentStacksError,\n },\n },\n queryParameters: [apiVersion],\n urlParameters: [\n $host,\n subscriptionId,\n resourceGroupName,\n ],\n headerParameters: [accept],\n serializer,\n};\nconst listAtSubscriptionOperationSpec = {\n path: \"/subscriptions/{subscriptionId}/providers/Microsoft.Resources/deploymentStacks\",\n httpMethod: \"GET\",\n responses: {\n 200: {\n bodyMapper: DeploymentStackListResult,\n },\n default: {\n bodyMapper: DeploymentStacksError,\n },\n },\n queryParameters: [apiVersion],\n urlParameters: [$host, subscriptionId],\n headerParameters: [accept],\n serializer,\n};\nconst listAtManagementGroupOperationSpec = {\n path: \"/providers/Microsoft.Management/managementGroups/{managementGroupId}/providers/Microsoft.Resources/deploymentStacks\",\n httpMethod: \"GET\",\n responses: {\n 200: {\n bodyMapper: DeploymentStackListResult,\n },\n default: {\n bodyMapper: DeploymentStacksError,\n },\n },\n queryParameters: [apiVersion],\n urlParameters: [$host, managementGroupId],\n headerParameters: [accept],\n serializer,\n};\nconst createOrUpdateAtResourceGroupOperationSpec = {\n path: \"/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Resources/deploymentStacks/{deploymentStackName}\",\n httpMethod: \"PUT\",\n responses: {\n 200: {\n bodyMapper: DeploymentStack,\n },\n 201: {\n bodyMapper: DeploymentStack,\n },\n 202: {\n bodyMapper: DeploymentStack,\n },\n 204: {\n bodyMapper: DeploymentStack,\n },\n default: {\n bodyMapper: DeploymentStacksError,\n },\n },\n requestBody: deploymentStack,\n queryParameters: [apiVersion],\n urlParameters: [\n $host,\n subscriptionId,\n resourceGroupName,\n deploymentStackName,\n ],\n headerParameters: [accept, contentType],\n mediaType: \"json\",\n serializer,\n};\nconst getAtResourceGroupOperationSpec = {\n path: \"/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Resources/deploymentStacks/{deploymentStackName}\",\n httpMethod: \"GET\",\n responses: {\n 200: {\n bodyMapper: DeploymentStack,\n },\n default: {\n bodyMapper: DeploymentStacksError,\n },\n },\n queryParameters: [apiVersion],\n urlParameters: [\n $host,\n subscriptionId,\n resourceGroupName,\n deploymentStackName,\n ],\n headerParameters: [accept],\n serializer,\n};\nconst deleteAtResourceGroupOperationSpec = {\n path: \"/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Resources/deploymentStacks/{deploymentStackName}\",\n httpMethod: \"DELETE\",\n responses: {\n 200: {},\n 201: {},\n 202: {},\n 204: {},\n default: {\n bodyMapper: DeploymentStacksError,\n },\n },\n queryParameters: [\n apiVersion,\n unmanageActionResources,\n unmanageActionResourceGroups,\n unmanageActionManagementGroups,\n bypassStackOutOfSyncError,\n ],\n urlParameters: [\n $host,\n subscriptionId,\n resourceGroupName,\n deploymentStackName,\n ],\n headerParameters: [accept],\n serializer,\n};\nconst createOrUpdateAtSubscriptionOperationSpec = {\n path: \"/subscriptions/{subscriptionId}/providers/Microsoft.Resources/deploymentStacks/{deploymentStackName}\",\n httpMethod: \"PUT\",\n responses: {\n 200: {\n bodyMapper: DeploymentStack,\n },\n 201: {\n bodyMapper: DeploymentStack,\n },\n 202: {\n bodyMapper: DeploymentStack,\n },\n 204: {\n bodyMapper: DeploymentStack,\n },\n default: {\n bodyMapper: DeploymentStacksError,\n },\n },\n requestBody: deploymentStack,\n queryParameters: [apiVersion],\n urlParameters: [\n $host,\n subscriptionId,\n deploymentStackName,\n ],\n headerParameters: [accept, contentType],\n mediaType: \"json\",\n serializer,\n};\nconst getAtSubscriptionOperationSpec = {\n path: \"/subscriptions/{subscriptionId}/providers/Microsoft.Resources/deploymentStacks/{deploymentStackName}\",\n httpMethod: \"GET\",\n responses: {\n 200: {\n bodyMapper: DeploymentStack,\n },\n default: {\n bodyMapper: DeploymentStacksError,\n },\n },\n queryParameters: [apiVersion],\n urlParameters: [\n $host,\n subscriptionId,\n deploymentStackName,\n ],\n headerParameters: [accept],\n serializer,\n};\nconst deleteAtSubscriptionOperationSpec = {\n path: \"/subscriptions/{subscriptionId}/providers/Microsoft.Resources/deploymentStacks/{deploymentStackName}\",\n httpMethod: \"DELETE\",\n responses: {\n 200: {},\n 201: {},\n 202: {},\n 204: {},\n default: {\n bodyMapper: DeploymentStacksError,\n },\n },\n queryParameters: [\n apiVersion,\n unmanageActionResources,\n unmanageActionResourceGroups,\n unmanageActionManagementGroups,\n bypassStackOutOfSyncError,\n ],\n urlParameters: [\n $host,\n subscriptionId,\n deploymentStackName,\n ],\n headerParameters: [accept],\n serializer,\n};\nconst createOrUpdateAtManagementGroupOperationSpec = {\n path: \"/providers/Microsoft.Management/managementGroups/{managementGroupId}/providers/Microsoft.Resources/deploymentStacks/{deploymentStackName}\",\n httpMethod: \"PUT\",\n responses: {\n 200: {\n bodyMapper: DeploymentStack,\n },\n 201: {\n bodyMapper: DeploymentStack,\n },\n 202: {\n bodyMapper: DeploymentStack,\n },\n 204: {\n bodyMapper: DeploymentStack,\n },\n default: {\n bodyMapper: DeploymentStacksError,\n },\n },\n requestBody: deploymentStack,\n queryParameters: [apiVersion],\n urlParameters: [\n $host,\n managementGroupId,\n deploymentStackName,\n ],\n headerParameters: [accept, contentType],\n mediaType: \"json\",\n serializer,\n};\nconst getAtManagementGroupOperationSpec = {\n path: \"/providers/Microsoft.Management/managementGroups/{managementGroupId}/providers/Microsoft.Resources/deploymentStacks/{deploymentStackName}\",\n httpMethod: \"GET\",\n responses: {\n 200: {\n bodyMapper: DeploymentStack,\n },\n default: {\n bodyMapper: DeploymentStacksError,\n },\n },\n queryParameters: [apiVersion],\n urlParameters: [\n $host,\n managementGroupId,\n deploymentStackName,\n ],\n headerParameters: [accept],\n serializer,\n};\nconst deleteAtManagementGroupOperationSpec = {\n path: \"/providers/Microsoft.Management/managementGroups/{managementGroupId}/providers/Microsoft.Resources/deploymentStacks/{deploymentStackName}\",\n httpMethod: \"DELETE\",\n responses: {\n 200: {},\n 201: {},\n 202: {},\n 204: {},\n default: {\n bodyMapper: DeploymentStacksError,\n },\n },\n queryParameters: [\n apiVersion,\n unmanageActionResources,\n unmanageActionResourceGroups,\n unmanageActionManagementGroups,\n bypassStackOutOfSyncError,\n ],\n urlParameters: [\n $host,\n managementGroupId,\n deploymentStackName,\n ],\n headerParameters: [accept],\n serializer,\n};\nconst exportTemplateAtResourceGroupOperationSpec = {\n path: \"/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Resources/deploymentStacks/{deploymentStackName}/exportTemplate\",\n httpMethod: \"POST\",\n responses: {\n 200: {\n bodyMapper: DeploymentStackTemplateDefinition,\n },\n default: {\n bodyMapper: DeploymentStacksError,\n },\n },\n queryParameters: [apiVersion],\n urlParameters: [\n $host,\n subscriptionId,\n resourceGroupName,\n deploymentStackName,\n ],\n headerParameters: [accept],\n serializer,\n};\nconst exportTemplateAtSubscriptionOperationSpec = {\n path: \"/subscriptions/{subscriptionId}/providers/Microsoft.Resources/deploymentStacks/{deploymentStackName}/exportTemplate\",\n httpMethod: \"POST\",\n responses: {\n 200: {\n bodyMapper: DeploymentStackTemplateDefinition,\n },\n default: {\n bodyMapper: DeploymentStacksError,\n },\n },\n queryParameters: [apiVersion],\n urlParameters: [\n $host,\n subscriptionId,\n deploymentStackName,\n ],\n headerParameters: [accept],\n serializer,\n};\nconst exportTemplateAtManagementGroupOperationSpec = {\n path: \"/providers/Microsoft.Management/managementGroups/{managementGroupId}/providers/Microsoft.Resources/deploymentStacks/{deploymentStackName}/exportTemplate\",\n httpMethod: \"POST\",\n responses: {\n 200: {\n bodyMapper: DeploymentStackTemplateDefinition,\n },\n default: {\n bodyMapper: DeploymentStacksError,\n },\n },\n queryParameters: [apiVersion],\n urlParameters: [\n $host,\n managementGroupId,\n deploymentStackName,\n ],\n headerParameters: [accept],\n serializer,\n};\nconst validateStackAtResourceGroupOperationSpec = {\n path: \"/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Resources/deploymentStacks/{deploymentStackName}/validate\",\n httpMethod: \"POST\",\n responses: {\n 200: {\n bodyMapper: DeploymentStackValidateResult,\n },\n 201: {\n bodyMapper: DeploymentStackValidateResult,\n },\n 202: {\n bodyMapper: DeploymentStackValidateResult,\n },\n 204: {\n bodyMapper: DeploymentStackValidateResult,\n },\n default: {\n bodyMapper: DeploymentStacksError,\n },\n },\n requestBody: deploymentStack,\n queryParameters: [apiVersion],\n urlParameters: [\n $host,\n subscriptionId,\n resourceGroupName,\n deploymentStackName,\n ],\n headerParameters: [accept, contentType],\n mediaType: \"json\",\n serializer,\n};\nconst validateStackAtSubscriptionOperationSpec = {\n path: \"/subscriptions/{subscriptionId}/providers/Microsoft.Resources/deploymentStacks/{deploymentStackName}/validate\",\n httpMethod: \"POST\",\n responses: {\n 200: {\n bodyMapper: DeploymentStackValidateResult,\n },\n 201: {\n bodyMapper: DeploymentStackValidateResult,\n },\n 202: {\n bodyMapper: DeploymentStackValidateResult,\n },\n 204: {\n bodyMapper: DeploymentStackValidateResult,\n },\n default: {\n bodyMapper: DeploymentStacksError,\n },\n },\n requestBody: deploymentStack,\n queryParameters: [apiVersion],\n urlParameters: [\n $host,\n subscriptionId,\n deploymentStackName,\n ],\n headerParameters: [accept, contentType],\n mediaType: \"json\",\n serializer,\n};\nconst validateStackAtManagementGroupOperationSpec = {\n path: \"/providers/Microsoft.Management/managementGroups/{managementGroupId}/providers/Microsoft.Resources/deploymentStacks/{deploymentStackName}/validate\",\n httpMethod: \"POST\",\n responses: {\n 200: {\n bodyMapper: DeploymentStackValidateResult,\n },\n 201: {\n bodyMapper: DeploymentStackValidateResult,\n },\n 202: {\n bodyMapper: DeploymentStackValidateResult,\n },\n 204: {\n bodyMapper: DeploymentStackValidateResult,\n },\n default: {\n bodyMapper: DeploymentStacksError,\n },\n },\n requestBody: deploymentStack,\n queryParameters: [apiVersion],\n urlParameters: [\n $host,\n managementGroupId,\n deploymentStackName,\n ],\n headerParameters: [accept, contentType],\n mediaType: \"json\",\n serializer,\n};\nconst listAtResourceGroupNextOperationSpec = {\n path: \"{nextLink}\",\n httpMethod: \"GET\",\n responses: {\n 200: {\n bodyMapper: DeploymentStackListResult,\n },\n default: {\n bodyMapper: DeploymentStacksError,\n },\n },\n urlParameters: [\n $host,\n subscriptionId,\n resourceGroupName,\n nextLink,\n ],\n headerParameters: [accept],\n serializer,\n};\nconst listAtSubscriptionNextOperationSpec = {\n path: \"{nextLink}\",\n httpMethod: \"GET\",\n responses: {\n 200: {\n bodyMapper: DeploymentStackListResult,\n },\n default: {\n bodyMapper: DeploymentStacksError,\n },\n },\n urlParameters: [\n $host,\n subscriptionId,\n nextLink,\n ],\n headerParameters: [accept],\n serializer,\n};\nconst listAtManagementGroupNextOperationSpec = {\n path: \"{nextLink}\",\n httpMethod: \"GET\",\n responses: {\n 200: {\n bodyMapper: DeploymentStackListResult,\n },\n default: {\n bodyMapper: DeploymentStacksError,\n },\n },\n urlParameters: [\n $host,\n managementGroupId,\n nextLink,\n ],\n headerParameters: [accept],\n serializer,\n};\n\n/*\n * Copyright (c) Microsoft Corporation.\n * Licensed under the MIT License.\n *\n * Code generated by Microsoft (R) AutoRest Code Generator.\n * Changes may cause incorrect behavior and will be lost if the code is regenerated.\n */\nclass DeploymentStacksClient extends coreClient__namespace.ServiceClient {\n constructor(credentials, subscriptionIdOrOptions, options) {\n var _a, _b, _c;\n if (credentials === undefined) {\n throw new Error(\"'credentials' cannot be null\");\n }\n let subscriptionId;\n if (typeof subscriptionIdOrOptions === \"string\") {\n subscriptionId = subscriptionIdOrOptions;\n }\n else if (typeof subscriptionIdOrOptions === \"object\") {\n options = subscriptionIdOrOptions;\n }\n // Initializing default values for options\n if (!options) {\n options = {};\n }\n const defaults = {\n requestContentType: \"application/json; charset=utf-8\",\n credential: credentials,\n };\n const packageDetails = `azsdk-js-arm-resourcesdeploymentstacks/1.0.0`;\n const userAgentPrefix = options.userAgentOptions && options.userAgentOptions.userAgentPrefix\n ? `${options.userAgentOptions.userAgentPrefix} ${packageDetails}`\n : `${packageDetails}`;\n const optionsWithDefaults = Object.assign(Object.assign(Object.assign({}, defaults), options), { userAgentOptions: {\n userAgentPrefix,\n }, endpoint: (_b = (_a = options.endpoint) !== null && _a !== void 0 ? _a : options.baseUri) !== null && _b !== void 0 ? _b : \"https://management.azure.com\" });\n super(optionsWithDefaults);\n let bearerTokenAuthenticationPolicyFound = false;\n if ((options === null || options === void 0 ? void 0 : options.pipeline) && options.pipeline.getOrderedPolicies().length > 0) {\n const pipelinePolicies = options.pipeline.getOrderedPolicies();\n bearerTokenAuthenticationPolicyFound = pipelinePolicies.some((pipelinePolicy) => pipelinePolicy.name ===\n coreRestPipeline__namespace.bearerTokenAuthenticationPolicyName);\n }\n if (!options ||\n !options.pipeline ||\n options.pipeline.getOrderedPolicies().length == 0 ||\n !bearerTokenAuthenticationPolicyFound) {\n this.pipeline.removePolicy({\n name: coreRestPipeline__namespace.bearerTokenAuthenticationPolicyName,\n });\n this.pipeline.addPolicy(coreRestPipeline__namespace.bearerTokenAuthenticationPolicy({\n credential: credentials,\n scopes: (_c = optionsWithDefaults.credentialScopes) !== null && _c !== void 0 ? _c : `${optionsWithDefaults.endpoint}/.default`,\n challengeCallbacks: {\n authorizeRequestOnChallenge: coreClient__namespace.authorizeRequestOnClaimChallenge,\n },\n }));\n }\n // Parameter assignments\n this.subscriptionId = subscriptionId;\n // Assigning values to Constant parameters\n this.$host = options.$host || \"https://management.azure.com\";\n this.apiVersion = options.apiVersion || \"2024-03-01\";\n this.deploymentStacks = new DeploymentStacksImpl(this);\n this.addCustomApiVersionPolicy(options.apiVersion);\n }\n /** A function that adds a policy that sets the api-version (or equivalent) to reflect the library version. */\n addCustomApiVersionPolicy(apiVersion) {\n if (!apiVersion) {\n return;\n }\n const apiVersionPolicy = {\n name: \"CustomApiVersionPolicy\",\n sendRequest(request, next) {\n return tslib.__awaiter(this, void 0, void 0, function* () {\n const param = request.url.split(\"?\");\n if (param.length > 1) {\n const newParams = param[1].split(\"&\").map((item) => {\n if (item.indexOf(\"api-version\") > -1) {\n return \"api-version=\" + apiVersion;\n }\n else {\n return item;\n }\n });\n request.url = param[0] + \"?\" + newParams.join(\"&\");\n }\n return next(request);\n });\n },\n };\n this.pipeline.addPolicy(apiVersionPolicy);\n }\n}\n\nexports.DeploymentStacksClient = DeploymentStacksClient;\nexports.getContinuationToken = getContinuationToken;\n//# sourceMappingURL=index.js.map\n","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.DEFAULT_TOKEN_CACHE_NAME = exports.CACHE_NON_CAE_SUFFIX = exports.CACHE_CAE_SUFFIX = exports.ALL_TENANTS = exports.DefaultAuthority = exports.DefaultAuthorityHost = exports.AzureAuthorityHosts = exports.DefaultTenantId = exports.DeveloperSignOnClientId = exports.SDK_VERSION = void 0;\n/**\n * Current version of the `@azure/identity` package.\n */\nexports.SDK_VERSION = `4.13.0`;\n/**\n * The default client ID for authentication\n * @internal\n */\n// TODO: temporary - this is the Azure CLI clientID - we'll replace it when\n// Developer Sign On application is available\n// https://github.com/Azure/azure-sdk-for-net/blob/main/sdk/identity/Azure.Identity/src/Constants.cs#L9\nexports.DeveloperSignOnClientId = \"04b07795-8ddb-461a-bbee-02f9e1bf7b46\";\n/**\n * The default tenant for authentication\n * @internal\n */\nexports.DefaultTenantId = \"common\";\n/**\n * A list of known Azure authority hosts\n */\nvar AzureAuthorityHosts;\n(function (AzureAuthorityHosts) {\n /**\n * China-based Azure Authority Host\n */\n AzureAuthorityHosts[\"AzureChina\"] = \"https://login.chinacloudapi.cn\";\n /**\n * Germany-based Azure Authority Host\n *\n * @deprecated Microsoft Cloud Germany was closed on October 29th, 2021.\n *\n * */\n AzureAuthorityHosts[\"AzureGermany\"] = \"https://login.microsoftonline.de\";\n /**\n * US Government Azure Authority Host\n */\n AzureAuthorityHosts[\"AzureGovernment\"] = \"https://login.microsoftonline.us\";\n /**\n * Public Cloud Azure Authority Host\n */\n AzureAuthorityHosts[\"AzurePublicCloud\"] = \"https://login.microsoftonline.com\";\n})(AzureAuthorityHosts || (exports.AzureAuthorityHosts = AzureAuthorityHosts = {}));\n/**\n * @internal\n * The default authority host.\n */\nexports.DefaultAuthorityHost = AzureAuthorityHosts.AzurePublicCloud;\n/**\n * @internal\n * The default environment host for Azure Public Cloud\n */\nexports.DefaultAuthority = \"login.microsoftonline.com\";\n/**\n * @internal\n * Allow acquiring tokens for any tenant for multi-tentant auth.\n */\nexports.ALL_TENANTS = [\"*\"];\n/**\n * @internal\n */\nexports.CACHE_CAE_SUFFIX = \"cae\";\n/**\n * @internal\n */\nexports.CACHE_NON_CAE_SUFFIX = \"nocae\";\n/**\n * @internal\n *\n * The default name for the cache persistence plugin.\n * Matches the constant defined in the cache persistence package.\n */\nexports.DEFAULT_TOKEN_CACHE_NAME = \"msal.cache\";\n//# sourceMappingURL=constants.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.msalPlugins = exports.msalNodeFlowVSCodeCredentialControl = exports.msalNodeFlowNativeBrokerControl = exports.vsCodeBrokerInfo = exports.vsCodeAuthRecordPath = exports.nativeBrokerInfo = exports.msalNodeFlowCacheControl = exports.persistenceProvider = void 0;\nexports.hasNativeBroker = hasNativeBroker;\nexports.hasVSCodePlugin = hasVSCodePlugin;\nconst constants_js_1 = require(\"../../constants.js\");\n/**\n * The current persistence provider, undefined by default.\n * @internal\n */\nexports.persistenceProvider = undefined;\n/**\n * An object that allows setting the persistence provider.\n * @internal\n */\nexports.msalNodeFlowCacheControl = {\n setPersistence(pluginProvider) {\n exports.persistenceProvider = pluginProvider;\n },\n};\n/**\n * The current native broker provider, undefined by default.\n * @internal\n */\nexports.nativeBrokerInfo = undefined;\n/**\n * The current VSCode auth record path, undefined by default.\n * @internal\n */\nexports.vsCodeAuthRecordPath = undefined;\n/**\n * The current VSCode broker, undefined by default.\n * @internal\n */\nexports.vsCodeBrokerInfo = undefined;\nfunction hasNativeBroker() {\n return exports.nativeBrokerInfo !== undefined;\n}\nfunction hasVSCodePlugin() {\n return exports.vsCodeAuthRecordPath !== undefined && exports.vsCodeBrokerInfo !== undefined;\n}\n/**\n * An object that allows setting the native broker provider.\n * @internal\n */\nexports.msalNodeFlowNativeBrokerControl = {\n setNativeBroker(broker) {\n exports.nativeBrokerInfo = {\n broker,\n };\n },\n};\n/**\n * An object that allows setting the VSCode credential auth record path and broker.\n * @internal\n */\nexports.msalNodeFlowVSCodeCredentialControl = {\n setVSCodeAuthRecordPath(path) {\n exports.vsCodeAuthRecordPath = path;\n },\n setVSCodeBroker(broker) {\n exports.vsCodeBrokerInfo = {\n broker,\n };\n },\n};\n/**\n * Configures plugins, validating that required plugins are available and enabled.\n *\n * Does not create the plugins themselves, but rather returns the configuration that will be used to create them.\n *\n * @param options - options for creating the MSAL client\n * @returns plugin configuration\n */\nfunction generatePluginConfiguration(options) {\n const config = {\n cache: {},\n broker: {\n ...options.brokerOptions,\n isEnabled: options.brokerOptions?.enabled ?? false,\n enableMsaPassthrough: options.brokerOptions?.legacyEnableMsaPassthrough ?? false,\n },\n };\n if (options.tokenCachePersistenceOptions?.enabled) {\n if (exports.persistenceProvider === undefined) {\n throw new Error([\n \"Persistent token caching was requested, but no persistence provider was configured.\",\n \"You must install the identity-cache-persistence plugin package (`npm install --save @azure/identity-cache-persistence`)\",\n \"and enable it by importing `useIdentityPlugin` from `@azure/identity` and calling\",\n \"`useIdentityPlugin(cachePersistencePlugin)` before using `tokenCachePersistenceOptions`.\",\n ].join(\" \"));\n }\n const cacheBaseName = options.tokenCachePersistenceOptions.name || constants_js_1.DEFAULT_TOKEN_CACHE_NAME;\n config.cache.cachePlugin = (0, exports.persistenceProvider)({\n name: `${cacheBaseName}.${constants_js_1.CACHE_NON_CAE_SUFFIX}`,\n ...options.tokenCachePersistenceOptions,\n });\n config.cache.cachePluginCae = (0, exports.persistenceProvider)({\n name: `${cacheBaseName}.${constants_js_1.CACHE_CAE_SUFFIX}`,\n ...options.tokenCachePersistenceOptions,\n });\n }\n if (options.brokerOptions?.enabled) {\n config.broker.nativeBrokerPlugin = getBrokerPlugin(options.isVSCodeCredential || false);\n }\n return config;\n}\n// Broker error message templates with variables for credential and package names\nconst brokerErrorTemplates = {\n missing: (credentialName, packageName, pluginVar) => [\n `${credentialName} was requested, but no plugin was configured or no authentication record was found.`,\n `You must install the ${packageName} plugin package (npm install --save ${packageName})`,\n \"and enable it by importing `useIdentityPlugin` from `@azure/identity` and calling\",\n `useIdentityPlugin(${pluginVar}) before using enableBroker.`,\n ].join(\" \"),\n unavailable: (credentialName, packageName) => [\n `${credentialName} was requested, and the plugin is configured, but the broker is unavailable.`,\n `Ensure the ${credentialName} plugin is properly installed and configured.`,\n \"Check for missing native dependencies and ensure the package is properly installed.\",\n `See the README for prerequisites on installing and using ${packageName}.`,\n ].join(\" \"),\n};\n// Values for VSCode and native broker configurations for error message\nconst brokerConfig = {\n vsCode: {\n credentialName: \"Visual Studio Code Credential\",\n packageName: \"@azure/identity-vscode\",\n pluginVar: \"vsCodePlugin\",\n get brokerInfo() {\n return exports.vsCodeBrokerInfo;\n },\n },\n native: {\n credentialName: \"Broker for WAM\",\n packageName: \"@azure/identity-broker\",\n pluginVar: \"nativeBrokerPlugin\",\n get brokerInfo() {\n return exports.nativeBrokerInfo;\n },\n },\n};\n/**\n * Set appropriate broker plugin based on whether VSCode or native broker is requested.\n * @param isVSCodePlugin - true for VSCode broker, false for native broker\n * @returns the broker plugin if available\n */\nfunction getBrokerPlugin(isVSCodePlugin) {\n const { credentialName, packageName, pluginVar, brokerInfo } = brokerConfig[isVSCodePlugin ? \"vsCode\" : \"native\"];\n if (brokerInfo === undefined) {\n throw new Error(brokerErrorTemplates.missing(credentialName, packageName, pluginVar));\n }\n if (brokerInfo.broker.isBrokerAvailable === false) {\n throw new Error(brokerErrorTemplates.unavailable(credentialName, packageName));\n }\n return brokerInfo.broker;\n}\n/**\n * Wraps generatePluginConfiguration as a writeable property for test stubbing purposes.\n */\nexports.msalPlugins = {\n generatePluginConfiguration,\n};\n//# sourceMappingURL=msalPlugins.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.useIdentityPlugin = useIdentityPlugin;\nconst msalPlugins_js_1 = require(\"../msal/nodeFlows/msalPlugins.js\");\n/**\n * The context passed to an Identity plugin. This contains objects that\n * plugins can use to set backend implementations.\n */\nconst pluginContext = {\n cachePluginControl: msalPlugins_js_1.msalNodeFlowCacheControl,\n nativeBrokerPluginControl: msalPlugins_js_1.msalNodeFlowNativeBrokerControl,\n vsCodeCredentialControl: msalPlugins_js_1.msalNodeFlowVSCodeCredentialControl,\n};\n/**\n * Extend Azure Identity with additional functionality. Pass a plugin from\n * a plugin package, such as:\n *\n * - `@azure/identity-cache-persistence`: provides persistent token caching\n * - `@azure/identity-vscode`: provides the dependencies of\n * `VisualStudioCodeCredential` and enables it\n *\n * Example:\n *\n * ```ts snippet:consumer_example\n * import { useIdentityPlugin, DeviceCodeCredential } from \"@azure/identity\";\n *\n * useIdentityPlugin(cachePersistencePlugin);\n * // The plugin has the capability to extend `DeviceCodeCredential` and to\n * // add middleware to the underlying credentials, such as persistence.\n * const credential = new DeviceCodeCredential({\n * tokenCachePersistenceOptions: {\n * enabled: true,\n * },\n * });\n * ```\n *\n * @param plugin - the plugin to register\n */\nfunction useIdentityPlugin(plugin) {\n plugin(pluginContext);\n}\n//# sourceMappingURL=consumer.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.AuthenticationRequiredError = exports.AggregateAuthenticationError = exports.AggregateAuthenticationErrorName = exports.AuthenticationError = exports.AuthenticationErrorName = exports.CredentialUnavailableError = exports.CredentialUnavailableErrorName = void 0;\nfunction isErrorResponse(errorResponse) {\n return (errorResponse &&\n typeof errorResponse.error === \"string\" &&\n typeof errorResponse.error_description === \"string\");\n}\n/**\n * The Error.name value of an CredentialUnavailable\n */\nexports.CredentialUnavailableErrorName = \"CredentialUnavailableError\";\n/**\n * This signifies that the credential that was tried in a chained credential\n * was not available to be used as the credential. Rather than treating this as\n * an error that should halt the chain, it's caught and the chain continues\n */\nclass CredentialUnavailableError extends Error {\n constructor(message, options) {\n super(message, options);\n this.name = exports.CredentialUnavailableErrorName;\n }\n}\nexports.CredentialUnavailableError = CredentialUnavailableError;\n/**\n * The Error.name value of an AuthenticationError\n */\nexports.AuthenticationErrorName = \"AuthenticationError\";\n/**\n * Provides details about a failure to authenticate with Azure Active\n * Directory. The `errorResponse` field contains more details about\n * the specific failure.\n */\nclass AuthenticationError extends Error {\n /**\n * The HTTP status code returned from the authentication request.\n */\n statusCode;\n /**\n * The error response details.\n */\n errorResponse;\n constructor(statusCode, errorBody, options) {\n let errorResponse = {\n error: \"unknown\",\n errorDescription: \"An unknown error occurred and no additional details are available.\",\n };\n if (isErrorResponse(errorBody)) {\n errorResponse = convertOAuthErrorResponseToErrorResponse(errorBody);\n }\n else if (typeof errorBody === \"string\") {\n try {\n // Most error responses will contain JSON-formatted error details\n // in the response body\n const oauthErrorResponse = JSON.parse(errorBody);\n errorResponse = convertOAuthErrorResponseToErrorResponse(oauthErrorResponse);\n }\n catch (e) {\n if (statusCode === 400) {\n errorResponse = {\n error: \"invalid_request\",\n errorDescription: `The service indicated that the request was invalid.\\n\\n${errorBody}`,\n };\n }\n else {\n errorResponse = {\n error: \"unknown_error\",\n errorDescription: `An unknown error has occurred. Response body:\\n\\n${errorBody}`,\n };\n }\n }\n }\n else {\n errorResponse = {\n error: \"unknown_error\",\n errorDescription: \"An unknown error occurred and no additional details are available.\",\n };\n }\n super(`${errorResponse.error} Status code: ${statusCode}\\nMore details:\\n${errorResponse.errorDescription},`, options);\n this.statusCode = statusCode;\n this.errorResponse = errorResponse;\n // Ensure that this type reports the correct name\n this.name = exports.AuthenticationErrorName;\n }\n}\nexports.AuthenticationError = AuthenticationError;\n/**\n * The Error.name value of an AggregateAuthenticationError\n */\nexports.AggregateAuthenticationErrorName = \"AggregateAuthenticationError\";\n/**\n * Provides an `errors` array containing {@link AuthenticationError} instance\n * for authentication failures from credentials in a {@link ChainedTokenCredential}.\n */\nclass AggregateAuthenticationError extends Error {\n /**\n * The array of error objects that were thrown while trying to authenticate\n * with the credentials in a {@link ChainedTokenCredential}.\n */\n errors;\n constructor(errors, errorMessage) {\n const errorDetail = errors.join(\"\\n\");\n super(`${errorMessage}\\n${errorDetail}`);\n this.errors = errors;\n // Ensure that this type reports the correct name\n this.name = exports.AggregateAuthenticationErrorName;\n }\n}\nexports.AggregateAuthenticationError = AggregateAuthenticationError;\nfunction convertOAuthErrorResponseToErrorResponse(errorBody) {\n return {\n error: errorBody.error,\n errorDescription: errorBody.error_description,\n correlationId: errorBody.correlation_id,\n errorCodes: errorBody.error_codes,\n timestamp: errorBody.timestamp,\n traceId: errorBody.trace_id,\n };\n}\n/**\n * Error used to enforce authentication after trying to retrieve a token silently.\n */\nclass AuthenticationRequiredError extends Error {\n /**\n * The list of scopes for which the token will have access.\n */\n scopes;\n /**\n * The options passed to the getToken request.\n */\n getTokenOptions;\n constructor(\n /**\n * Optional parameters. A message can be specified. The {@link GetTokenOptions} of the request can also be specified to more easily associate the error with the received parameters.\n */\n options) {\n super(options.message, options.cause ? { cause: options.cause } : undefined);\n this.scopes = options.scopes;\n this.getTokenOptions = options.getTokenOptions;\n this.name = \"AuthenticationRequiredError\";\n }\n}\nexports.AuthenticationRequiredError = AuthenticationRequiredError;\n//# sourceMappingURL=errors.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.logger = void 0;\nexports.processEnvVars = processEnvVars;\nexports.logEnvVars = logEnvVars;\nexports.formatSuccess = formatSuccess;\nexports.formatError = formatError;\nexports.credentialLoggerInstance = credentialLoggerInstance;\nexports.credentialLogger = credentialLogger;\nconst logger_1 = require(\"@azure/logger\");\n/**\n * The AzureLogger used for all clients within the identity package\n */\nexports.logger = (0, logger_1.createClientLogger)(\"identity\");\n/**\n * Separates a list of environment variable names into a plain object with two arrays: an array of missing environment variables and another array with assigned environment variables.\n * @param supportedEnvVars - List of environment variable names\n */\nfunction processEnvVars(supportedEnvVars) {\n return supportedEnvVars.reduce((acc, envVariable) => {\n if (process.env[envVariable]) {\n acc.assigned.push(envVariable);\n }\n else {\n acc.missing.push(envVariable);\n }\n return acc;\n }, { missing: [], assigned: [] });\n}\n/**\n * Based on a given list of environment variable names,\n * logs the environment variables currently assigned during the usage of a credential that goes by the given name.\n * @param credentialName - Name of the credential in use\n * @param supportedEnvVars - List of environment variables supported by that credential\n */\nfunction logEnvVars(credentialName, supportedEnvVars) {\n const { assigned } = processEnvVars(supportedEnvVars);\n exports.logger.info(`${credentialName} => Found the following environment variables: ${assigned.join(\", \")}`);\n}\n/**\n * Formatting the success event on the credentials\n */\nfunction formatSuccess(scope) {\n return `SUCCESS. Scopes: ${Array.isArray(scope) ? scope.join(\", \") : scope}.`;\n}\n/**\n * Formatting the success event on the credentials\n */\nfunction formatError(scope, error) {\n let message = \"ERROR.\";\n if (scope?.length) {\n message += ` Scopes: ${Array.isArray(scope) ? scope.join(\", \") : scope}.`;\n }\n return `${message} Error message: ${typeof error === \"string\" ? error : error.message}.`;\n}\n/**\n * Generates a CredentialLoggerInstance.\n *\n * It logs with the format:\n *\n * `[title] => [message]`\n *\n */\nfunction credentialLoggerInstance(title, parent, log = exports.logger) {\n const fullTitle = parent ? `${parent.fullTitle} ${title}` : title;\n function info(message) {\n log.info(`${fullTitle} =>`, message);\n }\n function warning(message) {\n log.warning(`${fullTitle} =>`, message);\n }\n function verbose(message) {\n log.verbose(`${fullTitle} =>`, message);\n }\n function error(message) {\n log.error(`${fullTitle} =>`, message);\n }\n return {\n title,\n fullTitle,\n info,\n warning,\n verbose,\n error,\n };\n}\n/**\n * Generates a CredentialLogger, which is a logger declared at the credential's constructor, and used at any point in the credential.\n * It has all the properties of a CredentialLoggerInstance, plus other logger instances, one per method.\n *\n * It logs with the format:\n *\n * `[title] => [message]`\n * `[title] => getToken() => [message]`\n *\n */\nfunction credentialLogger(title, log = exports.logger) {\n const credLogger = credentialLoggerInstance(title, undefined, log);\n return {\n ...credLogger,\n parent: log,\n getToken: credentialLoggerInstance(\"=> getToken()\", credLogger, log),\n };\n}\n//# sourceMappingURL=logging.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.tracingClient = void 0;\nconst constants_js_1 = require(\"../constants.js\");\nconst core_tracing_1 = require(\"@azure/core-tracing\");\n/**\n * Creates a span using the global tracer.\n * @internal\n */\nexports.tracingClient = (0, core_tracing_1.createTracingClient)({\n namespace: \"Microsoft.AAD\",\n packageName: \"@azure/identity\",\n packageVersion: constants_js_1.SDK_VERSION,\n});\n//# sourceMappingURL=tracing.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ChainedTokenCredential = exports.logger = void 0;\nconst errors_js_1 = require(\"../errors.js\");\nconst logging_js_1 = require(\"../util/logging.js\");\nconst tracing_js_1 = require(\"../util/tracing.js\");\n/**\n * @internal\n */\nexports.logger = (0, logging_js_1.credentialLogger)(\"ChainedTokenCredential\");\n/**\n * Enables multiple `TokenCredential` implementations to be tried in order until\n * one of the getToken methods returns an access token. For more information, see\n * [ChainedTokenCredential overview](https://aka.ms/azsdk/js/identity/credential-chains#use-chainedtokencredential-for-granularity).\n */\nclass ChainedTokenCredential {\n _sources = [];\n /**\n * Creates an instance of ChainedTokenCredential using the given credentials.\n *\n * @param sources - `TokenCredential` implementations to be tried in order.\n *\n * Example usage:\n * ```ts snippet:chained_token_credential_example\n * import { ClientSecretCredential, ChainedTokenCredential } from \"@azure/identity\";\n *\n * const tenantId = \"\";\n * const clientId = \"\";\n * const clientSecret = \"\";\n * const anotherClientId = \"\";\n * const anotherSecret = \"\";\n *\n * const firstCredential = new ClientSecretCredential(tenantId, clientId, clientSecret);\n * const secondCredential = new ClientSecretCredential(tenantId, anotherClientId, anotherSecret);\n *\n * const credentialChain = new ChainedTokenCredential(firstCredential, secondCredential);\n * ```\n */\n constructor(...sources) {\n this._sources = sources;\n }\n /**\n * Returns the first access token returned by one of the chained\n * `TokenCredential` implementations. Throws an {@link AggregateAuthenticationError}\n * when one or more credentials throws an {@link AuthenticationError} and\n * no credentials have returned an access token.\n *\n * This method is called automatically by Azure SDK client libraries. You may call this method\n * directly, but you must also handle token caching and token refreshing.\n *\n * @param scopes - The list of scopes for which the token will have access.\n * @param options - The options used to configure any requests this\n * `TokenCredential` implementation might make.\n */\n async getToken(scopes, options = {}) {\n const { token } = await this.getTokenInternal(scopes, options);\n return token;\n }\n async getTokenInternal(scopes, options = {}) {\n let token = null;\n let successfulCredential;\n const errors = [];\n return tracing_js_1.tracingClient.withSpan(\"ChainedTokenCredential.getToken\", options, async (updatedOptions) => {\n for (let i = 0; i < this._sources.length && token === null; i++) {\n try {\n token = await this._sources[i].getToken(scopes, updatedOptions);\n successfulCredential = this._sources[i];\n }\n catch (err) {\n if (err.name === \"CredentialUnavailableError\" ||\n err.name === \"AuthenticationRequiredError\") {\n errors.push(err);\n }\n else {\n exports.logger.getToken.info((0, logging_js_1.formatError)(scopes, err));\n throw err;\n }\n }\n }\n if (!token && errors.length > 0) {\n const err = new errors_js_1.AggregateAuthenticationError(errors, \"ChainedTokenCredential authentication failed.\");\n exports.logger.getToken.info((0, logging_js_1.formatError)(scopes, err));\n throw err;\n }\n exports.logger.getToken.info(`Result for ${successfulCredential.constructor.name}: ${(0, logging_js_1.formatSuccess)(scopes)}`);\n if (token === null) {\n throw new errors_js_1.CredentialUnavailableError(\"Failed to retrieve a valid token\");\n }\n return { token, successfulCredential };\n });\n }\n}\nexports.ChainedTokenCredential = ChainedTokenCredential;\n//# sourceMappingURL=chainedTokenCredential.js.map","import crypto from 'crypto';\nconst rnds8Pool = new Uint8Array(256); // # of random values to pre-allocate\n\nlet poolPtr = rnds8Pool.length;\nexport default function rng() {\n if (poolPtr > rnds8Pool.length - 16) {\n crypto.randomFillSync(rnds8Pool);\n poolPtr = 0;\n }\n\n return rnds8Pool.slice(poolPtr, poolPtr += 16);\n}","export default /^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i;","import REGEX from './regex.js';\n\nfunction validate(uuid) {\n return typeof uuid === 'string' && REGEX.test(uuid);\n}\n\nexport default validate;","import validate from './validate.js';\n/**\n * Convert array of 16 byte values to UUID string format of the form:\n * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX\n */\n\nconst byteToHex = [];\n\nfor (let i = 0; i < 256; ++i) {\n byteToHex.push((i + 0x100).toString(16).substr(1));\n}\n\nfunction stringify(arr, offset = 0) {\n // Note: Be careful editing this code! It's been tuned for performance\n // and works in ways you may not expect. See https://github.com/uuidjs/uuid/pull/434\n const uuid = (byteToHex[arr[offset + 0]] + byteToHex[arr[offset + 1]] + byteToHex[arr[offset + 2]] + byteToHex[arr[offset + 3]] + '-' + byteToHex[arr[offset + 4]] + byteToHex[arr[offset + 5]] + '-' + byteToHex[arr[offset + 6]] + byteToHex[arr[offset + 7]] + '-' + byteToHex[arr[offset + 8]] + byteToHex[arr[offset + 9]] + '-' + byteToHex[arr[offset + 10]] + byteToHex[arr[offset + 11]] + byteToHex[arr[offset + 12]] + byteToHex[arr[offset + 13]] + byteToHex[arr[offset + 14]] + byteToHex[arr[offset + 15]]).toLowerCase(); // Consistency check for valid UUID. If this throws, it's likely due to one\n // of the following:\n // - One or more input array values don't map to a hex octet (leading to\n // \"undefined\" in the uuid)\n // - Invalid input values for the RFC `version` or `variant` fields\n\n if (!validate(uuid)) {\n throw TypeError('Stringified UUID is invalid');\n }\n\n return uuid;\n}\n\nexport default stringify;","import rng from './rng.js';\nimport stringify from './stringify.js'; // **`v1()` - Generate time-based UUID**\n//\n// Inspired by https://github.com/LiosK/UUID.js\n// and http://docs.python.org/library/uuid.html\n\nlet _nodeId;\n\nlet _clockseq; // Previous uuid creation time\n\n\nlet _lastMSecs = 0;\nlet _lastNSecs = 0; // See https://github.com/uuidjs/uuid for API details\n\nfunction v1(options, buf, offset) {\n let i = buf && offset || 0;\n const b = buf || new Array(16);\n options = options || {};\n let node = options.node || _nodeId;\n let clockseq = options.clockseq !== undefined ? options.clockseq : _clockseq; // node and clockseq need to be initialized to random values if they're not\n // specified. We do this lazily to minimize issues related to insufficient\n // system entropy. See #189\n\n if (node == null || clockseq == null) {\n const seedBytes = options.random || (options.rng || rng)();\n\n if (node == null) {\n // Per 4.5, create and 48-bit node id, (47 random bits + multicast bit = 1)\n node = _nodeId = [seedBytes[0] | 0x01, seedBytes[1], seedBytes[2], seedBytes[3], seedBytes[4], seedBytes[5]];\n }\n\n if (clockseq == null) {\n // Per 4.2.2, randomize (14 bit) clockseq\n clockseq = _clockseq = (seedBytes[6] << 8 | seedBytes[7]) & 0x3fff;\n }\n } // UUID timestamps are 100 nano-second units since the Gregorian epoch,\n // (1582-10-15 00:00). JSNumbers aren't precise enough for this, so\n // time is handled internally as 'msecs' (integer milliseconds) and 'nsecs'\n // (100-nanoseconds offset from msecs) since unix epoch, 1970-01-01 00:00.\n\n\n let msecs = options.msecs !== undefined ? options.msecs : Date.now(); // Per 4.2.1.2, use count of uuid's generated during the current clock\n // cycle to simulate higher resolution clock\n\n let nsecs = options.nsecs !== undefined ? options.nsecs : _lastNSecs + 1; // Time since last uuid creation (in msecs)\n\n const dt = msecs - _lastMSecs + (nsecs - _lastNSecs) / 10000; // Per 4.2.1.2, Bump clockseq on clock regression\n\n if (dt < 0 && options.clockseq === undefined) {\n clockseq = clockseq + 1 & 0x3fff;\n } // Reset nsecs if clock regresses (new clockseq) or we've moved onto a new\n // time interval\n\n\n if ((dt < 0 || msecs > _lastMSecs) && options.nsecs === undefined) {\n nsecs = 0;\n } // Per 4.2.1.2 Throw error if too many uuids are requested\n\n\n if (nsecs >= 10000) {\n throw new Error(\"uuid.v1(): Can't create more than 10M uuids/sec\");\n }\n\n _lastMSecs = msecs;\n _lastNSecs = nsecs;\n _clockseq = clockseq; // Per 4.1.4 - Convert from unix epoch to Gregorian epoch\n\n msecs += 12219292800000; // `time_low`\n\n const tl = ((msecs & 0xfffffff) * 10000 + nsecs) % 0x100000000;\n b[i++] = tl >>> 24 & 0xff;\n b[i++] = tl >>> 16 & 0xff;\n b[i++] = tl >>> 8 & 0xff;\n b[i++] = tl & 0xff; // `time_mid`\n\n const tmh = msecs / 0x100000000 * 10000 & 0xfffffff;\n b[i++] = tmh >>> 8 & 0xff;\n b[i++] = tmh & 0xff; // `time_high_and_version`\n\n b[i++] = tmh >>> 24 & 0xf | 0x10; // include version\n\n b[i++] = tmh >>> 16 & 0xff; // `clock_seq_hi_and_reserved` (Per 4.2.2 - include variant)\n\n b[i++] = clockseq >>> 8 | 0x80; // `clock_seq_low`\n\n b[i++] = clockseq & 0xff; // `node`\n\n for (let n = 0; n < 6; ++n) {\n b[i + n] = node[n];\n }\n\n return buf || stringify(b);\n}\n\nexport default v1;","import validate from './validate.js';\n\nfunction parse(uuid) {\n if (!validate(uuid)) {\n throw TypeError('Invalid UUID');\n }\n\n let v;\n const arr = new Uint8Array(16); // Parse ########-....-....-....-............\n\n arr[0] = (v = parseInt(uuid.slice(0, 8), 16)) >>> 24;\n arr[1] = v >>> 16 & 0xff;\n arr[2] = v >>> 8 & 0xff;\n arr[3] = v & 0xff; // Parse ........-####-....-....-............\n\n arr[4] = (v = parseInt(uuid.slice(9, 13), 16)) >>> 8;\n arr[5] = v & 0xff; // Parse ........-....-####-....-............\n\n arr[6] = (v = parseInt(uuid.slice(14, 18), 16)) >>> 8;\n arr[7] = v & 0xff; // Parse ........-....-....-####-............\n\n arr[8] = (v = parseInt(uuid.slice(19, 23), 16)) >>> 8;\n arr[9] = v & 0xff; // Parse ........-....-....-....-############\n // (Use \"/\" to avoid 32-bit truncation when bit-shifting high-order bytes)\n\n arr[10] = (v = parseInt(uuid.slice(24, 36), 16)) / 0x10000000000 & 0xff;\n arr[11] = v / 0x100000000 & 0xff;\n arr[12] = v >>> 24 & 0xff;\n arr[13] = v >>> 16 & 0xff;\n arr[14] = v >>> 8 & 0xff;\n arr[15] = v & 0xff;\n return arr;\n}\n\nexport default parse;","import stringify from './stringify.js';\nimport parse from './parse.js';\n\nfunction stringToBytes(str) {\n str = unescape(encodeURIComponent(str)); // UTF8 escape\n\n const bytes = [];\n\n for (let i = 0; i < str.length; ++i) {\n bytes.push(str.charCodeAt(i));\n }\n\n return bytes;\n}\n\nexport const DNS = '6ba7b810-9dad-11d1-80b4-00c04fd430c8';\nexport const URL = '6ba7b811-9dad-11d1-80b4-00c04fd430c8';\nexport default function (name, version, hashfunc) {\n function generateUUID(value, namespace, buf, offset) {\n if (typeof value === 'string') {\n value = stringToBytes(value);\n }\n\n if (typeof namespace === 'string') {\n namespace = parse(namespace);\n }\n\n if (namespace.length !== 16) {\n throw TypeError('Namespace must be array-like (16 iterable integer values, 0-255)');\n } // Compute hash of namespace and value, Per 4.3\n // Future: Use spread syntax when supported on all platforms, e.g. `bytes =\n // hashfunc([...namespace, ... value])`\n\n\n let bytes = new Uint8Array(16 + value.length);\n bytes.set(namespace);\n bytes.set(value, namespace.length);\n bytes = hashfunc(bytes);\n bytes[6] = bytes[6] & 0x0f | version;\n bytes[8] = bytes[8] & 0x3f | 0x80;\n\n if (buf) {\n offset = offset || 0;\n\n for (let i = 0; i < 16; ++i) {\n buf[offset + i] = bytes[i];\n }\n\n return buf;\n }\n\n return stringify(bytes);\n } // Function#name is not settable on some platforms (#270)\n\n\n try {\n generateUUID.name = name; // eslint-disable-next-line no-empty\n } catch (err) {} // For CommonJS default export support\n\n\n generateUUID.DNS = DNS;\n generateUUID.URL = URL;\n return generateUUID;\n}","import crypto from 'crypto';\n\nfunction md5(bytes) {\n if (Array.isArray(bytes)) {\n bytes = Buffer.from(bytes);\n } else if (typeof bytes === 'string') {\n bytes = Buffer.from(bytes, 'utf8');\n }\n\n return crypto.createHash('md5').update(bytes).digest();\n}\n\nexport default md5;","import v35 from './v35.js';\nimport md5 from './md5.js';\nconst v3 = v35('v3', 0x30, md5);\nexport default v3;","import rng from './rng.js';\nimport stringify from './stringify.js';\n\nfunction v4(options, buf, offset) {\n options = options || {};\n const rnds = options.random || (options.rng || rng)(); // Per 4.4, set bits for version and `clock_seq_hi_and_reserved`\n\n rnds[6] = rnds[6] & 0x0f | 0x40;\n rnds[8] = rnds[8] & 0x3f | 0x80; // Copy bytes to buffer, if provided\n\n if (buf) {\n offset = offset || 0;\n\n for (let i = 0; i < 16; ++i) {\n buf[offset + i] = rnds[i];\n }\n\n return buf;\n }\n\n return stringify(rnds);\n}\n\nexport default v4;","import crypto from 'crypto';\n\nfunction sha1(bytes) {\n if (Array.isArray(bytes)) {\n bytes = Buffer.from(bytes);\n } else if (typeof bytes === 'string') {\n bytes = Buffer.from(bytes, 'utf8');\n }\n\n return crypto.createHash('sha1').update(bytes).digest();\n}\n\nexport default sha1;","import v35 from './v35.js';\nimport sha1 from './sha1.js';\nconst v5 = v35('v5', 0x50, sha1);\nexport default v5;","export default '00000000-0000-0000-0000-000000000000';","import validate from './validate.js';\n\nfunction version(uuid) {\n if (!validate(uuid)) {\n throw TypeError('Invalid UUID');\n }\n\n return parseInt(uuid.substr(14, 1), 16);\n}\n\nexport default version;","export { default as v1 } from './v1.js';\nexport { default as v3 } from './v3.js';\nexport { default as v4 } from './v4.js';\nexport { default as v5 } from './v5.js';\nexport { default as NIL } from './nil.js';\nexport { default as version } from './version.js';\nexport { default as validate } from './validate.js';\nexport { default as stringify } from './stringify.js';\nexport { default as parse } from './parse.js';","/*! @azure/msal-common v15.13.2 2025-11-19 */\n'use strict';\n'use strict';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nconst Constants = {\r\n LIBRARY_NAME: \"MSAL.JS\",\r\n SKU: \"msal.js.common\",\r\n // default authority\r\n DEFAULT_AUTHORITY: \"https://login.microsoftonline.com/common/\",\r\n DEFAULT_AUTHORITY_HOST: \"login.microsoftonline.com\",\r\n DEFAULT_COMMON_TENANT: \"common\",\r\n // ADFS String\r\n ADFS: \"adfs\",\r\n DSTS: \"dstsv2\",\r\n // Default AAD Instance Discovery Endpoint\r\n AAD_INSTANCE_DISCOVERY_ENDPT: \"https://login.microsoftonline.com/common/discovery/instance?api-version=1.1&authorization_endpoint=\",\r\n // CIAM URL\r\n CIAM_AUTH_URL: \".ciamlogin.com\",\r\n AAD_TENANT_DOMAIN_SUFFIX: \".onmicrosoft.com\",\r\n // Resource delimiter - used for certain cache entries\r\n RESOURCE_DELIM: \"|\",\r\n // Placeholder for non-existent account ids/objects\r\n NO_ACCOUNT: \"NO_ACCOUNT\",\r\n // Claims\r\n CLAIMS: \"claims\",\r\n // Consumer UTID\r\n CONSUMER_UTID: \"9188040d-6c67-4c5b-b112-36a304b66dad\",\r\n // Default scopes\r\n OPENID_SCOPE: \"openid\",\r\n PROFILE_SCOPE: \"profile\",\r\n OFFLINE_ACCESS_SCOPE: \"offline_access\",\r\n EMAIL_SCOPE: \"email\",\r\n CODE_GRANT_TYPE: \"authorization_code\",\r\n RT_GRANT_TYPE: \"refresh_token\",\r\n S256_CODE_CHALLENGE_METHOD: \"S256\",\r\n URL_FORM_CONTENT_TYPE: \"application/x-www-form-urlencoded;charset=utf-8\",\r\n AUTHORIZATION_PENDING: \"authorization_pending\",\r\n NOT_DEFINED: \"not_defined\",\r\n EMPTY_STRING: \"\",\r\n NOT_APPLICABLE: \"N/A\",\r\n NOT_AVAILABLE: \"Not Available\",\r\n FORWARD_SLASH: \"/\",\r\n IMDS_ENDPOINT: \"http://169.254.169.254/metadata/instance/compute/location\",\r\n IMDS_VERSION: \"2020-06-01\",\r\n IMDS_TIMEOUT: 2000,\r\n AZURE_REGION_AUTO_DISCOVER_FLAG: \"TryAutoDetect\",\r\n REGIONAL_AUTH_PUBLIC_CLOUD_SUFFIX: \"login.microsoft.com\",\r\n KNOWN_PUBLIC_CLOUDS: [\r\n \"login.microsoftonline.com\",\r\n \"login.windows.net\",\r\n \"login.microsoft.com\",\r\n \"sts.windows.net\",\r\n ],\r\n SHR_NONCE_VALIDITY: 240,\r\n INVALID_INSTANCE: \"invalid_instance\",\r\n};\r\nconst HttpStatus = {\r\n SUCCESS: 200,\r\n SUCCESS_RANGE_START: 200,\r\n SUCCESS_RANGE_END: 299,\r\n REDIRECT: 302,\r\n CLIENT_ERROR: 400,\r\n CLIENT_ERROR_RANGE_START: 400,\r\n BAD_REQUEST: 400,\r\n UNAUTHORIZED: 401,\r\n NOT_FOUND: 404,\r\n REQUEST_TIMEOUT: 408,\r\n GONE: 410,\r\n TOO_MANY_REQUESTS: 429,\r\n CLIENT_ERROR_RANGE_END: 499,\r\n SERVER_ERROR: 500,\r\n SERVER_ERROR_RANGE_START: 500,\r\n SERVICE_UNAVAILABLE: 503,\r\n GATEWAY_TIMEOUT: 504,\r\n SERVER_ERROR_RANGE_END: 599,\r\n MULTI_SIDED_ERROR: 600,\r\n};\r\nconst HttpMethod = {\r\n GET: \"GET\",\r\n POST: \"POST\",\r\n};\r\nconst OIDC_DEFAULT_SCOPES = [\r\n Constants.OPENID_SCOPE,\r\n Constants.PROFILE_SCOPE,\r\n Constants.OFFLINE_ACCESS_SCOPE,\r\n];\r\nconst OIDC_SCOPES = [...OIDC_DEFAULT_SCOPES, Constants.EMAIL_SCOPE];\r\n/**\r\n * Request header names\r\n */\r\nconst HeaderNames = {\r\n CONTENT_TYPE: \"Content-Type\",\r\n CONTENT_LENGTH: \"Content-Length\",\r\n RETRY_AFTER: \"Retry-After\",\r\n CCS_HEADER: \"X-AnchorMailbox\",\r\n WWWAuthenticate: \"WWW-Authenticate\",\r\n AuthenticationInfo: \"Authentication-Info\",\r\n X_MS_REQUEST_ID: \"x-ms-request-id\",\r\n X_MS_HTTP_VERSION: \"x-ms-httpver\",\r\n};\r\n/**\r\n * Persistent cache keys MSAL which stay while user is logged in.\r\n */\r\nconst PersistentCacheKeys = {\r\n ACTIVE_ACCOUNT_FILTERS: \"active-account-filters\", // new cache entry for active_account for a more robust version for browser\r\n};\r\n/**\r\n * String constants related to AAD Authority\r\n */\r\nconst AADAuthorityConstants = {\r\n COMMON: \"common\",\r\n ORGANIZATIONS: \"organizations\",\r\n CONSUMERS: \"consumers\",\r\n};\r\n/**\r\n * Claims request keys\r\n */\r\nconst ClaimsRequestKeys = {\r\n ACCESS_TOKEN: \"access_token\",\r\n XMS_CC: \"xms_cc\",\r\n};\r\n/**\r\n * we considered making this \"enum\" in the request instead of string, however it looks like the allowed list of\r\n * prompt values kept changing over past couple of years. There are some undocumented prompt values for some\r\n * internal partners too, hence the choice of generic \"string\" type instead of the \"enum\"\r\n */\r\nconst PromptValue = {\r\n LOGIN: \"login\",\r\n SELECT_ACCOUNT: \"select_account\",\r\n CONSENT: \"consent\",\r\n NONE: \"none\",\r\n CREATE: \"create\",\r\n NO_SESSION: \"no_session\",\r\n};\r\n/**\r\n * allowed values for codeVerifier\r\n */\r\nconst CodeChallengeMethodValues = {\r\n PLAIN: \"plain\",\r\n S256: \"S256\",\r\n};\r\n/**\r\n * Allowed values for response_type\r\n */\r\nconst OAuthResponseType = {\r\n CODE: \"code\",\r\n IDTOKEN_TOKEN: \"id_token token\",\r\n IDTOKEN_TOKEN_REFRESHTOKEN: \"id_token token refresh_token\",\r\n};\r\n/**\r\n * allowed values for server response type\r\n * @deprecated Use ResponseMode instead\r\n */\r\nconst ServerResponseType = {\r\n QUERY: \"query\",\r\n FRAGMENT: \"fragment\",\r\n};\r\n/**\r\n * allowed values for response_mode\r\n */\r\nconst ResponseMode = {\r\n QUERY: \"query\",\r\n FRAGMENT: \"fragment\",\r\n FORM_POST: \"form_post\",\r\n};\r\n/**\r\n * allowed grant_type\r\n */\r\nconst GrantType = {\r\n IMPLICIT_GRANT: \"implicit\",\r\n AUTHORIZATION_CODE_GRANT: \"authorization_code\",\r\n CLIENT_CREDENTIALS_GRANT: \"client_credentials\",\r\n RESOURCE_OWNER_PASSWORD_GRANT: \"password\",\r\n REFRESH_TOKEN_GRANT: \"refresh_token\",\r\n DEVICE_CODE_GRANT: \"device_code\",\r\n JWT_BEARER: \"urn:ietf:params:oauth:grant-type:jwt-bearer\",\r\n};\r\n/**\r\n * Account types in Cache\r\n */\r\nconst CacheAccountType = {\r\n MSSTS_ACCOUNT_TYPE: \"MSSTS\",\r\n ADFS_ACCOUNT_TYPE: \"ADFS\",\r\n MSAV1_ACCOUNT_TYPE: \"MSA\",\r\n GENERIC_ACCOUNT_TYPE: \"Generic\", // NTLM, Kerberos, FBA, Basic etc\r\n};\r\n/**\r\n * Separators used in cache\r\n */\r\nconst Separators = {\r\n CACHE_KEY_SEPARATOR: \"-\",\r\n CLIENT_INFO_SEPARATOR: \".\",\r\n};\r\n/**\r\n * Credential Type stored in the cache\r\n */\r\nconst CredentialType = {\r\n ID_TOKEN: \"IdToken\",\r\n ACCESS_TOKEN: \"AccessToken\",\r\n ACCESS_TOKEN_WITH_AUTH_SCHEME: \"AccessToken_With_AuthScheme\",\r\n REFRESH_TOKEN: \"RefreshToken\",\r\n};\r\n/**\r\n * Combine all cache types\r\n */\r\nconst CacheType = {\r\n ADFS: 1001,\r\n MSA: 1002,\r\n MSSTS: 1003,\r\n GENERIC: 1004,\r\n ACCESS_TOKEN: 2001,\r\n REFRESH_TOKEN: 2002,\r\n ID_TOKEN: 2003,\r\n APP_METADATA: 3001,\r\n UNDEFINED: 9999,\r\n};\r\n/**\r\n * More Cache related constants\r\n */\r\nconst APP_METADATA = \"appmetadata\";\r\nconst CLIENT_INFO$1 = \"client_info\";\r\nconst THE_FAMILY_ID = \"1\";\r\nconst AUTHORITY_METADATA_CONSTANTS = {\r\n CACHE_KEY: \"authority-metadata\",\r\n REFRESH_TIME_SECONDS: 3600 * 24, // 24 Hours\r\n};\r\nconst AuthorityMetadataSource = {\r\n CONFIG: \"config\",\r\n CACHE: \"cache\",\r\n NETWORK: \"network\",\r\n HARDCODED_VALUES: \"hardcoded_values\",\r\n};\r\nconst SERVER_TELEM_CONSTANTS = {\r\n SCHEMA_VERSION: 5,\r\n MAX_LAST_HEADER_BYTES: 330,\r\n MAX_CACHED_ERRORS: 50,\r\n CACHE_KEY: \"server-telemetry\",\r\n CATEGORY_SEPARATOR: \"|\",\r\n VALUE_SEPARATOR: \",\",\r\n OVERFLOW_TRUE: \"1\",\r\n OVERFLOW_FALSE: \"0\",\r\n UNKNOWN_ERROR: \"unknown_error\",\r\n};\r\n/**\r\n * Type of the authentication request\r\n */\r\nconst AuthenticationScheme = {\r\n BEARER: \"Bearer\",\r\n POP: \"pop\",\r\n SSH: \"ssh-cert\",\r\n};\r\n/**\r\n * Constants related to throttling\r\n */\r\nconst ThrottlingConstants = {\r\n // Default time to throttle RequestThumbprint in seconds\r\n DEFAULT_THROTTLE_TIME_SECONDS: 60,\r\n // Default maximum time to throttle in seconds, overrides what the server sends back\r\n DEFAULT_MAX_THROTTLE_TIME_SECONDS: 3600,\r\n // Prefix for storing throttling entries\r\n THROTTLING_PREFIX: \"throttling\",\r\n // Value assigned to the x-ms-lib-capability header to indicate to the server the library supports throttling\r\n X_MS_LIB_CAPABILITY_VALUE: \"retry-after, h429\",\r\n};\r\nconst Errors = {\r\n INVALID_GRANT_ERROR: \"invalid_grant\",\r\n CLIENT_MISMATCH_ERROR: \"client_mismatch\",\r\n};\r\n/**\r\n * Password grant parameters\r\n */\r\nconst PasswordGrantConstants = {\r\n username: \"username\",\r\n password: \"password\",\r\n};\r\n/**\r\n * Region Discovery Sources\r\n */\r\nconst RegionDiscoverySources = {\r\n FAILED_AUTO_DETECTION: \"1\",\r\n INTERNAL_CACHE: \"2\",\r\n ENVIRONMENT_VARIABLE: \"3\",\r\n IMDS: \"4\",\r\n};\r\n/**\r\n * Region Discovery Outcomes\r\n */\r\nconst RegionDiscoveryOutcomes = {\r\n CONFIGURED_NO_AUTO_DETECTION: \"2\",\r\n AUTO_DETECTION_REQUESTED_SUCCESSFUL: \"4\",\r\n AUTO_DETECTION_REQUESTED_FAILED: \"5\",\r\n};\r\n/**\r\n * Specifies the reason for fetching the access token from the identity provider\r\n */\r\nconst CacheOutcome = {\r\n // When a token is found in the cache or the cache is not supposed to be hit when making the request\r\n NOT_APPLICABLE: \"0\",\r\n // When the token request goes to the identity provider because force_refresh was set to true. Also occurs if claims were requested\r\n FORCE_REFRESH_OR_CLAIMS: \"1\",\r\n // When the token request goes to the identity provider because no cached access token exists\r\n NO_CACHED_ACCESS_TOKEN: \"2\",\r\n // When the token request goes to the identity provider because cached access token expired\r\n CACHED_ACCESS_TOKEN_EXPIRED: \"3\",\r\n // When the token request goes to the identity provider because refresh_in was used and the existing token needs to be refreshed\r\n PROACTIVELY_REFRESHED: \"4\",\r\n};\r\nconst JsonWebTokenTypes = {\r\n Jwt: \"JWT\",\r\n Jwk: \"JWK\",\r\n Pop: \"pop\",\r\n};\r\nconst ONE_DAY_IN_MS = 86400000;\r\n// Token renewal offset default in seconds\r\nconst DEFAULT_TOKEN_RENEWAL_OFFSET_SEC = 300;\r\nconst EncodingTypes = {\r\n BASE64: \"base64\",\r\n HEX: \"hex\",\r\n UTF8: \"utf-8\",\r\n};\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * AuthErrorMessage class containing string constants used by error codes and messages.\r\n */\r\nconst unexpectedError = \"unexpected_error\";\r\nconst postRequestFailed = \"post_request_failed\";\n\nvar AuthErrorCodes = /*#__PURE__*/Object.freeze({\n __proto__: null,\n postRequestFailed: postRequestFailed,\n unexpectedError: unexpectedError\n});\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nconst AuthErrorMessages = {\r\n [unexpectedError]: \"Unexpected error in authentication.\",\r\n [postRequestFailed]: \"Post request failed from the network, could be a 4xx/5xx or a network unavailability. Please check the exact error code for details.\",\r\n};\r\n/**\r\n * AuthErrorMessage class containing string constants used by error codes and messages.\r\n * @deprecated Use AuthErrorCodes instead\r\n */\r\nconst AuthErrorMessage = {\r\n unexpectedError: {\r\n code: unexpectedError,\r\n desc: AuthErrorMessages[unexpectedError],\r\n },\r\n postRequestFailed: {\r\n code: postRequestFailed,\r\n desc: AuthErrorMessages[postRequestFailed],\r\n },\r\n};\r\n/**\r\n * General error class thrown by the MSAL.js library.\r\n */\r\nclass AuthError extends Error {\r\n constructor(errorCode, errorMessage, suberror) {\r\n const errorString = errorMessage\r\n ? `${errorCode}: ${errorMessage}`\r\n : errorCode;\r\n super(errorString);\r\n Object.setPrototypeOf(this, AuthError.prototype);\r\n this.errorCode = errorCode || Constants.EMPTY_STRING;\r\n this.errorMessage = errorMessage || Constants.EMPTY_STRING;\r\n this.subError = suberror || Constants.EMPTY_STRING;\r\n this.name = \"AuthError\";\r\n }\r\n setCorrelationId(correlationId) {\r\n this.correlationId = correlationId;\r\n }\r\n}\r\nfunction createAuthError(code, additionalMessage) {\r\n return new AuthError(code, additionalMessage\r\n ? `${AuthErrorMessages[code]} ${additionalMessage}`\r\n : AuthErrorMessages[code]);\r\n}\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nconst clientInfoDecodingError = \"client_info_decoding_error\";\r\nconst clientInfoEmptyError = \"client_info_empty_error\";\r\nconst tokenParsingError = \"token_parsing_error\";\r\nconst nullOrEmptyToken = \"null_or_empty_token\";\r\nconst endpointResolutionError = \"endpoints_resolution_error\";\r\nconst networkError = \"network_error\";\r\nconst openIdConfigError = \"openid_config_error\";\r\nconst hashNotDeserialized = \"hash_not_deserialized\";\r\nconst invalidState = \"invalid_state\";\r\nconst stateMismatch = \"state_mismatch\";\r\nconst stateNotFound = \"state_not_found\";\r\nconst nonceMismatch = \"nonce_mismatch\";\r\nconst authTimeNotFound = \"auth_time_not_found\";\r\nconst maxAgeTranspired = \"max_age_transpired\";\r\nconst multipleMatchingTokens = \"multiple_matching_tokens\";\r\nconst multipleMatchingAccounts = \"multiple_matching_accounts\";\r\nconst multipleMatchingAppMetadata = \"multiple_matching_appMetadata\";\r\nconst requestCannotBeMade = \"request_cannot_be_made\";\r\nconst cannotRemoveEmptyScope = \"cannot_remove_empty_scope\";\r\nconst cannotAppendScopeSet = \"cannot_append_scopeset\";\r\nconst emptyInputScopeSet = \"empty_input_scopeset\";\r\nconst deviceCodePollingCancelled = \"device_code_polling_cancelled\";\r\nconst deviceCodeExpired = \"device_code_expired\";\r\nconst deviceCodeUnknownError = \"device_code_unknown_error\";\r\nconst noAccountInSilentRequest = \"no_account_in_silent_request\";\r\nconst invalidCacheRecord = \"invalid_cache_record\";\r\nconst invalidCacheEnvironment = \"invalid_cache_environment\";\r\nconst noAccountFound = \"no_account_found\";\r\nconst noCryptoObject = \"no_crypto_object\";\r\nconst unexpectedCredentialType = \"unexpected_credential_type\";\r\nconst invalidAssertion = \"invalid_assertion\";\r\nconst invalidClientCredential = \"invalid_client_credential\";\r\nconst tokenRefreshRequired = \"token_refresh_required\";\r\nconst userTimeoutReached = \"user_timeout_reached\";\r\nconst tokenClaimsCnfRequiredForSignedJwt = \"token_claims_cnf_required_for_signedjwt\";\r\nconst authorizationCodeMissingFromServerResponse = \"authorization_code_missing_from_server_response\";\r\nconst bindingKeyNotRemoved = \"binding_key_not_removed\";\r\nconst endSessionEndpointNotSupported = \"end_session_endpoint_not_supported\";\r\nconst keyIdMissing = \"key_id_missing\";\r\nconst noNetworkConnectivity = \"no_network_connectivity\";\r\nconst userCanceled = \"user_canceled\";\r\nconst missingTenantIdError = \"missing_tenant_id_error\";\r\nconst methodNotImplemented = \"method_not_implemented\";\r\nconst nestedAppAuthBridgeDisabled = \"nested_app_auth_bridge_disabled\";\r\nconst platformBrokerError = \"platform_broker_error\";\n\nvar ClientAuthErrorCodes = /*#__PURE__*/Object.freeze({\n __proto__: null,\n authTimeNotFound: authTimeNotFound,\n authorizationCodeMissingFromServerResponse: authorizationCodeMissingFromServerResponse,\n bindingKeyNotRemoved: bindingKeyNotRemoved,\n cannotAppendScopeSet: cannotAppendScopeSet,\n cannotRemoveEmptyScope: cannotRemoveEmptyScope,\n clientInfoDecodingError: clientInfoDecodingError,\n clientInfoEmptyError: clientInfoEmptyError,\n deviceCodeExpired: deviceCodeExpired,\n deviceCodePollingCancelled: deviceCodePollingCancelled,\n deviceCodeUnknownError: deviceCodeUnknownError,\n emptyInputScopeSet: emptyInputScopeSet,\n endSessionEndpointNotSupported: endSessionEndpointNotSupported,\n endpointResolutionError: endpointResolutionError,\n hashNotDeserialized: hashNotDeserialized,\n invalidAssertion: invalidAssertion,\n invalidCacheEnvironment: invalidCacheEnvironment,\n invalidCacheRecord: invalidCacheRecord,\n invalidClientCredential: invalidClientCredential,\n invalidState: invalidState,\n keyIdMissing: keyIdMissing,\n maxAgeTranspired: maxAgeTranspired,\n methodNotImplemented: methodNotImplemented,\n missingTenantIdError: missingTenantIdError,\n multipleMatchingAccounts: multipleMatchingAccounts,\n multipleMatchingAppMetadata: multipleMatchingAppMetadata,\n multipleMatchingTokens: multipleMatchingTokens,\n nestedAppAuthBridgeDisabled: nestedAppAuthBridgeDisabled,\n networkError: networkError,\n noAccountFound: noAccountFound,\n noAccountInSilentRequest: noAccountInSilentRequest,\n noCryptoObject: noCryptoObject,\n noNetworkConnectivity: noNetworkConnectivity,\n nonceMismatch: nonceMismatch,\n nullOrEmptyToken: nullOrEmptyToken,\n openIdConfigError: openIdConfigError,\n platformBrokerError: platformBrokerError,\n requestCannotBeMade: requestCannotBeMade,\n stateMismatch: stateMismatch,\n stateNotFound: stateNotFound,\n tokenClaimsCnfRequiredForSignedJwt: tokenClaimsCnfRequiredForSignedJwt,\n tokenParsingError: tokenParsingError,\n tokenRefreshRequired: tokenRefreshRequired,\n unexpectedCredentialType: unexpectedCredentialType,\n userCanceled: userCanceled,\n userTimeoutReached: userTimeoutReached\n});\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * ClientAuthErrorMessage class containing string constants used by error codes and messages.\r\n */\r\nconst ClientAuthErrorMessages = {\r\n [clientInfoDecodingError]: \"The client info could not be parsed/decoded correctly\",\r\n [clientInfoEmptyError]: \"The client info was empty\",\r\n [tokenParsingError]: \"Token cannot be parsed\",\r\n [nullOrEmptyToken]: \"The token is null or empty\",\r\n [endpointResolutionError]: \"Endpoints cannot be resolved\",\r\n [networkError]: \"Network request failed\",\r\n [openIdConfigError]: \"Could not retrieve endpoints. Check your authority and verify the .well-known/openid-configuration endpoint returns the required endpoints.\",\r\n [hashNotDeserialized]: \"The hash parameters could not be deserialized\",\r\n [invalidState]: \"State was not the expected format\",\r\n [stateMismatch]: \"State mismatch error\",\r\n [stateNotFound]: \"State not found\",\r\n [nonceMismatch]: \"Nonce mismatch error\",\r\n [authTimeNotFound]: \"Max Age was requested and the ID token is missing the auth_time variable.\" +\r\n \" auth_time is an optional claim and is not enabled by default - it must be enabled.\" +\r\n \" See https://aka.ms/msaljs/optional-claims for more information.\",\r\n [maxAgeTranspired]: \"Max Age is set to 0, or too much time has elapsed since the last end-user authentication.\",\r\n [multipleMatchingTokens]: \"The cache contains multiple tokens satisfying the requirements. \" +\r\n \"Call AcquireToken again providing more requirements such as authority or account.\",\r\n [multipleMatchingAccounts]: \"The cache contains multiple accounts satisfying the given parameters. Please pass more info to obtain the correct account\",\r\n [multipleMatchingAppMetadata]: \"The cache contains multiple appMetadata satisfying the given parameters. Please pass more info to obtain the correct appMetadata\",\r\n [requestCannotBeMade]: \"Token request cannot be made without authorization code or refresh token.\",\r\n [cannotRemoveEmptyScope]: \"Cannot remove null or empty scope from ScopeSet\",\r\n [cannotAppendScopeSet]: \"Cannot append ScopeSet\",\r\n [emptyInputScopeSet]: \"Empty input ScopeSet cannot be processed\",\r\n [deviceCodePollingCancelled]: \"Caller has cancelled token endpoint polling during device code flow by setting DeviceCodeRequest.cancel = true.\",\r\n [deviceCodeExpired]: \"Device code is expired.\",\r\n [deviceCodeUnknownError]: \"Device code stopped polling for unknown reasons.\",\r\n [noAccountInSilentRequest]: \"Please pass an account object, silent flow is not supported without account information\",\r\n [invalidCacheRecord]: \"Cache record object was null or undefined.\",\r\n [invalidCacheEnvironment]: \"Invalid environment when attempting to create cache entry\",\r\n [noAccountFound]: \"No account found in cache for given key.\",\r\n [noCryptoObject]: \"No crypto object detected.\",\r\n [unexpectedCredentialType]: \"Unexpected credential type.\",\r\n [invalidAssertion]: \"Client assertion must meet requirements described in https://tools.ietf.org/html/rfc7515\",\r\n [invalidClientCredential]: \"Client credential (secret, certificate, or assertion) must not be empty when creating a confidential client. An application should at most have one credential\",\r\n [tokenRefreshRequired]: \"Cannot return token from cache because it must be refreshed. This may be due to one of the following reasons: forceRefresh parameter is set to true, claims have been requested, there is no cached access token or it is expired.\",\r\n [userTimeoutReached]: \"User defined timeout for device code polling reached\",\r\n [tokenClaimsCnfRequiredForSignedJwt]: \"Cannot generate a POP jwt if the token_claims are not populated\",\r\n [authorizationCodeMissingFromServerResponse]: \"Server response does not contain an authorization code to proceed\",\r\n [bindingKeyNotRemoved]: \"Could not remove the credential's binding key from storage.\",\r\n [endSessionEndpointNotSupported]: \"The provided authority does not support logout\",\r\n [keyIdMissing]: \"A keyId value is missing from the requested bound token's cache record and is required to match the token to it's stored binding key.\",\r\n [noNetworkConnectivity]: \"No network connectivity. Check your internet connection.\",\r\n [userCanceled]: \"User cancelled the flow.\",\r\n [missingTenantIdError]: \"A tenant id - not common, organizations, or consumers - must be specified when using the client_credentials flow.\",\r\n [methodNotImplemented]: \"This method has not been implemented\",\r\n [nestedAppAuthBridgeDisabled]: \"The nested app auth bridge is disabled\",\r\n [platformBrokerError]: \"An error occurred in the native broker. See the platformBrokerError property for details.\",\r\n};\r\n/**\r\n * String constants used by error codes and messages.\r\n * @deprecated Use ClientAuthErrorCodes instead\r\n */\r\nconst ClientAuthErrorMessage = {\r\n clientInfoDecodingError: {\r\n code: clientInfoDecodingError,\r\n desc: ClientAuthErrorMessages[clientInfoDecodingError],\r\n },\r\n clientInfoEmptyError: {\r\n code: clientInfoEmptyError,\r\n desc: ClientAuthErrorMessages[clientInfoEmptyError],\r\n },\r\n tokenParsingError: {\r\n code: tokenParsingError,\r\n desc: ClientAuthErrorMessages[tokenParsingError],\r\n },\r\n nullOrEmptyToken: {\r\n code: nullOrEmptyToken,\r\n desc: ClientAuthErrorMessages[nullOrEmptyToken],\r\n },\r\n endpointResolutionError: {\r\n code: endpointResolutionError,\r\n desc: ClientAuthErrorMessages[endpointResolutionError],\r\n },\r\n networkError: {\r\n code: networkError,\r\n desc: ClientAuthErrorMessages[networkError],\r\n },\r\n unableToGetOpenidConfigError: {\r\n code: openIdConfigError,\r\n desc: ClientAuthErrorMessages[openIdConfigError],\r\n },\r\n hashNotDeserialized: {\r\n code: hashNotDeserialized,\r\n desc: ClientAuthErrorMessages[hashNotDeserialized],\r\n },\r\n invalidStateError: {\r\n code: invalidState,\r\n desc: ClientAuthErrorMessages[invalidState],\r\n },\r\n stateMismatchError: {\r\n code: stateMismatch,\r\n desc: ClientAuthErrorMessages[stateMismatch],\r\n },\r\n stateNotFoundError: {\r\n code: stateNotFound,\r\n desc: ClientAuthErrorMessages[stateNotFound],\r\n },\r\n nonceMismatchError: {\r\n code: nonceMismatch,\r\n desc: ClientAuthErrorMessages[nonceMismatch],\r\n },\r\n authTimeNotFoundError: {\r\n code: authTimeNotFound,\r\n desc: ClientAuthErrorMessages[authTimeNotFound],\r\n },\r\n maxAgeTranspired: {\r\n code: maxAgeTranspired,\r\n desc: ClientAuthErrorMessages[maxAgeTranspired],\r\n },\r\n multipleMatchingTokens: {\r\n code: multipleMatchingTokens,\r\n desc: ClientAuthErrorMessages[multipleMatchingTokens],\r\n },\r\n multipleMatchingAccounts: {\r\n code: multipleMatchingAccounts,\r\n desc: ClientAuthErrorMessages[multipleMatchingAccounts],\r\n },\r\n multipleMatchingAppMetadata: {\r\n code: multipleMatchingAppMetadata,\r\n desc: ClientAuthErrorMessages[multipleMatchingAppMetadata],\r\n },\r\n tokenRequestCannotBeMade: {\r\n code: requestCannotBeMade,\r\n desc: ClientAuthErrorMessages[requestCannotBeMade],\r\n },\r\n removeEmptyScopeError: {\r\n code: cannotRemoveEmptyScope,\r\n desc: ClientAuthErrorMessages[cannotRemoveEmptyScope],\r\n },\r\n appendScopeSetError: {\r\n code: cannotAppendScopeSet,\r\n desc: ClientAuthErrorMessages[cannotAppendScopeSet],\r\n },\r\n emptyInputScopeSetError: {\r\n code: emptyInputScopeSet,\r\n desc: ClientAuthErrorMessages[emptyInputScopeSet],\r\n },\r\n DeviceCodePollingCancelled: {\r\n code: deviceCodePollingCancelled,\r\n desc: ClientAuthErrorMessages[deviceCodePollingCancelled],\r\n },\r\n DeviceCodeExpired: {\r\n code: deviceCodeExpired,\r\n desc: ClientAuthErrorMessages[deviceCodeExpired],\r\n },\r\n DeviceCodeUnknownError: {\r\n code: deviceCodeUnknownError,\r\n desc: ClientAuthErrorMessages[deviceCodeUnknownError],\r\n },\r\n NoAccountInSilentRequest: {\r\n code: noAccountInSilentRequest,\r\n desc: ClientAuthErrorMessages[noAccountInSilentRequest],\r\n },\r\n invalidCacheRecord: {\r\n code: invalidCacheRecord,\r\n desc: ClientAuthErrorMessages[invalidCacheRecord],\r\n },\r\n invalidCacheEnvironment: {\r\n code: invalidCacheEnvironment,\r\n desc: ClientAuthErrorMessages[invalidCacheEnvironment],\r\n },\r\n noAccountFound: {\r\n code: noAccountFound,\r\n desc: ClientAuthErrorMessages[noAccountFound],\r\n },\r\n noCryptoObj: {\r\n code: noCryptoObject,\r\n desc: ClientAuthErrorMessages[noCryptoObject],\r\n },\r\n unexpectedCredentialType: {\r\n code: unexpectedCredentialType,\r\n desc: ClientAuthErrorMessages[unexpectedCredentialType],\r\n },\r\n invalidAssertion: {\r\n code: invalidAssertion,\r\n desc: ClientAuthErrorMessages[invalidAssertion],\r\n },\r\n invalidClientCredential: {\r\n code: invalidClientCredential,\r\n desc: ClientAuthErrorMessages[invalidClientCredential],\r\n },\r\n tokenRefreshRequired: {\r\n code: tokenRefreshRequired,\r\n desc: ClientAuthErrorMessages[tokenRefreshRequired],\r\n },\r\n userTimeoutReached: {\r\n code: userTimeoutReached,\r\n desc: ClientAuthErrorMessages[userTimeoutReached],\r\n },\r\n tokenClaimsRequired: {\r\n code: tokenClaimsCnfRequiredForSignedJwt,\r\n desc: ClientAuthErrorMessages[tokenClaimsCnfRequiredForSignedJwt],\r\n },\r\n noAuthorizationCodeFromServer: {\r\n code: authorizationCodeMissingFromServerResponse,\r\n desc: ClientAuthErrorMessages[authorizationCodeMissingFromServerResponse],\r\n },\r\n bindingKeyNotRemovedError: {\r\n code: bindingKeyNotRemoved,\r\n desc: ClientAuthErrorMessages[bindingKeyNotRemoved],\r\n },\r\n logoutNotSupported: {\r\n code: endSessionEndpointNotSupported,\r\n desc: ClientAuthErrorMessages[endSessionEndpointNotSupported],\r\n },\r\n keyIdMissing: {\r\n code: keyIdMissing,\r\n desc: ClientAuthErrorMessages[keyIdMissing],\r\n },\r\n noNetworkConnectivity: {\r\n code: noNetworkConnectivity,\r\n desc: ClientAuthErrorMessages[noNetworkConnectivity],\r\n },\r\n userCanceledError: {\r\n code: userCanceled,\r\n desc: ClientAuthErrorMessages[userCanceled],\r\n },\r\n missingTenantIdError: {\r\n code: missingTenantIdError,\r\n desc: ClientAuthErrorMessages[missingTenantIdError],\r\n },\r\n nestedAppAuthBridgeDisabled: {\r\n code: nestedAppAuthBridgeDisabled,\r\n desc: ClientAuthErrorMessages[nestedAppAuthBridgeDisabled],\r\n },\r\n platformBrokerError: {\r\n code: platformBrokerError,\r\n desc: ClientAuthErrorMessages[platformBrokerError],\r\n },\r\n};\r\n/**\r\n * Error thrown when there is an error in the client code running on the browser.\r\n */\r\nclass ClientAuthError extends AuthError {\r\n constructor(errorCode, additionalMessage) {\r\n super(errorCode, additionalMessage\r\n ? `${ClientAuthErrorMessages[errorCode]}: ${additionalMessage}`\r\n : ClientAuthErrorMessages[errorCode]);\r\n this.name = \"ClientAuthError\";\r\n Object.setPrototypeOf(this, ClientAuthError.prototype);\r\n }\r\n}\r\nfunction createClientAuthError(errorCode, additionalMessage) {\r\n return new ClientAuthError(errorCode, additionalMessage);\r\n}\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * Extract token by decoding the rawToken\r\n *\r\n * @param encodedToken\r\n */\r\nfunction extractTokenClaims(encodedToken, base64Decode) {\r\n const jswPayload = getJWSPayload(encodedToken);\r\n // token will be decoded to get the username\r\n try {\r\n // base64Decode() should throw an error if there is an issue\r\n const base64Decoded = base64Decode(jswPayload);\r\n return JSON.parse(base64Decoded);\r\n }\r\n catch (err) {\r\n throw createClientAuthError(tokenParsingError);\r\n }\r\n}\r\n/**\r\n * Check if the signin_state claim contains \"kmsi\"\r\n * @param idTokenClaims\r\n * @returns\r\n */\r\nfunction isKmsi(idTokenClaims) {\r\n if (!idTokenClaims.signin_state) {\r\n return false;\r\n }\r\n /**\r\n * Signin_state claim known values:\r\n * dvc_mngd - device is managed\r\n * dvc_dmjd - device is domain joined\r\n * kmsi - user opted to \"keep me signed in\"\r\n * inknownntwk - Request made inside a known network. Don't use this, use CAE instead.\r\n */\r\n const kmsiClaims = [\"kmsi\", \"dvc_dmjd\"]; // There are some cases where kmsi may not be returned but persistent storage is still OK - allow dvc_dmjd as well\r\n const kmsi = idTokenClaims.signin_state.some((value) => kmsiClaims.includes(value.trim().toLowerCase()));\r\n return kmsi;\r\n}\r\n/**\r\n * decode a JWT\r\n *\r\n * @param authToken\r\n */\r\nfunction getJWSPayload(authToken) {\r\n if (!authToken) {\r\n throw createClientAuthError(nullOrEmptyToken);\r\n }\r\n const tokenPartsRegex = /^([^\\.\\s]*)\\.([^\\.\\s]+)\\.([^\\.\\s]*)$/;\r\n const matches = tokenPartsRegex.exec(authToken);\r\n if (!matches || matches.length < 4) {\r\n throw createClientAuthError(tokenParsingError);\r\n }\r\n /**\r\n * const crackedToken = {\r\n * header: matches[1],\r\n * JWSPayload: matches[2],\r\n * JWSSig: matches[3],\r\n * };\r\n */\r\n return matches[2];\r\n}\r\n/**\r\n * Determine if the token's max_age has transpired\r\n */\r\nfunction checkMaxAge(authTime, maxAge) {\r\n /*\r\n * per https://openid.net/specs/openid-connect-core-1_0.html#AuthRequest\r\n * To force an immediate re-authentication: If an app requires that a user re-authenticate prior to access,\r\n * provide a value of 0 for the max_age parameter and the AS will force a fresh login.\r\n */\r\n const fiveMinuteSkew = 300000; // five minutes in milliseconds\r\n if (maxAge === 0 || Date.now() - fiveMinuteSkew > authTime + maxAge) {\r\n throw createClientAuthError(maxAgeTranspired);\r\n }\r\n}\n\nvar AuthToken = /*#__PURE__*/Object.freeze({\n __proto__: null,\n checkMaxAge: checkMaxAge,\n extractTokenClaims: extractTokenClaims,\n getJWSPayload: getJWSPayload,\n isKmsi: isKmsi\n});\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * Authority types supported by MSAL.\r\n */\r\nconst AuthorityType = {\r\n Default: 0,\r\n Adfs: 1,\r\n Dsts: 2,\r\n Ciam: 3,\r\n};\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nfunction isOpenIdConfigResponse(response) {\r\n return (response.hasOwnProperty(\"authorization_endpoint\") &&\r\n response.hasOwnProperty(\"token_endpoint\") &&\r\n response.hasOwnProperty(\"issuer\") &&\r\n response.hasOwnProperty(\"jwks_uri\"));\r\n}\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nconst redirectUriEmpty = \"redirect_uri_empty\";\r\nconst claimsRequestParsingError = \"claims_request_parsing_error\";\r\nconst authorityUriInsecure = \"authority_uri_insecure\";\r\nconst urlParseError = \"url_parse_error\";\r\nconst urlEmptyError = \"empty_url_error\";\r\nconst emptyInputScopesError = \"empty_input_scopes_error\";\r\nconst invalidClaims = \"invalid_claims\";\r\nconst tokenRequestEmpty = \"token_request_empty\";\r\nconst logoutRequestEmpty = \"logout_request_empty\";\r\nconst invalidCodeChallengeMethod = \"invalid_code_challenge_method\";\r\nconst pkceParamsMissing = \"pkce_params_missing\";\r\nconst invalidCloudDiscoveryMetadata = \"invalid_cloud_discovery_metadata\";\r\nconst invalidAuthorityMetadata = \"invalid_authority_metadata\";\r\nconst untrustedAuthority = \"untrusted_authority\";\r\nconst missingSshJwk = \"missing_ssh_jwk\";\r\nconst missingSshKid = \"missing_ssh_kid\";\r\nconst missingNonceAuthenticationHeader = \"missing_nonce_authentication_header\";\r\nconst invalidAuthenticationHeader = \"invalid_authentication_header\";\r\nconst cannotSetOIDCOptions = \"cannot_set_OIDCOptions\";\r\nconst cannotAllowPlatformBroker = \"cannot_allow_platform_broker\";\r\nconst authorityMismatch = \"authority_mismatch\";\r\nconst invalidRequestMethodForEAR = \"invalid_request_method_for_EAR\";\r\nconst invalidAuthorizePostBodyParameters = \"invalid_authorize_post_body_parameters\";\n\nvar ClientConfigurationErrorCodes = /*#__PURE__*/Object.freeze({\n __proto__: null,\n authorityMismatch: authorityMismatch,\n authorityUriInsecure: authorityUriInsecure,\n cannotAllowPlatformBroker: cannotAllowPlatformBroker,\n cannotSetOIDCOptions: cannotSetOIDCOptions,\n claimsRequestParsingError: claimsRequestParsingError,\n emptyInputScopesError: emptyInputScopesError,\n invalidAuthenticationHeader: invalidAuthenticationHeader,\n invalidAuthorityMetadata: invalidAuthorityMetadata,\n invalidAuthorizePostBodyParameters: invalidAuthorizePostBodyParameters,\n invalidClaims: invalidClaims,\n invalidCloudDiscoveryMetadata: invalidCloudDiscoveryMetadata,\n invalidCodeChallengeMethod: invalidCodeChallengeMethod,\n invalidRequestMethodForEAR: invalidRequestMethodForEAR,\n logoutRequestEmpty: logoutRequestEmpty,\n missingNonceAuthenticationHeader: missingNonceAuthenticationHeader,\n missingSshJwk: missingSshJwk,\n missingSshKid: missingSshKid,\n pkceParamsMissing: pkceParamsMissing,\n redirectUriEmpty: redirectUriEmpty,\n tokenRequestEmpty: tokenRequestEmpty,\n untrustedAuthority: untrustedAuthority,\n urlEmptyError: urlEmptyError,\n urlParseError: urlParseError\n});\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nconst ClientConfigurationErrorMessages = {\r\n [redirectUriEmpty]: \"A redirect URI is required for all calls, and none has been set.\",\r\n [claimsRequestParsingError]: \"Could not parse the given claims request object.\",\r\n [authorityUriInsecure]: \"Authority URIs must use https. Please see here for valid authority configuration options: https://docs.microsoft.com/en-us/azure/active-directory/develop/msal-js-initializing-client-applications#configuration-options\",\r\n [urlParseError]: \"URL could not be parsed into appropriate segments.\",\r\n [urlEmptyError]: \"URL was empty or null.\",\r\n [emptyInputScopesError]: \"Scopes cannot be passed as null, undefined or empty array because they are required to obtain an access token.\",\r\n [invalidClaims]: \"Given claims parameter must be a stringified JSON object.\",\r\n [tokenRequestEmpty]: \"Token request was empty and not found in cache.\",\r\n [logoutRequestEmpty]: \"The logout request was null or undefined.\",\r\n [invalidCodeChallengeMethod]: 'code_challenge_method passed is invalid. Valid values are \"plain\" and \"S256\".',\r\n [pkceParamsMissing]: \"Both params: code_challenge and code_challenge_method are to be passed if to be sent in the request\",\r\n [invalidCloudDiscoveryMetadata]: \"Invalid cloudDiscoveryMetadata provided. Must be a stringified JSON object containing tenant_discovery_endpoint and metadata fields\",\r\n [invalidAuthorityMetadata]: \"Invalid authorityMetadata provided. Must by a stringified JSON object containing authorization_endpoint, token_endpoint, issuer fields.\",\r\n [untrustedAuthority]: \"The provided authority is not a trusted authority. Please include this authority in the knownAuthorities config parameter.\",\r\n [missingSshJwk]: \"Missing sshJwk in SSH certificate request. A stringified JSON Web Key is required when using the SSH authentication scheme.\",\r\n [missingSshKid]: \"Missing sshKid in SSH certificate request. A string that uniquely identifies the public SSH key is required when using the SSH authentication scheme.\",\r\n [missingNonceAuthenticationHeader]: \"Unable to find an authentication header containing server nonce. Either the Authentication-Info or WWW-Authenticate headers must be present in order to obtain a server nonce.\",\r\n [invalidAuthenticationHeader]: \"Invalid authentication header provided\",\r\n [cannotSetOIDCOptions]: \"Cannot set OIDCOptions parameter. Please change the protocol mode to OIDC or use a non-Microsoft authority.\",\r\n [cannotAllowPlatformBroker]: \"Cannot set allowPlatformBroker parameter to true when not in AAD protocol mode.\",\r\n [authorityMismatch]: \"Authority mismatch error. Authority provided in login request or PublicClientApplication config does not match the environment of the provided account. Please use a matching account or make an interactive request to login to this authority.\",\r\n [invalidAuthorizePostBodyParameters]: \"Invalid authorize post body parameters provided. If you are using authorizePostBodyParameters, the request method must be POST. Please check the request method and parameters.\",\r\n [invalidRequestMethodForEAR]: \"Invalid request method for EAR protocol mode. The request method cannot be GET when using EAR protocol mode. Please change the request method to POST.\",\r\n};\r\n/**\r\n * ClientConfigurationErrorMessage class containing string constants used by error codes and messages.\r\n * @deprecated Use ClientConfigurationErrorCodes instead\r\n */\r\nconst ClientConfigurationErrorMessage = {\r\n redirectUriNotSet: {\r\n code: redirectUriEmpty,\r\n desc: ClientConfigurationErrorMessages[redirectUriEmpty],\r\n },\r\n claimsRequestParsingError: {\r\n code: claimsRequestParsingError,\r\n desc: ClientConfigurationErrorMessages[claimsRequestParsingError],\r\n },\r\n authorityUriInsecure: {\r\n code: authorityUriInsecure,\r\n desc: ClientConfigurationErrorMessages[authorityUriInsecure],\r\n },\r\n urlParseError: {\r\n code: urlParseError,\r\n desc: ClientConfigurationErrorMessages[urlParseError],\r\n },\r\n urlEmptyError: {\r\n code: urlEmptyError,\r\n desc: ClientConfigurationErrorMessages[urlEmptyError],\r\n },\r\n emptyScopesError: {\r\n code: emptyInputScopesError,\r\n desc: ClientConfigurationErrorMessages[emptyInputScopesError],\r\n },\r\n invalidClaimsRequest: {\r\n code: invalidClaims,\r\n desc: ClientConfigurationErrorMessages[invalidClaims],\r\n },\r\n tokenRequestEmptyError: {\r\n code: tokenRequestEmpty,\r\n desc: ClientConfigurationErrorMessages[tokenRequestEmpty],\r\n },\r\n logoutRequestEmptyError: {\r\n code: logoutRequestEmpty,\r\n desc: ClientConfigurationErrorMessages[logoutRequestEmpty],\r\n },\r\n invalidCodeChallengeMethod: {\r\n code: invalidCodeChallengeMethod,\r\n desc: ClientConfigurationErrorMessages[invalidCodeChallengeMethod],\r\n },\r\n invalidCodeChallengeParams: {\r\n code: pkceParamsMissing,\r\n desc: ClientConfigurationErrorMessages[pkceParamsMissing],\r\n },\r\n invalidCloudDiscoveryMetadata: {\r\n code: invalidCloudDiscoveryMetadata,\r\n desc: ClientConfigurationErrorMessages[invalidCloudDiscoveryMetadata],\r\n },\r\n invalidAuthorityMetadata: {\r\n code: invalidAuthorityMetadata,\r\n desc: ClientConfigurationErrorMessages[invalidAuthorityMetadata],\r\n },\r\n untrustedAuthority: {\r\n code: untrustedAuthority,\r\n desc: ClientConfigurationErrorMessages[untrustedAuthority],\r\n },\r\n missingSshJwk: {\r\n code: missingSshJwk,\r\n desc: ClientConfigurationErrorMessages[missingSshJwk],\r\n },\r\n missingSshKid: {\r\n code: missingSshKid,\r\n desc: ClientConfigurationErrorMessages[missingSshKid],\r\n },\r\n missingNonceAuthenticationHeader: {\r\n code: missingNonceAuthenticationHeader,\r\n desc: ClientConfigurationErrorMessages[missingNonceAuthenticationHeader],\r\n },\r\n invalidAuthenticationHeader: {\r\n code: invalidAuthenticationHeader,\r\n desc: ClientConfigurationErrorMessages[invalidAuthenticationHeader],\r\n },\r\n cannotSetOIDCOptions: {\r\n code: cannotSetOIDCOptions,\r\n desc: ClientConfigurationErrorMessages[cannotSetOIDCOptions],\r\n },\r\n cannotAllowPlatformBroker: {\r\n code: cannotAllowPlatformBroker,\r\n desc: ClientConfigurationErrorMessages[cannotAllowPlatformBroker],\r\n },\r\n authorityMismatch: {\r\n code: authorityMismatch,\r\n desc: ClientConfigurationErrorMessages[authorityMismatch],\r\n },\r\n invalidAuthorizePostBodyParameters: {\r\n code: invalidAuthorizePostBodyParameters,\r\n desc: ClientConfigurationErrorMessages[invalidAuthorizePostBodyParameters],\r\n },\r\n invalidRequestMethodForEAR: {\r\n code: invalidRequestMethodForEAR,\r\n desc: ClientConfigurationErrorMessages[invalidRequestMethodForEAR],\r\n },\r\n};\r\n/**\r\n * Error thrown when there is an error in configuration of the MSAL.js library.\r\n */\r\nclass ClientConfigurationError extends AuthError {\r\n constructor(errorCode) {\r\n super(errorCode, ClientConfigurationErrorMessages[errorCode]);\r\n this.name = \"ClientConfigurationError\";\r\n Object.setPrototypeOf(this, ClientConfigurationError.prototype);\r\n }\r\n}\r\nfunction createClientConfigurationError(errorCode) {\r\n return new ClientConfigurationError(errorCode);\r\n}\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * @hidden\r\n */\r\nclass StringUtils {\r\n /**\r\n * Check if stringified object is empty\r\n * @param strObj\r\n */\r\n static isEmptyObj(strObj) {\r\n if (strObj) {\r\n try {\r\n const obj = JSON.parse(strObj);\r\n return Object.keys(obj).length === 0;\r\n }\r\n catch (e) { }\r\n }\r\n return true;\r\n }\r\n static startsWith(str, search) {\r\n return str.indexOf(search) === 0;\r\n }\r\n static endsWith(str, search) {\r\n return (str.length >= search.length &&\r\n str.lastIndexOf(search) === str.length - search.length);\r\n }\r\n /**\r\n * Parses string into an object.\r\n *\r\n * @param query\r\n */\r\n static queryStringToObject(query) {\r\n const obj = {};\r\n const params = query.split(\"&\");\r\n const decode = (s) => decodeURIComponent(s.replace(/\\+/g, \" \"));\r\n params.forEach((pair) => {\r\n if (pair.trim()) {\r\n const [key, value] = pair.split(/=(.+)/g, 2); // Split on the first occurence of the '=' character\r\n if (key && value) {\r\n obj[decode(key)] = decode(value);\r\n }\r\n }\r\n });\r\n return obj;\r\n }\r\n /**\r\n * Trims entries in an array.\r\n *\r\n * @param arr\r\n */\r\n static trimArrayEntries(arr) {\r\n return arr.map((entry) => entry.trim());\r\n }\r\n /**\r\n * Removes empty strings from array\r\n * @param arr\r\n */\r\n static removeEmptyStringsFromArray(arr) {\r\n return arr.filter((entry) => {\r\n return !!entry;\r\n });\r\n }\r\n /**\r\n * Attempts to parse a string into JSON\r\n * @param str\r\n */\r\n static jsonParseHelper(str) {\r\n try {\r\n return JSON.parse(str);\r\n }\r\n catch (e) {\r\n return null;\r\n }\r\n }\r\n /**\r\n * Tests if a given string matches a given pattern, with support for wildcards and queries.\r\n * @param pattern Wildcard pattern to string match. Supports \"*\" for wildcards and \"?\" for queries\r\n * @param input String to match against\r\n */\r\n static matchPattern(pattern, input) {\r\n /**\r\n * Wildcard support: https://stackoverflow.com/a/3117248/4888559\r\n * Queries: replaces \"?\" in string with escaped \"\\?\" for regex test\r\n */\r\n // eslint-disable-next-line security/detect-non-literal-regexp\r\n const regex = new RegExp(pattern\r\n .replace(/\\\\/g, \"\\\\\\\\\")\r\n .replace(/\\*/g, \"[^ ]*\")\r\n .replace(/\\?/g, \"\\\\?\"));\r\n return regex.test(input);\r\n }\r\n}\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * Canonicalizes a URL by making it lowercase and ensuring it ends with /\r\n * Inlined version of UrlString.canonicalizeUri to avoid circular dependency\r\n * @param url - URL to canonicalize\r\n * @returns Canonicalized URL\r\n */\r\nfunction canonicalizeUrl(url) {\r\n if (!url) {\r\n return url;\r\n }\r\n let lowerCaseUrl = url.toLowerCase();\r\n if (StringUtils.endsWith(lowerCaseUrl, \"?\")) {\r\n lowerCaseUrl = lowerCaseUrl.slice(0, -1);\r\n }\r\n else if (StringUtils.endsWith(lowerCaseUrl, \"?/\")) {\r\n lowerCaseUrl = lowerCaseUrl.slice(0, -2);\r\n }\r\n if (!StringUtils.endsWith(lowerCaseUrl, \"/\")) {\r\n lowerCaseUrl += \"/\";\r\n }\r\n return lowerCaseUrl;\r\n}\r\n/**\r\n * Parses hash string from given string. Returns empty string if no hash symbol is found.\r\n * @param hashString\r\n */\r\nfunction stripLeadingHashOrQuery(responseString) {\r\n if (responseString.startsWith(\"#/\")) {\r\n return responseString.substring(2);\r\n }\r\n else if (responseString.startsWith(\"#\") ||\r\n responseString.startsWith(\"?\")) {\r\n return responseString.substring(1);\r\n }\r\n return responseString;\r\n}\r\n/**\r\n * Returns URL hash as server auth code response object.\r\n */\r\nfunction getDeserializedResponse(responseString) {\r\n // Check if given hash is empty\r\n if (!responseString || responseString.indexOf(\"=\") < 0) {\r\n return null;\r\n }\r\n try {\r\n // Strip the # or ? symbol if present\r\n const normalizedResponse = stripLeadingHashOrQuery(responseString);\r\n // If # symbol was not present, above will return empty string, so give original hash value\r\n const deserializedHash = Object.fromEntries(new URLSearchParams(normalizedResponse));\r\n // Check for known response properties\r\n if (deserializedHash.code ||\r\n deserializedHash.ear_jwe ||\r\n deserializedHash.error ||\r\n deserializedHash.error_description ||\r\n deserializedHash.state) {\r\n return deserializedHash;\r\n }\r\n }\r\n catch (e) {\r\n throw createClientAuthError(hashNotDeserialized);\r\n }\r\n return null;\r\n}\r\n/**\r\n * Utility to create a URL from the params map\r\n */\r\nfunction mapToQueryString(parameters, encodeExtraParams = true, extraQueryParameters) {\r\n const queryParameterArray = new Array();\r\n parameters.forEach((value, key) => {\r\n if (!encodeExtraParams &&\r\n extraQueryParameters &&\r\n key in extraQueryParameters) {\r\n queryParameterArray.push(`${key}=${value}`);\r\n }\r\n else {\r\n queryParameterArray.push(`${key}=${encodeURIComponent(value)}`);\r\n }\r\n });\r\n return queryParameterArray.join(\"&\");\r\n}\r\n/**\r\n * Normalizes URLs for comparison by removing hash, canonicalizing,\r\n * and ensuring consistent URL encoding in query parameters.\r\n * This fixes redirect loops when URLs contain encoded characters like apostrophes (%27).\r\n * @param url - URL to normalize\r\n * @returns Normalized URL string for comparison\r\n */\r\nfunction normalizeUrlForComparison(url) {\r\n if (!url) {\r\n return url;\r\n }\r\n // Remove hash first\r\n const urlWithoutHash = url.split(\"#\")[0];\r\n try {\r\n // Parse the URL to handle encoding consistently\r\n const urlObj = new URL(urlWithoutHash);\r\n /*\r\n * Reconstruct the URL with properly decoded query parameters\r\n * This ensures that %27 and ' are treated as equivalent\r\n */\r\n const normalizedUrl = urlObj.origin + urlObj.pathname + urlObj.search;\r\n // Apply canonicalization logic inline to avoid circular dependency\r\n return canonicalizeUrl(normalizedUrl);\r\n }\r\n catch (e) {\r\n // Fallback to original logic if URL parsing fails\r\n return canonicalizeUrl(urlWithoutHash);\r\n }\r\n}\n\nvar UrlUtils = /*#__PURE__*/Object.freeze({\n __proto__: null,\n getDeserializedResponse: getDeserializedResponse,\n mapToQueryString: mapToQueryString,\n normalizeUrlForComparison: normalizeUrlForComparison,\n stripLeadingHashOrQuery: stripLeadingHashOrQuery\n});\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * Url object class which can perform various transformations on url strings.\r\n */\r\nclass UrlString {\r\n get urlString() {\r\n return this._urlString;\r\n }\r\n constructor(url) {\r\n this._urlString = url;\r\n if (!this._urlString) {\r\n // Throws error if url is empty\r\n throw createClientConfigurationError(urlEmptyError);\r\n }\r\n if (!url.includes(\"#\")) {\r\n this._urlString = UrlString.canonicalizeUri(url);\r\n }\r\n }\r\n /**\r\n * Ensure urls are lower case and end with a / character.\r\n * @param url\r\n */\r\n static canonicalizeUri(url) {\r\n if (url) {\r\n let lowerCaseUrl = url.toLowerCase();\r\n if (StringUtils.endsWith(lowerCaseUrl, \"?\")) {\r\n lowerCaseUrl = lowerCaseUrl.slice(0, -1);\r\n }\r\n else if (StringUtils.endsWith(lowerCaseUrl, \"?/\")) {\r\n lowerCaseUrl = lowerCaseUrl.slice(0, -2);\r\n }\r\n if (!StringUtils.endsWith(lowerCaseUrl, \"/\")) {\r\n lowerCaseUrl += \"/\";\r\n }\r\n return lowerCaseUrl;\r\n }\r\n return url;\r\n }\r\n /**\r\n * Throws if urlString passed is not a valid authority URI string.\r\n */\r\n validateAsUri() {\r\n // Attempts to parse url for uri components\r\n let components;\r\n try {\r\n components = this.getUrlComponents();\r\n }\r\n catch (e) {\r\n throw createClientConfigurationError(urlParseError);\r\n }\r\n // Throw error if URI or path segments are not parseable.\r\n if (!components.HostNameAndPort || !components.PathSegments) {\r\n throw createClientConfigurationError(urlParseError);\r\n }\r\n // Throw error if uri is insecure.\r\n if (!components.Protocol ||\r\n components.Protocol.toLowerCase() !== \"https:\") {\r\n throw createClientConfigurationError(authorityUriInsecure);\r\n }\r\n }\r\n /**\r\n * Given a url and a query string return the url with provided query string appended\r\n * @param url\r\n * @param queryString\r\n */\r\n static appendQueryString(url, queryString) {\r\n if (!queryString) {\r\n return url;\r\n }\r\n return url.indexOf(\"?\") < 0\r\n ? `${url}?${queryString}`\r\n : `${url}&${queryString}`;\r\n }\r\n /**\r\n * Returns a url with the hash removed\r\n * @param url\r\n */\r\n static removeHashFromUrl(url) {\r\n return UrlString.canonicalizeUri(url.split(\"#\")[0]);\r\n }\r\n /**\r\n * Given a url like https://a:b/common/d?e=f#g, and a tenantId, returns https://a:b/tenantId/d\r\n * @param href The url\r\n * @param tenantId The tenant id to replace\r\n */\r\n replaceTenantPath(tenantId) {\r\n const urlObject = this.getUrlComponents();\r\n const pathArray = urlObject.PathSegments;\r\n if (tenantId &&\r\n pathArray.length !== 0 &&\r\n (pathArray[0] === AADAuthorityConstants.COMMON ||\r\n pathArray[0] === AADAuthorityConstants.ORGANIZATIONS)) {\r\n pathArray[0] = tenantId;\r\n }\r\n return UrlString.constructAuthorityUriFromObject(urlObject);\r\n }\r\n /**\r\n * Parses out the components from a url string.\r\n * @returns An object with the various components. Please cache this value insted of calling this multiple times on the same url.\r\n */\r\n getUrlComponents() {\r\n // https://gist.github.com/curtisz/11139b2cfcaef4a261e0\r\n const regEx = RegExp(\"^(([^:/?#]+):)?(//([^/?#]*))?([^?#]*)(\\\\?([^#]*))?(#(.*))?\");\r\n // If url string does not match regEx, we throw an error\r\n const match = this.urlString.match(regEx);\r\n if (!match) {\r\n throw createClientConfigurationError(urlParseError);\r\n }\r\n // Url component object\r\n const urlComponents = {\r\n Protocol: match[1],\r\n HostNameAndPort: match[4],\r\n AbsolutePath: match[5],\r\n QueryString: match[7],\r\n };\r\n let pathSegments = urlComponents.AbsolutePath.split(\"/\");\r\n pathSegments = pathSegments.filter((val) => val && val.length > 0); // remove empty elements\r\n urlComponents.PathSegments = pathSegments;\r\n if (urlComponents.QueryString &&\r\n urlComponents.QueryString.endsWith(\"/\")) {\r\n urlComponents.QueryString = urlComponents.QueryString.substring(0, urlComponents.QueryString.length - 1);\r\n }\r\n return urlComponents;\r\n }\r\n static getDomainFromUrl(url) {\r\n const regEx = RegExp(\"^([^:/?#]+://)?([^/?#]*)\");\r\n const match = url.match(regEx);\r\n if (!match) {\r\n throw createClientConfigurationError(urlParseError);\r\n }\r\n return match[2];\r\n }\r\n static getAbsoluteUrl(relativeUrl, baseUrl) {\r\n if (relativeUrl[0] === Constants.FORWARD_SLASH) {\r\n const url = new UrlString(baseUrl);\r\n const baseComponents = url.getUrlComponents();\r\n return (baseComponents.Protocol +\r\n \"//\" +\r\n baseComponents.HostNameAndPort +\r\n relativeUrl);\r\n }\r\n return relativeUrl;\r\n }\r\n static constructAuthorityUriFromObject(urlObject) {\r\n return new UrlString(urlObject.Protocol +\r\n \"//\" +\r\n urlObject.HostNameAndPort +\r\n \"/\" +\r\n urlObject.PathSegments.join(\"/\"));\r\n }\r\n /**\r\n * Check if the hash of the URL string contains known properties\r\n * @deprecated This API will be removed in a future version\r\n */\r\n static hashContainsKnownProperties(response) {\r\n return !!getDeserializedResponse(response);\r\n }\r\n}\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nconst rawMetdataJSON = {\r\n endpointMetadata: {\r\n \"login.microsoftonline.com\": {\r\n token_endpoint: \"https://login.microsoftonline.com/{tenantid}/oauth2/v2.0/token\",\r\n jwks_uri: \"https://login.microsoftonline.com/{tenantid}/discovery/v2.0/keys\",\r\n issuer: \"https://login.microsoftonline.com/{tenantid}/v2.0\",\r\n authorization_endpoint: \"https://login.microsoftonline.com/{tenantid}/oauth2/v2.0/authorize\",\r\n end_session_endpoint: \"https://login.microsoftonline.com/{tenantid}/oauth2/v2.0/logout\",\r\n },\r\n \"login.chinacloudapi.cn\": {\r\n token_endpoint: \"https://login.chinacloudapi.cn/{tenantid}/oauth2/v2.0/token\",\r\n jwks_uri: \"https://login.chinacloudapi.cn/{tenantid}/discovery/v2.0/keys\",\r\n issuer: \"https://login.partner.microsoftonline.cn/{tenantid}/v2.0\",\r\n authorization_endpoint: \"https://login.chinacloudapi.cn/{tenantid}/oauth2/v2.0/authorize\",\r\n end_session_endpoint: \"https://login.chinacloudapi.cn/{tenantid}/oauth2/v2.0/logout\",\r\n },\r\n \"login.microsoftonline.us\": {\r\n token_endpoint: \"https://login.microsoftonline.us/{tenantid}/oauth2/v2.0/token\",\r\n jwks_uri: \"https://login.microsoftonline.us/{tenantid}/discovery/v2.0/keys\",\r\n issuer: \"https://login.microsoftonline.us/{tenantid}/v2.0\",\r\n authorization_endpoint: \"https://login.microsoftonline.us/{tenantid}/oauth2/v2.0/authorize\",\r\n end_session_endpoint: \"https://login.microsoftonline.us/{tenantid}/oauth2/v2.0/logout\",\r\n },\r\n },\r\n instanceDiscoveryMetadata: {\r\n metadata: [\r\n {\r\n preferred_network: \"login.microsoftonline.com\",\r\n preferred_cache: \"login.windows.net\",\r\n aliases: [\r\n \"login.microsoftonline.com\",\r\n \"login.windows.net\",\r\n \"login.microsoft.com\",\r\n \"sts.windows.net\",\r\n ],\r\n },\r\n {\r\n preferred_network: \"login.partner.microsoftonline.cn\",\r\n preferred_cache: \"login.partner.microsoftonline.cn\",\r\n aliases: [\r\n \"login.partner.microsoftonline.cn\",\r\n \"login.chinacloudapi.cn\",\r\n ],\r\n },\r\n {\r\n preferred_network: \"login.microsoftonline.de\",\r\n preferred_cache: \"login.microsoftonline.de\",\r\n aliases: [\"login.microsoftonline.de\"],\r\n },\r\n {\r\n preferred_network: \"login.microsoftonline.us\",\r\n preferred_cache: \"login.microsoftonline.us\",\r\n aliases: [\r\n \"login.microsoftonline.us\",\r\n \"login.usgovcloudapi.net\",\r\n ],\r\n },\r\n {\r\n preferred_network: \"login-us.microsoftonline.com\",\r\n preferred_cache: \"login-us.microsoftonline.com\",\r\n aliases: [\"login-us.microsoftonline.com\"],\r\n },\r\n ],\r\n },\r\n};\r\nconst EndpointMetadata = rawMetdataJSON.endpointMetadata;\r\nconst InstanceDiscoveryMetadata = rawMetdataJSON.instanceDiscoveryMetadata;\r\nconst InstanceDiscoveryMetadataAliases = new Set();\r\nInstanceDiscoveryMetadata.metadata.forEach((metadataEntry) => {\r\n metadataEntry.aliases.forEach((alias) => {\r\n InstanceDiscoveryMetadataAliases.add(alias);\r\n });\r\n});\r\n/**\r\n * Attempts to get an aliases array from the static authority metadata sources based on the canonical authority host\r\n * @param staticAuthorityOptions\r\n * @param logger\r\n * @returns\r\n */\r\nfunction getAliasesFromStaticSources(staticAuthorityOptions, logger) {\r\n let staticAliases;\r\n const canonicalAuthority = staticAuthorityOptions.canonicalAuthority;\r\n if (canonicalAuthority) {\r\n const authorityHost = new UrlString(canonicalAuthority).getUrlComponents().HostNameAndPort;\r\n staticAliases =\r\n getAliasesFromMetadata(authorityHost, staticAuthorityOptions.cloudDiscoveryMetadata?.metadata, AuthorityMetadataSource.CONFIG, logger) ||\r\n getAliasesFromMetadata(authorityHost, InstanceDiscoveryMetadata.metadata, AuthorityMetadataSource.HARDCODED_VALUES, logger) ||\r\n staticAuthorityOptions.knownAuthorities;\r\n }\r\n return staticAliases || [];\r\n}\r\n/**\r\n * Returns aliases for from the raw cloud discovery metadata passed in\r\n * @param authorityHost\r\n * @param rawCloudDiscoveryMetadata\r\n * @returns\r\n */\r\nfunction getAliasesFromMetadata(authorityHost, cloudDiscoveryMetadata, source, logger) {\r\n logger?.trace(`getAliasesFromMetadata called with source: ${source}`);\r\n if (authorityHost && cloudDiscoveryMetadata) {\r\n const metadata = getCloudDiscoveryMetadataFromNetworkResponse(cloudDiscoveryMetadata, authorityHost);\r\n if (metadata) {\r\n logger?.trace(`getAliasesFromMetadata: found cloud discovery metadata in ${source}, returning aliases`);\r\n return metadata.aliases;\r\n }\r\n else {\r\n logger?.trace(`getAliasesFromMetadata: did not find cloud discovery metadata in ${source}`);\r\n }\r\n }\r\n return null;\r\n}\r\n/**\r\n * Get cloud discovery metadata for common authorities\r\n */\r\nfunction getCloudDiscoveryMetadataFromHardcodedValues(authorityHost) {\r\n const metadata = getCloudDiscoveryMetadataFromNetworkResponse(InstanceDiscoveryMetadata.metadata, authorityHost);\r\n return metadata;\r\n}\r\n/**\r\n * Searches instance discovery network response for the entry that contains the host in the aliases list\r\n * @param response\r\n * @param authority\r\n */\r\nfunction getCloudDiscoveryMetadataFromNetworkResponse(response, authorityHost) {\r\n for (let i = 0; i < response.length; i++) {\r\n const metadata = response[i];\r\n if (metadata.aliases.includes(authorityHost)) {\r\n return metadata;\r\n }\r\n }\r\n return null;\r\n}\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * Protocol modes supported by MSAL.\r\n */\r\nconst ProtocolMode = {\r\n /**\r\n * Auth Code + PKCE with Entra ID (formerly AAD) specific optimizations and features\r\n */\r\n AAD: \"AAD\",\r\n /**\r\n * Auth Code + PKCE without Entra ID specific optimizations and features. For use only with non-Microsoft owned authorities.\r\n * Support is limited for this mode.\r\n */\r\n OIDC: \"OIDC\",\r\n /**\r\n * Encrypted Authorize Response (EAR) with Entra ID specific optimizations and features\r\n */\r\n EAR: \"EAR\",\r\n};\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nconst AzureCloudInstance = {\r\n // AzureCloudInstance is not specified.\r\n None: \"none\",\r\n // Microsoft Azure public cloud\r\n AzurePublic: \"https://login.microsoftonline.com\",\r\n // Microsoft PPE\r\n AzurePpe: \"https://login.windows-ppe.net\",\r\n // Microsoft Chinese national/regional cloud\r\n AzureChina: \"https://login.chinacloudapi.cn\",\r\n // Microsoft German national/regional cloud (\"Black Forest\")\r\n AzureGermany: \"https://login.microsoftonline.de\",\r\n // US Government cloud\r\n AzureUsGovernment: \"https://login.microsoftonline.us\",\r\n};\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nfunction isCloudInstanceDiscoveryResponse(response) {\r\n return (response.hasOwnProperty(\"tenant_discovery_endpoint\") &&\r\n response.hasOwnProperty(\"metadata\"));\r\n}\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nfunction isCloudInstanceDiscoveryErrorResponse(response) {\r\n return (response.hasOwnProperty(\"error\") &&\r\n response.hasOwnProperty(\"error_description\"));\r\n}\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * Enumeration of operations that are instrumented by have their performance measured by the PerformanceClient.\r\n *\r\n * @export\r\n * @enum {number}\r\n */\r\nconst PerformanceEvents = {\r\n /**\r\n * acquireTokenByCode API (msal-browser and msal-node).\r\n * Used to acquire tokens by trading an authorization code against the token endpoint.\r\n */\r\n AcquireTokenByCode: \"acquireTokenByCode\",\r\n /**\r\n * acquireTokenByRefreshToken API (msal-browser and msal-node).\r\n * Used to renew an access token using a refresh token against the token endpoint.\r\n */\r\n AcquireTokenByRefreshToken: \"acquireTokenByRefreshToken\",\r\n /**\r\n * acquireTokenSilent API (msal-browser and msal-node).\r\n * Used to silently acquire a new access token (from the cache or the network).\r\n */\r\n AcquireTokenSilent: \"acquireTokenSilent\",\r\n /**\r\n * acquireTokenSilentAsync (msal-browser).\r\n * Internal API for acquireTokenSilent.\r\n */\r\n AcquireTokenSilentAsync: \"acquireTokenSilentAsync\",\r\n /**\r\n * acquireTokenPopup (msal-browser).\r\n * Used to acquire a new access token interactively through pop ups\r\n */\r\n AcquireTokenPopup: \"acquireTokenPopup\",\r\n /**\r\n * acquireTokenPreRedirect (msal-browser).\r\n * First part of the redirect flow.\r\n * Used to acquire a new access token interactively through redirects.\r\n */\r\n AcquireTokenPreRedirect: \"acquireTokenPreRedirect\",\r\n /**\r\n * acquireTokenRedirect (msal-browser).\r\n * Second part of the redirect flow.\r\n * Used to acquire a new access token interactively through redirects.\r\n */\r\n AcquireTokenRedirect: \"acquireTokenRedirect\",\r\n /**\r\n * getPublicKeyThumbprint API in CryptoOpts class (msal-browser).\r\n * Used to generate a public/private keypair and generate a public key thumbprint for pop requests.\r\n */\r\n CryptoOptsGetPublicKeyThumbprint: \"cryptoOptsGetPublicKeyThumbprint\",\r\n /**\r\n * signJwt API in CryptoOpts class (msal-browser).\r\n * Used to signed a pop token.\r\n */\r\n CryptoOptsSignJwt: \"cryptoOptsSignJwt\",\r\n /**\r\n * acquireToken API in the SilentCacheClient class (msal-browser).\r\n * Used to read access tokens from the cache.\r\n */\r\n SilentCacheClientAcquireToken: \"silentCacheClientAcquireToken\",\r\n /**\r\n * acquireToken API in the SilentIframeClient class (msal-browser).\r\n * Used to acquire a new set of tokens from the authorize endpoint in a hidden iframe.\r\n */\r\n SilentIframeClientAcquireToken: \"silentIframeClientAcquireToken\",\r\n AwaitConcurrentIframe: \"awaitConcurrentIframe\",\r\n /**\r\n * acquireToken API in SilentRereshClient (msal-browser).\r\n * Used to acquire a new set of tokens from the token endpoint using a refresh token.\r\n */\r\n SilentRefreshClientAcquireToken: \"silentRefreshClientAcquireToken\",\r\n /**\r\n * ssoSilent API (msal-browser).\r\n * Used to silently acquire an authorization code and set of tokens using a hidden iframe.\r\n */\r\n SsoSilent: \"ssoSilent\",\r\n /**\r\n * getDiscoveredAuthority API in StandardInteractionClient class (msal-browser).\r\n * Used to load authority metadata for a request.\r\n */\r\n StandardInteractionClientGetDiscoveredAuthority: \"standardInteractionClientGetDiscoveredAuthority\",\r\n /**\r\n * acquireToken APIs in msal-browser.\r\n * Used to make an /authorize endpoint call with native brokering enabled.\r\n */\r\n FetchAccountIdWithNativeBroker: \"fetchAccountIdWithNativeBroker\",\r\n /**\r\n * acquireToken API in NativeInteractionClient class (msal-browser).\r\n * Used to acquire a token from Native component when native brokering is enabled.\r\n */\r\n NativeInteractionClientAcquireToken: \"nativeInteractionClientAcquireToken\",\r\n /**\r\n * Time spent creating default headers for requests to token endpoint\r\n */\r\n BaseClientCreateTokenRequestHeaders: \"baseClientCreateTokenRequestHeaders\",\r\n /**\r\n * Time spent sending/waiting for the response of a request to the token endpoint\r\n */\r\n NetworkClientSendPostRequestAsync: \"networkClientSendPostRequestAsync\",\r\n RefreshTokenClientExecutePostToTokenEndpoint: \"refreshTokenClientExecutePostToTokenEndpoint\",\r\n AuthorizationCodeClientExecutePostToTokenEndpoint: \"authorizationCodeClientExecutePostToTokenEndpoint\",\r\n /**\r\n * Used to measure the time taken for completing embedded-broker handshake (PW-Broker).\r\n */\r\n BrokerHandhshake: \"brokerHandshake\",\r\n /**\r\n * acquireTokenByRefreshToken API in BrokerClientApplication (PW-Broker) .\r\n */\r\n AcquireTokenByRefreshTokenInBroker: \"acquireTokenByRefreshTokenInBroker\",\r\n /**\r\n * Time taken for token acquisition by broker\r\n */\r\n AcquireTokenByBroker: \"acquireTokenByBroker\",\r\n /**\r\n * Time spent on the network for refresh token acquisition\r\n */\r\n RefreshTokenClientExecuteTokenRequest: \"refreshTokenClientExecuteTokenRequest\",\r\n /**\r\n * Time taken for acquiring refresh token , records RT size\r\n */\r\n RefreshTokenClientAcquireToken: \"refreshTokenClientAcquireToken\",\r\n /**\r\n * Time taken for acquiring cached refresh token\r\n */\r\n RefreshTokenClientAcquireTokenWithCachedRefreshToken: \"refreshTokenClientAcquireTokenWithCachedRefreshToken\",\r\n /**\r\n * acquireTokenByRefreshToken API in RefreshTokenClient (msal-common).\r\n */\r\n RefreshTokenClientAcquireTokenByRefreshToken: \"refreshTokenClientAcquireTokenByRefreshToken\",\r\n /**\r\n * Helper function to create token request body in RefreshTokenClient (msal-common).\r\n */\r\n RefreshTokenClientCreateTokenRequestBody: \"refreshTokenClientCreateTokenRequestBody\",\r\n /**\r\n * acquireTokenFromCache (msal-browser).\r\n * Internal API for acquiring token from cache\r\n */\r\n AcquireTokenFromCache: \"acquireTokenFromCache\",\r\n SilentFlowClientAcquireCachedToken: \"silentFlowClientAcquireCachedToken\",\r\n SilentFlowClientGenerateResultFromCacheRecord: \"silentFlowClientGenerateResultFromCacheRecord\",\r\n /**\r\n * acquireTokenBySilentIframe (msal-browser).\r\n * Internal API for acquiring token by silent Iframe\r\n */\r\n AcquireTokenBySilentIframe: \"acquireTokenBySilentIframe\",\r\n /**\r\n * Internal API for initializing base request in BaseInteractionClient (msal-browser)\r\n */\r\n InitializeBaseRequest: \"initializeBaseRequest\",\r\n /**\r\n * Internal API for initializing silent request in SilentCacheClient (msal-browser)\r\n */\r\n InitializeSilentRequest: \"initializeSilentRequest\",\r\n InitializeClientApplication: \"initializeClientApplication\",\r\n InitializeCache: \"initializeCache\",\r\n /**\r\n * Helper function in SilentIframeClient class (msal-browser).\r\n */\r\n SilentIframeClientTokenHelper: \"silentIframeClientTokenHelper\",\r\n /**\r\n * SilentHandler\r\n */\r\n SilentHandlerInitiateAuthRequest: \"silentHandlerInitiateAuthRequest\",\r\n SilentHandlerMonitorIframeForHash: \"silentHandlerMonitorIframeForHash\",\r\n SilentHandlerLoadFrame: \"silentHandlerLoadFrame\",\r\n SilentHandlerLoadFrameSync: \"silentHandlerLoadFrameSync\",\r\n /**\r\n * Helper functions in StandardInteractionClient class (msal-browser)\r\n */\r\n StandardInteractionClientCreateAuthCodeClient: \"standardInteractionClientCreateAuthCodeClient\",\r\n StandardInteractionClientGetClientConfiguration: \"standardInteractionClientGetClientConfiguration\",\r\n StandardInteractionClientInitializeAuthorizationRequest: \"standardInteractionClientInitializeAuthorizationRequest\",\r\n /**\r\n * getAuthCodeUrl API (msal-browser and msal-node).\r\n */\r\n GetAuthCodeUrl: \"getAuthCodeUrl\",\r\n GetStandardParams: \"getStandardParams\",\r\n /**\r\n * Functions from InteractionHandler (msal-browser)\r\n */\r\n HandleCodeResponseFromServer: \"handleCodeResponseFromServer\",\r\n HandleCodeResponse: \"handleCodeResponse\",\r\n HandleResponseEar: \"handleResponseEar\",\r\n HandleResponsePlatformBroker: \"handleResponsePlatformBroker\",\r\n HandleResponseCode: \"handleResponseCode\",\r\n UpdateTokenEndpointAuthority: \"updateTokenEndpointAuthority\",\r\n /**\r\n * APIs in Authorization Code Client (msal-common)\r\n */\r\n AuthClientAcquireToken: \"authClientAcquireToken\",\r\n AuthClientExecuteTokenRequest: \"authClientExecuteTokenRequest\",\r\n AuthClientCreateTokenRequestBody: \"authClientCreateTokenRequestBody\",\r\n /**\r\n * Generate functions in PopTokenGenerator (msal-common)\r\n */\r\n PopTokenGenerateCnf: \"popTokenGenerateCnf\",\r\n PopTokenGenerateKid: \"popTokenGenerateKid\",\r\n /**\r\n * handleServerTokenResponse API in ResponseHandler (msal-common)\r\n */\r\n HandleServerTokenResponse: \"handleServerTokenResponse\",\r\n DeserializeResponse: \"deserializeResponse\",\r\n /**\r\n * Authority functions\r\n */\r\n AuthorityFactoryCreateDiscoveredInstance: \"authorityFactoryCreateDiscoveredInstance\",\r\n AuthorityResolveEndpointsAsync: \"authorityResolveEndpointsAsync\",\r\n AuthorityResolveEndpointsFromLocalSources: \"authorityResolveEndpointsFromLocalSources\",\r\n AuthorityGetCloudDiscoveryMetadataFromNetwork: \"authorityGetCloudDiscoveryMetadataFromNetwork\",\r\n AuthorityUpdateCloudDiscoveryMetadata: \"authorityUpdateCloudDiscoveryMetadata\",\r\n AuthorityGetEndpointMetadataFromNetwork: \"authorityGetEndpointMetadataFromNetwork\",\r\n AuthorityUpdateEndpointMetadata: \"authorityUpdateEndpointMetadata\",\r\n AuthorityUpdateMetadataWithRegionalInformation: \"authorityUpdateMetadataWithRegionalInformation\",\r\n /**\r\n * Region Discovery functions\r\n */\r\n RegionDiscoveryDetectRegion: \"regionDiscoveryDetectRegion\",\r\n RegionDiscoveryGetRegionFromIMDS: \"regionDiscoveryGetRegionFromIMDS\",\r\n RegionDiscoveryGetCurrentVersion: \"regionDiscoveryGetCurrentVersion\",\r\n AcquireTokenByCodeAsync: \"acquireTokenByCodeAsync\",\r\n GetEndpointMetadataFromNetwork: \"getEndpointMetadataFromNetwork\",\r\n GetCloudDiscoveryMetadataFromNetworkMeasurement: \"getCloudDiscoveryMetadataFromNetworkMeasurement\",\r\n HandleRedirectPromiseMeasurement: \"handleRedirectPromise\",\r\n HandleNativeRedirectPromiseMeasurement: \"handleNativeRedirectPromise\",\r\n UpdateCloudDiscoveryMetadataMeasurement: \"updateCloudDiscoveryMetadataMeasurement\",\r\n UsernamePasswordClientAcquireToken: \"usernamePasswordClientAcquireToken\",\r\n NativeMessageHandlerHandshake: \"nativeMessageHandlerHandshake\",\r\n NativeGenerateAuthResult: \"nativeGenerateAuthResult\",\r\n RemoveHiddenIframe: \"removeHiddenIframe\",\r\n /**\r\n * Cache operations\r\n */\r\n ClearTokensAndKeysWithClaims: \"clearTokensAndKeysWithClaims\",\r\n CacheManagerGetRefreshToken: \"cacheManagerGetRefreshToken\",\r\n ImportExistingCache: \"importExistingCache\",\r\n SetUserData: \"setUserData\",\r\n LocalStorageUpdated: \"localStorageUpdated\",\r\n /**\r\n * Crypto Operations\r\n */\r\n GeneratePkceCodes: \"generatePkceCodes\",\r\n GenerateCodeVerifier: \"generateCodeVerifier\",\r\n GenerateCodeChallengeFromVerifier: \"generateCodeChallengeFromVerifier\",\r\n Sha256Digest: \"sha256Digest\",\r\n GetRandomValues: \"getRandomValues\",\r\n GenerateHKDF: \"generateHKDF\",\r\n GenerateBaseKey: \"generateBaseKey\",\r\n Base64Decode: \"base64Decode\",\r\n UrlEncodeArr: \"urlEncodeArr\",\r\n Encrypt: \"encrypt\",\r\n Decrypt: \"decrypt\",\r\n GenerateEarKey: \"generateEarKey\",\r\n DecryptEarResponse: \"decryptEarResponse\",\r\n};\r\nconst PerformanceEventAbbreviations = new Map([\r\n [PerformanceEvents.AcquireTokenByCode, \"ATByCode\"],\r\n [PerformanceEvents.AcquireTokenByRefreshToken, \"ATByRT\"],\r\n [PerformanceEvents.AcquireTokenSilent, \"ATS\"],\r\n [PerformanceEvents.AcquireTokenSilentAsync, \"ATSAsync\"],\r\n [PerformanceEvents.AcquireTokenPopup, \"ATPopup\"],\r\n [PerformanceEvents.AcquireTokenRedirect, \"ATRedirect\"],\r\n [\r\n PerformanceEvents.CryptoOptsGetPublicKeyThumbprint,\r\n \"CryptoGetPKThumb\",\r\n ],\r\n [PerformanceEvents.CryptoOptsSignJwt, \"CryptoSignJwt\"],\r\n [PerformanceEvents.SilentCacheClientAcquireToken, \"SltCacheClientAT\"],\r\n [PerformanceEvents.SilentIframeClientAcquireToken, \"SltIframeClientAT\"],\r\n [PerformanceEvents.SilentRefreshClientAcquireToken, \"SltRClientAT\"],\r\n [PerformanceEvents.SsoSilent, \"SsoSlt\"],\r\n [\r\n PerformanceEvents.StandardInteractionClientGetDiscoveredAuthority,\r\n \"StdIntClientGetDiscAuth\",\r\n ],\r\n [\r\n PerformanceEvents.FetchAccountIdWithNativeBroker,\r\n \"FetchAccIdWithNtvBroker\",\r\n ],\r\n [\r\n PerformanceEvents.NativeInteractionClientAcquireToken,\r\n \"NtvIntClientAT\",\r\n ],\r\n [\r\n PerformanceEvents.BaseClientCreateTokenRequestHeaders,\r\n \"BaseClientCreateTReqHead\",\r\n ],\r\n [\r\n PerformanceEvents.NetworkClientSendPostRequestAsync,\r\n \"NetClientSendPost\",\r\n ],\r\n [\r\n PerformanceEvents.RefreshTokenClientExecutePostToTokenEndpoint,\r\n \"RTClientExecPost\",\r\n ],\r\n [\r\n PerformanceEvents.AuthorizationCodeClientExecutePostToTokenEndpoint,\r\n \"AuthCodeClientExecPost\",\r\n ],\r\n [PerformanceEvents.BrokerHandhshake, \"BrokerHandshake\"],\r\n [\r\n PerformanceEvents.AcquireTokenByRefreshTokenInBroker,\r\n \"ATByRTInBroker\",\r\n ],\r\n [PerformanceEvents.AcquireTokenByBroker, \"ATByBroker\"],\r\n [\r\n PerformanceEvents.RefreshTokenClientExecuteTokenRequest,\r\n \"RTClientExecTReq\",\r\n ],\r\n [PerformanceEvents.RefreshTokenClientAcquireToken, \"RTClientAT\"],\r\n [\r\n PerformanceEvents.RefreshTokenClientAcquireTokenWithCachedRefreshToken,\r\n \"RTClientATWithCachedRT\",\r\n ],\r\n [\r\n PerformanceEvents.RefreshTokenClientAcquireTokenByRefreshToken,\r\n \"RTClientATByRT\",\r\n ],\r\n [\r\n PerformanceEvents.RefreshTokenClientCreateTokenRequestBody,\r\n \"RTClientCreateTReqBody\",\r\n ],\r\n [PerformanceEvents.AcquireTokenFromCache, \"ATFromCache\"],\r\n [\r\n PerformanceEvents.SilentFlowClientAcquireCachedToken,\r\n \"SltFlowClientATCached\",\r\n ],\r\n [\r\n PerformanceEvents.SilentFlowClientGenerateResultFromCacheRecord,\r\n \"SltFlowClientGenResFromCache\",\r\n ],\r\n [PerformanceEvents.AcquireTokenBySilentIframe, \"ATBySltIframe\"],\r\n [PerformanceEvents.InitializeBaseRequest, \"InitBaseReq\"],\r\n [PerformanceEvents.InitializeSilentRequest, \"InitSltReq\"],\r\n [\r\n PerformanceEvents.InitializeClientApplication,\r\n \"InitClientApplication\",\r\n ],\r\n [PerformanceEvents.InitializeCache, \"InitCache\"],\r\n [PerformanceEvents.ImportExistingCache, \"importCache\"],\r\n [PerformanceEvents.SetUserData, \"setUserData\"],\r\n [PerformanceEvents.LocalStorageUpdated, \"localStorageUpdated\"],\r\n [PerformanceEvents.SilentIframeClientTokenHelper, \"SIClientTHelper\"],\r\n [\r\n PerformanceEvents.SilentHandlerInitiateAuthRequest,\r\n \"SHandlerInitAuthReq\",\r\n ],\r\n [\r\n PerformanceEvents.SilentHandlerMonitorIframeForHash,\r\n \"SltHandlerMonitorIframeForHash\",\r\n ],\r\n [PerformanceEvents.SilentHandlerLoadFrame, \"SHandlerLoadFrame\"],\r\n [PerformanceEvents.SilentHandlerLoadFrameSync, \"SHandlerLoadFrameSync\"],\r\n [\r\n PerformanceEvents.StandardInteractionClientCreateAuthCodeClient,\r\n \"StdIntClientCreateAuthCodeClient\",\r\n ],\r\n [\r\n PerformanceEvents.StandardInteractionClientGetClientConfiguration,\r\n \"StdIntClientGetClientConf\",\r\n ],\r\n [\r\n PerformanceEvents.StandardInteractionClientInitializeAuthorizationRequest,\r\n \"StdIntClientInitAuthReq\",\r\n ],\r\n [PerformanceEvents.GetAuthCodeUrl, \"GetAuthCodeUrl\"],\r\n [\r\n PerformanceEvents.HandleCodeResponseFromServer,\r\n \"HandleCodeResFromServer\",\r\n ],\r\n [PerformanceEvents.HandleCodeResponse, \"HandleCodeResp\"],\r\n [PerformanceEvents.HandleResponseEar, \"HandleRespEar\"],\r\n [PerformanceEvents.HandleResponseCode, \"HandleRespCode\"],\r\n [\r\n PerformanceEvents.HandleResponsePlatformBroker,\r\n \"HandleRespPlatBroker\",\r\n ],\r\n [PerformanceEvents.UpdateTokenEndpointAuthority, \"UpdTEndpointAuth\"],\r\n [PerformanceEvents.AuthClientAcquireToken, \"AuthClientAT\"],\r\n [PerformanceEvents.AuthClientExecuteTokenRequest, \"AuthClientExecTReq\"],\r\n [\r\n PerformanceEvents.AuthClientCreateTokenRequestBody,\r\n \"AuthClientCreateTReqBody\",\r\n ],\r\n [PerformanceEvents.PopTokenGenerateCnf, \"PopTGenCnf\"],\r\n [PerformanceEvents.PopTokenGenerateKid, \"PopTGenKid\"],\r\n [PerformanceEvents.HandleServerTokenResponse, \"HandleServerTRes\"],\r\n [PerformanceEvents.DeserializeResponse, \"DeserializeRes\"],\r\n [\r\n PerformanceEvents.AuthorityFactoryCreateDiscoveredInstance,\r\n \"AuthFactCreateDiscInst\",\r\n ],\r\n [\r\n PerformanceEvents.AuthorityResolveEndpointsAsync,\r\n \"AuthResolveEndpointsAsync\",\r\n ],\r\n [\r\n PerformanceEvents.AuthorityResolveEndpointsFromLocalSources,\r\n \"AuthResolveEndpointsFromLocal\",\r\n ],\r\n [\r\n PerformanceEvents.AuthorityGetCloudDiscoveryMetadataFromNetwork,\r\n \"AuthGetCDMetaFromNet\",\r\n ],\r\n [\r\n PerformanceEvents.AuthorityUpdateCloudDiscoveryMetadata,\r\n \"AuthUpdCDMeta\",\r\n ],\r\n [\r\n PerformanceEvents.AuthorityGetEndpointMetadataFromNetwork,\r\n \"AuthUpdCDMetaFromNet\",\r\n ],\r\n [\r\n PerformanceEvents.AuthorityUpdateEndpointMetadata,\r\n \"AuthUpdEndpointMeta\",\r\n ],\r\n [\r\n PerformanceEvents.AuthorityUpdateMetadataWithRegionalInformation,\r\n \"AuthUpdMetaWithRegInfo\",\r\n ],\r\n [PerformanceEvents.RegionDiscoveryDetectRegion, \"RegDiscDetectReg\"],\r\n [\r\n PerformanceEvents.RegionDiscoveryGetRegionFromIMDS,\r\n \"RegDiscGetRegFromIMDS\",\r\n ],\r\n [\r\n PerformanceEvents.RegionDiscoveryGetCurrentVersion,\r\n \"RegDiscGetCurrentVer\",\r\n ],\r\n [PerformanceEvents.AcquireTokenByCodeAsync, \"ATByCodeAsync\"],\r\n [\r\n PerformanceEvents.GetEndpointMetadataFromNetwork,\r\n \"GetEndpointMetaFromNet\",\r\n ],\r\n [\r\n PerformanceEvents.GetCloudDiscoveryMetadataFromNetworkMeasurement,\r\n \"GetCDMetaFromNet\",\r\n ],\r\n [\r\n PerformanceEvents.HandleRedirectPromiseMeasurement,\r\n \"HandleRedirectPromise\",\r\n ],\r\n [\r\n PerformanceEvents.HandleNativeRedirectPromiseMeasurement,\r\n \"HandleNtvRedirectPromise\",\r\n ],\r\n [\r\n PerformanceEvents.UpdateCloudDiscoveryMetadataMeasurement,\r\n \"UpdateCDMeta\",\r\n ],\r\n [\r\n PerformanceEvents.UsernamePasswordClientAcquireToken,\r\n \"UserPassClientAT\",\r\n ],\r\n [\r\n PerformanceEvents.NativeMessageHandlerHandshake,\r\n \"NtvMsgHandlerHandshake\",\r\n ],\r\n [PerformanceEvents.NativeGenerateAuthResult, \"NtvGenAuthRes\"],\r\n [PerformanceEvents.RemoveHiddenIframe, \"RemoveHiddenIframe\"],\r\n [\r\n PerformanceEvents.ClearTokensAndKeysWithClaims,\r\n \"ClearTAndKeysWithClaims\",\r\n ],\r\n [PerformanceEvents.CacheManagerGetRefreshToken, \"CacheManagerGetRT\"],\r\n [PerformanceEvents.GeneratePkceCodes, \"GenPkceCodes\"],\r\n [PerformanceEvents.GenerateCodeVerifier, \"GenCodeVerifier\"],\r\n [\r\n PerformanceEvents.GenerateCodeChallengeFromVerifier,\r\n \"GenCodeChallengeFromVerifier\",\r\n ],\r\n [PerformanceEvents.Sha256Digest, \"Sha256Digest\"],\r\n [PerformanceEvents.GetRandomValues, \"GetRandomValues\"],\r\n [PerformanceEvents.GenerateHKDF, \"genHKDF\"],\r\n [PerformanceEvents.GenerateBaseKey, \"genBaseKey\"],\r\n [PerformanceEvents.Base64Decode, \"b64Decode\"],\r\n [PerformanceEvents.UrlEncodeArr, \"urlEncArr\"],\r\n [PerformanceEvents.Encrypt, \"encrypt\"],\r\n [PerformanceEvents.Decrypt, \"decrypt\"],\r\n [PerformanceEvents.GenerateEarKey, \"genEarKey\"],\r\n [PerformanceEvents.DecryptEarResponse, \"decryptEarResp\"],\r\n]);\r\n/**\r\n * State of the performance event.\r\n *\r\n * @export\r\n * @enum {number}\r\n */\r\nconst PerformanceEventStatus = {\r\n NotStarted: 0,\r\n InProgress: 1,\r\n Completed: 2,\r\n};\r\nconst IntFields = new Set([\r\n \"accessTokenSize\",\r\n \"durationMs\",\r\n \"idTokenSize\",\r\n \"matsSilentStatus\",\r\n \"matsHttpStatus\",\r\n \"refreshTokenSize\",\r\n \"queuedTimeMs\",\r\n \"startTimeMs\",\r\n \"status\",\r\n \"multiMatchedAT\",\r\n \"multiMatchedID\",\r\n \"multiMatchedRT\",\r\n \"unencryptedCacheCount\",\r\n \"encryptedCacheExpiredCount\",\r\n \"oldAccountCount\",\r\n \"oldAccessCount\",\r\n \"oldIdCount\",\r\n \"oldRefreshCount\",\r\n \"currAccountCount\",\r\n \"currAccessCount\",\r\n \"currIdCount\",\r\n \"currRefreshCount\",\r\n \"expiredCacheRemovedCount\",\r\n \"upgradedCacheCount\",\r\n]);\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * Wraps a function with a performance measurement.\r\n * Usage: invoke(functionToCall, performanceClient, \"EventName\", \"correlationId\")(...argsToPassToFunction)\r\n * @param callback\r\n * @param eventName\r\n * @param logger\r\n * @param telemetryClient\r\n * @param correlationId\r\n * @returns\r\n * @internal\r\n */\r\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\r\nconst invoke = (callback, eventName, logger, telemetryClient, correlationId) => {\r\n return (...args) => {\r\n logger.trace(`Executing function ${eventName}`);\r\n const inProgressEvent = telemetryClient?.startMeasurement(eventName, correlationId);\r\n if (correlationId) {\r\n // Track number of times this API is called in a single request\r\n const eventCount = eventName + \"CallCount\";\r\n telemetryClient?.incrementFields({ [eventCount]: 1 }, correlationId);\r\n }\r\n try {\r\n const result = callback(...args);\r\n inProgressEvent?.end({\r\n success: true,\r\n });\r\n logger.trace(`Returning result from ${eventName}`);\r\n return result;\r\n }\r\n catch (e) {\r\n logger.trace(`Error occurred in ${eventName}`);\r\n try {\r\n logger.trace(JSON.stringify(e));\r\n }\r\n catch (e) {\r\n logger.trace(\"Unable to print error message.\");\r\n }\r\n inProgressEvent?.end({\r\n success: false,\r\n }, e);\r\n throw e;\r\n }\r\n };\r\n};\r\n/**\r\n * Wraps an async function with a performance measurement.\r\n * Usage: invokeAsync(functionToCall, performanceClient, \"EventName\", \"correlationId\")(...argsToPassToFunction)\r\n * @param callback\r\n * @param eventName\r\n * @param logger\r\n * @param telemetryClient\r\n * @param correlationId\r\n * @returns\r\n * @internal\r\n *\r\n */\r\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\r\nconst invokeAsync = (callback, eventName, logger, telemetryClient, correlationId) => {\r\n return (...args) => {\r\n logger.trace(`Executing function ${eventName}`);\r\n const inProgressEvent = telemetryClient?.startMeasurement(eventName, correlationId);\r\n if (correlationId) {\r\n // Track number of times this API is called in a single request\r\n const eventCount = eventName + \"CallCount\";\r\n telemetryClient?.incrementFields({ [eventCount]: 1 }, correlationId);\r\n }\r\n telemetryClient?.setPreQueueTime(eventName, correlationId);\r\n return callback(...args)\r\n .then((response) => {\r\n logger.trace(`Returning result from ${eventName}`);\r\n inProgressEvent?.end({\r\n success: true,\r\n });\r\n return response;\r\n })\r\n .catch((e) => {\r\n logger.trace(`Error occurred in ${eventName}`);\r\n try {\r\n logger.trace(JSON.stringify(e));\r\n }\r\n catch (e) {\r\n logger.trace(\"Unable to print error message.\");\r\n }\r\n inProgressEvent?.end({\r\n success: false,\r\n }, e);\r\n throw e;\r\n });\r\n };\r\n};\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nclass RegionDiscovery {\r\n constructor(networkInterface, logger, performanceClient, correlationId) {\r\n this.networkInterface = networkInterface;\r\n this.logger = logger;\r\n this.performanceClient = performanceClient;\r\n this.correlationId = correlationId;\r\n }\r\n /**\r\n * Detect the region from the application's environment.\r\n *\r\n * @returns Promise\r\n */\r\n async detectRegion(environmentRegion, regionDiscoveryMetadata) {\r\n this.performanceClient?.addQueueMeasurement(PerformanceEvents.RegionDiscoveryDetectRegion, this.correlationId);\r\n // Initialize auto detected region with the region from the envrionment\r\n let autodetectedRegionName = environmentRegion;\r\n // Check if a region was detected from the environment, if not, attempt to get the region from IMDS\r\n if (!autodetectedRegionName) {\r\n const options = RegionDiscovery.IMDS_OPTIONS;\r\n try {\r\n const localIMDSVersionResponse = await invokeAsync(this.getRegionFromIMDS.bind(this), PerformanceEvents.RegionDiscoveryGetRegionFromIMDS, this.logger, this.performanceClient, this.correlationId)(Constants.IMDS_VERSION, options);\r\n if (localIMDSVersionResponse.status === HttpStatus.SUCCESS) {\r\n autodetectedRegionName = localIMDSVersionResponse.body;\r\n regionDiscoveryMetadata.region_source =\r\n RegionDiscoverySources.IMDS;\r\n }\r\n // If the response using the local IMDS version failed, try to fetch the current version of IMDS and retry.\r\n if (localIMDSVersionResponse.status === HttpStatus.BAD_REQUEST) {\r\n const currentIMDSVersion = await invokeAsync(this.getCurrentVersion.bind(this), PerformanceEvents.RegionDiscoveryGetCurrentVersion, this.logger, this.performanceClient, this.correlationId)(options);\r\n if (!currentIMDSVersion) {\r\n regionDiscoveryMetadata.region_source =\r\n RegionDiscoverySources.FAILED_AUTO_DETECTION;\r\n return null;\r\n }\r\n const currentIMDSVersionResponse = await invokeAsync(this.getRegionFromIMDS.bind(this), PerformanceEvents.RegionDiscoveryGetRegionFromIMDS, this.logger, this.performanceClient, this.correlationId)(currentIMDSVersion, options);\r\n if (currentIMDSVersionResponse.status === HttpStatus.SUCCESS) {\r\n autodetectedRegionName =\r\n currentIMDSVersionResponse.body;\r\n regionDiscoveryMetadata.region_source =\r\n RegionDiscoverySources.IMDS;\r\n }\r\n }\r\n }\r\n catch (e) {\r\n regionDiscoveryMetadata.region_source =\r\n RegionDiscoverySources.FAILED_AUTO_DETECTION;\r\n return null;\r\n }\r\n }\r\n else {\r\n regionDiscoveryMetadata.region_source =\r\n RegionDiscoverySources.ENVIRONMENT_VARIABLE;\r\n }\r\n // If no region was auto detected from the environment or from the IMDS endpoint, mark the attempt as a FAILED_AUTO_DETECTION\r\n if (!autodetectedRegionName) {\r\n regionDiscoveryMetadata.region_source =\r\n RegionDiscoverySources.FAILED_AUTO_DETECTION;\r\n }\r\n return autodetectedRegionName || null;\r\n }\r\n /**\r\n * Make the call to the IMDS endpoint\r\n *\r\n * @param imdsEndpointUrl\r\n * @returns Promise>\r\n */\r\n async getRegionFromIMDS(version, options) {\r\n this.performanceClient?.addQueueMeasurement(PerformanceEvents.RegionDiscoveryGetRegionFromIMDS, this.correlationId);\r\n return this.networkInterface.sendGetRequestAsync(`${Constants.IMDS_ENDPOINT}?api-version=${version}&format=text`, options, Constants.IMDS_TIMEOUT);\r\n }\r\n /**\r\n * Get the most recent version of the IMDS endpoint available\r\n *\r\n * @returns Promise\r\n */\r\n async getCurrentVersion(options) {\r\n this.performanceClient?.addQueueMeasurement(PerformanceEvents.RegionDiscoveryGetCurrentVersion, this.correlationId);\r\n try {\r\n const response = await this.networkInterface.sendGetRequestAsync(`${Constants.IMDS_ENDPOINT}?format=json`, options);\r\n // When IMDS endpoint is called without the api version query param, bad request response comes back with latest version.\r\n if (response.status === HttpStatus.BAD_REQUEST &&\r\n response.body &&\r\n response.body[\"newest-versions\"] &&\r\n response.body[\"newest-versions\"].length > 0) {\r\n return response.body[\"newest-versions\"][0];\r\n }\r\n return null;\r\n }\r\n catch (e) {\r\n return null;\r\n }\r\n }\r\n}\r\n// Options for the IMDS endpoint request\r\nRegionDiscovery.IMDS_OPTIONS = {\r\n headers: {\r\n Metadata: \"true\",\r\n },\r\n};\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * Utility functions for managing date and time operations.\r\n */\r\n/**\r\n * return the current time in Unix time (seconds).\r\n */\r\nfunction nowSeconds() {\r\n // Date.getTime() returns in milliseconds.\r\n return Math.round(new Date().getTime() / 1000.0);\r\n}\r\n/**\r\n * Converts JS Date object to seconds\r\n * @param date Date\r\n */\r\nfunction toSecondsFromDate(date) {\r\n // Convert date to seconds\r\n return date.getTime() / 1000;\r\n}\r\n/**\r\n * Convert seconds to JS Date object. Seconds can be in a number or string format or undefined (will still return a date).\r\n * @param seconds\r\n */\r\nfunction toDateFromSeconds(seconds) {\r\n if (seconds) {\r\n return new Date(Number(seconds) * 1000);\r\n }\r\n return new Date();\r\n}\r\n/**\r\n * check if a token is expired based on given UTC time in seconds.\r\n * @param expiresOn\r\n */\r\nfunction isTokenExpired(expiresOn, offset) {\r\n // check for access token expiry\r\n const expirationSec = Number(expiresOn) || 0;\r\n const offsetCurrentTimeSec = nowSeconds() + offset;\r\n // If current time + offset is greater than token expiration time, then token is expired.\r\n return offsetCurrentTimeSec > expirationSec;\r\n}\r\n/**\r\n * Checks if a cache entry is expired based on the last updated time and cache retention days.\r\n * @param lastUpdatedAt\r\n * @param cacheRetentionDays\r\n * @returns\r\n */\r\nfunction isCacheExpired(lastUpdatedAt, cacheRetentionDays) {\r\n const cacheExpirationTimestamp = Number(lastUpdatedAt) + cacheRetentionDays * 24 * 60 * 60 * 1000;\r\n return Date.now() > cacheExpirationTimestamp;\r\n}\r\n/**\r\n * If the current time is earlier than the time that a token was cached at, we must discard the token\r\n * i.e. The system clock was turned back after acquiring the cached token\r\n * @param cachedAt\r\n * @param offset\r\n */\r\nfunction wasClockTurnedBack(cachedAt) {\r\n const cachedAtSec = Number(cachedAt);\r\n return cachedAtSec > nowSeconds();\r\n}\r\n/**\r\n * Waits for t number of milliseconds\r\n * @param t number\r\n * @param value T\r\n */\r\nfunction delay(t, value) {\r\n return new Promise((resolve) => setTimeout(() => resolve(value), t));\r\n}\n\nvar TimeUtils = /*#__PURE__*/Object.freeze({\n __proto__: null,\n delay: delay,\n isCacheExpired: isCacheExpired,\n isTokenExpired: isTokenExpired,\n nowSeconds: nowSeconds,\n toDateFromSeconds: toDateFromSeconds,\n toSecondsFromDate: toSecondsFromDate,\n wasClockTurnedBack: wasClockTurnedBack\n});\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * Create IdTokenEntity\r\n * @param homeAccountId\r\n * @param authenticationResult\r\n * @param clientId\r\n * @param authority\r\n */\r\nfunction createIdTokenEntity(homeAccountId, environment, idToken, clientId, tenantId) {\r\n const idTokenEntity = {\r\n credentialType: CredentialType.ID_TOKEN,\r\n homeAccountId: homeAccountId,\r\n environment: environment,\r\n clientId: clientId,\r\n secret: idToken,\r\n realm: tenantId,\r\n lastUpdatedAt: Date.now().toString(), // Set the last updated time to now\r\n };\r\n return idTokenEntity;\r\n}\r\n/**\r\n * Create AccessTokenEntity\r\n * @param homeAccountId\r\n * @param environment\r\n * @param accessToken\r\n * @param clientId\r\n * @param tenantId\r\n * @param scopes\r\n * @param expiresOn\r\n * @param extExpiresOn\r\n */\r\nfunction createAccessTokenEntity(homeAccountId, environment, accessToken, clientId, tenantId, scopes, expiresOn, extExpiresOn, base64Decode, refreshOn, tokenType, userAssertionHash, keyId, requestedClaims, requestedClaimsHash) {\r\n const atEntity = {\r\n homeAccountId: homeAccountId,\r\n credentialType: CredentialType.ACCESS_TOKEN,\r\n secret: accessToken,\r\n cachedAt: nowSeconds().toString(),\r\n expiresOn: expiresOn.toString(),\r\n extendedExpiresOn: extExpiresOn.toString(),\r\n environment: environment,\r\n clientId: clientId,\r\n realm: tenantId,\r\n target: scopes,\r\n tokenType: tokenType || AuthenticationScheme.BEARER,\r\n lastUpdatedAt: Date.now().toString(), // Set the last updated time to now\r\n };\r\n if (userAssertionHash) {\r\n atEntity.userAssertionHash = userAssertionHash;\r\n }\r\n if (refreshOn) {\r\n atEntity.refreshOn = refreshOn.toString();\r\n }\r\n if (requestedClaims) {\r\n atEntity.requestedClaims = requestedClaims;\r\n atEntity.requestedClaimsHash = requestedClaimsHash;\r\n }\r\n /*\r\n * Create Access Token With Auth Scheme instead of regular access token\r\n * Cast to lower to handle \"bearer\" from ADFS\r\n */\r\n if (atEntity.tokenType?.toLowerCase() !==\r\n AuthenticationScheme.BEARER.toLowerCase()) {\r\n atEntity.credentialType = CredentialType.ACCESS_TOKEN_WITH_AUTH_SCHEME;\r\n switch (atEntity.tokenType) {\r\n case AuthenticationScheme.POP:\r\n // Make sure keyId is present and add it to credential\r\n const tokenClaims = extractTokenClaims(accessToken, base64Decode);\r\n if (!tokenClaims?.cnf?.kid) {\r\n throw createClientAuthError(tokenClaimsCnfRequiredForSignedJwt);\r\n }\r\n atEntity.keyId = tokenClaims.cnf.kid;\r\n break;\r\n case AuthenticationScheme.SSH:\r\n atEntity.keyId = keyId;\r\n }\r\n }\r\n return atEntity;\r\n}\r\n/**\r\n * Create RefreshTokenEntity\r\n * @param homeAccountId\r\n * @param authenticationResult\r\n * @param clientId\r\n * @param authority\r\n */\r\nfunction createRefreshTokenEntity(homeAccountId, environment, refreshToken, clientId, familyId, userAssertionHash, expiresOn) {\r\n const rtEntity = {\r\n credentialType: CredentialType.REFRESH_TOKEN,\r\n homeAccountId: homeAccountId,\r\n environment: environment,\r\n clientId: clientId,\r\n secret: refreshToken,\r\n lastUpdatedAt: Date.now().toString(),\r\n };\r\n if (userAssertionHash) {\r\n rtEntity.userAssertionHash = userAssertionHash;\r\n }\r\n if (familyId) {\r\n rtEntity.familyId = familyId;\r\n }\r\n if (expiresOn) {\r\n rtEntity.expiresOn = expiresOn.toString();\r\n }\r\n return rtEntity;\r\n}\r\nfunction isCredentialEntity(entity) {\r\n return (entity.hasOwnProperty(\"homeAccountId\") &&\r\n entity.hasOwnProperty(\"environment\") &&\r\n entity.hasOwnProperty(\"credentialType\") &&\r\n entity.hasOwnProperty(\"clientId\") &&\r\n entity.hasOwnProperty(\"secret\"));\r\n}\r\n/**\r\n * Validates an entity: checks for all expected params\r\n * @param entity\r\n */\r\nfunction isAccessTokenEntity(entity) {\r\n if (!entity) {\r\n return false;\r\n }\r\n return (isCredentialEntity(entity) &&\r\n entity.hasOwnProperty(\"realm\") &&\r\n entity.hasOwnProperty(\"target\") &&\r\n (entity[\"credentialType\"] === CredentialType.ACCESS_TOKEN ||\r\n entity[\"credentialType\"] ===\r\n CredentialType.ACCESS_TOKEN_WITH_AUTH_SCHEME));\r\n}\r\n/**\r\n * Validates an entity: checks for all expected params\r\n * @param entity\r\n */\r\nfunction isIdTokenEntity(entity) {\r\n if (!entity) {\r\n return false;\r\n }\r\n return (isCredentialEntity(entity) &&\r\n entity.hasOwnProperty(\"realm\") &&\r\n entity[\"credentialType\"] === CredentialType.ID_TOKEN);\r\n}\r\n/**\r\n * Validates an entity: checks for all expected params\r\n * @param entity\r\n */\r\nfunction isRefreshTokenEntity(entity) {\r\n if (!entity) {\r\n return false;\r\n }\r\n return (isCredentialEntity(entity) &&\r\n entity[\"credentialType\"] === CredentialType.REFRESH_TOKEN);\r\n}\r\n/**\r\n * validates if a given cache entry is \"Telemetry\", parses \r\n * @param key\r\n * @param entity\r\n */\r\nfunction isServerTelemetryEntity(key, entity) {\r\n const validateKey = key.indexOf(SERVER_TELEM_CONSTANTS.CACHE_KEY) === 0;\r\n let validateEntity = true;\r\n if (entity) {\r\n validateEntity =\r\n entity.hasOwnProperty(\"failedRequests\") &&\r\n entity.hasOwnProperty(\"errors\") &&\r\n entity.hasOwnProperty(\"cacheHits\");\r\n }\r\n return validateKey && validateEntity;\r\n}\r\n/**\r\n * validates if a given cache entry is \"Throttling\", parses \r\n * @param key\r\n * @param entity\r\n */\r\nfunction isThrottlingEntity(key, entity) {\r\n let validateKey = false;\r\n if (key) {\r\n validateKey = key.indexOf(ThrottlingConstants.THROTTLING_PREFIX) === 0;\r\n }\r\n let validateEntity = true;\r\n if (entity) {\r\n validateEntity = entity.hasOwnProperty(\"throttleTime\");\r\n }\r\n return validateKey && validateEntity;\r\n}\r\n/**\r\n * Generate AppMetadata Cache Key as per the schema: appmetadata--\r\n */\r\nfunction generateAppMetadataKey({ environment, clientId, }) {\r\n const appMetaDataKeyArray = [\r\n APP_METADATA,\r\n environment,\r\n clientId,\r\n ];\r\n return appMetaDataKeyArray\r\n .join(Separators.CACHE_KEY_SEPARATOR)\r\n .toLowerCase();\r\n}\r\n/*\r\n * Validates an entity: checks for all expected params\r\n * @param entity\r\n */\r\nfunction isAppMetadataEntity(key, entity) {\r\n if (!entity) {\r\n return false;\r\n }\r\n return (key.indexOf(APP_METADATA) === 0 &&\r\n entity.hasOwnProperty(\"clientId\") &&\r\n entity.hasOwnProperty(\"environment\"));\r\n}\r\n/**\r\n * Validates an entity: checks for all expected params\r\n * @param entity\r\n */\r\nfunction isAuthorityMetadataEntity(key, entity) {\r\n if (!entity) {\r\n return false;\r\n }\r\n return (key.indexOf(AUTHORITY_METADATA_CONSTANTS.CACHE_KEY) === 0 &&\r\n entity.hasOwnProperty(\"aliases\") &&\r\n entity.hasOwnProperty(\"preferred_cache\") &&\r\n entity.hasOwnProperty(\"preferred_network\") &&\r\n entity.hasOwnProperty(\"canonical_authority\") &&\r\n entity.hasOwnProperty(\"authorization_endpoint\") &&\r\n entity.hasOwnProperty(\"token_endpoint\") &&\r\n entity.hasOwnProperty(\"issuer\") &&\r\n entity.hasOwnProperty(\"aliasesFromNetwork\") &&\r\n entity.hasOwnProperty(\"endpointsFromNetwork\") &&\r\n entity.hasOwnProperty(\"expiresAt\") &&\r\n entity.hasOwnProperty(\"jwks_uri\"));\r\n}\r\n/**\r\n * Reset the exiresAt value\r\n */\r\nfunction generateAuthorityMetadataExpiresAt() {\r\n return (nowSeconds() +\r\n AUTHORITY_METADATA_CONSTANTS.REFRESH_TIME_SECONDS);\r\n}\r\nfunction updateAuthorityEndpointMetadata(authorityMetadata, updatedValues, fromNetwork) {\r\n authorityMetadata.authorization_endpoint =\r\n updatedValues.authorization_endpoint;\r\n authorityMetadata.token_endpoint = updatedValues.token_endpoint;\r\n authorityMetadata.end_session_endpoint = updatedValues.end_session_endpoint;\r\n authorityMetadata.issuer = updatedValues.issuer;\r\n authorityMetadata.endpointsFromNetwork = fromNetwork;\r\n authorityMetadata.jwks_uri = updatedValues.jwks_uri;\r\n}\r\nfunction updateCloudDiscoveryMetadata(authorityMetadata, updatedValues, fromNetwork) {\r\n authorityMetadata.aliases = updatedValues.aliases;\r\n authorityMetadata.preferred_cache = updatedValues.preferred_cache;\r\n authorityMetadata.preferred_network = updatedValues.preferred_network;\r\n authorityMetadata.aliasesFromNetwork = fromNetwork;\r\n}\r\n/**\r\n * Returns whether or not the data needs to be refreshed\r\n */\r\nfunction isAuthorityMetadataExpired(metadata) {\r\n return metadata.expiresAt <= nowSeconds();\r\n}\n\nvar CacheHelpers = /*#__PURE__*/Object.freeze({\n __proto__: null,\n createAccessTokenEntity: createAccessTokenEntity,\n createIdTokenEntity: createIdTokenEntity,\n createRefreshTokenEntity: createRefreshTokenEntity,\n generateAppMetadataKey: generateAppMetadataKey,\n generateAuthorityMetadataExpiresAt: generateAuthorityMetadataExpiresAt,\n isAccessTokenEntity: isAccessTokenEntity,\n isAppMetadataEntity: isAppMetadataEntity,\n isAuthorityMetadataEntity: isAuthorityMetadataEntity,\n isAuthorityMetadataExpired: isAuthorityMetadataExpired,\n isCredentialEntity: isCredentialEntity,\n isIdTokenEntity: isIdTokenEntity,\n isRefreshTokenEntity: isRefreshTokenEntity,\n isServerTelemetryEntity: isServerTelemetryEntity,\n isThrottlingEntity: isThrottlingEntity,\n updateAuthorityEndpointMetadata: updateAuthorityEndpointMetadata,\n updateCloudDiscoveryMetadata: updateCloudDiscoveryMetadata\n});\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * The authority class validates the authority URIs used by the user, and retrieves the OpenID Configuration Data from the\r\n * endpoint. It will store the pertinent config data in this object for use during token calls.\r\n * @internal\r\n */\r\nclass Authority {\r\n constructor(authority, networkInterface, cacheManager, authorityOptions, logger, correlationId, performanceClient, managedIdentity) {\r\n this.canonicalAuthority = authority;\r\n this._canonicalAuthority.validateAsUri();\r\n this.networkInterface = networkInterface;\r\n this.cacheManager = cacheManager;\r\n this.authorityOptions = authorityOptions;\r\n this.regionDiscoveryMetadata = {\r\n region_used: undefined,\r\n region_source: undefined,\r\n region_outcome: undefined,\r\n };\r\n this.logger = logger;\r\n this.performanceClient = performanceClient;\r\n this.correlationId = correlationId;\r\n this.managedIdentity = managedIdentity || false;\r\n this.regionDiscovery = new RegionDiscovery(networkInterface, this.logger, this.performanceClient, this.correlationId);\r\n }\r\n /**\r\n * Get {@link AuthorityType}\r\n * @param authorityUri {@link IUri}\r\n * @private\r\n */\r\n getAuthorityType(authorityUri) {\r\n // CIAM auth url pattern is being standardized as: .ciamlogin.com\r\n if (authorityUri.HostNameAndPort.endsWith(Constants.CIAM_AUTH_URL)) {\r\n return AuthorityType.Ciam;\r\n }\r\n const pathSegments = authorityUri.PathSegments;\r\n if (pathSegments.length) {\r\n switch (pathSegments[0].toLowerCase()) {\r\n case Constants.ADFS:\r\n return AuthorityType.Adfs;\r\n case Constants.DSTS:\r\n return AuthorityType.Dsts;\r\n }\r\n }\r\n return AuthorityType.Default;\r\n }\r\n // See above for AuthorityType\r\n get authorityType() {\r\n return this.getAuthorityType(this.canonicalAuthorityUrlComponents);\r\n }\r\n /**\r\n * ProtocolMode enum representing the way endpoints are constructed.\r\n */\r\n get protocolMode() {\r\n return this.authorityOptions.protocolMode;\r\n }\r\n /**\r\n * Returns authorityOptions which can be used to reinstantiate a new authority instance\r\n */\r\n get options() {\r\n return this.authorityOptions;\r\n }\r\n /**\r\n * A URL that is the authority set by the developer\r\n */\r\n get canonicalAuthority() {\r\n return this._canonicalAuthority.urlString;\r\n }\r\n /**\r\n * Sets canonical authority.\r\n */\r\n set canonicalAuthority(url) {\r\n this._canonicalAuthority = new UrlString(url);\r\n this._canonicalAuthority.validateAsUri();\r\n this._canonicalAuthorityUrlComponents = null;\r\n }\r\n /**\r\n * Get authority components.\r\n */\r\n get canonicalAuthorityUrlComponents() {\r\n if (!this._canonicalAuthorityUrlComponents) {\r\n this._canonicalAuthorityUrlComponents =\r\n this._canonicalAuthority.getUrlComponents();\r\n }\r\n return this._canonicalAuthorityUrlComponents;\r\n }\r\n /**\r\n * Get hostname and port i.e. login.microsoftonline.com\r\n */\r\n get hostnameAndPort() {\r\n return this.canonicalAuthorityUrlComponents.HostNameAndPort.toLowerCase();\r\n }\r\n /**\r\n * Get tenant for authority.\r\n */\r\n get tenant() {\r\n return this.canonicalAuthorityUrlComponents.PathSegments[0];\r\n }\r\n /**\r\n * OAuth /authorize endpoint for requests\r\n */\r\n get authorizationEndpoint() {\r\n if (this.discoveryComplete()) {\r\n return this.replacePath(this.metadata.authorization_endpoint);\r\n }\r\n else {\r\n throw createClientAuthError(endpointResolutionError);\r\n }\r\n }\r\n /**\r\n * OAuth /token endpoint for requests\r\n */\r\n get tokenEndpoint() {\r\n if (this.discoveryComplete()) {\r\n return this.replacePath(this.metadata.token_endpoint);\r\n }\r\n else {\r\n throw createClientAuthError(endpointResolutionError);\r\n }\r\n }\r\n get deviceCodeEndpoint() {\r\n if (this.discoveryComplete()) {\r\n return this.replacePath(this.metadata.token_endpoint.replace(\"/token\", \"/devicecode\"));\r\n }\r\n else {\r\n throw createClientAuthError(endpointResolutionError);\r\n }\r\n }\r\n /**\r\n * OAuth logout endpoint for requests\r\n */\r\n get endSessionEndpoint() {\r\n if (this.discoveryComplete()) {\r\n // ROPC policies may not have end_session_endpoint set\r\n if (!this.metadata.end_session_endpoint) {\r\n throw createClientAuthError(endSessionEndpointNotSupported);\r\n }\r\n return this.replacePath(this.metadata.end_session_endpoint);\r\n }\r\n else {\r\n throw createClientAuthError(endpointResolutionError);\r\n }\r\n }\r\n /**\r\n * OAuth issuer for requests\r\n */\r\n get selfSignedJwtAudience() {\r\n if (this.discoveryComplete()) {\r\n return this.replacePath(this.metadata.issuer);\r\n }\r\n else {\r\n throw createClientAuthError(endpointResolutionError);\r\n }\r\n }\r\n /**\r\n * Jwks_uri for token signing keys\r\n */\r\n get jwksUri() {\r\n if (this.discoveryComplete()) {\r\n return this.replacePath(this.metadata.jwks_uri);\r\n }\r\n else {\r\n throw createClientAuthError(endpointResolutionError);\r\n }\r\n }\r\n /**\r\n * Returns a flag indicating that tenant name can be replaced in authority {@link IUri}\r\n * @param authorityUri {@link IUri}\r\n * @private\r\n */\r\n canReplaceTenant(authorityUri) {\r\n return (authorityUri.PathSegments.length === 1 &&\r\n !Authority.reservedTenantDomains.has(authorityUri.PathSegments[0]) &&\r\n this.getAuthorityType(authorityUri) === AuthorityType.Default &&\r\n this.protocolMode !== ProtocolMode.OIDC);\r\n }\r\n /**\r\n * Replaces tenant in url path with current tenant. Defaults to common.\r\n * @param urlString\r\n */\r\n replaceTenant(urlString) {\r\n return urlString.replace(/{tenant}|{tenantid}/g, this.tenant);\r\n }\r\n /**\r\n * Replaces path such as tenant or policy with the current tenant or policy.\r\n * @param urlString\r\n */\r\n replacePath(urlString) {\r\n let endpoint = urlString;\r\n const cachedAuthorityUrl = new UrlString(this.metadata.canonical_authority);\r\n const cachedAuthorityUrlComponents = cachedAuthorityUrl.getUrlComponents();\r\n const cachedAuthorityParts = cachedAuthorityUrlComponents.PathSegments;\r\n const currentAuthorityParts = this.canonicalAuthorityUrlComponents.PathSegments;\r\n currentAuthorityParts.forEach((currentPart, index) => {\r\n let cachedPart = cachedAuthorityParts[index];\r\n if (index === 0 &&\r\n this.canReplaceTenant(cachedAuthorityUrlComponents)) {\r\n const tenantId = new UrlString(this.metadata.authorization_endpoint).getUrlComponents().PathSegments[0];\r\n /**\r\n * Check if AAD canonical authority contains tenant domain name, for example \"testdomain.onmicrosoft.com\",\r\n * by comparing its first path segment to the corresponding authorization endpoint path segment, which is\r\n * always resolved with tenant id by OIDC.\r\n */\r\n if (cachedPart !== tenantId) {\r\n this.logger.verbose(`Replacing tenant domain name ${cachedPart} with id ${tenantId}`);\r\n cachedPart = tenantId;\r\n }\r\n }\r\n if (currentPart !== cachedPart) {\r\n endpoint = endpoint.replace(`/${cachedPart}/`, `/${currentPart}/`);\r\n }\r\n });\r\n return this.replaceTenant(endpoint);\r\n }\r\n /**\r\n * The default open id configuration endpoint for any canonical authority.\r\n */\r\n get defaultOpenIdConfigurationEndpoint() {\r\n const canonicalAuthorityHost = this.hostnameAndPort;\r\n if (this.canonicalAuthority.endsWith(\"v2.0/\") ||\r\n this.authorityType === AuthorityType.Adfs ||\r\n (this.protocolMode === ProtocolMode.OIDC &&\r\n !this.isAliasOfKnownMicrosoftAuthority(canonicalAuthorityHost))) {\r\n return `${this.canonicalAuthority}.well-known/openid-configuration`;\r\n }\r\n return `${this.canonicalAuthority}v2.0/.well-known/openid-configuration`;\r\n }\r\n /**\r\n * Boolean that returns whether or not tenant discovery has been completed.\r\n */\r\n discoveryComplete() {\r\n return !!this.metadata;\r\n }\r\n /**\r\n * Perform endpoint discovery to discover aliases, preferred_cache, preferred_network\r\n * and the /authorize, /token and logout endpoints.\r\n */\r\n async resolveEndpointsAsync() {\r\n this.performanceClient?.addQueueMeasurement(PerformanceEvents.AuthorityResolveEndpointsAsync, this.correlationId);\r\n const metadataEntity = this.getCurrentMetadataEntity();\r\n const cloudDiscoverySource = await invokeAsync(this.updateCloudDiscoveryMetadata.bind(this), PerformanceEvents.AuthorityUpdateCloudDiscoveryMetadata, this.logger, this.performanceClient, this.correlationId)(metadataEntity);\r\n this.canonicalAuthority = this.canonicalAuthority.replace(this.hostnameAndPort, metadataEntity.preferred_network);\r\n const endpointSource = await invokeAsync(this.updateEndpointMetadata.bind(this), PerformanceEvents.AuthorityUpdateEndpointMetadata, this.logger, this.performanceClient, this.correlationId)(metadataEntity);\r\n this.updateCachedMetadata(metadataEntity, cloudDiscoverySource, {\r\n source: endpointSource,\r\n });\r\n this.performanceClient?.addFields({\r\n cloudDiscoverySource: cloudDiscoverySource,\r\n authorityEndpointSource: endpointSource,\r\n }, this.correlationId);\r\n }\r\n /**\r\n * Returns metadata entity from cache if it exists, otherwiser returns a new metadata entity built\r\n * from the configured canonical authority\r\n * @returns\r\n */\r\n getCurrentMetadataEntity() {\r\n let metadataEntity = this.cacheManager.getAuthorityMetadataByAlias(this.hostnameAndPort);\r\n if (!metadataEntity) {\r\n metadataEntity = {\r\n aliases: [],\r\n preferred_cache: this.hostnameAndPort,\r\n preferred_network: this.hostnameAndPort,\r\n canonical_authority: this.canonicalAuthority,\r\n authorization_endpoint: \"\",\r\n token_endpoint: \"\",\r\n end_session_endpoint: \"\",\r\n issuer: \"\",\r\n aliasesFromNetwork: false,\r\n endpointsFromNetwork: false,\r\n expiresAt: generateAuthorityMetadataExpiresAt(),\r\n jwks_uri: \"\",\r\n };\r\n }\r\n return metadataEntity;\r\n }\r\n /**\r\n * Updates cached metadata based on metadata source and sets the instance's metadata\r\n * property to the same value\r\n * @param metadataEntity\r\n * @param cloudDiscoverySource\r\n * @param endpointMetadataResult\r\n */\r\n updateCachedMetadata(metadataEntity, cloudDiscoverySource, endpointMetadataResult) {\r\n if (cloudDiscoverySource !== AuthorityMetadataSource.CACHE &&\r\n endpointMetadataResult?.source !== AuthorityMetadataSource.CACHE) {\r\n // Reset the expiration time unless both values came from a successful cache lookup\r\n metadataEntity.expiresAt =\r\n generateAuthorityMetadataExpiresAt();\r\n metadataEntity.canonical_authority = this.canonicalAuthority;\r\n }\r\n const cacheKey = this.cacheManager.generateAuthorityMetadataCacheKey(metadataEntity.preferred_cache);\r\n this.cacheManager.setAuthorityMetadata(cacheKey, metadataEntity);\r\n this.metadata = metadataEntity;\r\n }\r\n /**\r\n * Update AuthorityMetadataEntity with new endpoints and return where the information came from\r\n * @param metadataEntity\r\n */\r\n async updateEndpointMetadata(metadataEntity) {\r\n this.performanceClient?.addQueueMeasurement(PerformanceEvents.AuthorityUpdateEndpointMetadata, this.correlationId);\r\n const localMetadata = this.updateEndpointMetadataFromLocalSources(metadataEntity);\r\n // Further update may be required for hardcoded metadata if regional metadata is preferred\r\n if (localMetadata) {\r\n if (localMetadata.source ===\r\n AuthorityMetadataSource.HARDCODED_VALUES) {\r\n // If the user prefers to use an azure region replace the global endpoints with regional information.\r\n if (this.authorityOptions.azureRegionConfiguration?.azureRegion) {\r\n if (localMetadata.metadata) {\r\n const hardcodedMetadata = await invokeAsync(this.updateMetadataWithRegionalInformation.bind(this), PerformanceEvents.AuthorityUpdateMetadataWithRegionalInformation, this.logger, this.performanceClient, this.correlationId)(localMetadata.metadata);\r\n updateAuthorityEndpointMetadata(metadataEntity, hardcodedMetadata, false);\r\n metadataEntity.canonical_authority =\r\n this.canonicalAuthority;\r\n }\r\n }\r\n }\r\n return localMetadata.source;\r\n }\r\n // Get metadata from network if local sources aren't available\r\n let metadata = await invokeAsync(this.getEndpointMetadataFromNetwork.bind(this), PerformanceEvents.AuthorityGetEndpointMetadataFromNetwork, this.logger, this.performanceClient, this.correlationId)();\r\n if (metadata) {\r\n // If the user prefers to use an azure region replace the global endpoints with regional information.\r\n if (this.authorityOptions.azureRegionConfiguration?.azureRegion) {\r\n metadata = await invokeAsync(this.updateMetadataWithRegionalInformation.bind(this), PerformanceEvents.AuthorityUpdateMetadataWithRegionalInformation, this.logger, this.performanceClient, this.correlationId)(metadata);\r\n }\r\n updateAuthorityEndpointMetadata(metadataEntity, metadata, true);\r\n return AuthorityMetadataSource.NETWORK;\r\n }\r\n else {\r\n // Metadata could not be obtained from the config, cache, network or hardcoded values\r\n throw createClientAuthError(openIdConfigError, this.defaultOpenIdConfigurationEndpoint);\r\n }\r\n }\r\n /**\r\n * Updates endpoint metadata from local sources and returns where the information was retrieved from and the metadata config\r\n * response if the source is hardcoded metadata\r\n * @param metadataEntity\r\n * @returns\r\n */\r\n updateEndpointMetadataFromLocalSources(metadataEntity) {\r\n this.logger.verbose(\"Attempting to get endpoint metadata from authority configuration\");\r\n const configMetadata = this.getEndpointMetadataFromConfig();\r\n if (configMetadata) {\r\n this.logger.verbose(\"Found endpoint metadata in authority configuration\");\r\n updateAuthorityEndpointMetadata(metadataEntity, configMetadata, false);\r\n return {\r\n source: AuthorityMetadataSource.CONFIG,\r\n };\r\n }\r\n this.logger.verbose(\"Did not find endpoint metadata in the config... Attempting to get endpoint metadata from the hardcoded values.\");\r\n // skipAuthorityMetadataCache is used to bypass hardcoded authority metadata and force a network metadata cache lookup and network metadata request if no cached response is available.\r\n if (this.authorityOptions.skipAuthorityMetadataCache) {\r\n this.logger.verbose(\"Skipping hardcoded metadata cache since skipAuthorityMetadataCache is set to true. Attempting to get endpoint metadata from the network metadata cache.\");\r\n }\r\n else {\r\n const hardcodedMetadata = this.getEndpointMetadataFromHardcodedValues();\r\n if (hardcodedMetadata) {\r\n updateAuthorityEndpointMetadata(metadataEntity, hardcodedMetadata, false);\r\n return {\r\n source: AuthorityMetadataSource.HARDCODED_VALUES,\r\n metadata: hardcodedMetadata,\r\n };\r\n }\r\n else {\r\n this.logger.verbose(\"Did not find endpoint metadata in hardcoded values... Attempting to get endpoint metadata from the network metadata cache.\");\r\n }\r\n }\r\n // Check cached metadata entity expiration status\r\n const metadataEntityExpired = isAuthorityMetadataExpired(metadataEntity);\r\n if (this.isAuthoritySameType(metadataEntity) &&\r\n metadataEntity.endpointsFromNetwork &&\r\n !metadataEntityExpired) {\r\n // No need to update\r\n this.logger.verbose(\"Found endpoint metadata in the cache.\");\r\n return { source: AuthorityMetadataSource.CACHE };\r\n }\r\n else if (metadataEntityExpired) {\r\n this.logger.verbose(\"The metadata entity is expired.\");\r\n }\r\n return null;\r\n }\r\n /**\r\n * Compares the number of url components after the domain to determine if the cached\r\n * authority metadata can be used for the requested authority. Protects against same domain different\r\n * authority such as login.microsoftonline.com/tenant and login.microsoftonline.com/tfp/tenant/policy\r\n * @param metadataEntity\r\n */\r\n isAuthoritySameType(metadataEntity) {\r\n const cachedAuthorityUrl = new UrlString(metadataEntity.canonical_authority);\r\n const cachedParts = cachedAuthorityUrl.getUrlComponents().PathSegments;\r\n return (cachedParts.length ===\r\n this.canonicalAuthorityUrlComponents.PathSegments.length);\r\n }\r\n /**\r\n * Parse authorityMetadata config option\r\n */\r\n getEndpointMetadataFromConfig() {\r\n if (this.authorityOptions.authorityMetadata) {\r\n try {\r\n return JSON.parse(this.authorityOptions.authorityMetadata);\r\n }\r\n catch (e) {\r\n throw createClientConfigurationError(invalidAuthorityMetadata);\r\n }\r\n }\r\n return null;\r\n }\r\n /**\r\n * Gets OAuth endpoints from the given OpenID configuration endpoint.\r\n *\r\n * @param hasHardcodedMetadata boolean\r\n */\r\n async getEndpointMetadataFromNetwork() {\r\n this.performanceClient?.addQueueMeasurement(PerformanceEvents.AuthorityGetEndpointMetadataFromNetwork, this.correlationId);\r\n const options = {};\r\n /*\r\n * TODO: Add a timeout if the authority exists in our library's\r\n * hardcoded list of metadata\r\n */\r\n const openIdConfigurationEndpoint = this.defaultOpenIdConfigurationEndpoint;\r\n this.logger.verbose(`Authority.getEndpointMetadataFromNetwork: attempting to retrieve OAuth endpoints from ${openIdConfigurationEndpoint}`);\r\n try {\r\n const response = await this.networkInterface.sendGetRequestAsync(openIdConfigurationEndpoint, options);\r\n const isValidResponse = isOpenIdConfigResponse(response.body);\r\n if (isValidResponse) {\r\n return response.body;\r\n }\r\n else {\r\n this.logger.verbose(`Authority.getEndpointMetadataFromNetwork: could not parse response as OpenID configuration`);\r\n return null;\r\n }\r\n }\r\n catch (e) {\r\n this.logger.verbose(`Authority.getEndpointMetadataFromNetwork: ${e}`);\r\n return null;\r\n }\r\n }\r\n /**\r\n * Get OAuth endpoints for common authorities.\r\n */\r\n getEndpointMetadataFromHardcodedValues() {\r\n if (this.hostnameAndPort in EndpointMetadata) {\r\n return EndpointMetadata[this.hostnameAndPort];\r\n }\r\n return null;\r\n }\r\n /**\r\n * Update the retrieved metadata with regional information.\r\n * User selected Azure region will be used if configured.\r\n */\r\n async updateMetadataWithRegionalInformation(metadata) {\r\n this.performanceClient?.addQueueMeasurement(PerformanceEvents.AuthorityUpdateMetadataWithRegionalInformation, this.correlationId);\r\n const userConfiguredAzureRegion = this.authorityOptions.azureRegionConfiguration?.azureRegion;\r\n if (userConfiguredAzureRegion) {\r\n if (userConfiguredAzureRegion !==\r\n Constants.AZURE_REGION_AUTO_DISCOVER_FLAG) {\r\n this.regionDiscoveryMetadata.region_outcome =\r\n RegionDiscoveryOutcomes.CONFIGURED_NO_AUTO_DETECTION;\r\n this.regionDiscoveryMetadata.region_used =\r\n userConfiguredAzureRegion;\r\n return Authority.replaceWithRegionalInformation(metadata, userConfiguredAzureRegion);\r\n }\r\n const autodetectedRegionName = await invokeAsync(this.regionDiscovery.detectRegion.bind(this.regionDiscovery), PerformanceEvents.RegionDiscoveryDetectRegion, this.logger, this.performanceClient, this.correlationId)(this.authorityOptions.azureRegionConfiguration\r\n ?.environmentRegion, this.regionDiscoveryMetadata);\r\n if (autodetectedRegionName) {\r\n this.regionDiscoveryMetadata.region_outcome =\r\n RegionDiscoveryOutcomes.AUTO_DETECTION_REQUESTED_SUCCESSFUL;\r\n this.regionDiscoveryMetadata.region_used =\r\n autodetectedRegionName;\r\n return Authority.replaceWithRegionalInformation(metadata, autodetectedRegionName);\r\n }\r\n this.regionDiscoveryMetadata.region_outcome =\r\n RegionDiscoveryOutcomes.AUTO_DETECTION_REQUESTED_FAILED;\r\n }\r\n return metadata;\r\n }\r\n /**\r\n * Updates the AuthorityMetadataEntity with new aliases, preferred_network and preferred_cache\r\n * and returns where the information was retrieved from\r\n * @param metadataEntity\r\n * @returns AuthorityMetadataSource\r\n */\r\n async updateCloudDiscoveryMetadata(metadataEntity) {\r\n this.performanceClient?.addQueueMeasurement(PerformanceEvents.AuthorityUpdateCloudDiscoveryMetadata, this.correlationId);\r\n const localMetadataSource = this.updateCloudDiscoveryMetadataFromLocalSources(metadataEntity);\r\n if (localMetadataSource) {\r\n return localMetadataSource;\r\n }\r\n // Fallback to network as metadata source\r\n const metadata = await invokeAsync(this.getCloudDiscoveryMetadataFromNetwork.bind(this), PerformanceEvents.AuthorityGetCloudDiscoveryMetadataFromNetwork, this.logger, this.performanceClient, this.correlationId)();\r\n if (metadata) {\r\n updateCloudDiscoveryMetadata(metadataEntity, metadata, true);\r\n return AuthorityMetadataSource.NETWORK;\r\n }\r\n // Metadata could not be obtained from the config, cache, network or hardcoded values\r\n throw createClientConfigurationError(untrustedAuthority);\r\n }\r\n updateCloudDiscoveryMetadataFromLocalSources(metadataEntity) {\r\n this.logger.verbose(\"Attempting to get cloud discovery metadata from authority configuration\");\r\n this.logger.verbosePii(`Known Authorities: ${this.authorityOptions.knownAuthorities ||\r\n Constants.NOT_APPLICABLE}`);\r\n this.logger.verbosePii(`Authority Metadata: ${this.authorityOptions.authorityMetadata ||\r\n Constants.NOT_APPLICABLE}`);\r\n this.logger.verbosePii(`Canonical Authority: ${metadataEntity.canonical_authority || Constants.NOT_APPLICABLE}`);\r\n const metadata = this.getCloudDiscoveryMetadataFromConfig();\r\n if (metadata) {\r\n this.logger.verbose(\"Found cloud discovery metadata in authority configuration\");\r\n updateCloudDiscoveryMetadata(metadataEntity, metadata, false);\r\n return AuthorityMetadataSource.CONFIG;\r\n }\r\n // If the cached metadata came from config but that config was not passed to this instance, we must go to hardcoded values\r\n this.logger.verbose(\"Did not find cloud discovery metadata in the config... Attempting to get cloud discovery metadata from the hardcoded values.\");\r\n if (this.options.skipAuthorityMetadataCache) {\r\n this.logger.verbose(\"Skipping hardcoded cloud discovery metadata cache since skipAuthorityMetadataCache is set to true. Attempting to get cloud discovery metadata from the network metadata cache.\");\r\n }\r\n else {\r\n const hardcodedMetadata = getCloudDiscoveryMetadataFromHardcodedValues(this.hostnameAndPort);\r\n if (hardcodedMetadata) {\r\n this.logger.verbose(\"Found cloud discovery metadata from hardcoded values.\");\r\n updateCloudDiscoveryMetadata(metadataEntity, hardcodedMetadata, false);\r\n return AuthorityMetadataSource.HARDCODED_VALUES;\r\n }\r\n this.logger.verbose(\"Did not find cloud discovery metadata in hardcoded values... Attempting to get cloud discovery metadata from the network metadata cache.\");\r\n }\r\n const metadataEntityExpired = isAuthorityMetadataExpired(metadataEntity);\r\n if (this.isAuthoritySameType(metadataEntity) &&\r\n metadataEntity.aliasesFromNetwork &&\r\n !metadataEntityExpired) {\r\n this.logger.verbose(\"Found cloud discovery metadata in the cache.\");\r\n // No need to update\r\n return AuthorityMetadataSource.CACHE;\r\n }\r\n else if (metadataEntityExpired) {\r\n this.logger.verbose(\"The metadata entity is expired.\");\r\n }\r\n return null;\r\n }\r\n /**\r\n * Parse cloudDiscoveryMetadata config or check knownAuthorities\r\n */\r\n getCloudDiscoveryMetadataFromConfig() {\r\n // CIAM does not support cloud discovery metadata\r\n if (this.authorityType === AuthorityType.Ciam) {\r\n this.logger.verbose(\"CIAM authorities do not support cloud discovery metadata, generate the aliases from authority host.\");\r\n return Authority.createCloudDiscoveryMetadataFromHost(this.hostnameAndPort);\r\n }\r\n // Check if network response was provided in config\r\n if (this.authorityOptions.cloudDiscoveryMetadata) {\r\n this.logger.verbose(\"The cloud discovery metadata has been provided as a network response, in the config.\");\r\n try {\r\n this.logger.verbose(\"Attempting to parse the cloud discovery metadata.\");\r\n const parsedResponse = JSON.parse(this.authorityOptions.cloudDiscoveryMetadata);\r\n const metadata = getCloudDiscoveryMetadataFromNetworkResponse(parsedResponse.metadata, this.hostnameAndPort);\r\n this.logger.verbose(\"Parsed the cloud discovery metadata.\");\r\n if (metadata) {\r\n this.logger.verbose(\"There is returnable metadata attached to the parsed cloud discovery metadata.\");\r\n return metadata;\r\n }\r\n else {\r\n this.logger.verbose(\"There is no metadata attached to the parsed cloud discovery metadata.\");\r\n }\r\n }\r\n catch (e) {\r\n this.logger.verbose(\"Unable to parse the cloud discovery metadata. Throwing Invalid Cloud Discovery Metadata Error.\");\r\n throw createClientConfigurationError(invalidCloudDiscoveryMetadata);\r\n }\r\n }\r\n // If cloudDiscoveryMetadata is empty or does not contain the host, check knownAuthorities\r\n if (this.isInKnownAuthorities()) {\r\n this.logger.verbose(\"The host is included in knownAuthorities. Creating new cloud discovery metadata from the host.\");\r\n return Authority.createCloudDiscoveryMetadataFromHost(this.hostnameAndPort);\r\n }\r\n return null;\r\n }\r\n /**\r\n * Called to get metadata from network if CloudDiscoveryMetadata was not populated by config\r\n *\r\n * @param hasHardcodedMetadata boolean\r\n */\r\n async getCloudDiscoveryMetadataFromNetwork() {\r\n this.performanceClient?.addQueueMeasurement(PerformanceEvents.AuthorityGetCloudDiscoveryMetadataFromNetwork, this.correlationId);\r\n const instanceDiscoveryEndpoint = `${Constants.AAD_INSTANCE_DISCOVERY_ENDPT}${this.canonicalAuthority}oauth2/v2.0/authorize`;\r\n const options = {};\r\n /*\r\n * TODO: Add a timeout if the authority exists in our library's\r\n * hardcoded list of metadata\r\n */\r\n let match = null;\r\n try {\r\n const response = await this.networkInterface.sendGetRequestAsync(instanceDiscoveryEndpoint, options);\r\n let typedResponseBody;\r\n let metadata;\r\n if (isCloudInstanceDiscoveryResponse(response.body)) {\r\n typedResponseBody =\r\n response.body;\r\n metadata = typedResponseBody.metadata;\r\n this.logger.verbosePii(`tenant_discovery_endpoint is: ${typedResponseBody.tenant_discovery_endpoint}`);\r\n }\r\n else if (isCloudInstanceDiscoveryErrorResponse(response.body)) {\r\n this.logger.warning(`A CloudInstanceDiscoveryErrorResponse was returned. The cloud instance discovery network request's status code is: ${response.status}`);\r\n typedResponseBody =\r\n response.body;\r\n if (typedResponseBody.error === Constants.INVALID_INSTANCE) {\r\n this.logger.error(\"The CloudInstanceDiscoveryErrorResponse error is invalid_instance.\");\r\n return null;\r\n }\r\n this.logger.warning(`The CloudInstanceDiscoveryErrorResponse error is ${typedResponseBody.error}`);\r\n this.logger.warning(`The CloudInstanceDiscoveryErrorResponse error description is ${typedResponseBody.error_description}`);\r\n this.logger.warning(\"Setting the value of the CloudInstanceDiscoveryMetadata (returned from the network) to []\");\r\n metadata = [];\r\n }\r\n else {\r\n this.logger.error(\"AAD did not return a CloudInstanceDiscoveryResponse or CloudInstanceDiscoveryErrorResponse\");\r\n return null;\r\n }\r\n this.logger.verbose(\"Attempting to find a match between the developer's authority and the CloudInstanceDiscoveryMetadata returned from the network request.\");\r\n match = getCloudDiscoveryMetadataFromNetworkResponse(metadata, this.hostnameAndPort);\r\n }\r\n catch (error) {\r\n if (error instanceof AuthError) {\r\n this.logger.error(`There was a network error while attempting to get the cloud discovery instance metadata.\\nError: ${error.errorCode}\\nError Description: ${error.errorMessage}`);\r\n }\r\n else {\r\n const typedError = error;\r\n this.logger.error(`A non-MSALJS error was thrown while attempting to get the cloud instance discovery metadata.\\nError: ${typedError.name}\\nError Description: ${typedError.message}`);\r\n }\r\n return null;\r\n }\r\n // Custom Domain scenario, host is trusted because Instance Discovery call succeeded\r\n if (!match) {\r\n this.logger.warning(\"The developer's authority was not found within the CloudInstanceDiscoveryMetadata returned from the network request.\");\r\n this.logger.verbose(\"Creating custom Authority for custom domain scenario.\");\r\n match = Authority.createCloudDiscoveryMetadataFromHost(this.hostnameAndPort);\r\n }\r\n return match;\r\n }\r\n /**\r\n * Helper function to determine if this host is included in the knownAuthorities config option\r\n */\r\n isInKnownAuthorities() {\r\n const matches = this.authorityOptions.knownAuthorities.filter((authority) => {\r\n return (authority &&\r\n UrlString.getDomainFromUrl(authority).toLowerCase() ===\r\n this.hostnameAndPort);\r\n });\r\n return matches.length > 0;\r\n }\r\n /**\r\n * helper function to populate the authority based on azureCloudOptions\r\n * @param authorityString\r\n * @param azureCloudOptions\r\n */\r\n static generateAuthority(authorityString, azureCloudOptions) {\r\n let authorityAzureCloudInstance;\r\n if (azureCloudOptions &&\r\n azureCloudOptions.azureCloudInstance !== AzureCloudInstance.None) {\r\n const tenant = azureCloudOptions.tenant\r\n ? azureCloudOptions.tenant\r\n : Constants.DEFAULT_COMMON_TENANT;\r\n authorityAzureCloudInstance = `${azureCloudOptions.azureCloudInstance}/${tenant}/`;\r\n }\r\n return authorityAzureCloudInstance\r\n ? authorityAzureCloudInstance\r\n : authorityString;\r\n }\r\n /**\r\n * Creates cloud discovery metadata object from a given host\r\n * @param host\r\n */\r\n static createCloudDiscoveryMetadataFromHost(host) {\r\n return {\r\n preferred_network: host,\r\n preferred_cache: host,\r\n aliases: [host],\r\n };\r\n }\r\n /**\r\n * helper function to generate environment from authority object\r\n */\r\n getPreferredCache() {\r\n if (this.managedIdentity) {\r\n return Constants.DEFAULT_AUTHORITY_HOST;\r\n }\r\n else if (this.discoveryComplete()) {\r\n return this.metadata.preferred_cache;\r\n }\r\n else {\r\n throw createClientAuthError(endpointResolutionError);\r\n }\r\n }\r\n /**\r\n * Returns whether or not the provided host is an alias of this authority instance\r\n * @param host\r\n */\r\n isAlias(host) {\r\n return this.metadata.aliases.indexOf(host) > -1;\r\n }\r\n /**\r\n * Returns whether or not the provided host is an alias of a known Microsoft authority for purposes of endpoint discovery\r\n * @param host\r\n */\r\n isAliasOfKnownMicrosoftAuthority(host) {\r\n return InstanceDiscoveryMetadataAliases.has(host);\r\n }\r\n /**\r\n * Checks whether the provided host is that of a public cloud authority\r\n *\r\n * @param authority string\r\n * @returns bool\r\n */\r\n static isPublicCloudAuthority(host) {\r\n return Constants.KNOWN_PUBLIC_CLOUDS.indexOf(host) >= 0;\r\n }\r\n /**\r\n * Rebuild the authority string with the region\r\n *\r\n * @param host string\r\n * @param region string\r\n */\r\n static buildRegionalAuthorityString(host, region, queryString) {\r\n // Create and validate a Url string object with the initial authority string\r\n const authorityUrlInstance = new UrlString(host);\r\n authorityUrlInstance.validateAsUri();\r\n const authorityUrlParts = authorityUrlInstance.getUrlComponents();\r\n let hostNameAndPort = `${region}.${authorityUrlParts.HostNameAndPort}`;\r\n if (this.isPublicCloudAuthority(authorityUrlParts.HostNameAndPort)) {\r\n hostNameAndPort = `${region}.${Constants.REGIONAL_AUTH_PUBLIC_CLOUD_SUFFIX}`;\r\n }\r\n // Include the query string portion of the url\r\n const url = UrlString.constructAuthorityUriFromObject({\r\n ...authorityUrlInstance.getUrlComponents(),\r\n HostNameAndPort: hostNameAndPort,\r\n }).urlString;\r\n // Add the query string if a query string was provided\r\n if (queryString)\r\n return `${url}?${queryString}`;\r\n return url;\r\n }\r\n /**\r\n * Replace the endpoints in the metadata object with their regional equivalents.\r\n *\r\n * @param metadata OpenIdConfigResponse\r\n * @param azureRegion string\r\n */\r\n static replaceWithRegionalInformation(metadata, azureRegion) {\r\n const regionalMetadata = { ...metadata };\r\n regionalMetadata.authorization_endpoint =\r\n Authority.buildRegionalAuthorityString(regionalMetadata.authorization_endpoint, azureRegion);\r\n regionalMetadata.token_endpoint =\r\n Authority.buildRegionalAuthorityString(regionalMetadata.token_endpoint, azureRegion);\r\n if (regionalMetadata.end_session_endpoint) {\r\n regionalMetadata.end_session_endpoint =\r\n Authority.buildRegionalAuthorityString(regionalMetadata.end_session_endpoint, azureRegion);\r\n }\r\n return regionalMetadata;\r\n }\r\n /**\r\n * Transform CIAM_AUTHORIY as per the below rules:\r\n * If no path segments found and it is a CIAM authority (hostname ends with .ciamlogin.com), then transform it\r\n *\r\n * NOTE: The transformation path should go away once STS supports CIAM with the format: `tenantIdorDomain.ciamlogin.com`\r\n * `ciamlogin.com` can also change in the future and we should accommodate the same\r\n *\r\n * @param authority\r\n */\r\n static transformCIAMAuthority(authority) {\r\n let ciamAuthority = authority;\r\n const authorityUrl = new UrlString(authority);\r\n const authorityUrlComponents = authorityUrl.getUrlComponents();\r\n // check if transformation is needed\r\n if (authorityUrlComponents.PathSegments.length === 0 &&\r\n authorityUrlComponents.HostNameAndPort.endsWith(Constants.CIAM_AUTH_URL)) {\r\n const tenantIdOrDomain = authorityUrlComponents.HostNameAndPort.split(\".\")[0];\r\n ciamAuthority = `${ciamAuthority}${tenantIdOrDomain}${Constants.AAD_TENANT_DOMAIN_SUFFIX}`;\r\n }\r\n return ciamAuthority;\r\n }\r\n}\r\n// Reserved tenant domain names that will not be replaced with tenant id\r\nAuthority.reservedTenantDomains = new Set([\r\n \"{tenant}\",\r\n \"{tenantid}\",\r\n AADAuthorityConstants.COMMON,\r\n AADAuthorityConstants.CONSUMERS,\r\n AADAuthorityConstants.ORGANIZATIONS,\r\n]);\r\n/**\r\n * Extract tenantId from authority\r\n */\r\nfunction getTenantFromAuthorityString(authority) {\r\n const authorityUrl = new UrlString(authority);\r\n const authorityUrlComponents = authorityUrl.getUrlComponents();\r\n /**\r\n * For credential matching purposes, tenantId is the last path segment of the authority URL:\r\n * AAD Authority - domain/tenantId -> Credentials are cached with realm = tenantId\r\n * B2C Authority - domain/{tenantId}?/.../policy -> Credentials are cached with realm = policy\r\n * tenantId is downcased because B2C policies can have mixed case but tfp claim is downcased\r\n *\r\n * Note that we may not have any path segments in certain OIDC scenarios.\r\n */\r\n const tenantId = authorityUrlComponents.PathSegments.slice(-1)[0]?.toLowerCase();\r\n switch (tenantId) {\r\n case AADAuthorityConstants.COMMON:\r\n case AADAuthorityConstants.ORGANIZATIONS:\r\n case AADAuthorityConstants.CONSUMERS:\r\n return undefined;\r\n default:\r\n return tenantId;\r\n }\r\n}\r\nfunction formatAuthorityUri(authorityUri) {\r\n return authorityUri.endsWith(Constants.FORWARD_SLASH)\r\n ? authorityUri\r\n : `${authorityUri}${Constants.FORWARD_SLASH}`;\r\n}\r\nfunction buildStaticAuthorityOptions(authOptions) {\r\n const rawCloudDiscoveryMetadata = authOptions.cloudDiscoveryMetadata;\r\n let cloudDiscoveryMetadata = undefined;\r\n if (rawCloudDiscoveryMetadata) {\r\n try {\r\n cloudDiscoveryMetadata = JSON.parse(rawCloudDiscoveryMetadata);\r\n }\r\n catch (e) {\r\n throw createClientConfigurationError(invalidCloudDiscoveryMetadata);\r\n }\r\n }\r\n return {\r\n canonicalAuthority: authOptions.authority\r\n ? formatAuthorityUri(authOptions.authority)\r\n : undefined,\r\n knownAuthorities: authOptions.knownAuthorities,\r\n cloudDiscoveryMetadata: cloudDiscoveryMetadata,\r\n };\r\n}\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * Create an authority object of the correct type based on the url\r\n * Performs basic authority validation - checks to see if the authority is of a valid type (i.e. aad, b2c, adfs)\r\n *\r\n * Also performs endpoint discovery.\r\n *\r\n * @param authorityUri\r\n * @param networkClient\r\n * @param protocolMode\r\n * @internal\r\n */\r\nasync function createDiscoveredInstance(authorityUri, networkClient, cacheManager, authorityOptions, logger, correlationId, performanceClient) {\r\n performanceClient?.addQueueMeasurement(PerformanceEvents.AuthorityFactoryCreateDiscoveredInstance, correlationId);\r\n const authorityUriFinal = Authority.transformCIAMAuthority(formatAuthorityUri(authorityUri));\r\n // Initialize authority and perform discovery endpoint check.\r\n const acquireTokenAuthority = new Authority(authorityUriFinal, networkClient, cacheManager, authorityOptions, logger, correlationId, performanceClient);\r\n try {\r\n await invokeAsync(acquireTokenAuthority.resolveEndpointsAsync.bind(acquireTokenAuthority), PerformanceEvents.AuthorityResolveEndpointsAsync, logger, performanceClient, correlationId)();\r\n return acquireTokenAuthority;\r\n }\r\n catch (e) {\r\n throw createClientAuthError(endpointResolutionError);\r\n }\r\n}\n\nvar AuthorityFactory = /*#__PURE__*/Object.freeze({\n __proto__: null,\n createDiscoveredInstance: createDiscoveredInstance\n});\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nconst CLIENT_ID = \"client_id\";\r\nconst REDIRECT_URI = \"redirect_uri\";\r\nconst RESPONSE_TYPE = \"response_type\";\r\nconst RESPONSE_MODE = \"response_mode\";\r\nconst GRANT_TYPE = \"grant_type\";\r\nconst CLAIMS = \"claims\";\r\nconst SCOPE = \"scope\";\r\nconst ERROR = \"error\";\r\nconst ERROR_DESCRIPTION = \"error_description\";\r\nconst ACCESS_TOKEN = \"access_token\";\r\nconst ID_TOKEN = \"id_token\";\r\nconst REFRESH_TOKEN = \"refresh_token\";\r\nconst EXPIRES_IN = \"expires_in\";\r\nconst REFRESH_TOKEN_EXPIRES_IN = \"refresh_token_expires_in\";\r\nconst STATE = \"state\";\r\nconst NONCE = \"nonce\";\r\nconst PROMPT = \"prompt\";\r\nconst SESSION_STATE = \"session_state\";\r\nconst CLIENT_INFO = \"client_info\";\r\nconst CODE = \"code\";\r\nconst CODE_CHALLENGE = \"code_challenge\";\r\nconst CODE_CHALLENGE_METHOD = \"code_challenge_method\";\r\nconst CODE_VERIFIER = \"code_verifier\";\r\nconst CLIENT_REQUEST_ID = \"client-request-id\";\r\nconst X_CLIENT_SKU = \"x-client-SKU\";\r\nconst X_CLIENT_VER = \"x-client-VER\";\r\nconst X_CLIENT_OS = \"x-client-OS\";\r\nconst X_CLIENT_CPU = \"x-client-CPU\";\r\nconst X_CLIENT_CURR_TELEM = \"x-client-current-telemetry\";\r\nconst X_CLIENT_LAST_TELEM = \"x-client-last-telemetry\";\r\nconst X_MS_LIB_CAPABILITY = \"x-ms-lib-capability\";\r\nconst X_APP_NAME = \"x-app-name\";\r\nconst X_APP_VER = \"x-app-ver\";\r\nconst POST_LOGOUT_URI = \"post_logout_redirect_uri\";\r\nconst ID_TOKEN_HINT = \"id_token_hint\";\r\nconst DEVICE_CODE = \"device_code\";\r\nconst CLIENT_SECRET = \"client_secret\";\r\nconst CLIENT_ASSERTION = \"client_assertion\";\r\nconst CLIENT_ASSERTION_TYPE = \"client_assertion_type\";\r\nconst TOKEN_TYPE = \"token_type\";\r\nconst REQ_CNF = \"req_cnf\";\r\nconst OBO_ASSERTION = \"assertion\";\r\nconst REQUESTED_TOKEN_USE = \"requested_token_use\";\r\nconst ON_BEHALF_OF = \"on_behalf_of\";\r\nconst FOCI = \"foci\";\r\nconst CCS_HEADER = \"X-AnchorMailbox\";\r\nconst RETURN_SPA_CODE = \"return_spa_code\";\r\nconst NATIVE_BROKER = \"nativebroker\";\r\nconst LOGOUT_HINT = \"logout_hint\";\r\nconst SID = \"sid\";\r\nconst LOGIN_HINT = \"login_hint\";\r\nconst DOMAIN_HINT = \"domain_hint\";\r\nconst X_CLIENT_EXTRA_SKU = \"x-client-xtra-sku\";\r\nconst BROKER_CLIENT_ID = \"brk_client_id\";\r\nconst BROKER_REDIRECT_URI = \"brk_redirect_uri\";\r\nconst INSTANCE_AWARE = \"instance_aware\";\r\nconst EAR_JWK = \"ear_jwk\";\r\nconst EAR_JWE_CRYPTO = \"ear_jwe_crypto\";\n\nvar AADServerParamKeys = /*#__PURE__*/Object.freeze({\n __proto__: null,\n ACCESS_TOKEN: ACCESS_TOKEN,\n BROKER_CLIENT_ID: BROKER_CLIENT_ID,\n BROKER_REDIRECT_URI: BROKER_REDIRECT_URI,\n CCS_HEADER: CCS_HEADER,\n CLAIMS: CLAIMS,\n CLIENT_ASSERTION: CLIENT_ASSERTION,\n CLIENT_ASSERTION_TYPE: CLIENT_ASSERTION_TYPE,\n CLIENT_ID: CLIENT_ID,\n CLIENT_INFO: CLIENT_INFO,\n CLIENT_REQUEST_ID: CLIENT_REQUEST_ID,\n CLIENT_SECRET: CLIENT_SECRET,\n CODE: CODE,\n CODE_CHALLENGE: CODE_CHALLENGE,\n CODE_CHALLENGE_METHOD: CODE_CHALLENGE_METHOD,\n CODE_VERIFIER: CODE_VERIFIER,\n DEVICE_CODE: DEVICE_CODE,\n DOMAIN_HINT: DOMAIN_HINT,\n EAR_JWE_CRYPTO: EAR_JWE_CRYPTO,\n EAR_JWK: EAR_JWK,\n ERROR: ERROR,\n ERROR_DESCRIPTION: ERROR_DESCRIPTION,\n EXPIRES_IN: EXPIRES_IN,\n FOCI: FOCI,\n GRANT_TYPE: GRANT_TYPE,\n ID_TOKEN: ID_TOKEN,\n ID_TOKEN_HINT: ID_TOKEN_HINT,\n INSTANCE_AWARE: INSTANCE_AWARE,\n LOGIN_HINT: LOGIN_HINT,\n LOGOUT_HINT: LOGOUT_HINT,\n NATIVE_BROKER: NATIVE_BROKER,\n NONCE: NONCE,\n OBO_ASSERTION: OBO_ASSERTION,\n ON_BEHALF_OF: ON_BEHALF_OF,\n POST_LOGOUT_URI: POST_LOGOUT_URI,\n PROMPT: PROMPT,\n REDIRECT_URI: REDIRECT_URI,\n REFRESH_TOKEN: REFRESH_TOKEN,\n REFRESH_TOKEN_EXPIRES_IN: REFRESH_TOKEN_EXPIRES_IN,\n REQUESTED_TOKEN_USE: REQUESTED_TOKEN_USE,\n REQ_CNF: REQ_CNF,\n RESPONSE_MODE: RESPONSE_MODE,\n RESPONSE_TYPE: RESPONSE_TYPE,\n RETURN_SPA_CODE: RETURN_SPA_CODE,\n SCOPE: SCOPE,\n SESSION_STATE: SESSION_STATE,\n SID: SID,\n STATE: STATE,\n TOKEN_TYPE: TOKEN_TYPE,\n X_APP_NAME: X_APP_NAME,\n X_APP_VER: X_APP_VER,\n X_CLIENT_CPU: X_CLIENT_CPU,\n X_CLIENT_CURR_TELEM: X_CLIENT_CURR_TELEM,\n X_CLIENT_EXTRA_SKU: X_CLIENT_EXTRA_SKU,\n X_CLIENT_LAST_TELEM: X_CLIENT_LAST_TELEM,\n X_CLIENT_OS: X_CLIENT_OS,\n X_CLIENT_SKU: X_CLIENT_SKU,\n X_CLIENT_VER: X_CLIENT_VER,\n X_MS_LIB_CAPABILITY: X_MS_LIB_CAPABILITY\n});\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nconst DEFAULT_CRYPTO_IMPLEMENTATION = {\r\n createNewGuid: () => {\r\n throw createClientAuthError(methodNotImplemented);\r\n },\r\n base64Decode: () => {\r\n throw createClientAuthError(methodNotImplemented);\r\n },\r\n base64Encode: () => {\r\n throw createClientAuthError(methodNotImplemented);\r\n },\r\n base64UrlEncode: () => {\r\n throw createClientAuthError(methodNotImplemented);\r\n },\r\n encodeKid: () => {\r\n throw createClientAuthError(methodNotImplemented);\r\n },\r\n async getPublicKeyThumbprint() {\r\n throw createClientAuthError(methodNotImplemented);\r\n },\r\n async removeTokenBindingKey() {\r\n throw createClientAuthError(methodNotImplemented);\r\n },\r\n async clearKeystore() {\r\n throw createClientAuthError(methodNotImplemented);\r\n },\r\n async signJwt() {\r\n throw createClientAuthError(methodNotImplemented);\r\n },\r\n async hashString() {\r\n throw createClientAuthError(methodNotImplemented);\r\n },\r\n};\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * Log message level.\r\n */\r\nexports.LogLevel = void 0;\r\n(function (LogLevel) {\r\n LogLevel[LogLevel[\"Error\"] = 0] = \"Error\";\r\n LogLevel[LogLevel[\"Warning\"] = 1] = \"Warning\";\r\n LogLevel[LogLevel[\"Info\"] = 2] = \"Info\";\r\n LogLevel[LogLevel[\"Verbose\"] = 3] = \"Verbose\";\r\n LogLevel[LogLevel[\"Trace\"] = 4] = \"Trace\";\r\n})(exports.LogLevel || (exports.LogLevel = {}));\r\n/**\r\n * Class which facilitates logging of messages to a specific place.\r\n */\r\nclass Logger {\r\n constructor(loggerOptions, packageName, packageVersion) {\r\n // Current log level, defaults to info.\r\n this.level = exports.LogLevel.Info;\r\n const defaultLoggerCallback = () => {\r\n return;\r\n };\r\n const setLoggerOptions = loggerOptions || Logger.createDefaultLoggerOptions();\r\n this.localCallback =\r\n setLoggerOptions.loggerCallback || defaultLoggerCallback;\r\n this.piiLoggingEnabled = setLoggerOptions.piiLoggingEnabled || false;\r\n this.level =\r\n typeof setLoggerOptions.logLevel === \"number\"\r\n ? setLoggerOptions.logLevel\r\n : exports.LogLevel.Info;\r\n this.correlationId =\r\n setLoggerOptions.correlationId || Constants.EMPTY_STRING;\r\n this.packageName = packageName || Constants.EMPTY_STRING;\r\n this.packageVersion = packageVersion || Constants.EMPTY_STRING;\r\n }\r\n static createDefaultLoggerOptions() {\r\n return {\r\n loggerCallback: () => {\r\n // allow users to not set loggerCallback\r\n },\r\n piiLoggingEnabled: false,\r\n logLevel: exports.LogLevel.Info,\r\n };\r\n }\r\n /**\r\n * Create new Logger with existing configurations.\r\n */\r\n clone(packageName, packageVersion, correlationId) {\r\n return new Logger({\r\n loggerCallback: this.localCallback,\r\n piiLoggingEnabled: this.piiLoggingEnabled,\r\n logLevel: this.level,\r\n correlationId: correlationId || this.correlationId,\r\n }, packageName, packageVersion);\r\n }\r\n /**\r\n * Log message with required options.\r\n */\r\n logMessage(logMessage, options) {\r\n if (options.logLevel > this.level ||\r\n (!this.piiLoggingEnabled && options.containsPii)) {\r\n return;\r\n }\r\n const timestamp = new Date().toUTCString();\r\n // Add correlationId to logs if set, correlationId provided on log messages take precedence\r\n const logHeader = `[${timestamp}] : [${options.correlationId || this.correlationId || \"\"}]`;\r\n const log = `${logHeader} : ${this.packageName}@${this.packageVersion} : ${exports.LogLevel[options.logLevel]} - ${logMessage}`;\r\n // debug(`msal:${LogLevel[options.logLevel]}${options.containsPii ? \"-Pii\": Constants.EMPTY_STRING}${options.context ? `:${options.context}` : Constants.EMPTY_STRING}`)(logMessage);\r\n this.executeCallback(options.logLevel, log, options.containsPii || false);\r\n }\r\n /**\r\n * Execute callback with message.\r\n */\r\n executeCallback(level, message, containsPii) {\r\n if (this.localCallback) {\r\n this.localCallback(level, message, containsPii);\r\n }\r\n }\r\n /**\r\n * Logs error messages.\r\n */\r\n error(message, correlationId) {\r\n this.logMessage(message, {\r\n logLevel: exports.LogLevel.Error,\r\n containsPii: false,\r\n correlationId: correlationId || Constants.EMPTY_STRING,\r\n });\r\n }\r\n /**\r\n * Logs error messages with PII.\r\n */\r\n errorPii(message, correlationId) {\r\n this.logMessage(message, {\r\n logLevel: exports.LogLevel.Error,\r\n containsPii: true,\r\n correlationId: correlationId || Constants.EMPTY_STRING,\r\n });\r\n }\r\n /**\r\n * Logs warning messages.\r\n */\r\n warning(message, correlationId) {\r\n this.logMessage(message, {\r\n logLevel: exports.LogLevel.Warning,\r\n containsPii: false,\r\n correlationId: correlationId || Constants.EMPTY_STRING,\r\n });\r\n }\r\n /**\r\n * Logs warning messages with PII.\r\n */\r\n warningPii(message, correlationId) {\r\n this.logMessage(message, {\r\n logLevel: exports.LogLevel.Warning,\r\n containsPii: true,\r\n correlationId: correlationId || Constants.EMPTY_STRING,\r\n });\r\n }\r\n /**\r\n * Logs info messages.\r\n */\r\n info(message, correlationId) {\r\n this.logMessage(message, {\r\n logLevel: exports.LogLevel.Info,\r\n containsPii: false,\r\n correlationId: correlationId || Constants.EMPTY_STRING,\r\n });\r\n }\r\n /**\r\n * Logs info messages with PII.\r\n */\r\n infoPii(message, correlationId) {\r\n this.logMessage(message, {\r\n logLevel: exports.LogLevel.Info,\r\n containsPii: true,\r\n correlationId: correlationId || Constants.EMPTY_STRING,\r\n });\r\n }\r\n /**\r\n * Logs verbose messages.\r\n */\r\n verbose(message, correlationId) {\r\n this.logMessage(message, {\r\n logLevel: exports.LogLevel.Verbose,\r\n containsPii: false,\r\n correlationId: correlationId || Constants.EMPTY_STRING,\r\n });\r\n }\r\n /**\r\n * Logs verbose messages with PII.\r\n */\r\n verbosePii(message, correlationId) {\r\n this.logMessage(message, {\r\n logLevel: exports.LogLevel.Verbose,\r\n containsPii: true,\r\n correlationId: correlationId || Constants.EMPTY_STRING,\r\n });\r\n }\r\n /**\r\n * Logs trace messages.\r\n */\r\n trace(message, correlationId) {\r\n this.logMessage(message, {\r\n logLevel: exports.LogLevel.Trace,\r\n containsPii: false,\r\n correlationId: correlationId || Constants.EMPTY_STRING,\r\n });\r\n }\r\n /**\r\n * Logs trace messages with PII.\r\n */\r\n tracePii(message, correlationId) {\r\n this.logMessage(message, {\r\n logLevel: exports.LogLevel.Trace,\r\n containsPii: true,\r\n correlationId: correlationId || Constants.EMPTY_STRING,\r\n });\r\n }\r\n /**\r\n * Returns whether PII Logging is enabled or not.\r\n */\r\n isPiiLoggingEnabled() {\r\n return this.piiLoggingEnabled || false;\r\n }\r\n}\n\n/* eslint-disable header/header */\r\nconst name = \"@azure/msal-common\";\r\nconst version = \"15.13.2\";\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * The ScopeSet class creates a set of scopes. Scopes are case-insensitive, unique values, so the Set object in JS makes\r\n * the most sense to implement for this class. All scopes are trimmed and converted to lower case strings in intersection and union functions\r\n * to ensure uniqueness of strings.\r\n */\r\nclass ScopeSet {\r\n constructor(inputScopes) {\r\n // Filter empty string and null/undefined array items\r\n const scopeArr = inputScopes\r\n ? StringUtils.trimArrayEntries([...inputScopes])\r\n : [];\r\n const filteredInput = scopeArr\r\n ? StringUtils.removeEmptyStringsFromArray(scopeArr)\r\n : [];\r\n // Check if scopes array has at least one member\r\n if (!filteredInput || !filteredInput.length) {\r\n throw createClientConfigurationError(emptyInputScopesError);\r\n }\r\n this.scopes = new Set(); // Iterator in constructor not supported by IE11\r\n filteredInput.forEach((scope) => this.scopes.add(scope));\r\n }\r\n /**\r\n * Factory method to create ScopeSet from space-delimited string\r\n * @param inputScopeString\r\n * @param appClientId\r\n * @param scopesRequired\r\n */\r\n static fromString(inputScopeString) {\r\n const scopeString = inputScopeString || Constants.EMPTY_STRING;\r\n const inputScopes = scopeString.split(\" \");\r\n return new ScopeSet(inputScopes);\r\n }\r\n /**\r\n * Creates the set of scopes to search for in cache lookups\r\n * @param inputScopeString\r\n * @returns\r\n */\r\n static createSearchScopes(inputScopeString) {\r\n // Handle empty scopes by using default OIDC scopes for cache lookup\r\n const scopesToUse = inputScopeString && inputScopeString.length > 0\r\n ? inputScopeString\r\n : [...OIDC_DEFAULT_SCOPES];\r\n const scopeSet = new ScopeSet(scopesToUse);\r\n if (!scopeSet.containsOnlyOIDCScopes()) {\r\n scopeSet.removeOIDCScopes();\r\n }\r\n else {\r\n scopeSet.removeScope(Constants.OFFLINE_ACCESS_SCOPE);\r\n }\r\n return scopeSet;\r\n }\r\n /**\r\n * Check if a given scope is present in this set of scopes.\r\n * @param scope\r\n */\r\n containsScope(scope) {\r\n const lowerCaseScopes = this.printScopesLowerCase().split(\" \");\r\n const lowerCaseScopesSet = new ScopeSet(lowerCaseScopes);\r\n // compare lowercase scopes\r\n return scope\r\n ? lowerCaseScopesSet.scopes.has(scope.toLowerCase())\r\n : false;\r\n }\r\n /**\r\n * Check if a set of scopes is present in this set of scopes.\r\n * @param scopeSet\r\n */\r\n containsScopeSet(scopeSet) {\r\n if (!scopeSet || scopeSet.scopes.size <= 0) {\r\n return false;\r\n }\r\n return (this.scopes.size >= scopeSet.scopes.size &&\r\n scopeSet.asArray().every((scope) => this.containsScope(scope)));\r\n }\r\n /**\r\n * Check if set of scopes contains only the defaults\r\n */\r\n containsOnlyOIDCScopes() {\r\n let defaultScopeCount = 0;\r\n OIDC_SCOPES.forEach((defaultScope) => {\r\n if (this.containsScope(defaultScope)) {\r\n defaultScopeCount += 1;\r\n }\r\n });\r\n return this.scopes.size === defaultScopeCount;\r\n }\r\n /**\r\n * Appends single scope if passed\r\n * @param newScope\r\n */\r\n appendScope(newScope) {\r\n if (newScope) {\r\n this.scopes.add(newScope.trim());\r\n }\r\n }\r\n /**\r\n * Appends multiple scopes if passed\r\n * @param newScopes\r\n */\r\n appendScopes(newScopes) {\r\n try {\r\n newScopes.forEach((newScope) => this.appendScope(newScope));\r\n }\r\n catch (e) {\r\n throw createClientAuthError(cannotAppendScopeSet);\r\n }\r\n }\r\n /**\r\n * Removes element from set of scopes.\r\n * @param scope\r\n */\r\n removeScope(scope) {\r\n if (!scope) {\r\n throw createClientAuthError(cannotRemoveEmptyScope);\r\n }\r\n this.scopes.delete(scope.trim());\r\n }\r\n /**\r\n * Removes default scopes from set of scopes\r\n * Primarily used to prevent cache misses if the default scopes are not returned from the server\r\n */\r\n removeOIDCScopes() {\r\n OIDC_SCOPES.forEach((defaultScope) => {\r\n this.scopes.delete(defaultScope);\r\n });\r\n }\r\n /**\r\n * Combines an array of scopes with the current set of scopes.\r\n * @param otherScopes\r\n */\r\n unionScopeSets(otherScopes) {\r\n if (!otherScopes) {\r\n throw createClientAuthError(emptyInputScopeSet);\r\n }\r\n const unionScopes = new Set(); // Iterator in constructor not supported in IE11\r\n otherScopes.scopes.forEach((scope) => unionScopes.add(scope.toLowerCase()));\r\n this.scopes.forEach((scope) => unionScopes.add(scope.toLowerCase()));\r\n return unionScopes;\r\n }\r\n /**\r\n * Check if scopes intersect between this set and another.\r\n * @param otherScopes\r\n */\r\n intersectingScopeSets(otherScopes) {\r\n if (!otherScopes) {\r\n throw createClientAuthError(emptyInputScopeSet);\r\n }\r\n // Do not allow OIDC scopes to be the only intersecting scopes\r\n if (!otherScopes.containsOnlyOIDCScopes()) {\r\n otherScopes.removeOIDCScopes();\r\n }\r\n const unionScopes = this.unionScopeSets(otherScopes);\r\n const sizeOtherScopes = otherScopes.getScopeCount();\r\n const sizeThisScopes = this.getScopeCount();\r\n const sizeUnionScopes = unionScopes.size;\r\n return sizeUnionScopes < sizeThisScopes + sizeOtherScopes;\r\n }\r\n /**\r\n * Returns size of set of scopes.\r\n */\r\n getScopeCount() {\r\n return this.scopes.size;\r\n }\r\n /**\r\n * Returns the scopes as an array of string values\r\n */\r\n asArray() {\r\n const array = [];\r\n this.scopes.forEach((val) => array.push(val));\r\n return array;\r\n }\r\n /**\r\n * Prints scopes into a space-delimited string\r\n */\r\n printScopes() {\r\n if (this.scopes) {\r\n const scopeArr = this.asArray();\r\n return scopeArr.join(\" \");\r\n }\r\n return Constants.EMPTY_STRING;\r\n }\r\n /**\r\n * Prints scopes into a space-delimited lower-case string (used for caching)\r\n */\r\n printScopesLowerCase() {\r\n return this.printScopes().toLowerCase();\r\n }\r\n}\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * Function to build a client info object from server clientInfo string\r\n * @param rawClientInfo\r\n * @param crypto\r\n */\r\nfunction buildClientInfo(rawClientInfo, base64Decode) {\r\n if (!rawClientInfo) {\r\n throw createClientAuthError(clientInfoEmptyError);\r\n }\r\n try {\r\n const decodedClientInfo = base64Decode(rawClientInfo);\r\n return JSON.parse(decodedClientInfo);\r\n }\r\n catch (e) {\r\n throw createClientAuthError(clientInfoDecodingError);\r\n }\r\n}\r\n/**\r\n * Function to build a client info object from cached homeAccountId string\r\n * @param homeAccountId\r\n */\r\nfunction buildClientInfoFromHomeAccountId(homeAccountId) {\r\n if (!homeAccountId) {\r\n throw createClientAuthError(clientInfoDecodingError);\r\n }\r\n const clientInfoParts = homeAccountId.split(Separators.CLIENT_INFO_SEPARATOR, 2);\r\n return {\r\n uid: clientInfoParts[0],\r\n utid: clientInfoParts.length < 2\r\n ? Constants.EMPTY_STRING\r\n : clientInfoParts[1],\r\n };\r\n}\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * Returns true if tenantId matches the utid portion of homeAccountId\r\n * @param tenantId\r\n * @param homeAccountId\r\n * @returns\r\n */\r\nfunction tenantIdMatchesHomeTenant(tenantId, homeAccountId) {\r\n return (!!tenantId &&\r\n !!homeAccountId &&\r\n tenantId === homeAccountId.split(\".\")[1]);\r\n}\r\n/**\r\n * Build tenant profile\r\n * @param homeAccountId - Home account identifier for this account object\r\n * @param localAccountId - Local account identifer for this account object\r\n * @param tenantId - Full tenant or organizational id that this account belongs to\r\n * @param idTokenClaims - Claims from the ID token\r\n * @returns\r\n */\r\nfunction buildTenantProfile(homeAccountId, localAccountId, tenantId, idTokenClaims) {\r\n if (idTokenClaims) {\r\n const { oid, sub, tid, name, tfp, acr, preferred_username, upn, login_hint, } = idTokenClaims;\r\n /**\r\n * Since there is no way to determine if the authority is AAD or B2C, we exhaust all the possible claims that can serve as tenant ID with the following precedence:\r\n * tid - TenantID claim that identifies the tenant that issued the token in AAD. Expected in all AAD ID tokens, not present in B2C ID Tokens.\r\n * tfp - Trust Framework Policy claim that identifies the policy that was used to authenticate the user. Functions as tenant for B2C scenarios.\r\n * acr - Authentication Context Class Reference claim used only with older B2C policies. Fallback in case tfp is not present, but likely won't be present anyway.\r\n */\r\n const tenantId = tid || tfp || acr || \"\";\r\n return {\r\n tenantId: tenantId,\r\n localAccountId: oid || sub || \"\",\r\n name: name,\r\n username: preferred_username || upn || \"\",\r\n loginHint: login_hint,\r\n isHomeTenant: tenantIdMatchesHomeTenant(tenantId, homeAccountId),\r\n };\r\n }\r\n else {\r\n return {\r\n tenantId,\r\n localAccountId,\r\n username: \"\",\r\n isHomeTenant: tenantIdMatchesHomeTenant(tenantId, homeAccountId),\r\n };\r\n }\r\n}\r\n/**\r\n * Replaces account info that varies by tenant profile sourced from the ID token claims passed in with the tenant-specific account info\r\n * @param baseAccountInfo\r\n * @param idTokenClaims\r\n * @returns\r\n */\r\nfunction updateAccountTenantProfileData(baseAccountInfo, tenantProfile, idTokenClaims, idTokenSecret) {\r\n let updatedAccountInfo = baseAccountInfo;\r\n // Tenant Profile overrides passed in account info\r\n if (tenantProfile) {\r\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n const { isHomeTenant, ...tenantProfileOverride } = tenantProfile;\r\n updatedAccountInfo = { ...baseAccountInfo, ...tenantProfileOverride };\r\n }\r\n // ID token claims override passed in account info and tenant profile\r\n if (idTokenClaims) {\r\n // Ignore isHomeTenant, loginHint, and sid which are part of tenant profile but not base account info\r\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n const { isHomeTenant, ...claimsSourcedTenantProfile } = buildTenantProfile(baseAccountInfo.homeAccountId, baseAccountInfo.localAccountId, baseAccountInfo.tenantId, idTokenClaims);\r\n updatedAccountInfo = {\r\n ...updatedAccountInfo,\r\n ...claimsSourcedTenantProfile,\r\n idTokenClaims: idTokenClaims,\r\n idToken: idTokenSecret,\r\n };\r\n return updatedAccountInfo;\r\n }\r\n return updatedAccountInfo;\r\n}\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * Gets tenantId from available ID token claims to set as credential realm with the following precedence:\r\n * 1. tid - if the token is acquired from an Azure AD tenant tid will be present\r\n * 2. tfp - if the token is acquired from a modern B2C tenant tfp should be present\r\n * 3. acr - if the token is acquired from a legacy B2C tenant acr should be present\r\n * Downcased to match the realm case-insensitive comparison requirements\r\n * @param idTokenClaims\r\n * @returns\r\n */\r\nfunction getTenantIdFromIdTokenClaims(idTokenClaims) {\r\n if (idTokenClaims) {\r\n const tenantId = idTokenClaims.tid || idTokenClaims.tfp || idTokenClaims.acr;\r\n return tenantId || null;\r\n }\r\n return null;\r\n}\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * Type that defines required and optional parameters for an Account field (based on universal cache schema implemented by all MSALs).\r\n *\r\n * Key : Value Schema\r\n *\r\n * Key: --\r\n *\r\n * Value Schema:\r\n * {\r\n * homeAccountId: home account identifier for the auth scheme,\r\n * environment: entity that issued the token, represented as a full host\r\n * realm: Full tenant or organizational identifier that the account belongs to\r\n * localAccountId: Original tenant-specific accountID, usually used for legacy cases\r\n * username: primary username that represents the user, usually corresponds to preferred_username in the v2 endpt\r\n * authorityType: Accounts authority type as a string\r\n * name: Full name for the account, including given name and family name,\r\n * lastModificationTime: last time this entity was modified in the cache\r\n * lastModificationApp:\r\n * nativeAccountId: Account identifier on the native device\r\n * tenantProfiles: Array of tenant profile objects for each tenant that the account has authenticated with in the browser\r\n * }\r\n * @internal\r\n */\r\nclass AccountEntity {\r\n /**\r\n * Returns the AccountInfo interface for this account.\r\n */\r\n static getAccountInfo(accountEntity) {\r\n return {\r\n homeAccountId: accountEntity.homeAccountId,\r\n environment: accountEntity.environment,\r\n tenantId: accountEntity.realm,\r\n username: accountEntity.username,\r\n localAccountId: accountEntity.localAccountId,\r\n loginHint: accountEntity.loginHint,\r\n name: accountEntity.name,\r\n nativeAccountId: accountEntity.nativeAccountId,\r\n authorityType: accountEntity.authorityType,\r\n // Deserialize tenant profiles array into a Map\r\n tenantProfiles: new Map((accountEntity.tenantProfiles || []).map((tenantProfile) => {\r\n return [tenantProfile.tenantId, tenantProfile];\r\n })),\r\n dataBoundary: accountEntity.dataBoundary,\r\n };\r\n }\r\n /**\r\n * Returns true if the account entity is in single tenant format (outdated), false otherwise\r\n */\r\n isSingleTenant() {\r\n return !this.tenantProfiles;\r\n }\r\n /**\r\n * Build Account cache from IdToken, clientInfo and authority/policy. Associated with AAD.\r\n * @param accountDetails\r\n */\r\n static createAccount(accountDetails, authority, base64Decode) {\r\n const account = new AccountEntity();\r\n if (authority.authorityType === AuthorityType.Adfs) {\r\n account.authorityType = CacheAccountType.ADFS_ACCOUNT_TYPE;\r\n }\r\n else if (authority.protocolMode === ProtocolMode.OIDC) {\r\n account.authorityType = CacheAccountType.GENERIC_ACCOUNT_TYPE;\r\n }\r\n else {\r\n account.authorityType = CacheAccountType.MSSTS_ACCOUNT_TYPE;\r\n }\r\n let clientInfo;\r\n if (accountDetails.clientInfo && base64Decode) {\r\n clientInfo = buildClientInfo(accountDetails.clientInfo, base64Decode);\r\n if (clientInfo.xms_tdbr) {\r\n account.dataBoundary =\r\n clientInfo.xms_tdbr === \"EU\" ? \"EU\" : \"None\";\r\n }\r\n }\r\n account.clientInfo = accountDetails.clientInfo;\r\n account.homeAccountId = accountDetails.homeAccountId;\r\n account.nativeAccountId = accountDetails.nativeAccountId;\r\n const env = accountDetails.environment ||\r\n (authority && authority.getPreferredCache());\r\n if (!env) {\r\n throw createClientAuthError(invalidCacheEnvironment);\r\n }\r\n account.environment = env;\r\n // non AAD scenarios can have empty realm\r\n account.realm =\r\n clientInfo?.utid ||\r\n getTenantIdFromIdTokenClaims(accountDetails.idTokenClaims) ||\r\n \"\";\r\n // How do you account for MSA CID here?\r\n account.localAccountId =\r\n clientInfo?.uid ||\r\n accountDetails.idTokenClaims?.oid ||\r\n accountDetails.idTokenClaims?.sub ||\r\n \"\";\r\n /*\r\n * In B2C scenarios the emails claim is used instead of preferred_username and it is an array.\r\n * In most cases it will contain a single email. This field should not be relied upon if a custom\r\n * policy is configured to return more than 1 email.\r\n */\r\n const preferredUsername = accountDetails.idTokenClaims?.preferred_username ||\r\n accountDetails.idTokenClaims?.upn;\r\n const email = accountDetails.idTokenClaims?.emails\r\n ? accountDetails.idTokenClaims.emails[0]\r\n : null;\r\n account.username = preferredUsername || email || \"\";\r\n account.loginHint = accountDetails.idTokenClaims?.login_hint;\r\n account.name = accountDetails.idTokenClaims?.name || \"\";\r\n account.cloudGraphHostName = accountDetails.cloudGraphHostName;\r\n account.msGraphHost = accountDetails.msGraphHost;\r\n if (accountDetails.tenantProfiles) {\r\n account.tenantProfiles = accountDetails.tenantProfiles;\r\n }\r\n else {\r\n const tenantProfile = buildTenantProfile(accountDetails.homeAccountId, account.localAccountId, account.realm, accountDetails.idTokenClaims);\r\n account.tenantProfiles = [tenantProfile];\r\n }\r\n return account;\r\n }\r\n /**\r\n * Creates an AccountEntity object from AccountInfo\r\n * @param accountInfo\r\n * @param cloudGraphHostName\r\n * @param msGraphHost\r\n * @returns\r\n */\r\n static createFromAccountInfo(accountInfo, cloudGraphHostName, msGraphHost) {\r\n const account = new AccountEntity();\r\n account.authorityType =\r\n accountInfo.authorityType || CacheAccountType.GENERIC_ACCOUNT_TYPE;\r\n account.homeAccountId = accountInfo.homeAccountId;\r\n account.localAccountId = accountInfo.localAccountId;\r\n account.nativeAccountId = accountInfo.nativeAccountId;\r\n account.realm = accountInfo.tenantId;\r\n account.environment = accountInfo.environment;\r\n account.username = accountInfo.username;\r\n account.name = accountInfo.name;\r\n account.loginHint = accountInfo.loginHint;\r\n account.cloudGraphHostName = cloudGraphHostName;\r\n account.msGraphHost = msGraphHost;\r\n // Serialize tenant profiles map into an array\r\n account.tenantProfiles = Array.from(accountInfo.tenantProfiles?.values() || []);\r\n account.dataBoundary = accountInfo.dataBoundary;\r\n return account;\r\n }\r\n /**\r\n * Generate HomeAccountId from server response\r\n * @param serverClientInfo\r\n * @param authType\r\n */\r\n static generateHomeAccountId(serverClientInfo, authType, logger, cryptoObj, idTokenClaims) {\r\n // since ADFS/DSTS do not have tid and does not set client_info\r\n if (!(authType === AuthorityType.Adfs ||\r\n authType === AuthorityType.Dsts)) {\r\n // for cases where there is clientInfo\r\n if (serverClientInfo) {\r\n try {\r\n const clientInfo = buildClientInfo(serverClientInfo, cryptoObj.base64Decode);\r\n if (clientInfo.uid && clientInfo.utid) {\r\n return `${clientInfo.uid}.${clientInfo.utid}`;\r\n }\r\n }\r\n catch (e) { }\r\n }\r\n logger.warning(\"No client info in response\");\r\n }\r\n // default to \"sub\" claim\r\n return idTokenClaims?.sub || \"\";\r\n }\r\n /**\r\n * Validates an entity: checks for all expected params\r\n * @param entity\r\n */\r\n static isAccountEntity(entity) {\r\n if (!entity) {\r\n return false;\r\n }\r\n return (entity.hasOwnProperty(\"homeAccountId\") &&\r\n entity.hasOwnProperty(\"environment\") &&\r\n entity.hasOwnProperty(\"realm\") &&\r\n entity.hasOwnProperty(\"localAccountId\") &&\r\n entity.hasOwnProperty(\"username\") &&\r\n entity.hasOwnProperty(\"authorityType\"));\r\n }\r\n /**\r\n * Helper function to determine whether 2 accountInfo objects represent the same account\r\n * @param accountA\r\n * @param accountB\r\n * @param compareClaims - If set to true idTokenClaims will also be compared to determine account equality\r\n */\r\n static accountInfoIsEqual(accountA, accountB, compareClaims) {\r\n if (!accountA || !accountB) {\r\n return false;\r\n }\r\n let claimsMatch = true; // default to true so as to not fail comparison below if compareClaims: false\r\n if (compareClaims) {\r\n const accountAClaims = (accountA.idTokenClaims ||\r\n {});\r\n const accountBClaims = (accountB.idTokenClaims ||\r\n {});\r\n // issued at timestamp and nonce are expected to change each time a new id token is acquired\r\n claimsMatch =\r\n accountAClaims.iat === accountBClaims.iat &&\r\n accountAClaims.nonce === accountBClaims.nonce;\r\n }\r\n return (accountA.homeAccountId === accountB.homeAccountId &&\r\n accountA.localAccountId === accountB.localAccountId &&\r\n accountA.username === accountB.username &&\r\n accountA.tenantId === accountB.tenantId &&\r\n accountA.loginHint === accountB.loginHint &&\r\n accountA.environment === accountB.environment &&\r\n accountA.nativeAccountId === accountB.nativeAccountId &&\r\n claimsMatch);\r\n }\r\n}\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nconst cacheQuotaExceeded = \"cache_quota_exceeded\";\r\nconst cacheErrorUnknown = \"cache_error_unknown\";\n\nvar CacheErrorCodes = /*#__PURE__*/Object.freeze({\n __proto__: null,\n cacheErrorUnknown: cacheErrorUnknown,\n cacheQuotaExceeded: cacheQuotaExceeded\n});\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nconst CacheErrorMessages = {\r\n [cacheQuotaExceeded]: \"Exceeded cache storage capacity.\",\r\n [cacheErrorUnknown]: \"Unexpected error occurred when using cache storage.\",\r\n};\r\n/**\r\n * Error thrown when there is an error with the cache\r\n */\r\nclass CacheError extends AuthError {\r\n constructor(errorCode, errorMessage) {\r\n const message = errorMessage ||\r\n (CacheErrorMessages[errorCode]\r\n ? CacheErrorMessages[errorCode]\r\n : CacheErrorMessages[cacheErrorUnknown]);\r\n super(`${errorCode}: ${message}`);\r\n Object.setPrototypeOf(this, CacheError.prototype);\r\n this.name = \"CacheError\";\r\n this.errorCode = errorCode;\r\n this.errorMessage = message;\r\n }\r\n}\r\n/**\r\n * Helper function to wrap browser errors in a CacheError object\r\n * @param e\r\n * @returns\r\n */\r\nfunction createCacheError(e) {\r\n if (!(e instanceof Error)) {\r\n return new CacheError(cacheErrorUnknown);\r\n }\r\n if (e.name === \"QuotaExceededError\" ||\r\n e.name === \"NS_ERROR_DOM_QUOTA_REACHED\" ||\r\n e.message.includes(\"exceeded the quota\")) {\r\n return new CacheError(cacheQuotaExceeded);\r\n }\r\n else {\r\n return new CacheError(e.name, e.message);\r\n }\r\n}\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * Interface class which implement cache storage functions used by MSAL to perform validity checks, and store tokens.\r\n * @internal\r\n */\r\nclass CacheManager {\r\n constructor(clientId, cryptoImpl, logger, performanceClient, staticAuthorityOptions) {\r\n this.clientId = clientId;\r\n this.cryptoImpl = cryptoImpl;\r\n this.commonLogger = logger.clone(name, version);\r\n this.staticAuthorityOptions = staticAuthorityOptions;\r\n this.performanceClient = performanceClient;\r\n }\r\n /**\r\n * Returns all the accounts in the cache that match the optional filter. If no filter is provided, all accounts are returned.\r\n * @param accountFilter - (Optional) filter to narrow down the accounts returned\r\n * @returns Array of AccountInfo objects in cache\r\n */\r\n getAllAccounts(accountFilter, correlationId) {\r\n return this.buildTenantProfiles(this.getAccountsFilteredBy(accountFilter, correlationId), correlationId, accountFilter);\r\n }\r\n /**\r\n * Gets first tenanted AccountInfo object found based on provided filters\r\n */\r\n getAccountInfoFilteredBy(accountFilter, correlationId) {\r\n if (Object.keys(accountFilter).length === 0 ||\r\n Object.values(accountFilter).every((value) => !value)) {\r\n this.commonLogger.warning(\"getAccountInfoFilteredBy: Account filter is empty or invalid, returning null\");\r\n return null;\r\n }\r\n const allAccounts = this.getAllAccounts(accountFilter, correlationId);\r\n if (allAccounts.length > 1) {\r\n // If one or more accounts are found, prioritize accounts that have an ID token\r\n const sortedAccounts = allAccounts.sort((account) => {\r\n return account.idTokenClaims ? -1 : 1;\r\n });\r\n return sortedAccounts[0];\r\n }\r\n else if (allAccounts.length === 1) {\r\n // If only one account is found, return it regardless of whether a matching ID token was found\r\n return allAccounts[0];\r\n }\r\n else {\r\n return null;\r\n }\r\n }\r\n /**\r\n * Returns a single matching\r\n * @param accountFilter\r\n * @returns\r\n */\r\n getBaseAccountInfo(accountFilter, correlationId) {\r\n const accountEntities = this.getAccountsFilteredBy(accountFilter, correlationId);\r\n if (accountEntities.length > 0) {\r\n return AccountEntity.getAccountInfo(accountEntities[0]);\r\n }\r\n else {\r\n return null;\r\n }\r\n }\r\n /**\r\n * Matches filtered account entities with cached ID tokens that match the tenant profile-specific account filters\r\n * and builds the account info objects from the matching ID token's claims\r\n * @param cachedAccounts\r\n * @param accountFilter\r\n * @returns Array of AccountInfo objects that match account and tenant profile filters\r\n */\r\n buildTenantProfiles(cachedAccounts, correlationId, accountFilter) {\r\n return cachedAccounts.flatMap((accountEntity) => {\r\n return this.getTenantProfilesFromAccountEntity(accountEntity, correlationId, accountFilter?.tenantId, accountFilter);\r\n });\r\n }\r\n getTenantedAccountInfoByFilter(accountInfo, tokenKeys, tenantProfile, correlationId, tenantProfileFilter) {\r\n let tenantedAccountInfo = null;\r\n let idTokenClaims;\r\n if (tenantProfileFilter) {\r\n if (!this.tenantProfileMatchesFilter(tenantProfile, tenantProfileFilter)) {\r\n return null;\r\n }\r\n }\r\n const idToken = this.getIdToken(accountInfo, correlationId, tokenKeys, tenantProfile.tenantId);\r\n if (idToken) {\r\n idTokenClaims = extractTokenClaims(idToken.secret, this.cryptoImpl.base64Decode);\r\n if (!this.idTokenClaimsMatchTenantProfileFilter(idTokenClaims, tenantProfileFilter)) {\r\n // ID token sourced claims don't match so this tenant profile is not a match\r\n return null;\r\n }\r\n }\r\n // Expand tenant profile into account info based on matching tenant profile and if available matching ID token claims\r\n tenantedAccountInfo = updateAccountTenantProfileData(accountInfo, tenantProfile, idTokenClaims, idToken?.secret);\r\n return tenantedAccountInfo;\r\n }\r\n getTenantProfilesFromAccountEntity(accountEntity, correlationId, targetTenantId, tenantProfileFilter) {\r\n const accountInfo = AccountEntity.getAccountInfo(accountEntity);\r\n let searchTenantProfiles = accountInfo.tenantProfiles || new Map();\r\n const tokenKeys = this.getTokenKeys();\r\n // If a tenant ID was provided, only return the tenant profile for that tenant ID if it exists\r\n if (targetTenantId) {\r\n const tenantProfile = searchTenantProfiles.get(targetTenantId);\r\n if (tenantProfile) {\r\n // Reduce search field to just this tenant profile\r\n searchTenantProfiles = new Map([\r\n [targetTenantId, tenantProfile],\r\n ]);\r\n }\r\n else {\r\n // No tenant profile for search tenant ID, return empty array\r\n return [];\r\n }\r\n }\r\n const matchingTenantProfiles = [];\r\n searchTenantProfiles.forEach((tenantProfile) => {\r\n const tenantedAccountInfo = this.getTenantedAccountInfoByFilter(accountInfo, tokenKeys, tenantProfile, correlationId, tenantProfileFilter);\r\n if (tenantedAccountInfo) {\r\n matchingTenantProfiles.push(tenantedAccountInfo);\r\n }\r\n });\r\n return matchingTenantProfiles;\r\n }\r\n tenantProfileMatchesFilter(tenantProfile, tenantProfileFilter) {\r\n if (!!tenantProfileFilter.localAccountId &&\r\n !this.matchLocalAccountIdFromTenantProfile(tenantProfile, tenantProfileFilter.localAccountId)) {\r\n return false;\r\n }\r\n if (!!tenantProfileFilter.name &&\r\n !(tenantProfile.name === tenantProfileFilter.name)) {\r\n return false;\r\n }\r\n if (tenantProfileFilter.isHomeTenant !== undefined &&\r\n !(tenantProfile.isHomeTenant === tenantProfileFilter.isHomeTenant)) {\r\n return false;\r\n }\r\n return true;\r\n }\r\n idTokenClaimsMatchTenantProfileFilter(idTokenClaims, tenantProfileFilter) {\r\n // Tenant Profile filtering\r\n if (tenantProfileFilter) {\r\n if (!!tenantProfileFilter.localAccountId &&\r\n !this.matchLocalAccountIdFromTokenClaims(idTokenClaims, tenantProfileFilter.localAccountId)) {\r\n return false;\r\n }\r\n if (!!tenantProfileFilter.loginHint &&\r\n !this.matchLoginHintFromTokenClaims(idTokenClaims, tenantProfileFilter.loginHint)) {\r\n return false;\r\n }\r\n if (!!tenantProfileFilter.username &&\r\n !this.matchUsername(idTokenClaims.preferred_username, tenantProfileFilter.username)) {\r\n return false;\r\n }\r\n if (!!tenantProfileFilter.name &&\r\n !this.matchName(idTokenClaims, tenantProfileFilter.name)) {\r\n return false;\r\n }\r\n if (!!tenantProfileFilter.sid &&\r\n !this.matchSid(idTokenClaims, tenantProfileFilter.sid)) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n }\r\n /**\r\n * saves a cache record\r\n * @param cacheRecord {CacheRecord}\r\n * @param correlationId {?string} correlation id\r\n * @param kmsi - Keep Me Signed In\r\n * @param storeInCache {?StoreInCache}\r\n */\r\n async saveCacheRecord(cacheRecord, correlationId, kmsi, storeInCache) {\r\n if (!cacheRecord) {\r\n throw createClientAuthError(invalidCacheRecord);\r\n }\r\n try {\r\n if (!!cacheRecord.account) {\r\n await this.setAccount(cacheRecord.account, correlationId, kmsi);\r\n }\r\n if (!!cacheRecord.idToken && storeInCache?.idToken !== false) {\r\n await this.setIdTokenCredential(cacheRecord.idToken, correlationId, kmsi);\r\n }\r\n if (!!cacheRecord.accessToken &&\r\n storeInCache?.accessToken !== false) {\r\n await this.saveAccessToken(cacheRecord.accessToken, correlationId, kmsi);\r\n }\r\n if (!!cacheRecord.refreshToken &&\r\n storeInCache?.refreshToken !== false) {\r\n await this.setRefreshTokenCredential(cacheRecord.refreshToken, correlationId, kmsi);\r\n }\r\n if (!!cacheRecord.appMetadata) {\r\n this.setAppMetadata(cacheRecord.appMetadata, correlationId);\r\n }\r\n }\r\n catch (e) {\r\n this.commonLogger?.error(`CacheManager.saveCacheRecord: failed`);\r\n if (e instanceof AuthError) {\r\n throw e;\r\n }\r\n else {\r\n throw createCacheError(e);\r\n }\r\n }\r\n }\r\n /**\r\n * saves access token credential\r\n * @param credential\r\n */\r\n async saveAccessToken(credential, correlationId, kmsi) {\r\n const accessTokenFilter = {\r\n clientId: credential.clientId,\r\n credentialType: credential.credentialType,\r\n environment: credential.environment,\r\n homeAccountId: credential.homeAccountId,\r\n realm: credential.realm,\r\n tokenType: credential.tokenType,\r\n requestedClaimsHash: credential.requestedClaimsHash,\r\n };\r\n const tokenKeys = this.getTokenKeys();\r\n const currentScopes = ScopeSet.fromString(credential.target);\r\n tokenKeys.accessToken.forEach((key) => {\r\n if (!this.accessTokenKeyMatchesFilter(key, accessTokenFilter, false)) {\r\n return;\r\n }\r\n const tokenEntity = this.getAccessTokenCredential(key, correlationId);\r\n if (tokenEntity &&\r\n this.credentialMatchesFilter(tokenEntity, accessTokenFilter)) {\r\n const tokenScopeSet = ScopeSet.fromString(tokenEntity.target);\r\n if (tokenScopeSet.intersectingScopeSets(currentScopes)) {\r\n this.removeAccessToken(key, correlationId);\r\n }\r\n }\r\n });\r\n await this.setAccessTokenCredential(credential, correlationId, kmsi);\r\n }\r\n /**\r\n * Retrieve account entities matching all provided tenant-agnostic filters; if no filter is set, get all account entities in the cache\r\n * Not checking for casing as keys are all generated in lower case, remember to convert to lower case if object properties are compared\r\n * @param accountFilter - An object containing Account properties to filter by\r\n */\r\n getAccountsFilteredBy(accountFilter, correlationId) {\r\n const allAccountKeys = this.getAccountKeys();\r\n const matchingAccounts = [];\r\n allAccountKeys.forEach((cacheKey) => {\r\n const entity = this.getAccount(cacheKey, correlationId);\r\n // Match base account fields\r\n if (!entity) {\r\n return;\r\n }\r\n if (!!accountFilter.homeAccountId &&\r\n !this.matchHomeAccountId(entity, accountFilter.homeAccountId)) {\r\n return;\r\n }\r\n if (!!accountFilter.username &&\r\n !this.matchUsername(entity.username, accountFilter.username)) {\r\n return;\r\n }\r\n if (!!accountFilter.environment &&\r\n !this.matchEnvironment(entity, accountFilter.environment)) {\r\n return;\r\n }\r\n if (!!accountFilter.realm &&\r\n !this.matchRealm(entity, accountFilter.realm)) {\r\n return;\r\n }\r\n if (!!accountFilter.nativeAccountId &&\r\n !this.matchNativeAccountId(entity, accountFilter.nativeAccountId)) {\r\n return;\r\n }\r\n if (!!accountFilter.authorityType &&\r\n !this.matchAuthorityType(entity, accountFilter.authorityType)) {\r\n return;\r\n }\r\n // If at least one tenant profile matches the tenant profile filter, add the account to the list of matching accounts\r\n const tenantProfileFilter = {\r\n localAccountId: accountFilter?.localAccountId,\r\n name: accountFilter?.name,\r\n };\r\n const matchingTenantProfiles = entity.tenantProfiles?.filter((tenantProfile) => {\r\n return this.tenantProfileMatchesFilter(tenantProfile, tenantProfileFilter);\r\n });\r\n if (matchingTenantProfiles && matchingTenantProfiles.length === 0) {\r\n // No tenant profile for this account matches filter, don't add to list of matching accounts\r\n return;\r\n }\r\n matchingAccounts.push(entity);\r\n });\r\n return matchingAccounts;\r\n }\r\n /**\r\n * Returns whether or not the given credential entity matches the filter\r\n * @param entity\r\n * @param filter\r\n * @returns\r\n */\r\n credentialMatchesFilter(entity, filter) {\r\n if (!!filter.clientId && !this.matchClientId(entity, filter.clientId)) {\r\n return false;\r\n }\r\n if (!!filter.userAssertionHash &&\r\n !this.matchUserAssertionHash(entity, filter.userAssertionHash)) {\r\n return false;\r\n }\r\n /*\r\n * homeAccountId can be undefined, and we want to filter out cached items that have a homeAccountId of \"\"\r\n * because we don't want a client_credential request to return a cached token that has a homeAccountId\r\n */\r\n if (typeof filter.homeAccountId === \"string\" &&\r\n !this.matchHomeAccountId(entity, filter.homeAccountId)) {\r\n return false;\r\n }\r\n if (!!filter.environment &&\r\n !this.matchEnvironment(entity, filter.environment)) {\r\n return false;\r\n }\r\n if (!!filter.realm && !this.matchRealm(entity, filter.realm)) {\r\n return false;\r\n }\r\n if (!!filter.credentialType &&\r\n !this.matchCredentialType(entity, filter.credentialType)) {\r\n return false;\r\n }\r\n if (!!filter.familyId && !this.matchFamilyId(entity, filter.familyId)) {\r\n return false;\r\n }\r\n /*\r\n * idTokens do not have \"target\", target specific refreshTokens do exist for some types of authentication\r\n * Resource specific refresh tokens case will be added when the support is deemed necessary\r\n */\r\n if (!!filter.target && !this.matchTarget(entity, filter.target)) {\r\n return false;\r\n }\r\n // If request OR cached entity has requested Claims Hash, check if they match\r\n if (filter.requestedClaimsHash || entity.requestedClaimsHash) {\r\n // Don't match if either is undefined or they are different\r\n if (entity.requestedClaimsHash !== filter.requestedClaimsHash) {\r\n return false;\r\n }\r\n }\r\n // Access Token with Auth Scheme specific matching\r\n if (entity.credentialType ===\r\n CredentialType.ACCESS_TOKEN_WITH_AUTH_SCHEME) {\r\n if (!!filter.tokenType &&\r\n !this.matchTokenType(entity, filter.tokenType)) {\r\n return false;\r\n }\r\n // KeyId (sshKid) in request must match cached SSH certificate keyId because SSH cert is bound to a specific key\r\n if (filter.tokenType === AuthenticationScheme.SSH) {\r\n if (filter.keyId && !this.matchKeyId(entity, filter.keyId)) {\r\n return false;\r\n }\r\n }\r\n }\r\n return true;\r\n }\r\n /**\r\n * retrieve appMetadata matching all provided filters; if no filter is set, get all appMetadata\r\n * @param filter\r\n */\r\n getAppMetadataFilteredBy(filter) {\r\n const allCacheKeys = this.getKeys();\r\n const matchingAppMetadata = {};\r\n allCacheKeys.forEach((cacheKey) => {\r\n // don't parse any non-appMetadata type cache entities\r\n if (!this.isAppMetadata(cacheKey)) {\r\n return;\r\n }\r\n // Attempt retrieval\r\n const entity = this.getAppMetadata(cacheKey);\r\n if (!entity) {\r\n return;\r\n }\r\n if (!!filter.environment &&\r\n !this.matchEnvironment(entity, filter.environment)) {\r\n return;\r\n }\r\n if (!!filter.clientId &&\r\n !this.matchClientId(entity, filter.clientId)) {\r\n return;\r\n }\r\n matchingAppMetadata[cacheKey] = entity;\r\n });\r\n return matchingAppMetadata;\r\n }\r\n /**\r\n * retrieve authorityMetadata that contains a matching alias\r\n * @param filter\r\n */\r\n getAuthorityMetadataByAlias(host) {\r\n const allCacheKeys = this.getAuthorityMetadataKeys();\r\n let matchedEntity = null;\r\n allCacheKeys.forEach((cacheKey) => {\r\n // don't parse any non-authorityMetadata type cache entities\r\n if (!this.isAuthorityMetadata(cacheKey) ||\r\n cacheKey.indexOf(this.clientId) === -1) {\r\n return;\r\n }\r\n // Attempt retrieval\r\n const entity = this.getAuthorityMetadata(cacheKey);\r\n if (!entity) {\r\n return;\r\n }\r\n if (entity.aliases.indexOf(host) === -1) {\r\n return;\r\n }\r\n matchedEntity = entity;\r\n });\r\n return matchedEntity;\r\n }\r\n /**\r\n * Removes all accounts and related tokens from cache.\r\n */\r\n removeAllAccounts(correlationId) {\r\n const accounts = this.getAllAccounts({}, correlationId);\r\n accounts.forEach((account) => {\r\n this.removeAccount(account, correlationId);\r\n });\r\n }\r\n /**\r\n * Removes the account and related tokens for a given account key\r\n * @param account\r\n */\r\n removeAccount(account, correlationId) {\r\n this.removeAccountContext(account, correlationId);\r\n const accountKeys = this.getAccountKeys();\r\n const keyFilter = (key) => {\r\n return (key.includes(account.homeAccountId) &&\r\n key.includes(account.environment));\r\n };\r\n accountKeys.filter(keyFilter).forEach((key) => {\r\n this.removeItem(key, correlationId);\r\n this.performanceClient.incrementFields({ accountsRemoved: 1 }, correlationId);\r\n });\r\n }\r\n /**\r\n * Removes credentials associated with the provided account\r\n * @param account\r\n */\r\n removeAccountContext(account, correlationId) {\r\n const allTokenKeys = this.getTokenKeys();\r\n const keyFilter = (key) => {\r\n return (key.includes(account.homeAccountId) &&\r\n key.includes(account.environment));\r\n };\r\n allTokenKeys.idToken.filter(keyFilter).forEach((key) => {\r\n this.removeIdToken(key, correlationId);\r\n });\r\n allTokenKeys.accessToken.filter(keyFilter).forEach((key) => {\r\n this.removeAccessToken(key, correlationId);\r\n });\r\n allTokenKeys.refreshToken.filter(keyFilter).forEach((key) => {\r\n this.removeRefreshToken(key, correlationId);\r\n });\r\n }\r\n /**\r\n * Removes accessToken from the cache\r\n * @param key\r\n * @param correlationId\r\n */\r\n removeAccessToken(key, correlationId) {\r\n const credential = this.getAccessTokenCredential(key, correlationId);\r\n this.removeItem(key, correlationId);\r\n this.performanceClient.incrementFields({ accessTokensRemoved: 1 }, correlationId);\r\n if (!credential ||\r\n credential.credentialType.toLowerCase() !==\r\n CredentialType.ACCESS_TOKEN_WITH_AUTH_SCHEME.toLowerCase() ||\r\n credential.tokenType !== AuthenticationScheme.POP) {\r\n // If the credential is not a PoP token, we can return\r\n return;\r\n }\r\n // Remove Token Binding Key from key store for PoP Tokens Credentials\r\n const kid = credential.keyId;\r\n if (kid) {\r\n void this.cryptoImpl.removeTokenBindingKey(kid).catch(() => {\r\n this.commonLogger.error(`Failed to remove token binding key ${kid}`, correlationId);\r\n this.performanceClient?.incrementFields({ removeTokenBindingKeyFailure: 1 }, correlationId);\r\n });\r\n }\r\n }\r\n /**\r\n * Removes all app metadata objects from cache.\r\n */\r\n removeAppMetadata(correlationId) {\r\n const allCacheKeys = this.getKeys();\r\n allCacheKeys.forEach((cacheKey) => {\r\n if (this.isAppMetadata(cacheKey)) {\r\n this.removeItem(cacheKey, correlationId);\r\n }\r\n });\r\n return true;\r\n }\r\n /**\r\n * Retrieve IdTokenEntity from cache\r\n * @param account {AccountInfo}\r\n * @param tokenKeys {?TokenKeys}\r\n * @param targetRealm {?string}\r\n * @param performanceClient {?IPerformanceClient}\r\n * @param correlationId {?string}\r\n */\r\n getIdToken(account, correlationId, tokenKeys, targetRealm, performanceClient) {\r\n this.commonLogger.trace(\"CacheManager - getIdToken called\");\r\n const idTokenFilter = {\r\n homeAccountId: account.homeAccountId,\r\n environment: account.environment,\r\n credentialType: CredentialType.ID_TOKEN,\r\n clientId: this.clientId,\r\n realm: targetRealm,\r\n };\r\n const idTokenMap = this.getIdTokensByFilter(idTokenFilter, correlationId, tokenKeys);\r\n const numIdTokens = idTokenMap.size;\r\n if (numIdTokens < 1) {\r\n this.commonLogger.info(\"CacheManager:getIdToken - No token found\");\r\n return null;\r\n }\r\n else if (numIdTokens > 1) {\r\n let tokensToBeRemoved = idTokenMap;\r\n // Multiple tenant profiles and no tenant specified, pick home account\r\n if (!targetRealm) {\r\n const homeIdTokenMap = new Map();\r\n idTokenMap.forEach((idToken, key) => {\r\n if (idToken.realm === account.tenantId) {\r\n homeIdTokenMap.set(key, idToken);\r\n }\r\n });\r\n const numHomeIdTokens = homeIdTokenMap.size;\r\n if (numHomeIdTokens < 1) {\r\n this.commonLogger.info(\"CacheManager:getIdToken - Multiple ID tokens found for account but none match account entity tenant id, returning first result\");\r\n return idTokenMap.values().next().value;\r\n }\r\n else if (numHomeIdTokens === 1) {\r\n this.commonLogger.info(\"CacheManager:getIdToken - Multiple ID tokens found for account, defaulting to home tenant profile\");\r\n return homeIdTokenMap.values().next().value;\r\n }\r\n else {\r\n // Multiple ID tokens for home tenant profile, remove all and return null\r\n tokensToBeRemoved = homeIdTokenMap;\r\n }\r\n }\r\n // Multiple tokens for a single tenant profile, remove all and return null\r\n this.commonLogger.info(\"CacheManager:getIdToken - Multiple matching ID tokens found, clearing them\");\r\n tokensToBeRemoved.forEach((idToken, key) => {\r\n this.removeIdToken(key, correlationId);\r\n });\r\n if (performanceClient && correlationId) {\r\n performanceClient.addFields({ multiMatchedID: idTokenMap.size }, correlationId);\r\n }\r\n return null;\r\n }\r\n this.commonLogger.info(\"CacheManager:getIdToken - Returning ID token\");\r\n return idTokenMap.values().next().value;\r\n }\r\n /**\r\n * Gets all idTokens matching the given filter\r\n * @param filter\r\n * @returns\r\n */\r\n getIdTokensByFilter(filter, correlationId, tokenKeys) {\r\n const idTokenKeys = (tokenKeys && tokenKeys.idToken) || this.getTokenKeys().idToken;\r\n const idTokens = new Map();\r\n idTokenKeys.forEach((key) => {\r\n if (!this.idTokenKeyMatchesFilter(key, {\r\n clientId: this.clientId,\r\n ...filter,\r\n })) {\r\n return;\r\n }\r\n const idToken = this.getIdTokenCredential(key, correlationId);\r\n if (idToken && this.credentialMatchesFilter(idToken, filter)) {\r\n idTokens.set(key, idToken);\r\n }\r\n });\r\n return idTokens;\r\n }\r\n /**\r\n * Validate the cache key against filter before retrieving and parsing cache value\r\n * @param key\r\n * @param filter\r\n * @returns\r\n */\r\n idTokenKeyMatchesFilter(inputKey, filter) {\r\n const key = inputKey.toLowerCase();\r\n if (filter.clientId &&\r\n key.indexOf(filter.clientId.toLowerCase()) === -1) {\r\n return false;\r\n }\r\n if (filter.homeAccountId &&\r\n key.indexOf(filter.homeAccountId.toLowerCase()) === -1) {\r\n return false;\r\n }\r\n return true;\r\n }\r\n /**\r\n * Removes idToken from the cache\r\n * @param key\r\n */\r\n removeIdToken(key, correlationId) {\r\n this.removeItem(key, correlationId);\r\n }\r\n /**\r\n * Removes refresh token from the cache\r\n * @param key\r\n */\r\n removeRefreshToken(key, correlationId) {\r\n this.removeItem(key, correlationId);\r\n }\r\n /**\r\n * Retrieve AccessTokenEntity from cache\r\n * @param account {AccountInfo}\r\n * @param request {BaseAuthRequest}\r\n * @param correlationId {?string}\r\n * @param tokenKeys {?TokenKeys}\r\n * @param performanceClient {?IPerformanceClient}\r\n */\r\n getAccessToken(account, request, tokenKeys, targetRealm) {\r\n const correlationId = request.correlationId;\r\n this.commonLogger.trace(\"CacheManager - getAccessToken called\", correlationId);\r\n const scopes = ScopeSet.createSearchScopes(request.scopes);\r\n const authScheme = request.authenticationScheme || AuthenticationScheme.BEARER;\r\n /*\r\n * Distinguish between Bearer and PoP/SSH token cache types\r\n * Cast to lowercase to handle \"bearer\" from ADFS\r\n */\r\n const credentialType = authScheme &&\r\n authScheme.toLowerCase() !==\r\n AuthenticationScheme.BEARER.toLowerCase()\r\n ? CredentialType.ACCESS_TOKEN_WITH_AUTH_SCHEME\r\n : CredentialType.ACCESS_TOKEN;\r\n const accessTokenFilter = {\r\n homeAccountId: account.homeAccountId,\r\n environment: account.environment,\r\n credentialType: credentialType,\r\n clientId: this.clientId,\r\n realm: targetRealm || account.tenantId,\r\n target: scopes,\r\n tokenType: authScheme,\r\n keyId: request.sshKid,\r\n requestedClaimsHash: request.requestedClaimsHash,\r\n };\r\n const accessTokenKeys = (tokenKeys && tokenKeys.accessToken) ||\r\n this.getTokenKeys().accessToken;\r\n const accessTokens = [];\r\n accessTokenKeys.forEach((key) => {\r\n // Validate key\r\n if (this.accessTokenKeyMatchesFilter(key, accessTokenFilter, true)) {\r\n const accessToken = this.getAccessTokenCredential(key, correlationId);\r\n // Validate value\r\n if (accessToken &&\r\n this.credentialMatchesFilter(accessToken, accessTokenFilter)) {\r\n accessTokens.push(accessToken);\r\n }\r\n }\r\n });\r\n const numAccessTokens = accessTokens.length;\r\n if (numAccessTokens < 1) {\r\n this.commonLogger.info(\"CacheManager:getAccessToken - No token found\", correlationId);\r\n return null;\r\n }\r\n else if (numAccessTokens > 1) {\r\n this.commonLogger.info(\"CacheManager:getAccessToken - Multiple access tokens found, clearing them\", correlationId);\r\n accessTokens.forEach((accessToken) => {\r\n this.removeAccessToken(this.generateCredentialKey(accessToken), correlationId);\r\n });\r\n this.performanceClient.addFields({ multiMatchedAT: accessTokens.length }, correlationId);\r\n return null;\r\n }\r\n this.commonLogger.info(\"CacheManager:getAccessToken - Returning access token\", correlationId);\r\n return accessTokens[0];\r\n }\r\n /**\r\n * Validate the cache key against filter before retrieving and parsing cache value\r\n * @param key\r\n * @param filter\r\n * @param keyMustContainAllScopes\r\n * @returns\r\n */\r\n accessTokenKeyMatchesFilter(inputKey, filter, keyMustContainAllScopes) {\r\n const key = inputKey.toLowerCase();\r\n if (filter.clientId &&\r\n key.indexOf(filter.clientId.toLowerCase()) === -1) {\r\n return false;\r\n }\r\n if (filter.homeAccountId &&\r\n key.indexOf(filter.homeAccountId.toLowerCase()) === -1) {\r\n return false;\r\n }\r\n if (filter.realm && key.indexOf(filter.realm.toLowerCase()) === -1) {\r\n return false;\r\n }\r\n if (filter.requestedClaimsHash &&\r\n key.indexOf(filter.requestedClaimsHash.toLowerCase()) === -1) {\r\n return false;\r\n }\r\n if (filter.target) {\r\n const scopes = filter.target.asArray();\r\n for (let i = 0; i < scopes.length; i++) {\r\n if (keyMustContainAllScopes &&\r\n !key.includes(scopes[i].toLowerCase())) {\r\n // When performing a cache lookup a missing scope would be a cache miss\r\n return false;\r\n }\r\n else if (!keyMustContainAllScopes &&\r\n key.includes(scopes[i].toLowerCase())) {\r\n // When performing a cache write, any token with a subset of requested scopes should be replaced\r\n return true;\r\n }\r\n }\r\n }\r\n return true;\r\n }\r\n /**\r\n * Gets all access tokens matching the filter\r\n * @param filter\r\n * @returns\r\n */\r\n getAccessTokensByFilter(filter, correlationId) {\r\n const tokenKeys = this.getTokenKeys();\r\n const accessTokens = [];\r\n tokenKeys.accessToken.forEach((key) => {\r\n if (!this.accessTokenKeyMatchesFilter(key, filter, true)) {\r\n return;\r\n }\r\n const accessToken = this.getAccessTokenCredential(key, correlationId);\r\n if (accessToken &&\r\n this.credentialMatchesFilter(accessToken, filter)) {\r\n accessTokens.push(accessToken);\r\n }\r\n });\r\n return accessTokens;\r\n }\r\n /**\r\n * Helper to retrieve the appropriate refresh token from cache\r\n * @param account {AccountInfo}\r\n * @param familyRT {boolean}\r\n * @param correlationId {?string}\r\n * @param tokenKeys {?TokenKeys}\r\n * @param performanceClient {?IPerformanceClient}\r\n */\r\n getRefreshToken(account, familyRT, correlationId, tokenKeys, performanceClient) {\r\n this.commonLogger.trace(\"CacheManager - getRefreshToken called\");\r\n const id = familyRT ? THE_FAMILY_ID : undefined;\r\n const refreshTokenFilter = {\r\n homeAccountId: account.homeAccountId,\r\n environment: account.environment,\r\n credentialType: CredentialType.REFRESH_TOKEN,\r\n clientId: this.clientId,\r\n familyId: id,\r\n };\r\n const refreshTokenKeys = (tokenKeys && tokenKeys.refreshToken) ||\r\n this.getTokenKeys().refreshToken;\r\n const refreshTokens = [];\r\n refreshTokenKeys.forEach((key) => {\r\n // Validate key\r\n if (this.refreshTokenKeyMatchesFilter(key, refreshTokenFilter)) {\r\n const refreshToken = this.getRefreshTokenCredential(key, correlationId);\r\n // Validate value\r\n if (refreshToken &&\r\n this.credentialMatchesFilter(refreshToken, refreshTokenFilter)) {\r\n refreshTokens.push(refreshToken);\r\n }\r\n }\r\n });\r\n const numRefreshTokens = refreshTokens.length;\r\n if (numRefreshTokens < 1) {\r\n this.commonLogger.info(\"CacheManager:getRefreshToken - No refresh token found.\");\r\n return null;\r\n }\r\n // address the else case after remove functions address environment aliases\r\n if (numRefreshTokens > 1 && performanceClient && correlationId) {\r\n performanceClient.addFields({ multiMatchedRT: numRefreshTokens }, correlationId);\r\n }\r\n this.commonLogger.info(\"CacheManager:getRefreshToken - returning refresh token\");\r\n return refreshTokens[0];\r\n }\r\n /**\r\n * Validate the cache key against filter before retrieving and parsing cache value\r\n * @param key\r\n * @param filter\r\n */\r\n refreshTokenKeyMatchesFilter(inputKey, filter) {\r\n const key = inputKey.toLowerCase();\r\n if (filter.familyId &&\r\n key.indexOf(filter.familyId.toLowerCase()) === -1) {\r\n return false;\r\n }\r\n // If familyId is used, clientId is not in the key\r\n if (!filter.familyId &&\r\n filter.clientId &&\r\n key.indexOf(filter.clientId.toLowerCase()) === -1) {\r\n return false;\r\n }\r\n if (filter.homeAccountId &&\r\n key.indexOf(filter.homeAccountId.toLowerCase()) === -1) {\r\n return false;\r\n }\r\n return true;\r\n }\r\n /**\r\n * Retrieve AppMetadataEntity from cache\r\n */\r\n readAppMetadataFromCache(environment) {\r\n const appMetadataFilter = {\r\n environment,\r\n clientId: this.clientId,\r\n };\r\n const appMetadata = this.getAppMetadataFilteredBy(appMetadataFilter);\r\n const appMetadataEntries = Object.keys(appMetadata).map((key) => appMetadata[key]);\r\n const numAppMetadata = appMetadataEntries.length;\r\n if (numAppMetadata < 1) {\r\n return null;\r\n }\r\n else if (numAppMetadata > 1) {\r\n throw createClientAuthError(multipleMatchingAppMetadata);\r\n }\r\n return appMetadataEntries[0];\r\n }\r\n /**\r\n * Return the family_id value associated with FOCI\r\n * @param environment\r\n * @param clientId\r\n */\r\n isAppMetadataFOCI(environment) {\r\n const appMetadata = this.readAppMetadataFromCache(environment);\r\n return !!(appMetadata && appMetadata.familyId === THE_FAMILY_ID);\r\n }\r\n /**\r\n * helper to match account ids\r\n * @param value\r\n * @param homeAccountId\r\n */\r\n matchHomeAccountId(entity, homeAccountId) {\r\n return !!(typeof entity.homeAccountId === \"string\" &&\r\n homeAccountId === entity.homeAccountId);\r\n }\r\n /**\r\n * helper to match account ids\r\n * @param entity\r\n * @param localAccountId\r\n * @returns\r\n */\r\n matchLocalAccountIdFromTokenClaims(tokenClaims, localAccountId) {\r\n const idTokenLocalAccountId = tokenClaims.oid || tokenClaims.sub;\r\n return localAccountId === idTokenLocalAccountId;\r\n }\r\n matchLocalAccountIdFromTenantProfile(tenantProfile, localAccountId) {\r\n return tenantProfile.localAccountId === localAccountId;\r\n }\r\n /**\r\n * helper to match names\r\n * @param entity\r\n * @param name\r\n * @returns true if the downcased name properties are present and match in the filter and the entity\r\n */\r\n matchName(claims, name) {\r\n return !!(name.toLowerCase() === claims.name?.toLowerCase());\r\n }\r\n /**\r\n * helper to match usernames\r\n * @param entity\r\n * @param username\r\n * @returns\r\n */\r\n matchUsername(cachedUsername, filterUsername) {\r\n return !!(cachedUsername &&\r\n typeof cachedUsername === \"string\" &&\r\n filterUsername?.toLowerCase() === cachedUsername.toLowerCase());\r\n }\r\n /**\r\n * helper to match assertion\r\n * @param value\r\n * @param oboAssertion\r\n */\r\n matchUserAssertionHash(entity, userAssertionHash) {\r\n return !!(entity.userAssertionHash &&\r\n userAssertionHash === entity.userAssertionHash);\r\n }\r\n /**\r\n * helper to match environment\r\n * @param value\r\n * @param environment\r\n */\r\n matchEnvironment(entity, environment) {\r\n // Check static authority options first for cases where authority metadata has not been resolved and cached yet\r\n if (this.staticAuthorityOptions) {\r\n const staticAliases = getAliasesFromStaticSources(this.staticAuthorityOptions, this.commonLogger);\r\n if (staticAliases.includes(environment) &&\r\n staticAliases.includes(entity.environment)) {\r\n return true;\r\n }\r\n }\r\n // Query metadata cache if no static authority configuration has aliases that match enviroment\r\n const cloudMetadata = this.getAuthorityMetadataByAlias(environment);\r\n if (cloudMetadata &&\r\n cloudMetadata.aliases.indexOf(entity.environment) > -1) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n /**\r\n * helper to match credential type\r\n * @param entity\r\n * @param credentialType\r\n */\r\n matchCredentialType(entity, credentialType) {\r\n return (entity.credentialType &&\r\n credentialType.toLowerCase() === entity.credentialType.toLowerCase());\r\n }\r\n /**\r\n * helper to match client ids\r\n * @param entity\r\n * @param clientId\r\n */\r\n matchClientId(entity, clientId) {\r\n return !!(entity.clientId && clientId === entity.clientId);\r\n }\r\n /**\r\n * helper to match family ids\r\n * @param entity\r\n * @param familyId\r\n */\r\n matchFamilyId(entity, familyId) {\r\n return !!(entity.familyId && familyId === entity.familyId);\r\n }\r\n /**\r\n * helper to match realm\r\n * @param entity\r\n * @param realm\r\n */\r\n matchRealm(entity, realm) {\r\n return !!(entity.realm?.toLowerCase() === realm.toLowerCase());\r\n }\r\n /**\r\n * helper to match nativeAccountId\r\n * @param entity\r\n * @param nativeAccountId\r\n * @returns boolean indicating the match result\r\n */\r\n matchNativeAccountId(entity, nativeAccountId) {\r\n return !!(entity.nativeAccountId && nativeAccountId === entity.nativeAccountId);\r\n }\r\n /**\r\n * helper to match loginHint which can be either:\r\n * 1. login_hint ID token claim\r\n * 2. username in cached account object\r\n * 3. upn in ID token claims\r\n * @param entity\r\n * @param loginHint\r\n * @returns\r\n */\r\n matchLoginHintFromTokenClaims(tokenClaims, loginHint) {\r\n if (tokenClaims.login_hint === loginHint) {\r\n return true;\r\n }\r\n if (tokenClaims.preferred_username === loginHint) {\r\n return true;\r\n }\r\n if (tokenClaims.upn === loginHint) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n /**\r\n * Helper to match sid\r\n * @param entity\r\n * @param sid\r\n * @returns true if the sid claim is present and matches the filter\r\n */\r\n matchSid(idTokenClaims, sid) {\r\n return idTokenClaims.sid === sid;\r\n }\r\n matchAuthorityType(entity, authorityType) {\r\n return !!(entity.authorityType &&\r\n authorityType.toLowerCase() === entity.authorityType.toLowerCase());\r\n }\r\n /**\r\n * Returns true if the target scopes are a subset of the current entity's scopes, false otherwise.\r\n * @param entity\r\n * @param target\r\n */\r\n matchTarget(entity, target) {\r\n const isNotAccessTokenCredential = entity.credentialType !== CredentialType.ACCESS_TOKEN &&\r\n entity.credentialType !==\r\n CredentialType.ACCESS_TOKEN_WITH_AUTH_SCHEME;\r\n if (isNotAccessTokenCredential || !entity.target) {\r\n return false;\r\n }\r\n const entityScopeSet = ScopeSet.fromString(entity.target);\r\n return entityScopeSet.containsScopeSet(target);\r\n }\r\n /**\r\n * Returns true if the credential's tokenType or Authentication Scheme matches the one in the request, false otherwise\r\n * @param entity\r\n * @param tokenType\r\n */\r\n matchTokenType(entity, tokenType) {\r\n return !!(entity.tokenType && entity.tokenType === tokenType);\r\n }\r\n /**\r\n * Returns true if the credential's keyId matches the one in the request, false otherwise\r\n * @param entity\r\n * @param keyId\r\n */\r\n matchKeyId(entity, keyId) {\r\n return !!(entity.keyId && entity.keyId === keyId);\r\n }\r\n /**\r\n * returns if a given cache entity is of the type appmetadata\r\n * @param key\r\n */\r\n isAppMetadata(key) {\r\n return key.indexOf(APP_METADATA) !== -1;\r\n }\r\n /**\r\n * returns if a given cache entity is of the type authoritymetadata\r\n * @param key\r\n */\r\n isAuthorityMetadata(key) {\r\n return key.indexOf(AUTHORITY_METADATA_CONSTANTS.CACHE_KEY) !== -1;\r\n }\r\n /**\r\n * returns cache key used for cloud instance metadata\r\n */\r\n generateAuthorityMetadataCacheKey(authority) {\r\n return `${AUTHORITY_METADATA_CONSTANTS.CACHE_KEY}-${this.clientId}-${authority}`;\r\n }\r\n /**\r\n * Helper to convert serialized data to object\r\n * @param obj\r\n * @param json\r\n */\r\n static toObject(obj, json) {\r\n for (const propertyName in json) {\r\n obj[propertyName] = json[propertyName];\r\n }\r\n return obj;\r\n }\r\n}\r\n/** @internal */\r\nclass DefaultStorageClass extends CacheManager {\r\n async setAccount() {\r\n throw createClientAuthError(methodNotImplemented);\r\n }\r\n getAccount() {\r\n throw createClientAuthError(methodNotImplemented);\r\n }\r\n async setIdTokenCredential() {\r\n throw createClientAuthError(methodNotImplemented);\r\n }\r\n getIdTokenCredential() {\r\n throw createClientAuthError(methodNotImplemented);\r\n }\r\n async setAccessTokenCredential() {\r\n throw createClientAuthError(methodNotImplemented);\r\n }\r\n getAccessTokenCredential() {\r\n throw createClientAuthError(methodNotImplemented);\r\n }\r\n async setRefreshTokenCredential() {\r\n throw createClientAuthError(methodNotImplemented);\r\n }\r\n getRefreshTokenCredential() {\r\n throw createClientAuthError(methodNotImplemented);\r\n }\r\n setAppMetadata() {\r\n throw createClientAuthError(methodNotImplemented);\r\n }\r\n getAppMetadata() {\r\n throw createClientAuthError(methodNotImplemented);\r\n }\r\n setServerTelemetry() {\r\n throw createClientAuthError(methodNotImplemented);\r\n }\r\n getServerTelemetry() {\r\n throw createClientAuthError(methodNotImplemented);\r\n }\r\n setAuthorityMetadata() {\r\n throw createClientAuthError(methodNotImplemented);\r\n }\r\n getAuthorityMetadata() {\r\n throw createClientAuthError(methodNotImplemented);\r\n }\r\n getAuthorityMetadataKeys() {\r\n throw createClientAuthError(methodNotImplemented);\r\n }\r\n setThrottlingCache() {\r\n throw createClientAuthError(methodNotImplemented);\r\n }\r\n getThrottlingCache() {\r\n throw createClientAuthError(methodNotImplemented);\r\n }\r\n removeItem() {\r\n throw createClientAuthError(methodNotImplemented);\r\n }\r\n getKeys() {\r\n throw createClientAuthError(methodNotImplemented);\r\n }\r\n getAccountKeys() {\r\n throw createClientAuthError(methodNotImplemented);\r\n }\r\n getTokenKeys() {\r\n throw createClientAuthError(methodNotImplemented);\r\n }\r\n generateCredentialKey() {\r\n throw createClientAuthError(methodNotImplemented);\r\n }\r\n generateAccountKey() {\r\n throw createClientAuthError(methodNotImplemented);\r\n }\r\n}\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nclass StubPerformanceMeasurement {\r\n startMeasurement() {\r\n return;\r\n }\r\n endMeasurement() {\r\n return;\r\n }\r\n flushMeasurement() {\r\n return null;\r\n }\r\n}\r\nclass StubPerformanceClient {\r\n generateId() {\r\n return \"callback-id\";\r\n }\r\n startMeasurement(measureName, correlationId) {\r\n return {\r\n end: () => null,\r\n discard: () => { },\r\n add: () => { },\r\n increment: () => { },\r\n event: {\r\n eventId: this.generateId(),\r\n status: PerformanceEventStatus.InProgress,\r\n authority: \"\",\r\n libraryName: \"\",\r\n libraryVersion: \"\",\r\n clientId: \"\",\r\n name: measureName,\r\n startTimeMs: Date.now(),\r\n correlationId: correlationId || \"\",\r\n },\r\n measurement: new StubPerformanceMeasurement(),\r\n };\r\n }\r\n startPerformanceMeasurement() {\r\n return new StubPerformanceMeasurement();\r\n }\r\n calculateQueuedTime() {\r\n return 0;\r\n }\r\n addQueueMeasurement() {\r\n return;\r\n }\r\n setPreQueueTime() {\r\n return;\r\n }\r\n endMeasurement() {\r\n return null;\r\n }\r\n discardMeasurements() {\r\n return;\r\n }\r\n removePerformanceCallback() {\r\n return true;\r\n }\r\n addPerformanceCallback() {\r\n return \"\";\r\n }\r\n emitEvents() {\r\n return;\r\n }\r\n addFields() {\r\n return;\r\n }\r\n incrementFields() {\r\n return;\r\n }\r\n cacheEventByCorrelationId() {\r\n return;\r\n }\r\n}\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nconst DEFAULT_SYSTEM_OPTIONS = {\r\n tokenRenewalOffsetSeconds: DEFAULT_TOKEN_RENEWAL_OFFSET_SEC,\r\n preventCorsPreflight: false,\r\n};\r\nconst DEFAULT_LOGGER_IMPLEMENTATION = {\r\n loggerCallback: () => {\r\n // allow users to not set loggerCallback\r\n },\r\n piiLoggingEnabled: false,\r\n logLevel: exports.LogLevel.Info,\r\n correlationId: Constants.EMPTY_STRING,\r\n};\r\nconst DEFAULT_CACHE_OPTIONS = {\r\n claimsBasedCachingEnabled: false,\r\n};\r\nconst DEFAULT_NETWORK_IMPLEMENTATION = {\r\n async sendGetRequestAsync() {\r\n throw createClientAuthError(methodNotImplemented);\r\n },\r\n async sendPostRequestAsync() {\r\n throw createClientAuthError(methodNotImplemented);\r\n },\r\n};\r\nconst DEFAULT_LIBRARY_INFO = {\r\n sku: Constants.SKU,\r\n version: version,\r\n cpu: Constants.EMPTY_STRING,\r\n os: Constants.EMPTY_STRING,\r\n};\r\nconst DEFAULT_CLIENT_CREDENTIALS = {\r\n clientSecret: Constants.EMPTY_STRING,\r\n clientAssertion: undefined,\r\n};\r\nconst DEFAULT_AZURE_CLOUD_OPTIONS = {\r\n azureCloudInstance: AzureCloudInstance.None,\r\n tenant: `${Constants.DEFAULT_COMMON_TENANT}`,\r\n};\r\nconst DEFAULT_TELEMETRY_OPTIONS = {\r\n application: {\r\n appName: \"\",\r\n appVersion: \"\",\r\n },\r\n};\r\n/**\r\n * Function that sets the default options when not explicitly configured from app developer\r\n *\r\n * @param Configuration\r\n *\r\n * @returns Configuration\r\n */\r\nfunction buildClientConfiguration({ authOptions: userAuthOptions, systemOptions: userSystemOptions, loggerOptions: userLoggerOption, cacheOptions: userCacheOptions, storageInterface: storageImplementation, networkInterface: networkImplementation, cryptoInterface: cryptoImplementation, clientCredentials: clientCredentials, libraryInfo: libraryInfo, telemetry: telemetry, serverTelemetryManager: serverTelemetryManager, persistencePlugin: persistencePlugin, serializableCache: serializableCache, }) {\r\n const loggerOptions = {\r\n ...DEFAULT_LOGGER_IMPLEMENTATION,\r\n ...userLoggerOption,\r\n };\r\n return {\r\n authOptions: buildAuthOptions(userAuthOptions),\r\n systemOptions: { ...DEFAULT_SYSTEM_OPTIONS, ...userSystemOptions },\r\n loggerOptions: loggerOptions,\r\n cacheOptions: { ...DEFAULT_CACHE_OPTIONS, ...userCacheOptions },\r\n storageInterface: storageImplementation ||\r\n new DefaultStorageClass(userAuthOptions.clientId, DEFAULT_CRYPTO_IMPLEMENTATION, new Logger(loggerOptions), new StubPerformanceClient()),\r\n networkInterface: networkImplementation || DEFAULT_NETWORK_IMPLEMENTATION,\r\n cryptoInterface: cryptoImplementation || DEFAULT_CRYPTO_IMPLEMENTATION,\r\n clientCredentials: clientCredentials || DEFAULT_CLIENT_CREDENTIALS,\r\n libraryInfo: { ...DEFAULT_LIBRARY_INFO, ...libraryInfo },\r\n telemetry: { ...DEFAULT_TELEMETRY_OPTIONS, ...telemetry },\r\n serverTelemetryManager: serverTelemetryManager || null,\r\n persistencePlugin: persistencePlugin || null,\r\n serializableCache: serializableCache || null,\r\n };\r\n}\r\n/**\r\n * Construct authoptions from the client and platform passed values\r\n * @param authOptions\r\n */\r\nfunction buildAuthOptions(authOptions) {\r\n return {\r\n clientCapabilities: [],\r\n azureCloudOptions: DEFAULT_AZURE_CLOUD_OPTIONS,\r\n skipAuthorityMetadataCache: false,\r\n instanceAware: false,\r\n encodeExtraQueryParams: false,\r\n ...authOptions,\r\n };\r\n}\r\n/**\r\n * Returns true if config has protocolMode set to ProtocolMode.OIDC, false otherwise\r\n * @param ClientConfiguration\r\n */\r\nfunction isOidcProtocolMode(config) {\r\n return (config.authOptions.authority.options.protocolMode === ProtocolMode.OIDC);\r\n}\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nconst CcsCredentialType = {\r\n HOME_ACCOUNT_ID: \"home_account_id\",\r\n UPN: \"UPN\",\r\n};\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nfunction instrumentBrokerParams(parameters, correlationId, performanceClient) {\r\n if (!correlationId) {\r\n return;\r\n }\r\n const clientId = parameters.get(CLIENT_ID);\r\n if (clientId && parameters.has(BROKER_CLIENT_ID)) {\r\n performanceClient?.addFields({\r\n embeddedClientId: clientId,\r\n embeddedRedirectUri: parameters.get(REDIRECT_URI),\r\n }, correlationId);\r\n }\r\n}\r\n/**\r\n * Add the given response_type\r\n * @param parameters\r\n * @param responseType\r\n */\r\nfunction addResponseType(parameters, responseType) {\r\n parameters.set(RESPONSE_TYPE, responseType);\r\n}\r\n/**\r\n * add response_mode. defaults to query.\r\n * @param responseMode\r\n */\r\nfunction addResponseMode(parameters, responseMode) {\r\n parameters.set(RESPONSE_MODE, responseMode ? responseMode : ResponseMode.QUERY);\r\n}\r\n/**\r\n * Add flag to indicate STS should attempt to use WAM if available\r\n */\r\nfunction addNativeBroker(parameters) {\r\n parameters.set(NATIVE_BROKER, \"1\");\r\n}\r\n/**\r\n * add scopes. set addOidcScopes to false to prevent default scopes in non-user scenarios\r\n * @param scopeSet\r\n * @param addOidcScopes\r\n */\r\nfunction addScopes(parameters, scopes, addOidcScopes = true, defaultScopes = OIDC_DEFAULT_SCOPES) {\r\n // Always add openid to the scopes when adding OIDC scopes\r\n if (addOidcScopes &&\r\n !defaultScopes.includes(\"openid\") &&\r\n !scopes.includes(\"openid\")) {\r\n defaultScopes.push(\"openid\");\r\n }\r\n const requestScopes = addOidcScopes\r\n ? [...(scopes || []), ...defaultScopes]\r\n : scopes || [];\r\n const scopeSet = new ScopeSet(requestScopes);\r\n parameters.set(SCOPE, scopeSet.printScopes());\r\n}\r\n/**\r\n * add clientId\r\n * @param clientId\r\n */\r\nfunction addClientId(parameters, clientId) {\r\n parameters.set(CLIENT_ID, clientId);\r\n}\r\n/**\r\n * add redirect_uri\r\n * @param redirectUri\r\n */\r\nfunction addRedirectUri(parameters, redirectUri) {\r\n parameters.set(REDIRECT_URI, redirectUri);\r\n}\r\n/**\r\n * add post logout redirectUri\r\n * @param redirectUri\r\n */\r\nfunction addPostLogoutRedirectUri(parameters, redirectUri) {\r\n parameters.set(POST_LOGOUT_URI, redirectUri);\r\n}\r\n/**\r\n * add id_token_hint to logout request\r\n * @param idTokenHint\r\n */\r\nfunction addIdTokenHint(parameters, idTokenHint) {\r\n parameters.set(ID_TOKEN_HINT, idTokenHint);\r\n}\r\n/**\r\n * add domain_hint\r\n * @param domainHint\r\n */\r\nfunction addDomainHint(parameters, domainHint) {\r\n parameters.set(DOMAIN_HINT, domainHint);\r\n}\r\n/**\r\n * add login_hint\r\n * @param loginHint\r\n */\r\nfunction addLoginHint(parameters, loginHint) {\r\n parameters.set(LOGIN_HINT, loginHint);\r\n}\r\n/**\r\n * Adds the CCS (Cache Credential Service) query parameter for login_hint\r\n * @param loginHint\r\n */\r\nfunction addCcsUpn(parameters, loginHint) {\r\n parameters.set(HeaderNames.CCS_HEADER, `UPN:${loginHint}`);\r\n}\r\n/**\r\n * Adds the CCS (Cache Credential Service) query parameter for account object\r\n * @param loginHint\r\n */\r\nfunction addCcsOid(parameters, clientInfo) {\r\n parameters.set(HeaderNames.CCS_HEADER, `Oid:${clientInfo.uid}@${clientInfo.utid}`);\r\n}\r\n/**\r\n * add sid\r\n * @param sid\r\n */\r\nfunction addSid(parameters, sid) {\r\n parameters.set(SID, sid);\r\n}\r\n/**\r\n * add claims\r\n * @param claims\r\n */\r\nfunction addClaims(parameters, claims, clientCapabilities) {\r\n const mergedClaims = addClientCapabilitiesToClaims(claims, clientCapabilities);\r\n try {\r\n JSON.parse(mergedClaims);\r\n }\r\n catch (e) {\r\n throw createClientConfigurationError(invalidClaims);\r\n }\r\n parameters.set(CLAIMS, mergedClaims);\r\n}\r\n/**\r\n * add correlationId\r\n * @param correlationId\r\n */\r\nfunction addCorrelationId(parameters, correlationId) {\r\n parameters.set(CLIENT_REQUEST_ID, correlationId);\r\n}\r\n/**\r\n * add library info query params\r\n * @param libraryInfo\r\n */\r\nfunction addLibraryInfo(parameters, libraryInfo) {\r\n // Telemetry Info\r\n parameters.set(X_CLIENT_SKU, libraryInfo.sku);\r\n parameters.set(X_CLIENT_VER, libraryInfo.version);\r\n if (libraryInfo.os) {\r\n parameters.set(X_CLIENT_OS, libraryInfo.os);\r\n }\r\n if (libraryInfo.cpu) {\r\n parameters.set(X_CLIENT_CPU, libraryInfo.cpu);\r\n }\r\n}\r\n/**\r\n * Add client telemetry parameters\r\n * @param appTelemetry\r\n */\r\nfunction addApplicationTelemetry(parameters, appTelemetry) {\r\n if (appTelemetry?.appName) {\r\n parameters.set(X_APP_NAME, appTelemetry.appName);\r\n }\r\n if (appTelemetry?.appVersion) {\r\n parameters.set(X_APP_VER, appTelemetry.appVersion);\r\n }\r\n}\r\n/**\r\n * add prompt\r\n * @param prompt\r\n */\r\nfunction addPrompt(parameters, prompt) {\r\n parameters.set(PROMPT, prompt);\r\n}\r\n/**\r\n * add state\r\n * @param state\r\n */\r\nfunction addState(parameters, state) {\r\n if (state) {\r\n parameters.set(STATE, state);\r\n }\r\n}\r\n/**\r\n * add nonce\r\n * @param nonce\r\n */\r\nfunction addNonce(parameters, nonce) {\r\n parameters.set(NONCE, nonce);\r\n}\r\n/**\r\n * add code_challenge and code_challenge_method\r\n * - throw if either of them are not passed\r\n * @param codeChallenge\r\n * @param codeChallengeMethod\r\n */\r\nfunction addCodeChallengeParams(parameters, codeChallenge, codeChallengeMethod) {\r\n if (codeChallenge && codeChallengeMethod) {\r\n parameters.set(CODE_CHALLENGE, codeChallenge);\r\n parameters.set(CODE_CHALLENGE_METHOD, codeChallengeMethod);\r\n }\r\n else {\r\n throw createClientConfigurationError(pkceParamsMissing);\r\n }\r\n}\r\n/**\r\n * add the `authorization_code` passed by the user to exchange for a token\r\n * @param code\r\n */\r\nfunction addAuthorizationCode(parameters, code) {\r\n parameters.set(CODE, code);\r\n}\r\n/**\r\n * add the `authorization_code` passed by the user to exchange for a token\r\n * @param code\r\n */\r\nfunction addDeviceCode(parameters, code) {\r\n parameters.set(DEVICE_CODE, code);\r\n}\r\n/**\r\n * add the `refreshToken` passed by the user\r\n * @param refreshToken\r\n */\r\nfunction addRefreshToken(parameters, refreshToken) {\r\n parameters.set(REFRESH_TOKEN, refreshToken);\r\n}\r\n/**\r\n * add the `code_verifier` passed by the user to exchange for a token\r\n * @param codeVerifier\r\n */\r\nfunction addCodeVerifier(parameters, codeVerifier) {\r\n parameters.set(CODE_VERIFIER, codeVerifier);\r\n}\r\n/**\r\n * add client_secret\r\n * @param clientSecret\r\n */\r\nfunction addClientSecret(parameters, clientSecret) {\r\n parameters.set(CLIENT_SECRET, clientSecret);\r\n}\r\n/**\r\n * add clientAssertion for confidential client flows\r\n * @param clientAssertion\r\n */\r\nfunction addClientAssertion(parameters, clientAssertion) {\r\n if (clientAssertion) {\r\n parameters.set(CLIENT_ASSERTION, clientAssertion);\r\n }\r\n}\r\n/**\r\n * add clientAssertionType for confidential client flows\r\n * @param clientAssertionType\r\n */\r\nfunction addClientAssertionType(parameters, clientAssertionType) {\r\n if (clientAssertionType) {\r\n parameters.set(CLIENT_ASSERTION_TYPE, clientAssertionType);\r\n }\r\n}\r\n/**\r\n * add OBO assertion for confidential client flows\r\n * @param clientAssertion\r\n */\r\nfunction addOboAssertion(parameters, oboAssertion) {\r\n parameters.set(OBO_ASSERTION, oboAssertion);\r\n}\r\n/**\r\n * add grant type\r\n * @param grantType\r\n */\r\nfunction addRequestTokenUse(parameters, tokenUse) {\r\n parameters.set(REQUESTED_TOKEN_USE, tokenUse);\r\n}\r\n/**\r\n * add grant type\r\n * @param grantType\r\n */\r\nfunction addGrantType(parameters, grantType) {\r\n parameters.set(GRANT_TYPE, grantType);\r\n}\r\n/**\r\n * add client info\r\n *\r\n */\r\nfunction addClientInfo(parameters) {\r\n parameters.set(CLIENT_INFO$1, \"1\");\r\n}\r\nfunction addInstanceAware(parameters) {\r\n if (!parameters.has(INSTANCE_AWARE)) {\r\n parameters.set(INSTANCE_AWARE, \"true\");\r\n }\r\n}\r\n/**\r\n * add extraQueryParams\r\n * @param eQParams\r\n */\r\nfunction addExtraQueryParameters(parameters, eQParams) {\r\n Object.entries(eQParams).forEach(([key, value]) => {\r\n if (!parameters.has(key) && value) {\r\n parameters.set(key, value);\r\n }\r\n });\r\n}\r\nfunction addClientCapabilitiesToClaims(claims, clientCapabilities) {\r\n let mergedClaims;\r\n // Parse provided claims into JSON object or initialize empty object\r\n if (!claims) {\r\n mergedClaims = {};\r\n }\r\n else {\r\n try {\r\n mergedClaims = JSON.parse(claims);\r\n }\r\n catch (e) {\r\n throw createClientConfigurationError(invalidClaims);\r\n }\r\n }\r\n if (clientCapabilities && clientCapabilities.length > 0) {\r\n if (!mergedClaims.hasOwnProperty(ClaimsRequestKeys.ACCESS_TOKEN)) {\r\n // Add access_token key to claims object\r\n mergedClaims[ClaimsRequestKeys.ACCESS_TOKEN] = {};\r\n }\r\n // Add xms_cc claim with provided clientCapabilities to access_token key\r\n mergedClaims[ClaimsRequestKeys.ACCESS_TOKEN][ClaimsRequestKeys.XMS_CC] =\r\n {\r\n values: clientCapabilities,\r\n };\r\n }\r\n return JSON.stringify(mergedClaims);\r\n}\r\n/**\r\n * adds `username` for Password Grant flow\r\n * @param username\r\n */\r\nfunction addUsername(parameters, username) {\r\n parameters.set(PasswordGrantConstants.username, username);\r\n}\r\n/**\r\n * adds `password` for Password Grant flow\r\n * @param password\r\n */\r\nfunction addPassword(parameters, password) {\r\n parameters.set(PasswordGrantConstants.password, password);\r\n}\r\n/**\r\n * add pop_jwk to query params\r\n * @param cnfString\r\n */\r\nfunction addPopToken(parameters, cnfString) {\r\n if (cnfString) {\r\n parameters.set(TOKEN_TYPE, AuthenticationScheme.POP);\r\n parameters.set(REQ_CNF, cnfString);\r\n }\r\n}\r\n/**\r\n * add SSH JWK and key ID to query params\r\n */\r\nfunction addSshJwk(parameters, sshJwkString) {\r\n if (sshJwkString) {\r\n parameters.set(TOKEN_TYPE, AuthenticationScheme.SSH);\r\n parameters.set(REQ_CNF, sshJwkString);\r\n }\r\n}\r\n/**\r\n * add server telemetry fields\r\n * @param serverTelemetryManager\r\n */\r\nfunction addServerTelemetry(parameters, serverTelemetryManager) {\r\n parameters.set(X_CLIENT_CURR_TELEM, serverTelemetryManager.generateCurrentRequestHeaderValue());\r\n parameters.set(X_CLIENT_LAST_TELEM, serverTelemetryManager.generateLastRequestHeaderValue());\r\n}\r\n/**\r\n * Adds parameter that indicates to the server that throttling is supported\r\n */\r\nfunction addThrottling(parameters) {\r\n parameters.set(X_MS_LIB_CAPABILITY, ThrottlingConstants.X_MS_LIB_CAPABILITY_VALUE);\r\n}\r\n/**\r\n * Adds logout_hint parameter for \"silent\" logout which prevent server account picker\r\n */\r\nfunction addLogoutHint(parameters, logoutHint) {\r\n parameters.set(LOGOUT_HINT, logoutHint);\r\n}\r\nfunction addBrokerParameters(parameters, brokerClientId, brokerRedirectUri) {\r\n if (!parameters.has(BROKER_CLIENT_ID)) {\r\n parameters.set(BROKER_CLIENT_ID, brokerClientId);\r\n }\r\n if (!parameters.has(BROKER_REDIRECT_URI)) {\r\n parameters.set(BROKER_REDIRECT_URI, brokerRedirectUri);\r\n }\r\n}\r\n/**\r\n * Add EAR (Encrypted Authorize Response) request parameters\r\n * @param parameters\r\n * @param jwk\r\n */\r\nfunction addEARParameters(parameters, jwk) {\r\n parameters.set(EAR_JWK, encodeURIComponent(jwk));\r\n // ear_jwe_crypto will always have value: {\"alg\":\"dir\",\"enc\":\"A256GCM\"} so we can hardcode this\r\n const jweCryptoB64Encoded = \"eyJhbGciOiJkaXIiLCJlbmMiOiJBMjU2R0NNIn0\";\r\n parameters.set(EAR_JWE_CRYPTO, jweCryptoB64Encoded);\r\n}\r\n/**\r\n * Adds authorize body parameters to the request parameters\r\n * @param parameters\r\n * @param bodyParameters\r\n */\r\nfunction addPostBodyParameters(parameters, bodyParameters) {\r\n Object.entries(bodyParameters).forEach(([key, value]) => {\r\n if (value) {\r\n parameters.set(key, value);\r\n }\r\n });\r\n}\n\nvar RequestParameterBuilder = /*#__PURE__*/Object.freeze({\n __proto__: null,\n addApplicationTelemetry: addApplicationTelemetry,\n addAuthorizationCode: addAuthorizationCode,\n addBrokerParameters: addBrokerParameters,\n addCcsOid: addCcsOid,\n addCcsUpn: addCcsUpn,\n addClaims: addClaims,\n addClientAssertion: addClientAssertion,\n addClientAssertionType: addClientAssertionType,\n addClientCapabilitiesToClaims: addClientCapabilitiesToClaims,\n addClientId: addClientId,\n addClientInfo: addClientInfo,\n addClientSecret: addClientSecret,\n addCodeChallengeParams: addCodeChallengeParams,\n addCodeVerifier: addCodeVerifier,\n addCorrelationId: addCorrelationId,\n addDeviceCode: addDeviceCode,\n addDomainHint: addDomainHint,\n addEARParameters: addEARParameters,\n addExtraQueryParameters: addExtraQueryParameters,\n addGrantType: addGrantType,\n addIdTokenHint: addIdTokenHint,\n addInstanceAware: addInstanceAware,\n addLibraryInfo: addLibraryInfo,\n addLoginHint: addLoginHint,\n addLogoutHint: addLogoutHint,\n addNativeBroker: addNativeBroker,\n addNonce: addNonce,\n addOboAssertion: addOboAssertion,\n addPassword: addPassword,\n addPopToken: addPopToken,\n addPostBodyParameters: addPostBodyParameters,\n addPostLogoutRedirectUri: addPostLogoutRedirectUri,\n addPrompt: addPrompt,\n addRedirectUri: addRedirectUri,\n addRefreshToken: addRefreshToken,\n addRequestTokenUse: addRequestTokenUse,\n addResponseMode: addResponseMode,\n addResponseType: addResponseType,\n addScopes: addScopes,\n addServerTelemetry: addServerTelemetry,\n addSid: addSid,\n addSshJwk: addSshJwk,\n addState: addState,\n addThrottling: addThrottling,\n addUsername: addUsername,\n instrumentBrokerParams: instrumentBrokerParams\n});\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * Error thrown when there is an error with the server code, for example, unavailability.\r\n */\r\nclass ServerError extends AuthError {\r\n constructor(errorCode, errorMessage, subError, errorNo, status) {\r\n super(errorCode, errorMessage, subError);\r\n this.name = \"ServerError\";\r\n this.errorNo = errorNo;\r\n this.status = status;\r\n Object.setPrototypeOf(this, ServerError.prototype);\r\n }\r\n}\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nfunction getRequestThumbprint(clientId, request, homeAccountId) {\r\n return {\r\n clientId: clientId,\r\n authority: request.authority,\r\n scopes: request.scopes,\r\n homeAccountIdentifier: homeAccountId,\r\n claims: request.claims,\r\n authenticationScheme: request.authenticationScheme,\r\n resourceRequestMethod: request.resourceRequestMethod,\r\n resourceRequestUri: request.resourceRequestUri,\r\n shrClaims: request.shrClaims,\r\n sshKid: request.sshKid,\r\n embeddedClientId: request.embeddedClientId || request.tokenBodyParameters?.clientId,\r\n };\r\n}\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/** @internal */\r\nclass ThrottlingUtils {\r\n /**\r\n * Prepares a RequestThumbprint to be stored as a key.\r\n * @param thumbprint\r\n */\r\n static generateThrottlingStorageKey(thumbprint) {\r\n return `${ThrottlingConstants.THROTTLING_PREFIX}.${JSON.stringify(thumbprint)}`;\r\n }\r\n /**\r\n * Performs necessary throttling checks before a network request.\r\n * @param cacheManager\r\n * @param thumbprint\r\n */\r\n static preProcess(cacheManager, thumbprint, correlationId) {\r\n const key = ThrottlingUtils.generateThrottlingStorageKey(thumbprint);\r\n const value = cacheManager.getThrottlingCache(key);\r\n if (value) {\r\n if (value.throttleTime < Date.now()) {\r\n cacheManager.removeItem(key, correlationId);\r\n return;\r\n }\r\n throw new ServerError(value.errorCodes?.join(\" \") || Constants.EMPTY_STRING, value.errorMessage, value.subError);\r\n }\r\n }\r\n /**\r\n * Performs necessary throttling checks after a network request.\r\n * @param cacheManager\r\n * @param thumbprint\r\n * @param response\r\n */\r\n static postProcess(cacheManager, thumbprint, response, correlationId) {\r\n if (ThrottlingUtils.checkResponseStatus(response) ||\r\n ThrottlingUtils.checkResponseForRetryAfter(response)) {\r\n const thumbprintValue = {\r\n throttleTime: ThrottlingUtils.calculateThrottleTime(parseInt(response.headers[HeaderNames.RETRY_AFTER])),\r\n error: response.body.error,\r\n errorCodes: response.body.error_codes,\r\n errorMessage: response.body.error_description,\r\n subError: response.body.suberror,\r\n };\r\n cacheManager.setThrottlingCache(ThrottlingUtils.generateThrottlingStorageKey(thumbprint), thumbprintValue, correlationId);\r\n }\r\n }\r\n /**\r\n * Checks a NetworkResponse object's status codes against 429 or 5xx\r\n * @param response\r\n */\r\n static checkResponseStatus(response) {\r\n return (response.status === 429 ||\r\n (response.status >= 500 && response.status < 600));\r\n }\r\n /**\r\n * Checks a NetworkResponse object's RetryAfter header\r\n * @param response\r\n */\r\n static checkResponseForRetryAfter(response) {\r\n if (response.headers) {\r\n return (response.headers.hasOwnProperty(HeaderNames.RETRY_AFTER) &&\r\n (response.status < 200 || response.status >= 300));\r\n }\r\n return false;\r\n }\r\n /**\r\n * Calculates the Unix-time value for a throttle to expire given throttleTime in seconds.\r\n * @param throttleTime\r\n */\r\n static calculateThrottleTime(throttleTime) {\r\n const time = throttleTime <= 0 ? 0 : throttleTime;\r\n const currentSeconds = Date.now() / 1000;\r\n return Math.floor(Math.min(currentSeconds +\r\n (time || ThrottlingConstants.DEFAULT_THROTTLE_TIME_SECONDS), currentSeconds +\r\n ThrottlingConstants.DEFAULT_MAX_THROTTLE_TIME_SECONDS) * 1000);\r\n }\r\n static removeThrottle(cacheManager, clientId, request, homeAccountIdentifier) {\r\n const thumbprint = getRequestThumbprint(clientId, request, homeAccountIdentifier);\r\n const key = this.generateThrottlingStorageKey(thumbprint);\r\n cacheManager.removeItem(key, request.correlationId);\r\n }\r\n}\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * Represents network related errors\r\n */\r\nclass NetworkError extends AuthError {\r\n constructor(error, httpStatus, responseHeaders) {\r\n super(error.errorCode, error.errorMessage, error.subError);\r\n Object.setPrototypeOf(this, NetworkError.prototype);\r\n this.name = \"NetworkError\";\r\n this.error = error;\r\n this.httpStatus = httpStatus;\r\n this.responseHeaders = responseHeaders;\r\n }\r\n}\r\n/**\r\n * Creates NetworkError object for a failed network request\r\n * @param error - Error to be thrown back to the caller\r\n * @param httpStatus - Status code of the network request\r\n * @param responseHeaders - Response headers of the network request, when available\r\n * @returns NetworkError object\r\n */\r\nfunction createNetworkError(error, httpStatus, responseHeaders, additionalError) {\r\n error.errorMessage = `${error.errorMessage}, additionalErrorInfo: error.name:${additionalError?.name}, error.message:${additionalError?.message}`;\r\n return new NetworkError(error, httpStatus, responseHeaders);\r\n}\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * Base application class which will construct requests to send to and handle responses from the Microsoft STS using the authorization code flow.\r\n * @internal\r\n */\r\nclass BaseClient {\r\n constructor(configuration, performanceClient) {\r\n // Set the configuration\r\n this.config = buildClientConfiguration(configuration);\r\n // Initialize the logger\r\n this.logger = new Logger(this.config.loggerOptions, name, version);\r\n // Initialize crypto\r\n this.cryptoUtils = this.config.cryptoInterface;\r\n // Initialize storage interface\r\n this.cacheManager = this.config.storageInterface;\r\n // Set the network interface\r\n this.networkClient = this.config.networkInterface;\r\n // Set TelemetryManager\r\n this.serverTelemetryManager = this.config.serverTelemetryManager;\r\n // set Authority\r\n this.authority = this.config.authOptions.authority;\r\n // set performance telemetry client\r\n this.performanceClient = performanceClient;\r\n }\r\n /**\r\n * Creates default headers for requests to token endpoint\r\n */\r\n createTokenRequestHeaders(ccsCred) {\r\n const headers = {};\r\n headers[HeaderNames.CONTENT_TYPE] = Constants.URL_FORM_CONTENT_TYPE;\r\n if (!this.config.systemOptions.preventCorsPreflight && ccsCred) {\r\n switch (ccsCred.type) {\r\n case CcsCredentialType.HOME_ACCOUNT_ID:\r\n try {\r\n const clientInfo = buildClientInfoFromHomeAccountId(ccsCred.credential);\r\n headers[HeaderNames.CCS_HEADER] = `Oid:${clientInfo.uid}@${clientInfo.utid}`;\r\n }\r\n catch (e) {\r\n this.logger.verbose(\"Could not parse home account ID for CCS Header: \" +\r\n e);\r\n }\r\n break;\r\n case CcsCredentialType.UPN:\r\n headers[HeaderNames.CCS_HEADER] = `UPN: ${ccsCred.credential}`;\r\n break;\r\n }\r\n }\r\n return headers;\r\n }\r\n /**\r\n * Http post to token endpoint\r\n * @param tokenEndpoint\r\n * @param queryString\r\n * @param headers\r\n * @param thumbprint\r\n */\r\n async executePostToTokenEndpoint(tokenEndpoint, queryString, headers, thumbprint, correlationId, queuedEvent) {\r\n if (queuedEvent) {\r\n this.performanceClient?.addQueueMeasurement(queuedEvent, correlationId);\r\n }\r\n const response = await this.sendPostRequest(thumbprint, tokenEndpoint, { body: queryString, headers: headers }, correlationId);\r\n if (this.config.serverTelemetryManager &&\r\n response.status < 500 &&\r\n response.status !== 429) {\r\n // Telemetry data successfully logged by server, clear Telemetry cache\r\n this.config.serverTelemetryManager.clearTelemetryCache();\r\n }\r\n return response;\r\n }\r\n /**\r\n * Wraps sendPostRequestAsync with necessary preflight and postflight logic\r\n * @param thumbprint - Request thumbprint for throttling\r\n * @param tokenEndpoint - Endpoint to make the POST to\r\n * @param options - Body and Headers to include on the POST request\r\n * @param correlationId - CorrelationId for telemetry\r\n */\r\n async sendPostRequest(thumbprint, tokenEndpoint, options, correlationId) {\r\n ThrottlingUtils.preProcess(this.cacheManager, thumbprint, correlationId);\r\n let response;\r\n try {\r\n response = await invokeAsync((this.networkClient.sendPostRequestAsync.bind(this.networkClient)), PerformanceEvents.NetworkClientSendPostRequestAsync, this.logger, this.performanceClient, correlationId)(tokenEndpoint, options);\r\n const responseHeaders = response.headers || {};\r\n this.performanceClient?.addFields({\r\n refreshTokenSize: response.body.refresh_token?.length || 0,\r\n httpVerToken: responseHeaders[HeaderNames.X_MS_HTTP_VERSION] || \"\",\r\n requestId: responseHeaders[HeaderNames.X_MS_REQUEST_ID] || \"\",\r\n }, correlationId);\r\n }\r\n catch (e) {\r\n if (e instanceof NetworkError) {\r\n const responseHeaders = e.responseHeaders;\r\n if (responseHeaders) {\r\n this.performanceClient?.addFields({\r\n httpVerToken: responseHeaders[HeaderNames.X_MS_HTTP_VERSION] || \"\",\r\n requestId: responseHeaders[HeaderNames.X_MS_REQUEST_ID] ||\r\n \"\",\r\n contentTypeHeader: responseHeaders[HeaderNames.CONTENT_TYPE] ||\r\n undefined,\r\n contentLengthHeader: responseHeaders[HeaderNames.CONTENT_LENGTH] ||\r\n undefined,\r\n httpStatus: e.httpStatus,\r\n }, correlationId);\r\n }\r\n throw e.error;\r\n }\r\n if (e instanceof AuthError) {\r\n throw e;\r\n }\r\n else {\r\n throw createClientAuthError(networkError);\r\n }\r\n }\r\n ThrottlingUtils.postProcess(this.cacheManager, thumbprint, response, correlationId);\r\n return response;\r\n }\r\n /**\r\n * Updates the authority object of the client. Endpoint discovery must be completed.\r\n * @param updatedAuthority\r\n */\r\n async updateAuthority(cloudInstanceHostname, correlationId) {\r\n this.performanceClient?.addQueueMeasurement(PerformanceEvents.UpdateTokenEndpointAuthority, correlationId);\r\n const cloudInstanceAuthorityUri = `https://${cloudInstanceHostname}/${this.authority.tenant}/`;\r\n const cloudInstanceAuthority = await createDiscoveredInstance(cloudInstanceAuthorityUri, this.networkClient, this.cacheManager, this.authority.options, this.logger, correlationId, this.performanceClient);\r\n this.authority = cloudInstanceAuthority;\r\n }\r\n /**\r\n * Creates query string for the /token request\r\n * @param request\r\n */\r\n createTokenQueryParameters(request) {\r\n const parameters = new Map();\r\n if (request.embeddedClientId) {\r\n addBrokerParameters(parameters, this.config.authOptions.clientId, this.config.authOptions.redirectUri);\r\n }\r\n if (request.tokenQueryParameters) {\r\n addExtraQueryParameters(parameters, request.tokenQueryParameters);\r\n }\r\n addCorrelationId(parameters, request.correlationId);\r\n instrumentBrokerParams(parameters, request.correlationId, this.performanceClient);\r\n return mapToQueryString(parameters);\r\n }\r\n}\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n// Codes defined by MSAL\r\nconst noTokensFound = \"no_tokens_found\";\r\nconst nativeAccountUnavailable = \"native_account_unavailable\";\r\nconst refreshTokenExpired = \"refresh_token_expired\";\r\nconst uxNotAllowed = \"ux_not_allowed\";\r\n// Codes potentially returned by server\r\nconst interactionRequired = \"interaction_required\";\r\nconst consentRequired = \"consent_required\";\r\nconst loginRequired = \"login_required\";\r\nconst badToken = \"bad_token\";\n\nvar InteractionRequiredAuthErrorCodes = /*#__PURE__*/Object.freeze({\n __proto__: null,\n badToken: badToken,\n consentRequired: consentRequired,\n interactionRequired: interactionRequired,\n loginRequired: loginRequired,\n nativeAccountUnavailable: nativeAccountUnavailable,\n noTokensFound: noTokensFound,\n refreshTokenExpired: refreshTokenExpired,\n uxNotAllowed: uxNotAllowed\n});\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * InteractionRequiredServerErrorMessage contains string constants used by error codes and messages returned by the server indicating interaction is required\r\n */\r\nconst InteractionRequiredServerErrorMessage = [\r\n interactionRequired,\r\n consentRequired,\r\n loginRequired,\r\n badToken,\r\n uxNotAllowed,\r\n];\r\nconst InteractionRequiredAuthSubErrorMessage = [\r\n \"message_only\",\r\n \"additional_action\",\r\n \"basic_action\",\r\n \"user_password_expired\",\r\n \"consent_required\",\r\n \"bad_token\",\r\n];\r\nconst InteractionRequiredAuthErrorMessages = {\r\n [noTokensFound]: \"No refresh token found in the cache. Please sign-in.\",\r\n [nativeAccountUnavailable]: \"The requested account is not available in the native broker. It may have been deleted or logged out. Please sign-in again using an interactive API.\",\r\n [refreshTokenExpired]: \"Refresh token has expired.\",\r\n [badToken]: \"Identity provider returned bad_token due to an expired or invalid refresh token. Please invoke an interactive API to resolve.\",\r\n [uxNotAllowed]: \"`canShowUI` flag in Edge was set to false. User interaction required on web page. Please invoke an interactive API to resolve.\",\r\n};\r\n/**\r\n * Interaction required errors defined by the SDK\r\n * @deprecated Use InteractionRequiredAuthErrorCodes instead\r\n */\r\nconst InteractionRequiredAuthErrorMessage = {\r\n noTokensFoundError: {\r\n code: noTokensFound,\r\n desc: InteractionRequiredAuthErrorMessages[noTokensFound],\r\n },\r\n native_account_unavailable: {\r\n code: nativeAccountUnavailable,\r\n desc: InteractionRequiredAuthErrorMessages[nativeAccountUnavailable],\r\n },\r\n bad_token: {\r\n code: badToken,\r\n desc: InteractionRequiredAuthErrorMessages[badToken],\r\n },\r\n};\r\n/**\r\n * Error thrown when user interaction is required.\r\n */\r\nclass InteractionRequiredAuthError extends AuthError {\r\n constructor(errorCode, errorMessage, subError, timestamp, traceId, correlationId, claims, errorNo) {\r\n super(errorCode, errorMessage, subError);\r\n Object.setPrototypeOf(this, InteractionRequiredAuthError.prototype);\r\n this.timestamp = timestamp || Constants.EMPTY_STRING;\r\n this.traceId = traceId || Constants.EMPTY_STRING;\r\n this.correlationId = correlationId || Constants.EMPTY_STRING;\r\n this.claims = claims || Constants.EMPTY_STRING;\r\n this.name = \"InteractionRequiredAuthError\";\r\n this.errorNo = errorNo;\r\n }\r\n}\r\n/**\r\n * Helper function used to determine if an error thrown by the server requires interaction to resolve\r\n * @param errorCode\r\n * @param errorString\r\n * @param subError\r\n */\r\nfunction isInteractionRequiredError(errorCode, errorString, subError) {\r\n const isInteractionRequiredErrorCode = !!errorCode &&\r\n InteractionRequiredServerErrorMessage.indexOf(errorCode) > -1;\r\n const isInteractionRequiredSubError = !!subError &&\r\n InteractionRequiredAuthSubErrorMessage.indexOf(subError) > -1;\r\n const isInteractionRequiredErrorDesc = !!errorString &&\r\n InteractionRequiredServerErrorMessage.some((irErrorCode) => {\r\n return errorString.indexOf(irErrorCode) > -1;\r\n });\r\n return (isInteractionRequiredErrorCode ||\r\n isInteractionRequiredErrorDesc ||\r\n isInteractionRequiredSubError);\r\n}\r\n/**\r\n * Creates an InteractionRequiredAuthError\r\n */\r\nfunction createInteractionRequiredAuthError(errorCode) {\r\n return new InteractionRequiredAuthError(errorCode, InteractionRequiredAuthErrorMessages[errorCode]);\r\n}\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * Class which provides helpers for OAuth 2.0 protocol specific values\r\n */\r\nclass ProtocolUtils {\r\n /**\r\n * Appends user state with random guid, or returns random guid.\r\n * @param userState\r\n * @param randomGuid\r\n */\r\n static setRequestState(cryptoObj, userState, meta) {\r\n const libraryState = ProtocolUtils.generateLibraryState(cryptoObj, meta);\r\n return userState\r\n ? `${libraryState}${Constants.RESOURCE_DELIM}${userState}`\r\n : libraryState;\r\n }\r\n /**\r\n * Generates the state value used by the common library.\r\n * @param randomGuid\r\n * @param cryptoObj\r\n */\r\n static generateLibraryState(cryptoObj, meta) {\r\n if (!cryptoObj) {\r\n throw createClientAuthError(noCryptoObject);\r\n }\r\n // Create a state object containing a unique id and the timestamp of the request creation\r\n const stateObj = {\r\n id: cryptoObj.createNewGuid(),\r\n };\r\n if (meta) {\r\n stateObj.meta = meta;\r\n }\r\n const stateString = JSON.stringify(stateObj);\r\n return cryptoObj.base64Encode(stateString);\r\n }\r\n /**\r\n * Parses the state into the RequestStateObject, which contains the LibraryState info and the state passed by the user.\r\n * @param state\r\n * @param cryptoObj\r\n */\r\n static parseRequestState(cryptoObj, state) {\r\n if (!cryptoObj) {\r\n throw createClientAuthError(noCryptoObject);\r\n }\r\n if (!state) {\r\n throw createClientAuthError(invalidState);\r\n }\r\n try {\r\n // Split the state between library state and user passed state and decode them separately\r\n const splitState = state.split(Constants.RESOURCE_DELIM);\r\n const libraryState = splitState[0];\r\n const userState = splitState.length > 1\r\n ? splitState.slice(1).join(Constants.RESOURCE_DELIM)\r\n : Constants.EMPTY_STRING;\r\n const libraryStateString = cryptoObj.base64Decode(libraryState);\r\n const libraryStateObj = JSON.parse(libraryStateString);\r\n return {\r\n userRequestState: userState || Constants.EMPTY_STRING,\r\n libraryState: libraryStateObj,\r\n };\r\n }\r\n catch (e) {\r\n throw createClientAuthError(invalidState);\r\n }\r\n }\r\n}\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nconst KeyLocation = {\r\n SW: \"sw\"};\r\n/** @internal */\r\nclass PopTokenGenerator {\r\n constructor(cryptoUtils, performanceClient) {\r\n this.cryptoUtils = cryptoUtils;\r\n this.performanceClient = performanceClient;\r\n }\r\n /**\r\n * Generates the req_cnf validated at the RP in the POP protocol for SHR parameters\r\n * and returns an object containing the keyid, the full req_cnf string and the req_cnf string hash\r\n * @param request\r\n * @returns\r\n */\r\n async generateCnf(request, logger) {\r\n this.performanceClient?.addQueueMeasurement(PerformanceEvents.PopTokenGenerateCnf, request.correlationId);\r\n const reqCnf = await invokeAsync(this.generateKid.bind(this), PerformanceEvents.PopTokenGenerateCnf, logger, this.performanceClient, request.correlationId)(request);\r\n const reqCnfString = this.cryptoUtils.base64UrlEncode(JSON.stringify(reqCnf));\r\n return {\r\n kid: reqCnf.kid,\r\n reqCnfString,\r\n };\r\n }\r\n /**\r\n * Generates key_id for a SHR token request\r\n * @param request\r\n * @returns\r\n */\r\n async generateKid(request) {\r\n this.performanceClient?.addQueueMeasurement(PerformanceEvents.PopTokenGenerateKid, request.correlationId);\r\n const kidThumbprint = await this.cryptoUtils.getPublicKeyThumbprint(request);\r\n return {\r\n kid: kidThumbprint,\r\n xms_ksl: KeyLocation.SW,\r\n };\r\n }\r\n /**\r\n * Signs the POP access_token with the local generated key-pair\r\n * @param accessToken\r\n * @param request\r\n * @returns\r\n */\r\n async signPopToken(accessToken, keyId, request) {\r\n return this.signPayload(accessToken, keyId, request);\r\n }\r\n /**\r\n * Utility function to generate the signed JWT for an access_token\r\n * @param payload\r\n * @param kid\r\n * @param request\r\n * @param claims\r\n * @returns\r\n */\r\n async signPayload(payload, keyId, request, claims) {\r\n // Deconstruct request to extract SHR parameters\r\n const { resourceRequestMethod, resourceRequestUri, shrClaims, shrNonce, shrOptions, } = request;\r\n const resourceUrlString = resourceRequestUri\r\n ? new UrlString(resourceRequestUri)\r\n : undefined;\r\n const resourceUrlComponents = resourceUrlString?.getUrlComponents();\r\n return this.cryptoUtils.signJwt({\r\n at: payload,\r\n ts: nowSeconds(),\r\n m: resourceRequestMethod?.toUpperCase(),\r\n u: resourceUrlComponents?.HostNameAndPort,\r\n nonce: shrNonce || this.cryptoUtils.createNewGuid(),\r\n p: resourceUrlComponents?.AbsolutePath,\r\n q: resourceUrlComponents?.QueryString\r\n ? [[], resourceUrlComponents.QueryString]\r\n : undefined,\r\n client_claims: shrClaims || undefined,\r\n ...claims,\r\n }, keyId, shrOptions, request.correlationId);\r\n }\r\n}\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * This class instance helps track the memory changes facilitating\r\n * decisions to read from and write to the persistent cache\r\n */ class TokenCacheContext {\r\n constructor(tokenCache, hasChanged) {\r\n this.cache = tokenCache;\r\n this.hasChanged = hasChanged;\r\n }\r\n /**\r\n * boolean which indicates the changes in cache\r\n */\r\n get cacheHasChanged() {\r\n return this.hasChanged;\r\n }\r\n /**\r\n * function to retrieve the token cache\r\n */\r\n get tokenCache() {\r\n return this.cache;\r\n }\r\n}\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * Class that handles response parsing.\r\n * @internal\r\n */\r\nclass ResponseHandler {\r\n constructor(clientId, cacheStorage, cryptoObj, logger, serializableCache, persistencePlugin, performanceClient) {\r\n this.clientId = clientId;\r\n this.cacheStorage = cacheStorage;\r\n this.cryptoObj = cryptoObj;\r\n this.logger = logger;\r\n this.serializableCache = serializableCache;\r\n this.persistencePlugin = persistencePlugin;\r\n this.performanceClient = performanceClient;\r\n }\r\n /**\r\n * Function which validates server authorization token response.\r\n * @param serverResponse\r\n * @param refreshAccessToken\r\n */\r\n validateTokenResponse(serverResponse, refreshAccessToken) {\r\n // Check for error\r\n if (serverResponse.error ||\r\n serverResponse.error_description ||\r\n serverResponse.suberror) {\r\n const errString = `Error(s): ${serverResponse.error_codes || Constants.NOT_AVAILABLE} - Timestamp: ${serverResponse.timestamp || Constants.NOT_AVAILABLE} - Description: ${serverResponse.error_description || Constants.NOT_AVAILABLE} - Correlation ID: ${serverResponse.correlation_id || Constants.NOT_AVAILABLE} - Trace ID: ${serverResponse.trace_id || Constants.NOT_AVAILABLE}`;\r\n const serverErrorNo = serverResponse.error_codes?.length\r\n ? serverResponse.error_codes[0]\r\n : undefined;\r\n const serverError = new ServerError(serverResponse.error, errString, serverResponse.suberror, serverErrorNo, serverResponse.status);\r\n // check if 500 error\r\n if (refreshAccessToken &&\r\n serverResponse.status &&\r\n serverResponse.status >= HttpStatus.SERVER_ERROR_RANGE_START &&\r\n serverResponse.status <= HttpStatus.SERVER_ERROR_RANGE_END) {\r\n this.logger.warning(`executeTokenRequest:validateTokenResponse - AAD is currently unavailable and the access token is unable to be refreshed.\\n${serverError}`);\r\n // don't throw an exception, but alert the user via a log that the token was unable to be refreshed\r\n return;\r\n // check if 400 error\r\n }\r\n else if (refreshAccessToken &&\r\n serverResponse.status &&\r\n serverResponse.status >= HttpStatus.CLIENT_ERROR_RANGE_START &&\r\n serverResponse.status <= HttpStatus.CLIENT_ERROR_RANGE_END) {\r\n this.logger.warning(`executeTokenRequest:validateTokenResponse - AAD is currently available but is unable to refresh the access token.\\n${serverError}`);\r\n // don't throw an exception, but alert the user via a log that the token was unable to be refreshed\r\n return;\r\n }\r\n if (isInteractionRequiredError(serverResponse.error, serverResponse.error_description, serverResponse.suberror)) {\r\n throw new InteractionRequiredAuthError(serverResponse.error, serverResponse.error_description, serverResponse.suberror, serverResponse.timestamp || Constants.EMPTY_STRING, serverResponse.trace_id || Constants.EMPTY_STRING, serverResponse.correlation_id || Constants.EMPTY_STRING, serverResponse.claims || Constants.EMPTY_STRING, serverErrorNo);\r\n }\r\n throw serverError;\r\n }\r\n }\r\n /**\r\n * Returns a constructed token response based on given string. Also manages the cache updates and cleanups.\r\n * @param serverTokenResponse\r\n * @param authority\r\n */\r\n async handleServerTokenResponse(serverTokenResponse, authority, reqTimestamp, request, authCodePayload, userAssertionHash, handlingRefreshTokenResponse, forceCacheRefreshTokenResponse, serverRequestId) {\r\n this.performanceClient?.addQueueMeasurement(PerformanceEvents.HandleServerTokenResponse, serverTokenResponse.correlation_id);\r\n // create an idToken object (not entity)\r\n let idTokenClaims;\r\n if (serverTokenResponse.id_token) {\r\n idTokenClaims = extractTokenClaims(serverTokenResponse.id_token || Constants.EMPTY_STRING, this.cryptoObj.base64Decode);\r\n // token nonce check (TODO: Add a warning if no nonce is given?)\r\n if (authCodePayload && authCodePayload.nonce) {\r\n if (idTokenClaims.nonce !== authCodePayload.nonce) {\r\n throw createClientAuthError(nonceMismatch);\r\n }\r\n }\r\n // token max_age check\r\n if (request.maxAge || request.maxAge === 0) {\r\n const authTime = idTokenClaims.auth_time;\r\n if (!authTime) {\r\n throw createClientAuthError(authTimeNotFound);\r\n }\r\n checkMaxAge(authTime, request.maxAge);\r\n }\r\n }\r\n // generate homeAccountId\r\n this.homeAccountIdentifier = AccountEntity.generateHomeAccountId(serverTokenResponse.client_info || Constants.EMPTY_STRING, authority.authorityType, this.logger, this.cryptoObj, idTokenClaims);\r\n // save the response tokens\r\n let requestStateObj;\r\n if (!!authCodePayload && !!authCodePayload.state) {\r\n requestStateObj = ProtocolUtils.parseRequestState(this.cryptoObj, authCodePayload.state);\r\n }\r\n // Add keyId from request to serverTokenResponse if defined\r\n serverTokenResponse.key_id =\r\n serverTokenResponse.key_id || request.sshKid || undefined;\r\n const cacheRecord = this.generateCacheRecord(serverTokenResponse, authority, reqTimestamp, request, idTokenClaims, userAssertionHash, authCodePayload);\r\n let cacheContext;\r\n try {\r\n if (this.persistencePlugin && this.serializableCache) {\r\n this.logger.verbose(\"Persistence enabled, calling beforeCacheAccess\");\r\n cacheContext = new TokenCacheContext(this.serializableCache, true);\r\n await this.persistencePlugin.beforeCacheAccess(cacheContext);\r\n }\r\n /*\r\n * When saving a refreshed tokens to the cache, it is expected that the account that was used is present in the cache.\r\n * If not present, we should return null, as it's the case that another application called removeAccount in between\r\n * the calls to getAllAccounts and acquireTokenSilent. We should not overwrite that removal, unless explicitly flagged by\r\n * the developer, as in the case of refresh token flow used in ADAL Node to MSAL Node migration.\r\n */\r\n if (handlingRefreshTokenResponse &&\r\n !forceCacheRefreshTokenResponse &&\r\n cacheRecord.account) {\r\n const key = this.cacheStorage.generateAccountKey(AccountEntity.getAccountInfo(cacheRecord.account));\r\n const account = this.cacheStorage.getAccount(key, request.correlationId);\r\n if (!account) {\r\n this.logger.warning(\"Account used to refresh tokens not in persistence, refreshed tokens will not be stored in the cache\");\r\n return await ResponseHandler.generateAuthenticationResult(this.cryptoObj, authority, cacheRecord, false, request, idTokenClaims, requestStateObj, undefined, serverRequestId);\r\n }\r\n }\r\n await this.cacheStorage.saveCacheRecord(cacheRecord, request.correlationId, isKmsi(idTokenClaims || {}), request.storeInCache);\r\n }\r\n finally {\r\n if (this.persistencePlugin &&\r\n this.serializableCache &&\r\n cacheContext) {\r\n this.logger.verbose(\"Persistence enabled, calling afterCacheAccess\");\r\n await this.persistencePlugin.afterCacheAccess(cacheContext);\r\n }\r\n }\r\n return ResponseHandler.generateAuthenticationResult(this.cryptoObj, authority, cacheRecord, false, request, idTokenClaims, requestStateObj, serverTokenResponse, serverRequestId);\r\n }\r\n /**\r\n * Generates CacheRecord\r\n * @param serverTokenResponse\r\n * @param idTokenObj\r\n * @param authority\r\n */\r\n generateCacheRecord(serverTokenResponse, authority, reqTimestamp, request, idTokenClaims, userAssertionHash, authCodePayload) {\r\n const env = authority.getPreferredCache();\r\n if (!env) {\r\n throw createClientAuthError(invalidCacheEnvironment);\r\n }\r\n const claimsTenantId = getTenantIdFromIdTokenClaims(idTokenClaims);\r\n // IdToken: non AAD scenarios can have empty realm\r\n let cachedIdToken;\r\n let cachedAccount;\r\n if (serverTokenResponse.id_token && !!idTokenClaims) {\r\n cachedIdToken = createIdTokenEntity(this.homeAccountIdentifier, env, serverTokenResponse.id_token, this.clientId, claimsTenantId || \"\");\r\n cachedAccount = buildAccountToCache(this.cacheStorage, authority, this.homeAccountIdentifier, this.cryptoObj.base64Decode, request.correlationId, idTokenClaims, serverTokenResponse.client_info, env, claimsTenantId, authCodePayload, undefined, // nativeAccountId\r\n this.logger);\r\n }\r\n // AccessToken\r\n let cachedAccessToken = null;\r\n if (serverTokenResponse.access_token) {\r\n // If scopes not returned in server response, use request scopes\r\n const responseScopes = serverTokenResponse.scope\r\n ? ScopeSet.fromString(serverTokenResponse.scope)\r\n : new ScopeSet(request.scopes || []);\r\n /*\r\n * Use timestamp calculated before request\r\n * Server may return timestamps as strings, parse to numbers if so.\r\n */\r\n const expiresIn = (typeof serverTokenResponse.expires_in === \"string\"\r\n ? parseInt(serverTokenResponse.expires_in, 10)\r\n : serverTokenResponse.expires_in) || 0;\r\n const extExpiresIn = (typeof serverTokenResponse.ext_expires_in === \"string\"\r\n ? parseInt(serverTokenResponse.ext_expires_in, 10)\r\n : serverTokenResponse.ext_expires_in) || 0;\r\n const refreshIn = (typeof serverTokenResponse.refresh_in === \"string\"\r\n ? parseInt(serverTokenResponse.refresh_in, 10)\r\n : serverTokenResponse.refresh_in) || undefined;\r\n const tokenExpirationSeconds = reqTimestamp + expiresIn;\r\n const extendedTokenExpirationSeconds = tokenExpirationSeconds + extExpiresIn;\r\n const refreshOnSeconds = refreshIn && refreshIn > 0\r\n ? reqTimestamp + refreshIn\r\n : undefined;\r\n // non AAD scenarios can have empty realm\r\n cachedAccessToken = createAccessTokenEntity(this.homeAccountIdentifier, env, serverTokenResponse.access_token, this.clientId, claimsTenantId || authority.tenant || \"\", responseScopes.printScopes(), tokenExpirationSeconds, extendedTokenExpirationSeconds, this.cryptoObj.base64Decode, refreshOnSeconds, serverTokenResponse.token_type, userAssertionHash, serverTokenResponse.key_id, request.claims, request.requestedClaimsHash);\r\n }\r\n // refreshToken\r\n let cachedRefreshToken = null;\r\n if (serverTokenResponse.refresh_token) {\r\n let rtExpiresOn;\r\n if (serverTokenResponse.refresh_token_expires_in) {\r\n const rtExpiresIn = typeof serverTokenResponse.refresh_token_expires_in ===\r\n \"string\"\r\n ? parseInt(serverTokenResponse.refresh_token_expires_in, 10)\r\n : serverTokenResponse.refresh_token_expires_in;\r\n rtExpiresOn = reqTimestamp + rtExpiresIn;\r\n }\r\n cachedRefreshToken = createRefreshTokenEntity(this.homeAccountIdentifier, env, serverTokenResponse.refresh_token, this.clientId, serverTokenResponse.foci, userAssertionHash, rtExpiresOn);\r\n }\r\n // appMetadata\r\n let cachedAppMetadata = null;\r\n if (serverTokenResponse.foci) {\r\n cachedAppMetadata = {\r\n clientId: this.clientId,\r\n environment: env,\r\n familyId: serverTokenResponse.foci,\r\n };\r\n }\r\n return {\r\n account: cachedAccount,\r\n idToken: cachedIdToken,\r\n accessToken: cachedAccessToken,\r\n refreshToken: cachedRefreshToken,\r\n appMetadata: cachedAppMetadata,\r\n };\r\n }\r\n /**\r\n * Creates an @AuthenticationResult from @CacheRecord , @IdToken , and a boolean that states whether or not the result is from cache.\r\n *\r\n * Optionally takes a state string that is set as-is in the response.\r\n *\r\n * @param cacheRecord\r\n * @param idTokenObj\r\n * @param fromTokenCache\r\n * @param stateString\r\n */\r\n static async generateAuthenticationResult(cryptoObj, authority, cacheRecord, fromTokenCache, request, idTokenClaims, requestState, serverTokenResponse, requestId) {\r\n let accessToken = Constants.EMPTY_STRING;\r\n let responseScopes = [];\r\n let expiresOn = null;\r\n let extExpiresOn;\r\n let refreshOn;\r\n let familyId = Constants.EMPTY_STRING;\r\n if (cacheRecord.accessToken) {\r\n /*\r\n * if the request object has `popKid` property, `signPopToken` will be set to false and\r\n * the token will be returned unsigned\r\n */\r\n if (cacheRecord.accessToken.tokenType ===\r\n AuthenticationScheme.POP &&\r\n !request.popKid) {\r\n const popTokenGenerator = new PopTokenGenerator(cryptoObj);\r\n const { secret, keyId } = cacheRecord.accessToken;\r\n if (!keyId) {\r\n throw createClientAuthError(keyIdMissing);\r\n }\r\n accessToken = await popTokenGenerator.signPopToken(secret, keyId, request);\r\n }\r\n else {\r\n accessToken = cacheRecord.accessToken.secret;\r\n }\r\n responseScopes = ScopeSet.fromString(cacheRecord.accessToken.target).asArray();\r\n // Access token expiresOn cached in seconds, converting to Date for AuthenticationResult\r\n expiresOn = toDateFromSeconds(cacheRecord.accessToken.expiresOn);\r\n extExpiresOn = toDateFromSeconds(cacheRecord.accessToken.extendedExpiresOn);\r\n if (cacheRecord.accessToken.refreshOn) {\r\n refreshOn = toDateFromSeconds(cacheRecord.accessToken.refreshOn);\r\n }\r\n }\r\n if (cacheRecord.appMetadata) {\r\n familyId =\r\n cacheRecord.appMetadata.familyId === THE_FAMILY_ID\r\n ? THE_FAMILY_ID\r\n : \"\";\r\n }\r\n const uid = idTokenClaims?.oid || idTokenClaims?.sub || \"\";\r\n const tid = idTokenClaims?.tid || \"\";\r\n // for hybrid + native bridge enablement, send back the native account Id\r\n if (serverTokenResponse?.spa_accountid && !!cacheRecord.account) {\r\n cacheRecord.account.nativeAccountId =\r\n serverTokenResponse?.spa_accountid;\r\n }\r\n const accountInfo = cacheRecord.account\r\n ? updateAccountTenantProfileData(AccountEntity.getAccountInfo(cacheRecord.account), undefined, // tenantProfile optional\r\n idTokenClaims, cacheRecord.idToken?.secret)\r\n : null;\r\n return {\r\n authority: authority.canonicalAuthority,\r\n uniqueId: uid,\r\n tenantId: tid,\r\n scopes: responseScopes,\r\n account: accountInfo,\r\n idToken: cacheRecord?.idToken?.secret || \"\",\r\n idTokenClaims: idTokenClaims || {},\r\n accessToken: accessToken,\r\n fromCache: fromTokenCache,\r\n expiresOn: expiresOn,\r\n extExpiresOn: extExpiresOn,\r\n refreshOn: refreshOn,\r\n correlationId: request.correlationId,\r\n requestId: requestId || Constants.EMPTY_STRING,\r\n familyId: familyId,\r\n tokenType: cacheRecord.accessToken?.tokenType || Constants.EMPTY_STRING,\r\n state: requestState\r\n ? requestState.userRequestState\r\n : Constants.EMPTY_STRING,\r\n cloudGraphHostName: cacheRecord.account?.cloudGraphHostName ||\r\n Constants.EMPTY_STRING,\r\n msGraphHost: cacheRecord.account?.msGraphHost || Constants.EMPTY_STRING,\r\n code: serverTokenResponse?.spa_code,\r\n fromNativeBroker: false,\r\n };\r\n }\r\n}\r\nfunction buildAccountToCache(cacheStorage, authority, homeAccountId, base64Decode, correlationId, idTokenClaims, clientInfo, environment, claimsTenantId, authCodePayload, nativeAccountId, logger) {\r\n logger?.verbose(\"setCachedAccount called\");\r\n // Check if base account is already cached\r\n const accountKeys = cacheStorage.getAccountKeys();\r\n const baseAccountKey = accountKeys.find((accountKey) => {\r\n return accountKey.startsWith(homeAccountId);\r\n });\r\n let cachedAccount = null;\r\n if (baseAccountKey) {\r\n cachedAccount = cacheStorage.getAccount(baseAccountKey, correlationId);\r\n }\r\n const baseAccount = cachedAccount ||\r\n AccountEntity.createAccount({\r\n homeAccountId,\r\n idTokenClaims,\r\n clientInfo,\r\n environment,\r\n cloudGraphHostName: authCodePayload?.cloud_graph_host_name,\r\n msGraphHost: authCodePayload?.msgraph_host,\r\n nativeAccountId: nativeAccountId,\r\n }, authority, base64Decode);\r\n const tenantProfiles = baseAccount.tenantProfiles || [];\r\n const tenantId = claimsTenantId || baseAccount.realm;\r\n if (tenantId &&\r\n !tenantProfiles.find((tenantProfile) => {\r\n return tenantProfile.tenantId === tenantId;\r\n })) {\r\n const newTenantProfile = buildTenantProfile(homeAccountId, baseAccount.localAccountId, tenantId, idTokenClaims);\r\n tenantProfiles.push(newTenantProfile);\r\n }\r\n baseAccount.tenantProfiles = tenantProfiles;\r\n return baseAccount;\r\n}\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nasync function getClientAssertion(clientAssertion, clientId, tokenEndpoint) {\r\n if (typeof clientAssertion === \"string\") {\r\n return clientAssertion;\r\n }\r\n else {\r\n const config = {\r\n clientId: clientId,\r\n tokenEndpoint: tokenEndpoint,\r\n };\r\n return clientAssertion(config);\r\n }\r\n}\n\nvar ClientAssertionUtils = /*#__PURE__*/Object.freeze({\n __proto__: null,\n getClientAssertion: getClientAssertion\n});\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * Oauth2.0 Authorization Code client\r\n * @internal\r\n */\r\nclass AuthorizationCodeClient extends BaseClient {\r\n constructor(configuration, performanceClient) {\r\n super(configuration, performanceClient);\r\n // Flag to indicate if client is for hybrid spa auth code redemption\r\n this.includeRedirectUri = true;\r\n this.oidcDefaultScopes =\r\n this.config.authOptions.authority.options.OIDCOptions?.defaultScopes;\r\n }\r\n /**\r\n * API to acquire a token in exchange of 'authorization_code` acquired by the user in the first leg of the\r\n * authorization_code_grant\r\n * @param request\r\n */\r\n async acquireToken(request, authCodePayload) {\r\n this.performanceClient?.addQueueMeasurement(PerformanceEvents.AuthClientAcquireToken, request.correlationId);\r\n if (!request.code) {\r\n throw createClientAuthError(requestCannotBeMade);\r\n }\r\n const reqTimestamp = nowSeconds();\r\n const response = await invokeAsync(this.executeTokenRequest.bind(this), PerformanceEvents.AuthClientExecuteTokenRequest, this.logger, this.performanceClient, request.correlationId)(this.authority, request);\r\n // Retrieve requestId from response headers\r\n const requestId = response.headers?.[HeaderNames.X_MS_REQUEST_ID];\r\n const responseHandler = new ResponseHandler(this.config.authOptions.clientId, this.cacheManager, this.cryptoUtils, this.logger, this.config.serializableCache, this.config.persistencePlugin, this.performanceClient);\r\n // Validate response. This function throws a server error if an error is returned by the server.\r\n responseHandler.validateTokenResponse(response.body);\r\n return invokeAsync(responseHandler.handleServerTokenResponse.bind(responseHandler), PerformanceEvents.HandleServerTokenResponse, this.logger, this.performanceClient, request.correlationId)(response.body, this.authority, reqTimestamp, request, authCodePayload, undefined, undefined, undefined, requestId);\r\n }\r\n /**\r\n * Used to log out the current user, and redirect the user to the postLogoutRedirectUri.\r\n * Default behaviour is to redirect the user to `window.location.href`.\r\n * @param authorityUri\r\n */\r\n getLogoutUri(logoutRequest) {\r\n // Throw error if logoutRequest is null/undefined\r\n if (!logoutRequest) {\r\n throw createClientConfigurationError(logoutRequestEmpty);\r\n }\r\n const queryString = this.createLogoutUrlQueryString(logoutRequest);\r\n // Construct logout URI\r\n return UrlString.appendQueryString(this.authority.endSessionEndpoint, queryString);\r\n }\r\n /**\r\n * Executes POST request to token endpoint\r\n * @param authority\r\n * @param request\r\n */\r\n async executeTokenRequest(authority, request) {\r\n this.performanceClient?.addQueueMeasurement(PerformanceEvents.AuthClientExecuteTokenRequest, request.correlationId);\r\n const queryParametersString = this.createTokenQueryParameters(request);\r\n const endpoint = UrlString.appendQueryString(authority.tokenEndpoint, queryParametersString);\r\n const requestBody = await invokeAsync(this.createTokenRequestBody.bind(this), PerformanceEvents.AuthClientCreateTokenRequestBody, this.logger, this.performanceClient, request.correlationId)(request);\r\n let ccsCredential = undefined;\r\n if (request.clientInfo) {\r\n try {\r\n const clientInfo = buildClientInfo(request.clientInfo, this.cryptoUtils.base64Decode);\r\n ccsCredential = {\r\n credential: `${clientInfo.uid}${Separators.CLIENT_INFO_SEPARATOR}${clientInfo.utid}`,\r\n type: CcsCredentialType.HOME_ACCOUNT_ID,\r\n };\r\n }\r\n catch (e) {\r\n this.logger.verbose(\"Could not parse client info for CCS Header: \" + e);\r\n }\r\n }\r\n const headers = this.createTokenRequestHeaders(ccsCredential || request.ccsCredential);\r\n const thumbprint = getRequestThumbprint(this.config.authOptions.clientId, request);\r\n return invokeAsync(this.executePostToTokenEndpoint.bind(this), PerformanceEvents.AuthorizationCodeClientExecutePostToTokenEndpoint, this.logger, this.performanceClient, request.correlationId)(endpoint, requestBody, headers, thumbprint, request.correlationId, PerformanceEvents.AuthorizationCodeClientExecutePostToTokenEndpoint);\r\n }\r\n /**\r\n * Generates a map for all the params to be sent to the service\r\n * @param request\r\n */\r\n async createTokenRequestBody(request) {\r\n this.performanceClient?.addQueueMeasurement(PerformanceEvents.AuthClientCreateTokenRequestBody, request.correlationId);\r\n const parameters = new Map();\r\n addClientId(parameters, request.embeddedClientId ||\r\n request.tokenBodyParameters?.[CLIENT_ID] ||\r\n this.config.authOptions.clientId);\r\n /*\r\n * For hybrid spa flow, there will be a code but no verifier\r\n * In this scenario, don't include redirect uri as auth code will not be bound to redirect URI\r\n */\r\n if (!this.includeRedirectUri) {\r\n // Just validate\r\n if (!request.redirectUri) {\r\n throw createClientConfigurationError(redirectUriEmpty);\r\n }\r\n }\r\n else {\r\n // Validate and include redirect uri\r\n addRedirectUri(parameters, request.redirectUri);\r\n }\r\n // Add scope array, parameter builder will add default scopes and dedupe\r\n addScopes(parameters, request.scopes, true, this.oidcDefaultScopes);\r\n // add code: user set, not validated\r\n addAuthorizationCode(parameters, request.code);\r\n // Add library metadata\r\n addLibraryInfo(parameters, this.config.libraryInfo);\r\n addApplicationTelemetry(parameters, this.config.telemetry.application);\r\n addThrottling(parameters);\r\n if (this.serverTelemetryManager && !isOidcProtocolMode(this.config)) {\r\n addServerTelemetry(parameters, this.serverTelemetryManager);\r\n }\r\n // add code_verifier if passed\r\n if (request.codeVerifier) {\r\n addCodeVerifier(parameters, request.codeVerifier);\r\n }\r\n if (this.config.clientCredentials.clientSecret) {\r\n addClientSecret(parameters, this.config.clientCredentials.clientSecret);\r\n }\r\n if (this.config.clientCredentials.clientAssertion) {\r\n const clientAssertion = this.config.clientCredentials.clientAssertion;\r\n addClientAssertion(parameters, await getClientAssertion(clientAssertion.assertion, this.config.authOptions.clientId, request.resourceRequestUri));\r\n addClientAssertionType(parameters, clientAssertion.assertionType);\r\n }\r\n addGrantType(parameters, GrantType.AUTHORIZATION_CODE_GRANT);\r\n addClientInfo(parameters);\r\n if (request.authenticationScheme === AuthenticationScheme.POP) {\r\n const popTokenGenerator = new PopTokenGenerator(this.cryptoUtils, this.performanceClient);\r\n let reqCnfData;\r\n if (!request.popKid) {\r\n const generatedReqCnfData = await invokeAsync(popTokenGenerator.generateCnf.bind(popTokenGenerator), PerformanceEvents.PopTokenGenerateCnf, this.logger, this.performanceClient, request.correlationId)(request, this.logger);\r\n reqCnfData = generatedReqCnfData.reqCnfString;\r\n }\r\n else {\r\n reqCnfData = this.cryptoUtils.encodeKid(request.popKid);\r\n }\r\n // SPA PoP requires full Base64Url encoded req_cnf string (unhashed)\r\n addPopToken(parameters, reqCnfData);\r\n }\r\n else if (request.authenticationScheme === AuthenticationScheme.SSH) {\r\n if (request.sshJwk) {\r\n addSshJwk(parameters, request.sshJwk);\r\n }\r\n else {\r\n throw createClientConfigurationError(missingSshJwk);\r\n }\r\n }\r\n if (!StringUtils.isEmptyObj(request.claims) ||\r\n (this.config.authOptions.clientCapabilities &&\r\n this.config.authOptions.clientCapabilities.length > 0)) {\r\n addClaims(parameters, request.claims, this.config.authOptions.clientCapabilities);\r\n }\r\n let ccsCred = undefined;\r\n if (request.clientInfo) {\r\n try {\r\n const clientInfo = buildClientInfo(request.clientInfo, this.cryptoUtils.base64Decode);\r\n ccsCred = {\r\n credential: `${clientInfo.uid}${Separators.CLIENT_INFO_SEPARATOR}${clientInfo.utid}`,\r\n type: CcsCredentialType.HOME_ACCOUNT_ID,\r\n };\r\n }\r\n catch (e) {\r\n this.logger.verbose(\"Could not parse client info for CCS Header: \" + e);\r\n }\r\n }\r\n else {\r\n ccsCred = request.ccsCredential;\r\n }\r\n // Adds these as parameters in the request instead of headers to prevent CORS preflight request\r\n if (this.config.systemOptions.preventCorsPreflight && ccsCred) {\r\n switch (ccsCred.type) {\r\n case CcsCredentialType.HOME_ACCOUNT_ID:\r\n try {\r\n const clientInfo = buildClientInfoFromHomeAccountId(ccsCred.credential);\r\n addCcsOid(parameters, clientInfo);\r\n }\r\n catch (e) {\r\n this.logger.verbose(\"Could not parse home account ID for CCS Header: \" +\r\n e);\r\n }\r\n break;\r\n case CcsCredentialType.UPN:\r\n addCcsUpn(parameters, ccsCred.credential);\r\n break;\r\n }\r\n }\r\n if (request.embeddedClientId) {\r\n addBrokerParameters(parameters, this.config.authOptions.clientId, this.config.authOptions.redirectUri);\r\n }\r\n if (request.tokenBodyParameters) {\r\n addExtraQueryParameters(parameters, request.tokenBodyParameters);\r\n }\r\n // Add hybrid spa parameters if not already provided\r\n if (request.enableSpaAuthorizationCode &&\r\n (!request.tokenBodyParameters ||\r\n !request.tokenBodyParameters[RETURN_SPA_CODE])) {\r\n addExtraQueryParameters(parameters, {\r\n [RETURN_SPA_CODE]: \"1\",\r\n });\r\n }\r\n instrumentBrokerParams(parameters, request.correlationId, this.performanceClient);\r\n return mapToQueryString(parameters);\r\n }\r\n /**\r\n * This API validates the `EndSessionRequest` and creates a URL\r\n * @param request\r\n */\r\n createLogoutUrlQueryString(request) {\r\n const parameters = new Map();\r\n if (request.postLogoutRedirectUri) {\r\n addPostLogoutRedirectUri(parameters, request.postLogoutRedirectUri);\r\n }\r\n if (request.correlationId) {\r\n addCorrelationId(parameters, request.correlationId);\r\n }\r\n if (request.idTokenHint) {\r\n addIdTokenHint(parameters, request.idTokenHint);\r\n }\r\n if (request.state) {\r\n addState(parameters, request.state);\r\n }\r\n if (request.logoutHint) {\r\n addLogoutHint(parameters, request.logoutHint);\r\n }\r\n if (request.extraQueryParameters) {\r\n addExtraQueryParameters(parameters, request.extraQueryParameters);\r\n }\r\n if (this.config.authOptions.instanceAware) {\r\n addInstanceAware(parameters);\r\n }\r\n return mapToQueryString(parameters, this.config.authOptions.encodeExtraQueryParams, request.extraQueryParameters);\r\n }\r\n}\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nconst DEFAULT_REFRESH_TOKEN_EXPIRATION_OFFSET_SECONDS = 300; // 5 Minutes\r\n/**\r\n * OAuth2.0 refresh token client\r\n * @internal\r\n */\r\nclass RefreshTokenClient extends BaseClient {\r\n constructor(configuration, performanceClient) {\r\n super(configuration, performanceClient);\r\n }\r\n async acquireToken(request) {\r\n this.performanceClient?.addQueueMeasurement(PerformanceEvents.RefreshTokenClientAcquireToken, request.correlationId);\r\n const reqTimestamp = nowSeconds();\r\n const response = await invokeAsync(this.executeTokenRequest.bind(this), PerformanceEvents.RefreshTokenClientExecuteTokenRequest, this.logger, this.performanceClient, request.correlationId)(request, this.authority);\r\n // Retrieve requestId from response headers\r\n const requestId = response.headers?.[HeaderNames.X_MS_REQUEST_ID];\r\n const responseHandler = new ResponseHandler(this.config.authOptions.clientId, this.cacheManager, this.cryptoUtils, this.logger, this.config.serializableCache, this.config.persistencePlugin);\r\n responseHandler.validateTokenResponse(response.body);\r\n return invokeAsync(responseHandler.handleServerTokenResponse.bind(responseHandler), PerformanceEvents.HandleServerTokenResponse, this.logger, this.performanceClient, request.correlationId)(response.body, this.authority, reqTimestamp, request, undefined, undefined, true, request.forceCache, requestId);\r\n }\r\n /**\r\n * Gets cached refresh token and attaches to request, then calls acquireToken API\r\n * @param request\r\n */\r\n async acquireTokenByRefreshToken(request) {\r\n // Cannot renew token if no request object is given.\r\n if (!request) {\r\n throw createClientConfigurationError(tokenRequestEmpty);\r\n }\r\n this.performanceClient?.addQueueMeasurement(PerformanceEvents.RefreshTokenClientAcquireTokenByRefreshToken, request.correlationId);\r\n // We currently do not support silent flow for account === null use cases; This will be revisited for confidential flow usecases\r\n if (!request.account) {\r\n throw createClientAuthError(noAccountInSilentRequest);\r\n }\r\n // try checking if FOCI is enabled for the given application\r\n const isFOCI = this.cacheManager.isAppMetadataFOCI(request.account.environment);\r\n // if the app is part of the family, retrive a Family refresh token if present and make a refreshTokenRequest\r\n if (isFOCI) {\r\n try {\r\n return await invokeAsync(this.acquireTokenWithCachedRefreshToken.bind(this), PerformanceEvents.RefreshTokenClientAcquireTokenWithCachedRefreshToken, this.logger, this.performanceClient, request.correlationId)(request, true);\r\n }\r\n catch (e) {\r\n const noFamilyRTInCache = e instanceof InteractionRequiredAuthError &&\r\n e.errorCode ===\r\n noTokensFound;\r\n const clientMismatchErrorWithFamilyRT = e instanceof ServerError &&\r\n e.errorCode === Errors.INVALID_GRANT_ERROR &&\r\n e.subError === Errors.CLIENT_MISMATCH_ERROR;\r\n // if family Refresh Token (FRT) cache acquisition fails or if client_mismatch error is seen with FRT, reattempt with application Refresh Token (ART)\r\n if (noFamilyRTInCache || clientMismatchErrorWithFamilyRT) {\r\n return invokeAsync(this.acquireTokenWithCachedRefreshToken.bind(this), PerformanceEvents.RefreshTokenClientAcquireTokenWithCachedRefreshToken, this.logger, this.performanceClient, request.correlationId)(request, false);\r\n // throw in all other cases\r\n }\r\n else {\r\n throw e;\r\n }\r\n }\r\n }\r\n // fall back to application refresh token acquisition\r\n return invokeAsync(this.acquireTokenWithCachedRefreshToken.bind(this), PerformanceEvents.RefreshTokenClientAcquireTokenWithCachedRefreshToken, this.logger, this.performanceClient, request.correlationId)(request, false);\r\n }\r\n /**\r\n * makes a network call to acquire tokens by exchanging RefreshToken available in userCache; throws if refresh token is not cached\r\n * @param request\r\n */\r\n async acquireTokenWithCachedRefreshToken(request, foci) {\r\n this.performanceClient?.addQueueMeasurement(PerformanceEvents.RefreshTokenClientAcquireTokenWithCachedRefreshToken, request.correlationId);\r\n // fetches family RT or application RT based on FOCI value\r\n const refreshToken = invoke(this.cacheManager.getRefreshToken.bind(this.cacheManager), PerformanceEvents.CacheManagerGetRefreshToken, this.logger, this.performanceClient, request.correlationId)(request.account, foci, request.correlationId, undefined, this.performanceClient);\r\n if (!refreshToken) {\r\n throw createInteractionRequiredAuthError(noTokensFound);\r\n }\r\n if (refreshToken.expiresOn &&\r\n isTokenExpired(refreshToken.expiresOn, request.refreshTokenExpirationOffsetSeconds ||\r\n DEFAULT_REFRESH_TOKEN_EXPIRATION_OFFSET_SECONDS)) {\r\n this.performanceClient?.addFields({ rtExpiresOnMs: Number(refreshToken.expiresOn) }, request.correlationId);\r\n throw createInteractionRequiredAuthError(refreshTokenExpired);\r\n }\r\n // attach cached RT size to the current measurement\r\n const refreshTokenRequest = {\r\n ...request,\r\n refreshToken: refreshToken.secret,\r\n authenticationScheme: request.authenticationScheme || AuthenticationScheme.BEARER,\r\n ccsCredential: {\r\n credential: request.account.homeAccountId,\r\n type: CcsCredentialType.HOME_ACCOUNT_ID,\r\n },\r\n };\r\n try {\r\n return await invokeAsync(this.acquireToken.bind(this), PerformanceEvents.RefreshTokenClientAcquireToken, this.logger, this.performanceClient, request.correlationId)(refreshTokenRequest);\r\n }\r\n catch (e) {\r\n if (e instanceof InteractionRequiredAuthError) {\r\n this.performanceClient?.addFields({ rtExpiresOnMs: Number(refreshToken.expiresOn) }, request.correlationId);\r\n if (e.subError === badToken) {\r\n // Remove bad refresh token from cache\r\n this.logger.verbose(\"acquireTokenWithRefreshToken: bad refresh token, removing from cache\");\r\n const badRefreshTokenKey = this.cacheManager.generateCredentialKey(refreshToken);\r\n this.cacheManager.removeRefreshToken(badRefreshTokenKey, request.correlationId);\r\n }\r\n }\r\n throw e;\r\n }\r\n }\r\n /**\r\n * Constructs the network message and makes a NW call to the underlying secure token service\r\n * @param request\r\n * @param authority\r\n */\r\n async executeTokenRequest(request, authority) {\r\n this.performanceClient?.addQueueMeasurement(PerformanceEvents.RefreshTokenClientExecuteTokenRequest, request.correlationId);\r\n const queryParametersString = this.createTokenQueryParameters(request);\r\n const endpoint = UrlString.appendQueryString(authority.tokenEndpoint, queryParametersString);\r\n const requestBody = await invokeAsync(this.createTokenRequestBody.bind(this), PerformanceEvents.RefreshTokenClientCreateTokenRequestBody, this.logger, this.performanceClient, request.correlationId)(request);\r\n const headers = this.createTokenRequestHeaders(request.ccsCredential);\r\n const thumbprint = getRequestThumbprint(this.config.authOptions.clientId, request);\r\n return invokeAsync(this.executePostToTokenEndpoint.bind(this), PerformanceEvents.RefreshTokenClientExecutePostToTokenEndpoint, this.logger, this.performanceClient, request.correlationId)(endpoint, requestBody, headers, thumbprint, request.correlationId, PerformanceEvents.RefreshTokenClientExecutePostToTokenEndpoint);\r\n }\r\n /**\r\n * Helper function to create the token request body\r\n * @param request\r\n */\r\n async createTokenRequestBody(request) {\r\n this.performanceClient?.addQueueMeasurement(PerformanceEvents.RefreshTokenClientCreateTokenRequestBody, request.correlationId);\r\n const parameters = new Map();\r\n addClientId(parameters, request.embeddedClientId ||\r\n request.tokenBodyParameters?.[CLIENT_ID] ||\r\n this.config.authOptions.clientId);\r\n if (request.redirectUri) {\r\n addRedirectUri(parameters, request.redirectUri);\r\n }\r\n addScopes(parameters, request.scopes, true, this.config.authOptions.authority.options.OIDCOptions?.defaultScopes);\r\n addGrantType(parameters, GrantType.REFRESH_TOKEN_GRANT);\r\n addClientInfo(parameters);\r\n addLibraryInfo(parameters, this.config.libraryInfo);\r\n addApplicationTelemetry(parameters, this.config.telemetry.application);\r\n addThrottling(parameters);\r\n if (this.serverTelemetryManager && !isOidcProtocolMode(this.config)) {\r\n addServerTelemetry(parameters, this.serverTelemetryManager);\r\n }\r\n addRefreshToken(parameters, request.refreshToken);\r\n if (this.config.clientCredentials.clientSecret) {\r\n addClientSecret(parameters, this.config.clientCredentials.clientSecret);\r\n }\r\n if (this.config.clientCredentials.clientAssertion) {\r\n const clientAssertion = this.config.clientCredentials.clientAssertion;\r\n addClientAssertion(parameters, await getClientAssertion(clientAssertion.assertion, this.config.authOptions.clientId, request.resourceRequestUri));\r\n addClientAssertionType(parameters, clientAssertion.assertionType);\r\n }\r\n if (request.authenticationScheme === AuthenticationScheme.POP) {\r\n const popTokenGenerator = new PopTokenGenerator(this.cryptoUtils, this.performanceClient);\r\n let reqCnfData;\r\n if (!request.popKid) {\r\n const generatedReqCnfData = await invokeAsync(popTokenGenerator.generateCnf.bind(popTokenGenerator), PerformanceEvents.PopTokenGenerateCnf, this.logger, this.performanceClient, request.correlationId)(request, this.logger);\r\n reqCnfData = generatedReqCnfData.reqCnfString;\r\n }\r\n else {\r\n reqCnfData = this.cryptoUtils.encodeKid(request.popKid);\r\n }\r\n // SPA PoP requires full Base64Url encoded req_cnf string (unhashed)\r\n addPopToken(parameters, reqCnfData);\r\n }\r\n else if (request.authenticationScheme === AuthenticationScheme.SSH) {\r\n if (request.sshJwk) {\r\n addSshJwk(parameters, request.sshJwk);\r\n }\r\n else {\r\n throw createClientConfigurationError(missingSshJwk);\r\n }\r\n }\r\n if (!StringUtils.isEmptyObj(request.claims) ||\r\n (this.config.authOptions.clientCapabilities &&\r\n this.config.authOptions.clientCapabilities.length > 0)) {\r\n addClaims(parameters, request.claims, this.config.authOptions.clientCapabilities);\r\n }\r\n if (this.config.systemOptions.preventCorsPreflight &&\r\n request.ccsCredential) {\r\n switch (request.ccsCredential.type) {\r\n case CcsCredentialType.HOME_ACCOUNT_ID:\r\n try {\r\n const clientInfo = buildClientInfoFromHomeAccountId(request.ccsCredential.credential);\r\n addCcsOid(parameters, clientInfo);\r\n }\r\n catch (e) {\r\n this.logger.verbose(\"Could not parse home account ID for CCS Header: \" +\r\n e);\r\n }\r\n break;\r\n case CcsCredentialType.UPN:\r\n addCcsUpn(parameters, request.ccsCredential.credential);\r\n break;\r\n }\r\n }\r\n if (request.embeddedClientId) {\r\n addBrokerParameters(parameters, this.config.authOptions.clientId, this.config.authOptions.redirectUri);\r\n }\r\n if (request.tokenBodyParameters) {\r\n addExtraQueryParameters(parameters, request.tokenBodyParameters);\r\n }\r\n instrumentBrokerParams(parameters, request.correlationId, this.performanceClient);\r\n return mapToQueryString(parameters);\r\n }\r\n}\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/** @internal */\r\nclass SilentFlowClient extends BaseClient {\r\n constructor(configuration, performanceClient) {\r\n super(configuration, performanceClient);\r\n }\r\n /**\r\n * Retrieves token from cache or throws an error if it must be refreshed.\r\n * @param request\r\n */\r\n async acquireCachedToken(request) {\r\n this.performanceClient?.addQueueMeasurement(PerformanceEvents.SilentFlowClientAcquireCachedToken, request.correlationId);\r\n let lastCacheOutcome = CacheOutcome.NOT_APPLICABLE;\r\n if (request.forceRefresh ||\r\n (!this.config.cacheOptions.claimsBasedCachingEnabled &&\r\n !StringUtils.isEmptyObj(request.claims))) {\r\n // Must refresh due to present force_refresh flag.\r\n this.setCacheOutcome(CacheOutcome.FORCE_REFRESH_OR_CLAIMS, request.correlationId);\r\n throw createClientAuthError(tokenRefreshRequired);\r\n }\r\n // We currently do not support silent flow for account === null use cases; This will be revisited for confidential flow usecases\r\n if (!request.account) {\r\n throw createClientAuthError(noAccountInSilentRequest);\r\n }\r\n const requestTenantId = request.account.tenantId ||\r\n getTenantFromAuthorityString(request.authority);\r\n const tokenKeys = this.cacheManager.getTokenKeys();\r\n const cachedAccessToken = this.cacheManager.getAccessToken(request.account, request, tokenKeys, requestTenantId);\r\n if (!cachedAccessToken) {\r\n // must refresh due to non-existent access_token\r\n this.setCacheOutcome(CacheOutcome.NO_CACHED_ACCESS_TOKEN, request.correlationId);\r\n throw createClientAuthError(tokenRefreshRequired);\r\n }\r\n else if (wasClockTurnedBack(cachedAccessToken.cachedAt) ||\r\n isTokenExpired(cachedAccessToken.expiresOn, this.config.systemOptions.tokenRenewalOffsetSeconds)) {\r\n // must refresh due to the expires_in value\r\n this.setCacheOutcome(CacheOutcome.CACHED_ACCESS_TOKEN_EXPIRED, request.correlationId);\r\n throw createClientAuthError(tokenRefreshRequired);\r\n }\r\n else if (cachedAccessToken.refreshOn &&\r\n isTokenExpired(cachedAccessToken.refreshOn, 0)) {\r\n // must refresh (in the background) due to the refresh_in value\r\n lastCacheOutcome = CacheOutcome.PROACTIVELY_REFRESHED;\r\n // don't throw ClientAuthError.createRefreshRequiredError(), return cached token instead\r\n }\r\n const environment = request.authority || this.authority.getPreferredCache();\r\n const cacheRecord = {\r\n account: this.cacheManager.getAccount(this.cacheManager.generateAccountKey(request.account), request.correlationId),\r\n accessToken: cachedAccessToken,\r\n idToken: this.cacheManager.getIdToken(request.account, request.correlationId, tokenKeys, requestTenantId, this.performanceClient),\r\n refreshToken: null,\r\n appMetadata: this.cacheManager.readAppMetadataFromCache(environment),\r\n };\r\n this.setCacheOutcome(lastCacheOutcome, request.correlationId);\r\n if (this.config.serverTelemetryManager) {\r\n this.config.serverTelemetryManager.incrementCacheHits();\r\n }\r\n return [\r\n await invokeAsync(this.generateResultFromCacheRecord.bind(this), PerformanceEvents.SilentFlowClientGenerateResultFromCacheRecord, this.logger, this.performanceClient, request.correlationId)(cacheRecord, request),\r\n lastCacheOutcome,\r\n ];\r\n }\r\n setCacheOutcome(cacheOutcome, correlationId) {\r\n this.serverTelemetryManager?.setCacheOutcome(cacheOutcome);\r\n this.performanceClient?.addFields({\r\n cacheOutcome: cacheOutcome,\r\n }, correlationId);\r\n if (cacheOutcome !== CacheOutcome.NOT_APPLICABLE) {\r\n this.logger.info(`Token refresh is required due to cache outcome: ${cacheOutcome}`);\r\n }\r\n }\r\n /**\r\n * Helper function to build response object from the CacheRecord\r\n * @param cacheRecord\r\n */\r\n async generateResultFromCacheRecord(cacheRecord, request) {\r\n this.performanceClient?.addQueueMeasurement(PerformanceEvents.SilentFlowClientGenerateResultFromCacheRecord, request.correlationId);\r\n let idTokenClaims;\r\n if (cacheRecord.idToken) {\r\n idTokenClaims = extractTokenClaims(cacheRecord.idToken.secret, this.config.cryptoInterface.base64Decode);\r\n }\r\n // token max_age check\r\n if (request.maxAge || request.maxAge === 0) {\r\n const authTime = idTokenClaims?.auth_time;\r\n if (!authTime) {\r\n throw createClientAuthError(authTimeNotFound);\r\n }\r\n checkMaxAge(authTime, request.maxAge);\r\n }\r\n return ResponseHandler.generateAuthenticationResult(this.cryptoUtils, this.authority, cacheRecord, true, request, idTokenClaims);\r\n }\r\n}\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nconst StubbedNetworkModule = {\r\n sendGetRequestAsync: () => {\r\n return Promise.reject(createClientAuthError(methodNotImplemented));\r\n },\r\n sendPostRequestAsync: () => {\r\n return Promise.reject(createClientAuthError(methodNotImplemented));\r\n },\r\n};\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * Returns map of parameters that are applicable to all calls to /authorize whether using PKCE or EAR\r\n * @param config\r\n * @param request\r\n * @param logger\r\n * @param performanceClient\r\n * @returns\r\n */\r\nfunction getStandardAuthorizeRequestParameters(authOptions, request, logger, performanceClient) {\r\n // generate the correlationId if not set by the user and add\r\n const correlationId = request.correlationId;\r\n const parameters = new Map();\r\n addClientId(parameters, request.embeddedClientId ||\r\n request.extraQueryParameters?.[CLIENT_ID] ||\r\n authOptions.clientId);\r\n const requestScopes = [\r\n ...(request.scopes || []),\r\n ...(request.extraScopesToConsent || []),\r\n ];\r\n addScopes(parameters, requestScopes, true, authOptions.authority.options.OIDCOptions?.defaultScopes);\r\n addRedirectUri(parameters, request.redirectUri);\r\n addCorrelationId(parameters, correlationId);\r\n // add response_mode. If not passed in it defaults to query.\r\n addResponseMode(parameters, request.responseMode);\r\n // add client_info=1\r\n addClientInfo(parameters);\r\n if (request.prompt) {\r\n addPrompt(parameters, request.prompt);\r\n performanceClient?.addFields({ prompt: request.prompt }, correlationId);\r\n }\r\n if (request.domainHint) {\r\n addDomainHint(parameters, request.domainHint);\r\n performanceClient?.addFields({ domainHintFromRequest: true }, correlationId);\r\n }\r\n // Add sid or loginHint with preference for login_hint claim (in request) -> sid -> loginHint (upn/email) -> username of AccountInfo object\r\n if (request.prompt !== PromptValue.SELECT_ACCOUNT) {\r\n // AAD will throw if prompt=select_account is passed with an account hint\r\n if (request.sid && request.prompt === PromptValue.NONE) {\r\n // SessionID is only used in silent calls\r\n logger.verbose(\"createAuthCodeUrlQueryString: Prompt is none, adding sid from request\");\r\n addSid(parameters, request.sid);\r\n performanceClient?.addFields({ sidFromRequest: true }, correlationId);\r\n }\r\n else if (request.account) {\r\n const accountSid = extractAccountSid(request.account);\r\n let accountLoginHintClaim = extractLoginHint(request.account);\r\n if (accountLoginHintClaim && request.domainHint) {\r\n logger.warning(`AuthorizationCodeClient.createAuthCodeUrlQueryString: \"domainHint\" param is set, skipping opaque \"login_hint\" claim. Please consider not passing domainHint`);\r\n accountLoginHintClaim = null;\r\n }\r\n // If login_hint claim is present, use it over sid/username\r\n if (accountLoginHintClaim) {\r\n logger.verbose(\"createAuthCodeUrlQueryString: login_hint claim present on account\");\r\n addLoginHint(parameters, accountLoginHintClaim);\r\n performanceClient?.addFields({ loginHintFromClaim: true }, correlationId);\r\n try {\r\n const clientInfo = buildClientInfoFromHomeAccountId(request.account.homeAccountId);\r\n addCcsOid(parameters, clientInfo);\r\n }\r\n catch (e) {\r\n logger.verbose(\"createAuthCodeUrlQueryString: Could not parse home account ID for CCS Header\");\r\n }\r\n }\r\n else if (accountSid && request.prompt === PromptValue.NONE) {\r\n /*\r\n * If account and loginHint are provided, we will check account first for sid before adding loginHint\r\n * SessionId is only used in silent calls\r\n */\r\n logger.verbose(\"createAuthCodeUrlQueryString: Prompt is none, adding sid from account\");\r\n addSid(parameters, accountSid);\r\n performanceClient?.addFields({ sidFromClaim: true }, correlationId);\r\n try {\r\n const clientInfo = buildClientInfoFromHomeAccountId(request.account.homeAccountId);\r\n addCcsOid(parameters, clientInfo);\r\n }\r\n catch (e) {\r\n logger.verbose(\"createAuthCodeUrlQueryString: Could not parse home account ID for CCS Header\");\r\n }\r\n }\r\n else if (request.loginHint) {\r\n logger.verbose(\"createAuthCodeUrlQueryString: Adding login_hint from request\");\r\n addLoginHint(parameters, request.loginHint);\r\n addCcsUpn(parameters, request.loginHint);\r\n performanceClient?.addFields({ loginHintFromRequest: true }, correlationId);\r\n }\r\n else if (request.account.username) {\r\n // Fallback to account username if provided\r\n logger.verbose(\"createAuthCodeUrlQueryString: Adding login_hint from account\");\r\n addLoginHint(parameters, request.account.username);\r\n performanceClient?.addFields({ loginHintFromUpn: true }, correlationId);\r\n try {\r\n const clientInfo = buildClientInfoFromHomeAccountId(request.account.homeAccountId);\r\n addCcsOid(parameters, clientInfo);\r\n }\r\n catch (e) {\r\n logger.verbose(\"createAuthCodeUrlQueryString: Could not parse home account ID for CCS Header\");\r\n }\r\n }\r\n }\r\n else if (request.loginHint) {\r\n logger.verbose(\"createAuthCodeUrlQueryString: No account, adding login_hint from request\");\r\n addLoginHint(parameters, request.loginHint);\r\n addCcsUpn(parameters, request.loginHint);\r\n performanceClient?.addFields({ loginHintFromRequest: true }, correlationId);\r\n }\r\n }\r\n else {\r\n logger.verbose(\"createAuthCodeUrlQueryString: Prompt is select_account, ignoring account hints\");\r\n }\r\n if (request.nonce) {\r\n addNonce(parameters, request.nonce);\r\n }\r\n if (request.state) {\r\n addState(parameters, request.state);\r\n }\r\n if (request.claims ||\r\n (authOptions.clientCapabilities &&\r\n authOptions.clientCapabilities.length > 0)) {\r\n addClaims(parameters, request.claims, authOptions.clientCapabilities);\r\n }\r\n if (request.embeddedClientId) {\r\n addBrokerParameters(parameters, authOptions.clientId, authOptions.redirectUri);\r\n }\r\n // If extraQueryParameters includes instance_aware its value will be added when extraQueryParameters are added\r\n if (authOptions.instanceAware &&\r\n (!request.extraQueryParameters ||\r\n !Object.keys(request.extraQueryParameters).includes(INSTANCE_AWARE))) {\r\n addInstanceAware(parameters);\r\n }\r\n return parameters;\r\n}\r\n/**\r\n * Returns authorize endpoint with given request parameters in the query string\r\n * @param authority\r\n * @param requestParameters\r\n * @returns\r\n */\r\nfunction getAuthorizeUrl(authority, requestParameters, encodeParams, extraQueryParameters) {\r\n const queryString = mapToQueryString(requestParameters, encodeParams, extraQueryParameters);\r\n return UrlString.appendQueryString(authority.authorizationEndpoint, queryString);\r\n}\r\n/**\r\n * Handles the hash fragment response from public client code request. Returns a code response used by\r\n * the client to exchange for a token in acquireToken.\r\n * @param serverParams\r\n * @param cachedState\r\n */\r\nfunction getAuthorizationCodePayload(serverParams, cachedState) {\r\n // Get code response\r\n validateAuthorizationResponse(serverParams, cachedState);\r\n // throw when there is no auth code in the response\r\n if (!serverParams.code) {\r\n throw createClientAuthError(authorizationCodeMissingFromServerResponse);\r\n }\r\n return serverParams;\r\n}\r\n/**\r\n * Function which validates server authorization code response.\r\n * @param serverResponseHash\r\n * @param requestState\r\n */\r\nfunction validateAuthorizationResponse(serverResponse, requestState) {\r\n if (!serverResponse.state || !requestState) {\r\n throw serverResponse.state\r\n ? createClientAuthError(stateNotFound, \"Cached State\")\r\n : createClientAuthError(stateNotFound, \"Server State\");\r\n }\r\n let decodedServerResponseState;\r\n let decodedRequestState;\r\n try {\r\n decodedServerResponseState = decodeURIComponent(serverResponse.state);\r\n }\r\n catch (e) {\r\n throw createClientAuthError(invalidState, serverResponse.state);\r\n }\r\n try {\r\n decodedRequestState = decodeURIComponent(requestState);\r\n }\r\n catch (e) {\r\n throw createClientAuthError(invalidState, serverResponse.state);\r\n }\r\n if (decodedServerResponseState !== decodedRequestState) {\r\n throw createClientAuthError(stateMismatch);\r\n }\r\n // Check for error\r\n if (serverResponse.error ||\r\n serverResponse.error_description ||\r\n serverResponse.suberror) {\r\n const serverErrorNo = parseServerErrorNo(serverResponse);\r\n if (isInteractionRequiredError(serverResponse.error, serverResponse.error_description, serverResponse.suberror)) {\r\n throw new InteractionRequiredAuthError(serverResponse.error || \"\", serverResponse.error_description, serverResponse.suberror, serverResponse.timestamp || \"\", serverResponse.trace_id || \"\", serverResponse.correlation_id || \"\", serverResponse.claims || \"\", serverErrorNo);\r\n }\r\n throw new ServerError(serverResponse.error || \"\", serverResponse.error_description, serverResponse.suberror, serverErrorNo);\r\n }\r\n}\r\n/**\r\n * Get server error No from the error_uri\r\n * @param serverResponse\r\n * @returns\r\n */\r\nfunction parseServerErrorNo(serverResponse) {\r\n const errorCodePrefix = \"code=\";\r\n const errorCodePrefixIndex = serverResponse.error_uri?.lastIndexOf(errorCodePrefix);\r\n return errorCodePrefixIndex && errorCodePrefixIndex >= 0\r\n ? serverResponse.error_uri?.substring(errorCodePrefixIndex + errorCodePrefix.length)\r\n : undefined;\r\n}\r\n/**\r\n * Helper to get sid from account. Returns null if idTokenClaims are not present or sid is not present.\r\n * @param account\r\n */\r\nfunction extractAccountSid(account) {\r\n return account.idTokenClaims?.sid || null;\r\n}\r\nfunction extractLoginHint(account) {\r\n return account.loginHint || account.idTokenClaims?.login_hint || null;\r\n}\n\nvar Authorize = /*#__PURE__*/Object.freeze({\n __proto__: null,\n getAuthorizationCodePayload: getAuthorizationCodePayload,\n getAuthorizeUrl: getAuthorizeUrl,\n getStandardAuthorizeRequestParameters: getStandardAuthorizeRequestParameters,\n validateAuthorizationResponse: validateAuthorizationResponse\n});\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * This is a helper class that parses supported HTTP response authentication headers to extract and return\r\n * header challenge values that can be used outside the basic authorization flows.\r\n */\r\nclass AuthenticationHeaderParser {\r\n constructor(headers) {\r\n this.headers = headers;\r\n }\r\n /**\r\n * This method parses the SHR nonce value out of either the Authentication-Info or WWW-Authenticate authentication headers.\r\n * @returns\r\n */\r\n getShrNonce() {\r\n // Attempt to parse nonce from Authentiacation-Info\r\n const authenticationInfo = this.headers[HeaderNames.AuthenticationInfo];\r\n if (authenticationInfo) {\r\n const authenticationInfoChallenges = this.parseChallenges(authenticationInfo);\r\n if (authenticationInfoChallenges.nextnonce) {\r\n return authenticationInfoChallenges.nextnonce;\r\n }\r\n throw createClientConfigurationError(invalidAuthenticationHeader);\r\n }\r\n // Attempt to parse nonce from WWW-Authenticate\r\n const wwwAuthenticate = this.headers[HeaderNames.WWWAuthenticate];\r\n if (wwwAuthenticate) {\r\n const wwwAuthenticateChallenges = this.parseChallenges(wwwAuthenticate);\r\n if (wwwAuthenticateChallenges.nonce) {\r\n return wwwAuthenticateChallenges.nonce;\r\n }\r\n throw createClientConfigurationError(invalidAuthenticationHeader);\r\n }\r\n // If neither header is present, throw missing headers error\r\n throw createClientConfigurationError(missingNonceAuthenticationHeader);\r\n }\r\n /**\r\n * Parses an HTTP header's challenge set into a key/value map.\r\n * @param header\r\n * @returns\r\n */\r\n parseChallenges(header) {\r\n const schemeSeparator = header.indexOf(\" \");\r\n const challenges = header.substr(schemeSeparator + 1).split(\",\");\r\n const challengeMap = {};\r\n challenges.forEach((challenge) => {\r\n const [key, value] = challenge.split(\"=\");\r\n // Remove escaped quotation marks (', \") from challenge string to keep only the challenge value\r\n challengeMap[key] = unescape(value.replace(/['\"]+/g, Constants.EMPTY_STRING));\r\n });\r\n return challengeMap;\r\n }\r\n}\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * Converts a numeric tag to a string representation\r\n * @param tag - The numeric tag to convert\r\n * @returns The string representation of the tag\r\n */\r\nfunction tagToString(tag) {\r\n if (tag === 0) {\r\n return \"UNTAG\";\r\n }\r\n const tagSymbolSpace = \"abcdefghijklmnopqrstuvwxyz0123456789****************************\";\r\n let tagBuffer = \"*****\";\r\n const chars = [\r\n tagSymbolSpace[(tag >> 24) & 0x3f],\r\n tagSymbolSpace[(tag >> 18) & 0x3f],\r\n tagSymbolSpace[(tag >> 12) & 0x3f],\r\n tagSymbolSpace[(tag >> 6) & 0x3f],\r\n tagSymbolSpace[(tag >> 0) & 0x3f],\r\n ];\r\n tagBuffer = chars.join(\"\");\r\n return tagBuffer;\r\n}\r\n/**\r\n * Error class for MSAL Runtime errors that preserves detailed broker information\r\n */\r\nclass PlatformBrokerError extends AuthError {\r\n constructor(errorStatus, errorContext, errorCode, errorTag) {\r\n const tagString = tagToString(errorTag);\r\n const enhancedErrorContext = errorContext\r\n ? `${errorContext} (Error Code: ${errorCode}, Tag: ${tagString})`\r\n : `(Error Code: ${errorCode}, Tag: ${tagString})`;\r\n super(errorStatus, enhancedErrorContext);\r\n this.name = \"PlatformBrokerError\";\r\n this.statusCode = errorCode;\r\n this.tag = tagString;\r\n Object.setPrototypeOf(this, PlatformBrokerError.prototype);\r\n }\r\n}\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nconst skuGroupSeparator = \",\";\r\nconst skuValueSeparator = \"|\";\r\nfunction makeExtraSkuString(params) {\r\n const { skus, libraryName, libraryVersion, extensionName, extensionVersion, } = params;\r\n const skuMap = new Map([\r\n [0, [libraryName, libraryVersion]],\r\n [2, [extensionName, extensionVersion]],\r\n ]);\r\n let skuArr = [];\r\n if (skus?.length) {\r\n skuArr = skus.split(skuGroupSeparator);\r\n // Ignore invalid input sku param\r\n if (skuArr.length < 4) {\r\n return skus;\r\n }\r\n }\r\n else {\r\n skuArr = Array.from({ length: 4 }, () => skuValueSeparator);\r\n }\r\n skuMap.forEach((value, key) => {\r\n if (value.length === 2 && value[0]?.length && value[1]?.length) {\r\n setSku({\r\n skuArr,\r\n index: key,\r\n skuName: value[0],\r\n skuVersion: value[1],\r\n });\r\n }\r\n });\r\n return skuArr.join(skuGroupSeparator);\r\n}\r\nfunction setSku(params) {\r\n const { skuArr, index, skuName, skuVersion } = params;\r\n if (index >= skuArr.length) {\r\n return;\r\n }\r\n skuArr[index] = [skuName, skuVersion].join(skuValueSeparator);\r\n}\r\n/** @internal */\r\nclass ServerTelemetryManager {\r\n constructor(telemetryRequest, cacheManager) {\r\n this.cacheOutcome = CacheOutcome.NOT_APPLICABLE;\r\n this.cacheManager = cacheManager;\r\n this.apiId = telemetryRequest.apiId;\r\n this.correlationId = telemetryRequest.correlationId;\r\n this.wrapperSKU = telemetryRequest.wrapperSKU || Constants.EMPTY_STRING;\r\n this.wrapperVer = telemetryRequest.wrapperVer || Constants.EMPTY_STRING;\r\n this.telemetryCacheKey =\r\n SERVER_TELEM_CONSTANTS.CACHE_KEY +\r\n Separators.CACHE_KEY_SEPARATOR +\r\n telemetryRequest.clientId;\r\n }\r\n /**\r\n * API to add MSER Telemetry to request\r\n */\r\n generateCurrentRequestHeaderValue() {\r\n const request = `${this.apiId}${SERVER_TELEM_CONSTANTS.VALUE_SEPARATOR}${this.cacheOutcome}`;\r\n const platformFieldsArr = [this.wrapperSKU, this.wrapperVer];\r\n const nativeBrokerErrorCode = this.getNativeBrokerErrorCode();\r\n if (nativeBrokerErrorCode?.length) {\r\n platformFieldsArr.push(`broker_error=${nativeBrokerErrorCode}`);\r\n }\r\n const platformFields = platformFieldsArr.join(SERVER_TELEM_CONSTANTS.VALUE_SEPARATOR);\r\n const regionDiscoveryFields = this.getRegionDiscoveryFields();\r\n const requestWithRegionDiscoveryFields = [\r\n request,\r\n regionDiscoveryFields,\r\n ].join(SERVER_TELEM_CONSTANTS.VALUE_SEPARATOR);\r\n return [\r\n SERVER_TELEM_CONSTANTS.SCHEMA_VERSION,\r\n requestWithRegionDiscoveryFields,\r\n platformFields,\r\n ].join(SERVER_TELEM_CONSTANTS.CATEGORY_SEPARATOR);\r\n }\r\n /**\r\n * API to add MSER Telemetry for the last failed request\r\n */\r\n generateLastRequestHeaderValue() {\r\n const lastRequests = this.getLastRequests();\r\n const maxErrors = ServerTelemetryManager.maxErrorsToSend(lastRequests);\r\n const failedRequests = lastRequests.failedRequests\r\n .slice(0, 2 * maxErrors)\r\n .join(SERVER_TELEM_CONSTANTS.VALUE_SEPARATOR);\r\n const errors = lastRequests.errors\r\n .slice(0, maxErrors)\r\n .join(SERVER_TELEM_CONSTANTS.VALUE_SEPARATOR);\r\n const errorCount = lastRequests.errors.length;\r\n // Indicate whether this header contains all data or partial data\r\n const overflow = maxErrors < errorCount\r\n ? SERVER_TELEM_CONSTANTS.OVERFLOW_TRUE\r\n : SERVER_TELEM_CONSTANTS.OVERFLOW_FALSE;\r\n const platformFields = [errorCount, overflow].join(SERVER_TELEM_CONSTANTS.VALUE_SEPARATOR);\r\n return [\r\n SERVER_TELEM_CONSTANTS.SCHEMA_VERSION,\r\n lastRequests.cacheHits,\r\n failedRequests,\r\n errors,\r\n platformFields,\r\n ].join(SERVER_TELEM_CONSTANTS.CATEGORY_SEPARATOR);\r\n }\r\n /**\r\n * API to cache token failures for MSER data capture\r\n * @param error\r\n */\r\n cacheFailedRequest(error) {\r\n const lastRequests = this.getLastRequests();\r\n if (lastRequests.errors.length >=\r\n SERVER_TELEM_CONSTANTS.MAX_CACHED_ERRORS) {\r\n // Remove a cached error to make room, first in first out\r\n lastRequests.failedRequests.shift(); // apiId\r\n lastRequests.failedRequests.shift(); // correlationId\r\n lastRequests.errors.shift();\r\n }\r\n lastRequests.failedRequests.push(this.apiId, this.correlationId);\r\n if (error instanceof Error && !!error && error.toString()) {\r\n if (error instanceof AuthError) {\r\n if (error.subError) {\r\n lastRequests.errors.push(error.subError);\r\n }\r\n else if (error.errorCode) {\r\n lastRequests.errors.push(error.errorCode);\r\n }\r\n else {\r\n lastRequests.errors.push(error.toString());\r\n }\r\n }\r\n else {\r\n lastRequests.errors.push(error.toString());\r\n }\r\n }\r\n else {\r\n lastRequests.errors.push(SERVER_TELEM_CONSTANTS.UNKNOWN_ERROR);\r\n }\r\n this.cacheManager.setServerTelemetry(this.telemetryCacheKey, lastRequests, this.correlationId);\r\n return;\r\n }\r\n /**\r\n * Update server telemetry cache entry by incrementing cache hit counter\r\n */\r\n incrementCacheHits() {\r\n const lastRequests = this.getLastRequests();\r\n lastRequests.cacheHits += 1;\r\n this.cacheManager.setServerTelemetry(this.telemetryCacheKey, lastRequests, this.correlationId);\r\n return lastRequests.cacheHits;\r\n }\r\n /**\r\n * Get the server telemetry entity from cache or initialize a new one\r\n */\r\n getLastRequests() {\r\n const initialValue = {\r\n failedRequests: [],\r\n errors: [],\r\n cacheHits: 0,\r\n };\r\n const lastRequests = this.cacheManager.getServerTelemetry(this.telemetryCacheKey);\r\n return lastRequests || initialValue;\r\n }\r\n /**\r\n * Remove server telemetry cache entry\r\n */\r\n clearTelemetryCache() {\r\n const lastRequests = this.getLastRequests();\r\n const numErrorsFlushed = ServerTelemetryManager.maxErrorsToSend(lastRequests);\r\n const errorCount = lastRequests.errors.length;\r\n if (numErrorsFlushed === errorCount) {\r\n // All errors were sent on last request, clear Telemetry cache\r\n this.cacheManager.removeItem(this.telemetryCacheKey, this.correlationId);\r\n }\r\n else {\r\n // Partial data was flushed to server, construct a new telemetry cache item with errors that were not flushed\r\n const serverTelemEntity = {\r\n failedRequests: lastRequests.failedRequests.slice(numErrorsFlushed * 2),\r\n errors: lastRequests.errors.slice(numErrorsFlushed),\r\n cacheHits: 0,\r\n };\r\n this.cacheManager.setServerTelemetry(this.telemetryCacheKey, serverTelemEntity, this.correlationId);\r\n }\r\n }\r\n /**\r\n * Returns the maximum number of errors that can be flushed to the server in the next network request\r\n * @param serverTelemetryEntity\r\n */\r\n static maxErrorsToSend(serverTelemetryEntity) {\r\n let i;\r\n let maxErrors = 0;\r\n let dataSize = 0;\r\n const errorCount = serverTelemetryEntity.errors.length;\r\n for (i = 0; i < errorCount; i++) {\r\n // failedRequests parameter contains pairs of apiId and correlationId, multiply index by 2 to preserve pairs\r\n const apiId = serverTelemetryEntity.failedRequests[2 * i] ||\r\n Constants.EMPTY_STRING;\r\n const correlationId = serverTelemetryEntity.failedRequests[2 * i + 1] ||\r\n Constants.EMPTY_STRING;\r\n const errorCode = serverTelemetryEntity.errors[i] || Constants.EMPTY_STRING;\r\n // Count number of characters that would be added to header, each character is 1 byte. Add 3 at the end to account for separators\r\n dataSize +=\r\n apiId.toString().length +\r\n correlationId.toString().length +\r\n errorCode.length +\r\n 3;\r\n if (dataSize < SERVER_TELEM_CONSTANTS.MAX_LAST_HEADER_BYTES) {\r\n // Adding this entry to the header would still keep header size below the limit\r\n maxErrors += 1;\r\n }\r\n else {\r\n break;\r\n }\r\n }\r\n return maxErrors;\r\n }\r\n /**\r\n * Get the region discovery fields\r\n *\r\n * @returns string\r\n */\r\n getRegionDiscoveryFields() {\r\n const regionDiscoveryFields = [];\r\n regionDiscoveryFields.push(this.regionUsed || Constants.EMPTY_STRING);\r\n regionDiscoveryFields.push(this.regionSource || Constants.EMPTY_STRING);\r\n regionDiscoveryFields.push(this.regionOutcome || Constants.EMPTY_STRING);\r\n return regionDiscoveryFields.join(\",\");\r\n }\r\n /**\r\n * Update the region discovery metadata\r\n *\r\n * @param regionDiscoveryMetadata\r\n * @returns void\r\n */\r\n updateRegionDiscoveryMetadata(regionDiscoveryMetadata) {\r\n this.regionUsed = regionDiscoveryMetadata.region_used;\r\n this.regionSource = regionDiscoveryMetadata.region_source;\r\n this.regionOutcome = regionDiscoveryMetadata.region_outcome;\r\n }\r\n /**\r\n * Set cache outcome\r\n */\r\n setCacheOutcome(cacheOutcome) {\r\n this.cacheOutcome = cacheOutcome;\r\n }\r\n setNativeBrokerErrorCode(errorCode) {\r\n const lastRequests = this.getLastRequests();\r\n lastRequests.nativeBrokerErrorCode = errorCode;\r\n this.cacheManager.setServerTelemetry(this.telemetryCacheKey, lastRequests, this.correlationId);\r\n }\r\n getNativeBrokerErrorCode() {\r\n return this.getLastRequests().nativeBrokerErrorCode;\r\n }\r\n clearNativeBrokerErrorCode() {\r\n const lastRequests = this.getLastRequests();\r\n delete lastRequests.nativeBrokerErrorCode;\r\n this.cacheManager.setServerTelemetry(this.telemetryCacheKey, lastRequests, this.correlationId);\r\n }\r\n static makeExtraSkuString(params) {\r\n return makeExtraSkuString(params);\r\n }\r\n}\n\nexports.AADAuthorityConstants = AADAuthorityConstants;\nexports.AADServerParamKeys = AADServerParamKeys;\nexports.AccountEntity = AccountEntity;\nexports.AuthError = AuthError;\nexports.AuthErrorCodes = AuthErrorCodes;\nexports.AuthErrorMessage = AuthErrorMessage;\nexports.AuthToken = AuthToken;\nexports.AuthenticationHeaderParser = AuthenticationHeaderParser;\nexports.AuthenticationScheme = AuthenticationScheme;\nexports.Authority = Authority;\nexports.AuthorityFactory = AuthorityFactory;\nexports.AuthorityType = AuthorityType;\nexports.AuthorizationCodeClient = AuthorizationCodeClient;\nexports.Authorize = Authorize;\nexports.AzureCloudInstance = AzureCloudInstance;\nexports.BaseClient = BaseClient;\nexports.CacheAccountType = CacheAccountType;\nexports.CacheError = CacheError;\nexports.CacheErrorCodes = CacheErrorCodes;\nexports.CacheHelpers = CacheHelpers;\nexports.CacheManager = CacheManager;\nexports.CacheOutcome = CacheOutcome;\nexports.CacheType = CacheType;\nexports.CcsCredentialType = CcsCredentialType;\nexports.ClaimsRequestKeys = ClaimsRequestKeys;\nexports.ClientAssertionUtils = ClientAssertionUtils;\nexports.ClientAuthError = ClientAuthError;\nexports.ClientAuthErrorCodes = ClientAuthErrorCodes;\nexports.ClientAuthErrorMessage = ClientAuthErrorMessage;\nexports.ClientConfigurationError = ClientConfigurationError;\nexports.ClientConfigurationErrorCodes = ClientConfigurationErrorCodes;\nexports.ClientConfigurationErrorMessage = ClientConfigurationErrorMessage;\nexports.CodeChallengeMethodValues = CodeChallengeMethodValues;\nexports.Constants = Constants;\nexports.CredentialType = CredentialType;\nexports.DEFAULT_CRYPTO_IMPLEMENTATION = DEFAULT_CRYPTO_IMPLEMENTATION;\nexports.DEFAULT_SYSTEM_OPTIONS = DEFAULT_SYSTEM_OPTIONS;\nexports.DEFAULT_TOKEN_RENEWAL_OFFSET_SEC = DEFAULT_TOKEN_RENEWAL_OFFSET_SEC;\nexports.DefaultStorageClass = DefaultStorageClass;\nexports.EncodingTypes = EncodingTypes;\nexports.Errors = Errors;\nexports.GrantType = GrantType;\nexports.HeaderNames = HeaderNames;\nexports.HttpMethod = HttpMethod;\nexports.HttpStatus = HttpStatus;\nexports.IntFields = IntFields;\nexports.InteractionRequiredAuthError = InteractionRequiredAuthError;\nexports.InteractionRequiredAuthErrorCodes = InteractionRequiredAuthErrorCodes;\nexports.InteractionRequiredAuthErrorMessage = InteractionRequiredAuthErrorMessage;\nexports.JsonWebTokenTypes = JsonWebTokenTypes;\nexports.Logger = Logger;\nexports.NetworkError = NetworkError;\nexports.OAuthResponseType = OAuthResponseType;\nexports.OIDC_DEFAULT_SCOPES = OIDC_DEFAULT_SCOPES;\nexports.ONE_DAY_IN_MS = ONE_DAY_IN_MS;\nexports.PasswordGrantConstants = PasswordGrantConstants;\nexports.PerformanceEventAbbreviations = PerformanceEventAbbreviations;\nexports.PerformanceEventStatus = PerformanceEventStatus;\nexports.PerformanceEvents = PerformanceEvents;\nexports.PersistentCacheKeys = PersistentCacheKeys;\nexports.PlatformBrokerError = PlatformBrokerError;\nexports.PopTokenGenerator = PopTokenGenerator;\nexports.PromptValue = PromptValue;\nexports.ProtocolMode = ProtocolMode;\nexports.ProtocolUtils = ProtocolUtils;\nexports.RefreshTokenClient = RefreshTokenClient;\nexports.RequestParameterBuilder = RequestParameterBuilder;\nexports.ResponseHandler = ResponseHandler;\nexports.ResponseMode = ResponseMode;\nexports.ScopeSet = ScopeSet;\nexports.ServerError = ServerError;\nexports.ServerResponseType = ServerResponseType;\nexports.ServerTelemetryManager = ServerTelemetryManager;\nexports.SilentFlowClient = SilentFlowClient;\nexports.StringUtils = StringUtils;\nexports.StubPerformanceClient = StubPerformanceClient;\nexports.StubPerformanceMeasurement = StubPerformanceMeasurement;\nexports.StubbedNetworkModule = StubbedNetworkModule;\nexports.THE_FAMILY_ID = THE_FAMILY_ID;\nexports.ThrottlingConstants = ThrottlingConstants;\nexports.ThrottlingUtils = ThrottlingUtils;\nexports.TimeUtils = TimeUtils;\nexports.TokenCacheContext = TokenCacheContext;\nexports.UrlString = UrlString;\nexports.UrlUtils = UrlUtils;\nexports.buildAccountToCache = buildAccountToCache;\nexports.buildClientInfo = buildClientInfo;\nexports.buildClientInfoFromHomeAccountId = buildClientInfoFromHomeAccountId;\nexports.buildStaticAuthorityOptions = buildStaticAuthorityOptions;\nexports.buildTenantProfile = buildTenantProfile;\nexports.createAuthError = createAuthError;\nexports.createCacheError = createCacheError;\nexports.createClientAuthError = createClientAuthError;\nexports.createClientConfigurationError = createClientConfigurationError;\nexports.createInteractionRequiredAuthError = createInteractionRequiredAuthError;\nexports.createNetworkError = createNetworkError;\nexports.formatAuthorityUri = formatAuthorityUri;\nexports.getClientAssertion = getClientAssertion;\nexports.getRequestThumbprint = getRequestThumbprint;\nexports.getTenantIdFromIdTokenClaims = getTenantIdFromIdTokenClaims;\nexports.invoke = invoke;\nexports.invokeAsync = invokeAsync;\nexports.tenantIdMatchesHomeTenant = tenantIdMatchesHomeTenant;\nexports.updateAccountTenantProfileData = updateAccountTenantProfileData;\nexports.version = version;\n//# sourceMappingURL=index-node-BF0Vz18w.js.map\n","/*! @azure/msal-common v15.13.2 2025-11-19 */\n'use strict';\n'use strict';\n\nvar indexNode = require('./index-node-BF0Vz18w.js');\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nconst missingKidError = \"missing_kid_error\";\r\nconst missingAlgError = \"missing_alg_error\";\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nconst JoseHeaderErrorMessages = {\r\n [missingKidError]: \"The JOSE Header for the requested JWT, JWS or JWK object requires a keyId to be configured as the 'kid' header claim. No 'kid' value was provided.\",\r\n [missingAlgError]: \"The JOSE Header for the requested JWT, JWS or JWK object requires an algorithm to be specified as the 'alg' header claim. No 'alg' value was provided.\",\r\n};\r\n/**\r\n * Error thrown when there is an error in the client code running on the browser.\r\n */\r\nclass JoseHeaderError extends indexNode.AuthError {\r\n constructor(errorCode, errorMessage) {\r\n super(errorCode, errorMessage);\r\n this.name = \"JoseHeaderError\";\r\n Object.setPrototypeOf(this, JoseHeaderError.prototype);\r\n }\r\n}\r\n/** Returns JoseHeaderError object */\r\nfunction createJoseHeaderError(code) {\r\n return new JoseHeaderError(code, JoseHeaderErrorMessages[code]);\r\n}\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/** @internal */\r\nclass JoseHeader {\r\n constructor(options) {\r\n this.typ = options.typ;\r\n this.alg = options.alg;\r\n this.kid = options.kid;\r\n }\r\n /**\r\n * Builds SignedHttpRequest formatted JOSE Header from the\r\n * JOSE Header options provided or previously set on the object and returns\r\n * the stringified header object.\r\n * Throws if keyId or algorithm aren't provided since they are required for Access Token Binding.\r\n * @param shrHeaderOptions\r\n * @returns\r\n */\r\n static getShrHeaderString(shrHeaderOptions) {\r\n // KeyID is required on the SHR header\r\n if (!shrHeaderOptions.kid) {\r\n throw createJoseHeaderError(missingKidError);\r\n }\r\n // Alg is required on the SHR header\r\n if (!shrHeaderOptions.alg) {\r\n throw createJoseHeaderError(missingAlgError);\r\n }\r\n const shrHeader = new JoseHeader({\r\n // Access Token PoP headers must have type pop, but the type header can be overriden for special cases\r\n typ: shrHeaderOptions.typ || indexNode.JsonWebTokenTypes.Pop,\r\n kid: shrHeaderOptions.kid,\r\n alg: shrHeaderOptions.alg,\r\n });\r\n return JSON.stringify(shrHeader);\r\n }\r\n}\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * Starts context by adding payload to the stack\r\n * @param event {PerformanceEvent}\r\n * @param abbreviations {Map} event name abbreviations\r\n * @param stack {?PerformanceEventStackedContext[]} stack\r\n */\r\nfunction startContext(event, abbreviations, stack) {\r\n if (!stack) {\r\n return;\r\n }\r\n stack.push({\r\n name: abbreviations.get(event.name) || event.name,\r\n });\r\n}\r\n/**\r\n * Ends context by removing payload from the stack and returning parent or self, if stack is empty, payload\r\n *\r\n * @param event {PerformanceEvent}\r\n * @param abbreviations {Map} event name abbreviations\r\n * @param stack {?PerformanceEventStackedContext[]} stack\r\n * @param error {?unknown} error\r\n */\r\nfunction endContext(event, abbreviations, stack, error) {\r\n if (!stack?.length) {\r\n return;\r\n }\r\n const peek = (stack) => {\r\n return stack.length ? stack[stack.length - 1] : undefined;\r\n };\r\n const abbrEventName = abbreviations.get(event.name) || event.name;\r\n const top = peek(stack);\r\n if (top?.name !== abbrEventName) {\r\n return;\r\n }\r\n const current = stack?.pop();\r\n if (!current) {\r\n return;\r\n }\r\n const errorCode = error instanceof indexNode.AuthError\r\n ? error.errorCode\r\n : error instanceof Error\r\n ? error.name\r\n : undefined;\r\n const subErr = error instanceof indexNode.AuthError ? error.subError : undefined;\r\n if (errorCode && current.childErr !== errorCode) {\r\n current.err = errorCode;\r\n if (subErr) {\r\n current.subErr = subErr;\r\n }\r\n }\r\n delete current.name;\r\n delete current.childErr;\r\n const context = {\r\n ...current,\r\n dur: event.durationMs,\r\n };\r\n if (!event.success) {\r\n context.fail = 1;\r\n }\r\n const parent = peek(stack);\r\n if (!parent) {\r\n return { [abbrEventName]: context };\r\n }\r\n if (errorCode) {\r\n parent.childErr = errorCode;\r\n }\r\n let childName;\r\n if (!parent[abbrEventName]) {\r\n childName = abbrEventName;\r\n }\r\n else {\r\n const siblings = Object.keys(parent).filter((key) => key.startsWith(abbrEventName)).length;\r\n childName = `${abbrEventName}_${siblings + 1}`;\r\n }\r\n parent[childName] = context;\r\n return parent;\r\n}\r\n/**\r\n * Adds error name and stack trace to the telemetry event\r\n * @param error {Error}\r\n * @param logger {Logger}\r\n * @param event {PerformanceEvent}\r\n * @param stackMaxSize {number} max error stack size to capture\r\n */\r\nfunction addError(error, logger, event, stackMaxSize = 5) {\r\n if (!(error instanceof Error)) {\r\n logger.trace(\"PerformanceClient.addErrorStack: Input error is not instance of Error\", event.correlationId);\r\n return;\r\n }\r\n else if (error instanceof indexNode.AuthError) {\r\n event.errorCode = error.errorCode;\r\n event.subErrorCode = error.subError;\r\n if (error instanceof indexNode.ServerError ||\r\n error instanceof indexNode.InteractionRequiredAuthError) {\r\n event.serverErrorNo = error.errorNo;\r\n }\r\n return;\r\n }\r\n else if (error instanceof indexNode.CacheError) {\r\n event.errorCode = error.errorCode;\r\n return;\r\n }\r\n else if (event.errorStack?.length) {\r\n logger.trace(\"PerformanceClient.addErrorStack: Stack already exist\", event.correlationId);\r\n return;\r\n }\r\n else if (!error.stack?.length) {\r\n logger.trace(\"PerformanceClient.addErrorStack: Input stack is empty\", event.correlationId);\r\n return;\r\n }\r\n if (error.stack) {\r\n event.errorStack = compactStack(error.stack, stackMaxSize);\r\n }\r\n event.errorName = error.name;\r\n}\r\n/**\r\n * Compacts error stack into array by fetching N first entries\r\n * @param stack {string} error stack\r\n * @param stackMaxSize {number} max error stack size to capture\r\n * @returns {string[]}\r\n */\r\nfunction compactStack(stack, stackMaxSize) {\r\n if (stackMaxSize < 0) {\r\n return [];\r\n }\r\n const stackArr = stack.split(\"\\n\") || [];\r\n const res = [];\r\n // Check for a handful of known, common runtime errors and log them (with redaction where applicable).\r\n const firstLine = stackArr[0];\r\n if (firstLine.startsWith(\"TypeError: Cannot read property\") ||\r\n firstLine.startsWith(\"TypeError: Cannot read properties of\") ||\r\n firstLine.startsWith(\"TypeError: Cannot set property\") ||\r\n firstLine.startsWith(\"TypeError: Cannot set properties of\") ||\r\n firstLine.endsWith(\"is not a function\")) {\r\n // These types of errors are not at risk of leaking PII. They will indicate unavailable APIs\r\n res.push(compactStackLine(firstLine));\r\n }\r\n else if (firstLine.startsWith(\"SyntaxError\") ||\r\n firstLine.startsWith(\"TypeError\")) {\r\n // Prevent unintentional leaking of arbitrary info by redacting contents between both single and double quotes\r\n res.push(compactStackLine(\r\n // Example: SyntaxError: Unexpected token 'e', \"test\" is not valid JSON -> SyntaxError: Unexpected token , is not valid JSON\r\n firstLine.replace(/['].*[']|[\"].*[\"]/g, \"\")));\r\n }\r\n // Get top N stack lines\r\n for (let ix = 1; ix < stackArr.length; ix++) {\r\n if (res.length >= stackMaxSize) {\r\n break;\r\n }\r\n const line = stackArr[ix];\r\n res.push(compactStackLine(line));\r\n }\r\n return res;\r\n}\r\n/**\r\n * Compacts error stack line by shortening file path\r\n * Example: https://localhost/msal-common/src/authority/Authority.js:100:1 -> Authority.js:100:1\r\n * @param line {string} stack line\r\n * @returns {string}\r\n */\r\nfunction compactStackLine(line) {\r\n const filePathIx = line.lastIndexOf(\" \") + 1;\r\n if (filePathIx < 1) {\r\n return line;\r\n }\r\n const filePath = line.substring(filePathIx);\r\n let fileNameIx = filePath.lastIndexOf(\"/\");\r\n fileNameIx = fileNameIx < 0 ? filePath.lastIndexOf(\"\\\\\") : fileNameIx;\r\n if (fileNameIx >= 0) {\r\n return (line.substring(0, filePathIx) +\r\n \"(\" +\r\n filePath.substring(fileNameIx + 1) +\r\n (filePath.charAt(filePath.length - 1) === \")\" ? \"\" : \")\")).trimStart();\r\n }\r\n return line.trimStart();\r\n}\r\nfunction getAccountType(account) {\r\n const idTokenClaims = account?.idTokenClaims;\r\n if (idTokenClaims?.tfp || idTokenClaims?.acr) {\r\n return \"B2C\";\r\n }\r\n if (!idTokenClaims?.tid) {\r\n return undefined;\r\n }\r\n else if (idTokenClaims?.tid === \"9188040d-6c67-4c5b-b112-36a304b66dad\") {\r\n return \"MSA\";\r\n }\r\n return \"AAD\";\r\n}\r\nclass PerformanceClient {\r\n /**\r\n * Creates an instance of PerformanceClient,\r\n * an abstract class containing core performance telemetry logic.\r\n *\r\n * @constructor\r\n * @param {string} clientId Client ID of the application\r\n * @param {string} authority Authority used by the application\r\n * @param {Logger} logger Logger used by the application\r\n * @param {string} libraryName Name of the library\r\n * @param {string} libraryVersion Version of the library\r\n * @param {ApplicationTelemetry} applicationTelemetry application name and version\r\n * @param {Set} intFields integer fields to be truncated\r\n * @param {Map} abbreviations event name abbreviations\r\n */\r\n constructor(clientId, authority, logger, libraryName, libraryVersion, applicationTelemetry, intFields, abbreviations) {\r\n this.authority = authority;\r\n this.libraryName = libraryName;\r\n this.libraryVersion = libraryVersion;\r\n this.applicationTelemetry = applicationTelemetry;\r\n this.clientId = clientId;\r\n this.logger = logger;\r\n this.callbacks = new Map();\r\n this.eventsByCorrelationId = new Map();\r\n this.eventStack = new Map();\r\n this.queueMeasurements = new Map();\r\n this.preQueueTimeByCorrelationId = new Map();\r\n this.intFields = intFields || new Set();\r\n for (const item of indexNode.IntFields) {\r\n this.intFields.add(item);\r\n }\r\n this.abbreviations = abbreviations || new Map();\r\n for (const [key, value] of indexNode.PerformanceEventAbbreviations) {\r\n this.abbreviations.set(key, value);\r\n }\r\n }\r\n /**\r\n * Starts and returns an platform-specific implementation of IPerformanceMeasurement.\r\n * Note: this function can be changed to abstract at the next major version bump.\r\n *\r\n * @param {string} measureName\r\n * @param {string} correlationId\r\n * @returns {IPerformanceMeasurement}\r\n * @deprecated This method will be removed in the next major version\r\n */\r\n startPerformanceMeasurement(measureName, // eslint-disable-line @typescript-eslint/no-unused-vars\r\n correlationId // eslint-disable-line @typescript-eslint/no-unused-vars\r\n ) {\r\n return {};\r\n }\r\n /**\r\n * Gets map of pre-queue times by correlation Id\r\n *\r\n * @param {PerformanceEvents} eventName\r\n * @param {string} correlationId\r\n * @returns {number}\r\n */\r\n getPreQueueTime(eventName, correlationId) {\r\n const preQueueEvent = this.preQueueTimeByCorrelationId.get(correlationId);\r\n if (!preQueueEvent) {\r\n this.logger.trace(`PerformanceClient.getPreQueueTime: no pre-queue times found for correlationId: ${correlationId}, unable to add queue measurement`);\r\n return;\r\n }\r\n else if (preQueueEvent.name !== eventName) {\r\n this.logger.trace(`PerformanceClient.getPreQueueTime: no pre-queue time found for ${eventName}, unable to add queue measurement`);\r\n return;\r\n }\r\n return preQueueEvent.time;\r\n }\r\n /**\r\n * Calculates the difference between current time and time when function was queued.\r\n * Note: It is possible to have 0 as the queue time if the current time and the queued time was the same.\r\n *\r\n * @param {number} preQueueTime\r\n * @param {number} currentTime\r\n * @returns {number}\r\n */\r\n calculateQueuedTime(preQueueTime, currentTime) {\r\n if (preQueueTime < 1) {\r\n this.logger.trace(`PerformanceClient: preQueueTime should be a positive integer and not ${preQueueTime}`);\r\n return 0;\r\n }\r\n if (currentTime < 1) {\r\n this.logger.trace(`PerformanceClient: currentTime should be a positive integer and not ${currentTime}`);\r\n return 0;\r\n }\r\n if (currentTime < preQueueTime) {\r\n this.logger.trace(\"PerformanceClient: currentTime is less than preQueueTime, check how time is being retrieved\");\r\n return 0;\r\n }\r\n return currentTime - preQueueTime;\r\n }\r\n /**\r\n * Adds queue measurement time to QueueMeasurements array for given correlation ID.\r\n *\r\n * @param {PerformanceEvents} eventName\r\n * @param {?string} correlationId\r\n * @param {?number} queueTime\r\n * @param {?boolean} manuallyCompleted - indicator for manually completed queue measurements\r\n * @returns\r\n */\r\n addQueueMeasurement(eventName, correlationId, queueTime, manuallyCompleted) {\r\n if (!correlationId) {\r\n this.logger.trace(`PerformanceClient.addQueueMeasurement: correlationId not provided for ${eventName}, cannot add queue measurement`);\r\n return;\r\n }\r\n if (queueTime === 0) {\r\n // Possible for there to be no queue time after calculation\r\n this.logger.trace(`PerformanceClient.addQueueMeasurement: queue time provided for ${eventName} is ${queueTime}`);\r\n }\r\n else if (!queueTime) {\r\n this.logger.trace(`PerformanceClient.addQueueMeasurement: no queue time provided for ${eventName}`);\r\n return;\r\n }\r\n const queueMeasurement = {\r\n eventName,\r\n // Always default queue time to 0 for manually completed (improperly instrumented)\r\n queueTime: manuallyCompleted ? 0 : queueTime,\r\n manuallyCompleted,\r\n };\r\n // Adds to existing correlation Id if present in queueMeasurements\r\n const existingMeasurements = this.queueMeasurements.get(correlationId);\r\n if (existingMeasurements) {\r\n existingMeasurements.push(queueMeasurement);\r\n this.queueMeasurements.set(correlationId, existingMeasurements);\r\n }\r\n else {\r\n // Sets new correlation Id if not present in queueMeasurements\r\n this.logger.trace(`PerformanceClient.addQueueMeasurement: adding correlationId ${correlationId} to queue measurements`);\r\n const measurementArray = [queueMeasurement];\r\n this.queueMeasurements.set(correlationId, measurementArray);\r\n }\r\n // Delete processed pre-queue event.\r\n this.preQueueTimeByCorrelationId.delete(correlationId);\r\n }\r\n /**\r\n * Starts measuring performance for a given operation. Returns a function that should be used to end the measurement.\r\n *\r\n * @param {PerformanceEvents} measureName\r\n * @param {?string} [correlationId]\r\n * @returns {InProgressPerformanceEvent}\r\n */\r\n startMeasurement(measureName, correlationId) {\r\n // Generate a placeholder correlation if the request does not provide one\r\n const eventCorrelationId = correlationId || this.generateId();\r\n if (!correlationId) {\r\n this.logger.info(`PerformanceClient: No correlation id provided for ${measureName}, generating`, eventCorrelationId);\r\n }\r\n this.logger.trace(`PerformanceClient: Performance measurement started for ${measureName}`, eventCorrelationId);\r\n const inProgressEvent = {\r\n eventId: this.generateId(),\r\n status: indexNode.PerformanceEventStatus.InProgress,\r\n authority: this.authority,\r\n libraryName: this.libraryName,\r\n libraryVersion: this.libraryVersion,\r\n clientId: this.clientId,\r\n name: measureName,\r\n startTimeMs: Date.now(),\r\n correlationId: eventCorrelationId,\r\n appName: this.applicationTelemetry?.appName,\r\n appVersion: this.applicationTelemetry?.appVersion,\r\n };\r\n // Store in progress events so they can be discarded if not ended properly\r\n this.cacheEventByCorrelationId(inProgressEvent);\r\n startContext(inProgressEvent, this.abbreviations, this.eventStack.get(eventCorrelationId));\r\n // Return the event and functions the caller can use to properly end/flush the measurement\r\n return {\r\n end: (event, error, account) => {\r\n return this.endMeasurement({\r\n // Initial set of event properties\r\n ...inProgressEvent,\r\n // Properties set when event ends\r\n ...event,\r\n }, error, account);\r\n },\r\n discard: () => {\r\n return this.discardMeasurements(inProgressEvent.correlationId);\r\n },\r\n add: (fields) => {\r\n return this.addFields(fields, inProgressEvent.correlationId);\r\n },\r\n increment: (fields) => {\r\n return this.incrementFields(fields, inProgressEvent.correlationId);\r\n },\r\n event: inProgressEvent,\r\n measurement: new indexNode.StubPerformanceMeasurement(),\r\n };\r\n }\r\n /**\r\n * Stops measuring the performance for an operation. Should only be called directly by PerformanceClient classes,\r\n * as consumers should instead use the function returned by startMeasurement.\r\n * Adds a new field named as \"[event name]DurationMs\" for sub-measurements, completes and emits an event\r\n * otherwise.\r\n *\r\n * @param {PerformanceEvent} event\r\n * @param {unknown} error\r\n * @param {AccountInfo?} account\r\n * @returns {(PerformanceEvent | null)}\r\n */\r\n endMeasurement(event, error, account) {\r\n const rootEvent = this.eventsByCorrelationId.get(event.correlationId);\r\n if (!rootEvent) {\r\n this.logger.trace(`PerformanceClient: Measurement not found for ${event.eventId}`, event.correlationId);\r\n return null;\r\n }\r\n const isRoot = event.eventId === rootEvent.eventId;\r\n let queueInfo = {\r\n totalQueueTime: 0,\r\n totalQueueCount: 0,\r\n manuallyCompletedCount: 0,\r\n };\r\n event.durationMs = Math.round(event.durationMs || this.getDurationMs(event.startTimeMs));\r\n const context = JSON.stringify(endContext(event, this.abbreviations, this.eventStack.get(rootEvent.correlationId), error));\r\n if (isRoot) {\r\n queueInfo = this.getQueueInfo(event.correlationId);\r\n this.discardMeasurements(rootEvent.correlationId);\r\n }\r\n else {\r\n rootEvent.incompleteSubMeasurements?.delete(event.eventId);\r\n }\r\n this.logger.trace(`PerformanceClient: Performance measurement ended for ${event.name}: ${event.durationMs} ms`, event.correlationId);\r\n if (error) {\r\n addError(error, this.logger, rootEvent);\r\n }\r\n // Add sub-measurement attribute to root event.\r\n if (!isRoot) {\r\n rootEvent[event.name + \"DurationMs\"] = Math.floor(event.durationMs);\r\n return { ...rootEvent };\r\n }\r\n if (isRoot &&\r\n !error &&\r\n (rootEvent.errorCode || rootEvent.subErrorCode)) {\r\n this.logger.trace(`PerformanceClient: Remove error and sub-error codes for root event ${event.name} as intermediate error was successfully handled`, event.correlationId);\r\n rootEvent.errorCode = undefined;\r\n rootEvent.subErrorCode = undefined;\r\n }\r\n let finalEvent = { ...rootEvent, ...event };\r\n let incompleteSubsCount = 0;\r\n // Incomplete sub-measurements are discarded. They are likely an instrumentation bug that should be fixed.\r\n finalEvent.incompleteSubMeasurements?.forEach((subMeasurement) => {\r\n this.logger.trace(`PerformanceClient: Incomplete submeasurement ${subMeasurement.name} found for ${event.name}`, finalEvent.correlationId);\r\n incompleteSubsCount++;\r\n });\r\n finalEvent.incompleteSubMeasurements = undefined;\r\n finalEvent = {\r\n ...finalEvent,\r\n queuedTimeMs: queueInfo.totalQueueTime,\r\n queuedCount: queueInfo.totalQueueCount,\r\n queuedManuallyCompletedCount: queueInfo.manuallyCompletedCount,\r\n status: indexNode.PerformanceEventStatus.Completed,\r\n incompleteSubsCount,\r\n context,\r\n };\r\n if (account) {\r\n finalEvent.accountType = getAccountType(account);\r\n finalEvent.dataBoundary = account.dataBoundary;\r\n }\r\n this.truncateIntegralFields(finalEvent);\r\n this.emitEvents([finalEvent], event.correlationId);\r\n return finalEvent;\r\n }\r\n /**\r\n * Saves extra information to be emitted when the measurements are flushed\r\n * @param fields\r\n * @param correlationId\r\n */\r\n addFields(fields, correlationId) {\r\n this.logger.trace(\"PerformanceClient: Updating static fields\");\r\n const event = this.eventsByCorrelationId.get(correlationId);\r\n if (event) {\r\n this.eventsByCorrelationId.set(correlationId, {\r\n ...event,\r\n ...fields,\r\n });\r\n }\r\n else {\r\n this.logger.trace(\"PerformanceClient: Event not found for\", correlationId);\r\n }\r\n }\r\n /**\r\n * Increment counters to be emitted when the measurements are flushed\r\n * @param fields {string[]}\r\n * @param correlationId {string} correlation identifier\r\n */\r\n incrementFields(fields, correlationId) {\r\n this.logger.trace(\"PerformanceClient: Updating counters\");\r\n const event = this.eventsByCorrelationId.get(correlationId);\r\n if (event) {\r\n for (const counter in fields) {\r\n if (!event.hasOwnProperty(counter)) {\r\n event[counter] = 0;\r\n }\r\n else if (isNaN(Number(event[counter]))) {\r\n return;\r\n }\r\n event[counter] += fields[counter];\r\n }\r\n }\r\n else {\r\n this.logger.trace(\"PerformanceClient: Event not found for\", correlationId);\r\n }\r\n }\r\n /**\r\n * Upserts event into event cache.\r\n * First key is the correlation id, second key is the event id.\r\n * Allows for events to be grouped by correlation id,\r\n * and to easily allow for properties on them to be updated.\r\n *\r\n * @private\r\n * @param {PerformanceEvent} event\r\n */\r\n cacheEventByCorrelationId(event) {\r\n const rootEvent = this.eventsByCorrelationId.get(event.correlationId);\r\n if (rootEvent) {\r\n this.logger.trace(`PerformanceClient: Performance measurement for ${event.name} added/updated`, event.correlationId);\r\n rootEvent.incompleteSubMeasurements =\r\n rootEvent.incompleteSubMeasurements || new Map();\r\n rootEvent.incompleteSubMeasurements.set(event.eventId, {\r\n name: event.name,\r\n startTimeMs: event.startTimeMs,\r\n });\r\n }\r\n else {\r\n this.logger.trace(`PerformanceClient: Performance measurement for ${event.name} started`, event.correlationId);\r\n this.eventsByCorrelationId.set(event.correlationId, { ...event });\r\n this.eventStack.set(event.correlationId, []);\r\n }\r\n }\r\n getQueueInfo(correlationId) {\r\n const queueMeasurementForCorrelationId = this.queueMeasurements.get(correlationId);\r\n if (!queueMeasurementForCorrelationId) {\r\n this.logger.trace(`PerformanceClient: no queue measurements found for for correlationId: ${correlationId}`);\r\n }\r\n let totalQueueTime = 0;\r\n let totalQueueCount = 0;\r\n let manuallyCompletedCount = 0;\r\n queueMeasurementForCorrelationId?.forEach((measurement) => {\r\n totalQueueTime += measurement.queueTime;\r\n totalQueueCount++;\r\n manuallyCompletedCount += measurement.manuallyCompleted ? 1 : 0;\r\n });\r\n return {\r\n totalQueueTime,\r\n totalQueueCount,\r\n manuallyCompletedCount,\r\n };\r\n }\r\n /**\r\n * Removes measurements and aux data for a given correlation id.\r\n *\r\n * @param {string} correlationId\r\n */\r\n discardMeasurements(correlationId) {\r\n this.logger.trace(\"PerformanceClient: Performance measurements discarded\", correlationId);\r\n this.eventsByCorrelationId.delete(correlationId);\r\n this.logger.trace(\"PerformanceClient: QueueMeasurements discarded\", correlationId);\r\n this.queueMeasurements.delete(correlationId);\r\n this.logger.trace(\"PerformanceClient: Pre-queue times discarded\", correlationId);\r\n this.preQueueTimeByCorrelationId.delete(correlationId);\r\n this.logger.trace(\"PerformanceClient: Event stack discarded\", correlationId);\r\n this.eventStack.delete(correlationId);\r\n }\r\n /**\r\n * Registers a callback function to receive performance events.\r\n *\r\n * @param {PerformanceCallbackFunction} callback\r\n * @returns {string}\r\n */\r\n addPerformanceCallback(callback) {\r\n for (const [id, cb] of this.callbacks) {\r\n if (cb.toString() === callback.toString()) {\r\n this.logger.warning(`PerformanceClient: Performance callback is already registered with id: ${id}`);\r\n return id;\r\n }\r\n }\r\n const callbackId = this.generateId();\r\n this.callbacks.set(callbackId, callback);\r\n this.logger.verbose(`PerformanceClient: Performance callback registered with id: ${callbackId}`);\r\n return callbackId;\r\n }\r\n /**\r\n * Removes a callback registered with addPerformanceCallback.\r\n *\r\n * @param {string} callbackId\r\n * @returns {boolean}\r\n */\r\n removePerformanceCallback(callbackId) {\r\n const result = this.callbacks.delete(callbackId);\r\n if (result) {\r\n this.logger.verbose(`PerformanceClient: Performance callback ${callbackId} removed.`);\r\n }\r\n else {\r\n this.logger.verbose(`PerformanceClient: Performance callback ${callbackId} not removed.`);\r\n }\r\n return result;\r\n }\r\n /**\r\n * Emits events to all registered callbacks.\r\n *\r\n * @param {PerformanceEvent[]} events\r\n * @param {?string} [correlationId]\r\n */\r\n emitEvents(events, correlationId) {\r\n this.logger.verbose(\"PerformanceClient: Emitting performance events\", correlationId);\r\n this.callbacks.forEach((callback, callbackId) => {\r\n this.logger.trace(`PerformanceClient: Emitting event to callback ${callbackId}`, correlationId);\r\n callback.apply(null, [events]);\r\n });\r\n }\r\n /**\r\n * Enforce truncation of integral fields in performance event.\r\n * @param {PerformanceEvent} event performance event to update.\r\n */\r\n truncateIntegralFields(event) {\r\n this.intFields.forEach((key) => {\r\n if (key in event && typeof event[key] === \"number\") {\r\n event[key] = Math.floor(event[key]);\r\n }\r\n });\r\n }\r\n /**\r\n * Returns event duration in milliseconds\r\n * @param startTimeMs {number}\r\n * @returns {number}\r\n */\r\n getDurationMs(startTimeMs) {\r\n const durationMs = Date.now() - startTimeMs;\r\n // Handle clock skew\r\n return durationMs < 0 ? durationMs : 0;\r\n }\r\n}\n\nexports.AADAuthorityConstants = indexNode.AADAuthorityConstants;\nexports.AADServerParamKeys = indexNode.AADServerParamKeys;\nexports.AccountEntity = indexNode.AccountEntity;\nexports.AuthError = indexNode.AuthError;\nexports.AuthErrorCodes = indexNode.AuthErrorCodes;\nexports.AuthErrorMessage = indexNode.AuthErrorMessage;\nexports.AuthToken = indexNode.AuthToken;\nexports.AuthenticationHeaderParser = indexNode.AuthenticationHeaderParser;\nexports.AuthenticationScheme = indexNode.AuthenticationScheme;\nexports.Authority = indexNode.Authority;\nexports.AuthorityFactory = indexNode.AuthorityFactory;\nexports.AuthorityType = indexNode.AuthorityType;\nexports.AuthorizationCodeClient = indexNode.AuthorizationCodeClient;\nexports.AuthorizeProtocol = indexNode.Authorize;\nexports.AzureCloudInstance = indexNode.AzureCloudInstance;\nexports.BaseClient = indexNode.BaseClient;\nexports.CacheAccountType = indexNode.CacheAccountType;\nexports.CacheError = indexNode.CacheError;\nexports.CacheErrorCodes = indexNode.CacheErrorCodes;\nexports.CacheHelpers = indexNode.CacheHelpers;\nexports.CacheManager = indexNode.CacheManager;\nexports.CacheOutcome = indexNode.CacheOutcome;\nexports.CacheType = indexNode.CacheType;\nexports.CcsCredentialType = indexNode.CcsCredentialType;\nexports.ClaimsRequestKeys = indexNode.ClaimsRequestKeys;\nexports.ClientAuthError = indexNode.ClientAuthError;\nexports.ClientAuthErrorCodes = indexNode.ClientAuthErrorCodes;\nexports.ClientAuthErrorMessage = indexNode.ClientAuthErrorMessage;\nexports.ClientConfigurationError = indexNode.ClientConfigurationError;\nexports.ClientConfigurationErrorCodes = indexNode.ClientConfigurationErrorCodes;\nexports.ClientConfigurationErrorMessage = indexNode.ClientConfigurationErrorMessage;\nexports.CodeChallengeMethodValues = indexNode.CodeChallengeMethodValues;\nexports.Constants = indexNode.Constants;\nexports.CredentialType = indexNode.CredentialType;\nexports.DEFAULT_CRYPTO_IMPLEMENTATION = indexNode.DEFAULT_CRYPTO_IMPLEMENTATION;\nexports.DEFAULT_SYSTEM_OPTIONS = indexNode.DEFAULT_SYSTEM_OPTIONS;\nexports.DEFAULT_TOKEN_RENEWAL_OFFSET_SEC = indexNode.DEFAULT_TOKEN_RENEWAL_OFFSET_SEC;\nexports.DefaultStorageClass = indexNode.DefaultStorageClass;\nexports.EncodingTypes = indexNode.EncodingTypes;\nexports.Errors = indexNode.Errors;\nexports.GrantType = indexNode.GrantType;\nexports.HeaderNames = indexNode.HeaderNames;\nexports.HttpMethod = indexNode.HttpMethod;\nexports.HttpStatus = indexNode.HttpStatus;\nexports.IntFields = indexNode.IntFields;\nexports.InteractionRequiredAuthError = indexNode.InteractionRequiredAuthError;\nexports.InteractionRequiredAuthErrorCodes = indexNode.InteractionRequiredAuthErrorCodes;\nexports.InteractionRequiredAuthErrorMessage = indexNode.InteractionRequiredAuthErrorMessage;\nexports.JsonWebTokenTypes = indexNode.JsonWebTokenTypes;\nObject.defineProperty(exports, \"LogLevel\", {\n enumerable: true,\n get: function () { return indexNode.LogLevel; }\n});\nexports.Logger = indexNode.Logger;\nexports.NetworkError = indexNode.NetworkError;\nexports.OAuthResponseType = indexNode.OAuthResponseType;\nexports.OIDC_DEFAULT_SCOPES = indexNode.OIDC_DEFAULT_SCOPES;\nexports.ONE_DAY_IN_MS = indexNode.ONE_DAY_IN_MS;\nexports.PasswordGrantConstants = indexNode.PasswordGrantConstants;\nexports.PerformanceEventStatus = indexNode.PerformanceEventStatus;\nexports.PerformanceEvents = indexNode.PerformanceEvents;\nexports.PersistentCacheKeys = indexNode.PersistentCacheKeys;\nexports.PlatformBrokerError = indexNode.PlatformBrokerError;\nexports.PopTokenGenerator = indexNode.PopTokenGenerator;\nexports.PromptValue = indexNode.PromptValue;\nexports.ProtocolMode = indexNode.ProtocolMode;\nexports.ProtocolUtils = indexNode.ProtocolUtils;\nexports.RefreshTokenClient = indexNode.RefreshTokenClient;\nexports.RequestParameterBuilder = indexNode.RequestParameterBuilder;\nexports.ResponseHandler = indexNode.ResponseHandler;\nexports.ResponseMode = indexNode.ResponseMode;\nexports.ScopeSet = indexNode.ScopeSet;\nexports.ServerError = indexNode.ServerError;\nexports.ServerResponseType = indexNode.ServerResponseType;\nexports.ServerTelemetryManager = indexNode.ServerTelemetryManager;\nexports.SilentFlowClient = indexNode.SilentFlowClient;\nexports.StringUtils = indexNode.StringUtils;\nexports.StubPerformanceClient = indexNode.StubPerformanceClient;\nexports.StubbedNetworkModule = indexNode.StubbedNetworkModule;\nexports.THE_FAMILY_ID = indexNode.THE_FAMILY_ID;\nexports.ThrottlingConstants = indexNode.ThrottlingConstants;\nexports.ThrottlingUtils = indexNode.ThrottlingUtils;\nexports.TimeUtils = indexNode.TimeUtils;\nexports.UrlString = indexNode.UrlString;\nexports.UrlUtils = indexNode.UrlUtils;\nexports.buildAccountToCache = indexNode.buildAccountToCache;\nexports.buildClientInfo = indexNode.buildClientInfo;\nexports.buildClientInfoFromHomeAccountId = indexNode.buildClientInfoFromHomeAccountId;\nexports.buildStaticAuthorityOptions = indexNode.buildStaticAuthorityOptions;\nexports.buildTenantProfile = indexNode.buildTenantProfile;\nexports.createAuthError = indexNode.createAuthError;\nexports.createCacheError = indexNode.createCacheError;\nexports.createClientAuthError = indexNode.createClientAuthError;\nexports.createClientConfigurationError = indexNode.createClientConfigurationError;\nexports.createInteractionRequiredAuthError = indexNode.createInteractionRequiredAuthError;\nexports.createNetworkError = indexNode.createNetworkError;\nexports.formatAuthorityUri = indexNode.formatAuthorityUri;\nexports.getRequestThumbprint = indexNode.getRequestThumbprint;\nexports.getTenantIdFromIdTokenClaims = indexNode.getTenantIdFromIdTokenClaims;\nexports.invoke = indexNode.invoke;\nexports.invokeAsync = indexNode.invokeAsync;\nexports.tenantIdMatchesHomeTenant = indexNode.tenantIdMatchesHomeTenant;\nexports.updateAccountTenantProfileData = indexNode.updateAccountTenantProfileData;\nexports.version = indexNode.version;\nexports.JoseHeader = JoseHeader;\nexports.PerformanceClient = PerformanceClient;\n//# sourceMappingURL=index-browser.cjs.map\n","/*! @azure/msal-common v15.13.2 2025-11-19 */\n'use strict';\n'use strict';\n\nvar indexNode = require('./index-node-BF0Vz18w.js');\nvar indexBrowser = require('./index-browser.cjs');\n\n\n\nexports.AADAuthorityConstants = indexNode.AADAuthorityConstants;\nexports.AADServerParamKeys = indexNode.AADServerParamKeys;\nexports.AccountEntity = indexNode.AccountEntity;\nexports.AuthError = indexNode.AuthError;\nexports.AuthErrorCodes = indexNode.AuthErrorCodes;\nexports.AuthErrorMessage = indexNode.AuthErrorMessage;\nexports.AuthToken = indexNode.AuthToken;\nexports.AuthenticationHeaderParser = indexNode.AuthenticationHeaderParser;\nexports.AuthenticationScheme = indexNode.AuthenticationScheme;\nexports.Authority = indexNode.Authority;\nexports.AuthorityFactory = indexNode.AuthorityFactory;\nexports.AuthorityType = indexNode.AuthorityType;\nexports.AuthorizationCodeClient = indexNode.AuthorizationCodeClient;\nexports.AuthorizeProtocol = indexNode.Authorize;\nexports.AzureCloudInstance = indexNode.AzureCloudInstance;\nexports.BaseClient = indexNode.BaseClient;\nexports.CacheAccountType = indexNode.CacheAccountType;\nexports.CacheError = indexNode.CacheError;\nexports.CacheErrorCodes = indexNode.CacheErrorCodes;\nexports.CacheHelpers = indexNode.CacheHelpers;\nexports.CacheManager = indexNode.CacheManager;\nexports.CacheOutcome = indexNode.CacheOutcome;\nexports.CacheType = indexNode.CacheType;\nexports.CcsCredentialType = indexNode.CcsCredentialType;\nexports.ClaimsRequestKeys = indexNode.ClaimsRequestKeys;\nexports.ClientAssertionUtils = indexNode.ClientAssertionUtils;\nexports.ClientAuthError = indexNode.ClientAuthError;\nexports.ClientAuthErrorCodes = indexNode.ClientAuthErrorCodes;\nexports.ClientAuthErrorMessage = indexNode.ClientAuthErrorMessage;\nexports.ClientConfigurationError = indexNode.ClientConfigurationError;\nexports.ClientConfigurationErrorCodes = indexNode.ClientConfigurationErrorCodes;\nexports.ClientConfigurationErrorMessage = indexNode.ClientConfigurationErrorMessage;\nexports.CodeChallengeMethodValues = indexNode.CodeChallengeMethodValues;\nexports.Constants = indexNode.Constants;\nexports.CredentialType = indexNode.CredentialType;\nexports.DEFAULT_CRYPTO_IMPLEMENTATION = indexNode.DEFAULT_CRYPTO_IMPLEMENTATION;\nexports.DEFAULT_SYSTEM_OPTIONS = indexNode.DEFAULT_SYSTEM_OPTIONS;\nexports.DEFAULT_TOKEN_RENEWAL_OFFSET_SEC = indexNode.DEFAULT_TOKEN_RENEWAL_OFFSET_SEC;\nexports.DefaultStorageClass = indexNode.DefaultStorageClass;\nexports.EncodingTypes = indexNode.EncodingTypes;\nexports.Errors = indexNode.Errors;\nexports.GrantType = indexNode.GrantType;\nexports.HeaderNames = indexNode.HeaderNames;\nexports.HttpMethod = indexNode.HttpMethod;\nexports.HttpStatus = indexNode.HttpStatus;\nexports.IntFields = indexNode.IntFields;\nexports.InteractionRequiredAuthError = indexNode.InteractionRequiredAuthError;\nexports.InteractionRequiredAuthErrorCodes = indexNode.InteractionRequiredAuthErrorCodes;\nexports.InteractionRequiredAuthErrorMessage = indexNode.InteractionRequiredAuthErrorMessage;\nexports.JsonWebTokenTypes = indexNode.JsonWebTokenTypes;\nObject.defineProperty(exports, \"LogLevel\", {\n\tenumerable: true,\n\tget: function () { return indexNode.LogLevel; }\n});\nexports.Logger = indexNode.Logger;\nexports.NetworkError = indexNode.NetworkError;\nexports.OAuthResponseType = indexNode.OAuthResponseType;\nexports.OIDC_DEFAULT_SCOPES = indexNode.OIDC_DEFAULT_SCOPES;\nexports.ONE_DAY_IN_MS = indexNode.ONE_DAY_IN_MS;\nexports.PasswordGrantConstants = indexNode.PasswordGrantConstants;\nexports.PerformanceEventStatus = indexNode.PerformanceEventStatus;\nexports.PerformanceEvents = indexNode.PerformanceEvents;\nexports.PersistentCacheKeys = indexNode.PersistentCacheKeys;\nexports.PlatformBrokerError = indexNode.PlatformBrokerError;\nexports.PopTokenGenerator = indexNode.PopTokenGenerator;\nexports.PromptValue = indexNode.PromptValue;\nexports.ProtocolMode = indexNode.ProtocolMode;\nexports.ProtocolUtils = indexNode.ProtocolUtils;\nexports.RefreshTokenClient = indexNode.RefreshTokenClient;\nexports.RequestParameterBuilder = indexNode.RequestParameterBuilder;\nexports.ResponseHandler = indexNode.ResponseHandler;\nexports.ResponseMode = indexNode.ResponseMode;\nexports.ScopeSet = indexNode.ScopeSet;\nexports.ServerError = indexNode.ServerError;\nexports.ServerResponseType = indexNode.ServerResponseType;\nexports.ServerTelemetryManager = indexNode.ServerTelemetryManager;\nexports.SilentFlowClient = indexNode.SilentFlowClient;\nexports.StringUtils = indexNode.StringUtils;\nexports.StubPerformanceClient = indexNode.StubPerformanceClient;\nexports.StubbedNetworkModule = indexNode.StubbedNetworkModule;\nexports.THE_FAMILY_ID = indexNode.THE_FAMILY_ID;\nexports.ThrottlingConstants = indexNode.ThrottlingConstants;\nexports.ThrottlingUtils = indexNode.ThrottlingUtils;\nexports.TimeUtils = indexNode.TimeUtils;\nexports.TokenCacheContext = indexNode.TokenCacheContext;\nexports.UrlString = indexNode.UrlString;\nexports.UrlUtils = indexNode.UrlUtils;\nexports.buildAccountToCache = indexNode.buildAccountToCache;\nexports.buildClientInfo = indexNode.buildClientInfo;\nexports.buildClientInfoFromHomeAccountId = indexNode.buildClientInfoFromHomeAccountId;\nexports.buildStaticAuthorityOptions = indexNode.buildStaticAuthorityOptions;\nexports.buildTenantProfile = indexNode.buildTenantProfile;\nexports.createAuthError = indexNode.createAuthError;\nexports.createCacheError = indexNode.createCacheError;\nexports.createClientAuthError = indexNode.createClientAuthError;\nexports.createClientConfigurationError = indexNode.createClientConfigurationError;\nexports.createInteractionRequiredAuthError = indexNode.createInteractionRequiredAuthError;\nexports.createNetworkError = indexNode.createNetworkError;\nexports.formatAuthorityUri = indexNode.formatAuthorityUri;\nexports.getClientAssertion = indexNode.getClientAssertion;\nexports.getRequestThumbprint = indexNode.getRequestThumbprint;\nexports.getTenantIdFromIdTokenClaims = indexNode.getTenantIdFromIdTokenClaims;\nexports.invoke = indexNode.invoke;\nexports.invokeAsync = indexNode.invokeAsync;\nexports.tenantIdMatchesHomeTenant = indexNode.tenantIdMatchesHomeTenant;\nexports.updateAccountTenantProfileData = indexNode.updateAccountTenantProfileData;\nexports.version = indexNode.version;\nexports.JoseHeader = indexBrowser.JoseHeader;\nexports.PerformanceClient = indexBrowser.PerformanceClient;\n//# sourceMappingURL=index.cjs.map\n","/*! safe-buffer. MIT License. Feross Aboukhadijeh */\n/* eslint-disable node/no-deprecated-api */\nvar buffer = require('buffer')\nvar Buffer = buffer.Buffer\n\n// alternative to using Object.keys for old browsers\nfunction copyProps (src, dst) {\n for (var key in src) {\n dst[key] = src[key]\n }\n}\nif (Buffer.from && Buffer.alloc && Buffer.allocUnsafe && Buffer.allocUnsafeSlow) {\n module.exports = buffer\n} else {\n // Copy properties from require('buffer')\n copyProps(buffer, exports)\n exports.Buffer = SafeBuffer\n}\n\nfunction SafeBuffer (arg, encodingOrOffset, length) {\n return Buffer(arg, encodingOrOffset, length)\n}\n\nSafeBuffer.prototype = Object.create(Buffer.prototype)\n\n// Copy static methods from Buffer\ncopyProps(Buffer, SafeBuffer)\n\nSafeBuffer.from = function (arg, encodingOrOffset, length) {\n if (typeof arg === 'number') {\n throw new TypeError('Argument must not be a number')\n }\n return Buffer(arg, encodingOrOffset, length)\n}\n\nSafeBuffer.alloc = function (size, fill, encoding) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n var buf = Buffer(size)\n if (fill !== undefined) {\n if (typeof encoding === 'string') {\n buf.fill(fill, encoding)\n } else {\n buf.fill(fill)\n }\n } else {\n buf.fill(0)\n }\n return buf\n}\n\nSafeBuffer.allocUnsafe = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n return Buffer(size)\n}\n\nSafeBuffer.allocUnsafeSlow = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n return buffer.SlowBuffer(size)\n}\n","/*global module, process*/\nvar Buffer = require('safe-buffer').Buffer;\nvar Stream = require('stream');\nvar util = require('util');\n\nfunction DataStream(data) {\n this.buffer = null;\n this.writable = true;\n this.readable = true;\n\n // No input\n if (!data) {\n this.buffer = Buffer.alloc(0);\n return this;\n }\n\n // Stream\n if (typeof data.pipe === 'function') {\n this.buffer = Buffer.alloc(0);\n data.pipe(this);\n return this;\n }\n\n // Buffer or String\n // or Object (assumedly a passworded key)\n if (data.length || typeof data === 'object') {\n this.buffer = data;\n this.writable = false;\n process.nextTick(function () {\n this.emit('end', data);\n this.readable = false;\n this.emit('close');\n }.bind(this));\n return this;\n }\n\n throw new TypeError('Unexpected data type ('+ typeof data + ')');\n}\nutil.inherits(DataStream, Stream);\n\nDataStream.prototype.write = function write(data) {\n this.buffer = Buffer.concat([this.buffer, Buffer.from(data)]);\n this.emit('data', data);\n};\n\nDataStream.prototype.end = function end(data) {\n if (data)\n this.write(data);\n this.emit('end', data);\n this.emit('close');\n this.writable = false;\n this.readable = false;\n};\n\nmodule.exports = DataStream;\n","'use strict';\n\nfunction getParamSize(keySize) {\n\tvar result = ((keySize / 8) | 0) + (keySize % 8 === 0 ? 0 : 1);\n\treturn result;\n}\n\nvar paramBytesForAlg = {\n\tES256: getParamSize(256),\n\tES384: getParamSize(384),\n\tES512: getParamSize(521)\n};\n\nfunction getParamBytesForAlg(alg) {\n\tvar paramBytes = paramBytesForAlg[alg];\n\tif (paramBytes) {\n\t\treturn paramBytes;\n\t}\n\n\tthrow new Error('Unknown algorithm \"' + alg + '\"');\n}\n\nmodule.exports = getParamBytesForAlg;\n","'use strict';\n\nvar Buffer = require('safe-buffer').Buffer;\n\nvar getParamBytesForAlg = require('./param-bytes-for-alg');\n\nvar MAX_OCTET = 0x80,\n\tCLASS_UNIVERSAL = 0,\n\tPRIMITIVE_BIT = 0x20,\n\tTAG_SEQ = 0x10,\n\tTAG_INT = 0x02,\n\tENCODED_TAG_SEQ = (TAG_SEQ | PRIMITIVE_BIT) | (CLASS_UNIVERSAL << 6),\n\tENCODED_TAG_INT = TAG_INT | (CLASS_UNIVERSAL << 6);\n\nfunction base64Url(base64) {\n\treturn base64\n\t\t.replace(/=/g, '')\n\t\t.replace(/\\+/g, '-')\n\t\t.replace(/\\//g, '_');\n}\n\nfunction signatureAsBuffer(signature) {\n\tif (Buffer.isBuffer(signature)) {\n\t\treturn signature;\n\t} else if ('string' === typeof signature) {\n\t\treturn Buffer.from(signature, 'base64');\n\t}\n\n\tthrow new TypeError('ECDSA signature must be a Base64 string or a Buffer');\n}\n\nfunction derToJose(signature, alg) {\n\tsignature = signatureAsBuffer(signature);\n\tvar paramBytes = getParamBytesForAlg(alg);\n\n\t// the DER encoded param should at most be the param size, plus a padding\n\t// zero, since due to being a signed integer\n\tvar maxEncodedParamLength = paramBytes + 1;\n\n\tvar inputLength = signature.length;\n\n\tvar offset = 0;\n\tif (signature[offset++] !== ENCODED_TAG_SEQ) {\n\t\tthrow new Error('Could not find expected \"seq\"');\n\t}\n\n\tvar seqLength = signature[offset++];\n\tif (seqLength === (MAX_OCTET | 1)) {\n\t\tseqLength = signature[offset++];\n\t}\n\n\tif (inputLength - offset < seqLength) {\n\t\tthrow new Error('\"seq\" specified length of \"' + seqLength + '\", only \"' + (inputLength - offset) + '\" remaining');\n\t}\n\n\tif (signature[offset++] !== ENCODED_TAG_INT) {\n\t\tthrow new Error('Could not find expected \"int\" for \"r\"');\n\t}\n\n\tvar rLength = signature[offset++];\n\n\tif (inputLength - offset - 2 < rLength) {\n\t\tthrow new Error('\"r\" specified length of \"' + rLength + '\", only \"' + (inputLength - offset - 2) + '\" available');\n\t}\n\n\tif (maxEncodedParamLength < rLength) {\n\t\tthrow new Error('\"r\" specified length of \"' + rLength + '\", max of \"' + maxEncodedParamLength + '\" is acceptable');\n\t}\n\n\tvar rOffset = offset;\n\toffset += rLength;\n\n\tif (signature[offset++] !== ENCODED_TAG_INT) {\n\t\tthrow new Error('Could not find expected \"int\" for \"s\"');\n\t}\n\n\tvar sLength = signature[offset++];\n\n\tif (inputLength - offset !== sLength) {\n\t\tthrow new Error('\"s\" specified length of \"' + sLength + '\", expected \"' + (inputLength - offset) + '\"');\n\t}\n\n\tif (maxEncodedParamLength < sLength) {\n\t\tthrow new Error('\"s\" specified length of \"' + sLength + '\", max of \"' + maxEncodedParamLength + '\" is acceptable');\n\t}\n\n\tvar sOffset = offset;\n\toffset += sLength;\n\n\tif (offset !== inputLength) {\n\t\tthrow new Error('Expected to consume entire buffer, but \"' + (inputLength - offset) + '\" bytes remain');\n\t}\n\n\tvar rPadding = paramBytes - rLength,\n\t\tsPadding = paramBytes - sLength;\n\n\tvar dst = Buffer.allocUnsafe(rPadding + rLength + sPadding + sLength);\n\n\tfor (offset = 0; offset < rPadding; ++offset) {\n\t\tdst[offset] = 0;\n\t}\n\tsignature.copy(dst, offset, rOffset + Math.max(-rPadding, 0), rOffset + rLength);\n\n\toffset = paramBytes;\n\n\tfor (var o = offset; offset < o + sPadding; ++offset) {\n\t\tdst[offset] = 0;\n\t}\n\tsignature.copy(dst, offset, sOffset + Math.max(-sPadding, 0), sOffset + sLength);\n\n\tdst = dst.toString('base64');\n\tdst = base64Url(dst);\n\n\treturn dst;\n}\n\nfunction countPadding(buf, start, stop) {\n\tvar padding = 0;\n\twhile (start + padding < stop && buf[start + padding] === 0) {\n\t\t++padding;\n\t}\n\n\tvar needsSign = buf[start + padding] >= MAX_OCTET;\n\tif (needsSign) {\n\t\t--padding;\n\t}\n\n\treturn padding;\n}\n\nfunction joseToDer(signature, alg) {\n\tsignature = signatureAsBuffer(signature);\n\tvar paramBytes = getParamBytesForAlg(alg);\n\n\tvar signatureBytes = signature.length;\n\tif (signatureBytes !== paramBytes * 2) {\n\t\tthrow new TypeError('\"' + alg + '\" signatures must be \"' + paramBytes * 2 + '\" bytes, saw \"' + signatureBytes + '\"');\n\t}\n\n\tvar rPadding = countPadding(signature, 0, paramBytes);\n\tvar sPadding = countPadding(signature, paramBytes, signature.length);\n\tvar rLength = paramBytes - rPadding;\n\tvar sLength = paramBytes - sPadding;\n\n\tvar rsBytes = 1 + 1 + rLength + 1 + 1 + sLength;\n\n\tvar shortLength = rsBytes < MAX_OCTET;\n\n\tvar dst = Buffer.allocUnsafe((shortLength ? 2 : 3) + rsBytes);\n\n\tvar offset = 0;\n\tdst[offset++] = ENCODED_TAG_SEQ;\n\tif (shortLength) {\n\t\t// Bit 8 has value \"0\"\n\t\t// bits 7-1 give the length.\n\t\tdst[offset++] = rsBytes;\n\t} else {\n\t\t// Bit 8 of first octet has value \"1\"\n\t\t// bits 7-1 give the number of additional length octets.\n\t\tdst[offset++] = MAX_OCTET\t| 1;\n\t\t// length, base 256\n\t\tdst[offset++] = rsBytes & 0xff;\n\t}\n\tdst[offset++] = ENCODED_TAG_INT;\n\tdst[offset++] = rLength;\n\tif (rPadding < 0) {\n\t\tdst[offset++] = 0;\n\t\toffset += signature.copy(dst, offset, 0, paramBytes);\n\t} else {\n\t\toffset += signature.copy(dst, offset, rPadding, paramBytes);\n\t}\n\tdst[offset++] = ENCODED_TAG_INT;\n\tdst[offset++] = sLength;\n\tif (sPadding < 0) {\n\t\tdst[offset++] = 0;\n\t\tsignature.copy(dst, offset, paramBytes);\n\t} else {\n\t\tsignature.copy(dst, offset, paramBytes + sPadding);\n\t}\n\n\treturn dst;\n}\n\nmodule.exports = {\n\tderToJose: derToJose,\n\tjoseToDer: joseToDer\n};\n","/*jshint node:true */\n'use strict';\nvar Buffer = require('buffer').Buffer; // browserify\nvar SlowBuffer = require('buffer').SlowBuffer;\n\nmodule.exports = bufferEq;\n\nfunction bufferEq(a, b) {\n\n // shortcutting on type is necessary for correctness\n if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {\n return false;\n }\n\n // buffer sizes should be well-known information, so despite this\n // shortcutting, it doesn't leak any information about the *contents* of the\n // buffers.\n if (a.length !== b.length) {\n return false;\n }\n\n var c = 0;\n for (var i = 0; i < a.length; i++) {\n /*jshint bitwise:false */\n c |= a[i] ^ b[i]; // XOR\n }\n return c === 0;\n}\n\nbufferEq.install = function() {\n Buffer.prototype.equal = SlowBuffer.prototype.equal = function equal(that) {\n return bufferEq(this, that);\n };\n};\n\nvar origBufEqual = Buffer.prototype.equal;\nvar origSlowBufEqual = SlowBuffer.prototype.equal;\nbufferEq.restore = function() {\n Buffer.prototype.equal = origBufEqual;\n SlowBuffer.prototype.equal = origSlowBufEqual;\n};\n","var Buffer = require('safe-buffer').Buffer;\nvar crypto = require('crypto');\nvar formatEcdsa = require('ecdsa-sig-formatter');\nvar util = require('util');\n\nvar MSG_INVALID_ALGORITHM = '\"%s\" is not a valid algorithm.\\n Supported algorithms are:\\n \"HS256\", \"HS384\", \"HS512\", \"RS256\", \"RS384\", \"RS512\", \"PS256\", \"PS384\", \"PS512\", \"ES256\", \"ES384\", \"ES512\" and \"none\".'\nvar MSG_INVALID_SECRET = 'secret must be a string or buffer';\nvar MSG_INVALID_VERIFIER_KEY = 'key must be a string or a buffer';\nvar MSG_INVALID_SIGNER_KEY = 'key must be a string, a buffer or an object';\n\nvar supportsKeyObjects = typeof crypto.createPublicKey === 'function';\nif (supportsKeyObjects) {\n MSG_INVALID_VERIFIER_KEY += ' or a KeyObject';\n MSG_INVALID_SECRET += 'or a KeyObject';\n}\n\nfunction checkIsPublicKey(key) {\n if (Buffer.isBuffer(key)) {\n return;\n }\n\n if (typeof key === 'string') {\n return;\n }\n\n if (!supportsKeyObjects) {\n throw typeError(MSG_INVALID_VERIFIER_KEY);\n }\n\n if (typeof key !== 'object') {\n throw typeError(MSG_INVALID_VERIFIER_KEY);\n }\n\n if (typeof key.type !== 'string') {\n throw typeError(MSG_INVALID_VERIFIER_KEY);\n }\n\n if (typeof key.asymmetricKeyType !== 'string') {\n throw typeError(MSG_INVALID_VERIFIER_KEY);\n }\n\n if (typeof key.export !== 'function') {\n throw typeError(MSG_INVALID_VERIFIER_KEY);\n }\n};\n\nfunction checkIsPrivateKey(key) {\n if (Buffer.isBuffer(key)) {\n return;\n }\n\n if (typeof key === 'string') {\n return;\n }\n\n if (typeof key === 'object') {\n return;\n }\n\n throw typeError(MSG_INVALID_SIGNER_KEY);\n};\n\nfunction checkIsSecretKey(key) {\n if (Buffer.isBuffer(key)) {\n return;\n }\n\n if (typeof key === 'string') {\n return key;\n }\n\n if (!supportsKeyObjects) {\n throw typeError(MSG_INVALID_SECRET);\n }\n\n if (typeof key !== 'object') {\n throw typeError(MSG_INVALID_SECRET);\n }\n\n if (key.type !== 'secret') {\n throw typeError(MSG_INVALID_SECRET);\n }\n\n if (typeof key.export !== 'function') {\n throw typeError(MSG_INVALID_SECRET);\n }\n}\n\nfunction fromBase64(base64) {\n return base64\n .replace(/=/g, '')\n .replace(/\\+/g, '-')\n .replace(/\\//g, '_');\n}\n\nfunction toBase64(base64url) {\n base64url = base64url.toString();\n\n var padding = 4 - base64url.length % 4;\n if (padding !== 4) {\n for (var i = 0; i < padding; ++i) {\n base64url += '=';\n }\n }\n\n return base64url\n .replace(/\\-/g, '+')\n .replace(/_/g, '/');\n}\n\nfunction typeError(template) {\n var args = [].slice.call(arguments, 1);\n var errMsg = util.format.bind(util, template).apply(null, args);\n return new TypeError(errMsg);\n}\n\nfunction bufferOrString(obj) {\n return Buffer.isBuffer(obj) || typeof obj === 'string';\n}\n\nfunction normalizeInput(thing) {\n if (!bufferOrString(thing))\n thing = JSON.stringify(thing);\n return thing;\n}\n\nfunction createHmacSigner(bits) {\n return function sign(thing, secret) {\n checkIsSecretKey(secret);\n thing = normalizeInput(thing);\n var hmac = crypto.createHmac('sha' + bits, secret);\n var sig = (hmac.update(thing), hmac.digest('base64'))\n return fromBase64(sig);\n }\n}\n\nvar bufferEqual;\nvar timingSafeEqual = 'timingSafeEqual' in crypto ? function timingSafeEqual(a, b) {\n if (a.byteLength !== b.byteLength) {\n return false;\n }\n\n return crypto.timingSafeEqual(a, b)\n} : function timingSafeEqual(a, b) {\n if (!bufferEqual) {\n bufferEqual = require('buffer-equal-constant-time');\n }\n\n return bufferEqual(a, b)\n}\n\nfunction createHmacVerifier(bits) {\n return function verify(thing, signature, secret) {\n var computedSig = createHmacSigner(bits)(thing, secret);\n return timingSafeEqual(Buffer.from(signature), Buffer.from(computedSig));\n }\n}\n\nfunction createKeySigner(bits) {\n return function sign(thing, privateKey) {\n checkIsPrivateKey(privateKey);\n thing = normalizeInput(thing);\n // Even though we are specifying \"RSA\" here, this works with ECDSA\n // keys as well.\n var signer = crypto.createSign('RSA-SHA' + bits);\n var sig = (signer.update(thing), signer.sign(privateKey, 'base64'));\n return fromBase64(sig);\n }\n}\n\nfunction createKeyVerifier(bits) {\n return function verify(thing, signature, publicKey) {\n checkIsPublicKey(publicKey);\n thing = normalizeInput(thing);\n signature = toBase64(signature);\n var verifier = crypto.createVerify('RSA-SHA' + bits);\n verifier.update(thing);\n return verifier.verify(publicKey, signature, 'base64');\n }\n}\n\nfunction createPSSKeySigner(bits) {\n return function sign(thing, privateKey) {\n checkIsPrivateKey(privateKey);\n thing = normalizeInput(thing);\n var signer = crypto.createSign('RSA-SHA' + bits);\n var sig = (signer.update(thing), signer.sign({\n key: privateKey,\n padding: crypto.constants.RSA_PKCS1_PSS_PADDING,\n saltLength: crypto.constants.RSA_PSS_SALTLEN_DIGEST\n }, 'base64'));\n return fromBase64(sig);\n }\n}\n\nfunction createPSSKeyVerifier(bits) {\n return function verify(thing, signature, publicKey) {\n checkIsPublicKey(publicKey);\n thing = normalizeInput(thing);\n signature = toBase64(signature);\n var verifier = crypto.createVerify('RSA-SHA' + bits);\n verifier.update(thing);\n return verifier.verify({\n key: publicKey,\n padding: crypto.constants.RSA_PKCS1_PSS_PADDING,\n saltLength: crypto.constants.RSA_PSS_SALTLEN_DIGEST\n }, signature, 'base64');\n }\n}\n\nfunction createECDSASigner(bits) {\n var inner = createKeySigner(bits);\n return function sign() {\n var signature = inner.apply(null, arguments);\n signature = formatEcdsa.derToJose(signature, 'ES' + bits);\n return signature;\n };\n}\n\nfunction createECDSAVerifer(bits) {\n var inner = createKeyVerifier(bits);\n return function verify(thing, signature, publicKey) {\n signature = formatEcdsa.joseToDer(signature, 'ES' + bits).toString('base64');\n var result = inner(thing, signature, publicKey);\n return result;\n };\n}\n\nfunction createNoneSigner() {\n return function sign() {\n return '';\n }\n}\n\nfunction createNoneVerifier() {\n return function verify(thing, signature) {\n return signature === '';\n }\n}\n\nmodule.exports = function jwa(algorithm) {\n var signerFactories = {\n hs: createHmacSigner,\n rs: createKeySigner,\n ps: createPSSKeySigner,\n es: createECDSASigner,\n none: createNoneSigner,\n }\n var verifierFactories = {\n hs: createHmacVerifier,\n rs: createKeyVerifier,\n ps: createPSSKeyVerifier,\n es: createECDSAVerifer,\n none: createNoneVerifier,\n }\n var match = algorithm.match(/^(RS|PS|ES|HS)(256|384|512)$|^(none)$/i);\n if (!match)\n throw typeError(MSG_INVALID_ALGORITHM, algorithm);\n var algo = (match[1] || match[3]).toLowerCase();\n var bits = match[2];\n\n return {\n sign: signerFactories[algo](bits),\n verify: verifierFactories[algo](bits),\n }\n};\n","/*global module*/\nvar Buffer = require('buffer').Buffer;\n\nmodule.exports = function toString(obj) {\n if (typeof obj === 'string')\n return obj;\n if (typeof obj === 'number' || Buffer.isBuffer(obj))\n return obj.toString();\n return JSON.stringify(obj);\n};\n","/*global module*/\nvar Buffer = require('safe-buffer').Buffer;\nvar DataStream = require('./data-stream');\nvar jwa = require('jwa');\nvar Stream = require('stream');\nvar toString = require('./tostring');\nvar util = require('util');\n\nfunction base64url(string, encoding) {\n return Buffer\n .from(string, encoding)\n .toString('base64')\n .replace(/=/g, '')\n .replace(/\\+/g, '-')\n .replace(/\\//g, '_');\n}\n\nfunction jwsSecuredInput(header, payload, encoding) {\n encoding = encoding || 'utf8';\n var encodedHeader = base64url(toString(header), 'binary');\n var encodedPayload = base64url(toString(payload), encoding);\n return util.format('%s.%s', encodedHeader, encodedPayload);\n}\n\nfunction jwsSign(opts) {\n var header = opts.header;\n var payload = opts.payload;\n var secretOrKey = opts.secret || opts.privateKey;\n var encoding = opts.encoding;\n var algo = jwa(header.alg);\n var securedInput = jwsSecuredInput(header, payload, encoding);\n var signature = algo.sign(securedInput, secretOrKey);\n return util.format('%s.%s', securedInput, signature);\n}\n\nfunction SignStream(opts) {\n var secret = opts.secret||opts.privateKey||opts.key;\n var secretStream = new DataStream(secret);\n this.readable = true;\n this.header = opts.header;\n this.encoding = opts.encoding;\n this.secret = this.privateKey = this.key = secretStream;\n this.payload = new DataStream(opts.payload);\n this.secret.once('close', function () {\n if (!this.payload.writable && this.readable)\n this.sign();\n }.bind(this));\n\n this.payload.once('close', function () {\n if (!this.secret.writable && this.readable)\n this.sign();\n }.bind(this));\n}\nutil.inherits(SignStream, Stream);\n\nSignStream.prototype.sign = function sign() {\n try {\n var signature = jwsSign({\n header: this.header,\n payload: this.payload.buffer,\n secret: this.secret.buffer,\n encoding: this.encoding\n });\n this.emit('done', signature);\n this.emit('data', signature);\n this.emit('end');\n this.readable = false;\n return signature;\n } catch (e) {\n this.readable = false;\n this.emit('error', e);\n this.emit('close');\n }\n};\n\nSignStream.sign = jwsSign;\n\nmodule.exports = SignStream;\n","/*global module*/\nvar Buffer = require('safe-buffer').Buffer;\nvar DataStream = require('./data-stream');\nvar jwa = require('jwa');\nvar Stream = require('stream');\nvar toString = require('./tostring');\nvar util = require('util');\nvar JWS_REGEX = /^[a-zA-Z0-9\\-_]+?\\.[a-zA-Z0-9\\-_]+?\\.([a-zA-Z0-9\\-_]+)?$/;\n\nfunction isObject(thing) {\n return Object.prototype.toString.call(thing) === '[object Object]';\n}\n\nfunction safeJsonParse(thing) {\n if (isObject(thing))\n return thing;\n try { return JSON.parse(thing); }\n catch (e) { return undefined; }\n}\n\nfunction headerFromJWS(jwsSig) {\n var encodedHeader = jwsSig.split('.', 1)[0];\n return safeJsonParse(Buffer.from(encodedHeader, 'base64').toString('binary'));\n}\n\nfunction securedInputFromJWS(jwsSig) {\n return jwsSig.split('.', 2).join('.');\n}\n\nfunction signatureFromJWS(jwsSig) {\n return jwsSig.split('.')[2];\n}\n\nfunction payloadFromJWS(jwsSig, encoding) {\n encoding = encoding || 'utf8';\n var payload = jwsSig.split('.')[1];\n return Buffer.from(payload, 'base64').toString(encoding);\n}\n\nfunction isValidJws(string) {\n return JWS_REGEX.test(string) && !!headerFromJWS(string);\n}\n\nfunction jwsVerify(jwsSig, algorithm, secretOrKey) {\n if (!algorithm) {\n var err = new Error(\"Missing algorithm parameter for jws.verify\");\n err.code = \"MISSING_ALGORITHM\";\n throw err;\n }\n jwsSig = toString(jwsSig);\n var signature = signatureFromJWS(jwsSig);\n var securedInput = securedInputFromJWS(jwsSig);\n var algo = jwa(algorithm);\n return algo.verify(securedInput, signature, secretOrKey);\n}\n\nfunction jwsDecode(jwsSig, opts) {\n opts = opts || {};\n jwsSig = toString(jwsSig);\n\n if (!isValidJws(jwsSig))\n return null;\n\n var header = headerFromJWS(jwsSig);\n\n if (!header)\n return null;\n\n var payload = payloadFromJWS(jwsSig);\n if (header.typ === 'JWT' || opts.json)\n payload = JSON.parse(payload, opts.encoding);\n\n return {\n header: header,\n payload: payload,\n signature: signatureFromJWS(jwsSig)\n };\n}\n\nfunction VerifyStream(opts) {\n opts = opts || {};\n var secretOrKey = opts.secret||opts.publicKey||opts.key;\n var secretStream = new DataStream(secretOrKey);\n this.readable = true;\n this.algorithm = opts.algorithm;\n this.encoding = opts.encoding;\n this.secret = this.publicKey = this.key = secretStream;\n this.signature = new DataStream(opts.signature);\n this.secret.once('close', function () {\n if (!this.signature.writable && this.readable)\n this.verify();\n }.bind(this));\n\n this.signature.once('close', function () {\n if (!this.secret.writable && this.readable)\n this.verify();\n }.bind(this));\n}\nutil.inherits(VerifyStream, Stream);\nVerifyStream.prototype.verify = function verify() {\n try {\n var valid = jwsVerify(this.signature.buffer, this.algorithm, this.key.buffer);\n var obj = jwsDecode(this.signature.buffer, this.encoding);\n this.emit('done', valid, obj);\n this.emit('data', valid);\n this.emit('end');\n this.readable = false;\n return valid;\n } catch (e) {\n this.readable = false;\n this.emit('error', e);\n this.emit('close');\n }\n};\n\nVerifyStream.decode = jwsDecode;\nVerifyStream.isValid = isValidJws;\nVerifyStream.verify = jwsVerify;\n\nmodule.exports = VerifyStream;\n","/*global exports*/\nvar SignStream = require('./lib/sign-stream');\nvar VerifyStream = require('./lib/verify-stream');\n\nvar ALGORITHMS = [\n 'HS256', 'HS384', 'HS512',\n 'RS256', 'RS384', 'RS512',\n 'PS256', 'PS384', 'PS512',\n 'ES256', 'ES384', 'ES512'\n];\n\nexports.ALGORITHMS = ALGORITHMS;\nexports.sign = SignStream.sign;\nexports.verify = VerifyStream.verify;\nexports.decode = VerifyStream.decode;\nexports.isValid = VerifyStream.isValid;\nexports.createSign = function createSign(opts) {\n return new SignStream(opts);\n};\nexports.createVerify = function createVerify(opts) {\n return new VerifyStream(opts);\n};\n","var jws = require('jws');\n\nmodule.exports = function (jwt, options) {\n options = options || {};\n var decoded = jws.decode(jwt, options);\n if (!decoded) { return null; }\n var payload = decoded.payload;\n\n //try parse the payload\n if(typeof payload === 'string') {\n try {\n var obj = JSON.parse(payload);\n if(obj !== null && typeof obj === 'object') {\n payload = obj;\n }\n } catch (e) { }\n }\n\n //return header if `complete` option is enabled. header includes claims\n //such as `kid` and `alg` used to select the key within a JWKS needed to\n //verify the signature\n if (options.complete === true) {\n return {\n header: decoded.header,\n payload: payload,\n signature: decoded.signature\n };\n }\n return payload;\n};\n","var JsonWebTokenError = function (message, error) {\n Error.call(this, message);\n if(Error.captureStackTrace) {\n Error.captureStackTrace(this, this.constructor);\n }\n this.name = 'JsonWebTokenError';\n this.message = message;\n if (error) this.inner = error;\n};\n\nJsonWebTokenError.prototype = Object.create(Error.prototype);\nJsonWebTokenError.prototype.constructor = JsonWebTokenError;\n\nmodule.exports = JsonWebTokenError;\n","var JsonWebTokenError = require('./JsonWebTokenError');\n\nvar NotBeforeError = function (message, date) {\n JsonWebTokenError.call(this, message);\n this.name = 'NotBeforeError';\n this.date = date;\n};\n\nNotBeforeError.prototype = Object.create(JsonWebTokenError.prototype);\n\nNotBeforeError.prototype.constructor = NotBeforeError;\n\nmodule.exports = NotBeforeError;","var JsonWebTokenError = require('./JsonWebTokenError');\n\nvar TokenExpiredError = function (message, expiredAt) {\n JsonWebTokenError.call(this, message);\n this.name = 'TokenExpiredError';\n this.expiredAt = expiredAt;\n};\n\nTokenExpiredError.prototype = Object.create(JsonWebTokenError.prototype);\n\nTokenExpiredError.prototype.constructor = TokenExpiredError;\n\nmodule.exports = TokenExpiredError;","var ms = require('ms');\n\nmodule.exports = function (time, iat) {\n var timestamp = iat || Math.floor(Date.now() / 1000);\n\n if (typeof time === 'string') {\n var milliseconds = ms(time);\n if (typeof milliseconds === 'undefined') {\n return;\n }\n return Math.floor(timestamp + milliseconds / 1000);\n } else if (typeof time === 'number') {\n return timestamp + time;\n } else {\n return;\n }\n\n};","'use strict'\n\n// Note: this is the semver.org version of the spec that it implements\n// Not necessarily the package version of this code.\nconst SEMVER_SPEC_VERSION = '2.0.0'\n\nconst MAX_LENGTH = 256\nconst MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER ||\n/* istanbul ignore next */ 9007199254740991\n\n// Max safe segment length for coercion.\nconst MAX_SAFE_COMPONENT_LENGTH = 16\n\n// Max safe length for a build identifier. The max length minus 6 characters for\n// the shortest version with a build 0.0.0+BUILD.\nconst MAX_SAFE_BUILD_LENGTH = MAX_LENGTH - 6\n\nconst RELEASE_TYPES = [\n 'major',\n 'premajor',\n 'minor',\n 'preminor',\n 'patch',\n 'prepatch',\n 'prerelease',\n]\n\nmodule.exports = {\n MAX_LENGTH,\n MAX_SAFE_COMPONENT_LENGTH,\n MAX_SAFE_BUILD_LENGTH,\n MAX_SAFE_INTEGER,\n RELEASE_TYPES,\n SEMVER_SPEC_VERSION,\n FLAG_INCLUDE_PRERELEASE: 0b001,\n FLAG_LOOSE: 0b010,\n}\n","'use strict'\n\nconst debug = (\n typeof process === 'object' &&\n process.env &&\n process.env.NODE_DEBUG &&\n /\\bsemver\\b/i.test(process.env.NODE_DEBUG)\n) ? (...args) => console.error('SEMVER', ...args)\n : () => {}\n\nmodule.exports = debug\n","'use strict'\n\nconst {\n MAX_SAFE_COMPONENT_LENGTH,\n MAX_SAFE_BUILD_LENGTH,\n MAX_LENGTH,\n} = require('./constants')\nconst debug = require('./debug')\nexports = module.exports = {}\n\n// The actual regexps go on exports.re\nconst re = exports.re = []\nconst safeRe = exports.safeRe = []\nconst src = exports.src = []\nconst safeSrc = exports.safeSrc = []\nconst t = exports.t = {}\nlet R = 0\n\nconst LETTERDASHNUMBER = '[a-zA-Z0-9-]'\n\n// Replace some greedy regex tokens to prevent regex dos issues. These regex are\n// used internally via the safeRe object since all inputs in this library get\n// normalized first to trim and collapse all extra whitespace. The original\n// regexes are exported for userland consumption and lower level usage. A\n// future breaking change could export the safer regex only with a note that\n// all input should have extra whitespace removed.\nconst safeRegexReplacements = [\n ['\\\\s', 1],\n ['\\\\d', MAX_LENGTH],\n [LETTERDASHNUMBER, MAX_SAFE_BUILD_LENGTH],\n]\n\nconst makeSafeRegex = (value) => {\n for (const [token, max] of safeRegexReplacements) {\n value = value\n .split(`${token}*`).join(`${token}{0,${max}}`)\n .split(`${token}+`).join(`${token}{1,${max}}`)\n }\n return value\n}\n\nconst createToken = (name, value, isGlobal) => {\n const safe = makeSafeRegex(value)\n const index = R++\n debug(name, index, value)\n t[name] = index\n src[index] = value\n safeSrc[index] = safe\n re[index] = new RegExp(value, isGlobal ? 'g' : undefined)\n safeRe[index] = new RegExp(safe, isGlobal ? 'g' : undefined)\n}\n\n// The following Regular Expressions can be used for tokenizing,\n// validating, and parsing SemVer version strings.\n\n// ## Numeric Identifier\n// A single `0`, or a non-zero digit followed by zero or more digits.\n\ncreateToken('NUMERICIDENTIFIER', '0|[1-9]\\\\d*')\ncreateToken('NUMERICIDENTIFIERLOOSE', '\\\\d+')\n\n// ## Non-numeric Identifier\n// Zero or more digits, followed by a letter or hyphen, and then zero or\n// more letters, digits, or hyphens.\n\ncreateToken('NONNUMERICIDENTIFIER', `\\\\d*[a-zA-Z-]${LETTERDASHNUMBER}*`)\n\n// ## Main Version\n// Three dot-separated numeric identifiers.\n\ncreateToken('MAINVERSION', `(${src[t.NUMERICIDENTIFIER]})\\\\.` +\n `(${src[t.NUMERICIDENTIFIER]})\\\\.` +\n `(${src[t.NUMERICIDENTIFIER]})`)\n\ncreateToken('MAINVERSIONLOOSE', `(${src[t.NUMERICIDENTIFIERLOOSE]})\\\\.` +\n `(${src[t.NUMERICIDENTIFIERLOOSE]})\\\\.` +\n `(${src[t.NUMERICIDENTIFIERLOOSE]})`)\n\n// ## Pre-release Version Identifier\n// A numeric identifier, or a non-numeric identifier.\n// Non-numberic identifiers include numberic identifiers but can be longer.\n// Therefore non-numberic identifiers must go first.\n\ncreateToken('PRERELEASEIDENTIFIER', `(?:${src[t.NONNUMERICIDENTIFIER]\n}|${src[t.NUMERICIDENTIFIER]})`)\n\ncreateToken('PRERELEASEIDENTIFIERLOOSE', `(?:${src[t.NONNUMERICIDENTIFIER]\n}|${src[t.NUMERICIDENTIFIERLOOSE]})`)\n\n// ## Pre-release Version\n// Hyphen, followed by one or more dot-separated pre-release version\n// identifiers.\n\ncreateToken('PRERELEASE', `(?:-(${src[t.PRERELEASEIDENTIFIER]\n}(?:\\\\.${src[t.PRERELEASEIDENTIFIER]})*))`)\n\ncreateToken('PRERELEASELOOSE', `(?:-?(${src[t.PRERELEASEIDENTIFIERLOOSE]\n}(?:\\\\.${src[t.PRERELEASEIDENTIFIERLOOSE]})*))`)\n\n// ## Build Metadata Identifier\n// Any combination of digits, letters, or hyphens.\n\ncreateToken('BUILDIDENTIFIER', `${LETTERDASHNUMBER}+`)\n\n// ## Build Metadata\n// Plus sign, followed by one or more period-separated build metadata\n// identifiers.\n\ncreateToken('BUILD', `(?:\\\\+(${src[t.BUILDIDENTIFIER]\n}(?:\\\\.${src[t.BUILDIDENTIFIER]})*))`)\n\n// ## Full Version String\n// A main version, followed optionally by a pre-release version and\n// build metadata.\n\n// Note that the only major, minor, patch, and pre-release sections of\n// the version string are capturing groups. The build metadata is not a\n// capturing group, because it should not ever be used in version\n// comparison.\n\ncreateToken('FULLPLAIN', `v?${src[t.MAINVERSION]\n}${src[t.PRERELEASE]}?${\n src[t.BUILD]}?`)\n\ncreateToken('FULL', `^${src[t.FULLPLAIN]}$`)\n\n// like full, but allows v1.2.3 and =1.2.3, which people do sometimes.\n// also, 1.0.0alpha1 (prerelease without the hyphen) which is pretty\n// common in the npm registry.\ncreateToken('LOOSEPLAIN', `[v=\\\\s]*${src[t.MAINVERSIONLOOSE]\n}${src[t.PRERELEASELOOSE]}?${\n src[t.BUILD]}?`)\n\ncreateToken('LOOSE', `^${src[t.LOOSEPLAIN]}$`)\n\ncreateToken('GTLT', '((?:<|>)?=?)')\n\n// Something like \"2.*\" or \"1.2.x\".\n// Note that \"x.x\" is a valid xRange identifer, meaning \"any version\"\n// Only the first item is strictly required.\ncreateToken('XRANGEIDENTIFIERLOOSE', `${src[t.NUMERICIDENTIFIERLOOSE]}|x|X|\\\\*`)\ncreateToken('XRANGEIDENTIFIER', `${src[t.NUMERICIDENTIFIER]}|x|X|\\\\*`)\n\ncreateToken('XRANGEPLAIN', `[v=\\\\s]*(${src[t.XRANGEIDENTIFIER]})` +\n `(?:\\\\.(${src[t.XRANGEIDENTIFIER]})` +\n `(?:\\\\.(${src[t.XRANGEIDENTIFIER]})` +\n `(?:${src[t.PRERELEASE]})?${\n src[t.BUILD]}?` +\n `)?)?`)\n\ncreateToken('XRANGEPLAINLOOSE', `[v=\\\\s]*(${src[t.XRANGEIDENTIFIERLOOSE]})` +\n `(?:\\\\.(${src[t.XRANGEIDENTIFIERLOOSE]})` +\n `(?:\\\\.(${src[t.XRANGEIDENTIFIERLOOSE]})` +\n `(?:${src[t.PRERELEASELOOSE]})?${\n src[t.BUILD]}?` +\n `)?)?`)\n\ncreateToken('XRANGE', `^${src[t.GTLT]}\\\\s*${src[t.XRANGEPLAIN]}$`)\ncreateToken('XRANGELOOSE', `^${src[t.GTLT]}\\\\s*${src[t.XRANGEPLAINLOOSE]}$`)\n\n// Coercion.\n// Extract anything that could conceivably be a part of a valid semver\ncreateToken('COERCEPLAIN', `${'(^|[^\\\\d])' +\n '(\\\\d{1,'}${MAX_SAFE_COMPONENT_LENGTH}})` +\n `(?:\\\\.(\\\\d{1,${MAX_SAFE_COMPONENT_LENGTH}}))?` +\n `(?:\\\\.(\\\\d{1,${MAX_SAFE_COMPONENT_LENGTH}}))?`)\ncreateToken('COERCE', `${src[t.COERCEPLAIN]}(?:$|[^\\\\d])`)\ncreateToken('COERCEFULL', src[t.COERCEPLAIN] +\n `(?:${src[t.PRERELEASE]})?` +\n `(?:${src[t.BUILD]})?` +\n `(?:$|[^\\\\d])`)\ncreateToken('COERCERTL', src[t.COERCE], true)\ncreateToken('COERCERTLFULL', src[t.COERCEFULL], true)\n\n// Tilde ranges.\n// Meaning is \"reasonably at or greater than\"\ncreateToken('LONETILDE', '(?:~>?)')\n\ncreateToken('TILDETRIM', `(\\\\s*)${src[t.LONETILDE]}\\\\s+`, true)\nexports.tildeTrimReplace = '$1~'\n\ncreateToken('TILDE', `^${src[t.LONETILDE]}${src[t.XRANGEPLAIN]}$`)\ncreateToken('TILDELOOSE', `^${src[t.LONETILDE]}${src[t.XRANGEPLAINLOOSE]}$`)\n\n// Caret ranges.\n// Meaning is \"at least and backwards compatible with\"\ncreateToken('LONECARET', '(?:\\\\^)')\n\ncreateToken('CARETTRIM', `(\\\\s*)${src[t.LONECARET]}\\\\s+`, true)\nexports.caretTrimReplace = '$1^'\n\ncreateToken('CARET', `^${src[t.LONECARET]}${src[t.XRANGEPLAIN]}$`)\ncreateToken('CARETLOOSE', `^${src[t.LONECARET]}${src[t.XRANGEPLAINLOOSE]}$`)\n\n// A simple gt/lt/eq thing, or just \"\" to indicate \"any version\"\ncreateToken('COMPARATORLOOSE', `^${src[t.GTLT]}\\\\s*(${src[t.LOOSEPLAIN]})$|^$`)\ncreateToken('COMPARATOR', `^${src[t.GTLT]}\\\\s*(${src[t.FULLPLAIN]})$|^$`)\n\n// An expression to strip any whitespace between the gtlt and the thing\n// it modifies, so that `> 1.2.3` ==> `>1.2.3`\ncreateToken('COMPARATORTRIM', `(\\\\s*)${src[t.GTLT]\n}\\\\s*(${src[t.LOOSEPLAIN]}|${src[t.XRANGEPLAIN]})`, true)\nexports.comparatorTrimReplace = '$1$2$3'\n\n// Something like `1.2.3 - 1.2.4`\n// Note that these all use the loose form, because they'll be\n// checked against either the strict or loose comparator form\n// later.\ncreateToken('HYPHENRANGE', `^\\\\s*(${src[t.XRANGEPLAIN]})` +\n `\\\\s+-\\\\s+` +\n `(${src[t.XRANGEPLAIN]})` +\n `\\\\s*$`)\n\ncreateToken('HYPHENRANGELOOSE', `^\\\\s*(${src[t.XRANGEPLAINLOOSE]})` +\n `\\\\s+-\\\\s+` +\n `(${src[t.XRANGEPLAINLOOSE]})` +\n `\\\\s*$`)\n\n// Star ranges basically just allow anything at all.\ncreateToken('STAR', '(<|>)?=?\\\\s*\\\\*')\n// >=0.0.0 is like a star\ncreateToken('GTE0', '^\\\\s*>=\\\\s*0\\\\.0\\\\.0\\\\s*$')\ncreateToken('GTE0PRE', '^\\\\s*>=\\\\s*0\\\\.0\\\\.0-0\\\\s*$')\n","'use strict'\n\n// parse out just the options we care about\nconst looseOption = Object.freeze({ loose: true })\nconst emptyOpts = Object.freeze({ })\nconst parseOptions = options => {\n if (!options) {\n return emptyOpts\n }\n\n if (typeof options !== 'object') {\n return looseOption\n }\n\n return options\n}\nmodule.exports = parseOptions\n","'use strict'\n\nconst numeric = /^[0-9]+$/\nconst compareIdentifiers = (a, b) => {\n if (typeof a === 'number' && typeof b === 'number') {\n return a === b ? 0 : a < b ? -1 : 1\n }\n\n const anum = numeric.test(a)\n const bnum = numeric.test(b)\n\n if (anum && bnum) {\n a = +a\n b = +b\n }\n\n return a === b ? 0\n : (anum && !bnum) ? -1\n : (bnum && !anum) ? 1\n : a < b ? -1\n : 1\n}\n\nconst rcompareIdentifiers = (a, b) => compareIdentifiers(b, a)\n\nmodule.exports = {\n compareIdentifiers,\n rcompareIdentifiers,\n}\n","'use strict'\n\nconst debug = require('../internal/debug')\nconst { MAX_LENGTH, MAX_SAFE_INTEGER } = require('../internal/constants')\nconst { safeRe: re, t } = require('../internal/re')\n\nconst parseOptions = require('../internal/parse-options')\nconst { compareIdentifiers } = require('../internal/identifiers')\nclass SemVer {\n constructor (version, options) {\n options = parseOptions(options)\n\n if (version instanceof SemVer) {\n if (version.loose === !!options.loose &&\n version.includePrerelease === !!options.includePrerelease) {\n return version\n } else {\n version = version.version\n }\n } else if (typeof version !== 'string') {\n throw new TypeError(`Invalid version. Must be a string. Got type \"${typeof version}\".`)\n }\n\n if (version.length > MAX_LENGTH) {\n throw new TypeError(\n `version is longer than ${MAX_LENGTH} characters`\n )\n }\n\n debug('SemVer', version, options)\n this.options = options\n this.loose = !!options.loose\n // this isn't actually relevant for versions, but keep it so that we\n // don't run into trouble passing this.options around.\n this.includePrerelease = !!options.includePrerelease\n\n const m = version.trim().match(options.loose ? re[t.LOOSE] : re[t.FULL])\n\n if (!m) {\n throw new TypeError(`Invalid Version: ${version}`)\n }\n\n this.raw = version\n\n // these are actually numbers\n this.major = +m[1]\n this.minor = +m[2]\n this.patch = +m[3]\n\n if (this.major > MAX_SAFE_INTEGER || this.major < 0) {\n throw new TypeError('Invalid major version')\n }\n\n if (this.minor > MAX_SAFE_INTEGER || this.minor < 0) {\n throw new TypeError('Invalid minor version')\n }\n\n if (this.patch > MAX_SAFE_INTEGER || this.patch < 0) {\n throw new TypeError('Invalid patch version')\n }\n\n // numberify any prerelease numeric ids\n if (!m[4]) {\n this.prerelease = []\n } else {\n this.prerelease = m[4].split('.').map((id) => {\n if (/^[0-9]+$/.test(id)) {\n const num = +id\n if (num >= 0 && num < MAX_SAFE_INTEGER) {\n return num\n }\n }\n return id\n })\n }\n\n this.build = m[5] ? m[5].split('.') : []\n this.format()\n }\n\n format () {\n this.version = `${this.major}.${this.minor}.${this.patch}`\n if (this.prerelease.length) {\n this.version += `-${this.prerelease.join('.')}`\n }\n return this.version\n }\n\n toString () {\n return this.version\n }\n\n compare (other) {\n debug('SemVer.compare', this.version, this.options, other)\n if (!(other instanceof SemVer)) {\n if (typeof other === 'string' && other === this.version) {\n return 0\n }\n other = new SemVer(other, this.options)\n }\n\n if (other.version === this.version) {\n return 0\n }\n\n return this.compareMain(other) || this.comparePre(other)\n }\n\n compareMain (other) {\n if (!(other instanceof SemVer)) {\n other = new SemVer(other, this.options)\n }\n\n if (this.major < other.major) {\n return -1\n }\n if (this.major > other.major) {\n return 1\n }\n if (this.minor < other.minor) {\n return -1\n }\n if (this.minor > other.minor) {\n return 1\n }\n if (this.patch < other.patch) {\n return -1\n }\n if (this.patch > other.patch) {\n return 1\n }\n return 0\n }\n\n comparePre (other) {\n if (!(other instanceof SemVer)) {\n other = new SemVer(other, this.options)\n }\n\n // NOT having a prerelease is > having one\n if (this.prerelease.length && !other.prerelease.length) {\n return -1\n } else if (!this.prerelease.length && other.prerelease.length) {\n return 1\n } else if (!this.prerelease.length && !other.prerelease.length) {\n return 0\n }\n\n let i = 0\n do {\n const a = this.prerelease[i]\n const b = other.prerelease[i]\n debug('prerelease compare', i, a, b)\n if (a === undefined && b === undefined) {\n return 0\n } else if (b === undefined) {\n return 1\n } else if (a === undefined) {\n return -1\n } else if (a === b) {\n continue\n } else {\n return compareIdentifiers(a, b)\n }\n } while (++i)\n }\n\n compareBuild (other) {\n if (!(other instanceof SemVer)) {\n other = new SemVer(other, this.options)\n }\n\n let i = 0\n do {\n const a = this.build[i]\n const b = other.build[i]\n debug('build compare', i, a, b)\n if (a === undefined && b === undefined) {\n return 0\n } else if (b === undefined) {\n return 1\n } else if (a === undefined) {\n return -1\n } else if (a === b) {\n continue\n } else {\n return compareIdentifiers(a, b)\n }\n } while (++i)\n }\n\n // preminor will bump the version up to the next minor release, and immediately\n // down to pre-release. premajor and prepatch work the same way.\n inc (release, identifier, identifierBase) {\n if (release.startsWith('pre')) {\n if (!identifier && identifierBase === false) {\n throw new Error('invalid increment argument: identifier is empty')\n }\n // Avoid an invalid semver results\n if (identifier) {\n const match = `-${identifier}`.match(this.options.loose ? re[t.PRERELEASELOOSE] : re[t.PRERELEASE])\n if (!match || match[1] !== identifier) {\n throw new Error(`invalid identifier: ${identifier}`)\n }\n }\n }\n\n switch (release) {\n case 'premajor':\n this.prerelease.length = 0\n this.patch = 0\n this.minor = 0\n this.major++\n this.inc('pre', identifier, identifierBase)\n break\n case 'preminor':\n this.prerelease.length = 0\n this.patch = 0\n this.minor++\n this.inc('pre', identifier, identifierBase)\n break\n case 'prepatch':\n // If this is already a prerelease, it will bump to the next version\n // drop any prereleases that might already exist, since they are not\n // relevant at this point.\n this.prerelease.length = 0\n this.inc('patch', identifier, identifierBase)\n this.inc('pre', identifier, identifierBase)\n break\n // If the input is a non-prerelease version, this acts the same as\n // prepatch.\n case 'prerelease':\n if (this.prerelease.length === 0) {\n this.inc('patch', identifier, identifierBase)\n }\n this.inc('pre', identifier, identifierBase)\n break\n case 'release':\n if (this.prerelease.length === 0) {\n throw new Error(`version ${this.raw} is not a prerelease`)\n }\n this.prerelease.length = 0\n break\n\n case 'major':\n // If this is a pre-major version, bump up to the same major version.\n // Otherwise increment major.\n // 1.0.0-5 bumps to 1.0.0\n // 1.1.0 bumps to 2.0.0\n if (\n this.minor !== 0 ||\n this.patch !== 0 ||\n this.prerelease.length === 0\n ) {\n this.major++\n }\n this.minor = 0\n this.patch = 0\n this.prerelease = []\n break\n case 'minor':\n // If this is a pre-minor version, bump up to the same minor version.\n // Otherwise increment minor.\n // 1.2.0-5 bumps to 1.2.0\n // 1.2.1 bumps to 1.3.0\n if (this.patch !== 0 || this.prerelease.length === 0) {\n this.minor++\n }\n this.patch = 0\n this.prerelease = []\n break\n case 'patch':\n // If this is not a pre-release version, it will increment the patch.\n // If it is a pre-release it will bump up to the same patch version.\n // 1.2.0-5 patches to 1.2.0\n // 1.2.0 patches to 1.2.1\n if (this.prerelease.length === 0) {\n this.patch++\n }\n this.prerelease = []\n break\n // This probably shouldn't be used publicly.\n // 1.0.0 'pre' would become 1.0.0-0 which is the wrong direction.\n case 'pre': {\n const base = Number(identifierBase) ? 1 : 0\n\n if (this.prerelease.length === 0) {\n this.prerelease = [base]\n } else {\n let i = this.prerelease.length\n while (--i >= 0) {\n if (typeof this.prerelease[i] === 'number') {\n this.prerelease[i]++\n i = -2\n }\n }\n if (i === -1) {\n // didn't increment anything\n if (identifier === this.prerelease.join('.') && identifierBase === false) {\n throw new Error('invalid increment argument: identifier already exists')\n }\n this.prerelease.push(base)\n }\n }\n if (identifier) {\n // 1.2.0-beta.1 bumps to 1.2.0-beta.2,\n // 1.2.0-beta.fooblz or 1.2.0-beta bumps to 1.2.0-beta.0\n let prerelease = [identifier, base]\n if (identifierBase === false) {\n prerelease = [identifier]\n }\n if (compareIdentifiers(this.prerelease[0], identifier) === 0) {\n if (isNaN(this.prerelease[1])) {\n this.prerelease = prerelease\n }\n } else {\n this.prerelease = prerelease\n }\n }\n break\n }\n default:\n throw new Error(`invalid increment argument: ${release}`)\n }\n this.raw = this.format()\n if (this.build.length) {\n this.raw += `+${this.build.join('.')}`\n }\n return this\n }\n}\n\nmodule.exports = SemVer\n","'use strict'\n\nconst SemVer = require('../classes/semver')\nconst parse = (version, options, throwErrors = false) => {\n if (version instanceof SemVer) {\n return version\n }\n try {\n return new SemVer(version, options)\n } catch (er) {\n if (!throwErrors) {\n return null\n }\n throw er\n }\n}\n\nmodule.exports = parse\n","'use strict'\n\nconst parse = require('./parse')\nconst valid = (version, options) => {\n const v = parse(version, options)\n return v ? v.version : null\n}\nmodule.exports = valid\n","'use strict'\n\nconst parse = require('./parse')\nconst clean = (version, options) => {\n const s = parse(version.trim().replace(/^[=v]+/, ''), options)\n return s ? s.version : null\n}\nmodule.exports = clean\n","'use strict'\n\nconst SemVer = require('../classes/semver')\n\nconst inc = (version, release, options, identifier, identifierBase) => {\n if (typeof (options) === 'string') {\n identifierBase = identifier\n identifier = options\n options = undefined\n }\n\n try {\n return new SemVer(\n version instanceof SemVer ? version.version : version,\n options\n ).inc(release, identifier, identifierBase).version\n } catch (er) {\n return null\n }\n}\nmodule.exports = inc\n","'use strict'\n\nconst parse = require('./parse.js')\n\nconst diff = (version1, version2) => {\n const v1 = parse(version1, null, true)\n const v2 = parse(version2, null, true)\n const comparison = v1.compare(v2)\n\n if (comparison === 0) {\n return null\n }\n\n const v1Higher = comparison > 0\n const highVersion = v1Higher ? v1 : v2\n const lowVersion = v1Higher ? v2 : v1\n const highHasPre = !!highVersion.prerelease.length\n const lowHasPre = !!lowVersion.prerelease.length\n\n if (lowHasPre && !highHasPre) {\n // Going from prerelease -> no prerelease requires some special casing\n\n // If the low version has only a major, then it will always be a major\n // Some examples:\n // 1.0.0-1 -> 1.0.0\n // 1.0.0-1 -> 1.1.1\n // 1.0.0-1 -> 2.0.0\n if (!lowVersion.patch && !lowVersion.minor) {\n return 'major'\n }\n\n // If the main part has no difference\n if (lowVersion.compareMain(highVersion) === 0) {\n if (lowVersion.minor && !lowVersion.patch) {\n return 'minor'\n }\n return 'patch'\n }\n }\n\n // add the `pre` prefix if we are going to a prerelease version\n const prefix = highHasPre ? 'pre' : ''\n\n if (v1.major !== v2.major) {\n return prefix + 'major'\n }\n\n if (v1.minor !== v2.minor) {\n return prefix + 'minor'\n }\n\n if (v1.patch !== v2.patch) {\n return prefix + 'patch'\n }\n\n // high and low are preleases\n return 'prerelease'\n}\n\nmodule.exports = diff\n","'use strict'\n\nconst SemVer = require('../classes/semver')\nconst major = (a, loose) => new SemVer(a, loose).major\nmodule.exports = major\n","'use strict'\n\nconst SemVer = require('../classes/semver')\nconst minor = (a, loose) => new SemVer(a, loose).minor\nmodule.exports = minor\n","'use strict'\n\nconst SemVer = require('../classes/semver')\nconst patch = (a, loose) => new SemVer(a, loose).patch\nmodule.exports = patch\n","'use strict'\n\nconst parse = require('./parse')\nconst prerelease = (version, options) => {\n const parsed = parse(version, options)\n return (parsed && parsed.prerelease.length) ? parsed.prerelease : null\n}\nmodule.exports = prerelease\n","'use strict'\n\nconst SemVer = require('../classes/semver')\nconst compare = (a, b, loose) =>\n new SemVer(a, loose).compare(new SemVer(b, loose))\n\nmodule.exports = compare\n","'use strict'\n\nconst compare = require('./compare')\nconst rcompare = (a, b, loose) => compare(b, a, loose)\nmodule.exports = rcompare\n","'use strict'\n\nconst compare = require('./compare')\nconst compareLoose = (a, b) => compare(a, b, true)\nmodule.exports = compareLoose\n","'use strict'\n\nconst SemVer = require('../classes/semver')\nconst compareBuild = (a, b, loose) => {\n const versionA = new SemVer(a, loose)\n const versionB = new SemVer(b, loose)\n return versionA.compare(versionB) || versionA.compareBuild(versionB)\n}\nmodule.exports = compareBuild\n","'use strict'\n\nconst compareBuild = require('./compare-build')\nconst sort = (list, loose) => list.sort((a, b) => compareBuild(a, b, loose))\nmodule.exports = sort\n","'use strict'\n\nconst compareBuild = require('./compare-build')\nconst rsort = (list, loose) => list.sort((a, b) => compareBuild(b, a, loose))\nmodule.exports = rsort\n","'use strict'\n\nconst compare = require('./compare')\nconst gt = (a, b, loose) => compare(a, b, loose) > 0\nmodule.exports = gt\n","'use strict'\n\nconst compare = require('./compare')\nconst lt = (a, b, loose) => compare(a, b, loose) < 0\nmodule.exports = lt\n","'use strict'\n\nconst compare = require('./compare')\nconst eq = (a, b, loose) => compare(a, b, loose) === 0\nmodule.exports = eq\n","'use strict'\n\nconst compare = require('./compare')\nconst neq = (a, b, loose) => compare(a, b, loose) !== 0\nmodule.exports = neq\n","'use strict'\n\nconst compare = require('./compare')\nconst gte = (a, b, loose) => compare(a, b, loose) >= 0\nmodule.exports = gte\n","'use strict'\n\nconst compare = require('./compare')\nconst lte = (a, b, loose) => compare(a, b, loose) <= 0\nmodule.exports = lte\n","'use strict'\n\nconst eq = require('./eq')\nconst neq = require('./neq')\nconst gt = require('./gt')\nconst gte = require('./gte')\nconst lt = require('./lt')\nconst lte = require('./lte')\n\nconst cmp = (a, op, b, loose) => {\n switch (op) {\n case '===':\n if (typeof a === 'object') {\n a = a.version\n }\n if (typeof b === 'object') {\n b = b.version\n }\n return a === b\n\n case '!==':\n if (typeof a === 'object') {\n a = a.version\n }\n if (typeof b === 'object') {\n b = b.version\n }\n return a !== b\n\n case '':\n case '=':\n case '==':\n return eq(a, b, loose)\n\n case '!=':\n return neq(a, b, loose)\n\n case '>':\n return gt(a, b, loose)\n\n case '>=':\n return gte(a, b, loose)\n\n case '<':\n return lt(a, b, loose)\n\n case '<=':\n return lte(a, b, loose)\n\n default:\n throw new TypeError(`Invalid operator: ${op}`)\n }\n}\nmodule.exports = cmp\n","'use strict'\n\nconst SemVer = require('../classes/semver')\nconst parse = require('./parse')\nconst { safeRe: re, t } = require('../internal/re')\n\nconst coerce = (version, options) => {\n if (version instanceof SemVer) {\n return version\n }\n\n if (typeof version === 'number') {\n version = String(version)\n }\n\n if (typeof version !== 'string') {\n return null\n }\n\n options = options || {}\n\n let match = null\n if (!options.rtl) {\n match = version.match(options.includePrerelease ? re[t.COERCEFULL] : re[t.COERCE])\n } else {\n // Find the right-most coercible string that does not share\n // a terminus with a more left-ward coercible string.\n // Eg, '1.2.3.4' wants to coerce '2.3.4', not '3.4' or '4'\n // With includePrerelease option set, '1.2.3.4-rc' wants to coerce '2.3.4-rc', not '2.3.4'\n //\n // Walk through the string checking with a /g regexp\n // Manually set the index so as to pick up overlapping matches.\n // Stop when we get a match that ends at the string end, since no\n // coercible string can be more right-ward without the same terminus.\n const coerceRtlRegex = options.includePrerelease ? re[t.COERCERTLFULL] : re[t.COERCERTL]\n let next\n while ((next = coerceRtlRegex.exec(version)) &&\n (!match || match.index + match[0].length !== version.length)\n ) {\n if (!match ||\n next.index + next[0].length !== match.index + match[0].length) {\n match = next\n }\n coerceRtlRegex.lastIndex = next.index + next[1].length + next[2].length\n }\n // leave it in a clean state\n coerceRtlRegex.lastIndex = -1\n }\n\n if (match === null) {\n return null\n }\n\n const major = match[2]\n const minor = match[3] || '0'\n const patch = match[4] || '0'\n const prerelease = options.includePrerelease && match[5] ? `-${match[5]}` : ''\n const build = options.includePrerelease && match[6] ? `+${match[6]}` : ''\n\n return parse(`${major}.${minor}.${patch}${prerelease}${build}`, options)\n}\nmodule.exports = coerce\n","'use strict'\n\nclass LRUCache {\n constructor () {\n this.max = 1000\n this.map = new Map()\n }\n\n get (key) {\n const value = this.map.get(key)\n if (value === undefined) {\n return undefined\n } else {\n // Remove the key from the map and add it to the end\n this.map.delete(key)\n this.map.set(key, value)\n return value\n }\n }\n\n delete (key) {\n return this.map.delete(key)\n }\n\n set (key, value) {\n const deleted = this.delete(key)\n\n if (!deleted && value !== undefined) {\n // If cache is full, delete the least recently used item\n if (this.map.size >= this.max) {\n const firstKey = this.map.keys().next().value\n this.delete(firstKey)\n }\n\n this.map.set(key, value)\n }\n\n return this\n }\n}\n\nmodule.exports = LRUCache\n","'use strict'\n\nconst SPACE_CHARACTERS = /\\s+/g\n\n// hoisted class for cyclic dependency\nclass Range {\n constructor (range, options) {\n options = parseOptions(options)\n\n if (range instanceof Range) {\n if (\n range.loose === !!options.loose &&\n range.includePrerelease === !!options.includePrerelease\n ) {\n return range\n } else {\n return new Range(range.raw, options)\n }\n }\n\n if (range instanceof Comparator) {\n // just put it in the set and return\n this.raw = range.value\n this.set = [[range]]\n this.formatted = undefined\n return this\n }\n\n this.options = options\n this.loose = !!options.loose\n this.includePrerelease = !!options.includePrerelease\n\n // First reduce all whitespace as much as possible so we do not have to rely\n // on potentially slow regexes like \\s*. This is then stored and used for\n // future error messages as well.\n this.raw = range.trim().replace(SPACE_CHARACTERS, ' ')\n\n // First, split on ||\n this.set = this.raw\n .split('||')\n // map the range to a 2d array of comparators\n .map(r => this.parseRange(r.trim()))\n // throw out any comparator lists that are empty\n // this generally means that it was not a valid range, which is allowed\n // in loose mode, but will still throw if the WHOLE range is invalid.\n .filter(c => c.length)\n\n if (!this.set.length) {\n throw new TypeError(`Invalid SemVer Range: ${this.raw}`)\n }\n\n // if we have any that are not the null set, throw out null sets.\n if (this.set.length > 1) {\n // keep the first one, in case they're all null sets\n const first = this.set[0]\n this.set = this.set.filter(c => !isNullSet(c[0]))\n if (this.set.length === 0) {\n this.set = [first]\n } else if (this.set.length > 1) {\n // if we have any that are *, then the range is just *\n for (const c of this.set) {\n if (c.length === 1 && isAny(c[0])) {\n this.set = [c]\n break\n }\n }\n }\n }\n\n this.formatted = undefined\n }\n\n get range () {\n if (this.formatted === undefined) {\n this.formatted = ''\n for (let i = 0; i < this.set.length; i++) {\n if (i > 0) {\n this.formatted += '||'\n }\n const comps = this.set[i]\n for (let k = 0; k < comps.length; k++) {\n if (k > 0) {\n this.formatted += ' '\n }\n this.formatted += comps[k].toString().trim()\n }\n }\n }\n return this.formatted\n }\n\n format () {\n return this.range\n }\n\n toString () {\n return this.range\n }\n\n parseRange (range) {\n // memoize range parsing for performance.\n // this is a very hot path, and fully deterministic.\n const memoOpts =\n (this.options.includePrerelease && FLAG_INCLUDE_PRERELEASE) |\n (this.options.loose && FLAG_LOOSE)\n const memoKey = memoOpts + ':' + range\n const cached = cache.get(memoKey)\n if (cached) {\n return cached\n }\n\n const loose = this.options.loose\n // `1.2.3 - 1.2.4` => `>=1.2.3 <=1.2.4`\n const hr = loose ? re[t.HYPHENRANGELOOSE] : re[t.HYPHENRANGE]\n range = range.replace(hr, hyphenReplace(this.options.includePrerelease))\n debug('hyphen replace', range)\n\n // `> 1.2.3 < 1.2.5` => `>1.2.3 <1.2.5`\n range = range.replace(re[t.COMPARATORTRIM], comparatorTrimReplace)\n debug('comparator trim', range)\n\n // `~ 1.2.3` => `~1.2.3`\n range = range.replace(re[t.TILDETRIM], tildeTrimReplace)\n debug('tilde trim', range)\n\n // `^ 1.2.3` => `^1.2.3`\n range = range.replace(re[t.CARETTRIM], caretTrimReplace)\n debug('caret trim', range)\n\n // At this point, the range is completely trimmed and\n // ready to be split into comparators.\n\n let rangeList = range\n .split(' ')\n .map(comp => parseComparator(comp, this.options))\n .join(' ')\n .split(/\\s+/)\n // >=0.0.0 is equivalent to *\n .map(comp => replaceGTE0(comp, this.options))\n\n if (loose) {\n // in loose mode, throw out any that are not valid comparators\n rangeList = rangeList.filter(comp => {\n debug('loose invalid filter', comp, this.options)\n return !!comp.match(re[t.COMPARATORLOOSE])\n })\n }\n debug('range list', rangeList)\n\n // if any comparators are the null set, then replace with JUST null set\n // if more than one comparator, remove any * comparators\n // also, don't include the same comparator more than once\n const rangeMap = new Map()\n const comparators = rangeList.map(comp => new Comparator(comp, this.options))\n for (const comp of comparators) {\n if (isNullSet(comp)) {\n return [comp]\n }\n rangeMap.set(comp.value, comp)\n }\n if (rangeMap.size > 1 && rangeMap.has('')) {\n rangeMap.delete('')\n }\n\n const result = [...rangeMap.values()]\n cache.set(memoKey, result)\n return result\n }\n\n intersects (range, options) {\n if (!(range instanceof Range)) {\n throw new TypeError('a Range is required')\n }\n\n return this.set.some((thisComparators) => {\n return (\n isSatisfiable(thisComparators, options) &&\n range.set.some((rangeComparators) => {\n return (\n isSatisfiable(rangeComparators, options) &&\n thisComparators.every((thisComparator) => {\n return rangeComparators.every((rangeComparator) => {\n return thisComparator.intersects(rangeComparator, options)\n })\n })\n )\n })\n )\n })\n }\n\n // if ANY of the sets match ALL of its comparators, then pass\n test (version) {\n if (!version) {\n return false\n }\n\n if (typeof version === 'string') {\n try {\n version = new SemVer(version, this.options)\n } catch (er) {\n return false\n }\n }\n\n for (let i = 0; i < this.set.length; i++) {\n if (testSet(this.set[i], version, this.options)) {\n return true\n }\n }\n return false\n }\n}\n\nmodule.exports = Range\n\nconst LRU = require('../internal/lrucache')\nconst cache = new LRU()\n\nconst parseOptions = require('../internal/parse-options')\nconst Comparator = require('./comparator')\nconst debug = require('../internal/debug')\nconst SemVer = require('./semver')\nconst {\n safeRe: re,\n t,\n comparatorTrimReplace,\n tildeTrimReplace,\n caretTrimReplace,\n} = require('../internal/re')\nconst { FLAG_INCLUDE_PRERELEASE, FLAG_LOOSE } = require('../internal/constants')\n\nconst isNullSet = c => c.value === '<0.0.0-0'\nconst isAny = c => c.value === ''\n\n// take a set of comparators and determine whether there\n// exists a version which can satisfy it\nconst isSatisfiable = (comparators, options) => {\n let result = true\n const remainingComparators = comparators.slice()\n let testComparator = remainingComparators.pop()\n\n while (result && remainingComparators.length) {\n result = remainingComparators.every((otherComparator) => {\n return testComparator.intersects(otherComparator, options)\n })\n\n testComparator = remainingComparators.pop()\n }\n\n return result\n}\n\n// comprised of xranges, tildes, stars, and gtlt's at this point.\n// already replaced the hyphen ranges\n// turn into a set of JUST comparators.\nconst parseComparator = (comp, options) => {\n comp = comp.replace(re[t.BUILD], '')\n debug('comp', comp, options)\n comp = replaceCarets(comp, options)\n debug('caret', comp)\n comp = replaceTildes(comp, options)\n debug('tildes', comp)\n comp = replaceXRanges(comp, options)\n debug('xrange', comp)\n comp = replaceStars(comp, options)\n debug('stars', comp)\n return comp\n}\n\nconst isX = id => !id || id.toLowerCase() === 'x' || id === '*'\n\n// ~, ~> --> * (any, kinda silly)\n// ~2, ~2.x, ~2.x.x, ~>2, ~>2.x ~>2.x.x --> >=2.0.0 <3.0.0-0\n// ~2.0, ~2.0.x, ~>2.0, ~>2.0.x --> >=2.0.0 <2.1.0-0\n// ~1.2, ~1.2.x, ~>1.2, ~>1.2.x --> >=1.2.0 <1.3.0-0\n// ~1.2.3, ~>1.2.3 --> >=1.2.3 <1.3.0-0\n// ~1.2.0, ~>1.2.0 --> >=1.2.0 <1.3.0-0\n// ~0.0.1 --> >=0.0.1 <0.1.0-0\nconst replaceTildes = (comp, options) => {\n return comp\n .trim()\n .split(/\\s+/)\n .map((c) => replaceTilde(c, options))\n .join(' ')\n}\n\nconst replaceTilde = (comp, options) => {\n const r = options.loose ? re[t.TILDELOOSE] : re[t.TILDE]\n return comp.replace(r, (_, M, m, p, pr) => {\n debug('tilde', comp, _, M, m, p, pr)\n let ret\n\n if (isX(M)) {\n ret = ''\n } else if (isX(m)) {\n ret = `>=${M}.0.0 <${+M + 1}.0.0-0`\n } else if (isX(p)) {\n // ~1.2 == >=1.2.0 <1.3.0-0\n ret = `>=${M}.${m}.0 <${M}.${+m + 1}.0-0`\n } else if (pr) {\n debug('replaceTilde pr', pr)\n ret = `>=${M}.${m}.${p}-${pr\n } <${M}.${+m + 1}.0-0`\n } else {\n // ~1.2.3 == >=1.2.3 <1.3.0-0\n ret = `>=${M}.${m}.${p\n } <${M}.${+m + 1}.0-0`\n }\n\n debug('tilde return', ret)\n return ret\n })\n}\n\n// ^ --> * (any, kinda silly)\n// ^2, ^2.x, ^2.x.x --> >=2.0.0 <3.0.0-0\n// ^2.0, ^2.0.x --> >=2.0.0 <3.0.0-0\n// ^1.2, ^1.2.x --> >=1.2.0 <2.0.0-0\n// ^1.2.3 --> >=1.2.3 <2.0.0-0\n// ^1.2.0 --> >=1.2.0 <2.0.0-0\n// ^0.0.1 --> >=0.0.1 <0.0.2-0\n// ^0.1.0 --> >=0.1.0 <0.2.0-0\nconst replaceCarets = (comp, options) => {\n return comp\n .trim()\n .split(/\\s+/)\n .map((c) => replaceCaret(c, options))\n .join(' ')\n}\n\nconst replaceCaret = (comp, options) => {\n debug('caret', comp, options)\n const r = options.loose ? re[t.CARETLOOSE] : re[t.CARET]\n const z = options.includePrerelease ? '-0' : ''\n return comp.replace(r, (_, M, m, p, pr) => {\n debug('caret', comp, _, M, m, p, pr)\n let ret\n\n if (isX(M)) {\n ret = ''\n } else if (isX(m)) {\n ret = `>=${M}.0.0${z} <${+M + 1}.0.0-0`\n } else if (isX(p)) {\n if (M === '0') {\n ret = `>=${M}.${m}.0${z} <${M}.${+m + 1}.0-0`\n } else {\n ret = `>=${M}.${m}.0${z} <${+M + 1}.0.0-0`\n }\n } else if (pr) {\n debug('replaceCaret pr', pr)\n if (M === '0') {\n if (m === '0') {\n ret = `>=${M}.${m}.${p}-${pr\n } <${M}.${m}.${+p + 1}-0`\n } else {\n ret = `>=${M}.${m}.${p}-${pr\n } <${M}.${+m + 1}.0-0`\n }\n } else {\n ret = `>=${M}.${m}.${p}-${pr\n } <${+M + 1}.0.0-0`\n }\n } else {\n debug('no pr')\n if (M === '0') {\n if (m === '0') {\n ret = `>=${M}.${m}.${p\n }${z} <${M}.${m}.${+p + 1}-0`\n } else {\n ret = `>=${M}.${m}.${p\n }${z} <${M}.${+m + 1}.0-0`\n }\n } else {\n ret = `>=${M}.${m}.${p\n } <${+M + 1}.0.0-0`\n }\n }\n\n debug('caret return', ret)\n return ret\n })\n}\n\nconst replaceXRanges = (comp, options) => {\n debug('replaceXRanges', comp, options)\n return comp\n .split(/\\s+/)\n .map((c) => replaceXRange(c, options))\n .join(' ')\n}\n\nconst replaceXRange = (comp, options) => {\n comp = comp.trim()\n const r = options.loose ? re[t.XRANGELOOSE] : re[t.XRANGE]\n return comp.replace(r, (ret, gtlt, M, m, p, pr) => {\n debug('xRange', comp, ret, gtlt, M, m, p, pr)\n const xM = isX(M)\n const xm = xM || isX(m)\n const xp = xm || isX(p)\n const anyX = xp\n\n if (gtlt === '=' && anyX) {\n gtlt = ''\n }\n\n // if we're including prereleases in the match, then we need\n // to fix this to -0, the lowest possible prerelease value\n pr = options.includePrerelease ? '-0' : ''\n\n if (xM) {\n if (gtlt === '>' || gtlt === '<') {\n // nothing is allowed\n ret = '<0.0.0-0'\n } else {\n // nothing is forbidden\n ret = '*'\n }\n } else if (gtlt && anyX) {\n // we know patch is an x, because we have any x at all.\n // replace X with 0\n if (xm) {\n m = 0\n }\n p = 0\n\n if (gtlt === '>') {\n // >1 => >=2.0.0\n // >1.2 => >=1.3.0\n gtlt = '>='\n if (xm) {\n M = +M + 1\n m = 0\n p = 0\n } else {\n m = +m + 1\n p = 0\n }\n } else if (gtlt === '<=') {\n // <=0.7.x is actually <0.8.0, since any 0.7.x should\n // pass. Similarly, <=7.x is actually <8.0.0, etc.\n gtlt = '<'\n if (xm) {\n M = +M + 1\n } else {\n m = +m + 1\n }\n }\n\n if (gtlt === '<') {\n pr = '-0'\n }\n\n ret = `${gtlt + M}.${m}.${p}${pr}`\n } else if (xm) {\n ret = `>=${M}.0.0${pr} <${+M + 1}.0.0-0`\n } else if (xp) {\n ret = `>=${M}.${m}.0${pr\n } <${M}.${+m + 1}.0-0`\n }\n\n debug('xRange return', ret)\n\n return ret\n })\n}\n\n// Because * is AND-ed with everything else in the comparator,\n// and '' means \"any version\", just remove the *s entirely.\nconst replaceStars = (comp, options) => {\n debug('replaceStars', comp, options)\n // Looseness is ignored here. star is always as loose as it gets!\n return comp\n .trim()\n .replace(re[t.STAR], '')\n}\n\nconst replaceGTE0 = (comp, options) => {\n debug('replaceGTE0', comp, options)\n return comp\n .trim()\n .replace(re[options.includePrerelease ? t.GTE0PRE : t.GTE0], '')\n}\n\n// This function is passed to string.replace(re[t.HYPHENRANGE])\n// M, m, patch, prerelease, build\n// 1.2 - 3.4.5 => >=1.2.0 <=3.4.5\n// 1.2.3 - 3.4 => >=1.2.0 <3.5.0-0 Any 3.4.x will do\n// 1.2 - 3.4 => >=1.2.0 <3.5.0-0\n// TODO build?\nconst hyphenReplace = incPr => ($0,\n from, fM, fm, fp, fpr, fb,\n to, tM, tm, tp, tpr) => {\n if (isX(fM)) {\n from = ''\n } else if (isX(fm)) {\n from = `>=${fM}.0.0${incPr ? '-0' : ''}`\n } else if (isX(fp)) {\n from = `>=${fM}.${fm}.0${incPr ? '-0' : ''}`\n } else if (fpr) {\n from = `>=${from}`\n } else {\n from = `>=${from}${incPr ? '-0' : ''}`\n }\n\n if (isX(tM)) {\n to = ''\n } else if (isX(tm)) {\n to = `<${+tM + 1}.0.0-0`\n } else if (isX(tp)) {\n to = `<${tM}.${+tm + 1}.0-0`\n } else if (tpr) {\n to = `<=${tM}.${tm}.${tp}-${tpr}`\n } else if (incPr) {\n to = `<${tM}.${tm}.${+tp + 1}-0`\n } else {\n to = `<=${to}`\n }\n\n return `${from} ${to}`.trim()\n}\n\nconst testSet = (set, version, options) => {\n for (let i = 0; i < set.length; i++) {\n if (!set[i].test(version)) {\n return false\n }\n }\n\n if (version.prerelease.length && !options.includePrerelease) {\n // Find the set of versions that are allowed to have prereleases\n // For example, ^1.2.3-pr.1 desugars to >=1.2.3-pr.1 <2.0.0\n // That should allow `1.2.3-pr.2` to pass.\n // However, `1.2.4-alpha.notready` should NOT be allowed,\n // even though it's within the range set by the comparators.\n for (let i = 0; i < set.length; i++) {\n debug(set[i].semver)\n if (set[i].semver === Comparator.ANY) {\n continue\n }\n\n if (set[i].semver.prerelease.length > 0) {\n const allowed = set[i].semver\n if (allowed.major === version.major &&\n allowed.minor === version.minor &&\n allowed.patch === version.patch) {\n return true\n }\n }\n }\n\n // Version has a -pre, but it's not one of the ones we like.\n return false\n }\n\n return true\n}\n","'use strict'\n\nconst ANY = Symbol('SemVer ANY')\n// hoisted class for cyclic dependency\nclass Comparator {\n static get ANY () {\n return ANY\n }\n\n constructor (comp, options) {\n options = parseOptions(options)\n\n if (comp instanceof Comparator) {\n if (comp.loose === !!options.loose) {\n return comp\n } else {\n comp = comp.value\n }\n }\n\n comp = comp.trim().split(/\\s+/).join(' ')\n debug('comparator', comp, options)\n this.options = options\n this.loose = !!options.loose\n this.parse(comp)\n\n if (this.semver === ANY) {\n this.value = ''\n } else {\n this.value = this.operator + this.semver.version\n }\n\n debug('comp', this)\n }\n\n parse (comp) {\n const r = this.options.loose ? re[t.COMPARATORLOOSE] : re[t.COMPARATOR]\n const m = comp.match(r)\n\n if (!m) {\n throw new TypeError(`Invalid comparator: ${comp}`)\n }\n\n this.operator = m[1] !== undefined ? m[1] : ''\n if (this.operator === '=') {\n this.operator = ''\n }\n\n // if it literally is just '>' or '' then allow anything.\n if (!m[2]) {\n this.semver = ANY\n } else {\n this.semver = new SemVer(m[2], this.options.loose)\n }\n }\n\n toString () {\n return this.value\n }\n\n test (version) {\n debug('Comparator.test', version, this.options.loose)\n\n if (this.semver === ANY || version === ANY) {\n return true\n }\n\n if (typeof version === 'string') {\n try {\n version = new SemVer(version, this.options)\n } catch (er) {\n return false\n }\n }\n\n return cmp(version, this.operator, this.semver, this.options)\n }\n\n intersects (comp, options) {\n if (!(comp instanceof Comparator)) {\n throw new TypeError('a Comparator is required')\n }\n\n if (this.operator === '') {\n if (this.value === '') {\n return true\n }\n return new Range(comp.value, options).test(this.value)\n } else if (comp.operator === '') {\n if (comp.value === '') {\n return true\n }\n return new Range(this.value, options).test(comp.semver)\n }\n\n options = parseOptions(options)\n\n // Special cases where nothing can possibly be lower\n if (options.includePrerelease &&\n (this.value === '<0.0.0-0' || comp.value === '<0.0.0-0')) {\n return false\n }\n if (!options.includePrerelease &&\n (this.value.startsWith('<0.0.0') || comp.value.startsWith('<0.0.0'))) {\n return false\n }\n\n // Same direction increasing (> or >=)\n if (this.operator.startsWith('>') && comp.operator.startsWith('>')) {\n return true\n }\n // Same direction decreasing (< or <=)\n if (this.operator.startsWith('<') && comp.operator.startsWith('<')) {\n return true\n }\n // same SemVer and both sides are inclusive (<= or >=)\n if (\n (this.semver.version === comp.semver.version) &&\n this.operator.includes('=') && comp.operator.includes('=')) {\n return true\n }\n // opposite directions less than\n if (cmp(this.semver, '<', comp.semver, options) &&\n this.operator.startsWith('>') && comp.operator.startsWith('<')) {\n return true\n }\n // opposite directions greater than\n if (cmp(this.semver, '>', comp.semver, options) &&\n this.operator.startsWith('<') && comp.operator.startsWith('>')) {\n return true\n }\n return false\n }\n}\n\nmodule.exports = Comparator\n\nconst parseOptions = require('../internal/parse-options')\nconst { safeRe: re, t } = require('../internal/re')\nconst cmp = require('../functions/cmp')\nconst debug = require('../internal/debug')\nconst SemVer = require('./semver')\nconst Range = require('./range')\n","'use strict'\n\nconst Range = require('../classes/range')\nconst satisfies = (version, range, options) => {\n try {\n range = new Range(range, options)\n } catch (er) {\n return false\n }\n return range.test(version)\n}\nmodule.exports = satisfies\n","'use strict'\n\nconst Range = require('../classes/range')\n\n// Mostly just for testing and legacy API reasons\nconst toComparators = (range, options) =>\n new Range(range, options).set\n .map(comp => comp.map(c => c.value).join(' ').trim().split(' '))\n\nmodule.exports = toComparators\n","'use strict'\n\nconst SemVer = require('../classes/semver')\nconst Range = require('../classes/range')\n\nconst maxSatisfying = (versions, range, options) => {\n let max = null\n let maxSV = null\n let rangeObj = null\n try {\n rangeObj = new Range(range, options)\n } catch (er) {\n return null\n }\n versions.forEach((v) => {\n if (rangeObj.test(v)) {\n // satisfies(v, range, options)\n if (!max || maxSV.compare(v) === -1) {\n // compare(max, v, true)\n max = v\n maxSV = new SemVer(max, options)\n }\n }\n })\n return max\n}\nmodule.exports = maxSatisfying\n","'use strict'\n\nconst SemVer = require('../classes/semver')\nconst Range = require('../classes/range')\nconst minSatisfying = (versions, range, options) => {\n let min = null\n let minSV = null\n let rangeObj = null\n try {\n rangeObj = new Range(range, options)\n } catch (er) {\n return null\n }\n versions.forEach((v) => {\n if (rangeObj.test(v)) {\n // satisfies(v, range, options)\n if (!min || minSV.compare(v) === 1) {\n // compare(min, v, true)\n min = v\n minSV = new SemVer(min, options)\n }\n }\n })\n return min\n}\nmodule.exports = minSatisfying\n","'use strict'\n\nconst SemVer = require('../classes/semver')\nconst Range = require('../classes/range')\nconst gt = require('../functions/gt')\n\nconst minVersion = (range, loose) => {\n range = new Range(range, loose)\n\n let minver = new SemVer('0.0.0')\n if (range.test(minver)) {\n return minver\n }\n\n minver = new SemVer('0.0.0-0')\n if (range.test(minver)) {\n return minver\n }\n\n minver = null\n for (let i = 0; i < range.set.length; ++i) {\n const comparators = range.set[i]\n\n let setMin = null\n comparators.forEach((comparator) => {\n // Clone to avoid manipulating the comparator's semver object.\n const compver = new SemVer(comparator.semver.version)\n switch (comparator.operator) {\n case '>':\n if (compver.prerelease.length === 0) {\n compver.patch++\n } else {\n compver.prerelease.push(0)\n }\n compver.raw = compver.format()\n /* fallthrough */\n case '':\n case '>=':\n if (!setMin || gt(compver, setMin)) {\n setMin = compver\n }\n break\n case '<':\n case '<=':\n /* Ignore maximum versions */\n break\n /* istanbul ignore next */\n default:\n throw new Error(`Unexpected operation: ${comparator.operator}`)\n }\n })\n if (setMin && (!minver || gt(minver, setMin))) {\n minver = setMin\n }\n }\n\n if (minver && range.test(minver)) {\n return minver\n }\n\n return null\n}\nmodule.exports = minVersion\n","'use strict'\n\nconst Range = require('../classes/range')\nconst validRange = (range, options) => {\n try {\n // Return '*' instead of '' so that truthiness works.\n // This will throw if it's invalid anyway\n return new Range(range, options).range || '*'\n } catch (er) {\n return null\n }\n}\nmodule.exports = validRange\n","'use strict'\n\nconst SemVer = require('../classes/semver')\nconst Comparator = require('../classes/comparator')\nconst { ANY } = Comparator\nconst Range = require('../classes/range')\nconst satisfies = require('../functions/satisfies')\nconst gt = require('../functions/gt')\nconst lt = require('../functions/lt')\nconst lte = require('../functions/lte')\nconst gte = require('../functions/gte')\n\nconst outside = (version, range, hilo, options) => {\n version = new SemVer(version, options)\n range = new Range(range, options)\n\n let gtfn, ltefn, ltfn, comp, ecomp\n switch (hilo) {\n case '>':\n gtfn = gt\n ltefn = lte\n ltfn = lt\n comp = '>'\n ecomp = '>='\n break\n case '<':\n gtfn = lt\n ltefn = gte\n ltfn = gt\n comp = '<'\n ecomp = '<='\n break\n default:\n throw new TypeError('Must provide a hilo val of \"<\" or \">\"')\n }\n\n // If it satisfies the range it is not outside\n if (satisfies(version, range, options)) {\n return false\n }\n\n // From now on, variable terms are as if we're in \"gtr\" mode.\n // but note that everything is flipped for the \"ltr\" function.\n\n for (let i = 0; i < range.set.length; ++i) {\n const comparators = range.set[i]\n\n let high = null\n let low = null\n\n comparators.forEach((comparator) => {\n if (comparator.semver === ANY) {\n comparator = new Comparator('>=0.0.0')\n }\n high = high || comparator\n low = low || comparator\n if (gtfn(comparator.semver, high.semver, options)) {\n high = comparator\n } else if (ltfn(comparator.semver, low.semver, options)) {\n low = comparator\n }\n })\n\n // If the edge version comparator has a operator then our version\n // isn't outside it\n if (high.operator === comp || high.operator === ecomp) {\n return false\n }\n\n // If the lowest version comparator has an operator and our version\n // is less than it then it isn't higher than the range\n if ((!low.operator || low.operator === comp) &&\n ltefn(version, low.semver)) {\n return false\n } else if (low.operator === ecomp && ltfn(version, low.semver)) {\n return false\n }\n }\n return true\n}\n\nmodule.exports = outside\n","'use strict'\n\n// Determine if version is greater than all the versions possible in the range.\nconst outside = require('./outside')\nconst gtr = (version, range, options) => outside(version, range, '>', options)\nmodule.exports = gtr\n","'use strict'\n\nconst outside = require('./outside')\n// Determine if version is less than all the versions possible in the range\nconst ltr = (version, range, options) => outside(version, range, '<', options)\nmodule.exports = ltr\n","'use strict'\n\nconst Range = require('../classes/range')\nconst intersects = (r1, r2, options) => {\n r1 = new Range(r1, options)\n r2 = new Range(r2, options)\n return r1.intersects(r2, options)\n}\nmodule.exports = intersects\n","'use strict'\n\n// given a set of versions and a range, create a \"simplified\" range\n// that includes the same versions that the original range does\n// If the original range is shorter than the simplified one, return that.\nconst satisfies = require('../functions/satisfies.js')\nconst compare = require('../functions/compare.js')\nmodule.exports = (versions, range, options) => {\n const set = []\n let first = null\n let prev = null\n const v = versions.sort((a, b) => compare(a, b, options))\n for (const version of v) {\n const included = satisfies(version, range, options)\n if (included) {\n prev = version\n if (!first) {\n first = version\n }\n } else {\n if (prev) {\n set.push([first, prev])\n }\n prev = null\n first = null\n }\n }\n if (first) {\n set.push([first, null])\n }\n\n const ranges = []\n for (const [min, max] of set) {\n if (min === max) {\n ranges.push(min)\n } else if (!max && min === v[0]) {\n ranges.push('*')\n } else if (!max) {\n ranges.push(`>=${min}`)\n } else if (min === v[0]) {\n ranges.push(`<=${max}`)\n } else {\n ranges.push(`${min} - ${max}`)\n }\n }\n const simplified = ranges.join(' || ')\n const original = typeof range.raw === 'string' ? range.raw : String(range)\n return simplified.length < original.length ? simplified : range\n}\n","'use strict'\n\nconst Range = require('../classes/range.js')\nconst Comparator = require('../classes/comparator.js')\nconst { ANY } = Comparator\nconst satisfies = require('../functions/satisfies.js')\nconst compare = require('../functions/compare.js')\n\n// Complex range `r1 || r2 || ...` is a subset of `R1 || R2 || ...` iff:\n// - Every simple range `r1, r2, ...` is a null set, OR\n// - Every simple range `r1, r2, ...` which is not a null set is a subset of\n// some `R1, R2, ...`\n//\n// Simple range `c1 c2 ...` is a subset of simple range `C1 C2 ...` iff:\n// - If c is only the ANY comparator\n// - If C is only the ANY comparator, return true\n// - Else if in prerelease mode, return false\n// - else replace c with `[>=0.0.0]`\n// - If C is only the ANY comparator\n// - if in prerelease mode, return true\n// - else replace C with `[>=0.0.0]`\n// - Let EQ be the set of = comparators in c\n// - If EQ is more than one, return true (null set)\n// - Let GT be the highest > or >= comparator in c\n// - Let LT be the lowest < or <= comparator in c\n// - If GT and LT, and GT.semver > LT.semver, return true (null set)\n// - If any C is a = range, and GT or LT are set, return false\n// - If EQ\n// - If GT, and EQ does not satisfy GT, return true (null set)\n// - If LT, and EQ does not satisfy LT, return true (null set)\n// - If EQ satisfies every C, return true\n// - Else return false\n// - If GT\n// - If GT.semver is lower than any > or >= comp in C, return false\n// - If GT is >=, and GT.semver does not satisfy every C, return false\n// - If GT.semver has a prerelease, and not in prerelease mode\n// - If no C has a prerelease and the GT.semver tuple, return false\n// - If LT\n// - If LT.semver is greater than any < or <= comp in C, return false\n// - If LT is <=, and LT.semver does not satisfy every C, return false\n// - If GT.semver has a prerelease, and not in prerelease mode\n// - If no C has a prerelease and the LT.semver tuple, return false\n// - Else return true\n\nconst subset = (sub, dom, options = {}) => {\n if (sub === dom) {\n return true\n }\n\n sub = new Range(sub, options)\n dom = new Range(dom, options)\n let sawNonNull = false\n\n OUTER: for (const simpleSub of sub.set) {\n for (const simpleDom of dom.set) {\n const isSub = simpleSubset(simpleSub, simpleDom, options)\n sawNonNull = sawNonNull || isSub !== null\n if (isSub) {\n continue OUTER\n }\n }\n // the null set is a subset of everything, but null simple ranges in\n // a complex range should be ignored. so if we saw a non-null range,\n // then we know this isn't a subset, but if EVERY simple range was null,\n // then it is a subset.\n if (sawNonNull) {\n return false\n }\n }\n return true\n}\n\nconst minimumVersionWithPreRelease = [new Comparator('>=0.0.0-0')]\nconst minimumVersion = [new Comparator('>=0.0.0')]\n\nconst simpleSubset = (sub, dom, options) => {\n if (sub === dom) {\n return true\n }\n\n if (sub.length === 1 && sub[0].semver === ANY) {\n if (dom.length === 1 && dom[0].semver === ANY) {\n return true\n } else if (options.includePrerelease) {\n sub = minimumVersionWithPreRelease\n } else {\n sub = minimumVersion\n }\n }\n\n if (dom.length === 1 && dom[0].semver === ANY) {\n if (options.includePrerelease) {\n return true\n } else {\n dom = minimumVersion\n }\n }\n\n const eqSet = new Set()\n let gt, lt\n for (const c of sub) {\n if (c.operator === '>' || c.operator === '>=') {\n gt = higherGT(gt, c, options)\n } else if (c.operator === '<' || c.operator === '<=') {\n lt = lowerLT(lt, c, options)\n } else {\n eqSet.add(c.semver)\n }\n }\n\n if (eqSet.size > 1) {\n return null\n }\n\n let gtltComp\n if (gt && lt) {\n gtltComp = compare(gt.semver, lt.semver, options)\n if (gtltComp > 0) {\n return null\n } else if (gtltComp === 0 && (gt.operator !== '>=' || lt.operator !== '<=')) {\n return null\n }\n }\n\n // will iterate one or zero times\n for (const eq of eqSet) {\n if (gt && !satisfies(eq, String(gt), options)) {\n return null\n }\n\n if (lt && !satisfies(eq, String(lt), options)) {\n return null\n }\n\n for (const c of dom) {\n if (!satisfies(eq, String(c), options)) {\n return false\n }\n }\n\n return true\n }\n\n let higher, lower\n let hasDomLT, hasDomGT\n // if the subset has a prerelease, we need a comparator in the superset\n // with the same tuple and a prerelease, or it's not a subset\n let needDomLTPre = lt &&\n !options.includePrerelease &&\n lt.semver.prerelease.length ? lt.semver : false\n let needDomGTPre = gt &&\n !options.includePrerelease &&\n gt.semver.prerelease.length ? gt.semver : false\n // exception: <1.2.3-0 is the same as <1.2.3\n if (needDomLTPre && needDomLTPre.prerelease.length === 1 &&\n lt.operator === '<' && needDomLTPre.prerelease[0] === 0) {\n needDomLTPre = false\n }\n\n for (const c of dom) {\n hasDomGT = hasDomGT || c.operator === '>' || c.operator === '>='\n hasDomLT = hasDomLT || c.operator === '<' || c.operator === '<='\n if (gt) {\n if (needDomGTPre) {\n if (c.semver.prerelease && c.semver.prerelease.length &&\n c.semver.major === needDomGTPre.major &&\n c.semver.minor === needDomGTPre.minor &&\n c.semver.patch === needDomGTPre.patch) {\n needDomGTPre = false\n }\n }\n if (c.operator === '>' || c.operator === '>=') {\n higher = higherGT(gt, c, options)\n if (higher === c && higher !== gt) {\n return false\n }\n } else if (gt.operator === '>=' && !satisfies(gt.semver, String(c), options)) {\n return false\n }\n }\n if (lt) {\n if (needDomLTPre) {\n if (c.semver.prerelease && c.semver.prerelease.length &&\n c.semver.major === needDomLTPre.major &&\n c.semver.minor === needDomLTPre.minor &&\n c.semver.patch === needDomLTPre.patch) {\n needDomLTPre = false\n }\n }\n if (c.operator === '<' || c.operator === '<=') {\n lower = lowerLT(lt, c, options)\n if (lower === c && lower !== lt) {\n return false\n }\n } else if (lt.operator === '<=' && !satisfies(lt.semver, String(c), options)) {\n return false\n }\n }\n if (!c.operator && (lt || gt) && gtltComp !== 0) {\n return false\n }\n }\n\n // if there was a < or >, and nothing in the dom, then must be false\n // UNLESS it was limited by another range in the other direction.\n // Eg, >1.0.0 <1.0.1 is still a subset of <2.0.0\n if (gt && hasDomLT && !lt && gtltComp !== 0) {\n return false\n }\n\n if (lt && hasDomGT && !gt && gtltComp !== 0) {\n return false\n }\n\n // we needed a prerelease range in a specific tuple, but didn't get one\n // then this isn't a subset. eg >=1.2.3-pre is not a subset of >=1.0.0,\n // because it includes prereleases in the 1.2.3 tuple\n if (needDomGTPre || needDomLTPre) {\n return false\n }\n\n return true\n}\n\n// >=1.2.3 is lower than >1.2.3\nconst higherGT = (a, b, options) => {\n if (!a) {\n return b\n }\n const comp = compare(a.semver, b.semver, options)\n return comp > 0 ? a\n : comp < 0 ? b\n : b.operator === '>' && a.operator === '>=' ? b\n : a\n}\n\n// <=1.2.3 is higher than <1.2.3\nconst lowerLT = (a, b, options) => {\n if (!a) {\n return b\n }\n const comp = compare(a.semver, b.semver, options)\n return comp < 0 ? a\n : comp > 0 ? b\n : b.operator === '<' && a.operator === '<=' ? b\n : a\n}\n\nmodule.exports = subset\n","'use strict'\n\n// just pre-load all the stuff that index.js lazily exports\nconst internalRe = require('./internal/re')\nconst constants = require('./internal/constants')\nconst SemVer = require('./classes/semver')\nconst identifiers = require('./internal/identifiers')\nconst parse = require('./functions/parse')\nconst valid = require('./functions/valid')\nconst clean = require('./functions/clean')\nconst inc = require('./functions/inc')\nconst diff = require('./functions/diff')\nconst major = require('./functions/major')\nconst minor = require('./functions/minor')\nconst patch = require('./functions/patch')\nconst prerelease = require('./functions/prerelease')\nconst compare = require('./functions/compare')\nconst rcompare = require('./functions/rcompare')\nconst compareLoose = require('./functions/compare-loose')\nconst compareBuild = require('./functions/compare-build')\nconst sort = require('./functions/sort')\nconst rsort = require('./functions/rsort')\nconst gt = require('./functions/gt')\nconst lt = require('./functions/lt')\nconst eq = require('./functions/eq')\nconst neq = require('./functions/neq')\nconst gte = require('./functions/gte')\nconst lte = require('./functions/lte')\nconst cmp = require('./functions/cmp')\nconst coerce = require('./functions/coerce')\nconst Comparator = require('./classes/comparator')\nconst Range = require('./classes/range')\nconst satisfies = require('./functions/satisfies')\nconst toComparators = require('./ranges/to-comparators')\nconst maxSatisfying = require('./ranges/max-satisfying')\nconst minSatisfying = require('./ranges/min-satisfying')\nconst minVersion = require('./ranges/min-version')\nconst validRange = require('./ranges/valid')\nconst outside = require('./ranges/outside')\nconst gtr = require('./ranges/gtr')\nconst ltr = require('./ranges/ltr')\nconst intersects = require('./ranges/intersects')\nconst simplifyRange = require('./ranges/simplify')\nconst subset = require('./ranges/subset')\nmodule.exports = {\n parse,\n valid,\n clean,\n inc,\n diff,\n major,\n minor,\n patch,\n prerelease,\n compare,\n rcompare,\n compareLoose,\n compareBuild,\n sort,\n rsort,\n gt,\n lt,\n eq,\n neq,\n gte,\n lte,\n cmp,\n coerce,\n Comparator,\n Range,\n satisfies,\n toComparators,\n maxSatisfying,\n minSatisfying,\n minVersion,\n validRange,\n outside,\n gtr,\n ltr,\n intersects,\n simplifyRange,\n subset,\n SemVer,\n re: internalRe.re,\n src: internalRe.src,\n tokens: internalRe.t,\n SEMVER_SPEC_VERSION: constants.SEMVER_SPEC_VERSION,\n RELEASE_TYPES: constants.RELEASE_TYPES,\n compareIdentifiers: identifiers.compareIdentifiers,\n rcompareIdentifiers: identifiers.rcompareIdentifiers,\n}\n","const semver = require('semver');\n\nmodule.exports = semver.satisfies(process.version, '>=15.7.0');\n","const semver = require('semver');\n\nmodule.exports = semver.satisfies(process.version, '>=16.9.0');\n","const ASYMMETRIC_KEY_DETAILS_SUPPORTED = require('./asymmetricKeyDetailsSupported');\nconst RSA_PSS_KEY_DETAILS_SUPPORTED = require('./rsaPssKeyDetailsSupported');\n\nconst allowedAlgorithmsForKeys = {\n 'ec': ['ES256', 'ES384', 'ES512'],\n 'rsa': ['RS256', 'PS256', 'RS384', 'PS384', 'RS512', 'PS512'],\n 'rsa-pss': ['PS256', 'PS384', 'PS512']\n};\n\nconst allowedCurves = {\n ES256: 'prime256v1',\n ES384: 'secp384r1',\n ES512: 'secp521r1',\n};\n\nmodule.exports = function(algorithm, key) {\n if (!algorithm || !key) return;\n\n const keyType = key.asymmetricKeyType;\n if (!keyType) return;\n\n const allowedAlgorithms = allowedAlgorithmsForKeys[keyType];\n\n if (!allowedAlgorithms) {\n throw new Error(`Unknown key type \"${keyType}\".`);\n }\n\n if (!allowedAlgorithms.includes(algorithm)) {\n throw new Error(`\"alg\" parameter for \"${keyType}\" key type must be one of: ${allowedAlgorithms.join(', ')}.`)\n }\n\n /*\n * Ignore the next block from test coverage because it gets executed\n * conditionally depending on the Node version. Not ignoring it would\n * prevent us from reaching the target % of coverage for versions of\n * Node under 15.7.0.\n */\n /* istanbul ignore next */\n if (ASYMMETRIC_KEY_DETAILS_SUPPORTED) {\n switch (keyType) {\n case 'ec':\n const keyCurve = key.asymmetricKeyDetails.namedCurve;\n const allowedCurve = allowedCurves[algorithm];\n\n if (keyCurve !== allowedCurve) {\n throw new Error(`\"alg\" parameter \"${algorithm}\" requires curve \"${allowedCurve}\".`);\n }\n break;\n\n case 'rsa-pss':\n if (RSA_PSS_KEY_DETAILS_SUPPORTED) {\n const length = parseInt(algorithm.slice(-3), 10);\n const { hashAlgorithm, mgf1HashAlgorithm, saltLength } = key.asymmetricKeyDetails;\n\n if (hashAlgorithm !== `sha${length}` || mgf1HashAlgorithm !== hashAlgorithm) {\n throw new Error(`Invalid key for this operation, its RSA-PSS parameters do not meet the requirements of \"alg\" ${algorithm}.`);\n }\n\n if (saltLength !== undefined && saltLength > length >> 3) {\n throw new Error(`Invalid key for this operation, its RSA-PSS parameter saltLength does not meet the requirements of \"alg\" ${algorithm}.`)\n }\n }\n break;\n }\n }\n}\n","var semver = require('semver');\n\nmodule.exports = semver.satisfies(process.version, '^6.12.0 || >=8.0.0');\n","const JsonWebTokenError = require('./lib/JsonWebTokenError');\nconst NotBeforeError = require('./lib/NotBeforeError');\nconst TokenExpiredError = require('./lib/TokenExpiredError');\nconst decode = require('./decode');\nconst timespan = require('./lib/timespan');\nconst validateAsymmetricKey = require('./lib/validateAsymmetricKey');\nconst PS_SUPPORTED = require('./lib/psSupported');\nconst jws = require('jws');\nconst {KeyObject, createSecretKey, createPublicKey} = require(\"crypto\");\n\nconst PUB_KEY_ALGS = ['RS256', 'RS384', 'RS512'];\nconst EC_KEY_ALGS = ['ES256', 'ES384', 'ES512'];\nconst RSA_KEY_ALGS = ['RS256', 'RS384', 'RS512'];\nconst HS_ALGS = ['HS256', 'HS384', 'HS512'];\n\nif (PS_SUPPORTED) {\n PUB_KEY_ALGS.splice(PUB_KEY_ALGS.length, 0, 'PS256', 'PS384', 'PS512');\n RSA_KEY_ALGS.splice(RSA_KEY_ALGS.length, 0, 'PS256', 'PS384', 'PS512');\n}\n\nmodule.exports = function (jwtString, secretOrPublicKey, options, callback) {\n if ((typeof options === 'function') && !callback) {\n callback = options;\n options = {};\n }\n\n if (!options) {\n options = {};\n }\n\n //clone this object since we are going to mutate it.\n options = Object.assign({}, options);\n\n let done;\n\n if (callback) {\n done = callback;\n } else {\n done = function(err, data) {\n if (err) throw err;\n return data;\n };\n }\n\n if (options.clockTimestamp && typeof options.clockTimestamp !== 'number') {\n return done(new JsonWebTokenError('clockTimestamp must be a number'));\n }\n\n if (options.nonce !== undefined && (typeof options.nonce !== 'string' || options.nonce.trim() === '')) {\n return done(new JsonWebTokenError('nonce must be a non-empty string'));\n }\n\n if (options.allowInvalidAsymmetricKeyTypes !== undefined && typeof options.allowInvalidAsymmetricKeyTypes !== 'boolean') {\n return done(new JsonWebTokenError('allowInvalidAsymmetricKeyTypes must be a boolean'));\n }\n\n const clockTimestamp = options.clockTimestamp || Math.floor(Date.now() / 1000);\n\n if (!jwtString){\n return done(new JsonWebTokenError('jwt must be provided'));\n }\n\n if (typeof jwtString !== 'string') {\n return done(new JsonWebTokenError('jwt must be a string'));\n }\n\n const parts = jwtString.split('.');\n\n if (parts.length !== 3){\n return done(new JsonWebTokenError('jwt malformed'));\n }\n\n let decodedToken;\n\n try {\n decodedToken = decode(jwtString, { complete: true });\n } catch(err) {\n return done(err);\n }\n\n if (!decodedToken) {\n return done(new JsonWebTokenError('invalid token'));\n }\n\n const header = decodedToken.header;\n let getSecret;\n\n if(typeof secretOrPublicKey === 'function') {\n if(!callback) {\n return done(new JsonWebTokenError('verify must be called asynchronous if secret or public key is provided as a callback'));\n }\n\n getSecret = secretOrPublicKey;\n }\n else {\n getSecret = function(header, secretCallback) {\n return secretCallback(null, secretOrPublicKey);\n };\n }\n\n return getSecret(header, function(err, secretOrPublicKey) {\n if(err) {\n return done(new JsonWebTokenError('error in secret or public key callback: ' + err.message));\n }\n\n const hasSignature = parts[2].trim() !== '';\n\n if (!hasSignature && secretOrPublicKey){\n return done(new JsonWebTokenError('jwt signature is required'));\n }\n\n if (hasSignature && !secretOrPublicKey) {\n return done(new JsonWebTokenError('secret or public key must be provided'));\n }\n\n if (!hasSignature && !options.algorithms) {\n return done(new JsonWebTokenError('please specify \"none\" in \"algorithms\" to verify unsigned tokens'));\n }\n\n if (secretOrPublicKey != null && !(secretOrPublicKey instanceof KeyObject)) {\n try {\n secretOrPublicKey = createPublicKey(secretOrPublicKey);\n } catch (_) {\n try {\n secretOrPublicKey = createSecretKey(typeof secretOrPublicKey === 'string' ? Buffer.from(secretOrPublicKey) : secretOrPublicKey);\n } catch (_) {\n return done(new JsonWebTokenError('secretOrPublicKey is not valid key material'))\n }\n }\n }\n\n if (!options.algorithms) {\n if (secretOrPublicKey.type === 'secret') {\n options.algorithms = HS_ALGS;\n } else if (['rsa', 'rsa-pss'].includes(secretOrPublicKey.asymmetricKeyType)) {\n options.algorithms = RSA_KEY_ALGS\n } else if (secretOrPublicKey.asymmetricKeyType === 'ec') {\n options.algorithms = EC_KEY_ALGS\n } else {\n options.algorithms = PUB_KEY_ALGS\n }\n }\n\n if (options.algorithms.indexOf(decodedToken.header.alg) === -1) {\n return done(new JsonWebTokenError('invalid algorithm'));\n }\n\n if (header.alg.startsWith('HS') && secretOrPublicKey.type !== 'secret') {\n return done(new JsonWebTokenError((`secretOrPublicKey must be a symmetric key when using ${header.alg}`)))\n } else if (/^(?:RS|PS|ES)/.test(header.alg) && secretOrPublicKey.type !== 'public') {\n return done(new JsonWebTokenError((`secretOrPublicKey must be an asymmetric key when using ${header.alg}`)))\n }\n\n if (!options.allowInvalidAsymmetricKeyTypes) {\n try {\n validateAsymmetricKey(header.alg, secretOrPublicKey);\n } catch (e) {\n return done(e);\n }\n }\n\n let valid;\n\n try {\n valid = jws.verify(jwtString, decodedToken.header.alg, secretOrPublicKey);\n } catch (e) {\n return done(e);\n }\n\n if (!valid) {\n return done(new JsonWebTokenError('invalid signature'));\n }\n\n const payload = decodedToken.payload;\n\n if (typeof payload.nbf !== 'undefined' && !options.ignoreNotBefore) {\n if (typeof payload.nbf !== 'number') {\n return done(new JsonWebTokenError('invalid nbf value'));\n }\n if (payload.nbf > clockTimestamp + (options.clockTolerance || 0)) {\n return done(new NotBeforeError('jwt not active', new Date(payload.nbf * 1000)));\n }\n }\n\n if (typeof payload.exp !== 'undefined' && !options.ignoreExpiration) {\n if (typeof payload.exp !== 'number') {\n return done(new JsonWebTokenError('invalid exp value'));\n }\n if (clockTimestamp >= payload.exp + (options.clockTolerance || 0)) {\n return done(new TokenExpiredError('jwt expired', new Date(payload.exp * 1000)));\n }\n }\n\n if (options.audience) {\n const audiences = Array.isArray(options.audience) ? options.audience : [options.audience];\n const target = Array.isArray(payload.aud) ? payload.aud : [payload.aud];\n\n const match = target.some(function (targetAudience) {\n return audiences.some(function (audience) {\n return audience instanceof RegExp ? audience.test(targetAudience) : audience === targetAudience;\n });\n });\n\n if (!match) {\n return done(new JsonWebTokenError('jwt audience invalid. expected: ' + audiences.join(' or ')));\n }\n }\n\n if (options.issuer) {\n const invalid_issuer =\n (typeof options.issuer === 'string' && payload.iss !== options.issuer) ||\n (Array.isArray(options.issuer) && options.issuer.indexOf(payload.iss) === -1);\n\n if (invalid_issuer) {\n return done(new JsonWebTokenError('jwt issuer invalid. expected: ' + options.issuer));\n }\n }\n\n if (options.subject) {\n if (payload.sub !== options.subject) {\n return done(new JsonWebTokenError('jwt subject invalid. expected: ' + options.subject));\n }\n }\n\n if (options.jwtid) {\n if (payload.jti !== options.jwtid) {\n return done(new JsonWebTokenError('jwt jwtid invalid. expected: ' + options.jwtid));\n }\n }\n\n if (options.nonce) {\n if (payload.nonce !== options.nonce) {\n return done(new JsonWebTokenError('jwt nonce invalid. expected: ' + options.nonce));\n }\n }\n\n if (options.maxAge) {\n if (typeof payload.iat !== 'number') {\n return done(new JsonWebTokenError('iat required when maxAge is specified'));\n }\n\n const maxAgeTimestamp = timespan(options.maxAge, payload.iat);\n if (typeof maxAgeTimestamp === 'undefined') {\n return done(new JsonWebTokenError('\"maxAge\" should be a number of seconds or string representing a timespan eg: \"1d\", \"20h\", 60'));\n }\n if (clockTimestamp >= maxAgeTimestamp + (options.clockTolerance || 0)) {\n return done(new TokenExpiredError('maxAge exceeded', new Date(maxAgeTimestamp * 1000)));\n }\n }\n\n if (options.complete === true) {\n const signature = decodedToken.signature;\n\n return done(null, {\n header: header,\n payload: payload,\n signature: signature\n });\n }\n\n return done(null, payload);\n });\n};\n","/**\n * lodash (Custom Build) \n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors \n * Released under MIT license \n * Based on Underscore.js 1.8.3 \n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0,\n MAX_SAFE_INTEGER = 9007199254740991,\n MAX_INTEGER = 1.7976931348623157e+308,\n NAN = 0 / 0;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]';\n\n/** Used to match leading and trailing whitespace. */\nvar reTrim = /^\\s+|\\s+$/g;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\n/**\n * A specialized version of `_.map` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction arrayMap(array, iteratee) {\n var index = -1,\n length = array ? array.length : 0,\n result = Array(length);\n\n while (++index < length) {\n result[index] = iteratee(array[index], index, array);\n }\n return result;\n}\n\n/**\n * The base implementation of `_.findIndex` and `_.findLastIndex` without\n * support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} predicate The function invoked per iteration.\n * @param {number} fromIndex The index to search from.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction baseFindIndex(array, predicate, fromIndex, fromRight) {\n var length = array.length,\n index = fromIndex + (fromRight ? 1 : -1);\n\n while ((fromRight ? index-- : ++index < length)) {\n if (predicate(array[index], index, array)) {\n return index;\n }\n }\n return -1;\n}\n\n/**\n * The base implementation of `_.indexOf` without `fromIndex` bounds checks.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction baseIndexOf(array, value, fromIndex) {\n if (value !== value) {\n return baseFindIndex(array, baseIsNaN, fromIndex);\n }\n var index = fromIndex - 1,\n length = array.length;\n\n while (++index < length) {\n if (array[index] === value) {\n return index;\n }\n }\n return -1;\n}\n\n/**\n * The base implementation of `_.isNaN` without support for number objects.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.\n */\nfunction baseIsNaN(value) {\n return value !== value;\n}\n\n/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n}\n\n/**\n * The base implementation of `_.values` and `_.valuesIn` which creates an\n * array of `object` property values corresponding to the property names\n * of `props`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array} props The property names to get values for.\n * @returns {Object} Returns the array of property values.\n */\nfunction baseValues(object, props) {\n return arrayMap(props, function(key) {\n return object[key];\n });\n}\n\n/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n}\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeKeys = overArg(Object.keys, Object),\n nativeMax = Math.max;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n // Safari 8.1 makes `arguments.callee` enumerable in strict mode.\n // Safari 9 makes `arguments.length` enumerable in strict mode.\n var result = (isArray(value) || isArguments(value))\n ? baseTimes(value.length, String)\n : [];\n\n var length = result.length,\n skipIndexes = !!length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (key == 'length' || isIndex(key, length)))) {\n result.push(key);\n }\n }\n return result;\n}\n\n/**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeys(object) {\n if (!isPrototype(object)) {\n return nativeKeys(object);\n }\n var result = [];\n for (var key in Object(object)) {\n if (hasOwnProperty.call(object, key) && key != 'constructor') {\n result.push(key);\n }\n }\n return result;\n}\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n length = length == null ? MAX_SAFE_INTEGER : length;\n return !!length &&\n (typeof value == 'number' || reIsUint.test(value)) &&\n (value > -1 && value % 1 == 0 && value < length);\n}\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n}\n\n/**\n * Checks if `value` is in `collection`. If `collection` is a string, it's\n * checked for a substring of `value`, otherwise\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * is used for equality comparisons. If `fromIndex` is negative, it's used as\n * the offset from the end of `collection`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object|string} collection The collection to inspect.\n * @param {*} value The value to search for.\n * @param {number} [fromIndex=0] The index to search from.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.reduce`.\n * @returns {boolean} Returns `true` if `value` is found, else `false`.\n * @example\n *\n * _.includes([1, 2, 3], 1);\n * // => true\n *\n * _.includes([1, 2, 3], 1, 2);\n * // => false\n *\n * _.includes({ 'a': 1, 'b': 2 }, 1);\n * // => true\n *\n * _.includes('abcd', 'bc');\n * // => true\n */\nfunction includes(collection, value, fromIndex, guard) {\n collection = isArrayLike(collection) ? collection : values(collection);\n fromIndex = (fromIndex && !guard) ? toInteger(fromIndex) : 0;\n\n var length = collection.length;\n if (fromIndex < 0) {\n fromIndex = nativeMax(length + fromIndex, 0);\n }\n return isString(collection)\n ? (fromIndex <= length && collection.indexOf(value, fromIndex) > -1)\n : (!!length && baseIndexOf(collection, value, fromIndex) > -1);\n}\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nfunction isArguments(value) {\n // Safari 8.1 makes `arguments.callee` enumerable in strict mode.\n return isArrayLikeObject(value) && hasOwnProperty.call(value, 'callee') &&\n (!propertyIsEnumerable.call(value, 'callee') || objectToString.call(value) == argsTag);\n}\n\n/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n}\n\n/**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array-like object,\n * else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\nfunction isArrayLikeObject(value) {\n return isObjectLike(value) && isArrayLike(value);\n}\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 8-9 which returns 'object' for typed array and other constructors.\n var tag = isObject(value) ? objectToString.call(value) : '';\n return tag == funcTag || tag == genTag;\n}\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return !!value && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return !!value && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is classified as a `String` primitive or object.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a string, else `false`.\n * @example\n *\n * _.isString('abc');\n * // => true\n *\n * _.isString(1);\n * // => false\n */\nfunction isString(value) {\n return typeof value == 'string' ||\n (!isArray(value) && isObjectLike(value) && objectToString.call(value) == stringTag);\n}\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && objectToString.call(value) == symbolTag);\n}\n\n/**\n * Converts `value` to a finite number.\n *\n * @static\n * @memberOf _\n * @since 4.12.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted number.\n * @example\n *\n * _.toFinite(3.2);\n * // => 3.2\n *\n * _.toFinite(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toFinite(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toFinite('3.2');\n * // => 3.2\n */\nfunction toFinite(value) {\n if (!value) {\n return value === 0 ? value : 0;\n }\n value = toNumber(value);\n if (value === INFINITY || value === -INFINITY) {\n var sign = (value < 0 ? -1 : 1);\n return sign * MAX_INTEGER;\n }\n return value === value ? value : 0;\n}\n\n/**\n * Converts `value` to an integer.\n *\n * **Note:** This method is loosely based on\n * [`ToInteger`](http://www.ecma-international.org/ecma-262/7.0/#sec-tointeger).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.toInteger(3.2);\n * // => 3\n *\n * _.toInteger(Number.MIN_VALUE);\n * // => 0\n *\n * _.toInteger(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toInteger('3.2');\n * // => 3\n */\nfunction toInteger(value) {\n var result = toFinite(value),\n remainder = result % 1;\n\n return result === result ? (remainder ? result - remainder : result) : 0;\n}\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\nfunction toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? (other + '') : other;\n }\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n value = value.replace(reTrim, '');\n var isBinary = reIsBinary.test(value);\n return (isBinary || reIsOctal.test(value))\n ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n : (reIsBadHex.test(value) ? NAN : +value);\n}\n\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\nfunction keys(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n}\n\n/**\n * Creates an array of the own enumerable string keyed property values of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property values.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.values(new Foo);\n * // => [1, 2] (iteration order is not guaranteed)\n *\n * _.values('hi');\n * // => ['h', 'i']\n */\nfunction values(object) {\n return object ? baseValues(object, keys(object)) : [];\n}\n\nmodule.exports = includes;\n","/**\n * lodash 3.0.3 (Custom Build) \n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright 2012-2016 The Dojo Foundation \n * Based on Underscore.js 1.8.3 \n * Copyright 2009-2016 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n * Available under MIT license \n */\n\n/** `Object#toString` result references. */\nvar boolTag = '[object Boolean]';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/**\n * Checks if `value` is classified as a boolean primitive or object.\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`.\n * @example\n *\n * _.isBoolean(false);\n * // => true\n *\n * _.isBoolean(null);\n * // => false\n */\nfunction isBoolean(value) {\n return value === true || value === false ||\n (isObjectLike(value) && objectToString.call(value) == boolTag);\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return !!value && typeof value == 'object';\n}\n\nmodule.exports = isBoolean;\n","/**\n * lodash (Custom Build) \n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors \n * Released under MIT license \n * Based on Underscore.js 1.8.3 \n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0,\n MAX_INTEGER = 1.7976931348623157e+308,\n NAN = 0 / 0;\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/** Used to match leading and trailing whitespace. */\nvar reTrim = /^\\s+|\\s+$/g;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/**\n * Checks if `value` is an integer.\n *\n * **Note:** This method is based on\n * [`Number.isInteger`](https://mdn.io/Number/isInteger).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an integer, else `false`.\n * @example\n *\n * _.isInteger(3);\n * // => true\n *\n * _.isInteger(Number.MIN_VALUE);\n * // => false\n *\n * _.isInteger(Infinity);\n * // => false\n *\n * _.isInteger('3');\n * // => false\n */\nfunction isInteger(value) {\n return typeof value == 'number' && value == toInteger(value);\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return !!value && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return !!value && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && objectToString.call(value) == symbolTag);\n}\n\n/**\n * Converts `value` to a finite number.\n *\n * @static\n * @memberOf _\n * @since 4.12.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted number.\n * @example\n *\n * _.toFinite(3.2);\n * // => 3.2\n *\n * _.toFinite(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toFinite(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toFinite('3.2');\n * // => 3.2\n */\nfunction toFinite(value) {\n if (!value) {\n return value === 0 ? value : 0;\n }\n value = toNumber(value);\n if (value === INFINITY || value === -INFINITY) {\n var sign = (value < 0 ? -1 : 1);\n return sign * MAX_INTEGER;\n }\n return value === value ? value : 0;\n}\n\n/**\n * Converts `value` to an integer.\n *\n * **Note:** This method is loosely based on\n * [`ToInteger`](http://www.ecma-international.org/ecma-262/7.0/#sec-tointeger).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.toInteger(3.2);\n * // => 3\n *\n * _.toInteger(Number.MIN_VALUE);\n * // => 0\n *\n * _.toInteger(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toInteger('3.2');\n * // => 3\n */\nfunction toInteger(value) {\n var result = toFinite(value),\n remainder = result % 1;\n\n return result === result ? (remainder ? result - remainder : result) : 0;\n}\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\nfunction toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? (other + '') : other;\n }\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n value = value.replace(reTrim, '');\n var isBinary = reIsBinary.test(value);\n return (isBinary || reIsOctal.test(value))\n ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n : (reIsBadHex.test(value) ? NAN : +value);\n}\n\nmodule.exports = isInteger;\n","/**\n * lodash 3.0.3 (Custom Build) \n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright 2012-2016 The Dojo Foundation \n * Based on Underscore.js 1.8.3 \n * Copyright 2009-2016 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n * Available under MIT license \n */\n\n/** `Object#toString` result references. */\nvar numberTag = '[object Number]';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return !!value && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is classified as a `Number` primitive or object.\n *\n * **Note:** To exclude `Infinity`, `-Infinity`, and `NaN`, which are classified\n * as numbers, use the `_.isFinite` method.\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`.\n * @example\n *\n * _.isNumber(3);\n * // => true\n *\n * _.isNumber(Number.MIN_VALUE);\n * // => true\n *\n * _.isNumber(Infinity);\n * // => true\n *\n * _.isNumber('3');\n * // => false\n */\nfunction isNumber(value) {\n return typeof value == 'number' ||\n (isObjectLike(value) && objectToString.call(value) == numberTag);\n}\n\nmodule.exports = isNumber;\n","/**\n * lodash (Custom Build) \n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors \n * Released under MIT license \n * Based on Underscore.js 1.8.3 \n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** `Object#toString` result references. */\nvar objectTag = '[object Object]';\n\n/**\n * Checks if `value` is a host object in IE < 9.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a host object, else `false`.\n */\nfunction isHostObject(value) {\n // Many host objects are `Object` objects that can coerce to strings\n // despite having improperly defined `toString` methods.\n var result = false;\n if (value != null && typeof value.toString != 'function') {\n try {\n result = !!(value + '');\n } catch (e) {}\n }\n return result;\n}\n\n/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n}\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to infer the `Object` constructor. */\nvar objectCtorString = funcToString.call(Object);\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar getPrototype = overArg(Object.getPrototypeOf, Object);\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return !!value && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is a plain object, that is, an object created by the\n * `Object` constructor or one with a `[[Prototype]]` of `null`.\n *\n * @static\n * @memberOf _\n * @since 0.8.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * _.isPlainObject(new Foo);\n * // => false\n *\n * _.isPlainObject([1, 2, 3]);\n * // => false\n *\n * _.isPlainObject({ 'x': 0, 'y': 0 });\n * // => true\n *\n * _.isPlainObject(Object.create(null));\n * // => true\n */\nfunction isPlainObject(value) {\n if (!isObjectLike(value) ||\n objectToString.call(value) != objectTag || isHostObject(value)) {\n return false;\n }\n var proto = getPrototype(value);\n if (proto === null) {\n return true;\n }\n var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor;\n return (typeof Ctor == 'function' &&\n Ctor instanceof Ctor && funcToString.call(Ctor) == objectCtorString);\n}\n\nmodule.exports = isPlainObject;\n","/**\n * lodash 4.0.1 (Custom Build) \n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright 2012-2016 The Dojo Foundation \n * Based on Underscore.js 1.8.3 \n * Copyright 2009-2016 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n * Available under MIT license \n */\n\n/** `Object#toString` result references. */\nvar stringTag = '[object String]';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @type Function\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return !!value && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is classified as a `String` primitive or object.\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`.\n * @example\n *\n * _.isString('abc');\n * // => true\n *\n * _.isString(1);\n * // => false\n */\nfunction isString(value) {\n return typeof value == 'string' ||\n (!isArray(value) && isObjectLike(value) && objectToString.call(value) == stringTag);\n}\n\nmodule.exports = isString;\n","/**\n * lodash (Custom Build) \n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors \n * Released under MIT license \n * Based on Underscore.js 1.8.3 \n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as the `TypeError` message for \"Functions\" methods. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0,\n MAX_INTEGER = 1.7976931348623157e+308,\n NAN = 0 / 0;\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/** Used to match leading and trailing whitespace. */\nvar reTrim = /^\\s+|\\s+$/g;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/**\n * Creates a function that invokes `func`, with the `this` binding and arguments\n * of the created function, while it's called less than `n` times. Subsequent\n * calls to the created function return the result of the last `func` invocation.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {number} n The number of calls at which `func` is no longer invoked.\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new restricted function.\n * @example\n *\n * jQuery(element).on('click', _.before(5, addContactToList));\n * // => Allows adding up to 4 contacts to the list.\n */\nfunction before(n, func) {\n var result;\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n n = toInteger(n);\n return function() {\n if (--n > 0) {\n result = func.apply(this, arguments);\n }\n if (n <= 1) {\n func = undefined;\n }\n return result;\n };\n}\n\n/**\n * Creates a function that is restricted to invoking `func` once. Repeat calls\n * to the function return the value of the first invocation. The `func` is\n * invoked with the `this` binding and arguments of the created function.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new restricted function.\n * @example\n *\n * var initialize = _.once(createApplication);\n * initialize();\n * initialize();\n * // => `createApplication` is invoked once\n */\nfunction once(func) {\n return before(2, func);\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return !!value && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return !!value && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && objectToString.call(value) == symbolTag);\n}\n\n/**\n * Converts `value` to a finite number.\n *\n * @static\n * @memberOf _\n * @since 4.12.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted number.\n * @example\n *\n * _.toFinite(3.2);\n * // => 3.2\n *\n * _.toFinite(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toFinite(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toFinite('3.2');\n * // => 3.2\n */\nfunction toFinite(value) {\n if (!value) {\n return value === 0 ? value : 0;\n }\n value = toNumber(value);\n if (value === INFINITY || value === -INFINITY) {\n var sign = (value < 0 ? -1 : 1);\n return sign * MAX_INTEGER;\n }\n return value === value ? value : 0;\n}\n\n/**\n * Converts `value` to an integer.\n *\n * **Note:** This method is loosely based on\n * [`ToInteger`](http://www.ecma-international.org/ecma-262/7.0/#sec-tointeger).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.toInteger(3.2);\n * // => 3\n *\n * _.toInteger(Number.MIN_VALUE);\n * // => 0\n *\n * _.toInteger(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toInteger('3.2');\n * // => 3\n */\nfunction toInteger(value) {\n var result = toFinite(value),\n remainder = result % 1;\n\n return result === result ? (remainder ? result - remainder : result) : 0;\n}\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\nfunction toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? (other + '') : other;\n }\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n value = value.replace(reTrim, '');\n var isBinary = reIsBinary.test(value);\n return (isBinary || reIsOctal.test(value))\n ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n : (reIsBadHex.test(value) ? NAN : +value);\n}\n\nmodule.exports = once;\n","const timespan = require('./lib/timespan');\nconst PS_SUPPORTED = require('./lib/psSupported');\nconst validateAsymmetricKey = require('./lib/validateAsymmetricKey');\nconst jws = require('jws');\nconst includes = require('lodash.includes');\nconst isBoolean = require('lodash.isboolean');\nconst isInteger = require('lodash.isinteger');\nconst isNumber = require('lodash.isnumber');\nconst isPlainObject = require('lodash.isplainobject');\nconst isString = require('lodash.isstring');\nconst once = require('lodash.once');\nconst { KeyObject, createSecretKey, createPrivateKey } = require('crypto')\n\nconst SUPPORTED_ALGS = ['RS256', 'RS384', 'RS512', 'ES256', 'ES384', 'ES512', 'HS256', 'HS384', 'HS512', 'none'];\nif (PS_SUPPORTED) {\n SUPPORTED_ALGS.splice(3, 0, 'PS256', 'PS384', 'PS512');\n}\n\nconst sign_options_schema = {\n expiresIn: { isValid: function(value) { return isInteger(value) || (isString(value) && value); }, message: '\"expiresIn\" should be a number of seconds or string representing a timespan' },\n notBefore: { isValid: function(value) { return isInteger(value) || (isString(value) && value); }, message: '\"notBefore\" should be a number of seconds or string representing a timespan' },\n audience: { isValid: function(value) { return isString(value) || Array.isArray(value); }, message: '\"audience\" must be a string or array' },\n algorithm: { isValid: includes.bind(null, SUPPORTED_ALGS), message: '\"algorithm\" must be a valid string enum value' },\n header: { isValid: isPlainObject, message: '\"header\" must be an object' },\n encoding: { isValid: isString, message: '\"encoding\" must be a string' },\n issuer: { isValid: isString, message: '\"issuer\" must be a string' },\n subject: { isValid: isString, message: '\"subject\" must be a string' },\n jwtid: { isValid: isString, message: '\"jwtid\" must be a string' },\n noTimestamp: { isValid: isBoolean, message: '\"noTimestamp\" must be a boolean' },\n keyid: { isValid: isString, message: '\"keyid\" must be a string' },\n mutatePayload: { isValid: isBoolean, message: '\"mutatePayload\" must be a boolean' },\n allowInsecureKeySizes: { isValid: isBoolean, message: '\"allowInsecureKeySizes\" must be a boolean'},\n allowInvalidAsymmetricKeyTypes: { isValid: isBoolean, message: '\"allowInvalidAsymmetricKeyTypes\" must be a boolean'}\n};\n\nconst registered_claims_schema = {\n iat: { isValid: isNumber, message: '\"iat\" should be a number of seconds' },\n exp: { isValid: isNumber, message: '\"exp\" should be a number of seconds' },\n nbf: { isValid: isNumber, message: '\"nbf\" should be a number of seconds' }\n};\n\nfunction validate(schema, allowUnknown, object, parameterName) {\n if (!isPlainObject(object)) {\n throw new Error('Expected \"' + parameterName + '\" to be a plain object.');\n }\n Object.keys(object)\n .forEach(function(key) {\n const validator = schema[key];\n if (!validator) {\n if (!allowUnknown) {\n throw new Error('\"' + key + '\" is not allowed in \"' + parameterName + '\"');\n }\n return;\n }\n if (!validator.isValid(object[key])) {\n throw new Error(validator.message);\n }\n });\n}\n\nfunction validateOptions(options) {\n return validate(sign_options_schema, false, options, 'options');\n}\n\nfunction validatePayload(payload) {\n return validate(registered_claims_schema, true, payload, 'payload');\n}\n\nconst options_to_payload = {\n 'audience': 'aud',\n 'issuer': 'iss',\n 'subject': 'sub',\n 'jwtid': 'jti'\n};\n\nconst options_for_objects = [\n 'expiresIn',\n 'notBefore',\n 'noTimestamp',\n 'audience',\n 'issuer',\n 'subject',\n 'jwtid',\n];\n\nmodule.exports = function (payload, secretOrPrivateKey, options, callback) {\n if (typeof options === 'function') {\n callback = options;\n options = {};\n } else {\n options = options || {};\n }\n\n const isObjectPayload = typeof payload === 'object' &&\n !Buffer.isBuffer(payload);\n\n const header = Object.assign({\n alg: options.algorithm || 'HS256',\n typ: isObjectPayload ? 'JWT' : undefined,\n kid: options.keyid\n }, options.header);\n\n function failure(err) {\n if (callback) {\n return callback(err);\n }\n throw err;\n }\n\n if (!secretOrPrivateKey && options.algorithm !== 'none') {\n return failure(new Error('secretOrPrivateKey must have a value'));\n }\n\n if (secretOrPrivateKey != null && !(secretOrPrivateKey instanceof KeyObject)) {\n try {\n secretOrPrivateKey = createPrivateKey(secretOrPrivateKey)\n } catch (_) {\n try {\n secretOrPrivateKey = createSecretKey(typeof secretOrPrivateKey === 'string' ? Buffer.from(secretOrPrivateKey) : secretOrPrivateKey)\n } catch (_) {\n return failure(new Error('secretOrPrivateKey is not valid key material'));\n }\n }\n }\n\n if (header.alg.startsWith('HS') && secretOrPrivateKey.type !== 'secret') {\n return failure(new Error((`secretOrPrivateKey must be a symmetric key when using ${header.alg}`)))\n } else if (/^(?:RS|PS|ES)/.test(header.alg)) {\n if (secretOrPrivateKey.type !== 'private') {\n return failure(new Error((`secretOrPrivateKey must be an asymmetric key when using ${header.alg}`)))\n }\n if (!options.allowInsecureKeySizes &&\n !header.alg.startsWith('ES') &&\n secretOrPrivateKey.asymmetricKeyDetails !== undefined && //KeyObject.asymmetricKeyDetails is supported in Node 15+\n secretOrPrivateKey.asymmetricKeyDetails.modulusLength < 2048) {\n return failure(new Error(`secretOrPrivateKey has a minimum key size of 2048 bits for ${header.alg}`));\n }\n }\n\n if (typeof payload === 'undefined') {\n return failure(new Error('payload is required'));\n } else if (isObjectPayload) {\n try {\n validatePayload(payload);\n }\n catch (error) {\n return failure(error);\n }\n if (!options.mutatePayload) {\n payload = Object.assign({},payload);\n }\n } else {\n const invalid_options = options_for_objects.filter(function (opt) {\n return typeof options[opt] !== 'undefined';\n });\n\n if (invalid_options.length > 0) {\n return failure(new Error('invalid ' + invalid_options.join(',') + ' option for ' + (typeof payload ) + ' payload'));\n }\n }\n\n if (typeof payload.exp !== 'undefined' && typeof options.expiresIn !== 'undefined') {\n return failure(new Error('Bad \"options.expiresIn\" option the payload already has an \"exp\" property.'));\n }\n\n if (typeof payload.nbf !== 'undefined' && typeof options.notBefore !== 'undefined') {\n return failure(new Error('Bad \"options.notBefore\" option the payload already has an \"nbf\" property.'));\n }\n\n try {\n validateOptions(options);\n }\n catch (error) {\n return failure(error);\n }\n\n if (!options.allowInvalidAsymmetricKeyTypes) {\n try {\n validateAsymmetricKey(header.alg, secretOrPrivateKey);\n } catch (error) {\n return failure(error);\n }\n }\n\n const timestamp = payload.iat || Math.floor(Date.now() / 1000);\n\n if (options.noTimestamp) {\n delete payload.iat;\n } else if (isObjectPayload) {\n payload.iat = timestamp;\n }\n\n if (typeof options.notBefore !== 'undefined') {\n try {\n payload.nbf = timespan(options.notBefore, timestamp);\n }\n catch (err) {\n return failure(err);\n }\n if (typeof payload.nbf === 'undefined') {\n return failure(new Error('\"notBefore\" should be a number of seconds or string representing a timespan eg: \"1d\", \"20h\", 60'));\n }\n }\n\n if (typeof options.expiresIn !== 'undefined' && typeof payload === 'object') {\n try {\n payload.exp = timespan(options.expiresIn, timestamp);\n }\n catch (err) {\n return failure(err);\n }\n if (typeof payload.exp === 'undefined') {\n return failure(new Error('\"expiresIn\" should be a number of seconds or string representing a timespan eg: \"1d\", \"20h\", 60'));\n }\n }\n\n Object.keys(options_to_payload).forEach(function (key) {\n const claim = options_to_payload[key];\n if (typeof options[key] !== 'undefined') {\n if (typeof payload[claim] !== 'undefined') {\n return failure(new Error('Bad \"options.' + key + '\" option. The payload already has an \"' + claim + '\" property.'));\n }\n payload[claim] = options[key];\n }\n });\n\n const encoding = options.encoding || 'utf8';\n\n if (typeof callback === 'function') {\n callback = callback && once(callback);\n\n jws.createSign({\n header: header,\n privateKey: secretOrPrivateKey,\n payload: payload,\n encoding: encoding\n }).once('error', callback)\n .once('done', function (signature) {\n // TODO: Remove in favor of the modulus length check before signing once node 15+ is the minimum supported version\n if(!options.allowInsecureKeySizes && /^(?:RS|PS)/.test(header.alg) && signature.length < 256) {\n return callback(new Error(`secretOrPrivateKey has a minimum key size of 2048 bits for ${header.alg}`))\n }\n callback(null, signature);\n });\n } else {\n let signature = jws.sign({header: header, payload: payload, secret: secretOrPrivateKey, encoding: encoding});\n // TODO: Remove in favor of the modulus length check before signing once node 15+ is the minimum supported version\n if(!options.allowInsecureKeySizes && /^(?:RS|PS)/.test(header.alg) && signature.length < 256) {\n throw new Error(`secretOrPrivateKey has a minimum key size of 2048 bits for ${header.alg}`)\n }\n return signature\n }\n};\n","module.exports = {\n decode: require('./decode'),\n verify: require('./verify'),\n sign: require('./sign'),\n JsonWebTokenError: require('./lib/JsonWebTokenError'),\n NotBeforeError: require('./lib/NotBeforeError'),\n TokenExpiredError: require('./lib/TokenExpiredError'),\n};\n","/*! @azure/msal-node v3.8.3 2025-11-19 */\n'use strict';\n'use strict';\n\nvar http = require('http');\nvar https = require('https');\nvar uuid = require('uuid');\nvar crypto = require('crypto');\nvar msalCommon = require('@azure/msal-common');\nvar jwt = require('jsonwebtoken');\nvar fs = require('fs');\nvar path = require('path');\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * This class serializes cache entities to be saved into in-memory object types defined internally\r\n * @internal\r\n */\r\nclass Serializer {\r\n /**\r\n * serialize the JSON blob\r\n * @param data - JSON blob cache\r\n */\r\n static serializeJSONBlob(data) {\r\n return JSON.stringify(data);\r\n }\r\n /**\r\n * Serialize Accounts\r\n * @param accCache - cache of accounts\r\n */\r\n static serializeAccounts(accCache) {\r\n const accounts = {};\r\n Object.keys(accCache).map(function (key) {\r\n const accountEntity = accCache[key];\r\n accounts[key] = {\r\n home_account_id: accountEntity.homeAccountId,\r\n environment: accountEntity.environment,\r\n realm: accountEntity.realm,\r\n local_account_id: accountEntity.localAccountId,\r\n username: accountEntity.username,\r\n authority_type: accountEntity.authorityType,\r\n name: accountEntity.name,\r\n client_info: accountEntity.clientInfo,\r\n last_modification_time: accountEntity.lastModificationTime,\r\n last_modification_app: accountEntity.lastModificationApp,\r\n tenantProfiles: accountEntity.tenantProfiles?.map((tenantProfile) => {\r\n return JSON.stringify(tenantProfile);\r\n }),\r\n };\r\n });\r\n return accounts;\r\n }\r\n /**\r\n * Serialize IdTokens\r\n * @param idTCache - cache of ID tokens\r\n */\r\n static serializeIdTokens(idTCache) {\r\n const idTokens = {};\r\n Object.keys(idTCache).map(function (key) {\r\n const idTEntity = idTCache[key];\r\n idTokens[key] = {\r\n home_account_id: idTEntity.homeAccountId,\r\n environment: idTEntity.environment,\r\n credential_type: idTEntity.credentialType,\r\n client_id: idTEntity.clientId,\r\n secret: idTEntity.secret,\r\n realm: idTEntity.realm,\r\n };\r\n });\r\n return idTokens;\r\n }\r\n /**\r\n * Serializes AccessTokens\r\n * @param atCache - cache of access tokens\r\n */\r\n static serializeAccessTokens(atCache) {\r\n const accessTokens = {};\r\n Object.keys(atCache).map(function (key) {\r\n const atEntity = atCache[key];\r\n accessTokens[key] = {\r\n home_account_id: atEntity.homeAccountId,\r\n environment: atEntity.environment,\r\n credential_type: atEntity.credentialType,\r\n client_id: atEntity.clientId,\r\n secret: atEntity.secret,\r\n realm: atEntity.realm,\r\n target: atEntity.target,\r\n cached_at: atEntity.cachedAt,\r\n expires_on: atEntity.expiresOn,\r\n extended_expires_on: atEntity.extendedExpiresOn,\r\n refresh_on: atEntity.refreshOn,\r\n key_id: atEntity.keyId,\r\n token_type: atEntity.tokenType,\r\n requestedClaims: atEntity.requestedClaims,\r\n requestedClaimsHash: atEntity.requestedClaimsHash,\r\n userAssertionHash: atEntity.userAssertionHash,\r\n };\r\n });\r\n return accessTokens;\r\n }\r\n /**\r\n * Serialize refreshTokens\r\n * @param rtCache - cache of refresh tokens\r\n */\r\n static serializeRefreshTokens(rtCache) {\r\n const refreshTokens = {};\r\n Object.keys(rtCache).map(function (key) {\r\n const rtEntity = rtCache[key];\r\n refreshTokens[key] = {\r\n home_account_id: rtEntity.homeAccountId,\r\n environment: rtEntity.environment,\r\n credential_type: rtEntity.credentialType,\r\n client_id: rtEntity.clientId,\r\n secret: rtEntity.secret,\r\n family_id: rtEntity.familyId,\r\n target: rtEntity.target,\r\n realm: rtEntity.realm,\r\n };\r\n });\r\n return refreshTokens;\r\n }\r\n /**\r\n * Serialize amdtCache\r\n * @param amdtCache - cache of app metadata\r\n */\r\n static serializeAppMetadata(amdtCache) {\r\n const appMetadata = {};\r\n Object.keys(amdtCache).map(function (key) {\r\n const amdtEntity = amdtCache[key];\r\n appMetadata[key] = {\r\n client_id: amdtEntity.clientId,\r\n environment: amdtEntity.environment,\r\n family_id: amdtEntity.familyId,\r\n };\r\n });\r\n return appMetadata;\r\n }\r\n /**\r\n * Serialize the cache\r\n * @param inMemCache - itemised cache read from the JSON\r\n */\r\n static serializeAllCache(inMemCache) {\r\n return {\r\n Account: this.serializeAccounts(inMemCache.accounts),\r\n IdToken: this.serializeIdTokens(inMemCache.idTokens),\r\n AccessToken: this.serializeAccessTokens(inMemCache.accessTokens),\r\n RefreshToken: this.serializeRefreshTokens(inMemCache.refreshTokens),\r\n AppMetadata: this.serializeAppMetadata(inMemCache.appMetadata),\r\n };\r\n }\r\n}\n\n/*! @azure/msal-common v15.13.2 2025-11-19 */\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nconst Constants$1 = {\r\n LIBRARY_NAME: \"MSAL.JS\",\r\n SKU: \"msal.js.common\",\r\n // default authority\r\n DEFAULT_AUTHORITY: \"https://login.microsoftonline.com/common/\",\r\n DEFAULT_AUTHORITY_HOST: \"login.microsoftonline.com\",\r\n DEFAULT_COMMON_TENANT: \"common\",\r\n // ADFS String\r\n ADFS: \"adfs\",\r\n DSTS: \"dstsv2\",\r\n // Default AAD Instance Discovery Endpoint\r\n AAD_INSTANCE_DISCOVERY_ENDPT: \"https://login.microsoftonline.com/common/discovery/instance?api-version=1.1&authorization_endpoint=\",\r\n // CIAM URL\r\n CIAM_AUTH_URL: \".ciamlogin.com\",\r\n AAD_TENANT_DOMAIN_SUFFIX: \".onmicrosoft.com\",\r\n // Resource delimiter - used for certain cache entries\r\n RESOURCE_DELIM: \"|\",\r\n // Placeholder for non-existent account ids/objects\r\n NO_ACCOUNT: \"NO_ACCOUNT\",\r\n // Claims\r\n CLAIMS: \"claims\",\r\n // Consumer UTID\r\n CONSUMER_UTID: \"9188040d-6c67-4c5b-b112-36a304b66dad\",\r\n // Default scopes\r\n OPENID_SCOPE: \"openid\",\r\n PROFILE_SCOPE: \"profile\",\r\n OFFLINE_ACCESS_SCOPE: \"offline_access\",\r\n EMAIL_SCOPE: \"email\",\r\n CODE_GRANT_TYPE: \"authorization_code\",\r\n RT_GRANT_TYPE: \"refresh_token\",\r\n S256_CODE_CHALLENGE_METHOD: \"S256\",\r\n URL_FORM_CONTENT_TYPE: \"application/x-www-form-urlencoded;charset=utf-8\",\r\n AUTHORIZATION_PENDING: \"authorization_pending\",\r\n NOT_DEFINED: \"not_defined\",\r\n EMPTY_STRING: \"\",\r\n NOT_APPLICABLE: \"N/A\",\r\n NOT_AVAILABLE: \"Not Available\",\r\n FORWARD_SLASH: \"/\",\r\n IMDS_ENDPOINT: \"http://169.254.169.254/metadata/instance/compute/location\",\r\n IMDS_VERSION: \"2020-06-01\",\r\n IMDS_TIMEOUT: 2000,\r\n AZURE_REGION_AUTO_DISCOVER_FLAG: \"TryAutoDetect\",\r\n REGIONAL_AUTH_PUBLIC_CLOUD_SUFFIX: \"login.microsoft.com\",\r\n KNOWN_PUBLIC_CLOUDS: [\r\n \"login.microsoftonline.com\",\r\n \"login.windows.net\",\r\n \"login.microsoft.com\",\r\n \"sts.windows.net\",\r\n ],\r\n SHR_NONCE_VALIDITY: 240,\r\n INVALID_INSTANCE: \"invalid_instance\",\r\n};\r\nconst HttpStatus = {\r\n SUCCESS: 200,\r\n SUCCESS_RANGE_START: 200,\r\n SUCCESS_RANGE_END: 299,\r\n REDIRECT: 302,\r\n CLIENT_ERROR: 400,\r\n CLIENT_ERROR_RANGE_START: 400,\r\n BAD_REQUEST: 400,\r\n UNAUTHORIZED: 401,\r\n NOT_FOUND: 404,\r\n REQUEST_TIMEOUT: 408,\r\n GONE: 410,\r\n TOO_MANY_REQUESTS: 429,\r\n CLIENT_ERROR_RANGE_END: 499,\r\n SERVER_ERROR: 500,\r\n SERVER_ERROR_RANGE_START: 500,\r\n SERVICE_UNAVAILABLE: 503,\r\n GATEWAY_TIMEOUT: 504,\r\n SERVER_ERROR_RANGE_END: 599,\r\n MULTI_SIDED_ERROR: 600,\r\n};\r\nconst OIDC_DEFAULT_SCOPES = [\r\n Constants$1.OPENID_SCOPE,\r\n Constants$1.PROFILE_SCOPE,\r\n Constants$1.OFFLINE_ACCESS_SCOPE,\r\n];\r\nconst OIDC_SCOPES = [...OIDC_DEFAULT_SCOPES, Constants$1.EMAIL_SCOPE];\r\n/**\r\n * Request header names\r\n */\r\nconst HeaderNames = {\r\n CONTENT_TYPE: \"Content-Type\",\r\n CONTENT_LENGTH: \"Content-Length\",\r\n RETRY_AFTER: \"Retry-After\",\r\n CCS_HEADER: \"X-AnchorMailbox\",\r\n WWWAuthenticate: \"WWW-Authenticate\",\r\n AuthenticationInfo: \"Authentication-Info\",\r\n X_MS_REQUEST_ID: \"x-ms-request-id\",\r\n X_MS_HTTP_VERSION: \"x-ms-httpver\",\r\n};\r\n/**\r\n * String constants related to AAD Authority\r\n */\r\nconst AADAuthorityConstants = {\r\n COMMON: \"common\",\r\n ORGANIZATIONS: \"organizations\",\r\n CONSUMERS: \"consumers\",\r\n};\r\n/**\r\n * Claims request keys\r\n */\r\nconst ClaimsRequestKeys = {\r\n ACCESS_TOKEN: \"access_token\",\r\n XMS_CC: \"xms_cc\",\r\n};\r\n/**\r\n * we considered making this \"enum\" in the request instead of string, however it looks like the allowed list of\r\n * prompt values kept changing over past couple of years. There are some undocumented prompt values for some\r\n * internal partners too, hence the choice of generic \"string\" type instead of the \"enum\"\r\n */\r\nconst PromptValue = {\r\n LOGIN: \"login\",\r\n SELECT_ACCOUNT: \"select_account\",\r\n CONSENT: \"consent\",\r\n NONE: \"none\",\r\n CREATE: \"create\",\r\n NO_SESSION: \"no_session\",\r\n};\r\n/**\r\n * allowed values for codeVerifier\r\n */\r\nconst CodeChallengeMethodValues = {\r\n PLAIN: \"plain\",\r\n S256: \"S256\",\r\n};\r\n/**\r\n * Allowed values for response_type\r\n */\r\nconst OAuthResponseType = {\r\n CODE: \"code\",\r\n IDTOKEN_TOKEN: \"id_token token\"};\r\n/**\r\n * allowed values for response_mode\r\n */\r\nconst ResponseMode = {\r\n QUERY: \"query\",\r\n FRAGMENT: \"fragment\",\r\n FORM_POST: \"form_post\",\r\n};\r\n/**\r\n * allowed grant_type\r\n */\r\nconst GrantType = {\r\n AUTHORIZATION_CODE_GRANT: \"authorization_code\",\r\n CLIENT_CREDENTIALS_GRANT: \"client_credentials\",\r\n RESOURCE_OWNER_PASSWORD_GRANT: \"password\",\r\n REFRESH_TOKEN_GRANT: \"refresh_token\",\r\n DEVICE_CODE_GRANT: \"device_code\",\r\n JWT_BEARER: \"urn:ietf:params:oauth:grant-type:jwt-bearer\",\r\n};\r\n/**\r\n * Account types in Cache\r\n */\r\nconst CacheAccountType = {\r\n MSSTS_ACCOUNT_TYPE: \"MSSTS\",\r\n ADFS_ACCOUNT_TYPE: \"ADFS\",\r\n GENERIC_ACCOUNT_TYPE: \"Generic\", // NTLM, Kerberos, FBA, Basic etc\r\n};\r\n/**\r\n * Separators used in cache\r\n */\r\nconst Separators = {\r\n CACHE_KEY_SEPARATOR: \"-\",\r\n CLIENT_INFO_SEPARATOR: \".\",\r\n};\r\n/**\r\n * Credential Type stored in the cache\r\n */\r\nconst CredentialType = {\r\n ID_TOKEN: \"IdToken\",\r\n ACCESS_TOKEN: \"AccessToken\",\r\n ACCESS_TOKEN_WITH_AUTH_SCHEME: \"AccessToken_With_AuthScheme\",\r\n REFRESH_TOKEN: \"RefreshToken\",\r\n};\r\n/**\r\n * More Cache related constants\r\n */\r\nconst APP_METADATA = \"appmetadata\";\r\nconst CLIENT_INFO = \"client_info\";\r\nconst THE_FAMILY_ID = \"1\";\r\nconst AUTHORITY_METADATA_CONSTANTS = {\r\n CACHE_KEY: \"authority-metadata\",\r\n REFRESH_TIME_SECONDS: 3600 * 24, // 24 Hours\r\n};\r\nconst AuthorityMetadataSource = {\r\n CONFIG: \"config\",\r\n CACHE: \"cache\",\r\n NETWORK: \"network\",\r\n HARDCODED_VALUES: \"hardcoded_values\",\r\n};\r\nconst SERVER_TELEM_CONSTANTS = {\r\n SCHEMA_VERSION: 5,\r\n MAX_LAST_HEADER_BYTES: 330,\r\n MAX_CACHED_ERRORS: 50,\r\n CACHE_KEY: \"server-telemetry\",\r\n CATEGORY_SEPARATOR: \"|\",\r\n VALUE_SEPARATOR: \",\",\r\n OVERFLOW_TRUE: \"1\",\r\n OVERFLOW_FALSE: \"0\",\r\n UNKNOWN_ERROR: \"unknown_error\",\r\n};\r\n/**\r\n * Type of the authentication request\r\n */\r\nconst AuthenticationScheme = {\r\n BEARER: \"Bearer\",\r\n POP: \"pop\",\r\n SSH: \"ssh-cert\",\r\n};\r\n/**\r\n * Constants related to throttling\r\n */\r\nconst ThrottlingConstants = {\r\n // Default time to throttle RequestThumbprint in seconds\r\n DEFAULT_THROTTLE_TIME_SECONDS: 60,\r\n // Default maximum time to throttle in seconds, overrides what the server sends back\r\n DEFAULT_MAX_THROTTLE_TIME_SECONDS: 3600,\r\n // Prefix for storing throttling entries\r\n THROTTLING_PREFIX: \"throttling\",\r\n // Value assigned to the x-ms-lib-capability header to indicate to the server the library supports throttling\r\n X_MS_LIB_CAPABILITY_VALUE: \"retry-after, h429\",\r\n};\r\nconst Errors = {\r\n INVALID_GRANT_ERROR: \"invalid_grant\",\r\n CLIENT_MISMATCH_ERROR: \"client_mismatch\",\r\n};\r\n/**\r\n * Password grant parameters\r\n */\r\nconst PasswordGrantConstants = {\r\n username: \"username\",\r\n password: \"password\",\r\n};\r\n/**\r\n * Region Discovery Sources\r\n */\r\nconst RegionDiscoverySources = {\r\n FAILED_AUTO_DETECTION: \"1\",\r\n INTERNAL_CACHE: \"2\",\r\n ENVIRONMENT_VARIABLE: \"3\",\r\n IMDS: \"4\",\r\n};\r\n/**\r\n * Region Discovery Outcomes\r\n */\r\nconst RegionDiscoveryOutcomes = {\r\n CONFIGURED_NO_AUTO_DETECTION: \"2\",\r\n AUTO_DETECTION_REQUESTED_SUCCESSFUL: \"4\",\r\n AUTO_DETECTION_REQUESTED_FAILED: \"5\",\r\n};\r\n/**\r\n * Specifies the reason for fetching the access token from the identity provider\r\n */\r\nconst CacheOutcome = {\r\n // When a token is found in the cache or the cache is not supposed to be hit when making the request\r\n NOT_APPLICABLE: \"0\",\r\n // When the token request goes to the identity provider because force_refresh was set to true. Also occurs if claims were requested\r\n FORCE_REFRESH_OR_CLAIMS: \"1\",\r\n // When the token request goes to the identity provider because no cached access token exists\r\n NO_CACHED_ACCESS_TOKEN: \"2\",\r\n // When the token request goes to the identity provider because cached access token expired\r\n CACHED_ACCESS_TOKEN_EXPIRED: \"3\",\r\n // When the token request goes to the identity provider because refresh_in was used and the existing token needs to be refreshed\r\n PROACTIVELY_REFRESHED: \"4\",\r\n};\r\n// Token renewal offset default in seconds\r\nconst DEFAULT_TOKEN_RENEWAL_OFFSET_SEC = 300;\r\nconst EncodingTypes = {\r\n BASE64: \"base64\",\r\n HEX: \"hex\",\r\n UTF8: \"utf-8\",\r\n};\n\n/*! @azure/msal-common v15.13.2 2025-11-19 */\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * AuthErrorMessage class containing string constants used by error codes and messages.\r\n */\r\nconst unexpectedError = \"unexpected_error\";\r\nconst postRequestFailed = \"post_request_failed\";\n\nvar AuthErrorCodes = /*#__PURE__*/Object.freeze({\n __proto__: null,\n postRequestFailed: postRequestFailed,\n unexpectedError: unexpectedError\n});\n\n/*! @azure/msal-common v15.13.2 2025-11-19 */\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nconst AuthErrorMessages = {\r\n [unexpectedError]: \"Unexpected error in authentication.\",\r\n [postRequestFailed]: \"Post request failed from the network, could be a 4xx/5xx or a network unavailability. Please check the exact error code for details.\",\r\n};\r\n/**\r\n * AuthErrorMessage class containing string constants used by error codes and messages.\r\n * @deprecated Use AuthErrorCodes instead\r\n */\r\nconst AuthErrorMessage = {\r\n unexpectedError: {\r\n code: unexpectedError,\r\n desc: AuthErrorMessages[unexpectedError],\r\n },\r\n postRequestFailed: {\r\n code: postRequestFailed,\r\n desc: AuthErrorMessages[postRequestFailed],\r\n },\r\n};\r\n/**\r\n * General error class thrown by the MSAL.js library.\r\n */\r\nclass AuthError extends Error {\r\n constructor(errorCode, errorMessage, suberror) {\r\n const errorString = errorMessage\r\n ? `${errorCode}: ${errorMessage}`\r\n : errorCode;\r\n super(errorString);\r\n Object.setPrototypeOf(this, AuthError.prototype);\r\n this.errorCode = errorCode || Constants$1.EMPTY_STRING;\r\n this.errorMessage = errorMessage || Constants$1.EMPTY_STRING;\r\n this.subError = suberror || Constants$1.EMPTY_STRING;\r\n this.name = \"AuthError\";\r\n }\r\n setCorrelationId(correlationId) {\r\n this.correlationId = correlationId;\r\n }\r\n}\r\nfunction createAuthError(code, additionalMessage) {\r\n return new AuthError(code, additionalMessage\r\n ? `${AuthErrorMessages[code]} ${additionalMessage}`\r\n : AuthErrorMessages[code]);\r\n}\n\n/*! @azure/msal-common v15.13.2 2025-11-19 */\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nconst clientInfoDecodingError = \"client_info_decoding_error\";\r\nconst clientInfoEmptyError = \"client_info_empty_error\";\r\nconst tokenParsingError = \"token_parsing_error\";\r\nconst nullOrEmptyToken = \"null_or_empty_token\";\r\nconst endpointResolutionError = \"endpoints_resolution_error\";\r\nconst networkError = \"network_error\";\r\nconst openIdConfigError = \"openid_config_error\";\r\nconst hashNotDeserialized = \"hash_not_deserialized\";\r\nconst invalidState = \"invalid_state\";\r\nconst stateMismatch = \"state_mismatch\";\r\nconst stateNotFound = \"state_not_found\";\r\nconst nonceMismatch = \"nonce_mismatch\";\r\nconst authTimeNotFound = \"auth_time_not_found\";\r\nconst maxAgeTranspired = \"max_age_transpired\";\r\nconst multipleMatchingTokens = \"multiple_matching_tokens\";\r\nconst multipleMatchingAccounts = \"multiple_matching_accounts\";\r\nconst multipleMatchingAppMetadata = \"multiple_matching_appMetadata\";\r\nconst requestCannotBeMade = \"request_cannot_be_made\";\r\nconst cannotRemoveEmptyScope = \"cannot_remove_empty_scope\";\r\nconst cannotAppendScopeSet = \"cannot_append_scopeset\";\r\nconst emptyInputScopeSet = \"empty_input_scopeset\";\r\nconst deviceCodePollingCancelled = \"device_code_polling_cancelled\";\r\nconst deviceCodeExpired = \"device_code_expired\";\r\nconst deviceCodeUnknownError = \"device_code_unknown_error\";\r\nconst noAccountInSilentRequest = \"no_account_in_silent_request\";\r\nconst invalidCacheRecord = \"invalid_cache_record\";\r\nconst invalidCacheEnvironment = \"invalid_cache_environment\";\r\nconst noAccountFound = \"no_account_found\";\r\nconst noCryptoObject = \"no_crypto_object\";\r\nconst unexpectedCredentialType = \"unexpected_credential_type\";\r\nconst invalidAssertion = \"invalid_assertion\";\r\nconst invalidClientCredential = \"invalid_client_credential\";\r\nconst tokenRefreshRequired = \"token_refresh_required\";\r\nconst userTimeoutReached = \"user_timeout_reached\";\r\nconst tokenClaimsCnfRequiredForSignedJwt = \"token_claims_cnf_required_for_signedjwt\";\r\nconst authorizationCodeMissingFromServerResponse = \"authorization_code_missing_from_server_response\";\r\nconst bindingKeyNotRemoved = \"binding_key_not_removed\";\r\nconst endSessionEndpointNotSupported = \"end_session_endpoint_not_supported\";\r\nconst keyIdMissing = \"key_id_missing\";\r\nconst noNetworkConnectivity = \"no_network_connectivity\";\r\nconst userCanceled = \"user_canceled\";\r\nconst missingTenantIdError = \"missing_tenant_id_error\";\r\nconst methodNotImplemented = \"method_not_implemented\";\r\nconst nestedAppAuthBridgeDisabled = \"nested_app_auth_bridge_disabled\";\r\nconst platformBrokerError = \"platform_broker_error\";\n\nvar ClientAuthErrorCodes = /*#__PURE__*/Object.freeze({\n __proto__: null,\n authTimeNotFound: authTimeNotFound,\n authorizationCodeMissingFromServerResponse: authorizationCodeMissingFromServerResponse,\n bindingKeyNotRemoved: bindingKeyNotRemoved,\n cannotAppendScopeSet: cannotAppendScopeSet,\n cannotRemoveEmptyScope: cannotRemoveEmptyScope,\n clientInfoDecodingError: clientInfoDecodingError,\n clientInfoEmptyError: clientInfoEmptyError,\n deviceCodeExpired: deviceCodeExpired,\n deviceCodePollingCancelled: deviceCodePollingCancelled,\n deviceCodeUnknownError: deviceCodeUnknownError,\n emptyInputScopeSet: emptyInputScopeSet,\n endSessionEndpointNotSupported: endSessionEndpointNotSupported,\n endpointResolutionError: endpointResolutionError,\n hashNotDeserialized: hashNotDeserialized,\n invalidAssertion: invalidAssertion,\n invalidCacheEnvironment: invalidCacheEnvironment,\n invalidCacheRecord: invalidCacheRecord,\n invalidClientCredential: invalidClientCredential,\n invalidState: invalidState,\n keyIdMissing: keyIdMissing,\n maxAgeTranspired: maxAgeTranspired,\n methodNotImplemented: methodNotImplemented,\n missingTenantIdError: missingTenantIdError,\n multipleMatchingAccounts: multipleMatchingAccounts,\n multipleMatchingAppMetadata: multipleMatchingAppMetadata,\n multipleMatchingTokens: multipleMatchingTokens,\n nestedAppAuthBridgeDisabled: nestedAppAuthBridgeDisabled,\n networkError: networkError,\n noAccountFound: noAccountFound,\n noAccountInSilentRequest: noAccountInSilentRequest,\n noCryptoObject: noCryptoObject,\n noNetworkConnectivity: noNetworkConnectivity,\n nonceMismatch: nonceMismatch,\n nullOrEmptyToken: nullOrEmptyToken,\n openIdConfigError: openIdConfigError,\n platformBrokerError: platformBrokerError,\n requestCannotBeMade: requestCannotBeMade,\n stateMismatch: stateMismatch,\n stateNotFound: stateNotFound,\n tokenClaimsCnfRequiredForSignedJwt: tokenClaimsCnfRequiredForSignedJwt,\n tokenParsingError: tokenParsingError,\n tokenRefreshRequired: tokenRefreshRequired,\n unexpectedCredentialType: unexpectedCredentialType,\n userCanceled: userCanceled,\n userTimeoutReached: userTimeoutReached\n});\n\n/*! @azure/msal-common v15.13.2 2025-11-19 */\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * ClientAuthErrorMessage class containing string constants used by error codes and messages.\r\n */\r\nconst ClientAuthErrorMessages = {\r\n [clientInfoDecodingError]: \"The client info could not be parsed/decoded correctly\",\r\n [clientInfoEmptyError]: \"The client info was empty\",\r\n [tokenParsingError]: \"Token cannot be parsed\",\r\n [nullOrEmptyToken]: \"The token is null or empty\",\r\n [endpointResolutionError]: \"Endpoints cannot be resolved\",\r\n [networkError]: \"Network request failed\",\r\n [openIdConfigError]: \"Could not retrieve endpoints. Check your authority and verify the .well-known/openid-configuration endpoint returns the required endpoints.\",\r\n [hashNotDeserialized]: \"The hash parameters could not be deserialized\",\r\n [invalidState]: \"State was not the expected format\",\r\n [stateMismatch]: \"State mismatch error\",\r\n [stateNotFound]: \"State not found\",\r\n [nonceMismatch]: \"Nonce mismatch error\",\r\n [authTimeNotFound]: \"Max Age was requested and the ID token is missing the auth_time variable.\" +\r\n \" auth_time is an optional claim and is not enabled by default - it must be enabled.\" +\r\n \" See https://aka.ms/msaljs/optional-claims for more information.\",\r\n [maxAgeTranspired]: \"Max Age is set to 0, or too much time has elapsed since the last end-user authentication.\",\r\n [multipleMatchingTokens]: \"The cache contains multiple tokens satisfying the requirements. \" +\r\n \"Call AcquireToken again providing more requirements such as authority or account.\",\r\n [multipleMatchingAccounts]: \"The cache contains multiple accounts satisfying the given parameters. Please pass more info to obtain the correct account\",\r\n [multipleMatchingAppMetadata]: \"The cache contains multiple appMetadata satisfying the given parameters. Please pass more info to obtain the correct appMetadata\",\r\n [requestCannotBeMade]: \"Token request cannot be made without authorization code or refresh token.\",\r\n [cannotRemoveEmptyScope]: \"Cannot remove null or empty scope from ScopeSet\",\r\n [cannotAppendScopeSet]: \"Cannot append ScopeSet\",\r\n [emptyInputScopeSet]: \"Empty input ScopeSet cannot be processed\",\r\n [deviceCodePollingCancelled]: \"Caller has cancelled token endpoint polling during device code flow by setting DeviceCodeRequest.cancel = true.\",\r\n [deviceCodeExpired]: \"Device code is expired.\",\r\n [deviceCodeUnknownError]: \"Device code stopped polling for unknown reasons.\",\r\n [noAccountInSilentRequest]: \"Please pass an account object, silent flow is not supported without account information\",\r\n [invalidCacheRecord]: \"Cache record object was null or undefined.\",\r\n [invalidCacheEnvironment]: \"Invalid environment when attempting to create cache entry\",\r\n [noAccountFound]: \"No account found in cache for given key.\",\r\n [noCryptoObject]: \"No crypto object detected.\",\r\n [unexpectedCredentialType]: \"Unexpected credential type.\",\r\n [invalidAssertion]: \"Client assertion must meet requirements described in https://tools.ietf.org/html/rfc7515\",\r\n [invalidClientCredential]: \"Client credential (secret, certificate, or assertion) must not be empty when creating a confidential client. An application should at most have one credential\",\r\n [tokenRefreshRequired]: \"Cannot return token from cache because it must be refreshed. This may be due to one of the following reasons: forceRefresh parameter is set to true, claims have been requested, there is no cached access token or it is expired.\",\r\n [userTimeoutReached]: \"User defined timeout for device code polling reached\",\r\n [tokenClaimsCnfRequiredForSignedJwt]: \"Cannot generate a POP jwt if the token_claims are not populated\",\r\n [authorizationCodeMissingFromServerResponse]: \"Server response does not contain an authorization code to proceed\",\r\n [bindingKeyNotRemoved]: \"Could not remove the credential's binding key from storage.\",\r\n [endSessionEndpointNotSupported]: \"The provided authority does not support logout\",\r\n [keyIdMissing]: \"A keyId value is missing from the requested bound token's cache record and is required to match the token to it's stored binding key.\",\r\n [noNetworkConnectivity]: \"No network connectivity. Check your internet connection.\",\r\n [userCanceled]: \"User cancelled the flow.\",\r\n [missingTenantIdError]: \"A tenant id - not common, organizations, or consumers - must be specified when using the client_credentials flow.\",\r\n [methodNotImplemented]: \"This method has not been implemented\",\r\n [nestedAppAuthBridgeDisabled]: \"The nested app auth bridge is disabled\",\r\n [platformBrokerError]: \"An error occurred in the native broker. See the platformBrokerError property for details.\",\r\n};\r\n/**\r\n * String constants used by error codes and messages.\r\n * @deprecated Use ClientAuthErrorCodes instead\r\n */\r\nconst ClientAuthErrorMessage = {\r\n clientInfoDecodingError: {\r\n code: clientInfoDecodingError,\r\n desc: ClientAuthErrorMessages[clientInfoDecodingError],\r\n },\r\n clientInfoEmptyError: {\r\n code: clientInfoEmptyError,\r\n desc: ClientAuthErrorMessages[clientInfoEmptyError],\r\n },\r\n tokenParsingError: {\r\n code: tokenParsingError,\r\n desc: ClientAuthErrorMessages[tokenParsingError],\r\n },\r\n nullOrEmptyToken: {\r\n code: nullOrEmptyToken,\r\n desc: ClientAuthErrorMessages[nullOrEmptyToken],\r\n },\r\n endpointResolutionError: {\r\n code: endpointResolutionError,\r\n desc: ClientAuthErrorMessages[endpointResolutionError],\r\n },\r\n networkError: {\r\n code: networkError,\r\n desc: ClientAuthErrorMessages[networkError],\r\n },\r\n unableToGetOpenidConfigError: {\r\n code: openIdConfigError,\r\n desc: ClientAuthErrorMessages[openIdConfigError],\r\n },\r\n hashNotDeserialized: {\r\n code: hashNotDeserialized,\r\n desc: ClientAuthErrorMessages[hashNotDeserialized],\r\n },\r\n invalidStateError: {\r\n code: invalidState,\r\n desc: ClientAuthErrorMessages[invalidState],\r\n },\r\n stateMismatchError: {\r\n code: stateMismatch,\r\n desc: ClientAuthErrorMessages[stateMismatch],\r\n },\r\n stateNotFoundError: {\r\n code: stateNotFound,\r\n desc: ClientAuthErrorMessages[stateNotFound],\r\n },\r\n nonceMismatchError: {\r\n code: nonceMismatch,\r\n desc: ClientAuthErrorMessages[nonceMismatch],\r\n },\r\n authTimeNotFoundError: {\r\n code: authTimeNotFound,\r\n desc: ClientAuthErrorMessages[authTimeNotFound],\r\n },\r\n maxAgeTranspired: {\r\n code: maxAgeTranspired,\r\n desc: ClientAuthErrorMessages[maxAgeTranspired],\r\n },\r\n multipleMatchingTokens: {\r\n code: multipleMatchingTokens,\r\n desc: ClientAuthErrorMessages[multipleMatchingTokens],\r\n },\r\n multipleMatchingAccounts: {\r\n code: multipleMatchingAccounts,\r\n desc: ClientAuthErrorMessages[multipleMatchingAccounts],\r\n },\r\n multipleMatchingAppMetadata: {\r\n code: multipleMatchingAppMetadata,\r\n desc: ClientAuthErrorMessages[multipleMatchingAppMetadata],\r\n },\r\n tokenRequestCannotBeMade: {\r\n code: requestCannotBeMade,\r\n desc: ClientAuthErrorMessages[requestCannotBeMade],\r\n },\r\n removeEmptyScopeError: {\r\n code: cannotRemoveEmptyScope,\r\n desc: ClientAuthErrorMessages[cannotRemoveEmptyScope],\r\n },\r\n appendScopeSetError: {\r\n code: cannotAppendScopeSet,\r\n desc: ClientAuthErrorMessages[cannotAppendScopeSet],\r\n },\r\n emptyInputScopeSetError: {\r\n code: emptyInputScopeSet,\r\n desc: ClientAuthErrorMessages[emptyInputScopeSet],\r\n },\r\n DeviceCodePollingCancelled: {\r\n code: deviceCodePollingCancelled,\r\n desc: ClientAuthErrorMessages[deviceCodePollingCancelled],\r\n },\r\n DeviceCodeExpired: {\r\n code: deviceCodeExpired,\r\n desc: ClientAuthErrorMessages[deviceCodeExpired],\r\n },\r\n DeviceCodeUnknownError: {\r\n code: deviceCodeUnknownError,\r\n desc: ClientAuthErrorMessages[deviceCodeUnknownError],\r\n },\r\n NoAccountInSilentRequest: {\r\n code: noAccountInSilentRequest,\r\n desc: ClientAuthErrorMessages[noAccountInSilentRequest],\r\n },\r\n invalidCacheRecord: {\r\n code: invalidCacheRecord,\r\n desc: ClientAuthErrorMessages[invalidCacheRecord],\r\n },\r\n invalidCacheEnvironment: {\r\n code: invalidCacheEnvironment,\r\n desc: ClientAuthErrorMessages[invalidCacheEnvironment],\r\n },\r\n noAccountFound: {\r\n code: noAccountFound,\r\n desc: ClientAuthErrorMessages[noAccountFound],\r\n },\r\n noCryptoObj: {\r\n code: noCryptoObject,\r\n desc: ClientAuthErrorMessages[noCryptoObject],\r\n },\r\n unexpectedCredentialType: {\r\n code: unexpectedCredentialType,\r\n desc: ClientAuthErrorMessages[unexpectedCredentialType],\r\n },\r\n invalidAssertion: {\r\n code: invalidAssertion,\r\n desc: ClientAuthErrorMessages[invalidAssertion],\r\n },\r\n invalidClientCredential: {\r\n code: invalidClientCredential,\r\n desc: ClientAuthErrorMessages[invalidClientCredential],\r\n },\r\n tokenRefreshRequired: {\r\n code: tokenRefreshRequired,\r\n desc: ClientAuthErrorMessages[tokenRefreshRequired],\r\n },\r\n userTimeoutReached: {\r\n code: userTimeoutReached,\r\n desc: ClientAuthErrorMessages[userTimeoutReached],\r\n },\r\n tokenClaimsRequired: {\r\n code: tokenClaimsCnfRequiredForSignedJwt,\r\n desc: ClientAuthErrorMessages[tokenClaimsCnfRequiredForSignedJwt],\r\n },\r\n noAuthorizationCodeFromServer: {\r\n code: authorizationCodeMissingFromServerResponse,\r\n desc: ClientAuthErrorMessages[authorizationCodeMissingFromServerResponse],\r\n },\r\n bindingKeyNotRemovedError: {\r\n code: bindingKeyNotRemoved,\r\n desc: ClientAuthErrorMessages[bindingKeyNotRemoved],\r\n },\r\n logoutNotSupported: {\r\n code: endSessionEndpointNotSupported,\r\n desc: ClientAuthErrorMessages[endSessionEndpointNotSupported],\r\n },\r\n keyIdMissing: {\r\n code: keyIdMissing,\r\n desc: ClientAuthErrorMessages[keyIdMissing],\r\n },\r\n noNetworkConnectivity: {\r\n code: noNetworkConnectivity,\r\n desc: ClientAuthErrorMessages[noNetworkConnectivity],\r\n },\r\n userCanceledError: {\r\n code: userCanceled,\r\n desc: ClientAuthErrorMessages[userCanceled],\r\n },\r\n missingTenantIdError: {\r\n code: missingTenantIdError,\r\n desc: ClientAuthErrorMessages[missingTenantIdError],\r\n },\r\n nestedAppAuthBridgeDisabled: {\r\n code: nestedAppAuthBridgeDisabled,\r\n desc: ClientAuthErrorMessages[nestedAppAuthBridgeDisabled],\r\n },\r\n platformBrokerError: {\r\n code: platformBrokerError,\r\n desc: ClientAuthErrorMessages[platformBrokerError],\r\n },\r\n};\r\n/**\r\n * Error thrown when there is an error in the client code running on the browser.\r\n */\r\nclass ClientAuthError extends AuthError {\r\n constructor(errorCode, additionalMessage) {\r\n super(errorCode, additionalMessage\r\n ? `${ClientAuthErrorMessages[errorCode]}: ${additionalMessage}`\r\n : ClientAuthErrorMessages[errorCode]);\r\n this.name = \"ClientAuthError\";\r\n Object.setPrototypeOf(this, ClientAuthError.prototype);\r\n }\r\n}\r\nfunction createClientAuthError(errorCode, additionalMessage) {\r\n return new ClientAuthError(errorCode, additionalMessage);\r\n}\n\n/*! @azure/msal-common v15.13.2 2025-11-19 */\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nconst DEFAULT_CRYPTO_IMPLEMENTATION = {\r\n createNewGuid: () => {\r\n throw createClientAuthError(methodNotImplemented);\r\n },\r\n base64Decode: () => {\r\n throw createClientAuthError(methodNotImplemented);\r\n },\r\n base64Encode: () => {\r\n throw createClientAuthError(methodNotImplemented);\r\n },\r\n base64UrlEncode: () => {\r\n throw createClientAuthError(methodNotImplemented);\r\n },\r\n encodeKid: () => {\r\n throw createClientAuthError(methodNotImplemented);\r\n },\r\n async getPublicKeyThumbprint() {\r\n throw createClientAuthError(methodNotImplemented);\r\n },\r\n async removeTokenBindingKey() {\r\n throw createClientAuthError(methodNotImplemented);\r\n },\r\n async clearKeystore() {\r\n throw createClientAuthError(methodNotImplemented);\r\n },\r\n async signJwt() {\r\n throw createClientAuthError(methodNotImplemented);\r\n },\r\n async hashString() {\r\n throw createClientAuthError(methodNotImplemented);\r\n },\r\n};\n\n/*! @azure/msal-common v15.13.2 2025-11-19 */\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * Log message level.\r\n */\r\nexports.LogLevel = void 0;\r\n(function (LogLevel) {\r\n LogLevel[LogLevel[\"Error\"] = 0] = \"Error\";\r\n LogLevel[LogLevel[\"Warning\"] = 1] = \"Warning\";\r\n LogLevel[LogLevel[\"Info\"] = 2] = \"Info\";\r\n LogLevel[LogLevel[\"Verbose\"] = 3] = \"Verbose\";\r\n LogLevel[LogLevel[\"Trace\"] = 4] = \"Trace\";\r\n})(exports.LogLevel || (exports.LogLevel = {}));\r\n/**\r\n * Class which facilitates logging of messages to a specific place.\r\n */\r\nclass Logger {\r\n constructor(loggerOptions, packageName, packageVersion) {\r\n // Current log level, defaults to info.\r\n this.level = exports.LogLevel.Info;\r\n const defaultLoggerCallback = () => {\r\n return;\r\n };\r\n const setLoggerOptions = loggerOptions || Logger.createDefaultLoggerOptions();\r\n this.localCallback =\r\n setLoggerOptions.loggerCallback || defaultLoggerCallback;\r\n this.piiLoggingEnabled = setLoggerOptions.piiLoggingEnabled || false;\r\n this.level =\r\n typeof setLoggerOptions.logLevel === \"number\"\r\n ? setLoggerOptions.logLevel\r\n : exports.LogLevel.Info;\r\n this.correlationId =\r\n setLoggerOptions.correlationId || Constants$1.EMPTY_STRING;\r\n this.packageName = packageName || Constants$1.EMPTY_STRING;\r\n this.packageVersion = packageVersion || Constants$1.EMPTY_STRING;\r\n }\r\n static createDefaultLoggerOptions() {\r\n return {\r\n loggerCallback: () => {\r\n // allow users to not set loggerCallback\r\n },\r\n piiLoggingEnabled: false,\r\n logLevel: exports.LogLevel.Info,\r\n };\r\n }\r\n /**\r\n * Create new Logger with existing configurations.\r\n */\r\n clone(packageName, packageVersion, correlationId) {\r\n return new Logger({\r\n loggerCallback: this.localCallback,\r\n piiLoggingEnabled: this.piiLoggingEnabled,\r\n logLevel: this.level,\r\n correlationId: correlationId || this.correlationId,\r\n }, packageName, packageVersion);\r\n }\r\n /**\r\n * Log message with required options.\r\n */\r\n logMessage(logMessage, options) {\r\n if (options.logLevel > this.level ||\r\n (!this.piiLoggingEnabled && options.containsPii)) {\r\n return;\r\n }\r\n const timestamp = new Date().toUTCString();\r\n // Add correlationId to logs if set, correlationId provided on log messages take precedence\r\n const logHeader = `[${timestamp}] : [${options.correlationId || this.correlationId || \"\"}]`;\r\n const log = `${logHeader} : ${this.packageName}@${this.packageVersion} : ${exports.LogLevel[options.logLevel]} - ${logMessage}`;\r\n // debug(`msal:${LogLevel[options.logLevel]}${options.containsPii ? \"-Pii\": Constants.EMPTY_STRING}${options.context ? `:${options.context}` : Constants.EMPTY_STRING}`)(logMessage);\r\n this.executeCallback(options.logLevel, log, options.containsPii || false);\r\n }\r\n /**\r\n * Execute callback with message.\r\n */\r\n executeCallback(level, message, containsPii) {\r\n if (this.localCallback) {\r\n this.localCallback(level, message, containsPii);\r\n }\r\n }\r\n /**\r\n * Logs error messages.\r\n */\r\n error(message, correlationId) {\r\n this.logMessage(message, {\r\n logLevel: exports.LogLevel.Error,\r\n containsPii: false,\r\n correlationId: correlationId || Constants$1.EMPTY_STRING,\r\n });\r\n }\r\n /**\r\n * Logs error messages with PII.\r\n */\r\n errorPii(message, correlationId) {\r\n this.logMessage(message, {\r\n logLevel: exports.LogLevel.Error,\r\n containsPii: true,\r\n correlationId: correlationId || Constants$1.EMPTY_STRING,\r\n });\r\n }\r\n /**\r\n * Logs warning messages.\r\n */\r\n warning(message, correlationId) {\r\n this.logMessage(message, {\r\n logLevel: exports.LogLevel.Warning,\r\n containsPii: false,\r\n correlationId: correlationId || Constants$1.EMPTY_STRING,\r\n });\r\n }\r\n /**\r\n * Logs warning messages with PII.\r\n */\r\n warningPii(message, correlationId) {\r\n this.logMessage(message, {\r\n logLevel: exports.LogLevel.Warning,\r\n containsPii: true,\r\n correlationId: correlationId || Constants$1.EMPTY_STRING,\r\n });\r\n }\r\n /**\r\n * Logs info messages.\r\n */\r\n info(message, correlationId) {\r\n this.logMessage(message, {\r\n logLevel: exports.LogLevel.Info,\r\n containsPii: false,\r\n correlationId: correlationId || Constants$1.EMPTY_STRING,\r\n });\r\n }\r\n /**\r\n * Logs info messages with PII.\r\n */\r\n infoPii(message, correlationId) {\r\n this.logMessage(message, {\r\n logLevel: exports.LogLevel.Info,\r\n containsPii: true,\r\n correlationId: correlationId || Constants$1.EMPTY_STRING,\r\n });\r\n }\r\n /**\r\n * Logs verbose messages.\r\n */\r\n verbose(message, correlationId) {\r\n this.logMessage(message, {\r\n logLevel: exports.LogLevel.Verbose,\r\n containsPii: false,\r\n correlationId: correlationId || Constants$1.EMPTY_STRING,\r\n });\r\n }\r\n /**\r\n * Logs verbose messages with PII.\r\n */\r\n verbosePii(message, correlationId) {\r\n this.logMessage(message, {\r\n logLevel: exports.LogLevel.Verbose,\r\n containsPii: true,\r\n correlationId: correlationId || Constants$1.EMPTY_STRING,\r\n });\r\n }\r\n /**\r\n * Logs trace messages.\r\n */\r\n trace(message, correlationId) {\r\n this.logMessage(message, {\r\n logLevel: exports.LogLevel.Trace,\r\n containsPii: false,\r\n correlationId: correlationId || Constants$1.EMPTY_STRING,\r\n });\r\n }\r\n /**\r\n * Logs trace messages with PII.\r\n */\r\n tracePii(message, correlationId) {\r\n this.logMessage(message, {\r\n logLevel: exports.LogLevel.Trace,\r\n containsPii: true,\r\n correlationId: correlationId || Constants$1.EMPTY_STRING,\r\n });\r\n }\r\n /**\r\n * Returns whether PII Logging is enabled or not.\r\n */\r\n isPiiLoggingEnabled() {\r\n return this.piiLoggingEnabled || false;\r\n }\r\n}\n\n/*! @azure/msal-common v15.13.2 2025-11-19 */\n/* eslint-disable header/header */\r\nconst name$1 = \"@azure/msal-common\";\r\nconst version$1 = \"15.13.2\";\n\n/*! @azure/msal-common v15.13.2 2025-11-19 */\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nconst AzureCloudInstance = {\r\n // AzureCloudInstance is not specified.\r\n None: \"none\",\r\n // Microsoft Azure public cloud\r\n AzurePublic: \"https://login.microsoftonline.com\",\r\n // Microsoft PPE\r\n AzurePpe: \"https://login.windows-ppe.net\",\r\n // Microsoft Chinese national/regional cloud\r\n AzureChina: \"https://login.chinacloudapi.cn\",\r\n // Microsoft German national/regional cloud (\"Black Forest\")\r\n AzureGermany: \"https://login.microsoftonline.de\",\r\n // US Government cloud\r\n AzureUsGovernment: \"https://login.microsoftonline.us\",\r\n};\n\n/*! @azure/msal-common v15.13.2 2025-11-19 */\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nconst redirectUriEmpty = \"redirect_uri_empty\";\r\nconst claimsRequestParsingError = \"claims_request_parsing_error\";\r\nconst authorityUriInsecure = \"authority_uri_insecure\";\r\nconst urlParseError = \"url_parse_error\";\r\nconst urlEmptyError = \"empty_url_error\";\r\nconst emptyInputScopesError = \"empty_input_scopes_error\";\r\nconst invalidClaims = \"invalid_claims\";\r\nconst tokenRequestEmpty = \"token_request_empty\";\r\nconst logoutRequestEmpty = \"logout_request_empty\";\r\nconst invalidCodeChallengeMethod = \"invalid_code_challenge_method\";\r\nconst pkceParamsMissing = \"pkce_params_missing\";\r\nconst invalidCloudDiscoveryMetadata = \"invalid_cloud_discovery_metadata\";\r\nconst invalidAuthorityMetadata = \"invalid_authority_metadata\";\r\nconst untrustedAuthority = \"untrusted_authority\";\r\nconst missingSshJwk = \"missing_ssh_jwk\";\r\nconst missingSshKid = \"missing_ssh_kid\";\r\nconst missingNonceAuthenticationHeader = \"missing_nonce_authentication_header\";\r\nconst invalidAuthenticationHeader = \"invalid_authentication_header\";\r\nconst cannotSetOIDCOptions = \"cannot_set_OIDCOptions\";\r\nconst cannotAllowPlatformBroker = \"cannot_allow_platform_broker\";\r\nconst authorityMismatch = \"authority_mismatch\";\r\nconst invalidRequestMethodForEAR = \"invalid_request_method_for_EAR\";\r\nconst invalidAuthorizePostBodyParameters = \"invalid_authorize_post_body_parameters\";\n\nvar ClientConfigurationErrorCodes = /*#__PURE__*/Object.freeze({\n __proto__: null,\n authorityMismatch: authorityMismatch,\n authorityUriInsecure: authorityUriInsecure,\n cannotAllowPlatformBroker: cannotAllowPlatformBroker,\n cannotSetOIDCOptions: cannotSetOIDCOptions,\n claimsRequestParsingError: claimsRequestParsingError,\n emptyInputScopesError: emptyInputScopesError,\n invalidAuthenticationHeader: invalidAuthenticationHeader,\n invalidAuthorityMetadata: invalidAuthorityMetadata,\n invalidAuthorizePostBodyParameters: invalidAuthorizePostBodyParameters,\n invalidClaims: invalidClaims,\n invalidCloudDiscoveryMetadata: invalidCloudDiscoveryMetadata,\n invalidCodeChallengeMethod: invalidCodeChallengeMethod,\n invalidRequestMethodForEAR: invalidRequestMethodForEAR,\n logoutRequestEmpty: logoutRequestEmpty,\n missingNonceAuthenticationHeader: missingNonceAuthenticationHeader,\n missingSshJwk: missingSshJwk,\n missingSshKid: missingSshKid,\n pkceParamsMissing: pkceParamsMissing,\n redirectUriEmpty: redirectUriEmpty,\n tokenRequestEmpty: tokenRequestEmpty,\n untrustedAuthority: untrustedAuthority,\n urlEmptyError: urlEmptyError,\n urlParseError: urlParseError\n});\n\n/*! @azure/msal-common v15.13.2 2025-11-19 */\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nconst ClientConfigurationErrorMessages = {\r\n [redirectUriEmpty]: \"A redirect URI is required for all calls, and none has been set.\",\r\n [claimsRequestParsingError]: \"Could not parse the given claims request object.\",\r\n [authorityUriInsecure]: \"Authority URIs must use https. Please see here for valid authority configuration options: https://docs.microsoft.com/en-us/azure/active-directory/develop/msal-js-initializing-client-applications#configuration-options\",\r\n [urlParseError]: \"URL could not be parsed into appropriate segments.\",\r\n [urlEmptyError]: \"URL was empty or null.\",\r\n [emptyInputScopesError]: \"Scopes cannot be passed as null, undefined or empty array because they are required to obtain an access token.\",\r\n [invalidClaims]: \"Given claims parameter must be a stringified JSON object.\",\r\n [tokenRequestEmpty]: \"Token request was empty and not found in cache.\",\r\n [logoutRequestEmpty]: \"The logout request was null or undefined.\",\r\n [invalidCodeChallengeMethod]: 'code_challenge_method passed is invalid. Valid values are \"plain\" and \"S256\".',\r\n [pkceParamsMissing]: \"Both params: code_challenge and code_challenge_method are to be passed if to be sent in the request\",\r\n [invalidCloudDiscoveryMetadata]: \"Invalid cloudDiscoveryMetadata provided. Must be a stringified JSON object containing tenant_discovery_endpoint and metadata fields\",\r\n [invalidAuthorityMetadata]: \"Invalid authorityMetadata provided. Must by a stringified JSON object containing authorization_endpoint, token_endpoint, issuer fields.\",\r\n [untrustedAuthority]: \"The provided authority is not a trusted authority. Please include this authority in the knownAuthorities config parameter.\",\r\n [missingSshJwk]: \"Missing sshJwk in SSH certificate request. A stringified JSON Web Key is required when using the SSH authentication scheme.\",\r\n [missingSshKid]: \"Missing sshKid in SSH certificate request. A string that uniquely identifies the public SSH key is required when using the SSH authentication scheme.\",\r\n [missingNonceAuthenticationHeader]: \"Unable to find an authentication header containing server nonce. Either the Authentication-Info or WWW-Authenticate headers must be present in order to obtain a server nonce.\",\r\n [invalidAuthenticationHeader]: \"Invalid authentication header provided\",\r\n [cannotSetOIDCOptions]: \"Cannot set OIDCOptions parameter. Please change the protocol mode to OIDC or use a non-Microsoft authority.\",\r\n [cannotAllowPlatformBroker]: \"Cannot set allowPlatformBroker parameter to true when not in AAD protocol mode.\",\r\n [authorityMismatch]: \"Authority mismatch error. Authority provided in login request or PublicClientApplication config does not match the environment of the provided account. Please use a matching account or make an interactive request to login to this authority.\",\r\n [invalidAuthorizePostBodyParameters]: \"Invalid authorize post body parameters provided. If you are using authorizePostBodyParameters, the request method must be POST. Please check the request method and parameters.\",\r\n [invalidRequestMethodForEAR]: \"Invalid request method for EAR protocol mode. The request method cannot be GET when using EAR protocol mode. Please change the request method to POST.\",\r\n};\r\n/**\r\n * ClientConfigurationErrorMessage class containing string constants used by error codes and messages.\r\n * @deprecated Use ClientConfigurationErrorCodes instead\r\n */\r\nconst ClientConfigurationErrorMessage = {\r\n redirectUriNotSet: {\r\n code: redirectUriEmpty,\r\n desc: ClientConfigurationErrorMessages[redirectUriEmpty],\r\n },\r\n claimsRequestParsingError: {\r\n code: claimsRequestParsingError,\r\n desc: ClientConfigurationErrorMessages[claimsRequestParsingError],\r\n },\r\n authorityUriInsecure: {\r\n code: authorityUriInsecure,\r\n desc: ClientConfigurationErrorMessages[authorityUriInsecure],\r\n },\r\n urlParseError: {\r\n code: urlParseError,\r\n desc: ClientConfigurationErrorMessages[urlParseError],\r\n },\r\n urlEmptyError: {\r\n code: urlEmptyError,\r\n desc: ClientConfigurationErrorMessages[urlEmptyError],\r\n },\r\n emptyScopesError: {\r\n code: emptyInputScopesError,\r\n desc: ClientConfigurationErrorMessages[emptyInputScopesError],\r\n },\r\n invalidClaimsRequest: {\r\n code: invalidClaims,\r\n desc: ClientConfigurationErrorMessages[invalidClaims],\r\n },\r\n tokenRequestEmptyError: {\r\n code: tokenRequestEmpty,\r\n desc: ClientConfigurationErrorMessages[tokenRequestEmpty],\r\n },\r\n logoutRequestEmptyError: {\r\n code: logoutRequestEmpty,\r\n desc: ClientConfigurationErrorMessages[logoutRequestEmpty],\r\n },\r\n invalidCodeChallengeMethod: {\r\n code: invalidCodeChallengeMethod,\r\n desc: ClientConfigurationErrorMessages[invalidCodeChallengeMethod],\r\n },\r\n invalidCodeChallengeParams: {\r\n code: pkceParamsMissing,\r\n desc: ClientConfigurationErrorMessages[pkceParamsMissing],\r\n },\r\n invalidCloudDiscoveryMetadata: {\r\n code: invalidCloudDiscoveryMetadata,\r\n desc: ClientConfigurationErrorMessages[invalidCloudDiscoveryMetadata],\r\n },\r\n invalidAuthorityMetadata: {\r\n code: invalidAuthorityMetadata,\r\n desc: ClientConfigurationErrorMessages[invalidAuthorityMetadata],\r\n },\r\n untrustedAuthority: {\r\n code: untrustedAuthority,\r\n desc: ClientConfigurationErrorMessages[untrustedAuthority],\r\n },\r\n missingSshJwk: {\r\n code: missingSshJwk,\r\n desc: ClientConfigurationErrorMessages[missingSshJwk],\r\n },\r\n missingSshKid: {\r\n code: missingSshKid,\r\n desc: ClientConfigurationErrorMessages[missingSshKid],\r\n },\r\n missingNonceAuthenticationHeader: {\r\n code: missingNonceAuthenticationHeader,\r\n desc: ClientConfigurationErrorMessages[missingNonceAuthenticationHeader],\r\n },\r\n invalidAuthenticationHeader: {\r\n code: invalidAuthenticationHeader,\r\n desc: ClientConfigurationErrorMessages[invalidAuthenticationHeader],\r\n },\r\n cannotSetOIDCOptions: {\r\n code: cannotSetOIDCOptions,\r\n desc: ClientConfigurationErrorMessages[cannotSetOIDCOptions],\r\n },\r\n cannotAllowPlatformBroker: {\r\n code: cannotAllowPlatformBroker,\r\n desc: ClientConfigurationErrorMessages[cannotAllowPlatformBroker],\r\n },\r\n authorityMismatch: {\r\n code: authorityMismatch,\r\n desc: ClientConfigurationErrorMessages[authorityMismatch],\r\n },\r\n invalidAuthorizePostBodyParameters: {\r\n code: invalidAuthorizePostBodyParameters,\r\n desc: ClientConfigurationErrorMessages[invalidAuthorizePostBodyParameters],\r\n },\r\n invalidRequestMethodForEAR: {\r\n code: invalidRequestMethodForEAR,\r\n desc: ClientConfigurationErrorMessages[invalidRequestMethodForEAR],\r\n },\r\n};\r\n/**\r\n * Error thrown when there is an error in configuration of the MSAL.js library.\r\n */\r\nclass ClientConfigurationError extends AuthError {\r\n constructor(errorCode) {\r\n super(errorCode, ClientConfigurationErrorMessages[errorCode]);\r\n this.name = \"ClientConfigurationError\";\r\n Object.setPrototypeOf(this, ClientConfigurationError.prototype);\r\n }\r\n}\r\nfunction createClientConfigurationError(errorCode) {\r\n return new ClientConfigurationError(errorCode);\r\n}\n\n/*! @azure/msal-common v15.13.2 2025-11-19 */\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * @hidden\r\n */\r\nclass StringUtils {\r\n /**\r\n * Check if stringified object is empty\r\n * @param strObj\r\n */\r\n static isEmptyObj(strObj) {\r\n if (strObj) {\r\n try {\r\n const obj = JSON.parse(strObj);\r\n return Object.keys(obj).length === 0;\r\n }\r\n catch (e) { }\r\n }\r\n return true;\r\n }\r\n static startsWith(str, search) {\r\n return str.indexOf(search) === 0;\r\n }\r\n static endsWith(str, search) {\r\n return (str.length >= search.length &&\r\n str.lastIndexOf(search) === str.length - search.length);\r\n }\r\n /**\r\n * Parses string into an object.\r\n *\r\n * @param query\r\n */\r\n static queryStringToObject(query) {\r\n const obj = {};\r\n const params = query.split(\"&\");\r\n const decode = (s) => decodeURIComponent(s.replace(/\\+/g, \" \"));\r\n params.forEach((pair) => {\r\n if (pair.trim()) {\r\n const [key, value] = pair.split(/=(.+)/g, 2); // Split on the first occurence of the '=' character\r\n if (key && value) {\r\n obj[decode(key)] = decode(value);\r\n }\r\n }\r\n });\r\n return obj;\r\n }\r\n /**\r\n * Trims entries in an array.\r\n *\r\n * @param arr\r\n */\r\n static trimArrayEntries(arr) {\r\n return arr.map((entry) => entry.trim());\r\n }\r\n /**\r\n * Removes empty strings from array\r\n * @param arr\r\n */\r\n static removeEmptyStringsFromArray(arr) {\r\n return arr.filter((entry) => {\r\n return !!entry;\r\n });\r\n }\r\n /**\r\n * Attempts to parse a string into JSON\r\n * @param str\r\n */\r\n static jsonParseHelper(str) {\r\n try {\r\n return JSON.parse(str);\r\n }\r\n catch (e) {\r\n return null;\r\n }\r\n }\r\n /**\r\n * Tests if a given string matches a given pattern, with support for wildcards and queries.\r\n * @param pattern Wildcard pattern to string match. Supports \"*\" for wildcards and \"?\" for queries\r\n * @param input String to match against\r\n */\r\n static matchPattern(pattern, input) {\r\n /**\r\n * Wildcard support: https://stackoverflow.com/a/3117248/4888559\r\n * Queries: replaces \"?\" in string with escaped \"\\?\" for regex test\r\n */\r\n // eslint-disable-next-line security/detect-non-literal-regexp\r\n const regex = new RegExp(pattern\r\n .replace(/\\\\/g, \"\\\\\\\\\")\r\n .replace(/\\*/g, \"[^ ]*\")\r\n .replace(/\\?/g, \"\\\\?\"));\r\n return regex.test(input);\r\n }\r\n}\n\n/*! @azure/msal-common v15.13.2 2025-11-19 */\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * The ScopeSet class creates a set of scopes. Scopes are case-insensitive, unique values, so the Set object in JS makes\r\n * the most sense to implement for this class. All scopes are trimmed and converted to lower case strings in intersection and union functions\r\n * to ensure uniqueness of strings.\r\n */\r\nclass ScopeSet {\r\n constructor(inputScopes) {\r\n // Filter empty string and null/undefined array items\r\n const scopeArr = inputScopes\r\n ? StringUtils.trimArrayEntries([...inputScopes])\r\n : [];\r\n const filteredInput = scopeArr\r\n ? StringUtils.removeEmptyStringsFromArray(scopeArr)\r\n : [];\r\n // Check if scopes array has at least one member\r\n if (!filteredInput || !filteredInput.length) {\r\n throw createClientConfigurationError(emptyInputScopesError);\r\n }\r\n this.scopes = new Set(); // Iterator in constructor not supported by IE11\r\n filteredInput.forEach((scope) => this.scopes.add(scope));\r\n }\r\n /**\r\n * Factory method to create ScopeSet from space-delimited string\r\n * @param inputScopeString\r\n * @param appClientId\r\n * @param scopesRequired\r\n */\r\n static fromString(inputScopeString) {\r\n const scopeString = inputScopeString || Constants$1.EMPTY_STRING;\r\n const inputScopes = scopeString.split(\" \");\r\n return new ScopeSet(inputScopes);\r\n }\r\n /**\r\n * Creates the set of scopes to search for in cache lookups\r\n * @param inputScopeString\r\n * @returns\r\n */\r\n static createSearchScopes(inputScopeString) {\r\n // Handle empty scopes by using default OIDC scopes for cache lookup\r\n const scopesToUse = inputScopeString && inputScopeString.length > 0\r\n ? inputScopeString\r\n : [...OIDC_DEFAULT_SCOPES];\r\n const scopeSet = new ScopeSet(scopesToUse);\r\n if (!scopeSet.containsOnlyOIDCScopes()) {\r\n scopeSet.removeOIDCScopes();\r\n }\r\n else {\r\n scopeSet.removeScope(Constants$1.OFFLINE_ACCESS_SCOPE);\r\n }\r\n return scopeSet;\r\n }\r\n /**\r\n * Check if a given scope is present in this set of scopes.\r\n * @param scope\r\n */\r\n containsScope(scope) {\r\n const lowerCaseScopes = this.printScopesLowerCase().split(\" \");\r\n const lowerCaseScopesSet = new ScopeSet(lowerCaseScopes);\r\n // compare lowercase scopes\r\n return scope\r\n ? lowerCaseScopesSet.scopes.has(scope.toLowerCase())\r\n : false;\r\n }\r\n /**\r\n * Check if a set of scopes is present in this set of scopes.\r\n * @param scopeSet\r\n */\r\n containsScopeSet(scopeSet) {\r\n if (!scopeSet || scopeSet.scopes.size <= 0) {\r\n return false;\r\n }\r\n return (this.scopes.size >= scopeSet.scopes.size &&\r\n scopeSet.asArray().every((scope) => this.containsScope(scope)));\r\n }\r\n /**\r\n * Check if set of scopes contains only the defaults\r\n */\r\n containsOnlyOIDCScopes() {\r\n let defaultScopeCount = 0;\r\n OIDC_SCOPES.forEach((defaultScope) => {\r\n if (this.containsScope(defaultScope)) {\r\n defaultScopeCount += 1;\r\n }\r\n });\r\n return this.scopes.size === defaultScopeCount;\r\n }\r\n /**\r\n * Appends single scope if passed\r\n * @param newScope\r\n */\r\n appendScope(newScope) {\r\n if (newScope) {\r\n this.scopes.add(newScope.trim());\r\n }\r\n }\r\n /**\r\n * Appends multiple scopes if passed\r\n * @param newScopes\r\n */\r\n appendScopes(newScopes) {\r\n try {\r\n newScopes.forEach((newScope) => this.appendScope(newScope));\r\n }\r\n catch (e) {\r\n throw createClientAuthError(cannotAppendScopeSet);\r\n }\r\n }\r\n /**\r\n * Removes element from set of scopes.\r\n * @param scope\r\n */\r\n removeScope(scope) {\r\n if (!scope) {\r\n throw createClientAuthError(cannotRemoveEmptyScope);\r\n }\r\n this.scopes.delete(scope.trim());\r\n }\r\n /**\r\n * Removes default scopes from set of scopes\r\n * Primarily used to prevent cache misses if the default scopes are not returned from the server\r\n */\r\n removeOIDCScopes() {\r\n OIDC_SCOPES.forEach((defaultScope) => {\r\n this.scopes.delete(defaultScope);\r\n });\r\n }\r\n /**\r\n * Combines an array of scopes with the current set of scopes.\r\n * @param otherScopes\r\n */\r\n unionScopeSets(otherScopes) {\r\n if (!otherScopes) {\r\n throw createClientAuthError(emptyInputScopeSet);\r\n }\r\n const unionScopes = new Set(); // Iterator in constructor not supported in IE11\r\n otherScopes.scopes.forEach((scope) => unionScopes.add(scope.toLowerCase()));\r\n this.scopes.forEach((scope) => unionScopes.add(scope.toLowerCase()));\r\n return unionScopes;\r\n }\r\n /**\r\n * Check if scopes intersect between this set and another.\r\n * @param otherScopes\r\n */\r\n intersectingScopeSets(otherScopes) {\r\n if (!otherScopes) {\r\n throw createClientAuthError(emptyInputScopeSet);\r\n }\r\n // Do not allow OIDC scopes to be the only intersecting scopes\r\n if (!otherScopes.containsOnlyOIDCScopes()) {\r\n otherScopes.removeOIDCScopes();\r\n }\r\n const unionScopes = this.unionScopeSets(otherScopes);\r\n const sizeOtherScopes = otherScopes.getScopeCount();\r\n const sizeThisScopes = this.getScopeCount();\r\n const sizeUnionScopes = unionScopes.size;\r\n return sizeUnionScopes < sizeThisScopes + sizeOtherScopes;\r\n }\r\n /**\r\n * Returns size of set of scopes.\r\n */\r\n getScopeCount() {\r\n return this.scopes.size;\r\n }\r\n /**\r\n * Returns the scopes as an array of string values\r\n */\r\n asArray() {\r\n const array = [];\r\n this.scopes.forEach((val) => array.push(val));\r\n return array;\r\n }\r\n /**\r\n * Prints scopes into a space-delimited string\r\n */\r\n printScopes() {\r\n if (this.scopes) {\r\n const scopeArr = this.asArray();\r\n return scopeArr.join(\" \");\r\n }\r\n return Constants$1.EMPTY_STRING;\r\n }\r\n /**\r\n * Prints scopes into a space-delimited lower-case string (used for caching)\r\n */\r\n printScopesLowerCase() {\r\n return this.printScopes().toLowerCase();\r\n }\r\n}\n\n/*! @azure/msal-common v15.13.2 2025-11-19 */\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * Function to build a client info object from server clientInfo string\r\n * @param rawClientInfo\r\n * @param crypto\r\n */\r\nfunction buildClientInfo(rawClientInfo, base64Decode) {\r\n if (!rawClientInfo) {\r\n throw createClientAuthError(clientInfoEmptyError);\r\n }\r\n try {\r\n const decodedClientInfo = base64Decode(rawClientInfo);\r\n return JSON.parse(decodedClientInfo);\r\n }\r\n catch (e) {\r\n throw createClientAuthError(clientInfoDecodingError);\r\n }\r\n}\r\n/**\r\n * Function to build a client info object from cached homeAccountId string\r\n * @param homeAccountId\r\n */\r\nfunction buildClientInfoFromHomeAccountId(homeAccountId) {\r\n if (!homeAccountId) {\r\n throw createClientAuthError(clientInfoDecodingError);\r\n }\r\n const clientInfoParts = homeAccountId.split(Separators.CLIENT_INFO_SEPARATOR, 2);\r\n return {\r\n uid: clientInfoParts[0],\r\n utid: clientInfoParts.length < 2\r\n ? Constants$1.EMPTY_STRING\r\n : clientInfoParts[1],\r\n };\r\n}\n\n/*! @azure/msal-common v15.13.2 2025-11-19 */\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * Returns true if tenantId matches the utid portion of homeAccountId\r\n * @param tenantId\r\n * @param homeAccountId\r\n * @returns\r\n */\r\nfunction tenantIdMatchesHomeTenant(tenantId, homeAccountId) {\r\n return (!!tenantId &&\r\n !!homeAccountId &&\r\n tenantId === homeAccountId.split(\".\")[1]);\r\n}\r\n/**\r\n * Build tenant profile\r\n * @param homeAccountId - Home account identifier for this account object\r\n * @param localAccountId - Local account identifer for this account object\r\n * @param tenantId - Full tenant or organizational id that this account belongs to\r\n * @param idTokenClaims - Claims from the ID token\r\n * @returns\r\n */\r\nfunction buildTenantProfile(homeAccountId, localAccountId, tenantId, idTokenClaims) {\r\n if (idTokenClaims) {\r\n const { oid, sub, tid, name, tfp, acr, preferred_username, upn, login_hint, } = idTokenClaims;\r\n /**\r\n * Since there is no way to determine if the authority is AAD or B2C, we exhaust all the possible claims that can serve as tenant ID with the following precedence:\r\n * tid - TenantID claim that identifies the tenant that issued the token in AAD. Expected in all AAD ID tokens, not present in B2C ID Tokens.\r\n * tfp - Trust Framework Policy claim that identifies the policy that was used to authenticate the user. Functions as tenant for B2C scenarios.\r\n * acr - Authentication Context Class Reference claim used only with older B2C policies. Fallback in case tfp is not present, but likely won't be present anyway.\r\n */\r\n const tenantId = tid || tfp || acr || \"\";\r\n return {\r\n tenantId: tenantId,\r\n localAccountId: oid || sub || \"\",\r\n name: name,\r\n username: preferred_username || upn || \"\",\r\n loginHint: login_hint,\r\n isHomeTenant: tenantIdMatchesHomeTenant(tenantId, homeAccountId),\r\n };\r\n }\r\n else {\r\n return {\r\n tenantId,\r\n localAccountId,\r\n username: \"\",\r\n isHomeTenant: tenantIdMatchesHomeTenant(tenantId, homeAccountId),\r\n };\r\n }\r\n}\r\n/**\r\n * Replaces account info that varies by tenant profile sourced from the ID token claims passed in with the tenant-specific account info\r\n * @param baseAccountInfo\r\n * @param idTokenClaims\r\n * @returns\r\n */\r\nfunction updateAccountTenantProfileData(baseAccountInfo, tenantProfile, idTokenClaims, idTokenSecret) {\r\n let updatedAccountInfo = baseAccountInfo;\r\n // Tenant Profile overrides passed in account info\r\n if (tenantProfile) {\r\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n const { isHomeTenant, ...tenantProfileOverride } = tenantProfile;\r\n updatedAccountInfo = { ...baseAccountInfo, ...tenantProfileOverride };\r\n }\r\n // ID token claims override passed in account info and tenant profile\r\n if (idTokenClaims) {\r\n // Ignore isHomeTenant, loginHint, and sid which are part of tenant profile but not base account info\r\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n const { isHomeTenant, ...claimsSourcedTenantProfile } = buildTenantProfile(baseAccountInfo.homeAccountId, baseAccountInfo.localAccountId, baseAccountInfo.tenantId, idTokenClaims);\r\n updatedAccountInfo = {\r\n ...updatedAccountInfo,\r\n ...claimsSourcedTenantProfile,\r\n idTokenClaims: idTokenClaims,\r\n idToken: idTokenSecret,\r\n };\r\n return updatedAccountInfo;\r\n }\r\n return updatedAccountInfo;\r\n}\n\n/*! @azure/msal-common v15.13.2 2025-11-19 */\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * Authority types supported by MSAL.\r\n */\r\nconst AuthorityType = {\r\n Default: 0,\r\n Adfs: 1,\r\n Dsts: 2,\r\n Ciam: 3,\r\n};\n\n/*! @azure/msal-common v15.13.2 2025-11-19 */\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * Gets tenantId from available ID token claims to set as credential realm with the following precedence:\r\n * 1. tid - if the token is acquired from an Azure AD tenant tid will be present\r\n * 2. tfp - if the token is acquired from a modern B2C tenant tfp should be present\r\n * 3. acr - if the token is acquired from a legacy B2C tenant acr should be present\r\n * Downcased to match the realm case-insensitive comparison requirements\r\n * @param idTokenClaims\r\n * @returns\r\n */\r\nfunction getTenantIdFromIdTokenClaims(idTokenClaims) {\r\n if (idTokenClaims) {\r\n const tenantId = idTokenClaims.tid || idTokenClaims.tfp || idTokenClaims.acr;\r\n return tenantId || null;\r\n }\r\n return null;\r\n}\n\n/*! @azure/msal-common v15.13.2 2025-11-19 */\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * Protocol modes supported by MSAL.\r\n */\r\nconst ProtocolMode = {\r\n /**\r\n * Auth Code + PKCE with Entra ID (formerly AAD) specific optimizations and features\r\n */\r\n AAD: \"AAD\",\r\n /**\r\n * Auth Code + PKCE without Entra ID specific optimizations and features. For use only with non-Microsoft owned authorities.\r\n * Support is limited for this mode.\r\n */\r\n OIDC: \"OIDC\",\r\n /**\r\n * Encrypted Authorize Response (EAR) with Entra ID specific optimizations and features\r\n */\r\n EAR: \"EAR\",\r\n};\n\n/*! @azure/msal-common v15.13.2 2025-11-19 */\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * Type that defines required and optional parameters for an Account field (based on universal cache schema implemented by all MSALs).\r\n *\r\n * Key : Value Schema\r\n *\r\n * Key: --\r\n *\r\n * Value Schema:\r\n * {\r\n * homeAccountId: home account identifier for the auth scheme,\r\n * environment: entity that issued the token, represented as a full host\r\n * realm: Full tenant or organizational identifier that the account belongs to\r\n * localAccountId: Original tenant-specific accountID, usually used for legacy cases\r\n * username: primary username that represents the user, usually corresponds to preferred_username in the v2 endpt\r\n * authorityType: Accounts authority type as a string\r\n * name: Full name for the account, including given name and family name,\r\n * lastModificationTime: last time this entity was modified in the cache\r\n * lastModificationApp:\r\n * nativeAccountId: Account identifier on the native device\r\n * tenantProfiles: Array of tenant profile objects for each tenant that the account has authenticated with in the browser\r\n * }\r\n * @internal\r\n */\r\nclass AccountEntity {\r\n /**\r\n * Returns the AccountInfo interface for this account.\r\n */\r\n static getAccountInfo(accountEntity) {\r\n return {\r\n homeAccountId: accountEntity.homeAccountId,\r\n environment: accountEntity.environment,\r\n tenantId: accountEntity.realm,\r\n username: accountEntity.username,\r\n localAccountId: accountEntity.localAccountId,\r\n loginHint: accountEntity.loginHint,\r\n name: accountEntity.name,\r\n nativeAccountId: accountEntity.nativeAccountId,\r\n authorityType: accountEntity.authorityType,\r\n // Deserialize tenant profiles array into a Map\r\n tenantProfiles: new Map((accountEntity.tenantProfiles || []).map((tenantProfile) => {\r\n return [tenantProfile.tenantId, tenantProfile];\r\n })),\r\n dataBoundary: accountEntity.dataBoundary,\r\n };\r\n }\r\n /**\r\n * Returns true if the account entity is in single tenant format (outdated), false otherwise\r\n */\r\n isSingleTenant() {\r\n return !this.tenantProfiles;\r\n }\r\n /**\r\n * Build Account cache from IdToken, clientInfo and authority/policy. Associated with AAD.\r\n * @param accountDetails\r\n */\r\n static createAccount(accountDetails, authority, base64Decode) {\r\n const account = new AccountEntity();\r\n if (authority.authorityType === AuthorityType.Adfs) {\r\n account.authorityType = CacheAccountType.ADFS_ACCOUNT_TYPE;\r\n }\r\n else if (authority.protocolMode === ProtocolMode.OIDC) {\r\n account.authorityType = CacheAccountType.GENERIC_ACCOUNT_TYPE;\r\n }\r\n else {\r\n account.authorityType = CacheAccountType.MSSTS_ACCOUNT_TYPE;\r\n }\r\n let clientInfo;\r\n if (accountDetails.clientInfo && base64Decode) {\r\n clientInfo = buildClientInfo(accountDetails.clientInfo, base64Decode);\r\n if (clientInfo.xms_tdbr) {\r\n account.dataBoundary =\r\n clientInfo.xms_tdbr === \"EU\" ? \"EU\" : \"None\";\r\n }\r\n }\r\n account.clientInfo = accountDetails.clientInfo;\r\n account.homeAccountId = accountDetails.homeAccountId;\r\n account.nativeAccountId = accountDetails.nativeAccountId;\r\n const env = accountDetails.environment ||\r\n (authority && authority.getPreferredCache());\r\n if (!env) {\r\n throw createClientAuthError(invalidCacheEnvironment);\r\n }\r\n account.environment = env;\r\n // non AAD scenarios can have empty realm\r\n account.realm =\r\n clientInfo?.utid ||\r\n getTenantIdFromIdTokenClaims(accountDetails.idTokenClaims) ||\r\n \"\";\r\n // How do you account for MSA CID here?\r\n account.localAccountId =\r\n clientInfo?.uid ||\r\n accountDetails.idTokenClaims?.oid ||\r\n accountDetails.idTokenClaims?.sub ||\r\n \"\";\r\n /*\r\n * In B2C scenarios the emails claim is used instead of preferred_username and it is an array.\r\n * In most cases it will contain a single email. This field should not be relied upon if a custom\r\n * policy is configured to return more than 1 email.\r\n */\r\n const preferredUsername = accountDetails.idTokenClaims?.preferred_username ||\r\n accountDetails.idTokenClaims?.upn;\r\n const email = accountDetails.idTokenClaims?.emails\r\n ? accountDetails.idTokenClaims.emails[0]\r\n : null;\r\n account.username = preferredUsername || email || \"\";\r\n account.loginHint = accountDetails.idTokenClaims?.login_hint;\r\n account.name = accountDetails.idTokenClaims?.name || \"\";\r\n account.cloudGraphHostName = accountDetails.cloudGraphHostName;\r\n account.msGraphHost = accountDetails.msGraphHost;\r\n if (accountDetails.tenantProfiles) {\r\n account.tenantProfiles = accountDetails.tenantProfiles;\r\n }\r\n else {\r\n const tenantProfile = buildTenantProfile(accountDetails.homeAccountId, account.localAccountId, account.realm, accountDetails.idTokenClaims);\r\n account.tenantProfiles = [tenantProfile];\r\n }\r\n return account;\r\n }\r\n /**\r\n * Creates an AccountEntity object from AccountInfo\r\n * @param accountInfo\r\n * @param cloudGraphHostName\r\n * @param msGraphHost\r\n * @returns\r\n */\r\n static createFromAccountInfo(accountInfo, cloudGraphHostName, msGraphHost) {\r\n const account = new AccountEntity();\r\n account.authorityType =\r\n accountInfo.authorityType || CacheAccountType.GENERIC_ACCOUNT_TYPE;\r\n account.homeAccountId = accountInfo.homeAccountId;\r\n account.localAccountId = accountInfo.localAccountId;\r\n account.nativeAccountId = accountInfo.nativeAccountId;\r\n account.realm = accountInfo.tenantId;\r\n account.environment = accountInfo.environment;\r\n account.username = accountInfo.username;\r\n account.name = accountInfo.name;\r\n account.loginHint = accountInfo.loginHint;\r\n account.cloudGraphHostName = cloudGraphHostName;\r\n account.msGraphHost = msGraphHost;\r\n // Serialize tenant profiles map into an array\r\n account.tenantProfiles = Array.from(accountInfo.tenantProfiles?.values() || []);\r\n account.dataBoundary = accountInfo.dataBoundary;\r\n return account;\r\n }\r\n /**\r\n * Generate HomeAccountId from server response\r\n * @param serverClientInfo\r\n * @param authType\r\n */\r\n static generateHomeAccountId(serverClientInfo, authType, logger, cryptoObj, idTokenClaims) {\r\n // since ADFS/DSTS do not have tid and does not set client_info\r\n if (!(authType === AuthorityType.Adfs ||\r\n authType === AuthorityType.Dsts)) {\r\n // for cases where there is clientInfo\r\n if (serverClientInfo) {\r\n try {\r\n const clientInfo = buildClientInfo(serverClientInfo, cryptoObj.base64Decode);\r\n if (clientInfo.uid && clientInfo.utid) {\r\n return `${clientInfo.uid}.${clientInfo.utid}`;\r\n }\r\n }\r\n catch (e) { }\r\n }\r\n logger.warning(\"No client info in response\");\r\n }\r\n // default to \"sub\" claim\r\n return idTokenClaims?.sub || \"\";\r\n }\r\n /**\r\n * Validates an entity: checks for all expected params\r\n * @param entity\r\n */\r\n static isAccountEntity(entity) {\r\n if (!entity) {\r\n return false;\r\n }\r\n return (entity.hasOwnProperty(\"homeAccountId\") &&\r\n entity.hasOwnProperty(\"environment\") &&\r\n entity.hasOwnProperty(\"realm\") &&\r\n entity.hasOwnProperty(\"localAccountId\") &&\r\n entity.hasOwnProperty(\"username\") &&\r\n entity.hasOwnProperty(\"authorityType\"));\r\n }\r\n /**\r\n * Helper function to determine whether 2 accountInfo objects represent the same account\r\n * @param accountA\r\n * @param accountB\r\n * @param compareClaims - If set to true idTokenClaims will also be compared to determine account equality\r\n */\r\n static accountInfoIsEqual(accountA, accountB, compareClaims) {\r\n if (!accountA || !accountB) {\r\n return false;\r\n }\r\n let claimsMatch = true; // default to true so as to not fail comparison below if compareClaims: false\r\n if (compareClaims) {\r\n const accountAClaims = (accountA.idTokenClaims ||\r\n {});\r\n const accountBClaims = (accountB.idTokenClaims ||\r\n {});\r\n // issued at timestamp and nonce are expected to change each time a new id token is acquired\r\n claimsMatch =\r\n accountAClaims.iat === accountBClaims.iat &&\r\n accountAClaims.nonce === accountBClaims.nonce;\r\n }\r\n return (accountA.homeAccountId === accountB.homeAccountId &&\r\n accountA.localAccountId === accountB.localAccountId &&\r\n accountA.username === accountB.username &&\r\n accountA.tenantId === accountB.tenantId &&\r\n accountA.loginHint === accountB.loginHint &&\r\n accountA.environment === accountB.environment &&\r\n accountA.nativeAccountId === accountB.nativeAccountId &&\r\n claimsMatch);\r\n }\r\n}\n\n/*! @azure/msal-common v15.13.2 2025-11-19 */\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * Extract token by decoding the rawToken\r\n *\r\n * @param encodedToken\r\n */\r\nfunction extractTokenClaims(encodedToken, base64Decode) {\r\n const jswPayload = getJWSPayload(encodedToken);\r\n // token will be decoded to get the username\r\n try {\r\n // base64Decode() should throw an error if there is an issue\r\n const base64Decoded = base64Decode(jswPayload);\r\n return JSON.parse(base64Decoded);\r\n }\r\n catch (err) {\r\n throw createClientAuthError(tokenParsingError);\r\n }\r\n}\r\n/**\r\n * Check if the signin_state claim contains \"kmsi\"\r\n * @param idTokenClaims\r\n * @returns\r\n */\r\nfunction isKmsi(idTokenClaims) {\r\n if (!idTokenClaims.signin_state) {\r\n return false;\r\n }\r\n /**\r\n * Signin_state claim known values:\r\n * dvc_mngd - device is managed\r\n * dvc_dmjd - device is domain joined\r\n * kmsi - user opted to \"keep me signed in\"\r\n * inknownntwk - Request made inside a known network. Don't use this, use CAE instead.\r\n */\r\n const kmsiClaims = [\"kmsi\", \"dvc_dmjd\"]; // There are some cases where kmsi may not be returned but persistent storage is still OK - allow dvc_dmjd as well\r\n const kmsi = idTokenClaims.signin_state.some((value) => kmsiClaims.includes(value.trim().toLowerCase()));\r\n return kmsi;\r\n}\r\n/**\r\n * decode a JWT\r\n *\r\n * @param authToken\r\n */\r\nfunction getJWSPayload(authToken) {\r\n if (!authToken) {\r\n throw createClientAuthError(nullOrEmptyToken);\r\n }\r\n const tokenPartsRegex = /^([^\\.\\s]*)\\.([^\\.\\s]+)\\.([^\\.\\s]*)$/;\r\n const matches = tokenPartsRegex.exec(authToken);\r\n if (!matches || matches.length < 4) {\r\n throw createClientAuthError(tokenParsingError);\r\n }\r\n /**\r\n * const crackedToken = {\r\n * header: matches[1],\r\n * JWSPayload: matches[2],\r\n * JWSSig: matches[3],\r\n * };\r\n */\r\n return matches[2];\r\n}\r\n/**\r\n * Determine if the token's max_age has transpired\r\n */\r\nfunction checkMaxAge(authTime, maxAge) {\r\n /*\r\n * per https://openid.net/specs/openid-connect-core-1_0.html#AuthRequest\r\n * To force an immediate re-authentication: If an app requires that a user re-authenticate prior to access,\r\n * provide a value of 0 for the max_age parameter and the AS will force a fresh login.\r\n */\r\n const fiveMinuteSkew = 300000; // five minutes in milliseconds\r\n if (maxAge === 0 || Date.now() - fiveMinuteSkew > authTime + maxAge) {\r\n throw createClientAuthError(maxAgeTranspired);\r\n }\r\n}\n\n/*! @azure/msal-common v15.13.2 2025-11-19 */\n/**\r\n * Parses hash string from given string. Returns empty string if no hash symbol is found.\r\n * @param hashString\r\n */\r\nfunction stripLeadingHashOrQuery(responseString) {\r\n if (responseString.startsWith(\"#/\")) {\r\n return responseString.substring(2);\r\n }\r\n else if (responseString.startsWith(\"#\") ||\r\n responseString.startsWith(\"?\")) {\r\n return responseString.substring(1);\r\n }\r\n return responseString;\r\n}\r\n/**\r\n * Returns URL hash as server auth code response object.\r\n */\r\nfunction getDeserializedResponse(responseString) {\r\n // Check if given hash is empty\r\n if (!responseString || responseString.indexOf(\"=\") < 0) {\r\n return null;\r\n }\r\n try {\r\n // Strip the # or ? symbol if present\r\n const normalizedResponse = stripLeadingHashOrQuery(responseString);\r\n // If # symbol was not present, above will return empty string, so give original hash value\r\n const deserializedHash = Object.fromEntries(new URLSearchParams(normalizedResponse));\r\n // Check for known response properties\r\n if (deserializedHash.code ||\r\n deserializedHash.ear_jwe ||\r\n deserializedHash.error ||\r\n deserializedHash.error_description ||\r\n deserializedHash.state) {\r\n return deserializedHash;\r\n }\r\n }\r\n catch (e) {\r\n throw createClientAuthError(hashNotDeserialized);\r\n }\r\n return null;\r\n}\r\n/**\r\n * Utility to create a URL from the params map\r\n */\r\nfunction mapToQueryString(parameters, encodeExtraParams = true, extraQueryParameters) {\r\n const queryParameterArray = new Array();\r\n parameters.forEach((value, key) => {\r\n if (!encodeExtraParams &&\r\n extraQueryParameters &&\r\n key in extraQueryParameters) {\r\n queryParameterArray.push(`${key}=${value}`);\r\n }\r\n else {\r\n queryParameterArray.push(`${key}=${encodeURIComponent(value)}`);\r\n }\r\n });\r\n return queryParameterArray.join(\"&\");\r\n}\n\n/*! @azure/msal-common v15.13.2 2025-11-19 */\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * Url object class which can perform various transformations on url strings.\r\n */\r\nclass UrlString {\r\n get urlString() {\r\n return this._urlString;\r\n }\r\n constructor(url) {\r\n this._urlString = url;\r\n if (!this._urlString) {\r\n // Throws error if url is empty\r\n throw createClientConfigurationError(urlEmptyError);\r\n }\r\n if (!url.includes(\"#\")) {\r\n this._urlString = UrlString.canonicalizeUri(url);\r\n }\r\n }\r\n /**\r\n * Ensure urls are lower case and end with a / character.\r\n * @param url\r\n */\r\n static canonicalizeUri(url) {\r\n if (url) {\r\n let lowerCaseUrl = url.toLowerCase();\r\n if (StringUtils.endsWith(lowerCaseUrl, \"?\")) {\r\n lowerCaseUrl = lowerCaseUrl.slice(0, -1);\r\n }\r\n else if (StringUtils.endsWith(lowerCaseUrl, \"?/\")) {\r\n lowerCaseUrl = lowerCaseUrl.slice(0, -2);\r\n }\r\n if (!StringUtils.endsWith(lowerCaseUrl, \"/\")) {\r\n lowerCaseUrl += \"/\";\r\n }\r\n return lowerCaseUrl;\r\n }\r\n return url;\r\n }\r\n /**\r\n * Throws if urlString passed is not a valid authority URI string.\r\n */\r\n validateAsUri() {\r\n // Attempts to parse url for uri components\r\n let components;\r\n try {\r\n components = this.getUrlComponents();\r\n }\r\n catch (e) {\r\n throw createClientConfigurationError(urlParseError);\r\n }\r\n // Throw error if URI or path segments are not parseable.\r\n if (!components.HostNameAndPort || !components.PathSegments) {\r\n throw createClientConfigurationError(urlParseError);\r\n }\r\n // Throw error if uri is insecure.\r\n if (!components.Protocol ||\r\n components.Protocol.toLowerCase() !== \"https:\") {\r\n throw createClientConfigurationError(authorityUriInsecure);\r\n }\r\n }\r\n /**\r\n * Given a url and a query string return the url with provided query string appended\r\n * @param url\r\n * @param queryString\r\n */\r\n static appendQueryString(url, queryString) {\r\n if (!queryString) {\r\n return url;\r\n }\r\n return url.indexOf(\"?\") < 0\r\n ? `${url}?${queryString}`\r\n : `${url}&${queryString}`;\r\n }\r\n /**\r\n * Returns a url with the hash removed\r\n * @param url\r\n */\r\n static removeHashFromUrl(url) {\r\n return UrlString.canonicalizeUri(url.split(\"#\")[0]);\r\n }\r\n /**\r\n * Given a url like https://a:b/common/d?e=f#g, and a tenantId, returns https://a:b/tenantId/d\r\n * @param href The url\r\n * @param tenantId The tenant id to replace\r\n */\r\n replaceTenantPath(tenantId) {\r\n const urlObject = this.getUrlComponents();\r\n const pathArray = urlObject.PathSegments;\r\n if (tenantId &&\r\n pathArray.length !== 0 &&\r\n (pathArray[0] === AADAuthorityConstants.COMMON ||\r\n pathArray[0] === AADAuthorityConstants.ORGANIZATIONS)) {\r\n pathArray[0] = tenantId;\r\n }\r\n return UrlString.constructAuthorityUriFromObject(urlObject);\r\n }\r\n /**\r\n * Parses out the components from a url string.\r\n * @returns An object with the various components. Please cache this value insted of calling this multiple times on the same url.\r\n */\r\n getUrlComponents() {\r\n // https://gist.github.com/curtisz/11139b2cfcaef4a261e0\r\n const regEx = RegExp(\"^(([^:/?#]+):)?(//([^/?#]*))?([^?#]*)(\\\\?([^#]*))?(#(.*))?\");\r\n // If url string does not match regEx, we throw an error\r\n const match = this.urlString.match(regEx);\r\n if (!match) {\r\n throw createClientConfigurationError(urlParseError);\r\n }\r\n // Url component object\r\n const urlComponents = {\r\n Protocol: match[1],\r\n HostNameAndPort: match[4],\r\n AbsolutePath: match[5],\r\n QueryString: match[7],\r\n };\r\n let pathSegments = urlComponents.AbsolutePath.split(\"/\");\r\n pathSegments = pathSegments.filter((val) => val && val.length > 0); // remove empty elements\r\n urlComponents.PathSegments = pathSegments;\r\n if (urlComponents.QueryString &&\r\n urlComponents.QueryString.endsWith(\"/\")) {\r\n urlComponents.QueryString = urlComponents.QueryString.substring(0, urlComponents.QueryString.length - 1);\r\n }\r\n return urlComponents;\r\n }\r\n static getDomainFromUrl(url) {\r\n const regEx = RegExp(\"^([^:/?#]+://)?([^/?#]*)\");\r\n const match = url.match(regEx);\r\n if (!match) {\r\n throw createClientConfigurationError(urlParseError);\r\n }\r\n return match[2];\r\n }\r\n static getAbsoluteUrl(relativeUrl, baseUrl) {\r\n if (relativeUrl[0] === Constants$1.FORWARD_SLASH) {\r\n const url = new UrlString(baseUrl);\r\n const baseComponents = url.getUrlComponents();\r\n return (baseComponents.Protocol +\r\n \"//\" +\r\n baseComponents.HostNameAndPort +\r\n relativeUrl);\r\n }\r\n return relativeUrl;\r\n }\r\n static constructAuthorityUriFromObject(urlObject) {\r\n return new UrlString(urlObject.Protocol +\r\n \"//\" +\r\n urlObject.HostNameAndPort +\r\n \"/\" +\r\n urlObject.PathSegments.join(\"/\"));\r\n }\r\n /**\r\n * Check if the hash of the URL string contains known properties\r\n * @deprecated This API will be removed in a future version\r\n */\r\n static hashContainsKnownProperties(response) {\r\n return !!getDeserializedResponse(response);\r\n }\r\n}\n\n/*! @azure/msal-common v15.13.2 2025-11-19 */\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nconst rawMetdataJSON = {\r\n endpointMetadata: {\r\n \"login.microsoftonline.com\": {\r\n token_endpoint: \"https://login.microsoftonline.com/{tenantid}/oauth2/v2.0/token\",\r\n jwks_uri: \"https://login.microsoftonline.com/{tenantid}/discovery/v2.0/keys\",\r\n issuer: \"https://login.microsoftonline.com/{tenantid}/v2.0\",\r\n authorization_endpoint: \"https://login.microsoftonline.com/{tenantid}/oauth2/v2.0/authorize\",\r\n end_session_endpoint: \"https://login.microsoftonline.com/{tenantid}/oauth2/v2.0/logout\",\r\n },\r\n \"login.chinacloudapi.cn\": {\r\n token_endpoint: \"https://login.chinacloudapi.cn/{tenantid}/oauth2/v2.0/token\",\r\n jwks_uri: \"https://login.chinacloudapi.cn/{tenantid}/discovery/v2.0/keys\",\r\n issuer: \"https://login.partner.microsoftonline.cn/{tenantid}/v2.0\",\r\n authorization_endpoint: \"https://login.chinacloudapi.cn/{tenantid}/oauth2/v2.0/authorize\",\r\n end_session_endpoint: \"https://login.chinacloudapi.cn/{tenantid}/oauth2/v2.0/logout\",\r\n },\r\n \"login.microsoftonline.us\": {\r\n token_endpoint: \"https://login.microsoftonline.us/{tenantid}/oauth2/v2.0/token\",\r\n jwks_uri: \"https://login.microsoftonline.us/{tenantid}/discovery/v2.0/keys\",\r\n issuer: \"https://login.microsoftonline.us/{tenantid}/v2.0\",\r\n authorization_endpoint: \"https://login.microsoftonline.us/{tenantid}/oauth2/v2.0/authorize\",\r\n end_session_endpoint: \"https://login.microsoftonline.us/{tenantid}/oauth2/v2.0/logout\",\r\n },\r\n },\r\n instanceDiscoveryMetadata: {\r\n metadata: [\r\n {\r\n preferred_network: \"login.microsoftonline.com\",\r\n preferred_cache: \"login.windows.net\",\r\n aliases: [\r\n \"login.microsoftonline.com\",\r\n \"login.windows.net\",\r\n \"login.microsoft.com\",\r\n \"sts.windows.net\",\r\n ],\r\n },\r\n {\r\n preferred_network: \"login.partner.microsoftonline.cn\",\r\n preferred_cache: \"login.partner.microsoftonline.cn\",\r\n aliases: [\r\n \"login.partner.microsoftonline.cn\",\r\n \"login.chinacloudapi.cn\",\r\n ],\r\n },\r\n {\r\n preferred_network: \"login.microsoftonline.de\",\r\n preferred_cache: \"login.microsoftonline.de\",\r\n aliases: [\"login.microsoftonline.de\"],\r\n },\r\n {\r\n preferred_network: \"login.microsoftonline.us\",\r\n preferred_cache: \"login.microsoftonline.us\",\r\n aliases: [\r\n \"login.microsoftonline.us\",\r\n \"login.usgovcloudapi.net\",\r\n ],\r\n },\r\n {\r\n preferred_network: \"login-us.microsoftonline.com\",\r\n preferred_cache: \"login-us.microsoftonline.com\",\r\n aliases: [\"login-us.microsoftonline.com\"],\r\n },\r\n ],\r\n },\r\n};\r\nconst EndpointMetadata = rawMetdataJSON.endpointMetadata;\r\nconst InstanceDiscoveryMetadata = rawMetdataJSON.instanceDiscoveryMetadata;\r\nconst InstanceDiscoveryMetadataAliases = new Set();\r\nInstanceDiscoveryMetadata.metadata.forEach((metadataEntry) => {\r\n metadataEntry.aliases.forEach((alias) => {\r\n InstanceDiscoveryMetadataAliases.add(alias);\r\n });\r\n});\r\n/**\r\n * Attempts to get an aliases array from the static authority metadata sources based on the canonical authority host\r\n * @param staticAuthorityOptions\r\n * @param logger\r\n * @returns\r\n */\r\nfunction getAliasesFromStaticSources(staticAuthorityOptions, logger) {\r\n let staticAliases;\r\n const canonicalAuthority = staticAuthorityOptions.canonicalAuthority;\r\n if (canonicalAuthority) {\r\n const authorityHost = new UrlString(canonicalAuthority).getUrlComponents().HostNameAndPort;\r\n staticAliases =\r\n getAliasesFromMetadata(authorityHost, staticAuthorityOptions.cloudDiscoveryMetadata?.metadata, AuthorityMetadataSource.CONFIG, logger) ||\r\n getAliasesFromMetadata(authorityHost, InstanceDiscoveryMetadata.metadata, AuthorityMetadataSource.HARDCODED_VALUES, logger) ||\r\n staticAuthorityOptions.knownAuthorities;\r\n }\r\n return staticAliases || [];\r\n}\r\n/**\r\n * Returns aliases for from the raw cloud discovery metadata passed in\r\n * @param authorityHost\r\n * @param rawCloudDiscoveryMetadata\r\n * @returns\r\n */\r\nfunction getAliasesFromMetadata(authorityHost, cloudDiscoveryMetadata, source, logger) {\r\n logger?.trace(`getAliasesFromMetadata called with source: ${source}`);\r\n if (authorityHost && cloudDiscoveryMetadata) {\r\n const metadata = getCloudDiscoveryMetadataFromNetworkResponse(cloudDiscoveryMetadata, authorityHost);\r\n if (metadata) {\r\n logger?.trace(`getAliasesFromMetadata: found cloud discovery metadata in ${source}, returning aliases`);\r\n return metadata.aliases;\r\n }\r\n else {\r\n logger?.trace(`getAliasesFromMetadata: did not find cloud discovery metadata in ${source}`);\r\n }\r\n }\r\n return null;\r\n}\r\n/**\r\n * Get cloud discovery metadata for common authorities\r\n */\r\nfunction getCloudDiscoveryMetadataFromHardcodedValues(authorityHost) {\r\n const metadata = getCloudDiscoveryMetadataFromNetworkResponse(InstanceDiscoveryMetadata.metadata, authorityHost);\r\n return metadata;\r\n}\r\n/**\r\n * Searches instance discovery network response for the entry that contains the host in the aliases list\r\n * @param response\r\n * @param authority\r\n */\r\nfunction getCloudDiscoveryMetadataFromNetworkResponse(response, authorityHost) {\r\n for (let i = 0; i < response.length; i++) {\r\n const metadata = response[i];\r\n if (metadata.aliases.includes(authorityHost)) {\r\n return metadata;\r\n }\r\n }\r\n return null;\r\n}\n\n/*! @azure/msal-common v15.13.2 2025-11-19 */\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nconst cacheQuotaExceeded = \"cache_quota_exceeded\";\r\nconst cacheErrorUnknown = \"cache_error_unknown\";\n\n/*! @azure/msal-common v15.13.2 2025-11-19 */\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nconst CacheErrorMessages = {\r\n [cacheQuotaExceeded]: \"Exceeded cache storage capacity.\",\r\n [cacheErrorUnknown]: \"Unexpected error occurred when using cache storage.\",\r\n};\r\n/**\r\n * Error thrown when there is an error with the cache\r\n */\r\nclass CacheError extends AuthError {\r\n constructor(errorCode, errorMessage) {\r\n const message = errorMessage ||\r\n (CacheErrorMessages[errorCode]\r\n ? CacheErrorMessages[errorCode]\r\n : CacheErrorMessages[cacheErrorUnknown]);\r\n super(`${errorCode}: ${message}`);\r\n Object.setPrototypeOf(this, CacheError.prototype);\r\n this.name = \"CacheError\";\r\n this.errorCode = errorCode;\r\n this.errorMessage = message;\r\n }\r\n}\r\n/**\r\n * Helper function to wrap browser errors in a CacheError object\r\n * @param e\r\n * @returns\r\n */\r\nfunction createCacheError(e) {\r\n if (!(e instanceof Error)) {\r\n return new CacheError(cacheErrorUnknown);\r\n }\r\n if (e.name === \"QuotaExceededError\" ||\r\n e.name === \"NS_ERROR_DOM_QUOTA_REACHED\" ||\r\n e.message.includes(\"exceeded the quota\")) {\r\n return new CacheError(cacheQuotaExceeded);\r\n }\r\n else {\r\n return new CacheError(e.name, e.message);\r\n }\r\n}\n\n/*! @azure/msal-common v15.13.2 2025-11-19 */\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * Interface class which implement cache storage functions used by MSAL to perform validity checks, and store tokens.\r\n * @internal\r\n */\r\nclass CacheManager {\r\n constructor(clientId, cryptoImpl, logger, performanceClient, staticAuthorityOptions) {\r\n this.clientId = clientId;\r\n this.cryptoImpl = cryptoImpl;\r\n this.commonLogger = logger.clone(name$1, version$1);\r\n this.staticAuthorityOptions = staticAuthorityOptions;\r\n this.performanceClient = performanceClient;\r\n }\r\n /**\r\n * Returns all the accounts in the cache that match the optional filter. If no filter is provided, all accounts are returned.\r\n * @param accountFilter - (Optional) filter to narrow down the accounts returned\r\n * @returns Array of AccountInfo objects in cache\r\n */\r\n getAllAccounts(accountFilter, correlationId) {\r\n return this.buildTenantProfiles(this.getAccountsFilteredBy(accountFilter, correlationId), correlationId, accountFilter);\r\n }\r\n /**\r\n * Gets first tenanted AccountInfo object found based on provided filters\r\n */\r\n getAccountInfoFilteredBy(accountFilter, correlationId) {\r\n if (Object.keys(accountFilter).length === 0 ||\r\n Object.values(accountFilter).every((value) => !value)) {\r\n this.commonLogger.warning(\"getAccountInfoFilteredBy: Account filter is empty or invalid, returning null\");\r\n return null;\r\n }\r\n const allAccounts = this.getAllAccounts(accountFilter, correlationId);\r\n if (allAccounts.length > 1) {\r\n // If one or more accounts are found, prioritize accounts that have an ID token\r\n const sortedAccounts = allAccounts.sort((account) => {\r\n return account.idTokenClaims ? -1 : 1;\r\n });\r\n return sortedAccounts[0];\r\n }\r\n else if (allAccounts.length === 1) {\r\n // If only one account is found, return it regardless of whether a matching ID token was found\r\n return allAccounts[0];\r\n }\r\n else {\r\n return null;\r\n }\r\n }\r\n /**\r\n * Returns a single matching\r\n * @param accountFilter\r\n * @returns\r\n */\r\n getBaseAccountInfo(accountFilter, correlationId) {\r\n const accountEntities = this.getAccountsFilteredBy(accountFilter, correlationId);\r\n if (accountEntities.length > 0) {\r\n return AccountEntity.getAccountInfo(accountEntities[0]);\r\n }\r\n else {\r\n return null;\r\n }\r\n }\r\n /**\r\n * Matches filtered account entities with cached ID tokens that match the tenant profile-specific account filters\r\n * and builds the account info objects from the matching ID token's claims\r\n * @param cachedAccounts\r\n * @param accountFilter\r\n * @returns Array of AccountInfo objects that match account and tenant profile filters\r\n */\r\n buildTenantProfiles(cachedAccounts, correlationId, accountFilter) {\r\n return cachedAccounts.flatMap((accountEntity) => {\r\n return this.getTenantProfilesFromAccountEntity(accountEntity, correlationId, accountFilter?.tenantId, accountFilter);\r\n });\r\n }\r\n getTenantedAccountInfoByFilter(accountInfo, tokenKeys, tenantProfile, correlationId, tenantProfileFilter) {\r\n let tenantedAccountInfo = null;\r\n let idTokenClaims;\r\n if (tenantProfileFilter) {\r\n if (!this.tenantProfileMatchesFilter(tenantProfile, tenantProfileFilter)) {\r\n return null;\r\n }\r\n }\r\n const idToken = this.getIdToken(accountInfo, correlationId, tokenKeys, tenantProfile.tenantId);\r\n if (idToken) {\r\n idTokenClaims = extractTokenClaims(idToken.secret, this.cryptoImpl.base64Decode);\r\n if (!this.idTokenClaimsMatchTenantProfileFilter(idTokenClaims, tenantProfileFilter)) {\r\n // ID token sourced claims don't match so this tenant profile is not a match\r\n return null;\r\n }\r\n }\r\n // Expand tenant profile into account info based on matching tenant profile and if available matching ID token claims\r\n tenantedAccountInfo = updateAccountTenantProfileData(accountInfo, tenantProfile, idTokenClaims, idToken?.secret);\r\n return tenantedAccountInfo;\r\n }\r\n getTenantProfilesFromAccountEntity(accountEntity, correlationId, targetTenantId, tenantProfileFilter) {\r\n const accountInfo = AccountEntity.getAccountInfo(accountEntity);\r\n let searchTenantProfiles = accountInfo.tenantProfiles || new Map();\r\n const tokenKeys = this.getTokenKeys();\r\n // If a tenant ID was provided, only return the tenant profile for that tenant ID if it exists\r\n if (targetTenantId) {\r\n const tenantProfile = searchTenantProfiles.get(targetTenantId);\r\n if (tenantProfile) {\r\n // Reduce search field to just this tenant profile\r\n searchTenantProfiles = new Map([\r\n [targetTenantId, tenantProfile],\r\n ]);\r\n }\r\n else {\r\n // No tenant profile for search tenant ID, return empty array\r\n return [];\r\n }\r\n }\r\n const matchingTenantProfiles = [];\r\n searchTenantProfiles.forEach((tenantProfile) => {\r\n const tenantedAccountInfo = this.getTenantedAccountInfoByFilter(accountInfo, tokenKeys, tenantProfile, correlationId, tenantProfileFilter);\r\n if (tenantedAccountInfo) {\r\n matchingTenantProfiles.push(tenantedAccountInfo);\r\n }\r\n });\r\n return matchingTenantProfiles;\r\n }\r\n tenantProfileMatchesFilter(tenantProfile, tenantProfileFilter) {\r\n if (!!tenantProfileFilter.localAccountId &&\r\n !this.matchLocalAccountIdFromTenantProfile(tenantProfile, tenantProfileFilter.localAccountId)) {\r\n return false;\r\n }\r\n if (!!tenantProfileFilter.name &&\r\n !(tenantProfile.name === tenantProfileFilter.name)) {\r\n return false;\r\n }\r\n if (tenantProfileFilter.isHomeTenant !== undefined &&\r\n !(tenantProfile.isHomeTenant === tenantProfileFilter.isHomeTenant)) {\r\n return false;\r\n }\r\n return true;\r\n }\r\n idTokenClaimsMatchTenantProfileFilter(idTokenClaims, tenantProfileFilter) {\r\n // Tenant Profile filtering\r\n if (tenantProfileFilter) {\r\n if (!!tenantProfileFilter.localAccountId &&\r\n !this.matchLocalAccountIdFromTokenClaims(idTokenClaims, tenantProfileFilter.localAccountId)) {\r\n return false;\r\n }\r\n if (!!tenantProfileFilter.loginHint &&\r\n !this.matchLoginHintFromTokenClaims(idTokenClaims, tenantProfileFilter.loginHint)) {\r\n return false;\r\n }\r\n if (!!tenantProfileFilter.username &&\r\n !this.matchUsername(idTokenClaims.preferred_username, tenantProfileFilter.username)) {\r\n return false;\r\n }\r\n if (!!tenantProfileFilter.name &&\r\n !this.matchName(idTokenClaims, tenantProfileFilter.name)) {\r\n return false;\r\n }\r\n if (!!tenantProfileFilter.sid &&\r\n !this.matchSid(idTokenClaims, tenantProfileFilter.sid)) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n }\r\n /**\r\n * saves a cache record\r\n * @param cacheRecord {CacheRecord}\r\n * @param correlationId {?string} correlation id\r\n * @param kmsi - Keep Me Signed In\r\n * @param storeInCache {?StoreInCache}\r\n */\r\n async saveCacheRecord(cacheRecord, correlationId, kmsi, storeInCache) {\r\n if (!cacheRecord) {\r\n throw createClientAuthError(invalidCacheRecord);\r\n }\r\n try {\r\n if (!!cacheRecord.account) {\r\n await this.setAccount(cacheRecord.account, correlationId, kmsi);\r\n }\r\n if (!!cacheRecord.idToken && storeInCache?.idToken !== false) {\r\n await this.setIdTokenCredential(cacheRecord.idToken, correlationId, kmsi);\r\n }\r\n if (!!cacheRecord.accessToken &&\r\n storeInCache?.accessToken !== false) {\r\n await this.saveAccessToken(cacheRecord.accessToken, correlationId, kmsi);\r\n }\r\n if (!!cacheRecord.refreshToken &&\r\n storeInCache?.refreshToken !== false) {\r\n await this.setRefreshTokenCredential(cacheRecord.refreshToken, correlationId, kmsi);\r\n }\r\n if (!!cacheRecord.appMetadata) {\r\n this.setAppMetadata(cacheRecord.appMetadata, correlationId);\r\n }\r\n }\r\n catch (e) {\r\n this.commonLogger?.error(`CacheManager.saveCacheRecord: failed`);\r\n if (e instanceof AuthError) {\r\n throw e;\r\n }\r\n else {\r\n throw createCacheError(e);\r\n }\r\n }\r\n }\r\n /**\r\n * saves access token credential\r\n * @param credential\r\n */\r\n async saveAccessToken(credential, correlationId, kmsi) {\r\n const accessTokenFilter = {\r\n clientId: credential.clientId,\r\n credentialType: credential.credentialType,\r\n environment: credential.environment,\r\n homeAccountId: credential.homeAccountId,\r\n realm: credential.realm,\r\n tokenType: credential.tokenType,\r\n requestedClaimsHash: credential.requestedClaimsHash,\r\n };\r\n const tokenKeys = this.getTokenKeys();\r\n const currentScopes = ScopeSet.fromString(credential.target);\r\n tokenKeys.accessToken.forEach((key) => {\r\n if (!this.accessTokenKeyMatchesFilter(key, accessTokenFilter, false)) {\r\n return;\r\n }\r\n const tokenEntity = this.getAccessTokenCredential(key, correlationId);\r\n if (tokenEntity &&\r\n this.credentialMatchesFilter(tokenEntity, accessTokenFilter)) {\r\n const tokenScopeSet = ScopeSet.fromString(tokenEntity.target);\r\n if (tokenScopeSet.intersectingScopeSets(currentScopes)) {\r\n this.removeAccessToken(key, correlationId);\r\n }\r\n }\r\n });\r\n await this.setAccessTokenCredential(credential, correlationId, kmsi);\r\n }\r\n /**\r\n * Retrieve account entities matching all provided tenant-agnostic filters; if no filter is set, get all account entities in the cache\r\n * Not checking for casing as keys are all generated in lower case, remember to convert to lower case if object properties are compared\r\n * @param accountFilter - An object containing Account properties to filter by\r\n */\r\n getAccountsFilteredBy(accountFilter, correlationId) {\r\n const allAccountKeys = this.getAccountKeys();\r\n const matchingAccounts = [];\r\n allAccountKeys.forEach((cacheKey) => {\r\n const entity = this.getAccount(cacheKey, correlationId);\r\n // Match base account fields\r\n if (!entity) {\r\n return;\r\n }\r\n if (!!accountFilter.homeAccountId &&\r\n !this.matchHomeAccountId(entity, accountFilter.homeAccountId)) {\r\n return;\r\n }\r\n if (!!accountFilter.username &&\r\n !this.matchUsername(entity.username, accountFilter.username)) {\r\n return;\r\n }\r\n if (!!accountFilter.environment &&\r\n !this.matchEnvironment(entity, accountFilter.environment)) {\r\n return;\r\n }\r\n if (!!accountFilter.realm &&\r\n !this.matchRealm(entity, accountFilter.realm)) {\r\n return;\r\n }\r\n if (!!accountFilter.nativeAccountId &&\r\n !this.matchNativeAccountId(entity, accountFilter.nativeAccountId)) {\r\n return;\r\n }\r\n if (!!accountFilter.authorityType &&\r\n !this.matchAuthorityType(entity, accountFilter.authorityType)) {\r\n return;\r\n }\r\n // If at least one tenant profile matches the tenant profile filter, add the account to the list of matching accounts\r\n const tenantProfileFilter = {\r\n localAccountId: accountFilter?.localAccountId,\r\n name: accountFilter?.name,\r\n };\r\n const matchingTenantProfiles = entity.tenantProfiles?.filter((tenantProfile) => {\r\n return this.tenantProfileMatchesFilter(tenantProfile, tenantProfileFilter);\r\n });\r\n if (matchingTenantProfiles && matchingTenantProfiles.length === 0) {\r\n // No tenant profile for this account matches filter, don't add to list of matching accounts\r\n return;\r\n }\r\n matchingAccounts.push(entity);\r\n });\r\n return matchingAccounts;\r\n }\r\n /**\r\n * Returns whether or not the given credential entity matches the filter\r\n * @param entity\r\n * @param filter\r\n * @returns\r\n */\r\n credentialMatchesFilter(entity, filter) {\r\n if (!!filter.clientId && !this.matchClientId(entity, filter.clientId)) {\r\n return false;\r\n }\r\n if (!!filter.userAssertionHash &&\r\n !this.matchUserAssertionHash(entity, filter.userAssertionHash)) {\r\n return false;\r\n }\r\n /*\r\n * homeAccountId can be undefined, and we want to filter out cached items that have a homeAccountId of \"\"\r\n * because we don't want a client_credential request to return a cached token that has a homeAccountId\r\n */\r\n if (typeof filter.homeAccountId === \"string\" &&\r\n !this.matchHomeAccountId(entity, filter.homeAccountId)) {\r\n return false;\r\n }\r\n if (!!filter.environment &&\r\n !this.matchEnvironment(entity, filter.environment)) {\r\n return false;\r\n }\r\n if (!!filter.realm && !this.matchRealm(entity, filter.realm)) {\r\n return false;\r\n }\r\n if (!!filter.credentialType &&\r\n !this.matchCredentialType(entity, filter.credentialType)) {\r\n return false;\r\n }\r\n if (!!filter.familyId && !this.matchFamilyId(entity, filter.familyId)) {\r\n return false;\r\n }\r\n /*\r\n * idTokens do not have \"target\", target specific refreshTokens do exist for some types of authentication\r\n * Resource specific refresh tokens case will be added when the support is deemed necessary\r\n */\r\n if (!!filter.target && !this.matchTarget(entity, filter.target)) {\r\n return false;\r\n }\r\n // If request OR cached entity has requested Claims Hash, check if they match\r\n if (filter.requestedClaimsHash || entity.requestedClaimsHash) {\r\n // Don't match if either is undefined or they are different\r\n if (entity.requestedClaimsHash !== filter.requestedClaimsHash) {\r\n return false;\r\n }\r\n }\r\n // Access Token with Auth Scheme specific matching\r\n if (entity.credentialType ===\r\n CredentialType.ACCESS_TOKEN_WITH_AUTH_SCHEME) {\r\n if (!!filter.tokenType &&\r\n !this.matchTokenType(entity, filter.tokenType)) {\r\n return false;\r\n }\r\n // KeyId (sshKid) in request must match cached SSH certificate keyId because SSH cert is bound to a specific key\r\n if (filter.tokenType === AuthenticationScheme.SSH) {\r\n if (filter.keyId && !this.matchKeyId(entity, filter.keyId)) {\r\n return false;\r\n }\r\n }\r\n }\r\n return true;\r\n }\r\n /**\r\n * retrieve appMetadata matching all provided filters; if no filter is set, get all appMetadata\r\n * @param filter\r\n */\r\n getAppMetadataFilteredBy(filter) {\r\n const allCacheKeys = this.getKeys();\r\n const matchingAppMetadata = {};\r\n allCacheKeys.forEach((cacheKey) => {\r\n // don't parse any non-appMetadata type cache entities\r\n if (!this.isAppMetadata(cacheKey)) {\r\n return;\r\n }\r\n // Attempt retrieval\r\n const entity = this.getAppMetadata(cacheKey);\r\n if (!entity) {\r\n return;\r\n }\r\n if (!!filter.environment &&\r\n !this.matchEnvironment(entity, filter.environment)) {\r\n return;\r\n }\r\n if (!!filter.clientId &&\r\n !this.matchClientId(entity, filter.clientId)) {\r\n return;\r\n }\r\n matchingAppMetadata[cacheKey] = entity;\r\n });\r\n return matchingAppMetadata;\r\n }\r\n /**\r\n * retrieve authorityMetadata that contains a matching alias\r\n * @param filter\r\n */\r\n getAuthorityMetadataByAlias(host) {\r\n const allCacheKeys = this.getAuthorityMetadataKeys();\r\n let matchedEntity = null;\r\n allCacheKeys.forEach((cacheKey) => {\r\n // don't parse any non-authorityMetadata type cache entities\r\n if (!this.isAuthorityMetadata(cacheKey) ||\r\n cacheKey.indexOf(this.clientId) === -1) {\r\n return;\r\n }\r\n // Attempt retrieval\r\n const entity = this.getAuthorityMetadata(cacheKey);\r\n if (!entity) {\r\n return;\r\n }\r\n if (entity.aliases.indexOf(host) === -1) {\r\n return;\r\n }\r\n matchedEntity = entity;\r\n });\r\n return matchedEntity;\r\n }\r\n /**\r\n * Removes all accounts and related tokens from cache.\r\n */\r\n removeAllAccounts(correlationId) {\r\n const accounts = this.getAllAccounts({}, correlationId);\r\n accounts.forEach((account) => {\r\n this.removeAccount(account, correlationId);\r\n });\r\n }\r\n /**\r\n * Removes the account and related tokens for a given account key\r\n * @param account\r\n */\r\n removeAccount(account, correlationId) {\r\n this.removeAccountContext(account, correlationId);\r\n const accountKeys = this.getAccountKeys();\r\n const keyFilter = (key) => {\r\n return (key.includes(account.homeAccountId) &&\r\n key.includes(account.environment));\r\n };\r\n accountKeys.filter(keyFilter).forEach((key) => {\r\n this.removeItem(key, correlationId);\r\n this.performanceClient.incrementFields({ accountsRemoved: 1 }, correlationId);\r\n });\r\n }\r\n /**\r\n * Removes credentials associated with the provided account\r\n * @param account\r\n */\r\n removeAccountContext(account, correlationId) {\r\n const allTokenKeys = this.getTokenKeys();\r\n const keyFilter = (key) => {\r\n return (key.includes(account.homeAccountId) &&\r\n key.includes(account.environment));\r\n };\r\n allTokenKeys.idToken.filter(keyFilter).forEach((key) => {\r\n this.removeIdToken(key, correlationId);\r\n });\r\n allTokenKeys.accessToken.filter(keyFilter).forEach((key) => {\r\n this.removeAccessToken(key, correlationId);\r\n });\r\n allTokenKeys.refreshToken.filter(keyFilter).forEach((key) => {\r\n this.removeRefreshToken(key, correlationId);\r\n });\r\n }\r\n /**\r\n * Removes accessToken from the cache\r\n * @param key\r\n * @param correlationId\r\n */\r\n removeAccessToken(key, correlationId) {\r\n const credential = this.getAccessTokenCredential(key, correlationId);\r\n this.removeItem(key, correlationId);\r\n this.performanceClient.incrementFields({ accessTokensRemoved: 1 }, correlationId);\r\n if (!credential ||\r\n credential.credentialType.toLowerCase() !==\r\n CredentialType.ACCESS_TOKEN_WITH_AUTH_SCHEME.toLowerCase() ||\r\n credential.tokenType !== AuthenticationScheme.POP) {\r\n // If the credential is not a PoP token, we can return\r\n return;\r\n }\r\n // Remove Token Binding Key from key store for PoP Tokens Credentials\r\n const kid = credential.keyId;\r\n if (kid) {\r\n void this.cryptoImpl.removeTokenBindingKey(kid).catch(() => {\r\n this.commonLogger.error(`Failed to remove token binding key ${kid}`, correlationId);\r\n this.performanceClient?.incrementFields({ removeTokenBindingKeyFailure: 1 }, correlationId);\r\n });\r\n }\r\n }\r\n /**\r\n * Removes all app metadata objects from cache.\r\n */\r\n removeAppMetadata(correlationId) {\r\n const allCacheKeys = this.getKeys();\r\n allCacheKeys.forEach((cacheKey) => {\r\n if (this.isAppMetadata(cacheKey)) {\r\n this.removeItem(cacheKey, correlationId);\r\n }\r\n });\r\n return true;\r\n }\r\n /**\r\n * Retrieve IdTokenEntity from cache\r\n * @param account {AccountInfo}\r\n * @param tokenKeys {?TokenKeys}\r\n * @param targetRealm {?string}\r\n * @param performanceClient {?IPerformanceClient}\r\n * @param correlationId {?string}\r\n */\r\n getIdToken(account, correlationId, tokenKeys, targetRealm, performanceClient) {\r\n this.commonLogger.trace(\"CacheManager - getIdToken called\");\r\n const idTokenFilter = {\r\n homeAccountId: account.homeAccountId,\r\n environment: account.environment,\r\n credentialType: CredentialType.ID_TOKEN,\r\n clientId: this.clientId,\r\n realm: targetRealm,\r\n };\r\n const idTokenMap = this.getIdTokensByFilter(idTokenFilter, correlationId, tokenKeys);\r\n const numIdTokens = idTokenMap.size;\r\n if (numIdTokens < 1) {\r\n this.commonLogger.info(\"CacheManager:getIdToken - No token found\");\r\n return null;\r\n }\r\n else if (numIdTokens > 1) {\r\n let tokensToBeRemoved = idTokenMap;\r\n // Multiple tenant profiles and no tenant specified, pick home account\r\n if (!targetRealm) {\r\n const homeIdTokenMap = new Map();\r\n idTokenMap.forEach((idToken, key) => {\r\n if (idToken.realm === account.tenantId) {\r\n homeIdTokenMap.set(key, idToken);\r\n }\r\n });\r\n const numHomeIdTokens = homeIdTokenMap.size;\r\n if (numHomeIdTokens < 1) {\r\n this.commonLogger.info(\"CacheManager:getIdToken - Multiple ID tokens found for account but none match account entity tenant id, returning first result\");\r\n return idTokenMap.values().next().value;\r\n }\r\n else if (numHomeIdTokens === 1) {\r\n this.commonLogger.info(\"CacheManager:getIdToken - Multiple ID tokens found for account, defaulting to home tenant profile\");\r\n return homeIdTokenMap.values().next().value;\r\n }\r\n else {\r\n // Multiple ID tokens for home tenant profile, remove all and return null\r\n tokensToBeRemoved = homeIdTokenMap;\r\n }\r\n }\r\n // Multiple tokens for a single tenant profile, remove all and return null\r\n this.commonLogger.info(\"CacheManager:getIdToken - Multiple matching ID tokens found, clearing them\");\r\n tokensToBeRemoved.forEach((idToken, key) => {\r\n this.removeIdToken(key, correlationId);\r\n });\r\n if (performanceClient && correlationId) {\r\n performanceClient.addFields({ multiMatchedID: idTokenMap.size }, correlationId);\r\n }\r\n return null;\r\n }\r\n this.commonLogger.info(\"CacheManager:getIdToken - Returning ID token\");\r\n return idTokenMap.values().next().value;\r\n }\r\n /**\r\n * Gets all idTokens matching the given filter\r\n * @param filter\r\n * @returns\r\n */\r\n getIdTokensByFilter(filter, correlationId, tokenKeys) {\r\n const idTokenKeys = (tokenKeys && tokenKeys.idToken) || this.getTokenKeys().idToken;\r\n const idTokens = new Map();\r\n idTokenKeys.forEach((key) => {\r\n if (!this.idTokenKeyMatchesFilter(key, {\r\n clientId: this.clientId,\r\n ...filter,\r\n })) {\r\n return;\r\n }\r\n const idToken = this.getIdTokenCredential(key, correlationId);\r\n if (idToken && this.credentialMatchesFilter(idToken, filter)) {\r\n idTokens.set(key, idToken);\r\n }\r\n });\r\n return idTokens;\r\n }\r\n /**\r\n * Validate the cache key against filter before retrieving and parsing cache value\r\n * @param key\r\n * @param filter\r\n * @returns\r\n */\r\n idTokenKeyMatchesFilter(inputKey, filter) {\r\n const key = inputKey.toLowerCase();\r\n if (filter.clientId &&\r\n key.indexOf(filter.clientId.toLowerCase()) === -1) {\r\n return false;\r\n }\r\n if (filter.homeAccountId &&\r\n key.indexOf(filter.homeAccountId.toLowerCase()) === -1) {\r\n return false;\r\n }\r\n return true;\r\n }\r\n /**\r\n * Removes idToken from the cache\r\n * @param key\r\n */\r\n removeIdToken(key, correlationId) {\r\n this.removeItem(key, correlationId);\r\n }\r\n /**\r\n * Removes refresh token from the cache\r\n * @param key\r\n */\r\n removeRefreshToken(key, correlationId) {\r\n this.removeItem(key, correlationId);\r\n }\r\n /**\r\n * Retrieve AccessTokenEntity from cache\r\n * @param account {AccountInfo}\r\n * @param request {BaseAuthRequest}\r\n * @param correlationId {?string}\r\n * @param tokenKeys {?TokenKeys}\r\n * @param performanceClient {?IPerformanceClient}\r\n */\r\n getAccessToken(account, request, tokenKeys, targetRealm) {\r\n const correlationId = request.correlationId;\r\n this.commonLogger.trace(\"CacheManager - getAccessToken called\", correlationId);\r\n const scopes = ScopeSet.createSearchScopes(request.scopes);\r\n const authScheme = request.authenticationScheme || AuthenticationScheme.BEARER;\r\n /*\r\n * Distinguish between Bearer and PoP/SSH token cache types\r\n * Cast to lowercase to handle \"bearer\" from ADFS\r\n */\r\n const credentialType = authScheme.toLowerCase() !==\r\n AuthenticationScheme.BEARER.toLowerCase()\r\n ? CredentialType.ACCESS_TOKEN_WITH_AUTH_SCHEME\r\n : CredentialType.ACCESS_TOKEN;\r\n const accessTokenFilter = {\r\n homeAccountId: account.homeAccountId,\r\n environment: account.environment,\r\n credentialType: credentialType,\r\n clientId: this.clientId,\r\n realm: targetRealm || account.tenantId,\r\n target: scopes,\r\n tokenType: authScheme,\r\n keyId: request.sshKid,\r\n requestedClaimsHash: request.requestedClaimsHash,\r\n };\r\n const accessTokenKeys = (tokenKeys && tokenKeys.accessToken) ||\r\n this.getTokenKeys().accessToken;\r\n const accessTokens = [];\r\n accessTokenKeys.forEach((key) => {\r\n // Validate key\r\n if (this.accessTokenKeyMatchesFilter(key, accessTokenFilter, true)) {\r\n const accessToken = this.getAccessTokenCredential(key, correlationId);\r\n // Validate value\r\n if (accessToken &&\r\n this.credentialMatchesFilter(accessToken, accessTokenFilter)) {\r\n accessTokens.push(accessToken);\r\n }\r\n }\r\n });\r\n const numAccessTokens = accessTokens.length;\r\n if (numAccessTokens < 1) {\r\n this.commonLogger.info(\"CacheManager:getAccessToken - No token found\", correlationId);\r\n return null;\r\n }\r\n else if (numAccessTokens > 1) {\r\n this.commonLogger.info(\"CacheManager:getAccessToken - Multiple access tokens found, clearing them\", correlationId);\r\n accessTokens.forEach((accessToken) => {\r\n this.removeAccessToken(this.generateCredentialKey(accessToken), correlationId);\r\n });\r\n this.performanceClient.addFields({ multiMatchedAT: accessTokens.length }, correlationId);\r\n return null;\r\n }\r\n this.commonLogger.info(\"CacheManager:getAccessToken - Returning access token\", correlationId);\r\n return accessTokens[0];\r\n }\r\n /**\r\n * Validate the cache key against filter before retrieving and parsing cache value\r\n * @param key\r\n * @param filter\r\n * @param keyMustContainAllScopes\r\n * @returns\r\n */\r\n accessTokenKeyMatchesFilter(inputKey, filter, keyMustContainAllScopes) {\r\n const key = inputKey.toLowerCase();\r\n if (filter.clientId &&\r\n key.indexOf(filter.clientId.toLowerCase()) === -1) {\r\n return false;\r\n }\r\n if (filter.homeAccountId &&\r\n key.indexOf(filter.homeAccountId.toLowerCase()) === -1) {\r\n return false;\r\n }\r\n if (filter.realm && key.indexOf(filter.realm.toLowerCase()) === -1) {\r\n return false;\r\n }\r\n if (filter.requestedClaimsHash &&\r\n key.indexOf(filter.requestedClaimsHash.toLowerCase()) === -1) {\r\n return false;\r\n }\r\n if (filter.target) {\r\n const scopes = filter.target.asArray();\r\n for (let i = 0; i < scopes.length; i++) {\r\n if (keyMustContainAllScopes &&\r\n !key.includes(scopes[i].toLowerCase())) {\r\n // When performing a cache lookup a missing scope would be a cache miss\r\n return false;\r\n }\r\n else if (!keyMustContainAllScopes &&\r\n key.includes(scopes[i].toLowerCase())) {\r\n // When performing a cache write, any token with a subset of requested scopes should be replaced\r\n return true;\r\n }\r\n }\r\n }\r\n return true;\r\n }\r\n /**\r\n * Gets all access tokens matching the filter\r\n * @param filter\r\n * @returns\r\n */\r\n getAccessTokensByFilter(filter, correlationId) {\r\n const tokenKeys = this.getTokenKeys();\r\n const accessTokens = [];\r\n tokenKeys.accessToken.forEach((key) => {\r\n if (!this.accessTokenKeyMatchesFilter(key, filter, true)) {\r\n return;\r\n }\r\n const accessToken = this.getAccessTokenCredential(key, correlationId);\r\n if (accessToken &&\r\n this.credentialMatchesFilter(accessToken, filter)) {\r\n accessTokens.push(accessToken);\r\n }\r\n });\r\n return accessTokens;\r\n }\r\n /**\r\n * Helper to retrieve the appropriate refresh token from cache\r\n * @param account {AccountInfo}\r\n * @param familyRT {boolean}\r\n * @param correlationId {?string}\r\n * @param tokenKeys {?TokenKeys}\r\n * @param performanceClient {?IPerformanceClient}\r\n */\r\n getRefreshToken(account, familyRT, correlationId, tokenKeys, performanceClient) {\r\n this.commonLogger.trace(\"CacheManager - getRefreshToken called\");\r\n const id = familyRT ? THE_FAMILY_ID : undefined;\r\n const refreshTokenFilter = {\r\n homeAccountId: account.homeAccountId,\r\n environment: account.environment,\r\n credentialType: CredentialType.REFRESH_TOKEN,\r\n clientId: this.clientId,\r\n familyId: id,\r\n };\r\n const refreshTokenKeys = (tokenKeys && tokenKeys.refreshToken) ||\r\n this.getTokenKeys().refreshToken;\r\n const refreshTokens = [];\r\n refreshTokenKeys.forEach((key) => {\r\n // Validate key\r\n if (this.refreshTokenKeyMatchesFilter(key, refreshTokenFilter)) {\r\n const refreshToken = this.getRefreshTokenCredential(key, correlationId);\r\n // Validate value\r\n if (refreshToken &&\r\n this.credentialMatchesFilter(refreshToken, refreshTokenFilter)) {\r\n refreshTokens.push(refreshToken);\r\n }\r\n }\r\n });\r\n const numRefreshTokens = refreshTokens.length;\r\n if (numRefreshTokens < 1) {\r\n this.commonLogger.info(\"CacheManager:getRefreshToken - No refresh token found.\");\r\n return null;\r\n }\r\n // address the else case after remove functions address environment aliases\r\n if (numRefreshTokens > 1 && performanceClient && correlationId) {\r\n performanceClient.addFields({ multiMatchedRT: numRefreshTokens }, correlationId);\r\n }\r\n this.commonLogger.info(\"CacheManager:getRefreshToken - returning refresh token\");\r\n return refreshTokens[0];\r\n }\r\n /**\r\n * Validate the cache key against filter before retrieving and parsing cache value\r\n * @param key\r\n * @param filter\r\n */\r\n refreshTokenKeyMatchesFilter(inputKey, filter) {\r\n const key = inputKey.toLowerCase();\r\n if (filter.familyId &&\r\n key.indexOf(filter.familyId.toLowerCase()) === -1) {\r\n return false;\r\n }\r\n // If familyId is used, clientId is not in the key\r\n if (!filter.familyId &&\r\n filter.clientId &&\r\n key.indexOf(filter.clientId.toLowerCase()) === -1) {\r\n return false;\r\n }\r\n if (filter.homeAccountId &&\r\n key.indexOf(filter.homeAccountId.toLowerCase()) === -1) {\r\n return false;\r\n }\r\n return true;\r\n }\r\n /**\r\n * Retrieve AppMetadataEntity from cache\r\n */\r\n readAppMetadataFromCache(environment) {\r\n const appMetadataFilter = {\r\n environment,\r\n clientId: this.clientId,\r\n };\r\n const appMetadata = this.getAppMetadataFilteredBy(appMetadataFilter);\r\n const appMetadataEntries = Object.keys(appMetadata).map((key) => appMetadata[key]);\r\n const numAppMetadata = appMetadataEntries.length;\r\n if (numAppMetadata < 1) {\r\n return null;\r\n }\r\n else if (numAppMetadata > 1) {\r\n throw createClientAuthError(multipleMatchingAppMetadata);\r\n }\r\n return appMetadataEntries[0];\r\n }\r\n /**\r\n * Return the family_id value associated with FOCI\r\n * @param environment\r\n * @param clientId\r\n */\r\n isAppMetadataFOCI(environment) {\r\n const appMetadata = this.readAppMetadataFromCache(environment);\r\n return !!(appMetadata && appMetadata.familyId === THE_FAMILY_ID);\r\n }\r\n /**\r\n * helper to match account ids\r\n * @param value\r\n * @param homeAccountId\r\n */\r\n matchHomeAccountId(entity, homeAccountId) {\r\n return !!(typeof entity.homeAccountId === \"string\" &&\r\n homeAccountId === entity.homeAccountId);\r\n }\r\n /**\r\n * helper to match account ids\r\n * @param entity\r\n * @param localAccountId\r\n * @returns\r\n */\r\n matchLocalAccountIdFromTokenClaims(tokenClaims, localAccountId) {\r\n const idTokenLocalAccountId = tokenClaims.oid || tokenClaims.sub;\r\n return localAccountId === idTokenLocalAccountId;\r\n }\r\n matchLocalAccountIdFromTenantProfile(tenantProfile, localAccountId) {\r\n return tenantProfile.localAccountId === localAccountId;\r\n }\r\n /**\r\n * helper to match names\r\n * @param entity\r\n * @param name\r\n * @returns true if the downcased name properties are present and match in the filter and the entity\r\n */\r\n matchName(claims, name) {\r\n return !!(name.toLowerCase() === claims.name?.toLowerCase());\r\n }\r\n /**\r\n * helper to match usernames\r\n * @param entity\r\n * @param username\r\n * @returns\r\n */\r\n matchUsername(cachedUsername, filterUsername) {\r\n return !!(cachedUsername &&\r\n typeof cachedUsername === \"string\" &&\r\n filterUsername?.toLowerCase() === cachedUsername.toLowerCase());\r\n }\r\n /**\r\n * helper to match assertion\r\n * @param value\r\n * @param oboAssertion\r\n */\r\n matchUserAssertionHash(entity, userAssertionHash) {\r\n return !!(entity.userAssertionHash &&\r\n userAssertionHash === entity.userAssertionHash);\r\n }\r\n /**\r\n * helper to match environment\r\n * @param value\r\n * @param environment\r\n */\r\n matchEnvironment(entity, environment) {\r\n // Check static authority options first for cases where authority metadata has not been resolved and cached yet\r\n if (this.staticAuthorityOptions) {\r\n const staticAliases = getAliasesFromStaticSources(this.staticAuthorityOptions, this.commonLogger);\r\n if (staticAliases.includes(environment) &&\r\n staticAliases.includes(entity.environment)) {\r\n return true;\r\n }\r\n }\r\n // Query metadata cache if no static authority configuration has aliases that match enviroment\r\n const cloudMetadata = this.getAuthorityMetadataByAlias(environment);\r\n if (cloudMetadata &&\r\n cloudMetadata.aliases.indexOf(entity.environment) > -1) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n /**\r\n * helper to match credential type\r\n * @param entity\r\n * @param credentialType\r\n */\r\n matchCredentialType(entity, credentialType) {\r\n return (entity.credentialType &&\r\n credentialType.toLowerCase() === entity.credentialType.toLowerCase());\r\n }\r\n /**\r\n * helper to match client ids\r\n * @param entity\r\n * @param clientId\r\n */\r\n matchClientId(entity, clientId) {\r\n return !!(entity.clientId && clientId === entity.clientId);\r\n }\r\n /**\r\n * helper to match family ids\r\n * @param entity\r\n * @param familyId\r\n */\r\n matchFamilyId(entity, familyId) {\r\n return !!(entity.familyId && familyId === entity.familyId);\r\n }\r\n /**\r\n * helper to match realm\r\n * @param entity\r\n * @param realm\r\n */\r\n matchRealm(entity, realm) {\r\n return !!(entity.realm?.toLowerCase() === realm.toLowerCase());\r\n }\r\n /**\r\n * helper to match nativeAccountId\r\n * @param entity\r\n * @param nativeAccountId\r\n * @returns boolean indicating the match result\r\n */\r\n matchNativeAccountId(entity, nativeAccountId) {\r\n return !!(entity.nativeAccountId && nativeAccountId === entity.nativeAccountId);\r\n }\r\n /**\r\n * helper to match loginHint which can be either:\r\n * 1. login_hint ID token claim\r\n * 2. username in cached account object\r\n * 3. upn in ID token claims\r\n * @param entity\r\n * @param loginHint\r\n * @returns\r\n */\r\n matchLoginHintFromTokenClaims(tokenClaims, loginHint) {\r\n if (tokenClaims.login_hint === loginHint) {\r\n return true;\r\n }\r\n if (tokenClaims.preferred_username === loginHint) {\r\n return true;\r\n }\r\n if (tokenClaims.upn === loginHint) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n /**\r\n * Helper to match sid\r\n * @param entity\r\n * @param sid\r\n * @returns true if the sid claim is present and matches the filter\r\n */\r\n matchSid(idTokenClaims, sid) {\r\n return idTokenClaims.sid === sid;\r\n }\r\n matchAuthorityType(entity, authorityType) {\r\n return !!(entity.authorityType &&\r\n authorityType.toLowerCase() === entity.authorityType.toLowerCase());\r\n }\r\n /**\r\n * Returns true if the target scopes are a subset of the current entity's scopes, false otherwise.\r\n * @param entity\r\n * @param target\r\n */\r\n matchTarget(entity, target) {\r\n const isNotAccessTokenCredential = entity.credentialType !== CredentialType.ACCESS_TOKEN &&\r\n entity.credentialType !==\r\n CredentialType.ACCESS_TOKEN_WITH_AUTH_SCHEME;\r\n if (isNotAccessTokenCredential || !entity.target) {\r\n return false;\r\n }\r\n const entityScopeSet = ScopeSet.fromString(entity.target);\r\n return entityScopeSet.containsScopeSet(target);\r\n }\r\n /**\r\n * Returns true if the credential's tokenType or Authentication Scheme matches the one in the request, false otherwise\r\n * @param entity\r\n * @param tokenType\r\n */\r\n matchTokenType(entity, tokenType) {\r\n return !!(entity.tokenType && entity.tokenType === tokenType);\r\n }\r\n /**\r\n * Returns true if the credential's keyId matches the one in the request, false otherwise\r\n * @param entity\r\n * @param keyId\r\n */\r\n matchKeyId(entity, keyId) {\r\n return !!(entity.keyId && entity.keyId === keyId);\r\n }\r\n /**\r\n * returns if a given cache entity is of the type appmetadata\r\n * @param key\r\n */\r\n isAppMetadata(key) {\r\n return key.indexOf(APP_METADATA) !== -1;\r\n }\r\n /**\r\n * returns if a given cache entity is of the type authoritymetadata\r\n * @param key\r\n */\r\n isAuthorityMetadata(key) {\r\n return key.indexOf(AUTHORITY_METADATA_CONSTANTS.CACHE_KEY) !== -1;\r\n }\r\n /**\r\n * returns cache key used for cloud instance metadata\r\n */\r\n generateAuthorityMetadataCacheKey(authority) {\r\n return `${AUTHORITY_METADATA_CONSTANTS.CACHE_KEY}-${this.clientId}-${authority}`;\r\n }\r\n /**\r\n * Helper to convert serialized data to object\r\n * @param obj\r\n * @param json\r\n */\r\n static toObject(obj, json) {\r\n for (const propertyName in json) {\r\n obj[propertyName] = json[propertyName];\r\n }\r\n return obj;\r\n }\r\n}\r\n/** @internal */\r\nclass DefaultStorageClass extends CacheManager {\r\n async setAccount() {\r\n throw createClientAuthError(methodNotImplemented);\r\n }\r\n getAccount() {\r\n throw createClientAuthError(methodNotImplemented);\r\n }\r\n async setIdTokenCredential() {\r\n throw createClientAuthError(methodNotImplemented);\r\n }\r\n getIdTokenCredential() {\r\n throw createClientAuthError(methodNotImplemented);\r\n }\r\n async setAccessTokenCredential() {\r\n throw createClientAuthError(methodNotImplemented);\r\n }\r\n getAccessTokenCredential() {\r\n throw createClientAuthError(methodNotImplemented);\r\n }\r\n async setRefreshTokenCredential() {\r\n throw createClientAuthError(methodNotImplemented);\r\n }\r\n getRefreshTokenCredential() {\r\n throw createClientAuthError(methodNotImplemented);\r\n }\r\n setAppMetadata() {\r\n throw createClientAuthError(methodNotImplemented);\r\n }\r\n getAppMetadata() {\r\n throw createClientAuthError(methodNotImplemented);\r\n }\r\n setServerTelemetry() {\r\n throw createClientAuthError(methodNotImplemented);\r\n }\r\n getServerTelemetry() {\r\n throw createClientAuthError(methodNotImplemented);\r\n }\r\n setAuthorityMetadata() {\r\n throw createClientAuthError(methodNotImplemented);\r\n }\r\n getAuthorityMetadata() {\r\n throw createClientAuthError(methodNotImplemented);\r\n }\r\n getAuthorityMetadataKeys() {\r\n throw createClientAuthError(methodNotImplemented);\r\n }\r\n setThrottlingCache() {\r\n throw createClientAuthError(methodNotImplemented);\r\n }\r\n getThrottlingCache() {\r\n throw createClientAuthError(methodNotImplemented);\r\n }\r\n removeItem() {\r\n throw createClientAuthError(methodNotImplemented);\r\n }\r\n getKeys() {\r\n throw createClientAuthError(methodNotImplemented);\r\n }\r\n getAccountKeys() {\r\n throw createClientAuthError(methodNotImplemented);\r\n }\r\n getTokenKeys() {\r\n throw createClientAuthError(methodNotImplemented);\r\n }\r\n generateCredentialKey() {\r\n throw createClientAuthError(methodNotImplemented);\r\n }\r\n generateAccountKey() {\r\n throw createClientAuthError(methodNotImplemented);\r\n }\r\n}\n\n/*! @azure/msal-common v15.13.2 2025-11-19 */\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * Enumeration of operations that are instrumented by have their performance measured by the PerformanceClient.\r\n *\r\n * @export\r\n * @enum {number}\r\n */\r\nconst PerformanceEvents = {\r\n /**\r\n * acquireTokenByCode API (msal-browser and msal-node).\r\n * Used to acquire tokens by trading an authorization code against the token endpoint.\r\n */\r\n AcquireTokenByCode: \"acquireTokenByCode\",\r\n /**\r\n * acquireTokenByRefreshToken API (msal-browser and msal-node).\r\n * Used to renew an access token using a refresh token against the token endpoint.\r\n */\r\n AcquireTokenByRefreshToken: \"acquireTokenByRefreshToken\",\r\n /**\r\n * acquireTokenSilent API (msal-browser and msal-node).\r\n * Used to silently acquire a new access token (from the cache or the network).\r\n */\r\n AcquireTokenSilent: \"acquireTokenSilent\",\r\n /**\r\n * acquireTokenSilentAsync (msal-browser).\r\n * Internal API for acquireTokenSilent.\r\n */\r\n AcquireTokenSilentAsync: \"acquireTokenSilentAsync\",\r\n /**\r\n * acquireTokenPopup (msal-browser).\r\n * Used to acquire a new access token interactively through pop ups\r\n */\r\n AcquireTokenPopup: \"acquireTokenPopup\",\r\n /**\r\n * acquireTokenPreRedirect (msal-browser).\r\n * First part of the redirect flow.\r\n * Used to acquire a new access token interactively through redirects.\r\n */\r\n AcquireTokenPreRedirect: \"acquireTokenPreRedirect\",\r\n /**\r\n * acquireTokenRedirect (msal-browser).\r\n * Second part of the redirect flow.\r\n * Used to acquire a new access token interactively through redirects.\r\n */\r\n AcquireTokenRedirect: \"acquireTokenRedirect\",\r\n /**\r\n * getPublicKeyThumbprint API in CryptoOpts class (msal-browser).\r\n * Used to generate a public/private keypair and generate a public key thumbprint for pop requests.\r\n */\r\n CryptoOptsGetPublicKeyThumbprint: \"cryptoOptsGetPublicKeyThumbprint\",\r\n /**\r\n * signJwt API in CryptoOpts class (msal-browser).\r\n * Used to signed a pop token.\r\n */\r\n CryptoOptsSignJwt: \"cryptoOptsSignJwt\",\r\n /**\r\n * acquireToken API in the SilentCacheClient class (msal-browser).\r\n * Used to read access tokens from the cache.\r\n */\r\n SilentCacheClientAcquireToken: \"silentCacheClientAcquireToken\",\r\n /**\r\n * acquireToken API in the SilentIframeClient class (msal-browser).\r\n * Used to acquire a new set of tokens from the authorize endpoint in a hidden iframe.\r\n */\r\n SilentIframeClientAcquireToken: \"silentIframeClientAcquireToken\",\r\n AwaitConcurrentIframe: \"awaitConcurrentIframe\",\r\n /**\r\n * acquireToken API in SilentRereshClient (msal-browser).\r\n * Used to acquire a new set of tokens from the token endpoint using a refresh token.\r\n */\r\n SilentRefreshClientAcquireToken: \"silentRefreshClientAcquireToken\",\r\n /**\r\n * ssoSilent API (msal-browser).\r\n * Used to silently acquire an authorization code and set of tokens using a hidden iframe.\r\n */\r\n SsoSilent: \"ssoSilent\",\r\n /**\r\n * getDiscoveredAuthority API in StandardInteractionClient class (msal-browser).\r\n * Used to load authority metadata for a request.\r\n */\r\n StandardInteractionClientGetDiscoveredAuthority: \"standardInteractionClientGetDiscoveredAuthority\",\r\n /**\r\n * acquireToken APIs in msal-browser.\r\n * Used to make an /authorize endpoint call with native brokering enabled.\r\n */\r\n FetchAccountIdWithNativeBroker: \"fetchAccountIdWithNativeBroker\",\r\n /**\r\n * acquireToken API in NativeInteractionClient class (msal-browser).\r\n * Used to acquire a token from Native component when native brokering is enabled.\r\n */\r\n NativeInteractionClientAcquireToken: \"nativeInteractionClientAcquireToken\",\r\n /**\r\n * Time spent creating default headers for requests to token endpoint\r\n */\r\n BaseClientCreateTokenRequestHeaders: \"baseClientCreateTokenRequestHeaders\",\r\n /**\r\n * Time spent sending/waiting for the response of a request to the token endpoint\r\n */\r\n NetworkClientSendPostRequestAsync: \"networkClientSendPostRequestAsync\",\r\n RefreshTokenClientExecutePostToTokenEndpoint: \"refreshTokenClientExecutePostToTokenEndpoint\",\r\n AuthorizationCodeClientExecutePostToTokenEndpoint: \"authorizationCodeClientExecutePostToTokenEndpoint\",\r\n /**\r\n * Used to measure the time taken for completing embedded-broker handshake (PW-Broker).\r\n */\r\n BrokerHandhshake: \"brokerHandshake\",\r\n /**\r\n * acquireTokenByRefreshToken API in BrokerClientApplication (PW-Broker) .\r\n */\r\n AcquireTokenByRefreshTokenInBroker: \"acquireTokenByRefreshTokenInBroker\",\r\n /**\r\n * Time taken for token acquisition by broker\r\n */\r\n AcquireTokenByBroker: \"acquireTokenByBroker\",\r\n /**\r\n * Time spent on the network for refresh token acquisition\r\n */\r\n RefreshTokenClientExecuteTokenRequest: \"refreshTokenClientExecuteTokenRequest\",\r\n /**\r\n * Time taken for acquiring refresh token , records RT size\r\n */\r\n RefreshTokenClientAcquireToken: \"refreshTokenClientAcquireToken\",\r\n /**\r\n * Time taken for acquiring cached refresh token\r\n */\r\n RefreshTokenClientAcquireTokenWithCachedRefreshToken: \"refreshTokenClientAcquireTokenWithCachedRefreshToken\",\r\n /**\r\n * acquireTokenByRefreshToken API in RefreshTokenClient (msal-common).\r\n */\r\n RefreshTokenClientAcquireTokenByRefreshToken: \"refreshTokenClientAcquireTokenByRefreshToken\",\r\n /**\r\n * Helper function to create token request body in RefreshTokenClient (msal-common).\r\n */\r\n RefreshTokenClientCreateTokenRequestBody: \"refreshTokenClientCreateTokenRequestBody\",\r\n /**\r\n * acquireTokenFromCache (msal-browser).\r\n * Internal API for acquiring token from cache\r\n */\r\n AcquireTokenFromCache: \"acquireTokenFromCache\",\r\n SilentFlowClientAcquireCachedToken: \"silentFlowClientAcquireCachedToken\",\r\n SilentFlowClientGenerateResultFromCacheRecord: \"silentFlowClientGenerateResultFromCacheRecord\",\r\n /**\r\n * acquireTokenBySilentIframe (msal-browser).\r\n * Internal API for acquiring token by silent Iframe\r\n */\r\n AcquireTokenBySilentIframe: \"acquireTokenBySilentIframe\",\r\n /**\r\n * Internal API for initializing base request in BaseInteractionClient (msal-browser)\r\n */\r\n InitializeBaseRequest: \"initializeBaseRequest\",\r\n /**\r\n * Internal API for initializing silent request in SilentCacheClient (msal-browser)\r\n */\r\n InitializeSilentRequest: \"initializeSilentRequest\",\r\n InitializeClientApplication: \"initializeClientApplication\",\r\n InitializeCache: \"initializeCache\",\r\n /**\r\n * Helper function in SilentIframeClient class (msal-browser).\r\n */\r\n SilentIframeClientTokenHelper: \"silentIframeClientTokenHelper\",\r\n /**\r\n * SilentHandler\r\n */\r\n SilentHandlerInitiateAuthRequest: \"silentHandlerInitiateAuthRequest\",\r\n SilentHandlerMonitorIframeForHash: \"silentHandlerMonitorIframeForHash\",\r\n SilentHandlerLoadFrame: \"silentHandlerLoadFrame\",\r\n SilentHandlerLoadFrameSync: \"silentHandlerLoadFrameSync\",\r\n /**\r\n * Helper functions in StandardInteractionClient class (msal-browser)\r\n */\r\n StandardInteractionClientCreateAuthCodeClient: \"standardInteractionClientCreateAuthCodeClient\",\r\n StandardInteractionClientGetClientConfiguration: \"standardInteractionClientGetClientConfiguration\",\r\n StandardInteractionClientInitializeAuthorizationRequest: \"standardInteractionClientInitializeAuthorizationRequest\",\r\n /**\r\n * getAuthCodeUrl API (msal-browser and msal-node).\r\n */\r\n GetAuthCodeUrl: \"getAuthCodeUrl\",\r\n GetStandardParams: \"getStandardParams\",\r\n /**\r\n * Functions from InteractionHandler (msal-browser)\r\n */\r\n HandleCodeResponseFromServer: \"handleCodeResponseFromServer\",\r\n HandleCodeResponse: \"handleCodeResponse\",\r\n HandleResponseEar: \"handleResponseEar\",\r\n HandleResponsePlatformBroker: \"handleResponsePlatformBroker\",\r\n HandleResponseCode: \"handleResponseCode\",\r\n UpdateTokenEndpointAuthority: \"updateTokenEndpointAuthority\",\r\n /**\r\n * APIs in Authorization Code Client (msal-common)\r\n */\r\n AuthClientAcquireToken: \"authClientAcquireToken\",\r\n AuthClientExecuteTokenRequest: \"authClientExecuteTokenRequest\",\r\n AuthClientCreateTokenRequestBody: \"authClientCreateTokenRequestBody\",\r\n /**\r\n * Generate functions in PopTokenGenerator (msal-common)\r\n */\r\n PopTokenGenerateCnf: \"popTokenGenerateCnf\",\r\n PopTokenGenerateKid: \"popTokenGenerateKid\",\r\n /**\r\n * handleServerTokenResponse API in ResponseHandler (msal-common)\r\n */\r\n HandleServerTokenResponse: \"handleServerTokenResponse\",\r\n DeserializeResponse: \"deserializeResponse\",\r\n /**\r\n * Authority functions\r\n */\r\n AuthorityFactoryCreateDiscoveredInstance: \"authorityFactoryCreateDiscoveredInstance\",\r\n AuthorityResolveEndpointsAsync: \"authorityResolveEndpointsAsync\",\r\n AuthorityResolveEndpointsFromLocalSources: \"authorityResolveEndpointsFromLocalSources\",\r\n AuthorityGetCloudDiscoveryMetadataFromNetwork: \"authorityGetCloudDiscoveryMetadataFromNetwork\",\r\n AuthorityUpdateCloudDiscoveryMetadata: \"authorityUpdateCloudDiscoveryMetadata\",\r\n AuthorityGetEndpointMetadataFromNetwork: \"authorityGetEndpointMetadataFromNetwork\",\r\n AuthorityUpdateEndpointMetadata: \"authorityUpdateEndpointMetadata\",\r\n AuthorityUpdateMetadataWithRegionalInformation: \"authorityUpdateMetadataWithRegionalInformation\",\r\n /**\r\n * Region Discovery functions\r\n */\r\n RegionDiscoveryDetectRegion: \"regionDiscoveryDetectRegion\",\r\n RegionDiscoveryGetRegionFromIMDS: \"regionDiscoveryGetRegionFromIMDS\",\r\n RegionDiscoveryGetCurrentVersion: \"regionDiscoveryGetCurrentVersion\",\r\n AcquireTokenByCodeAsync: \"acquireTokenByCodeAsync\",\r\n GetEndpointMetadataFromNetwork: \"getEndpointMetadataFromNetwork\",\r\n GetCloudDiscoveryMetadataFromNetworkMeasurement: \"getCloudDiscoveryMetadataFromNetworkMeasurement\",\r\n HandleRedirectPromiseMeasurement: \"handleRedirectPromise\",\r\n HandleNativeRedirectPromiseMeasurement: \"handleNativeRedirectPromise\",\r\n UpdateCloudDiscoveryMetadataMeasurement: \"updateCloudDiscoveryMetadataMeasurement\",\r\n UsernamePasswordClientAcquireToken: \"usernamePasswordClientAcquireToken\",\r\n NativeMessageHandlerHandshake: \"nativeMessageHandlerHandshake\",\r\n NativeGenerateAuthResult: \"nativeGenerateAuthResult\",\r\n RemoveHiddenIframe: \"removeHiddenIframe\",\r\n /**\r\n * Cache operations\r\n */\r\n ClearTokensAndKeysWithClaims: \"clearTokensAndKeysWithClaims\",\r\n CacheManagerGetRefreshToken: \"cacheManagerGetRefreshToken\",\r\n ImportExistingCache: \"importExistingCache\",\r\n SetUserData: \"setUserData\",\r\n LocalStorageUpdated: \"localStorageUpdated\",\r\n /**\r\n * Crypto Operations\r\n */\r\n GeneratePkceCodes: \"generatePkceCodes\",\r\n GenerateCodeVerifier: \"generateCodeVerifier\",\r\n GenerateCodeChallengeFromVerifier: \"generateCodeChallengeFromVerifier\",\r\n Sha256Digest: \"sha256Digest\",\r\n GetRandomValues: \"getRandomValues\",\r\n GenerateHKDF: \"generateHKDF\",\r\n GenerateBaseKey: \"generateBaseKey\",\r\n Base64Decode: \"base64Decode\",\r\n UrlEncodeArr: \"urlEncodeArr\",\r\n Encrypt: \"encrypt\",\r\n Decrypt: \"decrypt\",\r\n GenerateEarKey: \"generateEarKey\",\r\n DecryptEarResponse: \"decryptEarResponse\",\r\n};\r\n/**\r\n * State of the performance event.\r\n *\r\n * @export\r\n * @enum {number}\r\n */\r\nconst PerformanceEventStatus = {\r\n InProgress: 1};\n\n/*! @azure/msal-common v15.13.2 2025-11-19 */\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nclass StubPerformanceMeasurement {\r\n startMeasurement() {\r\n return;\r\n }\r\n endMeasurement() {\r\n return;\r\n }\r\n flushMeasurement() {\r\n return null;\r\n }\r\n}\r\nclass StubPerformanceClient {\r\n generateId() {\r\n return \"callback-id\";\r\n }\r\n startMeasurement(measureName, correlationId) {\r\n return {\r\n end: () => null,\r\n discard: () => { },\r\n add: () => { },\r\n increment: () => { },\r\n event: {\r\n eventId: this.generateId(),\r\n status: PerformanceEventStatus.InProgress,\r\n authority: \"\",\r\n libraryName: \"\",\r\n libraryVersion: \"\",\r\n clientId: \"\",\r\n name: measureName,\r\n startTimeMs: Date.now(),\r\n correlationId: correlationId || \"\",\r\n },\r\n measurement: new StubPerformanceMeasurement(),\r\n };\r\n }\r\n startPerformanceMeasurement() {\r\n return new StubPerformanceMeasurement();\r\n }\r\n calculateQueuedTime() {\r\n return 0;\r\n }\r\n addQueueMeasurement() {\r\n return;\r\n }\r\n setPreQueueTime() {\r\n return;\r\n }\r\n endMeasurement() {\r\n return null;\r\n }\r\n discardMeasurements() {\r\n return;\r\n }\r\n removePerformanceCallback() {\r\n return true;\r\n }\r\n addPerformanceCallback() {\r\n return \"\";\r\n }\r\n emitEvents() {\r\n return;\r\n }\r\n addFields() {\r\n return;\r\n }\r\n incrementFields() {\r\n return;\r\n }\r\n cacheEventByCorrelationId() {\r\n return;\r\n }\r\n}\n\n/*! @azure/msal-common v15.13.2 2025-11-19 */\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nconst DEFAULT_SYSTEM_OPTIONS$1 = {\r\n tokenRenewalOffsetSeconds: DEFAULT_TOKEN_RENEWAL_OFFSET_SEC,\r\n preventCorsPreflight: false,\r\n};\r\nconst DEFAULT_LOGGER_IMPLEMENTATION = {\r\n loggerCallback: () => {\r\n // allow users to not set loggerCallback\r\n },\r\n piiLoggingEnabled: false,\r\n logLevel: exports.LogLevel.Info,\r\n correlationId: Constants$1.EMPTY_STRING,\r\n};\r\nconst DEFAULT_CACHE_OPTIONS$1 = {\r\n claimsBasedCachingEnabled: false,\r\n};\r\nconst DEFAULT_NETWORK_IMPLEMENTATION = {\r\n async sendGetRequestAsync() {\r\n throw createClientAuthError(methodNotImplemented);\r\n },\r\n async sendPostRequestAsync() {\r\n throw createClientAuthError(methodNotImplemented);\r\n },\r\n};\r\nconst DEFAULT_LIBRARY_INFO = {\r\n sku: Constants$1.SKU,\r\n version: version$1,\r\n cpu: Constants$1.EMPTY_STRING,\r\n os: Constants$1.EMPTY_STRING,\r\n};\r\nconst DEFAULT_CLIENT_CREDENTIALS = {\r\n clientSecret: Constants$1.EMPTY_STRING,\r\n clientAssertion: undefined,\r\n};\r\nconst DEFAULT_AZURE_CLOUD_OPTIONS = {\r\n azureCloudInstance: AzureCloudInstance.None,\r\n tenant: `${Constants$1.DEFAULT_COMMON_TENANT}`,\r\n};\r\nconst DEFAULT_TELEMETRY_OPTIONS$1 = {\r\n application: {\r\n appName: \"\",\r\n appVersion: \"\",\r\n },\r\n};\r\n/**\r\n * Function that sets the default options when not explicitly configured from app developer\r\n *\r\n * @param Configuration\r\n *\r\n * @returns Configuration\r\n */\r\nfunction buildClientConfiguration({ authOptions: userAuthOptions, systemOptions: userSystemOptions, loggerOptions: userLoggerOption, cacheOptions: userCacheOptions, storageInterface: storageImplementation, networkInterface: networkImplementation, cryptoInterface: cryptoImplementation, clientCredentials: clientCredentials, libraryInfo: libraryInfo, telemetry: telemetry, serverTelemetryManager: serverTelemetryManager, persistencePlugin: persistencePlugin, serializableCache: serializableCache, }) {\r\n const loggerOptions = {\r\n ...DEFAULT_LOGGER_IMPLEMENTATION,\r\n ...userLoggerOption,\r\n };\r\n return {\r\n authOptions: buildAuthOptions(userAuthOptions),\r\n systemOptions: { ...DEFAULT_SYSTEM_OPTIONS$1, ...userSystemOptions },\r\n loggerOptions: loggerOptions,\r\n cacheOptions: { ...DEFAULT_CACHE_OPTIONS$1, ...userCacheOptions },\r\n storageInterface: storageImplementation ||\r\n new DefaultStorageClass(userAuthOptions.clientId, DEFAULT_CRYPTO_IMPLEMENTATION, new Logger(loggerOptions), new StubPerformanceClient()),\r\n networkInterface: networkImplementation || DEFAULT_NETWORK_IMPLEMENTATION,\r\n cryptoInterface: cryptoImplementation || DEFAULT_CRYPTO_IMPLEMENTATION,\r\n clientCredentials: clientCredentials || DEFAULT_CLIENT_CREDENTIALS,\r\n libraryInfo: { ...DEFAULT_LIBRARY_INFO, ...libraryInfo },\r\n telemetry: { ...DEFAULT_TELEMETRY_OPTIONS$1, ...telemetry },\r\n serverTelemetryManager: serverTelemetryManager || null,\r\n persistencePlugin: persistencePlugin || null,\r\n serializableCache: serializableCache || null,\r\n };\r\n}\r\n/**\r\n * Construct authoptions from the client and platform passed values\r\n * @param authOptions\r\n */\r\nfunction buildAuthOptions(authOptions) {\r\n return {\r\n clientCapabilities: [],\r\n azureCloudOptions: DEFAULT_AZURE_CLOUD_OPTIONS,\r\n skipAuthorityMetadataCache: false,\r\n instanceAware: false,\r\n encodeExtraQueryParams: false,\r\n ...authOptions,\r\n };\r\n}\r\n/**\r\n * Returns true if config has protocolMode set to ProtocolMode.OIDC, false otherwise\r\n * @param ClientConfiguration\r\n */\r\nfunction isOidcProtocolMode(config) {\r\n return (config.authOptions.authority.options.protocolMode === ProtocolMode.OIDC);\r\n}\n\n/*! @azure/msal-common v15.13.2 2025-11-19 */\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nconst CcsCredentialType = {\r\n HOME_ACCOUNT_ID: \"home_account_id\",\r\n UPN: \"UPN\",\r\n};\n\n/*! @azure/msal-common v15.13.2 2025-11-19 */\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nconst CLIENT_ID = \"client_id\";\r\nconst REDIRECT_URI = \"redirect_uri\";\r\nconst RESPONSE_TYPE = \"response_type\";\r\nconst RESPONSE_MODE = \"response_mode\";\r\nconst GRANT_TYPE = \"grant_type\";\r\nconst CLAIMS = \"claims\";\r\nconst SCOPE = \"scope\";\r\nconst REFRESH_TOKEN = \"refresh_token\";\r\nconst STATE = \"state\";\r\nconst NONCE = \"nonce\";\r\nconst PROMPT = \"prompt\";\r\nconst CODE = \"code\";\r\nconst CODE_CHALLENGE = \"code_challenge\";\r\nconst CODE_CHALLENGE_METHOD = \"code_challenge_method\";\r\nconst CODE_VERIFIER = \"code_verifier\";\r\nconst CLIENT_REQUEST_ID = \"client-request-id\";\r\nconst X_CLIENT_SKU = \"x-client-SKU\";\r\nconst X_CLIENT_VER = \"x-client-VER\";\r\nconst X_CLIENT_OS = \"x-client-OS\";\r\nconst X_CLIENT_CPU = \"x-client-CPU\";\r\nconst X_CLIENT_CURR_TELEM = \"x-client-current-telemetry\";\r\nconst X_CLIENT_LAST_TELEM = \"x-client-last-telemetry\";\r\nconst X_MS_LIB_CAPABILITY = \"x-ms-lib-capability\";\r\nconst X_APP_NAME = \"x-app-name\";\r\nconst X_APP_VER = \"x-app-ver\";\r\nconst POST_LOGOUT_URI = \"post_logout_redirect_uri\";\r\nconst ID_TOKEN_HINT = \"id_token_hint\";\r\nconst DEVICE_CODE = \"device_code\";\r\nconst CLIENT_SECRET = \"client_secret\";\r\nconst CLIENT_ASSERTION = \"client_assertion\";\r\nconst CLIENT_ASSERTION_TYPE = \"client_assertion_type\";\r\nconst TOKEN_TYPE = \"token_type\";\r\nconst REQ_CNF = \"req_cnf\";\r\nconst OBO_ASSERTION = \"assertion\";\r\nconst REQUESTED_TOKEN_USE = \"requested_token_use\";\r\nconst ON_BEHALF_OF = \"on_behalf_of\";\r\nconst RETURN_SPA_CODE = \"return_spa_code\";\r\nconst LOGOUT_HINT = \"logout_hint\";\r\nconst SID = \"sid\";\r\nconst LOGIN_HINT = \"login_hint\";\r\nconst DOMAIN_HINT = \"domain_hint\";\r\nconst X_CLIENT_EXTRA_SKU = \"x-client-xtra-sku\";\r\nconst BROKER_CLIENT_ID = \"brk_client_id\";\r\nconst BROKER_REDIRECT_URI = \"brk_redirect_uri\";\r\nconst INSTANCE_AWARE = \"instance_aware\";\n\n/*! @azure/msal-common v15.13.2 2025-11-19 */\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nfunction instrumentBrokerParams(parameters, correlationId, performanceClient) {\r\n if (!correlationId) {\r\n return;\r\n }\r\n const clientId = parameters.get(CLIENT_ID);\r\n if (clientId && parameters.has(BROKER_CLIENT_ID)) {\r\n performanceClient?.addFields({\r\n embeddedClientId: clientId,\r\n embeddedRedirectUri: parameters.get(REDIRECT_URI),\r\n }, correlationId);\r\n }\r\n}\r\n/**\r\n * Add the given response_type\r\n * @param parameters\r\n * @param responseType\r\n */\r\nfunction addResponseType(parameters, responseType) {\r\n parameters.set(RESPONSE_TYPE, responseType);\r\n}\r\n/**\r\n * add response_mode. defaults to query.\r\n * @param responseMode\r\n */\r\nfunction addResponseMode(parameters, responseMode) {\r\n parameters.set(RESPONSE_MODE, responseMode ? responseMode : ResponseMode.QUERY);\r\n}\r\n/**\r\n * add scopes. set addOidcScopes to false to prevent default scopes in non-user scenarios\r\n * @param scopeSet\r\n * @param addOidcScopes\r\n */\r\nfunction addScopes(parameters, scopes, addOidcScopes = true, defaultScopes = OIDC_DEFAULT_SCOPES) {\r\n // Always add openid to the scopes when adding OIDC scopes\r\n if (addOidcScopes &&\r\n !defaultScopes.includes(\"openid\") &&\r\n !scopes.includes(\"openid\")) {\r\n defaultScopes.push(\"openid\");\r\n }\r\n const requestScopes = addOidcScopes\r\n ? [...(scopes || []), ...defaultScopes]\r\n : scopes || [];\r\n const scopeSet = new ScopeSet(requestScopes);\r\n parameters.set(SCOPE, scopeSet.printScopes());\r\n}\r\n/**\r\n * add clientId\r\n * @param clientId\r\n */\r\nfunction addClientId(parameters, clientId) {\r\n parameters.set(CLIENT_ID, clientId);\r\n}\r\n/**\r\n * add redirect_uri\r\n * @param redirectUri\r\n */\r\nfunction addRedirectUri(parameters, redirectUri) {\r\n parameters.set(REDIRECT_URI, redirectUri);\r\n}\r\n/**\r\n * add post logout redirectUri\r\n * @param redirectUri\r\n */\r\nfunction addPostLogoutRedirectUri(parameters, redirectUri) {\r\n parameters.set(POST_LOGOUT_URI, redirectUri);\r\n}\r\n/**\r\n * add id_token_hint to logout request\r\n * @param idTokenHint\r\n */\r\nfunction addIdTokenHint(parameters, idTokenHint) {\r\n parameters.set(ID_TOKEN_HINT, idTokenHint);\r\n}\r\n/**\r\n * add domain_hint\r\n * @param domainHint\r\n */\r\nfunction addDomainHint(parameters, domainHint) {\r\n parameters.set(DOMAIN_HINT, domainHint);\r\n}\r\n/**\r\n * add login_hint\r\n * @param loginHint\r\n */\r\nfunction addLoginHint(parameters, loginHint) {\r\n parameters.set(LOGIN_HINT, loginHint);\r\n}\r\n/**\r\n * Adds the CCS (Cache Credential Service) query parameter for login_hint\r\n * @param loginHint\r\n */\r\nfunction addCcsUpn(parameters, loginHint) {\r\n parameters.set(HeaderNames.CCS_HEADER, `UPN:${loginHint}`);\r\n}\r\n/**\r\n * Adds the CCS (Cache Credential Service) query parameter for account object\r\n * @param loginHint\r\n */\r\nfunction addCcsOid(parameters, clientInfo) {\r\n parameters.set(HeaderNames.CCS_HEADER, `Oid:${clientInfo.uid}@${clientInfo.utid}`);\r\n}\r\n/**\r\n * add sid\r\n * @param sid\r\n */\r\nfunction addSid(parameters, sid) {\r\n parameters.set(SID, sid);\r\n}\r\n/**\r\n * add claims\r\n * @param claims\r\n */\r\nfunction addClaims(parameters, claims, clientCapabilities) {\r\n const mergedClaims = addClientCapabilitiesToClaims(claims, clientCapabilities);\r\n try {\r\n JSON.parse(mergedClaims);\r\n }\r\n catch (e) {\r\n throw createClientConfigurationError(invalidClaims);\r\n }\r\n parameters.set(CLAIMS, mergedClaims);\r\n}\r\n/**\r\n * add correlationId\r\n * @param correlationId\r\n */\r\nfunction addCorrelationId(parameters, correlationId) {\r\n parameters.set(CLIENT_REQUEST_ID, correlationId);\r\n}\r\n/**\r\n * add library info query params\r\n * @param libraryInfo\r\n */\r\nfunction addLibraryInfo(parameters, libraryInfo) {\r\n // Telemetry Info\r\n parameters.set(X_CLIENT_SKU, libraryInfo.sku);\r\n parameters.set(X_CLIENT_VER, libraryInfo.version);\r\n if (libraryInfo.os) {\r\n parameters.set(X_CLIENT_OS, libraryInfo.os);\r\n }\r\n if (libraryInfo.cpu) {\r\n parameters.set(X_CLIENT_CPU, libraryInfo.cpu);\r\n }\r\n}\r\n/**\r\n * Add client telemetry parameters\r\n * @param appTelemetry\r\n */\r\nfunction addApplicationTelemetry(parameters, appTelemetry) {\r\n if (appTelemetry?.appName) {\r\n parameters.set(X_APP_NAME, appTelemetry.appName);\r\n }\r\n if (appTelemetry?.appVersion) {\r\n parameters.set(X_APP_VER, appTelemetry.appVersion);\r\n }\r\n}\r\n/**\r\n * add prompt\r\n * @param prompt\r\n */\r\nfunction addPrompt(parameters, prompt) {\r\n parameters.set(PROMPT, prompt);\r\n}\r\n/**\r\n * add state\r\n * @param state\r\n */\r\nfunction addState(parameters, state) {\r\n if (state) {\r\n parameters.set(STATE, state);\r\n }\r\n}\r\n/**\r\n * add nonce\r\n * @param nonce\r\n */\r\nfunction addNonce(parameters, nonce) {\r\n parameters.set(NONCE, nonce);\r\n}\r\n/**\r\n * add code_challenge and code_challenge_method\r\n * - throw if either of them are not passed\r\n * @param codeChallenge\r\n * @param codeChallengeMethod\r\n */\r\nfunction addCodeChallengeParams(parameters, codeChallenge, codeChallengeMethod) {\r\n if (codeChallenge && codeChallengeMethod) {\r\n parameters.set(CODE_CHALLENGE, codeChallenge);\r\n parameters.set(CODE_CHALLENGE_METHOD, codeChallengeMethod);\r\n }\r\n else {\r\n throw createClientConfigurationError(pkceParamsMissing);\r\n }\r\n}\r\n/**\r\n * add the `authorization_code` passed by the user to exchange for a token\r\n * @param code\r\n */\r\nfunction addAuthorizationCode(parameters, code) {\r\n parameters.set(CODE, code);\r\n}\r\n/**\r\n * add the `authorization_code` passed by the user to exchange for a token\r\n * @param code\r\n */\r\nfunction addDeviceCode(parameters, code) {\r\n parameters.set(DEVICE_CODE, code);\r\n}\r\n/**\r\n * add the `refreshToken` passed by the user\r\n * @param refreshToken\r\n */\r\nfunction addRefreshToken(parameters, refreshToken) {\r\n parameters.set(REFRESH_TOKEN, refreshToken);\r\n}\r\n/**\r\n * add the `code_verifier` passed by the user to exchange for a token\r\n * @param codeVerifier\r\n */\r\nfunction addCodeVerifier(parameters, codeVerifier) {\r\n parameters.set(CODE_VERIFIER, codeVerifier);\r\n}\r\n/**\r\n * add client_secret\r\n * @param clientSecret\r\n */\r\nfunction addClientSecret(parameters, clientSecret) {\r\n parameters.set(CLIENT_SECRET, clientSecret);\r\n}\r\n/**\r\n * add clientAssertion for confidential client flows\r\n * @param clientAssertion\r\n */\r\nfunction addClientAssertion(parameters, clientAssertion) {\r\n if (clientAssertion) {\r\n parameters.set(CLIENT_ASSERTION, clientAssertion);\r\n }\r\n}\r\n/**\r\n * add clientAssertionType for confidential client flows\r\n * @param clientAssertionType\r\n */\r\nfunction addClientAssertionType(parameters, clientAssertionType) {\r\n if (clientAssertionType) {\r\n parameters.set(CLIENT_ASSERTION_TYPE, clientAssertionType);\r\n }\r\n}\r\n/**\r\n * add OBO assertion for confidential client flows\r\n * @param clientAssertion\r\n */\r\nfunction addOboAssertion(parameters, oboAssertion) {\r\n parameters.set(OBO_ASSERTION, oboAssertion);\r\n}\r\n/**\r\n * add grant type\r\n * @param grantType\r\n */\r\nfunction addRequestTokenUse(parameters, tokenUse) {\r\n parameters.set(REQUESTED_TOKEN_USE, tokenUse);\r\n}\r\n/**\r\n * add grant type\r\n * @param grantType\r\n */\r\nfunction addGrantType(parameters, grantType) {\r\n parameters.set(GRANT_TYPE, grantType);\r\n}\r\n/**\r\n * add client info\r\n *\r\n */\r\nfunction addClientInfo(parameters) {\r\n parameters.set(CLIENT_INFO, \"1\");\r\n}\r\nfunction addInstanceAware(parameters) {\r\n if (!parameters.has(INSTANCE_AWARE)) {\r\n parameters.set(INSTANCE_AWARE, \"true\");\r\n }\r\n}\r\n/**\r\n * add extraQueryParams\r\n * @param eQParams\r\n */\r\nfunction addExtraQueryParameters(parameters, eQParams) {\r\n Object.entries(eQParams).forEach(([key, value]) => {\r\n if (!parameters.has(key) && value) {\r\n parameters.set(key, value);\r\n }\r\n });\r\n}\r\nfunction addClientCapabilitiesToClaims(claims, clientCapabilities) {\r\n let mergedClaims;\r\n // Parse provided claims into JSON object or initialize empty object\r\n if (!claims) {\r\n mergedClaims = {};\r\n }\r\n else {\r\n try {\r\n mergedClaims = JSON.parse(claims);\r\n }\r\n catch (e) {\r\n throw createClientConfigurationError(invalidClaims);\r\n }\r\n }\r\n if (clientCapabilities && clientCapabilities.length > 0) {\r\n if (!mergedClaims.hasOwnProperty(ClaimsRequestKeys.ACCESS_TOKEN)) {\r\n // Add access_token key to claims object\r\n mergedClaims[ClaimsRequestKeys.ACCESS_TOKEN] = {};\r\n }\r\n // Add xms_cc claim with provided clientCapabilities to access_token key\r\n mergedClaims[ClaimsRequestKeys.ACCESS_TOKEN][ClaimsRequestKeys.XMS_CC] =\r\n {\r\n values: clientCapabilities,\r\n };\r\n }\r\n return JSON.stringify(mergedClaims);\r\n}\r\n/**\r\n * adds `username` for Password Grant flow\r\n * @param username\r\n */\r\nfunction addUsername(parameters, username) {\r\n parameters.set(PasswordGrantConstants.username, username);\r\n}\r\n/**\r\n * adds `password` for Password Grant flow\r\n * @param password\r\n */\r\nfunction addPassword(parameters, password) {\r\n parameters.set(PasswordGrantConstants.password, password);\r\n}\r\n/**\r\n * add pop_jwk to query params\r\n * @param cnfString\r\n */\r\nfunction addPopToken(parameters, cnfString) {\r\n if (cnfString) {\r\n parameters.set(TOKEN_TYPE, AuthenticationScheme.POP);\r\n parameters.set(REQ_CNF, cnfString);\r\n }\r\n}\r\n/**\r\n * add SSH JWK and key ID to query params\r\n */\r\nfunction addSshJwk(parameters, sshJwkString) {\r\n if (sshJwkString) {\r\n parameters.set(TOKEN_TYPE, AuthenticationScheme.SSH);\r\n parameters.set(REQ_CNF, sshJwkString);\r\n }\r\n}\r\n/**\r\n * add server telemetry fields\r\n * @param serverTelemetryManager\r\n */\r\nfunction addServerTelemetry(parameters, serverTelemetryManager) {\r\n parameters.set(X_CLIENT_CURR_TELEM, serverTelemetryManager.generateCurrentRequestHeaderValue());\r\n parameters.set(X_CLIENT_LAST_TELEM, serverTelemetryManager.generateLastRequestHeaderValue());\r\n}\r\n/**\r\n * Adds parameter that indicates to the server that throttling is supported\r\n */\r\nfunction addThrottling(parameters) {\r\n parameters.set(X_MS_LIB_CAPABILITY, ThrottlingConstants.X_MS_LIB_CAPABILITY_VALUE);\r\n}\r\n/**\r\n * Adds logout_hint parameter for \"silent\" logout which prevent server account picker\r\n */\r\nfunction addLogoutHint(parameters, logoutHint) {\r\n parameters.set(LOGOUT_HINT, logoutHint);\r\n}\r\nfunction addBrokerParameters(parameters, brokerClientId, brokerRedirectUri) {\r\n if (!parameters.has(BROKER_CLIENT_ID)) {\r\n parameters.set(BROKER_CLIENT_ID, brokerClientId);\r\n }\r\n if (!parameters.has(BROKER_REDIRECT_URI)) {\r\n parameters.set(BROKER_REDIRECT_URI, brokerRedirectUri);\r\n }\r\n}\n\n/*! @azure/msal-common v15.13.2 2025-11-19 */\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nfunction isOpenIdConfigResponse(response) {\r\n return (response.hasOwnProperty(\"authorization_endpoint\") &&\r\n response.hasOwnProperty(\"token_endpoint\") &&\r\n response.hasOwnProperty(\"issuer\") &&\r\n response.hasOwnProperty(\"jwks_uri\"));\r\n}\n\n/*! @azure/msal-common v15.13.2 2025-11-19 */\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nfunction isCloudInstanceDiscoveryResponse(response) {\r\n return (response.hasOwnProperty(\"tenant_discovery_endpoint\") &&\r\n response.hasOwnProperty(\"metadata\"));\r\n}\n\n/*! @azure/msal-common v15.13.2 2025-11-19 */\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nfunction isCloudInstanceDiscoveryErrorResponse(response) {\r\n return (response.hasOwnProperty(\"error\") &&\r\n response.hasOwnProperty(\"error_description\"));\r\n}\n\n/*! @azure/msal-common v15.13.2 2025-11-19 */\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * Wraps a function with a performance measurement.\r\n * Usage: invoke(functionToCall, performanceClient, \"EventName\", \"correlationId\")(...argsToPassToFunction)\r\n * @param callback\r\n * @param eventName\r\n * @param logger\r\n * @param telemetryClient\r\n * @param correlationId\r\n * @returns\r\n * @internal\r\n */\r\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\r\nconst invoke = (callback, eventName, logger, telemetryClient, correlationId) => {\r\n return (...args) => {\r\n logger.trace(`Executing function ${eventName}`);\r\n const inProgressEvent = telemetryClient?.startMeasurement(eventName, correlationId);\r\n if (correlationId) {\r\n // Track number of times this API is called in a single request\r\n const eventCount = eventName + \"CallCount\";\r\n telemetryClient?.incrementFields({ [eventCount]: 1 }, correlationId);\r\n }\r\n try {\r\n const result = callback(...args);\r\n inProgressEvent?.end({\r\n success: true,\r\n });\r\n logger.trace(`Returning result from ${eventName}`);\r\n return result;\r\n }\r\n catch (e) {\r\n logger.trace(`Error occurred in ${eventName}`);\r\n try {\r\n logger.trace(JSON.stringify(e));\r\n }\r\n catch (e) {\r\n logger.trace(\"Unable to print error message.\");\r\n }\r\n inProgressEvent?.end({\r\n success: false,\r\n }, e);\r\n throw e;\r\n }\r\n };\r\n};\r\n/**\r\n * Wraps an async function with a performance measurement.\r\n * Usage: invokeAsync(functionToCall, performanceClient, \"EventName\", \"correlationId\")(...argsToPassToFunction)\r\n * @param callback\r\n * @param eventName\r\n * @param logger\r\n * @param telemetryClient\r\n * @param correlationId\r\n * @returns\r\n * @internal\r\n *\r\n */\r\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\r\nconst invokeAsync = (callback, eventName, logger, telemetryClient, correlationId) => {\r\n return (...args) => {\r\n logger.trace(`Executing function ${eventName}`);\r\n const inProgressEvent = telemetryClient?.startMeasurement(eventName, correlationId);\r\n if (correlationId) {\r\n // Track number of times this API is called in a single request\r\n const eventCount = eventName + \"CallCount\";\r\n telemetryClient?.incrementFields({ [eventCount]: 1 }, correlationId);\r\n }\r\n telemetryClient?.setPreQueueTime(eventName, correlationId);\r\n return callback(...args)\r\n .then((response) => {\r\n logger.trace(`Returning result from ${eventName}`);\r\n inProgressEvent?.end({\r\n success: true,\r\n });\r\n return response;\r\n })\r\n .catch((e) => {\r\n logger.trace(`Error occurred in ${eventName}`);\r\n try {\r\n logger.trace(JSON.stringify(e));\r\n }\r\n catch (e) {\r\n logger.trace(\"Unable to print error message.\");\r\n }\r\n inProgressEvent?.end({\r\n success: false,\r\n }, e);\r\n throw e;\r\n });\r\n };\r\n};\n\n/*! @azure/msal-common v15.13.2 2025-11-19 */\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nclass RegionDiscovery {\r\n constructor(networkInterface, logger, performanceClient, correlationId) {\r\n this.networkInterface = networkInterface;\r\n this.logger = logger;\r\n this.performanceClient = performanceClient;\r\n this.correlationId = correlationId;\r\n }\r\n /**\r\n * Detect the region from the application's environment.\r\n *\r\n * @returns Promise\r\n */\r\n async detectRegion(environmentRegion, regionDiscoveryMetadata) {\r\n this.performanceClient?.addQueueMeasurement(PerformanceEvents.RegionDiscoveryDetectRegion, this.correlationId);\r\n // Initialize auto detected region with the region from the envrionment\r\n let autodetectedRegionName = environmentRegion;\r\n // Check if a region was detected from the environment, if not, attempt to get the region from IMDS\r\n if (!autodetectedRegionName) {\r\n const options = RegionDiscovery.IMDS_OPTIONS;\r\n try {\r\n const localIMDSVersionResponse = await invokeAsync(this.getRegionFromIMDS.bind(this), PerformanceEvents.RegionDiscoveryGetRegionFromIMDS, this.logger, this.performanceClient, this.correlationId)(Constants$1.IMDS_VERSION, options);\r\n if (localIMDSVersionResponse.status === HttpStatus.SUCCESS) {\r\n autodetectedRegionName = localIMDSVersionResponse.body;\r\n regionDiscoveryMetadata.region_source =\r\n RegionDiscoverySources.IMDS;\r\n }\r\n // If the response using the local IMDS version failed, try to fetch the current version of IMDS and retry.\r\n if (localIMDSVersionResponse.status === HttpStatus.BAD_REQUEST) {\r\n const currentIMDSVersion = await invokeAsync(this.getCurrentVersion.bind(this), PerformanceEvents.RegionDiscoveryGetCurrentVersion, this.logger, this.performanceClient, this.correlationId)(options);\r\n if (!currentIMDSVersion) {\r\n regionDiscoveryMetadata.region_source =\r\n RegionDiscoverySources.FAILED_AUTO_DETECTION;\r\n return null;\r\n }\r\n const currentIMDSVersionResponse = await invokeAsync(this.getRegionFromIMDS.bind(this), PerformanceEvents.RegionDiscoveryGetRegionFromIMDS, this.logger, this.performanceClient, this.correlationId)(currentIMDSVersion, options);\r\n if (currentIMDSVersionResponse.status === HttpStatus.SUCCESS) {\r\n autodetectedRegionName =\r\n currentIMDSVersionResponse.body;\r\n regionDiscoveryMetadata.region_source =\r\n RegionDiscoverySources.IMDS;\r\n }\r\n }\r\n }\r\n catch (e) {\r\n regionDiscoveryMetadata.region_source =\r\n RegionDiscoverySources.FAILED_AUTO_DETECTION;\r\n return null;\r\n }\r\n }\r\n else {\r\n regionDiscoveryMetadata.region_source =\r\n RegionDiscoverySources.ENVIRONMENT_VARIABLE;\r\n }\r\n // If no region was auto detected from the environment or from the IMDS endpoint, mark the attempt as a FAILED_AUTO_DETECTION\r\n if (!autodetectedRegionName) {\r\n regionDiscoveryMetadata.region_source =\r\n RegionDiscoverySources.FAILED_AUTO_DETECTION;\r\n }\r\n return autodetectedRegionName || null;\r\n }\r\n /**\r\n * Make the call to the IMDS endpoint\r\n *\r\n * @param imdsEndpointUrl\r\n * @returns Promise>\r\n */\r\n async getRegionFromIMDS(version, options) {\r\n this.performanceClient?.addQueueMeasurement(PerformanceEvents.RegionDiscoveryGetRegionFromIMDS, this.correlationId);\r\n return this.networkInterface.sendGetRequestAsync(`${Constants$1.IMDS_ENDPOINT}?api-version=${version}&format=text`, options, Constants$1.IMDS_TIMEOUT);\r\n }\r\n /**\r\n * Get the most recent version of the IMDS endpoint available\r\n *\r\n * @returns Promise\r\n */\r\n async getCurrentVersion(options) {\r\n this.performanceClient?.addQueueMeasurement(PerformanceEvents.RegionDiscoveryGetCurrentVersion, this.correlationId);\r\n try {\r\n const response = await this.networkInterface.sendGetRequestAsync(`${Constants$1.IMDS_ENDPOINT}?format=json`, options);\r\n // When IMDS endpoint is called without the api version query param, bad request response comes back with latest version.\r\n if (response.status === HttpStatus.BAD_REQUEST &&\r\n response.body &&\r\n response.body[\"newest-versions\"] &&\r\n response.body[\"newest-versions\"].length > 0) {\r\n return response.body[\"newest-versions\"][0];\r\n }\r\n return null;\r\n }\r\n catch (e) {\r\n return null;\r\n }\r\n }\r\n}\r\n// Options for the IMDS endpoint request\r\nRegionDiscovery.IMDS_OPTIONS = {\r\n headers: {\r\n Metadata: \"true\",\r\n },\r\n};\n\n/*! @azure/msal-common v15.13.2 2025-11-19 */\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * Utility functions for managing date and time operations.\r\n */\r\n/**\r\n * return the current time in Unix time (seconds).\r\n */\r\nfunction nowSeconds() {\r\n // Date.getTime() returns in milliseconds.\r\n return Math.round(new Date().getTime() / 1000.0);\r\n}\r\n/**\r\n * Convert seconds to JS Date object. Seconds can be in a number or string format or undefined (will still return a date).\r\n * @param seconds\r\n */\r\nfunction toDateFromSeconds(seconds) {\r\n if (seconds) {\r\n return new Date(Number(seconds) * 1000);\r\n }\r\n return new Date();\r\n}\r\n/**\r\n * check if a token is expired based on given UTC time in seconds.\r\n * @param expiresOn\r\n */\r\nfunction isTokenExpired(expiresOn, offset) {\r\n // check for access token expiry\r\n const expirationSec = Number(expiresOn) || 0;\r\n const offsetCurrentTimeSec = nowSeconds() + offset;\r\n // If current time + offset is greater than token expiration time, then token is expired.\r\n return offsetCurrentTimeSec > expirationSec;\r\n}\r\n/**\r\n * If the current time is earlier than the time that a token was cached at, we must discard the token\r\n * i.e. The system clock was turned back after acquiring the cached token\r\n * @param cachedAt\r\n * @param offset\r\n */\r\nfunction wasClockTurnedBack(cachedAt) {\r\n const cachedAtSec = Number(cachedAt);\r\n return cachedAtSec > nowSeconds();\r\n}\r\n/**\r\n * Waits for t number of milliseconds\r\n * @param t number\r\n * @param value T\r\n */\r\nfunction delay(t, value) {\r\n return new Promise((resolve) => setTimeout(() => resolve(value), t));\r\n}\n\n/*! @azure/msal-common v15.13.2 2025-11-19 */\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * Create IdTokenEntity\r\n * @param homeAccountId\r\n * @param authenticationResult\r\n * @param clientId\r\n * @param authority\r\n */\r\nfunction createIdTokenEntity(homeAccountId, environment, idToken, clientId, tenantId) {\r\n const idTokenEntity = {\r\n credentialType: CredentialType.ID_TOKEN,\r\n homeAccountId: homeAccountId,\r\n environment: environment,\r\n clientId: clientId,\r\n secret: idToken,\r\n realm: tenantId,\r\n lastUpdatedAt: Date.now().toString(), // Set the last updated time to now\r\n };\r\n return idTokenEntity;\r\n}\r\n/**\r\n * Create AccessTokenEntity\r\n * @param homeAccountId\r\n * @param environment\r\n * @param accessToken\r\n * @param clientId\r\n * @param tenantId\r\n * @param scopes\r\n * @param expiresOn\r\n * @param extExpiresOn\r\n */\r\nfunction createAccessTokenEntity(homeAccountId, environment, accessToken, clientId, tenantId, scopes, expiresOn, extExpiresOn, base64Decode, refreshOn, tokenType, userAssertionHash, keyId, requestedClaims, requestedClaimsHash) {\r\n const atEntity = {\r\n homeAccountId: homeAccountId,\r\n credentialType: CredentialType.ACCESS_TOKEN,\r\n secret: accessToken,\r\n cachedAt: nowSeconds().toString(),\r\n expiresOn: expiresOn.toString(),\r\n extendedExpiresOn: extExpiresOn.toString(),\r\n environment: environment,\r\n clientId: clientId,\r\n realm: tenantId,\r\n target: scopes,\r\n tokenType: tokenType || AuthenticationScheme.BEARER,\r\n lastUpdatedAt: Date.now().toString(), // Set the last updated time to now\r\n };\r\n if (userAssertionHash) {\r\n atEntity.userAssertionHash = userAssertionHash;\r\n }\r\n if (refreshOn) {\r\n atEntity.refreshOn = refreshOn.toString();\r\n }\r\n if (requestedClaims) {\r\n atEntity.requestedClaims = requestedClaims;\r\n atEntity.requestedClaimsHash = requestedClaimsHash;\r\n }\r\n /*\r\n * Create Access Token With Auth Scheme instead of regular access token\r\n * Cast to lower to handle \"bearer\" from ADFS\r\n */\r\n if (atEntity.tokenType?.toLowerCase() !==\r\n AuthenticationScheme.BEARER.toLowerCase()) {\r\n atEntity.credentialType = CredentialType.ACCESS_TOKEN_WITH_AUTH_SCHEME;\r\n switch (atEntity.tokenType) {\r\n case AuthenticationScheme.POP:\r\n // Make sure keyId is present and add it to credential\r\n const tokenClaims = extractTokenClaims(accessToken, base64Decode);\r\n if (!tokenClaims?.cnf?.kid) {\r\n throw createClientAuthError(tokenClaimsCnfRequiredForSignedJwt);\r\n }\r\n atEntity.keyId = tokenClaims.cnf.kid;\r\n break;\r\n case AuthenticationScheme.SSH:\r\n atEntity.keyId = keyId;\r\n }\r\n }\r\n return atEntity;\r\n}\r\n/**\r\n * Create RefreshTokenEntity\r\n * @param homeAccountId\r\n * @param authenticationResult\r\n * @param clientId\r\n * @param authority\r\n */\r\nfunction createRefreshTokenEntity(homeAccountId, environment, refreshToken, clientId, familyId, userAssertionHash, expiresOn) {\r\n const rtEntity = {\r\n credentialType: CredentialType.REFRESH_TOKEN,\r\n homeAccountId: homeAccountId,\r\n environment: environment,\r\n clientId: clientId,\r\n secret: refreshToken,\r\n lastUpdatedAt: Date.now().toString(),\r\n };\r\n if (userAssertionHash) {\r\n rtEntity.userAssertionHash = userAssertionHash;\r\n }\r\n if (familyId) {\r\n rtEntity.familyId = familyId;\r\n }\r\n if (expiresOn) {\r\n rtEntity.expiresOn = expiresOn.toString();\r\n }\r\n return rtEntity;\r\n}\r\nfunction isCredentialEntity(entity) {\r\n return (entity.hasOwnProperty(\"homeAccountId\") &&\r\n entity.hasOwnProperty(\"environment\") &&\r\n entity.hasOwnProperty(\"credentialType\") &&\r\n entity.hasOwnProperty(\"clientId\") &&\r\n entity.hasOwnProperty(\"secret\"));\r\n}\r\n/**\r\n * Validates an entity: checks for all expected params\r\n * @param entity\r\n */\r\nfunction isAccessTokenEntity(entity) {\r\n if (!entity) {\r\n return false;\r\n }\r\n return (isCredentialEntity(entity) &&\r\n entity.hasOwnProperty(\"realm\") &&\r\n entity.hasOwnProperty(\"target\") &&\r\n (entity[\"credentialType\"] === CredentialType.ACCESS_TOKEN ||\r\n entity[\"credentialType\"] ===\r\n CredentialType.ACCESS_TOKEN_WITH_AUTH_SCHEME));\r\n}\r\n/**\r\n * Validates an entity: checks for all expected params\r\n * @param entity\r\n */\r\nfunction isIdTokenEntity(entity) {\r\n if (!entity) {\r\n return false;\r\n }\r\n return (isCredentialEntity(entity) &&\r\n entity.hasOwnProperty(\"realm\") &&\r\n entity[\"credentialType\"] === CredentialType.ID_TOKEN);\r\n}\r\n/**\r\n * Validates an entity: checks for all expected params\r\n * @param entity\r\n */\r\nfunction isRefreshTokenEntity(entity) {\r\n if (!entity) {\r\n return false;\r\n }\r\n return (isCredentialEntity(entity) &&\r\n entity[\"credentialType\"] === CredentialType.REFRESH_TOKEN);\r\n}\r\n/**\r\n * validates if a given cache entry is \"Telemetry\", parses \r\n * @param key\r\n * @param entity\r\n */\r\nfunction isServerTelemetryEntity(key, entity) {\r\n const validateKey = key.indexOf(SERVER_TELEM_CONSTANTS.CACHE_KEY) === 0;\r\n let validateEntity = true;\r\n if (entity) {\r\n validateEntity =\r\n entity.hasOwnProperty(\"failedRequests\") &&\r\n entity.hasOwnProperty(\"errors\") &&\r\n entity.hasOwnProperty(\"cacheHits\");\r\n }\r\n return validateKey && validateEntity;\r\n}\r\n/**\r\n * validates if a given cache entry is \"Throttling\", parses \r\n * @param key\r\n * @param entity\r\n */\r\nfunction isThrottlingEntity(key, entity) {\r\n let validateKey = false;\r\n if (key) {\r\n validateKey = key.indexOf(ThrottlingConstants.THROTTLING_PREFIX) === 0;\r\n }\r\n let validateEntity = true;\r\n if (entity) {\r\n validateEntity = entity.hasOwnProperty(\"throttleTime\");\r\n }\r\n return validateKey && validateEntity;\r\n}\r\n/**\r\n * Generate AppMetadata Cache Key as per the schema: appmetadata--\r\n */\r\nfunction generateAppMetadataKey({ environment, clientId, }) {\r\n const appMetaDataKeyArray = [\r\n APP_METADATA,\r\n environment,\r\n clientId,\r\n ];\r\n return appMetaDataKeyArray\r\n .join(Separators.CACHE_KEY_SEPARATOR)\r\n .toLowerCase();\r\n}\r\n/*\r\n * Validates an entity: checks for all expected params\r\n * @param entity\r\n */\r\nfunction isAppMetadataEntity(key, entity) {\r\n if (!entity) {\r\n return false;\r\n }\r\n return (key.indexOf(APP_METADATA) === 0 &&\r\n entity.hasOwnProperty(\"clientId\") &&\r\n entity.hasOwnProperty(\"environment\"));\r\n}\r\n/**\r\n * Validates an entity: checks for all expected params\r\n * @param entity\r\n */\r\nfunction isAuthorityMetadataEntity(key, entity) {\r\n if (!entity) {\r\n return false;\r\n }\r\n return (key.indexOf(AUTHORITY_METADATA_CONSTANTS.CACHE_KEY) === 0 &&\r\n entity.hasOwnProperty(\"aliases\") &&\r\n entity.hasOwnProperty(\"preferred_cache\") &&\r\n entity.hasOwnProperty(\"preferred_network\") &&\r\n entity.hasOwnProperty(\"canonical_authority\") &&\r\n entity.hasOwnProperty(\"authorization_endpoint\") &&\r\n entity.hasOwnProperty(\"token_endpoint\") &&\r\n entity.hasOwnProperty(\"issuer\") &&\r\n entity.hasOwnProperty(\"aliasesFromNetwork\") &&\r\n entity.hasOwnProperty(\"endpointsFromNetwork\") &&\r\n entity.hasOwnProperty(\"expiresAt\") &&\r\n entity.hasOwnProperty(\"jwks_uri\"));\r\n}\r\n/**\r\n * Reset the exiresAt value\r\n */\r\nfunction generateAuthorityMetadataExpiresAt() {\r\n return (nowSeconds() +\r\n AUTHORITY_METADATA_CONSTANTS.REFRESH_TIME_SECONDS);\r\n}\r\nfunction updateAuthorityEndpointMetadata(authorityMetadata, updatedValues, fromNetwork) {\r\n authorityMetadata.authorization_endpoint =\r\n updatedValues.authorization_endpoint;\r\n authorityMetadata.token_endpoint = updatedValues.token_endpoint;\r\n authorityMetadata.end_session_endpoint = updatedValues.end_session_endpoint;\r\n authorityMetadata.issuer = updatedValues.issuer;\r\n authorityMetadata.endpointsFromNetwork = fromNetwork;\r\n authorityMetadata.jwks_uri = updatedValues.jwks_uri;\r\n}\r\nfunction updateCloudDiscoveryMetadata(authorityMetadata, updatedValues, fromNetwork) {\r\n authorityMetadata.aliases = updatedValues.aliases;\r\n authorityMetadata.preferred_cache = updatedValues.preferred_cache;\r\n authorityMetadata.preferred_network = updatedValues.preferred_network;\r\n authorityMetadata.aliasesFromNetwork = fromNetwork;\r\n}\r\n/**\r\n * Returns whether or not the data needs to be refreshed\r\n */\r\nfunction isAuthorityMetadataExpired(metadata) {\r\n return metadata.expiresAt <= nowSeconds();\r\n}\n\n/*! @azure/msal-common v15.13.2 2025-11-19 */\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * The authority class validates the authority URIs used by the user, and retrieves the OpenID Configuration Data from the\r\n * endpoint. It will store the pertinent config data in this object for use during token calls.\r\n * @internal\r\n */\r\nclass Authority {\r\n constructor(authority, networkInterface, cacheManager, authorityOptions, logger, correlationId, performanceClient, managedIdentity) {\r\n this.canonicalAuthority = authority;\r\n this._canonicalAuthority.validateAsUri();\r\n this.networkInterface = networkInterface;\r\n this.cacheManager = cacheManager;\r\n this.authorityOptions = authorityOptions;\r\n this.regionDiscoveryMetadata = {\r\n region_used: undefined,\r\n region_source: undefined,\r\n region_outcome: undefined,\r\n };\r\n this.logger = logger;\r\n this.performanceClient = performanceClient;\r\n this.correlationId = correlationId;\r\n this.managedIdentity = managedIdentity || false;\r\n this.regionDiscovery = new RegionDiscovery(networkInterface, this.logger, this.performanceClient, this.correlationId);\r\n }\r\n /**\r\n * Get {@link AuthorityType}\r\n * @param authorityUri {@link IUri}\r\n * @private\r\n */\r\n getAuthorityType(authorityUri) {\r\n // CIAM auth url pattern is being standardized as: .ciamlogin.com\r\n if (authorityUri.HostNameAndPort.endsWith(Constants$1.CIAM_AUTH_URL)) {\r\n return AuthorityType.Ciam;\r\n }\r\n const pathSegments = authorityUri.PathSegments;\r\n if (pathSegments.length) {\r\n switch (pathSegments[0].toLowerCase()) {\r\n case Constants$1.ADFS:\r\n return AuthorityType.Adfs;\r\n case Constants$1.DSTS:\r\n return AuthorityType.Dsts;\r\n }\r\n }\r\n return AuthorityType.Default;\r\n }\r\n // See above for AuthorityType\r\n get authorityType() {\r\n return this.getAuthorityType(this.canonicalAuthorityUrlComponents);\r\n }\r\n /**\r\n * ProtocolMode enum representing the way endpoints are constructed.\r\n */\r\n get protocolMode() {\r\n return this.authorityOptions.protocolMode;\r\n }\r\n /**\r\n * Returns authorityOptions which can be used to reinstantiate a new authority instance\r\n */\r\n get options() {\r\n return this.authorityOptions;\r\n }\r\n /**\r\n * A URL that is the authority set by the developer\r\n */\r\n get canonicalAuthority() {\r\n return this._canonicalAuthority.urlString;\r\n }\r\n /**\r\n * Sets canonical authority.\r\n */\r\n set canonicalAuthority(url) {\r\n this._canonicalAuthority = new UrlString(url);\r\n this._canonicalAuthority.validateAsUri();\r\n this._canonicalAuthorityUrlComponents = null;\r\n }\r\n /**\r\n * Get authority components.\r\n */\r\n get canonicalAuthorityUrlComponents() {\r\n if (!this._canonicalAuthorityUrlComponents) {\r\n this._canonicalAuthorityUrlComponents =\r\n this._canonicalAuthority.getUrlComponents();\r\n }\r\n return this._canonicalAuthorityUrlComponents;\r\n }\r\n /**\r\n * Get hostname and port i.e. login.microsoftonline.com\r\n */\r\n get hostnameAndPort() {\r\n return this.canonicalAuthorityUrlComponents.HostNameAndPort.toLowerCase();\r\n }\r\n /**\r\n * Get tenant for authority.\r\n */\r\n get tenant() {\r\n return this.canonicalAuthorityUrlComponents.PathSegments[0];\r\n }\r\n /**\r\n * OAuth /authorize endpoint for requests\r\n */\r\n get authorizationEndpoint() {\r\n if (this.discoveryComplete()) {\r\n return this.replacePath(this.metadata.authorization_endpoint);\r\n }\r\n else {\r\n throw createClientAuthError(endpointResolutionError);\r\n }\r\n }\r\n /**\r\n * OAuth /token endpoint for requests\r\n */\r\n get tokenEndpoint() {\r\n if (this.discoveryComplete()) {\r\n return this.replacePath(this.metadata.token_endpoint);\r\n }\r\n else {\r\n throw createClientAuthError(endpointResolutionError);\r\n }\r\n }\r\n get deviceCodeEndpoint() {\r\n if (this.discoveryComplete()) {\r\n return this.replacePath(this.metadata.token_endpoint.replace(\"/token\", \"/devicecode\"));\r\n }\r\n else {\r\n throw createClientAuthError(endpointResolutionError);\r\n }\r\n }\r\n /**\r\n * OAuth logout endpoint for requests\r\n */\r\n get endSessionEndpoint() {\r\n if (this.discoveryComplete()) {\r\n // ROPC policies may not have end_session_endpoint set\r\n if (!this.metadata.end_session_endpoint) {\r\n throw createClientAuthError(endSessionEndpointNotSupported);\r\n }\r\n return this.replacePath(this.metadata.end_session_endpoint);\r\n }\r\n else {\r\n throw createClientAuthError(endpointResolutionError);\r\n }\r\n }\r\n /**\r\n * OAuth issuer for requests\r\n */\r\n get selfSignedJwtAudience() {\r\n if (this.discoveryComplete()) {\r\n return this.replacePath(this.metadata.issuer);\r\n }\r\n else {\r\n throw createClientAuthError(endpointResolutionError);\r\n }\r\n }\r\n /**\r\n * Jwks_uri for token signing keys\r\n */\r\n get jwksUri() {\r\n if (this.discoveryComplete()) {\r\n return this.replacePath(this.metadata.jwks_uri);\r\n }\r\n else {\r\n throw createClientAuthError(endpointResolutionError);\r\n }\r\n }\r\n /**\r\n * Returns a flag indicating that tenant name can be replaced in authority {@link IUri}\r\n * @param authorityUri {@link IUri}\r\n * @private\r\n */\r\n canReplaceTenant(authorityUri) {\r\n return (authorityUri.PathSegments.length === 1 &&\r\n !Authority.reservedTenantDomains.has(authorityUri.PathSegments[0]) &&\r\n this.getAuthorityType(authorityUri) === AuthorityType.Default &&\r\n this.protocolMode !== ProtocolMode.OIDC);\r\n }\r\n /**\r\n * Replaces tenant in url path with current tenant. Defaults to common.\r\n * @param urlString\r\n */\r\n replaceTenant(urlString) {\r\n return urlString.replace(/{tenant}|{tenantid}/g, this.tenant);\r\n }\r\n /**\r\n * Replaces path such as tenant or policy with the current tenant or policy.\r\n * @param urlString\r\n */\r\n replacePath(urlString) {\r\n let endpoint = urlString;\r\n const cachedAuthorityUrl = new UrlString(this.metadata.canonical_authority);\r\n const cachedAuthorityUrlComponents = cachedAuthorityUrl.getUrlComponents();\r\n const cachedAuthorityParts = cachedAuthorityUrlComponents.PathSegments;\r\n const currentAuthorityParts = this.canonicalAuthorityUrlComponents.PathSegments;\r\n currentAuthorityParts.forEach((currentPart, index) => {\r\n let cachedPart = cachedAuthorityParts[index];\r\n if (index === 0 &&\r\n this.canReplaceTenant(cachedAuthorityUrlComponents)) {\r\n const tenantId = new UrlString(this.metadata.authorization_endpoint).getUrlComponents().PathSegments[0];\r\n /**\r\n * Check if AAD canonical authority contains tenant domain name, for example \"testdomain.onmicrosoft.com\",\r\n * by comparing its first path segment to the corresponding authorization endpoint path segment, which is\r\n * always resolved with tenant id by OIDC.\r\n */\r\n if (cachedPart !== tenantId) {\r\n this.logger.verbose(`Replacing tenant domain name ${cachedPart} with id ${tenantId}`);\r\n cachedPart = tenantId;\r\n }\r\n }\r\n if (currentPart !== cachedPart) {\r\n endpoint = endpoint.replace(`/${cachedPart}/`, `/${currentPart}/`);\r\n }\r\n });\r\n return this.replaceTenant(endpoint);\r\n }\r\n /**\r\n * The default open id configuration endpoint for any canonical authority.\r\n */\r\n get defaultOpenIdConfigurationEndpoint() {\r\n const canonicalAuthorityHost = this.hostnameAndPort;\r\n if (this.canonicalAuthority.endsWith(\"v2.0/\") ||\r\n this.authorityType === AuthorityType.Adfs ||\r\n (this.protocolMode === ProtocolMode.OIDC &&\r\n !this.isAliasOfKnownMicrosoftAuthority(canonicalAuthorityHost))) {\r\n return `${this.canonicalAuthority}.well-known/openid-configuration`;\r\n }\r\n return `${this.canonicalAuthority}v2.0/.well-known/openid-configuration`;\r\n }\r\n /**\r\n * Boolean that returns whether or not tenant discovery has been completed.\r\n */\r\n discoveryComplete() {\r\n return !!this.metadata;\r\n }\r\n /**\r\n * Perform endpoint discovery to discover aliases, preferred_cache, preferred_network\r\n * and the /authorize, /token and logout endpoints.\r\n */\r\n async resolveEndpointsAsync() {\r\n this.performanceClient?.addQueueMeasurement(PerformanceEvents.AuthorityResolveEndpointsAsync, this.correlationId);\r\n const metadataEntity = this.getCurrentMetadataEntity();\r\n const cloudDiscoverySource = await invokeAsync(this.updateCloudDiscoveryMetadata.bind(this), PerformanceEvents.AuthorityUpdateCloudDiscoveryMetadata, this.logger, this.performanceClient, this.correlationId)(metadataEntity);\r\n this.canonicalAuthority = this.canonicalAuthority.replace(this.hostnameAndPort, metadataEntity.preferred_network);\r\n const endpointSource = await invokeAsync(this.updateEndpointMetadata.bind(this), PerformanceEvents.AuthorityUpdateEndpointMetadata, this.logger, this.performanceClient, this.correlationId)(metadataEntity);\r\n this.updateCachedMetadata(metadataEntity, cloudDiscoverySource, {\r\n source: endpointSource,\r\n });\r\n this.performanceClient?.addFields({\r\n cloudDiscoverySource: cloudDiscoverySource,\r\n authorityEndpointSource: endpointSource,\r\n }, this.correlationId);\r\n }\r\n /**\r\n * Returns metadata entity from cache if it exists, otherwiser returns a new metadata entity built\r\n * from the configured canonical authority\r\n * @returns\r\n */\r\n getCurrentMetadataEntity() {\r\n let metadataEntity = this.cacheManager.getAuthorityMetadataByAlias(this.hostnameAndPort);\r\n if (!metadataEntity) {\r\n metadataEntity = {\r\n aliases: [],\r\n preferred_cache: this.hostnameAndPort,\r\n preferred_network: this.hostnameAndPort,\r\n canonical_authority: this.canonicalAuthority,\r\n authorization_endpoint: \"\",\r\n token_endpoint: \"\",\r\n end_session_endpoint: \"\",\r\n issuer: \"\",\r\n aliasesFromNetwork: false,\r\n endpointsFromNetwork: false,\r\n expiresAt: generateAuthorityMetadataExpiresAt(),\r\n jwks_uri: \"\",\r\n };\r\n }\r\n return metadataEntity;\r\n }\r\n /**\r\n * Updates cached metadata based on metadata source and sets the instance's metadata\r\n * property to the same value\r\n * @param metadataEntity\r\n * @param cloudDiscoverySource\r\n * @param endpointMetadataResult\r\n */\r\n updateCachedMetadata(metadataEntity, cloudDiscoverySource, endpointMetadataResult) {\r\n if (cloudDiscoverySource !== AuthorityMetadataSource.CACHE &&\r\n endpointMetadataResult?.source !== AuthorityMetadataSource.CACHE) {\r\n // Reset the expiration time unless both values came from a successful cache lookup\r\n metadataEntity.expiresAt =\r\n generateAuthorityMetadataExpiresAt();\r\n metadataEntity.canonical_authority = this.canonicalAuthority;\r\n }\r\n const cacheKey = this.cacheManager.generateAuthorityMetadataCacheKey(metadataEntity.preferred_cache);\r\n this.cacheManager.setAuthorityMetadata(cacheKey, metadataEntity);\r\n this.metadata = metadataEntity;\r\n }\r\n /**\r\n * Update AuthorityMetadataEntity with new endpoints and return where the information came from\r\n * @param metadataEntity\r\n */\r\n async updateEndpointMetadata(metadataEntity) {\r\n this.performanceClient?.addQueueMeasurement(PerformanceEvents.AuthorityUpdateEndpointMetadata, this.correlationId);\r\n const localMetadata = this.updateEndpointMetadataFromLocalSources(metadataEntity);\r\n // Further update may be required for hardcoded metadata if regional metadata is preferred\r\n if (localMetadata) {\r\n if (localMetadata.source ===\r\n AuthorityMetadataSource.HARDCODED_VALUES) {\r\n // If the user prefers to use an azure region replace the global endpoints with regional information.\r\n if (this.authorityOptions.azureRegionConfiguration?.azureRegion) {\r\n if (localMetadata.metadata) {\r\n const hardcodedMetadata = await invokeAsync(this.updateMetadataWithRegionalInformation.bind(this), PerformanceEvents.AuthorityUpdateMetadataWithRegionalInformation, this.logger, this.performanceClient, this.correlationId)(localMetadata.metadata);\r\n updateAuthorityEndpointMetadata(metadataEntity, hardcodedMetadata, false);\r\n metadataEntity.canonical_authority =\r\n this.canonicalAuthority;\r\n }\r\n }\r\n }\r\n return localMetadata.source;\r\n }\r\n // Get metadata from network if local sources aren't available\r\n let metadata = await invokeAsync(this.getEndpointMetadataFromNetwork.bind(this), PerformanceEvents.AuthorityGetEndpointMetadataFromNetwork, this.logger, this.performanceClient, this.correlationId)();\r\n if (metadata) {\r\n // If the user prefers to use an azure region replace the global endpoints with regional information.\r\n if (this.authorityOptions.azureRegionConfiguration?.azureRegion) {\r\n metadata = await invokeAsync(this.updateMetadataWithRegionalInformation.bind(this), PerformanceEvents.AuthorityUpdateMetadataWithRegionalInformation, this.logger, this.performanceClient, this.correlationId)(metadata);\r\n }\r\n updateAuthorityEndpointMetadata(metadataEntity, metadata, true);\r\n return AuthorityMetadataSource.NETWORK;\r\n }\r\n else {\r\n // Metadata could not be obtained from the config, cache, network or hardcoded values\r\n throw createClientAuthError(openIdConfigError, this.defaultOpenIdConfigurationEndpoint);\r\n }\r\n }\r\n /**\r\n * Updates endpoint metadata from local sources and returns where the information was retrieved from and the metadata config\r\n * response if the source is hardcoded metadata\r\n * @param metadataEntity\r\n * @returns\r\n */\r\n updateEndpointMetadataFromLocalSources(metadataEntity) {\r\n this.logger.verbose(\"Attempting to get endpoint metadata from authority configuration\");\r\n const configMetadata = this.getEndpointMetadataFromConfig();\r\n if (configMetadata) {\r\n this.logger.verbose(\"Found endpoint metadata in authority configuration\");\r\n updateAuthorityEndpointMetadata(metadataEntity, configMetadata, false);\r\n return {\r\n source: AuthorityMetadataSource.CONFIG,\r\n };\r\n }\r\n this.logger.verbose(\"Did not find endpoint metadata in the config... Attempting to get endpoint metadata from the hardcoded values.\");\r\n // skipAuthorityMetadataCache is used to bypass hardcoded authority metadata and force a network metadata cache lookup and network metadata request if no cached response is available.\r\n if (this.authorityOptions.skipAuthorityMetadataCache) {\r\n this.logger.verbose(\"Skipping hardcoded metadata cache since skipAuthorityMetadataCache is set to true. Attempting to get endpoint metadata from the network metadata cache.\");\r\n }\r\n else {\r\n const hardcodedMetadata = this.getEndpointMetadataFromHardcodedValues();\r\n if (hardcodedMetadata) {\r\n updateAuthorityEndpointMetadata(metadataEntity, hardcodedMetadata, false);\r\n return {\r\n source: AuthorityMetadataSource.HARDCODED_VALUES,\r\n metadata: hardcodedMetadata,\r\n };\r\n }\r\n else {\r\n this.logger.verbose(\"Did not find endpoint metadata in hardcoded values... Attempting to get endpoint metadata from the network metadata cache.\");\r\n }\r\n }\r\n // Check cached metadata entity expiration status\r\n const metadataEntityExpired = isAuthorityMetadataExpired(metadataEntity);\r\n if (this.isAuthoritySameType(metadataEntity) &&\r\n metadataEntity.endpointsFromNetwork &&\r\n !metadataEntityExpired) {\r\n // No need to update\r\n this.logger.verbose(\"Found endpoint metadata in the cache.\");\r\n return { source: AuthorityMetadataSource.CACHE };\r\n }\r\n else if (metadataEntityExpired) {\r\n this.logger.verbose(\"The metadata entity is expired.\");\r\n }\r\n return null;\r\n }\r\n /**\r\n * Compares the number of url components after the domain to determine if the cached\r\n * authority metadata can be used for the requested authority. Protects against same domain different\r\n * authority such as login.microsoftonline.com/tenant and login.microsoftonline.com/tfp/tenant/policy\r\n * @param metadataEntity\r\n */\r\n isAuthoritySameType(metadataEntity) {\r\n const cachedAuthorityUrl = new UrlString(metadataEntity.canonical_authority);\r\n const cachedParts = cachedAuthorityUrl.getUrlComponents().PathSegments;\r\n return (cachedParts.length ===\r\n this.canonicalAuthorityUrlComponents.PathSegments.length);\r\n }\r\n /**\r\n * Parse authorityMetadata config option\r\n */\r\n getEndpointMetadataFromConfig() {\r\n if (this.authorityOptions.authorityMetadata) {\r\n try {\r\n return JSON.parse(this.authorityOptions.authorityMetadata);\r\n }\r\n catch (e) {\r\n throw createClientConfigurationError(invalidAuthorityMetadata);\r\n }\r\n }\r\n return null;\r\n }\r\n /**\r\n * Gets OAuth endpoints from the given OpenID configuration endpoint.\r\n *\r\n * @param hasHardcodedMetadata boolean\r\n */\r\n async getEndpointMetadataFromNetwork() {\r\n this.performanceClient?.addQueueMeasurement(PerformanceEvents.AuthorityGetEndpointMetadataFromNetwork, this.correlationId);\r\n const options = {};\r\n /*\r\n * TODO: Add a timeout if the authority exists in our library's\r\n * hardcoded list of metadata\r\n */\r\n const openIdConfigurationEndpoint = this.defaultOpenIdConfigurationEndpoint;\r\n this.logger.verbose(`Authority.getEndpointMetadataFromNetwork: attempting to retrieve OAuth endpoints from ${openIdConfigurationEndpoint}`);\r\n try {\r\n const response = await this.networkInterface.sendGetRequestAsync(openIdConfigurationEndpoint, options);\r\n const isValidResponse = isOpenIdConfigResponse(response.body);\r\n if (isValidResponse) {\r\n return response.body;\r\n }\r\n else {\r\n this.logger.verbose(`Authority.getEndpointMetadataFromNetwork: could not parse response as OpenID configuration`);\r\n return null;\r\n }\r\n }\r\n catch (e) {\r\n this.logger.verbose(`Authority.getEndpointMetadataFromNetwork: ${e}`);\r\n return null;\r\n }\r\n }\r\n /**\r\n * Get OAuth endpoints for common authorities.\r\n */\r\n getEndpointMetadataFromHardcodedValues() {\r\n if (this.hostnameAndPort in EndpointMetadata) {\r\n return EndpointMetadata[this.hostnameAndPort];\r\n }\r\n return null;\r\n }\r\n /**\r\n * Update the retrieved metadata with regional information.\r\n * User selected Azure region will be used if configured.\r\n */\r\n async updateMetadataWithRegionalInformation(metadata) {\r\n this.performanceClient?.addQueueMeasurement(PerformanceEvents.AuthorityUpdateMetadataWithRegionalInformation, this.correlationId);\r\n const userConfiguredAzureRegion = this.authorityOptions.azureRegionConfiguration?.azureRegion;\r\n if (userConfiguredAzureRegion) {\r\n if (userConfiguredAzureRegion !==\r\n Constants$1.AZURE_REGION_AUTO_DISCOVER_FLAG) {\r\n this.regionDiscoveryMetadata.region_outcome =\r\n RegionDiscoveryOutcomes.CONFIGURED_NO_AUTO_DETECTION;\r\n this.regionDiscoveryMetadata.region_used =\r\n userConfiguredAzureRegion;\r\n return Authority.replaceWithRegionalInformation(metadata, userConfiguredAzureRegion);\r\n }\r\n const autodetectedRegionName = await invokeAsync(this.regionDiscovery.detectRegion.bind(this.regionDiscovery), PerformanceEvents.RegionDiscoveryDetectRegion, this.logger, this.performanceClient, this.correlationId)(this.authorityOptions.azureRegionConfiguration\r\n ?.environmentRegion, this.regionDiscoveryMetadata);\r\n if (autodetectedRegionName) {\r\n this.regionDiscoveryMetadata.region_outcome =\r\n RegionDiscoveryOutcomes.AUTO_DETECTION_REQUESTED_SUCCESSFUL;\r\n this.regionDiscoveryMetadata.region_used =\r\n autodetectedRegionName;\r\n return Authority.replaceWithRegionalInformation(metadata, autodetectedRegionName);\r\n }\r\n this.regionDiscoveryMetadata.region_outcome =\r\n RegionDiscoveryOutcomes.AUTO_DETECTION_REQUESTED_FAILED;\r\n }\r\n return metadata;\r\n }\r\n /**\r\n * Updates the AuthorityMetadataEntity with new aliases, preferred_network and preferred_cache\r\n * and returns where the information was retrieved from\r\n * @param metadataEntity\r\n * @returns AuthorityMetadataSource\r\n */\r\n async updateCloudDiscoveryMetadata(metadataEntity) {\r\n this.performanceClient?.addQueueMeasurement(PerformanceEvents.AuthorityUpdateCloudDiscoveryMetadata, this.correlationId);\r\n const localMetadataSource = this.updateCloudDiscoveryMetadataFromLocalSources(metadataEntity);\r\n if (localMetadataSource) {\r\n return localMetadataSource;\r\n }\r\n // Fallback to network as metadata source\r\n const metadata = await invokeAsync(this.getCloudDiscoveryMetadataFromNetwork.bind(this), PerformanceEvents.AuthorityGetCloudDiscoveryMetadataFromNetwork, this.logger, this.performanceClient, this.correlationId)();\r\n if (metadata) {\r\n updateCloudDiscoveryMetadata(metadataEntity, metadata, true);\r\n return AuthorityMetadataSource.NETWORK;\r\n }\r\n // Metadata could not be obtained from the config, cache, network or hardcoded values\r\n throw createClientConfigurationError(untrustedAuthority);\r\n }\r\n updateCloudDiscoveryMetadataFromLocalSources(metadataEntity) {\r\n this.logger.verbose(\"Attempting to get cloud discovery metadata from authority configuration\");\r\n this.logger.verbosePii(`Known Authorities: ${this.authorityOptions.knownAuthorities ||\r\n Constants$1.NOT_APPLICABLE}`);\r\n this.logger.verbosePii(`Authority Metadata: ${this.authorityOptions.authorityMetadata ||\r\n Constants$1.NOT_APPLICABLE}`);\r\n this.logger.verbosePii(`Canonical Authority: ${metadataEntity.canonical_authority || Constants$1.NOT_APPLICABLE}`);\r\n const metadata = this.getCloudDiscoveryMetadataFromConfig();\r\n if (metadata) {\r\n this.logger.verbose(\"Found cloud discovery metadata in authority configuration\");\r\n updateCloudDiscoveryMetadata(metadataEntity, metadata, false);\r\n return AuthorityMetadataSource.CONFIG;\r\n }\r\n // If the cached metadata came from config but that config was not passed to this instance, we must go to hardcoded values\r\n this.logger.verbose(\"Did not find cloud discovery metadata in the config... Attempting to get cloud discovery metadata from the hardcoded values.\");\r\n if (this.options.skipAuthorityMetadataCache) {\r\n this.logger.verbose(\"Skipping hardcoded cloud discovery metadata cache since skipAuthorityMetadataCache is set to true. Attempting to get cloud discovery metadata from the network metadata cache.\");\r\n }\r\n else {\r\n const hardcodedMetadata = getCloudDiscoveryMetadataFromHardcodedValues(this.hostnameAndPort);\r\n if (hardcodedMetadata) {\r\n this.logger.verbose(\"Found cloud discovery metadata from hardcoded values.\");\r\n updateCloudDiscoveryMetadata(metadataEntity, hardcodedMetadata, false);\r\n return AuthorityMetadataSource.HARDCODED_VALUES;\r\n }\r\n this.logger.verbose(\"Did not find cloud discovery metadata in hardcoded values... Attempting to get cloud discovery metadata from the network metadata cache.\");\r\n }\r\n const metadataEntityExpired = isAuthorityMetadataExpired(metadataEntity);\r\n if (this.isAuthoritySameType(metadataEntity) &&\r\n metadataEntity.aliasesFromNetwork &&\r\n !metadataEntityExpired) {\r\n this.logger.verbose(\"Found cloud discovery metadata in the cache.\");\r\n // No need to update\r\n return AuthorityMetadataSource.CACHE;\r\n }\r\n else if (metadataEntityExpired) {\r\n this.logger.verbose(\"The metadata entity is expired.\");\r\n }\r\n return null;\r\n }\r\n /**\r\n * Parse cloudDiscoveryMetadata config or check knownAuthorities\r\n */\r\n getCloudDiscoveryMetadataFromConfig() {\r\n // CIAM does not support cloud discovery metadata\r\n if (this.authorityType === AuthorityType.Ciam) {\r\n this.logger.verbose(\"CIAM authorities do not support cloud discovery metadata, generate the aliases from authority host.\");\r\n return Authority.createCloudDiscoveryMetadataFromHost(this.hostnameAndPort);\r\n }\r\n // Check if network response was provided in config\r\n if (this.authorityOptions.cloudDiscoveryMetadata) {\r\n this.logger.verbose(\"The cloud discovery metadata has been provided as a network response, in the config.\");\r\n try {\r\n this.logger.verbose(\"Attempting to parse the cloud discovery metadata.\");\r\n const parsedResponse = JSON.parse(this.authorityOptions.cloudDiscoveryMetadata);\r\n const metadata = getCloudDiscoveryMetadataFromNetworkResponse(parsedResponse.metadata, this.hostnameAndPort);\r\n this.logger.verbose(\"Parsed the cloud discovery metadata.\");\r\n if (metadata) {\r\n this.logger.verbose(\"There is returnable metadata attached to the parsed cloud discovery metadata.\");\r\n return metadata;\r\n }\r\n else {\r\n this.logger.verbose(\"There is no metadata attached to the parsed cloud discovery metadata.\");\r\n }\r\n }\r\n catch (e) {\r\n this.logger.verbose(\"Unable to parse the cloud discovery metadata. Throwing Invalid Cloud Discovery Metadata Error.\");\r\n throw createClientConfigurationError(invalidCloudDiscoveryMetadata);\r\n }\r\n }\r\n // If cloudDiscoveryMetadata is empty or does not contain the host, check knownAuthorities\r\n if (this.isInKnownAuthorities()) {\r\n this.logger.verbose(\"The host is included in knownAuthorities. Creating new cloud discovery metadata from the host.\");\r\n return Authority.createCloudDiscoveryMetadataFromHost(this.hostnameAndPort);\r\n }\r\n return null;\r\n }\r\n /**\r\n * Called to get metadata from network if CloudDiscoveryMetadata was not populated by config\r\n *\r\n * @param hasHardcodedMetadata boolean\r\n */\r\n async getCloudDiscoveryMetadataFromNetwork() {\r\n this.performanceClient?.addQueueMeasurement(PerformanceEvents.AuthorityGetCloudDiscoveryMetadataFromNetwork, this.correlationId);\r\n const instanceDiscoveryEndpoint = `${Constants$1.AAD_INSTANCE_DISCOVERY_ENDPT}${this.canonicalAuthority}oauth2/v2.0/authorize`;\r\n const options = {};\r\n /*\r\n * TODO: Add a timeout if the authority exists in our library's\r\n * hardcoded list of metadata\r\n */\r\n let match = null;\r\n try {\r\n const response = await this.networkInterface.sendGetRequestAsync(instanceDiscoveryEndpoint, options);\r\n let typedResponseBody;\r\n let metadata;\r\n if (isCloudInstanceDiscoveryResponse(response.body)) {\r\n typedResponseBody =\r\n response.body;\r\n metadata = typedResponseBody.metadata;\r\n this.logger.verbosePii(`tenant_discovery_endpoint is: ${typedResponseBody.tenant_discovery_endpoint}`);\r\n }\r\n else if (isCloudInstanceDiscoveryErrorResponse(response.body)) {\r\n this.logger.warning(`A CloudInstanceDiscoveryErrorResponse was returned. The cloud instance discovery network request's status code is: ${response.status}`);\r\n typedResponseBody =\r\n response.body;\r\n if (typedResponseBody.error === Constants$1.INVALID_INSTANCE) {\r\n this.logger.error(\"The CloudInstanceDiscoveryErrorResponse error is invalid_instance.\");\r\n return null;\r\n }\r\n this.logger.warning(`The CloudInstanceDiscoveryErrorResponse error is ${typedResponseBody.error}`);\r\n this.logger.warning(`The CloudInstanceDiscoveryErrorResponse error description is ${typedResponseBody.error_description}`);\r\n this.logger.warning(\"Setting the value of the CloudInstanceDiscoveryMetadata (returned from the network) to []\");\r\n metadata = [];\r\n }\r\n else {\r\n this.logger.error(\"AAD did not return a CloudInstanceDiscoveryResponse or CloudInstanceDiscoveryErrorResponse\");\r\n return null;\r\n }\r\n this.logger.verbose(\"Attempting to find a match between the developer's authority and the CloudInstanceDiscoveryMetadata returned from the network request.\");\r\n match = getCloudDiscoveryMetadataFromNetworkResponse(metadata, this.hostnameAndPort);\r\n }\r\n catch (error) {\r\n if (error instanceof AuthError) {\r\n this.logger.error(`There was a network error while attempting to get the cloud discovery instance metadata.\\nError: ${error.errorCode}\\nError Description: ${error.errorMessage}`);\r\n }\r\n else {\r\n const typedError = error;\r\n this.logger.error(`A non-MSALJS error was thrown while attempting to get the cloud instance discovery metadata.\\nError: ${typedError.name}\\nError Description: ${typedError.message}`);\r\n }\r\n return null;\r\n }\r\n // Custom Domain scenario, host is trusted because Instance Discovery call succeeded\r\n if (!match) {\r\n this.logger.warning(\"The developer's authority was not found within the CloudInstanceDiscoveryMetadata returned from the network request.\");\r\n this.logger.verbose(\"Creating custom Authority for custom domain scenario.\");\r\n match = Authority.createCloudDiscoveryMetadataFromHost(this.hostnameAndPort);\r\n }\r\n return match;\r\n }\r\n /**\r\n * Helper function to determine if this host is included in the knownAuthorities config option\r\n */\r\n isInKnownAuthorities() {\r\n const matches = this.authorityOptions.knownAuthorities.filter((authority) => {\r\n return (authority &&\r\n UrlString.getDomainFromUrl(authority).toLowerCase() ===\r\n this.hostnameAndPort);\r\n });\r\n return matches.length > 0;\r\n }\r\n /**\r\n * helper function to populate the authority based on azureCloudOptions\r\n * @param authorityString\r\n * @param azureCloudOptions\r\n */\r\n static generateAuthority(authorityString, azureCloudOptions) {\r\n let authorityAzureCloudInstance;\r\n if (azureCloudOptions &&\r\n azureCloudOptions.azureCloudInstance !== AzureCloudInstance.None) {\r\n const tenant = azureCloudOptions.tenant\r\n ? azureCloudOptions.tenant\r\n : Constants$1.DEFAULT_COMMON_TENANT;\r\n authorityAzureCloudInstance = `${azureCloudOptions.azureCloudInstance}/${tenant}/`;\r\n }\r\n return authorityAzureCloudInstance\r\n ? authorityAzureCloudInstance\r\n : authorityString;\r\n }\r\n /**\r\n * Creates cloud discovery metadata object from a given host\r\n * @param host\r\n */\r\n static createCloudDiscoveryMetadataFromHost(host) {\r\n return {\r\n preferred_network: host,\r\n preferred_cache: host,\r\n aliases: [host],\r\n };\r\n }\r\n /**\r\n * helper function to generate environment from authority object\r\n */\r\n getPreferredCache() {\r\n if (this.managedIdentity) {\r\n return Constants$1.DEFAULT_AUTHORITY_HOST;\r\n }\r\n else if (this.discoveryComplete()) {\r\n return this.metadata.preferred_cache;\r\n }\r\n else {\r\n throw createClientAuthError(endpointResolutionError);\r\n }\r\n }\r\n /**\r\n * Returns whether or not the provided host is an alias of this authority instance\r\n * @param host\r\n */\r\n isAlias(host) {\r\n return this.metadata.aliases.indexOf(host) > -1;\r\n }\r\n /**\r\n * Returns whether or not the provided host is an alias of a known Microsoft authority for purposes of endpoint discovery\r\n * @param host\r\n */\r\n isAliasOfKnownMicrosoftAuthority(host) {\r\n return InstanceDiscoveryMetadataAliases.has(host);\r\n }\r\n /**\r\n * Checks whether the provided host is that of a public cloud authority\r\n *\r\n * @param authority string\r\n * @returns bool\r\n */\r\n static isPublicCloudAuthority(host) {\r\n return Constants$1.KNOWN_PUBLIC_CLOUDS.indexOf(host) >= 0;\r\n }\r\n /**\r\n * Rebuild the authority string with the region\r\n *\r\n * @param host string\r\n * @param region string\r\n */\r\n static buildRegionalAuthorityString(host, region, queryString) {\r\n // Create and validate a Url string object with the initial authority string\r\n const authorityUrlInstance = new UrlString(host);\r\n authorityUrlInstance.validateAsUri();\r\n const authorityUrlParts = authorityUrlInstance.getUrlComponents();\r\n let hostNameAndPort = `${region}.${authorityUrlParts.HostNameAndPort}`;\r\n if (this.isPublicCloudAuthority(authorityUrlParts.HostNameAndPort)) {\r\n hostNameAndPort = `${region}.${Constants$1.REGIONAL_AUTH_PUBLIC_CLOUD_SUFFIX}`;\r\n }\r\n // Include the query string portion of the url\r\n const url = UrlString.constructAuthorityUriFromObject({\r\n ...authorityUrlInstance.getUrlComponents(),\r\n HostNameAndPort: hostNameAndPort,\r\n }).urlString;\r\n // Add the query string if a query string was provided\r\n if (queryString)\r\n return `${url}?${queryString}`;\r\n return url;\r\n }\r\n /**\r\n * Replace the endpoints in the metadata object with their regional equivalents.\r\n *\r\n * @param metadata OpenIdConfigResponse\r\n * @param azureRegion string\r\n */\r\n static replaceWithRegionalInformation(metadata, azureRegion) {\r\n const regionalMetadata = { ...metadata };\r\n regionalMetadata.authorization_endpoint =\r\n Authority.buildRegionalAuthorityString(regionalMetadata.authorization_endpoint, azureRegion);\r\n regionalMetadata.token_endpoint =\r\n Authority.buildRegionalAuthorityString(regionalMetadata.token_endpoint, azureRegion);\r\n if (regionalMetadata.end_session_endpoint) {\r\n regionalMetadata.end_session_endpoint =\r\n Authority.buildRegionalAuthorityString(regionalMetadata.end_session_endpoint, azureRegion);\r\n }\r\n return regionalMetadata;\r\n }\r\n /**\r\n * Transform CIAM_AUTHORIY as per the below rules:\r\n * If no path segments found and it is a CIAM authority (hostname ends with .ciamlogin.com), then transform it\r\n *\r\n * NOTE: The transformation path should go away once STS supports CIAM with the format: `tenantIdorDomain.ciamlogin.com`\r\n * `ciamlogin.com` can also change in the future and we should accommodate the same\r\n *\r\n * @param authority\r\n */\r\n static transformCIAMAuthority(authority) {\r\n let ciamAuthority = authority;\r\n const authorityUrl = new UrlString(authority);\r\n const authorityUrlComponents = authorityUrl.getUrlComponents();\r\n // check if transformation is needed\r\n if (authorityUrlComponents.PathSegments.length === 0 &&\r\n authorityUrlComponents.HostNameAndPort.endsWith(Constants$1.CIAM_AUTH_URL)) {\r\n const tenantIdOrDomain = authorityUrlComponents.HostNameAndPort.split(\".\")[0];\r\n ciamAuthority = `${ciamAuthority}${tenantIdOrDomain}${Constants$1.AAD_TENANT_DOMAIN_SUFFIX}`;\r\n }\r\n return ciamAuthority;\r\n }\r\n}\r\n// Reserved tenant domain names that will not be replaced with tenant id\r\nAuthority.reservedTenantDomains = new Set([\r\n \"{tenant}\",\r\n \"{tenantid}\",\r\n AADAuthorityConstants.COMMON,\r\n AADAuthorityConstants.CONSUMERS,\r\n AADAuthorityConstants.ORGANIZATIONS,\r\n]);\r\n/**\r\n * Extract tenantId from authority\r\n */\r\nfunction getTenantFromAuthorityString(authority) {\r\n const authorityUrl = new UrlString(authority);\r\n const authorityUrlComponents = authorityUrl.getUrlComponents();\r\n /**\r\n * For credential matching purposes, tenantId is the last path segment of the authority URL:\r\n * AAD Authority - domain/tenantId -> Credentials are cached with realm = tenantId\r\n * B2C Authority - domain/{tenantId}?/.../policy -> Credentials are cached with realm = policy\r\n * tenantId is downcased because B2C policies can have mixed case but tfp claim is downcased\r\n *\r\n * Note that we may not have any path segments in certain OIDC scenarios.\r\n */\r\n const tenantId = authorityUrlComponents.PathSegments.slice(-1)[0]?.toLowerCase();\r\n switch (tenantId) {\r\n case AADAuthorityConstants.COMMON:\r\n case AADAuthorityConstants.ORGANIZATIONS:\r\n case AADAuthorityConstants.CONSUMERS:\r\n return undefined;\r\n default:\r\n return tenantId;\r\n }\r\n}\r\nfunction formatAuthorityUri(authorityUri) {\r\n return authorityUri.endsWith(Constants$1.FORWARD_SLASH)\r\n ? authorityUri\r\n : `${authorityUri}${Constants$1.FORWARD_SLASH}`;\r\n}\r\nfunction buildStaticAuthorityOptions(authOptions) {\r\n const rawCloudDiscoveryMetadata = authOptions.cloudDiscoveryMetadata;\r\n let cloudDiscoveryMetadata = undefined;\r\n if (rawCloudDiscoveryMetadata) {\r\n try {\r\n cloudDiscoveryMetadata = JSON.parse(rawCloudDiscoveryMetadata);\r\n }\r\n catch (e) {\r\n throw createClientConfigurationError(invalidCloudDiscoveryMetadata);\r\n }\r\n }\r\n return {\r\n canonicalAuthority: authOptions.authority\r\n ? formatAuthorityUri(authOptions.authority)\r\n : undefined,\r\n knownAuthorities: authOptions.knownAuthorities,\r\n cloudDiscoveryMetadata: cloudDiscoveryMetadata,\r\n };\r\n}\n\n/*! @azure/msal-common v15.13.2 2025-11-19 */\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * Create an authority object of the correct type based on the url\r\n * Performs basic authority validation - checks to see if the authority is of a valid type (i.e. aad, b2c, adfs)\r\n *\r\n * Also performs endpoint discovery.\r\n *\r\n * @param authorityUri\r\n * @param networkClient\r\n * @param protocolMode\r\n * @internal\r\n */\r\nasync function createDiscoveredInstance(authorityUri, networkClient, cacheManager, authorityOptions, logger, correlationId, performanceClient) {\r\n performanceClient?.addQueueMeasurement(PerformanceEvents.AuthorityFactoryCreateDiscoveredInstance, correlationId);\r\n const authorityUriFinal = Authority.transformCIAMAuthority(formatAuthorityUri(authorityUri));\r\n // Initialize authority and perform discovery endpoint check.\r\n const acquireTokenAuthority = new Authority(authorityUriFinal, networkClient, cacheManager, authorityOptions, logger, correlationId, performanceClient);\r\n try {\r\n await invokeAsync(acquireTokenAuthority.resolveEndpointsAsync.bind(acquireTokenAuthority), PerformanceEvents.AuthorityResolveEndpointsAsync, logger, performanceClient, correlationId)();\r\n return acquireTokenAuthority;\r\n }\r\n catch (e) {\r\n throw createClientAuthError(endpointResolutionError);\r\n }\r\n}\n\n/*! @azure/msal-common v15.13.2 2025-11-19 */\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * Error thrown when there is an error with the server code, for example, unavailability.\r\n */\r\nclass ServerError extends AuthError {\r\n constructor(errorCode, errorMessage, subError, errorNo, status) {\r\n super(errorCode, errorMessage, subError);\r\n this.name = \"ServerError\";\r\n this.errorNo = errorNo;\r\n this.status = status;\r\n Object.setPrototypeOf(this, ServerError.prototype);\r\n }\r\n}\n\n/*! @azure/msal-common v15.13.2 2025-11-19 */\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nfunction getRequestThumbprint(clientId, request, homeAccountId) {\r\n return {\r\n clientId: clientId,\r\n authority: request.authority,\r\n scopes: request.scopes,\r\n homeAccountIdentifier: homeAccountId,\r\n claims: request.claims,\r\n authenticationScheme: request.authenticationScheme,\r\n resourceRequestMethod: request.resourceRequestMethod,\r\n resourceRequestUri: request.resourceRequestUri,\r\n shrClaims: request.shrClaims,\r\n sshKid: request.sshKid,\r\n embeddedClientId: request.embeddedClientId || request.tokenBodyParameters?.clientId,\r\n };\r\n}\n\n/*! @azure/msal-common v15.13.2 2025-11-19 */\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/** @internal */\r\nclass ThrottlingUtils {\r\n /**\r\n * Prepares a RequestThumbprint to be stored as a key.\r\n * @param thumbprint\r\n */\r\n static generateThrottlingStorageKey(thumbprint) {\r\n return `${ThrottlingConstants.THROTTLING_PREFIX}.${JSON.stringify(thumbprint)}`;\r\n }\r\n /**\r\n * Performs necessary throttling checks before a network request.\r\n * @param cacheManager\r\n * @param thumbprint\r\n */\r\n static preProcess(cacheManager, thumbprint, correlationId) {\r\n const key = ThrottlingUtils.generateThrottlingStorageKey(thumbprint);\r\n const value = cacheManager.getThrottlingCache(key);\r\n if (value) {\r\n if (value.throttleTime < Date.now()) {\r\n cacheManager.removeItem(key, correlationId);\r\n return;\r\n }\r\n throw new ServerError(value.errorCodes?.join(\" \") || Constants$1.EMPTY_STRING, value.errorMessage, value.subError);\r\n }\r\n }\r\n /**\r\n * Performs necessary throttling checks after a network request.\r\n * @param cacheManager\r\n * @param thumbprint\r\n * @param response\r\n */\r\n static postProcess(cacheManager, thumbprint, response, correlationId) {\r\n if (ThrottlingUtils.checkResponseStatus(response) ||\r\n ThrottlingUtils.checkResponseForRetryAfter(response)) {\r\n const thumbprintValue = {\r\n throttleTime: ThrottlingUtils.calculateThrottleTime(parseInt(response.headers[HeaderNames.RETRY_AFTER])),\r\n error: response.body.error,\r\n errorCodes: response.body.error_codes,\r\n errorMessage: response.body.error_description,\r\n subError: response.body.suberror,\r\n };\r\n cacheManager.setThrottlingCache(ThrottlingUtils.generateThrottlingStorageKey(thumbprint), thumbprintValue, correlationId);\r\n }\r\n }\r\n /**\r\n * Checks a NetworkResponse object's status codes against 429 or 5xx\r\n * @param response\r\n */\r\n static checkResponseStatus(response) {\r\n return (response.status === 429 ||\r\n (response.status >= 500 && response.status < 600));\r\n }\r\n /**\r\n * Checks a NetworkResponse object's RetryAfter header\r\n * @param response\r\n */\r\n static checkResponseForRetryAfter(response) {\r\n if (response.headers) {\r\n return (response.headers.hasOwnProperty(HeaderNames.RETRY_AFTER) &&\r\n (response.status < 200 || response.status >= 300));\r\n }\r\n return false;\r\n }\r\n /**\r\n * Calculates the Unix-time value for a throttle to expire given throttleTime in seconds.\r\n * @param throttleTime\r\n */\r\n static calculateThrottleTime(throttleTime) {\r\n const time = throttleTime <= 0 ? 0 : throttleTime;\r\n const currentSeconds = Date.now() / 1000;\r\n return Math.floor(Math.min(currentSeconds +\r\n (time || ThrottlingConstants.DEFAULT_THROTTLE_TIME_SECONDS), currentSeconds +\r\n ThrottlingConstants.DEFAULT_MAX_THROTTLE_TIME_SECONDS) * 1000);\r\n }\r\n static removeThrottle(cacheManager, clientId, request, homeAccountIdentifier) {\r\n const thumbprint = getRequestThumbprint(clientId, request, homeAccountIdentifier);\r\n const key = this.generateThrottlingStorageKey(thumbprint);\r\n cacheManager.removeItem(key, request.correlationId);\r\n }\r\n}\n\n/*! @azure/msal-common v15.13.2 2025-11-19 */\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * Represents network related errors\r\n */\r\nclass NetworkError extends AuthError {\r\n constructor(error, httpStatus, responseHeaders) {\r\n super(error.errorCode, error.errorMessage, error.subError);\r\n Object.setPrototypeOf(this, NetworkError.prototype);\r\n this.name = \"NetworkError\";\r\n this.error = error;\r\n this.httpStatus = httpStatus;\r\n this.responseHeaders = responseHeaders;\r\n }\r\n}\n\n/*! @azure/msal-common v15.13.2 2025-11-19 */\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * Base application class which will construct requests to send to and handle responses from the Microsoft STS using the authorization code flow.\r\n * @internal\r\n */\r\nclass BaseClient {\r\n constructor(configuration, performanceClient) {\r\n // Set the configuration\r\n this.config = buildClientConfiguration(configuration);\r\n // Initialize the logger\r\n this.logger = new Logger(this.config.loggerOptions, name$1, version$1);\r\n // Initialize crypto\r\n this.cryptoUtils = this.config.cryptoInterface;\r\n // Initialize storage interface\r\n this.cacheManager = this.config.storageInterface;\r\n // Set the network interface\r\n this.networkClient = this.config.networkInterface;\r\n // Set TelemetryManager\r\n this.serverTelemetryManager = this.config.serverTelemetryManager;\r\n // set Authority\r\n this.authority = this.config.authOptions.authority;\r\n // set performance telemetry client\r\n this.performanceClient = performanceClient;\r\n }\r\n /**\r\n * Creates default headers for requests to token endpoint\r\n */\r\n createTokenRequestHeaders(ccsCred) {\r\n const headers = {};\r\n headers[HeaderNames.CONTENT_TYPE] = Constants$1.URL_FORM_CONTENT_TYPE;\r\n if (!this.config.systemOptions.preventCorsPreflight && ccsCred) {\r\n switch (ccsCred.type) {\r\n case CcsCredentialType.HOME_ACCOUNT_ID:\r\n try {\r\n const clientInfo = buildClientInfoFromHomeAccountId(ccsCred.credential);\r\n headers[HeaderNames.CCS_HEADER] = `Oid:${clientInfo.uid}@${clientInfo.utid}`;\r\n }\r\n catch (e) {\r\n this.logger.verbose(\"Could not parse home account ID for CCS Header: \" +\r\n e);\r\n }\r\n break;\r\n case CcsCredentialType.UPN:\r\n headers[HeaderNames.CCS_HEADER] = `UPN: ${ccsCred.credential}`;\r\n break;\r\n }\r\n }\r\n return headers;\r\n }\r\n /**\r\n * Http post to token endpoint\r\n * @param tokenEndpoint\r\n * @param queryString\r\n * @param headers\r\n * @param thumbprint\r\n */\r\n async executePostToTokenEndpoint(tokenEndpoint, queryString, headers, thumbprint, correlationId, queuedEvent) {\r\n if (queuedEvent) {\r\n this.performanceClient?.addQueueMeasurement(queuedEvent, correlationId);\r\n }\r\n const response = await this.sendPostRequest(thumbprint, tokenEndpoint, { body: queryString, headers: headers }, correlationId);\r\n if (this.config.serverTelemetryManager &&\r\n response.status < 500 &&\r\n response.status !== 429) {\r\n // Telemetry data successfully logged by server, clear Telemetry cache\r\n this.config.serverTelemetryManager.clearTelemetryCache();\r\n }\r\n return response;\r\n }\r\n /**\r\n * Wraps sendPostRequestAsync with necessary preflight and postflight logic\r\n * @param thumbprint - Request thumbprint for throttling\r\n * @param tokenEndpoint - Endpoint to make the POST to\r\n * @param options - Body and Headers to include on the POST request\r\n * @param correlationId - CorrelationId for telemetry\r\n */\r\n async sendPostRequest(thumbprint, tokenEndpoint, options, correlationId) {\r\n ThrottlingUtils.preProcess(this.cacheManager, thumbprint, correlationId);\r\n let response;\r\n try {\r\n response = await invokeAsync((this.networkClient.sendPostRequestAsync.bind(this.networkClient)), PerformanceEvents.NetworkClientSendPostRequestAsync, this.logger, this.performanceClient, correlationId)(tokenEndpoint, options);\r\n const responseHeaders = response.headers || {};\r\n this.performanceClient?.addFields({\r\n refreshTokenSize: response.body.refresh_token?.length || 0,\r\n httpVerToken: responseHeaders[HeaderNames.X_MS_HTTP_VERSION] || \"\",\r\n requestId: responseHeaders[HeaderNames.X_MS_REQUEST_ID] || \"\",\r\n }, correlationId);\r\n }\r\n catch (e) {\r\n if (e instanceof NetworkError) {\r\n const responseHeaders = e.responseHeaders;\r\n if (responseHeaders) {\r\n this.performanceClient?.addFields({\r\n httpVerToken: responseHeaders[HeaderNames.X_MS_HTTP_VERSION] || \"\",\r\n requestId: responseHeaders[HeaderNames.X_MS_REQUEST_ID] ||\r\n \"\",\r\n contentTypeHeader: responseHeaders[HeaderNames.CONTENT_TYPE] ||\r\n undefined,\r\n contentLengthHeader: responseHeaders[HeaderNames.CONTENT_LENGTH] ||\r\n undefined,\r\n httpStatus: e.httpStatus,\r\n }, correlationId);\r\n }\r\n throw e.error;\r\n }\r\n if (e instanceof AuthError) {\r\n throw e;\r\n }\r\n else {\r\n throw createClientAuthError(networkError);\r\n }\r\n }\r\n ThrottlingUtils.postProcess(this.cacheManager, thumbprint, response, correlationId);\r\n return response;\r\n }\r\n /**\r\n * Updates the authority object of the client. Endpoint discovery must be completed.\r\n * @param updatedAuthority\r\n */\r\n async updateAuthority(cloudInstanceHostname, correlationId) {\r\n this.performanceClient?.addQueueMeasurement(PerformanceEvents.UpdateTokenEndpointAuthority, correlationId);\r\n const cloudInstanceAuthorityUri = `https://${cloudInstanceHostname}/${this.authority.tenant}/`;\r\n const cloudInstanceAuthority = await createDiscoveredInstance(cloudInstanceAuthorityUri, this.networkClient, this.cacheManager, this.authority.options, this.logger, correlationId, this.performanceClient);\r\n this.authority = cloudInstanceAuthority;\r\n }\r\n /**\r\n * Creates query string for the /token request\r\n * @param request\r\n */\r\n createTokenQueryParameters(request) {\r\n const parameters = new Map();\r\n if (request.embeddedClientId) {\r\n addBrokerParameters(parameters, this.config.authOptions.clientId, this.config.authOptions.redirectUri);\r\n }\r\n if (request.tokenQueryParameters) {\r\n addExtraQueryParameters(parameters, request.tokenQueryParameters);\r\n }\r\n addCorrelationId(parameters, request.correlationId);\r\n instrumentBrokerParams(parameters, request.correlationId, this.performanceClient);\r\n return mapToQueryString(parameters);\r\n }\r\n}\n\n/*! @azure/msal-common v15.13.2 2025-11-19 */\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n// Codes defined by MSAL\r\nconst noTokensFound = \"no_tokens_found\";\r\nconst nativeAccountUnavailable = \"native_account_unavailable\";\r\nconst refreshTokenExpired = \"refresh_token_expired\";\r\nconst uxNotAllowed = \"ux_not_allowed\";\r\n// Codes potentially returned by server\r\nconst interactionRequired = \"interaction_required\";\r\nconst consentRequired = \"consent_required\";\r\nconst loginRequired = \"login_required\";\r\nconst badToken = \"bad_token\";\n\nvar InteractionRequiredAuthErrorCodes = /*#__PURE__*/Object.freeze({\n __proto__: null,\n badToken: badToken,\n consentRequired: consentRequired,\n interactionRequired: interactionRequired,\n loginRequired: loginRequired,\n nativeAccountUnavailable: nativeAccountUnavailable,\n noTokensFound: noTokensFound,\n refreshTokenExpired: refreshTokenExpired,\n uxNotAllowed: uxNotAllowed\n});\n\n/*! @azure/msal-common v15.13.2 2025-11-19 */\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * InteractionRequiredServerErrorMessage contains string constants used by error codes and messages returned by the server indicating interaction is required\r\n */\r\nconst InteractionRequiredServerErrorMessage = [\r\n interactionRequired,\r\n consentRequired,\r\n loginRequired,\r\n badToken,\r\n uxNotAllowed,\r\n];\r\nconst InteractionRequiredAuthSubErrorMessage = [\r\n \"message_only\",\r\n \"additional_action\",\r\n \"basic_action\",\r\n \"user_password_expired\",\r\n \"consent_required\",\r\n \"bad_token\",\r\n];\r\nconst InteractionRequiredAuthErrorMessages = {\r\n [noTokensFound]: \"No refresh token found in the cache. Please sign-in.\",\r\n [nativeAccountUnavailable]: \"The requested account is not available in the native broker. It may have been deleted or logged out. Please sign-in again using an interactive API.\",\r\n [refreshTokenExpired]: \"Refresh token has expired.\",\r\n [badToken]: \"Identity provider returned bad_token due to an expired or invalid refresh token. Please invoke an interactive API to resolve.\",\r\n [uxNotAllowed]: \"`canShowUI` flag in Edge was set to false. User interaction required on web page. Please invoke an interactive API to resolve.\",\r\n};\r\n/**\r\n * Interaction required errors defined by the SDK\r\n * @deprecated Use InteractionRequiredAuthErrorCodes instead\r\n */\r\nconst InteractionRequiredAuthErrorMessage = {\r\n noTokensFoundError: {\r\n code: noTokensFound,\r\n desc: InteractionRequiredAuthErrorMessages[noTokensFound],\r\n },\r\n native_account_unavailable: {\r\n code: nativeAccountUnavailable,\r\n desc: InteractionRequiredAuthErrorMessages[nativeAccountUnavailable],\r\n },\r\n bad_token: {\r\n code: badToken,\r\n desc: InteractionRequiredAuthErrorMessages[badToken],\r\n },\r\n};\r\n/**\r\n * Error thrown when user interaction is required.\r\n */\r\nclass InteractionRequiredAuthError extends AuthError {\r\n constructor(errorCode, errorMessage, subError, timestamp, traceId, correlationId, claims, errorNo) {\r\n super(errorCode, errorMessage, subError);\r\n Object.setPrototypeOf(this, InteractionRequiredAuthError.prototype);\r\n this.timestamp = timestamp || Constants$1.EMPTY_STRING;\r\n this.traceId = traceId || Constants$1.EMPTY_STRING;\r\n this.correlationId = correlationId || Constants$1.EMPTY_STRING;\r\n this.claims = claims || Constants$1.EMPTY_STRING;\r\n this.name = \"InteractionRequiredAuthError\";\r\n this.errorNo = errorNo;\r\n }\r\n}\r\n/**\r\n * Helper function used to determine if an error thrown by the server requires interaction to resolve\r\n * @param errorCode\r\n * @param errorString\r\n * @param subError\r\n */\r\nfunction isInteractionRequiredError(errorCode, errorString, subError) {\r\n const isInteractionRequiredErrorCode = !!errorCode &&\r\n InteractionRequiredServerErrorMessage.indexOf(errorCode) > -1;\r\n const isInteractionRequiredSubError = !!subError &&\r\n InteractionRequiredAuthSubErrorMessage.indexOf(subError) > -1;\r\n const isInteractionRequiredErrorDesc = !!errorString &&\r\n InteractionRequiredServerErrorMessage.some((irErrorCode) => {\r\n return errorString.indexOf(irErrorCode) > -1;\r\n });\r\n return (isInteractionRequiredErrorCode ||\r\n isInteractionRequiredErrorDesc ||\r\n isInteractionRequiredSubError);\r\n}\r\n/**\r\n * Creates an InteractionRequiredAuthError\r\n */\r\nfunction createInteractionRequiredAuthError(errorCode) {\r\n return new InteractionRequiredAuthError(errorCode, InteractionRequiredAuthErrorMessages[errorCode]);\r\n}\n\n/*! @azure/msal-common v15.13.2 2025-11-19 */\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * Class which provides helpers for OAuth 2.0 protocol specific values\r\n */\r\nclass ProtocolUtils {\r\n /**\r\n * Appends user state with random guid, or returns random guid.\r\n * @param userState\r\n * @param randomGuid\r\n */\r\n static setRequestState(cryptoObj, userState, meta) {\r\n const libraryState = ProtocolUtils.generateLibraryState(cryptoObj, meta);\r\n return userState\r\n ? `${libraryState}${Constants$1.RESOURCE_DELIM}${userState}`\r\n : libraryState;\r\n }\r\n /**\r\n * Generates the state value used by the common library.\r\n * @param randomGuid\r\n * @param cryptoObj\r\n */\r\n static generateLibraryState(cryptoObj, meta) {\r\n if (!cryptoObj) {\r\n throw createClientAuthError(noCryptoObject);\r\n }\r\n // Create a state object containing a unique id and the timestamp of the request creation\r\n const stateObj = {\r\n id: cryptoObj.createNewGuid(),\r\n };\r\n if (meta) {\r\n stateObj.meta = meta;\r\n }\r\n const stateString = JSON.stringify(stateObj);\r\n return cryptoObj.base64Encode(stateString);\r\n }\r\n /**\r\n * Parses the state into the RequestStateObject, which contains the LibraryState info and the state passed by the user.\r\n * @param state\r\n * @param cryptoObj\r\n */\r\n static parseRequestState(cryptoObj, state) {\r\n if (!cryptoObj) {\r\n throw createClientAuthError(noCryptoObject);\r\n }\r\n if (!state) {\r\n throw createClientAuthError(invalidState);\r\n }\r\n try {\r\n // Split the state between library state and user passed state and decode them separately\r\n const splitState = state.split(Constants$1.RESOURCE_DELIM);\r\n const libraryState = splitState[0];\r\n const userState = splitState.length > 1\r\n ? splitState.slice(1).join(Constants$1.RESOURCE_DELIM)\r\n : Constants$1.EMPTY_STRING;\r\n const libraryStateString = cryptoObj.base64Decode(libraryState);\r\n const libraryStateObj = JSON.parse(libraryStateString);\r\n return {\r\n userRequestState: userState || Constants$1.EMPTY_STRING,\r\n libraryState: libraryStateObj,\r\n };\r\n }\r\n catch (e) {\r\n throw createClientAuthError(invalidState);\r\n }\r\n }\r\n}\n\n/*! @azure/msal-common v15.13.2 2025-11-19 */\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nconst KeyLocation = {\r\n SW: \"sw\"};\r\n/** @internal */\r\nclass PopTokenGenerator {\r\n constructor(cryptoUtils, performanceClient) {\r\n this.cryptoUtils = cryptoUtils;\r\n this.performanceClient = performanceClient;\r\n }\r\n /**\r\n * Generates the req_cnf validated at the RP in the POP protocol for SHR parameters\r\n * and returns an object containing the keyid, the full req_cnf string and the req_cnf string hash\r\n * @param request\r\n * @returns\r\n */\r\n async generateCnf(request, logger) {\r\n this.performanceClient?.addQueueMeasurement(PerformanceEvents.PopTokenGenerateCnf, request.correlationId);\r\n const reqCnf = await invokeAsync(this.generateKid.bind(this), PerformanceEvents.PopTokenGenerateCnf, logger, this.performanceClient, request.correlationId)(request);\r\n const reqCnfString = this.cryptoUtils.base64UrlEncode(JSON.stringify(reqCnf));\r\n return {\r\n kid: reqCnf.kid,\r\n reqCnfString,\r\n };\r\n }\r\n /**\r\n * Generates key_id for a SHR token request\r\n * @param request\r\n * @returns\r\n */\r\n async generateKid(request) {\r\n this.performanceClient?.addQueueMeasurement(PerformanceEvents.PopTokenGenerateKid, request.correlationId);\r\n const kidThumbprint = await this.cryptoUtils.getPublicKeyThumbprint(request);\r\n return {\r\n kid: kidThumbprint,\r\n xms_ksl: KeyLocation.SW,\r\n };\r\n }\r\n /**\r\n * Signs the POP access_token with the local generated key-pair\r\n * @param accessToken\r\n * @param request\r\n * @returns\r\n */\r\n async signPopToken(accessToken, keyId, request) {\r\n return this.signPayload(accessToken, keyId, request);\r\n }\r\n /**\r\n * Utility function to generate the signed JWT for an access_token\r\n * @param payload\r\n * @param kid\r\n * @param request\r\n * @param claims\r\n * @returns\r\n */\r\n async signPayload(payload, keyId, request, claims) {\r\n // Deconstruct request to extract SHR parameters\r\n const { resourceRequestMethod, resourceRequestUri, shrClaims, shrNonce, shrOptions, } = request;\r\n const resourceUrlString = resourceRequestUri\r\n ? new UrlString(resourceRequestUri)\r\n : undefined;\r\n const resourceUrlComponents = resourceUrlString?.getUrlComponents();\r\n return this.cryptoUtils.signJwt({\r\n at: payload,\r\n ts: nowSeconds(),\r\n m: resourceRequestMethod?.toUpperCase(),\r\n u: resourceUrlComponents?.HostNameAndPort,\r\n nonce: shrNonce || this.cryptoUtils.createNewGuid(),\r\n p: resourceUrlComponents?.AbsolutePath,\r\n q: resourceUrlComponents?.QueryString\r\n ? [[], resourceUrlComponents.QueryString]\r\n : undefined,\r\n client_claims: shrClaims || undefined,\r\n ...claims,\r\n }, keyId, shrOptions, request.correlationId);\r\n }\r\n}\n\n/*! @azure/msal-common v15.13.2 2025-11-19 */\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * This class instance helps track the memory changes facilitating\r\n * decisions to read from and write to the persistent cache\r\n */ class TokenCacheContext {\r\n constructor(tokenCache, hasChanged) {\r\n this.cache = tokenCache;\r\n this.hasChanged = hasChanged;\r\n }\r\n /**\r\n * boolean which indicates the changes in cache\r\n */\r\n get cacheHasChanged() {\r\n return this.hasChanged;\r\n }\r\n /**\r\n * function to retrieve the token cache\r\n */\r\n get tokenCache() {\r\n return this.cache;\r\n }\r\n}\n\n/*! @azure/msal-common v15.13.2 2025-11-19 */\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * Class that handles response parsing.\r\n * @internal\r\n */\r\nclass ResponseHandler {\r\n constructor(clientId, cacheStorage, cryptoObj, logger, serializableCache, persistencePlugin, performanceClient) {\r\n this.clientId = clientId;\r\n this.cacheStorage = cacheStorage;\r\n this.cryptoObj = cryptoObj;\r\n this.logger = logger;\r\n this.serializableCache = serializableCache;\r\n this.persistencePlugin = persistencePlugin;\r\n this.performanceClient = performanceClient;\r\n }\r\n /**\r\n * Function which validates server authorization token response.\r\n * @param serverResponse\r\n * @param refreshAccessToken\r\n */\r\n validateTokenResponse(serverResponse, refreshAccessToken) {\r\n // Check for error\r\n if (serverResponse.error ||\r\n serverResponse.error_description ||\r\n serverResponse.suberror) {\r\n const errString = `Error(s): ${serverResponse.error_codes || Constants$1.NOT_AVAILABLE} - Timestamp: ${serverResponse.timestamp || Constants$1.NOT_AVAILABLE} - Description: ${serverResponse.error_description || Constants$1.NOT_AVAILABLE} - Correlation ID: ${serverResponse.correlation_id || Constants$1.NOT_AVAILABLE} - Trace ID: ${serverResponse.trace_id || Constants$1.NOT_AVAILABLE}`;\r\n const serverErrorNo = serverResponse.error_codes?.length\r\n ? serverResponse.error_codes[0]\r\n : undefined;\r\n const serverError = new ServerError(serverResponse.error, errString, serverResponse.suberror, serverErrorNo, serverResponse.status);\r\n // check if 500 error\r\n if (refreshAccessToken &&\r\n serverResponse.status &&\r\n serverResponse.status >= HttpStatus.SERVER_ERROR_RANGE_START &&\r\n serverResponse.status <= HttpStatus.SERVER_ERROR_RANGE_END) {\r\n this.logger.warning(`executeTokenRequest:validateTokenResponse - AAD is currently unavailable and the access token is unable to be refreshed.\\n${serverError}`);\r\n // don't throw an exception, but alert the user via a log that the token was unable to be refreshed\r\n return;\r\n // check if 400 error\r\n }\r\n else if (refreshAccessToken &&\r\n serverResponse.status &&\r\n serverResponse.status >= HttpStatus.CLIENT_ERROR_RANGE_START &&\r\n serverResponse.status <= HttpStatus.CLIENT_ERROR_RANGE_END) {\r\n this.logger.warning(`executeTokenRequest:validateTokenResponse - AAD is currently available but is unable to refresh the access token.\\n${serverError}`);\r\n // don't throw an exception, but alert the user via a log that the token was unable to be refreshed\r\n return;\r\n }\r\n if (isInteractionRequiredError(serverResponse.error, serverResponse.error_description, serverResponse.suberror)) {\r\n throw new InteractionRequiredAuthError(serverResponse.error, serverResponse.error_description, serverResponse.suberror, serverResponse.timestamp || Constants$1.EMPTY_STRING, serverResponse.trace_id || Constants$1.EMPTY_STRING, serverResponse.correlation_id || Constants$1.EMPTY_STRING, serverResponse.claims || Constants$1.EMPTY_STRING, serverErrorNo);\r\n }\r\n throw serverError;\r\n }\r\n }\r\n /**\r\n * Returns a constructed token response based on given string. Also manages the cache updates and cleanups.\r\n * @param serverTokenResponse\r\n * @param authority\r\n */\r\n async handleServerTokenResponse(serverTokenResponse, authority, reqTimestamp, request, authCodePayload, userAssertionHash, handlingRefreshTokenResponse, forceCacheRefreshTokenResponse, serverRequestId) {\r\n this.performanceClient?.addQueueMeasurement(PerformanceEvents.HandleServerTokenResponse, serverTokenResponse.correlation_id);\r\n // create an idToken object (not entity)\r\n let idTokenClaims;\r\n if (serverTokenResponse.id_token) {\r\n idTokenClaims = extractTokenClaims(serverTokenResponse.id_token || Constants$1.EMPTY_STRING, this.cryptoObj.base64Decode);\r\n // token nonce check (TODO: Add a warning if no nonce is given?)\r\n if (authCodePayload && authCodePayload.nonce) {\r\n if (idTokenClaims.nonce !== authCodePayload.nonce) {\r\n throw createClientAuthError(nonceMismatch);\r\n }\r\n }\r\n // token max_age check\r\n if (request.maxAge || request.maxAge === 0) {\r\n const authTime = idTokenClaims.auth_time;\r\n if (!authTime) {\r\n throw createClientAuthError(authTimeNotFound);\r\n }\r\n checkMaxAge(authTime, request.maxAge);\r\n }\r\n }\r\n // generate homeAccountId\r\n this.homeAccountIdentifier = AccountEntity.generateHomeAccountId(serverTokenResponse.client_info || Constants$1.EMPTY_STRING, authority.authorityType, this.logger, this.cryptoObj, idTokenClaims);\r\n // save the response tokens\r\n let requestStateObj;\r\n if (!!authCodePayload && !!authCodePayload.state) {\r\n requestStateObj = ProtocolUtils.parseRequestState(this.cryptoObj, authCodePayload.state);\r\n }\r\n // Add keyId from request to serverTokenResponse if defined\r\n serverTokenResponse.key_id =\r\n serverTokenResponse.key_id || request.sshKid || undefined;\r\n const cacheRecord = this.generateCacheRecord(serverTokenResponse, authority, reqTimestamp, request, idTokenClaims, userAssertionHash, authCodePayload);\r\n let cacheContext;\r\n try {\r\n if (this.persistencePlugin && this.serializableCache) {\r\n this.logger.verbose(\"Persistence enabled, calling beforeCacheAccess\");\r\n cacheContext = new TokenCacheContext(this.serializableCache, true);\r\n await this.persistencePlugin.beforeCacheAccess(cacheContext);\r\n }\r\n /*\r\n * When saving a refreshed tokens to the cache, it is expected that the account that was used is present in the cache.\r\n * If not present, we should return null, as it's the case that another application called removeAccount in between\r\n * the calls to getAllAccounts and acquireTokenSilent. We should not overwrite that removal, unless explicitly flagged by\r\n * the developer, as in the case of refresh token flow used in ADAL Node to MSAL Node migration.\r\n */\r\n if (handlingRefreshTokenResponse &&\r\n !forceCacheRefreshTokenResponse &&\r\n cacheRecord.account) {\r\n const key = this.cacheStorage.generateAccountKey(AccountEntity.getAccountInfo(cacheRecord.account));\r\n const account = this.cacheStorage.getAccount(key, request.correlationId);\r\n if (!account) {\r\n this.logger.warning(\"Account used to refresh tokens not in persistence, refreshed tokens will not be stored in the cache\");\r\n return await ResponseHandler.generateAuthenticationResult(this.cryptoObj, authority, cacheRecord, false, request, idTokenClaims, requestStateObj, undefined, serverRequestId);\r\n }\r\n }\r\n await this.cacheStorage.saveCacheRecord(cacheRecord, request.correlationId, isKmsi(idTokenClaims || {}), request.storeInCache);\r\n }\r\n finally {\r\n if (this.persistencePlugin &&\r\n this.serializableCache &&\r\n cacheContext) {\r\n this.logger.verbose(\"Persistence enabled, calling afterCacheAccess\");\r\n await this.persistencePlugin.afterCacheAccess(cacheContext);\r\n }\r\n }\r\n return ResponseHandler.generateAuthenticationResult(this.cryptoObj, authority, cacheRecord, false, request, idTokenClaims, requestStateObj, serverTokenResponse, serverRequestId);\r\n }\r\n /**\r\n * Generates CacheRecord\r\n * @param serverTokenResponse\r\n * @param idTokenObj\r\n * @param authority\r\n */\r\n generateCacheRecord(serverTokenResponse, authority, reqTimestamp, request, idTokenClaims, userAssertionHash, authCodePayload) {\r\n const env = authority.getPreferredCache();\r\n if (!env) {\r\n throw createClientAuthError(invalidCacheEnvironment);\r\n }\r\n const claimsTenantId = getTenantIdFromIdTokenClaims(idTokenClaims);\r\n // IdToken: non AAD scenarios can have empty realm\r\n let cachedIdToken;\r\n let cachedAccount;\r\n if (serverTokenResponse.id_token && !!idTokenClaims) {\r\n cachedIdToken = createIdTokenEntity(this.homeAccountIdentifier, env, serverTokenResponse.id_token, this.clientId, claimsTenantId || \"\");\r\n cachedAccount = buildAccountToCache(this.cacheStorage, authority, this.homeAccountIdentifier, this.cryptoObj.base64Decode, request.correlationId, idTokenClaims, serverTokenResponse.client_info, env, claimsTenantId, authCodePayload, undefined, // nativeAccountId\r\n this.logger);\r\n }\r\n // AccessToken\r\n let cachedAccessToken = null;\r\n if (serverTokenResponse.access_token) {\r\n // If scopes not returned in server response, use request scopes\r\n const responseScopes = serverTokenResponse.scope\r\n ? ScopeSet.fromString(serverTokenResponse.scope)\r\n : new ScopeSet(request.scopes || []);\r\n /*\r\n * Use timestamp calculated before request\r\n * Server may return timestamps as strings, parse to numbers if so.\r\n */\r\n const expiresIn = (typeof serverTokenResponse.expires_in === \"string\"\r\n ? parseInt(serverTokenResponse.expires_in, 10)\r\n : serverTokenResponse.expires_in) || 0;\r\n const extExpiresIn = (typeof serverTokenResponse.ext_expires_in === \"string\"\r\n ? parseInt(serverTokenResponse.ext_expires_in, 10)\r\n : serverTokenResponse.ext_expires_in) || 0;\r\n const refreshIn = (typeof serverTokenResponse.refresh_in === \"string\"\r\n ? parseInt(serverTokenResponse.refresh_in, 10)\r\n : serverTokenResponse.refresh_in) || undefined;\r\n const tokenExpirationSeconds = reqTimestamp + expiresIn;\r\n const extendedTokenExpirationSeconds = tokenExpirationSeconds + extExpiresIn;\r\n const refreshOnSeconds = refreshIn && refreshIn > 0\r\n ? reqTimestamp + refreshIn\r\n : undefined;\r\n // non AAD scenarios can have empty realm\r\n cachedAccessToken = createAccessTokenEntity(this.homeAccountIdentifier, env, serverTokenResponse.access_token, this.clientId, claimsTenantId || authority.tenant || \"\", responseScopes.printScopes(), tokenExpirationSeconds, extendedTokenExpirationSeconds, this.cryptoObj.base64Decode, refreshOnSeconds, serverTokenResponse.token_type, userAssertionHash, serverTokenResponse.key_id, request.claims, request.requestedClaimsHash);\r\n }\r\n // refreshToken\r\n let cachedRefreshToken = null;\r\n if (serverTokenResponse.refresh_token) {\r\n let rtExpiresOn;\r\n if (serverTokenResponse.refresh_token_expires_in) {\r\n const rtExpiresIn = typeof serverTokenResponse.refresh_token_expires_in ===\r\n \"string\"\r\n ? parseInt(serverTokenResponse.refresh_token_expires_in, 10)\r\n : serverTokenResponse.refresh_token_expires_in;\r\n rtExpiresOn = reqTimestamp + rtExpiresIn;\r\n }\r\n cachedRefreshToken = createRefreshTokenEntity(this.homeAccountIdentifier, env, serverTokenResponse.refresh_token, this.clientId, serverTokenResponse.foci, userAssertionHash, rtExpiresOn);\r\n }\r\n // appMetadata\r\n let cachedAppMetadata = null;\r\n if (serverTokenResponse.foci) {\r\n cachedAppMetadata = {\r\n clientId: this.clientId,\r\n environment: env,\r\n familyId: serverTokenResponse.foci,\r\n };\r\n }\r\n return {\r\n account: cachedAccount,\r\n idToken: cachedIdToken,\r\n accessToken: cachedAccessToken,\r\n refreshToken: cachedRefreshToken,\r\n appMetadata: cachedAppMetadata,\r\n };\r\n }\r\n /**\r\n * Creates an @AuthenticationResult from @CacheRecord , @IdToken , and a boolean that states whether or not the result is from cache.\r\n *\r\n * Optionally takes a state string that is set as-is in the response.\r\n *\r\n * @param cacheRecord\r\n * @param idTokenObj\r\n * @param fromTokenCache\r\n * @param stateString\r\n */\r\n static async generateAuthenticationResult(cryptoObj, authority, cacheRecord, fromTokenCache, request, idTokenClaims, requestState, serverTokenResponse, requestId) {\r\n let accessToken = Constants$1.EMPTY_STRING;\r\n let responseScopes = [];\r\n let expiresOn = null;\r\n let extExpiresOn;\r\n let refreshOn;\r\n let familyId = Constants$1.EMPTY_STRING;\r\n if (cacheRecord.accessToken) {\r\n /*\r\n * if the request object has `popKid` property, `signPopToken` will be set to false and\r\n * the token will be returned unsigned\r\n */\r\n if (cacheRecord.accessToken.tokenType ===\r\n AuthenticationScheme.POP &&\r\n !request.popKid) {\r\n const popTokenGenerator = new PopTokenGenerator(cryptoObj);\r\n const { secret, keyId } = cacheRecord.accessToken;\r\n if (!keyId) {\r\n throw createClientAuthError(keyIdMissing);\r\n }\r\n accessToken = await popTokenGenerator.signPopToken(secret, keyId, request);\r\n }\r\n else {\r\n accessToken = cacheRecord.accessToken.secret;\r\n }\r\n responseScopes = ScopeSet.fromString(cacheRecord.accessToken.target).asArray();\r\n // Access token expiresOn cached in seconds, converting to Date for AuthenticationResult\r\n expiresOn = toDateFromSeconds(cacheRecord.accessToken.expiresOn);\r\n extExpiresOn = toDateFromSeconds(cacheRecord.accessToken.extendedExpiresOn);\r\n if (cacheRecord.accessToken.refreshOn) {\r\n refreshOn = toDateFromSeconds(cacheRecord.accessToken.refreshOn);\r\n }\r\n }\r\n if (cacheRecord.appMetadata) {\r\n familyId =\r\n cacheRecord.appMetadata.familyId === THE_FAMILY_ID\r\n ? THE_FAMILY_ID\r\n : \"\";\r\n }\r\n const uid = idTokenClaims?.oid || idTokenClaims?.sub || \"\";\r\n const tid = idTokenClaims?.tid || \"\";\r\n // for hybrid + native bridge enablement, send back the native account Id\r\n if (serverTokenResponse?.spa_accountid && !!cacheRecord.account) {\r\n cacheRecord.account.nativeAccountId =\r\n serverTokenResponse?.spa_accountid;\r\n }\r\n const accountInfo = cacheRecord.account\r\n ? updateAccountTenantProfileData(AccountEntity.getAccountInfo(cacheRecord.account), undefined, // tenantProfile optional\r\n idTokenClaims, cacheRecord.idToken?.secret)\r\n : null;\r\n return {\r\n authority: authority.canonicalAuthority,\r\n uniqueId: uid,\r\n tenantId: tid,\r\n scopes: responseScopes,\r\n account: accountInfo,\r\n idToken: cacheRecord?.idToken?.secret || \"\",\r\n idTokenClaims: idTokenClaims || {},\r\n accessToken: accessToken,\r\n fromCache: fromTokenCache,\r\n expiresOn: expiresOn,\r\n extExpiresOn: extExpiresOn,\r\n refreshOn: refreshOn,\r\n correlationId: request.correlationId,\r\n requestId: requestId || Constants$1.EMPTY_STRING,\r\n familyId: familyId,\r\n tokenType: cacheRecord.accessToken?.tokenType || Constants$1.EMPTY_STRING,\r\n state: requestState\r\n ? requestState.userRequestState\r\n : Constants$1.EMPTY_STRING,\r\n cloudGraphHostName: cacheRecord.account?.cloudGraphHostName ||\r\n Constants$1.EMPTY_STRING,\r\n msGraphHost: cacheRecord.account?.msGraphHost || Constants$1.EMPTY_STRING,\r\n code: serverTokenResponse?.spa_code,\r\n fromNativeBroker: false,\r\n };\r\n }\r\n}\r\nfunction buildAccountToCache(cacheStorage, authority, homeAccountId, base64Decode, correlationId, idTokenClaims, clientInfo, environment, claimsTenantId, authCodePayload, nativeAccountId, logger) {\r\n logger?.verbose(\"setCachedAccount called\");\r\n // Check if base account is already cached\r\n const accountKeys = cacheStorage.getAccountKeys();\r\n const baseAccountKey = accountKeys.find((accountKey) => {\r\n return accountKey.startsWith(homeAccountId);\r\n });\r\n let cachedAccount = null;\r\n if (baseAccountKey) {\r\n cachedAccount = cacheStorage.getAccount(baseAccountKey, correlationId);\r\n }\r\n const baseAccount = cachedAccount ||\r\n AccountEntity.createAccount({\r\n homeAccountId,\r\n idTokenClaims,\r\n clientInfo,\r\n environment,\r\n cloudGraphHostName: authCodePayload?.cloud_graph_host_name,\r\n msGraphHost: authCodePayload?.msgraph_host,\r\n nativeAccountId: nativeAccountId,\r\n }, authority, base64Decode);\r\n const tenantProfiles = baseAccount.tenantProfiles || [];\r\n const tenantId = claimsTenantId || baseAccount.realm;\r\n if (tenantId &&\r\n !tenantProfiles.find((tenantProfile) => {\r\n return tenantProfile.tenantId === tenantId;\r\n })) {\r\n const newTenantProfile = buildTenantProfile(homeAccountId, baseAccount.localAccountId, tenantId, idTokenClaims);\r\n tenantProfiles.push(newTenantProfile);\r\n }\r\n baseAccount.tenantProfiles = tenantProfiles;\r\n return baseAccount;\r\n}\n\n/*! @azure/msal-common v15.13.2 2025-11-19 */\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nasync function getClientAssertion(clientAssertion, clientId, tokenEndpoint) {\r\n if (typeof clientAssertion === \"string\") {\r\n return clientAssertion;\r\n }\r\n else {\r\n const config = {\r\n clientId: clientId,\r\n tokenEndpoint: tokenEndpoint,\r\n };\r\n return clientAssertion(config);\r\n }\r\n}\n\n/*! @azure/msal-common v15.13.2 2025-11-19 */\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * Oauth2.0 Authorization Code client\r\n * @internal\r\n */\r\nclass AuthorizationCodeClient extends BaseClient {\r\n constructor(configuration, performanceClient) {\r\n super(configuration, performanceClient);\r\n // Flag to indicate if client is for hybrid spa auth code redemption\r\n this.includeRedirectUri = true;\r\n this.oidcDefaultScopes =\r\n this.config.authOptions.authority.options.OIDCOptions?.defaultScopes;\r\n }\r\n /**\r\n * API to acquire a token in exchange of 'authorization_code` acquired by the user in the first leg of the\r\n * authorization_code_grant\r\n * @param request\r\n */\r\n async acquireToken(request, authCodePayload) {\r\n this.performanceClient?.addQueueMeasurement(PerformanceEvents.AuthClientAcquireToken, request.correlationId);\r\n if (!request.code) {\r\n throw createClientAuthError(requestCannotBeMade);\r\n }\r\n const reqTimestamp = nowSeconds();\r\n const response = await invokeAsync(this.executeTokenRequest.bind(this), PerformanceEvents.AuthClientExecuteTokenRequest, this.logger, this.performanceClient, request.correlationId)(this.authority, request);\r\n // Retrieve requestId from response headers\r\n const requestId = response.headers?.[HeaderNames.X_MS_REQUEST_ID];\r\n const responseHandler = new ResponseHandler(this.config.authOptions.clientId, this.cacheManager, this.cryptoUtils, this.logger, this.config.serializableCache, this.config.persistencePlugin, this.performanceClient);\r\n // Validate response. This function throws a server error if an error is returned by the server.\r\n responseHandler.validateTokenResponse(response.body);\r\n return invokeAsync(responseHandler.handleServerTokenResponse.bind(responseHandler), PerformanceEvents.HandleServerTokenResponse, this.logger, this.performanceClient, request.correlationId)(response.body, this.authority, reqTimestamp, request, authCodePayload, undefined, undefined, undefined, requestId);\r\n }\r\n /**\r\n * Used to log out the current user, and redirect the user to the postLogoutRedirectUri.\r\n * Default behaviour is to redirect the user to `window.location.href`.\r\n * @param authorityUri\r\n */\r\n getLogoutUri(logoutRequest) {\r\n // Throw error if logoutRequest is null/undefined\r\n if (!logoutRequest) {\r\n throw createClientConfigurationError(logoutRequestEmpty);\r\n }\r\n const queryString = this.createLogoutUrlQueryString(logoutRequest);\r\n // Construct logout URI\r\n return UrlString.appendQueryString(this.authority.endSessionEndpoint, queryString);\r\n }\r\n /**\r\n * Executes POST request to token endpoint\r\n * @param authority\r\n * @param request\r\n */\r\n async executeTokenRequest(authority, request) {\r\n this.performanceClient?.addQueueMeasurement(PerformanceEvents.AuthClientExecuteTokenRequest, request.correlationId);\r\n const queryParametersString = this.createTokenQueryParameters(request);\r\n const endpoint = UrlString.appendQueryString(authority.tokenEndpoint, queryParametersString);\r\n const requestBody = await invokeAsync(this.createTokenRequestBody.bind(this), PerformanceEvents.AuthClientCreateTokenRequestBody, this.logger, this.performanceClient, request.correlationId)(request);\r\n let ccsCredential = undefined;\r\n if (request.clientInfo) {\r\n try {\r\n const clientInfo = buildClientInfo(request.clientInfo, this.cryptoUtils.base64Decode);\r\n ccsCredential = {\r\n credential: `${clientInfo.uid}${Separators.CLIENT_INFO_SEPARATOR}${clientInfo.utid}`,\r\n type: CcsCredentialType.HOME_ACCOUNT_ID,\r\n };\r\n }\r\n catch (e) {\r\n this.logger.verbose(\"Could not parse client info for CCS Header: \" + e);\r\n }\r\n }\r\n const headers = this.createTokenRequestHeaders(ccsCredential || request.ccsCredential);\r\n const thumbprint = getRequestThumbprint(this.config.authOptions.clientId, request);\r\n return invokeAsync(this.executePostToTokenEndpoint.bind(this), PerformanceEvents.AuthorizationCodeClientExecutePostToTokenEndpoint, this.logger, this.performanceClient, request.correlationId)(endpoint, requestBody, headers, thumbprint, request.correlationId, PerformanceEvents.AuthorizationCodeClientExecutePostToTokenEndpoint);\r\n }\r\n /**\r\n * Generates a map for all the params to be sent to the service\r\n * @param request\r\n */\r\n async createTokenRequestBody(request) {\r\n this.performanceClient?.addQueueMeasurement(PerformanceEvents.AuthClientCreateTokenRequestBody, request.correlationId);\r\n const parameters = new Map();\r\n addClientId(parameters, request.embeddedClientId ||\r\n request.tokenBodyParameters?.[CLIENT_ID] ||\r\n this.config.authOptions.clientId);\r\n /*\r\n * For hybrid spa flow, there will be a code but no verifier\r\n * In this scenario, don't include redirect uri as auth code will not be bound to redirect URI\r\n */\r\n if (!this.includeRedirectUri) {\r\n // Just validate\r\n if (!request.redirectUri) {\r\n throw createClientConfigurationError(redirectUriEmpty);\r\n }\r\n }\r\n else {\r\n // Validate and include redirect uri\r\n addRedirectUri(parameters, request.redirectUri);\r\n }\r\n // Add scope array, parameter builder will add default scopes and dedupe\r\n addScopes(parameters, request.scopes, true, this.oidcDefaultScopes);\r\n // add code: user set, not validated\r\n addAuthorizationCode(parameters, request.code);\r\n // Add library metadata\r\n addLibraryInfo(parameters, this.config.libraryInfo);\r\n addApplicationTelemetry(parameters, this.config.telemetry.application);\r\n addThrottling(parameters);\r\n if (this.serverTelemetryManager && !isOidcProtocolMode(this.config)) {\r\n addServerTelemetry(parameters, this.serverTelemetryManager);\r\n }\r\n // add code_verifier if passed\r\n if (request.codeVerifier) {\r\n addCodeVerifier(parameters, request.codeVerifier);\r\n }\r\n if (this.config.clientCredentials.clientSecret) {\r\n addClientSecret(parameters, this.config.clientCredentials.clientSecret);\r\n }\r\n if (this.config.clientCredentials.clientAssertion) {\r\n const clientAssertion = this.config.clientCredentials.clientAssertion;\r\n addClientAssertion(parameters, await getClientAssertion(clientAssertion.assertion, this.config.authOptions.clientId, request.resourceRequestUri));\r\n addClientAssertionType(parameters, clientAssertion.assertionType);\r\n }\r\n addGrantType(parameters, GrantType.AUTHORIZATION_CODE_GRANT);\r\n addClientInfo(parameters);\r\n if (request.authenticationScheme === AuthenticationScheme.POP) {\r\n const popTokenGenerator = new PopTokenGenerator(this.cryptoUtils, this.performanceClient);\r\n let reqCnfData;\r\n if (!request.popKid) {\r\n const generatedReqCnfData = await invokeAsync(popTokenGenerator.generateCnf.bind(popTokenGenerator), PerformanceEvents.PopTokenGenerateCnf, this.logger, this.performanceClient, request.correlationId)(request, this.logger);\r\n reqCnfData = generatedReqCnfData.reqCnfString;\r\n }\r\n else {\r\n reqCnfData = this.cryptoUtils.encodeKid(request.popKid);\r\n }\r\n // SPA PoP requires full Base64Url encoded req_cnf string (unhashed)\r\n addPopToken(parameters, reqCnfData);\r\n }\r\n else if (request.authenticationScheme === AuthenticationScheme.SSH) {\r\n if (request.sshJwk) {\r\n addSshJwk(parameters, request.sshJwk);\r\n }\r\n else {\r\n throw createClientConfigurationError(missingSshJwk);\r\n }\r\n }\r\n if (!StringUtils.isEmptyObj(request.claims) ||\r\n (this.config.authOptions.clientCapabilities &&\r\n this.config.authOptions.clientCapabilities.length > 0)) {\r\n addClaims(parameters, request.claims, this.config.authOptions.clientCapabilities);\r\n }\r\n let ccsCred = undefined;\r\n if (request.clientInfo) {\r\n try {\r\n const clientInfo = buildClientInfo(request.clientInfo, this.cryptoUtils.base64Decode);\r\n ccsCred = {\r\n credential: `${clientInfo.uid}${Separators.CLIENT_INFO_SEPARATOR}${clientInfo.utid}`,\r\n type: CcsCredentialType.HOME_ACCOUNT_ID,\r\n };\r\n }\r\n catch (e) {\r\n this.logger.verbose(\"Could not parse client info for CCS Header: \" + e);\r\n }\r\n }\r\n else {\r\n ccsCred = request.ccsCredential;\r\n }\r\n // Adds these as parameters in the request instead of headers to prevent CORS preflight request\r\n if (this.config.systemOptions.preventCorsPreflight && ccsCred) {\r\n switch (ccsCred.type) {\r\n case CcsCredentialType.HOME_ACCOUNT_ID:\r\n try {\r\n const clientInfo = buildClientInfoFromHomeAccountId(ccsCred.credential);\r\n addCcsOid(parameters, clientInfo);\r\n }\r\n catch (e) {\r\n this.logger.verbose(\"Could not parse home account ID for CCS Header: \" +\r\n e);\r\n }\r\n break;\r\n case CcsCredentialType.UPN:\r\n addCcsUpn(parameters, ccsCred.credential);\r\n break;\r\n }\r\n }\r\n if (request.embeddedClientId) {\r\n addBrokerParameters(parameters, this.config.authOptions.clientId, this.config.authOptions.redirectUri);\r\n }\r\n if (request.tokenBodyParameters) {\r\n addExtraQueryParameters(parameters, request.tokenBodyParameters);\r\n }\r\n // Add hybrid spa parameters if not already provided\r\n if (request.enableSpaAuthorizationCode &&\r\n (!request.tokenBodyParameters ||\r\n !request.tokenBodyParameters[RETURN_SPA_CODE])) {\r\n addExtraQueryParameters(parameters, {\r\n [RETURN_SPA_CODE]: \"1\",\r\n });\r\n }\r\n instrumentBrokerParams(parameters, request.correlationId, this.performanceClient);\r\n return mapToQueryString(parameters);\r\n }\r\n /**\r\n * This API validates the `EndSessionRequest` and creates a URL\r\n * @param request\r\n */\r\n createLogoutUrlQueryString(request) {\r\n const parameters = new Map();\r\n if (request.postLogoutRedirectUri) {\r\n addPostLogoutRedirectUri(parameters, request.postLogoutRedirectUri);\r\n }\r\n if (request.correlationId) {\r\n addCorrelationId(parameters, request.correlationId);\r\n }\r\n if (request.idTokenHint) {\r\n addIdTokenHint(parameters, request.idTokenHint);\r\n }\r\n if (request.state) {\r\n addState(parameters, request.state);\r\n }\r\n if (request.logoutHint) {\r\n addLogoutHint(parameters, request.logoutHint);\r\n }\r\n if (request.extraQueryParameters) {\r\n addExtraQueryParameters(parameters, request.extraQueryParameters);\r\n }\r\n if (this.config.authOptions.instanceAware) {\r\n addInstanceAware(parameters);\r\n }\r\n return mapToQueryString(parameters, this.config.authOptions.encodeExtraQueryParams, request.extraQueryParameters);\r\n }\r\n}\n\n/*! @azure/msal-common v15.13.2 2025-11-19 */\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nconst DEFAULT_REFRESH_TOKEN_EXPIRATION_OFFSET_SECONDS = 300; // 5 Minutes\r\n/**\r\n * OAuth2.0 refresh token client\r\n * @internal\r\n */\r\nclass RefreshTokenClient extends BaseClient {\r\n constructor(configuration, performanceClient) {\r\n super(configuration, performanceClient);\r\n }\r\n async acquireToken(request) {\r\n this.performanceClient?.addQueueMeasurement(PerformanceEvents.RefreshTokenClientAcquireToken, request.correlationId);\r\n const reqTimestamp = nowSeconds();\r\n const response = await invokeAsync(this.executeTokenRequest.bind(this), PerformanceEvents.RefreshTokenClientExecuteTokenRequest, this.logger, this.performanceClient, request.correlationId)(request, this.authority);\r\n // Retrieve requestId from response headers\r\n const requestId = response.headers?.[HeaderNames.X_MS_REQUEST_ID];\r\n const responseHandler = new ResponseHandler(this.config.authOptions.clientId, this.cacheManager, this.cryptoUtils, this.logger, this.config.serializableCache, this.config.persistencePlugin);\r\n responseHandler.validateTokenResponse(response.body);\r\n return invokeAsync(responseHandler.handleServerTokenResponse.bind(responseHandler), PerformanceEvents.HandleServerTokenResponse, this.logger, this.performanceClient, request.correlationId)(response.body, this.authority, reqTimestamp, request, undefined, undefined, true, request.forceCache, requestId);\r\n }\r\n /**\r\n * Gets cached refresh token and attaches to request, then calls acquireToken API\r\n * @param request\r\n */\r\n async acquireTokenByRefreshToken(request) {\r\n // Cannot renew token if no request object is given.\r\n if (!request) {\r\n throw createClientConfigurationError(tokenRequestEmpty);\r\n }\r\n this.performanceClient?.addQueueMeasurement(PerformanceEvents.RefreshTokenClientAcquireTokenByRefreshToken, request.correlationId);\r\n // We currently do not support silent flow for account === null use cases; This will be revisited for confidential flow usecases\r\n if (!request.account) {\r\n throw createClientAuthError(noAccountInSilentRequest);\r\n }\r\n // try checking if FOCI is enabled for the given application\r\n const isFOCI = this.cacheManager.isAppMetadataFOCI(request.account.environment);\r\n // if the app is part of the family, retrive a Family refresh token if present and make a refreshTokenRequest\r\n if (isFOCI) {\r\n try {\r\n return await invokeAsync(this.acquireTokenWithCachedRefreshToken.bind(this), PerformanceEvents.RefreshTokenClientAcquireTokenWithCachedRefreshToken, this.logger, this.performanceClient, request.correlationId)(request, true);\r\n }\r\n catch (e) {\r\n const noFamilyRTInCache = e instanceof InteractionRequiredAuthError &&\r\n e.errorCode ===\r\n noTokensFound;\r\n const clientMismatchErrorWithFamilyRT = e instanceof ServerError &&\r\n e.errorCode === Errors.INVALID_GRANT_ERROR &&\r\n e.subError === Errors.CLIENT_MISMATCH_ERROR;\r\n // if family Refresh Token (FRT) cache acquisition fails or if client_mismatch error is seen with FRT, reattempt with application Refresh Token (ART)\r\n if (noFamilyRTInCache || clientMismatchErrorWithFamilyRT) {\r\n return invokeAsync(this.acquireTokenWithCachedRefreshToken.bind(this), PerformanceEvents.RefreshTokenClientAcquireTokenWithCachedRefreshToken, this.logger, this.performanceClient, request.correlationId)(request, false);\r\n // throw in all other cases\r\n }\r\n else {\r\n throw e;\r\n }\r\n }\r\n }\r\n // fall back to application refresh token acquisition\r\n return invokeAsync(this.acquireTokenWithCachedRefreshToken.bind(this), PerformanceEvents.RefreshTokenClientAcquireTokenWithCachedRefreshToken, this.logger, this.performanceClient, request.correlationId)(request, false);\r\n }\r\n /**\r\n * makes a network call to acquire tokens by exchanging RefreshToken available in userCache; throws if refresh token is not cached\r\n * @param request\r\n */\r\n async acquireTokenWithCachedRefreshToken(request, foci) {\r\n this.performanceClient?.addQueueMeasurement(PerformanceEvents.RefreshTokenClientAcquireTokenWithCachedRefreshToken, request.correlationId);\r\n // fetches family RT or application RT based on FOCI value\r\n const refreshToken = invoke(this.cacheManager.getRefreshToken.bind(this.cacheManager), PerformanceEvents.CacheManagerGetRefreshToken, this.logger, this.performanceClient, request.correlationId)(request.account, foci, request.correlationId, undefined, this.performanceClient);\r\n if (!refreshToken) {\r\n throw createInteractionRequiredAuthError(noTokensFound);\r\n }\r\n if (refreshToken.expiresOn &&\r\n isTokenExpired(refreshToken.expiresOn, request.refreshTokenExpirationOffsetSeconds ||\r\n DEFAULT_REFRESH_TOKEN_EXPIRATION_OFFSET_SECONDS)) {\r\n this.performanceClient?.addFields({ rtExpiresOnMs: Number(refreshToken.expiresOn) }, request.correlationId);\r\n throw createInteractionRequiredAuthError(refreshTokenExpired);\r\n }\r\n // attach cached RT size to the current measurement\r\n const refreshTokenRequest = {\r\n ...request,\r\n refreshToken: refreshToken.secret,\r\n authenticationScheme: request.authenticationScheme || AuthenticationScheme.BEARER,\r\n ccsCredential: {\r\n credential: request.account.homeAccountId,\r\n type: CcsCredentialType.HOME_ACCOUNT_ID,\r\n },\r\n };\r\n try {\r\n return await invokeAsync(this.acquireToken.bind(this), PerformanceEvents.RefreshTokenClientAcquireToken, this.logger, this.performanceClient, request.correlationId)(refreshTokenRequest);\r\n }\r\n catch (e) {\r\n if (e instanceof InteractionRequiredAuthError) {\r\n this.performanceClient?.addFields({ rtExpiresOnMs: Number(refreshToken.expiresOn) }, request.correlationId);\r\n if (e.subError === badToken) {\r\n // Remove bad refresh token from cache\r\n this.logger.verbose(\"acquireTokenWithRefreshToken: bad refresh token, removing from cache\");\r\n const badRefreshTokenKey = this.cacheManager.generateCredentialKey(refreshToken);\r\n this.cacheManager.removeRefreshToken(badRefreshTokenKey, request.correlationId);\r\n }\r\n }\r\n throw e;\r\n }\r\n }\r\n /**\r\n * Constructs the network message and makes a NW call to the underlying secure token service\r\n * @param request\r\n * @param authority\r\n */\r\n async executeTokenRequest(request, authority) {\r\n this.performanceClient?.addQueueMeasurement(PerformanceEvents.RefreshTokenClientExecuteTokenRequest, request.correlationId);\r\n const queryParametersString = this.createTokenQueryParameters(request);\r\n const endpoint = UrlString.appendQueryString(authority.tokenEndpoint, queryParametersString);\r\n const requestBody = await invokeAsync(this.createTokenRequestBody.bind(this), PerformanceEvents.RefreshTokenClientCreateTokenRequestBody, this.logger, this.performanceClient, request.correlationId)(request);\r\n const headers = this.createTokenRequestHeaders(request.ccsCredential);\r\n const thumbprint = getRequestThumbprint(this.config.authOptions.clientId, request);\r\n return invokeAsync(this.executePostToTokenEndpoint.bind(this), PerformanceEvents.RefreshTokenClientExecutePostToTokenEndpoint, this.logger, this.performanceClient, request.correlationId)(endpoint, requestBody, headers, thumbprint, request.correlationId, PerformanceEvents.RefreshTokenClientExecutePostToTokenEndpoint);\r\n }\r\n /**\r\n * Helper function to create the token request body\r\n * @param request\r\n */\r\n async createTokenRequestBody(request) {\r\n this.performanceClient?.addQueueMeasurement(PerformanceEvents.RefreshTokenClientCreateTokenRequestBody, request.correlationId);\r\n const parameters = new Map();\r\n addClientId(parameters, request.embeddedClientId ||\r\n request.tokenBodyParameters?.[CLIENT_ID] ||\r\n this.config.authOptions.clientId);\r\n if (request.redirectUri) {\r\n addRedirectUri(parameters, request.redirectUri);\r\n }\r\n addScopes(parameters, request.scopes, true, this.config.authOptions.authority.options.OIDCOptions?.defaultScopes);\r\n addGrantType(parameters, GrantType.REFRESH_TOKEN_GRANT);\r\n addClientInfo(parameters);\r\n addLibraryInfo(parameters, this.config.libraryInfo);\r\n addApplicationTelemetry(parameters, this.config.telemetry.application);\r\n addThrottling(parameters);\r\n if (this.serverTelemetryManager && !isOidcProtocolMode(this.config)) {\r\n addServerTelemetry(parameters, this.serverTelemetryManager);\r\n }\r\n addRefreshToken(parameters, request.refreshToken);\r\n if (this.config.clientCredentials.clientSecret) {\r\n addClientSecret(parameters, this.config.clientCredentials.clientSecret);\r\n }\r\n if (this.config.clientCredentials.clientAssertion) {\r\n const clientAssertion = this.config.clientCredentials.clientAssertion;\r\n addClientAssertion(parameters, await getClientAssertion(clientAssertion.assertion, this.config.authOptions.clientId, request.resourceRequestUri));\r\n addClientAssertionType(parameters, clientAssertion.assertionType);\r\n }\r\n if (request.authenticationScheme === AuthenticationScheme.POP) {\r\n const popTokenGenerator = new PopTokenGenerator(this.cryptoUtils, this.performanceClient);\r\n let reqCnfData;\r\n if (!request.popKid) {\r\n const generatedReqCnfData = await invokeAsync(popTokenGenerator.generateCnf.bind(popTokenGenerator), PerformanceEvents.PopTokenGenerateCnf, this.logger, this.performanceClient, request.correlationId)(request, this.logger);\r\n reqCnfData = generatedReqCnfData.reqCnfString;\r\n }\r\n else {\r\n reqCnfData = this.cryptoUtils.encodeKid(request.popKid);\r\n }\r\n // SPA PoP requires full Base64Url encoded req_cnf string (unhashed)\r\n addPopToken(parameters, reqCnfData);\r\n }\r\n else if (request.authenticationScheme === AuthenticationScheme.SSH) {\r\n if (request.sshJwk) {\r\n addSshJwk(parameters, request.sshJwk);\r\n }\r\n else {\r\n throw createClientConfigurationError(missingSshJwk);\r\n }\r\n }\r\n if (!StringUtils.isEmptyObj(request.claims) ||\r\n (this.config.authOptions.clientCapabilities &&\r\n this.config.authOptions.clientCapabilities.length > 0)) {\r\n addClaims(parameters, request.claims, this.config.authOptions.clientCapabilities);\r\n }\r\n if (this.config.systemOptions.preventCorsPreflight &&\r\n request.ccsCredential) {\r\n switch (request.ccsCredential.type) {\r\n case CcsCredentialType.HOME_ACCOUNT_ID:\r\n try {\r\n const clientInfo = buildClientInfoFromHomeAccountId(request.ccsCredential.credential);\r\n addCcsOid(parameters, clientInfo);\r\n }\r\n catch (e) {\r\n this.logger.verbose(\"Could not parse home account ID for CCS Header: \" +\r\n e);\r\n }\r\n break;\r\n case CcsCredentialType.UPN:\r\n addCcsUpn(parameters, request.ccsCredential.credential);\r\n break;\r\n }\r\n }\r\n if (request.embeddedClientId) {\r\n addBrokerParameters(parameters, this.config.authOptions.clientId, this.config.authOptions.redirectUri);\r\n }\r\n if (request.tokenBodyParameters) {\r\n addExtraQueryParameters(parameters, request.tokenBodyParameters);\r\n }\r\n instrumentBrokerParams(parameters, request.correlationId, this.performanceClient);\r\n return mapToQueryString(parameters);\r\n }\r\n}\n\n/*! @azure/msal-common v15.13.2 2025-11-19 */\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/** @internal */\r\nclass SilentFlowClient extends BaseClient {\r\n constructor(configuration, performanceClient) {\r\n super(configuration, performanceClient);\r\n }\r\n /**\r\n * Retrieves token from cache or throws an error if it must be refreshed.\r\n * @param request\r\n */\r\n async acquireCachedToken(request) {\r\n this.performanceClient?.addQueueMeasurement(PerformanceEvents.SilentFlowClientAcquireCachedToken, request.correlationId);\r\n let lastCacheOutcome = CacheOutcome.NOT_APPLICABLE;\r\n if (request.forceRefresh ||\r\n (!this.config.cacheOptions.claimsBasedCachingEnabled &&\r\n !StringUtils.isEmptyObj(request.claims))) {\r\n // Must refresh due to present force_refresh flag.\r\n this.setCacheOutcome(CacheOutcome.FORCE_REFRESH_OR_CLAIMS, request.correlationId);\r\n throw createClientAuthError(tokenRefreshRequired);\r\n }\r\n // We currently do not support silent flow for account === null use cases; This will be revisited for confidential flow usecases\r\n if (!request.account) {\r\n throw createClientAuthError(noAccountInSilentRequest);\r\n }\r\n const requestTenantId = request.account.tenantId ||\r\n getTenantFromAuthorityString(request.authority);\r\n const tokenKeys = this.cacheManager.getTokenKeys();\r\n const cachedAccessToken = this.cacheManager.getAccessToken(request.account, request, tokenKeys, requestTenantId);\r\n if (!cachedAccessToken) {\r\n // must refresh due to non-existent access_token\r\n this.setCacheOutcome(CacheOutcome.NO_CACHED_ACCESS_TOKEN, request.correlationId);\r\n throw createClientAuthError(tokenRefreshRequired);\r\n }\r\n else if (wasClockTurnedBack(cachedAccessToken.cachedAt) ||\r\n isTokenExpired(cachedAccessToken.expiresOn, this.config.systemOptions.tokenRenewalOffsetSeconds)) {\r\n // must refresh due to the expires_in value\r\n this.setCacheOutcome(CacheOutcome.CACHED_ACCESS_TOKEN_EXPIRED, request.correlationId);\r\n throw createClientAuthError(tokenRefreshRequired);\r\n }\r\n else if (cachedAccessToken.refreshOn &&\r\n isTokenExpired(cachedAccessToken.refreshOn, 0)) {\r\n // must refresh (in the background) due to the refresh_in value\r\n lastCacheOutcome = CacheOutcome.PROACTIVELY_REFRESHED;\r\n // don't throw ClientAuthError.createRefreshRequiredError(), return cached token instead\r\n }\r\n const environment = request.authority || this.authority.getPreferredCache();\r\n const cacheRecord = {\r\n account: this.cacheManager.getAccount(this.cacheManager.generateAccountKey(request.account), request.correlationId),\r\n accessToken: cachedAccessToken,\r\n idToken: this.cacheManager.getIdToken(request.account, request.correlationId, tokenKeys, requestTenantId, this.performanceClient),\r\n refreshToken: null,\r\n appMetadata: this.cacheManager.readAppMetadataFromCache(environment),\r\n };\r\n this.setCacheOutcome(lastCacheOutcome, request.correlationId);\r\n if (this.config.serverTelemetryManager) {\r\n this.config.serverTelemetryManager.incrementCacheHits();\r\n }\r\n return [\r\n await invokeAsync(this.generateResultFromCacheRecord.bind(this), PerformanceEvents.SilentFlowClientGenerateResultFromCacheRecord, this.logger, this.performanceClient, request.correlationId)(cacheRecord, request),\r\n lastCacheOutcome,\r\n ];\r\n }\r\n setCacheOutcome(cacheOutcome, correlationId) {\r\n this.serverTelemetryManager?.setCacheOutcome(cacheOutcome);\r\n this.performanceClient?.addFields({\r\n cacheOutcome: cacheOutcome,\r\n }, correlationId);\r\n if (cacheOutcome !== CacheOutcome.NOT_APPLICABLE) {\r\n this.logger.info(`Token refresh is required due to cache outcome: ${cacheOutcome}`);\r\n }\r\n }\r\n /**\r\n * Helper function to build response object from the CacheRecord\r\n * @param cacheRecord\r\n */\r\n async generateResultFromCacheRecord(cacheRecord, request) {\r\n this.performanceClient?.addQueueMeasurement(PerformanceEvents.SilentFlowClientGenerateResultFromCacheRecord, request.correlationId);\r\n let idTokenClaims;\r\n if (cacheRecord.idToken) {\r\n idTokenClaims = extractTokenClaims(cacheRecord.idToken.secret, this.config.cryptoInterface.base64Decode);\r\n }\r\n // token max_age check\r\n if (request.maxAge || request.maxAge === 0) {\r\n const authTime = idTokenClaims?.auth_time;\r\n if (!authTime) {\r\n throw createClientAuthError(authTimeNotFound);\r\n }\r\n checkMaxAge(authTime, request.maxAge);\r\n }\r\n return ResponseHandler.generateAuthenticationResult(this.cryptoUtils, this.authority, cacheRecord, true, request, idTokenClaims);\r\n }\r\n}\n\n/*! @azure/msal-common v15.13.2 2025-11-19 */\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * Returns map of parameters that are applicable to all calls to /authorize whether using PKCE or EAR\r\n * @param config\r\n * @param request\r\n * @param logger\r\n * @param performanceClient\r\n * @returns\r\n */\r\nfunction getStandardAuthorizeRequestParameters(authOptions, request, logger, performanceClient) {\r\n // generate the correlationId if not set by the user and add\r\n const correlationId = request.correlationId;\r\n const parameters = new Map();\r\n addClientId(parameters, request.embeddedClientId ||\r\n request.extraQueryParameters?.[CLIENT_ID] ||\r\n authOptions.clientId);\r\n const requestScopes = [\r\n ...(request.scopes || []),\r\n ...(request.extraScopesToConsent || []),\r\n ];\r\n addScopes(parameters, requestScopes, true, authOptions.authority.options.OIDCOptions?.defaultScopes);\r\n addRedirectUri(parameters, request.redirectUri);\r\n addCorrelationId(parameters, correlationId);\r\n // add response_mode. If not passed in it defaults to query.\r\n addResponseMode(parameters, request.responseMode);\r\n // add client_info=1\r\n addClientInfo(parameters);\r\n if (request.prompt) {\r\n addPrompt(parameters, request.prompt);\r\n }\r\n if (request.domainHint) {\r\n addDomainHint(parameters, request.domainHint);\r\n }\r\n // Add sid or loginHint with preference for login_hint claim (in request) -> sid -> loginHint (upn/email) -> username of AccountInfo object\r\n if (request.prompt !== PromptValue.SELECT_ACCOUNT) {\r\n // AAD will throw if prompt=select_account is passed with an account hint\r\n if (request.sid && request.prompt === PromptValue.NONE) {\r\n // SessionID is only used in silent calls\r\n logger.verbose(\"createAuthCodeUrlQueryString: Prompt is none, adding sid from request\");\r\n addSid(parameters, request.sid);\r\n }\r\n else if (request.account) {\r\n const accountSid = extractAccountSid(request.account);\r\n let accountLoginHintClaim = extractLoginHint(request.account);\r\n if (accountLoginHintClaim && request.domainHint) {\r\n logger.warning(`AuthorizationCodeClient.createAuthCodeUrlQueryString: \"domainHint\" param is set, skipping opaque \"login_hint\" claim. Please consider not passing domainHint`);\r\n accountLoginHintClaim = null;\r\n }\r\n // If login_hint claim is present, use it over sid/username\r\n if (accountLoginHintClaim) {\r\n logger.verbose(\"createAuthCodeUrlQueryString: login_hint claim present on account\");\r\n addLoginHint(parameters, accountLoginHintClaim);\r\n try {\r\n const clientInfo = buildClientInfoFromHomeAccountId(request.account.homeAccountId);\r\n addCcsOid(parameters, clientInfo);\r\n }\r\n catch (e) {\r\n logger.verbose(\"createAuthCodeUrlQueryString: Could not parse home account ID for CCS Header\");\r\n }\r\n }\r\n else if (accountSid && request.prompt === PromptValue.NONE) {\r\n /*\r\n * If account and loginHint are provided, we will check account first for sid before adding loginHint\r\n * SessionId is only used in silent calls\r\n */\r\n logger.verbose(\"createAuthCodeUrlQueryString: Prompt is none, adding sid from account\");\r\n addSid(parameters, accountSid);\r\n try {\r\n const clientInfo = buildClientInfoFromHomeAccountId(request.account.homeAccountId);\r\n addCcsOid(parameters, clientInfo);\r\n }\r\n catch (e) {\r\n logger.verbose(\"createAuthCodeUrlQueryString: Could not parse home account ID for CCS Header\");\r\n }\r\n }\r\n else if (request.loginHint) {\r\n logger.verbose(\"createAuthCodeUrlQueryString: Adding login_hint from request\");\r\n addLoginHint(parameters, request.loginHint);\r\n addCcsUpn(parameters, request.loginHint);\r\n }\r\n else if (request.account.username) {\r\n // Fallback to account username if provided\r\n logger.verbose(\"createAuthCodeUrlQueryString: Adding login_hint from account\");\r\n addLoginHint(parameters, request.account.username);\r\n try {\r\n const clientInfo = buildClientInfoFromHomeAccountId(request.account.homeAccountId);\r\n addCcsOid(parameters, clientInfo);\r\n }\r\n catch (e) {\r\n logger.verbose(\"createAuthCodeUrlQueryString: Could not parse home account ID for CCS Header\");\r\n }\r\n }\r\n }\r\n else if (request.loginHint) {\r\n logger.verbose(\"createAuthCodeUrlQueryString: No account, adding login_hint from request\");\r\n addLoginHint(parameters, request.loginHint);\r\n addCcsUpn(parameters, request.loginHint);\r\n }\r\n }\r\n else {\r\n logger.verbose(\"createAuthCodeUrlQueryString: Prompt is select_account, ignoring account hints\");\r\n }\r\n if (request.nonce) {\r\n addNonce(parameters, request.nonce);\r\n }\r\n if (request.state) {\r\n addState(parameters, request.state);\r\n }\r\n if (request.claims ||\r\n (authOptions.clientCapabilities &&\r\n authOptions.clientCapabilities.length > 0)) {\r\n addClaims(parameters, request.claims, authOptions.clientCapabilities);\r\n }\r\n if (request.embeddedClientId) {\r\n addBrokerParameters(parameters, authOptions.clientId, authOptions.redirectUri);\r\n }\r\n // If extraQueryParameters includes instance_aware its value will be added when extraQueryParameters are added\r\n if (authOptions.instanceAware &&\r\n (!request.extraQueryParameters ||\r\n !Object.keys(request.extraQueryParameters).includes(INSTANCE_AWARE))) {\r\n addInstanceAware(parameters);\r\n }\r\n return parameters;\r\n}\r\n/**\r\n * Returns authorize endpoint with given request parameters in the query string\r\n * @param authority\r\n * @param requestParameters\r\n * @returns\r\n */\r\nfunction getAuthorizeUrl(authority, requestParameters, encodeParams, extraQueryParameters) {\r\n const queryString = mapToQueryString(requestParameters, encodeParams, extraQueryParameters);\r\n return UrlString.appendQueryString(authority.authorizationEndpoint, queryString);\r\n}\r\n/**\r\n * Helper to get sid from account. Returns null if idTokenClaims are not present or sid is not present.\r\n * @param account\r\n */\r\nfunction extractAccountSid(account) {\r\n return account.idTokenClaims?.sid || null;\r\n}\r\nfunction extractLoginHint(account) {\r\n return account.loginHint || account.idTokenClaims?.login_hint || null;\r\n}\n\n/*! @azure/msal-common v15.13.2 2025-11-19 */\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nconst skuGroupSeparator = \",\";\r\nconst skuValueSeparator = \"|\";\r\nfunction makeExtraSkuString(params) {\r\n const { skus, libraryName, libraryVersion, extensionName, extensionVersion, } = params;\r\n const skuMap = new Map([\r\n [0, [libraryName, libraryVersion]],\r\n [2, [extensionName, extensionVersion]],\r\n ]);\r\n let skuArr = [];\r\n if (skus?.length) {\r\n skuArr = skus.split(skuGroupSeparator);\r\n // Ignore invalid input sku param\r\n if (skuArr.length < 4) {\r\n return skus;\r\n }\r\n }\r\n else {\r\n skuArr = Array.from({ length: 4 }, () => skuValueSeparator);\r\n }\r\n skuMap.forEach((value, key) => {\r\n if (value.length === 2 && value[0]?.length && value[1]?.length) {\r\n setSku({\r\n skuArr,\r\n index: key,\r\n skuName: value[0],\r\n skuVersion: value[1],\r\n });\r\n }\r\n });\r\n return skuArr.join(skuGroupSeparator);\r\n}\r\nfunction setSku(params) {\r\n const { skuArr, index, skuName, skuVersion } = params;\r\n if (index >= skuArr.length) {\r\n return;\r\n }\r\n skuArr[index] = [skuName, skuVersion].join(skuValueSeparator);\r\n}\r\n/** @internal */\r\nclass ServerTelemetryManager {\r\n constructor(telemetryRequest, cacheManager) {\r\n this.cacheOutcome = CacheOutcome.NOT_APPLICABLE;\r\n this.cacheManager = cacheManager;\r\n this.apiId = telemetryRequest.apiId;\r\n this.correlationId = telemetryRequest.correlationId;\r\n this.wrapperSKU = telemetryRequest.wrapperSKU || Constants$1.EMPTY_STRING;\r\n this.wrapperVer = telemetryRequest.wrapperVer || Constants$1.EMPTY_STRING;\r\n this.telemetryCacheKey =\r\n SERVER_TELEM_CONSTANTS.CACHE_KEY +\r\n Separators.CACHE_KEY_SEPARATOR +\r\n telemetryRequest.clientId;\r\n }\r\n /**\r\n * API to add MSER Telemetry to request\r\n */\r\n generateCurrentRequestHeaderValue() {\r\n const request = `${this.apiId}${SERVER_TELEM_CONSTANTS.VALUE_SEPARATOR}${this.cacheOutcome}`;\r\n const platformFieldsArr = [this.wrapperSKU, this.wrapperVer];\r\n const nativeBrokerErrorCode = this.getNativeBrokerErrorCode();\r\n if (nativeBrokerErrorCode?.length) {\r\n platformFieldsArr.push(`broker_error=${nativeBrokerErrorCode}`);\r\n }\r\n const platformFields = platformFieldsArr.join(SERVER_TELEM_CONSTANTS.VALUE_SEPARATOR);\r\n const regionDiscoveryFields = this.getRegionDiscoveryFields();\r\n const requestWithRegionDiscoveryFields = [\r\n request,\r\n regionDiscoveryFields,\r\n ].join(SERVER_TELEM_CONSTANTS.VALUE_SEPARATOR);\r\n return [\r\n SERVER_TELEM_CONSTANTS.SCHEMA_VERSION,\r\n requestWithRegionDiscoveryFields,\r\n platformFields,\r\n ].join(SERVER_TELEM_CONSTANTS.CATEGORY_SEPARATOR);\r\n }\r\n /**\r\n * API to add MSER Telemetry for the last failed request\r\n */\r\n generateLastRequestHeaderValue() {\r\n const lastRequests = this.getLastRequests();\r\n const maxErrors = ServerTelemetryManager.maxErrorsToSend(lastRequests);\r\n const failedRequests = lastRequests.failedRequests\r\n .slice(0, 2 * maxErrors)\r\n .join(SERVER_TELEM_CONSTANTS.VALUE_SEPARATOR);\r\n const errors = lastRequests.errors\r\n .slice(0, maxErrors)\r\n .join(SERVER_TELEM_CONSTANTS.VALUE_SEPARATOR);\r\n const errorCount = lastRequests.errors.length;\r\n // Indicate whether this header contains all data or partial data\r\n const overflow = maxErrors < errorCount\r\n ? SERVER_TELEM_CONSTANTS.OVERFLOW_TRUE\r\n : SERVER_TELEM_CONSTANTS.OVERFLOW_FALSE;\r\n const platformFields = [errorCount, overflow].join(SERVER_TELEM_CONSTANTS.VALUE_SEPARATOR);\r\n return [\r\n SERVER_TELEM_CONSTANTS.SCHEMA_VERSION,\r\n lastRequests.cacheHits,\r\n failedRequests,\r\n errors,\r\n platformFields,\r\n ].join(SERVER_TELEM_CONSTANTS.CATEGORY_SEPARATOR);\r\n }\r\n /**\r\n * API to cache token failures for MSER data capture\r\n * @param error\r\n */\r\n cacheFailedRequest(error) {\r\n const lastRequests = this.getLastRequests();\r\n if (lastRequests.errors.length >=\r\n SERVER_TELEM_CONSTANTS.MAX_CACHED_ERRORS) {\r\n // Remove a cached error to make room, first in first out\r\n lastRequests.failedRequests.shift(); // apiId\r\n lastRequests.failedRequests.shift(); // correlationId\r\n lastRequests.errors.shift();\r\n }\r\n lastRequests.failedRequests.push(this.apiId, this.correlationId);\r\n if (error instanceof Error && !!error && error.toString()) {\r\n if (error instanceof AuthError) {\r\n if (error.subError) {\r\n lastRequests.errors.push(error.subError);\r\n }\r\n else if (error.errorCode) {\r\n lastRequests.errors.push(error.errorCode);\r\n }\r\n else {\r\n lastRequests.errors.push(error.toString());\r\n }\r\n }\r\n else {\r\n lastRequests.errors.push(error.toString());\r\n }\r\n }\r\n else {\r\n lastRequests.errors.push(SERVER_TELEM_CONSTANTS.UNKNOWN_ERROR);\r\n }\r\n this.cacheManager.setServerTelemetry(this.telemetryCacheKey, lastRequests, this.correlationId);\r\n return;\r\n }\r\n /**\r\n * Update server telemetry cache entry by incrementing cache hit counter\r\n */\r\n incrementCacheHits() {\r\n const lastRequests = this.getLastRequests();\r\n lastRequests.cacheHits += 1;\r\n this.cacheManager.setServerTelemetry(this.telemetryCacheKey, lastRequests, this.correlationId);\r\n return lastRequests.cacheHits;\r\n }\r\n /**\r\n * Get the server telemetry entity from cache or initialize a new one\r\n */\r\n getLastRequests() {\r\n const initialValue = {\r\n failedRequests: [],\r\n errors: [],\r\n cacheHits: 0,\r\n };\r\n const lastRequests = this.cacheManager.getServerTelemetry(this.telemetryCacheKey);\r\n return lastRequests || initialValue;\r\n }\r\n /**\r\n * Remove server telemetry cache entry\r\n */\r\n clearTelemetryCache() {\r\n const lastRequests = this.getLastRequests();\r\n const numErrorsFlushed = ServerTelemetryManager.maxErrorsToSend(lastRequests);\r\n const errorCount = lastRequests.errors.length;\r\n if (numErrorsFlushed === errorCount) {\r\n // All errors were sent on last request, clear Telemetry cache\r\n this.cacheManager.removeItem(this.telemetryCacheKey, this.correlationId);\r\n }\r\n else {\r\n // Partial data was flushed to server, construct a new telemetry cache item with errors that were not flushed\r\n const serverTelemEntity = {\r\n failedRequests: lastRequests.failedRequests.slice(numErrorsFlushed * 2),\r\n errors: lastRequests.errors.slice(numErrorsFlushed),\r\n cacheHits: 0,\r\n };\r\n this.cacheManager.setServerTelemetry(this.telemetryCacheKey, serverTelemEntity, this.correlationId);\r\n }\r\n }\r\n /**\r\n * Returns the maximum number of errors that can be flushed to the server in the next network request\r\n * @param serverTelemetryEntity\r\n */\r\n static maxErrorsToSend(serverTelemetryEntity) {\r\n let i;\r\n let maxErrors = 0;\r\n let dataSize = 0;\r\n const errorCount = serverTelemetryEntity.errors.length;\r\n for (i = 0; i < errorCount; i++) {\r\n // failedRequests parameter contains pairs of apiId and correlationId, multiply index by 2 to preserve pairs\r\n const apiId = serverTelemetryEntity.failedRequests[2 * i] ||\r\n Constants$1.EMPTY_STRING;\r\n const correlationId = serverTelemetryEntity.failedRequests[2 * i + 1] ||\r\n Constants$1.EMPTY_STRING;\r\n const errorCode = serverTelemetryEntity.errors[i] || Constants$1.EMPTY_STRING;\r\n // Count number of characters that would be added to header, each character is 1 byte. Add 3 at the end to account for separators\r\n dataSize +=\r\n apiId.toString().length +\r\n correlationId.toString().length +\r\n errorCode.length +\r\n 3;\r\n if (dataSize < SERVER_TELEM_CONSTANTS.MAX_LAST_HEADER_BYTES) {\r\n // Adding this entry to the header would still keep header size below the limit\r\n maxErrors += 1;\r\n }\r\n else {\r\n break;\r\n }\r\n }\r\n return maxErrors;\r\n }\r\n /**\r\n * Get the region discovery fields\r\n *\r\n * @returns string\r\n */\r\n getRegionDiscoveryFields() {\r\n const regionDiscoveryFields = [];\r\n regionDiscoveryFields.push(this.regionUsed || Constants$1.EMPTY_STRING);\r\n regionDiscoveryFields.push(this.regionSource || Constants$1.EMPTY_STRING);\r\n regionDiscoveryFields.push(this.regionOutcome || Constants$1.EMPTY_STRING);\r\n return regionDiscoveryFields.join(\",\");\r\n }\r\n /**\r\n * Update the region discovery metadata\r\n *\r\n * @param regionDiscoveryMetadata\r\n * @returns void\r\n */\r\n updateRegionDiscoveryMetadata(regionDiscoveryMetadata) {\r\n this.regionUsed = regionDiscoveryMetadata.region_used;\r\n this.regionSource = regionDiscoveryMetadata.region_source;\r\n this.regionOutcome = regionDiscoveryMetadata.region_outcome;\r\n }\r\n /**\r\n * Set cache outcome\r\n */\r\n setCacheOutcome(cacheOutcome) {\r\n this.cacheOutcome = cacheOutcome;\r\n }\r\n setNativeBrokerErrorCode(errorCode) {\r\n const lastRequests = this.getLastRequests();\r\n lastRequests.nativeBrokerErrorCode = errorCode;\r\n this.cacheManager.setServerTelemetry(this.telemetryCacheKey, lastRequests, this.correlationId);\r\n }\r\n getNativeBrokerErrorCode() {\r\n return this.getLastRequests().nativeBrokerErrorCode;\r\n }\r\n clearNativeBrokerErrorCode() {\r\n const lastRequests = this.getLastRequests();\r\n delete lastRequests.nativeBrokerErrorCode;\r\n this.cacheManager.setServerTelemetry(this.telemetryCacheKey, lastRequests, this.correlationId);\r\n }\r\n static makeExtraSkuString(params) {\r\n return makeExtraSkuString(params);\r\n }\r\n}\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * This class deserializes cache entities read from the file into in-memory object types defined internally\r\n * @internal\r\n */\r\nclass Deserializer {\r\n /**\r\n * Parse the JSON blob in memory and deserialize the content\r\n * @param cachedJson - JSON blob cache\r\n */\r\n static deserializeJSONBlob(jsonFile) {\r\n const deserializedCache = !jsonFile ? {} : JSON.parse(jsonFile);\r\n return deserializedCache;\r\n }\r\n /**\r\n * Deserializes accounts to AccountEntity objects\r\n * @param accounts - accounts of type SerializedAccountEntity\r\n */\r\n static deserializeAccounts(accounts) {\r\n const accountObjects = {};\r\n if (accounts) {\r\n Object.keys(accounts).map(function (key) {\r\n const serializedAcc = accounts[key];\r\n const mappedAcc = {\r\n homeAccountId: serializedAcc.home_account_id,\r\n environment: serializedAcc.environment,\r\n realm: serializedAcc.realm,\r\n localAccountId: serializedAcc.local_account_id,\r\n username: serializedAcc.username,\r\n authorityType: serializedAcc.authority_type,\r\n name: serializedAcc.name,\r\n clientInfo: serializedAcc.client_info,\r\n lastModificationTime: serializedAcc.last_modification_time,\r\n lastModificationApp: serializedAcc.last_modification_app,\r\n tenantProfiles: serializedAcc.tenantProfiles?.map((serializedTenantProfile) => {\r\n return JSON.parse(serializedTenantProfile);\r\n }),\r\n lastUpdatedAt: Date.now().toString(),\r\n };\r\n const account = new AccountEntity();\r\n CacheManager.toObject(account, mappedAcc);\r\n accountObjects[key] = account;\r\n });\r\n }\r\n return accountObjects;\r\n }\r\n /**\r\n * Deserializes id tokens to IdTokenEntity objects\r\n * @param idTokens - credentials of type SerializedIdTokenEntity\r\n */\r\n static deserializeIdTokens(idTokens) {\r\n const idObjects = {};\r\n if (idTokens) {\r\n Object.keys(idTokens).map(function (key) {\r\n const serializedIdT = idTokens[key];\r\n const idToken = {\r\n homeAccountId: serializedIdT.home_account_id,\r\n environment: serializedIdT.environment,\r\n credentialType: serializedIdT.credential_type,\r\n clientId: serializedIdT.client_id,\r\n secret: serializedIdT.secret,\r\n realm: serializedIdT.realm,\r\n lastUpdatedAt: Date.now().toString(),\r\n };\r\n idObjects[key] = idToken;\r\n });\r\n }\r\n return idObjects;\r\n }\r\n /**\r\n * Deserializes access tokens to AccessTokenEntity objects\r\n * @param accessTokens - access tokens of type SerializedAccessTokenEntity\r\n */\r\n static deserializeAccessTokens(accessTokens) {\r\n const atObjects = {};\r\n if (accessTokens) {\r\n Object.keys(accessTokens).map(function (key) {\r\n const serializedAT = accessTokens[key];\r\n const accessToken = {\r\n homeAccountId: serializedAT.home_account_id,\r\n environment: serializedAT.environment,\r\n credentialType: serializedAT.credential_type,\r\n clientId: serializedAT.client_id,\r\n secret: serializedAT.secret,\r\n realm: serializedAT.realm,\r\n target: serializedAT.target,\r\n cachedAt: serializedAT.cached_at,\r\n expiresOn: serializedAT.expires_on,\r\n extendedExpiresOn: serializedAT.extended_expires_on,\r\n refreshOn: serializedAT.refresh_on,\r\n keyId: serializedAT.key_id,\r\n tokenType: serializedAT.token_type,\r\n requestedClaims: serializedAT.requestedClaims,\r\n requestedClaimsHash: serializedAT.requestedClaimsHash,\r\n userAssertionHash: serializedAT.userAssertionHash,\r\n lastUpdatedAt: Date.now().toString(),\r\n };\r\n atObjects[key] = accessToken;\r\n });\r\n }\r\n return atObjects;\r\n }\r\n /**\r\n * Deserializes refresh tokens to RefreshTokenEntity objects\r\n * @param refreshTokens - refresh tokens of type SerializedRefreshTokenEntity\r\n */\r\n static deserializeRefreshTokens(refreshTokens) {\r\n const rtObjects = {};\r\n if (refreshTokens) {\r\n Object.keys(refreshTokens).map(function (key) {\r\n const serializedRT = refreshTokens[key];\r\n const refreshToken = {\r\n homeAccountId: serializedRT.home_account_id,\r\n environment: serializedRT.environment,\r\n credentialType: serializedRT.credential_type,\r\n clientId: serializedRT.client_id,\r\n secret: serializedRT.secret,\r\n familyId: serializedRT.family_id,\r\n target: serializedRT.target,\r\n realm: serializedRT.realm,\r\n lastUpdatedAt: Date.now().toString(),\r\n };\r\n rtObjects[key] = refreshToken;\r\n });\r\n }\r\n return rtObjects;\r\n }\r\n /**\r\n * Deserializes appMetadata to AppMetaData objects\r\n * @param appMetadata - app metadata of type SerializedAppMetadataEntity\r\n */\r\n static deserializeAppMetadata(appMetadata) {\r\n const appMetadataObjects = {};\r\n if (appMetadata) {\r\n Object.keys(appMetadata).map(function (key) {\r\n const serializedAmdt = appMetadata[key];\r\n appMetadataObjects[key] = {\r\n clientId: serializedAmdt.client_id,\r\n environment: serializedAmdt.environment,\r\n familyId: serializedAmdt.family_id,\r\n };\r\n });\r\n }\r\n return appMetadataObjects;\r\n }\r\n /**\r\n * Deserialize an inMemory Cache\r\n * @param jsonCache - JSON blob cache\r\n */\r\n static deserializeAllCache(jsonCache) {\r\n return {\r\n accounts: jsonCache.Account\r\n ? this.deserializeAccounts(jsonCache.Account)\r\n : {},\r\n idTokens: jsonCache.IdToken\r\n ? this.deserializeIdTokens(jsonCache.IdToken)\r\n : {},\r\n accessTokens: jsonCache.AccessToken\r\n ? this.deserializeAccessTokens(jsonCache.AccessToken)\r\n : {},\r\n refreshTokens: jsonCache.RefreshToken\r\n ? this.deserializeRefreshTokens(jsonCache.RefreshToken)\r\n : {},\r\n appMetadata: jsonCache.AppMetadata\r\n ? this.deserializeAppMetadata(jsonCache.AppMetadata)\r\n : {},\r\n };\r\n }\r\n}\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * Warning: This set of exports is purely intended to be used by other MSAL libraries, and should be considered potentially unstable. We strongly discourage using them directly, you do so at your own risk.\r\n * Breaking changes to these APIs will be shipped under a minor version, instead of a major version.\r\n */\n\nvar internals = /*#__PURE__*/Object.freeze({\n __proto__: null,\n Deserializer: Deserializer,\n Serializer: Serializer\n});\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n// MSI Constants. Docs for MSI are available here https://docs.microsoft.com/azure/app-service/overview-managed-identity\r\nconst DEFAULT_MANAGED_IDENTITY_ID = \"system_assigned_managed_identity\";\r\nconst MANAGED_IDENTITY_DEFAULT_TENANT = \"managed_identity\";\r\nconst DEFAULT_AUTHORITY_FOR_MANAGED_IDENTITY = `https://login.microsoftonline.com/${MANAGED_IDENTITY_DEFAULT_TENANT}/`;\r\n/**\r\n * Managed Identity Headers - used in network requests\r\n */\r\nconst ManagedIdentityHeaders = {\r\n AUTHORIZATION_HEADER_NAME: \"Authorization\",\r\n METADATA_HEADER_NAME: \"Metadata\",\r\n APP_SERVICE_SECRET_HEADER_NAME: \"X-IDENTITY-HEADER\",\r\n ML_AND_SF_SECRET_HEADER_NAME: \"secret\",\r\n};\r\n/**\r\n * Managed Identity Query Parameters - used in network requests\r\n */\r\nconst ManagedIdentityQueryParameters = {\r\n API_VERSION: \"api-version\",\r\n RESOURCE: \"resource\",\r\n SHA256_TOKEN_TO_REFRESH: \"token_sha256_to_refresh\",\r\n XMS_CC: \"xms_cc\",\r\n};\r\n/**\r\n * Managed Identity Environment Variable Names\r\n */\r\nconst ManagedIdentityEnvironmentVariableNames = {\r\n AZURE_POD_IDENTITY_AUTHORITY_HOST: \"AZURE_POD_IDENTITY_AUTHORITY_HOST\",\r\n DEFAULT_IDENTITY_CLIENT_ID: \"DEFAULT_IDENTITY_CLIENT_ID\",\r\n IDENTITY_ENDPOINT: \"IDENTITY_ENDPOINT\",\r\n IDENTITY_HEADER: \"IDENTITY_HEADER\",\r\n IDENTITY_SERVER_THUMBPRINT: \"IDENTITY_SERVER_THUMBPRINT\",\r\n IMDS_ENDPOINT: \"IMDS_ENDPOINT\",\r\n MSI_ENDPOINT: \"MSI_ENDPOINT\",\r\n MSI_SECRET: \"MSI_SECRET\",\r\n};\r\n/**\r\n * Managed Identity Source Names\r\n * @public\r\n */\r\nconst ManagedIdentitySourceNames = {\r\n APP_SERVICE: \"AppService\",\r\n AZURE_ARC: \"AzureArc\",\r\n CLOUD_SHELL: \"CloudShell\",\r\n DEFAULT_TO_IMDS: \"DefaultToImds\",\r\n IMDS: \"Imds\",\r\n MACHINE_LEARNING: \"MachineLearning\",\r\n SERVICE_FABRIC: \"ServiceFabric\",\r\n};\r\n/**\r\n * Managed Identity Ids\r\n */\r\nconst ManagedIdentityIdType = {\r\n SYSTEM_ASSIGNED: \"system-assigned\",\r\n USER_ASSIGNED_CLIENT_ID: \"user-assigned-client-id\",\r\n USER_ASSIGNED_RESOURCE_ID: \"user-assigned-resource-id\",\r\n USER_ASSIGNED_OBJECT_ID: \"user-assigned-object-id\",\r\n};\r\n/**\r\n * http methods\r\n */\r\nconst HttpMethod = {\r\n GET: \"get\",\r\n POST: \"post\",\r\n};\r\nconst ProxyStatus = {\r\n SUCCESS_RANGE_START: HttpStatus.SUCCESS_RANGE_START,\r\n SUCCESS_RANGE_END: HttpStatus.SUCCESS_RANGE_END,\r\n SERVER_ERROR: HttpStatus.SERVER_ERROR,\r\n};\r\n/**\r\n * Constants used for region discovery\r\n */\r\nconst REGION_ENVIRONMENT_VARIABLE = \"REGION_NAME\";\r\nconst MSAL_FORCE_REGION = \"MSAL_FORCE_REGION\";\r\n/**\r\n * Constant used for PKCE\r\n */\r\nconst RANDOM_OCTET_SIZE = 32;\r\n/**\r\n * Constants used in PKCE\r\n */\r\nconst Hash = {\r\n SHA256: \"sha256\",\r\n};\r\n/**\r\n * Constants for encoding schemes\r\n */\r\nconst CharSet = {\r\n CV_CHARSET: \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-._~\",\r\n};\r\n/**\r\n * Cache Constants\r\n */\r\nconst CACHE = {\r\n KEY_SEPARATOR: \"-\",\r\n};\r\n/**\r\n * Constants\r\n */\r\nconst Constants = {\r\n MSAL_SKU: \"msal.js.node\",\r\n JWT_BEARER_ASSERTION_TYPE: \"urn:ietf:params:oauth:client-assertion-type:jwt-bearer\",\r\n AUTHORIZATION_PENDING: \"authorization_pending\",\r\n HTTP_PROTOCOL: \"http://\",\r\n LOCALHOST: \"localhost\",\r\n};\r\n/**\r\n * API Codes for Telemetry purposes.\r\n * Before adding a new code you must claim it in the MSAL Telemetry tracker as these number spaces are shared across all MSALs\r\n * 0-99 Silent Flow\r\n * 600-699 Device Code Flow\r\n * 800-899 Auth Code Flow\r\n */\r\nconst ApiId = {\r\n acquireTokenSilent: 62,\r\n acquireTokenByUsernamePassword: 371,\r\n acquireTokenByDeviceCode: 671,\r\n acquireTokenByClientCredential: 771,\r\n acquireTokenByCode: 871,\r\n acquireTokenByRefreshToken: 872,\r\n};\r\n/**\r\n * JWT constants\r\n */\r\nconst JwtConstants = {\r\n RSA_256: \"RS256\",\r\n PSS_256: \"PS256\",\r\n X5T_256: \"x5t#S256\",\r\n X5T: \"x5t\",\r\n X5C: \"x5c\",\r\n AUDIENCE: \"aud\",\r\n EXPIRATION_TIME: \"exp\",\r\n ISSUER: \"iss\",\r\n SUBJECT: \"sub\",\r\n NOT_BEFORE: \"nbf\",\r\n JWT_ID: \"jti\",\r\n};\r\nconst LOOPBACK_SERVER_CONSTANTS = {\r\n INTERVAL_MS: 100,\r\n TIMEOUT_MS: 5000,\r\n};\r\nconst AZURE_ARC_SECRET_FILE_MAX_SIZE_BYTES = 4096; // 4 KB\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nclass NetworkUtils {\r\n static getNetworkResponse(headers, body, statusCode) {\r\n return {\r\n headers: headers,\r\n body: body,\r\n status: statusCode,\r\n };\r\n }\r\n /*\r\n * Utility function that converts a URL object into an ordinary options object as expected by the\r\n * http.request and https.request APIs.\r\n * https://github.com/nodejs/node/blob/main/lib/internal/url.js#L1090\r\n */\r\n static urlToHttpOptions(url) {\r\n const options = {\r\n protocol: url.protocol,\r\n hostname: url.hostname && url.hostname.startsWith(\"[\")\r\n ? url.hostname.slice(1, -1)\r\n : url.hostname,\r\n hash: url.hash,\r\n search: url.search,\r\n pathname: url.pathname,\r\n path: `${url.pathname || \"\"}${url.search || \"\"}`,\r\n href: url.href,\r\n };\r\n if (url.port !== \"\") {\r\n options.port = Number(url.port);\r\n }\r\n if (url.username || url.password) {\r\n options.auth = `${decodeURIComponent(url.username)}:${decodeURIComponent(url.password)}`;\r\n }\r\n return options;\r\n }\r\n}\n\n/* eslint-disable header/header */\r\nconst name = \"@azure/msal-node\";\r\nconst version = \"3.8.3\";\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * This class implements the API for network requests.\r\n */\r\nclass HttpClient {\r\n constructor(proxyUrl, customAgentOptions, loggerOptions) {\r\n this.networkRequestViaProxy = (httpMethod, destinationUrlString, options, timeout) => {\r\n const destinationUrl = new URL(destinationUrlString);\r\n const proxyUrl = new URL(this.proxyUrl);\r\n // \"method: connect\" must be used to establish a connection to the proxy\r\n const headers = options?.headers || {};\r\n const tunnelRequestOptions = {\r\n host: proxyUrl.hostname,\r\n port: proxyUrl.port,\r\n method: \"CONNECT\",\r\n path: destinationUrl.hostname,\r\n headers: headers,\r\n };\r\n if (this.customAgentOptions &&\r\n Object.keys(this.customAgentOptions).length) {\r\n tunnelRequestOptions.agent = new http.Agent(this.customAgentOptions);\r\n }\r\n // compose a request string for the socket\r\n let postRequestStringContent = \"\";\r\n if (httpMethod === HttpMethod.POST) {\r\n const body = options?.body || \"\";\r\n postRequestStringContent =\r\n \"Content-Type: application/x-www-form-urlencoded\\r\\n\" +\r\n `Content-Length: ${body.length}\\r\\n` +\r\n `\\r\\n${body}`;\r\n }\r\n else {\r\n // optional timeout is only for get requests (regionDiscovery, for example)\r\n if (timeout) {\r\n tunnelRequestOptions.timeout = timeout;\r\n }\r\n }\r\n const outgoingRequestString = `${httpMethod.toUpperCase()} ${destinationUrl.href} HTTP/1.1\\r\\n` +\r\n `Host: ${destinationUrl.host}\\r\\n` +\r\n \"Connection: close\\r\\n\" +\r\n postRequestStringContent +\r\n \"\\r\\n\";\r\n return new Promise((resolve, reject) => {\r\n const request = http.request(tunnelRequestOptions);\r\n if (timeout) {\r\n request.on(\"timeout\", () => {\r\n this.logUrlWithPiiAwareness(`Request timeout after ${timeout}ms for URL`, destinationUrlString);\r\n request.destroy();\r\n reject(new Error(`Request time out after ${timeout}ms`));\r\n });\r\n }\r\n request.end();\r\n // establish connection to the proxy\r\n request.on(\"connect\", (response, socket) => {\r\n const proxyStatusCode = response?.statusCode || ProxyStatus.SERVER_ERROR;\r\n if (proxyStatusCode < ProxyStatus.SUCCESS_RANGE_START ||\r\n proxyStatusCode > ProxyStatus.SUCCESS_RANGE_END) {\r\n request.destroy();\r\n socket.destroy();\r\n reject(new Error(`Error connecting to proxy. Http status code: ${response.statusCode}. Http status message: ${response?.statusMessage || \"Unknown\"}`));\r\n }\r\n // make a request over an HTTP tunnel\r\n socket.write(outgoingRequestString);\r\n const data = [];\r\n socket.on(\"data\", (chunk) => {\r\n data.push(chunk);\r\n });\r\n socket.on(\"end\", () => {\r\n // combine all received buffer streams into one buffer, and then into a string\r\n const dataString = Buffer.concat([...data]).toString();\r\n // separate each line into it's own entry in an arry\r\n const dataStringArray = dataString.split(\"\\r\\n\");\r\n // the first entry will contain the statusCode and statusMessage\r\n const httpStatusCode = parseInt(dataStringArray[0].split(\" \")[1]);\r\n // remove \"HTTP/1.1\" and the status code to get the status message\r\n const statusMessage = dataStringArray[0]\r\n .split(\" \")\r\n .slice(2)\r\n .join(\" \");\r\n // the last entry will contain the body\r\n const body = dataStringArray[dataStringArray.length - 1];\r\n // everything in between the first and last entries are the headers\r\n const headersArray = dataStringArray.slice(1, dataStringArray.length - 2);\r\n // build an object out of all the headers\r\n const entries = new Map();\r\n headersArray.forEach((header) => {\r\n /**\r\n * the header might look like \"Content-Length: 1531\", but that is just a string\r\n * it needs to be converted to a key/value pair\r\n * split the string at the first instance of \":\"\r\n * there may be more than one \":\" if the value of the header is supposed to be a JSON object\r\n */\r\n const headerKeyValue = header.split(new RegExp(/:\\s(.*)/s));\r\n const headerKey = headerKeyValue[0];\r\n let headerValue = headerKeyValue[1];\r\n // check if the value of the header is supposed to be a JSON object\r\n try {\r\n const object = JSON.parse(headerValue);\r\n // if it is, then convert it from a string to a JSON object\r\n if (object && typeof object === \"object\") {\r\n headerValue = object;\r\n }\r\n }\r\n catch (e) {\r\n // otherwise, leave it as a string\r\n }\r\n entries.set(headerKey, headerValue);\r\n });\r\n const headers = Object.fromEntries(entries);\r\n const parsedHeaders = headers;\r\n const networkResponse = NetworkUtils.getNetworkResponse(parsedHeaders, this.parseBody(httpStatusCode, statusMessage, parsedHeaders, body), httpStatusCode);\r\n if (this.shouldDestroyRequest(httpStatusCode, networkResponse)) {\r\n request.destroy();\r\n }\r\n resolve(networkResponse);\r\n });\r\n socket.on(\"error\", (chunk) => {\r\n request.destroy();\r\n socket.destroy();\r\n reject(new Error(chunk.toString()));\r\n });\r\n });\r\n request.on(\"error\", (chunk) => {\r\n this.logger.error(`HttpClient - Proxy request error: ${chunk.toString()}`, \"\");\r\n this.logUrlWithPiiAwareness(\"Destination URL\", destinationUrlString);\r\n this.logUrlWithPiiAwareness(\"Proxy URL\", this.proxyUrl);\r\n this.logger.error(`HttpClient - Method: ${httpMethod}`, \"\");\r\n this.logger.errorPii(`HttpClient - Headers: ${JSON.stringify(headers)}`, \"\");\r\n request.destroy();\r\n reject(new Error(chunk.toString()));\r\n });\r\n });\r\n };\r\n this.networkRequestViaHttps = (httpMethod, urlString, options, timeout) => {\r\n const isPostRequest = httpMethod === HttpMethod.POST;\r\n const body = options?.body || \"\";\r\n const url = new URL(urlString);\r\n const headers = options?.headers || {};\r\n const customOptions = {\r\n method: httpMethod,\r\n headers: headers,\r\n ...NetworkUtils.urlToHttpOptions(url),\r\n };\r\n if (this.customAgentOptions &&\r\n Object.keys(this.customAgentOptions).length) {\r\n customOptions.agent = new https.Agent(this.customAgentOptions);\r\n }\r\n if (isPostRequest) {\r\n // needed for post request to work\r\n customOptions.headers = {\r\n ...customOptions.headers,\r\n \"Content-Length\": body.length,\r\n };\r\n }\r\n else {\r\n // optional timeout is only for get requests (regionDiscovery, for example)\r\n if (timeout) {\r\n customOptions.timeout = timeout;\r\n }\r\n }\r\n return new Promise((resolve, reject) => {\r\n let request;\r\n // managed identity sources use http instead of https\r\n if (customOptions.protocol === \"http:\") {\r\n request = http.request(customOptions);\r\n }\r\n else {\r\n request = https.request(customOptions);\r\n }\r\n if (isPostRequest) {\r\n request.write(body);\r\n }\r\n if (timeout) {\r\n request.on(\"timeout\", () => {\r\n this.logUrlWithPiiAwareness(`HTTPS request timeout after ${timeout}ms for URL`, urlString);\r\n request.destroy();\r\n reject(new Error(`Request time out after ${timeout}ms`));\r\n });\r\n }\r\n request.end();\r\n request.on(\"response\", (response) => {\r\n const headers = response.headers;\r\n const statusCode = response.statusCode;\r\n const statusMessage = response.statusMessage;\r\n const data = [];\r\n response.on(\"data\", (chunk) => {\r\n data.push(chunk);\r\n });\r\n response.on(\"end\", () => {\r\n // combine all received buffer streams into one buffer, and then into a string\r\n const body = Buffer.concat([...data]).toString();\r\n const parsedHeaders = headers;\r\n const networkResponse = NetworkUtils.getNetworkResponse(parsedHeaders, this.parseBody(statusCode, statusMessage, parsedHeaders, body), statusCode);\r\n if (this.shouldDestroyRequest(statusCode, networkResponse)) {\r\n request.destroy();\r\n }\r\n resolve(networkResponse);\r\n });\r\n });\r\n request.on(\"error\", (chunk) => {\r\n this.logger.error(`HttpClient - HTTPS request error: ${chunk.toString()}`, \"\");\r\n this.logUrlWithPiiAwareness(\"URL\", urlString);\r\n this.logger.error(`HttpClient - Method: ${httpMethod}`, \"\");\r\n this.logger.errorPii(`HttpClient - Headers: ${JSON.stringify(headers)}`, \"\");\r\n request.destroy();\r\n reject(new Error(chunk.toString()));\r\n });\r\n });\r\n };\r\n /**\r\n * Check if extra parsing is needed on the repsonse from the server\r\n * @param statusCode {number} the status code of the response from the server\r\n * @param statusMessage {string | undefined} the status message of the response from the server\r\n * @param headers {Record} the headers of the response from the server\r\n * @param body {string} the body from the response of the server\r\n * @returns {Object} JSON parsed body or error object\r\n */\r\n this.parseBody = (statusCode, statusMessage, headers, body) => {\r\n /*\r\n * Informational responses (100 – 199)\r\n * Successful responses (200 – 299)\r\n * Redirection messages (300 – 399)\r\n * Client error responses (400 – 499)\r\n * Server error responses (500 – 599)\r\n */\r\n let parsedBody;\r\n try {\r\n parsedBody = JSON.parse(body);\r\n }\r\n catch (error) {\r\n let errorType;\r\n let errorDescriptionHelper;\r\n if (statusCode >= HttpStatus.CLIENT_ERROR_RANGE_START &&\r\n statusCode <= HttpStatus.CLIENT_ERROR_RANGE_END) {\r\n errorType = \"client_error\";\r\n errorDescriptionHelper = \"A client\";\r\n }\r\n else if (statusCode >= HttpStatus.SERVER_ERROR_RANGE_START &&\r\n statusCode <= HttpStatus.SERVER_ERROR_RANGE_END) {\r\n errorType = \"server_error\";\r\n errorDescriptionHelper = \"A server\";\r\n }\r\n else {\r\n errorType = \"unknown_error\";\r\n errorDescriptionHelper = \"An unknown\";\r\n }\r\n parsedBody = {\r\n error: errorType,\r\n error_description: `${errorDescriptionHelper} error occured.\\nHttp status code: ${statusCode}\\nHttp status message: ${statusMessage || \"Unknown\"}\\nHeaders: ${JSON.stringify(headers)}`,\r\n };\r\n }\r\n return parsedBody;\r\n };\r\n /**\r\n * Helper function to log a formatted message containing URLs, with PII-aware sanitization\r\n * @param label {string} the label for the log message\r\n * @param urlString {string} the URL to log\r\n */\r\n this.logUrlWithPiiAwareness = (label, urlString) => {\r\n if (this.isPiiEnabled) {\r\n this.logger.errorPii(`HttpClient - ${label}: ${urlString}`, \"\");\r\n }\r\n else {\r\n let urlHelper;\r\n try {\r\n const url = new URL(urlString);\r\n urlHelper = `${url.protocol}//${url.host}${url.pathname}`;\r\n }\r\n catch {\r\n urlHelper = urlString.split(\"?\")[0] || \"unknown\";\r\n }\r\n this.logger.error(`HttpClient - ${label}: ${urlHelper} [Enable PII logging to see additional details]`, \"\");\r\n }\r\n };\r\n /**\r\n * Helper function to determine if a request should be destroyed based on status code and response body.\r\n * Checks if the response is an error and not part of the device code flow (authorization_pending).\r\n * @param statusCode {number} the status code of the response\r\n * @param networkResponse {NetworkResponse} the network response object\r\n * @returns {boolean} true if the request should be destroyed, false otherwise\r\n */\r\n this.shouldDestroyRequest = (statusCode, networkResponse) => {\r\n return ((statusCode < HttpStatus.SUCCESS_RANGE_START ||\r\n statusCode > HttpStatus.SUCCESS_RANGE_END) &&\r\n // do not destroy the request for the device code flow\r\n !(networkResponse.body &&\r\n typeof networkResponse.body === \"object\" &&\r\n \"error\" in networkResponse.body &&\r\n networkResponse.body.error ===\r\n Constants.AUTHORIZATION_PENDING));\r\n };\r\n this.proxyUrl = proxyUrl || \"\";\r\n this.customAgentOptions = customAgentOptions || {};\r\n this.logger = new Logger(loggerOptions || {}, name, version);\r\n this.isPiiEnabled = this.logger.isPiiLoggingEnabled();\r\n }\r\n /**\r\n * Http Get request\r\n * @param url\r\n * @param options\r\n */\r\n async sendGetRequestAsync(url, options, timeout) {\r\n if (this.proxyUrl) {\r\n return this.networkRequestViaProxy(HttpMethod.GET, url, options, timeout);\r\n }\r\n else {\r\n return this.networkRequestViaHttps(HttpMethod.GET, url, options, timeout);\r\n }\r\n }\r\n /**\r\n * Http Post request\r\n * @param url\r\n * @param options\r\n */\r\n async sendPostRequestAsync(url, options) {\r\n if (this.proxyUrl) {\r\n return this.networkRequestViaProxy(HttpMethod.POST, url, options);\r\n }\r\n else {\r\n return this.networkRequestViaHttps(HttpMethod.POST, url, options);\r\n }\r\n }\r\n}\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nconst invalidFileExtension = \"invalid_file_extension\";\r\nconst invalidFilePath = \"invalid_file_path\";\r\nconst invalidManagedIdentityIdType = \"invalid_managed_identity_id_type\";\r\nconst invalidSecret = \"invalid_secret\";\r\nconst missingId = \"missing_client_id\";\r\nconst networkUnavailable = \"network_unavailable\";\r\nconst platformNotSupported = \"platform_not_supported\";\r\nconst unableToCreateAzureArc = \"unable_to_create_azure_arc\";\r\nconst unableToCreateCloudShell = \"unable_to_create_cloud_shell\";\r\nconst unableToCreateSource = \"unable_to_create_source\";\r\nconst unableToReadSecretFile = \"unable_to_read_secret_file\";\r\nconst userAssignedNotAvailableAtRuntime = \"user_assigned_not_available_at_runtime\";\r\nconst wwwAuthenticateHeaderMissing = \"www_authenticate_header_missing\";\r\nconst wwwAuthenticateHeaderUnsupportedFormat = \"www_authenticate_header_unsupported_format\";\r\nconst MsiEnvironmentVariableUrlMalformedErrorCodes = {\r\n [ManagedIdentityEnvironmentVariableNames.AZURE_POD_IDENTITY_AUTHORITY_HOST]: \"azure_pod_identity_authority_host_url_malformed\",\r\n [ManagedIdentityEnvironmentVariableNames.IDENTITY_ENDPOINT]: \"identity_endpoint_url_malformed\",\r\n [ManagedIdentityEnvironmentVariableNames.IMDS_ENDPOINT]: \"imds_endpoint_url_malformed\",\r\n [ManagedIdentityEnvironmentVariableNames.MSI_ENDPOINT]: \"msi_endpoint_url_malformed\",\r\n};\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * ManagedIdentityErrorMessage class containing string constants used by error codes and messages.\r\n */\r\nconst ManagedIdentityErrorMessages = {\r\n [invalidFileExtension]: \"The file path in the WWW-Authenticate header does not contain a .key file.\",\r\n [invalidFilePath]: \"The file path in the WWW-Authenticate header is not in a valid Windows or Linux Format.\",\r\n [invalidManagedIdentityIdType]: \"More than one ManagedIdentityIdType was provided.\",\r\n [invalidSecret]: \"The secret in the file on the file path in the WWW-Authenticate header is greater than 4096 bytes.\",\r\n [platformNotSupported]: \"The platform is not supported by Azure Arc. Azure Arc only supports Windows and Linux.\",\r\n [missingId]: \"A ManagedIdentityId id was not provided.\",\r\n [MsiEnvironmentVariableUrlMalformedErrorCodes\r\n .AZURE_POD_IDENTITY_AUTHORITY_HOST]: `The Managed Identity's '${ManagedIdentityEnvironmentVariableNames.AZURE_POD_IDENTITY_AUTHORITY_HOST}' environment variable is malformed.`,\r\n [MsiEnvironmentVariableUrlMalformedErrorCodes\r\n .IDENTITY_ENDPOINT]: `The Managed Identity's '${ManagedIdentityEnvironmentVariableNames.IDENTITY_ENDPOINT}' environment variable is malformed.`,\r\n [MsiEnvironmentVariableUrlMalformedErrorCodes\r\n .IMDS_ENDPOINT]: `The Managed Identity's '${ManagedIdentityEnvironmentVariableNames.IMDS_ENDPOINT}' environment variable is malformed.`,\r\n [MsiEnvironmentVariableUrlMalformedErrorCodes\r\n .MSI_ENDPOINT]: `The Managed Identity's '${ManagedIdentityEnvironmentVariableNames.MSI_ENDPOINT}' environment variable is malformed.`,\r\n [networkUnavailable]: \"Authentication unavailable. The request to the managed identity endpoint timed out.\",\r\n [unableToCreateAzureArc]: \"Azure Arc Managed Identities can only be system assigned.\",\r\n [unableToCreateCloudShell]: \"Cloud Shell Managed Identities can only be system assigned.\",\r\n [unableToCreateSource]: \"Unable to create a Managed Identity source based on environment variables.\",\r\n [unableToReadSecretFile]: \"Unable to read the secret file.\",\r\n [userAssignedNotAvailableAtRuntime]: \"Service Fabric user assigned managed identity ClientId or ResourceId is not configurable at runtime.\",\r\n [wwwAuthenticateHeaderMissing]: \"A 401 response was received form the Azure Arc Managed Identity, but the www-authenticate header is missing.\",\r\n [wwwAuthenticateHeaderUnsupportedFormat]: \"A 401 response was received form the Azure Arc Managed Identity, but the www-authenticate header is in an unsupported format.\",\r\n};\r\nclass ManagedIdentityError extends AuthError {\r\n constructor(errorCode) {\r\n super(errorCode, ManagedIdentityErrorMessages[errorCode]);\r\n this.name = \"ManagedIdentityError\";\r\n Object.setPrototypeOf(this, ManagedIdentityError.prototype);\r\n }\r\n}\r\nfunction createManagedIdentityError(errorCode) {\r\n return new ManagedIdentityError(errorCode);\r\n}\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nclass ManagedIdentityId {\r\n get id() {\r\n return this._id;\r\n }\r\n set id(value) {\r\n this._id = value;\r\n }\r\n get idType() {\r\n return this._idType;\r\n }\r\n set idType(value) {\r\n this._idType = value;\r\n }\r\n constructor(managedIdentityIdParams) {\r\n const userAssignedClientId = managedIdentityIdParams?.userAssignedClientId;\r\n const userAssignedResourceId = managedIdentityIdParams?.userAssignedResourceId;\r\n const userAssignedObjectId = managedIdentityIdParams?.userAssignedObjectId;\r\n if (userAssignedClientId) {\r\n if (userAssignedResourceId || userAssignedObjectId) {\r\n throw createManagedIdentityError(invalidManagedIdentityIdType);\r\n }\r\n this.id = userAssignedClientId;\r\n this.idType = ManagedIdentityIdType.USER_ASSIGNED_CLIENT_ID;\r\n }\r\n else if (userAssignedResourceId) {\r\n if (userAssignedClientId || userAssignedObjectId) {\r\n throw createManagedIdentityError(invalidManagedIdentityIdType);\r\n }\r\n this.id = userAssignedResourceId;\r\n this.idType = ManagedIdentityIdType.USER_ASSIGNED_RESOURCE_ID;\r\n }\r\n else if (userAssignedObjectId) {\r\n if (userAssignedClientId || userAssignedResourceId) {\r\n throw createManagedIdentityError(invalidManagedIdentityIdType);\r\n }\r\n this.id = userAssignedObjectId;\r\n this.idType = ManagedIdentityIdType.USER_ASSIGNED_OBJECT_ID;\r\n }\r\n else {\r\n this.id = DEFAULT_MANAGED_IDENTITY_ID;\r\n this.idType = ManagedIdentityIdType.SYSTEM_ASSIGNED;\r\n }\r\n }\r\n}\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * NodeAuthErrorMessage class containing string constants used by error codes and messages.\r\n */\r\nconst NodeAuthErrorMessage = {\r\n invalidLoopbackAddressType: {\r\n code: \"invalid_loopback_server_address_type\",\r\n desc: \"Loopback server address is not type string. This is unexpected.\",\r\n },\r\n unableToLoadRedirectUri: {\r\n code: \"unable_to_load_redirectUrl\",\r\n desc: \"Loopback server callback was invoked without a url. This is unexpected.\",\r\n },\r\n noAuthCodeInResponse: {\r\n code: \"no_auth_code_in_response\",\r\n desc: \"No auth code found in the server response. Please check your network trace to determine what happened.\",\r\n },\r\n noLoopbackServerExists: {\r\n code: \"no_loopback_server_exists\",\r\n desc: \"No loopback server exists yet.\",\r\n },\r\n loopbackServerAlreadyExists: {\r\n code: \"loopback_server_already_exists\",\r\n desc: \"Loopback server already exists. Cannot create another.\",\r\n },\r\n loopbackServerTimeout: {\r\n code: \"loopback_server_timeout\",\r\n desc: \"Timed out waiting for auth code listener to be registered.\",\r\n },\r\n stateNotFoundError: {\r\n code: \"state_not_found\",\r\n desc: \"State not found. Please verify that the request originated from msal.\",\r\n },\r\n thumbprintMissing: {\r\n code: \"thumbprint_missing_from_client_certificate\",\r\n desc: \"Client certificate does not contain a SHA-1 or SHA-256 thumbprint.\",\r\n },\r\n redirectUriNotSupported: {\r\n code: \"redirect_uri_not_supported\",\r\n desc: \"RedirectUri is not supported in this scenario. Please remove redirectUri from the request.\",\r\n },\r\n};\r\nclass NodeAuthError extends AuthError {\r\n constructor(errorCode, errorMessage) {\r\n super(errorCode, errorMessage);\r\n this.name = \"NodeAuthError\";\r\n }\r\n /**\r\n * Creates an error thrown if loopback server address is of type string.\r\n */\r\n static createInvalidLoopbackAddressTypeError() {\r\n return new NodeAuthError(NodeAuthErrorMessage.invalidLoopbackAddressType.code, `${NodeAuthErrorMessage.invalidLoopbackAddressType.desc}`);\r\n }\r\n /**\r\n * Creates an error thrown if the loopback server is unable to get a url.\r\n */\r\n static createUnableToLoadRedirectUrlError() {\r\n return new NodeAuthError(NodeAuthErrorMessage.unableToLoadRedirectUri.code, `${NodeAuthErrorMessage.unableToLoadRedirectUri.desc}`);\r\n }\r\n /**\r\n * Creates an error thrown if the server response does not contain an auth code.\r\n */\r\n static createNoAuthCodeInResponseError() {\r\n return new NodeAuthError(NodeAuthErrorMessage.noAuthCodeInResponse.code, `${NodeAuthErrorMessage.noAuthCodeInResponse.desc}`);\r\n }\r\n /**\r\n * Creates an error thrown if the loopback server has not been spun up yet.\r\n */\r\n static createNoLoopbackServerExistsError() {\r\n return new NodeAuthError(NodeAuthErrorMessage.noLoopbackServerExists.code, `${NodeAuthErrorMessage.noLoopbackServerExists.desc}`);\r\n }\r\n /**\r\n * Creates an error thrown if a loopback server already exists when attempting to create another one.\r\n */\r\n static createLoopbackServerAlreadyExistsError() {\r\n return new NodeAuthError(NodeAuthErrorMessage.loopbackServerAlreadyExists.code, `${NodeAuthErrorMessage.loopbackServerAlreadyExists.desc}`);\r\n }\r\n /**\r\n * Creates an error thrown if the loopback server times out registering the auth code listener.\r\n */\r\n static createLoopbackServerTimeoutError() {\r\n return new NodeAuthError(NodeAuthErrorMessage.loopbackServerTimeout.code, `${NodeAuthErrorMessage.loopbackServerTimeout.desc}`);\r\n }\r\n /**\r\n * Creates an error thrown when the state is not present.\r\n */\r\n static createStateNotFoundError() {\r\n return new NodeAuthError(NodeAuthErrorMessage.stateNotFoundError.code, NodeAuthErrorMessage.stateNotFoundError.desc);\r\n }\r\n /**\r\n * Creates an error thrown when client certificate was provided, but neither the SHA-1 or SHA-256 thumbprints were provided\r\n */\r\n static createThumbprintMissingError() {\r\n return new NodeAuthError(NodeAuthErrorMessage.thumbprintMissing.code, NodeAuthErrorMessage.thumbprintMissing.desc);\r\n }\r\n /**\r\n * Creates an error thrown when redirectUri is provided in an unsupported scenario\r\n */\r\n static createRedirectUriNotSupportedError() {\r\n return new NodeAuthError(NodeAuthErrorMessage.redirectUriNotSupported.code, NodeAuthErrorMessage.redirectUriNotSupported.desc);\r\n }\r\n}\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nconst DEFAULT_AUTH_OPTIONS = {\r\n clientId: Constants$1.EMPTY_STRING,\r\n authority: Constants$1.DEFAULT_AUTHORITY,\r\n clientSecret: Constants$1.EMPTY_STRING,\r\n clientAssertion: Constants$1.EMPTY_STRING,\r\n clientCertificate: {\r\n thumbprint: Constants$1.EMPTY_STRING,\r\n thumbprintSha256: Constants$1.EMPTY_STRING,\r\n privateKey: Constants$1.EMPTY_STRING,\r\n x5c: Constants$1.EMPTY_STRING,\r\n },\r\n knownAuthorities: [],\r\n cloudDiscoveryMetadata: Constants$1.EMPTY_STRING,\r\n authorityMetadata: Constants$1.EMPTY_STRING,\r\n clientCapabilities: [],\r\n protocolMode: ProtocolMode.AAD,\r\n azureCloudOptions: {\r\n azureCloudInstance: AzureCloudInstance.None,\r\n tenant: Constants$1.EMPTY_STRING,\r\n },\r\n skipAuthorityMetadataCache: false,\r\n encodeExtraQueryParams: false,\r\n};\r\nconst DEFAULT_CACHE_OPTIONS = {\r\n claimsBasedCachingEnabled: false,\r\n};\r\nconst DEFAULT_LOGGER_OPTIONS = {\r\n loggerCallback: () => {\r\n // allow users to not set logger call back\r\n },\r\n piiLoggingEnabled: false,\r\n logLevel: exports.LogLevel.Info,\r\n};\r\nconst DEFAULT_SYSTEM_OPTIONS = {\r\n loggerOptions: DEFAULT_LOGGER_OPTIONS,\r\n networkClient: new HttpClient(),\r\n proxyUrl: Constants$1.EMPTY_STRING,\r\n customAgentOptions: {},\r\n disableInternalRetries: false,\r\n};\r\nconst DEFAULT_TELEMETRY_OPTIONS = {\r\n application: {\r\n appName: Constants$1.EMPTY_STRING,\r\n appVersion: Constants$1.EMPTY_STRING,\r\n },\r\n};\r\n/**\r\n * Sets the default options when not explicitly configured from app developer\r\n *\r\n * @param auth - Authentication options\r\n * @param cache - Cache options\r\n * @param system - System options\r\n * @param telemetry - Telemetry options\r\n *\r\n * @returns Configuration\r\n * @internal\r\n */\r\nfunction buildAppConfiguration({ auth, broker, cache, system, telemetry, }) {\r\n const systemOptions = {\r\n ...DEFAULT_SYSTEM_OPTIONS,\r\n networkClient: new HttpClient(system?.proxyUrl, system?.customAgentOptions),\r\n loggerOptions: system?.loggerOptions || DEFAULT_LOGGER_OPTIONS,\r\n disableInternalRetries: system?.disableInternalRetries || false,\r\n };\r\n // if client certificate was provided, ensure that at least one of the SHA-1 or SHA-256 thumbprints were provided\r\n if (!!auth.clientCertificate &&\r\n !!!auth.clientCertificate.thumbprint &&\r\n !!!auth.clientCertificate.thumbprintSha256) {\r\n throw NodeAuthError.createStateNotFoundError();\r\n }\r\n return {\r\n auth: { ...DEFAULT_AUTH_OPTIONS, ...auth },\r\n broker: { ...broker },\r\n cache: { ...DEFAULT_CACHE_OPTIONS, ...cache },\r\n system: { ...systemOptions, ...system },\r\n telemetry: { ...DEFAULT_TELEMETRY_OPTIONS, ...telemetry },\r\n };\r\n}\r\nfunction buildManagedIdentityConfiguration({ clientCapabilities, managedIdentityIdParams, system, }) {\r\n const managedIdentityId = new ManagedIdentityId(managedIdentityIdParams);\r\n const loggerOptions = system?.loggerOptions || DEFAULT_LOGGER_OPTIONS;\r\n let networkClient;\r\n // use developer provided network client if passed in\r\n if (system?.networkClient) {\r\n networkClient = system.networkClient;\r\n // otherwise, create a new one\r\n }\r\n else {\r\n networkClient = new HttpClient(system?.proxyUrl, system?.customAgentOptions);\r\n }\r\n return {\r\n clientCapabilities: clientCapabilities || [],\r\n managedIdentityId: managedIdentityId,\r\n system: {\r\n loggerOptions,\r\n networkClient,\r\n },\r\n disableInternalRetries: system?.disableInternalRetries || false,\r\n };\r\n}\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nclass GuidGenerator {\r\n /**\r\n *\r\n * RFC4122: The version 4 UUID is meant for generating UUIDs from truly-random or pseudo-random numbers.\r\n * uuidv4 generates guids from cryprtographically-string random\r\n */\r\n generateGuid() {\r\n return uuid.v4();\r\n }\r\n /**\r\n * verifies if a string is GUID\r\n * @param guid\r\n */\r\n isGuid(guid) {\r\n const regexGuid = /^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i;\r\n return regexGuid.test(guid);\r\n }\r\n}\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nclass EncodingUtils {\r\n /**\r\n * 'utf8': Multibyte encoded Unicode characters. Many web pages and other document formats use UTF-8.\r\n * 'base64': Base64 encoding.\r\n *\r\n * @param str text\r\n */\r\n static base64Encode(str, encoding) {\r\n return Buffer.from(str, encoding).toString(EncodingTypes.BASE64);\r\n }\r\n /**\r\n * encode a URL\r\n * @param str\r\n */\r\n static base64EncodeUrl(str, encoding) {\r\n return EncodingUtils.base64Encode(str, encoding)\r\n .replace(/=/g, Constants$1.EMPTY_STRING)\r\n .replace(/\\+/g, \"-\")\r\n .replace(/\\//g, \"_\");\r\n }\r\n /**\r\n * 'utf8': Multibyte encoded Unicode characters. Many web pages and other document formats use UTF-8.\r\n * 'base64': Base64 encoding.\r\n *\r\n * @param base64Str Base64 encoded text\r\n */\r\n static base64Decode(base64Str) {\r\n return Buffer.from(base64Str, EncodingTypes.BASE64).toString(\"utf8\");\r\n }\r\n /**\r\n * @param base64Str Base64 encoded Url\r\n */\r\n static base64DecodeUrl(base64Str) {\r\n let str = base64Str.replace(/-/g, \"+\").replace(/_/g, \"/\");\r\n while (str.length % 4) {\r\n str += \"=\";\r\n }\r\n return EncodingUtils.base64Decode(str);\r\n }\r\n}\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nclass HashUtils {\r\n /**\r\n * generate 'SHA256' hash\r\n * @param buffer\r\n */\r\n sha256(buffer) {\r\n return crypto.createHash(Hash.SHA256).update(buffer).digest();\r\n }\r\n}\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * https://tools.ietf.org/html/rfc7636#page-8\r\n */\r\nclass PkceGenerator {\r\n constructor() {\r\n this.hashUtils = new HashUtils();\r\n }\r\n /**\r\n * generates the codeVerfier and the challenge from the codeVerfier\r\n * reference: https://tools.ietf.org/html/rfc7636#section-4.1 and https://tools.ietf.org/html/rfc7636#section-4.2\r\n */\r\n async generatePkceCodes() {\r\n const verifier = this.generateCodeVerifier();\r\n const challenge = this.generateCodeChallengeFromVerifier(verifier);\r\n return { verifier, challenge };\r\n }\r\n /**\r\n * generates the codeVerfier; reference: https://tools.ietf.org/html/rfc7636#section-4.1\r\n */\r\n generateCodeVerifier() {\r\n const charArr = [];\r\n const maxNumber = 256 - (256 % CharSet.CV_CHARSET.length);\r\n while (charArr.length <= RANDOM_OCTET_SIZE) {\r\n const byte = crypto.randomBytes(1)[0];\r\n if (byte >= maxNumber) {\r\n /*\r\n * Ignore this number to maintain randomness.\r\n * Including it would result in an unequal distribution of characters after doing the modulo\r\n */\r\n continue;\r\n }\r\n const index = byte % CharSet.CV_CHARSET.length;\r\n charArr.push(CharSet.CV_CHARSET[index]);\r\n }\r\n const verifier = charArr.join(Constants$1.EMPTY_STRING);\r\n return EncodingUtils.base64EncodeUrl(verifier);\r\n }\r\n /**\r\n * generate the challenge from the codeVerfier; reference: https://tools.ietf.org/html/rfc7636#section-4.2\r\n * @param codeVerifier\r\n */\r\n generateCodeChallengeFromVerifier(codeVerifier) {\r\n return EncodingUtils.base64EncodeUrl(this.hashUtils.sha256(codeVerifier).toString(EncodingTypes.BASE64), EncodingTypes.BASE64);\r\n }\r\n}\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * This class implements MSAL node's crypto interface, which allows it to perform base64 encoding and decoding, generating cryptographically random GUIDs and\r\n * implementing Proof Key for Code Exchange specs for the OAuth Authorization Code Flow using PKCE (rfc here: https://tools.ietf.org/html/rfc7636).\r\n * @public\r\n */\r\nclass CryptoProvider {\r\n constructor() {\r\n // Browser crypto needs to be validated first before any other classes can be set.\r\n this.pkceGenerator = new PkceGenerator();\r\n this.guidGenerator = new GuidGenerator();\r\n this.hashUtils = new HashUtils();\r\n }\r\n /**\r\n * base64 URL safe encoded string\r\n */\r\n base64UrlEncode() {\r\n throw new Error(\"Method not implemented.\");\r\n }\r\n /**\r\n * Stringifies and base64Url encodes input public key\r\n * @param inputKid - public key id\r\n * @returns Base64Url encoded public key\r\n */\r\n encodeKid() {\r\n throw new Error(\"Method not implemented.\");\r\n }\r\n /**\r\n * Creates a new random GUID - used to populate state and nonce.\r\n * @returns string (GUID)\r\n */\r\n createNewGuid() {\r\n return this.guidGenerator.generateGuid();\r\n }\r\n /**\r\n * Encodes input string to base64.\r\n * @param input - string to be encoded\r\n */\r\n base64Encode(input) {\r\n return EncodingUtils.base64Encode(input);\r\n }\r\n /**\r\n * Decodes input string from base64.\r\n * @param input - string to be decoded\r\n */\r\n base64Decode(input) {\r\n return EncodingUtils.base64Decode(input);\r\n }\r\n /**\r\n * Generates PKCE codes used in Authorization Code Flow.\r\n */\r\n generatePkceCodes() {\r\n return this.pkceGenerator.generatePkceCodes();\r\n }\r\n /**\r\n * Generates a keypair, stores it and returns a thumbprint - not yet implemented for node\r\n */\r\n getPublicKeyThumbprint() {\r\n throw new Error(\"Method not implemented.\");\r\n }\r\n /**\r\n * Removes cryptographic keypair from key store matching the keyId passed in\r\n * @param kid - public key id\r\n */\r\n removeTokenBindingKey() {\r\n throw new Error(\"Method not implemented.\");\r\n }\r\n /**\r\n * Removes all cryptographic keys from Keystore\r\n */\r\n clearKeystore() {\r\n throw new Error(\"Method not implemented.\");\r\n }\r\n /**\r\n * Signs the given object as a jwt payload with private key retrieved by given kid - currently not implemented for node\r\n */\r\n signJwt() {\r\n throw new Error(\"Method not implemented.\");\r\n }\r\n /**\r\n * Returns the SHA-256 hash of an input string\r\n */\r\n async hashString(plainText) {\r\n return EncodingUtils.base64EncodeUrl(this.hashUtils.sha256(plainText).toString(EncodingTypes.BASE64), EncodingTypes.BASE64);\r\n }\r\n}\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nfunction generateCredentialKey(credential) {\r\n const familyId = (credential.credentialType === CredentialType.REFRESH_TOKEN &&\r\n credential.familyId) ||\r\n credential.clientId;\r\n const scheme = credential.tokenType &&\r\n credential.tokenType.toLowerCase() !==\r\n AuthenticationScheme.BEARER.toLowerCase()\r\n ? credential.tokenType.toLowerCase()\r\n : \"\";\r\n const credentialKey = [\r\n credential.homeAccountId,\r\n credential.environment,\r\n credential.credentialType,\r\n familyId,\r\n credential.realm || \"\",\r\n credential.target || \"\",\r\n credential.requestedClaimsHash || \"\",\r\n scheme,\r\n ];\r\n return credentialKey.join(CACHE.KEY_SEPARATOR).toLowerCase();\r\n}\r\nfunction generateAccountKey(account) {\r\n const homeTenantId = account.homeAccountId.split(\".\")[1];\r\n const accountKey = [\r\n account.homeAccountId,\r\n account.environment,\r\n homeTenantId || account.tenantId || \"\",\r\n ];\r\n return accountKey.join(CACHE.KEY_SEPARATOR).toLowerCase();\r\n}\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * This class implements Storage for node, reading cache from user specified storage location or an extension library\r\n * @public\r\n */\r\nclass NodeStorage extends CacheManager {\r\n constructor(logger, clientId, cryptoImpl, staticAuthorityOptions) {\r\n super(clientId, cryptoImpl, logger, new msalCommon.StubPerformanceClient(), staticAuthorityOptions);\r\n this.cache = {};\r\n this.changeEmitters = [];\r\n this.logger = logger;\r\n }\r\n /**\r\n * Queue up callbacks\r\n * @param func - a callback function for cache change indication\r\n */\r\n registerChangeEmitter(func) {\r\n this.changeEmitters.push(func);\r\n }\r\n /**\r\n * Invoke the callback when cache changes\r\n */\r\n emitChange() {\r\n this.changeEmitters.forEach((func) => func.call(null));\r\n }\r\n /**\r\n * Converts cacheKVStore to InMemoryCache\r\n * @param cache - key value store\r\n */\r\n cacheToInMemoryCache(cache) {\r\n const inMemoryCache = {\r\n accounts: {},\r\n idTokens: {},\r\n accessTokens: {},\r\n refreshTokens: {},\r\n appMetadata: {},\r\n };\r\n for (const key in cache) {\r\n const value = cache[key];\r\n if (typeof value !== \"object\") {\r\n continue;\r\n }\r\n if (value instanceof AccountEntity) {\r\n inMemoryCache.accounts[key] = value;\r\n }\r\n else if (isIdTokenEntity(value)) {\r\n inMemoryCache.idTokens[key] = value;\r\n }\r\n else if (isAccessTokenEntity(value)) {\r\n inMemoryCache.accessTokens[key] = value;\r\n }\r\n else if (isRefreshTokenEntity(value)) {\r\n inMemoryCache.refreshTokens[key] = value;\r\n }\r\n else if (isAppMetadataEntity(key, value)) {\r\n inMemoryCache.appMetadata[key] = value;\r\n }\r\n else {\r\n continue;\r\n }\r\n }\r\n return inMemoryCache;\r\n }\r\n /**\r\n * converts inMemoryCache to CacheKVStore\r\n * @param inMemoryCache - kvstore map for inmemory\r\n */\r\n inMemoryCacheToCache(inMemoryCache) {\r\n // convert in memory cache to a flat Key-Value map\r\n let cache = this.getCache();\r\n cache = {\r\n ...cache,\r\n ...inMemoryCache.accounts,\r\n ...inMemoryCache.idTokens,\r\n ...inMemoryCache.accessTokens,\r\n ...inMemoryCache.refreshTokens,\r\n ...inMemoryCache.appMetadata,\r\n };\r\n // convert in memory cache to a flat Key-Value map\r\n return cache;\r\n }\r\n /**\r\n * gets the current in memory cache for the client\r\n */\r\n getInMemoryCache() {\r\n this.logger.trace(\"Getting in-memory cache\");\r\n // convert the cache key value store to inMemoryCache\r\n const inMemoryCache = this.cacheToInMemoryCache(this.getCache());\r\n return inMemoryCache;\r\n }\r\n /**\r\n * sets the current in memory cache for the client\r\n * @param inMemoryCache - key value map in memory\r\n */\r\n setInMemoryCache(inMemoryCache) {\r\n this.logger.trace(\"Setting in-memory cache\");\r\n // convert and append the inMemoryCache to cacheKVStore\r\n const cache = this.inMemoryCacheToCache(inMemoryCache);\r\n this.setCache(cache);\r\n this.emitChange();\r\n }\r\n /**\r\n * get the current cache key-value store\r\n */\r\n getCache() {\r\n this.logger.trace(\"Getting cache key-value store\");\r\n return this.cache;\r\n }\r\n /**\r\n * sets the current cache (key value store)\r\n * @param cacheMap - key value map\r\n */\r\n setCache(cache) {\r\n this.logger.trace(\"Setting cache key value store\");\r\n this.cache = cache;\r\n // mark change in cache\r\n this.emitChange();\r\n }\r\n /**\r\n * Gets cache item with given key.\r\n * @param key - lookup key for the cache entry\r\n */\r\n getItem(key) {\r\n this.logger.tracePii(`Item key: ${key}`);\r\n // read cache\r\n const cache = this.getCache();\r\n return cache[key];\r\n }\r\n /**\r\n * Gets cache item with given key-value\r\n * @param key - lookup key for the cache entry\r\n * @param value - value of the cache entry\r\n */\r\n setItem(key, value) {\r\n this.logger.tracePii(`Item key: ${key}`);\r\n // read cache\r\n const cache = this.getCache();\r\n cache[key] = value;\r\n // write to cache\r\n this.setCache(cache);\r\n }\r\n generateCredentialKey(credential) {\r\n return generateCredentialKey(credential);\r\n }\r\n generateAccountKey(account) {\r\n return generateAccountKey(account);\r\n }\r\n getAccountKeys() {\r\n const inMemoryCache = this.getInMemoryCache();\r\n const accountKeys = Object.keys(inMemoryCache.accounts);\r\n return accountKeys;\r\n }\r\n getTokenKeys() {\r\n const inMemoryCache = this.getInMemoryCache();\r\n const tokenKeys = {\r\n idToken: Object.keys(inMemoryCache.idTokens),\r\n accessToken: Object.keys(inMemoryCache.accessTokens),\r\n refreshToken: Object.keys(inMemoryCache.refreshTokens),\r\n };\r\n return tokenKeys;\r\n }\r\n /**\r\n * Reads account from cache, builds it into an account entity and returns it.\r\n * @param accountKey - lookup key to fetch cache type AccountEntity\r\n * @returns\r\n */\r\n getAccount(accountKey) {\r\n const cachedAccount = this.getItem(accountKey);\r\n return cachedAccount\r\n ? Object.assign(new AccountEntity(), this.getItem(accountKey))\r\n : null;\r\n }\r\n /**\r\n * set account entity\r\n * @param account - cache value to be set of type AccountEntity\r\n */\r\n async setAccount(account) {\r\n const accountKey = this.generateAccountKey(AccountEntity.getAccountInfo(account));\r\n this.setItem(accountKey, account);\r\n }\r\n /**\r\n * fetch the idToken credential\r\n * @param idTokenKey - lookup key to fetch cache type IdTokenEntity\r\n */\r\n getIdTokenCredential(idTokenKey) {\r\n const idToken = this.getItem(idTokenKey);\r\n if (isIdTokenEntity(idToken)) {\r\n return idToken;\r\n }\r\n return null;\r\n }\r\n /**\r\n * set idToken credential\r\n * @param idToken - cache value to be set of type IdTokenEntity\r\n */\r\n async setIdTokenCredential(idToken) {\r\n const idTokenKey = this.generateCredentialKey(idToken);\r\n this.setItem(idTokenKey, idToken);\r\n }\r\n /**\r\n * fetch the accessToken credential\r\n * @param accessTokenKey - lookup key to fetch cache type AccessTokenEntity\r\n */\r\n getAccessTokenCredential(accessTokenKey) {\r\n const accessToken = this.getItem(accessTokenKey);\r\n if (isAccessTokenEntity(accessToken)) {\r\n return accessToken;\r\n }\r\n return null;\r\n }\r\n /**\r\n * set accessToken credential\r\n * @param accessToken - cache value to be set of type AccessTokenEntity\r\n */\r\n async setAccessTokenCredential(accessToken) {\r\n const accessTokenKey = this.generateCredentialKey(accessToken);\r\n this.setItem(accessTokenKey, accessToken);\r\n }\r\n /**\r\n * fetch the refreshToken credential\r\n * @param refreshTokenKey - lookup key to fetch cache type RefreshTokenEntity\r\n */\r\n getRefreshTokenCredential(refreshTokenKey) {\r\n const refreshToken = this.getItem(refreshTokenKey);\r\n if (isRefreshTokenEntity(refreshToken)) {\r\n return refreshToken;\r\n }\r\n return null;\r\n }\r\n /**\r\n * set refreshToken credential\r\n * @param refreshToken - cache value to be set of type RefreshTokenEntity\r\n */\r\n async setRefreshTokenCredential(refreshToken) {\r\n const refreshTokenKey = this.generateCredentialKey(refreshToken);\r\n this.setItem(refreshTokenKey, refreshToken);\r\n }\r\n /**\r\n * fetch appMetadata entity from the platform cache\r\n * @param appMetadataKey - lookup key to fetch cache type AppMetadataEntity\r\n */\r\n getAppMetadata(appMetadataKey) {\r\n const appMetadata = this.getItem(appMetadataKey);\r\n if (isAppMetadataEntity(appMetadataKey, appMetadata)) {\r\n return appMetadata;\r\n }\r\n return null;\r\n }\r\n /**\r\n * set appMetadata entity to the platform cache\r\n * @param appMetadata - cache value to be set of type AppMetadataEntity\r\n */\r\n setAppMetadata(appMetadata) {\r\n const appMetadataKey = generateAppMetadataKey(appMetadata);\r\n this.setItem(appMetadataKey, appMetadata);\r\n }\r\n /**\r\n * fetch server telemetry entity from the platform cache\r\n * @param serverTelemetrykey - lookup key to fetch cache type ServerTelemetryEntity\r\n */\r\n getServerTelemetry(serverTelemetrykey) {\r\n const serverTelemetryEntity = this.getItem(serverTelemetrykey);\r\n if (serverTelemetryEntity &&\r\n isServerTelemetryEntity(serverTelemetrykey, serverTelemetryEntity)) {\r\n return serverTelemetryEntity;\r\n }\r\n return null;\r\n }\r\n /**\r\n * set server telemetry entity to the platform cache\r\n * @param serverTelemetryKey - lookup key to fetch cache type ServerTelemetryEntity\r\n * @param serverTelemetry - cache value to be set of type ServerTelemetryEntity\r\n */\r\n setServerTelemetry(serverTelemetryKey, serverTelemetry) {\r\n this.setItem(serverTelemetryKey, serverTelemetry);\r\n }\r\n /**\r\n * fetch authority metadata entity from the platform cache\r\n * @param key - lookup key to fetch cache type AuthorityMetadataEntity\r\n */\r\n getAuthorityMetadata(key) {\r\n const authorityMetadataEntity = this.getItem(key);\r\n if (authorityMetadataEntity &&\r\n isAuthorityMetadataEntity(key, authorityMetadataEntity)) {\r\n return authorityMetadataEntity;\r\n }\r\n return null;\r\n }\r\n /**\r\n * Get all authority metadata keys\r\n */\r\n getAuthorityMetadataKeys() {\r\n return this.getKeys().filter((key) => {\r\n return this.isAuthorityMetadata(key);\r\n });\r\n }\r\n /**\r\n * set authority metadata entity to the platform cache\r\n * @param key - lookup key to fetch cache type AuthorityMetadataEntity\r\n * @param metadata - cache value to be set of type AuthorityMetadataEntity\r\n */\r\n setAuthorityMetadata(key, metadata) {\r\n this.setItem(key, metadata);\r\n }\r\n /**\r\n * fetch throttling entity from the platform cache\r\n * @param throttlingCacheKey - lookup key to fetch cache type ThrottlingEntity\r\n */\r\n getThrottlingCache(throttlingCacheKey) {\r\n const throttlingCache = this.getItem(throttlingCacheKey);\r\n if (throttlingCache &&\r\n isThrottlingEntity(throttlingCacheKey, throttlingCache)) {\r\n return throttlingCache;\r\n }\r\n return null;\r\n }\r\n /**\r\n * set throttling entity to the platform cache\r\n * @param throttlingCacheKey - lookup key to fetch cache type ThrottlingEntity\r\n * @param throttlingCache - cache value to be set of type ThrottlingEntity\r\n */\r\n setThrottlingCache(throttlingCacheKey, throttlingCache) {\r\n this.setItem(throttlingCacheKey, throttlingCache);\r\n }\r\n /**\r\n * Removes the cache item from memory with the given key.\r\n * @param key - lookup key to remove a cache entity\r\n * @param inMemory - key value map of the cache\r\n */\r\n removeItem(key) {\r\n this.logger.tracePii(`Item key: ${key}`);\r\n // read inMemoryCache\r\n let result = false;\r\n const cache = this.getCache();\r\n if (!!cache[key]) {\r\n delete cache[key];\r\n result = true;\r\n }\r\n // write to the cache after removal\r\n if (result) {\r\n this.setCache(cache);\r\n this.emitChange();\r\n }\r\n return result;\r\n }\r\n /**\r\n * Remove account entity from the platform cache if it's outdated\r\n * @param accountKey - lookup key to fetch cache type AccountEntity\r\n */\r\n removeOutdatedAccount(accountKey) {\r\n this.removeItem(accountKey);\r\n }\r\n /**\r\n * Checks whether key is in cache.\r\n * @param key - look up key for a cache entity\r\n */\r\n containsKey(key) {\r\n return this.getKeys().includes(key);\r\n }\r\n /**\r\n * Gets all keys in window.\r\n */\r\n getKeys() {\r\n this.logger.trace(\"Retrieving all cache keys\");\r\n // read cache\r\n const cache = this.getCache();\r\n return [...Object.keys(cache)];\r\n }\r\n /**\r\n * Clears all cache entries created by MSAL (except tokens).\r\n */\r\n clear() {\r\n this.logger.trace(\"Clearing cache entries created by MSAL\");\r\n // read inMemoryCache\r\n const cacheKeys = this.getKeys();\r\n // delete each element\r\n cacheKeys.forEach((key) => {\r\n this.removeItem(key);\r\n });\r\n this.emitChange();\r\n }\r\n /**\r\n * Initialize in memory cache from an exisiting cache vault\r\n * @param cache - blob formatted cache (JSON)\r\n */\r\n static generateInMemoryCache(cache) {\r\n return Deserializer.deserializeAllCache(Deserializer.deserializeJSONBlob(cache));\r\n }\r\n /**\r\n * retrieves the final JSON\r\n * @param inMemoryCache - itemised cache read from the JSON\r\n */\r\n static generateJsonCache(inMemoryCache) {\r\n return Serializer.serializeAllCache(inMemoryCache);\r\n }\r\n /**\r\n * Updates a credential's cache key if the current cache key is outdated\r\n */\r\n updateCredentialCacheKey(currentCacheKey, credential) {\r\n const updatedCacheKey = this.generateCredentialKey(credential);\r\n if (currentCacheKey !== updatedCacheKey) {\r\n const cacheItem = this.getItem(currentCacheKey);\r\n if (cacheItem) {\r\n this.removeItem(currentCacheKey);\r\n this.setItem(updatedCacheKey, cacheItem);\r\n this.logger.verbose(`Updated an outdated ${credential.credentialType} cache key`);\r\n return updatedCacheKey;\r\n }\r\n else {\r\n this.logger.error(`Attempted to update an outdated ${credential.credentialType} cache key but no item matching the outdated key was found in storage`);\r\n }\r\n }\r\n return currentCacheKey;\r\n }\r\n}\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nconst defaultSerializedCache = {\r\n Account: {},\r\n IdToken: {},\r\n AccessToken: {},\r\n RefreshToken: {},\r\n AppMetadata: {},\r\n};\r\n/**\r\n * In-memory token cache manager\r\n * @public\r\n */\r\nclass TokenCache {\r\n constructor(storage, logger, cachePlugin) {\r\n this.cacheHasChanged = false;\r\n this.storage = storage;\r\n this.storage.registerChangeEmitter(this.handleChangeEvent.bind(this));\r\n if (cachePlugin) {\r\n this.persistence = cachePlugin;\r\n }\r\n this.logger = logger;\r\n }\r\n /**\r\n * Set to true if cache state has changed since last time serialize or writeToPersistence was called\r\n */\r\n hasChanged() {\r\n return this.cacheHasChanged;\r\n }\r\n /**\r\n * Serializes in memory cache to JSON\r\n */\r\n serialize() {\r\n this.logger.trace(\"Serializing in-memory cache\");\r\n let finalState = Serializer.serializeAllCache(this.storage.getInMemoryCache());\r\n // if cacheSnapshot not null or empty, merge\r\n if (this.cacheSnapshot) {\r\n this.logger.trace(\"Reading cache snapshot from disk\");\r\n finalState = this.mergeState(JSON.parse(this.cacheSnapshot), finalState);\r\n }\r\n else {\r\n this.logger.trace(\"No cache snapshot to merge\");\r\n }\r\n this.cacheHasChanged = false;\r\n return JSON.stringify(finalState);\r\n }\r\n /**\r\n * Deserializes JSON to in-memory cache. JSON should be in MSAL cache schema format\r\n * @param cache - blob formatted cache\r\n */\r\n deserialize(cache) {\r\n this.logger.trace(\"Deserializing JSON to in-memory cache\");\r\n this.cacheSnapshot = cache;\r\n if (this.cacheSnapshot) {\r\n this.logger.trace(\"Reading cache snapshot from disk\");\r\n const deserializedCache = Deserializer.deserializeAllCache(this.overlayDefaults(JSON.parse(this.cacheSnapshot)));\r\n this.storage.setInMemoryCache(deserializedCache);\r\n }\r\n else {\r\n this.logger.trace(\"No cache snapshot to deserialize\");\r\n }\r\n }\r\n /**\r\n * Fetches the cache key-value map\r\n */\r\n getKVStore() {\r\n return this.storage.getCache();\r\n }\r\n /**\r\n * Gets cache snapshot in CacheKVStore format\r\n */\r\n getCacheSnapshot() {\r\n const deserializedPersistentStorage = NodeStorage.generateInMemoryCache(this.cacheSnapshot);\r\n return this.storage.inMemoryCacheToCache(deserializedPersistentStorage);\r\n }\r\n /**\r\n * API that retrieves all accounts currently in cache to the user\r\n */\r\n async getAllAccounts(correlationId = new CryptoProvider().createNewGuid()) {\r\n this.logger.trace(\"getAllAccounts called\");\r\n let cacheContext;\r\n try {\r\n if (this.persistence) {\r\n cacheContext = new TokenCacheContext(this, false);\r\n await this.persistence.beforeCacheAccess(cacheContext);\r\n }\r\n return this.storage.getAllAccounts({}, correlationId);\r\n }\r\n finally {\r\n if (this.persistence && cacheContext) {\r\n await this.persistence.afterCacheAccess(cacheContext);\r\n }\r\n }\r\n }\r\n /**\r\n * Returns the signed in account matching homeAccountId.\r\n * (the account object is created at the time of successful login)\r\n * or null when no matching account is found\r\n * @param homeAccountId - unique identifier for an account (uid.utid)\r\n */\r\n async getAccountByHomeId(homeAccountId) {\r\n const allAccounts = await this.getAllAccounts();\r\n if (homeAccountId && allAccounts && allAccounts.length) {\r\n return (allAccounts.filter((accountObj) => accountObj.homeAccountId === homeAccountId)[0] || null);\r\n }\r\n else {\r\n return null;\r\n }\r\n }\r\n /**\r\n * Returns the signed in account matching localAccountId.\r\n * (the account object is created at the time of successful login)\r\n * or null when no matching account is found\r\n * @param localAccountId - unique identifier of an account (sub/obj when homeAccountId cannot be populated)\r\n */\r\n async getAccountByLocalId(localAccountId) {\r\n const allAccounts = await this.getAllAccounts();\r\n if (localAccountId && allAccounts && allAccounts.length) {\r\n return (allAccounts.filter((accountObj) => accountObj.localAccountId === localAccountId)[0] || null);\r\n }\r\n else {\r\n return null;\r\n }\r\n }\r\n /**\r\n * API to remove a specific account and the relevant data from cache\r\n * @param account - AccountInfo passed by the user\r\n */\r\n async removeAccount(account, correlationId) {\r\n this.logger.trace(\"removeAccount called\");\r\n let cacheContext;\r\n try {\r\n if (this.persistence) {\r\n cacheContext = new TokenCacheContext(this, true);\r\n await this.persistence.beforeCacheAccess(cacheContext);\r\n }\r\n this.storage.removeAccount(account, correlationId || new GuidGenerator().generateGuid());\r\n }\r\n finally {\r\n if (this.persistence && cacheContext) {\r\n await this.persistence.afterCacheAccess(cacheContext);\r\n }\r\n }\r\n }\r\n /**\r\n * Overwrites in-memory cache with persistent cache\r\n */\r\n async overwriteCache() {\r\n if (!this.persistence) {\r\n this.logger.info(\"No persistence layer specified, cache cannot be overwritten\");\r\n return;\r\n }\r\n this.logger.info(\"Overwriting in-memory cache with persistent cache\");\r\n this.storage.clear();\r\n const cacheContext = new TokenCacheContext(this, false);\r\n await this.persistence.beforeCacheAccess(cacheContext);\r\n const cacheSnapshot = this.getCacheSnapshot();\r\n this.storage.setCache(cacheSnapshot);\r\n await this.persistence.afterCacheAccess(cacheContext);\r\n }\r\n /**\r\n * Called when the cache has changed state.\r\n */\r\n handleChangeEvent() {\r\n this.cacheHasChanged = true;\r\n }\r\n /**\r\n * Merge in memory cache with the cache snapshot.\r\n * @param oldState - cache before changes\r\n * @param currentState - current cache state in the library\r\n */\r\n mergeState(oldState, currentState) {\r\n this.logger.trace(\"Merging in-memory cache with cache snapshot\");\r\n const stateAfterRemoval = this.mergeRemovals(oldState, currentState);\r\n return this.mergeUpdates(stateAfterRemoval, currentState);\r\n }\r\n /**\r\n * Deep update of oldState based on newState values\r\n * @param oldState - cache before changes\r\n * @param newState - updated cache\r\n */\r\n mergeUpdates(oldState, newState) {\r\n Object.keys(newState).forEach((newKey) => {\r\n const newValue = newState[newKey];\r\n // if oldState does not contain value but newValue does, add it\r\n if (!oldState.hasOwnProperty(newKey)) {\r\n if (newValue !== null) {\r\n oldState[newKey] = newValue;\r\n }\r\n }\r\n else {\r\n // both oldState and newState contain the key, do deep update\r\n const newValueNotNull = newValue !== null;\r\n const newValueIsObject = typeof newValue === \"object\";\r\n const newValueIsNotArray = !Array.isArray(newValue);\r\n const oldStateNotUndefinedOrNull = typeof oldState[newKey] !== \"undefined\" &&\r\n oldState[newKey] !== null;\r\n if (newValueNotNull &&\r\n newValueIsObject &&\r\n newValueIsNotArray &&\r\n oldStateNotUndefinedOrNull) {\r\n this.mergeUpdates(oldState[newKey], newValue);\r\n }\r\n else {\r\n oldState[newKey] = newValue;\r\n }\r\n }\r\n });\r\n return oldState;\r\n }\r\n /**\r\n * Removes entities in oldState that the were removed from newState. If there are any unknown values in root of\r\n * oldState that are not recognized, they are left untouched.\r\n * @param oldState - cache before changes\r\n * @param newState - updated cache\r\n */\r\n mergeRemovals(oldState, newState) {\r\n this.logger.trace(\"Remove updated entries in cache\");\r\n const accounts = oldState.Account\r\n ? this.mergeRemovalsDict(oldState.Account, newState.Account)\r\n : oldState.Account;\r\n const accessTokens = oldState.AccessToken\r\n ? this.mergeRemovalsDict(oldState.AccessToken, newState.AccessToken)\r\n : oldState.AccessToken;\r\n const refreshTokens = oldState.RefreshToken\r\n ? this.mergeRemovalsDict(oldState.RefreshToken, newState.RefreshToken)\r\n : oldState.RefreshToken;\r\n const idTokens = oldState.IdToken\r\n ? this.mergeRemovalsDict(oldState.IdToken, newState.IdToken)\r\n : oldState.IdToken;\r\n const appMetadata = oldState.AppMetadata\r\n ? this.mergeRemovalsDict(oldState.AppMetadata, newState.AppMetadata)\r\n : oldState.AppMetadata;\r\n return {\r\n ...oldState,\r\n Account: accounts,\r\n AccessToken: accessTokens,\r\n RefreshToken: refreshTokens,\r\n IdToken: idTokens,\r\n AppMetadata: appMetadata,\r\n };\r\n }\r\n /**\r\n * Helper to merge new cache with the old one\r\n * @param oldState - cache before changes\r\n * @param newState - updated cache\r\n */\r\n mergeRemovalsDict(oldState, newState) {\r\n const finalState = { ...oldState };\r\n Object.keys(oldState).forEach((oldKey) => {\r\n if (!newState || !newState.hasOwnProperty(oldKey)) {\r\n delete finalState[oldKey];\r\n }\r\n });\r\n return finalState;\r\n }\r\n /**\r\n * Helper to overlay as a part of cache merge\r\n * @param passedInCache - cache read from the blob\r\n */\r\n overlayDefaults(passedInCache) {\r\n this.logger.trace(\"Overlaying input cache with the default cache\");\r\n return {\r\n Account: {\r\n ...defaultSerializedCache.Account,\r\n ...passedInCache.Account,\r\n },\r\n IdToken: {\r\n ...defaultSerializedCache.IdToken,\r\n ...passedInCache.IdToken,\r\n },\r\n AccessToken: {\r\n ...defaultSerializedCache.AccessToken,\r\n ...passedInCache.AccessToken,\r\n },\r\n RefreshToken: {\r\n ...defaultSerializedCache.RefreshToken,\r\n ...passedInCache.RefreshToken,\r\n },\r\n AppMetadata: {\r\n ...defaultSerializedCache.AppMetadata,\r\n ...passedInCache.AppMetadata,\r\n },\r\n };\r\n }\r\n}\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * Client assertion of type jwt-bearer used in confidential client flows\r\n * @public\r\n */\r\nclass ClientAssertion {\r\n /**\r\n * Initialize the ClientAssertion class from the clientAssertion passed by the user\r\n * @param assertion - refer https://tools.ietf.org/html/rfc7521\r\n */\r\n static fromAssertion(assertion) {\r\n const clientAssertion = new ClientAssertion();\r\n clientAssertion.jwt = assertion;\r\n return clientAssertion;\r\n }\r\n /**\r\n * @deprecated Use fromCertificateWithSha256Thumbprint instead, with a SHA-256 thumprint\r\n * Initialize the ClientAssertion class from the certificate passed by the user\r\n * @param thumbprint - identifier of a certificate\r\n * @param privateKey - secret key\r\n * @param publicCertificate - electronic document provided to prove the ownership of the public key\r\n */\r\n static fromCertificate(thumbprint, privateKey, publicCertificate) {\r\n const clientAssertion = new ClientAssertion();\r\n clientAssertion.privateKey = privateKey;\r\n clientAssertion.thumbprint = thumbprint;\r\n clientAssertion.useSha256 = false;\r\n if (publicCertificate) {\r\n clientAssertion.publicCertificate =\r\n this.parseCertificate(publicCertificate);\r\n }\r\n return clientAssertion;\r\n }\r\n /**\r\n * Initialize the ClientAssertion class from the certificate passed by the user\r\n * @param thumbprint - identifier of a certificate\r\n * @param privateKey - secret key\r\n * @param publicCertificate - electronic document provided to prove the ownership of the public key\r\n */\r\n static fromCertificateWithSha256Thumbprint(thumbprint, privateKey, publicCertificate) {\r\n const clientAssertion = new ClientAssertion();\r\n clientAssertion.privateKey = privateKey;\r\n clientAssertion.thumbprint = thumbprint;\r\n clientAssertion.useSha256 = true;\r\n if (publicCertificate) {\r\n clientAssertion.publicCertificate =\r\n this.parseCertificate(publicCertificate);\r\n }\r\n return clientAssertion;\r\n }\r\n /**\r\n * Update JWT for certificate based clientAssertion, if passed by the user, uses it as is\r\n * @param cryptoProvider - library's crypto helper\r\n * @param issuer - iss claim\r\n * @param jwtAudience - aud claim\r\n */\r\n getJwt(cryptoProvider, issuer, jwtAudience) {\r\n // if assertion was created from certificate, check if jwt is expired and create new one.\r\n if (this.privateKey && this.thumbprint) {\r\n if (this.jwt &&\r\n !this.isExpired() &&\r\n issuer === this.issuer &&\r\n jwtAudience === this.jwtAudience) {\r\n return this.jwt;\r\n }\r\n return this.createJwt(cryptoProvider, issuer, jwtAudience);\r\n }\r\n /*\r\n * if assertion was created by caller, then we just append it. It is up to the caller to\r\n * ensure that it contains necessary claims and that it is not expired.\r\n */\r\n if (this.jwt) {\r\n return this.jwt;\r\n }\r\n throw createClientAuthError(invalidAssertion);\r\n }\r\n /**\r\n * JWT format and required claims specified: https://tools.ietf.org/html/rfc7523#section-3\r\n */\r\n createJwt(cryptoProvider, issuer, jwtAudience) {\r\n this.issuer = issuer;\r\n this.jwtAudience = jwtAudience;\r\n const issuedAt = nowSeconds();\r\n this.expirationTime = issuedAt + 600;\r\n const algorithm = this.useSha256\r\n ? JwtConstants.PSS_256\r\n : JwtConstants.RSA_256;\r\n const header = {\r\n alg: algorithm,\r\n };\r\n const thumbprintHeader = this.useSha256\r\n ? JwtConstants.X5T_256\r\n : JwtConstants.X5T;\r\n Object.assign(header, {\r\n [thumbprintHeader]: EncodingUtils.base64EncodeUrl(this.thumbprint, EncodingTypes.HEX),\r\n });\r\n if (this.publicCertificate) {\r\n Object.assign(header, {\r\n [JwtConstants.X5C]: this.publicCertificate,\r\n });\r\n }\r\n const payload = {\r\n [JwtConstants.AUDIENCE]: this.jwtAudience,\r\n [JwtConstants.EXPIRATION_TIME]: this.expirationTime,\r\n [JwtConstants.ISSUER]: this.issuer,\r\n [JwtConstants.SUBJECT]: this.issuer,\r\n [JwtConstants.NOT_BEFORE]: issuedAt,\r\n [JwtConstants.JWT_ID]: cryptoProvider.createNewGuid(),\r\n };\r\n this.jwt = jwt.sign(payload, this.privateKey, { header });\r\n return this.jwt;\r\n }\r\n /**\r\n * Utility API to check expiration\r\n */\r\n isExpired() {\r\n return this.expirationTime < nowSeconds();\r\n }\r\n /**\r\n * Extracts the raw certs from a given certificate string and returns them in an array.\r\n * @param publicCertificate - electronic document provided to prove the ownership of the public key\r\n */\r\n static parseCertificate(publicCertificate) {\r\n /**\r\n * This is regex to identify the certs in a given certificate string.\r\n * We want to look for the contents between the BEGIN and END certificate strings, without the associated newlines.\r\n * The information in parens \"(.+?)\" is the capture group to represent the cert we want isolated.\r\n * \".\" means any string character, \"+\" means match 1 or more times, and \"?\" means the shortest match.\r\n * The \"g\" at the end of the regex means search the string globally, and the \"s\" enables the \".\" to match newlines.\r\n */\r\n const regexToFindCerts = /-----BEGIN CERTIFICATE-----\\r*\\n(.+?)\\r*\\n-----END CERTIFICATE-----/gs;\r\n const certs = [];\r\n let matches;\r\n while ((matches = regexToFindCerts.exec(publicCertificate)) !== null) {\r\n // matches[1] represents the first parens capture group in the regex.\r\n certs.push(matches[1].replace(/\\r*\\n/g, Constants$1.EMPTY_STRING));\r\n }\r\n return certs;\r\n }\r\n}\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * Oauth2.0 Password grant client\r\n * Note: We are only supporting public clients for password grant and for purely testing purposes\r\n * @public\r\n * @deprecated - Use a more secure flow instead\r\n */\r\nclass UsernamePasswordClient extends BaseClient {\r\n constructor(configuration) {\r\n super(configuration);\r\n }\r\n /**\r\n * API to acquire a token by passing the username and password to the service in exchage of credentials\r\n * password_grant\r\n * @param request - CommonUsernamePasswordRequest\r\n */\r\n async acquireToken(request) {\r\n this.logger.info(\"in acquireToken call in username-password client\");\r\n const reqTimestamp = nowSeconds();\r\n const response = await this.executeTokenRequest(this.authority, request);\r\n const responseHandler = new ResponseHandler(this.config.authOptions.clientId, this.cacheManager, this.cryptoUtils, this.logger, this.config.serializableCache, this.config.persistencePlugin);\r\n // Validate response. This function throws a server error if an error is returned by the server.\r\n responseHandler.validateTokenResponse(response.body);\r\n const tokenResponse = responseHandler.handleServerTokenResponse(response.body, this.authority, reqTimestamp, request);\r\n return tokenResponse;\r\n }\r\n /**\r\n * Executes POST request to token endpoint\r\n * @param authority - authority object\r\n * @param request - CommonUsernamePasswordRequest provided by the developer\r\n */\r\n async executeTokenRequest(authority, request) {\r\n const queryParametersString = this.createTokenQueryParameters(request);\r\n const endpoint = UrlString.appendQueryString(authority.tokenEndpoint, queryParametersString);\r\n const requestBody = await this.createTokenRequestBody(request);\r\n const headers = this.createTokenRequestHeaders({\r\n credential: request.username,\r\n type: CcsCredentialType.UPN,\r\n });\r\n const thumbprint = {\r\n clientId: this.config.authOptions.clientId,\r\n authority: authority.canonicalAuthority,\r\n scopes: request.scopes,\r\n claims: request.claims,\r\n authenticationScheme: request.authenticationScheme,\r\n resourceRequestMethod: request.resourceRequestMethod,\r\n resourceRequestUri: request.resourceRequestUri,\r\n shrClaims: request.shrClaims,\r\n sshKid: request.sshKid,\r\n };\r\n return this.executePostToTokenEndpoint(endpoint, requestBody, headers, thumbprint, request.correlationId);\r\n }\r\n /**\r\n * Generates a map for all the params to be sent to the service\r\n * @param request - CommonUsernamePasswordRequest provided by the developer\r\n */\r\n async createTokenRequestBody(request) {\r\n const parameters = new Map();\r\n addClientId(parameters, this.config.authOptions.clientId);\r\n addUsername(parameters, request.username);\r\n addPassword(parameters, request.password);\r\n addScopes(parameters, request.scopes);\r\n addResponseType(parameters, OAuthResponseType.IDTOKEN_TOKEN);\r\n addGrantType(parameters, GrantType.RESOURCE_OWNER_PASSWORD_GRANT);\r\n addClientInfo(parameters);\r\n addLibraryInfo(parameters, this.config.libraryInfo);\r\n addApplicationTelemetry(parameters, this.config.telemetry.application);\r\n addThrottling(parameters);\r\n if (this.serverTelemetryManager) {\r\n addServerTelemetry(parameters, this.serverTelemetryManager);\r\n }\r\n const correlationId = request.correlationId ||\r\n this.config.cryptoInterface.createNewGuid();\r\n addCorrelationId(parameters, correlationId);\r\n if (this.config.clientCredentials.clientSecret) {\r\n addClientSecret(parameters, this.config.clientCredentials.clientSecret);\r\n }\r\n const clientAssertion = this.config.clientCredentials.clientAssertion;\r\n if (clientAssertion) {\r\n addClientAssertion(parameters, await getClientAssertion(clientAssertion.assertion, this.config.authOptions.clientId, request.resourceRequestUri));\r\n addClientAssertionType(parameters, clientAssertion.assertionType);\r\n }\r\n if (!StringUtils.isEmptyObj(request.claims) ||\r\n (this.config.authOptions.clientCapabilities &&\r\n this.config.authOptions.clientCapabilities.length > 0)) {\r\n addClaims(parameters, request.claims, this.config.authOptions.clientCapabilities);\r\n }\r\n if (this.config.systemOptions.preventCorsPreflight &&\r\n request.username) {\r\n addCcsUpn(parameters, request.username);\r\n }\r\n return mapToQueryString(parameters);\r\n }\r\n}\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * Constructs the full /authorize URL with request parameters\r\n * @param config\r\n * @param authority\r\n * @param request\r\n * @param logger\r\n * @returns\r\n */\r\nfunction getAuthCodeRequestUrl(config, authority, request, logger) {\r\n const parameters = getStandardAuthorizeRequestParameters({\r\n ...config.auth,\r\n authority: authority,\r\n redirectUri: request.redirectUri || \"\",\r\n }, request, logger);\r\n addLibraryInfo(parameters, {\r\n sku: Constants.MSAL_SKU,\r\n version: version,\r\n cpu: process.arch || \"\",\r\n os: process.platform || \"\",\r\n });\r\n if (config.auth.protocolMode !== ProtocolMode.OIDC) {\r\n addApplicationTelemetry(parameters, config.telemetry.application);\r\n }\r\n addResponseType(parameters, OAuthResponseType.CODE);\r\n if (request.codeChallenge && request.codeChallengeMethod) {\r\n addCodeChallengeParams(parameters, request.codeChallenge, request.codeChallengeMethod);\r\n }\r\n addExtraQueryParameters(parameters, request.extraQueryParameters || {});\r\n return getAuthorizeUrl(authority, parameters, config.auth.encodeExtraQueryParams, request.extraQueryParameters);\r\n}\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * Base abstract class for all ClientApplications - public and confidential\r\n * @public\r\n */\r\nclass ClientApplication {\r\n /**\r\n * Constructor for the ClientApplication\r\n */\r\n constructor(configuration) {\r\n this.config = buildAppConfiguration(configuration);\r\n this.cryptoProvider = new CryptoProvider();\r\n this.logger = new Logger(this.config.system.loggerOptions, name, version);\r\n this.storage = new NodeStorage(this.logger, this.config.auth.clientId, this.cryptoProvider, buildStaticAuthorityOptions(this.config.auth));\r\n this.tokenCache = new TokenCache(this.storage, this.logger, this.config.cache.cachePlugin);\r\n }\r\n /**\r\n * Creates the URL of the authorization request, letting the user input credentials and consent to the\r\n * application. The URL targets the /authorize endpoint of the authority configured in the\r\n * application object.\r\n *\r\n * Once the user inputs their credentials and consents, the authority will send a response to the redirect URI\r\n * sent in the request and should contain an authorization code, which can then be used to acquire tokens via\r\n * `acquireTokenByCode(AuthorizationCodeRequest)`.\r\n */\r\n async getAuthCodeUrl(request) {\r\n this.logger.info(\"getAuthCodeUrl called\", request.correlationId);\r\n const validRequest = {\r\n ...request,\r\n ...(await this.initializeBaseRequest(request)),\r\n responseMode: request.responseMode || ResponseMode.QUERY,\r\n authenticationScheme: AuthenticationScheme.BEARER,\r\n state: request.state || \"\",\r\n nonce: request.nonce || \"\",\r\n };\r\n const discoveredAuthority = await this.createAuthority(validRequest.authority, validRequest.correlationId, undefined, request.azureCloudOptions);\r\n return getAuthCodeRequestUrl(this.config, discoveredAuthority, validRequest, this.logger);\r\n }\r\n /**\r\n * Acquires a token by exchanging the Authorization Code received from the first step of OAuth2.0\r\n * Authorization Code flow.\r\n *\r\n * `getAuthCodeUrl(AuthorizationCodeUrlRequest)` can be used to create the URL for the first step of OAuth2.0\r\n * Authorization Code flow. Ensure that values for redirectUri and scopes in AuthorizationCodeUrlRequest and\r\n * AuthorizationCodeRequest are the same.\r\n */\r\n async acquireTokenByCode(request, authCodePayLoad) {\r\n this.logger.info(\"acquireTokenByCode called\");\r\n if (request.state && authCodePayLoad) {\r\n this.logger.info(\"acquireTokenByCode - validating state\");\r\n this.validateState(request.state, authCodePayLoad.state || \"\");\r\n // eslint-disable-next-line no-param-reassign\r\n authCodePayLoad = { ...authCodePayLoad, state: \"\" };\r\n }\r\n const validRequest = {\r\n ...request,\r\n ...(await this.initializeBaseRequest(request)),\r\n authenticationScheme: AuthenticationScheme.BEARER,\r\n };\r\n const serverTelemetryManager = this.initializeServerTelemetryManager(ApiId.acquireTokenByCode, validRequest.correlationId);\r\n try {\r\n const discoveredAuthority = await this.createAuthority(validRequest.authority, validRequest.correlationId, undefined, request.azureCloudOptions);\r\n const authClientConfig = await this.buildOauthClientConfiguration(discoveredAuthority, validRequest.correlationId, validRequest.redirectUri, serverTelemetryManager);\r\n const authorizationCodeClient = new AuthorizationCodeClient(authClientConfig);\r\n this.logger.verbose(\"Auth code client created\", validRequest.correlationId);\r\n return await authorizationCodeClient.acquireToken(validRequest, authCodePayLoad);\r\n }\r\n catch (e) {\r\n if (e instanceof AuthError) {\r\n e.setCorrelationId(validRequest.correlationId);\r\n }\r\n serverTelemetryManager.cacheFailedRequest(e);\r\n throw e;\r\n }\r\n }\r\n /**\r\n * Acquires a token by exchanging the refresh token provided for a new set of tokens.\r\n *\r\n * This API is provided only for scenarios where you would like to migrate from ADAL to MSAL. Otherwise, it is\r\n * recommended that you use `acquireTokenSilent()` for silent scenarios. When using `acquireTokenSilent()`, MSAL will\r\n * handle the caching and refreshing of tokens automatically.\r\n */\r\n async acquireTokenByRefreshToken(request) {\r\n this.logger.info(\"acquireTokenByRefreshToken called\", request.correlationId);\r\n const validRequest = {\r\n ...request,\r\n ...(await this.initializeBaseRequest(request)),\r\n authenticationScheme: AuthenticationScheme.BEARER,\r\n };\r\n const serverTelemetryManager = this.initializeServerTelemetryManager(ApiId.acquireTokenByRefreshToken, validRequest.correlationId);\r\n try {\r\n const discoveredAuthority = await this.createAuthority(validRequest.authority, validRequest.correlationId, undefined, request.azureCloudOptions);\r\n const refreshTokenClientConfig = await this.buildOauthClientConfiguration(discoveredAuthority, validRequest.correlationId, validRequest.redirectUri || \"\", serverTelemetryManager);\r\n const refreshTokenClient = new RefreshTokenClient(refreshTokenClientConfig);\r\n this.logger.verbose(\"Refresh token client created\", validRequest.correlationId);\r\n return await refreshTokenClient.acquireToken(validRequest);\r\n }\r\n catch (e) {\r\n if (e instanceof AuthError) {\r\n e.setCorrelationId(validRequest.correlationId);\r\n }\r\n serverTelemetryManager.cacheFailedRequest(e);\r\n throw e;\r\n }\r\n }\r\n /**\r\n * Acquires a token silently when a user specifies the account the token is requested for.\r\n *\r\n * This API expects the user to provide an account object and looks into the cache to retrieve the token if present.\r\n * There is also an optional \"forceRefresh\" boolean the user can send to bypass the cache for access_token and id_token.\r\n * In case the refresh_token is expired or not found, an error is thrown\r\n * and the guidance is for the user to call any interactive token acquisition API (eg: `acquireTokenByCode()`).\r\n */\r\n async acquireTokenSilent(request) {\r\n const validRequest = {\r\n ...request,\r\n ...(await this.initializeBaseRequest(request)),\r\n forceRefresh: request.forceRefresh || false,\r\n };\r\n const serverTelemetryManager = this.initializeServerTelemetryManager(ApiId.acquireTokenSilent, validRequest.correlationId, validRequest.forceRefresh);\r\n try {\r\n const discoveredAuthority = await this.createAuthority(validRequest.authority, validRequest.correlationId, undefined, request.azureCloudOptions);\r\n const clientConfiguration = await this.buildOauthClientConfiguration(discoveredAuthority, validRequest.correlationId, validRequest.redirectUri || \"\", serverTelemetryManager);\r\n const silentFlowClient = new SilentFlowClient(clientConfiguration);\r\n this.logger.verbose(\"Silent flow client created\", validRequest.correlationId);\r\n try {\r\n // always overwrite the in-memory cache with the persistence cache (if it exists) before a cache lookup\r\n await this.tokenCache.overwriteCache();\r\n return await this.acquireCachedTokenSilent(validRequest, silentFlowClient, clientConfiguration);\r\n }\r\n catch (error) {\r\n if (error instanceof ClientAuthError &&\r\n error.errorCode ===\r\n tokenRefreshRequired) {\r\n const refreshTokenClient = new RefreshTokenClient(clientConfiguration);\r\n return refreshTokenClient.acquireTokenByRefreshToken(validRequest);\r\n }\r\n throw error;\r\n }\r\n }\r\n catch (error) {\r\n if (error instanceof AuthError) {\r\n error.setCorrelationId(validRequest.correlationId);\r\n }\r\n serverTelemetryManager.cacheFailedRequest(error);\r\n throw error;\r\n }\r\n }\r\n async acquireCachedTokenSilent(validRequest, silentFlowClient, clientConfiguration) {\r\n const [authResponse, cacheOutcome] = await silentFlowClient.acquireCachedToken({\r\n ...validRequest,\r\n scopes: validRequest.scopes?.length\r\n ? validRequest.scopes\r\n : [...OIDC_DEFAULT_SCOPES],\r\n });\r\n if (cacheOutcome === CacheOutcome.PROACTIVELY_REFRESHED) {\r\n this.logger.info(\"ClientApplication:acquireCachedTokenSilent - Cached access token's refreshOn property has been exceeded'. It's not expired, but must be refreshed.\");\r\n // refresh the access token in the background\r\n const refreshTokenClient = new RefreshTokenClient(clientConfiguration);\r\n try {\r\n await refreshTokenClient.acquireTokenByRefreshToken(validRequest);\r\n }\r\n catch {\r\n // do nothing, this is running in the background and no action is to be taken upon success or failure\r\n }\r\n }\r\n // return the cached token\r\n return authResponse;\r\n }\r\n /**\r\n * Acquires tokens with password grant by exchanging client applications username and password for credentials\r\n *\r\n * The latest OAuth 2.0 Security Best Current Practice disallows the password grant entirely.\r\n * More details on this recommendation at https://tools.ietf.org/html/draft-ietf-oauth-security-topics-13#section-3.4\r\n * Microsoft's documentation and recommendations are at:\r\n * https://docs.microsoft.com/en-us/azure/active-directory/develop/msal-authentication-flows#usernamepassword\r\n *\r\n * @param request - UsenamePasswordRequest\r\n * @deprecated - Use a more secure flow instead\r\n */\r\n async acquireTokenByUsernamePassword(request) {\r\n this.logger.info(\"acquireTokenByUsernamePassword called\", request.correlationId);\r\n const validRequest = {\r\n ...request,\r\n ...(await this.initializeBaseRequest(request)),\r\n };\r\n const serverTelemetryManager = this.initializeServerTelemetryManager(ApiId.acquireTokenByUsernamePassword, validRequest.correlationId);\r\n try {\r\n const discoveredAuthority = await this.createAuthority(validRequest.authority, validRequest.correlationId, undefined, request.azureCloudOptions);\r\n const usernamePasswordClientConfig = await this.buildOauthClientConfiguration(discoveredAuthority, validRequest.correlationId, \"\", serverTelemetryManager);\r\n const usernamePasswordClient = new UsernamePasswordClient(usernamePasswordClientConfig);\r\n this.logger.verbose(\"Username password client created\", validRequest.correlationId);\r\n return await usernamePasswordClient.acquireToken(validRequest);\r\n }\r\n catch (e) {\r\n if (e instanceof AuthError) {\r\n e.setCorrelationId(validRequest.correlationId);\r\n }\r\n serverTelemetryManager.cacheFailedRequest(e);\r\n throw e;\r\n }\r\n }\r\n /**\r\n * Gets the token cache for the application.\r\n */\r\n getTokenCache() {\r\n this.logger.info(\"getTokenCache called\");\r\n return this.tokenCache;\r\n }\r\n /**\r\n * Validates OIDC state by comparing the user cached state with the state received from the server.\r\n *\r\n * This API is provided for scenarios where you would use OAuth2.0 state parameter to mitigate against\r\n * CSRF attacks.\r\n * For more information about state, visit https://datatracker.ietf.org/doc/html/rfc6819#section-3.6.\r\n * @param state - Unique GUID generated by the user that is cached by the user and sent to the server during the first leg of the flow\r\n * @param cachedState - This string is sent back by the server with the authorization code\r\n */\r\n validateState(state, cachedState) {\r\n if (!state) {\r\n throw NodeAuthError.createStateNotFoundError();\r\n }\r\n if (state !== cachedState) {\r\n throw createClientAuthError(stateMismatch);\r\n }\r\n }\r\n /**\r\n * Returns the logger instance\r\n */\r\n getLogger() {\r\n return this.logger;\r\n }\r\n /**\r\n * Replaces the default logger set in configurations with new Logger with new configurations\r\n * @param logger - Logger instance\r\n */\r\n setLogger(logger) {\r\n this.logger = logger;\r\n }\r\n /**\r\n * Builds the common configuration to be passed to the common component based on the platform configurarion\r\n * @param authority - user passed authority in configuration\r\n * @param serverTelemetryManager - initializes servertelemetry if passed\r\n */\r\n async buildOauthClientConfiguration(discoveredAuthority, requestCorrelationId, redirectUri, serverTelemetryManager) {\r\n this.logger.verbose(\"buildOauthClientConfiguration called\", requestCorrelationId);\r\n this.logger.info(`Building oauth client configuration with the following authority: ${discoveredAuthority.tokenEndpoint}.`, requestCorrelationId);\r\n serverTelemetryManager?.updateRegionDiscoveryMetadata(discoveredAuthority.regionDiscoveryMetadata);\r\n const clientConfiguration = {\r\n authOptions: {\r\n clientId: this.config.auth.clientId,\r\n authority: discoveredAuthority,\r\n clientCapabilities: this.config.auth.clientCapabilities,\r\n redirectUri,\r\n },\r\n loggerOptions: {\r\n logLevel: this.config.system.loggerOptions.logLevel,\r\n loggerCallback: this.config.system.loggerOptions.loggerCallback,\r\n piiLoggingEnabled: this.config.system.loggerOptions.piiLoggingEnabled,\r\n correlationId: requestCorrelationId,\r\n },\r\n cacheOptions: {\r\n claimsBasedCachingEnabled: this.config.cache.claimsBasedCachingEnabled,\r\n },\r\n cryptoInterface: this.cryptoProvider,\r\n networkInterface: this.config.system.networkClient,\r\n storageInterface: this.storage,\r\n serverTelemetryManager: serverTelemetryManager,\r\n clientCredentials: {\r\n clientSecret: this.clientSecret,\r\n clientAssertion: await this.getClientAssertion(discoveredAuthority),\r\n },\r\n libraryInfo: {\r\n sku: Constants.MSAL_SKU,\r\n version: version,\r\n cpu: process.arch || Constants$1.EMPTY_STRING,\r\n os: process.platform || Constants$1.EMPTY_STRING,\r\n },\r\n telemetry: this.config.telemetry,\r\n persistencePlugin: this.config.cache.cachePlugin,\r\n serializableCache: this.tokenCache,\r\n };\r\n return clientConfiguration;\r\n }\r\n async getClientAssertion(authority) {\r\n if (this.developerProvidedClientAssertion) {\r\n this.clientAssertion = ClientAssertion.fromAssertion(await getClientAssertion(this.developerProvidedClientAssertion, this.config.auth.clientId, authority.tokenEndpoint));\r\n }\r\n return (this.clientAssertion && {\r\n assertion: this.clientAssertion.getJwt(this.cryptoProvider, this.config.auth.clientId, authority.tokenEndpoint),\r\n assertionType: Constants.JWT_BEARER_ASSERTION_TYPE,\r\n });\r\n }\r\n /**\r\n * Generates a request with the default scopes & generates a correlationId.\r\n * @param authRequest - BaseAuthRequest for initialization\r\n */\r\n async initializeBaseRequest(authRequest) {\r\n this.logger.verbose(\"initializeRequestScopes called\", authRequest.correlationId);\r\n // Default authenticationScheme to Bearer, log that POP isn't supported yet\r\n if (authRequest.authenticationScheme &&\r\n authRequest.authenticationScheme === AuthenticationScheme.POP) {\r\n this.logger.verbose(\"Authentication Scheme 'pop' is not supported yet, setting Authentication Scheme to 'Bearer' for request\", authRequest.correlationId);\r\n }\r\n authRequest.authenticationScheme = AuthenticationScheme.BEARER;\r\n // Set requested claims hash if claims-based caching is enabled and claims were requested\r\n if (this.config.cache.claimsBasedCachingEnabled &&\r\n authRequest.claims &&\r\n // Checks for empty stringified object \"{}\" which doesn't qualify as requested claims\r\n !StringUtils.isEmptyObj(authRequest.claims)) {\r\n authRequest.requestedClaimsHash =\r\n await this.cryptoProvider.hashString(authRequest.claims);\r\n }\r\n return {\r\n ...authRequest,\r\n scopes: [\r\n ...((authRequest && authRequest.scopes) || []),\r\n ...OIDC_DEFAULT_SCOPES,\r\n ],\r\n correlationId: (authRequest && authRequest.correlationId) ||\r\n this.cryptoProvider.createNewGuid(),\r\n authority: authRequest.authority || this.config.auth.authority,\r\n };\r\n }\r\n /**\r\n * Initializes the server telemetry payload\r\n * @param apiId - Id for a specific request\r\n * @param correlationId - GUID\r\n * @param forceRefresh - boolean to indicate network call\r\n */\r\n initializeServerTelemetryManager(apiId, correlationId, forceRefresh) {\r\n const telemetryPayload = {\r\n clientId: this.config.auth.clientId,\r\n correlationId: correlationId,\r\n apiId: apiId,\r\n forceRefresh: forceRefresh || false,\r\n };\r\n return new ServerTelemetryManager(telemetryPayload, this.storage);\r\n }\r\n /**\r\n * Create authority instance. If authority not passed in request, default to authority set on the application\r\n * object. If no authority set in application object, then default to common authority.\r\n * @param authorityString - authority from user configuration\r\n */\r\n async createAuthority(authorityString, requestCorrelationId, azureRegionConfiguration, azureCloudOptions) {\r\n this.logger.verbose(\"createAuthority called\", requestCorrelationId);\r\n // build authority string based on auth params - azureCloudInstance is prioritized if provided\r\n const authorityUrl = Authority.generateAuthority(authorityString, azureCloudOptions || this.config.auth.azureCloudOptions);\r\n const authorityOptions = {\r\n protocolMode: this.config.auth.protocolMode,\r\n knownAuthorities: this.config.auth.knownAuthorities,\r\n cloudDiscoveryMetadata: this.config.auth.cloudDiscoveryMetadata,\r\n authorityMetadata: this.config.auth.authorityMetadata,\r\n azureRegionConfiguration,\r\n skipAuthorityMetadataCache: this.config.auth.skipAuthorityMetadataCache,\r\n };\r\n return createDiscoveredInstance(authorityUrl, this.config.system.networkClient, this.storage, authorityOptions, this.logger, requestCorrelationId);\r\n }\r\n /**\r\n * Clear the cache\r\n */\r\n clearCache() {\r\n this.storage.clear();\r\n }\r\n}\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nclass LoopbackClient {\r\n /**\r\n * Spins up a loopback server which returns the server response when the localhost redirectUri is hit\r\n * @param successTemplate\r\n * @param errorTemplate\r\n * @returns\r\n */\r\n async listenForAuthCode(successTemplate, errorTemplate) {\r\n if (this.server) {\r\n throw NodeAuthError.createLoopbackServerAlreadyExistsError();\r\n }\r\n return new Promise((resolve, reject) => {\r\n this.server = http.createServer((req, res) => {\r\n const url = req.url;\r\n if (!url) {\r\n res.end(errorTemplate ||\r\n \"Error occurred loading redirectUrl\");\r\n reject(NodeAuthError.createUnableToLoadRedirectUrlError());\r\n return;\r\n }\r\n else if (url === Constants$1.FORWARD_SLASH) {\r\n res.end(successTemplate ||\r\n \"Auth code was successfully acquired. You can close this window now.\");\r\n return;\r\n }\r\n const redirectUri = this.getRedirectUri();\r\n const parsedUrl = new URL(url, redirectUri);\r\n const authCodeResponse = getDeserializedResponse(parsedUrl.search) ||\r\n {};\r\n if (authCodeResponse.code) {\r\n res.writeHead(HttpStatus.REDIRECT, {\r\n location: redirectUri,\r\n }); // Prevent auth code from being saved in the browser history\r\n res.end();\r\n }\r\n if (authCodeResponse.error) {\r\n res.end(errorTemplate ||\r\n `Error occurred: ${authCodeResponse.error}`);\r\n }\r\n resolve(authCodeResponse);\r\n });\r\n this.server.listen(0, \"127.0.0.1\"); // Listen on any available port\r\n });\r\n }\r\n /**\r\n * Get the port that the loopback server is running on\r\n * @returns\r\n */\r\n getRedirectUri() {\r\n if (!this.server || !this.server.listening) {\r\n throw NodeAuthError.createNoLoopbackServerExistsError();\r\n }\r\n const address = this.server.address();\r\n if (!address || typeof address === \"string\" || !address.port) {\r\n this.closeServer();\r\n throw NodeAuthError.createInvalidLoopbackAddressTypeError();\r\n }\r\n const port = address && address.port;\r\n return `${Constants.HTTP_PROTOCOL}${Constants.LOCALHOST}:${port}`;\r\n }\r\n /**\r\n * Close the loopback server\r\n */\r\n closeServer() {\r\n if (this.server) {\r\n // Only stops accepting new connections, server will close once open/idle connections are closed.\r\n this.server.close();\r\n if (typeof this.server.closeAllConnections === \"function\") {\r\n /*\r\n * Close open/idle connections. This API is available in Node versions 18.2 and higher\r\n */\r\n this.server.closeAllConnections();\r\n }\r\n this.server.unref();\r\n this.server = undefined;\r\n }\r\n }\r\n}\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * OAuth2.0 Device code client\r\n * @public\r\n */\r\nclass DeviceCodeClient extends BaseClient {\r\n constructor(configuration) {\r\n super(configuration);\r\n }\r\n /**\r\n * Gets device code from device code endpoint, calls back to with device code response, and\r\n * polls token endpoint to exchange device code for tokens\r\n * @param request - developer provided CommonDeviceCodeRequest\r\n */\r\n async acquireToken(request) {\r\n const deviceCodeResponse = await this.getDeviceCode(request);\r\n request.deviceCodeCallback(deviceCodeResponse);\r\n const reqTimestamp = nowSeconds();\r\n const response = await this.acquireTokenWithDeviceCode(request, deviceCodeResponse);\r\n const responseHandler = new ResponseHandler(this.config.authOptions.clientId, this.cacheManager, this.cryptoUtils, this.logger, this.config.serializableCache, this.config.persistencePlugin);\r\n // Validate response. This function throws a server error if an error is returned by the server.\r\n responseHandler.validateTokenResponse(response);\r\n return responseHandler.handleServerTokenResponse(response, this.authority, reqTimestamp, request);\r\n }\r\n /**\r\n * Creates device code request and executes http GET\r\n * @param request - developer provided CommonDeviceCodeRequest\r\n */\r\n async getDeviceCode(request) {\r\n const queryParametersString = this.createExtraQueryParameters(request);\r\n const endpoint = UrlString.appendQueryString(this.authority.deviceCodeEndpoint, queryParametersString);\r\n const queryString = this.createQueryString(request);\r\n const headers = this.createTokenRequestHeaders();\r\n const thumbprint = {\r\n clientId: this.config.authOptions.clientId,\r\n authority: request.authority,\r\n scopes: request.scopes,\r\n claims: request.claims,\r\n authenticationScheme: request.authenticationScheme,\r\n resourceRequestMethod: request.resourceRequestMethod,\r\n resourceRequestUri: request.resourceRequestUri,\r\n shrClaims: request.shrClaims,\r\n sshKid: request.sshKid,\r\n };\r\n return this.executePostRequestToDeviceCodeEndpoint(endpoint, queryString, headers, thumbprint, request.correlationId);\r\n }\r\n /**\r\n * Creates query string for the device code request\r\n * @param request - developer provided CommonDeviceCodeRequest\r\n */\r\n createExtraQueryParameters(request) {\r\n const parameters = new Map();\r\n if (request.extraQueryParameters) {\r\n addExtraQueryParameters(parameters, request.extraQueryParameters);\r\n }\r\n return mapToQueryString(parameters);\r\n }\r\n /**\r\n * Executes POST request to device code endpoint\r\n * @param deviceCodeEndpoint - token endpoint\r\n * @param queryString - string to be used in the body of the request\r\n * @param headers - headers for the request\r\n * @param thumbprint - unique request thumbprint\r\n * @param correlationId - correlation id to be used in the request\r\n */\r\n async executePostRequestToDeviceCodeEndpoint(deviceCodeEndpoint, queryString, headers, thumbprint, correlationId) {\r\n const { body: { user_code: userCode, device_code: deviceCode, verification_uri: verificationUri, expires_in: expiresIn, interval, message, }, } = await this.sendPostRequest(thumbprint, deviceCodeEndpoint, {\r\n body: queryString,\r\n headers: headers,\r\n }, correlationId);\r\n return {\r\n userCode,\r\n deviceCode,\r\n verificationUri,\r\n expiresIn,\r\n interval,\r\n message,\r\n };\r\n }\r\n /**\r\n * Create device code endpoint query parameters and returns string\r\n * @param request - developer provided CommonDeviceCodeRequest\r\n */\r\n createQueryString(request) {\r\n const parameters = new Map();\r\n addScopes(parameters, request.scopes);\r\n addClientId(parameters, this.config.authOptions.clientId);\r\n if (request.extraQueryParameters) {\r\n addExtraQueryParameters(parameters, request.extraQueryParameters);\r\n }\r\n if (request.claims ||\r\n (this.config.authOptions.clientCapabilities &&\r\n this.config.authOptions.clientCapabilities.length > 0)) {\r\n addClaims(parameters, request.claims, this.config.authOptions.clientCapabilities);\r\n }\r\n return mapToQueryString(parameters);\r\n }\r\n /**\r\n * Breaks the polling with specific conditions\r\n * @param deviceCodeExpirationTime - expiration time for the device code request\r\n * @param userSpecifiedTimeout - developer provided timeout, to be compared against deviceCodeExpirationTime\r\n * @param userSpecifiedCancelFlag - boolean indicating the developer would like to cancel the request\r\n */\r\n continuePolling(deviceCodeExpirationTime, userSpecifiedTimeout, userSpecifiedCancelFlag) {\r\n if (userSpecifiedCancelFlag) {\r\n this.logger.error(\"Token request cancelled by setting DeviceCodeRequest.cancel = true\");\r\n throw createClientAuthError(deviceCodePollingCancelled);\r\n }\r\n else if (userSpecifiedTimeout &&\r\n userSpecifiedTimeout < deviceCodeExpirationTime &&\r\n nowSeconds() > userSpecifiedTimeout) {\r\n this.logger.error(`User defined timeout for device code polling reached. The timeout was set for ${userSpecifiedTimeout}`);\r\n throw createClientAuthError(userTimeoutReached);\r\n }\r\n else if (nowSeconds() > deviceCodeExpirationTime) {\r\n if (userSpecifiedTimeout) {\r\n this.logger.verbose(`User specified timeout ignored as the device code has expired before the timeout elapsed. The user specified timeout was set for ${userSpecifiedTimeout}`);\r\n }\r\n this.logger.error(`Device code expired. Expiration time of device code was ${deviceCodeExpirationTime}`);\r\n throw createClientAuthError(deviceCodeExpired);\r\n }\r\n return true;\r\n }\r\n /**\r\n * Creates token request with device code response and polls token endpoint at interval set by the device code response\r\n * @param request - developer provided CommonDeviceCodeRequest\r\n * @param deviceCodeResponse - DeviceCodeResponse returned by the security token service device code endpoint\r\n */\r\n async acquireTokenWithDeviceCode(request, deviceCodeResponse) {\r\n const queryParametersString = this.createTokenQueryParameters(request);\r\n const endpoint = UrlString.appendQueryString(this.authority.tokenEndpoint, queryParametersString);\r\n const requestBody = this.createTokenRequestBody(request, deviceCodeResponse);\r\n const headers = this.createTokenRequestHeaders();\r\n const userSpecifiedTimeout = request.timeout\r\n ? nowSeconds() + request.timeout\r\n : undefined;\r\n const deviceCodeExpirationTime = nowSeconds() + deviceCodeResponse.expiresIn;\r\n const pollingIntervalMilli = deviceCodeResponse.interval * 1000;\r\n /*\r\n * Poll token endpoint while (device code is not expired AND operation has not been cancelled by\r\n * setting CancellationToken.cancel = true). POST request is sent at interval set by pollingIntervalMilli\r\n */\r\n while (this.continuePolling(deviceCodeExpirationTime, userSpecifiedTimeout, request.cancel)) {\r\n const thumbprint = {\r\n clientId: this.config.authOptions.clientId,\r\n authority: request.authority,\r\n scopes: request.scopes,\r\n claims: request.claims,\r\n authenticationScheme: request.authenticationScheme,\r\n resourceRequestMethod: request.resourceRequestMethod,\r\n resourceRequestUri: request.resourceRequestUri,\r\n shrClaims: request.shrClaims,\r\n sshKid: request.sshKid,\r\n };\r\n const response = await this.executePostToTokenEndpoint(endpoint, requestBody, headers, thumbprint, request.correlationId);\r\n if (response.body && response.body.error) {\r\n // user authorization is pending. Sleep for polling interval and try again\r\n if (response.body.error === Constants$1.AUTHORIZATION_PENDING) {\r\n this.logger.info(\"Authorization pending. Continue polling.\");\r\n await delay(pollingIntervalMilli);\r\n }\r\n else {\r\n // for any other error, throw\r\n this.logger.info(\"Unexpected error in polling from the server\");\r\n throw createAuthError(postRequestFailed, response.body.error);\r\n }\r\n }\r\n else {\r\n this.logger.verbose(\"Authorization completed successfully. Polling stopped.\");\r\n return response.body;\r\n }\r\n }\r\n /*\r\n * The above code should've thrown by this point, but to satisfy TypeScript,\r\n * and in the rare case the conditionals in continuePolling() may not catch everything...\r\n */\r\n this.logger.error(\"Polling stopped for unknown reasons.\");\r\n throw createClientAuthError(deviceCodeUnknownError);\r\n }\r\n /**\r\n * Creates query parameters and converts to string.\r\n * @param request - developer provided CommonDeviceCodeRequest\r\n * @param deviceCodeResponse - DeviceCodeResponse returned by the security token service device code endpoint\r\n */\r\n createTokenRequestBody(request, deviceCodeResponse) {\r\n const parameters = new Map();\r\n addScopes(parameters, request.scopes);\r\n addClientId(parameters, this.config.authOptions.clientId);\r\n addGrantType(parameters, GrantType.DEVICE_CODE_GRANT);\r\n addDeviceCode(parameters, deviceCodeResponse.deviceCode);\r\n const correlationId = request.correlationId ||\r\n this.config.cryptoInterface.createNewGuid();\r\n addCorrelationId(parameters, correlationId);\r\n addClientInfo(parameters);\r\n addLibraryInfo(parameters, this.config.libraryInfo);\r\n addApplicationTelemetry(parameters, this.config.telemetry.application);\r\n addThrottling(parameters);\r\n if (this.serverTelemetryManager) {\r\n addServerTelemetry(parameters, this.serverTelemetryManager);\r\n }\r\n if (!StringUtils.isEmptyObj(request.claims) ||\r\n (this.config.authOptions.clientCapabilities &&\r\n this.config.authOptions.clientCapabilities.length > 0)) {\r\n addClaims(parameters, request.claims, this.config.authOptions.clientCapabilities);\r\n }\r\n return mapToQueryString(parameters);\r\n }\r\n}\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * This class is to be used to acquire tokens for public client applications (desktop, mobile). Public client applications\r\n * are not trusted to safely store application secrets, and therefore can only request tokens in the name of an user.\r\n * @public\r\n */\r\nclass PublicClientApplication extends ClientApplication {\r\n /**\r\n * Important attributes in the Configuration object for auth are:\r\n * - clientID: the application ID of your application. You can obtain one by registering your application with our Application registration portal.\r\n * - authority: the authority URL for your application.\r\n *\r\n * AAD authorities are of the form https://login.microsoftonline.com/\\{Enter_the_Tenant_Info_Here\\}.\r\n * - If your application supports Accounts in one organizational directory, replace \"Enter_the_Tenant_Info_Here\" value with the Tenant Id or Tenant name (for example, contoso.microsoft.com).\r\n * - If your application supports Accounts in any organizational directory, replace \"Enter_the_Tenant_Info_Here\" value with organizations.\r\n * - If your application supports Accounts in any organizational directory and personal Microsoft accounts, replace \"Enter_the_Tenant_Info_Here\" value with common.\r\n * - To restrict support to Personal Microsoft accounts only, replace \"Enter_the_Tenant_Info_Here\" value with consumers.\r\n *\r\n * Azure B2C authorities are of the form https://\\{instance\\}/\\{tenant\\}/\\{policy\\}. Each policy is considered\r\n * its own authority. You will have to set the all of the knownAuthorities at the time of the client application\r\n * construction.\r\n *\r\n * ADFS authorities are of the form https://\\{instance\\}/adfs.\r\n */\r\n constructor(configuration) {\r\n super(configuration);\r\n if (this.config.broker.nativeBrokerPlugin) {\r\n if (this.config.broker.nativeBrokerPlugin.isBrokerAvailable) {\r\n this.nativeBrokerPlugin = this.config.broker.nativeBrokerPlugin;\r\n this.nativeBrokerPlugin.setLogger(this.config.system.loggerOptions);\r\n }\r\n else {\r\n this.logger.warning(\"NativeBroker implementation was provided but the broker is unavailable.\");\r\n }\r\n }\r\n this.skus = ServerTelemetryManager.makeExtraSkuString({\r\n libraryName: Constants.MSAL_SKU,\r\n libraryVersion: version,\r\n });\r\n }\r\n /**\r\n * Acquires a token from the authority using OAuth2.0 device code flow.\r\n * This flow is designed for devices that do not have access to a browser or have input constraints.\r\n * The authorization server issues a DeviceCode object with a verification code, an end-user code,\r\n * and the end-user verification URI. The DeviceCode object is provided through a callback, and the end-user should be\r\n * instructed to use another device to navigate to the verification URI to input credentials.\r\n * Since the client cannot receive incoming requests, it polls the authorization server repeatedly\r\n * until the end-user completes input of credentials.\r\n */\r\n async acquireTokenByDeviceCode(request) {\r\n this.logger.info(\"acquireTokenByDeviceCode called\", request.correlationId);\r\n const validRequest = Object.assign(request, await this.initializeBaseRequest(request));\r\n const serverTelemetryManager = this.initializeServerTelemetryManager(ApiId.acquireTokenByDeviceCode, validRequest.correlationId);\r\n try {\r\n const discoveredAuthority = await this.createAuthority(validRequest.authority, validRequest.correlationId, undefined, request.azureCloudOptions);\r\n const deviceCodeConfig = await this.buildOauthClientConfiguration(discoveredAuthority, validRequest.correlationId, \"\", serverTelemetryManager);\r\n const deviceCodeClient = new DeviceCodeClient(deviceCodeConfig);\r\n this.logger.verbose(\"Device code client created\", validRequest.correlationId);\r\n return await deviceCodeClient.acquireToken(validRequest);\r\n }\r\n catch (e) {\r\n if (e instanceof AuthError) {\r\n e.setCorrelationId(validRequest.correlationId);\r\n }\r\n serverTelemetryManager.cacheFailedRequest(e);\r\n throw e;\r\n }\r\n }\r\n /**\r\n * Acquires a token interactively via the browser by requesting an authorization code then exchanging it for a token.\r\n */\r\n async acquireTokenInteractive(request) {\r\n const correlationId = request.correlationId || this.cryptoProvider.createNewGuid();\r\n this.logger.trace(\"acquireTokenInteractive called\", correlationId);\r\n const { openBrowser, successTemplate, errorTemplate, windowHandle, loopbackClient: customLoopbackClient, ...remainingProperties } = request;\r\n if (this.nativeBrokerPlugin) {\r\n const brokerRequest = {\r\n ...remainingProperties,\r\n clientId: this.config.auth.clientId,\r\n scopes: request.scopes || OIDC_DEFAULT_SCOPES,\r\n redirectUri: request.redirectUri || \"\",\r\n authority: request.authority || this.config.auth.authority,\r\n correlationId: correlationId,\r\n extraParameters: {\r\n ...remainingProperties.extraQueryParameters,\r\n ...remainingProperties.tokenQueryParameters,\r\n [X_CLIENT_EXTRA_SKU]: this.skus,\r\n },\r\n accountId: remainingProperties.account?.nativeAccountId,\r\n };\r\n return this.nativeBrokerPlugin.acquireTokenInteractive(brokerRequest, windowHandle);\r\n }\r\n if (request.redirectUri) {\r\n // If its not a broker fallback scenario, we throw a error\r\n if (!this.config.broker.nativeBrokerPlugin) {\r\n throw NodeAuthError.createRedirectUriNotSupportedError();\r\n }\r\n // If a redirect URI is provided for a broker flow but MSAL runtime startup failed, we fall back to the browser flow and will ignore the redirect URI provided for the broker flow\r\n request.redirectUri = \"\";\r\n }\r\n const { verifier, challenge } = await this.cryptoProvider.generatePkceCodes();\r\n const loopbackClient = customLoopbackClient || new LoopbackClient();\r\n let authCodeResponse = {};\r\n let authCodeListenerError = null;\r\n try {\r\n const authCodeListener = loopbackClient\r\n .listenForAuthCode(successTemplate, errorTemplate)\r\n .then((response) => {\r\n authCodeResponse = response;\r\n })\r\n .catch((e) => {\r\n // Store the promise instead of throwing so we can control when its thrown\r\n authCodeListenerError = e;\r\n });\r\n // Wait for server to be listening\r\n const redirectUri = await this.waitForRedirectUri(loopbackClient);\r\n const validRequest = {\r\n ...remainingProperties,\r\n correlationId: correlationId,\r\n scopes: request.scopes || OIDC_DEFAULT_SCOPES,\r\n redirectUri: redirectUri,\r\n responseMode: ResponseMode.QUERY,\r\n codeChallenge: challenge,\r\n codeChallengeMethod: CodeChallengeMethodValues.S256,\r\n };\r\n const authCodeUrl = await this.getAuthCodeUrl(validRequest);\r\n await openBrowser(authCodeUrl);\r\n await authCodeListener;\r\n if (authCodeListenerError) {\r\n throw authCodeListenerError;\r\n }\r\n if (authCodeResponse.error) {\r\n throw new ServerError(authCodeResponse.error, authCodeResponse.error_description, authCodeResponse.suberror);\r\n }\r\n else if (!authCodeResponse.code) {\r\n throw NodeAuthError.createNoAuthCodeInResponseError();\r\n }\r\n const clientInfo = authCodeResponse.client_info;\r\n const tokenRequest = {\r\n code: authCodeResponse.code,\r\n codeVerifier: verifier,\r\n clientInfo: clientInfo || Constants$1.EMPTY_STRING,\r\n ...validRequest,\r\n };\r\n return await this.acquireTokenByCode(tokenRequest); // Await this so the server doesn't close prematurely\r\n }\r\n finally {\r\n loopbackClient.closeServer();\r\n }\r\n }\r\n /**\r\n * Returns a token retrieved either from the cache or by exchanging the refresh token for a fresh access token. If brokering is enabled the token request will be serviced by the broker.\r\n * @param request - developer provided SilentFlowRequest\r\n * @returns\r\n */\r\n async acquireTokenSilent(request) {\r\n const correlationId = request.correlationId || this.cryptoProvider.createNewGuid();\r\n this.logger.trace(\"acquireTokenSilent called\", correlationId);\r\n if (this.nativeBrokerPlugin) {\r\n const brokerRequest = {\r\n ...request,\r\n clientId: this.config.auth.clientId,\r\n scopes: request.scopes || OIDC_DEFAULT_SCOPES,\r\n redirectUri: request.redirectUri || \"\",\r\n authority: request.authority || this.config.auth.authority,\r\n correlationId: correlationId,\r\n extraParameters: {\r\n ...request.tokenQueryParameters,\r\n [X_CLIENT_EXTRA_SKU]: this.skus,\r\n },\r\n accountId: request.account.nativeAccountId,\r\n forceRefresh: request.forceRefresh || false,\r\n };\r\n return this.nativeBrokerPlugin.acquireTokenSilent(brokerRequest);\r\n }\r\n if (request.redirectUri) {\r\n // If its not a broker fallback scenario, we throw a error\r\n if (!this.config.broker.nativeBrokerPlugin) {\r\n throw NodeAuthError.createRedirectUriNotSupportedError();\r\n }\r\n request.redirectUri = \"\";\r\n }\r\n return super.acquireTokenSilent(request);\r\n }\r\n /**\r\n * Removes cache artifacts associated with the given account\r\n * @param request - developer provided SignOutRequest\r\n * @returns\r\n */\r\n async signOut(request) {\r\n if (this.nativeBrokerPlugin && request.account.nativeAccountId) {\r\n const signoutRequest = {\r\n clientId: this.config.auth.clientId,\r\n accountId: request.account.nativeAccountId,\r\n correlationId: request.correlationId ||\r\n this.cryptoProvider.createNewGuid(),\r\n };\r\n await this.nativeBrokerPlugin.signOut(signoutRequest);\r\n }\r\n await this.getTokenCache().removeAccount(request.account, request.correlationId);\r\n }\r\n /**\r\n * Returns all cached accounts for this application. If brokering is enabled this request will be serviced by the broker.\r\n * @returns\r\n */\r\n async getAllAccounts() {\r\n if (this.nativeBrokerPlugin) {\r\n const correlationId = this.cryptoProvider.createNewGuid();\r\n return this.nativeBrokerPlugin.getAllAccounts(this.config.auth.clientId, correlationId);\r\n }\r\n return this.getTokenCache().getAllAccounts();\r\n }\r\n /**\r\n * Attempts to retrieve the redirectUri from the loopback server. If the loopback server does not start listening for requests within the timeout this will throw.\r\n * @param loopbackClient - developer provided custom loopback server implementation\r\n * @returns\r\n */\r\n async waitForRedirectUri(loopbackClient) {\r\n return new Promise((resolve, reject) => {\r\n let ticks = 0;\r\n const id = setInterval(() => {\r\n if (LOOPBACK_SERVER_CONSTANTS.TIMEOUT_MS /\r\n LOOPBACK_SERVER_CONSTANTS.INTERVAL_MS <\r\n ticks) {\r\n clearInterval(id);\r\n reject(NodeAuthError.createLoopbackServerTimeoutError());\r\n return;\r\n }\r\n try {\r\n const r = loopbackClient.getRedirectUri();\r\n clearInterval(id);\r\n resolve(r);\r\n return;\r\n }\r\n catch (e) {\r\n if (e instanceof AuthError &&\r\n e.errorCode ===\r\n NodeAuthErrorMessage.noLoopbackServerExists.code) {\r\n // Loopback server is not listening yet\r\n ticks++;\r\n return;\r\n }\r\n clearInterval(id);\r\n reject(e);\r\n return;\r\n }\r\n }, LOOPBACK_SERVER_CONSTANTS.INTERVAL_MS);\r\n });\r\n }\r\n}\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * OAuth2.0 client credential grant\r\n * @public\r\n */\r\nclass ClientCredentialClient extends BaseClient {\r\n constructor(configuration, appTokenProvider) {\r\n super(configuration);\r\n this.appTokenProvider = appTokenProvider;\r\n }\r\n /**\r\n * Public API to acquire a token with ClientCredential Flow for Confidential clients\r\n * @param request - CommonClientCredentialRequest provided by the developer\r\n */\r\n async acquireToken(request) {\r\n if (request.skipCache || request.claims) {\r\n return this.executeTokenRequest(request, this.authority);\r\n }\r\n const [cachedAuthenticationResult, lastCacheOutcome] = await this.getCachedAuthenticationResult(request, this.config, this.cryptoUtils, this.authority, this.cacheManager, this.serverTelemetryManager);\r\n if (cachedAuthenticationResult) {\r\n // if the token is not expired but must be refreshed; get a new one in the background\r\n if (lastCacheOutcome === CacheOutcome.PROACTIVELY_REFRESHED) {\r\n this.logger.info(\"ClientCredentialClient:getCachedAuthenticationResult - Cached access token's refreshOn property has been exceeded'. It's not expired, but must be refreshed.\");\r\n // refresh the access token in the background\r\n const refreshAccessToken = true;\r\n await this.executeTokenRequest(request, this.authority, refreshAccessToken);\r\n }\r\n // return the cached token\r\n return cachedAuthenticationResult;\r\n }\r\n else {\r\n return this.executeTokenRequest(request, this.authority);\r\n }\r\n }\r\n /**\r\n * looks up cache if the tokens are cached already\r\n */\r\n async getCachedAuthenticationResult(request, config, cryptoUtils, authority, cacheManager, serverTelemetryManager) {\r\n const clientConfiguration = config;\r\n const managedIdentityConfiguration = config;\r\n let lastCacheOutcome = CacheOutcome.NOT_APPLICABLE;\r\n // read the user-supplied cache into memory, if applicable\r\n let cacheContext;\r\n if (clientConfiguration.serializableCache &&\r\n clientConfiguration.persistencePlugin) {\r\n cacheContext = new TokenCacheContext(clientConfiguration.serializableCache, false);\r\n await clientConfiguration.persistencePlugin.beforeCacheAccess(cacheContext);\r\n }\r\n const cachedAccessToken = this.readAccessTokenFromCache(authority, managedIdentityConfiguration.managedIdentityId?.id ||\r\n clientConfiguration.authOptions.clientId, new ScopeSet(request.scopes || []), cacheManager, request.correlationId);\r\n if (clientConfiguration.serializableCache &&\r\n clientConfiguration.persistencePlugin &&\r\n cacheContext) {\r\n await clientConfiguration.persistencePlugin.afterCacheAccess(cacheContext);\r\n }\r\n // must refresh due to non-existent access_token\r\n if (!cachedAccessToken) {\r\n serverTelemetryManager?.setCacheOutcome(CacheOutcome.NO_CACHED_ACCESS_TOKEN);\r\n return [null, CacheOutcome.NO_CACHED_ACCESS_TOKEN];\r\n }\r\n // must refresh due to the expires_in value\r\n if (isTokenExpired(cachedAccessToken.expiresOn, clientConfiguration.systemOptions?.tokenRenewalOffsetSeconds ||\r\n DEFAULT_TOKEN_RENEWAL_OFFSET_SEC)) {\r\n serverTelemetryManager?.setCacheOutcome(CacheOutcome.CACHED_ACCESS_TOKEN_EXPIRED);\r\n return [null, CacheOutcome.CACHED_ACCESS_TOKEN_EXPIRED];\r\n }\r\n // must refresh (in the background) due to the refresh_in value\r\n if (cachedAccessToken.refreshOn &&\r\n isTokenExpired(cachedAccessToken.refreshOn.toString(), 0)) {\r\n lastCacheOutcome = CacheOutcome.PROACTIVELY_REFRESHED;\r\n serverTelemetryManager?.setCacheOutcome(CacheOutcome.PROACTIVELY_REFRESHED);\r\n }\r\n return [\r\n await ResponseHandler.generateAuthenticationResult(cryptoUtils, authority, {\r\n account: null,\r\n idToken: null,\r\n accessToken: cachedAccessToken,\r\n refreshToken: null,\r\n appMetadata: null,\r\n }, true, request),\r\n lastCacheOutcome,\r\n ];\r\n }\r\n /**\r\n * Reads access token from the cache\r\n */\r\n readAccessTokenFromCache(authority, id, scopeSet, cacheManager, correlationId) {\r\n const accessTokenFilter = {\r\n homeAccountId: Constants$1.EMPTY_STRING,\r\n environment: authority.canonicalAuthorityUrlComponents.HostNameAndPort,\r\n credentialType: CredentialType.ACCESS_TOKEN,\r\n clientId: id,\r\n realm: authority.tenant,\r\n target: ScopeSet.createSearchScopes(scopeSet.asArray()),\r\n };\r\n const accessTokens = cacheManager.getAccessTokensByFilter(accessTokenFilter, correlationId);\r\n if (accessTokens.length < 1) {\r\n return null;\r\n }\r\n else if (accessTokens.length > 1) {\r\n throw createClientAuthError(multipleMatchingTokens);\r\n }\r\n return accessTokens[0];\r\n }\r\n /**\r\n * Makes a network call to request the token from the service\r\n * @param request - CommonClientCredentialRequest provided by the developer\r\n * @param authority - authority object\r\n */\r\n async executeTokenRequest(request, authority, refreshAccessToken) {\r\n let serverTokenResponse;\r\n let reqTimestamp;\r\n if (this.appTokenProvider) {\r\n this.logger.info(\"Using appTokenProvider extensibility.\");\r\n const appTokenPropviderParameters = {\r\n correlationId: request.correlationId,\r\n tenantId: this.config.authOptions.authority.tenant,\r\n scopes: request.scopes,\r\n claims: request.claims,\r\n };\r\n reqTimestamp = nowSeconds();\r\n const appTokenProviderResult = await this.appTokenProvider(appTokenPropviderParameters);\r\n serverTokenResponse = {\r\n access_token: appTokenProviderResult.accessToken,\r\n expires_in: appTokenProviderResult.expiresInSeconds,\r\n refresh_in: appTokenProviderResult.refreshInSeconds,\r\n token_type: AuthenticationScheme.BEARER,\r\n };\r\n }\r\n else {\r\n const queryParametersString = this.createTokenQueryParameters(request);\r\n const endpoint = UrlString.appendQueryString(authority.tokenEndpoint, queryParametersString);\r\n const requestBody = await this.createTokenRequestBody(request);\r\n const headers = this.createTokenRequestHeaders();\r\n const thumbprint = {\r\n clientId: this.config.authOptions.clientId,\r\n authority: request.authority,\r\n scopes: request.scopes,\r\n claims: request.claims,\r\n authenticationScheme: request.authenticationScheme,\r\n resourceRequestMethod: request.resourceRequestMethod,\r\n resourceRequestUri: request.resourceRequestUri,\r\n shrClaims: request.shrClaims,\r\n sshKid: request.sshKid,\r\n };\r\n this.logger.info(\"Sending token request to endpoint: \" + authority.tokenEndpoint);\r\n reqTimestamp = nowSeconds();\r\n const response = await this.executePostToTokenEndpoint(endpoint, requestBody, headers, thumbprint, request.correlationId);\r\n serverTokenResponse = response.body;\r\n serverTokenResponse.status = response.status;\r\n }\r\n const responseHandler = new ResponseHandler(this.config.authOptions.clientId, this.cacheManager, this.cryptoUtils, this.logger, this.config.serializableCache, this.config.persistencePlugin);\r\n responseHandler.validateTokenResponse(serverTokenResponse, refreshAccessToken);\r\n const tokenResponse = await responseHandler.handleServerTokenResponse(serverTokenResponse, this.authority, reqTimestamp, request);\r\n return tokenResponse;\r\n }\r\n /**\r\n * generate the request to the server in the acceptable format\r\n * @param request - CommonClientCredentialRequest provided by the developer\r\n */\r\n async createTokenRequestBody(request) {\r\n const parameters = new Map();\r\n addClientId(parameters, this.config.authOptions.clientId);\r\n addScopes(parameters, request.scopes, false);\r\n addGrantType(parameters, GrantType.CLIENT_CREDENTIALS_GRANT);\r\n addLibraryInfo(parameters, this.config.libraryInfo);\r\n addApplicationTelemetry(parameters, this.config.telemetry.application);\r\n addThrottling(parameters);\r\n if (this.serverTelemetryManager) {\r\n addServerTelemetry(parameters, this.serverTelemetryManager);\r\n }\r\n const correlationId = request.correlationId ||\r\n this.config.cryptoInterface.createNewGuid();\r\n addCorrelationId(parameters, correlationId);\r\n if (this.config.clientCredentials.clientSecret) {\r\n addClientSecret(parameters, this.config.clientCredentials.clientSecret);\r\n }\r\n // Use clientAssertion from request, fallback to client assertion in base configuration\r\n const clientAssertion = request.clientAssertion ||\r\n this.config.clientCredentials.clientAssertion;\r\n if (clientAssertion) {\r\n addClientAssertion(parameters, await getClientAssertion(clientAssertion.assertion, this.config.authOptions.clientId, request.resourceRequestUri));\r\n addClientAssertionType(parameters, clientAssertion.assertionType);\r\n }\r\n if (!StringUtils.isEmptyObj(request.claims) ||\r\n (this.config.authOptions.clientCapabilities &&\r\n this.config.authOptions.clientCapabilities.length > 0)) {\r\n addClaims(parameters, request.claims, this.config.authOptions.clientCapabilities);\r\n }\r\n return mapToQueryString(parameters);\r\n }\r\n}\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * On-Behalf-Of client\r\n * @public\r\n */\r\nclass OnBehalfOfClient extends BaseClient {\r\n constructor(configuration) {\r\n super(configuration);\r\n }\r\n /**\r\n * Public API to acquire tokens with on behalf of flow\r\n * @param request - developer provided CommonOnBehalfOfRequest\r\n */\r\n async acquireToken(request) {\r\n this.scopeSet = new ScopeSet(request.scopes || []);\r\n // generate the user_assertion_hash for OBOAssertion\r\n this.userAssertionHash = await this.cryptoUtils.hashString(request.oboAssertion);\r\n if (request.skipCache || request.claims) {\r\n return this.executeTokenRequest(request, this.authority, this.userAssertionHash);\r\n }\r\n try {\r\n return await this.getCachedAuthenticationResult(request);\r\n }\r\n catch (e) {\r\n // Any failure falls back to interactive request, once we implement distributed cache, we plan to handle `createRefreshRequiredError` to refresh using the RT\r\n return await this.executeTokenRequest(request, this.authority, this.userAssertionHash);\r\n }\r\n }\r\n /**\r\n * look up cache for tokens\r\n * Find idtoken in the cache\r\n * Find accessToken based on user assertion and account info in the cache\r\n * Please note we are not yet supported OBO tokens refreshed with long lived RT. User will have to send a new assertion if the current access token expires\r\n * This is to prevent security issues when the assertion changes over time, however, longlived RT helps retaining the session\r\n * @param request - developer provided CommonOnBehalfOfRequest\r\n */\r\n async getCachedAuthenticationResult(request) {\r\n // look in the cache for the access_token which matches the incoming_assertion\r\n const cachedAccessToken = this.readAccessTokenFromCacheForOBO(this.config.authOptions.clientId, request);\r\n if (!cachedAccessToken) {\r\n // Must refresh due to non-existent access_token.\r\n this.serverTelemetryManager?.setCacheOutcome(CacheOutcome.NO_CACHED_ACCESS_TOKEN);\r\n this.logger.info(\"SilentFlowClient:acquireCachedToken - No access token found in cache for the given properties.\");\r\n throw createClientAuthError(tokenRefreshRequired);\r\n }\r\n else if (isTokenExpired(cachedAccessToken.expiresOn, this.config.systemOptions.tokenRenewalOffsetSeconds)) {\r\n // Access token expired, will need to renewed\r\n this.serverTelemetryManager?.setCacheOutcome(CacheOutcome.CACHED_ACCESS_TOKEN_EXPIRED);\r\n this.logger.info(`OnbehalfofFlow:getCachedAuthenticationResult - Cached access token is expired or will expire within ${this.config.systemOptions.tokenRenewalOffsetSeconds} seconds.`);\r\n throw createClientAuthError(tokenRefreshRequired);\r\n }\r\n // fetch the idToken from cache\r\n const cachedIdToken = this.readIdTokenFromCacheForOBO(cachedAccessToken.homeAccountId, request.correlationId);\r\n let idTokenClaims;\r\n let cachedAccount = null;\r\n if (cachedIdToken) {\r\n idTokenClaims = extractTokenClaims(cachedIdToken.secret, EncodingUtils.base64Decode);\r\n const localAccountId = idTokenClaims.oid || idTokenClaims.sub;\r\n const accountInfo = {\r\n homeAccountId: cachedIdToken.homeAccountId,\r\n environment: cachedIdToken.environment,\r\n tenantId: cachedIdToken.realm,\r\n username: Constants$1.EMPTY_STRING,\r\n localAccountId: localAccountId || Constants$1.EMPTY_STRING,\r\n };\r\n cachedAccount = this.cacheManager.getAccount(this.cacheManager.generateAccountKey(accountInfo), request.correlationId);\r\n }\r\n // increment telemetry cache hit counter\r\n if (this.config.serverTelemetryManager) {\r\n this.config.serverTelemetryManager.incrementCacheHits();\r\n }\r\n return ResponseHandler.generateAuthenticationResult(this.cryptoUtils, this.authority, {\r\n account: cachedAccount,\r\n accessToken: cachedAccessToken,\r\n idToken: cachedIdToken,\r\n refreshToken: null,\r\n appMetadata: null,\r\n }, true, request, idTokenClaims);\r\n }\r\n /**\r\n * read idtoken from cache, this is a specific implementation for OBO as the requirements differ from a generic lookup in the cacheManager\r\n * Certain use cases of OBO flow do not expect an idToken in the cache/or from the service\r\n * @param atHomeAccountId - account id\r\n */\r\n readIdTokenFromCacheForOBO(atHomeAccountId, correlationId) {\r\n const idTokenFilter = {\r\n homeAccountId: atHomeAccountId,\r\n environment: this.authority.canonicalAuthorityUrlComponents.HostNameAndPort,\r\n credentialType: CredentialType.ID_TOKEN,\r\n clientId: this.config.authOptions.clientId,\r\n realm: this.authority.tenant,\r\n };\r\n const idTokenMap = this.cacheManager.getIdTokensByFilter(idTokenFilter, correlationId);\r\n // When acquiring a token on behalf of an application, there might not be an id token in the cache\r\n if (Object.values(idTokenMap).length < 1) {\r\n return null;\r\n }\r\n return Object.values(idTokenMap)[0];\r\n }\r\n /**\r\n * Fetches the cached access token based on incoming assertion\r\n * @param clientId - client id\r\n * @param request - developer provided CommonOnBehalfOfRequest\r\n */\r\n readAccessTokenFromCacheForOBO(clientId, request) {\r\n const authScheme = request.authenticationScheme || AuthenticationScheme.BEARER;\r\n /*\r\n * Distinguish between Bearer and PoP/SSH token cache types\r\n * Cast to lowercase to handle \"bearer\" from ADFS\r\n */\r\n const credentialType = authScheme.toLowerCase() !==\r\n AuthenticationScheme.BEARER.toLowerCase()\r\n ? CredentialType.ACCESS_TOKEN_WITH_AUTH_SCHEME\r\n : CredentialType.ACCESS_TOKEN;\r\n const accessTokenFilter = {\r\n credentialType: credentialType,\r\n clientId,\r\n target: ScopeSet.createSearchScopes(this.scopeSet.asArray()),\r\n tokenType: authScheme,\r\n keyId: request.sshKid,\r\n requestedClaimsHash: request.requestedClaimsHash,\r\n userAssertionHash: this.userAssertionHash,\r\n };\r\n const accessTokens = this.cacheManager.getAccessTokensByFilter(accessTokenFilter, request.correlationId);\r\n const numAccessTokens = accessTokens.length;\r\n if (numAccessTokens < 1) {\r\n return null;\r\n }\r\n else if (numAccessTokens > 1) {\r\n throw createClientAuthError(multipleMatchingTokens);\r\n }\r\n return accessTokens[0];\r\n }\r\n /**\r\n * Make a network call to the server requesting credentials\r\n * @param request - developer provided CommonOnBehalfOfRequest\r\n * @param authority - authority object\r\n */\r\n async executeTokenRequest(request, authority, userAssertionHash) {\r\n const queryParametersString = this.createTokenQueryParameters(request);\r\n const endpoint = UrlString.appendQueryString(authority.tokenEndpoint, queryParametersString);\r\n const requestBody = await this.createTokenRequestBody(request);\r\n const headers = this.createTokenRequestHeaders();\r\n const thumbprint = {\r\n clientId: this.config.authOptions.clientId,\r\n authority: request.authority,\r\n scopes: request.scopes,\r\n claims: request.claims,\r\n authenticationScheme: request.authenticationScheme,\r\n resourceRequestMethod: request.resourceRequestMethod,\r\n resourceRequestUri: request.resourceRequestUri,\r\n shrClaims: request.shrClaims,\r\n sshKid: request.sshKid,\r\n };\r\n const reqTimestamp = nowSeconds();\r\n const response = await this.executePostToTokenEndpoint(endpoint, requestBody, headers, thumbprint, request.correlationId);\r\n const responseHandler = new ResponseHandler(this.config.authOptions.clientId, this.cacheManager, this.cryptoUtils, this.logger, this.config.serializableCache, this.config.persistencePlugin);\r\n responseHandler.validateTokenResponse(response.body);\r\n const tokenResponse = await responseHandler.handleServerTokenResponse(response.body, this.authority, reqTimestamp, request, undefined, userAssertionHash);\r\n return tokenResponse;\r\n }\r\n /**\r\n * generate a server request in accepable format\r\n * @param request - developer provided CommonOnBehalfOfRequest\r\n */\r\n async createTokenRequestBody(request) {\r\n const parameters = new Map();\r\n addClientId(parameters, this.config.authOptions.clientId);\r\n addScopes(parameters, request.scopes);\r\n addGrantType(parameters, GrantType.JWT_BEARER);\r\n addClientInfo(parameters);\r\n addLibraryInfo(parameters, this.config.libraryInfo);\r\n addApplicationTelemetry(parameters, this.config.telemetry.application);\r\n addThrottling(parameters);\r\n if (this.serverTelemetryManager) {\r\n addServerTelemetry(parameters, this.serverTelemetryManager);\r\n }\r\n const correlationId = request.correlationId ||\r\n this.config.cryptoInterface.createNewGuid();\r\n addCorrelationId(parameters, correlationId);\r\n addRequestTokenUse(parameters, ON_BEHALF_OF);\r\n addOboAssertion(parameters, request.oboAssertion);\r\n if (this.config.clientCredentials.clientSecret) {\r\n addClientSecret(parameters, this.config.clientCredentials.clientSecret);\r\n }\r\n const clientAssertion = this.config.clientCredentials.clientAssertion;\r\n if (clientAssertion) {\r\n addClientAssertion(parameters, await getClientAssertion(clientAssertion.assertion, this.config.authOptions.clientId, request.resourceRequestUri));\r\n addClientAssertionType(parameters, clientAssertion.assertionType);\r\n }\r\n if (request.claims ||\r\n (this.config.authOptions.clientCapabilities &&\r\n this.config.authOptions.clientCapabilities.length > 0)) {\r\n addClaims(parameters, request.claims, this.config.authOptions.clientCapabilities);\r\n }\r\n return mapToQueryString(parameters);\r\n }\r\n}\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n// AADAuthorityConstants\r\n/**\r\n * This class is to be used to acquire tokens for confidential client applications (webApp, webAPI). Confidential client applications\r\n * will configure application secrets, client certificates/assertions as applicable\r\n * @public\r\n */\r\nclass ConfidentialClientApplication extends ClientApplication {\r\n /**\r\n * Constructor for the ConfidentialClientApplication\r\n *\r\n * Required attributes in the Configuration object are:\r\n * - clientID: the application ID of your application. You can obtain one by registering your application with our application registration portal\r\n * - authority: the authority URL for your application.\r\n * - client credential: Must set either client secret, certificate, or assertion for confidential clients. You can obtain a client secret from the application registration portal.\r\n *\r\n * In Azure AD, authority is a URL indicating of the form https://login.microsoftonline.com/\\{Enter_the_Tenant_Info_Here\\}.\r\n * If your application supports Accounts in one organizational directory, replace \"Enter_the_Tenant_Info_Here\" value with the Tenant Id or Tenant name (for example, contoso.microsoft.com).\r\n * If your application supports Accounts in any organizational directory, replace \"Enter_the_Tenant_Info_Here\" value with organizations.\r\n * If your application supports Accounts in any organizational directory and personal Microsoft accounts, replace \"Enter_the_Tenant_Info_Here\" value with common.\r\n * To restrict support to Personal Microsoft accounts only, replace \"Enter_the_Tenant_Info_Here\" value with consumers.\r\n *\r\n * In Azure B2C, authority is of the form https://\\{instance\\}/tfp/\\{tenant\\}/\\{policyName\\}/\r\n * Full B2C functionality will be available in this library in future versions.\r\n *\r\n * @param Configuration - configuration object for the MSAL ConfidentialClientApplication instance\r\n */\r\n constructor(configuration) {\r\n super(configuration);\r\n const clientSecretNotEmpty = !!this.config.auth.clientSecret;\r\n const clientAssertionNotEmpty = !!this.config.auth.clientAssertion;\r\n const certificateNotEmpty = (!!this.config.auth.clientCertificate?.thumbprint ||\r\n !!this.config.auth.clientCertificate?.thumbprintSha256) &&\r\n !!this.config.auth.clientCertificate?.privateKey;\r\n /*\r\n * If app developer configures this callback, they don't need a credential\r\n * i.e. AzureSDK can get token from Managed Identity without a cert / secret\r\n */\r\n if (this.appTokenProvider) {\r\n return;\r\n }\r\n // Check that at most one credential is set on the application\r\n if ((clientSecretNotEmpty && clientAssertionNotEmpty) ||\r\n (clientAssertionNotEmpty && certificateNotEmpty) ||\r\n (clientSecretNotEmpty && certificateNotEmpty)) {\r\n throw createClientAuthError(invalidClientCredential);\r\n }\r\n if (this.config.auth.clientSecret) {\r\n this.clientSecret = this.config.auth.clientSecret;\r\n return;\r\n }\r\n if (this.config.auth.clientAssertion) {\r\n this.developerProvidedClientAssertion =\r\n this.config.auth.clientAssertion;\r\n return;\r\n }\r\n if (!certificateNotEmpty) {\r\n throw createClientAuthError(invalidClientCredential);\r\n }\r\n else {\r\n this.clientAssertion = !!this.config.auth.clientCertificate\r\n .thumbprintSha256\r\n ? ClientAssertion.fromCertificateWithSha256Thumbprint(this.config.auth.clientCertificate.thumbprintSha256, this.config.auth.clientCertificate.privateKey, this.config.auth.clientCertificate.x5c)\r\n : ClientAssertion.fromCertificate(\r\n // guaranteed to be a string, due to prior error checking in this function\r\n this.config.auth.clientCertificate.thumbprint, this.config.auth.clientCertificate.privateKey, this.config.auth.clientCertificate.x5c);\r\n }\r\n this.appTokenProvider = undefined;\r\n }\r\n /**\r\n * This extensibility point only works for the client_credential flow, i.e. acquireTokenByClientCredential and\r\n * is meant for Azure SDK to enhance Managed Identity support.\r\n *\r\n * @param IAppTokenProvider - Extensibility interface, which allows the app developer to return a token from a custom source.\r\n */\r\n SetAppTokenProvider(provider) {\r\n this.appTokenProvider = provider;\r\n }\r\n /**\r\n * Acquires tokens from the authority for the application (not for an end user).\r\n */\r\n async acquireTokenByClientCredential(request) {\r\n this.logger.info(\"acquireTokenByClientCredential called\", request.correlationId);\r\n // If there is a client assertion present in the request, it overrides the one present in the client configuration\r\n let clientAssertion;\r\n if (request.clientAssertion) {\r\n clientAssertion = {\r\n assertion: await getClientAssertion(request.clientAssertion, this.config.auth.clientId\r\n // tokenEndpoint will be undefined. resourceRequestUri is omitted in ClientCredentialRequest\r\n ),\r\n assertionType: Constants.JWT_BEARER_ASSERTION_TYPE,\r\n };\r\n }\r\n const baseRequest = await this.initializeBaseRequest(request);\r\n // valid base request should not contain oidc scopes in this grant type\r\n const validBaseRequest = {\r\n ...baseRequest,\r\n scopes: baseRequest.scopes.filter((scope) => !OIDC_DEFAULT_SCOPES.includes(scope)),\r\n };\r\n const validRequest = {\r\n ...request,\r\n ...validBaseRequest,\r\n clientAssertion,\r\n };\r\n /*\r\n * valid request should not have \"common\" or \"organizations\" in lieu of the tenant_id in the authority in the auth configuration\r\n * example authority: \"https://login.microsoftonline.com/TenantId\",\r\n */\r\n const authority = new UrlString(validRequest.authority);\r\n const tenantId = authority.getUrlComponents().PathSegments[0];\r\n if (Object.values(AADAuthorityConstants).includes(tenantId)) {\r\n throw createClientAuthError(missingTenantIdError);\r\n }\r\n /*\r\n * if this env variable is set, and the developer provided region isn't defined and isn't \"DisableMsalForceRegion\",\r\n * MSAL shall opt-in to ESTS-R with the value of this variable\r\n */\r\n const ENV_MSAL_FORCE_REGION = process.env[MSAL_FORCE_REGION];\r\n let region;\r\n if (validRequest.azureRegion !== \"DisableMsalForceRegion\") {\r\n if (!validRequest.azureRegion && ENV_MSAL_FORCE_REGION) {\r\n region = ENV_MSAL_FORCE_REGION;\r\n }\r\n else {\r\n region = validRequest.azureRegion;\r\n }\r\n }\r\n const azureRegionConfiguration = {\r\n azureRegion: region,\r\n environmentRegion: process.env[REGION_ENVIRONMENT_VARIABLE],\r\n };\r\n const serverTelemetryManager = this.initializeServerTelemetryManager(ApiId.acquireTokenByClientCredential, validRequest.correlationId, validRequest.skipCache);\r\n try {\r\n const discoveredAuthority = await this.createAuthority(validRequest.authority, validRequest.correlationId, azureRegionConfiguration, request.azureCloudOptions);\r\n const clientCredentialConfig = await this.buildOauthClientConfiguration(discoveredAuthority, validRequest.correlationId, \"\", serverTelemetryManager);\r\n const clientCredentialClient = new ClientCredentialClient(clientCredentialConfig, this.appTokenProvider);\r\n this.logger.verbose(\"Client credential client created\", validRequest.correlationId);\r\n return await clientCredentialClient.acquireToken(validRequest);\r\n }\r\n catch (e) {\r\n if (e instanceof AuthError) {\r\n e.setCorrelationId(validRequest.correlationId);\r\n }\r\n serverTelemetryManager.cacheFailedRequest(e);\r\n throw e;\r\n }\r\n }\r\n /**\r\n * Acquires tokens from the authority for the application.\r\n *\r\n * Used in scenarios where the current app is a middle-tier service which was called with a token\r\n * representing an end user. The current app can use the token (oboAssertion) to request another\r\n * token to access downstream web API, on behalf of that user.\r\n *\r\n * The current middle-tier app has no user interaction to obtain consent.\r\n * See how to gain consent upfront for your middle-tier app from this article.\r\n * https://docs.microsoft.com/en-us/azure/active-directory/develop/v2-oauth2-on-behalf-of-flow#gaining-consent-for-the-middle-tier-application\r\n */\r\n async acquireTokenOnBehalfOf(request) {\r\n this.logger.info(\"acquireTokenOnBehalfOf called\", request.correlationId);\r\n const validRequest = {\r\n ...request,\r\n ...(await this.initializeBaseRequest(request)),\r\n };\r\n try {\r\n const discoveredAuthority = await this.createAuthority(validRequest.authority, validRequest.correlationId, undefined, request.azureCloudOptions);\r\n const onBehalfOfConfig = await this.buildOauthClientConfiguration(discoveredAuthority, validRequest.correlationId, \"\", undefined);\r\n const oboClient = new OnBehalfOfClient(onBehalfOfConfig);\r\n this.logger.verbose(\"On behalf of client created\", validRequest.correlationId);\r\n return await oboClient.acquireToken(validRequest);\r\n }\r\n catch (e) {\r\n if (e instanceof AuthError) {\r\n e.setCorrelationId(validRequest.correlationId);\r\n }\r\n throw e;\r\n }\r\n }\r\n}\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * @internal\r\n * Checks if a given date string is in ISO 8601 format.\r\n *\r\n * @param dateString - The date string to be checked.\r\n * @returns boolean - Returns true if the date string is in ISO 8601 format, otherwise false.\r\n */\r\nfunction isIso8601(dateString) {\r\n if (typeof dateString !== \"string\") {\r\n return false;\r\n }\r\n const date = new Date(dateString);\r\n return !isNaN(date.getTime()) && date.toISOString() === dateString;\r\n}\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nclass HttpClientWithRetries {\r\n constructor(httpClientNoRetries, retryPolicy, logger) {\r\n this.httpClientNoRetries = httpClientNoRetries;\r\n this.retryPolicy = retryPolicy;\r\n this.logger = logger;\r\n }\r\n async sendNetworkRequestAsyncHelper(httpMethod, url, options) {\r\n if (httpMethod === HttpMethod.GET) {\r\n return this.httpClientNoRetries.sendGetRequestAsync(url, options);\r\n }\r\n else {\r\n return this.httpClientNoRetries.sendPostRequestAsync(url, options);\r\n }\r\n }\r\n async sendNetworkRequestAsync(httpMethod, url, options) {\r\n // the underlying network module (custom or HttpClient) will make the call\r\n let response = await this.sendNetworkRequestAsyncHelper(httpMethod, url, options);\r\n if (\"isNewRequest\" in this.retryPolicy) {\r\n this.retryPolicy.isNewRequest = true;\r\n }\r\n let currentRetry = 0;\r\n while (await this.retryPolicy.pauseForRetry(response.status, currentRetry, this.logger, response.headers[HeaderNames.RETRY_AFTER])) {\r\n response = await this.sendNetworkRequestAsyncHelper(httpMethod, url, options);\r\n currentRetry++;\r\n }\r\n return response;\r\n }\r\n async sendGetRequestAsync(url, options) {\r\n return this.sendNetworkRequestAsync(HttpMethod.GET, url, options);\r\n }\r\n async sendPostRequestAsync(url, options) {\r\n return this.sendNetworkRequestAsync(HttpMethod.POST, url, options);\r\n }\r\n}\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * Managed Identity User Assigned Id Query Parameter Names\r\n */\r\nconst ManagedIdentityUserAssignedIdQueryParameterNames = {\r\n MANAGED_IDENTITY_CLIENT_ID_2017: \"clientid\",\r\n MANAGED_IDENTITY_CLIENT_ID: \"client_id\",\r\n MANAGED_IDENTITY_OBJECT_ID: \"object_id\",\r\n MANAGED_IDENTITY_RESOURCE_ID_IMDS: \"msi_res_id\",\r\n MANAGED_IDENTITY_RESOURCE_ID_NON_IMDS: \"mi_res_id\",\r\n};\r\n/**\r\n * Base class for all Managed Identity sources. Provides common functionality for\r\n * authenticating with Azure Managed Identity endpoints across different Azure services\r\n * including IMDS, App Service, Azure Arc, Service Fabric, Cloud Shell, and Machine Learning.\r\n *\r\n * This abstract class handles token acquisition, response processing, and network communication\r\n * while allowing concrete implementations to define source-specific request creation logic.\r\n */\r\nclass BaseManagedIdentitySource {\r\n /**\r\n * Creates an instance of BaseManagedIdentitySource.\r\n *\r\n * @param logger - Logger instance for diagnostic information\r\n * @param nodeStorage - Storage interface for caching tokens\r\n * @param networkClient - Network client for making HTTP requests\r\n * @param cryptoProvider - Cryptographic provider for token operations\r\n * @param disableInternalRetries - Whether to disable automatic retry logic\r\n */\r\n constructor(logger, nodeStorage, networkClient, cryptoProvider, disableInternalRetries) {\r\n this.logger = logger;\r\n this.nodeStorage = nodeStorage;\r\n this.networkClient = networkClient;\r\n this.cryptoProvider = cryptoProvider;\r\n this.disableInternalRetries = disableInternalRetries;\r\n }\r\n /**\r\n * Processes the network response and converts it to a standardized server token response.\r\n * This async version allows for source-specific response processing logic while maintaining\r\n * backward compatibility with the synchronous version.\r\n *\r\n * @param response - The network response containing the managed identity token\r\n * @param _networkClient - Network client used for the request (unused in base implementation)\r\n * @param _networkRequest - The original network request parameters (unused in base implementation)\r\n * @param _networkRequestOptions - The network request options (unused in base implementation)\r\n *\r\n * @returns Promise resolving to a standardized server authorization token response\r\n */\r\n async getServerTokenResponseAsync(response, \r\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n _networkClient, \r\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n _networkRequest, \r\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n _networkRequestOptions) {\r\n return this.getServerTokenResponse(response);\r\n }\r\n /**\r\n * Converts a managed identity token response to a standardized server authorization token response.\r\n * Handles time format conversion, expiration calculation, and error mapping to ensure\r\n * compatibility with the MSAL response handling pipeline.\r\n *\r\n * @param response - The network response containing the managed identity token\r\n *\r\n * @returns Standardized server authorization token response with normalized fields\r\n */\r\n getServerTokenResponse(response) {\r\n let refreshIn, expiresIn;\r\n if (response.body.expires_on) {\r\n // if the expires_on field in the response body is a string and in ISO 8601 format, convert it to a Unix timestamp (seconds since epoch)\r\n if (isIso8601(response.body.expires_on)) {\r\n response.body.expires_on =\r\n new Date(response.body.expires_on).getTime() / 1000;\r\n }\r\n expiresIn = response.body.expires_on - nowSeconds();\r\n // compute refresh_in as 1/2 of expires_in, but only if expires_in > 2h\r\n if (expiresIn > 2 * 3600) {\r\n refreshIn = expiresIn / 2;\r\n }\r\n }\r\n const serverTokenResponse = {\r\n status: response.status,\r\n // success\r\n access_token: response.body.access_token,\r\n expires_in: expiresIn,\r\n scope: response.body.resource,\r\n token_type: response.body.token_type,\r\n refresh_in: refreshIn,\r\n // error\r\n correlation_id: response.body.correlation_id || response.body.correlationId,\r\n error: typeof response.body.error === \"string\"\r\n ? response.body.error\r\n : response.body.error?.code,\r\n error_description: response.body.message ||\r\n (typeof response.body.error === \"string\"\r\n ? response.body.error_description\r\n : response.body.error?.message),\r\n error_codes: response.body.error_codes,\r\n timestamp: response.body.timestamp,\r\n trace_id: response.body.trace_id,\r\n };\r\n return serverTokenResponse;\r\n }\r\n /**\r\n * Acquires an access token using the managed identity endpoint for the specified resource.\r\n * This is the primary method for token acquisition, handling the complete flow from\r\n * request creation through response processing and token caching.\r\n *\r\n * @param managedIdentityRequest - The managed identity request containing resource and optional parameters\r\n * @param managedIdentityId - The managed identity configuration (system or user-assigned)\r\n * @param fakeAuthority - Authority instance used for token caching (managed identity uses a placeholder authority)\r\n * @param refreshAccessToken - Whether this is a token refresh operation\r\n *\r\n * @returns Promise resolving to an authentication result containing the access token and metadata\r\n *\r\n * @throws {AuthError} When network requests fail or token validation fails\r\n * @throws {ClientAuthError} When network errors occur during the request\r\n */\r\n async acquireTokenWithManagedIdentity(managedIdentityRequest, managedIdentityId, fakeAuthority, refreshAccessToken) {\r\n const networkRequest = this.createRequest(managedIdentityRequest.resource, managedIdentityId);\r\n if (managedIdentityRequest.revokedTokenSha256Hash) {\r\n this.logger.info(`[Managed Identity] The following claims are present in the request: ${managedIdentityRequest.claims}`);\r\n networkRequest.queryParameters[ManagedIdentityQueryParameters.SHA256_TOKEN_TO_REFRESH] = managedIdentityRequest.revokedTokenSha256Hash;\r\n }\r\n if (managedIdentityRequest.clientCapabilities?.length) {\r\n const clientCapabilities = managedIdentityRequest.clientCapabilities.toString();\r\n this.logger.info(`[Managed Identity] The following client capabilities are present in the request: ${clientCapabilities}`);\r\n networkRequest.queryParameters[ManagedIdentityQueryParameters.XMS_CC] = clientCapabilities;\r\n }\r\n const headers = networkRequest.headers;\r\n headers[HeaderNames.CONTENT_TYPE] = Constants$1.URL_FORM_CONTENT_TYPE;\r\n const networkRequestOptions = { headers };\r\n if (Object.keys(networkRequest.bodyParameters).length) {\r\n networkRequestOptions.body =\r\n networkRequest.computeParametersBodyString();\r\n }\r\n /**\r\n * Initializes the network client helper based on the retry policy configuration.\r\n * If internal retries are disabled, it uses the provided network client directly.\r\n * Otherwise, it wraps the network client with an HTTP client that supports retries.\r\n */\r\n const networkClientHelper = this.disableInternalRetries\r\n ? this.networkClient\r\n : new HttpClientWithRetries(this.networkClient, networkRequest.retryPolicy, this.logger);\r\n const reqTimestamp = nowSeconds();\r\n let response;\r\n try {\r\n // Sources that send POST requests: Cloud Shell\r\n if (networkRequest.httpMethod === HttpMethod.POST) {\r\n response =\r\n await networkClientHelper.sendPostRequestAsync(networkRequest.computeUri(), networkRequestOptions);\r\n // Sources that send GET requests: App Service, Azure Arc, IMDS, Service Fabric\r\n }\r\n else {\r\n response =\r\n await networkClientHelper.sendGetRequestAsync(networkRequest.computeUri(), networkRequestOptions);\r\n }\r\n }\r\n catch (error) {\r\n if (error instanceof AuthError) {\r\n throw error;\r\n }\r\n else {\r\n throw createClientAuthError(networkError);\r\n }\r\n }\r\n const responseHandler = new ResponseHandler(managedIdentityId.id, this.nodeStorage, this.cryptoProvider, this.logger, null, null);\r\n const serverTokenResponse = await this.getServerTokenResponseAsync(response, networkClientHelper, networkRequest, networkRequestOptions);\r\n responseHandler.validateTokenResponse(serverTokenResponse, refreshAccessToken);\r\n // caches the token\r\n return responseHandler.handleServerTokenResponse(serverTokenResponse, fakeAuthority, reqTimestamp, managedIdentityRequest);\r\n }\r\n /**\r\n * Determines the appropriate query parameter name for user-assigned managed identity\r\n * based on the identity type, API version, and endpoint characteristics.\r\n * Different Azure services and API versions use different parameter names for the same identity types.\r\n *\r\n * @param managedIdentityIdType - The type of user-assigned managed identity (client ID, object ID, or resource ID)\r\n * @param isImds - Whether the request is being made to the IMDS (Instance Metadata Service) endpoint\r\n * @param usesApi2017 - Whether the endpoint uses the 2017-09-01 API version (affects client ID parameter name)\r\n *\r\n * @returns The correct query parameter name for the specified identity type and endpoint\r\n *\r\n * @throws {ManagedIdentityError} When an invalid managed identity ID type is provided\r\n */\r\n getManagedIdentityUserAssignedIdQueryParameterKey(managedIdentityIdType, isImds, usesApi2017) {\r\n switch (managedIdentityIdType) {\r\n case ManagedIdentityIdType.USER_ASSIGNED_CLIENT_ID:\r\n this.logger.info(`[Managed Identity] [API version ${usesApi2017 ? \"2017+\" : \"2019+\"}] Adding user assigned client id to the request.`);\r\n // The Machine Learning source uses the 2017-09-01 API version, which uses \"clientid\" instead of \"client_id\"\r\n return usesApi2017\r\n ? ManagedIdentityUserAssignedIdQueryParameterNames.MANAGED_IDENTITY_CLIENT_ID_2017\r\n : ManagedIdentityUserAssignedIdQueryParameterNames.MANAGED_IDENTITY_CLIENT_ID;\r\n case ManagedIdentityIdType.USER_ASSIGNED_RESOURCE_ID:\r\n this.logger.info(\"[Managed Identity] Adding user assigned resource id to the request.\");\r\n return isImds\r\n ? ManagedIdentityUserAssignedIdQueryParameterNames.MANAGED_IDENTITY_RESOURCE_ID_IMDS\r\n : ManagedIdentityUserAssignedIdQueryParameterNames.MANAGED_IDENTITY_RESOURCE_ID_NON_IMDS;\r\n case ManagedIdentityIdType.USER_ASSIGNED_OBJECT_ID:\r\n this.logger.info(\"[Managed Identity] Adding user assigned object id to the request.\");\r\n return ManagedIdentityUserAssignedIdQueryParameterNames.MANAGED_IDENTITY_OBJECT_ID;\r\n default:\r\n throw createManagedIdentityError(invalidManagedIdentityIdType);\r\n }\r\n }\r\n}\r\n/**\r\n * Validates and normalizes an environment variable containing a URL string.\r\n * This static utility method ensures that environment variables used for managed identity\r\n * endpoints contain properly formatted URLs and provides informative error messages when validation fails.\r\n *\r\n * @param envVariableStringName - The name of the environment variable being validated (for error reporting)\r\n * @param envVariable - The environment variable value containing the URL string\r\n * @param sourceName - The name of the managed identity source (for error reporting)\r\n * @param logger - Logger instance for diagnostic information\r\n *\r\n * @returns The validated and normalized URL string\r\n *\r\n * @throws {ManagedIdentityError} When the environment variable contains a malformed URL\r\n */\r\nBaseManagedIdentitySource.getValidatedEnvVariableUrlString = (envVariableStringName, envVariable, sourceName, logger) => {\r\n try {\r\n return new UrlString(envVariable).urlString;\r\n }\r\n catch (error) {\r\n logger.info(`[Managed Identity] ${sourceName} managed identity is unavailable because the '${envVariableStringName}' environment variable is malformed.`);\r\n throw createManagedIdentityError(MsiEnvironmentVariableUrlMalformedErrorCodes[envVariableStringName]);\r\n }\r\n};\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nclass LinearRetryStrategy {\r\n /**\r\n * Calculates the number of milliseconds to sleep based on the `retry-after` HTTP header.\r\n *\r\n * @param retryHeader - The value of the `retry-after` HTTP header. This can be either a number of seconds\r\n * or an HTTP date string.\r\n * @returns The number of milliseconds to sleep before retrying the request. If the `retry-after` header is not\r\n * present or cannot be parsed, returns 0.\r\n */\r\n calculateDelay(retryHeader, minimumDelay) {\r\n if (!retryHeader) {\r\n return minimumDelay;\r\n }\r\n // retry-after header is in seconds\r\n let millisToSleep = Math.round(parseFloat(retryHeader) * 1000);\r\n /*\r\n * retry-after header is in HTTP Date format\r\n * , :: GMT\r\n */\r\n if (isNaN(millisToSleep)) {\r\n // .valueOf() is needed to subtract dates in TypeScript\r\n millisToSleep =\r\n new Date(retryHeader).valueOf() - new Date().valueOf();\r\n }\r\n return Math.max(minimumDelay, millisToSleep);\r\n }\r\n}\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nconst DEFAULT_MANAGED_IDENTITY_MAX_RETRIES = 3; // referenced in unit test\r\nconst DEFAULT_MANAGED_IDENTITY_RETRY_DELAY_MS = 1000;\r\nconst DEFAULT_MANAGED_IDENTITY_HTTP_STATUS_CODES_TO_RETRY_ON = [\r\n msalCommon.HttpStatus.NOT_FOUND,\r\n msalCommon.HttpStatus.REQUEST_TIMEOUT,\r\n msalCommon.HttpStatus.TOO_MANY_REQUESTS,\r\n msalCommon.HttpStatus.SERVER_ERROR,\r\n msalCommon.HttpStatus.SERVICE_UNAVAILABLE,\r\n msalCommon.HttpStatus.GATEWAY_TIMEOUT,\r\n];\r\nclass DefaultManagedIdentityRetryPolicy {\r\n constructor() {\r\n this.linearRetryStrategy = new LinearRetryStrategy();\r\n }\r\n /*\r\n * this is defined here as a static variable despite being defined as a constant outside of the\r\n * class because it needs to be overridden in the unit tests so that the unit tests run faster\r\n */\r\n static get DEFAULT_MANAGED_IDENTITY_RETRY_DELAY_MS() {\r\n return DEFAULT_MANAGED_IDENTITY_RETRY_DELAY_MS;\r\n }\r\n async pauseForRetry(httpStatusCode, currentRetry, logger, retryAfterHeader) {\r\n if (DEFAULT_MANAGED_IDENTITY_HTTP_STATUS_CODES_TO_RETRY_ON.includes(httpStatusCode) &&\r\n currentRetry < DEFAULT_MANAGED_IDENTITY_MAX_RETRIES) {\r\n const retryAfterDelay = this.linearRetryStrategy.calculateDelay(retryAfterHeader, DefaultManagedIdentityRetryPolicy.DEFAULT_MANAGED_IDENTITY_RETRY_DELAY_MS);\r\n logger.verbose(`Retrying request in ${retryAfterDelay}ms (retry attempt: ${currentRetry + 1})`);\r\n // pause execution for the calculated delay\r\n await new Promise((resolve) => {\r\n // retryAfterHeader value of 0 evaluates to false, and DEFAULT_MANAGED_IDENTITY_RETRY_DELAY_MS will be used\r\n return setTimeout(resolve, retryAfterDelay);\r\n });\r\n return true;\r\n }\r\n // if the status code is not retriable or max retries have been reached, do not retry\r\n return false;\r\n }\r\n}\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nclass ManagedIdentityRequestParameters {\r\n constructor(httpMethod, endpoint, retryPolicy) {\r\n this.httpMethod = httpMethod;\r\n this._baseEndpoint = endpoint;\r\n this.headers = {};\r\n this.bodyParameters = {};\r\n this.queryParameters = {};\r\n this.retryPolicy =\r\n retryPolicy || new DefaultManagedIdentityRetryPolicy();\r\n }\r\n computeUri() {\r\n const parameters = new Map();\r\n if (this.queryParameters) {\r\n addExtraQueryParameters(parameters, this.queryParameters);\r\n }\r\n const queryParametersString = mapToQueryString(parameters);\r\n return UrlString.appendQueryString(this._baseEndpoint, queryParametersString);\r\n }\r\n computeParametersBodyString() {\r\n const parameters = new Map();\r\n if (this.bodyParameters) {\r\n addExtraQueryParameters(parameters, this.bodyParameters);\r\n }\r\n return mapToQueryString(parameters);\r\n }\r\n}\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n// MSI Constants. Docs for MSI are available here https://docs.microsoft.com/azure/app-service/overview-managed-identity\r\nconst APP_SERVICE_MSI_API_VERSION = \"2019-08-01\";\r\n/**\r\n * Azure App Service Managed Identity Source implementation.\r\n *\r\n * This class provides managed identity authentication for applications running in Azure App Service.\r\n * It uses the local metadata service endpoint available within App Service environments to obtain\r\n * access tokens without requiring explicit credentials.\r\n *\r\n * Original source of code: https://github.com/Azure/azure-sdk-for-net/blob/main/sdk/identity/Azure.Identity/src/AppServiceManagedIdentitySource.cs\r\n */\r\nclass AppService extends BaseManagedIdentitySource {\r\n /**\r\n * Creates a new instance of the AppService managed identity source.\r\n *\r\n * @param logger - Logger instance for diagnostic output\r\n * @param nodeStorage - Node.js storage implementation for caching\r\n * @param networkClient - Network client for making HTTP requests\r\n * @param cryptoProvider - Cryptographic operations provider\r\n * @param disableInternalRetries - Whether to disable internal retry logic\r\n * @param identityEndpoint - The App Service identity endpoint URL\r\n * @param identityHeader - The secret header value required for authentication\r\n */\r\n constructor(logger, nodeStorage, networkClient, cryptoProvider, disableInternalRetries, identityEndpoint, identityHeader) {\r\n super(logger, nodeStorage, networkClient, cryptoProvider, disableInternalRetries);\r\n this.identityEndpoint = identityEndpoint;\r\n this.identityHeader = identityHeader;\r\n }\r\n /**\r\n * Retrieves the required environment variables for App Service managed identity.\r\n *\r\n * App Service managed identity requires two environment variables:\r\n * - IDENTITY_ENDPOINT: The URL of the local metadata service\r\n * - IDENTITY_HEADER: A secret header value for authentication\r\n *\r\n * @returns An array containing [identityEndpoint, identityHeader] values from environment variables.\r\n * Either value may be undefined if the environment variable is not set.\r\n */\r\n static getEnvironmentVariables() {\r\n const identityEndpoint = process.env[ManagedIdentityEnvironmentVariableNames.IDENTITY_ENDPOINT];\r\n const identityHeader = process.env[ManagedIdentityEnvironmentVariableNames.IDENTITY_HEADER];\r\n return [identityEndpoint, identityHeader];\r\n }\r\n /**\r\n * Attempts to create an AppService managed identity source if the environment supports it.\r\n *\r\n * This method checks for the presence of required environment variables and validates\r\n * the identity endpoint URL. If the environment is not suitable for App Service managed\r\n * identity (missing environment variables or invalid endpoint), it returns null.\r\n *\r\n * @param logger - Logger instance for diagnostic output\r\n * @param nodeStorage - Node.js storage implementation for caching\r\n * @param networkClient - Network client for making HTTP requests\r\n * @param cryptoProvider - Cryptographic operations provider\r\n * @param disableInternalRetries - Whether to disable internal retry logic\r\n *\r\n * @returns A new AppService instance if the environment is suitable, null otherwise\r\n */\r\n static tryCreate(logger, nodeStorage, networkClient, cryptoProvider, disableInternalRetries) {\r\n const [identityEndpoint, identityHeader] = AppService.getEnvironmentVariables();\r\n // if either of the identity endpoint or identity header variables are undefined, this MSI provider is unavailable.\r\n if (!identityEndpoint || !identityHeader) {\r\n logger.info(`[Managed Identity] ${ManagedIdentitySourceNames.APP_SERVICE} managed identity is unavailable because one or both of the '${ManagedIdentityEnvironmentVariableNames.IDENTITY_HEADER}' and '${ManagedIdentityEnvironmentVariableNames.IDENTITY_ENDPOINT}' environment variables are not defined.`);\r\n return null;\r\n }\r\n const validatedIdentityEndpoint = AppService.getValidatedEnvVariableUrlString(ManagedIdentityEnvironmentVariableNames.IDENTITY_ENDPOINT, identityEndpoint, ManagedIdentitySourceNames.APP_SERVICE, logger);\r\n logger.info(`[Managed Identity] Environment variables validation passed for ${ManagedIdentitySourceNames.APP_SERVICE} managed identity. Endpoint URI: ${validatedIdentityEndpoint}. Creating ${ManagedIdentitySourceNames.APP_SERVICE} managed identity.`);\r\n return new AppService(logger, nodeStorage, networkClient, cryptoProvider, disableInternalRetries, identityEndpoint, identityHeader);\r\n }\r\n /**\r\n * Creates a managed identity token request for the App Service environment.\r\n *\r\n * This method constructs an HTTP GET request to the App Service identity endpoint\r\n * with the required headers, query parameters, and managed identity configuration.\r\n * The request includes the secret header for authentication and appropriate API version.\r\n *\r\n * @param resource - The target resource/scope for which to request an access token (e.g., \"https://graph.microsoft.com/.default\")\r\n * @param managedIdentityId - The managed identity configuration specifying whether to use system-assigned or user-assigned identity\r\n *\r\n * @returns A configured ManagedIdentityRequestParameters object ready for network execution\r\n */\r\n createRequest(resource, managedIdentityId) {\r\n const request = new ManagedIdentityRequestParameters(HttpMethod.GET, this.identityEndpoint);\r\n request.headers[ManagedIdentityHeaders.APP_SERVICE_SECRET_HEADER_NAME] =\r\n this.identityHeader;\r\n request.queryParameters[ManagedIdentityQueryParameters.API_VERSION] =\r\n APP_SERVICE_MSI_API_VERSION;\r\n request.queryParameters[ManagedIdentityQueryParameters.RESOURCE] =\r\n resource;\r\n if (managedIdentityId.idType !== ManagedIdentityIdType.SYSTEM_ASSIGNED) {\r\n request.queryParameters[this.getManagedIdentityUserAssignedIdQueryParameterKey(managedIdentityId.idType)] = managedIdentityId.id;\r\n }\r\n // bodyParameters calculated in BaseManagedIdentity.acquireTokenWithManagedIdentity\r\n return request;\r\n }\r\n}\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nconst ARC_API_VERSION = \"2019-11-01\";\r\nconst DEFAULT_AZURE_ARC_IDENTITY_ENDPOINT = \"http://127.0.0.1:40342/metadata/identity/oauth2/token\";\r\nconst HIMDS_EXECUTABLE_HELPER_STRING = \"N/A: himds executable exists\";\r\nconst SUPPORTED_AZURE_ARC_PLATFORMS = {\r\n win32: `${process.env[\"ProgramData\"]}\\\\AzureConnectedMachineAgent\\\\Tokens\\\\`,\r\n linux: \"/var/opt/azcmagent/tokens/\",\r\n};\r\nconst AZURE_ARC_FILE_DETECTION = {\r\n win32: `${process.env[\"ProgramFiles\"]}\\\\AzureConnectedMachineAgent\\\\himds.exe`,\r\n linux: \"/opt/azcmagent/bin/himds\",\r\n};\r\n/**\r\n * Azure Arc managed identity source implementation for acquiring tokens from Azure Arc-enabled servers.\r\n *\r\n * This class provides managed identity authentication for applications running on Azure Arc-enabled servers\r\n * by communicating with the local Hybrid Instance Metadata Service (HIMDS). It supports both environment\r\n * variable-based configuration and automatic detection through the HIMDS executable.\r\n *\r\n * Original source of code: https://github.com/Azure/azure-sdk-for-net/blob/main/sdk/identity/Azure.Identity/src/AzureArcManagedIdentitySource.cs\r\n */\r\nclass AzureArc extends BaseManagedIdentitySource {\r\n /**\r\n * Creates a new instance of the AzureArc managed identity source.\r\n *\r\n * @param logger - Logger instance for capturing telemetry and diagnostic information\r\n * @param nodeStorage - Storage implementation for caching tokens and metadata\r\n * @param networkClient - Network client for making HTTP requests to the identity endpoint\r\n * @param cryptoProvider - Cryptographic operations provider for token validation and encryption\r\n * @param disableInternalRetries - Flag to disable automatic retry logic for failed requests\r\n * @param identityEndpoint - The Azure Arc identity endpoint URL for token requests\r\n */\r\n constructor(logger, nodeStorage, networkClient, cryptoProvider, disableInternalRetries, identityEndpoint) {\r\n super(logger, nodeStorage, networkClient, cryptoProvider, disableInternalRetries);\r\n this.identityEndpoint = identityEndpoint;\r\n }\r\n /**\r\n * Retrieves and validates Azure Arc environment variables for managed identity configuration.\r\n *\r\n * This method checks for IDENTITY_ENDPOINT and IMDS_ENDPOINT environment variables.\r\n * If either is missing, it attempts to detect the Azure Arc environment by checking for\r\n * the HIMDS executable at platform-specific paths. On successful detection, it returns\r\n * the default identity endpoint and a helper string indicating file-based detection.\r\n *\r\n * @returns An array containing [identityEndpoint, imdsEndpoint] where both values are\r\n * strings if Azure Arc is available, or undefined if not available.\r\n */\r\n static getEnvironmentVariables() {\r\n let identityEndpoint = process.env[ManagedIdentityEnvironmentVariableNames.IDENTITY_ENDPOINT];\r\n let imdsEndpoint = process.env[ManagedIdentityEnvironmentVariableNames.IMDS_ENDPOINT];\r\n // if either of the identity or imds endpoints are undefined, check if the himds executable exists\r\n if (!identityEndpoint || !imdsEndpoint) {\r\n // get the expected Windows or Linux file path of the himds executable\r\n const fileDetectionPath = AZURE_ARC_FILE_DETECTION[process.platform];\r\n try {\r\n /*\r\n * check if the himds executable exists and its permissions allow it to be read\r\n * returns undefined if true, throws an error otherwise\r\n */\r\n fs.accessSync(fileDetectionPath, fs.constants.F_OK | fs.constants.R_OK);\r\n identityEndpoint = DEFAULT_AZURE_ARC_IDENTITY_ENDPOINT;\r\n imdsEndpoint = HIMDS_EXECUTABLE_HELPER_STRING;\r\n }\r\n catch (err) {\r\n /*\r\n * do nothing\r\n * accessSync returns undefined on success, and throws an error on failure\r\n */\r\n }\r\n }\r\n return [identityEndpoint, imdsEndpoint];\r\n }\r\n /**\r\n * Attempts to create an AzureArc managed identity source instance.\r\n *\r\n * Validates the Azure Arc environment by checking environment variables\r\n * and performing file-based detection. It ensures that only system-assigned managed identities\r\n * are supported for Azure Arc scenarios. The method performs comprehensive validation of\r\n * endpoint URLs and logs detailed information about the detection process.\r\n *\r\n * @param logger - Logger instance for capturing creation and validation steps\r\n * @param nodeStorage - Storage implementation for the managed identity source\r\n * @param networkClient - Network client for HTTP communication\r\n * @param cryptoProvider - Cryptographic operations provider\r\n * @param disableInternalRetries - Whether to disable automatic retry mechanisms\r\n * @param managedIdentityId - The managed identity configuration, must be system-assigned\r\n *\r\n * @returns AzureArc instance if the environment supports Azure Arc managed identity, null otherwise\r\n *\r\n * @throws {ManagedIdentityError} When a user-assigned managed identity is specified (not supported for Azure Arc)\r\n */\r\n static tryCreate(logger, nodeStorage, networkClient, cryptoProvider, disableInternalRetries, managedIdentityId) {\r\n const [identityEndpoint, imdsEndpoint] = AzureArc.getEnvironmentVariables();\r\n // if either of the identity or imds endpoints are undefined (even after himds file detection)\r\n if (!identityEndpoint || !imdsEndpoint) {\r\n logger.info(`[Managed Identity] ${ManagedIdentitySourceNames.AZURE_ARC} managed identity is unavailable through environment variables because one or both of '${ManagedIdentityEnvironmentVariableNames.IDENTITY_ENDPOINT}' and '${ManagedIdentityEnvironmentVariableNames.IMDS_ENDPOINT}' are not defined. ${ManagedIdentitySourceNames.AZURE_ARC} managed identity is also unavailable through file detection.`);\r\n return null;\r\n }\r\n // check if the imds endpoint is set to the default for file detection\r\n if (imdsEndpoint === HIMDS_EXECUTABLE_HELPER_STRING) {\r\n logger.info(`[Managed Identity] ${ManagedIdentitySourceNames.AZURE_ARC} managed identity is available through file detection. Defaulting to known ${ManagedIdentitySourceNames.AZURE_ARC} endpoint: ${DEFAULT_AZURE_ARC_IDENTITY_ENDPOINT}. Creating ${ManagedIdentitySourceNames.AZURE_ARC} managed identity.`);\r\n }\r\n else {\r\n // otherwise, both the identity and imds endpoints are defined without file detection; validate them\r\n const validatedIdentityEndpoint = AzureArc.getValidatedEnvVariableUrlString(ManagedIdentityEnvironmentVariableNames.IDENTITY_ENDPOINT, identityEndpoint, ManagedIdentitySourceNames.AZURE_ARC, logger);\r\n // remove trailing slash\r\n validatedIdentityEndpoint.endsWith(\"/\")\r\n ? validatedIdentityEndpoint.slice(0, -1)\r\n : validatedIdentityEndpoint;\r\n AzureArc.getValidatedEnvVariableUrlString(ManagedIdentityEnvironmentVariableNames.IMDS_ENDPOINT, imdsEndpoint, ManagedIdentitySourceNames.AZURE_ARC, logger);\r\n logger.info(`[Managed Identity] Environment variables validation passed for ${ManagedIdentitySourceNames.AZURE_ARC} managed identity. Endpoint URI: ${validatedIdentityEndpoint}. Creating ${ManagedIdentitySourceNames.AZURE_ARC} managed identity.`);\r\n }\r\n if (managedIdentityId.idType !== ManagedIdentityIdType.SYSTEM_ASSIGNED) {\r\n throw createManagedIdentityError(unableToCreateAzureArc);\r\n }\r\n return new AzureArc(logger, nodeStorage, networkClient, cryptoProvider, disableInternalRetries, identityEndpoint);\r\n }\r\n /**\r\n * Creates a properly formatted HTTP request for acquiring tokens from the Azure Arc identity endpoint.\r\n *\r\n * This method constructs a GET request to the Azure Arc HIMDS endpoint with the required metadata header\r\n * and query parameters. The endpoint URL is normalized to use 127.0.0.1 instead of localhost for\r\n * consistency. Additional body parameters are calculated by the base class during token acquisition.\r\n *\r\n * @param resource - The target resource/scope for which to request an access token (e.g., \"https://graph.microsoft.com/.default\")\r\n *\r\n * @returns A configured ManagedIdentityRequestParameters object ready for network execution\r\n */\r\n createRequest(resource) {\r\n const request = new ManagedIdentityRequestParameters(HttpMethod.GET, this.identityEndpoint.replace(\"localhost\", \"127.0.0.1\"));\r\n request.headers[ManagedIdentityHeaders.METADATA_HEADER_NAME] = \"true\";\r\n request.queryParameters[ManagedIdentityQueryParameters.API_VERSION] =\r\n ARC_API_VERSION;\r\n request.queryParameters[ManagedIdentityQueryParameters.RESOURCE] =\r\n resource;\r\n // bodyParameters calculated in BaseManagedIdentity.acquireTokenWithManagedIdentity\r\n return request;\r\n }\r\n /**\r\n * Processes the server response and handles Azure Arc-specific authentication challenges.\r\n *\r\n * This method implements the Azure Arc authentication flow which may require reading a secret file\r\n * for authorization. When the initial request returns HTTP 401 Unauthorized, it extracts the file\r\n * path from the WWW-Authenticate header, validates the file location and size, reads the secret,\r\n * and retries the request with Basic authentication. The method includes comprehensive security\r\n * validations to prevent path traversal and ensure file integrity.\r\n *\r\n * @param originalResponse - The initial HTTP response from the identity endpoint\r\n * @param networkClient - Network client for making the retry request if needed\r\n * @param networkRequest - The original request parameters (modified with auth header for retry)\r\n * @param networkRequestOptions - Additional options for network requests\r\n *\r\n * @returns A promise that resolves to the server token response with access token and metadata\r\n *\r\n * @throws {ManagedIdentityError} When:\r\n * - WWW-Authenticate header is missing or has unsupported format\r\n * - Platform is not supported (not Windows or Linux)\r\n * - Secret file has invalid extension (not .key)\r\n * - Secret file path doesn't match expected platform path\r\n * - Secret file cannot be read or is too large (>4096 bytes)\r\n * @throws {ClientAuthError} When network errors occur during retry request\r\n */\r\n async getServerTokenResponseAsync(originalResponse, networkClient, networkRequest, networkRequestOptions) {\r\n let retryResponse;\r\n if (originalResponse.status === HttpStatus.UNAUTHORIZED) {\r\n const wwwAuthHeader = originalResponse.headers[\"www-authenticate\"];\r\n if (!wwwAuthHeader) {\r\n throw createManagedIdentityError(wwwAuthenticateHeaderMissing);\r\n }\r\n if (!wwwAuthHeader.includes(\"Basic realm=\")) {\r\n throw createManagedIdentityError(wwwAuthenticateHeaderUnsupportedFormat);\r\n }\r\n const secretFilePath = wwwAuthHeader.split(\"Basic realm=\")[1];\r\n // throw an error if the managed identity application is not being run on Windows or Linux\r\n if (!SUPPORTED_AZURE_ARC_PLATFORMS.hasOwnProperty(process.platform)) {\r\n throw createManagedIdentityError(platformNotSupported);\r\n }\r\n // get the expected Windows or Linux file path\r\n const expectedSecretFilePath = SUPPORTED_AZURE_ARC_PLATFORMS[process.platform];\r\n // throw an error if the file in the file path is not a .key file\r\n const fileName = path.basename(secretFilePath);\r\n if (!fileName.endsWith(\".key\")) {\r\n throw createManagedIdentityError(invalidFileExtension);\r\n }\r\n /*\r\n * throw an error if the file path from the www-authenticate header does not match the\r\n * expected file path for the platform (Windows or Linux) the managed identity application\r\n * is running on\r\n */\r\n if (expectedSecretFilePath + fileName !== secretFilePath) {\r\n throw createManagedIdentityError(invalidFilePath);\r\n }\r\n let secretFileSize;\r\n // attempt to get the secret file's size, in bytes\r\n try {\r\n secretFileSize = await fs.statSync(secretFilePath).size;\r\n }\r\n catch (e) {\r\n throw createManagedIdentityError(unableToReadSecretFile);\r\n }\r\n // throw an error if the secret file's size is greater than 4096 bytes\r\n if (secretFileSize > AZURE_ARC_SECRET_FILE_MAX_SIZE_BYTES) {\r\n throw createManagedIdentityError(invalidSecret);\r\n }\r\n // attempt to read the contents of the secret file\r\n let secret;\r\n try {\r\n secret = fs.readFileSync(secretFilePath, EncodingTypes.UTF8);\r\n }\r\n catch (e) {\r\n throw createManagedIdentityError(unableToReadSecretFile);\r\n }\r\n const authHeaderValue = `Basic ${secret}`;\r\n this.logger.info(`[Managed Identity] Adding authorization header to the request.`);\r\n networkRequest.headers[ManagedIdentityHeaders.AUTHORIZATION_HEADER_NAME] = authHeaderValue;\r\n try {\r\n retryResponse =\r\n await networkClient.sendGetRequestAsync(networkRequest.computeUri(), networkRequestOptions);\r\n }\r\n catch (error) {\r\n if (error instanceof AuthError) {\r\n throw error;\r\n }\r\n else {\r\n throw createClientAuthError(networkError);\r\n }\r\n }\r\n }\r\n return this.getServerTokenResponse(retryResponse || originalResponse);\r\n }\r\n}\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * Azure Cloud Shell managed identity source implementation.\r\n *\r\n * This class handles authentication for applications running in Azure Cloud Shell environment.\r\n * Cloud Shell provides a browser-accessible shell for managing Azure resources and includes\r\n * a pre-configured managed identity for authentication.\r\n *\r\n * Original source of code: https://github.com/Azure/azure-sdk-for-net/blob/main/sdk/identity/Azure.Identity/src/CloudShellManagedIdentitySource.cs\r\n */\r\nclass CloudShell extends BaseManagedIdentitySource {\r\n /**\r\n * Creates a new CloudShell managed identity source instance.\r\n *\r\n * @param logger - Logger instance for diagnostic logging\r\n * @param nodeStorage - Node.js storage implementation for caching\r\n * @param networkClient - HTTP client for making requests to the managed identity endpoint\r\n * @param cryptoProvider - Cryptographic operations provider\r\n * @param disableInternalRetries - Whether to disable automatic retry logic for failed requests\r\n * @param msiEndpoint - The MSI endpoint URL obtained from environment variables\r\n */\r\n constructor(logger, nodeStorage, networkClient, cryptoProvider, disableInternalRetries, msiEndpoint) {\r\n super(logger, nodeStorage, networkClient, cryptoProvider, disableInternalRetries);\r\n this.msiEndpoint = msiEndpoint;\r\n }\r\n /**\r\n * Retrieves the required environment variables for Cloud Shell managed identity.\r\n *\r\n * Cloud Shell requires the MSI_ENDPOINT environment variable to be set, which\r\n * contains the URL of the managed identity service endpoint.\r\n *\r\n * @returns An array containing the MSI_ENDPOINT environment variable value (or undefined if not set)\r\n */\r\n static getEnvironmentVariables() {\r\n const msiEndpoint = process.env[ManagedIdentityEnvironmentVariableNames.MSI_ENDPOINT];\r\n return [msiEndpoint];\r\n }\r\n /**\r\n * Attempts to create a CloudShell managed identity source instance.\r\n *\r\n * This method validates that the required environment variables are present and\r\n * creates a CloudShell instance if the environment is properly configured.\r\n * Cloud Shell only supports system-assigned managed identities.\r\n *\r\n * @param logger - Logger instance for diagnostic logging\r\n * @param nodeStorage - Node.js storage implementation for caching\r\n * @param networkClient - HTTP client for making requests\r\n * @param cryptoProvider - Cryptographic operations provider\r\n * @param disableInternalRetries - Whether to disable automatic retry logic\r\n * @param managedIdentityId - The managed identity configuration (must be system-assigned)\r\n *\r\n * @returns A CloudShell instance if the environment is valid, null otherwise\r\n *\r\n * @throws {ManagedIdentityError} When a user-assigned managed identity is requested,\r\n * as Cloud Shell only supports system-assigned identities\r\n */\r\n static tryCreate(logger, nodeStorage, networkClient, cryptoProvider, disableInternalRetries, managedIdentityId) {\r\n const [msiEndpoint] = CloudShell.getEnvironmentVariables();\r\n // if the msi endpoint environment variable is undefined, this MSI provider is unavailable.\r\n if (!msiEndpoint) {\r\n logger.info(`[Managed Identity] ${ManagedIdentitySourceNames.CLOUD_SHELL} managed identity is unavailable because the '${ManagedIdentityEnvironmentVariableNames.MSI_ENDPOINT} environment variable is not defined.`);\r\n return null;\r\n }\r\n const validatedMsiEndpoint = CloudShell.getValidatedEnvVariableUrlString(ManagedIdentityEnvironmentVariableNames.MSI_ENDPOINT, msiEndpoint, ManagedIdentitySourceNames.CLOUD_SHELL, logger);\r\n logger.info(`[Managed Identity] Environment variable validation passed for ${ManagedIdentitySourceNames.CLOUD_SHELL} managed identity. Endpoint URI: ${validatedMsiEndpoint}. Creating ${ManagedIdentitySourceNames.CLOUD_SHELL} managed identity.`);\r\n if (managedIdentityId.idType !== ManagedIdentityIdType.SYSTEM_ASSIGNED) {\r\n throw createManagedIdentityError(unableToCreateCloudShell);\r\n }\r\n return new CloudShell(logger, nodeStorage, networkClient, cryptoProvider, disableInternalRetries, msiEndpoint);\r\n }\r\n /**\r\n * Creates an HTTP request to acquire an access token from the Cloud Shell managed identity endpoint.\r\n *\r\n * This method constructs a POST request to the MSI endpoint with the required headers and\r\n * body parameters for Cloud Shell authentication. The request includes the target resource\r\n * for which the access token is being requested.\r\n *\r\n * @param resource - The target resource/scope for which to request an access token (e.g., \"https://graph.microsoft.com/.default\")\r\n *\r\n * @returns A configured ManagedIdentityRequestParameters object ready for network execution\r\n */\r\n createRequest(resource) {\r\n const request = new ManagedIdentityRequestParameters(HttpMethod.POST, this.msiEndpoint);\r\n request.headers[ManagedIdentityHeaders.METADATA_HEADER_NAME] = \"true\";\r\n request.bodyParameters[ManagedIdentityQueryParameters.RESOURCE] =\r\n resource;\r\n return request;\r\n }\r\n}\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nclass ExponentialRetryStrategy {\r\n constructor(minExponentialBackoff, maxExponentialBackoff, exponentialDeltaBackoff) {\r\n this.minExponentialBackoff = minExponentialBackoff;\r\n this.maxExponentialBackoff = maxExponentialBackoff;\r\n this.exponentialDeltaBackoff = exponentialDeltaBackoff;\r\n }\r\n /**\r\n * Calculates the exponential delay based on the current retry attempt.\r\n *\r\n * @param {number} currentRetry - The current retry attempt number.\r\n * @returns {number} - The calculated exponential delay in milliseconds.\r\n *\r\n * The delay is calculated using the formula:\r\n * - If `currentRetry` is 0, it returns the minimum backoff time.\r\n * - Otherwise, it calculates the delay as the minimum of:\r\n * - `(2^(currentRetry - 1)) * deltaBackoff`\r\n * - `maxBackoff`\r\n *\r\n * This ensures that the delay increases exponentially with each retry attempt,\r\n * but does not exceed the maximum backoff time.\r\n */\r\n calculateDelay(currentRetry) {\r\n // Attempt 1\r\n if (currentRetry === 0) {\r\n return this.minExponentialBackoff;\r\n }\r\n // Attempt 2+\r\n const exponentialDelay = Math.min(Math.pow(2, currentRetry - 1) * this.exponentialDeltaBackoff, this.maxExponentialBackoff);\r\n return exponentialDelay;\r\n }\r\n}\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nconst HTTP_STATUS_400_CODES_FOR_EXPONENTIAL_STRATEGY = [\r\n msalCommon.HttpStatus.NOT_FOUND,\r\n msalCommon.HttpStatus.REQUEST_TIMEOUT,\r\n msalCommon.HttpStatus.GONE,\r\n msalCommon.HttpStatus.TOO_MANY_REQUESTS,\r\n];\r\nconst EXPONENTIAL_STRATEGY_NUM_RETRIES = 3;\r\nconst LINEAR_STRATEGY_NUM_RETRIES = 7;\r\nconst MIN_EXPONENTIAL_BACKOFF_MS = 1000;\r\nconst MAX_EXPONENTIAL_BACKOFF_MS = 4000;\r\nconst EXPONENTIAL_DELTA_BACKOFF_MS = 2000;\r\nconst HTTP_STATUS_GONE_RETRY_AFTER_MS = 10 * 1000; // 10 seconds\r\nclass ImdsRetryPolicy {\r\n constructor() {\r\n this.exponentialRetryStrategy = new ExponentialRetryStrategy(ImdsRetryPolicy.MIN_EXPONENTIAL_BACKOFF_MS, ImdsRetryPolicy.MAX_EXPONENTIAL_BACKOFF_MS, ImdsRetryPolicy.EXPONENTIAL_DELTA_BACKOFF_MS);\r\n }\r\n /*\r\n * these are defined here as static variables despite being defined as constants outside of the\r\n * class because they need to be overridden in the unit tests so that the unit tests run faster\r\n */\r\n static get MIN_EXPONENTIAL_BACKOFF_MS() {\r\n return MIN_EXPONENTIAL_BACKOFF_MS;\r\n }\r\n static get MAX_EXPONENTIAL_BACKOFF_MS() {\r\n return MAX_EXPONENTIAL_BACKOFF_MS;\r\n }\r\n static get EXPONENTIAL_DELTA_BACKOFF_MS() {\r\n return EXPONENTIAL_DELTA_BACKOFF_MS;\r\n }\r\n static get HTTP_STATUS_GONE_RETRY_AFTER_MS() {\r\n return HTTP_STATUS_GONE_RETRY_AFTER_MS;\r\n }\r\n set isNewRequest(value) {\r\n this._isNewRequest = value;\r\n }\r\n /**\r\n * Pauses execution for a calculated delay before retrying a request.\r\n *\r\n * @param httpStatusCode - The HTTP status code of the response.\r\n * @param currentRetry - The current retry attempt number.\r\n * @param retryAfterHeader - The value of the \"retry-after\" header from the response.\r\n * @returns A promise that resolves to a boolean indicating whether a retry should be attempted.\r\n */\r\n async pauseForRetry(httpStatusCode, currentRetry, logger) {\r\n if (this._isNewRequest) {\r\n this._isNewRequest = false;\r\n // calculate the maxRetries based on the status code, once per request\r\n this.maxRetries =\r\n httpStatusCode === msalCommon.HttpStatus.GONE\r\n ? LINEAR_STRATEGY_NUM_RETRIES\r\n : EXPONENTIAL_STRATEGY_NUM_RETRIES;\r\n }\r\n /**\r\n * (status code is one of the retriable 400 status code\r\n * or\r\n * status code is >= 500 and <= 599)\r\n * and\r\n * current count of retries is less than the max number of retries\r\n */\r\n if ((HTTP_STATUS_400_CODES_FOR_EXPONENTIAL_STRATEGY.includes(httpStatusCode) ||\r\n (httpStatusCode >= msalCommon.HttpStatus.SERVER_ERROR_RANGE_START &&\r\n httpStatusCode <= msalCommon.HttpStatus.SERVER_ERROR_RANGE_END &&\r\n currentRetry < this.maxRetries)) &&\r\n currentRetry < this.maxRetries) {\r\n const retryAfterDelay = httpStatusCode === msalCommon.HttpStatus.GONE\r\n ? ImdsRetryPolicy.HTTP_STATUS_GONE_RETRY_AFTER_MS\r\n : this.exponentialRetryStrategy.calculateDelay(currentRetry);\r\n logger.verbose(`Retrying request in ${retryAfterDelay}ms (retry attempt: ${currentRetry + 1})`);\r\n // pause execution for the calculated delay\r\n await new Promise((resolve) => {\r\n return setTimeout(resolve, retryAfterDelay);\r\n });\r\n return true;\r\n }\r\n // if the status code is not retriable or max retries have been reached, do not retry\r\n return false;\r\n }\r\n}\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n// Documentation for IMDS is available at https://docs.microsoft.com/azure/active-directory/managed-identities-azure-resources/how-to-use-vm-token#get-a-token-using-http\r\nconst IMDS_TOKEN_PATH = \"/metadata/identity/oauth2/token\";\r\nconst DEFAULT_IMDS_ENDPOINT = `http://169.254.169.254${IMDS_TOKEN_PATH}`;\r\nconst IMDS_API_VERSION = \"2018-02-01\";\r\n/**\r\n * Managed Identity source implementation for Azure Instance Metadata Service (IMDS).\r\n *\r\n * IMDS is available on Azure Virtual Machines and Virtual Machine Scale Sets and provides\r\n * a REST endpoint to obtain OAuth tokens for managed identities. This implementation\r\n * handles both system-assigned and user-assigned managed identities.\r\n *\r\n * Original source of code: https://github.com/Azure/azure-sdk-for-net/blob/main/sdk/identity/Azure.Identity/src/ImdsManagedIdentitySource.cs\r\n */\r\nclass Imds extends BaseManagedIdentitySource {\r\n /**\r\n * Constructs an Imds instance with the specified configuration.\r\n *\r\n * @param logger - Logger instance for recording debug information and errors\r\n * @param nodeStorage - NodeStorage instance used for token caching operations\r\n * @param networkClient - Network client implementation for making HTTP requests to IMDS\r\n * @param cryptoProvider - CryptoProvider for generating correlation IDs and other cryptographic operations\r\n * @param disableInternalRetries - When true, disables the built-in retry logic for IMDS requests\r\n * @param identityEndpoint - The complete IMDS endpoint URL including the token path\r\n */\r\n constructor(logger, nodeStorage, networkClient, cryptoProvider, disableInternalRetries, identityEndpoint) {\r\n super(logger, nodeStorage, networkClient, cryptoProvider, disableInternalRetries);\r\n this.identityEndpoint = identityEndpoint;\r\n }\r\n /**\r\n * Creates an Imds instance with the appropriate endpoint configuration.\r\n *\r\n * This method checks for the presence of the AZURE_POD_IDENTITY_AUTHORITY_HOST environment\r\n * variable, which is used in Azure Kubernetes Service (AKS) environments with Azure AD\r\n * Pod Identity. If found, it uses that endpoint; otherwise, it falls back to the standard\r\n * IMDS endpoint (169.254.169.254).\r\n *\r\n * @param logger - Logger instance for recording endpoint discovery and validation\r\n * @param nodeStorage - NodeStorage instance for token caching\r\n * @param networkClient - Network client for HTTP requests\r\n * @param cryptoProvider - CryptoProvider for cryptographic operations\r\n * @param disableInternalRetries - Whether to disable built-in retry logic\r\n *\r\n * @returns A configured Imds instance ready to make token requests\r\n */\r\n static tryCreate(logger, nodeStorage, networkClient, cryptoProvider, disableInternalRetries) {\r\n let validatedIdentityEndpoint;\r\n if (process.env[ManagedIdentityEnvironmentVariableNames\r\n .AZURE_POD_IDENTITY_AUTHORITY_HOST]) {\r\n logger.info(`[Managed Identity] Environment variable ${ManagedIdentityEnvironmentVariableNames.AZURE_POD_IDENTITY_AUTHORITY_HOST} for ${ManagedIdentitySourceNames.IMDS} returned endpoint: ${process.env[ManagedIdentityEnvironmentVariableNames\r\n .AZURE_POD_IDENTITY_AUTHORITY_HOST]}`);\r\n validatedIdentityEndpoint = Imds.getValidatedEnvVariableUrlString(ManagedIdentityEnvironmentVariableNames.AZURE_POD_IDENTITY_AUTHORITY_HOST, `${process.env[ManagedIdentityEnvironmentVariableNames\r\n .AZURE_POD_IDENTITY_AUTHORITY_HOST]}${IMDS_TOKEN_PATH}`, ManagedIdentitySourceNames.IMDS, logger);\r\n }\r\n else {\r\n logger.info(`[Managed Identity] Unable to find ${ManagedIdentityEnvironmentVariableNames.AZURE_POD_IDENTITY_AUTHORITY_HOST} environment variable for ${ManagedIdentitySourceNames.IMDS}, using the default endpoint.`);\r\n validatedIdentityEndpoint = DEFAULT_IMDS_ENDPOINT;\r\n }\r\n return new Imds(logger, nodeStorage, networkClient, cryptoProvider, disableInternalRetries, validatedIdentityEndpoint);\r\n }\r\n /**\r\n * Creates a properly configured HTTP request for acquiring an access token from IMDS.\r\n *\r\n * This method builds a complete request object with all necessary headers, query parameters,\r\n * and retry policies required by the Azure Instance Metadata Service.\r\n *\r\n * Key request components:\r\n * - HTTP GET method to the IMDS token endpoint\r\n * - Metadata header set to \"true\" (required by IMDS)\r\n * - API version parameter (currently \"2018-02-01\")\r\n * - Resource parameter specifying the target audience\r\n * - Identity-specific parameters for user-assigned managed identities\r\n * - IMDS-specific retry policy\r\n *\r\n * @param resource - The target resource/scope for which to request an access token (e.g., \"https://graph.microsoft.com/.default\")\r\n * @param managedIdentityId - The managed identity configuration specifying whether to use system-assigned or user-assigned identity\r\n *\r\n * @returns A configured ManagedIdentityRequestParameters object ready for network execution\r\n */\r\n createRequest(resource, managedIdentityId) {\r\n const request = new ManagedIdentityRequestParameters(HttpMethod.GET, this.identityEndpoint);\r\n request.headers[ManagedIdentityHeaders.METADATA_HEADER_NAME] = \"true\";\r\n request.queryParameters[ManagedIdentityQueryParameters.API_VERSION] =\r\n IMDS_API_VERSION;\r\n request.queryParameters[ManagedIdentityQueryParameters.RESOURCE] =\r\n resource;\r\n if (managedIdentityId.idType !== ManagedIdentityIdType.SYSTEM_ASSIGNED) {\r\n request.queryParameters[this.getManagedIdentityUserAssignedIdQueryParameterKey(managedIdentityId.idType, true // indicates source is IMDS\r\n )] = managedIdentityId.id;\r\n }\r\n // The bodyParameters are calculated in BaseManagedIdentity.acquireTokenWithManagedIdentity.\r\n request.retryPolicy = new ImdsRetryPolicy();\r\n return request;\r\n }\r\n}\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nconst SERVICE_FABRIC_MSI_API_VERSION = \"2019-07-01-preview\";\r\n/**\r\n * Original source of code: https://github.com/Azure/azure-sdk-for-net/blob/main/sdk/identity/Azure.Identity/src/ServiceFabricManagedIdentitySource.cs\r\n */\r\nclass ServiceFabric extends BaseManagedIdentitySource {\r\n /**\r\n * Constructs a new ServiceFabric managed identity source for acquiring tokens from Azure Service Fabric clusters.\r\n *\r\n * Service Fabric managed identity allows applications running in Service Fabric clusters to authenticate\r\n * without storing credentials in code. This source handles token acquisition using the Service Fabric\r\n * Managed Identity Token Service (MITS).\r\n *\r\n * @param logger - Logger instance for logging authentication events and debugging information\r\n * @param nodeStorage - NodeStorage instance for caching tokens and other authentication artifacts\r\n * @param networkClient - Network client for making HTTP requests to the Service Fabric identity endpoint\r\n * @param cryptoProvider - Crypto provider for cryptographic operations like token validation\r\n * @param disableInternalRetries - Whether to disable internal retry logic for failed requests\r\n * @param identityEndpoint - The Service Fabric managed identity endpoint URL\r\n * @param identityHeader - The Service Fabric managed identity secret header value\r\n */\r\n constructor(logger, nodeStorage, networkClient, cryptoProvider, disableInternalRetries, identityEndpoint, identityHeader) {\r\n super(logger, nodeStorage, networkClient, cryptoProvider, disableInternalRetries);\r\n this.identityEndpoint = identityEndpoint;\r\n this.identityHeader = identityHeader;\r\n }\r\n /**\r\n * Retrieves the environment variables required for Service Fabric managed identity authentication.\r\n *\r\n * Service Fabric managed identity requires three specific environment variables to be set by the\r\n * Service Fabric runtime:\r\n * - IDENTITY_ENDPOINT: The endpoint URL for the Managed Identity Token Service (MITS)\r\n * - IDENTITY_HEADER: A secret value used for authentication with the MITS\r\n * - IDENTITY_SERVER_THUMBPRINT: The thumbprint of the MITS server certificate for secure communication\r\n *\r\n * @returns An array containing the identity endpoint, identity header, and identity server thumbprint values.\r\n * Elements will be undefined if the corresponding environment variables are not set.\r\n */\r\n static getEnvironmentVariables() {\r\n const identityEndpoint = process.env[ManagedIdentityEnvironmentVariableNames.IDENTITY_ENDPOINT];\r\n const identityHeader = process.env[ManagedIdentityEnvironmentVariableNames.IDENTITY_HEADER];\r\n const identityServerThumbprint = process.env[ManagedIdentityEnvironmentVariableNames\r\n .IDENTITY_SERVER_THUMBPRINT];\r\n return [identityEndpoint, identityHeader, identityServerThumbprint];\r\n }\r\n /**\r\n * Attempts to create a ServiceFabric managed identity source if the runtime environment supports it.\r\n *\r\n * Checks for the presence of all required Service Fabric environment variables\r\n * and validates the endpoint URL format. It will only create a ServiceFabric instance if the application\r\n * is running in a properly configured Service Fabric cluster with managed identity enabled.\r\n *\r\n * Note: User-assigned managed identities must be configured at the cluster level, not at runtime.\r\n * This method will log a warning if a user-assigned identity is requested.\r\n *\r\n * @param logger - Logger instance for logging creation events and validation results\r\n * @param nodeStorage - NodeStorage instance for caching tokens and authentication artifacts\r\n * @param networkClient - Network client for making HTTP requests to the identity endpoint\r\n * @param cryptoProvider - Crypto provider for cryptographic operations\r\n * @param disableInternalRetries - Whether to disable internal retry logic for failed requests\r\n * @param managedIdentityId - Managed identity identifier specifying system-assigned or user-assigned identity\r\n *\r\n * @returns A ServiceFabric instance if all environment variables are valid and present, otherwise null\r\n */\r\n static tryCreate(logger, nodeStorage, networkClient, cryptoProvider, disableInternalRetries, managedIdentityId) {\r\n const [identityEndpoint, identityHeader, identityServerThumbprint] = ServiceFabric.getEnvironmentVariables();\r\n if (!identityEndpoint || !identityHeader || !identityServerThumbprint) {\r\n logger.info(`[Managed Identity] ${ManagedIdentitySourceNames.SERVICE_FABRIC} managed identity is unavailable because one or all of the '${ManagedIdentityEnvironmentVariableNames.IDENTITY_HEADER}', '${ManagedIdentityEnvironmentVariableNames.IDENTITY_ENDPOINT}' or '${ManagedIdentityEnvironmentVariableNames.IDENTITY_SERVER_THUMBPRINT}' environment variables are not defined.`);\r\n return null;\r\n }\r\n const validatedIdentityEndpoint = ServiceFabric.getValidatedEnvVariableUrlString(ManagedIdentityEnvironmentVariableNames.IDENTITY_ENDPOINT, identityEndpoint, ManagedIdentitySourceNames.SERVICE_FABRIC, logger);\r\n logger.info(`[Managed Identity] Environment variables validation passed for ${ManagedIdentitySourceNames.SERVICE_FABRIC} managed identity. Endpoint URI: ${validatedIdentityEndpoint}. Creating ${ManagedIdentitySourceNames.SERVICE_FABRIC} managed identity.`);\r\n if (managedIdentityId.idType !== ManagedIdentityIdType.SYSTEM_ASSIGNED) {\r\n logger.warning(`[Managed Identity] ${ManagedIdentitySourceNames.SERVICE_FABRIC} user assigned managed identity is configured in the cluster, not during runtime. See also: https://learn.microsoft.com/en-us/azure/service-fabric/configure-existing-cluster-enable-managed-identity-token-service.`);\r\n }\r\n return new ServiceFabric(logger, nodeStorage, networkClient, cryptoProvider, disableInternalRetries, identityEndpoint, identityHeader);\r\n }\r\n /**\r\n * Creates HTTP request parameters for acquiring an access token from the Service Fabric Managed Identity Token Service (MITS).\r\n *\r\n * This method constructs a properly formatted HTTP GET request that includes:\r\n * - The secret header for authentication with MITS\r\n * - API version parameter for the Service Fabric MSI endpoint\r\n * - Resource parameter specifying the target Azure service\r\n * - Optional identity parameters for user-assigned managed identities\r\n *\r\n * The request follows the Service Fabric managed identity protocol and uses the 2019-07-01-preview API version.\r\n * For user-assigned identities, the appropriate query parameter (client_id, object_id, or resource_id) is added\r\n * based on the identity type.\r\n *\r\n * @param resource - The Azure resource URI for which the access token is requested (e.g., \"https://vault.azure.net/\")\r\n * @param managedIdentityId - The managed identity configuration specifying system-assigned or user-assigned identity details\r\n *\r\n * @returns A configured ManagedIdentityRequestParameters object ready for network execution\r\n */\r\n createRequest(resource, managedIdentityId) {\r\n const request = new ManagedIdentityRequestParameters(HttpMethod.GET, this.identityEndpoint);\r\n request.headers[ManagedIdentityHeaders.ML_AND_SF_SECRET_HEADER_NAME] =\r\n this.identityHeader;\r\n request.queryParameters[ManagedIdentityQueryParameters.API_VERSION] =\r\n SERVICE_FABRIC_MSI_API_VERSION;\r\n request.queryParameters[ManagedIdentityQueryParameters.RESOURCE] =\r\n resource;\r\n if (managedIdentityId.idType !== ManagedIdentityIdType.SYSTEM_ASSIGNED) {\r\n request.queryParameters[this.getManagedIdentityUserAssignedIdQueryParameterKey(managedIdentityId.idType)] = managedIdentityId.id;\r\n }\r\n // bodyParameters calculated in BaseManagedIdentity.acquireTokenWithManagedIdentity\r\n return request;\r\n }\r\n}\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nconst MACHINE_LEARNING_MSI_API_VERSION = \"2017-09-01\";\r\nconst MANAGED_IDENTITY_MACHINE_LEARNING_UNSUPPORTED_ID_TYPE_ERROR = `Only client id is supported for user-assigned managed identity in ${ManagedIdentitySourceNames.MACHINE_LEARNING}.`; // referenced in unit test\r\n/**\r\n * Machine Learning Managed Identity Source implementation for Azure Machine Learning environments.\r\n *\r\n * This class handles managed identity authentication specifically for Azure Machine Learning services.\r\n * It supports both system-assigned and user-assigned managed identities, using the MSI_ENDPOINT\r\n * and MSI_SECRET environment variables that are automatically provided in Azure ML environments.\r\n */\r\nclass MachineLearning extends BaseManagedIdentitySource {\r\n /**\r\n * Creates a new MachineLearning managed identity source instance.\r\n *\r\n * @param logger - Logger instance for diagnostic information\r\n * @param nodeStorage - Node storage implementation for caching\r\n * @param networkClient - Network client for making HTTP requests\r\n * @param cryptoProvider - Cryptographic operations provider\r\n * @param disableInternalRetries - Whether to disable automatic request retries\r\n * @param msiEndpoint - The MSI endpoint URL from environment variables\r\n * @param secret - The MSI secret from environment variables\r\n */\r\n constructor(logger, nodeStorage, networkClient, cryptoProvider, disableInternalRetries, msiEndpoint, secret) {\r\n super(logger, nodeStorage, networkClient, cryptoProvider, disableInternalRetries);\r\n this.msiEndpoint = msiEndpoint;\r\n this.secret = secret;\r\n }\r\n /**\r\n * Retrieves the required environment variables for Azure Machine Learning managed identity.\r\n *\r\n * This method checks for the presence of MSI_ENDPOINT and MSI_SECRET environment variables\r\n * that are automatically set by the Azure Machine Learning platform when managed identity\r\n * is enabled for the compute instance or cluster.\r\n *\r\n * @returns An array containing [msiEndpoint, secret] where either value may be undefined\r\n * if the corresponding environment variable is not set\r\n */\r\n static getEnvironmentVariables() {\r\n const msiEndpoint = process.env[ManagedIdentityEnvironmentVariableNames.MSI_ENDPOINT];\r\n const secret = process.env[ManagedIdentityEnvironmentVariableNames.MSI_SECRET];\r\n return [msiEndpoint, secret];\r\n }\r\n /**\r\n * Attempts to create a MachineLearning managed identity source.\r\n *\r\n * This method validates the Azure Machine Learning environment by checking for the required\r\n * MSI_ENDPOINT and MSI_SECRET environment variables. If both are present and valid,\r\n * it creates and returns a MachineLearning instance. If either is missing or invalid,\r\n * it returns null, indicating that this managed identity source is not available\r\n * in the current environment.\r\n *\r\n * @param logger - Logger instance for diagnostic information\r\n * @param nodeStorage - Node storage implementation for caching\r\n * @param networkClient - Network client for making HTTP requests\r\n * @param cryptoProvider - Cryptographic operations provider\r\n * @param disableInternalRetries - Whether to disable automatic request retries\r\n *\r\n * @returns A new MachineLearning instance if the environment is valid, null otherwise\r\n */\r\n static tryCreate(logger, nodeStorage, networkClient, cryptoProvider, disableInternalRetries) {\r\n const [msiEndpoint, secret] = MachineLearning.getEnvironmentVariables();\r\n // if either of the MSI endpoint or MSI secret variables are undefined, this MSI provider is unavailable.\r\n if (!msiEndpoint || !secret) {\r\n logger.info(`[Managed Identity] ${ManagedIdentitySourceNames.MACHINE_LEARNING} managed identity is unavailable because one or both of the '${ManagedIdentityEnvironmentVariableNames.MSI_ENDPOINT}' and '${ManagedIdentityEnvironmentVariableNames.MSI_SECRET}' environment variables are not defined.`);\r\n return null;\r\n }\r\n const validatedMsiEndpoint = MachineLearning.getValidatedEnvVariableUrlString(ManagedIdentityEnvironmentVariableNames.MSI_ENDPOINT, msiEndpoint, ManagedIdentitySourceNames.MACHINE_LEARNING, logger);\r\n logger.info(`[Managed Identity] Environment variables validation passed for ${ManagedIdentitySourceNames.MACHINE_LEARNING} managed identity. Endpoint URI: ${validatedMsiEndpoint}. Creating ${ManagedIdentitySourceNames.MACHINE_LEARNING} managed identity.`);\r\n return new MachineLearning(logger, nodeStorage, networkClient, cryptoProvider, disableInternalRetries, msiEndpoint, secret);\r\n }\r\n /**\r\n * Creates a managed identity token request for Azure Machine Learning environments.\r\n *\r\n * This method constructs the HTTP request parameters needed to acquire an access token\r\n * from the Azure Machine Learning managed identity endpoint. It handles both system-assigned\r\n * and user-assigned managed identities with specific logic for each type:\r\n *\r\n * - System-assigned: Uses the DEFAULT_IDENTITY_CLIENT_ID environment variable\r\n * - User-assigned: Only supports client ID-based identification (not object ID or resource ID)\r\n *\r\n * The request uses the 2017-09-01 API version and includes the required secret header\r\n * for authentication with the MSI endpoint.\r\n *\r\n * @param resource - The target resource/scope for which to request an access token (e.g., \"https://graph.microsoft.com/.default\")\r\n * @param managedIdentityId - The managed identity configuration specifying whether to use system-assigned or user-assigned identity\r\n *\r\n * @returns A configured ManagedIdentityRequestParameters object ready for network execution\r\n *\r\n * @throws Error if an unsupported managed identity ID type is specified (only client ID is supported for user-assigned)\r\n */\r\n createRequest(resource, managedIdentityId) {\r\n const request = new ManagedIdentityRequestParameters(HttpMethod.GET, this.msiEndpoint);\r\n request.headers[ManagedIdentityHeaders.METADATA_HEADER_NAME] = \"true\";\r\n request.headers[ManagedIdentityHeaders.ML_AND_SF_SECRET_HEADER_NAME] =\r\n this.secret;\r\n request.queryParameters[ManagedIdentityQueryParameters.API_VERSION] =\r\n MACHINE_LEARNING_MSI_API_VERSION;\r\n request.queryParameters[ManagedIdentityQueryParameters.RESOURCE] =\r\n resource;\r\n if (managedIdentityId.idType === ManagedIdentityIdType.SYSTEM_ASSIGNED) {\r\n request.queryParameters[ManagedIdentityUserAssignedIdQueryParameterNames.MANAGED_IDENTITY_CLIENT_ID_2017] = process.env[ManagedIdentityEnvironmentVariableNames\r\n .DEFAULT_IDENTITY_CLIENT_ID]; // this environment variable is always set in an Azure Machine Learning source\r\n }\r\n else if (managedIdentityId.idType ===\r\n ManagedIdentityIdType.USER_ASSIGNED_CLIENT_ID) {\r\n request.queryParameters[this.getManagedIdentityUserAssignedIdQueryParameterKey(managedIdentityId.idType, false, // isIMDS\r\n true // uses2017API\r\n )] = managedIdentityId.id;\r\n }\r\n else {\r\n throw new Error(MANAGED_IDENTITY_MACHINE_LEARNING_UNSUPPORTED_ID_TYPE_ERROR);\r\n }\r\n // bodyParameters calculated in BaseManagedIdentity.acquireTokenWithManagedIdentity\r\n return request;\r\n }\r\n}\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/*\r\n * Class to initialize a managed identity and identify the service.\r\n * Original source of code: https://github.com/Azure/azure-sdk-for-net/blob/main/sdk/identity/Azure.Identity/src/ManagedIdentityClient.cs\r\n */\r\nclass ManagedIdentityClient {\r\n constructor(logger, nodeStorage, networkClient, cryptoProvider, disableInternalRetries) {\r\n this.logger = logger;\r\n this.nodeStorage = nodeStorage;\r\n this.networkClient = networkClient;\r\n this.cryptoProvider = cryptoProvider;\r\n this.disableInternalRetries = disableInternalRetries;\r\n }\r\n async sendManagedIdentityTokenRequest(managedIdentityRequest, managedIdentityId, fakeAuthority, refreshAccessToken) {\r\n if (!ManagedIdentityClient.identitySource) {\r\n ManagedIdentityClient.identitySource =\r\n this.selectManagedIdentitySource(this.logger, this.nodeStorage, this.networkClient, this.cryptoProvider, this.disableInternalRetries, managedIdentityId);\r\n }\r\n return ManagedIdentityClient.identitySource.acquireTokenWithManagedIdentity(managedIdentityRequest, managedIdentityId, fakeAuthority, refreshAccessToken);\r\n }\r\n allEnvironmentVariablesAreDefined(environmentVariables) {\r\n return Object.values(environmentVariables).every((environmentVariable) => {\r\n return environmentVariable !== undefined;\r\n });\r\n }\r\n /**\r\n * Determine the Managed Identity Source based on available environment variables. This API is consumed by ManagedIdentityApplication's getManagedIdentitySource.\r\n * @returns ManagedIdentitySourceNames - The Managed Identity source's name\r\n */\r\n getManagedIdentitySource() {\r\n ManagedIdentityClient.sourceName =\r\n this.allEnvironmentVariablesAreDefined(ServiceFabric.getEnvironmentVariables())\r\n ? ManagedIdentitySourceNames.SERVICE_FABRIC\r\n : this.allEnvironmentVariablesAreDefined(AppService.getEnvironmentVariables())\r\n ? ManagedIdentitySourceNames.APP_SERVICE\r\n : this.allEnvironmentVariablesAreDefined(MachineLearning.getEnvironmentVariables())\r\n ? ManagedIdentitySourceNames.MACHINE_LEARNING\r\n : this.allEnvironmentVariablesAreDefined(CloudShell.getEnvironmentVariables())\r\n ? ManagedIdentitySourceNames.CLOUD_SHELL\r\n : this.allEnvironmentVariablesAreDefined(AzureArc.getEnvironmentVariables())\r\n ? ManagedIdentitySourceNames.AZURE_ARC\r\n : ManagedIdentitySourceNames.DEFAULT_TO_IMDS;\r\n return ManagedIdentityClient.sourceName;\r\n }\r\n /**\r\n * Tries to create a managed identity source for all sources\r\n * @returns the managed identity Source\r\n */\r\n selectManagedIdentitySource(logger, nodeStorage, networkClient, cryptoProvider, disableInternalRetries, managedIdentityId) {\r\n const source = ServiceFabric.tryCreate(logger, nodeStorage, networkClient, cryptoProvider, disableInternalRetries, managedIdentityId) ||\r\n AppService.tryCreate(logger, nodeStorage, networkClient, cryptoProvider, disableInternalRetries) ||\r\n MachineLearning.tryCreate(logger, nodeStorage, networkClient, cryptoProvider, disableInternalRetries) ||\r\n CloudShell.tryCreate(logger, nodeStorage, networkClient, cryptoProvider, disableInternalRetries, managedIdentityId) ||\r\n AzureArc.tryCreate(logger, nodeStorage, networkClient, cryptoProvider, disableInternalRetries, managedIdentityId) ||\r\n Imds.tryCreate(logger, nodeStorage, networkClient, cryptoProvider, disableInternalRetries);\r\n if (!source) {\r\n throw createManagedIdentityError(unableToCreateSource);\r\n }\r\n return source;\r\n }\r\n}\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nconst SOURCES_THAT_SUPPORT_TOKEN_REVOCATION = [ManagedIdentitySourceNames.SERVICE_FABRIC];\r\n/**\r\n * Class to initialize a managed identity and identify the service\r\n * @public\r\n */\r\nclass ManagedIdentityApplication {\r\n constructor(configuration) {\r\n // undefined config means the managed identity is system-assigned\r\n this.config = buildManagedIdentityConfiguration(configuration || {});\r\n this.logger = new Logger(this.config.system.loggerOptions, name, version);\r\n const fakeStatusAuthorityOptions = {\r\n canonicalAuthority: Constants$1.DEFAULT_AUTHORITY,\r\n };\r\n if (!ManagedIdentityApplication.nodeStorage) {\r\n ManagedIdentityApplication.nodeStorage = new NodeStorage(this.logger, this.config.managedIdentityId.id, DEFAULT_CRYPTO_IMPLEMENTATION, fakeStatusAuthorityOptions);\r\n }\r\n this.networkClient = this.config.system.networkClient;\r\n this.cryptoProvider = new CryptoProvider();\r\n const fakeAuthorityOptions = {\r\n protocolMode: ProtocolMode.AAD,\r\n knownAuthorities: [DEFAULT_AUTHORITY_FOR_MANAGED_IDENTITY],\r\n cloudDiscoveryMetadata: \"\",\r\n authorityMetadata: \"\",\r\n };\r\n this.fakeAuthority = new Authority(DEFAULT_AUTHORITY_FOR_MANAGED_IDENTITY, this.networkClient, ManagedIdentityApplication.nodeStorage, fakeAuthorityOptions, this.logger, this.cryptoProvider.createNewGuid(), // correlationID\r\n undefined, true);\r\n this.fakeClientCredentialClient = new ClientCredentialClient({\r\n authOptions: {\r\n clientId: this.config.managedIdentityId.id,\r\n authority: this.fakeAuthority,\r\n },\r\n });\r\n this.managedIdentityClient = new ManagedIdentityClient(this.logger, ManagedIdentityApplication.nodeStorage, this.networkClient, this.cryptoProvider, this.config.disableInternalRetries);\r\n this.hashUtils = new HashUtils();\r\n }\r\n /**\r\n * Acquire an access token from the cache or the managed identity\r\n * @param managedIdentityRequest - the ManagedIdentityRequestParams object passed in by the developer\r\n * @returns the access token\r\n */\r\n async acquireToken(managedIdentityRequestParams) {\r\n if (!managedIdentityRequestParams.resource) {\r\n throw createClientConfigurationError(urlEmptyError);\r\n }\r\n const managedIdentityRequest = {\r\n forceRefresh: managedIdentityRequestParams.forceRefresh,\r\n resource: managedIdentityRequestParams.resource.replace(\"/.default\", \"\"),\r\n scopes: [\r\n managedIdentityRequestParams.resource.replace(\"/.default\", \"\"),\r\n ],\r\n authority: this.fakeAuthority.canonicalAuthority,\r\n correlationId: this.cryptoProvider.createNewGuid(),\r\n claims: managedIdentityRequestParams.claims,\r\n clientCapabilities: this.config.clientCapabilities,\r\n };\r\n if (managedIdentityRequest.forceRefresh) {\r\n return this.acquireTokenFromManagedIdentity(managedIdentityRequest, this.config.managedIdentityId, this.fakeAuthority);\r\n }\r\n const [cachedAuthenticationResult, lastCacheOutcome] = await this.fakeClientCredentialClient.getCachedAuthenticationResult(managedIdentityRequest, this.config, this.cryptoProvider, this.fakeAuthority, ManagedIdentityApplication.nodeStorage);\r\n /*\r\n * Check if claims are present in the managed identity request.\r\n * If so, the cached token will not be used.\r\n */\r\n if (managedIdentityRequest.claims) {\r\n const sourceName = this.managedIdentityClient.getManagedIdentitySource();\r\n /*\r\n * Check if there is a cached token and if the Managed Identity source supports token revocation.\r\n * If so, hash the cached access token and add it to the request.\r\n */\r\n if (cachedAuthenticationResult &&\r\n SOURCES_THAT_SUPPORT_TOKEN_REVOCATION.includes(sourceName)) {\r\n const revokedTokenSha256Hash = this.hashUtils\r\n .sha256(cachedAuthenticationResult.accessToken)\r\n .toString(EncodingTypes.HEX);\r\n managedIdentityRequest.revokedTokenSha256Hash =\r\n revokedTokenSha256Hash;\r\n }\r\n return this.acquireTokenFromManagedIdentity(managedIdentityRequest, this.config.managedIdentityId, this.fakeAuthority);\r\n }\r\n if (cachedAuthenticationResult) {\r\n // if the token is not expired but must be refreshed; get a new one in the background\r\n if (lastCacheOutcome === CacheOutcome.PROACTIVELY_REFRESHED) {\r\n this.logger.info(\"ClientCredentialClient:getCachedAuthenticationResult - Cached access token's refreshOn property has been exceeded'. It's not expired, but must be refreshed.\");\r\n // force refresh; will run in the background\r\n const refreshAccessToken = true;\r\n await this.acquireTokenFromManagedIdentity(managedIdentityRequest, this.config.managedIdentityId, this.fakeAuthority, refreshAccessToken);\r\n }\r\n return cachedAuthenticationResult;\r\n }\r\n else {\r\n return this.acquireTokenFromManagedIdentity(managedIdentityRequest, this.config.managedIdentityId, this.fakeAuthority);\r\n }\r\n }\r\n /**\r\n * Acquires a token from a managed identity endpoint.\r\n *\r\n * @param managedIdentityRequest - The request object containing parameters for the managed identity token request.\r\n * @param managedIdentityId - The identifier for the managed identity (e.g., client ID or resource ID).\r\n * @param fakeAuthority - A placeholder authority used for the token request.\r\n * @param refreshAccessToken - Optional flag indicating whether to force a refresh of the access token.\r\n * @returns A promise that resolves to an AuthenticationResult containing the acquired token and related information.\r\n */\r\n async acquireTokenFromManagedIdentity(managedIdentityRequest, managedIdentityId, fakeAuthority, refreshAccessToken) {\r\n // make a network call to the managed identity\r\n return this.managedIdentityClient.sendManagedIdentityTokenRequest(managedIdentityRequest, managedIdentityId, fakeAuthority, refreshAccessToken);\r\n }\r\n /**\r\n * Determine the Managed Identity Source based on available environment variables. This API is consumed by Azure Identity SDK.\r\n * @returns ManagedIdentitySourceNames - The Managed Identity source's name\r\n */\r\n getManagedIdentitySource() {\r\n return (ManagedIdentityClient.sourceName ||\r\n this.managedIdentityClient.getManagedIdentitySource());\r\n }\r\n}\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * Cache plugin that serializes data to the cache and deserializes data from the cache\r\n * @public\r\n */\r\nclass DistributedCachePlugin {\r\n constructor(client, partitionManager) {\r\n this.client = client;\r\n this.partitionManager = partitionManager;\r\n }\r\n /**\r\n * Deserializes the cache before accessing it\r\n * @param cacheContext - TokenCacheContext\r\n */\r\n async beforeCacheAccess(cacheContext) {\r\n const partitionKey = await this.partitionManager.getKey();\r\n const cacheData = await this.client.get(partitionKey);\r\n cacheContext.tokenCache.deserialize(cacheData);\r\n }\r\n /**\r\n * Serializes the cache after accessing it\r\n * @param cacheContext - TokenCacheContext\r\n */\r\n async afterCacheAccess(cacheContext) {\r\n if (cacheContext.cacheHasChanged) {\r\n const kvStore = cacheContext.tokenCache.getKVStore();\r\n const accountEntities = Object.values(kvStore).filter((value) => AccountEntity.isAccountEntity(value));\r\n let partitionKey;\r\n if (accountEntities.length > 0) {\r\n const accountEntity = accountEntities[0];\r\n partitionKey = await this.partitionManager.extractKey(accountEntity);\r\n }\r\n else {\r\n partitionKey = await this.partitionManager.getKey();\r\n }\r\n await this.client.set(partitionKey, cacheContext.tokenCache.serialize());\r\n }\r\n }\r\n}\n\nexports.AuthError = AuthError;\nexports.AuthErrorCodes = AuthErrorCodes;\nexports.AuthErrorMessage = AuthErrorMessage;\nexports.AzureCloudInstance = AzureCloudInstance;\nexports.ClientApplication = ClientApplication;\nexports.ClientAssertion = ClientAssertion;\nexports.ClientAuthError = ClientAuthError;\nexports.ClientAuthErrorCodes = ClientAuthErrorCodes;\nexports.ClientAuthErrorMessage = ClientAuthErrorMessage;\nexports.ClientConfigurationError = ClientConfigurationError;\nexports.ClientConfigurationErrorCodes = ClientConfigurationErrorCodes;\nexports.ClientConfigurationErrorMessage = ClientConfigurationErrorMessage;\nexports.ClientCredentialClient = ClientCredentialClient;\nexports.ConfidentialClientApplication = ConfidentialClientApplication;\nexports.CryptoProvider = CryptoProvider;\nexports.DeviceCodeClient = DeviceCodeClient;\nexports.DistributedCachePlugin = DistributedCachePlugin;\nexports.InteractionRequiredAuthError = InteractionRequiredAuthError;\nexports.InteractionRequiredAuthErrorCodes = InteractionRequiredAuthErrorCodes;\nexports.InteractionRequiredAuthErrorMessage = InteractionRequiredAuthErrorMessage;\nexports.Logger = Logger;\nexports.ManagedIdentityApplication = ManagedIdentityApplication;\nexports.ManagedIdentitySourceNames = ManagedIdentitySourceNames;\nexports.OnBehalfOfClient = OnBehalfOfClient;\nexports.PromptValue = PromptValue;\nexports.ProtocolMode = ProtocolMode;\nexports.PublicClientApplication = PublicClientApplication;\nexports.ResponseMode = ResponseMode;\nexports.ServerError = ServerError;\nexports.TokenCache = TokenCache;\nexports.TokenCacheContext = TokenCacheContext;\nexports.UsernamePasswordClient = UsernamePasswordClient;\nexports.internals = internals;\nexports.version = version;\n//# sourceMappingURL=msal-node.cjs.map\n","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.msalCommon = void 0;\nconst tslib_1 = require(\"tslib\");\nconst msalCommon = tslib_1.__importStar(require(\"@azure/msal-node\"));\nexports.msalCommon = msalCommon;\n//# sourceMappingURL=msal.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.defaultLoggerCallback = void 0;\nexports.ensureValidMsalToken = ensureValidMsalToken;\nexports.getAuthorityHost = getAuthorityHost;\nexports.getAuthority = getAuthority;\nexports.getKnownAuthorities = getKnownAuthorities;\nexports.getMSALLogLevel = getMSALLogLevel;\nexports.randomUUID = randomUUID;\nexports.handleMsalError = handleMsalError;\nexports.publicToMsal = publicToMsal;\nexports.msalToPublic = msalToPublic;\nexports.serializeAuthenticationRecord = serializeAuthenticationRecord;\nexports.deserializeAuthenticationRecord = deserializeAuthenticationRecord;\nconst errors_js_1 = require(\"../errors.js\");\nconst logging_js_1 = require(\"../util/logging.js\");\nconst constants_js_1 = require(\"../constants.js\");\nconst core_util_1 = require(\"@azure/core-util\");\nconst abort_controller_1 = require(\"@azure/abort-controller\");\nconst msal_js_1 = require(\"./msal.js\");\nconst logger = (0, logging_js_1.credentialLogger)(\"IdentityUtils\");\n/**\n * Latest AuthenticationRecord version\n */\nconst LatestAuthenticationRecordVersion = \"1.0\";\n/**\n * Ensures the validity of the MSAL token\n * @internal\n */\nfunction ensureValidMsalToken(scopes, msalToken, getTokenOptions) {\n const error = (message) => {\n logger.getToken.info(message);\n return new errors_js_1.AuthenticationRequiredError({\n scopes: Array.isArray(scopes) ? scopes : [scopes],\n getTokenOptions,\n message,\n });\n };\n if (!msalToken) {\n throw error(\"No response\");\n }\n if (!msalToken.expiresOn) {\n throw error(`Response had no \"expiresOn\" property.`);\n }\n if (!msalToken.accessToken) {\n throw error(`Response had no \"accessToken\" property.`);\n }\n}\n/**\n * Returns the authority host from either the options bag or the AZURE_AUTHORITY_HOST environment variable.\n *\n * Defaults to {@link DefaultAuthorityHost}.\n * @internal\n */\nfunction getAuthorityHost(options) {\n let authorityHost = options?.authorityHost;\n if (!authorityHost && core_util_1.isNodeLike) {\n authorityHost = process.env.AZURE_AUTHORITY_HOST;\n }\n return authorityHost ?? constants_js_1.DefaultAuthorityHost;\n}\n/**\n * Generates a valid authority by combining a host with a tenantId.\n * @internal\n */\nfunction getAuthority(tenantId, host) {\n if (!host) {\n host = constants_js_1.DefaultAuthorityHost;\n }\n if (new RegExp(`${tenantId}/?$`).test(host)) {\n return host;\n }\n if (host.endsWith(\"/\")) {\n return host + tenantId;\n }\n else {\n return `${host}/${tenantId}`;\n }\n}\n/**\n * Generates the known authorities.\n * If the Tenant Id is `adfs`, the authority can't be validated since the format won't match the expected one.\n * For that reason, we have to force MSAL to disable validating the authority\n * by sending it within the known authorities in the MSAL configuration.\n * @internal\n */\nfunction getKnownAuthorities(tenantId, authorityHost, disableInstanceDiscovery) {\n if ((tenantId === \"adfs\" && authorityHost) || disableInstanceDiscovery) {\n return [authorityHost];\n }\n return [];\n}\n/**\n * Generates a logger that can be passed to the MSAL clients.\n * @param credLogger - The logger of the credential.\n * @internal\n */\nconst defaultLoggerCallback = (credLogger, platform = core_util_1.isNode ? \"Node\" : \"Browser\") => (level, message, containsPii) => {\n if (containsPii) {\n return;\n }\n switch (level) {\n case msal_js_1.msalCommon.LogLevel.Error:\n credLogger.info(`MSAL ${platform} V2 error: ${message}`);\n return;\n case msal_js_1.msalCommon.LogLevel.Info:\n credLogger.info(`MSAL ${platform} V2 info message: ${message}`);\n return;\n case msal_js_1.msalCommon.LogLevel.Verbose:\n credLogger.info(`MSAL ${platform} V2 verbose message: ${message}`);\n return;\n case msal_js_1.msalCommon.LogLevel.Warning:\n credLogger.info(`MSAL ${platform} V2 warning: ${message}`);\n return;\n }\n};\nexports.defaultLoggerCallback = defaultLoggerCallback;\n/**\n * @internal\n */\nfunction getMSALLogLevel(logLevel) {\n switch (logLevel) {\n case \"error\":\n return msal_js_1.msalCommon.LogLevel.Error;\n case \"info\":\n return msal_js_1.msalCommon.LogLevel.Info;\n case \"verbose\":\n return msal_js_1.msalCommon.LogLevel.Verbose;\n case \"warning\":\n return msal_js_1.msalCommon.LogLevel.Warning;\n default:\n // default msal logging level should be Info\n return msal_js_1.msalCommon.LogLevel.Info;\n }\n}\n/**\n * Wraps core-util's randomUUID in order to allow for mocking in tests.\n * This prepares the library for the upcoming core-util update to ESM.\n *\n * @internal\n * @returns A string containing a random UUID\n */\nfunction randomUUID() {\n return (0, core_util_1.randomUUID)();\n}\n/**\n * Handles MSAL errors.\n */\nfunction handleMsalError(scopes, error, getTokenOptions) {\n if (error.name === \"AuthError\" ||\n error.name === \"ClientAuthError\" ||\n error.name === \"BrowserAuthError\") {\n const msalError = error;\n switch (msalError.errorCode) {\n case \"endpoints_resolution_error\":\n logger.info((0, logging_js_1.formatError)(scopes, error.message));\n return new errors_js_1.CredentialUnavailableError(error.message);\n case \"device_code_polling_cancelled\":\n return new abort_controller_1.AbortError(\"The authentication has been aborted by the caller.\");\n case \"consent_required\":\n case \"interaction_required\":\n case \"login_required\":\n logger.info((0, logging_js_1.formatError)(scopes, `Authentication returned errorCode ${msalError.errorCode}`));\n break;\n default:\n logger.info((0, logging_js_1.formatError)(scopes, `Failed to acquire token: ${error.message}`));\n break;\n }\n }\n if (error.name === \"ClientConfigurationError\" ||\n error.name === \"BrowserConfigurationAuthError\" ||\n error.name === \"AbortError\" ||\n error.name === \"AuthenticationError\") {\n return error;\n }\n if (error.name === \"NativeAuthError\") {\n logger.info((0, logging_js_1.formatError)(scopes, `Error from the native broker: ${error.message} with status code: ${error.statusCode}`));\n return error;\n }\n return new errors_js_1.AuthenticationRequiredError({ scopes, getTokenOptions, message: error.message });\n}\n// transformations\nfunction publicToMsal(account) {\n return {\n localAccountId: account.homeAccountId,\n environment: account.authority,\n username: account.username,\n homeAccountId: account.homeAccountId,\n tenantId: account.tenantId,\n };\n}\nfunction msalToPublic(clientId, account) {\n const record = {\n authority: account.environment ?? constants_js_1.DefaultAuthority,\n homeAccountId: account.homeAccountId,\n tenantId: account.tenantId || constants_js_1.DefaultTenantId,\n username: account.username,\n clientId,\n version: LatestAuthenticationRecordVersion,\n };\n return record;\n}\n/**\n * Serializes an `AuthenticationRecord` into a string.\n *\n * The output of a serialized authentication record will contain the following properties:\n *\n * - \"authority\"\n * - \"homeAccountId\"\n * - \"clientId\"\n * - \"tenantId\"\n * - \"username\"\n * - \"version\"\n *\n * To later convert this string to a serialized `AuthenticationRecord`, please use the exported function `deserializeAuthenticationRecord()`.\n */\nfunction serializeAuthenticationRecord(record) {\n return JSON.stringify(record);\n}\n/**\n * Deserializes a previously serialized authentication record from a string into an object.\n *\n * The input string must contain the following properties:\n *\n * - \"authority\"\n * - \"homeAccountId\"\n * - \"clientId\"\n * - \"tenantId\"\n * - \"username\"\n * - \"version\"\n *\n * If the version we receive is unsupported, an error will be thrown.\n *\n * At the moment, the only available version is: \"1.0\", which is always set when the authentication record is serialized.\n *\n * @param serializedRecord - Authentication record previously serialized into string.\n * @returns AuthenticationRecord.\n */\nfunction deserializeAuthenticationRecord(serializedRecord) {\n const parsed = JSON.parse(serializedRecord);\n if (parsed.version && parsed.version !== LatestAuthenticationRecordVersion) {\n throw Error(\"Unsupported AuthenticationRecord version\");\n }\n return parsed;\n}\n//# sourceMappingURL=utils.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getIdentityTokenEndpointSuffix = getIdentityTokenEndpointSuffix;\nfunction getIdentityTokenEndpointSuffix(tenantId) {\n if (tenantId === \"adfs\") {\n return \"oauth2/token\";\n }\n else {\n return \"oauth2/v2.0/token\";\n }\n}\n//# sourceMappingURL=identityTokenEndpoint.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.serviceFabricErrorMessage = void 0;\nexports.mapScopesToResource = mapScopesToResource;\nexports.parseExpirationTimestamp = parseExpirationTimestamp;\nexports.parseRefreshTimestamp = parseRefreshTimestamp;\nconst DefaultScopeSuffix = \"/.default\";\n/**\n * Error message for Service Fabric Managed Identity environment.\n */\nexports.serviceFabricErrorMessage = \"Specifying a `clientId` or `resourceId` is not supported by the Service Fabric managed identity environment. The managed identity configuration is determined by the Service Fabric cluster resource configuration. See https://aka.ms/servicefabricmi for more information\";\n/**\n * Most MSIs send requests to the IMDS endpoint, or a similar endpoint.\n * These are GET requests that require sending a `resource` parameter on the query.\n * This resource can be derived from the scopes received through the getToken call, as long as only one scope is received.\n * Multiple scopes assume that the resulting token will have access to multiple resources, which won't be the case.\n *\n * For that reason, when we encounter multiple scopes, we return undefined.\n * It's up to the individual MSI implementations to throw the errors (which helps us provide less generic errors).\n */\nfunction mapScopesToResource(scopes) {\n let scope = \"\";\n if (Array.isArray(scopes)) {\n if (scopes.length !== 1) {\n return;\n }\n scope = scopes[0];\n }\n else if (typeof scopes === \"string\") {\n scope = scopes;\n }\n if (!scope.endsWith(DefaultScopeSuffix)) {\n return scope;\n }\n return scope.substr(0, scope.lastIndexOf(DefaultScopeSuffix));\n}\n/**\n * Given a token response, return the expiration timestamp as the number of milliseconds from the Unix epoch.\n * @param body - A parsed response body from the authentication endpoint.\n */\nfunction parseExpirationTimestamp(body) {\n if (typeof body.expires_on === \"number\") {\n return body.expires_on * 1000;\n }\n if (typeof body.expires_on === \"string\") {\n const asNumber = +body.expires_on;\n if (!isNaN(asNumber)) {\n return asNumber * 1000;\n }\n const asDate = Date.parse(body.expires_on);\n if (!isNaN(asDate)) {\n return asDate;\n }\n }\n if (typeof body.expires_in === \"number\") {\n return Date.now() + body.expires_in * 1000;\n }\n throw new Error(`Failed to parse token expiration from body. expires_in=\"${body.expires_in}\", expires_on=\"${body.expires_on}\"`);\n}\n/**\n * Given a token response, return the expiration timestamp as the number of milliseconds from the Unix epoch.\n * @param body - A parsed response body from the authentication endpoint.\n */\nfunction parseRefreshTimestamp(body) {\n if (body.refresh_on) {\n if (typeof body.refresh_on === \"number\") {\n return body.refresh_on * 1000;\n }\n if (typeof body.refresh_on === \"string\") {\n const asNumber = +body.refresh_on;\n if (!isNaN(asNumber)) {\n return asNumber * 1000;\n }\n const asDate = Date.parse(body.refresh_on);\n if (!isNaN(asDate)) {\n return asDate;\n }\n }\n throw new Error(`Failed to parse refresh_on from body. refresh_on=\"${body.refresh_on}\"`);\n }\n else {\n return undefined;\n }\n}\n//# sourceMappingURL=utils.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.IdentityClient = void 0;\nexports.getIdentityClientAuthorityHost = getIdentityClientAuthorityHost;\nconst core_client_1 = require(\"@azure/core-client\");\nconst core_util_1 = require(\"@azure/core-util\");\nconst core_rest_pipeline_1 = require(\"@azure/core-rest-pipeline\");\nconst errors_js_1 = require(\"../errors.js\");\nconst identityTokenEndpoint_js_1 = require(\"../util/identityTokenEndpoint.js\");\nconst constants_js_1 = require(\"../constants.js\");\nconst tracing_js_1 = require(\"../util/tracing.js\");\nconst logging_js_1 = require(\"../util/logging.js\");\nconst utils_js_1 = require(\"../credentials/managedIdentityCredential/utils.js\");\nconst noCorrelationId = \"noCorrelationId\";\n/**\n * @internal\n */\nfunction getIdentityClientAuthorityHost(options) {\n // The authorityHost can come from options or from the AZURE_AUTHORITY_HOST environment variable.\n let authorityHost = options?.authorityHost;\n // The AZURE_AUTHORITY_HOST environment variable can only be provided in Node.js.\n if (core_util_1.isNode) {\n authorityHost = authorityHost ?? process.env.AZURE_AUTHORITY_HOST;\n }\n // If the authorityHost is not provided, we use the default one from the public cloud: https://login.microsoftonline.com\n return authorityHost ?? constants_js_1.DefaultAuthorityHost;\n}\n/**\n * The network module used by the Identity credentials.\n *\n * It allows for credentials to abort any pending request independently of the MSAL flow,\n * by calling to the `abortRequests()` method.\n *\n */\nclass IdentityClient extends core_client_1.ServiceClient {\n authorityHost;\n allowLoggingAccountIdentifiers;\n abortControllers;\n allowInsecureConnection = false;\n // used for WorkloadIdentity\n tokenCredentialOptions;\n constructor(options) {\n const packageDetails = `azsdk-js-identity/${constants_js_1.SDK_VERSION}`;\n const userAgentPrefix = options?.userAgentOptions?.userAgentPrefix\n ? `${options.userAgentOptions.userAgentPrefix} ${packageDetails}`\n : `${packageDetails}`;\n const baseUri = getIdentityClientAuthorityHost(options);\n if (!baseUri.startsWith(\"https:\")) {\n throw new Error(\"The authorityHost address must use the 'https' protocol.\");\n }\n super({\n requestContentType: \"application/json; charset=utf-8\",\n retryOptions: {\n maxRetries: 3,\n },\n ...options,\n userAgentOptions: {\n userAgentPrefix,\n },\n baseUri,\n });\n this.authorityHost = baseUri;\n this.abortControllers = new Map();\n this.allowLoggingAccountIdentifiers = options?.loggingOptions?.allowLoggingAccountIdentifiers;\n // used for WorkloadIdentity\n this.tokenCredentialOptions = { ...options };\n // used for ManagedIdentity\n if (options?.allowInsecureConnection) {\n this.allowInsecureConnection = options.allowInsecureConnection;\n }\n }\n async sendTokenRequest(request) {\n logging_js_1.logger.info(`IdentityClient: sending token request to [${request.url}]`);\n const response = await this.sendRequest(request);\n if (response.bodyAsText && (response.status === 200 || response.status === 201)) {\n const parsedBody = JSON.parse(response.bodyAsText);\n if (!parsedBody.access_token) {\n return null;\n }\n this.logIdentifiers(response);\n const token = {\n accessToken: {\n token: parsedBody.access_token,\n expiresOnTimestamp: (0, utils_js_1.parseExpirationTimestamp)(parsedBody),\n refreshAfterTimestamp: (0, utils_js_1.parseRefreshTimestamp)(parsedBody),\n tokenType: \"Bearer\",\n },\n refreshToken: parsedBody.refresh_token,\n };\n logging_js_1.logger.info(`IdentityClient: [${request.url}] token acquired, expires on ${token.accessToken.expiresOnTimestamp}`);\n return token;\n }\n else {\n const error = new errors_js_1.AuthenticationError(response.status, response.bodyAsText);\n logging_js_1.logger.warning(`IdentityClient: authentication error. HTTP status: ${response.status}, ${error.errorResponse.errorDescription}`);\n throw error;\n }\n }\n async refreshAccessToken(tenantId, clientId, scopes, refreshToken, clientSecret, options = {}) {\n if (refreshToken === undefined) {\n return null;\n }\n logging_js_1.logger.info(`IdentityClient: refreshing access token with client ID: ${clientId}, scopes: ${scopes} started`);\n const refreshParams = {\n grant_type: \"refresh_token\",\n client_id: clientId,\n refresh_token: refreshToken,\n scope: scopes,\n };\n if (clientSecret !== undefined) {\n refreshParams.client_secret = clientSecret;\n }\n const query = new URLSearchParams(refreshParams);\n return tracing_js_1.tracingClient.withSpan(\"IdentityClient.refreshAccessToken\", options, async (updatedOptions) => {\n try {\n const urlSuffix = (0, identityTokenEndpoint_js_1.getIdentityTokenEndpointSuffix)(tenantId);\n const request = (0, core_rest_pipeline_1.createPipelineRequest)({\n url: `${this.authorityHost}/${tenantId}/${urlSuffix}`,\n method: \"POST\",\n body: query.toString(),\n abortSignal: options.abortSignal,\n headers: (0, core_rest_pipeline_1.createHttpHeaders)({\n Accept: \"application/json\",\n \"Content-Type\": \"application/x-www-form-urlencoded\",\n }),\n tracingOptions: updatedOptions.tracingOptions,\n });\n const response = await this.sendTokenRequest(request);\n logging_js_1.logger.info(`IdentityClient: refreshed token for client ID: ${clientId}`);\n return response;\n }\n catch (err) {\n if (err.name === errors_js_1.AuthenticationErrorName &&\n err.errorResponse.error === \"interaction_required\") {\n // It's likely that the refresh token has expired, so\n // return null so that the credential implementation will\n // initiate the authentication flow again.\n logging_js_1.logger.info(`IdentityClient: interaction required for client ID: ${clientId}`);\n return null;\n }\n else {\n logging_js_1.logger.warning(`IdentityClient: failed refreshing token for client ID: ${clientId}: ${err}`);\n throw err;\n }\n }\n });\n }\n // Here is a custom layer that allows us to abort requests that go through MSAL,\n // since MSAL doesn't allow us to pass options all the way through.\n generateAbortSignal(correlationId) {\n const controller = new AbortController();\n const controllers = this.abortControllers.get(correlationId) || [];\n controllers.push(controller);\n this.abortControllers.set(correlationId, controllers);\n const existingOnAbort = controller.signal.onabort;\n controller.signal.onabort = (...params) => {\n this.abortControllers.set(correlationId, undefined);\n if (existingOnAbort) {\n existingOnAbort.apply(controller.signal, params);\n }\n };\n return controller.signal;\n }\n abortRequests(correlationId) {\n const key = correlationId || noCorrelationId;\n const controllers = [\n ...(this.abortControllers.get(key) || []),\n // MSAL passes no correlation ID to the get requests...\n ...(this.abortControllers.get(noCorrelationId) || []),\n ];\n if (!controllers.length) {\n return;\n }\n for (const controller of controllers) {\n controller.abort();\n }\n this.abortControllers.set(key, undefined);\n }\n getCorrelationId(options) {\n const parameter = options?.body\n ?.split(\"&\")\n .map((part) => part.split(\"=\"))\n .find(([key]) => key === \"client-request-id\");\n return parameter && parameter.length ? parameter[1] || noCorrelationId : noCorrelationId;\n }\n // The MSAL network module methods follow\n async sendGetRequestAsync(url, options) {\n const request = (0, core_rest_pipeline_1.createPipelineRequest)({\n url,\n method: \"GET\",\n body: options?.body,\n allowInsecureConnection: this.allowInsecureConnection,\n headers: (0, core_rest_pipeline_1.createHttpHeaders)(options?.headers),\n abortSignal: this.generateAbortSignal(noCorrelationId),\n });\n const response = await this.sendRequest(request);\n this.logIdentifiers(response);\n return {\n body: response.bodyAsText ? JSON.parse(response.bodyAsText) : undefined,\n headers: response.headers.toJSON(),\n status: response.status,\n };\n }\n async sendPostRequestAsync(url, options) {\n const request = (0, core_rest_pipeline_1.createPipelineRequest)({\n url,\n method: \"POST\",\n body: options?.body,\n headers: (0, core_rest_pipeline_1.createHttpHeaders)(options?.headers),\n allowInsecureConnection: this.allowInsecureConnection,\n // MSAL doesn't send the correlation ID on the get requests.\n abortSignal: this.generateAbortSignal(this.getCorrelationId(options)),\n });\n const response = await this.sendRequest(request);\n this.logIdentifiers(response);\n return {\n body: response.bodyAsText ? JSON.parse(response.bodyAsText) : undefined,\n headers: response.headers.toJSON(),\n status: response.status,\n };\n }\n /**\n *\n * @internal\n */\n getTokenCredentialOptions() {\n return this.tokenCredentialOptions;\n }\n /**\n * If allowLoggingAccountIdentifiers was set on the constructor options\n * we try to log the account identifiers by parsing the received access token.\n *\n * The account identifiers we try to log are:\n * - `appid`: The application or Client Identifier.\n * - `upn`: User Principal Name.\n * - It might not be available in some authentication scenarios.\n * - If it's not available, we put a placeholder: \"No User Principal Name available\".\n * - `tid`: Tenant Identifier.\n * - `oid`: Object Identifier of the authenticated user.\n */\n logIdentifiers(response) {\n if (!this.allowLoggingAccountIdentifiers || !response.bodyAsText) {\n return;\n }\n const unavailableUpn = \"No User Principal Name available\";\n try {\n const parsed = response.parsedBody || JSON.parse(response.bodyAsText);\n const accessToken = parsed.access_token;\n if (!accessToken) {\n // Without an access token allowLoggingAccountIdentifiers isn't useful.\n return;\n }\n const base64Metadata = accessToken.split(\".\")[1];\n const { appid, upn, tid, oid } = JSON.parse(Buffer.from(base64Metadata, \"base64\").toString(\"utf8\"));\n logging_js_1.logger.info(`[Authenticated account] Client ID: ${appid}. Tenant ID: ${tid}. User Principal Name: ${upn || unavailableUpn}. Object ID (user): ${oid}`);\n }\n catch (e) {\n logging_js_1.logger.warning(\"allowLoggingAccountIdentifiers was set, but we couldn't log the account information. Error:\", e.message);\n }\n }\n}\nexports.IdentityClient = IdentityClient;\n//# sourceMappingURL=identityClient.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.RegionalAuthority = void 0;\nexports.calculateRegionalAuthority = calculateRegionalAuthority;\n/**\n * Helps specify a regional authority, or \"AutoDiscoverRegion\" to auto-detect the region.\n */\nvar RegionalAuthority;\n(function (RegionalAuthority) {\n /** Instructs MSAL to attempt to discover the region */\n RegionalAuthority[\"AutoDiscoverRegion\"] = \"AutoDiscoverRegion\";\n /** Uses the {@link RegionalAuthority} for the Azure 'westus' region. */\n RegionalAuthority[\"USWest\"] = \"westus\";\n /** Uses the {@link RegionalAuthority} for the Azure 'westus2' region. */\n RegionalAuthority[\"USWest2\"] = \"westus2\";\n /** Uses the {@link RegionalAuthority} for the Azure 'centralus' region. */\n RegionalAuthority[\"USCentral\"] = \"centralus\";\n /** Uses the {@link RegionalAuthority} for the Azure 'eastus' region. */\n RegionalAuthority[\"USEast\"] = \"eastus\";\n /** Uses the {@link RegionalAuthority} for the Azure 'eastus2' region. */\n RegionalAuthority[\"USEast2\"] = \"eastus2\";\n /** Uses the {@link RegionalAuthority} for the Azure 'northcentralus' region. */\n RegionalAuthority[\"USNorthCentral\"] = \"northcentralus\";\n /** Uses the {@link RegionalAuthority} for the Azure 'southcentralus' region. */\n RegionalAuthority[\"USSouthCentral\"] = \"southcentralus\";\n /** Uses the {@link RegionalAuthority} for the Azure 'westcentralus' region. */\n RegionalAuthority[\"USWestCentral\"] = \"westcentralus\";\n /** Uses the {@link RegionalAuthority} for the Azure 'canadacentral' region. */\n RegionalAuthority[\"CanadaCentral\"] = \"canadacentral\";\n /** Uses the {@link RegionalAuthority} for the Azure 'canadaeast' region. */\n RegionalAuthority[\"CanadaEast\"] = \"canadaeast\";\n /** Uses the {@link RegionalAuthority} for the Azure 'brazilsouth' region. */\n RegionalAuthority[\"BrazilSouth\"] = \"brazilsouth\";\n /** Uses the {@link RegionalAuthority} for the Azure 'northeurope' region. */\n RegionalAuthority[\"EuropeNorth\"] = \"northeurope\";\n /** Uses the {@link RegionalAuthority} for the Azure 'westeurope' region. */\n RegionalAuthority[\"EuropeWest\"] = \"westeurope\";\n /** Uses the {@link RegionalAuthority} for the Azure 'uksouth' region. */\n RegionalAuthority[\"UKSouth\"] = \"uksouth\";\n /** Uses the {@link RegionalAuthority} for the Azure 'ukwest' region. */\n RegionalAuthority[\"UKWest\"] = \"ukwest\";\n /** Uses the {@link RegionalAuthority} for the Azure 'francecentral' region. */\n RegionalAuthority[\"FranceCentral\"] = \"francecentral\";\n /** Uses the {@link RegionalAuthority} for the Azure 'francesouth' region. */\n RegionalAuthority[\"FranceSouth\"] = \"francesouth\";\n /** Uses the {@link RegionalAuthority} for the Azure 'switzerlandnorth' region. */\n RegionalAuthority[\"SwitzerlandNorth\"] = \"switzerlandnorth\";\n /** Uses the {@link RegionalAuthority} for the Azure 'switzerlandwest' region. */\n RegionalAuthority[\"SwitzerlandWest\"] = \"switzerlandwest\";\n /** Uses the {@link RegionalAuthority} for the Azure 'germanynorth' region. */\n RegionalAuthority[\"GermanyNorth\"] = \"germanynorth\";\n /** Uses the {@link RegionalAuthority} for the Azure 'germanywestcentral' region. */\n RegionalAuthority[\"GermanyWestCentral\"] = \"germanywestcentral\";\n /** Uses the {@link RegionalAuthority} for the Azure 'norwaywest' region. */\n RegionalAuthority[\"NorwayWest\"] = \"norwaywest\";\n /** Uses the {@link RegionalAuthority} for the Azure 'norwayeast' region. */\n RegionalAuthority[\"NorwayEast\"] = \"norwayeast\";\n /** Uses the {@link RegionalAuthority} for the Azure 'eastasia' region. */\n RegionalAuthority[\"AsiaEast\"] = \"eastasia\";\n /** Uses the {@link RegionalAuthority} for the Azure 'southeastasia' region. */\n RegionalAuthority[\"AsiaSouthEast\"] = \"southeastasia\";\n /** Uses the {@link RegionalAuthority} for the Azure 'japaneast' region. */\n RegionalAuthority[\"JapanEast\"] = \"japaneast\";\n /** Uses the {@link RegionalAuthority} for the Azure 'japanwest' region. */\n RegionalAuthority[\"JapanWest\"] = \"japanwest\";\n /** Uses the {@link RegionalAuthority} for the Azure 'australiaeast' region. */\n RegionalAuthority[\"AustraliaEast\"] = \"australiaeast\";\n /** Uses the {@link RegionalAuthority} for the Azure 'australiasoutheast' region. */\n RegionalAuthority[\"AustraliaSouthEast\"] = \"australiasoutheast\";\n /** Uses the {@link RegionalAuthority} for the Azure 'australiacentral' region. */\n RegionalAuthority[\"AustraliaCentral\"] = \"australiacentral\";\n /** Uses the {@link RegionalAuthority} for the Azure 'australiacentral2' region. */\n RegionalAuthority[\"AustraliaCentral2\"] = \"australiacentral2\";\n /** Uses the {@link RegionalAuthority} for the Azure 'centralindia' region. */\n RegionalAuthority[\"IndiaCentral\"] = \"centralindia\";\n /** Uses the {@link RegionalAuthority} for the Azure 'southindia' region. */\n RegionalAuthority[\"IndiaSouth\"] = \"southindia\";\n /** Uses the {@link RegionalAuthority} for the Azure 'westindia' region. */\n RegionalAuthority[\"IndiaWest\"] = \"westindia\";\n /** Uses the {@link RegionalAuthority} for the Azure 'koreasouth' region. */\n RegionalAuthority[\"KoreaSouth\"] = \"koreasouth\";\n /** Uses the {@link RegionalAuthority} for the Azure 'koreacentral' region. */\n RegionalAuthority[\"KoreaCentral\"] = \"koreacentral\";\n /** Uses the {@link RegionalAuthority} for the Azure 'uaecentral' region. */\n RegionalAuthority[\"UAECentral\"] = \"uaecentral\";\n /** Uses the {@link RegionalAuthority} for the Azure 'uaenorth' region. */\n RegionalAuthority[\"UAENorth\"] = \"uaenorth\";\n /** Uses the {@link RegionalAuthority} for the Azure 'southafricanorth' region. */\n RegionalAuthority[\"SouthAfricaNorth\"] = \"southafricanorth\";\n /** Uses the {@link RegionalAuthority} for the Azure 'southafricawest' region. */\n RegionalAuthority[\"SouthAfricaWest\"] = \"southafricawest\";\n /** Uses the {@link RegionalAuthority} for the Azure 'chinanorth' region. */\n RegionalAuthority[\"ChinaNorth\"] = \"chinanorth\";\n /** Uses the {@link RegionalAuthority} for the Azure 'chinaeast' region. */\n RegionalAuthority[\"ChinaEast\"] = \"chinaeast\";\n /** Uses the {@link RegionalAuthority} for the Azure 'chinanorth2' region. */\n RegionalAuthority[\"ChinaNorth2\"] = \"chinanorth2\";\n /** Uses the {@link RegionalAuthority} for the Azure 'chinaeast2' region. */\n RegionalAuthority[\"ChinaEast2\"] = \"chinaeast2\";\n /** Uses the {@link RegionalAuthority} for the Azure 'germanycentral' region. */\n RegionalAuthority[\"GermanyCentral\"] = \"germanycentral\";\n /** Uses the {@link RegionalAuthority} for the Azure 'germanynortheast' region. */\n RegionalAuthority[\"GermanyNorthEast\"] = \"germanynortheast\";\n /** Uses the {@link RegionalAuthority} for the Azure 'usgovvirginia' region. */\n RegionalAuthority[\"GovernmentUSVirginia\"] = \"usgovvirginia\";\n /** Uses the {@link RegionalAuthority} for the Azure 'usgoviowa' region. */\n RegionalAuthority[\"GovernmentUSIowa\"] = \"usgoviowa\";\n /** Uses the {@link RegionalAuthority} for the Azure 'usgovarizona' region. */\n RegionalAuthority[\"GovernmentUSArizona\"] = \"usgovarizona\";\n /** Uses the {@link RegionalAuthority} for the Azure 'usgovtexas' region. */\n RegionalAuthority[\"GovernmentUSTexas\"] = \"usgovtexas\";\n /** Uses the {@link RegionalAuthority} for the Azure 'usdodeast' region. */\n RegionalAuthority[\"GovernmentUSDodEast\"] = \"usdodeast\";\n /** Uses the {@link RegionalAuthority} for the Azure 'usdodcentral' region. */\n RegionalAuthority[\"GovernmentUSDodCentral\"] = \"usdodcentral\";\n})(RegionalAuthority || (exports.RegionalAuthority = RegionalAuthority = {}));\n/**\n * Calculates the correct regional authority based on the supplied value\n * and the AZURE_REGIONAL_AUTHORITY_NAME environment variable.\n *\n * Values will be returned verbatim, except for {@link RegionalAuthority.AutoDiscoverRegion}\n * which is mapped to a value MSAL can understand.\n *\n * @internal\n */\nfunction calculateRegionalAuthority(regionalAuthority) {\n // Note: as of today only 3 credentials support regional authority, and the parameter\n // is not exposed via the public API. Regional Authority is _only_ supported\n // via the AZURE_REGIONAL_AUTHORITY_NAME env var and _only_ for: ClientSecretCredential, ClientCertificateCredential, and ClientAssertionCredential.\n // Accepting the regionalAuthority parameter will allow us to support it in the future.\n let azureRegion = regionalAuthority;\n if (azureRegion === undefined &&\n globalThis.process?.env?.AZURE_REGIONAL_AUTHORITY_NAME !== undefined) {\n azureRegion = process.env.AZURE_REGIONAL_AUTHORITY_NAME;\n }\n if (azureRegion === RegionalAuthority.AutoDiscoverRegion) {\n return \"AUTO_DISCOVER\";\n }\n return azureRegion;\n}\n//# sourceMappingURL=regionalAuthority.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.processMultiTenantRequest = processMultiTenantRequest;\nconst errors_js_1 = require(\"../errors.js\");\nfunction createConfigurationErrorMessage(tenantId) {\n return `The current credential is not configured to acquire tokens for tenant ${tenantId}. To enable acquiring tokens for this tenant add it to the AdditionallyAllowedTenants on the credential options, or add \"*\" to AdditionallyAllowedTenants to allow acquiring tokens for any tenant.`;\n}\n/**\n * Of getToken contains a tenantId, this functions allows picking this tenantId as the appropriate for authentication,\n * unless multitenant authentication has been disabled through the AZURE_IDENTITY_DISABLE_MULTITENANTAUTH (on Node.js),\n * or unless the original tenant Id is `adfs`.\n * @internal\n */\nfunction processMultiTenantRequest(tenantId, getTokenOptions, additionallyAllowedTenantIds = [], logger) {\n let resolvedTenantId;\n if (process.env.AZURE_IDENTITY_DISABLE_MULTITENANTAUTH) {\n resolvedTenantId = tenantId;\n }\n else if (tenantId === \"adfs\") {\n resolvedTenantId = tenantId;\n }\n else {\n resolvedTenantId = getTokenOptions?.tenantId ?? tenantId;\n }\n if (tenantId &&\n resolvedTenantId !== tenantId &&\n !additionallyAllowedTenantIds.includes(\"*\") &&\n !additionallyAllowedTenantIds.some((t) => t.localeCompare(resolvedTenantId) === 0)) {\n const message = createConfigurationErrorMessage(resolvedTenantId);\n logger?.info(message);\n throw new errors_js_1.CredentialUnavailableError(message);\n }\n return resolvedTenantId;\n}\n//# sourceMappingURL=processMultiTenantRequest.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.processMultiTenantRequest = void 0;\nexports.checkTenantId = checkTenantId;\nexports.resolveTenantId = resolveTenantId;\nexports.resolveAdditionallyAllowedTenantIds = resolveAdditionallyAllowedTenantIds;\nconst constants_js_1 = require(\"../constants.js\");\nconst logging_js_1 = require(\"./logging.js\");\nvar processMultiTenantRequest_js_1 = require(\"./processMultiTenantRequest.js\");\nObject.defineProperty(exports, \"processMultiTenantRequest\", { enumerable: true, get: function () { return processMultiTenantRequest_js_1.processMultiTenantRequest; } });\n/**\n * @internal\n */\nfunction checkTenantId(logger, tenantId) {\n if (!tenantId.match(/^[0-9a-zA-Z-.]+$/)) {\n const error = new Error(\"Invalid tenant id provided. You can locate your tenant id by following the instructions listed here: https://learn.microsoft.com/partner-center/find-ids-and-domain-names.\");\n logger.info((0, logging_js_1.formatError)(\"\", error));\n throw error;\n }\n}\n/**\n * @internal\n */\nfunction resolveTenantId(logger, tenantId, clientId) {\n if (tenantId) {\n checkTenantId(logger, tenantId);\n return tenantId;\n }\n if (!clientId) {\n clientId = constants_js_1.DeveloperSignOnClientId;\n }\n if (clientId !== constants_js_1.DeveloperSignOnClientId) {\n return \"common\";\n }\n return \"organizations\";\n}\n/**\n * @internal\n */\nfunction resolveAdditionallyAllowedTenantIds(additionallyAllowedTenants) {\n if (!additionallyAllowedTenants || additionallyAllowedTenants.length === 0) {\n return [];\n }\n if (additionallyAllowedTenants.includes(\"*\")) {\n return constants_js_1.ALL_TENANTS;\n }\n return additionallyAllowedTenants;\n}\n//# sourceMappingURL=tenantIdUtils.js.map","import fs from 'node:fs';\n\nlet isDockerCached;\n\nfunction hasDockerEnv() {\n\ttry {\n\t\tfs.statSync('/.dockerenv');\n\t\treturn true;\n\t} catch {\n\t\treturn false;\n\t}\n}\n\nfunction hasDockerCGroup() {\n\ttry {\n\t\treturn fs.readFileSync('/proc/self/cgroup', 'utf8').includes('docker');\n\t} catch {\n\t\treturn false;\n\t}\n}\n\nexport default function isDocker() {\n\t// TODO: Use `??=` when targeting Node.js 16.\n\tif (isDockerCached === undefined) {\n\t\tisDockerCached = hasDockerEnv() || hasDockerCGroup();\n\t}\n\n\treturn isDockerCached;\n}\n","import fs from 'node:fs';\nimport isDocker from 'is-docker';\n\nlet cachedResult;\n\n// Podman detection\nconst hasContainerEnv = () => {\n\ttry {\n\t\tfs.statSync('/run/.containerenv');\n\t\treturn true;\n\t} catch {\n\t\treturn false;\n\t}\n};\n\nexport default function isInsideContainer() {\n\t// TODO: Use `??=` when targeting Node.js 16.\n\tif (cachedResult === undefined) {\n\t\tcachedResult = hasContainerEnv() || isDocker();\n\t}\n\n\treturn cachedResult;\n}\n","import process from 'node:process';\nimport os from 'node:os';\nimport fs from 'node:fs';\nimport isInsideContainer from 'is-inside-container';\n\nconst isWsl = () => {\n\tif (process.platform !== 'linux') {\n\t\treturn false;\n\t}\n\n\tif (os.release().toLowerCase().includes('microsoft')) {\n\t\tif (isInsideContainer()) {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t}\n\n\ttry {\n\t\treturn fs.readFileSync('/proc/version', 'utf8').toLowerCase().includes('microsoft')\n\t\t\t? !isInsideContainer() : false;\n\t} catch {\n\t\treturn false;\n\t}\n};\n\nexport default process.env.__IS_WSL_TEST__ ? isWsl : isWsl();\n","import process from 'node:process';\nimport fs, {constants as fsConstants} from 'node:fs/promises';\nimport isWsl from 'is-wsl';\n\nexport const wslDrivesMountPoint = (() => {\n\t// Default value for \"root\" param\n\t// according to https://docs.microsoft.com/en-us/windows/wsl/wsl-config\n\tconst defaultMountPoint = '/mnt/';\n\n\tlet mountPoint;\n\n\treturn async function () {\n\t\tif (mountPoint) {\n\t\t\t// Return memoized mount point value\n\t\t\treturn mountPoint;\n\t\t}\n\n\t\tconst configFilePath = '/etc/wsl.conf';\n\n\t\tlet isConfigFileExists = false;\n\t\ttry {\n\t\t\tawait fs.access(configFilePath, fsConstants.F_OK);\n\t\t\tisConfigFileExists = true;\n\t\t} catch {}\n\n\t\tif (!isConfigFileExists) {\n\t\t\treturn defaultMountPoint;\n\t\t}\n\n\t\tconst configContent = await fs.readFile(configFilePath, {encoding: 'utf8'});\n\t\tconst configMountPoint = /(?.*)/g.exec(configContent);\n\n\t\tif (!configMountPoint) {\n\t\t\treturn defaultMountPoint;\n\t\t}\n\n\t\tmountPoint = configMountPoint.groups.mountPoint.trim();\n\t\tmountPoint = mountPoint.endsWith('/') ? mountPoint : `${mountPoint}/`;\n\n\t\treturn mountPoint;\n\t};\n})();\n\nexport const powerShellPathFromWsl = async () => {\n\tconst mountPoint = await wslDrivesMountPoint();\n\treturn `${mountPoint}c/Windows/System32/WindowsPowerShell/v1.0/powershell.exe`;\n};\n\nexport const powerShellPath = async () => {\n\tif (isWsl) {\n\t\treturn powerShellPathFromWsl();\n\t}\n\n\treturn `${process.env.SYSTEMROOT || process.env.windir || String.raw`C:\\Windows`}\\\\System32\\\\WindowsPowerShell\\\\v1.0\\\\powershell.exe`;\n};\n\nexport {default as isWsl} from 'is-wsl';\n","export default function defineLazyProperty(object, propertyName, valueGetter) {\n\tconst define = value => Object.defineProperty(object, propertyName, {value, enumerable: true, writable: true});\n\n\tObject.defineProperty(object, propertyName, {\n\t\tconfigurable: true,\n\t\tenumerable: true,\n\t\tget() {\n\t\t\tconst result = valueGetter();\n\t\t\tdefine(result);\n\t\t\treturn result;\n\t\t},\n\t\tset(value) {\n\t\t\tdefine(value);\n\t\t}\n\t});\n\n\treturn object;\n}\n","import {promisify} from 'node:util';\nimport process from 'node:process';\nimport {execFile} from 'node:child_process';\n\nconst execFileAsync = promisify(execFile);\n\nexport default async function defaultBrowserId() {\n\tif (process.platform !== 'darwin') {\n\t\tthrow new Error('macOS only');\n\t}\n\n\tconst {stdout} = await execFileAsync('defaults', ['read', 'com.apple.LaunchServices/com.apple.launchservices.secure', 'LSHandlers']);\n\n\t// `(?!-)` is to prevent matching `LSHandlerRoleAll = \"-\";`.\n\tconst match = /LSHandlerRoleAll = \"(?!-)(?[^\"]+?)\";\\s+?LSHandlerURLScheme = (?:http|https);/.exec(stdout);\n\n\tconst browserId = match?.groups.id ?? 'com.apple.Safari';\n\n\t// Correct the case for Safari's bundle identifier\n\tif (browserId === 'com.apple.safari') {\n\t\treturn 'com.apple.Safari';\n\t}\n\n\treturn browserId;\n}\n","import process from 'node:process';\nimport {promisify} from 'node:util';\nimport {execFile, execFileSync} from 'node:child_process';\n\nconst execFileAsync = promisify(execFile);\n\nexport async function runAppleScript(script, {humanReadableOutput = true, signal} = {}) {\n\tif (process.platform !== 'darwin') {\n\t\tthrow new Error('macOS only');\n\t}\n\n\tconst outputArguments = humanReadableOutput ? [] : ['-ss'];\n\n\tconst execOptions = {};\n\tif (signal) {\n\t\texecOptions.signal = signal;\n\t}\n\n\tconst {stdout} = await execFileAsync('osascript', ['-e', script, outputArguments], execOptions);\n\treturn stdout.trim();\n}\n\nexport function runAppleScriptSync(script, {humanReadableOutput = true} = {}) {\n\tif (process.platform !== 'darwin') {\n\t\tthrow new Error('macOS only');\n\t}\n\n\tconst outputArguments = humanReadableOutput ? [] : ['-ss'];\n\n\tconst stdout = execFileSync('osascript', ['-e', script, ...outputArguments], {\n\t\tencoding: 'utf8',\n\t\tstdio: ['ignore', 'pipe', 'ignore'],\n\t\ttimeout: 500,\n\t});\n\n\treturn stdout.trim();\n}\n","import {runAppleScript} from 'run-applescript';\n\nexport default async function bundleName(bundleId) {\n\treturn runAppleScript(`tell application \"Finder\" to set app_path to application file id \"${bundleId}\" as string\\ntell application \"System Events\" to get value of property list item \"CFBundleName\" of property list file (app_path & \":Contents:Info.plist\")`);\n}\n","import {promisify} from 'node:util';\nimport {execFile} from 'node:child_process';\n\nconst execFileAsync = promisify(execFile);\n\n// TODO: Fix the casing of bundle identifiers in the next major version.\n\n// Windows doesn't have browser IDs in the same way macOS/Linux does so we give fake\n// ones that look real and match the macOS/Linux versions for cross-platform apps.\nconst windowsBrowserProgIds = {\n\tMSEdgeHTM: {name: 'Edge', id: 'com.microsoft.edge'}, // The missing `L` is correct.\n\tMSEdgeBHTML: {name: 'Edge Beta', id: 'com.microsoft.edge.beta'},\n\tMSEdgeDHTML: {name: 'Edge Dev', id: 'com.microsoft.edge.dev'},\n\tAppXq0fevzme2pys62n3e0fbqa7peapykr8v: {name: 'Edge', id: 'com.microsoft.edge.old'},\n\tChromeHTML: {name: 'Chrome', id: 'com.google.chrome'},\n\tChromeBHTML: {name: 'Chrome Beta', id: 'com.google.chrome.beta'},\n\tChromeDHTML: {name: 'Chrome Dev', id: 'com.google.chrome.dev'},\n\tChromiumHTM: {name: 'Chromium', id: 'org.chromium.Chromium'},\n\tBraveHTML: {name: 'Brave', id: 'com.brave.Browser'},\n\tBraveBHTML: {name: 'Brave Beta', id: 'com.brave.Browser.beta'},\n\tBraveDHTML: {name: 'Brave Dev', id: 'com.brave.Browser.dev'},\n\tBraveSSHTM: {name: 'Brave Nightly', id: 'com.brave.Browser.nightly'},\n\tFirefoxURL: {name: 'Firefox', id: 'org.mozilla.firefox'},\n\tOperaStable: {name: 'Opera', id: 'com.operasoftware.Opera'},\n\tVivaldiHTM: {name: 'Vivaldi', id: 'com.vivaldi.Vivaldi'},\n\t'IE.HTTP': {name: 'Internet Explorer', id: 'com.microsoft.ie'},\n};\n\nexport const _windowsBrowserProgIdMap = new Map(Object.entries(windowsBrowserProgIds));\n\nexport class UnknownBrowserError extends Error {}\n\nexport default async function defaultBrowser(_execFileAsync = execFileAsync) {\n\tconst {stdout} = await _execFileAsync('reg', [\n\t\t'QUERY',\n\t\t' HKEY_CURRENT_USER\\\\Software\\\\Microsoft\\\\Windows\\\\Shell\\\\Associations\\\\UrlAssociations\\\\http\\\\UserChoice',\n\t\t'/v',\n\t\t'ProgId',\n\t]);\n\n\tconst match = /ProgId\\s*REG_SZ\\s*(?\\S+)/.exec(stdout);\n\tif (!match) {\n\t\tthrow new UnknownBrowserError(`Cannot find Windows browser in stdout: ${JSON.stringify(stdout)}`);\n\t}\n\n\tconst {id} = match.groups;\n\n\tconst browser = windowsBrowserProgIds[id];\n\tif (!browser) {\n\t\tthrow new UnknownBrowserError(`Unknown browser ID: ${id}`);\n\t}\n\n\treturn browser;\n}\n","import {promisify} from 'node:util';\nimport process from 'node:process';\nimport {execFile} from 'node:child_process';\nimport defaultBrowserId from 'default-browser-id';\nimport bundleName from 'bundle-name';\nimport windows from './windows.js';\n\nexport {_windowsBrowserProgIdMap} from './windows.js';\n\nconst execFileAsync = promisify(execFile);\n\n// Inlined: https://github.com/sindresorhus/titleize/blob/main/index.js\nconst titleize = string => string.toLowerCase().replaceAll(/(?:^|\\s|-)\\S/g, x => x.toUpperCase());\n\nexport default async function defaultBrowser() {\n\tif (process.platform === 'darwin') {\n\t\tconst id = await defaultBrowserId();\n\t\tconst name = await bundleName(id);\n\t\treturn {name, id};\n\t}\n\n\tif (process.platform === 'linux') {\n\t\tconst {stdout} = await execFileAsync('xdg-mime', ['query', 'default', 'x-scheme-handler/http']);\n\t\tconst id = stdout.trim();\n\t\tconst name = titleize(id.replace(/.desktop$/, '').replace('-', ' '));\n\t\treturn {name, id};\n\t}\n\n\tif (process.platform === 'win32') {\n\t\treturn windows();\n\t}\n\n\tthrow new Error('Only macOS, Linux, and Windows are supported');\n}\n","import process from 'node:process';\nimport {Buffer} from 'node:buffer';\nimport path from 'node:path';\nimport {fileURLToPath} from 'node:url';\nimport {promisify} from 'node:util';\nimport childProcess from 'node:child_process';\nimport fs, {constants as fsConstants} from 'node:fs/promises';\nimport {isWsl, powerShellPath} from 'wsl-utils';\nimport defineLazyProperty from 'define-lazy-prop';\nimport defaultBrowser from 'default-browser';\nimport isInsideContainer from 'is-inside-container';\n\nconst execFile = promisify(childProcess.execFile);\n\n// Path to included `xdg-open`.\nconst __dirname = path.dirname(fileURLToPath(import.meta.url));\nconst localXdgOpenPath = path.join(__dirname, 'xdg-open');\n\nconst {platform, arch} = process;\n\n/**\nGet the default browser name in Windows from WSL.\n\n@returns {Promise} Browser name.\n*/\nasync function getWindowsDefaultBrowserFromWsl() {\n\tconst powershellPath = await powerShellPath();\n\tconst rawCommand = String.raw`(Get-ItemProperty -Path \"HKCU:\\Software\\Microsoft\\Windows\\Shell\\Associations\\UrlAssociations\\http\\UserChoice\").ProgId`;\n\tconst encodedCommand = Buffer.from(rawCommand, 'utf16le').toString('base64');\n\n\tconst {stdout} = await execFile(\n\t\tpowershellPath,\n\t\t[\n\t\t\t'-NoProfile',\n\t\t\t'-NonInteractive',\n\t\t\t'-ExecutionPolicy',\n\t\t\t'Bypass',\n\t\t\t'-EncodedCommand',\n\t\t\tencodedCommand,\n\t\t],\n\t\t{encoding: 'utf8'},\n\t);\n\n\tconst progId = stdout.trim();\n\n\t// Map ProgId to browser IDs\n\tconst browserMap = {\n\t\tChromeHTML: 'com.google.chrome',\n\t\tBraveHTML: 'com.brave.Browser',\n\t\tMSEdgeHTM: 'com.microsoft.edge',\n\t\tFirefoxURL: 'org.mozilla.firefox',\n\t};\n\n\treturn browserMap[progId] ? {id: browserMap[progId]} : {};\n}\n\nconst pTryEach = async (array, mapper) => {\n\tlet latestError;\n\n\tfor (const item of array) {\n\t\ttry {\n\t\t\treturn await mapper(item); // eslint-disable-line no-await-in-loop\n\t\t} catch (error) {\n\t\t\tlatestError = error;\n\t\t}\n\t}\n\n\tthrow latestError;\n};\n\n// eslint-disable-next-line complexity\nconst baseOpen = async options => {\n\toptions = {\n\t\twait: false,\n\t\tbackground: false,\n\t\tnewInstance: false,\n\t\tallowNonzeroExitCode: false,\n\t\t...options,\n\t};\n\n\tif (Array.isArray(options.app)) {\n\t\treturn pTryEach(options.app, singleApp => baseOpen({\n\t\t\t...options,\n\t\t\tapp: singleApp,\n\t\t}));\n\t}\n\n\tlet {name: app, arguments: appArguments = []} = options.app ?? {};\n\tappArguments = [...appArguments];\n\n\tif (Array.isArray(app)) {\n\t\treturn pTryEach(app, appName => baseOpen({\n\t\t\t...options,\n\t\t\tapp: {\n\t\t\t\tname: appName,\n\t\t\t\targuments: appArguments,\n\t\t\t},\n\t\t}));\n\t}\n\n\tif (app === 'browser' || app === 'browserPrivate') {\n\t\t// IDs from default-browser for macOS and windows are the same\n\t\tconst ids = {\n\t\t\t'com.google.chrome': 'chrome',\n\t\t\t'google-chrome.desktop': 'chrome',\n\t\t\t'com.brave.Browser': 'brave',\n\t\t\t'org.mozilla.firefox': 'firefox',\n\t\t\t'firefox.desktop': 'firefox',\n\t\t\t'com.microsoft.msedge': 'edge',\n\t\t\t'com.microsoft.edge': 'edge',\n\t\t\t'com.microsoft.edgemac': 'edge',\n\t\t\t'microsoft-edge.desktop': 'edge',\n\t\t};\n\n\t\t// Incognito flags for each browser in `apps`.\n\t\tconst flags = {\n\t\t\tchrome: '--incognito',\n\t\t\tbrave: '--incognito',\n\t\t\tfirefox: '--private-window',\n\t\t\tedge: '--inPrivate',\n\t\t};\n\n\t\tconst browser = isWsl ? await getWindowsDefaultBrowserFromWsl() : await defaultBrowser();\n\t\tif (browser.id in ids) {\n\t\t\tconst browserName = ids[browser.id];\n\n\t\t\tif (app === 'browserPrivate') {\n\t\t\t\tappArguments.push(flags[browserName]);\n\t\t\t}\n\n\t\t\treturn baseOpen({\n\t\t\t\t...options,\n\t\t\t\tapp: {\n\t\t\t\t\tname: apps[browserName],\n\t\t\t\t\targuments: appArguments,\n\t\t\t\t},\n\t\t\t});\n\t\t}\n\n\t\tthrow new Error(`${browser.name} is not supported as a default browser`);\n\t}\n\n\tlet command;\n\tconst cliArguments = [];\n\tconst childProcessOptions = {};\n\n\tif (platform === 'darwin') {\n\t\tcommand = 'open';\n\n\t\tif (options.wait) {\n\t\t\tcliArguments.push('--wait-apps');\n\t\t}\n\n\t\tif (options.background) {\n\t\t\tcliArguments.push('--background');\n\t\t}\n\n\t\tif (options.newInstance) {\n\t\t\tcliArguments.push('--new');\n\t\t}\n\n\t\tif (app) {\n\t\t\tcliArguments.push('-a', app);\n\t\t}\n\t} else if (platform === 'win32' || (isWsl && !isInsideContainer() && !app)) {\n\t\tcommand = await powerShellPath();\n\n\t\tcliArguments.push(\n\t\t\t'-NoProfile',\n\t\t\t'-NonInteractive',\n\t\t\t'-ExecutionPolicy',\n\t\t\t'Bypass',\n\t\t\t'-EncodedCommand',\n\t\t);\n\n\t\tif (!isWsl) {\n\t\t\tchildProcessOptions.windowsVerbatimArguments = true;\n\t\t}\n\n\t\tconst encodedArguments = ['Start'];\n\n\t\tif (options.wait) {\n\t\t\tencodedArguments.push('-Wait');\n\t\t}\n\n\t\tif (app) {\n\t\t\t// Double quote with double quotes to ensure the inner quotes are passed through.\n\t\t\t// Inner quotes are delimited for PowerShell interpretation with backticks.\n\t\t\tencodedArguments.push(`\"\\`\"${app}\\`\"\"`);\n\t\t\tif (options.target) {\n\t\t\t\tappArguments.push(options.target);\n\t\t\t}\n\t\t} else if (options.target) {\n\t\t\tencodedArguments.push(`\"${options.target}\"`);\n\t\t}\n\n\t\tif (appArguments.length > 0) {\n\t\t\tappArguments = appArguments.map(argument => `\"\\`\"${argument}\\`\"\"`);\n\t\t\tencodedArguments.push('-ArgumentList', appArguments.join(','));\n\t\t}\n\n\t\t// Using Base64-encoded command, accepted by PowerShell, to allow special characters.\n\t\toptions.target = Buffer.from(encodedArguments.join(' '), 'utf16le').toString('base64');\n\t} else {\n\t\tif (app) {\n\t\t\tcommand = app;\n\t\t} else {\n\t\t\t// When bundled by Webpack, there's no actual package file path and no local `xdg-open`.\n\t\t\tconst isBundled = !__dirname || __dirname === '/';\n\n\t\t\t// Check if local `xdg-open` exists and is executable.\n\t\t\tlet exeLocalXdgOpen = false;\n\t\t\ttry {\n\t\t\t\tawait fs.access(localXdgOpenPath, fsConstants.X_OK);\n\t\t\t\texeLocalXdgOpen = true;\n\t\t\t} catch {}\n\n\t\t\tconst useSystemXdgOpen = process.versions.electron\n\t\t\t\t?? (platform === 'android' || isBundled || !exeLocalXdgOpen);\n\t\t\tcommand = useSystemXdgOpen ? 'xdg-open' : localXdgOpenPath;\n\t\t}\n\n\t\tif (appArguments.length > 0) {\n\t\t\tcliArguments.push(...appArguments);\n\t\t}\n\n\t\tif (!options.wait) {\n\t\t\t// `xdg-open` will block the process unless stdio is ignored\n\t\t\t// and it's detached from the parent even if it's unref'd.\n\t\t\tchildProcessOptions.stdio = 'ignore';\n\t\t\tchildProcessOptions.detached = true;\n\t\t}\n\t}\n\n\tif (platform === 'darwin' && appArguments.length > 0) {\n\t\tcliArguments.push('--args', ...appArguments);\n\t}\n\n\t// This has to come after `--args`.\n\tif (options.target) {\n\t\tcliArguments.push(options.target);\n\t}\n\n\tconst subprocess = childProcess.spawn(command, cliArguments, childProcessOptions);\n\n\tif (options.wait) {\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tsubprocess.once('error', reject);\n\n\t\t\tsubprocess.once('close', exitCode => {\n\t\t\t\tif (!options.allowNonzeroExitCode && exitCode > 0) {\n\t\t\t\t\treject(new Error(`Exited with code ${exitCode}`));\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tresolve(subprocess);\n\t\t\t});\n\t\t});\n\t}\n\n\tsubprocess.unref();\n\n\treturn subprocess;\n};\n\nconst open = (target, options) => {\n\tif (typeof target !== 'string') {\n\t\tthrow new TypeError('Expected a `target`');\n\t}\n\n\treturn baseOpen({\n\t\t...options,\n\t\ttarget,\n\t});\n};\n\nexport const openApp = (name, options) => {\n\tif (typeof name !== 'string' && !Array.isArray(name)) {\n\t\tthrow new TypeError('Expected a valid `name`');\n\t}\n\n\tconst {arguments: appArguments = []} = options ?? {};\n\tif (appArguments !== undefined && appArguments !== null && !Array.isArray(appArguments)) {\n\t\tthrow new TypeError('Expected `appArguments` as Array type');\n\t}\n\n\treturn baseOpen({\n\t\t...options,\n\t\tapp: {\n\t\t\tname,\n\t\t\targuments: appArguments,\n\t\t},\n\t});\n};\n\nfunction detectArchBinary(binary) {\n\tif (typeof binary === 'string' || Array.isArray(binary)) {\n\t\treturn binary;\n\t}\n\n\tconst {[arch]: archBinary} = binary;\n\n\tif (!archBinary) {\n\t\tthrow new Error(`${arch} is not supported`);\n\t}\n\n\treturn archBinary;\n}\n\nfunction detectPlatformBinary({[platform]: platformBinary}, {wsl}) {\n\tif (wsl && isWsl) {\n\t\treturn detectArchBinary(wsl);\n\t}\n\n\tif (!platformBinary) {\n\t\tthrow new Error(`${platform} is not supported`);\n\t}\n\n\treturn detectArchBinary(platformBinary);\n}\n\nexport const apps = {};\n\ndefineLazyProperty(apps, 'chrome', () => detectPlatformBinary({\n\tdarwin: 'google chrome',\n\twin32: 'chrome',\n\tlinux: ['google-chrome', 'google-chrome-stable', 'chromium'],\n}, {\n\twsl: {\n\t\tia32: '/mnt/c/Program Files (x86)/Google/Chrome/Application/chrome.exe',\n\t\tx64: ['/mnt/c/Program Files/Google/Chrome/Application/chrome.exe', '/mnt/c/Program Files (x86)/Google/Chrome/Application/chrome.exe'],\n\t},\n}));\n\ndefineLazyProperty(apps, 'brave', () => detectPlatformBinary({\n\tdarwin: 'brave browser',\n\twin32: 'brave',\n\tlinux: ['brave-browser', 'brave'],\n}, {\n\twsl: {\n\t\tia32: '/mnt/c/Program Files (x86)/BraveSoftware/Brave-Browser/Application/brave.exe',\n\t\tx64: ['/mnt/c/Program Files/BraveSoftware/Brave-Browser/Application/brave.exe', '/mnt/c/Program Files (x86)/BraveSoftware/Brave-Browser/Application/brave.exe'],\n\t},\n}));\n\ndefineLazyProperty(apps, 'firefox', () => detectPlatformBinary({\n\tdarwin: 'firefox',\n\twin32: String.raw`C:\\Program Files\\Mozilla Firefox\\firefox.exe`,\n\tlinux: 'firefox',\n}, {\n\twsl: '/mnt/c/Program Files/Mozilla Firefox/firefox.exe',\n}));\n\ndefineLazyProperty(apps, 'edge', () => detectPlatformBinary({\n\tdarwin: 'microsoft edge',\n\twin32: 'msedge',\n\tlinux: ['microsoft-edge', 'microsoft-edge-dev'],\n}, {\n\twsl: '/mnt/c/Program Files (x86)/Microsoft/Edge/Application/msedge.exe',\n}));\n\ndefineLazyProperty(apps, 'browser', () => 'browser');\n\ndefineLazyProperty(apps, 'browserPrivate', () => 'browserPrivate');\n\nexport default open;\n","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.generateMsalConfiguration = generateMsalConfiguration;\nexports.createMsalClient = createMsalClient;\nconst tslib_1 = require(\"tslib\");\nconst msal = tslib_1.__importStar(require(\"@azure/msal-node\"));\nconst logging_js_1 = require(\"../../util/logging.js\");\nconst msalPlugins_js_1 = require(\"./msalPlugins.js\");\nconst utils_js_1 = require(\"../utils.js\");\nconst errors_js_1 = require(\"../../errors.js\");\nconst identityClient_js_1 = require(\"../../client/identityClient.js\");\nconst regionalAuthority_js_1 = require(\"../../regionalAuthority.js\");\nconst logger_1 = require(\"@azure/logger\");\nconst tenantIdUtils_js_1 = require(\"../../util/tenantIdUtils.js\");\n/**\n * The default logger used if no logger was passed in by the credential.\n */\nconst msalLogger = (0, logging_js_1.credentialLogger)(\"MsalClient\");\n/**\n * Generates the configuration for MSAL (Microsoft Authentication Library).\n *\n * @param clientId - The client ID of the application.\n * @param tenantId - The tenant ID of the Azure Active Directory.\n * @param msalClientOptions - Optional. Additional options for creating the MSAL client.\n * @returns The MSAL configuration object.\n */\nfunction generateMsalConfiguration(clientId, tenantId, msalClientOptions = {}) {\n const resolvedTenant = (0, tenantIdUtils_js_1.resolveTenantId)(msalClientOptions.logger ?? msalLogger, tenantId, clientId);\n // TODO: move and reuse getIdentityClientAuthorityHost\n const authority = (0, utils_js_1.getAuthority)(resolvedTenant, (0, utils_js_1.getAuthorityHost)(msalClientOptions));\n const httpClient = new identityClient_js_1.IdentityClient({\n ...msalClientOptions.tokenCredentialOptions,\n authorityHost: authority,\n loggingOptions: msalClientOptions.loggingOptions,\n });\n const msalConfig = {\n auth: {\n clientId,\n authority,\n knownAuthorities: (0, utils_js_1.getKnownAuthorities)(resolvedTenant, authority, msalClientOptions.disableInstanceDiscovery),\n },\n system: {\n networkClient: httpClient,\n loggerOptions: {\n loggerCallback: (0, utils_js_1.defaultLoggerCallback)(msalClientOptions.logger ?? msalLogger),\n logLevel: (0, utils_js_1.getMSALLogLevel)((0, logger_1.getLogLevel)()),\n piiLoggingEnabled: msalClientOptions.loggingOptions?.enableUnsafeSupportLogging,\n },\n },\n };\n return msalConfig;\n}\n/**\n * Creates an instance of the MSAL (Microsoft Authentication Library) client.\n *\n * @param clientId - The client ID of the application.\n * @param tenantId - The tenant ID of the Azure Active Directory.\n * @param createMsalClientOptions - Optional. Additional options for creating the MSAL client.\n * @returns An instance of the MSAL client.\n *\n * @public\n */\nfunction createMsalClient(clientId, tenantId, createMsalClientOptions = {}) {\n const state = {\n msalConfig: generateMsalConfiguration(clientId, tenantId, createMsalClientOptions),\n cachedAccount: createMsalClientOptions.authenticationRecord\n ? (0, utils_js_1.publicToMsal)(createMsalClientOptions.authenticationRecord)\n : null,\n pluginConfiguration: msalPlugins_js_1.msalPlugins.generatePluginConfiguration(createMsalClientOptions),\n logger: createMsalClientOptions.logger ?? msalLogger,\n };\n const publicApps = new Map();\n async function getPublicApp(options = {}) {\n const appKey = options.enableCae ? \"CAE\" : \"default\";\n let publicClientApp = publicApps.get(appKey);\n if (publicClientApp) {\n state.logger.getToken.info(\"Existing PublicClientApplication found in cache, returning it.\");\n return publicClientApp;\n }\n // Initialize a new app and cache it\n state.logger.getToken.info(`Creating new PublicClientApplication with CAE ${options.enableCae ? \"enabled\" : \"disabled\"}.`);\n const cachePlugin = options.enableCae\n ? state.pluginConfiguration.cache.cachePluginCae\n : state.pluginConfiguration.cache.cachePlugin;\n state.msalConfig.auth.clientCapabilities = options.enableCae ? [\"cp1\"] : undefined;\n publicClientApp = new msal.PublicClientApplication({\n ...state.msalConfig,\n broker: { nativeBrokerPlugin: state.pluginConfiguration.broker.nativeBrokerPlugin },\n cache: { cachePlugin: await cachePlugin },\n });\n publicApps.set(appKey, publicClientApp);\n return publicClientApp;\n }\n const confidentialApps = new Map();\n async function getConfidentialApp(options = {}) {\n const appKey = options.enableCae ? \"CAE\" : \"default\";\n let confidentialClientApp = confidentialApps.get(appKey);\n if (confidentialClientApp) {\n state.logger.getToken.info(\"Existing ConfidentialClientApplication found in cache, returning it.\");\n return confidentialClientApp;\n }\n // Initialize a new app and cache it\n state.logger.getToken.info(`Creating new ConfidentialClientApplication with CAE ${options.enableCae ? \"enabled\" : \"disabled\"}.`);\n const cachePlugin = options.enableCae\n ? state.pluginConfiguration.cache.cachePluginCae\n : state.pluginConfiguration.cache.cachePlugin;\n state.msalConfig.auth.clientCapabilities = options.enableCae ? [\"cp1\"] : undefined;\n confidentialClientApp = new msal.ConfidentialClientApplication({\n ...state.msalConfig,\n broker: { nativeBrokerPlugin: state.pluginConfiguration.broker.nativeBrokerPlugin },\n cache: { cachePlugin: await cachePlugin },\n });\n confidentialApps.set(appKey, confidentialClientApp);\n return confidentialClientApp;\n }\n async function getTokenSilent(app, scopes, options = {}) {\n if (state.cachedAccount === null) {\n state.logger.getToken.info(\"No cached account found in local state.\");\n throw new errors_js_1.AuthenticationRequiredError({ scopes });\n }\n // Keep track and reuse the claims we received across challenges\n if (options.claims) {\n state.cachedClaims = options.claims;\n }\n const silentRequest = {\n account: state.cachedAccount,\n scopes,\n claims: state.cachedClaims,\n };\n if (state.pluginConfiguration.broker.isEnabled) {\n silentRequest.tokenQueryParameters ||= {};\n if (state.pluginConfiguration.broker.enableMsaPassthrough) {\n silentRequest.tokenQueryParameters[\"msal_request_type\"] = \"consumer_passthrough\";\n }\n }\n if (options.proofOfPossessionOptions) {\n silentRequest.shrNonce = options.proofOfPossessionOptions.nonce;\n silentRequest.authenticationScheme = \"pop\";\n silentRequest.resourceRequestMethod = options.proofOfPossessionOptions.resourceRequestMethod;\n silentRequest.resourceRequestUri = options.proofOfPossessionOptions.resourceRequestUrl;\n }\n state.logger.getToken.info(\"Attempting to acquire token silently\");\n try {\n return await app.acquireTokenSilent(silentRequest);\n }\n catch (err) {\n throw (0, utils_js_1.handleMsalError)(scopes, err, options);\n }\n }\n /**\n * Builds an authority URL for the given request. The authority may be different than the one used when creating the MSAL client\n * if the user is creating cross-tenant requests\n */\n function calculateRequestAuthority(options) {\n if (options?.tenantId) {\n return (0, utils_js_1.getAuthority)(options.tenantId, (0, utils_js_1.getAuthorityHost)(createMsalClientOptions));\n }\n return state.msalConfig.auth.authority;\n }\n /**\n * Performs silent authentication using MSAL to acquire an access token.\n * If silent authentication fails, falls back to interactive authentication.\n *\n * @param msalApp - The MSAL application instance.\n * @param scopes - The scopes for which to acquire the access token.\n * @param options - The options for acquiring the access token.\n * @param onAuthenticationRequired - A callback function to handle interactive authentication when silent authentication fails.\n * @returns A promise that resolves to an AccessToken object containing the access token and its expiration timestamp.\n */\n async function withSilentAuthentication(msalApp, scopes, options, onAuthenticationRequired) {\n let response = null;\n try {\n response = await getTokenSilent(msalApp, scopes, options);\n }\n catch (e) {\n if (e.name !== \"AuthenticationRequiredError\") {\n throw e;\n }\n if (options.disableAutomaticAuthentication) {\n throw new errors_js_1.AuthenticationRequiredError({\n scopes,\n getTokenOptions: options,\n message: \"Automatic authentication has been disabled. You may call the authentication() method.\",\n });\n }\n }\n // Silent authentication failed\n if (response === null) {\n try {\n response = await onAuthenticationRequired();\n }\n catch (err) {\n throw (0, utils_js_1.handleMsalError)(scopes, err, options);\n }\n }\n // At this point we should have a token, process it\n (0, utils_js_1.ensureValidMsalToken)(scopes, response, options);\n state.cachedAccount = response?.account ?? null;\n state.logger.getToken.info((0, logging_js_1.formatSuccess)(scopes));\n return {\n token: response.accessToken,\n expiresOnTimestamp: response.expiresOn.getTime(),\n refreshAfterTimestamp: response.refreshOn?.getTime(),\n tokenType: response.tokenType,\n };\n }\n async function getTokenByClientSecret(scopes, clientSecret, options = {}) {\n state.logger.getToken.info(`Attempting to acquire token using client secret`);\n state.msalConfig.auth.clientSecret = clientSecret;\n const msalApp = await getConfidentialApp(options);\n try {\n const response = await msalApp.acquireTokenByClientCredential({\n scopes,\n authority: calculateRequestAuthority(options),\n azureRegion: (0, regionalAuthority_js_1.calculateRegionalAuthority)(),\n claims: options?.claims,\n });\n (0, utils_js_1.ensureValidMsalToken)(scopes, response, options);\n state.logger.getToken.info((0, logging_js_1.formatSuccess)(scopes));\n return {\n token: response.accessToken,\n expiresOnTimestamp: response.expiresOn.getTime(),\n refreshAfterTimestamp: response.refreshOn?.getTime(),\n tokenType: response.tokenType,\n };\n }\n catch (err) {\n throw (0, utils_js_1.handleMsalError)(scopes, err, options);\n }\n }\n async function getTokenByClientAssertion(scopes, clientAssertion, options = {}) {\n state.logger.getToken.info(`Attempting to acquire token using client assertion`);\n state.msalConfig.auth.clientAssertion = clientAssertion;\n const msalApp = await getConfidentialApp(options);\n try {\n const response = await msalApp.acquireTokenByClientCredential({\n scopes,\n authority: calculateRequestAuthority(options),\n azureRegion: (0, regionalAuthority_js_1.calculateRegionalAuthority)(),\n claims: options?.claims,\n clientAssertion,\n });\n (0, utils_js_1.ensureValidMsalToken)(scopes, response, options);\n state.logger.getToken.info((0, logging_js_1.formatSuccess)(scopes));\n return {\n token: response.accessToken,\n expiresOnTimestamp: response.expiresOn.getTime(),\n refreshAfterTimestamp: response.refreshOn?.getTime(),\n tokenType: response.tokenType,\n };\n }\n catch (err) {\n throw (0, utils_js_1.handleMsalError)(scopes, err, options);\n }\n }\n async function getTokenByClientCertificate(scopes, certificate, options = {}) {\n state.logger.getToken.info(`Attempting to acquire token using client certificate`);\n state.msalConfig.auth.clientCertificate = certificate;\n const msalApp = await getConfidentialApp(options);\n try {\n const response = await msalApp.acquireTokenByClientCredential({\n scopes,\n authority: calculateRequestAuthority(options),\n azureRegion: (0, regionalAuthority_js_1.calculateRegionalAuthority)(),\n claims: options?.claims,\n });\n (0, utils_js_1.ensureValidMsalToken)(scopes, response, options);\n state.logger.getToken.info((0, logging_js_1.formatSuccess)(scopes));\n return {\n token: response.accessToken,\n expiresOnTimestamp: response.expiresOn.getTime(),\n refreshAfterTimestamp: response.refreshOn?.getTime(),\n tokenType: response.tokenType,\n };\n }\n catch (err) {\n throw (0, utils_js_1.handleMsalError)(scopes, err, options);\n }\n }\n async function getTokenByDeviceCode(scopes, deviceCodeCallback, options = {}) {\n state.logger.getToken.info(`Attempting to acquire token using device code`);\n const msalApp = await getPublicApp(options);\n return withSilentAuthentication(msalApp, scopes, options, () => {\n const requestOptions = {\n scopes,\n cancel: options?.abortSignal?.aborted ?? false,\n deviceCodeCallback,\n authority: calculateRequestAuthority(options),\n claims: options?.claims,\n };\n const deviceCodeRequest = msalApp.acquireTokenByDeviceCode(requestOptions);\n if (options.abortSignal) {\n options.abortSignal.addEventListener(\"abort\", () => {\n requestOptions.cancel = true;\n });\n }\n return deviceCodeRequest;\n });\n }\n async function getTokenByUsernamePassword(scopes, username, password, options = {}) {\n state.logger.getToken.info(`Attempting to acquire token using username and password`);\n const msalApp = await getPublicApp(options);\n return withSilentAuthentication(msalApp, scopes, options, () => {\n const requestOptions = {\n scopes,\n username,\n password,\n authority: calculateRequestAuthority(options),\n claims: options?.claims,\n };\n return msalApp.acquireTokenByUsernamePassword(requestOptions);\n });\n }\n function getActiveAccount() {\n if (!state.cachedAccount) {\n return undefined;\n }\n return (0, utils_js_1.msalToPublic)(clientId, state.cachedAccount);\n }\n async function getTokenByAuthorizationCode(scopes, redirectUri, authorizationCode, clientSecret, options = {}) {\n state.logger.getToken.info(`Attempting to acquire token using authorization code`);\n let msalApp;\n if (clientSecret) {\n // If a client secret is provided, we need to use a confidential client application\n // See https://learn.microsoft.com/entra/identity-platform/v2-oauth2-auth-code-flow#request-an-access-token-with-a-client_secret\n state.msalConfig.auth.clientSecret = clientSecret;\n msalApp = await getConfidentialApp(options);\n }\n else {\n msalApp = await getPublicApp(options);\n }\n return withSilentAuthentication(msalApp, scopes, options, () => {\n return msalApp.acquireTokenByCode({\n scopes,\n redirectUri,\n code: authorizationCode,\n authority: calculateRequestAuthority(options),\n claims: options?.claims,\n });\n });\n }\n async function getTokenOnBehalfOf(scopes, userAssertionToken, clientCredentials, options = {}) {\n msalLogger.getToken.info(`Attempting to acquire token on behalf of another user`);\n if (typeof clientCredentials === \"string\") {\n // Client secret\n msalLogger.getToken.info(`Using client secret for on behalf of flow`);\n state.msalConfig.auth.clientSecret = clientCredentials;\n }\n else if (typeof clientCredentials === \"function\") {\n // Client Assertion\n msalLogger.getToken.info(`Using client assertion callback for on behalf of flow`);\n state.msalConfig.auth.clientAssertion = clientCredentials;\n }\n else {\n // Client certificate\n msalLogger.getToken.info(`Using client certificate for on behalf of flow`);\n state.msalConfig.auth.clientCertificate = clientCredentials;\n }\n const msalApp = await getConfidentialApp(options);\n try {\n const response = await msalApp.acquireTokenOnBehalfOf({\n scopes,\n authority: calculateRequestAuthority(options),\n claims: options.claims,\n oboAssertion: userAssertionToken,\n });\n (0, utils_js_1.ensureValidMsalToken)(scopes, response, options);\n msalLogger.getToken.info((0, logging_js_1.formatSuccess)(scopes));\n return {\n token: response.accessToken,\n expiresOnTimestamp: response.expiresOn.getTime(),\n refreshAfterTimestamp: response.refreshOn?.getTime(),\n tokenType: response.tokenType,\n };\n }\n catch (err) {\n throw (0, utils_js_1.handleMsalError)(scopes, err, options);\n }\n }\n /**\n * Creates a base interactive request configuration for MSAL interactive authentication.\n * This is shared between interactive and brokered authentication flows.\n */\n function createBaseInteractiveRequest(scopes, options) {\n return {\n openBrowser: async (url) => {\n const open = await import(\"open\");\n await open.default(url, { newInstance: true });\n },\n scopes,\n authority: calculateRequestAuthority(options),\n claims: options?.claims,\n loginHint: options?.loginHint,\n errorTemplate: options?.browserCustomizationOptions?.errorMessage,\n successTemplate: options?.browserCustomizationOptions?.successMessage,\n prompt: options?.loginHint ? \"login\" : \"select_account\",\n };\n }\n /**\n * @internal\n */\n async function getBrokeredTokenInternal(scopes, useDefaultBrokerAccount, options = {}) {\n msalLogger.verbose(\"Authentication will resume through the broker\");\n const app = await getPublicApp(options);\n const interactiveRequest = createBaseInteractiveRequest(scopes, options);\n if (state.pluginConfiguration.broker.parentWindowHandle) {\n interactiveRequest.windowHandle = Buffer.from(state.pluginConfiguration.broker.parentWindowHandle);\n }\n else {\n // this is a bug, as the pluginConfiguration handler should validate this case.\n msalLogger.warning(\"Parent window handle is not specified for the broker. This may cause unexpected behavior. Please provide the parentWindowHandle.\");\n }\n if (state.pluginConfiguration.broker.enableMsaPassthrough) {\n (interactiveRequest.tokenQueryParameters ??= {})[\"msal_request_type\"] =\n \"consumer_passthrough\";\n }\n if (useDefaultBrokerAccount) {\n interactiveRequest.prompt = \"none\";\n msalLogger.verbose(\"Attempting broker authentication using the default broker account\");\n }\n else {\n msalLogger.verbose(\"Attempting broker authentication without the default broker account\");\n }\n if (options.proofOfPossessionOptions) {\n interactiveRequest.shrNonce = options.proofOfPossessionOptions.nonce;\n interactiveRequest.authenticationScheme = \"pop\";\n interactiveRequest.resourceRequestMethod =\n options.proofOfPossessionOptions.resourceRequestMethod;\n interactiveRequest.resourceRequestUri = options.proofOfPossessionOptions.resourceRequestUrl;\n }\n try {\n return await app.acquireTokenInteractive(interactiveRequest);\n }\n catch (e) {\n msalLogger.verbose(`Failed to authenticate through the broker: ${e.message}`);\n if (options.disableAutomaticAuthentication) {\n throw new errors_js_1.AuthenticationRequiredError({\n scopes,\n getTokenOptions: options,\n message: \"Cannot silently authenticate with default broker account.\",\n });\n }\n // If we tried to use the default broker account and failed, fall back to interactive authentication\n if (useDefaultBrokerAccount) {\n return getBrokeredTokenInternal(scopes, false, options);\n }\n else {\n throw e;\n }\n }\n }\n /**\n * A helper function that supports brokered authentication through the MSAL's public application.\n *\n * When useDefaultBrokerAccount is true, the method will attempt to authenticate using the default broker account.\n * If the default broker account is not available, the method will fall back to interactive authentication.\n */\n async function getBrokeredToken(scopes, useDefaultBrokerAccount, options = {}) {\n msalLogger.getToken.info(`Attempting to acquire token using brokered authentication with useDefaultBrokerAccount: ${useDefaultBrokerAccount}`);\n const response = await getBrokeredTokenInternal(scopes, useDefaultBrokerAccount, options);\n (0, utils_js_1.ensureValidMsalToken)(scopes, response, options);\n state.cachedAccount = response?.account ?? null;\n state.logger.getToken.info((0, logging_js_1.formatSuccess)(scopes));\n return {\n token: response.accessToken,\n expiresOnTimestamp: response.expiresOn.getTime(),\n refreshAfterTimestamp: response.refreshOn?.getTime(),\n tokenType: response.tokenType,\n };\n }\n async function getTokenByInteractiveRequest(scopes, options = {}) {\n msalLogger.getToken.info(`Attempting to acquire token interactively`);\n const app = await getPublicApp(options);\n return withSilentAuthentication(app, scopes, options, async () => {\n const interactiveRequest = createBaseInteractiveRequest(scopes, options);\n if (state.pluginConfiguration.broker.isEnabled) {\n return getBrokeredTokenInternal(scopes, state.pluginConfiguration.broker.useDefaultBrokerAccount ?? false, options);\n }\n if (options.proofOfPossessionOptions) {\n interactiveRequest.shrNonce = options.proofOfPossessionOptions.nonce;\n interactiveRequest.authenticationScheme = \"pop\";\n interactiveRequest.resourceRequestMethod =\n options.proofOfPossessionOptions.resourceRequestMethod;\n interactiveRequest.resourceRequestUri = options.proofOfPossessionOptions.resourceRequestUrl;\n }\n return app.acquireTokenInteractive(interactiveRequest);\n });\n }\n return {\n getActiveAccount,\n getBrokeredToken,\n getTokenByClientSecret,\n getTokenByClientAssertion,\n getTokenByClientCertificate,\n getTokenByDeviceCode,\n getTokenByUsernamePassword,\n getTokenByAuthorizationCode,\n getTokenOnBehalfOf,\n getTokenByInteractiveRequest,\n };\n}\n//# sourceMappingURL=msalClient.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ClientCertificateCredential = void 0;\nexports.parseCertificate = parseCertificate;\nconst msalClient_js_1 = require(\"../msal/nodeFlows/msalClient.js\");\nconst node_crypto_1 = require(\"node:crypto\");\nconst tenantIdUtils_js_1 = require(\"../util/tenantIdUtils.js\");\nconst logging_js_1 = require(\"../util/logging.js\");\nconst promises_1 = require(\"node:fs/promises\");\nconst tracing_js_1 = require(\"../util/tracing.js\");\nconst credentialName = \"ClientCertificateCredential\";\nconst logger = (0, logging_js_1.credentialLogger)(credentialName);\n/**\n * Enables authentication to Microsoft Entra ID using a PEM-encoded\n * certificate that is assigned to an App Registration. More information\n * on how to configure certificate authentication can be found here:\n *\n * https://learn.microsoft.com/azure/active-directory/develop/active-directory-certificate-credentials#register-your-certificate-with-azure-ad\n *\n */\nclass ClientCertificateCredential {\n tenantId;\n additionallyAllowedTenantIds;\n certificateConfiguration;\n sendCertificateChain;\n msalClient;\n constructor(tenantId, clientId, certificatePathOrConfiguration, options = {}) {\n if (!tenantId || !clientId) {\n throw new Error(`${credentialName}: tenantId and clientId are required parameters.`);\n }\n this.tenantId = tenantId;\n this.additionallyAllowedTenantIds = (0, tenantIdUtils_js_1.resolveAdditionallyAllowedTenantIds)(options?.additionallyAllowedTenants);\n this.sendCertificateChain = options.sendCertificateChain;\n this.certificateConfiguration = {\n ...(typeof certificatePathOrConfiguration === \"string\"\n ? {\n certificatePath: certificatePathOrConfiguration,\n }\n : certificatePathOrConfiguration),\n };\n const certificate = this.certificateConfiguration\n .certificate;\n const certificatePath = this.certificateConfiguration\n .certificatePath;\n if (!this.certificateConfiguration || !(certificate || certificatePath)) {\n throw new Error(`${credentialName}: Provide either a PEM certificate in string form, or the path to that certificate in the filesystem. To troubleshoot, visit https://aka.ms/azsdk/js/identity/serviceprincipalauthentication/troubleshoot.`);\n }\n if (certificate && certificatePath) {\n throw new Error(`${credentialName}: To avoid unexpected behaviors, providing both the contents of a PEM certificate and the path to a PEM certificate is forbidden. To troubleshoot, visit https://aka.ms/azsdk/js/identity/serviceprincipalauthentication/troubleshoot.`);\n }\n this.msalClient = (0, msalClient_js_1.createMsalClient)(clientId, tenantId, {\n ...options,\n logger,\n tokenCredentialOptions: options,\n });\n }\n /**\n * Authenticates with Microsoft Entra ID and returns an access token if successful.\n * If authentication fails, a {@link CredentialUnavailableError} will be thrown with the details of the failure.\n *\n * @param scopes - The list of scopes for which the token will have access.\n * @param options - The options used to configure any requests this\n * TokenCredential implementation might make.\n */\n async getToken(scopes, options = {}) {\n return tracing_js_1.tracingClient.withSpan(`${credentialName}.getToken`, options, async (newOptions) => {\n newOptions.tenantId = (0, tenantIdUtils_js_1.processMultiTenantRequest)(this.tenantId, newOptions, this.additionallyAllowedTenantIds, logger);\n const arrayScopes = Array.isArray(scopes) ? scopes : [scopes];\n const certificate = await this.buildClientCertificate();\n return this.msalClient.getTokenByClientCertificate(arrayScopes, certificate, newOptions);\n });\n }\n async buildClientCertificate() {\n const parts = await parseCertificate(this.certificateConfiguration, this.sendCertificateChain ?? false);\n let privateKey;\n if (this.certificateConfiguration.certificatePassword !== undefined) {\n privateKey = (0, node_crypto_1.createPrivateKey)({\n key: parts.certificateContents,\n passphrase: this.certificateConfiguration.certificatePassword,\n format: \"pem\",\n })\n .export({\n format: \"pem\",\n type: \"pkcs8\",\n })\n .toString();\n }\n else {\n privateKey = parts.certificateContents;\n }\n return {\n thumbprint: parts.thumbprint,\n thumbprintSha256: parts.thumbprintSha256,\n privateKey,\n x5c: parts.x5c,\n };\n }\n}\nexports.ClientCertificateCredential = ClientCertificateCredential;\n/**\n * Parses a certificate into its relevant parts\n *\n * @param certificateConfiguration - The certificate contents or path to the certificate\n * @param sendCertificateChain - true if the entire certificate chain should be sent for SNI, false otherwise\n * @returns The parsed certificate parts and the certificate contents\n */\nasync function parseCertificate(certificateConfiguration, sendCertificateChain) {\n const certificate = certificateConfiguration.certificate;\n const certificatePath = certificateConfiguration\n .certificatePath;\n const certificateContents = certificate || (await (0, promises_1.readFile)(certificatePath, \"utf8\"));\n const x5c = sendCertificateChain ? certificateContents : undefined;\n const certificatePattern = /(-+BEGIN CERTIFICATE-+)(\\n\\r?|\\r\\n?)([A-Za-z0-9+/\\n\\r]+=*)(\\n\\r?|\\r\\n?)(-+END CERTIFICATE-+)/g;\n const publicKeys = [];\n // Match all possible certificates, in the order they are in the file. These will form the chain that is used for x5c\n let match;\n do {\n match = certificatePattern.exec(certificateContents);\n if (match) {\n publicKeys.push(match[3]);\n }\n } while (match);\n if (publicKeys.length === 0) {\n throw new Error(\"The file at the specified path does not contain a PEM-encoded certificate.\");\n }\n const thumbprint = (0, node_crypto_1.createHash)(\"sha1\") // CodeQL [SM04514] Needed for backward compatibility reason\n .update(Buffer.from(publicKeys[0], \"base64\"))\n .digest(\"hex\")\n .toUpperCase();\n const thumbprintSha256 = (0, node_crypto_1.createHash)(\"sha256\")\n .update(Buffer.from(publicKeys[0], \"base64\"))\n .digest(\"hex\")\n .toUpperCase();\n return {\n certificateContents,\n thumbprintSha256,\n thumbprint,\n x5c,\n };\n}\n//# sourceMappingURL=clientCertificateCredential.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ensureScopes = ensureScopes;\nexports.ensureValidScopeForDevTimeCreds = ensureValidScopeForDevTimeCreds;\nexports.getScopeResource = getScopeResource;\nconst logging_js_1 = require(\"./logging.js\");\n/**\n * Ensures the scopes value is an array.\n * @internal\n */\nfunction ensureScopes(scopes) {\n return Array.isArray(scopes) ? scopes : [scopes];\n}\n/**\n * Throws if the received scope is not valid.\n * @internal\n */\nfunction ensureValidScopeForDevTimeCreds(scope, logger) {\n if (!scope.match(/^[0-9a-zA-Z-_.:/]+$/)) {\n const error = new Error(\"Invalid scope was specified by the user or calling client\");\n logger.getToken.info((0, logging_js_1.formatError)(scope, error));\n throw error;\n }\n}\n/**\n * Returns the resource out of a scope.\n * @internal\n */\nfunction getScopeResource(scope) {\n return scope.replace(/\\/.default$/, \"\");\n}\n//# sourceMappingURL=scopeUtils.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ClientSecretCredential = void 0;\nconst msalClient_js_1 = require(\"../msal/nodeFlows/msalClient.js\");\nconst tenantIdUtils_js_1 = require(\"../util/tenantIdUtils.js\");\nconst errors_js_1 = require(\"../errors.js\");\nconst logging_js_1 = require(\"../util/logging.js\");\nconst scopeUtils_js_1 = require(\"../util/scopeUtils.js\");\nconst tracing_js_1 = require(\"../util/tracing.js\");\nconst logger = (0, logging_js_1.credentialLogger)(\"ClientSecretCredential\");\n/**\n * Enables authentication to Microsoft Entra ID using a client secret\n * that was generated for an App Registration. More information on how\n * to configure a client secret can be found here:\n *\n * https://learn.microsoft.com/entra/identity-platform/quickstart-configure-app-access-web-apis#add-credentials-to-your-web-application\n *\n */\nclass ClientSecretCredential {\n tenantId;\n additionallyAllowedTenantIds;\n msalClient;\n clientSecret;\n /**\n * Creates an instance of the ClientSecretCredential with the details\n * needed to authenticate against Microsoft Entra ID with a client\n * secret.\n *\n * @param tenantId - The Microsoft Entra tenant (directory) ID.\n * @param clientId - The client (application) ID of an App Registration in the tenant.\n * @param clientSecret - A client secret that was generated for the App Registration.\n * @param options - Options for configuring the client which makes the authentication request.\n */\n constructor(tenantId, clientId, clientSecret, options = {}) {\n if (!tenantId) {\n throw new errors_js_1.CredentialUnavailableError(\"ClientSecretCredential: tenantId is a required parameter. To troubleshoot, visit https://aka.ms/azsdk/js/identity/serviceprincipalauthentication/troubleshoot.\");\n }\n if (!clientId) {\n throw new errors_js_1.CredentialUnavailableError(\"ClientSecretCredential: clientId is a required parameter. To troubleshoot, visit https://aka.ms/azsdk/js/identity/serviceprincipalauthentication/troubleshoot.\");\n }\n if (!clientSecret) {\n throw new errors_js_1.CredentialUnavailableError(\"ClientSecretCredential: clientSecret is a required parameter. To troubleshoot, visit https://aka.ms/azsdk/js/identity/serviceprincipalauthentication/troubleshoot.\");\n }\n this.clientSecret = clientSecret;\n this.tenantId = tenantId;\n this.additionallyAllowedTenantIds = (0, tenantIdUtils_js_1.resolveAdditionallyAllowedTenantIds)(options?.additionallyAllowedTenants);\n this.msalClient = (0, msalClient_js_1.createMsalClient)(clientId, tenantId, {\n ...options,\n logger,\n tokenCredentialOptions: options,\n });\n }\n /**\n * Authenticates with Microsoft Entra ID and returns an access token if successful.\n * If authentication fails, a {@link CredentialUnavailableError} will be thrown with the details of the failure.\n *\n * @param scopes - The list of scopes for which the token will have access.\n * @param options - The options used to configure any requests this\n * TokenCredential implementation might make.\n */\n async getToken(scopes, options = {}) {\n return tracing_js_1.tracingClient.withSpan(`${this.constructor.name}.getToken`, options, async (newOptions) => {\n newOptions.tenantId = (0, tenantIdUtils_js_1.processMultiTenantRequest)(this.tenantId, newOptions, this.additionallyAllowedTenantIds, logger);\n const arrayScopes = (0, scopeUtils_js_1.ensureScopes)(scopes);\n return this.msalClient.getTokenByClientSecret(arrayScopes, this.clientSecret, newOptions);\n });\n }\n}\nexports.ClientSecretCredential = ClientSecretCredential;\n//# sourceMappingURL=clientSecretCredential.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.UsernamePasswordCredential = void 0;\nconst msalClient_js_1 = require(\"../msal/nodeFlows/msalClient.js\");\nconst tenantIdUtils_js_1 = require(\"../util/tenantIdUtils.js\");\nconst errors_js_1 = require(\"../errors.js\");\nconst logging_js_1 = require(\"../util/logging.js\");\nconst scopeUtils_js_1 = require(\"../util/scopeUtils.js\");\nconst tracing_js_1 = require(\"../util/tracing.js\");\nconst logger = (0, logging_js_1.credentialLogger)(\"UsernamePasswordCredential\");\n/**\n * Enables authentication to Microsoft Entra ID with a user's\n * username and password. This credential requires a high degree of\n * trust so you should only use it when other, more secure credential\n * types can't be used.\n * @deprecated UsernamePasswordCredential is deprecated. Use a more secure credential. See https://aka.ms/azsdk/identity/mfa for details.\n */\nclass UsernamePasswordCredential {\n tenantId;\n additionallyAllowedTenantIds;\n msalClient;\n username;\n password;\n /**\n * Creates an instance of the UsernamePasswordCredential with the details\n * needed to authenticate against Microsoft Entra ID with a username\n * and password.\n *\n * @param tenantId - The Microsoft Entra tenant (directory).\n * @param clientId - The client (application) ID of an App Registration in the tenant.\n * @param username - The user account's e-mail address (user name).\n * @param password - The user account's account password\n * @param options - Options for configuring the client which makes the authentication request.\n */\n constructor(tenantId, clientId, username, password, options = {}) {\n if (!tenantId) {\n throw new errors_js_1.CredentialUnavailableError(\"UsernamePasswordCredential: tenantId is a required parameter. To troubleshoot, visit https://aka.ms/azsdk/js/identity/usernamepasswordcredential/troubleshoot.\");\n }\n if (!clientId) {\n throw new errors_js_1.CredentialUnavailableError(\"UsernamePasswordCredential: clientId is a required parameter. To troubleshoot, visit https://aka.ms/azsdk/js/identity/usernamepasswordcredential/troubleshoot.\");\n }\n if (!username) {\n throw new errors_js_1.CredentialUnavailableError(\"UsernamePasswordCredential: username is a required parameter. To troubleshoot, visit https://aka.ms/azsdk/js/identity/usernamepasswordcredential/troubleshoot.\");\n }\n if (!password) {\n throw new errors_js_1.CredentialUnavailableError(\"UsernamePasswordCredential: password is a required parameter. To troubleshoot, visit https://aka.ms/azsdk/js/identity/usernamepasswordcredential/troubleshoot.\");\n }\n this.tenantId = tenantId;\n this.additionallyAllowedTenantIds = (0, tenantIdUtils_js_1.resolveAdditionallyAllowedTenantIds)(options?.additionallyAllowedTenants);\n this.username = username;\n this.password = password;\n this.msalClient = (0, msalClient_js_1.createMsalClient)(clientId, this.tenantId, {\n ...options,\n tokenCredentialOptions: options ?? {},\n });\n }\n /**\n * Authenticates with Microsoft Entra ID and returns an access token if successful.\n * If authentication fails, a {@link CredentialUnavailableError} will be thrown with the details of the failure.\n *\n * If the user provided the option `disableAutomaticAuthentication`,\n * once the token can't be retrieved silently,\n * this method won't attempt to request user interaction to retrieve the token.\n *\n * @param scopes - The list of scopes for which the token will have access.\n * @param options - The options used to configure any requests this\n * TokenCredential implementation might make.\n */\n async getToken(scopes, options = {}) {\n return tracing_js_1.tracingClient.withSpan(`${this.constructor.name}.getToken`, options, async (newOptions) => {\n newOptions.tenantId = (0, tenantIdUtils_js_1.processMultiTenantRequest)(this.tenantId, newOptions, this.additionallyAllowedTenantIds, logger);\n const arrayScopes = (0, scopeUtils_js_1.ensureScopes)(scopes);\n return this.msalClient.getTokenByUsernamePassword(arrayScopes, this.username, this.password, newOptions);\n });\n }\n}\nexports.UsernamePasswordCredential = UsernamePasswordCredential;\n//# sourceMappingURL=usernamePasswordCredential.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.EnvironmentCredential = exports.AllSupportedEnvironmentVariables = void 0;\nexports.getSendCertificateChain = getSendCertificateChain;\nconst errors_js_1 = require(\"../errors.js\");\nconst logging_js_1 = require(\"../util/logging.js\");\nconst clientCertificateCredential_js_1 = require(\"./clientCertificateCredential.js\");\nconst clientSecretCredential_js_1 = require(\"./clientSecretCredential.js\");\nconst usernamePasswordCredential_js_1 = require(\"./usernamePasswordCredential.js\");\nconst tenantIdUtils_js_1 = require(\"../util/tenantIdUtils.js\");\nconst tracing_js_1 = require(\"../util/tracing.js\");\n/**\n * Contains the list of all supported environment variable names so that an\n * appropriate error message can be generated when no credentials can be\n * configured.\n *\n * @internal\n */\nexports.AllSupportedEnvironmentVariables = [\n \"AZURE_TENANT_ID\",\n \"AZURE_CLIENT_ID\",\n \"AZURE_CLIENT_SECRET\",\n \"AZURE_CLIENT_CERTIFICATE_PATH\",\n \"AZURE_CLIENT_CERTIFICATE_PASSWORD\",\n \"AZURE_USERNAME\",\n \"AZURE_PASSWORD\",\n \"AZURE_ADDITIONALLY_ALLOWED_TENANTS\",\n \"AZURE_CLIENT_SEND_CERTIFICATE_CHAIN\",\n];\nfunction getAdditionallyAllowedTenants() {\n const additionallyAllowedValues = process.env.AZURE_ADDITIONALLY_ALLOWED_TENANTS ?? \"\";\n return additionallyAllowedValues.split(\";\");\n}\nconst credentialName = \"EnvironmentCredential\";\nconst logger = (0, logging_js_1.credentialLogger)(credentialName);\nfunction getSendCertificateChain() {\n const sendCertificateChain = (process.env.AZURE_CLIENT_SEND_CERTIFICATE_CHAIN ?? \"\").toLowerCase();\n const result = sendCertificateChain === \"true\" || sendCertificateChain === \"1\";\n logger.verbose(`AZURE_CLIENT_SEND_CERTIFICATE_CHAIN: ${process.env.AZURE_CLIENT_SEND_CERTIFICATE_CHAIN}; sendCertificateChain: ${result}`);\n return result;\n}\n/**\n * Enables authentication to Microsoft Entra ID using a client secret or certificate.\n */\nclass EnvironmentCredential {\n _credential = undefined;\n /**\n * Creates an instance of the EnvironmentCredential class and decides what credential to use depending on the available environment variables.\n *\n * Required environment variables:\n * - `AZURE_TENANT_ID`: The Microsoft Entra tenant (directory) ID.\n * - `AZURE_CLIENT_ID`: The client (application) ID of an App Registration in the tenant.\n *\n * If setting the AZURE_TENANT_ID, then you can also set the additionally allowed tenants\n * - `AZURE_ADDITIONALLY_ALLOWED_TENANTS`: For multi-tenant applications, specifies additional tenants for which the credential may acquire tokens with a single semicolon delimited string. Use * to allow all tenants.\n *\n * Environment variables used for client credential authentication:\n * - `AZURE_CLIENT_SECRET`: A client secret that was generated for the App Registration.\n * - `AZURE_CLIENT_CERTIFICATE_PATH`: The path to a PEM certificate to use during the authentication, instead of the client secret.\n * - `AZURE_CLIENT_CERTIFICATE_PASSWORD`: (optional) password for the certificate file.\n * - `AZURE_CLIENT_SEND_CERTIFICATE_CHAIN`: (optional) indicates that the certificate chain should be set in x5c header to support subject name / issuer based authentication.\n *\n * Username and password authentication is deprecated, since it doesn't support multifactor authentication (MFA). See https://aka.ms/azsdk/identity/mfa for more details. Users can still provide environment variables for this authentication method:\n * - `AZURE_USERNAME`: Username to authenticate with.\n * - `AZURE_PASSWORD`: Password to authenticate with.\n *\n * If the environment variables required to perform the authentication are missing, a {@link CredentialUnavailableError} will be thrown.\n * If the authentication fails, or if there's an unknown error, an {@link AuthenticationError} will be thrown.\n *\n * @param options - Options for configuring the client which makes the authentication request.\n */\n constructor(options) {\n // Keep track of any missing environment variables for error details\n const assigned = (0, logging_js_1.processEnvVars)(exports.AllSupportedEnvironmentVariables).assigned.join(\", \");\n logger.info(`Found the following environment variables: ${assigned}`);\n const tenantId = process.env.AZURE_TENANT_ID, clientId = process.env.AZURE_CLIENT_ID, clientSecret = process.env.AZURE_CLIENT_SECRET;\n const additionallyAllowedTenantIds = getAdditionallyAllowedTenants();\n const sendCertificateChain = getSendCertificateChain();\n const newOptions = { ...options, additionallyAllowedTenantIds, sendCertificateChain };\n if (tenantId) {\n (0, tenantIdUtils_js_1.checkTenantId)(logger, tenantId);\n }\n if (tenantId && clientId && clientSecret) {\n logger.info(`Invoking ClientSecretCredential with tenant ID: ${tenantId}, clientId: ${clientId} and clientSecret: [REDACTED]`);\n this._credential = new clientSecretCredential_js_1.ClientSecretCredential(tenantId, clientId, clientSecret, newOptions);\n return;\n }\n const certificatePath = process.env.AZURE_CLIENT_CERTIFICATE_PATH;\n const certificatePassword = process.env.AZURE_CLIENT_CERTIFICATE_PASSWORD;\n if (tenantId && clientId && certificatePath) {\n logger.info(`Invoking ClientCertificateCredential with tenant ID: ${tenantId}, clientId: ${clientId} and certificatePath: ${certificatePath}`);\n this._credential = new clientCertificateCredential_js_1.ClientCertificateCredential(tenantId, clientId, { certificatePath, certificatePassword }, newOptions);\n return;\n }\n const username = process.env.AZURE_USERNAME;\n const password = process.env.AZURE_PASSWORD;\n if (tenantId && clientId && username && password) {\n logger.info(`Invoking UsernamePasswordCredential with tenant ID: ${tenantId}, clientId: ${clientId} and username: ${username}`);\n logger.warning(\"Environment is configured to use username and password authentication. This authentication method is deprecated, as it doesn't support multifactor authentication (MFA). Use a more secure credential. For more details, see https://aka.ms/azsdk/identity/mfa.\");\n this._credential = new usernamePasswordCredential_js_1.UsernamePasswordCredential(tenantId, clientId, username, password, newOptions);\n }\n }\n /**\n * Authenticates with Microsoft Entra ID and returns an access token if successful.\n *\n * @param scopes - The list of scopes for which the token will have access.\n * @param options - Optional parameters. See {@link GetTokenOptions}.\n */\n async getToken(scopes, options = {}) {\n return tracing_js_1.tracingClient.withSpan(`${credentialName}.getToken`, options, async (newOptions) => {\n if (this._credential) {\n try {\n const result = await this._credential.getToken(scopes, newOptions);\n logger.getToken.info((0, logging_js_1.formatSuccess)(scopes));\n return result;\n }\n catch (err) {\n const authenticationError = new errors_js_1.AuthenticationError(400, {\n error: `${credentialName} authentication failed. To troubleshoot, visit https://aka.ms/azsdk/js/identity/environmentcredential/troubleshoot.`,\n error_description: err.message.toString().split(\"More details:\").join(\"\"),\n });\n logger.getToken.info((0, logging_js_1.formatError)(scopes, authenticationError));\n throw authenticationError;\n }\n }\n throw new errors_js_1.CredentialUnavailableError(`${credentialName} is unavailable. No underlying credential could be used. To troubleshoot, visit https://aka.ms/azsdk/js/identity/environmentcredential/troubleshoot.`);\n });\n }\n}\nexports.EnvironmentCredential = EnvironmentCredential;\n//# sourceMappingURL=environmentCredential.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.imdsRetryPolicy = imdsRetryPolicy;\nconst core_rest_pipeline_1 = require(\"@azure/core-rest-pipeline\");\nconst core_util_1 = require(\"@azure/core-util\");\n// Matches the default retry configuration in expontentialRetryStrategy.ts\nconst DEFAULT_CLIENT_MAX_RETRY_INTERVAL = 1000 * 64;\n// For 410 responses, we need at least 70 seconds total retry duration\n// With 5 retries using exponential backoff: delays of d, 2d, 4d, 8d, 16d sum to 31d\n// Accounting for jitter (which can reduce delays by 20%), we need 31d * 0.8 >= 70\n// So we need d >= 70/24.8 = 2.82 seconds. Using 3 seconds to be safe.\nconst MIN_DELAY_FOR_410_MS = 3000;\n/**\n * An additional policy that retries on 404 and 410 errors. The default retry policy does not retry on\n * 404s or 410s, but the IMDS endpoint can return these when the token is not yet available or when\n * the identity is still being set up. This policy will retry on 404s and 410s with an exponential backoff.\n * For 410 responses, it uses a minimum 3-second initial delay to ensure at least 70 seconds total duration.\n *\n * @param msiRetryConfig - The retry configuration for the MSI credential.\n * @returns - The policy that will retry on 404s and 410s.\n */\nfunction imdsRetryPolicy(msiRetryConfig) {\n return (0, core_rest_pipeline_1.retryPolicy)([\n {\n name: \"imdsRetryPolicy\",\n retry: ({ retryCount, response }) => {\n if (response?.status !== 404 && response?.status !== 410) {\n return { skipStrategy: true };\n }\n // For 410 responses, use a minimum 3-second delay to ensure at least 70 seconds total retry duration\n const initialDelayMs = response?.status === 410\n ? Math.max(MIN_DELAY_FOR_410_MS, msiRetryConfig.startDelayInMs)\n : msiRetryConfig.startDelayInMs;\n return (0, core_util_1.calculateRetryDelay)(retryCount, {\n retryDelayInMs: initialDelayMs,\n maxRetryDelayInMs: DEFAULT_CLIENT_MAX_RETRY_INTERVAL,\n });\n },\n },\n ], {\n maxRetries: msiRetryConfig.maxRetries,\n });\n}\n//# sourceMappingURL=imdsRetryPolicy.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.imdsMsi = void 0;\nconst core_rest_pipeline_1 = require(\"@azure/core-rest-pipeline\");\nconst core_util_1 = require(\"@azure/core-util\");\nconst logging_js_1 = require(\"../../util/logging.js\");\nconst utils_js_1 = require(\"./utils.js\");\nconst tracing_js_1 = require(\"../../util/tracing.js\");\nconst msiName = \"ManagedIdentityCredential - IMDS\";\nconst logger = (0, logging_js_1.credentialLogger)(msiName);\nconst imdsHost = \"http://169.254.169.254\";\nconst imdsEndpointPath = \"/metadata/identity/oauth2/token\";\n/**\n * Generates an invalid request options to get a response quickly from IMDS endpoint.\n * The response indicates the availability of IMSD service; otherwise the request would time out.\n */\nfunction prepareInvalidRequestOptions(scopes) {\n const resource = (0, utils_js_1.mapScopesToResource)(scopes);\n if (!resource) {\n throw new Error(`${msiName}: Multiple scopes are not supported.`);\n }\n // Pod Identity will try to process this request even if the Metadata header is missing.\n // We can exclude the request query to ensure no IMDS endpoint tries to process the ping request.\n const url = new URL(imdsEndpointPath, process.env.AZURE_POD_IDENTITY_AUTHORITY_HOST ?? imdsHost);\n const rawHeaders = {\n Accept: \"application/json\",\n // intentionally leave out the Metadata header to invoke an error from IMDS endpoint.\n };\n return {\n // intentionally not including any query\n url: `${url}`,\n method: \"GET\",\n headers: (0, core_rest_pipeline_1.createHttpHeaders)(rawHeaders),\n };\n}\n/**\n * Defines how to determine whether the Azure IMDS MSI is available.\n *\n * Actually getting the token once we determine IMDS is available is handled by MSAL.\n */\nexports.imdsMsi = {\n name: \"imdsMsi\",\n async isAvailable(options) {\n const { scopes, identityClient, getTokenOptions } = options;\n const resource = (0, utils_js_1.mapScopesToResource)(scopes);\n if (!resource) {\n logger.info(`${msiName}: Unavailable. Multiple scopes are not supported.`);\n return false;\n }\n // if the PodIdentityEndpoint environment variable was set no need to probe the endpoint, it can be assumed to exist\n if (process.env.AZURE_POD_IDENTITY_AUTHORITY_HOST) {\n return true;\n }\n if (!identityClient) {\n throw new Error(\"Missing IdentityClient\");\n }\n const requestOptions = prepareInvalidRequestOptions(resource);\n return tracing_js_1.tracingClient.withSpan(\"ManagedIdentityCredential-pingImdsEndpoint\", getTokenOptions ?? {}, async (updatedOptions) => {\n requestOptions.tracingOptions = updatedOptions.tracingOptions;\n // Create a request with a timeout since we expect that\n // not having a \"Metadata\" header should cause an error to be\n // returned quickly from the endpoint, proving its availability.\n const request = (0, core_rest_pipeline_1.createPipelineRequest)(requestOptions);\n // Default to 1000 if the default of 0 is used.\n // Negative values can still be used to disable the timeout.\n request.timeout = updatedOptions.requestOptions?.timeout || 1000;\n // This MSI uses the imdsEndpoint to get the token, which only uses http://\n request.allowInsecureConnection = true;\n let response;\n try {\n logger.info(`${msiName}: Pinging the Azure IMDS endpoint`);\n response = await identityClient.sendRequest(request);\n }\n catch (err) {\n // If the request failed, or Node.js was unable to establish a connection,\n // or the host was down, we'll assume the IMDS endpoint isn't available.\n if ((0, core_util_1.isError)(err)) {\n logger.verbose(`${msiName}: Caught error ${err.name}: ${err.message}`);\n }\n // This is a special case for Docker Desktop which responds with a 403 with a message that contains \"A socket operation was attempted to an unreachable network\" or \"A socket operation was attempted to an unreachable host\"\n // rather than just timing out, as expected.\n logger.info(`${msiName}: The Azure IMDS endpoint is unavailable`);\n return false;\n }\n if (response.status === 403) {\n if (response.bodyAsText?.includes(\"unreachable\")) {\n logger.info(`${msiName}: The Azure IMDS endpoint is unavailable`);\n logger.info(`${msiName}: ${response.bodyAsText}`);\n return false;\n }\n }\n // If we received any response, the endpoint is available\n logger.info(`${msiName}: The Azure IMDS endpoint is available`);\n return true;\n });\n },\n};\n//# sourceMappingURL=imdsMsi.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ClientAssertionCredential = void 0;\nconst msalClient_js_1 = require(\"../msal/nodeFlows/msalClient.js\");\nconst tenantIdUtils_js_1 = require(\"../util/tenantIdUtils.js\");\nconst errors_js_1 = require(\"../errors.js\");\nconst logging_js_1 = require(\"../util/logging.js\");\nconst tracing_js_1 = require(\"../util/tracing.js\");\nconst logger = (0, logging_js_1.credentialLogger)(\"ClientAssertionCredential\");\n/**\n * Authenticates a service principal with a JWT assertion.\n */\nclass ClientAssertionCredential {\n msalClient;\n tenantId;\n additionallyAllowedTenantIds;\n getAssertion;\n options;\n /**\n * Creates an instance of the ClientAssertionCredential with the details\n * needed to authenticate against Microsoft Entra ID with a client\n * assertion provided by the developer through the `getAssertion` function parameter.\n *\n * @param tenantId - The Microsoft Entra tenant (directory) ID.\n * @param clientId - The client (application) ID of an App Registration in the tenant.\n * @param getAssertion - A function that retrieves the assertion for the credential to use.\n * @param options - Options for configuring the client which makes the authentication request.\n */\n constructor(tenantId, clientId, getAssertion, options = {}) {\n if (!tenantId) {\n throw new errors_js_1.CredentialUnavailableError(\"ClientAssertionCredential: tenantId is a required parameter.\");\n }\n if (!clientId) {\n throw new errors_js_1.CredentialUnavailableError(\"ClientAssertionCredential: clientId is a required parameter.\");\n }\n if (!getAssertion) {\n throw new errors_js_1.CredentialUnavailableError(\"ClientAssertionCredential: clientAssertion is a required parameter.\");\n }\n this.tenantId = tenantId;\n this.additionallyAllowedTenantIds = (0, tenantIdUtils_js_1.resolveAdditionallyAllowedTenantIds)(options?.additionallyAllowedTenants);\n this.options = options;\n this.getAssertion = getAssertion;\n this.msalClient = (0, msalClient_js_1.createMsalClient)(clientId, tenantId, {\n ...options,\n logger,\n tokenCredentialOptions: this.options,\n });\n }\n /**\n * Authenticates with Microsoft Entra ID and returns an access token if successful.\n * If authentication fails, a {@link CredentialUnavailableError} will be thrown with the details of the failure.\n *\n * @param scopes - The list of scopes for which the token will have access.\n * @param options - The options used to configure any requests this\n * TokenCredential implementation might make.\n */\n async getToken(scopes, options = {}) {\n return tracing_js_1.tracingClient.withSpan(`${this.constructor.name}.getToken`, options, async (newOptions) => {\n newOptions.tenantId = (0, tenantIdUtils_js_1.processMultiTenantRequest)(this.tenantId, newOptions, this.additionallyAllowedTenantIds, logger);\n const arrayScopes = Array.isArray(scopes) ? scopes : [scopes];\n return this.msalClient.getTokenByClientAssertion(arrayScopes, this.getAssertion, newOptions);\n });\n }\n}\nexports.ClientAssertionCredential = ClientAssertionCredential;\n//# sourceMappingURL=clientAssertionCredential.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.WorkloadIdentityCredential = exports.SupportedWorkloadEnvironmentVariables = void 0;\nconst logging_js_1 = require(\"../util/logging.js\");\nconst clientAssertionCredential_js_1 = require(\"./clientAssertionCredential.js\");\nconst errors_js_1 = require(\"../errors.js\");\nconst tenantIdUtils_js_1 = require(\"../util/tenantIdUtils.js\");\nconst promises_1 = require(\"node:fs/promises\");\nconst credentialName = \"WorkloadIdentityCredential\";\n/**\n * Contains the list of all supported environment variable names so that an\n * appropriate error message can be generated when no credentials can be\n * configured.\n *\n * @internal\n */\nexports.SupportedWorkloadEnvironmentVariables = [\n \"AZURE_TENANT_ID\",\n \"AZURE_CLIENT_ID\",\n \"AZURE_FEDERATED_TOKEN_FILE\",\n];\nconst logger = (0, logging_js_1.credentialLogger)(credentialName);\n/**\n * Workload Identity authentication is a feature in Azure that allows applications running on virtual machines (VMs)\n * to access other Azure resources without the need for a service principal or managed identity. With Workload Identity\n * authentication, applications authenticate themselves using their own identity, rather than using a shared service\n * principal or managed identity. Under the hood, Workload Identity authentication uses the concept of Service Account\n * Credentials (SACs), which are automatically created by Azure and stored securely in the VM. By using Workload\n * Identity authentication, you can avoid the need to manage and rotate service principals or managed identities for\n * each application on each VM. Additionally, because SACs are created automatically and managed by Azure, you don't\n * need to worry about storing and securing sensitive credentials themselves.\n * The WorkloadIdentityCredential supports Microsoft Entra Workload ID authentication on Azure Kubernetes and acquires\n * a token using the SACs available in the Azure Kubernetes environment.\n * Refer to Microsoft Entra\n * Workload ID for more information.\n */\nclass WorkloadIdentityCredential {\n client;\n azureFederatedTokenFileContent = undefined;\n cacheDate = undefined;\n federatedTokenFilePath;\n /**\n * WorkloadIdentityCredential supports Microsoft Entra Workload ID on Kubernetes.\n *\n * @param options - The identity client options to use for authentication.\n */\n constructor(options) {\n // Logging environment variables for error details\n const assignedEnv = (0, logging_js_1.processEnvVars)(exports.SupportedWorkloadEnvironmentVariables).assigned.join(\", \");\n logger.info(`Found the following environment variables: ${assignedEnv}`);\n const workloadIdentityCredentialOptions = options ?? {};\n const tenantId = workloadIdentityCredentialOptions.tenantId || process.env.AZURE_TENANT_ID;\n const clientId = workloadIdentityCredentialOptions.clientId || process.env.AZURE_CLIENT_ID;\n this.federatedTokenFilePath =\n workloadIdentityCredentialOptions.tokenFilePath || process.env.AZURE_FEDERATED_TOKEN_FILE;\n if (tenantId) {\n (0, tenantIdUtils_js_1.checkTenantId)(logger, tenantId);\n }\n if (!clientId) {\n throw new errors_js_1.CredentialUnavailableError(`${credentialName}: is unavailable. clientId is a required parameter. In DefaultAzureCredential and ManagedIdentityCredential, this can be provided as an environment variable - \"AZURE_CLIENT_ID\".\n See the troubleshooting guide for more information: https://aka.ms/azsdk/js/identity/workloadidentitycredential/troubleshoot`);\n }\n if (!tenantId) {\n throw new errors_js_1.CredentialUnavailableError(`${credentialName}: is unavailable. tenantId is a required parameter. In DefaultAzureCredential and ManagedIdentityCredential, this can be provided as an environment variable - \"AZURE_TENANT_ID\".\n See the troubleshooting guide for more information: https://aka.ms/azsdk/js/identity/workloadidentitycredential/troubleshoot`);\n }\n if (!this.federatedTokenFilePath) {\n throw new errors_js_1.CredentialUnavailableError(`${credentialName}: is unavailable. federatedTokenFilePath is a required parameter. In DefaultAzureCredential and ManagedIdentityCredential, this can be provided as an environment variable - \"AZURE_FEDERATED_TOKEN_FILE\".\n See the troubleshooting guide for more information: https://aka.ms/azsdk/js/identity/workloadidentitycredential/troubleshoot`);\n }\n logger.info(`Invoking ClientAssertionCredential with tenant ID: ${tenantId}, clientId: ${workloadIdentityCredentialOptions.clientId} and federated token path: [REDACTED]`);\n this.client = new clientAssertionCredential_js_1.ClientAssertionCredential(tenantId, clientId, this.readFileContents.bind(this), options);\n }\n /**\n * Authenticates with Microsoft Entra ID and returns an access token if successful.\n * If authentication fails, a {@link CredentialUnavailableError} will be thrown with the details of the failure.\n *\n * @param scopes - The list of scopes for which the token will have access.\n * @param options - The options used to configure any requests this\n * TokenCredential implementation might make.\n */\n async getToken(scopes, options) {\n if (!this.client) {\n const errorMessage = `${credentialName}: is unavailable. tenantId, clientId, and federatedTokenFilePath are required parameters. \n In DefaultAzureCredential and ManagedIdentityCredential, these can be provided as environment variables - \n \"AZURE_TENANT_ID\",\n \"AZURE_CLIENT_ID\",\n \"AZURE_FEDERATED_TOKEN_FILE\". See the troubleshooting guide for more information: https://aka.ms/azsdk/js/identity/workloadidentitycredential/troubleshoot`;\n logger.info(errorMessage);\n throw new errors_js_1.CredentialUnavailableError(errorMessage);\n }\n logger.info(\"Invoking getToken() of Client Assertion Credential\");\n return this.client.getToken(scopes, options);\n }\n async readFileContents() {\n // Cached assertions expire after 5 minutes\n if (this.cacheDate !== undefined && Date.now() - this.cacheDate >= 1000 * 60 * 5) {\n this.azureFederatedTokenFileContent = undefined;\n }\n if (!this.federatedTokenFilePath) {\n throw new errors_js_1.CredentialUnavailableError(`${credentialName}: is unavailable. Invalid file path provided ${this.federatedTokenFilePath}.`);\n }\n if (!this.azureFederatedTokenFileContent) {\n const file = await (0, promises_1.readFile)(this.federatedTokenFilePath, \"utf8\");\n const value = file.trim();\n if (!value) {\n throw new errors_js_1.CredentialUnavailableError(`${credentialName}: is unavailable. No content on the file ${this.federatedTokenFilePath}.`);\n }\n else {\n this.azureFederatedTokenFileContent = value;\n this.cacheDate = Date.now();\n }\n }\n return this.azureFederatedTokenFileContent;\n }\n}\nexports.WorkloadIdentityCredential = WorkloadIdentityCredential;\n//# sourceMappingURL=workloadIdentityCredential.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.tokenExchangeMsi = void 0;\nconst workloadIdentityCredential_js_1 = require(\"../workloadIdentityCredential.js\");\nconst logging_js_1 = require(\"../../util/logging.js\");\nconst msiName = \"ManagedIdentityCredential - Token Exchange\";\nconst logger = (0, logging_js_1.credentialLogger)(msiName);\n/**\n * Defines how to determine whether the token exchange MSI is available, and also how to retrieve a token from the token exchange MSI.\n *\n * Token exchange MSI (used by AKS) is the only MSI implementation handled entirely by Azure Identity.\n * The rest have been migrated to MSAL.\n */\nexports.tokenExchangeMsi = {\n name: \"tokenExchangeMsi\",\n async isAvailable(clientId) {\n const env = process.env;\n const result = Boolean((clientId || env.AZURE_CLIENT_ID) &&\n env.AZURE_TENANT_ID &&\n process.env.AZURE_FEDERATED_TOKEN_FILE);\n if (!result) {\n logger.info(`${msiName}: Unavailable. The environment variables needed are: AZURE_CLIENT_ID (or the client ID sent through the parameters), AZURE_TENANT_ID and AZURE_FEDERATED_TOKEN_FILE`);\n }\n return result;\n },\n async getToken(configuration, getTokenOptions = {}) {\n const { scopes, clientId } = configuration;\n const identityClientTokenCredentialOptions = {};\n const workloadIdentityCredential = new workloadIdentityCredential_js_1.WorkloadIdentityCredential({\n clientId,\n tenantId: process.env.AZURE_TENANT_ID,\n tokenFilePath: process.env.AZURE_FEDERATED_TOKEN_FILE,\n ...identityClientTokenCredentialOptions,\n disableInstanceDiscovery: true,\n });\n return workloadIdentityCredential.getToken(scopes, getTokenOptions);\n },\n};\n//# sourceMappingURL=tokenExchangeMsi.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ManagedIdentityCredential = void 0;\nconst logger_1 = require(\"@azure/logger\");\nconst msal_node_1 = require(\"@azure/msal-node\");\nconst identityClient_js_1 = require(\"../../client/identityClient.js\");\nconst errors_js_1 = require(\"../../errors.js\");\nconst utils_js_1 = require(\"../../msal/utils.js\");\nconst imdsRetryPolicy_js_1 = require(\"./imdsRetryPolicy.js\");\nconst logging_js_1 = require(\"../../util/logging.js\");\nconst tracing_js_1 = require(\"../../util/tracing.js\");\nconst imdsMsi_js_1 = require(\"./imdsMsi.js\");\nconst tokenExchangeMsi_js_1 = require(\"./tokenExchangeMsi.js\");\nconst utils_js_2 = require(\"./utils.js\");\nconst logger = (0, logging_js_1.credentialLogger)(\"ManagedIdentityCredential\");\n/**\n * Attempts authentication using a managed identity available at the deployment environment.\n * This authentication type works in Azure VMs, App Service instances, Azure Functions applications,\n * Azure Kubernetes Services, Azure Service Fabric instances and inside of the Azure Cloud Shell.\n *\n * More information about configuring managed identities can be found here:\n * https://learn.microsoft.com/azure/active-directory/managed-identities-azure-resources/overview\n */\nclass ManagedIdentityCredential {\n managedIdentityApp;\n identityClient;\n clientId;\n resourceId;\n objectId;\n msiRetryConfig = {\n maxRetries: 5,\n startDelayInMs: 800,\n intervalIncrement: 2,\n };\n isAvailableIdentityClient;\n sendProbeRequest;\n /**\n * @internal\n * @hidden\n */\n constructor(clientIdOrOptions, options) {\n let _options;\n if (typeof clientIdOrOptions === \"string\") {\n this.clientId = clientIdOrOptions;\n _options = options ?? {};\n }\n else {\n this.clientId = clientIdOrOptions?.clientId;\n _options = clientIdOrOptions ?? {};\n }\n this.resourceId = _options?.resourceId;\n this.objectId = _options?.objectId;\n this.sendProbeRequest =\n _options?.sendProbeRequest ?? false;\n // For JavaScript users.\n const providedIds = [\n { key: \"clientId\", value: this.clientId },\n { key: \"resourceId\", value: this.resourceId },\n { key: \"objectId\", value: this.objectId },\n ].filter((id) => id.value);\n if (providedIds.length > 1) {\n throw new Error(`ManagedIdentityCredential: only one of 'clientId', 'resourceId', or 'objectId' can be provided. Received values: ${JSON.stringify({ clientId: this.clientId, resourceId: this.resourceId, objectId: this.objectId })}`);\n }\n // ManagedIdentity uses http for local requests\n _options.allowInsecureConnection = true;\n if (_options.retryOptions?.maxRetries !== undefined) {\n this.msiRetryConfig.maxRetries = _options.retryOptions.maxRetries;\n }\n this.identityClient = new identityClient_js_1.IdentityClient({\n ..._options,\n additionalPolicies: [{ policy: (0, imdsRetryPolicy_js_1.imdsRetryPolicy)(this.msiRetryConfig), position: \"perCall\" }],\n });\n this.managedIdentityApp = new msal_node_1.ManagedIdentityApplication({\n managedIdentityIdParams: {\n userAssignedClientId: this.clientId,\n userAssignedResourceId: this.resourceId,\n userAssignedObjectId: this.objectId,\n },\n system: {\n disableInternalRetries: true,\n networkClient: this.identityClient,\n loggerOptions: {\n logLevel: (0, utils_js_1.getMSALLogLevel)((0, logger_1.getLogLevel)()),\n piiLoggingEnabled: _options.loggingOptions?.enableUnsafeSupportLogging,\n loggerCallback: (0, utils_js_1.defaultLoggerCallback)(logger),\n },\n },\n });\n this.isAvailableIdentityClient = new identityClient_js_1.IdentityClient({\n ..._options,\n retryOptions: {\n maxRetries: 0,\n },\n });\n const managedIdentitySource = this.managedIdentityApp.getManagedIdentitySource();\n // CloudShell MSI will ignore any user-assigned identity passed as parameters. To avoid confusion, we prevent this from happening as early as possible.\n if (managedIdentitySource === \"CloudShell\") {\n if (this.clientId || this.resourceId || this.objectId) {\n logger.warning(`CloudShell MSI detected with user-provided IDs - throwing. Received values: ${JSON.stringify({\n clientId: this.clientId,\n resourceId: this.resourceId,\n objectId: this.objectId,\n })}.`);\n throw new errors_js_1.CredentialUnavailableError(\"ManagedIdentityCredential: Specifying a user-assigned managed identity is not supported for CloudShell at runtime. When using Managed Identity in CloudShell, omit the clientId, resourceId, and objectId parameters.\");\n }\n }\n // ServiceFabric does not support specifying user-assigned managed identity by client ID or resource ID. The managed identity selected is based on the resource configuration.\n if (managedIdentitySource === \"ServiceFabric\") {\n if (this.clientId || this.resourceId || this.objectId) {\n logger.warning(`Service Fabric detected with user-provided IDs - throwing. Received values: ${JSON.stringify({\n clientId: this.clientId,\n resourceId: this.resourceId,\n objectId: this.objectId,\n })}.`);\n throw new errors_js_1.CredentialUnavailableError(`ManagedIdentityCredential: ${utils_js_2.serviceFabricErrorMessage}`);\n }\n }\n logger.info(`Using ${managedIdentitySource} managed identity.`);\n // Check if either clientId, resourceId or objectId was provided and log the value used\n if (providedIds.length === 1) {\n const { key, value } = providedIds[0];\n logger.info(`${managedIdentitySource} with ${key}: ${value}`);\n }\n }\n /**\n * Authenticates with Microsoft Entra ID and returns an access token if successful.\n * If authentication fails, a {@link CredentialUnavailableError} will be thrown with the details of the failure.\n * If an unexpected error occurs, an {@link AuthenticationError} will be thrown with the details of the failure.\n *\n * @param scopes - The list of scopes for which the token will have access.\n * @param options - The options used to configure any requests this\n * TokenCredential implementation might make.\n */\n async getToken(scopes, options = {}) {\n logger.getToken.info(\"Using the MSAL provider for Managed Identity.\");\n const resource = (0, utils_js_2.mapScopesToResource)(scopes);\n if (!resource) {\n throw new errors_js_1.CredentialUnavailableError(`ManagedIdentityCredential: Multiple scopes are not supported. Scopes: ${JSON.stringify(scopes)}`);\n }\n return tracing_js_1.tracingClient.withSpan(\"ManagedIdentityCredential.getToken\", options, async () => {\n try {\n const isTokenExchangeMsi = await tokenExchangeMsi_js_1.tokenExchangeMsi.isAvailable(this.clientId);\n // Most scenarios are handled by MSAL except for two:\n // AKS pod identity - MSAL does not implement the token exchange flow.\n // IMDS Endpoint probing - MSAL does not do any probing before trying to get a token.\n // As a DefaultAzureCredential optimization we probe the IMDS endpoint with a short timeout and no retries before actually trying to get a token\n // We will continue to implement these features in the Identity library.\n const identitySource = this.managedIdentityApp.getManagedIdentitySource();\n const isImdsMsi = identitySource === \"DefaultToImds\" || identitySource === \"Imds\"; // Neither actually checks that IMDS endpoint is available, just that it's the source the MSAL _would_ try to use.\n logger.getToken.info(`MSAL Identity source: ${identitySource}`);\n if (isTokenExchangeMsi) {\n // In the AKS scenario we will use the existing tokenExchangeMsi indefinitely.\n logger.getToken.info(\"Using the token exchange managed identity.\");\n const result = await tokenExchangeMsi_js_1.tokenExchangeMsi.getToken({\n scopes,\n clientId: this.clientId,\n identityClient: this.identityClient,\n retryConfig: this.msiRetryConfig,\n resourceId: this.resourceId,\n });\n if (result === null) {\n throw new errors_js_1.CredentialUnavailableError(\"Attempted to use the token exchange managed identity, but received a null response.\");\n }\n return result;\n }\n else if (isImdsMsi && this.sendProbeRequest) {\n // In the IMDS scenario we will probe the IMDS endpoint to ensure it's available before trying to get a token.\n // If the IMDS endpoint is not available and this is the source that MSAL will use, we will fail-fast with an error that tells DAC to move to the next credential.\n logger.getToken.info(\"Using the IMDS endpoint to probe for availability.\");\n const isAvailable = await imdsMsi_js_1.imdsMsi.isAvailable({\n scopes,\n clientId: this.clientId,\n getTokenOptions: options,\n identityClient: this.isAvailableIdentityClient,\n resourceId: this.resourceId,\n });\n if (!isAvailable) {\n throw new errors_js_1.CredentialUnavailableError(`Attempted to use the IMDS endpoint, but it is not available.`);\n }\n }\n // If we got this far, it means:\n // - This is not a tokenExchangeMsi,\n // - We already probed for IMDS endpoint availability and failed-fast if it's unreachable,\n // or we skip probing because the credential is set in DAC.\n // We can proceed normally by calling MSAL for a token.\n logger.getToken.info(\"Calling into MSAL for managed identity token.\");\n const token = await this.managedIdentityApp.acquireToken({\n resource,\n });\n this.ensureValidMsalToken(scopes, token, options);\n logger.getToken.info((0, logging_js_1.formatSuccess)(scopes));\n return {\n expiresOnTimestamp: token.expiresOn.getTime(),\n token: token.accessToken,\n refreshAfterTimestamp: token.refreshOn?.getTime(),\n tokenType: \"Bearer\",\n };\n }\n catch (err) {\n logger.getToken.error((0, logging_js_1.formatError)(scopes, err));\n // AuthenticationRequiredError described as Error to enforce authentication after trying to retrieve a token silently.\n // TODO: why would this _ever_ happen considering we're not trying the silent request in this flow?\n if (err.name === \"AuthenticationRequiredError\") {\n throw err;\n }\n if (isNetworkError(err)) {\n throw new errors_js_1.CredentialUnavailableError(`ManagedIdentityCredential: Network unreachable. Message: ${err.message}`, { cause: err });\n }\n throw new errors_js_1.CredentialUnavailableError(`ManagedIdentityCredential: Authentication failed. Message ${err.message}`, { cause: err });\n }\n });\n }\n /**\n * Ensures the validity of the MSAL token\n */\n ensureValidMsalToken(scopes, msalToken, getTokenOptions) {\n const createError = (message) => {\n logger.getToken.info(message);\n return new errors_js_1.AuthenticationRequiredError({\n scopes: Array.isArray(scopes) ? scopes : [scopes],\n getTokenOptions,\n message,\n });\n };\n if (!msalToken) {\n throw createError(\"No response.\");\n }\n if (!msalToken.expiresOn) {\n throw createError(`Response had no \"expiresOn\" property.`);\n }\n if (!msalToken.accessToken) {\n throw createError(`Response had no \"accessToken\" property.`);\n }\n }\n}\nexports.ManagedIdentityCredential = ManagedIdentityCredential;\nfunction isNetworkError(err) {\n // MSAL error\n if (err.errorCode === \"network_error\") {\n return true;\n }\n // Probe errors\n if (err.code === \"ENETUNREACH\" || err.code === \"EHOSTUNREACH\") {\n return true;\n }\n // This is a special case for Docker Desktop which responds with a 403 with a message that contains \"A socket operation was attempted to an unreachable network\" or \"A socket operation was attempted to an unreachable host\"\n // rather than just timing out, as expected.\n if (err.statusCode === 403 || err.code === 403) {\n if (err.message.includes(\"unreachable\")) {\n return true;\n }\n }\n return false;\n}\n//# sourceMappingURL=index.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.AzureDeveloperCliCredential = exports.developerCliCredentialInternals = exports.azureDeveloperCliPublicErrorMessages = void 0;\nconst tslib_1 = require(\"tslib\");\nconst logging_js_1 = require(\"../util/logging.js\");\nconst errors_js_1 = require(\"../errors.js\");\nconst child_process_1 = tslib_1.__importDefault(require(\"child_process\"));\nconst tenantIdUtils_js_1 = require(\"../util/tenantIdUtils.js\");\nconst tracing_js_1 = require(\"../util/tracing.js\");\nconst scopeUtils_js_1 = require(\"../util/scopeUtils.js\");\nconst logger = (0, logging_js_1.credentialLogger)(\"AzureDeveloperCliCredential\");\n/**\n * Messages to use when throwing in this credential.\n * @internal\n */\nexports.azureDeveloperCliPublicErrorMessages = {\n notInstalled: \"Azure Developer CLI couldn't be found. To mitigate this issue, see the troubleshooting guidelines at https://aka.ms/azsdk/js/identity/azdevclicredential/troubleshoot.\",\n login: \"Please run 'azd auth login' from a command prompt to authenticate before using this credential. For more information, see the troubleshooting guidelines at https://aka.ms/azsdk/js/identity/azdevclicredential/troubleshoot.\",\n unknown: \"Unknown error while trying to retrieve the access token\",\n claim: \"This credential doesn't support claims challenges. To authenticate with the required claims, please run the following command:\",\n};\n/**\n * Mockable reference to the Developer CLI credential cliCredentialFunctions\n * @internal\n */\nexports.developerCliCredentialInternals = {\n /**\n * @internal\n */\n getSafeWorkingDir() {\n if (process.platform === \"win32\") {\n let systemRoot = process.env.SystemRoot || process.env[\"SYSTEMROOT\"];\n if (!systemRoot) {\n logger.getToken.warning(\"The SystemRoot environment variable is not set. This may cause issues when using the Azure Developer CLI credential.\");\n systemRoot = \"C:\\\\Windows\";\n }\n return systemRoot;\n }\n else {\n return \"/bin\";\n }\n },\n /**\n * Gets the access token from Azure Developer CLI\n * @param scopes - The scopes to use when getting the token\n * @internal\n */\n async getAzdAccessToken(scopes, tenantId, timeout, claims) {\n let tenantSection = [];\n if (tenantId) {\n tenantSection = [\"--tenant-id\", tenantId];\n }\n let claimsSections = [];\n if (claims) {\n const encodedClaims = btoa(claims);\n claimsSections = [\"--claims\", encodedClaims];\n }\n return new Promise((resolve, reject) => {\n try {\n const args = [\n \"auth\",\n \"token\",\n \"--output\",\n \"json\",\n \"--no-prompt\",\n ...scopes.reduce((previous, current) => previous.concat(\"--scope\", current), []),\n ...tenantSection,\n ...claimsSections,\n ];\n const command = [\"azd\", ...args].join(\" \");\n child_process_1.default.exec(command, {\n cwd: exports.developerCliCredentialInternals.getSafeWorkingDir(),\n timeout,\n }, (error, stdout, stderr) => {\n resolve({ stdout, stderr, error });\n });\n }\n catch (err) {\n reject(err);\n }\n });\n },\n};\n/**\n * Azure Developer CLI is a command-line interface tool that allows developers to create, manage, and deploy\n * resources in Azure. It's built on top of the Azure CLI and provides additional functionality specific\n * to Azure developers. It allows users to authenticate as a user and/or a service principal against\n * Microsoft Entra ID. The\n * AzureDeveloperCliCredential authenticates in a development environment and acquires a token on behalf of\n * the logged-in user or service principal in the Azure Developer CLI. It acts as the Azure Developer CLI logged in user or\n * service principal and executes an Azure CLI command underneath to authenticate the application against\n * Microsoft Entra ID.\n *\n *

Configure AzureDeveloperCliCredential

\n *\n * To use this credential, the developer needs to authenticate locally in Azure Developer CLI using one of the\n * commands below:\n *\n *
    \n *
  1. Run \"azd auth login\" in Azure Developer CLI to authenticate interactively as a user.
  2. \n *
  3. Run \"azd auth login --client-id clientID --client-secret clientSecret\n * --tenant-id tenantID\" to authenticate as a service principal.
  4. \n *
\n *\n * You may need to repeat this process after a certain time period, depending on the refresh token validity in your\n * organization. Generally, the refresh token validity period is a few weeks to a few months.\n * AzureDeveloperCliCredential will prompt you to sign in again.\n */\nclass AzureDeveloperCliCredential {\n tenantId;\n additionallyAllowedTenantIds;\n timeout;\n /**\n * Creates an instance of the {@link AzureDeveloperCliCredential}.\n *\n * To use this credential, ensure that you have already logged\n * in via the 'azd' tool using the command \"azd auth login\" from the commandline.\n *\n * @param options - Options, to optionally allow multi-tenant requests.\n */\n constructor(options) {\n if (options?.tenantId) {\n (0, tenantIdUtils_js_1.checkTenantId)(logger, options?.tenantId);\n this.tenantId = options?.tenantId;\n }\n this.additionallyAllowedTenantIds = (0, tenantIdUtils_js_1.resolveAdditionallyAllowedTenantIds)(options?.additionallyAllowedTenants);\n this.timeout = options?.processTimeoutInMs;\n }\n /**\n * Authenticates with Microsoft Entra ID and returns an access token if successful.\n * If authentication fails, a {@link CredentialUnavailableError} will be thrown with the details of the failure.\n *\n * @param scopes - The list of scopes for which the token will have access.\n * @param options - The options used to configure any requests this\n * TokenCredential implementation might make.\n */\n async getToken(scopes, options = {}) {\n const tenantId = (0, tenantIdUtils_js_1.processMultiTenantRequest)(this.tenantId, options, this.additionallyAllowedTenantIds);\n if (tenantId) {\n (0, tenantIdUtils_js_1.checkTenantId)(logger, tenantId);\n }\n let scopeList;\n if (typeof scopes === \"string\") {\n scopeList = [scopes];\n }\n else {\n scopeList = scopes;\n }\n logger.getToken.info(`Using the scopes ${scopes}`);\n return tracing_js_1.tracingClient.withSpan(`${this.constructor.name}.getToken`, options, async () => {\n try {\n scopeList.forEach((scope) => {\n (0, scopeUtils_js_1.ensureValidScopeForDevTimeCreds)(scope, logger);\n });\n const obj = await exports.developerCliCredentialInternals.getAzdAccessToken(scopeList, tenantId, this.timeout, options.claims);\n const isMFARequiredError = obj.stderr?.match(\"must use multi-factor authentication\") ||\n obj.stderr?.match(\"reauthentication required\");\n const isNotLoggedInError = obj.stderr?.match(\"not logged in, run `azd login` to login\") ||\n obj.stderr?.match(\"not logged in, run `azd auth login` to login\");\n const isNotInstallError = obj.stderr?.match(\"azd:(.*)not found\") ||\n obj.stderr?.startsWith(\"'azd' is not recognized\");\n if (isNotInstallError || (obj.error && obj.error.code === \"ENOENT\")) {\n const error = new errors_js_1.CredentialUnavailableError(exports.azureDeveloperCliPublicErrorMessages.notInstalled);\n logger.getToken.info((0, logging_js_1.formatError)(scopes, error));\n throw error;\n }\n if (isNotLoggedInError) {\n const error = new errors_js_1.CredentialUnavailableError(exports.azureDeveloperCliPublicErrorMessages.login);\n logger.getToken.info((0, logging_js_1.formatError)(scopes, error));\n throw error;\n }\n if (isMFARequiredError) {\n const scope = scopeList\n .reduce((previous, current) => previous.concat(\"--scope\", current), [])\n .join(\" \");\n const loginCmd = `azd auth login ${scope}`;\n const error = new errors_js_1.CredentialUnavailableError(`${exports.azureDeveloperCliPublicErrorMessages.claim} ${loginCmd}`);\n logger.getToken.info((0, logging_js_1.formatError)(scopes, error));\n throw error;\n }\n try {\n const resp = JSON.parse(obj.stdout);\n logger.getToken.info((0, logging_js_1.formatSuccess)(scopes));\n return {\n token: resp.token,\n expiresOnTimestamp: new Date(resp.expiresOn).getTime(),\n tokenType: \"Bearer\",\n };\n }\n catch (e) {\n if (obj.stderr) {\n throw new errors_js_1.CredentialUnavailableError(obj.stderr);\n }\n throw e;\n }\n }\n catch (err) {\n const error = err.name === \"CredentialUnavailableError\"\n ? err\n : new errors_js_1.CredentialUnavailableError(err.message || exports.azureDeveloperCliPublicErrorMessages.unknown);\n logger.getToken.info((0, logging_js_1.formatError)(scopes, error));\n throw error;\n }\n });\n }\n}\nexports.AzureDeveloperCliCredential = AzureDeveloperCliCredential;\n//# sourceMappingURL=azureDeveloperCliCredential.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.checkSubscription = checkSubscription;\nconst logging_js_1 = require(\"./logging.js\");\n/**\n * @internal\n */\nfunction checkSubscription(logger, subscription) {\n if (!subscription.match(/^[0-9a-zA-Z-._ ]+$/)) {\n const error = new Error(`Subscription '${subscription}' contains invalid characters. If this is the name of a subscription, use ` +\n `its ID instead. You can locate your subscription by following the instructions listed here: ` +\n `https://learn.microsoft.com/azure/azure-portal/get-subscription-tenant-id`);\n logger.info((0, logging_js_1.formatError)(\"\", error));\n throw error;\n }\n}\n//# sourceMappingURL=subscriptionUtils.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.AzureCliCredential = exports.cliCredentialInternals = exports.azureCliPublicErrorMessages = void 0;\nconst tslib_1 = require(\"tslib\");\nconst tenantIdUtils_js_1 = require(\"../util/tenantIdUtils.js\");\nconst logging_js_1 = require(\"../util/logging.js\");\nconst scopeUtils_js_1 = require(\"../util/scopeUtils.js\");\nconst errors_js_1 = require(\"../errors.js\");\nconst child_process_1 = tslib_1.__importDefault(require(\"child_process\"));\nconst tracing_js_1 = require(\"../util/tracing.js\");\nconst subscriptionUtils_js_1 = require(\"../util/subscriptionUtils.js\");\nconst logger = (0, logging_js_1.credentialLogger)(\"AzureCliCredential\");\n/**\n * Messages to use when throwing in this credential.\n * @internal\n */\nexports.azureCliPublicErrorMessages = {\n claim: \"This credential doesn't support claims challenges. To authenticate with the required claims, please run the following command:\",\n notInstalled: \"Azure CLI could not be found. Please visit https://aka.ms/azure-cli for installation instructions and then, once installed, authenticate to your Azure account using 'az login'.\",\n login: \"Please run 'az login' from a command prompt to authenticate before using this credential.\",\n unknown: \"Unknown error while trying to retrieve the access token\",\n unexpectedResponse: 'Unexpected response from Azure CLI when getting token. Expected \"expiresOn\" to be a RFC3339 date string. Got:',\n};\n/**\n * Mockable reference to the CLI credential cliCredentialFunctions\n * @internal\n */\nexports.cliCredentialInternals = {\n /**\n * @internal\n */\n getSafeWorkingDir() {\n if (process.platform === \"win32\") {\n let systemRoot = process.env.SystemRoot || process.env[\"SYSTEMROOT\"];\n if (!systemRoot) {\n logger.getToken.warning(\"The SystemRoot environment variable is not set. This may cause issues when using the Azure CLI credential.\");\n systemRoot = \"C:\\\\Windows\";\n }\n return systemRoot;\n }\n else {\n return \"/bin\";\n }\n },\n /**\n * Gets the access token from Azure CLI\n * @param resource - The resource to use when getting the token\n * @internal\n */\n async getAzureCliAccessToken(resource, tenantId, subscription, timeout) {\n let tenantSection = [];\n let subscriptionSection = [];\n if (tenantId) {\n tenantSection = [\"--tenant\", tenantId];\n }\n if (subscription) {\n // Add quotes around the subscription to handle subscriptions with spaces\n subscriptionSection = [\"--subscription\", `\"${subscription}\"`];\n }\n return new Promise((resolve, reject) => {\n try {\n const args = [\n \"account\",\n \"get-access-token\",\n \"--output\",\n \"json\",\n \"--resource\",\n resource,\n ...tenantSection,\n ...subscriptionSection,\n ];\n const command = [\"az\", ...args].join(\" \");\n child_process_1.default.exec(command, { cwd: exports.cliCredentialInternals.getSafeWorkingDir(), timeout }, (error, stdout, stderr) => {\n resolve({ stdout: stdout, stderr: stderr, error });\n });\n }\n catch (err) {\n reject(err);\n }\n });\n },\n};\n/**\n * This credential will use the currently logged-in user login information\n * via the Azure CLI ('az') commandline tool.\n * To do so, it will read the user access token and expire time\n * with Azure CLI command \"az account get-access-token\".\n */\nclass AzureCliCredential {\n tenantId;\n additionallyAllowedTenantIds;\n timeout;\n subscription;\n /**\n * Creates an instance of the {@link AzureCliCredential}.\n *\n * To use this credential, ensure that you have already logged\n * in via the 'az' tool using the command \"az login\" from the commandline.\n *\n * @param options - Options, to optionally allow multi-tenant requests.\n */\n constructor(options) {\n if (options?.tenantId) {\n (0, tenantIdUtils_js_1.checkTenantId)(logger, options?.tenantId);\n this.tenantId = options?.tenantId;\n }\n if (options?.subscription) {\n (0, subscriptionUtils_js_1.checkSubscription)(logger, options?.subscription);\n this.subscription = options?.subscription;\n }\n this.additionallyAllowedTenantIds = (0, tenantIdUtils_js_1.resolveAdditionallyAllowedTenantIds)(options?.additionallyAllowedTenants);\n this.timeout = options?.processTimeoutInMs;\n }\n /**\n * Authenticates with Microsoft Entra ID and returns an access token if successful.\n * If authentication fails, a {@link CredentialUnavailableError} will be thrown with the details of the failure.\n *\n * @param scopes - The list of scopes for which the token will have access.\n * @param options - The options used to configure any requests this\n * TokenCredential implementation might make.\n */\n async getToken(scopes, options = {}) {\n const scope = typeof scopes === \"string\" ? scopes : scopes[0];\n const claimsValue = options.claims;\n if (claimsValue && claimsValue.trim()) {\n const encodedClaims = btoa(claimsValue);\n let loginCmd = `az login --claims-challenge ${encodedClaims} --scope ${scope}`;\n const tenantIdFromOptions = options.tenantId;\n if (tenantIdFromOptions) {\n loginCmd += ` --tenant ${tenantIdFromOptions}`;\n }\n const error = new errors_js_1.CredentialUnavailableError(`${exports.azureCliPublicErrorMessages.claim} ${loginCmd}`);\n logger.getToken.info((0, logging_js_1.formatError)(scope, error));\n throw error;\n }\n const tenantId = (0, tenantIdUtils_js_1.processMultiTenantRequest)(this.tenantId, options, this.additionallyAllowedTenantIds);\n if (tenantId) {\n (0, tenantIdUtils_js_1.checkTenantId)(logger, tenantId);\n }\n if (this.subscription) {\n (0, subscriptionUtils_js_1.checkSubscription)(logger, this.subscription);\n }\n logger.getToken.info(`Using the scope ${scope}`);\n return tracing_js_1.tracingClient.withSpan(`${this.constructor.name}.getToken`, options, async () => {\n try {\n (0, scopeUtils_js_1.ensureValidScopeForDevTimeCreds)(scope, logger);\n const resource = (0, scopeUtils_js_1.getScopeResource)(scope);\n const obj = await exports.cliCredentialInternals.getAzureCliAccessToken(resource, tenantId, this.subscription, this.timeout);\n const specificScope = obj.stderr?.match(\"(.*)az login --scope(.*)\");\n const isLoginError = obj.stderr?.match(\"(.*)az login(.*)\") && !specificScope;\n const isNotInstallError = obj.stderr?.match(\"az:(.*)not found\") || obj.stderr?.startsWith(\"'az' is not recognized\");\n if (isNotInstallError) {\n const error = new errors_js_1.CredentialUnavailableError(exports.azureCliPublicErrorMessages.notInstalled);\n logger.getToken.info((0, logging_js_1.formatError)(scopes, error));\n throw error;\n }\n if (isLoginError) {\n const error = new errors_js_1.CredentialUnavailableError(exports.azureCliPublicErrorMessages.login);\n logger.getToken.info((0, logging_js_1.formatError)(scopes, error));\n throw error;\n }\n try {\n const responseData = obj.stdout;\n const response = this.parseRawResponse(responseData);\n logger.getToken.info((0, logging_js_1.formatSuccess)(scopes));\n return response;\n }\n catch (e) {\n if (obj.stderr) {\n throw new errors_js_1.CredentialUnavailableError(obj.stderr);\n }\n throw e;\n }\n }\n catch (err) {\n const error = err.name === \"CredentialUnavailableError\"\n ? err\n : new errors_js_1.CredentialUnavailableError(err.message || exports.azureCliPublicErrorMessages.unknown);\n logger.getToken.info((0, logging_js_1.formatError)(scopes, error));\n throw error;\n }\n });\n }\n /**\n * Parses the raw JSON response from the Azure CLI into a usable AccessToken object\n *\n * @param rawResponse - The raw JSON response from the Azure CLI\n * @returns An access token with the expiry time parsed from the raw response\n *\n * The expiryTime of the credential's access token, in milliseconds, is calculated as follows:\n *\n * When available, expires_on (introduced in Azure CLI v2.54.0) will be preferred. Otherwise falls back to expiresOn.\n */\n parseRawResponse(rawResponse) {\n const response = JSON.parse(rawResponse);\n const token = response.accessToken;\n // if available, expires_on will be a number representing seconds since epoch.\n // ensure it's a number or NaN\n let expiresOnTimestamp = Number.parseInt(response.expires_on, 10) * 1000;\n if (!isNaN(expiresOnTimestamp)) {\n logger.getToken.info(\"expires_on is available and is valid, using it\");\n return {\n token,\n expiresOnTimestamp,\n tokenType: \"Bearer\",\n };\n }\n // fallback to the older expiresOn - an RFC3339 date string\n expiresOnTimestamp = new Date(response.expiresOn).getTime();\n // ensure expiresOn is well-formatted\n if (isNaN(expiresOnTimestamp)) {\n throw new errors_js_1.CredentialUnavailableError(`${exports.azureCliPublicErrorMessages.unexpectedResponse} \"${response.expiresOn}\"`);\n }\n return {\n token,\n expiresOnTimestamp,\n tokenType: \"Bearer\",\n };\n }\n}\nexports.AzureCliCredential = AzureCliCredential;\n//# sourceMappingURL=azureCliCredential.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.processUtils = void 0;\nconst tslib_1 = require(\"tslib\");\nconst node_child_process_1 = tslib_1.__importDefault(require(\"node:child_process\"));\n/**\n * Easy to mock childProcess utils.\n * @internal\n */\nexports.processUtils = {\n /**\n * Promisifying childProcess.execFile\n * @internal\n */\n execFile(file, params, options) {\n return new Promise((resolve, reject) => {\n node_child_process_1.default.execFile(file, params, options, (error, stdout, stderr) => {\n if (Buffer.isBuffer(stdout)) {\n stdout = stdout.toString(\"utf8\");\n }\n if (Buffer.isBuffer(stderr)) {\n stderr = stderr.toString(\"utf8\");\n }\n if (stderr || error) {\n reject(stderr ? new Error(stderr) : error);\n }\n else {\n resolve(stdout);\n }\n });\n });\n },\n};\n//# sourceMappingURL=processUtils.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.AzurePowerShellCredential = exports.commandStack = exports.powerShellPublicErrorMessages = exports.powerShellErrors = void 0;\nexports.formatCommand = formatCommand;\nexports.parseJsonToken = parseJsonToken;\nconst tenantIdUtils_js_1 = require(\"../util/tenantIdUtils.js\");\nconst logging_js_1 = require(\"../util/logging.js\");\nconst scopeUtils_js_1 = require(\"../util/scopeUtils.js\");\nconst errors_js_1 = require(\"../errors.js\");\nconst processUtils_js_1 = require(\"../util/processUtils.js\");\nconst tracing_js_1 = require(\"../util/tracing.js\");\nconst logger = (0, logging_js_1.credentialLogger)(\"AzurePowerShellCredential\");\nconst isWindows = process.platform === \"win32\";\n/**\n * Returns a platform-appropriate command name by appending \".exe\" on Windows.\n *\n * @internal\n */\nfunction formatCommand(commandName) {\n if (isWindows) {\n return `${commandName}.exe`;\n }\n else {\n return commandName;\n }\n}\n/**\n * Receives a list of commands to run, executes them, then returns the outputs.\n * If anything fails, an error is thrown.\n * @internal\n */\nasync function runCommands(commands, timeout) {\n const results = [];\n for (const command of commands) {\n const [file, ...parameters] = command;\n const result = (await processUtils_js_1.processUtils.execFile(file, parameters, {\n encoding: \"utf8\",\n timeout,\n }));\n results.push(result);\n }\n return results;\n}\n/**\n * Known PowerShell errors\n * @internal\n */\nexports.powerShellErrors = {\n login: \"Run Connect-AzAccount to login\",\n installed: \"The specified module 'Az.Accounts' with version '2.2.0' was not loaded because no valid module file was found in any module directory\",\n};\n/**\n * Messages to use when throwing in this credential.\n * @internal\n */\nexports.powerShellPublicErrorMessages = {\n login: \"Please run 'Connect-AzAccount' from PowerShell to authenticate before using this credential.\",\n installed: `The 'Az.Account' module >= 2.2.0 is not installed. Install the Azure Az PowerShell module with: \"Install-Module -Name Az -Scope CurrentUser -Repository PSGallery -Force\".`,\n claim: \"This credential doesn't support claims challenges. To authenticate with the required claims, please run the following command:\",\n troubleshoot: `To troubleshoot, visit https://aka.ms/azsdk/js/identity/powershellcredential/troubleshoot.`,\n};\n// PowerShell Azure User not logged in error check.\nconst isLoginError = (err) => err.message.match(`(.*)${exports.powerShellErrors.login}(.*)`);\n// Az Module not Installed in Azure PowerShell check.\nconst isNotInstalledError = (err) => err.message.match(exports.powerShellErrors.installed);\n/**\n * The PowerShell commands to be tried, in order.\n *\n * @internal\n */\nexports.commandStack = [formatCommand(\"pwsh\")];\nif (isWindows) {\n exports.commandStack.push(formatCommand(\"powershell\"));\n}\n/**\n * This credential will use the currently logged-in user information from the\n * Azure PowerShell module. To do so, it will read the user access token and\n * expire time with Azure PowerShell command `Get-AzAccessToken -ResourceUrl {ResourceScope}`\n */\nclass AzurePowerShellCredential {\n tenantId;\n additionallyAllowedTenantIds;\n timeout;\n /**\n * Creates an instance of the {@link AzurePowerShellCredential}.\n *\n * To use this credential:\n * - Install the Azure Az PowerShell module with:\n * `Install-Module -Name Az -Scope CurrentUser -Repository PSGallery -Force`.\n * - You have already logged in to Azure PowerShell using the command\n * `Connect-AzAccount` from the command line.\n *\n * @param options - Options, to optionally allow multi-tenant requests.\n */\n constructor(options) {\n if (options?.tenantId) {\n (0, tenantIdUtils_js_1.checkTenantId)(logger, options?.tenantId);\n this.tenantId = options?.tenantId;\n }\n this.additionallyAllowedTenantIds = (0, tenantIdUtils_js_1.resolveAdditionallyAllowedTenantIds)(options?.additionallyAllowedTenants);\n this.timeout = options?.processTimeoutInMs;\n }\n /**\n * Gets the access token from Azure PowerShell\n * @param resource - The resource to use when getting the token\n */\n async getAzurePowerShellAccessToken(resource, tenantId, timeout) {\n // Clone the stack to avoid mutating it while iterating\n for (const powerShellCommand of [...exports.commandStack]) {\n try {\n await runCommands([[powerShellCommand, \"/?\"]], timeout);\n }\n catch (e) {\n // Remove this credential from the original stack so that we don't try it again.\n exports.commandStack.shift();\n continue;\n }\n const results = await runCommands([\n [\n powerShellCommand,\n \"-NoProfile\",\n \"-NonInteractive\",\n \"-Command\",\n `\n $tenantId = \"${tenantId ?? \"\"}\"\n $m = Import-Module Az.Accounts -MinimumVersion 2.2.0 -PassThru\n $useSecureString = $m.Version -ge [version]'2.17.0' -and $m.Version -lt [version]'5.0.0'\n\n $params = @{\n ResourceUrl = \"${resource}\"\n }\n\n if ($tenantId.Length -gt 0) {\n $params[\"TenantId\"] = $tenantId\n }\n\n if ($useSecureString) {\n $params[\"AsSecureString\"] = $true\n }\n\n $token = Get-AzAccessToken @params\n\n $result = New-Object -TypeName PSObject\n $result | Add-Member -MemberType NoteProperty -Name ExpiresOn -Value $token.ExpiresOn\n\n if ($token.Token -is [System.Security.SecureString]) {\n if ($PSVersionTable.PSVersion.Major -lt 7) {\n $ssPtr = [System.Runtime.InteropServices.Marshal]::SecureStringToBSTR($token.Token)\n try {\n $result | Add-Member -MemberType NoteProperty -Name Token -Value ([System.Runtime.InteropServices.Marshal]::PtrToStringBSTR($ssPtr))\n }\n finally {\n [System.Runtime.InteropServices.Marshal]::ZeroFreeBSTR($ssPtr)\n }\n }\n else {\n $result | Add-Member -MemberType NoteProperty -Name Token -Value ($token.Token | ConvertFrom-SecureString -AsPlainText)\n }\n }\n else {\n $result | Add-Member -MemberType NoteProperty -Name Token -Value $token.Token\n }\n\n Write-Output (ConvertTo-Json $result)\n `,\n ],\n ]);\n const result = results[0];\n return parseJsonToken(result);\n }\n throw new Error(`Unable to execute PowerShell. Ensure that it is installed in your system`);\n }\n /**\n * Authenticates with Microsoft Entra ID and returns an access token if successful.\n * If the authentication cannot be performed through PowerShell, a {@link CredentialUnavailableError} will be thrown.\n *\n * @param scopes - The list of scopes for which the token will have access.\n * @param options - The options used to configure any requests this TokenCredential implementation might make.\n */\n async getToken(scopes, options = {}) {\n return tracing_js_1.tracingClient.withSpan(`${this.constructor.name}.getToken`, options, async () => {\n const scope = typeof scopes === \"string\" ? scopes : scopes[0];\n const claimsValue = options.claims;\n if (claimsValue && claimsValue.trim()) {\n const encodedClaims = btoa(claimsValue);\n let loginCmd = `Connect-AzAccount -ClaimsChallenge ${encodedClaims}`;\n const tenantIdFromOptions = options.tenantId;\n if (tenantIdFromOptions) {\n loginCmd += ` -Tenant ${tenantIdFromOptions}`;\n }\n const error = new errors_js_1.CredentialUnavailableError(`${exports.powerShellPublicErrorMessages.claim} ${loginCmd}`);\n logger.getToken.info((0, logging_js_1.formatError)(scope, error));\n throw error;\n }\n const tenantId = (0, tenantIdUtils_js_1.processMultiTenantRequest)(this.tenantId, options, this.additionallyAllowedTenantIds);\n if (tenantId) {\n (0, tenantIdUtils_js_1.checkTenantId)(logger, tenantId);\n }\n try {\n (0, scopeUtils_js_1.ensureValidScopeForDevTimeCreds)(scope, logger);\n logger.getToken.info(`Using the scope ${scope}`);\n const resource = (0, scopeUtils_js_1.getScopeResource)(scope);\n const response = await this.getAzurePowerShellAccessToken(resource, tenantId, this.timeout);\n logger.getToken.info((0, logging_js_1.formatSuccess)(scopes));\n return {\n token: response.Token,\n expiresOnTimestamp: new Date(response.ExpiresOn).getTime(),\n tokenType: \"Bearer\",\n };\n }\n catch (err) {\n if (isNotInstalledError(err)) {\n const error = new errors_js_1.CredentialUnavailableError(exports.powerShellPublicErrorMessages.installed);\n logger.getToken.info((0, logging_js_1.formatError)(scope, error));\n throw error;\n }\n else if (isLoginError(err)) {\n const error = new errors_js_1.CredentialUnavailableError(exports.powerShellPublicErrorMessages.login);\n logger.getToken.info((0, logging_js_1.formatError)(scope, error));\n throw error;\n }\n const error = new errors_js_1.CredentialUnavailableError(`${err}. ${exports.powerShellPublicErrorMessages.troubleshoot}`);\n logger.getToken.info((0, logging_js_1.formatError)(scope, error));\n throw error;\n }\n });\n }\n}\nexports.AzurePowerShellCredential = AzurePowerShellCredential;\n/**\n *\n * @internal\n */\nasync function parseJsonToken(result) {\n const jsonRegex = /{[^{}]*}/g;\n const matches = result.match(jsonRegex);\n let resultWithoutToken = result;\n if (matches) {\n try {\n for (const item of matches) {\n try {\n const jsonContent = JSON.parse(item);\n if (jsonContent?.Token) {\n resultWithoutToken = resultWithoutToken.replace(item, \"\");\n if (resultWithoutToken) {\n logger.getToken.warning(resultWithoutToken);\n }\n return jsonContent;\n }\n }\n catch (e) {\n continue;\n }\n }\n }\n catch (e) {\n throw new Error(`Unable to parse the output of PowerShell. Received output: ${result}`);\n }\n }\n throw new Error(`No access token found in the output. Received output: ${result}`);\n}\n//# sourceMappingURL=azurePowerShellCredential.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.VisualStudioCodeCredential = void 0;\nconst logging_js_1 = require(\"../util/logging.js\");\nconst tenantIdUtils_js_1 = require(\"../util/tenantIdUtils.js\");\nconst errors_js_1 = require(\"../errors.js\");\nconst tenantIdUtils_js_2 = require(\"../util/tenantIdUtils.js\");\nconst msalClient_js_1 = require(\"../msal/nodeFlows/msalClient.js\");\nconst scopeUtils_js_1 = require(\"../util/scopeUtils.js\");\nconst msalPlugins_js_1 = require(\"../msal/nodeFlows/msalPlugins.js\");\nconst utils_js_1 = require(\"../msal/utils.js\");\nconst promises_1 = require(\"node:fs/promises\");\nconst CommonTenantId = \"common\";\nconst VSCodeClientId = \"aebc6443-996d-45c2-90f0-388ff96faa56\";\nconst logger = (0, logging_js_1.credentialLogger)(\"VisualStudioCodeCredential\");\n// Map of unsupported Tenant IDs and the errors we will be throwing.\nconst unsupportedTenantIds = {\n adfs: \"The VisualStudioCodeCredential does not support authentication with ADFS tenants.\",\n};\nfunction checkUnsupportedTenant(tenantId) {\n // If the Tenant ID isn't supported, we throw.\n const unsupportedTenantError = unsupportedTenantIds[tenantId];\n if (unsupportedTenantError) {\n throw new errors_js_1.CredentialUnavailableError(unsupportedTenantError);\n }\n}\n/**\n * Connects to Azure using the user account signed in through the Azure Resources extension in Visual Studio Code.\n * Once the user has logged in via the extension, this credential can share the same refresh token\n * that is cached by the extension.\n */\nclass VisualStudioCodeCredential {\n tenantId;\n additionallyAllowedTenantIds;\n msalClient;\n options;\n /**\n * Creates an instance of VisualStudioCodeCredential to use for automatically authenticating via VSCode.\n *\n * **Note**: `VisualStudioCodeCredential` is provided by a plugin package:\n * `@azure/identity-vscode`. If this package is not installed, then authentication using\n * `VisualStudioCodeCredential` will not be available.\n *\n * @param options - Options for configuring the client which makes the authentication request.\n */\n constructor(options) {\n this.options = options || {};\n if (options && options.tenantId) {\n (0, tenantIdUtils_js_2.checkTenantId)(logger, options.tenantId);\n this.tenantId = options.tenantId;\n }\n else {\n this.tenantId = CommonTenantId;\n }\n this.additionallyAllowedTenantIds = (0, tenantIdUtils_js_1.resolveAdditionallyAllowedTenantIds)(options?.additionallyAllowedTenants);\n checkUnsupportedTenant(this.tenantId);\n }\n /**\n * Runs preparations for any further getToken request:\n * - Validates that the plugin is available.\n * - Loads the authentication record from VSCode if available.\n * - Creates the MSAL client with the loaded plugin and authentication record.\n */\n async prepare(scopes) {\n const tenantId = (0, tenantIdUtils_js_1.processMultiTenantRequest)(this.tenantId, this.options, this.additionallyAllowedTenantIds, logger) || this.tenantId;\n if (!(0, msalPlugins_js_1.hasVSCodePlugin)() || !msalPlugins_js_1.vsCodeAuthRecordPath) {\n throw new errors_js_1.CredentialUnavailableError(\"Visual Studio Code Authentication is not available.\" +\n \" Ensure you have have Azure Resources Extension installed in VS Code,\" +\n \" signed into Azure via VS Code, installed the @azure/identity-vscode package,\" +\n \" and properly configured the extension.\");\n }\n // Load the authentication record directly from the path\n const authenticationRecord = await this.loadAuthRecord(msalPlugins_js_1.vsCodeAuthRecordPath, scopes);\n this.msalClient = (0, msalClient_js_1.createMsalClient)(VSCodeClientId, tenantId, {\n ...this.options,\n isVSCodeCredential: true,\n brokerOptions: {\n enabled: true,\n parentWindowHandle: new Uint8Array(0),\n useDefaultBrokerAccount: true,\n },\n authenticationRecord,\n });\n }\n /**\n * The promise of the single preparation that will be executed at the first getToken request for an instance of this class.\n */\n preparePromise;\n /**\n * Runs preparations for any further getToken, but only once.\n */\n prepareOnce(scopes) {\n if (!this.preparePromise) {\n this.preparePromise = this.prepare(scopes);\n }\n return this.preparePromise;\n }\n /**\n * Returns the token found by searching VSCode's authentication cache or\n * returns null if no token could be found.\n *\n * @param scopes - The list of scopes for which the token will have access.\n * @param options - The options used to configure any requests this\n * `TokenCredential` implementation might make.\n */\n async getToken(scopes, options) {\n // Load the plugin and authentication record only once\n const scopeArray = (0, scopeUtils_js_1.ensureScopes)(scopes);\n await this.prepareOnce(scopeArray);\n if (!this.msalClient) {\n throw new errors_js_1.CredentialUnavailableError(\"Visual Studio Code Authentication failed to initialize.\" +\n \" Ensure you have have Azure Resources Extension installed in VS Code,\" +\n \" signed into Azure via VS Code, installed the @azure/identity-vscode package,\" +\n \" and properly configured the extension.\");\n }\n // Disable automatic authentication to ensure that the user is not prompted interactively if no token is available\n return this.msalClient.getTokenByInteractiveRequest(scopeArray, {\n ...options,\n disableAutomaticAuthentication: true,\n });\n }\n /**\n * Loads the authentication record from the specified path.\n * @param authRecordPath - The path to the authentication record file.\n * @param scopes - The list of scopes for which the token will have access.\n * @returns The authentication record or undefined if loading fails.\n */\n async loadAuthRecord(authRecordPath, scopes) {\n try {\n const authRecordContent = await (0, promises_1.readFile)(authRecordPath, { encoding: \"utf8\" });\n return (0, utils_js_1.deserializeAuthenticationRecord)(authRecordContent);\n }\n catch (error) {\n logger.getToken.info((0, logging_js_1.formatError)(scopes, error));\n throw new errors_js_1.CredentialUnavailableError(\"Cannot load authentication record in Visual Studio Code.\" +\n \" Ensure you have have Azure Resources Extension installed in VS Code,\" +\n \" signed into Azure via VS Code, installed the @azure/identity-vscode package,\" +\n \" and properly configured the extension.\");\n }\n }\n}\nexports.VisualStudioCodeCredential = VisualStudioCodeCredential;\n//# sourceMappingURL=visualStudioCodeCredential.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.BrokerCredential = void 0;\nconst tenantIdUtils_js_1 = require(\"../util/tenantIdUtils.js\");\nconst logging_js_1 = require(\"../util/logging.js\");\nconst scopeUtils_js_1 = require(\"../util/scopeUtils.js\");\nconst tracing_js_1 = require(\"../util/tracing.js\");\nconst msalClient_js_1 = require(\"../msal/nodeFlows/msalClient.js\");\nconst constants_js_1 = require(\"../constants.js\");\nconst errors_js_1 = require(\"../errors.js\");\nconst logger = (0, logging_js_1.credentialLogger)(\"BrokerCredential\");\n/**\n * Enables authentication to Microsoft Entra ID using WAM (Web Account Manager) broker.\n * This credential uses the default account logged into the OS via a broker.\n */\nclass BrokerCredential {\n brokerMsalClient;\n brokerTenantId;\n brokerAdditionallyAllowedTenantIds;\n /**\n * Creates an instance of BrokerCredential with the required broker options.\n *\n * This credential uses WAM (Web Account Manager) for authentication, which provides\n * better security and user experience on Windows platforms.\n *\n * @param options - Options for configuring the broker credential, including required broker options.\n */\n constructor(options) {\n this.brokerTenantId = (0, tenantIdUtils_js_1.resolveTenantId)(logger, options.tenantId);\n this.brokerAdditionallyAllowedTenantIds = (0, tenantIdUtils_js_1.resolveAdditionallyAllowedTenantIds)(options?.additionallyAllowedTenants);\n const msalClientOptions = {\n ...options,\n tokenCredentialOptions: options,\n logger,\n brokerOptions: {\n enabled: true,\n parentWindowHandle: new Uint8Array(0),\n useDefaultBrokerAccount: true,\n },\n };\n this.brokerMsalClient = (0, msalClient_js_1.createMsalClient)(constants_js_1.DeveloperSignOnClientId, this.brokerTenantId, msalClientOptions);\n }\n /**\n * Authenticates with Microsoft Entra ID using WAM broker and returns an access token if successful.\n * If authentication fails, a {@link CredentialUnavailableError} will be thrown with the details of the failure.\n *\n * This method extends the base getToken method to support silentAuthenticationOnly option\n * when using broker authentication.\n *\n * @param scopes - The list of scopes for which the token will have access.\n * @param options - The options used to configure the token request, including silentAuthenticationOnly option.\n */\n async getToken(scopes, options = {}) {\n return tracing_js_1.tracingClient.withSpan(`${this.constructor.name}.getToken`, options, async (newOptions) => {\n newOptions.tenantId = (0, tenantIdUtils_js_1.processMultiTenantRequest)(this.brokerTenantId, newOptions, this.brokerAdditionallyAllowedTenantIds, logger);\n const arrayScopes = (0, scopeUtils_js_1.ensureScopes)(scopes);\n try {\n return this.brokerMsalClient.getBrokeredToken(arrayScopes, true, {\n ...newOptions,\n disableAutomaticAuthentication: true,\n });\n }\n catch (e) {\n logger.getToken.info((0, logging_js_1.formatError)(arrayScopes, e));\n throw new errors_js_1.CredentialUnavailableError(\"Failed to acquire token using broker authentication\", { cause: e });\n }\n });\n }\n}\nexports.BrokerCredential = BrokerCredential;\n//# sourceMappingURL=brokerCredential.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.createDefaultBrokerCredential = createDefaultBrokerCredential;\nexports.createDefaultVisualStudioCodeCredential = createDefaultVisualStudioCodeCredential;\nexports.createDefaultManagedIdentityCredential = createDefaultManagedIdentityCredential;\nexports.createDefaultWorkloadIdentityCredential = createDefaultWorkloadIdentityCredential;\nexports.createDefaultAzureDeveloperCliCredential = createDefaultAzureDeveloperCliCredential;\nexports.createDefaultAzureCliCredential = createDefaultAzureCliCredential;\nexports.createDefaultAzurePowershellCredential = createDefaultAzurePowershellCredential;\nexports.createDefaultEnvironmentCredential = createDefaultEnvironmentCredential;\nconst environmentCredential_js_1 = require(\"./environmentCredential.js\");\nconst index_js_1 = require(\"./managedIdentityCredential/index.js\");\nconst workloadIdentityCredential_js_1 = require(\"./workloadIdentityCredential.js\");\nconst azureDeveloperCliCredential_js_1 = require(\"./azureDeveloperCliCredential.js\");\nconst azureCliCredential_js_1 = require(\"./azureCliCredential.js\");\nconst azurePowerShellCredential_js_1 = require(\"./azurePowerShellCredential.js\");\nconst visualStudioCodeCredential_js_1 = require(\"./visualStudioCodeCredential.js\");\nconst brokerCredential_js_1 = require(\"./brokerCredential.js\");\n/**\n * Creates a {@link BrokerCredential} instance with the provided options.\n * This credential uses the Windows Authentication Manager (WAM) broker for authentication.\n * It will only attempt to authenticate silently using the default broker account\n *\n * @param options - Options for configuring the credential.\n *\n * @internal\n */\nfunction createDefaultBrokerCredential(options = {}) {\n return new brokerCredential_js_1.BrokerCredential(options);\n}\n/**\n * Creates a {@link VisualStudioCodeCredential} from the provided options.\n * @param options - Options to configure the credential.\n *\n * @internal\n */\nfunction createDefaultVisualStudioCodeCredential(options = {}) {\n return new visualStudioCodeCredential_js_1.VisualStudioCodeCredential(options);\n}\n/**\n * Creates a {@link ManagedIdentityCredential} from the provided options.\n * @param options - Options to configure the credential.\n *\n * @internal\n */\nfunction createDefaultManagedIdentityCredential(options = {}) {\n options.retryOptions ??= {\n maxRetries: 5,\n retryDelayInMs: 800,\n };\n // ManagedIdentityCredential inside DAC chain should send a probe request by default.\n // This is different from standalone ManagedIdentityCredential behavior\n // or when AZURE_TOKEN_CREDENTIALS is set to only ManagedIdentityCredential.\n options.sendProbeRequest ??= true;\n const managedIdentityClientId = options?.managedIdentityClientId ??\n process.env.AZURE_CLIENT_ID;\n const workloadIdentityClientId = options?.workloadIdentityClientId ??\n managedIdentityClientId;\n const managedResourceId = options\n ?.managedIdentityResourceId;\n const workloadFile = process.env.AZURE_FEDERATED_TOKEN_FILE;\n const tenantId = options?.tenantId ?? process.env.AZURE_TENANT_ID;\n if (managedResourceId) {\n const managedIdentityResourceIdOptions = {\n ...options,\n resourceId: managedResourceId,\n };\n return new index_js_1.ManagedIdentityCredential(managedIdentityResourceIdOptions);\n }\n if (workloadFile && workloadIdentityClientId) {\n const workloadIdentityCredentialOptions = {\n ...options,\n tenantId: tenantId,\n };\n return new index_js_1.ManagedIdentityCredential(workloadIdentityClientId, workloadIdentityCredentialOptions);\n }\n if (managedIdentityClientId) {\n const managedIdentityClientOptions = {\n ...options,\n clientId: managedIdentityClientId,\n };\n return new index_js_1.ManagedIdentityCredential(managedIdentityClientOptions);\n }\n // We may be able to return a UnavailableCredential here, but that may be a breaking change\n return new index_js_1.ManagedIdentityCredential(options);\n}\n/**\n * Creates a {@link WorkloadIdentityCredential} from the provided options.\n * @param options - Options to configure the credential.\n *\n * @internal\n */\nfunction createDefaultWorkloadIdentityCredential(options) {\n const managedIdentityClientId = options?.managedIdentityClientId ??\n process.env.AZURE_CLIENT_ID;\n const workloadIdentityClientId = options?.workloadIdentityClientId ??\n managedIdentityClientId;\n const workloadFile = process.env.AZURE_FEDERATED_TOKEN_FILE;\n const tenantId = options?.tenantId ?? process.env.AZURE_TENANT_ID;\n if (workloadFile && workloadIdentityClientId) {\n const workloadIdentityCredentialOptions = {\n ...options,\n tenantId,\n clientId: workloadIdentityClientId,\n tokenFilePath: workloadFile,\n };\n return new workloadIdentityCredential_js_1.WorkloadIdentityCredential(workloadIdentityCredentialOptions);\n }\n if (tenantId) {\n const workloadIdentityClientTenantOptions = {\n ...options,\n tenantId,\n };\n return new workloadIdentityCredential_js_1.WorkloadIdentityCredential(workloadIdentityClientTenantOptions);\n }\n // We may be able to return a UnavailableCredential here, but that may be a breaking change\n return new workloadIdentityCredential_js_1.WorkloadIdentityCredential(options);\n}\n/**\n * Creates a {@link AzureDeveloperCliCredential} from the provided options.\n * @param options - Options to configure the credential.\n *\n * @internal\n */\nfunction createDefaultAzureDeveloperCliCredential(options = {}) {\n return new azureDeveloperCliCredential_js_1.AzureDeveloperCliCredential(options);\n}\n/**\n * Creates a {@link AzureCliCredential} from the provided options.\n * @param options - Options to configure the credential.\n *\n * @internal\n */\nfunction createDefaultAzureCliCredential(options = {}) {\n return new azureCliCredential_js_1.AzureCliCredential(options);\n}\n/**\n * Creates a {@link AzurePowerShellCredential} from the provided options.\n * @param options - Options to configure the credential.\n *\n * @internal\n */\nfunction createDefaultAzurePowershellCredential(options = {}) {\n return new azurePowerShellCredential_js_1.AzurePowerShellCredential(options);\n}\n/**\n * Creates an {@link EnvironmentCredential} from the provided options.\n * @param options - Options to configure the credential.\n *\n * @internal\n */\nfunction createDefaultEnvironmentCredential(options = {}) {\n return new environmentCredential_js_1.EnvironmentCredential(options);\n}\n//# sourceMappingURL=defaultAzureCredentialFunctions.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.DefaultAzureCredential = exports.UnavailableDefaultCredential = void 0;\nconst chainedTokenCredential_js_1 = require(\"./chainedTokenCredential.js\");\nconst logging_js_1 = require(\"../util/logging.js\");\nconst defaultAzureCredentialFunctions_js_1 = require(\"./defaultAzureCredentialFunctions.js\");\nconst logger = (0, logging_js_1.credentialLogger)(\"DefaultAzureCredential\");\n/**\n * A no-op credential that logs the reason it was skipped if getToken is called.\n * @internal\n */\nclass UnavailableDefaultCredential {\n credentialUnavailableErrorMessage;\n credentialName;\n constructor(credentialName, message) {\n this.credentialName = credentialName;\n this.credentialUnavailableErrorMessage = message;\n }\n getToken() {\n logger.getToken.info(`Skipping ${this.credentialName}, reason: ${this.credentialUnavailableErrorMessage}`);\n return Promise.resolve(null);\n }\n}\nexports.UnavailableDefaultCredential = UnavailableDefaultCredential;\n/**\n * Provides a default {@link ChainedTokenCredential} configuration that works for most\n * applications that use Azure SDK client libraries. For more information, see\n * [DefaultAzureCredential overview](https://aka.ms/azsdk/js/identity/credential-chains#use-defaultazurecredential-for-flexibility).\n *\n * The following credential types will be tried, in order:\n *\n * - {@link EnvironmentCredential}\n * - {@link WorkloadIdentityCredential}\n * - {@link ManagedIdentityCredential}\n * - {@link VisualStudioCodeCredential}\n * - {@link AzureCliCredential}\n * - {@link AzurePowerShellCredential}\n * - {@link AzureDeveloperCliCredential}\n * - BrokerCredential (a broker-enabled credential that requires \\@azure/identity-broker is installed)\n *\n * Consult the documentation of these credential types for more information\n * on how they attempt authentication.\n *\n * The following example demonstrates how to use the `requiredEnvVars` option to ensure that certain environment variables are set before the `DefaultAzureCredential` is instantiated.\n * If any of the specified environment variables are missing or empty, an error will be thrown, preventing the application from continuing execution without the necessary configuration.\n * It also demonstrates how to set the `AZURE_TOKEN_CREDENTIALS` environment variable to control which credentials are included in the chain.\n \n * ```ts snippet:defaultazurecredential_requiredEnvVars\n * import { DefaultAzureCredential } from \"@azure/identity\";\n *\n * const credential = new DefaultAzureCredential({\n * requiredEnvVars: [\n * \"AZURE_CLIENT_ID\",\n * \"AZURE_TENANT_ID\",\n * \"AZURE_CLIENT_SECRET\",\n * \"AZURE_TOKEN_CREDENTIALS\",\n * ],\n * });\n * ```\n */\nclass DefaultAzureCredential extends chainedTokenCredential_js_1.ChainedTokenCredential {\n constructor(options) {\n validateRequiredEnvVars(options);\n // If AZURE_TOKEN_CREDENTIALS is not set, use the default credential chain.\n const azureTokenCredentials = process.env.AZURE_TOKEN_CREDENTIALS\n ? process.env.AZURE_TOKEN_CREDENTIALS.trim().toLowerCase()\n : undefined;\n const devCredentialFunctions = [\n defaultAzureCredentialFunctions_js_1.createDefaultVisualStudioCodeCredential,\n defaultAzureCredentialFunctions_js_1.createDefaultAzureCliCredential,\n defaultAzureCredentialFunctions_js_1.createDefaultAzurePowershellCredential,\n defaultAzureCredentialFunctions_js_1.createDefaultAzureDeveloperCliCredential,\n defaultAzureCredentialFunctions_js_1.createDefaultBrokerCredential,\n ];\n const prodCredentialFunctions = [\n defaultAzureCredentialFunctions_js_1.createDefaultEnvironmentCredential,\n defaultAzureCredentialFunctions_js_1.createDefaultWorkloadIdentityCredential,\n defaultAzureCredentialFunctions_js_1.createDefaultManagedIdentityCredential,\n ];\n let credentialFunctions = [];\n const validCredentialNames = \"EnvironmentCredential, WorkloadIdentityCredential, ManagedIdentityCredential, VisualStudioCodeCredential, AzureCliCredential, AzurePowerShellCredential, AzureDeveloperCliCredential\";\n // If AZURE_TOKEN_CREDENTIALS is set, use it to determine which credentials to use.\n // The value of AZURE_TOKEN_CREDENTIALS should be either \"dev\" or \"prod\" or any one of these credentials - {validCredentialNames}.\n if (azureTokenCredentials) {\n switch (azureTokenCredentials) {\n case \"dev\":\n credentialFunctions = devCredentialFunctions;\n break;\n case \"prod\":\n credentialFunctions = prodCredentialFunctions;\n break;\n case \"environmentcredential\":\n credentialFunctions = [defaultAzureCredentialFunctions_js_1.createDefaultEnvironmentCredential];\n break;\n case \"workloadidentitycredential\":\n credentialFunctions = [defaultAzureCredentialFunctions_js_1.createDefaultWorkloadIdentityCredential];\n break;\n case \"managedidentitycredential\":\n // Setting `sendProbeRequest` to false to ensure ManagedIdentityCredential behavior\n // is consistent when used standalone in DAC chain or used directly.\n credentialFunctions = [\n () => (0, defaultAzureCredentialFunctions_js_1.createDefaultManagedIdentityCredential)({ sendProbeRequest: false }),\n ];\n break;\n case \"visualstudiocodecredential\":\n credentialFunctions = [defaultAzureCredentialFunctions_js_1.createDefaultVisualStudioCodeCredential];\n break;\n case \"azureclicredential\":\n credentialFunctions = [defaultAzureCredentialFunctions_js_1.createDefaultAzureCliCredential];\n break;\n case \"azurepowershellcredential\":\n credentialFunctions = [defaultAzureCredentialFunctions_js_1.createDefaultAzurePowershellCredential];\n break;\n case \"azuredeveloperclicredential\":\n credentialFunctions = [defaultAzureCredentialFunctions_js_1.createDefaultAzureDeveloperCliCredential];\n break;\n default: {\n // If AZURE_TOKEN_CREDENTIALS is set to an unsupported value, throw an error.\n // This will prevent the creation of the DefaultAzureCredential.\n const errorMessage = `Invalid value for AZURE_TOKEN_CREDENTIALS = ${process.env.AZURE_TOKEN_CREDENTIALS}. Valid values are 'prod' or 'dev' or any of these credentials - ${validCredentialNames}.`;\n logger.warning(errorMessage);\n throw new Error(errorMessage);\n }\n }\n }\n else {\n // If AZURE_TOKEN_CREDENTIALS is not set, use the default credential chain.\n credentialFunctions = [...prodCredentialFunctions, ...devCredentialFunctions];\n }\n // Errors from individual credentials should not be thrown in the DefaultAzureCredential constructor, instead throwing on getToken() which is handled by ChainedTokenCredential.\n // When adding new credentials to the default chain, consider:\n // 1. Making the constructor parameters required and explicit\n // 2. Validating any required parameters in the factory function\n // 3. Returning a UnavailableDefaultCredential from the factory function if a credential is unavailable for any reason\n const credentials = credentialFunctions.map((createCredentialFn) => {\n try {\n return createCredentialFn(options ?? {});\n }\n catch (err) {\n logger.warning(`Skipped ${createCredentialFn.name} because of an error creating the credential: ${err}`);\n return new UnavailableDefaultCredential(createCredentialFn.name, err.message);\n }\n });\n super(...credentials);\n }\n}\nexports.DefaultAzureCredential = DefaultAzureCredential;\n/**\n * This function checks that all environment variables in `options.requiredEnvVars` are set and non-empty.\n * If any are missing or empty, it throws an error.\n */\nfunction validateRequiredEnvVars(options) {\n if (options?.requiredEnvVars) {\n const requiredVars = Array.isArray(options.requiredEnvVars)\n ? options.requiredEnvVars\n : [options.requiredEnvVars];\n const missing = requiredVars.filter((envVar) => !process.env[envVar]);\n if (missing.length > 0) {\n const errorMessage = `Required environment ${missing.length === 1 ? \"variable\" : \"variables\"} '${missing.join(\", \")}' for DefaultAzureCredential ${missing.length === 1 ? \"is\" : \"are\"} not set or empty.`;\n logger.warning(errorMessage);\n throw new Error(errorMessage);\n }\n }\n}\n//# sourceMappingURL=defaultAzureCredential.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.InteractiveBrowserCredential = void 0;\nconst tenantIdUtils_js_1 = require(\"../util/tenantIdUtils.js\");\nconst logging_js_1 = require(\"../util/logging.js\");\nconst scopeUtils_js_1 = require(\"../util/scopeUtils.js\");\nconst tracing_js_1 = require(\"../util/tracing.js\");\nconst msalClient_js_1 = require(\"../msal/nodeFlows/msalClient.js\");\nconst constants_js_1 = require(\"../constants.js\");\nconst logger = (0, logging_js_1.credentialLogger)(\"InteractiveBrowserCredential\");\n/**\n * Enables authentication to Microsoft Entra ID inside of the web browser\n * using the interactive login flow.\n */\nclass InteractiveBrowserCredential {\n tenantId;\n additionallyAllowedTenantIds;\n msalClient;\n disableAutomaticAuthentication;\n browserCustomizationOptions;\n loginHint;\n /**\n * Creates an instance of InteractiveBrowserCredential with the details needed.\n *\n * This credential uses the [Authorization Code Flow](https://learn.microsoft.com/entra/identity-platform/v2-oauth2-auth-code-flow).\n * On Node.js, it will open a browser window while it listens for a redirect response from the authentication service.\n * On browsers, it authenticates via popups. The `loginStyle` optional parameter can be set to `redirect` to authenticate by redirecting the user to an Azure secure login page, which then will redirect the user back to the web application where the authentication started.\n *\n * For Node.js, if a `clientId` is provided, the Microsoft Entra application will need to be configured to have a \"Mobile and desktop applications\" redirect endpoint.\n * Follow our guide on [setting up Redirect URIs for Desktop apps that calls to web APIs](https://learn.microsoft.com/entra/identity-platform/scenario-desktop-app-registration#redirect-uris).\n *\n * @param options - Options for configuring the client which makes the authentication requests.\n */\n constructor(options) {\n this.tenantId = (0, tenantIdUtils_js_1.resolveTenantId)(logger, options.tenantId, options.clientId);\n this.additionallyAllowedTenantIds = (0, tenantIdUtils_js_1.resolveAdditionallyAllowedTenantIds)(options?.additionallyAllowedTenants);\n const msalClientOptions = {\n ...options,\n tokenCredentialOptions: options,\n logger,\n };\n const ibcNodeOptions = options;\n this.browserCustomizationOptions = ibcNodeOptions.browserCustomizationOptions;\n this.loginHint = ibcNodeOptions.loginHint;\n if (ibcNodeOptions?.brokerOptions?.enabled) {\n if (!ibcNodeOptions?.brokerOptions?.parentWindowHandle) {\n throw new Error(\"In order to do WAM authentication, `parentWindowHandle` under `brokerOptions` is a required parameter\");\n }\n else {\n msalClientOptions.brokerOptions = {\n enabled: true,\n parentWindowHandle: ibcNodeOptions.brokerOptions.parentWindowHandle,\n legacyEnableMsaPassthrough: ibcNodeOptions.brokerOptions?.legacyEnableMsaPassthrough,\n useDefaultBrokerAccount: ibcNodeOptions.brokerOptions?.useDefaultBrokerAccount,\n };\n }\n }\n this.msalClient = (0, msalClient_js_1.createMsalClient)(options.clientId ?? constants_js_1.DeveloperSignOnClientId, this.tenantId, msalClientOptions);\n this.disableAutomaticAuthentication = options?.disableAutomaticAuthentication;\n }\n /**\n * Authenticates with Microsoft Entra ID and returns an access token if successful.\n * If authentication fails, a {@link CredentialUnavailableError} will be thrown with the details of the failure.\n *\n * If the user provided the option `disableAutomaticAuthentication`,\n * once the token can't be retrieved silently,\n * this method won't attempt to request user interaction to retrieve the token.\n *\n * @param scopes - The list of scopes for which the token will have access.\n * @param options - The options used to configure any requests this\n * TokenCredential implementation might make.\n */\n async getToken(scopes, options = {}) {\n return tracing_js_1.tracingClient.withSpan(`${this.constructor.name}.getToken`, options, async (newOptions) => {\n newOptions.tenantId = (0, tenantIdUtils_js_1.processMultiTenantRequest)(this.tenantId, newOptions, this.additionallyAllowedTenantIds, logger);\n const arrayScopes = (0, scopeUtils_js_1.ensureScopes)(scopes);\n return this.msalClient.getTokenByInteractiveRequest(arrayScopes, {\n ...newOptions,\n disableAutomaticAuthentication: this.disableAutomaticAuthentication,\n browserCustomizationOptions: this.browserCustomizationOptions,\n loginHint: this.loginHint,\n });\n });\n }\n /**\n * Authenticates with Microsoft Entra ID and returns an access token if successful.\n * If authentication fails, a {@link CredentialUnavailableError} will be thrown with the details of the failure.\n *\n * If the token can't be retrieved silently, this method will always generate a challenge for the user.\n *\n * On Node.js, this credential has [Proof Key for Code Exchange (PKCE)](https://datatracker.ietf.org/doc/html/rfc7636) enabled by default.\n * PKCE is a security feature that mitigates authentication code interception attacks.\n *\n * @param scopes - The list of scopes for which the token will have access.\n * @param options - The options used to configure any requests this\n * TokenCredential implementation might make.\n */\n async authenticate(scopes, options = {}) {\n return tracing_js_1.tracingClient.withSpan(`${this.constructor.name}.authenticate`, options, async (newOptions) => {\n const arrayScopes = (0, scopeUtils_js_1.ensureScopes)(scopes);\n await this.msalClient.getTokenByInteractiveRequest(arrayScopes, {\n ...newOptions,\n disableAutomaticAuthentication: false, // this method should always allow user interaction\n browserCustomizationOptions: this.browserCustomizationOptions,\n loginHint: this.loginHint,\n });\n return this.msalClient.getActiveAccount();\n });\n }\n}\nexports.InteractiveBrowserCredential = InteractiveBrowserCredential;\n//# sourceMappingURL=interactiveBrowserCredential.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.DeviceCodeCredential = void 0;\nexports.defaultDeviceCodePromptCallback = defaultDeviceCodePromptCallback;\nconst tenantIdUtils_js_1 = require(\"../util/tenantIdUtils.js\");\nconst logging_js_1 = require(\"../util/logging.js\");\nconst scopeUtils_js_1 = require(\"../util/scopeUtils.js\");\nconst tracing_js_1 = require(\"../util/tracing.js\");\nconst msalClient_js_1 = require(\"../msal/nodeFlows/msalClient.js\");\nconst constants_js_1 = require(\"../constants.js\");\nconst logger = (0, logging_js_1.credentialLogger)(\"DeviceCodeCredential\");\n/**\n * Method that logs the user code from the DeviceCodeCredential.\n * @param deviceCodeInfo - The device code.\n */\nfunction defaultDeviceCodePromptCallback(deviceCodeInfo) {\n console.log(deviceCodeInfo.message);\n}\n/**\n * Enables authentication to Microsoft Entra ID using a device code\n * that the user can enter into https://microsoft.com/devicelogin.\n */\nclass DeviceCodeCredential {\n tenantId;\n additionallyAllowedTenantIds;\n disableAutomaticAuthentication;\n msalClient;\n userPromptCallback;\n /**\n * Creates an instance of DeviceCodeCredential with the details needed\n * to initiate the device code authorization flow with Microsoft Entra ID.\n *\n * A message will be logged, giving users a code that they can use to authenticate once they go to https://microsoft.com/devicelogin\n *\n * Developers can configure how this message is shown by passing a custom `userPromptCallback`:\n *\n * ```ts snippet:device_code_credential_example\n * import { DeviceCodeCredential } from \"@azure/identity\";\n *\n * const credential = new DeviceCodeCredential({\n * tenantId: process.env.AZURE_TENANT_ID,\n * clientId: process.env.AZURE_CLIENT_ID,\n * userPromptCallback: (info) => {\n * console.log(\"CUSTOMIZED PROMPT CALLBACK\", info.message);\n * },\n * });\n * ```\n *\n * @param options - Options for configuring the client which makes the authentication requests.\n */\n constructor(options) {\n this.tenantId = options?.tenantId;\n this.additionallyAllowedTenantIds = (0, tenantIdUtils_js_1.resolveAdditionallyAllowedTenantIds)(options?.additionallyAllowedTenants);\n const clientId = options?.clientId ?? constants_js_1.DeveloperSignOnClientId;\n const tenantId = (0, tenantIdUtils_js_1.resolveTenantId)(logger, options?.tenantId, clientId);\n this.userPromptCallback = options?.userPromptCallback ?? defaultDeviceCodePromptCallback;\n this.msalClient = (0, msalClient_js_1.createMsalClient)(clientId, tenantId, {\n ...options,\n logger,\n tokenCredentialOptions: options || {},\n });\n this.disableAutomaticAuthentication = options?.disableAutomaticAuthentication;\n }\n /**\n * Authenticates with Microsoft Entra ID and returns an access token if successful.\n * If authentication fails, a {@link CredentialUnavailableError} will be thrown with the details of the failure.\n *\n * If the user provided the option `disableAutomaticAuthentication`,\n * once the token can't be retrieved silently,\n * this method won't attempt to request user interaction to retrieve the token.\n *\n * @param scopes - The list of scopes for which the token will have access.\n * @param options - The options used to configure any requests this\n * TokenCredential implementation might make.\n */\n async getToken(scopes, options = {}) {\n return tracing_js_1.tracingClient.withSpan(`${this.constructor.name}.getToken`, options, async (newOptions) => {\n newOptions.tenantId = (0, tenantIdUtils_js_1.processMultiTenantRequest)(this.tenantId, newOptions, this.additionallyAllowedTenantIds, logger);\n const arrayScopes = (0, scopeUtils_js_1.ensureScopes)(scopes);\n return this.msalClient.getTokenByDeviceCode(arrayScopes, this.userPromptCallback, {\n ...newOptions,\n disableAutomaticAuthentication: this.disableAutomaticAuthentication,\n });\n });\n }\n /**\n * Authenticates with Microsoft Entra ID and returns an access token if successful.\n * If authentication fails, a {@link CredentialUnavailableError} will be thrown with the details of the failure.\n *\n * If the token can't be retrieved silently, this method will always generate a challenge for the user.\n *\n * @param scopes - The list of scopes for which the token will have access.\n * @param options - The options used to configure any requests this\n * TokenCredential implementation might make.\n */\n async authenticate(scopes, options = {}) {\n return tracing_js_1.tracingClient.withSpan(`${this.constructor.name}.authenticate`, options, async (newOptions) => {\n const arrayScopes = Array.isArray(scopes) ? scopes : [scopes];\n await this.msalClient.getTokenByDeviceCode(arrayScopes, this.userPromptCallback, {\n ...newOptions,\n disableAutomaticAuthentication: false, // this method should always allow user interaction\n });\n return this.msalClient.getActiveAccount();\n });\n }\n}\nexports.DeviceCodeCredential = DeviceCodeCredential;\n//# sourceMappingURL=deviceCodeCredential.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.AzurePipelinesCredential = void 0;\nexports.handleOidcResponse = handleOidcResponse;\nconst errors_js_1 = require(\"../errors.js\");\nconst core_rest_pipeline_1 = require(\"@azure/core-rest-pipeline\");\nconst clientAssertionCredential_js_1 = require(\"./clientAssertionCredential.js\");\nconst identityClient_js_1 = require(\"../client/identityClient.js\");\nconst tenantIdUtils_js_1 = require(\"../util/tenantIdUtils.js\");\nconst logging_js_1 = require(\"../util/logging.js\");\nconst credentialName = \"AzurePipelinesCredential\";\nconst logger = (0, logging_js_1.credentialLogger)(credentialName);\nconst OIDC_API_VERSION = \"7.1\";\n/**\n * This credential is designed to be used in Azure Pipelines with service connections\n * as a setup for workload identity federation.\n */\nclass AzurePipelinesCredential {\n clientAssertionCredential;\n identityClient;\n /**\n * AzurePipelinesCredential supports Federated Identity on Azure Pipelines through Service Connections.\n * @param tenantId - tenantId associated with the service connection\n * @param clientId - clientId associated with the service connection\n * @param serviceConnectionId - Unique ID for the service connection, as found in the querystring's resourceId key\n * @param systemAccessToken - The pipeline's System.AccessToken value.\n * @param options - The identity client options to use for authentication.\n */\n constructor(tenantId, clientId, serviceConnectionId, systemAccessToken, options = {}) {\n if (!clientId) {\n throw new errors_js_1.CredentialUnavailableError(`${credentialName}: is unavailable. clientId is a required parameter.`);\n }\n if (!tenantId) {\n throw new errors_js_1.CredentialUnavailableError(`${credentialName}: is unavailable. tenantId is a required parameter.`);\n }\n if (!serviceConnectionId) {\n throw new errors_js_1.CredentialUnavailableError(`${credentialName}: is unavailable. serviceConnectionId is a required parameter.`);\n }\n if (!systemAccessToken) {\n throw new errors_js_1.CredentialUnavailableError(`${credentialName}: is unavailable. systemAccessToken is a required parameter.`);\n }\n // Allow these headers to be logged for troubleshooting by AzurePipelines.\n options.loggingOptions = {\n ...options?.loggingOptions,\n additionalAllowedHeaderNames: [\n ...(options.loggingOptions?.additionalAllowedHeaderNames ?? []),\n \"x-vss-e2eid\",\n \"x-msedge-ref\",\n ],\n };\n this.identityClient = new identityClient_js_1.IdentityClient(options);\n (0, tenantIdUtils_js_1.checkTenantId)(logger, tenantId);\n logger.info(`Invoking AzurePipelinesCredential with tenant ID: ${tenantId}, client ID: ${clientId}, and service connection ID: ${serviceConnectionId}`);\n if (!process.env.SYSTEM_OIDCREQUESTURI) {\n throw new errors_js_1.CredentialUnavailableError(`${credentialName}: is unavailable. Ensure that you're running this task in an Azure Pipeline, so that following missing system variable(s) can be defined- \"SYSTEM_OIDCREQUESTURI\"`);\n }\n const oidcRequestUrl = `${process.env.SYSTEM_OIDCREQUESTURI}?api-version=${OIDC_API_VERSION}&serviceConnectionId=${serviceConnectionId}`;\n logger.info(`Invoking ClientAssertionCredential with tenant ID: ${tenantId}, client ID: ${clientId} and service connection ID: ${serviceConnectionId}`);\n this.clientAssertionCredential = new clientAssertionCredential_js_1.ClientAssertionCredential(tenantId, clientId, this.requestOidcToken.bind(this, oidcRequestUrl, systemAccessToken), options);\n }\n /**\n * Authenticates with Microsoft Entra ID and returns an access token if successful.\n * If authentication fails, a {@link CredentialUnavailableError} or {@link AuthenticationError} will be thrown with the details of the failure.\n *\n * @param scopes - The list of scopes for which the token will have access.\n * @param options - The options used to configure any requests this\n * TokenCredential implementation might make.\n */\n async getToken(scopes, options) {\n if (!this.clientAssertionCredential) {\n const errorMessage = `${credentialName}: is unavailable. To use Federation Identity in Azure Pipelines, the following parameters are required - \n tenantId,\n clientId,\n serviceConnectionId,\n systemAccessToken,\n \"SYSTEM_OIDCREQUESTURI\". \n See the troubleshooting guide for more information: https://aka.ms/azsdk/js/identity/azurepipelinescredential/troubleshoot`;\n logger.error(errorMessage);\n throw new errors_js_1.CredentialUnavailableError(errorMessage);\n }\n logger.info(\"Invoking getToken() of Client Assertion Credential\");\n return this.clientAssertionCredential.getToken(scopes, options);\n }\n /**\n *\n * @param oidcRequestUrl - oidc request url\n * @param systemAccessToken - system access token\n * @returns OIDC token from Azure Pipelines\n */\n async requestOidcToken(oidcRequestUrl, systemAccessToken) {\n logger.info(\"Requesting OIDC token from Azure Pipelines...\");\n logger.info(oidcRequestUrl);\n const request = (0, core_rest_pipeline_1.createPipelineRequest)({\n url: oidcRequestUrl,\n method: \"POST\",\n headers: (0, core_rest_pipeline_1.createHttpHeaders)({\n \"Content-Type\": \"application/json\",\n Authorization: `Bearer ${systemAccessToken}`,\n // Prevents the service from responding with a redirect HTTP status code (useful for automation).\n \"X-TFS-FedAuthRedirect\": \"Suppress\",\n }),\n });\n const response = await this.identityClient.sendRequest(request);\n return handleOidcResponse(response);\n }\n}\nexports.AzurePipelinesCredential = AzurePipelinesCredential;\nfunction handleOidcResponse(response) {\n // OIDC token is present in `bodyAsText` field\n const text = response.bodyAsText;\n if (!text) {\n logger.error(`${credentialName}: Authentication Failed. Received null token from OIDC request. Response status- ${response.status}. Complete response - ${JSON.stringify(response)}`);\n throw new errors_js_1.AuthenticationError(response.status, {\n error: `${credentialName}: Authentication Failed. Received null token from OIDC request.`,\n error_description: `${JSON.stringify(response)}. See the troubleshooting guide for more information: https://aka.ms/azsdk/js/identity/azurepipelinescredential/troubleshoot`,\n });\n }\n try {\n const result = JSON.parse(text);\n if (result?.oidcToken) {\n return result.oidcToken;\n }\n else {\n const errorMessage = `${credentialName}: Authentication Failed. oidcToken field not detected in the response.`;\n let errorDescription = ``;\n if (response.status !== 200) {\n errorDescription = `Response body = ${text}. Response Headers [\"x-vss-e2eid\"] = ${response.headers.get(\"x-vss-e2eid\")} and [\"x-msedge-ref\"] = ${response.headers.get(\"x-msedge-ref\")}. See the troubleshooting guide for more information: https://aka.ms/azsdk/js/identity/azurepipelinescredential/troubleshoot`;\n }\n logger.error(errorMessage);\n logger.error(errorDescription);\n throw new errors_js_1.AuthenticationError(response.status, {\n error: errorMessage,\n error_description: errorDescription,\n });\n }\n }\n catch (e) {\n const errorDetails = `${credentialName}: Authentication Failed. oidcToken field not detected in the response.`;\n logger.error(`Response from service = ${text}, Response Headers [\"x-vss-e2eid\"] = ${response.headers.get(\"x-vss-e2eid\")} \n and [\"x-msedge-ref\"] = ${response.headers.get(\"x-msedge-ref\")}, error message = ${e.message}`);\n logger.error(errorDetails);\n throw new errors_js_1.AuthenticationError(response.status, {\n error: errorDetails,\n error_description: `Response = ${text}. Response headers [\"x-vss-e2eid\"] = ${response.headers.get(\"x-vss-e2eid\")} and [\"x-msedge-ref\"] = ${response.headers.get(\"x-msedge-ref\")}. See the troubleshooting guide for more information: https://aka.ms/azsdk/js/identity/azurepipelinescredential/troubleshoot`,\n });\n }\n}\n//# sourceMappingURL=azurePipelinesCredential.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.AuthorizationCodeCredential = void 0;\nconst tenantIdUtils_js_1 = require(\"../util/tenantIdUtils.js\");\nconst tenantIdUtils_js_2 = require(\"../util/tenantIdUtils.js\");\nconst logging_js_1 = require(\"../util/logging.js\");\nconst scopeUtils_js_1 = require(\"../util/scopeUtils.js\");\nconst tracing_js_1 = require(\"../util/tracing.js\");\nconst msalClient_js_1 = require(\"../msal/nodeFlows/msalClient.js\");\nconst logger = (0, logging_js_1.credentialLogger)(\"AuthorizationCodeCredential\");\n/**\n * Enables authentication to Microsoft Entra ID using an authorization code\n * that was obtained through the authorization code flow, described in more detail\n * in the Microsoft Entra ID documentation:\n *\n * https://learn.microsoft.com/entra/identity-platform/v2-oauth2-auth-code-flow\n */\nclass AuthorizationCodeCredential {\n msalClient;\n disableAutomaticAuthentication;\n authorizationCode;\n redirectUri;\n tenantId;\n additionallyAllowedTenantIds;\n clientSecret;\n /**\n * @hidden\n * @internal\n */\n constructor(tenantId, clientId, clientSecretOrAuthorizationCode, authorizationCodeOrRedirectUri, redirectUriOrOptions, options) {\n (0, tenantIdUtils_js_2.checkTenantId)(logger, tenantId);\n this.clientSecret = clientSecretOrAuthorizationCode;\n if (typeof redirectUriOrOptions === \"string\") {\n // the clientId+clientSecret constructor\n this.authorizationCode = authorizationCodeOrRedirectUri;\n this.redirectUri = redirectUriOrOptions;\n // in this case, options are good as they come\n }\n else {\n // clientId only\n this.authorizationCode = clientSecretOrAuthorizationCode;\n this.redirectUri = authorizationCodeOrRedirectUri;\n this.clientSecret = undefined;\n options = redirectUriOrOptions;\n }\n // TODO: Validate tenant if provided\n this.tenantId = tenantId;\n this.additionallyAllowedTenantIds = (0, tenantIdUtils_js_1.resolveAdditionallyAllowedTenantIds)(options?.additionallyAllowedTenants);\n this.msalClient = (0, msalClient_js_1.createMsalClient)(clientId, tenantId, {\n ...options,\n logger,\n tokenCredentialOptions: options ?? {},\n });\n }\n /**\n * Authenticates with Microsoft Entra ID and returns an access token if successful.\n * If authentication fails, a {@link CredentialUnavailableError} will be thrown with the details of the failure.\n *\n * @param scopes - The list of scopes for which the token will have access.\n * @param options - The options used to configure any requests this\n * TokenCredential implementation might make.\n */\n async getToken(scopes, options = {}) {\n return tracing_js_1.tracingClient.withSpan(`${this.constructor.name}.getToken`, options, async (newOptions) => {\n const tenantId = (0, tenantIdUtils_js_1.processMultiTenantRequest)(this.tenantId, newOptions, this.additionallyAllowedTenantIds);\n newOptions.tenantId = tenantId;\n const arrayScopes = (0, scopeUtils_js_1.ensureScopes)(scopes);\n return this.msalClient.getTokenByAuthorizationCode(arrayScopes, this.redirectUri, this.authorizationCode, this.clientSecret, {\n ...newOptions,\n disableAutomaticAuthentication: this.disableAutomaticAuthentication,\n });\n });\n }\n}\nexports.AuthorizationCodeCredential = AuthorizationCodeCredential;\n//# sourceMappingURL=authorizationCodeCredential.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.OnBehalfOfCredential = void 0;\nconst msalClient_js_1 = require(\"../msal/nodeFlows/msalClient.js\");\nconst logging_js_1 = require(\"../util/logging.js\");\nconst tenantIdUtils_js_1 = require(\"../util/tenantIdUtils.js\");\nconst errors_js_1 = require(\"../errors.js\");\nconst node_crypto_1 = require(\"node:crypto\");\nconst scopeUtils_js_1 = require(\"../util/scopeUtils.js\");\nconst promises_1 = require(\"node:fs/promises\");\nconst tracing_js_1 = require(\"../util/tracing.js\");\nconst credentialName = \"OnBehalfOfCredential\";\nconst logger = (0, logging_js_1.credentialLogger)(credentialName);\n/**\n * Enables authentication to Microsoft Entra ID using the [On Behalf Of flow](https://learn.microsoft.com/entra/identity-platform/v2-oauth2-on-behalf-of-flow).\n */\nclass OnBehalfOfCredential {\n tenantId;\n additionallyAllowedTenantIds;\n msalClient;\n sendCertificateChain;\n certificatePath;\n clientSecret;\n userAssertionToken;\n clientAssertion;\n constructor(options) {\n const { clientSecret } = options;\n const { certificatePath, sendCertificateChain } = options;\n const { getAssertion } = options;\n const { tenantId, clientId, userAssertionToken, additionallyAllowedTenants: additionallyAllowedTenantIds, } = options;\n if (!tenantId) {\n throw new errors_js_1.CredentialUnavailableError(`${credentialName}: tenantId is a required parameter. To troubleshoot, visit https://aka.ms/azsdk/js/identity/serviceprincipalauthentication/troubleshoot.`);\n }\n if (!clientId) {\n throw new errors_js_1.CredentialUnavailableError(`${credentialName}: clientId is a required parameter. To troubleshoot, visit https://aka.ms/azsdk/js/identity/serviceprincipalauthentication/troubleshoot.`);\n }\n if (!clientSecret && !certificatePath && !getAssertion) {\n throw new errors_js_1.CredentialUnavailableError(`${credentialName}: You must provide one of clientSecret, certificatePath, or a getAssertion callback but none were provided. To troubleshoot, visit https://aka.ms/azsdk/js/identity/serviceprincipalauthentication/troubleshoot.`);\n }\n if (!userAssertionToken) {\n throw new errors_js_1.CredentialUnavailableError(`${credentialName}: userAssertionToken is a required parameter. To troubleshoot, visit https://aka.ms/azsdk/js/identity/serviceprincipalauthentication/troubleshoot.`);\n }\n this.certificatePath = certificatePath;\n this.clientSecret = clientSecret;\n this.userAssertionToken = userAssertionToken;\n this.sendCertificateChain = sendCertificateChain;\n this.clientAssertion = getAssertion;\n this.tenantId = tenantId;\n this.additionallyAllowedTenantIds = (0, tenantIdUtils_js_1.resolveAdditionallyAllowedTenantIds)(additionallyAllowedTenantIds);\n this.msalClient = (0, msalClient_js_1.createMsalClient)(clientId, this.tenantId, {\n ...options,\n logger,\n tokenCredentialOptions: options,\n });\n }\n /**\n * Authenticates with Microsoft Entra ID and returns an access token if successful.\n * If authentication fails, a {@link CredentialUnavailableError} will be thrown with the details of the failure.\n *\n * @param scopes - The list of scopes for which the token will have access.\n * @param options - The options used to configure the underlying network requests.\n */\n async getToken(scopes, options = {}) {\n return tracing_js_1.tracingClient.withSpan(`${credentialName}.getToken`, options, async (newOptions) => {\n newOptions.tenantId = (0, tenantIdUtils_js_1.processMultiTenantRequest)(this.tenantId, newOptions, this.additionallyAllowedTenantIds, logger);\n const arrayScopes = (0, scopeUtils_js_1.ensureScopes)(scopes);\n if (this.certificatePath) {\n const clientCertificate = await this.buildClientCertificate(this.certificatePath);\n return this.msalClient.getTokenOnBehalfOf(arrayScopes, this.userAssertionToken, clientCertificate, newOptions);\n }\n else if (this.clientSecret) {\n return this.msalClient.getTokenOnBehalfOf(arrayScopes, this.userAssertionToken, this.clientSecret, options);\n }\n else if (this.clientAssertion) {\n return this.msalClient.getTokenOnBehalfOf(arrayScopes, this.userAssertionToken, this.clientAssertion, options);\n }\n else {\n // this is an invalid scenario and is a bug, as the constructor should have thrown an error if neither clientSecret nor certificatePath nor clientAssertion were provided\n throw new Error(\"Expected either clientSecret or certificatePath or clientAssertion to be defined.\");\n }\n });\n }\n async buildClientCertificate(certificatePath) {\n try {\n const parts = await this.parseCertificate({ certificatePath }, this.sendCertificateChain);\n return {\n thumbprint: parts.thumbprint,\n thumbprintSha256: parts.thumbprintSha256,\n privateKey: parts.certificateContents,\n x5c: parts.x5c,\n };\n }\n catch (error) {\n logger.info((0, logging_js_1.formatError)(\"\", error));\n throw error;\n }\n }\n async parseCertificate(configuration, sendCertificateChain) {\n const certificatePath = configuration.certificatePath;\n const certificateContents = await (0, promises_1.readFile)(certificatePath, \"utf8\");\n const x5c = sendCertificateChain ? certificateContents : undefined;\n const certificatePattern = /(-+BEGIN CERTIFICATE-+)(\\n\\r?|\\r\\n?)([A-Za-z0-9+/\\n\\r]+=*)(\\n\\r?|\\r\\n?)(-+END CERTIFICATE-+)/g;\n const publicKeys = [];\n // Match all possible certificates, in the order they are in the file. These will form the chain that is used for x5c\n let match;\n do {\n match = certificatePattern.exec(certificateContents);\n if (match) {\n publicKeys.push(match[3]);\n }\n } while (match);\n if (publicKeys.length === 0) {\n throw new Error(\"The file at the specified path does not contain a PEM-encoded certificate.\");\n }\n const thumbprint = (0, node_crypto_1.createHash)(\"sha1\") // CodeQL [SM04514] Needed for backward compatibility reason\n .update(Buffer.from(publicKeys[0], \"base64\"))\n .digest(\"hex\")\n .toUpperCase();\n const thumbprintSha256 = (0, node_crypto_1.createHash)(\"sha256\")\n .update(Buffer.from(publicKeys[0], \"base64\"))\n .digest(\"hex\")\n .toUpperCase();\n return {\n certificateContents,\n thumbprintSha256,\n thumbprint,\n x5c,\n };\n }\n}\nexports.OnBehalfOfCredential = OnBehalfOfCredential;\n//# sourceMappingURL=onBehalfOfCredential.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getBearerTokenProvider = getBearerTokenProvider;\nconst core_rest_pipeline_1 = require(\"@azure/core-rest-pipeline\");\n/**\n * Returns a callback that provides a bearer token.\n * For example, the bearer token can be used to authenticate a request as follows:\n * ```ts snippet:token_provider_example\n * import { DefaultAzureCredential, getBearerTokenProvider } from \"@azure/identity\";\n * import { createPipelineRequest } from \"@azure/core-rest-pipeline\";\n *\n * const credential = new DefaultAzureCredential();\n * const scope = \"https://cognitiveservices.azure.com/.default\";\n * const getAccessToken = getBearerTokenProvider(credential, scope);\n * const token = await getAccessToken();\n *\n * // usage\n * const request = createPipelineRequest({ url: \"https://example.com\" });\n * request.headers.set(\"Authorization\", `Bearer ${token}`);\n * ```\n *\n * @param credential - The credential used to authenticate the request.\n * @param scopes - The scopes required for the bearer token.\n * @param options - Options to configure the token provider.\n * @returns a callback that provides a bearer token.\n */\nfunction getBearerTokenProvider(credential, scopes, options) {\n const { abortSignal, tracingOptions } = options || {};\n const pipeline = (0, core_rest_pipeline_1.createEmptyPipeline)();\n pipeline.addPolicy((0, core_rest_pipeline_1.bearerTokenAuthenticationPolicy)({ credential, scopes }));\n async function getRefreshedToken() {\n // Create a pipeline with just the bearer token policy\n // and run a dummy request through it to get the token\n const res = await pipeline.sendRequest({\n sendRequest: (request) => Promise.resolve({\n request,\n status: 200,\n headers: request.headers,\n }),\n }, (0, core_rest_pipeline_1.createPipelineRequest)({\n url: \"https://example.com\",\n abortSignal,\n tracingOptions,\n }));\n const accessToken = res.headers.get(\"authorization\")?.split(\" \")[1];\n if (!accessToken) {\n throw new Error(\"Failed to get access token\");\n }\n return accessToken;\n }\n return getRefreshedToken;\n}\n//# sourceMappingURL=tokenProvider.js.map","\"use strict\";\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getBearerTokenProvider = exports.AzureAuthorityHosts = exports.logger = exports.WorkloadIdentityCredential = exports.OnBehalfOfCredential = exports.VisualStudioCodeCredential = exports.UsernamePasswordCredential = exports.AzurePowerShellCredential = exports.AuthorizationCodeCredential = exports.AzurePipelinesCredential = exports.DeviceCodeCredential = exports.ManagedIdentityCredential = exports.InteractiveBrowserCredential = exports.AzureDeveloperCliCredential = exports.AzureCliCredential = exports.ClientAssertionCredential = exports.ClientCertificateCredential = exports.EnvironmentCredential = exports.DefaultAzureCredential = exports.ClientSecretCredential = exports.ChainedTokenCredential = exports.deserializeAuthenticationRecord = exports.serializeAuthenticationRecord = exports.AuthenticationRequiredError = exports.CredentialUnavailableErrorName = exports.CredentialUnavailableError = exports.AggregateAuthenticationErrorName = exports.AuthenticationErrorName = exports.AggregateAuthenticationError = exports.AuthenticationError = void 0;\nexports.getDefaultAzureCredential = getDefaultAzureCredential;\nconst tslib_1 = require(\"tslib\");\ntslib_1.__exportStar(require(\"./plugins/consumer.js\"), exports);\nconst defaultAzureCredential_js_1 = require(\"./credentials/defaultAzureCredential.js\");\nvar errors_js_1 = require(\"./errors.js\");\nObject.defineProperty(exports, \"AuthenticationError\", { enumerable: true, get: function () { return errors_js_1.AuthenticationError; } });\nObject.defineProperty(exports, \"AggregateAuthenticationError\", { enumerable: true, get: function () { return errors_js_1.AggregateAuthenticationError; } });\nObject.defineProperty(exports, \"AuthenticationErrorName\", { enumerable: true, get: function () { return errors_js_1.AuthenticationErrorName; } });\nObject.defineProperty(exports, \"AggregateAuthenticationErrorName\", { enumerable: true, get: function () { return errors_js_1.AggregateAuthenticationErrorName; } });\nObject.defineProperty(exports, \"CredentialUnavailableError\", { enumerable: true, get: function () { return errors_js_1.CredentialUnavailableError; } });\nObject.defineProperty(exports, \"CredentialUnavailableErrorName\", { enumerable: true, get: function () { return errors_js_1.CredentialUnavailableErrorName; } });\nObject.defineProperty(exports, \"AuthenticationRequiredError\", { enumerable: true, get: function () { return errors_js_1.AuthenticationRequiredError; } });\nvar utils_js_1 = require(\"./msal/utils.js\");\nObject.defineProperty(exports, \"serializeAuthenticationRecord\", { enumerable: true, get: function () { return utils_js_1.serializeAuthenticationRecord; } });\nObject.defineProperty(exports, \"deserializeAuthenticationRecord\", { enumerable: true, get: function () { return utils_js_1.deserializeAuthenticationRecord; } });\nvar chainedTokenCredential_js_1 = require(\"./credentials/chainedTokenCredential.js\");\nObject.defineProperty(exports, \"ChainedTokenCredential\", { enumerable: true, get: function () { return chainedTokenCredential_js_1.ChainedTokenCredential; } });\nvar clientSecretCredential_js_1 = require(\"./credentials/clientSecretCredential.js\");\nObject.defineProperty(exports, \"ClientSecretCredential\", { enumerable: true, get: function () { return clientSecretCredential_js_1.ClientSecretCredential; } });\nvar defaultAzureCredential_js_2 = require(\"./credentials/defaultAzureCredential.js\");\nObject.defineProperty(exports, \"DefaultAzureCredential\", { enumerable: true, get: function () { return defaultAzureCredential_js_2.DefaultAzureCredential; } });\nvar environmentCredential_js_1 = require(\"./credentials/environmentCredential.js\");\nObject.defineProperty(exports, \"EnvironmentCredential\", { enumerable: true, get: function () { return environmentCredential_js_1.EnvironmentCredential; } });\nvar clientCertificateCredential_js_1 = require(\"./credentials/clientCertificateCredential.js\");\nObject.defineProperty(exports, \"ClientCertificateCredential\", { enumerable: true, get: function () { return clientCertificateCredential_js_1.ClientCertificateCredential; } });\nvar clientAssertionCredential_js_1 = require(\"./credentials/clientAssertionCredential.js\");\nObject.defineProperty(exports, \"ClientAssertionCredential\", { enumerable: true, get: function () { return clientAssertionCredential_js_1.ClientAssertionCredential; } });\nvar azureCliCredential_js_1 = require(\"./credentials/azureCliCredential.js\");\nObject.defineProperty(exports, \"AzureCliCredential\", { enumerable: true, get: function () { return azureCliCredential_js_1.AzureCliCredential; } });\nvar azureDeveloperCliCredential_js_1 = require(\"./credentials/azureDeveloperCliCredential.js\");\nObject.defineProperty(exports, \"AzureDeveloperCliCredential\", { enumerable: true, get: function () { return azureDeveloperCliCredential_js_1.AzureDeveloperCliCredential; } });\nvar interactiveBrowserCredential_js_1 = require(\"./credentials/interactiveBrowserCredential.js\");\nObject.defineProperty(exports, \"InteractiveBrowserCredential\", { enumerable: true, get: function () { return interactiveBrowserCredential_js_1.InteractiveBrowserCredential; } });\nvar index_js_1 = require(\"./credentials/managedIdentityCredential/index.js\");\nObject.defineProperty(exports, \"ManagedIdentityCredential\", { enumerable: true, get: function () { return index_js_1.ManagedIdentityCredential; } });\nvar deviceCodeCredential_js_1 = require(\"./credentials/deviceCodeCredential.js\");\nObject.defineProperty(exports, \"DeviceCodeCredential\", { enumerable: true, get: function () { return deviceCodeCredential_js_1.DeviceCodeCredential; } });\nvar azurePipelinesCredential_js_1 = require(\"./credentials/azurePipelinesCredential.js\");\nObject.defineProperty(exports, \"AzurePipelinesCredential\", { enumerable: true, get: function () { return azurePipelinesCredential_js_1.AzurePipelinesCredential; } });\nvar authorizationCodeCredential_js_1 = require(\"./credentials/authorizationCodeCredential.js\");\nObject.defineProperty(exports, \"AuthorizationCodeCredential\", { enumerable: true, get: function () { return authorizationCodeCredential_js_1.AuthorizationCodeCredential; } });\nvar azurePowerShellCredential_js_1 = require(\"./credentials/azurePowerShellCredential.js\");\nObject.defineProperty(exports, \"AzurePowerShellCredential\", { enumerable: true, get: function () { return azurePowerShellCredential_js_1.AzurePowerShellCredential; } });\nvar usernamePasswordCredential_js_1 = require(\"./credentials/usernamePasswordCredential.js\");\nObject.defineProperty(exports, \"UsernamePasswordCredential\", { enumerable: true, get: function () { return usernamePasswordCredential_js_1.UsernamePasswordCredential; } });\nvar visualStudioCodeCredential_js_1 = require(\"./credentials/visualStudioCodeCredential.js\");\nObject.defineProperty(exports, \"VisualStudioCodeCredential\", { enumerable: true, get: function () { return visualStudioCodeCredential_js_1.VisualStudioCodeCredential; } });\nvar onBehalfOfCredential_js_1 = require(\"./credentials/onBehalfOfCredential.js\");\nObject.defineProperty(exports, \"OnBehalfOfCredential\", { enumerable: true, get: function () { return onBehalfOfCredential_js_1.OnBehalfOfCredential; } });\nvar workloadIdentityCredential_js_1 = require(\"./credentials/workloadIdentityCredential.js\");\nObject.defineProperty(exports, \"WorkloadIdentityCredential\", { enumerable: true, get: function () { return workloadIdentityCredential_js_1.WorkloadIdentityCredential; } });\nvar logging_js_1 = require(\"./util/logging.js\");\nObject.defineProperty(exports, \"logger\", { enumerable: true, get: function () { return logging_js_1.logger; } });\nvar constants_js_1 = require(\"./constants.js\");\nObject.defineProperty(exports, \"AzureAuthorityHosts\", { enumerable: true, get: function () { return constants_js_1.AzureAuthorityHosts; } });\n/**\n * Returns a new instance of the {@link DefaultAzureCredential}.\n */\nfunction getDefaultAzureCredential() {\n return new defaultAzureCredential_js_1.DefaultAzureCredential();\n}\nvar tokenProvider_js_1 = require(\"./tokenProvider.js\");\nObject.defineProperty(exports, \"getBearerTokenProvider\", { enumerable: true, get: function () { return tokenProvider_js_1.getBearerTokenProvider; } });\n//# sourceMappingURL=index.js.map","var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=Object.getOwnPropertyNames,i=Object.getPrototypeOf,a=Object.prototype.hasOwnProperty,o=(e,i,o,s)=>{if(i&&typeof i==`object`||typeof i==`function`)for(var c=r(i),l=0,u=c.length,d;li[e]).bind(null,d),enumerable:!(s=n(i,d))||s.enumerable});return e},s=(n,r,a)=>(a=n==null?{}:e(i(n)),o(r||!n||!n.__esModule?t(a,`default`,{value:n,enumerable:!0}):a,n));let c=require(`yaml`);c=s(c);let l=require(`fs/promises`);l=s(l);let u=require(`path`);u=s(u);let d=require(`os`);d=s(d);let f=require(`bicep-node`),ee=require(`@azure/arm-resources`),te=require(`@azure/arm-resourcesdeploymentstacks`),p=require(`@azure/identity`),ne=require(`node:util`);async function re(e){let t=await l.mkdtemp(u.join(d.tmpdir(),`bicep-`));return await f.Bicep.install(t,e)}async function ie(e,t,n,r){let i=await ce(await re(r),t=>t.compileParams({path:e,parameterOverrides:n??{}}),t);if(ue(i.diagnostics,t),!i.success)throw`Failed to compile Bicep parameters file: ${e}`;return{parameters:i.parameters,template:i.template,templateSpecId:i.templateSpecId}}async function ae(e,t,n){let r=await ce(await re(n),t=>t.compile({path:e}),t);if(ue(r.diagnostics,t),!r.success)throw`Failed to compile Bicep file: ${e}`;return{template:r.contents}}async function oe(e){let{parametersFile:t,parameters:n}=e,r=t?JSON.parse(await l.readFile(t,`utf8`)):{parameters:{}};for(let[e,t]of Object.entries(n??{}))r.parameters[e]={value:t};return JSON.stringify(r)}async function se(e,t){let{parametersFile:n,templateFile:r}=e;if(n&&u.extname(n).toLowerCase()===`.bicepparam`)return m(await ie(n,t,e.parameters,e.bicepVersion));if(n&&u.extname(n).toLowerCase()!==`.json`)throw Error(`Unsupported parameters file type: ${n}`);let i=await oe(e);if(r&&u.extname(r).toLowerCase()===`.bicep`){let{template:n}=await ae(r,t,e.bicepVersion);return m({template:n,parameters:i})}if(r&&u.extname(r).toLowerCase()!==`.json`)throw Error(`Unsupported template file type: ${r}`);if(!r)throw Error(`Template file is required`);return m({template:await l.readFile(r,`utf8`),parameters:i})}function m(e){let{parameters:t,template:n,templateSpecId:r}=e;return{parametersContents:t?JSON.parse(t):void 0,templateContents:n?JSON.parse(n):void 0,templateSpecId:r}}async function ce(e,t,n){let r=await f.Bicep.initialize(e);try{let i=await r.version();return n.logInfo(`Installed Bicep version ${i} to ${e}`),await t(r)}finally{r.dispose()}}function le(e){return u.resolve(e)}function ue(e,t){for(let n of e){let e=`${n.source}(${n.range.start.line+1},${n.range.start.char+1}) : ${n.level} ${n.code}: ${n.message}`;n.level===`Error`&&t.logError(e),n.level===`Warning`&&t.logWarning(e),n.level===`Info`&&t.logInfo(e)}}function h(e,t){return C(e,t,void 0,!0)}function g(e,t){return C(e,t,void 0,!1)}function _(e,t,n){return C(e,n,t,!0)}function v(e,t,n){return C(e,n,t,!1)}function y(e,t){let n=g(e,t);if(n)return le(n)}function b(e,t){let n=g(e,t);if(!n)return!1;if(n.toLowerCase()===`true`)return!0;if(n.toLowerCase()===`false`)return!1;throw Error(`Action input '${e}' must be a boolean value`)}function x(e,t){let n=g(e,t);return n?he(n):void 0}function de(e,t,n){let r=x(e,n);if(!r)return;let i=t;for(let n of r)if(i.indexOf(n)===-1)throw Error(`Action input '${e}' must be one of the following values: '${t.join(`', '`)}'`);return r}function S(e,t){let n=g(e,t);if(!n)return;let r=pe(n)??me(n);if(typeof r!=`object`)throw Error(`Action input '${e}' must be a valid JSON or YAML object`);return r}function fe(e,t){let n=S(e,t);if(n)return Object.keys(n).forEach(t=>{if(typeof n[t]!=`string`)throw Error(`Action input '${e}' must be a valid JSON or YAML object containing only string values`)}),n}function pe(e){try{return JSON.parse(e)}catch{return}}function me(e){try{return c.parse(e)}catch{return}}function he(e){return e.split(`,`).map(e=>e.trim()).filter(e=>e.length>0)}function C(e,t,n,r=!0){let i=t.getInput(e)?.trim();if(!i){if(r)throw Error(`Action input '${e}' is required but not provided`);return}if(n&&!n.includes(i))throw Error(`Action input '${e}' must be one of the following values: '${n.join(`', '`)}'`);return i}function ge(e,t){let n=_(t.type,[`deployment`,`deploymentStack`],e),r=g(t.name,e),i=g(t.location,e),a=y(t.templateFile,e),o=y(t.paramtersFile,e),s=S(t.parameters,e),c=g(t.bicepVersion,e),l=g(t.description,e),u=fe(t.tags,e),d=x(t.maskedOutputs,e),f=v(t.environment,[`azureCloud`,`azureChinaCloud`,`azureGermanCloud`,`azureUSGovernment`],e)??`azureCloud`;switch(n){case`deployment`:return{type:n,name:r,location:i,templateFile:a,parametersFile:o,parameters:s,bicepVersion:c,tags:u,maskedOutputs:d,environment:f,operation:_(t.operation,[`create`,`validate`,`whatIf`],e),scope:_e(e,t),whatIf:{excludeChangeTypes:de(t.whatIfExcludeChangeTypes,[`create`,`delete`,`modify`,`deploy`,`noChange`,`ignore`,`unsupported`],e)},validationLevel:v(t.validationLevel,[`provider`,`template`,`providerNoRbac`],e)};case`deploymentStack`:return{type:n,name:r,location:i,templateFile:a,parametersFile:o,parameters:s,bicepVersion:c,description:l,tags:u,maskedOutputs:d,environment:f,operation:_(t.operation,[`create`,`validate`,`delete`],e),scope:ve(e,t),actionOnUnManage:{resources:_(t.actionOnUnmanageResources,[`delete`,`detach`],e),resourceGroups:v(t.actionOnUnmanageResourceGroups,[`delete`,`detach`],e),managementGroups:v(t.actionOnUnmanageManagementGroups,[`delete`,`detach`],e)},bypassStackOutOfSyncError:b(t.bypasStackOutOfSyncError,e),denySettings:{mode:_(t.denySettingsMode,[`denyDelete`,`denyWriteAndDelete`,`none`],e),excludedActions:x(t.denySettingsExcludedActions,e),excludedPrincipals:x(t.denySettingsExcludedPrincipals,e),applyToChildScopes:b(t.denySettingsApplyToChildScopes,e)}}}}function _e(e,t){let n=_(t.scope,[`tenant`,`managementGroup`,`subscription`,`resourceGroup`],e),r=g(t.tenantId,e);switch(n){case`tenant`:return{type:n,tenantId:r};case`managementGroup`:return{type:n,tenantId:r,managementGroup:h(t.managementGroupId,e)};case`subscription`:return{type:n,tenantId:r,subscriptionId:h(t.subscriptionId,e)};case`resourceGroup`:return{type:n,tenantId:r,subscriptionId:h(t.subscriptionId,e),resourceGroup:h(t.resourceGroupName,e)}}}function ve(e,t){let n=_(t.scope,[`managementGroup`,`subscription`,`resourceGroup`],e),r=g(t.tenantId,e);switch(n){case`managementGroup`:return{type:n,tenantId:r,managementGroup:h(t.managementGroupId,e)};case`subscription`:return{type:n,tenantId:r,subscriptionId:h(t.subscriptionId,e)};case`resourceGroup`:return{type:n,tenantId:r,subscriptionId:h(t.subscriptionId,e),resourceGroup:h(t.resourceGroupName,e)}}}const ye=`gh-azure-bicep-deploy`,be=`00000000-0000-0000-0000-000000000000`,xe={azureCloud:`https://management.azure.com`,azureChinaCloud:`https://management.chinacloudapi.cn`,azureGermanCloud:`https://management.microsoftazure.de`,azureUSGovernment:`https://management.usgovcloudapi.net`};function Se(e,t,n,r){return new ee.ResourceManagementClient(Te(r),n??be,{userAgentOptions:{userAgentPrefix:ye},additionalPolicies:[we(t)],apiVersion:`2024-03-01`,endpoint:xe[e.environment]})}function Ce(e,t,n,r){return new te.DeploymentStacksClient(Te(r),n??be,{userAgentOptions:{userAgentPrefix:ye},additionalPolicies:[we(t)],endpoint:xe[e.environment]})}function we(e){return{position:`perCall`,policy:{name:`debugLoggingPolicy`,async sendRequest(t,n){if(e.isDebugEnabled()&&(e.debug(`Request: ${t.method} ${t.url}`),t.body)){let n=JSON.parse(t.body.toString());e.debug(`Body: ${JSON.stringify(n,null,2)}`)}let r=await n(t);if(e.isDebugEnabled()){if(e.debug(`Response: ${r.status}`),r.bodyAsText){let t=JSON.parse(r.bodyAsText);e.debug(`Body: ${JSON.stringify(t,null,2)}`)}let t=r.headers.get(`x-ms-correlation-request-id`);e.debug(`CorrelationId: ${t}`);let n=r.headers.get(`x-ms-request-id`);e.debug(`ActivityId: ${n}`)}return r}}}}function Te(e){return new p.ChainedTokenCredential(new p.EnvironmentCredential,new p.AzureCliCredential({tenantId:e}),new p.AzurePowerShellCredential({tenantId:e}))}function Ee(e){return typeof e==`object`&&!!e&&!Array.isArray(e)&&!(e instanceof RegExp)&&!(e instanceof Date)}function De(e){if(Ee(e)){let t=typeof e.name==`string`,n=typeof e.message==`string`;return t&&n}return!1}const Oe=ne.inspect.custom,w=`REDACTED`,ke=`x-ms-client-request-id.x-ms-return-client-request-id.x-ms-useragent.x-ms-correlation-request-id.x-ms-request-id.client-request-id.ms-cv.return-client-request-id.traceparent.Access-Control-Allow-Credentials.Access-Control-Allow-Headers.Access-Control-Allow-Methods.Access-Control-Allow-Origin.Access-Control-Expose-Headers.Access-Control-Max-Age.Access-Control-Request-Headers.Access-Control-Request-Method.Origin.Accept.Accept-Encoding.Cache-Control.Connection.Content-Length.Content-Type.Date.ETag.Expires.If-Match.If-Modified-Since.If-None-Match.If-Unmodified-Since.Last-Modified.Pragma.Request-Id.Retry-After.Server.Transfer-Encoding.User-Agent.WWW-Authenticate`.split(`.`),Ae=[`api-version`];var je=class{constructor({additionalAllowedHeaderNames:e=[],additionalAllowedQueryParameters:t=[]}={}){e=ke.concat(e),t=Ae.concat(t),this.allowedHeaderNames=new Set(e.map(e=>e.toLowerCase())),this.allowedQueryParameters=new Set(t.map(e=>e.toLowerCase()))}sanitize(e){let t=new Set;return JSON.stringify(e,(e,n)=>{if(n instanceof Error)return{...n,name:n.name,message:n.message};if(e===`headers`)return this.sanitizeHeaders(n);if(e===`url`)return this.sanitizeUrl(n);if(e===`query`)return this.sanitizeQuery(n);if(e!==`body`&&e!==`response`&&e!==`operationSpec`){if(Array.isArray(n)||Ee(n)){if(t.has(n))return`[Circular]`;t.add(n)}return n}},2)}sanitizeUrl(e){if(typeof e!=`string`||e===null||e===``)return e;let t=new URL(e);if(!t.search)return e;for(let[e]of t.searchParams)this.allowedQueryParameters.has(e.toLowerCase())||t.searchParams.set(e,w);return t.toString()}sanitizeHeaders(e){let t={};for(let n of Object.keys(e))this.allowedHeaderNames.has(n.toLowerCase())?t[n]=e[n]:t[n]=w;return t}sanitizeQuery(e){if(typeof e!=`object`||!e)return e;let t={};for(let n of Object.keys(e))this.allowedQueryParameters.has(n.toLowerCase())?t[n]=e[n]:t[n]=w;return t}};const Me=new je;var T=class e extends Error{constructor(t,n={}){super(t),this.name=`RestError`,this.code=n.code,this.statusCode=n.statusCode,Object.defineProperty(this,`request`,{value:n.request,enumerable:!1}),Object.defineProperty(this,`response`,{value:n.response,enumerable:!1});let r=this.request?.agent?{maxFreeSockets:this.request.agent.maxFreeSockets,maxSockets:this.request.agent.maxSockets}:void 0;Object.defineProperty(this,Oe,{value:()=>`RestError: ${this.message} \\n ${Me.sanitize({...this,request:{...this.request,agent:r},response:this.response})}`,enumerable:!1}),Object.setPrototypeOf(this,e.prototype)}};T.REQUEST_SEND_ERROR=`REQUEST_SEND_ERROR`,T.PARSE_ERROR=`PARSE_ERROR`;function Ne(e){return e instanceof T?!0:De(e)&&e.name===`RestError`}function Pe(e){return Ne(e)}const E=`azure-bicep-deploy`;function D(e,t,n){let{tenantId:r}=t;return Se(e,n,`subscriptionId`in t?t.subscriptionId:void 0,r)}function O(e,t,n){let{tenantId:r}=t;return Ce(e,n,`subscriptionId`in t?t.subscriptionId:void 0,r)}function k(){return{onResponse:(e,t)=>{if(t&&t.error&&t.error.code&&t.error.message)throw new A(t,e)}}}var A=class{constructor(e,t){this.details=e,this.response=t}};function j(e){if(!e.location)throw Error(`Location is required`);return e.location}function M(e,t){if(e.length!==0){t.logInfo(`Diagnostics returned by the API`);for(let n of e){let e=`[${n.level}] ${n.code}: ${n.message}`;switch(n.level.toLowerCase()){case`error`:t.logError(e);break;case`warning`:t.logWarning(e);break;default:t.logInfo(e);break}}}}function Fe(e,t){let n=Ie(t);if(n&&n!==e.scope.type)throw Error(`The target scope ${n} does not match the deployment scope ${e.scope.type}.`)}function Ie(e){let t=e.templateContents??{},n=t.metadata?._generator?.name,r=t.$schema;if(!n)return;let i=/https:\\/\\/schema\\.management\\.azure\\.com\\/schemas\\/[0-9a-zA-Z-]+\\/([a-zA-Z]+)Template\\.json#?/.exec(r);switch(i?i[1].toLowerCase():null){case`tenantdeployment`:return`tenant`;case`managementgroupdeployment`:return`managementGroup`;case`subscriptiondeployment`:return`subscription`;case`deployment`:return`resourceGroup`;default:throw Error(`Failed to determine deployment scope from Bicep file.`)}}async function N(e,t,n){try{return await e()}catch(e){if(Pe(e)){let r=e.response?.headers.get(`x-ms-correlation-request-id`);n.logError(`Request failed. CorrelationId: ${r}`);let{error:i}=e.details;if(i){t(i);return}}if(e instanceof A){let r=e.response?.headers.get(`x-ms-correlation-request-id`);n.logError(`Request failed. CorrelationId: ${r}`);let{error:i}=e.details;if(i){t(i);return}}throw e}}async function Le(e,t,n){let r=e.name??E,i=e.scope,a=D(e,i,n),o=P(e,t);switch(i.type){case`resourceGroup`:return await a.deployments.beginCreateOrUpdateAndWait(i.resourceGroup,r,o,k());case`subscription`:return await a.deployments.beginCreateOrUpdateAtSubscriptionScopeAndWait(r,{...o,location:j(e)},k());case`managementGroup`:return await a.deployments.beginCreateOrUpdateAtManagementGroupScopeAndWait(i.managementGroup,r,{...o,location:j(e)},k());case`tenant`:return await a.deployments.beginCreateOrUpdateAtTenantScopeAndWait(r,{...o,location:j(e)},k())}}async function Re(e,t,n){let r=e.name??E,i=e.scope,a=D(e,i,n),o=P(e,t);switch(i.type){case`resourceGroup`:return await a.deployments.beginValidateAndWait(i.resourceGroup,r,o);case`subscription`:return await a.deployments.beginValidateAtSubscriptionScopeAndWait(r,{...o,location:j(e)});case`managementGroup`:return await a.deployments.beginValidateAtManagementGroupScopeAndWait(i.managementGroup,r,{...o,location:j(e)});case`tenant`:await a.deployments.beginValidateAtTenantScopeAndWait(r,{...o,location:j(e)})}}async function ze(e,t,n){let r=e.name??E,i=e.scope,a=D(e,i,n),o=P(e,t);switch(i.type){case`resourceGroup`:return await a.deployments.beginWhatIfAndWait(i.resourceGroup,r,o);case`subscription`:return await a.deployments.beginWhatIfAtSubscriptionScopeAndWait(r,{...o,location:j(e)});case`managementGroup`:return await a.deployments.beginWhatIfAtManagementGroupScopeAndWait(i.managementGroup,r,{...o,location:j(e)});case`tenant`:return await a.deployments.beginWhatIfAtTenantScopeAndWait(r,{...o,location:j(e)})}}function P(e,t){let{templateContents:n,templateSpecId:r,parametersContents:i}=t;return{location:e.location,properties:{mode:`Incremental`,template:n,templateLink:r?{id:r}:void 0,parameters:i.parameters,expressionEvaluationOptions:{scope:`inner`},validationLevel:e.validationLevel},tags:e.tags}}async function Be(e,t,n){let r=e.name??E,i=e.scope,a=O(e,i,n),o=Ue(e,t);switch(i.type){case`resourceGroup`:return await a.deploymentStacks.beginCreateOrUpdateAtResourceGroupAndWait(i.resourceGroup,r,o,k());case`subscription`:return await a.deploymentStacks.beginCreateOrUpdateAtSubscriptionAndWait(r,{...o,location:j(e)},k());case`managementGroup`:return await a.deploymentStacks.beginCreateOrUpdateAtManagementGroupAndWait(i.managementGroup,r,{...o,location:j(e)},k())}}async function Ve(e,t,n){let r=e.name??E,i=e.scope,a=O(e,i,n),o=Ue(e,t);switch(i.type){case`resourceGroup`:return await a.deploymentStacks.beginValidateStackAtResourceGroupAndWait(i.resourceGroup,r,o);case`subscription`:return await a.deploymentStacks.beginValidateStackAtSubscriptionAndWait(r,{...o,location:j(e)});case`managementGroup`:return await a.deploymentStacks.beginValidateStackAtManagementGroupAndWait(i.managementGroup,r,{...o,location:j(e)})}}async function He(e,t){let n=e.name??E,r=e.scope,i=O(e,r,t),a=We(e);switch(r.type){case`resourceGroup`:return await i.deploymentStacks.beginDeleteAtResourceGroupAndWait(r.resourceGroup,n,a);case`subscription`:return await i.deploymentStacks.beginDeleteAtSubscriptionAndWait(n,a);case`managementGroup`:return await i.deploymentStacks.beginDeleteAtManagementGroupAndWait(r.managementGroup,n,a)}}function Ue(e,t){let{templateContents:n,templateSpecId:r,parametersContents:i}=t;return{properties:{template:n,templateLink:r?{id:r}:void 0,parameters:i.parameters,description:e.description,actionOnUnmanage:e.actionOnUnManage,denySettings:e.denySettings,bypassStackOutOfSyncError:e.bypassStackOutOfSyncError},tags:e.tags}}function We(e){return{unmanageActionResources:e.actionOnUnManage.resources,unmanageActionResourceGroups:e.actionOnUnManage.resourceGroups,unmanageActionManagementGroups:e.actionOnUnManage.managementGroups,bypassStackOutOfSyncError:e.bypassStackOutOfSyncError}}let F=function(e){return e.Reset=`\\x1B[0m`,e.Red=`\\x1B[31m`,e.Green=`\\x1B[32m`,e.Yellow=`\\x1B[33m`,e.Blue=`\\x1B[34m`,e.Magenta=`\\x1B[35m`,e.Cyan=`\\x1B[36m`,e.White=`\\x1B[37m`,e}({});const Ge={\"\\x1B[0m\":`Reset`,\"\\x1B[31m\":`Red`,\"\\x1B[32m\":`Green`,\"\\x1B[33m\":`Yellow`,\"\\x1B[34m\":`Blue`,\"\\x1B[35m\":`Magenta`,\"\\x1B[36m\":`Cyan`,\"\\x1B[37m\":`White`};function Ke(e,t){return e.split(`\n`).map(e=>`${t}${e}${F.Reset}`).join(`\n`)}function qe(e){for(let t in Ge)e=e.replaceAll(t,``);return e}function I(e,t){switch(e){case`off`:return``;case`ansii`:return t;case`debug`:return`<${Ge[t].toUpperCase()}>`}return t}var L=class{constructor(e){this.colorMode=e,this.colorStack=[],this.buffer=``}append(e,t){return t&&this.pushColor(t),this.buffer+=e,t&&this.popColor(),this}appendLine(e=``){return this.append(e+`\n`)}withColorScope(e,t){this.pushColor(e),t(),this.popColor()}pushColor(e){this.colorStack.push(e),this.buffer+=I(this.colorMode,e)}popColor(){this.colorStack.pop();let e=this.colorStack[this.colorStack.length-1]??F.Reset;this.buffer+=I(this.colorMode,e)}build(){return this.buffer}},R=function(e){return e.WhiteSpace=` `,e.Quote=`\"`,e.Colon=`:`,e.LeftSquareBracket=`[`,e.RightSquareBracket=`]`,e.Dot=`.`,e.Equal=`=`,e.Asterisk=`*`,e.Plus=`+`,e.Minus=`-`,e.Tilde=`~`,e.ExclamationPoint=`!`,e.Cross=`x`,e}(R||{});const Je={Create:F.Green,Delete:F.Red,Modify:F.Magenta,Deploy:F.Blue,NoChange:F.Reset,Ignore:F.White,Unsupported:F.White},z={Create:F.Green,Delete:F.Red,Modify:F.Magenta,Array:F.Magenta,NoEffect:F.White},Ye={Create:R.Plus,Delete:R.Minus,Modify:R.Tilde,Deploy:R.ExclamationPoint,NoChange:R.Equal,Ignore:R.Asterisk,Unsupported:R.Cross},Xe={Create:R.Plus,Delete:R.Minus,Modify:R.Tilde,Array:R.Tilde,NoEffect:R.Cross},B={Delete:0,Create:1,Deploy:2,Modify:3,NoChange:4,Unsupported:5,Ignore:6},Ze={Delete:0,Create:1,Modify:2,Array:2,NoEffect:3},Qe={Array:`Modify`,Create:`Create`,Delete:`Delete`,Modify:`Modify`,NoEffect:`NoChange`};function $e(e,t){let n=new L(t);return W(n,e),n.build()}function et(e,t){let n=new L(t);return tt(n),nt(n,e.changes??[]),at(n,e.changes??[]),rt(n,e.changes??[]),n.build()}function tt(e){e.appendLine(`Note: The result may contain false positive predictions (noise).\nYou can help us improve the accuracy of the result by opening an issue here: https://aka.ms/WhatIfIssues`),e.appendLine()}function nt(e,t){if(!t.length)return;let n=new Set;function r(e){if(e.length)for(let t of e){let e=t.propertyChangeType;n.add(Qe[e]),r(t.children??[])}}for(let e of t)n.add(e.changeType),r(e.delta??[]);let i=Array.from(n).sort((e,t)=>B[e]-B[t]);e.append(`Resource and property changes are indicated with `),e.appendLine(i.length===1?`this symbol:`:`these symbols:`);for(let t of i){let n=Ye[t],r=Je[t];q(e),e.append(n,r).append(R.WhiteSpace),e.appendLine(t.charAt(0).toUpperCase()+t.slice(1))}}function rt(e,t){if(e.appendLine().append(`Resource changes: `),!t.length){e.append(`no change.`);return}let n=Q(At(t.sort((e,t)=>B[e.changeType]-B[t.changeType]),e=>e.changeType)).map(([e,t])=>({key:e,count:t.length})).filter(e=>e.count>0).map(e=>it(e.key,e.count));e.append(n.join(`, `)).append(`.`)}function it(e,t){switch(e){case`Create`:return`${t} to create`;case`Delete`:return`${t} to delete`;case`Deploy`:return`${t} to deploy`;case`Modify`:return`${t} to modify`;case`Ignore`:return`${t} to ignore`;case`NoChange`:return`${t} no change`;case`Unsupported`:return`${t} unsupported`;default:throw Error(`Invalid ChangeType: ${e}`)}}function at(e,t){if(!t.length)return;let n=new Set(t.map(U)).size,r=At(t.sort((e,t)=>U(e).localeCompare(U(t))),U);e.appendLine(),e.appendLine(`The deployment will update the following ${n===1?`scope:`:`scopes:`}`);for(let[,t]of Q(r))ot(e,bt(t[0]),t)}function ot(e,t,n){e.appendLine().appendLine(`Scope: ${t}`);let r=n.sort((e,t)=>B[e.changeType]-B[t.changeType]),i=At(r,e=>e.changeType);for(let[t,n]of Q(i))e.withColorScope(Je[t],()=>{for(let t of n)st(e,t,t===r[r.length-1])})}function st(e,t,n){let r=t.changeType,i=xt(t),a=yt(t);if(e.appendLine(),ct(e,r,i,a),r===`Create`&&t.after)W(e,t.after,void 0,void 0,2);else if(r===`Delete`&&t.before)W(e,t.before,void 0,void 0,2);else if(t.delta){let n=t.delta;e.withColorScope(F.Reset,()=>{e.appendLine(),V(e,Z(n))})}else n&&e.appendLine()}function ct(e,t,n,r){K(e,n,0,1,e=>lt(e,t),e=>ut(e,r))}function lt(e,t){let n=Ye[t];e.append(n).append(R.WhiteSpace)}function ut(e,t){t&&e.withColorScope(F.Reset,()=>{e.append(R.WhiteSpace),e.append(R.LeftSquareBracket),e.append(t),e.append(R.RightSquareBracket)})}function V(e,t,n=2){let r=St(t);for(let i of t)dt(e,i,r,n),e.appendLine()}function dt(e,t,n,r){let i=t.propertyChangeType,a=t.before,o=t.after,s=t.children||[];switch(i){case`Create`:H(e,t,t.after,n,r),mt(e,o,r+1);break;case`Delete`:H(e,t,t.before,n,r),ht(e,a,r+1);break;case`Modify`:H(e,t,t.before,n,r),_t(e,a,o,s,r+1);break;case`Array`:H(e,t,t.children,n,r),vt(e,t,s,r+1);break;case`NoEffect`:H(e,t,t.after,n,r),pt(e,o,r+1);break;default:throw Error(`Unknown property change type: ${i}.`)}}function H(e,t,n,r,i){if(!t.path)return;let a=t.path,o=t.propertyChangeType,s=r-a.length+1;Y(n)?s=1:(X(n)||o===`Modify`&&t.children)&&(s=0),K(e,a,s,i,e=>ft(e,o),Dt)}function ft(e,t){let n=Xe[t],r=z[t];e.append(n,r).append(R.WhiteSpace)}function pt(e,t,n){e.withColorScope(z.NoEffect,()=>{W(e,t,void 0,void 0,n)})}function mt(e,t,n){e.withColorScope(z.Create,()=>{W(e,t,void 0,void 0,n)})}function ht(e,t,n){e.withColorScope(z.Delete,()=>{W(e,t,void 0,void 0,n)})}function gt(e){if(typeof e!=`object`||!e||Object.keys(e).length===0)return e;let t=``,n=e,r=Object.keys(n);for(let i=0;i0?(e.appendLine().appendLine(),V(e,Z(r),i)):(ht(e,t,i),X(t)?(e.appendLine(),q(e,i)):e.append(R.WhiteSpace),e.append(`=>`),X(n)||e.append(R.WhiteSpace),mt(e,n,i),!J(t)&&J(n)&&e.appendLine())}function vt(e,t,n,r){if(t.path||(--r,q(e,r)),!n||n.length===0){e.appendLine(`[]`);return}e.append(R.LeftSquareBracket).appendLine(),V(e,Z(n),r),q(e,r),e.append(R.RightSquareBracket)}function yt(e){if(e.before)return e.before.apiVersion;if(e.after)return e.after.apiVersion}function bt(e){if(!e.resourceId)throw Error(`Extensible resource what-if is not currently supported by this Action. Please raise an issue: https://github.com/Azure/bicep-deploy/issues.`);let[t]=jt(e.resourceId);return t}function U(e){return bt(e).toUpperCase()}function xt(e){if(!e.resourceId)throw Error(`Extensible resource what-if is not currently supported by this Action. Please raise an issue: https://github.com/Azure/bicep-deploy/issues.`);let[,t]=jt(e.resourceId);return t}function St(e){if(!e||e.length===0)return 0;let t=e.filter(Ct).map(e=>e.path.length);return Math.max(...t,0)}function Ct(e){let t=e.propertyChangeType;return t===`Create`?J(e.after):t===`Delete`||t===`Modify`?J(e.before):!e.children}function W(e,t,n=``,r=0,i=0){if(t=gt(t),J(t)){let a=r-n.length+1;G(e,n,a>0?a:0,i),wt(e,t)}else if(Y(t))G(e,n,1,i),Tt(e,t,i);else if(X(t))Et(e,t,n,r,i);else throw Error(`Invalid JSON value: ${t}`)}function wt(e,t){t===null?e.append(`null`):typeof t==`boolean`?e.append(String(t).toLowerCase()):typeof t==`string`?e.append(R.Quote).append(t).append(R.Quote):Array.isArray(t)&&t.length===0?e.append(`[]`):typeof t==`object`?e.append(`{}`):e.append(String(t))}function Tt(e,t,n){e.append(R.LeftSquareBracket,F.Reset).appendLine();let r=Ot(t);t.forEach((t,i)=>{let a=String(i);X(t)?(G(e,a,0,n+1),Et(e,t,void 0,void 0,n+1)):W(e,t,a,r,n+1),e.appendLine()}),q(e,n),e.append(R.RightSquareBracket,F.Reset)}function Et(e,t,n=``,r=0,i=0){let a=!n;n||(e.appendLine().appendLine(),r=kt(t),i+=1);for(let[o,s]of Q(t))W(e,s,a?o:`${n}${R.Dot}${o}`,r,i),X(s)||e.appendLine()}function G(e,t,n,r){K(e,t,n,r,void 0,Dt)}function K(e,t,n,r,i,a){t&&(q(e,r),i&&i(e),e.append(t),a&&a(e),e.append(` `.repeat(n)))}function Dt(e){e.append(R.Colon,F.Reset)}function q(e,t=1){e.append(` `.repeat(2*t))}function Ot(e){let t=0;return e.forEach((e,n)=>{J(e)&&(t=n)}),String(t).length}function kt(e){let t=0;for(let[n,r]of Q(e)){if(Y(r))continue;let e=X(r)?n.length+1+kt(r):n.length;t=Math.max(t,e)}return t}function J(e){return e==null||typeof e==`boolean`||typeof e==`number`||typeof e==`string`||Array.isArray(e)&&e.length===0||typeof e==`object`&&e&&Object.keys(e).length===0}function Y(e){return Array.isArray(e)&&e.length>0}function X(e){return typeof e==`object`&&!!e&&Object.keys(e).length>0}function Z(e){return e.slice().sort((e,t)=>Ze[e.propertyChangeType]-Ze[t.propertyChangeType]||e.path.localeCompare(t.path))}function At(e,t){return e.reduce((e,n)=>{let r=t(n);return(e[r]=e[r]||[]).push(n),e},{})}function Q(e){return Object.entries(e)}function jt(e){let t=e.lastIndexOf(`/providers/`);if(t===-1){let t=[...e.matchAll(/^(\\/subscriptions\\/[^/]+)\\/(resourceGroups\\/[^/]+)$/gi)];return t[0]?[t[0][1],t[0][2]]:[`/`,e.substring(1)]}return[e.substring(0,t),e.substring(t+11)]}function $(e,t,n){if(n)for(let r of Object.keys(n)){let i=n[r];t.setOutput(r,i.value),e.maskedOutputs&&e.maskedOutputs.some(e=>e.toLowerCase()===r.toLowerCase())&&t.setSecret(i.value)}}async function Mt(e,t,n,r){try{switch(Fe(e,t),e.type){case`deployment`:switch(e.operation){case`create`:await N(async()=>{$(e,r,(await Le(e,t,n))?.properties?.outputs)},e=>{n.logError(JSON.stringify(e,null,2)),r.setFailed(`Create failed`)},n);break;case`validate`:await N(async()=>{M((await Re(e,t,n))?.properties?.diagnostics??[],n)},e=>{n.logError(JSON.stringify(e,null,2)),r.setFailed(`Validation failed`)},n);break;case`whatIf`:{let r=await ze(e,t,n),i=et(r,`ansii`);n.logInfoRaw(i),M(r.diagnostics??[],n);break}}break;case`deploymentStack`:switch(e.operation){case`create`:await N(async()=>{$(e,r,(await Be(e,t,n))?.properties?.outputs)},e=>{n.logError(JSON.stringify(e,null,2)),r.setFailed(`Create failed`)},n);break;case`validate`:await N(()=>Ve(e,t,n),e=>{n.logError(JSON.stringify(e,null,2)),r.setFailed(`Validation failed`)},n);break;case`delete`:await He(e,n);break}break}}catch(e){if(Pe(e)&&e.response?.bodyAsText){let t=e.response.headers.get(`x-ms-correlation-request-id`);n.logError(`Request failed. CorrelationId: ${t}`);let r=JSON.parse(e.response.bodyAsText);n.logError(JSON.stringify(r,null,2))}throw r.setFailed(`Operation failed`),e}}exports.Color=F,exports.ColorStringBuilder=L,exports.CustomPollingError=A,exports.colorize=Ke,exports.defaultName=E,exports.deploymentCreate=Le,exports.deploymentValidate=Re,exports.deploymentWhatIf=ze,exports.execute=Mt,exports.formatJson=$e,exports.formatWhatIfOperationResult=et,exports.getColorString=I,exports.getCreateOperationOptions=k,exports.getDeploymentClient=D,exports.getJsonParameters=oe,exports.getOptionalBooleanInput=b,exports.getOptionalDictionaryInput=S,exports.getOptionalEnumArrayInput=de,exports.getOptionalEnumInput=v,exports.getOptionalFilePath=y,exports.getOptionalStringArrayInput=x,exports.getOptionalStringDictionaryInput=fe,exports.getOptionalStringInput=g,exports.getRequiredEnumInput=_,exports.getRequiredStringInput=h,exports.getStacksClient=O,exports.getTemplateAndParameters=se,exports.logDiagnostics=M,exports.parse=m,exports.parseConfig=ge,exports.removeColors=qe,exports.requireLocation=j,exports.resolvePath=le,exports.setOutputs=$,exports.stackCreate=Be,exports.stackDelete=He,exports.stackValidate=Ve,exports.tryWithErrorHandling=N,exports.validateFileScope=Fe;\n//# sourceMappingURL=index.cjs.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport * as core from \"@actions/core\";\n\nimport {\n InputReader,\n OutputSetter,\n InputParameterNames,\n} from \"@azure/bicep-deploy-common\";\n\nexport class ActionInputReader implements InputReader {\n getInput = (inputName: string) => core.getInput(inputName);\n}\n\nexport class ActionOutputSetter implements OutputSetter {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n setOutput = (name: string, value: any) => core.setOutput(name, value);\n setFailed = (message: string) => core.setFailed(message);\n setSecret = (secret: string) => core.setSecret(secret);\n}\n\nexport class ActionInputParameterNames implements InputParameterNames {\n type = \"type\";\n name = \"name\";\n location = \"location\";\n templateFile = \"template-file\";\n paramtersFile = \"parameters-file\";\n parameters = \"parameters\";\n bicepVersion = \"bicep-version\";\n description = \"description\";\n tags = \"tags\";\n maskedOutputs = \"masked-outputs\";\n environment = \"environment\";\n operation = \"operation\";\n whatIfExcludeChangeTypes = \"what-if-exclude-change-types\";\n validationLevel = \"validation-level\";\n actionOnUnmanageResources = \"action-on-unmanage-resources\";\n actionOnUnmanageResourceGroups = \"action-on-unmanage-resourcegroups\";\n actionOnUnmanageManagementGroups = \"action-on-unmanage-managementgroups\";\n bypasStackOutOfSyncError = \"bypass-stack-out-of-sync-error\";\n denySettingsMode = \"deny-settings-mode\";\n denySettingsExcludedActions = \"deny-settings-excluded-actions\";\n denySettingsExcludedPrincipals = \"deny-settings-excluded-principals\";\n denySettingsApplyToChildScopes = \"deny-settings-apply-to-child-scopes\";\n scope = \"scope\";\n tenantId = \"tenant-id\";\n managementGroupId = \"management-group-id\";\n subscriptionId = \"subscription-id\";\n resourceGroupName = \"resource-group-name\";\n}\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport * as core from \"@actions/core\";\n\nimport { Color, colorize, Logger } from \"@azure/bicep-deploy-common\";\n\nconst logWarningRaw = (message: string) => core.warning(message);\nconst logErrorRaw = (message: string) => core.error(message);\n\nexport class ActionLogger implements Logger {\n isDebugEnabled = () => core.isDebug();\n debug = (message: string) => core.debug(message);\n logInfoRaw = (message: string) => core.info(message);\n logInfo = (message: string) => this.logInfoRaw(colorize(message, Color.Blue));\n logWarning = (message: string) =>\n logWarningRaw(colorize(message, Color.Yellow));\n logError = (message: string) => logErrorRaw(colorize(message, Color.Red));\n}\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport * as core from \"@actions/core\";\n\nimport {\n getTemplateAndParameters,\n parseConfig,\n execute,\n} from \"@azure/bicep-deploy-common\";\n\nimport {\n ActionInputReader,\n ActionOutputSetter,\n ActionInputParameterNames,\n} from \"./actionIO\";\n\nimport { ActionLogger } from \"./logging\";\n\n/**\n * The main function for the action.\n * @returns {Promise} Resolves when the action is complete.\n */\nexport async function run(): Promise {\n try {\n const inputReader = new ActionInputReader();\n const inputParameterNames = new ActionInputParameterNames();\n const config = parseConfig(inputReader, inputParameterNames);\n const logger = new ActionLogger();\n const outputSetter = new ActionOutputSetter();\n logger.logInfo(`Action config: ${JSON.stringify(config, null, 2)}`);\n\n const files = await getTemplateAndParameters(config, logger);\n\n await execute(config, files, logger, outputSetter);\n } catch (error) {\n // Fail the workflow run if an error occurs\n const message = error instanceof Error ? error.message : `${error}`;\n core.setFailed(message);\n }\n}\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport { run } from \"./main\";\n\nrun();\n"],"x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,297,298,299,300,301,302,303,304,305,306,307,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,327,328,329,330,331,332,333,334,335,336,337,338,339,340,341,342,343,344,345,346,347,348,349,350,351,352,353,354,355,356,357,358,359,360,361,362,363,364,365,366,367,368,369,370,371,372,373,374,375,376,377,378,379,380,381,382,383,384,385,386,387,388,389,390,391,392,393,394,395,396,397,398,399,400,401,402,403,404,405,406,407,408,409,410,411,412,413,414,415,416,417,418,419,420,421,422,423,424,425,426,427,428,429,430,431,432,433,434,435,436,437,438,439,440,441,442,443,444,445,446,447,448,449,450,451,452,453,454,455,456,457,458,459,460,461,462,463,464,465,466,467,468,469,470,471,472,473,474,475,476,477,478,479,480,481,482,483,484,485,486,487,488,489,490,491,492,493,494,495,496,497,498,499,500,501,502,503,504,505,506,507,508,509,510,511,512,513,514,515,516,517,518,519,520,521,522,523,524,525,526,527,528,529,530,531,532,533,534,535,536,537,538],"mappings":"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,KAAQ,MAAO,IAAQ,MAAO,IACnE,MAAO,IAAQ,MAAO,IAAQ,MAAO,IAAQ,MAAO,IAAQ,MAAO,IACnE,MAAO,IAAQ,MAAO,IAAQ,MAAO,IAAQ,MAAO,IAAQ,MAAO,IACnE,MAAO,IAAQ,MAAO,IAAQ,MAAO,IAAQ,MAAO,IAAQ,MAAO,OACnE,MAAO,OAAQ,MAAO,IAAQ,MAAO,IAAQ,MAAO,IAAQ,MAAO,IACnE,MAAO,IAAQ,MAAO,IAAQ,MAAO,IAAQ,MAAO,IAAQ,MAAO,IACnE,MAAO,IAAQ,MAAO,IAAQ,MAAO,IAAQ,MAAO,IAAQ,MAAO,IACnE,MAAO,IAAQ,MAAO,IAAQ,MAAO,IAAQ,MAAO,IAAQ,MAAO,IACnE,MAAO,IAAQ,MAAO,IAAQ,MAAO,IAAQ,MAAO,IAAQ,MAAO,IACnE,MAAO,IAAQ,MAAO,IAAQ,MAAO,IAAQ,MAAO,IAAQ,MAAO,IACnE,MAAO,IAAQ,MAAO,IAAQ,MAAO,IAAQ,MAAO,IAAQ,MAAO,IACnE,MAAO,IAAQ,MAAO,IAAQ,MAAO,IAAQ,MAAO,IAAQ,MAAO,IACnE,MAAO,IAAQ,MAAO,IAAQ,MAAO,IAAQ,MAAO,IAAQ,MAAO,IACnE,MAAO,IAAQ,MAAO,IAAQ,MAAO,IAAQ,MAAO,IAAQ,MAAO,IACnE,MAAO,IAAQ,MAAO,IAAQ,MAAO,IAAQ,MAAO,IAAQ,MAAO,IACnE,MAAO,IAAQ,MAAO,IAAQ,MAAO,IAAQ,MAAO,IAAQ,MAAO,IACnE,MAAO,IAAQ,MAAO,IAAQ,MAAO,IAAQ,MAAO,IAAQ,MAAO,IACnE,MAAO,IAAQ,MAAO,IAAQ,MAAO,IAAQ,MAAO,IAAQ,MAAO,IACnE,MAAO,IAAQ,MAAO,IAAQ,MAAO,IAAQ,MAAO,IAAQ,MAAO,IACnE,MAAO,IAAQ,MAAO,IAAQ,MAAO,IAAQ,MAAO,IAAQ,MAAO,IACnE,MAAO,IAAQ,MAAO,IAAQ,MAAO,IAAQ,MAAO,IAAQ,MAAO,IACnE,MAAO,IAAQ,MAAO,IAAQ,MAAO,IAAQ,MAAO,IAAQ,MAAO,KACnE,MAAO,KAAQ,MAAO,IAAQ,MAAO,IAAQ,MAAO,IAAQ,MAAO,IACnE,MAAO,IAAQ,MAAO,IAAQ,MAAO,IAAQ,MAAO,IAAQ,MAAO,IACnE,MAAO,IAAQ,MAAO,IAAQ,MAAO,IAAQ,MAAO,IAAQ,MAAO,IACnE,MAAO,IAAQ,MAAO,IAAQ,MAAO,IAAQ,MAAO,IAAQ,MAAO,IACnE,MAAO,IAAQ,MAAO,IAAQ,MAAO,IAAQ,MAAO,IAAQ,MAAO,IACnE,MAAO,IAAQ,MAAO,IAAQ,MAAO,IAAQ,MAAO,IAAQ,MAAO,IACnE,MAAO,IAAQ,MAAO,IAAQ,MAAO,IAAQ,MAAO,IAAQ,MAAO,IACnE,MAAO,IAAQ,MAAO,IAAQ,MAAO,IAAQ,MAAO,IAAQ,MAAO,IACnE,MAAO,IAAQ,MAAO,IAAQ,MAAO,IAAQ,MAAO,IAAQ,MAAO,IACnE,MAAO,IAAQ,MAAO,IAAQ,MAAO,IAAQ,MAAO,IAAQ,MAAO,IACnE,MAAO,IAAQ,MAAO,IAAQ,MAAO,IAAQ,MAAO,IAAQ,MAAO,IACnE,MAAO,IAAQ,MAAO,IAAQ,MAAO,IAAQ,MAAO,IAAQ,MAAO,IACnE,MAAO,IAAQ,MAAO,IAAQ,MAAO,IAAQ,MAAO,IAAQ,MAAO,IACnE,MAAO,IAAQ,MAAO,IAAQ,MAAO,IAAQ,MAAO,IAAQ,MAAO,IACnE,MAAO,IAAQ,MAAO,IAAQ,MAAO,IAAQ,MAAO,IAAQ,MAAO,IACnE,MAAO,IAAQ,MAAO,IAAQ,MAAO,IAAQ,MAAO,IAAQ,MAAO,IACnE,MAAO,IAAQ,MAAO,IAAQ,MAAO,IAAQ,MAAO,IAAQ,MAAO,IACnE,MAAO,IAAQ,MAAO,IAAQ,MAAO,IAAQ,MAAO,IAAQ,MAAO,IACnE,MAAO,IAAQ,MAAO,IAAQ,MAAO,IAAQ,MAAO,IAAQ,MAAO,IACnE,MAAO,OAAQ,MAAO,OAAQ,MAAO,IAAQ,MAAO,IAAQ,MAAO,IACnE,MAAO,IAAQ,MAAO,IAAQ,MAAO,IAAQ,MAAO,IAAQ,MAAO,IACnE,MAAO,IAAQ,MAAO,IAAQ,MAAO,IAAQ,MAAO,IAAQ,MAAO,IACnE,MAAO,IAAQ,MAAO,IAAQ,MAAO,IAAQ,MAAO,IAAQ,MAAO,IACnE,MAAO,IAAQ,MAAO,IAAQ,MAAO,IAAQ,MAAO,IAAQ,MAAO,IACnE,MAAO,IAAQ,MAAO,IAAQ,MAAO,IAAQ,MAAO,IAAQ,MAAO,IACnE,MAAO,IAAQ,MAAO,IAAQ,MAAO,IAAQ,MAAO,IAAQ,MAAO,IACnE,MAAO,IAAQ,MAAO,IAAQ,MAAO,IAAQ,MAAO,IAAQ,MAAO,IACnE,MAAO,IAAQ,MAAO,IAAQ,MAAO,IAAQ,MAAO,IAAQ,MAAO,IACnE,MAAO,IAAQ,MAAO,IAAQ,MAAO,IAAQ,MAAO,IAAQ,MAAO,IACnE,MAAO,IAAQ,MAAO,IAAQ,MAAO,IAAQ,MAAO,IAAQ,MAAO,IACnE,MAAO,IAAQ,MAAO,IAAQ,MAAO,IAAQ,MAAO,IAAQ,MAAO,IACnE,MAAO,IAAQ,MAAO,IAAQ,MAAO,IAAQ,MAAO,IAAQ,MAAO,IACnE,MAAO,IAAQ,MAAO,IAAQ,MAAO,IAAQ,MAAO,IAAQ,MAAO,IACnE,MAAO,IAAQ,MAAO,IAAQ,MAAO,IAAQ,MAAO,IAAQ,MAAO,IACnE,MAAO,IAAQ,MAAO,IAAQ,MAAO,IAAQ,MAAO,IAAQ,MAAO,IACnE,MAAO,IAAQ,MAAO,IAAQ,MAAO,IAAQ,MAAO,IAAQ,MAAO,IACnE,MAAO,IAAQ,MAAO,IAAQ,MAAO,IAAQ,MAAO,IAAQ,MAAO,IACnE,MAAO,IAAQ,MAAO,IAAQ,MAAO,IAAQ,MAAO,IAAQ,MAAO,IACnE,MAAO,IAAQ,MAAO,IAAQ,MAAO,IAAQ,MAAO,IAAQ,MAAO,IACnE,MAAO,IAAQ,MAAO,IAAQ,MAAO,IAAQ,MAAO,IAAQ,MAAO,IACnE,MAAO,IAAQ,MAAO,IAAQ,MAAO,IAAQ,MAAO,IAAQ,MAAO,IACnE,MAAO,IAAQ,MAAO,IAAQ,MAAO,IAAQ,MAAO,IAAQ,MAAO,IACnE,MAAO,IAAQ,MAAO,IAAQ,MAAO,IAAQ,MAAO,IAAQ,MAAO,IACnE,MAAO,IAAQ,MAAO,IAAQ,MAAO,IAAQ,MAAO,IAAQ,MAAO,IACnE,MAAO,IAAQ,MAAO,IAAQ,MAAO,IAAQ,MAAO,IAAQ,MAAO,IACnE,MAAO,IAAQ,MAAO,IAAQ,MAAO,IAAQ,MAAO,IAAQ,MAAO,IACnE,MAAO,IAAQ,MAAO,IAAQ,MAAO,IAAQ,MAAO,IAAQ,MAAO,IACnE,MAAO,IAAQ,MAAO,IAAQ,MAAO,IAAQ,MAAO,IAAQ,MAAO,IACnE,MAAO,IAAQ,MAAO,IAAQ,MAAO,IAAQ,MAAO,IAAQ,MAAO,IACnE,MAA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cACL,IAAK,aACL,IAAK,aACL,IAAK,YACL,IAAK,WACL,IAAK,aACL,IAAK,kBACL,IAAK,KACL,IAAK,SACH,MAAO,aACT,IAAK,cACL,IAAK,aACL,IAAK,aACL,IAAK,YACL,IAAK,WACL,IAAK,aACL,IAAK,kBACL,IAAK,KACL,IAAK,SACH,MAAO,aACT,IAAK,cACL,IAAK,aACL,IAAK,aACL,IAAK,YACL,IAAK,WACL,IAAK,aACL,IAAK,kBACL,IAAK,KACL,IAAK,SACH,MAAO,aACT,IAAK,qBACL,IAAK,WACL,IAAK,aACL,IAAK,aACL,IAAK,YACL,IAAK,WACL,IAAK,aACL,IAAK,kBACH,MAAO,aACT,IAAK,SACL,IAAK,WACL,IAAK,cACL,IAAK,cACL,IAAK,mBACL,IAAK,WACL,IAAK,aACL,IAAK,eACL,IAAK,eACL,IAAK,aACL,IAAK,YACL,IAAK,WACL,IAAK,aACL,IAAK,kBACH,MAAO,aACT,IAAK,kBACL,IAAK,WACL,IAAK,WACL,IAAK,QACL,IAAK,SACL,IAAK,aACL,IAAK,aACL,IAAK,YACL,IAAK,WACL,IAAK,aACL,IAAK,kBACL,IAAK,eACH,MAAO,aACT,IAAK,cACL,IAAK,mBACL,IAAK,SACL,IAAK,aACL,IAAK,eACL,IAAK,aACL,IAAK,YACL,IAAK,WACL,IAAK,aACL,IAAK,kBACL,IAAK,SACH,MAAO,aACT,IAAK,cACL,IAAK,eACL,IAAK,UACH,MAAO,eACT,IAAK,cACL,IAAK,cACL,IAAK,aACL,IAAK,aACL,IAAK,YACL,IAAK,KACL,IAAK,SACH,MAAO,cACT,IAAK,cACL,IAAK,aACL,IAAK,YACH,MAAO,cACT,IAAK,cACL,IAAK,aACL,IAAK,YACH,MAAO,cACT,IAAK,cACL,IAAK,cACL,IAAK,aACL,IAAK,YACL,IAAK,cACL,IAAK,KACH,MAAO,cACT,IAAK,cACH,MAAO,cACT,IAAK,UACL,IAAK,MACL,IAAK,OACL,IAAK,SACL,IAAK,SACH,MAAO,SACT,IAAK,UACL,IAAK,SACH,MAAO,SACT,IAAK,cACL,IAAK,MACL,IAAK,YACL,IAAK,cACH,MAAO,YACT,IAAK,cACL,IAAK,aACL,IAAK,YACL,IAAK,UACL,IAAK,cACH,MAAO,cACT,IAAK,SACL,IAAK,eACL,IAAK,WACH,MAAO,eACT,IAAK,SACL,IAAK,eACL,IAAK,WACH,MAAO,eACT,IAAK,iBACL,IAAK,QACL,IAAK,SACL,IAAK,QACL,IAAK,cACL,IAAK,SACL,IAAK,aACL,IAAK,aACL,IAAK,YACL,IAAK,WACL,IAAK,aACL,IAAK,kBACL,IAAK,KACL,IAAK,SACL,IAAK,WACL,IAAK,eACL,IAAK,WACH,MAAO,eACT,IAAK,SACL,IAAK,eACL,IAAK,WACH,MAAO,eACT,IAAK,SACL,IAAK,cACL,IAAK,aACL,IAAK,aACL,IAAK,YACL,IAAK,WACL,IAAK,aACL,IAAK,kBACL,IAAK,KACL,IAAK,SACL,IAAK,eACL,IAAK,WACH,MAAO,eACT,IAAK,SACL,IAAK,eACL,IAAK,WACH,MAAO,eACT,IAAK,SACL,IAAK,eACL,IAAK,WACH,MAAO,eACT,IAAK,SACL,IAAK,eACL,IAAK,WACH,MAAO,eACT,IAAK,SACL,IAAK,eACL,IAAK,WACH,MAAO,eACT,IAAK,iBACL,IAAK,kBACH,MAAO,iBACT,IAAK,UACL,IAAK,WACL,IAAK,kBACL,IAAK,SACL,IAAK,UACL,IAAK,aACL,IAAK,MACL,IAAK,YACL,IAAK,QACH,MAAO,MACT,IAAK,UACH,MAAO,UACT,IAAK,OACL,IAAK,aACL,IAAK,UACL,IAAK,SACL,IAAK,WACH,MAAO,OACT,IAAK,sBACL,IAAK,SACL,IAAK,WACH,MAAO,SACT,IAAK,cACL,IAAK,cACH,MAAO,cACT,IAAK,aACL,IAAK,QACL,IAAK,WACL,IAAK,YACL,IAAK,YACL,IAAK,OACL,IAAK,cACL,IAAK,SACH,MAAO,YACT,IAAK,UACL,IAAK,gBACL,IAAK,SACL,IAAK,aACL,IAAK,SACL,IAAK,iBACL,IAAK,iBACL,IAAK,UACL,IAAK,WACL,IAAK,cACH,MAAO,SACT,IAAK,cACL,IAAK,aACL,IAAK,cACL,IAA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,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,yBAAyB,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,YAAY,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,yBAAyB,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,yBAAyB,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,yBAAyB,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,yBAAyB,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,yBAAyB,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,yBAAyB,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,yBAAyB,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,yBAAyB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,yBAAyB,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,yBAAyB,CAAC,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAK,IAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,IAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,yBAAyB,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,yBAAyB,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,yBAAyB,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,yBAAyB,CAAC,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,yBAAyB,CAAC,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,yBAAyB,CAAC,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,yBAAyB,CAAC,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,yBAAyB,CAAC,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,yBAAyB,CAAC,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,yBAAyB,CAAC,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,yBAAyB,CAAC,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,yBAAyB,CAAC,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,yBAAyB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,yBAAyB,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,yBAAyB,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CA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,KAAK,CAAC,yBAAyB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,yBAAyB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,yBAAyB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,yBAAyB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,yBAAyB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,yBAAyB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,yBAAyB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,yBAAyB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,yBAAyB,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,yBAAyB,CAAC,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,yBAAyB,CAAC,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,yBAAyB,CAAC,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,GAAG,KAAK,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,IAAI,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,IAAI,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,wBAAwB,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,wBAAwB,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,IAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,yBAAyB,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,yBAAyB,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,yBAAyB,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,yBAAyB,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,yBAAyB,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,yBAAyB,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,yBAAyB,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,yBAAyB,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,yBAAyB,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,yBAAyB,CAAC,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,yBAAyB,CAAC,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,yBAAyB,CAAC,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,yBAAyB,CAAC,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,yBAAyB,CAAC,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,yBAAyB,CAAC,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,yBAAyB,CAAC,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,yBAAyB,CAAC,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,yBAAyB,CAAC,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,yBAAyB,CAAC,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,yBAAyB,CAAC,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,yBAAyB,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,yBAAyB,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,yBAAyB,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,yBAAyB,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,yBAAyB,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,yBAAyB,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,yBAAyB,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,yBAAyB,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,yBAAyB,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,yBAAyB,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,yBAAyB,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,yBAAyB,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,yBAAyB,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,yBAAyB,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,yBAAyB,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,yBAAyB,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,yBAAyB,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,yBAAyB,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,yBAAyB,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,yBAAyB,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,yBAAyB,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,yBAAyB,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,yBAAyB,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,yBAAyB,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,yBAAyB,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,yBAAyB,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,yBAAyB,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,yBAAyB,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,yBAAyB,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,yBAAyB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,yBAAyB,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,yBAAyB,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,yBAAyB,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,yBAAyB,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,yBAAyB,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,yBAAyB,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,yBAAyB,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,yBAAyB,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,yBAAyB,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,yBAAyB,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,yBAAyB,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,yBAAyB,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,yBAAyB,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,yBAAyB,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,yBAAyB,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,yBAAyB,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,yBAAyB,CAAC,GAAG,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,yBAAyB,CAAC,GAAG,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,yBAAyB,CAAC,GAAG,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,yBAAyB,CAAC,GAAG,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,yBAAyB,CAAC,GAAG,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,yBAAyB,CAAC,GAAG,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,yBAAyB,CAAC,GAAG,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,yBAAyB,CAAC,GAAG,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,yBAAyB,CAAC,GAAG,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,yBAAyB,CAAC,GAAG,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,yBAAyB,CAAC,GAAG,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,yBAAyB,CAAC,GAAG,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,yBAAyB,CAAC,GAAG,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,yBAAyB,CAAC,GAAG,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,yBAAyB,CAAC,GAAG,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,yBAAyB,CAAC,GAAG,MAAM,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,yBAAyB,CAAC,GAAG,MAAM,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,yBAAyB,CAAC,GAAG,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,yBAAyB,CAAC,GAAG,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,yBAAyB,CAAC,GAAG,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,yBAAyB,CAAC,GAAG,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,yBAAyB,CAAC,GAAG,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,yBAAyB,CAAC,GAAG,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,yBAAyB,CAAC,GAAG,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,yBAAyB,CAAC,GAAG,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,yBAAyB,CAAC,GAAG,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,yBAAyB,CAAC,GAAG,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,yBAAyB,CAAC,GAAG,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,yBAAyB,CAAC,GAAG,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,yBAAyB,CAAC,GAAG,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,yBAAyB,CAAC,GAAG,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,yBAAyB,CAAC,GAAG,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,yBAAyB,CAAC,GAAG,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,yBAAyB,CAAC,GAAG,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,yBAAyB,CAAC,GAAG,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,yBAAyB,CAAC,GAAG,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,yBAAyB,CAAC,GAAG,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,yBAAyB,CAAC,GAAG,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,yBAAyB,CAAC,GAAG,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,yBAAyB,CAAC,GAAG,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,yBAAyB,CAAC,GAAG,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,yBAAyB,CAAC,GAAG,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,yBAAyB,CAAC,GAAG,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,yBAAyB,CAAC,GAAG,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,yBAAyB,CAAC,GAAG,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,yBAAyB,CAAC,GAAG,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,yBAAyB,CAAC,GAAG,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,yBAAyB,CAAC,GAAG,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,yBAAyB,CAAC,GAAG,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,yBAAyB,CAAC,GAAG,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,yBAAyB,CAAC,GAAG,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,yBAAyB,CAAC,GAAG,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,yBAAyB,CAAC,GAAG,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,KAAM,KAAM,CAAC,SAAS,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,MAAM,MAAM,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,MAAM,MAAM,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,MAAM,MAAM,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,MAAM,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,MAAM,MAAM,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,MAAM,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,MAAM,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,MAAM,MAAM,MAAM,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,MAAM,MAAM,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,MAAM,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,MAAM,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,MAAM,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,MAAM,MAAM,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,MAAM,MAAM,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,MAAM,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,MAAM,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,MAAM,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,MAAM,MAAM,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,MAAM,MAAM,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,MAAM,MAAM,MAAM,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,MAAM,MAAM,MAAM,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,MAAM,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,MAAM,MAAM,MAAM,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,MAAM,MAAM,MAAM,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,MAAM,MAAM,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,MAAM,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,MAAM,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,MAAM,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,MAAM,MAAM,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,MAAM,MAAM,MAAM,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,MAAM,MAAM,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,MAAM,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,MAAM,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,MAAM,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,MAAM,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,MAAM,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,MAAM,MAAM,MAAM,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,MAAM,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,MAAM,MAAM,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,MAAM,MAAM,MAAM,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,MAAM,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,MAAM,MAAM,MAAM,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,MAAM,MAAM,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,MAAM,MAAM,MAAM,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,MAAM,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,MAAM,MAAM,MAAM,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,MAAM,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,MAAM,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,MAAM,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,MAAM,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,MAAM,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,MAAM,MAAM,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,MAAM,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,MAAM,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,MAAM,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,MAAM,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,MAAM,MAAM,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,MAAM,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,MAAM,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,MAAM,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,MAAM,MAAM,MAAM,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,MAAM,MAAM,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,MAAM,MAAM,MAAM,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,MAAM,MAAM,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,MAAM,MAAM,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,MAAM,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,MAAM,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,MAAM,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,MAAM,MAAM,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,MAAM,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,MAAM,MAAM,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,MAAM,MAAM,MAAM,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,MAAM,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,MAAM,MAAM,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,KAAK,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,GAAG,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,GAAG,IAAI,KAAK,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,GAAG,KAAK,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,GAAG,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAM,KAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAM,KAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,yBAAyB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,yBAAyB,CAAC,GAAG,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,yBAAyB,CAAC,GAAG,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,yBAAyB,CAAC,GAAG,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,yBAAyB,CAAC,GAAG,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,yBAAyB,CAAC,GAAG,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,yBAAyB,CAAC,GAAG,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,KAAK,KAAK,CAAC,CAAC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,CAAC,MAAM,MAAM,CAAC,yBAAyB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,yBAAyB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,yBAAyB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,yBAAyB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,yBAAyB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,yBAAyB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,yBAAyB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,yBAAyB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,yBAAyB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,yBAAyB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,yBAAyB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,yBAAyB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,yBAAyB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,yBAAyB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,yBAAyB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,yBAAyB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,yBAAyB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,yBAAyB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,yBAAyB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,yBAAyB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,yBAAyB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,yBAAyB,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,yBAAyB,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,yBAAyB,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,yBAAyB,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,yBAAyB,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,yBAAyB,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,yBAAyB,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,yBAAyB,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,yBAAyB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,yBAAyB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,yBAAyB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,yBAAyB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,yBAAyB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,yBAAyB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,yBAAyB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,yBAAyB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,yBAAyB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,yBAAyB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,yBAAyB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,yBAAyB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,yBAAyB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,yBAAyB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,yBAAyB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,yBAAyB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,yBAAyB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,yBAAyB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,yBAAyB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,yBAAyB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,yBAAyB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,yBAAyB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,yBAAyB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,yBAAyB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,yBAAyB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,yBAAyB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,yBAAyB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,yBAAyB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,yBAAyB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,yBAAyB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,yBAAyB,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,KAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,OAAO,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,OAAO,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,OAAO,OAAO,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,OAAO,OAAO,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,OAAO,OAAO,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,OAAO,OAAO,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,OAAO,OAAO,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,OAAO,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,OAAO,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,OAAO,OAAO,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,OAAO,OAAO,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,OAAO,OAAO,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,OAAO,OAAO,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAO,KAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,yBAAyB,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,yBAAyB,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,yBAAyB,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,yBAAyB,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,yBAAyB,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,yBAAyB,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,yBAAyB,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,yBAAyB,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,yBAAyB,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,yBAAyB,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,yBAAyB,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,yBAAyB,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,yBAAyB,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,yBAAyB,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,yBAAyB,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,yBAAyB,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,yBAAyB,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,yBAAyB,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,yBAAyB,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,yBAAyB,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,yBAAyB,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,yBAAyB,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,yBAAyB,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,yBAAyB,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,yBAAyB,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,yBAAyB,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,yBAAyB,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,yBAAyB,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,yBAAyB,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,yBAAyB,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,yBAAyB,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,yBAAyB,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,yBAAyB,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,yBAAyB,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,yBAAyB,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,yBAAyB,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,MAAM,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,MAAM,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,MAAM,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,MAAM,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,MAAM,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,MAAM,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,MAAM,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,MAAM,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,MAAM,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAO,OAAO,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,KAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAO,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,KAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAO,MAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,MAAO,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,QA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AAY,EACf,CACD,QAAS,CACL,WAAY,EACf,CACJ,CACD,gBAAiB,CAAC,EAAW,CAC7B,cAAe,CACX,EACA,EACA,EACA,GACH,CACD,iBAAkB,CAAC,EAAO,CAC1B,aACH,CACK,GAAqC,CACvC,KAAM,0IACN,WAAY,SACZ,UAAW,CACP,IAAK,EAAE,CACP,IAAK,EAAE,CACP,IAAK,EAAE,CACP,IAAK,EAAE,CACP,QAAS,CACL,WAAY,EACf,CACJ,CACD,gBAAiB,CACb,EACA,EACA,GACA,GACA,EACH,CACD,cAAe,CACX,EACA,EACA,EACA,GACH,CACD,iBAAkB,CAAC,EAAO,CAC1B,aACH,CACK,GAA4C,CAC9C,KAAM,uGACN,WAAY,MACZ,UAAW,CACP,IAAK,CACD,WAAY,EACf,CACD,IAAK,CACD,WAAY,EACf,CACD,IAAK,CACD,WAAY,EACf,CACD,IAAK,CACD,WAAY,EACf,CACD,QAAS,CACL,WAAY,EACf,CACJ,CACD,YAAa,EACb,gBAAiB,CAAC,EAAW,CAC7B,cAAe,CACX,EACA,EACA,GACH,CACD,iBAAkB,CAAC,EAAQ,EAAY,CACvC,UAAW,OACX,aACH,CACK,GAAiC,CACnC,KAAM,uGACN,WAAY,MACZ,UAAW,CACP,IAAK,CACD,WAAY,EACf,CACD,QAAS,CACL,WAAY,EACf,CACJ,CACD,gBAAiB,CAAC,EAAW,CAC7B,cAAe,CACX,EACA,EACA,GACH,CACD,iBAAkB,CAAC,EAAO,CAC1B,aACH,CACK,GAAoC,CACtC,KAAM,uGACN,WAAY,SACZ,UAAW,CACP,IAAK,EAAE,CACP,IAAK,EAAE,CACP,IAAK,EAAE,CACP,IAAK,EAAE,CACP,QAAS,CACL,WAAY,EACf,CACJ,CACD,gBAAiB,CACb,EACA,EACA,GACA,GACA,EACH,CACD,cAAe,CACX,EACA,EACA,GACH,CACD,iBAAkB,CAAC,EAAO,CAC1B,aACH,CACK,GAA+C,CACjD,KAAM,4IACN,WAAY,MACZ,UAAW,CACP,IAAK,CACD,WAAY,EACf,CACD,IAAK,CACD,WAAY,EACf,CACD,IAAK,CACD,WAAY,EACf,CACD,IAAK,CACD,WAAY,EACf,CACD,QAAS,CACL,WAAY,EACf,CACJ,CACD,YAAa,EACb,gBAAiB,CAAC,EAAW,CAC7B,cAAe,CACX,EACA,EACA,GACH,CACD,iBAAkB,CAAC,EAAQ,EAAY,CACvC,UAAW,OACX,aACH,CACK,GAAoC,CACtC,KAAM,4IACN,WAAY,MACZ,UAAW,CACP,IAAK,CACD,WAAY,EACf,CACD,QAAS,CACL,WAAY,EACf,CACJ,CACD,gBAAiB,CAAC,EAAW,CAC7B,cAAe,CACX,EACA,EACA,GACH,CACD,iBAAkB,CAAC,EAAO,CAC1B,aACH,CACK,GAAuC,CACzC,KAAM,4IACN,WAAY,SACZ,UAAW,CACP,IAAK,EAAE,CACP,IAAK,EAAE,CACP,IAAK,EAAE,CACP,IAAK,EAAE,CACP,QAAS,CACL,WAAY,EACf,CACJ,CACD,gBAAiB,CACb,EACA,EACA,GACA,GACA,EACH,CACD,cAAe,CACX,EACA,EACA,GACH,CACD,iBAAkB,CAAC,EAAO,CAC1B,aACH,CACK,GAA6C,CAC/C,KAAM,yJACN,WAAY,OACZ,UAAW,CACP,IAAK,CACD,WAAY,EACf,CACD,QAAS,CACL,WAAY,EACf,CACJ,CACD,gBAAiB,CAAC,EAAW,CAC7B,cAAe,CACX,EACA,EACA,EACA,GACH,CACD,iBAAkB,CAAC,EAAO,CAC1B,aACH,CACK,GAA4C,CAC9C,KAAM,sHACN,WAAY,OACZ,UAAW,CACP,IAAK,CACD,WAAY,EACf,CACD,QAAS,CACL,WAAY,EACf,CACJ,CACD,gBAAiB,CAAC,EAAW,CAC7B,cAAe,CACX,EACA,EACA,GACH,CACD,iBAAkB,CAAC,EAAO,CAC1B,aACH,CACK,GAA+C,CACjD,KAAM,2JACN,WAAY,OACZ,UAAW,CACP,IAAK,CACD,WAAY,EACf,CACD,QAAS,CACL,WAAY,EACf,CACJ,CACD,gBAAiB,CAAC,EAAW,CAC7B,cAAe,CACX,EACA,EACA,GACH,CACD,iBAAkB,CAAC,EAAO,CAC1B,aACH,CACK,GAA4C,CAC9C,KAAM,mJACN,WAAY,OACZ,UAAW,CACP,IAAK,CACD,WAAY,EACf,CACD,IAAK,CACD,WAAY,EACf,CACD,IAAK,CACD,WAAY,EACf,CACD,IAAK,CACD,WAAY,EACf,CACD,QAAS,CACL,WAAY,EACf,CACJ,CACD,YAAa,EACb,gBAAiB,CAAC,EAAW,CAC7B,cAAe,CACX,EACA,EACA,EACA,GACH,CACD,iBAAkB,CAAC,EAAQ,EAAY,CACvC,UAAW,OACX,aACH,CACK,GAA2C,CAC7C,KAAM,gHACN,WAAY,OACZ,UAAW,CACP,IAAK,CACD,WAAY,EACf,CACD,IAAK,CACD,WAAY,EACf,CACD,IAAK,CACD,WAAY,EACf,CACD,IAAK,CACD,WAAY,EACf,CACD,QAAS,CACL,WAAY,EACf,CACJ,CACD,YAAa,EACb,gBAAiB,CAAC,EAAW,CAC7B,cAAe,CACX,EACA,EACA,GACH,CACD,iBAAkB,CAAC,EAAQ,EAAY,CACvC,UAAW,OACX,aACH,CACK,GAA8C,CAChD,KAAM,qJACN,WAAY,OACZ,UAAW,CACP,IAAK,CACD,WAAY,EACf,CACD,IAAK,CACD,WAAY,EACf,CACD,IAAK,CACD,WAAY,EACf,CACD,IAAK,CACD,WAAY,EACf,CACD,QAAS,CACL,WAAY,EACf,CACJ,CACD,YAAa,EACb,gBAAiB,CAAC,EAAW,CAC7B,cAAe,CACX,EACA,EACA,GACH,CACD,iBAAkB,CAAC,EAAQ,EAAY,CACvC,UAAW,OACX,aACH,CACK,GAAuC,CACzC,KAAM,aACN,WAAY,MACZ,UAAW,CACP,IAAK,CACD,WAAY,EACf,CACD,QAAS,CACL,WAAY,EACf,CACJ,CACD,cAAe,CACX,EACA,EACA,EACA,GACH,CACD,iBAAkB,CAAC,EAAO,CAC1B,aACH,CACK,GAAsC,CACxC,KAAM,aACN,WAAY,MACZ,UAAW,CACP,IAAK,CACD,WAAY,EACf,CACD,QAAS,CACL,WAAY,EACf,CACJ,CACD,cAAe,CACX,EACA,EACA,GACH,CACD,iBAAkB,CAAC,EAAO,CAC1B,aACH,CACK,GAAyC,CAC3C,KAAM,aACN,WAAY,MACZ,UAAW,CACP,IAAK,CACD,WAAY,EACf,CACD,QAAS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d,gBAAiB,kBACjB,aAAc,eACd,aAAc,eACd,QAAS,UACT,QAAS,UACT,eAAgB,iBAChB,mBAAoB,qBACvB,CACK,GAAgC,IAAI,IAAI,CAC1C,CAACA,EAAkB,mBAAoB,WAAW,CAClD,CAACA,EAAkB,2BAA4B,SAAS,CACxD,CAACA,EAAkB,mBAAoB,MAAM,CAC7C,CAACA,EAAkB,wBAAyB,WAAW,CACvD,CAACA,EAAkB,kBAAmB,UAAU,CAChD,CAACA,EAAkB,qBAAsB,aAAa,CACtD,CACIA,EAAkB,iCAClB,mBACH,CACD,CAACA,EAAkB,kBAAmB,gBAAgB,CACtD,CAACA,EAAkB,8BAA+B,mBAAmB,CACrE,CAACA,EAAkB,+BAAgC,oBAAoB,CACvE,CAACA,EAAkB,gCAAiC,eAAe,CACnE,CAACA,EAAkB,UAAW,SAAS,CACvC,CACIA,EAAkB,gDAClB,0BACH,CACD,CACIA,EAAkB,+BAClB,0BACH,CACD,CACIA,EAAkB,oCAClB,iBACH,CACD,CACIA,EAAkB,oCAClB,2BACH,CACD,CACIA,EAAkB,kCAClB,oBACH,CACD,CACIA,EAAkB,6CAClB,mBACH,CACD,CACIA,EAAkB,kDAClB,yBACH,CACD,CAACA,EAAkB,iBAAkB,kBAAkB,CACvD,CACIA,EAAkB,mCAClB,iBACH,CACD,CAACA,EAAkB,qBAAsB,aAAa,CACtD,CACIA,EAAkB,sCAClB,mBACH,CACD,CAACA,EAAkB,+BAAgC,aAAa,CAChE,CACIA,EAAkB,qDAClB,yBACH,CACD,CACIA,EAAkB,6CAClB,iBACH,CACD,CACIA,EAAkB,yCAClB,yBACH,CACD,CAACA,EAAkB,sBAAuB,cAAc,CACxD,CACIA,EAAkB,mCAClB,wBACH,CACD,CACIA,EAAkB,8CAClB,+BACH,CACD,CAACA,EAAkB,2BAA4B,gBAAgB,CAC/D,CAACA,EAAkB,sBAAuB,cAAc,CACxD,CAACA,EAAkB,wBAAyB,aAAa,CACzD,CACIA,EAAkB,4BAClB,wBACH,CACD,CAACA,EAAkB,gBAAiB,YAAY,CAChD,CAACA,EAAkB,oBAAqB,cAAc,CACtD,CAACA,EAAkB,YAAa,cAAc,CAC9C,CAACA,EAAkB,oBAAqB,sBAAsB,CAC9D,CAACA,EAAkB,8BAA+B,kBAAkB,CACpE,CACIA,EAAkB,iCAClB,sBACH,CACD,CACIA,EAAkB,kCAClB,iCACH,CACD,CAACA,EAAkB,uBAAwB,oBAAoB,CAC/D,CAACA,EAAkB,2BAA4B,wBAAwB,CACvE,CACIA,EAAkB,8CAClB,mCACH,CACD,CACIA,EAAkB,gDAClB,4BACH,CACD,CACIA,EAAkB,wDAClB,0BACH,CACD,CAACA,EAAkB,eAAgB,iBAAiB,CACpD,CACIA,EAAkB,6BAClB,0BACH,CACD,CAACA,EAAkB,mBAAoB,iBAAiB,CACxD,CAACA,EAAkB,kBAAmB,gBAAgB,CACtD,CAACA,EAAkB,mBAAoB,iBAAiB,CACxD,CACIA,EAAkB,6BAClB,uBACH,CACD,CAACA,EAAkB,6BAA8B,mBAAmB,CACpE,CAACA,EAAkB,uBAAwB,eAAe,CAC1D,CAACA,EAAkB,8BAA+B,qBAAqB,CACvE,CACIA,EAAkB,iCAClB,2BACH,CACD,CAACA,EAAkB,oBAAqB,aAAa,CACrD,CAACA,EAAkB,oBAAqB,aAAa,CACrD,CAACA,EAAkB,0BAA2B,mBAAmB,CACjE,CAACA,EAAkB,oBAAqB,iBAAiB,CACzD,CACIA,EAAkB,yCAClB,yBACH,CACD,CACIA,EAAkB,+BAClB,4BACH,CACD,CACIA,EAAkB,0CAClB,gCACH,CACD,CACIA,EAAkB,8CAClB,uBACH,CACD,CACIA,EAAkB,sCAClB,gBACH,CACD,CACIA,EAAkB,wCAClB,uBACH,CACD,CACIA,EAAkB,gCAClB,sBACH,CACD,CACIA,EAAkB,+CAClB,yBACH,CACD,CAACA,EAAkB,4BAA6B,mBAAmB,CACnE,CACIA,EAAkB,iCAClB,wBACH,CACD,CACIA,EAAkB,iCAClB,uBACH,CACD,CAACA,EAAkB,wBAAyB,gBAAgB,CAC5D,CACIA,EAAkB,+BAClB,yBACH,CACD,CACIA,EAAkB,gDAClB,mBACH,CACD,CACIA,EAAkB,iCAClB,wBACH,CACD,CACIA,E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"} \ No newline at end of file diff --git a/eslint.config.mjs b/eslint.config.mjs index 7c60884..f9afb6e 100644 --- a/eslint.config.mjs +++ b/eslint.config.mjs @@ -1,31 +1,37 @@ // Copyright (c) Microsoft Corporation. // Licensed under the MIT License. -// @ts-check +// @ts-nocheck import eslint from "@eslint/js"; import tseslint from "typescript-eslint"; -import pluginJest from 'eslint-plugin-jest'; +import vitest from '@vitest/eslint-plugin'; import notice from "eslint-plugin-notice"; import eslintPluginPrettierRecommended from 'eslint-plugin-prettier/recommended'; -export default tseslint.config({ - files: ["src/**/*.ts", "test/**/*.ts", "test-live/**/*.ts"], - extends: [ - eslint.configs.recommended, - pluginJest.configs['flat/recommended'], - eslintPluginPrettierRecommended, - ...tseslint.configs.recommended, - ], - languageOptions: { - ecmaVersion: 2020, - }, - plugins: { notice }, - rules: { - "notice/notice": [ - "error", - { - template: "// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n", - }, - ], - }, -}); \ No newline at end of file +export default [ + eslint.configs.recommended, + ...tseslint.configs.recommended, + eslintPluginPrettierRecommended, + { + files: ["src/**/*.ts", "test/**/*.ts", "test-live/**/*.ts", "packages/**/*.ts"], + languageOptions: { + ecmaVersion: 2020, + globals: { + ...vitest.environments.env.globals, + } + }, + plugins: { + notice, + vitest + }, + rules: { + "notice/notice": [ + "error", + { + template: "// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n", + }, + ], + ...vitest.configs.recommended.rules, + }, + } +]; \ No newline at end of file diff --git a/jest.config.live.ts b/jest.config.live.ts deleted file mode 100644 index 9eb691a..0000000 --- a/jest.config.live.ts +++ /dev/null @@ -1,16 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -module.exports = { - verbose: true, - moduleFileExtensions: [ - "ts", - "js" - ], - transform: { - '^.+\\.(ts|tsx)$': 'ts-jest' - }, - testMatch: [ - '**/test-live/**/*.test.(ts)' - ], - testEnvironment: 'node', -}; \ No newline at end of file diff --git a/jest.config.unit.ts b/jest.config.unit.ts deleted file mode 100644 index ddf555e..0000000 --- a/jest.config.unit.ts +++ /dev/null @@ -1,16 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -module.exports = { - verbose: true, - moduleFileExtensions: [ - "ts", - "js" - ], - transform: { - '^.+\\.(ts|tsx)$': 'ts-jest' - }, - testMatch: [ - '**/test/**/*.test.(ts)' - ], - testEnvironment: 'node', -}; \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index e6a10d5..a44cc73 100644 --- a/package-lock.json +++ b/package-lock.json @@ -12,26 +12,21 @@ "@actions/core": "^1.11.1", "@actions/exec": "^1.1.1", "@actions/io": "^1.1.3", - "@azure/arm-resources": "^6.0.0", - "@azure/arm-resourcesdeploymentstacks": "^1.0.0", - "@azure/identity": "^4.10.2", - "bicep-node": "^0.0.8", - "yaml": "^2.7.0" + "@azure/bicep-deploy-common": "file:packages/bicep-deploy-common" }, "devDependencies": { - "@types/jest": "^29.5.14", "@types/node": "^22.15.29", + "@vitest/eslint-plugin": "^1.4.3", "esbuild": "^0.25.8", - "eslint": "^9.27.0", + "eslint": "^9.39.1", "eslint-config-prettier": "^10.1.5", - "eslint-plugin-jest": "^29.0.1", "eslint-plugin-notice": "^1.0.0", "eslint-plugin-prettier": "^5.5.4", - "jest": "^29.7.0", - "ts-jest": "^29.2.5", "ts-node": "^10.9.2", + "tsdown": "^0.16.5", "typescript": "^5.8.3", "typescript-eslint": "^8.32.0", + "vitest": "^4.0.10", "yaml": "^2.7.1" }, "engines": { @@ -42,6 +37,7 @@ "version": "1.11.1", "resolved": "https://registry.npmjs.org/@actions/core/-/core-1.11.1.tgz", "integrity": "sha512-hXJCSrkwfA46Vd9Z3q4cpEpHB1rL5NG04+/rbqW9d3+CSvtB1tYe8UTpAlixa1vj0m/ULglfEK2UKxMGxCxv5A==", + "license": "MIT", "dependencies": { "@actions/exec": "^1.1.1", "@actions/http-client": "^2.0.1" @@ -72,36 +68,22 @@ "integrity": "sha512-wi9JjgKLYS7U/z8PPbco+PvTb/nRWjeoFlJ1Qer83k/3C5PHQi28hiVdeE2kHXmIL99mQFawx8qt/JPjZilJ8Q==", "license": "MIT" }, - "node_modules/@ampproject/remapping": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz", - "integrity": "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@jridgewell/gen-mapping": "^0.3.5", - "@jridgewell/trace-mapping": "^0.3.24" - }, - "engines": { - "node": ">=6.0.0" - } - }, "node_modules/@azure/abort-controller": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@azure/abort-controller/-/abort-controller-1.1.0.tgz", - "integrity": "sha512-TrRLIoSQVzfAJX9H1JeFjzAoDGcoK1IYX1UImfceTZpsyYfWr09Ss1aHW1y5TrrR3iq6RZLBwJ3E24uwPhwahw==", + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@azure/abort-controller/-/abort-controller-2.1.2.tgz", + "integrity": "sha512-nBrLsEWm4J2u5LpAPjxADTlq3trDgVZZXHNKabeXZtpq3d3AbN/KGO82R87rdDz5/lYB024rtEf10/q0urNgsA==", "license": "MIT", "dependencies": { - "tslib": "^2.2.0" + "tslib": "^2.6.2" }, "engines": { - "node": ">=12.0.0" + "node": ">=18.0.0" } }, "node_modules/@azure/arm-resources": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/@azure/arm-resources/-/arm-resources-6.0.0.tgz", - "integrity": "sha512-Y6CniGow/k2ZHU/vyQ8+pE00OFk2/LbgYUyiLi5I6+ZZPvQ/Ufd4DDZxxNpfGiRDPlZ9mcUQ3DEF8qYMIdRJOg==", + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/@azure/arm-resources/-/arm-resources-6.1.0.tgz", + "integrity": "sha512-gGz03vSYd2x7bctxl1Ni6FU5DhwATS5k+H4y3ngqwmCsKi5tshvU8FSLPtbwU0XA3AVTvm4P7XrNyQeD3UXdRw==", "license": "MIT", "dependencies": { "@azure/abort-controller": "^2.1.2", @@ -116,18 +98,6 @@ "node": ">=18.0.0" } }, - "node_modules/@azure/arm-resources/node_modules/@azure/abort-controller": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/@azure/abort-controller/-/abort-controller-2.1.2.tgz", - "integrity": "sha512-nBrLsEWm4J2u5LpAPjxADTlq3trDgVZZXHNKabeXZtpq3d3AbN/KGO82R87rdDz5/lYB024rtEf10/q0urNgsA==", - "license": "MIT", - "dependencies": { - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, "node_modules/@azure/arm-resourcesdeploymentstacks": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/@azure/arm-resourcesdeploymentstacks/-/arm-resourcesdeploymentstacks-1.0.0.tgz", @@ -146,59 +116,52 @@ "node": ">=18.0.0" } }, - "node_modules/@azure/core-auth": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@azure/core-auth/-/core-auth-1.9.0.tgz", - "integrity": "sha512-FPwHpZywuyasDSLMqJ6fhbOK3TqUdviZNF8OqRGA4W5Ewib2lEEZ+pBsYcBa88B2NGO/SEnYPGhyBqNlE8ilSw==", - "dependencies": { - "@azure/abort-controller": "^2.0.0", - "@azure/core-util": "^1.11.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@azure/core-auth/node_modules/@azure/abort-controller": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/@azure/abort-controller/-/abort-controller-2.1.2.tgz", - "integrity": "sha512-nBrLsEWm4J2u5LpAPjxADTlq3trDgVZZXHNKabeXZtpq3d3AbN/KGO82R87rdDz5/lYB024rtEf10/q0urNgsA==", + "node_modules/@azure/arm-resourcesdeploymentstacks/node_modules/@azure/abort-controller": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@azure/abort-controller/-/abort-controller-1.1.0.tgz", + "integrity": "sha512-TrRLIoSQVzfAJX9H1JeFjzAoDGcoK1IYX1UImfceTZpsyYfWr09Ss1aHW1y5TrrR3iq6RZLBwJ3E24uwPhwahw==", "license": "MIT", "dependencies": { - "tslib": "^2.6.2" + "tslib": "^2.2.0" }, "engines": { - "node": ">=18.0.0" + "node": ">=12.0.0" } }, - "node_modules/@azure/core-client": { - "version": "1.9.2", - "resolved": "https://registry.npmjs.org/@azure/core-client/-/core-client-1.9.2.tgz", - "integrity": "sha512-kRdry/rav3fUKHl/aDLd/pDLcB+4pOFwPPTVEExuMyaI5r+JBbMWqRbCY1pn5BniDaU3lRxO9eaQ1AmSMehl/w==", + "node_modules/@azure/bicep-deploy-common": { + "resolved": "packages/bicep-deploy-common", + "link": true + }, + "node_modules/@azure/core-auth": { + "version": "1.10.1", + "resolved": "https://registry.npmjs.org/@azure/core-auth/-/core-auth-1.10.1.tgz", + "integrity": "sha512-ykRMW8PjVAn+RS6ww5cmK9U2CyH9p4Q88YJwvUslfuMmN98w/2rdGRLPqJYObapBCdzBVeDgYWdJnFPFb7qzpg==", "license": "MIT", "dependencies": { - "@azure/abort-controller": "^2.0.0", - "@azure/core-auth": "^1.4.0", - "@azure/core-rest-pipeline": "^1.9.1", - "@azure/core-tracing": "^1.0.0", - "@azure/core-util": "^1.6.1", - "@azure/logger": "^1.0.0", + "@azure/abort-controller": "^2.1.2", + "@azure/core-util": "^1.13.0", "tslib": "^2.6.2" }, "engines": { - "node": ">=18.0.0" + "node": ">=20.0.0" } }, - "node_modules/@azure/core-client/node_modules/@azure/abort-controller": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/@azure/abort-controller/-/abort-controller-2.1.2.tgz", - "integrity": "sha512-nBrLsEWm4J2u5LpAPjxADTlq3trDgVZZXHNKabeXZtpq3d3AbN/KGO82R87rdDz5/lYB024rtEf10/q0urNgsA==", + "node_modules/@azure/core-client": { + "version": "1.10.1", + "resolved": "https://registry.npmjs.org/@azure/core-client/-/core-client-1.10.1.tgz", + "integrity": "sha512-Nh5PhEOeY6PrnxNPsEHRr9eimxLwgLlpmguQaHKBinFYA/RU9+kOYVOQqOrTsCL+KSxrLLl1gD8Dk5BFW/7l/w==", "license": "MIT", "dependencies": { + "@azure/abort-controller": "^2.1.2", + "@azure/core-auth": "^1.10.0", + "@azure/core-rest-pipeline": "^1.22.0", + "@azure/core-tracing": "^1.3.0", + "@azure/core-util": "^1.13.0", + "@azure/logger": "^1.3.0", "tslib": "^2.6.2" }, "engines": { - "node": ">=18.0.0" + "node": ">=20.0.0" } }, "node_modules/@azure/core-lro": { @@ -216,18 +179,6 @@ "node": ">=18.0.0" } }, - "node_modules/@azure/core-lro/node_modules/@azure/abort-controller": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/@azure/abort-controller/-/abort-controller-2.1.2.tgz", - "integrity": "sha512-nBrLsEWm4J2u5LpAPjxADTlq3trDgVZZXHNKabeXZtpq3d3AbN/KGO82R87rdDz5/lYB024rtEf10/q0urNgsA==", - "license": "MIT", - "dependencies": { - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, "node_modules/@azure/core-paging": { "version": "1.6.2", "resolved": "https://registry.npmjs.org/@azure/core-paging/-/core-paging-1.6.2.tgz", @@ -241,76 +192,54 @@ } }, "node_modules/@azure/core-rest-pipeline": { - "version": "1.19.0", - "resolved": "https://registry.npmjs.org/@azure/core-rest-pipeline/-/core-rest-pipeline-1.19.0.tgz", - "integrity": "sha512-bM3308LRyg5g7r3Twprtqww0R/r7+GyVxj4BafcmVPo4WQoGt5JXuaqxHEFjw2o3rvFZcUPiqJMg6WuvEEeVUA==", - "license": "MIT", - "dependencies": { - "@azure/abort-controller": "^2.0.0", - "@azure/core-auth": "^1.8.0", - "@azure/core-tracing": "^1.0.1", - "@azure/core-util": "^1.11.0", - "@azure/logger": "^1.0.0", - "http-proxy-agent": "^7.0.0", - "https-proxy-agent": "^7.0.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@azure/core-rest-pipeline/node_modules/@azure/abort-controller": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/@azure/abort-controller/-/abort-controller-2.1.2.tgz", - "integrity": "sha512-nBrLsEWm4J2u5LpAPjxADTlq3trDgVZZXHNKabeXZtpq3d3AbN/KGO82R87rdDz5/lYB024rtEf10/q0urNgsA==", + "version": "1.22.2", + "resolved": "https://registry.npmjs.org/@azure/core-rest-pipeline/-/core-rest-pipeline-1.22.2.tgz", + "integrity": "sha512-MzHym+wOi8CLUlKCQu12de0nwcq9k9Kuv43j4Wa++CsCpJwps2eeBQwD2Bu8snkxTtDKDx4GwjuR9E8yC8LNrg==", "license": "MIT", "dependencies": { + "@azure/abort-controller": "^2.1.2", + "@azure/core-auth": "^1.10.0", + "@azure/core-tracing": "^1.3.0", + "@azure/core-util": "^1.13.0", + "@azure/logger": "^1.3.0", + "@typespec/ts-http-runtime": "^0.3.0", "tslib": "^2.6.2" }, "engines": { - "node": ">=18.0.0" + "node": ">=20.0.0" } }, "node_modules/@azure/core-tracing": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@azure/core-tracing/-/core-tracing-1.1.2.tgz", - "integrity": "sha512-dawW9ifvWAWmUm9/h+/UQ2jrdvjCJ7VJEuCJ6XVNudzcOwm53BFZH4Q845vjfgoUAM8ZxokvVNxNxAITc502YA==", + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/@azure/core-tracing/-/core-tracing-1.3.1.tgz", + "integrity": "sha512-9MWKevR7Hz8kNzzPLfX4EAtGM2b8mr50HPDBvio96bURP/9C+HjdH3sBlLSNNrvRAr5/k/svoH457gB5IKpmwQ==", "license": "MIT", "dependencies": { "tslib": "^2.6.2" }, "engines": { - "node": ">=18.0.0" + "node": ">=20.0.0" } }, "node_modules/@azure/core-util": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/@azure/core-util/-/core-util-1.11.0.tgz", - "integrity": "sha512-DxOSLua+NdpWoSqULhjDyAZTXFdP/LKkqtYuxxz1SCN289zk3OG8UOpnCQAz/tygyACBtWp/BoO72ptK7msY8g==", - "dependencies": { - "@azure/abort-controller": "^2.0.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@azure/core-util/node_modules/@azure/abort-controller": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/@azure/abort-controller/-/abort-controller-2.1.2.tgz", - "integrity": "sha512-nBrLsEWm4J2u5LpAPjxADTlq3trDgVZZXHNKabeXZtpq3d3AbN/KGO82R87rdDz5/lYB024rtEf10/q0urNgsA==", + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/@azure/core-util/-/core-util-1.13.1.tgz", + "integrity": "sha512-XPArKLzsvl0Hf0CaGyKHUyVgF7oDnhKoP85Xv6M4StF/1AhfORhZudHtOyf2s+FcbuQ9dPRAjB8J2KvRRMUK2A==", "license": "MIT", "dependencies": { + "@azure/abort-controller": "^2.1.2", + "@typespec/ts-http-runtime": "^0.3.0", "tslib": "^2.6.2" }, "engines": { - "node": ">=18.0.0" + "node": ">=20.0.0" } }, "node_modules/@azure/identity": { - "version": "4.10.2", - "resolved": "https://registry.npmjs.org/@azure/identity/-/identity-4.10.2.tgz", - "integrity": "sha512-Uth4vz0j+fkXCkbvutChUj03PDCokjbC6Wk9JT8hHEUtpy/EurNKAseb3+gO6Zi9VYBvwt61pgbzn1ovk942Qg==", + "version": "4.13.0", + "resolved": "https://registry.npmjs.org/@azure/identity/-/identity-4.13.0.tgz", + "integrity": "sha512-uWC0fssc+hs1TGGVkkghiaFkkS7NkTxfnCH+Hdg+yTehTpMcehpok4PgUKKdyCH+9ldu6FhiHRv84Ntqj1vVcw==", + "license": "MIT", "dependencies": { "@azure/abort-controller": "^2.0.0", "@azure/core-auth": "^1.9.0", @@ -328,54 +257,47 @@ "node": ">=20.0.0" } }, - "node_modules/@azure/identity/node_modules/@azure/abort-controller": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/@azure/abort-controller/-/abort-controller-2.1.2.tgz", - "integrity": "sha512-nBrLsEWm4J2u5LpAPjxADTlq3trDgVZZXHNKabeXZtpq3d3AbN/KGO82R87rdDz5/lYB024rtEf10/q0urNgsA==", - "dependencies": { - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, "node_modules/@azure/logger": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/@azure/logger/-/logger-1.1.4.tgz", - "integrity": "sha512-4IXXzcCdLdlXuCG+8UKEwLA1T1NHqUfanhXYHiQTn+6sfWCZXduqbtXDGceg3Ce5QxTGo7EqmbV6Bi+aqKuClQ==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@azure/logger/-/logger-1.3.0.tgz", + "integrity": "sha512-fCqPIfOcLE+CGqGPd66c8bZpwAji98tZ4JI9i/mlTNTlsIWslCfpg48s/ypyLxZTump5sypjrKn2/kY7q8oAbA==", "license": "MIT", "dependencies": { + "@typespec/ts-http-runtime": "^0.3.0", "tslib": "^2.6.2" }, "engines": { - "node": ">=18.0.0" + "node": ">=20.0.0" } }, "node_modules/@azure/msal-browser": { - "version": "4.7.0", - "resolved": "https://registry.npmjs.org/@azure/msal-browser/-/msal-browser-4.7.0.tgz", - "integrity": "sha512-H4AIPhIQVe1qW4+BJaitqod6UGQiXE3juj7q2ZBsOPjuZicQaqcbnBp2gCroF/icS0+TJ9rGuyCBJbjlAqVOGA==", + "version": "4.26.2", + "resolved": "https://registry.npmjs.org/@azure/msal-browser/-/msal-browser-4.26.2.tgz", + "integrity": "sha512-F2U1mEAFsYGC5xzo1KuWc/Sy3CRglU9Ql46cDUx8x/Y3KnAIr1QAq96cIKCk/ZfnVxlvprXWRjNKoEpgLJXLhg==", + "license": "MIT", "dependencies": { - "@azure/msal-common": "15.2.1" + "@azure/msal-common": "15.13.2" }, "engines": { "node": ">=0.8.0" } }, "node_modules/@azure/msal-common": { - "version": "15.2.1", - "resolved": "https://registry.npmjs.org/@azure/msal-common/-/msal-common-15.2.1.tgz", - "integrity": "sha512-eZHtYE5OHDN0o2NahCENkczQ6ffGc0MoUSAI3hpwGpZBHJXaEQMMZPWtIx86da2L9w7uT+Tr/xgJbGwIkvTZTQ==", + "version": "15.13.2", + "resolved": "https://registry.npmjs.org/@azure/msal-common/-/msal-common-15.13.2.tgz", + "integrity": "sha512-cNwUoCk3FF8VQ7Ln/MdcJVIv3sF73/OT86cRH81ECsydh7F4CNfIo2OAx6Cegtg8Yv75x4506wN4q+Emo6erOA==", + "license": "MIT", "engines": { "node": ">=0.8.0" } }, "node_modules/@azure/msal-node": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/@azure/msal-node/-/msal-node-3.6.2.tgz", - "integrity": "sha512-lfZtncCSmKvW31Bh3iUBkeTf+Myt85YsamMkGNZ0ayTO5MirOGBgTa3BgUth0kWFBQuhZIRfi5B95INZ+ppkjw==", + "version": "3.8.3", + "resolved": "https://registry.npmjs.org/@azure/msal-node/-/msal-node-3.8.3.tgz", + "integrity": "sha512-Ul7A4gwmaHzYWj2Z5xBDly/W8JSC1vnKgJ898zPMZr0oSf1ah0tiL15sytjycU/PMhDZAlkWtEL1+MzNMU6uww==", + "license": "MIT", "dependencies": { - "@azure/msal-common": "15.8.0", + "@azure/msal-common": "15.13.2", "jsonwebtoken": "^9.0.0", "uuid": "^8.3.0" }, @@ -383,582 +305,271 @@ "node": ">=16" } }, - "node_modules/@azure/msal-node/node_modules/@azure/msal-common": { - "version": "15.8.0", - "resolved": "https://registry.npmjs.org/@azure/msal-common/-/msal-common-15.8.0.tgz", - "integrity": "sha512-gYqq9MsWT/KZh8iTG37DkGv+wgfllgImTMB++Z83qn75M5eZ0cMX5kSSXdJqHbFm1qxaYydv+2kiVyA9ksN9pA==", - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/@babel/code-frame": { - "version": "7.26.2", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.26.2.tgz", - "integrity": "sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==", + "node_modules/@babel/generator": { + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.28.5.tgz", + "integrity": "sha512-3EwLFhZ38J4VyIP6WNtt2kUdW9dokXA9Cr4IVIFHuCpZ3H8/YFOl5JjZHisrn1fATPBmKKqXzDFvh9fUwHz6CQ==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-validator-identifier": "^7.25.9", - "js-tokens": "^4.0.0", - "picocolors": "^1.0.0" + "@babel/parser": "^7.28.5", + "@babel/types": "^7.28.5", + "@jridgewell/gen-mapping": "^0.3.12", + "@jridgewell/trace-mapping": "^0.3.28", + "jsesc": "^3.0.2" }, "engines": { "node": ">=6.9.0" } }, - "node_modules/@babel/compat-data": { - "version": "7.25.4", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.25.4.tgz", - "integrity": "sha512-+LGRog6RAsCJrrrg/IO6LGmpphNe5DiK30dGjCoxxeGv49B10/3XYGxPsAwrDlMFcFEvdAUavDT8r9k/hSyQqQ==", + "node_modules/@babel/generator/node_modules/@jridgewell/trace-mapping": { + "version": "0.3.31", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz", + "integrity": "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "node_modules/@babel/helper-string-parser": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz", + "integrity": "sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==", "dev": true, "license": "MIT", "engines": { "node": ">=6.9.0" } }, - "node_modules/@babel/core": { - "version": "7.25.2", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.25.2.tgz", - "integrity": "sha512-BBt3opiCOxUr9euZ5/ro/Xv8/V7yJ5bjYMqG/C1YAo8MIKAnumZalCN+msbci3Pigy4lIQfPUpfMM27HMGaYEA==", + "node_modules/@babel/helper-validator-identifier": { + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.28.5.tgz", + "integrity": "sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==", "dev": true, "license": "MIT", - "dependencies": { - "@ampproject/remapping": "^2.2.0", - "@babel/code-frame": "^7.24.7", - "@babel/generator": "^7.25.0", - "@babel/helper-compilation-targets": "^7.25.2", - "@babel/helper-module-transforms": "^7.25.2", - "@babel/helpers": "^7.25.0", - "@babel/parser": "^7.25.0", - "@babel/template": "^7.25.0", - "@babel/traverse": "^7.25.2", - "@babel/types": "^7.25.2", - "convert-source-map": "^2.0.0", - "debug": "^4.1.0", - "gensync": "^1.0.0-beta.2", - "json5": "^2.2.3", - "semver": "^6.3.1" - }, "engines": { "node": ">=6.9.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/babel" } }, - "node_modules/@babel/core/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "node_modules/@babel/parser": { + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.28.5.tgz", + "integrity": "sha512-KKBU1VGYR7ORr3At5HAtUQ+TV3SzRCXmA/8OdDZiLDBIZxVyzXuztPjfLd3BV1PRAQGCMWWSHYhL0F8d5uHBDQ==", "dev": true, - "license": "ISC", + "license": "MIT", + "dependencies": { + "@babel/types": "^7.28.5" + }, "bin": { - "semver": "bin/semver.js" + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" } }, - "node_modules/@babel/generator": { - "version": "7.25.6", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.25.6.tgz", - "integrity": "sha512-VPC82gr1seXOpkjAAKoLhP50vx4vGNlF4msF64dSFq1P8RfB+QAuJWGHPXXPc8QyfVWwwB/TNNU4+ayZmHNbZw==", + "node_modules/@babel/types": { + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.28.5.tgz", + "integrity": "sha512-qQ5m48eI/MFLQ5PxQj4PFaprjyCTLI37ElWMmNs0K8Lk3dVeOdNpB3ks8jc7yM5CDmVC73eMVk/trk3fgmrUpA==", "dev": true, "license": "MIT", "dependencies": { - "@babel/types": "^7.25.6", - "@jridgewell/gen-mapping": "^0.3.5", - "@jridgewell/trace-mapping": "^0.3.25", - "jsesc": "^2.5.1" + "@babel/helper-string-parser": "^7.27.1", + "@babel/helper-validator-identifier": "^7.28.5" }, "engines": { "node": ">=6.9.0" } }, - "node_modules/@babel/helper-compilation-targets": { - "version": "7.25.2", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.25.2.tgz", - "integrity": "sha512-U2U5LsSaZ7TAt3cfaymQ8WHh0pxvdHoEk6HVpaexxixjyEquMh0L0YNJNM6CTGKMXV1iksi0iZkGw4AcFkPaaw==", + "node_modules/@cspotcode/source-map-support": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz", + "integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==", "dev": true, "license": "MIT", "dependencies": { - "@babel/compat-data": "^7.25.2", - "@babel/helper-validator-option": "^7.24.8", - "browserslist": "^4.23.1", - "lru-cache": "^5.1.1", - "semver": "^6.3.1" + "@jridgewell/trace-mapping": "0.3.9" }, "engines": { - "node": ">=6.9.0" + "node": ">=12" } }, - "node_modules/@babel/helper-compilation-targets/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "node_modules/@emnapi/core": { + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/@emnapi/core/-/core-1.7.1.tgz", + "integrity": "sha512-o1uhUASyo921r2XtHYOHy7gdkGLge8ghBEQHMWmyJFoXlpU58kIrhhN3w26lpQb6dspetweapMn2CSNwQ8I4wg==", "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" + "license": "MIT", + "optional": true, + "dependencies": { + "@emnapi/wasi-threads": "1.1.0", + "tslib": "^2.4.0" } }, - "node_modules/@babel/helper-module-imports": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.24.7.tgz", - "integrity": "sha512-8AyH3C+74cgCVVXow/myrynrAGv+nTVg5vKu2nZph9x7RcRwzmh0VFallJuFTZ9mx6u4eSdXZfcOzSqTUm0HCA==", + "node_modules/@emnapi/runtime": { + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.7.1.tgz", + "integrity": "sha512-PVtJr5CmLwYAU9PZDMITZoR5iAOShYREoR45EyyLrbntV50mdePTgUn4AmOw90Ifcj+x2kRjdzr1HP3RrNiHGA==", "dev": true, "license": "MIT", + "optional": true, "dependencies": { - "@babel/traverse": "^7.24.7", - "@babel/types": "^7.24.7" - }, - "engines": { - "node": ">=6.9.0" + "tslib": "^2.4.0" } }, - "node_modules/@babel/helper-module-transforms": { - "version": "7.25.2", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.25.2.tgz", - "integrity": "sha512-BjyRAbix6j/wv83ftcVJmBt72QtHI56C7JXZoG2xATiLpmoC7dpd8WnkikExHDVPpi/3qCmO6WY1EaXOluiecQ==", + "node_modules/@emnapi/wasi-threads": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@emnapi/wasi-threads/-/wasi-threads-1.1.0.tgz", + "integrity": "sha512-WI0DdZ8xFSbgMjR1sFsKABJ/C5OnRrjT06JXbZKexJGrDuPTzZdDYfFlsgcCXCyf+suG5QU2e/y1Wo2V/OapLQ==", "dev": true, "license": "MIT", + "optional": true, "dependencies": { - "@babel/helper-module-imports": "^7.24.7", - "@babel/helper-simple-access": "^7.24.7", - "@babel/helper-validator-identifier": "^7.24.7", - "@babel/traverse": "^7.25.2" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" + "tslib": "^2.4.0" } }, - "node_modules/@babel/helper-plugin-utils": { - "version": "7.24.8", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.24.8.tgz", - "integrity": "sha512-FFWx5142D8h2Mgr/iPVGH5G7w6jDn4jUSpZTyDnQO0Yn7Ks2Kuz6Pci8H6MPCoUJegd/UZQ3tAvfLCxQSnWWwg==", + "node_modules/@esbuild/aix-ppc64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.12.tgz", + "integrity": "sha512-Hhmwd6CInZ3dwpuGTF8fJG6yoWmsToE+vYgD4nytZVxcu1ulHpUQRAB1UJ8+N1Am3Mz4+xOByoQoSZf4D+CpkA==", + "cpu": [ + "ppc64" + ], "dev": true, "license": "MIT", + "optional": true, + "os": [ + "aix" + ], "engines": { - "node": ">=6.9.0" + "node": ">=18" } }, - "node_modules/@babel/helper-simple-access": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.24.7.tgz", - "integrity": "sha512-zBAIvbCMh5Ts+b86r/CjU+4XGYIs+R1j951gxI3KmmxBMhCg4oQMsv6ZXQ64XOm/cvzfU1FmoCyt6+owc5QMYg==", + "node_modules/@esbuild/android-arm": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.12.tgz", + "integrity": "sha512-VJ+sKvNA/GE7Ccacc9Cha7bpS8nyzVv0jdVgwNDaR4gDMC/2TTRc33Ip8qrNYUcpkOHUT5OZ0bUcNNVZQ9RLlg==", + "cpu": [ + "arm" + ], "dev": true, "license": "MIT", - "dependencies": { - "@babel/traverse": "^7.24.7", - "@babel/types": "^7.24.7" - }, + "optional": true, + "os": [ + "android" + ], "engines": { - "node": ">=6.9.0" + "node": ">=18" } }, - "node_modules/@babel/helper-string-parser": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.25.9.tgz", - "integrity": "sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==", + "node_modules/@esbuild/android-arm64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.12.tgz", + "integrity": "sha512-6AAmLG7zwD1Z159jCKPvAxZd4y/VTO0VkprYy+3N2FtJ8+BQWFXU+OxARIwA46c5tdD9SsKGZ/1ocqBS/gAKHg==", + "cpu": [ + "arm64" + ], "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], "engines": { - "node": ">=6.9.0" + "node": ">=18" } }, - "node_modules/@babel/helper-validator-identifier": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.9.tgz", - "integrity": "sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==", + "node_modules/@esbuild/android-x64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.12.tgz", + "integrity": "sha512-5jbb+2hhDHx5phYR2By8GTWEzn6I9UqR11Kwf22iKbNpYrsmRB18aX/9ivc5cabcUiAT/wM+YIZ6SG9QO6a8kg==", + "cpu": [ + "x64" + ], "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], "engines": { - "node": ">=6.9.0" + "node": ">=18" } }, - "node_modules/@babel/helper-validator-option": { - "version": "7.24.8", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.24.8.tgz", - "integrity": "sha512-xb8t9tD1MHLungh/AIoWYN+gVHaB9kwlu8gffXGSt3FFEIT7RjS+xWbc2vUD1UTZdIpKj/ab3rdqJ7ufngyi2Q==", + "node_modules/@esbuild/darwin-arm64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.12.tgz", + "integrity": "sha512-N3zl+lxHCifgIlcMUP5016ESkeQjLj/959RxxNYIthIg+CQHInujFuXeWbWMgnTo4cp5XVHqFPmpyu9J65C1Yg==", + "cpu": [ + "arm64" + ], "dev": true, "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], "engines": { - "node": ">=6.9.0" + "node": ">=18" } }, - "node_modules/@babel/helpers": { - "version": "7.27.0", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.27.0.tgz", - "integrity": "sha512-U5eyP/CTFPuNE3qk+WZMxFkp/4zUzdceQlfzf7DdGdhp+Fezd7HD+i8Y24ZuTMKX3wQBld449jijbGq6OdGNQg==", - "dev": true, - "dependencies": { - "@babel/template": "^7.27.0", - "@babel/types": "^7.27.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/parser": { - "version": "7.27.0", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.27.0.tgz", - "integrity": "sha512-iaepho73/2Pz7w2eMS0Q5f83+0RKI7i4xmiYeBmDzfRVbQtTOG7Ts0S4HzJVsTMGI9keU8rNfuZr8DKfSt7Yyg==", - "dev": true, - "dependencies": { - "@babel/types": "^7.27.0" - }, - "bin": { - "parser": "bin/babel-parser.js" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@babel/plugin-syntax-async-generators": { - "version": "7.8.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", - "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-bigint": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz", - "integrity": "sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-class-properties": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", - "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-class-static-block": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", - "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-import-attributes": { - "version": "7.25.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.25.6.tgz", - "integrity": "sha512-sXaDXaJN9SNLymBdlWFA+bjzBhFD617ZaFiY13dGt7TVslVvVgA6fkZOP7Ki3IGElC45lwHdOTrCtKZGVAWeLQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.24.8" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-import-meta": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", - "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-json-strings": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", - "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-jsx": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.24.7.tgz", - "integrity": "sha512-6ddciUPe/mpMnOKv/U+RSd2vvVy+Yw/JfBB0ZHYjEZt9NLHmCUylNYlsbqCCS1Bffjlb0fCwC9Vqz+sBz6PsiQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.24.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-logical-assignment-operators": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", - "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-nullish-coalescing-operator": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", - "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-numeric-separator": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", - "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-object-rest-spread": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", - "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-optional-catch-binding": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", - "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-optional-chaining": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", - "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-private-property-in-object": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", - "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-top-level-await": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", - "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-typescript": { - "version": "7.25.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.25.4.tgz", - "integrity": "sha512-uMOCoHVU52BsSWxPOMVv5qKRdeSlPuImUCB2dlPuBSU+W2/ROE7/Zg8F2Kepbk+8yBa68LlRKxO+xgEVWorsDg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.24.8" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/template": { - "version": "7.27.0", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.27.0.tgz", - "integrity": "sha512-2ncevenBqXI6qRMukPlXwHKHchC7RyMuu4xv5JBXRfOGVcTy1mXCD12qrp7Jsoxll1EV3+9sE4GugBVRjT2jFA==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.26.2", - "@babel/parser": "^7.27.0", - "@babel/types": "^7.27.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/traverse": { - "version": "7.25.6", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.25.6.tgz", - "integrity": "sha512-9Vrcx5ZW6UwK5tvqsj0nGpp/XzqthkT0dqIc9g1AdtygFToNtTF67XzYS//dm+SAK9cp3B9R4ZO/46p63SCjlQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/code-frame": "^7.24.7", - "@babel/generator": "^7.25.6", - "@babel/parser": "^7.25.6", - "@babel/template": "^7.25.0", - "@babel/types": "^7.25.6", - "debug": "^4.3.1", - "globals": "^11.1.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/traverse/node_modules/globals": { - "version": "11.12.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", - "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "node_modules/@esbuild/darwin-x64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.12.tgz", + "integrity": "sha512-HQ9ka4Kx21qHXwtlTUVbKJOAnmG1ipXhdWTmNXiPzPfWKpXqASVcWdnf2bnL73wgjNrFXAa3yYvBSd9pzfEIpA==", + "cpu": [ + "x64" + ], "dev": true, "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/types": { - "version": "7.27.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.27.0.tgz", - "integrity": "sha512-H45s8fVLYjbhFH62dIJ3WtmJ6RSPt/3DRO0ZcT2SUiYiQyz3BLVb9ADEnLl91m74aQPS3AzzeajZHYOalWe3bg==", - "dev": true, - "dependencies": { - "@babel/helper-string-parser": "^7.25.9", - "@babel/helper-validator-identifier": "^7.25.9" - }, - "engines": { - "node": ">=6.9.0" + "node": ">=18" } }, - "node_modules/@bcoe/v8-coverage": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz", - "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", - "dev": true, - "license": "MIT" - }, - "node_modules/@cspotcode/source-map-support": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz", - "integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==", + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.12.tgz", + "integrity": "sha512-gA0Bx759+7Jve03K1S0vkOu5Lg/85dou3EseOGUes8flVOGxbhDDh/iZaoek11Y8mtyKPGF3vP8XhnkDEAmzeg==", + "cpu": [ + "arm64" + ], "dev": true, "license": "MIT", - "dependencies": { - "@jridgewell/trace-mapping": "0.3.9" - }, + "optional": true, + "os": [ + "freebsd" + ], "engines": { - "node": ">=12" - } - }, - "node_modules/@cspotcode/source-map-support/node_modules/@jridgewell/trace-mapping": { - "version": "0.3.9", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz", - "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jridgewell/resolve-uri": "^3.0.3", - "@jridgewell/sourcemap-codec": "^1.4.10" + "node": ">=18" } }, - "node_modules/@esbuild/aix-ppc64": { - "version": "0.25.8", - "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.8.tgz", - "integrity": "sha512-urAvrUedIqEiFR3FYSLTWQgLu5tb+m0qZw0NBEasUeo6wuqatkMDaRT+1uABiGXEu5vqgPd7FGE1BhsAIy9QVA==", + "node_modules/@esbuild/freebsd-x64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.12.tgz", + "integrity": "sha512-TGbO26Yw2xsHzxtbVFGEXBFH0FRAP7gtcPE7P5yP7wGy7cXK2oO7RyOhL5NLiqTlBh47XhmIUXuGciXEqYFfBQ==", "cpu": [ - "ppc64" + "x64" ], "dev": true, "license": "MIT", "optional": true, "os": [ - "aix" + "freebsd" ], "engines": { "node": ">=18" } }, - "node_modules/@esbuild/android-arm": { - "version": "0.25.8", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.8.tgz", - "integrity": "sha512-RONsAvGCz5oWyePVnLdZY/HHwA++nxYWIX1atInlaW6SEkwq6XkP3+cb825EUcRs5Vss/lGh/2YxAb5xqc07Uw==", + "node_modules/@esbuild/linux-arm": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.12.tgz", + "integrity": "sha512-lPDGyC1JPDou8kGcywY0YILzWlhhnRjdof3UlcoqYmS9El818LLfJJc3PXXgZHrHCAKs/Z2SeZtDJr5MrkxtOw==", "cpu": [ "arm" ], @@ -966,16 +577,16 @@ "license": "MIT", "optional": true, "os": [ - "android" + "linux" ], "engines": { "node": ">=18" } }, - "node_modules/@esbuild/android-arm64": { - "version": "0.25.8", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.8.tgz", - "integrity": "sha512-OD3p7LYzWpLhZEyATcTSJ67qB5D+20vbtr6vHlHWSQYhKtzUYrETuWThmzFpZtFsBIxRvhO07+UgVA9m0i/O1w==", + "node_modules/@esbuild/linux-arm64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.12.tgz", + "integrity": "sha512-8bwX7a8FghIgrupcxb4aUmYDLp8pX06rGh5HqDT7bB+8Rdells6mHvrFHHW2JAOPZUbnjUpKTLg6ECyzvas2AQ==", "cpu": [ "arm64" ], @@ -983,203 +594,84 @@ "license": "MIT", "optional": true, "os": [ - "android" + "linux" ], "engines": { "node": ">=18" } }, - "node_modules/@esbuild/android-x64": { - "version": "0.25.8", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.8.tgz", - "integrity": "sha512-yJAVPklM5+4+9dTeKwHOaA+LQkmrKFX96BM0A/2zQrbS6ENCmxc4OVoBs5dPkCCak2roAD+jKCdnmOqKszPkjA==", + "node_modules/@esbuild/linux-ia32": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.12.tgz", + "integrity": "sha512-0y9KrdVnbMM2/vG8KfU0byhUN+EFCny9+8g202gYqSSVMonbsCfLjUO+rCci7pM0WBEtz+oK/PIwHkzxkyharA==", "cpu": [ - "x64" + "ia32" ], "dev": true, "license": "MIT", "optional": true, "os": [ - "android" + "linux" ], "engines": { "node": ">=18" } }, - "node_modules/@esbuild/darwin-arm64": { - "version": "0.25.8", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.8.tgz", - "integrity": "sha512-Jw0mxgIaYX6R8ODrdkLLPwBqHTtYHJSmzzd+QeytSugzQ0Vg4c5rDky5VgkoowbZQahCbsv1rT1KW72MPIkevw==", + "node_modules/@esbuild/linux-loong64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.12.tgz", + "integrity": "sha512-h///Lr5a9rib/v1GGqXVGzjL4TMvVTv+s1DPoxQdz7l/AYv6LDSxdIwzxkrPW438oUXiDtwM10o9PmwS/6Z0Ng==", "cpu": [ - "arm64" + "loong64" ], "dev": true, "license": "MIT", "optional": true, "os": [ - "darwin" + "linux" ], "engines": { "node": ">=18" } }, - "node_modules/@esbuild/darwin-x64": { - "version": "0.25.8", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.8.tgz", - "integrity": "sha512-Vh2gLxxHnuoQ+GjPNvDSDRpoBCUzY4Pu0kBqMBDlK4fuWbKgGtmDIeEC081xi26PPjn+1tct+Bh8FjyLlw1Zlg==", + "node_modules/@esbuild/linux-mips64el": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.12.tgz", + "integrity": "sha512-iyRrM1Pzy9GFMDLsXn1iHUm18nhKnNMWscjmp4+hpafcZjrr2WbT//d20xaGljXDBYHqRcl8HnxbX6uaA/eGVw==", "cpu": [ - "x64" + "mips64el" ], "dev": true, "license": "MIT", "optional": true, "os": [ - "darwin" + "linux" ], "engines": { "node": ">=18" } }, - "node_modules/@esbuild/freebsd-arm64": { - "version": "0.25.8", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.8.tgz", - "integrity": "sha512-YPJ7hDQ9DnNe5vxOm6jaie9QsTwcKedPvizTVlqWG9GBSq+BuyWEDazlGaDTC5NGU4QJd666V0yqCBL2oWKPfA==", + "node_modules/@esbuild/linux-ppc64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.12.tgz", + "integrity": "sha512-9meM/lRXxMi5PSUqEXRCtVjEZBGwB7P/D4yT8UG/mwIdze2aV4Vo6U5gD3+RsoHXKkHCfSxZKzmDssVlRj1QQA==", "cpu": [ - "arm64" + "ppc64" ], "dev": true, "license": "MIT", "optional": true, "os": [ - "freebsd" + "linux" ], "engines": { "node": ">=18" } }, - "node_modules/@esbuild/freebsd-x64": { - "version": "0.25.8", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.8.tgz", - "integrity": "sha512-MmaEXxQRdXNFsRN/KcIimLnSJrk2r5H8v+WVafRWz5xdSVmWLoITZQXcgehI2ZE6gioE6HirAEToM/RvFBeuhw==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-arm": { - "version": "0.25.8", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.8.tgz", - "integrity": "sha512-FuzEP9BixzZohl1kLf76KEVOsxtIBFwCaLupVuk4eFVnOZfU+Wsn+x5Ryam7nILV2pkq2TqQM9EZPsOBuMC+kg==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-arm64": { - "version": "0.25.8", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.8.tgz", - "integrity": "sha512-WIgg00ARWv/uYLU7lsuDK00d/hHSfES5BzdWAdAig1ioV5kaFNrtK8EqGcUBJhYqotlUByUKz5Qo6u8tt7iD/w==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-ia32": { - "version": "0.25.8", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.8.tgz", - "integrity": "sha512-A1D9YzRX1i+1AJZuFFUMP1E9fMaYY+GnSQil9Tlw05utlE86EKTUA7RjwHDkEitmLYiFsRd9HwKBPEftNdBfjg==", - "cpu": [ - "ia32" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-loong64": { - "version": "0.25.8", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.8.tgz", - "integrity": "sha512-O7k1J/dwHkY1RMVvglFHl1HzutGEFFZ3kNiDMSOyUrB7WcoHGf96Sh+64nTRT26l3GMbCW01Ekh/ThKM5iI7hQ==", - "cpu": [ - "loong64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-mips64el": { - "version": "0.25.8", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.8.tgz", - "integrity": "sha512-uv+dqfRazte3BzfMp8PAQXmdGHQt2oC/y2ovwpTteqrMx2lwaksiFZ/bdkXJC19ttTvNXBuWH53zy/aTj1FgGw==", - "cpu": [ - "mips64el" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-ppc64": { - "version": "0.25.8", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.8.tgz", - "integrity": "sha512-GyG0KcMi1GBavP5JgAkkstMGyMholMDybAf8wF5A70CALlDM2p/f7YFE7H92eDeH/VBtFJA5MT4nRPDGg4JuzQ==", - "cpu": [ - "ppc64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-riscv64": { - "version": "0.25.8", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.8.tgz", - "integrity": "sha512-rAqDYFv3yzMrq7GIcen3XP7TUEG/4LK86LUPMIz6RT8A6pRIDn0sDcvjudVZBiiTcZCY9y2SgYX2lgK3AF+1eg==", + "node_modules/@esbuild/linux-riscv64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.12.tgz", + "integrity": "sha512-Zr7KR4hgKUpWAwb1f3o5ygT04MzqVrGEGXGLnj15YQDJErYu/BGg+wmFlIDOdJp0PmB0lLvxFIOXZgFRrdjR0w==", "cpu": [ "riscv64" ], @@ -1194,9 +686,9 @@ } }, "node_modules/@esbuild/linux-s390x": { - "version": "0.25.8", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.8.tgz", - "integrity": "sha512-Xutvh6VjlbcHpsIIbwY8GVRbwoviWT19tFhgdA7DlenLGC/mbc3lBoVb7jxj9Z+eyGqvcnSyIltYUrkKzWqSvg==", + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.12.tgz", + "integrity": "sha512-MsKncOcgTNvdtiISc/jZs/Zf8d0cl/t3gYWX8J9ubBnVOwlk65UIEEvgBORTiljloIWnBzLs4qhzPkJcitIzIg==", "cpu": [ "s390x" ], @@ -1211,9 +703,9 @@ } }, "node_modules/@esbuild/linux-x64": { - "version": "0.25.8", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.8.tgz", - "integrity": "sha512-ASFQhgY4ElXh3nDcOMTkQero4b1lgubskNlhIfJrsH5OKZXDpUAKBlNS0Kx81jwOBp+HCeZqmoJuihTv57/jvQ==", + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.12.tgz", + "integrity": "sha512-uqZMTLr/zR/ed4jIGnwSLkaHmPjOjJvnm6TVVitAa08SLS9Z0VM8wIRx7gWbJB5/J54YuIMInDquWyYvQLZkgw==", "cpu": [ "x64" ], @@ -1228,9 +720,9 @@ } }, "node_modules/@esbuild/netbsd-arm64": { - "version": "0.25.8", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.8.tgz", - "integrity": "sha512-d1KfruIeohqAi6SA+gENMuObDbEjn22olAR7egqnkCD9DGBG0wsEARotkLgXDu6c4ncgWTZJtN5vcgxzWRMzcw==", + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.12.tgz", + "integrity": "sha512-xXwcTq4GhRM7J9A8Gv5boanHhRa/Q9KLVmcyXHCTaM4wKfIpWkdXiMog/KsnxzJ0A1+nD+zoecuzqPmCRyBGjg==", "cpu": [ "arm64" ], @@ -1245,9 +737,9 @@ } }, "node_modules/@esbuild/netbsd-x64": { - "version": "0.25.8", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.8.tgz", - "integrity": "sha512-nVDCkrvx2ua+XQNyfrujIG38+YGyuy2Ru9kKVNyh5jAys6n+l44tTtToqHjino2My8VAY6Lw9H7RI73XFi66Cg==", + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.12.tgz", + "integrity": "sha512-Ld5pTlzPy3YwGec4OuHh1aCVCRvOXdH8DgRjfDy/oumVovmuSzWfnSJg+VtakB9Cm0gxNO9BzWkj6mtO1FMXkQ==", "cpu": [ "x64" ], @@ -1262,9 +754,9 @@ } }, "node_modules/@esbuild/openbsd-arm64": { - "version": "0.25.8", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.8.tgz", - "integrity": "sha512-j8HgrDuSJFAujkivSMSfPQSAa5Fxbvk4rgNAS5i3K+r8s1X0p1uOO2Hl2xNsGFppOeHOLAVgYwDVlmxhq5h+SQ==", + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.12.tgz", + "integrity": "sha512-fF96T6KsBo/pkQI950FARU9apGNTSlZGsv1jZBAlcLL1MLjLNIWPBkj5NlSz8aAzYKg+eNqknrUJ24QBybeR5A==", "cpu": [ "arm64" ], @@ -1279,9 +771,9 @@ } }, "node_modules/@esbuild/openbsd-x64": { - "version": "0.25.8", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.8.tgz", - "integrity": "sha512-1h8MUAwa0VhNCDp6Af0HToI2TJFAn1uqT9Al6DJVzdIBAd21m/G0Yfc77KDM3uF3T/YaOgQq3qTJHPbTOInaIQ==", + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.12.tgz", + "integrity": "sha512-MZyXUkZHjQxUvzK7rN8DJ3SRmrVrke8ZyRusHlP+kuwqTcfWLyqMOE3sScPPyeIXN/mDJIfGXvcMqCgYKekoQw==", "cpu": [ "x64" ], @@ -1296,9 +788,9 @@ } }, "node_modules/@esbuild/openharmony-arm64": { - "version": "0.25.8", - "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.25.8.tgz", - "integrity": "sha512-r2nVa5SIK9tSWd0kJd9HCffnDHKchTGikb//9c7HX+r+wHYCpQrSgxhlY6KWV1nFo1l4KFbsMlHk+L6fekLsUg==", + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.25.12.tgz", + "integrity": "sha512-rm0YWsqUSRrjncSXGA7Zv78Nbnw4XL6/dzr20cyrQf7ZmRcsovpcRBdhD43Nuk3y7XIoW2OxMVvwuRvk9XdASg==", "cpu": [ "arm64" ], @@ -1313,9 +805,9 @@ } }, "node_modules/@esbuild/sunos-x64": { - "version": "0.25.8", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.8.tgz", - "integrity": "sha512-zUlaP2S12YhQ2UzUfcCuMDHQFJyKABkAjvO5YSndMiIkMimPmxA+BYSBikWgsRpvyxuRnow4nS5NPnf9fpv41w==", + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.12.tgz", + "integrity": "sha512-3wGSCDyuTHQUzt0nV7bocDy72r2lI33QL3gkDNGkod22EsYl04sMf0qLb8luNKTOmgF/eDEDP5BFNwoBKH441w==", "cpu": [ "x64" ], @@ -1330,9 +822,9 @@ } }, "node_modules/@esbuild/win32-arm64": { - "version": "0.25.8", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.8.tgz", - "integrity": "sha512-YEGFFWESlPva8hGL+zvj2z/SaK+pH0SwOM0Nc/d+rVnW7GSTFlLBGzZkuSU9kFIGIo8q9X3ucpZhu8PDN5A2sQ==", + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.12.tgz", + "integrity": "sha512-rMmLrur64A7+DKlnSuwqUdRKyd3UE7oPJZmnljqEptesKM8wx9J8gx5u0+9Pq0fQQW8vqeKebwNXdfOyP+8Bsg==", "cpu": [ "arm64" ], @@ -1347,9 +839,9 @@ } }, "node_modules/@esbuild/win32-ia32": { - "version": "0.25.8", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.8.tgz", - "integrity": "sha512-hiGgGC6KZ5LZz58OL/+qVVoZiuZlUYlYHNAmczOm7bs2oE1XriPFi5ZHHrS8ACpV5EjySrnoCKmcbQMN+ojnHg==", + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.12.tgz", + "integrity": "sha512-HkqnmmBoCbCwxUKKNPBixiWDGCpQGVsrQfJoVGYLPT41XWF8lHuE5N6WhVia2n4o5QK5M4tYr21827fNhi4byQ==", "cpu": [ "ia32" ], @@ -1364,9 +856,9 @@ } }, "node_modules/@esbuild/win32-x64": { - "version": "0.25.8", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.8.tgz", - "integrity": "sha512-cn3Yr7+OaaZq1c+2pe+8yxC8E144SReCQjN6/2ynubzYjvyqZjTXfQJpAcQpsdJq3My7XADANiYGHoFC69pLQw==", + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.12.tgz", + "integrity": "sha512-alJC0uCZpTFrSL0CCDjcgleBXPnCrEAhTBILpeAp7M/OFgoqtAetfBzX0xM00MUsVVPpVjlPuMbREqnZCXaTnA==", "cpu": [ "x64" ], @@ -1381,9 +873,9 @@ } }, "node_modules/@eslint-community/eslint-utils": { - "version": "4.7.0", - "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.7.0.tgz", - "integrity": "sha512-dyybb3AcajC7uha6CvhdVRJqaKyn7w2YKqKyAN37NKYgZT36w+iRb0Dymmc5qEJ549c/S31cMMSFd75bteCpCw==", + "version": "4.9.0", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.9.0.tgz", + "integrity": "sha512-ayVFHdtZ+hsq1t2Dy24wCmGXGe4q9Gu3smhLYALJrr473ZH27MsnSL+LKUlimp4BWJqMDMLmPpx/Q9R3OAlL4g==", "dev": true, "license": "MIT", "dependencies": { @@ -1400,21 +892,23 @@ } }, "node_modules/@eslint-community/regexpp": { - "version": "4.12.1", - "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.1.tgz", - "integrity": "sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==", + "version": "4.12.2", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.2.tgz", + "integrity": "sha512-EriSTlt5OC9/7SXkRSCAhfSxxoSUgBm33OH+IkwbdpgoqsSsUg7y3uh+IICI/Qg4BBWr3U2i39RpmycbxMq4ew==", "dev": true, + "license": "MIT", "engines": { "node": "^12.0.0 || ^14.0.0 || >=16.0.0" } }, "node_modules/@eslint/config-array": { - "version": "0.20.0", - "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.20.0.tgz", - "integrity": "sha512-fxlS1kkIjx8+vy2SjuCB94q3htSNrufYTXubwiBFeaQHbH6Ipi43gFJq2zCMt6PHhImH3Xmr0NksKDvchWlpQQ==", + "version": "0.21.1", + "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.21.1.tgz", + "integrity": "sha512-aw1gNayWpdI/jSYVgzN5pL0cfzU02GT3NBpeT/DXbx1/1x7ZKxFPd9bwrzygx/qiwIQiJ1sw/zD8qY/kRvlGHA==", "dev": true, + "license": "Apache-2.0", "dependencies": { - "@eslint/object-schema": "^2.1.6", + "@eslint/object-schema": "^2.1.7", "debug": "^4.3.1", "minimatch": "^3.1.2" }, @@ -1423,10 +917,11 @@ } }, "node_modules/@eslint/config-array/node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", "dev": true, + "license": "MIT", "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -1437,6 +932,7 @@ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dev": true, + "license": "ISC", "dependencies": { "brace-expansion": "^1.1.7" }, @@ -1445,19 +941,22 @@ } }, "node_modules/@eslint/config-helpers": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/@eslint/config-helpers/-/config-helpers-0.2.2.tgz", - "integrity": "sha512-+GPzk8PlG0sPpzdU5ZvIRMPidzAnZDl/s9L+y13iodqvb8leL53bTannOrQ/Im7UkpsmFU5Ily5U60LWixnmLg==", + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/@eslint/config-helpers/-/config-helpers-0.4.2.tgz", + "integrity": "sha512-gBrxN88gOIf3R7ja5K9slwNayVcZgK6SOUORm2uBzTeIEfeVaIhOpCtTox3P6R7o2jLFwLFTLnC7kU/RGcYEgw==", "dev": true, "license": "Apache-2.0", + "dependencies": { + "@eslint/core": "^0.17.0" + }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" } }, "node_modules/@eslint/core": { - "version": "0.14.0", - "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.14.0.tgz", - "integrity": "sha512-qIbV0/JZr7iSDjqAc60IqbLdsj9GDt16xQtWD+B78d/HAlvysGdZZ6rpJHGAc2T0FQx1X6thsSPdnoiGKdNtdg==", + "version": "0.17.0", + "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.17.0.tgz", + "integrity": "sha512-yL/sLrpmtDaFEiUj1osRP4TI2MDz1AddJL+jZ7KSqvBuliN4xqYY54IfdN8qD8Toa6g1iloph1fxQNkjOxrrpQ==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -1492,9 +991,9 @@ } }, "node_modules/@eslint/eslintrc/node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", "dev": true, "license": "MIT", "dependencies": { @@ -1516,9 +1015,9 @@ } }, "node_modules/@eslint/js": { - "version": "9.27.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.27.0.tgz", - "integrity": "sha512-G5JD9Tu5HJEu4z2Uo4aHY2sLV64B7CDMXxFzqzjl3NKd6RVzSXNoE80jk7Y0lJkTTkjiIhBAqmlYwjuBY3tvpA==", + "version": "9.39.1", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.39.1.tgz", + "integrity": "sha512-S26Stp4zCy88tH94QbBv3XCuzRQiZ9yXofEILmglYTh/Ug/a9/umqvgFtYBAo3Lp0nsI/5/qH1CCrbdK3AP1Tw==", "dev": true, "license": "MIT", "engines": { @@ -1529,22 +1028,23 @@ } }, "node_modules/@eslint/object-schema": { - "version": "2.1.6", - "resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-2.1.6.tgz", - "integrity": "sha512-RBMg5FRL0I0gs51M/guSAj5/e14VQ4tpZnQNWwuDT66P14I43ItmPfIZRhO9fUVIPOAQXU47atlywZ/czoqFPA==", + "version": "2.1.7", + "resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-2.1.7.tgz", + "integrity": "sha512-VtAOaymWVfZcmZbp6E2mympDIHvyjXs/12LqWYjVw6qjrfF+VK+fyG33kChz3nnK+SU5/NeHOqrTEHS8sXO3OA==", "dev": true, + "license": "Apache-2.0", "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" } }, "node_modules/@eslint/plugin-kit": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.3.1.tgz", - "integrity": "sha512-0J+zgWxHN+xXONWIyPWKFMgVuJoZuGiIFu8yxk7RJjxkzpGmyja5wRFqZIVtjDVOQpV+Rw0iOAjYPE2eQyjr0w==", + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.4.1.tgz", + "integrity": "sha512-43/qtrDUokr7LJqoF2c3+RInu/t4zfrpYdoSDfYyhg52rwLV6TnOvdG4fXm7IkSB3wErkcmJS9iEhjVtOSEjjA==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@eslint/core": "^0.14.0", + "@eslint/core": "^0.17.0", "levn": "^0.4.1" }, "engines": { @@ -1565,36 +1065,25 @@ "resolved": "https://registry.npmjs.org/@humanfs/core/-/core-0.19.1.tgz", "integrity": "sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==", "dev": true, + "license": "Apache-2.0", "engines": { "node": ">=18.18.0" } }, "node_modules/@humanfs/node": { - "version": "0.16.6", - "resolved": "https://registry.npmjs.org/@humanfs/node/-/node-0.16.6.tgz", - "integrity": "sha512-YuI2ZHQL78Q5HbhDiBA1X4LmYdXCKCMQIfw0pw7piHJwyREFebJUvrQN4cMssyES6x+vfUbx1CIpaQUKYdQZOw==", + "version": "0.16.7", + "resolved": "https://registry.npmjs.org/@humanfs/node/-/node-0.16.7.tgz", + "integrity": "sha512-/zUx+yOsIrG4Y43Eh2peDeKCxlRt/gET6aHfaKpuq267qXdYDFViVHfMaLyygZOnl0kGWxFIgsBy8QFuTLUXEQ==", "dev": true, + "license": "Apache-2.0", "dependencies": { "@humanfs/core": "^0.19.1", - "@humanwhocodes/retry": "^0.3.0" + "@humanwhocodes/retry": "^0.4.0" }, "engines": { "node": ">=18.18.0" } }, - "node_modules/@humanfs/node/node_modules/@humanwhocodes/retry": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.3.1.tgz", - "integrity": "sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA==", - "dev": true, - "engines": { - "node": ">=18.18" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/nzakas" - } - }, "node_modules/@humanwhocodes/module-importer": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", @@ -1610,9 +1099,9 @@ } }, "node_modules/@humanwhocodes/retry": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.4.2.tgz", - "integrity": "sha512-xeO57FpIu4p1Ri3Jq/EXq4ClRm86dVF2z/+kvFnyqVYRavTZmaFaUBbWCOuuTh0o/g7DSsk6kc2vrS4Vl5oPOQ==", + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.4.3.tgz", + "integrity": "sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ==", "dev": true, "license": "Apache-2.0", "engines": { @@ -1623,806 +1112,810 @@ "url": "https://github.com/sponsors/nzakas" } }, - "node_modules/@istanbuljs/load-nyc-config": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", - "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==", + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.13", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz", + "integrity": "sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==", "dev": true, - "license": "ISC", + "license": "MIT", "dependencies": { - "camelcase": "^5.3.1", - "find-up": "^4.1.0", - "get-package-type": "^0.1.0", - "js-yaml": "^3.13.1", - "resolve-from": "^5.0.0" - }, - "engines": { - "node": ">=8" + "@jridgewell/sourcemap-codec": "^1.5.0", + "@jridgewell/trace-mapping": "^0.3.24" } }, - "node_modules/@istanbuljs/load-nyc-config/node_modules/argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "node_modules/@jridgewell/gen-mapping/node_modules/@jridgewell/trace-mapping": { + "version": "0.3.31", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz", + "integrity": "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==", "dev": true, "license": "MIT", "dependencies": { - "sprintf-js": "~1.0.2" + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" } }, - "node_modules/@istanbuljs/load-nyc-config/node_modules/find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", "dev": true, "license": "MIT", - "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - }, "engines": { - "node": ">=8" + "node": ">=6.0.0" } }, - "node_modules/@istanbuljs/load-nyc-config/node_modules/js-yaml": { - "version": "3.14.2", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.2.tgz", - "integrity": "sha512-PMSmkqxr106Xa156c2M265Z+FTrPl+oxd/rgOQy2tijQeK5TxQ43psO1ZCwhVOSdnn+RzkzlRz/eY4BgJBYVpg==", + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.5.5", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz", + "integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==", + "dev": true, + "license": "MIT" + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz", + "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==", "dev": true, "license": "MIT", "dependencies": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" + "@jridgewell/resolve-uri": "^3.0.3", + "@jridgewell/sourcemap-codec": "^1.4.10" } }, - "node_modules/@istanbuljs/load-nyc-config/node_modules/locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "node_modules/@napi-rs/wasm-runtime": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/@napi-rs/wasm-runtime/-/wasm-runtime-1.0.7.tgz", + "integrity": "sha512-SeDnOO0Tk7Okiq6DbXmmBODgOAb9dp9gjlphokTUxmt8U3liIP1ZsozBahH69j/RJv+Rfs6IwUKHTgQYJ/HBAw==", "dev": true, "license": "MIT", + "optional": true, "dependencies": { - "p-locate": "^4.1.0" - }, - "engines": { - "node": ">=8" + "@emnapi/core": "^1.5.0", + "@emnapi/runtime": "^1.5.0", + "@tybys/wasm-util": "^0.10.1" } }, - "node_modules/@istanbuljs/load-nyc-config/node_modules/p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", "dev": true, "license": "MIT", "dependencies": { - "p-try": "^2.0.0" + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" }, "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">= 8" } }, - "node_modules/@istanbuljs/load-nyc-config/node_modules/p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", "dev": true, "license": "MIT", - "dependencies": { - "p-limit": "^2.2.0" - }, "engines": { - "node": ">=8" + "node": ">= 8" } }, - "node_modules/@istanbuljs/load-nyc-config/node_modules/resolve-from": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", - "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", "dev": true, "license": "MIT", + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, "engines": { - "node": ">=8" + "node": ">= 8" } }, - "node_modules/@istanbuljs/schema": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", - "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", + "node_modules/@oxc-project/runtime": { + "version": "0.96.0", + "resolved": "https://registry.npmjs.org/@oxc-project/runtime/-/runtime-0.96.0.tgz", + "integrity": "sha512-34lh4o9CcSw09Hx6fKihPu85+m+4pmDlkXwJrLvN5nMq5JrcGhhihVM415zDqT8j8IixO1PYYdQZRN4SwQCncg==", "dev": true, "license": "MIT", "engines": { - "node": ">=8" + "node": "^20.19.0 || >=22.12.0" } }, - "node_modules/@jest/console": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/console/-/console-29.7.0.tgz", - "integrity": "sha512-5Ni4CU7XHQi32IJ398EEP4RrB8eV09sXP2ROqD4bksHrnTree52PsxvX8tpL8LvTZ3pFzXyPbNQReSN41CAhOg==", + "node_modules/@oxc-project/types": { + "version": "0.98.0", + "resolved": "https://registry.npmjs.org/@oxc-project/types/-/types-0.98.0.tgz", + "integrity": "sha512-Vzmd6FsqVuz5HQVcRC/hrx7Ujo3WEVeQP7C2UNP5uy1hUY4SQvMB+93jxkI1KRHz9a/6cni3glPOtvteN+zpsw==", "dev": true, "license": "MIT", - "dependencies": { - "@jest/types": "^29.6.3", - "@types/node": "*", - "chalk": "^4.0.0", - "jest-message-util": "^29.7.0", - "jest-util": "^29.7.0", - "slash": "^3.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "funding": { + "url": "https://github.com/sponsors/Boshen" } }, - "node_modules/@jest/core": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/core/-/core-29.7.0.tgz", - "integrity": "sha512-n7aeXWKMnGtDA48y8TLWJPJmLmmZ642Ceo78cYWEpiD7FzDgmNDV/GCVRorPABdXLJZ/9wzzgZAlHjXjxDHGsg==", + "node_modules/@pkgr/core": { + "version": "0.2.9", + "resolved": "https://registry.npmjs.org/@pkgr/core/-/core-0.2.9.tgz", + "integrity": "sha512-QNqXyfVS2wm9hweSYD2O7F0G06uurj9kZ96TRQE5Y9hU7+tgdZwIkbAKc5Ocy1HxEY2kuDQa6cQ1WRs/O5LFKA==", "dev": true, "license": "MIT", - "dependencies": { - "@jest/console": "^29.7.0", - "@jest/reporters": "^29.7.0", - "@jest/test-result": "^29.7.0", - "@jest/transform": "^29.7.0", - "@jest/types": "^29.6.3", - "@types/node": "*", - "ansi-escapes": "^4.2.1", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "exit": "^0.1.2", - "graceful-fs": "^4.2.9", - "jest-changed-files": "^29.7.0", - "jest-config": "^29.7.0", - "jest-haste-map": "^29.7.0", - "jest-message-util": "^29.7.0", - "jest-regex-util": "^29.6.3", - "jest-resolve": "^29.7.0", - "jest-resolve-dependencies": "^29.7.0", - "jest-runner": "^29.7.0", - "jest-runtime": "^29.7.0", - "jest-snapshot": "^29.7.0", - "jest-util": "^29.7.0", - "jest-validate": "^29.7.0", - "jest-watcher": "^29.7.0", - "micromatch": "^4.0.4", - "pretty-format": "^29.7.0", - "slash": "^3.0.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - }, - "peerDependencies": { - "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + "engines": { + "node": "^12.20.0 || ^14.18.0 || >=16.0.0" }, - "peerDependenciesMeta": { - "node-notifier": { - "optional": true - } + "funding": { + "url": "https://opencollective.com/pkgr" } }, - "node_modules/@jest/environment": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-29.7.0.tgz", - "integrity": "sha512-aQIfHDq33ExsN4jP1NWGXhxgQ/wixs60gDiKO+XVMd8Mn0NWPWgc34ZQDTb2jKaUWQ7MuwoitXAsN2XVXNMpAw==", + "node_modules/@quansync/fs": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/@quansync/fs/-/fs-0.1.5.tgz", + "integrity": "sha512-lNS9hL2aS2NZgNW7BBj+6EBl4rOf8l+tQ0eRY6JWCI8jI2kc53gSoqbjojU0OnAWhzoXiOjFyGsHcDGePB3lhA==", "dev": true, "license": "MIT", "dependencies": { - "@jest/fake-timers": "^29.7.0", - "@jest/types": "^29.6.3", - "@types/node": "*", - "jest-mock": "^29.7.0" + "quansync": "^0.2.11" }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "funding": { + "url": "https://github.com/sponsors/sxzz" } }, - "node_modules/@jest/expect": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/expect/-/expect-29.7.0.tgz", - "integrity": "sha512-8uMeAMycttpva3P1lBHB8VciS9V0XAr3GymPpipdyQXbBcuhkLQOSe8E/p92RyAdToS6ZD1tFkX+CkhoECE0dQ==", + "node_modules/@rolldown/binding-android-arm64": { + "version": "1.0.0-beta.51", + "resolved": "https://registry.npmjs.org/@rolldown/binding-android-arm64/-/binding-android-arm64-1.0.0-beta.51.tgz", + "integrity": "sha512-Ctn8FUXKWWQI9pWC61P1yumS9WjQtelNS9riHwV7oCkknPGaAry4o7eFx2KgoLMnI2BgFJYpW7Im8/zX3BuONg==", + "cpu": [ + "arm64" + ], "dev": true, "license": "MIT", - "dependencies": { - "expect": "^29.7.0", - "jest-snapshot": "^29.7.0" - }, + "optional": true, + "os": [ + "android" + ], "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": "^20.19.0 || >=22.12.0" } }, - "node_modules/@jest/expect-utils": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-29.7.0.tgz", - "integrity": "sha512-GlsNBWiFQFCVi9QVSx7f5AgMeLxe9YCCs5PuP2O2LdjDAA8Jh9eX7lA1Jq/xdXw3Wb3hyvlFNfZIfcRetSzYcA==", + "node_modules/@rolldown/binding-darwin-arm64": { + "version": "1.0.0-beta.51", + "resolved": "https://registry.npmjs.org/@rolldown/binding-darwin-arm64/-/binding-darwin-arm64-1.0.0-beta.51.tgz", + "integrity": "sha512-EL1aRW2Oq15ShUEkBPsDtLMO8GTqfb/ktM/dFaVzXKQiEE96Ss6nexMgfgQrg8dGnNpndFyffVDb5IdSibsu1g==", + "cpu": [ + "arm64" + ], "dev": true, "license": "MIT", - "dependencies": { - "jest-get-type": "^29.6.3" - }, + "optional": true, + "os": [ + "darwin" + ], "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": "^20.19.0 || >=22.12.0" } }, - "node_modules/@jest/fake-timers": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-29.7.0.tgz", - "integrity": "sha512-q4DH1Ha4TTFPdxLsqDXK1d3+ioSL7yL5oCMJZgDYm6i+6CygW5E5xVr/D1HdsGxjt1ZWSfUAs9OxSB/BNelWrQ==", + "node_modules/@rolldown/binding-darwin-x64": { + "version": "1.0.0-beta.51", + "resolved": "https://registry.npmjs.org/@rolldown/binding-darwin-x64/-/binding-darwin-x64-1.0.0-beta.51.tgz", + "integrity": "sha512-uGtYKlFen9pMIPvkHPWZVDtmYhMQi5g5Ddsndg1gf3atScKYKYgs5aDP4DhHeTwGXQglhfBG7lEaOIZ4UAIWww==", + "cpu": [ + "x64" + ], "dev": true, "license": "MIT", - "dependencies": { - "@jest/types": "^29.6.3", - "@sinonjs/fake-timers": "^10.0.2", - "@types/node": "*", - "jest-message-util": "^29.7.0", - "jest-mock": "^29.7.0", - "jest-util": "^29.7.0" - }, + "optional": true, + "os": [ + "darwin" + ], "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": "^20.19.0 || >=22.12.0" } }, - "node_modules/@jest/globals": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-29.7.0.tgz", - "integrity": "sha512-mpiz3dutLbkW2MNFubUGUEVLkTGiqW6yLVTA+JbP6fI6J5iL9Y0Nlg8k95pcF8ctKwCS7WVxteBs29hhfAotzQ==", + "node_modules/@rolldown/binding-freebsd-x64": { + "version": "1.0.0-beta.51", + "resolved": "https://registry.npmjs.org/@rolldown/binding-freebsd-x64/-/binding-freebsd-x64-1.0.0-beta.51.tgz", + "integrity": "sha512-JRoVTQtHYbZj1P07JLiuTuXjiBtIa7ag7/qgKA6CIIXnAcdl4LrOf7nfDuHPJcuRKaP5dzecMgY99itvWfmUFQ==", + "cpu": [ + "x64" + ], "dev": true, "license": "MIT", - "dependencies": { - "@jest/environment": "^29.7.0", - "@jest/expect": "^29.7.0", - "@jest/types": "^29.6.3", - "jest-mock": "^29.7.0" - }, + "optional": true, + "os": [ + "freebsd" + ], "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": "^20.19.0 || >=22.12.0" } }, - "node_modules/@jest/reporters": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-29.7.0.tgz", - "integrity": "sha512-DApq0KJbJOEzAFYjHADNNxAE3KbhxQB1y5Kplb5Waqw6zVbuWatSnMjE5gs8FUgEPmNsnZA3NCWl9NG0ia04Pg==", + "node_modules/@rolldown/binding-linux-arm-gnueabihf": { + "version": "1.0.0-beta.51", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm-gnueabihf/-/binding-linux-arm-gnueabihf-1.0.0-beta.51.tgz", + "integrity": "sha512-BKATVnpPZ0TYBW9XfDwyd4kPGgvf964HiotIwUgpMrFOFYWqpZ+9ONNzMV4UFAYC7Hb5C2qgYQk/qj2OnAd4RQ==", + "cpu": [ + "arm" + ], "dev": true, "license": "MIT", - "dependencies": { - "@bcoe/v8-coverage": "^0.2.3", - "@jest/console": "^29.7.0", - "@jest/test-result": "^29.7.0", - "@jest/transform": "^29.7.0", - "@jest/types": "^29.6.3", - "@jridgewell/trace-mapping": "^0.3.18", - "@types/node": "*", - "chalk": "^4.0.0", - "collect-v8-coverage": "^1.0.0", - "exit": "^0.1.2", - "glob": "^7.1.3", - "graceful-fs": "^4.2.9", - "istanbul-lib-coverage": "^3.0.0", - "istanbul-lib-instrument": "^6.0.0", - "istanbul-lib-report": "^3.0.0", - "istanbul-lib-source-maps": "^4.0.0", - "istanbul-reports": "^3.1.3", - "jest-message-util": "^29.7.0", - "jest-util": "^29.7.0", - "jest-worker": "^29.7.0", - "slash": "^3.0.0", - "string-length": "^4.0.1", - "strip-ansi": "^6.0.0", - "v8-to-istanbul": "^9.0.1" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - }, - "peerDependencies": { - "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" - }, - "peerDependenciesMeta": { - "node-notifier": { - "optional": true - } + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" } }, - "node_modules/@jest/schemas": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz", - "integrity": "sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==", + "node_modules/@rolldown/binding-linux-arm64-gnu": { + "version": "1.0.0-beta.51", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-1.0.0-beta.51.tgz", + "integrity": "sha512-xLd7da5jkfbVsBCm1buIRdWtuXY8+hU3+6ESXY/Tk5X5DPHaifrUblhYDgmA34dQt6WyNC2kfXGgrduPEvDI6Q==", + "cpu": [ + "arm64" + ], "dev": true, "license": "MIT", - "dependencies": { - "@sinclair/typebox": "^0.27.8" - }, + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": "^20.19.0 || >=22.12.0" } }, - "node_modules/@jest/source-map": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-29.6.3.tgz", - "integrity": "sha512-MHjT95QuipcPrpLM+8JMSzFx6eHp5Bm+4XeFDJlwsvVBjmKNiIAvasGK2fxz2WbGRlnvqehFbh07MMa7n3YJnw==", + "node_modules/@rolldown/binding-linux-arm64-musl": { + "version": "1.0.0-beta.51", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm64-musl/-/binding-linux-arm64-musl-1.0.0-beta.51.tgz", + "integrity": "sha512-EQFXTgHxxTzv3t5EmjUP/DfxzFYx9sMndfLsYaAY4DWF6KsK1fXGYsiupif6qPTViPC9eVmRm78q0pZU/kuIPg==", + "cpu": [ + "arm64" + ], "dev": true, "license": "MIT", - "dependencies": { - "@jridgewell/trace-mapping": "^0.3.18", - "callsites": "^3.0.0", - "graceful-fs": "^4.2.9" - }, + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": "^20.19.0 || >=22.12.0" } }, - "node_modules/@jest/test-result": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-29.7.0.tgz", - "integrity": "sha512-Fdx+tv6x1zlkJPcWXmMDAG2HBnaR9XPSd5aDWQVsfrZmLVT3lU1cwyxLgRmXR9yrq4NBoEm9BMsfgFzTQAbJYA==", + "node_modules/@rolldown/binding-linux-x64-gnu": { + "version": "1.0.0-beta.51", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-x64-gnu/-/binding-linux-x64-gnu-1.0.0-beta.51.tgz", + "integrity": "sha512-p5P6Xpa68w3yFaAdSzIZJbj+AfuDnMDqNSeglBXM7UlJT14Q4zwK+rV+8Mhp9MiUb4XFISZtbI/seBprhkQbiQ==", + "cpu": [ + "x64" + ], "dev": true, "license": "MIT", - "dependencies": { - "@jest/console": "^29.7.0", - "@jest/types": "^29.6.3", - "@types/istanbul-lib-coverage": "^2.0.0", - "collect-v8-coverage": "^1.0.0" - }, + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": "^20.19.0 || >=22.12.0" } }, - "node_modules/@jest/test-sequencer": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-29.7.0.tgz", - "integrity": "sha512-GQwJ5WZVrKnOJuiYiAF52UNUJXgTZx1NHjFSEB0qEMmSZKAkdMoIzw/Cj6x6NF4AvV23AUqDpFzQkN/eYCYTxw==", + "node_modules/@rolldown/binding-linux-x64-musl": { + "version": "1.0.0-beta.51", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-x64-musl/-/binding-linux-x64-musl-1.0.0-beta.51.tgz", + "integrity": "sha512-sNVVyLa8HB8wkFipdfz1s6i0YWinwpbMWk5hO5S+XAYH2UH67YzUT13gs6wZTKg2x/3gtgXzYnHyF5wMIqoDAw==", + "cpu": [ + "x64" + ], "dev": true, "license": "MIT", - "dependencies": { - "@jest/test-result": "^29.7.0", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^29.7.0", - "slash": "^3.0.0" - }, + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": "^20.19.0 || >=22.12.0" } }, - "node_modules/@jest/transform": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-29.7.0.tgz", - "integrity": "sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw==", + "node_modules/@rolldown/binding-openharmony-arm64": { + "version": "1.0.0-beta.51", + "resolved": "https://registry.npmjs.org/@rolldown/binding-openharmony-arm64/-/binding-openharmony-arm64-1.0.0-beta.51.tgz", + "integrity": "sha512-e/JMTz9Q8+T3g/deEi8DK44sFWZWGKr9AOCW5e8C8SCVWzAXqYXAG7FXBWBNzWEZK0Rcwo9TQHTQ9Q0gXgdCaA==", + "cpu": [ + "arm64" + ], "dev": true, "license": "MIT", - "dependencies": { - "@babel/core": "^7.11.6", - "@jest/types": "^29.6.3", - "@jridgewell/trace-mapping": "^0.3.18", - "babel-plugin-istanbul": "^6.1.1", - "chalk": "^4.0.0", - "convert-source-map": "^2.0.0", - "fast-json-stable-stringify": "^2.1.0", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^29.7.0", - "jest-regex-util": "^29.6.3", - "jest-util": "^29.7.0", - "micromatch": "^4.0.4", - "pirates": "^4.0.4", - "slash": "^3.0.0", - "write-file-atomic": "^4.0.2" - }, + "optional": true, + "os": [ + "openharmony" + ], "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": "^20.19.0 || >=22.12.0" } }, - "node_modules/@jest/types": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", - "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", + "node_modules/@rolldown/binding-wasm32-wasi": { + "version": "1.0.0-beta.51", + "resolved": "https://registry.npmjs.org/@rolldown/binding-wasm32-wasi/-/binding-wasm32-wasi-1.0.0-beta.51.tgz", + "integrity": "sha512-We3LWqSu6J9s5Y0MK+N7fUiiu37aBGPG3Pc347EoaROuAwkCS2u9xJ5dpIyLW4B49CIbS3KaPmn4kTgPb3EyPw==", + "cpu": [ + "wasm32" + ], "dev": true, "license": "MIT", + "optional": true, "dependencies": { - "@jest/schemas": "^29.6.3", - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^17.0.8", - "chalk": "^4.0.0" + "@napi-rs/wasm-runtime": "^1.0.7" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=14.0.0" } }, - "node_modules/@jridgewell/gen-mapping": { - "version": "0.3.5", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz", - "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==", + "node_modules/@rolldown/binding-win32-arm64-msvc": { + "version": "1.0.0-beta.51", + "resolved": "https://registry.npmjs.org/@rolldown/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-1.0.0-beta.51.tgz", + "integrity": "sha512-fj56buHRuMM+r/cb6ZYfNjNvO/0xeFybI6cTkTROJatdP4fvmQ1NS8D/Lm10FCSDEOkqIz8hK3TGpbAThbPHsA==", + "cpu": [ + "arm64" + ], "dev": true, "license": "MIT", - "dependencies": { - "@jridgewell/set-array": "^1.2.1", - "@jridgewell/sourcemap-codec": "^1.4.10", - "@jridgewell/trace-mapping": "^0.3.24" - }, + "optional": true, + "os": [ + "win32" + ], "engines": { - "node": ">=6.0.0" + "node": "^20.19.0 || >=22.12.0" } }, - "node_modules/@jridgewell/resolve-uri": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", - "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", + "node_modules/@rolldown/binding-win32-ia32-msvc": { + "version": "1.0.0-beta.51", + "resolved": "https://registry.npmjs.org/@rolldown/binding-win32-ia32-msvc/-/binding-win32-ia32-msvc-1.0.0-beta.51.tgz", + "integrity": "sha512-fkqEqaeEx8AySXiDm54b/RdINb3C0VovzJA3osMhZsbn6FoD73H0AOIiaVAtGr6x63hefruVKTX8irAm4Jkt2w==", + "cpu": [ + "ia32" + ], "dev": true, "license": "MIT", + "optional": true, + "os": [ + "win32" + ], "engines": { - "node": ">=6.0.0" + "node": "^20.19.0 || >=22.12.0" } }, - "node_modules/@jridgewell/set-array": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", - "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", + "node_modules/@rolldown/binding-win32-x64-msvc": { + "version": "1.0.0-beta.51", + "resolved": "https://registry.npmjs.org/@rolldown/binding-win32-x64-msvc/-/binding-win32-x64-msvc-1.0.0-beta.51.tgz", + "integrity": "sha512-CWuLG/HMtrVcjKGa0C4GnuxONrku89g0+CsH8nT0SNhOtREXuzwgjIXNJImpE/A/DMf9JF+1Xkrq/YRr+F/rCg==", + "cpu": [ + "x64" + ], "dev": true, "license": "MIT", + "optional": true, + "os": [ + "win32" + ], "engines": { - "node": ">=6.0.0" + "node": "^20.19.0 || >=22.12.0" } }, - "node_modules/@jridgewell/sourcemap-codec": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz", - "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==", + "node_modules/@rolldown/pluginutils": { + "version": "1.0.0-beta.51", + "resolved": "https://registry.npmjs.org/@rolldown/pluginutils/-/pluginutils-1.0.0-beta.51.tgz", + "integrity": "sha512-51/8cNXMrqWqX3o8DZidhwz1uYq0BhHDDSfVygAND1Skx5s1TDw3APSSxCMcFFedwgqGcx34gRouwY+m404BBQ==", "dev": true, "license": "MIT" }, - "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.25", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", - "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", + "node_modules/@rollup/rollup-android-arm-eabi": { + "version": "4.53.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.53.3.tgz", + "integrity": "sha512-mRSi+4cBjrRLoaal2PnqH82Wqyb+d3HsPUN/W+WslCXsZsyHa9ZeQQX/pQsZaVIWDkPcpV6jJ+3KLbTbgnwv8w==", + "cpu": [ + "arm" + ], "dev": true, "license": "MIT", - "dependencies": { - "@jridgewell/resolve-uri": "^3.1.0", - "@jridgewell/sourcemap-codec": "^1.4.14" - } + "optional": true, + "os": [ + "android" + ] }, - "node_modules/@nodelib/fs.scandir": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", - "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "node_modules/@rollup/rollup-android-arm64": { + "version": "4.53.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.53.3.tgz", + "integrity": "sha512-CbDGaMpdE9sh7sCmTrTUyllhrg65t6SwhjlMJsLr+J8YjFuPmCEjbBSx4Z/e4SmDyH3aB5hGaJUP2ltV/vcs4w==", + "cpu": [ + "arm64" + ], "dev": true, "license": "MIT", - "dependencies": { - "@nodelib/fs.stat": "2.0.5", - "run-parallel": "^1.1.9" - }, - "engines": { - "node": ">= 8" - } + "optional": true, + "os": [ + "android" + ] }, - "node_modules/@nodelib/fs.stat": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", - "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "node_modules/@rollup/rollup-darwin-arm64": { + "version": "4.53.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.53.3.tgz", + "integrity": "sha512-Nr7SlQeqIBpOV6BHHGZgYBuSdanCXuw09hon14MGOLGmXAFYjx1wNvquVPmpZnl0tLjg25dEdr4IQ6GgyToCUA==", + "cpu": [ + "arm64" + ], "dev": true, "license": "MIT", - "engines": { - "node": ">= 8" - } + "optional": true, + "os": [ + "darwin" + ] }, - "node_modules/@nodelib/fs.walk": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", - "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "node_modules/@rollup/rollup-darwin-x64": { + "version": "4.53.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.53.3.tgz", + "integrity": "sha512-DZ8N4CSNfl965CmPktJ8oBnfYr3F8dTTNBQkRlffnUarJ2ohudQD17sZBa097J8xhQ26AwhHJ5mvUyQW8ddTsQ==", + "cpu": [ + "x64" + ], "dev": true, "license": "MIT", - "dependencies": { - "@nodelib/fs.scandir": "2.1.5", - "fastq": "^1.6.0" - }, - "engines": { - "node": ">= 8" - } + "optional": true, + "os": [ + "darwin" + ] }, - "node_modules/@pkgr/core": { - "version": "0.2.9", - "resolved": "https://registry.npmjs.org/@pkgr/core/-/core-0.2.9.tgz", - "integrity": "sha512-QNqXyfVS2wm9hweSYD2O7F0G06uurj9kZ96TRQE5Y9hU7+tgdZwIkbAKc5Ocy1HxEY2kuDQa6cQ1WRs/O5LFKA==", + "node_modules/@rollup/rollup-freebsd-arm64": { + "version": "4.53.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.53.3.tgz", + "integrity": "sha512-yMTrCrK92aGyi7GuDNtGn2sNW+Gdb4vErx4t3Gv/Tr+1zRb8ax4z8GWVRfr3Jw8zJWvpGHNpss3vVlbF58DZ4w==", + "cpu": [ + "arm64" + ], "dev": true, "license": "MIT", - "engines": { - "node": "^12.20.0 || ^14.18.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/pkgr" - } - }, - "node_modules/@sinclair/typebox": { - "version": "0.27.8", - "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.8.tgz", - "integrity": "sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==", - "dev": true, - "license": "MIT" - }, - "node_modules/@sinonjs/commons": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-3.0.1.tgz", - "integrity": "sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "type-detect": "4.0.8" - } - }, - "node_modules/@sinonjs/fake-timers": { - "version": "10.3.0", - "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-10.3.0.tgz", - "integrity": "sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "@sinonjs/commons": "^3.0.0" - } - }, - "node_modules/@tsconfig/node10": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.11.tgz", - "integrity": "sha512-DcRjDCujK/kCk/cUe8Xz8ZSpm8mS3mNNpta+jGCA6USEDfktlNvm1+IuZ9eTcDbNk41BHwpHHeW+N1lKCz4zOw==", - "dev": true, - "license": "MIT" - }, - "node_modules/@tsconfig/node12": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz", - "integrity": "sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==", - "dev": true, - "license": "MIT" - }, - "node_modules/@tsconfig/node14": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz", - "integrity": "sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==", - "dev": true, - "license": "MIT" + "optional": true, + "os": [ + "freebsd" + ] }, - "node_modules/@tsconfig/node16": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.4.tgz", - "integrity": "sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==", + "node_modules/@rollup/rollup-freebsd-x64": { + "version": "4.53.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.53.3.tgz", + "integrity": "sha512-lMfF8X7QhdQzseM6XaX0vbno2m3hlyZFhwcndRMw8fbAGUGL3WFMBdK0hbUBIUYcEcMhVLr1SIamDeuLBnXS+Q==", + "cpu": [ + "x64" + ], "dev": true, - "license": "MIT" + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] }, - "node_modules/@types/babel__core": { - "version": "7.20.5", - "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz", - "integrity": "sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==", + "node_modules/@rollup/rollup-linux-arm-gnueabihf": { + "version": "4.53.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.53.3.tgz", + "integrity": "sha512-k9oD15soC/Ln6d2Wv/JOFPzZXIAIFLp6B+i14KhxAfnq76ajt0EhYc5YPeX6W1xJkAdItcVT+JhKl1QZh44/qw==", + "cpu": [ + "arm" + ], "dev": true, "license": "MIT", - "dependencies": { - "@babel/parser": "^7.20.7", - "@babel/types": "^7.20.7", - "@types/babel__generator": "*", - "@types/babel__template": "*", - "@types/babel__traverse": "*" - } + "optional": true, + "os": [ + "linux" + ] }, - "node_modules/@types/babel__generator": { - "version": "7.6.8", - "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.8.tgz", - "integrity": "sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw==", + "node_modules/@rollup/rollup-linux-arm-musleabihf": { + "version": "4.53.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.53.3.tgz", + "integrity": "sha512-vTNlKq+N6CK/8UktsrFuc+/7NlEYVxgaEgRXVUVK258Z5ymho29skzW1sutgYjqNnquGwVUObAaxae8rZ6YMhg==", + "cpu": [ + "arm" + ], "dev": true, "license": "MIT", - "dependencies": { - "@babel/types": "^7.0.0" - } + "optional": true, + "os": [ + "linux" + ] }, - "node_modules/@types/babel__template": { - "version": "7.4.4", - "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz", - "integrity": "sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==", + "node_modules/@rollup/rollup-linux-arm64-gnu": { + "version": "4.53.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.53.3.tgz", + "integrity": "sha512-RGrFLWgMhSxRs/EWJMIFM1O5Mzuz3Xy3/mnxJp/5cVhZ2XoCAxJnmNsEyeMJtpK+wu0FJFWz+QF4mjCA7AUQ3w==", + "cpu": [ + "arm64" + ], "dev": true, "license": "MIT", - "dependencies": { - "@babel/parser": "^7.1.0", - "@babel/types": "^7.0.0" - } + "optional": true, + "os": [ + "linux" + ] }, - "node_modules/@types/babel__traverse": { - "version": "7.20.6", - "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.20.6.tgz", - "integrity": "sha512-r1bzfrm0tomOI8g1SzvCaQHo6Lcv6zu0EA+W2kHrt8dyrHQxGzBBL4kdkzIS+jBMV+EYcMAEAqXqYaLJq5rOZg==", + "node_modules/@rollup/rollup-linux-arm64-musl": { + "version": "4.53.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.53.3.tgz", + "integrity": "sha512-kASyvfBEWYPEwe0Qv4nfu6pNkITLTb32p4yTgzFCocHnJLAHs+9LjUu9ONIhvfT/5lv4YS5muBHyuV84epBo/A==", + "cpu": [ + "arm64" + ], "dev": true, "license": "MIT", - "dependencies": { - "@babel/types": "^7.20.7" - } + "optional": true, + "os": [ + "linux" + ] }, - "node_modules/@types/estree": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.6.tgz", - "integrity": "sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==", - "dev": true + "node_modules/@rollup/rollup-linux-loong64-gnu": { + "version": "4.53.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-gnu/-/rollup-linux-loong64-gnu-4.53.3.tgz", + "integrity": "sha512-JiuKcp2teLJwQ7vkJ95EwESWkNRFJD7TQgYmCnrPtlu50b4XvT5MOmurWNrCj3IFdyjBQ5p9vnrX4JM6I8OE7g==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] }, - "node_modules/@types/graceful-fs": { - "version": "4.1.9", - "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.9.tgz", - "integrity": "sha512-olP3sd1qOEe5dXTSaFvQG+02VdRXcdytWLAZsAq1PecU8uqQAhkrnbli7DagjtXKW/Bl7YJbUsa8MPcuc8LHEQ==", + "node_modules/@rollup/rollup-linux-ppc64-gnu": { + "version": "4.53.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.53.3.tgz", + "integrity": "sha512-EoGSa8nd6d3T7zLuqdojxC20oBfNT8nexBbB/rkxgKj5T5vhpAQKKnD+h3UkoMuTyXkP5jTjK/ccNRmQrPNDuw==", + "cpu": [ + "ppc64" + ], "dev": true, "license": "MIT", - "dependencies": { - "@types/node": "*" - } + "optional": true, + "os": [ + "linux" + ] }, - "node_modules/@types/istanbul-lib-coverage": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz", - "integrity": "sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==", + "node_modules/@rollup/rollup-linux-riscv64-gnu": { + "version": "4.53.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.53.3.tgz", + "integrity": "sha512-4s+Wped2IHXHPnAEbIB0YWBv7SDohqxobiiPA1FIWZpX+w9o2i4LezzH/NkFUl8LRci/8udci6cLq+jJQlh+0g==", + "cpu": [ + "riscv64" + ], "dev": true, - "license": "MIT" + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] }, - "node_modules/@types/istanbul-lib-report": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.3.tgz", - "integrity": "sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==", + "node_modules/@rollup/rollup-linux-riscv64-musl": { + "version": "4.53.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.53.3.tgz", + "integrity": "sha512-68k2g7+0vs2u9CxDt5ktXTngsxOQkSEV/xBbwlqYcUrAVh6P9EgMZvFsnHy4SEiUl46Xf0IObWVbMvPrr2gw8A==", + "cpu": [ + "riscv64" + ], "dev": true, "license": "MIT", - "dependencies": { - "@types/istanbul-lib-coverage": "*" - } + "optional": true, + "os": [ + "linux" + ] }, - "node_modules/@types/istanbul-reports": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.4.tgz", - "integrity": "sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==", + "node_modules/@rollup/rollup-linux-s390x-gnu": { + "version": "4.53.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.53.3.tgz", + "integrity": "sha512-VYsFMpULAz87ZW6BVYw3I6sWesGpsP9OPcyKe8ofdg9LHxSbRMd7zrVrr5xi/3kMZtpWL/wC+UIJWJYVX5uTKg==", + "cpu": [ + "s390x" + ], "dev": true, "license": "MIT", - "dependencies": { - "@types/istanbul-lib-report": "*" - } + "optional": true, + "os": [ + "linux" + ] }, - "node_modules/@types/jest": { - "version": "29.5.14", - "resolved": "https://registry.npmjs.org/@types/jest/-/jest-29.5.14.tgz", - "integrity": "sha512-ZN+4sdnLUbo8EVvVc2ao0GFW6oVrQRPn4K2lglySj7APvSrgzxHiNNK99us4WDMi57xxA2yggblIAMNhXOotLQ==", + "node_modules/@rollup/rollup-linux-x64-gnu": { + "version": "4.53.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.53.3.tgz", + "integrity": "sha512-3EhFi1FU6YL8HTUJZ51imGJWEX//ajQPfqWLI3BQq4TlvHy4X0MOr5q3D2Zof/ka0d5FNdPwZXm3Yyib/UEd+w==", + "cpu": [ + "x64" + ], "dev": true, - "dependencies": { - "expect": "^29.0.0", - "pretty-format": "^29.0.0" - } + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] }, - "node_modules/@types/json-schema": { - "version": "7.0.15", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", - "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", + "node_modules/@rollup/rollup-linux-x64-musl": { + "version": "4.53.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.53.3.tgz", + "integrity": "sha512-eoROhjcc6HbZCJr+tvVT8X4fW3/5g/WkGvvmwz/88sDtSJzO7r/blvoBDgISDiCjDRZmHpwud7h+6Q9JxFwq1Q==", + "cpu": [ + "x64" + ], "dev": true, - "license": "MIT" + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] }, - "node_modules/@types/node": { - "version": "22.15.29", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.15.29.tgz", - "integrity": "sha512-LNdjOkUDlU1RZb8e1kOIUpN1qQUlzGkEtbVNo53vbrwDg5om6oduhm4SiUaPW5ASTXhAiP0jInWG8Qx9fVlOeQ==", + "node_modules/@rollup/rollup-openharmony-arm64": { + "version": "4.53.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.53.3.tgz", + "integrity": "sha512-OueLAWgrNSPGAdUdIjSWXw+u/02BRTcnfw9PN41D2vq/JSEPnJnVuBgw18VkN8wcd4fjUs+jFHVM4t9+kBSNLw==", + "cpu": [ + "arm64" + ], "dev": true, "license": "MIT", - "dependencies": { - "undici-types": "~6.21.0" - } + "optional": true, + "os": [ + "openharmony" + ] }, - "node_modules/@types/stack-utils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.3.tgz", - "integrity": "sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==", + "node_modules/@rollup/rollup-win32-arm64-msvc": { + "version": "4.53.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.53.3.tgz", + "integrity": "sha512-GOFuKpsxR/whszbF/bzydebLiXIHSgsEUp6M0JI8dWvi+fFa1TD6YQa4aSZHtpmh2/uAlj/Dy+nmby3TJ3pkTw==", + "cpu": [ + "arm64" + ], "dev": true, - "license": "MIT" + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] }, - "node_modules/@types/yargs": { - "version": "17.0.33", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.33.tgz", - "integrity": "sha512-WpxBCKWPLr4xSsHgz511rFJAM+wS28w2zEO1QDNY5zM/S8ok70NNfztH0xwhqKyaK0OHCbN98LDAZuy1ctxDkA==", + "node_modules/@rollup/rollup-win32-ia32-msvc": { + "version": "4.53.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.53.3.tgz", + "integrity": "sha512-iah+THLcBJdpfZ1TstDFbKNznlzoxa8fmnFYK4V67HvmuNYkVdAywJSoteUszvBQ9/HqN2+9AZghbajMsFT+oA==", + "cpu": [ + "ia32" + ], "dev": true, "license": "MIT", - "dependencies": { - "@types/yargs-parser": "*" - } + "optional": true, + "os": [ + "win32" + ] }, - "node_modules/@types/yargs-parser": { - "version": "21.0.3", - "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.3.tgz", - "integrity": "sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==", + "node_modules/@rollup/rollup-win32-x64-gnu": { + "version": "4.53.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-gnu/-/rollup-win32-x64-gnu-4.53.3.tgz", + "integrity": "sha512-J9QDiOIZlZLdcot5NXEepDkstocktoVjkaKUtqzgzpt2yWjGlbYiKyp05rWwk4nypbYUNoFAztEgixoLaSETkg==", + "cpu": [ + "x64" + ], "dev": true, - "license": "MIT" + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] }, - "node_modules/@typescript-eslint/eslint-plugin": { - "version": "8.32.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.32.1.tgz", - "integrity": "sha512-6u6Plg9nP/J1GRpe/vcjjabo6Uc5YQPAMxsgQyGC/I0RuukiG1wIe3+Vtg3IrSCVJDmqK3j8adrtzXSENRtFgg==", + "node_modules/@rollup/rollup-win32-x64-msvc": { + "version": "4.53.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.53.3.tgz", + "integrity": "sha512-UhTd8u31dXadv0MopwGgNOBpUVROFKWVQgAg5N1ESyCz8AuBcMqm4AuTjrwgQKGDfoFuz02EuMRHQIw/frmYKQ==", + "cpu": [ + "x64" + ], "dev": true, "license": "MIT", - "dependencies": { - "@eslint-community/regexpp": "^4.10.0", - "@typescript-eslint/scope-manager": "8.32.1", - "@typescript-eslint/type-utils": "8.32.1", - "@typescript-eslint/utils": "8.32.1", - "@typescript-eslint/visitor-keys": "8.32.1", - "graphemer": "^1.4.0", - "ignore": "^7.0.0", - "natural-compare": "^1.4.0", - "ts-api-utils": "^2.1.0" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "@typescript-eslint/parser": "^8.0.0 || ^8.0.0-alpha.0", - "eslint": "^8.57.0 || ^9.0.0", - "typescript": ">=4.8.4 <5.9.0" - } + "optional": true, + "os": [ + "win32" + ] }, - "node_modules/@typescript-eslint/eslint-plugin/node_modules/ignore": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-7.0.4.tgz", - "integrity": "sha512-gJzzk+PQNznz8ysRrC0aOkBNVRBDtE1n53IqyqEf3PXrYwomFs5q4pGMizBMJF+ykh03insJ27hB8gSrD2Hn8A==", + "node_modules/@standard-schema/spec": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@standard-schema/spec/-/spec-1.0.0.tgz", + "integrity": "sha512-m2bOd0f2RT9k8QJx1JN85cZYyH1RqFBdlwtkSlf4tBDYLCiiZnv1fIIwacK6cqwXavOydf0NPToMQgpKq+dVlA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@tsconfig/node10": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.12.tgz", + "integrity": "sha512-UCYBaeFvM11aU2y3YPZ//O5Rhj+xKyzy7mvcIoAjASbigy8mHMryP5cK7dgjlz2hWxh1g5pLw084E0a/wlUSFQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/@tsconfig/node12": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz", + "integrity": "sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==", + "dev": true, + "license": "MIT" + }, + "node_modules/@tsconfig/node14": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz", + "integrity": "sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==", + "dev": true, + "license": "MIT" + }, + "node_modules/@tsconfig/node16": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.4.tgz", + "integrity": "sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@tybys/wasm-util": { + "version": "0.10.1", + "resolved": "https://registry.npmjs.org/@tybys/wasm-util/-/wasm-util-0.10.1.tgz", + "integrity": "sha512-9tTaPJLSiejZKx+Bmog4uSubteqTvFrVrURwkmHixBo0G4seD0zUxp98E1DzUBJxLQ3NPwXrGKDiVjwx/DpPsg==", "dev": true, "license": "MIT", - "engines": { - "node": ">= 4" + "optional": true, + "dependencies": { + "tslib": "^2.4.0" } }, - "node_modules/@typescript-eslint/parser": { - "version": "8.32.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.32.1.tgz", - "integrity": "sha512-LKMrmwCPoLhM45Z00O1ulb6jwyVr2kr3XJp+G+tSEZcbauNnScewcQwtJqXDhXeYPDEjZ8C1SjXm015CirEmGg==", + "node_modules/@types/chai": { + "version": "5.2.3", + "resolved": "https://registry.npmjs.org/@types/chai/-/chai-5.2.3.tgz", + "integrity": "sha512-Mw558oeA9fFbv65/y4mHtXDs9bPnFMZAL/jxdPFUpOHHIXX91mcgEHbS5Lahr+pwZFR8A7GQleRWeI6cGFC2UA==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/scope-manager": "8.32.1", - "@typescript-eslint/types": "8.32.1", - "@typescript-eslint/typescript-estree": "8.32.1", - "@typescript-eslint/visitor-keys": "8.32.1", - "debug": "^4.3.4" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^8.57.0 || ^9.0.0", - "typescript": ">=4.8.4 <5.9.0" + "@types/deep-eql": "*", + "assertion-error": "^2.0.1" } }, - "node_modules/@typescript-eslint/scope-manager": { - "version": "8.32.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.32.1.tgz", - "integrity": "sha512-7IsIaIDeZn7kffk7qXC3o6Z4UblZJKV3UBpkvRNpr5NSyLji7tvTcvmnMNYuYLyh26mN8W723xpo3i4MlD33vA==", + "node_modules/@types/deep-eql": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@types/deep-eql/-/deep-eql-4.0.2.tgz", + "integrity": "sha512-c9h9dVVMigMPc4bwTvC5dxqtqJZwQPePsWjPlpSOnojbor6pGqdk541lfA7AqFQr5pB1BRdq0juY9db81BwyFw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/estree": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz", + "integrity": "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/json-schema": { + "version": "7.0.15", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", + "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/node": { + "version": "22.19.1", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.19.1.tgz", + "integrity": "sha512-LCCV0HdSZZZb34qifBsyWlUmok6W7ouER+oQIGBScS8EsZsQbrtFTUrDX4hOl+CS6p7cnNC4td+qrSVGSCTUfQ==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { - "@typescript-eslint/types": "8.32.1", - "@typescript-eslint/visitor-keys": "8.32.1" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" + "undici-types": "~6.21.0" } }, - "node_modules/@typescript-eslint/type-utils": { - "version": "8.32.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.32.1.tgz", - "integrity": "sha512-mv9YpQGA8iIsl5KyUPi+FGLm7+bA4fgXaeRcFKRDRwDMu4iwrSHeDPipwueNXhdIIZltwCJv+NkxftECbIZWfA==", + "node_modules/@typescript-eslint/eslint-plugin": { + "version": "8.47.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.47.0.tgz", + "integrity": "sha512-fe0rz9WJQ5t2iaLfdbDc9T80GJy0AeO453q8C3YCilnGozvOyCG5t+EZtg7j7D88+c3FipfP/x+wzGnh1xp8ZA==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/typescript-estree": "8.32.1", - "@typescript-eslint/utils": "8.32.1", - "debug": "^4.3.4", + "@eslint-community/regexpp": "^4.10.0", + "@typescript-eslint/scope-manager": "8.47.0", + "@typescript-eslint/type-utils": "8.47.0", + "@typescript-eslint/utils": "8.47.0", + "@typescript-eslint/visitor-keys": "8.47.0", + "graphemer": "^1.4.0", + "ignore": "^7.0.0", + "natural-compare": "^1.4.0", "ts-api-utils": "^2.1.0" }, "engines": { @@ -2433,62 +1926,34 @@ "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { + "@typescript-eslint/parser": "^8.47.0", "eslint": "^8.57.0 || ^9.0.0", - "typescript": ">=4.8.4 <5.9.0" - } - }, - "node_modules/@typescript-eslint/types": { - "version": "8.32.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.32.1.tgz", - "integrity": "sha512-YmybwXUJcgGqgAp6bEsgpPXEg6dcCyPyCSr0CAAueacR/CCBi25G3V8gGQ2kRzQRBNol7VQknxMs9HvVa9Rvfg==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" + "typescript": ">=4.8.4 <6.0.0" } }, - "node_modules/@typescript-eslint/typescript-estree": { - "version": "8.32.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.32.1.tgz", - "integrity": "sha512-Y3AP9EIfYwBb4kWGb+simvPaqQoT5oJuzzj9m0i6FCY6SPvlomY2Ei4UEMm7+FXtlNJbor80ximyslzaQF6xhg==", + "node_modules/@typescript-eslint/eslint-plugin/node_modules/ignore": { + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-7.0.5.tgz", + "integrity": "sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==", "dev": true, "license": "MIT", - "dependencies": { - "@typescript-eslint/types": "8.32.1", - "@typescript-eslint/visitor-keys": "8.32.1", - "debug": "^4.3.4", - "fast-glob": "^3.3.2", - "is-glob": "^4.0.3", - "minimatch": "^9.0.4", - "semver": "^7.6.0", - "ts-api-utils": "^2.1.0" - }, "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "typescript": ">=4.8.4 <5.9.0" + "node": ">= 4" } }, - "node_modules/@typescript-eslint/utils": { - "version": "8.32.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.32.1.tgz", - "integrity": "sha512-DsSFNIgLSrc89gpq1LJB7Hm1YpuhK086DRDJSNrewcGvYloWW1vZLHBTIvarKZDcAORIy/uWNx8Gad+4oMpkSA==", + "node_modules/@typescript-eslint/parser": { + "version": "8.47.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.47.0.tgz", + "integrity": "sha512-lJi3PfxVmo0AkEY93ecfN+r8SofEqZNGByvHAI3GBLrvt1Cw6H5k1IM02nSzu0RfUafr2EvFSw0wAsZgubNplQ==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { - "@eslint-community/eslint-utils": "^4.7.0", - "@typescript-eslint/scope-manager": "8.32.1", - "@typescript-eslint/types": "8.32.1", - "@typescript-eslint/typescript-estree": "8.32.1" + "@typescript-eslint/scope-manager": "8.47.0", + "@typescript-eslint/types": "8.47.0", + "@typescript-eslint/typescript-estree": "8.47.0", + "@typescript-eslint/visitor-keys": "8.47.0", + "debug": "^4.3.4" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -2497,1082 +1962,184 @@ "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" }, - "peerDependencies": { - "eslint": "^8.57.0 || ^9.0.0", - "typescript": ">=4.8.4 <5.9.0" - } - }, - "node_modules/@typescript-eslint/visitor-keys": { - "version": "8.32.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.32.1.tgz", - "integrity": "sha512-ar0tjQfObzhSaW3C3QNmTc5ofj0hDoNQ5XWrCy6zDyabdr0TWhCkClp+rywGNj/odAFBVzzJrK4tEq5M4Hmu4w==", - "dev": true, - "license": "MIT", - "dependencies": { - "@typescript-eslint/types": "8.32.1", - "eslint-visitor-keys": "^4.2.0" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/visitor-keys/node_modules/eslint-visitor-keys": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.0.tgz", - "integrity": "sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/acorn": { - "version": "8.14.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.14.0.tgz", - "integrity": "sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==", - "dev": true, - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/acorn-jsx": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", - "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", - "dev": true, - "license": "MIT", - "peerDependencies": { - "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" - } - }, - "node_modules/acorn-walk": { - "version": "8.3.4", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.4.tgz", - "integrity": "sha512-ueEepnujpqee2o5aIYnvHU6C0A42MNdsIDeqy5BydrkuC5R1ZuUFnm27EeFJGoEHJQgn3uleRvmTXaJgfXbt4g==", - "dev": true, - "license": "MIT", - "dependencies": { - "acorn": "^8.11.0" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/agent-base": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.1.tgz", - "integrity": "sha512-H0TSyFNDMomMNJQBn8wFV5YC/2eJ+VXECwOadZJT554xP6cODZHPX3H9QMQECxvrgiSOP1pHjy1sMWQVYJOUOA==", - "license": "MIT", - "dependencies": { - "debug": "^4.3.4" - }, - "engines": { - "node": ">= 14" - } - }, - "node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dev": true, - "license": "MIT", - "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/ansi-escapes": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", - "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "type-fest": "^0.21.3" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/ansi-escapes/node_modules/type-fest": { - "version": "0.21.3", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", - "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", - "dev": true, - "license": "(MIT OR CC0-1.0)", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/anymatch": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", - "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", - "dev": true, - "license": "ISC", - "dependencies": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/arg": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", - "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==", - "dev": true, - "license": "MIT" - }, - "node_modules/argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", - "dev": true, - "license": "Python-2.0" - }, - "node_modules/async": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/async/-/async-3.2.6.tgz", - "integrity": "sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA==", - "dev": true, - "license": "MIT" - }, - "node_modules/babel-jest": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-29.7.0.tgz", - "integrity": "sha512-BrvGY3xZSwEcCzKvKsCi2GgHqDqsYkOP4/by5xCgIwGXQxIEh+8ew3gmrE1y7XRR6LHZIj6yLYnUi/mm2KXKBg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/transform": "^29.7.0", - "@types/babel__core": "^7.1.14", - "babel-plugin-istanbul": "^6.1.1", - "babel-preset-jest": "^29.6.3", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.9", - "slash": "^3.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - }, - "peerDependencies": { - "@babel/core": "^7.8.0" - } - }, - "node_modules/babel-plugin-istanbul": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz", - "integrity": "sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "@babel/helper-plugin-utils": "^7.0.0", - "@istanbuljs/load-nyc-config": "^1.0.0", - "@istanbuljs/schema": "^0.1.2", - "istanbul-lib-instrument": "^5.0.4", - "test-exclude": "^6.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/babel-plugin-istanbul/node_modules/istanbul-lib-instrument": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz", - "integrity": "sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "@babel/core": "^7.12.3", - "@babel/parser": "^7.14.7", - "@istanbuljs/schema": "^0.1.2", - "istanbul-lib-coverage": "^3.2.0", - "semver": "^6.3.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/babel-plugin-istanbul/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/babel-plugin-jest-hoist": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-29.6.3.tgz", - "integrity": "sha512-ESAc/RJvGTFEzRwOTT4+lNDk/GNHMkKbNzsvT0qKRfDyyYTskxB5rnU2njIDYVxXCBHHEI1c0YwHob3WaYujOg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/template": "^7.3.3", - "@babel/types": "^7.3.3", - "@types/babel__core": "^7.1.14", - "@types/babel__traverse": "^7.0.6" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/babel-preset-current-node-syntax": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.1.0.tgz", - "integrity": "sha512-ldYss8SbBlWva1bs28q78Ju5Zq1F+8BrqBZZ0VFhLBvhh6lCpC2o3gDJi/5DRLs9FgYZCnmPYIVFU4lRXCkyUw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/plugin-syntax-async-generators": "^7.8.4", - "@babel/plugin-syntax-bigint": "^7.8.3", - "@babel/plugin-syntax-class-properties": "^7.12.13", - "@babel/plugin-syntax-class-static-block": "^7.14.5", - "@babel/plugin-syntax-import-attributes": "^7.24.7", - "@babel/plugin-syntax-import-meta": "^7.10.4", - "@babel/plugin-syntax-json-strings": "^7.8.3", - "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", - "@babel/plugin-syntax-numeric-separator": "^7.10.4", - "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", - "@babel/plugin-syntax-optional-chaining": "^7.8.3", - "@babel/plugin-syntax-private-property-in-object": "^7.14.5", - "@babel/plugin-syntax-top-level-await": "^7.14.5" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/babel-preset-jest": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-29.6.3.tgz", - "integrity": "sha512-0B3bhxR6snWXJZtR/RliHTDPRgn1sNHOR0yVtq/IiQFyuOVjFS+wuio/R4gSNkyYmKmJB4wGZv2NZanmKmTnNA==", - "dev": true, - "license": "MIT", - "dependencies": { - "babel-plugin-jest-hoist": "^29.6.3", - "babel-preset-current-node-syntax": "^1.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "dev": true, - "license": "MIT" - }, - "node_modules/bicep-node": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/bicep-node/-/bicep-node-0.0.8.tgz", - "integrity": "sha512-SnX3kgubsKkAy4bMtYyLcDiY9d+xmESo5KXvtN2W6c50kKL49a0icp/XFLDXbsHcnvro7gAIpwGvIOZPauIZwQ==", - "license": "MIT", - "dependencies": { - "node-fetch": "^2.7.0", - "vscode-jsonrpc": "^8.2.0" - } - }, - "node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dev": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/braces": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", - "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", - "dev": true, - "license": "MIT", - "dependencies": { - "fill-range": "^7.1.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/browserslist": { - "version": "4.23.3", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.23.3.tgz", - "integrity": "sha512-btwCFJVjI4YWDNfau8RhZ+B1Q/VLoUITrm3RlP6y1tYGWIOa+InuYiRGXUBXo8nA1qKmHMyLB/iVQg5TT4eFoA==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/browserslist" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "license": "MIT", - "dependencies": { - "caniuse-lite": "^1.0.30001646", - "electron-to-chromium": "^1.5.4", - "node-releases": "^2.0.18", - "update-browserslist-db": "^1.1.0" - }, - "bin": { - "browserslist": "cli.js" - }, - "engines": { - "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" - } - }, - "node_modules/bs-logger": { - "version": "0.2.6", - "resolved": "https://registry.npmjs.org/bs-logger/-/bs-logger-0.2.6.tgz", - "integrity": "sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==", - "dev": true, - "license": "MIT", - "dependencies": { - "fast-json-stable-stringify": "2.x" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/bser": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz", - "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "node-int64": "^0.4.0" - } - }, - "node_modules/buffer-equal-constant-time": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz", - "integrity": "sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA==" - }, - "node_modules/buffer-from": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", - "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/bundle-name": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/bundle-name/-/bundle-name-4.1.0.tgz", - "integrity": "sha512-tjwM5exMg6BGRI+kNmTntNsvdZS1X8BFYS6tnJ2hdH0kVxM6/eVZ2xy+FqStSWvYmtfFMDLIxurorHwDKfDz5Q==", - "dependencies": { - "run-applescript": "^7.0.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/callsites": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/caniuse-lite": { - "version": "1.0.30001660", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001660.tgz", - "integrity": "sha512-GacvNTTuATm26qC74pt+ad1fW15mlQ/zuTzzY1ZoIzECTP8HURDfF43kNxPgf7H1jmelCBQTTbBNxdSXOA7Bqg==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/caniuse-lite" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "license": "CC-BY-4.0" - }, - "node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/char-regex": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz", - "integrity": "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - } - }, - "node_modules/ci-info": { - "version": "3.9.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz", - "integrity": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/sibiraj-s" - } - ], - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/cjs-module-lexer": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.4.1.tgz", - "integrity": "sha512-cuSVIHi9/9E/+821Qjdvngor+xpnlwnuwIyZOaLmHBVdXL+gP+I6QQB9VkO7RI77YIcTV+S1W9AreJ5eN63JBA==", - "dev": true, - "license": "MIT" - }, - "node_modules/cliui": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", - "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", - "dev": true, - "license": "ISC", - "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.1", - "wrap-ansi": "^7.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/co": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", - "integrity": "sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==", - "dev": true, - "license": "MIT", - "engines": { - "iojs": ">= 1.0.0", - "node": ">= 0.12.0" - } - }, - "node_modules/collect-v8-coverage": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.2.tgz", - "integrity": "sha512-lHl4d5/ONEbLlJvaJNtsF/Lz+WvB07u2ycqTYbdrq7UypDXailES4valYb2eWiJFxZlVmpGekfqoxQhzyFdT4Q==", - "dev": true, - "license": "MIT" - }, - "node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true, - "license": "MIT" - }, - "node_modules/concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", - "dev": true, - "license": "MIT" - }, - "node_modules/convert-source-map": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", - "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", - "dev": true, - "license": "MIT" - }, - "node_modules/create-jest": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/create-jest/-/create-jest-29.7.0.tgz", - "integrity": "sha512-Adz2bdH0Vq3F53KEMJOoftQFutWCukm6J24wbPWRO4k1kMY7gS7ds/uoJkNuV8wDCtWWnuwGcJwpWcih+zEW1Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/types": "^29.6.3", - "chalk": "^4.0.0", - "exit": "^0.1.2", - "graceful-fs": "^4.2.9", - "jest-config": "^29.7.0", - "jest-util": "^29.7.0", - "prompts": "^2.0.1" - }, - "bin": { - "create-jest": "bin/create-jest.js" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/create-require": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", - "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/cross-spawn": { - "version": "7.0.6", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", - "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", - "dev": true, - "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/debug": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.1.tgz", - "integrity": "sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==", - "license": "MIT", - "dependencies": { - "ms": "^2.1.3" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/dedent": { - "version": "1.5.3", - "resolved": "https://registry.npmjs.org/dedent/-/dedent-1.5.3.tgz", - "integrity": "sha512-NHQtfOOW68WD8lgypbLA5oT+Bt0xXJhiYvoR6SmmNXZfpzOGXwdKWmcwG8N7PwVVWV3eF/68nmD9BaJSsTBhyQ==", - "dev": true, - "license": "MIT", - "peerDependencies": { - "babel-plugin-macros": "^3.1.0" - }, - "peerDependenciesMeta": { - "babel-plugin-macros": { - "optional": true - } - } - }, - "node_modules/deep-is": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", - "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/deepmerge": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", - "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/default-browser": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/default-browser/-/default-browser-5.2.1.tgz", - "integrity": "sha512-WY/3TUME0x3KPYdRRxEJJvXRHV4PyPoUsxtZa78lwItwRQRHhd2U9xOscaT/YTf8uCXIAjeJOFBVEh/7FtD8Xg==", - "dependencies": { - "bundle-name": "^4.1.0", - "default-browser-id": "^5.0.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/default-browser-id": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/default-browser-id/-/default-browser-id-5.0.0.tgz", - "integrity": "sha512-A6p/pu/6fyBcA1TRz/GqWYPViplrftcW2gZC9q79ngNCKAeR/X3gcEdXQHl4KNXV+3wgIJ1CPkJQ3IHM6lcsyA==", - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/define-lazy-prop": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-3.0.0.tgz", - "integrity": "sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/detect-newline": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz", - "integrity": "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/diff": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", - "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", - "dev": true, - "license": "BSD-3-Clause", - "engines": { - "node": ">=0.3.1" - } - }, - "node_modules/diff-sequences": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.6.3.tgz", - "integrity": "sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/ecdsa-sig-formatter": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz", - "integrity": "sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==", - "dependencies": { - "safe-buffer": "^5.0.1" - } - }, - "node_modules/ejs": { - "version": "3.1.10", - "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.10.tgz", - "integrity": "sha512-UeJmFfOrAQS8OJWPZ4qtgHyWExa088/MtK5UEyoJGFH67cDEXkZSviOiKRCZ4Xij0zxI3JECgYs3oKx+AizQBA==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "jake": "^10.8.5" - }, - "bin": { - "ejs": "bin/cli.js" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/electron-to-chromium": { - "version": "1.5.21", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.21.tgz", - "integrity": "sha512-+rBAerCpQvFSPyAO677i5gJuWGO2WFsoujENdcMzsrpP7Ebcc3pmpERgU8CV4fFF10a5haP4ivnFQ/AmLICBVg==", - "dev": true, - "license": "ISC" - }, - "node_modules/emittery": { - "version": "0.13.1", - "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.13.1.tgz", - "integrity": "sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sindresorhus/emittery?sponsor=1" - } - }, - "node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true, - "license": "MIT" - }, - "node_modules/error-ex": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", - "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-arrayish": "^0.2.1" - } - }, - "node_modules/esbuild": { - "version": "0.25.8", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.8.tgz", - "integrity": "sha512-vVC0USHGtMi8+R4Kz8rt6JhEWLxsv9Rnu/lGYbPR8u47B+DCBksq9JarW0zOO7bs37hyOK1l2/oqtbciutL5+Q==", - "dev": true, - "hasInstallScript": true, - "license": "MIT", - "bin": { - "esbuild": "bin/esbuild" - }, - "engines": { - "node": ">=18" - }, - "optionalDependencies": { - "@esbuild/aix-ppc64": "0.25.8", - "@esbuild/android-arm": "0.25.8", - "@esbuild/android-arm64": "0.25.8", - "@esbuild/android-x64": "0.25.8", - "@esbuild/darwin-arm64": "0.25.8", - "@esbuild/darwin-x64": "0.25.8", - "@esbuild/freebsd-arm64": "0.25.8", - "@esbuild/freebsd-x64": "0.25.8", - "@esbuild/linux-arm": "0.25.8", - "@esbuild/linux-arm64": "0.25.8", - "@esbuild/linux-ia32": "0.25.8", - "@esbuild/linux-loong64": "0.25.8", - "@esbuild/linux-mips64el": "0.25.8", - "@esbuild/linux-ppc64": "0.25.8", - "@esbuild/linux-riscv64": "0.25.8", - "@esbuild/linux-s390x": "0.25.8", - "@esbuild/linux-x64": "0.25.8", - "@esbuild/netbsd-arm64": "0.25.8", - "@esbuild/netbsd-x64": "0.25.8", - "@esbuild/openbsd-arm64": "0.25.8", - "@esbuild/openbsd-x64": "0.25.8", - "@esbuild/openharmony-arm64": "0.25.8", - "@esbuild/sunos-x64": "0.25.8", - "@esbuild/win32-arm64": "0.25.8", - "@esbuild/win32-ia32": "0.25.8", - "@esbuild/win32-x64": "0.25.8" - } - }, - "node_modules/escalade": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", - "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <6.0.0" } }, - "node_modules/escape-string-regexp": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", - "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "node_modules/@typescript-eslint/project-service": { + "version": "8.47.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.47.0.tgz", + "integrity": "sha512-2X4BX8hUeB5JcA1TQJ7GjcgulXQ+5UkNb0DL8gHsHUHdFoiCTJoYLTpib3LtSDPZsRET5ygN4qqIWrHyYIKERA==", "dev": true, "license": "MIT", + "dependencies": { + "@typescript-eslint/tsconfig-utils": "^8.47.0", + "@typescript-eslint/types": "^8.47.0", + "debug": "^4.3.4" + }, "engines": { - "node": ">=10" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "typescript": ">=4.8.4 <6.0.0" } }, - "node_modules/eslint": { - "version": "9.27.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.27.0.tgz", - "integrity": "sha512-ixRawFQuMB9DZ7fjU3iGGganFDp3+45bPOdaRurcFHSXO1e/sYwUX/FtQZpLZJR6SjMoJH8hR2pPEAfDyCoU2Q==", + "node_modules/@typescript-eslint/scope-manager": { + "version": "8.47.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.47.0.tgz", + "integrity": "sha512-a0TTJk4HXMkfpFkL9/WaGTNuv7JWfFTQFJd6zS9dVAjKsojmv9HT55xzbEpnZoY+VUb+YXLMp+ihMLz/UlZfDg==", "dev": true, "license": "MIT", "dependencies": { - "@eslint-community/eslint-utils": "^4.2.0", - "@eslint-community/regexpp": "^4.12.1", - "@eslint/config-array": "^0.20.0", - "@eslint/config-helpers": "^0.2.1", - "@eslint/core": "^0.14.0", - "@eslint/eslintrc": "^3.3.1", - "@eslint/js": "9.27.0", - "@eslint/plugin-kit": "^0.3.1", - "@humanfs/node": "^0.16.6", - "@humanwhocodes/module-importer": "^1.0.1", - "@humanwhocodes/retry": "^0.4.2", - "@types/estree": "^1.0.6", - "@types/json-schema": "^7.0.15", - "ajv": "^6.12.4", - "chalk": "^4.0.0", - "cross-spawn": "^7.0.6", - "debug": "^4.3.2", - "escape-string-regexp": "^4.0.0", - "eslint-scope": "^8.3.0", - "eslint-visitor-keys": "^4.2.0", - "espree": "^10.3.0", - "esquery": "^1.5.0", - "esutils": "^2.0.2", - "fast-deep-equal": "^3.1.3", - "file-entry-cache": "^8.0.0", - "find-up": "^5.0.0", - "glob-parent": "^6.0.2", - "ignore": "^5.2.0", - "imurmurhash": "^0.1.4", - "is-glob": "^4.0.0", - "json-stable-stringify-without-jsonify": "^1.0.1", - "lodash.merge": "^4.6.2", - "minimatch": "^3.1.2", - "natural-compare": "^1.4.0", - "optionator": "^0.9.3" - }, - "bin": { - "eslint": "bin/eslint.js" + "@typescript-eslint/types": "8.47.0", + "@typescript-eslint/visitor-keys": "8.47.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { - "url": "https://eslint.org/donate" - }, - "peerDependencies": { - "jiti": "*" - }, - "peerDependenciesMeta": { - "jiti": { - "optional": true - } + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/eslint-config-prettier": { - "version": "10.1.5", - "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-10.1.5.tgz", - "integrity": "sha512-zc1UmCpNltmVY34vuLRV61r1K27sWuX39E+uyUnY8xS2Bex88VV9cugG+UZbRSRGtGyFboj+D8JODyme1plMpw==", + "node_modules/@typescript-eslint/tsconfig-utils": { + "version": "8.47.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.47.0.tgz", + "integrity": "sha512-ybUAvjy4ZCL11uryalkKxuT3w3sXJAuWhOoGS3T/Wu+iUu1tGJmk5ytSY8gbdACNARmcYEB0COksD2j6hfGK2g==", "dev": true, "license": "MIT", - "bin": { - "eslint-config-prettier": "bin/cli.js" + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { - "url": "https://opencollective.com/eslint-config-prettier" + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "eslint": ">=7.0.0" + "typescript": ">=4.8.4 <6.0.0" } }, - "node_modules/eslint-plugin-jest": { - "version": "29.0.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-jest/-/eslint-plugin-jest-29.0.1.tgz", - "integrity": "sha512-EE44T0OSMCeXhDrrdsbKAhprobKkPtJTbQz5yEktysNpHeDZTAL1SfDTNKmcFfJkY6yrQLtTKZALrD3j/Gpmiw==", + "node_modules/@typescript-eslint/type-utils": { + "version": "8.47.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.47.0.tgz", + "integrity": "sha512-QC9RiCmZ2HmIdCEvhd1aJELBlD93ErziOXXlHEZyuBo3tBiAZieya0HLIxp+DoDWlsQqDawyKuNEhORyku+P8A==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/utils": "^8.0.0" + "@typescript-eslint/types": "8.47.0", + "@typescript-eslint/typescript-estree": "8.47.0", + "@typescript-eslint/utils": "8.47.0", + "debug": "^4.3.4", + "ts-api-utils": "^2.1.0" }, "engines": { - "node": "^20.12.0 || ^22.0.0 || >=24.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "@typescript-eslint/eslint-plugin": "^8.0.0", "eslint": "^8.57.0 || ^9.0.0", - "jest": "*" - }, - "peerDependenciesMeta": { - "@typescript-eslint/eslint-plugin": { - "optional": true - }, - "jest": { - "optional": true - } + "typescript": ">=4.8.4 <6.0.0" } }, - "node_modules/eslint-plugin-notice": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-notice/-/eslint-plugin-notice-1.0.0.tgz", - "integrity": "sha512-M3VLQMZzZpvfTZ/vy9FmClIKq5rLBbQpM0KgfLZPJPrVXpmJYeobmmb+lfJzHWdNm8PWwvw8KlafQWo2N9xx1Q==", + "node_modules/@typescript-eslint/types": { + "version": "8.47.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.47.0.tgz", + "integrity": "sha512-nHAE6bMKsizhA2uuYZbEbmp5z2UpffNrPEqiKIeN7VsV6UY/roxanWfoRrf6x/k9+Obf+GQdkm0nPU+vnMXo9A==", "dev": true, "license": "MIT", - "dependencies": { - "find-root": "^1.1.0", - "lodash": "^4.17.21", - "metric-lcs": "^0.1.2" + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, - "peerDependencies": { - "eslint": ">=3.0.0" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/eslint-plugin-prettier": { - "version": "5.5.4", - "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-5.5.4.tgz", - "integrity": "sha512-swNtI95SToIz05YINMA6Ox5R057IMAmWZ26GqPxusAp1TZzj+IdY9tXNWWD3vkF/wEqydCONcwjTFpxybBqZsg==", + "node_modules/@typescript-eslint/typescript-estree": { + "version": "8.47.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.47.0.tgz", + "integrity": "sha512-k6ti9UepJf5NpzCjH31hQNLHQWupTRPhZ+KFF8WtTuTpy7uHPfeg2NM7cP27aCGajoEplxJDFVCEm9TGPYyiVg==", "dev": true, "license": "MIT", "dependencies": { - "prettier-linter-helpers": "^1.0.0", - "synckit": "^0.11.7" + "@typescript-eslint/project-service": "8.47.0", + "@typescript-eslint/tsconfig-utils": "8.47.0", + "@typescript-eslint/types": "8.47.0", + "@typescript-eslint/visitor-keys": "8.47.0", + "debug": "^4.3.4", + "fast-glob": "^3.3.2", + "is-glob": "^4.0.3", + "minimatch": "^9.0.4", + "semver": "^7.6.0", + "ts-api-utils": "^2.1.0" }, "engines": { - "node": "^14.18.0 || >=16.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { - "url": "https://opencollective.com/eslint-plugin-prettier" + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "@types/eslint": ">=8.0.0", - "eslint": ">=8.0.0", - "eslint-config-prettier": ">= 7.0.0 <10.0.0 || >=10.1.0", - "prettier": ">=3.0.0" - }, - "peerDependenciesMeta": { - "@types/eslint": { - "optional": true - }, - "eslint-config-prettier": { - "optional": true - } + "typescript": ">=4.8.4 <6.0.0" } }, - "node_modules/eslint-scope": { - "version": "8.3.0", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.3.0.tgz", - "integrity": "sha512-pUNxi75F8MJ/GdeKtVLSbYg4ZI34J6C0C7sbL4YOp2exGwen7ZsuBqKzUhXd0qMQ362yET3z+uPwKeg/0C2XCQ==", + "node_modules/@typescript-eslint/utils": { + "version": "8.47.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.47.0.tgz", + "integrity": "sha512-g7XrNf25iL4TJOiPqatNuaChyqt49a/onq5YsJ9+hXeugK+41LVg7AxikMfM02PC6jbNtZLCJj6AUcQXJS/jGQ==", "dev": true, - "license": "BSD-2-Clause", + "license": "MIT", "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^5.2.0" + "@eslint-community/eslint-utils": "^4.7.0", + "@typescript-eslint/scope-manager": "8.47.0", + "@typescript-eslint/types": "8.47.0", + "@typescript-eslint/typescript-estree": "8.47.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/eslint-visitor-keys": { - "version": "3.4.3", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", - "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" }, - "funding": { - "url": "https://opencollective.com/eslint" + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <6.0.0" } }, - "node_modules/eslint/node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "node_modules/@typescript-eslint/visitor-keys": { + "version": "8.47.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.47.0.tgz", + "integrity": "sha512-SIV3/6eftCy1bNzCQoPmbWsRLujS8t5iDIZ4spZOBHqrM+yfX2ogg8Tt3PDTAVKw3sSCiUgg30uOAvK2r9zGjQ==", "dev": true, "license": "MIT", "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" + "@typescript-eslint/types": "8.47.0", + "eslint-visitor-keys": "^4.2.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/eslint/node_modules/eslint-visitor-keys": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.0.tgz", - "integrity": "sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==", + "node_modules/@typescript-eslint/visitor-keys/node_modules/eslint-visitor-keys": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz", + "integrity": "sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==", "dev": true, + "license": "Apache-2.0", "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, @@ -3580,1459 +2147,1300 @@ "url": "https://opencollective.com/eslint" } }, - "node_modules/eslint/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, - "license": "ISC", + "node_modules/@typespec/ts-http-runtime": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/@typespec/ts-http-runtime/-/ts-http-runtime-0.3.2.tgz", + "integrity": "sha512-IlqQ/Gv22xUC1r/WQm4StLkYQmaaTsXAhUVsNE0+xiyf0yRFiH5++q78U3bw6bLKDCTmh0uqKB9eG9+Bt75Dkg==", + "license": "MIT", "dependencies": { - "brace-expansion": "^1.1.7" + "http-proxy-agent": "^7.0.0", + "https-proxy-agent": "^7.0.0", + "tslib": "^2.6.2" }, "engines": { - "node": "*" + "node": ">=20.0.0" } }, - "node_modules/espree": { - "version": "10.3.0", - "resolved": "https://registry.npmjs.org/espree/-/espree-10.3.0.tgz", - "integrity": "sha512-0QYC8b24HWY8zjRnDTL6RiHfDbAWn63qb4LMj1Z4b076A4une81+z03Kg7l7mn/48PUTqoLptSXez8oknU8Clg==", + "node_modules/@vitest/eslint-plugin": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/@vitest/eslint-plugin/-/eslint-plugin-1.4.3.tgz", + "integrity": "sha512-ba+YDKyZdViNAOg8P86a9tIEawPA/O+nLbwhg8g7nkqsLOAVum6GoZhkNxgwX621oqWAbB8N2xb+G5kkpXehcA==", "dev": true, - "license": "BSD-2-Clause", + "license": "MIT", "dependencies": { - "acorn": "^8.14.0", - "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^4.2.0" + "@typescript-eslint/scope-manager": "^8.46.1", + "@typescript-eslint/utils": "^8.46.1" }, "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + "node": ">=18" }, - "funding": { - "url": "https://opencollective.com/eslint" + "peerDependencies": { + "eslint": ">=8.57.0", + "typescript": ">=5.0.0", + "vitest": "*" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + }, + "vitest": { + "optional": true + } } }, - "node_modules/espree/node_modules/eslint-visitor-keys": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.0.tgz", - "integrity": "sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==", + "node_modules/@vitest/expect": { + "version": "4.0.13", + "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-4.0.13.tgz", + "integrity": "sha512-zYtcnNIBm6yS7Gpr7nFTmq8ncowlMdOJkWLqYvhr/zweY6tFbDkDi8BPPOeHxEtK1rSI69H7Fd4+1sqvEGli6w==", "dev": true, - "license": "Apache-2.0", - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + "license": "MIT", + "dependencies": { + "@standard-schema/spec": "^1.0.0", + "@types/chai": "^5.2.2", + "@vitest/spy": "4.0.13", + "@vitest/utils": "4.0.13", + "chai": "^6.2.1", + "tinyrainbow": "^3.0.3" }, "funding": { - "url": "https://opencollective.com/eslint" + "url": "https://opencollective.com/vitest" } }, - "node_modules/esprima": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "node_modules/@vitest/mocker": { + "version": "4.0.13", + "resolved": "https://registry.npmjs.org/@vitest/mocker/-/mocker-4.0.13.tgz", + "integrity": "sha512-eNCwzrI5djoauklwP1fuslHBjrbR8rqIVbvNlAnkq1OTa6XT+lX68mrtPirNM9TnR69XUPt4puBCx2Wexseylg==", "dev": true, - "license": "BSD-2-Clause", - "bin": { - "esparse": "bin/esparse.js", - "esvalidate": "bin/esvalidate.js" + "license": "MIT", + "dependencies": { + "@vitest/spy": "4.0.13", + "estree-walker": "^3.0.3", + "magic-string": "^0.30.21" }, - "engines": { - "node": ">=4" + "funding": { + "url": "https://opencollective.com/vitest" + }, + "peerDependencies": { + "msw": "^2.4.9", + "vite": "^6.0.0 || ^7.0.0-0" + }, + "peerDependenciesMeta": { + "msw": { + "optional": true + }, + "vite": { + "optional": true + } } }, - "node_modules/esquery": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.6.0.tgz", - "integrity": "sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==", + "node_modules/@vitest/pretty-format": { + "version": "4.0.13", + "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-4.0.13.tgz", + "integrity": "sha512-ooqfze8URWbI2ozOeLDMh8YZxWDpGXoeY3VOgcDnsUxN0jPyPWSUvjPQWqDGCBks+opWlN1E4oP1UYl3C/2EQA==", "dev": true, - "license": "BSD-3-Clause", + "license": "MIT", "dependencies": { - "estraverse": "^5.1.0" + "tinyrainbow": "^3.0.3" }, - "engines": { - "node": ">=0.10" + "funding": { + "url": "https://opencollective.com/vitest" } }, - "node_modules/esrecurse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", - "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "node_modules/@vitest/runner": { + "version": "4.0.13", + "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-4.0.13.tgz", + "integrity": "sha512-9IKlAru58wcVaWy7hz6qWPb2QzJTKt+IOVKjAx5vb5rzEFPTL6H4/R9BMvjZ2ppkxKgTrFONEJFtzvnyEpiT+A==", "dev": true, - "license": "BSD-2-Clause", + "license": "MIT", "dependencies": { - "estraverse": "^5.2.0" + "@vitest/utils": "4.0.13", + "pathe": "^2.0.3" }, - "engines": { - "node": ">=4.0" + "funding": { + "url": "https://opencollective.com/vitest" } }, - "node_modules/estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "node_modules/@vitest/snapshot": { + "version": "4.0.13", + "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-4.0.13.tgz", + "integrity": "sha512-hb7Usvyika1huG6G6l191qu1urNPsq1iFc2hmdzQY3F5/rTgqQnwwplyf8zoYHkpt7H6rw5UfIw6i/3qf9oSxQ==", "dev": true, - "license": "BSD-2-Clause", - "engines": { - "node": ">=4.0" + "license": "MIT", + "dependencies": { + "@vitest/pretty-format": "4.0.13", + "magic-string": "^0.30.21", + "pathe": "^2.0.3" + }, + "funding": { + "url": "https://opencollective.com/vitest" } }, - "node_modules/esutils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "node_modules/@vitest/spy": { + "version": "4.0.13", + "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-4.0.13.tgz", + "integrity": "sha512-hSu+m4se0lDV5yVIcNWqjuncrmBgwaXa2utFLIrBkQCQkt+pSwyZTPFQAZiiF/63j8jYa8uAeUZ3RSfcdWaYWw==", "dev": true, - "engines": { - "node": ">=0.10.0" + "license": "MIT", + "funding": { + "url": "https://opencollective.com/vitest" } }, - "node_modules/execa": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", - "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "node_modules/@vitest/utils": { + "version": "4.0.13", + "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-4.0.13.tgz", + "integrity": "sha512-ydozWyQ4LZuu8rLp47xFUWis5VOKMdHjXCWhs1LuJsTNKww+pTHQNK4e0assIB9K80TxFyskENL6vCu3j34EYA==", "dev": true, "license": "MIT", "dependencies": { - "cross-spawn": "^7.0.3", - "get-stream": "^6.0.0", - "human-signals": "^2.1.0", - "is-stream": "^2.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^4.0.1", - "onetime": "^5.1.2", - "signal-exit": "^3.0.3", - "strip-final-newline": "^2.0.0" - }, - "engines": { - "node": ">=10" + "@vitest/pretty-format": "4.0.13", + "tinyrainbow": "^3.0.3" }, "funding": { - "url": "https://github.com/sindresorhus/execa?sponsor=1" + "url": "https://opencollective.com/vitest" } }, - "node_modules/exit": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", - "integrity": "sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==", + "node_modules/acorn": { + "version": "8.15.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz", + "integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==", "dev": true, + "license": "MIT", + "peer": true, + "bin": { + "acorn": "bin/acorn" + }, "engines": { - "node": ">= 0.8.0" + "node": ">=0.4.0" + } + }, + "node_modules/acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" } }, - "node_modules/expect": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/expect/-/expect-29.7.0.tgz", - "integrity": "sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw==", + "node_modules/acorn-walk": { + "version": "8.3.4", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.4.tgz", + "integrity": "sha512-ueEepnujpqee2o5aIYnvHU6C0A42MNdsIDeqy5BydrkuC5R1ZuUFnm27EeFJGoEHJQgn3uleRvmTXaJgfXbt4g==", "dev": true, "license": "MIT", "dependencies": { - "@jest/expect-utils": "^29.7.0", - "jest-get-type": "^29.6.3", - "jest-matcher-utils": "^29.7.0", - "jest-message-util": "^29.7.0", - "jest-util": "^29.7.0" + "acorn": "^8.11.0" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=0.4.0" } }, - "node_modules/fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "dev": true, - "license": "MIT" + "node_modules/agent-base": { + "version": "7.1.4", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.4.tgz", + "integrity": "sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==", + "license": "MIT", + "engines": { + "node": ">= 14" + } }, - "node_modules/fast-diff": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.3.0.tgz", - "integrity": "sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==", + "node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", "dev": true, - "license": "Apache-2.0" + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } }, - "node_modules/fast-glob": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.3.tgz", - "integrity": "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==", + "node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, "license": "MIT", "dependencies": { - "@nodelib/fs.stat": "^2.0.2", - "@nodelib/fs.walk": "^1.2.3", - "glob-parent": "^5.1.2", - "merge2": "^1.3.0", - "micromatch": "^4.0.8" + "color-convert": "^2.0.1" }, "engines": { - "node": ">=8.6.0" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/fast-glob/node_modules/glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "node_modules/ansis": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/ansis/-/ansis-4.2.0.tgz", + "integrity": "sha512-HqZ5rWlFjGiV0tDm3UxxgNRqsOTniqoKZu0pIAfh7TZQMGuZK+hH0drySty0si0QXj1ieop4+SkSfPZBPPkHig==", "dev": true, "license": "ISC", - "dependencies": { - "is-glob": "^4.0.1" - }, "engines": { - "node": ">= 6" + "node": ">=14" } }, - "node_modules/fast-json-stable-stringify": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "node_modules/arg": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", + "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==", "dev": true, "license": "MIT" }, - "node_modules/fast-levenshtein": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", "dev": true, - "license": "MIT" + "license": "Python-2.0" }, - "node_modules/fastq": { - "version": "1.19.1", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.19.1.tgz", - "integrity": "sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==", + "node_modules/assertion-error": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-2.0.1.tgz", + "integrity": "sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==", "dev": true, - "license": "ISC", - "dependencies": { - "reusify": "^1.0.4" + "license": "MIT", + "engines": { + "node": ">=12" } }, - "node_modules/fb-watchman": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.2.tgz", - "integrity": "sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==", + "node_modules/ast-kit": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/ast-kit/-/ast-kit-2.2.0.tgz", + "integrity": "sha512-m1Q/RaVOnTp9JxPX+F+Zn7IcLYMzM8kZofDImfsKZd8MbR+ikdOzTeztStWqfrqIxZnYWryyI9ePm3NGjnZgGw==", "dev": true, - "license": "Apache-2.0", + "license": "MIT", "dependencies": { - "bser": "2.1.1" + "@babel/parser": "^7.28.5", + "pathe": "^2.0.3" + }, + "engines": { + "node": ">=20.19.0" + }, + "funding": { + "url": "https://github.com/sponsors/sxzz" } }, - "node_modules/file-entry-cache": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-8.0.0.tgz", - "integrity": "sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==", + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", "dev": true, + "license": "MIT" + }, + "node_modules/bicep-node": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/bicep-node/-/bicep-node-0.0.8.tgz", + "integrity": "sha512-SnX3kgubsKkAy4bMtYyLcDiY9d+xmESo5KXvtN2W6c50kKL49a0icp/XFLDXbsHcnvro7gAIpwGvIOZPauIZwQ==", + "license": "MIT", "dependencies": { - "flat-cache": "^4.0.0" - }, - "engines": { - "node": ">=16.0.0" + "node-fetch": "^2.7.0", + "vscode-jsonrpc": "^8.2.0" } }, - "node_modules/filelist": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/filelist/-/filelist-1.0.4.tgz", - "integrity": "sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==", + "node_modules/birpc": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/birpc/-/birpc-2.8.0.tgz", + "integrity": "sha512-Bz2a4qD/5GRhiHSwj30c/8kC8QGj12nNDwz3D4ErQ4Xhy35dsSDvF+RA/tWpjyU0pdGtSDiEk6B5fBGE1qNVhw==", "dev": true, - "license": "Apache-2.0", - "dependencies": { - "minimatch": "^5.0.1" + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/antfu" } }, - "node_modules/filelist/node_modules/minimatch": { - "version": "5.1.6", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", - "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + "node_modules/brace-expansion": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", + "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", "dev": true, - "license": "ISC", + "license": "MIT", "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=10" + "balanced-match": "^1.0.0" } }, - "node_modules/fill-range": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", - "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", + "node_modules/braces": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", "dev": true, "license": "MIT", "dependencies": { - "to-regex-range": "^5.0.1" + "fill-range": "^7.1.1" }, "engines": { "node": ">=8" } }, - "node_modules/find-root": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/find-root/-/find-root-1.1.0.tgz", - "integrity": "sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng==", - "dev": true, - "license": "MIT" + "node_modules/buffer-equal-constant-time": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz", + "integrity": "sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA==", + "license": "BSD-3-Clause" }, - "node_modules/find-up": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", - "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", - "dev": true, + "node_modules/bundle-name": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/bundle-name/-/bundle-name-4.1.0.tgz", + "integrity": "sha512-tjwM5exMg6BGRI+kNmTntNsvdZS1X8BFYS6tnJ2hdH0kVxM6/eVZ2xy+FqStSWvYmtfFMDLIxurorHwDKfDz5Q==", "license": "MIT", "dependencies": { - "locate-path": "^6.0.0", - "path-exists": "^4.0.0" + "run-applescript": "^7.0.0" }, "engines": { - "node": ">=10" + "node": ">=18" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/flat-cache": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-4.0.1.tgz", - "integrity": "sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==", - "dev": true, - "dependencies": { - "flatted": "^3.2.9", - "keyv": "^4.5.4" - }, - "engines": { - "node": ">=16" - } - }, - "node_modules/flatted": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.1.tgz", - "integrity": "sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==", - "dev": true - }, - "node_modules/fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", - "dev": true, - "license": "ISC" - }, - "node_modules/function-bind": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", - "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", - "dev": true, - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/gensync": { - "version": "1.0.0-beta.2", - "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", - "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "node_modules/cac": { + "version": "6.7.14", + "resolved": "https://registry.npmjs.org/cac/-/cac-6.7.14.tgz", + "integrity": "sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==", "dev": true, "license": "MIT", "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/get-caller-file": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", - "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", - "dev": true, - "license": "ISC", - "engines": { - "node": "6.* || 8.* || >= 10.*" + "node": ">=8" } }, - "node_modules/get-package-type": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", - "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", "dev": true, "license": "MIT", "engines": { - "node": ">=8.0.0" + "node": ">=6" } }, - "node_modules/get-stream": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", - "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "node_modules/chai": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/chai/-/chai-6.2.1.tgz", + "integrity": "sha512-p4Z49OGG5W/WBCPSS/dH3jQ73kD6tiMmUM+bckNK6Jr5JHMG3k9bg/BvKR8lKmtVBKmOiuVaV2ws8s9oSbwysg==", "dev": true, "license": "MIT", "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "deprecated": "Glob versions prior to v9 are no longer supported", - "dev": true, - "license": "ISC", - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "node": ">=18" } }, - "node_modules/glob-parent": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", - "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, - "license": "ISC", + "license": "MIT", "dependencies": { - "is-glob": "^4.0.3" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "engines": { - "node": ">=10.13.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/glob/node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "node_modules/chokidar": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-4.0.3.tgz", + "integrity": "sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==", "dev": true, "license": "MIT", "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" + "readdirp": "^4.0.1" + }, + "engines": { + "node": ">= 14.16.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" } }, - "node_modules/glob/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, - "license": "ISC", + "license": "MIT", "dependencies": { - "brace-expansion": "^1.1.7" + "color-name": "~1.1.4" }, "engines": { - "node": "*" + "node": ">=7.0.0" } }, - "node_modules/globals": { - "version": "14.0.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-14.0.0.tgz", - "integrity": "sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==", + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true, - "license": "MIT", - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } + "license": "MIT" }, - "node_modules/graceful-fs": { - "version": "4.2.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", - "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", "dev": true, - "license": "ISC" + "license": "MIT" }, - "node_modules/graphemer": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", - "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", + "node_modules/create-require": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", + "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==", "dev": true, "license": "MIT" }, - "node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "node_modules/cross-spawn": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", + "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", "dev": true, "license": "MIT", + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, "engines": { - "node": ">=8" + "node": ">= 8" } }, - "node_modules/hasown": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", - "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", - "dev": true, + "node_modules/debug": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", + "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", "license": "MIT", "dependencies": { - "function-bind": "^1.1.2" + "ms": "^2.1.3" }, "engines": { - "node": ">= 0.4" + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } } }, - "node_modules/html-escaper": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", - "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", + "node_modules/deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", "dev": true, "license": "MIT" }, - "node_modules/http-proxy-agent": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz", - "integrity": "sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==", + "node_modules/default-browser": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/default-browser/-/default-browser-5.4.0.tgz", + "integrity": "sha512-XDuvSq38Hr1MdN47EDvYtx3U0MTqpCEn+F6ft8z2vYDzMrvQhVp0ui9oQdqW3MvK3vqUETglt1tVGgjLuJ5izg==", "license": "MIT", "dependencies": { - "agent-base": "^7.1.0", - "debug": "^4.3.4" + "bundle-name": "^4.1.0", + "default-browser-id": "^5.0.0" }, "engines": { - "node": ">= 14" + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/https-proxy-agent": { - "version": "7.0.5", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.5.tgz", - "integrity": "sha512-1e4Wqeblerz+tMKPIq2EMGiiWW1dIjZOksyHWSUm1rmuvw/how9hBHZ38lAGj5ID4Ik6EdkOw7NmWPy6LAwalw==", + "node_modules/default-browser-id": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/default-browser-id/-/default-browser-id-5.0.1.tgz", + "integrity": "sha512-x1VCxdX4t+8wVfd1so/9w+vQ4vx7lKd2Qp5tDRutErwmR85OgmfX7RlLRMWafRMY7hbEiXIbudNrjOAPa/hL8Q==", "license": "MIT", - "dependencies": { - "agent-base": "^7.0.2", - "debug": "4" + "engines": { + "node": ">=18" }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/define-lazy-prop": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-3.0.0.tgz", + "integrity": "sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==", + "license": "MIT", "engines": { - "node": ">= 14" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/human-signals": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", - "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", + "node_modules/diff": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", + "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", "dev": true, - "license": "Apache-2.0", + "license": "BSD-3-Clause", "engines": { - "node": ">=10.17.0" + "node": ">=0.3.1" } }, - "node_modules/ignore": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", - "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", + "node_modules/dts-resolver": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/dts-resolver/-/dts-resolver-2.1.3.tgz", + "integrity": "sha512-bihc7jPC90VrosXNzK0LTE2cuLP6jr0Ro8jk+kMugHReJVLIpHz/xadeq3MhuwyO4TD4OA3L1Q8pBBFRc08Tsw==", "dev": true, "license": "MIT", "engines": { - "node": ">= 4" + "node": ">=20.19.0" + }, + "funding": { + "url": "https://github.com/sponsors/sxzz" + }, + "peerDependencies": { + "oxc-resolver": ">=11.0.0" + }, + "peerDependenciesMeta": { + "oxc-resolver": { + "optional": true + } } }, - "node_modules/import-fresh": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.1.tgz", - "integrity": "sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==", + "node_modules/ecdsa-sig-formatter": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz", + "integrity": "sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==", + "license": "Apache-2.0", + "dependencies": { + "safe-buffer": "^5.0.1" + } + }, + "node_modules/empathic": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/empathic/-/empathic-2.0.0.tgz", + "integrity": "sha512-i6UzDscO/XfAcNYD75CfICkmfLedpyPDdozrLMmQc5ORaQcdMoc21OnlEylMIqI7U8eniKrPMxxtj8k0vhmJhA==", "dev": true, "license": "MIT", - "dependencies": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" + "engines": { + "node": ">=14" + } + }, + "node_modules/es-module-lexer": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.7.0.tgz", + "integrity": "sha512-jEQoCwk8hyb2AZziIOLhDqpm5+2ww5uIE6lkO/6jcOCusfk6LhMHpXXfBLXTZ7Ydyt0j4VoUQv6uGNYbdW+kBA==", + "dev": true, + "license": "MIT" + }, + "node_modules/esbuild": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.12.tgz", + "integrity": "sha512-bbPBYYrtZbkt6Os6FiTLCTFxvq4tt3JKall1vRwshA3fdVztsLAatFaZobhkBC8/BrPetoa0oksYoKXoG4ryJg==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "bin": { + "esbuild": "bin/esbuild" }, "engines": { - "node": ">=6" + "node": ">=18" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.25.12", + "@esbuild/android-arm": "0.25.12", + "@esbuild/android-arm64": "0.25.12", + "@esbuild/android-x64": "0.25.12", + "@esbuild/darwin-arm64": "0.25.12", + "@esbuild/darwin-x64": "0.25.12", + "@esbuild/freebsd-arm64": "0.25.12", + "@esbuild/freebsd-x64": "0.25.12", + "@esbuild/linux-arm": "0.25.12", + "@esbuild/linux-arm64": "0.25.12", + "@esbuild/linux-ia32": "0.25.12", + "@esbuild/linux-loong64": "0.25.12", + "@esbuild/linux-mips64el": "0.25.12", + "@esbuild/linux-ppc64": "0.25.12", + "@esbuild/linux-riscv64": "0.25.12", + "@esbuild/linux-s390x": "0.25.12", + "@esbuild/linux-x64": "0.25.12", + "@esbuild/netbsd-arm64": "0.25.12", + "@esbuild/netbsd-x64": "0.25.12", + "@esbuild/openbsd-arm64": "0.25.12", + "@esbuild/openbsd-x64": "0.25.12", + "@esbuild/openharmony-arm64": "0.25.12", + "@esbuild/sunos-x64": "0.25.12", + "@esbuild/win32-arm64": "0.25.12", + "@esbuild/win32-ia32": "0.25.12", + "@esbuild/win32-x64": "0.25.12" + } + }, + "node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/import-local": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.2.0.tgz", - "integrity": "sha512-2SPlun1JUPWoM6t3F0dw0FkCF/jWY8kttcY4f599GLTSjh2OCuuhdTkJQsEcZzBqbXZGKMK2OqW1oZsjtf/gQA==", + "node_modules/eslint": { + "version": "9.39.1", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.39.1.tgz", + "integrity": "sha512-BhHmn2yNOFA9H9JmmIVKJmd288g9hrVRDkdoIgRCRuSySRUHH7r/DI6aAXW9T1WwUuY3DFgrcaqB+deURBLR5g==", "dev": true, "license": "MIT", "dependencies": { - "pkg-dir": "^4.2.0", - "resolve-cwd": "^3.0.0" + "@eslint-community/eslint-utils": "^4.8.0", + "@eslint-community/regexpp": "^4.12.1", + "@eslint/config-array": "^0.21.1", + "@eslint/config-helpers": "^0.4.2", + "@eslint/core": "^0.17.0", + "@eslint/eslintrc": "^3.3.1", + "@eslint/js": "9.39.1", + "@eslint/plugin-kit": "^0.4.1", + "@humanfs/node": "^0.16.6", + "@humanwhocodes/module-importer": "^1.0.1", + "@humanwhocodes/retry": "^0.4.2", + "@types/estree": "^1.0.6", + "ajv": "^6.12.4", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.6", + "debug": "^4.3.2", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^8.4.0", + "eslint-visitor-keys": "^4.2.1", + "espree": "^10.4.0", + "esquery": "^1.5.0", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^8.0.0", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "ignore": "^5.2.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.1.2", + "natural-compare": "^1.4.0", + "optionator": "^0.9.3" }, "bin": { - "import-local-fixture": "fixtures/cli.js" + "eslint": "bin/eslint.js" }, "engines": { - "node": ">=8" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://eslint.org/donate" + }, + "peerDependencies": { + "jiti": "*" + }, + "peerDependenciesMeta": { + "jiti": { + "optional": true + } } }, - "node_modules/imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "node_modules/eslint-config-prettier": { + "version": "10.1.8", + "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-10.1.8.tgz", + "integrity": "sha512-82GZUjRS0p/jganf6q1rEO25VSoHH0hKPCTrgillPjdI/3bgBhAE1QzHrHTizjpRvy6pGAvKjDJtk2pF9NDq8w==", "dev": true, "license": "MIT", - "engines": { - "node": ">=0.8.19" + "bin": { + "eslint-config-prettier": "bin/cli.js" + }, + "funding": { + "url": "https://opencollective.com/eslint-config-prettier" + }, + "peerDependencies": { + "eslint": ">=7.0.0" } }, - "node_modules/inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", - "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.", + "node_modules/eslint-plugin-notice": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-notice/-/eslint-plugin-notice-1.0.0.tgz", + "integrity": "sha512-M3VLQMZzZpvfTZ/vy9FmClIKq5rLBbQpM0KgfLZPJPrVXpmJYeobmmb+lfJzHWdNm8PWwvw8KlafQWo2N9xx1Q==", "dev": true, - "license": "ISC", + "license": "MIT", "dependencies": { - "once": "^1.3.0", - "wrappy": "1" + "find-root": "^1.1.0", + "lodash": "^4.17.21", + "metric-lcs": "^0.1.2" + }, + "peerDependencies": { + "eslint": ">=3.0.0" } }, - "node_modules/inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true, - "license": "ISC" - }, - "node_modules/is-arrayish": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", - "dev": true, - "license": "MIT" - }, - "node_modules/is-core-module": { - "version": "2.15.1", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.15.1.tgz", - "integrity": "sha512-z0vtXSwucUJtANQWldhbtbt7BnL0vxiFjIdDLAatwhDYty2bad6s+rijD6Ri4YuYJubLzIJLUidCh09e1djEVQ==", + "node_modules/eslint-plugin-prettier": { + "version": "5.5.4", + "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-5.5.4.tgz", + "integrity": "sha512-swNtI95SToIz05YINMA6Ox5R057IMAmWZ26GqPxusAp1TZzj+IdY9tXNWWD3vkF/wEqydCONcwjTFpxybBqZsg==", "dev": true, "license": "MIT", "dependencies": { - "hasown": "^2.0.2" + "prettier-linter-helpers": "^1.0.0", + "synckit": "^0.11.7" }, "engines": { - "node": ">= 0.4" + "node": "^14.18.0 || >=16.0.0" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://opencollective.com/eslint-plugin-prettier" + }, + "peerDependencies": { + "@types/eslint": ">=8.0.0", + "eslint": ">=8.0.0", + "eslint-config-prettier": ">= 7.0.0 <10.0.0 || >=10.1.0", + "prettier": ">=3.0.0" + }, + "peerDependenciesMeta": { + "@types/eslint": { + "optional": true + }, + "eslint-config-prettier": { + "optional": true + } } }, - "node_modules/is-docker": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-3.0.0.tgz", - "integrity": "sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==", - "bin": { - "is-docker": "cli.js" + "node_modules/eslint-scope": { + "version": "8.4.0", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.4.0.tgz", + "integrity": "sha512-sNXOfKCn74rt8RICKMvJS7XKV/Xk9kA7DyJr8mJik3S7Cwgy3qlkkmyS2uQB3jiJg6VNdZd/pDBJu0nvG2NlTg==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" }, "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://opencollective.com/eslint" } }, - "node_modules/is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", "dev": true, - "license": "MIT", + "license": "Apache-2.0", "engines": { - "node": ">=0.10.0" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" } }, - "node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "node_modules/eslint/node_modules/brace-expansion": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", "dev": true, "license": "MIT", - "engines": { - "node": ">=8" + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" } }, - "node_modules/is-generator-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz", - "integrity": "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==", + "node_modules/eslint/node_modules/eslint-visitor-keys": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz", + "integrity": "sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==", "dev": true, - "license": "MIT", + "license": "Apache-2.0", "engines": { - "node": ">=6" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" } }, - "node_modules/is-glob": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "node_modules/eslint/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dev": true, - "license": "MIT", + "license": "ISC", "dependencies": { - "is-extglob": "^2.1.1" + "brace-expansion": "^1.1.7" }, "engines": { - "node": ">=0.10.0" + "node": "*" } }, - "node_modules/is-inside-container": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-inside-container/-/is-inside-container-1.0.0.tgz", - "integrity": "sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==", + "node_modules/espree": { + "version": "10.4.0", + "resolved": "https://registry.npmjs.org/espree/-/espree-10.4.0.tgz", + "integrity": "sha512-j6PAQ2uUr79PZhBjP5C5fhl8e39FmRnOjsD5lGnWrFU8i2G776tBK7+nP8KuQUTTyAZUwfQqXAgrVH5MbH9CYQ==", + "dev": true, + "license": "BSD-2-Clause", "dependencies": { - "is-docker": "^3.0.0" - }, - "bin": { - "is-inside-container": "cli.js" + "acorn": "^8.15.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^4.2.1" }, "engines": { - "node": ">=14.16" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.12.0" + "url": "https://opencollective.com/eslint" } }, - "node_modules/is-stream": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", - "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "node_modules/espree/node_modules/eslint-visitor-keys": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz", + "integrity": "sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==", "dev": true, - "license": "MIT", + "license": "Apache-2.0", "engines": { - "node": ">=8" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://opencollective.com/eslint" } }, - "node_modules/is-wsl": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-3.1.0.tgz", - "integrity": "sha512-UcVfVfaK4Sc4m7X3dUSoHoozQGBEFeDC+zVo06t98xe8CzHSZZBekNXH+tu0NalHolcJ/QAGqS46Hef7QXBIMw==", + "node_modules/esquery": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.6.0.tgz", + "integrity": "sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==", + "dev": true, + "license": "BSD-3-Clause", "dependencies": { - "is-inside-container": "^1.0.0" + "estraverse": "^5.1.0" }, "engines": { - "node": ">=16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=0.10" } }, - "node_modules/isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "node_modules/esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", "dev": true, - "license": "ISC" + "license": "BSD-2-Clause", + "dependencies": { + "estraverse": "^5.2.0" + }, + "engines": { + "node": ">=4.0" + } }, - "node_modules/istanbul-lib-coverage": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz", - "integrity": "sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==", + "node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", "dev": true, - "license": "BSD-3-Clause", + "license": "BSD-2-Clause", "engines": { - "node": ">=8" + "node": ">=4.0" } }, - "node_modules/istanbul-lib-instrument": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-6.0.3.tgz", - "integrity": "sha512-Vtgk7L/R2JHyyGW07spoFlB8/lpjiOLTjMdms6AFMraYt3BaJauod/NGrfnVG/y4Ix1JEuMRPDPEj2ua+zz1/Q==", + "node_modules/estree-walker": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz", + "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==", "dev": true, - "license": "BSD-3-Clause", + "license": "MIT", "dependencies": { - "@babel/core": "^7.23.9", - "@babel/parser": "^7.23.9", - "@istanbuljs/schema": "^0.1.3", - "istanbul-lib-coverage": "^3.2.0", - "semver": "^7.5.4" - }, - "engines": { - "node": ">=10" + "@types/estree": "^1.0.0" } }, - "node_modules/istanbul-lib-report": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz", - "integrity": "sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==", + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "istanbul-lib-coverage": "^3.0.0", - "make-dir": "^4.0.0", - "supports-color": "^7.1.0" - }, + "license": "BSD-2-Clause", "engines": { - "node": ">=10" + "node": ">=0.10.0" } }, - "node_modules/istanbul-lib-source-maps": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz", - "integrity": "sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==", + "node_modules/expect-type": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/expect-type/-/expect-type-1.2.2.tgz", + "integrity": "sha512-JhFGDVJ7tmDJItKhYgJCGLOWjuK9vPxiXoUFLwLDc99NlmklilbiQJwoctZtt13+xMw91MCk/REan6MWHqDjyA==", "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "debug": "^4.1.1", - "istanbul-lib-coverage": "^3.0.0", - "source-map": "^0.6.1" - }, + "license": "Apache-2.0", "engines": { - "node": ">=10" + "node": ">=12.0.0" } }, - "node_modules/istanbul-reports": { - "version": "3.1.7", - "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.7.tgz", - "integrity": "sha512-BewmUXImeuRk2YY0PVbxgKAysvhRPUQE0h5QRM++nVWyubKGV0l8qQ5op8+B2DOmwSe63Jivj0BjkPQVf8fP5g==", + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", "dev": true, - "license": "BSD-3-Clause", + "license": "MIT" + }, + "node_modules/fast-diff": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.3.0.tgz", + "integrity": "sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==", + "dev": true, + "license": "Apache-2.0" + }, + "node_modules/fast-glob": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.3.tgz", + "integrity": "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==", + "dev": true, + "license": "MIT", "dependencies": { - "html-escaper": "^2.0.0", - "istanbul-lib-report": "^3.0.0" + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.8" }, "engines": { - "node": ">=8" + "node": ">=8.6.0" } }, - "node_modules/jake": { - "version": "10.9.2", - "resolved": "https://registry.npmjs.org/jake/-/jake-10.9.2.tgz", - "integrity": "sha512-2P4SQ0HrLQ+fw6llpLnOaGAvN2Zu6778SJMrCUwns4fOoG9ayrTiZk3VV8sCPkVZF8ab0zksVpS8FDY5pRCNBA==", + "node_modules/fast-glob/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", "dev": true, - "license": "Apache-2.0", + "license": "ISC", "dependencies": { - "async": "^3.2.3", - "chalk": "^4.0.2", - "filelist": "^1.0.4", - "minimatch": "^3.1.2" - }, - "bin": { - "jake": "bin/cli.js" + "is-glob": "^4.0.1" }, "engines": { - "node": ">=10" + "node": ">= 6" } }, - "node_modules/jake/node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", "dev": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } + "license": "MIT" }, - "node_modules/jake/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "node_modules/fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "dev": true, + "license": "MIT" + }, + "node_modules/fastq": { + "version": "1.19.1", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.19.1.tgz", + "integrity": "sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==", "dev": true, "license": "ISC", "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" + "reusify": "^1.0.4" } }, - "node_modules/jest": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest/-/jest-29.7.0.tgz", - "integrity": "sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw==", + "node_modules/file-entry-cache": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-8.0.0.tgz", + "integrity": "sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==", "dev": true, "license": "MIT", "dependencies": { - "@jest/core": "^29.7.0", - "@jest/types": "^29.6.3", - "import-local": "^3.0.2", - "jest-cli": "^29.7.0" - }, - "bin": { - "jest": "bin/jest.js" + "flat-cache": "^4.0.0" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - }, - "peerDependencies": { - "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" - }, - "peerDependenciesMeta": { - "node-notifier": { - "optional": true - } + "node": ">=16.0.0" } }, - "node_modules/jest-changed-files": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-29.7.0.tgz", - "integrity": "sha512-fEArFiwf1BpQ+4bXSprcDc3/x4HSzL4al2tozwVpDFpsxALjLYdyiIK4e5Vz66GQJIbXJ82+35PtysofptNX2w==", + "node_modules/fill-range": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", "dev": true, "license": "MIT", "dependencies": { - "execa": "^5.0.0", - "jest-util": "^29.7.0", - "p-limit": "^3.1.0" + "to-regex-range": "^5.0.1" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=8" } }, - "node_modules/jest-circus": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-29.7.0.tgz", - "integrity": "sha512-3E1nCMgipcTkCocFwM90XXQab9bS+GMsjdpmPrlelaxwD93Ad8iVEjX/vvHPdLPnFf+L40u+5+iutRdA1N9myw==", + "node_modules/find-root": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/find-root/-/find-root-1.1.0.tgz", + "integrity": "sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng==", "dev": true, - "license": "MIT", - "dependencies": { - "@jest/environment": "^29.7.0", - "@jest/expect": "^29.7.0", - "@jest/test-result": "^29.7.0", - "@jest/types": "^29.6.3", - "@types/node": "*", - "chalk": "^4.0.0", - "co": "^4.6.0", - "dedent": "^1.0.0", - "is-generator-fn": "^2.0.0", - "jest-each": "^29.7.0", - "jest-matcher-utils": "^29.7.0", - "jest-message-util": "^29.7.0", - "jest-runtime": "^29.7.0", - "jest-snapshot": "^29.7.0", - "jest-util": "^29.7.0", - "p-limit": "^3.1.0", - "pretty-format": "^29.7.0", - "pure-rand": "^6.0.0", - "slash": "^3.0.0", - "stack-utils": "^2.0.3" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } + "license": "MIT" }, - "node_modules/jest-cli": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-29.7.0.tgz", - "integrity": "sha512-OVVobw2IubN/GSYsxETi+gOe7Ka59EFMR/twOU3Jb2GnKKeMGJB5SGUUrEz3SFVmJASUdZUzy83sLNNQ2gZslg==", + "node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", "dev": true, "license": "MIT", "dependencies": { - "@jest/core": "^29.7.0", - "@jest/test-result": "^29.7.0", - "@jest/types": "^29.6.3", - "chalk": "^4.0.0", - "create-jest": "^29.7.0", - "exit": "^0.1.2", - "import-local": "^3.0.2", - "jest-config": "^29.7.0", - "jest-util": "^29.7.0", - "jest-validate": "^29.7.0", - "yargs": "^17.3.1" - }, - "bin": { - "jest": "bin/jest.js" + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - }, - "peerDependencies": { - "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + "node": ">=10" }, - "peerDependenciesMeta": { - "node-notifier": { - "optional": true - } + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/jest-config": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-29.7.0.tgz", - "integrity": "sha512-uXbpfeQ7R6TZBqI3/TxCU4q4ttk3u0PJeC+E0zbfSoSjq6bJ7buBPxzQPL0ifrkY4DNu4JUdk0ImlBUYi840eQ==", + "node_modules/flat-cache": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-4.0.1.tgz", + "integrity": "sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==", "dev": true, "license": "MIT", "dependencies": { - "@babel/core": "^7.11.6", - "@jest/test-sequencer": "^29.7.0", - "@jest/types": "^29.6.3", - "babel-jest": "^29.7.0", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "deepmerge": "^4.2.2", - "glob": "^7.1.3", - "graceful-fs": "^4.2.9", - "jest-circus": "^29.7.0", - "jest-environment-node": "^29.7.0", - "jest-get-type": "^29.6.3", - "jest-regex-util": "^29.6.3", - "jest-resolve": "^29.7.0", - "jest-runner": "^29.7.0", - "jest-util": "^29.7.0", - "jest-validate": "^29.7.0", - "micromatch": "^4.0.4", - "parse-json": "^5.2.0", - "pretty-format": "^29.7.0", - "slash": "^3.0.0", - "strip-json-comments": "^3.1.1" + "flatted": "^3.2.9", + "keyv": "^4.5.4" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - }, - "peerDependencies": { - "@types/node": "*", - "ts-node": ">=9.0.0" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - }, - "ts-node": { - "optional": true - } + "node": ">=16" } }, - "node_modules/jest-diff": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-29.7.0.tgz", - "integrity": "sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw==", + "node_modules/flatted": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.3.tgz", + "integrity": "sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==", "dev": true, - "license": "MIT", - "dependencies": { - "chalk": "^4.0.0", - "diff-sequences": "^29.6.3", - "jest-get-type": "^29.6.3", - "pretty-format": "^29.7.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } + "license": "ISC" }, - "node_modules/jest-docblock": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-29.7.0.tgz", - "integrity": "sha512-q617Auw3A612guyaFgsbFeYpNP5t2aoUNLwBUbc/0kD1R4t9ixDbyFTHd1nok4epoVFpr7PmeWHrhvuV3XaJ4g==", + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", "dev": true, + "hasInstallScript": true, "license": "MIT", - "dependencies": { - "detect-newline": "^3.0.0" - }, + "optional": true, + "os": [ + "darwin" + ], "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" } }, - "node_modules/jest-each": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-29.7.0.tgz", - "integrity": "sha512-gns+Er14+ZrEoC5fhOfYCY1LOHHr0TI+rQUHZS8Ttw2l7gl+80eHc/gFf2Ktkw0+SIACDTeWvpFcv3B04VembQ==", + "node_modules/get-tsconfig": { + "version": "4.13.0", + "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.13.0.tgz", + "integrity": "sha512-1VKTZJCwBrvbd+Wn3AOgQP/2Av+TfTCOlE4AcRJE72W1ksZXbAx8PPBR9RzgTeSPzlPMHrbANMH3LbltH73wxQ==", "dev": true, "license": "MIT", "dependencies": { - "@jest/types": "^29.6.3", - "chalk": "^4.0.0", - "jest-get-type": "^29.6.3", - "jest-util": "^29.7.0", - "pretty-format": "^29.7.0" + "resolve-pkg-maps": "^1.0.0" }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "funding": { + "url": "https://github.com/privatenumber/get-tsconfig?sponsor=1" } }, - "node_modules/jest-environment-node": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-29.7.0.tgz", - "integrity": "sha512-DOSwCRqXirTOyheM+4d5YZOrWcdu0LNZ87ewUoywbcb2XR4wKgqiG8vNeYwhjFMbEkfju7wx2GYH0P2gevGvFw==", + "node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", "dev": true, - "license": "MIT", + "license": "ISC", "dependencies": { - "@jest/environment": "^29.7.0", - "@jest/fake-timers": "^29.7.0", - "@jest/types": "^29.6.3", - "@types/node": "*", - "jest-mock": "^29.7.0", - "jest-util": "^29.7.0" + "is-glob": "^4.0.3" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=10.13.0" } }, - "node_modules/jest-get-type": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.6.3.tgz", - "integrity": "sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==", + "node_modules/globals": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-14.0.0.tgz", + "integrity": "sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==", "dev": true, "license": "MIT", "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/jest-haste-map": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-29.7.0.tgz", - "integrity": "sha512-fP8u2pyfqx0K1rGn1R9pyE0/KTn+G7PxktWidOBTqFPLYX0b9ksaMFkhK5vrS3DVun09pckLdlx90QthlW7AmA==", + "node_modules/graphemer": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", + "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", "dev": true, - "license": "MIT", - "dependencies": { - "@jest/types": "^29.6.3", - "@types/graceful-fs": "^4.1.3", - "@types/node": "*", - "anymatch": "^3.0.3", - "fb-watchman": "^2.0.0", - "graceful-fs": "^4.2.9", - "jest-regex-util": "^29.6.3", - "jest-util": "^29.7.0", - "jest-worker": "^29.7.0", - "micromatch": "^4.0.4", - "walker": "^1.0.8" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - }, - "optionalDependencies": { - "fsevents": "^2.3.2" - } + "license": "MIT" }, - "node_modules/jest-leak-detector": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-29.7.0.tgz", - "integrity": "sha512-kYA8IJcSYtST2BY9I+SMC32nDpBT3J2NvWJx8+JCuCdl/CR1I4EKUJROiP8XtCcxqgTTBGJNdbB1A8XRKbTetw==", + "node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, "license": "MIT", - "dependencies": { - "jest-get-type": "^29.6.3", - "pretty-format": "^29.7.0" - }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=8" } }, - "node_modules/jest-matcher-utils": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-29.7.0.tgz", - "integrity": "sha512-sBkD+Xi9DtcChsI3L3u0+N0opgPYnCRPtGcQYrgXmR+hmt/fYfWAL0xRXYU8eWOdfuLgBe0YCW3AFtnRLagq/g==", + "node_modules/hookable": { + "version": "5.5.3", + "resolved": "https://registry.npmjs.org/hookable/-/hookable-5.5.3.tgz", + "integrity": "sha512-Yc+BQe8SvoXH1643Qez1zqLRmbA5rCL+sSmk6TVos0LWVfNIB7PGncdlId77WzLGSIB5KaWgTaNTs2lNVEI6VQ==", "dev": true, + "license": "MIT" + }, + "node_modules/http-proxy-agent": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz", + "integrity": "sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==", "license": "MIT", "dependencies": { - "chalk": "^4.0.0", - "jest-diff": "^29.7.0", - "jest-get-type": "^29.6.3", - "pretty-format": "^29.7.0" + "agent-base": "^7.1.0", + "debug": "^4.3.4" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">= 14" } }, - "node_modules/jest-message-util": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.7.0.tgz", - "integrity": "sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==", - "dev": true, + "node_modules/https-proxy-agent": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.6.tgz", + "integrity": "sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==", "license": "MIT", "dependencies": { - "@babel/code-frame": "^7.12.13", - "@jest/types": "^29.6.3", - "@types/stack-utils": "^2.0.0", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.9", - "micromatch": "^4.0.4", - "pretty-format": "^29.7.0", - "slash": "^3.0.0", - "stack-utils": "^2.0.3" + "agent-base": "^7.1.2", + "debug": "4" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">= 14" } }, - "node_modules/jest-mock": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-29.7.0.tgz", - "integrity": "sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw==", + "node_modules/ignore": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", + "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", "dev": true, "license": "MIT", - "dependencies": { - "@jest/types": "^29.6.3", - "@types/node": "*", - "jest-util": "^29.7.0" - }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">= 4" } }, - "node_modules/jest-pnp-resolver": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz", - "integrity": "sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==", + "node_modules/import-fresh": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.1.tgz", + "integrity": "sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==", "dev": true, "license": "MIT", + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, "engines": { "node": ">=6" }, - "peerDependencies": { - "jest-resolve": "*" - }, - "peerDependenciesMeta": { - "jest-resolve": { - "optional": true - } + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/jest-regex-util": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-29.6.3.tgz", - "integrity": "sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg==", + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", "dev": true, "license": "MIT", "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=0.8.19" } }, - "node_modules/jest-resolve": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-29.7.0.tgz", - "integrity": "sha512-IOVhZSrg+UvVAshDSDtHyFCCBUl/Q3AAJv8iZ6ZjnZ74xzvwuzLXid9IIIPgTnY62SJjfuupMKZsZQRsCvxEgA==", - "dev": true, + "node_modules/is-docker": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-3.0.0.tgz", + "integrity": "sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==", "license": "MIT", - "dependencies": { - "chalk": "^4.0.0", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^29.7.0", - "jest-pnp-resolver": "^1.2.2", - "jest-util": "^29.7.0", - "jest-validate": "^29.7.0", - "resolve": "^1.20.0", - "resolve.exports": "^2.0.0", - "slash": "^3.0.0" + "bin": { + "is-docker": "cli.js" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-resolve-dependencies": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-29.7.0.tgz", - "integrity": "sha512-un0zD/6qxJ+S0et7WxeI3H5XSe9lTBBR7bOHCHXkKR6luG5mwDDlIzVQ0V5cZCuoTgEdcdwzTghYkTWfubi+nA==", - "dev": true, - "license": "MIT", - "dependencies": { - "jest-regex-util": "^29.6.3", - "jest-snapshot": "^29.7.0" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/jest-runner": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-29.7.0.tgz", - "integrity": "sha512-fsc4N6cPCAahybGBfTRcq5wFR6fpLznMg47sY5aDpsoejOcVYFb07AHuSnR0liMcPTgBsA3ZJL6kFOjPdoNipQ==", + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", "dev": true, "license": "MIT", - "dependencies": { - "@jest/console": "^29.7.0", - "@jest/environment": "^29.7.0", - "@jest/test-result": "^29.7.0", - "@jest/transform": "^29.7.0", - "@jest/types": "^29.6.3", - "@types/node": "*", - "chalk": "^4.0.0", - "emittery": "^0.13.1", - "graceful-fs": "^4.2.9", - "jest-docblock": "^29.7.0", - "jest-environment-node": "^29.7.0", - "jest-haste-map": "^29.7.0", - "jest-leak-detector": "^29.7.0", - "jest-message-util": "^29.7.0", - "jest-resolve": "^29.7.0", - "jest-runtime": "^29.7.0", - "jest-util": "^29.7.0", - "jest-watcher": "^29.7.0", - "jest-worker": "^29.7.0", - "p-limit": "^3.1.0", - "source-map-support": "0.5.13" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-runtime": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-29.7.0.tgz", - "integrity": "sha512-gUnLjgwdGqW7B4LvOIkbKs9WGbn+QLqRQQ9juC6HndeDiezIwhDP+mhMwHWCEcfQ5RUXa6OPnFF8BJh5xegwwQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/environment": "^29.7.0", - "@jest/fake-timers": "^29.7.0", - "@jest/globals": "^29.7.0", - "@jest/source-map": "^29.6.3", - "@jest/test-result": "^29.7.0", - "@jest/transform": "^29.7.0", - "@jest/types": "^29.6.3", - "@types/node": "*", - "chalk": "^4.0.0", - "cjs-module-lexer": "^1.0.0", - "collect-v8-coverage": "^1.0.0", - "glob": "^7.1.3", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^29.7.0", - "jest-message-util": "^29.7.0", - "jest-mock": "^29.7.0", - "jest-regex-util": "^29.6.3", - "jest-resolve": "^29.7.0", - "jest-snapshot": "^29.7.0", - "jest-util": "^29.7.0", - "slash": "^3.0.0", - "strip-bom": "^4.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-snapshot": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-29.7.0.tgz", - "integrity": "sha512-Rm0BMWtxBcioHr1/OX5YCP8Uov4riHvKPknOGs804Zg9JGZgmIBkbtlxJC/7Z4msKYVbIJtfU+tKb8xlYNfdkw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/core": "^7.11.6", - "@babel/generator": "^7.7.2", - "@babel/plugin-syntax-jsx": "^7.7.2", - "@babel/plugin-syntax-typescript": "^7.7.2", - "@babel/types": "^7.3.3", - "@jest/expect-utils": "^29.7.0", - "@jest/transform": "^29.7.0", - "@jest/types": "^29.6.3", - "babel-preset-current-node-syntax": "^1.0.0", - "chalk": "^4.0.0", - "expect": "^29.7.0", - "graceful-fs": "^4.2.9", - "jest-diff": "^29.7.0", - "jest-get-type": "^29.6.3", - "jest-matcher-utils": "^29.7.0", - "jest-message-util": "^29.7.0", - "jest-util": "^29.7.0", - "natural-compare": "^1.4.0", - "pretty-format": "^29.7.0", - "semver": "^7.5.3" - }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=0.10.0" } }, - "node_modules/jest-util": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz", - "integrity": "sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==", + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", "dev": true, "license": "MIT", "dependencies": { - "@jest/types": "^29.6.3", - "@types/node": "*", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "graceful-fs": "^4.2.9", - "picomatch": "^2.2.3" + "is-extglob": "^2.1.1" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=0.10.0" } }, - "node_modules/jest-validate": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-29.7.0.tgz", - "integrity": "sha512-ZB7wHqaRGVw/9hST/OuFUReG7M8vKeq0/J2egIGLdvjHCmYqGARhzXmtgi+gVeZ5uXFF219aOc3Ls2yLg27tkw==", - "dev": true, + "node_modules/is-inside-container": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-inside-container/-/is-inside-container-1.0.0.tgz", + "integrity": "sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==", "license": "MIT", "dependencies": { - "@jest/types": "^29.6.3", - "camelcase": "^6.2.0", - "chalk": "^4.0.0", - "jest-get-type": "^29.6.3", - "leven": "^3.1.0", - "pretty-format": "^29.7.0" + "is-docker": "^3.0.0" + }, + "bin": { + "is-inside-container": "cli.js" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-validate/node_modules/camelcase": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", - "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" + "node": ">=14.16" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/jest-watcher": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-29.7.0.tgz", - "integrity": "sha512-49Fg7WXkU3Vl2h6LbLtMQ/HyB6rXSIX7SqvBLQmssRBGN9I0PNvPmAmCWSOY6SOvrjhI/F7/bGAv9RtnsPA03g==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/test-result": "^29.7.0", - "@jest/types": "^29.6.3", - "@types/node": "*", - "ansi-escapes": "^4.2.1", - "chalk": "^4.0.0", - "emittery": "^0.13.1", - "jest-util": "^29.7.0", - "string-length": "^4.0.1" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-worker": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.7.0.tgz", - "integrity": "sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==", + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", "dev": true, "license": "MIT", - "dependencies": { - "@types/node": "*", - "jest-util": "^29.7.0", - "merge-stream": "^2.0.0", - "supports-color": "^8.0.0" - }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=0.12.0" } }, - "node_modules/jest-worker/node_modules/supports-color": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", - "dev": true, + "node_modules/is-wsl": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-3.1.0.tgz", + "integrity": "sha512-UcVfVfaK4Sc4m7X3dUSoHoozQGBEFeDC+zVo06t98xe8CzHSZZBekNXH+tu0NalHolcJ/QAGqS46Hef7QXBIMw==", "license": "MIT", "dependencies": { - "has-flag": "^4.0.0" + "is-inside-container": "^1.0.0" }, "engines": { - "node": ">=10" + "node": ">=16" }, "funding": { - "url": "https://github.com/chalk/supports-color?sponsor=1" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", - "dev": true + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true, + "license": "ISC" }, "node_modules/js-yaml": { "version": "4.1.1", @@ -5048,28 +3456,22 @@ } }, "node_modules/jsesc": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", - "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz", + "integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==", "dev": true, "license": "MIT", "bin": { "jsesc": "bin/jsesc" }, "engines": { - "node": ">=4" + "node": ">=6" } }, "node_modules/json-buffer": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", - "dev": true - }, - "node_modules/json-parse-even-better-errors": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", - "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", "dev": true, "license": "MIT" }, @@ -5087,23 +3489,11 @@ "dev": true, "license": "MIT" }, - "node_modules/json5": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", - "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", - "dev": true, - "license": "MIT", - "bin": { - "json5": "lib/cli.js" - }, - "engines": { - "node": ">=6" - } - }, "node_modules/jsonwebtoken": { "version": "9.0.2", "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-9.0.2.tgz", "integrity": "sha512-PRp66vJ865SSqOlgqS8hujT5U4AOgMfhrwYIuIhfKaoSCZcirrmASQr8CX7cUg+RMih+hgznrjp99o+W4pJLHQ==", + "license": "MIT", "dependencies": { "jws": "^3.2.2", "lodash.includes": "^4.3.0", @@ -5125,6 +3515,7 @@ "version": "1.4.2", "resolved": "https://registry.npmjs.org/jwa/-/jwa-1.4.2.tgz", "integrity": "sha512-eeH5JO+21J78qMvTIDdBXidBd6nG2kZjg5Ohz/1fpa28Z4CcsWUzJ1ZZyFq/3z3N17aZy+ZuBoHljASbL1WfOw==", + "license": "MIT", "dependencies": { "buffer-equal-constant-time": "^1.0.1", "ecdsa-sig-formatter": "1.0.11", @@ -5135,6 +3526,7 @@ "version": "3.2.2", "resolved": "https://registry.npmjs.org/jws/-/jws-3.2.2.tgz", "integrity": "sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA==", + "license": "MIT", "dependencies": { "jwa": "^1.4.1", "safe-buffer": "^5.0.1" @@ -5145,30 +3537,11 @@ "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", "dev": true, + "license": "MIT", "dependencies": { "json-buffer": "3.0.1" } }, - "node_modules/kleur": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", - "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/leven": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", - "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, "node_modules/levn": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", @@ -5183,13 +3556,6 @@ "node": ">= 0.8.0" } }, - "node_modules/lines-and-columns": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", - "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", - "dev": true, - "license": "MIT" - }, "node_modules/locate-path": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", @@ -5216,38 +3582,37 @@ "node_modules/lodash.includes": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/lodash.includes/-/lodash.includes-4.3.0.tgz", - "integrity": "sha512-W3Bx6mdkRTGtlJISOvVD/lbqjTlPPUDTMnlXZFnVwi9NKJ6tiAk6LVdlhZMm17VZisqhKcgzpO5Wz91PCt5b0w==" + "integrity": "sha512-W3Bx6mdkRTGtlJISOvVD/lbqjTlPPUDTMnlXZFnVwi9NKJ6tiAk6LVdlhZMm17VZisqhKcgzpO5Wz91PCt5b0w==", + "license": "MIT" }, "node_modules/lodash.isboolean": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz", - "integrity": "sha512-Bz5mupy2SVbPHURB98VAcw+aHh4vRV5IPNhILUCsOzRmsTmSQ17jIuqopAentWoehktxGd9e/hbIXq980/1QJg==" + "integrity": "sha512-Bz5mupy2SVbPHURB98VAcw+aHh4vRV5IPNhILUCsOzRmsTmSQ17jIuqopAentWoehktxGd9e/hbIXq980/1QJg==", + "license": "MIT" }, "node_modules/lodash.isinteger": { "version": "4.0.4", "resolved": "https://registry.npmjs.org/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz", - "integrity": "sha512-DBwtEWN2caHQ9/imiNeEA5ys1JoRtRfY3d7V9wkqtbycnAmTvRRmbHKDV4a0EYc678/dia0jrte4tjYwVBaZUA==" + "integrity": "sha512-DBwtEWN2caHQ9/imiNeEA5ys1JoRtRfY3d7V9wkqtbycnAmTvRRmbHKDV4a0EYc678/dia0jrte4tjYwVBaZUA==", + "license": "MIT" }, "node_modules/lodash.isnumber": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/lodash.isnumber/-/lodash.isnumber-3.0.3.tgz", - "integrity": "sha512-QYqzpfwO3/CWf3XP+Z+tkQsfaLL/EnUlXWVkIk5FUPc4sBdTehEqZONuyRt2P67PXAk+NXmTBcc97zw9t1FQrw==" + "integrity": "sha512-QYqzpfwO3/CWf3XP+Z+tkQsfaLL/EnUlXWVkIk5FUPc4sBdTehEqZONuyRt2P67PXAk+NXmTBcc97zw9t1FQrw==", + "license": "MIT" }, "node_modules/lodash.isplainobject": { "version": "4.0.6", "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", - "integrity": "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==" + "integrity": "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==", + "license": "MIT" }, "node_modules/lodash.isstring": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz", - "integrity": "sha512-0wJxfxH1wgO3GrbuP+dTTk7op+6L41QCXbGINEmD+ny/G/eCqGzxyCsh7159S+mgDDcoarnBw6PC1PS5+wUGgw==" - }, - "node_modules/lodash.memoize": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", - "integrity": "sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==", - "dev": true, + "integrity": "sha512-0wJxfxH1wgO3GrbuP+dTTk7op+6L41QCXbGINEmD+ny/G/eCqGzxyCsh7159S+mgDDcoarnBw6PC1PS5+wUGgw==", "license": "MIT" }, "node_modules/lodash.merge": { @@ -5260,32 +3625,17 @@ "node_modules/lodash.once": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz", - "integrity": "sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg==" - }, - "node_modules/lru-cache": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", - "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", - "dev": true, - "license": "ISC", - "dependencies": { - "yallist": "^3.0.2" - } + "integrity": "sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg==", + "license": "MIT" }, - "node_modules/make-dir": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-4.0.0.tgz", - "integrity": "sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==", + "node_modules/magic-string": { + "version": "0.30.21", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.21.tgz", + "integrity": "sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==", "dev": true, "license": "MIT", "dependencies": { - "semver": "^7.5.3" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "@jridgewell/sourcemap-codec": "^1.5.5" } }, "node_modules/make-error": { @@ -5295,23 +3645,6 @@ "dev": true, "license": "ISC" }, - "node_modules/makeerror": { - "version": "1.0.12", - "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz", - "integrity": "sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "tmpl": "1.0.5" - } - }, - "node_modules/merge-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", - "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", - "dev": true, - "license": "MIT" - }, "node_modules/merge2": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", @@ -5343,16 +3676,6 @@ "node": ">=8.6" } }, - "node_modules/mimic-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, "node_modules/minimatch": { "version": "9.0.5", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", @@ -5375,6 +3698,25 @@ "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", "license": "MIT" }, + "node_modules/nanoid": { + "version": "3.3.11", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz", + "integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, "node_modules/natural-compare": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", @@ -5402,78 +3744,27 @@ } } }, - "node_modules/node-int64": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", - "integrity": "sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==", - "dev": true, - "license": "MIT" - }, - "node_modules/node-releases": { - "version": "2.0.18", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.18.tgz", - "integrity": "sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g==", + "node_modules/obug": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/obug/-/obug-2.1.0.tgz", + "integrity": "sha512-uu/tgLPoa75CFA7UDkmqspKbefvZh1WMPwkU3bNr0PY746a/+xwXVgbw5co5C3GvJj3h5u8g/pbxXzI0gd1QFg==", "dev": true, + "funding": [ + "https://github.com/sponsors/sxzz", + "https://opencollective.com/debug" + ], "license": "MIT" }, - "node_modules/normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/npm-run-path": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", - "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", - "dev": true, - "license": "MIT", - "dependencies": { - "path-key": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", - "dev": true, - "license": "ISC", - "dependencies": { - "wrappy": "1" - } - }, - "node_modules/onetime": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", - "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", - "dev": true, - "license": "MIT", - "dependencies": { - "mimic-fn": "^2.1.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/open": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/open/-/open-10.1.0.tgz", - "integrity": "sha512-mnkeQ1qP5Ue2wd+aivTD3NHd/lZ96Lu0jgf0pwktLPtx6cTZiH7tyeGRRHs0zX0rbrahXPnXlUnbeXyaBBuIaw==", + "version": "10.2.0", + "resolved": "https://registry.npmjs.org/open/-/open-10.2.0.tgz", + "integrity": "sha512-YgBpdJHPyQ2UE5x+hlSXcnejzAvD0b22U2OuAP+8OnlJT+PjWPxtgmGqKKc+RgTM63U9gN0YzrYc71R2WT/hTA==", + "license": "MIT", "dependencies": { "default-browser": "^5.2.1", "define-lazy-prop": "^3.0.0", "is-inside-container": "^1.0.0", - "is-wsl": "^3.1.0" + "wsl-utils": "^0.1.0" }, "engines": { "node": ">=18" @@ -5532,16 +3823,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/p-try": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, "node_modules/parent-module": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", @@ -5555,25 +3836,6 @@ "node": ">=6" } }, - "node_modules/parse-json": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", - "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/code-frame": "^7.0.0", - "error-ex": "^1.3.1", - "json-parse-even-better-errors": "^2.3.0", - "lines-and-columns": "^1.1.6" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/path-exists": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", @@ -5584,16 +3846,6 @@ "node": ">=8" } }, - "node_modules/path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/path-key": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", @@ -5604,17 +3856,17 @@ "node": ">=8" } }, - "node_modules/path-parse": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "node_modules/pathe": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/pathe/-/pathe-2.0.3.tgz", + "integrity": "sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==", "dev": true, "license": "MIT" }, "node_modules/picocolors": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.0.tgz", - "integrity": "sha512-TQ92mBOW0l3LeMeyLV6mzy/kWr8lkd/hp3mTg7wYK7zJhuBStmGMBG0BdeDZS/dZx1IukaX6Bk11zcln25o1Aw==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", "dev": true, "license": "ISC" }, @@ -5631,83 +3883,33 @@ "url": "https://github.com/sponsors/jonschlinkert" } }, - "node_modules/pirates": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.6.tgz", - "integrity": "sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 6" - } - }, - "node_modules/pkg-dir": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", - "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "find-up": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/pkg-dir/node_modules/find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "dev": true, - "license": "MIT", - "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/pkg-dir/node_modules/locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "dev": true, - "license": "MIT", - "dependencies": { - "p-locate": "^4.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/pkg-dir/node_modules/p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "dev": true, - "license": "MIT", - "dependencies": { - "p-try": "^2.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/pkg-dir/node_modules/p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "node_modules/postcss": { + "version": "8.5.6", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.6.tgz", + "integrity": "sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==", "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], "license": "MIT", "dependencies": { - "p-limit": "^2.2.0" + "nanoid": "^3.3.11", + "picocolors": "^1.1.1", + "source-map-js": "^1.2.1" }, "engines": { - "node": ">=8" + "node": "^10 || ^12 || >=14" } }, "node_modules/prelude-ls": { @@ -5721,9 +3923,9 @@ } }, "node_modules/prettier": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.3.3.tgz", - "integrity": "sha512-i2tDNA0O5IrMO757lfrdQZCc2jPNDVntV0m/+4whiDfWaTKfMNgR7Qz0NAeGz/nRqF4m5/6CLzbP4/liHt12Ew==", + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.6.2.tgz", + "integrity": "sha512-I7AIg5boAr5R0FFtJ6rCfD+LFsWHp81dolrFD8S79U9tb8Az2nGrJncnMSnys+bpQJfRUzqs9hnA81OAA3hCuQ==", "dev": true, "license": "MIT", "peer": true, @@ -5747,49 +3949,7 @@ "fast-diff": "^1.1.2" }, "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/pretty-format": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", - "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/schemas": "^29.6.3", - "ansi-styles": "^5.0.0", - "react-is": "^18.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/pretty-format/node_modules/ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/prompts": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", - "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "kleur": "^3.0.3", - "sisteransi": "^1.0.5" - }, - "engines": { - "node": ">= 6" + "node": ">=6.0.0" } }, "node_modules/punycode": { @@ -5802,19 +3962,19 @@ "node": ">=6" } }, - "node_modules/pure-rand": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/pure-rand/-/pure-rand-6.1.0.tgz", - "integrity": "sha512-bVWawvoZoBYpp6yIoQtQXHZjmz35RSVHnUOTefl8Vcjr8snTPY1wnpSPMWekcFwbxI6gtmT7rSYPFvz71ldiOA==", + "node_modules/quansync": { + "version": "0.2.11", + "resolved": "https://registry.npmjs.org/quansync/-/quansync-0.2.11.tgz", + "integrity": "sha512-AifT7QEbW9Nri4tAwR5M/uzpBuqfZf+zwaEM/QkzEjj7NBuFD2rBuy0K3dE+8wltbezDV7JMA0WfnCPYRSYbXA==", "dev": true, "funding": [ { "type": "individual", - "url": "https://github.com/sponsors/dubzzz" + "url": "https://github.com/sponsors/antfu" }, { - "type": "opencollective", - "url": "https://opencollective.com/fast-check" + "type": "individual", + "url": "https://github.com/sponsors/sxzz" } ], "license": "MIT" @@ -5840,62 +4000,18 @@ ], "license": "MIT" }, - "node_modules/react-is": { - "version": "18.3.1", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", - "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", - "dev": true, - "license": "MIT" - }, - "node_modules/require-directory": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", + "node_modules/readdirp": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-4.1.2.tgz", + "integrity": "sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==", "dev": true, "license": "MIT", "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/resolve": { - "version": "1.22.8", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", - "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-core-module": "^2.13.0", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - }, - "bin": { - "resolve": "bin/resolve" + "node": ">= 14.18.0" }, "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/resolve-cwd": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", - "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", - "dev": true, - "license": "MIT", - "dependencies": { - "resolve-from": "^5.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/resolve-cwd/node_modules/resolve-from": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", - "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" + "type": "individual", + "url": "https://paulmillr.com/funding/" } }, "node_modules/resolve-from": { @@ -5908,14 +4024,14 @@ "node": ">=4" } }, - "node_modules/resolve.exports": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-2.0.2.tgz", - "integrity": "sha512-X2UW6Nw3n/aMgDVy+0rSqgHlv39WZAlZrXCdnbyEiKm17DSqHX4MmQMaST3FbeWR5FTuRcUwYAziZajji0Y7mg==", + "node_modules/resolve-pkg-maps": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz", + "integrity": "sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==", "dev": true, "license": "MIT", - "engines": { - "node": ">=10" + "funding": { + "url": "https://github.com/privatenumber/resolve-pkg-maps?sponsor=1" } }, "node_modules/reusify": { @@ -5929,10 +4045,132 @@ "node": ">=0.10.0" } }, + "node_modules/rolldown": { + "version": "1.0.0-beta.51", + "resolved": "https://registry.npmjs.org/rolldown/-/rolldown-1.0.0-beta.51.tgz", + "integrity": "sha512-ZRLgPlS91l4JztLYEZnmMcd3Umcla1hkXJgiEiR4HloRJBBoeaX8qogTu5Jfu36rRMVLndzqYv0h+M5gJAkUfg==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@oxc-project/types": "=0.98.0", + "@rolldown/pluginutils": "1.0.0-beta.51" + }, + "bin": { + "rolldown": "bin/cli.mjs" + }, + "engines": { + "node": "^20.19.0 || >=22.12.0" + }, + "optionalDependencies": { + "@rolldown/binding-android-arm64": "1.0.0-beta.51", + "@rolldown/binding-darwin-arm64": "1.0.0-beta.51", + "@rolldown/binding-darwin-x64": "1.0.0-beta.51", + "@rolldown/binding-freebsd-x64": "1.0.0-beta.51", + "@rolldown/binding-linux-arm-gnueabihf": "1.0.0-beta.51", + "@rolldown/binding-linux-arm64-gnu": "1.0.0-beta.51", + "@rolldown/binding-linux-arm64-musl": "1.0.0-beta.51", + "@rolldown/binding-linux-x64-gnu": "1.0.0-beta.51", + "@rolldown/binding-linux-x64-musl": "1.0.0-beta.51", + "@rolldown/binding-openharmony-arm64": "1.0.0-beta.51", + "@rolldown/binding-wasm32-wasi": "1.0.0-beta.51", + "@rolldown/binding-win32-arm64-msvc": "1.0.0-beta.51", + "@rolldown/binding-win32-ia32-msvc": "1.0.0-beta.51", + "@rolldown/binding-win32-x64-msvc": "1.0.0-beta.51" + } + }, + "node_modules/rolldown-plugin-dts": { + "version": "0.18.0", + "resolved": "https://registry.npmjs.org/rolldown-plugin-dts/-/rolldown-plugin-dts-0.18.0.tgz", + "integrity": "sha512-2CJtKYa9WPClZxkJeCt4bGUegQvQKQ1VJp9jFJzG0h8I/80XI6qDgoWfVJUOEhT2swbsRQh/42N1RIWvbXT4rA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/generator": "^7.28.5", + "@babel/parser": "^7.28.5", + "@babel/types": "^7.28.5", + "ast-kit": "^2.2.0", + "birpc": "^2.8.0", + "dts-resolver": "^2.1.3", + "get-tsconfig": "^4.13.0", + "magic-string": "^0.30.21", + "obug": "^2.0.0" + }, + "engines": { + "node": ">=20.19.0" + }, + "funding": { + "url": "https://github.com/sponsors/sxzz" + }, + "peerDependencies": { + "@ts-macro/tsc": "^0.3.6", + "@typescript/native-preview": ">=7.0.0-dev.20250601.1", + "rolldown": "^1.0.0-beta.51", + "typescript": "^5.0.0", + "vue-tsc": "~3.1.0" + }, + "peerDependenciesMeta": { + "@ts-macro/tsc": { + "optional": true + }, + "@typescript/native-preview": { + "optional": true + }, + "typescript": { + "optional": true + }, + "vue-tsc": { + "optional": true + } + } + }, + "node_modules/rollup": { + "version": "4.53.3", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.53.3.tgz", + "integrity": "sha512-w8GmOxZfBmKknvdXU1sdM9NHcoQejwF/4mNgj2JuEEdRaHwwF12K7e9eXn1nLZ07ad+du76mkVsyeb2rKGllsA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/estree": "1.0.8" + }, + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=18.0.0", + "npm": ">=8.0.0" + }, + "optionalDependencies": { + "@rollup/rollup-android-arm-eabi": "4.53.3", + "@rollup/rollup-android-arm64": "4.53.3", + "@rollup/rollup-darwin-arm64": "4.53.3", + "@rollup/rollup-darwin-x64": "4.53.3", + "@rollup/rollup-freebsd-arm64": "4.53.3", + "@rollup/rollup-freebsd-x64": "4.53.3", + "@rollup/rollup-linux-arm-gnueabihf": "4.53.3", + "@rollup/rollup-linux-arm-musleabihf": "4.53.3", + "@rollup/rollup-linux-arm64-gnu": "4.53.3", + "@rollup/rollup-linux-arm64-musl": "4.53.3", + "@rollup/rollup-linux-loong64-gnu": "4.53.3", + "@rollup/rollup-linux-ppc64-gnu": "4.53.3", + "@rollup/rollup-linux-riscv64-gnu": "4.53.3", + "@rollup/rollup-linux-riscv64-musl": "4.53.3", + "@rollup/rollup-linux-s390x-gnu": "4.53.3", + "@rollup/rollup-linux-x64-gnu": "4.53.3", + "@rollup/rollup-linux-x64-musl": "4.53.3", + "@rollup/rollup-openharmony-arm64": "4.53.3", + "@rollup/rollup-win32-arm64-msvc": "4.53.3", + "@rollup/rollup-win32-ia32-msvc": "4.53.3", + "@rollup/rollup-win32-x64-gnu": "4.53.3", + "@rollup/rollup-win32-x64-msvc": "4.53.3", + "fsevents": "~2.3.2" + } + }, "node_modules/run-applescript": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/run-applescript/-/run-applescript-7.0.0.tgz", - "integrity": "sha512-9by4Ij99JUr/MCFBUkDKLWK3G9HVXmabKz9U5MlIAIuvuzkiOicRYs8XJLxX+xahD+mLiiCYDqF9dKAgtzKP1A==", + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/run-applescript/-/run-applescript-7.1.0.tgz", + "integrity": "sha512-DPe5pVFaAsinSaV6QjQ6gdiedWDcRCbUuiQfQa2wmWV7+xC9bGulGI8+TdRmoFkAPaBXk8CrAbnlY2ISniJ47Q==", + "license": "MIT", "engines": { "node": ">=18" }, @@ -5981,12 +4219,13 @@ "type": "consulting", "url": "https://feross.org/support" } - ] + ], + "license": "MIT" }, "node_modules/semver": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", - "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "version": "7.7.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", + "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", "license": "ISC", "bin": { "semver": "bin/semver.js" @@ -6018,142 +4257,36 @@ "node": ">=8" } }, - "node_modules/signal-exit": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", - "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "node_modules/siginfo": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/siginfo/-/siginfo-2.0.0.tgz", + "integrity": "sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==", "dev": true, "license": "ISC" }, - "node_modules/sisteransi": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", - "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==", - "dev": true, - "license": "MIT" - }, - "node_modules/slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "node_modules/source-map-js": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", + "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", "dev": true, "license": "BSD-3-Clause", "engines": { "node": ">=0.10.0" } }, - "node_modules/source-map-support": { - "version": "0.5.13", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.13.tgz", - "integrity": "sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==", - "dev": true, - "license": "MIT", - "dependencies": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - } - }, - "node_modules/sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", - "dev": true, - "license": "BSD-3-Clause" - }, - "node_modules/stack-utils": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.6.tgz", - "integrity": "sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "escape-string-regexp": "^2.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/stack-utils/node_modules/escape-string-regexp": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", - "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/string-length": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz", - "integrity": "sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "char-regex": "^1.0.2", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "license": "MIT", - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/strip-bom": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", - "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", + "node_modules/stackback": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/stackback/-/stackback-0.0.2.tgz", + "integrity": "sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==", "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } + "license": "MIT" }, - "node_modules/strip-final-newline": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", - "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", + "node_modules/std-env": { + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/std-env/-/std-env-3.10.0.tgz", + "integrity": "sha512-5GS12FdOZNliM5mAOxFRg7Ir0pWz8MdpYm6AY6VPkGpbA7ZzmbzNcBJQ0GPvvyWgcY7QAhCgf9Uy89I03faLkg==", "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } + "license": "MIT" }, "node_modules/strip-json-comments": { "version": "3.1.1", @@ -6181,19 +4314,6 @@ "node": ">=8" } }, - "node_modules/supports-preserve-symlinks-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", - "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/synckit": { "version": "0.11.11", "resolved": "https://registry.npmjs.org/synckit/-/synckit-0.11.11.tgz", @@ -6210,51 +4330,81 @@ "url": "https://opencollective.com/synckit" } }, - "node_modules/test-exclude": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", - "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", + "node_modules/tinybench": { + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/tinybench/-/tinybench-2.9.0.tgz", + "integrity": "sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==", "dev": true, - "license": "ISC", - "dependencies": { - "@istanbuljs/schema": "^0.1.2", - "glob": "^7.1.4", - "minimatch": "^3.0.4" - }, + "license": "MIT" + }, + "node_modules/tinyexec": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/tinyexec/-/tinyexec-1.0.2.tgz", + "integrity": "sha512-W/KYk+NFhkmsYpuHq5JykngiOCnxeVL8v8dFnqxSD8qEEdRfXk1SDM6JzNqcERbcGYj9tMrDQBYV9cjgnunFIg==", + "dev": true, + "license": "MIT", "engines": { - "node": ">=8" + "node": ">=18" } }, - "node_modules/test-exclude/node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "node_modules/tinyglobby": { + "version": "0.2.15", + "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.15.tgz", + "integrity": "sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==", "dev": true, "license": "MIT", "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" + "fdir": "^6.5.0", + "picomatch": "^4.0.3" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/SuperchupuDev" } }, - "node_modules/test-exclude/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "node_modules/tinyglobby/node_modules/fdir": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz", + "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==", "dev": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^1.1.7" + "license": "MIT", + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "picomatch": "^3 || ^4" }, + "peerDependenciesMeta": { + "picomatch": { + "optional": true + } + } + }, + "node_modules/tinyglobby/node_modules/picomatch": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", + "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", + "dev": true, + "license": "MIT", + "peer": true, "engines": { - "node": "*" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" } }, - "node_modules/tmpl": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz", - "integrity": "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==", + "node_modules/tinyrainbow": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/tinyrainbow/-/tinyrainbow-3.0.3.tgz", + "integrity": "sha512-PSkbLUoxOFRzJYjjxHJt9xro7D+iilgMX/C9lawzVuYiIdcihh9DXmVibBe8lmcFrRi/VzlPjBxbN7rH24q8/Q==", "dev": true, - "license": "BSD-3-Clause" + "license": "MIT", + "engines": { + "node": ">=14.0.0" + } }, "node_modules/to-regex-range": { "version": "5.0.1", @@ -6275,6 +4425,16 @@ "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", "license": "MIT" }, + "node_modules/tree-kill": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz", + "integrity": "sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==", + "dev": true, + "license": "MIT", + "bin": { + "tree-kill": "cli.js" + } + }, "node_modules/ts-api-utils": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-2.1.0.tgz", @@ -6288,55 +4448,6 @@ "typescript": ">=4.8.4" } }, - "node_modules/ts-jest": { - "version": "29.2.5", - "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-29.2.5.tgz", - "integrity": "sha512-KD8zB2aAZrcKIdGk4OwpJggeLcH1FgrICqDSROWqlnJXGCXK4Mn6FcdK2B6670Xr73lHMG1kHw8R87A0ecZ+vA==", - "dev": true, - "license": "MIT", - "dependencies": { - "bs-logger": "^0.2.6", - "ejs": "^3.1.10", - "fast-json-stable-stringify": "^2.1.0", - "jest-util": "^29.0.0", - "json5": "^2.2.3", - "lodash.memoize": "^4.1.2", - "make-error": "^1.3.6", - "semver": "^7.6.3", - "yargs-parser": "^21.1.1" - }, - "bin": { - "ts-jest": "cli.js" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || ^18.0.0 || >=20.0.0" - }, - "peerDependencies": { - "@babel/core": ">=7.0.0-beta.0 <8", - "@jest/transform": "^29.0.0", - "@jest/types": "^29.0.0", - "babel-jest": "^29.0.0", - "jest": "^29.0.0", - "typescript": ">=4.3 <6" - }, - "peerDependenciesMeta": { - "@babel/core": { - "optional": true - }, - "@jest/transform": { - "optional": true - }, - "@jest/types": { - "optional": true - }, - "babel-jest": { - "optional": true - }, - "esbuild": { - "optional": true - } - } - }, "node_modules/ts-node": { "version": "10.9.2", "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.2.tgz", @@ -6367,20 +4478,91 @@ "ts-script": "dist/bin-script-deprecated.js" }, "peerDependencies": { - "@swc/core": ">=1.2.50", - "@swc/wasm": ">=1.2.50", - "@types/node": "*", - "typescript": ">=2.7" + "@swc/core": ">=1.2.50", + "@swc/wasm": ">=1.2.50", + "@types/node": "*", + "typescript": ">=2.7" + }, + "peerDependenciesMeta": { + "@swc/core": { + "optional": true + }, + "@swc/wasm": { + "optional": true + } + } + }, + "node_modules/tsdown": { + "version": "0.16.6", + "resolved": "https://registry.npmjs.org/tsdown/-/tsdown-0.16.6.tgz", + "integrity": "sha512-g3xHEnGdfwJTlXhEkqww3Q/KlCfyNFw4rnzuQ9Gqw8T2xjDYrw94qmSw5wYYTAW5zV1sEfWDlfgxZo5mmtu0NQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansis": "^4.2.0", + "cac": "^6.7.14", + "chokidar": "^4.0.3", + "diff": "^8.0.2", + "empathic": "^2.0.0", + "hookable": "^5.5.3", + "obug": "^2.1.0", + "rolldown": "1.0.0-beta.51", + "rolldown-plugin-dts": "^0.18.0", + "semver": "^7.7.3", + "tinyexec": "^1.0.2", + "tinyglobby": "^0.2.15", + "tree-kill": "^1.2.2", + "unconfig-core": "^7.4.1", + "unrun": "^0.2.11" + }, + "bin": { + "tsdown": "dist/run.mjs" + }, + "engines": { + "node": ">=20.19.0" + }, + "funding": { + "url": "https://github.com/sponsors/sxzz" + }, + "peerDependencies": { + "@arethetypeswrong/core": "^0.18.1", + "@vitejs/devtools": "^0.0.0-alpha.17", + "publint": "^0.3.0", + "typescript": "^5.0.0", + "unplugin-lightningcss": "^0.4.0", + "unplugin-unused": "^0.5.0" }, "peerDependenciesMeta": { - "@swc/core": { + "@arethetypeswrong/core": { "optional": true }, - "@swc/wasm": { + "@vitejs/devtools": { + "optional": true + }, + "publint": { + "optional": true + }, + "typescript": { + "optional": true + }, + "unplugin-lightningcss": { + "optional": true + }, + "unplugin-unused": { "optional": true } } }, + "node_modules/tsdown/node_modules/diff": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/diff/-/diff-8.0.2.tgz", + "integrity": "sha512-sSuxWU5j5SR9QQji/o2qMvqRNYRDOcBTgsJ/DeCf4iSN4gW+gNMXM7wFIP+fdXZxoNiAnHUTGjCr+TSWXdRDKg==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.3.1" + } + }, "node_modules/tslib": { "version": "2.8.1", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", @@ -6409,22 +4591,13 @@ "node": ">= 0.8.0" } }, - "node_modules/type-detect": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", - "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, "node_modules/typescript": { - "version": "5.8.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.8.3.tgz", - "integrity": "sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ==", + "version": "5.9.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz", + "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==", "dev": true, "license": "Apache-2.0", + "peer": true, "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" @@ -6434,15 +4607,16 @@ } }, "node_modules/typescript-eslint": { - "version": "8.32.1", - "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.32.1.tgz", - "integrity": "sha512-D7el+eaDHAmXvrZBy1zpzSNIRqnCOrkwTgZxTu3MUqRWk8k0q9m9Ho4+vPf7iHtgUfrK/o8IZaEApsxPlHTFCg==", + "version": "8.47.0", + "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.47.0.tgz", + "integrity": "sha512-Lwe8i2XQ3WoMjua/r1PHrCTpkubPYJCAfOurtn+mtTzqB6jNd+14n9UN1bJ4s3F49x9ixAm0FLflB/JzQ57M8Q==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/eslint-plugin": "8.32.1", - "@typescript-eslint/parser": "8.32.1", - "@typescript-eslint/utils": "8.32.1" + "@typescript-eslint/eslint-plugin": "8.47.0", + "@typescript-eslint/parser": "8.47.0", + "@typescript-eslint/typescript-estree": "8.47.0", + "@typescript-eslint/utils": "8.47.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -6453,13 +4627,27 @@ }, "peerDependencies": { "eslint": "^8.57.0 || ^9.0.0", - "typescript": ">=4.8.4 <5.9.0" + "typescript": ">=4.8.4 <6.0.0" + } + }, + "node_modules/unconfig-core": { + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/unconfig-core/-/unconfig-core-7.4.1.tgz", + "integrity": "sha512-Bp/bPZjV2Vl/fofoA2OYLSnw1Z0MOhCX7zHnVCYrazpfZvseBbGhwcNQMxsg185Mqh7VZQqK3C8hFG/Dyng+yA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@quansync/fs": "^0.1.5", + "quansync": "^0.2.11" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" } }, "node_modules/undici": { - "version": "5.28.5", - "resolved": "https://registry.npmjs.org/undici/-/undici-5.28.5.tgz", - "integrity": "sha512-zICwjrDrcrUE0pyyJc1I2QzBkLM8FINsgOrt6WjA+BgajVq9Nxu2PbFFXUrAggLfDXlZGZBVZYw7WNV5KiBiBA==", + "version": "5.29.0", + "resolved": "https://registry.npmjs.org/undici/-/undici-5.29.0.tgz", + "integrity": "sha512-raqeBD6NQK4SkWhQzeYKd1KmIG6dllBOTt55Rmkt4HtI9mwdWtJljnrXjAFUBLTSN67HWrOIZ3EPF4kjUw80Bg==", "license": "MIT", "dependencies": { "@fastify/busboy": "^2.0.0" @@ -6472,37 +4660,35 @@ "version": "6.21.0", "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz", "integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==", - "dev": true + "dev": true, + "license": "MIT" }, - "node_modules/update-browserslist-db": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.0.tgz", - "integrity": "sha512-EdRAaAyk2cUE1wOf2DkEhzxqOQvFOoRJFNS6NeyJ01Gp2beMRpBAINjM2iDXE3KCuKhwnvHIQCJm6ThL2Z+HzQ==", + "node_modules/unrun": { + "version": "0.2.11", + "resolved": "https://registry.npmjs.org/unrun/-/unrun-0.2.11.tgz", + "integrity": "sha512-HjUuNLRGfRxMvxkwOuO/CpkSzdizTPPApbarLplsTzUm8Kex+nS9eomKU1qgVus6WGWkDYhtf/mgNxGEpyTR6A==", "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/browserslist" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], "license": "MIT", "dependencies": { - "escalade": "^3.1.2", - "picocolors": "^1.0.1" + "@oxc-project/runtime": "^0.96.0", + "rolldown": "1.0.0-beta.51" }, "bin": { - "update-browserslist-db": "cli.js" + "unrun": "dist/cli.mjs" + }, + "engines": { + "node": ">=20.19.0" + }, + "funding": { + "url": "https://github.com/sponsors/Gugustinette" }, "peerDependencies": { - "browserslist": ">= 4.21.0" + "synckit": "^0.11.11" + }, + "peerDependenciesMeta": { + "synckit": { + "optional": true + } } }, "node_modules/uri-js": { @@ -6519,6 +4705,7 @@ "version": "8.3.2", "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "license": "MIT", "bin": { "uuid": "dist/bin/uuid" } @@ -6530,21 +4717,216 @@ "dev": true, "license": "MIT" }, - "node_modules/v8-to-istanbul": { - "version": "9.3.0", - "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.3.0.tgz", - "integrity": "sha512-kiGUalWN+rgBJ/1OHZsBtU4rXZOfj/7rKQxULKlIzwzQSvMJUUNgPwJEEh7gU6xEVxC0ahoOBvN2YI8GH6FNgA==", + "node_modules/vite": { + "version": "7.2.4", + "resolved": "https://registry.npmjs.org/vite/-/vite-7.2.4.tgz", + "integrity": "sha512-NL8jTlbo0Tn4dUEXEsUg8KeyG/Lkmc4Fnzb8JXN/Ykm9G4HNImjtABMJgkQoVjOBN/j2WAwDTRytdqJbZsah7w==", "dev": true, - "license": "ISC", + "license": "MIT", + "peer": true, "dependencies": { - "@jridgewell/trace-mapping": "^0.3.12", - "@types/istanbul-lib-coverage": "^2.0.1", - "convert-source-map": "^2.0.0" + "esbuild": "^0.25.0", + "fdir": "^6.5.0", + "picomatch": "^4.0.3", + "postcss": "^8.5.6", + "rollup": "^4.43.0", + "tinyglobby": "^0.2.15" + }, + "bin": { + "vite": "bin/vite.js" + }, + "engines": { + "node": "^20.19.0 || >=22.12.0" + }, + "funding": { + "url": "https://github.com/vitejs/vite?sponsor=1" + }, + "optionalDependencies": { + "fsevents": "~2.3.3" + }, + "peerDependencies": { + "@types/node": "^20.19.0 || >=22.12.0", + "jiti": ">=1.21.0", + "less": "^4.0.0", + "lightningcss": "^1.21.0", + "sass": "^1.70.0", + "sass-embedded": "^1.70.0", + "stylus": ">=0.54.8", + "sugarss": "^5.0.0", + "terser": "^5.16.0", + "tsx": "^4.8.1", + "yaml": "^2.4.2" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "jiti": { + "optional": true + }, + "less": { + "optional": true + }, + "lightningcss": { + "optional": true + }, + "sass": { + "optional": true + }, + "sass-embedded": { + "optional": true + }, + "stylus": { + "optional": true + }, + "sugarss": { + "optional": true + }, + "terser": { + "optional": true + }, + "tsx": { + "optional": true + }, + "yaml": { + "optional": true + } + } + }, + "node_modules/vite/node_modules/fdir": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz", + "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "picomatch": "^3 || ^4" + }, + "peerDependenciesMeta": { + "picomatch": { + "optional": true + } + } + }, + "node_modules/vite/node_modules/picomatch": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", + "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/vitest": { + "version": "4.0.13", + "resolved": "https://registry.npmjs.org/vitest/-/vitest-4.0.13.tgz", + "integrity": "sha512-QSD4I0fN6uZQfftryIXuqvqgBxTvJ3ZNkF6RWECd82YGAYAfhcppBLFXzXJHQAAhVFyYEuFTrq6h0hQqjB7jIQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vitest/expect": "4.0.13", + "@vitest/mocker": "4.0.13", + "@vitest/pretty-format": "4.0.13", + "@vitest/runner": "4.0.13", + "@vitest/snapshot": "4.0.13", + "@vitest/spy": "4.0.13", + "@vitest/utils": "4.0.13", + "debug": "^4.4.3", + "es-module-lexer": "^1.7.0", + "expect-type": "^1.2.2", + "magic-string": "^0.30.21", + "pathe": "^2.0.3", + "picomatch": "^4.0.3", + "std-env": "^3.10.0", + "tinybench": "^2.9.0", + "tinyexec": "^0.3.2", + "tinyglobby": "^0.2.15", + "tinyrainbow": "^3.0.3", + "vite": "^6.0.0 || ^7.0.0", + "why-is-node-running": "^2.3.0" + }, + "bin": { + "vitest": "vitest.mjs" + }, + "engines": { + "node": "^20.0.0 || ^22.0.0 || >=24.0.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + }, + "peerDependencies": { + "@edge-runtime/vm": "*", + "@opentelemetry/api": "^1.9.0", + "@types/debug": "^4.1.12", + "@types/node": "^20.0.0 || ^22.0.0 || >=24.0.0", + "@vitest/browser-playwright": "4.0.13", + "@vitest/browser-preview": "4.0.13", + "@vitest/browser-webdriverio": "4.0.13", + "@vitest/ui": "4.0.13", + "happy-dom": "*", + "jsdom": "*" }, + "peerDependenciesMeta": { + "@edge-runtime/vm": { + "optional": true + }, + "@opentelemetry/api": { + "optional": true + }, + "@types/debug": { + "optional": true + }, + "@types/node": { + "optional": true + }, + "@vitest/browser-playwright": { + "optional": true + }, + "@vitest/browser-preview": { + "optional": true + }, + "@vitest/browser-webdriverio": { + "optional": true + }, + "@vitest/ui": { + "optional": true + }, + "happy-dom": { + "optional": true + }, + "jsdom": { + "optional": true + } + } + }, + "node_modules/vitest/node_modules/picomatch": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", + "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", + "dev": true, + "license": "MIT", "engines": { - "node": ">=10.12.0" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" } }, + "node_modules/vitest/node_modules/tinyexec": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/tinyexec/-/tinyexec-0.3.2.tgz", + "integrity": "sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA==", + "dev": true, + "license": "MIT" + }, "node_modules/vscode-jsonrpc": { "version": "8.2.1", "resolved": "https://registry.npmjs.org/vscode-jsonrpc/-/vscode-jsonrpc-8.2.1.tgz", @@ -6554,16 +4936,6 @@ "node": ">=14.0.0" } }, - "node_modules/walker": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz", - "integrity": "sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "makeerror": "1.0.12" - } - }, "node_modules/webidl-conversions": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", @@ -6596,6 +4968,23 @@ "node": ">= 8" } }, + "node_modules/why-is-node-running": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/why-is-node-running/-/why-is-node-running-2.3.0.tgz", + "integrity": "sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w==", + "dev": true, + "license": "MIT", + "dependencies": { + "siginfo": "^2.0.0", + "stackback": "0.0.2" + }, + "bin": { + "why-is-node-running": "cli.js" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/word-wrap": { "version": "1.2.5", "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", @@ -6606,102 +4995,32 @@ "node": ">=0.10.0" } }, - "node_modules/wrap-ansi": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "dev": true, + "node_modules/wsl-utils": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/wsl-utils/-/wsl-utils-0.1.0.tgz", + "integrity": "sha512-h3Fbisa2nKGPxCpm89Hk33lBLsnaGBvctQopaBSOW/uIs6FTe1ATyAnKFJrzVs9vpGdsTe73WF3V4lIsk4Gacw==", "license": "MIT", "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" + "is-wsl": "^3.1.0" }, "engines": { - "node": ">=10" + "node": ">=18" }, "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" - } - }, - "node_modules/wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", - "dev": true, - "license": "ISC" - }, - "node_modules/write-file-atomic": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-4.0.2.tgz", - "integrity": "sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==", - "dev": true, - "license": "ISC", - "dependencies": { - "imurmurhash": "^0.1.4", - "signal-exit": "^3.0.7" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "node_modules/y18n": { - "version": "5.0.8", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", - "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", - "dev": true, - "license": "ISC", - "engines": { - "node": ">=10" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/yallist": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", - "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", - "dev": true, - "license": "ISC" - }, "node_modules/yaml": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.7.1.tgz", - "integrity": "sha512-10ULxpnOCQXxJvBgxsn9ptjq6uviG/htZKk9veJGhlqn3w/DxQ631zFF+nlQXLwmImeS5amR2dl2U8sg6U9jsQ==", + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.8.1.tgz", + "integrity": "sha512-lcYcMxX2PO9XMGvAJkJ3OsNMw+/7FKes7/hgerGUYWIoWu5j/+YQqcZr5JnPZWzOsEBgMbSbiSTn/dv/69Mkpw==", "dev": true, "license": "ISC", "bin": { "yaml": "bin.mjs" }, "engines": { - "node": ">= 14" - } - }, - "node_modules/yargs": { - "version": "17.7.2", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", - "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", - "dev": true, - "license": "MIT", - "dependencies": { - "cliui": "^8.0.1", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.3", - "y18n": "^5.0.5", - "yargs-parser": "^21.1.1" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/yargs-parser": { - "version": "21.1.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", - "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", - "dev": true, - "license": "ISC", - "engines": { - "node": ">=12" + "node": ">= 14.6" } }, "node_modules/yn": { @@ -6726,6 +5045,35 @@ "funding": { "url": "https://github.com/sponsors/sindresorhus" } + }, + "packages/bicep-deploy-common": { + "name": "@azure/bicep-deploy-common", + "version": "0.0.1-dev", + "license": "MIT", + "dependencies": { + "@azure/arm-resources": "^6.0.0", + "@azure/arm-resourcesdeploymentstacks": "^1.0.0", + "@azure/identity": "^4.10.2", + "bicep-node": "^0.0.8", + "yaml": "^2.7.0" + }, + "devDependencies": { + "@types/node": "^22.15.29", + "@vitest/eslint-plugin": "^1.4.3", + "eslint": "^9.39.1", + "eslint-config-prettier": "^10.1.5", + "eslint-plugin-notice": "^1.0.0", + "eslint-plugin-prettier": "^5.5.4", + "ts-node": "^10.9.2", + "tsdown": "^0.16.5", + "typescript": "^5.8.3", + "typescript-eslint": "^8.32.0", + "vitest": "^4.0.10", + "yaml": "^2.7.1" + }, + "engines": { + "node": ">=22" + } } } } diff --git a/package.json b/package.json index 7412e3b..457fbe9 100644 --- a/package.json +++ b/package.json @@ -15,45 +15,42 @@ "bicep", "arm templates" ], + "type": "commonjs", + "main": "./dist/index.cjs", + "module": "./dist/index.cjs", "exports": { - ".": "./dist/index.js" + ".": "./dist/index.cjs" }, "engines": { "node": ">=22" }, "scripts": { - "build": "tsc", - "test": "jest --config jest.config.unit.ts", - "test:live": "jest --config jest.config.live.ts", - "package": "esbuild src/index.ts --minify --bundle --outfile=dist/index.js --sourcemap --platform=node --target=es2021", - "lint": "eslint src test test-live", - "lint:fix": "eslint src test test-live --fix" + "build": "tsdown --config ./tsdown.config.ts", + "test": "vitest --config vitest.config.unit.ts", + "test:live": "vitest --config vitest.config.live.ts", + "lint": "eslint src test test-live ./packages/bicep-deploy-common/src ./packages/bicep-deploy-common/test", + "lint:fix": "eslint src test test-live ./packages/bicep-deploy-common/src ./packages/bicep-deploy-common/test --fix" }, "license": "MIT", "dependencies": { "@actions/core": "^1.11.1", "@actions/exec": "^1.1.1", "@actions/io": "^1.1.3", - "@azure/arm-resources": "^6.0.0", - "@azure/arm-resourcesdeploymentstacks": "^1.0.0", - "@azure/identity": "^4.10.2", - "bicep-node": "^0.0.8", - "yaml": "^2.7.0" + "@azure/bicep-deploy-common": "file:packages/bicep-deploy-common" }, "devDependencies": { - "@types/jest": "^29.5.14", "@types/node": "^22.15.29", + "@vitest/eslint-plugin": "^1.4.3", "esbuild": "^0.25.8", - "eslint": "^9.27.0", + "eslint": "^9.39.1", "eslint-config-prettier": "^10.1.5", - "eslint-plugin-jest": "^29.0.1", "eslint-plugin-notice": "^1.0.0", "eslint-plugin-prettier": "^5.5.4", - "jest": "^29.7.0", - "ts-jest": "^29.2.5", "ts-node": "^10.9.2", + "tsdown": "^0.16.5", "typescript": "^5.8.3", "typescript-eslint": "^8.32.0", + "vitest": "^4.0.10", "yaml": "^2.7.1" } } diff --git a/packages/bicep-deploy-common/README.md b/packages/bicep-deploy-common/README.md new file mode 100644 index 0000000..4894647 --- /dev/null +++ b/packages/bicep-deploy-common/README.md @@ -0,0 +1,11 @@ +# Bicep Deploy Common + +This package contains code that is commonly used between the bicep-deploy GitHub Action and ADO Task. + +## Usage + +### Importing +Install this package and reference: +```typescript +import { Logger } from '@azure/bicep-deploy-common'; +``` \ No newline at end of file diff --git a/packages/bicep-deploy-common/package-lock.json b/packages/bicep-deploy-common/package-lock.json new file mode 100644 index 0000000..e68a0c3 --- /dev/null +++ b/packages/bicep-deploy-common/package-lock.json @@ -0,0 +1,4980 @@ +{ + "name": "@azure/bicep-deploy-common", + "version": "0.0.1-dev", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "@azure/bicep-deploy-common", + "version": "0.0.1-dev", + "license": "MIT", + "dependencies": { + "@azure/arm-resources": "^6.0.0", + "@azure/arm-resourcesdeploymentstacks": "^1.0.0", + "@azure/identity": "^4.10.2", + "bicep-node": "^0.0.8", + "yaml": "^2.7.0" + }, + "devDependencies": { + "@types/node": "^22.15.29", + "@vitest/eslint-plugin": "^1.4.3", + "eslint": "^9.39.1", + "eslint-config-prettier": "^10.1.5", + "eslint-plugin-notice": "^1.0.0", + "eslint-plugin-prettier": "^5.5.4", + "ts-node": "^10.9.2", + "tsdown": "^0.16.5", + "typescript": "^5.8.3", + "typescript-eslint": "^8.32.0", + "vitest": "^4.0.10", + "yaml": "^2.7.1" + }, + "engines": { + "node": ">=22" + } + }, + "node_modules/@azure/abort-controller": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@azure/abort-controller/-/abort-controller-2.1.2.tgz", + "integrity": "sha512-nBrLsEWm4J2u5LpAPjxADTlq3trDgVZZXHNKabeXZtpq3d3AbN/KGO82R87rdDz5/lYB024rtEf10/q0urNgsA==", + "license": "MIT", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@azure/arm-resources": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/@azure/arm-resources/-/arm-resources-6.1.0.tgz", + "integrity": "sha512-gGz03vSYd2x7bctxl1Ni6FU5DhwATS5k+H4y3ngqwmCsKi5tshvU8FSLPtbwU0XA3AVTvm4P7XrNyQeD3UXdRw==", + "license": "MIT", + "dependencies": { + "@azure/abort-controller": "^2.1.2", + "@azure/core-auth": "^1.9.0", + "@azure/core-client": "^1.9.2", + "@azure/core-lro": "^2.5.4", + "@azure/core-paging": "^1.6.2", + "@azure/core-rest-pipeline": "^1.19.0", + "tslib": "^2.8.1" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@azure/arm-resourcesdeploymentstacks": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@azure/arm-resourcesdeploymentstacks/-/arm-resourcesdeploymentstacks-1.0.0.tgz", + "integrity": "sha512-A5jbBOe/Gj52eJxRbota8B8JHEvuzf2h6On27kYTPbG8UrghRjkR9XzSM7tkBczVt3p9p3Y91zficFzDfj3ddQ==", + "license": "MIT", + "dependencies": { + "@azure/abort-controller": "^1.0.0", + "@azure/core-auth": "^1.6.0", + "@azure/core-client": "^1.7.0", + "@azure/core-lro": "^2.5.4", + "@azure/core-paging": "^1.2.0", + "@azure/core-rest-pipeline": "^1.14.0", + "tslib": "^2.2.0" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@azure/arm-resourcesdeploymentstacks/node_modules/@azure/abort-controller": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@azure/abort-controller/-/abort-controller-1.1.0.tgz", + "integrity": "sha512-TrRLIoSQVzfAJX9H1JeFjzAoDGcoK1IYX1UImfceTZpsyYfWr09Ss1aHW1y5TrrR3iq6RZLBwJ3E24uwPhwahw==", + "license": "MIT", + "dependencies": { + "tslib": "^2.2.0" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/@azure/core-auth": { + "version": "1.10.1", + "resolved": "https://registry.npmjs.org/@azure/core-auth/-/core-auth-1.10.1.tgz", + "integrity": "sha512-ykRMW8PjVAn+RS6ww5cmK9U2CyH9p4Q88YJwvUslfuMmN98w/2rdGRLPqJYObapBCdzBVeDgYWdJnFPFb7qzpg==", + "license": "MIT", + "dependencies": { + "@azure/abort-controller": "^2.1.2", + "@azure/core-util": "^1.13.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/@azure/core-client": { + "version": "1.10.1", + "resolved": "https://registry.npmjs.org/@azure/core-client/-/core-client-1.10.1.tgz", + "integrity": "sha512-Nh5PhEOeY6PrnxNPsEHRr9eimxLwgLlpmguQaHKBinFYA/RU9+kOYVOQqOrTsCL+KSxrLLl1gD8Dk5BFW/7l/w==", + "license": "MIT", + "dependencies": { + "@azure/abort-controller": "^2.1.2", + "@azure/core-auth": "^1.10.0", + "@azure/core-rest-pipeline": "^1.22.0", + "@azure/core-tracing": "^1.3.0", + "@azure/core-util": "^1.13.0", + "@azure/logger": "^1.3.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/@azure/core-lro": { + "version": "2.7.2", + "resolved": "https://registry.npmjs.org/@azure/core-lro/-/core-lro-2.7.2.tgz", + "integrity": "sha512-0YIpccoX8m/k00O7mDDMdJpbr6mf1yWo2dfmxt5A8XVZVVMz2SSKaEbMCeJRvgQ0IaSlqhjT47p4hVIRRy90xw==", + "license": "MIT", + "dependencies": { + "@azure/abort-controller": "^2.0.0", + "@azure/core-util": "^1.2.0", + "@azure/logger": "^1.0.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@azure/core-paging": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/@azure/core-paging/-/core-paging-1.6.2.tgz", + "integrity": "sha512-YKWi9YuCU04B55h25cnOYZHxXYtEvQEbKST5vqRga7hWY9ydd3FZHdeQF8pyh+acWZvppw13M/LMGx0LABUVMA==", + "license": "MIT", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@azure/core-rest-pipeline": { + "version": "1.22.2", + "resolved": "https://registry.npmjs.org/@azure/core-rest-pipeline/-/core-rest-pipeline-1.22.2.tgz", + "integrity": "sha512-MzHym+wOi8CLUlKCQu12de0nwcq9k9Kuv43j4Wa++CsCpJwps2eeBQwD2Bu8snkxTtDKDx4GwjuR9E8yC8LNrg==", + "license": "MIT", + "dependencies": { + "@azure/abort-controller": "^2.1.2", + "@azure/core-auth": "^1.10.0", + "@azure/core-tracing": "^1.3.0", + "@azure/core-util": "^1.13.0", + "@azure/logger": "^1.3.0", + "@typespec/ts-http-runtime": "^0.3.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/@azure/core-tracing": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/@azure/core-tracing/-/core-tracing-1.3.1.tgz", + "integrity": "sha512-9MWKevR7Hz8kNzzPLfX4EAtGM2b8mr50HPDBvio96bURP/9C+HjdH3sBlLSNNrvRAr5/k/svoH457gB5IKpmwQ==", + "license": "MIT", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/@azure/core-util": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/@azure/core-util/-/core-util-1.13.1.tgz", + "integrity": "sha512-XPArKLzsvl0Hf0CaGyKHUyVgF7oDnhKoP85Xv6M4StF/1AhfORhZudHtOyf2s+FcbuQ9dPRAjB8J2KvRRMUK2A==", + "license": "MIT", + "dependencies": { + "@azure/abort-controller": "^2.1.2", + "@typespec/ts-http-runtime": "^0.3.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/@azure/identity": { + "version": "4.13.0", + "resolved": "https://registry.npmjs.org/@azure/identity/-/identity-4.13.0.tgz", + "integrity": "sha512-uWC0fssc+hs1TGGVkkghiaFkkS7NkTxfnCH+Hdg+yTehTpMcehpok4PgUKKdyCH+9ldu6FhiHRv84Ntqj1vVcw==", + "license": "MIT", + "dependencies": { + "@azure/abort-controller": "^2.0.0", + "@azure/core-auth": "^1.9.0", + "@azure/core-client": "^1.9.2", + "@azure/core-rest-pipeline": "^1.17.0", + "@azure/core-tracing": "^1.0.0", + "@azure/core-util": "^1.11.0", + "@azure/logger": "^1.0.0", + "@azure/msal-browser": "^4.2.0", + "@azure/msal-node": "^3.5.0", + "open": "^10.1.0", + "tslib": "^2.2.0" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/@azure/logger": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@azure/logger/-/logger-1.3.0.tgz", + "integrity": "sha512-fCqPIfOcLE+CGqGPd66c8bZpwAji98tZ4JI9i/mlTNTlsIWslCfpg48s/ypyLxZTump5sypjrKn2/kY7q8oAbA==", + "license": "MIT", + "dependencies": { + "@typespec/ts-http-runtime": "^0.3.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/@azure/msal-browser": { + "version": "4.26.2", + "resolved": "https://registry.npmjs.org/@azure/msal-browser/-/msal-browser-4.26.2.tgz", + "integrity": "sha512-F2U1mEAFsYGC5xzo1KuWc/Sy3CRglU9Ql46cDUx8x/Y3KnAIr1QAq96cIKCk/ZfnVxlvprXWRjNKoEpgLJXLhg==", + "license": "MIT", + "dependencies": { + "@azure/msal-common": "15.13.2" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/@azure/msal-common": { + "version": "15.13.2", + "resolved": "https://registry.npmjs.org/@azure/msal-common/-/msal-common-15.13.2.tgz", + "integrity": "sha512-cNwUoCk3FF8VQ7Ln/MdcJVIv3sF73/OT86cRH81ECsydh7F4CNfIo2OAx6Cegtg8Yv75x4506wN4q+Emo6erOA==", + "license": "MIT", + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/@azure/msal-node": { + "version": "3.8.3", + "resolved": "https://registry.npmjs.org/@azure/msal-node/-/msal-node-3.8.3.tgz", + "integrity": "sha512-Ul7A4gwmaHzYWj2Z5xBDly/W8JSC1vnKgJ898zPMZr0oSf1ah0tiL15sytjycU/PMhDZAlkWtEL1+MzNMU6uww==", + "license": "MIT", + "dependencies": { + "@azure/msal-common": "15.13.2", + "jsonwebtoken": "^9.0.0", + "uuid": "^8.3.0" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/@babel/generator": { + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.28.5.tgz", + "integrity": "sha512-3EwLFhZ38J4VyIP6WNtt2kUdW9dokXA9Cr4IVIFHuCpZ3H8/YFOl5JjZHisrn1fATPBmKKqXzDFvh9fUwHz6CQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.28.5", + "@babel/types": "^7.28.5", + "@jridgewell/gen-mapping": "^0.3.12", + "@jridgewell/trace-mapping": "^0.3.28", + "jsesc": "^3.0.2" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/generator/node_modules/@jridgewell/trace-mapping": { + "version": "0.3.31", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz", + "integrity": "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "node_modules/@babel/helper-string-parser": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz", + "integrity": "sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.28.5.tgz", + "integrity": "sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/parser": { + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.28.5.tgz", + "integrity": "sha512-KKBU1VGYR7ORr3At5HAtUQ+TV3SzRCXmA/8OdDZiLDBIZxVyzXuztPjfLd3BV1PRAQGCMWWSHYhL0F8d5uHBDQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.28.5" + }, + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/types": { + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.28.5.tgz", + "integrity": "sha512-qQ5m48eI/MFLQ5PxQj4PFaprjyCTLI37ElWMmNs0K8Lk3dVeOdNpB3ks8jc7yM5CDmVC73eMVk/trk3fgmrUpA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-string-parser": "^7.27.1", + "@babel/helper-validator-identifier": "^7.28.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@cspotcode/source-map-support": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz", + "integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/trace-mapping": "0.3.9" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@emnapi/core": { + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/@emnapi/core/-/core-1.7.1.tgz", + "integrity": "sha512-o1uhUASyo921r2XtHYOHy7gdkGLge8ghBEQHMWmyJFoXlpU58kIrhhN3w26lpQb6dspetweapMn2CSNwQ8I4wg==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "@emnapi/wasi-threads": "1.1.0", + "tslib": "^2.4.0" + } + }, + "node_modules/@emnapi/runtime": { + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.7.1.tgz", + "integrity": "sha512-PVtJr5CmLwYAU9PZDMITZoR5iAOShYREoR45EyyLrbntV50mdePTgUn4AmOw90Ifcj+x2kRjdzr1HP3RrNiHGA==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "tslib": "^2.4.0" + } + }, + "node_modules/@emnapi/wasi-threads": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@emnapi/wasi-threads/-/wasi-threads-1.1.0.tgz", + "integrity": "sha512-WI0DdZ8xFSbgMjR1sFsKABJ/C5OnRrjT06JXbZKexJGrDuPTzZdDYfFlsgcCXCyf+suG5QU2e/y1Wo2V/OapLQ==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "tslib": "^2.4.0" + } + }, + "node_modules/@esbuild/aix-ppc64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.12.tgz", + "integrity": "sha512-Hhmwd6CInZ3dwpuGTF8fJG6yoWmsToE+vYgD4nytZVxcu1ulHpUQRAB1UJ8+N1Am3Mz4+xOByoQoSZf4D+CpkA==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "aix" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-arm": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.12.tgz", + "integrity": "sha512-VJ+sKvNA/GE7Ccacc9Cha7bpS8nyzVv0jdVgwNDaR4gDMC/2TTRc33Ip8qrNYUcpkOHUT5OZ0bUcNNVZQ9RLlg==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-arm64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.12.tgz", + "integrity": "sha512-6AAmLG7zwD1Z159jCKPvAxZd4y/VTO0VkprYy+3N2FtJ8+BQWFXU+OxARIwA46c5tdD9SsKGZ/1ocqBS/gAKHg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-x64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.12.tgz", + "integrity": "sha512-5jbb+2hhDHx5phYR2By8GTWEzn6I9UqR11Kwf22iKbNpYrsmRB18aX/9ivc5cabcUiAT/wM+YIZ6SG9QO6a8kg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/darwin-arm64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.12.tgz", + "integrity": "sha512-N3zl+lxHCifgIlcMUP5016ESkeQjLj/959RxxNYIthIg+CQHInujFuXeWbWMgnTo4cp5XVHqFPmpyu9J65C1Yg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/darwin-x64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.12.tgz", + "integrity": "sha512-HQ9ka4Kx21qHXwtlTUVbKJOAnmG1ipXhdWTmNXiPzPfWKpXqASVcWdnf2bnL73wgjNrFXAa3yYvBSd9pzfEIpA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.12.tgz", + "integrity": "sha512-gA0Bx759+7Jve03K1S0vkOu5Lg/85dou3EseOGUes8flVOGxbhDDh/iZaoek11Y8mtyKPGF3vP8XhnkDEAmzeg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/freebsd-x64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.12.tgz", + "integrity": "sha512-TGbO26Yw2xsHzxtbVFGEXBFH0FRAP7gtcPE7P5yP7wGy7cXK2oO7RyOhL5NLiqTlBh47XhmIUXuGciXEqYFfBQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-arm": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.12.tgz", + "integrity": "sha512-lPDGyC1JPDou8kGcywY0YILzWlhhnRjdof3UlcoqYmS9El818LLfJJc3PXXgZHrHCAKs/Z2SeZtDJr5MrkxtOw==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-arm64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.12.tgz", + "integrity": "sha512-8bwX7a8FghIgrupcxb4aUmYDLp8pX06rGh5HqDT7bB+8Rdells6mHvrFHHW2JAOPZUbnjUpKTLg6ECyzvas2AQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.12.tgz", + "integrity": "sha512-0y9KrdVnbMM2/vG8KfU0byhUN+EFCny9+8g202gYqSSVMonbsCfLjUO+rCci7pM0WBEtz+oK/PIwHkzxkyharA==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.12.tgz", + "integrity": "sha512-h///Lr5a9rib/v1GGqXVGzjL4TMvVTv+s1DPoxQdz7l/AYv6LDSxdIwzxkrPW438oUXiDtwM10o9PmwS/6Z0Ng==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.12.tgz", + "integrity": "sha512-iyRrM1Pzy9GFMDLsXn1iHUm18nhKnNMWscjmp4+hpafcZjrr2WbT//d20xaGljXDBYHqRcl8HnxbX6uaA/eGVw==", + "cpu": [ + "mips64el" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.12.tgz", + "integrity": "sha512-9meM/lRXxMi5PSUqEXRCtVjEZBGwB7P/D4yT8UG/mwIdze2aV4Vo6U5gD3+RsoHXKkHCfSxZKzmDssVlRj1QQA==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.12.tgz", + "integrity": "sha512-Zr7KR4hgKUpWAwb1f3o5ygT04MzqVrGEGXGLnj15YQDJErYu/BGg+wmFlIDOdJp0PmB0lLvxFIOXZgFRrdjR0w==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.12.tgz", + "integrity": "sha512-MsKncOcgTNvdtiISc/jZs/Zf8d0cl/t3gYWX8J9ubBnVOwlk65UIEEvgBORTiljloIWnBzLs4qhzPkJcitIzIg==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.12.tgz", + "integrity": "sha512-uqZMTLr/zR/ed4jIGnwSLkaHmPjOjJvnm6TVVitAa08SLS9Z0VM8wIRx7gWbJB5/J54YuIMInDquWyYvQLZkgw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/netbsd-arm64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.12.tgz", + "integrity": "sha512-xXwcTq4GhRM7J9A8Gv5boanHhRa/Q9KLVmcyXHCTaM4wKfIpWkdXiMog/KsnxzJ0A1+nD+zoecuzqPmCRyBGjg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.12.tgz", + "integrity": "sha512-Ld5pTlzPy3YwGec4OuHh1aCVCRvOXdH8DgRjfDy/oumVovmuSzWfnSJg+VtakB9Cm0gxNO9BzWkj6mtO1FMXkQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openbsd-arm64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.12.tgz", + "integrity": "sha512-fF96T6KsBo/pkQI950FARU9apGNTSlZGsv1jZBAlcLL1MLjLNIWPBkj5NlSz8aAzYKg+eNqknrUJ24QBybeR5A==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.12.tgz", + "integrity": "sha512-MZyXUkZHjQxUvzK7rN8DJ3SRmrVrke8ZyRusHlP+kuwqTcfWLyqMOE3sScPPyeIXN/mDJIfGXvcMqCgYKekoQw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openharmony-arm64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.25.12.tgz", + "integrity": "sha512-rm0YWsqUSRrjncSXGA7Zv78Nbnw4XL6/dzr20cyrQf7ZmRcsovpcRBdhD43Nuk3y7XIoW2OxMVvwuRvk9XdASg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openharmony" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.12.tgz", + "integrity": "sha512-3wGSCDyuTHQUzt0nV7bocDy72r2lI33QL3gkDNGkod22EsYl04sMf0qLb8luNKTOmgF/eDEDP5BFNwoBKH441w==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.12.tgz", + "integrity": "sha512-rMmLrur64A7+DKlnSuwqUdRKyd3UE7oPJZmnljqEptesKM8wx9J8gx5u0+9Pq0fQQW8vqeKebwNXdfOyP+8Bsg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.12.tgz", + "integrity": "sha512-HkqnmmBoCbCwxUKKNPBixiWDGCpQGVsrQfJoVGYLPT41XWF8lHuE5N6WhVia2n4o5QK5M4tYr21827fNhi4byQ==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.12.tgz", + "integrity": "sha512-alJC0uCZpTFrSL0CCDjcgleBXPnCrEAhTBILpeAp7M/OFgoqtAetfBzX0xM00MUsVVPpVjlPuMbREqnZCXaTnA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@eslint-community/eslint-utils": { + "version": "4.9.0", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.9.0.tgz", + "integrity": "sha512-ayVFHdtZ+hsq1t2Dy24wCmGXGe4q9Gu3smhLYALJrr473ZH27MsnSL+LKUlimp4BWJqMDMLmPpx/Q9R3OAlL4g==", + "dev": true, + "license": "MIT", + "dependencies": { + "eslint-visitor-keys": "^3.4.3" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" + } + }, + "node_modules/@eslint-community/regexpp": { + "version": "4.12.2", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.2.tgz", + "integrity": "sha512-EriSTlt5OC9/7SXkRSCAhfSxxoSUgBm33OH+IkwbdpgoqsSsUg7y3uh+IICI/Qg4BBWr3U2i39RpmycbxMq4ew==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.0.0 || ^14.0.0 || >=16.0.0" + } + }, + "node_modules/@eslint/config-array": { + "version": "0.21.1", + "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.21.1.tgz", + "integrity": "sha512-aw1gNayWpdI/jSYVgzN5pL0cfzU02GT3NBpeT/DXbx1/1x7ZKxFPd9bwrzygx/qiwIQiJ1sw/zD8qY/kRvlGHA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@eslint/object-schema": "^2.1.7", + "debug": "^4.3.1", + "minimatch": "^3.1.2" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/config-array/node_modules/brace-expansion": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/@eslint/config-array/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/@eslint/config-helpers": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/@eslint/config-helpers/-/config-helpers-0.4.2.tgz", + "integrity": "sha512-gBrxN88gOIf3R7ja5K9slwNayVcZgK6SOUORm2uBzTeIEfeVaIhOpCtTox3P6R7o2jLFwLFTLnC7kU/RGcYEgw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@eslint/core": "^0.17.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/core": { + "version": "0.17.0", + "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.17.0.tgz", + "integrity": "sha512-yL/sLrpmtDaFEiUj1osRP4TI2MDz1AddJL+jZ7KSqvBuliN4xqYY54IfdN8qD8Toa6g1iloph1fxQNkjOxrrpQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@types/json-schema": "^7.0.15" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/eslintrc": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.3.1.tgz", + "integrity": "sha512-gtF186CXhIl1p4pJNGZw8Yc6RlshoePRvE0X91oPGb3vZ8pM3qOS9W9NGPat9LziaBV7XrJWGylNQXkGcnM3IQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^10.0.1", + "globals": "^14.0.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "minimatch": "^3.1.2", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@eslint/eslintrc/node_modules/brace-expansion": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/@eslint/eslintrc/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/@eslint/js": { + "version": "9.39.1", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.39.1.tgz", + "integrity": "sha512-S26Stp4zCy88tH94QbBv3XCuzRQiZ9yXofEILmglYTh/Ug/a9/umqvgFtYBAo3Lp0nsI/5/qH1CCrbdK3AP1Tw==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://eslint.org/donate" + } + }, + "node_modules/@eslint/object-schema": { + "version": "2.1.7", + "resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-2.1.7.tgz", + "integrity": "sha512-VtAOaymWVfZcmZbp6E2mympDIHvyjXs/12LqWYjVw6qjrfF+VK+fyG33kChz3nnK+SU5/NeHOqrTEHS8sXO3OA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/plugin-kit": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.4.1.tgz", + "integrity": "sha512-43/qtrDUokr7LJqoF2c3+RInu/t4zfrpYdoSDfYyhg52rwLV6TnOvdG4fXm7IkSB3wErkcmJS9iEhjVtOSEjjA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@eslint/core": "^0.17.0", + "levn": "^0.4.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@humanfs/core": { + "version": "0.19.1", + "resolved": "https://registry.npmjs.org/@humanfs/core/-/core-0.19.1.tgz", + "integrity": "sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=18.18.0" + } + }, + "node_modules/@humanfs/node": { + "version": "0.16.7", + "resolved": "https://registry.npmjs.org/@humanfs/node/-/node-0.16.7.tgz", + "integrity": "sha512-/zUx+yOsIrG4Y43Eh2peDeKCxlRt/gET6aHfaKpuq267qXdYDFViVHfMaLyygZOnl0kGWxFIgsBy8QFuTLUXEQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@humanfs/core": "^0.19.1", + "@humanwhocodes/retry": "^0.4.0" + }, + "engines": { + "node": ">=18.18.0" + } + }, + "node_modules/@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=12.22" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@humanwhocodes/retry": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.4.3.tgz", + "integrity": "sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=18.18" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.13", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz", + "integrity": "sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.5.0", + "@jridgewell/trace-mapping": "^0.3.24" + } + }, + "node_modules/@jridgewell/gen-mapping/node_modules/@jridgewell/trace-mapping": { + "version": "0.3.31", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz", + "integrity": "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.5.5", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz", + "integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==", + "dev": true, + "license": "MIT" + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz", + "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/resolve-uri": "^3.0.3", + "@jridgewell/sourcemap-codec": "^1.4.10" + } + }, + "node_modules/@napi-rs/wasm-runtime": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/@napi-rs/wasm-runtime/-/wasm-runtime-1.0.7.tgz", + "integrity": "sha512-SeDnOO0Tk7Okiq6DbXmmBODgOAb9dp9gjlphokTUxmt8U3liIP1ZsozBahH69j/RJv+Rfs6IwUKHTgQYJ/HBAw==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "@emnapi/core": "^1.5.0", + "@emnapi/runtime": "^1.5.0", + "@tybys/wasm-util": "^0.10.1" + } + }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@oxc-project/runtime": { + "version": "0.96.0", + "resolved": "https://registry.npmjs.org/@oxc-project/runtime/-/runtime-0.96.0.tgz", + "integrity": "sha512-34lh4o9CcSw09Hx6fKihPu85+m+4pmDlkXwJrLvN5nMq5JrcGhhihVM415zDqT8j8IixO1PYYdQZRN4SwQCncg==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxc-project/types": { + "version": "0.98.0", + "resolved": "https://registry.npmjs.org/@oxc-project/types/-/types-0.98.0.tgz", + "integrity": "sha512-Vzmd6FsqVuz5HQVcRC/hrx7Ujo3WEVeQP7C2UNP5uy1hUY4SQvMB+93jxkI1KRHz9a/6cni3glPOtvteN+zpsw==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/Boshen" + } + }, + "node_modules/@pkgr/core": { + "version": "0.2.9", + "resolved": "https://registry.npmjs.org/@pkgr/core/-/core-0.2.9.tgz", + "integrity": "sha512-QNqXyfVS2wm9hweSYD2O7F0G06uurj9kZ96TRQE5Y9hU7+tgdZwIkbAKc5Ocy1HxEY2kuDQa6cQ1WRs/O5LFKA==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.20.0 || ^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/pkgr" + } + }, + "node_modules/@quansync/fs": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/@quansync/fs/-/fs-0.1.5.tgz", + "integrity": "sha512-lNS9hL2aS2NZgNW7BBj+6EBl4rOf8l+tQ0eRY6JWCI8jI2kc53gSoqbjojU0OnAWhzoXiOjFyGsHcDGePB3lhA==", + "dev": true, + "license": "MIT", + "dependencies": { + "quansync": "^0.2.11" + }, + "funding": { + "url": "https://github.com/sponsors/sxzz" + } + }, + "node_modules/@rolldown/binding-android-arm64": { + "version": "1.0.0-beta.51", + "resolved": "https://registry.npmjs.org/@rolldown/binding-android-arm64/-/binding-android-arm64-1.0.0-beta.51.tgz", + "integrity": "sha512-Ctn8FUXKWWQI9pWC61P1yumS9WjQtelNS9riHwV7oCkknPGaAry4o7eFx2KgoLMnI2BgFJYpW7Im8/zX3BuONg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-darwin-arm64": { + "version": "1.0.0-beta.51", + "resolved": "https://registry.npmjs.org/@rolldown/binding-darwin-arm64/-/binding-darwin-arm64-1.0.0-beta.51.tgz", + "integrity": "sha512-EL1aRW2Oq15ShUEkBPsDtLMO8GTqfb/ktM/dFaVzXKQiEE96Ss6nexMgfgQrg8dGnNpndFyffVDb5IdSibsu1g==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-darwin-x64": { + "version": "1.0.0-beta.51", + "resolved": "https://registry.npmjs.org/@rolldown/binding-darwin-x64/-/binding-darwin-x64-1.0.0-beta.51.tgz", + "integrity": "sha512-uGtYKlFen9pMIPvkHPWZVDtmYhMQi5g5Ddsndg1gf3atScKYKYgs5aDP4DhHeTwGXQglhfBG7lEaOIZ4UAIWww==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-freebsd-x64": { + "version": "1.0.0-beta.51", + "resolved": "https://registry.npmjs.org/@rolldown/binding-freebsd-x64/-/binding-freebsd-x64-1.0.0-beta.51.tgz", + "integrity": "sha512-JRoVTQtHYbZj1P07JLiuTuXjiBtIa7ag7/qgKA6CIIXnAcdl4LrOf7nfDuHPJcuRKaP5dzecMgY99itvWfmUFQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-linux-arm-gnueabihf": { + "version": "1.0.0-beta.51", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm-gnueabihf/-/binding-linux-arm-gnueabihf-1.0.0-beta.51.tgz", + "integrity": "sha512-BKATVnpPZ0TYBW9XfDwyd4kPGgvf964HiotIwUgpMrFOFYWqpZ+9ONNzMV4UFAYC7Hb5C2qgYQk/qj2OnAd4RQ==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-linux-arm64-gnu": { + "version": "1.0.0-beta.51", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-1.0.0-beta.51.tgz", + "integrity": "sha512-xLd7da5jkfbVsBCm1buIRdWtuXY8+hU3+6ESXY/Tk5X5DPHaifrUblhYDgmA34dQt6WyNC2kfXGgrduPEvDI6Q==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-linux-arm64-musl": { + "version": "1.0.0-beta.51", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm64-musl/-/binding-linux-arm64-musl-1.0.0-beta.51.tgz", + "integrity": "sha512-EQFXTgHxxTzv3t5EmjUP/DfxzFYx9sMndfLsYaAY4DWF6KsK1fXGYsiupif6qPTViPC9eVmRm78q0pZU/kuIPg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-linux-x64-gnu": { + "version": "1.0.0-beta.51", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-x64-gnu/-/binding-linux-x64-gnu-1.0.0-beta.51.tgz", + "integrity": "sha512-p5P6Xpa68w3yFaAdSzIZJbj+AfuDnMDqNSeglBXM7UlJT14Q4zwK+rV+8Mhp9MiUb4XFISZtbI/seBprhkQbiQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-linux-x64-musl": { + "version": "1.0.0-beta.51", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-x64-musl/-/binding-linux-x64-musl-1.0.0-beta.51.tgz", + "integrity": "sha512-sNVVyLa8HB8wkFipdfz1s6i0YWinwpbMWk5hO5S+XAYH2UH67YzUT13gs6wZTKg2x/3gtgXzYnHyF5wMIqoDAw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-openharmony-arm64": { + "version": "1.0.0-beta.51", + "resolved": "https://registry.npmjs.org/@rolldown/binding-openharmony-arm64/-/binding-openharmony-arm64-1.0.0-beta.51.tgz", + "integrity": "sha512-e/JMTz9Q8+T3g/deEi8DK44sFWZWGKr9AOCW5e8C8SCVWzAXqYXAG7FXBWBNzWEZK0Rcwo9TQHTQ9Q0gXgdCaA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openharmony" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-wasm32-wasi": { + "version": "1.0.0-beta.51", + "resolved": "https://registry.npmjs.org/@rolldown/binding-wasm32-wasi/-/binding-wasm32-wasi-1.0.0-beta.51.tgz", + "integrity": "sha512-We3LWqSu6J9s5Y0MK+N7fUiiu37aBGPG3Pc347EoaROuAwkCS2u9xJ5dpIyLW4B49CIbS3KaPmn4kTgPb3EyPw==", + "cpu": [ + "wasm32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "@napi-rs/wasm-runtime": "^1.0.7" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@rolldown/binding-win32-arm64-msvc": { + "version": "1.0.0-beta.51", + "resolved": "https://registry.npmjs.org/@rolldown/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-1.0.0-beta.51.tgz", + "integrity": "sha512-fj56buHRuMM+r/cb6ZYfNjNvO/0xeFybI6cTkTROJatdP4fvmQ1NS8D/Lm10FCSDEOkqIz8hK3TGpbAThbPHsA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-win32-ia32-msvc": { + "version": "1.0.0-beta.51", + "resolved": "https://registry.npmjs.org/@rolldown/binding-win32-ia32-msvc/-/binding-win32-ia32-msvc-1.0.0-beta.51.tgz", + "integrity": "sha512-fkqEqaeEx8AySXiDm54b/RdINb3C0VovzJA3osMhZsbn6FoD73H0AOIiaVAtGr6x63hefruVKTX8irAm4Jkt2w==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-win32-x64-msvc": { + "version": "1.0.0-beta.51", + "resolved": "https://registry.npmjs.org/@rolldown/binding-win32-x64-msvc/-/binding-win32-x64-msvc-1.0.0-beta.51.tgz", + "integrity": "sha512-CWuLG/HMtrVcjKGa0C4GnuxONrku89g0+CsH8nT0SNhOtREXuzwgjIXNJImpE/A/DMf9JF+1Xkrq/YRr+F/rCg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/pluginutils": { + "version": "1.0.0-beta.51", + "resolved": "https://registry.npmjs.org/@rolldown/pluginutils/-/pluginutils-1.0.0-beta.51.tgz", + "integrity": "sha512-51/8cNXMrqWqX3o8DZidhwz1uYq0BhHDDSfVygAND1Skx5s1TDw3APSSxCMcFFedwgqGcx34gRouwY+m404BBQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/@rollup/rollup-android-arm-eabi": { + "version": "4.53.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.53.3.tgz", + "integrity": "sha512-mRSi+4cBjrRLoaal2PnqH82Wqyb+d3HsPUN/W+WslCXsZsyHa9ZeQQX/pQsZaVIWDkPcpV6jJ+3KLbTbgnwv8w==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-android-arm64": { + "version": "4.53.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.53.3.tgz", + "integrity": "sha512-CbDGaMpdE9sh7sCmTrTUyllhrg65t6SwhjlMJsLr+J8YjFuPmCEjbBSx4Z/e4SmDyH3aB5hGaJUP2ltV/vcs4w==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-darwin-arm64": { + "version": "4.53.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.53.3.tgz", + "integrity": "sha512-Nr7SlQeqIBpOV6BHHGZgYBuSdanCXuw09hon14MGOLGmXAFYjx1wNvquVPmpZnl0tLjg25dEdr4IQ6GgyToCUA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-darwin-x64": { + "version": "4.53.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.53.3.tgz", + "integrity": "sha512-DZ8N4CSNfl965CmPktJ8oBnfYr3F8dTTNBQkRlffnUarJ2ohudQD17sZBa097J8xhQ26AwhHJ5mvUyQW8ddTsQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-freebsd-arm64": { + "version": "4.53.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.53.3.tgz", + "integrity": "sha512-yMTrCrK92aGyi7GuDNtGn2sNW+Gdb4vErx4t3Gv/Tr+1zRb8ax4z8GWVRfr3Jw8zJWvpGHNpss3vVlbF58DZ4w==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@rollup/rollup-freebsd-x64": { + "version": "4.53.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.53.3.tgz", + "integrity": "sha512-lMfF8X7QhdQzseM6XaX0vbno2m3hlyZFhwcndRMw8fbAGUGL3WFMBdK0hbUBIUYcEcMhVLr1SIamDeuLBnXS+Q==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@rollup/rollup-linux-arm-gnueabihf": { + "version": "4.53.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.53.3.tgz", + "integrity": "sha512-k9oD15soC/Ln6d2Wv/JOFPzZXIAIFLp6B+i14KhxAfnq76ajt0EhYc5YPeX6W1xJkAdItcVT+JhKl1QZh44/qw==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm-musleabihf": { + "version": "4.53.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.53.3.tgz", + "integrity": "sha512-vTNlKq+N6CK/8UktsrFuc+/7NlEYVxgaEgRXVUVK258Z5ymho29skzW1sutgYjqNnquGwVUObAaxae8rZ6YMhg==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-gnu": { + "version": "4.53.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.53.3.tgz", + "integrity": "sha512-RGrFLWgMhSxRs/EWJMIFM1O5Mzuz3Xy3/mnxJp/5cVhZ2XoCAxJnmNsEyeMJtpK+wu0FJFWz+QF4mjCA7AUQ3w==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-musl": { + "version": "4.53.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.53.3.tgz", + "integrity": "sha512-kASyvfBEWYPEwe0Qv4nfu6pNkITLTb32p4yTgzFCocHnJLAHs+9LjUu9ONIhvfT/5lv4YS5muBHyuV84epBo/A==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-loong64-gnu": { + "version": "4.53.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-gnu/-/rollup-linux-loong64-gnu-4.53.3.tgz", + "integrity": "sha512-JiuKcp2teLJwQ7vkJ95EwESWkNRFJD7TQgYmCnrPtlu50b4XvT5MOmurWNrCj3IFdyjBQ5p9vnrX4JM6I8OE7g==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-ppc64-gnu": { + "version": "4.53.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.53.3.tgz", + "integrity": "sha512-EoGSa8nd6d3T7zLuqdojxC20oBfNT8nexBbB/rkxgKj5T5vhpAQKKnD+h3UkoMuTyXkP5jTjK/ccNRmQrPNDuw==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-gnu": { + "version": "4.53.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.53.3.tgz", + "integrity": "sha512-4s+Wped2IHXHPnAEbIB0YWBv7SDohqxobiiPA1FIWZpX+w9o2i4LezzH/NkFUl8LRci/8udci6cLq+jJQlh+0g==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-musl": { + "version": "4.53.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.53.3.tgz", + "integrity": "sha512-68k2g7+0vs2u9CxDt5ktXTngsxOQkSEV/xBbwlqYcUrAVh6P9EgMZvFsnHy4SEiUl46Xf0IObWVbMvPrr2gw8A==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-s390x-gnu": { + "version": "4.53.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.53.3.tgz", + "integrity": "sha512-VYsFMpULAz87ZW6BVYw3I6sWesGpsP9OPcyKe8ofdg9LHxSbRMd7zrVrr5xi/3kMZtpWL/wC+UIJWJYVX5uTKg==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-gnu": { + "version": "4.53.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.53.3.tgz", + "integrity": "sha512-3EhFi1FU6YL8HTUJZ51imGJWEX//ajQPfqWLI3BQq4TlvHy4X0MOr5q3D2Zof/ka0d5FNdPwZXm3Yyib/UEd+w==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-musl": { + "version": "4.53.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.53.3.tgz", + "integrity": "sha512-eoROhjcc6HbZCJr+tvVT8X4fW3/5g/WkGvvmwz/88sDtSJzO7r/blvoBDgISDiCjDRZmHpwud7h+6Q9JxFwq1Q==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-openharmony-arm64": { + "version": "4.53.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.53.3.tgz", + "integrity": "sha512-OueLAWgrNSPGAdUdIjSWXw+u/02BRTcnfw9PN41D2vq/JSEPnJnVuBgw18VkN8wcd4fjUs+jFHVM4t9+kBSNLw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openharmony" + ] + }, + "node_modules/@rollup/rollup-win32-arm64-msvc": { + "version": "4.53.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.53.3.tgz", + "integrity": "sha512-GOFuKpsxR/whszbF/bzydebLiXIHSgsEUp6M0JI8dWvi+fFa1TD6YQa4aSZHtpmh2/uAlj/Dy+nmby3TJ3pkTw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-ia32-msvc": { + "version": "4.53.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.53.3.tgz", + "integrity": "sha512-iah+THLcBJdpfZ1TstDFbKNznlzoxa8fmnFYK4V67HvmuNYkVdAywJSoteUszvBQ9/HqN2+9AZghbajMsFT+oA==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-x64-gnu": { + "version": "4.53.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-gnu/-/rollup-win32-x64-gnu-4.53.3.tgz", + "integrity": "sha512-J9QDiOIZlZLdcot5NXEepDkstocktoVjkaKUtqzgzpt2yWjGlbYiKyp05rWwk4nypbYUNoFAztEgixoLaSETkg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-x64-msvc": { + "version": "4.53.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.53.3.tgz", + "integrity": "sha512-UhTd8u31dXadv0MopwGgNOBpUVROFKWVQgAg5N1ESyCz8AuBcMqm4AuTjrwgQKGDfoFuz02EuMRHQIw/frmYKQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@standard-schema/spec": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@standard-schema/spec/-/spec-1.0.0.tgz", + "integrity": "sha512-m2bOd0f2RT9k8QJx1JN85cZYyH1RqFBdlwtkSlf4tBDYLCiiZnv1fIIwacK6cqwXavOydf0NPToMQgpKq+dVlA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@tsconfig/node10": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.12.tgz", + "integrity": "sha512-UCYBaeFvM11aU2y3YPZ//O5Rhj+xKyzy7mvcIoAjASbigy8mHMryP5cK7dgjlz2hWxh1g5pLw084E0a/wlUSFQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/@tsconfig/node12": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz", + "integrity": "sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==", + "dev": true, + "license": "MIT" + }, + "node_modules/@tsconfig/node14": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz", + "integrity": "sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==", + "dev": true, + "license": "MIT" + }, + "node_modules/@tsconfig/node16": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.4.tgz", + "integrity": "sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@tybys/wasm-util": { + "version": "0.10.1", + "resolved": "https://registry.npmjs.org/@tybys/wasm-util/-/wasm-util-0.10.1.tgz", + "integrity": "sha512-9tTaPJLSiejZKx+Bmog4uSubteqTvFrVrURwkmHixBo0G4seD0zUxp98E1DzUBJxLQ3NPwXrGKDiVjwx/DpPsg==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "tslib": "^2.4.0" + } + }, + "node_modules/@types/chai": { + "version": "5.2.3", + "resolved": "https://registry.npmjs.org/@types/chai/-/chai-5.2.3.tgz", + "integrity": "sha512-Mw558oeA9fFbv65/y4mHtXDs9bPnFMZAL/jxdPFUpOHHIXX91mcgEHbS5Lahr+pwZFR8A7GQleRWeI6cGFC2UA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/deep-eql": "*", + "assertion-error": "^2.0.1" + } + }, + "node_modules/@types/deep-eql": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@types/deep-eql/-/deep-eql-4.0.2.tgz", + "integrity": "sha512-c9h9dVVMigMPc4bwTvC5dxqtqJZwQPePsWjPlpSOnojbor6pGqdk541lfA7AqFQr5pB1BRdq0juY9db81BwyFw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/estree": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz", + "integrity": "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/json-schema": { + "version": "7.0.15", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", + "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/node": { + "version": "22.19.1", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.19.1.tgz", + "integrity": "sha512-LCCV0HdSZZZb34qifBsyWlUmok6W7ouER+oQIGBScS8EsZsQbrtFTUrDX4hOl+CS6p7cnNC4td+qrSVGSCTUfQ==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "undici-types": "~6.21.0" + } + }, + "node_modules/@typescript-eslint/eslint-plugin": { + "version": "8.47.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.47.0.tgz", + "integrity": "sha512-fe0rz9WJQ5t2iaLfdbDc9T80GJy0AeO453q8C3YCilnGozvOyCG5t+EZtg7j7D88+c3FipfP/x+wzGnh1xp8ZA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/regexpp": "^4.10.0", + "@typescript-eslint/scope-manager": "8.47.0", + "@typescript-eslint/type-utils": "8.47.0", + "@typescript-eslint/utils": "8.47.0", + "@typescript-eslint/visitor-keys": "8.47.0", + "graphemer": "^1.4.0", + "ignore": "^7.0.0", + "natural-compare": "^1.4.0", + "ts-api-utils": "^2.1.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "@typescript-eslint/parser": "^8.47.0", + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <6.0.0" + } + }, + "node_modules/@typescript-eslint/eslint-plugin/node_modules/ignore": { + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-7.0.5.tgz", + "integrity": "sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/@typescript-eslint/parser": { + "version": "8.47.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.47.0.tgz", + "integrity": "sha512-lJi3PfxVmo0AkEY93ecfN+r8SofEqZNGByvHAI3GBLrvt1Cw6H5k1IM02nSzu0RfUafr2EvFSw0wAsZgubNplQ==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@typescript-eslint/scope-manager": "8.47.0", + "@typescript-eslint/types": "8.47.0", + "@typescript-eslint/typescript-estree": "8.47.0", + "@typescript-eslint/visitor-keys": "8.47.0", + "debug": "^4.3.4" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <6.0.0" + } + }, + "node_modules/@typescript-eslint/project-service": { + "version": "8.47.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.47.0.tgz", + "integrity": "sha512-2X4BX8hUeB5JcA1TQJ7GjcgulXQ+5UkNb0DL8gHsHUHdFoiCTJoYLTpib3LtSDPZsRET5ygN4qqIWrHyYIKERA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/tsconfig-utils": "^8.47.0", + "@typescript-eslint/types": "^8.47.0", + "debug": "^4.3.4" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "typescript": ">=4.8.4 <6.0.0" + } + }, + "node_modules/@typescript-eslint/scope-manager": { + "version": "8.47.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.47.0.tgz", + "integrity": "sha512-a0TTJk4HXMkfpFkL9/WaGTNuv7JWfFTQFJd6zS9dVAjKsojmv9HT55xzbEpnZoY+VUb+YXLMp+ihMLz/UlZfDg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "8.47.0", + "@typescript-eslint/visitor-keys": "8.47.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/tsconfig-utils": { + "version": "8.47.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.47.0.tgz", + "integrity": "sha512-ybUAvjy4ZCL11uryalkKxuT3w3sXJAuWhOoGS3T/Wu+iUu1tGJmk5ytSY8gbdACNARmcYEB0COksD2j6hfGK2g==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "typescript": ">=4.8.4 <6.0.0" + } + }, + "node_modules/@typescript-eslint/type-utils": { + "version": "8.47.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.47.0.tgz", + "integrity": "sha512-QC9RiCmZ2HmIdCEvhd1aJELBlD93ErziOXXlHEZyuBo3tBiAZieya0HLIxp+DoDWlsQqDawyKuNEhORyku+P8A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "8.47.0", + "@typescript-eslint/typescript-estree": "8.47.0", + "@typescript-eslint/utils": "8.47.0", + "debug": "^4.3.4", + "ts-api-utils": "^2.1.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <6.0.0" + } + }, + "node_modules/@typescript-eslint/types": { + "version": "8.47.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.47.0.tgz", + "integrity": "sha512-nHAE6bMKsizhA2uuYZbEbmp5z2UpffNrPEqiKIeN7VsV6UY/roxanWfoRrf6x/k9+Obf+GQdkm0nPU+vnMXo9A==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/typescript-estree": { + "version": "8.47.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.47.0.tgz", + "integrity": "sha512-k6ti9UepJf5NpzCjH31hQNLHQWupTRPhZ+KFF8WtTuTpy7uHPfeg2NM7cP27aCGajoEplxJDFVCEm9TGPYyiVg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/project-service": "8.47.0", + "@typescript-eslint/tsconfig-utils": "8.47.0", + "@typescript-eslint/types": "8.47.0", + "@typescript-eslint/visitor-keys": "8.47.0", + "debug": "^4.3.4", + "fast-glob": "^3.3.2", + "is-glob": "^4.0.3", + "minimatch": "^9.0.4", + "semver": "^7.6.0", + "ts-api-utils": "^2.1.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "typescript": ">=4.8.4 <6.0.0" + } + }, + "node_modules/@typescript-eslint/utils": { + "version": "8.47.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.47.0.tgz", + "integrity": "sha512-g7XrNf25iL4TJOiPqatNuaChyqt49a/onq5YsJ9+hXeugK+41LVg7AxikMfM02PC6jbNtZLCJj6AUcQXJS/jGQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/eslint-utils": "^4.7.0", + "@typescript-eslint/scope-manager": "8.47.0", + "@typescript-eslint/types": "8.47.0", + "@typescript-eslint/typescript-estree": "8.47.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <6.0.0" + } + }, + "node_modules/@typescript-eslint/visitor-keys": { + "version": "8.47.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.47.0.tgz", + "integrity": "sha512-SIV3/6eftCy1bNzCQoPmbWsRLujS8t5iDIZ4spZOBHqrM+yfX2ogg8Tt3PDTAVKw3sSCiUgg30uOAvK2r9zGjQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "8.47.0", + "eslint-visitor-keys": "^4.2.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/visitor-keys/node_modules/eslint-visitor-keys": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz", + "integrity": "sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@typespec/ts-http-runtime": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/@typespec/ts-http-runtime/-/ts-http-runtime-0.3.2.tgz", + "integrity": "sha512-IlqQ/Gv22xUC1r/WQm4StLkYQmaaTsXAhUVsNE0+xiyf0yRFiH5++q78U3bw6bLKDCTmh0uqKB9eG9+Bt75Dkg==", + "license": "MIT", + "dependencies": { + "http-proxy-agent": "^7.0.0", + "https-proxy-agent": "^7.0.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/@vitest/eslint-plugin": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/@vitest/eslint-plugin/-/eslint-plugin-1.4.3.tgz", + "integrity": "sha512-ba+YDKyZdViNAOg8P86a9tIEawPA/O+nLbwhg8g7nkqsLOAVum6GoZhkNxgwX621oqWAbB8N2xb+G5kkpXehcA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/scope-manager": "^8.46.1", + "@typescript-eslint/utils": "^8.46.1" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "eslint": ">=8.57.0", + "typescript": ">=5.0.0", + "vitest": "*" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + }, + "vitest": { + "optional": true + } + } + }, + "node_modules/@vitest/expect": { + "version": "4.0.14", + "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-4.0.14.tgz", + "integrity": "sha512-RHk63V3zvRiYOWAV0rGEBRO820ce17hz7cI2kDmEdfQsBjT2luEKB5tCOc91u1oSQoUOZkSv3ZyzkdkSLD7lKw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@standard-schema/spec": "^1.0.0", + "@types/chai": "^5.2.2", + "@vitest/spy": "4.0.14", + "@vitest/utils": "4.0.14", + "chai": "^6.2.1", + "tinyrainbow": "^3.0.3" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/@vitest/mocker": { + "version": "4.0.14", + "resolved": "https://registry.npmjs.org/@vitest/mocker/-/mocker-4.0.14.tgz", + "integrity": "sha512-RzS5NujlCzeRPF1MK7MXLiEFpkIXeMdQ+rN3Kk3tDI9j0mtbr7Nmuq67tpkOJQpgyClbOltCXMjLZicJHsH5Cg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vitest/spy": "4.0.14", + "estree-walker": "^3.0.3", + "magic-string": "^0.30.21" + }, + "funding": { + "url": "https://opencollective.com/vitest" + }, + "peerDependencies": { + "msw": "^2.4.9", + "vite": "^6.0.0 || ^7.0.0-0" + }, + "peerDependenciesMeta": { + "msw": { + "optional": true + }, + "vite": { + "optional": true + } + } + }, + "node_modules/@vitest/pretty-format": { + "version": "4.0.14", + "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-4.0.14.tgz", + "integrity": "sha512-SOYPgujB6TITcJxgd3wmsLl+wZv+fy3av2PpiPpsWPZ6J1ySUYfScfpIt2Yv56ShJXR2MOA6q2KjKHN4EpdyRQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "tinyrainbow": "^3.0.3" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/@vitest/runner": { + "version": "4.0.14", + "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-4.0.14.tgz", + "integrity": "sha512-BsAIk3FAqxICqREbX8SetIteT8PiaUL/tgJjmhxJhCsigmzzH8xeadtp7LRnTpCVzvf0ib9BgAfKJHuhNllKLw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vitest/utils": "4.0.14", + "pathe": "^2.0.3" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/@vitest/snapshot": { + "version": "4.0.14", + "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-4.0.14.tgz", + "integrity": "sha512-aQVBfT1PMzDSA16Y3Fp45a0q8nKexx6N5Amw3MX55BeTeZpoC08fGqEZqVmPcqN0ueZsuUQ9rriPMhZ3Mu19Ag==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vitest/pretty-format": "4.0.14", + "magic-string": "^0.30.21", + "pathe": "^2.0.3" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/@vitest/spy": { + "version": "4.0.14", + "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-4.0.14.tgz", + "integrity": "sha512-JmAZT1UtZooO0tpY3GRyiC/8W7dCs05UOq9rfsUUgEZEdq+DuHLmWhPsrTt0TiW7WYeL/hXpaE07AZ2RCk44hg==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/@vitest/utils": { + "version": "4.0.14", + "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-4.0.14.tgz", + "integrity": "sha512-hLqXZKAWNg8pI+SQXyXxWCTOpA3MvsqcbVeNgSi8x/CSN2wi26dSzn1wrOhmCmFjEvN9p8/kLFRHa6PI8jHazw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vitest/pretty-format": "4.0.14", + "tinyrainbow": "^3.0.3" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/acorn": { + "version": "8.15.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz", + "integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==", + "dev": true, + "license": "MIT", + "peer": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/acorn-walk": { + "version": "8.3.4", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.4.tgz", + "integrity": "sha512-ueEepnujpqee2o5aIYnvHU6C0A42MNdsIDeqy5BydrkuC5R1ZuUFnm27EeFJGoEHJQgn3uleRvmTXaJgfXbt4g==", + "dev": true, + "license": "MIT", + "dependencies": { + "acorn": "^8.11.0" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/agent-base": { + "version": "7.1.4", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.4.tgz", + "integrity": "sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==", + "license": "MIT", + "engines": { + "node": ">= 14" + } + }, + "node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/ansis": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/ansis/-/ansis-4.2.0.tgz", + "integrity": "sha512-HqZ5rWlFjGiV0tDm3UxxgNRqsOTniqoKZu0pIAfh7TZQMGuZK+hH0drySty0si0QXj1ieop4+SkSfPZBPPkHig==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=14" + } + }, + "node_modules/arg": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", + "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==", + "dev": true, + "license": "MIT" + }, + "node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true, + "license": "Python-2.0" + }, + "node_modules/assertion-error": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-2.0.1.tgz", + "integrity": "sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + } + }, + "node_modules/ast-kit": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/ast-kit/-/ast-kit-2.2.0.tgz", + "integrity": "sha512-m1Q/RaVOnTp9JxPX+F+Zn7IcLYMzM8kZofDImfsKZd8MbR+ikdOzTeztStWqfrqIxZnYWryyI9ePm3NGjnZgGw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.28.5", + "pathe": "^2.0.3" + }, + "engines": { + "node": ">=20.19.0" + }, + "funding": { + "url": "https://github.com/sponsors/sxzz" + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true, + "license": "MIT" + }, + "node_modules/bicep-node": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/bicep-node/-/bicep-node-0.0.8.tgz", + "integrity": "sha512-SnX3kgubsKkAy4bMtYyLcDiY9d+xmESo5KXvtN2W6c50kKL49a0icp/XFLDXbsHcnvro7gAIpwGvIOZPauIZwQ==", + "license": "MIT", + "dependencies": { + "node-fetch": "^2.7.0", + "vscode-jsonrpc": "^8.2.0" + } + }, + "node_modules/birpc": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/birpc/-/birpc-2.8.0.tgz", + "integrity": "sha512-Bz2a4qD/5GRhiHSwj30c/8kC8QGj12nNDwz3D4ErQ4Xhy35dsSDvF+RA/tWpjyU0pdGtSDiEk6B5fBGE1qNVhw==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/brace-expansion": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", + "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/braces": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", + "dev": true, + "license": "MIT", + "dependencies": { + "fill-range": "^7.1.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/buffer-equal-constant-time": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz", + "integrity": "sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA==", + "license": "BSD-3-Clause" + }, + "node_modules/bundle-name": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/bundle-name/-/bundle-name-4.1.0.tgz", + "integrity": "sha512-tjwM5exMg6BGRI+kNmTntNsvdZS1X8BFYS6tnJ2hdH0kVxM6/eVZ2xy+FqStSWvYmtfFMDLIxurorHwDKfDz5Q==", + "license": "MIT", + "dependencies": { + "run-applescript": "^7.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/cac": { + "version": "6.7.14", + "resolved": "https://registry.npmjs.org/cac/-/cac-6.7.14.tgz", + "integrity": "sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/chai": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/chai/-/chai-6.2.1.tgz", + "integrity": "sha512-p4Z49OGG5W/WBCPSS/dH3jQ73kD6tiMmUM+bckNK6Jr5JHMG3k9bg/BvKR8lKmtVBKmOiuVaV2ws8s9oSbwysg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + } + }, + "node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/chokidar": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-4.0.3.tgz", + "integrity": "sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==", + "dev": true, + "license": "MIT", + "dependencies": { + "readdirp": "^4.0.1" + }, + "engines": { + "node": ">= 14.16.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true, + "license": "MIT" + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true, + "license": "MIT" + }, + "node_modules/create-require": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", + "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/cross-spawn": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", + "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", + "dev": true, + "license": "MIT", + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/debug": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", + "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/default-browser": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/default-browser/-/default-browser-5.4.0.tgz", + "integrity": "sha512-XDuvSq38Hr1MdN47EDvYtx3U0MTqpCEn+F6ft8z2vYDzMrvQhVp0ui9oQdqW3MvK3vqUETglt1tVGgjLuJ5izg==", + "license": "MIT", + "dependencies": { + "bundle-name": "^4.1.0", + "default-browser-id": "^5.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/default-browser-id": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/default-browser-id/-/default-browser-id-5.0.1.tgz", + "integrity": "sha512-x1VCxdX4t+8wVfd1so/9w+vQ4vx7lKd2Qp5tDRutErwmR85OgmfX7RlLRMWafRMY7hbEiXIbudNrjOAPa/hL8Q==", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/define-lazy-prop": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-3.0.0.tgz", + "integrity": "sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/diff": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", + "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.3.1" + } + }, + "node_modules/dts-resolver": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/dts-resolver/-/dts-resolver-2.1.3.tgz", + "integrity": "sha512-bihc7jPC90VrosXNzK0LTE2cuLP6jr0Ro8jk+kMugHReJVLIpHz/xadeq3MhuwyO4TD4OA3L1Q8pBBFRc08Tsw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=20.19.0" + }, + "funding": { + "url": "https://github.com/sponsors/sxzz" + }, + "peerDependencies": { + "oxc-resolver": ">=11.0.0" + }, + "peerDependenciesMeta": { + "oxc-resolver": { + "optional": true + } + } + }, + "node_modules/ecdsa-sig-formatter": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz", + "integrity": "sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==", + "license": "Apache-2.0", + "dependencies": { + "safe-buffer": "^5.0.1" + } + }, + "node_modules/empathic": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/empathic/-/empathic-2.0.0.tgz", + "integrity": "sha512-i6UzDscO/XfAcNYD75CfICkmfLedpyPDdozrLMmQc5ORaQcdMoc21OnlEylMIqI7U8eniKrPMxxtj8k0vhmJhA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=14" + } + }, + "node_modules/es-module-lexer": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.7.0.tgz", + "integrity": "sha512-jEQoCwk8hyb2AZziIOLhDqpm5+2ww5uIE6lkO/6jcOCusfk6LhMHpXXfBLXTZ7Ydyt0j4VoUQv6uGNYbdW+kBA==", + "dev": true, + "license": "MIT" + }, + "node_modules/esbuild": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.12.tgz", + "integrity": "sha512-bbPBYYrtZbkt6Os6FiTLCTFxvq4tt3JKall1vRwshA3fdVztsLAatFaZobhkBC8/BrPetoa0oksYoKXoG4ryJg==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=18" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.25.12", + "@esbuild/android-arm": "0.25.12", + "@esbuild/android-arm64": "0.25.12", + "@esbuild/android-x64": "0.25.12", + "@esbuild/darwin-arm64": "0.25.12", + "@esbuild/darwin-x64": "0.25.12", + "@esbuild/freebsd-arm64": "0.25.12", + "@esbuild/freebsd-x64": "0.25.12", + "@esbuild/linux-arm": "0.25.12", + "@esbuild/linux-arm64": "0.25.12", + "@esbuild/linux-ia32": "0.25.12", + "@esbuild/linux-loong64": "0.25.12", + "@esbuild/linux-mips64el": "0.25.12", + "@esbuild/linux-ppc64": "0.25.12", + "@esbuild/linux-riscv64": "0.25.12", + "@esbuild/linux-s390x": "0.25.12", + "@esbuild/linux-x64": "0.25.12", + "@esbuild/netbsd-arm64": "0.25.12", + "@esbuild/netbsd-x64": "0.25.12", + "@esbuild/openbsd-arm64": "0.25.12", + "@esbuild/openbsd-x64": "0.25.12", + "@esbuild/openharmony-arm64": "0.25.12", + "@esbuild/sunos-x64": "0.25.12", + "@esbuild/win32-arm64": "0.25.12", + "@esbuild/win32-ia32": "0.25.12", + "@esbuild/win32-x64": "0.25.12" + } + }, + "node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint": { + "version": "9.39.1", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.39.1.tgz", + "integrity": "sha512-BhHmn2yNOFA9H9JmmIVKJmd288g9hrVRDkdoIgRCRuSySRUHH7r/DI6aAXW9T1WwUuY3DFgrcaqB+deURBLR5g==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@eslint-community/eslint-utils": "^4.8.0", + "@eslint-community/regexpp": "^4.12.1", + "@eslint/config-array": "^0.21.1", + "@eslint/config-helpers": "^0.4.2", + "@eslint/core": "^0.17.0", + "@eslint/eslintrc": "^3.3.1", + "@eslint/js": "9.39.1", + "@eslint/plugin-kit": "^0.4.1", + "@humanfs/node": "^0.16.6", + "@humanwhocodes/module-importer": "^1.0.1", + "@humanwhocodes/retry": "^0.4.2", + "@types/estree": "^1.0.6", + "ajv": "^6.12.4", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.6", + "debug": "^4.3.2", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^8.4.0", + "eslint-visitor-keys": "^4.2.1", + "espree": "^10.4.0", + "esquery": "^1.5.0", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^8.0.0", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "ignore": "^5.2.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.1.2", + "natural-compare": "^1.4.0", + "optionator": "^0.9.3" + }, + "bin": { + "eslint": "bin/eslint.js" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://eslint.org/donate" + }, + "peerDependencies": { + "jiti": "*" + }, + "peerDependenciesMeta": { + "jiti": { + "optional": true + } + } + }, + "node_modules/eslint-config-prettier": { + "version": "10.1.8", + "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-10.1.8.tgz", + "integrity": "sha512-82GZUjRS0p/jganf6q1rEO25VSoHH0hKPCTrgillPjdI/3bgBhAE1QzHrHTizjpRvy6pGAvKjDJtk2pF9NDq8w==", + "dev": true, + "license": "MIT", + "peer": true, + "bin": { + "eslint-config-prettier": "bin/cli.js" + }, + "funding": { + "url": "https://opencollective.com/eslint-config-prettier" + }, + "peerDependencies": { + "eslint": ">=7.0.0" + } + }, + "node_modules/eslint-plugin-notice": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-notice/-/eslint-plugin-notice-1.0.0.tgz", + "integrity": "sha512-M3VLQMZzZpvfTZ/vy9FmClIKq5rLBbQpM0KgfLZPJPrVXpmJYeobmmb+lfJzHWdNm8PWwvw8KlafQWo2N9xx1Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "find-root": "^1.1.0", + "lodash": "^4.17.21", + "metric-lcs": "^0.1.2" + }, + "peerDependencies": { + "eslint": ">=3.0.0" + } + }, + "node_modules/eslint-plugin-prettier": { + "version": "5.5.4", + "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-5.5.4.tgz", + "integrity": "sha512-swNtI95SToIz05YINMA6Ox5R057IMAmWZ26GqPxusAp1TZzj+IdY9tXNWWD3vkF/wEqydCONcwjTFpxybBqZsg==", + "dev": true, + "license": "MIT", + "dependencies": { + "prettier-linter-helpers": "^1.0.0", + "synckit": "^0.11.7" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint-plugin-prettier" + }, + "peerDependencies": { + "@types/eslint": ">=8.0.0", + "eslint": ">=8.0.0", + "eslint-config-prettier": ">= 7.0.0 <10.0.0 || >=10.1.0", + "prettier": ">=3.0.0" + }, + "peerDependenciesMeta": { + "@types/eslint": { + "optional": true + }, + "eslint-config-prettier": { + "optional": true + } + } + }, + "node_modules/eslint-scope": { + "version": "8.4.0", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.4.0.tgz", + "integrity": "sha512-sNXOfKCn74rt8RICKMvJS7XKV/Xk9kA7DyJr8mJik3S7Cwgy3qlkkmyS2uQB3jiJg6VNdZd/pDBJu0nvG2NlTg==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint/node_modules/brace-expansion": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/eslint/node_modules/eslint-visitor-keys": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz", + "integrity": "sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/espree": { + "version": "10.4.0", + "resolved": "https://registry.npmjs.org/espree/-/espree-10.4.0.tgz", + "integrity": "sha512-j6PAQ2uUr79PZhBjP5C5fhl8e39FmRnOjsD5lGnWrFU8i2G776tBK7+nP8KuQUTTyAZUwfQqXAgrVH5MbH9CYQ==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "acorn": "^8.15.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^4.2.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/espree/node_modules/eslint-visitor-keys": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz", + "integrity": "sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/esquery": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.6.0.tgz", + "integrity": "sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "estraverse": "^5.1.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "estraverse": "^5.2.0" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estree-walker": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz", + "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0" + } + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/expect-type": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/expect-type/-/expect-type-1.2.2.tgz", + "integrity": "sha512-JhFGDVJ7tmDJItKhYgJCGLOWjuK9vPxiXoUFLwLDc99NlmklilbiQJwoctZtt13+xMw91MCk/REan6MWHqDjyA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/fast-diff": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.3.0.tgz", + "integrity": "sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==", + "dev": true, + "license": "Apache-2.0" + }, + "node_modules/fast-glob": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.3.tgz", + "integrity": "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.8" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/fast-glob/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true, + "license": "MIT" + }, + "node_modules/fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "dev": true, + "license": "MIT" + }, + "node_modules/fastq": { + "version": "1.19.1", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.19.1.tgz", + "integrity": "sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==", + "dev": true, + "license": "ISC", + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/file-entry-cache": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-8.0.0.tgz", + "integrity": "sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "flat-cache": "^4.0.0" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/fill-range": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", + "dev": true, + "license": "MIT", + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/find-root": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/find-root/-/find-root-1.1.0.tgz", + "integrity": "sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng==", + "dev": true, + "license": "MIT" + }, + "node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "license": "MIT", + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/flat-cache": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-4.0.1.tgz", + "integrity": "sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==", + "dev": true, + "license": "MIT", + "dependencies": { + "flatted": "^3.2.9", + "keyv": "^4.5.4" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/flatted": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.3.tgz", + "integrity": "sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==", + "dev": true, + "license": "ISC" + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/get-tsconfig": { + "version": "4.13.0", + "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.13.0.tgz", + "integrity": "sha512-1VKTZJCwBrvbd+Wn3AOgQP/2Av+TfTCOlE4AcRJE72W1ksZXbAx8PPBR9RzgTeSPzlPMHrbANMH3LbltH73wxQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "resolve-pkg-maps": "^1.0.0" + }, + "funding": { + "url": "https://github.com/privatenumber/get-tsconfig?sponsor=1" + } + }, + "node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/globals": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-14.0.0.tgz", + "integrity": "sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/graphemer": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", + "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", + "dev": true, + "license": "MIT" + }, + "node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/hookable": { + "version": "5.5.3", + "resolved": "https://registry.npmjs.org/hookable/-/hookable-5.5.3.tgz", + "integrity": "sha512-Yc+BQe8SvoXH1643Qez1zqLRmbA5rCL+sSmk6TVos0LWVfNIB7PGncdlId77WzLGSIB5KaWgTaNTs2lNVEI6VQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/http-proxy-agent": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz", + "integrity": "sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==", + "license": "MIT", + "dependencies": { + "agent-base": "^7.1.0", + "debug": "^4.3.4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/https-proxy-agent": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.6.tgz", + "integrity": "sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==", + "license": "MIT", + "dependencies": { + "agent-base": "^7.1.2", + "debug": "4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/ignore": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", + "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/import-fresh": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.1.tgz", + "integrity": "sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/is-docker": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-3.0.0.tgz", + "integrity": "sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==", + "license": "MIT", + "bin": { + "is-docker": "cli.js" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-inside-container": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-inside-container/-/is-inside-container-1.0.0.tgz", + "integrity": "sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==", + "license": "MIT", + "dependencies": { + "is-docker": "^3.0.0" + }, + "bin": { + "is-inside-container": "cli.js" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-wsl": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-3.1.0.tgz", + "integrity": "sha512-UcVfVfaK4Sc4m7X3dUSoHoozQGBEFeDC+zVo06t98xe8CzHSZZBekNXH+tu0NalHolcJ/QAGqS46Hef7QXBIMw==", + "license": "MIT", + "dependencies": { + "is-inside-container": "^1.0.0" + }, + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true, + "license": "ISC" + }, + "node_modules/js-yaml": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.1.tgz", + "integrity": "sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==", + "dev": true, + "license": "MIT", + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/jsesc": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz", + "integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==", + "dev": true, + "license": "MIT", + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/json-buffer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true, + "license": "MIT" + }, + "node_modules/json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", + "dev": true, + "license": "MIT" + }, + "node_modules/jsonwebtoken": { + "version": "9.0.2", + "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-9.0.2.tgz", + "integrity": "sha512-PRp66vJ865SSqOlgqS8hujT5U4AOgMfhrwYIuIhfKaoSCZcirrmASQr8CX7cUg+RMih+hgznrjp99o+W4pJLHQ==", + "license": "MIT", + "dependencies": { + "jws": "^3.2.2", + "lodash.includes": "^4.3.0", + "lodash.isboolean": "^3.0.3", + "lodash.isinteger": "^4.0.4", + "lodash.isnumber": "^3.0.3", + "lodash.isplainobject": "^4.0.6", + "lodash.isstring": "^4.0.1", + "lodash.once": "^4.0.0", + "ms": "^2.1.1", + "semver": "^7.5.4" + }, + "engines": { + "node": ">=12", + "npm": ">=6" + } + }, + "node_modules/jwa": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/jwa/-/jwa-1.4.2.tgz", + "integrity": "sha512-eeH5JO+21J78qMvTIDdBXidBd6nG2kZjg5Ohz/1fpa28Z4CcsWUzJ1ZZyFq/3z3N17aZy+ZuBoHljASbL1WfOw==", + "license": "MIT", + "dependencies": { + "buffer-equal-constant-time": "^1.0.1", + "ecdsa-sig-formatter": "1.0.11", + "safe-buffer": "^5.0.1" + } + }, + "node_modules/jws": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/jws/-/jws-3.2.2.tgz", + "integrity": "sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA==", + "license": "MIT", + "dependencies": { + "jwa": "^1.4.1", + "safe-buffer": "^5.0.1" + } + }, + "node_modules/keyv": { + "version": "4.5.4", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", + "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", + "dev": true, + "license": "MIT", + "dependencies": { + "json-buffer": "3.0.1" + } + }, + "node_modules/levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash.includes": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/lodash.includes/-/lodash.includes-4.3.0.tgz", + "integrity": "sha512-W3Bx6mdkRTGtlJISOvVD/lbqjTlPPUDTMnlXZFnVwi9NKJ6tiAk6LVdlhZMm17VZisqhKcgzpO5Wz91PCt5b0w==", + "license": "MIT" + }, + "node_modules/lodash.isboolean": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz", + "integrity": "sha512-Bz5mupy2SVbPHURB98VAcw+aHh4vRV5IPNhILUCsOzRmsTmSQ17jIuqopAentWoehktxGd9e/hbIXq980/1QJg==", + "license": "MIT" + }, + "node_modules/lodash.isinteger": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz", + "integrity": "sha512-DBwtEWN2caHQ9/imiNeEA5ys1JoRtRfY3d7V9wkqtbycnAmTvRRmbHKDV4a0EYc678/dia0jrte4tjYwVBaZUA==", + "license": "MIT" + }, + "node_modules/lodash.isnumber": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/lodash.isnumber/-/lodash.isnumber-3.0.3.tgz", + "integrity": "sha512-QYqzpfwO3/CWf3XP+Z+tkQsfaLL/EnUlXWVkIk5FUPc4sBdTehEqZONuyRt2P67PXAk+NXmTBcc97zw9t1FQrw==", + "license": "MIT" + }, + "node_modules/lodash.isplainobject": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", + "integrity": "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==", + "license": "MIT" + }, + "node_modules/lodash.isstring": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz", + "integrity": "sha512-0wJxfxH1wgO3GrbuP+dTTk7op+6L41QCXbGINEmD+ny/G/eCqGzxyCsh7159S+mgDDcoarnBw6PC1PS5+wUGgw==", + "license": "MIT" + }, + "node_modules/lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash.once": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz", + "integrity": "sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg==", + "license": "MIT" + }, + "node_modules/magic-string": { + "version": "0.30.21", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.21.tgz", + "integrity": "sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.5.5" + } + }, + "node_modules/make-error": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", + "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", + "dev": true, + "license": "ISC" + }, + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 8" + } + }, + "node_modules/metric-lcs": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/metric-lcs/-/metric-lcs-0.1.2.tgz", + "integrity": "sha512-+TZ5dUDPKPJaU/rscTzxyN8ZkX7eAVLAiQU/e+YINleXPv03SCmJShaMT1If1liTH8OcmWXZs0CmzCBRBLcMpA==", + "dev": true, + "license": "MIT" + }, + "node_modules/micromatch": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", + "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", + "dev": true, + "license": "MIT", + "dependencies": { + "braces": "^3.0.3", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/minimatch": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "license": "MIT" + }, + "node_modules/nanoid": { + "version": "3.3.11", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz", + "integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + "dev": true, + "license": "MIT" + }, + "node_modules/node-fetch": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", + "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", + "license": "MIT", + "dependencies": { + "whatwg-url": "^5.0.0" + }, + "engines": { + "node": "4.x || >=6.0.0" + }, + "peerDependencies": { + "encoding": "^0.1.0" + }, + "peerDependenciesMeta": { + "encoding": { + "optional": true + } + } + }, + "node_modules/obug": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/obug/-/obug-2.1.1.tgz", + "integrity": "sha512-uTqF9MuPraAQ+IsnPf366RG4cP9RtUi7MLO1N3KEc+wb0a6yKpeL0lmk2IB1jY5KHPAlTc6T/JRdC/YqxHNwkQ==", + "dev": true, + "funding": [ + "https://github.com/sponsors/sxzz", + "https://opencollective.com/debug" + ], + "license": "MIT" + }, + "node_modules/open": { + "version": "10.2.0", + "resolved": "https://registry.npmjs.org/open/-/open-10.2.0.tgz", + "integrity": "sha512-YgBpdJHPyQ2UE5x+hlSXcnejzAvD0b22U2OuAP+8OnlJT+PjWPxtgmGqKKc+RgTM63U9gN0YzrYc71R2WT/hTA==", + "license": "MIT", + "dependencies": { + "default-browser": "^5.2.1", + "define-lazy-prop": "^3.0.0", + "is-inside-container": "^1.0.0", + "wsl-utils": "^0.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/optionator": { + "version": "0.9.4", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz", + "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==", + "dev": true, + "license": "MIT", + "dependencies": { + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0", + "word-wrap": "^1.2.5" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "license": "MIT", + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/pathe": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/pathe/-/pathe-2.0.3.tgz", + "integrity": "sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==", + "dev": true, + "license": "MIT" + }, + "node_modules/picocolors": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", + "dev": true, + "license": "ISC" + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/postcss": { + "version": "8.5.6", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.6.tgz", + "integrity": "sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "nanoid": "^3.3.11", + "picocolors": "^1.1.1", + "source-map-js": "^1.2.1" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/prettier": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.6.2.tgz", + "integrity": "sha512-I7AIg5boAr5R0FFtJ6rCfD+LFsWHp81dolrFD8S79U9tb8Az2nGrJncnMSnys+bpQJfRUzqs9hnA81OAA3hCuQ==", + "dev": true, + "license": "MIT", + "peer": true, + "bin": { + "prettier": "bin/prettier.cjs" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/prettier/prettier?sponsor=1" + } + }, + "node_modules/prettier-linter-helpers": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz", + "integrity": "sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-diff": "^1.1.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/punycode": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/quansync": { + "version": "0.2.11", + "resolved": "https://registry.npmjs.org/quansync/-/quansync-0.2.11.tgz", + "integrity": "sha512-AifT7QEbW9Nri4tAwR5M/uzpBuqfZf+zwaEM/QkzEjj7NBuFD2rBuy0K3dE+8wltbezDV7JMA0WfnCPYRSYbXA==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/antfu" + }, + { + "type": "individual", + "url": "https://github.com/sponsors/sxzz" + } + ], + "license": "MIT" + }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/readdirp": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-4.1.2.tgz", + "integrity": "sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 14.18.0" + }, + "funding": { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/resolve-pkg-maps": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz", + "integrity": "sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/privatenumber/resolve-pkg-maps?sponsor=1" + } + }, + "node_modules/reusify": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.1.0.tgz", + "integrity": "sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==", + "dev": true, + "license": "MIT", + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/rolldown": { + "version": "1.0.0-beta.51", + "resolved": "https://registry.npmjs.org/rolldown/-/rolldown-1.0.0-beta.51.tgz", + "integrity": "sha512-ZRLgPlS91l4JztLYEZnmMcd3Umcla1hkXJgiEiR4HloRJBBoeaX8qogTu5Jfu36rRMVLndzqYv0h+M5gJAkUfg==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@oxc-project/types": "=0.98.0", + "@rolldown/pluginutils": "1.0.0-beta.51" + }, + "bin": { + "rolldown": "bin/cli.mjs" + }, + "engines": { + "node": "^20.19.0 || >=22.12.0" + }, + "optionalDependencies": { + "@rolldown/binding-android-arm64": "1.0.0-beta.51", + "@rolldown/binding-darwin-arm64": "1.0.0-beta.51", + "@rolldown/binding-darwin-x64": "1.0.0-beta.51", + "@rolldown/binding-freebsd-x64": "1.0.0-beta.51", + "@rolldown/binding-linux-arm-gnueabihf": "1.0.0-beta.51", + "@rolldown/binding-linux-arm64-gnu": "1.0.0-beta.51", + "@rolldown/binding-linux-arm64-musl": "1.0.0-beta.51", + "@rolldown/binding-linux-x64-gnu": "1.0.0-beta.51", + "@rolldown/binding-linux-x64-musl": "1.0.0-beta.51", + "@rolldown/binding-openharmony-arm64": "1.0.0-beta.51", + "@rolldown/binding-wasm32-wasi": "1.0.0-beta.51", + "@rolldown/binding-win32-arm64-msvc": "1.0.0-beta.51", + "@rolldown/binding-win32-ia32-msvc": "1.0.0-beta.51", + "@rolldown/binding-win32-x64-msvc": "1.0.0-beta.51" + } + }, + "node_modules/rolldown-plugin-dts": { + "version": "0.18.0", + "resolved": "https://registry.npmjs.org/rolldown-plugin-dts/-/rolldown-plugin-dts-0.18.0.tgz", + "integrity": "sha512-2CJtKYa9WPClZxkJeCt4bGUegQvQKQ1VJp9jFJzG0h8I/80XI6qDgoWfVJUOEhT2swbsRQh/42N1RIWvbXT4rA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/generator": "^7.28.5", + "@babel/parser": "^7.28.5", + "@babel/types": "^7.28.5", + "ast-kit": "^2.2.0", + "birpc": "^2.8.0", + "dts-resolver": "^2.1.3", + "get-tsconfig": "^4.13.0", + "magic-string": "^0.30.21", + "obug": "^2.0.0" + }, + "engines": { + "node": ">=20.19.0" + }, + "funding": { + "url": "https://github.com/sponsors/sxzz" + }, + "peerDependencies": { + "@ts-macro/tsc": "^0.3.6", + "@typescript/native-preview": ">=7.0.0-dev.20250601.1", + "rolldown": "^1.0.0-beta.51", + "typescript": "^5.0.0", + "vue-tsc": "~3.1.0" + }, + "peerDependenciesMeta": { + "@ts-macro/tsc": { + "optional": true + }, + "@typescript/native-preview": { + "optional": true + }, + "typescript": { + "optional": true + }, + "vue-tsc": { + "optional": true + } + } + }, + "node_modules/rollup": { + "version": "4.53.3", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.53.3.tgz", + "integrity": "sha512-w8GmOxZfBmKknvdXU1sdM9NHcoQejwF/4mNgj2JuEEdRaHwwF12K7e9eXn1nLZ07ad+du76mkVsyeb2rKGllsA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/estree": "1.0.8" + }, + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=18.0.0", + "npm": ">=8.0.0" + }, + "optionalDependencies": { + "@rollup/rollup-android-arm-eabi": "4.53.3", + "@rollup/rollup-android-arm64": "4.53.3", + "@rollup/rollup-darwin-arm64": "4.53.3", + "@rollup/rollup-darwin-x64": "4.53.3", + "@rollup/rollup-freebsd-arm64": "4.53.3", + "@rollup/rollup-freebsd-x64": "4.53.3", + "@rollup/rollup-linux-arm-gnueabihf": "4.53.3", + "@rollup/rollup-linux-arm-musleabihf": "4.53.3", + "@rollup/rollup-linux-arm64-gnu": "4.53.3", + "@rollup/rollup-linux-arm64-musl": "4.53.3", + "@rollup/rollup-linux-loong64-gnu": "4.53.3", + "@rollup/rollup-linux-ppc64-gnu": "4.53.3", + "@rollup/rollup-linux-riscv64-gnu": "4.53.3", + "@rollup/rollup-linux-riscv64-musl": "4.53.3", + "@rollup/rollup-linux-s390x-gnu": "4.53.3", + "@rollup/rollup-linux-x64-gnu": "4.53.3", + "@rollup/rollup-linux-x64-musl": "4.53.3", + "@rollup/rollup-openharmony-arm64": "4.53.3", + "@rollup/rollup-win32-arm64-msvc": "4.53.3", + "@rollup/rollup-win32-ia32-msvc": "4.53.3", + "@rollup/rollup-win32-x64-gnu": "4.53.3", + "@rollup/rollup-win32-x64-msvc": "4.53.3", + "fsevents": "~2.3.2" + } + }, + "node_modules/run-applescript": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/run-applescript/-/run-applescript-7.1.0.tgz", + "integrity": "sha512-DPe5pVFaAsinSaV6QjQ6gdiedWDcRCbUuiQfQa2wmWV7+xC9bGulGI8+TdRmoFkAPaBXk8CrAbnlY2ISniJ47Q==", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, + "node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/semver": { + "version": "7.7.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", + "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "license": "MIT", + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/siginfo": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/siginfo/-/siginfo-2.0.0.tgz", + "integrity": "sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==", + "dev": true, + "license": "ISC" + }, + "node_modules/source-map-js": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", + "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/stackback": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/stackback/-/stackback-0.0.2.tgz", + "integrity": "sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==", + "dev": true, + "license": "MIT" + }, + "node_modules/std-env": { + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/std-env/-/std-env-3.10.0.tgz", + "integrity": "sha512-5GS12FdOZNliM5mAOxFRg7Ir0pWz8MdpYm6AY6VPkGpbA7ZzmbzNcBJQ0GPvvyWgcY7QAhCgf9Uy89I03faLkg==", + "dev": true, + "license": "MIT" + }, + "node_modules/strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/synckit": { + "version": "0.11.11", + "resolved": "https://registry.npmjs.org/synckit/-/synckit-0.11.11.tgz", + "integrity": "sha512-MeQTA1r0litLUf0Rp/iisCaL8761lKAZHaimlbGK4j0HysC4PLfqygQj9srcs0m2RdtDYnF8UuYyKpbjHYp7Jw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@pkgr/core": "^0.2.9" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/synckit" + } + }, + "node_modules/tinybench": { + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/tinybench/-/tinybench-2.9.0.tgz", + "integrity": "sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==", + "dev": true, + "license": "MIT" + }, + "node_modules/tinyexec": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/tinyexec/-/tinyexec-1.0.2.tgz", + "integrity": "sha512-W/KYk+NFhkmsYpuHq5JykngiOCnxeVL8v8dFnqxSD8qEEdRfXk1SDM6JzNqcERbcGYj9tMrDQBYV9cjgnunFIg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + } + }, + "node_modules/tinyglobby": { + "version": "0.2.15", + "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.15.tgz", + "integrity": "sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "fdir": "^6.5.0", + "picomatch": "^4.0.3" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/SuperchupuDev" + } + }, + "node_modules/tinyglobby/node_modules/fdir": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz", + "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "picomatch": "^3 || ^4" + }, + "peerDependenciesMeta": { + "picomatch": { + "optional": true + } + } + }, + "node_modules/tinyglobby/node_modules/picomatch": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", + "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/tinyrainbow": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/tinyrainbow/-/tinyrainbow-3.0.3.tgz", + "integrity": "sha512-PSkbLUoxOFRzJYjjxHJt9xro7D+iilgMX/C9lawzVuYiIdcihh9DXmVibBe8lmcFrRi/VzlPjBxbN7rH24q8/Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", + "license": "MIT" + }, + "node_modules/tree-kill": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz", + "integrity": "sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==", + "dev": true, + "license": "MIT", + "bin": { + "tree-kill": "cli.js" + } + }, + "node_modules/ts-api-utils": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-2.1.0.tgz", + "integrity": "sha512-CUgTZL1irw8u29bzrOD/nH85jqyc74D6SshFgujOIA7osm2Rz7dYH77agkx7H4FBNxDq7Cjf+IjaX/8zwFW+ZQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18.12" + }, + "peerDependencies": { + "typescript": ">=4.8.4" + } + }, + "node_modules/ts-node": { + "version": "10.9.2", + "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.2.tgz", + "integrity": "sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@cspotcode/source-map-support": "^0.8.0", + "@tsconfig/node10": "^1.0.7", + "@tsconfig/node12": "^1.0.7", + "@tsconfig/node14": "^1.0.0", + "@tsconfig/node16": "^1.0.2", + "acorn": "^8.4.1", + "acorn-walk": "^8.1.1", + "arg": "^4.1.0", + "create-require": "^1.1.0", + "diff": "^4.0.1", + "make-error": "^1.1.1", + "v8-compile-cache-lib": "^3.0.1", + "yn": "3.1.1" + }, + "bin": { + "ts-node": "dist/bin.js", + "ts-node-cwd": "dist/bin-cwd.js", + "ts-node-esm": "dist/bin-esm.js", + "ts-node-script": "dist/bin-script.js", + "ts-node-transpile-only": "dist/bin-transpile.js", + "ts-script": "dist/bin-script-deprecated.js" + }, + "peerDependencies": { + "@swc/core": ">=1.2.50", + "@swc/wasm": ">=1.2.50", + "@types/node": "*", + "typescript": ">=2.7" + }, + "peerDependenciesMeta": { + "@swc/core": { + "optional": true + }, + "@swc/wasm": { + "optional": true + } + } + }, + "node_modules/tsdown": { + "version": "0.16.6", + "resolved": "https://registry.npmjs.org/tsdown/-/tsdown-0.16.6.tgz", + "integrity": "sha512-g3xHEnGdfwJTlXhEkqww3Q/KlCfyNFw4rnzuQ9Gqw8T2xjDYrw94qmSw5wYYTAW5zV1sEfWDlfgxZo5mmtu0NQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansis": "^4.2.0", + "cac": "^6.7.14", + "chokidar": "^4.0.3", + "diff": "^8.0.2", + "empathic": "^2.0.0", + "hookable": "^5.5.3", + "obug": "^2.1.0", + "rolldown": "1.0.0-beta.51", + "rolldown-plugin-dts": "^0.18.0", + "semver": "^7.7.3", + "tinyexec": "^1.0.2", + "tinyglobby": "^0.2.15", + "tree-kill": "^1.2.2", + "unconfig-core": "^7.4.1", + "unrun": "^0.2.11" + }, + "bin": { + "tsdown": "dist/run.mjs" + }, + "engines": { + "node": ">=20.19.0" + }, + "funding": { + "url": "https://github.com/sponsors/sxzz" + }, + "peerDependencies": { + "@arethetypeswrong/core": "^0.18.1", + "@vitejs/devtools": "^0.0.0-alpha.17", + "publint": "^0.3.0", + "typescript": "^5.0.0", + "unplugin-lightningcss": "^0.4.0", + "unplugin-unused": "^0.5.0" + }, + "peerDependenciesMeta": { + "@arethetypeswrong/core": { + "optional": true + }, + "@vitejs/devtools": { + "optional": true + }, + "publint": { + "optional": true + }, + "typescript": { + "optional": true + }, + "unplugin-lightningcss": { + "optional": true + }, + "unplugin-unused": { + "optional": true + } + } + }, + "node_modules/tsdown/node_modules/diff": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/diff/-/diff-8.0.2.tgz", + "integrity": "sha512-sSuxWU5j5SR9QQji/o2qMvqRNYRDOcBTgsJ/DeCf4iSN4gW+gNMXM7wFIP+fdXZxoNiAnHUTGjCr+TSWXdRDKg==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.3.1" + } + }, + "node_modules/tslib": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", + "license": "0BSD" + }, + "node_modules/type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dev": true, + "license": "MIT", + "dependencies": { + "prelude-ls": "^1.2.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/typescript": { + "version": "5.9.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz", + "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==", + "dev": true, + "license": "Apache-2.0", + "peer": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, + "node_modules/typescript-eslint": { + "version": "8.47.0", + "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.47.0.tgz", + "integrity": "sha512-Lwe8i2XQ3WoMjua/r1PHrCTpkubPYJCAfOurtn+mtTzqB6jNd+14n9UN1bJ4s3F49x9ixAm0FLflB/JzQ57M8Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/eslint-plugin": "8.47.0", + "@typescript-eslint/parser": "8.47.0", + "@typescript-eslint/typescript-estree": "8.47.0", + "@typescript-eslint/utils": "8.47.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <6.0.0" + } + }, + "node_modules/unconfig-core": { + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/unconfig-core/-/unconfig-core-7.4.1.tgz", + "integrity": "sha512-Bp/bPZjV2Vl/fofoA2OYLSnw1Z0MOhCX7zHnVCYrazpfZvseBbGhwcNQMxsg185Mqh7VZQqK3C8hFG/Dyng+yA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@quansync/fs": "^0.1.5", + "quansync": "^0.2.11" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/undici-types": { + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz", + "integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/unrun": { + "version": "0.2.11", + "resolved": "https://registry.npmjs.org/unrun/-/unrun-0.2.11.tgz", + "integrity": "sha512-HjUuNLRGfRxMvxkwOuO/CpkSzdizTPPApbarLplsTzUm8Kex+nS9eomKU1qgVus6WGWkDYhtf/mgNxGEpyTR6A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@oxc-project/runtime": "^0.96.0", + "rolldown": "1.0.0-beta.51" + }, + "bin": { + "unrun": "dist/cli.mjs" + }, + "engines": { + "node": ">=20.19.0" + }, + "funding": { + "url": "https://github.com/sponsors/Gugustinette" + }, + "peerDependencies": { + "synckit": "^0.11.11" + }, + "peerDependenciesMeta": { + "synckit": { + "optional": true + } + } + }, + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "license": "MIT", + "bin": { + "uuid": "dist/bin/uuid" + } + }, + "node_modules/v8-compile-cache-lib": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz", + "integrity": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==", + "dev": true, + "license": "MIT" + }, + "node_modules/vite": { + "version": "7.2.4", + "resolved": "https://registry.npmjs.org/vite/-/vite-7.2.4.tgz", + "integrity": "sha512-NL8jTlbo0Tn4dUEXEsUg8KeyG/Lkmc4Fnzb8JXN/Ykm9G4HNImjtABMJgkQoVjOBN/j2WAwDTRytdqJbZsah7w==", + "dev": true, + "license": "MIT", + "dependencies": { + "esbuild": "^0.25.0", + "fdir": "^6.5.0", + "picomatch": "^4.0.3", + "postcss": "^8.5.6", + "rollup": "^4.43.0", + "tinyglobby": "^0.2.15" + }, + "bin": { + "vite": "bin/vite.js" + }, + "engines": { + "node": "^20.19.0 || >=22.12.0" + }, + "funding": { + "url": "https://github.com/vitejs/vite?sponsor=1" + }, + "optionalDependencies": { + "fsevents": "~2.3.3" + }, + "peerDependencies": { + "@types/node": "^20.19.0 || >=22.12.0", + "jiti": ">=1.21.0", + "less": "^4.0.0", + "lightningcss": "^1.21.0", + "sass": "^1.70.0", + "sass-embedded": "^1.70.0", + "stylus": ">=0.54.8", + "sugarss": "^5.0.0", + "terser": "^5.16.0", + "tsx": "^4.8.1", + "yaml": "^2.4.2" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "jiti": { + "optional": true + }, + "less": { + "optional": true + }, + "lightningcss": { + "optional": true + }, + "sass": { + "optional": true + }, + "sass-embedded": { + "optional": true + }, + "stylus": { + "optional": true + }, + "sugarss": { + "optional": true + }, + "terser": { + "optional": true + }, + "tsx": { + "optional": true + }, + "yaml": { + "optional": true + } + } + }, + "node_modules/vite/node_modules/fdir": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz", + "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "picomatch": "^3 || ^4" + }, + "peerDependenciesMeta": { + "picomatch": { + "optional": true + } + } + }, + "node_modules/vite/node_modules/picomatch": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", + "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/vitest": { + "version": "4.0.14", + "resolved": "https://registry.npmjs.org/vitest/-/vitest-4.0.14.tgz", + "integrity": "sha512-d9B2J9Cm9dN9+6nxMnnNJKJCtcyKfnHj15N6YNJfaFHRLua/d3sRKU9RuKmO9mB0XdFtUizlxfz/VPbd3OxGhw==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@vitest/expect": "4.0.14", + "@vitest/mocker": "4.0.14", + "@vitest/pretty-format": "4.0.14", + "@vitest/runner": "4.0.14", + "@vitest/snapshot": "4.0.14", + "@vitest/spy": "4.0.14", + "@vitest/utils": "4.0.14", + "es-module-lexer": "^1.7.0", + "expect-type": "^1.2.2", + "magic-string": "^0.30.21", + "obug": "^2.1.1", + "pathe": "^2.0.3", + "picomatch": "^4.0.3", + "std-env": "^3.10.0", + "tinybench": "^2.9.0", + "tinyexec": "^0.3.2", + "tinyglobby": "^0.2.15", + "tinyrainbow": "^3.0.3", + "vite": "^6.0.0 || ^7.0.0", + "why-is-node-running": "^2.3.0" + }, + "bin": { + "vitest": "vitest.mjs" + }, + "engines": { + "node": "^20.0.0 || ^22.0.0 || >=24.0.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + }, + "peerDependencies": { + "@edge-runtime/vm": "*", + "@opentelemetry/api": "^1.9.0", + "@types/node": "^20.0.0 || ^22.0.0 || >=24.0.0", + "@vitest/browser-playwright": "4.0.14", + "@vitest/browser-preview": "4.0.14", + "@vitest/browser-webdriverio": "4.0.14", + "@vitest/ui": "4.0.14", + "happy-dom": "*", + "jsdom": "*" + }, + "peerDependenciesMeta": { + "@edge-runtime/vm": { + "optional": true + }, + "@opentelemetry/api": { + "optional": true + }, + "@types/node": { + "optional": true + }, + "@vitest/browser-playwright": { + "optional": true + }, + "@vitest/browser-preview": { + "optional": true + }, + "@vitest/browser-webdriverio": { + "optional": true + }, + "@vitest/ui": { + "optional": true + }, + "happy-dom": { + "optional": true + }, + "jsdom": { + "optional": true + } + } + }, + "node_modules/vitest/node_modules/picomatch": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", + "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/vitest/node_modules/tinyexec": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/tinyexec/-/tinyexec-0.3.2.tgz", + "integrity": "sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA==", + "dev": true, + "license": "MIT" + }, + "node_modules/vscode-jsonrpc": { + "version": "8.2.1", + "resolved": "https://registry.npmjs.org/vscode-jsonrpc/-/vscode-jsonrpc-8.2.1.tgz", + "integrity": "sha512-kdjOSJ2lLIn7r1rtrMbbNCHjyMPfRnowdKjBQ+mGq6NAW5QY2bEZC/khaC5OR8svbbjvLEaIXkOq45e2X9BIbQ==", + "license": "MIT", + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", + "license": "BSD-2-Clause" + }, + "node_modules/whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", + "license": "MIT", + "dependencies": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + } + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "license": "ISC", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/why-is-node-running": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/why-is-node-running/-/why-is-node-running-2.3.0.tgz", + "integrity": "sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w==", + "dev": true, + "license": "MIT", + "dependencies": { + "siginfo": "^2.0.0", + "stackback": "0.0.2" + }, + "bin": { + "why-is-node-running": "cli.js" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/word-wrap": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", + "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/wsl-utils": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/wsl-utils/-/wsl-utils-0.1.0.tgz", + "integrity": "sha512-h3Fbisa2nKGPxCpm89Hk33lBLsnaGBvctQopaBSOW/uIs6FTe1ATyAnKFJrzVs9vpGdsTe73WF3V4lIsk4Gacw==", + "license": "MIT", + "dependencies": { + "is-wsl": "^3.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/yaml": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.8.1.tgz", + "integrity": "sha512-lcYcMxX2PO9XMGvAJkJ3OsNMw+/7FKes7/hgerGUYWIoWu5j/+YQqcZr5JnPZWzOsEBgMbSbiSTn/dv/69Mkpw==", + "dev": true, + "license": "ISC", + "peer": true, + "bin": { + "yaml": "bin.mjs" + }, + "engines": { + "node": ">= 14.6" + } + }, + "node_modules/yn": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", + "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + } + } +} diff --git a/packages/bicep-deploy-common/package.json b/packages/bicep-deploy-common/package.json new file mode 100644 index 0000000..779df49 --- /dev/null +++ b/packages/bicep-deploy-common/package.json @@ -0,0 +1,57 @@ +{ + "name": "@azure/bicep-deploy-common", + "description": "Common Code for bicep-deploy (GitHub Action/ADO Task)", + "version": "0.0.1-dev", + "author": "Microsoft", + "homepage": "https://github.com/Azure/bicep-deploy#readme", + "repository": { + "type": "git", + "url": "git+https://github.com/Azure/bicep-deploy.git" + }, + "bugs": { + "url": "https://github.com/Azure/bicep-deploy/issues" + }, + "keywords": [ + "bicep", + "arm templates" + ], + "type": "commonjs", + "main": "./dist/index.cjs", + "module": "./dist/index.cjs", + "exports": { + ".": "./dist/index.cjs" + }, + "files": [ + "./dist", + "./package.json", + "./README.md" + ], + "engines": { + "node": ">=22" + }, + "scripts": { + "build": "tsdown --config ./tsdown.config.mts" + }, + "license": "MIT", + "dependencies": { + "@azure/arm-resources": "^6.0.0", + "@azure/arm-resourcesdeploymentstacks": "^1.0.0", + "@azure/identity": "^4.10.2", + "bicep-node": "^0.0.8", + "yaml": "^2.7.0" + }, + "devDependencies": { + "@types/node": "^22.15.29", + "@vitest/eslint-plugin": "^1.4.3", + "eslint": "^9.39.1", + "eslint-config-prettier": "^10.1.5", + "eslint-plugin-notice": "^1.0.0", + "eslint-plugin-prettier": "^5.5.4", + "ts-node": "^10.9.2", + "tsdown": "^0.16.5", + "typescript": "^5.8.3", + "typescript-eslint": "^8.32.0", + "vitest": "^4.0.10", + "yaml": "^2.7.1" + } +} diff --git a/src/helpers/azure.ts b/packages/bicep-deploy-common/src/azure.ts similarity index 60% rename from src/helpers/azure.ts rename to packages/bicep-deploy-common/src/azure.ts index ca3439d..83dede3 100644 --- a/src/helpers/azure.ts +++ b/packages/bicep-deploy-common/src/azure.ts @@ -10,9 +10,9 @@ import { TokenCredential, } from "@azure/identity"; import { AdditionalPolicyConfig } from "@azure/core-client"; -import { debug, isDebug } from "@actions/core"; -import { ActionConfig } from "../config"; +import { Logger } from "./logging"; +import { DeployConfig } from "./config"; const userAgentPrefix = "gh-azure-bicep-deploy"; const dummySubscriptionId = "00000000-0000-0000-0000-000000000000"; @@ -24,7 +24,8 @@ const endpoints = { }; export function createDeploymentClient( - config: ActionConfig, + config: DeployConfig, + logger: Logger, subscriptionId?: string, tenantId?: string, ): ResourceManagementClient { @@ -36,7 +37,7 @@ export function createDeploymentClient( userAgentOptions: { userAgentPrefix: userAgentPrefix, }, - additionalPolicies: [debugLoggingPolicy], + additionalPolicies: [createDebugLoggingPolicy(logger)], // Use a recent API version to take advantage of error improvements apiVersion: "2024-03-01", endpoint: endpoints[config.environment], @@ -45,7 +46,8 @@ export function createDeploymentClient( } export function createStacksClient( - config: ActionConfig, + config: DeployConfig, + logger: Logger, subscriptionId?: string, tenantId?: string, ): DeploymentStacksClient { @@ -57,48 +59,50 @@ export function createStacksClient( userAgentOptions: { userAgentPrefix: userAgentPrefix, }, - additionalPolicies: [debugLoggingPolicy], + additionalPolicies: [createDebugLoggingPolicy(logger)], endpoint: endpoints[config.environment], }, ); } // Log request + response bodies to GitHub Actions debug output if enabled -const debugLoggingPolicy: AdditionalPolicyConfig = { - position: "perCall", - policy: { - name: "debugLoggingPolicy", - async sendRequest(request, next) { - if (isDebug()) { - debug(`Request: ${request.method} ${request.url}`); - if (request.body) { - const parsed = JSON.parse(request.body.toString()); - debug(`Body: ${JSON.stringify(parsed, null, 2)}`); +function createDebugLoggingPolicy(logger: Logger): AdditionalPolicyConfig { + return { + position: "perCall", + policy: { + name: "debugLoggingPolicy", + async sendRequest(request, next) { + if (logger.isDebugEnabled()) { + logger.debug(`Request: ${request.method} ${request.url}`); + if (request.body) { + const parsed = JSON.parse(request.body.toString()); + logger.debug(`Body: ${JSON.stringify(parsed, null, 2)}`); + } } - } - const response = await next(request); + const response = await next(request); - if (isDebug()) { - debug(`Response: ${response.status}`); - if (response.bodyAsText) { - const parsed = JSON.parse(response.bodyAsText); - debug(`Body: ${JSON.stringify(parsed, null, 2)}`); - } + if (logger.isDebugEnabled()) { + logger.debug(`Response: ${response.status}`); + if (response.bodyAsText) { + const parsed = JSON.parse(response.bodyAsText); + logger.debug(`Body: ${JSON.stringify(parsed, null, 2)}`); + } - const correlationId = response.headers.get( - "x-ms-correlation-request-id", - ); - debug(`CorrelationId: ${correlationId}`); + const correlationId = response.headers.get( + "x-ms-correlation-request-id", + ); + logger.debug(`CorrelationId: ${correlationId}`); - const activityId = response.headers.get("x-ms-request-id"); - debug(`ActivityId: ${activityId}`); - } + const activityId = response.headers.get("x-ms-request-id"); + logger.debug(`ActivityId: ${activityId}`); + } - return response; + return response; + }, }, - }, -}; + }; +} function getCredential(tenantId?: string): TokenCredential { return new ChainedTokenCredential( diff --git a/packages/bicep-deploy-common/src/config.ts b/packages/bicep-deploy-common/src/config.ts new file mode 100644 index 0000000..6d3d9a1 --- /dev/null +++ b/packages/bicep-deploy-common/src/config.ts @@ -0,0 +1,388 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. +import { + getRequiredEnumInput, + getRequiredStringInput, + getOptionalStringInput, + getOptionalStringDictionaryInput, + getOptionalFilePath, + getOptionalEnumInput, + getOptionalStringArrayInput, + getOptionalEnumArrayInput, + getOptionalDictionaryInput, + getOptionalBooleanInput, + InputReader, + InputParameterNames, +} from "./input"; + +export type ScopeType = + | "tenant" + | "managementGroup" + | "subscription" + | "resourceGroup"; + +type CommonScope = { + type: ScopeType; + tenantId?: string; +}; + +export type TenantScope = CommonScope & { + type: "tenant"; +}; + +export type ManagementGroupScope = CommonScope & { + type: "managementGroup"; + managementGroup: string; +}; + +export type SubscriptionScope = CommonScope & { + type: "subscription"; + subscriptionId: string; +}; + +export type ResourceGroupScope = CommonScope & { + type: "resourceGroup"; + subscriptionId: string; + resourceGroup: string; +}; + +export type FileConfig = { + templateFile?: string; + parametersFile?: string; + parameters?: Record; + bicepVersion?: string; +}; + +type CommonConfig = { + type: "deployment" | "deploymentStack"; + name?: string; + location?: string; + tags?: Record; + maskedOutputs?: string[]; + environment: + | "azureCloud" + | "azureChinaCloud" + | "azureGermanCloud" + | "azureUSGovernment"; +} & FileConfig; + +type WhatIfChangeType = + | "create" + | "delete" + | "modify" + | "deploy" + | "noChange" + | "ignore" + | "unsupported"; + +export type DeploymentsConfig = CommonConfig & { + type: "deployment"; + operation: "create" | "validate" | "whatIf"; + scope: + | TenantScope + | ManagementGroupScope + | SubscriptionScope + | ResourceGroupScope; + whatIf: { + excludeChangeTypes?: WhatIfChangeType[]; + }; + validationLevel?: "provider" | "template" | "providerNoRbac"; +}; + +export type DeploymentStackConfig = CommonConfig & { + type: "deploymentStack"; + operation: "create" | "delete" | "validate"; + scope: ManagementGroupScope | SubscriptionScope | ResourceGroupScope; + description?: string; + actionOnUnManage: { + resources: "delete" | "detach"; + managementGroups?: "delete" | "detach"; + resourceGroups?: "delete" | "detach"; + }; + denySettings: { + mode: "denyDelete" | "denyWriteAndDelete" | "none"; + excludedActions?: string[]; + excludedPrincipals?: string[]; + applyToChildScopes?: boolean; + }; + bypassStackOutOfSyncError: boolean; +}; + +export type DeployConfig = DeploymentsConfig | DeploymentStackConfig; + +export function parseConfig( + inputReader: InputReader, + inputParameterNames: InputParameterNames, +): DeploymentsConfig | DeploymentStackConfig { + const type = getRequiredEnumInput( + inputParameterNames.type, + ["deployment", "deploymentStack"], + inputReader, + ); + const name = getOptionalStringInput(inputParameterNames.name, inputReader); + const location = getOptionalStringInput( + inputParameterNames.location, + inputReader, + ); + const templateFile = getOptionalFilePath( + inputParameterNames.templateFile, + inputReader, + ); + const parametersFile = getOptionalFilePath( + inputParameterNames.paramtersFile, + inputReader, + ); + const parameters = getOptionalDictionaryInput( + inputParameterNames.parameters, + inputReader, + ); + const bicepVersion = getOptionalStringInput( + inputParameterNames.bicepVersion, + inputReader, + ); + const description = getOptionalStringInput( + inputParameterNames.description, + inputReader, + ); + const tags = getOptionalStringDictionaryInput( + inputParameterNames.tags, + inputReader, + ); + const maskedOutputs = getOptionalStringArrayInput( + inputParameterNames.maskedOutputs, + inputReader, + ); + const environment = + getOptionalEnumInput( + inputParameterNames.environment, + [ + "azureCloud", + "azureChinaCloud", + "azureGermanCloud", + "azureUSGovernment", + ], + inputReader, + ) ?? "azureCloud"; + + switch (type) { + case "deployment": { + return { + type, + name, + location, + templateFile, + parametersFile, + parameters, + bicepVersion, + tags, + maskedOutputs, + environment: environment, + operation: getRequiredEnumInput( + inputParameterNames.operation, + ["create", "validate", "whatIf"], + inputReader, + ), + scope: parseDeploymentScope(inputReader, inputParameterNames), + whatIf: { + excludeChangeTypes: getOptionalEnumArrayInput( + inputParameterNames.whatIfExcludeChangeTypes, + [ + "create", + "delete", + "modify", + "deploy", + "noChange", + "ignore", + "unsupported", + ], + inputReader, + ), + }, + validationLevel: getOptionalEnumInput( + inputParameterNames.validationLevel, + ["provider", "template", "providerNoRbac"], + inputReader, + ), + }; + } + case "deploymentStack": { + return { + type, + name, + location, + templateFile, + parametersFile, + parameters, + bicepVersion, + description, + tags, + maskedOutputs, + environment: environment, + operation: getRequiredEnumInput( + inputParameterNames.operation, + ["create", "validate", "delete"], + inputReader, + ), + scope: parseDeploymentStackScope(inputReader, inputParameterNames), + actionOnUnManage: { + resources: getRequiredEnumInput( + inputParameterNames.actionOnUnmanageResources, + ["delete", "detach"], + inputReader, + ), + resourceGroups: getOptionalEnumInput( + inputParameterNames.actionOnUnmanageResourceGroups, + ["delete", "detach"], + inputReader, + ), + managementGroups: getOptionalEnumInput( + inputParameterNames.actionOnUnmanageManagementGroups, + ["delete", "detach"], + inputReader, + ), + }, + bypassStackOutOfSyncError: getOptionalBooleanInput( + inputParameterNames.bypasStackOutOfSyncError, + inputReader, + ), + denySettings: { + mode: getRequiredEnumInput( + inputParameterNames.denySettingsMode, + ["denyDelete", "denyWriteAndDelete", "none"], + inputReader, + ), + excludedActions: getOptionalStringArrayInput( + inputParameterNames.denySettingsExcludedActions, + inputReader, + ), + excludedPrincipals: getOptionalStringArrayInput( + inputParameterNames.denySettingsExcludedPrincipals, + inputReader, + ), + applyToChildScopes: getOptionalBooleanInput( + inputParameterNames.denySettingsApplyToChildScopes, + inputReader, + ), + }, + }; + } + } +} + +function parseDeploymentScope( + inputReader: InputReader, + inputParameterNames: InputParameterNames, +): TenantScope | ManagementGroupScope | SubscriptionScope | ResourceGroupScope { + const type = getRequiredEnumInput( + inputParameterNames.scope, + ["tenant", "managementGroup", "subscription", "resourceGroup"], + inputReader, + ); + const tenantId = getOptionalStringInput( + inputParameterNames.tenantId, + inputReader, + ); + + switch (type) { + case "tenant": { + return { + type, + tenantId, + }; + } + case "managementGroup": { + const managementGroup = getRequiredStringInput( + inputParameterNames.managementGroupId, + inputReader, + ); + return { + type, + tenantId, + managementGroup, + }; + } + case "subscription": { + const subscriptionId = getRequiredStringInput( + inputParameterNames.subscriptionId, + inputReader, + ); + return { + type, + tenantId, + subscriptionId, + }; + } + case "resourceGroup": { + const subscriptionId = getRequiredStringInput( + inputParameterNames.subscriptionId, + inputReader, + ); + const resourceGroup = getRequiredStringInput( + inputParameterNames.resourceGroupName, + inputReader, + ); + return { + type, + tenantId, + subscriptionId, + resourceGroup, + }; + } + } +} + +function parseDeploymentStackScope( + inputReader: InputReader, + inputParameterNames: InputParameterNames, +): ManagementGroupScope | SubscriptionScope | ResourceGroupScope { + const type = getRequiredEnumInput( + inputParameterNames.scope, + ["managementGroup", "subscription", "resourceGroup"], + inputReader, + ); + const tenantId = getOptionalStringInput( + inputParameterNames.tenantId, + inputReader, + ); + + switch (type) { + case "managementGroup": { + const managementGroup = getRequiredStringInput( + inputParameterNames.managementGroupId, + inputReader, + ); + return { + type, + tenantId, + managementGroup, + }; + } + case "subscription": { + const subscriptionId = getRequiredStringInput( + inputParameterNames.subscriptionId, + inputReader, + ); + return { + type, + tenantId, + subscriptionId, + }; + } + case "resourceGroup": { + const subscriptionId = getRequiredStringInput( + inputParameterNames.subscriptionId, + inputReader, + ); + const resourceGroup = getRequiredStringInput( + inputParameterNames.resourceGroupName, + inputReader, + ); + return { + type, + tenantId, + subscriptionId, + resourceGroup, + }; + } + } +} diff --git a/packages/bicep-deploy-common/src/deployments.ts b/packages/bicep-deploy-common/src/deployments.ts new file mode 100644 index 0000000..a10bb6c --- /dev/null +++ b/packages/bicep-deploy-common/src/deployments.ts @@ -0,0 +1,176 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. +import { DeploymentsConfig } from "./config"; +import { ParsedFiles } from "./file"; +import { Logger } from "./logging"; + +import { + defaultName, + getDeploymentClient, + getCreateOperationOptions, + requireLocation, +} from "./utils"; + +import { Deployment } from "@azure/arm-resources"; + +export async function deploymentCreate( + config: DeploymentsConfig, + files: ParsedFiles, + logger: Logger, +) { + const name = config.name ?? defaultName; + const scope = config.scope; + const client = getDeploymentClient(config, scope, logger); + const deployment = createDeploymentDefinition(config, files); + + switch (scope.type) { + case "resourceGroup": + return await client.deployments.beginCreateOrUpdateAndWait( + scope.resourceGroup, + name, + deployment, + getCreateOperationOptions(), + ); + case "subscription": + return await client.deployments.beginCreateOrUpdateAtSubscriptionScopeAndWait( + name, + { + ...deployment, + location: requireLocation(config), + }, + getCreateOperationOptions(), + ); + case "managementGroup": + return await client.deployments.beginCreateOrUpdateAtManagementGroupScopeAndWait( + scope.managementGroup, + name, + { + ...deployment, + location: requireLocation(config), + }, + getCreateOperationOptions(), + ); + case "tenant": + return await client.deployments.beginCreateOrUpdateAtTenantScopeAndWait( + name, + { + ...deployment, + location: requireLocation(config), + }, + getCreateOperationOptions(), + ); + } +} + +export async function deploymentValidate( + config: DeploymentsConfig, + files: ParsedFiles, + logger: Logger, +) { + const name = config.name ?? defaultName; + const scope = config.scope; + const client = getDeploymentClient(config, scope, logger); + const deployment = createDeploymentDefinition(config, files); + + switch (scope.type) { + case "resourceGroup": + return await client.deployments.beginValidateAndWait( + scope.resourceGroup, + name, + deployment, + ); + case "subscription": + return await client.deployments.beginValidateAtSubscriptionScopeAndWait( + name, + { + ...deployment, + location: requireLocation(config), + }, + ); + case "managementGroup": + return await client.deployments.beginValidateAtManagementGroupScopeAndWait( + scope.managementGroup, + name, + { + ...deployment, + location: requireLocation(config), + }, + ); + case "tenant": + await client.deployments.beginValidateAtTenantScopeAndWait(name, { + ...deployment, + location: requireLocation(config), + }); + } +} + +export async function deploymentWhatIf( + config: DeploymentsConfig, + files: ParsedFiles, + logger: Logger, +) { + const deploymentName = config.name ?? defaultName; + const scope = config.scope; + const client = getDeploymentClient(config, scope, logger); + const deployment = createDeploymentDefinition(config, files); + + switch (scope.type) { + case "resourceGroup": + return await client.deployments.beginWhatIfAndWait( + scope.resourceGroup, + deploymentName, + deployment, + ); + case "subscription": + return await client.deployments.beginWhatIfAtSubscriptionScopeAndWait( + deploymentName, + { + ...deployment, + location: requireLocation(config), + }, + ); + case "managementGroup": + return await client.deployments.beginWhatIfAtManagementGroupScopeAndWait( + scope.managementGroup, + deploymentName, + { + ...deployment, + location: requireLocation(config), + }, + ); + case "tenant": + return await client.deployments.beginWhatIfAtTenantScopeAndWait( + deploymentName, + { + ...deployment, + location: requireLocation(config), + }, + ); + } +} + +function createDeploymentDefinition( + config: DeploymentsConfig, + files: ParsedFiles, +): Deployment { + const { templateContents, templateSpecId, parametersContents } = files; + + return { + location: config.location, + properties: { + mode: "Incremental", + template: templateContents, + templateLink: templateSpecId + ? { + id: templateSpecId, + } + : undefined, + parameters: parametersContents["parameters"], + expressionEvaluationOptions: { + scope: "inner", + }, + validationLevel: config.validationLevel, + }, + tags: config.tags, + }; +} diff --git a/src/helpers/file.ts b/packages/bicep-deploy-common/src/file.ts similarity index 82% rename from src/helpers/file.ts rename to packages/bicep-deploy-common/src/file.ts index 46457a5..5e0c23a 100644 --- a/src/helpers/file.ts +++ b/packages/bicep-deploy-common/src/file.ts @@ -6,8 +6,8 @@ import * as path from "path"; import * as os from "os"; import { Bicep, CompileResponseDiagnostic } from "bicep-node"; -import { FileConfig } from "../config"; -import { logError, logInfo, logWarning } from "./logging"; +import { FileConfig } from "./config"; +import { Logger } from "./logging"; export type ParsedFiles = { // eslint-disable-next-line @typescript-eslint/no-explicit-any @@ -24,6 +24,7 @@ async function installBicep(bicepVersion?: string) { async function compileBicepParams( paramFilePath: string, + logger: Logger, parameters?: Record, bicepVersion?: string ) { @@ -34,9 +35,10 @@ async function compileBicepParams( path: paramFilePath, parameterOverrides: parameters ?? {}, }), + logger, ); - logDiagnostics(result.diagnostics); + logDiagnostics(result.diagnostics, logger); if (!result.success) { throw `Failed to compile Bicep parameters file: ${paramFilePath}`; @@ -49,16 +51,17 @@ async function compileBicepParams( }; } -async function compileBicep(templateFilePath: string, bicepVersion?: string) { +async function compileBicep(templateFilePath: string, logger: Logger, bicepVersion?: string) { const bicepPath = await installBicep(bicepVersion); const result = await withBicep(bicepPath, bicep => bicep.compile({ path: templateFilePath, }), + logger, ); - logDiagnostics(result.diagnostics); + logDiagnostics(result.diagnostics, logger); if (!result.success) { throw `Failed to compile Bicep file: ${templateFilePath}`; @@ -81,14 +84,14 @@ export async function getJsonParameters(config: FileConfig) { return JSON.stringify(contents); } -export async function getTemplateAndParameters(config: FileConfig) { +export async function getTemplateAndParameters(config: FileConfig, logger: Logger) { const { parametersFile, templateFile } = config; if ( parametersFile && path.extname(parametersFile).toLowerCase() === ".bicepparam" ) { - return parse(await compileBicepParams(parametersFile, config.parameters, config.bicepVersion)); + return parse(await compileBicepParams(parametersFile, logger, config.parameters, config.bicepVersion)); } if ( @@ -101,7 +104,7 @@ export async function getTemplateAndParameters(config: FileConfig) { const parameters = await getJsonParameters(config); if (templateFile && path.extname(templateFile).toLowerCase() === ".bicep") { - const { template } = await compileBicep(templateFile, config.bicepVersion); + const { template } = await compileBicep(templateFile, logger, config.bicepVersion); return parse({ template, parameters }); } @@ -134,12 +137,13 @@ export function parse(input: { async function withBicep( bicepPath: string, action: (bicep: Bicep) => Promise, + logger: Logger ) { const bicep = await Bicep.initialize(bicepPath); try { const version = await bicep.version(); - logInfo(`Installed Bicep version ${version} to ${bicepPath}`); + logger.logInfo(`Installed Bicep version ${version} to ${bicepPath}`); return await action(bicep); } finally { @@ -151,11 +155,11 @@ export function resolvePath(fileName: string) { return path.resolve(fileName); } -function logDiagnostics(diagnostics: CompileResponseDiagnostic[]) { +function logDiagnostics(diagnostics: CompileResponseDiagnostic[], logger: Logger) { for (const diag of diagnostics) { const message = `${diag.source}(${diag.range.start.line + 1},${diag.range.start.char + 1}) : ${diag.level} ${diag.code}: ${diag.message}`; - if (diag.level === "Error") logError(message); - if (diag.level === "Warning") logWarning(message); - if (diag.level === "Info") logInfo(message); + if (diag.level === "Error") logger.logError(message); + if (diag.level === "Warning") logger.logWarning(message); + if (diag.level === "Info") logger.logInfo(message); } } diff --git a/packages/bicep-deploy-common/src/handler.ts b/packages/bicep-deploy-common/src/handler.ts new file mode 100644 index 0000000..90987d1 --- /dev/null +++ b/packages/bicep-deploy-common/src/handler.ts @@ -0,0 +1,120 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. +import { isRestError } from "@azure/core-rest-pipeline"; + +import { DeployConfig } from "./config"; +import { + deploymentCreate, + deploymentValidate, + deploymentWhatIf, +} from "./deployments"; +import { stackCreate, stackDelete, stackValidate } from "./stacks"; +import { formatWhatIfOperationResult } from "./whatif"; +import { + logDiagnostics, + validateFileScope, + tryWithErrorHandling, +} from "./utils"; +import { ParsedFiles } from "./file"; +import { Logger } from "./logging"; +import { OutputSetter, setOutputs } from "./output"; + +export async function execute( + config: DeployConfig, + files: ParsedFiles, + logger: Logger, + outputSetter: OutputSetter, +) { + try { + validateFileScope(config, files); + switch (config.type) { + case "deployment": { + switch (config.operation) { + case "create": { + await tryWithErrorHandling( + async () => { + const result = await deploymentCreate(config, files, logger); + setOutputs(config, outputSetter, result?.properties?.outputs); + }, + error => { + logger.logError(JSON.stringify(error, null, 2)); + outputSetter.setFailed("Create failed"); + }, + logger, + ); + break; + } + case "validate": { + await tryWithErrorHandling( + async () => { + const result = await deploymentValidate(config, files, logger); + logDiagnostics(result?.properties?.diagnostics ?? [], logger); + }, + error => { + logger.logError(JSON.stringify(error, null, 2)); + outputSetter.setFailed("Validation failed"); + }, + logger, + ); + break; + } + case "whatIf": { + const result = await deploymentWhatIf(config, files, logger); + const formatted = formatWhatIfOperationResult(result, "ansii"); + logger.logInfoRaw(formatted); + logDiagnostics(result.diagnostics ?? [], logger); + break; + } + } + break; + } + case "deploymentStack": { + switch (config.operation) { + case "create": { + await tryWithErrorHandling( + async () => { + const result = await stackCreate(config, files, logger); + setOutputs(config, outputSetter, result?.properties?.outputs); + }, + error => { + logger.logError(JSON.stringify(error, null, 2)); + outputSetter.setFailed("Create failed"); + }, + logger, + ); + break; + } + case "validate": { + await tryWithErrorHandling( + () => stackValidate(config, files, logger), + error => { + logger.logError(JSON.stringify(error, null, 2)); + outputSetter.setFailed("Validation failed"); + }, + logger, + ); + break; + } + case "delete": { + await stackDelete(config, logger); + break; + } + } + break; + } + } + } catch (error) { + if (isRestError(error) && error.response?.bodyAsText) { + const correlationId = error.response.headers.get( + "x-ms-correlation-request-id", + ); + logger.logError(`Request failed. CorrelationId: ${correlationId}`); + + const responseBody = JSON.parse(error.response.bodyAsText); + logger.logError(JSON.stringify(responseBody, null, 2)); + } + + outputSetter.setFailed("Operation failed"); + throw error; + } +} diff --git a/packages/bicep-deploy-common/src/index.ts b/packages/bicep-deploy-common/src/index.ts new file mode 100644 index 0000000..c741199 --- /dev/null +++ b/packages/bicep-deploy-common/src/index.ts @@ -0,0 +1,13 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. + +export * from "./config"; +export * from "./deployments"; +export * from "./file"; +export * from "./handler"; +export * from "./input"; +export * from "./logging"; +export * from "./output"; +export * from "./stacks"; +export * from "./utils"; +export * from "./whatif"; diff --git a/src/helpers/input.ts b/packages/bicep-deploy-common/src/input.ts similarity index 57% rename from src/helpers/input.ts rename to packages/bicep-deploy-common/src/input.ts index cb5710b..aadaee7 100644 --- a/src/helpers/input.ts +++ b/packages/bicep-deploy-common/src/input.ts @@ -1,34 +1,80 @@ // Copyright (c) Microsoft Corporation. // Licensed under the MIT License. -import * as core from "@actions/core"; import * as yaml from "yaml"; import { resolvePath } from "./file"; -export function getRequiredStringInput(inputName: string): string { - return getInput(inputName, undefined, true) as string; +export interface InputReader { + getInput(inputName: string): string | undefined; } -export function getOptionalStringInput(inputName: string): string | undefined { - return getInput(inputName, undefined, false); +export interface InputParameterNames { + type: string; + name: string; + location: string; + templateFile: string; + paramtersFile: string; + parameters: string; + bicepVersion: string; + description: string; + tags: string; + maskedOutputs: string; + environment: string; + operation: string; + whatIfExcludeChangeTypes: string; + validationLevel: string; + actionOnUnmanageResources: string; + actionOnUnmanageResourceGroups: string; + actionOnUnmanageManagementGroups: string; + bypasStackOutOfSyncError: string; + denySettingsMode: string; + denySettingsExcludedActions: string; + denySettingsExcludedPrincipals: string; + denySettingsApplyToChildScopes: string; + scope: string; + tenantId: string; + managementGroupId: string; + subscriptionId: string; + resourceGroupName: string; +} + +export function getRequiredStringInput( + inputName: string, + inputReader: InputReader, +): string { + return getInput(inputName, inputReader, undefined, true) as string; +} + +export function getOptionalStringInput( + inputName: string, + inputReader: InputReader, +): string | undefined { + return getInput(inputName, inputReader, undefined, false); } export function getRequiredEnumInput( inputName: string, allowedValues: TEnum[], + inputReader: InputReader, ): TEnum { - return getInput(inputName, allowedValues, true) as TEnum; + return getInput(inputName, inputReader, allowedValues, true) as TEnum; } export function getOptionalEnumInput( inputName: string, allowedValues: TEnum[], + inputReader: InputReader, ): TEnum | undefined { - return getInput(inputName, allowedValues, false) as TEnum | undefined; + return getInput(inputName, inputReader, allowedValues, false) as + | TEnum + | undefined; } -export function getOptionalFilePath(inputName: string): string | undefined { - const input = getOptionalStringInput(inputName); +export function getOptionalFilePath( + inputName: string, + inputReader: InputReader, +): string | undefined { + const input = getOptionalStringInput(inputName, inputReader); if (!input) { return; } @@ -36,8 +82,11 @@ export function getOptionalFilePath(inputName: string): string | undefined { return resolvePath(input); } -export function getOptionalBooleanInput(inputName: string): boolean { - const input = getOptionalStringInput(inputName); +export function getOptionalBooleanInput( + inputName: string, + inputReader: InputReader, +): boolean { + const input = getOptionalStringInput(inputName, inputReader); if (!input) { return false; } @@ -53,8 +102,9 @@ export function getOptionalBooleanInput(inputName: string): boolean { export function getOptionalStringArrayInput( inputName: string, + inputReader: InputReader, ): string[] | undefined { - const inputString = getOptionalStringInput(inputName); + const inputString = getOptionalStringInput(inputName, inputReader); return inputString ? parseCommaSeparated(inputString) : undefined; } @@ -62,8 +112,9 @@ export function getOptionalStringArrayInput( export function getOptionalEnumArrayInput( inputName: string, allowedValues: TEnum[], + inputReader: InputReader, ): TEnum[] | undefined { - const values = getOptionalStringArrayInput(inputName); + const values = getOptionalStringArrayInput(inputName, inputReader); if (!values) { return undefined; } @@ -82,8 +133,9 @@ export function getOptionalEnumArrayInput( export function getOptionalDictionaryInput( inputName: string, + inputReader: InputReader, ): Record | undefined { - const inputString = getOptionalStringInput(inputName); + const inputString = getOptionalStringInput(inputName, inputReader); if (!inputString) { return undefined; } @@ -100,8 +152,9 @@ export function getOptionalDictionaryInput( export function getOptionalStringDictionaryInput( inputName: string, + inputReader: InputReader, ): Record | undefined { - const input = getOptionalDictionaryInput(inputName); + const input = getOptionalDictionaryInput(inputName, inputReader); if (!input) { return undefined; } @@ -117,12 +170,36 @@ export function getOptionalStringDictionaryInput( return input as Record; } +function tryParseJson(value: string) { + try { + return JSON.parse(value); + } catch { + return undefined; + } +} + +function tryParseYaml(value: string) { + try { + return yaml.parse(value); + } catch { + return undefined; + } +} + +function parseCommaSeparated(value: string) { + return value + .split(",") + .map(val => val.trim()) + .filter(val => val.length > 0); +} + function getInput( inputName: string, + inputReader: InputReader, allowedValues?: string[], throwOnMissing = true, ): string | undefined { - const inputValue = core.getInput(inputName)?.trim(); + const inputValue = inputReader.getInput(inputName)?.trim(); if (!inputValue) { if (throwOnMissing) { throw new Error( @@ -141,26 +218,3 @@ function getInput( return inputValue; } - -function tryParseJson(value: string) { - try { - return JSON.parse(value); - } catch { - return undefined; - } -} - -function tryParseYaml(value: string) { - try { - return yaml.parse(value); - } catch { - return undefined; - } -} - -function parseCommaSeparated(value: string) { - return value - .split(",") - .map(val => val.trim()) - .filter(val => val.length > 0); -} diff --git a/src/helpers/logging.ts b/packages/bicep-deploy-common/src/logging.ts similarity index 80% rename from src/helpers/logging.ts rename to packages/bicep-deploy-common/src/logging.ts index 8154ef7..8bbdebe 100644 --- a/src/helpers/logging.ts +++ b/packages/bicep-deploy-common/src/logging.ts @@ -1,6 +1,13 @@ // Copyright (c) Microsoft Corporation. // Licensed under the MIT License. -import * as core from "@actions/core"; +export interface Logger { + isDebugEnabled(): boolean; + debug(message: string): void; + logInfo(message: string): void; + logWarning(message: string): void; + logError(message: string): void; + logInfoRaw(message: string): void; +} export type ColorMode = "off" | "ansii" | "debug"; // debug is just used for unit testing @@ -41,16 +48,6 @@ export function removeColors(message: string) { return message; } -export const logInfoRaw = (message: string) => core.info(message); -export const logInfo = (message: string) => - logInfoRaw(colorize(message, Color.Blue)); -export const logWarningRaw = (message: string) => core.warning(message); -export const logWarning = (message: string) => - logWarningRaw(colorize(message, Color.Yellow)); -export const logErrorRaw = (message: string) => core.error(message); -export const logError = (message: string) => - logErrorRaw(colorize(message, Color.Red)); - export function getColorString(colorMode: ColorMode, color: Color): string { switch (colorMode) { case "off": diff --git a/packages/bicep-deploy-common/src/output.ts b/packages/bicep-deploy-common/src/output.ts new file mode 100644 index 0000000..7388d38 --- /dev/null +++ b/packages/bicep-deploy-common/src/output.ts @@ -0,0 +1,31 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. +import { DeployConfig } from "./config"; + +export interface OutputSetter { + // eslint-disable-next-line @typescript-eslint/no-explicit-any + setOutput(name: string, value: any): void; + setFailed(message: string | Error): void; + setSecret(secret: string): void; +} + +export function setOutputs( + config: DeployConfig, + outputSetter: OutputSetter, + outputs?: Record, +) { + if (!outputs) { + return; + } + + for (const key of Object.keys(outputs)) { + const output = outputs[key] as { value: string }; + outputSetter.setOutput(key, output.value); + if ( + config.maskedOutputs && + config.maskedOutputs.some(x => x.toLowerCase() === key.toLowerCase()) + ) { + outputSetter.setSecret(output.value); + } + } +} diff --git a/packages/bicep-deploy-common/src/stacks.ts b/packages/bicep-deploy-common/src/stacks.ts new file mode 100644 index 0000000..6954ea1 --- /dev/null +++ b/packages/bicep-deploy-common/src/stacks.ts @@ -0,0 +1,154 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. +import { DeploymentStackConfig } from "./config"; +import { ParsedFiles } from "./file"; +import { Logger } from "./logging"; + +import { + defaultName, + getStacksClient, + getCreateOperationOptions, + requireLocation, +} from "./utils"; + +import { DeploymentStack } from "@azure/arm-resourcesdeploymentstacks"; + +export async function stackCreate( + config: DeploymentStackConfig, + files: ParsedFiles, + logger: Logger, +) { + const name = config.name ?? defaultName; + const scope = config.scope; + const client = getStacksClient(config, scope, logger); + const stack = createStackDefinition(config, files); + + switch (scope.type) { + case "resourceGroup": + return await client.deploymentStacks.beginCreateOrUpdateAtResourceGroupAndWait( + scope.resourceGroup, + name, + stack, + getCreateOperationOptions(), + ); + case "subscription": + return await client.deploymentStacks.beginCreateOrUpdateAtSubscriptionAndWait( + name, + { + ...stack, + location: requireLocation(config), + }, + getCreateOperationOptions(), + ); + case "managementGroup": + return await client.deploymentStacks.beginCreateOrUpdateAtManagementGroupAndWait( + scope.managementGroup, + name, + { + ...stack, + location: requireLocation(config), + }, + getCreateOperationOptions(), + ); + } +} + +export async function stackValidate( + config: DeploymentStackConfig, + files: ParsedFiles, + logger: Logger, +) { + const name = config.name ?? defaultName; + const scope = config.scope; + const client = getStacksClient(config, scope, logger); + const stack = createStackDefinition(config, files); + + switch (scope.type) { + case "resourceGroup": + return await client.deploymentStacks.beginValidateStackAtResourceGroupAndWait( + scope.resourceGroup, + name, + stack, + ); + case "subscription": + return await client.deploymentStacks.beginValidateStackAtSubscriptionAndWait( + name, + { + ...stack, + location: requireLocation(config), + }, + ); + case "managementGroup": + return await client.deploymentStacks.beginValidateStackAtManagementGroupAndWait( + scope.managementGroup, + name, + { + ...stack, + location: requireLocation(config), + }, + ); + } +} + +export async function stackDelete( + config: DeploymentStackConfig, + logger: Logger, +) { + const name = config.name ?? defaultName; + const scope = config.scope; + const client = getStacksClient(config, scope, logger); + const deletionOptions = getStackDeletionOptions(config); + + switch (scope.type) { + case "resourceGroup": + return await client.deploymentStacks.beginDeleteAtResourceGroupAndWait( + scope.resourceGroup, + name, + deletionOptions, + ); + case "subscription": + return await client.deploymentStacks.beginDeleteAtSubscriptionAndWait( + name, + deletionOptions, + ); + case "managementGroup": + return await client.deploymentStacks.beginDeleteAtManagementGroupAndWait( + scope.managementGroup, + name, + deletionOptions, + ); + } +} + +function createStackDefinition( + config: DeploymentStackConfig, + files: ParsedFiles, +): DeploymentStack { + const { templateContents, templateSpecId, parametersContents } = files; + + return { + properties: { + template: templateContents, + templateLink: templateSpecId + ? { + id: templateSpecId, + } + : undefined, + parameters: parametersContents["parameters"], + description: config.description, + actionOnUnmanage: config.actionOnUnManage, + denySettings: config.denySettings, + bypassStackOutOfSyncError: config.bypassStackOutOfSyncError, + }, + tags: config.tags, + }; +} + +function getStackDeletionOptions(config: DeploymentStackConfig) { + return { + unmanageActionResources: config.actionOnUnManage.resources, + unmanageActionResourceGroups: config.actionOnUnManage.resourceGroups, + unmanageActionManagementGroups: config.actionOnUnManage.managementGroups, + bypassStackOutOfSyncError: config.bypassStackOutOfSyncError, + }; +} diff --git a/packages/bicep-deploy-common/src/utils.ts b/packages/bicep-deploy-common/src/utils.ts new file mode 100644 index 0000000..b846b07 --- /dev/null +++ b/packages/bicep-deploy-common/src/utils.ts @@ -0,0 +1,201 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. + +import { + DeployConfig, + ManagementGroupScope, + ResourceGroupScope, + ScopeType, + SubscriptionScope, + TenantScope, +} from "./config"; +import { createDeploymentClient, createStacksClient } from "./azure"; + +import { + CloudError, + DeploymentDiagnosticsDefinition, + ErrorResponse, +} from "@azure/arm-resources"; +import { OperationOptions } from "@azure/core-client"; +import { isRestError, PipelineResponse } from "@azure/core-rest-pipeline"; + +import { Logger } from "./logging"; +import { ParsedFiles } from "./file"; + +export const defaultName = "azure-bicep-deploy"; + +export function getDeploymentClient( + config: DeployConfig, + scope: + | TenantScope + | ManagementGroupScope + | SubscriptionScope + | ResourceGroupScope, + logger: Logger, +) { + const { tenantId } = scope; + const subscriptionId = + "subscriptionId" in scope ? scope.subscriptionId : undefined; + + return createDeploymentClient(config, logger, subscriptionId, tenantId); +} + +export function getStacksClient( + config: DeployConfig, + scope: + | TenantScope + | ManagementGroupScope + | SubscriptionScope + | ResourceGroupScope, + logger: Logger, +) { + const { tenantId } = scope; + const subscriptionId = + "subscriptionId" in scope ? scope.subscriptionId : undefined; + + return createStacksClient(config, logger, subscriptionId, tenantId); +} + +// workaround until we're able to pick up https://github.com/Azure/azure-sdk-for-js/pull/25500 +export function getCreateOperationOptions(): OperationOptions { + return { + // eslint-disable-next-line @typescript-eslint/no-explicit-any + onResponse: (rawResponse, flatResponse: any) => { + if ( + flatResponse && + flatResponse.error && + flatResponse.error.code && + flatResponse.error.message + ) { + throw new CustomPollingError(flatResponse, rawResponse); + } + }, + }; +} + +// workaround until we're able to pick up https://github.com/Azure/azure-sdk-for-js/pull/25500 +export class CustomPollingError { + response: PipelineResponse; + details: CloudError; + constructor(details: CloudError, response: PipelineResponse) { + this.details = details; + this.response = response; + } +} + +export function requireLocation(config: DeployConfig) { + // this just exists to make typescript's validation happy. + // it should only be called in places where we've already validated the location is set. + if (!config.location) { + throw new Error("Location is required"); + } + + return config.location; +} + +export function logDiagnostics( + diagnostics: DeploymentDiagnosticsDefinition[], + logger: Logger, +) { + if (diagnostics.length === 0) { + return; + } + + logger.logInfo("Diagnostics returned by the API"); + + for (const diagnostic of diagnostics) { + const message = `[${diagnostic.level}] ${diagnostic.code}: ${diagnostic.message}`; + switch (diagnostic.level.toLowerCase()) { + case "error": + logger.logError(message); + break; + case "warning": + logger.logWarning(message); + break; + default: + logger.logInfo(message); + break; + } + } +} + +export function validateFileScope(config: DeployConfig, files: ParsedFiles) { + const scope = getScope(files); + if (!scope) { + return; + } + + if (scope !== config.scope.type) { + throw new Error( + `The target scope ${scope} does not match the deployment scope ${config.scope.type}.`, + ); + } +} + +function getScope(files: ParsedFiles): ScopeType | undefined { + const template = files.templateContents ?? {}; + const bicepGenerated = template.metadata?._generator?.name; + const schema = template["$schema"]; + + if (!bicepGenerated) { + // loose validation for non-Bicep generated templates, to match Azure CLI behavior + return; + } + + const result = + /https:\/\/schema\.management\.azure\.com\/schemas\/[0-9a-zA-Z-]+\/([a-zA-Z]+)Template\.json#?/.exec( + schema, + ); + const scopeMatch = result ? result[1].toLowerCase() : null; + + switch (scopeMatch) { + case "tenantdeployment": + return "tenant"; + case "managementgroupdeployment": + return "managementGroup"; + case "subscriptiondeployment": + return "subscription"; + case "deployment": + return "resourceGroup"; + default: + throw new Error(`Failed to determine deployment scope from Bicep file.`); + } +} + +export async function tryWithErrorHandling( + action: () => Promise, + onError: (error: ErrorResponse) => void, + logger: Logger, +): Promise { + try { + return await action(); + } catch (ex) { + if (isRestError(ex)) { + const correlationId = ex.response?.headers.get( + "x-ms-correlation-request-id", + ); + logger.logError(`Request failed. CorrelationId: ${correlationId}`); + + const { error } = ex.details as CloudError; + if (error) { + onError(error); + return; + } + } + + if (ex instanceof CustomPollingError) { + const correlationId = ex.response?.headers.get( + "x-ms-correlation-request-id", + ); + logger.logError(`Request failed. CorrelationId: ${correlationId}`); + + const { error } = ex.details; + if (error) { + onError(error); + return; + } + } + + throw ex; + } +} diff --git a/src/helpers/whatif.ts b/packages/bicep-deploy-common/src/whatif.ts similarity index 100% rename from src/helpers/whatif.ts rename to packages/bicep-deploy-common/src/whatif.ts diff --git a/packages/bicep-deploy-common/test/config.test.ts b/packages/bicep-deploy-common/test/config.test.ts new file mode 100644 index 0000000..04e041a --- /dev/null +++ b/packages/bicep-deploy-common/test/config.test.ts @@ -0,0 +1,631 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. +import { + configureGetInputMock, + mockInputReader, + TestInputParameterNames, +} from "./mocks/inputMocks"; +import { + DeploymentsConfig, + DeploymentStackConfig, + parseConfig, +} from "../src/config"; +import path from "path"; + +const inputReader = new mockInputReader(); +const inputParameterNames = new TestInputParameterNames(); + +describe("input validation", () => { + it("requires type", async () => { + configureGetInputMock({}, inputReader); + + expect(() => parseConfig(inputReader, inputParameterNames)).toThrow( + "Action input 'type' is required but not provided", + ); + }); + + it("requires a valid value for type", async () => { + configureGetInputMock({ type: "foo" }, inputReader); + + expect(() => parseConfig(inputReader, inputParameterNames)).toThrow( + "Action input 'type' must be one of the following values: 'deployment', 'deploymentStack'", + ); + }); + + it("requires valid json for tags string", async () => { + configureGetInputMock({ type: "deployment", tags: "invalid" }, inputReader); + + expect(() => parseConfig(inputReader, inputParameterNames)).toThrow( + "Action input 'tags' must be a valid JSON or YAML object", + ); + }); + + it("requires valid json for tags object", async () => { + configureGetInputMock( + { type: "deployment", tags: '{"foo": {}}' }, + inputReader, + ); + + expect(() => parseConfig(inputReader, inputParameterNames)).toThrow( + "Action input 'tags' must be a valid JSON or YAML object", + ); + }); + + it("requires operation to be provided", async () => { + configureGetInputMock({ type: "deployment" }, inputReader); + + expect(() => parseConfig(inputReader, inputParameterNames)).toThrow( + "Action input 'operation' is required but not provided", + ); + }); + + it("requires valid operation for deployment", async () => { + configureGetInputMock( + { type: "deployment", operation: "delete" }, + inputReader, + ); + + expect(() => parseConfig(inputReader, inputParameterNames)).toThrow( + "Action input 'operation' must be one of the following values: 'create', 'validate', 'whatIf'", + ); + }); + + it("requires valid operation for deploymentStacks", async () => { + configureGetInputMock( + { type: "deploymentStack", operation: "whatIf" }, + inputReader, + ); + + expect(() => parseConfig(inputReader, inputParameterNames)).toThrow( + "Action input 'operation' must be one of the following values: 'create', 'validate', 'delete'", + ); + }); + + it("validates environment input for deployment", async () => { + configureGetInputMock( + { + type: "deployment", + operation: "create", + scope: "resourceGroup", + subscriptionId: "foo", + resourceGroupName: "mockRg", + "what-if-exclude-change-types": "blah", + environment: "asdf", + }, + inputReader, + ); + + expect(() => parseConfig(inputReader, inputParameterNames)).toThrow( + "Action input 'environment' must be one of the following values: 'azureCloud', 'azureChinaCloud', 'azureGermanCloud', 'azureUSGovernment'", + ); + }); + + it("validates environment input for deploymentStack", async () => { + configureGetInputMock( + { + type: "deploymentStack", + operation: "create", + scope: "resourceGroup", + subscriptionId: "foo", + resourceGroupName: "mockRg", + "action-on-unmanage-resources": "detach", + "action-on-unmanage-managementgroups": "sadf", + environment: "asdf", + }, + inputReader, + ); + + expect(() => parseConfig(inputReader, inputParameterNames)).toThrow( + "Action input 'environment' must be one of the following values: 'azureCloud', 'azureChinaCloud', 'azureGermanCloud', 'azureUSGovernment'", + ); + }); + + it("requires subscriptionId if scope is subscription", async () => { + configureGetInputMock( + { + type: "deployment", + operation: "create", + scope: "subscription", + }, + inputReader, + ); + + expect(() => parseConfig(inputReader, inputParameterNames)).toThrow( + "Action input 'subscriptionId' is required but not provided", + ); + }); + + it("requires subscriptionId if scope is resourceGroup", async () => { + configureGetInputMock( + { + type: "deployment", + operation: "create", + scope: "resourceGroup", + }, + inputReader, + ); + + expect(() => parseConfig(inputReader, inputParameterNames)).toThrow( + "Action input 'subscriptionId' is required but not provided", + ); + }); + + it("requires resourceGroupName if scope is resourceGroup", async () => { + configureGetInputMock( + { + type: "deployment", + operation: "create", + scope: "resourceGroup", + subscriptionId: "foo", + }, + inputReader, + ); + + expect(() => parseConfig(inputReader, inputParameterNames)).toThrow( + "Action input 'resourceGroupName' is required but not provided", + ); + }); + + it("requires managementGroupId if scope is managementGroup", async () => { + configureGetInputMock( + { + type: "deployment", + operation: "create", + scope: "managementGroup", + }, + inputReader, + ); + + expect(() => parseConfig(inputReader, inputParameterNames)).toThrow( + "Action input 'managementGroupId' is required but not provided", + ); + }); + + it("blocks tenant if type is deploymentStack", async () => { + configureGetInputMock( + { + type: "deploymentStack", + operation: "create", + scope: "tenant", + }, + inputReader, + ); + + expect(() => parseConfig(inputReader, inputParameterNames)).toThrow( + "Action input 'scope' must be one of the following values: 'managementGroup', 'subscription', 'resourceGroup'", + ); + }); + + it("validates what-if-exclude-change-types inputs for deployment", async () => { + configureGetInputMock( + { + type: "deployment", + operation: "create", + scope: "resourceGroup", + subscriptionId: "foo", + resourceGroupName: "mockRg", + "what-if-exclude-change-types": "blah", + }, + inputReader, + ); + + expect(() => parseConfig(inputReader, inputParameterNames)).toThrow( + "Action input 'what-if-exclude-change-types' must be one of the following values: 'create', 'delete', 'modify', 'deploy', 'noChange', 'ignore', 'unsupported'", + ); + }); + + it("validates validation-level inputs for deployment", async () => { + configureGetInputMock( + { + type: "deployment", + operation: "create", + scope: "resourceGroup", + subscriptionId: "foo", + resourceGroupName: "mockRg", + "validation-level": "blah", + }, + inputReader, + ); + + expect(() => parseConfig(inputReader, inputParameterNames)).toThrow( + "Action input 'validation-level' must be one of the following values: 'provider', 'template', 'providerNoRbac'", + ); + }); + + it("requires action-on-unmanage-resources for deploymentStack", async () => { + configureGetInputMock( + { + type: "deploymentStack", + operation: "create", + scope: "resourceGroup", + subscriptionId: "foo", + resourceGroupName: "mockRg", + }, + inputReader, + ); + + expect(() => parseConfig(inputReader, inputParameterNames)).toThrow( + "Action input 'action-on-unmanage-resources' is required but not provided", + ); + }); + + it("validates action-on-unmanage-resources inputs for deploymentStack", async () => { + configureGetInputMock( + { + type: "deploymentStack", + operation: "create", + scope: "resourceGroup", + subscriptionId: "foo", + resourceGroupName: "mockRg", + "action-on-unmanage-resources": "sadf", + }, + inputReader, + ); + + expect(() => parseConfig(inputReader, inputParameterNames)).toThrow( + "Action input 'action-on-unmanage-resources' must be one of the following values: 'delete', 'detach'", + ); + }); + + it("validates action-on-unmanage-resourcegroups inputs for deploymentStack", async () => { + configureGetInputMock( + { + type: "deploymentStack", + operation: "create", + scope: "resourceGroup", + subscriptionId: "foo", + resourceGroupName: "mockRg", + "action-on-unmanage-resources": "detach", + "action-on-unmanage-resourcegroups": "sadf", + }, + inputReader, + ); + + expect(() => parseConfig(inputReader, inputParameterNames)).toThrow( + "Action input 'action-on-unmanage-resourcegroups' must be one of the following values: 'delete', 'detach'", + ); + }); + + it("validates action-on-unmanage-managementgroups inputs for deploymentStack", async () => { + configureGetInputMock( + { + type: "deploymentStack", + operation: "create", + scope: "resourceGroup", + subscriptionId: "foo", + resourceGroupName: "mockRg", + "action-on-unmanage-resources": "detach", + "action-on-unmanage-managementgroups": "sadf", + }, + inputReader, + ); + + expect(() => parseConfig(inputReader, inputParameterNames)).toThrow( + "Action input 'action-on-unmanage-managementgroups' must be one of the following values: 'delete', 'detach'", + ); + }); + + it("requires deny-settings-mode inputs for deploymentStack", async () => { + configureGetInputMock( + { + type: "deploymentStack", + operation: "create", + scope: "resourceGroup", + subscriptionId: "foo", + resourceGroupName: "mockRg", + "action-on-unmanage-resources": "detach", + }, + inputReader, + ); + + expect(() => parseConfig(inputReader, inputParameterNames)).toThrow( + "Action input 'deny-settings-mode' is required but not provided", + ); + }); + + it("validates deny-settings-mode inputs for deploymentStack", async () => { + configureGetInputMock( + { + type: "deploymentStack", + operation: "create", + scope: "resourceGroup", + subscriptionId: "foo", + resourceGroupName: "mockRg", + "action-on-unmanage-resources": "detach", + "deny-settings-mode": "asdfasdf", + }, + inputReader, + ); + + expect(() => parseConfig(inputReader, inputParameterNames)).toThrow( + "Action input 'deny-settings-mode' must be one of the following values: 'denyDelete', 'denyWriteAndDelete', 'none'", + ); + }); + + it("validates bypass-stack-out-of-sync-error inputs for deploymentStack", async () => { + configureGetInputMock( + { + type: "deploymentStack", + operation: "create", + scope: "resourceGroup", + subscriptionId: "foo", + resourceGroupName: "mockRg", + "action-on-unmanage-resources": "detach", + "bypass-stack-out-of-sync-error": "asdfasdf", + }, + inputReader, + ); + + expect(() => parseConfig(inputReader, inputParameterNames)).toThrow( + "Action input 'bypass-stack-out-of-sync-error' must be a boolean value", + ); + }); +}); + +describe("input parsing", () => { + it("parses deployment inputs", async () => { + configureGetInputMock( + { + type: "deployment", + name: "mockName", + operation: "create", + scope: "resourceGroup", + subscriptionId: "mockSub", + resourceGroupName: "mockRg", + location: "mockLocation", + "template-file": "/path/to/mockTemplateFile", + "parameters-file": "/path/to/mockParametersFile", + parameters: '{"foo": "bar2"}', + description: "mockDescription", + tags: '{"foo": "bar"}', + "masked-outputs": "abc,def", + "what-if-exclude-change-types": "noChange", + "validation-level": "providerNoRbac", + environment: "azureUSGovernment", + }, + inputReader, + ); + + const config = parseConfig(inputReader, inputParameterNames); + + expect(config).toEqual({ + type: "deployment", + name: "mockName", + operation: "create", + scope: { + type: "resourceGroup", + subscriptionId: "mockSub", + resourceGroup: "mockRg", + }, + location: "mockLocation", + templateFile: path.resolve("/path/to/mockTemplateFile"), + parametersFile: path.resolve("/path/to/mockParametersFile"), + parameters: { + foo: "bar2", + }, + tags: { + foo: "bar", + }, + maskedOutputs: ["abc", "def"], + whatIf: { + excludeChangeTypes: ["noChange"], + }, + environment: "azureUSGovernment", + validationLevel: "providerNoRbac", + }); + }); + + it("parses deployment stacks inputs", async () => { + configureGetInputMock( + { + type: "deploymentStack", + name: "mockName", + operation: "delete", + scope: "subscription", + subscriptionId: "mockSub", + location: "mockLocation", + "template-file": "/path/to/mockTemplateFile", + "parameters-file": "/path/to/mockParametersFile", + parameters: ` +{ + "stringParam": "foo", + "intParam": 123, + "boolParam": true, + "arrayParam": [ + "val1", + "val2", + "val3" + ], + "objectParam": { + "prop1": "val1", + "prop2": "val2" + } +}`, + description: "mockDescription", + tags: '{"foo": "bar"}', + "masked-outputs": "abc,def", + "action-on-unmanage-resources": "delete", + "action-on-unmanage-resourcegroups": "delete", + "action-on-unmanage-managementgroups": "delete", + "deny-settings-mode": "none", + "deny-settings-excluded-actions": "abc,def", + "deny-settings-excluded-principals": "ghi,jkl", + "deny-settings-apply-to-child-scopes": "true", + "bypass-stack-out-of-sync-error": "true", + environment: "azureUSGovernment", + }, + inputReader, + ); + + const config = parseConfig(inputReader, inputParameterNames); + + expect(config).toEqual({ + type: "deploymentStack", + name: "mockName", + operation: "delete", + scope: { + type: "subscription", + subscriptionId: "mockSub", + }, + location: "mockLocation", + templateFile: path.resolve("/path/to/mockTemplateFile"), + parametersFile: path.resolve("/path/to/mockParametersFile"), + parameters: { + stringParam: "foo", + intParam: 123, + boolParam: true, + arrayParam: ["val1", "val2", "val3"], + objectParam: { + prop1: "val1", + prop2: "val2", + }, + }, + description: "mockDescription", + tags: { + foo: "bar", + }, + maskedOutputs: ["abc", "def"], + actionOnUnManage: { + resources: "delete", + resourceGroups: "delete", + managementGroups: "delete", + }, + denySettings: { + mode: "none", + excludedActions: ["abc", "def"], + excludedPrincipals: ["ghi", "jkl"], + applyToChildScopes: true, + }, + bypassStackOutOfSyncError: true, + environment: "azureUSGovernment", + }); + }); + + it("supports YAML syntax for parameters", async () => { + configureGetInputMock( + { + type: "deployment", + name: "mockName", + operation: "create", + scope: "resourceGroup", + subscriptionId: "mockSub", + resourceGroupName: "mockRg", + location: "mockLocation", + "template-file": "/path/to/mockTemplateFile", + "parameters-file": "/path/to/mockParametersFile", + parameters: ` +stringParam: foo +intParam: 123 +boolParam: true +arrayParam: + - val1 + - val2 + - val3 +objectParam: + prop1: val1 + prop2: val2 +`, + description: "mockDescription", + tags: '{"foo": "bar"}', + "masked-outputs": "abc,def", + "what-if-exclude-change-types": "noChange", + environment: "azureUSGovernment", + }, + inputReader, + ); + + const config = parseConfig(inputReader, inputParameterNames); + + expect(config).toEqual({ + type: "deployment", + name: "mockName", + operation: "create", + scope: { + type: "resourceGroup", + subscriptionId: "mockSub", + resourceGroup: "mockRg", + }, + location: "mockLocation", + templateFile: path.resolve("/path/to/mockTemplateFile"), + parametersFile: path.resolve("/path/to/mockParametersFile"), + parameters: { + stringParam: "foo", + intParam: 123, + boolParam: true, + arrayParam: ["val1", "val2", "val3"], + objectParam: { + prop1: "val1", + prop2: "val2", + }, + }, + tags: { + foo: "bar", + }, + maskedOutputs: ["abc", "def"], + whatIf: { + excludeChangeTypes: ["noChange"], + }, + environment: "azureUSGovernment", + }); + }); + + it("parses bicep-version input correctly", async () => { + configureGetInputMock( + { + type: "deployment", + operation: "create", + scope: "resourceGroup", + subscriptionId: "mockSub", + resourceGroupName: "mockRg", + "template-file": "/path/to/mockTemplateFile", + "bicep-version": "0.30.23", + }, + inputReader, + ); + + const config = parseConfig(inputReader, inputParameterNames); + + expect(config).toEqual({ + type: "deployment", + name: undefined, + operation: "create", + scope: { + type: "resourceGroup", + subscriptionId: "mockSub", + resourceGroup: "mockRg", + tenantId: undefined, + }, + location: undefined, + templateFile: path.resolve("/path/to/mockTemplateFile"), + parametersFile: undefined, + parameters: undefined, + bicepVersion: "0.30.23", // This should contain the specified version + tags: undefined, + maskedOutputs: undefined, + whatIf: { + excludeChangeTypes: undefined, + }, + validationLevel: undefined, + environment: "azureCloud", + }); + }); + + it("defaults bicep-version to undefined when not provided", async () => { + configureGetInputMock( + { + type: "deployment", + operation: "create", + scope: "resourceGroup", + subscriptionId: "mockSub", + resourceGroupName: "mockRg", + "template-file": "/path/to/mockTemplateFile", + // bicep-version not provided + }, + inputReader, + ); + + const config = parseConfig(inputReader, inputParameterNames); + + expect(config.bicepVersion).toBeUndefined(); + }); +}); diff --git a/test/file.test.ts b/packages/bicep-deploy-common/test/file.test.ts similarity index 91% rename from test/file.test.ts rename to packages/bicep-deploy-common/test/file.test.ts index 56fb843..6d1d384 100644 --- a/test/file.test.ts +++ b/packages/bicep-deploy-common/test/file.test.ts @@ -7,10 +7,8 @@ import { } from "./mocks/bicepNodeMocks"; import { configureReadFile } from "./mocks/fsMocks"; import { FileConfig } from "../src/config"; -import { - getJsonParameters, - getTemplateAndParameters, -} from "../src/helpers/file"; +import { TestLogger } from "./logging"; +import { getJsonParameters, getTemplateAndParameters } from "../src/file"; import { readTestFile } from "./utils"; describe("file parsing", () => { @@ -28,8 +26,10 @@ describe("file parsing", () => { throw `Unexpected file path: ${filePath}`; }); + const logger = new TestLogger(); + const { templateContents, parametersContents } = - await getTemplateAndParameters(config); + await getTemplateAndParameters(config, logger); expect(templateContents["$schema"]).toBe( "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", @@ -69,8 +69,10 @@ describe("file parsing", () => { }; }); + const logger = new TestLogger(); + const { templateContents, parametersContents } = - await getTemplateAndParameters(config); + await getTemplateAndParameters(config, logger); expect(templateContents["$schema"]).toBe( "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", @@ -112,8 +114,10 @@ describe("file parsing", () => { }; }); + const logger = new TestLogger(); + const { templateContents, parametersContents } = - await getTemplateAndParameters(config); + await getTemplateAndParameters(config, logger); expect(templateContents["$schema"]).toBe( "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", @@ -157,8 +161,10 @@ describe("file parsing", () => { }; }); + const logger = new TestLogger(); + const { templateContents, parametersContents } = - await getTemplateAndParameters(config); + await getTemplateAndParameters(config, logger); expect(templateContents["$schema"]).toBe( "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", @@ -177,8 +183,10 @@ describe("file parsing", () => { templateFile: "/path/to/main.json", }; + const logger = new TestLogger(); + await expect( - async () => await getTemplateAndParameters(config), + async () => await getTemplateAndParameters(config, logger), ).rejects.toThrow( "Unsupported parameters file type: /path/to/parameters.what", ); @@ -190,8 +198,10 @@ describe("file parsing", () => { templateFile: "/path/to/main.what", }; + const logger = new TestLogger(); + await expect( - async () => await getTemplateAndParameters(config), + async () => await getTemplateAndParameters(config, logger), ).rejects.toThrow("Unsupported template file type: /path/to/main.what"); }); }); diff --git a/packages/bicep-deploy-common/test/files/basic-sub/main.bicep b/packages/bicep-deploy-common/test/files/basic-sub/main.bicep new file mode 100644 index 0000000..5eadb3f --- /dev/null +++ b/packages/bicep-deploy-common/test/files/basic-sub/main.bicep @@ -0,0 +1,9 @@ +targetScope = 'subscription' + +param stringParam string +param intParam int +param objectParam object + +output stringOutput string = stringParam +output intOutput int = intParam +output objectOutput object = objectParam diff --git a/packages/bicep-deploy-common/test/files/basic-sub/main.bicepparam b/packages/bicep-deploy-common/test/files/basic-sub/main.bicepparam new file mode 100644 index 0000000..b4354db --- /dev/null +++ b/packages/bicep-deploy-common/test/files/basic-sub/main.bicepparam @@ -0,0 +1,8 @@ +using 'main.bicep' + +param intParam = 42 +param stringParam = 'hello world' +param objectParam = { + prop1: 'value1' + prop2: 'value2' +} diff --git a/packages/bicep-deploy-common/test/files/basic-sub/main.json b/packages/bicep-deploy-common/test/files/basic-sub/main.json new file mode 100644 index 0000000..7b1b8b2 --- /dev/null +++ b/packages/bicep-deploy-common/test/files/basic-sub/main.json @@ -0,0 +1,37 @@ +{ + "$schema": "https://schema.management.azure.com/schemas/2018-05-01/subscriptionDeploymentTemplate.json#", + "contentVersion": "1.0.0.0", + "metadata": { + "_generator": { + "name": "bicep", + "version": "0.30.23.60470", + "templateHash": "16476773654784878732" + } + }, + "parameters": { + "stringParam": { + "type": "string" + }, + "intParam": { + "type": "int" + }, + "objectParam": { + "type": "object" + } + }, + "resources": [], + "outputs": { + "stringOutput": { + "type": "string", + "value": "[parameters('stringParam')]" + }, + "intOutput": { + "type": "int", + "value": "[parameters('intParam')]" + }, + "objectOutput": { + "type": "object", + "value": "[parameters('objectParam')]" + } + } +} \ No newline at end of file diff --git a/packages/bicep-deploy-common/test/files/basic-sub/main.parameters.json b/packages/bicep-deploy-common/test/files/basic-sub/main.parameters.json new file mode 100644 index 0000000..cc34c12 --- /dev/null +++ b/packages/bicep-deploy-common/test/files/basic-sub/main.parameters.json @@ -0,0 +1,18 @@ +{ + "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentParameters.json#", + "contentVersion": "1.0.0.0", + "parameters": { + "intParam": { + "value": 42 + }, + "stringParam": { + "value": "hello world" + }, + "objectParam": { + "value": { + "prop1": "value1", + "prop2": "value2" + } + } + } +} \ No newline at end of file diff --git a/packages/bicep-deploy-common/test/files/basic/main.bicep b/packages/bicep-deploy-common/test/files/basic/main.bicep new file mode 100644 index 0000000..27e239f --- /dev/null +++ b/packages/bicep-deploy-common/test/files/basic/main.bicep @@ -0,0 +1,7 @@ +param stringParam string +param intParam int +param objectParam object + +output stringOutput string = stringParam +output intOutput int = intParam +output objectOutput object = objectParam diff --git a/packages/bicep-deploy-common/test/files/basic/main.bicepparam b/packages/bicep-deploy-common/test/files/basic/main.bicepparam new file mode 100644 index 0000000..b4354db --- /dev/null +++ b/packages/bicep-deploy-common/test/files/basic/main.bicepparam @@ -0,0 +1,8 @@ +using 'main.bicep' + +param intParam = 42 +param stringParam = 'hello world' +param objectParam = { + prop1: 'value1' + prop2: 'value2' +} diff --git a/packages/bicep-deploy-common/test/files/basic/main.json b/packages/bicep-deploy-common/test/files/basic/main.json new file mode 100644 index 0000000..e5b200d --- /dev/null +++ b/packages/bicep-deploy-common/test/files/basic/main.json @@ -0,0 +1,37 @@ +{ + "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", + "contentVersion": "1.0.0.0", + "metadata": { + "_generator": { + "name": "bicep", + "version": "0.30.3.12046", + "templateHash": "12629837844740609201" + } + }, + "parameters": { + "stringParam": { + "type": "string" + }, + "intParam": { + "type": "int" + }, + "objectParam": { + "type": "object" + } + }, + "resources": [], + "outputs": { + "stringOutput": { + "type": "string", + "value": "[parameters('stringParam')]" + }, + "intOutput": { + "type": "int", + "value": "[parameters('intParam')]" + }, + "objectOutput": { + "type": "object", + "value": "[parameters('objectParam')]" + } + } +} \ No newline at end of file diff --git a/packages/bicep-deploy-common/test/files/basic/main.parameters.json b/packages/bicep-deploy-common/test/files/basic/main.parameters.json new file mode 100644 index 0000000..cc34c12 --- /dev/null +++ b/packages/bicep-deploy-common/test/files/basic/main.parameters.json @@ -0,0 +1,18 @@ +{ + "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentParameters.json#", + "contentVersion": "1.0.0.0", + "parameters": { + "intParam": { + "value": 42 + }, + "stringParam": { + "value": "hello world" + }, + "objectParam": { + "value": { + "prop1": "value1", + "prop2": "value2" + } + } + } +} \ No newline at end of file diff --git a/packages/bicep-deploy-common/test/files/deployerror/main.bicep b/packages/bicep-deploy-common/test/files/deployerror/main.bicep new file mode 100644 index 0000000..a362279 --- /dev/null +++ b/packages/bicep-deploy-common/test/files/deployerror/main.bicep @@ -0,0 +1,8 @@ +param input string + +// This will fail at deploy time, because the resource doesn't exist +resource sa 'Microsoft.Storage/storageAccounts@2019-06-01' existing = { + name: input +} + +output accessTier string = sa.properties.accessTier diff --git a/packages/bicep-deploy-common/test/files/deployerror/main.bicepparam b/packages/bicep-deploy-common/test/files/deployerror/main.bicepparam new file mode 100644 index 0000000..c5ce7da --- /dev/null +++ b/packages/bicep-deploy-common/test/files/deployerror/main.bicepparam @@ -0,0 +1,3 @@ +using 'main.bicep' + +param input = 'foo' diff --git a/packages/bicep-deploy-common/test/files/validationerror/main.bicep b/packages/bicep-deploy-common/test/files/validationerror/main.bicep new file mode 100644 index 0000000..7b97a65 --- /dev/null +++ b/packages/bicep-deploy-common/test/files/validationerror/main.bicep @@ -0,0 +1,10 @@ +param input string + +resource sa 'Microsoft.Storage/storageAccounts@2019-06-01' = { + name: input + location: resourceGroup().location + kind: 'StorageV2' + sku: { + name: 'Standard_LRS' + } +} diff --git a/packages/bicep-deploy-common/test/files/validationerror/main.bicepparam b/packages/bicep-deploy-common/test/files/validationerror/main.bicepparam new file mode 100644 index 0000000..c5ce7da --- /dev/null +++ b/packages/bicep-deploy-common/test/files/validationerror/main.bicepparam @@ -0,0 +1,3 @@ +using 'main.bicep' + +param input = 'foo' diff --git a/test/handler.test.ts b/packages/bicep-deploy-common/test/handler.test.ts similarity index 74% rename from test/handler.test.ts rename to packages/bicep-deploy-common/test/handler.test.ts index 5645d63..a3fbb08 100644 --- a/test/handler.test.ts +++ b/packages/bicep-deploy-common/test/handler.test.ts @@ -1,22 +1,23 @@ // Copyright (c) Microsoft Corporation. // Licensed under the MIT License. -import { mockActionsCore } from "./mocks/actionCoreMocks"; +import { mockOutputSetter } from "./mocks/outputMocks"; import { + azureMock, mockDeploymentsOps, mockStacksOps, - azureMock, } from "./mocks/azureMocks"; import { RestError } from "@azure/core-rest-pipeline"; + import { DeploymentsConfig, DeploymentStackConfig, ResourceGroupScope, - ScopeType, SubscriptionScope, } from "../src/config"; +import { ParsedFiles } from "../src/file"; +import { TestLogger } from "./logging"; +import { execute } from "../src/handler"; import { readTestFile } from "./utils"; -import { execute, validateFileScope } from "../src/handler"; -import { ParsedFiles } from "../src/helpers/file"; import { Deployment, DeploymentExtended, @@ -27,10 +28,11 @@ import { DeploymentStack, DeploymentStackProperties, } from "@azure/arm-resourcesdeploymentstacks"; -import { Color, colorize } from "../src/helpers/logging"; + +const outputSetter = new mockOutputSetter(); describe("deployment execution", () => { - afterEach(() => jest.clearAllMocks()); + afterEach(() => vi.clearAllMocks()); describe("subscription scope", () => { const scope: SubscriptionScope = { @@ -59,6 +61,8 @@ describe("deployment execution", () => { ), }; + const logger = new TestLogger(); + const expectedProperties: DeploymentProperties = { mode: "Incremental", template: files.templateContents, @@ -88,21 +92,19 @@ describe("deployment execution", () => { mockReturnPayload, ); - await execute(config, files); + await execute(config, files, logger, outputSetter); expect(azureMock.createDeploymentClient).toHaveBeenCalledWith( config, + logger, scope.subscriptionId, undefined, ); expect( mockDeploymentsOps.beginCreateOrUpdateAtSubscriptionScopeAndWait, ).toHaveBeenCalledWith(config.name, expectedPayload, expect.anything()); - expect(mockActionsCore.setOutput).toHaveBeenCalledWith( - "mockOutput", - "foo", - ); - expect(mockActionsCore.setSecret).not.toHaveBeenCalled(); + expect(outputSetter.setOutput).toHaveBeenCalledWith("mockOutput", "foo"); + expect(outputSetter.setSecret).not.toHaveBeenCalled(); }); it("masks secure values", async () => { @@ -110,16 +112,27 @@ describe("deployment execution", () => { mockReturnPayload, ); - await execute({ ...config, maskedOutputs: ["mockOutput"] }, files); + await execute( + { ...config, maskedOutputs: ["mockOutput"] }, + files, + logger, + outputSetter, + ); - expect(mockActionsCore.setSecret).toHaveBeenCalledWith("foo"); + expect(outputSetter.setSecret).toHaveBeenCalledWith("foo"); }); it("validates", async () => { - await execute({ ...config, operation: "validate" }, files); + await execute( + { ...config, operation: "validate" }, + files, + logger, + outputSetter, + ); expect(azureMock.createDeploymentClient).toHaveBeenCalledWith( { ...config, operation: "validate" }, + logger, scope.subscriptionId, undefined, ); @@ -133,10 +146,16 @@ describe("deployment execution", () => { {}, ); - await execute({ ...config, operation: "whatIf" }, files); + await execute( + { ...config, operation: "whatIf" }, + files, + logger, + outputSetter, + ); expect(azureMock.createDeploymentClient).toHaveBeenCalledWith( { ...config, operation: "whatIf" }, + logger, scope.subscriptionId, undefined, ); @@ -173,6 +192,8 @@ describe("deployment execution", () => { ), }; + const logger = new TestLogger(); + const expectedProperties: DeploymentProperties = { mode: "Incremental", template: files.templateContents, @@ -220,10 +241,11 @@ describe("deployment execution", () => { mockReturnPayload, ); - await execute(config, files); + await execute(config, files, logger, outputSetter); expect(azureMock.createDeploymentClient).toHaveBeenCalledWith( config, + logger, scope.subscriptionId, undefined, ); @@ -235,11 +257,8 @@ describe("deployment execution", () => { expectedPayload, expect.anything(), ); - expect(mockActionsCore.setOutput).toHaveBeenCalledWith( - "mockOutput", - "foo", - ); - expect(mockActionsCore.setSecret).not.toHaveBeenCalled(); + expect(outputSetter.setOutput).toHaveBeenCalledWith("mockOutput", "foo"); + expect(outputSetter.setSecret).not.toHaveBeenCalled(); }); it("masks secure values", async () => { @@ -247,9 +266,14 @@ describe("deployment execution", () => { mockReturnPayload, ); - await execute({ ...config, maskedOutputs: ["mockOutput"] }, files); + await execute( + { ...config, maskedOutputs: ["mockOutput"] }, + files, + logger, + outputSetter, + ); - expect(mockActionsCore.setSecret).toHaveBeenCalledWith("foo"); + expect(outputSetter.setSecret).toHaveBeenCalledWith("foo"); }); it("handles deploy errors", async () => { @@ -257,10 +281,18 @@ describe("deployment execution", () => { getMockRestError(mockError), ); - await execute({ ...config, operation: "create" }, files); + const spyLogError = vi.spyOn(logger, "logError"); + + await execute( + { ...config, operation: "create" }, + files, + logger, + outputSetter, + ); expect(azureMock.createDeploymentClient).toHaveBeenCalledWith( { ...config, operation: "create" }, + logger, scope.subscriptionId, undefined, ); @@ -273,16 +305,28 @@ describe("deployment execution", () => { expect.anything(), ); - expect(mockActionsCore.error).toHaveBeenCalledWith( - colorize(JSON.stringify(mockError, null, 2), Color.Red), + expect(spyLogError).toHaveBeenNthCalledWith( + 1, + expect.stringContaining("Request failed. CorrelationId: "), + ); + + expect(spyLogError).toHaveBeenNthCalledWith( + 2, + JSON.stringify(mockError, null, 2), ); }); it("validates", async () => { - await execute({ ...config, operation: "validate" }, files); + await execute( + { ...config, operation: "validate" }, + files, + logger, + outputSetter, + ); expect(azureMock.createDeploymentClient).toHaveBeenCalledWith( { ...config, operation: "validate" }, + logger, scope.subscriptionId, undefined, ); @@ -298,10 +342,18 @@ describe("deployment execution", () => { getMockRestError(mockError), ); - await execute({ ...config, operation: "validate" }, files); + const spyLogError = vi.spyOn(logger, "logError"); + + await execute( + { ...config, operation: "validate" }, + files, + logger, + outputSetter, + ); expect(azureMock.createDeploymentClient).toHaveBeenCalledWith( { ...config, operation: "validate" }, + logger, scope.subscriptionId, undefined, ); @@ -311,18 +363,30 @@ describe("deployment execution", () => { expectedPayload, ); - expect(mockActionsCore.error).toHaveBeenCalledWith( - colorize(JSON.stringify(mockError, null, 2), Color.Red), + expect(spyLogError).toHaveBeenNthCalledWith( + 1, + expect.stringContaining("Request failed. CorrelationId: "), + ); + + expect(spyLogError).toHaveBeenNthCalledWith( + 2, + JSON.stringify(mockError, null, 2), ); }); it("what-ifs", async () => { mockDeploymentsOps.beginWhatIfAndWait!.mockResolvedValue({}); - await execute({ ...config, operation: "whatIf" }, files); + await execute( + { ...config, operation: "whatIf" }, + files, + logger, + outputSetter, + ); expect(azureMock.createDeploymentClient).toHaveBeenCalledWith( { ...config, operation: "whatIf" }, + logger, scope.subscriptionId, undefined, ); @@ -336,7 +400,7 @@ describe("deployment execution", () => { }); describe("stack execution", () => { - afterEach(() => jest.clearAllMocks()); + afterEach(() => vi.clearAllMocks()); describe("subscription scope", () => { const scope: SubscriptionScope = { @@ -371,6 +435,8 @@ describe("stack execution", () => { ), }; + const logger = new TestLogger(); + const expectedProperties: DeploymentStackProperties = { actionOnUnmanage: config.actionOnUnManage, bypassStackOutOfSyncError: config.bypassStackOutOfSyncError, @@ -399,21 +465,19 @@ describe("stack execution", () => { mockReturnPayload, ); - await execute(config, files); + await execute(config, files, logger, outputSetter); expect(azureMock.createStacksClient).toHaveBeenCalledWith( config, + logger, scope.subscriptionId, undefined, ); expect( mockStacksOps.beginCreateOrUpdateAtSubscriptionAndWait, ).toHaveBeenCalledWith(config.name, expectedPayload, expect.anything()); - expect(mockActionsCore.setOutput).toHaveBeenCalledWith( - "mockOutput", - "foo", - ); - expect(mockActionsCore.setSecret).not.toHaveBeenCalled(); + expect(outputSetter.setOutput).toHaveBeenCalledWith("mockOutput", "foo"); + expect(outputSetter.setSecret).not.toHaveBeenCalled(); }); it("masks secure values", async () => { @@ -421,16 +485,27 @@ describe("stack execution", () => { mockReturnPayload, ); - await execute({ ...config, maskedOutputs: ["mockOutput"] }, files); + await execute( + { ...config, maskedOutputs: ["mockOutput"] }, + files, + logger, + outputSetter, + ); - expect(mockActionsCore.setSecret).toHaveBeenCalledWith("foo"); + expect(outputSetter.setSecret).toHaveBeenCalledWith("foo"); }); it("validates", async () => { - await execute({ ...config, operation: "validate" }, files); + await execute( + { ...config, operation: "validate" }, + files, + logger, + outputSetter, + ); expect(azureMock.createStacksClient).toHaveBeenCalledWith( { ...config, operation: "validate" }, + logger, scope.subscriptionId, undefined, ); @@ -440,10 +515,16 @@ describe("stack execution", () => { }); it("deletes", async () => { - await execute({ ...config, operation: "delete" }, files); + await execute( + { ...config, operation: "delete" }, + files, + logger, + outputSetter, + ); expect(azureMock.createStacksClient).toHaveBeenCalledWith( { ...config, operation: "delete" }, + logger, scope.subscriptionId, undefined, ); @@ -489,6 +570,8 @@ describe("stack execution", () => { ), }; + const logger = new TestLogger(); + const expectedProperties: DeploymentStackProperties = { actionOnUnmanage: config.actionOnUnManage, bypassStackOutOfSyncError: config.bypassStackOutOfSyncError, @@ -516,10 +599,11 @@ describe("stack execution", () => { mockReturnPayload, ); - await execute(config, files); + await execute(config, files, logger, outputSetter); expect(azureMock.createStacksClient).toHaveBeenCalledWith( config, + logger, scope.subscriptionId, undefined, ); @@ -531,11 +615,8 @@ describe("stack execution", () => { expectedPayload, expect.anything(), ); - expect(mockActionsCore.setOutput).toHaveBeenCalledWith( - "mockOutput", - "foo", - ); - expect(mockActionsCore.setSecret).not.toHaveBeenCalled(); + expect(outputSetter.setOutput).toHaveBeenCalledWith("mockOutput", "foo"); + expect(outputSetter.setSecret).not.toHaveBeenCalled(); }); it("masks secure values", async () => { @@ -543,16 +624,27 @@ describe("stack execution", () => { mockReturnPayload, ); - await execute({ ...config, maskedOutputs: ["mockOutput"] }, files); + await execute( + { ...config, maskedOutputs: ["mockOutput"] }, + files, + logger, + outputSetter, + ); - expect(mockActionsCore.setSecret).toHaveBeenCalledWith("foo"); + expect(outputSetter.setSecret).toHaveBeenCalledWith("foo"); }); it("validates", async () => { - await execute({ ...config, operation: "validate" }, files); + await execute( + { ...config, operation: "validate" }, + files, + logger, + outputSetter, + ); expect(azureMock.createStacksClient).toHaveBeenCalledWith( { ...config, operation: "validate" }, + logger, scope.subscriptionId, undefined, ); @@ -562,10 +654,16 @@ describe("stack execution", () => { }); it("deletes", async () => { - await execute({ ...config, operation: "delete" }, files); + await execute( + { ...config, operation: "delete" }, + files, + logger, + outputSetter, + ); expect(azureMock.createStacksClient).toHaveBeenCalledWith( { ...config, operation: "delete" }, + logger, scope.subscriptionId, undefined, ); @@ -579,74 +677,6 @@ describe("stack execution", () => { }); }); -describe("validateFileScope", () => { - it("should ignore empty template", () => { - expect(() => - // eslint-disable-next-line @typescript-eslint/no-explicit-any - validateFileScope({ scope: { type: "subscription" } } as any, { - templateContents: {}, - }), - ).not.toThrow(); - }); - - it("should ignore non-Bicep templates", () => { - expect(() => - // eslint-disable-next-line @typescript-eslint/no-explicit-any - validateFileScope({ scope: { type: "subscription" } } as any, { - templateContents: { - $schema: - "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - }, - }), - ).not.toThrow(); - }); - - it("should validate Bicep templates", () => { - expect(() => - // eslint-disable-next-line @typescript-eslint/no-explicit-any - validateFileScope({ scope: { type: "subscription" } } as any, { - templateContents: { - $schema: - "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - metadata: { _generator: { name: "bicep" } }, - }, - }), - ).toThrow( - "The target scope resourceGroup does not match the deployment scope subscription.", - ); - }); - - const schemaLookup: Record = { - tenant: - "https://schema.management.azure.com/schemas/2019-08-01/tenantDeploymentTemplate.json#", - managementGroup: - "https://schema.management.azure.com/schemas/2019-08-01/managementGroupDeploymentTemplate.json#", - subscription: - "https://schema.management.azure.com/schemas/2018-05-01/subscriptionDeploymentTemplate.json#", - resourceGroup: - "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - }; - - const scopes: ScopeType[] = [ - "tenant", - "managementGroup", - "subscription", - "resourceGroup", - ]; - - it.each(scopes)("should validate %s scope", scope => { - expect(() => - // eslint-disable-next-line @typescript-eslint/no-explicit-any - validateFileScope({ scope: { type: scope } } as any, { - templateContents: { - $schema: schemaLookup[scope as ScopeType], - metadata: { _generator: { name: "bicep" } }, - }, - }), - ).not.toThrow(); - }); -}); - function getMockRestError(errorResponse: ErrorResponse) { const restError = new RestError("foo error"); restError.details = { error: errorResponse }; diff --git a/packages/bicep-deploy-common/test/input.test.ts b/packages/bicep-deploy-common/test/input.test.ts new file mode 100644 index 0000000..501f9a4 --- /dev/null +++ b/packages/bicep-deploy-common/test/input.test.ts @@ -0,0 +1,277 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. +import { + getOptionalStringInput, + getRequiredStringInput, + getOptionalStringArrayInput, + getOptionalEnumArrayInput, + getOptionalBooleanInput, + getOptionalDictionaryInput, + getOptionalStringDictionaryInput, +} from "../src/input"; +import { mockInputReader, configureGetInputMock } from "./mocks/inputMocks"; + +const inputReader = new mockInputReader(); + +describe("getRequiredStringInput", () => { + it("throws for missing required input", async () => { + configureGetInputMock({}, inputReader); + + expect(() => getRequiredStringInput("type", inputReader)).toThrow( + "Action input 'type' is required but not provided", + ); + }); + + it("accepts input", async () => { + configureGetInputMock({ type: "foo" }, inputReader); + + expect(getRequiredStringInput("type", inputReader)).toBe("foo"); + }); + + it("trims input", async () => { + configureGetInputMock({ type: " foo " }, inputReader); + + expect(getRequiredStringInput("type", inputReader)).toBe("foo"); + }); +}); + +describe("getOptionalStringInput", () => { + it("returns empty for missing input", async () => { + configureGetInputMock({}, inputReader); + + expect(getOptionalStringInput("type", inputReader)).toBeUndefined(); + }); + + it("accepts input", async () => { + configureGetInputMock({ type: "foo" }, inputReader); + + expect(getOptionalStringInput("type", inputReader)).toBe("foo"); + }); + + it("trims input", async () => { + configureGetInputMock({ type: " foo " }, inputReader); + + expect(getOptionalStringInput("type", inputReader)).toBe("foo"); + }); +}); + +describe("getOptionalStringArrayInput", () => { + it("returns undefined for missing input", async () => { + configureGetInputMock({}, inputReader); + + expect(getOptionalStringArrayInput("type", inputReader)).toStrictEqual( + undefined, + ); + }); + + it("accepts a single input", async () => { + configureGetInputMock({ type: "foo" }, inputReader); + + expect(getOptionalStringArrayInput("type", inputReader)).toStrictEqual([ + "foo", + ]); + }); + + it("accepts comma-separated input", async () => { + configureGetInputMock({ type: "foo,bar,baz,foo" }, inputReader); + + expect(getOptionalStringArrayInput("type", inputReader)).toStrictEqual([ + "foo", + "bar", + "baz", + "foo", + ]); + }); + + it("trims input", async () => { + configureGetInputMock( + { type: " foo , bar , baz,foo" }, + inputReader, + ); + + expect(getOptionalStringArrayInput("type", inputReader)).toStrictEqual([ + "foo", + "bar", + "baz", + "foo", + ]); + }); +}); + +describe("getOptionalEnumArrayInput", () => { + it("returns undefined for missing input", async () => { + configureGetInputMock({}, inputReader); + + expect( + getOptionalEnumArrayInput("type", ["foo", "bar"], inputReader), + ).toStrictEqual(undefined); + }); + + it("accepts a single input", async () => { + configureGetInputMock({ type: "foo" }, inputReader); + + expect( + getOptionalEnumArrayInput("type", ["foo", "bar", "baz"], inputReader), + ).toStrictEqual(["foo"]); + }); + + it("accepts comma-separated input", async () => { + configureGetInputMock({ type: "foo,bar,baz,foo" }, inputReader); + + expect( + getOptionalEnumArrayInput("type", ["foo", "bar", "baz"], inputReader), + ).toStrictEqual(["foo", "bar", "baz", "foo"]); + }); + + it("trims input", async () => { + configureGetInputMock( + { type: " foo , bar , baz,foo" }, + inputReader, + ); + + expect( + getOptionalEnumArrayInput("type", ["foo", "bar", "baz"], inputReader), + ).toStrictEqual(["foo", "bar", "baz", "foo"]); + }); + + it("throws for unexpected enum input", async () => { + configureGetInputMock({ type: "foo,qux,baz" }, inputReader); + + expect(() => + getOptionalEnumArrayInput("type", ["foo", "bar", "baz"], inputReader), + ).toThrow( + "Action input 'type' must be one of the following values: 'foo', 'bar', 'baz'", + ); + }); +}); + +describe("getOptionalBooleanInput", () => { + it("returns false for missing input", async () => { + configureGetInputMock({}, inputReader); + + expect(getOptionalBooleanInput("type", inputReader)).toBe(false); + }); + + it("trims input", async () => { + configureGetInputMock({ type: " true " }, inputReader); + + expect(getOptionalBooleanInput("type", inputReader)).toBe(true); + }); + + it("accepts different casings", async () => { + configureGetInputMock({ type: " TrUe " }, inputReader); + + expect(getOptionalBooleanInput("type", inputReader)).toBe(true); + }); + + it("accepts false", async () => { + configureGetInputMock({ type: " false " }, inputReader); + + expect(getOptionalBooleanInput("type", inputReader)).toBe(false); + }); +}); + +describe("getOptionalDictionaryInput", () => { + it("returns undefined for missing input", async () => { + configureGetInputMock({}, inputReader); + + expect(getOptionalDictionaryInput("type", inputReader)).toStrictEqual( + undefined, + ); + }); + + it("throws for unexpected input", async () => { + configureGetInputMock({ type: "notanobject" }, inputReader); + + expect(() => getOptionalDictionaryInput("type", inputReader)).toThrow( + "Action input 'type' must be a valid JSON or YAML object", + ); + }); + + it("parses and returns json input", async () => { + configureGetInputMock({ type: ' {"abc": "def"} ' }, inputReader); + + expect(getOptionalDictionaryInput("type", inputReader)).toStrictEqual({ + abc: "def", + }); + }); + + it("handles multi-line and complex input", async () => { + configureGetInputMock( + { + type: `{ + "intParam": 42, + "stringParam": "hello world", + "objectParam": { + "prop1": "value1", + "prop2": "value2" + } +}`, + }, + inputReader, + ); + + expect(getOptionalDictionaryInput("type", inputReader)).toStrictEqual({ + intParam: 42, + stringParam: "hello world", + objectParam: { prop1: "value1", prop2: "value2" }, + }); + }); + + it("handles YAML input", async () => { + configureGetInputMock( + { + type: ` +intParam: 42 +stringParam: hello world +objectParam: + prop1: value1 + prop2: value2 +`, + }, + inputReader, + ); + + expect(getOptionalDictionaryInput("type", inputReader)).toStrictEqual({ + intParam: 42, + stringParam: "hello world", + objectParam: { prop1: "value1", prop2: "value2" }, + }); + }); +}); + +describe("getOptionalStringDictionaryInput", () => { + it("returns undefined for missing input", async () => { + configureGetInputMock({}, inputReader); + + expect(getOptionalStringDictionaryInput("type", inputReader)).toStrictEqual( + undefined, + ); + }); + + it("throws for unexpected input", async () => { + configureGetInputMock({ type: "notanobject" }, inputReader); + + expect(() => getOptionalStringDictionaryInput("type", inputReader)).toThrow( + "Action input 'type' must be a valid JSON or YAML object", + ); + }); + + it("parses and returns json input", async () => { + configureGetInputMock({ type: ' {"abc": "def"} ' }, inputReader); + + expect(getOptionalStringDictionaryInput("type", inputReader)).toStrictEqual( + { + abc: "def", + }, + ); + }); + + it("only accepts string values", async () => { + configureGetInputMock({ type: '{ "abc": { "def": "ghi" } }' }, inputReader); + + expect(() => getOptionalStringDictionaryInput("type", inputReader)).toThrow( + "Action input 'type' must be a valid JSON or YAML object containing only string values", + ); + }); +}); diff --git a/packages/bicep-deploy-common/test/logging.ts b/packages/bicep-deploy-common/test/logging.ts new file mode 100644 index 0000000..7e38ca8 --- /dev/null +++ b/packages/bicep-deploy-common/test/logging.ts @@ -0,0 +1,16 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. +import { Color, colorize, Logger } from "../src/logging"; + +const logWarningRaw = (message: string) => console.warn(message); +const logErrorRaw = (message: string) => console.error(message); + +export class TestLogger implements Logger { + isDebugEnabled = () => true; + debug = (message: string) => console.debug(message); + logInfoRaw = (message: string) => console.info(message); + logInfo = (message: string) => this.logInfoRaw(colorize(message, Color.Blue)); + logWarning = (message: string) => + logWarningRaw(colorize(message, Color.Yellow)); + logError = (message: string) => logErrorRaw(colorize(message, Color.Red)); +} diff --git a/packages/bicep-deploy-common/test/mocks/azureMocks.ts b/packages/bicep-deploy-common/test/mocks/azureMocks.ts new file mode 100644 index 0000000..7964dfa --- /dev/null +++ b/packages/bicep-deploy-common/test/mocks/azureMocks.ts @@ -0,0 +1,33 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. +import { Deployments } from "@azure/arm-resources"; +import { DeploymentStacks } from "@azure/arm-resourcesdeploymentstacks"; + +export const mockDeploymentsOps: Partial> = { + beginCreateOrUpdateAtSubscriptionScopeAndWait: vi.fn(), + beginValidateAtSubscriptionScopeAndWait: vi.fn(), + beginWhatIfAtSubscriptionScopeAndWait: vi.fn(), + beginCreateOrUpdateAndWait: vi.fn(), + beginValidateAndWait: vi.fn(), + beginWhatIfAndWait: vi.fn(), +}; + +export const mockStacksOps: Partial> = { + beginCreateOrUpdateAtSubscriptionAndWait: vi.fn(), + beginValidateStackAtSubscriptionAndWait: vi.fn(), + beginDeleteAtSubscriptionAndWait: vi.fn(), + beginCreateOrUpdateAtResourceGroupAndWait: vi.fn(), + beginValidateStackAtResourceGroupAndWait: vi.fn(), + beginDeleteAtResourceGroupAndWait: vi.fn(), +}; + +export const azureMock = { + createDeploymentClient: vi.fn().mockReturnValue({ + deployments: mockDeploymentsOps, + }), + createStacksClient: vi.fn().mockReturnValue({ + deploymentStacks: mockStacksOps, + }), +}; + +vi.mock("../../src/azure", () => azureMock); diff --git a/test/mocks/bicepNodeMocks.ts b/packages/bicep-deploy-common/test/mocks/bicepNodeMocks.ts similarity index 69% rename from test/mocks/bicepNodeMocks.ts rename to packages/bicep-deploy-common/test/mocks/bicepNodeMocks.ts index 6abf0a5..15950f3 100644 --- a/test/mocks/bicepNodeMocks.ts +++ b/packages/bicep-deploy-common/test/mocks/bicepNodeMocks.ts @@ -8,11 +8,11 @@ import { CompileResponse, } from "bicep-node"; -const mockBicep: Partial> = { - compile: jest.fn(), - compileParams: jest.fn(), - version: jest.fn().mockReturnValue("1.2.3"), - dispose: jest.fn(), +const mockBicep: Partial> = { + compile: vi.fn(), + compileParams: vi.fn(), + version: vi.fn().mockReturnValue("1.2.3"), + dispose: vi.fn(), }; export function configureCompileMock( @@ -31,8 +31,8 @@ export function configureCompileParamsMock( const mockBicepNode = { Bicep: { - install: jest.fn().mockResolvedValue(Promise.resolve("/path/to/bicep")), - initialize: jest.fn().mockResolvedValue(mockBicep), + install: vi.fn().mockResolvedValue(Promise.resolve("/path/to/bicep")), + initialize: vi.fn().mockResolvedValue(mockBicep), }, }; @@ -42,4 +42,4 @@ export function configureBicepInstallMock( mockBicepNode.Bicep.install.mockImplementation(mock); } -jest.mock("bicep-node", () => mockBicepNode); +vi.mock("bicep-node", () => mockBicepNode); diff --git a/packages/bicep-deploy-common/test/mocks/fileMocks.ts b/packages/bicep-deploy-common/test/mocks/fileMocks.ts new file mode 100644 index 0000000..6aae2b5 --- /dev/null +++ b/packages/bicep-deploy-common/test/mocks/fileMocks.ts @@ -0,0 +1,8 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. +export const mockFile = { + getTemplateAndParameters: vi.fn(), + resolvePath: vi.fn(), +}; + +vi.mock("../../src/file.ts", () => mockFile); diff --git a/test/mocks/fsMocks.ts b/packages/bicep-deploy-common/test/mocks/fsMocks.ts similarity index 74% rename from test/mocks/fsMocks.ts rename to packages/bicep-deploy-common/test/mocks/fsMocks.ts index b0d8e96..1bb2dc2 100644 --- a/test/mocks/fsMocks.ts +++ b/packages/bicep-deploy-common/test/mocks/fsMocks.ts @@ -1,8 +1,9 @@ // Copyright (c) Microsoft Corporation. // Licensed under the MIT License. + const mockFsPromises = { - readFile: jest.fn(), - mkdtemp: jest.fn(), + readFile: vi.fn(), + mkdtemp: vi.fn(), }; export function configureReadFile(mock: (filePath: string) => string) { @@ -11,4 +12,4 @@ export function configureReadFile(mock: (filePath: string) => string) { ); } -jest.mock("fs/promises", () => mockFsPromises); +vi.mock("fs/promises", () => mockFsPromises); diff --git a/packages/bicep-deploy-common/test/mocks/inputMocks.ts b/packages/bicep-deploy-common/test/mocks/inputMocks.ts new file mode 100644 index 0000000..9aefc98 --- /dev/null +++ b/packages/bicep-deploy-common/test/mocks/inputMocks.ts @@ -0,0 +1,56 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. +import yaml from "yaml"; + +import { InputReader } from "../../src/input"; + +export class mockInputReader implements InputReader { + getInput = vi.fn(); +} + +export function configureGetInputMock( + inputs: Record, + inputReader: mockInputReader, +) { + inputReader.getInput.mockImplementation(inputName => { + return inputs[inputName]; + }); +} + +export function configureGetInputMockWithYaml( + yamlInput: string, + inputReader: mockInputReader, +) { + configureGetInputMock(yaml.parse(yamlInput), inputReader); +} + +export class TestInputParameterNames { + type = "type"; + name = "name"; + location = "location"; + templateFile = "template-file"; + paramtersFile = "parameters-file"; + parameters = "parameters"; + bicepVersion = "bicep-version"; + description = "description"; + tags = "tags"; + maskedOutputs = "masked-outputs"; + environment = "environment"; + operation = "operation"; + whatIfExcludeChangeTypes = "what-if-exclude-change-types"; + validationLevel = "validation-level"; + actionOnUnmanageResources = "action-on-unmanage-resources"; + actionOnUnmanageResourceGroups = "action-on-unmanage-resourcegroups"; + actionOnUnmanageManagementGroups = "action-on-unmanage-managementgroups"; + bypasStackOutOfSyncError = "bypass-stack-out-of-sync-error"; + denySettingsMode = "deny-settings-mode"; + denySettingsExcludedActions = "deny-settings-excluded-actions"; + denySettingsExcludedPrincipals = "deny-settings-excluded-principals"; + denySettingsApplyToChildScopes = "deny-settings-apply-to-child-scopes"; + scope = "scope"; + tenantId = "tenant-id"; + // setting some with different casing + managementGroupId = "managementGroupId"; + subscriptionId = "subscriptionId"; + resourceGroupName = "resourceGroupName"; +} diff --git a/packages/bicep-deploy-common/test/mocks/outputMocks.ts b/packages/bicep-deploy-common/test/mocks/outputMocks.ts new file mode 100644 index 0000000..921274d --- /dev/null +++ b/packages/bicep-deploy-common/test/mocks/outputMocks.ts @@ -0,0 +1,10 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. + +import { OutputSetter } from "../../src/output"; + +export class mockOutputSetter implements OutputSetter { + setOutput = vi.fn(); + setFailed = vi.fn(); + setSecret = vi.fn(); +} diff --git a/packages/bicep-deploy-common/test/utils.test.ts b/packages/bicep-deploy-common/test/utils.test.ts new file mode 100644 index 0000000..e4d7b44 --- /dev/null +++ b/packages/bicep-deploy-common/test/utils.test.ts @@ -0,0 +1,72 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. +import { ScopeType } from "../src/config"; +import { validateFileScope } from "../src/utils"; + +describe("validateFileScope", () => { + it("should ignore empty template", () => { + expect(() => + // eslint-disable-next-line @typescript-eslint/no-explicit-any + validateFileScope({ scope: { type: "subscription" } } as any, { + templateContents: {}, + }), + ).not.toThrow(); + }); + + it("should ignore non-Bicep templates", () => { + expect(() => + // eslint-disable-next-line @typescript-eslint/no-explicit-any + validateFileScope({ scope: { type: "subscription" } } as any, { + templateContents: { + $schema: + "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", + }, + }), + ).not.toThrow(); + }); + + it("should validate Bicep templates", () => { + expect(() => + // eslint-disable-next-line @typescript-eslint/no-explicit-any + validateFileScope({ scope: { type: "subscription" } } as any, { + templateContents: { + $schema: + "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", + metadata: { _generator: { name: "bicep" } }, + }, + }), + ).toThrow( + "The target scope resourceGroup does not match the deployment scope subscription.", + ); + }); + + const schemaLookup: Record = { + tenant: + "https://schema.management.azure.com/schemas/2019-08-01/tenantDeploymentTemplate.json#", + managementGroup: + "https://schema.management.azure.com/schemas/2019-08-01/managementGroupDeploymentTemplate.json#", + subscription: + "https://schema.management.azure.com/schemas/2018-05-01/subscriptionDeploymentTemplate.json#", + resourceGroup: + "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", + }; + + const scopes: ScopeType[] = [ + "tenant", + "managementGroup", + "subscription", + "resourceGroup", + ]; + + it.each(scopes)("should validate %s scope", scope => { + expect(() => + // eslint-disable-next-line @typescript-eslint/no-explicit-any + validateFileScope({ scope: { type: scope } } as any, { + templateContents: { + $schema: schemaLookup[scope as ScopeType], + metadata: { _generator: { name: "bicep" } }, + }, + }), + ).not.toThrow(); + }); +}); diff --git a/test/utils.ts b/packages/bicep-deploy-common/test/utils.ts similarity index 100% rename from test/utils.ts rename to packages/bicep-deploy-common/test/utils.ts diff --git a/test/whatif.test.ts b/packages/bicep-deploy-common/test/whatif.test.ts similarity index 99% rename from test/whatif.test.ts rename to packages/bicep-deploy-common/test/whatif.test.ts index 1842ae9..d8b1476 100644 --- a/test/whatif.test.ts +++ b/packages/bicep-deploy-common/test/whatif.test.ts @@ -1,6 +1,6 @@ // Copyright (c) Microsoft Corporation. // Licensed under the MIT License. -import { formatJson, formatWhatIfOperationResult } from "../src/helpers/whatif"; +import { formatJson, formatWhatIfOperationResult } from "../src/whatif"; import { WhatIfChange } from "@azure/arm-resources"; describe("formatJson tests", () => { diff --git a/packages/bicep-deploy-common/tsconfig.json b/packages/bicep-deploy-common/tsconfig.json new file mode 100644 index 0000000..6a0d974 --- /dev/null +++ b/packages/bicep-deploy-common/tsconfig.json @@ -0,0 +1,17 @@ +{ + "$schema": "https://json.schemastore.org/tsconfig", + "compilerOptions": { + "target": "es2021", + "moduleDetection": "force", + "module": "commonjs", + "moduleResolution": "node10", + "resolveJsonModule": true, + "sourceMap": true, + "strict": true, + "esModuleInterop": true, + "forceConsistentCasingInFileNames": true, + "noUnusedLocals": true, + "types": ["vitest/globals"], + }, + "include": ["src", "test"] +} \ No newline at end of file diff --git a/packages/bicep-deploy-common/tsdown.config.mts b/packages/bicep-deploy-common/tsdown.config.mts new file mode 100644 index 0000000..5bf1caa --- /dev/null +++ b/packages/bicep-deploy-common/tsdown.config.mts @@ -0,0 +1,14 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. +import { defineConfig } from 'tsdown' + +export default defineConfig({ + entry: 'src/index.ts', + minify: true, + sourcemap: true, + outDir: 'dist', + platform: 'node', + target: 'es2021', + format: ['cjs', 'esm'], + dts: true, +}) \ No newline at end of file diff --git a/src/actionIO.ts b/src/actionIO.ts new file mode 100644 index 0000000..2bd5fa1 --- /dev/null +++ b/src/actionIO.ts @@ -0,0 +1,50 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. +import * as core from "@actions/core"; + +import { + InputReader, + OutputSetter, + InputParameterNames, +} from "@azure/bicep-deploy-common"; + +export class ActionInputReader implements InputReader { + getInput = (inputName: string) => core.getInput(inputName); +} + +export class ActionOutputSetter implements OutputSetter { + // eslint-disable-next-line @typescript-eslint/no-explicit-any + setOutput = (name: string, value: any) => core.setOutput(name, value); + setFailed = (message: string) => core.setFailed(message); + setSecret = (secret: string) => core.setSecret(secret); +} + +export class ActionInputParameterNames implements InputParameterNames { + type = "type"; + name = "name"; + location = "location"; + templateFile = "template-file"; + paramtersFile = "parameters-file"; + parameters = "parameters"; + bicepVersion = "bicep-version"; + description = "description"; + tags = "tags"; + maskedOutputs = "masked-outputs"; + environment = "environment"; + operation = "operation"; + whatIfExcludeChangeTypes = "what-if-exclude-change-types"; + validationLevel = "validation-level"; + actionOnUnmanageResources = "action-on-unmanage-resources"; + actionOnUnmanageResourceGroups = "action-on-unmanage-resourcegroups"; + actionOnUnmanageManagementGroups = "action-on-unmanage-managementgroups"; + bypasStackOutOfSyncError = "bypass-stack-out-of-sync-error"; + denySettingsMode = "deny-settings-mode"; + denySettingsExcludedActions = "deny-settings-excluded-actions"; + denySettingsExcludedPrincipals = "deny-settings-excluded-principals"; + denySettingsApplyToChildScopes = "deny-settings-apply-to-child-scopes"; + scope = "scope"; + tenantId = "tenant-id"; + managementGroupId = "management-group-id"; + subscriptionId = "subscription-id"; + resourceGroupName = "resource-group-name"; +} diff --git a/src/config.ts b/src/config.ts deleted file mode 100644 index 2dec1c8..0000000 --- a/src/config.ts +++ /dev/null @@ -1,315 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -import { - getRequiredEnumInput, - getOptionalStringInput, - getOptionalStringDictionaryInput, - getOptionalFilePath, - getOptionalBooleanInput, - getOptionalEnumInput, - getOptionalStringArrayInput, - getRequiredStringInput, - getOptionalEnumArrayInput, - getOptionalDictionaryInput, -} from "./helpers/input"; - -export type ScopeType = - | "tenant" - | "managementGroup" - | "subscription" - | "resourceGroup"; - -type CommonScope = { - type: ScopeType; - tenantId?: string; -}; - -export type TenantScope = CommonScope & { - type: "tenant"; -}; - -export type ManagementGroupScope = CommonScope & { - type: "managementGroup"; - managementGroup: string; -}; - -export type SubscriptionScope = CommonScope & { - type: "subscription"; - subscriptionId: string; -}; - -export type ResourceGroupScope = CommonScope & { - type: "resourceGroup"; - subscriptionId: string; - resourceGroup: string; -}; - -export type FileConfig = { - templateFile?: string; - parametersFile?: string; - parameters?: Record; - bicepVersion?: string; -}; - -type CommonConfig = { - type: "deployment" | "deploymentStack"; - name?: string; - location?: string; - tags?: Record; - maskedOutputs?: string[]; - environment: - | "azureCloud" - | "azureChinaCloud" - | "azureGermanCloud" - | "azureUSGovernment"; -} & FileConfig; - -type WhatIfChangeType = - | "create" - | "delete" - | "modify" - | "deploy" - | "noChange" - | "ignore" - | "unsupported"; - -export type DeploymentsConfig = CommonConfig & { - type: "deployment"; - operation: "create" | "validate" | "whatIf"; - scope: - | TenantScope - | ManagementGroupScope - | SubscriptionScope - | ResourceGroupScope; - whatIf: { - excludeChangeTypes?: WhatIfChangeType[]; - }; - validationLevel?: "provider" | "template" | "providerNoRbac"; -}; - -export type DeploymentStackConfig = CommonConfig & { - type: "deploymentStack"; - operation: "create" | "delete" | "validate"; - scope: ManagementGroupScope | SubscriptionScope | ResourceGroupScope; - description?: string; - actionOnUnManage: { - resources: "delete" | "detach"; - managementGroups?: "delete" | "detach"; - resourceGroups?: "delete" | "detach"; - }; - denySettings: { - mode: "denyDelete" | "denyWriteAndDelete" | "none"; - excludedActions?: string[]; - excludedPrincipals?: string[]; - applyToChildScopes?: boolean; - }; - bypassStackOutOfSyncError: boolean; -}; - -export type ActionConfig = DeploymentsConfig | DeploymentStackConfig; - -export function parseConfig(): DeploymentsConfig | DeploymentStackConfig { - const type = getRequiredEnumInput("type", ["deployment", "deploymentStack"]); - const name = getOptionalStringInput("name"); - const location = getOptionalStringInput("location"); - const templateFile = getOptionalFilePath("template-file"); - const parametersFile = getOptionalFilePath("parameters-file"); - const parameters = getOptionalDictionaryInput("parameters"); - const bicepVersion = getOptionalStringInput("bicep-version"); - const description = getOptionalStringInput("description"); - const tags = getOptionalStringDictionaryInput("tags"); - const maskedOutputs = getOptionalStringArrayInput("masked-outputs"); - const environment = - getOptionalEnumInput("environment", [ - "azureCloud", - "azureChinaCloud", - "azureGermanCloud", - "azureUSGovernment", - ]) ?? "azureCloud"; - - switch (type) { - case "deployment": { - return { - type, - name, - location, - templateFile, - parametersFile, - parameters, - bicepVersion, - tags, - maskedOutputs, - environment: environment, - operation: getRequiredEnumInput("operation", [ - "create", - "validate", - "whatIf", - ]), - scope: parseDeploymentScope(), - whatIf: { - excludeChangeTypes: getOptionalEnumArrayInput( - "what-if-exclude-change-types", - [ - "create", - "delete", - "modify", - "deploy", - "noChange", - "ignore", - "unsupported", - ], - ), - }, - validationLevel: getOptionalEnumInput("validation-level", [ - "provider", - "template", - "providerNoRbac", - ]), - }; - } - case "deploymentStack": { - return { - type, - name, - location, - templateFile, - parametersFile, - parameters, - bicepVersion, - description, - tags, - maskedOutputs, - environment: environment, - operation: getRequiredEnumInput("operation", [ - "create", - "validate", - "delete", - ]), - scope: parseDeploymentStackScope(), - actionOnUnManage: { - resources: getRequiredEnumInput("action-on-unmanage-resources", [ - "delete", - "detach", - ]), - resourceGroups: getOptionalEnumInput( - "action-on-unmanage-resourcegroups", - ["delete", "detach"], - ), - managementGroups: getOptionalEnumInput( - "action-on-unmanage-managementgroups", - ["delete", "detach"], - ), - }, - bypassStackOutOfSyncError: getOptionalBooleanInput( - "bypass-stack-out-of-sync-error", - ), - denySettings: { - mode: getRequiredEnumInput("deny-settings-mode", [ - "denyDelete", - "denyWriteAndDelete", - "none", - ]), - excludedActions: getOptionalStringArrayInput( - "deny-settings-excluded-actions", - ), - excludedPrincipals: getOptionalStringArrayInput( - "deny-settings-excluded-principals", - ), - applyToChildScopes: getOptionalBooleanInput( - "deny-settings-apply-to-child-scopes", - ), - }, - }; - } - } -} - -function parseDeploymentScope(): - | TenantScope - | ManagementGroupScope - | SubscriptionScope - | ResourceGroupScope { - const type = getRequiredEnumInput("scope", [ - "tenant", - "managementGroup", - "subscription", - "resourceGroup", - ]); - const tenantId = getOptionalStringInput("tenant-id"); - - switch (type) { - case "tenant": { - return { - type, - tenantId, - }; - } - case "managementGroup": { - const managementGroup = getRequiredStringInput("management-group-id"); - return { - type, - tenantId, - managementGroup, - }; - } - case "subscription": { - const subscriptionId = getRequiredStringInput("subscription-id"); - return { - type, - tenantId, - subscriptionId, - }; - } - case "resourceGroup": { - const subscriptionId = getRequiredStringInput("subscription-id"); - const resourceGroup = getRequiredStringInput("resource-group-name"); - return { - type, - tenantId, - subscriptionId, - resourceGroup, - }; - } - } -} - -function parseDeploymentStackScope(): - | ManagementGroupScope - | SubscriptionScope - | ResourceGroupScope { - const type = getRequiredEnumInput("scope", [ - "managementGroup", - "subscription", - "resourceGroup", - ]); - const tenantId = getOptionalStringInput("tenant-id"); - - switch (type) { - case "managementGroup": { - const managementGroup = getRequiredStringInput("management-group-id"); - return { - type, - tenantId, - managementGroup, - }; - } - case "subscription": { - const subscriptionId = getRequiredStringInput("subscription-id"); - return { - type, - tenantId, - subscriptionId, - }; - } - case "resourceGroup": { - const subscriptionId = getRequiredStringInput("subscription-id"); - const resourceGroup = getRequiredStringInput("resource-group-name"); - return { - type, - tenantId, - subscriptionId, - resourceGroup, - }; - } - } -} diff --git a/src/handler.ts b/src/handler.ts deleted file mode 100644 index e1c0724..0000000 --- a/src/handler.ts +++ /dev/null @@ -1,595 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -import { setOutput, setFailed, setSecret } from "@actions/core"; -import { - CloudError, - Deployment, - DeploymentDiagnosticsDefinition, - ErrorResponse, -} from "@azure/arm-resources"; -import { DeploymentStack } from "@azure/arm-resourcesdeploymentstacks"; -import { PipelineResponse, RestError } from "@azure/core-rest-pipeline"; -import { OperationOptions } from "@azure/core-client"; - -import { - ActionConfig, - DeploymentsConfig, - DeploymentStackConfig, - ManagementGroupScope, - ResourceGroupScope, - ScopeType, - SubscriptionScope, - TenantScope, -} from "./config"; -import { ParsedFiles } from "./helpers/file"; -import { createDeploymentClient, createStacksClient } from "./helpers/azure"; -import { logError, logInfo, logInfoRaw, logWarning } from "./helpers/logging"; -import { formatWhatIfOperationResult } from "./helpers/whatif"; - -const defaultName = "azure-bicep-deploy"; - -// workaround until we're able to pick up https://github.com/Azure/azure-sdk-for-js/pull/25500 -class CustomPollingError { - response: PipelineResponse; - details: CloudError; - constructor(details: CloudError, response: PipelineResponse) { - this.details = details; - this.response = response; - } -} - -// workaround until we're able to pick up https://github.com/Azure/azure-sdk-for-js/pull/25500 -function getCreateOperationOptions(): OperationOptions { - return { - // eslint-disable-next-line @typescript-eslint/no-explicit-any - onResponse: (rawResponse, flatResponse: any) => { - if ( - flatResponse && - flatResponse.error && - flatResponse.error.code && - flatResponse.error.message - ) { - throw new CustomPollingError(flatResponse, rawResponse); - } - }, - }; -} - -function getDeploymentClient( - config: ActionConfig, - scope: - | TenantScope - | ManagementGroupScope - | SubscriptionScope - | ResourceGroupScope, -) { - const { tenantId } = scope; - const subscriptionId = - "subscriptionId" in scope ? scope.subscriptionId : undefined; - - return createDeploymentClient(config, subscriptionId, tenantId); -} - -function getStacksClient( - config: ActionConfig, - scope: - | TenantScope - | ManagementGroupScope - | SubscriptionScope - | ResourceGroupScope, -) { - const { tenantId } = scope; - const subscriptionId = - "subscriptionId" in scope ? scope.subscriptionId : undefined; - - return createStacksClient(config, subscriptionId, tenantId); -} - -export async function execute(config: ActionConfig, files: ParsedFiles) { - try { - validateFileScope(config, files); - switch (config.type) { - case "deployment": { - switch (config.operation) { - case "create": { - await tryWithErrorHandling( - async () => { - const result = await deploymentCreate(config, files); - setCreateOutputs(config, result?.properties?.outputs); - }, - error => { - logError(JSON.stringify(error, null, 2)); - setFailed("Create failed"); - }, - ); - break; - } - case "validate": { - await tryWithErrorHandling( - async () => { - const result = await deploymentValidate(config, files); - logDiagnostics(result?.properties?.diagnostics ?? []); - }, - error => { - logError(JSON.stringify(error, null, 2)); - setFailed("Validation failed"); - }, - ); - break; - } - case "whatIf": { - const result = await deploymentWhatIf(config, files); - const formatted = formatWhatIfOperationResult(result, "ansii"); - logInfoRaw(formatted); - logDiagnostics(result.diagnostics ?? []); - break; - } - } - break; - } - case "deploymentStack": { - switch (config.operation) { - case "create": { - await tryWithErrorHandling( - async () => { - const result = await stackCreate(config, files); - setCreateOutputs(config, result?.properties?.outputs); - }, - error => { - logError(JSON.stringify(error, null, 2)); - setFailed("Create failed"); - }, - ); - break; - } - case "validate": { - await tryWithErrorHandling( - () => stackValidate(config, files), - error => { - logError(JSON.stringify(error, null, 2)); - setFailed("Validation failed"); - }, - ); - break; - } - case "delete": { - await stackDelete(config); - break; - } - } - break; - } - } - } catch (error) { - if (error instanceof RestError && error.response?.bodyAsText) { - const correlationId = error.response.headers.get( - "x-ms-correlation-request-id", - ); - logError(`Request failed. CorrelationId: ${correlationId}`); - - const responseBody = JSON.parse(error.response.bodyAsText); - logError(JSON.stringify(responseBody, null, 2)); - } - - setFailed("Operation failed"); - throw error; - } -} - -function setCreateOutputs( - config: ActionConfig, - outputs?: Record, -) { - if (!outputs) { - return; - } - - for (const key of Object.keys(outputs)) { - const output = outputs[key] as { value: string }; - setOutput(key, output.value); - if ( - config.maskedOutputs && - config.maskedOutputs.some(x => x.toLowerCase() === key.toLowerCase()) - ) { - setSecret(output.value); - } - } -} - -async function deploymentCreate(config: DeploymentsConfig, files: ParsedFiles) { - const name = config.name ?? defaultName; - const scope = config.scope; - const client = getDeploymentClient(config, scope); - const deployment = getDeployment(config, files); - - switch (scope.type) { - case "resourceGroup": - return await client.deployments.beginCreateOrUpdateAndWait( - scope.resourceGroup, - name, - deployment, - getCreateOperationOptions(), - ); - case "subscription": - return await client.deployments.beginCreateOrUpdateAtSubscriptionScopeAndWait( - name, - { - ...deployment, - location: requireLocation(config), - }, - getCreateOperationOptions(), - ); - case "managementGroup": - return await client.deployments.beginCreateOrUpdateAtManagementGroupScopeAndWait( - scope.managementGroup, - name, - { - ...deployment, - location: requireLocation(config), - }, - getCreateOperationOptions(), - ); - case "tenant": - return await client.deployments.beginCreateOrUpdateAtTenantScopeAndWait( - name, - { - ...deployment, - location: requireLocation(config), - }, - getCreateOperationOptions(), - ); - } -} - -async function deploymentValidate( - config: DeploymentsConfig, - files: ParsedFiles, -) { - const name = config.name ?? defaultName; - const scope = config.scope; - const client = getDeploymentClient(config, scope); - const deployment = getDeployment(config, files); - - switch (scope.type) { - case "resourceGroup": - return await client.deployments.beginValidateAndWait( - scope.resourceGroup, - name, - deployment, - ); - case "subscription": - return await client.deployments.beginValidateAtSubscriptionScopeAndWait( - name, - { - ...deployment, - location: requireLocation(config), - }, - ); - case "managementGroup": - return await client.deployments.beginValidateAtManagementGroupScopeAndWait( - scope.managementGroup, - name, - { - ...deployment, - location: requireLocation(config), - }, - ); - case "tenant": - await client.deployments.beginValidateAtTenantScopeAndWait(name, { - ...deployment, - location: requireLocation(config), - }); - } -} - -async function deploymentWhatIf(config: DeploymentsConfig, files: ParsedFiles) { - const deploymentName = config.name ?? defaultName; - const scope = config.scope; - const client = getDeploymentClient(config, scope); - const deployment = getDeployment(config, files); - - switch (scope.type) { - case "resourceGroup": - return await client.deployments.beginWhatIfAndWait( - scope.resourceGroup, - deploymentName, - deployment, - ); - case "subscription": - return await client.deployments.beginWhatIfAtSubscriptionScopeAndWait( - deploymentName, - { - ...deployment, - location: requireLocation(config), - }, - ); - case "managementGroup": - return await client.deployments.beginWhatIfAtManagementGroupScopeAndWait( - scope.managementGroup, - deploymentName, - { - ...deployment, - location: requireLocation(config), - }, - ); - case "tenant": - return await client.deployments.beginWhatIfAtTenantScopeAndWait( - deploymentName, - { - ...deployment, - location: requireLocation(config), - }, - ); - } -} - -function getDeployment( - config: DeploymentsConfig, - files: ParsedFiles, -): Deployment { - const { templateContents, templateSpecId, parametersContents } = files; - - return { - location: config.location, - properties: { - mode: "Incremental", - template: templateContents, - templateLink: templateSpecId - ? { - id: templateSpecId, - } - : undefined, - parameters: parametersContents["parameters"], - expressionEvaluationOptions: { - scope: "inner", - }, - validationLevel: config.validationLevel, - }, - tags: config.tags, - }; -} - -async function stackCreate(config: DeploymentStackConfig, files: ParsedFiles) { - const name = config.name ?? defaultName; - const scope = config.scope; - const client = getStacksClient(config, scope); - const stack = getStack(config, files); - - switch (scope.type) { - case "resourceGroup": - return await client.deploymentStacks.beginCreateOrUpdateAtResourceGroupAndWait( - scope.resourceGroup, - name, - stack, - getCreateOperationOptions(), - ); - case "subscription": - return await client.deploymentStacks.beginCreateOrUpdateAtSubscriptionAndWait( - name, - { - ...stack, - location: requireLocation(config), - }, - getCreateOperationOptions(), - ); - case "managementGroup": - return await client.deploymentStacks.beginCreateOrUpdateAtManagementGroupAndWait( - scope.managementGroup, - name, - { - ...stack, - location: requireLocation(config), - }, - getCreateOperationOptions(), - ); - } -} - -async function stackValidate( - config: DeploymentStackConfig, - files: ParsedFiles, -) { - const name = config.name ?? defaultName; - const scope = config.scope; - const client = getStacksClient(config, scope); - const stack = getStack(config, files); - - switch (scope.type) { - case "resourceGroup": - return await client.deploymentStacks.beginValidateStackAtResourceGroupAndWait( - scope.resourceGroup, - name, - stack, - ); - case "subscription": - return await client.deploymentStacks.beginValidateStackAtSubscriptionAndWait( - name, - { - ...stack, - location: requireLocation(config), - }, - ); - case "managementGroup": - return await client.deploymentStacks.beginValidateStackAtManagementGroupAndWait( - scope.managementGroup, - name, - { - ...stack, - location: requireLocation(config), - }, - ); - } -} - -async function stackDelete(config: DeploymentStackConfig) { - const name = config.name ?? defaultName; - const scope = config.scope; - const client = getStacksClient(config, scope); - const deletionOptions = getStackDeletionOptions(config); - - switch (scope.type) { - case "resourceGroup": - return await client.deploymentStacks.beginDeleteAtResourceGroupAndWait( - scope.resourceGroup, - name, - deletionOptions, - ); - case "subscription": - return await client.deploymentStacks.beginDeleteAtSubscriptionAndWait( - name, - deletionOptions, - ); - case "managementGroup": - return await client.deploymentStacks.beginDeleteAtManagementGroupAndWait( - scope.managementGroup, - name, - deletionOptions, - ); - } -} - -function getStack( - config: DeploymentStackConfig, - files: ParsedFiles, -): DeploymentStack { - const { templateContents, templateSpecId, parametersContents } = files; - - return { - properties: { - template: templateContents, - templateLink: templateSpecId - ? { - id: templateSpecId, - } - : undefined, - parameters: parametersContents["parameters"], - description: config.description, - actionOnUnmanage: config.actionOnUnManage, - denySettings: config.denySettings, - bypassStackOutOfSyncError: config.bypassStackOutOfSyncError, - }, - tags: config.tags, - }; -} - -function getStackDeletionOptions(config: DeploymentStackConfig) { - return { - unmanageActionResources: config.actionOnUnManage.resources, - unmanageActionResourceGroups: config.actionOnUnManage.resourceGroups, - unmanageActionManagementGroups: config.actionOnUnManage.managementGroups, - bypassStackOutOfSyncError: config.bypassStackOutOfSyncError, - }; -} - -function requireLocation(config: ActionConfig) { - // this just exists to make typescript's validation happy. - // it should only be called in places where we've already validated the location is set. - if (!config.location) { - throw new Error("Location is required"); - } - - return config.location; -} - -async function tryWithErrorHandling( - action: () => Promise, - onError: (error: ErrorResponse) => void, -): Promise { - try { - return await action(); - } catch (ex) { - if (ex instanceof RestError) { - const correlationId = ex.response?.headers.get( - "x-ms-correlation-request-id", - ); - logError(`Request failed. CorrelationId: ${correlationId}`); - - const { error } = ex.details as CloudError; - if (error) { - onError(error); - return; - } - } - - if (ex instanceof CustomPollingError) { - const correlationId = ex.response?.headers.get( - "x-ms-correlation-request-id", - ); - logError(`Request failed. CorrelationId: ${correlationId}`); - - const { error } = ex.details; - if (error) { - onError(error); - return; - } - } - - throw ex; - } -} - -export function validateFileScope(config: ActionConfig, files: ParsedFiles) { - const scope = getScope(files); - if (!scope) { - return; - } - - if (scope !== config.scope.type) { - throw new Error( - `The target scope ${scope} does not match the deployment scope ${config.scope.type}.`, - ); - } -} - -function getScope(files: ParsedFiles): ScopeType | undefined { - const template = files.templateContents ?? {}; - const bicepGenerated = template.metadata?._generator?.name; - const schema = template["$schema"]; - - if (!bicepGenerated) { - // loose validation for non-Bicep generated templates, to match Azure CLI behavior - return; - } - - const result = - /https:\/\/schema\.management\.azure\.com\/schemas\/[0-9a-zA-Z-]+\/([a-zA-Z]+)Template\.json#?/.exec( - schema, - ); - const scopeMatch = result ? result[1].toLowerCase() : null; - - switch (scopeMatch) { - case "tenantdeployment": - return "tenant"; - case "managementgroupdeployment": - return "managementGroup"; - case "subscriptiondeployment": - return "subscription"; - case "deployment": - return "resourceGroup"; - default: - throw new Error(`Failed to determine deployment scope from Bicep file.`); - } -} - -function logDiagnostics(diagnostics: DeploymentDiagnosticsDefinition[]) { - if (diagnostics.length === 0) { - return; - } - - logInfo("Diagnostics returned by the API"); - - for (const diagnostic of diagnostics) { - const message = `[${diagnostic.level}] ${diagnostic.code}: ${diagnostic.message}`; - switch (diagnostic.level.toLowerCase()) { - case "error": - logError(message); - break; - case "warning": - logWarning(message); - break; - default: - logInfo(message); - break; - } - } -} diff --git a/src/logging.ts b/src/logging.ts new file mode 100644 index 0000000..9664bb5 --- /dev/null +++ b/src/logging.ts @@ -0,0 +1,18 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. +import * as core from "@actions/core"; + +import { Color, colorize, Logger } from "@azure/bicep-deploy-common"; + +const logWarningRaw = (message: string) => core.warning(message); +const logErrorRaw = (message: string) => core.error(message); + +export class ActionLogger implements Logger { + isDebugEnabled = () => core.isDebug(); + debug = (message: string) => core.debug(message); + logInfoRaw = (message: string) => core.info(message); + logInfo = (message: string) => this.logInfoRaw(colorize(message, Color.Blue)); + logWarning = (message: string) => + logWarningRaw(colorize(message, Color.Yellow)); + logError = (message: string) => logErrorRaw(colorize(message, Color.Red)); +} diff --git a/src/main.ts b/src/main.ts index b1b6293..f9326d1 100644 --- a/src/main.ts +++ b/src/main.ts @@ -2,10 +2,19 @@ // Licensed under the MIT License. import * as core from "@actions/core"; -import { parseConfig } from "./config"; -import { execute } from "./handler"; -import { getTemplateAndParameters } from "./helpers/file"; -import { logInfo } from "./helpers/logging"; +import { + getTemplateAndParameters, + parseConfig, + execute, +} from "@azure/bicep-deploy-common"; + +import { + ActionInputReader, + ActionOutputSetter, + ActionInputParameterNames, +} from "./actionIO"; + +import { ActionLogger } from "./logging"; /** * The main function for the action. @@ -13,12 +22,16 @@ import { logInfo } from "./helpers/logging"; */ export async function run(): Promise { try { - const config = parseConfig(); - logInfo(`Action config: ${JSON.stringify(config, null, 2)}`); + const inputReader = new ActionInputReader(); + const inputParameterNames = new ActionInputParameterNames(); + const config = parseConfig(inputReader, inputParameterNames); + const logger = new ActionLogger(); + const outputSetter = new ActionOutputSetter(); + logger.logInfo(`Action config: ${JSON.stringify(config, null, 2)}`); - const files = await getTemplateAndParameters(config); + const files = await getTemplateAndParameters(config, logger); - await execute(config, files); + await execute(config, files, logger, outputSetter); } catch (error) { // Fail the workflow run if an error occurs const message = error instanceof Error ? error.message : `${error}`; diff --git a/test-live/actionCoreMocks.ts b/test-live/actionCoreMocks.ts new file mode 100644 index 0000000..dafef31 --- /dev/null +++ b/test-live/actionCoreMocks.ts @@ -0,0 +1,62 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. +import * as yaml from "yaml"; +import { removeColors } from "../packages/bicep-deploy-common/src/logging"; + +const mockCore = { + info: vi.fn(), + warning: vi.fn(), + error: vi.fn(), + debug: vi.fn(), + isDebug: vi.fn(), + getInput: vi.fn(), + setFailed: vi.fn(), + setOutput: vi.fn(), +}; + +vi.mock("@actions/core", () => mockCore); + +type ActionResult = { + outputs: Record; + errors: string[]; + failure?: string; +}; + +export function configureMocks(inputYaml: string) { + const yamlInputs = yaml.parse(inputYaml); + const result: ActionResult = { outputs: {}, errors: [] }; + + mockCore.getInput.mockImplementation(inputName => { + const value = yamlInputs[inputName]; + if (value === undefined) { + return ""; + } + + if (typeof value !== "string") { + throw new Error( + `Only string values are supported (parsing ${inputName})`, + ); + } + + return value.trim(); + }); + + mockCore.setOutput.mockImplementation((name, value) => { + result.outputs[name] = value; + }); + + mockCore.setFailed.mockImplementation(message => { + console.error(`setFailed: ${message}`); + console.trace("path to set failed"); + result.failure = message; + }); + + mockCore.info.mockImplementation(message => console.info(message)); + mockCore.warning.mockImplementation(message => console.warn(message)); + mockCore.error.mockImplementation(message => { + result.errors.push(removeColors(message)); + console.error(message); + }); + + return result; +} diff --git a/test-live/deployments.live.test.ts b/test-live/deployments.live.test.ts index e1d2abc..7e548ac 100644 --- a/test-live/deployments.live.test.ts +++ b/test-live/deployments.live.test.ts @@ -2,11 +2,8 @@ // Licensed under the MIT License. import { runAction } from "./setup"; -const TEST_TIMEOUT_IN_SECONDS = 5 * 60; // 5 minutes -jest.setTimeout(TEST_TIMEOUT_IN_SECONDS * 1000); - beforeEach(() => { - jest.clearAllMocks(); + vi.clearAllMocks(); }); describe("deployments live tests", () => { diff --git a/test-live/setup.ts b/test-live/setup.ts index 8add4ae..3301024 100644 --- a/test-live/setup.ts +++ b/test-live/setup.ts @@ -1,67 +1,10 @@ // Copyright (c) Microsoft Corporation. // Licensed under the MIT License. -import * as yaml from "yaml"; import * as process from "process"; -const mockCore = { - info: jest.fn(), - warning: jest.fn(), - error: jest.fn(), - debug: jest.fn(), - isDebug: jest.fn(), - getInput: jest.fn(), - setFailed: jest.fn(), - setOutput: jest.fn(), -}; - -jest.mock("@actions/core", () => mockCore); - -type ActionResult = { - outputs: Record; - errors: string[]; - failure?: string; -}; - -function configureMocks(inputYaml: string) { - const yamlInputs = yaml.parse(inputYaml); - const result: ActionResult = { outputs: {}, errors: [] }; - - mockCore.getInput.mockImplementation(inputName => { - const value = yamlInputs[inputName]; - if (value === undefined) { - return ""; - } - - if (typeof value !== "string") { - throw new Error( - `Only string values are supported (parsing ${inputName})`, - ); - } - - return value.trim(); - }); - - mockCore.setOutput.mockImplementation((name, value) => { - result.outputs[name] = value; - }); - - mockCore.setFailed.mockImplementation(message => { - console.error(`setFailed: ${message}`); - result.failure = message; - }); - - mockCore.info.mockImplementation(message => console.info(message)); - mockCore.warning.mockImplementation(message => console.warn(message)); - mockCore.error.mockImplementation(message => { - result.errors.push(removeColors(message)); - console.error(message); - }); - - return result; -} +import { configureMocks } from "./actionCoreMocks"; import { run } from "../src/main"; -import { removeColors } from "../src/helpers/logging"; type EnvironmentData = { subscriptionId: string; diff --git a/test-live/stacks.live.test.ts b/test-live/stacks.live.test.ts index 9d19f63..13ba933 100644 --- a/test-live/stacks.live.test.ts +++ b/test-live/stacks.live.test.ts @@ -2,11 +2,8 @@ // Licensed under the MIT License. import { runAction } from "./setup"; -const TEST_TIMEOUT_IN_SECONDS = 5 * 60; // 5 minutes -jest.setTimeout(TEST_TIMEOUT_IN_SECONDS * 1000); - beforeEach(() => { - jest.clearAllMocks(); + vi.clearAllMocks(); }); describe("stacks live tests", () => { diff --git a/test/config.test.ts b/test/config.test.ts deleted file mode 100644 index a44cb2a..0000000 --- a/test/config.test.ts +++ /dev/null @@ -1,552 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -import { configureGetInputMock } from "./mocks/actionCoreMocks"; -import { - DeploymentsConfig, - DeploymentStackConfig, - parseConfig, -} from "../src/config"; -import path from "path"; - -describe("input validation", () => { - it("requires type", async () => { - configureGetInputMock({}); - - expect(() => parseConfig()).toThrow( - "Action input 'type' is required but not provided", - ); - }); - - it("requires a valid value for type", async () => { - configureGetInputMock({ type: "foo" }); - - expect(() => parseConfig()).toThrow( - "Action input 'type' must be one of the following values: 'deployment', 'deploymentStack'", - ); - }); - - it("requires valid json for tags string", async () => { - configureGetInputMock({ type: "deployment", tags: "invalid" }); - - expect(() => parseConfig()).toThrow( - "Action input 'tags' must be a valid JSON or YAML object", - ); - }); - - it("requires valid json for tags object", async () => { - configureGetInputMock({ type: "deployment", tags: '{"foo": {}}' }); - - expect(() => parseConfig()).toThrow( - "Action input 'tags' must be a valid JSON or YAML object", - ); - }); - - it("requires operation to be provided", async () => { - configureGetInputMock({ type: "deployment" }); - - expect(() => parseConfig()).toThrow( - "Action input 'operation' is required but not provided", - ); - }); - - it("requires valid operation for deployment", async () => { - configureGetInputMock({ type: "deployment", operation: "delete" }); - - expect(() => parseConfig()).toThrow( - "Action input 'operation' must be one of the following values: 'create', 'validate', 'whatIf'", - ); - }); - - it("requires valid operation for deploymentStacks", async () => { - configureGetInputMock({ type: "deploymentStack", operation: "whatIf" }); - - expect(() => parseConfig()).toThrow( - "Action input 'operation' must be one of the following values: 'create', 'validate', 'delete'", - ); - }); - - it("validates environment input for deployment", async () => { - configureGetInputMock({ - type: "deployment", - operation: "create", - scope: "resourceGroup", - "subscription-id": "foo", - "resource-group-name": "mockRg", - "what-if-exclude-change-types": "blah", - environment: "asdf", - }); - - expect(() => parseConfig()).toThrow( - "Action input 'environment' must be one of the following values: 'azureCloud', 'azureChinaCloud', 'azureGermanCloud', 'azureUSGovernment'", - ); - }); - - it("validates environment input for deploymentStack", async () => { - configureGetInputMock({ - type: "deploymentStack", - operation: "create", - scope: "resourceGroup", - "subscription-id": "foo", - "resource-group-name": "mockRg", - "action-on-unmanage-resources": "detach", - "action-on-unmanage-managementgroups": "sadf", - environment: "asdf", - }); - - expect(() => parseConfig()).toThrow( - "Action input 'environment' must be one of the following values: 'azureCloud', 'azureChinaCloud', 'azureGermanCloud', 'azureUSGovernment'", - ); - }); - - it("requires subscription-id if scope is subscription", async () => { - configureGetInputMock({ - type: "deployment", - operation: "create", - scope: "subscription", - }); - - expect(() => parseConfig()).toThrow( - "Action input 'subscription-id' is required but not provided", - ); - }); - - it("requires subscription-id if scope is resourceGroup", async () => { - configureGetInputMock({ - type: "deployment", - operation: "create", - scope: "resourceGroup", - }); - - expect(() => parseConfig()).toThrow( - "Action input 'subscription-id' is required but not provided", - ); - }); - - it("requires resource-group-name if scope is resourceGroup", async () => { - configureGetInputMock({ - type: "deployment", - operation: "create", - scope: "resourceGroup", - "subscription-id": "foo", - }); - - expect(() => parseConfig()).toThrow( - "Action input 'resource-group-name' is required but not provided", - ); - }); - - it("requires management-group-id if scope is managementGroup", async () => { - configureGetInputMock({ - type: "deployment", - operation: "create", - scope: "managementGroup", - }); - - expect(() => parseConfig()).toThrow( - "Action input 'management-group-id' is required but not provided", - ); - }); - - it("blocks tenant if type is deploymentStack", async () => { - configureGetInputMock({ - type: "deploymentStack", - operation: "create", - scope: "tenant", - }); - - expect(() => parseConfig()).toThrow( - "Action input 'scope' must be one of the following values: 'managementGroup', 'subscription', 'resourceGroup'", - ); - }); - - it("validates what-if-exclude-change-types inputs for deployment", async () => { - configureGetInputMock({ - type: "deployment", - operation: "create", - scope: "resourceGroup", - "subscription-id": "foo", - "resource-group-name": "mockRg", - "what-if-exclude-change-types": "blah", - }); - - expect(() => parseConfig()).toThrow( - "Action input 'what-if-exclude-change-types' must be one of the following values: 'create', 'delete', 'modify', 'deploy', 'noChange', 'ignore', 'unsupported'", - ); - }); - - it("validates validation-level inputs for deployment", async () => { - configureGetInputMock({ - type: "deployment", - operation: "create", - scope: "resourceGroup", - "subscription-id": "foo", - "resource-group-name": "mockRg", - "validation-level": "blah", - }); - - expect(() => parseConfig()).toThrow( - "Action input 'validation-level' must be one of the following values: 'provider', 'template', 'providerNoRbac'", - ); - }); - - it("requires action-on-unmanage-resources for deploymentStack", async () => { - configureGetInputMock({ - type: "deploymentStack", - operation: "create", - scope: "resourceGroup", - "subscription-id": "foo", - "resource-group-name": "mockRg", - }); - - expect(() => parseConfig()).toThrow( - "Action input 'action-on-unmanage-resources' is required but not provided", - ); - }); - - it("validates action-on-unmanage-resources inputs for deploymentStack", async () => { - configureGetInputMock({ - type: "deploymentStack", - operation: "create", - scope: "resourceGroup", - "subscription-id": "foo", - "resource-group-name": "mockRg", - "action-on-unmanage-resources": "sadf", - }); - - expect(() => parseConfig()).toThrow( - "Action input 'action-on-unmanage-resources' must be one of the following values: 'delete', 'detach'", - ); - }); - - it("validates action-on-unmanage-resourcegroups inputs for deploymentStack", async () => { - configureGetInputMock({ - type: "deploymentStack", - operation: "create", - scope: "resourceGroup", - "subscription-id": "foo", - "resource-group-name": "mockRg", - "action-on-unmanage-resources": "detach", - "action-on-unmanage-resourcegroups": "sadf", - }); - - expect(() => parseConfig()).toThrow( - "Action input 'action-on-unmanage-resourcegroups' must be one of the following values: 'delete', 'detach'", - ); - }); - - it("validates action-on-unmanage-managementgroups inputs for deploymentStack", async () => { - configureGetInputMock({ - type: "deploymentStack", - operation: "create", - scope: "resourceGroup", - "subscription-id": "foo", - "resource-group-name": "mockRg", - "action-on-unmanage-resources": "detach", - "action-on-unmanage-managementgroups": "sadf", - }); - - expect(() => parseConfig()).toThrow( - "Action input 'action-on-unmanage-managementgroups' must be one of the following values: 'delete', 'detach'", - ); - }); - - it("requires deny-settings-mode inputs for deploymentStack", async () => { - configureGetInputMock({ - type: "deploymentStack", - operation: "create", - scope: "resourceGroup", - "subscription-id": "foo", - "resource-group-name": "mockRg", - "action-on-unmanage-resources": "detach", - }); - - expect(() => parseConfig()).toThrow( - "Action input 'deny-settings-mode' is required but not provided", - ); - }); - - it("validates deny-settings-mode inputs for deploymentStack", async () => { - configureGetInputMock({ - type: "deploymentStack", - operation: "create", - scope: "resourceGroup", - "subscription-id": "foo", - "resource-group-name": "mockRg", - "action-on-unmanage-resources": "detach", - "deny-settings-mode": "asdfasdf", - }); - - expect(() => parseConfig()).toThrow( - "Action input 'deny-settings-mode' must be one of the following values: 'denyDelete', 'denyWriteAndDelete', 'none'", - ); - }); - - it("validates bypass-stack-out-of-sync-error inputs for deploymentStack", async () => { - configureGetInputMock({ - type: "deploymentStack", - operation: "create", - scope: "resourceGroup", - "subscription-id": "foo", - "resource-group-name": "mockRg", - "action-on-unmanage-resources": "detach", - "bypass-stack-out-of-sync-error": "asdfasdf", - }); - - expect(() => parseConfig()).toThrow( - "Action input 'bypass-stack-out-of-sync-error' must be a boolean value", - ); - }); -}); - -describe("input parsing", () => { - it("parses deployment inputs", async () => { - configureGetInputMock({ - type: "deployment", - name: "mockName", - operation: "create", - scope: "resourceGroup", - "subscription-id": "mockSub", - "resource-group-name": "mockRg", - location: "mockLocation", - "template-file": "/path/to/mockTemplateFile", - "parameters-file": "/path/to/mockParametersFile", - parameters: '{"foo": "bar2"}', - description: "mockDescription", - tags: '{"foo": "bar"}', - "masked-outputs": "abc,def", - "what-if-exclude-change-types": "noChange", - "validation-level": "providerNoRbac", - environment: "azureUSGovernment", - }); - - const config = parseConfig(); - - expect(config).toEqual({ - type: "deployment", - name: "mockName", - operation: "create", - scope: { - type: "resourceGroup", - subscriptionId: "mockSub", - resourceGroup: "mockRg", - }, - location: "mockLocation", - templateFile: path.resolve("/path/to/mockTemplateFile"), - parametersFile: path.resolve("/path/to/mockParametersFile"), - parameters: { - foo: "bar2", - }, - tags: { - foo: "bar", - }, - maskedOutputs: ["abc", "def"], - whatIf: { - excludeChangeTypes: ["noChange"], - }, - environment: "azureUSGovernment", - validationLevel: "providerNoRbac", - }); - }); - - it("parses deployment stacks inputs", async () => { - configureGetInputMock({ - type: "deploymentStack", - name: "mockName", - operation: "delete", - scope: "subscription", - "subscription-id": "mockSub", - location: "mockLocation", - "template-file": "/path/to/mockTemplateFile", - "parameters-file": "/path/to/mockParametersFile", - parameters: ` -{ - "stringParam": "foo", - "intParam": 123, - "boolParam": true, - "arrayParam": [ - "val1", - "val2", - "val3" - ], - "objectParam": { - "prop1": "val1", - "prop2": "val2" - } -}`, - description: "mockDescription", - tags: '{"foo": "bar"}', - "masked-outputs": "abc,def", - "action-on-unmanage-resources": "delete", - "action-on-unmanage-resourcegroups": "delete", - "action-on-unmanage-managementgroups": "delete", - "deny-settings-mode": "none", - "deny-settings-excluded-actions": "abc,def", - "deny-settings-excluded-principals": "ghi,jkl", - "deny-settings-apply-to-child-scopes": "true", - "bypass-stack-out-of-sync-error": "true", - environment: "azureUSGovernment", - }); - - const config = parseConfig(); - - expect(config).toEqual({ - type: "deploymentStack", - name: "mockName", - operation: "delete", - scope: { - type: "subscription", - subscriptionId: "mockSub", - }, - location: "mockLocation", - templateFile: path.resolve("/path/to/mockTemplateFile"), - parametersFile: path.resolve("/path/to/mockParametersFile"), - parameters: { - stringParam: "foo", - intParam: 123, - boolParam: true, - arrayParam: ["val1", "val2", "val3"], - objectParam: { - prop1: "val1", - prop2: "val2", - }, - }, - description: "mockDescription", - tags: { - foo: "bar", - }, - maskedOutputs: ["abc", "def"], - actionOnUnManage: { - resources: "delete", - resourceGroups: "delete", - managementGroups: "delete", - }, - denySettings: { - mode: "none", - excludedActions: ["abc", "def"], - excludedPrincipals: ["ghi", "jkl"], - applyToChildScopes: true, - }, - bypassStackOutOfSyncError: true, - environment: "azureUSGovernment", - }); - }); - - it("supports YAML syntax for parameters", async () => { - configureGetInputMock({ - type: "deployment", - name: "mockName", - operation: "create", - scope: "resourceGroup", - "subscription-id": "mockSub", - "resource-group-name": "mockRg", - location: "mockLocation", - "template-file": "/path/to/mockTemplateFile", - "parameters-file": "/path/to/mockParametersFile", - parameters: ` -stringParam: foo -intParam: 123 -boolParam: true -arrayParam: - - val1 - - val2 - - val3 -objectParam: - prop1: val1 - prop2: val2 -`, - description: "mockDescription", - tags: '{"foo": "bar"}', - "masked-outputs": "abc,def", - "what-if-exclude-change-types": "noChange", - environment: "azureUSGovernment", - }); - - const config = parseConfig(); - - expect(config).toEqual({ - type: "deployment", - name: "mockName", - operation: "create", - scope: { - type: "resourceGroup", - subscriptionId: "mockSub", - resourceGroup: "mockRg", - }, - location: "mockLocation", - templateFile: "/path/to/mockTemplateFile", - parametersFile: "/path/to/mockParametersFile", - parameters: { - stringParam: "foo", - intParam: 123, - boolParam: true, - arrayParam: ["val1", "val2", "val3"], - objectParam: { - prop1: "val1", - prop2: "val2", - }, - }, - tags: { - foo: "bar", - }, - maskedOutputs: ["abc", "def"], - whatIf: { - excludeChangeTypes: ["noChange"], - }, - environment: "azureUSGovernment", - }); - }); - - it("parses bicep-version input correctly", async () => { - configureGetInputMock({ - type: "deployment", - operation: "create", - scope: "resourceGroup", - "subscription-id": "mockSub", - "resource-group-name": "mockRg", - "template-file": "/path/to/mockTemplateFile", - "bicep-version": "0.30.23", - }); - - const config = parseConfig(); - - expect(config).toEqual({ - type: "deployment", - name: undefined, - operation: "create", - scope: { - type: "resourceGroup", - subscriptionId: "mockSub", - resourceGroup: "mockRg", - tenantId: undefined, - }, - location: undefined, - templateFile: path.resolve("/path/to/mockTemplateFile"), - parametersFile: undefined, - parameters: undefined, - bicepVersion: "0.30.23", // This should contain the specified version - tags: undefined, - maskedOutputs: undefined, - whatIf: { - excludeChangeTypes: undefined, - }, - validationLevel: undefined, - environment: "azureCloud", - }); - }); - - it("defaults bicep-version to undefined when not provided", async () => { - configureGetInputMock({ - type: "deployment", - operation: "create", - scope: "resourceGroup", - "subscription-id": "mockSub", - "resource-group-name": "mockRg", - "template-file": "/path/to/mockTemplateFile", - // bicep-version not provided - }); - - const config = parseConfig(); - - expect(config.bicepVersion).toBeUndefined(); - }); -}); diff --git a/test/index.test.ts b/test/index.test.ts index 0626bc5..f065c3e 100644 --- a/test/index.test.ts +++ b/test/index.test.ts @@ -3,12 +3,11 @@ import * as main from "../src/main"; // Mock the action's entrypoint -const runMock = jest.spyOn(main, "run").mockImplementation(); +const runMock = vi.spyOn(main, "run").mockImplementation(vi.fn()); describe("index", () => { it("calls run when imported", async () => { - // eslint-disable-next-line @typescript-eslint/no-require-imports - require("../src/index"); + await import("../src/index"); expect(runMock).toHaveBeenCalled(); }); diff --git a/test/input.test.ts b/test/input.test.ts deleted file mode 100644 index c655b89..0000000 --- a/test/input.test.ts +++ /dev/null @@ -1,253 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -import { configureGetInputMock } from "./mocks/actionCoreMocks"; -import { - getOptionalBooleanInput, - getOptionalDictionaryInput, - getOptionalEnumArrayInput, - getOptionalStringArrayInput, - getOptionalStringDictionaryInput, - getOptionalStringInput, - getRequiredStringInput, -} from "../src/helpers/input"; - -describe("getRequiredStringInput", () => { - it("throws for missing required input", async () => { - configureGetInputMock({}); - - expect(() => getRequiredStringInput("type")).toThrow( - "Action input 'type' is required but not provided", - ); - }); - - it("accepts input", async () => { - configureGetInputMock({ type: "foo" }); - - expect(getRequiredStringInput("type")).toBe("foo"); - }); - - it("trims input", async () => { - configureGetInputMock({ type: " foo " }); - - expect(getRequiredStringInput("type")).toBe("foo"); - }); -}); - -describe("getOptionalStringInput", () => { - it("returns empty for missing input", async () => { - configureGetInputMock({}); - - expect(getOptionalStringInput("type")).toBeUndefined(); - }); - - it("accepts input", async () => { - configureGetInputMock({ type: "foo" }); - - expect(getOptionalStringInput("type")).toBe("foo"); - }); - - it("trims input", async () => { - configureGetInputMock({ type: " foo " }); - - expect(getOptionalStringInput("type")).toBe("foo"); - }); -}); - -describe("getOptionalStringArrayInput", () => { - it("returns undefined for missing input", async () => { - configureGetInputMock({}); - - expect(getOptionalStringArrayInput("type")).toStrictEqual(undefined); - }); - - it("accepts a single input", async () => { - configureGetInputMock({ type: "foo" }); - - expect(getOptionalStringArrayInput("type")).toStrictEqual(["foo"]); - }); - - it("accepts comma-separated input", async () => { - configureGetInputMock({ type: "foo,bar,baz,foo" }); - - expect(getOptionalStringArrayInput("type")).toStrictEqual([ - "foo", - "bar", - "baz", - "foo", - ]); - }); - - it("trims input", async () => { - configureGetInputMock({ type: " foo , bar , baz,foo" }); - - expect(getOptionalStringArrayInput("type")).toStrictEqual([ - "foo", - "bar", - "baz", - "foo", - ]); - }); -}); - -describe("getOptionalEnumArrayInput", () => { - it("returns undefined for missing input", async () => { - configureGetInputMock({}); - - expect(getOptionalEnumArrayInput("type", ["foo", "bar"])).toStrictEqual( - undefined, - ); - }); - - it("accepts a single input", async () => { - configureGetInputMock({ type: "foo" }); - - expect( - getOptionalEnumArrayInput("type", ["foo", "bar", "baz"]), - ).toStrictEqual(["foo"]); - }); - - it("accepts comma-separated input", async () => { - configureGetInputMock({ type: "foo,bar,baz,foo" }); - - expect( - getOptionalEnumArrayInput("type", ["foo", "bar", "baz"]), - ).toStrictEqual(["foo", "bar", "baz", "foo"]); - }); - - it("trims input", async () => { - configureGetInputMock({ type: " foo , bar , baz,foo" }); - - expect( - getOptionalEnumArrayInput("type", ["foo", "bar", "baz"]), - ).toStrictEqual(["foo", "bar", "baz", "foo"]); - }); - - it("throws for unexpected enum input", async () => { - configureGetInputMock({ type: "foo,qux,baz" }); - - expect(() => - getOptionalEnumArrayInput("type", ["foo", "bar", "baz"]), - ).toThrow( - "Action input 'type' must be one of the following values: 'foo', 'bar', 'baz'", - ); - }); -}); - -describe("getOptionalBooleanInput", () => { - it("returns false for missing input", async () => { - configureGetInputMock({}); - - expect(getOptionalBooleanInput("type")).toBe(false); - }); - - it("trims input", async () => { - configureGetInputMock({ type: " true " }); - - expect(getOptionalBooleanInput("type")).toBe(true); - }); - - it("accepts different casings", async () => { - configureGetInputMock({ type: " TrUe " }); - - expect(getOptionalBooleanInput("type")).toBe(true); - }); - - it("accepts false", async () => { - configureGetInputMock({ type: " false " }); - - expect(getOptionalBooleanInput("type")).toBe(false); - }); -}); - -describe("getOptionalDictionaryInput", () => { - it("returns undefined for missing input", async () => { - configureGetInputMock({}); - - expect(getOptionalDictionaryInput("type")).toStrictEqual(undefined); - }); - - it("throws for unexpected input", async () => { - configureGetInputMock({ type: "notanobject" }); - - expect(() => getOptionalDictionaryInput("type")).toThrow( - "Action input 'type' must be a valid JSON or YAML object", - ); - }); - - it("parses and returns json input", async () => { - configureGetInputMock({ type: ' {"abc": "def"} ' }); - - expect(getOptionalDictionaryInput("type")).toStrictEqual({ - abc: "def", - }); - }); - - it("handles multi-line and complex input", async () => { - configureGetInputMock({ - type: `{ - "intParam": 42, - "stringParam": "hello world", - "objectParam": { - "prop1": "value1", - "prop2": "value2" - } -}`, - }); - - expect(getOptionalDictionaryInput("type")).toStrictEqual({ - intParam: 42, - stringParam: "hello world", - objectParam: { prop1: "value1", prop2: "value2" }, - }); - }); - - it("handles YAML input", async () => { - configureGetInputMock({ - type: ` -intParam: 42 -stringParam: hello world -objectParam: - prop1: value1 - prop2: value2 -`, - }); - - expect(getOptionalDictionaryInput("type")).toStrictEqual({ - intParam: 42, - stringParam: "hello world", - objectParam: { prop1: "value1", prop2: "value2" }, - }); - }); -}); - -describe("getOptionalStringDictionaryInput", () => { - it("returns undefined for missing input", async () => { - configureGetInputMock({}); - - expect(getOptionalStringDictionaryInput("type")).toStrictEqual(undefined); - }); - - it("throws for unexpected input", async () => { - configureGetInputMock({ type: "notanobject" }); - - expect(() => getOptionalStringDictionaryInput("type")).toThrow( - "Action input 'type' must be a valid JSON or YAML object", - ); - }); - - it("parses and returns json input", async () => { - configureGetInputMock({ type: ' {"abc": "def"} ' }); - - expect(getOptionalStringDictionaryInput("type")).toStrictEqual({ - abc: "def", - }); - }); - - it("only accepts string values", async () => { - configureGetInputMock({ type: '{ "abc": { "def": "ghi" } }' }); - - expect(() => getOptionalStringDictionaryInput("type")).toThrow( - "Action input 'type' must be a valid JSON or YAML object containing only string values", - ); - }); -}); diff --git a/test/main.test.ts b/test/main.test.ts index b8fea01..1949084 100644 --- a/test/main.test.ts +++ b/test/main.test.ts @@ -4,7 +4,7 @@ import { configureGetInputMock, mockActionsCore, } from "./mocks/actionCoreMocks"; -import { mockFile } from "./mocks/fileMocks"; +import { bicepDeployCommonMock } from "./mocks/bicepDeployCommonMocks"; import { run } from "../src/main"; describe("run", () => { @@ -22,8 +22,10 @@ describe("run", () => { }); it("sets the failed result using a string error", async () => { - mockFile.resolvePath.mockImplementation(() => "/path/to/mock.bicepparam"); - mockFile.getTemplateAndParameters.mockImplementation(() => { + bicepDeployCommonMock.resolvePath.mockImplementation( + () => "/path/to/mock.bicepparam", + ); + bicepDeployCommonMock.getTemplateAndParameters.mockImplementation(() => { throw `This is an error!`; }); @@ -33,8 +35,10 @@ describe("run", () => { }); it("sets the failed result using an Error", async () => { - mockFile.resolvePath.mockImplementation(() => "/path/to/mock.bicepparam"); - mockFile.getTemplateAndParameters.mockImplementation(() => { + bicepDeployCommonMock.resolvePath.mockImplementation( + () => "/path/to/mock.bicepparam", + ); + bicepDeployCommonMock.getTemplateAndParameters.mockImplementation(() => { throw Error(`This is an error!`); }); diff --git a/test/mocks/actionCoreMocks.ts b/test/mocks/actionCoreMocks.ts index 7d2070f..2c26114 100644 --- a/test/mocks/actionCoreMocks.ts +++ b/test/mocks/actionCoreMocks.ts @@ -1,25 +1,21 @@ // Copyright (c) Microsoft Corporation. // Licensed under the MIT License. -import yaml from "yaml"; - export const mockActionsCore = { - info: jest.fn().mockImplementation(console.info), - warning: jest.fn().mockImplementation(console.warn), - error: jest.fn().mockImplementation(console.error), - getInput: jest.fn(), - setFailed: jest.fn(), - setOutput: jest.fn(), - setSecret: jest.fn(), + info: vi.fn().mockImplementation(console.info), + warning: vi.fn().mockImplementation(console.warn), + error: vi.fn().mockImplementation(console.error), + debug: vi.fn().mockImplementation(console.debug), + getInput: vi.fn(), + isDebug: vi.fn().mockImplementation(() => true), + setFailed: vi.fn(), + setOutput: vi.fn(), + setSecret: vi.fn(), }; -jest.mock("@actions/core", () => mockActionsCore); +vi.mock("@actions/core", () => mockActionsCore); export function configureGetInputMock(inputs: Record) { mockActionsCore.getInput.mockImplementation(inputName => { return inputs[inputName]; }); } - -export function configureGetInputMockWithYaml(yamlInput: string) { - configureGetInputMock(yaml.parse(yamlInput)); -} diff --git a/test/mocks/azureMocks.ts b/test/mocks/azureMocks.ts deleted file mode 100644 index 7d1c33a..0000000 --- a/test/mocks/azureMocks.ts +++ /dev/null @@ -1,33 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -import { Deployments } from "@azure/arm-resources"; -import { DeploymentStacks } from "@azure/arm-resourcesdeploymentstacks"; - -export const mockDeploymentsOps: Partial> = { - beginCreateOrUpdateAtSubscriptionScopeAndWait: jest.fn(), - beginValidateAtSubscriptionScopeAndWait: jest.fn(), - beginWhatIfAtSubscriptionScopeAndWait: jest.fn(), - beginCreateOrUpdateAndWait: jest.fn(), - beginValidateAndWait: jest.fn(), - beginWhatIfAndWait: jest.fn(), -}; - -export const mockStacksOps: Partial> = { - beginCreateOrUpdateAtSubscriptionAndWait: jest.fn(), - beginValidateStackAtSubscriptionAndWait: jest.fn(), - beginDeleteAtSubscriptionAndWait: jest.fn(), - beginCreateOrUpdateAtResourceGroupAndWait: jest.fn(), - beginValidateStackAtResourceGroupAndWait: jest.fn(), - beginDeleteAtResourceGroupAndWait: jest.fn(), -}; - -export const azureMock = { - createDeploymentClient: jest.fn().mockReturnValue({ - deployments: mockDeploymentsOps, - }), - createStacksClient: jest.fn().mockReturnValue({ - deploymentStacks: mockStacksOps, - }), -}; - -jest.mock("../../src/helpers/azure", () => azureMock); diff --git a/test/mocks/bicepDeployCommonMocks.ts b/test/mocks/bicepDeployCommonMocks.ts new file mode 100644 index 0000000..f01db4e --- /dev/null +++ b/test/mocks/bicepDeployCommonMocks.ts @@ -0,0 +1,14 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. +export const bicepDeployCommonMock = { + getTemplateAndParameters: vi.fn(), + resolvePath: vi.fn(), +}; + +vi.mock("@azure/bicep-deploy-common", async () => { + const actual = await vi.importActual("@azure/bicep-deploy-common"); + return { + ...actual, + ...bicepDeployCommonMock, + }; +}); diff --git a/test/mocks/fileMocks.ts b/test/mocks/fileMocks.ts deleted file mode 100644 index acf9d43..0000000 --- a/test/mocks/fileMocks.ts +++ /dev/null @@ -1,9 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. - -export const mockFile = { - getTemplateAndParameters: jest.fn(), - resolvePath: jest.fn(), -}; - -jest.mock("../../src/helpers/file.ts", () => mockFile); diff --git a/tsconfig.json b/tsconfig.json index baeda73..471dedd 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -2,12 +2,17 @@ "$schema": "https://json.schemastore.org/tsconfig", "compilerOptions": { "target": "es2021", + "moduleDetection": "force", "module": "commonjs", + "moduleResolution": "node", + "resolveJsonModule": true, "sourceMap": true, - "outDir": "./out", "strict": true, "esModuleInterop": true, - "forceConsistentCasingInFileNames": true + "forceConsistentCasingInFileNames": true, + "noUnusedLocals": true, + "allowJs": true, + "types": ["vitest/globals"], }, - "exclude": ["node_modules"] + "include": ["src", "test", "test-live"] } \ No newline at end of file diff --git a/tsdown.config.mts b/tsdown.config.mts new file mode 100644 index 0000000..6f688d9 --- /dev/null +++ b/tsdown.config.mts @@ -0,0 +1,17 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. +import { defineConfig } from 'tsdown' + +export default defineConfig({ + entry: 'src/index.ts', + minify: true, + sourcemap: true, + outDir: 'dist', + platform: 'node', + target: 'es2021', + format: ['cjs', 'esm'], + outputOptions: { + inlineDynamicImports: true, + }, + noExternal: [/.*/], // bundle all dependencies +}) \ No newline at end of file diff --git a/vitest.config.live.ts b/vitest.config.live.ts new file mode 100644 index 0000000..fadab90 --- /dev/null +++ b/vitest.config.live.ts @@ -0,0 +1,13 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. +import { defineConfig } from 'vitest/config' + +const TEST_TIMEOUT_IN_SECONDS = 5 * 60; // 5 minutes +export default defineConfig({ + test: { + globals: true, + environment: 'node', + include: ['**/test-live/**/*.test.(ts)'], + testTimeout: TEST_TIMEOUT_IN_SECONDS * 1000, + }, +}); \ No newline at end of file diff --git a/vitest.config.unit.ts b/vitest.config.unit.ts new file mode 100644 index 0000000..f5fa6c3 --- /dev/null +++ b/vitest.config.unit.ts @@ -0,0 +1,11 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. +import { defineConfig } from 'vitest/config' + +export default defineConfig({ + test: { + globals: true, + environment: 'node', + include: ['**/test/**/*.test.(ts)'], + }, +}); \ No newline at end of file